UEsDBBQAAAAAALsro1bvXlytswEAALMBAAAUAAAAbWljcm9waXAvX19pbml0X18ucHlmcm9tIC5fbWljcm9waXAgaW1wb3J0IF9saXN0IGFzIGxpc3QKZnJvbSAuX21pY3JvcGlwIGltcG9ydCAoCiAgICBhZGRfbW9ja19wYWNrYWdlLAogICAgZnJlZXplLAogICAgaW5zdGFsbCwKICAgIGxpc3RfbW9ja19wYWNrYWdlcywKICAgIHJlbW92ZV9tb2NrX3BhY2thZ2UsCikKZnJvbSAudW5pbnN0YWxsIGltcG9ydCB1bmluc3RhbGwKCnRyeToKICAgIGZyb20gLl92ZXJzaW9uIGltcG9ydCBfX3ZlcnNpb25fXwpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBwYXNzCgpfX2FsbF9fID0gWwogICAgImluc3RhbGwiLAogICAgImxpc3QiLAogICAgImZyZWV6ZSIsCiAgICAiYWRkX21vY2tfcGFja2FnZSIsCiAgICAibGlzdF9tb2NrX3BhY2thZ2VzIiwKICAgICJyZW1vdmVfbW9ja19wYWNrYWdlIiwKICAgICJ1bmluc3RhbGwiLAogICAgIl9fdmVyc2lvbl9fIiwKXQpQSwMEFAAAAAAAuyujVqBVu7NCAwAAQgMAABMAAABtaWNyb3BpcC9fY29tcGF0LnB5aW1wb3J0IHN5cwoKSU5fQlJPV1NFUiA9ICJfcHlvZGlkZV9jb3JlIiBpbiBzeXMubW9kdWxlcwoKaWYgSU5fQlJPV1NFUjoKICAgIGZyb20gLl9jb21wYXRfaW5fcHlvZGlkZSBpbXBvcnQgKAogICAgICAgIFJFUE9EQVRBX0lORk8sCiAgICAgICAgUkVQT0RBVEFfUEFDS0FHRVMsCiAgICAgICAgZmV0Y2hfYnl0ZXMsCiAgICAgICAgZmV0Y2hfc3RyaW5nLAogICAgICAgIGdldF9keW5saWJzLAogICAgICAgIGxvYWREeW5saWIsCiAgICAgICAgbG9hZGVkUGFja2FnZXMsCiAgICAgICAgbG9hZFBhY2thZ2UsCiAgICAgICAgdG9fanMsCiAgICAgICAgd2hlZWxfZGlzdF9pbmZvX2RpciwKICAgICkKZWxzZToKICAgIGZyb20gLl9jb21wYXRfbm90X2luX3B5b2RpZGUgaW1wb3J0ICgKICAgICAgICBSRVBPREFUQV9JTkZPLAogICAgICAgIFJFUE9EQVRBX1BBQ0tBR0VTLAogICAgICAgIGZldGNoX2J5dGVzLAogICAgICAgIGZldGNoX3N0cmluZywKICAgICAgICBnZXRfZHlubGlicywKICAgICAgICBsb2FkRHlubGliLAogICAgICAgIGxvYWRlZFBhY2thZ2VzLAogICAgICAgIGxvYWRQYWNrYWdlLAogICAgICAgIHRvX2pzLAogICAgICAgIHdoZWVsX2Rpc3RfaW5mb19kaXIsCiAgICApCgpfX2FsbF9fID0gWwogICAgIlJFUE9EQVRBX0lORk8iLAogICAgIlJFUE9EQVRBX1BBQ0tBR0VTIiwKICAgICJmZXRjaF9ieXRlcyIsCiAgICAiZmV0Y2hfc3RyaW5nIiwKICAgICJsb2FkZWRQYWNrYWdlcyIsCiAgICAibG9hZER5bmxpYiIsCiAgICAibG9hZFBhY2thZ2UiLAogICAgImdldF9keW5saWJzIiwKICAgICJ3aGVlbF9kaXN0X2luZm9fZGlyIiwKICAgICJ0b19qcyIsCl0KUEsDBBQAAAAAALsro1bx9hGuYAUAAGAFAAAeAAAAbWljcm9waXAvX2NvbXBhdF9pbl9weW9kaWRlLnB5ZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwpmcm9tIHR5cGluZyBpbXBvcnQgSU8KZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCgpmcm9tIHB5b2RpZGUuX3BhY2thZ2VfbG9hZGVyIGltcG9ydCBnZXRfZHlubGlicywgd2hlZWxfZGlzdF9pbmZvX2Rpcgpmcm9tIHB5b2RpZGUuZmZpIGltcG9ydCBJTl9CUk9XU0VSLCB0b19qcwpmcm9tIHB5b2RpZGUuaHR0cCBpbXBvcnQgcHlmZXRjaAoKdHJ5OgogICAgaW1wb3J0IHB5b2RpZGVfanMKICAgIGZyb20gcHlvZGlkZV9qcyBpbXBvcnQgbG9hZGVkUGFja2FnZXMsIGxvYWRQYWNrYWdlCiAgICBmcm9tIHB5b2RpZGVfanMuX2FwaSBpbXBvcnQgbG9hZEJpbmFyeUZpbGUsIGxvYWREeW5saWIgICMgdHlwZTogaWdub3JlW2ltcG9ydF0KCiAgICBSRVBPREFUQV9QQUNLQUdFUyA9IHB5b2RpZGVfanMuX2FwaS5yZXBvZGF0YV9wYWNrYWdlcy50b19weSgpCiAgICBSRVBPREFUQV9JTkZPID0gcHlvZGlkZV9qcy5fYXBpLnJlcG9kYXRhX2luZm8udG9fcHkoKQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBpZiBJTl9CUk9XU0VSOgogICAgICAgIHJhaXNlCiAgICAjIE90aGVyd2lzZSwgdGhpcyBpcyBweXRlc3QgdGVzdCBjb2xsZWN0aW9uIHNvIGxldCBpdCBnby4KCgphc3luYyBkZWYgZmV0Y2hfYnl0ZXModXJsOiBzdHIsIGt3YXJnczogZGljdFtzdHIsIHN0cl0pIC0+IElPW2J5dGVzXToKICAgIHBhcnNlZF91cmwgPSB1cmxwYXJzZSh1cmwpCiAgICBpZiBwYXJzZWRfdXJsLnNjaGVtZSA9PSAiZW1mcyI6CiAgICAgICAgcmV0dXJuIG9wZW4ocGFyc2VkX3VybC5wYXRoLCAicmIiKQogICAgaWYgcGFyc2VkX3VybC5zY2hlbWUgPT0gImZpbGUiOgogICAgICAgIHJlc3VsdF9ieXRlcyA9IChhd2FpdCBsb2FkQmluYXJ5RmlsZShwYXJzZWRfdXJsLnBhdGgpKS50b19ieXRlcygpCiAgICBlbHNlOgogICAgICAgIHJlc3VsdF9ieXRlcyA9IGF3YWl0IChhd2FpdCBweWZldGNoKHVybCwgKiprd2FyZ3MpKS5ieXRlcygpCiAgICByZXR1cm4gQnl0ZXNJTyhyZXN1bHRfYnl0ZXMpCgoKYXN5bmMgZGVmIGZldGNoX3N0cmluZyh1cmw6IHN0ciwga3dhcmdzOiBkaWN0W3N0ciwgc3RyXSkgLT4gc3RyOgogICAgcmV0dXJuIGF3YWl0IChhd2FpdCBweWZldGNoKHVybCwgKiprd2FyZ3MpKS5zdHJpbmcoKQoKCl9fYWxsX18gPSBbCiAgICAiZmV0Y2hfYnl0ZXMiLAogICAgImZldGNoX3N0cmluZyIsCiAgICAiUkVQT0RBVEFfSU5GTyIsCiAgICAiUkVQT0RBVEFfUEFDS0FHRVMiLAogICAgImxvYWRlZFBhY2thZ2VzIiwKICAgICJsb2FkRHlubGliIiwKICAgICJsb2FkUGFja2FnZSIsCiAgICAiZ2V0X2R5bmxpYnMiLAogICAgIndoZWVsX2Rpc3RfaW5mb19kaXIiLAogICAgInRvX2pzIiwKXQpQSwMEFAAAAAAAuyujVh3B4Hy1CgAAtQoAACIAAABtaWNyb3BpcC9fY29tcGF0X25vdF9pbl9weW9kaWRlLnB5aW1wb3J0IHJlCmZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmZyb20gdHlwaW5nIGltcG9ydCBJTywgQW55CmZyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZQoKUkVQT0RBVEFfUEFDS0FHRVM6IGRpY3Rbc3RyLCBkaWN0W3N0ciwgQW55XV0gPSB7fQoKCmNsYXNzIGxvYWRlZFBhY2thZ2VzOgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIHRvX3B5KCk6CiAgICAgICAgcmV0dXJuIHt9CgoKZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgUmVxdWVzdCwgdXJsb3BlbgoKCmFzeW5jIGRlZiBmZXRjaF9ieXRlcyh1cmw6IHN0ciwga3dhcmdzOiBkaWN0W3N0ciwgc3RyXSkgLT4gSU9bYnl0ZXNdOgogICAgcmV0dXJuIEJ5dGVzSU8odXJsb3BlbihSZXF1ZXN0KHVybCwgaGVhZGVycz1rd2FyZ3MpKS5yZWFkKCkpCgoKYXN5bmMgZGVmIGZldGNoX3N0cmluZyh1cmw6IHN0ciwga3dhcmdzOiBkaWN0W3N0ciwgc3RyXSkgLT4gc3RyOgogICAgcmV0dXJuIChhd2FpdCBmZXRjaF9ieXRlcyh1cmwsIGt3YXJncykpLnJlYWQoKS5kZWNvZGUoKQoKCmFzeW5jIGRlZiBsb2FkRHlubGliKGR5bmxpYjogc3RyLCBpc19zaGFyZWRfbGliOiBib29sKSAtPiBOb25lOgogICAgcGFzcwoKCmRlZiBnZXRfZHlubGlicyhhcmNoaXZlOiBJT1tieXRlc10sIHN1ZmZpeDogc3RyLCB0YXJnZXRfZGlyOiBQYXRoKSAtPiBsaXN0W3N0cl06CiAgICByZXR1cm4gW10KCgpkZWYgdG9fanMoCiAgICBvYmo6IEFueSwKICAgIC8sCiAgICAqLAogICAgZGVwdGg6IGludCA9IC0xLAogICAgcHlwcm94aWVzPU5vbmUsCiAgICBjcmVhdGVfcHlwcm94aWVzOiBib29sID0gVHJ1ZSwKICAgIGRpY3RfY29udmVydGVyPU5vbmUsCiAgICBkZWZhdWx0X2NvbnZlcnRlcj1Ob25lLAopIC0+IEFueToKICAgIHJldHVybiBvYmoKCgojIFZlbmRvcmVkIGZyb20gcGFja2FnaW5nCl9jYW5vbmljYWxpemVfcmVnZXggPSByZS5jb21waWxlKHIiWy1fLl0rIikKCgpkZWYgY2Fub25pY2FsaXplX25hbWUobmFtZTogc3RyKSAtPiBzdHI6CiAgICAjIFRoaXMgaXMgdGFrZW4gZnJvbSBQRVAgNTAzLgogICAgcmV0dXJuIF9jYW5vbmljYWxpemVfcmVnZXguc3ViKCItIiwgbmFtZSkubG93ZXIoKQoKCiMgVmVuZG9yZWQgZnJvbSBwaXAKY2xhc3MgVW5zdXBwb3J0ZWRXaGVlbChFeGNlcHRpb24pOgogICAgIiIiVW5zdXBwb3J0ZWQgd2hlZWwuIiIiCgoKZGVmIHdoZWVsX2Rpc3RfaW5mb19kaXIoc291cmNlOiBaaXBGaWxlLCBuYW1lOiBzdHIpIC0+IHN0cjoKICAgICIiIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lZCAuZGlzdC1pbmZvIGRpcmVjdG9yeS4KICAgIFJhaXNlcyBVbnN1cHBvcnRlZFdoZWVsIGlmIG5vdCBmb3VuZCwgPjEgZm91bmQsIG9yIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlCiAgICBwcm92aWRlZCBuYW1lLgogICAgIiIiCiAgICAjIFppcCBmaWxlIHBhdGggc2VwYXJhdG9ycyBtdXN0IGJlIC8KICAgIHN1YmRpcnMgPSB7cC5zcGxpdCgiLyIsIDEpWzBdIGZvciBwIGluIHNvdXJjZS5uYW1lbGlzdCgpfQoKICAgIGluZm9fZGlycyA9IFtzIGZvciBzIGluIHN1YmRpcnMgaWYgcy5lbmRzd2l0aCgiLmRpc3QtaW5mbyIpXQoKICAgIGlmIG5vdCBpbmZvX2RpcnM6CiAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRXaGVlbChmIi5kaXN0LWluZm8gZGlyZWN0b3J5IG5vdCBmb3VuZCBpbiB3aGVlbCB7bmFtZSFyfSIpCgogICAgaWYgbGVuKGluZm9fZGlycykgPiAxOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoCiAgICAgICAgICAgICJtdWx0aXBsZSAuZGlzdC1pbmZvIGRpcmVjdG9yaWVzIGZvdW5kIGluIHdoZWVsIHshcn06IHt9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICBuYW1lLCAiLCAiLmpvaW4oaW5mb19kaXJzKQogICAgICAgICAgICApCiAgICAgICAgKQoKICAgIGluZm9fZGlyID0gaW5mb19kaXJzWzBdCgogICAgaW5mb19kaXJfbmFtZSA9IGNhbm9uaWNhbGl6ZV9uYW1lKGluZm9fZGlyKQogICAgY2Fub25pY2FsX25hbWUgPSBjYW5vbmljYWxpemVfbmFtZShuYW1lKQogICAgaWYgbm90IGluZm9fZGlyX25hbWUuc3RhcnRzd2l0aChjYW5vbmljYWxfbmFtZSk6CiAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRXaGVlbCgKICAgICAgICAgICAgIi5kaXN0LWluZm8gZGlyZWN0b3J5IHshcn0gZG9lcyBub3Qgc3RhcnQgd2l0aCB7IXJ9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICBpbmZvX2RpciwgY2Fub25pY2FsX25hbWUKICAgICAgICAgICAgKQogICAgICAgICkKCiAgICByZXR1cm4gaW5mb19kaXIKCgpjbGFzcyBweW9kaWRlX2pzXzoKICAgIGRlZiBfX2dldF9fKHNlbGYsIGF0dHIpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIkF0dGVtcHRlZCB0byBhY2Nlc3MgcHJvcGVydHkgJ3thdHRyfScgb24gcHlvZGlkZV9qcyBkdW1teSIpCgoKUkVQT0RBVEFfSU5GTzogZGljdFtzdHIsIHN0cl0gPSB7fQoKCmRlZiBsb2FkUGFja2FnZShwYWNrYWdlczogc3RyIHwgbGlzdFtzdHJdKSAtPiBOb25lOgogICAgcGFzcwoKCl9fYWxsX18gPSBbCiAgICAibG9hZER5bmxpYiIsCiAgICAiZmV0Y2hfYnl0ZXMiLAogICAgImZldGNoX3N0cmluZyIsCiAgICAiUkVQT0RBVEFfSU5GTyIsCiAgICAiUkVQT0RBVEFfUEFDS0FHRVMiLAogICAgImxvYWRlZFBhY2thZ2VzIiwKICAgICJsb2FkUGFja2FnZSIsCiAgICAiZ2V0X2R5bmxpYnMiLAogICAgIndoZWVsX2Rpc3RfaW5mb19kaXIiLAogICAgInRvX2pzIiwKXQpQSwMEFAAAAAAAuyujVnFhrt8wdwAAMHcAABUAAABtaWNyb3BpcC9fbWljcm9waXAucHlpbXBvcnQgYXN5bmNpbwppbXBvcnQgaGFzaGxpYgppbXBvcnQgaW1wb3J0bGliCmltcG9ydCBqc29uCmltcG9ydCBzaHV0aWwKaW1wb3J0IHNpdGUKaW1wb3J0IHN5cwppbXBvcnQgd2FybmluZ3MKZnJvbSBhc3luY2lvIGltcG9ydCBnYXRoZXIKZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZApmcm9tIGltcG9ydGxpYi5tZXRhZGF0YSBpbXBvcnQgUGFja2FnZU5vdEZvdW5kRXJyb3IKZnJvbSBpbXBvcnRsaWIubWV0YWRhdGEgaW1wb3J0IGRpc3RyaWJ1dGlvbiBhcyBpbXBvcnRsaWJfZGlzdHJpYnV0aW9uCmZyb20gaW1wb3J0bGliLm1ldGFkYXRhIGltcG9ydCBkaXN0cmlidXRpb25zIGFzIGltcG9ydGxpYl9kaXN0cmlidXRpb25zCmZyb20gaW1wb3J0bGliLm1ldGFkYXRhIGltcG9ydCB2ZXJzaW9uIGFzIGltcG9ydGxpYl92ZXJzaW9uCmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aApmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtCmZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudApmcm9tIHR5cGluZyBpbXBvcnQgSU8sIEFueQpmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgUGFyc2VSZXN1bHQsIHVybHBhcnNlCmZyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZQoKZnJvbSBwYWNrYWdpbmcubWFya2VycyBpbXBvcnQgZGVmYXVsdF9lbnZpcm9ubWVudApmcm9tIHBhY2thZ2luZy5yZXF1aXJlbWVudHMgaW1wb3J0IFJlcXVpcmVtZW50CmZyb20gcGFja2FnaW5nLnRhZ3MgaW1wb3J0IFRhZywgc3lzX3RhZ3MKZnJvbSBwYWNrYWdpbmcudXRpbHMgaW1wb3J0IGNhbm9uaWNhbGl6ZV9uYW1lLCBwYXJzZV93aGVlbF9maWxlbmFtZQpmcm9tIHBhY2thZ2luZy52ZXJzaW9uIGltcG9ydCBJbnZhbGlkVmVyc2lvbiwgVmVyc2lvbgoKZnJvbSAuIGltcG9ydCBfbW9ja19wYWNrYWdlCmZyb20gLl9jb21wYXQgaW1wb3J0ICgKICAgIFJFUE9EQVRBX0lORk8sCiAgICBSRVBPREFUQV9QQUNLQUdFUywKICAgIGZldGNoX2J5dGVzLAogICAgZmV0Y2hfc3RyaW5nLAogICAgZ2V0X2R5bmxpYnMsCiAgICBsb2FkRHlubGliLAogICAgbG9hZGVkUGFja2FnZXMsCiAgICBsb2FkUGFja2FnZSwKICAgIHRvX2pzLAogICAgd2hlZWxfZGlzdF9pbmZvX2RpciwKKQpmcm9tIC5leHRlcm5hbHMucGlwLl9pbnRlcm5hbC51dGlscy53aGVlbCBpbXBvcnQgcGtnX3Jlc291cmNlc19kaXN0cmlidXRpb25fZm9yX3doZWVsCmZyb20gLnBhY2thZ2UgaW1wb3J0IFBhY2thZ2VEaWN0LCBQYWNrYWdlTWV0YWRhdGEKCgphc3luYyBkZWYgX2dldF9weXBpX2pzb24ocGtnbmFtZTogc3RyLCBmZXRjaF9rd2FyZ3M6IGRpY3Rbc3RyLCBzdHJdKSAtPiBBbnk6CiAgICB1cmwgPSBmImh0dHBzOi8vcHlwaS5vcmcvcHlwaS97cGtnbmFtZX0vanNvbiIKICAgIHRyeToKICAgICAgICBtZXRhZGF0YSA9IGF3YWl0IGZldGNoX3N0cmluZyh1cmwsIGZldGNoX2t3YXJncykKICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJDYW4ndCBmZXRjaCBtZXRhZGF0YSBmb3IgJ3twa2duYW1lfScgZnJvbSBQeVBJLiAiCiAgICAgICAgICAgICJQbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlIGVudGVyZWQgYSBjb3JyZWN0IHBhY2thZ2UgbmFtZS4iCiAgICAgICAgKSBmcm9tIGUKICAgIHJldHVybiBqc29uLmxvYWRzKG1ldGFkYXRhKQoKCkBkYXRhY2xhc3MKY2xhc3MgV2hlZWxJbmZvOgogICAgbmFtZTogc3RyCiAgICB2ZXJzaW9uOiBWZXJzaW9uCiAgICBmaWxlbmFtZTogc3RyCiAgICBidWlsZDogdHVwbGVbaW50LCBzdHJdIHwgdHVwbGVbKCldCiAgICB0YWdzOiBmcm96ZW5zZXRbVGFnXQogICAgdXJsOiBzdHIKICAgIHBhcnNlZF91cmw6IFBhcnNlUmVzdWx0CiAgICBwcm9qZWN0X25hbWU6IHN0ciB8IE5vbmUgPSBOb25lCiAgICBkaWdlc3RzOiBkaWN0W3N0ciwgc3RyXSB8IE5vbmUgPSBOb25lCiAgICBkYXRhOiBJT1tieXRlc10gfCBOb25lID0gTm9uZQogICAgX2Rpc3Q6IEFueSA9IE5vbmUKICAgIGRpc3RfaW5mbzogUGF0aCB8IE5vbmUgPSBOb25lCiAgICBfcmVxdWlyZXM6IGxpc3RbUmVxdWlyZW1lbnRdIHwgTm9uZSA9IE5vbmUKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgZnJvbV91cmwodXJsOiBzdHIpIC0+ICJXaGVlbEluZm8iOgogICAgICAgICIiIlBhcnNlIHdoZWVscyBVUkwgYW5kIGV4dHJhY3QgYXZhaWxhYmxlIG1ldGFkYXRhCgogICAgICAgIFNlZSBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDI3LyNmaWxlLW5hbWUtY29udmVudGlvbgogICAgICAgICIiIgogICAgICAgIHBhcnNlZF91cmwgPSB1cmxwYXJzZSh1cmwpCiAgICAgICAgZmlsZV9uYW1lID0gUGF0aChwYXJzZWRfdXJsLnBhdGgpLm5hbWUKICAgICAgICBuYW1lLCB2ZXJzaW9uLCBidWlsZCwgdGFncyA9IHBhcnNlX3doZWVsX2ZpbGVuYW1lKGZpbGVfbmFtZSkKICAgICAgICByZXR1cm4gV2hlZWxJbmZvKAogICAgICAgICAgICBuYW1lPW5hbWUsCiAgICAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZV9uYW1lLAogICAgICAgICAgICBidWlsZD1idWlsZCwKICAgICAgICAgICAgdGFncz10YWdzLAogICAgICAgICAgICB1cmw9dXJsLAogICAgICAgICAgICBwYXJzZWRfdXJsPXBhcnNlZF91cmwsCiAgICAgICAgKQoKICAgIGRlZiBiZXN0X2NvbXBhdGlibGVfdGFnX2luZGV4KHNlbGYpIC0+IGludCB8IE5vbmU6CiAgICAgICAgIiIiR2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgdGFnIGluIGBgcGFja2FnaW5nLnRhZ3Muc3lzX3RhZ3MoKWBgIHRoYXQgdGhpcyB3aGVlbCBoYXMuCgogICAgICAgIFNpbmNlIGBgcGFja2FnaW5nLnRhZ3Muc3lzX3RhZ3MoKWBgIGlzIHNvcnRlZCBmcm9tIG1vc3Qgc3BlY2lmaWMgKCJiZXN0IikgdG8gbW9zdAogICAgICAgIGdlbmVyYWwgKCJ3b3JzdCIpIGNvbXBhdGliaWxpdHksIHRoaXMgaW5kZXggZG91cGxlcyBhcyBhIHByaW9yaXR5IHJhbms6IGdpdmVuIHR3bwogICAgICAgIGNvbXBhdGlibGUgd2hlZWxzLCB0aGUgb25lIHdob3NlIGJlc3QgaW5kZXggaXMgY2xvc2VyIHRvIHplcm8gc2hvdWxkIGJlIGluc3RhbGxlZC4KCiAgICAgICAgUmV0dXJucwogICAgICAgIC0tLS0tLS0KICAgICAgICBUaGUgaW5kZXgsIG9yIGBgTm9uZWBgIGlmIHRoaXMgd2hlZWwgaGFzIG5vIGNvbXBhdGlibGUgdGFncy4KICAgICAgICAiIiIKICAgICAgICBmb3IgaW5kZXgsIHRhZyBpbiBlbnVtZXJhdGUoc3lzX3RhZ3MoKSk6CiAgICAgICAgICAgIGlmIHRhZyBpbiBzZWxmLnRhZ3M6CiAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBpc19jb21wYXRpYmxlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZmlsZW5hbWUuZW5kc3dpdGgoInB5My1ub25lLWFueS53aGwiKToKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gc2VsZi5iZXN0X2NvbXBhdGlibGVfdGFnX2luZGV4KCkgaXMgbm90IE5vbmUKCiAgICBkZWYgY2hlY2tfY29tcGF0aWJsZShzZWxmKSAtPiBOb25lOgogICAgICAgIGlmIHNlbGYuaXNfY29tcGF0aWJsZSgpOgogICAgICAgICAgICByZXR1cm4KICAgICAgICB0YWc6IFRhZyA9IG5leHQoaXRlcihzZWxmLnRhZ3MpKQogICAgICAgIGlmICJlbXNjcmlwdGVuIiBub3QgaW4gdGFnLnBsYXRmb3JtOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgZiJXaGVlbCBwbGF0Zm9ybSAne3RhZy5wbGF0Zm9ybX0nIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggIgogICAgICAgICAgICAgICAgZiJQeW9kaWRlJ3MgcGxhdGZvcm0gJ3tnZXRfcGxhdGZvcm0oKX0nIgogICAgICAgICAgICApCgogICAgICAgIGRlZiBwbGF0Zm9ybV90b192ZXJzaW9uKHBsYXRmb3JtOiBzdHIpIC0+IHN0cjoKICAgICAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgICAgIHBsYXRmb3JtLnJlcGxhY2UoIi0iLCAiXyIpCiAgICAgICAgICAgICAgICAucmVtb3ZlcHJlZml4KCJlbXNjcmlwdGVuXyIpCiAgICAgICAgICAgICAgICAucmVtb3Zlc3VmZml4KCJfd2FzbTMyIikKICAgICAgICAgICAgICAgIC5yZXBsYWNlKCJfIiwgIi4iKQogICAgICAgICAgICApCgogICAgICAgIHdoZWVsX2Vtc2NyaXB0ZW5fdmVyc2lvbiA9IHBsYXRmb3JtX3RvX3ZlcnNpb24odGFnLnBsYXRmb3JtKQogICAgICAgIHB5b2RpZGVfZW1zY3JpcHRlbl92ZXJzaW9uID0gcGxhdGZvcm1fdG9fdmVyc2lvbihnZXRfcGxhdGZvcm0oKSkKICAgICAgICBpZiB3aGVlbF9lbXNjcmlwdGVuX3ZlcnNpb24gIT0gcHlvZGlkZV9lbXNjcmlwdGVuX3ZlcnNpb246CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICBmIldoZWVsIHdhcyBidWlsdCB3aXRoIEVtc2NyaXB0ZW4gdnt3aGVlbF9lbXNjcmlwdGVuX3ZlcnNpb259IGJ1dCAiCiAgICAgICAgICAgICAgICBmIlB5b2RpZGUgd2FzIGJ1aWx0IHdpdGggRW1zY3JpcHRlbiB2e3B5b2RpZGVfZW1zY3JpcHRlbl92ZXJzaW9ufSIKICAgICAgICAgICAgKQoKICAgICAgICBhYmlfaW5jb21wYXRpYmxlID0gVHJ1ZQogICAgICAgIGZyb20gc3lzIGltcG9ydCB2ZXJzaW9uX2luZm8KCiAgICAgICAgdmVyc2lvbiA9IGYie3ZlcnNpb25faW5mby5tYWpvcn17dmVyc2lvbl9pbmZvLm1pbm9yfSIKICAgICAgICBhYmlzID0gWyJhYmkzIiwgZiJjcHt2ZXJzaW9ufSJdCiAgICAgICAgZm9yIHRhZyBpbiBzZWxmLnRhZ3M6CiAgICAgICAgICAgIGlmIHRhZy5hYmkgaW4gYWJpczoKICAgICAgICAgICAgICAgIGFiaV9pbmNvbXBhdGlibGUgPSBGYWxzZQogICAgICAgICAgICBicmVhawogICAgICAgIGlmIGFiaV9pbmNvbXBhdGlibGU6CiAgICAgICAgICAgIGFiaXNfc3RyaW5nID0gIiwiLmpvaW4oe3RhZy5hYmkgZm9yIHRhZyBpbiBzZWxmLnRhZ3N9KQogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgZiJXaGVlbCBhYmkgJ3thYmlzX3N0cmluZ30nIGlzIG5vdCBzdXBwb3J0ZWQuIFN1cHBvcnRlZCBhYmlzIGFyZSAnYWJpMycgYW5kICdjcHt2ZXJzaW9ufScuIgogICAgICAgICAgICApCgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgIGYiV2hlZWwgaW50ZXJwcmV0ZXIgdmVyc2lvbiAne3RhZy5pbnRlcnByZXRlcn0nIGlzIG5vdCBzdXBwb3J0ZWQuIgogICAgICAgICkKCiAgICBhc3luYyBkZWYgX2ZldGNoX2J5dGVzKHNlbGYsIGZldGNoX2t3YXJncyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gYXdhaXQgZmV0Y2hfYnl0ZXMoc2VsZi51cmwsIGZldGNoX2t3YXJncykKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBzZWxmLnBhcnNlZF91cmwuaG9zdG5hbWUgaW4gWwogICAgICAgICAgICAgICAgImZpbGVzLnB5dGhvbmhvc3RlZC5vcmciLAogICAgICAgICAgICAgICAgImNkbi5qc2RlbGl2ci5uZXQiLAogICAgICAgICAgICBdOgogICAgICAgICAgICAgICAgcmFpc2UgZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmIkNhbid0IGZldGNoIHdoZWVsIGZyb20gJ3tzZWxmLnVybH0nLiAiCiAgICAgICAgICAgICAgICAgICAgIk9uZSBjb21tb24gcmVhc29uIGZvciB0aGlzIGlzIHdoZW4gdGhlIHNlcnZlciBibG9ja3MgIgogICAgICAgICAgICAgICAgICAgICJDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyAoQ09SUykuICIKICAgICAgICAgICAgICAgICAgICAiQ2hlY2sgaWYgdGhlIHNlcnZlciBpcyBzZW5kaW5nIHRoZSBjb3JyZWN0ICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nIGhlYWRlci4iCiAgICAgICAgICAgICAgICApIGZyb20gZQoKICAgIGFzeW5jIGRlZiBkb3dubG9hZChzZWxmLCBmZXRjaF9rd2FyZ3MpOgogICAgICAgIGRhdGEgPSBhd2FpdCBzZWxmLl9mZXRjaF9ieXRlcyhmZXRjaF9rd2FyZ3MpCiAgICAgICAgc2VsZi5kYXRhID0gZGF0YQogICAgICAgIHdpdGggWmlwRmlsZShkYXRhKSBhcyB6aXBfZmlsZToKICAgICAgICAgICAgc2VsZi5fZGlzdCA9IHBrZ19yZXNvdXJjZXNfZGlzdHJpYnV0aW9uX2Zvcl93aGVlbCgKICAgICAgICAgICAgICAgIHppcF9maWxlLCBzZWxmLm5hbWUsICI/Pz8iCiAgICAgICAgICAgICkKCiAgICAgICAgc2VsZi5wcm9qZWN0X25hbWUgPSBzZWxmLl9kaXN0LnByb2plY3RfbmFtZQogICAgICAgIGlmIHNlbGYucHJvamVjdF9uYW1lID09ICJVTktOT1dOIjoKICAgICAgICAgICAgc2VsZi5wcm9qZWN0X25hbWUgPSBzZWxmLm5hbWUKCiAgICBkZWYgdmFsaWRhdGUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5kaWdlc3RzIGlzIE5vbmU6CiAgICAgICAgICAgICMgTm8gY2hlY2tzdW1zIGF2YWlsYWJsZSwgZS5nLiBiZWNhdXNlIGluc3RhbGxpbmcKICAgICAgICAgICAgIyBmcm9tIGEgZGlmZmVyZW50IGxvY2F0aW9uIHRoYW4gUHlQSS4KICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2hhMjU2X2V4cGVjdGVkID0gc2VsZi5kaWdlc3RzWyJzaGEyNTYiXQogICAgICAgIGFzc2VydCBzZWxmLmRhdGEKICAgICAgICBzaGEyNTZfYWN0dWFsID0gX2dlbmVyYXRlX3BhY2thZ2VfaGFzaChzZWxmLmRhdGEpCiAgICAgICAgaWYgc2hhMjU2X2FjdHVhbCAhPSBzaGEyNTZfZXhwZWN0ZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvbnRlbnRzIGRvbid0IG1hdGNoIGhhc2giKQoKICAgIGRlZiBleHRyYWN0KHNlbGYsIHRhcmdldDogUGF0aCkgLT4gTm9uZToKICAgICAgICBhc3NlcnQgc2VsZi5kYXRhCiAgICAgICAgd2l0aCBaaXBGaWxlKHNlbGYuZGF0YSkgYXMgemY6CiAgICAgICAgICAgIHpmLmV4dHJhY3RhbGwodGFyZ2V0KQogICAgICAgIGRpc3RfaW5mb19uYW1lOiBzdHIgPSB3aGVlbF9kaXN0X2luZm9fZGlyKFppcEZpbGUoc2VsZi5kYXRhKSwgc2VsZi5uYW1lKQogICAgICAgIHNlbGYuZGlzdF9pbmZvID0gdGFyZ2V0IC8gZGlzdF9pbmZvX25hbWUKCiAgICBkZWYgcmVxdWlyZXMoc2VsZiwgZXh0cmFzOiBzZXRbc3RyXSkgLT4gbGlzdFtzdHJdOgogICAgICAgIGlmIG5vdCBzZWxmLl9kaXN0OgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAiTWljcm9waXAgaW50ZXJuYWwgZXJyb3I6IGF0dGVtcHRlZCB0byBhY2Nlc3Mgd2hlZWwgJ3JlcXVpcmVzJyBiZWZvcmUgZG93bmxvYWRpbmcgaXQ/IgogICAgICAgICAgICApCiAgICAgICAgcmVxdWlyZXMgPSBzZWxmLl9kaXN0LnJlcXVpcmVzKGV4dHJhcykKICAgICAgICBzZWxmLl9yZXF1aXJlcyA9IHJlcXVpcmVzCiAgICAgICAgcmV0dXJuIHJlcXVpcmVzCgogICAgZGVmIHdyaXRlX2Rpc3RfaW5mbyhzZWxmLCBmaWxlOiBzdHIsIGNvbnRlbnQ6IHN0cikgLT4gTm9uZToKICAgICAgICBhc3NlcnQgc2VsZi5kaXN0X2luZm8KICAgICAgICAoc2VsZi5kaXN0X2luZm8gLyBmaWxlKS53cml0ZV90ZXh0KGNvbnRlbnQpCgogICAgZGVmIHNldF9pbnN0YWxsZXIoc2VsZikgLT4gTm9uZToKICAgICAgICBhc3NlcnQgc2VsZi5kYXRhCiAgICAgICAgd2hlZWxfc291cmNlID0gInB5cGkiIGlmIHNlbGYuZGlnZXN0cyBpcyBub3QgTm9uZSBlbHNlIHNlbGYudXJsCgogICAgICAgIHNlbGYud3JpdGVfZGlzdF9pbmZvKCJQWU9ESURFX1NPVVJDRSIsIHdoZWVsX3NvdXJjZSkKICAgICAgICBzZWxmLndyaXRlX2Rpc3RfaW5mbygiUFlPRElERV9VUkwiLCBzZWxmLnVybCkKICAgICAgICBzZWxmLndyaXRlX2Rpc3RfaW5mbygiUFlPRElERV9TSEEyNTYiLCBfZ2VuZXJhdGVfcGFja2FnZV9oYXNoKHNlbGYuZGF0YSkpCiAgICAgICAgc2VsZi53cml0ZV9kaXN0X2luZm8oIklOU1RBTExFUiIsICJtaWNyb3BpcCIpCiAgICAgICAgaWYgc2VsZi5fcmVxdWlyZXM6CiAgICAgICAgICAgIHNlbGYud3JpdGVfZGlzdF9pbmZvKAogICAgICAgICAgICAgICAgIlBZT0RJREVfUkVRVUlSRVMiLCBqc29uLmR1bXBzKHNvcnRlZCh4Lm5hbWUgZm9yIHggaW4gc2VsZi5fcmVxdWlyZXMpKQogICAgICAgICAgICApCiAgICAgICAgbmFtZSA9IHNlbGYucHJvamVjdF9uYW1lCiAgICAgICAgYXNzZXJ0IG5hbWUKICAgICAgICBzZXRhdHRyKGxvYWRlZFBhY2thZ2VzLCBuYW1lLCB3aGVlbF9zb3VyY2UpCgogICAgYXN5bmMgZGVmIGxvYWRfbGlicmFyaWVzKHNlbGYsIHRhcmdldDogUGF0aCkgLT4gTm9uZToKICAgICAgICBhc3NlcnQgc2VsZi5kYXRhCiAgICAgICAgZHlubGlicyA9IGdldF9keW5saWJzKHNlbGYuZGF0YSwgIi53aGwiLCB0YXJnZXQpCiAgICAgICAgYXdhaXQgZ2F0aGVyKCptYXAobGFtYmRhIGR5bmxpYjogbG9hZER5bmxpYihkeW5saWIsIEZhbHNlKSwgZHlubGlicykpCgogICAgYXN5bmMgZGVmIGluc3RhbGwoc2VsZiwgdGFyZ2V0OiBQYXRoKSAtPiBOb25lOgogICAgICAgIGlmIG5vdCBzZWxmLmRhdGE6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICJNaWNyb3BpcCBpbnRlcm5hbCBlcnJvcjogYXR0ZW1wdGVkIHRvIGluc3RhbGwgd2hlZWwgYmVmb3JlIGRvd25sb2FkaW5nIGl0PyIKICAgICAgICAgICAgKQogICAgICAgIHNlbGYudmFsaWRhdGUoKQogICAgICAgIHNlbGYuZXh0cmFjdCh0YXJnZXQpCiAgICAgICAgYXdhaXQgc2VsZi5sb2FkX2xpYnJhcmllcyh0YXJnZXQpCiAgICAgICAgc2VsZi5zZXRfaW5zdGFsbGVyKCkKCgpGQVFfVVJMUyA9IHsKICAgICJjYW50X2ZpbmRfd2hlZWwiOiAiaHR0cHM6Ly9weW9kaWRlLm9yZy9lbi9zdGFibGUvdXNhZ2UvZmFxLmh0bWwjbWljcm9waXAtY2FuLXQtZmluZC1hLXB1cmUtcHl0aG9uLXdoZWVsIgp9CgoKZGVmIGZpbmRfd2hlZWwobWV0YWRhdGE6IGRpY3Rbc3RyLCBBbnldLCByZXE6IFJlcXVpcmVtZW50KSAtPiBXaGVlbEluZm86CiAgICAiIiJQYXJzZSBtZXRhZGF0YSB0byBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBwdXJlIHB5dGhvbiB3aGVlbC4KICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIG1ldGFkYXRhIDogYGBEaWN0W3N0ciwgQW55XWBgCgogICAgICAgIFBhY2thZ2Ugc2VhcmNoIHJlc3VsdCBmcm9tIFB5UEksCiAgICAgICAgU2VlOiBodHRwczovL3dhcmVob3VzZS5weXBhLmlvL2FwaS1yZWZlcmVuY2UvanNvbi5odG1sCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgZmlsZWluZm8gOiBEaWN0W3N0ciwgQW55XSBvciBOb25lCiAgICAgICAgVGhlIG1ldGFkYXRhIG9mIHRoZSBQeXRob24gd2hlZWwsIG9yIE5vbmUgaWYgdGhlcmUgaXMgbm8gcHVyZSBQeXRob24gd2hlZWwuCiAgICB2ZXIgOiBWZXJzaW9uIG9yIE5vbmUKICAgICAgICBUaGUgdmVyc2lvbiBvZiB0aGUgUHl0aG9uIHdoZWVsLCBvciBOb25lIGlmIHRoZXJlIGlzIG5vIHB1cmUgUHl0aG9uIHdoZWVsLgogICAgIiIiCiAgICByZWxlYXNlc19yYXcgPSBtZXRhZGF0YS5nZXQoInJlbGVhc2VzIiwge30pCiAgICByZWxlYXNlcyA9IHt9CiAgICAjIFNraXAgdW5wYXJzYWJsZSB2ZXJzaW9ucwogICAgZm9yIGtleSwgdmFsIGluIHJlbGVhc2VzX3Jhdy5pdGVtcygpOgogICAgICAgIHRyeToKICAgICAgICAgICAgVmVyc2lvbihrZXkpCiAgICAgICAgZXhjZXB0IEludmFsaWRWZXJzaW9uOgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICByZWxlYXNlc1trZXldID0gdmFsCgogICAgY2FuZGlkYXRlX3ZlcnNpb25zID0gc29ydGVkKAogICAgICAgIChWZXJzaW9uKHYpIGZvciB2IGluIHJlcS5zcGVjaWZpZXIuZmlsdGVyKHJlbGVhc2VzKSksCiAgICAgICAgcmV2ZXJzZT1UcnVlLAogICAgKQogICAgZm9yIHZlciBpbiBjYW5kaWRhdGVfdmVyc2lvbnM6CiAgICAgICAgaWYgc3RyKHZlcikgbm90IGluIHJlbGVhc2VzOgogICAgICAgICAgICBwa2dfbmFtZSA9IG1ldGFkYXRhLmdldCgiaW5mbyIsIHt9KS5nZXQoIm5hbWUiLCAiVU5LTk9XTiIpCiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICBmIlRoZSBwYWNrYWdlICd7cGtnX25hbWV9JyBjb250YWlucyBhbiBpbnZhbGlkIHZlcnNpb246ICd7dmVyfScuIFRoaXMgdmVyc2lvbiB3aWxsIGJlIHNraXBwZWQiCiAgICAgICAgICAgICkKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgYmVzdF93aGVlbCA9IE5vbmUKICAgICAgICBiZXN0X3RhZ19pbmRleCA9IGZsb2F0KCJpbmZpbml0eSIpCgogICAgICAgIHJlbGVhc2UgPSByZWxlYXNlc1tzdHIodmVyKV0KICAgICAgICBmb3IgZmlsZWluZm8gaW4gcmVsZWFzZToKICAgICAgICAgICAgdXJsID0gZmlsZWluZm9bInVybCJdCiAgICAgICAgICAgIGlmIG5vdCB1cmwuZW5kc3dpdGgoIi53aGwiKToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIHdoZWVsID0gV2hlZWxJbmZvLmZyb21fdXJsKHVybCkKICAgICAgICAgICAgdGFnX2luZGV4ID0gd2hlZWwuYmVzdF9jb21wYXRpYmxlX3RhZ19pbmRleCgpCiAgICAgICAgICAgIGlmIHRhZ19pbmRleCBpcyBub3QgTm9uZSBhbmQgdGFnX2luZGV4IDwgYmVzdF90YWdfaW5kZXg6CiAgICAgICAgICAgICAgICB3aGVlbC5kaWdlc3RzID0gZmlsZWluZm9bImRpZ2VzdHMiXQogICAgICAgICAgICAgICAgYmVzdF93aGVlbCA9IHdoZWVsCiAgICAgICAgICAgICAgICBiZXN0X3RhZ19pbmRleCA9IHRhZ19pbmRleAoKICAgICAgICBpZiBiZXN0X3doZWVsIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gd2hlZWwKCiAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgIGYiQ2FuJ3QgZmluZCBhIHB1cmUgUHl0aG9uIDMgd2hlZWwgZm9yICd7cmVxfScuXG4iCiAgICAgICAgZiJTZWU6IHtGQVFfVVJMU1snY2FudF9maW5kX3doZWVsJ119XG4iCiAgICAgICAgIllvdSBjYW4gdXNlIGBtaWNyb3BpcC5pbnN0YWxsKC4uLiwga2VlcF9nb2luZz1UcnVlKWAiCiAgICAgICAgInRvIGdldCBhIGxpc3Qgb2YgYWxsIHBhY2thZ2VzIHdpdGggbWlzc2luZyB3aGVlbHMuIgogICAgKQoKCkBkYXRhY2xhc3MKY2xhc3MgVHJhbnNhY3Rpb246CiAgICBjdHg6IGRpY3Rbc3RyLCBzdHJdCiAgICBjdHhfZXh0cmFzOiBsaXN0W2RpY3Rbc3RyLCBzdHJdXQogICAga2VlcF9nb2luZzogYm9vbAogICAgZGVwczogYm9vbAogICAgcHJlOiBib29sCiAgICBmZXRjaF9rd2FyZ3M6IGRpY3Rbc3RyLCBzdHJdCgogICAgbG9ja2VkOiBkaWN0W3N0ciwgUGFja2FnZU1ldGFkYXRhXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1kaWN0KQogICAgd2hlZWxzOiBsaXN0W1doZWVsSW5mb10gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKICAgIHB5b2RpZGVfcGFja2FnZXM6IGxpc3RbUGFja2FnZU1ldGFkYXRhXSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQogICAgZmFpbGVkOiBsaXN0W1JlcXVpcmVtZW50XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQoKICAgIGFzeW5jIGRlZiBnYXRoZXJfcmVxdWlyZW1lbnRzKAogICAgICAgIHNlbGYsCiAgICAgICAgcmVxdWlyZW1lbnRzOiBsaXN0W3N0cl0sCiAgICApIC0+IE5vbmU6CiAgICAgICAgcmVxdWlyZW1lbnRfcHJvbWlzZXMgPSBbXQogICAgICAgIGZvciByZXF1aXJlbWVudCBpbiByZXF1aXJlbWVudHM6CiAgICAgICAgICAgIHJlcXVpcmVtZW50X3Byb21pc2VzLmFwcGVuZChzZWxmLmFkZF9yZXF1aXJlbWVudChyZXF1aXJlbWVudCkpCgogICAgICAgIGF3YWl0IGdhdGhlcigqcmVxdWlyZW1lbnRfcHJvbWlzZXMpCgogICAgYXN5bmMgZGVmIGFkZF9yZXF1aXJlbWVudChzZWxmLCByZXE6IHN0ciB8IFJlcXVpcmVtZW50KSAtPiBOb25lOgogICAgICAgIGlmIGlzaW5zdGFuY2UocmVxLCBSZXF1aXJlbWVudCk6CiAgICAgICAgICAgIHJldHVybiBhd2FpdCBzZWxmLmFkZF9yZXF1aXJlbWVudF9pbm5lcihyZXEpCgogICAgICAgIGlmIG5vdCB1cmxwYXJzZShyZXEpLnBhdGguZW5kc3dpdGgoIi53aGwiKToKICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuYWRkX3JlcXVpcmVtZW50X2lubmVyKFJlcXVpcmVtZW50KHJlcSkpCgogICAgICAgICMgY3VzdG9tIGRvd25sb2FkIGxvY2F0aW9uCiAgICAgICAgd2hlZWwgPSBXaGVlbEluZm8uZnJvbV91cmwocmVxKQogICAgICAgIHdoZWVsLmNoZWNrX2NvbXBhdGlibGUoKQoKICAgICAgICBhd2FpdCBzZWxmLmFkZF93aGVlbCh3aGVlbCwgZXh0cmFzPXNldCgpKQoKICAgIGRlZiBjaGVja192ZXJzaW9uX3NhdGlzZmllZChzZWxmLCByZXE6IFJlcXVpcmVtZW50KSAtPiBib29sOgogICAgICAgIHZlciA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZlciA9IGltcG9ydGxpYl92ZXJzaW9uKHJlcS5uYW1lKQogICAgICAgIGV4Y2VwdCBQYWNrYWdlTm90Rm91bmRFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIGlmIHJlcS5uYW1lIGluIHNlbGYubG9ja2VkOgogICAgICAgICAgICB2ZXIgPSBzZWxmLmxvY2tlZFtyZXEubmFtZV0udmVyc2lvbgoKICAgICAgICBpZiBub3QgdmVyOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgaWYgcmVxLnNwZWNpZmllci5jb250YWlucyh2ZXIsIHByZXJlbGVhc2VzPVRydWUpOgogICAgICAgICAgICAjIGluc3RhbGxlZCB2ZXJzaW9uIG1hdGNoZXMsIG5vdGhpbmcgdG8gZG8KICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJSZXF1ZXN0ZWQgJ3tyZXF9JywgIiBmImJ1dCB7cmVxLm5hbWV9PT17dmVyfSBpcyBhbHJlYWR5IGluc3RhbGxlZCIKICAgICAgICApCgogICAgYXN5bmMgZGVmIGFkZF9yZXF1aXJlbWVudF9pbm5lcigKICAgICAgICBzZWxmLAogICAgICAgIHJlcTogUmVxdWlyZW1lbnQsCiAgICApIC0+IE5vbmU6CiAgICAgICAgIiIiQWRkIGEgcmVxdWlyZW1lbnQgdG8gdGhlIHRyYW5zYWN0aW9uLgoKICAgICAgICBTZWUgUEVQIDUwOCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcmVxdWlyZW1lbnRzLgogICAgICAgIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA1MDgKICAgICAgICAiIiIKICAgICAgICBmb3IgZSBpbiByZXEuZXh0cmFzOgogICAgICAgICAgICBzZWxmLmN0eF9leHRyYXMuYXBwZW5kKHsiZXh0cmEiOiBlfSkKCiAgICAgICAgaWYgc2VsZi5wcmU6CiAgICAgICAgICAgIHJlcS5zcGVjaWZpZXIucHJlcmVsZWFzZXMgPSBUcnVlCgogICAgICAgIGlmIHJlcS5tYXJrZXI6CiAgICAgICAgICAgICMgaGFuZGxlIGVudmlyb25tZW50IG1hcmtlcnMKICAgICAgICAgICAgIyBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNTA4LyNlbnZpcm9ubWVudC1tYXJrZXJzCgogICAgICAgICAgICAjIEZvciBhIHJlcXVpcmVtZW50IGJlaW5nIGluc3RhbGxlZCBhcyBwYXJ0IG9mIGFuIG9wdGlvbmFsIGZlYXR1cmUKICAgICAgICAgICAgIyB2aWEgdGhlIGV4dHJhIHNwZWNpZmllciwgdGhlIGV2YWx1YXRpb24gb2YgdGhlIG1hcmtlciByZXF1aXJlcwogICAgICAgICAgICAjIHRoZSBleHRyYSBrZXkgaW4gc2VsZi5jdHggdG8gaGF2ZSB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZQogICAgICAgICAgICAjIHByaW1hcnkgcmVxdWlyZW1lbnQuCgogICAgICAgICAgICAjIFRoZSByZXEuZXh0cmFzIGF0dHJpYnV0ZSBpcyBvbmx5IHNldCBmb3IgdGhlIHByaW1hcnkgcmVxdWlyZW1lbnQKICAgICAgICAgICAgIyBhbmQgaGVuY2UgaGFzIHRvIGJlIGF2YWlsYWJsZSBkdXJpbmcgdGhlIGV2YWx1YXRpb24gb2YgdGhlCiAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzLiBUaHVzLCB3ZSB1c2UgdGhlIHNlbGYuY3R4X2V4dHJhcyBhdHRyaWJ1dGUgYWJvdmUgdG8KICAgICAgICAgICAgIyBzdG9yZSBhbGwgdGhlIGV4dHJhIHZhbHVlcyB3ZSBjb21lIGFjcm9zcyBkdXJpbmcgdGhlIHRyYW5zYWN0aW9uIGFuZAogICAgICAgICAgICAjIGF0dGVtcHQgdGhlIG1hcmtlciBldmFsdWF0aW9uIGZvciBhbGwgb2YgdGhlc2UgdmFsdWVzLiBJZiBhbnkgb2YgdGhlCiAgICAgICAgICAgICMgZXZhbHVhdGlvbnMgcmV0dXJuIHRydWUgd2UgaW5jbHVkZSB0aGUgZGVwZW5kZW5jeS4KCiAgICAgICAgICAgIGRlZiBldmFsX21hcmtlcihlOiBkaWN0W3N0ciwgc3RyXSkgLT4gYm9vbDoKICAgICAgICAgICAgICAgIHNlbGYuY3R4LnVwZGF0ZShlKQogICAgICAgICAgICAgICAgIyBuZWVkIHRoZSBhc3NlcnRpb24gaGVyZSB0byBtYWtlIG15cHkgaGFwcHk6CiAgICAgICAgICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vbXlweS9pc3N1ZXMvNDgwNQogICAgICAgICAgICAgICAgYXNzZXJ0IHJlcS5tYXJrZXIgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgIHJldHVybiByZXEubWFya2VyLmV2YWx1YXRlKHNlbGYuY3R4KQoKICAgICAgICAgICAgc2VsZi5jdHgudXBkYXRlKHsiZXh0cmEiOiAiIn0pCiAgICAgICAgICAgICMgVGhlIGN1cnJlbnQgcGFja2FnZSBtYXkgaGF2ZSBiZWVuIGJyb3VnaHQgaW50byB0aGUgdHJhbnNhY3Rpb24KICAgICAgICAgICAgIyB3aXRob3V0IGFueSBvZiB0aGUgb3B0aW9uYWwgcmVxdWlyZW1lbnQgc3BlY2lmaWNhdGlvbiwgYnV0IGhhcwogICAgICAgICAgICAjIGFub3RoZXIgbWFya2VyLCBzdWNoIGFzIGltcGxlbWVudGF0aW9uX25hbWUuIEluIHRoaXMgc2NlbmFyaW8sCiAgICAgICAgICAgICMgc2VsZi5jdHhfZXh0cmFzIGlzIGVtcHR5IGFuZCBoZW5jZSB0aGUgZXZhbF9tYXJrZXIoKSBmdW5jdGlvbgogICAgICAgICAgICAjIHdpbGwgbm90IGJlIGNhbGxlZCBhdCBhbGwuCiAgICAgICAgICAgIGlmIG5vdCByZXEubWFya2VyLmV2YWx1YXRlKHNlbGYuY3R4KSBhbmQgbm90IGFueSgKICAgICAgICAgICAgICAgIFtldmFsX21hcmtlcihlKSBmb3IgZSBpbiBzZWxmLmN0eF9leHRyYXNdCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAjIElzIHNvbWUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UgaXMgYWxyZWFkeSBpbnN0YWxsZWQ/CiAgICAgICAgcmVxLm5hbWUgPSBjYW5vbmljYWxpemVfbmFtZShyZXEubmFtZSkKICAgICAgICBpZiBzZWxmLmNoZWNrX3ZlcnNpb25fc2F0aXNmaWVkKHJlcSk6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIElmIHRoZXJlJ3MgYSBQeW9kaWRlIHBhY2thZ2UgdGhhdCBtYXRjaGVzIHRoZSB2ZXJzaW9uIGNvbnN0cmFpbnQsIHVzZQogICAgICAgICMgdGhlIFB5b2RpZGUgcGFja2FnZSBpbnN0ZWFkIG9mIHRoZSBvbmUgb24gUHlQSQogICAgICAgIGlmIHJlcS5uYW1lIGluIFJFUE9EQVRBX1BBQ0tBR0VTIGFuZCByZXEuc3BlY2lmaWVyLmNvbnRhaW5zKAogICAgICAgICAgICBSRVBPREFUQV9QQUNLQUdFU1tyZXEubmFtZV1bInZlcnNpb24iXSwgcHJlcmVsZWFzZXM9VHJ1ZQogICAgICAgICk6CiAgICAgICAgICAgIHZlcnNpb24gPSBSRVBPREFUQV9QQUNLQUdFU1tyZXEubmFtZV1bInZlcnNpb24iXQogICAgICAgICAgICBzZWxmLnB5b2RpZGVfcGFja2FnZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgUGFja2FnZU1ldGFkYXRhKG5hbWU9cmVxLm5hbWUsIHZlcnNpb249c3RyKHZlcnNpb24pLCBzb3VyY2U9InB5b2RpZGUiKQogICAgICAgICAgICApCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBtZXRhZGF0YSA9IGF3YWl0IF9nZXRfcHlwaV9qc29uKHJlcS5uYW1lLCBzZWxmLmZldGNoX2t3YXJncykKCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aGVlbCA9IGZpbmRfd2hlZWwobWV0YWRhdGEsIHJlcSkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKHJlcSkKICAgICAgICAgICAgaWYgbm90IHNlbGYua2VlcF9nb2luZzoKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgc2VsZi5jaGVja192ZXJzaW9uX3NhdGlzZmllZChyZXEpOgogICAgICAgICAgICAjIE1heWJlIHdoaWxlIHdlIHdlcmUgZG93bmxvYWRpbmcgcHlwaV9qc29uIHNvbWUgb3RoZXIgYnJhbmNoCiAgICAgICAgICAgICMgaW5zdGFsbGVkIHRoZSB3aGVlbD8KICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGF3YWl0IHNlbGYuYWRkX3doZWVsKHdoZWVsLCByZXEuZXh0cmFzKQoKICAgIGFzeW5jIGRlZiBhZGRfd2hlZWwoCiAgICAgICAgc2VsZiwKICAgICAgICB3aGVlbDogV2hlZWxJbmZvLAogICAgICAgIGV4dHJhczogc2V0W3N0cl0sCiAgICApIC0+IE5vbmU6CiAgICAgICAgbm9ybWFsaXplZF9uYW1lID0gY2Fub25pY2FsaXplX25hbWUod2hlZWwubmFtZSkKICAgICAgICBzZWxmLmxvY2tlZFtub3JtYWxpemVkX25hbWVdID0gUGFja2FnZU1ldGFkYXRhKAogICAgICAgICAgICBuYW1lPXdoZWVsLm5hbWUsCiAgICAgICAgICAgIHZlcnNpb249c3RyKHdoZWVsLnZlcnNpb24pLAogICAgICAgICkKCiAgICAgICAgYXdhaXQgd2hlZWwuZG93bmxvYWQoc2VsZi5mZXRjaF9rd2FyZ3MpCiAgICAgICAgaWYgc2VsZi5kZXBzOgogICAgICAgICAgICBhd2FpdCBzZWxmLmdhdGhlcl9yZXF1aXJlbWVudHMod2hlZWwucmVxdWlyZXMoZXh0cmFzKSkKCiAgICAgICAgc2VsZi53aGVlbHMuYXBwZW5kKHdoZWVsKQoKCmFzeW5jIGRlZiBpbnN0YWxsKAogICAgcmVxdWlyZW1lbnRzOiBzdHIgfCBsaXN0W3N0cl0sCiAgICBrZWVwX2dvaW5nOiBib29sID0gRmFsc2UsCiAgICBkZXBzOiBib29sID0gVHJ1ZSwKICAgIGNyZWRlbnRpYWxzOiBzdHIgfCBOb25lID0gTm9uZSwKICAgIHByZTogYm9vbCA9IEZhbHNlLAopIC0+IE5vbmU6CiAgICAiIiJJbnN0YWxsIHRoZSBnaXZlbiBwYWNrYWdlIGFuZCBhbGwgb2YgaXRzIGRlcGVuZGVuY2llcy4KCiAgICBJZiBhIHBhY2thZ2UgaXMgbm90IGZvdW5kIGluIHRoZSBQeW9kaWRlIHJlcG9zaXRvcnkgaXQgd2lsbCBiZSBsb2FkZWQgZnJvbQogICAgUHlQSS4gTWljcm9waXAgY2FuIG9ubHkgbG9hZCBwdXJlIFB5dGhvbiB3aGVlbHMgb3Igd2FzbTMyL2Vtc2NyaXB0ZW4gd2hlZWxzCiAgICBidWlsdCBieSBQeW9kaWRlLgoKICAgIFdoZW4gdXNlZCBpbiB3ZWIgYnJvd3NlcnMsIGRvd25sb2FkcyBmcm9tIFB5UEkgd2lsbCBiZSBjYWNoZWQuIFdoZW4gcnVuIGluCiAgICBOb2RlLmpzLCBwYWNrYWdlcyBhcmUgY3VycmVudGx5IG5vdCBjYWNoZWQsIGFuZCB3aWxsIGJlIHJlLWRvd25sb2FkZWQgZWFjaAogICAgdGltZSBgYG1pY3JvcGlwLmluc3RhbGxgYCBpcyBydW4uCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgcmVxdWlyZW1lbnRzIDoKCiAgICAgICAgQSByZXF1aXJlbWVudCBvciBsaXN0IG9mIHJlcXVpcmVtZW50cyB0byBpbnN0YWxsLiBFYWNoIHJlcXVpcmVtZW50IGlzIGEKICAgICAgICBzdHJpbmcsIHdoaWNoIHNob3VsZCBiZSBlaXRoZXIgYSBwYWNrYWdlIG5hbWUgb3IgYSB3aGVlbCBVUkk6CgogICAgICAgIC0gSWYgdGhlIHJlcXVpcmVtZW50IGRvZXMgbm90IGVuZCBpbiBgYC53aGxgYCwgaXQgd2lsbCBiZSBpbnRlcnByZXRlZCBhcwogICAgICAgICAgYSBwYWNrYWdlIG5hbWUuIEEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBtdXN0IGVpdGhlciBiZSBwcmVzZW50CiAgICAgICAgICBpbiB0aGUgUHlvZGlkZSBsb2NrIGZpbGUgb3Igb24gUHlQSS4KCiAgICAgICAgLSBJZiB0aGUgcmVxdWlyZW1lbnQgZW5kcyBpbiBgYC53aGxgYCwgaXQgaXMgYSB3aGVlbCBVUkkuIFRoZSBwYXJ0IG9mCiAgICAgICAgICB0aGUgcmVxdWlyZW1lbnQgYWZ0ZXIgdGhlIGxhc3QgYGAvYGAgIG11c3QgYmUgYSB2YWxpZCB3aGVlbCBuYW1lIGluCiAgICAgICAgICBjb21wbGlhbmNlIHdpdGggdGhlIGBQRVAgNDI3IG5hbWluZyBjb252ZW50aW9uCiAgICAgICAgICA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQyNy8jZmlsZS1mb3JtYXQ+YF8uCgogICAgICAgIC0gSWYgYSB3aGVlbCBVUkkgc3RhcnRzIHdpdGggYGBlbWZzOmBgLCBpdCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgcGF0aAogICAgICAgICAgaW4gdGhlIEVtc2NyaXB0ZW4gZmlsZSBzeXN0ZW0gKFB5b2RpZGUncyBmaWxlIHN5c3RlbSkuIEUuZy4sCiAgICAgICAgICBgYGVtZnM6Li4vcmVsYXRpdmUvcGF0aC93aGVlbC53aGxgYCBvciBgYGVtZnM6L2Fic29sdXRlL3BhdGgvd2hlZWwud2hsYGAuCiAgICAgICAgICBJbiB0aGlzIGNhc2UsIG9ubHkgLndobCBmaWxlcyBhcmUgc3VwcG9ydGVkLgoKICAgICAgICAtIElmIGEgd2hlZWwgVVJJIHJlcXVpcmVtZW50IHN0YXJ0cyB3aXRoIGBgaHR0cDpgYCBvciBgYGh0dHBzOmBgIGl0IHdpbGwKICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgVVJMLgoKICAgICAgICAtIEluIG5vZGUsIHlvdSBjYW4gYWNjZXNzIHRoZSBuYXRpdmUgZmlsZSBzeXN0ZW0gdXNpbmcgYSBVUkkgdGhhdCBzdGFydHMKICAgICAgICAgIHdpdGggYGBmaWxlOmBgLiBJbiB0aGUgYnJvd3NlciB0aGlzIHdpbGwgbm90IHdvcmsuCgogICAga2VlcF9nb2luZyA6CgogICAgICAgIFRoaXMgcGFyYW1ldGVyIGRlY2lkZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBtaWNyb3BpcCB3aGVuIGl0IGVuY291bnRlcnMgYQogICAgICAgIFB5dGhvbiBwYWNrYWdlIHdpdGhvdXQgYSBwdXJlIFB5dGhvbiB3aGVlbCB3aGlsZSBkb2luZyBkZXBlbmRlbmN5CiAgICAgICAgcmVzb2x1dGlvbjoKCiAgICAgICAgLSBJZiBgYEZhbHNlYGAsIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkIG9uIGZpcnN0IHBhY2thZ2Ugd2l0aCBhIG1pc3NpbmcKICAgICAgICAgIHdoZWVsLgoKICAgICAgICAtIElmIGBgVHJ1ZWBgLCB0aGUgbWljcm9waXAgd2lsbCBrZWVwIGdvaW5nIGFmdGVyIHRoZSBmaXJzdCBlcnJvciwgYW5kCiAgICAgICAgICByZXBvcnQgYSBsaXN0IG9mIGVycm9ycyBhdCB0aGUgZW5kLgoKICAgIGRlcHMgOgoKICAgICAgICBJZiBgYFRydWVgYCwgaW5zdGFsbCBkZXBlbmRlbmNpZXMgc3BlY2lmaWVkIGluIE1FVEFEQVRBIGZpbGUgZm9yIGVhY2gKICAgICAgICBwYWNrYWdlLiBPdGhlcndpc2UgZG8gbm90IGluc3RhbGwgZGVwZW5kZW5jaWVzLgoKICAgIGNyZWRlbnRpYWxzIDoKCiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB2YWx1ZSBvZiBgYGNyZWRlbnRpYWxzYGAgd2hlbiBjYWxsaW5nIHRoZQogICAgICAgIGBmZXRjaCgpIDxodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvZmV0Y2g+YF9fCiAgICAgICAgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCB0byBkb3dubG9hZCB0aGUgcGFja2FnZS4KCiAgICAgICAgV2hlbiBub3Qgc3BlY2lmaWVkLCBgYGZldGNoKClgYCBpcyBjYWxsZWQgd2l0aG91dCBgYGNyZWRlbnRpYWxzYGAuCgogICAgcHJlIDoKCiAgICAgICAgSWYgYGBUcnVlYGAsIGluY2x1ZGUgcHJlLXJlbGVhc2UgYW5kIGRldmVsb3BtZW50IHZlcnNpb25zLiBCeSBkZWZhdWx0LAogICAgICAgIG1pY3JvcGlwIG9ubHkgZmluZHMgc3RhYmxlIHZlcnNpb25zLgoKICAgICIiIgogICAgY3R4ID0gZGVmYXVsdF9lbnZpcm9ubWVudCgpCiAgICBpZiBpc2luc3RhbmNlKHJlcXVpcmVtZW50cywgc3RyKToKICAgICAgICByZXF1aXJlbWVudHMgPSBbcmVxdWlyZW1lbnRzXQoKICAgIGZldGNoX2t3YXJncyA9IGRpY3QoKQoKICAgIGlmIGNyZWRlbnRpYWxzOgogICAgICAgIGZldGNoX2t3YXJnc1siY3JlZGVudGlhbHMiXSA9IGNyZWRlbnRpYWxzCgogICAgIyBOb3RlOiBnZXRzaXRlcGFja2FnZXMgaXMgbm90IGF2YWlsYWJsZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuLi4KICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3ZpcnR1YWxlbnYvaXNzdWVzLzIyOCAoaXNzdWUgaXMgY2xvc2VkIGJ1dAogICAgIyBwcm9ibGVtIGlzIG5vdCBmaXhlZCkKICAgIGZyb20gc2l0ZSBpbXBvcnQgZ2V0c2l0ZXBhY2thZ2VzCgogICAgd2hlZWxfYmFzZSA9IFBhdGgoZ2V0c2l0ZXBhY2thZ2VzKClbMF0pCgogICAgdHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbigKICAgICAgICBjdHg9Y3R4LAogICAgICAgIGN0eF9leHRyYXM9W10sCiAgICAgICAga2VlcF9nb2luZz1rZWVwX2dvaW5nLAogICAgICAgIGRlcHM9ZGVwcywKICAgICAgICBwcmU9cHJlLAogICAgICAgIGZldGNoX2t3YXJncz1mZXRjaF9rd2FyZ3MsCiAgICApCiAgICBhd2FpdCB0cmFuc2FjdGlvbi5nYXRoZXJfcmVxdWlyZW1lbnRzKHJlcXVpcmVtZW50cykKCiAgICBpZiB0cmFuc2FjdGlvbi5mYWlsZWQ6CiAgICAgICAgZmFpbGVkX3JlcXVpcmVtZW50cyA9ICIsICIuam9pbihbZiIne3JlcX0nIiBmb3IgcmVxIGluIHRyYW5zYWN0aW9uLmZhaWxlZF0pCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJDYW4ndCBmaW5kIGEgcHVyZSBQeXRob24gMyB3aGVlbCBmb3I6IHtmYWlsZWRfcmVxdWlyZW1lbnRzfVxuIgogICAgICAgICAgICBmIlNlZToge0ZBUV9VUkxTWydjYW50X2ZpbmRfd2hlZWwnXX1cbiIKICAgICAgICApCgogICAgd2hlZWxfcHJvbWlzZXMgPSBbXQogICAgIyBJbnN0YWxsIGJ1aWx0LWluIHBhY2thZ2VzCiAgICBweW9kaWRlX3BhY2thZ2VzID0gdHJhbnNhY3Rpb24ucHlvZGlkZV9wYWNrYWdlcwogICAgaWYgbGVuKHB5b2RpZGVfcGFja2FnZXMpOgogICAgICAgICMgTm90ZTogYnJhbmNoIG5ldmVyIGhhcHBlbnMgaW4gb3V0LW9mLWJyb3dzZXIgdGVzdGluZyBiZWNhdXNlIGluCiAgICAgICAgIyB0aGF0IGNhc2UgUkVQT0RBVEFfUEFDS0FHRVMgaXMgZW1wdHkuCiAgICAgICAgd2hlZWxfcHJvbWlzZXMuYXBwZW5kKAogICAgICAgICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoCiAgICAgICAgICAgICAgICBsb2FkUGFja2FnZSh0b19qcyhbbmFtZSBmb3IgW25hbWUsIF8sIF9dIGluIHB5b2RpZGVfcGFja2FnZXNdKSkKICAgICAgICAgICAgKQogICAgICAgICkKCiAgICAjIE5vdyBpbnN0YWxsIFB5UEkgcGFja2FnZXMKICAgIGZvciB3aGVlbCBpbiB0cmFuc2FjdGlvbi53aGVlbHM6CiAgICAgICAgIyBkZXRlY3Qgd2hldGhlciB0aGUgd2hlZWwgbWV0YWRhdGEgaXMgZnJvbSBQeVBJIG9yIGZyb20gY3VzdG9tIGxvY2F0aW9uCiAgICAgICAgIyB3aGVlbCBtZXRhZGF0YSBmcm9tIFB5UEkgaGFzIFNIQTI1NiBjaGVja3N1bSBkaWdlc3QuCiAgICAgICAgd2hlZWxfcHJvbWlzZXMuYXBwZW5kKHdoZWVsLmluc3RhbGwod2hlZWxfYmFzZSkpCgogICAgYXdhaXQgZ2F0aGVyKCp3aGVlbF9wcm9taXNlcykKICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCgoKZGVmIF9nZW5lcmF0ZV9wYWNrYWdlX2hhc2goZGF0YTogSU9bYnl0ZXNdKSAtPiBzdHI6CiAgICBzaGEyNTZfaGFzaCA9IGhhc2hsaWIuc2hhMjU2KCkKICAgIGRhdGEuc2VlaygwKQogICAgd2hpbGUgY2h1bmsgOj0gZGF0YS5yZWFkKDQwOTYpOgogICAgICAgIHNoYTI1Nl9oYXNoLnVwZGF0ZShjaHVuaykKICAgIHJldHVybiBzaGEyNTZfaGFzaC5oZXhkaWdlc3QoKQoKCmRlZiBmcmVlemUoKSAtPiBzdHI6CiAgICAiIiJQcm9kdWNlIGEganNvbiBzdHJpbmcgd2hpY2ggY2FuIGJlIHVzZWQgYXMgdGhlIGNvbnRlbnRzIG9mIHRoZQogICAgYGByZXBvZGF0YS5qc29uYGAgbG9jayBmaWxlLgoKICAgIElmIHlvdSBsYXRlciBsb2FkIFB5b2RpZGUgd2l0aCB0aGlzIGxvY2sgZmlsZSwgeW91IGNhbiB1c2UKICAgIDpqczpmdW5jOmBweW9kaWRlLmxvYWRQYWNrYWdlYCB0byBsb2FkIHBhY2thZ2VzIHRoYXQgd2VyZSBsb2FkZWQgd2l0aCA6cHk6bW9kOmBtaWNyb3BpcGAKICAgIHRoaXMgdGltZS4gTG9hZGluZyBwYWNrYWdlcyB3aXRoIDpqczpmdW5jOmB+cHlvZGlkZS5sb2FkUGFja2FnZWAgaXMgbXVjaCBmYXN0ZXIKICAgIGFuZCB5b3Ugd2lsbCBhbHdheXMgZ2V0IGNvbnNpc3RlbnQgdmVyc2lvbnMgb2YgYWxsIHlvdXIgZGVwZW5kZW5jaWVzLgoKICAgIFlvdSBjYW4gdXNlIHlvdXIgY3VzdG9tIGxvY2sgZmlsZSBieSBwYXNzaW5nIGFuIGFwcHJvcHJpYXRlIHVybCB0byB0aGUKICAgIGBgbG9ja0ZpbGVVUkxgYCBvZiA6anM6ZnVuYzpgfmdsb2JhbFRoaXMubG9hZFB5b2RpZGVgLgogICAgIiIiCiAgICBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CgogICAgcGFja2FnZXMgPSBkZWVwY29weShSRVBPREFUQV9QQUNLQUdFUykKICAgIGZvciBkaXN0IGluIGltcG9ydGxpYl9kaXN0cmlidXRpb25zKCk6CiAgICAgICAgbmFtZSA9IGRpc3QubmFtZQogICAgICAgIHZlcnNpb24gPSBkaXN0LnZlcnNpb24KICAgICAgICB1cmwgPSBkaXN0LnJlYWRfdGV4dCgiUFlPRElERV9VUkwiKQogICAgICAgIGlmIHVybCBpcyBOb25lOgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBzaGEyNTYgPSBkaXN0LnJlYWRfdGV4dCgiUFlPRElERV9TSEEyNTYiKQogICAgICAgIGFzc2VydCBzaGEyNTYKICAgICAgICBpbXBvcnRzID0gKGRpc3QucmVhZF90ZXh0KCJ0b3BfbGV2ZWwudHh0Iikgb3IgIiIpLnNwbGl0KCkKICAgICAgICByZXF1aXJlcyA9IGRpc3QucmVhZF90ZXh0KCJQWU9ESURFX1JFUVVJUkVTIikKICAgICAgICBpZiByZXF1aXJlczoKICAgICAgICAgICAgZGVwZW5kcyA9IGpzb24ubG9hZHMocmVxdWlyZXMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGVwZW5kcyA9IFtdCgogICAgICAgIHBrZ19lbnRyeTogZGljdFtzdHIsIEFueV0gPSBkaWN0KAogICAgICAgICAgICBuYW1lPW5hbWUsCiAgICAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKICAgICAgICAgICAgZmlsZV9uYW1lPXVybCwKICAgICAgICAgICAgaW5zdGFsbF9kaXI9InNpdGUiLAogICAgICAgICAgICBzaGEyNTY9c2hhMjU2LAogICAgICAgICAgICBpbXBvcnRzPWltcG9ydHMsCiAgICAgICAgICAgIGRlcGVuZHM9ZGVwZW5kcywKICAgICAgICApCiAgICAgICAgcGFja2FnZXNbY2Fub25pY2FsaXplX25hbWUobmFtZSldID0gcGtnX2VudHJ5CgogICAgIyBTb3J0CiAgICBwYWNrYWdlcyA9IGRpY3Qoc29ydGVkKHBhY2thZ2VzLml0ZW1zKCkpKQogICAgcGFja2FnZV9kYXRhID0gewogICAgICAgICJpbmZvIjogUkVQT0RBVEFfSU5GTywKICAgICAgICAicGFja2FnZXMiOiBwYWNrYWdlcywKICAgIH0KICAgIHJldHVybiBqc29uLmR1bXBzKHBhY2thZ2VfZGF0YSkKCgpkZWYgX2xpc3QoKSAtPiBQYWNrYWdlRGljdDoKICAgICIiIkdldCB0aGUgZGljdGlvbmFyeSBvZiBpbnN0YWxsZWQgcGFja2FnZXMuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgYGBQYWNrYWdlRGljdGBgCiAgICAgICAgQSBkaWN0aW9uYXJ5IG9mIGluc3RhbGxlZCBwYWNrYWdlcy4KCiAgICAgICAgPj4+IGltcG9ydCBtaWNyb3BpcAogICAgICAgID4+PiBhd2FpdCBtaWNyb3BpcC5pbnN0YWxsKCdyZWdleCcpICMgZG9jdGVzdDogK1NLSVAKICAgICAgICA+Pj4gcGFja2FnZV9saXN0ID0gbWljcm9waXAubGlzdCgpCiAgICAgICAgPj4+IHByaW50KHBhY2thZ2VfbGlzdCkgIyBkb2N0ZXN0OiArU0tJUAogICAgICAgIE5hbWUgICAgICAgICAgICAgIHwgVmVyc2lvbiAgfCBTb3VyY2UKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLQogICAgICAgIHJlZ2V4ICAgICAgICAgICAgIHwgMjAyMS43LjYgfCBweW9kaWRlCiAgICAgICAgPj4+ICJyZWdleCIgaW4gcGFja2FnZV9saXN0ICMgZG9jdGVzdDogK1NLSVAKICAgICAgICBUcnVlCiAgICAiIiIKCiAgICAjIEFkZCBwYWNrYWdlcyB0aGF0IGFyZSBsb2FkZWQgdGhyb3VnaCBweW9kaWRlLmxvYWRQYWNrYWdlCiAgICBwYWNrYWdlcyA9IFBhY2thZ2VEaWN0KCkKICAgIGZvciBkaXN0IGluIGltcG9ydGxpYl9kaXN0cmlidXRpb25zKCk6CiAgICAgICAgbmFtZSA9IGRpc3QubmFtZQogICAgICAgIHZlcnNpb24gPSBkaXN0LnZlcnNpb24KICAgICAgICBzb3VyY2UgPSBkaXN0LnJlYWRfdGV4dCgiUFlPRElERV9TT1VSQ0UiKQogICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgogICAgICAgICAgICAjIHNvdXJjZSBpcyBOb25lIGlmIFBZT0RJREVfU09VUkNFIGRvZXMgbm90IGV4aXN0LiBJbiB0aGlzIGNhc2UgdGhlCiAgICAgICAgICAgICMgd2hlZWwgd2FzIGluc3RhbGxlZCBtYW51YWxseSwgbm90IHZpYSBgcHlvZGlkZS5sb2FkUGFja2FnZWAgb3IKICAgICAgICAgICAgIyBgbWljcm9waXBgLgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBwYWNrYWdlc1tuYW1lXSA9IFBhY2thZ2VNZXRhZGF0YSgKICAgICAgICAgICAgbmFtZT1uYW1lLAogICAgICAgICAgICB2ZXJzaW9uPXZlcnNpb24sCiAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UsCiAgICAgICAgKQoKICAgIGZvciBuYW1lLCBwa2dfc291cmNlIGluIGxvYWRlZFBhY2thZ2VzLnRvX3B5KCkuaXRlbXMoKToKICAgICAgICBpZiBuYW1lIGluIHBhY2thZ2VzOgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBpZiBuYW1lIGluIFJFUE9EQVRBX1BBQ0tBR0VTOgogICAgICAgICAgICB2ZXJzaW9uID0gUkVQT0RBVEFfUEFDS0FHRVNbbmFtZV1bInZlcnNpb24iXQogICAgICAgICAgICBzb3VyY2VfID0gInB5b2RpZGUiCiAgICAgICAgICAgIGlmIHBrZ19zb3VyY2UgIT0gImRlZmF1bHQgY2hhbm5lbCI6CiAgICAgICAgICAgICAgICAjIFB5b2RpZGUgcGFja2FnZSBsb2FkZWQgZnJvbSBhIGN1c3RvbSBVUkwKICAgICAgICAgICAgICAgIHNvdXJjZV8gPSBwa2dfc291cmNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBUT0RPOiBjYWxjdWxhdGUgdmVyc2lvbiBmcm9tIHdoZWVsIG1ldGFkYXRhCiAgICAgICAgICAgIHZlcnNpb24gPSAidW5rbm93biIKICAgICAgICAgICAgc291cmNlXyA9IHBrZ19zb3VyY2UKICAgICAgICBwYWNrYWdlc1tuYW1lXSA9IFBhY2thZ2VNZXRhZGF0YShuYW1lPW5hbWUsIHZlcnNpb249dmVyc2lvbiwgc291cmNlPXNvdXJjZV8pCiAgICByZXR1cm4gcGFja2FnZXMKCgpNT0NLX0lOU1RBTExfTkFNRV9NRU1PUlkgPSAibWljcm9waXAgaW4tbWVtb3J5IG1vY2sgcGFja2FnZSIKTU9DS19JTlNUQUxMX05BTUVfUEVSU0lTVEVOVCA9ICJtaWNyb3BpcCBtb2NrIHBhY2thZ2UiCgoKZGVmIGFkZF9tb2NrX3BhY2thZ2UoCiAgICBuYW1lOiBzdHIsCiAgICB2ZXJzaW9uOiBzdHIsCiAgICAqLAogICAgbW9kdWxlczogZGljdFtzdHIsIHN0ciB8IE5vbmVdIHwgTm9uZSA9IE5vbmUsCiAgICBwZXJzaXN0ZW50OiBib29sID0gRmFsc2UsCikgLT4gTm9uZToKICAgICIiIgogICAgQWRkIGEgbW9jayB2ZXJzaW9uIG9mIGEgcGFja2FnZSB0byB0aGUgcGFja2FnZSBkaWN0aW9uYXJ5LgoKICAgIFRoaXMgbWVhbnMgdGhhdCBpZiBpdCBpcyBhIGRlcGVuZGVuY3ksIGl0IGlzIHNraXBwZWQgb24gaW5zdGFsbC4KCiAgICBCeSBkZWZhdWx0IGEgc2luZ2xlIGVtcHR5IG1vZHVsZSBpcyBpbnN0YWxsZWQgd2l0aCB0aGUgc2FtZQogICAgbmFtZSBhcyB0aGUgcGFja2FnZS4gWW91IGNhbiBhbHRlcm5hdGl2ZWx5IGdpdmUgb25lIG9yIG1vcmUgbW9kdWxlcyB0byBtYWtlIGEKICAgIHNldCBvZiBuYW1lZCBtb2R1bGVzLgoKICAgIFRoZSBtb2R1bGVzIHBhcmFtZXRlciBpcyB1c3VhbGx5IGEgZGljdGlvbmFyeSBtYXBwaW5nIG1vZHVsZSBuYW1lIHRvIG1vZHVsZSB0ZXh0LgoKICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICAgICAgewogICAgICAgICAgICAibXlsb3ZlbHlfbW9kdWxlIjonJycKICAgICAgICAgICAgZGVmIG1vZHVsZV9tZXRob2QoYW5fYXJndW1lbnQpOgogICAgICAgICAgICAgICAgcHJpbnQoIlRoaXMgYmVjb21lcyBhIG1vZHVsZSBsZXZlbCBhcmd1bWVudCIpCgogICAgICAgICAgICBtb2R1bGVfdmFsdWUgPSAidGhpcyB2YWx1ZSBiZWNvbWVzIGEgbW9kdWxlIGxldmVsIHZhcmlhYmxlIgogICAgICAgICAgICBwcmludCgiVGhpcyBpcyBydW4gb24gaW1wb3J0IG9mIG1vZHVsZSIpCiAgICAgICAgICAgICcnJwogICAgICAgIH0KCiAgICBJZiB5b3UgYXJlIGFkZGluZyB0aGUgbW9kdWxlIGluIG5vbi1wZXJzaXN0ZW50IG1vZGUsIHlvdSBjYW4gYWxzbyBwYXNzIGZ1bmN0aW9ucwogICAgd2hpY2ggYXJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIG9uIGxvYWRpbmcgKGFzIGluIGBpbXBvcnRsaWIuYWJjLmxvYWRlci5leGVjX21vZHVsZWAgKS4KICAgIFRoaXMgYWxsb3dzIHlvdSB0byBkbyB0aGluZ3MgbGlrZSB1c2UgYHVuaXR0ZXN0Lm1vY2suTWFnaWNNb2NrYCBjbGFzc2VzIGZvciBtb2R1bGVzLgoKICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICAgICAgZGVmIGluaXRfZm4obW9kdWxlKToKICAgICAgICAgICAgbW9kdWxlLmRpY3RbIldPTyJdPSJoZWxsbyIKICAgICAgICAgICAgcHJpbnQoIkluaXRpbmcgdGhlIG1vZHVsZSBub3chIikKCiAgICAgICAgLi4uCgogICAgICAgIHsKICAgICAgICAgICAgIm15bG92ZWx5X21vZHVsZSI6IGluaXRfZm4KICAgICAgICB9CgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgbmFtZSA6CgogICAgICAgIFBhY2thZ2UgbmFtZSB0byBhZGQKCiAgICB2ZXJzaW9uIDoKCiAgICAgICAgVmVyc2lvbiBvZiB0aGUgcGFja2FnZS4gVGhpcyBzaG91bGQgYmUgYSBzZW1hbnRpYyB2ZXJzaW9uIHN0cmluZywKICAgICAgICBlLmcuIDEuMi4zCgogICAgbW9kdWxlcyA6CgogICAgICAgIERpY3Rpb25hcnkgb2YgbW9kdWxlX25hbWU6c3RyaW5nIHBhaXJzLgogICAgICAgIFRoZSBzdHJpbmcgY29udGFpbnMgdGhlIHNvdXJjZSBvZiB0aGUgbW9jayBtb2R1bGUgb3IgaXMgYmxhbmsgZm9yCiAgICAgICAgYW4gZW1wdHkgbW9kdWxlLgoKICAgIHBlcnNpc3RlbnQgOgoKICAgICAgICBJZiB0aGlzIGlzIFRydWUsIG1vZHVsZXMgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBmaWxlIHN5c3RlbSwgc28gdGhleQogICAgICAgIHBlcnNpc3QgYmV0d2VlbiBydW5zIG9mIHB5dGhvbiAoYXNzdW1pbmcgdGhlIGZpbGUgc3lzdGVtIHBlcnNpc3RzKS4KICAgICAgICBJZiBpdCBpcyBGYWxzZSwgbW9kdWxlcyB3aWxsIGJlIHN0b3JlZCBpbnNpZGUgbWljcm9waXAgaW4gbWVtb3J5IG9ubHkuCiAgICAiIiIKICAgIGlmIG1vZHVsZXMgaXMgTm9uZToKICAgICAgICAjIG1ha2UgYSBzaW5nbGUgbW9jayBtb2R1bGUgd2l0aCB0aGlzIG5hbWUKICAgICAgICBtb2R1bGVzID0ge25hbWU6ICIifQogICAgIyBtYWtlIHRoZSBtZXRhZGF0YQogICAgTUVUQURBVEEgPSBmIiIiTWV0YWRhdGEtVmVyc2lvbjogMS4xCk5hbWU6IHtuYW1lfQpWZXJzaW9uOiB7dmVyc2lvbn0KU3VtbWFyeToge25hbWV9IG1vY2sgcGFja2FnZSBnZW5lcmF0ZWQgYnkgbWljcm9waXAKQXV0aG9yLWVtYWlsOiB7bmFtZX1AbWljcm8ucGlwLm5vbi13b3JraW5nLWZha2UtaG9zdAoiIiIKICAgIGZvciBuIGluIG1vZHVsZXMua2V5cygpOgogICAgICAgIE1FVEFEQVRBICs9IGYiUHJvdmlkZXM6e259XG4iCgogICAgaWYgcGVyc2lzdGVudDoKICAgICAgICAjIG1ha2UgZW1wdHkgbW9jayBtb2R1bGVzIHdpdGggdGhlIHJlcXVlc3RlZCBuYW1lcyBpbiB1c2VyIHNpdGUgcGFja2FnZXMKICAgICAgICBzaXRlX3BhY2thZ2VzID0gUGF0aChzaXRlLmdldHVzZXJzaXRlcGFja2FnZXMoKSkKICAgICAgICAjIGluIHB5b2RpZGUgc2l0ZSBwYWNrYWdlcyBpc24ndCBvbiBzeXMucGF0aCBpbml0aWFsbHkKICAgICAgICBpZiBub3Qgc2l0ZV9wYWNrYWdlcy5leGlzdHMoKToKICAgICAgICAgICAgc2l0ZV9wYWNrYWdlcy5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCiAgICAgICAgaWYgc2l0ZV9wYWNrYWdlcyBub3QgaW4gc3lzLnBhdGg6CiAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChzdHIoc2l0ZV9wYWNrYWdlcykpCiAgICAgICAgbWV0YWRhdGFfZGlyID0gc2l0ZV9wYWNrYWdlcyAvIChuYW1lICsgIi0iICsgdmVyc2lvbiArICIuZGlzdC1pbmZvIikKICAgICAgICBtZXRhZGF0YV9kaXIubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1GYWxzZSkKICAgICAgICBtZXRhZGF0YV9maWxlID0gbWV0YWRhdGFfZGlyIC8gIk1FVEFEQVRBIgogICAgICAgIHJlY29yZF9maWxlID0gbWV0YWRhdGFfZGlyIC8gIlJFQ09SRCIKICAgICAgICBpbnN0YWxsZXJfZmlsZSA9IG1ldGFkYXRhX2RpciAvICJJTlNUQUxMRVIiCiAgICAgICAgZmlsZV9saXN0ID0gW10KICAgICAgICBmaWxlX2xpc3QuYXBwZW5kKG1ldGFkYXRhX2ZpbGUpCiAgICAgICAgZmlsZV9saXN0LmFwcGVuZChpbnN0YWxsZXJfZmlsZSkKICAgICAgICB3aXRoIG9wZW4obWV0YWRhdGFfZmlsZSwgInciKSBhcyBtZjoKICAgICAgICAgICAgbWYud3JpdGUoTUVUQURBVEEpCiAgICAgICAgZm9yIG4sIHMgaW4gbW9kdWxlcy5pdGVtcygpOgogICAgICAgICAgICBpZiBzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzID0gIiIKICAgICAgICAgICAgcyA9IGRlZGVudChzKQogICAgICAgICAgICBwYXRoX3BhcnRzID0gbi5zcGxpdCgiLiIpCiAgICAgICAgICAgIGRpcl9wYXRoID0gUGF0aChzaXRlX3BhY2thZ2VzLCAqcGF0aF9wYXJ0cykKICAgICAgICAgICAgZGlyX3BhdGgubWtkaXIoZXhpc3Rfb2s9VHJ1ZSwgcGFyZW50cz1UcnVlKQogICAgICAgICAgICBpbml0X2ZpbGUgPSBkaXJfcGF0aCAvICJfX2luaXRfXy5weSIKICAgICAgICAgICAgZmlsZV9saXN0LmFwcGVuZChpbml0X2ZpbGUpCiAgICAgICAgICAgIHdpdGggb3Blbihpbml0X2ZpbGUsICJ3IikgYXMgZjoKICAgICAgICAgICAgICAgIGYud3JpdGUocykKICAgICAgICB3aXRoIG9wZW4oaW5zdGFsbGVyX2ZpbGUsICJ3IikgYXMgZjoKICAgICAgICAgICAgZi53cml0ZShNT0NLX0lOU1RBTExfTkFNRV9QRVJTSVNURU5UKQogICAgICAgIHdpdGggb3BlbihyZWNvcmRfZmlsZSwgInciKSBhcyBmOgogICAgICAgICAgICBmb3IgZmlsZSBpbiBmaWxlX2xpc3Q6CiAgICAgICAgICAgICAgICBmLndyaXRlKGYie3N0cihmaWxlKX0sLHtmaWxlLnN0YXQoKS5zdF9zaXplfVxuIikKICAgICAgICAgICAgZi53cml0ZShmIntzdHIocmVjb3JkX2ZpbGUpfSwsXG4iKQogICAgZWxzZToKICAgICAgICAjIG1ha2UgbWVtb3J5IG1vY2tzIG9mIGZpbGVzCiAgICAgICAgSU5TVEFMTEVSID0gTU9DS19JTlNUQUxMX05BTUVfTUVNT1JZCiAgICAgICAgbWV0YWZpbGVzID0geyJNRVRBREFUQSI6IE1FVEFEQVRBLCAiSU5TVEFMTEVSIjogSU5TVEFMTEVSfQogICAgICAgIF9tb2NrX3BhY2thZ2UuYWRkX2luX21lbW9yeV9kaXN0cmlidXRpb24obmFtZSwgbWV0YWZpbGVzLCBtb2R1bGVzKQogICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKCgpkZWYgbGlzdF9tb2NrX3BhY2thZ2VzKCkgLT4gbGlzdFtzdHJdOgogICAgcGFja2FnZXMgPSBbXQogICAgZm9yIGRpc3QgaW4gaW1wb3J0bGliX2Rpc3RyaWJ1dGlvbnMoKToKICAgICAgICBpbnN0YWxsZXIgPSBkaXN0LnJlYWRfdGV4dCgiSU5TVEFMTEVSIikKICAgICAgICBpZiBpbnN0YWxsZXIgaXMgbm90IE5vbmUgYW5kICgKICAgICAgICAgICAgaW5zdGFsbGVyID09IE1PQ0tfSU5TVEFMTF9OQU1FX1BFUlNJU1RFTlQKICAgICAgICAgICAgb3IgaW5zdGFsbGVyID09IE1PQ0tfSU5TVEFMTF9OQU1FX01FTU9SWQogICAgICAgICk6CiAgICAgICAgICAgIHBhY2thZ2VzLmFwcGVuZChkaXN0Lm5hbWUpCiAgICByZXR1cm4gcGFja2FnZXMKCgpkZWYgcmVtb3ZlX21vY2tfcGFja2FnZShuYW1lOiBzdHIpIC0+IE5vbmU6CiAgICBkID0gaW1wb3J0bGliX2Rpc3RyaWJ1dGlvbihuYW1lKQogICAgaW5zdGFsbGVyID0gZC5yZWFkX3RleHQoIklOU1RBTExFUiIpCiAgICBpZiBpbnN0YWxsZXIgPT0gTU9DS19JTlNUQUxMX05BTUVfTUVNT1JZOgogICAgICAgIF9tb2NrX3BhY2thZ2UucmVtb3ZlX2luX21lbW9yeV9kaXN0cmlidXRpb24obmFtZSkKICAgICAgICByZXR1cm4KICAgIGVsaWYgaW5zdGFsbGVyIGlzIE5vbmUgb3IgaW5zdGFsbGVyICE9IE1PQ0tfSU5TVEFMTF9OQU1FX1BFUlNJU1RFTlQ6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJQYWNrYWdlIHtuYW1lfSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBtaWNyb3BpcCBtb2NrLiBcbiIKICAgICAgICAgICAgIkFyZSB5b3Ugc3VyZSBpdCB3YXMgaW5zdGFsbGVkIHdpdGggbWljcm9waXA/IgogICAgICAgICkKICAgICMgYSByZWFsIG1vY2sgcGFja2FnZSAtIGtpbGwgaXQKICAgICMgcmVtb3ZlIGFsbCBmaWxlcwogICAgZm9sZGVyczogc2V0W1BhdGhdID0gc2V0KCkKICAgIGlmIGQuZmlsZXMgaXMgbm90IE5vbmU6CiAgICAgICAgZm9yIGZpbGUgaW4gZC5maWxlczoKICAgICAgICAgICAgcCA9IFBhdGgoZmlsZS5sb2NhdGUoKSkKICAgICAgICAgICAgcC51bmxpbmsoKQogICAgICAgICAgICBmb2xkZXJzLmFkZChwLnBhcmVudCkKICAgICMgZGVsZXRlIGFsbCBmb2xkZXJzIGV4Y2VwdCBzaXRlX3BhY2thZ2VzCiAgICAjICh0aGF0IGNoZWNrIGlzIGp1c3QgdG8gYXZvaWQga2lsbGluZwogICAgIyB1bmRlc2lyYWJsZSB0aGluZ3MgaW4gY2FzZSBvZiB3ZWlyZCBtaWNyb3BpcCBlcnJvcnMpCiAgICBzaXRlX3BhY2thZ2VzID0gUGF0aChzaXRlLmdldHVzZXJzaXRlcGFja2FnZXMoKSkKICAgIGZvciBmIGluIGZvbGRlcnM6CiAgICAgICAgaWYgZiAhPSBzaXRlX3BhY2thZ2VzOgogICAgICAgICAgICBzaHV0aWwucm10cmVlKGYpClBLAwQUAAAAAAC7K6NW5MBxCaoLAACqCwAAGQAAAG1pY3JvcGlwL19tb2NrX3BhY2thZ2UucHlpbXBvcnQgaW1wb3J0bGliLmFiYwppbXBvcnQgaW1wb3J0bGliLm1ldGFkYXRhCmltcG9ydCBpbXBvcnRsaWIudXRpbAppbXBvcnQgc3lzCmZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBDYWxsYWJsZQpmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKCgpjbGFzcyBNb2NrRGlzdHJpYnV0aW9uKGltcG9ydGxpYi5tZXRhZGF0YS5EaXN0cmlidXRpb24pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfZGljdCwgbW9kdWxlcyk6CiAgICAgICAgc2VsZi5maWxlX2RpY3QgPSBmaWxlX2RpY3QKICAgICAgICBzZWxmLm1vZHVsZXMgPSBtb2R1bGVzCgogICAgZGVmIHJlYWRfdGV4dChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIiIiQXR0ZW1wdCB0byBsb2FkIG1ldGFkYXRhIGZpbGUgZ2l2ZW4gYnkgdGhlIG5hbWUuCiAgICAgICAgOnBhcmFtIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB0aGUgZGlzdHJpYnV0aW9uIGluZm8uCiAgICAgICAgOnJldHVybjogVGhlIHRleHQgaWYgZm91bmQsIG90aGVyd2lzZSBOb25lLgogICAgICAgICIiIgogICAgICAgIGlmIGZpbGVuYW1lIGluIHNlbGYuZmlsZV9kaWN0OgogICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlX2RpY3RbZmlsZW5hbWVdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgbG9jYXRlX2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIiIiCiAgICAgICAgR2l2ZW4gYSBwYXRoIHRvIGEgZmlsZSBpbiB0aGlzIGRpc3RyaWJ1dGlvbiwgcmV0dXJuIGEgcGF0aAogICAgICAgIHRvIGl0LgogICAgICAgICIiIgogICAgICAgIHJldHVybiBOb25lCgoKX21vY2tfbW9kdWxlczogImRpY3Rbc3RyLHN0cnxDYWxsYWJsZV0iID0ge30KX21vY2tfZGlzdHJpYnV0aW9uczogZGljdFtzdHIsIE1vY2tEaXN0cmlidXRpb25dID0ge30KCgpjbGFzcyBfTW9ja01vZHVsZUZpbmRlcihpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLCBpbXBvcnRsaWIuYWJjLkxvYWRlcik6CiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgcGFzcwoKICAgIGRlZiBmaW5kX2Rpc3RyaWJ1dGlvbnMoc2VsZiwgY29udGV4dCk6CiAgICAgICAgaWYgY29udGV4dC5uYW1lIGluIF9tb2NrX2Rpc3RyaWJ1dGlvbnM6CiAgICAgICAgICAgIHJldHVybiBbX21vY2tfZGlzdHJpYnV0aW9uc1tjb250ZXh0Lm5hbWVdXQogICAgICAgIGVsaWYgY29udGV4dC5uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBfbW9ja19kaXN0cmlidXRpb25zLnZhbHVlcygpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIFtdCgogICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgIHNwZWMgPSBzZWxmLmZpbmRfc3BlYyhmdWxsbmFtZSwgcGF0aCkKICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgcmV0dXJuIHNwZWMKCiAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKICAgICAgICBpZiBzcGVjLm5hbWUgaW4gX21vY2tfbW9kdWxlczoKICAgICAgICAgICAgZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQoKICAgICAgICAgICAgbW9kdWxlID0gTW9kdWxlVHlwZShzcGVjLm5hbWUpCiAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9ICIvbWljcm9waXBfbW9ja3MvIiArIG1vZHVsZS5fX25hbWVfXy5yZXBsYWNlKCIuIiwgIi8iKQogICAgICAgICAgICByZXR1cm4gbW9kdWxlCgogICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgaW5pdF9vYmplY3QgPSBfbW9ja19tb2R1bGVzW21vZHVsZS5fX25hbWVfX10KICAgICAgICBpZiBpc2luc3RhbmNlKGluaXRfb2JqZWN0LCBzdHIpOgogICAgICAgICAgICAjIHJ1biBtb2R1bGUgaW5pdCBjb2RlIGluIHRoZSBtb2R1bGUKICAgICAgICAgICAgZXhlYyhkZWRlbnQoaW5pdF9vYmplY3QpLCBtb2R1bGUuX19kaWN0X18pCiAgICAgICAgZWxpZiBjYWxsYWJsZShpbml0X29iamVjdCk6CiAgICAgICAgICAgICMgcnVuIG1vZHVsZSBpbml0IGZ1bmN0aW9uCiAgICAgICAgICAgIGluaXRfb2JqZWN0KG1vZHVsZSkKCiAgICBkZWYgZmluZF9zcGVjKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKICAgICAgICBpZiBmdWxsbmFtZSBub3QgaW4gX21vY2tfbW9kdWxlcy5rZXlzKCk6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIHNlbGYpCiAgICAgICAgcmV0dXJuIHNwZWMKCgpfZmluZGVyID0gX01vY2tNb2R1bGVGaW5kZXIoKQoKCmRlZiBhZGRfaW5fbWVtb3J5X2Rpc3RyaWJ1dGlvbihuYW1lLCBtZXRhZmlsZXMsIG1vZHVsZXMpOgogICAgaWYgX2ZpbmRlciBub3QgaW4gc3lzLm1ldGFfcGF0aDoKICAgICAgICBzeXMubWV0YV9wYXRoID0gW19maW5kZXJdICsgc3lzLm1ldGFfcGF0aAogICAgX21vY2tfZGlzdHJpYnV0aW9uc1tuYW1lXSA9IE1vY2tEaXN0cmlidXRpb24obWV0YWZpbGVzLCBtb2R1bGVzKQogICAgZm9yIG5hbWUsIG9iaiBpbiBtb2R1bGVzLml0ZW1zKCk6CiAgICAgICAgX2FkZF9tb2NrX21vZHVsZShuYW1lLCBvYmopCgoKZGVmIF9hZGRfbW9ja19tb2R1bGUobmFtZSwgb2JqKToKICAgIF9tb2NrX21vZHVsZXNbbmFtZV0gPSBvYmoKCgpkZWYgcmVtb3ZlX2luX21lbW9yeV9kaXN0cmlidXRpb24obmFtZSk6CiAgICBpZiBuYW1lIGluIF9tb2NrX2Rpc3RyaWJ1dGlvbnM6CiAgICAgICAgZm9yIG1vZHVsZSBpbiBfbW9ja19kaXN0cmlidXRpb25zW25hbWVdLm1vZHVsZXMua2V5cygpOgogICAgICAgICAgICBpZiBtb2R1bGUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kdWxlXQogICAgICAgICAgICBkZWwgX21vY2tfbW9kdWxlc1ttb2R1bGVdCiAgICAgICAgZGVsIF9tb2NrX2Rpc3RyaWJ1dGlvbnNbbmFtZV0KUEsDBBQAAAAAALsro1YuCNmGuwQAALsEAAASAAAAbWljcm9waXAvX3V0aWxzLnB5ZnJvbSBpbXBvcnRsaWIubWV0YWRhdGEgaW1wb3J0IERpc3RyaWJ1dGlvbgpmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKCgpkZWYgZ2V0X2Rpc3RfaW5mbyhkaXN0OiBEaXN0cmlidXRpb24pIC0+IFBhdGg6CiAgICAiIiIKICAgIEdldCB0aGUgLmRpc3QtaW5mbyBkaXJlY3Rvcnkgb2YgYSBkaXN0cmlidXRpb24uCiAgICAiIiIKICAgIHJldHVybiBkaXN0Ll9wYXRoICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCgoKZGVmIGdldF9yb290KGRpc3Q6IERpc3RyaWJ1dGlvbikgLT4gUGF0aDoKICAgICIiIgogICAgR2V0IHRoZSByb290IGRpcmVjdG9yeSB3aGVyZSBhIHBhY2thZ2UgaXMgaW5zdGFsbGVkLgogICAgVGhpcyBpcyBub3JtYWxseSB0aGUgc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnkuCiAgICAiIiIKICAgIHJldHVybiBnZXRfZGlzdF9pbmZvKGRpc3QpLnBhcmVudAoKCmRlZiBnZXRfZmlsZXNfaW5fZGlzdHJpYnV0aW9uKGRpc3Q6IERpc3RyaWJ1dGlvbikgLT4gc2V0W1BhdGhdOgogICAgIiIiCiAgICBHZXQgYSBsaXN0IG9mIGZpbGVzIGluIGEgZGlzdHJpYnV0aW9uLCB1c2luZyB0aGUgbWV0YWRhdGEuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgZGlzdAogICAgICAgIERpc3RyaWJ1dGlvbiB0byBnZXQgZmlsZXMgZnJvbS4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBBIGxpc3Qgb2YgZmlsZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KICAgICIiIgoKICAgIHJvb3QgPSBnZXRfcm9vdChkaXN0KQogICAgZGlzdF9pbmZvID0gZ2V0X2Rpc3RfaW5mbyhkaXN0KQoKICAgIGZpbGVzX3RvX3JlbW92ZSA9IHNldCgpCiAgICBwa2dfZmlsZXMgPSBkaXN0LmZpbGVzIG9yIFtdCiAgICBtZXRhZGF0YV9maWxlcyA9IGRpc3RfaW5mby5nbG9iKCIqIikKCiAgICBmb3IgZmlsZSBpbiBwa2dfZmlsZXM6CiAgICAgICAgYWJzcGF0aCA9IChyb290IC8gZmlsZSkucmVzb2x2ZSgpCiAgICAgICAgZmlsZXNfdG9fcmVtb3ZlLmFkZChhYnNwYXRoKQoKICAgICMgQWxzbyBhZGQgYWxsIGZpbGVzIGluIHRoZSAuZGlzdC1pbmZvIGRpcmVjdG9yeS4KICAgICMgU2luY2UgbWljcm9waXAgYWRkcyBzb21lIGV4dHJhIGZpbGVzIHRoZXJlLCB3ZSBuZWVkIHRvIHJlbW92ZSB0aGVtIHRvby4KICAgIGZpbGVzX3RvX3JlbW92ZS51cGRhdGUobWV0YWRhdGFfZmlsZXMpCgogICAgcmV0dXJuIGZpbGVzX3RvX3JlbW92ZQpQSwMEFAAAAAAAuyujVri1fGqgAAAAoAAAABQAAABtaWNyb3BpcC9fdmVyc2lvbi5weSMgZmlsZSBnZW5lcmF0ZWQgYnkgc2V0dXB0b29sc19zY20KIyBkb24ndCBjaGFuZ2UsIGRvbid0IHRyYWNrIGluIHZlcnNpb24gY29udHJvbApfX3ZlcnNpb25fXyA9IHZlcnNpb24gPSAnMC4zLjAnCl9fdmVyc2lvbl90dXBsZV9fID0gdmVyc2lvbl90dXBsZSA9ICgwLCAzLCAwKQpQSwMEFAAAAAAAuyujVh0koKKGCAAAhggAABMAAABtaWNyb3BpcC9wYWNrYWdlLnB5ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckRpY3QKZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEl0ZXJhYmxlCmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGFzdHVwbGUsIGRhdGFjbGFzcwpmcm9tIHR5cGluZyBpbXBvcnQgQW55Cgpmcm9tIHBhY2thZ2luZy51dGlscyBpbXBvcnQgY2Fub25pY2FsaXplX25hbWUKCl9fYWxsX18gPSBbIlBhY2thZ2VEaWN0Il0KCgpkZWYgX2Zvcm1hdF90YWJsZShoZWFkZXJzOiBsaXN0W3N0cl0sIHRhYmxlOiBJdGVyYWJsZVtJdGVyYWJsZVtBbnldXSkgLT4gc3RyOgogICAgIiIiCiAgICBSZXR1cm5zIGEgbWluaW1hbCBmb3JtYXR0ZWQgdGFibGUKCiAgICA+Pj4gcHJpbnQoX2Zvcm1hdF90YWJsZShbIkhlYWRlcjEiLCAiSGVhZGVyMiJdLCBbWyJ2YWwxIiwgInZhbDIiXSwgWyJ2YWwzIiwgInZhbDQiXV0pKQogICAgSGVhZGVyMSB8IEhlYWRlcjIKICAgIC0tLS0tLS0gfCAtLS0tLS0tCiAgICB2YWwxICAgIHwgdmFsMgogICAgdmFsMyAgICB8IHZhbDQKICAgICIiIgoKICAgIGRlZiBmb3JtYXRfcm93KHZhbHVlcywgd2lkdGhzLCBmaWxsZXI9IiIpOgogICAgICAgIHJvdyA9ICIgfCAiLmpvaW4oCiAgICAgICAgICAgIGYie3g6e2ZpbGxlcn08e3d9fSIgZm9yIHgsIHcgaW4gemlwKHZhbHVlcywgd2lkdGhzLCBzdHJpY3Q9VHJ1ZSkKICAgICAgICApCiAgICAgICAgcmV0dXJuIHJvdy5yc3RyaXAoKQoKICAgIGNvbF93aWR0aCA9IFttYXgobGVuKHgpIGZvciB4IGluIGNvbCkgZm9yIGNvbCBpbiB6aXAoaGVhZGVycywgKnRhYmxlLCBzdHJpY3Q9VHJ1ZSldCiAgICByb3dzID0gW10KCiAgICByb3dzLmFwcGVuZChmb3JtYXRfcm93KGhlYWRlcnMsIGNvbF93aWR0aCkpCiAgICByb3dzLmFwcGVuZChmb3JtYXRfcm93KFsiIl0gKiBsZW4oY29sX3dpZHRoKSwgY29sX3dpZHRoLCBmaWxsZXI9Ii0iKSkKICAgIGZvciBsaW5lIGluIHRhYmxlOgogICAgICAgIHJvd3MuYXBwZW5kKGZvcm1hdF9yb3cobGluZSwgY29sX3dpZHRoKSkKCiAgICByZXR1cm4gIlxuIi5qb2luKHJvd3MpCgoKQGRhdGFjbGFzcwpjbGFzcyBQYWNrYWdlTWV0YWRhdGE6CiAgICBuYW1lOiBzdHIKICAgIHZlcnNpb246IHN0ciA9ICIiCiAgICBzb3VyY2U6IHN0ciA9ICIiCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBpdGVyKGFzdHVwbGUoc2VsZikpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIGtleXMoKToKICAgICAgICByZXR1cm4gUGFja2FnZU1ldGFkYXRhLl9fZGF0YWNsYXNzX2ZpZWxkc19fLmtleXMoKQoKCmNsYXNzIFBhY2thZ2VEaWN0KFVzZXJEaWN0W3N0ciwgUGFja2FnZU1ldGFkYXRhXSk6CiAgICAiIiIKICAgIEEgZGljdGlvbmFyeSB0aGF0IGhvbGRzIGxpc3Qgb2YgbWV0YWRhdGEgb24gcGFja2FnZXMuCiAgICBUaGlzIGNsYXNzIGlzIHVzZWQgaW4gbWljcm9waXAgdG8ga2VlcCB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMuCiAgICAiIiIKCiAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiBzZWxmLl90YWJ1bGFyaXplKCkKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICBub3JtYWxpemVkX2tleSA9IGNhbm9uaWNhbGl6ZV9uYW1lKGtleSkKICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2dldGl0ZW1fXyhub3JtYWxpemVkX2tleSkKCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWwpOgogICAgICAgIG5vcm1hbGl6ZWRfa2V5ID0gY2Fub25pY2FsaXplX25hbWUoa2V5KQogICAgICAgIHJldHVybiBzdXBlcigpLl9fc2V0aXRlbV9fKG5vcm1hbGl6ZWRfa2V5LCB2YWwpCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXk6IHN0cikgLT4gYm9vbDogICMgdHlwZTogaWdub3JlW292ZXJyaWRlXQogICAgICAgIG5vcm1hbGl6ZWRfa2V5ID0gY2Fub25pY2FsaXplX25hbWUoa2V5KQogICAgICAgIHJldHVybiBzdXBlcigpLl9fY29udGFpbnNfXyhub3JtYWxpemVkX2tleSkKCiAgICBkZWYgX3RhYnVsYXJpemUoc2VsZikgLT4gc3RyOgogICAgICAgIGhlYWRlcnMgPSBba2V5LmNhcGl0YWxpemUoKSBmb3Iga2V5IGluIFBhY2thZ2VNZXRhZGF0YS5rZXlzKCldCiAgICAgICAgdGFibGUgPSBsaXN0KHNlbGYudmFsdWVzKCkpCiAgICAgICAgcmV0dXJuIF9mb3JtYXRfdGFibGUoaGVhZGVycywgdGFibGUpClBLAwQUAAAAAAC7K6NWg/ODYbwLAAC8CwAAFQAAAG1pY3JvcGlwL3VuaW5zdGFsbC5weWltcG9ydCBpbXBvcnRsaWIKaW1wb3J0IGltcG9ydGxpYi5tZXRhZGF0YQppbXBvcnQgd2FybmluZ3MKZnJvbSBpbXBvcnRsaWIubWV0YWRhdGEgaW1wb3J0IERpc3RyaWJ1dGlvbgoKZnJvbSAuX2NvbXBhdCBpbXBvcnQgbG9hZGVkUGFja2FnZXMKZnJvbSAuX3V0aWxzIGltcG9ydCBnZXRfZmlsZXNfaW5fZGlzdHJpYnV0aW9uLCBnZXRfcm9vdAoKCmRlZiB1bmluc3RhbGwocGFja2FnZXM6IHN0ciB8IGxpc3Rbc3RyXSkgLT4gTm9uZToKICAgICIiIlVuaW5zdGFsbCB0aGUgZ2l2ZW4gcGFja2FnZXMuCgogICAgVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIHVuaW5zdGFsbGluZyBwYWNrYWdlcyB0aGF0IGFyZSBpbnN0YWxsZWQKICAgIHVzaW5nIGEgd2hlZWwgZmlsZSwgaS5lLiBwYWNrYWdlcyB0aGF0IGhhdmUgZGlzdHJpYnV0aW9uIG1ldGFkYXRhLgoKICAgIEl0IGlzIHBvc3NpYmxlIHRvIHJlaW5zdGFsbCBhIHBhY2thZ2UgYWZ0ZXIgdW5pbnN0YWxsaW5nIGl0LCBidXQKICAgIG5vdGUgdGhhdCBtb2R1bGVzIC8gZnVuY3Rpb25zIHRoYXQgYXJlIGFscmVhZHkgaW1wb3J0ZWQgd2lsbCBub3QgYmUKICAgIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBmcm9tIHRoZSBuYW1lc3BhY2UuIFNvIG1ha2Ugc3VyZSB0byByZWxvYWQKICAgIHRoZSBtb2R1bGUgYWZ0ZXIgcmVpbnN0YWxsaW5nIGJ5IGUuZy4gcnVubmluZyBgaW1wb3J0bGliLnJlbG9hZChtb2R1bGUpYC4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICBwYWNrYWdlcwogICAgICAgIFBhY2thZ2VzIHRvIHVuaW5zdGFsbC4KICAgICIiIgoKICAgIGlmIGlzaW5zdGFuY2UocGFja2FnZXMsIHN0cik6CiAgICAgICAgcGFja2FnZXMgPSBbcGFja2FnZXNdCgogICAgZGlzdHJpYnV0aW9uczogbGlzdFtEaXN0cmlidXRpb25dID0gW10KICAgIGZvciBwYWNrYWdlIGluIHBhY2thZ2VzOgogICAgICAgIHRyeToKICAgICAgICAgICAgZGlzdCA9IGltcG9ydGxpYi5tZXRhZGF0YS5kaXN0cmlidXRpb24ocGFja2FnZSkKICAgICAgICAgICAgZGlzdHJpYnV0aW9ucy5hcHBlbmQoZGlzdCkKICAgICAgICBleGNlcHQgaW1wb3J0bGliLm1ldGFkYXRhLlBhY2thZ2VOb3RGb3VuZEVycm9yOgogICAgICAgICAgICB3YXJuaW5ncy53YXJuKGYiV0FSTklORzogU2tpcHBpbmcgJ3twYWNrYWdlfScgYXMgaXQgaXMgbm90IGluc3RhbGxlZC4iKQoKICAgIGZvciBkaXN0IGluIGRpc3RyaWJ1dGlvbnM6CiAgICAgICAgIyBOb3RlOiB0aGlzIHZhbHVlIG5lZWRzIHRvIGJlIHJldHJpZXZlZCBiZWZvcmUgcmVtb3ZpbmcgZmlsZXMsIGFzCiAgICAgICAgIyAgICAgICBkaXN0Lm5hbWUgdXNlcyBtZXRhZGF0YSBmaWxlIHRvIGdldCB0aGUgbmFtZQogICAgICAgIG5hbWUgPSBkaXN0Lm5hbWUKCiAgICAgICAgcm9vdCA9IGdldF9yb290KGRpc3QpCiAgICAgICAgZmlsZXMgPSBnZXRfZmlsZXNfaW5fZGlzdHJpYnV0aW9uKGRpc3QpCiAgICAgICAgZGlyZWN0b3JpZXMgPSBzZXQoKQoKICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgaWYgbm90IGZpbGUuaXNfZmlsZSgpOgogICAgICAgICAgICAgICAgaWYgbm90IGZpbGUuaXNfcmVsYXRpdmVfdG8ocm9vdCk6CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGZpbGUgaXMgbm90IGluIHRoZSBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yeS4gUHJvYmFibHkgb25lIG9mOgogICAgICAgICAgICAgICAgICAgICMgLSBkYXRhX2ZpbGVzCiAgICAgICAgICAgICAgICAgICAgIyAtIHNjcmlwdHMKICAgICAgICAgICAgICAgICAgICAjIC0gZW50cnlfcG9pbnRzCiAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHRoZXNlLCB3ZSBjYW4gaWdub3JlIHRoZW0gKGV4Y2VwdCBmb3IgZGF0YV9maWxlcyAoVE9ETykpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgICAgIGYiV0FSTklORzogQSBmaWxlICd7ZmlsZX0nIGxpc3RlZCBpbiB0aGUgbWV0YWRhdGEgb2YgJ3tkaXN0Lm5hbWV9JyBkb2VzIG5vdCBleGlzdC4iCiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGZpbGUudW5saW5rKCkKCiAgICAgICAgICAgIGlmIGZpbGUucGFyZW50ICE9IHJvb3Q6CiAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hZGQoZmlsZS5wYXJlbnQpCgogICAgICAgICMgUmVtb3ZlIGRpcmVjdG9yaWVzIGluIHJldmVyc2UgaGllcmFyY2hpY2FsIG9yZGVyCiAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBzb3J0ZWQoZGlyZWN0b3JpZXMsIGtleT1sYW1iZGEgeDogbGVuKHgucGFydHMpLCByZXZlcnNlPVRydWUpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBkaXJlY3Rvcnkucm1kaXIoKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICAgICAgZiJXQVJOSU5HOiBBIGRpcmVjdG9yeSAne2RpcmVjdG9yeX0nIGlzIG5vdCBlbXB0eSBhZnRlciB1bmluc3RhbGxhdGlvbiBvZiAne25hbWV9Jy4gIgogICAgICAgICAgICAgICAgICAgICJUaGlzIG1pZ2h0IGNhdXNlIHByb2JsZW1zIHdoZW4gaW5zdGFsbGluZyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlLiAiCiAgICAgICAgICAgICAgICApCgogICAgICAgIGlmIGhhc2F0dHIobG9hZGVkUGFja2FnZXMsIG5hbWUpOgogICAgICAgICAgICBkZWxhdHRyKGxvYWRlZFBhY2thZ2VzLCBuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGp1c3QgaW4gY2FzZQogICAgICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgZiJXQVJOSU5HOiBhIHBhY2thZ2UgJ3tuYW1lfScgd2FzIG5vdCBmb3VuZCBpbiBsb2FkZWRQYWNrYWdlcy4iCiAgICAgICAgICAgICkKCiAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQpQSwMEFAAAAAAAuyujVgAAAAAAAAAAAAAAAB4AAABtaWNyb3BpcC9leHRlcm5hbHMvX19pbml0X18ucHlQSwMEFAAAAAAAuyujVmFOyo1dAAAAXQAAACIAAABtaWNyb3BpcC9leHRlcm5hbHMvcGlwL19faW5pdF9fLnB5IiIiCkJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhL3BpcC9jb21taXQvNTdiZTZhNzdjNTdhYjVkNTEyMzcxYjVjNDhkNTA4YTc2MjBjMzIxNwoiIiIKUEsDBBQAAAAAALsro1YAAAAAAAAAAAAAAAAsAAAAbWljcm9waXAvZXh0ZXJuYWxzL3BpcC9faW50ZXJuYWwvX19pbml0X18ucHlQSwMEFAAAAAAAuyujVgAAAAAAAAAAAAAAADIAAABtaWNyb3BpcC9leHRlcm5hbHMvcGlwL19pbnRlcm5hbC91dGlscy9fX2luaXRfXy5weVBLAwQUAAAAAAC7K6NWcUXLjlEEAABRBAAANwAAAG1pY3JvcGlwL2V4dGVybmFscy9waXAvX2ludGVybmFsL3V0aWxzL3BrZ19yZXNvdXJjZXMucHlmcm9tIHR5cGluZyBpbXBvcnQgRGljdCwgSXRlcmFibGUsIExpc3QKCmZyb20gLi4uX3ZlbmRvci5wa2dfcmVzb3VyY2VzIGltcG9ydCB5aWVsZF9saW5lcwoKCmNsYXNzIERpY3RNZXRhZGF0YToKICAgICIiIklNZXRhZGF0YVByb3ZpZGVyIHRoYXQgcmVhZHMgbWV0YWRhdGEgZmlsZXMgZnJvbSBhIGRpY3Rpb25hcnkuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGFkYXRhKToKICAgICAgICAjIHR5cGU6IChEaWN0W3N0ciwgYnl0ZXNdKSAtPiBOb25lCiAgICAgICAgc2VsZi5fbWV0YWRhdGEgPSBtZXRhZGF0YQoKICAgIGRlZiBoYXNfbWV0YWRhdGEoc2VsZiwgbmFtZSk6CiAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBib29sCiAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5fbWV0YWRhdGEKCiAgICBkZWYgZ2V0X21ldGFkYXRhKHNlbGYsIG5hbWUpOgogICAgICAgICMgdHlwZTogKHN0cikgLT4gc3RyCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fbWV0YWRhdGFbbmFtZV0uZGVjb2RlKCkKICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6CiAgICAgICAgICAgICMgTWlycm9ycyBoYW5kbGluZyBkb25lIGluIHBrZ19yZXNvdXJjZXMuTnVsbFByb3ZpZGVyLgogICAgICAgICAgICBlLnJlYXNvbiArPSBmIiBpbiB7bmFtZX0gZmlsZSIKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgZ2V0X21ldGFkYXRhX2xpbmVzKHNlbGYsIG5hbWUpOgogICAgICAgICMgdHlwZTogKHN0cikgLT4gSXRlcmFibGVbc3RyXQogICAgICAgIHJldHVybiB5aWVsZF9saW5lcyhzZWxmLmdldF9tZXRhZGF0YShuYW1lKSkKCiAgICBkZWYgbWV0YWRhdGFfaXNkaXIoc2VsZiwgbmFtZSk6CiAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBib29sCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIG1ldGFkYXRhX2xpc3RkaXIoc2VsZiwgbmFtZSk6CiAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBMaXN0W3N0cl0KICAgICAgICByZXR1cm4gW10KCiAgICBkZWYgcnVuX3NjcmlwdChzZWxmLCBzY3JpcHRfbmFtZSwgbmFtZXNwYWNlKToKICAgICAgICAjIHR5cGU6IChzdHIsIHN0cikgLT4gTm9uZQogICAgICAgIHBhc3MKUEsDBBQAAAAAALsro1Zx8JXVBhkAAAYZAAAvAAAAbWljcm9waXAvZXh0ZXJuYWxzL3BpcC9faW50ZXJuYWwvdXRpbHMvd2hlZWwucHkiIiJTdXBwb3J0IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIHdoZWVsIGZpbGVzLgoiIiIKCmltcG9ydCBsb2dnaW5nCmZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpmcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgUGFyc2VyCmZyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBUdXBsZQpmcm9tIHppcGZpbGUgaW1wb3J0IEJhZFppcEZpbGUsIFppcEZpbGUKCmZyb20gcGFja2FnaW5nLnV0aWxzIGltcG9ydCBjYW5vbmljYWxpemVfbmFtZQpmcm9tIC4uLl92ZW5kb3IucGtnX3Jlc291cmNlcyBpbXBvcnQgRGlzdEluZm9EaXN0cmlidXRpb24sIERpc3RyaWJ1dGlvbgpmcm9tIC5wa2dfcmVzb3VyY2VzIGltcG9ydCBEaWN0TWV0YWRhdGEKCiMgZnJvbSBwaXAuX3ZlbmRvci5wa2dfcmVzb3VyY2VzIGltcG9ydCBEaXN0SW5mb0Rpc3RyaWJ1dGlvbiwgRGlzdHJpYnV0aW9uCiMgZnJvbSBwaXAuX2ludGVybmFsLnV0aWxzLnBrZ19yZXNvdXJjZXMgaW1wb3J0IERpY3RNZXRhZGF0YQoKVkVSU0lPTl9DT01QQVRJQkxFID0gKDEsIDApCgoKY2xhc3MgVW5zdXBwb3J0ZWRXaGVlbChFeGNlcHRpb24pOgogICAgIiIiVW5zdXBwb3J0ZWQgd2hlZWwuIiIiCgoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgoKY2xhc3MgV2hlZWxNZXRhZGF0YShEaWN0TWV0YWRhdGEpOgogICAgIiIiTWV0YWRhdGEgcHJvdmlkZXIgdGhhdCBtYXBzIG1ldGFkYXRhIGRlY29kaW5nIGV4Y2VwdGlvbnMgdG8gb3VyCiAgICBpbnRlcm5hbCBleGNlcHRpb24gdHlwZS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRhZGF0YSwgd2hlZWxfbmFtZSk6CiAgICAgICAgIyB0eXBlOiAoRGljdFtzdHIsIGJ5dGVzXSwgc3RyKSAtPiBOb25lCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXRhZGF0YSkKICAgICAgICBzZWxmLl93aGVlbF9uYW1lID0gd2hlZWxfbmFtZQoKICAgIGRlZiBnZXRfbWV0YWRhdGEoc2VsZiwgbmFtZSk6CiAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBzdHIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9tZXRhZGF0YShuYW1lKQogICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZToKICAgICAgICAgICAgIyBBdWdtZW50IHRoZSBkZWZhdWx0IGVycm9yIHdpdGggdGhlIG9yaWdpbiBvZiB0aGUgZmlsZS4KICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRXaGVlbCgKICAgICAgICAgICAgICAgIGYiRXJyb3IgZGVjb2RpbmcgbWV0YWRhdGEgZm9yIHtzZWxmLl93aGVlbF9uYW1lfToge2V9IgogICAgICAgICAgICApCgoKZGVmIHBrZ19yZXNvdXJjZXNfZGlzdHJpYnV0aW9uX2Zvcl93aGVlbCh3aGVlbF96aXAsIG5hbWUsIGxvY2F0aW9uKToKICAgICMgdHlwZTogKFppcEZpbGUsIHN0ciwgc3RyKSAtPiBEaXN0cmlidXRpb24KICAgICIiIkdldCBhIHBrZ19yZXNvdXJjZXMgZGlzdHJpYnV0aW9uIGdpdmVuIGEgd2hlZWwuCgogICAgOnJhaXNlcyBVbnN1cHBvcnRlZFdoZWVsOiBvbiBhbnkgZXJyb3JzCiAgICAiIiIKICAgIGluZm9fZGlyLCBfID0gcGFyc2Vfd2hlZWwod2hlZWxfemlwLCBuYW1lKQoKICAgIG1ldGFkYXRhX2ZpbGVzID0gW3AgZm9yIHAgaW4gd2hlZWxfemlwLm5hbWVsaXN0KCkgaWYgcC5zdGFydHN3aXRoKGYie2luZm9fZGlyfS8iKV0KCiAgICBtZXRhZGF0YV90ZXh0ID0ge30gICMgdHlwZTogRGljdFtzdHIsIGJ5dGVzXQogICAgZm9yIHBhdGggaW4gbWV0YWRhdGFfZmlsZXM6CiAgICAgICAgXywgbWV0YWRhdGFfbmFtZSA9IHBhdGguc3BsaXQoIi8iLCAxKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1ldGFkYXRhX3RleHRbbWV0YWRhdGFfbmFtZV0gPSByZWFkX3doZWVsX21ldGFkYXRhX2ZpbGUod2hlZWxfemlwLCBwYXRoKQogICAgICAgIGV4Y2VwdCBVbnN1cHBvcnRlZFdoZWVsIGFzIGU6CiAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoInt9IGhhcyBhbiBpbnZhbGlkIHdoZWVsLCB7fSIuZm9ybWF0KG5hbWUsIHN0cihlKSkpCgogICAgbWV0YWRhdGEgPSBXaGVlbE1ldGFkYXRhKG1ldGFkYXRhX3RleHQsIGxvY2F0aW9uKQoKICAgIHJldHVybiBEaXN0SW5mb0Rpc3RyaWJ1dGlvbihsb2NhdGlvbj1sb2NhdGlvbiwgbWV0YWRhdGE9bWV0YWRhdGEsIHByb2plY3RfbmFtZT1uYW1lKQoKCmRlZiBwYXJzZV93aGVlbCh3aGVlbF96aXAsIG5hbWUpOgogICAgIyB0eXBlOiAoWmlwRmlsZSwgc3RyKSAtPiBUdXBsZVtzdHIsIE1lc3NhZ2VdCiAgICAiIiJFeHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIHByb3ZpZGVkIHdoZWVsLCBlbnN1cmluZyBpdCBtZWV0cyBiYXNpYwogICAgc3RhbmRhcmRzLgoKICAgIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIC5kaXN0LWluZm8gZGlyZWN0b3J5IGFuZCB0aGUgcGFyc2VkIFdIRUVMIG1ldGFkYXRhLgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgaW5mb19kaXIgPSB3aGVlbF9kaXN0X2luZm9fZGlyKHdoZWVsX3ppcCwgbmFtZSkKICAgICAgICBtZXRhZGF0YSA9IHdoZWVsX21ldGFkYXRhKHdoZWVsX3ppcCwgaW5mb19kaXIpCiAgICAgICAgdmVyc2lvbiA9IHdoZWVsX3ZlcnNpb24obWV0YWRhdGEpCiAgICBleGNlcHQgVW5zdXBwb3J0ZWRXaGVlbCBhcyBlOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoInt9IGhhcyBhbiBpbnZhbGlkIHdoZWVsLCB7fSIuZm9ybWF0KG5hbWUsIHN0cihlKSkpCgogICAgY2hlY2tfY29tcGF0aWJpbGl0eSh2ZXJzaW9uLCBuYW1lKQoKICAgIHJldHVybiBpbmZvX2RpciwgbWV0YWRhdGEKCgpkZWYgd2hlZWxfZGlzdF9pbmZvX2Rpcihzb3VyY2UsIG5hbWUpOgogICAgIyB0eXBlOiAoWmlwRmlsZSwgc3RyKSAtPiBzdHIKICAgICIiIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lZCAuZGlzdC1pbmZvIGRpcmVjdG9yeS4KCiAgICBSYWlzZXMgQXNzZXJ0aW9uRXJyb3Igb3IgVW5zdXBwb3J0ZWRXaGVlbCBpZiBub3QgZm91bmQsID4xIGZvdW5kLCBvcgogICAgaXQgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgbmFtZS4KICAgICIiIgogICAgIyBaaXAgZmlsZSBwYXRoIHNlcGFyYXRvcnMgbXVzdCBiZSAvCiAgICBzdWJkaXJzID0ge3Auc3BsaXQoIi8iLCAxKVswXSBmb3IgcCBpbiBzb3VyY2UubmFtZWxpc3QoKX0KCiAgICBpbmZvX2RpcnMgPSBbcyBmb3IgcyBpbiBzdWJkaXJzIGlmIHMuZW5kc3dpdGgoIi5kaXN0LWluZm8iKV0KCiAgICBpZiBub3QgaW5mb19kaXJzOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoIi5kaXN0LWluZm8gZGlyZWN0b3J5IG5vdCBmb3VuZCIpCgogICAgaWYgbGVuKGluZm9fZGlycykgPiAxOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoCiAgICAgICAgICAgICJtdWx0aXBsZSAuZGlzdC1pbmZvIGRpcmVjdG9yaWVzIGZvdW5kOiB7fSIuZm9ybWF0KCIsICIuam9pbihpbmZvX2RpcnMpKQogICAgICAgICkKCiAgICBpbmZvX2RpciA9IGluZm9fZGlyc1swXQoKICAgIGluZm9fZGlyX25hbWUgPSBjYW5vbmljYWxpemVfbmFtZShpbmZvX2RpcikKICAgIGNhbm9uaWNhbF9uYW1lID0gY2Fub25pY2FsaXplX25hbWUobmFtZSkKICAgIGlmIG5vdCBpbmZvX2Rpcl9uYW1lLnN0YXJ0c3dpdGgoY2Fub25pY2FsX25hbWUpOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoCiAgICAgICAgICAgICIuZGlzdC1pbmZvIGRpcmVjdG9yeSB7IXJ9IGRvZXMgbm90IHN0YXJ0IHdpdGggeyFyfSIuZm9ybWF0KAogICAgICAgICAgICAgICAgaW5mb19kaXIsIGNhbm9uaWNhbF9uYW1lCiAgICAgICAgICAgICkKICAgICAgICApCgogICAgcmV0dXJuIGluZm9fZGlyCgoKZGVmIHJlYWRfd2hlZWxfbWV0YWRhdGFfZmlsZShzb3VyY2UsIHBhdGgpOgogICAgIyB0eXBlOiAoWmlwRmlsZSwgc3RyKSAtPiBieXRlcwogICAgdHJ5OgogICAgICAgIHJldHVybiBzb3VyY2UucmVhZChwYXRoKQogICAgICAgICMgQmFkWmlwRmlsZSBmb3IgZ2VuZXJhbCBjb3JydXB0aW9uLCBLZXlFcnJvciBmb3IgbWlzc2luZyBlbnRyeSwKICAgICAgICAjIGFuZCBSdW50aW1lRXJyb3IgZm9yIHBhc3N3b3JkLXByb3RlY3RlZCBmaWxlcwogICAgZXhjZXB0IChCYWRaaXBGaWxlLCBLZXlFcnJvciwgUnVudGltZUVycm9yKSBhcyBlOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoZiJjb3VsZCBub3QgcmVhZCB7cGF0aCFyfSBmaWxlOiB7ZSFyfSIpCgoKZGVmIHdoZWVsX21ldGFkYXRhKHNvdXJjZSwgZGlzdF9pbmZvX2Rpcik6CiAgICAjIHR5cGU6IChaaXBGaWxlLCBzdHIpIC0+IE1lc3NhZ2UKICAgICIiIlJldHVybiB0aGUgV0hFRUwgbWV0YWRhdGEgb2YgYW4gZXh0cmFjdGVkIHdoZWVsLCBpZiBwb3NzaWJsZS4KICAgIE90aGVyd2lzZSwgcmFpc2UgVW5zdXBwb3J0ZWRXaGVlbC4KICAgICIiIgogICAgcGF0aCA9IGYie2Rpc3RfaW5mb19kaXJ9L1dIRUVMIgogICAgIyBaaXAgZmlsZSBwYXRoIHNlcGFyYXRvcnMgbXVzdCBiZSAvCiAgICB3aGVlbF9jb250ZW50cyA9IHJlYWRfd2hlZWxfbWV0YWRhdGFfZmlsZShzb3VyY2UsIHBhdGgpCgogICAgdHJ5OgogICAgICAgIHdoZWVsX3RleHQgPSB3aGVlbF9jb250ZW50cy5kZWNvZGUoKQogICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoZiJlcnJvciBkZWNvZGluZyB7cGF0aCFyfToge2Uhcn0iKQoKICAgICMgRmVlZFBhcnNlciAodXNlZCBieSBQYXJzZXIpIGRvZXMgbm90IHJhaXNlIGFueSBleGNlcHRpb25zLiBUaGUgcmV0dXJuZWQKICAgICMgbWVzc2FnZSBtYXkgaGF2ZSAuZGVmZWN0cyBwb3B1bGF0ZWQsIGJ1dCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgd2UKICAgICMgY3VycmVudGx5IGlnbm9yZSB0aGVtLgogICAgcmV0dXJuIFBhcnNlcigpLnBhcnNlc3RyKHdoZWVsX3RleHQpCgoKZGVmIHdoZWVsX3ZlcnNpb24od2hlZWxfZGF0YSk6CiAgICAjIHR5cGU6IChNZXNzYWdlKSAtPiBUdXBsZVtpbnQsIC4uLl0KICAgICIiIkdpdmVuIFdIRUVMIG1ldGFkYXRhLCByZXR1cm4gdGhlIHBhcnNlZCBXaGVlbC1WZXJzaW9uLgogICAgT3RoZXJ3aXNlLCByYWlzZSBVbnN1cHBvcnRlZFdoZWVsLgogICAgIiIiCiAgICB2ZXJzaW9uX3RleHQgPSB3aGVlbF9kYXRhWyJXaGVlbC1WZXJzaW9uIl0KICAgIGlmIHZlcnNpb25fdGV4dCBpcyBOb25lOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoIldIRUVMIGlzIG1pc3NpbmcgV2hlZWwtVmVyc2lvbiIpCgogICAgdmVyc2lvbiA9IHZlcnNpb25fdGV4dC5zdHJpcCgpCgogICAgdHJ5OgogICAgICAgIHJldHVybiB0dXBsZShtYXAoaW50LCB2ZXJzaW9uLnNwbGl0KCIuIikpKQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRXaGVlbChmImludmFsaWQgV2hlZWwtVmVyc2lvbjoge3ZlcnNpb24hcn0iKQoKCmRlZiBjaGVja19jb21wYXRpYmlsaXR5KHZlcnNpb24sIG5hbWUpOgogICAgIyB0eXBlOiAoVHVwbGVbaW50LCAuLi5dLCBzdHIpIC0+IE5vbmUKICAgICIiIlJhaXNlcyBlcnJvcnMgb3Igd2FybnMgaWYgY2FsbGVkIHdpdGggYW4gaW5jb21wYXRpYmxlIFdoZWVsLVZlcnNpb24uCgogICAgcGlwIHNob3VsZCByZWZ1c2UgdG8gaW5zdGFsbCBhIFdoZWVsLVZlcnNpb24gdGhhdCdzIGEgbWFqb3Igc2VyaWVzCiAgICBhaGVhZCBvZiB3aGF0IGl0J3MgY29tcGF0aWJsZSB3aXRoIChlLmcgMi4wID4gMS4xKTsgYW5kIHdhcm4gd2hlbgogICAgaW5zdGFsbGluZyBhIHZlcnNpb24gb25seSBtaW5vciB2ZXJzaW9uIGFoZWFkIChlLmcgMS4yID4gMS4xKS4KCiAgICB2ZXJzaW9uOiBhIDItdHVwbGUgcmVwcmVzZW50aW5nIGEgV2hlZWwtVmVyc2lvbiAoTWFqb3IsIE1pbm9yKQogICAgbmFtZTogbmFtZSBvZiB3aGVlbCBvciBwYWNrYWdlIHRvIHJhaXNlIGV4Y2VwdGlvbiBhYm91dAoKICAgIDpyYWlzZXMgVW5zdXBwb3J0ZWRXaGVlbDogd2hlbiBhbiBpbmNvbXBhdGlibGUgV2hlZWwtVmVyc2lvbiBpcyBnaXZlbgogICAgIiIiCiAgICBpZiB2ZXJzaW9uWzBdID4gVkVSU0lPTl9DT01QQVRJQkxFWzBdOgogICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkV2hlZWwoCiAgICAgICAgICAgICJ7fSdzIFdoZWVsLVZlcnNpb24gKHt9KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgdmVyc2lvbiAiCiAgICAgICAgICAgICJvZiBwaXAiLmZvcm1hdChuYW1lLCAiLiIuam9pbihtYXAoc3RyLCB2ZXJzaW9uKSkpCiAgICAgICAgKQogICAgZWxpZiB2ZXJzaW9uID4gVkVSU0lPTl9DT01QQVRJQkxFOgogICAgICAgIGxvZ2dlci53YXJuaW5nKAogICAgICAgICAgICAiSW5zdGFsbGluZyBmcm9tIGEgbmV3ZXIgV2hlZWwtVmVyc2lvbiAoJXMpIiwKICAgICAgICAgICAgIi4iLmpvaW4obWFwKHN0ciwgdmVyc2lvbikpLAogICAgICAgICkKUEsDBBQAAAAAALsro1YAAAAAAAAAAAAAAAAqAAAAbWljcm9waXAvZXh0ZXJuYWxzL3BpcC9fdmVuZG9yL19faW5pdF9fLnB5UEsDBBQAAAAAALsro1YmIq4qxj0AAMY9AAAvAAAAbWljcm9waXAvZXh0ZXJuYWxzL3BpcC9fdmVuZG9yL3BrZ19yZXNvdXJjZXMucHkjIGNvZGluZzogdXRmLTgKIiIiClBhY2thZ2UgcmVzb3VyY2UgQVBJCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBIHJlc291cmNlIGlzIGEgbG9naWNhbCBmaWxlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlLCBvciBhIGxvZ2ljYWwKc3ViZGlyZWN0b3J5IHRoZXJlb2YuICBUaGUgcGFja2FnZSByZXNvdXJjZSBBUEkgZXhwZWN0cyByZXNvdXJjZSBuYW1lcwp0byBoYXZlIHRoZWlyIHBhdGggcGFydHMgc2VwYXJhdGVkIHdpdGggYGAvYGAsICpub3QqIHdoYXRldmVyIHRoZSBsb2NhbApwYXRoIHNlcGFyYXRvciBpcy4gIERvIG5vdCB1c2Ugb3MucGF0aCBvcGVyYXRpb25zIHRvIG1hbmlwdWxhdGUgcmVzb3VyY2UKbmFtZXMgYmVpbmcgcGFzc2VkIGludG8gdGhlIEFQSS4KClRoZSBwYWNrYWdlIHJlc291cmNlIEFQSSBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggbm9ybWFsIGZpbGVzeXN0ZW0gcGFja2FnZXMsCi5lZ2cgZmlsZXMsIGFuZCB1bnBhY2tlZCAuZWdnIGZpbGVzLiAgSXQgY2FuIGFsc28gd29yayBpbiBhIGxpbWl0ZWQgd2F5IHdpdGgKLnppcCBmaWxlcyBhbmQgd2l0aCBjdXN0b20gUEVQIDMwMiBsb2FkZXJzIHRoYXQgc3VwcG9ydCB0aGUgYGBnZXRfZGF0YSgpYGAKbWV0aG9kLgoiIiIKCmZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CgppbXBvcnQgc3lzCmltcG9ydCByZQppbXBvcnQgd2FybmluZ3MKaW1wb3J0IGVtYWlsLnBhcnNlcgppbXBvcnQgdXJsbGliCgp0cnk6CiAgICBGaWxlRXhpc3RzRXJyb3IKZXhjZXB0IE5hbWVFcnJvcjoKICAgIEZpbGVFeGlzdHNFcnJvciA9IE9TRXJyb3IKCmltcG9ydCBwYWNrYWdpbmcudmVyc2lvbgppbXBvcnQgcGFja2FnaW5nLnNwZWNpZmllcnMKaW1wb3J0IHBhY2thZ2luZy5yZXF1aXJlbWVudHMKaW1wb3J0IHBhY2thZ2luZy5tYXJrZXJzCgoKX19tZXRhY2xhc3NfXyA9IHR5cGUKCgpjbGFzcyBQRVA0NDBXYXJuaW5nKFJ1bnRpbWVXYXJuaW5nKToKICAgICIiIgogICAgVXNlZCB3aGVuIHRoZXJlIGlzIGFuIGlzc3VlIHdpdGggYSB2ZXJzaW9uIG9yIHNwZWNpZmllciBub3QgY29tcGx5aW5nIHdpdGgKICAgIFBFUCA0NDAuCiAgICAiIiIKCgpkZWYgcGFyc2VfdmVyc2lvbih2KToKICAgIHRyeToKICAgICAgICByZXR1cm4gcGFja2FnaW5nLnZlcnNpb24uVmVyc2lvbih2KQogICAgZXhjZXB0IHBhY2thZ2luZy52ZXJzaW9uLkludmFsaWRWZXJzaW9uOgogICAgICAgIHJldHVybiBwYWNrYWdpbmcudmVyc2lvbi5MZWdhY3lWZXJzaW9uKHYpCgoKX19hbGxfXyA9IFsKICAgICJEaXN0SW5mb0Rpc3RyaWJ1dGlvbiIsCiAgICAiRGlzdHJpYnV0aW9uIiwKICAgICJEaWN0TWV0YWRhdGEiLApdCgoKY2xhc3MgUmVzb2x1dGlvbkVycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJBYnN0cmFjdCBiYXNlIGZvciBkZXBlbmRlbmN5IHJlc29sdXRpb24gZXJyb3JzIiIiCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyArIHJlcHIoc2VsZi5hcmdzKQoKCmNsYXNzIFVua25vd25FeHRyYShSZXNvbHV0aW9uRXJyb3IpOgogICAgIiIiRGlzdHJpYnV0aW9uIGRvZXNuJ3QgaGF2ZSBhbiAiZXh0cmEgZmVhdHVyZSIgb2YgdGhlIGdpdmVuIG5hbWUiIiIKCgpQWV9NQUpPUiA9ICJ7fS57fSIuZm9ybWF0KCpzeXMudmVyc2lvbl9pbmZvKQpFR0dfRElTVCA9IDMKCgpkZWYgc2FmZV9uYW1lKG5hbWUpOgogICAgIiIiQ29udmVydCBhbiBhcmJpdHJhcnkgc3RyaW5nIHRvIGEgc3RhbmRhcmQgZGlzdHJpYnV0aW9uIG5hbWUKCiAgICBBbnkgcnVucyBvZiBub24tYWxwaGFudW1lcmljLy4gY2hhcmFjdGVycyBhcmUgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSAnLScuCiAgICAiIiIKICAgIHJldHVybiByZS5zdWIoIlteQS1aYS16MC05Ll0rIiwgIi0iLCBuYW1lKQoKCmRlZiBzYWZlX3ZlcnNpb24odmVyc2lvbik6CiAgICAiIiIKICAgIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHN0cmluZyB0byBhIHN0YW5kYXJkIHZlcnNpb24gc3RyaW5nCiAgICAiIiIKICAgIHRyeToKICAgICAgICAjIG5vcm1hbGl6ZSB0aGUgdmVyc2lvbgogICAgICAgIHJldHVybiBzdHIocGFja2FnaW5nLnZlcnNpb24uVmVyc2lvbih2ZXJzaW9uKSkKICAgIGV4Y2VwdCBwYWNrYWdpbmcudmVyc2lvbi5JbnZhbGlkVmVyc2lvbjoKICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbi5yZXBsYWNlKCIgIiwgIi4iKQogICAgICAgIHJldHVybiByZS5zdWIoIlteQS1aYS16MC05Ll0rIiwgIi0iLCB2ZXJzaW9uKQoKCmRlZiBzYWZlX2V4dHJhKGV4dHJhKToKICAgICIiIkNvbnZlcnQgYW4gYXJiaXRyYXJ5IHN0cmluZyB0byBhIHN0YW5kYXJkICdleHRyYScgbmFtZQoKICAgIEFueSBydW5zIG9mIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSAnXycsCiAgICBhbmQgdGhlIHJlc3VsdCBpcyBhbHdheXMgbG93ZXJjYXNlZC4KICAgICIiIgogICAgcmV0dXJuIHJlLnN1YigiW15BLVphLXowLTkuLV0rIiwgIl8iLCBleHRyYSkubG93ZXIoKQoKCmRlZiBpbnZhbGlkX21hcmtlcih0ZXh0KToKICAgICIiIgogICAgVmFsaWRhdGUgdGV4dCBhcyBhIFBFUCA1MDggZW52aXJvbm1lbnQgbWFya2VyOyByZXR1cm4gYW4gZXhjZXB0aW9uCiAgICBpZiBpbnZhbGlkIG9yIEZhbHNlIG90aGVyd2lzZS4KICAgICIiIgogICAgdHJ5OgogICAgICAgIGV2YWx1YXRlX21hcmtlcih0ZXh0KQogICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGU6CiAgICAgICAgZS5maWxlbmFtZSA9IE5vbmUKICAgICAgICBlLmxpbmVubyA9IE5vbmUKICAgICAgICByZXR1cm4gZQogICAgcmV0dXJuIEZhbHNlCgoKZGVmIGV2YWx1YXRlX21hcmtlcih0ZXh0LCBleHRyYT1Ob25lKToKICAgICIiIgogICAgRXZhbHVhdGUgYSBQRVAgNTA4IGVudmlyb25tZW50IG1hcmtlci4KICAgIFJldHVybiBhIGJvb2xlYW4gaW5kaWNhdGluZyB0aGUgbWFya2VyIHJlc3VsdCBpbiB0aGlzIGVudmlyb25tZW50LgogICAgUmFpc2UgU3ludGF4RXJyb3IgaWYgbWFya2VyIGlzIGludmFsaWQuCgogICAgVGhpcyBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSAncHlwYXJzaW5nJyBtb2R1bGUuCiAgICAiIiIKICAgIHRyeToKICAgICAgICBtYXJrZXIgPSBwYWNrYWdpbmcubWFya2Vycy5NYXJrZXIodGV4dCkKICAgICAgICByZXR1cm4gbWFya2VyLmV2YWx1YXRlKCkKICAgIGV4Y2VwdCBwYWNrYWdpbmcubWFya2Vycy5JbnZhbGlkTWFya2VyIGFzIGU6CiAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoZSkKCgpkZWYgeWllbGRfbGluZXMoc3Rycyk6CiAgICAiIiJZaWVsZCBub24tZW1wdHkvbm9uLWNvbW1lbnQgbGluZXMgb2YgYSBzdHJpbmcgb3Igc2VxdWVuY2UiIiIKICAgIGlmIGlzaW5zdGFuY2Uoc3Rycywgc3RyKToKICAgICAgICBmb3IgcyBpbiBzdHJzLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQogICAgICAgICAgICAjIHNraXAgYmxhbmsgbGluZXMvY29tbWVudHMKICAgICAgICAgICAgaWYgcyBhbmQgbm90IHMuc3RhcnRzd2l0aCgiIyIpOgogICAgICAgICAgICAgICAgeWllbGQgcwogICAgZWxzZToKICAgICAgICBmb3Igc3MgaW4gc3RyczoKICAgICAgICAgICAgZm9yIHMgaW4geWllbGRfbGluZXMoc3MpOgogICAgICAgICAgICAgICAgeWllbGQgcwoKCmRlZiBfcmVtb3ZlX21kNV9mcmFnbWVudChsb2NhdGlvbik6CiAgICBpZiBub3QgbG9jYXRpb246CiAgICAgICAgcmV0dXJuICIiCiAgICBwYXJzZWQgPSB1cmxsaWIucGFyc2UudXJscGFyc2UobG9jYXRpb24pCiAgICBpZiBwYXJzZWRbLTFdLnN0YXJ0c3dpdGgoIm1kNT0iKToKICAgICAgICByZXR1cm4gdXJsbGliLnBhcnNlLnVybHVucGFyc2UocGFyc2VkWzotMV0gKyAoIiIsKSkKICAgIHJldHVybiBsb2NhdGlvbgoKCmRlZiBfdmVyc2lvbl9mcm9tX2ZpbGUobGluZXMpOgogICAgIiIiCiAgICBHaXZlbiBhbiBpdGVyYWJsZSBvZiBsaW5lcyBmcm9tIGEgTWV0YWRhdGEgZmlsZSwgcmV0dXJuCiAgICB0aGUgdmFsdWUgb2YgdGhlIFZlcnNpb24gZmllbGQsIGlmIHByZXNlbnQsIG9yIE5vbmUgb3RoZXJ3aXNlLgogICAgIiIiCgogICAgZGVmIGlzX3ZlcnNpb25fbGluZShsaW5lKToKICAgICAgICByZXR1cm4gbGluZS5sb3dlcigpLnN0YXJ0c3dpdGgoInZlcnNpb246IikKCiAgICB2ZXJzaW9uX2xpbmVzID0gZmlsdGVyKGlzX3ZlcnNpb25fbGluZSwgbGluZXMpCiAgICBsaW5lID0gbmV4dChpdGVyKHZlcnNpb25fbGluZXMpLCAiIikKICAgIF8sIF8sIHZhbHVlID0gbGluZS5wYXJ0aXRpb24oIjoiKQogICAgcmV0dXJuIHNhZmVfdmVyc2lvbih2YWx1ZS5zdHJpcCgpKSBvciBOb25lCgoKY2xhc3MgRGlzdHJpYnV0aW9uOgogICAgIiIiV3JhcCBhbiBhY3R1YWwgb3IgcG90ZW50aWFsIHN5cy5wYXRoIGVudHJ5IHcvbWV0YWRhdGEiIiIKCiAgICBQS0dfSU5GTyA9ICJQS0ctSU5GTyIKCiAgICBkZWYgX19pbml0X18oCiAgICAgICAgc2VsZiwKICAgICAgICBsb2NhdGlvbj1Ob25lLAogICAgICAgIG1ldGFkYXRhPU5vbmUsCiAgICAgICAgcHJvamVjdF9uYW1lPU5vbmUsCiAgICAgICAgdmVyc2lvbj1Ob25lLAogICAgICAgIHB5X3ZlcnNpb249UFlfTUFKT1IsCiAgICAgICAgcGxhdGZvcm09Tm9uZSwKICAgICAgICBwcmVjZWRlbmNlPUVHR19ESVNULAogICAgKToKICAgICAgICBzZWxmLnByb2plY3RfbmFtZSA9IHNhZmVfbmFtZShwcm9qZWN0X25hbWUgb3IgIlVua25vd24iKQogICAgICAgIGlmIHZlcnNpb24gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBzYWZlX3ZlcnNpb24odmVyc2lvbikKICAgICAgICBzZWxmLnB5X3ZlcnNpb24gPSBweV92ZXJzaW9uCiAgICAgICAgc2VsZi5wbGF0Zm9ybSA9IHBsYXRmb3JtCiAgICAgICAgc2VsZi5sb2NhdGlvbiA9IGxvY2F0aW9uCiAgICAgICAgc2VsZi5wcmVjZWRlbmNlID0gcHJlY2VkZW5jZQogICAgICAgIHNlbGYuX3Byb3ZpZGVyID0gbWV0YWRhdGEKCiAgICBAcHJvcGVydHkKICAgIGRlZiBoYXNoY21wKHNlbGYpOgogICAgICAgIHJldHVybiAoCiAgICAgICAgICAgIHNlbGYucGFyc2VkX3ZlcnNpb24sCiAgICAgICAgICAgIHNlbGYucHJlY2VkZW5jZSwKICAgICAgICAgICAgc2VsZi5rZXksCiAgICAgICAgICAgIF9yZW1vdmVfbWQ1X2ZyYWdtZW50KHNlbGYubG9jYXRpb24pLAogICAgICAgICAgICBzZWxmLnB5X3ZlcnNpb24gb3IgIiIsCiAgICAgICAgICAgIHNlbGYucGxhdGZvcm0gb3IgIiIsCiAgICAgICAgKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaChzZWxmLmhhc2hjbXApCgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIHNlbGYuaGFzaGNtcCA8IG90aGVyLmhhc2hjbXAKCiAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5oYXNoY21wIDw9IG90aGVyLmhhc2hjbXAKCiAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5oYXNoY21wID4gb3RoZXIuaGFzaGNtcAoKICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBzZWxmLmhhc2hjbXAgPj0gb3RoZXIuaGFzaGNtcAoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CiAgICAgICAgICAgICMgSXQncyBub3QgYSBEaXN0cmlidXRpb24sIHNvIHRoZXkgYXJlIG5vdCBlcXVhbAogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gc2VsZi5oYXNoY21wID09IG90aGVyLmhhc2hjbXAKCiAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gbm90IHNlbGYgPT0gb3RoZXIKCiAgICAjIFRoZXNlIHByb3BlcnRpZXMgaGF2ZSB0byBiZSBsYXp5IHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBsb2FkIGFueQogICAgIyBtZXRhZGF0YSB1bnRpbC91bmxlc3MgaXQncyBhY3R1YWxseSBuZWVkZWQuICAoaS5lLiwgc29tZSBkaXN0cmlidXRpb25zCiAgICAjIG1heSBub3Qga25vdyB0aGVpciBuYW1lIG9yIHZlcnNpb24gd2l0aG91dCBsb2FkaW5nIFBLRy1JTkZPKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGtleShzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9rZXkKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHNlbGYuX2tleSA9IGtleSA9IHNlbGYucHJvamVjdF9uYW1lLmxvd2VyKCkKICAgICAgICAgICAgcmV0dXJuIGtleQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBhcnNlZF92ZXJzaW9uKHNlbGYpOgogICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICJfcGFyc2VkX3ZlcnNpb24iKToKICAgICAgICAgICAgc2VsZi5fcGFyc2VkX3ZlcnNpb24gPSBwYXJzZV92ZXJzaW9uKHNlbGYudmVyc2lvbikKCiAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlZF92ZXJzaW9uCgogICAgQHByb3BlcnR5CiAgICBkZWYgdmVyc2lvbihzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICB2ZXJzaW9uID0gc2VsZi5fZ2V0X3ZlcnNpb24oKQogICAgICAgICAgICBpZiB2ZXJzaW9uIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBwYXRoID0gc2VsZi5fZ2V0X21ldGFkYXRhX3BhdGhfZm9yX2Rpc3BsYXkoc2VsZi5QS0dfSU5GTykKICAgICAgICAgICAgICAgIG1zZyA9ICgiTWlzc2luZyAnVmVyc2lvbjonIGhlYWRlciBhbmQvb3Ige30gZmlsZSBhdCBwYXRoOiB7fSIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICBzZWxmLlBLR19JTkZPLCBwYXRoCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZywgc2VsZikKCiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uCgogICAgQHByb3BlcnR5CiAgICBkZWYgX2RlcF9tYXAoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgQSBtYXAgb2YgZXh0cmEgdG8gaXRzIGxpc3Qgb2YgKGRpcmVjdCkgcmVxdWlyZW1lbnRzCiAgICAgICAgZm9yIHRoaXMgZGlzdHJpYnV0aW9uLCBpbmNsdWRpbmcgdGhlIG51bGwgZXh0cmEuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fX2RlcF9tYXAKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHNlbGYuX19kZXBfbWFwID0gc2VsZi5fZmlsdGVyX2V4dHJhcyhzZWxmLl9idWlsZF9kZXBfbWFwKCkpCiAgICAgICAgcmV0dXJuIHNlbGYuX19kZXBfbWFwCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9maWx0ZXJfZXh0cmFzKGRtKToKICAgICAgICAiIiIKICAgICAgICBHaXZlbiBhIG1hcHBpbmcgb2YgZXh0cmFzIHRvIGRlcGVuZGVuY2llcywgc3RyaXAgb2ZmCiAgICAgICAgZW52aXJvbm1lbnQgbWFya2VycyBhbmQgZmlsdGVyIG91dCBhbnkgZGVwZW5kZW5jaWVzCiAgICAgICAgbm90IG1hdGNoaW5nIHRoZSBtYXJrZXJzLgogICAgICAgICIiIgogICAgICAgIGZvciBleHRyYSBpbiBsaXN0KGZpbHRlcihOb25lLCBkbSkpOgogICAgICAgICAgICBuZXdfZXh0cmEgPSBleHRyYQogICAgICAgICAgICByZXFzID0gZG0ucG9wKGV4dHJhKQogICAgICAgICAgICBuZXdfZXh0cmEsIF8sIG1hcmtlciA9IGV4dHJhLnBhcnRpdGlvbigiOiIpCiAgICAgICAgICAgIGZhaWxzX21hcmtlciA9IG1hcmtlciBhbmQgKAogICAgICAgICAgICAgICAgaW52YWxpZF9tYXJrZXIobWFya2VyKSBvciBub3QgZXZhbHVhdGVfbWFya2VyKG1hcmtlcikKICAgICAgICAgICAgKQogICAgICAgICAgICBpZiBmYWlsc19tYXJrZXI6CiAgICAgICAgICAgICAgICByZXFzID0gW10KICAgICAgICAgICAgbmV3X2V4dHJhID0gc2FmZV9leHRyYShuZXdfZXh0cmEpIG9yIE5vbmUKCiAgICAgICAgICAgIGRtLnNldGRlZmF1bHQobmV3X2V4dHJhLCBbXSkuZXh0ZW5kKHJlcXMpCiAgICAgICAgcmV0dXJuIGRtCgogICAgZGVmIF9idWlsZF9kZXBfbWFwKHNlbGYpOgogICAgICAgIGRtID0ge30KICAgICAgICBmb3IgbmFtZSBpbiAicmVxdWlyZXMudHh0IiwgImRlcGVuZHMudHh0IjoKICAgICAgICAgICAgZm9yIGV4dHJhLCByZXFzIGluIHNwbGl0X3NlY3Rpb25zKHNlbGYuX2dldF9tZXRhZGF0YShuYW1lKSk6CiAgICAgICAgICAgICAgICBkbS5zZXRkZWZhdWx0KGV4dHJhLCBbXSkuZXh0ZW5kKHBhcnNlX3JlcXVpcmVtZW50cyhyZXFzKSkKICAgICAgICByZXR1cm4gZG0KCiAgICBkZWYgcmVxdWlyZXMoc2VsZiwgZXh0cmFzPSgpKToKICAgICAgICAiIiJMaXN0IG9mIFJlcXVpcmVtZW50cyBuZWVkZWQgZm9yIHRoaXMgZGlzdHJvIGlmIGBleHRyYXNgIGFyZSB1c2VkIiIiCiAgICAgICAgZG0gPSBzZWxmLl9kZXBfbWFwCiAgICAgICAgZGVwcyA9IFtdCiAgICAgICAgZGVwcy5leHRlbmQoZG0uZ2V0KE5vbmUsICgpKSkKICAgICAgICBmb3IgZXh0IGluIGV4dHJhczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZGVwcy5leHRlbmQoZG1bc2FmZV9leHRyYShleHQpXSkKICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgVW5rbm93bkV4dHJhKCIlcyBoYXMgbm8gc3VjaCBleHRyYSBmZWF0dXJlICVyIiAlIChzZWxmLCBleHQpKQogICAgICAgIHJldHVybiBkZXBzCgogICAgZGVmIF9nZXRfbWV0YWRhdGFfcGF0aF9mb3JfZGlzcGxheShzZWxmLCBuYW1lKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIHBhdGggdG8gdGhlIGdpdmVuIG1ldGFkYXRhIGZpbGUsIGlmIGF2YWlsYWJsZS4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgV2UgbmVlZCB0byBhY2Nlc3MgX2dldF9tZXRhZGF0YV9wYXRoKCkgb24gdGhlIHByb3ZpZGVyIG9iamVjdAogICAgICAgICAgICAjIGRpcmVjdGx5IHJhdGhlciB0aGFuIHRocm91Z2ggdGhpcyBjbGFzcydzIF9fZ2V0YXR0cl9fKCkKICAgICAgICAgICAgIyBzaW5jZSBfZ2V0X21ldGFkYXRhX3BhdGgoKSBpcyBtYXJrZWQgcHJpdmF0ZS4KICAgICAgICAgICAgcGF0aCA9IHNlbGYuX3Byb3ZpZGVyLl9nZXRfbWV0YWRhdGFfcGF0aChuYW1lKQoKICAgICAgICAjIEhhbmRsZSBleGNlcHRpb25zIGUuZy4gaW4gY2FzZSB0aGUgZGlzdHJpYnV0aW9uJ3MgbWV0YWRhdGEKICAgICAgICAjIHByb3ZpZGVyIGRvZXNuJ3Qgc3VwcG9ydCBfZ2V0X21ldGFkYXRhX3BhdGgoKS4KICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICByZXR1cm4gIltjb3VsZCBub3QgZGV0ZWN0XSIKCiAgICAgICAgcmV0dXJuIHBhdGgKCiAgICBkZWYgX2dldF9tZXRhZGF0YShzZWxmLCBuYW1lKToKICAgICAgICBpZiBzZWxmLmhhc19tZXRhZGF0YShuYW1lKToKICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5nZXRfbWV0YWRhdGFfbGluZXMobmFtZSk6CiAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCgogICAgZGVmIF9nZXRfdmVyc2lvbihzZWxmKToKICAgICAgICBsaW5lcyA9IHNlbGYuX2dldF9tZXRhZGF0YShzZWxmLlBLR19JTkZPKQogICAgICAgIHZlcnNpb24gPSBfdmVyc2lvbl9mcm9tX2ZpbGUobGluZXMpCgogICAgICAgIHJldHVybiB2ZXJzaW9uCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYubG9jYXRpb246CiAgICAgICAgICAgIHJldHVybiAiJXMgKCVzKSIgJSAoc2VsZiwgc2VsZi5sb2NhdGlvbikKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB2ZXJzaW9uID0gZ2V0YXR0cihzZWxmLCAidmVyc2lvbiIsIE5vbmUpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHZlcnNpb24gPSBOb25lCiAgICAgICAgdmVyc2lvbiA9IHZlcnNpb24gb3IgIlt1bmtub3duIHZlcnNpb25dIgogICAgICAgIHJldHVybiAiJXMgJXMiICUgKHNlbGYucHJvamVjdF9uYW1lLCB2ZXJzaW9uKQoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKICAgICAgICAiIiJEZWxlZ2F0ZSBhbGwgdW5yZWNvZ25pemVkIHB1YmxpYyBhdHRyaWJ1dGVzIHRvIC5tZXRhZGF0YSBwcm92aWRlciIiIgogICAgICAgIGlmIGF0dHIuc3RhcnRzd2l0aCgiXyIpOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuX3Byb3ZpZGVyLCBhdHRyKQoKICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBsaXN0KAogICAgICAgICAgICBzZXQoc3VwZXIoRGlzdHJpYnV0aW9uLCBzZWxmKS5fX2Rpcl9fKCkpCiAgICAgICAgICAgIHwgc2V0KGF0dHIgZm9yIGF0dHIgaW4gc2VsZi5fcHJvdmlkZXIuX19kaXJfXygpIGlmIG5vdCBhdHRyLnN0YXJ0c3dpdGgoIl8iKSkKICAgICAgICApCgogICAgaWYgbm90IGhhc2F0dHIob2JqZWN0LCAiX19kaXJfXyIpOgogICAgICAgICMgcHl0aG9uIDIuNyBub3Qgc3VwcG9ydGVkCiAgICAgICAgZGVsIF9fZGlyX18KCiAgICBAcHJvcGVydHkKICAgIGRlZiBleHRyYXMoc2VsZik6CiAgICAgICAgcmV0dXJuIFtkZXAgZm9yIGRlcCBpbiBzZWxmLl9kZXBfbWFwIGlmIGRlcF0KCgpjbGFzcyBEaXN0SW5mb0Rpc3RyaWJ1dGlvbihEaXN0cmlidXRpb24pOgogICAgIiIiCiAgICBXcmFwIGFuIGFjdHVhbCBvciBwb3RlbnRpYWwgc3lzLnBhdGggZW50cnkKICAgIHcvbWV0YWRhdGEsIC5kaXN0LWluZm8gc3R5bGUuCiAgICAiIiIKCiAgICBQS0dfSU5GTyA9ICJNRVRBREFUQSIKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfcGFyc2VkX3BrZ19pbmZvKHNlbGYpOgogICAgICAgICIiIlBhcnNlIGFuZCBjYWNoZSBtZXRhZGF0YSIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BrZ19pbmZvCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBtZXRhZGF0YSA9IHNlbGYuZ2V0X21ldGFkYXRhKHNlbGYuUEtHX0lORk8pCiAgICAgICAgICAgIHNlbGYuX3BrZ19pbmZvID0gZW1haWwucGFyc2VyLlBhcnNlcigpLnBhcnNlc3RyKG1ldGFkYXRhKQogICAgICAgICAgICByZXR1cm4gc2VsZi5fcGtnX2luZm8KCiAgICBAcHJvcGVydHkKICAgIGRlZiBfZGVwX21hcChzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGVwX21hcAogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgc2VsZi5fX2RlcF9tYXAgPSBzZWxmLl9jb21wdXRlX2RlcGVuZGVuY2llcygpCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGVwX21hcAoKICAgIGRlZiBfY29tcHV0ZV9kZXBlbmRlbmNpZXMoc2VsZik6CiAgICAgICAgIiIiUmVjb21wdXRlIHRoaXMgZGlzdHJpYnV0aW9uJ3MgZGVwZW5kZW5jaWVzLiIiIgogICAgICAgIGRtID0gc2VsZi5fX2RlcF9tYXAgPSB7Tm9uZTogW119CgogICAgICAgIHJlcXMgPSBbXQogICAgICAgICMgSW5jbHVkaW5nIGFueSBjb25kaXRpb24gZXhwcmVzc2lvbnMKICAgICAgICBmb3IgcmVxIGluIHNlbGYuX3BhcnNlZF9wa2dfaW5mby5nZXRfYWxsKCJSZXF1aXJlcy1EaXN0Iikgb3IgW106CiAgICAgICAgICAgIHJlcXMuZXh0ZW5kKHBhcnNlX3JlcXVpcmVtZW50cyhyZXEpKQoKICAgICAgICBkZWYgcmVxc19mb3JfZXh0cmEoZXh0cmEpOgogICAgICAgICAgICBmb3IgcmVxIGluIHJlcXM6CiAgICAgICAgICAgICAgICBpZiBub3QgcmVxLm1hcmtlciBvciByZXEubWFya2VyLmV2YWx1YXRlKHsiZXh0cmEiOiBleHRyYX0pOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIHJlcQoKICAgICAgICBjb21tb24gPSBmcm96ZW5zZXQocmVxc19mb3JfZXh0cmEoTm9uZSkpCiAgICAgICAgZG1bTm9uZV0uZXh0ZW5kKGNvbW1vbikKCiAgICAgICAgZm9yIGV4dHJhIGluIHNlbGYuX3BhcnNlZF9wa2dfaW5mby5nZXRfYWxsKCJQcm92aWRlcy1FeHRyYSIpIG9yIFtdOgogICAgICAgICAgICBzX2V4dHJhID0gc2FmZV9leHRyYShleHRyYS5zdHJpcCgpKQogICAgICAgICAgICBkbVtzX2V4dHJhXSA9IGxpc3QoZnJvemVuc2V0KHJlcXNfZm9yX2V4dHJhKGV4dHJhKSkgLSBjb21tb24pCgogICAgICAgIHJldHVybiBkbQoKCmNsYXNzIFJlcXVpcmVtZW50UGFyc2VFcnJvcihWYWx1ZUVycm9yKToKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiICIuam9pbihzZWxmLmFyZ3MpCgoKZGVmIHBhcnNlX3JlcXVpcmVtZW50cyhzdHJzKToKICAgICIiIllpZWxkIGBgUmVxdWlyZW1lbnRgYCBvYmplY3RzIGZvciBlYWNoIHNwZWNpZmljYXRpb24gaW4gYHN0cnNgCgogICAgYHN0cnNgIG11c3QgYmUgYSBzdHJpbmcsIG9yIGEgKHBvc3NpYmx5LW5lc3RlZCkgaXRlcmFibGUgdGhlcmVvZi4KICAgICIiIgogICAgIyBjcmVhdGUgYSBzdGVwcGFibGUgaXRlcmF0b3IsIHNvIHdlIGNhbiBoYW5kbGUgXC1jb250aW51YXRpb25zCiAgICBsaW5lcyA9IGl0ZXIoeWllbGRfbGluZXMoc3RycykpCgogICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgIyBEcm9wIGNvbW1lbnRzIC0tIGEgaGFzaCB3aXRob3V0IGEgc3BhY2UgbWF5IGJlIGluIGEgVVJMLgogICAgICAgIGlmICIgIyIgaW4gbGluZToKICAgICAgICAgICAgbGluZSA9IGxpbmVbOiBsaW5lLmZpbmQoIiAjIildCiAgICAgICAgIyBJZiB0aGVyZSBpcyBhIGxpbmUgY29udGludWF0aW9uLCBkcm9wIGl0LCBhbmQgYXBwZW5kIHRoZSBuZXh0IGxpbmUuCiAgICAgICAgaWYgbGluZS5lbmRzd2l0aCgiXFwiKToKICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXS5zdHJpcCgpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGxpbmUgKz0gbmV4dChsaW5lcykKICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICB5aWVsZCBSZXF1aXJlbWVudChsaW5lKQoKCmNsYXNzIFJlcXVpcmVtZW50KHBhY2thZ2luZy5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVpcmVtZW50X3N0cmluZyk6CiAgICAgICAgIiIiRE8gTk9UIENBTEwgVEhJUyBVTkRPQ1VNRU5URUQgTUVUSE9EOyB1c2UgUmVxdWlyZW1lbnQucGFyc2UoKSEiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHN1cGVyKFJlcXVpcmVtZW50LCBzZWxmKS5fX2luaXRfXyhyZXF1aXJlbWVudF9zdHJpbmcpCiAgICAgICAgZXhjZXB0IHBhY2thZ2luZy5yZXF1aXJlbWVudHMuSW52YWxpZFJlcXVpcmVtZW50IGFzIGU6CiAgICAgICAgICAgIHJhaXNlIFJlcXVpcmVtZW50UGFyc2VFcnJvcihzdHIoZSkpCiAgICAgICAgc2VsZi51bnNhZmVfbmFtZSA9IHNlbGYubmFtZQogICAgICAgIHByb2plY3RfbmFtZSA9IHNhZmVfbmFtZShzZWxmLm5hbWUpCiAgICAgICAgc2VsZi5wcm9qZWN0X25hbWUsIHNlbGYua2V5ID0gcHJvamVjdF9uYW1lLCBwcm9qZWN0X25hbWUubG93ZXIoKQogICAgICAgIHNlbGYuZXh0cmFzID0gdHVwbGUobWFwKHNhZmVfZXh0cmEsIHNlbGYuZXh0cmFzKSkKICAgICAgICBzZWxmLmhhc2hDbXAgPSAoCiAgICAgICAgICAgIHNlbGYua2V5LAogICAgICAgICAgICBzZWxmLnVybCwKICAgICAgICAgICAgc2VsZi5zcGVjaWZpZXIsCiAgICAgICAgICAgIGZyb3plbnNldChzZWxmLmV4dHJhcyksCiAgICAgICAgICAgIHN0cihzZWxmLm1hcmtlcikgaWYgc2VsZi5tYXJrZXIgZWxzZSBOb25lLAogICAgICAgICkKICAgICAgICBzZWxmLl9faGFzaCA9IGhhc2goc2VsZi5oYXNoQ21wKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBSZXF1aXJlbWVudCkgYW5kIHNlbGYuaGFzaENtcCA9PSBvdGhlci5oYXNoQ21wCgogICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIG5vdCBzZWxmID09IG90aGVyCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIERpc3RyaWJ1dGlvbik6CiAgICAgICAgICAgIGlmIGl0ZW0ua2V5ICE9IHNlbGYua2V5OgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgICAgICBpdGVtID0gaXRlbS52ZXJzaW9uCgogICAgICAgICMgQWxsb3cgcHJlcmVsZWFzZXMgYWx3YXlzIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBwcmV2aW91cyBiZWhhdmlvciBvZgogICAgICAgICMgdGhpcyBtZXRob2QuIEluIHRoZSBmdXR1cmUgdGhpcyBzaG91bGQgYmUgc21hcnRlciBhbmQgZm9sbG93IFBFUCA0NDAKICAgICAgICAjIG1vcmUgYWNjdXJhdGVseS4KICAgICAgICByZXR1cm4gc2VsZi5zcGVjaWZpZXIuY29udGFpbnMoaXRlbSwgcHJlcmVsZWFzZXM9VHJ1ZSkKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19oYXNoCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiUmVxdWlyZW1lbnQucGFyc2UoJXIpIiAlIHN0cihzZWxmKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBwYXJzZShzKToKICAgICAgICAocmVxLCkgPSBwYXJzZV9yZXF1aXJlbWVudHMocykKICAgICAgICByZXR1cm4gcmVxCgoKZGVmIHNwbGl0X3NlY3Rpb25zKHMpOgogICAgIiIiU3BsaXQgYSBzdHJpbmcgb3IgaXRlcmFibGUgdGhlcmVvZiBpbnRvIChzZWN0aW9uLCBjb250ZW50KSBwYWlycwoKICAgIEVhY2ggYGBzZWN0aW9uYGAgaXMgYSBzdHJpcHBlZCB2ZXJzaW9uIG9mIHRoZSBzZWN0aW9uIGhlYWRlciAoIltzZWN0aW9uXSIpCiAgICBhbmQgZWFjaCBgYGNvbnRlbnRgYCBpcyBhIGxpc3Qgb2Ygc3RyaXBwZWQgbGluZXMgZXhjbHVkaW5nIGJsYW5rIGxpbmVzIGFuZAogICAgY29tbWVudC1vbmx5IGxpbmVzLiAgSWYgdGhlcmUgYXJlIGFueSBzdWNoIGxpbmVzIGJlZm9yZSB0aGUgZmlyc3Qgc2VjdGlvbgogICAgaGVhZGVyLCB0aGV5J3JlIHJldHVybmVkIGluIGEgZmlyc3QgYGBzZWN0aW9uYGAgb2YgYGBOb25lYGAuCiAgICAiIiIKICAgIHNlY3Rpb24gPSBOb25lCiAgICBjb250ZW50ID0gW10KICAgIGZvciBsaW5lIGluIHlpZWxkX2xpbmVzKHMpOgogICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiWyIpOgogICAgICAgICAgICBpZiBsaW5lLmVuZHN3aXRoKCJdIik6CiAgICAgICAgICAgICAgICBpZiBzZWN0aW9uIG9yIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VjdGlvbiwgY29udGVudAogICAgICAgICAgICAgICAgc2VjdGlvbiA9IGxpbmVbMTotMV0uc3RyaXAoKQogICAgICAgICAgICAgICAgY29udGVudCA9IFtdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHNlY3Rpb24gaGVhZGluZyIsIGxpbmUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZSkKCiAgICAjIHdyYXAgdXAgbGFzdCBzZWdtZW50CiAgICB5aWVsZCBzZWN0aW9uLCBjb250ZW50CgoKIyBTaWxlbmNlIHRoZSBQRVA0NDBXYXJuaW5nIGJ5IGRlZmF1bHQsIHNvIHRoYXQgZW5kIHVzZXJzIGRvbid0IGdldCBoaXQgYnkgaXQKIyByYW5kb21seSBqdXN0IGJlY2F1c2UgdGhleSB1c2UgcGtnX3Jlc291cmNlcy4gV2Ugd2FudCB0byBhcHBlbmQgdGhlIHJ1bGUKIyBiZWNhdXNlIHdlIHdhbnQgZWFybGllciB1c2VzIG9mIGZpbHRlcndhcm5pbmdzIHRvIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoaXMKIyBvbmUuCndhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJpZ25vcmUiLCBjYXRlZ29yeT1QRVA0NDBXYXJuaW5nLCBhcHBlbmQ9VHJ1ZSkKUEsDBBQAAAAAALsro1aRaTADVUEAAFVBAAAgAAAAbWljcm9waXAtMC4zLjAuZGlzdC1pbmZvL0xJQ0VOU0VNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4wCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjEuIERlZmluaXRpb25zCi0tLS0tLS0tLS0tLS0tCgoxLjEuICJDb250cmlidXRvciIKICAgIG1lYW5zIGVhY2ggaW5kaXZpZHVhbCBvciBsZWdhbCBlbnRpdHkgdGhhdCBjcmVhdGVzLCBjb250cmlidXRlcyB0bwogICAgdGhlIGNyZWF0aW9uIG9mLCBvciBvd25zIENvdmVyZWQgU29mdHdhcmUuCgoxLjIuICJDb250cmlidXRvciBWZXJzaW9uIgogICAgbWVhbnMgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBDb250cmlidXRpb25zIG9mIG90aGVycyAoaWYgYW55KSB1c2VkCiAgICBieSBhIENvbnRyaWJ1dG9yIGFuZCB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IncyBDb250cmlidXRpb24uCgoxLjMuICJDb250cmlidXRpb24iCiAgICBtZWFucyBDb3ZlcmVkIFNvZnR3YXJlIG9mIGEgcGFydGljdWxhciBDb250cmlidXRvci4KCjEuNC4gIkNvdmVyZWQgU29mdHdhcmUiCiAgICBtZWFucyBTb3VyY2UgQ29kZSBGb3JtIHRvIHdoaWNoIHRoZSBpbml0aWFsIENvbnRyaWJ1dG9yIGhhcyBhdHRhY2hlZAogICAgdGhlIG5vdGljZSBpbiBFeGhpYml0IEEsIHRoZSBFeGVjdXRhYmxlIEZvcm0gb2Ygc3VjaCBTb3VyY2UgQ29kZQogICAgRm9ybSwgYW5kIE1vZGlmaWNhdGlvbnMgb2Ygc3VjaCBTb3VyY2UgQ29kZSBGb3JtLCBpbiBlYWNoIGNhc2UKICAgIGluY2x1ZGluZyBwb3J0aW9ucyB0aGVyZW9mLgoKMS41LiAiSW5jb21wYXRpYmxlIFdpdGggU2Vjb25kYXJ5IExpY2Vuc2VzIgogICAgbWVhbnMKCiAgICAoYSkgdGhhdCB0aGUgaW5pdGlhbCBDb250cmlidXRvciBoYXMgYXR0YWNoZWQgdGhlIG5vdGljZSBkZXNjcmliZWQKICAgICAgICBpbiBFeGhpYml0IEIgdG8gdGhlIENvdmVyZWQgU29mdHdhcmU7IG9yCgogICAgKGIpIHRoYXQgdGhlIENvdmVyZWQgU29mdHdhcmUgd2FzIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZgogICAgICAgIHZlcnNpb24gMS4xIG9yIGVhcmxpZXIgb2YgdGhlIExpY2Vuc2UsIGJ1dCBub3QgYWxzbyB1bmRlciB0aGUKICAgICAgICB0ZXJtcyBvZiBhIFNlY29uZGFyeSBMaWNlbnNlLgoKMS42LiAiRXhlY3V0YWJsZSBGb3JtIgogICAgbWVhbnMgYW55IGZvcm0gb2YgdGhlIHdvcmsgb3RoZXIgdGhhbiBTb3VyY2UgQ29kZSBGb3JtLgoKMS43LiAiTGFyZ2VyIFdvcmsiCiAgICBtZWFucyBhIHdvcmsgdGhhdCBjb21iaW5lcyBDb3ZlcmVkIFNvZnR3YXJlIHdpdGggb3RoZXIgbWF0ZXJpYWwsIGluCiAgICBhIHNlcGFyYXRlIGZpbGUgb3IgZmlsZXMsIHRoYXQgaXMgbm90IENvdmVyZWQgU29mdHdhcmUuCgoxLjguICJMaWNlbnNlIgogICAgbWVhbnMgdGhpcyBkb2N1bWVudC4KCjEuOS4gIkxpY2Vuc2FibGUiCiAgICBtZWFucyBoYXZpbmcgdGhlIHJpZ2h0IHRvIGdyYW50LCB0byB0aGUgbWF4aW11bSBleHRlbnQgcG9zc2libGUsCiAgICB3aGV0aGVyIGF0IHRoZSB0aW1lIG9mIHRoZSBpbml0aWFsIGdyYW50IG9yIHN1YnNlcXVlbnRseSwgYW55IGFuZAogICAgYWxsIG9mIHRoZSByaWdodHMgY29udmV5ZWQgYnkgdGhpcyBMaWNlbnNlLgoKMS4xMC4gIk1vZGlmaWNhdGlvbnMiCiAgICBtZWFucyBhbnkgb2YgdGhlIGZvbGxvd2luZzoKCiAgICAoYSkgYW55IGZpbGUgaW4gU291cmNlIENvZGUgRm9ybSB0aGF0IHJlc3VsdHMgZnJvbSBhbiBhZGRpdGlvbiB0bywKICAgICAgICBkZWxldGlvbiBmcm9tLCBvciBtb2RpZmljYXRpb24gb2YgdGhlIGNvbnRlbnRzIG9mIENvdmVyZWQKICAgICAgICBTb2Z0d2FyZTsgb3IKCiAgICAoYikgYW55IG5ldyBmaWxlIGluIFNvdXJjZSBDb2RlIEZvcm0gdGhhdCBjb250YWlucyBhbnkgQ292ZXJlZAogICAgICAgIFNvZnR3YXJlLgoKMS4xMS4gIlBhdGVudCBDbGFpbXMiIG9mIGEgQ29udHJpYnV0b3IKICAgIG1lYW5zIGFueSBwYXRlbnQgY2xhaW0ocyksIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24sIG1ldGhvZCwKICAgIHByb2Nlc3MsIGFuZCBhcHBhcmF0dXMgY2xhaW1zLCBpbiBhbnkgcGF0ZW50IExpY2Vuc2FibGUgYnkgc3VjaAogICAgQ29udHJpYnV0b3IgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQsIGJ1dCBmb3IgdGhlIGdyYW50IG9mIHRoZQogICAgTGljZW5zZSwgYnkgdGhlIG1ha2luZywgdXNpbmcsIHNlbGxpbmcsIG9mZmVyaW5nIGZvciBzYWxlLCBoYXZpbmcKICAgIG1hZGUsIGltcG9ydCwgb3IgdHJhbnNmZXIgb2YgZWl0aGVyIGl0cyBDb250cmlidXRpb25zIG9yIGl0cwogICAgQ29udHJpYnV0b3IgVmVyc2lvbi4KCjEuMTIuICJTZWNvbmRhcnkgTGljZW5zZSIKICAgIG1lYW5zIGVpdGhlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMi4wLCB0aGUgR05VCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAyLjEsIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwKICAgIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDMuMCwgb3IgYW55IGxhdGVyIHZlcnNpb25zIG9mIHRob3NlCiAgICBsaWNlbnNlcy4KCjEuMTMuICJTb3VyY2UgQ29kZSBGb3JtIgogICAgbWVhbnMgdGhlIGZvcm0gb2YgdGhlIHdvcmsgcHJlZmVycmVkIGZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucy4KCjEuMTQuICJZb3UiIChvciAiWW91ciIpCiAgICBtZWFucyBhbiBpbmRpdmlkdWFsIG9yIGEgbGVnYWwgZW50aXR5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMKICAgIExpY2Vuc2UuIEZvciBsZWdhbCBlbnRpdGllcywgIllvdSIgaW5jbHVkZXMgYW55IGVudGl0eSB0aGF0CiAgICBjb250cm9scywgaXMgY29udHJvbGxlZCBieSwgb3IgaXMgdW5kZXIgY29tbW9uIGNvbnRyb2wgd2l0aCBZb3UuIEZvcgogICAgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgbWVhbnMgKGEpIHRoZSBwb3dlciwgZGlyZWN0CiAgICBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LAogICAgd2hldGhlciBieSBjb250cmFjdCBvciBvdGhlcndpc2UsIG9yIChiKSBvd25lcnNoaXAgb2YgbW9yZSB0aGFuCiAgICBmaWZ0eSBwZXJjZW50ICg1MCUpIG9mIHRoZSBvdXRzdGFuZGluZyBzaGFyZXMgb3IgYmVuZWZpY2lhbAogICAgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKMi4gTGljZW5zZSBHcmFudHMgYW5kIENvbmRpdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCjIuMS4gR3JhbnRzCgpFYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgWW91IGEgd29ybGQtd2lkZSwgcm95YWx0eS1mcmVlLApub24tZXhjbHVzaXZlIGxpY2Vuc2U6CgooYSkgdW5kZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyAob3RoZXIgdGhhbiBwYXRlbnQgb3IgdHJhZGVtYXJrKQogICAgTGljZW5zYWJsZSBieSBzdWNoIENvbnRyaWJ1dG9yIHRvIHVzZSwgcmVwcm9kdWNlLCBtYWtlIGF2YWlsYWJsZSwKICAgIG1vZGlmeSwgZGlzcGxheSwgcGVyZm9ybSwgZGlzdHJpYnV0ZSwgYW5kIG90aGVyd2lzZSBleHBsb2l0IGl0cwogICAgQ29udHJpYnV0aW9ucywgZWl0aGVyIG9uIGFuIHVubW9kaWZpZWQgYmFzaXMsIHdpdGggTW9kaWZpY2F0aW9ucywgb3IKICAgIGFzIHBhcnQgb2YgYSBMYXJnZXIgV29yazsgYW5kCgooYikgdW5kZXIgUGF0ZW50IENsYWltcyBvZiBzdWNoIENvbnRyaWJ1dG9yIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIKICAgIGZvciBzYWxlLCBoYXZlIG1hZGUsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciBlaXRoZXIgaXRzCiAgICBDb250cmlidXRpb25zIG9yIGl0cyBDb250cmlidXRvciBWZXJzaW9uLgoKMi4yLiBFZmZlY3RpdmUgRGF0ZQoKVGhlIGxpY2Vuc2VzIGdyYW50ZWQgaW4gU2VjdGlvbiAyLjEgd2l0aCByZXNwZWN0IHRvIGFueSBDb250cmlidXRpb24KYmVjb21lIGVmZmVjdGl2ZSBmb3IgZWFjaCBDb250cmlidXRpb24gb24gdGhlIGRhdGUgdGhlIENvbnRyaWJ1dG9yIGZpcnN0CmRpc3RyaWJ1dGVzIHN1Y2ggQ29udHJpYnV0aW9uLgoKMi4zLiBMaW1pdGF0aW9ucyBvbiBHcmFudCBTY29wZQoKVGhlIGxpY2Vuc2VzIGdyYW50ZWQgaW4gdGhpcyBTZWN0aW9uIDIgYXJlIHRoZSBvbmx5IHJpZ2h0cyBncmFudGVkIHVuZGVyCnRoaXMgTGljZW5zZS4gTm8gYWRkaXRpb25hbCByaWdodHMgb3IgbGljZW5zZXMgd2lsbCBiZSBpbXBsaWVkIGZyb20gdGhlCmRpc3RyaWJ1dGlvbiBvciBsaWNlbnNpbmcgb2YgQ292ZXJlZCBTb2Z0d2FyZSB1bmRlciB0aGlzIExpY2Vuc2UuCk5vdHdpdGhzdGFuZGluZyBTZWN0aW9uIDIuMShiKSBhYm92ZSwgbm8gcGF0ZW50IGxpY2Vuc2UgaXMgZ3JhbnRlZCBieSBhCkNvbnRyaWJ1dG9yOgoKKGEpIGZvciBhbnkgY29kZSB0aGF0IGEgQ29udHJpYnV0b3IgaGFzIHJlbW92ZWQgZnJvbSBDb3ZlcmVkIFNvZnR3YXJlOwogICAgb3IKCihiKSBmb3IgaW5mcmluZ2VtZW50cyBjYXVzZWQgYnk6IChpKSBZb3VyIGFuZCBhbnkgb3RoZXIgdGhpcmQgcGFydHkncwogICAgbW9kaWZpY2F0aW9ucyBvZiBDb3ZlcmVkIFNvZnR3YXJlLCBvciAoaWkpIHRoZSBjb21iaW5hdGlvbiBvZiBpdHMKICAgIENvbnRyaWJ1dGlvbnMgd2l0aCBvdGhlciBzb2Z0d2FyZSAoZXhjZXB0IGFzIHBhcnQgb2YgaXRzIENvbnRyaWJ1dG9yCiAgICBWZXJzaW9uKTsgb3IKCihjKSB1bmRlciBQYXRlbnQgQ2xhaW1zIGluZnJpbmdlZCBieSBDb3ZlcmVkIFNvZnR3YXJlIGluIHRoZSBhYnNlbmNlIG9mCiAgICBpdHMgQ29udHJpYnV0aW9ucy4KClRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBhbnkgcmlnaHRzIGluIHRoZSB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLApvciBsb2dvcyBvZiBhbnkgQ29udHJpYnV0b3IgKGV4Y2VwdCBhcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIGNvbXBseSB3aXRoCnRoZSBub3RpY2UgcmVxdWlyZW1lbnRzIGluIFNlY3Rpb24gMy40KS4KCjIuNC4gU3Vic2VxdWVudCBMaWNlbnNlcwoKTm8gQ29udHJpYnV0b3IgbWFrZXMgYWRkaXRpb25hbCBncmFudHMgYXMgYSByZXN1bHQgb2YgWW91ciBjaG9pY2UgdG8KZGlzdHJpYnV0ZSB0aGUgQ292ZXJlZCBTb2Z0d2FyZSB1bmRlciBhIHN1YnNlcXVlbnQgdmVyc2lvbiBvZiB0aGlzCkxpY2Vuc2UgKHNlZSBTZWN0aW9uIDEwLjIpIG9yIHVuZGVyIHRoZSB0ZXJtcyBvZiBhIFNlY29uZGFyeSBMaWNlbnNlIChpZgpwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMy4zKS4KCjIuNS4gUmVwcmVzZW50YXRpb24KCkVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRoZSBDb250cmlidXRvciBiZWxpZXZlcyBpdHMKQ29udHJpYnV0aW9ucyBhcmUgaXRzIG9yaWdpbmFsIGNyZWF0aW9uKHMpIG9yIGl0IGhhcyBzdWZmaWNpZW50IHJpZ2h0cwp0byBncmFudCB0aGUgcmlnaHRzIHRvIGl0cyBDb250cmlidXRpb25zIGNvbnZleWVkIGJ5IHRoaXMgTGljZW5zZS4KCjIuNi4gRmFpciBVc2UKClRoaXMgTGljZW5zZSBpcyBub3QgaW50ZW5kZWQgdG8gbGltaXQgYW55IHJpZ2h0cyBZb3UgaGF2ZSB1bmRlcgphcHBsaWNhYmxlIGNvcHlyaWdodCBkb2N0cmluZXMgb2YgZmFpciB1c2UsIGZhaXIgZGVhbGluZywgb3Igb3RoZXIKZXF1aXZhbGVudHMuCgoyLjcuIENvbmRpdGlvbnMKClNlY3Rpb25zIDMuMSwgMy4yLCAzLjMsIGFuZCAzLjQgYXJlIGNvbmRpdGlvbnMgb2YgdGhlIGxpY2Vuc2VzIGdyYW50ZWQKaW4gU2VjdGlvbiAyLjEuCgozLiBSZXNwb25zaWJpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0KCjMuMS4gRGlzdHJpYnV0aW9uIG9mIFNvdXJjZSBGb3JtCgpBbGwgZGlzdHJpYnV0aW9uIG9mIENvdmVyZWQgU29mdHdhcmUgaW4gU291cmNlIENvZGUgRm9ybSwgaW5jbHVkaW5nIGFueQpNb2RpZmljYXRpb25zIHRoYXQgWW91IGNyZWF0ZSBvciB0byB3aGljaCBZb3UgY29udHJpYnV0ZSwgbXVzdCBiZSB1bmRlcgp0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLiBZb3UgbXVzdCBpbmZvcm0gcmVjaXBpZW50cyB0aGF0IHRoZSBTb3VyY2UKQ29kZSBGb3JtIG9mIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGlzIGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2UsIGFuZCBob3cgdGhleSBjYW4gb2J0YWluIGEgY29weSBvZiB0aGlzIExpY2Vuc2UuIFlvdSBtYXkgbm90CmF0dGVtcHQgdG8gYWx0ZXIgb3IgcmVzdHJpY3QgdGhlIHJlY2lwaWVudHMnIHJpZ2h0cyBpbiB0aGUgU291cmNlIENvZGUKRm9ybS4KCjMuMi4gRGlzdHJpYnV0aW9uIG9mIEV4ZWN1dGFibGUgRm9ybQoKSWYgWW91IGRpc3RyaWJ1dGUgQ292ZXJlZCBTb2Z0d2FyZSBpbiBFeGVjdXRhYmxlIEZvcm0gdGhlbjoKCihhKSBzdWNoIENvdmVyZWQgU29mdHdhcmUgbXVzdCBhbHNvIGJlIG1hZGUgYXZhaWxhYmxlIGluIFNvdXJjZSBDb2RlCiAgICBGb3JtLCBhcyBkZXNjcmliZWQgaW4gU2VjdGlvbiAzLjEsIGFuZCBZb3UgbXVzdCBpbmZvcm0gcmVjaXBpZW50cyBvZgogICAgdGhlIEV4ZWN1dGFibGUgRm9ybSBob3cgdGhleSBjYW4gb2J0YWluIGEgY29weSBvZiBzdWNoIFNvdXJjZSBDb2RlCiAgICBGb3JtIGJ5IHJlYXNvbmFibGUgbWVhbnMgaW4gYSB0aW1lbHkgbWFubmVyLCBhdCBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIGRpc3RyaWJ1dGlvbiB0byB0aGUgcmVjaXBpZW50OyBhbmQKCihiKSBZb3UgbWF5IGRpc3RyaWJ1dGUgc3VjaCBFeGVjdXRhYmxlIEZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMKICAgIExpY2Vuc2UsIG9yIHN1YmxpY2Vuc2UgaXQgdW5kZXIgZGlmZmVyZW50IHRlcm1zLCBwcm92aWRlZCB0aGF0IHRoZQogICAgbGljZW5zZSBmb3IgdGhlIEV4ZWN1dGFibGUgRm9ybSBkb2VzIG5vdCBhdHRlbXB0IHRvIGxpbWl0IG9yIGFsdGVyCiAgICB0aGUgcmVjaXBpZW50cycgcmlnaHRzIGluIHRoZSBTb3VyY2UgQ29kZSBGb3JtIHVuZGVyIHRoaXMgTGljZW5zZS4KCjMuMy4gRGlzdHJpYnV0aW9uIG9mIGEgTGFyZ2VyIFdvcmsKCllvdSBtYXkgY3JlYXRlIGFuZCBkaXN0cmlidXRlIGEgTGFyZ2VyIFdvcmsgdW5kZXIgdGVybXMgb2YgWW91ciBjaG9pY2UsCnByb3ZpZGVkIHRoYXQgWW91IGFsc28gY29tcGx5IHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UgZm9yCnRoZSBDb3ZlcmVkIFNvZnR3YXJlLiBJZiB0aGUgTGFyZ2VyIFdvcmsgaXMgYSBjb21iaW5hdGlvbiBvZiBDb3ZlcmVkClNvZnR3YXJlIHdpdGggYSB3b3JrIGdvdmVybmVkIGJ5IG9uZSBvciBtb3JlIFNlY29uZGFyeSBMaWNlbnNlcywgYW5kIHRoZQpDb3ZlcmVkIFNvZnR3YXJlIGlzIG5vdCBJbmNvbXBhdGlibGUgV2l0aCBTZWNvbmRhcnkgTGljZW5zZXMsIHRoaXMKTGljZW5zZSBwZXJtaXRzIFlvdSB0byBhZGRpdGlvbmFsbHkgZGlzdHJpYnV0ZSBzdWNoIENvdmVyZWQgU29mdHdhcmUKdW5kZXIgdGhlIHRlcm1zIG9mIHN1Y2ggU2Vjb25kYXJ5IExpY2Vuc2UocyksIHNvIHRoYXQgdGhlIHJlY2lwaWVudCBvZgp0aGUgTGFyZ2VyIFdvcmsgbWF5LCBhdCB0aGVpciBvcHRpb24sIGZ1cnRoZXIgZGlzdHJpYnV0ZSB0aGUgQ292ZXJlZApTb2Z0d2FyZSB1bmRlciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoaXMgTGljZW5zZSBvciBzdWNoIFNlY29uZGFyeQpMaWNlbnNlKHMpLgoKMy40LiBOb3RpY2VzCgpZb3UgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgdGhlIHN1YnN0YW5jZSBvZiBhbnkgbGljZW5zZSBub3RpY2VzCihpbmNsdWRpbmcgY29weXJpZ2h0IG5vdGljZXMsIHBhdGVudCBub3RpY2VzLCBkaXNjbGFpbWVycyBvZiB3YXJyYW50eSwKb3IgbGltaXRhdGlvbnMgb2YgbGlhYmlsaXR5KSBjb250YWluZWQgd2l0aGluIHRoZSBTb3VyY2UgQ29kZSBGb3JtIG9mCnRoZSBDb3ZlcmVkIFNvZnR3YXJlLCBleGNlcHQgdGhhdCBZb3UgbWF5IGFsdGVyIGFueSBsaWNlbnNlIG5vdGljZXMgdG8KdGhlIGV4dGVudCByZXF1aXJlZCB0byByZW1lZHkga25vd24gZmFjdHVhbCBpbmFjY3VyYWNpZXMuCgozLjUuIEFwcGxpY2F0aW9uIG9mIEFkZGl0aW9uYWwgVGVybXMKCllvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLCBhbmQgdG8gY2hhcmdlIGEgZmVlIGZvciwgd2FycmFudHksIHN1cHBvcnQsCmluZGVtbml0eSBvciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgdG8gb25lIG9yIG1vcmUgcmVjaXBpZW50cyBvZiBDb3ZlcmVkClNvZnR3YXJlLiBIb3dldmVyLCBZb3UgbWF5IGRvIHNvIG9ubHkgb24gWW91ciBvd24gYmVoYWxmLCBhbmQgbm90IG9uCmJlaGFsZiBvZiBhbnkgQ29udHJpYnV0b3IuIFlvdSBtdXN0IG1ha2UgaXQgYWJzb2x1dGVseSBjbGVhciB0aGF0IGFueQpzdWNoIHdhcnJhbnR5LCBzdXBwb3J0LCBpbmRlbW5pdHksIG9yIGxpYWJpbGl0eSBvYmxpZ2F0aW9uIGlzIG9mZmVyZWQgYnkKWW91IGFsb25lLCBhbmQgWW91IGhlcmVieSBhZ3JlZSB0byBpbmRlbW5pZnkgZXZlcnkgQ29udHJpYnV0b3IgZm9yIGFueQpsaWFiaWxpdHkgaW5jdXJyZWQgYnkgc3VjaCBDb250cmlidXRvciBhcyBhIHJlc3VsdCBvZiB3YXJyYW50eSwgc3VwcG9ydCwKaW5kZW1uaXR5IG9yIGxpYWJpbGl0eSB0ZXJtcyBZb3Ugb2ZmZXIuIFlvdSBtYXkgaW5jbHVkZSBhZGRpdGlvbmFsCmRpc2NsYWltZXJzIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9ucyBvZiBsaWFiaWxpdHkgc3BlY2lmaWMgdG8gYW55Cmp1cmlzZGljdGlvbi4KCjQuIEluYWJpbGl0eSB0byBDb21wbHkgRHVlIHRvIFN0YXR1dGUgb3IgUmVndWxhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCklmIGl0IGlzIGltcG9zc2libGUgZm9yIFlvdSB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8gc29tZSBvciBhbGwgb2YgdGhlIENvdmVyZWQgU29mdHdhcmUgZHVlIHRvCnN0YXR1dGUsIGp1ZGljaWFsIG9yZGVyLCBvciByZWd1bGF0aW9uIHRoZW4gWW91IG11c3Q6IChhKSBjb21wbHkgd2l0aAp0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHRvIHRoZSBtYXhpbXVtIGV4dGVudCBwb3NzaWJsZTsgYW5kIChiKQpkZXNjcmliZSB0aGUgbGltaXRhdGlvbnMgYW5kIHRoZSBjb2RlIHRoZXkgYWZmZWN0LiBTdWNoIGRlc2NyaXB0aW9uIG11c3QKYmUgcGxhY2VkIGluIGEgdGV4dCBmaWxlIGluY2x1ZGVkIHdpdGggYWxsIGRpc3RyaWJ1dGlvbnMgb2YgdGhlIENvdmVyZWQKU29mdHdhcmUgdW5kZXIgdGhpcyBMaWNlbnNlLiBFeGNlcHQgdG8gdGhlIGV4dGVudCBwcm9oaWJpdGVkIGJ5IHN0YXR1dGUKb3IgcmVndWxhdGlvbiwgc3VjaCBkZXNjcmlwdGlvbiBtdXN0IGJlIHN1ZmZpY2llbnRseSBkZXRhaWxlZCBmb3IgYQpyZWNpcGllbnQgb2Ygb3JkaW5hcnkgc2tpbGwgdG8gYmUgYWJsZSB0byB1bmRlcnN0YW5kIGl0LgoKNS4gVGVybWluYXRpb24KLS0tLS0tLS0tLS0tLS0KCjUuMS4gVGhlIHJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIHRlcm1pbmF0ZSBhdXRvbWF0aWNhbGx5CmlmIFlvdSBmYWlsIHRvIGNvbXBseSB3aXRoIGFueSBvZiBpdHMgdGVybXMuIEhvd2V2ZXIsIGlmIFlvdSBiZWNvbWUKY29tcGxpYW50LCB0aGVuIHRoZSByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIKQ29udHJpYnV0b3IgYXJlIHJlaW5zdGF0ZWQgKGEpIHByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgc3VjaApDb250cmlidXRvciBleHBsaWNpdGx5IGFuZCBmaW5hbGx5IHRlcm1pbmF0ZXMgWW91ciBncmFudHMsIGFuZCAoYikgb24gYW4Kb25nb2luZyBiYXNpcywgaWYgc3VjaCBDb250cmlidXRvciBmYWlscyB0byBub3RpZnkgWW91IG9mIHRoZQpub24tY29tcGxpYW5jZSBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMgcHJpb3IgdG8gNjAgZGF5cyBhZnRlciBZb3UgaGF2ZQpjb21lIGJhY2sgaW50byBjb21wbGlhbmNlLiBNb3Jlb3ZlciwgWW91ciBncmFudHMgZnJvbSBhIHBhcnRpY3VsYXIKQ29udHJpYnV0b3IgYXJlIHJlaW5zdGF0ZWQgb24gYW4gb25nb2luZyBiYXNpcyBpZiBzdWNoIENvbnRyaWJ1dG9yCm5vdGlmaWVzIFlvdSBvZiB0aGUgbm9uLWNvbXBsaWFuY2UgYnkgc29tZSByZWFzb25hYmxlIG1lYW5zLCB0aGlzIGlzIHRoZQpmaXJzdCB0aW1lIFlvdSBoYXZlIHJlY2VpdmVkIG5vdGljZSBvZiBub24tY29tcGxpYW5jZSB3aXRoIHRoaXMgTGljZW5zZQpmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZCBZb3UgYmVjb21lIGNvbXBsaWFudCBwcmlvciB0byAzMCBkYXlzIGFmdGVyCllvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgoKNS4yLiBJZiBZb3UgaW5pdGlhdGUgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgYnkgYXNzZXJ0aW5nIGEgcGF0ZW50CmluZnJpbmdlbWVudCBjbGFpbSAoZXhjbHVkaW5nIGRlY2xhcmF0b3J5IGp1ZGdtZW50IGFjdGlvbnMsCmNvdW50ZXItY2xhaW1zLCBhbmQgY3Jvc3MtY2xhaW1zKSBhbGxlZ2luZyB0aGF0IGEgQ29udHJpYnV0b3IgVmVyc2lvbgpkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluZnJpbmdlcyBhbnkgcGF0ZW50LCB0aGVuIHRoZSByaWdodHMgZ3JhbnRlZCB0bwpZb3UgYnkgYW55IGFuZCBhbGwgQ29udHJpYnV0b3JzIGZvciB0aGUgQ292ZXJlZCBTb2Z0d2FyZSB1bmRlciBTZWN0aW9uCjIuMSBvZiB0aGlzIExpY2Vuc2Ugc2hhbGwgdGVybWluYXRlLgoKNS4zLiBJbiB0aGUgZXZlbnQgb2YgdGVybWluYXRpb24gdW5kZXIgU2VjdGlvbnMgNS4xIG9yIDUuMiBhYm92ZSwgYWxsCmVuZCB1c2VyIGxpY2Vuc2UgYWdyZWVtZW50cyAoZXhjbHVkaW5nIGRpc3RyaWJ1dG9ycyBhbmQgcmVzZWxsZXJzKSB3aGljaApoYXZlIGJlZW4gdmFsaWRseSBncmFudGVkIGJ5IFlvdSBvciBZb3VyIGRpc3RyaWJ1dG9ycyB1bmRlciB0aGlzIExpY2Vuc2UKcHJpb3IgdG8gdGVybWluYXRpb24gc2hhbGwgc3Vydml2ZSB0ZXJtaW5hdGlvbi4KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKiAgNi4gRGlzY2xhaW1lciBvZiBXYXJyYW50eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKiAgQ292ZXJlZCBTb2Z0d2FyZSBpcyBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2Ugb24gYW4gImFzIGlzIiAgICAgICAqCiogIGJhc2lzLCB3aXRob3V0IHdhcnJhbnR5IG9mIGFueSBraW5kLCBlaXRoZXIgZXhwcmVzc2VkLCBpbXBsaWVkLCBvciAgKgoqICBzdGF0dXRvcnksIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB3YXJyYW50aWVzIHRoYXQgdGhlICAgICAgICoKKiAgQ292ZXJlZCBTb2Z0d2FyZSBpcyBmcmVlIG9mIGRlZmVjdHMsIG1lcmNoYW50YWJsZSwgZml0IGZvciBhICAgICAgICAqCiogIHBhcnRpY3VsYXIgcHVycG9zZSBvciBub24taW5mcmluZ2luZy4gVGhlIGVudGlyZSByaXNrIGFzIHRvIHRoZSAgICAgKgoqICBxdWFsaXR5IGFuZCBwZXJmb3JtYW5jZSBvZiB0aGUgQ292ZXJlZCBTb2Z0d2FyZSBpcyB3aXRoIFlvdS4gICAgICAgICoKKiAgU2hvdWxkIGFueSBDb3ZlcmVkIFNvZnR3YXJlIHByb3ZlIGRlZmVjdGl2ZSBpbiBhbnkgcmVzcGVjdCwgWW91ICAgICAqCiogIChub3QgYW55IENvbnRyaWJ1dG9yKSBhc3N1bWUgdGhlIGNvc3Qgb2YgYW55IG5lY2Vzc2FyeSBzZXJ2aWNpbmcsICAgKgoqICByZXBhaXIsIG9yIGNvcnJlY3Rpb24uIFRoaXMgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBjb25zdGl0dXRlcyBhbiAgICoKKiAgZXNzZW50aWFsIHBhcnQgb2YgdGhpcyBMaWNlbnNlLiBObyB1c2Ugb2YgYW55IENvdmVyZWQgU29mdHdhcmUgaXMgICAqCiogIGF1dGhvcml6ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGV4Y2VwdCB1bmRlciB0aGlzIGRpc2NsYWltZXIuICAgICAgICAgKgoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiogIDcuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgoqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiogIFVuZGVyIG5vIGNpcmN1bXN0YW5jZXMgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwgd2hldGhlciB0b3J0ICAgICAgKgoqICAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLCBzaGFsbCBhbnkgICAgICAgICAgICoKKiAgQ29udHJpYnV0b3IsIG9yIGFueW9uZSB3aG8gZGlzdHJpYnV0ZXMgQ292ZXJlZCBTb2Z0d2FyZSBhcyAgICAgICAgICAqCiogIHBlcm1pdHRlZCBhYm92ZSwgYmUgbGlhYmxlIHRvIFlvdSBmb3IgYW55IGRpcmVjdCwgaW5kaXJlY3QsICAgICAgICAgKgoqICBzcGVjaWFsLCBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNoYXJhY3RlciAgICAgICoKKiAgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGRhbWFnZXMgZm9yIGxvc3QgcHJvZml0cywgbG9zcyBvZiAgICAqCiogIGdvb2R3aWxsLCB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBhbnkgICAgKgoqICBhbmQgYWxsIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMsIGV2ZW4gaWYgc3VjaCBwYXJ0eSAgICAgICoKKiAgc2hhbGwgaGF2ZSBiZWVuIGluZm9ybWVkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuIFRoaXMgICAqCiogIGxpbWl0YXRpb24gb2YgbGlhYmlsaXR5IHNoYWxsIG5vdCBhcHBseSB0byBsaWFiaWxpdHkgZm9yIGRlYXRoIG9yICAgKgoqICBwZXJzb25hbCBpbmp1cnkgcmVzdWx0aW5nIGZyb20gc3VjaCBwYXJ0eSdzIG5lZ2xpZ2VuY2UgdG8gdGhlICAgICAgICoKKiAgZXh0ZW50IGFwcGxpY2FibGUgbGF3IHByb2hpYml0cyBzdWNoIGxpbWl0YXRpb24uIFNvbWUgICAgICAgICAgICAgICAqCiogIGp1cmlzZGljdGlvbnMgZG8gbm90IGFsbG93IHRoZSBleGNsdXNpb24gb3IgbGltaXRhdGlvbiBvZiAgICAgICAgICAgKgoqICBpbmNpZGVudGFsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgc28gdGhpcyBleGNsdXNpb24gYW5kICAgICAgICAgICoKKiAgbGltaXRhdGlvbiBtYXkgbm90IGFwcGx5IHRvIFlvdS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCjguIExpdGlnYXRpb24KLS0tLS0tLS0tLS0tLQoKQW55IGxpdGlnYXRpb24gcmVsYXRpbmcgdG8gdGhpcyBMaWNlbnNlIG1heSBiZSBicm91Z2h0IG9ubHkgaW4gdGhlCmNvdXJ0cyBvZiBhIGp1cmlzZGljdGlvbiB3aGVyZSB0aGUgZGVmZW5kYW50IG1haW50YWlucyBpdHMgcHJpbmNpcGFsCnBsYWNlIG9mIGJ1c2luZXNzIGFuZCBzdWNoIGxpdGlnYXRpb24gc2hhbGwgYmUgZ292ZXJuZWQgYnkgbGF3cyBvZiB0aGF0Cmp1cmlzZGljdGlvbiwgd2l0aG91dCByZWZlcmVuY2UgdG8gaXRzIGNvbmZsaWN0LW9mLWxhdyBwcm92aXNpb25zLgpOb3RoaW5nIGluIHRoaXMgU2VjdGlvbiBzaGFsbCBwcmV2ZW50IGEgcGFydHkncyBhYmlsaXR5IHRvIGJyaW5nCmNyb3NzLWNsYWltcyBvciBjb3VudGVyLWNsYWltcy4KCjkuIE1pc2NlbGxhbmVvdXMKLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBMaWNlbnNlIHJlcHJlc2VudHMgdGhlIGNvbXBsZXRlIGFncmVlbWVudCBjb25jZXJuaW5nIHRoZSBzdWJqZWN0Cm1hdHRlciBoZXJlb2YuIElmIGFueSBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlIGlzIGhlbGQgdG8gYmUKdW5lbmZvcmNlYWJsZSwgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgb25seSB0byB0aGUgZXh0ZW50Cm5lY2Vzc2FyeSB0byBtYWtlIGl0IGVuZm9yY2VhYmxlLiBBbnkgbGF3IG9yIHJlZ3VsYXRpb24gd2hpY2ggcHJvdmlkZXMKdGhhdCB0aGUgbGFuZ3VhZ2Ugb2YgYSBjb250cmFjdCBzaGFsbCBiZSBjb25zdHJ1ZWQgYWdhaW5zdCB0aGUgZHJhZnRlcgpzaGFsbCBub3QgYmUgdXNlZCB0byBjb25zdHJ1ZSB0aGlzIExpY2Vuc2UgYWdhaW5zdCBhIENvbnRyaWJ1dG9yLgoKMTAuIFZlcnNpb25zIG9mIHRoZSBMaWNlbnNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMTAuMS4gTmV3IFZlcnNpb25zCgpNb3ppbGxhIEZvdW5kYXRpb24gaXMgdGhlIGxpY2Vuc2Ugc3Rld2FyZC4gRXhjZXB0IGFzIHByb3ZpZGVkIGluIFNlY3Rpb24KMTAuMywgbm8gb25lIG90aGVyIHRoYW4gdGhlIGxpY2Vuc2Ugc3Rld2FyZCBoYXMgdGhlIHJpZ2h0IHRvIG1vZGlmeSBvcgpwdWJsaXNoIG5ldyB2ZXJzaW9ucyBvZiB0aGlzIExpY2Vuc2UuIEVhY2ggdmVyc2lvbiB3aWxsIGJlIGdpdmVuIGEKZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuCgoxMC4yLiBFZmZlY3Qgb2YgTmV3IFZlcnNpb25zCgpZb3UgbWF5IGRpc3RyaWJ1dGUgdGhlIENvdmVyZWQgU29mdHdhcmUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSB2ZXJzaW9uCm9mIHRoZSBMaWNlbnNlIHVuZGVyIHdoaWNoIFlvdSBvcmlnaW5hbGx5IHJlY2VpdmVkIHRoZSBDb3ZlcmVkIFNvZnR3YXJlLApvciB1bmRlciB0aGUgdGVybXMgb2YgYW55IHN1YnNlcXVlbnQgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIGxpY2Vuc2UKc3Rld2FyZC4KCjEwLjMuIE1vZGlmaWVkIFZlcnNpb25zCgpJZiB5b3UgY3JlYXRlIHNvZnR3YXJlIG5vdCBnb3Zlcm5lZCBieSB0aGlzIExpY2Vuc2UsIGFuZCB5b3Ugd2FudCB0bwpjcmVhdGUgYSBuZXcgbGljZW5zZSBmb3Igc3VjaCBzb2Z0d2FyZSwgeW91IG1heSBjcmVhdGUgYW5kIHVzZSBhCm1vZGlmaWVkIHZlcnNpb24gb2YgdGhpcyBMaWNlbnNlIGlmIHlvdSByZW5hbWUgdGhlIGxpY2Vuc2UgYW5kIHJlbW92ZQphbnkgcmVmZXJlbmNlcyB0byB0aGUgbmFtZSBvZiB0aGUgbGljZW5zZSBzdGV3YXJkIChleGNlcHQgdG8gbm90ZSB0aGF0CnN1Y2ggbW9kaWZpZWQgbGljZW5zZSBkaWZmZXJzIGZyb20gdGhpcyBMaWNlbnNlKS4KCjEwLjQuIERpc3RyaWJ1dGluZyBTb3VyY2UgQ29kZSBGb3JtIHRoYXQgaXMgSW5jb21wYXRpYmxlIFdpdGggU2Vjb25kYXJ5CkxpY2Vuc2VzCgpJZiBZb3UgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgU291cmNlIENvZGUgRm9ybSB0aGF0IGlzIEluY29tcGF0aWJsZSBXaXRoClNlY29uZGFyeSBMaWNlbnNlcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyB2ZXJzaW9uIG9mIHRoZSBMaWNlbnNlLCB0aGUKbm90aWNlIGRlc2NyaWJlZCBpbiBFeGhpYml0IEIgb2YgdGhpcyBMaWNlbnNlIG11c3QgYmUgYXR0YWNoZWQuCgpFeGhpYml0IEEgLSBTb3VyY2UgQ29kZSBGb3JtIExpY2Vuc2UgTm90aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwogIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKICBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgoKSWYgaXQgaXMgbm90IHBvc3NpYmxlIG9yIGRlc2lyYWJsZSB0byBwdXQgdGhlIG5vdGljZSBpbiBhIHBhcnRpY3VsYXIKZmlsZSwgdGhlbiBZb3UgbWF5IGluY2x1ZGUgdGhlIG5vdGljZSBpbiBhIGxvY2F0aW9uIChzdWNoIGFzIGEgTElDRU5TRQpmaWxlIGluIGEgcmVsZXZhbnQgZGlyZWN0b3J5KSB3aGVyZSBhIHJlY2lwaWVudCB3b3VsZCBiZSBsaWtlbHkgdG8gbG9vawpmb3Igc3VjaCBhIG5vdGljZS4KCllvdSBtYXkgYWRkIGFkZGl0aW9uYWwgYWNjdXJhdGUgbm90aWNlcyBvZiBjb3B5cmlnaHQgb3duZXJzaGlwLgoKRXhoaWJpdCBCIC0gIkluY29tcGF0aWJsZSBXaXRoIFNlY29uZGFyeSBMaWNlbnNlcyIgTm90aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgIkluY29tcGF0aWJsZSBXaXRoIFNlY29uZGFyeSBMaWNlbnNlcyIsIGFzCiAgZGVmaW5lZCBieSB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSwgdi4gMi4wLgpQSwMEFAAAAAAAuyujVsIsmPTqUgAA6lIAACEAAABtaWNyb3BpcC0wLjMuMC5kaXN0LWluZm8vTUVUQURBVEFNZXRhZGF0YS1WZXJzaW9uOiAyLjEKTmFtZTogbWljcm9waXAKVmVyc2lvbjogMC4zLjAKU3VtbWFyeTogQSBsaWdodHdlaWdodCBQeXRob24gcGFja2FnZSBpbnN0YWxsZXIgZm9yIHRoZSB3ZWIgCkF1dGhvcjogUHlvZGlkZSBkZXZlbG9wZXJzCkxpY2Vuc2U6IE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjAKICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgCiAgICAgICAgMS4gRGVmaW5pdGlvbnMKICAgICAgICAtLS0tLS0tLS0tLS0tLQogICAgICAgIAogICAgICAgIDEuMS4gIkNvbnRyaWJ1dG9yIgogICAgICAgICAgICBtZWFucyBlYWNoIGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IHRoYXQgY3JlYXRlcywgY29udHJpYnV0ZXMgdG8KICAgICAgICAgICAgdGhlIGNyZWF0aW9uIG9mLCBvciBvd25zIENvdmVyZWQgU29mdHdhcmUuCiAgICAgICAgCiAgICAgICAgMS4yLiAiQ29udHJpYnV0b3IgVmVyc2lvbiIKICAgICAgICAgICAgbWVhbnMgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBDb250cmlidXRpb25zIG9mIG90aGVycyAoaWYgYW55KSB1c2VkCiAgICAgICAgICAgIGJ5IGEgQ29udHJpYnV0b3IgYW5kIHRoYXQgcGFydGljdWxhciBDb250cmlidXRvcidzIENvbnRyaWJ1dGlvbi4KICAgICAgICAKICAgICAgICAxLjMuICJDb250cmlidXRpb24iCiAgICAgICAgICAgIG1lYW5zIENvdmVyZWQgU29mdHdhcmUgb2YgYSBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLgogICAgICAgIAogICAgICAgIDEuNC4gIkNvdmVyZWQgU29mdHdhcmUiCiAgICAgICAgICAgIG1lYW5zIFNvdXJjZSBDb2RlIEZvcm0gdG8gd2hpY2ggdGhlIGluaXRpYWwgQ29udHJpYnV0b3IgaGFzIGF0dGFjaGVkCiAgICAgICAgICAgIHRoZSBub3RpY2UgaW4gRXhoaWJpdCBBLCB0aGUgRXhlY3V0YWJsZSBGb3JtIG9mIHN1Y2ggU291cmNlIENvZGUKICAgICAgICAgICAgRm9ybSwgYW5kIE1vZGlmaWNhdGlvbnMgb2Ygc3VjaCBTb3VyY2UgQ29kZSBGb3JtLCBpbiBlYWNoIGNhc2UKICAgICAgICAgICAgaW5jbHVkaW5nIHBvcnRpb25zIHRoZXJlb2YuCiAgICAgICAgCiAgICAgICAgMS41LiAiSW5jb21wYXRpYmxlIFdpdGggU2Vjb25kYXJ5IExpY2Vuc2VzIgogICAgICAgICAgICBtZWFucwogICAgICAgIAogICAgICAgICAgICAoYSkgdGhhdCB0aGUgaW5pdGlhbCBDb250cmlidXRvciBoYXMgYXR0YWNoZWQgdGhlIG5vdGljZSBkZXNjcmliZWQKICAgICAgICAgICAgICAgIGluIEV4aGliaXQgQiB0byB0aGUgQ292ZXJlZCBTb2Z0d2FyZTsgb3IKICAgICAgICAKICAgICAgICAgICAgKGIpIHRoYXQgdGhlIENvdmVyZWQgU29mdHdhcmUgd2FzIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZgogICAgICAgICAgICAgICAgdmVyc2lvbiAxLjEgb3IgZWFybGllciBvZiB0aGUgTGljZW5zZSwgYnV0IG5vdCBhbHNvIHVuZGVyIHRoZQogICAgICAgICAgICAgICAgdGVybXMgb2YgYSBTZWNvbmRhcnkgTGljZW5zZS4KICAgICAgICAKICAgICAgICAxLjYuICJFeGVjdXRhYmxlIEZvcm0iCiAgICAgICAgICAgIG1lYW5zIGFueSBmb3JtIG9mIHRoZSB3b3JrIG90aGVyIHRoYW4gU291cmNlIENvZGUgRm9ybS4KICAgICAgICAKICAgICAgICAxLjcuICJMYXJnZXIgV29yayIKICAgICAgICAgICAgbWVhbnMgYSB3b3JrIHRoYXQgY29tYmluZXMgQ292ZXJlZCBTb2Z0d2FyZSB3aXRoIG90aGVyIG1hdGVyaWFsLCBpbgogICAgICAgICAgICBhIHNlcGFyYXRlIGZpbGUgb3IgZmlsZXMsIHRoYXQgaXMgbm90IENvdmVyZWQgU29mdHdhcmUuCiAgICAgICAgCiAgICAgICAgMS44LiAiTGljZW5zZSIKICAgICAgICAgICAgbWVhbnMgdGhpcyBkb2N1bWVudC4KICAgICAgICAKICAgICAgICAxLjkuICJMaWNlbnNhYmxlIgogICAgICAgICAgICBtZWFucyBoYXZpbmcgdGhlIHJpZ2h0IHRvIGdyYW50LCB0byB0aGUgbWF4aW11bSBleHRlbnQgcG9zc2libGUsCiAgICAgICAgICAgIHdoZXRoZXIgYXQgdGhlIHRpbWUgb2YgdGhlIGluaXRpYWwgZ3JhbnQgb3Igc3Vic2VxdWVudGx5LCBhbnkgYW5kCiAgICAgICAgICAgIGFsbCBvZiB0aGUgcmlnaHRzIGNvbnZleWVkIGJ5IHRoaXMgTGljZW5zZS4KICAgICAgICAKICAgICAgICAxLjEwLiAiTW9kaWZpY2F0aW9ucyIKICAgICAgICAgICAgbWVhbnMgYW55IG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgCiAgICAgICAgICAgIChhKSBhbnkgZmlsZSBpbiBTb3VyY2UgQ29kZSBGb3JtIHRoYXQgcmVzdWx0cyBmcm9tIGFuIGFkZGl0aW9uIHRvLAogICAgICAgICAgICAgICAgZGVsZXRpb24gZnJvbSwgb3IgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250ZW50cyBvZiBDb3ZlcmVkCiAgICAgICAgICAgICAgICBTb2Z0d2FyZTsgb3IKICAgICAgICAKICAgICAgICAgICAgKGIpIGFueSBuZXcgZmlsZSBpbiBTb3VyY2UgQ29kZSBGb3JtIHRoYXQgY29udGFpbnMgYW55IENvdmVyZWQKICAgICAgICAgICAgICAgIFNvZnR3YXJlLgogICAgICAgIAogICAgICAgIDEuMTEuICJQYXRlbnQgQ2xhaW1zIiBvZiBhIENvbnRyaWJ1dG9yCiAgICAgICAgICAgIG1lYW5zIGFueSBwYXRlbnQgY2xhaW0ocyksIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24sIG1ldGhvZCwKICAgICAgICAgICAgcHJvY2VzcywgYW5kIGFwcGFyYXR1cyBjbGFpbXMsIGluIGFueSBwYXRlbnQgTGljZW5zYWJsZSBieSBzdWNoCiAgICAgICAgICAgIENvbnRyaWJ1dG9yIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkLCBidXQgZm9yIHRoZSBncmFudCBvZiB0aGUKICAgICAgICAgICAgTGljZW5zZSwgYnkgdGhlIG1ha2luZywgdXNpbmcsIHNlbGxpbmcsIG9mZmVyaW5nIGZvciBzYWxlLCBoYXZpbmcKICAgICAgICAgICAgbWFkZSwgaW1wb3J0LCBvciB0cmFuc2ZlciBvZiBlaXRoZXIgaXRzIENvbnRyaWJ1dGlvbnMgb3IgaXRzCiAgICAgICAgICAgIENvbnRyaWJ1dG9yIFZlcnNpb24uCiAgICAgICAgCiAgICAgICAgMS4xMi4gIlNlY29uZGFyeSBMaWNlbnNlIgogICAgICAgICAgICBtZWFucyBlaXRoZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIuMCwgdGhlIEdOVQogICAgICAgICAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAyLjEsIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwKICAgICAgICAgICAgUHVibGljIExpY2Vuc2UsIFZlcnNpb24gMy4wLCBvciBhbnkgbGF0ZXIgdmVyc2lvbnMgb2YgdGhvc2UKICAgICAgICAgICAgbGljZW5zZXMuCiAgICAgICAgCiAgICAgICAgMS4xMy4gIlNvdXJjZSBDb2RlIEZvcm0iCiAgICAgICAgICAgIG1lYW5zIHRoZSBmb3JtIG9mIHRoZSB3b3JrIHByZWZlcnJlZCBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMuCiAgICAgICAgCiAgICAgICAgMS4xNC4gIllvdSIgKG9yICJZb3VyIikKICAgICAgICAgICAgbWVhbnMgYW4gaW5kaXZpZHVhbCBvciBhIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzCiAgICAgICAgICAgIExpY2Vuc2UuIEZvciBsZWdhbCBlbnRpdGllcywgIllvdSIgaW5jbHVkZXMgYW55IGVudGl0eSB0aGF0CiAgICAgICAgICAgIGNvbnRyb2xzLCBpcyBjb250cm9sbGVkIGJ5LCBvciBpcyB1bmRlciBjb21tb24gY29udHJvbCB3aXRoIFlvdS4gRm9yCiAgICAgICAgICAgIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIG1lYW5zIChhKSB0aGUgcG93ZXIsIGRpcmVjdAogICAgICAgICAgICBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LAogICAgICAgICAgICB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yIG90aGVyd2lzZSwgb3IgKGIpIG93bmVyc2hpcCBvZiBtb3JlIHRoYW4KICAgICAgICAgICAgZmlmdHkgcGVyY2VudCAoNTAlKSBvZiB0aGUgb3V0c3RhbmRpbmcgc2hhcmVzIG9yIGJlbmVmaWNpYWwKICAgICAgICAgICAgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgogICAgICAgIAogICAgICAgIDIuIExpY2Vuc2UgR3JhbnRzIGFuZCBDb25kaXRpb25zCiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAKICAgICAgICAyLjEuIEdyYW50cwogICAgICAgIAogICAgICAgIEVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBZb3UgYSB3b3JsZC13aWRlLCByb3lhbHR5LWZyZWUsCiAgICAgICAgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlOgogICAgICAgIAogICAgICAgIChhKSB1bmRlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIChvdGhlciB0aGFuIHBhdGVudCBvciB0cmFkZW1hcmspCiAgICAgICAgICAgIExpY2Vuc2FibGUgYnkgc3VjaCBDb250cmlidXRvciB0byB1c2UsIHJlcHJvZHVjZSwgbWFrZSBhdmFpbGFibGUsCiAgICAgICAgICAgIG1vZGlmeSwgZGlzcGxheSwgcGVyZm9ybSwgZGlzdHJpYnV0ZSwgYW5kIG90aGVyd2lzZSBleHBsb2l0IGl0cwogICAgICAgICAgICBDb250cmlidXRpb25zLCBlaXRoZXIgb24gYW4gdW5tb2RpZmllZCBiYXNpcywgd2l0aCBNb2RpZmljYXRpb25zLCBvcgogICAgICAgICAgICBhcyBwYXJ0IG9mIGEgTGFyZ2VyIFdvcms7IGFuZAogICAgICAgIAogICAgICAgIChiKSB1bmRlciBQYXRlbnQgQ2xhaW1zIG9mIHN1Y2ggQ29udHJpYnV0b3IgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlcgogICAgICAgICAgICBmb3Igc2FsZSwgaGF2ZSBtYWRlLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgZWl0aGVyIGl0cwogICAgICAgICAgICBDb250cmlidXRpb25zIG9yIGl0cyBDb250cmlidXRvciBWZXJzaW9uLgogICAgICAgIAogICAgICAgIDIuMi4gRWZmZWN0aXZlIERhdGUKICAgICAgICAKICAgICAgICBUaGUgbGljZW5zZXMgZ3JhbnRlZCBpbiBTZWN0aW9uIDIuMSB3aXRoIHJlc3BlY3QgdG8gYW55IENvbnRyaWJ1dGlvbgogICAgICAgIGJlY29tZSBlZmZlY3RpdmUgZm9yIGVhY2ggQ29udHJpYnV0aW9uIG9uIHRoZSBkYXRlIHRoZSBDb250cmlidXRvciBmaXJzdAogICAgICAgIGRpc3RyaWJ1dGVzIHN1Y2ggQ29udHJpYnV0aW9uLgogICAgICAgIAogICAgICAgIDIuMy4gTGltaXRhdGlvbnMgb24gR3JhbnQgU2NvcGUKICAgICAgICAKICAgICAgICBUaGUgbGljZW5zZXMgZ3JhbnRlZCBpbiB0aGlzIFNlY3Rpb24gMiBhcmUgdGhlIG9ubHkgcmlnaHRzIGdyYW50ZWQgdW5kZXIKICAgICAgICB0aGlzIExpY2Vuc2UuIE5vIGFkZGl0aW9uYWwgcmlnaHRzIG9yIGxpY2Vuc2VzIHdpbGwgYmUgaW1wbGllZCBmcm9tIHRoZQogICAgICAgIGRpc3RyaWJ1dGlvbiBvciBsaWNlbnNpbmcgb2YgQ292ZXJlZCBTb2Z0d2FyZSB1bmRlciB0aGlzIExpY2Vuc2UuCiAgICAgICAgTm90d2l0aHN0YW5kaW5nIFNlY3Rpb24gMi4xKGIpIGFib3ZlLCBubyBwYXRlbnQgbGljZW5zZSBpcyBncmFudGVkIGJ5IGEKICAgICAgICBDb250cmlidXRvcjoKICAgICAgICAKICAgICAgICAoYSkgZm9yIGFueSBjb2RlIHRoYXQgYSBDb250cmlidXRvciBoYXMgcmVtb3ZlZCBmcm9tIENvdmVyZWQgU29mdHdhcmU7CiAgICAgICAgICAgIG9yCiAgICAgICAgCiAgICAgICAgKGIpIGZvciBpbmZyaW5nZW1lbnRzIGNhdXNlZCBieTogKGkpIFlvdXIgYW5kIGFueSBvdGhlciB0aGlyZCBwYXJ0eSdzCiAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMgb2YgQ292ZXJlZCBTb2Z0d2FyZSwgb3IgKGlpKSB0aGUgY29tYmluYXRpb24gb2YgaXRzCiAgICAgICAgICAgIENvbnRyaWJ1dGlvbnMgd2l0aCBvdGhlciBzb2Z0d2FyZSAoZXhjZXB0IGFzIHBhcnQgb2YgaXRzIENvbnRyaWJ1dG9yCiAgICAgICAgICAgIFZlcnNpb24pOyBvcgogICAgICAgIAogICAgICAgIChjKSB1bmRlciBQYXRlbnQgQ2xhaW1zIGluZnJpbmdlZCBieSBDb3ZlcmVkIFNvZnR3YXJlIGluIHRoZSBhYnNlbmNlIG9mCiAgICAgICAgICAgIGl0cyBDb250cmlidXRpb25zLgogICAgICAgIAogICAgICAgIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBhbnkgcmlnaHRzIGluIHRoZSB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLAogICAgICAgIG9yIGxvZ29zIG9mIGFueSBDb250cmlidXRvciAoZXhjZXB0IGFzIG1heSBiZSBuZWNlc3NhcnkgdG8gY29tcGx5IHdpdGgKICAgICAgICB0aGUgbm90aWNlIHJlcXVpcmVtZW50cyBpbiBTZWN0aW9uIDMuNCkuCiAgICAgICAgCiAgICAgICAgMi40LiBTdWJzZXF1ZW50IExpY2Vuc2VzCiAgICAgICAgCiAgICAgICAgTm8gQ29udHJpYnV0b3IgbWFrZXMgYWRkaXRpb25hbCBncmFudHMgYXMgYSByZXN1bHQgb2YgWW91ciBjaG9pY2UgdG8KICAgICAgICBkaXN0cmlidXRlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIHVuZGVyIGEgc3Vic2VxdWVudCB2ZXJzaW9uIG9mIHRoaXMKICAgICAgICBMaWNlbnNlIChzZWUgU2VjdGlvbiAxMC4yKSBvciB1bmRlciB0aGUgdGVybXMgb2YgYSBTZWNvbmRhcnkgTGljZW5zZSAoaWYKICAgICAgICBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMy4zKS4KICAgICAgICAKICAgICAgICAyLjUuIFJlcHJlc2VudGF0aW9uCiAgICAgICAgCiAgICAgICAgRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdGhlIENvbnRyaWJ1dG9yIGJlbGlldmVzIGl0cwogICAgICAgIENvbnRyaWJ1dGlvbnMgYXJlIGl0cyBvcmlnaW5hbCBjcmVhdGlvbihzKSBvciBpdCBoYXMgc3VmZmljaWVudCByaWdodHMKICAgICAgICB0byBncmFudCB0aGUgcmlnaHRzIHRvIGl0cyBDb250cmlidXRpb25zIGNvbnZleWVkIGJ5IHRoaXMgTGljZW5zZS4KICAgICAgICAKICAgICAgICAyLjYuIEZhaXIgVXNlCiAgICAgICAgCiAgICAgICAgVGhpcyBMaWNlbnNlIGlzIG5vdCBpbnRlbmRlZCB0byBsaW1pdCBhbnkgcmlnaHRzIFlvdSBoYXZlIHVuZGVyCiAgICAgICAgYXBwbGljYWJsZSBjb3B5cmlnaHQgZG9jdHJpbmVzIG9mIGZhaXIgdXNlLCBmYWlyIGRlYWxpbmcsIG9yIG90aGVyCiAgICAgICAgZXF1aXZhbGVudHMuCiAgICAgICAgCiAgICAgICAgMi43LiBDb25kaXRpb25zCiAgICAgICAgCiAgICAgICAgU2VjdGlvbnMgMy4xLCAzLjIsIDMuMywgYW5kIDMuNCBhcmUgY29uZGl0aW9ucyBvZiB0aGUgbGljZW5zZXMgZ3JhbnRlZAogICAgICAgIGluIFNlY3Rpb24gMi4xLgogICAgICAgIAogICAgICAgIDMuIFJlc3BvbnNpYmlsaXRpZXMKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgCiAgICAgICAgMy4xLiBEaXN0cmlidXRpb24gb2YgU291cmNlIEZvcm0KICAgICAgICAKICAgICAgICBBbGwgZGlzdHJpYnV0aW9uIG9mIENvdmVyZWQgU29mdHdhcmUgaW4gU291cmNlIENvZGUgRm9ybSwgaW5jbHVkaW5nIGFueQogICAgICAgIE1vZGlmaWNhdGlvbnMgdGhhdCBZb3UgY3JlYXRlIG9yIHRvIHdoaWNoIFlvdSBjb250cmlidXRlLCBtdXN0IGJlIHVuZGVyCiAgICAgICAgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4gWW91IG11c3QgaW5mb3JtIHJlY2lwaWVudHMgdGhhdCB0aGUgU291cmNlCiAgICAgICAgQ29kZSBGb3JtIG9mIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGlzIGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGlzCiAgICAgICAgTGljZW5zZSwgYW5kIGhvdyB0aGV5IGNhbiBvYnRhaW4gYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gWW91IG1heSBub3QKICAgICAgICBhdHRlbXB0IHRvIGFsdGVyIG9yIHJlc3RyaWN0IHRoZSByZWNpcGllbnRzJyByaWdodHMgaW4gdGhlIFNvdXJjZSBDb2RlCiAgICAgICAgRm9ybS4KICAgICAgICAKICAgICAgICAzLjIuIERpc3RyaWJ1dGlvbiBvZiBFeGVjdXRhYmxlIEZvcm0KICAgICAgICAKICAgICAgICBJZiBZb3UgZGlzdHJpYnV0ZSBDb3ZlcmVkIFNvZnR3YXJlIGluIEV4ZWN1dGFibGUgRm9ybSB0aGVuOgogICAgICAgIAogICAgICAgIChhKSBzdWNoIENvdmVyZWQgU29mdHdhcmUgbXVzdCBhbHNvIGJlIG1hZGUgYXZhaWxhYmxlIGluIFNvdXJjZSBDb2RlCiAgICAgICAgICAgIEZvcm0sIGFzIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDMuMSwgYW5kIFlvdSBtdXN0IGluZm9ybSByZWNpcGllbnRzIG9mCiAgICAgICAgICAgIHRoZSBFeGVjdXRhYmxlIEZvcm0gaG93IHRoZXkgY2FuIG9idGFpbiBhIGNvcHkgb2Ygc3VjaCBTb3VyY2UgQ29kZQogICAgICAgICAgICBGb3JtIGJ5IHJlYXNvbmFibGUgbWVhbnMgaW4gYSB0aW1lbHkgbWFubmVyLCBhdCBhIGNoYXJnZSBubyBtb3JlCiAgICAgICAgICAgIHRoYW4gdGhlIGNvc3Qgb2YgZGlzdHJpYnV0aW9uIHRvIHRoZSByZWNpcGllbnQ7IGFuZAogICAgICAgIAogICAgICAgIChiKSBZb3UgbWF5IGRpc3RyaWJ1dGUgc3VjaCBFeGVjdXRhYmxlIEZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMKICAgICAgICAgICAgTGljZW5zZSwgb3Igc3VibGljZW5zZSBpdCB1bmRlciBkaWZmZXJlbnQgdGVybXMsIHByb3ZpZGVkIHRoYXQgdGhlCiAgICAgICAgICAgIGxpY2Vuc2UgZm9yIHRoZSBFeGVjdXRhYmxlIEZvcm0gZG9lcyBub3QgYXR0ZW1wdCB0byBsaW1pdCBvciBhbHRlcgogICAgICAgICAgICB0aGUgcmVjaXBpZW50cycgcmlnaHRzIGluIHRoZSBTb3VyY2UgQ29kZSBGb3JtIHVuZGVyIHRoaXMgTGljZW5zZS4KICAgICAgICAKICAgICAgICAzLjMuIERpc3RyaWJ1dGlvbiBvZiBhIExhcmdlciBXb3JrCiAgICAgICAgCiAgICAgICAgWW91IG1heSBjcmVhdGUgYW5kIGRpc3RyaWJ1dGUgYSBMYXJnZXIgV29yayB1bmRlciB0ZXJtcyBvZiBZb3VyIGNob2ljZSwKICAgICAgICBwcm92aWRlZCB0aGF0IFlvdSBhbHNvIGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlIGZvcgogICAgICAgIHRoZSBDb3ZlcmVkIFNvZnR3YXJlLiBJZiB0aGUgTGFyZ2VyIFdvcmsgaXMgYSBjb21iaW5hdGlvbiBvZiBDb3ZlcmVkCiAgICAgICAgU29mdHdhcmUgd2l0aCBhIHdvcmsgZ292ZXJuZWQgYnkgb25lIG9yIG1vcmUgU2Vjb25kYXJ5IExpY2Vuc2VzLCBhbmQgdGhlCiAgICAgICAgQ292ZXJlZCBTb2Z0d2FyZSBpcyBub3QgSW5jb21wYXRpYmxlIFdpdGggU2Vjb25kYXJ5IExpY2Vuc2VzLCB0aGlzCiAgICAgICAgTGljZW5zZSBwZXJtaXRzIFlvdSB0byBhZGRpdGlvbmFsbHkgZGlzdHJpYnV0ZSBzdWNoIENvdmVyZWQgU29mdHdhcmUKICAgICAgICB1bmRlciB0aGUgdGVybXMgb2Ygc3VjaCBTZWNvbmRhcnkgTGljZW5zZShzKSwgc28gdGhhdCB0aGUgcmVjaXBpZW50IG9mCiAgICAgICAgdGhlIExhcmdlciBXb3JrIG1heSwgYXQgdGhlaXIgb3B0aW9uLCBmdXJ0aGVyIGRpc3RyaWJ1dGUgdGhlIENvdmVyZWQKICAgICAgICBTb2Z0d2FyZSB1bmRlciB0aGUgdGVybXMgb2YgZWl0aGVyIHRoaXMgTGljZW5zZSBvciBzdWNoIFNlY29uZGFyeQogICAgICAgIExpY2Vuc2UocykuCiAgICAgICAgCiAgICAgICAgMy40LiBOb3RpY2VzCiAgICAgICAgCiAgICAgICAgWW91IG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIHRoZSBzdWJzdGFuY2Ugb2YgYW55IGxpY2Vuc2Ugbm90aWNlcwogICAgICAgIChpbmNsdWRpbmcgY29weXJpZ2h0IG5vdGljZXMsIHBhdGVudCBub3RpY2VzLCBkaXNjbGFpbWVycyBvZiB3YXJyYW50eSwKICAgICAgICBvciBsaW1pdGF0aW9ucyBvZiBsaWFiaWxpdHkpIGNvbnRhaW5lZCB3aXRoaW4gdGhlIFNvdXJjZSBDb2RlIEZvcm0gb2YKICAgICAgICB0aGUgQ292ZXJlZCBTb2Z0d2FyZSwgZXhjZXB0IHRoYXQgWW91IG1heSBhbHRlciBhbnkgbGljZW5zZSBub3RpY2VzIHRvCiAgICAgICAgdGhlIGV4dGVudCByZXF1aXJlZCB0byByZW1lZHkga25vd24gZmFjdHVhbCBpbmFjY3VyYWNpZXMuCiAgICAgICAgCiAgICAgICAgMy41LiBBcHBsaWNhdGlvbiBvZiBBZGRpdGlvbmFsIFRlcm1zCiAgICAgICAgCiAgICAgICAgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsIGFuZCB0byBjaGFyZ2UgYSBmZWUgZm9yLCB3YXJyYW50eSwgc3VwcG9ydCwKICAgICAgICBpbmRlbW5pdHkgb3IgbGlhYmlsaXR5IG9ibGlnYXRpb25zIHRvIG9uZSBvciBtb3JlIHJlY2lwaWVudHMgb2YgQ292ZXJlZAogICAgICAgIFNvZnR3YXJlLiBIb3dldmVyLCBZb3UgbWF5IGRvIHNvIG9ubHkgb24gWW91ciBvd24gYmVoYWxmLCBhbmQgbm90IG9uCiAgICAgICAgYmVoYWxmIG9mIGFueSBDb250cmlidXRvci4gWW91IG11c3QgbWFrZSBpdCBhYnNvbHV0ZWx5IGNsZWFyIHRoYXQgYW55CiAgICAgICAgc3VjaCB3YXJyYW50eSwgc3VwcG9ydCwgaW5kZW1uaXR5LCBvciBsaWFiaWxpdHkgb2JsaWdhdGlvbiBpcyBvZmZlcmVkIGJ5CiAgICAgICAgWW91IGFsb25lLCBhbmQgWW91IGhlcmVieSBhZ3JlZSB0byBpbmRlbW5pZnkgZXZlcnkgQ29udHJpYnV0b3IgZm9yIGFueQogICAgICAgIGxpYWJpbGl0eSBpbmN1cnJlZCBieSBzdWNoIENvbnRyaWJ1dG9yIGFzIGEgcmVzdWx0IG9mIHdhcnJhbnR5LCBzdXBwb3J0LAogICAgICAgIGluZGVtbml0eSBvciBsaWFiaWxpdHkgdGVybXMgWW91IG9mZmVyLiBZb3UgbWF5IGluY2x1ZGUgYWRkaXRpb25hbAogICAgICAgIGRpc2NsYWltZXJzIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9ucyBvZiBsaWFiaWxpdHkgc3BlY2lmaWMgdG8gYW55CiAgICAgICAganVyaXNkaWN0aW9uLgogICAgICAgIAogICAgICAgIDQuIEluYWJpbGl0eSB0byBDb21wbHkgRHVlIHRvIFN0YXR1dGUgb3IgUmVndWxhdGlvbgogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIAogICAgICAgIElmIGl0IGlzIGltcG9zc2libGUgZm9yIFlvdSB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIHRlcm1zIG9mIHRoaXMKICAgICAgICBMaWNlbnNlIHdpdGggcmVzcGVjdCB0byBzb21lIG9yIGFsbCBvZiB0aGUgQ292ZXJlZCBTb2Z0d2FyZSBkdWUgdG8KICAgICAgICBzdGF0dXRlLCBqdWRpY2lhbCBvcmRlciwgb3IgcmVndWxhdGlvbiB0aGVuIFlvdSBtdXN0OiAoYSkgY29tcGx5IHdpdGgKICAgICAgICB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHRvIHRoZSBtYXhpbXVtIGV4dGVudCBwb3NzaWJsZTsgYW5kIChiKQogICAgICAgIGRlc2NyaWJlIHRoZSBsaW1pdGF0aW9ucyBhbmQgdGhlIGNvZGUgdGhleSBhZmZlY3QuIFN1Y2ggZGVzY3JpcHRpb24gbXVzdAogICAgICAgIGJlIHBsYWNlZCBpbiBhIHRleHQgZmlsZSBpbmNsdWRlZCB3aXRoIGFsbCBkaXN0cmlidXRpb25zIG9mIHRoZSBDb3ZlcmVkCiAgICAgICAgU29mdHdhcmUgdW5kZXIgdGhpcyBMaWNlbnNlLiBFeGNlcHQgdG8gdGhlIGV4dGVudCBwcm9oaWJpdGVkIGJ5IHN0YXR1dGUKICAgICAgICBvciByZWd1bGF0aW9uLCBzdWNoIGRlc2NyaXB0aW9uIG11c3QgYmUgc3VmZmljaWVudGx5IGRldGFpbGVkIGZvciBhCiAgICAgICAgcmVjaXBpZW50IG9mIG9yZGluYXJ5IHNraWxsIHRvIGJlIGFibGUgdG8gdW5kZXJzdGFuZCBpdC4KICAgICAgICAKICAgICAgICA1LiBUZXJtaW5hdGlvbgogICAgICAgIC0tLS0tLS0tLS0tLS0tCiAgICAgICAgCiAgICAgICAgNS4xLiBUaGUgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIHdpbGwgdGVybWluYXRlIGF1dG9tYXRpY2FsbHkKICAgICAgICBpZiBZb3UgZmFpbCB0byBjb21wbHkgd2l0aCBhbnkgb2YgaXRzIHRlcm1zLiBIb3dldmVyLCBpZiBZb3UgYmVjb21lCiAgICAgICAgY29tcGxpYW50LCB0aGVuIHRoZSByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIKICAgICAgICBDb250cmlidXRvciBhcmUgcmVpbnN0YXRlZCAoYSkgcHJvdmlzaW9uYWxseSwgdW5sZXNzIGFuZCB1bnRpbCBzdWNoCiAgICAgICAgQ29udHJpYnV0b3IgZXhwbGljaXRseSBhbmQgZmluYWxseSB0ZXJtaW5hdGVzIFlvdXIgZ3JhbnRzLCBhbmQgKGIpIG9uIGFuCiAgICAgICAgb25nb2luZyBiYXNpcywgaWYgc3VjaCBDb250cmlidXRvciBmYWlscyB0byBub3RpZnkgWW91IG9mIHRoZQogICAgICAgIG5vbi1jb21wbGlhbmNlIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucyBwcmlvciB0byA2MCBkYXlzIGFmdGVyIFlvdSBoYXZlCiAgICAgICAgY29tZSBiYWNrIGludG8gY29tcGxpYW5jZS4gTW9yZW92ZXIsIFlvdXIgZ3JhbnRzIGZyb20gYSBwYXJ0aWN1bGFyCiAgICAgICAgQ29udHJpYnV0b3IgYXJlIHJlaW5zdGF0ZWQgb24gYW4gb25nb2luZyBiYXNpcyBpZiBzdWNoIENvbnRyaWJ1dG9yCiAgICAgICAgbm90aWZpZXMgWW91IG9mIHRoZSBub24tY29tcGxpYW5jZSBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlCiAgICAgICAgZmlyc3QgdGltZSBZb3UgaGF2ZSByZWNlaXZlZCBub3RpY2Ugb2Ygbm9uLWNvbXBsaWFuY2Ugd2l0aCB0aGlzIExpY2Vuc2UKICAgICAgICBmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZCBZb3UgYmVjb21lIGNvbXBsaWFudCBwcmlvciB0byAzMCBkYXlzIGFmdGVyCiAgICAgICAgWW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCiAgICAgICAgCiAgICAgICAgNS4yLiBJZiBZb3UgaW5pdGlhdGUgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgYnkgYXNzZXJ0aW5nIGEgcGF0ZW50CiAgICAgICAgaW5mcmluZ2VtZW50IGNsYWltIChleGNsdWRpbmcgZGVjbGFyYXRvcnkganVkZ21lbnQgYWN0aW9ucywKICAgICAgICBjb3VudGVyLWNsYWltcywgYW5kIGNyb3NzLWNsYWltcykgYWxsZWdpbmcgdGhhdCBhIENvbnRyaWJ1dG9yIFZlcnNpb24KICAgICAgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluZnJpbmdlcyBhbnkgcGF0ZW50LCB0aGVuIHRoZSByaWdodHMgZ3JhbnRlZCB0bwogICAgICAgIFlvdSBieSBhbnkgYW5kIGFsbCBDb250cmlidXRvcnMgZm9yIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIHVuZGVyIFNlY3Rpb24KICAgICAgICAyLjEgb2YgdGhpcyBMaWNlbnNlIHNoYWxsIHRlcm1pbmF0ZS4KICAgICAgICAKICAgICAgICA1LjMuIEluIHRoZSBldmVudCBvZiB0ZXJtaW5hdGlvbiB1bmRlciBTZWN0aW9ucyA1LjEgb3IgNS4yIGFib3ZlLCBhbGwKICAgICAgICBlbmQgdXNlciBsaWNlbnNlIGFncmVlbWVudHMgKGV4Y2x1ZGluZyBkaXN0cmlidXRvcnMgYW5kIHJlc2VsbGVycykgd2hpY2gKICAgICAgICBoYXZlIGJlZW4gdmFsaWRseSBncmFudGVkIGJ5IFlvdSBvciBZb3VyIGRpc3RyaWJ1dG9ycyB1bmRlciB0aGlzIExpY2Vuc2UKICAgICAgICBwcmlvciB0byB0ZXJtaW5hdGlvbiBzaGFsbCBzdXJ2aXZlIHRlcm1pbmF0aW9uLgogICAgICAgIAogICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogIDYuIERpc2NsYWltZXIgb2YgV2FycmFudHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogIENvdmVyZWQgU29mdHdhcmUgaXMgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlIG9uIGFuICJhcyBpcyIgICAgICAgKgogICAgICAgICogIGJhc2lzLCB3aXRob3V0IHdhcnJhbnR5IG9mIGFueSBraW5kLCBlaXRoZXIgZXhwcmVzc2VkLCBpbXBsaWVkLCBvciAgKgogICAgICAgICogIHN0YXR1dG9yeSwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHdhcnJhbnRpZXMgdGhhdCB0aGUgICAgICAgKgogICAgICAgICogIENvdmVyZWQgU29mdHdhcmUgaXMgZnJlZSBvZiBkZWZlY3RzLCBtZXJjaGFudGFibGUsIGZpdCBmb3IgYSAgICAgICAgKgogICAgICAgICogIHBhcnRpY3VsYXIgcHVycG9zZSBvciBub24taW5mcmluZ2luZy4gVGhlIGVudGlyZSByaXNrIGFzIHRvIHRoZSAgICAgKgogICAgICAgICogIHF1YWxpdHkgYW5kIHBlcmZvcm1hbmNlIG9mIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGlzIHdpdGggWW91LiAgICAgICAgKgogICAgICAgICogIFNob3VsZCBhbnkgQ292ZXJlZCBTb2Z0d2FyZSBwcm92ZSBkZWZlY3RpdmUgaW4gYW55IHJlc3BlY3QsIFlvdSAgICAgKgogICAgICAgICogIChub3QgYW55IENvbnRyaWJ1dG9yKSBhc3N1bWUgdGhlIGNvc3Qgb2YgYW55IG5lY2Vzc2FyeSBzZXJ2aWNpbmcsICAgKgogICAgICAgICogIHJlcGFpciwgb3IgY29ycmVjdGlvbi4gVGhpcyBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGNvbnN0aXR1dGVzIGFuICAgKgogICAgICAgICogIGVzc2VudGlhbCBwYXJ0IG9mIHRoaXMgTGljZW5zZS4gTm8gdXNlIG9mIGFueSBDb3ZlcmVkIFNvZnR3YXJlIGlzICAgKgogICAgICAgICogIGF1dGhvcml6ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGV4Y2VwdCB1bmRlciB0aGlzIGRpc2NsYWltZXIuICAgICAgICAgKgogICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgIAogICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogIDcuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogIFVuZGVyIG5vIGNpcmN1bXN0YW5jZXMgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwgd2hldGhlciB0b3J0ICAgICAgKgogICAgICAgICogIChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsIHNoYWxsIGFueSAgICAgICAgICAgKgogICAgICAgICogIENvbnRyaWJ1dG9yLCBvciBhbnlvbmUgd2hvIGRpc3RyaWJ1dGVzIENvdmVyZWQgU29mdHdhcmUgYXMgICAgICAgICAgKgogICAgICAgICogIHBlcm1pdHRlZCBhYm92ZSwgYmUgbGlhYmxlIHRvIFlvdSBmb3IgYW55IGRpcmVjdCwgaW5kaXJlY3QsICAgICAgICAgKgogICAgICAgICogIHNwZWNpYWwsIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyICAgICAgKgogICAgICAgICogIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBkYW1hZ2VzIGZvciBsb3N0IHByb2ZpdHMsIGxvc3Mgb2YgICAgKgogICAgICAgICogIGdvb2R3aWxsLCB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBhbnkgICAgKgogICAgICAgICogIGFuZCBhbGwgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcywgZXZlbiBpZiBzdWNoIHBhcnR5ICAgICAgKgogICAgICAgICogIHNoYWxsIGhhdmUgYmVlbiBpbmZvcm1lZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLiBUaGlzICAgKgogICAgICAgICogIGxpbWl0YXRpb24gb2YgbGlhYmlsaXR5IHNoYWxsIG5vdCBhcHBseSB0byBsaWFiaWxpdHkgZm9yIGRlYXRoIG9yICAgKgogICAgICAgICogIHBlcnNvbmFsIGluanVyeSByZXN1bHRpbmcgZnJvbSBzdWNoIHBhcnR5J3MgbmVnbGlnZW5jZSB0byB0aGUgICAgICAgKgogICAgICAgICogIGV4dGVudCBhcHBsaWNhYmxlIGxhdyBwcm9oaWJpdHMgc3VjaCBsaW1pdGF0aW9uLiBTb21lICAgICAgICAgICAgICAgKgogICAgICAgICogIGp1cmlzZGljdGlvbnMgZG8gbm90IGFsbG93IHRoZSBleGNsdXNpb24gb3IgbGltaXRhdGlvbiBvZiAgICAgICAgICAgKgogICAgICAgICogIGluY2lkZW50YWwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzbyB0aGlzIGV4Y2x1c2lvbiBhbmQgICAgICAgICAgKgogICAgICAgICogIGxpbWl0YXRpb24gbWF5IG5vdCBhcHBseSB0byBZb3UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgIAogICAgICAgIDguIExpdGlnYXRpb24KICAgICAgICAtLS0tLS0tLS0tLS0tCiAgICAgICAgCiAgICAgICAgQW55IGxpdGlnYXRpb24gcmVsYXRpbmcgdG8gdGhpcyBMaWNlbnNlIG1heSBiZSBicm91Z2h0IG9ubHkgaW4gdGhlCiAgICAgICAgY291cnRzIG9mIGEganVyaXNkaWN0aW9uIHdoZXJlIHRoZSBkZWZlbmRhbnQgbWFpbnRhaW5zIGl0cyBwcmluY2lwYWwKICAgICAgICBwbGFjZSBvZiBidXNpbmVzcyBhbmQgc3VjaCBsaXRpZ2F0aW9uIHNoYWxsIGJlIGdvdmVybmVkIGJ5IGxhd3Mgb2YgdGhhdAogICAgICAgIGp1cmlzZGljdGlvbiwgd2l0aG91dCByZWZlcmVuY2UgdG8gaXRzIGNvbmZsaWN0LW9mLWxhdyBwcm92aXNpb25zLgogICAgICAgIE5vdGhpbmcgaW4gdGhpcyBTZWN0aW9uIHNoYWxsIHByZXZlbnQgYSBwYXJ0eSdzIGFiaWxpdHkgdG8gYnJpbmcKICAgICAgICBjcm9zcy1jbGFpbXMgb3IgY291bnRlci1jbGFpbXMuCiAgICAgICAgCiAgICAgICAgOS4gTWlzY2VsbGFuZW91cwogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAKICAgICAgICBUaGlzIExpY2Vuc2UgcmVwcmVzZW50cyB0aGUgY29tcGxldGUgYWdyZWVtZW50IGNvbmNlcm5pbmcgdGhlIHN1YmplY3QKICAgICAgICBtYXR0ZXIgaGVyZW9mLiBJZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSBpcyBoZWxkIHRvIGJlCiAgICAgICAgdW5lbmZvcmNlYWJsZSwgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgb25seSB0byB0aGUgZXh0ZW50CiAgICAgICAgbmVjZXNzYXJ5IHRvIG1ha2UgaXQgZW5mb3JjZWFibGUuIEFueSBsYXcgb3IgcmVndWxhdGlvbiB3aGljaCBwcm92aWRlcwogICAgICAgIHRoYXQgdGhlIGxhbmd1YWdlIG9mIGEgY29udHJhY3Qgc2hhbGwgYmUgY29uc3RydWVkIGFnYWluc3QgdGhlIGRyYWZ0ZXIKICAgICAgICBzaGFsbCBub3QgYmUgdXNlZCB0byBjb25zdHJ1ZSB0aGlzIExpY2Vuc2UgYWdhaW5zdCBhIENvbnRyaWJ1dG9yLgogICAgICAgIAogICAgICAgIDEwLiBWZXJzaW9ucyBvZiB0aGUgTGljZW5zZQogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIAogICAgICAgIDEwLjEuIE5ldyBWZXJzaW9ucwogICAgICAgIAogICAgICAgIE1vemlsbGEgRm91bmRhdGlvbiBpcyB0aGUgbGljZW5zZSBzdGV3YXJkLiBFeGNlcHQgYXMgcHJvdmlkZWQgaW4gU2VjdGlvbgogICAgICAgIDEwLjMsIG5vIG9uZSBvdGhlciB0aGFuIHRoZSBsaWNlbnNlIHN0ZXdhcmQgaGFzIHRoZSByaWdodCB0byBtb2RpZnkgb3IKICAgICAgICBwdWJsaXNoIG5ldyB2ZXJzaW9ucyBvZiB0aGlzIExpY2Vuc2UuIEVhY2ggdmVyc2lvbiB3aWxsIGJlIGdpdmVuIGEKICAgICAgICBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4KICAgICAgICAKICAgICAgICAxMC4yLiBFZmZlY3Qgb2YgTmV3IFZlcnNpb25zCiAgICAgICAgCiAgICAgICAgWW91IG1heSBkaXN0cmlidXRlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgdmVyc2lvbgogICAgICAgIG9mIHRoZSBMaWNlbnNlIHVuZGVyIHdoaWNoIFlvdSBvcmlnaW5hbGx5IHJlY2VpdmVkIHRoZSBDb3ZlcmVkIFNvZnR3YXJlLAogICAgICAgIG9yIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbnkgc3Vic2VxdWVudCB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgbGljZW5zZQogICAgICAgIHN0ZXdhcmQuCiAgICAgICAgCiAgICAgICAgMTAuMy4gTW9kaWZpZWQgVmVyc2lvbnMKICAgICAgICAKICAgICAgICBJZiB5b3UgY3JlYXRlIHNvZnR3YXJlIG5vdCBnb3Zlcm5lZCBieSB0aGlzIExpY2Vuc2UsIGFuZCB5b3Ugd2FudCB0bwogICAgICAgIGNyZWF0ZSBhIG5ldyBsaWNlbnNlIGZvciBzdWNoIHNvZnR3YXJlLCB5b3UgbWF5IGNyZWF0ZSBhbmQgdXNlIGEKICAgICAgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoaXMgTGljZW5zZSBpZiB5b3UgcmVuYW1lIHRoZSBsaWNlbnNlIGFuZCByZW1vdmUKICAgICAgICBhbnkgcmVmZXJlbmNlcyB0byB0aGUgbmFtZSBvZiB0aGUgbGljZW5zZSBzdGV3YXJkIChleGNlcHQgdG8gbm90ZSB0aGF0CiAgICAgICAgc3VjaCBtb2RpZmllZCBsaWNlbnNlIGRpZmZlcnMgZnJvbSB0aGlzIExpY2Vuc2UpLgogICAgICAgIAogICAgICAgIDEwLjQuIERpc3RyaWJ1dGluZyBTb3VyY2UgQ29kZSBGb3JtIHRoYXQgaXMgSW5jb21wYXRpYmxlIFdpdGggU2Vjb25kYXJ5CiAgICAgICAgTGljZW5zZXMKICAgICAgICAKICAgICAgICBJZiBZb3UgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgU291cmNlIENvZGUgRm9ybSB0aGF0IGlzIEluY29tcGF0aWJsZSBXaXRoCiAgICAgICAgU2Vjb25kYXJ5IExpY2Vuc2VzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIHZlcnNpb24gb2YgdGhlIExpY2Vuc2UsIHRoZQogICAgICAgIG5vdGljZSBkZXNjcmliZWQgaW4gRXhoaWJpdCBCIG9mIHRoaXMgTGljZW5zZSBtdXN0IGJlIGF0dGFjaGVkLgogICAgICAgIAogICAgICAgIEV4aGliaXQgQSAtIFNvdXJjZSBDb2RlIEZvcm0gTGljZW5zZSBOb3RpY2UKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgCiAgICAgICAgICBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCiAgICAgICAgICBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCiAgICAgICAgICBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgogICAgICAgIAogICAgICAgIElmIGl0IGlzIG5vdCBwb3NzaWJsZSBvciBkZXNpcmFibGUgdG8gcHV0IHRoZSBub3RpY2UgaW4gYSBwYXJ0aWN1bGFyCiAgICAgICAgZmlsZSwgdGhlbiBZb3UgbWF5IGluY2x1ZGUgdGhlIG5vdGljZSBpbiBhIGxvY2F0aW9uIChzdWNoIGFzIGEgTElDRU5TRQogICAgICAgIGZpbGUgaW4gYSByZWxldmFudCBkaXJlY3RvcnkpIHdoZXJlIGEgcmVjaXBpZW50IHdvdWxkIGJlIGxpa2VseSB0byBsb29rCiAgICAgICAgZm9yIHN1Y2ggYSBub3RpY2UuCiAgICAgICAgCiAgICAgICAgWW91IG1heSBhZGQgYWRkaXRpb25hbCBhY2N1cmF0ZSBub3RpY2VzIG9mIGNvcHlyaWdodCBvd25lcnNoaXAuCiAgICAgICAgCiAgICAgICAgRXhoaWJpdCBCIC0gIkluY29tcGF0aWJsZSBXaXRoIFNlY29uZGFyeSBMaWNlbnNlcyIgTm90aWNlCiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgCiAgICAgICAgICBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgIkluY29tcGF0aWJsZSBXaXRoIFNlY29uZGFyeSBMaWNlbnNlcyIsIGFzCiAgICAgICAgICBkZWZpbmVkIGJ5IHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlLCB2LiAyLjAuCiAgICAgICAgClByb2plY3QtVVJMOiBIb21lcGFnZSwgaHR0cHM6Ly9naXRodWIuY29tL3B5b2RpZGUvbWljcm9waXAKUHJvamVjdC1VUkw6IEJ1ZyBUcmFja2VyLCBodHRwczovL2dpdGh1Yi5jb20vcHlvZGlkZS9taWNyb3BpcC9pc3N1ZXMKQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMKQ2xhc3NpZmllcjogTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogTW96aWxsYSBQdWJsaWMgTGljZW5zZSAyLjAgKE1QTCAyLjApCkNsYXNzaWZpZXI6IE9wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRlbnQKUmVxdWlyZXMtUHl0aG9uOiA+PTMuMTAKRGVzY3JpcHRpb24tQ29udGVudC1UeXBlOiB0ZXh0L21hcmtkb3duCkxpY2Vuc2UtRmlsZTogTElDRU5TRQpSZXF1aXJlcy1EaXN0OiBwYWNrYWdpbmcgKD49MjMuMCkKUHJvdmlkZXMtRXh0cmE6IHRlc3QKUmVxdWlyZXMtRGlzdDogcHl0ZXN0LXB5b2RpZGUgOyBleHRyYSA9PSAndGVzdCcKUmVxdWlyZXMtRGlzdDogcHl0ZXN0LWNvdiA7IGV4dHJhID09ICd0ZXN0JwpSZXF1aXJlcy1EaXN0OiBidWlsZCA7IGV4dHJhID09ICd0ZXN0JwoKIyBtaWNyb3BpcAoKWyFbUHlQSSBMYXRlc3QgUmVsZWFzZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvbWljcm9waXAuc3ZnKV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L21pY3JvcGlwLykKIVtHSEFdKGh0dHBzOi8vZ2l0aHViLmNvbS9weW9kaWRlL21pY3JvcGlwL2FjdGlvbnMvd29ya2Zsb3dzL21haW4ueW1sL2JhZGdlLnN2ZykKCkEgbGlnaHR3ZWlnaHQgUHl0aG9uIHBhY2thZ2UgaW5zdGFsbGVyIGZvciB0aGUgd2ViCgojIyBJbnN0YWxsYXRpb24KCkluIFtQeW9kaWRlXShodHRwczovL3B5b2RpZGUub3JnKSwgeW91IGNhbiBpbnN0YWxsIG1pY3JvcGlwLAogLSBlaXRoZXIgaW1wbGljaXRseSBieSBpbXBvcnRpbmcgaXQgaW4gdGhlIFJFUEwKIC0gb3IgZXhwbGljaXRseSB2aWEgYHB5b2RpZGUubG9hZFBhY2thZ2UoJ21pY3JvcGlwJylgLiBZb3UgY2FuIGFsc28gaW5zdGFsbCBieSBVUkwgZnJvbSBQeVBJIGZvciBpbnN0YW5jZS4KCiMjIFVzYWdlCgpgYGBweQppbXBvcnQgbWljcm9waXAKYXdhaXQgbWljcm9waXAuaW5zdGFsbCg8bGlzdC1vZi1wYWNrYWdlcz4pCmBgYApGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCltkb2N1bWVudGF0aW9uXShodHRwczovL3B5b2RpZGUub3JnL2VuL3N0YWJsZS91c2FnZS9sb2FkaW5nLXBhY2thZ2VzLmh0bWwjbWljcm9waXApLgoKIyMgTGljZW5zZQoKbWljcm9waXAgdXNlcyB0aGUgW01vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbgoyLjBdKGh0dHBzOi8vY2hvb3NlYWxpY2Vuc2UuY29tL2xpY2Vuc2VzL21wbC0yLjAvKS4KUEsDBBQAAAAAALsro1ZJoiHLXAAAAFwAAAAeAAAAbWljcm9waXAtMC4zLjAuZGlzdC1pbmZvL1dIRUVMV2hlZWwtVmVyc2lvbjogMS4wCkdlbmVyYXRvcjogYmRpc3Rfd2hlZWwgKDAuNDAuMCkKUm9vdC1Jcy1QdXJlbGliOiB0cnVlClRhZzogcHkzLW5vbmUtYW55CgpQSwMEFAAAAAAAuyujVjgThIAJAAAACQAAACYAAABtaWNyb3BpcC0wLjMuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dG1pY3JvcGlwClBLAwQUAAAAAAC7K6NWrQx0w7sHAAC7BwAAHwAAAG1pY3JvcGlwLTAuMy4wLmRpc3QtaW5mby9SRUNPUkRtaWNyb3BpcC9fX2luaXRfXy5weSxzaGEyNTY9akV5em1INk41UXp2Q05qWnVlaGFMTDBKemNjT1RDMEUwbnVjLTRBcVBxdyw0MzUKbWljcm9waXAvX2NvbXBhdC5weSxzaGEyNTY9UHpka3pubnJOV0FJZkFsWkxlRGZjSURaNkloNGhtVkZMWVI2dGRlUGU4RSw4MzQKbWljcm9waXAvX2NvbXBhdF9pbl9weW9kaWRlLnB5LHNoYTI1Nj1DVG1PX2EyMzEtNlNleTBON09CQkpBY01SLTB4bXNlUFV2TDNHUktMSXBFLDEzNzYKbWljcm9waXAvX2NvbXBhdF9ub3RfaW5fcHlvZGlkZS5weSxzaGEyNTY9T203aGJKc0FqMlFST0licHhTTjlHN3U2V2gyMUFLSi0zRW5OekpJTjBFUSwyNzQxCm1pY3JvcGlwL19taWNyb3BpcC5weSxzaGEyNTY9cUZVYS14VGlEbnBPeEU1VGY5WTFaXzljZDUwY3d2YV9TNFhzMHhMRk1KcywzMDUxMgptaWNyb3BpcC9fbW9ja19wYWNrYWdlLnB5LHNoYTI1Nj11WU5MM2w2OERGNF9xSm8tb0pFWTMyTnBtRkpwUWxuUkRMWm1MNHVlMk5NLDI5ODYKbWljcm9waXAvX3V0aWxzLnB5LHNoYTI1Nj1vOXVpbWIzOGdOaU1LazVodGU2Ym1LTi0xdlRnSHNXalBfdHk5S0EwRjVRLDEyMTEKbWljcm9waXAvX3ZlcnNpb24ucHksc2hhMjU2PWpQMzdQYnpDN3UzMGhxb0tKWjQxTlczVGdvVnp4allkTFU1TTBkcm1feTQsMTYwCm1pY3JvcGlwL3BhY2thZ2UucHksc2hhMjU2PVo0RVhYd0pWMUhlZTM0MHpLLU9wQk83VWdaQmE1QW13eHRReW93bzh4WE0sMjE4MgptaWNyb3BpcC91bmluc3RhbGwucHksc2hhMjU2PTA3Z010RlVSTVZEUmlubXhKdmxUSWVQWHBRT0NyM0EyWkpCRDZxeFhVZzAsMzAwNAptaWNyb3BpcC9leHRlcm5hbHMvX19pbml0X18ucHksc2hhMjU2PTQ3REVRcGo4SEJTYS1fVEltVy01SkNldVFlUmttNU5NcEpXWkczaFN1RlUsMAptaWNyb3BpcC9leHRlcm5hbHMvcGlwL19faW5pdF9fLnB5LHNoYTI1Nj1aTlpVOHY5SXJmckRJNTBSdmtRR093OG1QaTg5UEs3Njk3a1hqdWdSVnVrLDkzCm1pY3JvcGlwL2V4dGVybmFscy9waXAvX2ludGVybmFsL19faW5pdF9fLnB5LHNoYTI1Nj00N0RFUXBqOEhCU2EtX1RJbVctNUpDZXVRZVJrbTVOTXBKV1pHM2hTdUZVLDAKbWljcm9waXAvZXh0ZXJuYWxzL3BpcC9faW50ZXJuYWwvdXRpbHMvX19pbml0X18ucHksc2hhMjU2PTQ3REVRcGo4SEJTYS1fVEltVy01SkNldVFlUmttNU5NcEpXWkczaFN1RlUsMAptaWNyb3BpcC9leHRlcm5hbHMvcGlwL19pbnRlcm5hbC91dGlscy9wa2dfcmVzb3VyY2VzLnB5LHNoYTI1Nj1hSVJsMHhDOHVQckxpMzRlVmI0Ynd4aEVON3RHelpqdkhnT0RXekRVOXpvLDExMDUKbWljcm9waXAvZXh0ZXJuYWxzL3BpcC9faW50ZXJuYWwvdXRpbHMvd2hlZWwucHksc2hhMjU2PUJfRkloUk1TUld2RHVlTUhodnZKUW5wRVlBamZyZ0FzZzNoUTE5c1BlbEEsNjQwNgptaWNyb3BpcC9leHRlcm5hbHMvcGlwL192ZW5kb3IvX19pbml0X18ucHksc2hhMjU2PTQ3REVRcGo4SEJTYS1fVEltVy01SkNldVFlUmttNU5NcEpXWkczaFN1RlUsMAptaWNyb3BpcC9leHRlcm5hbHMvcGlwL192ZW5kb3IvcGtnX3Jlc291cmNlcy5weSxzaGEyNTY9ODlnY3FNRmxidkFrX3dCdGFsUlRQVlJucXVmb09rM1dibW5zMTc5YkNiRSwxNTgxNAptaWNyb3BpcC0wLjMuMC5kaXN0LWluZm8vTElDRU5TRSxzaGEyNTY9SHlWdXl0R1NpQVVRNkVyV0JIVHF0MWlTR0hoTG1sQzhmTzdqVEN1UjhkVSwxNjcyNQptaWNyb3BpcC0wLjMuMC5kaXN0LWluZm8vTUVUQURBVEEsc2hhMjU2PUtiYnpjM0lXNGZhenUzVFFCMjd6S2JXcmZRWlBOTTRqUEpIQnF2MGY4REksMjEyMjYKbWljcm9waXAtMC4zLjAuZGlzdC1pbmZvL1dIRUVMLHNoYTI1Nj1wa2N0Wll6VVM0QVlWbjZkSi03MzY3T0paaXZGMmU4UkE5Yl9aQmppZjE4LDkyCm1pY3JvcGlwLTAuMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0LHNoYTI1Nj1xdmo4WXBHNDZ2WDZvQkhIZkloM2pFQ1poSDRaSDNzZVhJa2MtUUZhVnZZLDkKbWljcm9waXAtMC4zLjAuZGlzdC1pbmZvL1JFQ09SRCwsClBLAQIUAxQAAAAAALsro1bvXlytswEAALMBAAAUAAAAAAAAAAAAAACAAQAAAABtaWNyb3BpcC9fX2luaXRfXy5weVBLAQIUAxQAAAAAALsro1agVbuzQgMAAEIDAAATAAAAAAAAAAAAAACAAeUBAABtaWNyb3BpcC9fY29tcGF0LnB5UEsBAhQDFAAAAAAAuyujVvH2Ea5gBQAAYAUAAB4AAAAAAAAAAAAAAIABWAUAAG1pY3JvcGlwL19jb21wYXRfaW5fcHlvZGlkZS5weVBLAQIUAxQAAAAAALsro1YdweB8tQoAALUKAAAiAAAAAAAAAAAAAACAAfQKAABtaWNyb3BpcC9fY29tcGF0X25vdF9pbl9weW9kaWRlLnB5UEsBAhQDFAAAAAAAuyujVnFhrt8wdwAAMHcAABUAAAAAAAAAAAAAAIAB6RUAAG1pY3JvcGlwL19taWNyb3BpcC5weVBLAQIUAxQAAAAAALsro1bkwHEJqgsAAKoLAAAZAAAAAAAAAAAAAACAAUyNAABtaWNyb3BpcC9fbW9ja19wYWNrYWdlLnB5UEsBAhQDFAAAAAAAuyujVi4I2Ya7BAAAuwQAABIAAAAAAAAAAAAAAIABLZkAAG1pY3JvcGlwL191dGlscy5weVBLAQIUAxQAAAAAALsro1a4tXxqoAAAAKAAAAAUAAAAAAAAAAAAAACAARieAABtaWNyb3BpcC9fdmVyc2lvbi5weVBLAQIUAxQAAAAAALsro1YdJKCihggAAIYIAAATAAAAAAAAAAAAAACAAeqeAABtaWNyb3BpcC9wYWNrYWdlLnB5UEsBAhQDFAAAAAAAuyujVoPzg2G8CwAAvAsAABUAAAAAAAAAAAAAAIABoacAAG1pY3JvcGlwL3VuaW5zdGFsbC5weVBLAQIUAxQAAAAAALsro1YAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAACAAZCzAABtaWNyb3BpcC9leHRlcm5hbHMvX19pbml0X18ucHlQSwECFAMUAAAAAAC7K6NWYU7KjV0AAABdAAAAIgAAAAAAAAAAAAAAgAHMswAAbWljcm9waXAvZXh0ZXJuYWxzL3BpcC9fX2luaXRfXy5weVBLAQIUAxQAAAAAALsro1YAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAACAAWm0AABtaWNyb3BpcC9leHRlcm5hbHMvcGlwL19pbnRlcm5hbC9fX2luaXRfXy5weVBLAQIUAxQAAAAAALsro1YAAAAAAAAAAAAAAAAyAAAAAAAAAAAAAACAAbO0AABtaWNyb3BpcC9leHRlcm5hbHMvcGlwL19pbnRlcm5hbC91dGlscy9fX2luaXRfXy5weVBLAQIUAxQAAAAAALsro1ZxRcuOUQQAAFEEAAA3AAAAAAAAAAAAAACAAQO1AABtaWNyb3BpcC9leHRlcm5hbHMvcGlwL19pbnRlcm5hbC91dGlscy9wa2dfcmVzb3VyY2VzLnB5UEsBAhQDFAAAAAAAuyujVnHwldUGGQAABhkAAC8AAAAAAAAAAAAAAIABqbkAAG1pY3JvcGlwL2V4dGVybmFscy9waXAvX2ludGVybmFsL3V0aWxzL3doZWVsLnB5UEsBAhQDFAAAAAAAuyujVgAAAAAAAAAAAAAAACoAAAAAAAAAAAAAAIAB/NIAAG1pY3JvcGlwL2V4dGVybmFscy9waXAvX3ZlbmRvci9fX2luaXRfXy5weVBLAQIUAxQAAAAAALsro1YmIq4qxj0AAMY9AAAvAAAAAAAAAAAAAACAAUTTAABtaWNyb3BpcC9leHRlcm5hbHMvcGlwL192ZW5kb3IvcGtnX3Jlc291cmNlcy5weVBLAQIUAxQAAAAAALsro1aRaTADVUEAAFVBAAAgAAAAAAAAAAAAAACAAVcRAQBtaWNyb3BpcC0wLjMuMC5kaXN0LWluZm8vTElDRU5TRVBLAQIUAxQAAAAAALsro1bCLJj06lIAAOpSAAAhAAAAAAAAAAAAAACAAepSAQBtaWNyb3BpcC0wLjMuMC5kaXN0LWluZm8vTUVUQURBVEFQSwECFAMUAAAAAAC7K6NWSaIhy1wAAABcAAAAHgAAAAAAAAAAAAAAgAETpgEAbWljcm9waXAtMC4zLjAuZGlzdC1pbmZvL1dIRUVMUEsBAhQDFAAAAAAAuyujVjgThIAJAAAACQAAACYAAAAAAAAAAAAAAIABq6YBAG1pY3JvcGlwLTAuMy4wLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0UEsBAhQDFAAAAAAAuyujVq0MdMO7BwAAuwcAAB8AAAAAAAAAAAAAAIAB+KYBAG1pY3JvcGlwLTAuMy4wLmRpc3QtaW5mby9SRUNPUkRQSwUGAAAAABcAFwAGBwAA8K4BAAAA
UEsDBBQAAAAAALwro1YkQqL0OgEAADoBAAAXAAAAY2xvdWRwaWNrbGUvX19pbml0X18ucHlmcm9tIGNsb3VkcGlja2xlLmNsb3VkcGlja2xlIGltcG9ydCAqICAjIG5vcWEKZnJvbSBjbG91ZHBpY2tsZS5jbG91ZHBpY2tsZV9mYXN0IGltcG9ydCBDbG91ZFBpY2tsZXIsIGR1bXBzLCBkdW1wICAjIG5vcWEKCiMgQ29uZm9ybSB0byB0aGUgY29udmVudGlvbiB1c2VkIGJ5IHB5dGhvbiBzZXJpYWxpemF0aW9uIGxpYnJhcmllcywgd2hpY2gKIyBleHBvc2UgdGhlaXIgUGlja2xlciBzdWJjbGFzcyBhdCB0b3AtbGV2ZWwgdW5kZXIgdGhlICAiUGlja2xlciIgbmFtZS4KUGlja2xlciA9IENsb3VkUGlja2xlcgoKX192ZXJzaW9uX18gPSAnMi4yLjEnClBLAwQUAAAAAAC8K6NWFux6yEGJAABBiQAAGgAAAGNsb3VkcGlja2xlL2Nsb3VkcGlja2xlLnB5IiIiClRoaXMgY2xhc3MgaXMgZGVmaW5lZCB0byBvdmVycmlkZSBzdGFuZGFyZCBwaWNrbGUgZnVuY3Rpb25hbGl0eQoKVGhlIGdvYWxzIG9mIGl0IGZvbGxvdzoKLVNlcmlhbGl6ZSBsYW1iZGFzIGFuZCBuZXN0ZWQgZnVuY3Rpb25zIHRvIGNvbXBpbGVkIGJ5dGUgY29kZQotRGVhbCB3aXRoIG1haW4gbW9kdWxlIGNvcnJlY3RseQotRGVhbCB3aXRoIG90aGVyIG5vbi1zZXJpYWxpemFibGUgb2JqZWN0cwoKSXQgZG9lcyBub3QgaW5jbHVkZSBhbiB1bnBpY2tsZXIsIGFzIHN0YW5kYXJkIHB5dGhvbiB1bnBpY2tsaW5nIHN1ZmZpY2VzLgoKVGhpcyBtb2R1bGUgd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBgY2xvdWRgIHBhY2thZ2UsIGRldmVsb3BlZCBieSBgUGlDbG91ZCwgSW5jLgo8aHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTQwNjI2MDA0MDEyL2h0dHA6Ly93d3cucGljbG91ZC5jb20vPmBfLgoKQ29weXJpZ2h0IChjKSAyMDEyLCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCkNvcHlyaWdodCAoYykgMjAwOSBgUGlDbG91ZCwgSW5jLiA8aHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTQwNjI2MDA0MDEyL2h0dHA6Ly93d3cucGljbG91ZC5jb20vPmBfLgpBbGwgcmlnaHRzIHJlc2VydmVkLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwphcmUgbWV0OgogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleSBub3IgdGhlCiAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCiAgICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbgogICAgICBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwoiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVApMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIiIiCgppbXBvcnQgYnVpbHRpbnMKaW1wb3J0IGRpcwppbXBvcnQgb3Bjb2RlCmltcG9ydCBwbGF0Zm9ybQppbXBvcnQgc3lzCmltcG9ydCB0eXBlcwppbXBvcnQgd2Vha3JlZgppbXBvcnQgdXVpZAppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCB0eXBpbmcKaW1wb3J0IHdhcm5pbmdzCgpmcm9tIC5jb21wYXQgaW1wb3J0IHBpY2tsZQpmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdApmcm9tIHR5cGluZyBpbXBvcnQgQ2xhc3NWYXIsIEdlbmVyaWMsIFVuaW9uLCBUdXBsZSwgQ2FsbGFibGUKZnJvbSBwaWNrbGUgaW1wb3J0IF9nZXRhdHRyaWJ1dGUKZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgX2ZpbmRfc3BlYwoKdHJ5OiAgIyBwcmFnbWE6IG5vIGJyYW5jaAogICAgaW1wb3J0IHR5cGluZ19leHRlbnNpb25zIGFzIF90eXBpbmdfZXh0ZW5zaW9ucwogICAgZnJvbSB0eXBpbmdfZXh0ZW5zaW9ucyBpbXBvcnQgTGl0ZXJhbCwgRmluYWwKZXhjZXB0IEltcG9ydEVycm9yOgogICAgX3R5cGluZ19leHRlbnNpb25zID0gTGl0ZXJhbCA9IEZpbmFsID0gTm9uZQoKaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgOCk6CiAgICBmcm9tIHR5cGVzIGltcG9ydCBDZWxsVHlwZQplbHNlOgogICAgZGVmIGYoKToKICAgICAgICBhID0gMQoKICAgICAgICBkZWYgZygpOgogICAgICAgICAgICByZXR1cm4gYQogICAgICAgIHJldHVybiBnCiAgICBDZWxsVHlwZSA9IHR5cGUoZigpLl9fY2xvc3VyZV9fWzBdKQoKCiMgY2xvdWRwaWNrbGUgaXMgbWVhbnQgZm9yIGludGVyIHByb2Nlc3MgY29tbXVuaWNhdGlvbjogd2UgZXhwZWN0IGFsbAojIGNvbW11bmljYXRpbmcgcHJvY2Vzc2VzIHRvIHJ1biB0aGUgc2FtZSBQeXRob24gdmVyc2lvbiBoZW5jZSB3ZSBmYXZvcgojIGNvbW11bmljYXRpb24gc3BlZWQgb3ZlciBjb21wYXRpYmlsaXR5OgpERUZBVUxUX1BST1RPQ09MID0gcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wKCiMgTmFtZXMgb2YgbW9kdWxlcyB3aG9zZSByZXNvdXJjZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZHluYW1pYy4KX1BJQ0tMRV9CWV9WQUxVRV9NT0RVTEVTID0gc2V0KCkKCiMgVHJhY2sgdGhlIHByb3ZlbmFuY2Ugb2YgcmVjb25zdHJ1Y3RlZCBkeW5hbWljIGNsYXNzZXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0bwojIHJlY29uc3RydWN0IGluc3RhbmNlcyBmcm9tIHRoZSBtYXRjaGluZyBzaW5nbGV0b24gY2xhc3MgZGVmaW5pdGlvbiB3aGVuCiMgYXBwcm9wcmlhdGUgYW5kIHByZXNlcnZlIHRoZSB1c3VhbCAiaXNpbnN0YW5jZSIgc2VtYW50aWNzIG9mIFB5dGhvbiBvYmplY3RzLgpfRFlOQU1JQ19DTEFTU19UUkFDS0VSX0JZX0NMQVNTID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCl9EWU5BTUlDX0NMQVNTX1RSQUNLRVJfQllfSUQgPSB3ZWFrcmVmLldlYWtWYWx1ZURpY3Rpb25hcnkoKQpfRFlOQU1JQ19DTEFTU19UUkFDS0VSX0xPQ0sgPSB0aHJlYWRpbmcuTG9jaygpCgpQWVBZID0gcGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCkgPT0gIlB5UHkiCgpidWlsdGluX2NvZGVfdHlwZSA9IE5vbmUKaWYgUFlQWToKICAgICMgYnVpbHRpbi1jb2RlIG9iamVjdHMgb25seSBleGlzdCBpbiBweXB5CiAgICBidWlsdGluX2NvZGVfdHlwZSA9IHR5cGUoZmxvYXQuX19uZXdfXy5fX2NvZGVfXykKCl9leHRyYWN0X2NvZGVfZ2xvYmFsc19jYWNoZSA9IHdlYWtyZWYuV2Vha0tleURpY3Rpb25hcnkoKQoKCmRlZiBfZ2V0X29yX2NyZWF0ZV90cmFja2VyX2lkKGNsYXNzX2RlZik6CiAgICB3aXRoIF9EWU5BTUlDX0NMQVNTX1RSQUNLRVJfTE9DSzoKICAgICAgICBjbGFzc190cmFja2VyX2lkID0gX0RZTkFNSUNfQ0xBU1NfVFJBQ0tFUl9CWV9DTEFTUy5nZXQoY2xhc3NfZGVmKQogICAgICAgIGlmIGNsYXNzX3RyYWNrZXJfaWQgaXMgTm9uZToKICAgICAgICAgICAgY2xhc3NfdHJhY2tlcl9pZCA9IHV1aWQudXVpZDQoKS5oZXgKICAgICAgICAgICAgX0RZTkFNSUNfQ0xBU1NfVFJBQ0tFUl9CWV9DTEFTU1tjbGFzc19kZWZdID0gY2xhc3NfdHJhY2tlcl9pZAogICAgICAgICAgICBfRFlOQU1JQ19DTEFTU19UUkFDS0VSX0JZX0lEW2NsYXNzX3RyYWNrZXJfaWRdID0gY2xhc3NfZGVmCiAgICByZXR1cm4gY2xhc3NfdHJhY2tlcl9pZAoKCmRlZiBfbG9va3VwX2NsYXNzX29yX3RyYWNrKGNsYXNzX3RyYWNrZXJfaWQsIGNsYXNzX2RlZik6CiAgICBpZiBjbGFzc190cmFja2VyX2lkIGlzIG5vdCBOb25lOgogICAgICAgIHdpdGggX0RZTkFNSUNfQ0xBU1NfVFJBQ0tFUl9MT0NLOgogICAgICAgICAgICBjbGFzc19kZWYgPSBfRFlOQU1JQ19DTEFTU19UUkFDS0VSX0JZX0lELnNldGRlZmF1bHQoCiAgICAgICAgICAgICAgICBjbGFzc190cmFja2VyX2lkLCBjbGFzc19kZWYpCiAgICAgICAgICAgIF9EWU5BTUlDX0NMQVNTX1RSQUNLRVJfQllfQ0xBU1NbY2xhc3NfZGVmXSA9IGNsYXNzX3RyYWNrZXJfaWQKICAgIHJldHVybiBjbGFzc19kZWYKCgpkZWYgcmVnaXN0ZXJfcGlja2xlX2J5X3ZhbHVlKG1vZHVsZSk6CiAgICAiIiJSZWdpc3RlciBhIG1vZHVsZSB0byBtYWtlIGl0IGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBwaWNrbGFibGUgYnkgdmFsdWUuCgogICAgQnkgZGVmYXVsdCwgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHRoYXQgYXJlIGF0dHJpYnV0ZXMgb2YgYW4gaW1wb3J0YWJsZQogICAgbW9kdWxlIGFyZSB0byBiZSBwaWNrbGVkIGJ5IHJlZmVyZW5jZSwgdGhhdCBpcyByZWx5aW5nIG9uIHJlLWltcG9ydGluZwogICAgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBtb2R1bGUgYXQgbG9hZCB0aW1lLgoKICAgIElmIGByZWdpc3Rlcl9waWNrbGVfYnlfdmFsdWUobW9kdWxlKWAgaXMgY2FsbGVkLCBhbGwgaXRzIGZ1bmN0aW9ucyBhbmQKICAgIGNsYXNzZXMgYXJlIHN1YnNlcXVlbnRseSB0byBiZSBwaWNrbGVkIGJ5IHZhbHVlLCBtZWFuaW5nIHRoYXQgdGhleSBjYW4KICAgIGJlIGxvYWRlZCBpbiBQeXRob24gcHJvY2Vzc2VzIHdoZXJlIHRoZSBtb2R1bGUgaXMgbm90IGltcG9ydGFibGUuCgogICAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIGRldmVsb3BpbmcgYSBtb2R1bGUgaW4gYSBkaXN0cmlidXRlZAogICAgZXhlY3V0aW9uIGVudmlyb25tZW50OiByZXN0YXJ0aW5nIHRoZSBjbGllbnQgUHl0aG9uIHByb2Nlc3Mgd2l0aCB0aGUgbmV3CiAgICBzb3VyY2UgY29kZSBpcyBlbm91Z2g6IHRoZXJlIGlzIG5vIG5lZWQgdG8gcmUtaW5zdGFsbCB0aGUgbmV3IHZlcnNpb24KICAgIG9mIHRoZSBtb2R1bGUgb24gYWxsIHRoZSB3b3JrZXIgbm9kZXMgbm9yIHRvIHJlc3RhcnQgdGhlIHdvcmtlcnMuCgogICAgTm90ZTogdGhpcyBmZWF0dXJlIGlzIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsLiBTZWUgdGhlIGNsb3VkcGlja2xlCiAgICBSRUFETUUubWQgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBsaW1pdGF0aW9ucy4KICAgICIiIgogICAgaWYgbm90IGlzaW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIklucHV0IHNob3VsZCBiZSBhIG1vZHVsZSBvYmplY3QsIGdvdCB7c3RyKG1vZHVsZSl9IGluc3RlYWQiCiAgICAgICAgKQogICAgIyBJbiB0aGUgZnV0dXJlLCBjbG91ZHBpY2tsZSBtYXkgbmVlZCBhIHdheSB0byBhY2Nlc3MgYW55IG1vZHVsZSByZWdpc3RlcmVkCiAgICAjIGZvciBwaWNrbGluZyBieSB2YWx1ZSBpbiBvcmRlciB0byBpbnRyb3NwZWN0IHJlbGF0aXZlIGltcG9ydHMgaW5zaWRlCiAgICAjIGZ1bmN0aW9ucyBwaWNrbGVkIGJ5IHZhbHVlLiAoc2VlCiAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9jbG91ZHBpcGUvY2xvdWRwaWNrbGUvcHVsbC80MTcjaXNzdWVjb21tZW50LTg3MzY4NDYzMykuCiAgICAjIFRoaXMgYWNjZXNzIGNhbiBiZSBlbnN1cmVkIGJ5IGNoZWNraW5nIHRoYXQgbW9kdWxlIGlzIHByZXNlbnQgaW4KICAgICMgc3lzLm1vZHVsZXMgYXQgcmVnaXN0ZXJpbmcgdGltZSBhbmQgYXNzdW1pbmcgdGhhdCBpdCB3aWxsIHN0aWxsIGJlIGluCiAgICAjIHRoZXJlIHdoZW4gYWNjZXNzZWQgZHVyaW5nIHBpY2tsaW5nLiBBbm90aGVyIGFsdGVybmF0aXZlIHdvdWxkIGJlIHRvCiAgICAjIHN0b3JlIGEgd2Vha3JlZiB0byB0aGUgbW9kdWxlLiBFdmVuIHRob3VnaCBjbG91ZHBpY2tsZSBkb2VzIG5vdCBpbXBsZW1lbnQKICAgICMgdGhpcyBpbnRyb3NwZWN0aW9uIHlldCwgaW4gb3JkZXIgdG8gYXZvaWQgYSBwb3NzaWJsZSBicmVha2luZyBjaGFuZ2UKICAgICMgbGF0ZXIsIHdlIHN0aWxsIGVuZm9yY2UgdGhlIHByZXNlbmNlIG9mIG1vZHVsZSBpbnNpZGUgc3lzLm1vZHVsZXMuCiAgICBpZiBtb2R1bGUuX19uYW1lX18gbm90IGluIHN5cy5tb2R1bGVzOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgIGYie21vZHVsZX0gd2FzIG5vdCBpbXBvcnRlZCBjb3JyZWN0bHksIGhhdmUgeW91IHVzZWQgYW4gIgogICAgICAgICAgICBmImBpbXBvcnRgIHN0YXRlbWVudCB0byBhY2Nlc3MgaXQ/IgogICAgICAgICkKICAgIF9QSUNLTEVfQllfVkFMVUVfTU9EVUxFUy5hZGQobW9kdWxlLl9fbmFtZV9fKQoKCmRlZiB1bnJlZ2lzdGVyX3BpY2tsZV9ieV92YWx1ZShtb2R1bGUpOgogICAgIiIiVW5yZWdpc3RlciB0aGF0IHRoZSBpbnB1dCBtb2R1bGUgc2hvdWxkIGJlIHBpY2tsZWQgYnkgdmFsdWUuIiIiCiAgICBpZiBub3QgaXNpbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgIGYiSW5wdXQgc2hvdWxkIGJlIGEgbW9kdWxlIG9iamVjdCwgZ290IHtzdHIobW9kdWxlKX0gaW5zdGVhZCIKICAgICAgICApCiAgICBpZiBtb2R1bGUuX19uYW1lX18gbm90IGluIF9QSUNLTEVfQllfVkFMVUVfTU9EVUxFUzoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYie21vZHVsZX0gaXMgbm90IHJlZ2lzdGVyZWQgZm9yIHBpY2tsZSBieSB2YWx1ZSIpCiAgICBlbHNlOgogICAgICAgIF9QSUNLTEVfQllfVkFMVUVfTU9EVUxFUy5yZW1vdmUobW9kdWxlLl9fbmFtZV9fKQoKCmRlZiBsaXN0X3JlZ2lzdHJ5X3BpY2tsZV9ieV92YWx1ZSgpOgogICAgcmV0dXJuIF9QSUNLTEVfQllfVkFMVUVfTU9EVUxFUy5jb3B5KCkKCgpkZWYgX2lzX3JlZ2lzdGVyZWRfcGlja2xlX2J5X3ZhbHVlKG1vZHVsZSk6CiAgICBtb2R1bGVfbmFtZSA9IG1vZHVsZS5fX25hbWVfXwogICAgaWYgbW9kdWxlX25hbWUgaW4gX1BJQ0tMRV9CWV9WQUxVRV9NT0RVTEVTOgogICAgICAgIHJldHVybiBUcnVlCiAgICB3aGlsZSBUcnVlOgogICAgICAgIHBhcmVudF9uYW1lID0gbW9kdWxlX25hbWUucnNwbGl0KCIuIiwgMSlbMF0KICAgICAgICBpZiBwYXJlbnRfbmFtZSA9PSBtb2R1bGVfbmFtZToKICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBwYXJlbnRfbmFtZSBpbiBfUElDS0xFX0JZX1ZBTFVFX01PRFVMRVM6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgbW9kdWxlX25hbWUgPSBwYXJlbnRfbmFtZQogICAgcmV0dXJuIEZhbHNlCgoKZGVmIF93aGljaG1vZHVsZShvYmosIG5hbWUpOgogICAgIiIiRmluZCB0aGUgbW9kdWxlIGFuIG9iamVjdCBiZWxvbmdzIHRvLgoKICAgIFRoaXMgZnVuY3Rpb24gZGlmZmVycyBmcm9tIGBgcGlja2xlLndoaWNobW9kdWxlYGAgaW4gdHdvIHdheXM6CiAgICAtIGl0IGRvZXMgbm90IG1hbmdsZSB0aGUgY2FzZXMgd2hlcmUgb2JqJ3MgbW9kdWxlIGlzIF9fbWFpbl9fIGFuZCBvYmogd2FzCiAgICAgIG5vdCBmb3VuZCBpbiBhbnkgbW9kdWxlLgogICAgLSBFcnJvcnMgYXJpc2luZyBkdXJpbmcgbW9kdWxlIGludHJvc3BlY3Rpb24gYXJlIGlnbm9yZWQsIGFzIHRob3NlIGVycm9ycwogICAgICBhcmUgY29uc2lkZXJlZCB1bndhbnRlZCBzaWRlIGVmZmVjdHMuCiAgICAiIiIKICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDcpIGFuZCBpc2luc3RhbmNlKG9iaiwgdHlwaW5nLlR5cGVWYXIpOiAgIyBwcmFnbWE6IG5vIGJyYW5jaCAgIyBub3FhCiAgICAgICAgIyBXb3JrYXJvdW5kIGJ1ZyBpbiBvbGQgUHl0aG9uIHZlcnNpb25zOiBwcmlvciB0byBQeXRob24gMy43LAogICAgICAgICMgVC5fX21vZHVsZV9fIHdvdWxkIGFsd2F5cyBiZSBzZXQgdG8gInR5cGluZyIgZXZlbiB3aGVuIHRoZSBUeXBlVmFyIFQKICAgICAgICAjIHdvdWxkIGJlIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgbW9kdWxlLgogICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmUgYW5kIGdldGF0dHIodHlwaW5nLCBuYW1lLCBOb25lKSBpcyBvYmo6CiAgICAgICAgICAgICMgQnVpbHQtaW4gVHlwZVZhciBkZWZpbmVkIGluIHR5cGluZyBzdWNoIGFzIEFueVN0cgogICAgICAgICAgICByZXR1cm4gJ3R5cGluZycKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFVzZXIgZGVmaW5lZCBvciB0aGlyZC1wYXJ0eSBUeXBlVmFyOiBfX21vZHVsZV9fIGF0dHJpYnV0ZSBpcwogICAgICAgICAgICAjIGlycmVsZXZhbnQsIHRodXMgdHJpZ2dlciBhIGV4aGF1c3RpdmUgc2VhcmNoIGZvciBvYmogaW4gYWxsCiAgICAgICAgICAgICMgbW9kdWxlcy4KICAgICAgICAgICAgbW9kdWxlX25hbWUgPSBOb25lCiAgICBlbHNlOgogICAgICAgIG1vZHVsZV9uYW1lID0gZ2V0YXR0cihvYmosICdfX21vZHVsZV9fJywgTm9uZSkKCiAgICBpZiBtb2R1bGVfbmFtZSBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gbW9kdWxlX25hbWUKICAgICMgUHJvdGVjdCB0aGUgaXRlcmF0aW9uIGJ5IHVzaW5nIGEgY29weSBvZiBzeXMubW9kdWxlcyBhZ2FpbnN0IGR5bmFtaWMKICAgICMgbW9kdWxlcyB0aGF0IHRyaWdnZXIgaW1wb3J0cyBvZiBvdGhlciBtb2R1bGVzIHVwb24gY2FsbHMgdG8gZ2V0YXR0ciBvcgogICAgIyBvdGhlciB0aHJlYWRzIGltcG9ydGluZyBhdCB0aGUgc2FtZSB0aW1lLgogICAgZm9yIG1vZHVsZV9uYW1lLCBtb2R1bGUgaW4gc3lzLm1vZHVsZXMuY29weSgpLml0ZW1zKCk6CiAgICAgICAgIyBTb21lIG1vZHVsZXMgc3VjaCBhcyBjb3ZlcmFnZSBjYW4gaW5qZWN0IG5vbi1tb2R1bGUgb2JqZWN0cyBpbnNpZGUKICAgICAgICAjIHN5cy5tb2R1bGVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgbW9kdWxlX25hbWUgPT0gJ19fbWFpbl9fJyBvcgogICAgICAgICAgICAgICAgbW9kdWxlIGlzIE5vbmUgb3IKICAgICAgICAgICAgICAgIG5vdCBpc2luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKICAgICAgICApOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgX2dldGF0dHJpYnV0ZShtb2R1bGUsIG5hbWUpWzBdIGlzIG9iajoKICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGVfbmFtZQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHBhc3MKICAgIHJldHVybiBOb25lCgoKZGVmIF9zaG91bGRfcGlja2xlX2J5X3JlZmVyZW5jZShvYmosIG5hbWU9Tm9uZSk6CiAgICAiIiJUZXN0IHdoZXRoZXIgYW4gZnVuY3Rpb24gb3IgYSBjbGFzcyBzaG91bGQgYmUgcGlja2xlZCBieSByZWZlcmVuY2UKCiAgICAgUGlja2xpbmcgYnkgcmVmZXJlbmNlIG1lYW5zIGJ5IHRoYXQgdGhlIG9iamVjdCAodHlwaWNhbGx5IGEgZnVuY3Rpb24gb3IgYQogICAgIGNsYXNzKSBpcyBhbiBhdHRyaWJ1dGUgb2YgYSBtb2R1bGUgdGhhdCBpcyBhc3N1bWVkIHRvIGJlIGltcG9ydGFibGUgaW4gdGhlCiAgICAgdGFyZ2V0IFB5dGhvbiBlbnZpcm9ubWVudC4gTG9hZGluZyB3aWxsIHRoZXJlZm9yZSByZWx5IG9uIGltcG9ydGluZyB0aGUKICAgICBtb2R1bGUgYW5kIHRoZW4gY2FsbGluZyBgZ2V0YXR0cmAgb24gaXQgdG8gYWNjZXNzIHRoZSBmdW5jdGlvbiBvciBjbGFzcy4KCiAgICAgUGlja2xpbmcgYnkgcmVmZXJlbmNlIGlzIHRoZSBvbmx5IG9wdGlvbiB0byBwaWNrbGUgZnVuY3Rpb25zIGFuZCBjbGFzc2VzCiAgICAgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkuIEluIGNsb3VkcGlja2xlIHRoZSBhbHRlcm5hdGl2ZSBvcHRpb24gaXMgdG8KICAgICBwaWNrbGUgYnkgdmFsdWUgKGZvciBpbnN0YW5jZSBmb3IgaW50ZXJhY3RpdmVseSBvciBsb2NhbGx5IGRlZmluZWQKICAgICBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgb3IgZm9yIGF0dHJpYnV0ZXMgb2YgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbgogICAgIGV4cGxpY2l0bHkgcmVnaXN0ZXJlZCB0byBiZSBwaWNrbGVkIGJ5IHZhbHVlLgogICAgICIiIgogICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLkZ1bmN0aW9uVHlwZSkgb3IgaXNzdWJjbGFzcyh0eXBlKG9iaiksIHR5cGUpOgogICAgICAgIG1vZHVsZV9hbmRfbmFtZSA9IF9sb29rdXBfbW9kdWxlX2FuZF9xdWFsbmFtZShvYmosIG5hbWU9bmFtZSkKICAgICAgICBpZiBtb2R1bGVfYW5kX25hbWUgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgbW9kdWxlLCBuYW1lID0gbW9kdWxlX2FuZF9uYW1lCiAgICAgICAgcmV0dXJuIG5vdCBfaXNfcmVnaXN0ZXJlZF9waWNrbGVfYnlfdmFsdWUobW9kdWxlKQoKICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1vZHVsZVR5cGUpOgogICAgICAgICMgV2UgYXNzdW1lIHRoYXQgc3lzLm1vZHVsZXMgaXMgcHJpbWFyaWx5IHVzZWQgYXMgYSBjYWNoZSBtZWNoYW5pc20gZm9yCiAgICAgICAgIyB0aGUgUHl0aG9uIGltcG9ydCBtYWNoaW5lcnkuIENoZWNraW5nIGlmIGEgbW9kdWxlIGhhcyBiZWVuIGFkZGVkIGluCiAgICAgICAgIyBpcyBzeXMubW9kdWxlcyB0aGVyZWZvcmUgYSBjaGVhcCBhbmQgc2ltcGxlIGhldXJpc3RpYyB0byB0ZWxsIHVzCiAgICAgICAgIyB3aGV0aGVyIHdlIGNhbiBhc3N1bWUgdGhhdCBhIGdpdmVuIG1vZHVsZSBjb3VsZCBiZSBpbXBvcnRlZCBieSBuYW1lCiAgICAgICAgIyBpbiBhbm90aGVyIFB5dGhvbiBwcm9jZXNzLgogICAgICAgIGlmIF9pc19yZWdpc3RlcmVkX3BpY2tsZV9ieV92YWx1ZShvYmopOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gb2JqLl9fbmFtZV9fIGluIHN5cy5tb2R1bGVzCiAgICBlbHNlOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgImNhbm5vdCBjaGVjayBpbXBvcnRhYmlsaXR5IG9mIHt9IGluc3RhbmNlcyIuZm9ybWF0KAogICAgICAgICAgICAgICAgdHlwZShvYmopLl9fbmFtZV9fKQogICAgICAgICkKCgpkZWYgX2xvb2t1cF9tb2R1bGVfYW5kX3F1YWxuYW1lKG9iaiwgbmFtZT1Ob25lKToKICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICBuYW1lID0gZ2V0YXR0cihvYmosICdfX3F1YWxuYW1lX18nLCBOb25lKQogICAgaWYgbmFtZSBpcyBOb25lOiAgIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgIyBUaGlzIHVzZWQgdG8gYmUgbmVlZGVkIGZvciBQeXRob24gMi43IHN1cHBvcnQgYnV0IGlzIHByb2JhYmx5IG5vdAogICAgICAgICMgbmVlZGVkIGFueW1vcmUuIEhvd2V2ZXIgd2Uga2VlcCB0aGUgX19uYW1lX18gaW50cm9zcGVjdGlvbiBpbiBjYXNlCiAgICAgICAgIyB1c2VycyBvZiBjbG91ZHBpY2tsZSByZWx5IG9uIHRoaXMgb2xkIGJlaGF2aW9yIGZvciB1bmtub3duIHJlYXNvbnMuCiAgICAgICAgbmFtZSA9IGdldGF0dHIob2JqLCAnX19uYW1lX18nLCBOb25lKQoKICAgIG1vZHVsZV9uYW1lID0gX3doaWNobW9kdWxlKG9iaiwgbmFtZSkKCiAgICBpZiBtb2R1bGVfbmFtZSBpcyBOb25lOgogICAgICAgICMgSW4gdGhpcyBjYXNlLCBvYmouX19tb2R1bGVfXyBpcyBOb25lIEFORCBvYmogd2FzIG5vdCBmb3VuZCBpbiBhbnkKICAgICAgICAjIGltcG9ydGVkIG1vZHVsZS4gb2JqIGlzIHRodXMgdHJlYXRlZCBhcyBkeW5hbWljLgogICAgICAgIHJldHVybiBOb25lCgogICAgaWYgbW9kdWxlX25hbWUgPT0gIl9fbWFpbl9fIjoKICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgTm90ZTogaWYgbW9kdWxlX25hbWUgaXMgaW4gc3lzLm1vZHVsZXMsIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSBpcwogICAgIyBhc3N1bWVkIGltcG9ydGFibGUgYXQgdW5waWNrbGluZyB0aW1lLiBTZWUgIzM1NwogICAgbW9kdWxlID0gc3lzLm1vZHVsZXMuZ2V0KG1vZHVsZV9uYW1lLCBOb25lKQogICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgIyBUaGUgbWFpbiByZWFzb24gd2h5IG9iaidzIG1vZHVsZSB3b3VsZCBub3QgYmUgaW1wb3J0ZWQgaXMgdGhhdCB0aGlzCiAgICAgICAgIyBtb2R1bGUgaGFzIGJlZW4gZHluYW1pY2FsbHkgY3JlYXRlZCwgdXNpbmcgZm9yIGV4YW1wbGUKICAgICAgICAjIHR5cGVzLk1vZHVsZVR5cGUuIFRoZSBvdGhlciBwb3NzaWJpbGl0eSBpcyB0aGF0IG1vZHVsZSB3YXMgcmVtb3ZlZAogICAgICAgICMgZnJvbSBzeXMubW9kdWxlcyBhZnRlciBvYmogd2FzIGNyZWF0ZWQvaW1wb3J0ZWQuIEJ1dCB0aGlzIGNhc2UgaXMgbm90CiAgICAgICAgIyBzdXBwb3J0ZWQsIGFzIHRoZSBzdGFuZGFyZCBwaWNrbGUgZG9lcyBub3Qgc3VwcG9ydCBpdCBlaXRoZXIuCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICB0cnk6CiAgICAgICAgb2JqMiwgcGFyZW50ID0gX2dldGF0dHJpYnV0ZShtb2R1bGUsIG5hbWUpCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIyBvYmogd2FzIG5vdCBmb3VuZCBpbnNpZGUgdGhlIG1vZHVsZSBpdCBwb2ludHMgdG8KICAgICAgICByZXR1cm4gTm9uZQogICAgaWYgb2JqMiBpcyBub3Qgb2JqOgogICAgICAgIHJldHVybiBOb25lCiAgICByZXR1cm4gbW9kdWxlLCBuYW1lCgoKZGVmIF9leHRyYWN0X2NvZGVfZ2xvYmFscyhjbyk6CiAgICAiIiIKICAgIEZpbmQgYWxsIGdsb2JhbHMgbmFtZXMgcmVhZCBvciB3cml0dGVuIHRvIGJ5IGNvZGVibG9jayBjbwogICAgIiIiCiAgICBvdXRfbmFtZXMgPSBfZXh0cmFjdF9jb2RlX2dsb2JhbHNfY2FjaGUuZ2V0KGNvKQogICAgaWYgb3V0X25hbWVzIGlzIE5vbmU6CiAgICAgICAgIyBXZSB1c2UgYSBkaWN0IHdpdGggTm9uZSB2YWx1ZXMgaW5zdGVhZCBvZiBhIHNldCB0byBnZXQgYQogICAgICAgICMgZGV0ZXJtaW5pc3RpYyBvcmRlciAoYXNzdW1pbmcgUHl0aG9uIDMuNispIGFuZCBhdm9pZCBpbnRyb2R1Y2luZwogICAgICAgICMgbm9uLWRldGVybWluaXN0aWMgcGlja2xlIGJ5dGVzIGFzIGEgcmVzdWx0cy4KICAgICAgICBvdXRfbmFtZXMgPSB7bmFtZTogTm9uZSBmb3IgbmFtZSBpbiBfd2Fsa19nbG9iYWxfb3BzKGNvKX0KCiAgICAgICAgIyBEZWNsYXJpbmcgYSBmdW5jdGlvbiBpbnNpZGUgYW5vdGhlciBvbmUgdXNpbmcgdGhlICJkZWYgLi4uIgogICAgICAgICMgc3ludGF4IGdlbmVyYXRlcyBhIGNvbnN0YW50IGNvZGUgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9uZQogICAgICAgICMgb2YgdGhlIG5lc3RlZCBmdW5jdGlvbidzIEFzIHRoZSBuZXN0ZWQgZnVuY3Rpb24gbWF5IGl0c2VsZiBuZWVkCiAgICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLCB3ZSBuZWVkIHRvIGludHJvc3BlY3QgaXRzIGNvZGUsIGV4dHJhY3QgaXRzCiAgICAgICAgIyBnbG9iYWxzLCAobG9vayBmb3IgY29kZSBvYmplY3QgaW4gaXQncyBjb19jb25zdHMgYXR0cmlidXRlLi4pIGFuZAogICAgICAgICMgYWRkIHRoZSByZXN1bHQgdG8gY29kZV9nbG9iYWxzCiAgICAgICAgaWYgY28uY29fY29uc3RzOgogICAgICAgICAgICBmb3IgY29uc3QgaW4gY28uY29fY29uc3RzOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25zdCwgdHlwZXMuQ29kZVR5cGUpOgogICAgICAgICAgICAgICAgICAgIG91dF9uYW1lcy51cGRhdGUoX2V4dHJhY3RfY29kZV9nbG9iYWxzKGNvbnN0KSkKCiAgICAgICAgX2V4dHJhY3RfY29kZV9nbG9iYWxzX2NhY2hlW2NvXSA9IG91dF9uYW1lcwoKICAgIHJldHVybiBvdXRfbmFtZXMKCgpkZWYgX2ZpbmRfaW1wb3J0ZWRfc3VibW9kdWxlcyhjb2RlLCB0b3BfbGV2ZWxfZGVwZW5kZW5jaWVzKToKICAgICIiIgogICAgRmluZCBjdXJyZW50bHkgaW1wb3J0ZWQgc3VibW9kdWxlcyB1c2VkIGJ5IGEgZnVuY3Rpb24uCgogICAgU3VibW9kdWxlcyB1c2VkIGJ5IGEgZnVuY3Rpb24gbmVlZCB0byBiZSBkZXRlY3RlZCBhbmQgcmVmZXJlbmNlZCBmb3IgdGhlCiAgICBmdW5jdGlvbiB0byB3b3JrIGNvcnJlY3RseSBhdCBkZXBpY2tsaW5nIHRpbWUuIEJlY2F1c2Ugc3VibW9kdWxlcyBjYW4gYmUKICAgIHJlZmVyZW5jZWQgYXMgYXR0cmlidXRlIG9mIHRoZWlyIHBhcmVudCBwYWNrYWdlIChgYHBhY2thZ2Uuc3VibW9kdWxlYGApLCB3ZQogICAgbmVlZCBhIHNwZWNpYWwgaW50cm9zcGVjdGlvbiB0ZWNobmlxdWUgdGhhdCBkb2VzIG5vdCByZWx5IG9uIEdMT0JBTC1yZWxhdGVkCiAgICBvcGNvZGVzIHRvIGZpbmQgcmVmZXJlbmNlcyBvZiB0aGVtIGluIGEgY29kZSBvYmplY3QuCgogICAgRXhhbXBsZToKICAgIGBgYAogICAgaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcwogICAgaW1wb3J0IGNsb3VkcGlja2xlCiAgICBkZWYgZnVuYygpOgogICAgICAgIHggPSBjb25jdXJyZW50LmZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgIGNsb3VkcGlja2xlLmR1bXBzKGZ1bmMpCiAgICBgYGAKICAgIFRoZSBnbG9iYWxzIGV4dHJhY3RlZCBieSBjbG91ZHBpY2tsZSBpbiB0aGUgZnVuY3Rpb24ncyBzdGF0ZSBpbmNsdWRlIHRoZQogICAgY29uY3VycmVudCBwYWNrYWdlLCBidXQgbm90IGl0cyBzdWJtb2R1bGUgKGhlcmUsIGNvbmN1cnJlbnQuZnV0dXJlcyksIHdoaWNoCiAgICBpcyB0aGUgbW9kdWxlIHVzZWQgYnkgZnVuYy4gRmluZF9pbXBvcnRlZF9zdWJtb2R1bGVzIHdpbGwgZGV0ZWN0IHRoZSB1c2FnZQogICAgb2YgY29uY3VycmVudC5mdXR1cmVzLiBTYXZpbmcgdGhpcyBtb2R1bGUgYWxvbmdzaWRlIHdpdGggZnVuYyB3aWxsIGVuc3VyZQogICAgdGhhdCBjYWxsaW5nIGZ1bmMgb25jZSBkZXBpY2tsZWQgZG9lcyBub3QgZmFpbCBkdWUgdG8gY29uY3VycmVudC5mdXR1cmVzCiAgICBub3QgYmVpbmcgaW1wb3J0ZWQKICAgICIiIgoKICAgIHN1YmltcG9ydHMgPSBbXQogICAgIyBjaGVjayBpZiBhbnkga25vd24gZGVwZW5kZW5jeSBpcyBhbiBpbXBvcnRlZCBwYWNrYWdlCiAgICBmb3IgeCBpbiB0b3BfbGV2ZWxfZGVwZW5kZW5jaWVzOgogICAgICAgIGlmIChpc2luc3RhbmNlKHgsIHR5cGVzLk1vZHVsZVR5cGUpIGFuZAogICAgICAgICAgICAgICAgaGFzYXR0cih4LCAnX19wYWNrYWdlX18nKSBhbmQgeC5fX3BhY2thZ2VfXyk6CiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHBhY2thZ2UgaGFzIGFueSBjdXJyZW50bHkgbG9hZGVkIHN1Yi1pbXBvcnRzCiAgICAgICAgICAgIHByZWZpeCA9IHguX19uYW1lX18gKyAnLicKICAgICAgICAgICAgIyBBIGNvbmN1cnJlbnQgdGhyZWFkIGNvdWxkIG11dGF0ZSBzeXMubW9kdWxlcywKICAgICAgICAgICAgIyBtYWtlIHN1cmUgd2UgaXRlcmF0ZSBvdmVyIGEgY29weSB0byBhdm9pZCBleGNlcHRpb25zCiAgICAgICAgICAgIGZvciBuYW1lIGluIGxpc3Qoc3lzLm1vZHVsZXMpOgogICAgICAgICAgICAgICAgIyBPbGRlciB2ZXJzaW9ucyBvZiBweXRlc3Qgd2lsbCBhZGQgYSAiTm9uZSIgbW9kdWxlIHRvCiAgICAgICAgICAgICAgICAjIHN5cy5tb2R1bGVzLgogICAgICAgICAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZSBhbmQgbmFtZS5zdGFydHN3aXRoKHByZWZpeCk6CiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbiBjYW4gYWRkcmVzcyB0aGUgc3ViLW1vZHVsZQogICAgICAgICAgICAgICAgICAgIHRva2VucyA9IHNldChuYW1lW2xlbihwcmVmaXgpOl0uc3BsaXQoJy4nKSkKICAgICAgICAgICAgICAgICAgICBpZiBub3QgdG9rZW5zIC0gc2V0KGNvZGUuY29fbmFtZXMpOgogICAgICAgICAgICAgICAgICAgICAgICBzdWJpbXBvcnRzLmFwcGVuZChzeXMubW9kdWxlc1tuYW1lXSkKICAgIHJldHVybiBzdWJpbXBvcnRzCgoKZGVmIGNlbGxfc2V0KGNlbGwsIHZhbHVlKToKICAgICIiIlNldCB0aGUgdmFsdWUgb2YgYSBjbG9zdXJlIGNlbGwuCgogICAgVGhlIHBvaW50IG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gc2V0IHRoZSBjZWxsX2NvbnRlbnRzIGF0dHJpYnV0ZSBvZiBhIGNlbGwKICAgIGFmdGVyIGl0cyBjcmVhdGlvbi4gVGhpcyBvcGVyYXRpb24gaXMgbmVjZXNzYXJ5IGluIGNhc2UgdGhlIGNlbGwgY29udGFpbnMgYQogICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbiB0aGUgY2VsbCBiZWxvbmdzIHRvLCBhcyB3aGVuIGNhbGxpbmcgdGhlCiAgICBmdW5jdGlvbidzIGNvbnN0cnVjdG9yCiAgICBgYGYgPSB0eXBlcy5GdW5jdGlvblR5cGUoY29kZSwgZ2xvYmFscywgbmFtZSwgYXJnZGVmcywgY2xvc3VyZSlgYCwKICAgIGNsb3N1cmUgd2lsbCBub3QgYmUgYWJsZSB0byBjb250YWluIHRoZSB5ZXQtdG8tYmUtY3JlYXRlZCBmLgoKICAgIEluIFB5dGhvbjMuNywgY2VsbF9jb250ZW50cyBpcyB3cml0ZWFibGUsIHNvIHNldHRpbmcgdGhlIGNvbnRlbnRzIG9mIGEgY2VsbAogICAgY2FuIGJlIGRvbmUgc2ltcGx5IHVzaW5nCiAgICA+Pj4gY2VsbC5jZWxsX2NvbnRlbnRzID0gdmFsdWUKCiAgICBJbiBlYXJsaWVyIFB5dGhvbjMgdmVyc2lvbnMsIHRoZSBjZWxsX2NvbnRlbnRzIGF0dHJpYnV0ZSBvZiBhIGNlbGwgaXMgcmVhZAogICAgb25seSwgYnV0IHRoaXMgbGltaXRhdGlvbiBjYW4gYmUgd29ya2VkIGFyb3VuZCBieSBsZXZlcmFnaW5nIHRoZSBQeXRob24gMwogICAgYGBub25sb2NhbGBgIGtleXdvcmQuCgogICAgSW4gUHl0aG9uMiBob3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyByZWFkIG9ubHksIGFuZCB0aGVyZSBpcyBubwogICAgYGBub25sb2NhbGBgIGtleXdvcmQuIEZvciB0aGlzIHJlYXNvbiwgd2UgbmVlZCB0byBjb21lIHVwIHdpdGggbW9yZQogICAgY29tcGxpY2F0ZWQgaGFja3MgdG8gc2V0IHRoaXMgYXR0cmlidXRlLgoKICAgIFRoZSBjaG9zZW4gYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgZnVuY3Rpb24gd2l0aCBhIFNUT1JFX0RFUkVGIG9wY29kZSwKICAgIHdoaWNoIHNldHMgdGhlIGNvbnRlbnQgb2YgYSBjbG9zdXJlIHZhcmlhYmxlLiBUeXBpY2FsbHk6CgogICAgPj4+IGRlZiBpbm5lcih2YWx1ZSk6CiAgICAuLi4gICAgIGxhbWJkYTogY2VsbCAgIyB0aGUgbGFtYmRhIG1ha2VzIGNlbGwgYSBjbG9zdXJlCiAgICAuLi4gICAgIGNlbGwgPSB2YWx1ZSAgIyBjZWxsIGlzIGEgY2xvc3VyZSwgc28gdGhpcyB0cmlnZ2VycyBhIFNUT1JFX0RFUkVGCgogICAgKE5vdGUgdGhhdCBpbiBQeXRob24yLCBBIFNUT1JFX0RFUkVGIGNhbiBuZXZlciBiZSB0cmlnZ2VyZWQgZnJvbSBhbiBpbm5lcgogICAgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBnIGZvciBleGFtcGxlIGhlcmUKICAgID4+PiBkZWYgZih2YXIpOgogICAgLi4uICAgICBkZWYgZygpOgogICAgLi4uICAgICAgICAgdmFyICs9IDEKICAgIC4uLiAgICAgcmV0dXJuIGcKCiAgICB3aWxsIG5vdCBtb2RpZnkgdGhlIGNsb3N1cmUgdmFyaWFibGUgYGB2YXJgYGBpbnBsYWNlLCBidXQgaW5zdGVhZCB0cnkgdG8KICAgIGxvYWQgYSBsb2NhbCB2YXJpYWJsZSB2YXIgYW5kIGluY3JlbWVudCBpdC4gQXMgZyBkb2VzIG5vdCBhc3NpZ24gdGhlIGxvY2FsCiAgICB2YXJpYWJsZSBgYHZhcmBgIGFueSBpbml0aWFsIHZhbHVlLCBjYWxsaW5nIGYoMSkoKSB3aWxsIGZhaWwgYXQgcnVudGltZS4pCgogICAgT3VyIG9iamVjdGl2ZSBpcyB0byBzZXQgdGhlIHZhbHVlIG9mIGEgZ2l2ZW4gY2VsbCBgYGNlbGxgYC4gU28gd2UgbmVlZCB0bwogICAgc29tZXdoYXQgcmVmZXJlbmNlIG91ciBgYGNlbGxgYCBvYmplY3QgaW50byB0aGUgYGBpbm5lcmBgIGZ1bmN0aW9uIHNvIHRoYXQKICAgIHRoaXMgb2JqZWN0IChhbmQgbm90IHRoZSBzbW9rZSBjZWxsIG9mIHRoZSBsYW1iZGEgZnVuY3Rpb24pIGdldHMgYWZmZWN0ZWQKICAgIGJ5IHRoZSBTVE9SRV9ERVJFRiBvcGVyYXRpb24uCgogICAgSW4gaW5uZXIsIGBgY2VsbGBgIGlzIHJlZmVyZW5jZWQgYXMgYSBjZWxsIHZhcmlhYmxlIChhbiBlbmNsb3NpbmcgdmFyaWFibGUKICAgIHRoYXQgaXMgcmVmZXJlbmNlZCBieSB0aGUgaW5uZXIgZnVuY3Rpb24pLiBJZiB3ZSBjcmVhdGUgYSBuZXcgZnVuY3Rpb24KICAgIGNlbGxfc2V0IHdpdGggdGhlIGV4YWN0IHNhbWUgY29kZSBhcyBgYGlubmVyYGAsIGJ1dCB3aXRoIGBgY2VsbGBgIG1hcmtlZCBhcwogICAgYSBmcmVlIHZhcmlhYmxlIGluc3RlYWQsIHRoZSBTVE9SRV9ERVJFRiB3aWxsIGJlIGFwcGxpZWQgb24gaXRzIGNsb3N1cmUgLQogICAgYGBjZWxsYGAsIHdoaWNoIHdlIGNhbiBzcGVjaWZ5IGV4cGxpY2l0bHkgZHVyaW5nIGNvbnN0cnVjdGlvbiEgVGhlIG5ldwogICAgY2VsbF9zZXQgdmFyaWFibGUgdGh1cyBhY3R1YWxseSBzZXRzIHRoZSBjb250ZW50cyBvZiBhIHNwZWNpZmllZCBjZWxsIQoKICAgIE5vdGU6IHdlIGRvIG5vdCBtYWtlIHVzZSBvZiB0aGUgYGBub25sb2NhbGBgIGtleXdvcmQgdG8gc2V0IHRoZSBjb250ZW50cyBvZgogICAgYSBjZWxsIGluIGVhcmx5IHB5dGhvbjMgdmVyc2lvbnMgdG8gbGltaXQgcG9zc2libGUgc3ludGF4IGVycm9ycyBpbiBjYXNlCiAgICB0ZXN0IGFuZCBjaGVja2VyIGxpYnJhcmllcyBkZWNpZGUgdG8gcGFyc2UgdGhlIHdob2xlIGZpbGUuCiAgICAiIiIKCiAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywgNyk6ICAjIHByYWdtYTogbm8gYnJhbmNoCiAgICAgICAgY2VsbC5jZWxsX2NvbnRlbnRzID0gdmFsdWUKICAgIGVsc2U6CiAgICAgICAgX2NlbGxfc2V0ID0gdHlwZXMuRnVuY3Rpb25UeXBlKAogICAgICAgICAgICBfY2VsbF9zZXRfdGVtcGxhdGVfY29kZSwge30sICdfY2VsbF9zZXQnLCAoKSwgKGNlbGwsKSwpCiAgICAgICAgX2NlbGxfc2V0KHZhbHVlKQoKCmRlZiBfbWFrZV9jZWxsX3NldF90ZW1wbGF0ZV9jb2RlKCk6CiAgICBkZWYgX2NlbGxfc2V0X2ZhY3RvcnkodmFsdWUpOgogICAgICAgIGxhbWJkYTogY2VsbAogICAgICAgIGNlbGwgPSB2YWx1ZQoKICAgIGNvID0gX2NlbGxfc2V0X2ZhY3RvcnkuX19jb2RlX18KCiAgICBfY2VsbF9zZXRfdGVtcGxhdGVfY29kZSA9IHR5cGVzLkNvZGVUeXBlKAogICAgICAgIGNvLmNvX2FyZ2NvdW50LAogICAgICAgIGNvLmNvX2t3b25seWFyZ2NvdW50LCAgICMgUHl0aG9uIDMgb25seSBhcmd1bWVudAogICAgICAgIGNvLmNvX25sb2NhbHMsCiAgICAgICAgY28uY29fc3RhY2tzaXplLAogICAgICAgIGNvLmNvX2ZsYWdzLAogICAgICAgIGNvLmNvX2NvZGUsCiAgICAgICAgY28uY29fY29uc3RzLAogICAgICAgIGNvLmNvX25hbWVzLAogICAgICAgIGNvLmNvX3Zhcm5hbWVzLAogICAgICAgIGNvLmNvX2ZpbGVuYW1lLAogICAgICAgIGNvLmNvX25hbWUsCiAgICAgICAgY28uY29fZmlyc3RsaW5lbm8sCiAgICAgICAgY28uY29fbG5vdGFiLAogICAgICAgIGNvLmNvX2NlbGx2YXJzLCAgIyBjb19mcmVldmFycyBpcyBpbml0aWFsaXplZCB3aXRoIGNvX2NlbGx2YXJzCiAgICAgICAgKCksICAjIGNvX2NlbGx2YXJzIGlzIG1hZGUgZW1wdHkKICAgICkKICAgIHJldHVybiBfY2VsbF9zZXRfdGVtcGxhdGVfY29kZQoKCmlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDcpOgogICAgX2NlbGxfc2V0X3RlbXBsYXRlX2NvZGUgPSBfbWFrZV9jZWxsX3NldF90ZW1wbGF0ZV9jb2RlKCkKCiMgcmVsZXZhbnQgb3Bjb2RlcwpTVE9SRV9HTE9CQUwgPSBvcGNvZGUub3BtYXBbJ1NUT1JFX0dMT0JBTCddCkRFTEVURV9HTE9CQUwgPSBvcGNvZGUub3BtYXBbJ0RFTEVURV9HTE9CQUwnXQpMT0FEX0dMT0JBTCA9IG9wY29kZS5vcG1hcFsnTE9BRF9HTE9CQUwnXQpHTE9CQUxfT1BTID0gKFNUT1JFX0dMT0JBTCwgREVMRVRFX0dMT0JBTCwgTE9BRF9HTE9CQUwpCkhBVkVfQVJHVU1FTlQgPSBkaXMuSEFWRV9BUkdVTUVOVApFWFRFTkRFRF9BUkcgPSBkaXMuRVhURU5ERURfQVJHCgoKX0JVSUxUSU5fVFlQRV9OQU1FUyA9IHt9CmZvciBrLCB2IGluIHR5cGVzLl9fZGljdF9fLml0ZW1zKCk6CiAgICBpZiB0eXBlKHYpIGlzIHR5cGU6CiAgICAgICAgX0JVSUxUSU5fVFlQRV9OQU1FU1t2XSA9IGsKCgpkZWYgX2J1aWx0aW5fdHlwZShuYW1lKToKICAgIGlmIG5hbWUgPT0gIkNsYXNzVHlwZSI6ICAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAjIEJhY2t3YXJkIGNvbXBhdCB0byBsb2FkIHBpY2tsZSBmaWxlcyBnZW5lcmF0ZWQgd2l0aCBjbG91ZHBpY2tsZQogICAgICAgICMgPCAxLjMgZXZlbiBpZiBsb2FkaW5nIHBpY2tsZSBmaWxlcyBmcm9tIG9sZGVyIHZlcnNpb25zIGlzIG5vdAogICAgICAgICMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQuCiAgICAgICAgcmV0dXJuIHR5cGUKICAgIHJldHVybiBnZXRhdHRyKHR5cGVzLCBuYW1lKQoKCmRlZiBfd2Fsa19nbG9iYWxfb3BzKGNvZGUpOgogICAgIiIiCiAgICBZaWVsZCByZWZlcmVuY2VkIG5hbWUgZm9yIGFsbCBnbG9iYWwtcmVmZXJlbmNpbmcgaW5zdHJ1Y3Rpb25zIGluICpjb2RlKi4KICAgICIiIgogICAgZm9yIGluc3RyIGluIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGNvZGUpOgogICAgICAgIG9wID0gaW5zdHIub3Bjb2RlCiAgICAgICAgaWYgb3AgaW4gR0xPQkFMX09QUzoKICAgICAgICAgICAgeWllbGQgaW5zdHIuYXJndmFsCgoKZGVmIF9leHRyYWN0X2NsYXNzX2RpY3QoY2xzKToKICAgICIiIlJldHJpZXZlIGEgY29weSBvZiB0aGUgZGljdCBvZiBhIGNsYXNzIHdpdGhvdXQgdGhlIGluaGVyaXRlZCBtZXRob2RzIiIiCiAgICBjbHNkaWN0ID0gZGljdChjbHMuX19kaWN0X18pICAjIGNvcHkgZGljdCBwcm94eSB0byBhIGRpY3QKICAgIGlmIGxlbihjbHMuX19iYXNlc19fKSA9PSAxOgogICAgICAgIGluaGVyaXRlZF9kaWN0ID0gY2xzLl9fYmFzZXNfX1swXS5fX2RpY3RfXwogICAgZWxzZToKICAgICAgICBpbmhlcml0ZWRfZGljdCA9IHt9CiAgICAgICAgZm9yIGJhc2UgaW4gcmV2ZXJzZWQoY2xzLl9fYmFzZXNfXyk6CiAgICAgICAgICAgIGluaGVyaXRlZF9kaWN0LnVwZGF0ZShiYXNlLl9fZGljdF9fKQogICAgdG9fcmVtb3ZlID0gW10KICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBjbHNkaWN0Lml0ZW1zKCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBiYXNlX3ZhbHVlID0gaW5oZXJpdGVkX2RpY3RbbmFtZV0KICAgICAgICAgICAgaWYgdmFsdWUgaXMgYmFzZV92YWx1ZToKICAgICAgICAgICAgICAgIHRvX3JlbW92ZS5hcHBlbmQobmFtZSkKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgIGZvciBuYW1lIGluIHRvX3JlbW92ZToKICAgICAgICBjbHNkaWN0LnBvcChuYW1lKQogICAgcmV0dXJuIGNsc2RpY3QKCgppZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA3KTogICMgcHJhZ21hOiBubyBicmFuY2gKICAgIGRlZiBfaXNfcGFyYW1ldHJpemVkX3R5cGVfaGludChvYmopOgogICAgICAgICMgVGhpcyBpcyB2ZXJ5IGNoZWFwIGJ1dCBtaWdodCBnZW5lcmF0ZSBmYWxzZSBwb3NpdGl2ZXMuIFNvIHRyeSB0bwogICAgICAgICMgbmFycm93IGl0IGRvd24gaXMgZ29vZCBhcyBwb3NzaWJsZS4KICAgICAgICB0eXBlX21vZHVsZSA9IGdldGF0dHIodHlwZShvYmopLCAnX19tb2R1bGVfXycsIE5vbmUpCiAgICAgICAgZnJvbV90eXBpbmdfZXh0ZW5zaW9ucyA9IHR5cGVfbW9kdWxlID09ICd0eXBpbmdfZXh0ZW5zaW9ucycKICAgICAgICBmcm9tX3R5cGluZyA9IHR5cGVfbW9kdWxlID09ICd0eXBpbmcnCgogICAgICAgICMgZ2VuZXJhbCB0eXBpbmcgQ29uc3RydWN0cwogICAgICAgIGlzX3R5cGluZyA9IGdldGF0dHIob2JqLCAnX19vcmlnaW5fXycsIE5vbmUpIGlzIG5vdCBOb25lCgogICAgICAgICMgdHlwaW5nX2V4dGVuc2lvbnMuTGl0ZXJhbAogICAgICAgIGlzX2xpdGVyYWwgPSAoCiAgICAgICAgICAgIChnZXRhdHRyKG9iaiwgJ19fdmFsdWVzX18nLCBOb25lKSBpcyBub3QgTm9uZSkKICAgICAgICAgICAgYW5kIGZyb21fdHlwaW5nX2V4dGVuc2lvbnMKICAgICAgICApCgogICAgICAgICMgdHlwaW5nX2V4dGVuc2lvbnMuRmluYWwKICAgICAgICBpc19maW5hbCA9ICgKICAgICAgICAgICAgKGdldGF0dHIob2JqLCAnX190eXBlX18nLCBOb25lKSBpcyBub3QgTm9uZSkKICAgICAgICAgICAgYW5kIGZyb21fdHlwaW5nX2V4dGVuc2lvbnMKICAgICAgICApCgogICAgICAgICMgdHlwaW5nLkNsYXNzVmFyCiAgICAgICAgaXNfY2xhc3N2YXIgPSAoCiAgICAgICAgICAgIChnZXRhdHRyKG9iaiwgJ19fdHlwZV9fJywgTm9uZSkgaXMgbm90IE5vbmUpIGFuZCBmcm9tX3R5cGluZwogICAgICAgICkKCiAgICAgICAgIyB0eXBpbmcuVW5pb24vVHVwbGUgZm9yIG9sZCBQeXRob24gMy41CiAgICAgICAgaXNfdW5pb24gPSBnZXRhdHRyKG9iaiwgJ19fdW5pb25fcGFyYW1zX18nLCBOb25lKSBpcyBub3QgTm9uZQogICAgICAgIGlzX3R1cGxlID0gZ2V0YXR0cihvYmosICdfX3R1cGxlX3BhcmFtc19fJywgTm9uZSkgaXMgbm90IE5vbmUKICAgICAgICBpc19jYWxsYWJsZSA9ICgKICAgICAgICAgICAgZ2V0YXR0cihvYmosICdfX3Jlc3VsdF9fJywgTm9uZSkgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgIGdldGF0dHIob2JqLCAnX19hcmdzX18nLCBOb25lKSBpcyBub3QgTm9uZQogICAgICAgICkKICAgICAgICByZXR1cm4gYW55KChpc190eXBpbmcsIGlzX2xpdGVyYWwsIGlzX2ZpbmFsLCBpc19jbGFzc3ZhciwgaXNfdW5pb24sCiAgICAgICAgICAgICAgICAgICAgaXNfdHVwbGUsIGlzX2NhbGxhYmxlKSkKCiAgICBkZWYgX2NyZWF0ZV9wYXJhbWV0cml6ZWRfdHlwZV9oaW50KG9yaWdpbiwgYXJncyk6CiAgICAgICAgcmV0dXJuIG9yaWdpblthcmdzXQplbHNlOgogICAgX2lzX3BhcmFtZXRyaXplZF90eXBlX2hpbnQgPSBOb25lCiAgICBfY3JlYXRlX3BhcmFtZXRyaXplZF90eXBlX2hpbnQgPSBOb25lCgoKZGVmIHBhcmFtZXRyaXplZF90eXBlX2hpbnRfZ2V0aW5pdGFyZ3Mob2JqKToKICAgICMgVGhlIGRpc3RvcnRlZCB0eXBlIGNoZWNrIHNlbWF0aWMgZm9yIHR5cGluZyBjb25zdHJ1Y3QgYmVjb21lczoKICAgICMgYGB0eXBlKG9iaikgaXMgdHlwZShUeXBlSGludClgYCwgd2hpY2ggbWVhbnMgIm9iaiBpcyBhCiAgICAjIHBhcmFtZXRyaXplZCBUeXBlSGludCIKICAgIGlmIHR5cGUob2JqKSBpcyB0eXBlKExpdGVyYWwpOiAgIyBwcmFnbWE6IG5vIGJyYW5jaAogICAgICAgIGluaXRhcmdzID0gKExpdGVyYWwsIG9iai5fX3ZhbHVlc19fKQogICAgZWxpZiB0eXBlKG9iaikgaXMgdHlwZShGaW5hbCk6ICAjIHByYWdtYTogbm8gYnJhbmNoCiAgICAgICAgaW5pdGFyZ3MgPSAoRmluYWwsIG9iai5fX3R5cGVfXykKICAgIGVsaWYgdHlwZShvYmopIGlzIHR5cGUoQ2xhc3NWYXIpOgogICAgICAgIGluaXRhcmdzID0gKENsYXNzVmFyLCBvYmouX190eXBlX18pCiAgICBlbGlmIHR5cGUob2JqKSBpcyB0eXBlKEdlbmVyaWMpOgogICAgICAgIGluaXRhcmdzID0gKG9iai5fX29yaWdpbl9fLCBvYmouX19hcmdzX18pCiAgICBlbGlmIHR5cGUob2JqKSBpcyB0eXBlKFVuaW9uKToKICAgICAgICBpbml0YXJncyA9IChVbmlvbiwgb2JqLl9fYXJnc19fKQogICAgZWxpZiB0eXBlKG9iaikgaXMgdHlwZShUdXBsZSk6CiAgICAgICAgaW5pdGFyZ3MgPSAoVHVwbGUsIG9iai5fX2FyZ3NfXykKICAgIGVsaWYgdHlwZShvYmopIGlzIHR5cGUoQ2FsbGFibGUpOgogICAgICAgICgqYXJncywgcmVzdWx0KSA9IG9iai5fX2FyZ3NfXwogICAgICAgIGlmIGxlbihhcmdzKSA9PSAxIGFuZCBhcmdzWzBdIGlzIEVsbGlwc2lzOgogICAgICAgICAgICBhcmdzID0gRWxsaXBzaXMKICAgICAgICBlbHNlOgogICAgICAgICAgICBhcmdzID0gbGlzdChhcmdzKQogICAgICAgIGluaXRhcmdzID0gKENhbGxhYmxlLCAoYXJncywgcmVzdWx0KSkKICAgIGVsc2U6ICAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICByYWlzZSBwaWNrbGUuUGlja2xpbmdFcnJvcigKICAgICAgICAgICAgZiJDbG91ZHBpY2tsZSBFcnJvcjogVW5rbm93biB0eXBlIHt0eXBlKG9iail9IgogICAgICAgICkKICAgIHJldHVybiBpbml0YXJncwoKCiMgVG9ybmFkbyBzdXBwb3J0CgpkZWYgaXNfdG9ybmFkb19jb3JvdXRpbmUoZnVuYyk6CiAgICAiIiIKICAgIFJldHVybiB3aGV0aGVyICpmdW5jKiBpcyBhIFRvcm5hZG8gY29yb3V0aW5lIGZ1bmN0aW9uLgogICAgUnVubmluZyBjb3JvdXRpbmVzIGFyZSBub3Qgc3VwcG9ydGVkLgogICAgIiIiCiAgICBpZiAndG9ybmFkby5nZW4nIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGdlbiA9IHN5cy5tb2R1bGVzWyd0b3JuYWRvLmdlbiddCiAgICBpZiBub3QgaGFzYXR0cihnZW4sICJpc19jb3JvdXRpbmVfZnVuY3Rpb24iKToKICAgICAgICAjIFRvcm5hZG8gdmVyc2lvbiBpcyB0b28gb2xkCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gZ2VuLmlzX2Nvcm91dGluZV9mdW5jdGlvbihmdW5jKQoKCmRlZiBfcmVidWlsZF90b3JuYWRvX2Nvcm91dGluZShmdW5jKToKICAgIGZyb20gdG9ybmFkbyBpbXBvcnQgZ2VuCiAgICByZXR1cm4gZ2VuLmNvcm91dGluZShmdW5jKQoKCiMgaW5jbHVkaW5nIHBpY2tsZXMgdW5sb2FkaW5nIGZ1bmN0aW9ucyBpbiB0aGlzIG5hbWVzcGFjZQpsb2FkID0gcGlja2xlLmxvYWQKbG9hZHMgPSBwaWNrbGUubG9hZHMKCgpkZWYgc3ViaW1wb3J0KG5hbWUpOgogICAgIyBXZSBjYW5ub3QgZG8gc2ltcGx5OiBgcmV0dXJuIF9faW1wb3J0X18obmFtZSlgOiBJbmRlZWQsIGlmIGBgbmFtZWBgIGlzCiAgICAjIHRoZSBuYW1lIG9mIGEgc3VibW9kdWxlLCBfX2ltcG9ydF9fIHdpbGwgcmV0dXJuIHRoZSB0b3AtbGV2ZWwgcm9vdCBtb2R1bGUKICAgICMgb2YgdGhpcyBzdWJtb2R1bGUuIEZvciBpbnN0YW5jZSwgX19pbXBvcnRfXygnb3MucGF0aCcpIHJldHVybnMgdGhlIGBvc2AKICAgICMgbW9kdWxlLgogICAgX19pbXBvcnRfXyhuYW1lKQogICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCgoKZGVmIGR5bmFtaWNfc3ViaW1wb3J0KG5hbWUsIHZhcnMpOgogICAgbW9kID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgbW9kLl9fZGljdF9fLnVwZGF0ZSh2YXJzKQogICAgbW9kLl9fZGljdF9fWydfX2J1aWx0aW5zX18nXSA9IGJ1aWx0aW5zLl9fZGljdF9fCiAgICByZXR1cm4gbW9kCgoKZGVmIF9nZW5fZWxsaXBzaXMoKToKICAgIHJldHVybiBFbGxpcHNpcwoKCmRlZiBfZ2VuX25vdF9pbXBsZW1lbnRlZCgpOgogICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgoKZGVmIF9nZXRfY2VsbF9jb250ZW50cyhjZWxsKToKICAgIHRyeToKICAgICAgICByZXR1cm4gY2VsbC5jZWxsX2NvbnRlbnRzCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAjIHNlbnRpbmVsIHVzZWQgYnkgYGBfZmlsbF9mdW5jdGlvbmBgIHdoaWNoIHdpbGwgbGVhdmUgdGhlIGNlbGwgZW1wdHkKICAgICAgICByZXR1cm4gX2VtcHR5X2NlbGxfdmFsdWUKCgpkZWYgaW5zdGFuY2UoY2xzKToKICAgICIiIkNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBhIGNsYXNzLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGNscyA6IHR5cGUKICAgICAgICBUaGUgY2xhc3MgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIGluc3RhbmNlIDogY2xzCiAgICAgICAgQSBuZXcgaW5zdGFuY2Ugb2YgYGBjbHNgYC4KICAgICIiIgogICAgcmV0dXJuIGNscygpCgoKQGluc3RhbmNlCmNsYXNzIF9lbXB0eV9jZWxsX3ZhbHVlOgogICAgIiIic2VudGluZWwgZm9yIGVtcHR5IGNsb3N1cmVzCiAgICAiIiIKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9fcmVkdWNlX18oY2xzKToKICAgICAgICByZXR1cm4gY2xzLl9fbmFtZV9fCgoKZGVmIF9maWxsX2Z1bmN0aW9uKCphcmdzKToKICAgICIiIkZpbGxzIGluIHRoZSByZXN0IG9mIGZ1bmN0aW9uIGRhdGEgaW50byB0aGUgc2tlbGV0b24gZnVuY3Rpb24gb2JqZWN0CgogICAgVGhlIHNrZWxldG9uIGl0c2VsZiBpcyBjcmVhdGUgYnkgX21ha2Vfc2tlbF9mdW5jKCkuCiAgICAiIiIKICAgIGlmIGxlbihhcmdzKSA9PSAyOgogICAgICAgIGZ1bmMgPSBhcmdzWzBdCiAgICAgICAgc3RhdGUgPSBhcmdzWzFdCiAgICBlbGlmIGxlbihhcmdzKSA9PSA1OgogICAgICAgICMgQmFja3dhcmRzIGNvbXBhdCBmb3IgY2xvdWRwaWNrbGUgdjAuNC4wLCBhZnRlciB3aGljaCB0aGUgYG1vZHVsZWAKICAgICAgICAjIGFyZ3VtZW50IHdhcyBpbnRyb2R1Y2VkCiAgICAgICAgZnVuYyA9IGFyZ3NbMF0KICAgICAgICBrZXlzID0gWydnbG9iYWxzJywgJ2RlZmF1bHRzJywgJ2RpY3QnLCAnY2xvc3VyZV92YWx1ZXMnXQogICAgICAgIHN0YXRlID0gZGljdCh6aXAoa2V5cywgYXJnc1sxOl0pKQogICAgZWxpZiBsZW4oYXJncykgPT0gNjoKICAgICAgICAjIEJhY2t3YXJkcyBjb21wYXQgZm9yIGNsb3VkcGlja2xlIHYwLjQuMSwgYWZ0ZXIgd2hpY2ggdGhlIGZ1bmN0aW9uCiAgICAgICAgIyBzdGF0ZSB3YXMgcGFzc2VkIGFzIGEgZGljdCB0byB0aGUgX2ZpbGxfZnVuY3Rpb24gaXQtc2VsZi4KICAgICAgICBmdW5jID0gYXJnc1swXQogICAgICAgIGtleXMgPSBbJ2dsb2JhbHMnLCAnZGVmYXVsdHMnLCAnZGljdCcsICdtb2R1bGUnLCAnY2xvc3VyZV92YWx1ZXMnXQogICAgICAgIHN0YXRlID0gZGljdCh6aXAoa2V5cywgYXJnc1sxOl0pKQogICAgZWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnVW5leHBlY3RlZCBfZmlsbF92YWx1ZSBhcmd1bWVudHM6IHthcmdzIXJ9JykKCiAgICAjIC0gQXQgcGlja2xpbmcgdGltZSwgYW55IGR5bmFtaWMgZ2xvYmFsIHZhcmlhYmxlIHVzZWQgYnkgZnVuYyBpcwogICAgIyAgIHNlcmlhbGl6ZWQgYnkgdmFsdWUgKGluIHN0YXRlWydnbG9iYWxzJ10pLgogICAgIyAtIEF0IHVucGlja2xpbmcgdGltZSwgZnVuYydzIF9fZ2xvYmFsc19fIGF0dHJpYnV0ZSBpcyBpbml0aWFsaXplZCBieQogICAgIyAgIGZpcnN0IHJldHJpZXZpbmcgYW4gZW1wdHkgaXNvbGF0ZWQgbmFtZXNwYWNlIHRoYXQgd2lsbCBiZSBzaGFyZWQKICAgICMgICB3aXRoIG90aGVyIGZ1bmN0aW9ucyBwaWNrbGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luYWwgbW9kdWxlCiAgICAjICAgYnkgdGhlIHNhbWUgQ2xvdWRQaWNrbGVyIGluc3RhbmNlIGFuZCB0aGVuIHVwZGF0ZWQgd2l0aCB0aGUKICAgICMgICBjb250ZW50IG9mIHN0YXRlWydnbG9iYWxzJ10gdG8gcG9wdWxhdGUgdGhlIHNoYXJlZCBpc29sYXRlZAogICAgIyAgIG5hbWVzcGFjZSB3aXRoIGFsbCB0aGUgZ2xvYmFsIHZhcmlhYmxlcyB0aGF0IGFyZSBzcGVjaWZpY2FsbHkKICAgICMgICByZWZlcmVuY2VkIGZvciB0aGlzIGZ1bmN0aW9uLgogICAgZnVuYy5fX2dsb2JhbHNfXy51cGRhdGUoc3RhdGVbJ2dsb2JhbHMnXSkKCiAgICBmdW5jLl9fZGVmYXVsdHNfXyA9IHN0YXRlWydkZWZhdWx0cyddCiAgICBmdW5jLl9fZGljdF9fID0gc3RhdGVbJ2RpY3QnXQogICAgaWYgJ2Fubm90YXRpb25zJyBpbiBzdGF0ZToKICAgICAgICBmdW5jLl9fYW5ub3RhdGlvbnNfXyA9IHN0YXRlWydhbm5vdGF0aW9ucyddCiAgICBpZiAnZG9jJyBpbiBzdGF0ZToKICAgICAgICBmdW5jLl9fZG9jX18gPSBzdGF0ZVsnZG9jJ10KICAgIGlmICduYW1lJyBpbiBzdGF0ZToKICAgICAgICBmdW5jLl9fbmFtZV9fID0gc3RhdGVbJ25hbWUnXQogICAgaWYgJ21vZHVsZScgaW4gc3RhdGU6CiAgICAgICAgZnVuYy5fX21vZHVsZV9fID0gc3RhdGVbJ21vZHVsZSddCiAgICBpZiAncXVhbG5hbWUnIGluIHN0YXRlOgogICAgICAgIGZ1bmMuX19xdWFsbmFtZV9fID0gc3RhdGVbJ3F1YWxuYW1lJ10KICAgIGlmICdrd2RlZmF1bHRzJyBpbiBzdGF0ZToKICAgICAgICBmdW5jLl9fa3dkZWZhdWx0c19fID0gc3RhdGVbJ2t3ZGVmYXVsdHMnXQogICAgIyBfY2xvdWRwaWNrbGVfc3ViaW1wb3J0cyBpcyBhIHNldCBvZiBzdWJtb2R1bGVzIHRoYXQgbXVzdCBiZSBsb2FkZWQgZm9yCiAgICAjIHRoZSBwaWNrbGVkIGZ1bmN0aW9uIHRvIHdvcmsgY29ycmVjdGx5IGF0IHVucGlja2xpbmcgdGltZS4gTm93IHRoYXQgdGhlc2UKICAgICMgc3VibW9kdWxlcyBhcmUgZGVwaWNrbGVkIChoZW5jZSBpbXBvcnRlZCksIHRoZXkgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUKICAgICMgb2JqZWN0J3Mgc3RhdGUgKHRoZSBvYmplY3Qgc3RhdGUgb25seSBzZXJ2ZWQgYXMgYSByZWZlcmVuY2UgaG9sZGVyIHRvCiAgICAjIHRoZXNlIHN1Ym1vZHVsZXMpCiAgICBpZiAnX2Nsb3VkcGlja2xlX3N1Ym1vZHVsZXMnIGluIHN0YXRlOgogICAgICAgIHN0YXRlLnBvcCgnX2Nsb3VkcGlja2xlX3N1Ym1vZHVsZXMnKQoKICAgIGNlbGxzID0gZnVuYy5fX2Nsb3N1cmVfXwogICAgaWYgY2VsbHMgaXMgbm90IE5vbmU6CiAgICAgICAgZm9yIGNlbGwsIHZhbHVlIGluIHppcChjZWxscywgc3RhdGVbJ2Nsb3N1cmVfdmFsdWVzJ10pOgogICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgX2VtcHR5X2NlbGxfdmFsdWU6CiAgICAgICAgICAgICAgICBjZWxsX3NldChjZWxsLCB2YWx1ZSkKCiAgICByZXR1cm4gZnVuYwoKCmRlZiBfbWFrZV9mdW5jdGlvbihjb2RlLCBnbG9iYWxzLCBuYW1lLCBhcmdkZWZzLCBjbG9zdXJlKToKICAgICMgU2V0dGluZyBfX2J1aWx0aW5zX18gaW4gZ2xvYmFscyBpcyBuZWVkZWQgZm9yIG5vZ2lsIENQeXRob24uCiAgICBnbG9iYWxzWyJfX2J1aWx0aW5zX18iXSA9IF9fYnVpbHRpbnNfXwogICAgcmV0dXJuIHR5cGVzLkZ1bmN0aW9uVHlwZShjb2RlLCBnbG9iYWxzLCBuYW1lLCBhcmdkZWZzLCBjbG9zdXJlKQoKCmRlZiBfbWFrZV9lbXB0eV9jZWxsKCk6CiAgICBpZiBGYWxzZToKICAgICAgICAjIHRyaWNrIHRoZSBjb21waWxlciBpbnRvIGNyZWF0aW5nIGFuIGVtcHR5IGNlbGwgaW4gb3VyIGxhbWJkYQogICAgICAgIGNlbGwgPSBOb25lCiAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ3RoaXMgcm91dGUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCcpCgogICAgcmV0dXJuIChsYW1iZGE6IGNlbGwpLl9fY2xvc3VyZV9fWzBdCgoKZGVmIF9tYWtlX2NlbGwodmFsdWU9X2VtcHR5X2NlbGxfdmFsdWUpOgogICAgY2VsbCA9IF9tYWtlX2VtcHR5X2NlbGwoKQogICAgaWYgdmFsdWUgaXMgbm90IF9lbXB0eV9jZWxsX3ZhbHVlOgogICAgICAgIGNlbGxfc2V0KGNlbGwsIHZhbHVlKQogICAgcmV0dXJuIGNlbGwKCgpkZWYgX21ha2Vfc2tlbF9mdW5jKGNvZGUsIGNlbGxfY291bnQsIGJhc2VfZ2xvYmFscz1Ob25lKToKICAgICIiIiBDcmVhdGVzIGEgc2tlbGV0b24gZnVuY3Rpb24gb2JqZWN0IHRoYXQgY29udGFpbnMganVzdCB0aGUgcHJvdmlkZWQKICAgICAgICBjb2RlIGFuZCB0aGUgY29ycmVjdCBudW1iZXIgb2YgY2VsbHMgaW4gZnVuY19jbG9zdXJlLiAgQWxsIG90aGVyCiAgICAgICAgZnVuYyBhdHRyaWJ1dGVzIChlLmcuIGZ1bmNfZ2xvYmFscykgYXJlIGVtcHR5LgogICAgIiIiCiAgICAjIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgaW4gY2xvdWRwaWNrbGUgMS43CiAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICJBIHBpY2tsZSBmaWxlIGNyZWF0ZWQgdXNpbmcgYW4gb2xkICg8PTEuNC4xKSB2ZXJzaW9uIG9mIGNsb3VkcGlja2xlICIKICAgICAgICAiaXMgY3VycmVudGx5IGJlaW5nIGxvYWRlZC4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IGNsb3VkcGlja2xlIGFuZCAiCiAgICAgICAgIndpbGwgYnJlYWsgaW4gY2xvdWRwaWNrbGUgMS43IiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcKICAgICkKICAgICMgVGhpcyBpcyBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IGNvZGU6IGZvciBjbG91ZHBpY2tsZSB2ZXJzaW9ucyBiZXR3ZWVuCiAgICAjIDAuNS40IGFuZCAwLjcsIGJhc2VfZ2xvYmFscyBjb3VsZCBiZSBhIHN0cmluZyBvciBOb25lLiBiYXNlX2dsb2JhbHMKICAgICMgc2hvdWxkIG5vdyBhbHdheXMgYmUgYSBkaWN0aW9uYXJ5LgogICAgaWYgYmFzZV9nbG9iYWxzIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShiYXNlX2dsb2JhbHMsIHN0cik6CiAgICAgICAgYmFzZV9nbG9iYWxzID0ge30KCiAgICBiYXNlX2dsb2JhbHNbJ19fYnVpbHRpbnNfXyddID0gX19idWlsdGluc19fCgogICAgY2xvc3VyZSA9ICgKICAgICAgICB0dXBsZShfbWFrZV9lbXB0eV9jZWxsKCkgZm9yIF8gaW4gcmFuZ2UoY2VsbF9jb3VudCkpCiAgICAgICAgaWYgY2VsbF9jb3VudCA+PSAwIGVsc2UKICAgICAgICBOb25lCiAgICApCiAgICByZXR1cm4gdHlwZXMuRnVuY3Rpb25UeXBlKGNvZGUsIGJhc2VfZ2xvYmFscywgTm9uZSwgTm9uZSwgY2xvc3VyZSkKCgpkZWYgX21ha2Vfc2tlbGV0b25fY2xhc3ModHlwZV9jb25zdHJ1Y3RvciwgbmFtZSwgYmFzZXMsIHR5cGVfa3dhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NfdHJhY2tlcl9pZCwgZXh0cmEpOgogICAgIiIiQnVpbGQgZHluYW1pYyBjbGFzcyB3aXRoIGFuIGVtcHR5IF9fZGljdF9fIHRvIGJlIGZpbGxlZCBvbmNlIG1lbW9pemVkCgogICAgSWYgY2xhc3NfdHJhY2tlcl9pZCBpcyBub3QgTm9uZSwgdHJ5IHRvIGxvb2t1cCBhbiBleGlzdGluZyBjbGFzcyBkZWZpbml0aW9uCiAgICBtYXRjaGluZyB0aGF0IGlkLiBJZiBub25lIGlzIGZvdW5kLCB0cmFjayBhIG5ld2x5IHJlY29uc3RydWN0ZWQgY2xhc3MKICAgIGRlZmluaXRpb24gdW5kZXIgdGhhdCBpZCBzbyB0aGF0IG90aGVyIGluc3RhbmNlcyBzdGVtbWluZyBmcm9tIHRoZSBzYW1lCiAgICBjbGFzcyBpZCB3aWxsIGFsc28gcmV1c2UgdGhpcyBjbGFzcyBkZWZpbml0aW9uLgoKICAgIFRoZSAiZXh0cmEiIHZhcmlhYmxlIGlzIG1lYW50IHRvIGJlIGEgZGljdCAob3IgTm9uZSkgdGhhdCBjYW4gYmUgdXNlZCBmb3IKICAgIGZvcndhcmQgY29tcGF0aWJpbGl0eSBzaGFsbCB0aGUgbmVlZCBhcmlzZS4KICAgICIiIgogICAgc2tlbGV0b25fY2xhc3MgPSB0eXBlcy5uZXdfY2xhc3MoCiAgICAgICAgbmFtZSwgYmFzZXMsIHsnbWV0YWNsYXNzJzogdHlwZV9jb25zdHJ1Y3Rvcn0sCiAgICAgICAgbGFtYmRhIG5zOiBucy51cGRhdGUodHlwZV9rd2FyZ3MpCiAgICApCiAgICByZXR1cm4gX2xvb2t1cF9jbGFzc19vcl90cmFjayhjbGFzc190cmFja2VyX2lkLCBza2VsZXRvbl9jbGFzcykKCgpkZWYgX3JlaHlkcmF0ZV9za2VsZXRvbl9jbGFzcyhza2VsZXRvbl9jbGFzcywgY2xhc3NfZGljdCk6CiAgICAiIiJQdXQgYXR0cmlidXRlcyBmcm9tIGBjbGFzc19kaWN0YCBiYWNrIG9uIGBza2VsZXRvbl9jbGFzc2AuCgogICAgU2VlIENsb3VkUGlja2xlci5zYXZlX2R5bmFtaWNfY2xhc3MgZm9yIG1vcmUgaW5mby4KICAgICIiIgogICAgcmVnaXN0cnkgPSBOb25lCiAgICBmb3IgYXR0cm5hbWUsIGF0dHIgaW4gY2xhc3NfZGljdC5pdGVtcygpOgogICAgICAgIGlmIGF0dHJuYW1lID09ICJfYWJjX2ltcGwiOgogICAgICAgICAgICByZWdpc3RyeSA9IGF0dHIKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZXRhdHRyKHNrZWxldG9uX2NsYXNzLCBhdHRybmFtZSwgYXR0cikKICAgIGlmIHJlZ2lzdHJ5IGlzIG5vdCBOb25lOgogICAgICAgIGZvciBzdWJjbGFzcyBpbiByZWdpc3RyeToKICAgICAgICAgICAgc2tlbGV0b25fY2xhc3MucmVnaXN0ZXIoc3ViY2xhc3MpCgogICAgcmV0dXJuIHNrZWxldG9uX2NsYXNzCgoKZGVmIF9tYWtlX3NrZWxldG9uX2VudW0oYmFzZXMsIG5hbWUsIHF1YWxuYW1lLCBtZW1iZXJzLCBtb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX3RyYWNrZXJfaWQsIGV4dHJhKToKICAgICIiIkJ1aWxkIGR5bmFtaWMgZW51bSB3aXRoIGFuIGVtcHR5IF9fZGljdF9fIHRvIGJlIGZpbGxlZCBvbmNlIG1lbW9pemVkCgogICAgVGhlIGNyZWF0aW9uIG9mIHRoZSBlbnVtIGNsYXNzIGlzIGluc3BpcmVkIGJ5IHRoZSBjb2RlIG9mCiAgICBFbnVtTWV0YS5fY3JlYXRlXy4KCiAgICBJZiBjbGFzc190cmFja2VyX2lkIGlzIG5vdCBOb25lLCB0cnkgdG8gbG9va3VwIGFuIGV4aXN0aW5nIGVudW0gZGVmaW5pdGlvbgogICAgbWF0Y2hpbmcgdGhhdCBpZC4gSWYgbm9uZSBpcyBmb3VuZCwgdHJhY2sgYSBuZXdseSByZWNvbnN0cnVjdGVkIGVudW0KICAgIGRlZmluaXRpb24gdW5kZXIgdGhhdCBpZCBzbyB0aGF0IG90aGVyIGluc3RhbmNlcyBzdGVtbWluZyBmcm9tIHRoZSBzYW1lCiAgICBjbGFzcyBpZCB3aWxsIGFsc28gcmV1c2UgdGhpcyBlbnVtIGRlZmluaXRpb24uCgogICAgVGhlICJleHRyYSIgdmFyaWFibGUgaXMgbWVhbnQgdG8gYmUgYSBkaWN0IChvciBOb25lKSB0aGF0IGNhbiBiZSB1c2VkIGZvcgogICAgZm9yd2FyZCBjb21wYXRpYmlsaXR5IHNoYWxsIHRoZSBuZWVkIGFyaXNlLgogICAgIiIiCiAgICAjIGVudW1zIGFsd2F5cyBpbmhlcml0IGZyb20gdGhlaXIgYmFzZSBFbnVtIGNsYXNzIGF0IHRoZSBsYXN0IHBvc2l0aW9uIGluCiAgICAjIHRoZSBsaXN0IG9mIGJhc2UgY2xhc3NlczoKICAgIGVudW1fYmFzZSA9IGJhc2VzWy0xXQogICAgbWV0YWNscyA9IGVudW1fYmFzZS5fX2NsYXNzX18KICAgIGNsYXNzZGljdCA9IG1ldGFjbHMuX19wcmVwYXJlX18obmFtZSwgYmFzZXMpCgogICAgZm9yIG1lbWJlcl9uYW1lLCBtZW1iZXJfdmFsdWUgaW4gbWVtYmVycy5pdGVtcygpOgogICAgICAgIGNsYXNzZGljdFttZW1iZXJfbmFtZV0gPSBtZW1iZXJfdmFsdWUKICAgIGVudW1fY2xhc3MgPSBtZXRhY2xzLl9fbmV3X18obWV0YWNscywgbmFtZSwgYmFzZXMsIGNsYXNzZGljdCkKICAgIGVudW1fY2xhc3MuX19tb2R1bGVfXyA9IG1vZHVsZQogICAgZW51bV9jbGFzcy5fX3F1YWxuYW1lX18gPSBxdWFsbmFtZQoKICAgIHJldHVybiBfbG9va3VwX2NsYXNzX29yX3RyYWNrKGNsYXNzX3RyYWNrZXJfaWQsIGVudW1fY2xhc3MpCgoKZGVmIF9tYWtlX3R5cGV2YXIobmFtZSwgYm91bmQsIGNvbnN0cmFpbnRzLCBjb3ZhcmlhbnQsIGNvbnRyYXZhcmlhbnQsCiAgICAgICAgICAgICAgICAgIGNsYXNzX3RyYWNrZXJfaWQpOgogICAgdHYgPSB0eXBpbmcuVHlwZVZhcigKICAgICAgICBuYW1lLCAqY29uc3RyYWludHMsIGJvdW5kPWJvdW5kLAogICAgICAgIGNvdmFyaWFudD1jb3ZhcmlhbnQsIGNvbnRyYXZhcmlhbnQ9Y29udHJhdmFyaWFudAogICAgKQogICAgaWYgY2xhc3NfdHJhY2tlcl9pZCBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gX2xvb2t1cF9jbGFzc19vcl90cmFjayhjbGFzc190cmFja2VyX2lkLCB0dikKICAgIGVsc2U6ICAjIHByYWdtYTogbm9jb3ZlcgogICAgICAgICMgT25seSBmb3IgUHl0aG9uIDMuNS4zIGNvbXBhdC4KICAgICAgICByZXR1cm4gdHYKCgpkZWYgX2RlY29tcG9zZV90eXBldmFyKG9iaik6CiAgICByZXR1cm4gKAogICAgICAgIG9iai5fX25hbWVfXywgb2JqLl9fYm91bmRfXywgb2JqLl9fY29uc3RyYWludHNfXywKICAgICAgICBvYmouX19jb3ZhcmlhbnRfXywgb2JqLl9fY29udHJhdmFyaWFudF9fLAogICAgICAgIF9nZXRfb3JfY3JlYXRlX3RyYWNrZXJfaWQob2JqKSwKICAgICkKCgpkZWYgX3R5cGV2YXJfcmVkdWNlKG9iaik6CiAgICAjIFR5cGVWYXIgaW5zdGFuY2VzIHJlcXVpcmUgdGhlIG1vZHVsZSBpbmZvcm1hdGlvbiBoZW5jZSB3aHkgd2UKICAgICMgYXJlIG5vdCB1c2luZyB0aGUgX3Nob3VsZF9waWNrbGVfYnlfcmVmZXJlbmNlIGRpcmVjdGx5CiAgICBtb2R1bGVfYW5kX25hbWUgPSBfbG9va3VwX21vZHVsZV9hbmRfcXVhbG5hbWUob2JqLCBuYW1lPW9iai5fX25hbWVfXykKCiAgICBpZiBtb2R1bGVfYW5kX25hbWUgaXMgTm9uZToKICAgICAgICByZXR1cm4gKF9tYWtlX3R5cGV2YXIsIF9kZWNvbXBvc2VfdHlwZXZhcihvYmopKQogICAgZWxpZiBfaXNfcmVnaXN0ZXJlZF9waWNrbGVfYnlfdmFsdWUobW9kdWxlX2FuZF9uYW1lWzBdKToKICAgICAgICByZXR1cm4gKF9tYWtlX3R5cGV2YXIsIF9kZWNvbXBvc2VfdHlwZXZhcihvYmopKQoKICAgIHJldHVybiAoZ2V0YXR0ciwgbW9kdWxlX2FuZF9uYW1lKQoKCmRlZiBfZ2V0X2Jhc2VzKHR5cCk6CiAgICBpZiAnX19vcmlnX2Jhc2VzX18nIGluIGdldGF0dHIodHlwLCAnX19kaWN0X18nLCB7fSk6CiAgICAgICAgIyBGb3IgZ2VuZXJpYyB0eXBlcyAoc2VlIFBFUCA1NjApCiAgICAgICAgIyBOb3RlIHRoYXQgc2ltcGx5IGNoZWNraW5nIGBoYXNhdHRyKHR5cCwgJ19fb3JpZ19iYXNlc19fJylgIGlzIG5vdAogICAgICAgICMgY29ycmVjdC4gIFN1YmNsYXNzZXMgb2YgYSBmdWxseS1wYXJhbWV0ZXJpemVkIGdlbmVyaWMgY2xhc3MgZG9lcyBub3QKICAgICAgICAjIGhhdmUgYF9fb3JpZ19iYXNlc19fYCBkZWZpbmVkLCBidXQgYGhhc2F0dHIodHlwLCAnX19vcmlnX2Jhc2VzX18nKWAKICAgICAgICAjIHdpbGwgcmV0dXJuIFRydWUgYmVjYXVzZSBpdCdzIGRlZmluZWQgaW4gdGhlIGJhc2UgY2xhc3MuCiAgICAgICAgYmFzZXNfYXR0ciA9ICdfX29yaWdfYmFzZXNfXycKICAgIGVsc2U6CiAgICAgICAgIyBGb3IgcmVndWxhciBjbGFzcyBvYmplY3RzCiAgICAgICAgYmFzZXNfYXR0ciA9ICdfX2Jhc2VzX18nCiAgICByZXR1cm4gZ2V0YXR0cih0eXAsIGJhc2VzX2F0dHIpCgoKZGVmIF9tYWtlX2RpY3Rfa2V5cyhvYmosIGlzX29yZGVyZWQ9RmFsc2UpOgogICAgaWYgaXNfb3JkZXJlZDoKICAgICAgICByZXR1cm4gT3JkZXJlZERpY3QuZnJvbWtleXMob2JqKS5rZXlzKCkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGRpY3QuZnJvbWtleXMob2JqKS5rZXlzKCkKCgpkZWYgX21ha2VfZGljdF92YWx1ZXMob2JqLCBpc19vcmRlcmVkPUZhbHNlKToKICAgIGlmIGlzX29yZGVyZWQ6CiAgICAgICAgcmV0dXJuIE9yZGVyZWREaWN0KChpLCBfKSBmb3IgaSwgXyBpbiBlbnVtZXJhdGUob2JqKSkudmFsdWVzKCkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIHtpOiBfIGZvciBpLCBfIGluIGVudW1lcmF0ZShvYmopfS52YWx1ZXMoKQoKCmRlZiBfbWFrZV9kaWN0X2l0ZW1zKG9iaiwgaXNfb3JkZXJlZD1GYWxzZSk6CiAgICBpZiBpc19vcmRlcmVkOgogICAgICAgIHJldHVybiBPcmRlcmVkRGljdChvYmopLml0ZW1zKCkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIG9iai5pdGVtcygpClBLAwQUAAAAAAC8K6NWK4XoikWFAABFhQAAHwAAAGNsb3VkcGlja2xlL2Nsb3VkcGlja2xlX2Zhc3QucHkiIiIKTmV3LCBmYXN0IHZlcnNpb24gb2YgdGhlIENsb3VkUGlja2xlci4KClRoaXMgbmV3IENsb3VkUGlja2xlciBjbGFzcyBjYW4gbm93IGV4dGVuZCB0aGUgZmFzdCBDIFBpY2tsZXIgaW5zdGVhZCBvZiB0aGUKcHJldmlvdXMgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQaWNrbGVyIGNsYXNzLiBCZWNhdXNlIHRoaXMgZnVuY3Rpb25hbGl0eQppcyBvbmx5IGF2YWlsYWJsZSBmb3IgUHl0aG9uIHZlcnNpb25zIDMuOCssIGEgbG90IG9mIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkKY29kZSBpcyBhbHNvIHJlbW92ZWQuCgpOb3RlIHRoYXQgdGhlIEMgUGlja2xlciBzdWJjbGFzc2luZyBBUEkgaXMgQ1B5dGhvbi1zcGVjaWZpYy4gVGhlcmVmb3JlLCBzb21lCmd1YXJkcyBwcmVzZW50IGluIGNsb3VkcGlja2xlLnB5IHRoYXQgd2VyZSB3cml0dGVuIHRvIGhhbmRsZSBQeVB5IHNwZWNpZmljaXRpZXMKYXJlIG5vdCBwcmVzZW50IGluIGNsb3VkcGlja2xlX2Zhc3QucHkKIiIiCmltcG9ydCBfY29sbGVjdGlvbnNfYWJjCmltcG9ydCBhYmMKaW1wb3J0IGNvcHlyZWcKaW1wb3J0IGlvCmltcG9ydCBpdGVydG9vbHMKaW1wb3J0IGxvZ2dpbmcKaW1wb3J0IHN5cwppbXBvcnQgc3RydWN0CmltcG9ydCB0eXBlcwppbXBvcnQgd2Vha3JlZgppbXBvcnQgdHlwaW5nCgpmcm9tIGVudW0gaW1wb3J0IEVudW0KZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAsIE9yZGVyZWREaWN0Cgpmcm9tIC5jb21wYXQgaW1wb3J0IHBpY2tsZSwgUGlja2xlcgpmcm9tIC5jbG91ZHBpY2tsZSBpbXBvcnQgKAogICAgX2V4dHJhY3RfY29kZV9nbG9iYWxzLCBfQlVJTFRJTl9UWVBFX05BTUVTLCBERUZBVUxUX1BST1RPQ09MLAogICAgX2ZpbmRfaW1wb3J0ZWRfc3VibW9kdWxlcywgX2dldF9jZWxsX2NvbnRlbnRzLCBfc2hvdWxkX3BpY2tsZV9ieV9yZWZlcmVuY2UsCiAgICBfYnVpbHRpbl90eXBlLCBfZ2V0X29yX2NyZWF0ZV90cmFja2VyX2lkLCAgX21ha2Vfc2tlbGV0b25fY2xhc3MsCiAgICBfbWFrZV9za2VsZXRvbl9lbnVtLCBfZXh0cmFjdF9jbGFzc19kaWN0LCBkeW5hbWljX3N1YmltcG9ydCwgc3ViaW1wb3J0LAogICAgX3R5cGV2YXJfcmVkdWNlLCBfZ2V0X2Jhc2VzLCBfbWFrZV9jZWxsLCBfbWFrZV9lbXB0eV9jZWxsLCBDZWxsVHlwZSwKICAgIF9pc19wYXJhbWV0cml6ZWRfdHlwZV9oaW50LCBQWVBZLCBjZWxsX3NldCwKICAgIHBhcmFtZXRyaXplZF90eXBlX2hpbnRfZ2V0aW5pdGFyZ3MsIF9jcmVhdGVfcGFyYW1ldHJpemVkX3R5cGVfaGludCwKICAgIGJ1aWx0aW5fY29kZV90eXBlLAogICAgX21ha2VfZGljdF9rZXlzLCBfbWFrZV9kaWN0X3ZhbHVlcywgX21ha2VfZGljdF9pdGVtcywgX21ha2VfZnVuY3Rpb24sCikKCgppZiBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCA+PSA1OgogICAgIyBTaG9ydGhhbmRzIHNpbWlsYXIgdG8gcGlja2xlLmR1bXAvcGlja2xlLmR1bXBzCgogICAgZGVmIGR1bXAob2JqLCBmaWxlLCBwcm90b2NvbD1Ob25lLCBidWZmZXJfY2FsbGJhY2s9Tm9uZSk6CiAgICAgICAgIiIiU2VyaWFsaXplIG9iaiBhcyBieXRlcyBzdHJlYW1lZCBpbnRvIGZpbGUKCiAgICAgICAgcHJvdG9jb2wgZGVmYXVsdHMgdG8gY2xvdWRwaWNrbGUuREVGQVVMVF9QUk9UT0NPTCB3aGljaCBpcyBhbiBhbGlhcyB0bwogICAgICAgIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MLiBUaGlzIHNldHRpbmcgZmF2b3JzIG1heGltdW0gY29tbXVuaWNhdGlvbgogICAgICAgIHNwZWVkIGJldHdlZW4gcHJvY2Vzc2VzIHJ1bm5pbmcgdGhlIHNhbWUgUHl0aG9uIHZlcnNpb24uCgogICAgICAgIFNldCBwcm90b2NvbD1waWNrbGUuREVGQVVMVF9QUk9UT0NPTCBpbnN0ZWFkIGlmIHlvdSBuZWVkIHRvIGVuc3VyZQogICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24uCiAgICAgICAgIiIiCiAgICAgICAgQ2xvdWRQaWNrbGVyKAogICAgICAgICAgICBmaWxlLCBwcm90b2NvbD1wcm90b2NvbCwgYnVmZmVyX2NhbGxiYWNrPWJ1ZmZlcl9jYWxsYmFjawogICAgICAgICkuZHVtcChvYmopCgogICAgZGVmIGR1bXBzKG9iaiwgcHJvdG9jb2w9Tm9uZSwgYnVmZmVyX2NhbGxiYWNrPU5vbmUpOgogICAgICAgICIiIlNlcmlhbGl6ZSBvYmogYXMgYSBzdHJpbmcgb2YgYnl0ZXMgYWxsb2NhdGVkIGluIG1lbW9yeQoKICAgICAgICBwcm90b2NvbCBkZWZhdWx0cyB0byBjbG91ZHBpY2tsZS5ERUZBVUxUX1BST1RPQ09MIHdoaWNoIGlzIGFuIGFsaWFzIHRvCiAgICAgICAgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wuIFRoaXMgc2V0dGluZyBmYXZvcnMgbWF4aW11bSBjb21tdW5pY2F0aW9uCiAgICAgICAgc3BlZWQgYmV0d2VlbiBwcm9jZXNzZXMgcnVubmluZyB0aGUgc2FtZSBQeXRob24gdmVyc2lvbi4KCiAgICAgICAgU2V0IHByb3RvY29sPXBpY2tsZS5ERUZBVUxUX1BST1RPQ09MIGluc3RlYWQgaWYgeW91IG5lZWQgdG8gZW5zdXJlCiAgICAgICAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbi4KICAgICAgICAiIiIKICAgICAgICB3aXRoIGlvLkJ5dGVzSU8oKSBhcyBmaWxlOgogICAgICAgICAgICBjcCA9IENsb3VkUGlja2xlcigKICAgICAgICAgICAgICAgIGZpbGUsIHByb3RvY29sPXByb3RvY29sLCBidWZmZXJfY2FsbGJhY2s9YnVmZmVyX2NhbGxiYWNrCiAgICAgICAgICAgICkKICAgICAgICAgICAgY3AuZHVtcChvYmopCiAgICAgICAgICAgIHJldHVybiBmaWxlLmdldHZhbHVlKCkKCmVsc2U6CiAgICAjIFNob3J0aGFuZHMgc2ltaWxhciB0byBwaWNrbGUuZHVtcC9waWNrbGUuZHVtcHMKICAgIGRlZiBkdW1wKG9iaiwgZmlsZSwgcHJvdG9jb2w9Tm9uZSk6CiAgICAgICAgIiIiU2VyaWFsaXplIG9iaiBhcyBieXRlcyBzdHJlYW1lZCBpbnRvIGZpbGUKCiAgICAgICAgcHJvdG9jb2wgZGVmYXVsdHMgdG8gY2xvdWRwaWNrbGUuREVGQVVMVF9QUk9UT0NPTCB3aGljaCBpcyBhbiBhbGlhcyB0bwogICAgICAgIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MLiBUaGlzIHNldHRpbmcgZmF2b3JzIG1heGltdW0gY29tbXVuaWNhdGlvbgogICAgICAgIHNwZWVkIGJldHdlZW4gcHJvY2Vzc2VzIHJ1bm5pbmcgdGhlIHNhbWUgUHl0aG9uIHZlcnNpb24uCgogICAgICAgIFNldCBwcm90b2NvbD1waWNrbGUuREVGQVVMVF9QUk9UT0NPTCBpbnN0ZWFkIGlmIHlvdSBuZWVkIHRvIGVuc3VyZQogICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24uCiAgICAgICAgIiIiCiAgICAgICAgQ2xvdWRQaWNrbGVyKGZpbGUsIHByb3RvY29sPXByb3RvY29sKS5kdW1wKG9iaikKCiAgICBkZWYgZHVtcHMob2JqLCBwcm90b2NvbD1Ob25lKToKICAgICAgICAiIiJTZXJpYWxpemUgb2JqIGFzIGEgc3RyaW5nIG9mIGJ5dGVzIGFsbG9jYXRlZCBpbiBtZW1vcnkKCiAgICAgICAgcHJvdG9jb2wgZGVmYXVsdHMgdG8gY2xvdWRwaWNrbGUuREVGQVVMVF9QUk9UT0NPTCB3aGljaCBpcyBhbiBhbGlhcyB0bwogICAgICAgIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MLiBUaGlzIHNldHRpbmcgZmF2b3JzIG1heGltdW0gY29tbXVuaWNhdGlvbgogICAgICAgIHNwZWVkIGJldHdlZW4gcHJvY2Vzc2VzIHJ1bm5pbmcgdGhlIHNhbWUgUHl0aG9uIHZlcnNpb24uCgogICAgICAgIFNldCBwcm90b2NvbD1waWNrbGUuREVGQVVMVF9QUk9UT0NPTCBpbnN0ZWFkIGlmIHlvdSBuZWVkIHRvIGVuc3VyZQogICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24uCiAgICAgICAgIiIiCiAgICAgICAgd2l0aCBpby5CeXRlc0lPKCkgYXMgZmlsZToKICAgICAgICAgICAgY3AgPSBDbG91ZFBpY2tsZXIoZmlsZSwgcHJvdG9jb2w9cHJvdG9jb2wpCiAgICAgICAgICAgIGNwLmR1bXAob2JqKQogICAgICAgICAgICByZXR1cm4gZmlsZS5nZXR2YWx1ZSgpCgoKbG9hZCwgbG9hZHMgPSBwaWNrbGUubG9hZCwgcGlja2xlLmxvYWRzCgoKIyBDT0xMRUNUSU9OIE9GIE9CSkVDVFMgX19nZXRuZXdhcmdzX18tTElLRSBNRVRIT0RTCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZGVmIF9jbGFzc19nZXRuZXdhcmdzKG9iaik6CiAgICB0eXBlX2t3YXJncyA9IHt9CiAgICBpZiAiX19tb2R1bGVfXyIgaW4gb2JqLl9fZGljdF9fOgogICAgICAgIHR5cGVfa3dhcmdzWyJfX21vZHVsZV9fIl0gPSBvYmouX19tb2R1bGVfXwoKICAgIF9fZGljdF9fID0gb2JqLl9fZGljdF9fLmdldCgnX19kaWN0X18nLCBOb25lKQogICAgaWYgaXNpbnN0YW5jZShfX2RpY3RfXywgcHJvcGVydHkpOgogICAgICAgIHR5cGVfa3dhcmdzWydfX2RpY3RfXyddID0gX19kaWN0X18KCiAgICByZXR1cm4gKHR5cGUob2JqKSwgb2JqLl9fbmFtZV9fLCBfZ2V0X2Jhc2VzKG9iaiksIHR5cGVfa3dhcmdzLAogICAgICAgICAgICBfZ2V0X29yX2NyZWF0ZV90cmFja2VyX2lkKG9iaiksIE5vbmUpCgoKZGVmIF9lbnVtX2dldG5ld2FyZ3Mob2JqKToKICAgIG1lbWJlcnMgPSB7ZS5uYW1lOiBlLnZhbHVlIGZvciBlIGluIG9ian0KICAgIHJldHVybiAob2JqLl9fYmFzZXNfXywgb2JqLl9fbmFtZV9fLCBvYmouX19xdWFsbmFtZV9fLCBtZW1iZXJzLAogICAgICAgICAgICBvYmouX19tb2R1bGVfXywgX2dldF9vcl9jcmVhdGVfdHJhY2tlcl9pZChvYmopLCBOb25lKQoKCiMgQ09MTEVDVElPTiBPRiBPQkpFQ1RTIFJFQ09OU1RSVUNUT1JTCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRlZiBfZmlsZV9yZWNvbnN0cnVjdG9yKHJldHZhbCk6CiAgICByZXR1cm4gcmV0dmFsCgoKIyBDT0xMRUNUSU9OIE9GIE9CSkVDVFMgU1RBVEUgR0VUVEVSUwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRlZiBfZnVuY3Rpb25fZ2V0c3RhdGUoZnVuYyk6CiAgICAjIC0gUHV0IGZ1bmMncyBkeW5hbWljIGF0dHJpYnV0ZXMgKHN0b3JlZCBpbiBmdW5jLl9fZGljdF9fKSBpbiBzdGF0ZS4gVGhlc2UKICAgICMgICBhdHRyaWJ1dGVzIHdpbGwgYmUgcmVzdG9yZWQgYXQgdW5waWNrbGluZyB0aW1lIHVzaW5nCiAgICAjICAgZi5fX2RpY3RfXy51cGRhdGUoc3RhdGUpCiAgICAjIC0gUHV0IGZ1bmMncyBtZW1iZXJzIGludG8gc2xvdHN0YXRlLiBTdWNoIGF0dHJpYnV0ZXMgd2lsbCBiZSByZXN0b3JlZCBhdAogICAgIyAgIHVucGlja2xpbmcgdGltZSBieSBpdGVyYXRpbmcgb3ZlciBzbG90c3RhdGUgYW5kIGNhbGxpbmcgc2V0YXR0cihmdW5jLAogICAgIyAgIHNsb3RuYW1lLCBzbG90dmFsdWUpCiAgICBzbG90c3RhdGUgPSB7CiAgICAgICAgIl9fbmFtZV9fIjogZnVuYy5fX25hbWVfXywKICAgICAgICAiX19xdWFsbmFtZV9fIjogZnVuYy5fX3F1YWxuYW1lX18sCiAgICAgICAgIl9fYW5ub3RhdGlvbnNfXyI6IGZ1bmMuX19hbm5vdGF0aW9uc19fLAogICAgICAgICJfX2t3ZGVmYXVsdHNfXyI6IGZ1bmMuX19rd2RlZmF1bHRzX18sCiAgICAgICAgIl9fZGVmYXVsdHNfXyI6IGZ1bmMuX19kZWZhdWx0c19fLAogICAgICAgICJfX21vZHVsZV9fIjogZnVuYy5fX21vZHVsZV9fLAogICAgICAgICJfX2RvY19fIjogZnVuYy5fX2RvY19fLAogICAgICAgICJfX2Nsb3N1cmVfXyI6IGZ1bmMuX19jbG9zdXJlX18sCiAgICB9CgogICAgZl9nbG9iYWxzX3JlZiA9IF9leHRyYWN0X2NvZGVfZ2xvYmFscyhmdW5jLl9fY29kZV9fKQogICAgZl9nbG9iYWxzID0ge2s6IGZ1bmMuX19nbG9iYWxzX19ba10gZm9yIGsgaW4gZl9nbG9iYWxzX3JlZiBpZiBrIGluCiAgICAgICAgICAgICAgICAgZnVuYy5fX2dsb2JhbHNfX30KCiAgICBjbG9zdXJlX3ZhbHVlcyA9ICgKICAgICAgICBsaXN0KG1hcChfZ2V0X2NlbGxfY29udGVudHMsIGZ1bmMuX19jbG9zdXJlX18pKQogICAgICAgIGlmIGZ1bmMuX19jbG9zdXJlX18gaXMgbm90IE5vbmUgZWxzZSAoKQogICAgKQoKICAgICMgRXh0cmFjdCBjdXJyZW50bHktaW1wb3J0ZWQgc3VibW9kdWxlcyB1c2VkIGJ5IGZ1bmMuIFN0b3JpbmcgdGhlc2UgbW9kdWxlcwogICAgIyBpbiBhIHNtb2tlIF9jbG91ZHBpY2tsZV9zdWJpbXBvcnRzIGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0J3Mgc3RhdGUgd2lsbAogICAgIyB0cmlnZ2VyIHRoZSBzaWRlIGVmZmVjdCBvZiBpbXBvcnRpbmcgdGhlc2UgbW9kdWxlcyBhdCB1bnBpY2tsaW5nIHRpbWUKICAgICMgKHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgZnVuYyB0byB3b3JrIGNvcnJlY3RseSBvbmNlIGRlcGlja2xlZCkKICAgIHNsb3RzdGF0ZVsiX2Nsb3VkcGlja2xlX3N1Ym1vZHVsZXMiXSA9IF9maW5kX2ltcG9ydGVkX3N1Ym1vZHVsZXMoCiAgICAgICAgZnVuYy5fX2NvZGVfXywgaXRlcnRvb2xzLmNoYWluKGZfZ2xvYmFscy52YWx1ZXMoKSwgY2xvc3VyZV92YWx1ZXMpKQogICAgc2xvdHN0YXRlWyJfX2dsb2JhbHNfXyJdID0gZl9nbG9iYWxzCgogICAgc3RhdGUgPSBmdW5jLl9fZGljdF9fCiAgICByZXR1cm4gc3RhdGUsIHNsb3RzdGF0ZQoKCmRlZiBfY2xhc3NfZ2V0c3RhdGUob2JqKToKICAgIGNsc2RpY3QgPSBfZXh0cmFjdF9jbGFzc19kaWN0KG9iaikKICAgIGNsc2RpY3QucG9wKCdfX3dlYWtyZWZfXycsIE5vbmUpCgogICAgaWYgaXNzdWJjbGFzcyh0eXBlKG9iaiksIGFiYy5BQkNNZXRhKToKICAgICAgICAjIElmIG9iaiBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBQkNNZXRhIHN1YmNsYXNzLCBkb24ndCBwaWNrbGUgdGhlCiAgICAgICAgIyBjYWNoZS9uZWdhdGl2ZSBjYWNoZXMgcG9wdWxhdGVkIGR1cmluZyBpc2luc3RhbmNlL2lzc3ViY2xhc3MKICAgICAgICAjIGNoZWNrcywgYnV0IHBpY2tsZSB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIHN1YmNsYXNzZXMgb2Ygb2JqLgogICAgICAgIGNsc2RpY3QucG9wKCdfYWJjX2NhY2hlJywgTm9uZSkKICAgICAgICBjbHNkaWN0LnBvcCgnX2FiY19uZWdhdGl2ZV9jYWNoZScsIE5vbmUpCiAgICAgICAgY2xzZGljdC5wb3AoJ19hYmNfbmVnYXRpdmVfY2FjaGVfdmVyc2lvbicsIE5vbmUpCiAgICAgICAgcmVnaXN0cnkgPSBjbHNkaWN0LnBvcCgnX2FiY19yZWdpc3RyeScsIE5vbmUpCiAgICAgICAgaWYgcmVnaXN0cnkgaXMgTm9uZToKICAgICAgICAgICAgIyBpbiBQeXRob24zLjcrLCB0aGUgYWJjIGNhY2hlcyBhbmQgcmVnaXN0ZXJlZCBzdWJjbGFzc2VzIG9mIGEKICAgICAgICAgICAgIyBjbGFzcyBhcmUgYnVuZGxlZCBpbnRvIHRoZSBzaW5nbGUgX2FiY19pbXBsIGF0dHJpYnV0ZQogICAgICAgICAgICBjbHNkaWN0LnBvcCgnX2FiY19pbXBsJywgTm9uZSkKICAgICAgICAgICAgKHJlZ2lzdHJ5LCBfLCBfLCBfKSA9IGFiYy5fZ2V0X2R1bXAob2JqKQoKICAgICAgICAgICAgY2xzZGljdFsiX2FiY19pbXBsIl0gPSBbc3ViY2xhc3Nfd2Vha3JlZigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdWJjbGFzc193ZWFrcmVmIGluIHJlZ2lzdHJ5XQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgSW4gdGhlIGFib3ZlIGlmIGNsYXVzZSwgcmVnaXN0cnkgaXMgYSBzZXQgb2Ygd2Vha3JlZnMgLS0gaW4KICAgICAgICAgICAgIyB0aGlzIGNhc2UsIHJlZ2lzdHJ5IGlzIGEgV2Vha1NldAogICAgICAgICAgICBjbHNkaWN0WyJfYWJjX2ltcGwiXSA9IFt0eXBlXyBmb3IgdHlwZV8gaW4gcmVnaXN0cnldCgogICAgaWYgIl9fc2xvdHNfXyIgaW4gY2xzZGljdDoKICAgICAgICAjIHBpY2tsZSBzdHJpbmcgbGVuZ3RoIG9wdGltaXphdGlvbjogbWVtYmVyIGRlc2NyaXB0b3JzIG9mIG9iaiBhcmUKICAgICAgICAjIGNyZWF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG9iaidzIF9fc2xvdHNfXyBhdHRyaWJ1dGUsIG5vIG5lZWQgdG8KICAgICAgICAjIHNhdmUgdGhlbSBpbiBvYmoncyBzdGF0ZQogICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLl9fc2xvdHNfXywgc3RyKToKICAgICAgICAgICAgY2xzZGljdC5wb3Aob2JqLl9fc2xvdHNfXykKICAgICAgICBlbHNlOgogICAgICAgICAgICBmb3IgayBpbiBvYmouX19zbG90c19fOgogICAgICAgICAgICAgICAgY2xzZGljdC5wb3AoaywgTm9uZSkKCiAgICBjbHNkaWN0LnBvcCgnX19kaWN0X18nLCBOb25lKSAgIyB1bnBpY2tsYWJsZSBwcm9wZXJ0eSBvYmplY3QKCiAgICByZXR1cm4gKGNsc2RpY3QsIHt9KQoKCmRlZiBfZW51bV9nZXRzdGF0ZShvYmopOgogICAgY2xzZGljdCwgc2xvdHN0YXRlID0gX2NsYXNzX2dldHN0YXRlKG9iaikKCiAgICBtZW1iZXJzID0ge2UubmFtZTogZS52YWx1ZSBmb3IgZSBpbiBvYmp9CiAgICAjIENsZWFudXAgdGhlIGNsc2RpY3QgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBfcmVoeWRyYXRlX3NrZWxldG9uX2NsYXNzOgogICAgIyBUaG9zZSBhdHRyaWJ1dGVzIGFyZSBhbHJlYWR5IGhhbmRsZWQgYnkgdGhlIG1ldGFjbGFzcy4KICAgIGZvciBhdHRybmFtZSBpbiBbIl9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyIsICJfbWVtYmVyX25hbWVzXyIsCiAgICAgICAgICAgICAgICAgICAgICJfbWVtYmVyX21hcF8iLCAiX21lbWJlcl90eXBlXyIsCiAgICAgICAgICAgICAgICAgICAgICJfdmFsdWUybWVtYmVyX21hcF8iXToKICAgICAgICBjbHNkaWN0LnBvcChhdHRybmFtZSwgTm9uZSkKICAgIGZvciBtZW1iZXIgaW4gbWVtYmVyczoKICAgICAgICBjbHNkaWN0LnBvcChtZW1iZXIpCiAgICAgICAgIyBTcGVjaWFsIGhhbmRsaW5nIG9mIEVudW0gc3ViY2xhc3NlcwogICAgcmV0dXJuIGNsc2RpY3QsIHNsb3RzdGF0ZQoKCiMgQ09MTEVDVElPTlMgT0YgT0JKRUNUUyBSRURVQ0VSUwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIHJlZHVjZXIgaXMgYSBmdW5jdGlvbiB0YWtpbmcgYSBzaW5nbGUgYXJndW1lbnQgKG9iaiksIGFuZCB0aGF0IHJldHVybnMgYQojIHR1cGxlIHdpdGggYWxsIHRoZSBuZWNlc3NhcnkgZGF0YSB0byByZS1jb25zdHJ1Y3Qgb2JqLiBBcGFydCBmcm9tIGEgZmV3CiMgZXhjZXB0aW9ucyAobGlzdCwgZGljdCwgYnl0ZXMsIGludCwgZXRjLiksIGEgcmVkdWNlciBpcyBuZWNlc3NhcnkgdG8KIyBjb3JyZWN0bHkgcGlja2xlIGFuIG9iamVjdC4KIyBXaGlsZSBtYW55IGJ1aWx0LWluIG9iamVjdHMgKEV4Y2VwdGlvbnMgb2JqZWN0cywgaW5zdGFuY2VzIG9mIHRoZSAib2JqZWN0IgojIGNsYXNzLCBldGMpLCBhcmUgc2hpcHBlZCB3aXRoIHRoZWlyIG93biBidWlsdC1pbiByZWR1Y2VyIChpbnZva2VkIHVzaW5nCiMgb2JqLl9fcmVkdWNlX18pLCBzb21lIGRvIG5vdC4gVGhlIGZvbGxvd2luZyBtZXRob2RzIHdlcmUgY3JlYXRlZCB0byAiZmlsbAojIHRoZXNlIGhvbGVzIi4KCmRlZiBfY29kZV9yZWR1Y2Uob2JqKToKICAgICIiImNvZGVvYmplY3QgcmVkdWNlciIiIgogICAgIyBJZiB5b3UgYXJlIG5vdCBzdXJlIGFib3V0IHRoZSBvcmRlciBvZiBhcmd1bWVudHMsIHRha2UgYSBsb29rIGF0IGhlbHAKICAgICMgb2YgdGhlIHNwZWNpZmljIHR5cGUgZnJvbSB0eXBlcywgZm9yIGV4YW1wbGU6CiAgICAjID4+PiBmcm9tIHR5cGVzIGltcG9ydCBDb2RlVHlwZQogICAgIyA+Pj4gaGVscChDb2RlVHlwZSkKICAgIGlmIGhhc2F0dHIob2JqLCAiY29fZXhjZXB0aW9udGFibGUiKTogICMgcHJhZ21hOiBubyBicmFuY2gKICAgICAgICAjIFB5dGhvbiAzLjExIGFuZCBsYXRlcjogdGhlcmUgYXJlIHNvbWUgbmV3IGF0dHJpYnV0ZXMKICAgICAgICAjIHJlbGF0ZWQgdG8gdGhlIGVuaGFuY2VkIGV4Y2VwdGlvbnMuCiAgICAgICAgYXJncyA9ICgKICAgICAgICAgICAgb2JqLmNvX2FyZ2NvdW50LCBvYmouY29fcG9zb25seWFyZ2NvdW50LAogICAgICAgICAgICBvYmouY29fa3dvbmx5YXJnY291bnQsIG9iai5jb19ubG9jYWxzLCBvYmouY29fc3RhY2tzaXplLAogICAgICAgICAgICBvYmouY29fZmxhZ3MsIG9iai5jb19jb2RlLCBvYmouY29fY29uc3RzLCBvYmouY29fbmFtZXMsCiAgICAgICAgICAgIG9iai5jb192YXJuYW1lcywgb2JqLmNvX2ZpbGVuYW1lLCBvYmouY29fbmFtZSwgb2JqLmNvX3F1YWxuYW1lLAogICAgICAgICAgICBvYmouY29fZmlyc3RsaW5lbm8sIG9iai5jb19saW5ldGFibGUsIG9iai5jb19leGNlcHRpb250YWJsZSwKICAgICAgICAgICAgb2JqLmNvX2ZyZWV2YXJzLCBvYmouY29fY2VsbHZhcnMsCiAgICAgICAgKQogICAgZWxpZiBoYXNhdHRyKG9iaiwgImNvX2xpbmV0YWJsZSIpOiAgIyBwcmFnbWE6IG5vIGJyYW5jaAogICAgICAgICMgUHl0aG9uIDMuMTAgYW5kIGxhdGVyOiBvYmouY29fbG5vdGFiIGlzIGRlcHJlY2F0ZWQgYW5kIGNvbnN0cnVjdG9yCiAgICAgICAgIyBleHBlY3RzIG9iai5jb19saW5ldGFibGUgaW5zdGVhZC4KICAgICAgICBhcmdzID0gKAogICAgICAgICAgICBvYmouY29fYXJnY291bnQsIG9iai5jb19wb3Nvbmx5YXJnY291bnQsCiAgICAgICAgICAgIG9iai5jb19rd29ubHlhcmdjb3VudCwgb2JqLmNvX25sb2NhbHMsIG9iai5jb19zdGFja3NpemUsCiAgICAgICAgICAgIG9iai5jb19mbGFncywgb2JqLmNvX2NvZGUsIG9iai5jb19jb25zdHMsIG9iai5jb19uYW1lcywKICAgICAgICAgICAgb2JqLmNvX3Zhcm5hbWVzLCBvYmouY29fZmlsZW5hbWUsIG9iai5jb19uYW1lLAogICAgICAgICAgICBvYmouY29fZmlyc3RsaW5lbm8sIG9iai5jb19saW5ldGFibGUsIG9iai5jb19mcmVldmFycywKICAgICAgICAgICAgb2JqLmNvX2NlbGx2YXJzCiAgICAgICAgKQogICAgZWxpZiBoYXNhdHRyKG9iaiwgImNvX25tZXRhIik6ICAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAjICJub2dpbCIgUHl0aG9uOiBtb2RpZmllZCBhdHRyaWJ1dGVzIGZyb20gMy45CiAgICAgICAgYXJncyA9ICgKICAgICAgICAgICAgb2JqLmNvX2FyZ2NvdW50LCBvYmouY29fcG9zb25seWFyZ2NvdW50LAogICAgICAgICAgICBvYmouY29fa3dvbmx5YXJnY291bnQsIG9iai5jb19ubG9jYWxzLCBvYmouY29fZnJhbWVzaXplLAogICAgICAgICAgICBvYmouY29fbmRlZmF1bHRhcmdzLCBvYmouY29fbm1ldGEsCiAgICAgICAgICAgIG9iai5jb19mbGFncywgb2JqLmNvX2NvZGUsIG9iai5jb19jb25zdHMsCiAgICAgICAgICAgIG9iai5jb192YXJuYW1lcywgb2JqLmNvX2ZpbGVuYW1lLCBvYmouY29fbmFtZSwKICAgICAgICAgICAgb2JqLmNvX2ZpcnN0bGluZW5vLCBvYmouY29fbG5vdGFiLCBvYmouY29fZXhjX2hhbmRsZXJzLAogICAgICAgICAgICBvYmouY29fanVtcF90YWJsZSwgb2JqLmNvX2ZyZWV2YXJzLCBvYmouY29fY2VsbHZhcnMsCiAgICAgICAgICAgIG9iai5jb19mcmVlMnJlZywgb2JqLmNvX2NlbGwycmVnCiAgICAgICAgKQogICAgZWxpZiBoYXNhdHRyKG9iaiwgImNvX3Bvc29ubHlhcmdjb3VudCIpOgogICAgICAgICMgQmFja3dhcmQgY29tcGF0IGZvciAzLjkgYW5kIG9sZGVyCiAgICAgICAgYXJncyA9ICgKICAgICAgICAgICAgb2JqLmNvX2FyZ2NvdW50LCBvYmouY29fcG9zb25seWFyZ2NvdW50LAogICAgICAgICAgICBvYmouY29fa3dvbmx5YXJnY291bnQsIG9iai5jb19ubG9jYWxzLCBvYmouY29fc3RhY2tzaXplLAogICAgICAgICAgICBvYmouY29fZmxhZ3MsIG9iai5jb19jb2RlLCBvYmouY29fY29uc3RzLCBvYmouY29fbmFtZXMsCiAgICAgICAgICAgIG9iai5jb192YXJuYW1lcywgb2JqLmNvX2ZpbGVuYW1lLCBvYmouY29fbmFtZSwKICAgICAgICAgICAgb2JqLmNvX2ZpcnN0bGluZW5vLCBvYmouY29fbG5vdGFiLCBvYmouY29fZnJlZXZhcnMsCiAgICAgICAgICAgIG9iai5jb19jZWxsdmFycwogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgIyBCYWNrd2FyZCBjb21wYXQgZm9yIGV2ZW4gb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uCiAgICAgICAgYXJncyA9ICgKICAgICAgICAgICAgb2JqLmNvX2FyZ2NvdW50LCBvYmouY29fa3dvbmx5YXJnY291bnQsIG9iai5jb19ubG9jYWxzLAogICAgICAgICAgICBvYmouY29fc3RhY2tzaXplLCBvYmouY29fZmxhZ3MsIG9iai5jb19jb2RlLCBvYmouY29fY29uc3RzLAogICAgICAgICAgICBvYmouY29fbmFtZXMsIG9iai5jb192YXJuYW1lcywgb2JqLmNvX2ZpbGVuYW1lLAogICAgICAgICAgICBvYmouY29fbmFtZSwgb2JqLmNvX2ZpcnN0bGluZW5vLCBvYmouY29fbG5vdGFiLAogICAgICAgICAgICBvYmouY29fZnJlZXZhcnMsIG9iai5jb19jZWxsdmFycwogICAgICAgICkKICAgIHJldHVybiB0eXBlcy5Db2RlVHlwZSwgYXJncwoKCmRlZiBfY2VsbF9yZWR1Y2Uob2JqKToKICAgICIiIkNlbGwgKGNvbnRhaW5pbmcgdmFsdWVzIG9mIGEgZnVuY3Rpb24ncyBmcmVlIHZhcmlhYmxlcykgcmVkdWNlciIiIgogICAgdHJ5OgogICAgICAgIG9iai5jZWxsX2NvbnRlbnRzCiAgICBleGNlcHQgVmFsdWVFcnJvcjogICMgY2VsbCBpcyBlbXB0eQogICAgICAgIHJldHVybiBfbWFrZV9lbXB0eV9jZWxsLCAoKQogICAgZWxzZToKICAgICAgICByZXR1cm4gX21ha2VfY2VsbCwgKG9iai5jZWxsX2NvbnRlbnRzLCApCgoKZGVmIF9jbGFzc21ldGhvZF9yZWR1Y2Uob2JqKToKICAgIG9yaWdfZnVuYyA9IG9iai5fX2Z1bmNfXwogICAgcmV0dXJuIHR5cGUob2JqKSwgKG9yaWdfZnVuYywpCgoKZGVmIF9maWxlX3JlZHVjZShvYmopOgogICAgIiIiU2F2ZSBhIGZpbGUiIiIKICAgIGltcG9ydCBpbwoKICAgIGlmIG5vdCBoYXNhdHRyKG9iaiwgIm5hbWUiKSBvciBub3QgaGFzYXR0cihvYmosICJtb2RlIik6CiAgICAgICAgcmFpc2UgcGlja2xlLlBpY2tsaW5nRXJyb3IoCiAgICAgICAgICAgICJDYW5ub3QgcGlja2xlIGZpbGVzIHRoYXQgZG8gbm90IG1hcCB0byBhbiBhY3R1YWwgZmlsZSIKICAgICAgICApCiAgICBpZiBvYmogaXMgc3lzLnN0ZG91dDoKICAgICAgICByZXR1cm4gZ2V0YXR0ciwgKHN5cywgInN0ZG91dCIpCiAgICBpZiBvYmogaXMgc3lzLnN0ZGVycjoKICAgICAgICByZXR1cm4gZ2V0YXR0ciwgKHN5cywgInN0ZGVyciIpCiAgICBpZiBvYmogaXMgc3lzLnN0ZGluOgogICAgICAgIHJhaXNlIHBpY2tsZS5QaWNrbGluZ0Vycm9yKCJDYW5ub3QgcGlja2xlIHN0YW5kYXJkIGlucHV0IikKICAgIGlmIG9iai5jbG9zZWQ6CiAgICAgICAgcmFpc2UgcGlja2xlLlBpY2tsaW5nRXJyb3IoIkNhbm5vdCBwaWNrbGUgY2xvc2VkIGZpbGVzIikKICAgIGlmIGhhc2F0dHIob2JqLCAiaXNhdHR5IikgYW5kIG9iai5pc2F0dHkoKToKICAgICAgICByYWlzZSBwaWNrbGUuUGlja2xpbmdFcnJvcigKICAgICAgICAgICAgIkNhbm5vdCBwaWNrbGUgZmlsZXMgdGhhdCBtYXAgdG8gdHR5IG9iamVjdHMiCiAgICAgICAgKQogICAgaWYgInIiIG5vdCBpbiBvYmoubW9kZSBhbmQgIisiIG5vdCBpbiBvYmoubW9kZToKICAgICAgICByYWlzZSBwaWNrbGUuUGlja2xpbmdFcnJvcigKICAgICAgICAgICAgIkNhbm5vdCBwaWNrbGUgZmlsZXMgdGhhdCBhcmUgbm90IG9wZW5lZCBmb3IgcmVhZGluZzogJXMiCiAgICAgICAgICAgICUgb2JqLm1vZGUKICAgICAgICApCgogICAgbmFtZSA9IG9iai5uYW1lCgogICAgcmV0dmFsID0gaW8uU3RyaW5nSU8oKQoKICAgIHRyeToKICAgICAgICAjIFJlYWQgdGhlIHdob2xlIGZpbGUKICAgICAgICBjdXJsb2MgPSBvYmoudGVsbCgpCiAgICAgICAgb2JqLnNlZWsoMCkKICAgICAgICBjb250ZW50cyA9IG9iai5yZWFkKCkKICAgICAgICBvYmouc2VlayhjdXJsb2MpCiAgICBleGNlcHQgSU9FcnJvciBhcyBlOgogICAgICAgIHJhaXNlIHBpY2tsZS5QaWNrbGluZ0Vycm9yKAogICAgICAgICAgICAiQ2Fubm90IHBpY2tsZSBmaWxlICVzIGFzIGl0IGNhbm5vdCBiZSByZWFkIiAlIG5hbWUKICAgICAgICApIGZyb20gZQogICAgcmV0dmFsLndyaXRlKGNvbnRlbnRzKQogICAgcmV0dmFsLnNlZWsoY3VybG9jKQoKICAgIHJldHZhbC5uYW1lID0gbmFtZQogICAgcmV0dXJuIF9maWxlX3JlY29uc3RydWN0b3IsIChyZXR2YWwsKQoKCmRlZiBfZ2V0c2V0X2Rlc2NyaXB0b3JfcmVkdWNlKG9iaik6CiAgICByZXR1cm4gZ2V0YXR0ciwgKG9iai5fX29iamNsYXNzX18sIG9iai5fX25hbWVfXykKCgpkZWYgX21hcHBpbmdwcm94eV9yZWR1Y2Uob2JqKToKICAgIHJldHVybiB0eXBlcy5NYXBwaW5nUHJveHlUeXBlLCAoZGljdChvYmopLCkKCgpkZWYgX21lbW9yeXZpZXdfcmVkdWNlKG9iaik6CiAgICByZXR1cm4gYnl0ZXMsIChvYmoudG9ieXRlcygpLCkKCgpkZWYgX21vZHVsZV9yZWR1Y2Uob2JqKToKICAgIGlmIF9zaG91bGRfcGlja2xlX2J5X3JlZmVyZW5jZShvYmopOgogICAgICAgIHJldHVybiBzdWJpbXBvcnQsIChvYmouX19uYW1lX18sKQogICAgZWxzZToKICAgICAgICAjIFNvbWUgZXh0ZXJuYWwgbGlicmFyaWVzIGNhbiBwb3B1bGF0ZSB0aGUgIl9fYnVpbHRpbnNfXyIgZW50cnkgb2YgYQogICAgICAgICMgbW9kdWxlJ3MgYF9fZGljdF9fYCB3aXRoIHVucGlja2xhYmxlIG9iamVjdHMgKHNlZSAjMzE2KS4gRm9yIHRoYXQKICAgICAgICAjIHJlYXNvbiwgd2UgZG8gbm90IGF0dGVtcHQgdG8gcGlja2xlIHRoZSAiX19idWlsdGluc19fIiBlbnRyeSwgYW5kCiAgICAgICAgIyByZXN0b3JlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgaXQgYXQgdW5waWNrbGluZyB0aW1lLgogICAgICAgIHN0YXRlID0gb2JqLl9fZGljdF9fLmNvcHkoKQogICAgICAgIHN0YXRlLnBvcCgnX19idWlsdGluc19fJywgTm9uZSkKICAgICAgICByZXR1cm4gZHluYW1pY19zdWJpbXBvcnQsIChvYmouX19uYW1lX18sIHN0YXRlKQoKCmRlZiBfbWV0aG9kX3JlZHVjZShvYmopOgogICAgcmV0dXJuICh0eXBlcy5NZXRob2RUeXBlLCAob2JqLl9fZnVuY19fLCBvYmouX19zZWxmX18pKQoKCmRlZiBfbG9nZ2VyX3JlZHVjZShvYmopOgogICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyLCAob2JqLm5hbWUsKQoKCmRlZiBfcm9vdF9sb2dnZXJfcmVkdWNlKG9iaik6CiAgICByZXR1cm4gbG9nZ2luZy5nZXRMb2dnZXIsICgpCgoKZGVmIF9wcm9wZXJ0eV9yZWR1Y2Uob2JqKToKICAgIHJldHVybiBwcm9wZXJ0eSwgKG9iai5mZ2V0LCBvYmouZnNldCwgb2JqLmZkZWwsIG9iai5fX2RvY19fKQoKCmRlZiBfd2Vha3NldF9yZWR1Y2Uob2JqKToKICAgIHJldHVybiB3ZWFrcmVmLldlYWtTZXQsIChsaXN0KG9iaiksKQoKCmRlZiBfZHluYW1pY19jbGFzc19yZWR1Y2Uob2JqKToKICAgICIiIgogICAgU2F2ZSBhIGNsYXNzIHRoYXQgY2FuJ3QgYmUgc3RvcmVkIGFzIG1vZHVsZSBnbG9iYWwuCgogICAgVGhpcyBtZXRob2QgaXMgdXNlZCB0byBzZXJpYWxpemUgY2xhc3NlcyB0aGF0IGFyZSBkZWZpbmVkIGluc2lkZQogICAgZnVuY3Rpb25zLCBvciB0aGF0IG90aGVyd2lzZSBjYW4ndCBiZSBzZXJpYWxpemVkIGFzIGF0dHJpYnV0ZSBsb29rdXBzCiAgICBmcm9tIGdsb2JhbCBtb2R1bGVzLgogICAgIiIiCiAgICBpZiBFbnVtIGlzIG5vdCBOb25lIGFuZCBpc3N1YmNsYXNzKG9iaiwgRW51bSk6CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgX21ha2Vfc2tlbGV0b25fZW51bSwgX2VudW1fZ2V0bmV3YXJncyhvYmopLCBfZW51bV9nZXRzdGF0ZShvYmopLAogICAgICAgICAgICBOb25lLCBOb25lLCBfY2xhc3Nfc2V0c3RhdGUKICAgICAgICApCiAgICBlbHNlOgogICAgICAgIHJldHVybiAoCiAgICAgICAgICAgIF9tYWtlX3NrZWxldG9uX2NsYXNzLCBfY2xhc3NfZ2V0bmV3YXJncyhvYmopLCBfY2xhc3NfZ2V0c3RhdGUob2JqKSwKICAgICAgICAgICAgTm9uZSwgTm9uZSwgX2NsYXNzX3NldHN0YXRlCiAgICAgICAgKQoKCmRlZiBfY2xhc3NfcmVkdWNlKG9iaik6CiAgICAiIiJTZWxlY3QgdGhlIHJlZHVjZXIgZGVwZW5kaW5nIG9uIHRoZSBkeW5hbWljIG5hdHVyZSBvZiB0aGUgY2xhc3Mgb2JqIiIiCiAgICBpZiBvYmogaXMgdHlwZShOb25lKTogICMgbm9xYQogICAgICAgIHJldHVybiB0eXBlLCAoTm9uZSwpCiAgICBlbGlmIG9iaiBpcyB0eXBlKEVsbGlwc2lzKToKICAgICAgICByZXR1cm4gdHlwZSwgKEVsbGlwc2lzLCkKICAgIGVsaWYgb2JqIGlzIHR5cGUoTm90SW1wbGVtZW50ZWQpOgogICAgICAgIHJldHVybiB0eXBlLCAoTm90SW1wbGVtZW50ZWQsKQogICAgZWxpZiBvYmogaW4gX0JVSUxUSU5fVFlQRV9OQU1FUzoKICAgICAgICByZXR1cm4gX2J1aWx0aW5fdHlwZSwgKF9CVUlMVElOX1RZUEVfTkFNRVNbb2JqXSwpCiAgICBlbGlmIG5vdCBfc2hvdWxkX3BpY2tsZV9ieV9yZWZlcmVuY2Uob2JqKToKICAgICAgICByZXR1cm4gX2R5bmFtaWNfY2xhc3NfcmVkdWNlKG9iaikKICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKCmRlZiBfZGljdF9rZXlzX3JlZHVjZShvYmopOgogICAgIyBTYWZlciBub3QgdG8gc2hpcCB0aGUgZnVsbCBkaWN0IGFzIHNlbmRpbmcgdGhlIHJlc3QgbWlnaHQKICAgICMgYmUgdW5pbnRlbmRlZCBhbmQgY291bGQgcG90ZW50aWFsbHkgY2F1c2UgbGVha2luZyBvZgogICAgIyBzZW5zaXRpdmUgaW5mb3JtYXRpb24KICAgIHJldHVybiBfbWFrZV9kaWN0X2tleXMsIChsaXN0KG9iaiksICkKCgpkZWYgX2RpY3RfdmFsdWVzX3JlZHVjZShvYmopOgogICAgIyBTYWZlciBub3QgdG8gc2hpcCB0aGUgZnVsbCBkaWN0IGFzIHNlbmRpbmcgdGhlIHJlc3QgbWlnaHQKICAgICMgYmUgdW5pbnRlbmRlZCBhbmQgY291bGQgcG90ZW50aWFsbHkgY2F1c2UgbGVha2luZyBvZgogICAgIyBzZW5zaXRpdmUgaW5mb3JtYXRpb24KICAgIHJldHVybiBfbWFrZV9kaWN0X3ZhbHVlcywgKGxpc3Qob2JqKSwgKQoKCmRlZiBfZGljdF9pdGVtc19yZWR1Y2Uob2JqKToKICAgIHJldHVybiBfbWFrZV9kaWN0X2l0ZW1zLCAoZGljdChvYmopLCApCgoKZGVmIF9vZGljdF9rZXlzX3JlZHVjZShvYmopOgogICAgIyBTYWZlciBub3QgdG8gc2hpcCB0aGUgZnVsbCBkaWN0IGFzIHNlbmRpbmcgdGhlIHJlc3QgbWlnaHQKICAgICMgYmUgdW5pbnRlbmRlZCBhbmQgY291bGQgcG90ZW50aWFsbHkgY2F1c2UgbGVha2luZyBvZgogICAgIyBzZW5zaXRpdmUgaW5mb3JtYXRpb24KICAgIHJldHVybiBfbWFrZV9kaWN0X2tleXMsIChsaXN0KG9iaiksIFRydWUpCgoKZGVmIF9vZGljdF92YWx1ZXNfcmVkdWNlKG9iaik6CiAgICAjIFNhZmVyIG5vdCB0byBzaGlwIHRoZSBmdWxsIGRpY3QgYXMgc2VuZGluZyB0aGUgcmVzdCBtaWdodAogICAgIyBiZSB1bmludGVuZGVkIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBjYXVzZSBsZWFraW5nIG9mCiAgICAjIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbgogICAgcmV0dXJuIF9tYWtlX2RpY3RfdmFsdWVzLCAobGlzdChvYmopLCBUcnVlKQoKCmRlZiBfb2RpY3RfaXRlbXNfcmVkdWNlKG9iaik6CiAgICByZXR1cm4gX21ha2VfZGljdF9pdGVtcywgKGRpY3Qob2JqKSwgVHJ1ZSkKCgojIENPTExFQ1RJT05TIE9GIE9CSkVDVFMgU1RBVEUgU0VUVEVSUwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHN0YXRlIHNldHRlcnMgYXJlIGNhbGxlZCBhdCB1bnBpY2tsaW5nIHRpbWUsIG9uY2UgdGhlIG9iamVjdCBpcyBjcmVhdGVkIGFuZAojIGl0IGhhcyB0byBiZSB1cGRhdGVkIHRvIGhvdyBpdCB3YXMgYXQgdW5waWNrbGluZyB0aW1lLgoKCmRlZiBfZnVuY3Rpb25fc2V0c3RhdGUob2JqLCBzdGF0ZSk6CiAgICAiIiJVcGRhdGUgdGhlIHN0YXRlIG9mIGEgZHluYW1pYyBmdW5jdGlvbi4KCiAgICBBcyBfX2Nsb3N1cmVfXyBhbmQgX19nbG9iYWxzX18gYXJlIHJlYWRvbmx5IGF0dHJpYnV0ZXMgb2YgYSBmdW5jdGlvbiwgd2UKICAgIGNhbm5vdCByZWx5IG9uIHRoZSBuYXRpdmUgc2V0c3RhdGUgcm91dGluZSBvZiBwaWNrbGUubG9hZF9idWlsZCwgdGhhdCBjYWxscwogICAgc2V0YXR0ciBvbiBpdGVtcyBvZiB0aGUgc2xvdHN0YXRlLiBJbnN0ZWFkLCB3ZSBoYXZlIHRvIG1vZGlmeSB0aGVtIGlucGxhY2UuCiAgICAiIiIKICAgIHN0YXRlLCBzbG90c3RhdGUgPSBzdGF0ZQogICAgb2JqLl9fZGljdF9fLnVwZGF0ZShzdGF0ZSkKCiAgICBvYmpfZ2xvYmFscyA9IHNsb3RzdGF0ZS5wb3AoIl9fZ2xvYmFsc19fIikKICAgIG9ial9jbG9zdXJlID0gc2xvdHN0YXRlLnBvcCgiX19jbG9zdXJlX18iKQogICAgIyBfY2xvdWRwaWNrbGVfc3ViaW1wb3J0cyBpcyBhIHNldCBvZiBzdWJtb2R1bGVzIHRoYXQgbXVzdCBiZSBsb2FkZWQgZm9yCiAgICAjIHRoZSBwaWNrbGVkIGZ1bmN0aW9uIHRvIHdvcmsgY29ycmVjdGx5IGF0IHVucGlja2xpbmcgdGltZS4gTm93IHRoYXQgdGhlc2UKICAgICMgc3VibW9kdWxlcyBhcmUgZGVwaWNrbGVkIChoZW5jZSBpbXBvcnRlZCksIHRoZXkgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUKICAgICMgb2JqZWN0J3Mgc3RhdGUgKHRoZSBvYmplY3Qgc3RhdGUgb25seSBzZXJ2ZWQgYXMgYSByZWZlcmVuY2UgaG9sZGVyIHRvCiAgICAjIHRoZXNlIHN1Ym1vZHVsZXMpCiAgICBzbG90c3RhdGUucG9wKCJfY2xvdWRwaWNrbGVfc3VibW9kdWxlcyIpCgogICAgb2JqLl9fZ2xvYmFsc19fLnVwZGF0ZShvYmpfZ2xvYmFscykKICAgIG9iai5fX2dsb2JhbHNfX1siX19idWlsdGluc19fIl0gPSBfX2J1aWx0aW5zX18KCiAgICBpZiBvYmpfY2xvc3VyZSBpcyBub3QgTm9uZToKICAgICAgICBmb3IgaSwgY2VsbCBpbiBlbnVtZXJhdGUob2JqX2Nsb3N1cmUpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGNlbGwuY2VsbF9jb250ZW50cwogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjogICMgY2VsbCBpcyBlbXB0eQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgY2VsbF9zZXQob2JqLl9fY2xvc3VyZV9fW2ldLCB2YWx1ZSkKCiAgICBmb3IgaywgdiBpbiBzbG90c3RhdGUuaXRlbXMoKToKICAgICAgICBzZXRhdHRyKG9iaiwgaywgdikKCgpkZWYgX2NsYXNzX3NldHN0YXRlKG9iaiwgc3RhdGUpOgogICAgc3RhdGUsIHNsb3RzdGF0ZSA9IHN0YXRlCiAgICByZWdpc3RyeSA9IE5vbmUKICAgIGZvciBhdHRybmFtZSwgYXR0ciBpbiBzdGF0ZS5pdGVtcygpOgogICAgICAgIGlmIGF0dHJuYW1lID09ICJfYWJjX2ltcGwiOgogICAgICAgICAgICByZWdpc3RyeSA9IGF0dHIKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZXRhdHRyKG9iaiwgYXR0cm5hbWUsIGF0dHIpCiAgICBpZiByZWdpc3RyeSBpcyBub3QgTm9uZToKICAgICAgICBmb3Igc3ViY2xhc3MgaW4gcmVnaXN0cnk6CiAgICAgICAgICAgIG9iai5yZWdpc3RlcihzdWJjbGFzcykKCiAgICByZXR1cm4gb2JqCgoKY2xhc3MgQ2xvdWRQaWNrbGVyKFBpY2tsZXIpOgogICAgIyBzZXQgb2YgcmVkdWNlcnMgZGVmaW5lZCBhbmQgdXNlZCBieSBjbG91ZHBpY2tsZSAocHJpdmF0ZSkKICAgIF9kaXNwYXRjaF90YWJsZSA9IHt9CiAgICBfZGlzcGF0Y2hfdGFibGVbY2xhc3NtZXRob2RdID0gX2NsYXNzbWV0aG9kX3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW2lvLlRleHRJT1dyYXBwZXJdID0gX2ZpbGVfcmVkdWNlCiAgICBfZGlzcGF0Y2hfdGFibGVbbG9nZ2luZy5Mb2dnZXJdID0gX2xvZ2dlcl9yZWR1Y2UKICAgIF9kaXNwYXRjaF90YWJsZVtsb2dnaW5nLlJvb3RMb2dnZXJdID0gX3Jvb3RfbG9nZ2VyX3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW21lbW9yeXZpZXddID0gX21lbW9yeXZpZXdfcmVkdWNlCiAgICBfZGlzcGF0Y2hfdGFibGVbcHJvcGVydHldID0gX3Byb3BlcnR5X3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW3N0YXRpY21ldGhvZF0gPSBfY2xhc3NtZXRob2RfcmVkdWNlCiAgICBfZGlzcGF0Y2hfdGFibGVbQ2VsbFR5cGVdID0gX2NlbGxfcmVkdWNlCiAgICBfZGlzcGF0Y2hfdGFibGVbdHlwZXMuQ29kZVR5cGVdID0gX2NvZGVfcmVkdWNlCiAgICBfZGlzcGF0Y2hfdGFibGVbdHlwZXMuR2V0U2V0RGVzY3JpcHRvclR5cGVdID0gX2dldHNldF9kZXNjcmlwdG9yX3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW3R5cGVzLk1vZHVsZVR5cGVdID0gX21vZHVsZV9yZWR1Y2UKICAgIF9kaXNwYXRjaF90YWJsZVt0eXBlcy5NZXRob2RUeXBlXSA9IF9tZXRob2RfcmVkdWNlCiAgICBfZGlzcGF0Y2hfdGFibGVbdHlwZXMuTWFwcGluZ1Byb3h5VHlwZV0gPSBfbWFwcGluZ3Byb3h5X3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW3dlYWtyZWYuV2Vha1NldF0gPSBfd2Vha3NldF9yZWR1Y2UKICAgIF9kaXNwYXRjaF90YWJsZVt0eXBpbmcuVHlwZVZhcl0gPSBfdHlwZXZhcl9yZWR1Y2UKICAgIF9kaXNwYXRjaF90YWJsZVtfY29sbGVjdGlvbnNfYWJjLmRpY3Rfa2V5c10gPSBfZGljdF9rZXlzX3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW19jb2xsZWN0aW9uc19hYmMuZGljdF92YWx1ZXNdID0gX2RpY3RfdmFsdWVzX3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW19jb2xsZWN0aW9uc19hYmMuZGljdF9pdGVtc10gPSBfZGljdF9pdGVtc19yZWR1Y2UKICAgIF9kaXNwYXRjaF90YWJsZVt0eXBlKE9yZGVyZWREaWN0KCkua2V5cygpKV0gPSBfb2RpY3Rfa2V5c19yZWR1Y2UKICAgIF9kaXNwYXRjaF90YWJsZVt0eXBlKE9yZGVyZWREaWN0KCkudmFsdWVzKCkpXSA9IF9vZGljdF92YWx1ZXNfcmVkdWNlCiAgICBfZGlzcGF0Y2hfdGFibGVbdHlwZShPcmRlcmVkRGljdCgpLml0ZW1zKCkpXSA9IF9vZGljdF9pdGVtc19yZWR1Y2UKICAgIF9kaXNwYXRjaF90YWJsZVthYmMuYWJzdHJhY3RtZXRob2RdID0gX2NsYXNzbWV0aG9kX3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW2FiYy5hYnN0cmFjdGNsYXNzbWV0aG9kXSA9IF9jbGFzc21ldGhvZF9yZWR1Y2UKICAgIF9kaXNwYXRjaF90YWJsZVthYmMuYWJzdHJhY3RzdGF0aWNtZXRob2RdID0gX2NsYXNzbWV0aG9kX3JlZHVjZQogICAgX2Rpc3BhdGNoX3RhYmxlW2FiYy5hYnN0cmFjdHByb3BlcnR5XSA9IF9wcm9wZXJ0eV9yZWR1Y2UKCiAgICBkaXNwYXRjaF90YWJsZSA9IENoYWluTWFwKF9kaXNwYXRjaF90YWJsZSwgY29weXJlZy5kaXNwYXRjaF90YWJsZSkKCiAgICAjIGZ1bmN0aW9uIHJlZHVjZXJzIGFyZSBkZWZpbmVkIGFzIGluc3RhbmNlIG1ldGhvZHMgb2YgQ2xvdWRQaWNrbGVyCiAgICAjIG9iamVjdHMsIGFzIHRoZXkgcmVseSBvbiBhIENsb3VkUGlja2xlciBhdHRyaWJ1dGUgKGdsb2JhbHNfcmVmKQogICAgZGVmIF9keW5hbWljX2Z1bmN0aW9uX3JlZHVjZShzZWxmLCBmdW5jKToKICAgICAgICAiIiJSZWR1Y2UgYSBmdW5jdGlvbiB0aGF0IGlzIG5vdCBwaWNrbGVhYmxlIHZpYSBhdHRyaWJ1dGUgbG9va3VwLiIiIgogICAgICAgIG5ld2FyZ3MgPSBzZWxmLl9mdW5jdGlvbl9nZXRuZXdhcmdzKGZ1bmMpCiAgICAgICAgc3RhdGUgPSBfZnVuY3Rpb25fZ2V0c3RhdGUoZnVuYykKICAgICAgICByZXR1cm4gKF9tYWtlX2Z1bmN0aW9uLCBuZXdhcmdzLCBzdGF0ZSwgTm9uZSwgTm9uZSwKICAgICAgICAgICAgICAgIF9mdW5jdGlvbl9zZXRzdGF0ZSkKCiAgICBkZWYgX2Z1bmN0aW9uX3JlZHVjZShzZWxmLCBvYmopOgogICAgICAgICIiIlJlZHVjZXIgZm9yIGZ1bmN0aW9uIG9iamVjdHMuCgogICAgICAgIElmIG9iaiBpcyBhIHRvcC1sZXZlbCBhdHRyaWJ1dGUgb2YgYSBmaWxlLWJhY2tlZCBtb2R1bGUsIHRoaXMKICAgICAgICByZWR1Y2VyIHJldHVybnMgTm90SW1wbGVtZW50ZWQsIG1ha2luZyB0aGUgQ2xvdWRQaWNrbGVyIGZhbGxiYWNrIHRvCiAgICAgICAgdHJhZGl0aW9uYWwgX3BpY2tsZS5QaWNrbGVyIHJvdXRpbmVzIHRvIHNhdmUgb2JqLiBPdGhlcndpc2UsIGl0IHJlZHVjZXMKICAgICAgICBvYmogdXNpbmcgYSBjdXN0b20gY2xvdWRwaWNrbGUgcmVkdWNlciBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgdG8gaGFuZGxlCiAgICAgICAgZHluYW1pYyBmdW5jdGlvbnMuCgogICAgICAgIEFzIG9wcG9zZWQgdG8gY2xvdWRwaWNrbGUucHksIFRoZXJlIG5vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGJ1aWx0aW4KICAgICAgICBweXB5IGZ1bmN0aW9ucyBiZWNhdXNlIGNsb3VkcGlja2xlX2Zhc3QgaXMgQ1B5dGhvbi1zcGVjaWZpYy4KICAgICAgICAiIiIKICAgICAgICBpZiBfc2hvdWxkX3BpY2tsZV9ieV9yZWZlcmVuY2Uob2JqKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2R5bmFtaWNfZnVuY3Rpb25fcmVkdWNlKG9iaikKCiAgICBkZWYgX2Z1bmN0aW9uX2dldG5ld2FyZ3Moc2VsZiwgZnVuYyk6CiAgICAgICAgY29kZSA9IGZ1bmMuX19jb2RlX18KCiAgICAgICAgIyBiYXNlX2dsb2JhbHMgcmVwcmVzZW50cyB0aGUgZnV0dXJlIGdsb2JhbCBuYW1lc3BhY2Ugb2YgZnVuYyBhdAogICAgICAgICMgdW5waWNrbGluZyB0aW1lLiBMb29raW5nIGl0IHVwIGFuZCBzdG9yaW5nIGl0IGluCiAgICAgICAgIyBDbG91ZHBpUGlja2xlci5nbG9iYWxzX3JlZiBhbGxvdyBmdW5jdGlvbnMgc2hhcmluZyB0aGUgc2FtZSBnbG9iYWxzCiAgICAgICAgIyBhdCBwaWNrbGluZyB0aW1lIHRvIGFsc28gc2hhcmUgdGhlbSBvbmNlIHVucGlja2xlZCwgYXQgb25lIGNvbmRpdGlvbjoKICAgICAgICAjIHNpbmNlIGdsb2JhbHNfcmVmIGlzIGFuIGF0dHJpYnV0ZSBvZiBhIENsb3VkUGlja2xlciBpbnN0YW5jZSwgYW5kCiAgICAgICAgIyB0aGF0IGEgbmV3IENsb3VkUGlja2xlciBpcyBjcmVhdGVkIGVhY2ggdGltZSBwaWNrbGUuZHVtcCBvcgogICAgICAgICMgcGlja2xlLmR1bXBzIGlzIGNhbGxlZCwgZnVuY3Rpb25zIGFsc28gbmVlZCB0byBiZSBzYXZlZCB3aXRoaW4gdGhlCiAgICAgICAgIyBzYW1lIGludm9jYXRpb24gb2YgY2xvdWRwaWNrbGUuZHVtcC9jbG91ZHBpY2tsZS5kdW1wcyAoZm9yIGV4YW1wbGU6CiAgICAgICAgIyBjbG91ZHBpY2tsZS5kdW1wcyhbZjEsIGYyXSkpLiBUaGVyZSBpcyBubyBzdWNoIGxpbWl0YXRpb24gd2hlbiB1c2luZwogICAgICAgICMgQ2xvdWRQaWNrbGVyLmR1bXAsIGFzIGxvbmcgYXMgdGhlIG11bHRpcGxlIGludm9jYXRpb25zIGFyZSBib3VuZCB0bwogICAgICAgICMgdGhlIHNhbWUgQ2xvdWRQaWNrbGVyLgogICAgICAgIGJhc2VfZ2xvYmFscyA9IHNlbGYuZ2xvYmFsc19yZWYuc2V0ZGVmYXVsdChpZChmdW5jLl9fZ2xvYmFsc19fKSwge30pCgogICAgICAgIGlmIGJhc2VfZ2xvYmFscyA9PSB7fToKICAgICAgICAgICAgIyBBZGQgbW9kdWxlIGF0dHJpYnV0ZXMgdXNlZCB0byByZXNvbHZlIHJlbGF0aXZlIGltcG9ydHMKICAgICAgICAgICAgIyBpbnN0cnVjdGlvbnMgaW5zaWRlIGZ1bmMuCiAgICAgICAgICAgIGZvciBrIGluIFsiX19wYWNrYWdlX18iLCAiX19uYW1lX18iLCAiX19wYXRoX18iLCAiX19maWxlX18iXToKICAgICAgICAgICAgICAgIGlmIGsgaW4gZnVuYy5fX2dsb2JhbHNfXzoKICAgICAgICAgICAgICAgICAgICBiYXNlX2dsb2JhbHNba10gPSBmdW5jLl9fZ2xvYmFsc19fW2tdCgogICAgICAgICMgRG8gbm90IGJpbmQgdGhlIGZyZWUgdmFyaWFibGVzIGJlZm9yZSB0aGUgZnVuY3Rpb24gaXMgY3JlYXRlZCB0bwogICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgogICAgICAgIGlmIGZ1bmMuX19jbG9zdXJlX18gaXMgTm9uZToKICAgICAgICAgICAgY2xvc3VyZSA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBjbG9zdXJlID0gdHVwbGUoCiAgICAgICAgICAgICAgICBfbWFrZV9lbXB0eV9jZWxsKCkgZm9yIF8gaW4gcmFuZ2UobGVuKGNvZGUuY29fZnJlZXZhcnMpKSkKCiAgICAgICAgcmV0dXJuIGNvZGUsIGJhc2VfZ2xvYmFscywgTm9uZSwgTm9uZSwgY2xvc3VyZQoKICAgIGRlZiBkdW1wKHNlbGYsIG9iaik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gUGlja2xlci5kdW1wKHNlbGYsIG9iaikKICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CiAgICAgICAgICAgIGlmICJyZWN1cnNpb24iIGluIGUuYXJnc1swXToKICAgICAgICAgICAgICAgIG1zZyA9ICgKICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IHBpY2tsZSBvYmplY3QgYXMgZXhjZXNzaXZlbHkgZGVlcCByZWN1cnNpb24gIgogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZC4iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICByYWlzZSBwaWNrbGUuUGlja2xpbmdFcnJvcihtc2cpIGZyb20gZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UKCiAgICBpZiBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCA+PSA1OgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBwcm90b2NvbD1Ob25lLCBidWZmZXJfY2FsbGJhY2s9Tm9uZSk6CiAgICAgICAgICAgIGlmIHByb3RvY29sIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBwcm90b2NvbCA9IERFRkFVTFRfUFJPVE9DT0wKICAgICAgICAgICAgUGlja2xlci5fX2luaXRfXygKICAgICAgICAgICAgICAgIHNlbGYsIGZpbGUsIHByb3RvY29sPXByb3RvY29sLCBidWZmZXJfY2FsbGJhY2s9YnVmZmVyX2NhbGxiYWNrCiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBtYXAgZnVuY3Rpb25zIF9fZ2xvYmFsc19fIGF0dHJpYnV0ZSBpZHMsIHRvIGVuc3VyZSB0aGF0IGZ1bmN0aW9ucwogICAgICAgICAgICAjIHNoYXJpbmcgdGhlIHNhbWUgZ2xvYmFsIG5hbWVzcGFjZSBhdCBwaWNrbGluZyB0aW1lIGFsc28gc2hhcmUKICAgICAgICAgICAgIyB0aGVpciBnbG9iYWwgbmFtZXNwYWNlIGF0IHVucGlja2xpbmcgdGltZS4KICAgICAgICAgICAgc2VsZi5nbG9iYWxzX3JlZiA9IHt9CiAgICAgICAgICAgIHNlbGYucHJvdG8gPSBpbnQocHJvdG9jb2wpCiAgICBlbHNlOgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBwcm90b2NvbD1Ob25lKToKICAgICAgICAgICAgaWYgcHJvdG9jb2wgaXMgTm9uZToKICAgICAgICAgICAgICAgIHByb3RvY29sID0gREVGQVVMVF9QUk9UT0NPTAogICAgICAgICAgICBQaWNrbGVyLl9faW5pdF9fKHNlbGYsIGZpbGUsIHByb3RvY29sPXByb3RvY29sKQogICAgICAgICAgICAjIG1hcCBmdW5jdGlvbnMgX19nbG9iYWxzX18gYXR0cmlidXRlIGlkcywgdG8gZW5zdXJlIHRoYXQgZnVuY3Rpb25zCiAgICAgICAgICAgICMgc2hhcmluZyB0aGUgc2FtZSBnbG9iYWwgbmFtZXNwYWNlIGF0IHBpY2tsaW5nIHRpbWUgYWxzbyBzaGFyZQogICAgICAgICAgICAjIHRoZWlyIGdsb2JhbCBuYW1lc3BhY2UgYXQgdW5waWNrbGluZyB0aW1lLgogICAgICAgICAgICBzZWxmLmdsb2JhbHNfcmVmID0ge30KICAgICAgICAgICAgYXNzZXJ0IGhhc2F0dHIoc2VsZiwgJ3Byb3RvJykKCiAgICBpZiBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCA+PSA1IGFuZCBub3QgUFlQWToKICAgICAgICAjIFBpY2tsZXIgaXMgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgdGhlIENQeXRob24gcGlja2xlciBhbmQgdGhlcmVmb3JlCiAgICAgICAgIyB3ZSByZWx5IG9uIHJlZHVjZV9vdmVycmlkZSBtZXRob2QgdG8gY3VzdG9taXplIHRoZSBwaWNrbGVyIGJlaGF2aW9yLgoKICAgICAgICAjIGBDbG91ZFBpY2tsZXIuZGlzcGF0Y2hgIGlzIG9ubHkgbGVmdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAtIG5vdGUKICAgICAgICAjIHRoYXQgd2hlbiB1c2luZyBwcm90b2NvbCA1LCBgQ2xvdWRQaWNrbGVyLmRpc3BhdGNoYCBpcyBub3QgYW4KICAgICAgICAjIGV4dGVuc2lvbiBvZiBgUGlja2xlci5kaXNwYXRjaGAgZGljdGlvbmFyeSwgYmVjYXVzZSBDbG91ZFBpY2tsZXIKICAgICAgICAjIHN1YmNsYXNzZXMgdGhlIEMtaW1wbGVtZW50ZWQgUGlja2xlciwgd2hpY2ggZG9lcyBub3QgZXhwb3NlIGEKICAgICAgICAjIGBkaXNwYXRjaGAgYXR0cmlidXRlLiAgRWFybGllciB2ZXJzaW9ucyBvZiB0aGUgcHJvdG9jb2wgNSBDbG91ZFBpY2tsZXIKICAgICAgICAjIHVzZWQgYENsb3VkUGlja2xlci5kaXNwYXRjaGAgYXMgYSBjbGFzcy1sZXZlbCBhdHRyaWJ1dGUgc3RvcmluZyBhbGwKICAgICAgICAjIHJlZHVjZXJzIGltcGxlbWVudGVkIGJ5IGNsb3VkcGlja2xlLCBidXQgdGhlIGF0dHJpYnV0ZSBuYW1lIHdhcyBub3QgYQogICAgICAgICMgZ3JlYXQgY2hvaWNlIGdpdmVuIHRoZSBtZWFuaW5nIG9mIGBDbG91ZFBpY2tsZXIuZGlzcGF0Y2hgIHdoZW4KICAgICAgICAjIGBDbG91ZFBpY2tsZXJgIGV4dGVuZHMgdGhlIHB1cmUtcHl0aG9uIHBpY2tsZXIuCiAgICAgICAgZGlzcGF0Y2ggPSBkaXNwYXRjaF90YWJsZQoKICAgICAgICAjIEltcGxlbWVudGF0aW9uIG9mIHRoZSByZWR1Y2VyX292ZXJyaWRlIGNhbGxiYWNrLCBpbiBvcmRlciB0bwogICAgICAgICMgZWZmaWNpZW50bHkgc2VyaWFsaXplIGR5bmFtaWMgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIGJ5IHN1YmNsYXNzaW5nCiAgICAgICAgIyB0aGUgQy1pbXBsZW1lbnRlZCBQaWNrbGVyLgogICAgICAgICMgVE9ETzogZGVjb3JyZWxhdGUgcmVkdWNlcl9vdmVycmlkZSAod2hpY2ggaXMgdGllZCB0byBDUHl0aG9uJ3MKICAgICAgICAjIGltcGxlbWVudGF0aW9uIC0gd291bGQgaXQgbWFrZSBzZW5zZSB0byBiYWNrcG9ydCBpdCB0byBweXB5PyAtIGFuZAogICAgICAgICMgcGlja2xlJ3MgcHJvdG9jb2wgNSB3aGljaCBpcyBpbXBsZW1lbnRhdGlvbiBhZ25vc3RpYy4gQ3VycmVudGx5LCB0aGUKICAgICAgICAjIGF2YWlsYWJpbGl0eSBvZiBib3RoIG5vdGlvbnMgY29pbmNpZGUgb24gQ1B5dGhvbidzIHBpY2tsZSBhbmQgdGhlCiAgICAgICAgIyBwaWNrbGU1IGJhY2twb3J0LCBidXQgaXQgbWF5IG5vdCBiZSB0aGUgY2FzZSBhbnltb3JlIHdoZW4gcHlweQogICAgICAgICMgaW1wbGVtZW50cyBwcm90b2NvbCA1CgogICAgICAgIGRlZiByZWR1Y2VyX292ZXJyaWRlKHNlbGYsIG9iaik6CiAgICAgICAgICAgICIiIlR5cGUtYWdub3N0aWMgcmVkdWNpbmcgY2FsbGJhY2sgZm9yIGZ1bmN0aW9uIGFuZCBjbGFzc2VzLgoKICAgICAgICAgICAgRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHN1YmNsYXNzZXMgb2YgdGhlIEMgX3BpY2tsZS5QaWNrbGVyIGNsYXNzCiAgICAgICAgICAgIGNhbm5vdCByZWdpc3RlciBjdXN0b20gcmVkdWNlcnMgZm9yIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBpbiB0aGUKICAgICAgICAgICAgZGlzcGF0Y2hfdGFibGUuIFJlZHVjZXIgZm9yIHN1Y2ggdHlwZXMgbXVzdCBpbnN0ZWFkIGltcGxlbWVudGVkIGluCiAgICAgICAgICAgIHRoZSBzcGVjaWFsIHJlZHVjZXJfb3ZlcnJpZGUgbWV0aG9kLgoKICAgICAgICAgICAgTm90ZSB0aGF0IG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmb3IgYW55IG9iamVjdCBleGNlcHQgYSBmZXcKICAgICAgICAgICAgYnVpbHRpbi10eXBlcyAoaW50LCBsaXN0cywgZGljdHMgZXRjLiksIHdoaWNoIGRpZmZlcnMgZnJvbSByZWR1Y2VycwogICAgICAgICAgICBpbiB0aGUgUGlja2xlcidzIGRpc3BhdGNoX3RhYmxlLCBlYWNoIG9mIHRoZW0gYmVpbmcgaW52b2tlZCBmb3IKICAgICAgICAgICAgb2JqZWN0cyBvZiBhIHNwZWNpZmljIHR5cGUgb25seS4KCiAgICAgICAgICAgIFRoaXMgcHJvcGVydHkgY29tZXMgaW4gaGFuZHkgZm9yIGNsYXNzZXM6IGFsdGhvdWdoIG1vc3QgY2xhc3NlcyBhcmUKICAgICAgICAgICAgaW5zdGFuY2VzIG9mIHRoZSBgYHR5cGVgYCBtZXRhY2xhc3MsIHNvbWUgb2YgdGhlbSBjYW4gYmUgaW5zdGFuY2VzCiAgICAgICAgICAgIG9mIG90aGVyIGN1c3RvbSBtZXRhY2xhc3NlcyAoc3VjaCBhcyBlbnVtLkVudW1NZXRhIGZvciBleGFtcGxlKS4gSW4KICAgICAgICAgICAgcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyB3aWxsIGxpa2VseSBub3QgYmUga25vd24gaW4gYWR2YW5jZSwgYW5kCiAgICAgICAgICAgIHRodXMgY2Fubm90IGJlIHNwZWNpYWwtY2FzZWQgdXNpbmcgYW4gZW50cnkgaW4gdGhlIGRpc3BhdGNoX3RhYmxlLgogICAgICAgICAgICByZWR1Y2VyX292ZXJyaWRlLCBhbW9uZyBvdGhlciB0aGluZ3MsIGFsbG93cyB1cyB0byByZWdpc3RlciBhCiAgICAgICAgICAgIHJlZHVjZXIgdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3IgYW55IGNsYXNzLCBpbmRlcGVuZGVudGx5IG9mIGl0cwogICAgICAgICAgICB0eXBlLgoKCiAgICAgICAgICAgIE5vdGVzOgoKICAgICAgICAgICAgKiByZWR1Y2VyX292ZXJyaWRlIGhhcyB0aGUgcHJpb3JpdHkgb3ZlciBkaXNwYXRjaF90YWJsZS1yZWdpc3RlcmVkCiAgICAgICAgICAgIHJlZHVjZXJzLgogICAgICAgICAgICAqIHJlZHVjZXJfb3ZlcnJpZGUgY2FuIGJlIHVzZWQgdG8gZml4IG90aGVyIGxpbWl0YXRpb25zIG9mCiAgICAgICAgICAgICAgY2xvdWRwaWNrbGUgZm9yIG90aGVyIHR5cGVzIHRoYXQgc3VmZmVyZWQgZnJvbSB0eXBlLXNwZWNpZmljCiAgICAgICAgICAgICAgcmVkdWNlcnMsIHN1Y2ggYXMgRXhjZXB0aW9ucy4gU2VlCiAgICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2Nsb3VkcGlwZS9jbG91ZHBpY2tsZS9pc3N1ZXMvMjQ4CiAgICAgICAgICAgICIiIgogICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCA3KSBhbmQgX2lzX3BhcmFtZXRyaXplZF90eXBlX2hpbnQob2JqKTogICMgbm9xYSAgIyBwcmFnbWE6IG5vIGJyYW5jaAogICAgICAgICAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgICAgICAgICBfY3JlYXRlX3BhcmFtZXRyaXplZF90eXBlX2hpbnQsCiAgICAgICAgICAgICAgICAgICAgcGFyYW1ldHJpemVkX3R5cGVfaGludF9nZXRpbml0YXJncyhvYmopCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHQgPSB0eXBlKG9iaikKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaXNfYW55Y2xhc3MgPSBpc3N1YmNsYXNzKHQsIHR5cGUpCiAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6ICAjIHQgaXMgbm90IGEgY2xhc3MgKG9sZCBCb29zdDsgc2VlIFNGICM1MDIwODUpCiAgICAgICAgICAgICAgICBpc19hbnljbGFzcyA9IEZhbHNlCgogICAgICAgICAgICBpZiBpc19hbnljbGFzczoKICAgICAgICAgICAgICAgIHJldHVybiBfY2xhc3NfcmVkdWNlKG9iaikKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9mdW5jdGlvbl9yZWR1Y2Uob2JqKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBmYWxsYmFjayB0byBzYXZlX2dsb2JhbCwgaW5jbHVkaW5nIHRoZSBQaWNrbGVyJ3MKICAgICAgICAgICAgICAgICMgZGlzcGF0Y2hfdGFibGUKICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGVsc2U6CiAgICAgICAgIyBXaGVuIHJlZHVjZXJfb3ZlcnJpZGUgaXMgbm90IGF2YWlsYWJsZSwgaGFjayB0aGUgcHVyZS1QeXRob24KICAgICAgICAjIFBpY2tsZXIncyB0eXBlcy5GdW5jdGlvblR5cGUgYW5kIHR5cGUgc2F2ZXJzLiBOb3RlOiB0aGUgdHlwZSBzYXZlcgogICAgICAgICMgbXVzdCBvdmVycmlkZSBQaWNrbGVyLnNhdmVfZ2xvYmFsLCBiZWNhdXNlIHBpY2tsZS5weSBjb250YWlucyBhCiAgICAgICAgIyBoYXJkLWNvZGVkIGNhbGwgdG8gc2F2ZV9nbG9iYWwgd2hlbiBwaWNrbGluZyBtZXRhLWNsYXNzZXMuCiAgICAgICAgZGlzcGF0Y2ggPSBQaWNrbGVyLmRpc3BhdGNoLmNvcHkoKQoKICAgICAgICBkZWYgX3NhdmVfcmVkdWNlX3BpY2tsZTUoc2VsZiwgZnVuYywgYXJncywgc3RhdGU9Tm9uZSwgbGlzdGl0ZW1zPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RpdGVtcz1Ob25lLCBzdGF0ZV9zZXR0ZXI9Tm9uZSwgb2JqPU5vbmUpOgogICAgICAgICAgICBzYXZlID0gc2VsZi5zYXZlCiAgICAgICAgICAgIHdyaXRlID0gc2VsZi53cml0ZQogICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKAogICAgICAgICAgICAgICAgZnVuYywgYXJncywgc3RhdGU9Tm9uZSwgbGlzdGl0ZW1zPWxpc3RpdGVtcywKICAgICAgICAgICAgICAgIGRpY3RpdGVtcz1kaWN0aXRlbXMsIG9iaj1vYmoKICAgICAgICAgICAgKQogICAgICAgICAgICAjIGJhY2twb3J0IG9mIHRoZSBQeXRob24gMy44IHN0YXRlX3NldHRlciBwaWNrbGUgb3BlcmF0aW9ucwogICAgICAgICAgICBzYXZlKHN0YXRlX3NldHRlcikKICAgICAgICAgICAgc2F2ZShvYmopICAjIHNpbXBsZSBCSU5HRVQgb3Bjb2RlIGFzIG9iaiBpcyBhbHJlYWR5IG1lbW9pemVkLgogICAgICAgICAgICBzYXZlKHN0YXRlKQogICAgICAgICAgICB3cml0ZShwaWNrbGUuVFVQTEUyKQogICAgICAgICAgICAjIFRyaWdnZXIgYSBzdGF0ZV9zZXR0ZXIob2JqLCBzdGF0ZSkgZnVuY3Rpb24gY2FsbC4KICAgICAgICAgICAgd3JpdGUocGlja2xlLlJFRFVDRSkKICAgICAgICAgICAgIyBUaGUgcHVycG9zZSBvZiBzdGF0ZV9zZXR0ZXIgaXMgdG8gY2Fycnktb3V0IGFuCiAgICAgICAgICAgICMgaW5wbGFjZSBtb2RpZmljYXRpb24gb2Ygb2JqLiBXZSBkbyBub3QgY2FyZSBhYm91dCB3aGF0IHRoZQogICAgICAgICAgICAjIG1ldGhvZCBtaWdodCByZXR1cm4sIHNvIGl0cyBvdXRwdXQgaXMgZXZlbnR1YWxseSByZW1vdmVkIGZyb20KICAgICAgICAgICAgIyB0aGUgc3RhY2suCiAgICAgICAgICAgIHdyaXRlKHBpY2tsZS5QT1ApCgogICAgICAgIGRlZiBzYXZlX2dsb2JhbChzZWxmLCBvYmosIG5hbWU9Tm9uZSwgcGFjaz1zdHJ1Y3QucGFjayk6CiAgICAgICAgICAgICIiIgogICAgICAgICAgICBTYXZlIGEgImdsb2JhbCIuCgogICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIG1ldGhvZCBpcyBzb21ld2hhdCBtaXNsZWFkaW5nOiBhbGwgdHlwZXMgZ2V0CiAgICAgICAgICAgIGRpc3BhdGNoZWQgaGVyZS4KICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIGlmIG9iaiBpcyB0eXBlKE5vbmUpOiAgIyBub3FhCiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zYXZlX3JlZHVjZSh0eXBlLCAoTm9uZSwpLCBvYmo9b2JqKQogICAgICAgICAgICBlbGlmIG9iaiBpcyB0eXBlKEVsbGlwc2lzKToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNhdmVfcmVkdWNlKHR5cGUsIChFbGxpcHNpcywpLCBvYmo9b2JqKQogICAgICAgICAgICBlbGlmIG9iaiBpcyB0eXBlKE5vdEltcGxlbWVudGVkKToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNhdmVfcmVkdWNlKHR5cGUsIChOb3RJbXBsZW1lbnRlZCwpLCBvYmo9b2JqKQogICAgICAgICAgICBlbGlmIG9iaiBpbiBfQlVJTFRJTl9UWVBFX05BTUVTOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2F2ZV9yZWR1Y2UoCiAgICAgICAgICAgICAgICAgICAgX2J1aWx0aW5fdHlwZSwgKF9CVUlMVElOX1RZUEVfTkFNRVNbb2JqXSwpLCBvYmo9b2JqKQoKICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgNykgYW5kIF9pc19wYXJhbWV0cml6ZWRfdHlwZV9oaW50KG9iaik6ICAjIG5vcWEgICMgcHJhZ21hOiBubyBicmFuY2gKICAgICAgICAgICAgICAgICMgUGFyYW1ldHJpemVkIHR5cGluZyBjb25zdHJ1Y3RzIGluIFB5dGhvbiA8IDMuNyBhcmUgbm90CiAgICAgICAgICAgICAgICAjIGNvbXBhdGlibGUgd2l0aCB0eXBlIGNoZWNrcyBhbmQgYGBpc2luc3RhbmNlYGAgc2VtYW50aWNzLiBGb3IKICAgICAgICAgICAgICAgICMgdGhpcyByZWFzb24sIGl0IGlzIGVhc2llciB0byBkZXRlY3QgdGhlbSB1c2luZyBhCiAgICAgICAgICAgICAgICAjIGR1Y2stdHlwaW5nLWJhc2VkIGNoZWNrIChgYF9pc19wYXJhbWV0cml6ZWRfdHlwZV9oaW50YGApIHRoYW4KICAgICAgICAgICAgICAgICMgdG8gcG9wdWxhdGUgdGhlIFBpY2tsZXIncyBkaXNwYXRjaCB3aXRoIHR5cGUtc3BlY2lmaWMgc2F2ZXJzLgogICAgICAgICAgICAgICAgc2VsZi5zYXZlX3JlZHVjZSgKICAgICAgICAgICAgICAgICAgICBfY3JlYXRlX3BhcmFtZXRyaXplZF90eXBlX2hpbnQsCiAgICAgICAgICAgICAgICAgICAgcGFyYW1ldHJpemVkX3R5cGVfaGludF9nZXRpbml0YXJncyhvYmopLAogICAgICAgICAgICAgICAgICAgIG9iaj1vYmoKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgZWxpZiBuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgUGlja2xlci5zYXZlX2dsb2JhbChzZWxmLCBvYmosIG5hbWU9bmFtZSkKICAgICAgICAgICAgZWxpZiBub3QgX3Nob3VsZF9waWNrbGVfYnlfcmVmZXJlbmNlKG9iaiwgbmFtZT1uYW1lKToKICAgICAgICAgICAgICAgIHNlbGYuX3NhdmVfcmVkdWNlX3BpY2tsZTUoKl9keW5hbWljX2NsYXNzX3JlZHVjZShvYmopLCBvYmo9b2JqKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgUGlja2xlci5zYXZlX2dsb2JhbChzZWxmLCBvYmosIG5hbWU9bmFtZSkKICAgICAgICBkaXNwYXRjaFt0eXBlXSA9IHNhdmVfZ2xvYmFsCgogICAgICAgIGRlZiBzYXZlX2Z1bmN0aW9uKHNlbGYsIG9iaiwgbmFtZT1Ob25lKToKICAgICAgICAgICAgIiIiIFJlZ2lzdGVyZWQgd2l0aCB0aGUgZGlzcGF0Y2ggdG8gaGFuZGxlIGFsbCBmdW5jdGlvbiB0eXBlcy4KCiAgICAgICAgICAgIERldGVybWluZXMgd2hhdCBraW5kIG9mIGZ1bmN0aW9uIG9iaiBpcyAoZS5nLiBsYW1iZGEsIGRlZmluZWQgYXQKICAgICAgICAgICAgaW50ZXJhY3RpdmUgcHJvbXB0LCBldGMpIGFuZCBoYW5kbGVzIHRoZSBwaWNrbGluZyBhcHByb3ByaWF0ZWx5LgogICAgICAgICAgICAiIiIKICAgICAgICAgICAgaWYgX3Nob3VsZF9waWNrbGVfYnlfcmVmZXJlbmNlKG9iaiwgbmFtZT1uYW1lKToKICAgICAgICAgICAgICAgIHJldHVybiBQaWNrbGVyLnNhdmVfZ2xvYmFsKHNlbGYsIG9iaiwgbmFtZT1uYW1lKQogICAgICAgICAgICBlbGlmIFBZUFkgYW5kIGlzaW5zdGFuY2Uob2JqLl9fY29kZV9fLCBidWlsdGluX2NvZGVfdHlwZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zYXZlX3B5cHlfYnVpbHRpbl9mdW5jKG9iaikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zYXZlX3JlZHVjZV9waWNrbGU1KAogICAgICAgICAgICAgICAgICAgICpzZWxmLl9keW5hbWljX2Z1bmN0aW9uX3JlZHVjZShvYmopLCBvYmo9b2JqCiAgICAgICAgICAgICAgICApCgogICAgICAgIGRlZiBzYXZlX3B5cHlfYnVpbHRpbl9mdW5jKHNlbGYsIG9iaik6CiAgICAgICAgICAgICIiIlNhdmUgcHlweSBlcXVpdmFsZW50IG9mIGJ1aWx0aW4gZnVuY3Rpb25zLgogICAgICAgICAgICBQeVB5IGRvZXMgbm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgYnVpbHRpbi1mdW5jdGlvbnMuIEluc3RlYWQsCiAgICAgICAgICAgIGJ1aWx0aW4tZnVuY3Rpb25zIGFyZSBzaW1wbGUgZnVuY3Rpb24gaW5zdGFuY2VzLCBidXQgd2l0aCBhCiAgICAgICAgICAgIGJ1aWx0aW4tY29kZSBhdHRyaWJ1dGUuCiAgICAgICAgICAgIE1vc3Qgb2YgdGhlIHRpbWUsIGJ1aWx0aW4gZnVuY3Rpb25zIHNob3VsZCBiZSBwaWNrbGVkIGJ5IGF0dHJpYnV0ZS4KICAgICAgICAgICAgQnV0IFB5UHkgaGFzIGZsYWt5IHN1cHBvcnQgZm9yIF9fcXVhbG5hbWVfXywgc28gc29tZSBidWlsdGluCiAgICAgICAgICAgIGZ1bmN0aW9ucyBzdWNoIGFzIGZsb2F0Ll9fbmV3X18gd2lsbCBiZSBjbGFzc2lmaWVkIGFzIGR5bmFtaWMuIEZvcgogICAgICAgICAgICB0aGlzIHJlYXNvbiBvbmx5LCB3ZSBjcmVhdGVkIHRoaXMgc3BlY2lhbCByb3V0aW5lLiBCZWNhdXNlCiAgICAgICAgICAgIGJ1aWx0aW4tZnVuY3Rpb25zIGFyZSBub3QgZXhwZWN0ZWQgdG8gaGF2ZSBjbG9zdXJlIG9yIGdsb2JhbHMsCiAgICAgICAgICAgIHRoZXJlIGlzIG5vIGFkZGl0aW9uYWwgaGFjayAoY29tcGFyZWQgdGhlIG9uZSBhbHJlYWR5IGltcGxlbWVudGVkCiAgICAgICAgICAgIGluIHBpY2tsZSkgdG8gcHJvdGVjdCBvdXJzZWx2ZXMgZnJvbSByZWZlcmVuY2UgY3ljbGVzLiBBIHNpbXBsZQogICAgICAgICAgICAocmVjb25zdHJ1Y3RvciwgbmV3YXJncywgb2JqLl9fZGljdF9fKSB0dXBsZSBpcyBzYXZlX3JlZHVjZWQuICBOb3RlCiAgICAgICAgICAgIGFsc28gdGhhdCBQeVB5IGltcHJvdmVkIHRoZWlyIHN1cHBvcnQgZm9yIF9fcXVhbG5hbWVfXyBpbiB2My42LCBzbwogICAgICAgICAgICB0aGlzIHJvdXRpbmcgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBjbG91ZHBpY2tsZSBzdXBwb3J0cyBvbmx5IFB5UHkKICAgICAgICAgICAgMy42IGFuZCBsYXRlci4KICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIHJ2ID0gKHR5cGVzLkZ1bmN0aW9uVHlwZSwgKG9iai5fX2NvZGVfXywge30sIG9iai5fX25hbWVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLl9fZGVmYXVsdHNfXywgb2JqLl9fY2xvc3VyZV9fKSwKICAgICAgICAgICAgICAgICAgb2JqLl9fZGljdF9fKQogICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKCpydiwgb2JqPW9iaikKCiAgICAgICAgZGlzcGF0Y2hbdHlwZXMuRnVuY3Rpb25UeXBlXSA9IHNhdmVfZnVuY3Rpb24KUEsDBBQAAAAAALwro1aRukTO/AEAAPwBAAAVAAAAY2xvdWRwaWNrbGUvY29tcGF0LnB5aW1wb3J0IHN5cwoKCmlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgOCk6CiAgICB0cnk6CiAgICAgICAgaW1wb3J0IHBpY2tsZTUgYXMgcGlja2xlICAjIG5vcWE6IEY0MDEKICAgICAgICBmcm9tIHBpY2tsZTUgaW1wb3J0IFBpY2tsZXIgICMgbm9xYTogRjQwMQogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIGltcG9ydCBwaWNrbGUgICMgbm9xYTogRjQwMQoKICAgICAgICAjIFVzZSB0aGUgUHl0aG9uIHBpY2tsZXIgZm9yIG9sZCBDUHl0aG9uIHZlcnNpb25zCiAgICAgICAgZnJvbSBwaWNrbGUgaW1wb3J0IF9QaWNrbGVyIGFzIFBpY2tsZXIgICMgbm9xYTogRjQwMQplbHNlOgogICAgaW1wb3J0IHBpY2tsZSAgIyBub3FhOiBGNDAxCgogICAgIyBQaWNrbGVyIHdpbGwgdGhlIEMgaW1wbGVtZW50YXRpb24gaW4gQ1B5dGhvbiBhbmQgdGhlIFB5dGhvbgogICAgIyBpbXBsZW1lbnRhdGlvbiBpbiBQeVB5CiAgICBmcm9tIHBpY2tsZSBpbXBvcnQgUGlja2xlciAgIyBub3FhOiBGNDAxClBLAwQUAAAAAAC8K6NWoUfAHNoGAADaBgAAIwAAAGNsb3VkcGlja2xlLTIuMi4xLmRpc3QtaW5mby9MSUNFTlNFVGhpcyBtb2R1bGUgd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBgY2xvdWRgIHBhY2thZ2UsIGRldmVsb3BlZCBieQpQaUNsb3VkLCBJbmMuCgpDb3B5cmlnaHQgKGMpIDIwMTUsIENsb3VkcGlja2xlIGNvbnRyaWJ1dG9ycy4KQ29weXJpZ2h0IChjKSAyMDEyLCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCkNvcHlyaWdodCAoYykgMjAwOSBQaUNsb3VkLCBJbmMuIGh0dHA6Ly93d3cucGljbG91ZC5jb20uCkFsbCByaWdodHMgcmVzZXJ2ZWQuCgpSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmFyZSBtZXQ6CiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIEJlcmtlbGV5IG5vciB0aGUKICAgICAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKICAgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuCiAgICAgIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVApIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsClNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRApUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SClBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTClNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpQSwMEFAAAAAAAvCujVohuYcfUGgAA1BoAACQAAABjbG91ZHBpY2tsZS0yLjIuMS5kaXN0LWluZm8vTUVUQURBVEFNZXRhZGF0YS1WZXJzaW9uOiAyLjEKTmFtZTogY2xvdWRwaWNrbGUKVmVyc2lvbjogMi4yLjEKU3VtbWFyeTogRXh0ZW5kZWQgcGlja2xpbmcgc3VwcG9ydCBmb3IgUHl0aG9uIG9iamVjdHMKSG9tZS1wYWdlOiBodHRwczovL2dpdGh1Yi5jb20vY2xvdWRwaXBlL2Nsb3VkcGlja2xlCkF1dGhvcjogQ2xvdWRwaXBlCkF1dGhvci1lbWFpbDogY2xvdWRwaXBlQGdvb2dsZWdyb3Vwcy5jb20KTGljZW5zZTogQlNEIDMtQ2xhdXNlIExpY2Vuc2UKQ2xhc3NpZmllcjogRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhCkNsYXNzaWZpZXI6IEludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMKQ2xhc3NpZmllcjogTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogQlNEIExpY2Vuc2UKQ2xhc3NpZmllcjogT3BlcmF0aW5nIFN5c3RlbSA6OiBQT1NJWApDbGFzc2lmaWVyOiBPcGVyYXRpbmcgU3lzdGVtIDo6IE1pY3Jvc29mdCA6OiBXaW5kb3dzCkNsYXNzaWZpZXI6IE9wZXJhdGluZyBTeXN0ZW0gOjogTWFjT1MgOjogTWFjT1MgWApDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42CkNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjcKQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOApDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy45CkNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiBJbXBsZW1lbnRhdGlvbiA6OiBDUHl0aG9uCkNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiBJbXBsZW1lbnRhdGlvbiA6OiBQeVB5CkNsYXNzaWZpZXI6IFRvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcyA6OiBQeXRob24gTW9kdWxlcwpDbGFzc2lmaWVyOiBUb3BpYyA6OiBTY2llbnRpZmljL0VuZ2luZWVyaW5nCkNsYXNzaWZpZXI6IFRvcGljIDo6IFN5c3RlbSA6OiBEaXN0cmlidXRlZCBDb21wdXRpbmcKUmVxdWlyZXMtUHl0aG9uOiA+PTMuNgpEZXNjcmlwdGlvbi1Db250ZW50LVR5cGU6IHRleHQvbWFya2Rvd24KTGljZW5zZS1GaWxlOiBMSUNFTlNFCgojIGNsb3VkcGlja2xlCgpbIVtBdXRvbWF0ZWQgVGVzdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jbG91ZHBpcGUvY2xvdWRwaWNrbGUvd29ya2Zsb3dzL0F1dG9tYXRlZCUyMFRlc3RzL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyJmV2ZW50PXB1c2gpXShodHRwczovL2dpdGh1Yi5jb20vY2xvdWRwaXBlL2Nsb3VkcGlja2xlL2FjdGlvbnMpClshW2NvZGVjb3YuaW9dKGh0dHBzOi8vY29kZWNvdi5pby9naXRodWIvY2xvdWRwaXBlL2Nsb3VkcGlja2xlL2NvdmVyYWdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb2RlY292LmlvL2dpdGh1Yi9jbG91ZHBpcGUvY2xvdWRwaWNrbGU/YnJhbmNoPW1hc3RlcikKCmBjbG91ZHBpY2tsZWAgbWFrZXMgaXQgcG9zc2libGUgdG8gc2VyaWFsaXplIFB5dGhvbiBjb25zdHJ1Y3RzIG5vdCBzdXBwb3J0ZWQKYnkgdGhlIGRlZmF1bHQgYHBpY2tsZWAgbW9kdWxlIGZyb20gdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5LgoKYGNsb3VkcGlja2xlYCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgKipjbHVzdGVyIGNvbXB1dGluZyoqIHdoZXJlIFB5dGhvbgpjb2RlIGlzIHNoaXBwZWQgb3ZlciB0aGUgbmV0d29yayB0byBleGVjdXRlIG9uIHJlbW90ZSBob3N0cywgcG9zc2libHkgY2xvc2UKdG8gdGhlIGRhdGEuCgpBbW9uZyBvdGhlciB0aGluZ3MsIGBjbG91ZHBpY2tsZWAgc3VwcG9ydHMgcGlja2xpbmcgZm9yICoqbGFtYmRhIGZ1bmN0aW9ucyoqCmFsb25nIHdpdGggKipmdW5jdGlvbnMgYW5kIGNsYXNzZXMgZGVmaW5lZCBpbnRlcmFjdGl2ZWx5KiogaW4gdGhlCmBfX21haW5fX2AgbW9kdWxlIChmb3IgaW5zdGFuY2UgaW4gYSBzY3JpcHQsIGEgc2hlbGwgb3IgYSBKdXB5dGVyIG5vdGVib29rKS4KCkNsb3VkcGlja2xlIGNhbiBvbmx5IGJlIHVzZWQgdG8gc2VuZCBvYmplY3RzIGJldHdlZW4gdGhlICoqZXhhY3Qgc2FtZSB2ZXJzaW9uCm9mIFB5dGhvbioqLgoKVXNpbmcgYGNsb3VkcGlja2xlYCBmb3IgKipsb25nLXRlcm0gb2JqZWN0IHN0b3JhZ2UgaXMgbm90IHN1cHBvcnRlZCBhbmQKc3Ryb25nbHkgZGlzY291cmFnZWQuKioKCioqU2VjdXJpdHkgbm90aWNlKio6IG9uZSBzaG91bGQgKipvbmx5IGxvYWQgcGlja2xlIGRhdGEgZnJvbSB0cnVzdGVkIHNvdXJjZXMqKiBhcwpvdGhlcndpc2UgYHBpY2tsZS5sb2FkYCBjYW4gbGVhZCB0byBhcmJpdHJhcnkgY29kZSBleGVjdXRpb24gcmVzdWx0aW5nIGluIGEgY3JpdGljYWwKc2VjdXJpdHkgdnVsbmVyYWJpbGl0eS4KCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpUaGUgbGF0ZXN0IHJlbGVhc2Ugb2YgYGNsb3VkcGlja2xlYCBpcyBhdmFpbGFibGUgZnJvbQpbcHlwaV0oaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jbG91ZHBpY2tsZSk6CgogICAgcGlwIGluc3RhbGwgY2xvdWRwaWNrbGUKCgpFeGFtcGxlcwotLS0tLS0tLQoKUGlja2xpbmcgYSBsYW1iZGEgZXhwcmVzc2lvbjoKCmBgYHB5dGhvbgo+Pj4gaW1wb3J0IGNsb3VkcGlja2xlCj4+PiBzcXVhcmVkID0gbGFtYmRhIHg6IHggKiogMgo+Pj4gcGlja2xlZF9sYW1iZGEgPSBjbG91ZHBpY2tsZS5kdW1wcyhzcXVhcmVkKQoKPj4+IGltcG9ydCBwaWNrbGUKPj4+IG5ld19zcXVhcmVkID0gcGlja2xlLmxvYWRzKHBpY2tsZWRfbGFtYmRhKQo+Pj4gbmV3X3NxdWFyZWQoMikKNApgYGAKClBpY2tsaW5nIGEgZnVuY3Rpb24gaW50ZXJhY3RpdmVseSBkZWZpbmVkIGluIGEgUHl0aG9uIHNoZWxsIHNlc3Npb24KKGluIHRoZSBgX19tYWluX19gIG1vZHVsZSk6CgpgYGBweXRob24KPj4+IENPTlNUQU5UID0gNDIKPj4+IGRlZiBteV9mdW5jdGlvbihkYXRhOiBpbnQpIC0+IGludDoKLi4uICAgICByZXR1cm4gZGF0YSArIENPTlNUQU5UCi4uLgo+Pj4gcGlja2xlZF9mdW5jdGlvbiA9IGNsb3VkcGlja2xlLmR1bXBzKG15X2Z1bmN0aW9uKQo+Pj4gZGVwaWNrbGVkX2Z1bmN0aW9uID0gcGlja2xlLmxvYWRzKHBpY2tsZWRfZnVuY3Rpb24pCj4+PiBkZXBpY2tsZWRfZnVuY3Rpb24KPGZ1bmN0aW9uIF9fbWFpbl9fLm15X2Z1bmN0aW9uKGRhdGE6aW50KSAtPiBpbnQ+Cj4+PiBkZXBpY2tsZWRfZnVuY3Rpb24oNDMpCjg1CmBgYAoKCk92ZXJyaWRpbmcgcGlja2xlJ3Mgc2VyaWFsaXphdGlvbiBtZWNoYW5pc20gZm9yIGltcG9ydGFibGUgY29uc3RydWN0czoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQW4gaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbiBgY2xvdWRwaWNrbGVgIGFuZCBgcGlja2xlYCBpcyB0aGF0CmBjbG91ZHBpY2tsZWAgY2FuIHNlcmlhbGl6ZSBhIGZ1bmN0aW9uIG9yIGNsYXNzICoqYnkgdmFsdWUqKiwgd2hlcmVhcyBgcGlja2xlYApjYW4gb25seSBzZXJpYWxpemUgaXQgKipieSByZWZlcmVuY2UqKi4gU2VyaWFsaXphdGlvbiBieSByZWZlcmVuY2UgdHJlYXRzCmZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBhcyBhdHRyaWJ1dGVzIG9mIG1vZHVsZXMsIGFuZCBwaWNrbGVzIHRoZW0gdGhyb3VnaAppbnN0cnVjdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBpbXBvcnQgb2YgdGhlaXIgbW9kdWxlIGF0IGxvYWQgdGltZS4KU2VyaWFsaXphdGlvbiBieSByZWZlcmVuY2UgaXMgdGh1cyBsaW1pdGVkIGluIHRoYXQgaXQgYXNzdW1lcyB0aGF0IHRoZSBtb2R1bGUKY29udGFpbmluZyB0aGUgZnVuY3Rpb24gb3IgY2xhc3MgaXMgYXZhaWxhYmxlL2ltcG9ydGFibGUgaW4gdGhlIHVucGlja2xpbmcKZW52aXJvbm1lbnQuIFRoaXMgYXNzdW1wdGlvbiBicmVha3Mgd2hlbiBwaWNrbGluZyBjb25zdHJ1Y3RzIGRlZmluZWQgaW4gYW4KaW50ZXJhY3RpdmUgc2Vzc2lvbiwgYSBjYXNlIHRoYXQgaXMgYXV0b21hdGljYWxseSBkZXRlY3RlZCBieSBgY2xvdWRwaWNrbGVgLAp0aGF0IHBpY2tsZXMgc3VjaCBjb25zdHJ1Y3RzICoqYnkgdmFsdWUqKi4KCkFub3RoZXIgY2FzZSB3aGVyZSB0aGUgaW1wb3J0YWJpbGl0eSBhc3N1bXB0aW9uIGlzIGV4cGVjdGVkIHRvIGJyZWFrIGlzIHdoZW4KZGV2ZWxvcGluZyBhIG1vZHVsZSBpbiBhIGRpc3RyaWJ1dGVkIGV4ZWN1dGlvbiBlbnZpcm9ubWVudDogdGhlIHdvcmtlcgpwcm9jZXNzZXMgbWF5IG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgc2FpZCBtb2R1bGUsIGZvciBleGFtcGxlIGlmIHRoZXkgbGl2ZSBvbiBhCmRpZmZlcmVudCBtYWNoaW5lIHRoYW4gdGhlIHByb2Nlc3MgaW4gd2hpY2ggdGhlIG1vZHVsZSBpcyBiZWluZyBkZXZlbG9wZWQuCkJ5IGl0c2VsZiwgYGNsb3VkcGlja2xlYCBjYW5ub3QgZGV0ZWN0IHN1Y2ggImxvY2FsbHkgaW1wb3J0YWJsZSIgbW9kdWxlcyBhbmQKc3dpdGNoIHRvIHNlcmlhbGl6YXRpb24gYnkgdmFsdWU7IGluc3RlYWQsIGl0IHJlbGllcyBvbiBpdHMgZGVmYXVsdCBtb2RlLAp3aGljaCBpcyBzZXJpYWxpemF0aW9uIGJ5IHJlZmVyZW5jZS4gSG93ZXZlciwgc2luY2UgYGNsb3VkcGlja2xlIDIuMC4wYCwgb25lCmNhbiBleHBsaWNpdGx5IHNwZWNpZnkgbW9kdWxlcyBmb3Igd2hpY2ggc2VyaWFsaXphdGlvbiBieSB2YWx1ZSBzaG91bGQgYmUgdXNlZCwKdXNpbmcgdGhlIGByZWdpc3Rlcl9waWNrbGVfYnlfdmFsdWUobW9kdWxlKWAvYC91bnJlZ2lzdGVyX3BpY2tsZShtb2R1bGUpYCBBUEk6CgpgYGBweXRob24KPj4+IGltcG9ydCBjbG91ZHBpY2tsZQo+Pj4gaW1wb3J0IG15X21vZHVsZQo+Pj4gY2xvdWRwaWNrbGUucmVnaXN0ZXJfcGlja2xlX2J5X3ZhbHVlKG15X21vZHVsZSkKPj4+IGNsb3VkcGlja2xlLmR1bXBzKG15X21vZHVsZS5teV9mdW5jdGlvbikgICMgbXlfZnVuY3Rpb24gaXMgcGlja2xlZCBieSB2YWx1ZQo+Pj4gY2xvdWRwaWNrbGUudW5yZWdpc3Rlcl9waWNrbGVfYnlfdmFsdWUobXlfbW9kdWxlKQo+Pj4gY2xvdWRwaWNrbGUuZHVtcHMobXlfbW9kdWxlLm15X2Z1bmN0aW9uKSAgIyBteV9mdW5jdGlvbiBpcyBwaWNrbGVkIGJ5IHJlZmVyZW5jZQpgYGAKClVzaW5nIHRoaXMgQVBJLCB0aGVyZSBpcyBubyBuZWVkIHRvIHJlLWluc3RhbGwgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUgb24KYWxsIHRoZSB3b3JrZXIgbm9kZXMgbm9yIHRvIHJlc3RhcnQgdGhlIHdvcmtlcnM6IHJlc3RhcnRpbmcgdGhlIGNsaWVudCBQeXRob24KcHJvY2VzcyB3aXRoIHRoZSBuZXcgc291cmNlIGNvZGUgaXMgZW5vdWdoLgoKTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBzdGlsbCAqKmV4cGVyaW1lbnRhbCoqLCBhbmQgbWF5IGZhaWwgaW4gdGhlIGZvbGxvd2luZwpzaXR1YXRpb25zOgoKLSBJZiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uL2NsYXNzIHBpY2tsZWQgYnkgdmFsdWUgY29udGFpbnMgYW4gYGltcG9ydGAgc3RhdGVtZW50OgogIGBgYHB5dGhvbgogID4+PiBkZWYgZigpOgogID4+PiAuLi4gZnJvbSBhbm90aGVyX21vZHVsZSBpbXBvcnQgZwogID4+PiAuLi4gIyBjYWxsaW5nIGYgaW4gdGhlIHVucGlja2xpbmcgZW52aXJvbm1lbnQgbWF5IGZhaWwgaWYgYW5vdGhlcl9tb2R1bGUKICA+Pj4gLi4uICMgaXMgdW5hdmFpbGFibGUKICA+Pj4gLi4uIHJldHVybiBnKCkgKyAxCiAgYGBgCgotIElmIGEgZnVuY3Rpb24gcGlja2xlZCBieSByZWZlcmVuY2UgdXNlcyBhIGZ1bmN0aW9uIHBpY2tsZWQgYnkgdmFsdWUgZHVyaW5nIGl0cyBleGVjdXRpb24uCgoKUnVubmluZyB0aGUgdGVzdHMKLS0tLS0tLS0tLS0tLS0tLS0KCi0gV2l0aCBgdG94YCwgdG8gdGVzdCBydW4gdGhlIHRlc3RzIGZvciBhbGwgdGhlIHN1cHBvcnRlZCB2ZXJzaW9ucyBvZgogIFB5dGhvbiBhbmQgUHlQeToKCiAgICAgIHBpcCBpbnN0YWxsIHRveAogICAgICB0b3gKCiAgb3IgYWx0ZXJuYXRpdmVseSBmb3IgYSBzcGVjaWZpYyBlbnZpcm9ubWVudDoKCiAgICAgIHRveCAtZSBweTM3CgoKLSBXaXRoIGBweS50ZXN0YCB0byBvbmx5IHJ1biB0aGUgdGVzdHMgZm9yIHlvdXIgY3VycmVudCB2ZXJzaW9uIG9mCiAgUHl0aG9uOgoKICAgICAgcGlwIGluc3RhbGwgLXIgZGV2LXJlcXVpcmVtZW50cy50eHQKICAgICAgUFlUSE9OUEFUSD0nLjp0ZXN0cycgcHkudGVzdAoKSGlzdG9yeQotLS0tLS0tCgpgY2xvdWRwaWNrbGVgIHdhcyBpbml0aWFsbHkgZGV2ZWxvcGVkIGJ5IFtwaWNsb3VkLmNvbV0oaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNDA3MjEwMjIxMDIvaHR0cDovL2Jsb2cucGljbG91ZC5jb20vMjAxMy8xMS8xNy9waWNsb3VkLWhhcy1qb2luZWQtZHJvcGJveC8pIGFuZCBzaGlwcGVkIGFzIHBhcnQgb2YKdGhlIGNsaWVudCBTREsuCgpBIGNvcHkgb2YgYGNsb3VkcGlja2xlLnB5YCB3YXMgaW5jbHVkZWQgYXMgcGFydCBvZiBQeVNwYXJrLCB0aGUgUHl0aG9uCmludGVyZmFjZSB0byBbQXBhY2hlIFNwYXJrXShodHRwczovL3NwYXJrLmFwYWNoZS5vcmcvKS4gRGF2aWVzIExpdSwgSm9zaApSb3NlbiwgVGhvbSBOZWFsZSBhbmQgb3RoZXIgQXBhY2hlIFNwYXJrIGRldmVsb3BlcnMgaW1wcm92ZWQgaXQgc2lnbmlmaWNhbnRseSwKbW9zdCBub3RhYmx5IHRvIGFkZCBzdXBwb3J0IGZvciBQeVB5IGFuZCBQeXRob24gMy4KClRoZSBhaW0gb2YgdGhlIGBjbG91ZHBpY2tsZWAgcHJvamVjdCBpcyB0byBtYWtlIHRoYXQgd29yayBhdmFpbGFibGUgdG8gYSB3aWRlcgphdWRpZW5jZSBvdXRzaWRlIG9mIHRoZSBTcGFyayBlY29zeXN0ZW0gYW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGltcHJvdmUgaXQKZnVydGhlciBub3RhYmx5IHdpdGggdGhlIGhlbHAgb2YgYSBkZWRpY2F0ZWQgbm9uLXJlZ3Jlc3Npb24gdGVzdCBzdWl0ZS4KUEsDBBQAAAAAALwro1ahpTHuXAAAAFwAAAAhAAAAY2xvdWRwaWNrbGUtMi4yLjEuZGlzdC1pbmZvL1dIRUVMV2hlZWwtVmVyc2lvbjogMS4wCkdlbmVyYXRvcjogYmRpc3Rfd2hlZWwgKDAuMzguNCkKUm9vdC1Jcy1QdXJlbGliOiB0cnVlClRhZzogcHkzLW5vbmUtYW55CgpQSwMEFAAAAAAAvCujVtC8GvgMAAAADAAAACkAAABjbG91ZHBpY2tsZS0yLjIuMS5kaXN0LWluZm8vdG9wX2xldmVsLnR4dGNsb3VkcGlja2xlClBLAwQUAAAAAAC8K6NW8b7/YN8CAADfAgAAIgAAAGNsb3VkcGlja2xlLTIuMi4xLmRpc3QtaW5mby9SRUNPUkRjbG91ZHBpY2tsZS9fX2luaXRfXy5weSxzaGEyNTY9RnNQY1l2MGJQUW9obnlGSG94ZUdVdmRRQWZobktCbUxLNUxFelpuTnBJcywzMTQKY2xvdWRwaWNrbGUvY2xvdWRwaWNrbGUucHksc2hhMjU2PXRkU1VxTWFUMU9RY1NhaXJwTUNQcVduNm5wVnBjZGpMdVRiaFVqRDExYTgsMzUxMzcKY2xvdWRwaWNrbGUvY2xvdWRwaWNrbGVfZmFzdC5weSxzaGEyNTY9UmtrOTZ6SXQ0M0wwTF9GOE1XWkZOZVhJWHJOWlFub0lJOHVfWjRseEZVQSwzNDExNwpjbG91ZHBpY2tsZS9jb21wYXQucHksc2hhMjU2PUlUT0RVeDBVX2I3Y2hwUzQ3X1NpcXg3WVAxck1ZVXBKSDZCM3JCQU5tV1ksNTA4CmNsb3VkcGlja2xlLTIuMi4xLmRpc3QtaW5mby9MSUNFTlNFLHNoYTI1Nj1NQ25xTkJjLW45d2pPdE1WM0dzUUM5SHFjZlVwc2NHdmwyWktKeV9jVmZVLDE3NTQKY2xvdWRwaWNrbGUtMi4yLjEuZGlzdC1pbmZvL01FVEFEQVRBLHNoYTI1Nj1GQzl4ZnljSmR3bjNNMFE1cUItd0dTTjlvd1lZOU9mSHphZFBiWW5DVEpnLDY4NjgKY2xvdWRwaWNrbGUtMi4yLjEuZGlzdC1pbmZvL1dIRUVMLHNoYTI1Nj0yd2VwTTFuazREUzRlRnBZclcxVFRxUGNvR05mSGhoT19pNW00Y09pbWJvLDkyCmNsb3VkcGlja2xlLTIuMi4xLmRpc3QtaW5mby90b3BfbGV2ZWwudHh0LHNoYTI1Nj16TXZ3Z0tpYTBUZWxOS0pQNlBhSFdseFdtRW02MEtyaVVPOGJiNUxSWmxVLDEyCmNsb3VkcGlja2xlLTIuMi4xLmRpc3QtaW5mby9SRUNPUkQsLApQSwECFAMUAAAAAAC8K6NWJEKi9DoBAAA6AQAAFwAAAAAAAAAAAAAAgAEAAAAAY2xvdWRwaWNrbGUvX19pbml0X18ucHlQSwECFAMUAAAAAAC8K6NWFux6yEGJAABBiQAAGgAAAAAAAAAAAAAAgAFvAQAAY2xvdWRwaWNrbGUvY2xvdWRwaWNrbGUucHlQSwECFAMUAAAAAAC8K6NWK4XoikWFAABFhQAAHwAAAAAAAAAAAAAAgAHoigAAY2xvdWRwaWNrbGUvY2xvdWRwaWNrbGVfZmFzdC5weVBLAQIUAxQAAAAAALwro1aRukTO/AEAAPwBAAAVAAAAAAAAAAAAAACAAWoQAQBjbG91ZHBpY2tsZS9jb21wYXQucHlQSwECFAMUAAAAAAC8K6NWoUfAHNoGAADaBgAAIwAAAAAAAAAAAAAAgAGZEgEAY2xvdWRwaWNrbGUtMi4yLjEuZGlzdC1pbmZvL0xJQ0VOU0VQSwECFAMUAAAAAAC8K6NWiG5hx9QaAADUGgAAJAAAAAAAAAAAAAAAgAG0GQEAY2xvdWRwaWNrbGUtMi4yLjEuZGlzdC1pbmZvL01FVEFEQVRBUEsBAhQDFAAAAAAAvCujVqGlMe5cAAAAXAAAACEAAAAAAAAAAAAAAIAByjQBAGNsb3VkcGlja2xlLTIuMi4xLmRpc3QtaW5mby9XSEVFTFBLAQIUAxQAAAAAALwro1bQvBr4DAAAAAwAAAApAAAAAAAAAAAAAACAAWU1AQBjbG91ZHBpY2tsZS0yLjIuMS5kaXN0LWluZm8vdG9wX2xldmVsLnR4dFBLAQIUAxQAAAAAALwro1bxvv9g3wIAAN8CAAAiAAAAAAAAAAAAAACAAbg1AQBjbG91ZHBpY2tsZS0yLjIuMS5kaXN0LWluZm8vUkVDT1JEUEsFBgAAAAAJAAkAtgIAANc4AQAAAA==
UEsDBBQAAAAAALoro1alZ6Do9QEAAPUBAAAVAAAAcGFja2FnaW5nL19faW5pdF9fLnB5IyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCiMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKIyBmb3IgY29tcGxldGUgZGV0YWlscy4KCl9fdGl0bGVfXyA9ICJwYWNrYWdpbmciCl9fc3VtbWFyeV9fID0gIkNvcmUgdXRpbGl0aWVzIGZvciBQeXRob24gcGFja2FnZXMiCl9fdXJpX18gPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvcGFja2FnaW5nIgoKX192ZXJzaW9uX18gPSAiMjMuMCIKCl9fYXV0aG9yX18gPSAiRG9uYWxkIFN0dWZmdCBhbmQgaW5kaXZpZHVhbCBjb250cmlidXRvcnMiCl9fZW1haWxfXyA9ICJkb25hbGRAc3R1ZmZ0LmlvIgoKX19saWNlbnNlX18gPSAiQlNELTItQ2xhdXNlIG9yIEFwYWNoZS0yLjAiCl9fY29weXJpZ2h0X18gPSAiMjAxNC0yMDE5ICVzIiAlIF9fYXV0aG9yX18KUEsDBBQAAAAAALoro1ZiDAWuwgwAAMIMAAAVAAAAcGFja2FnaW5nL19lbGZmaWxlLnB5IiIiCkVMRiBmaWxlIHBhcnNlci4KClRoaXMgcHJvdmlkZXMgYSBjbGFzcyBgYEVMRkZpbGVgYCB0aGF0IHBhcnNlcyBhbiBFTEYgZXhlY3V0YWJsZSBpbiBhIHNpbWlsYXIKaW50ZXJmYWNlIHRvIGBgWmlwRmlsZWBgLiBPbmx5IHRoZSByZWFkIGludGVyZmFjZSBpcyBpbXBsZW1lbnRlZC4KCkJhc2VkIG9uOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9seXNzZG9kL2Y1MTU3OWFlOGQ5M2M4NjU3YTU1NjRhZWZjMmZmYmNhCkVMRiBoZWFkZXI6IGh0dHBzOi8vcmVmc3BlY3MubGludXhmb3VuZGF0aW9uLm9yZy9lbGYvZ2FiaTQrL2NoNC5laGVhZGVyLmh0bWwKIiIiCgppbXBvcnQgZW51bQppbXBvcnQgb3MKaW1wb3J0IHN0cnVjdApmcm9tIHR5cGluZyBpbXBvcnQgSU8sIE9wdGlvbmFsLCBUdXBsZQoKCmNsYXNzIEVMRkludmFsaWQoVmFsdWVFcnJvcik6CiAgICBwYXNzCgoKY2xhc3MgRUlDbGFzcyhlbnVtLkludEVudW0pOgogICAgQzMyID0gMQogICAgQzY0ID0gMgoKCmNsYXNzIEVJRGF0YShlbnVtLkludEVudW0pOgogICAgTHNiID0gMQogICAgTXNiID0gMgoKCmNsYXNzIEVNYWNoaW5lKGVudW0uSW50RW51bSk6CiAgICBJMzg2ID0gMwogICAgUzM5MCA9IDIyCiAgICBBcm0gPSA0MAogICAgWDg2NjQgPSA2MgogICAgQUFyYzY0ID0gMTgzCgoKY2xhc3MgRUxGRmlsZToKICAgICIiIgogICAgUmVwcmVzZW50YXRpb24gb2YgYW4gRUxGIGV4ZWN1dGFibGUuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZjogSU9bYnl0ZXNdKSAtPiBOb25lOgogICAgICAgIHNlbGYuX2YgPSBmCgogICAgICAgIHRyeToKICAgICAgICAgICAgaWRlbnQgPSBzZWxmLl9yZWFkKCIxNkIiKQogICAgICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEVMRkludmFsaWQoInVuYWJsZSB0byBwYXJzZSBpZGVudGlmaWNhdGlvbiIpCiAgICAgICAgbWFnaWMgPSBieXRlcyhpZGVudFs6NF0pCiAgICAgICAgaWYgbWFnaWMgIT0gYiJceDdmRUxGIjoKICAgICAgICAgICAgcmFpc2UgRUxGSW52YWxpZChmImludmFsaWQgbWFnaWM6IHttYWdpYyFyfSIpCgogICAgICAgIHNlbGYuY2FwYWNpdHkgPSBpZGVudFs0XSAgIyBGb3JtYXQgZm9yIHByb2dyYW0gaGVhZGVyIChiaXRuZXNzKS4KICAgICAgICBzZWxmLmVuY29kaW5nID0gaWRlbnRbNV0gICMgRGF0YSBzdHJ1Y3R1cmUgZW5jb2RpbmcgKGVuZGlhbm5lc3MpLgoKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgZV9mbXQ6IEZvcm1hdCBmb3IgcHJvZ3JhbSBoZWFkZXIuCiAgICAgICAgICAgICMgcF9mbXQ6IEZvcm1hdCBmb3Igc2VjdGlvbiBoZWFkZXIuCiAgICAgICAgICAgICMgcF9pZHg6IEluZGV4ZXMgdG8gZmluZCBwX3R5cGUsIHBfb2Zmc2V0LCBhbmQgcF9maWxlc3ouCiAgICAgICAgICAgIGVfZm10LCBzZWxmLl9wX2ZtdCwgc2VsZi5fcF9pZHggPSB7CiAgICAgICAgICAgICAgICAoMSwgMSk6ICgiPEhISUlJSUlISEgiLCAiPElJSUlJSUlJIiwgKDAsIDEsIDQpKSwgICMgMzItYml0IExTQi4KICAgICAgICAgICAgICAgICgxLCAyKTogKCI+SEhJSUlJSUhISCIsICI+SUlJSUlJSUkiLCAoMCwgMSwgNCkpLCAgIyAzMi1iaXQgTVNCLgogICAgICAgICAgICAgICAgKDIsIDEpOiAoIjxISElRUVFJSEhIIiwgIjxJSVFRUVFRUSIsICgwLCAyLCA1KSksICAjIDY0LWJpdCBMU0IuCiAgICAgICAgICAgICAgICAoMiwgMik6ICgiPkhISVFRUUlISEgiLCAiPklJUVFRUVFRIiwgKDAsIDIsIDUpKSwgICMgNjQtYml0IE1TQi4KICAgICAgICAgICAgfVsoc2VsZi5jYXBhY2l0eSwgc2VsZi5lbmNvZGluZyldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByYWlzZSBFTEZJbnZhbGlkKAogICAgICAgICAgICAgICAgZiJ1bnJlY29nbml6ZWQgY2FwYWNpdHkgKHtzZWxmLmNhcGFjaXR5fSkgb3IgIgogICAgICAgICAgICAgICAgZiJlbmNvZGluZyAoe3NlbGYuZW5jb2Rpbmd9KSIKICAgICAgICAgICAgKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIF8sCiAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmUsICAjIEFyY2hpdGVjdHVyZSB0eXBlLgogICAgICAgICAgICAgICAgXywKICAgICAgICAgICAgICAgIF8sCiAgICAgICAgICAgICAgICBzZWxmLl9lX3Bob2ZmLCAgIyBPZmZzZXQgb2YgcHJvZ3JhbSBoZWFkZXIuCiAgICAgICAgICAgICAgICBfLAogICAgICAgICAgICAgICAgc2VsZi5mbGFncywgICMgUHJvY2Vzc29yLXNwZWNpZmljIGZsYWdzLgogICAgICAgICAgICAgICAgXywKICAgICAgICAgICAgICAgIHNlbGYuX2VfcGhlbnRzaXplLCAgIyBTaXplIG9mIHNlY3Rpb24uCiAgICAgICAgICAgICAgICBzZWxmLl9lX3BobnVtLCAgIyBOdW1iZXIgb2Ygc2VjdGlvbnMuCiAgICAgICAgICAgICkgPSBzZWxmLl9yZWFkKGVfZm10KQogICAgICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3IgYXMgZToKICAgICAgICAgICAgcmFpc2UgRUxGSW52YWxpZCgidW5hYmxlIHRvIHBhcnNlIG1hY2hpbmUgYW5kIHNlY3Rpb24gaW5mb3JtYXRpb24iKSBmcm9tIGUKCiAgICBkZWYgX3JlYWQoc2VsZiwgZm10OiBzdHIpIC0+IFR1cGxlW2ludCwgLi4uXToKICAgICAgICByZXR1cm4gc3RydWN0LnVucGFjayhmbXQsIHNlbGYuX2YucmVhZChzdHJ1Y3QuY2FsY3NpemUoZm10KSkpCgogICAgQHByb3BlcnR5CiAgICBkZWYgaW50ZXJwcmV0ZXIoc2VsZikgLT4gT3B0aW9uYWxbc3RyXToKICAgICAgICAiIiIKICAgICAgICBUaGUgcGF0aCByZWNvcmRlZCBpbiB0aGUgYGBQVF9JTlRFUlBgYCBzZWN0aW9uIGhlYWRlci4KICAgICAgICAiIiIKICAgICAgICBmb3IgaW5kZXggaW4gcmFuZ2Uoc2VsZi5fZV9waG51bSk6CiAgICAgICAgICAgIHNlbGYuX2Yuc2VlayhzZWxmLl9lX3Bob2ZmICsgc2VsZi5fZV9waGVudHNpemUgKiBpbmRleCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3JlYWQoc2VsZi5fcF9mbXQpCiAgICAgICAgICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBkYXRhW3NlbGYuX3BfaWR4WzBdXSAhPSAzOiAgIyBOb3QgUFRfSU5URVJQLgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgc2VsZi5fZi5zZWVrKGRhdGFbc2VsZi5fcF9pZHhbMV1dKQogICAgICAgICAgICByZXR1cm4gb3MuZnNkZWNvZGUoc2VsZi5fZi5yZWFkKGRhdGFbc2VsZi5fcF9pZHhbMl1dKSkuc3RyaXAoIlwwIikKICAgICAgICByZXR1cm4gTm9uZQpQSwMEFAAAAAAAuiujVg18VyRtIgAAbSIAABcAAABwYWNrYWdpbmcvX21hbnlsaW51eC5weWltcG9ydCBjb2xsZWN0aW9ucwppbXBvcnQgY29udGV4dGxpYgppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCBvcwppbXBvcnQgcmUKaW1wb3J0IHN5cwppbXBvcnQgd2FybmluZ3MKZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QsIEdlbmVyYXRvciwgSXRlcmF0b3IsIE5hbWVkVHVwbGUsIE9wdGlvbmFsLCBUdXBsZQoKZnJvbSAuX2VsZmZpbGUgaW1wb3J0IEVJQ2xhc3MsIEVJRGF0YSwgRUxGRmlsZSwgRU1hY2hpbmUKCkVGX0FSTV9BQklNQVNLID0gMHhGRjAwMDAwMApFRl9BUk1fQUJJX1ZFUjUgPSAweDA1MDAwMDAwCkVGX0FSTV9BQklfRkxPQVRfSEFSRCA9IDB4MDAwMDA0MDAKCgpAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgpkZWYgX3BhcnNlX2VsZihwYXRoOiBzdHIpIC0+IEdlbmVyYXRvcltPcHRpb25hbFtFTEZGaWxlXSwgTm9uZSwgTm9uZV06CiAgICB0cnk6CiAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGY6CiAgICAgICAgICAgIHlpZWxkIEVMRkZpbGUoZikKICAgIGV4Y2VwdCAoT1NFcnJvciwgVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICB5aWVsZCBOb25lCgoKZGVmIF9pc19saW51eF9hcm1oZihleGVjdXRhYmxlOiBzdHIpIC0+IGJvb2w6CiAgICAjIGhhcmQtZmxvYXQgQUJJIGNhbiBiZSBkZXRlY3RlZCBmcm9tIHRoZSBFTEYgaGVhZGVyIG9mIHRoZSBydW5uaW5nCiAgICAjIHByb2Nlc3MKICAgICMgaHR0cHM6Ly9zdGF0aWMuZG9jcy5hcm0uY29tL2loaTAwNDQvZy9hYWVsZjMyLnBkZgogICAgd2l0aCBfcGFyc2VfZWxmKGV4ZWN1dGFibGUpIGFzIGY6CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgZiBpcyBub3QgTm9uZQogICAgICAgICAgICBhbmQgZi5jYXBhY2l0eSA9PSBFSUNsYXNzLkMzMgogICAgICAgICAgICBhbmQgZi5lbmNvZGluZyA9PSBFSURhdGEuTHNiCiAgICAgICAgICAgIGFuZCBmLm1hY2hpbmUgPT0gRU1hY2hpbmUuQXJtCiAgICAgICAgICAgIGFuZCBmLmZsYWdzICYgRUZfQVJNX0FCSU1BU0sgPT0gRUZfQVJNX0FCSV9WRVI1CiAgICAgICAgICAgIGFuZCBmLmZsYWdzICYgRUZfQVJNX0FCSV9GTE9BVF9IQVJEID09IEVGX0FSTV9BQklfRkxPQVRfSEFSRAogICAgICAgICkKCgpkZWYgX2lzX2xpbnV4X2k2ODYoZXhlY3V0YWJsZTogc3RyKSAtPiBib29sOgogICAgd2l0aCBfcGFyc2VfZWxmKGV4ZWN1dGFibGUpIGFzIGY6CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgZiBpcyBub3QgTm9uZQogICAgICAgICAgICBhbmQgZi5jYXBhY2l0eSA9PSBFSUNsYXNzLkMzMgogICAgICAgICAgICBhbmQgZi5lbmNvZGluZyA9PSBFSURhdGEuTHNiCiAgICAgICAgICAgIGFuZCBmLm1hY2hpbmUgPT0gRU1hY2hpbmUuSTM4NgogICAgICAgICkKCgpkZWYgX2hhdmVfY29tcGF0aWJsZV9hYmkoZXhlY3V0YWJsZTogc3RyLCBhcmNoOiBzdHIpIC0+IGJvb2w6CiAgICBpZiBhcmNoID09ICJhcm12N2wiOgogICAgICAgIHJldHVybiBfaXNfbGludXhfYXJtaGYoZXhlY3V0YWJsZSkKICAgIGlmIGFyY2ggPT0gImk2ODYiOgogICAgICAgIHJldHVybiBfaXNfbGludXhfaTY4NihleGVjdXRhYmxlKQogICAgcmV0dXJuIGFyY2ggaW4geyJ4ODZfNjQiLCAiYWFyY2g2NCIsICJwcGM2NCIsICJwcGM2NGxlIiwgInMzOTB4In0KCgojIElmIGdsaWJjIGV2ZXIgY2hhbmdlcyBpdHMgbWFqb3IgdmVyc2lvbiwgd2UgbmVlZCB0byBrbm93IHdoYXQgdGhlIGxhc3QKIyBtaW5vciB2ZXJzaW9uIHdhcywgc28gd2UgY2FuIGJ1aWxkIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGFsbCB2ZXJzaW9ucy4KIyBGb3Igbm93LCBndWVzcyB3aGF0IHRoZSBoaWdoZXN0IG1pbm9yIHZlcnNpb24gbWlnaHQgYmUsIGFzc3VtZSBpdCB3aWxsCiMgYmUgNTAgZm9yIHRlc3RpbmcuIE9uY2UgdGhpcyBhY3R1YWxseSBoYXBwZW5zLCB1cGRhdGUgdGhlIGRpY3Rpb25hcnkKIyB3aXRoIHRoZSBhY3R1YWwgdmFsdWUuCl9MQVNUX0dMSUJDX01JTk9SOiBEaWN0W2ludCwgaW50XSA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYTogNTApCgoKY2xhc3MgX0dMaWJDVmVyc2lvbihOYW1lZFR1cGxlKToKICAgIG1ham9yOiBpbnQKICAgIG1pbm9yOiBpbnQKCgpkZWYgX2dsaWJjX3ZlcnNpb25fc3RyaW5nX2NvbmZzdHIoKSAtPiBPcHRpb25hbFtzdHJdOgogICAgIiIiCiAgICBQcmltYXJ5IGltcGxlbWVudGF0aW9uIG9mIGdsaWJjX3ZlcnNpb25fc3RyaW5nIHVzaW5nIG9zLmNvbmZzdHIuCiAgICAiIiIKICAgICMgb3MuY29uZnN0ciBpcyBxdWl0ZSBhIGJpdCBmYXN0ZXIgdGhhbiBjdHlwZXMuRExMLiBJdCdzIGFsc28gbGVzcyBsaWtlbHkKICAgICMgdG8gYmUgYnJva2VuIG9yIG1pc3NpbmcuIFRoaXMgc3RyYXRlZ3kgaXMgdXNlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeQogICAgIyBwbGF0Zm9ybSBtb2R1bGUuCiAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9ibG9iL2ZjZjFkMDAzYmY0ZjAxMDBjL0xpYi9wbGF0Zm9ybS5weSNMMTc1LUwxODMKICAgIHRyeToKICAgICAgICAjIFNob3VsZCBiZSBhIHN0cmluZyBsaWtlICJnbGliYyAyLjE3Ii4KICAgICAgICB2ZXJzaW9uX3N0cmluZzogc3RyID0gZ2V0YXR0cihvcywgImNvbmZzdHIiKSgiQ1NfR05VX0xJQkNfVkVSU0lPTiIpCiAgICAgICAgYXNzZXJ0IHZlcnNpb25fc3RyaW5nIGlzIG5vdCBOb25lCiAgICAgICAgXywgdmVyc2lvbiA9IHZlcnNpb25fc3RyaW5nLnJzcGxpdCgpCiAgICBleGNlcHQgKEFzc2VydGlvbkVycm9yLCBBdHRyaWJ1dGVFcnJvciwgT1NFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgIyBvcy5jb25mc3RyKCkgb3IgQ1NfR05VX0xJQkNfVkVSU0lPTiBub3QgYXZhaWxhYmxlIChvciBhIGJhZCB2YWx1ZSkuLi4KICAgICAgICByZXR1cm4gTm9uZQogICAgcmV0dXJuIHZlcnNpb24KCgpkZWYgX2dsaWJjX3ZlcnNpb25fc3RyaW5nX2N0eXBlcygpIC0+IE9wdGlvbmFsW3N0cl06CiAgICAiIiIKICAgIEZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGdsaWJjX3ZlcnNpb25fc3RyaW5nIHVzaW5nIGN0eXBlcy4KICAgICIiIgogICAgdHJ5OgogICAgICAgIGltcG9ydCBjdHlwZXMKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgY3R5cGVzLkNETEwoTm9uZSkgaW50ZXJuYWxseSBjYWxscyBkbG9wZW4oTlVMTCksIGFuZCBhcyB0aGUgZGxvcGVuCiAgICAjIG1hbnBhZ2Ugc2F5cywgIklmIGZpbGVuYW1lIGlzIE5VTEwsIHRoZW4gdGhlIHJldHVybmVkIGhhbmRsZSBpcyBmb3IgdGhlCiAgICAjIG1haW4gcHJvZ3JhbSIuIFRoaXMgd2F5IHdlIGNhbiBsZXQgdGhlIGxpbmtlciBkbyB0aGUgd29yayB0byBmaWd1cmUgb3V0CiAgICAjIHdoaWNoIGxpYmMgb3VyIHByb2Nlc3MgaXMgYWN0dWFsbHkgdXNpbmcuCiAgICAjCiAgICAjIFdlIG11c3QgYWxzbyBoYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgZXhlY3V0YWJsZSBpcyBub3QgYQogICAgIyBkeW5hbWljYWxseSBsaW5rZWQgZXhlY3V0YWJsZS4gVGhpcyBjYW4gb2NjdXIgd2hlbiB1c2luZyBtdXNsIGxpYmMsCiAgICAjIGZvciBleGFtcGxlLiBJbiB0aGlzIHNpdHVhdGlvbiwgZGxvcGVuKCkgd2lsbCBlcnJvciwgbGVhZGluZyB0byBhbgogICAgIyBPU0Vycm9yLiBJbnRlcmVzdGluZ2x5LCBhdCBsZWFzdCBpbiB0aGUgY2FzZSBvZiBtdXNsLCB0aGVyZSBpcyBubwogICAgIyBlcnJubyBzZXQgb24gdGhlIE9TRXJyb3IuIFRoZSBzaW5nbGUgc3RyaW5nIGFyZ3VtZW50IHVzZWQgdG8gY29uc3RydWN0CiAgICAjIE9TRXJyb3IgY29tZXMgZnJvbSBsaWJjIGl0c2VsZiBhbmQgaXMgdGhlcmVmb3JlIG5vdCBwb3J0YWJsZSB0bwogICAgIyBoYXJkIGNvZGUgaGVyZS4gSW4gYW55IGNhc2UsIGZhaWx1cmUgdG8gY2FsbCBkbG9wZW4oKSBtZWFucyB3ZQogICAgIyBjYW4gcHJvY2VlZCwgc28gd2UgYmFpbCBvbiBvdXIgYXR0ZW1wdC4KICAgIHRyeToKICAgICAgICBwcm9jZXNzX25hbWVzcGFjZSA9IGN0eXBlcy5DRExMKE5vbmUpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICByZXR1cm4gTm9uZQoKICAgIHRyeToKICAgICAgICBnbnVfZ2V0X2xpYmNfdmVyc2lvbiA9IHByb2Nlc3NfbmFtZXNwYWNlLmdudV9nZXRfbGliY192ZXJzaW9uCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIyBTeW1ib2wgZG9lc24ndCBleGlzdCAtPiB0aGVyZWZvcmUsIHdlIGFyZSBub3QgbGlua2VkIHRvCiAgICAgICAgIyBnbGliYy4KICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgQ2FsbCBnbnVfZ2V0X2xpYmNfdmVyc2lvbiwgd2hpY2ggcmV0dXJucyBhIHN0cmluZyBsaWtlICIyLjUiCiAgICBnbnVfZ2V0X2xpYmNfdmVyc2lvbi5yZXN0eXBlID0gY3R5cGVzLmNfY2hhcl9wCiAgICB2ZXJzaW9uX3N0cjogc3RyID0gZ251X2dldF9saWJjX3ZlcnNpb24oKQogICAgIyBweTIgLyBweTMgY29tcGF0aWJpbGl0eToKICAgIGlmIG5vdCBpc2luc3RhbmNlKHZlcnNpb25fc3RyLCBzdHIpOgogICAgICAgIHZlcnNpb25fc3RyID0gdmVyc2lvbl9zdHIuZGVjb2RlKCJhc2NpaSIpCgogICAgcmV0dXJuIHZlcnNpb25fc3RyCgoKZGVmIF9nbGliY192ZXJzaW9uX3N0cmluZygpIC0+IE9wdGlvbmFsW3N0cl06CiAgICAiIiJSZXR1cm5zIGdsaWJjIHZlcnNpb24gc3RyaW5nLCBvciBOb25lIGlmIG5vdCB1c2luZyBnbGliYy4iIiIKICAgIHJldHVybiBfZ2xpYmNfdmVyc2lvbl9zdHJpbmdfY29uZnN0cigpIG9yIF9nbGliY192ZXJzaW9uX3N0cmluZ19jdHlwZXMoKQoKCmRlZiBfcGFyc2VfZ2xpYmNfdmVyc2lvbih2ZXJzaW9uX3N0cjogc3RyKSAtPiBUdXBsZVtpbnQsIGludF06CiAgICAiIiJQYXJzZSBnbGliYyB2ZXJzaW9uLgoKICAgIFdlIHVzZSBhIHJlZ2V4cCBpbnN0ZWFkIG9mIHN0ci5zcGxpdCBiZWNhdXNlIHdlIHdhbnQgdG8gZGlzY2FyZCBhbnkKICAgIHJhbmRvbSBqdW5rIHRoYXQgbWlnaHQgY29tZSBhZnRlciB0aGUgbWlub3IgdmVyc2lvbiAtLSB0aGlzIG1pZ2h0IGhhcHBlbgogICAgaW4gcGF0Y2hlZC9mb3JrZWQgdmVyc2lvbnMgb2YgZ2xpYmMgKGUuZy4gTGluYXJvJ3MgdmVyc2lvbiBvZiBnbGliYwogICAgdXNlcyB2ZXJzaW9uIHN0cmluZ3MgbGlrZSAiMi4yMC0yMDE0LjExIikuIFNlZSBnaC0zNTg4LgogICAgIiIiCiAgICBtID0gcmUubWF0Y2gociIoP1A8bWFqb3I+WzAtOV0rKVwuKD9QPG1pbm9yPlswLTldKykiLCB2ZXJzaW9uX3N0cikKICAgIGlmIG5vdCBtOgogICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgIGYiRXhwZWN0ZWQgZ2xpYmMgdmVyc2lvbiB3aXRoIDIgY29tcG9uZW50cyBtYWpvci5taW5vciwiCiAgICAgICAgICAgIGYiIGdvdDoge3ZlcnNpb25fc3RyfSIsCiAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nLAogICAgICAgICkKICAgICAgICByZXR1cm4gLTEsIC0xCiAgICByZXR1cm4gaW50KG0uZ3JvdXAoIm1ham9yIikpLCBpbnQobS5ncm91cCgibWlub3IiKSkKCgpAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCmRlZiBfZ2V0X2dsaWJjX3ZlcnNpb24oKSAtPiBUdXBsZVtpbnQsIGludF06CiAgICB2ZXJzaW9uX3N0ciA9IF9nbGliY192ZXJzaW9uX3N0cmluZygpCiAgICBpZiB2ZXJzaW9uX3N0ciBpcyBOb25lOgogICAgICAgIHJldHVybiAoLTEsIC0xKQogICAgcmV0dXJuIF9wYXJzZV9nbGliY192ZXJzaW9uKHZlcnNpb25fc3RyKQoKCiMgRnJvbSBQRVAgNTEzLCBQRVAgNjAwCmRlZiBfaXNfY29tcGF0aWJsZShuYW1lOiBzdHIsIGFyY2g6IHN0ciwgdmVyc2lvbjogX0dMaWJDVmVyc2lvbikgLT4gYm9vbDoKICAgIHN5c19nbGliYyA9IF9nZXRfZ2xpYmNfdmVyc2lvbigpCiAgICBpZiBzeXNfZ2xpYmMgPCB2ZXJzaW9uOgogICAgICAgIHJldHVybiBGYWxzZQogICAgIyBDaGVjayBmb3IgcHJlc2VuY2Ugb2YgX21hbnlsaW51eCBtb2R1bGUuCiAgICB0cnk6CiAgICAgICAgaW1wb3J0IF9tYW55bGludXggICMgbm9xYQogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIHJldHVybiBUcnVlCiAgICBpZiBoYXNhdHRyKF9tYW55bGludXgsICJtYW55bGludXhfY29tcGF0aWJsZSIpOgogICAgICAgIHJlc3VsdCA9IF9tYW55bGludXgubWFueWxpbnV4X2NvbXBhdGlibGUodmVyc2lvblswXSwgdmVyc2lvblsxXSwgYXJjaCkKICAgICAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBib29sKHJlc3VsdCkKICAgICAgICByZXR1cm4gVHJ1ZQogICAgaWYgdmVyc2lvbiA9PSBfR0xpYkNWZXJzaW9uKDIsIDUpOgogICAgICAgIGlmIGhhc2F0dHIoX21hbnlsaW51eCwgIm1hbnlsaW51eDFfY29tcGF0aWJsZSIpOgogICAgICAgICAgICByZXR1cm4gYm9vbChfbWFueWxpbnV4Lm1hbnlsaW51eDFfY29tcGF0aWJsZSkKICAgIGlmIHZlcnNpb24gPT0gX0dMaWJDVmVyc2lvbigyLCAxMik6CiAgICAgICAgaWYgaGFzYXR0cihfbWFueWxpbnV4LCAibWFueWxpbnV4MjAxMF9jb21wYXRpYmxlIik6CiAgICAgICAgICAgIHJldHVybiBib29sKF9tYW55bGludXgubWFueWxpbnV4MjAxMF9jb21wYXRpYmxlKQogICAgaWYgdmVyc2lvbiA9PSBfR0xpYkNWZXJzaW9uKDIsIDE3KToKICAgICAgICBpZiBoYXNhdHRyKF9tYW55bGludXgsICJtYW55bGludXgyMDE0X2NvbXBhdGlibGUiKToKICAgICAgICAgICAgcmV0dXJuIGJvb2woX21hbnlsaW51eC5tYW55bGludXgyMDE0X2NvbXBhdGlibGUpCiAgICByZXR1cm4gVHJ1ZQoKCl9MRUdBQ1lfTUFOWUxJTlVYX01BUCA9IHsKICAgICMgQ2VudE9TIDcgdy8gZ2xpYmMgMi4xNyAoUEVQIDU5OSkKICAgICgyLCAxNyk6ICJtYW55bGludXgyMDE0IiwKICAgICMgQ2VudE9TIDYgdy8gZ2xpYmMgMi4xMiAoUEVQIDU3MSkKICAgICgyLCAxMik6ICJtYW55bGludXgyMDEwIiwKICAgICMgQ2VudE9TIDUgdy8gZ2xpYmMgMi41IChQRVAgNTEzKQogICAgKDIsIDUpOiAibWFueWxpbnV4MSIsCn0KCgpkZWYgcGxhdGZvcm1fdGFncyhsaW51eDogc3RyLCBhcmNoOiBzdHIpIC0+IEl0ZXJhdG9yW3N0cl06CiAgICBpZiBub3QgX2hhdmVfY29tcGF0aWJsZV9hYmkoc3lzLmV4ZWN1dGFibGUsIGFyY2gpOgogICAgICAgIHJldHVybgogICAgIyBPbGRlc3QgZ2xpYmMgdG8gYmUgc3VwcG9ydGVkIHJlZ2FyZGxlc3Mgb2YgYXJjaGl0ZWN0dXJlIGlzICgyLCAxNykuCiAgICB0b29fb2xkX2dsaWJjMiA9IF9HTGliQ1ZlcnNpb24oMiwgMTYpCiAgICBpZiBhcmNoIGluIHsieDg2XzY0IiwgImk2ODYifToKICAgICAgICAjIE9uIHg4Ni9pNjg2IGFsc28gb2xkZXN0IGdsaWJjIHRvIGJlIHN1cHBvcnRlZCBpcyAoMiwgNSkuCiAgICAgICAgdG9vX29sZF9nbGliYzIgPSBfR0xpYkNWZXJzaW9uKDIsIDQpCiAgICBjdXJyZW50X2dsaWJjID0gX0dMaWJDVmVyc2lvbigqX2dldF9nbGliY192ZXJzaW9uKCkpCiAgICBnbGliY19tYXhfbGlzdCA9IFtjdXJyZW50X2dsaWJjXQogICAgIyBXZSBjYW4gYXNzdW1lIGNvbXBhdGliaWxpdHkgYWNyb3NzIGdsaWJjIG1ham9yIHZlcnNpb25zLgogICAgIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNDYzNgogICAgIwogICAgIyBCdWlsZCBhIGxpc3Qgb2YgbWF4aW11bSBnbGliYyB2ZXJzaW9ucyBzbyB0aGF0IHdlIGNhbgogICAgIyBvdXRwdXQgdGhlIGNhbm9uaWNhbCBsaXN0IG9mIGFsbCBnbGliYyBmcm9tIGN1cnJlbnRfZ2xpYmMKICAgICMgZG93biB0byB0b29fb2xkX2dsaWJjMiwgaW5jbHVkaW5nIGFsbCBpbnRlcm1lZGlhcnkgdmVyc2lvbnMuCiAgICBmb3IgZ2xpYmNfbWFqb3IgaW4gcmFuZ2UoY3VycmVudF9nbGliYy5tYWpvciAtIDEsIDEsIC0xKToKICAgICAgICBnbGliY19taW5vciA9IF9MQVNUX0dMSUJDX01JTk9SW2dsaWJjX21ham9yXQogICAgICAgIGdsaWJjX21heF9saXN0LmFwcGVuZChfR0xpYkNWZXJzaW9uKGdsaWJjX21ham9yLCBnbGliY19taW5vcikpCiAgICBmb3IgZ2xpYmNfbWF4IGluIGdsaWJjX21heF9saXN0OgogICAgICAgIGlmIGdsaWJjX21heC5tYWpvciA9PSB0b29fb2xkX2dsaWJjMi5tYWpvcjoKICAgICAgICAgICAgbWluX21pbm9yID0gdG9vX29sZF9nbGliYzIubWlub3IKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEZvciBvdGhlciBnbGliYyBtYWpvciB2ZXJzaW9ucyBvbGRlc3Qgc3VwcG9ydGVkIGlzICh4LCAwKS4KICAgICAgICAgICAgbWluX21pbm9yID0gLTEKICAgICAgICBmb3IgZ2xpYmNfbWlub3IgaW4gcmFuZ2UoZ2xpYmNfbWF4Lm1pbm9yLCBtaW5fbWlub3IsIC0xKToKICAgICAgICAgICAgZ2xpYmNfdmVyc2lvbiA9IF9HTGliQ1ZlcnNpb24oZ2xpYmNfbWF4Lm1ham9yLCBnbGliY19taW5vcikKICAgICAgICAgICAgdGFnID0gIm1hbnlsaW51eF97fV97fSIuZm9ybWF0KCpnbGliY192ZXJzaW9uKQogICAgICAgICAgICBpZiBfaXNfY29tcGF0aWJsZSh0YWcsIGFyY2gsIGdsaWJjX3ZlcnNpb24pOgogICAgICAgICAgICAgICAgeWllbGQgbGludXgucmVwbGFjZSgibGludXgiLCB0YWcpCiAgICAgICAgICAgICMgSGFuZGxlIHRoZSBsZWdhY3kgbWFueWxpbnV4MSwgbWFueWxpbnV4MjAxMCwgbWFueWxpbnV4MjAxNCB0YWdzLgogICAgICAgICAgICBpZiBnbGliY192ZXJzaW9uIGluIF9MRUdBQ1lfTUFOWUxJTlVYX01BUDoKICAgICAgICAgICAgICAgIGxlZ2FjeV90YWcgPSBfTEVHQUNZX01BTllMSU5VWF9NQVBbZ2xpYmNfdmVyc2lvbl0KICAgICAgICAgICAgICAgIGlmIF9pc19jb21wYXRpYmxlKGxlZ2FjeV90YWcsIGFyY2gsIGdsaWJjX3ZlcnNpb24pOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGxpbnV4LnJlcGxhY2UoImxpbnV4IiwgbGVnYWN5X3RhZykKUEsDBBQAAAAAALoro1aBHZEH3AkAANwJAAAXAAAAcGFja2FnaW5nL19tdXNsbGludXgucHkiIiJQRVAgNjU2IHN1cHBvcnQuCgpUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGxvZ2ljIHRvIGRldGVjdCBpZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgUHl0aG9uIGlzCmxpbmtlZCBhZ2FpbnN0IG11c2wsIGFuZCB3aGF0IG11c2wgdmVyc2lvbiBpcyB1c2VkLgoiIiIKCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IHJlCmltcG9ydCBzdWJwcm9jZXNzCmltcG9ydCBzeXMKZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhdG9yLCBOYW1lZFR1cGxlLCBPcHRpb25hbAoKZnJvbSAuX2VsZmZpbGUgaW1wb3J0IEVMRkZpbGUKCgpjbGFzcyBfTXVzbFZlcnNpb24oTmFtZWRUdXBsZSk6CiAgICBtYWpvcjogaW50CiAgICBtaW5vcjogaW50CgoKZGVmIF9wYXJzZV9tdXNsX3ZlcnNpb24ob3V0cHV0OiBzdHIpIC0+IE9wdGlvbmFsW19NdXNsVmVyc2lvbl06CiAgICBsaW5lcyA9IFtuIGZvciBuIGluIChuLnN0cmlwKCkgZm9yIG4gaW4gb3V0cHV0LnNwbGl0bGluZXMoKSkgaWYgbl0KICAgIGlmIGxlbihsaW5lcykgPCAyIG9yIGxpbmVzWzBdWzo0XSAhPSAibXVzbCI6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIG0gPSByZS5tYXRjaChyIlZlcnNpb24gKFxkKylcLihcZCspIiwgbGluZXNbMV0pCiAgICBpZiBub3QgbToKICAgICAgICByZXR1cm4gTm9uZQogICAgcmV0dXJuIF9NdXNsVmVyc2lvbihtYWpvcj1pbnQobS5ncm91cCgxKSksIG1pbm9yPWludChtLmdyb3VwKDIpKSkKCgpAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCmRlZiBfZ2V0X211c2xfdmVyc2lvbihleGVjdXRhYmxlOiBzdHIpIC0+IE9wdGlvbmFsW19NdXNsVmVyc2lvbl06CiAgICAiIiJEZXRlY3QgY3VycmVudGx5LXJ1bm5pbmcgbXVzbCBydW50aW1lIHZlcnNpb24uCgogICAgVGhpcyBpcyBkb25lIGJ5IGNoZWNraW5nIHRoZSBzcGVjaWZpZWQgZXhlY3V0YWJsZSdzIGR5bmFtaWMgbGlua2luZwogICAgaW5mb3JtYXRpb24sIGFuZCBpbnZva2luZyB0aGUgbG9hZGVyIHRvIHBhcnNlIGl0cyBvdXRwdXQgZm9yIGEgdmVyc2lvbgogICAgc3RyaW5nLiBJZiB0aGUgbG9hZGVyIGlzIG11c2wsIHRoZSBvdXRwdXQgd291bGQgYmUgc29tZXRoaW5nIGxpa2U6OgoKICAgICAgICBtdXNsIGxpYmMgKHg4Nl82NCkKICAgICAgICBWZXJzaW9uIDEuMi4yCiAgICAgICAgRHluYW1pYyBQcm9ncmFtIExvYWRlcgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgd2l0aCBvcGVuKGV4ZWN1dGFibGUsICJyYiIpIGFzIGY6CiAgICAgICAgICAgIGxkID0gRUxGRmlsZShmKS5pbnRlcnByZXRlcgogICAgZXhjZXB0IChPU0Vycm9yLCBUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgIHJldHVybiBOb25lCiAgICBpZiBsZCBpcyBOb25lIG9yICJtdXNsIiBub3QgaW4gbGQ6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIHByb2MgPSBzdWJwcm9jZXNzLnJ1bihbbGRdLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKICAgIHJldHVybiBfcGFyc2VfbXVzbF92ZXJzaW9uKHByb2Muc3RkZXJyKQoKCmRlZiBwbGF0Zm9ybV90YWdzKGFyY2g6IHN0cikgLT4gSXRlcmF0b3Jbc3RyXToKICAgICIiIkdlbmVyYXRlIG11c2xsaW51eCB0YWdzIGNvbXBhdGlibGUgdG8gdGhlIGN1cnJlbnQgcGxhdGZvcm0uCgogICAgOnBhcmFtIGFyY2g6IFNob3VsZCBiZSB0aGUgcGFydCBvZiBwbGF0Zm9ybSB0YWcgYWZ0ZXIgdGhlIGBgbGludXhfYGAKICAgICAgICBwcmVmaXgsIGUuZy4gYGB4ODZfNjRgYC4gVGhlIGBgbGludXhfYGAgcHJlZml4IGlzIGFzc3VtZWQgYXMgYQogICAgICAgIHByZXJlcXVpc2l0ZSBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0gdG8gYmUgbXVzbGxpbnV4LWNvbXBhdGlibGUuCgogICAgOnJldHVybnM6IEFuIGl0ZXJhdG9yIG9mIGNvbXBhdGlibGUgbXVzbGxpbnV4IHRhZ3MuCiAgICAiIiIKICAgIHN5c19tdXNsID0gX2dldF9tdXNsX3ZlcnNpb24oc3lzLmV4ZWN1dGFibGUpCiAgICBpZiBzeXNfbXVzbCBpcyBOb25lOiAgIyBQeXRob24gbm90IGR5bmFtaWNhbGx5IGxpbmtlZCBhZ2FpbnN0IG11c2wuCiAgICAgICAgcmV0dXJuCiAgICBmb3IgbWlub3IgaW4gcmFuZ2Uoc3lzX211c2wubWlub3IsIC0xLCAtMSk6CiAgICAgICAgeWllbGQgZiJtdXNsbGludXhfe3N5c19tdXNsLm1ham9yfV97bWlub3J9X3thcmNofSIKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOiAgIyBwcmFnbWE6IG5vIGNvdmVyCiAgICBpbXBvcnQgc3lzY29uZmlnCgogICAgcGxhdCA9IHN5c2NvbmZpZy5nZXRfcGxhdGZvcm0oKQogICAgYXNzZXJ0IHBsYXQuc3RhcnRzd2l0aCgibGludXgtIiksICJub3QgbGludXgiCgogICAgcHJpbnQoInBsYXQ6IiwgcGxhdCkKICAgIHByaW50KCJtdXNsOiIsIF9nZXRfbXVzbF92ZXJzaW9uKHN5cy5leGVjdXRhYmxlKSkKICAgIHByaW50KCJ0YWdzOiIsIGVuZD0iICIpCiAgICBmb3IgdCBpbiBwbGF0Zm9ybV90YWdzKHJlLnN1YihyIlsuLV0iLCAiXyIsIHBsYXQuc3BsaXQoIi0iLCAxKVstMV0pKToKICAgICAgICBwcmludCh0LCBlbmQ9IlxuICAgICAgIikKUEsDBBQAAAAAALoro1YiCAw5tyQAALckAAAUAAAAcGFja2FnaW5nL19wYXJzZXIucHkiIiJIYW5kd3JpdHRlbiBwYXJzZXIgb2YgZGVwZW5kZW5jeSBzcGVjaWZpZXJzLgoKVGhlIGRvY3N0cmluZyBmb3IgZWFjaCBfX3BhcnNlXyogZnVuY3Rpb24gY29udGFpbnMgRU5CRi1pbnNwaXJlZCBncmFtbWFyIHJlcHJlc2VudGluZwp0aGUgaW1wbGVtZW50YXRpb24uCiIiIgoKaW1wb3J0IGFzdApmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBMaXN0LCBOYW1lZFR1cGxlLCBPcHRpb25hbCwgVHVwbGUsIFVuaW9uCgpmcm9tIC5fdG9rZW5pemVyIGltcG9ydCBERUZBVUxUX1JVTEVTLCBUb2tlbml6ZXIKCgpjbGFzcyBOb2RlOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlOiBzdHIpIC0+IE5vbmU6CiAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCgogICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiBzZWxmLnZhbHVlCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICByZXR1cm4gZiI8e3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffSgne3NlbGZ9Jyk+IgoKICAgIGRlZiBzZXJpYWxpemUoc2VsZikgLT4gc3RyOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCgpjbGFzcyBWYXJpYWJsZShOb2RlKToKICAgIGRlZiBzZXJpYWxpemUoc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiBzdHIoc2VsZikKCgpjbGFzcyBWYWx1ZShOb2RlKToKICAgIGRlZiBzZXJpYWxpemUoc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiBmJyJ7c2VsZn0iJwoKCmNsYXNzIE9wKE5vZGUpOgogICAgZGVmIHNlcmlhbGl6ZShzZWxmKSAtPiBzdHI6CiAgICAgICAgcmV0dXJuIHN0cihzZWxmKQoKCk1hcmtlclZhciA9IFVuaW9uW1ZhcmlhYmxlLCBWYWx1ZV0KTWFya2VySXRlbSA9IFR1cGxlW01hcmtlclZhciwgT3AsIE1hcmtlclZhcl0KIyBNYXJrZXJBdG9tID0gVW5pb25bTWFya2VySXRlbSwgTGlzdFsiTWFya2VyQXRvbSJdXQojIE1hcmtlckxpc3QgPSBMaXN0W1VuaW9uWyJNYXJrZXJMaXN0IiwgTWFya2VyQXRvbSwgc3RyXV0KIyBteXB5IGRvZXMgbm90IHN1cHBvcnQgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbgojIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vbXlweS9pc3N1ZXMvNzMxCk1hcmtlckF0b20gPSBBbnkKTWFya2VyTGlzdCA9IExpc3RbQW55XQoKCmNsYXNzIFBhcnNlZFJlcXVpcmVtZW50KE5hbWVkVHVwbGUpOgogICAgbmFtZTogc3RyCiAgICB1cmw6IHN0cgogICAgZXh0cmFzOiBMaXN0W3N0cl0KICAgIHNwZWNpZmllcjogc3RyCiAgICBtYXJrZXI6IE9wdGlvbmFsW01hcmtlckxpc3RdCgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlciBmb3IgZGVwZW5kZW5jeSBzcGVjaWZpZXIKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkZWYgcGFyc2VfcmVxdWlyZW1lbnQoc291cmNlOiBzdHIpIC0+IFBhcnNlZFJlcXVpcmVtZW50OgogICAgcmV0dXJuIF9wYXJzZV9yZXF1aXJlbWVudChUb2tlbml6ZXIoc291cmNlLCBydWxlcz1ERUZBVUxUX1JVTEVTKSkKCgpkZWYgX3BhcnNlX3JlcXVpcmVtZW50KHRva2VuaXplcjogVG9rZW5pemVyKSAtPiBQYXJzZWRSZXF1aXJlbWVudDoKICAgICIiIgogICAgcmVxdWlyZW1lbnQgPSBXUz8gSURFTlRJRklFUiBXUz8gZXh0cmFzIFdTPyByZXF1aXJlbWVudF9kZXRhaWxzCiAgICAiIiIKICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCgogICAgbmFtZV90b2tlbiA9IHRva2VuaXplci5leHBlY3QoCiAgICAgICAgIklERU5USUZJRVIiLCBleHBlY3RlZD0icGFja2FnZSBuYW1lIGF0IHRoZSBzdGFydCBvZiBkZXBlbmRlbmN5IHNwZWNpZmllciIKICAgICkKICAgIG5hbWUgPSBuYW1lX3Rva2VuLnRleHQKICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCgogICAgZXh0cmFzID0gX3BhcnNlX2V4dHJhcyh0b2tlbml6ZXIpCiAgICB0b2tlbml6ZXIuY29uc3VtZSgiV1MiKQoKICAgIHVybCwgc3BlY2lmaWVyLCBtYXJrZXIgPSBfcGFyc2VfcmVxdWlyZW1lbnRfZGV0YWlscyh0b2tlbml6ZXIpCiAgICB0b2tlbml6ZXIuZXhwZWN0KCJFTkQiLCBleHBlY3RlZD0iZW5kIG9mIGRlcGVuZGVuY3kgc3BlY2lmaWVyIikKCiAgICByZXR1cm4gUGFyc2VkUmVxdWlyZW1lbnQobmFtZSwgdXJsLCBleHRyYXMsIHNwZWNpZmllciwgbWFya2VyKQoKCmRlZiBfcGFyc2VfcmVxdWlyZW1lbnRfZGV0YWlscygKICAgIHRva2VuaXplcjogVG9rZW5pemVyLAopIC0+IFR1cGxlW3N0ciwgc3RyLCBPcHRpb25hbFtNYXJrZXJMaXN0XV06CiAgICAiIiIKICAgIHJlcXVpcmVtZW50X2RldGFpbHMgPSBBVCBVUkwgKFdTIHJlcXVpcmVtZW50X21hcmtlcj8pPwogICAgICAgICAgICAgICAgICAgICAgICB8IHNwZWNpZmllciBXUz8gKHJlcXVpcmVtZW50X21hcmtlcik/CiAgICAiIiIKCiAgICBzcGVjaWZpZXIgPSAiIgogICAgdXJsID0gIiIKICAgIG1hcmtlciA9IE5vbmUKCiAgICBpZiB0b2tlbml6ZXIuY2hlY2soIkFUIik6CiAgICAgICAgdG9rZW5pemVyLnJlYWQoKQogICAgICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCgogICAgICAgIHVybF9zdGFydCA9IHRva2VuaXplci5wb3NpdGlvbgogICAgICAgIHVybCA9IHRva2VuaXplci5leHBlY3QoIlVSTCIsIGV4cGVjdGVkPSJVUkwgYWZ0ZXIgQCIpLnRleHQKICAgICAgICBpZiB0b2tlbml6ZXIuY2hlY2soIkVORCIsIHBlZWs9VHJ1ZSk6CiAgICAgICAgICAgIHJldHVybiAodXJsLCBzcGVjaWZpZXIsIG1hcmtlcikKCiAgICAgICAgdG9rZW5pemVyLmV4cGVjdCgiV1MiLCBleHBlY3RlZD0id2hpdGVzcGFjZSBhZnRlciBVUkwiKQoKICAgICAgICAjIFRoZSBpbnB1dCBtaWdodCBlbmQgYWZ0ZXIgd2hpdGVzcGFjZS4KICAgICAgICBpZiB0b2tlbml6ZXIuY2hlY2soIkVORCIsIHBlZWs9VHJ1ZSk6CiAgICAgICAgICAgIHJldHVybiAodXJsLCBzcGVjaWZpZXIsIG1hcmtlcikKCiAgICAgICAgbWFya2VyID0gX3BhcnNlX3JlcXVpcmVtZW50X21hcmtlcigKICAgICAgICAgICAgdG9rZW5pemVyLCBzcGFuX3N0YXJ0PXVybF9zdGFydCwgYWZ0ZXI9IlVSTCBhbmQgd2hpdGVzcGFjZSIKICAgICAgICApCiAgICBlbHNlOgogICAgICAgIHNwZWNpZmllcl9zdGFydCA9IHRva2VuaXplci5wb3NpdGlvbgogICAgICAgIHNwZWNpZmllciA9IF9wYXJzZV9zcGVjaWZpZXIodG9rZW5pemVyKQogICAgICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCgogICAgICAgIGlmIHRva2VuaXplci5jaGVjaygiRU5EIiwgcGVlaz1UcnVlKToKICAgICAgICAgICAgcmV0dXJuICh1cmwsIHNwZWNpZmllciwgbWFya2VyKQoKICAgICAgICBtYXJrZXIgPSBfcGFyc2VfcmVxdWlyZW1lbnRfbWFya2VyKAogICAgICAgICAgICB0b2tlbml6ZXIsCiAgICAgICAgICAgIHNwYW5fc3RhcnQ9c3BlY2lmaWVyX3N0YXJ0LAogICAgICAgICAgICBhZnRlcj0oCiAgICAgICAgICAgICAgICAidmVyc2lvbiBzcGVjaWZpZXIiCiAgICAgICAgICAgICAgICBpZiBzcGVjaWZpZXIKICAgICAgICAgICAgICAgIGVsc2UgIm5hbWUgYW5kIG5vIHZhbGlkIHZlcnNpb24gc3BlY2lmaWVyIgogICAgICAgICAgICApLAogICAgICAgICkKCiAgICByZXR1cm4gKHVybCwgc3BlY2lmaWVyLCBtYXJrZXIpCgoKZGVmIF9wYXJzZV9yZXF1aXJlbWVudF9tYXJrZXIoCiAgICB0b2tlbml6ZXI6IFRva2VuaXplciwgKiwgc3Bhbl9zdGFydDogaW50LCBhZnRlcjogc3RyCikgLT4gTWFya2VyTGlzdDoKICAgICIiIgogICAgcmVxdWlyZW1lbnRfbWFya2VyID0gU0VNSUNPTE9OIG1hcmtlciBXUz8KICAgICIiIgoKICAgIGlmIG5vdCB0b2tlbml6ZXIuY2hlY2soIlNFTUlDT0xPTiIpOgogICAgICAgIHRva2VuaXplci5yYWlzZV9zeW50YXhfZXJyb3IoCiAgICAgICAgICAgIGYiRXhwZWN0ZWQgZW5kIG9yIHNlbWljb2xvbiAoYWZ0ZXIge2FmdGVyfSkiLAogICAgICAgICAgICBzcGFuX3N0YXJ0PXNwYW5fc3RhcnQsCiAgICAgICAgKQogICAgdG9rZW5pemVyLnJlYWQoKQoKICAgIG1hcmtlciA9IF9wYXJzZV9tYXJrZXIodG9rZW5pemVyKQogICAgdG9rZW5pemVyLmNvbnN1bWUoIldTIikKCiAgICByZXR1cm4gbWFya2VyCgoKZGVmIF9wYXJzZV9leHRyYXModG9rZW5pemVyOiBUb2tlbml6ZXIpIC0+IExpc3Rbc3RyXToKICAgICIiIgogICAgZXh0cmFzID0gKExFRlRfQlJBQ0tFVCB3c3AqIGV4dHJhc19saXN0PyB3c3AqIFJJR0hUX0JSQUNLRVQpPwogICAgIiIiCiAgICBpZiBub3QgdG9rZW5pemVyLmNoZWNrKCJMRUZUX0JSQUNLRVQiLCBwZWVrPVRydWUpOgogICAgICAgIHJldHVybiBbXQoKICAgIHdpdGggdG9rZW5pemVyLmVuY2xvc2luZ190b2tlbnMoIkxFRlRfQlJBQ0tFVCIsICJSSUdIVF9CUkFDS0VUIik6CiAgICAgICAgdG9rZW5pemVyLmNvbnN1bWUoIldTIikKICAgICAgICBleHRyYXMgPSBfcGFyc2VfZXh0cmFzX2xpc3QodG9rZW5pemVyKQogICAgICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCgogICAgcmV0dXJuIGV4dHJhcwoKCmRlZiBfcGFyc2VfZXh0cmFzX2xpc3QodG9rZW5pemVyOiBUb2tlbml6ZXIpIC0+IExpc3Rbc3RyXToKICAgICIiIgogICAgZXh0cmFzX2xpc3QgPSBpZGVudGlmaWVyICh3c3AqICcsJyB3c3AqIGlkZW50aWZpZXIpKgogICAgIiIiCiAgICBleHRyYXM6IExpc3Rbc3RyXSA9IFtdCgogICAgaWYgbm90IHRva2VuaXplci5jaGVjaygiSURFTlRJRklFUiIpOgogICAgICAgIHJldHVybiBleHRyYXMKCiAgICBleHRyYXMuYXBwZW5kKHRva2VuaXplci5yZWFkKCkudGV4dCkKCiAgICB3aGlsZSBUcnVlOgogICAgICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCiAgICAgICAgaWYgdG9rZW5pemVyLmNoZWNrKCJJREVOVElGSUVSIiwgcGVlaz1UcnVlKToKICAgICAgICAgICAgdG9rZW5pemVyLnJhaXNlX3N5bnRheF9lcnJvcigiRXhwZWN0ZWQgY29tbWEgYmV0d2VlbiBleHRyYSBuYW1lcyIpCiAgICAgICAgZWxpZiBub3QgdG9rZW5pemVyLmNoZWNrKCJDT01NQSIpOgogICAgICAgICAgICBicmVhawoKICAgICAgICB0b2tlbml6ZXIucmVhZCgpCiAgICAgICAgdG9rZW5pemVyLmNvbnN1bWUoIldTIikKCiAgICAgICAgZXh0cmFfdG9rZW4gPSB0b2tlbml6ZXIuZXhwZWN0KCJJREVOVElGSUVSIiwgZXhwZWN0ZWQ9ImV4dHJhIG5hbWUgYWZ0ZXIgY29tbWEiKQogICAgICAgIGV4dHJhcy5hcHBlbmQoZXh0cmFfdG9rZW4udGV4dCkKCiAgICByZXR1cm4gZXh0cmFzCgoKZGVmIF9wYXJzZV9zcGVjaWZpZXIodG9rZW5pemVyOiBUb2tlbml6ZXIpIC0+IHN0cjoKICAgICIiIgogICAgc3BlY2lmaWVyID0gTEVGVF9QQVJFTlRIRVNJUyBXUz8gdmVyc2lvbl9tYW55IFdTPyBSSUdIVF9QQVJFTlRIRVNJUwogICAgICAgICAgICAgIHwgV1M/IHZlcnNpb25fbWFueSBXUz8KICAgICIiIgogICAgd2l0aCB0b2tlbml6ZXIuZW5jbG9zaW5nX3Rva2VucygiTEVGVF9QQVJFTlRIRVNJUyIsICJSSUdIVF9QQVJFTlRIRVNJUyIpOgogICAgICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCiAgICAgICAgcGFyc2VkX3NwZWNpZmllcnMgPSBfcGFyc2VfdmVyc2lvbl9tYW55KHRva2VuaXplcikKICAgICAgICB0b2tlbml6ZXIuY29uc3VtZSgiV1MiKQoKICAgIHJldHVybiBwYXJzZWRfc3BlY2lmaWVycwoKCmRlZiBfcGFyc2VfdmVyc2lvbl9tYW55KHRva2VuaXplcjogVG9rZW5pemVyKSAtPiBzdHI6CiAgICAiIiIKICAgIHZlcnNpb25fbWFueSA9IChTUEVDSUZJRVIgKFdTPyBDT01NQSBXUz8gU1BFQ0lGSUVSKSopPwogICAgIiIiCiAgICBwYXJzZWRfc3BlY2lmaWVycyA9ICIiCiAgICB3aGlsZSB0b2tlbml6ZXIuY2hlY2soIlNQRUNJRklFUiIpOgogICAgICAgIHBhcnNlZF9zcGVjaWZpZXJzICs9IHRva2VuaXplci5yZWFkKCkudGV4dAogICAgICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCiAgICAgICAgaWYgbm90IHRva2VuaXplci5jaGVjaygiQ09NTUEiKToKICAgICAgICAgICAgYnJlYWsKICAgICAgICBwYXJzZWRfc3BlY2lmaWVycyArPSB0b2tlbml6ZXIucmVhZCgpLnRleHQKICAgICAgICB0b2tlbml6ZXIuY29uc3VtZSgiV1MiKQoKICAgIHJldHVybiBwYXJzZWRfc3BlY2lmaWVycwoKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSZWN1cnNpdmUgZGVzY2VudCBwYXJzZXIgZm9yIG1hcmtlciBleHByZXNzaW9uCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGVmIHBhcnNlX21hcmtlcihzb3VyY2U6IHN0cikgLT4gTWFya2VyTGlzdDoKICAgIHJldHVybiBfcGFyc2VfbWFya2VyKFRva2VuaXplcihzb3VyY2UsIHJ1bGVzPURFRkFVTFRfUlVMRVMpKQoKCmRlZiBfcGFyc2VfbWFya2VyKHRva2VuaXplcjogVG9rZW5pemVyKSAtPiBNYXJrZXJMaXN0OgogICAgIiIiCiAgICBtYXJrZXIgPSBtYXJrZXJfYXRvbSAoQk9PTE9QIG1hcmtlcl9hdG9tKSsKICAgICIiIgogICAgZXhwcmVzc2lvbiA9IFtfcGFyc2VfbWFya2VyX2F0b20odG9rZW5pemVyKV0KICAgIHdoaWxlIHRva2VuaXplci5jaGVjaygiQk9PTE9QIik6CiAgICAgICAgdG9rZW4gPSB0b2tlbml6ZXIucmVhZCgpCiAgICAgICAgZXhwcl9yaWdodCA9IF9wYXJzZV9tYXJrZXJfYXRvbSh0b2tlbml6ZXIpCiAgICAgICAgZXhwcmVzc2lvbi5leHRlbmQoKHRva2VuLnRleHQsIGV4cHJfcmlnaHQpKQogICAgcmV0dXJuIGV4cHJlc3Npb24KCgpkZWYgX3BhcnNlX21hcmtlcl9hdG9tKHRva2VuaXplcjogVG9rZW5pemVyKSAtPiBNYXJrZXJBdG9tOgogICAgIiIiCiAgICBtYXJrZXJfYXRvbSA9IFdTPyBMRUZUX1BBUkVOVEhFU0lTIFdTPyBtYXJrZXIgV1M/IFJJR0hUX1BBUkVOVEhFU0lTIFdTPwogICAgICAgICAgICAgICAgfCBXUz8gbWFya2VyX2l0ZW0gV1M/CiAgICAiIiIKCiAgICB0b2tlbml6ZXIuY29uc3VtZSgiV1MiKQogICAgaWYgdG9rZW5pemVyLmNoZWNrKCJMRUZUX1BBUkVOVEhFU0lTIiwgcGVlaz1UcnVlKToKICAgICAgICB3aXRoIHRva2VuaXplci5lbmNsb3NpbmdfdG9rZW5zKCJMRUZUX1BBUkVOVEhFU0lTIiwgIlJJR0hUX1BBUkVOVEhFU0lTIik6CiAgICAgICAgICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCiAgICAgICAgICAgIG1hcmtlcjogTWFya2VyQXRvbSA9IF9wYXJzZV9tYXJrZXIodG9rZW5pemVyKQogICAgICAgICAgICB0b2tlbml6ZXIuY29uc3VtZSgiV1MiKQogICAgZWxzZToKICAgICAgICBtYXJrZXIgPSBfcGFyc2VfbWFya2VyX2l0ZW0odG9rZW5pemVyKQogICAgdG9rZW5pemVyLmNvbnN1bWUoIldTIikKICAgIHJldHVybiBtYXJrZXIKCgpkZWYgX3BhcnNlX21hcmtlcl9pdGVtKHRva2VuaXplcjogVG9rZW5pemVyKSAtPiBNYXJrZXJJdGVtOgogICAgIiIiCiAgICBtYXJrZXJfaXRlbSA9IFdTPyBtYXJrZXJfdmFyIFdTPyBtYXJrZXJfb3AgV1M/IG1hcmtlcl92YXIgV1M/CiAgICAiIiIKICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCiAgICBtYXJrZXJfdmFyX2xlZnQgPSBfcGFyc2VfbWFya2VyX3Zhcih0b2tlbml6ZXIpCiAgICB0b2tlbml6ZXIuY29uc3VtZSgiV1MiKQogICAgbWFya2VyX29wID0gX3BhcnNlX21hcmtlcl9vcCh0b2tlbml6ZXIpCiAgICB0b2tlbml6ZXIuY29uc3VtZSgiV1MiKQogICAgbWFya2VyX3Zhcl9yaWdodCA9IF9wYXJzZV9tYXJrZXJfdmFyKHRva2VuaXplcikKICAgIHRva2VuaXplci5jb25zdW1lKCJXUyIpCiAgICByZXR1cm4gKG1hcmtlcl92YXJfbGVmdCwgbWFya2VyX29wLCBtYXJrZXJfdmFyX3JpZ2h0KQoKCmRlZiBfcGFyc2VfbWFya2VyX3Zhcih0b2tlbml6ZXI6IFRva2VuaXplcikgLT4gTWFya2VyVmFyOgogICAgIiIiCiAgICBtYXJrZXJfdmFyID0gVkFSSUFCTEUgfCBRVU9URURfU1RSSU5HCiAgICAiIiIKICAgIGlmIHRva2VuaXplci5jaGVjaygiVkFSSUFCTEUiKToKICAgICAgICByZXR1cm4gcHJvY2Vzc19lbnZfdmFyKHRva2VuaXplci5yZWFkKCkudGV4dC5yZXBsYWNlKCIuIiwgIl8iKSkKICAgIGVsaWYgdG9rZW5pemVyLmNoZWNrKCJRVU9URURfU1RSSU5HIik6CiAgICAgICAgcmV0dXJuIHByb2Nlc3NfcHl0aG9uX3N0cih0b2tlbml6ZXIucmVhZCgpLnRleHQpCiAgICBlbHNlOgogICAgICAgIHRva2VuaXplci5yYWlzZV9zeW50YXhfZXJyb3IoCiAgICAgICAgICAgIG1lc3NhZ2U9IkV4cGVjdGVkIGEgbWFya2VyIHZhcmlhYmxlIG9yIHF1b3RlZCBzdHJpbmciCiAgICAgICAgKQoKCmRlZiBwcm9jZXNzX2Vudl92YXIoZW52X3Zhcjogc3RyKSAtPiBWYXJpYWJsZToKICAgIGlmICgKICAgICAgICBlbnZfdmFyID09ICJwbGF0Zm9ybV9weXRob25faW1wbGVtZW50YXRpb24iCiAgICAgICAgb3IgZW52X3ZhciA9PSAicHl0aG9uX2ltcGxlbWVudGF0aW9uIgogICAgKToKICAgICAgICByZXR1cm4gVmFyaWFibGUoInBsYXRmb3JtX3B5dGhvbl9pbXBsZW1lbnRhdGlvbiIpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBWYXJpYWJsZShlbnZfdmFyKQoKCmRlZiBwcm9jZXNzX3B5dGhvbl9zdHIocHl0aG9uX3N0cjogc3RyKSAtPiBWYWx1ZToKICAgIHZhbHVlID0gYXN0LmxpdGVyYWxfZXZhbChweXRob25fc3RyKQogICAgcmV0dXJuIFZhbHVlKHN0cih2YWx1ZSkpCgoKZGVmIF9wYXJzZV9tYXJrZXJfb3AodG9rZW5pemVyOiBUb2tlbml6ZXIpIC0+IE9wOgogICAgIiIiCiAgICBtYXJrZXJfb3AgPSBJTiB8IE5PVCBJTiB8IE9QCiAgICAiIiIKICAgIGlmIHRva2VuaXplci5jaGVjaygiSU4iKToKICAgICAgICB0b2tlbml6ZXIucmVhZCgpCiAgICAgICAgcmV0dXJuIE9wKCJpbiIpCiAgICBlbGlmIHRva2VuaXplci5jaGVjaygiTk9UIik6CiAgICAgICAgdG9rZW5pemVyLnJlYWQoKQogICAgICAgIHRva2VuaXplci5leHBlY3QoIldTIiwgZXhwZWN0ZWQ9IndoaXRlc3BhY2UgYWZ0ZXIgJ25vdCciKQogICAgICAgIHRva2VuaXplci5leHBlY3QoIklOIiwgZXhwZWN0ZWQ9IidpbicgYWZ0ZXIgJ25vdCciKQogICAgICAgIHJldHVybiBPcCgibm90IGluIikKICAgIGVsaWYgdG9rZW5pemVyLmNoZWNrKCJPUCIpOgogICAgICAgIHJldHVybiBPcCh0b2tlbml6ZXIucmVhZCgpLnRleHQpCiAgICBlbHNlOgogICAgICAgIHJldHVybiB0b2tlbml6ZXIucmFpc2Vfc3ludGF4X2Vycm9yKAogICAgICAgICAgICAiRXhwZWN0ZWQgbWFya2VyIG9wZXJhdG9yLCBvbmUgb2YgIgogICAgICAgICAgICAiPD0sIDwsICE9LCA9PSwgPj0sID4sIH49LCA9PT0sIGluLCBub3QgaW4iCiAgICAgICAgKQpQSwMEFAAAAAAAuiujVjCj8pKXBQAAlwUAABgAAABwYWNrYWdpbmcvX3N0cnVjdHVyZXMucHkjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQojIGZvciBjb21wbGV0ZSBkZXRhaWxzLgoKCmNsYXNzIEluZmluaXR5VHlwZToKICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgcmV0dXJuICJJbmZpbml0eSIKCiAgICBkZWYgX19oYXNoX18oc2VsZikgLT4gaW50OgogICAgICAgIHJldHVybiBoYXNoKHJlcHIoc2VsZikpCgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyOiBvYmplY3QpIC0+IGJvb2w6CiAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKQoKICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBfX25lZ19fKHNlbGY6IG9iamVjdCkgLT4gIk5lZ2F0aXZlSW5maW5pdHlUeXBlIjoKICAgICAgICByZXR1cm4gTmVnYXRpdmVJbmZpbml0eQoKCkluZmluaXR5ID0gSW5maW5pdHlUeXBlKCkKCgpjbGFzcyBOZWdhdGl2ZUluZmluaXR5VHlwZToKICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgcmV0dXJuICItSW5maW5pdHkiCgogICAgZGVmIF9faGFzaF9fKHNlbGYpIC0+IGludDoKICAgICAgICByZXR1cm4gaGFzaChyZXByKHNlbGYpKQoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pCgogICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgX19uZWdfXyhzZWxmOiBvYmplY3QpIC0+IEluZmluaXR5VHlwZToKICAgICAgICByZXR1cm4gSW5maW5pdHkKCgpOZWdhdGl2ZUluZmluaXR5ID0gTmVnYXRpdmVJbmZpbml0eVR5cGUoKQpQSwMEFAAAAAAAuiujVhnpHRscFAAAHBQAABcAAABwYWNrYWdpbmcvX3Rva2VuaXplci5weWltcG9ydCBjb250ZXh0bGliCmltcG9ydCByZQpmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QsIEl0ZXJhdG9yLCBOb1JldHVybiwgT3B0aW9uYWwsIFR1cGxlLCBVbmlvbgoKZnJvbSAuc3BlY2lmaWVycyBpbXBvcnQgU3BlY2lmaWVyCgoKQGRhdGFjbGFzcwpjbGFzcyBUb2tlbjoKICAgIG5hbWU6IHN0cgogICAgdGV4dDogc3RyCiAgICBwb3NpdGlvbjogaW50CgoKY2xhc3MgUGFyc2VyU3ludGF4RXJyb3IoRXhjZXB0aW9uKToKICAgICIiIlRoZSBwcm92aWRlZCBzb3VyY2UgdGV4dCBjb3VsZCBub3QgYmUgcGFyc2VkIGNvcnJlY3RseS4iIiIKCiAgICBkZWYgX19pbml0X18oCiAgICAgICAgc2VsZiwKICAgICAgICBtZXNzYWdlOiBzdHIsCiAgICAgICAgKiwKICAgICAgICBzb3VyY2U6IHN0ciwKICAgICAgICBzcGFuOiBUdXBsZVtpbnQsIGludF0sCiAgICApIC0+IE5vbmU6CiAgICAgICAgc2VsZi5zcGFuID0gc3BhbgogICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKICAgICAgICBzZWxmLnNvdXJjZSA9IHNvdXJjZQoKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKCiAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgbWFya2VyID0gIiAiICogc2VsZi5zcGFuWzBdICsgIn4iICogKHNlbGYuc3BhblsxXSAtIHNlbGYuc3BhblswXSkgKyAiXiIKICAgICAgICByZXR1cm4gIlxuICAgICIuam9pbihbc2VsZi5tZXNzYWdlLCBzZWxmLnNvdXJjZSwgbWFya2VyXSkKCgpERUZBVUxUX1JVTEVTOiAiRGljdFtzdHIsIFVuaW9uW3N0ciwgcmUuUGF0dGVybltzdHJdXV0iID0gewogICAgIkxFRlRfUEFSRU5USEVTSVMiOiByIlwoIiwKICAgICJSSUdIVF9QQVJFTlRIRVNJUyI6IHIiXCkiLAogICAgIkxFRlRfQlJBQ0tFVCI6IHIiXFsiLAogICAgIlJJR0hUX0JSQUNLRVQiOiByIlxdIiwKICAgICJTRU1JQ09MT04iOiByIjsiLAogICAgIkNPTU1BIjogciIsIiwKICAgICJRVU9URURfU1RSSU5HIjogcmUuY29tcGlsZSgKICAgICAgICByIiIiCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICgnW14nXSonKQogICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgKCJbXiJdKiIpCiAgICAgICAgICAgICkKICAgICAgICAiIiIsCiAgICAgICAgcmUuVkVSQk9TRSwKICAgICksCiAgICAiT1AiOiByIig9PT18PT18fj18IT18PD18Pj18PHw+KSIsCiAgICAiQk9PTE9QIjogciJcYihvcnxhbmQpXGIiLAogICAgIklOIjogciJcYmluXGIiLAogICAgIk5PVCI6IHIiXGJub3RcYiIsCiAgICAiVkFSSUFCTEUiOiByZS5jb21waWxlKAogICAgICAgIHIiIiIKICAgICAgICAgICAgXGIoCiAgICAgICAgICAgICAgICBweXRob25fdmVyc2lvbgogICAgICAgICAgICAgICAgfHB5dGhvbl9mdWxsX3ZlcnNpb24KICAgICAgICAgICAgICAgIHxvc1suX11uYW1lCiAgICAgICAgICAgICAgICB8c3lzWy5fXXBsYXRmb3JtCiAgICAgICAgICAgICAgICB8cGxhdGZvcm1fKHJlbGVhc2V8c3lzdGVtKQogICAgICAgICAgICAgICAgfHBsYXRmb3JtWy5fXSh2ZXJzaW9ufG1hY2hpbmV8cHl0aG9uX2ltcGxlbWVudGF0aW9uKQogICAgICAgICAgICAgICAgfHB5dGhvbl9pbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgfGltcGxlbWVudGF0aW9uXyhuYW1lfHZlcnNpb24pCiAgICAgICAgICAgICAgICB8ZXh0cmEKICAgICAgICAgICAgKVxiCiAgICAgICAgIiIiLAogICAgICAgIHJlLlZFUkJPU0UsCiAgICApLAogICAgIlNQRUNJRklFUiI6IHJlLmNvbXBpbGUoCiAgICAgICAgU3BlY2lmaWVyLl9vcGVyYXRvcl9yZWdleF9zdHIgKyBTcGVjaWZpZXIuX3ZlcnNpb25fcmVnZXhfc3RyLAogICAgICAgIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFLAogICAgKSwKICAgICJBVCI6IHIiXEAiLAogICAgIlVSTCI6IHIiW14gXHRdKyIsCiAgICAiSURFTlRJRklFUiI6IHIiXGJbYS16QS1aMC05XVthLXpBLVowLTkuXy1dKlxiIiwKICAgICJXUyI6IHIiWyBcdF0rIiwKICAgICJFTkQiOiByIiQiLAp9CgoKY2xhc3MgVG9rZW5pemVyOgogICAgIiIiQ29udGV4dC1zZW5zaXRpdmUgdG9rZW4gcGFyc2luZy4KCiAgICBQcm92aWRlcyBtZXRob2RzIHRvIGV4YW1pbmUgdGhlIGlucHV0IHN0cmVhbSB0byBjaGVjayB3aGV0aGVyIHRoZSBuZXh0IHRva2VuCiAgICBtYXRjaGVzLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKAogICAgICAgIHNlbGYsCiAgICAgICAgc291cmNlOiBzdHIsCiAgICAgICAgKiwKICAgICAgICBydWxlczogIkRpY3Rbc3RyLCBVbmlvbltzdHIsIHJlLlBhdHRlcm5bc3RyXV1dIiwKICAgICkgLT4gTm9uZToKICAgICAgICBzZWxmLnNvdXJjZSA9IHNvdXJjZQogICAgICAgIHNlbGYucnVsZXM6IERpY3Rbc3RyLCByZS5QYXR0ZXJuW3N0cl1dID0gewogICAgICAgICAgICBuYW1lOiByZS5jb21waWxlKHBhdHRlcm4pIGZvciBuYW1lLCBwYXR0ZXJuIGluIHJ1bGVzLml0ZW1zKCkKICAgICAgICB9CiAgICAgICAgc2VsZi5uZXh0X3Rva2VuOiBPcHRpb25hbFtUb2tlbl0gPSBOb25lCiAgICAgICAgc2VsZi5wb3NpdGlvbiA9IDAKCiAgICBkZWYgY29uc3VtZShzZWxmLCBuYW1lOiBzdHIpIC0+IE5vbmU6CiAgICAgICAgIiIiTW92ZSBiZXlvbmQgcHJvdmlkZWQgdG9rZW4gbmFtZSwgaWYgYXQgY3VycmVudCBwb3NpdGlvbi4iIiIKICAgICAgICBpZiBzZWxmLmNoZWNrKG5hbWUpOgogICAgICAgICAgICBzZWxmLnJlYWQoKQoKICAgIGRlZiBjaGVjayhzZWxmLCBuYW1lOiBzdHIsICosIHBlZWs6IGJvb2wgPSBGYWxzZSkgLT4gYm9vbDoKICAgICAgICAiIiJDaGVjayB3aGV0aGVyIHRoZSBuZXh0IHRva2VuIGhhcyB0aGUgcHJvdmlkZWQgbmFtZS4KCiAgICAgICAgQnkgZGVmYXVsdCwgaWYgdGhlIGNoZWNrIHN1Y2NlZWRzLCB0aGUgdG9rZW4gKm11c3QqIGJlIHJlYWQgYmVmb3JlCiAgICAgICAgYW5vdGhlciBjaGVjay4gSWYgYHBlZWtgIGlzIHNldCB0byBgVHJ1ZWAsIHRoZSB0b2tlbiBpcyBub3QgbG9hZGVkIGFuZAogICAgICAgIHdvdWxkIG5lZWQgdG8gYmUgY2hlY2tlZCBhZ2Fpbi4KICAgICAgICAiIiIKICAgICAgICBhc3NlcnQgKAogICAgICAgICAgICBzZWxmLm5leHRfdG9rZW4gaXMgTm9uZQogICAgICAgICksIGYiQ2Fubm90IGNoZWNrIGZvciB7bmFtZSFyfSwgYWxyZWFkeSBoYXZlIHtzZWxmLm5leHRfdG9rZW4hcn0iCiAgICAgICAgYXNzZXJ0IG5hbWUgaW4gc2VsZi5ydWxlcywgZiJVbmtub3duIHRva2VuIG5hbWU6IHtuYW1lIXJ9IgoKICAgICAgICBleHByZXNzaW9uID0gc2VsZi5ydWxlc1tuYW1lXQoKICAgICAgICBtYXRjaCA9IGV4cHJlc3Npb24ubWF0Y2goc2VsZi5zb3VyY2UsIHNlbGYucG9zaXRpb24pCiAgICAgICAgaWYgbWF0Y2ggaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgaWYgbm90IHBlZWs6CiAgICAgICAgICAgIHNlbGYubmV4dF90b2tlbiA9IFRva2VuKG5hbWUsIG1hdGNoWzBdLCBzZWxmLnBvc2l0aW9uKQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIGV4cGVjdChzZWxmLCBuYW1lOiBzdHIsICosIGV4cGVjdGVkOiBzdHIpIC0+IFRva2VuOgogICAgICAgICIiIkV4cGVjdCBhIGNlcnRhaW4gdG9rZW4gbmFtZSBuZXh0LCBmYWlsaW5nIHdpdGggYSBzeW50YXggZXJyb3Igb3RoZXJ3aXNlLgoKICAgICAgICBUaGUgdG9rZW4gaXMgKm5vdCogcmVhZC4KICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc2VsZi5jaGVjayhuYW1lKToKICAgICAgICAgICAgcmFpc2Ugc2VsZi5yYWlzZV9zeW50YXhfZXJyb3IoZiJFeHBlY3RlZCB7ZXhwZWN0ZWR9IikKICAgICAgICByZXR1cm4gc2VsZi5yZWFkKCkKCiAgICBkZWYgcmVhZChzZWxmKSAtPiBUb2tlbjoKICAgICAgICAiIiJDb25zdW1lIHRoZSBuZXh0IHRva2VuIGFuZCByZXR1cm4gaXQuIiIiCiAgICAgICAgdG9rZW4gPSBzZWxmLm5leHRfdG9rZW4KICAgICAgICBhc3NlcnQgdG9rZW4gaXMgbm90IE5vbmUKCiAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW4odG9rZW4udGV4dCkKICAgICAgICBzZWxmLm5leHRfdG9rZW4gPSBOb25lCgogICAgICAgIHJldHVybiB0b2tlbgoKICAgIGRlZiByYWlzZV9zeW50YXhfZXJyb3IoCiAgICAgICAgc2VsZiwKICAgICAgICBtZXNzYWdlOiBzdHIsCiAgICAgICAgKiwKICAgICAgICBzcGFuX3N0YXJ0OiBPcHRpb25hbFtpbnRdID0gTm9uZSwKICAgICAgICBzcGFuX2VuZDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCiAgICApIC0+IE5vUmV0dXJuOgogICAgICAgICIiIlJhaXNlIFBhcnNlclN5bnRheEVycm9yIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4iIiIKICAgICAgICBzcGFuID0gKAogICAgICAgICAgICBzZWxmLnBvc2l0aW9uIGlmIHNwYW5fc3RhcnQgaXMgTm9uZSBlbHNlIHNwYW5fc3RhcnQsCiAgICAgICAgICAgIHNlbGYucG9zaXRpb24gaWYgc3Bhbl9lbmQgaXMgTm9uZSBlbHNlIHNwYW5fZW5kLAogICAgICAgICkKICAgICAgICByYWlzZSBQYXJzZXJTeW50YXhFcnJvcigKICAgICAgICAgICAgbWVzc2FnZSwKICAgICAgICAgICAgc291cmNlPXNlbGYuc291cmNlLAogICAgICAgICAgICBzcGFuPXNwYW4sCiAgICAgICAgKQoKICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiAgICBkZWYgZW5jbG9zaW5nX3Rva2VucyhzZWxmLCBvcGVuX3Rva2VuOiBzdHIsIGNsb3NlX3Rva2VuOiBzdHIpIC0+IEl0ZXJhdG9yW2Jvb2xdOgogICAgICAgIGlmIHNlbGYuY2hlY2sob3Blbl90b2tlbik6CiAgICAgICAgICAgIG9wZW5fcG9zaXRpb24gPSBzZWxmLnBvc2l0aW9uCiAgICAgICAgICAgIHNlbGYucmVhZCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb3Blbl9wb3NpdGlvbiA9IE5vbmUKCiAgICAgICAgeWllbGQgb3Blbl9wb3NpdGlvbiBpcyBub3QgTm9uZQoKICAgICAgICBpZiBvcGVuX3Bvc2l0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBub3Qgc2VsZi5jaGVjayhjbG9zZV90b2tlbik6CiAgICAgICAgICAgIHNlbGYucmFpc2Vfc3ludGF4X2Vycm9yKAogICAgICAgICAgICAgICAgZiJFeHBlY3RlZCBjbG9zaW5nIHtjbG9zZV90b2tlbn0iLAogICAgICAgICAgICAgICAgc3Bhbl9zdGFydD1vcGVuX3Bvc2l0aW9uLAogICAgICAgICAgICApCgogICAgICAgIHNlbGYucmVhZCgpClBLAwQUAAAAAAC6K6NWvB60kuEfAADhHwAAFAAAAHBhY2thZ2luZy9tYXJrZXJzLnB5IyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCiMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKIyBmb3IgY29tcGxldGUgZGV0YWlscy4KCmltcG9ydCBvcGVyYXRvcgppbXBvcnQgb3MKaW1wb3J0IHBsYXRmb3JtCmltcG9ydCBzeXMKZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZSwgVW5pb24KCmZyb20gLl9wYXJzZXIgaW1wb3J0IE1hcmtlckF0b20sIE1hcmtlckxpc3QsIE9wLCBWYWx1ZSwgVmFyaWFibGUsIHBhcnNlX21hcmtlcgpmcm9tIC5fdG9rZW5pemVyIGltcG9ydCBQYXJzZXJTeW50YXhFcnJvcgpmcm9tIC5zcGVjaWZpZXJzIGltcG9ydCBJbnZhbGlkU3BlY2lmaWVyLCBTcGVjaWZpZXIKZnJvbSAudXRpbHMgaW1wb3J0IGNhbm9uaWNhbGl6ZV9uYW1lCgpfX2FsbF9fID0gWwogICAgIkludmFsaWRNYXJrZXIiLAogICAgIlVuZGVmaW5lZENvbXBhcmlzb24iLAogICAgIlVuZGVmaW5lZEVudmlyb25tZW50TmFtZSIsCiAgICAiTWFya2VyIiwKICAgICJkZWZhdWx0X2Vudmlyb25tZW50IiwKXQoKT3BlcmF0b3IgPSBDYWxsYWJsZVtbc3RyLCBzdHJdLCBib29sXQoKCmNsYXNzIEludmFsaWRNYXJrZXIoVmFsdWVFcnJvcik6CiAgICAiIiIKICAgIEFuIGludmFsaWQgbWFya2VyIHdhcyBmb3VuZCwgdXNlcnMgc2hvdWxkIHJlZmVyIHRvIFBFUCA1MDguCiAgICAiIiIKCgpjbGFzcyBVbmRlZmluZWRDb21wYXJpc29uKFZhbHVlRXJyb3IpOgogICAgIiIiCiAgICBBbiBpbnZhbGlkIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIG9uIGEgdmFsdWUgdGhhdCBkb2Vzbid0IHN1cHBvcnQgaXQuCiAgICAiIiIKCgpjbGFzcyBVbmRlZmluZWRFbnZpcm9ubWVudE5hbWUoVmFsdWVFcnJvcik6CiAgICAiIiIKICAgIEEgbmFtZSB3YXMgYXR0ZW1wdGVkIHRvIGJlIHVzZWQgdGhhdCBkb2VzIG5vdCBleGlzdCBpbnNpZGUgb2YgdGhlCiAgICBlbnZpcm9ubWVudC4KICAgICIiIgoKCmRlZiBfbm9ybWFsaXplX2V4dHJhX3ZhbHVlcyhyZXN1bHRzOiBBbnkpIC0+IEFueToKICAgICIiIgogICAgTm9ybWFsaXplIGV4dHJhIHZhbHVlcy4KICAgICIiIgogICAgaWYgaXNpbnN0YW5jZShyZXN1bHRzWzBdLCB0dXBsZSk6CiAgICAgICAgbGhzLCBvcCwgcmhzID0gcmVzdWx0c1swXQogICAgICAgIGlmIGlzaW5zdGFuY2UobGhzLCBWYXJpYWJsZSkgYW5kIGxocy52YWx1ZSA9PSAiZXh0cmEiOgogICAgICAgICAgICBub3JtYWxpemVkX2V4dHJhID0gY2Fub25pY2FsaXplX25hbWUocmhzLnZhbHVlKQogICAgICAgICAgICByaHMgPSBWYWx1ZShub3JtYWxpemVkX2V4dHJhKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShyaHMsIFZhcmlhYmxlKSBhbmQgcmhzLnZhbHVlID09ICJleHRyYSI6CiAgICAgICAgICAgIG5vcm1hbGl6ZWRfZXh0cmEgPSBjYW5vbmljYWxpemVfbmFtZShsaHMudmFsdWUpCiAgICAgICAgICAgIGxocyA9IFZhbHVlKG5vcm1hbGl6ZWRfZXh0cmEpCiAgICAgICAgcmVzdWx0c1swXSA9IGxocywgb3AsIHJocwogICAgcmV0dXJuIHJlc3VsdHMKCgpkZWYgX2Zvcm1hdF9tYXJrZXIoCiAgICBtYXJrZXI6IFVuaW9uW0xpc3Rbc3RyXSwgTWFya2VyQXRvbSwgc3RyXSwgZmlyc3Q6IE9wdGlvbmFsW2Jvb2xdID0gVHJ1ZQopIC0+IHN0cjoKCiAgICBhc3NlcnQgaXNpbnN0YW5jZShtYXJrZXIsIChsaXN0LCB0dXBsZSwgc3RyKSkKCiAgICAjIFNvbWV0aW1lcyB3ZSBoYXZlIGEgc3RydWN0dXJlIGxpa2UgW1suLi5dXSB3aGljaCBpcyBhIHNpbmdsZSBpdGVtIGxpc3QKICAgICMgd2hlcmUgdGhlIHNpbmdsZSBpdGVtIGlzIGl0c2VsZiBpdCdzIG93biBsaXN0LiBJbiB0aGF0IGNhc2Ugd2Ugd2FudCBza2lwCiAgICAjIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBnZXQgZXh0cmFuZW91cyAoKSBvbiB0aGUKICAgICMgb3V0c2lkZS4KICAgIGlmICgKICAgICAgICBpc2luc3RhbmNlKG1hcmtlciwgbGlzdCkKICAgICAgICBhbmQgbGVuKG1hcmtlcikgPT0gMQogICAgICAgIGFuZCBpc2luc3RhbmNlKG1hcmtlclswXSwgKGxpc3QsIHR1cGxlKSkKICAgICk6CiAgICAgICAgcmV0dXJuIF9mb3JtYXRfbWFya2VyKG1hcmtlclswXSkKCiAgICBpZiBpc2luc3RhbmNlKG1hcmtlciwgbGlzdCk6CiAgICAgICAgaW5uZXIgPSAoX2Zvcm1hdF9tYXJrZXIobSwgZmlyc3Q9RmFsc2UpIGZvciBtIGluIG1hcmtlcikKICAgICAgICBpZiBmaXJzdDoKICAgICAgICAgICAgcmV0dXJuICIgIi5qb2luKGlubmVyKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAiKCIgKyAiICIuam9pbihpbm5lcikgKyAiKSIKICAgIGVsaWYgaXNpbnN0YW5jZShtYXJrZXIsIHR1cGxlKToKICAgICAgICByZXR1cm4gIiAiLmpvaW4oW20uc2VyaWFsaXplKCkgZm9yIG0gaW4gbWFya2VyXSkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIG1hcmtlcgoKCl9vcGVyYXRvcnM6IERpY3Rbc3RyLCBPcGVyYXRvcl0gPSB7CiAgICAiaW4iOiBsYW1iZGEgbGhzLCByaHM6IGxocyBpbiByaHMsCiAgICAibm90IGluIjogbGFtYmRhIGxocywgcmhzOiBsaHMgbm90IGluIHJocywKICAgICI8Ijogb3BlcmF0b3IubHQsCiAgICAiPD0iOiBvcGVyYXRvci5sZSwKICAgICI9PSI6IG9wZXJhdG9yLmVxLAogICAgIiE9Ijogb3BlcmF0b3IubmUsCiAgICAiPj0iOiBvcGVyYXRvci5nZSwKICAgICI+Ijogb3BlcmF0b3IuZ3QsCn0KCgpkZWYgX2V2YWxfb3AobGhzOiBzdHIsIG9wOiBPcCwgcmhzOiBzdHIpIC0+IGJvb2w6CiAgICB0cnk6CiAgICAgICAgc3BlYyA9IFNwZWNpZmllcigiIi5qb2luKFtvcC5zZXJpYWxpemUoKSwgcmhzXSkpCiAgICBleGNlcHQgSW52YWxpZFNwZWNpZmllcjoKICAgICAgICBwYXNzCiAgICBlbHNlOgogICAgICAgIHJldHVybiBzcGVjLmNvbnRhaW5zKGxocywgcHJlcmVsZWFzZXM9VHJ1ZSkKCiAgICBvcGVyOiBPcHRpb25hbFtPcGVyYXRvcl0gPSBfb3BlcmF0b3JzLmdldChvcC5zZXJpYWxpemUoKSkKICAgIGlmIG9wZXIgaXMgTm9uZToKICAgICAgICByYWlzZSBVbmRlZmluZWRDb21wYXJpc29uKGYiVW5kZWZpbmVkIHtvcCFyfSBvbiB7bGhzIXJ9IGFuZCB7cmhzIXJ9LiIpCgogICAgcmV0dXJuIG9wZXIobGhzLCByaHMpCgoKZGVmIF9ub3JtYWxpemUoKnZhbHVlczogc3RyLCBrZXk6IHN0cikgLT4gVHVwbGVbc3RyLCAuLi5dOgogICAgIyBQRVAgNjg1IOKAkyBDb21wYXJpc29uIG9mIGV4dHJhIG5hbWVzIGZvciBvcHRpb25hbCBkaXN0cmlidXRpb24gZGVwZW5kZW5jaWVzCiAgICAjIGh0dHBzOi8vcGVwcy5weXRob24ub3JnL3BlcC0wNjg1LwogICAgIyA+IFdoZW4gY29tcGFyaW5nIGV4dHJhIG5hbWVzLCB0b29scyBNVVNUIG5vcm1hbGl6ZSB0aGUgbmFtZXMgYmVpbmcKICAgICMgPiBjb21wYXJlZCB1c2luZyB0aGUgc2VtYW50aWNzIG91dGxpbmVkIGluIFBFUCA1MDMgZm9yIG5hbWVzCiAgICBpZiBrZXkgPT0gImV4dHJhIjoKICAgICAgICByZXR1cm4gdHVwbGUoY2Fub25pY2FsaXplX25hbWUodikgZm9yIHYgaW4gdmFsdWVzKQoKICAgICMgb3RoZXIgZW52aXJvbm1lbnQgbWFya2VycyBkb24ndCBoYXZlIHN1Y2ggc3RhbmRhcmRzCiAgICByZXR1cm4gdmFsdWVzCgoKZGVmIF9ldmFsdWF0ZV9tYXJrZXJzKG1hcmtlcnM6IE1hcmtlckxpc3QsIGVudmlyb25tZW50OiBEaWN0W3N0ciwgc3RyXSkgLT4gYm9vbDoKICAgIGdyb3VwczogTGlzdFtMaXN0W2Jvb2xdXSA9IFtbXV0KCiAgICBmb3IgbWFya2VyIGluIG1hcmtlcnM6CiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWFya2VyLCAobGlzdCwgdHVwbGUsIHN0cikpCgogICAgICAgIGlmIGlzaW5zdGFuY2UobWFya2VyLCBsaXN0KToKICAgICAgICAgICAgZ3JvdXBzWy0xXS5hcHBlbmQoX2V2YWx1YXRlX21hcmtlcnMobWFya2VyLCBlbnZpcm9ubWVudCkpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1hcmtlciwgdHVwbGUpOgogICAgICAgICAgICBsaHMsIG9wLCByaHMgPSBtYXJrZXIKCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGhzLCBWYXJpYWJsZSk6CiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF9rZXkgPSBsaHMudmFsdWUKICAgICAgICAgICAgICAgIGxoc192YWx1ZSA9IGVudmlyb25tZW50W2Vudmlyb25tZW50X2tleV0KICAgICAgICAgICAgICAgIHJoc192YWx1ZSA9IHJocy52YWx1ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbGhzX3ZhbHVlID0gbGhzLnZhbHVlCiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF9rZXkgPSByaHMudmFsdWUKICAgICAgICAgICAgICAgIHJoc192YWx1ZSA9IGVudmlyb25tZW50W2Vudmlyb25tZW50X2tleV0KCiAgICAgICAgICAgIGxoc192YWx1ZSwgcmhzX3ZhbHVlID0gX25vcm1hbGl6ZShsaHNfdmFsdWUsIHJoc192YWx1ZSwga2V5PWVudmlyb25tZW50X2tleSkKICAgICAgICAgICAgZ3JvdXBzWy0xXS5hcHBlbmQoX2V2YWxfb3AobGhzX3ZhbHVlLCBvcCwgcmhzX3ZhbHVlKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBhc3NlcnQgbWFya2VyIGluIFsiYW5kIiwgIm9yIl0KICAgICAgICAgICAgaWYgbWFya2VyID09ICJvciI6CiAgICAgICAgICAgICAgICBncm91cHMuYXBwZW5kKFtdKQoKICAgIHJldHVybiBhbnkoYWxsKGl0ZW0pIGZvciBpdGVtIGluIGdyb3VwcykKCgpkZWYgZm9ybWF0X2Z1bGxfdmVyc2lvbihpbmZvOiAic3lzLl92ZXJzaW9uX2luZm8iKSAtPiBzdHI6CiAgICB2ZXJzaW9uID0gInswLm1ham9yfS57MC5taW5vcn0uezAubWljcm99Ii5mb3JtYXQoaW5mbykKICAgIGtpbmQgPSBpbmZvLnJlbGVhc2VsZXZlbAogICAgaWYga2luZCAhPSAiZmluYWwiOgogICAgICAgIHZlcnNpb24gKz0ga2luZFswXSArIHN0cihpbmZvLnNlcmlhbCkKICAgIHJldHVybiB2ZXJzaW9uCgoKZGVmIGRlZmF1bHRfZW52aXJvbm1lbnQoKSAtPiBEaWN0W3N0ciwgc3RyXToKICAgIGl2ZXIgPSBmb3JtYXRfZnVsbF92ZXJzaW9uKHN5cy5pbXBsZW1lbnRhdGlvbi52ZXJzaW9uKQogICAgaW1wbGVtZW50YXRpb25fbmFtZSA9IHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lCiAgICByZXR1cm4gewogICAgICAgICJpbXBsZW1lbnRhdGlvbl9uYW1lIjogaW1wbGVtZW50YXRpb25fbmFtZSwKICAgICAgICAiaW1wbGVtZW50YXRpb25fdmVyc2lvbiI6IGl2ZXIsCiAgICAgICAgIm9zX25hbWUiOiBvcy5uYW1lLAogICAgICAgICJwbGF0Zm9ybV9tYWNoaW5lIjogcGxhdGZvcm0ubWFjaGluZSgpLAogICAgICAgICJwbGF0Zm9ybV9yZWxlYXNlIjogcGxhdGZvcm0ucmVsZWFzZSgpLAogICAgICAgICJwbGF0Zm9ybV9zeXN0ZW0iOiBwbGF0Zm9ybS5zeXN0ZW0oKSwKICAgICAgICAicGxhdGZvcm1fdmVyc2lvbiI6IHBsYXRmb3JtLnZlcnNpb24oKSwKICAgICAgICAicHl0aG9uX2Z1bGxfdmVyc2lvbiI6IHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCksCiAgICAgICAgInBsYXRmb3JtX3B5dGhvbl9pbXBsZW1lbnRhdGlvbiI6IHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLAogICAgICAgICJweXRob25fdmVyc2lvbiI6ICIuIi5qb2luKHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uX3R1cGxlKClbOjJdKSwKICAgICAgICAic3lzX3BsYXRmb3JtIjogc3lzLnBsYXRmb3JtLAogICAgfQoKCmNsYXNzIE1hcmtlcjoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXJrZXI6IHN0cikgLT4gTm9uZToKICAgICAgICAjIE5vdGU6IFdlIGNyZWF0ZSBhIE1hcmtlciBvYmplY3Qgd2l0aG91dCBjYWxsaW5nIHRoaXMgY29uc3RydWN0b3IgaW4KICAgICAgICAjICAgICAgIHBhY2thZ2luZy5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQuIElmIGFueSBhZGRpdGlvbmFsIGxvZ2ljIGlzCiAgICAgICAgIyAgICAgICBhZGRlZCBoZXJlLCBtYWtlIHN1cmUgdG8gbWlycm9yL2FkYXB0IFJlcXVpcmVtZW50LgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fbWFya2VycyA9IF9ub3JtYWxpemVfZXh0cmFfdmFsdWVzKHBhcnNlX21hcmtlcihtYXJrZXIpKQogICAgICAgICAgICAjIFRoZSBhdHRyaWJ1dGUgYF9tYXJrZXJzYCBjYW4gYmUgZGVzY3JpYmVkIGluIHRlcm1zIG9mIGEgcmVjdXJzaXZlIHR5cGU6CiAgICAgICAgICAgICMgTWFya2VyTGlzdCA9IExpc3RbVW5pb25bVHVwbGVbTm9kZSwgLi4uXSwgc3RyLCBNYXJrZXJMaXN0XV0KICAgICAgICAgICAgIwogICAgICAgICAgICAjIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb246CiAgICAgICAgICAgICMgcHl0aG9uX3ZlcnNpb24gPiAiMy42IiBvciAocHl0aG9uX3ZlcnNpb24gPT0gIjMuNiIgYW5kIG9zX25hbWUgPT0gInVuaXgiKQogICAgICAgICAgICAjCiAgICAgICAgICAgICMgaXMgcGFyc2VkIGludG86CiAgICAgICAgICAgICMgWwogICAgICAgICAgICAjICAgICAoPFZhcmlhYmxlKCdweXRob25fdmVyc2lvbicpPiwgPE9wKCc+Jyk+LCA8VmFsdWUoJzMuNicpPiksCiAgICAgICAgICAgICMgICAgICdhbmQnLAogICAgICAgICAgICAjICAgICBbCiAgICAgICAgICAgICMgICAgICAgICAoPFZhcmlhYmxlKCdweXRob25fdmVyc2lvbicpPiwgPE9wKCc9PScpPiwgPFZhbHVlKCczLjYnKT4pLAogICAgICAgICAgICAjICAgICAgICAgJ29yJywKICAgICAgICAgICAgIyAgICAgICAgICg8VmFyaWFibGUoJ29zX25hbWUnKT4sIDxPcCgnPT0nKT4sIDxWYWx1ZSgndW5peCcpPikKICAgICAgICAgICAgIyAgICAgXQogICAgICAgICAgICAjIF0KICAgICAgICBleGNlcHQgUGFyc2VyU3ludGF4RXJyb3IgYXMgZToKICAgICAgICAgICAgcmFpc2UgSW52YWxpZE1hcmtlcihzdHIoZSkpIGZyb20gZQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICByZXR1cm4gX2Zvcm1hdF9tYXJrZXIoc2VsZi5fbWFya2VycykKCiAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiBmIjxNYXJrZXIoJ3tzZWxmfScpPiIKCiAgICBkZWYgX19oYXNoX18oc2VsZikgLT4gaW50OgogICAgICAgIHJldHVybiBoYXNoKChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKSkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyOiBBbnkpIC0+IGJvb2w6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIE1hcmtlcik6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICAgICByZXR1cm4gc3RyKHNlbGYpID09IHN0cihvdGhlcikKCiAgICBkZWYgZXZhbHVhdGUoc2VsZiwgZW52aXJvbm1lbnQ6IE9wdGlvbmFsW0RpY3Rbc3RyLCBzdHJdXSA9IE5vbmUpIC0+IGJvb2w6CiAgICAgICAgIiIiRXZhbHVhdGUgYSBtYXJrZXIuCgogICAgICAgIFJldHVybiB0aGUgYm9vbGVhbiBmcm9tIGV2YWx1YXRpbmcgdGhlIGdpdmVuIG1hcmtlciBhZ2FpbnN0IHRoZQogICAgICAgIGVudmlyb25tZW50LiBlbnZpcm9ubWVudCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCB0byBvdmVycmlkZSBhbGwgb3IKICAgICAgICBwYXJ0IG9mIHRoZSBkZXRlcm1pbmVkIGVudmlyb25tZW50LgoKICAgICAgICBUaGUgZW52aXJvbm1lbnQgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBjdXJyZW50IFB5dGhvbiBwcm9jZXNzLgogICAgICAgICIiIgogICAgICAgIGN1cnJlbnRfZW52aXJvbm1lbnQgPSBkZWZhdWx0X2Vudmlyb25tZW50KCkKICAgICAgICBjdXJyZW50X2Vudmlyb25tZW50WyJleHRyYSJdID0gIiIKICAgICAgICBpZiBlbnZpcm9ubWVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgY3VycmVudF9lbnZpcm9ubWVudC51cGRhdGUoZW52aXJvbm1lbnQpCiAgICAgICAgICAgICMgVGhlIEFQSSB1c2VkIHRvIGFsbG93IHNldHRpbmcgZXh0cmEgdG8gTm9uZS4gV2UgbmVlZCB0byBoYW5kbGUgdGhpcwogICAgICAgICAgICAjIGNhc2UgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogICAgICAgICAgICBpZiBjdXJyZW50X2Vudmlyb25tZW50WyJleHRyYSJdIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBjdXJyZW50X2Vudmlyb25tZW50WyJleHRyYSJdID0gIiIKCiAgICAgICAgcmV0dXJuIF9ldmFsdWF0ZV9tYXJrZXJzKHNlbGYuX21hcmtlcnMsIGN1cnJlbnRfZW52aXJvbm1lbnQpClBLAwQUAAAAAAC6K6NWAAAAAAAAAAAAAAAAEgAAAHBhY2thZ2luZy9weS50eXBlZFBLAwQUAAAAAAC6K6NWE2Ox28AMAADADAAAGQAAAHBhY2thZ2luZy9yZXF1aXJlbWVudHMucHkjIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24KIyAyLjAsIGFuZCB0aGUgQlNEIExpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoaXMgcmVwb3NpdG9yeQojIGZvciBjb21wbGV0ZSBkZXRhaWxzLgoKaW1wb3J0IHVybGxpYi5wYXJzZQpmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBMaXN0LCBPcHRpb25hbCwgU2V0Cgpmcm9tIC5fcGFyc2VyIGltcG9ydCBwYXJzZV9yZXF1aXJlbWVudApmcm9tIC5fdG9rZW5pemVyIGltcG9ydCBQYXJzZXJTeW50YXhFcnJvcgpmcm9tIC5tYXJrZXJzIGltcG9ydCBNYXJrZXIsIF9ub3JtYWxpemVfZXh0cmFfdmFsdWVzCmZyb20gLnNwZWNpZmllcnMgaW1wb3J0IFNwZWNpZmllclNldAoKCmNsYXNzIEludmFsaWRSZXF1aXJlbWVudChWYWx1ZUVycm9yKToKICAgICIiIgogICAgQW4gaW52YWxpZCByZXF1aXJlbWVudCB3YXMgZm91bmQsIHVzZXJzIHNob3VsZCByZWZlciB0byBQRVAgNTA4LgogICAgIiIiCgoKY2xhc3MgUmVxdWlyZW1lbnQ6CiAgICAiIiJQYXJzZSBhIHJlcXVpcmVtZW50LgoKICAgIFBhcnNlIGEgZ2l2ZW4gcmVxdWlyZW1lbnQgc3RyaW5nIGludG8gaXRzIHBhcnRzLCBzdWNoIGFzIG5hbWUsIHNwZWNpZmllciwKICAgIFVSTCwgYW5kIGV4dHJhcy4gUmFpc2VzIEludmFsaWRSZXF1aXJlbWVudCBvbiBhIGJhZGx5LWZvcm1lZCByZXF1aXJlbWVudAogICAgc3RyaW5nLgogICAgIiIiCgogICAgIyBUT0RPOiBDYW4gd2UgdGVzdCB3aGV0aGVyIHNvbWV0aGluZyBpcyBjb250YWluZWQgd2l0aGluIGEgcmVxdWlyZW1lbnQ/CiAgICAjICAgICAgIElmIHNvIGhvdyBkbyB3ZSBkbyB0aGF0PyBEbyB3ZSBuZWVkIHRvIHRlc3QgYWdhaW5zdCB0aGUgX25hbWVfIG9mCiAgICAjICAgICAgIHRoZSB0aGluZyBhcyB3ZWxsIGFzIHRoZSB2ZXJzaW9uPyBXaGF0IGFib3V0IHRoZSBtYXJrZXJzPwogICAgIyBUT0RPOiBDYW4gd2Ugbm9ybWFsaXplIHRoZSBuYW1lIGFuZCBleHRyYSBuYW1lPwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1aXJlbWVudF9zdHJpbmc6IHN0cikgLT4gTm9uZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhcnNlZCA9IHBhcnNlX3JlcXVpcmVtZW50KHJlcXVpcmVtZW50X3N0cmluZykKICAgICAgICBleGNlcHQgUGFyc2VyU3ludGF4RXJyb3IgYXMgZToKICAgICAgICAgICAgcmFpc2UgSW52YWxpZFJlcXVpcmVtZW50KHN0cihlKSkgZnJvbSBlCgogICAgICAgIHNlbGYubmFtZTogc3RyID0gcGFyc2VkLm5hbWUKICAgICAgICBpZiBwYXJzZWQudXJsOgogICAgICAgICAgICBwYXJzZWRfdXJsID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKHBhcnNlZC51cmwpCiAgICAgICAgICAgIGlmIHBhcnNlZF91cmwuc2NoZW1lID09ICJmaWxlIjoKICAgICAgICAgICAgICAgIGlmIHVybGxpYi5wYXJzZS51cmx1bnBhcnNlKHBhcnNlZF91cmwpICE9IHBhcnNlZC51cmw6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFJlcXVpcmVtZW50KCJJbnZhbGlkIFVSTCBnaXZlbiIpCiAgICAgICAgICAgIGVsaWYgbm90IChwYXJzZWRfdXJsLnNjaGVtZSBhbmQgcGFyc2VkX3VybC5uZXRsb2MpIG9yICgKICAgICAgICAgICAgICAgIG5vdCBwYXJzZWRfdXJsLnNjaGVtZSBhbmQgbm90IHBhcnNlZF91cmwubmV0bG9jCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkUmVxdWlyZW1lbnQoZiJJbnZhbGlkIFVSTDoge3BhcnNlZC51cmx9IikKICAgICAgICAgICAgc2VsZi51cmw6IE9wdGlvbmFsW3N0cl0gPSBwYXJzZWQudXJsCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi51cmwgPSBOb25lCiAgICAgICAgc2VsZi5leHRyYXM6IFNldFtzdHJdID0gc2V0KHBhcnNlZC5leHRyYXMgaWYgcGFyc2VkLmV4dHJhcyBlbHNlIFtdKQogICAgICAgIHNlbGYuc3BlY2lmaWVyOiBTcGVjaWZpZXJTZXQgPSBTcGVjaWZpZXJTZXQocGFyc2VkLnNwZWNpZmllcikKICAgICAgICBzZWxmLm1hcmtlcjogT3B0aW9uYWxbTWFya2VyXSA9IE5vbmUKICAgICAgICBpZiBwYXJzZWQubWFya2VyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLm1hcmtlciA9IE1hcmtlci5fX25ld19fKE1hcmtlcikKICAgICAgICAgICAgc2VsZi5tYXJrZXIuX21hcmtlcnMgPSBfbm9ybWFsaXplX2V4dHJhX3ZhbHVlcyhwYXJzZWQubWFya2VyKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICBwYXJ0czogTGlzdFtzdHJdID0gW3NlbGYubmFtZV0KCiAgICAgICAgaWYgc2VsZi5leHRyYXM6CiAgICAgICAgICAgIGZvcm1hdHRlZF9leHRyYXMgPSAiLCIuam9pbihzb3J0ZWQoc2VsZi5leHRyYXMpKQogICAgICAgICAgICBwYXJ0cy5hcHBlbmQoZiJbe2Zvcm1hdHRlZF9leHRyYXN9XSIpCgogICAgICAgIGlmIHNlbGYuc3BlY2lmaWVyOgogICAgICAgICAgICBwYXJ0cy5hcHBlbmQoc3RyKHNlbGYuc3BlY2lmaWVyKSkKCiAgICAgICAgaWYgc2VsZi51cmw6CiAgICAgICAgICAgIHBhcnRzLmFwcGVuZChmIkAge3NlbGYudXJsfSIpCiAgICAgICAgICAgIGlmIHNlbGYubWFya2VyOgogICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKCIgIikKCiAgICAgICAgaWYgc2VsZi5tYXJrZXI6CiAgICAgICAgICAgIHBhcnRzLmFwcGVuZChmIjsge3NlbGYubWFya2VyfSIpCgogICAgICAgIHJldHVybiAiIi5qb2luKHBhcnRzKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgcmV0dXJuIGYiPFJlcXVpcmVtZW50KCd7c2VsZn0nKT4iCgogICAgZGVmIF9faGFzaF9fKHNlbGYpIC0+IGludDoKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN0cihzZWxmKSkpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogQW55KSAtPiBib29sOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBSZXF1aXJlbWVudCk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBzZWxmLm5hbWUgPT0gb3RoZXIubmFtZQogICAgICAgICAgICBhbmQgc2VsZi5leHRyYXMgPT0gb3RoZXIuZXh0cmFzCiAgICAgICAgICAgIGFuZCBzZWxmLnNwZWNpZmllciA9PSBvdGhlci5zcGVjaWZpZXIKICAgICAgICAgICAgYW5kIHNlbGYudXJsID09IG90aGVyLnVybAogICAgICAgICAgICBhbmQgc2VsZi5tYXJrZXIgPT0gb3RoZXIubWFya2VyCiAgICAgICAgKQpQSwMEFAAAAAAAuiujVk7pmMGGmAAAhpgAABcAAABwYWNrYWdpbmcvc3BlY2lmaWVycy5weSMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgojIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CiMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCiIiIgouLiB0ZXN0c2V0dXA6OgoKICAgIGZyb20gcGFja2FnaW5nLnNwZWNpZmllcnMgaW1wb3J0IFNwZWNpZmllciwgU3BlY2lmaWVyU2V0LCBJbnZhbGlkU3BlY2lmaWVyCiAgICBmcm9tIHBhY2thZ2luZy52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCiIiIgoKaW1wb3J0IGFiYwppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCByZQpmcm9tIHR5cGluZyBpbXBvcnQgKAogICAgQ2FsbGFibGUsCiAgICBJdGVyYWJsZSwKICAgIEl0ZXJhdG9yLAogICAgTGlzdCwKICAgIE9wdGlvbmFsLAogICAgU2V0LAogICAgVHVwbGUsCiAgICBUeXBlVmFyLAogICAgVW5pb24sCikKCmZyb20gLnV0aWxzIGltcG9ydCBjYW5vbmljYWxpemVfdmVyc2lvbgpmcm9tIC52ZXJzaW9uIGltcG9ydCBWZXJzaW9uCgpVbnBhcnNlZFZlcnNpb24gPSBVbmlvbltWZXJzaW9uLCBzdHJdClVucGFyc2VkVmVyc2lvblZhciA9IFR5cGVWYXIoIlVucGFyc2VkVmVyc2lvblZhciIsIGJvdW5kPVVucGFyc2VkVmVyc2lvbikKQ2FsbGFibGVPcGVyYXRvciA9IENhbGxhYmxlW1tWZXJzaW9uLCBzdHJdLCBib29sXQoKCmRlZiBfY29lcmNlX3ZlcnNpb24odmVyc2lvbjogVW5wYXJzZWRWZXJzaW9uKSAtPiBWZXJzaW9uOgogICAgaWYgbm90IGlzaW5zdGFuY2UodmVyc2lvbiwgVmVyc2lvbik6CiAgICAgICAgdmVyc2lvbiA9IFZlcnNpb24odmVyc2lvbikKICAgIHJldHVybiB2ZXJzaW9uCgoKY2xhc3MgSW52YWxpZFNwZWNpZmllcihWYWx1ZUVycm9yKToKICAgICIiIgogICAgUmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0byBjcmVhdGUgYSA6Y2xhc3M6YFNwZWNpZmllcmAgd2l0aCBhIHNwZWNpZmllcgogICAgc3RyaW5nIHRoYXQgaXMgaW52YWxpZC4KCiAgICA+Pj4gU3BlY2lmaWVyKCJsb2x3YXQiKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgIC4uLgogICAgcGFja2FnaW5nLnNwZWNpZmllcnMuSW52YWxpZFNwZWNpZmllcjogSW52YWxpZCBzcGVjaWZpZXI6ICdsb2x3YXQnCiAgICAiIiIKCgpjbGFzcyBCYXNlU3BlY2lmaWVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJucyB0aGUgc3RyIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgU3BlY2lmaWVyLWxpa2Ugb2JqZWN0LiBUaGlzCiAgICAgICAgc2hvdWxkIGJlIHJlcHJlc2VudGF0aXZlIG9mIHRoZSBTcGVjaWZpZXIgaXRzZWxmLgogICAgICAgICIiIgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2hhc2hfXyhzZWxmKSAtPiBpbnQ6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJucyBhIGhhc2ggdmFsdWUgZm9yIHRoaXMgU3BlY2lmaWVyLWxpa2Ugb2JqZWN0LgogICAgICAgICIiIgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICAiIiIKICAgICAgICBSZXR1cm5zIGEgYm9vbGVhbiByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhlIHR3byBTcGVjaWZpZXItbGlrZQogICAgICAgIG9iamVjdHMgYXJlIGVxdWFsLgoKICAgICAgICA6cGFyYW0gb3RoZXI6IFRoZSBvdGhlciBvYmplY3QgdG8gY2hlY2sgYWdhaW5zdC4KICAgICAgICAiIiIKCiAgICBAcHJvcGVydHkKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBwcmVyZWxlYXNlcyhzZWxmKSAtPiBPcHRpb25hbFtib29sXToKICAgICAgICAiIiJXaGV0aGVyIG9yIG5vdCBwcmUtcmVsZWFzZXMgYXMgYSB3aG9sZSBhcmUgYWxsb3dlZC4KCiAgICAgICAgVGhpcyBjYW4gYmUgc2V0IHRvIGVpdGhlciBgYFRydWVgYCBvciBgYEZhbHNlYGAgdG8gZXhwbGljaXRseSBlbmFibGUgb3IgZGlzYWJsZQogICAgICAgIHByZXJlbGVhc2VzIG9yIGl0IGNhbiBiZSBzZXQgdG8gYGBOb25lYGAgKHRoZSBkZWZhdWx0KSB0byB1c2UgZGVmYXVsdCBzZW1hbnRpY3MuCiAgICAgICAgIiIiCgogICAgQHByZXJlbGVhc2VzLnNldHRlcgogICAgZGVmIHByZXJlbGVhc2VzKHNlbGYsIHZhbHVlOiBib29sKSAtPiBOb25lOgogICAgICAgICIiIlNldHRlciBmb3IgOmF0dHI6YHByZXJlbGVhc2VzYC4KCiAgICAgICAgOnBhcmFtIHZhbHVlOiBUaGUgdmFsdWUgdG8gc2V0LgogICAgICAgICIiIgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBjb250YWlucyhzZWxmLCBpdGVtOiBzdHIsIHByZXJlbGVhc2VzOiBPcHRpb25hbFtib29sXSA9IE5vbmUpIC0+IGJvb2w6CiAgICAgICAgIiIiCiAgICAgICAgRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gaXRlbSBpcyBjb250YWluZWQgd2l0aGluIHRoaXMgc3BlY2lmaWVyLgogICAgICAgICIiIgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBmaWx0ZXIoCiAgICAgICAgc2VsZiwgaXRlcmFibGU6IEl0ZXJhYmxlW1VucGFyc2VkVmVyc2lvblZhcl0sIHByZXJlbGVhc2VzOiBPcHRpb25hbFtib29sXSA9IE5vbmUKICAgICkgLT4gSXRlcmF0b3JbVW5wYXJzZWRWZXJzaW9uVmFyXToKICAgICAgICAiIiIKICAgICAgICBUYWtlcyBhbiBpdGVyYWJsZSBvZiBpdGVtcyBhbmQgZmlsdGVycyB0aGVtIHNvIHRoYXQgb25seSBpdGVtcyB3aGljaAogICAgICAgIGFyZSBjb250YWluZWQgd2l0aGluIHRoaXMgc3BlY2lmaWVyIGFyZSBhbGxvd2VkIGluIGl0LgogICAgICAgICIiIgoKCmNsYXNzIFNwZWNpZmllcihCYXNlU3BlY2lmaWVyKToKICAgICIiIlRoaXMgY2xhc3MgYWJzdHJhY3RzIGhhbmRsaW5nIG9mIHZlcnNpb24gc3BlY2lmaWVycy4KCiAgICAuLiB0aXA6OgoKICAgICAgICBJdCBpcyBnZW5lcmFsbHkgbm90IHJlcXVpcmVkIHRvIGluc3RhbnRpYXRlIHRoaXMgbWFudWFsbHkuIFlvdSBzaG91bGQgaW5zdGVhZAogICAgICAgIHByZWZlciB0byB3b3JrIHdpdGggOmNsYXNzOmBTcGVjaWZpZXJTZXRgIGluc3RlYWQsIHdoaWNoIGNhbiBwYXJzZQogICAgICAgIGNvbW1hLXNlcGFyYXRlZCB2ZXJzaW9uIHNwZWNpZmllcnMgKHdoaWNoIGlzIHdoYXQgcGFja2FnZSBtZXRhZGF0YSBjb250YWlucykuCiAgICAiIiIKCiAgICBfb3BlcmF0b3JfcmVnZXhfc3RyID0gciIiIgogICAgICAgICg/UDxvcGVyYXRvcj4ofj18PT18IT18PD18Pj18PHw+fD09PSkpCiAgICAgICAgIiIiCiAgICBfdmVyc2lvbl9yZWdleF9zdHIgPSByIiIiCiAgICAgICAgKD9QPHZlcnNpb24+CiAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgIyBUaGUgaWRlbnRpdHkgb3BlcmF0b3JzIGFsbG93IGZvciBhbiBlc2NhcGUgaGF0Y2ggdGhhdCB3aWxsCiAgICAgICAgICAgICAgICAjIGRvIGFuIGV4YWN0IHN0cmluZyBtYXRjaCBvZiB0aGUgdmVyc2lvbiB5b3Ugd2lzaCB0byBpbnN0YWxsLgogICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgbm90IGJlIHBhcnNlZCBieSBQRVAgNDQwIGFuZCB3ZSBjYW5ub3QgZGV0ZXJtaW5lCiAgICAgICAgICAgICAgICAjIGFueSBzZW1hbnRpYyBtZWFuaW5nIGZyb20gaXQuIFRoaXMgb3BlcmF0b3IgaXMgZGlzY291cmFnZWQKICAgICAgICAgICAgICAgICMgYnV0IGluY2x1ZGVkIGVudGlyZWx5IGFzIGFuIGVzY2FwZSBoYXRjaC4KICAgICAgICAgICAgICAgICg/PD09PT0pICAjIE9ubHkgbWF0Y2ggZm9yIHRoZSBpZGVudGl0eSBvcGVyYXRvcgogICAgICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICAgICBbXlxzOyldKiAgIyBUaGUgYXJiaXRyYXJ5IHZlcnNpb24gY2FuIGJlIGp1c3QgYWJvdXQgYW55dGhpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBtYXRjaCBldmVyeXRoaW5nIGV4Y2VwdCBmb3Igd2hpdGVzcGFjZSwgYQogICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VtaS1jb2xvbiBmb3IgbWFya2VyIHN1cHBvcnQsIGFuZCBhIGNsb3NpbmcgcGFyZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNpbmNlIHZlcnNpb25zIGNhbiBiZSBlbmNsb3NlZCBpbiB0aGVtLgogICAgICAgICAgICApCiAgICAgICAgICAgIHwKICAgICAgICAgICAgKD86CiAgICAgICAgICAgICAgICAjIFRoZSAobm9uKWVxdWFsaXR5IG9wZXJhdG9ycyBhbGxvdyBmb3Igd2lsZCBjYXJkIGFuZCBsb2NhbAogICAgICAgICAgICAgICAgIyB2ZXJzaW9ucyB0byBiZSBzcGVjaWZpZWQgc28gd2UgaGF2ZSB0byBkZWZpbmUgdGhlc2UgdHdvCiAgICAgICAgICAgICAgICAjIG9wZXJhdG9ycyBzZXBhcmF0ZWx5IHRvIGVuYWJsZSB0aGF0LgogICAgICAgICAgICAgICAgKD88PT09fCE9KSAgICAgICAgICAgICMgT25seSBtYXRjaCBmb3IgZXF1YWxzIGFuZCBub3QgZXF1YWxzCgogICAgICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICAgICB2PwogICAgICAgICAgICAgICAgKD86WzAtOV0rISk/ICAgICAgICAgICMgZXBvY2gKICAgICAgICAgICAgICAgIFswLTldKyg/OlwuWzAtOV0rKSogICAjIHJlbGVhc2UKCiAgICAgICAgICAgICAgICAjIFlvdSBjYW5ub3QgdXNlIGEgd2lsZCBjYXJkIGFuZCBhIHByZS1yZWxlYXNlLCBwb3N0LXJlbGVhc2UsIGEgZGV2IG9yCiAgICAgICAgICAgICAgICAjIGxvY2FsIHZlcnNpb24gdG9nZXRoZXIgc28gZ3JvdXAgdGhlbSB3aXRoIGEgfCBhbmQgbWFrZSB0aGVtIG9wdGlvbmFsLgogICAgICAgICAgICAgICAgKD86CiAgICAgICAgICAgICAgICAgICAgXC5cKiAgIyBXaWxkIGNhcmQgc3ludGF4IG9mIC4qCiAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgICAgICg/OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByZSByZWxlYXNlCiAgICAgICAgICAgICAgICAgICAgICAgIFstX1wuXT8KICAgICAgICAgICAgICAgICAgICAgICAgKGFscGhhfGJldGF8cHJldmlld3xwcmV8YXxifGN8cmMpCiAgICAgICAgICAgICAgICAgICAgICAgIFstX1wuXT8KICAgICAgICAgICAgICAgICAgICAgICAgWzAtOV0qCiAgICAgICAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgICAgICAgICAoPzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3N0IHJlbGVhc2UKICAgICAgICAgICAgICAgICAgICAgICAgKD86LVswLTldKyl8KD86Wy1fXC5dPyhwb3N0fHJldnxyKVstX1wuXT9bMC05XSopCiAgICAgICAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgICAgICAgICAoPzpbLV9cLl0/ZGV2Wy1fXC5dP1swLTldKik/ICAgICAgICAgIyBkZXYgcmVsZWFzZQogICAgICAgICAgICAgICAgICAgICg/OlwrW2EtejAtOV0rKD86Wy1fXC5dW2EtejAtOV0rKSopPyAjIGxvY2FsCiAgICAgICAgICAgICAgICApPwogICAgICAgICAgICApCiAgICAgICAgICAgIHwKICAgICAgICAgICAgKD86CiAgICAgICAgICAgICAgICAjIFRoZSBjb21wYXRpYmxlIG9wZXJhdG9yIHJlcXVpcmVzIGF0IGxlYXN0IHR3byBkaWdpdHMgaW4gdGhlCiAgICAgICAgICAgICAgICAjIHJlbGVhc2Ugc2VnbWVudC4KICAgICAgICAgICAgICAgICg/PD1+PSkgICAgICAgICAgICAgICAjIE9ubHkgbWF0Y2ggZm9yIHRoZSBjb21wYXRpYmxlIG9wZXJhdG9yCgogICAgICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICAgICB2PwogICAgICAgICAgICAgICAgKD86WzAtOV0rISk/ICAgICAgICAgICMgZXBvY2gKICAgICAgICAgICAgICAgIFswLTldKyg/OlwuWzAtOV0rKSsgICAjIHJlbGVhc2UgIChXZSBoYXZlIGEgKyBpbnN0ZWFkIG9mIGEgKikKICAgICAgICAgICAgICAgICg/OiAgICAgICAgICAgICAgICAgICAjIHByZSByZWxlYXNlCiAgICAgICAgICAgICAgICAgICAgWy1fXC5dPwogICAgICAgICAgICAgICAgICAgIChhbHBoYXxiZXRhfHByZXZpZXd8cHJlfGF8YnxjfHJjKQogICAgICAgICAgICAgICAgICAgIFstX1wuXT8KICAgICAgICAgICAgICAgICAgICBbMC05XSoKICAgICAgICAgICAgICAgICk/CiAgICAgICAgICAgICAgICAoPzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9zdCByZWxlYXNlCiAgICAgICAgICAgICAgICAgICAgKD86LVswLTldKyl8KD86Wy1fXC5dPyhwb3N0fHJldnxyKVstX1wuXT9bMC05XSopCiAgICAgICAgICAgICAgICApPwogICAgICAgICAgICAgICAgKD86Wy1fXC5dP2RldlstX1wuXT9bMC05XSopPyAgICAgICAgICAjIGRldiByZWxlYXNlCiAgICAgICAgICAgICkKICAgICAgICAgICAgfAogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgICMgQWxsIG90aGVyIG9wZXJhdG9ycyBvbmx5IGFsbG93IGEgc3ViIHNldCBvZiB3aGF0IHRoZQogICAgICAgICAgICAgICAgIyAobm9uKWVxdWFsaXR5IG9wZXJhdG9ycyBkby4gU3BlY2lmaWNhbGx5IHRoZXkgZG8gbm90IGFsbG93CiAgICAgICAgICAgICAgICAjIGxvY2FsIHZlcnNpb25zIHRvIGJlIHNwZWNpZmllZCBub3IgZG8gdGhleSBhbGxvdyB0aGUgcHJlZml4CiAgICAgICAgICAgICAgICAjIG1hdGNoaW5nIHdpbGQgY2FyZHMuCiAgICAgICAgICAgICAgICAoPzwhPT18IT18fj0pICAgICAgICAgIyBXZSBoYXZlIHNwZWNpYWwgY2FzZXMgZm9yIHRoZXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcGVyYXRvcnMgc28gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG9uJ3QgbWF0Y2ggaGVyZS4KCiAgICAgICAgICAgICAgICBccyoKICAgICAgICAgICAgICAgIHY/CiAgICAgICAgICAgICAgICAoPzpbMC05XSshKT8gICAgICAgICAgIyBlcG9jaAogICAgICAgICAgICAgICAgWzAtOV0rKD86XC5bMC05XSspKiAgICMgcmVsZWFzZQogICAgICAgICAgICAgICAgKD86ICAgICAgICAgICAgICAgICAgICMgcHJlIHJlbGVhc2UKICAgICAgICAgICAgICAgICAgICBbLV9cLl0/CiAgICAgICAgICAgICAgICAgICAgKGFscGhhfGJldGF8cHJldmlld3xwcmV8YXxifGN8cmMpCiAgICAgICAgICAgICAgICAgICAgWy1fXC5dPwogICAgICAgICAgICAgICAgICAgIFswLTldKgogICAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgICAgICg/OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3N0IHJlbGVhc2UKICAgICAgICAgICAgICAgICAgICAoPzotWzAtOV0rKXwoPzpbLV9cLl0/KHBvc3R8cmV2fHIpWy1fXC5dP1swLTldKikKICAgICAgICAgICAgICAgICk/CiAgICAgICAgICAgICAgICAoPzpbLV9cLl0/ZGV2Wy1fXC5dP1swLTldKik/ICAgICAgICAgICMgZGV2IHJlbGVhc2UKICAgICAgICAgICAgKQogICAgICAgICkKICAgICAgICAiIiIKCiAgICBfcmVnZXggPSByZS5jb21waWxlKAogICAgICAgIHIiXlxzKiIgKyBfb3BlcmF0b3JfcmVnZXhfc3RyICsgX3ZlcnNpb25fcmVnZXhfc3RyICsgciJccyokIiwKICAgICAgICByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSwKICAgICkKCiAgICBfb3BlcmF0b3JzID0gewogICAgICAgICJ+PSI6ICJjb21wYXRpYmxlIiwKICAgICAgICAiPT0iOiAiZXF1YWwiLAogICAgICAgICIhPSI6ICJub3RfZXF1YWwiLAogICAgICAgICI8PSI6ICJsZXNzX3RoYW5fZXF1YWwiLAogICAgICAgICI+PSI6ICJncmVhdGVyX3RoYW5fZXF1YWwiLAogICAgICAgICI8IjogImxlc3NfdGhhbiIsCiAgICAgICAgIj4iOiAiZ3JlYXRlcl90aGFuIiwKICAgICAgICAiPT09IjogImFyYml0cmFyeSIsCiAgICB9CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWM6IHN0ciA9ICIiLCBwcmVyZWxlYXNlczogT3B0aW9uYWxbYm9vbF0gPSBOb25lKSAtPiBOb25lOgogICAgICAgICIiIkluaXRpYWxpemUgYSBTcGVjaWZpZXIgaW5zdGFuY2UuCgogICAgICAgIDpwYXJhbSBzcGVjOgogICAgICAgICAgICBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgc3BlY2lmaWVyIHdoaWNoIHdpbGwgYmUgcGFyc2VkIGFuZAogICAgICAgICAgICBub3JtYWxpemVkIGJlZm9yZSB1c2UuCiAgICAgICAgOnBhcmFtIHByZXJlbGVhc2VzOgogICAgICAgICAgICBUaGlzIHRlbGxzIHRoZSBzcGVjaWZpZXIgaWYgaXQgc2hvdWxkIGFjY2VwdCBwcmVyZWxlYXNlIHZlcnNpb25zIGlmCiAgICAgICAgICAgIGFwcGxpY2FibGUgb3Igbm90LiBUaGUgZGVmYXVsdCBvZiBgYE5vbmVgYCB3aWxsIGF1dG9kZXRlY3QgaXQgZnJvbSB0aGUKICAgICAgICAgICAgZ2l2ZW4gc3BlY2lmaWVycy4KICAgICAgICA6cmFpc2VzIEludmFsaWRTcGVjaWZpZXI6CiAgICAgICAgICAgIElmIHRoZSBnaXZlbiBzcGVjaWZpZXIgaXMgaW52YWxpZCAoaS5lLiBiYWQgc3ludGF4KS4KICAgICAgICAiIiIKICAgICAgICBtYXRjaCA9IHNlbGYuX3JlZ2V4LnNlYXJjaChzcGVjKQogICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgcmFpc2UgSW52YWxpZFNwZWNpZmllcihmIkludmFsaWQgc3BlY2lmaWVyOiAne3NwZWN9JyIpCgogICAgICAgIHNlbGYuX3NwZWM6IFR1cGxlW3N0ciwgc3RyXSA9ICgKICAgICAgICAgICAgbWF0Y2guZ3JvdXAoIm9wZXJhdG9yIikuc3RyaXAoKSwKICAgICAgICAgICAgbWF0Y2guZ3JvdXAoInZlcnNpb24iKS5zdHJpcCgpLAogICAgICAgICkKCiAgICAgICAgIyBTdG9yZSB3aGV0aGVyIG9yIG5vdCB0aGlzIFNwZWNpZmllciBzaG91bGQgYWNjZXB0IHByZXJlbGVhc2VzCiAgICAgICAgc2VsZi5fcHJlcmVsZWFzZXMgPSBwcmVyZWxlYXNlcwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHByZXJlbGVhc2VzKHNlbGYpIC0+IGJvb2w6CiAgICAgICAgIyBJZiB0aGVyZSBpcyBhbiBleHBsaWNpdCBwcmVyZWxlYXNlcyBzZXQgZm9yIHRoaXMsIHRoZW4gd2UnbGwganVzdAogICAgICAgICMgYmxpbmRseSB1c2UgdGhhdC4KICAgICAgICBpZiBzZWxmLl9wcmVyZWxlYXNlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXJlbGVhc2VzCgogICAgICAgICMgTG9vayBhdCBhbGwgb2Ygb3VyIHNwZWNpZmllcnMgYW5kIGRldGVybWluZSBpZiB0aGV5IGFyZSBpbmNsdXNpdmUKICAgICAgICAjIG9wZXJhdG9ycywgYW5kIGlmIHRoZXkgYXJlIGlmIHRoZXkgYXJlIGluY2x1ZGluZyBhbiBleHBsaWNpdAogICAgICAgICMgcHJlcmVsZWFzZS4KICAgICAgICBvcGVyYXRvciwgdmVyc2lvbiA9IHNlbGYuX3NwZWMKICAgICAgICBpZiBvcGVyYXRvciBpbiBbIj09IiwgIj49IiwgIjw9IiwgIn49IiwgIj09PSJdOgogICAgICAgICAgICAjIFRoZSA9PSBzcGVjaWZpZXIgY2FuIGluY2x1ZGUgYSB0cmFpbGluZyAuKiwgaWYgaXQgZG9lcyB3ZQogICAgICAgICAgICAjIHdhbnQgdG8gcmVtb3ZlIGJlZm9yZSBwYXJzaW5nLgogICAgICAgICAgICBpZiBvcGVyYXRvciA9PSAiPT0iIGFuZCB2ZXJzaW9uLmVuZHN3aXRoKCIuKiIpOgogICAgICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25bOi0yXQoKICAgICAgICAgICAgIyBQYXJzZSB0aGUgdmVyc2lvbiwgYW5kIGlmIGl0IGlzIGEgcHJlLXJlbGVhc2UgdGhhbiB0aGlzCiAgICAgICAgICAgICMgc3BlY2lmaWVyIGFsbG93cyBwcmUtcmVsZWFzZXMuCiAgICAgICAgICAgIGlmIFZlcnNpb24odmVyc2lvbikuaXNfcHJlcmVsZWFzZToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIEBwcmVyZWxlYXNlcy5zZXR0ZXIKICAgIGRlZiBwcmVyZWxlYXNlcyhzZWxmLCB2YWx1ZTogYm9vbCkgLT4gTm9uZToKICAgICAgICBzZWxmLl9wcmVyZWxlYXNlcyA9IHZhbHVlCgogICAgQHByb3BlcnR5CiAgICBkZWYgb3BlcmF0b3Ioc2VsZikgLT4gc3RyOgogICAgICAgICIiIlRoZSBvcGVyYXRvciBvZiB0aGlzIHNwZWNpZmllci4KCiAgICAgICAgPj4+IFNwZWNpZmllcigiPT0xLjIuMyIpLm9wZXJhdG9yCiAgICAgICAgJz09JwogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zcGVjWzBdCgogICAgQHByb3BlcnR5CiAgICBkZWYgdmVyc2lvbihzZWxmKSAtPiBzdHI6CiAgICAgICAgIiIiVGhlIHZlcnNpb24gb2YgdGhpcyBzcGVjaWZpZXIuCgogICAgICAgID4+PiBTcGVjaWZpZXIoIj09MS4yLjMiKS52ZXJzaW9uCiAgICAgICAgJzEuMi4zJwogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zcGVjWzFdCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICAiIiJBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBTcGVjaWZpZXIgdGhhdCBzaG93cyBhbGwgaW50ZXJuYWwgc3RhdGUuCgogICAgICAgID4+PiBTcGVjaWZpZXIoJz49MS4wLjAnKQogICAgICAgIDxTcGVjaWZpZXIoJz49MS4wLjAnKT4KICAgICAgICA+Pj4gU3BlY2lmaWVyKCc+PTEuMC4wJywgcHJlcmVsZWFzZXM9RmFsc2UpCiAgICAgICAgPFNwZWNpZmllcignPj0xLjAuMCcsIHByZXJlbGVhc2VzPUZhbHNlKT4KICAgICAgICA+Pj4gU3BlY2lmaWVyKCc+PTEuMC4wJywgcHJlcmVsZWFzZXM9VHJ1ZSkKICAgICAgICA8U3BlY2lmaWVyKCc+PTEuMC4wJywgcHJlcmVsZWFzZXM9VHJ1ZSk+CiAgICAgICAgIiIiCiAgICAgICAgcHJlID0gKAogICAgICAgICAgICBmIiwgcHJlcmVsZWFzZXM9e3NlbGYucHJlcmVsZWFzZXMhcn0iCiAgICAgICAgICAgIGlmIHNlbGYuX3ByZXJlbGVhc2VzIGlzIG5vdCBOb25lCiAgICAgICAgICAgIGVsc2UgIiIKICAgICAgICApCgogICAgICAgIHJldHVybiBmIjx7c2VsZi5fX2NsYXNzX18uX19uYW1lX199KHtzdHIoc2VsZikhcn17cHJlfSk+IgoKICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoKICAgICAgICAiIiJBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgU3BlY2lmaWVyIHRoYXQgY2FuIGJlIHJvdW5kLXRyaXBwZWQuCgogICAgICAgID4+PiBzdHIoU3BlY2lmaWVyKCc+PTEuMC4wJykpCiAgICAgICAgJz49MS4wLjAnCiAgICAgICAgPj4+IHN0cihTcGVjaWZpZXIoJz49MS4wLjAnLCBwcmVyZWxlYXNlcz1GYWxzZSkpCiAgICAgICAgJz49MS4wLjAnCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuICJ7fXt9Ii5mb3JtYXQoKnNlbGYuX3NwZWMpCgogICAgQHByb3BlcnR5CiAgICBkZWYgX2Nhbm9uaWNhbF9zcGVjKHNlbGYpIC0+IFR1cGxlW3N0ciwgc3RyXToKICAgICAgICBjYW5vbmljYWxfdmVyc2lvbiA9IGNhbm9uaWNhbGl6ZV92ZXJzaW9uKAogICAgICAgICAgICBzZWxmLl9zcGVjWzFdLAogICAgICAgICAgICBzdHJpcF90cmFpbGluZ196ZXJvPShzZWxmLl9zcGVjWzBdICE9ICJ+PSIpLAogICAgICAgICkKICAgICAgICByZXR1cm4gc2VsZi5fc3BlY1swXSwgY2Fub25pY2FsX3ZlcnNpb24KCiAgICBkZWYgX19oYXNoX18oc2VsZikgLT4gaW50OgogICAgICAgIHJldHVybiBoYXNoKHNlbGYuX2Nhbm9uaWNhbF9zcGVjKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICAiIiJXaGV0aGVyIG9yIG5vdCB0aGUgdHdvIFNwZWNpZmllci1saWtlIG9iamVjdHMgYXJlIGVxdWFsLgoKICAgICAgICA6cGFyYW0gb3RoZXI6IFRoZSBvdGhlciBvYmplY3QgdG8gY2hlY2sgYWdhaW5zdC4KCiAgICAgICAgVGhlIHZhbHVlIG9mIDphdHRyOmBwcmVyZWxlYXNlc2AgaXMgaWdub3JlZC4KCiAgICAgICAgPj4+IFNwZWNpZmllcigiPT0xLjIuMyIpID09IFNwZWNpZmllcigiPT0gMS4yLjMuMCIpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiAoU3BlY2lmaWVyKCI9PTEuMi4zIiwgcHJlcmVsZWFzZXM9RmFsc2UpID09CiAgICAgICAgLi4uICBTcGVjaWZpZXIoIj09MS4yLjMiLCBwcmVyZWxlYXNlcz1UcnVlKSkKICAgICAgICBUcnVlCiAgICAgICAgPj4+IFNwZWNpZmllcigiPT0xLjIuMyIpID09ICI9PTEuMi4zIgogICAgICAgIFRydWUKICAgICAgICA+Pj4gU3BlY2lmaWVyKCI9PTEuMi4zIikgPT0gU3BlY2lmaWVyKCI9PTEuMi40IikKICAgICAgICBGYWxzZQogICAgICAgID4+PiBTcGVjaWZpZXIoIj09MS4yLjMiKSA9PSBTcGVjaWZpZXIoIn49MS4yLjMiKQogICAgICAgIEZhbHNlCiAgICAgICAgIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgc3RyKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgb3RoZXIgPSBzZWxmLl9fY2xhc3NfXyhzdHIob3RoZXIpKQogICAgICAgICAgICBleGNlcHQgSW52YWxpZFNwZWNpZmllcjoKICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgICAgIHJldHVybiBzZWxmLl9jYW5vbmljYWxfc3BlYyA9PSBvdGhlci5fY2Fub25pY2FsX3NwZWMKCiAgICBkZWYgX2dldF9vcGVyYXRvcihzZWxmLCBvcDogc3RyKSAtPiBDYWxsYWJsZU9wZXJhdG9yOgogICAgICAgIG9wZXJhdG9yX2NhbGxhYmxlOiBDYWxsYWJsZU9wZXJhdG9yID0gZ2V0YXR0cigKICAgICAgICAgICAgc2VsZiwgZiJfY29tcGFyZV97c2VsZi5fb3BlcmF0b3JzW29wXX0iCiAgICAgICAgKQogICAgICAgIHJldHVybiBvcGVyYXRvcl9jYWxsYWJsZQoKICAgIGRlZiBfY29tcGFyZV9jb21wYXRpYmxlKHNlbGYsIHByb3NwZWN0aXZlOiBWZXJzaW9uLCBzcGVjOiBzdHIpIC0+IGJvb2w6CgogICAgICAgICMgQ29tcGF0aWJsZSByZWxlYXNlcyBoYXZlIGFuIGVxdWl2YWxlbnQgY29tYmluYXRpb24gb2YgPj0gYW5kID09LiBUaGF0CiAgICAgICAgIyBpcyB0aGF0IH49Mi4yIGlzIGVxdWl2YWxlbnQgdG8gPj0yLjIsPT0yLiouIFRoaXMgYWxsb3dzIHVzIHRvCiAgICAgICAgIyBpbXBsZW1lbnQgdGhpcyBpbiB0ZXJtcyBvZiB0aGUgb3RoZXIgc3BlY2lmaWVycyBpbnN0ZWFkIG9mCiAgICAgICAgIyBpbXBsZW1lbnRpbmcgaXQgb3Vyc2VsdmVzLiBUaGUgb25seSB0aGluZyB3ZSBuZWVkIHRvIGRvIGlzIGNvbnN0cnVjdAogICAgICAgICMgdGhlIG90aGVyIHNwZWNpZmllcnMuCgogICAgICAgICMgV2Ugd2FudCBldmVyeXRoaW5nIGJ1dCB0aGUgbGFzdCBpdGVtIGluIHRoZSB2ZXJzaW9uLCBidXQgd2Ugd2FudCB0bwogICAgICAgICMgaWdub3JlIHN1ZmZpeCBzZWdtZW50cy4KICAgICAgICBwcmVmaXggPSAiLiIuam9pbigKICAgICAgICAgICAgbGlzdChpdGVydG9vbHMudGFrZXdoaWxlKF9pc19ub3Rfc3VmZml4LCBfdmVyc2lvbl9zcGxpdChzcGVjKSkpWzotMV0KICAgICAgICApCgogICAgICAgICMgQWRkIHRoZSBwcmVmaXggbm90YXRpb24gdG8gdGhlIGVuZCBvZiBvdXIgc3RyaW5nCiAgICAgICAgcHJlZml4ICs9ICIuKiIKCiAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9vcGVyYXRvcigiPj0iKShwcm9zcGVjdGl2ZSwgc3BlYykgYW5kIHNlbGYuX2dldF9vcGVyYXRvcigiPT0iKSgKICAgICAgICAgICAgcHJvc3BlY3RpdmUsIHByZWZpeAogICAgICAgICkKCiAgICBkZWYgX2NvbXBhcmVfZXF1YWwoc2VsZiwgcHJvc3BlY3RpdmU6IFZlcnNpb24sIHNwZWM6IHN0cikgLT4gYm9vbDoKCiAgICAgICAgIyBXZSBuZWVkIHNwZWNpYWwgbG9naWMgdG8gaGFuZGxlIHByZWZpeCBtYXRjaGluZwogICAgICAgIGlmIHNwZWMuZW5kc3dpdGgoIi4qIik6CiAgICAgICAgICAgICMgSW4gdGhlIGNhc2Ugb2YgcHJlZml4IG1hdGNoaW5nIHdlIHdhbnQgdG8gaWdub3JlIGxvY2FsIHNlZ21lbnQuCiAgICAgICAgICAgIG5vcm1hbGl6ZWRfcHJvc3BlY3RpdmUgPSBjYW5vbmljYWxpemVfdmVyc2lvbihwcm9zcGVjdGl2ZS5wdWJsaWMpCiAgICAgICAgICAgICMgR2V0IHRoZSBub3JtYWxpemVkIHZlcnNpb24gc3RyaW5nIGlnbm9yaW5nIHRoZSB0cmFpbGluZyAuKgogICAgICAgICAgICBub3JtYWxpemVkX3NwZWMgPSBjYW5vbmljYWxpemVfdmVyc2lvbihzcGVjWzotMl0sIHN0cmlwX3RyYWlsaW5nX3plcm89RmFsc2UpCiAgICAgICAgICAgICMgU3BsaXQgdGhlIHNwZWMgb3V0IGJ5IGRvdHMsIGFuZCBwcmV0ZW5kIHRoYXQgdGhlcmUgaXMgYW4gaW1wbGljaXQKICAgICAgICAgICAgIyBkb3QgaW4gYmV0d2VlbiBhIHJlbGVhc2Ugc2VnbWVudCBhbmQgYSBwcmUtcmVsZWFzZSBzZWdtZW50LgogICAgICAgICAgICBzcGxpdF9zcGVjID0gX3ZlcnNpb25fc3BsaXQobm9ybWFsaXplZF9zcGVjKQoKICAgICAgICAgICAgIyBTcGxpdCB0aGUgcHJvc3BlY3RpdmUgdmVyc2lvbiBvdXQgYnkgZG90cywgYW5kIHByZXRlbmQgdGhhdCB0aGVyZQogICAgICAgICAgICAjIGlzIGFuIGltcGxpY2l0IGRvdCBpbiBiZXR3ZWVuIGEgcmVsZWFzZSBzZWdtZW50IGFuZCBhIHByZS1yZWxlYXNlCiAgICAgICAgICAgICMgc2VnbWVudC4KICAgICAgICAgICAgc3BsaXRfcHJvc3BlY3RpdmUgPSBfdmVyc2lvbl9zcGxpdChub3JtYWxpemVkX3Byb3NwZWN0aXZlKQoKICAgICAgICAgICAgIyAwLXBhZCB0aGUgcHJvc3BlY3RpdmUgdmVyc2lvbiBiZWZvcmUgc2hvcnRlbmluZyBpdCB0byBnZXQgdGhlIGNvcnJlY3QKICAgICAgICAgICAgIyBzaG9ydGVuZWQgdmVyc2lvbi4KICAgICAgICAgICAgcGFkZGVkX3Byb3NwZWN0aXZlLCBfID0gX3BhZF92ZXJzaW9uKHNwbGl0X3Byb3NwZWN0aXZlLCBzcGxpdF9zcGVjKQoKICAgICAgICAgICAgIyBTaG9ydGVuIHRoZSBwcm9zcGVjdGl2ZSB2ZXJzaW9uIHRvIGJlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc3BlYwogICAgICAgICAgICAjIHNvIHRoYXQgd2UgY2FuIGRldGVybWluZSBpZiB0aGUgc3BlY2lmaWVyIGlzIGEgcHJlZml4IG9mIHRoZQogICAgICAgICAgICAjIHByb3NwZWN0aXZlIHZlcnNpb24gb3Igbm90LgogICAgICAgICAgICBzaG9ydGVuZWRfcHJvc3BlY3RpdmUgPSBwYWRkZWRfcHJvc3BlY3RpdmVbOiBsZW4oc3BsaXRfc3BlYyldCgogICAgICAgICAgICByZXR1cm4gc2hvcnRlbmVkX3Byb3NwZWN0aXZlID09IHNwbGl0X3NwZWMKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIENvbnZlcnQgb3VyIHNwZWMgc3RyaW5nIGludG8gYSBWZXJzaW9uCiAgICAgICAgICAgIHNwZWNfdmVyc2lvbiA9IFZlcnNpb24oc3BlYykKCiAgICAgICAgICAgICMgSWYgdGhlIHNwZWNpZmllciBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgc2VnbWVudCwgdGhlbiB3ZSB3YW50IHRvCiAgICAgICAgICAgICMgYWN0IGFzIGlmIHRoZSBwcm9zcGVjdGl2ZSB2ZXJzaW9uIGFsc28gZG9lcyBub3QgaGF2ZSBhIGxvY2FsCiAgICAgICAgICAgICMgc2VnbWVudC4KICAgICAgICAgICAgaWYgbm90IHNwZWNfdmVyc2lvbi5sb2NhbDoKICAgICAgICAgICAgICAgIHByb3NwZWN0aXZlID0gVmVyc2lvbihwcm9zcGVjdGl2ZS5wdWJsaWMpCgogICAgICAgICAgICByZXR1cm4gcHJvc3BlY3RpdmUgPT0gc3BlY192ZXJzaW9uCgogICAgZGVmIF9jb21wYXJlX25vdF9lcXVhbChzZWxmLCBwcm9zcGVjdGl2ZTogVmVyc2lvbiwgc3BlYzogc3RyKSAtPiBib29sOgogICAgICAgIHJldHVybiBub3Qgc2VsZi5fY29tcGFyZV9lcXVhbChwcm9zcGVjdGl2ZSwgc3BlYykKCiAgICBkZWYgX2NvbXBhcmVfbGVzc190aGFuX2VxdWFsKHNlbGYsIHByb3NwZWN0aXZlOiBWZXJzaW9uLCBzcGVjOiBzdHIpIC0+IGJvb2w6CgogICAgICAgICMgTkI6IExvY2FsIHZlcnNpb24gaWRlbnRpZmllcnMgYXJlIE5PVCBwZXJtaXR0ZWQgaW4gdGhlIHZlcnNpb24KICAgICAgICAjIHNwZWNpZmllciwgc28gbG9jYWwgdmVyc2lvbiBsYWJlbHMgY2FuIGJlIHVuaXZlcnNhbGx5IHJlbW92ZWQgZnJvbQogICAgICAgICMgdGhlIHByb3NwZWN0aXZlIHZlcnNpb24uCiAgICAgICAgcmV0dXJuIFZlcnNpb24ocHJvc3BlY3RpdmUucHVibGljKSA8PSBWZXJzaW9uKHNwZWMpCgogICAgZGVmIF9jb21wYXJlX2dyZWF0ZXJfdGhhbl9lcXVhbChzZWxmLCBwcm9zcGVjdGl2ZTogVmVyc2lvbiwgc3BlYzogc3RyKSAtPiBib29sOgoKICAgICAgICAjIE5COiBMb2NhbCB2ZXJzaW9uIGlkZW50aWZpZXJzIGFyZSBOT1QgcGVybWl0dGVkIGluIHRoZSB2ZXJzaW9uCiAgICAgICAgIyBzcGVjaWZpZXIsIHNvIGxvY2FsIHZlcnNpb24gbGFiZWxzIGNhbiBiZSB1bml2ZXJzYWxseSByZW1vdmVkIGZyb20KICAgICAgICAjIHRoZSBwcm9zcGVjdGl2ZSB2ZXJzaW9uLgogICAgICAgIHJldHVybiBWZXJzaW9uKHByb3NwZWN0aXZlLnB1YmxpYykgPj0gVmVyc2lvbihzcGVjKQoKICAgIGRlZiBfY29tcGFyZV9sZXNzX3RoYW4oc2VsZiwgcHJvc3BlY3RpdmU6IFZlcnNpb24sIHNwZWNfc3RyOiBzdHIpIC0+IGJvb2w6CgogICAgICAgICMgQ29udmVydCBvdXIgc3BlYyB0byBhIFZlcnNpb24gaW5zdGFuY2UsIHNpbmNlIHdlJ2xsIHdhbnQgdG8gd29yayB3aXRoCiAgICAgICAgIyBpdCBhcyBhIHZlcnNpb24uCiAgICAgICAgc3BlYyA9IFZlcnNpb24oc3BlY19zdHIpCgogICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9zcGVjdGl2ZSB2ZXJzaW9uIGlzIGxlc3MgdGhhbiB0aGUgc3BlYwogICAgICAgICMgdmVyc2lvbi4gSWYgaXQncyBub3Qgd2UgY2FuIHNob3J0IGNpcmN1aXQgYW5kIGp1c3QgcmV0dXJuIEZhbHNlIG5vdwogICAgICAgICMgaW5zdGVhZCBvZiBkb2luZyBleHRyYSB1bm5lZWRlZCB3b3JrLgogICAgICAgIGlmIG5vdCBwcm9zcGVjdGl2ZSA8IHNwZWM6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICAjIFRoaXMgc3BlY2lhbCBjYXNlIGlzIGhlcmUgc28gdGhhdCwgdW5sZXNzIHRoZSBzcGVjaWZpZXIgaXRzZWxmCiAgICAgICAgIyBpbmNsdWRlcyBpcyBhIHByZS1yZWxlYXNlIHZlcnNpb24sIHRoYXQgd2UgZG8gbm90IGFjY2VwdCBwcmUtcmVsZWFzZQogICAgICAgICMgdmVyc2lvbnMgZm9yIHRoZSB2ZXJzaW9uIG1lbnRpb25lZCBpbiB0aGUgc3BlY2lmaWVyIChlLmcuIDwzLjEgc2hvdWxkCiAgICAgICAgIyBub3QgbWF0Y2ggMy4xLmRldjAsIGJ1dCBzaG91bGQgbWF0Y2ggMy4wLmRldjApLgogICAgICAgIGlmIG5vdCBzcGVjLmlzX3ByZXJlbGVhc2UgYW5kIHByb3NwZWN0aXZlLmlzX3ByZXJlbGVhc2U6CiAgICAgICAgICAgIGlmIFZlcnNpb24ocHJvc3BlY3RpdmUuYmFzZV92ZXJzaW9uKSA9PSBWZXJzaW9uKHNwZWMuYmFzZV92ZXJzaW9uKToKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICAjIElmIHdlJ3ZlIGdvdHRlbiB0byBoZXJlLCBpdCBtZWFucyB0aGF0IHByb3NwZWN0aXZlIHZlcnNpb24gaXMgYm90aAogICAgICAgICMgbGVzcyB0aGFuIHRoZSBzcGVjIHZlcnNpb24gKmFuZCogaXQncyBub3QgYSBwcmUtcmVsZWFzZSBvZiB0aGUgc2FtZQogICAgICAgICMgdmVyc2lvbiBpbiB0aGUgc3BlYy4KICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBfY29tcGFyZV9ncmVhdGVyX3RoYW4oc2VsZiwgcHJvc3BlY3RpdmU6IFZlcnNpb24sIHNwZWNfc3RyOiBzdHIpIC0+IGJvb2w6CgogICAgICAgICMgQ29udmVydCBvdXIgc3BlYyB0byBhIFZlcnNpb24gaW5zdGFuY2UsIHNpbmNlIHdlJ2xsIHdhbnQgdG8gd29yayB3aXRoCiAgICAgICAgIyBpdCBhcyBhIHZlcnNpb24uCiAgICAgICAgc3BlYyA9IFZlcnNpb24oc3BlY19zdHIpCgogICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9zcGVjdGl2ZSB2ZXJzaW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlYwogICAgICAgICMgdmVyc2lvbi4gSWYgaXQncyBub3Qgd2UgY2FuIHNob3J0IGNpcmN1aXQgYW5kIGp1c3QgcmV0dXJuIEZhbHNlIG5vdwogICAgICAgICMgaW5zdGVhZCBvZiBkb2luZyBleHRyYSB1bm5lZWRlZCB3b3JrLgogICAgICAgIGlmIG5vdCBwcm9zcGVjdGl2ZSA+IHNwZWM6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICAjIFRoaXMgc3BlY2lhbCBjYXNlIGlzIGhlcmUgc28gdGhhdCwgdW5sZXNzIHRoZSBzcGVjaWZpZXIgaXRzZWxmCiAgICAgICAgIyBpbmNsdWRlcyBpcyBhIHBvc3QtcmVsZWFzZSB2ZXJzaW9uLCB0aGF0IHdlIGRvIG5vdCBhY2NlcHQKICAgICAgICAjIHBvc3QtcmVsZWFzZSB2ZXJzaW9ucyBmb3IgdGhlIHZlcnNpb24gbWVudGlvbmVkIGluIHRoZSBzcGVjaWZpZXIKICAgICAgICAjIChlLmcuID4zLjEgc2hvdWxkIG5vdCBtYXRjaCAzLjAucG9zdDAsIGJ1dCBzaG91bGQgbWF0Y2ggMy4yLnBvc3QwKS4KICAgICAgICBpZiBub3Qgc3BlYy5pc19wb3N0cmVsZWFzZSBhbmQgcHJvc3BlY3RpdmUuaXNfcG9zdHJlbGVhc2U6CiAgICAgICAgICAgIGlmIFZlcnNpb24ocHJvc3BlY3RpdmUuYmFzZV92ZXJzaW9uKSA9PSBWZXJzaW9uKHNwZWMuYmFzZV92ZXJzaW9uKToKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICAjIEVuc3VyZSB0aGF0IHdlIGRvIG5vdCBhbGxvdyBhIGxvY2FsIHZlcnNpb24gb2YgdGhlIHZlcnNpb24gbWVudGlvbmVkCiAgICAgICAgIyBpbiB0aGUgc3BlY2lmaWVyLCB3aGljaCBpcyB0ZWNobmljYWxseSBncmVhdGVyIHRoYW4sIHRvIG1hdGNoLgogICAgICAgIGlmIHByb3NwZWN0aXZlLmxvY2FsIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBWZXJzaW9uKHByb3NwZWN0aXZlLmJhc2VfdmVyc2lvbikgPT0gVmVyc2lvbihzcGVjLmJhc2VfdmVyc2lvbik6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgIyBJZiB3ZSd2ZSBnb3R0ZW4gdG8gaGVyZSwgaXQgbWVhbnMgdGhhdCBwcm9zcGVjdGl2ZSB2ZXJzaW9uIGlzIGJvdGgKICAgICAgICAjIGdyZWF0ZXIgdGhhbiB0aGUgc3BlYyB2ZXJzaW9uICphbmQqIGl0J3Mgbm90IGEgcHJlLXJlbGVhc2Ugb2YgdGhlCiAgICAgICAgIyBzYW1lIHZlcnNpb24gaW4gdGhlIHNwZWMuCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgX2NvbXBhcmVfYXJiaXRyYXJ5KHNlbGYsIHByb3NwZWN0aXZlOiBWZXJzaW9uLCBzcGVjOiBzdHIpIC0+IGJvb2w6CiAgICAgICAgcmV0dXJuIHN0cihwcm9zcGVjdGl2ZSkubG93ZXIoKSA9PSBzdHIoc3BlYykubG93ZXIoKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbTogVW5pb25bc3RyLCBWZXJzaW9uXSkgLT4gYm9vbDoKICAgICAgICAiIiJSZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGl0ZW0gaXMgY29udGFpbmVkIGluIHRoaXMgc3BlY2lmaWVyLgoKICAgICAgICA6cGFyYW0gaXRlbTogVGhlIGl0ZW0gdG8gY2hlY2sgZm9yLgoKICAgICAgICBUaGlzIGlzIHVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IgYW5kIGJlaGF2ZXMgdGhlIHNhbWUgYXMKICAgICAgICA6bWV0aDpgY29udGFpbnNgIHdpdGggbm8gYGBwcmVyZWxlYXNlc2BgIGFyZ3VtZW50IHBhc3NlZC4KCiAgICAgICAgPj4+ICIxLjIuMyIgaW4gU3BlY2lmaWVyKCI+PTEuMi4zIikKICAgICAgICBUcnVlCiAgICAgICAgPj4+IFZlcnNpb24oIjEuMi4zIikgaW4gU3BlY2lmaWVyKCI+PTEuMi4zIikKICAgICAgICBUcnVlCiAgICAgICAgPj4+ICIxLjAuMCIgaW4gU3BlY2lmaWVyKCI+PTEuMi4zIikKICAgICAgICBGYWxzZQogICAgICAgID4+PiAiMS4zLjBhMSIgaW4gU3BlY2lmaWVyKCI+PTEuMi4zIikKICAgICAgICBGYWxzZQogICAgICAgID4+PiAiMS4zLjBhMSIgaW4gU3BlY2lmaWVyKCI+PTEuMi4zIiwgcHJlcmVsZWFzZXM9VHJ1ZSkKICAgICAgICBUcnVlCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuY29udGFpbnMoaXRlbSkKCiAgICBkZWYgY29udGFpbnMoCiAgICAgICAgc2VsZiwgaXRlbTogVW5wYXJzZWRWZXJzaW9uLCBwcmVyZWxlYXNlczogT3B0aW9uYWxbYm9vbF0gPSBOb25lCiAgICApIC0+IGJvb2w6CiAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBpdGVtIGlzIGNvbnRhaW5lZCBpbiB0aGlzIHNwZWNpZmllci4KCiAgICAgICAgOnBhcmFtIGl0ZW06CiAgICAgICAgICAgIFRoZSBpdGVtIHRvIGNoZWNrIGZvciwgd2hpY2ggY2FuIGJlIGEgdmVyc2lvbiBzdHJpbmcgb3IgYQogICAgICAgICAgICA6Y2xhc3M6YFZlcnNpb25gIGluc3RhbmNlLgogICAgICAgIDpwYXJhbSBwcmVyZWxlYXNlczoKICAgICAgICAgICAgV2hldGhlciBvciBub3QgdG8gbWF0Y2ggcHJlcmVsZWFzZXMgd2l0aCB0aGlzIFNwZWNpZmllci4gSWYgc2V0IHRvCiAgICAgICAgICAgIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIGl0IHVzZXMgOmF0dHI6YHByZXJlbGVhc2VzYCB0byBkZXRlcm1pbmUKICAgICAgICAgICAgd2hldGhlciBvciBub3QgcHJlcmVsZWFzZXMgYXJlIGFsbG93ZWQuCgogICAgICAgID4+PiBTcGVjaWZpZXIoIj49MS4yLjMiKS5jb250YWlucygiMS4yLjMiKQogICAgICAgIFRydWUKICAgICAgICA+Pj4gU3BlY2lmaWVyKCI+PTEuMi4zIikuY29udGFpbnMoVmVyc2lvbigiMS4yLjMiKSkKICAgICAgICBUcnVlCiAgICAgICAgPj4+IFNwZWNpZmllcigiPj0xLjIuMyIpLmNvbnRhaW5zKCIxLjAuMCIpCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gU3BlY2lmaWVyKCI+PTEuMi4zIikuY29udGFpbnMoIjEuMy4wYTEiKQogICAgICAgIEZhbHNlCiAgICAgICAgPj4+IFNwZWNpZmllcigiPj0xLjIuMyIsIHByZXJlbGVhc2VzPVRydWUpLmNvbnRhaW5zKCIxLjMuMGExIikKICAgICAgICBUcnVlCiAgICAgICAgPj4+IFNwZWNpZmllcigiPj0xLjIuMyIpLmNvbnRhaW5zKCIxLjMuMGExIiwgcHJlcmVsZWFzZXM9VHJ1ZSkKICAgICAgICBUcnVlCiAgICAgICAgIiIiCgogICAgICAgICMgRGV0ZXJtaW5lIGlmIHByZXJlbGVhc2VzIGFyZSB0byBiZSBhbGxvd2VkIG9yIG5vdC4KICAgICAgICBpZiBwcmVyZWxlYXNlcyBpcyBOb25lOgogICAgICAgICAgICBwcmVyZWxlYXNlcyA9IHNlbGYucHJlcmVsZWFzZXMKCiAgICAgICAgIyBOb3JtYWxpemUgaXRlbSB0byBhIFZlcnNpb24sIHRoaXMgYWxsb3dzIHVzIHRvIGhhdmUgYSBzaG9ydGN1dCBmb3IKICAgICAgICAjICIyLjAiIGluIFNwZWNpZmllcigiPj0yIikKICAgICAgICBub3JtYWxpemVkX2l0ZW0gPSBfY29lcmNlX3ZlcnNpb24oaXRlbSkKCiAgICAgICAgIyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIGJlIHN1cHBvcnRpbmcgcHJlcmVsZWFzZXMgaW4gdGhpcyBzcGVjaWZpZXIKICAgICAgICAjIG9yIG5vdCwgaWYgd2UgZG8gbm90IHN1cHBvcnQgcHJlcmVsZWFzZXMgdGhhbiB3ZSBjYW4gc2hvcnQgY2lyY3VpdAogICAgICAgICMgbG9naWMgaWYgdGhpcyB2ZXJzaW9uIGlzIGEgcHJlcmVsZWFzZXMuCiAgICAgICAgaWYgbm9ybWFsaXplZF9pdGVtLmlzX3ByZXJlbGVhc2UgYW5kIG5vdCBwcmVyZWxlYXNlczoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgICMgQWN0dWFsbHkgZG8gdGhlIGNvbXBhcmlzb24gdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXRlbSBpcyBjb250YWluZWQKICAgICAgICAjIHdpdGhpbiB0aGlzIFNwZWNpZmllciBvciBub3QuCiAgICAgICAgb3BlcmF0b3JfY2FsbGFibGU6IENhbGxhYmxlT3BlcmF0b3IgPSBzZWxmLl9nZXRfb3BlcmF0b3Ioc2VsZi5vcGVyYXRvcikKICAgICAgICByZXR1cm4gb3BlcmF0b3JfY2FsbGFibGUobm9ybWFsaXplZF9pdGVtLCBzZWxmLnZlcnNpb24pCgogICAgZGVmIGZpbHRlcigKICAgICAgICBzZWxmLCBpdGVyYWJsZTogSXRlcmFibGVbVW5wYXJzZWRWZXJzaW9uVmFyXSwgcHJlcmVsZWFzZXM6IE9wdGlvbmFsW2Jvb2xdID0gTm9uZQogICAgKSAtPiBJdGVyYXRvcltVbnBhcnNlZFZlcnNpb25WYXJdOgogICAgICAgICIiIkZpbHRlciBpdGVtcyBpbiB0aGUgZ2l2ZW4gaXRlcmFibGUsIHRoYXQgbWF0Y2ggdGhlIHNwZWNpZmllci4KCiAgICAgICAgOnBhcmFtIGl0ZXJhYmxlOgogICAgICAgICAgICBBbiBpdGVyYWJsZSB0aGF0IGNhbiBjb250YWluIHZlcnNpb24gc3RyaW5ncyBhbmQgOmNsYXNzOmBWZXJzaW9uYCBpbnN0YW5jZXMuCiAgICAgICAgICAgIFRoZSBpdGVtcyBpbiB0aGUgaXRlcmFibGUgd2lsbCBiZSBmaWx0ZXJlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllci4KICAgICAgICA6cGFyYW0gcHJlcmVsZWFzZXM6CiAgICAgICAgICAgIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHByZXJlbGVhc2VzIGluIHRoZSByZXR1cm5lZCBpdGVyYXRvci4gSWYgc2V0IHRvCiAgICAgICAgICAgIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIGl0IHdpbGwgYmUgaW50ZWxsaWdlbnRseSBkZWNpZGUgd2hldGhlciB0byBhbGxvdwogICAgICAgICAgICBwcmVyZWxlYXNlcyBvciBub3QgKGJhc2VkIG9uIHRoZSA6YXR0cjpgcHJlcmVsZWFzZXNgIGF0dHJpYnV0ZSwgYW5kCiAgICAgICAgICAgIHdoZXRoZXIgdGhlIG9ubHkgdmVyc2lvbnMgbWF0Y2hpbmcgYXJlIHByZXJlbGVhc2VzKS4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgc21hcnRlciB0aGFuIGp1c3QgYGBmaWx0ZXIoU3BlY2lmaWVyKCkuY29udGFpbnMsIFsuLi5dKWBgCiAgICAgICAgYmVjYXVzZSBpdCBpbXBsZW1lbnRzIHRoZSBydWxlIGZyb20gOnBlcDpgNDQwYCB0aGF0IGEgcHJlcmVsZWFzZSBpdGVtCiAgICAgICAgU0hPVUxEIGJlIGFjY2VwdGVkIGlmIG5vIG90aGVyIHZlcnNpb25zIG1hdGNoIHRoZSBnaXZlbiBzcGVjaWZpZXIuCgogICAgICAgID4+PiBsaXN0KFNwZWNpZmllcigiPj0xLjIuMyIpLmZpbHRlcihbIjEuMiIsICIxLjMiLCAiMS41YTEiXSkpCiAgICAgICAgWycxLjMnXQogICAgICAgID4+PiBsaXN0KFNwZWNpZmllcigiPj0xLjIuMyIpLmZpbHRlcihbIjEuMiIsICIxLjIuMyIsICIxLjMiLCBWZXJzaW9uKCIxLjQiKV0pKQogICAgICAgIFsnMS4yLjMnLCAnMS4zJywgPFZlcnNpb24oJzEuNCcpPl0KICAgICAgICA+Pj4gbGlzdChTcGVjaWZpZXIoIj49MS4yLjMiKS5maWx0ZXIoWyIxLjIiLCAiMS41YTEiXSkpCiAgICAgICAgWycxLjVhMSddCiAgICAgICAgPj4+IGxpc3QoU3BlY2lmaWVyKCI+PTEuMi4zIikuZmlsdGVyKFsiMS4zIiwgIjEuNWExIl0sIHByZXJlbGVhc2VzPVRydWUpKQogICAgICAgIFsnMS4zJywgJzEuNWExJ10KICAgICAgICA+Pj4gbGlzdChTcGVjaWZpZXIoIj49MS4yLjMiLCBwcmVyZWxlYXNlcz1UcnVlKS5maWx0ZXIoWyIxLjMiLCAiMS41YTEiXSkpCiAgICAgICAgWycxLjMnLCAnMS41YTEnXQogICAgICAgICIiIgoKICAgICAgICB5aWVsZGVkID0gRmFsc2UKICAgICAgICBmb3VuZF9wcmVyZWxlYXNlcyA9IFtdCgogICAgICAgIGt3ID0geyJwcmVyZWxlYXNlcyI6IHByZXJlbGVhc2VzIGlmIHByZXJlbGVhc2VzIGlzIG5vdCBOb25lIGVsc2UgVHJ1ZX0KCiAgICAgICAgIyBBdHRlbXB0IHRvIGl0ZXJhdGUgb3ZlciBhbGwgdGhlIHZhbHVlcyBpbiB0aGUgaXRlcmFibGUgYW5kIGlmIGFueSBvZgogICAgICAgICMgdGhlbSBtYXRjaCwgeWllbGQgdGhlbS4KICAgICAgICBmb3IgdmVyc2lvbiBpbiBpdGVyYWJsZToKICAgICAgICAgICAgcGFyc2VkX3ZlcnNpb24gPSBfY29lcmNlX3ZlcnNpb24odmVyc2lvbikKCiAgICAgICAgICAgIGlmIHNlbGYuY29udGFpbnMocGFyc2VkX3ZlcnNpb24sICoqa3cpOgogICAgICAgICAgICAgICAgIyBJZiBvdXIgdmVyc2lvbiBpcyBhIHByZXJlbGVhc2UsIGFuZCB3ZSB3ZXJlIG5vdCBzZXQgdG8gYWxsb3cKICAgICAgICAgICAgICAgICMgcHJlcmVsZWFzZXMsIHRoZW4gd2UnbGwgc3RvcmUgaXQgZm9yIGxhdGVyIGluIGNhc2Ugbm90aGluZwogICAgICAgICAgICAgICAgIyBlbHNlIG1hdGNoZXMgdGhpcyBzcGVjaWZpZXIuCiAgICAgICAgICAgICAgICBpZiBwYXJzZWRfdmVyc2lvbi5pc19wcmVyZWxlYXNlIGFuZCBub3QgKAogICAgICAgICAgICAgICAgICAgIHByZXJlbGVhc2VzIG9yIHNlbGYucHJlcmVsZWFzZXMKICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgZm91bmRfcHJlcmVsZWFzZXMuYXBwZW5kKHZlcnNpb24pCiAgICAgICAgICAgICAgICAjIEVpdGhlciB0aGlzIGlzIG5vdCBhIHByZXJlbGVhc2UsIG9yIHdlIHNob3VsZCBoYXZlIGJlZW4KICAgICAgICAgICAgICAgICMgYWNjZXB0aW5nIHByZXJlbGVhc2VzIGZyb20gdGhlIGJlZ2lubmluZy4KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgeWllbGRlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICB5aWVsZCB2ZXJzaW9uCgogICAgICAgICMgTm93IHRoYXQgd2UndmUgaXRlcmF0ZWQgb3ZlciBldmVyeXRoaW5nLCBkZXRlcm1pbmUgaWYgd2UndmUgeWllbGRlZAogICAgICAgICMgYW55IHZhbHVlcywgYW5kIGlmIHdlIGhhdmUgbm90IGFuZCB3ZSBoYXZlIGFueSBwcmVyZWxlYXNlcyBzdG9yZWQgdXAKICAgICAgICAjIHRoZW4gd2Ugd2lsbCBnbyBhaGVhZCBhbmQgeWllbGQgdGhlIHByZXJlbGVhc2VzLgogICAgICAgIGlmIG5vdCB5aWVsZGVkIGFuZCBmb3VuZF9wcmVyZWxlYXNlczoKICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gZm91bmRfcHJlcmVsZWFzZXM6CiAgICAgICAgICAgICAgICB5aWVsZCB2ZXJzaW9uCgoKX3ByZWZpeF9yZWdleCA9IHJlLmNvbXBpbGUociJeKFswLTldKykoKD86YXxifGN8cmMpWzAtOV0rKSQiKQoKCmRlZiBfdmVyc2lvbl9zcGxpdCh2ZXJzaW9uOiBzdHIpIC0+IExpc3Rbc3RyXToKICAgIHJlc3VsdDogTGlzdFtzdHJdID0gW10KICAgIGZvciBpdGVtIGluIHZlcnNpb24uc3BsaXQoIi4iKToKICAgICAgICBtYXRjaCA9IF9wcmVmaXhfcmVnZXguc2VhcmNoKGl0ZW0pCiAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgIHJlc3VsdC5leHRlbmQobWF0Y2guZ3JvdXBzKCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtKQogICAgcmV0dXJuIHJlc3VsdAoKCmRlZiBfaXNfbm90X3N1ZmZpeChzZWdtZW50OiBzdHIpIC0+IGJvb2w6CiAgICByZXR1cm4gbm90IGFueSgKICAgICAgICBzZWdtZW50LnN0YXJ0c3dpdGgocHJlZml4KSBmb3IgcHJlZml4IGluICgiZGV2IiwgImEiLCAiYiIsICJyYyIsICJwb3N0IikKICAgICkKCgpkZWYgX3BhZF92ZXJzaW9uKGxlZnQ6IExpc3Rbc3RyXSwgcmlnaHQ6IExpc3Rbc3RyXSkgLT4gVHVwbGVbTGlzdFtzdHJdLCBMaXN0W3N0cl1dOgogICAgbGVmdF9zcGxpdCwgcmlnaHRfc3BsaXQgPSBbXSwgW10KCiAgICAjIEdldCB0aGUgcmVsZWFzZSBzZWdtZW50IG9mIG91ciB2ZXJzaW9ucwogICAgbGVmdF9zcGxpdC5hcHBlbmQobGlzdChpdGVydG9vbHMudGFrZXdoaWxlKGxhbWJkYSB4OiB4LmlzZGlnaXQoKSwgbGVmdCkpKQogICAgcmlnaHRfc3BsaXQuYXBwZW5kKGxpc3QoaXRlcnRvb2xzLnRha2V3aGlsZShsYW1iZGEgeDogeC5pc2RpZ2l0KCksIHJpZ2h0KSkpCgogICAgIyBHZXQgdGhlIHJlc3Qgb2Ygb3VyIHZlcnNpb25zCiAgICBsZWZ0X3NwbGl0LmFwcGVuZChsZWZ0W2xlbihsZWZ0X3NwbGl0WzBdKSA6XSkKICAgIHJpZ2h0X3NwbGl0LmFwcGVuZChyaWdodFtsZW4ocmlnaHRfc3BsaXRbMF0pIDpdKQoKICAgICMgSW5zZXJ0IG91ciBwYWRkaW5nCiAgICBsZWZ0X3NwbGl0Lmluc2VydCgxLCBbIjAiXSAqIG1heCgwLCBsZW4ocmlnaHRfc3BsaXRbMF0pIC0gbGVuKGxlZnRfc3BsaXRbMF0pKSkKICAgIHJpZ2h0X3NwbGl0Lmluc2VydCgxLCBbIjAiXSAqIG1heCgwLCBsZW4obGVmdF9zcGxpdFswXSkgLSBsZW4ocmlnaHRfc3BsaXRbMF0pKSkKCiAgICByZXR1cm4gKGxpc3QoaXRlcnRvb2xzLmNoYWluKCpsZWZ0X3NwbGl0KSksIGxpc3QoaXRlcnRvb2xzLmNoYWluKCpyaWdodF9zcGxpdCkpKQoKCmNsYXNzIFNwZWNpZmllclNldChCYXNlU3BlY2lmaWVyKToKICAgICIiIlRoaXMgY2xhc3MgYWJzdHJhY3RzIGhhbmRsaW5nIG9mIGEgc2V0IG9mIHZlcnNpb24gc3BlY2lmaWVycy4KCiAgICBJdCBjYW4gYmUgcGFzc2VkIGEgc2luZ2xlIHNwZWNpZmllciAoYGA+PTMuMGBgKSwgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgogICAgc3BlY2lmaWVycyAoYGA+PTMuMCwhPTMuMWBgKSwgb3Igbm8gc3BlY2lmaWVyIGF0IGFsbC4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXygKICAgICAgICBzZWxmLCBzcGVjaWZpZXJzOiBzdHIgPSAiIiwgcHJlcmVsZWFzZXM6IE9wdGlvbmFsW2Jvb2xdID0gTm9uZQogICAgKSAtPiBOb25lOgogICAgICAgICIiIkluaXRpYWxpemUgYSBTcGVjaWZpZXJTZXQgaW5zdGFuY2UuCgogICAgICAgIDpwYXJhbSBzcGVjaWZpZXJzOgogICAgICAgICAgICBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgc3BlY2lmaWVyIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YKICAgICAgICAgICAgc3BlY2lmaWVycyB3aGljaCB3aWxsIGJlIHBhcnNlZCBhbmQgbm9ybWFsaXplZCBiZWZvcmUgdXNlLgogICAgICAgIDpwYXJhbSBwcmVyZWxlYXNlczoKICAgICAgICAgICAgVGhpcyB0ZWxscyB0aGUgU3BlY2lmaWVyU2V0IGlmIGl0IHNob3VsZCBhY2NlcHQgcHJlcmVsZWFzZSB2ZXJzaW9ucyBpZgogICAgICAgICAgICBhcHBsaWNhYmxlIG9yIG5vdC4gVGhlIGRlZmF1bHQgb2YgYGBOb25lYGAgd2lsbCBhdXRvZGV0ZWN0IGl0IGZyb20gdGhlCiAgICAgICAgICAgIGdpdmVuIHNwZWNpZmllcnMuCgogICAgICAgIDpyYWlzZXMgSW52YWxpZFNwZWNpZmllcjoKICAgICAgICAgICAgSWYgdGhlIGdpdmVuIGBgc3BlY2lmaWVyc2BgIGFyZSBub3QgcGFyc2VhYmxlIHRoYW4gdGhpcyBleGNlcHRpb24gd2lsbCBiZQogICAgICAgICAgICByYWlzZWQuCiAgICAgICAgIiIiCgogICAgICAgICMgU3BsaXQgb24gYCxgIHRvIGJyZWFrIGVhY2ggaW5kaXZpZHVhbCBzcGVjaWZpZXIgaW50byBpdCdzIG93biBpdGVtLCBhbmQKICAgICAgICAjIHN0cmlwIGVhY2ggaXRlbSB0byByZW1vdmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlLgogICAgICAgIHNwbGl0X3NwZWNpZmllcnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIHNwZWNpZmllcnMuc3BsaXQoIiwiKSBpZiBzLnN0cmlwKCldCgogICAgICAgICMgUGFyc2VkIGVhY2ggaW5kaXZpZHVhbCBzcGVjaWZpZXIsIGF0dGVtcHRpbmcgZmlyc3QgdG8gbWFrZSBpdCBhCiAgICAgICAgIyBTcGVjaWZpZXIuCiAgICAgICAgcGFyc2VkOiBTZXRbU3BlY2lmaWVyXSA9IHNldCgpCiAgICAgICAgZm9yIHNwZWNpZmllciBpbiBzcGxpdF9zcGVjaWZpZXJzOgogICAgICAgICAgICBwYXJzZWQuYWRkKFNwZWNpZmllcihzcGVjaWZpZXIpKQoKICAgICAgICAjIFR1cm4gb3VyIHBhcnNlZCBzcGVjaWZpZXJzIGludG8gYSBmcm96ZW4gc2V0IGFuZCBzYXZlIHRoZW0gZm9yIGxhdGVyLgogICAgICAgIHNlbGYuX3NwZWNzID0gZnJvemVuc2V0KHBhcnNlZCkKCiAgICAgICAgIyBTdG9yZSBvdXIgcHJlcmVsZWFzZXMgdmFsdWUgc28gd2UgY2FuIHVzZSBpdCBsYXRlciB0byBkZXRlcm1pbmUgaWYKICAgICAgICAjIHdlIGFjY2VwdCBwcmVyZWxlYXNlcyBvciBub3QuCiAgICAgICAgc2VsZi5fcHJlcmVsZWFzZXMgPSBwcmVyZWxlYXNlcwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHByZXJlbGVhc2VzKHNlbGYpIC0+IE9wdGlvbmFsW2Jvb2xdOgogICAgICAgICMgSWYgd2UgaGF2ZSBiZWVuIGdpdmVuIGFuIGV4cGxpY2l0IHByZXJlbGVhc2UgbW9kaWZpZXIsIHRoZW4gd2UnbGwKICAgICAgICAjIHBhc3MgdGhhdCB0aHJvdWdoIGhlcmUuCiAgICAgICAgaWYgc2VsZi5fcHJlcmVsZWFzZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcmVyZWxlYXNlcwoKICAgICAgICAjIElmIHdlIGRvbid0IGhhdmUgYW55IHNwZWNpZmllcnMsIGFuZCB3ZSBkb24ndCBoYXZlIGEgZm9yY2VkIHZhbHVlLAogICAgICAgICMgdGhlbiB3ZSdsbCBqdXN0IHJldHVybiBOb25lIHNpbmNlIHdlIGRvbid0IGtub3cgaWYgdGhpcyBzaG91bGQgaGF2ZQogICAgICAgICMgcHJlLXJlbGVhc2VzIG9yIG5vdC4KICAgICAgICBpZiBub3Qgc2VsZi5fc3BlY3M6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgICMgT3RoZXJ3aXNlIHdlJ2xsIHNlZSBpZiBhbnkgb2YgdGhlIGdpdmVuIHNwZWNpZmllcnMgYWNjZXB0CiAgICAgICAgIyBwcmVyZWxlYXNlcywgaWYgYW55IG9mIHRoZW0gZG8gd2UnbGwgcmV0dXJuIFRydWUsIG90aGVyd2lzZSBGYWxzZS4KICAgICAgICByZXR1cm4gYW55KHMucHJlcmVsZWFzZXMgZm9yIHMgaW4gc2VsZi5fc3BlY3MpCgogICAgQHByZXJlbGVhc2VzLnNldHRlcgogICAgZGVmIHByZXJlbGVhc2VzKHNlbGYsIHZhbHVlOiBib29sKSAtPiBOb25lOgogICAgICAgIHNlbGYuX3ByZXJlbGVhc2VzID0gdmFsdWUKCiAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAgICAgICIiIkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWNpZmllciBzZXQgdGhhdCBzaG93cyBhbGwgaW50ZXJuYWwgc3RhdGUuCgogICAgICAgIE5vdGUgdGhhdCB0aGUgb3JkZXJpbmcgb2YgdGhlIGluZGl2aWR1YWwgc3BlY2lmaWVycyB3aXRoaW4gdGhlIHNldCBtYXkgbm90CiAgICAgICAgbWF0Y2ggdGhlIGlucHV0IHN0cmluZy4KCiAgICAgICAgPj4+IFNwZWNpZmllclNldCgnPj0xLjAuMCwhPTIuMC4wJykKICAgICAgICA8U3BlY2lmaWVyU2V0KCchPTIuMC4wLD49MS4wLjAnKT4KICAgICAgICA+Pj4gU3BlY2lmaWVyU2V0KCc+PTEuMC4wLCE9Mi4wLjAnLCBwcmVyZWxlYXNlcz1GYWxzZSkKICAgICAgICA8U3BlY2lmaWVyU2V0KCchPTIuMC4wLD49MS4wLjAnLCBwcmVyZWxlYXNlcz1GYWxzZSk+CiAgICAgICAgPj4+IFNwZWNpZmllclNldCgnPj0xLjAuMCwhPTIuMC4wJywgcHJlcmVsZWFzZXM9VHJ1ZSkKICAgICAgICA8U3BlY2lmaWVyU2V0KCchPTIuMC4wLD49MS4wLjAnLCBwcmVyZWxlYXNlcz1UcnVlKT4KICAgICAgICAiIiIKICAgICAgICBwcmUgPSAoCiAgICAgICAgICAgIGYiLCBwcmVyZWxlYXNlcz17c2VsZi5wcmVyZWxlYXNlcyFyfSIKICAgICAgICAgICAgaWYgc2VsZi5fcHJlcmVsZWFzZXMgaXMgbm90IE5vbmUKICAgICAgICAgICAgZWxzZSAiIgogICAgICAgICkKCiAgICAgICAgcmV0dXJuIGYiPFNwZWNpZmllclNldCh7c3RyKHNlbGYpIXJ9e3ByZX0pPiIKCiAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgIiIiQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWNpZmllciBzZXQgdGhhdCBjYW4gYmUgcm91bmQtdHJpcHBlZC4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSBvcmRlcmluZyBvZiB0aGUgaW5kaXZpZHVhbCBzcGVjaWZpZXJzIHdpdGhpbiB0aGUgc2V0IG1heSBub3QKICAgICAgICBtYXRjaCB0aGUgaW5wdXQgc3RyaW5nLgoKICAgICAgICA+Pj4gc3RyKFNwZWNpZmllclNldCgiPj0xLjAuMCwhPTEuMC4xIikpCiAgICAgICAgJyE9MS4wLjEsPj0xLjAuMCcKICAgICAgICA+Pj4gc3RyKFNwZWNpZmllclNldCgiPj0xLjAuMCwhPTEuMC4xIiwgcHJlcmVsZWFzZXM9RmFsc2UpKQogICAgICAgICchPTEuMC4xLD49MS4wLjAnCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuICIsIi5qb2luKHNvcnRlZChzdHIocykgZm9yIHMgaW4gc2VsZi5fc3BlY3MpKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKSAtPiBpbnQ6CiAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fc3BlY3MpCgogICAgZGVmIF9fYW5kX18oc2VsZiwgb3RoZXI6IFVuaW9uWyJTcGVjaWZpZXJTZXQiLCBzdHJdKSAtPiAiU3BlY2lmaWVyU2V0IjoKICAgICAgICAiIiJSZXR1cm4gYSBTcGVjaWZpZXJTZXQgd2hpY2ggaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgdHdvIHNldHMuCgogICAgICAgIDpwYXJhbSBvdGhlcjogVGhlIG90aGVyIG9iamVjdCB0byBjb21iaW5lIHdpdGguCgogICAgICAgID4+PiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpICYgJzw9Mi4wLjAsIT0yLjAuMScKICAgICAgICA8U3BlY2lmaWVyU2V0KCchPTEuMC4xLCE9Mi4wLjEsPD0yLjAuMCw+PTEuMC4wJyk+CiAgICAgICAgPj4+IFNwZWNpZmllclNldCgiPj0xLjAuMCwhPTEuMC4xIikgJiBTcGVjaWZpZXJTZXQoJzw9Mi4wLjAsIT0yLjAuMScpCiAgICAgICAgPFNwZWNpZmllclNldCgnIT0xLjAuMSwhPTIuMC4xLDw9Mi4wLjAsPj0xLjAuMCcpPgogICAgICAgICIiIgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHN0cik6CiAgICAgICAgICAgIG90aGVyID0gU3BlY2lmaWVyU2V0KG90aGVyKQogICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFNwZWNpZmllclNldCk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICAgICBzcGVjaWZpZXIgPSBTcGVjaWZpZXJTZXQoKQogICAgICAgIHNwZWNpZmllci5fc3BlY3MgPSBmcm96ZW5zZXQoc2VsZi5fc3BlY3MgfCBvdGhlci5fc3BlY3MpCgogICAgICAgIGlmIHNlbGYuX3ByZXJlbGVhc2VzIGlzIE5vbmUgYW5kIG90aGVyLl9wcmVyZWxlYXNlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3BlY2lmaWVyLl9wcmVyZWxlYXNlcyA9IG90aGVyLl9wcmVyZWxlYXNlcwogICAgICAgIGVsaWYgc2VsZi5fcHJlcmVsZWFzZXMgaXMgbm90IE5vbmUgYW5kIG90aGVyLl9wcmVyZWxlYXNlcyBpcyBOb25lOgogICAgICAgICAgICBzcGVjaWZpZXIuX3ByZXJlbGVhc2VzID0gc2VsZi5fcHJlcmVsZWFzZXMKICAgICAgICBlbGlmIHNlbGYuX3ByZXJlbGVhc2VzID09IG90aGVyLl9wcmVyZWxlYXNlczoKICAgICAgICAgICAgc3BlY2lmaWVyLl9wcmVyZWxlYXNlcyA9IHNlbGYuX3ByZXJlbGVhc2VzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJDYW5ub3QgY29tYmluZSBTcGVjaWZpZXJTZXRzIHdpdGggVHJ1ZSBhbmQgRmFsc2UgcHJlcmVsZWFzZSAiCiAgICAgICAgICAgICAgICAib3ZlcnJpZGVzLiIKICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4gc3BlY2lmaWVyCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgogICAgICAgICIiIldoZXRoZXIgb3Igbm90IHRoZSB0d28gU3BlY2lmaWVyU2V0LWxpa2Ugb2JqZWN0cyBhcmUgZXF1YWwuCgogICAgICAgIDpwYXJhbSBvdGhlcjogVGhlIG90aGVyIG9iamVjdCB0byBjaGVjayBhZ2FpbnN0LgoKICAgICAgICBUaGUgdmFsdWUgb2YgOmF0dHI6YHByZXJlbGVhc2VzYCBpcyBpZ25vcmVkLgoKICAgICAgICA+Pj4gU3BlY2lmaWVyU2V0KCI+PTEuMC4wLCE9MS4wLjEiKSA9PSBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiAoU3BlY2lmaWVyU2V0KCI+PTEuMC4wLCE9MS4wLjEiLCBwcmVyZWxlYXNlcz1GYWxzZSkgPT0KICAgICAgICAuLi4gIFNwZWNpZmllclNldCgiPj0xLjAuMCwhPTEuMC4xIiwgcHJlcmVsZWFzZXM9VHJ1ZSkpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpID09ICI+PTEuMC4wLCE9MS4wLjEiCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpID09IFNwZWNpZmllclNldCgiPj0xLjAuMCIpCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gU3BlY2lmaWVyU2V0KCI+PTEuMC4wLCE9MS4wLjEiKSA9PSBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMiIpCiAgICAgICAgRmFsc2UKICAgICAgICAiIiIKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCAoc3RyLCBTcGVjaWZpZXIpKToKICAgICAgICAgICAgb3RoZXIgPSBTcGVjaWZpZXJTZXQoc3RyKG90aGVyKSkKICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTcGVjaWZpZXJTZXQpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICAgICAgcmV0dXJuIHNlbGYuX3NwZWNzID09IG90aGVyLl9zcGVjcwoKICAgIGRlZiBfX2xlbl9fKHNlbGYpIC0+IGludDoKICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BlY2lmaWVycyBpbiB0aGlzIHNwZWNpZmllciBzZXQuIiIiCiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9zcGVjcykKCiAgICBkZWYgX19pdGVyX18oc2VsZikgLT4gSXRlcmF0b3JbU3BlY2lmaWVyXToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgU3BlY2lmaWVyYCBpbnN0YW5jZXMKICAgICAgICBpbiB0aGlzIHNwZWNpZmllciBzZXQuCgogICAgICAgID4+PiBzb3J0ZWQoU3BlY2lmaWVyU2V0KCI+PTEuMC4wLCE9MS4wLjEiKSwga2V5PXN0cikKICAgICAgICBbPFNwZWNpZmllcignIT0xLjAuMScpPiwgPFNwZWNpZmllcignPj0xLjAuMCcpPl0KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9zcGVjcykKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW06IFVucGFyc2VkVmVyc2lvbikgLT4gYm9vbDoKICAgICAgICAiIiJSZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGl0ZW0gaXMgY29udGFpbmVkIGluIHRoaXMgc3BlY2lmaWVyLgoKICAgICAgICA6cGFyYW0gaXRlbTogVGhlIGl0ZW0gdG8gY2hlY2sgZm9yLgoKICAgICAgICBUaGlzIGlzIHVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IgYW5kIGJlaGF2ZXMgdGhlIHNhbWUgYXMKICAgICAgICA6bWV0aDpgY29udGFpbnNgIHdpdGggbm8gYGBwcmVyZWxlYXNlc2BgIGFyZ3VtZW50IHBhc3NlZC4KCiAgICAgICAgPj4+ICIxLjIuMyIgaW4gU3BlY2lmaWVyU2V0KCI+PTEuMC4wLCE9MS4wLjEiKQogICAgICAgIFRydWUKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMiKSBpbiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiAiMS4wLjEiIGluIFNwZWNpZmllclNldCgiPj0xLjAuMCwhPTEuMC4xIikKICAgICAgICBGYWxzZQogICAgICAgID4+PiAiMS4zLjBhMSIgaW4gU3BlY2lmaWVyU2V0KCI+PTEuMC4wLCE9MS4wLjEiKQogICAgICAgIEZhbHNlCiAgICAgICAgPj4+ICIxLjMuMGExIiBpbiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIsIHByZXJlbGVhc2VzPVRydWUpCiAgICAgICAgVHJ1ZQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLmNvbnRhaW5zKGl0ZW0pCgogICAgZGVmIGNvbnRhaW5zKAogICAgICAgIHNlbGYsCiAgICAgICAgaXRlbTogVW5wYXJzZWRWZXJzaW9uLAogICAgICAgIHByZXJlbGVhc2VzOiBPcHRpb25hbFtib29sXSA9IE5vbmUsCiAgICAgICAgaW5zdGFsbGVkOiBPcHRpb25hbFtib29sXSA9IE5vbmUsCiAgICApIC0+IGJvb2w6CiAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBpdGVtIGlzIGNvbnRhaW5lZCBpbiB0aGlzIFNwZWNpZmllclNldC4KCiAgICAgICAgOnBhcmFtIGl0ZW06CiAgICAgICAgICAgIFRoZSBpdGVtIHRvIGNoZWNrIGZvciwgd2hpY2ggY2FuIGJlIGEgdmVyc2lvbiBzdHJpbmcgb3IgYQogICAgICAgICAgICA6Y2xhc3M6YFZlcnNpb25gIGluc3RhbmNlLgogICAgICAgIDpwYXJhbSBwcmVyZWxlYXNlczoKICAgICAgICAgICAgV2hldGhlciBvciBub3QgdG8gbWF0Y2ggcHJlcmVsZWFzZXMgd2l0aCB0aGlzIFNwZWNpZmllclNldC4gSWYgc2V0IHRvCiAgICAgICAgICAgIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIGl0IHVzZXMgOmF0dHI6YHByZXJlbGVhc2VzYCB0byBkZXRlcm1pbmUKICAgICAgICAgICAgd2hldGhlciBvciBub3QgcHJlcmVsZWFzZXMgYXJlIGFsbG93ZWQuCgogICAgICAgID4+PiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpLmNvbnRhaW5zKCIxLjIuMyIpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpLmNvbnRhaW5zKFZlcnNpb24oIjEuMi4zIikpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpLmNvbnRhaW5zKCIxLjAuMSIpCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gU3BlY2lmaWVyU2V0KCI+PTEuMC4wLCE9MS4wLjEiKS5jb250YWlucygiMS4zLjBhMSIpCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gU3BlY2lmaWVyU2V0KCI+PTEuMC4wLCE9MS4wLjEiLCBwcmVyZWxlYXNlcz1UcnVlKS5jb250YWlucygiMS4zLjBhMSIpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBTcGVjaWZpZXJTZXQoIj49MS4wLjAsIT0xLjAuMSIpLmNvbnRhaW5zKCIxLjMuMGExIiwgcHJlcmVsZWFzZXM9VHJ1ZSkKICAgICAgICBUcnVlCiAgICAgICAgIiIiCiAgICAgICAgIyBFbnN1cmUgdGhhdCBvdXIgaXRlbSBpcyBhIFZlcnNpb24gaW5zdGFuY2UuCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgVmVyc2lvbik6CiAgICAgICAgICAgIGl0ZW0gPSBWZXJzaW9uKGl0ZW0pCgogICAgICAgICMgRGV0ZXJtaW5lIGlmIHdlJ3JlIGZvcmNpbmcgYSBwcmVyZWxlYXNlIG9yIG5vdCwgaWYgd2UncmUgbm90IGZvcmNpbmcKICAgICAgICAjIG9uZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGZpbHRlciBjYWxsLCB0aGVuIHdlJ2xsIHVzZSB3aGF0ZXZlciB0aGUKICAgICAgICAjIFNwZWNpZmllclNldCB0aGlua3MgZm9yIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBzdXBwb3J0IHByZXJlbGVhc2VzLgogICAgICAgIGlmIHByZXJlbGVhc2VzIGlzIE5vbmU6CiAgICAgICAgICAgIHByZXJlbGVhc2VzID0gc2VsZi5wcmVyZWxlYXNlcwoKICAgICAgICAjIFdlIGNhbiBkZXRlcm1pbmUgaWYgd2UncmUgZ29pbmcgdG8gYWxsb3cgcHJlLXJlbGVhc2VzIGJ5IGxvb2tpbmcgdG8KICAgICAgICAjIHNlZSBpZiBhbnkgb2YgdGhlIHVuZGVybHlpbmcgaXRlbXMgc3VwcG9ydHMgdGhlbS4gSWYgbm9uZSBvZiB0aGVtIGRvCiAgICAgICAgIyBhbmQgdGhpcyBpdGVtIGlzIGEgcHJlLXJlbGVhc2UgdGhlbiB3ZSBkbyBub3QgYWxsb3cgaXQgYW5kIHdlIGNhbgogICAgICAgICMgc2hvcnQgY2lyY3VpdCB0aGF0IGhlcmUuCiAgICAgICAgIyBOb3RlOiBUaGlzIG1lYW5zIHRoYXQgMS4wLmRldjEgd291bGQgbm90IGJlIGNvbnRhaW5lZCBpbiBzb21ldGhpbmcKICAgICAgICAjICAgICAgIGxpa2UgPj0xLjAuZGV2YWJjIGhvd2V2ZXIgaXQgd291bGQgYmUgaW4gPj0xLjAuZGViYWJjLD4wLjAuZGV2MAogICAgICAgIGlmIG5vdCBwcmVyZWxlYXNlcyBhbmQgaXRlbS5pc19wcmVyZWxlYXNlOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgaWYgaW5zdGFsbGVkIGFuZCBpdGVtLmlzX3ByZXJlbGVhc2U6CiAgICAgICAgICAgIGl0ZW0gPSBWZXJzaW9uKGl0ZW0uYmFzZV92ZXJzaW9uKQoKICAgICAgICAjIFdlIHNpbXBseSBkaXNwYXRjaCB0byB0aGUgdW5kZXJseWluZyBzcGVjcyBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQogICAgICAgICMgZ2l2ZW4gdmVyc2lvbiBpcyBjb250YWluZWQgd2l0aGluIGFsbCBvZiB0aGVtLgogICAgICAgICMgTm90ZTogVGhpcyB1c2Ugb2YgYWxsKCkgaGVyZSBtZWFucyB0aGF0IGFuIGVtcHR5IHNldCBvZiBzcGVjaWZpZXJzCiAgICAgICAgIyAgICAgICB3aWxsIGFsd2F5cyByZXR1cm4gVHJ1ZSwgdGhpcyBpcyBhbiBleHBsaWNpdCBkZXNpZ24gZGVjaXNpb24uCiAgICAgICAgcmV0dXJuIGFsbChzLmNvbnRhaW5zKGl0ZW0sIHByZXJlbGVhc2VzPXByZXJlbGVhc2VzKSBmb3IgcyBpbiBzZWxmLl9zcGVjcykKCiAgICBkZWYgZmlsdGVyKAogICAgICAgIHNlbGYsIGl0ZXJhYmxlOiBJdGVyYWJsZVtVbnBhcnNlZFZlcnNpb25WYXJdLCBwcmVyZWxlYXNlczogT3B0aW9uYWxbYm9vbF0gPSBOb25lCiAgICApIC0+IEl0ZXJhdG9yW1VucGFyc2VkVmVyc2lvblZhcl06CiAgICAgICAgIiIiRmlsdGVyIGl0ZW1zIGluIHRoZSBnaXZlbiBpdGVyYWJsZSwgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVycyBpbiB0aGlzIHNldC4KCiAgICAgICAgOnBhcmFtIGl0ZXJhYmxlOgogICAgICAgICAgICBBbiBpdGVyYWJsZSB0aGF0IGNhbiBjb250YWluIHZlcnNpb24gc3RyaW5ncyBhbmQgOmNsYXNzOmBWZXJzaW9uYCBpbnN0YW5jZXMuCiAgICAgICAgICAgIFRoZSBpdGVtcyBpbiB0aGUgaXRlcmFibGUgd2lsbCBiZSBmaWx0ZXJlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllci4KICAgICAgICA6cGFyYW0gcHJlcmVsZWFzZXM6CiAgICAgICAgICAgIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHByZXJlbGVhc2VzIGluIHRoZSByZXR1cm5lZCBpdGVyYXRvci4gSWYgc2V0IHRvCiAgICAgICAgICAgIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIGl0IHdpbGwgYmUgaW50ZWxsaWdlbnRseSBkZWNpZGUgd2hldGhlciB0byBhbGxvdwogICAgICAgICAgICBwcmVyZWxlYXNlcyBvciBub3QgKGJhc2VkIG9uIHRoZSA6YXR0cjpgcHJlcmVsZWFzZXNgIGF0dHJpYnV0ZSwgYW5kCiAgICAgICAgICAgIHdoZXRoZXIgdGhlIG9ubHkgdmVyc2lvbnMgbWF0Y2hpbmcgYXJlIHByZXJlbGVhc2VzKS4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgc21hcnRlciB0aGFuIGp1c3QgYGBmaWx0ZXIoU3BlY2lmaWVyU2V0KC4uLikuY29udGFpbnMsIFsuLi5dKWBgCiAgICAgICAgYmVjYXVzZSBpdCBpbXBsZW1lbnRzIHRoZSBydWxlIGZyb20gOnBlcDpgNDQwYCB0aGF0IGEgcHJlcmVsZWFzZSBpdGVtCiAgICAgICAgU0hPVUxEIGJlIGFjY2VwdGVkIGlmIG5vIG90aGVyIHZlcnNpb25zIG1hdGNoIHRoZSBnaXZlbiBzcGVjaWZpZXIuCgogICAgICAgID4+PiBsaXN0KFNwZWNpZmllclNldCgiPj0xLjIuMyIpLmZpbHRlcihbIjEuMiIsICIxLjMiLCAiMS41YTEiXSkpCiAgICAgICAgWycxLjMnXQogICAgICAgID4+PiBsaXN0KFNwZWNpZmllclNldCgiPj0xLjIuMyIpLmZpbHRlcihbIjEuMiIsICIxLjMiLCBWZXJzaW9uKCIxLjQiKV0pKQogICAgICAgIFsnMS4zJywgPFZlcnNpb24oJzEuNCcpPl0KICAgICAgICA+Pj4gbGlzdChTcGVjaWZpZXJTZXQoIj49MS4yLjMiKS5maWx0ZXIoWyIxLjIiLCAiMS41YTEiXSkpCiAgICAgICAgW10KICAgICAgICA+Pj4gbGlzdChTcGVjaWZpZXJTZXQoIj49MS4yLjMiKS5maWx0ZXIoWyIxLjMiLCAiMS41YTEiXSwgcHJlcmVsZWFzZXM9VHJ1ZSkpCiAgICAgICAgWycxLjMnLCAnMS41YTEnXQogICAgICAgID4+PiBsaXN0KFNwZWNpZmllclNldCgiPj0xLjIuMyIsIHByZXJlbGVhc2VzPVRydWUpLmZpbHRlcihbIjEuMyIsICIxLjVhMSJdKSkKICAgICAgICBbJzEuMycsICcxLjVhMSddCgogICAgICAgIEFuICJlbXB0eSIgU3BlY2lmaWVyU2V0IHdpbGwgZmlsdGVyIGl0ZW1zIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBwcmVyZWxlYXNlCiAgICAgICAgdmVyc2lvbnMgaW4gdGhlIHNldC4KCiAgICAgICAgPj4+IGxpc3QoU3BlY2lmaWVyU2V0KCIiKS5maWx0ZXIoWyIxLjMiLCAiMS41YTEiXSkpCiAgICAgICAgWycxLjMnXQogICAgICAgID4+PiBsaXN0KFNwZWNpZmllclNldCgiIikuZmlsdGVyKFsiMS41YTEiXSkpCiAgICAgICAgWycxLjVhMSddCiAgICAgICAgPj4+IGxpc3QoU3BlY2lmaWVyU2V0KCIiLCBwcmVyZWxlYXNlcz1UcnVlKS5maWx0ZXIoWyIxLjMiLCAiMS41YTEiXSkpCiAgICAgICAgWycxLjMnLCAnMS41YTEnXQogICAgICAgID4+PiBsaXN0KFNwZWNpZmllclNldCgiIikuZmlsdGVyKFsiMS4zIiwgIjEuNWExIl0sIHByZXJlbGVhc2VzPVRydWUpKQogICAgICAgIFsnMS4zJywgJzEuNWExJ10KICAgICAgICAiIiIKICAgICAgICAjIERldGVybWluZSBpZiB3ZSdyZSBmb3JjaW5nIGEgcHJlcmVsZWFzZSBvciBub3QsIGlmIHdlJ3JlIG5vdCBmb3JjaW5nCiAgICAgICAgIyBvbmUgZm9yIHRoaXMgcGFydGljdWxhciBmaWx0ZXIgY2FsbCwgdGhlbiB3ZSdsbCB1c2Ugd2hhdGV2ZXIgdGhlCiAgICAgICAgIyBTcGVjaWZpZXJTZXQgdGhpbmtzIGZvciB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgc3VwcG9ydCBwcmVyZWxlYXNlcy4KICAgICAgICBpZiBwcmVyZWxlYXNlcyBpcyBOb25lOgogICAgICAgICAgICBwcmVyZWxlYXNlcyA9IHNlbGYucHJlcmVsZWFzZXMKCiAgICAgICAgIyBJZiB3ZSBoYXZlIGFueSBzcGVjaWZpZXJzLCB0aGVuIHdlIHdhbnQgdG8gd3JhcCBvdXIgaXRlcmFibGUgaW4gdGhlCiAgICAgICAgIyBmaWx0ZXIgbWV0aG9kIGZvciBlYWNoIG9uZSwgdGhpcyB3aWxsIGFjdCBhcyBhIGxvZ2ljYWwgQU5EIGFtb25nc3QKICAgICAgICAjIGVhY2ggc3BlY2lmaWVyLgogICAgICAgIGlmIHNlbGYuX3NwZWNzOgogICAgICAgICAgICBmb3Igc3BlYyBpbiBzZWxmLl9zcGVjczoKICAgICAgICAgICAgICAgIGl0ZXJhYmxlID0gc3BlYy5maWx0ZXIoaXRlcmFibGUsIHByZXJlbGVhc2VzPWJvb2wocHJlcmVsZWFzZXMpKQogICAgICAgICAgICByZXR1cm4gaXRlcihpdGVyYWJsZSkKICAgICAgICAjIElmIHdlIGRvIG5vdCBoYXZlIGFueSBzcGVjaWZpZXJzLCB0aGVuIHdlIG5lZWQgdG8gaGF2ZSBhIHJvdWdoIGZpbHRlcgogICAgICAgICMgd2hpY2ggd2lsbCBmaWx0ZXIgb3V0IGFueSBwcmUtcmVsZWFzZXMsIHVubGVzcyB0aGVyZSBhcmUgbm8gZmluYWwKICAgICAgICAjIHJlbGVhc2VzLgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZpbHRlcmVkOiBMaXN0W1VucGFyc2VkVmVyc2lvblZhcl0gPSBbXQogICAgICAgICAgICBmb3VuZF9wcmVyZWxlYXNlczogTGlzdFtVbnBhcnNlZFZlcnNpb25WYXJdID0gW10KCiAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZXJhYmxlOgogICAgICAgICAgICAgICAgcGFyc2VkX3ZlcnNpb24gPSBfY29lcmNlX3ZlcnNpb24oaXRlbSkKCiAgICAgICAgICAgICAgICAjIFN0b3JlIGFueSBpdGVtIHdoaWNoIGlzIGEgcHJlLXJlbGVhc2UgZm9yIGxhdGVyIHVubGVzcyB3ZSd2ZQogICAgICAgICAgICAgICAgIyBhbHJlYWR5IGZvdW5kIGEgZmluYWwgdmVyc2lvbiBvciB3ZSBhcmUgYWNjZXB0aW5nIHByZXJlbGVhc2VzCiAgICAgICAgICAgICAgICBpZiBwYXJzZWRfdmVyc2lvbi5pc19wcmVyZWxlYXNlIGFuZCBub3QgcHJlcmVsZWFzZXM6CiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZpbHRlcmVkOgogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9wcmVyZWxlYXNlcy5hcHBlbmQoaXRlbSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBwZW5kKGl0ZW0pCgogICAgICAgICAgICAjIElmIHdlJ3ZlIGZvdW5kIG5vIGl0ZW1zIGV4Y2VwdCBmb3IgcHJlLXJlbGVhc2VzLCB0aGVuIHdlJ2xsIGdvCiAgICAgICAgICAgICMgYWhlYWQgYW5kIHVzZSB0aGUgcHJlLXJlbGVhc2VzCiAgICAgICAgICAgIGlmIG5vdCBmaWx0ZXJlZCBhbmQgZm91bmRfcHJlcmVsZWFzZXMgYW5kIHByZXJlbGVhc2VzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihmb3VuZF9wcmVyZWxlYXNlcykKCiAgICAgICAgICAgIHJldHVybiBpdGVyKGZpbHRlcmVkKQpQSwMEFAAAAAAAuiujVqAXt2KRRgAAkUYAABEAAABwYWNrYWdpbmcvdGFncy5weSMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgojIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CiMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCgppbXBvcnQgbG9nZ2luZwppbXBvcnQgcGxhdGZvcm0KaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHN5cwppbXBvcnQgc3lzY29uZmlnCmZyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgRVhURU5TSU9OX1NVRkZJWEVTCmZyb20gdHlwaW5nIGltcG9ydCAoCiAgICBEaWN0LAogICAgRnJvemVuU2V0LAogICAgSXRlcmFibGUsCiAgICBJdGVyYXRvciwKICAgIExpc3QsCiAgICBPcHRpb25hbCwKICAgIFNlcXVlbmNlLAogICAgVHVwbGUsCiAgICBVbmlvbiwKICAgIGNhc3QsCikKCmZyb20gLiBpbXBvcnQgX21hbnlsaW51eCwgX211c2xsaW51eAoKbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgpQeXRob25WZXJzaW9uID0gU2VxdWVuY2VbaW50XQpNYWNWZXJzaW9uID0gVHVwbGVbaW50LCBpbnRdCgpJTlRFUlBSRVRFUl9TSE9SVF9OQU1FUzogRGljdFtzdHIsIHN0cl0gPSB7CiAgICAicHl0aG9uIjogInB5IiwgICMgR2VuZXJpYy4KICAgICJjcHl0aG9uIjogImNwIiwKICAgICJweXB5IjogInBwIiwKICAgICJpcm9ucHl0aG9uIjogImlwIiwKICAgICJqeXRob24iOiAiankiLAp9CgoKXzMyX0JJVF9JTlRFUlBSRVRFUiA9IHN5cy5tYXhzaXplIDw9IDIqKjMyCgoKY2xhc3MgVGFnOgogICAgIiIiCiAgICBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0YWcgdHJpcGxlIGZvciBhIHdoZWVsLgoKICAgIEluc3RhbmNlcyBhcmUgY29uc2lkZXJlZCBpbW11dGFibGUgYW5kIHRodXMgYXJlIGhhc2hhYmxlLiBFcXVhbGl0eSBjaGVja2luZwogICAgaXMgYWxzbyBzdXBwb3J0ZWQuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSBbIl9pbnRlcnByZXRlciIsICJfYWJpIiwgIl9wbGF0Zm9ybSIsICJfaGFzaCJdCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGludGVycHJldGVyOiBzdHIsIGFiaTogc3RyLCBwbGF0Zm9ybTogc3RyKSAtPiBOb25lOgogICAgICAgIHNlbGYuX2ludGVycHJldGVyID0gaW50ZXJwcmV0ZXIubG93ZXIoKQogICAgICAgIHNlbGYuX2FiaSA9IGFiaS5sb3dlcigpCiAgICAgICAgc2VsZi5fcGxhdGZvcm0gPSBwbGF0Zm9ybS5sb3dlcigpCiAgICAgICAgIyBUaGUgX19oYXNoX18gb2YgZXZlcnkgc2luZ2xlIGVsZW1lbnQgaW4gYSBTZXRbVGFnXSB3aWxsIGJlIGV2YWx1YXRlZCBlYWNoIHRpbWUKICAgICAgICAjIHRoYXQgYSBzZXQgY2FsbHMgaXRzIGAuZGlzam9pbnQoKWAgbWV0aG9kLCB3aGljaCBtYXkgYmUgY2FsbGVkIGh1bmRyZWRzIG9mCiAgICAgICAgIyB0aW1lcyB3aGVuIHNjYW5uaW5nIGEgcGFnZSBvZiBsaW5rcyBmb3IgcGFja2FnZXMgd2l0aCB0YWdzIG1hdGNoaW5nIHRoYXQKICAgICAgICAjIFNldFtUYWddLiBQcmUtY29tcHV0aW5nIHRoZSB2YWx1ZSBoZXJlIHByb2R1Y2VzIHNpZ25pZmljYW50IHNwZWVkdXBzIGZvcgogICAgICAgICMgZG93bnN0cmVhbSBjb25zdW1lcnMuCiAgICAgICAgc2VsZi5faGFzaCA9IGhhc2goKHNlbGYuX2ludGVycHJldGVyLCBzZWxmLl9hYmksIHNlbGYuX3BsYXRmb3JtKSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpbnRlcnByZXRlcihzZWxmKSAtPiBzdHI6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVycHJldGVyCgogICAgQHByb3BlcnR5CiAgICBkZWYgYWJpKHNlbGYpIC0+IHN0cjoKICAgICAgICByZXR1cm4gc2VsZi5fYWJpCgogICAgQHByb3BlcnR5CiAgICBkZWYgcGxhdGZvcm0oc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiBzZWxmLl9wbGF0Zm9ybQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXI6IG9iamVjdCkgLT4gYm9vbDoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgVGFnKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgICAgIHJldHVybiAoCiAgICAgICAgICAgIChzZWxmLl9oYXNoID09IG90aGVyLl9oYXNoKSAgIyBTaG9ydC1jaXJjdWl0IEFTQVAgZm9yIHBlcmYgcmVhc29ucy4KICAgICAgICAgICAgYW5kIChzZWxmLl9wbGF0Zm9ybSA9PSBvdGhlci5fcGxhdGZvcm0pCiAgICAgICAgICAgIGFuZCAoc2VsZi5fYWJpID09IG90aGVyLl9hYmkpCiAgICAgICAgICAgIGFuZCAoc2VsZi5faW50ZXJwcmV0ZXIgPT0gb3RoZXIuX2ludGVycHJldGVyKQogICAgICAgICkKCiAgICBkZWYgX19oYXNoX18oc2VsZikgLT4gaW50OgogICAgICAgIHJldHVybiBzZWxmLl9oYXNoCgogICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiBmIntzZWxmLl9pbnRlcnByZXRlcn0te3NlbGYuX2FiaX0te3NlbGYuX3BsYXRmb3JtfSIKCiAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiBmIjx7c2VsZn0gQCB7aWQoc2VsZil9PiIKCgpkZWYgcGFyc2VfdGFnKHRhZzogc3RyKSAtPiBGcm96ZW5TZXRbVGFnXToKICAgICIiIgogICAgUGFyc2VzIHRoZSBwcm92aWRlZCB0YWcgKGUuZy4gYHB5My1ub25lLWFueWApIGludG8gYSBmcm96ZW5zZXQgb2YgVGFnIGluc3RhbmNlcy4KCiAgICBSZXR1cm5pbmcgYSBzZXQgaXMgcmVxdWlyZWQgZHVlIHRvIHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSB0YWcgaXMgYQogICAgY29tcHJlc3NlZCB0YWcgc2V0LgogICAgIiIiCiAgICB0YWdzID0gc2V0KCkKICAgIGludGVycHJldGVycywgYWJpcywgcGxhdGZvcm1zID0gdGFnLnNwbGl0KCItIikKICAgIGZvciBpbnRlcnByZXRlciBpbiBpbnRlcnByZXRlcnMuc3BsaXQoIi4iKToKICAgICAgICBmb3IgYWJpIGluIGFiaXMuc3BsaXQoIi4iKToKICAgICAgICAgICAgZm9yIHBsYXRmb3JtXyBpbiBwbGF0Zm9ybXMuc3BsaXQoIi4iKToKICAgICAgICAgICAgICAgIHRhZ3MuYWRkKFRhZyhpbnRlcnByZXRlciwgYWJpLCBwbGF0Zm9ybV8pKQogICAgcmV0dXJuIGZyb3plbnNldCh0YWdzKQoKCmRlZiBfZ2V0X2NvbmZpZ192YXIobmFtZTogc3RyLCB3YXJuOiBib29sID0gRmFsc2UpIC0+IFVuaW9uW2ludCwgc3RyLCBOb25lXToKICAgIHZhbHVlID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKG5hbWUpCiAgICBpZiB2YWx1ZSBpcyBOb25lIGFuZCB3YXJuOgogICAgICAgIGxvZ2dlci5kZWJ1ZygKICAgICAgICAgICAgIkNvbmZpZyB2YXJpYWJsZSAnJXMnIGlzIHVuc2V0LCBQeXRob24gQUJJIHRhZyBtYXkgYmUgaW5jb3JyZWN0IiwgbmFtZQogICAgICAgICkKICAgIHJldHVybiB2YWx1ZQoKCmRlZiBfbm9ybWFsaXplX3N0cmluZyhzdHJpbmc6IHN0cikgLT4gc3RyOgogICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKCIuIiwgIl8iKS5yZXBsYWNlKCItIiwgIl8iKQoKCmRlZiBfYWJpM19hcHBsaWVzKHB5dGhvbl92ZXJzaW9uOiBQeXRob25WZXJzaW9uKSAtPiBib29sOgogICAgIiIiCiAgICBEZXRlcm1pbmUgaWYgdGhlIFB5dGhvbiB2ZXJzaW9uIHN1cHBvcnRzIGFiaTMuCgogICAgUEVQIDM4NCB3YXMgZmlyc3QgaW1wbGVtZW50ZWQgaW4gUHl0aG9uIDMuMi4KICAgICIiIgogICAgcmV0dXJuIGxlbihweXRob25fdmVyc2lvbikgPiAxIGFuZCB0dXBsZShweXRob25fdmVyc2lvbikgPj0gKDMsIDIpCgoKZGVmIF9jcHl0aG9uX2FiaXMocHlfdmVyc2lvbjogUHl0aG9uVmVyc2lvbiwgd2FybjogYm9vbCA9IEZhbHNlKSAtPiBMaXN0W3N0cl06CiAgICBweV92ZXJzaW9uID0gdHVwbGUocHlfdmVyc2lvbikgICMgVG8gYWxsb3cgZm9yIHZlcnNpb24gY29tcGFyaXNvbi4KICAgIGFiaXMgPSBbXQogICAgdmVyc2lvbiA9IF92ZXJzaW9uX25vZG90KHB5X3ZlcnNpb25bOjJdKQogICAgZGVidWcgPSBweW1hbGxvYyA9IHVjczQgPSAiIgogICAgd2l0aF9kZWJ1ZyA9IF9nZXRfY29uZmlnX3ZhcigiUHlfREVCVUciLCB3YXJuKQogICAgaGFzX3JlZmNvdW50ID0gaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50IikKICAgICMgV2luZG93cyBkb2Vzbid0IHNldCBQeV9ERUJVRywgc28gY2hlY2tpbmcgZm9yIHN1cHBvcnQgb2YgZGVidWctY29tcGlsZWQKICAgICMgZXh0ZW5zaW9uIG1vZHVsZXMgaXMgdGhlIGJlc3Qgb3B0aW9uLgogICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHlwYS9waXAvaXNzdWVzLzMzODMjaXNzdWVjb21tZW50LTE3MzI2NzY5MgogICAgaGFzX2V4dCA9ICJfZC5weWQiIGluIEVYVEVOU0lPTl9TVUZGSVhFUwogICAgaWYgd2l0aF9kZWJ1ZyBvciAod2l0aF9kZWJ1ZyBpcyBOb25lIGFuZCAoaGFzX3JlZmNvdW50IG9yIGhhc19leHQpKToKICAgICAgICBkZWJ1ZyA9ICJkIgogICAgaWYgcHlfdmVyc2lvbiA8ICgzLCA4KToKICAgICAgICB3aXRoX3B5bWFsbG9jID0gX2dldF9jb25maWdfdmFyKCJXSVRIX1BZTUFMTE9DIiwgd2FybikKICAgICAgICBpZiB3aXRoX3B5bWFsbG9jIG9yIHdpdGhfcHltYWxsb2MgaXMgTm9uZToKICAgICAgICAgICAgcHltYWxsb2MgPSAibSIKICAgICAgICBpZiBweV92ZXJzaW9uIDwgKDMsIDMpOgogICAgICAgICAgICB1bmljb2RlX3NpemUgPSBfZ2V0X2NvbmZpZ192YXIoIlB5X1VOSUNPREVfU0laRSIsIHdhcm4pCiAgICAgICAgICAgIGlmIHVuaWNvZGVfc2l6ZSA9PSA0IG9yICgKICAgICAgICAgICAgICAgIHVuaWNvZGVfc2l6ZSBpcyBOb25lIGFuZCBzeXMubWF4dW5pY29kZSA9PSAweDEwRkZGRgogICAgICAgICAgICApOgogICAgICAgICAgICAgICAgdWNzNCA9ICJ1IgogICAgZWxpZiBkZWJ1ZzoKICAgICAgICAjIERlYnVnIGJ1aWxkcyBjYW4gYWxzbyBsb2FkICJub3JtYWwiIGV4dGVuc2lvbiBtb2R1bGVzLgogICAgICAgICMgV2UgY2FuIGFsc28gYXNzdW1lIG5vIFVDUy00IG9yIHB5bWFsbG9jIHJlcXVpcmVtZW50LgogICAgICAgIGFiaXMuYXBwZW5kKGYiY3B7dmVyc2lvbn0iKQogICAgYWJpcy5pbnNlcnQoCiAgICAgICAgMCwKICAgICAgICAiY3B7dmVyc2lvbn17ZGVidWd9e3B5bWFsbG9jfXt1Y3M0fSIuZm9ybWF0KAogICAgICAgICAgICB2ZXJzaW9uPXZlcnNpb24sIGRlYnVnPWRlYnVnLCBweW1hbGxvYz1weW1hbGxvYywgdWNzND11Y3M0CiAgICAgICAgKSwKICAgICkKICAgIHJldHVybiBhYmlzCgoKZGVmIGNweXRob25fdGFncygKICAgIHB5dGhvbl92ZXJzaW9uOiBPcHRpb25hbFtQeXRob25WZXJzaW9uXSA9IE5vbmUsCiAgICBhYmlzOiBPcHRpb25hbFtJdGVyYWJsZVtzdHJdXSA9IE5vbmUsCiAgICBwbGF0Zm9ybXM6IE9wdGlvbmFsW0l0ZXJhYmxlW3N0cl1dID0gTm9uZSwKICAgICosCiAgICB3YXJuOiBib29sID0gRmFsc2UsCikgLT4gSXRlcmF0b3JbVGFnXToKICAgICIiIgogICAgWWllbGRzIHRoZSB0YWdzIGZvciBhIENQeXRob24gaW50ZXJwcmV0ZXIuCgogICAgVGhlIHRhZ3MgY29uc2lzdCBvZjoKICAgIC0gY3A8cHl0aG9uX3ZlcnNpb24+LTxhYmk+LTxwbGF0Zm9ybT4KICAgIC0gY3A8cHl0aG9uX3ZlcnNpb24+LWFiaTMtPHBsYXRmb3JtPgogICAgLSBjcDxweXRob25fdmVyc2lvbj4tbm9uZS08cGxhdGZvcm0+CiAgICAtIGNwPGxlc3MgdGhhbiBweXRob25fdmVyc2lvbj4tYWJpMy08cGxhdGZvcm0+ICAjIE9sZGVyIFB5dGhvbiB2ZXJzaW9ucyBkb3duIHRvIDMuMi4KCiAgICBJZiBweXRob25fdmVyc2lvbiBvbmx5IHNwZWNpZmllcyBhIG1ham9yIHZlcnNpb24gdGhlbiB1c2VyLXByb3ZpZGVkIEFCSXMgYW5kCiAgICB0aGUgJ25vbmUnIEFCSXRhZyB3aWxsIGJlIHVzZWQuCgogICAgSWYgJ2FiaTMnIG9yICdub25lJyBhcmUgc3BlY2lmaWVkIGluICdhYmlzJyB0aGVuIHRoZXkgd2lsbCBiZSB5aWVsZGVkIGF0CiAgICB0aGVpciBub3JtYWwgcG9zaXRpb24gYW5kIG5vdCBhdCB0aGUgYmVnaW5uaW5nLgogICAgIiIiCiAgICBpZiBub3QgcHl0aG9uX3ZlcnNpb246CiAgICAgICAgcHl0aG9uX3ZlcnNpb24gPSBzeXMudmVyc2lvbl9pbmZvWzoyXQoKICAgIGludGVycHJldGVyID0gZiJjcHtfdmVyc2lvbl9ub2RvdChweXRob25fdmVyc2lvbls6Ml0pfSIKCiAgICBpZiBhYmlzIGlzIE5vbmU6CiAgICAgICAgaWYgbGVuKHB5dGhvbl92ZXJzaW9uKSA+IDE6CiAgICAgICAgICAgIGFiaXMgPSBfY3B5dGhvbl9hYmlzKHB5dGhvbl92ZXJzaW9uLCB3YXJuKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGFiaXMgPSBbXQogICAgYWJpcyA9IGxpc3QoYWJpcykKICAgICMgJ2FiaTMnIGFuZCAnbm9uZScgYXJlIGV4cGxpY2l0bHkgaGFuZGxlZCBsYXRlci4KICAgIGZvciBleHBsaWNpdF9hYmkgaW4gKCJhYmkzIiwgIm5vbmUiKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGFiaXMucmVtb3ZlKGV4cGxpY2l0X2FiaSkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIHBsYXRmb3JtcyA9IGxpc3QocGxhdGZvcm1zIG9yIHBsYXRmb3JtX3RhZ3MoKSkKICAgIGZvciBhYmkgaW4gYWJpczoKICAgICAgICBmb3IgcGxhdGZvcm1fIGluIHBsYXRmb3JtczoKICAgICAgICAgICAgeWllbGQgVGFnKGludGVycHJldGVyLCBhYmksIHBsYXRmb3JtXykKICAgIGlmIF9hYmkzX2FwcGxpZXMocHl0aG9uX3ZlcnNpb24pOgogICAgICAgIHlpZWxkIGZyb20gKFRhZyhpbnRlcnByZXRlciwgImFiaTMiLCBwbGF0Zm9ybV8pIGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zKQogICAgeWllbGQgZnJvbSAoVGFnKGludGVycHJldGVyLCAibm9uZSIsIHBsYXRmb3JtXykgZm9yIHBsYXRmb3JtXyBpbiBwbGF0Zm9ybXMpCgogICAgaWYgX2FiaTNfYXBwbGllcyhweXRob25fdmVyc2lvbik6CiAgICAgICAgZm9yIG1pbm9yX3ZlcnNpb24gaW4gcmFuZ2UocHl0aG9uX3ZlcnNpb25bMV0gLSAxLCAxLCAtMSk6CiAgICAgICAgICAgIGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zOgogICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSAiY3B7dmVyc2lvbn0iLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPV92ZXJzaW9uX25vZG90KChweXRob25fdmVyc2lvblswXSwgbWlub3JfdmVyc2lvbikpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB5aWVsZCBUYWcoaW50ZXJwcmV0ZXIsICJhYmkzIiwgcGxhdGZvcm1fKQoKCmRlZiBfZ2VuZXJpY19hYmkoKSAtPiBMaXN0W3N0cl06CiAgICAiIiIKICAgIFJldHVybiB0aGUgQUJJIHRhZyBiYXNlZCBvbiBFWFRfU1VGRklYLgogICAgIiIiCiAgICAjIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzIG9mIGBFWFRfU1VGRklYYC4KICAgICMgV2Ugd2FudCB0byBrZWVwIHRoZSBwYXJ0cyB3aGljaCBhcmUgcmVsYXRlZCB0byB0aGUgQUJJIGFuZCByZW1vdmUgdGhlCiAgICAjIHBhcnRzIHdoaWNoIGFyZSByZWxhdGVkIHRvIHRoZSBwbGF0Zm9ybToKICAgICMgLSBsaW51eDogICAnLmNweXRob24tMzEwLXg4Nl82NC1saW51eC1nbnUuc28nID0+IGNwMzEwCiAgICAjIC0gbWFjOiAgICAgJy5jcHl0aG9uLTMxMC1kYXJ3aW4uc28nICAgICAgICAgICA9PiBjcDMxMAogICAgIyAtIHdpbjogICAgICcuY3AzMTAtd2luX2FtZDY0LnB5ZCcgICAgICAgICAgICAgPT4gY3AzMTAKICAgICMgLSB3aW46ICAgICAnLnB5ZCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGNwMzcgKHVzZXMgX2NweXRob25fYWJpcygpKQogICAgIyAtIHB5cHk6ICAgICcucHlweTM4LXBwNzMteDg2XzY0LWxpbnV4LWdudS5zbycgPT4gcHlweTM4X3BwNzMKICAgICMgLSBncmFhbHB5OiAnLmdyYWFscHktMzgtbmF0aXZlLXg4Nl82NC1kYXJ3aW4uZHlsaWInCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBncmFhbHB5XzM4X25hdGl2ZQoKICAgIGV4dF9zdWZmaXggPSBfZ2V0X2NvbmZpZ192YXIoIkVYVF9TVUZGSVgiLCB3YXJuPVRydWUpCiAgICBpZiBub3QgaXNpbnN0YW5jZShleHRfc3VmZml4LCBzdHIpIG9yIGV4dF9zdWZmaXhbMF0gIT0gIi4iOgogICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCJpbnZhbGlkIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpIikKICAgIHBhcnRzID0gZXh0X3N1ZmZpeC5zcGxpdCgiLiIpCiAgICBpZiBsZW4ocGFydHMpIDwgMzoKICAgICAgICAjIENQeXRob24zLjcgYW5kIGVhcmxpZXIgdXNlcyAiLnB5ZCIgb24gV2luZG93cy4KICAgICAgICByZXR1cm4gX2NweXRob25fYWJpcyhzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgIHNvYWJpID0gcGFydHNbMV0KICAgIGlmIHNvYWJpLnN0YXJ0c3dpdGgoImNweXRob24iKToKICAgICAgICAjIG5vbi13aW5kb3dzCiAgICAgICAgYWJpID0gImNwIiArIHNvYWJpLnNwbGl0KCItIilbMV0KICAgIGVsaWYgc29hYmkuc3RhcnRzd2l0aCgiY3AiKToKICAgICAgICAjIHdpbmRvd3MKICAgICAgICBhYmkgPSBzb2FiaS5zcGxpdCgiLSIpWzBdCiAgICBlbGlmIHNvYWJpLnN0YXJ0c3dpdGgoInB5cHkiKToKICAgICAgICBhYmkgPSAiLSIuam9pbihzb2FiaS5zcGxpdCgiLSIpWzoyXSkKICAgIGVsaWYgc29hYmkuc3RhcnRzd2l0aCgiZ3JhYWxweSIpOgogICAgICAgIGFiaSA9ICItIi5qb2luKHNvYWJpLnNwbGl0KCItIilbOjNdKQogICAgZWxpZiBzb2FiaToKICAgICAgICAjIHB5c3RvbiwgaXJvbnB5dGhvbiwgb3RoZXJzPwogICAgICAgIGFiaSA9IHNvYWJpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBbXQogICAgcmV0dXJuIFtfbm9ybWFsaXplX3N0cmluZyhhYmkpXQoKCmRlZiBnZW5lcmljX3RhZ3MoCiAgICBpbnRlcnByZXRlcjogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCiAgICBhYmlzOiBPcHRpb25hbFtJdGVyYWJsZVtzdHJdXSA9IE5vbmUsCiAgICBwbGF0Zm9ybXM6IE9wdGlvbmFsW0l0ZXJhYmxlW3N0cl1dID0gTm9uZSwKICAgICosCiAgICB3YXJuOiBib29sID0gRmFsc2UsCikgLT4gSXRlcmF0b3JbVGFnXToKICAgICIiIgogICAgWWllbGRzIHRoZSB0YWdzIGZvciBhIGdlbmVyaWMgaW50ZXJwcmV0ZXIuCgogICAgVGhlIHRhZ3MgY29uc2lzdCBvZjoKICAgIC0gPGludGVycHJldGVyPi08YWJpPi08cGxhdGZvcm0+CgogICAgVGhlICJub25lIiBBQkkgd2lsbCBiZSBhZGRlZCBpZiBpdCB3YXMgbm90IGV4cGxpY2l0bHkgcHJvdmlkZWQuCiAgICAiIiIKICAgIGlmIG5vdCBpbnRlcnByZXRlcjoKICAgICAgICBpbnRlcnBfbmFtZSA9IGludGVycHJldGVyX25hbWUoKQogICAgICAgIGludGVycF92ZXJzaW9uID0gaW50ZXJwcmV0ZXJfdmVyc2lvbih3YXJuPXdhcm4pCiAgICAgICAgaW50ZXJwcmV0ZXIgPSAiIi5qb2luKFtpbnRlcnBfbmFtZSwgaW50ZXJwX3ZlcnNpb25dKQogICAgaWYgYWJpcyBpcyBOb25lOgogICAgICAgIGFiaXMgPSBfZ2VuZXJpY19hYmkoKQogICAgZWxzZToKICAgICAgICBhYmlzID0gbGlzdChhYmlzKQogICAgcGxhdGZvcm1zID0gbGlzdChwbGF0Zm9ybXMgb3IgcGxhdGZvcm1fdGFncygpKQogICAgaWYgIm5vbmUiIG5vdCBpbiBhYmlzOgogICAgICAgIGFiaXMuYXBwZW5kKCJub25lIikKICAgIGZvciBhYmkgaW4gYWJpczoKICAgICAgICBmb3IgcGxhdGZvcm1fIGluIHBsYXRmb3JtczoKICAgICAgICAgICAgeWllbGQgVGFnKGludGVycHJldGVyLCBhYmksIHBsYXRmb3JtXykKCgpkZWYgX3B5X2ludGVycHJldGVyX3JhbmdlKHB5X3ZlcnNpb246IFB5dGhvblZlcnNpb24pIC0+IEl0ZXJhdG9yW3N0cl06CiAgICAiIiIKICAgIFlpZWxkcyBQeXRob24gdmVyc2lvbnMgaW4gZGVzY2VuZGluZyBvcmRlci4KCiAgICBBZnRlciB0aGUgbGF0ZXN0IHZlcnNpb24sIHRoZSBtYWpvci1vbmx5IHZlcnNpb24gd2lsbCBiZSB5aWVsZGVkLCBhbmQgdGhlbgogICAgYWxsIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoYXQgbWFqb3IgdmVyc2lvbi4KICAgICIiIgogICAgaWYgbGVuKHB5X3ZlcnNpb24pID4gMToKICAgICAgICB5aWVsZCBmInB5e192ZXJzaW9uX25vZG90KHB5X3ZlcnNpb25bOjJdKX0iCiAgICB5aWVsZCBmInB5e3B5X3ZlcnNpb25bMF19IgogICAgaWYgbGVuKHB5X3ZlcnNpb24pID4gMToKICAgICAgICBmb3IgbWlub3IgaW4gcmFuZ2UocHlfdmVyc2lvblsxXSAtIDEsIC0xLCAtMSk6CiAgICAgICAgICAgIHlpZWxkIGYicHl7X3ZlcnNpb25fbm9kb3QoKHB5X3ZlcnNpb25bMF0sIG1pbm9yKSl9IgoKCmRlZiBjb21wYXRpYmxlX3RhZ3MoCiAgICBweXRob25fdmVyc2lvbjogT3B0aW9uYWxbUHl0aG9uVmVyc2lvbl0gPSBOb25lLAogICAgaW50ZXJwcmV0ZXI6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAogICAgcGxhdGZvcm1zOiBPcHRpb25hbFtJdGVyYWJsZVtzdHJdXSA9IE5vbmUsCikgLT4gSXRlcmF0b3JbVGFnXToKICAgICIiIgogICAgWWllbGRzIHRoZSBzZXF1ZW5jZSBvZiB0YWdzIHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aCBhIHNwZWNpZmljIHZlcnNpb24gb2YgUHl0aG9uLgoKICAgIFRoZSB0YWdzIGNvbnNpc3Qgb2Y6CiAgICAtIHB5Ki1ub25lLTxwbGF0Zm9ybT4KICAgIC0gPGludGVycHJldGVyPi1ub25lLWFueSAgIyAuLi4gaWYgYGludGVycHJldGVyYCBpcyBwcm92aWRlZC4KICAgIC0gcHkqLW5vbmUtYW55CiAgICAiIiIKICAgIGlmIG5vdCBweXRob25fdmVyc2lvbjoKICAgICAgICBweXRob25fdmVyc2lvbiA9IHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICBwbGF0Zm9ybXMgPSBsaXN0KHBsYXRmb3JtcyBvciBwbGF0Zm9ybV90YWdzKCkpCiAgICBmb3IgdmVyc2lvbiBpbiBfcHlfaW50ZXJwcmV0ZXJfcmFuZ2UocHl0aG9uX3ZlcnNpb24pOgogICAgICAgIGZvciBwbGF0Zm9ybV8gaW4gcGxhdGZvcm1zOgogICAgICAgICAgICB5aWVsZCBUYWcodmVyc2lvbiwgIm5vbmUiLCBwbGF0Zm9ybV8pCiAgICBpZiBpbnRlcnByZXRlcjoKICAgICAgICB5aWVsZCBUYWcoaW50ZXJwcmV0ZXIsICJub25lIiwgImFueSIpCiAgICBmb3IgdmVyc2lvbiBpbiBfcHlfaW50ZXJwcmV0ZXJfcmFuZ2UocHl0aG9uX3ZlcnNpb24pOgogICAgICAgIHlpZWxkIFRhZyh2ZXJzaW9uLCAibm9uZSIsICJhbnkiKQoKCmRlZiBfbWFjX2FyY2goYXJjaDogc3RyLCBpc18zMmJpdDogYm9vbCA9IF8zMl9CSVRfSU5URVJQUkVURVIpIC0+IHN0cjoKICAgIGlmIG5vdCBpc18zMmJpdDoKICAgICAgICByZXR1cm4gYXJjaAoKICAgIGlmIGFyY2guc3RhcnRzd2l0aCgicHBjIik6CiAgICAgICAgcmV0dXJuICJwcGMiCgogICAgcmV0dXJuICJpMzg2IgoKCmRlZiBfbWFjX2JpbmFyeV9mb3JtYXRzKHZlcnNpb246IE1hY1ZlcnNpb24sIGNwdV9hcmNoOiBzdHIpIC0+IExpc3Rbc3RyXToKICAgIGZvcm1hdHMgPSBbY3B1X2FyY2hdCiAgICBpZiBjcHVfYXJjaCA9PSAieDg2XzY0IjoKICAgICAgICBpZiB2ZXJzaW9uIDwgKDEwLCA0KToKICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgZm9ybWF0cy5leHRlbmQoWyJpbnRlbCIsICJmYXQ2NCIsICJmYXQzMiJdKQoKICAgIGVsaWYgY3B1X2FyY2ggPT0gImkzODYiOgogICAgICAgIGlmIHZlcnNpb24gPCAoMTAsIDQpOgogICAgICAgICAgICByZXR1cm4gW10KICAgICAgICBmb3JtYXRzLmV4dGVuZChbImludGVsIiwgImZhdDMyIiwgImZhdCJdKQoKICAgIGVsaWYgY3B1X2FyY2ggPT0gInBwYzY0IjoKICAgICAgICAjIFRPRE86IE5lZWQgdG8gY2FyZSBhYm91dCAzMi1iaXQgUFBDIGZvciBwcGM2NCB0aHJvdWdoIDEwLjI/CiAgICAgICAgaWYgdmVyc2lvbiA+ICgxMCwgNSkgb3IgdmVyc2lvbiA8ICgxMCwgNCk6CiAgICAgICAgICAgIHJldHVybiBbXQogICAgICAgIGZvcm1hdHMuYXBwZW5kKCJmYXQ2NCIpCgogICAgZWxpZiBjcHVfYXJjaCA9PSAicHBjIjoKICAgICAgICBpZiB2ZXJzaW9uID4gKDEwLCA2KToKICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgZm9ybWF0cy5leHRlbmQoWyJmYXQzMiIsICJmYXQiXSkKCiAgICBpZiBjcHVfYXJjaCBpbiB7ImFybTY0IiwgIng4Nl82NCJ9OgogICAgICAgIGZvcm1hdHMuYXBwZW5kKCJ1bml2ZXJzYWwyIikKCiAgICBpZiBjcHVfYXJjaCBpbiB7Ing4Nl82NCIsICJpMzg2IiwgInBwYzY0IiwgInBwYyIsICJpbnRlbCJ9OgogICAgICAgIGZvcm1hdHMuYXBwZW5kKCJ1bml2ZXJzYWwiKQoKICAgIHJldHVybiBmb3JtYXRzCgoKZGVmIG1hY19wbGF0Zm9ybXMoCiAgICB2ZXJzaW9uOiBPcHRpb25hbFtNYWNWZXJzaW9uXSA9IE5vbmUsIGFyY2g6IE9wdGlvbmFsW3N0cl0gPSBOb25lCikgLT4gSXRlcmF0b3Jbc3RyXToKICAgICIiIgogICAgWWllbGRzIHRoZSBwbGF0Zm9ybSB0YWdzIGZvciBhIG1hY09TIHN5c3RlbS4KCiAgICBUaGUgYHZlcnNpb25gIHBhcmFtZXRlciBpcyBhIHR3by1pdGVtIHR1cGxlIHNwZWNpZnlpbmcgdGhlIG1hY09TIHZlcnNpb24gdG8KICAgIGdlbmVyYXRlIHBsYXRmb3JtIHRhZ3MgZm9yLiBUaGUgYGFyY2hgIHBhcmFtZXRlciBpcyB0aGUgQ1BVIGFyY2hpdGVjdHVyZSB0bwogICAgZ2VuZXJhdGUgcGxhdGZvcm0gdGFncyBmb3IuIEJvdGggcGFyYW1ldGVycyBkZWZhdWx0IHRvIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZQogICAgZm9yIHRoZSBjdXJyZW50IHN5c3RlbS4KICAgICIiIgogICAgdmVyc2lvbl9zdHIsIF8sIGNwdV9hcmNoID0gcGxhdGZvcm0ubWFjX3ZlcigpCiAgICBpZiB2ZXJzaW9uIGlzIE5vbmU6CiAgICAgICAgdmVyc2lvbiA9IGNhc3QoIk1hY1ZlcnNpb24iLCB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3N0ci5zcGxpdCgiLiIpWzoyXSkpKQogICAgICAgIGlmIHZlcnNpb24gPT0gKDEwLCAxNik6CiAgICAgICAgICAgICMgV2hlbiBidWlsdCBhZ2FpbnN0IGFuIG9sZGVyIG1hY09TIFNESywgUHl0aG9uIHdpbGwgcmVwb3J0IG1hY09TIDEwLjE2CiAgICAgICAgICAgICMgaW5zdGVhZCBvZiB0aGUgcmVhbCB2ZXJzaW9uLgogICAgICAgICAgICB2ZXJzaW9uX3N0ciA9IHN1YnByb2Nlc3MucnVuKAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlLAogICAgICAgICAgICAgICAgICAgICItc1MiLAogICAgICAgICAgICAgICAgICAgICItYyIsCiAgICAgICAgICAgICAgICAgICAgImltcG9ydCBwbGF0Zm9ybTsgcHJpbnQocGxhdGZvcm0ubWFjX3ZlcigpWzBdKSIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgY2hlY2s9VHJ1ZSwKICAgICAgICAgICAgICAgIGVudj17IlNZU1RFTV9WRVJTSU9OX0NPTVBBVCI6ICIwIn0sCiAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCiAgICAgICAgICAgICkuc3Rkb3V0CiAgICAgICAgICAgIHZlcnNpb24gPSBjYXN0KCJNYWNWZXJzaW9uIiwgdHVwbGUobWFwKGludCwgdmVyc2lvbl9zdHIuc3BsaXQoIi4iKVs6Ml0pKSkKICAgIGVsc2U6CiAgICAgICAgdmVyc2lvbiA9IHZlcnNpb24KICAgIGlmIGFyY2ggaXMgTm9uZToKICAgICAgICBhcmNoID0gX21hY19hcmNoKGNwdV9hcmNoKQogICAgZWxzZToKICAgICAgICBhcmNoID0gYXJjaAoKICAgIGlmICgxMCwgMCkgPD0gdmVyc2lvbiBhbmQgdmVyc2lvbiA8ICgxMSwgMCk6CiAgICAgICAgIyBQcmlvciB0byBNYWMgT1MgMTEsIGVhY2ggeWVhcmx5IHJlbGVhc2Ugb2YgTWFjIE9TIGJ1bXBlZCB0aGUKICAgICAgICAjICJtaW5vciIgdmVyc2lvbiBudW1iZXIuICBUaGUgbWFqb3IgdmVyc2lvbiB3YXMgYWx3YXlzIDEwLgogICAgICAgIGZvciBtaW5vcl92ZXJzaW9uIGluIHJhbmdlKHZlcnNpb25bMV0sIC0xLCAtMSk6CiAgICAgICAgICAgIGNvbXBhdF92ZXJzaW9uID0gMTAsIG1pbm9yX3ZlcnNpb24KICAgICAgICAgICAgYmluYXJ5X2Zvcm1hdHMgPSBfbWFjX2JpbmFyeV9mb3JtYXRzKGNvbXBhdF92ZXJzaW9uLCBhcmNoKQogICAgICAgICAgICBmb3IgYmluYXJ5X2Zvcm1hdCBpbiBiaW5hcnlfZm9ybWF0czoKICAgICAgICAgICAgICAgIHlpZWxkICJtYWNvc3hfe21ham9yfV97bWlub3J9X3tiaW5hcnlfZm9ybWF0fSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgIG1ham9yPTEwLCBtaW5vcj1taW5vcl92ZXJzaW9uLCBiaW5hcnlfZm9ybWF0PWJpbmFyeV9mb3JtYXQKICAgICAgICAgICAgICAgICkKCiAgICBpZiB2ZXJzaW9uID49ICgxMSwgMCk6CiAgICAgICAgIyBTdGFydGluZyB3aXRoIE1hYyBPUyAxMSwgZWFjaCB5ZWFybHkgcmVsZWFzZSBidW1wcyB0aGUgbWFqb3IgdmVyc2lvbgogICAgICAgICMgbnVtYmVyLiAgIFRoZSBtaW5vciB2ZXJzaW9ucyBhcmUgbm93IHRoZSBtaWR5ZWFyIHVwZGF0ZXMuCiAgICAgICAgZm9yIG1ham9yX3ZlcnNpb24gaW4gcmFuZ2UodmVyc2lvblswXSwgMTAsIC0xKToKICAgICAgICAgICAgY29tcGF0X3ZlcnNpb24gPSBtYWpvcl92ZXJzaW9uLCAwCiAgICAgICAgICAgIGJpbmFyeV9mb3JtYXRzID0gX21hY19iaW5hcnlfZm9ybWF0cyhjb21wYXRfdmVyc2lvbiwgYXJjaCkKICAgICAgICAgICAgZm9yIGJpbmFyeV9mb3JtYXQgaW4gYmluYXJ5X2Zvcm1hdHM6CiAgICAgICAgICAgICAgICB5aWVsZCAibWFjb3N4X3ttYWpvcn1fe21pbm9yfV97YmluYXJ5X2Zvcm1hdH0iLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICBtYWpvcj1tYWpvcl92ZXJzaW9uLCBtaW5vcj0wLCBiaW5hcnlfZm9ybWF0PWJpbmFyeV9mb3JtYXQKICAgICAgICAgICAgICAgICkKCiAgICBpZiB2ZXJzaW9uID49ICgxMSwgMCk6CiAgICAgICAgIyBNYWMgT1MgMTEgb24geDg2XzY0IGlzIGNvbXBhdGlibGUgd2l0aCBiaW5hcmllcyBmcm9tIHByZXZpb3VzIHJlbGVhc2VzLgogICAgICAgICMgQXJtNjQgc3VwcG9ydCB3YXMgaW50cm9kdWNlZCBpbiAxMS4wLCBzbyBubyBBcm0gYmluYXJpZXMgZnJvbSBwcmV2aW91cwogICAgICAgICMgcmVsZWFzZXMgZXhpc3QuCiAgICAgICAgIwogICAgICAgICMgSG93ZXZlciwgdGhlICJ1bml2ZXJzYWwyIiBiaW5hcnkgZm9ybWF0IGNhbiBoYXZlIGEKICAgICAgICAjIG1hY09TIHZlcnNpb24gZWFybGllciB0aGFuIDExLjAgd2hlbiB0aGUgeDg2XzY0IHBhcnQgb2YgdGhlIGJpbmFyeSBzdXBwb3J0cwogICAgICAgICMgdGhhdCB2ZXJzaW9uIG9mIG1hY09TLgogICAgICAgIGlmIGFyY2ggPT0gIng4Nl82NCI6CiAgICAgICAgICAgIGZvciBtaW5vcl92ZXJzaW9uIGluIHJhbmdlKDE2LCAzLCAtMSk6CiAgICAgICAgICAgICAgICBjb21wYXRfdmVyc2lvbiA9IDEwLCBtaW5vcl92ZXJzaW9uCiAgICAgICAgICAgICAgICBiaW5hcnlfZm9ybWF0cyA9IF9tYWNfYmluYXJ5X2Zvcm1hdHMoY29tcGF0X3ZlcnNpb24sIGFyY2gpCiAgICAgICAgICAgICAgICBmb3IgYmluYXJ5X2Zvcm1hdCBpbiBiaW5hcnlfZm9ybWF0czoKICAgICAgICAgICAgICAgICAgICB5aWVsZCAibWFjb3N4X3ttYWpvcn1fe21pbm9yfV97YmluYXJ5X2Zvcm1hdH0iLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3I9Y29tcGF0X3ZlcnNpb25bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yPWNvbXBhdF92ZXJzaW9uWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlfZm9ybWF0PWJpbmFyeV9mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZvciBtaW5vcl92ZXJzaW9uIGluIHJhbmdlKDE2LCAzLCAtMSk6CiAgICAgICAgICAgICAgICBjb21wYXRfdmVyc2lvbiA9IDEwLCBtaW5vcl92ZXJzaW9uCiAgICAgICAgICAgICAgICBiaW5hcnlfZm9ybWF0ID0gInVuaXZlcnNhbDIiCiAgICAgICAgICAgICAgICB5aWVsZCAibWFjb3N4X3ttYWpvcn1fe21pbm9yfV97YmluYXJ5X2Zvcm1hdH0iLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICBtYWpvcj1jb21wYXRfdmVyc2lvblswXSwKICAgICAgICAgICAgICAgICAgICBtaW5vcj1jb21wYXRfdmVyc2lvblsxXSwKICAgICAgICAgICAgICAgICAgICBiaW5hcnlfZm9ybWF0PWJpbmFyeV9mb3JtYXQsCiAgICAgICAgICAgICAgICApCgoKZGVmIF9saW51eF9wbGF0Zm9ybXMoaXNfMzJiaXQ6IGJvb2wgPSBfMzJfQklUX0lOVEVSUFJFVEVSKSAtPiBJdGVyYXRvcltzdHJdOgogICAgbGludXggPSBfbm9ybWFsaXplX3N0cmluZyhzeXNjb25maWcuZ2V0X3BsYXRmb3JtKCkpCiAgICBpZiBpc18zMmJpdDoKICAgICAgICBpZiBsaW51eCA9PSAibGludXhfeDg2XzY0IjoKICAgICAgICAgICAgbGludXggPSAibGludXhfaTY4NiIKICAgICAgICBlbGlmIGxpbnV4ID09ICJsaW51eF9hYXJjaDY0IjoKICAgICAgICAgICAgbGludXggPSAibGludXhfYXJtdjdsIgogICAgXywgYXJjaCA9IGxpbnV4LnNwbGl0KCJfIiwgMSkKICAgIHlpZWxkIGZyb20gX21hbnlsaW51eC5wbGF0Zm9ybV90YWdzKGxpbnV4LCBhcmNoKQogICAgeWllbGQgZnJvbSBfbXVzbGxpbnV4LnBsYXRmb3JtX3RhZ3MoYXJjaCkKICAgIHlpZWxkIGxpbnV4CgoKZGVmIF9nZW5lcmljX3BsYXRmb3JtcygpIC0+IEl0ZXJhdG9yW3N0cl06CiAgICB5aWVsZCBfbm9ybWFsaXplX3N0cmluZyhzeXNjb25maWcuZ2V0X3BsYXRmb3JtKCkpCgoKZGVmIHBsYXRmb3JtX3RhZ3MoKSAtPiBJdGVyYXRvcltzdHJdOgogICAgIiIiCiAgICBQcm92aWRlcyB0aGUgcGxhdGZvcm0gdGFncyBmb3IgdGhpcyBpbnN0YWxsYXRpb24uCiAgICAiIiIKICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJEYXJ3aW4iOgogICAgICAgIHJldHVybiBtYWNfcGxhdGZvcm1zKCkKICAgIGVsaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIkxpbnV4IjoKICAgICAgICByZXR1cm4gX2xpbnV4X3BsYXRmb3JtcygpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBfZ2VuZXJpY19wbGF0Zm9ybXMoKQoKCmRlZiBpbnRlcnByZXRlcl9uYW1lKCkgLT4gc3RyOgogICAgIiIiCiAgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBydW5uaW5nIGludGVycHJldGVyLgoKICAgIFNvbWUgaW1wbGVtZW50YXRpb25zIGhhdmUgYSByZXNlcnZlZCwgdHdvLWxldHRlciBhYmJyZXZpYXRpb24gd2hpY2ggd2lsbAogICAgYmUgcmV0dXJuZWQgd2hlbiBhcHByb3ByaWF0ZS4KICAgICIiIgogICAgbmFtZSA9IHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lCiAgICByZXR1cm4gSU5URVJQUkVURVJfU0hPUlRfTkFNRVMuZ2V0KG5hbWUpIG9yIG5hbWUKCgpkZWYgaW50ZXJwcmV0ZXJfdmVyc2lvbigqLCB3YXJuOiBib29sID0gRmFsc2UpIC0+IHN0cjoKICAgICIiIgogICAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcnVubmluZyBpbnRlcnByZXRlci4KICAgICIiIgogICAgdmVyc2lvbiA9IF9nZXRfY29uZmlnX3ZhcigicHlfdmVyc2lvbl9ub2RvdCIsIHdhcm49d2FybikKICAgIGlmIHZlcnNpb246CiAgICAgICAgdmVyc2lvbiA9IHN0cih2ZXJzaW9uKQogICAgZWxzZToKICAgICAgICB2ZXJzaW9uID0gX3ZlcnNpb25fbm9kb3Qoc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICByZXR1cm4gdmVyc2lvbgoKCmRlZiBfdmVyc2lvbl9ub2RvdCh2ZXJzaW9uOiBQeXRob25WZXJzaW9uKSAtPiBzdHI6CiAgICByZXR1cm4gIiIuam9pbihtYXAoc3RyLCB2ZXJzaW9uKSkKCgpkZWYgc3lzX3RhZ3MoKiwgd2FybjogYm9vbCA9IEZhbHNlKSAtPiBJdGVyYXRvcltUYWddOgogICAgIiIiCiAgICBSZXR1cm5zIHRoZSBzZXF1ZW5jZSBvZiB0YWcgdHJpcGxlcyBmb3IgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIuCgogICAgVGhlIG9yZGVyIG9mIHRoZSBzZXF1ZW5jZSBjb3JyZXNwb25kcyB0byBwcmlvcml0eSBvcmRlciBmb3IgdGhlCiAgICBpbnRlcnByZXRlciwgZnJvbSBtb3N0IHRvIGxlYXN0IGltcG9ydGFudC4KICAgICIiIgoKICAgIGludGVycF9uYW1lID0gaW50ZXJwcmV0ZXJfbmFtZSgpCiAgICBpZiBpbnRlcnBfbmFtZSA9PSAiY3AiOgogICAgICAgIHlpZWxkIGZyb20gY3B5dGhvbl90YWdzKHdhcm49d2FybikKICAgIGVsc2U6CiAgICAgICAgeWllbGQgZnJvbSBnZW5lcmljX3RhZ3MoKQoKICAgIGlmIGludGVycF9uYW1lID09ICJwcCI6CiAgICAgICAgaW50ZXJwID0gInBwMyIKICAgIGVsaWYgaW50ZXJwX25hbWUgPT0gImNwIjoKICAgICAgICBpbnRlcnAgPSAiY3AiICsgaW50ZXJwcmV0ZXJfdmVyc2lvbih3YXJuPXdhcm4pCiAgICBlbHNlOgogICAgICAgIGludGVycCA9IE5vbmUKICAgIHlpZWxkIGZyb20gY29tcGF0aWJsZV90YWdzKGludGVycHJldGVyPWludGVycCkKUEsDBBQAAAAAALoro1bYKiskAxEAAAMRAAASAAAAcGFja2FnaW5nL3V0aWxzLnB5IyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uCiMgMi4wLCBhbmQgdGhlIEJTRCBMaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGlzIHJlcG9zaXRvcnkKIyBmb3IgY29tcGxldGUgZGV0YWlscy4KCmltcG9ydCByZQpmcm9tIHR5cGluZyBpbXBvcnQgRnJvemVuU2V0LCBOZXdUeXBlLCBUdXBsZSwgVW5pb24sIGNhc3QKCmZyb20gLnRhZ3MgaW1wb3J0IFRhZywgcGFyc2VfdGFnCmZyb20gLnZlcnNpb24gaW1wb3J0IEludmFsaWRWZXJzaW9uLCBWZXJzaW9uCgpCdWlsZFRhZyA9IFVuaW9uW1R1cGxlWygpXSwgVHVwbGVbaW50LCBzdHJdXQpOb3JtYWxpemVkTmFtZSA9IE5ld1R5cGUoIk5vcm1hbGl6ZWROYW1lIiwgc3RyKQoKCmNsYXNzIEludmFsaWRXaGVlbEZpbGVuYW1lKFZhbHVlRXJyb3IpOgogICAgIiIiCiAgICBBbiBpbnZhbGlkIHdoZWVsIGZpbGVuYW1lIHdhcyBmb3VuZCwgdXNlcnMgc2hvdWxkIHJlZmVyIHRvIFBFUCA0MjcuCiAgICAiIiIKCgpjbGFzcyBJbnZhbGlkU2Rpc3RGaWxlbmFtZShWYWx1ZUVycm9yKToKICAgICIiIgogICAgQW4gaW52YWxpZCBzZGlzdCBmaWxlbmFtZSB3YXMgZm91bmQsIHVzZXJzIHNob3VsZCByZWZlciB0byB0aGUgcGFja2FnaW5nIHVzZXIgZ3VpZGUuCiAgICAiIiIKCgpfY2Fub25pY2FsaXplX3JlZ2V4ID0gcmUuY29tcGlsZShyIlstXy5dKyIpCiMgUEVQIDQyNzogVGhlIGJ1aWxkIG51bWJlciBtdXN0IHN0YXJ0IHdpdGggYSBkaWdpdC4KX2J1aWxkX3RhZ19yZWdleCA9IHJlLmNvbXBpbGUociIoXGQrKSguKikiKQoKCmRlZiBjYW5vbmljYWxpemVfbmFtZShuYW1lOiBzdHIpIC0+IE5vcm1hbGl6ZWROYW1lOgogICAgIyBUaGlzIGlzIHRha2VuIGZyb20gUEVQIDUwMy4KICAgIHZhbHVlID0gX2Nhbm9uaWNhbGl6ZV9yZWdleC5zdWIoIi0iLCBuYW1lKS5sb3dlcigpCiAgICByZXR1cm4gY2FzdChOb3JtYWxpemVkTmFtZSwgdmFsdWUpCgoKZGVmIGNhbm9uaWNhbGl6ZV92ZXJzaW9uKAogICAgdmVyc2lvbjogVW5pb25bVmVyc2lvbiwgc3RyXSwgKiwgc3RyaXBfdHJhaWxpbmdfemVybzogYm9vbCA9IFRydWUKKSAtPiBzdHI6CiAgICAiIiIKICAgIFRoaXMgaXMgdmVyeSBzaW1pbGFyIHRvIFZlcnNpb24uX19zdHJfXywgYnV0IGhhcyBvbmUgc3VidGxlIGRpZmZlcmVuY2UKICAgIHdpdGggdGhlIHdheSBpdCBoYW5kbGVzIHRoZSByZWxlYXNlIHNlZ21lbnQuCiAgICAiIiIKICAgIGlmIGlzaW5zdGFuY2UodmVyc2lvbiwgc3RyKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhcnNlZCA9IFZlcnNpb24odmVyc2lvbikKICAgICAgICBleGNlcHQgSW52YWxpZFZlcnNpb246CiAgICAgICAgICAgICMgTGVnYWN5IHZlcnNpb25zIGNhbm5vdCBiZSBub3JtYWxpemVkCiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uCiAgICBlbHNlOgogICAgICAgIHBhcnNlZCA9IHZlcnNpb24KCiAgICBwYXJ0cyA9IFtdCgogICAgIyBFcG9jaAogICAgaWYgcGFyc2VkLmVwb2NoICE9IDA6CiAgICAgICAgcGFydHMuYXBwZW5kKGYie3BhcnNlZC5lcG9jaH0hIikKCiAgICAjIFJlbGVhc2Ugc2VnbWVudAogICAgcmVsZWFzZV9zZWdtZW50ID0gIi4iLmpvaW4oc3RyKHgpIGZvciB4IGluIHBhcnNlZC5yZWxlYXNlKQogICAgaWYgc3RyaXBfdHJhaWxpbmdfemVybzoKICAgICAgICAjIE5COiBUaGlzIHN0cmlwcyB0cmFpbGluZyAnLjAncyB0byBub3JtYWxpemUKICAgICAgICByZWxlYXNlX3NlZ21lbnQgPSByZS5zdWIociIoXC4wKSskIiwgIiIsIHJlbGVhc2Vfc2VnbWVudCkKICAgIHBhcnRzLmFwcGVuZChyZWxlYXNlX3NlZ21lbnQpCgogICAgIyBQcmUtcmVsZWFzZQogICAgaWYgcGFyc2VkLnByZSBpcyBub3QgTm9uZToKICAgICAgICBwYXJ0cy5hcHBlbmQoIiIuam9pbihzdHIoeCkgZm9yIHggaW4gcGFyc2VkLnByZSkpCgogICAgIyBQb3N0LXJlbGVhc2UKICAgIGlmIHBhcnNlZC5wb3N0IGlzIG5vdCBOb25lOgogICAgICAgIHBhcnRzLmFwcGVuZChmIi5wb3N0e3BhcnNlZC5wb3N0fSIpCgogICAgIyBEZXZlbG9wbWVudCByZWxlYXNlCiAgICBpZiBwYXJzZWQuZGV2IGlzIG5vdCBOb25lOgogICAgICAgIHBhcnRzLmFwcGVuZChmIi5kZXZ7cGFyc2VkLmRldn0iKQoKICAgICMgTG9jYWwgdmVyc2lvbiBzZWdtZW50CiAgICBpZiBwYXJzZWQubG9jYWwgaXMgbm90IE5vbmU6CiAgICAgICAgcGFydHMuYXBwZW5kKGYiK3twYXJzZWQubG9jYWx9IikKCiAgICByZXR1cm4gIiIuam9pbihwYXJ0cykKCgpkZWYgcGFyc2Vfd2hlZWxfZmlsZW5hbWUoCiAgICBmaWxlbmFtZTogc3RyLAopIC0+IFR1cGxlW05vcm1hbGl6ZWROYW1lLCBWZXJzaW9uLCBCdWlsZFRhZywgRnJvemVuU2V0W1RhZ11dOgogICAgaWYgbm90IGZpbGVuYW1lLmVuZHN3aXRoKCIud2hsIik6CiAgICAgICAgcmFpc2UgSW52YWxpZFdoZWVsRmlsZW5hbWUoCiAgICAgICAgICAgIGYiSW52YWxpZCB3aGVlbCBmaWxlbmFtZSAoZXh0ZW5zaW9uIG11c3QgYmUgJy53aGwnKToge2ZpbGVuYW1lfSIKICAgICAgICApCgogICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTRdCiAgICBkYXNoZXMgPSBmaWxlbmFtZS5jb3VudCgiLSIpCiAgICBpZiBkYXNoZXMgbm90IGluICg0LCA1KToKICAgICAgICByYWlzZSBJbnZhbGlkV2hlZWxGaWxlbmFtZSgKICAgICAgICAgICAgZiJJbnZhbGlkIHdoZWVsIGZpbGVuYW1lICh3cm9uZyBudW1iZXIgb2YgcGFydHMpOiB7ZmlsZW5hbWV9IgogICAgICAgICkKCiAgICBwYXJ0cyA9IGZpbGVuYW1lLnNwbGl0KCItIiwgZGFzaGVzIC0gMikKICAgIG5hbWVfcGFydCA9IHBhcnRzWzBdCiAgICAjIFNlZSBQRVAgNDI3IGZvciB0aGUgcnVsZXMgb24gZXNjYXBpbmcgdGhlIHByb2plY3QgbmFtZQogICAgaWYgIl9fIiBpbiBuYW1lX3BhcnQgb3IgcmUubWF0Y2gociJeW1x3XGQuX10qJCIsIG5hbWVfcGFydCwgcmUuVU5JQ09ERSkgaXMgTm9uZToKICAgICAgICByYWlzZSBJbnZhbGlkV2hlZWxGaWxlbmFtZShmIkludmFsaWQgcHJvamVjdCBuYW1lOiB7ZmlsZW5hbWV9IikKICAgIG5hbWUgPSBjYW5vbmljYWxpemVfbmFtZShuYW1lX3BhcnQpCiAgICB2ZXJzaW9uID0gVmVyc2lvbihwYXJ0c1sxXSkKICAgIGlmIGRhc2hlcyA9PSA1OgogICAgICAgIGJ1aWxkX3BhcnQgPSBwYXJ0c1syXQogICAgICAgIGJ1aWxkX21hdGNoID0gX2J1aWxkX3RhZ19yZWdleC5tYXRjaChidWlsZF9wYXJ0KQogICAgICAgIGlmIGJ1aWxkX21hdGNoIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIEludmFsaWRXaGVlbEZpbGVuYW1lKAogICAgICAgICAgICAgICAgZiJJbnZhbGlkIGJ1aWxkIG51bWJlcjoge2J1aWxkX3BhcnR9IGluICd7ZmlsZW5hbWV9JyIKICAgICAgICAgICAgKQogICAgICAgIGJ1aWxkID0gY2FzdChCdWlsZFRhZywgKGludChidWlsZF9tYXRjaC5ncm91cCgxKSksIGJ1aWxkX21hdGNoLmdyb3VwKDIpKSkKICAgIGVsc2U6CiAgICAgICAgYnVpbGQgPSAoKQogICAgdGFncyA9IHBhcnNlX3RhZyhwYXJ0c1stMV0pCiAgICByZXR1cm4gKG5hbWUsIHZlcnNpb24sIGJ1aWxkLCB0YWdzKQoKCmRlZiBwYXJzZV9zZGlzdF9maWxlbmFtZShmaWxlbmFtZTogc3RyKSAtPiBUdXBsZVtOb3JtYWxpemVkTmFtZSwgVmVyc2lvbl06CiAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgiLnRhci5neiIpOgogICAgICAgIGZpbGVfc3RlbSA9IGZpbGVuYW1lWzogLWxlbigiLnRhci5neiIpXQogICAgZWxpZiBmaWxlbmFtZS5lbmRzd2l0aCgiLnppcCIpOgogICAgICAgIGZpbGVfc3RlbSA9IGZpbGVuYW1lWzogLWxlbigiLnppcCIpXQogICAgZWxzZToKICAgICAgICByYWlzZSBJbnZhbGlkU2Rpc3RGaWxlbmFtZSgKICAgICAgICAgICAgZiJJbnZhbGlkIHNkaXN0IGZpbGVuYW1lIChleHRlbnNpb24gbXVzdCBiZSAnLnRhci5neicgb3IgJy56aXAnKToiCiAgICAgICAgICAgIGYiIHtmaWxlbmFtZX0iCiAgICAgICAgKQoKICAgICMgV2UgYXJlIHJlcXVpcmluZyBhIFBFUCA0NDAgdmVyc2lvbiwgd2hpY2ggY2Fubm90IGNvbnRhaW4gZGFzaGVzLAogICAgIyBzbyB3ZSBzcGxpdCBvbiB0aGUgbGFzdCBkYXNoLgogICAgbmFtZV9wYXJ0LCBzZXAsIHZlcnNpb25fcGFydCA9IGZpbGVfc3RlbS5ycGFydGl0aW9uKCItIikKICAgIGlmIG5vdCBzZXA6CiAgICAgICAgcmFpc2UgSW52YWxpZFNkaXN0RmlsZW5hbWUoZiJJbnZhbGlkIHNkaXN0IGZpbGVuYW1lOiB7ZmlsZW5hbWV9IikKCiAgICBuYW1lID0gY2Fub25pY2FsaXplX25hbWUobmFtZV9wYXJ0KQogICAgdmVyc2lvbiA9IFZlcnNpb24odmVyc2lvbl9wYXJ0KQogICAgcmV0dXJuIChuYW1lLCB2ZXJzaW9uKQpQSwMEFAAAAAAAuiujVvCZEAqnPwAApz8AABQAAABwYWNrYWdpbmcvdmVyc2lvbi5weSMgVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbgojIDIuMCwgYW5kIHRoZSBCU0QgTGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhpcyByZXBvc2l0b3J5CiMgZm9yIGNvbXBsZXRlIGRldGFpbHMuCiIiIgouLiB0ZXN0c2V0dXA6OgoKICAgIGZyb20gcGFja2FnaW5nLnZlcnNpb24gaW1wb3J0IHBhcnNlLCBWZXJzaW9uCiIiIgoKaW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCBpdGVydG9vbHMKaW1wb3J0IHJlCmZyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgT3B0aW9uYWwsIFN1cHBvcnRzSW50LCBUdXBsZSwgVW5pb24KCmZyb20gLl9zdHJ1Y3R1cmVzIGltcG9ydCBJbmZpbml0eSwgSW5maW5pdHlUeXBlLCBOZWdhdGl2ZUluZmluaXR5LCBOZWdhdGl2ZUluZmluaXR5VHlwZQoKX19hbGxfXyA9IFsiVkVSU0lPTl9QQVRURVJOIiwgInBhcnNlIiwgIlZlcnNpb24iLCAiSW52YWxpZFZlcnNpb24iXQoKSW5maW5pdGVUeXBlcyA9IFVuaW9uW0luZmluaXR5VHlwZSwgTmVnYXRpdmVJbmZpbml0eVR5cGVdClByZVBvc3REZXZUeXBlID0gVW5pb25bSW5maW5pdGVUeXBlcywgVHVwbGVbc3RyLCBpbnRdXQpTdWJMb2NhbFR5cGUgPSBVbmlvbltJbmZpbml0ZVR5cGVzLCBpbnQsIHN0cl0KTG9jYWxUeXBlID0gVW5pb25bCiAgICBOZWdhdGl2ZUluZmluaXR5VHlwZSwKICAgIFR1cGxlWwogICAgICAgIFVuaW9uWwogICAgICAgICAgICBTdWJMb2NhbFR5cGUsCiAgICAgICAgICAgIFR1cGxlW1N1YkxvY2FsVHlwZSwgc3RyXSwKICAgICAgICAgICAgVHVwbGVbTmVnYXRpdmVJbmZpbml0eVR5cGUsIFN1YkxvY2FsVHlwZV0sCiAgICAgICAgXSwKICAgICAgICAuLi4sCiAgICBdLApdCkNtcEtleSA9IFR1cGxlWwogICAgaW50LCBUdXBsZVtpbnQsIC4uLl0sIFByZVBvc3REZXZUeXBlLCBQcmVQb3N0RGV2VHlwZSwgUHJlUG9zdERldlR5cGUsIExvY2FsVHlwZQpdClZlcnNpb25Db21wYXJpc29uTWV0aG9kID0gQ2FsbGFibGVbW0NtcEtleSwgQ21wS2V5XSwgYm9vbF0KCl9WZXJzaW9uID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgKICAgICJfVmVyc2lvbiIsIFsiZXBvY2giLCAicmVsZWFzZSIsICJkZXYiLCAicHJlIiwgInBvc3QiLCAibG9jYWwiXQopCgoKZGVmIHBhcnNlKHZlcnNpb246IHN0cikgLT4gIlZlcnNpb24iOgogICAgIiIiUGFyc2UgdGhlIGdpdmVuIHZlcnNpb24gc3RyaW5nLgoKICAgID4+PiBwYXJzZSgnMS4wLmRldjEnKQogICAgPFZlcnNpb24oJzEuMC5kZXYxJyk+CgogICAgOnBhcmFtIHZlcnNpb246IFRoZSB2ZXJzaW9uIHN0cmluZyB0byBwYXJzZS4KICAgIDpyYWlzZXMgSW52YWxpZFZlcnNpb246IFdoZW4gdGhlIHZlcnNpb24gc3RyaW5nIGlzIG5vdCBhIHZhbGlkIHZlcnNpb24uCiAgICAiIiIKICAgIHJldHVybiBWZXJzaW9uKHZlcnNpb24pCgoKY2xhc3MgSW52YWxpZFZlcnNpb24oVmFsdWVFcnJvcik6CiAgICAiIiJSYWlzZWQgd2hlbiBhIHZlcnNpb24gc3RyaW5nIGlzIG5vdCBhIHZhbGlkIHZlcnNpb24uCgogICAgPj4+IFZlcnNpb24oImludmFsaWQiKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgIC4uLgogICAgcGFja2FnaW5nLnZlcnNpb24uSW52YWxpZFZlcnNpb246IEludmFsaWQgdmVyc2lvbjogJ2ludmFsaWQnCiAgICAiIiIKCgpjbGFzcyBfQmFzZVZlcnNpb246CiAgICBfa2V5OiBDbXBLZXkKCiAgICBkZWYgX19oYXNoX18oc2VsZikgLT4gaW50OgogICAgICAgIHJldHVybiBoYXNoKHNlbGYuX2tleSkKCiAgICAjIFBsZWFzZSBrZWVwIHRoZSBkdXBsaWNhdGVkIGBpc2luc3RhbmNlYCBjaGVjawogICAgIyBpbiB0aGUgc2l4IGNvbXBhcmlzb25zIGhlcmV1bmRlcgogICAgIyB1bmxlc3MgeW91IGZpbmQgYSB3YXkgdG8gYXZvaWQgYWRkaW5nIG92ZXJoZWFkIGZ1bmN0aW9uIGNhbGxzLgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcjogIl9CYXNlVmVyc2lvbiIpIC0+IGJvb2w6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlVmVyc2lvbik6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICAgICByZXR1cm4gc2VsZi5fa2V5IDwgb3RoZXIuX2tleQoKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXI6ICJfQmFzZVZlcnNpb24iKSAtPiBib29sOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZVZlcnNpb24pOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICAgICAgcmV0dXJuIHNlbGYuX2tleSA8PSBvdGhlci5fa2V5CgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZVZlcnNpb24pOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICAgICAgcmV0dXJuIHNlbGYuX2tleSA9PSBvdGhlci5fa2V5CgogICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcjogIl9CYXNlVmVyc2lvbiIpIC0+IGJvb2w6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlVmVyc2lvbik6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICAgICByZXR1cm4gc2VsZi5fa2V5ID49IG90aGVyLl9rZXkKCiAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyOiAiX0Jhc2VWZXJzaW9uIikgLT4gYm9vbDoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VWZXJzaW9uKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgICAgIHJldHVybiBzZWxmLl9rZXkgPiBvdGhlci5fa2V5CgogICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcjogb2JqZWN0KSAtPiBib29sOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZVZlcnNpb24pOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICAgICAgcmV0dXJuIHNlbGYuX2tleSAhPSBvdGhlci5fa2V5CgoKIyBEZWxpYmVyYXRlbHkgbm90IGFuY2hvcmVkIHRvIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBzdHJpbmcsIHRvIG1ha2UgaXQKIyBlYXNpZXIgZm9yIDNyZCBwYXJ0eSBjb2RlIHRvIHJldXNlCl9WRVJTSU9OX1BBVFRFUk4gPSByIiIiCiAgICB2PwogICAgKD86CiAgICAgICAgKD86KD9QPGVwb2NoPlswLTldKykhKT8gICAgICAgICAgICAgICAgICAgICAgICAgICAjIGVwb2NoCiAgICAgICAgKD9QPHJlbGVhc2U+WzAtOV0rKD86XC5bMC05XSspKikgICAgICAgICAgICAgICAgICAjIHJlbGVhc2Ugc2VnbWVudAogICAgICAgICg/UDxwcmU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmUtcmVsZWFzZQogICAgICAgICAgICBbLV9cLl0/CiAgICAgICAgICAgICg/UDxwcmVfbD4oYXxifGN8cmN8YWxwaGF8YmV0YXxwcmV8cHJldmlldykpCiAgICAgICAgICAgIFstX1wuXT8KICAgICAgICAgICAgKD9QPHByZV9uPlswLTldKyk/CiAgICAgICAgKT8KICAgICAgICAoP1A8cG9zdD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9zdCByZWxlYXNlCiAgICAgICAgICAgICg/Oi0oP1A8cG9zdF9uMT5bMC05XSspKQogICAgICAgICAgICB8CiAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgWy1fXC5dPwogICAgICAgICAgICAgICAgKD9QPHBvc3RfbD5wb3N0fHJldnxyKQogICAgICAgICAgICAgICAgWy1fXC5dPwogICAgICAgICAgICAgICAgKD9QPHBvc3RfbjI+WzAtOV0rKT8KICAgICAgICAgICAgKQogICAgICAgICk/CiAgICAgICAgKD9QPGRldj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRldiByZWxlYXNlCiAgICAgICAgICAgIFstX1wuXT8KICAgICAgICAgICAgKD9QPGRldl9sPmRldikKICAgICAgICAgICAgWy1fXC5dPwogICAgICAgICAgICAoP1A8ZGV2X24+WzAtOV0rKT8KICAgICAgICApPwogICAgKQogICAgKD86XCsoP1A8bG9jYWw+W2EtejAtOV0rKD86Wy1fXC5dW2EtejAtOV0rKSopKT8gICAgICAgIyBsb2NhbCB2ZXJzaW9uCiIiIgoKVkVSU0lPTl9QQVRURVJOID0gX1ZFUlNJT05fUEFUVEVSTgoiIiIKQSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gbWF0Y2ggYSB2YWxpZCB2ZXJzaW9uLgoKVGhlIHBhdHRlcm4gaXMgbm90IGFuY2hvcmVkIGF0IGVpdGhlciBlbmQsIGFuZCBpcyBpbnRlbmRlZCBmb3IgZW1iZWRkaW5nIGluIGxhcmdlcgpleHByZXNzaW9ucyAoZm9yIGV4YW1wbGUsIG1hdGNoaW5nIGEgdmVyc2lvbiBudW1iZXIgYXMgcGFydCBvZiBhIGZpbGUgbmFtZSkuIFRoZQpyZWd1bGFyIGV4cHJlc3Npb24gc2hvdWxkIGJlIGNvbXBpbGVkIHdpdGggdGhlIGBgcmUuVkVSQk9TRWBgIGFuZCBgYHJlLklHTk9SRUNBU0VgYApmbGFncyBzZXQuCgo6bWV0YSBoaWRlLXZhbHVlOgoiIiIKCgpjbGFzcyBWZXJzaW9uKF9CYXNlVmVyc2lvbik6CiAgICAiIiJUaGlzIGNsYXNzIGFic3RyYWN0cyBoYW5kbGluZyBvZiBhIHByb2plY3QncyB2ZXJzaW9ucy4KCiAgICBBIDpjbGFzczpgVmVyc2lvbmAgaW5zdGFuY2UgaXMgY29tcGFyaXNvbiBhd2FyZSBhbmQgY2FuIGJlIGNvbXBhcmVkIGFuZAogICAgc29ydGVkIHVzaW5nIHRoZSBzdGFuZGFyZCBQeXRob24gaW50ZXJmYWNlcy4KCiAgICA+Pj4gdjEgPSBWZXJzaW9uKCIxLjBhNSIpCiAgICA+Pj4gdjIgPSBWZXJzaW9uKCIxLjAiKQogICAgPj4+IHYxCiAgICA8VmVyc2lvbignMS4wYTUnKT4KICAgID4+PiB2MgogICAgPFZlcnNpb24oJzEuMCcpPgogICAgPj4+IHYxIDwgdjIKICAgIFRydWUKICAgID4+PiB2MSA9PSB2MgogICAgRmFsc2UKICAgID4+PiB2MSA+IHYyCiAgICBGYWxzZQogICAgPj4+IHYxID49IHYyCiAgICBGYWxzZQogICAgPj4+IHYxIDw9IHYyCiAgICBUcnVlCiAgICAiIiIKCiAgICBfcmVnZXggPSByZS5jb21waWxlKHIiXlxzKiIgKyBWRVJTSU9OX1BBVFRFUk4gKyByIlxzKiQiLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyc2lvbjogc3RyKSAtPiBOb25lOgogICAgICAgICIiIkluaXRpYWxpemUgYSBWZXJzaW9uIG9iamVjdC4KCiAgICAgICAgOnBhcmFtIHZlcnNpb246CiAgICAgICAgICAgIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSB2ZXJzaW9uIHdoaWNoIHdpbGwgYmUgcGFyc2VkIGFuZCBub3JtYWxpemVkCiAgICAgICAgICAgIGJlZm9yZSB1c2UuCiAgICAgICAgOnJhaXNlcyBJbnZhbGlkVmVyc2lvbjoKICAgICAgICAgICAgSWYgdGhlIGBgdmVyc2lvbmBgIGRvZXMgbm90IGNvbmZvcm0gdG8gUEVQIDQ0MCBpbiBhbnkgd2F5IHRoZW4gdGhpcwogICAgICAgICAgICBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuCiAgICAgICAgIiIiCgogICAgICAgICMgVmFsaWRhdGUgdGhlIHZlcnNpb24gYW5kIHBhcnNlIGl0IGludG8gcGllY2VzCiAgICAgICAgbWF0Y2ggPSBzZWxmLl9yZWdleC5zZWFyY2godmVyc2lvbikKICAgICAgICBpZiBub3QgbWF0Y2g6CiAgICAgICAgICAgIHJhaXNlIEludmFsaWRWZXJzaW9uKGYiSW52YWxpZCB2ZXJzaW9uOiAne3ZlcnNpb259JyIpCgogICAgICAgICMgU3RvcmUgdGhlIHBhcnNlZCBvdXQgcGllY2VzIG9mIHRoZSB2ZXJzaW9uCiAgICAgICAgc2VsZi5fdmVyc2lvbiA9IF9WZXJzaW9uKAogICAgICAgICAgICBlcG9jaD1pbnQobWF0Y2guZ3JvdXAoImVwb2NoIikpIGlmIG1hdGNoLmdyb3VwKCJlcG9jaCIpIGVsc2UgMCwKICAgICAgICAgICAgcmVsZWFzZT10dXBsZShpbnQoaSkgZm9yIGkgaW4gbWF0Y2guZ3JvdXAoInJlbGVhc2UiKS5zcGxpdCgiLiIpKSwKICAgICAgICAgICAgcHJlPV9wYXJzZV9sZXR0ZXJfdmVyc2lvbihtYXRjaC5ncm91cCgicHJlX2wiKSwgbWF0Y2guZ3JvdXAoInByZV9uIikpLAogICAgICAgICAgICBwb3N0PV9wYXJzZV9sZXR0ZXJfdmVyc2lvbigKICAgICAgICAgICAgICAgIG1hdGNoLmdyb3VwKCJwb3N0X2wiKSwgbWF0Y2guZ3JvdXAoInBvc3RfbjEiKSBvciBtYXRjaC5ncm91cCgicG9zdF9uMiIpCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGRldj1fcGFyc2VfbGV0dGVyX3ZlcnNpb24obWF0Y2guZ3JvdXAoImRldl9sIiksIG1hdGNoLmdyb3VwKCJkZXZfbiIpKSwKICAgICAgICAgICAgbG9jYWw9X3BhcnNlX2xvY2FsX3ZlcnNpb24obWF0Y2guZ3JvdXAoImxvY2FsIikpLAogICAgICAgICkKCiAgICAgICAgIyBHZW5lcmF0ZSBhIGtleSB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIHNvcnRpbmcKICAgICAgICBzZWxmLl9rZXkgPSBfY21wa2V5KAogICAgICAgICAgICBzZWxmLl92ZXJzaW9uLmVwb2NoLAogICAgICAgICAgICBzZWxmLl92ZXJzaW9uLnJlbGVhc2UsCiAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24ucHJlLAogICAgICAgICAgICBzZWxmLl92ZXJzaW9uLnBvc3QsCiAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24uZGV2LAogICAgICAgICAgICBzZWxmLl92ZXJzaW9uLmxvY2FsLAogICAgICAgICkKCiAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgogICAgICAgICIiIkEgcmVwcmVzZW50YXRpb24gb2YgdGhlIFZlcnNpb24gdGhhdCBzaG93cyBhbGwgaW50ZXJuYWwgc3RhdGUuCgogICAgICAgID4+PiBWZXJzaW9uKCcxLjAuMCcpCiAgICAgICAgPFZlcnNpb24oJzEuMC4wJyk+CiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGYiPFZlcnNpb24oJ3tzZWxmfScpPiIKCiAgICBkZWYgX19zdHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgIiIiQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZlcnNpb24gdGhhdCBjYW4gYmUgcm91bmRlZC10cmlwcGVkLgoKICAgICAgICA+Pj4gc3RyKFZlcnNpb24oIjEuMGE1IikpCiAgICAgICAgJzEuMGE1JwogICAgICAgICIiIgogICAgICAgIHBhcnRzID0gW10KCiAgICAgICAgIyBFcG9jaAogICAgICAgIGlmIHNlbGYuZXBvY2ggIT0gMDoKICAgICAgICAgICAgcGFydHMuYXBwZW5kKGYie3NlbGYuZXBvY2h9ISIpCgogICAgICAgICMgUmVsZWFzZSBzZWdtZW50CiAgICAgICAgcGFydHMuYXBwZW5kKCIuIi5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmLnJlbGVhc2UpKQoKICAgICAgICAjIFByZS1yZWxlYXNlCiAgICAgICAgaWYgc2VsZi5wcmUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgiIi5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmLnByZSkpCgogICAgICAgICMgUG9zdC1yZWxlYXNlCiAgICAgICAgaWYgc2VsZi5wb3N0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBwYXJ0cy5hcHBlbmQoZiIucG9zdHtzZWxmLnBvc3R9IikKCiAgICAgICAgIyBEZXZlbG9wbWVudCByZWxlYXNlCiAgICAgICAgaWYgc2VsZi5kZXYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHBhcnRzLmFwcGVuZChmIi5kZXZ7c2VsZi5kZXZ9IikKCiAgICAgICAgIyBMb2NhbCB2ZXJzaW9uIHNlZ21lbnQKICAgICAgICBpZiBzZWxmLmxvY2FsIGlzIG5vdCBOb25lOgogICAgICAgICAgICBwYXJ0cy5hcHBlbmQoZiIre3NlbGYubG9jYWx9IikKCiAgICAgICAgcmV0dXJuICIiLmpvaW4ocGFydHMpCgogICAgQHByb3BlcnR5CiAgICBkZWYgZXBvY2goc2VsZikgLT4gaW50OgogICAgICAgICIiIlRoZSBlcG9jaCBvZiB0aGUgdmVyc2lvbi4KCiAgICAgICAgPj4+IFZlcnNpb24oIjIuMC4wIikuZXBvY2gKICAgICAgICAwCiAgICAgICAgPj4+IFZlcnNpb24oIjEhMi4wLjAiKS5lcG9jaAogICAgICAgIDEKICAgICAgICAiIiIKICAgICAgICBfZXBvY2g6IGludCA9IHNlbGYuX3ZlcnNpb24uZXBvY2gKICAgICAgICByZXR1cm4gX2Vwb2NoCgogICAgQHByb3BlcnR5CiAgICBkZWYgcmVsZWFzZShzZWxmKSAtPiBUdXBsZVtpbnQsIC4uLl06CiAgICAgICAgIiIiVGhlIGNvbXBvbmVudHMgb2YgdGhlICJyZWxlYXNlIiBzZWdtZW50IG9mIHRoZSB2ZXJzaW9uLgoKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMiKS5yZWxlYXNlCiAgICAgICAgKDEsIDIsIDMpCiAgICAgICAgPj4+IFZlcnNpb24oIjIuMC4wIikucmVsZWFzZQogICAgICAgICgyLCAwLCAwKQogICAgICAgID4+PiBWZXJzaW9uKCIxITIuMC4wLnBvc3QwIikucmVsZWFzZQogICAgICAgICgyLCAwLCAwKQoKICAgICAgICBJbmNsdWRlcyB0cmFpbGluZyB6ZXJvZXMgYnV0IG5vdCB0aGUgZXBvY2ggb3IgYW55IHByZS1yZWxlYXNlIC8gZGV2ZWxvcG1lbnQgLwogICAgICAgIHBvc3QtcmVsZWFzZSBzdWZmaXhlcy4KICAgICAgICAiIiIKICAgICAgICBfcmVsZWFzZTogVHVwbGVbaW50LCAuLi5dID0gc2VsZi5fdmVyc2lvbi5yZWxlYXNlCiAgICAgICAgcmV0dXJuIF9yZWxlYXNlCgogICAgQHByb3BlcnR5CiAgICBkZWYgcHJlKHNlbGYpIC0+IE9wdGlvbmFsW1R1cGxlW3N0ciwgaW50XV06CiAgICAgICAgIiIiVGhlIHByZS1yZWxlYXNlIHNlZ21lbnQgb2YgdGhlIHZlcnNpb24uCgogICAgICAgID4+PiBwcmludChWZXJzaW9uKCIxLjIuMyIpLnByZSkKICAgICAgICBOb25lCiAgICAgICAgPj4+IFZlcnNpb24oIjEuMi4zYTEiKS5wcmUKICAgICAgICAoJ2EnLCAxKQogICAgICAgID4+PiBWZXJzaW9uKCIxLjIuM2IxIikucHJlCiAgICAgICAgKCdiJywgMSkKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjNyYzEiKS5wcmUKICAgICAgICAoJ3JjJywgMSkKICAgICAgICAiIiIKICAgICAgICBfcHJlOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dID0gc2VsZi5fdmVyc2lvbi5wcmUKICAgICAgICByZXR1cm4gX3ByZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBvc3Qoc2VsZikgLT4gT3B0aW9uYWxbaW50XToKICAgICAgICAiIiJUaGUgcG9zdC1yZWxlYXNlIG51bWJlciBvZiB0aGUgdmVyc2lvbi4KCiAgICAgICAgPj4+IHByaW50KFZlcnNpb24oIjEuMi4zIikucG9zdCkKICAgICAgICBOb25lCiAgICAgICAgPj4+IFZlcnNpb24oIjEuMi4zLnBvc3QxIikucG9zdAogICAgICAgIDEKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbi5wb3N0WzFdIGlmIHNlbGYuX3ZlcnNpb24ucG9zdCBlbHNlIE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkZXYoc2VsZikgLT4gT3B0aW9uYWxbaW50XToKICAgICAgICAiIiJUaGUgZGV2ZWxvcG1lbnQgbnVtYmVyIG9mIHRoZSB2ZXJzaW9uLgoKICAgICAgICA+Pj4gcHJpbnQoVmVyc2lvbigiMS4yLjMiKS5kZXYpCiAgICAgICAgTm9uZQogICAgICAgID4+PiBWZXJzaW9uKCIxLjIuMy5kZXYxIikuZGV2CiAgICAgICAgMQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uLmRldlsxXSBpZiBzZWxmLl92ZXJzaW9uLmRldiBlbHNlIE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBsb2NhbChzZWxmKSAtPiBPcHRpb25hbFtzdHJdOgogICAgICAgICIiIlRoZSBsb2NhbCB2ZXJzaW9uIHNlZ21lbnQgb2YgdGhlIHZlcnNpb24uCgogICAgICAgID4+PiBwcmludChWZXJzaW9uKCIxLjIuMyIpLmxvY2FsKQogICAgICAgIE5vbmUKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMrYWJjIikubG9jYWwKICAgICAgICAnYWJjJwogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3ZlcnNpb24ubG9jYWw6CiAgICAgICAgICAgIHJldHVybiAiLiIuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZi5fdmVyc2lvbi5sb2NhbCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHB1YmxpYyhzZWxmKSAtPiBzdHI6CiAgICAgICAgIiIiVGhlIHB1YmxpYyBwb3J0aW9uIG9mIHRoZSB2ZXJzaW9uLgoKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMiKS5wdWJsaWMKICAgICAgICAnMS4yLjMnCiAgICAgICAgPj4+IFZlcnNpb24oIjEuMi4zK2FiYyIpLnB1YmxpYwogICAgICAgICcxLjIuMycKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMrYWJjLmRldjEiKS5wdWJsaWMKICAgICAgICAnMS4yLjMnCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHN0cihzZWxmKS5zcGxpdCgiKyIsIDEpWzBdCgogICAgQHByb3BlcnR5CiAgICBkZWYgYmFzZV92ZXJzaW9uKHNlbGYpIC0+IHN0cjoKICAgICAgICAiIiJUaGUgImJhc2UgdmVyc2lvbiIgb2YgdGhlIHZlcnNpb24uCgogICAgICAgID4+PiBWZXJzaW9uKCIxLjIuMyIpLmJhc2VfdmVyc2lvbgogICAgICAgICcxLjIuMycKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMrYWJjIikuYmFzZV92ZXJzaW9uCiAgICAgICAgJzEuMi4zJwogICAgICAgID4+PiBWZXJzaW9uKCIxITEuMi4zK2FiYy5kZXYxIikuYmFzZV92ZXJzaW9uCiAgICAgICAgJzEhMS4yLjMnCgogICAgICAgIFRoZSAiYmFzZSB2ZXJzaW9uIiBpcyB0aGUgcHVibGljIHZlcnNpb24gb2YgdGhlIHByb2plY3Qgd2l0aG91dCBhbnkgcHJlIG9yIHBvc3QKICAgICAgICByZWxlYXNlIG1hcmtlcnMuCiAgICAgICAgIiIiCiAgICAgICAgcGFydHMgPSBbXQoKICAgICAgICAjIEVwb2NoCiAgICAgICAgaWYgc2VsZi5lcG9jaCAhPSAwOgogICAgICAgICAgICBwYXJ0cy5hcHBlbmQoZiJ7c2VsZi5lcG9jaH0hIikKCiAgICAgICAgIyBSZWxlYXNlIHNlZ21lbnQKICAgICAgICBwYXJ0cy5hcHBlbmQoIi4iLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYucmVsZWFzZSkpCgogICAgICAgIHJldHVybiAiIi5qb2luKHBhcnRzKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX3ByZXJlbGVhc2Uoc2VsZikgLT4gYm9vbDoKICAgICAgICAiIiJXaGV0aGVyIHRoaXMgdmVyc2lvbiBpcyBhIHByZS1yZWxlYXNlLgoKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMiKS5pc19wcmVyZWxlYXNlCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjNhMSIpLmlzX3ByZXJlbGVhc2UKICAgICAgICBUcnVlCiAgICAgICAgPj4+IFZlcnNpb24oIjEuMi4zYjEiKS5pc19wcmVyZWxlYXNlCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBWZXJzaW9uKCIxLjIuM3JjMSIpLmlzX3ByZXJlbGVhc2UKICAgICAgICBUcnVlCiAgICAgICAgPj4+IFZlcnNpb24oIjEuMi4zZGV2MSIpLmlzX3ByZXJlbGVhc2UKICAgICAgICBUcnVlCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZGV2IGlzIG5vdCBOb25lIG9yIHNlbGYucHJlIGlzIG5vdCBOb25lCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfcG9zdHJlbGVhc2Uoc2VsZikgLT4gYm9vbDoKICAgICAgICAiIiJXaGV0aGVyIHRoaXMgdmVyc2lvbiBpcyBhIHBvc3QtcmVsZWFzZS4KCiAgICAgICAgPj4+IFZlcnNpb24oIjEuMi4zIikuaXNfcG9zdHJlbGVhc2UKICAgICAgICBGYWxzZQogICAgICAgID4+PiBWZXJzaW9uKCIxLjIuMy5wb3N0MSIpLmlzX3Bvc3RyZWxlYXNlCiAgICAgICAgVHJ1ZQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnBvc3QgaXMgbm90IE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpc19kZXZyZWxlYXNlKHNlbGYpIC0+IGJvb2w6CiAgICAgICAgIiIiV2hldGhlciB0aGlzIHZlcnNpb24gaXMgYSBkZXZlbG9wbWVudCByZWxlYXNlLgoKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMiKS5pc19kZXZyZWxlYXNlCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMuZGV2MSIpLmlzX2RldnJlbGVhc2UKICAgICAgICBUcnVlCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZGV2IGlzIG5vdCBOb25lCgogICAgQHByb3BlcnR5CiAgICBkZWYgbWFqb3Ioc2VsZikgLT4gaW50OgogICAgICAgICIiIlRoZSBmaXJzdCBpdGVtIG9mIDphdHRyOmByZWxlYXNlYCBvciBgYDBgYCBpZiB1bmF2YWlsYWJsZS4KCiAgICAgICAgPj4+IFZlcnNpb24oIjEuMi4zIikubWFqb3IKICAgICAgICAxCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYucmVsZWFzZVswXSBpZiBsZW4oc2VsZi5yZWxlYXNlKSA+PSAxIGVsc2UgMAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1pbm9yKHNlbGYpIC0+IGludDoKICAgICAgICAiIiJUaGUgc2Vjb25kIGl0ZW0gb2YgOmF0dHI6YHJlbGVhc2VgIG9yIGBgMGBgIGlmIHVuYXZhaWxhYmxlLgoKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMiKS5taW5vcgogICAgICAgIDIKICAgICAgICA+Pj4gVmVyc2lvbigiMSIpLm1pbm9yCiAgICAgICAgMAogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnJlbGVhc2VbMV0gaWYgbGVuKHNlbGYucmVsZWFzZSkgPj0gMiBlbHNlIDAKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtaWNybyhzZWxmKSAtPiBpbnQ6CiAgICAgICAgIiIiVGhlIHRoaXJkIGl0ZW0gb2YgOmF0dHI6YHJlbGVhc2VgIG9yIGBgMGBgIGlmIHVuYXZhaWxhYmxlLgoKICAgICAgICA+Pj4gVmVyc2lvbigiMS4yLjMiKS5taWNybwogICAgICAgIDMKICAgICAgICA+Pj4gVmVyc2lvbigiMSIpLm1pY3JvCiAgICAgICAgMAogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnJlbGVhc2VbMl0gaWYgbGVuKHNlbGYucmVsZWFzZSkgPj0gMyBlbHNlIDAKCgpkZWYgX3BhcnNlX2xldHRlcl92ZXJzaW9uKAogICAgbGV0dGVyOiBzdHIsIG51bWJlcjogVW5pb25bc3RyLCBieXRlcywgU3VwcG9ydHNJbnRdCikgLT4gT3B0aW9uYWxbVHVwbGVbc3RyLCBpbnRdXToKCiAgICBpZiBsZXR0ZXI6CiAgICAgICAgIyBXZSBjb25zaWRlciB0aGVyZSB0byBiZSBhbiBpbXBsaWNpdCAwIGluIGEgcHJlLXJlbGVhc2UgaWYgdGhlcmUgaXMKICAgICAgICAjIG5vdCBhIG51bWVyYWwgYXNzb2NpYXRlZCB3aXRoIGl0LgogICAgICAgIGlmIG51bWJlciBpcyBOb25lOgogICAgICAgICAgICBudW1iZXIgPSAwCgogICAgICAgICMgV2Ugbm9ybWFsaXplIGFueSBsZXR0ZXJzIHRvIHRoZWlyIGxvd2VyIGNhc2UgZm9ybQogICAgICAgIGxldHRlciA9IGxldHRlci5sb3dlcigpCgogICAgICAgICMgV2UgY29uc2lkZXIgc29tZSB3b3JkcyB0byBiZSBhbHRlcm5hdGUgc3BlbGxpbmdzIG9mIG90aGVyIHdvcmRzIGFuZAogICAgICAgICMgaW4gdGhvc2UgY2FzZXMgd2Ugd2FudCB0byBub3JtYWxpemUgdGhlIHNwZWxsaW5ncyB0byBvdXIgcHJlZmVycmVkCiAgICAgICAgIyBzcGVsbGluZy4KICAgICAgICBpZiBsZXR0ZXIgPT0gImFscGhhIjoKICAgICAgICAgICAgbGV0dGVyID0gImEiCiAgICAgICAgZWxpZiBsZXR0ZXIgPT0gImJldGEiOgogICAgICAgICAgICBsZXR0ZXIgPSAiYiIKICAgICAgICBlbGlmIGxldHRlciBpbiBbImMiLCAicHJlIiwgInByZXZpZXciXToKICAgICAgICAgICAgbGV0dGVyID0gInJjIgogICAgICAgIGVsaWYgbGV0dGVyIGluIFsicmV2IiwgInIiXToKICAgICAgICAgICAgbGV0dGVyID0gInBvc3QiCgogICAgICAgIHJldHVybiBsZXR0ZXIsIGludChudW1iZXIpCiAgICBpZiBub3QgbGV0dGVyIGFuZCBudW1iZXI6CiAgICAgICAgIyBXZSBhc3N1bWUgaWYgd2UgYXJlIGdpdmVuIGEgbnVtYmVyLCBidXQgd2UgYXJlIG5vdCBnaXZlbiBhIGxldHRlcgogICAgICAgICMgdGhlbiB0aGlzIGlzIHVzaW5nIHRoZSBpbXBsaWNpdCBwb3N0IHJlbGVhc2Ugc3ludGF4IChlLmcuIDEuMC0xKQogICAgICAgIGxldHRlciA9ICJwb3N0IgoKICAgICAgICByZXR1cm4gbGV0dGVyLCBpbnQobnVtYmVyKQoKICAgIHJldHVybiBOb25lCgoKX2xvY2FsX3ZlcnNpb25fc2VwYXJhdG9ycyA9IHJlLmNvbXBpbGUociJbXC5fLV0iKQoKCmRlZiBfcGFyc2VfbG9jYWxfdmVyc2lvbihsb2NhbDogc3RyKSAtPiBPcHRpb25hbFtMb2NhbFR5cGVdOgogICAgIiIiCiAgICBUYWtlcyBhIHN0cmluZyBsaWtlIGFiYy4xLnR3ZWx2ZSBhbmQgdHVybnMgaXQgaW50byAoImFiYyIsIDEsICJ0d2VsdmUiKS4KICAgICIiIgogICAgaWYgbG9jYWwgaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIHR1cGxlKAogICAgICAgICAgICBwYXJ0Lmxvd2VyKCkgaWYgbm90IHBhcnQuaXNkaWdpdCgpIGVsc2UgaW50KHBhcnQpCiAgICAgICAgICAgIGZvciBwYXJ0IGluIF9sb2NhbF92ZXJzaW9uX3NlcGFyYXRvcnMuc3BsaXQobG9jYWwpCiAgICAgICAgKQogICAgcmV0dXJuIE5vbmUKCgpkZWYgX2NtcGtleSgKICAgIGVwb2NoOiBpbnQsCiAgICByZWxlYXNlOiBUdXBsZVtpbnQsIC4uLl0sCiAgICBwcmU6IE9wdGlvbmFsW1R1cGxlW3N0ciwgaW50XV0sCiAgICBwb3N0OiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dLAogICAgZGV2OiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dLAogICAgbG9jYWw6IE9wdGlvbmFsW1R1cGxlW1N1YkxvY2FsVHlwZV1dLAopIC0+IENtcEtleToKCiAgICAjIFdoZW4gd2UgY29tcGFyZSBhIHJlbGVhc2UgdmVyc2lvbiwgd2Ugd2FudCB0byBjb21wYXJlIGl0IHdpdGggYWxsIG9mIHRoZQogICAgIyB0cmFpbGluZyB6ZXJvcyByZW1vdmVkLiBTbyB3ZSdsbCB1c2UgYSByZXZlcnNlIHRoZSBsaXN0LCBkcm9wIGFsbCB0aGUgbm93CiAgICAjIGxlYWRpbmcgemVyb3MgdW50aWwgd2UgY29tZSB0byBzb21ldGhpbmcgbm9uIHplcm8sIHRoZW4gdGFrZSB0aGUgcmVzdAogICAgIyByZS1yZXZlcnNlIGl0IGJhY2sgaW50byB0aGUgY29ycmVjdCBvcmRlciBhbmQgbWFrZSBpdCBhIHR1cGxlIGFuZCB1c2UKICAgICMgdGhhdCBmb3Igb3VyIHNvcnRpbmcga2V5LgogICAgX3JlbGVhc2UgPSB0dXBsZSgKICAgICAgICByZXZlcnNlZChsaXN0KGl0ZXJ0b29scy5kcm9wd2hpbGUobGFtYmRhIHg6IHggPT0gMCwgcmV2ZXJzZWQocmVsZWFzZSkpKSkKICAgICkKCiAgICAjIFdlIG5lZWQgdG8gInRyaWNrIiB0aGUgc29ydGluZyBhbGdvcml0aG0gdG8gcHV0IDEuMC5kZXYwIGJlZm9yZSAxLjBhMC4KICAgICMgV2UnbGwgZG8gdGhpcyBieSBhYnVzaW5nIHRoZSBwcmUgc2VnbWVudCwgYnV0IHdlIF9vbmx5XyB3YW50IHRvIGRvIHRoaXMKICAgICMgaWYgdGhlcmUgaXMgbm90IGEgcHJlIG9yIGEgcG9zdCBzZWdtZW50LiBJZiB3ZSBoYXZlIG9uZSBvZiB0aG9zZSB0aGVuCiAgICAjIHRoZSBub3JtYWwgc29ydGluZyBydWxlcyB3aWxsIGhhbmRsZSB0aGlzIGNhc2UgY29ycmVjdGx5LgogICAgaWYgcHJlIGlzIE5vbmUgYW5kIHBvc3QgaXMgTm9uZSBhbmQgZGV2IGlzIG5vdCBOb25lOgogICAgICAgIF9wcmU6IFByZVBvc3REZXZUeXBlID0gTmVnYXRpdmVJbmZpbml0eQogICAgIyBWZXJzaW9ucyB3aXRob3V0IGEgcHJlLXJlbGVhc2UgKGV4Y2VwdCBhcyBub3RlZCBhYm92ZSkgc2hvdWxkIHNvcnQgYWZ0ZXIKICAgICMgdGhvc2Ugd2l0aCBvbmUuCiAgICBlbGlmIHByZSBpcyBOb25lOgogICAgICAgIF9wcmUgPSBJbmZpbml0eQogICAgZWxzZToKICAgICAgICBfcHJlID0gcHJlCgogICAgIyBWZXJzaW9ucyB3aXRob3V0IGEgcG9zdCBzZWdtZW50IHNob3VsZCBzb3J0IGJlZm9yZSB0aG9zZSB3aXRoIG9uZS4KICAgIGlmIHBvc3QgaXMgTm9uZToKICAgICAgICBfcG9zdDogUHJlUG9zdERldlR5cGUgPSBOZWdhdGl2ZUluZmluaXR5CgogICAgZWxzZToKICAgICAgICBfcG9zdCA9IHBvc3QKCiAgICAjIFZlcnNpb25zIHdpdGhvdXQgYSBkZXZlbG9wbWVudCBzZWdtZW50IHNob3VsZCBzb3J0IGFmdGVyIHRob3NlIHdpdGggb25lLgogICAgaWYgZGV2IGlzIE5vbmU6CiAgICAgICAgX2RldjogUHJlUG9zdERldlR5cGUgPSBJbmZpbml0eQoKICAgIGVsc2U6CiAgICAgICAgX2RldiA9IGRldgoKICAgIGlmIGxvY2FsIGlzIE5vbmU6CiAgICAgICAgIyBWZXJzaW9ucyB3aXRob3V0IGEgbG9jYWwgc2VnbWVudCBzaG91bGQgc29ydCBiZWZvcmUgdGhvc2Ugd2l0aCBvbmUuCiAgICAgICAgX2xvY2FsOiBMb2NhbFR5cGUgPSBOZWdhdGl2ZUluZmluaXR5CiAgICBlbHNlOgogICAgICAgICMgVmVyc2lvbnMgd2l0aCBhIGxvY2FsIHNlZ21lbnQgbmVlZCB0aGF0IHNlZ21lbnQgcGFyc2VkIHRvIGltcGxlbWVudAogICAgICAgICMgdGhlIHNvcnRpbmcgcnVsZXMgaW4gUEVQNDQwLgogICAgICAgICMgLSBBbHBoYSBudW1lcmljIHNlZ21lbnRzIHNvcnQgYmVmb3JlIG51bWVyaWMgc2VnbWVudHMKICAgICAgICAjIC0gQWxwaGEgbnVtZXJpYyBzZWdtZW50cyBzb3J0IGxleGljb2dyYXBoaWNhbGx5CiAgICAgICAgIyAtIE51bWVyaWMgc2VnbWVudHMgc29ydCBudW1lcmljYWxseQogICAgICAgICMgLSBTaG9ydGVyIHZlcnNpb25zIHNvcnQgYmVmb3JlIGxvbmdlciB2ZXJzaW9ucyB3aGVuIHRoZSBwcmVmaXhlcwogICAgICAgICMgICBtYXRjaCBleGFjdGx5CiAgICAgICAgX2xvY2FsID0gdHVwbGUoCiAgICAgICAgICAgIChpLCAiIikgaWYgaXNpbnN0YW5jZShpLCBpbnQpIGVsc2UgKE5lZ2F0aXZlSW5maW5pdHksIGkpIGZvciBpIGluIGxvY2FsCiAgICAgICAgKQoKICAgIHJldHVybiBlcG9jaCwgX3JlbGVhc2UsIF9wcmUsIF9wb3N0LCBfZGV2LCBfbG9jYWwKUEsDBBQAAAAAALoro1bf7tK8xQAAAMUAAAAgAAAAcGFja2FnaW5nLTIzLjAuZGlzdC1pbmZvL0xJQ0VOU0VUaGlzIHNvZnR3YXJlIGlzIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiAqZWl0aGVyKiBvZiB0aGUgbGljZW5zZXMKZm91bmQgaW4gTElDRU5TRS5BUEFDSEUgb3IgTElDRU5TRS5CU0QuIENvbnRyaWJ1dGlvbnMgdG8gdGhpcyBzb2Z0d2FyZSBpcyBtYWRlCnVuZGVyIHRoZSB0ZXJtcyBvZiAqYm90aCogdGhlc2UgbGljZW5zZXMuClBLAwQUAAAAAAC6K6NWsLejHr4nAAC+JwAAJwAAAHBhY2thZ2luZy0yMy4wLmRpc3QtaW5mby9MSUNFTlNFLkFQQUNIRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQogICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIuMCwgSmFudWFyeSAyMDA0CiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KCiAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJU1RSSUJVVElPTgoKICAgMS4gRGVmaW5pdGlvbnMuCgogICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAogICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KCiAgICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVyIG9yIGVudGl0eSBhdXRob3JpemVkIGJ5CiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KCiAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1lYW4gdGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgogICAgICBjb250cm9sIHdpdGggdGhhdCBlbnRpdHkuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLAogICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGlyZWN0IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUKICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKICAgICAgb3RoZXJ3aXNlLCBvciAoaWkpIG93bmVyc2hpcCBvZiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9yIG1vcmUgb2YgdGhlCiAgICAgIG91dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNoaXAgb2Ygc3VjaCBlbnRpdHkuCgogICAgICAiWW91IiAob3IgIllvdXIiKSBzaGFsbCBtZWFuIGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuCgogICAgICAiU291cmNlIiBmb3JtIHNoYWxsIG1lYW4gdGhlIHByZWZlcnJlZCBmb3JtIGZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucywKICAgICAgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1lbnRhdGlvbgogICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgoKICAgICAgIk9iamVjdCIgZm9ybSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmljYWwKICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAogICAgICBub3QgbGltaXRlZCB0byBjb21waWxlZCBvYmplY3QgY29kZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sCiAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhlciBtZWRpYSB0eXBlcy4KCiAgICAgICJXb3JrIiBzaGFsbCBtZWFuIHRoZSB3b3JrIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gU291cmNlIG9yCiAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCiAgICAgIChhbiBleGFtcGxlIGlzIHByb3ZpZGVkIGluIHRoZSBBcHBlbmRpeCBiZWxvdykuCgogICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CiAgICAgIGZvcm0sIHRoYXQgaXMgYmFzZWQgb24gKG9yIGRlcml2ZWQgZnJvbSkgdGhlIFdvcmsgYW5kIGZvciB3aGljaCB0aGUKICAgICAgZWRpdG9yaWFsIHJldmlzaW9ucywgYW5ub3RhdGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucwogICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcwogICAgICBvZiB0aGlzIExpY2Vuc2UsIERlcml2YXRpdmUgV29ya3Mgc2hhbGwgbm90IGluY2x1ZGUgd29ya3MgdGhhdCByZW1haW4KICAgICAgc2VwYXJhYmxlIGZyb20sIG9yIG1lcmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2VzIG9mLAogICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgoKICAgICAgIkNvbnRyaWJ1dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNsdWRpbmcKICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucwogICAgICB0byB0aGF0IFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVudGlvbmFsbHkKICAgICAgc3VibWl0dGVkIHRvIExpY2Vuc29yIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25lcgogICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKICAgICAgdGhlIGNvcHlyaWdodCBvd25lci4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQiCiAgICAgIG1lYW5zIGFueSBmb3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQKICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KICAgICAgY29tbXVuaWNhdGlvbiBvbiBlbGVjdHJvbmljIG1haWxpbmcgbGlzdHMsIHNvdXJjZSBjb2RlIGNvbnRyb2wgc3lzdGVtcywKICAgICAgYW5kIGlzc3VlIHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0aGUKICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CiAgICAgIGV4Y2x1ZGluZyBjb21tdW5pY2F0aW9uIHRoYXQgaXMgY29uc3BpY3VvdXNseSBtYXJrZWQgb3Igb3RoZXJ3aXNlCiAgICAgIGRlc2lnbmF0ZWQgaW4gd3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24uIgoKICAgICAgIkNvbnRyaWJ1dG9yIiBzaGFsbCBtZWFuIExpY2Vuc29yIGFuZCBhbnkgaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmlidXRpb24gaGFzIGJlZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCiAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgoKICAgMi4gR3JhbnQgb2YgQ29weXJpZ2h0IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCiAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBwcmVwYXJlIERlcml2YXRpdmUgV29ya3Mgb2YsCiAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQogICAgICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29ya3MgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLgoKICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCiAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCiAgICAgIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLAogICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQogICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgogICAgICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgQ29udHJpYnV0aW9uKHMpCiAgICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24ocykgd2FzIHN1Ym1pdHRlZC4gSWYgWW91CiAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCiAgICAgIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFdvcmsKICAgICAgb3IgYSBDb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyBkaXJlY3QKICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcwogICAgICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUKICAgICAgYXMgb2YgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgoKICAgNC4gUmVkaXN0cmlidXRpb24uIFlvdSBtYXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUKICAgICAgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0CiAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CiAgICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMgTGljZW5zZTsgYW5kCgogICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhlIGZpbGVzOyBhbmQKCiAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcwogICAgICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZAogICAgICAgICAgYXR0cmlidXRpb24gbm90aWNlcyBmcm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQKCiAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cwogICAgICAgICAgZGlzdHJpYnV0aW9uLCB0aGVuIGFueSBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUgbXVzdAogICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJpYnV0aW9uIG5vdGljZXMgY29udGFpbmVkCiAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKICAgICAgICAgIHBlcnRhaW4gdG8gYW55IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3MsIGluIGF0IGxlYXN0IG9uZQogICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZpbGUgZGlzdHJpYnV0ZWQKICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKICAgICAgICAgIGRvY3VtZW50YXRpb24sIGlmIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIERlcml2YXRpdmUgV29ya3M7IG9yLAogICAgICAgICAgd2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFuZAogICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCiAgICAgICAgICBvZiB0aGUgTk9USUNFIGZpbGUgYXJlIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHkgYW5kCiAgICAgICAgICBkbyBub3QgbW9kaWZ5IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgogICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKICAgICAgICAgIG9yIGFzIGFuIGFkZGVuZHVtIHRvIHRoZSBOT1RJQ0UgdGV4dCBmcm9tIHRoZSBXb3JrLCBwcm92aWRlZAogICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCiAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCgogICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQgc3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwogICAgICBmb3IgdXNlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3RyaWJ1dGlvbiBvZiBZb3VyIG1vZGlmaWNhdGlvbnMsIG9yCiAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUsIHByb3ZpZGVkIFlvdXIgdXNlLAogICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKICAgICAgdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGluIHRoaXMgTGljZW5zZS4KCiAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKICAgICAgYW55IENvbnRyaWJ1dGlvbiBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrCiAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCiAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgogICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGFib3ZlLCBub3RoaW5nIGhlcmVpbiBzaGFsbCBzdXBlcnNlZGUgb3IgbW9kaWZ5CiAgICAgIHRoZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4ZWN1dGVkCiAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KCiAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgdHJhZGUKICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAogICAgICBleGNlcHQgYXMgcmVxdWlyZWQgZm9yIHJlYXNvbmFibGUgYW5kIGN1c3RvbWFyeSB1c2UgaW4gZGVzY3JpYmluZyB0aGUKICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBvZiB0aGUgTk9USUNFIGZpbGUuCgogICA3LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IKICAgICAgYWdyZWVkIHRvIGluIHdyaXRpbmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAogICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCiAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBhbnkgd2FycmFudGllcyBvciBjb25kaXRpb25zCiAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKICAgICAgUEFSVElDVUxBUiBQVVJQT1NFLiBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlCiAgICAgIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUgV29yayBhbmQgYXNzdW1lIGFueQogICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCgogICA4LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwKICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCiAgICAgIHVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyAoc3VjaCBhcyBkZWxpYmVyYXRlIGFuZCBncm9zc2x5CiAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCiAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKICAgICAgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9mIGFueSBjaGFyYWN0ZXIgYXJpc2luZyBhcyBhCiAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Igb3V0IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAogICAgICB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBhbnkgYW5kIGFsbAogICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZlbiBpZiBzdWNoIENvbnRyaWJ1dG9yCiAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KCiAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBBZGRpdGlvbmFsIExpYWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKICAgICAgYW5kIGNoYXJnZSBhIGZlZSBmb3IsIGFjY2VwdGFuY2Ugb2Ygc3VwcG9ydCwgd2FycmFudHksIGluZGVtbml0eSwKICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9vciByaWdodHMgY29uc2lzdGVudCB3aXRoIHRoaXMKICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKICAgICAgb24gWW91ciBvd24gYmVoYWxmIGFuZCBvbiBZb3VyIHNvbGUgcmVzcG9uc2liaWxpdHksIG5vdCBvbiBiZWhhbGYKICAgICAgb2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdyZWUgdG8gaW5kZW1uaWZ5LAogICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKICAgICAgaW5jdXJyZWQgYnksIG9yIGNsYWltcyBhc3NlcnRlZCBhZ2FpbnN0LCBzdWNoIENvbnRyaWJ1dG9yIGJ5IHJlYXNvbgogICAgICBvZiB5b3VyIGFjY2VwdGluZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4KCiAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwpQSwMEFAAAAAAAuiujVo9QC0dABQAAQAUAACQAAABwYWNrYWdpbmctMjMuMC5kaXN0LWluZm8vTElDRU5TRS5CU0RDb3B5cmlnaHQgKGMpIERvbmFsZCBTdHVmZnQgYW5kIGluZGl2aWR1YWwgY29udHJpYnV0b3JzLgpBbGwgcmlnaHRzIHJlc2VydmVkLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgoKICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgogICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECkFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECldBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQpGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTApEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLApPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpQSwMEFAAAAAAAuiujVorcK9zuCwAA7gsAACEAAABwYWNrYWdpbmctMjMuMC5kaXN0LWluZm8vTUVUQURBVEFNZXRhZGF0YS1WZXJzaW9uOiAyLjEKTmFtZTogcGFja2FnaW5nClZlcnNpb246IDIzLjAKU3VtbWFyeTogQ29yZSB1dGlsaXRpZXMgZm9yIFB5dGhvbiBwYWNrYWdlcwpBdXRob3ItZW1haWw6IERvbmFsZCBTdHVmZnQgPGRvbmFsZEBzdHVmZnQuaW8+ClJlcXVpcmVzLVB5dGhvbjogPj0zLjcKRGVzY3JpcHRpb24tQ29udGVudC1UeXBlOiB0ZXh0L3gtcnN0CkNsYXNzaWZpZXI6IERldmVsb3BtZW50IFN0YXR1cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUKQ2xhc3NpZmllcjogSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycwpDbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBBcGFjaGUgU29mdHdhcmUgTGljZW5zZQpDbGFzc2lmaWVyOiBMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBCU0QgTGljZW5zZQpDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24KQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMKQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMgOjogT25seQpDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy43CkNsYXNzaWZpZXI6IFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjgKQ2xhc3NpZmllcjogUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOQpDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy4xMApDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy4xMQpDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogQ1B5dGhvbgpDbGFzc2lmaWVyOiBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogSW1wbGVtZW50YXRpb24gOjogUHlQeQpQcm9qZWN0LVVSTDogRG9jdW1lbnRhdGlvbiwgaHR0cHM6Ly9wYWNrYWdpbmcucHlwYS5pby8KUHJvamVjdC1VUkw6IFNvdXJjZSwgaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvcGFja2FnaW5nCgpwYWNrYWdpbmcKPT09PT09PT09CgouLiBzdGFydC1pbnRybwoKUmV1c2FibGUgY29yZSB1dGlsaXRpZXMgZm9yIHZhcmlvdXMgUHl0aG9uIFBhY2thZ2luZwpgaW50ZXJvcGVyYWJpbGl0eSBzcGVjaWZpY2F0aW9ucyA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zcGVjaWZpY2F0aW9ucy8+YF8uCgpUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXRpbGl0aWVzIHRoYXQgaW1wbGVtZW50IHRoZSBpbnRlcm9wZXJhYmlsaXR5CnNwZWNpZmljYXRpb25zIHdoaWNoIGhhdmUgY2xlYXJseSBvbmUgY29ycmVjdCBiZWhhdmlvdXIgKGVnOiA6cGVwOmA0NDBgKQpvciBiZW5lZml0IGdyZWF0bHkgZnJvbSBoYXZpbmcgYSBzaW5nbGUgc2hhcmVkIGltcGxlbWVudGF0aW9uIChlZzogOnBlcDpgNDI1YCkuCgouLiBlbmQtaW50cm8KClRoZSBgYHBhY2thZ2luZ2BgIHByb2plY3QgaW5jbHVkZXMgdGhlIGZvbGxvd2luZzogdmVyc2lvbiBoYW5kbGluZywgc3BlY2lmaWVycywKbWFya2VycywgcmVxdWlyZW1lbnRzLCB0YWdzLCB1dGlsaXRpZXMuCgpEb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0KClRoZSBgZG9jdW1lbnRhdGlvbmBfIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFuZCB0aGUgQVBJIGZvciB0aGUgZm9sbG93aW5nOgoKLSBWZXJzaW9uIEhhbmRsaW5nCi0gU3BlY2lmaWVycwotIE1hcmtlcnMKLSBSZXF1aXJlbWVudHMKLSBUYWdzCi0gVXRpbGl0aWVzCgpJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tCgpVc2UgYGBwaXBgYCB0byBpbnN0YWxsIHRoZXNlIHV0aWxpdGllczo6CgogICAgcGlwIGluc3RhbGwgcGFja2FnaW5nCgpEaXNjdXNzaW9uCi0tLS0tLS0tLS0KCklmIHlvdSBydW4gaW50byBidWdzLCB5b3UgY2FuIGZpbGUgdGhlbSBpbiBvdXIgYGlzc3VlIHRyYWNrZXJgXy4KCllvdSBjYW4gYWxzbyBqb2luIGBgI3B5cGFgYCBvbiBGcmVlbm9kZSB0byBhc2sgcXVlc3Rpb25zIG9yIGdldCBpbnZvbHZlZC4KCgouLiBfYGRvY3VtZW50YXRpb25gOiBodHRwczovL3BhY2thZ2luZy5weXBhLmlvLwouLiBfYGlzc3VlIHRyYWNrZXJgOiBodHRwczovL2dpdGh1Yi5jb20vcHlwYS9wYWNrYWdpbmcvaXNzdWVzCgoKQ29kZSBvZiBDb25kdWN0Ci0tLS0tLS0tLS0tLS0tLQoKRXZlcnlvbmUgaW50ZXJhY3RpbmcgaW4gdGhlIHBhY2thZ2luZyBwcm9qZWN0J3MgY29kZWJhc2VzLCBpc3N1ZSB0cmFja2VycywgY2hhdApyb29tcywgYW5kIG1haWxpbmcgbGlzdHMgaXMgZXhwZWN0ZWQgdG8gZm9sbG93IHRoZSBgUFNGIENvZGUgb2YgQ29uZHVjdGBfLgoKLi4gX1BTRiBDb2RlIG9mIENvbmR1Y3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhLy5naXRodWIvYmxvYi9tYWluL0NPREVfT0ZfQ09ORFVDVC5tZAoKQ29udHJpYnV0aW5nCi0tLS0tLS0tLS0tLQoKVGhlIGBgQ09OVFJJQlVUSU5HLnJzdGBgIGZpbGUgb3V0bGluZXMgaG93IHRvIGNvbnRyaWJ1dGUgdG8gdGhpcyBwcm9qZWN0IGFzCndlbGwgYXMgaG93IHRvIHJlcG9ydCBhIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZS4gVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMKcHJvamVjdCBhbHNvIGNvdmVycyBpbmZvcm1hdGlvbiBhYm91dCBgcHJvamVjdCBkZXZlbG9wbWVudGBfIGFuZCBgc2VjdXJpdHlgXy4KCi4uIF9gcHJvamVjdCBkZXZlbG9wbWVudGA6IGh0dHBzOi8vcGFja2FnaW5nLnB5cGEuaW8vZW4vbGF0ZXN0L2RldmVsb3BtZW50LwouLiBfYHNlY3VyaXR5YDogaHR0cHM6Ly9wYWNrYWdpbmcucHlwYS5pby9lbi9sYXRlc3Qvc2VjdXJpdHkvCgpQcm9qZWN0IEhpc3RvcnkKLS0tLS0tLS0tLS0tLS0tCgpQbGVhc2UgcmV2aWV3IHRoZSBgYENIQU5HRUxPRy5yc3RgYCBmaWxlIG9yIHRoZSBgQ2hhbmdlbG9nIGRvY3VtZW50YXRpb25gXyBmb3IKcmVjZW50IGNoYW5nZXMgYW5kIHByb2plY3QgaGlzdG9yeS4KCi4uIF9gQ2hhbmdlbG9nIGRvY3VtZW50YXRpb25gOiBodHRwczovL3BhY2thZ2luZy5weXBhLmlvL2VuL2xhdGVzdC9jaGFuZ2Vsb2cvCgpQSwMEFAAAAAAAuiujVq84N6pRAAAAUQAAAB4AAABwYWNrYWdpbmctMjMuMC5kaXN0LWluZm8vV0hFRUxXaGVlbC1WZXJzaW9uOiAxLjAKR2VuZXJhdG9yOiBmbGl0IDMuOC4wClJvb3QtSXMtUHVyZWxpYjogdHJ1ZQpUYWc6IHB5My1ub25lLWFueQpQSwMEFAAAAAAAuiujVqd41P4sBgAALAYAAB8AAABwYWNrYWdpbmctMjMuMC5kaXN0LWluZm8vUkVDT1JEcGFja2FnaW5nL19faW5pdF9fLnB5LHNoYTI1Nj03QmxKX0RjSXQxenYwMVVRY1pMb3ppZGN6ek5jaXZLajY2eklCa1JMM1I0LDUwMQpwYWNrYWdpbmcvX2VsZmZpbGUucHksc2hhMjU2PWhibUs4T0Q2WjdmWTZod2luSEVVY0QxYnk3Y3prR2lOWXU3U2huRkVrMmssMzI2NgpwYWNrYWdpbmcvX21hbnlsaW51eC5weSxzaGEyNTY9dVo4MjFQQnFRcm9raFVid2U3RTBVb2RFcmFNSHF6b1NnVHZmSjhNSWwzMCw4ODEzCnBhY2thZ2luZy9fbXVzbGxpbnV4LnB5LHNoYTI1Nj1tdlBrN0ZOampJTEtSTElkTXhSN0l2SjF1Z2dMZ0Nzem8tTDlyamZwaTBNLDI1MjQKcGFja2FnaW5nL19wYXJzZXIucHksc2hhMjU2PWpqRmpTcU5mN1cyLVRhNllVa3l3SzBQNGQyaTBCel9NcUxPZmw3TzFUa3csOTM5OQpwYWNrYWdpbmcvX3N0cnVjdHVyZXMucHksc2hhMjU2PXEzZVZObWJXSkdHX1MwRGl0X1MzQW84cVFxel81UFlUWEZBS0JaZTV5cjQsMTQzMQpwYWNrYWdpbmcvX3Rva2VuaXplci5weSxzaGEyNTY9Y3pHaWJMLTRvUG9meDFwQ1N0X2hyb3pOYkhsT1BycUd2Nm0tMGQtaVRkbyw1MTQ4CnBhY2thZ2luZy9tYXJrZXJzLnB5LHNoYTI1Nj1IRFBYRTBfTVBCU3dzd185dXBlejh0OG1kcnFVR3JnaU9HX3F5UXktVzMwLDgxNjEKcGFja2FnaW5nL3B5LnR5cGVkLHNoYTI1Nj00N0RFUXBqOEhCU2EtX1RJbVctNUpDZXVRZVJrbTVOTXBKV1pHM2hTdUZVLDAKcGFja2FnaW5nL3JlcXVpcmVtZW50cy5weSxzaGEyNTY9NG5PS2hlYUJiVkVRWFRHU3FhT0dUeTFUa2c3Sl9zRW5vM3U4anhDLWJhdywzMjY0CnBhY2thZ2luZy9zcGVjaWZpZXJzLnB5LHNoYTI1Nj0tM2FqWjVDa1Fyak5XNUg4TlBqdkNWMlJCZ3Itdzl3Y1lCZGI4a2pQQmZnLDM5MDQ2CnBhY2thZ2luZy90YWdzLnB5LHNoYTI1Nj1mT0tuWlZmaVUzb2M5Q1BTempKVXNNazVWVGZnT2ZwTmhXb2JVSDBzQWxnLDE4MDY1CnBhY2thZ2luZy91dGlscy5weSxzaGEyNTY9ZXMwY0NlektzcHpyaVEtM1Y4OGgzeUp6eHowMjhldVYyc1V3TTYxa0Utbyw0MzU1CnBhY2thZ2luZy92ZXJzaW9uLnB5LHNoYTI1Nj1fVUxlZm1kZExETEo5VktSRkFYaHNoRWQwelA4T1lQaGNqQ1BmWW9sVWJvLDE2Mjk1CnBhY2thZ2luZy0yMy4wLmRpc3QtaW5mby9MSUNFTlNFLHNoYTI1Nj15dEh2VzlOQTF6NEhTNllVMG05OTZzcGNlVUREMk1OSVV1WmNTUWxvYkVnLDE5NwpwYWNrYWdpbmctMjMuMC5kaXN0LWluZm8vTElDRU5TRS5BUEFDSEUsc2hhMjU2PURWUXVESWdFNDVxbjgzNndEYVduWWhTZHhvTFhncFJSS0g0UnVUanBSWlEsMTAxNzQKcGFja2FnaW5nLTIzLjAuZGlzdC1pbmZvL0xJQ0VOU0UuQlNELHNoYTI1Nj10dzUtbTNRdkhNYjVTTE5NRnFvNV8tenBRWlkyUzhpUDhOSVlEd0FvLXNVLDEzNDQKcGFja2FnaW5nLTIzLjAuZGlzdC1pbmZvL01FVEFEQVRBLHNoYTI1Nj1SRlhPV2NiRUVJVE83RFdXeWh0azU1ajRCR2g3UWFLYjJWcUwwVEY4WV80LDMwNTQKcGFja2FnaW5nLTIzLjAuZGlzdC1pbmZvL1dIRUVMLHNoYTI1Nj1yU2dxX0pwSEY5ZkhSMWx4NTNxd2dfMS0yTHlwWkVfcW1jdVhiVlVxOTQ4LDgxCnBhY2thZ2luZy0yMy4wLmRpc3QtaW5mby9SRUNPUkQsLApQSwECFAMUAAAAAAC6K6NWpWeg6PUBAAD1AQAAFQAAAAAAAAAAAAAAgAEAAAAAcGFja2FnaW5nL19faW5pdF9fLnB5UEsBAhQDFAAAAAAAuiujVmIMBa7CDAAAwgwAABUAAAAAAAAAAAAAAIABKAIAAHBhY2thZ2luZy9fZWxmZmlsZS5weVBLAQIUAxQAAAAAALoro1YNfFckbSIAAG0iAAAXAAAAAAAAAAAAAACAAR0PAABwYWNrYWdpbmcvX21hbnlsaW51eC5weVBLAQIUAxQAAAAAALoro1aBHZEH3AkAANwJAAAXAAAAAAAAAAAAAACAAb8xAABwYWNrYWdpbmcvX211c2xsaW51eC5weVBLAQIUAxQAAAAAALoro1YiCAw5tyQAALckAAAUAAAAAAAAAAAAAACAAdA7AABwYWNrYWdpbmcvX3BhcnNlci5weVBLAQIUAxQAAAAAALoro1Ywo/KSlwUAAJcFAAAYAAAAAAAAAAAAAACAAblgAABwYWNrYWdpbmcvX3N0cnVjdHVyZXMucHlQSwECFAMUAAAAAAC6K6NWGekdGxwUAAAcFAAAFwAAAAAAAAAAAAAAgAGGZgAAcGFja2FnaW5nL190b2tlbml6ZXIucHlQSwECFAMUAAAAAAC6K6NWvB60kuEfAADhHwAAFAAAAAAAAAAAAAAAgAHXegAAcGFja2FnaW5nL21hcmtlcnMucHlQSwECFAMUAAAAAAC6K6NWAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAgAHqmgAAcGFja2FnaW5nL3B5LnR5cGVkUEsBAhQDFAAAAAAAuiujVhNjsdvADAAAwAwAABkAAAAAAAAAAAAAAIABGpsAAHBhY2thZ2luZy9yZXF1aXJlbWVudHMucHlQSwECFAMUAAAAAAC6K6NWTumYwYaYAACGmAAAFwAAAAAAAAAAAAAAgAERqAAAcGFja2FnaW5nL3NwZWNpZmllcnMucHlQSwECFAMUAAAAAAC6K6NWoBe3YpFGAACRRgAAEQAAAAAAAAAAAAAAgAHMQAEAcGFja2FnaW5nL3RhZ3MucHlQSwECFAMUAAAAAAC6K6NW2CorJAMRAAADEQAAEgAAAAAAAAAAAAAAgAGMhwEAcGFja2FnaW5nL3V0aWxzLnB5UEsBAhQDFAAAAAAAuiujVvCZEAqnPwAApz8AABQAAAAAAAAAAAAAAIABv5gBAHBhY2thZ2luZy92ZXJzaW9uLnB5UEsBAhQDFAAAAAAAuiujVt/u0rzFAAAAxQAAACAAAAAAAAAAAAAAAIABmNgBAHBhY2thZ2luZy0yMy4wLmRpc3QtaW5mby9MSUNFTlNFUEsBAhQDFAAAAAAAuiujVrC3ox6+JwAAvicAACcAAAAAAAAAAAAAAIABm9kBAHBhY2thZ2luZy0yMy4wLmRpc3QtaW5mby9MSUNFTlNFLkFQQUNIRVBLAQIUAxQAAAAAALoro1aPUAtHQAUAAEAFAAAkAAAAAAAAAAAAAACAAZ4BAgBwYWNrYWdpbmctMjMuMC5kaXN0LWluZm8vTElDRU5TRS5CU0RQSwECFAMUAAAAAAC6K6NWitwr3O4LAADuCwAAIQAAAAAAAAAAAAAAgAEgBwIAcGFja2FnaW5nLTIzLjAuZGlzdC1pbmZvL01FVEFEQVRBUEsBAhQDFAAAAAAAuiujVq84N6pRAAAAUQAAAB4AAAAAAAAAAAAAAIABTRMCAHBhY2thZ2luZy0yMy4wLmRpc3QtaW5mby9XSEVFTFBLAQIUAxQAAAAAALoro1aneNT+LAYAACwGAAAfAAAAAAAAAAAAAACAAdoTAgBwYWNrYWdpbmctMjMuMC5kaXN0LWluZm8vUkVDT1JEUEsFBgAAAAAUABQAiQUAAEMaAgAAAA==
AGFzbQEAAAAAEwhkeWxpbmsuMAEI2M7wAQboMQABtAqqAWACf38Bf2ABfwF/YAN/f38Bf2ABfwBgBH9/f38Bf2ACf38AYAV/f39/fwF/YAN/f38AYAABf2AEf39/fwBgBn9/f39/fwF/YAV/f39/fwBgAABgCH9/f39/f39/AX9gBn9/f39/fwBgB39/f39/f38Bf2ABfAF8YAN/fn4AYAF9AX1gCX9/f39/f39/fwF/YAF/AX5gAn9/AX5gBX9+fn5+AGABfwF8YAF+AX9gAnx8AXxgA39+fwF+YAJ/fgF/YAJ+fgF+YAJ9fQF9YAJ+fgF/YAF+AX5gAXwBf2ADf39/AX5gB39/f39/f38AYAp/f39/f39/f39/AX9gAn9/AXxgAX0Bf2AAAX5gAX8BfWAEf35+fwBgAn9+AGALf39/f39/f39/f38Bf2AIf39/f39/f38AYAR/f39/AX5gBX9/f3x/AGAAAXxgBX9/f39+AX9gAn5/AX9gA39+fwF/YAJ/fgF+YAJ/fABgBX9/fn5/AGAFf39/fX8AYAV/f35/fwBgAn5/AX5gBn9+fn5+fwBgAnx/AXxgAn1/AX1gCn9/f39/f39/f38AYAl/f39/f39/f38AYAN/f38BfGACf3wBfGACf30BfWABfAF+YAN/f34AYAJ/fwF9YAR+fn5+AX9gA35+fwF+YAJ/fQBgAn98AX9gAnx8AX9gA3x/fwF/YAN/f34Bf2ACfn4BfGABfABgA39/fABgAX0BfmAEf39/fgF/YAN/fn8AYAN/f38BfWAGf39/fX9/AGAGf39/fH9/AGAFf39/f3wBf2AGf39/f35+AX9gBn9/f39+fwF/YAR/f39+AGAHf39/f39+fgF/YAx/f39/f39/f39/f38Bf2AEf39/fQBgBH9/f3wAYAF+AXxgA35/fwF/YAV/f35/fwF/YAF8AX1gA3x8fwF8YAR/f35+AGAEf39/fgF+YAN/fn4Bf2ACfX0Bf2AJf35+fn5+fn5+AGACfn4BfWAEf35+fwF/YAV/f39+fwF/YAZ/f39/f34Bf2AFf39/fn4AYAN+fn8Bf2AEfH9/fwF/YAZ/fH9/f38Bf2AFf3x8fHwAYAV/fX19fQBgAX4BfWACf30Bf2AGf39/f3x/AX9gB39/f39+fn8Bf2APf39/f39/f39/f39/f39/AGADf399AGAEf35/fwF/YAR/f35+AX9gBn9/f399fwBgBn9/f398fwBgBn9/f35/fwBgBn9/f39/fAF/YAV/f39/fwF+YA1/f39/f39/f39/f39/AX9gBH9/f38BfWAEf39/fwF8YAt/f39/f39/f39/fwBgEH9/f39/f39/f39/f39/f38AYBJ/f39/f39/f39/f39/f39/f38Bf2ARf39/f39/f39/f39/f39/f38Bf2ACfH8AYAN+fn4BfmAEfn9/fwBgA35/fwBgBH5/f38Bf2ACfn8AYAV8f39/fwF/YAZ8f39/f38Bf2AGf35/f39/AX9gBH9/fH8BfGAHf39/f39/fwF+YAV/f39+fwBgAAF9YAJ8fwF/YAJ9fwF/YAJ8fwF9YAN/fn4BfmADfHx8AXxgA319fQF9YAd/fn5+fn5+AGADf3x/AXxgA399fwF9YAR/fH9/AXxgBH99f38BfWADf398AX9gA3x+fgF8YAN9fn4BfWADfX1/AX1gA3x/fwBgA31/fwBgBH5+f38AYAZ/f35+f38Bf2ABfQF8YAZ/f39+fn8AYAd/f39+fn9/AGAEfn5+fgF+YAZ/f39/f3wAYAZ+f39/f38BfmADfn9/AX4ClmzMAwNlbnYJZmFpbF90ZXN0AAwDZW52CW5ld19lcnJvcgACA2VudhJoaXdpcmVfdGhyb3dfZXJyb3IAAwNlbnYYZW1zY3JpcHRlbl9hc21fY29uc3RfaW50AAIDZW52C0pzQXJyYXlfTmV3AAgDZW52FkpzQXJyYXlfUHVzaF91bmNoZWNrZWQAAANlbnYLaGl3aXJlX2NhbGwAAANlbnYNaGl3aXJlX2RlY3JlZgADA2VudhpKc1N0cmluZ19JbnRlcm5Gcm9tQ1N0cmluZwABA2VudhBoaXdpcmVfSGFzTWV0aG9kAAADZW52EWhpd2lyZV9DYWxsTWV0aG9kAAIDZW52F2hpd2lyZV9DYWxsTWV0aG9kU3RyaW5nAAIDZW52GGhpd2lyZV9DYWxsTWV0aG9kX05vQXJncwAAA2VudhhoaXdpcmVfQ2FsbE1ldGhvZF9PbmVBcmcAAgNlbnYYaGl3aXJlX2dldF9sZW5ndGhfaGVscGVyAAEDZW52GGhpd2lyZV9nZXRfbGVuZ3RoX3N0cmluZwABA2VudgtoaXdpcmVfaW5pdAAIA2Vudg5qczJweXRob25faW5pdAAIA2VudhVweXRob24yanNfYnVmZmVyX2luaXQACANlbnYNX19hc3NlcnRfZmFpbAAJA2VudhVoYW5kbGVfbmV4dF9yZXN1bHRfanMAAgNlbnYTanMycHl0aG9uX2ltbXV0YWJsZQABA2VudhlKc1Byb3h5X2NvbXB1dGVfdHlwZWZsYWdzAAEDZW52DXB5cHJveHlfQ2hlY2sAAQNlbnYNZGVzdHJveV9wcm94eQAFA2Vudg9kZXN0cm95X3Byb3hpZXMABQNlbnYJanMycHl0aG9uAAEDZW52Fl9hZ2VuX2hhbmRsZV9yZXN1bHRfanMABgNlbnYMSnNBcnJheV9QdXNoAAADZW52DEpzT2JqZWN0X05ldwAIA2VudhJKc09iamVjdF9TZXRTdHJpbmcAAgNlbnYUaGl3aXJlX2Fzc2lnbl90b19wdHIAAANlbnYWaGl3aXJlX2dldF9idWZmZXJfaW5mbwALA2VudhdoaXdpcmVfY29uc3RydWN0b3JfbmFtZQABA2Vudg1oaXdpcmVfaW5jcmVmAAEDZW52F2hpd2lyZV9pc19jb21saW5rX3Byb3h5AAEDZW52E0pzT2JqTWFwX0dldEl0ZXJfanMAAQNlbnYSSnNPYmpNYXBfbGVuZ3RoX2pzAAEDZW52FUpzT2JqTWFwX3N1YnNjcmlwdF9qcwAAA2VudhlKc09iak1hcF9hc3Nfc3Vic2NyaXB0X2pzAAIDZW52FEpzT2JqTWFwX2NvbnRhaW5zX2pzAAADZW52EEpzTWFwX0dldEl0ZXJfanMAAQNlbnYSSnNQcm94eV9HZXRJdGVyX2pzAAEDZW52F0pzUHJveHlfR2V0QXN5bmNJdGVyX2pzAAEDZW52FEpzUHJveHlfc3Vic2NyaXB0X2pzAAADZW52Dmhpd2lyZV90b19ib29sAAEDZW52EWhpd2lyZV9pc19wcm9taXNlAAEDZW52EGhpd2lyZV90b19zdHJpbmcAAQNlbnYLSnNBcnJheV9HZXQAAANlbnYNSnNBcnJheV9zbGljZQAGA2VudhRKc0FycmF5X3NsaWNlX2Fzc2lnbgAPA2Vudg5Kc0FycmF5X0RlbGV0ZQAAA2VudgtKc0FycmF5X1NldAACA2VudhZKc0V4Y2VwdGlvbl9uZXdfaGVscGVyAAIDZW52DEpzT2JqZWN0X0RpcgABA2Vudg1Kc0FycmF5X0NoZWNrAAEDZW52Fmhpd2lyZV9yZXNvbHZlX3Byb21pc2UAAQNlbnYWY3JlYXRlX3Byb21pc2VfaGFuZGxlcwACA2VudhFoaXdpcmVfY2FsbF9ib3VuZAACA2VudhNoaXdpcmVfaXNfZ2VuZXJhdG9yAAEDZW52DndyYXBfZ2VuZXJhdG9yAAADZW52GWhpd2lyZV9pc19hc3luY19nZW5lcmF0b3IAAQNlbnYfZ2V0X2FzeW5jX2pzX2NhbGxfZG9uZV9jYWxsYmFjawABA2VudhR3cmFwX2FzeW5jX2dlbmVyYXRvcgAAA2VudhJKc09iamVjdF9HZXRTdHJpbmcAAANlbnYSaGl3aXJlX2lzX2Z1bmN0aW9uAAEDZW52FUpzT2JqZWN0X0RlbGV0ZVN0cmluZwAAA2VudhBoaXdpcmVfbGVzc190aGFuAAADZW52Fmhpd2lyZV9sZXNzX3RoYW5fZXF1YWwAAANlbnYMaGl3aXJlX2VxdWFsAAADZW52EGhpd2lyZV9ub3RfZXF1YWwAAANlbnYTaGl3aXJlX2dyZWF0ZXJfdGhhbgAAA2VudhloaXdpcmVfZ3JlYXRlcl90aGFuX2VxdWFsAAADZW52D2hpd2lyZV9nZXRfYm9vbAABA2Vudg1oaXdpcmVfdHlwZW9mAAEDZW52EEpzT2JqZWN0X0VudHJpZXMAAQNlbnYNSnNPYmplY3RfS2V5cwABA2Vudg9Kc09iamVjdF9WYWx1ZXMAAQNlbnYRanMycHl0aG9uX2NvbnZlcnQAAgNlbnYQaGl3aXJlX2NvbnN0cnVjdAAAA2VudhtKc0RvdWJsZVByb3h5X3Vud3JhcF9oZWxwZXIAAQNlbnYUY3JlYXRlX29uY2VfY2FsbGFibGUAAQNlbnYWSnNBcnJheV9yZXZlcnNlX2hlbHBlcgABA2VudhhoaXdpcmVfcmV2ZXJzZWRfaXRlcmF0b3IAAQNlbnYOSnNBcnJheV9TcGxpY2UAAANlbnYScHlwcm94eV9Bc1B5T2JqZWN0AAEDZW52FEpzQXJyYXlfaW5kZXhfaGVscGVyAAQDZW52FEpzQXJyYXlfY291bnRfaGVscGVyAAADZW52DkpzTWFwX2NsZWFyX2pzAAEDZW52Fmhpd2lyZV9hc3NpZ25fZnJvbV9wdHIAAANlbnYYSnNCdWZmZXJfRGVjb2RlU3RyaW5nX2pzAAADZW52FGhpd2lyZV93cml0ZV90b19maWxlAAADZW52FWhpd2lyZV9yZWFkX2Zyb21fZmlsZQAAA2VudhBoaXdpcmVfaW50b19maWxlAAADZW52EWNvbnNvbGVfZXJyb3Jfb2JqAAMDZW52Emhpd2lyZV9zdHJpbmdfdXRmOAABA2Vudg9wcm94eV9jYWNoZV9nZXQAAANlbnYPcHJveHlfY2FjaGVfc2V0AAcDZW52Emhpd2lyZV9jYWxsX09uZUFyZwAAA2VudgthcnJheV90b19qcwAAA2Vudg5weXByb3h5X25ld19leAACA2VudhdfcHl0aG9uMmpzX2J1ZmZlcl9pbm5lcgAPA2VudhdfcHl0aG9uMmpzX2NhY2hlX2xvb2t1cAAAA2VudhxweXRob24yanNfX2RlZmF1bHRfY29udmVydGVyAAADZW52F19weXRob24yanNfYWRkX3RvX2NhY2hlAAIDZW52Cmhpd2lyZV9pbnQAAQNlbnYhX3B5dGhvbjJqc19hZGR0b19wb3N0cHJvY2Vzc19saXN0AAkDZW52C3B5cHJveHlfbmV3AAEDZW52DWhpd2lyZV9kb3VibGUAIANlbnYPX3B5dGhvbjJqc191Y3MxAAADZW52D19weXRob24yanNfdWNzMgAAA2Vudg9fcHl0aG9uMmpzX3VjczQAAANlbnYJSnNNYXBfTmV3AAgDZW52InB5dGhvbjJqc19jdXN0b21fX2NyZWF0ZV9qc2NvbnRleHQABANlbnYiX3B5dGhvbjJqc19oYW5kbGVfcG9zdHByb2Nlc3NfbGlzdAAFA2VudhhfcHl0aG9uMmpzX2Rlc3Ryb3lfY2FjaGUAAwNlbnYJSnNNYXBfU2V0AAIDZW52GV9Kc0FycmF5X1B1c2hFbnRyeV9oZWxwZXIAAgNlbnYbX0pzQXJyYXlfUG9zdFByb2Nlc3NfaGVscGVyAAADZW52Fmhpd2lyZV9pbnRfZnJvbV9kaWdpdHMAAANlbnYJSnNTZXRfTmV3AAgDZW52CUpzU2V0X0FkZAAAA2VudhJkZXN0cm95X3Byb3hpZXNfanMAAQNlbnYhZW1zY3JpcHRlbl9leGl0X3dpdGhfbGl2ZV9ydW50aW1lAAwDZW52J19QeUNGdW5jdGlvbldpdGhLZXl3b3Jkc19UcmFtcG9saW5lQ2FsbAAEA2VudhlkZXNjcl9nZXRfdHJhbXBvbGluZV9jYWxsAAIDZW52GWRlc2NyX3NldF90cmFtcG9saW5lX2NhbGwABANlbnYhX1B5SW1wb3J0X0luaXRGdW5jX1RyYW1wb2xpbmVDYWxsAAEDZW52BGV4aXQAAwNlbnYFYWJvcnQADANlbnYKZ2V0ZW50cm9weQAAA2VudhZfUHlfZW1zY3JpcHRlbl9ydW50aW1lAAgDZW52IV9QeV9DaGVja0Vtc2NyaXB0ZW5TaWduYWxzX0hlbHBlcgAIA2VudgtnZXRhZGRyaW5mbwAEA2Vudg1nZXRob3N0YnluYW1lAAEDZW52DWdldGhvc3RieWFkZHIAAgNlbnYOZ2V0cHJvdG9ieW5hbWUAAQNlbnYLZ2V0bmFtZWluZm8ADwNlbnYGc3lzdGVtAAEDZW52CmdldGxvYWRhdmcAAANlbnYIc3RyZnRpbWUABANlbnYLZmZpX2NhbGxfanMACQNlbnYUZmZpX2Nsb3N1cmVfYWxsb2NfanMAAANlbnYTZmZpX2Nsb3N1cmVfZnJlZV9qcwADA2VudhdmZmlfcHJlcF9jbG9zdXJlX2xvY19qcwAGFndhc2lfc25hcHNob3RfcHJldmlldzEJcHJvY19leGl0AAMWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MRFlbnZpcm9uX3NpemVzX2dldAAAFndhc2lfc25hcHNob3RfcHJldmlldzELZW52aXJvbl9nZXQAAANlbnYRX19zeXNjYWxsX2ZjbnRsNjQAAgNlbnYPX19zeXNjYWxsX2lvY3RsAAIDZW52EF9fc3lzY2FsbF9vcGVuYXQABANlbnYRX19zeXNjYWxsX2ZzdGF0NjQAABZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGZkX2Nsb3NlAAEWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQdmZF9yZWFkAAQWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQhmZF93cml0ZQAEA2VudhNfX3N5c2NhbGxfZmFjY2Vzc2F0AAQDZW52D19fc3lzY2FsbF9jaGRpcgABA2Vudg9fX3N5c2NhbGxfY2htb2QAAANlbnYSX19zeXNjYWxsX2ZjaG93bmF0AAYDZW52DV9fc3lzY2FsbF9kdXAAAQNlbnYOX19zeXNjYWxsX2R1cDMAAgNlbnYKX2Rsb3Blbl9qcwABA2VudhVfZW1zY3JpcHRlbl9kbG9wZW5fanMACQNlbnYZZW1zY3JpcHRlbl9wcm9taXNlX2NyZWF0ZQAIA2VudhplbXNjcmlwdGVuX3Byb21pc2VfcmVzb2x2ZQAHA2VudhplbXNjcmlwdGVuX3Byb21pc2VfZGVzdHJveQADA2VudglfZGxzeW1fanMAAgNlbnYVZW1zY3JpcHRlbl9tZW1jcHlfYmlnAAcDZW52Cl9tdW5tYXBfanMACgNlbnYJX21zeW5jX2pzAAoDZW52CF9tbWFwX2pzAA8DZW52CV90enNldF9qcwAHA2VudgpfdGltZWdtX2pzAAEDZW52Cl9ta3RpbWVfanMAAQNlbnYNX2xvY2FsdGltZV9qcwAFA2VudgpfZ210aW1lX2pzAAUDZW52E2Vtc2NyaXB0ZW5fZGF0ZV9ub3cALgNlbnYgX2Vtc2NyaXB0ZW5fZ2V0X25vd19pc19tb25vdG9uaWMACANlbnYSZW1zY3JpcHRlbl9nZXRfbm93AC4DZW52FmVtc2NyaXB0ZW5fZ2V0X25vd19yZXMALgNlbnYQX19zeXNjYWxsX2ZjaGRpcgABA2VudhBfX3N5c2NhbGxfZmNobW9kAAADZW52El9fc3lzY2FsbF9mY2htb2RhdAAEA2VudhRfX3N5c2NhbGxfbmV3ZnN0YXRhdAAEA2VudhJfX3N5c2NhbGxfZmNob3duMzIAAgNlbnYTX19zeXNjYWxsX2ZkYXRhc3luYwABA2VudhBfX3N5c2NhbGxfc3RhdDY0AAADZW52EV9fc3lzY2FsbF9sc3RhdDY0AAAWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQdmZF9zeW5jAAEDZW52FV9fc3lzY2FsbF9mdHJ1bmNhdGU2NAAbA2VudhBfX3N5c2NhbGxfZ2V0Y3dkAAADZW52FF9fc3lzY2FsbF9nZXRkZW50czY0AAIWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQ1mZF9mZHN0YXRfZ2V0AAADZW52EF9fc3lzY2FsbF9saW5rYXQABhZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxB2ZkX3NlZWsAdQNlbnYRX19zeXNjYWxsX21rZGlyYXQAAgNlbnYRX19zeXNjYWxsX21rbm9kYXQABANlbnYOX19zeXNjYWxsX3BpcGUAAQNlbnYOX19zeXNjYWxsX3BvbGwAAgNlbnYTX19zeXNjYWxsX2ZhZHZpc2U2NABmA2VudhNfX3N5c2NhbGxfZmFsbG9jYXRlAHYWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQhmZF9wcmVhZABnA2VudhhfZW1zY3JpcHRlbl9nZXRfcHJvZ25hbWUABRZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCWZkX3B3cml0ZQBnA2VudhFfX2NhbGxfc2lnaGFuZGxlcgAFA2VudhRfX3N5c2NhbGxfcmVhZGxpbmthdAAEA2VudhJfX3N5c2NhbGxfdW5saW5rYXQAAgNlbnYPX19zeXNjYWxsX3JtZGlyAAEDZW52El9fc3lzY2FsbF9yZW5hbWVhdAAEA2VudhRfX3N5c2NhbGxfX25ld3NlbGVjdAAGA2Vudg1fc2V0aXRpbWVyX2pzAEYDZW52El9fc3lzY2FsbF9zdGF0ZnM2NAACA2VudhNfX3N5c2NhbGxfZnN0YXRmczY0AAIDZW52EV9fc3lzY2FsbF9zeW1saW5rAAADZW52E19fc3lzY2FsbF9zeW1saW5rYXQAAgNlbnYXZW1zY3JpcHRlbl9nZXRfaGVhcF9tYXgACANlbnYUX19zeXNjYWxsX3RydW5jYXRlNjQAGwNlbnYTX19zeXNjYWxsX3V0aW1lbnNhdAAEA2VudhZlbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwAAEDZW52GV9lbXNjcmlwdGVuX3Rocm93X2xvbmdqbXAADANlbnYLaW52b2tlX2lpaWkABANlbnYbX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaF8zAAEDZW52Cmludm9rZV9paWkAAgNlbnYbX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaF8yAAgDZW52EV9fcmVzdW1lRXhjZXB0aW9uAAMDZW52CGludm9rZV9pAAEDZW52DWludm9rZV92aWlpZmkAdwNlbnYNaW52b2tlX3ZpaWlkaQB4A2VudgxpbnZva2VfdmlpaWkACwNlbnYJaW52b2tlX2lpAAADZW52CGludm9rZV9qABQDZW52CWludm9rZV9qaQAVA2VudgppbnZva2VfdmlpAAcDZW52Cmludm9rZV9qaWkAIQNlbnYIaW52b2tlX3YAAwNlbnYLaW52b2tlX3ZpaWkACQNlbnYRX19jeGFfYmVnaW5fY2F0Y2gAAQNlbnYNX19jeGFfcmV0aHJvdwAMA2Vudg9fX2N4YV9lbmRfY2F0Y2gADANlbnYMaW52b2tlX2lpaWlpAAYDZW52CWludm9rZV92aQAFA2VudgtfX2N4YV90aHJvdwAHA2Vudg1pbnZva2VfdmlpaWlpAA4DZW52DWludm9rZV9paWlpaWkACgNlbnYZX19jeGFfdW5jYXVnaHRfZXhjZXB0aW9ucwAIA2VudiJfX2N4YV9kZWNyZW1lbnRfZXhjZXB0aW9uX3JlZmNvdW50AAMDZW52Il9fY3hhX2luY3JlbWVudF9leGNlcHRpb25fcmVmY291bnQAAwNlbnYfX19jeGFfY3VycmVudF9wcmltYXJ5X2V4Y2VwdGlvbgAIA2Vudh9fX2N4YV9yZXRocm93X3ByaW1hcnlfZXhjZXB0aW9uAAMDZW52Dmludm9rZV9paWlpaWlpAA8DZW52DWludm9rZV92aWlqaWkAeQNlbnYNaW52b2tlX2lpaWlpagBoA2Vudg1pbnZva2VfaWlpaWlkAHoDZW52Dmludm9rZV9paWlpaWpqAFcDZW52D2ludm9rZV9paWlpaWlpaQANA2VudhJpbnZva2VfaWlpaWlpaWlpaWkAKgNlbnYMaW52b2tlX2ppaWlpAHsDZW52FGludm9rZV9paWlpaWlpaWlpaWlpAHwDZW52C2ludm9rZV9maWlpAH0DZW52C2ludm9rZV9kaWlpAH4DZW52D2ludm9rZV92aWlpaWlpaQArA2VudgpzdHJmdGltZV9sAAYDZW52E2ludm9rZV9paWlpaWlpaWlpaWkAWANlbnYSaW52b2tlX3ZpaWlpaWlpaWlpAH8DZW52F2ludm9rZV92aWlpaWlpaWlpaWlpaWlpAIABA2Vudg5pbnZva2VfdmlpaWlpaQAiA2VudgtpbnZva2VfamlpaQAsA2VudgtpbnZva2VfdmlpZgBZA2VudgtpbnZva2VfdmlpZABaA2VudgxpbnZva2VfdmlpamoAaQNlbnYRX19zeXNjYWxsX2FjY2VwdDQACgNlbnYOX19zeXNjYWxsX2JpbmQACgNlbnYRX19zeXNjYWxsX2Nvbm5lY3QACgNlbnYVX19zeXNjYWxsX2dldHBlZXJuYW1lAAoDZW52FV9fc3lzY2FsbF9nZXRzb2NrbmFtZQAKA2VudhRfX3N5c2NhbGxfZ2V0c29ja29wdAAKA2VudhBfX3N5c2NhbGxfbGlzdGVuAAoDZW52El9fc3lzY2FsbF9yZWN2ZnJvbQAKA2VudhFfX3N5c2NhbGxfcmVjdm1zZwAKA2VudhFfX3N5c2NhbGxfc2VuZG1zZwAKA2VudhBfX3N5c2NhbGxfc2VuZHRvAAoDZW52EF9fc3lzY2FsbF9zb2NrZXQACgNlbnYNX19tZW1vcnlfYmFzZQN/AANlbnYPX19zdGFja19wb2ludGVyA38BA2VudgxfX3RhYmxlX2Jhc2UDfwAIR09ULmZ1bmMPX19jeGFfZW5kX2NhdGNoA38BCEdPVC5mdW5jDV9fY3hhX3JldGhyb3cDfwEHR09ULm1lbQtfX2hlYXBfYmFzZQN/AQhHT1QuZnVuYwVhYm9ydAN/AQhHT1QuZnVuYyVlbXNjcmlwdGVuX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFA38BCEdPVC5mdW5jJ2Vtc2NyaXB0ZW5fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRQN/AQhHT1QuZnVuYyVlbXNjcmlwdGVuX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFA38BCEdPVC5mdW5jHWVtc2NyaXB0ZW5fZ2xEcmF3QnVmZmVyc1dFQkdMA38BCEdPVC5mdW5jHWVtc2NyaXB0ZW5fZ2xJc1ZlcnRleEFycmF5T0VTA38BCEdPVC5mdW5jH2Vtc2NyaXB0ZW5fZ2xHZW5WZXJ0ZXhBcnJheXNPRVMDfwEIR09ULmZ1bmMiZW1zY3JpcHRlbl9nbERlbGV0ZVZlcnRleEFycmF5c09FUwN/AQhHT1QuZnVuYx9lbXNjcmlwdGVuX2dsQmluZFZlcnRleEFycmF5T0VTA38BCEdPVC5mdW5jI2Vtc2NyaXB0ZW5fZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUA38BCEdPVC5mdW5jImVtc2NyaXB0ZW5fZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQDfwEIR09ULmZ1bmMhZW1zY3JpcHRlbl9nbEdldFF1ZXJ5T2JqZWN0dWl2RVhUA38BCEdPVC5mdW5jIGVtc2NyaXB0ZW5fZ2xHZXRRdWVyeU9iamVjdGl2RVhUA38BCEdPVC5mdW5jGmVtc2NyaXB0ZW5fZ2xHZXRRdWVyeWl2RVhUA38BCEdPVC5mdW5jHGVtc2NyaXB0ZW5fZ2xRdWVyeUNvdW50ZXJFWFQDfwEIR09ULmZ1bmMYZW1zY3JpcHRlbl9nbEVuZFF1ZXJ5RVhUA38BCEdPVC5mdW5jGmVtc2NyaXB0ZW5fZ2xCZWdpblF1ZXJ5RVhUA38BCEdPVC5mdW5jF2Vtc2NyaXB0ZW5fZ2xJc1F1ZXJ5RVhUA38BCEdPVC5mdW5jHWVtc2NyaXB0ZW5fZ2xEZWxldGVRdWVyaWVzRVhUA38BCEdPVC5mdW5jGmVtc2NyaXB0ZW5fZ2xHZW5RdWVyaWVzRVhUA38BCEdPVC5mdW5jC19fY3hhX3Rocm93A38BB0dPVC5tZW0LX19zdGFja19sb3cDfwEHR09ULm1lbQxfX3N0YWNrX2hpZ2gDfwEIR09ULmZ1bmMPX2Vtc2NyaXB0ZW5fZXJyA38BCEdPVC5mdW5jD19lbXNjcmlwdGVuX291dAN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2NvbnNvbGVfd2FybgN/AQhHT1QuZnVuYxhlbXNjcmlwdGVuX2NvbnNvbGVfZXJyb3IDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9jb25zb2xlX2xvZwN/AQhHT1QuZnVuYxVlbXNjcmlwdGVuX2dsVmlld3BvcnQDfwEIR09ULmZ1bmMgZW1zY3JpcHRlbl9nbFZlcnRleEF0dHJpYlBvaW50ZXIDfwEIR09ULmZ1bmMcZW1zY3JpcHRlbl9nbFZlcnRleEF0dHJpYjRmdgN/AQhHT1QuZnVuYxtlbXNjcmlwdGVuX2dsVmVydGV4QXR0cmliNGYDfwEIR09ULmZ1bmMcZW1zY3JpcHRlbl9nbFZlcnRleEF0dHJpYjNmdgN/AQhHT1QuZnVuYxtlbXNjcmlwdGVuX2dsVmVydGV4QXR0cmliM2YDfwEIR09ULmZ1bmMcZW1zY3JpcHRlbl9nbFZlcnRleEF0dHJpYjJmdgN/AQhHT1QuZnVuYxtlbXNjcmlwdGVuX2dsVmVydGV4QXR0cmliMmYDfwEIR09ULmZ1bmMcZW1zY3JpcHRlbl9nbFZlcnRleEF0dHJpYjFmdgN/AQhHT1QuZnVuYxtlbXNjcmlwdGVuX2dsVmVydGV4QXR0cmliMWYDfwEIR09ULmZ1bmMcZW1zY3JpcHRlbl9nbFZhbGlkYXRlUHJvZ3JhbQN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsVXNlUHJvZ3JhbQN/AQhHT1QuZnVuYx1lbXNjcmlwdGVuX2dsVW5pZm9ybU1hdHJpeDRmdgN/AQhHT1QuZnVuYx1lbXNjcmlwdGVuX2dsVW5pZm9ybU1hdHJpeDNmdgN/AQhHT1QuZnVuYx1lbXNjcmlwdGVuX2dsVW5pZm9ybU1hdHJpeDJmdgN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsVW5pZm9ybTRpdgN/AQhHT1QuZnVuYxZlbXNjcmlwdGVuX2dsVW5pZm9ybTRpA38BCEdPVC5mdW5jF2Vtc2NyaXB0ZW5fZ2xVbmlmb3JtNGZ2A38BCEdPVC5mdW5jFmVtc2NyaXB0ZW5fZ2xVbmlmb3JtNGYDfwEIR09ULmZ1bmMXZW1zY3JpcHRlbl9nbFVuaWZvcm0zaXYDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9nbFVuaWZvcm0zaQN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsVW5pZm9ybTNmdgN/AQhHT1QuZnVuYxZlbXNjcmlwdGVuX2dsVW5pZm9ybTNmA38BCEdPVC5mdW5jF2Vtc2NyaXB0ZW5fZ2xVbmlmb3JtMml2A38BCEdPVC5mdW5jFmVtc2NyaXB0ZW5fZ2xVbmlmb3JtMmkDfwEIR09ULmZ1bmMXZW1zY3JpcHRlbl9nbFVuaWZvcm0yZnYDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9nbFVuaWZvcm0yZgN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsVW5pZm9ybTFpdgN/AQhHT1QuZnVuYxZlbXNjcmlwdGVuX2dsVW5pZm9ybTFpA38BCEdPVC5mdW5jF2Vtc2NyaXB0ZW5fZ2xVbmlmb3JtMWZ2A38BCEdPVC5mdW5jFmVtc2NyaXB0ZW5fZ2xVbmlmb3JtMWYDfwEIR09ULmZ1bmMaZW1zY3JpcHRlbl9nbFRleFN1YkltYWdlMkQDfwEIR09ULmZ1bmMbZW1zY3JpcHRlbl9nbFRleFBhcmFtZXRlcml2A38BCEdPVC5mdW5jGmVtc2NyaXB0ZW5fZ2xUZXhQYXJhbWV0ZXJpA38BCEdPVC5mdW5jG2Vtc2NyaXB0ZW5fZ2xUZXhQYXJhbWV0ZXJmdgN/AQhHT1QuZnVuYxplbXNjcmlwdGVuX2dsVGV4UGFyYW1ldGVyZgN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsVGV4SW1hZ2UyRAN/AQhHT1QuZnVuYx5lbXNjcmlwdGVuX2dsU3RlbmNpbE9wU2VwYXJhdGUDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9nbFN0ZW5jaWxPcAN/AQhHT1QuZnVuYyBlbXNjcmlwdGVuX2dsU3RlbmNpbE1hc2tTZXBhcmF0ZQN/AQhHT1QuZnVuYxhlbXNjcmlwdGVuX2dsU3RlbmNpbE1hc2sDfwEIR09ULmZ1bmMgZW1zY3JpcHRlbl9nbFN0ZW5jaWxGdW5jU2VwYXJhdGUDfwEIR09ULmZ1bmMYZW1zY3JpcHRlbl9nbFN0ZW5jaWxGdW5jA38BCEdPVC5mdW5jGWVtc2NyaXB0ZW5fZ2xTaGFkZXJTb3VyY2UDfwEIR09ULmZ1bmMZZW1zY3JpcHRlbl9nbFNoYWRlckJpbmFyeQN/AQhHT1QuZnVuYxRlbXNjcmlwdGVuX2dsU2Npc3NvcgN/AQhHT1QuZnVuYxtlbXNjcmlwdGVuX2dsU2FtcGxlQ292ZXJhZ2UDfwEIR09ULmZ1bmMgZW1zY3JpcHRlbl9nbFJlbmRlcmJ1ZmZlclN0b3JhZ2UDfwEIR09ULmZ1bmMiZW1zY3JpcHRlbl9nbFJlbGVhc2VTaGFkZXJDb21waWxlcgN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsUmVhZFBpeGVscwN/AQhHT1QuZnVuYxplbXNjcmlwdGVuX2dsUG9seWdvbk9mZnNldAN/AQhHT1QuZnVuYxhlbXNjcmlwdGVuX2dsUGl4ZWxTdG9yZWkDfwEIR09ULmZ1bmMYZW1zY3JpcHRlbl9nbExpbmtQcm9ncmFtA38BCEdPVC5mdW5jFmVtc2NyaXB0ZW5fZ2xMaW5lV2lkdGgDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9nbElzVGV4dHVyZQN/AQhHT1QuZnVuYxVlbXNjcmlwdGVuX2dsSXNTaGFkZXIDfwEIR09ULmZ1bmMbZW1zY3JpcHRlbl9nbElzUmVuZGVyYnVmZmVyA38BCEdPVC5mdW5jFmVtc2NyaXB0ZW5fZ2xJc1Byb2dyYW0DfwEIR09ULmZ1bmMaZW1zY3JpcHRlbl9nbElzRnJhbWVidWZmZXIDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9nbElzRW5hYmxlZAN/AQhHT1QuZnVuYxVlbXNjcmlwdGVuX2dsSXNCdWZmZXIDfwEIR09ULmZ1bmMRZW1zY3JpcHRlbl9nbEhpbnQDfwEIR09ULmZ1bmMkZW1zY3JpcHRlbl9nbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2A38BCEdPVC5mdW5jHmVtc2NyaXB0ZW5fZ2xHZXRWZXJ0ZXhBdHRyaWJpdgN/AQhHT1QuZnVuYx5lbXNjcmlwdGVuX2dsR2V0VmVydGV4QXR0cmliZnYDfwEIR09ULmZ1bmMfZW1zY3JpcHRlbl9nbEdldFVuaWZvcm1Mb2NhdGlvbgN/AQhHT1QuZnVuYxllbXNjcmlwdGVuX2dsR2V0VW5pZm9ybWl2A38BCEdPVC5mdW5jGWVtc2NyaXB0ZW5fZ2xHZXRVbmlmb3JtZnYDfwEIR09ULmZ1bmMeZW1zY3JpcHRlbl9nbEdldFRleFBhcmFtZXRlcml2A38BCEdPVC5mdW5jHmVtc2NyaXB0ZW5fZ2xHZXRUZXhQYXJhbWV0ZXJmdgN/AQhHT1QuZnVuYxZlbXNjcmlwdGVuX2dsR2V0U3RyaW5nA38BCEdPVC5mdW5jHGVtc2NyaXB0ZW5fZ2xHZXRTaGFkZXJTb3VyY2UDfwEIR09ULmZ1bmMlZW1zY3JpcHRlbl9nbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdAN/AQhHT1QuZnVuYx1lbXNjcmlwdGVuX2dsR2V0U2hhZGVySW5mb0xvZwN/AQhHT1QuZnVuYxhlbXNjcmlwdGVuX2dsR2V0U2hhZGVyaXYDfwEIR09ULmZ1bmMnZW1zY3JpcHRlbl9nbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2A38BCEdPVC5mdW5jHmVtc2NyaXB0ZW5fZ2xHZXRQcm9ncmFtSW5mb0xvZwN/AQhHT1QuZnVuYxllbXNjcmlwdGVuX2dsR2V0UHJvZ3JhbWl2A38BCEdPVC5mdW5jGGVtc2NyaXB0ZW5fZ2xHZXRJbnRlZ2VydgN/AQhHT1QuZnVuYzBlbXNjcmlwdGVuX2dsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9nbEdldEZsb2F0dgN/AQhHT1QuZnVuYxVlbXNjcmlwdGVuX2dsR2V0RXJyb3IDfwEIR09ULmZ1bmMhZW1zY3JpcHRlbl9nbEdldEJ1ZmZlclBhcmFtZXRlcml2A38BCEdPVC5mdW5jGGVtc2NyaXB0ZW5fZ2xHZXRCb29sZWFudgN/AQhHT1QuZnVuYx5lbXNjcmlwdGVuX2dsR2V0QXR0cmliTG9jYXRpb24DfwEIR09ULmZ1bmMfZW1zY3JpcHRlbl9nbEdldEF0dGFjaGVkU2hhZGVycwN/AQhHT1QuZnVuYx1lbXNjcmlwdGVuX2dsR2V0QWN0aXZlVW5pZm9ybQN/AQhHT1QuZnVuYxxlbXNjcmlwdGVuX2dsR2V0QWN0aXZlQXR0cmliA38BCEdPVC5mdW5jGGVtc2NyaXB0ZW5fZ2xHZW5UZXh0dXJlcwN/AQhHT1QuZnVuYx1lbXNjcmlwdGVuX2dsR2VuUmVuZGVyYnVmZmVycwN/AQhHT1QuZnVuYxxlbXNjcmlwdGVuX2dsR2VuRnJhbWVidWZmZXJzA38BCEdPVC5mdW5jG2Vtc2NyaXB0ZW5fZ2xHZW5lcmF0ZU1pcG1hcAN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsR2VuQnVmZmVycwN/AQhHT1QuZnVuYxZlbXNjcmlwdGVuX2dsRnJvbnRGYWNlA38BCEdPVC5mdW5jIWVtc2NyaXB0ZW5fZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRAN/AQhHT1QuZnVuYyRlbXNjcmlwdGVuX2dsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIDfwEIR09ULmZ1bmMSZW1zY3JpcHRlbl9nbEZsdXNoA38BCEdPVC5mdW5jE2Vtc2NyaXB0ZW5fZ2xGaW5pc2gDfwEIR09ULmZ1bmMkZW1zY3JpcHRlbl9nbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5A38BCEdPVC5mdW5jE2Vtc2NyaXB0ZW5fZ2xFbmFibGUDfwEIR09ULmZ1bmMZZW1zY3JpcHRlbl9nbERyYXdFbGVtZW50cwN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsRHJhd0FycmF5cwN/AQhHT1QuZnVuYyVlbXNjcmlwdGVuX2dsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5A38BCEdPVC5mdW5jFGVtc2NyaXB0ZW5fZ2xEaXNhYmxlA38BCEdPVC5mdW5jGWVtc2NyaXB0ZW5fZ2xEZXRhY2hTaGFkZXIDfwEIR09ULmZ1bmMYZW1zY3JpcHRlbl9nbERlcHRoUmFuZ2VmA38BCEdPVC5mdW5jFmVtc2NyaXB0ZW5fZ2xEZXB0aE1hc2sDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9nbERlcHRoRnVuYwN/AQhHT1QuZnVuYxtlbXNjcmlwdGVuX2dsRGVsZXRlVGV4dHVyZXMDfwEIR09ULmZ1bmMZZW1zY3JpcHRlbl9nbERlbGV0ZVNoYWRlcgN/AQhHT1QuZnVuYyBlbXNjcmlwdGVuX2dsRGVsZXRlUmVuZGVyYnVmZmVycwN/AQhHT1QuZnVuYxplbXNjcmlwdGVuX2dsRGVsZXRlUHJvZ3JhbQN/AQhHT1QuZnVuYx9lbXNjcmlwdGVuX2dsRGVsZXRlRnJhbWVidWZmZXJzA38BCEdPVC5mdW5jGmVtc2NyaXB0ZW5fZ2xEZWxldGVCdWZmZXJzA38BCEdPVC5mdW5jFWVtc2NyaXB0ZW5fZ2xDdWxsRmFjZQN/AQhHT1QuZnVuYxllbXNjcmlwdGVuX2dsQ3JlYXRlU2hhZGVyA38BCEdPVC5mdW5jGmVtc2NyaXB0ZW5fZ2xDcmVhdGVQcm9ncmFtA38BCEdPVC5mdW5jHmVtc2NyaXB0ZW5fZ2xDb3B5VGV4U3ViSW1hZ2UyRAN/AQhHT1QuZnVuYxtlbXNjcmlwdGVuX2dsQ29weVRleEltYWdlMkQDfwEIR09ULmZ1bmMkZW1zY3JpcHRlbl9nbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEA38BCEdPVC5mdW5jIWVtc2NyaXB0ZW5fZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRAN/AQhHT1QuZnVuYxplbXNjcmlwdGVuX2dsQ29tcGlsZVNoYWRlcgN/AQhHT1QuZnVuYxZlbXNjcmlwdGVuX2dsQ29sb3JNYXNrA38BCEdPVC5mdW5jGWVtc2NyaXB0ZW5fZ2xDbGVhclN0ZW5jaWwDfwEIR09ULmZ1bmMYZW1zY3JpcHRlbl9nbENsZWFyRGVwdGhmA38BCEdPVC5mdW5jF2Vtc2NyaXB0ZW5fZ2xDbGVhckNvbG9yA38BCEdPVC5mdW5jEmVtc2NyaXB0ZW5fZ2xDbGVhcgN/AQhHT1QuZnVuYyNlbXNjcmlwdGVuX2dsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cwN/AQhHT1QuZnVuYxplbXNjcmlwdGVuX2dsQnVmZmVyU3ViRGF0YQN/AQhHT1QuZnVuYxdlbXNjcmlwdGVuX2dsQnVmZmVyRGF0YQN/AQhHT1QuZnVuYx5lbXNjcmlwdGVuX2dsQmxlbmRGdW5jU2VwYXJhdGUDfwEIR09ULmZ1bmMWZW1zY3JpcHRlbl9nbEJsZW5kRnVuYwN/AQhHT1QuZnVuYyJlbXNjcmlwdGVuX2dsQmxlbmRFcXVhdGlvblNlcGFyYXRlA38BCEdPVC5mdW5jGmVtc2NyaXB0ZW5fZ2xCbGVuZEVxdWF0aW9uA38BCEdPVC5mdW5jF2Vtc2NyaXB0ZW5fZ2xCbGVuZENvbG9yA38BCEdPVC5mdW5jGGVtc2NyaXB0ZW5fZ2xCaW5kVGV4dHVyZQN/AQhHT1QuZnVuYx1lbXNjcmlwdGVuX2dsQmluZFJlbmRlcmJ1ZmZlcgN/AQhHT1QuZnVuYxxlbXNjcmlwdGVuX2dsQmluZEZyYW1lYnVmZmVyA38BCEdPVC5mdW5jF2Vtc2NyaXB0ZW5fZ2xCaW5kQnVmZmVyA38BCEdPVC5mdW5jH2Vtc2NyaXB0ZW5fZ2xCaW5kQXR0cmliTG9jYXRpb24DfwEIR09ULmZ1bmMZZW1zY3JpcHRlbl9nbEF0dGFjaFNoYWRlcgN/AQhHT1QuZnVuYxplbXNjcmlwdGVuX2dsQWN0aXZlVGV4dHVyZQN/AQNlbnYGbWVtb3J5AgHAAoCAAgNlbnYZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQFwAOgxA8dgnGAMDAwAAggMAwEIDAAAAQEAAAECAgIAAgEFCAEICAgBAQICAAIBAAAECwACBAMEAQEEAAIAAQEBAQEBAQACAAABAgACAAACAAACAgABAQEIAQIAAAAAAgABBAADAAICAQAAAAAABAQAAgAAAAACAAAAAAAABAQAAAQAAAAABAAAAAIEAAABAQEAAgIAAAIAAAEGAQICAgABAAEAAQICAAEABAMBAAECAAECBgAEBAEBAQQACAgIAAgICAEAAgAJBAECAgQAAisAAQABAQEBCgMBAwQrAQABAAICAQEBAAIAAgAEAgQKAQAAAAEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEEAAEDAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQMBAQEBAQEBAQEBAQEBAQEBAQEBAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEPBAIAEwQEAAYTAgIAAgAEAwACAgEHBQIBAAALAQEBAQEAAAAAAQICAAAAAQEDAgICAAAHBwEEAAsKAAEAAgAAAAAAAAAAAAAAAAIEAAAGAAAAAAAAAAAAAAACAAEBAQEBAQEBAAEBAQAAAAACBAIBAQEBAAIAAAABAQACAAABAAEBAAIAAAIAAAAAAQEBAgEDAQABAQEDAQMBAgQAAAAAAAAAAAAAAAcHBwcHAgYGCgICAgICAgYKAgQGCgcCAQABAQAAAwEBAgECAAMCAQAAAAIEAAAGAAICBQAAAgAAAAIAAAAEAAQAAAAEAAIAAAAAAAAAAAACAAICAgABCgIAAgAAAAAAAgAEAgQEAAIAAAQAAAAAAAABAAIAAwAEAAMABAEPAgQGAQECBgYAAAAAAQEBAQIBAAIFAAUBCQAAAAAAAgAAAAIABAAEAAAEAAAAAAAAAAAAAgACAgACAAAAAAIABAIEBAACAAAEAAAABAEGBgYBBAACBgQCBAIABAIABgIGAgQEBAQEBAIEAgACAAABAQEAAAAAAAMBAQEAAwECAQICAAIBAQAEAwEBAAICAgEBAwECAgICAAALAQEAgQGCAQIBAQAACgkCAgECAQEBAwEBAgECAwEAAAAEBAMBAQEAAAAAAAABBwcFBwcHFwFHFxcFAQEBAgICAAAAAgEBAQEAAAAAAAMBAgICAQICAQICAQICAAQEBAQEBAQEAAAAAgEBAwEBAgIAAQECAQIDAgECAgIAAAAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAQAAAAAAwIBAgIEAwECAAQAAAAAAQACAQUBBQEAAAYBAQEAAAAAAAABAAoEAgACAgMBAQECAAAAAAACAAACAAIDAgECAwICAwECAQICAAAAAwEBAgIAAwEBAgICCgAAAgICAwEBAgIBAwEBAgIBAgECAwEEAwEAAwEAAQIAAgIBAgQAAAAAAAAAAAADAAEEAQEDAQIBBgACBAEBAQMBAgECAgMDAQADAwEAAgACBgAAAgACAAAAAAEAAAACAAEBAAAAAAACAAINAAIAAQAEAQEAAQEAAAAAAAAuLgggAQIDFwMBAQICAAQDA0hISCQkJAAAAAAAAgEBAQEBAAAAAAAAAgAAAQAAAAAAAAEDAQIBBAABAQMFBQEBAQEAAQABAAEBAAAAAAIAAgAAAQIBAAEBAQEAAQABAAEBAAMBAQICAgMBAQICAAEBAgIBAAIAAgACAAIAAwEBAQICABgBAQEBAQADAQEBAAAAAAAAAAMDAQEAAgICAAAAAgIBBAQAAAECAgICAgICAAEBAwECAQIBAgAEAQMBBgAAAAIAAAAAAgAAAAAAAgIAAgAABAAAAAAAAAEBAQEYIAABAQEBAQEBAQQBBgEBGAEUFBQVAAAAAAAGDwQGAgIAJBcAGAAAAAAABAMAAgACAAIBAgAEAAICAQAAAQECAgIIAQAAAAQCAQEAAAIAAAEAAAAAAAQEAAIAAAAAAAMDAAgDAAIEAQQGAwEAAAYCAgACAgAAAAAEBAIEAAkCAgMEAgICAgACAQECAgEBAQEBAQACAAMBAgECAgACBAACAgAAAwIBAQEBAAAAAAEBAgABAQEBAAACAQABAAAAAgAAAgICAAAAAAICAAAAAAAAAAAAAAAAAAMBAgECAQICCAIEAgAEAwIBAQEAAQAAAAACBAAABAQEBAAAAAAAAAQAAAAAAwIBAgAFAQECAgAEAgECAwEBAQECAAgGKgECOwEAAAECBAEAAgAEBAAPBAAAAAAAAAAAAAAAAAAAAAQCBAQEBAQBAQEDAQECAgIAAAAAAAABAQQBAAABAgAAAgABAQEBAQEDAwEDAQACAQICAAACAwECAgIBAAAOAQMDAwMDAAIBAAMBAwIBAQwBAQECAgAEAgEBAQAABQACAgEAAgECAAEBAgQCAgEBAQMBAgMBAgMBAwADAAMBAQABAQEBAQAAAAICBQABBQACAgAFAgIFDAgHBQMFAwEAAAMBAAADAQEBAQAAAwgJAAcDAQEBAwECAgUAAAMBAQIBAgIEAQMBAQEAAAAAAAQAAAAAAAAAAAAAAQMBAgECAAABAgACBAECAAQBAQEBAAIAAAIEAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQECAgAGBAQKBgMBAgIAAAABBwACAQMCAgQABQMAAQABAQACAwAAAgMBAQICAQIABAABAwAAAAAAAAIAAQAAAAgDAQAAAgAAAAIBAAEBAAACAQMBAQEBAQABAAABAQAAAwUBAwEAAgACAgIBAgIBAgAAAQQBAAAAAwEBAgICAAADAQACAgACAgQCAgABAAQAAAAAAAICAAICAAIAAgAAAgAAAgUAAgAAAAAAAAAAAgECAQICBAECAAACAgICAgICAgICAgEBAgICAgICAgQDAgEBAQACAgIAAAAAAgICAQEBAQIBAAAAAAABAQAAAAACAAAAAAAAAAAAAQAAAQACAgICAAICAgIAAgEAAAsKBgEBAAABAAAAAQEABgQBAQMAAgAAAAIBBAQBAAECAgQEAgMAAgAAAAEAAQECBAYGAgIEBCoCAggCAgACAQICAQoKAgICAAATDg4AAgIEAAEABAAABgICAAEBAQEAAgIEAAAEAgoCCgEBAQYEAgEEAgEGBgEAAQQBAgQAAAICAgETPAQEBAoKCgYGBgYGAAIJAAAAAAAAAAIAAAAFBQEBAgIBBAQNAgIAAAICBAQABAMBAQECAwEBAQEDCAAHBwIHAgABAAAABAIEBAAGAAAGAAYCAAQABAAAAAIABgICAAACAgAEAgAGAAAGAAAAAAAAAAAAAAAAAAAAAAACBgAAAgAACg8PBAEBAwEBAQAAABcBAQEBAQEBAQEBAQEBAQEBAAAAAAEBAQABAQACAAABAwMBAQECAgIEAwEBAAICAQECAAABAwAAAAAAAgEBAQEBAAAAAAABAQAAAAACAAAAAAAAAAAAAQAAAQAAAgAABAQEAgoTBAAKDwIIBAIAAQAAAioqIw0NEyMjDQ0NDQ8PEw8NCgYPDw0PDw0PDw0PCgoNDQ0KDw0NDw8PDwYNDQ0PDwIECgoKDRMKDwIIAQEAAAIABAECBAEKBAMCAgAAAAAAAAAAAAAAAAACBAQCBAQEBAIEBAgCAQMBAgMBAAIAAgIEAAABAAACAQICAgICAAICAAEBAgAAAgAAAAADAgECBAECBAMCAQIAAAAABAQAAAAAAAQAAAQCAAICBAICAAIAAAACAgICAAAAAgICAgIAAAQEAAQCBAQAAwgDCAUDAwcDDAwDAwMDCAMDAgABCAEIAwACCgIKAQAKAAkCCQYHCgYOKgMDAgUCBQEBCAgBCAEBCAgBAQEAAAEBDAEIAQEBAAIAAQEAAAICAgQCBAACAgABAQEBAQEBAAAAAAAAAAAAAAYGAAMBCgAAAAICAAQEAwICAAIAAgQABwIBBgIAAgICAA8CBAAAAgEABAACDwAAAgQADwAFAgAAAQ8BAAMEAAEFBAICAAEPDwIECAgIAQgBAQAAAAIAAAMCAQIDAQEBAgMBAQIBAAEAAgAAAAAEAgAAAAAJBwEHBAADAgUDBQMHBQgAAAEJCQcHDAkBCAUDBwcBBwMECQkCCAEIAAIAAQQCBQwCAgQKBQMFBwsHAgsAAAIBBQMAAQAAAgoCAgIEDQsDBAICCQYKAgYGBgQPBAYBCQYEBAETIwQGCgAAAAAACAgICAIKCgAGCAECAgACAQMBAAEAAwICAwIDAgMBAAAAAAAAAAABAQAAAgACBgAAAwMBAQwIDAgBAQACAwEAAAgIBAIBAAEABAQCAAQFAQEAAQEGBgEIAgIBAAAAAAAAAAQCAAAAAAAAAAIAAgcEAQEDBQMFAQEBAwMACQcHAQAMDAUDAwMDCQkHAQACBAIHBwkJCwcJCwcFCAMHBQAHAwUBAAEBAQEAAQEACAeDAQAXFwAEAgACAAEAAAACBgAAAAYKCwYCAgICAAQEAgIMBQMDAwMDCAgICAgIAAcHAAADAwMHAAcIAwAARgEBAAgAAwwICAgBAQEBAQEHCQkFBwUFBQMDCwMMAwgDCAMDDAEIAwUFAwcFAQMAAAEADwUDBQgDBQMDBQAIFBgBAQMBBQEBAQEDAQMBAgABAQMDDAUICAEBCAEUAAgIAQEICAUIAwgICAMBAQADAQAMAAAAAAEFAQgABQEBAQEEBQIEDAIMAgoEAgICBAAGAQMHAwkAAgAPBgYGAAICBgoKAAIEAQIEAAAchAEUGAIEBgQUHwAAAAIEAls3N1yFAYYBhwGIATAmACYAMDAfHwACAwQAAgMBAgMNAAAEDQQAAQAAAAAKAgoAAAUAAQAABAQCBQkAAQMMAwMFCAMBCAEAAwcFBQUJBQQCBAAAAAAAAAICAAAAAAAAAAACAgAAAAAAAAQAAAAEAAIABAACAAAABAYMAQABCAwIAzEDAQAIAwMAAQEDAAEIAQgDCAMCAAEHAAIKDQoABQcFBQcCAAACDAICACQ9CokBAAYABAQXFyQCAgAAAAAkAAOKAQYPCwQGACMTAgYGAQsBCAYICAwKAAAPAAoIAAAAAAECAgIAAAAAAgICAgIBAAAAAQEAAgUAAgYMAwABCAABAAgICAgICwYDAAAAAwMBAwEAAAMBAQAAAAAAAAAABAQAAAAAAAAAAAAAAQAEAgIBAgQCAQIBAAIBAgEDAQIBBAEGAgMBAQICAgIAAgICAggAAgADAgAAAAAAAAEDAAAAAgACAAIAAAAAAgAAAQACAAIAAgEAAgACAQIAAQACAAIAAAICAgQDAgEJBQEDCAMBBwoCAAAAAAAAAAAAAAAAAAAAAAAAAAAjDAEDAQICAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAAAAgACAAAAAgACAAIAAgACAwACAAIAAgADAwIBAQIEAAgACAIBAwEDAgUCAQIABAACAAMCBAgCAQMCBAIACQQBAgQEAAEDAwYGBgAGBgMGAgYGAAYGCAABAwMBAgCLAQICAAAAAgICABgCAAACAgICAgIIAgEDAgECAAICAAICAAICAAICAAICAAIAAgICAAICAAICAAIAAgICAAAAAQMBAgEAAAAAAAIAAAICBQACAAAAAAYGAAACAgIGAAAGAAAAAAAAAwIBBgAIAwMBAgAAAgADAgAAAQACAgQEAAMACAQAAQAABAQEBAMBAQIBAgADAAAAAAQABAAAAAAAAAIAAAAAAgAAAgMBAQICAwAABAAABAQAAAAAAgAAAAgEBgQEBgQBCAABCAIEAwECAAAAAAAAAgEBAgEDAgIBAwACAAoCAQMCAgIABAQEAQgCAgIAAAACAAAAAAACAQgAAAAEAAcBAwECBAICBAMBAgQCAggBAwcAAgYAAgQAAAAHFAAFAAIIBAgDAgEDBAgAAQQECAABBAICAAACAgoAAAAAAAICAgAAAAIAAAAAAAACAAAAAwAAAQAAAAEAAwIBAgQAAAAAAgACAwIBAgACAAACAAIIAQMBAwIBAgAGBAYEBAAIAgEDAQIAAAECAAAABwIIAgEDAAACAgACAgICAgIEAgYBAwICAgAEAAACBAICBAIEAgQCBAICBAIEAgQCBAIEAgQDAgEAAgQCBAIEAgQCBAQCBAIEAgQCBAIEAgQEAgQCBAIEAgQCBAIECBUVCAMBAwEBAgACAgIAAAAAAAAAAAACIgEABAgCAgICAgICAgICAgICAgICAgICAgICAgICAgEIAAAAAAACGQQAAAACAAIAAAKMAQAAAAAAAAACAAIAAAAQAAICBAAAAAACAgAQABAAABAAEAAQAAIAAhkAAAAAAAAEAmoxAgIAEBABCAAFAAAFAAAFAAAFAAAEAAAAAgUAAAACAAUAAAAFAAEIAggjDwACAAYKEwQDAQIAAAAAAAAAAAIAAgAAAAIBCQMBAQEBAgIBAgAAAAAAAQEBAgIAAgAAAAAABgIKAAACBAAADwAAAAAAAgAEAAAAAAADAQEBAgQAAAICAAEEXQAAAAIADQIAAAAAAAABjQEAAgACAhgAAB8KAAAAAAAAAAADAQECAAICAAICAAACAAAAAAAAAAEBAgYAAAACAAAAAQEAAAAIAwMBAQECAgACAgICAQAAAAAAAAIBAQEBAQIBAAAEAgICAgICAgECAgICAgICAgICAgIAAAAAAAAAAAICAAAAAAICAgICAgICAgICAgICAAAAAAQBCwAAAAAAAAAAAwEAAgECEwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIAAgMAAAABAgECAQACAAACCAAABAQEAAQEAgQEAQgEBQEDBgAFAAAAAAAIBAUBAAUAAAAACAQDBAEGAAUAAAAIBAMEAQYABQAAAAAIAgEDAQMCAwAAAAAAAAAAAAAAAgAAAAgBBwUHAwIAAAAAAAAHBQcDAgAAAAAACAQCAAcCAAYDBQcBBw4LBwUFAwMHBwEGCwM8CQcBDgcHAQIAAAMCAQYHBgAAAAYABgAAAAAAAgACAAACAAIAAggBAwIBAAACAwIBAQEDAQICAgAAAgIAAQAAAgIEAAMBAQIDAgIBAAIAAgAEAgQBBAQAAAIABAIABAAAAgAAAAAAAAAAAgACAAIAAgMBAgIBBwUHBQcHBQcLAgAJAAACAAAIABMGEwYTBhMABAYBCAABEwYBCAABEwAEBgAACAQBAAgBAAEACAEACAEAAQAIAQACAAEAAQAAAAEACAATBhMGEwYTAAYTBgEIABMGEwYTBgEIABMGEwYBCAIBAwABAwQKBAQGAAMCAgQCAAAAAAIDAgQAAAADAgICAgICAwICBgYGCAICAgAAAAAAAAIGAAYCBgICAgEBAQQEAwgCCAECAwEBAAIAAgIFAAACAAAAAAAAAAAAAAAAAAAAAQgDAgIAAgICAAAIAwMBAggAAgMAAAQAAAYAAAQAAAAAAAAAAAIABgIAAAAAAAAAAAAAAAAPAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAIAAAAAAAMDAwgCAAAAAAgMDAwCAgEDAAACAgMAAgMAAAAAAwAADAUMDAwBAAAAAQgCAQMEAAAEBAAABAQEBAQEAAABAAQEBAQEBAYEBAQEAAAEAAQEBAAEAgAEAAQAAAAAAAAAAgIAAgACBAAAAgIAAAIAAgQEAgQABAICAgIGAgICAgQAAAAAAAICGwQCAgAABAQABAAEBAQEBAQEAAAEAAQAAgQABAAAAAACAAIEBASOAQEEAgADAwEAAwEGBAYGBgIAAggICAEIAQEMDAEICAIBAwIAAgMAAAACAgACAQAAAAACAAEFCAgBAAADAQEFAgIAAgIADAICCAADAAAAAAAEBAQEAAIAAAAEAAAEAgQIAAAABAQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgIACAIBAwEBAgIBAgACAAAAAAACAAAAAgEAAAAAAAAAAAACAgAAAAACAAADAQIBAgAAAAADAgECAAABAgMBAQICAgAIAQQVCAIBAwgEAgQAAQAAAAMBAQMAAAAAAAAAAAACAgAAAgAAAQMBAgECBAICAQAAAAIAAgAAAAAAAAAAAAADAQIAAgAAAAAAAAACAAICAgAAAQICAAAAAAAAAgUIAwECAQEAAgECAwICAAAAAAIAAAEBAQIBGgIAAAAAAAAAAAICAgACAAICFAACAAAAAAAAAAAAAAAAAAAAAAAAAAIPAgMBAQIBAAIBAAICAQADBAAAAAABAAAFAAQAAAAAAgIAAAAAAAAAAgACAAAAAAAAAAAAAAIDAgEBAQIAAgAAAQICAAICAAAAAAAAAAgCAQADAQECAAADAQICAAEDAgECAAADAgECAAAAAQIAAQIAAAECAAABAgMBAgAAAQIAAwECAAAAAQIBAgEBAgADAgECAAABAgMBAgAAAAECAAAAAQECAAADAQIAAAMBAgAIAgEDBAYCAAAAAAAAAQMBAQICAQYGAgICBAYGAAYKBgQEBgYAAAACAgIAAAMBAgIBAAAAAgICBAQEAAAAAwYGCAIBAwADAAAAAAAAAAMAAQMBAgIbAAAAAwECAgAAAAAAAwMBAAACAgIAAAgBAwAAAAAAAAAAAAAAAAQBAAAAAAAAAAAAAAEIAAIBAAIBCAAAAAAAAgAFAgICAAEDAggAAgEDAQECAgIEAAADAQICAgICAgAAAAQDAgICAwgCAAECAAAAAgIAAgIAAQgCAQMAAgICAgIAAgICAgICAgAAAAICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQBAwIAAgIEAQEAAgACBAEAAwICAgEACAAAAAAAAAAAAAAAAQgCAQEIAAECAAACAAACAAcABwkLBAoEBgMAAwEAAAAAAAAEAgcCAgICCQAEAAQCAgErAgAAAQQBCAICAQEBAQEBAQEBAQEAAAEDAwMDBQcBBwcJBwUHAAkJAAALBAIGBAkBBwcJAAsLAAAHBwIECwUACQkLCw4LCwsJCQkLCwsLDgsODgsJCQ4OBwsGBwsJCQsJCwsLCwsJCQsLDgsLCwsJCwkLCwkACQkLBgsAAA4KAgIHAgICBQQEAgMEAAEEBAAEBAYABAQEBQcFBQUFBQUFBQUFBQUFBwUFBQUFBwUFBQUABAEEAAIDAQEBCQEBBCMKBAQNBAQPBgoEAQQEAgcCFAAECgQPBAQEBAYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGAAQAAAAGBgIBCQQECiMCKg8CBAQjAgQEBgQEBAQEBAQEBAQAAAQAAgkEBgYGBgAAAAAAAAAABAYABAQEBAQEBAQEBAAABAACCQQGBgYEBgQEBAQEBAQEBAQAAAQAAgkEBgYICAgICAgICAgICAgICAgICAgICAgICAgCAgICAAAAAAAAAAAAAAAADwAGCgQCAQcHCQYJBAkAAwYDCgMIBAIFAAEDAQIAAQEGCQsiCgUECQ8KAAQAAgIDAAMFBQEJCyICAkkGBAEIAgJJGAIEDQEBAQIDAgACAgIAAwAGAAAAAAABAAIAAAEa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AQkFAAAAAwAAAwIDAgEDBgkCAgEDBgkCCAQEBAAIAgAIAgQCBgQBAwACAAIEAgYCAgMAAgACAgIDAgQEBAACAAIAAAQCAAYNBgYADQoEDQoGBgEEAQYEAQ0NDQ0GBgENDQ0NBgYNDQYBDQ0GAQ0NBgENDQ0NBgYBDQ0NDQYGDQ0GAQ0NBg0NBgENDQYNDQ0NBg0NBg0NAAABAwEDBQUAAQUFAgUAAQIAAQICAAIFAgEDAQMAAQMBAwEDAQMBAwEDAQMBAwEDAQMBAwEDAAABCQ8BBgkPAQYFBQICAAABAAAAAQABAQAAAQ4CAAMOAAIAAwMBAQMBAQEBAQEBAQEBAQEBAQEBAwEDAQEDAQMBAwEDAQEBAQUFCQkCAgcABwABAQEBAQAAAAAAAAEAAQMBBwEFAgUBAQIBCwMHBQcJAwAEAwcAAQEBAQAEBQUBBAMCCQkFBQMDAAIBAQEAAAMDCQICAAAAAgAJAAIACwABBQUAAAUABQkCBQIAAAACAAkAAgALBQUABQUmJggmQiQHAQMBAwMBBAgICAACAQIJAgkCAwEDAQEBAwMBAQEDAQADAQMAAQMDBwEMAQAAAAACAgUHBwcDAgIFBwIHAQMFAQcBBwkFBwYHAgMFCQAJCQEBAAcFBwcFBAICAAABAAsHAAELAgACAwUAAgkHAAcFAQcBAQcBAgEHAAcFAQAABQcFAAcHAAsBCQUFAgIFFRUABwIJKAAJAAAHAAEAFSEHAQIAB08HQQcFAgsHAgUFAQEBBwAFBQEBAQAFAQABAQUCBQUAAQEBAAEFBQECBwEBAwEBAAEBAwAFBQUDBQUBAQUBBQUCAgIJAQEEBQECBQADBwEAAQEBAQUDAQAAAAAFAQAFAQQBBQEFBwEFBwICAQIJAQkHBQcHBwcHAwUACQACBwEABAUBAQEHAwUDAQcBAAUHBQMFAgQBBwMEBQMBBwABAQcBAwABBwEABQUAAQEBAQAFBQAFBwUHBwIJAAICBQUDAQcBAQEBAAEXAQABAQEBAAEBAQEDBQEABQAFBQABAwEDAwEDAQMBAwMBAwABAAAAAAEAAAAAAAAGAisEBgYJBAQGAgEEBgQiAgIABwcABAQGBgYCAAUFAgQEBgIEBwIEBgICBQICAgcEAAYEBAYECgoACgIHBgYCKwQGBgkEBAYCAQQGBCICAgAHBwAEBAYGBgIA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C38BQdy7vQELfwFBqN29AQt/AUHJFAt/AUHQjKoBC38BQbCtqgELfwFBhJftAQt/AUGIu7YBC38BQcj67AELfwFBwPrsAQt/AUGchrYBC38BQcz57AELfwFBuLyoAQt/AUHM/KkBC38BQbDiqQELfwFBwNipAQt/AUGM2qkBC38BQeysqQELfwFB+M+oAQt/AUHwhKgBC38BQZD1pwELfwFBuOrsAQt/AUEAC38BQQALfwFByIflAQt/AUGkiOUBC38BQYzg5AELfwFBkODkAQt/AUG+Lwt/AUHYuvABC38BQcguC38BQcEuC38BQYkuC38BQeYtC38BQYCV5QELfwFBqCULfwFBhyoLfwFBhSoLfwFBrKbkAQt/AUH4peQBC38BQaSl5AELfwFBhKXkAQt/AUHwpuQBC38BQbSl8AELfwFBvKXwAQt/AUGkpfABC38BQayl8AELfwFB+SULfwFBjCgLfwFB4KbwAQt/AUH7Jwt/AUHYpvABC38BQbCm8AELfwFBwJjkAQt/AUGQmOQBC38BQciW5AELfwFBmJbkAQt/AUGwmeQBC38BQdQmC38BQcsmC38BQfyk8AELfwFBtyYLfwFB7KTwAQt/AUGYpvABC38BQbAmC38BQdCX5AELfwFBqSYLfwFBoCYLfwFB9KTwAQt/AUGbJgt/AUGIJgt/AUHkpPABC38BQaCm8AELfwFB/iULfwFB2JXkAQt/AUGIleQBC38BQeIlC38BQa4lC38BQZclC38BQYQlC38BQfskC38BQZCf7gELfwFBnObuAQt/AUHw9e0BC38BQf0iC38BQfwiC38BQYcdC38BQaDIkAELfwFBwMiQAQt/AUHY170BC38BQdC+vQELfwFBkNW9AQt/AUGIur0BC38BQdjLvQELfwFB8OO9AQt/AUHIFAt/AUGIl+0BC38BQajekQELfwFB9PnsAQt/AUHw+ewBC38BQeD57AELfwFB+PnsAQt/AUHo+ewBC38BQdD57AELfwFByPnsAQt/AUHc+ewBC38BQeT57AELfwFBzwwLfwFBiPKoAQt/AUHI66gBC38BQZC1qgELfwFBwJ2qAQt/AUGwm6oBC38BQajVqQELfwFBkNKpAQt/AUG8r6kBC38BQaCIqgELfwFBwJmpAQt/AUHQlakBC38BQdzwpwELfwFBzO6nAQt/AUGQ++wBC38BQZDPpwELfwFB2OaoAQt/AUHA6uwBC38BQQALfwFBzi8LfwFBxJblAQt/AUHNLwt/AUHFLwt/AUHELwt/AUHALwt/AUGsLwt/AUHAlOUBC38BQaglC38BQfUuC38BQfEuC38BQeUuC38BQeQuC38BQd4uC38BQdQuC38BQdEuC38BQa4uC38BQawuC38BQaouC38BQZguC38BQZcuC38BQZYuC38BQZQuC38BQZMuC38BQZEuC38BQfstC38BQeyU5QELfwFBjSoLfwFB6MzkAQt/AUGozOQBC38BQfYpC38BQZio5AELfwFB9CkLfwFB8KfkAQt/AUHIp+QBC38BQaCn5AELfwFB8CkLfwFBxKXkAQt/AUHlKQt/AUHhKQt/AUHbKQt/AUHZKQt/AUHWKQt/AUHVKQt/AUGyKQt/AUGxKQt/AUGwKQt/AUGuKQt/AUGrKQt/AUHExOQBC38BQYDE5AELfwFBvMPkAQt/AUH4wuQBC38BQZopC38BQZkpC38BQZgpC38BQZcpC38BQZYpC38BQZUpC38BQZQpC38BQZMpC38BQZIpC38BQZEpC38BQZApC38BQY8pC38BQY4pC38BQY0pC38BQYwpC38BQYspC38BQYopC38BQYkpC38BQYgpC38BQYcpC38BQYYpC38BQYUpC38BQYQpC38BQYMpC38BQYIpC38BQYEpC38BQYApC38BQf8oC38BQf4oC38BQf0oC38BQfwoC38BQfsoC38BQfooC38BQfkoC38BQfgoC38BQfcoC38BQfYoC38BQfUoC38BQfQoC38BQfMoC38BQfIoC38BQfEoC38BQfAoC38BQZC/5AELfwFB0L7kAQt/AUHrKAt/AUGUrOQBC38BQfSq5AELfwFBxKvkAQt/AUGkquQBC38BQcyp5AELfwFB6CgLfwFB5ygLfwFB7KXwAQt/AUHkpfABC38BQZyl8AELfwFBlKXwAQt/AUGMpfABC38BQYSl8AELfwFB3KXwAQt/AUHUpfABC38BQcyl8AELfwFBxKXwAQt/AUHQpvABC38BQcCm8AELfwFByKbwAQt/AUG4pvABC38BQdyk8AELfwFB1KTwAQt/AUG3KAt/AUG2KAt/AUG1KAt/AUG0KAt/AUGxKAt/AUGuKAt/AUGrKAt/AUGnKAt/AUGlKAt/AUGhKAt/AUGaKAt/AUGZKAt/AUGXKAt/AUGWKAt/AUGSKAt/AUGOKAt/AUGLKAt/AUGCKAt/AUGAKAt/AUH/Jwt/AUH+Jwt/AUH8Jwt/AUH6Jwt/AUH5Jwt/AUH4Jwt/AUH3Jwt/AUH2Jwt/AUH1Jwt/AUHyJwt/AUHoJwt/AUHQJwt/AUHPJwt/AUHNJwt/AUHMJwt/AUGYofABC38BQcie8AELfwFBxKDwAQt/AUH0nfABC38BQaSi5AELfwFBwCcLfwFBiKLkAQt/AUG+Jwt/AUH0oeQBC38BQfyg5AELfwFBkKDkAQt/AUHiJAt/AUHbJgt/AUHwmOQBC38BQdYmC38BQc8mC38BQcUmC38BQcEmC38BQbMmC38BQawmC38BQasmC38BQaQmC38BQZgmC38BQZUmC38BQZMmC38BQYImC38BQcyV5QELfwFB+SULfwFB6SULfwFBlJXkAQt/AUHmJQt/AUHlJQt/AUHkJQt/AUHjJQt/AUHhJQt/AUH0lOQBC38BQdUlC38BQfST5AELfwFBwSULfwFBzJPkAQt/AUGsJQt/AUH8kuQBC38BQcyT5QELfwFBqSULfwFB4JTlAQt/AUGoJQt/AUGhJQt/AUGgJQt/AUGFJQt/AUGwjKEBC38BQaCLoQELfwFB0IqhAQt/AUGQpJ8BC38BQdCJoQELfwFB8SQLfwFB8CQLfwFB6SQLfwFB5yQLfwFBkOztAQt/AUH5Igt/AUH4Igt/AUH3Igt/AUH2Igt/AUH1Igt/AUH0Igt/AUHzIgt/AUHE7LUBC38BQbjwqAELfwFB7xwLfwFBiIe2AQt/AUGGGAt/AUGFGAt/AUGEGAt/AUGBGAt/AUH+Fwt/AUHk3pEBC38BQdjekQELfwFBoN+RAQt/AUG03pEBC38BQZiotgELfwFB9wwLfwFB/PnsAQt/AUGQh7YBC38BQZDu4wELfwFBkOzjAQt/AUGA6O0BC38BQcDp4wELfwFBsIe2AQt/AUHI0agBC38BQbCMqwELfwFB4IKoAQt/AUGg6KoBC38BQcCfqgELfwFBsO2pAQt/AUGg76kBC38BQcDrqQELfwFB3NOpAQt/AUG0tKsBC38BQaDBqQELfwFBkL+pAQt/AUHAtqkBC38BQbS0qQELfwFBjgULfwFBjJupAQt/AUGQkakBC38BQbivqAELfwFB+KioAQt/AUHooKgBC38BQezypwELfwFB0MGnAQt/AUH46ewBC38BQfTp7AELfwFBuIioAQt/AUHA6ewBC38BQYyW5QELfwFB+JXlAQt/AUHwkuUBC38BQdyS5QELfwFByi8LfwFByS8LfwFByC8LfwFBxy8LfwFBxi8LfwFBwy8LfwFBwi8LfwFBwS8LfwFBvy8LfwFBvS8LfwFBvC8LfwFBuy8LfwFBui8LfwFBuS8LfwFBuC8LfwFBqy8LfwFB1NvkAQt/AUGI2+QBC38BQdDa5AELfwFBsPCmAQt/AUGslOUBC38BQZQvC38BQZMvC38BQY8vC38BQfkuC38BQfguC38BQfcuC38BQfYuC38BQfQuC38BQfMuC38BQfIuC38BQYST5QELfwFB7S4LfwFBjNHkAQt/AUHjLgt/AUHiLgt/AUHhLgt/AUHgLgt/AUHfLgt/AUHbLgt/AUHaLgt/AUHZLgt/AUHYLgt/AUHXLgt/AUHWLgt/AUHVLgt/AUHTLgt/AUHSLgt/AUHQLgt/AUHPLgt/AUHOLgt/AUHMLgt/AUHLLgt/AUHKLgt/AUHJLgt/AUHHLgt/AUHGLgt/AUHFLgt/AUHELgt/AUHDLgt/AUHCLgt/AUHALgt/AUG9Lgt/AUG7Lgt/AUG5Lgt/AUG3Lgt/AUG2Lgt/AUG0Lgt/AUGzLgt/AUGyLgt/AUGxLgt/AUGwLgt/AUGvLgt/AUGtLgt/AUGpLgt/AUGoLgt/AUGnLgt/AUGmLgt/AUGlLgt/AUGaLgt/AUGZLgt/AUGVLgt/AUGSLgt/AUGPLgt/AUGLLgt/AUGHLgt/AUGELgt/AUGDLgt/AUGCLgt/AUGBLgt/AUGALgt/AUH/LQt/AUH+LQt/AUH9LQt/AUH8LQt/AUH6LQt/AUH5LQt/AUH4LQt/AUH3LQt/AUGEzOQBC38BQeDL5AELfwFBkioLfwFBkSoLfwFBkCoLfwFBjyoLfwFBjioLfwFBjCoLfwFBiyoLfwFBiioLfwFBiSoLfwFBiCoLfwFBhioLfwFB9SkLfwFB8ykLfwFB8ikLfwFB8SkLfwFB7ykLfwFB7ikLfwFB7SkLfwFB7CkLfwFB6ykLfwFB6ikLfwFB6SkLfwFB6CkLfwFB5ykLfwFB5ikLfwFB5CkLfwFB4ykLfwFB4ikLfwFB4CkLfwFB3ykLfwFB3SkLfwFBlKbwAQt/AUHaKQt/AUHYKQt/AUHXKQt/AUHUKQt/AUHTKQt/AUHSKQt/AUHRKQt/AUHQKQt/AUHPKQt/AUHOKQt/AUHNKQt/AUHMKQt/AUHLKQt/AUHKKQt/AUHJKQt/AUHIKQt/AUHHKQt/AUHGKQt/AUHFKQt/AUHEKQt/AUHDKQt/AUHCKQt/AUHBKQt/AUHAKQt/AUG/KQt/AUG+KQt/AUG9KQt/AUG8KQt/AUG7KQt/AUG6KQt/AUG5KQt/AUG4KQt/AUG3KQt/AUG2KQt/AUG1KQt/AUG0KQt/AUGzKQt/AUGvKQt/AUGtKQt/AUHMyOQBC38BQaDI5AELfwFB7L/kAQt/AUHIv+QBC38BQbS95AELfwFBoCkLfwFBkLzkAQt/AUGfKQt/AUGeKQt/AUGdKQt/AUGcKQt/AUGbKQt/AUGky+QBC38BQejK5AELfwFBrMrkAQt/AUHwyeQBC38BQbTJ5AELfwFB+MjkAQt/AUHtKAt/AUHgx+QBC38BQZjH5AELfwFBjLvkAQt/AUGAuuQBC38BQdTG5AELfwFBkMbkAQt/AUHMxeQBC38BQYjF5AELfwFBoMLkAQt/AUHIweQBC38BQfDA5AELfwFBkMDkAQt/AUGUueQBC38BQaC45AELfwFBqLfkAQt/AUGotuQBC38BQeCo5AELfwFBiLbkAQt/AUHoteQBC38BQeooC38BQekoC38BQeYoC38BQeUoC38BQcCo5AELfwFB5CgLfwFB4ygLfwFB4SgLfwFB3ygLfwFB3SgLfwFB3CgLfwFB2ygLfwFB2SgLfwFB1ygLfwFB1SgLfwFB0ygLfwFB0igLfwFB0SgLfwFB0CgLfwFBzigLfwFBzSgLfwFBzCgLfwFByygLfwFByigLfwFByCgLfwFBxigLfwFBxSgLfwFBxCgLfwFBwygLfwFBwigLfwFBwCgLfwFBvygLfwFBvigLfwFBvCgLfwFBuygLfwFBsygLfwFBsigLfwFBsCgLfwFBrCgLfwFBqigLfwFBqSgLfwFBpigLfwFBoygLfwFBnygLfwFBnigLfwFBnSgLfwFBnCgLfwFBlSgLfwFBlCgLfwFBhygLfwFBhigLfwFBhSgLfwFBgygLfwFB8CcLfwFB7icLfwFB7ScLfwFB7CcLfwFB7KTkAQt/AUHmJwt/AUG0m+QBC38BQfCZ5AELfwFBzicLfwFBoKTkAQt/AUHUo+QBC38BQYij5AELfwFBvKLkAQt/AUHwn/ABC38BQZyd8AELfwFBnJ/wAQt/AUHEnPABC38BQeyh8AELfwFBxCcLfwFBwycLfwFBwicLfwFBwScLfwFBvycLfwFBuJzwAQt/AUGkn+QBC38BQbie5AELfwFB0JzkAQt/AUHfJgt/AUHeJgt/AUHdJgt/AUHcJgt/AUHYJgt/AUHRJgt/AUHQJgt/AUHOJgt/AUHNJgt/AUHMJgt/AUHJJgt/AUHGJgt/AUHEJgt/AUHDJgt/AUHCJgt/AUHAJgt/AUG/Jgt/AUG+Jgt/AUG9Jgt/AUG8Jgt/AUG7Jgt/AUG6Jgt/AUG5Jgt/AUG4Jgt/AUG2Jgt/AUGtJgt/AUGmJgt/AUGlJgt/AUGjJgt/AUGiJgt/AUGhJgt/AUGeJgt/AUGZJgt/AUGXJgt/AUGWJgt/AUGUJgt/AUGSJgt/AUGRJgt/AUGQJgt/AUGPJgt/AUGOJgt/AUGNJgt/AUGMJgt/AUGLJgt/AUGKJgt/AUGJJgt/AUGHJgt/AUH6JQt/AUG4leUBC38BQfglC38BQeolC38BQeglC38BQeclC38BQd8lC38BQfCtpgELfwFB8KumAQt/AUGgsaYBC38BQfCwpgELfwFBxyULfwFBxiULfwFBxCULfwFBwyULfwFBwiULfwFBwCULfwFBvyULfwFBviULfwFBvSULfwFBvCULfwFBuyULfwFBuiULfwFBuSULfwFBuCULfwFBtyULfwFBtiULfwFBtSULfwFBtCULfwFBsyULfwFBsiULfwFBsSULfwFBsCULfwFBryULfwFBrSULfwFB4M7kAQt/AUH8zuQBC38BQaslC38BQaolC38BQcyU5QELfwFBpyULfwFBpSULfwFBoyULfwFBoiULfwFBnyULfwFBniULfwFBmyULfwFBmiULfwFBmCULfwFBlSULfwFBlCULfwFBkiULfwFBkSULfwFBiyULfwFBhiULfwFB1JLkAQt/AUHQp6YBC38BQZClpgELfwFBsPylAQt/AUHw16UBC38BQYMlC38BQYIlC38BQYElC38BQYAlC38BQf8kC38BQf4kC38BQfwkC38BQfokC38BQfgkC38BQfckC38BQfUkC38BQdD+ngELfwFB9CQLfwFBsJCfAQt/AUGApJ8BC38BQZCEnwELfwFB8yQLfwFB0IKfAQt/AUGAhJ8BC38BQdCAnwELfwFB7iQLfwFB7SQLfwFB7CQLfwFB6yQLfwFB6iQLfwFB6CQLfwFBtJvvAQt/AUH09e0BC38BQezu7QELfwFBiOztAQt/AUGM7O0BC38BQYwjC38BQYsjC38BQYUjC38BQYQjC38BQazIkAELfwFBsMiQAQt/AUG0yJABC38BQbjIkAELfwFBsB0LfwFB5LGqAQt/AUGE6O0BC38BQb0aC38BQY0YC38BQYwYC38BQYsYC38BQYoYC38BQYkYC38BQYgYC38BQYcYC38BQYMYC38BQYIYC38BQYAYC38BQf8XC38BQf0XC38BQfwXC38BQbC0uAELfwFB4LG4AQt/AUGY06gBC38BQeTYvgELfwFBuNm+AQt/AUHHFQt/AUG02b4BC38BQcYVC38BQbDZvgELfwFB7BMLfwFB6xMLfwFB4xMLfwFB4hMLfwFB4RMLfwFB4BMLfwFBjBILfwFBixILfwFBwN6RAQt/AUH83pEBC38BQYjfkQELfwFBzN6RAQt/AUG435EBC38BQazfkQELfwFBlg4LfwFBlQ4LfwFB5LS2AQt/AUHuDAt/AUGYhrYBC38BQfDu4wELfwFBlO61AQt/AUGQ6bUBC38BQewLC38BQesLC38BQeoLC38BQaj07AELfwFB6OGoAQt/AUGI5agBC38BQfcJC38BQfYJC38BQfUJC38BQfQJC38BQdDq7AELfwFBzOrsAQt/AUGIsagBC38BQeitqAELfwFBmKyoAQt/AUHIqqgBC38BQainqAELfwFB2KWoAQt/AUGIpKgBC38BQbiiqAELfwFBmJ+oAQt/AUGCAQt/AUGBAQt/AUG86uwBC38BQfgAC38BQfcAC38BQfEAC38BQfjCqAELfwFB4QALfwFB9OIOC38BQfDiDgt/AUH44g4LfwFBHgt/AUENC38BQQwLfwBB/JqnAQt/AEHsmqcBC38AQd2apwELfwBB0ZqnAQt/AEHEmqcBC38AQaCW5QELfwBBjJblAQt/AEH4leUBC38AQbCapwELfwBB7JXlAQt/AEHYleUBC38AQZ2apwELfwBBi5qnAQt/AEH7macBC38AQayV5QELfwBBjJXlAQt/AEHqmacBC38AQdmZpwELfwBBxJmnAQt/AEG0macBC38AQaOZpwELfwBBoJTlAQt/AEGAlOUBC38AQZaZpwELfwBB/ZinAQt/AEHrmKcBC38AQbST5QELfwBBoJPlAQt/AEHemKcBC38AQfCS5QELfwBB3JLlAQt/AEHAkuUBC38AQYiS5QELfwBBuJinAQt/AEH8keUBC38AQZOYpwELfwBByJHlAQt/AEHyl6cBC38AQeyQ5QELfwBB0JDlAQt/AEG0kOUBC38AQdCXpwELfwBBqJDlAQt/AEGMkOUBC38AQfyP5QELfwBBy5enAQt/AEHsj+UBC38AQceXpwELfwBB5I/lAQt/AEHEl6cBC38AQdSP5QELfwBBv5enAQt/AEHEj+UBC38AQbuXpwELfwBBvI/lAQt/AEG4l6cBC38AQayP5QELfwBBs5enAQt/AEGcj+UBC38AQa+XpwELfwBBlI/lAQt/AEGsl6cBC38AQYSP5QELfwBBqJenAQt/AEH0juUBC38AQaWXpwELfwBB7I7lAQt/AEGjl6cBC38AQdyO5QELfwBBn5enAQt/AEHMjuUBC38AQZyXpwELfwBBxI7lAQt/AEGal6cBC38AQbSO5QELfwBBlpenAQt/AEGkjuUBC38AQZOXpwELfwBBnI7lAQt/AEGRl6cBC38AQYyO5QELfwBBjZenAQt/AEH8jeUBC38AQYqXpwELfwBB9I3lAQt/AEGIl6cBC38AQeSN5QELfwBBg5enAQt/AEHUjeUBC38AQf+WpwELfwBBzI3lAQt/AEH8lqcBC38AQbyN5QELfwBB+JanAQt/AEGsjeUBC38AQfWWpwELfwBBpI3lAQt/AEHzlqcBC38AQZSN5QELfwBB75anAQt/AEGEjeUBC38AQeyWpwELfwBB/IzlAQt/AEHqlqcBC38AQeyM5QELfwBB5panAQt/AEHcjOUBC38AQeOWpwELfwBB1IzlAQt/AEHhlqcBC38AQcSM5QELfwBB3ZanAQt/AEG0jOUBC38AQdqWpwELfwBBrIzlAQt/AEHYlqcBC38AQZyM5QELfwBB1JanAQt/AEGMjOUBC38AQdGWpwELfwBBhIzlAQt/AEHPlqcBC38AQfSL5QELfwBBy5anAQt/AEHki+UBC38AQciWpwELfwBB3IvlAQt/AEHGlqcBC38AQcyL5QELfwBBwpanAQt/AEG8i+UBC38AQb+WpwELfwBBtIvlAQt/AEG9lqcBC38AQaSL5QELfwBBuZanAQt/AEGUi+UBC38AQbaWpwELfwBBjIvlAQt/AEG0lqcBC38AQfyK5QELfwBBsJanAQt/AEHsiuUBC38AQa2WpwELfwBB5IrlAQt/AEGrlqcBC38AQdSK5QELfwBBp5anAQt/AEHEiuUBC38AQaSWpwELfwBBvIrlAQt/AEGilqcBC38AQayK5QELfwBBnpanAQt/AEGciuUBC38AQZuWpwELfwBBlIrlAQt/AEGZlqcBC38AQYSK5QELfwBBlZanAQt/AEH0ieUBC38AQZKWpwELfwBB7InlAQt/AEGQlqcBC38AQdyJ5QELfwBBjJanAQt/AEHMieUBC38AQYmWpwELfwBBxInlAQt/AEGHlqcBC38AQbSJ5QELfwBBg5anAQt/AEGkieUBC38AQYCWpwELfwBBnInlAQt/AEH+lacBC38AQYyJ5QELfwBB+pWnAQt/AEH8iOUBC38AQfeVpwELfwBB9IjlAQt/AEH1lacBC38AQeSI5QELfwBB8JWnAQt/AEHUiOUBC38AQeyVpwELfwBB6ZWnAQt/AEG8iOUBC38AQeWVpwELfwBBpJLlAQt/AEGsiOUBC38AQeKVpwELfwBB4JWnAQt/AEG4lacBC38AQZiI5QELfwBB/IflAQt/AEHgh+UBC38AQf6UpwELfwBB2ZSnAQt/AEG1lKcBC38AQZOUpwELfwBB8ZOnAQt/AEGwluUBC38AQdCTpwELfwBB1IflAQt/AEHIh+UBC38AQaSI5QELfwBBvIflAQt/AEHMiOUBC38AQbCH5QELfwBBmIflAQt/AEGkh+UBC38AQcjO8AELfwBBjODkAQt/AEGQ4OQBC38AQcSW5QELfwBBsfOmAQt/AEGA4OQBC38AQezf5AELfwBBsPOmAQt/AEGO86YBC38AQevypgELfwBB1PKmAQt/AEGk3+QBC38AQbvypgELfwBBnN/kAQt/AEH43uQBC38AQaTypgELfwBB4N/kAQt/AEG03uQBC38AQdTf5AELfwBBjN7kAQt/AEHY3uQBC38AQZHypgELfwBB/PGmAQt/AEHn8aYBC38AQdDxpgELfwBB1N3kAQt/AEGs3eQBC38AQfDc5AELfwBB/N3kAQt/AEGY2+QBC38AQbzc5AELfwBB5NzkAQt/AEHg2uQBC38AQYjc5AELfwBBsNzkAQt/AEGo2uQBC38AQfzb5AELfwBB1NvkAQt/AEGI2+QBC38AQdDa5AELfwBB6NnkAQt/AEGE8KYBC38AQYDwpgELfwBBsPCmAQt/AEGslOUBC38AQcCU5QELfwBB7JPlAQt/AEGEk+UBC38AQdiT5QELfwBB6u+mAQt/AEGY2eQBC38AQYzR5AELfwBB2LrwAQt/AEHC76YBC38AQYDR5AELfwBB7NDkAQt/AEGq76YBC38AQeDQ5AELfwBBzNDkAQt/AEHm7qYBC38AQeXupgELfwBB5O6mAQt/AEHj7qYBC38AQcCT5QELfwBB4u6mAQt/AEHh7qYBC38AQeDupgELfwBBnO6mAQt/AEHwz+QBC38AQePtpgELfwBBme2mAQt/AEGE0OQBC38AQczP5AELfwBB+M/kAQt/AEGwz+QBC38AQfvspgELfwBB4uymAQt/AEHL7KYBC38AQdTO5AELfwBBwM7kAQt/AEHK7KYBC38AQa3spgELfwBBrM3kAQt/AEGQ7KYBC38AQdzM5AELfwBB7uSmAQt/AEHUy+QBC38AQcLkpgELfwBBmMvkAQt/AEGX5KYBC38AQdzK5AELfwBB7OOmAQt/AEGgyuQBC38AQcLjpgELfwBB5MnkAQt/AEGY46YBC38AQajJ5AELfwBB++KmAQt/AEHsyOQBC38AQd7ipgELfwBBwMjkAQt/AEHJ4qYBC38AQYDI5AELfwBBuMfkAQt/AEGx4qYBC38AQZzipgELfwBBwMfkAQt/AEHwxuQBC38AQYPipgELfwBBveGmAQt/AEH4xuQBC38AQazG5AELfwBBpOGmAQt/AEHe4KYBC38AQbTG5AELfwBB6MXkAQt/AEHF4KYBC38AQf/fpgELfwBB8MXkAQt/AEGkxeQBC38AQebfpgELfwBBoN+mAQt/AEGsxeQBC38AQf3epgELfwBB/MTkAQt/AEHa3qYBC38AQbjE5AELfwBBt96mAQt/AEH0w+QBC38AQZTepgELfwBBsMPkAQt/AEH43aYBC38AQdjC5AELfwBB3N2mAQt/AEGAwuQBC38AQcDdpgELfwBBqMHkAQt/AEHIwOQBC38AQavdpgELfwBBj92mAQt/AEHQwOQBC38AQcLcpgELfwBBhMDkAQt/AEH126YBC38AQeC/5AELfwBBsNumAQt/AEGov+QBC38AQei+5AELfwBBm9umAQt/AEHW2qYBC38AQfC+5AELfwBBpL7kAQt/AEG22qYBC38AQenZpgELfwBBsL7kAQt/AEGIveQBC38AQYC95AELfwBB1NmmAQt/AEG02aYBC38AQefYpgELfwBBlL3kAQt/AEHgu+QBC38AQcXYpgELfwBBgNimAQt/AEHou+QBC38AQdy65AELfwBB3temAQt/AEHUuuQBC38AQcvXpgELfwBBhtemAQt/AEHkuuQBC38AQci55AELfwBB8NamAQt/AEGs1qYBC38AQeC55AELfwBB3LjkAQt/AEHUuOQBC38AQZPWpgELfwBB/dWmAQt/AEG51aYBC38AQfS45AELfwBB6LfkAQt/AEGj1aYBC38AQd/UpgELfwBBgLjkAQt/AEHwtuQBC38AQei25AELfwBBxtSmAQt/AEGw1KYBC38AQezTpgELfwBBiLfkAQt/AEHP06YBC38AQbLTpgELfwBBndOmAQt/AEGI06YBC38AQe7SpgELfwBB1NKmAQt/AEHC0qYBC38AQei05AELfwBBrtKmAQt/AEGS0qYBC38AQdC05AELfwBB/tGmAQt/AEHi0aYBC38AQczRpgELfwBBqdGmAQt/AEG4tOQBC38AQYi05AELfwBBhtGmAQt/AEH8s+QBC38AQcyz5AELfwBB5NCmAQt/AEHAs+QBC38AQZCz5AELfwBBwtCmAQt/AEGEs+QBC38AQdSy5AELfwBBoNCmAQt/AEHIsuQBC38AQZiy5AELfwBB/s+mAQt/AEGMsuQBC38AQdyx5AELfwBB3M+mAQt/AEHQseQBC38AQaCx5AELfwBBu8+mAQt/AEGUseQBC38AQeSw5AELfwBBms+mAQt/AEHYsOQBC38AQaiw5AELfwBB/c6mAQt/AEGcsOQBC38AQeyv5AELfwBB4M6mAQt/AEHgr+QBC38AQbCv5AELfwBBvs6mAQt/AEGizqYBC38AQaSv5AELfwBB1K7kAQt/AEH/zaYBC38AQciu5AELfwBBmK7kAQt/AEHczaYBC38AQYyu5AELfwBB3K3kAQt/AEG6zaYBC38AQdCt5AELfwBBoK3kAQt/AEGYzaYBC38AQZSt5AELfwBB5KzkAQt/AEH0zKYBC38AQcSs5AELfwBB0cymAQt/AEH0q+QBC38AQa3MpgELfwBBpKvkAQt/AEGKzKYBC38AQdSq5AELfwBB/KnkAQt/AEHzy6YBC38AQdHLpgELfwBBhKrkAQt/AEGkqeQBC38AQbzLpgELfwBBqsumAQt/AEGsqeQBC38AQZTLpgELfwBB1KjkAQt/AEHcteQBC38AQdC15AELfwBBxLXkAQt/AEG4teQBC38AQYSv5AELfwBBrLXkAQt/AEGgteQBC38AQYC15AELfwBBhMGmAQt/AEGAwaYBC38AQfzApgELfwBB+MCmAQt/AEH0wKYBC38AQfDApgELfwBB7MCmAQt/AEHowKYBC38AQeTApgELfwBB4MCmAQt/AEHcwKYBC38AQdjApgELfwBB1MCmAQt/AEH0tOQBC38AQdy05AELfwBBxLTkAQt/AEHQwKYBC38AQczApgELfwBByMCmAQt/AEHEwKYBC38AQcDApgELfwBBvMCmAQt/AEG4wKYBC38AQbTApgELfwBBs8CmAQt/AEGywKYBC38AQbHApgELfwBBsMCmAQt/AEHgx+QBC38AQZjH5AELfwBBkL/kAQt/AEHQvuQBC38AQYTM5AELfwBBjLvkAQt/AEHgy+QBC38AQYC65AELfwBB1MbkAQt/AEGQxuQBC38AQczF5AELfwBBiMXkAQt/AEGgwuQBC38AQcjB5AELfwBB8MDkAQt/AEGQwOQBC38AQZS55AELfwBBoLjkAQt/AEGot+QBC38AQai25AELfwBBlKzkAQt/AEH0quQBC38AQcSr5AELfwBBpKrkAQt/AEHMqeQBC38AQeCo5AELfwBBiLbkAQt/AEHoteQBC38AQeyU5QELfwBBgJXlAQt/AEHozOQBC38AQajM5AELfwBBmKjkAQt/AEHwp+QBC38AQcin5AELfwBBoKfkAQt/AEHwpuQBC38AQaym5AELfwBB+KXkAQt/AEHEpeQBC38AQaSl5AELfwBBhKXkAQt/AEGUpvABC38AQczI5AELfwBBoMjkAQt/AEHsv+QBC38AQci/5AELfwBBtL3kAQt/AEGQvOQBC38AQcTE5AELfwBBgMTkAQt/AEG8w+QBC38AQfjC5AELfwBBpMvkAQt/AEHoyuQBC38AQazK5AELfwBB8MnkAQt/AEG0yeQBC38AQfjI5AELfwBB7KXwAQt/AEHkpfABC38AQZyl8AEL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AQt/AEGwiqsBC38AQcCdqgELfwBBwIirAQt/AEGwraoBC38AQeCZqwELfwBBrJurAQt/AEH4nKsBC38AQdCMqgELfwBByImqAQt/AEH4kaoBC38AQciGqgELfwBBlPrsAQt/AEG4gaoBC38AQcz8qQELfwBBpPSpAQt/AEHY8qkBC38AQbDtqQELfwBBoO+pAQt/AEHA66kBC38AQdDpqQELfwBB2OepAQt/AEGw4qkBC38AQcDYqQELfwBB3NOpAQt/AEGo1akBC38AQaTdqQELfwBB2NupAQt/AEGM2qkBC38AQfTWqQELfwBBkNKpAQt/AEGgwakBC38AQZC/qQELfwBBwLapAQt/AEG0tKkBC38AQdyyqQELfwBBvK+pAQt/AEHsrKkBC38AQYSDqgELfwBBlKapAQt/AEGgiKoBC38AQYybqQELfwBBwJmpAQt/AEHQlakBC38AQZCRqQELfwBBnJepAQt/AEHIjKkBC38AQZCHqQELfwBBjIWpAQt/AEGI8qgBC38AQbjwqAELfwBBmO2oAQt/AEHI66gBC38AQfjpqAELfwBBqOioAQt/AEGI5agBC38AQejhqAELfwBBmOCoAQt/AEGo26gBC38AQejUqAELfwBBmNOoAQt/AEHI0agBC38AQdjMqAELfwBBuLyoAQt/AEHouqgBC38AQci3qAELfwBBqLSoAQt/AEHInagBC38AQdiYqAELfwBBmJKoAQt/AEH0p6kBC38AQdDq7AELfwBBzOrsAQt/AEHYsqgBC38AQYixqAELfwBBuK+oAQt/AEHoragBC38AQZisqAELfwBByKqoAQt/AEH4qKgBC38AQainqAELfwBB2KWoAQt/AEGIpKgBC38AQbiiqAELfwBBmJ+oAQt/AEHooKgBC38AQfibqAELfwBB+M+oAQt/AEGckqgBC38AQeCCqAELfwBB8ISoAQt/AEH4/6cBC38AQdz2pwELfwBBkPWnAQt/AEHs8qcBC38AQdzwpwELfwBBzO6nAQt/AEGA7acBC38AQfj5pwELfwBBiNioAQt/AEHgqaoBC38AQfjcpwELfwBByNqnAQt/AEHo16cBC38AQfDVpwELfwBBpNSnAQt/AEGQz6cBC38AQfDEqQELfwBBpManAQt/AEHQwacBC38AQejuqAELfwBBuJirAQt/AEHAwxoLfwBBwMEaC38AQbjMqQELfwBByOrsAQt/AEH8tqcBC38AQZzDqQELfwBBqNmqAQt/AEHI3qgBC38AQaC3qgELfwBBqJqoAQt/AEHY5qgBC38AQfjcqAELfwBBwOrsAQt/AEG86uwBC38AQbiO5AELfwBBuOrsAQt/AEG446gBC38AQcC5Ggt/AEHY2agBC38AQfyuqgELfwBBrOenAQt/AEHQj+QBC38AQYjLqAELfwBB+MKoAQt/AEG4lagBC38AQajBqAELfwBBqM6oAQt/AEHIxKgBC38AQeC1qwELfwBB2L+oAQt/AEHgrqcBC38AQbC1pwELfwBBkJ6pAQt/AEGwpaoBC38AQayrpwELfwBBqKunAQt/AEGkq6cBC38AQZj+qQELfwBB/IqpAQt/AEH46ewBC38AQfTp7AELfwBBnI6qAQt/AEHAsqoBC38AQcy6qQELfwBB7LiqAQt/AEGYuagBC38AQYSvqgELfwBBmMaoAQt/AEHox6gBC38AQbiIqAELfwBBiIqoAQt/AEH4tagBC38AQaiNqAELfwBByJCoAQt/AEGIhLYBC38AQfiOqAELfwBBkLSnAQt/AEGAtKcBC38AQYiXqAELfwBB/OIOC38AQfjiDgt/AEH04g4LfwBB8OIOC38AQeziDgt/AEG41qgBC38AQbjJqAELfwBByOnsAQt/AEHE6ewBC38AQdiLqAELfwBBlIiqAQt/AEHokOQBC38AQYi+qAELfwBBwOnsAQsH1PcelEoRX193YXNtX2NhbGxfY3RvcnMAmgIYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAJsCFHNldF9tZXRob2RfZG9jc3RyaW5nAJ0CFlB5T2JqZWN0X0dldEF0dHJTdHJpbmcAtBAQcHlfZG9jc3RyaW5nX21vZAO6ExFfUHlVbmljb2RlX0Zyb21JZACQFBlQeU9iamVjdF9WZWN0b3JjYWxsTWV0aG9kAKEIF1B5VW5pY29kZV9Bc1VURjhBbmRTaXplANgUBm1hbGxvYwDjRgZtZW1jcHkAzj4LX1B5X0RlYWxsb2MA1RAUUHlFeGNfQXR0cmlidXRlRXJyb3IDuRMMUHlFcnJfRm9ybWF0AK4aHmFkZF9tZXRob2RzX2FuZF9zZXRfZG9jc3RyaW5ncwCeAhVQeU1vZHVsZV9BZGRGdW5jdGlvbnMA+A8OZG9jc3RyaW5nX2luaXQAnwIVUHlJbXBvcnRfSW1wb3J0TW9kdWxlAMcbDmR1bXBfdHJhY2ViYWNrAKACBnN0ZG91dAO4EwZmaWxlbm8AwD8dUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUA5B0RX1B5X0R1bXBUcmFjZWJhY2sA1B8Jc2V0X2Vycm9yAKECD1B5RXJyX1NldE9iamVjdACvGhpyZXN0b3JlX3N5c19sYXN0X2V4Y2VwdGlvbgCiAg9QeVN5c19HZXRPYmplY3QA5R4NUHlFcnJfUmVzdG9yZQCoGg53cmFwX2V4Y2VwdGlvbgCjAgtQeUVycl9GZXRjaAC8GhhQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24AuxoOX1B5X05vbmVTdHJ1Y3QDtxMPUHlFeGNfVHlwZUVycm9yA7YTD1B5RXJyX1NldFN0cmluZwC0GhhQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sA+wkPUHlTeXNfU2V0T2JqZWN0AOceE19QeU9iamVjdF9HZXRBdHRySWQAuxAQUHlVbmljb2RlX0FzVVRGOADZFB1fUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncwCkCA1QeVVuaWNvZGVfTmV3AP4TDlB5VW5pY29kZV9Kb2luAI4VEVB5U3lzX1dyaXRlU3RkZXJyAOseC1B5RXJyX1ByaW50AIEeDVB5RXJyX0Rpc3BsYXkAjx4McHl0aG9uZXhjMmpzAKQCE3RyaWdnZXJfZmF0YWxfZXJyb3IApQIIcmF3X2NhbGwApgIMSnNQcm94eV9Bc0pzAOcCE2Vycm9yX2hhbmRsaW5nX2luaXQApwIOaW50ZXJuYWxfZXJyb3IDtRMQY29udmVyc2lvbl9lcnJvcgO0ExBoaXdpcmVfZnJvbV9ib29sAKgCDmhpd2lyZV9jYWxsX3ZhAKkCEmhpd2lyZV9IYXNNZXRob2RJZACqAg9Kc1N0cmluZ19Gcm9tSWQAqwITaGl3aXJlX0NhbGxNZXRob2RJZACsAhpoaXdpcmVfQ2FsbE1ldGhvZFN0cmluZ192YQCtAhZoaXdpcmVfQ2FsbE1ldGhvZElkX3ZhAK4CGmhpd2lyZV9DYWxsTWV0aG9kSWRfTm9BcmdzAK8CGmhpd2lyZV9DYWxsTWV0aG9kSWRfT25lQXJnALACEWhpd2lyZV9nZXRfbGVuZ3RoALECEFB5RXhjX1ZhbHVlRXJyb3IDsxMTUHlFeGNfT3ZlcmZsb3dFcnJvcgOyEwRmcmVlAORGEHNldFJlc2VydmVkRXJyb3IAsgIMSnNfdW5kZWZpbmVkA7ETB0pzX3RydWUDsBMISnNfZmFsc2UDrxMHSnNfbnVsbAOuEwpKc19ub3ZhbHVlA60TFFB5SW5pdF9fcHlvZGlkZV9jb3JlALMCEFB5TW9kdWxlX0NyZWF0ZTIA9A8RUHlFeGNfSW1wb3J0RXJyb3IDrBMOcHl0aG9uMmpzX2luaXQAyQMMSnNQcm94eV9pbml0AOkCDHB5cHJveHlfaW5pdAC4AxZQeUltcG9ydF9HZXRNb2R1bGVEaWN0AMsbFFB5RGljdF9TZXRJdGVtU3RyaW5nAL0OCXB5dGhvbjJqcwDBAw5QeVVuaWNvZGVfRGF0YQC0Ag9fanMycHl0aG9uX25vbmUAtQIPX2pzMnB5dGhvbl90cnVlALYCDl9QeV9UcnVlU3RydWN0A6sTEF9qczJweXRob25fZmFsc2UAtwIPX1B5X0ZhbHNlU3RydWN0A6oTEl9qczJweXRob25fcHlwcm94eQC4AhBKc1Byb3h5X2dldGZsYWdzALkCDVB5TG9uZ19Bc0xvbmcAoA0SaGFuZGxlX25leHRfcmVzdWx0ALoCGEpzUHJveHlfY3JlYXRlX3dpdGhfdHlwZQC7AhVKc1Byb3h5X2NyZWF0ZV9vYmptYXAAvAIPSnNQcm94eV9hbV9zZW5kAL0CF3B5dGhvbjJqc190cmFja19wcm94aWVzAMADEEpzUHJveHlfSXRlck5leHQAvgIcX1B5R2VuX1NldFN0b3BJdGVyYXRpb25WYWx1ZQD1ChBKc0dlbmVyYXRvcl9zZW5kAL8CE1B5RXhjX1N0b3BJdGVyYXRpb24DqRMNUHlFcnJfU2V0Tm9uZQCyGhtKc0V4Y2VwdGlvbl9qc19lcnJvcl9nZXR0ZXIAwAIScHJvY2Vzc190aHJvd19hcmdzAMECEFB5VHJhY2VCYWNrX1R5cGUDqBMYUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrAPoJE1B5RXhjX0dlbmVyYXRvckV4aXQDpxMWUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcwC4GgtQeUVycl9DbGVhcgC9GhhfYWdlbl9oYW5kbGVfcmVzdWx0X2pzX2MAwgIYUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uA6YTE1B5T2JqZWN0X0NhbGxPbmVBcmcAlAgSUHlFeGNfUnVudGltZUVycm9yA6UTG1B5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwC2GhNfYWdlbl9oYW5kbGVfcmVzdWx0AMMCE1B5T2JqZWN0X0NhbGxOb0FyZ3MAhwgMSnNNYXBfdXBkYXRlAMQCF19QeUFyZ19QYXJzZVR1cGxlX1NpemVUAPEaFEpzTWV0aG9kX0NvbnZlcnRBcmdzAMUCD1B5VHVwbGVfR2V0SXRlbQCVEgxQeVR1cGxlX1NpemUAlBIOQnVmZmVyX2RlYWxsb2MAxgIKUHlNZW1fRnJlZQD9EBtKc0J1ZmZlcl9Db3B5SW50b01lbW9yeVZpZXcAxwIMUHlNZW1fTWFsbG9jAPoQF1B5TWVtb3J5Vmlld19Gcm9tT2JqZWN0AKcPDkpzQnVmZmVyX2Npbml0AMgCDFB5VHVwbGVfUGFjawCYEg9QeUxvbmdfRnJvbUxvbmcAmw0XUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IAkQ4OUHlFcnJfT2NjdXJyZWQAtRoRUHlPYmplY3RfU2VsZkl0ZXIAuAIRUHlWZWN0b3JjYWxsX0NhbGwAjggPUHlFeGNfRXhjZXB0aW9uA6QTDlB5RXJyX05vTWVtb3J5AM4aE1B5RXhjX0Jhc2VFeGNlcHRpb24DoxMYUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzAMISE19QeU9iamVjdF9TZXRBdHRySWQAvBAOUHlEaWN0X1NldEl0ZW0AjQ4YSnNQcm94eV9jcmVhdGVfd2l0aF90aGlzAOQCDkpzUHJveHlfY3JlYXRlAOUCDUpzUHJveHlfQ2hlY2sA5gIQUHlUeXBlX0lzU3VidHlwZQC5EhdKc1Byb3h5X2luaXRfZG9jc3RyaW5ncwDoAgpQeURpY3RfTmV3AP8NFlB5T2JqZWN0X1NldEF0dHJTdHJpbmcAuBASUHlNb2R1bGVfQWRkT2JqZWN0ANkcDFB5VHlwZV9SZWFkeQDIEg5QeUV4Y19LZXlFcnJvcgOiEw1QeUluZGV4X0NoZWNrAPcFEFB5RXhjX0luZGV4RXJyb3IDoRMSUHlOdW1iZXJfQXNTc2l6ZV90ALoFDFB5U2xpY2VfVHlwZQOgEw5QeVNsaWNlX1VucGFjawD5ERVQeVNsaWNlX0FkanVzdEluZGljZXMA+hEPUHlTZXF1ZW5jZV9GYXN0AIoGGVB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IDnxMiX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAD9GhFQeUJhc2VPYmplY3RfVHlwZQOeEwlQeVNldF9OZXcAwhENX1B5U2V0X1VwZGF0ZQDOERRQeVVuaWNvZGVfRnJvbVN0cmluZwCPFA1QeVNldF9EaXNjYXJkAMgRClB5TGlzdF9OZXcA1gwOX1B5TGlzdF9FeHRlbmQA5AwLUHlMaXN0X1NvcnQA5gwXX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQA9hoLUHlMaXN0X1R5cGUDnRMMUHlUdXBsZV9UeXBlA5wTEFB5T2JqZWN0X0dldEl0ZXIAhwYiX1B5QXJnX1BhcnNlU3RhY2tBbmRLZXl3b3Jkc19TaXplVACGGxVQeV9FbnRlclJlY3Vyc2l2ZUNhbGwAixkVUHlfTGVhdmVSZWN1cnNpdmVDYWxsAIwZBHB1dHMAskMXUHlPYmplY3RfR2VuZXJpY0dldEF0dHIArhAGc3RyY21wAO9EB3N0cm5jbXAAgkUXUHlPYmplY3RfR2VuZXJpY1NldEF0dHIAxBAYX1B5X05vdEltcGxlbWVudGVkU3RydWN0A5sTDV9QeV9IYXNoQnl0ZXMAgB0WX1B5QXJnX0NoZWNrUG9zaXRpb25hbACMGw9fUHlOdW1iZXJfSW5kZXgAvAUQUHlMb25nX0FzU3NpemVfdACiDRhQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wAsBASUHlMb25nX0Zyb21Tc2l6ZV90AK4NEFB5T2JqZWN0X0dldEl0ZW0AuQUQUHlPYmplY3RfRGVsSXRlbQC/BRBQeU9iamVjdF9TZXRJdGVtAL0FElB5T2JqZWN0X0dldEJ1ZmZlcgDHBRBQeUJ1ZmZlcl9SZWxlYXNlAMQFGVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUArQcQcHlwcm94eV9nZXRmbGFncwCeAxBQeU9iamVjdF9IYXNBdHRyAL8QEFB5U2VxdWVuY2VfQ2hlY2sA/AUMUHlJdGVyX0NoZWNrAKIGCUdlbmVyYXRvcgOaExNQeU9iamVjdF9Jc0luc3RhbmNlAJkGDkFzeW5jR2VuZXJhdG9yA5kTClB5R2VuX1R5cGUDmBMVUHlWZWN0b3JjYWxsX0Z1bmN0aW9uAIsIEFB5Q0Z1bmN0aW9uX1R5cGUDlxMNX3B5cHJveHlfcmVwcgCfAw1QeU9iamVjdF9SZXByAKcQDV9weXByb3h5X3R5cGUAoAMQX3B5cHJveHlfaGFzYXR0cgChAxBfcHlwcm94eV9nZXRhdHRyAKIDE19QeU9iamVjdF9HZXRNZXRob2QAwhAQX3B5cHJveHlfc2V0YXR0cgCjAxBQeU9iamVjdF9TZXRBdHRyALkQEF9weXByb3h5X2RlbGF0dHIApAMQX3B5cHJveHlfZ2V0aXRlbQClAxBfcHlwcm94eV9zZXRpdGVtAKYDEF9weXByb3h5X2RlbGl0ZW0ApwMRX3B5cHJveHlfY29udGFpbnMAqAMTUHlTZXF1ZW5jZV9Db250YWlucwCNBhBfcHlwcm94eV9vd25LZXlzAKkDDFB5T2JqZWN0X0RpcgDIEAtQeUxpc3RfU2l6ZQDXDA5QeUxpc3RfR2V0SXRlbQDYDA5fcHlwcm94eV9hcHBseQCqAwtQeVR1cGxlX05ldwCTEhNQeU9iamVjdF9WZWN0b3JjYWxsAJAIEl9weXByb3h5X2l0ZXJfbmV4dACrAwtQeUl0ZXJfTmV4dACIBhBfcHlwcm94eUdlbl9TZW5kAKwDC1B5SXRlcl9TZW5kAKUGEl9weXByb3h5R2VuX3JldHVybgCtAx5fUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUA9goRX3B5cHJveHlHZW5fdGhyb3cArgMRX3B5cHJveHlHZW5fYXNlbmQArwMTX3B5cHJveHlHZW5fYXJldHVybgCwAxJfcHlwcm94eUdlbl9hdGhyb3cAsQMTX3B5cHJveHlfYWl0ZXJfbmV4dACyAx9GdXR1cmVEb25lQ2FsbGJhY2tfY2FsbF9yZXNvbHZlALMDHkZ1dHVyZURvbmVDYWxsYmFja19jYWxsX3JlamVjdAC0AxdGdXR1cmVEb25lQ2FsbGJhY2tfY2FsbAC1AxFQeUFyZ19VbnBhY2tUdXBsZQCNGxZfcHlwcm94eV9lbnN1cmVfZnV0dXJlALYDE19weXByb3h5X2dldF9idWZmZXIAtwMeUHlCdWZmZXJfRmlsbENvbnRpZ3VvdXNTdHJpZGVzAM8FFVB5QnVmZmVyX0lzQ29udGlndW91cwDIBRRweV9idWZmZXJfbGVuX29mZnNldAOWExZweV9idWZmZXJfc2hhcGVfb2Zmc2V0A5UTEmJ1ZmZlcl9zdHJ1Y3Rfc2l6ZQOUExFfcHl0aG9uMmpzX2J1ZmZlcgC8AwpfcHl0aG9uMmpzAL0DD3B5dGhvbjJqc19pbm5lcgC/Aw9QeVNlcXVlbmNlX1NpemUA/QUSUHlTZXF1ZW5jZV9HZXRJdGVtALsFClB5U2V0X1R5cGUDkxMUUHlPYmplY3RfQ2hlY2tCdWZmZXIAwgUMUHlGbG9hdF9UeXBlA5ITEFB5RmxvYXRfQXNEb3VibGUAxgsWX1B5RXJyX0Zvcm1hdEZyb21DYXVzZQDLGhRweXRob24yanNfd2l0aF9kZXB0aADCAxBweXRob24yanNfY3VzdG9tAMMDGFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwCfDRNfUHlMb25nX0FzQnl0ZUFycmF5AKoNC1B5RGljdF9OZXh0AIUOC1B5Qm9vbF9UeXBlA5ETEHB5X3ZlcnNpb25fbWFqb3IAzAMQcHlfdmVyc2lvbl9taW5vcgDNAxBweV92ZXJzaW9uX21pY3JvAM4DEF9fbWFpbl9hcmdjX2FyZ3YAzwMWUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgDuGxxQeVByZUNvbmZpZ19Jbml0UHl0aG9uQ29uZmlnAPQcHVB5X1ByZUluaXRpYWxpemVGcm9tQnl0ZXNBcmdzAI8dElB5U3RhdHVzX0V4Y2VwdGlvbgCLHBlQeUNvbmZpZ19Jbml0UHl0aG9uQ29uZmlnAJkcFVB5Q29uZmlnX1NldEJ5dGVzQXJndgClHBdQeUNvbmZpZ19TZXRCeXRlc1N0cmluZwCcHBdQeV9Jbml0aWFsaXplRnJvbUNvbmZpZwCTHQ5QeUNvbmZpZ19DbGVhcgCXHBZQeV9FeGl0U3RhdHVzRXhjZXB0aW9uAJcdCHJ1bl9tYWluANADD1B5X0dldEJ1aWxkSW5mbwDRAw1QeU9TX3NucHJpbnRmAN0cDl9QeV9naXR2ZXJzaW9uANIDEV9QeV9naXRpZGVudGlmaWVyANIDD1B5VG9rZW5fT25lQ2hhcgDTAxBQeVRva2VuX1R3b0NoYXJzANQDElB5VG9rZW5fVGhyZWVDaGFycwDVAxRfUHlQYXJzZXJfVG9rZW5OYW1lcwOQEwZzdHJsZW4A/UQUUHlVbmljb2RlX0RlY29kZVVURjgA5BQPX1B5QXJlbmFfTWFsbG9jAPscB3N0cm5jcHkAg0UNUHlNZW1fUmVhbGxvYwD8EAxQeU1lbV9DYWxsb2MA+xAUX1B5QXJlbmFfQWRkUHlPYmplY3QA/BwRUHlFeGNfU3ludGF4RXJyb3IDjxMQUHlCeXRlc19Bc1N0cmluZwC/BxpQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwC2FRJfUHlPYmplY3RfRmFzdENhbGwAkQgMX1B5VHlwZV9OYW1lALUSF1B5VW5pY29kZV9JbnRlcm5JblBsYWNlAJEUF1B5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplAMAHBnN0cmNocgDtRApfUHlSdW50aW1lA44TIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nAJUVEF9fZXJybm9fbG9jYXRpb24A+jsMUHlPU19zdHJ0b3VsAN8cEVB5TG9uZ19Gcm9tU3RyaW5nALwNC1B5T1Nfc3RydG9sAOAcFVB5T1Nfc3RyaW5nX3RvX2RvdWJsZQDfHxZQeUNvbXBsZXhfRnJvbUNDb21wbGV4AIYJElB5RmxvYXRfRnJvbURvdWJsZQDCCxFQeUV4Y19Mb29rdXBFcnJvcgONExhQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IDjBMMUHlPYmplY3RfU3RyAKYQDVB5X0J1aWxkVmFsdWUAzRwWUHlFeGNfSW5kZW50YXRpb25FcnJvcgOLExdQeUV4Y19LZXlib2FyZEludGVycnVwdAOKEw5QeUV4Y19UYWJFcnJvcgOJExJQeUV4Y19Vbmljb2RlRXJyb3IDiBMVUHlVbmljb2RlX0Zyb21Gb3JtYXRWAJwUH19QeUVycl9Qcm9ncmFtRGVjb2RlZFRleHRPYmplY3QA4RoFc3RkaW4DhxMbUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplAIwUEF9QeVVuaWNvZGVfUmVhZHkAghQGc3RyY3B5APJEFFB5Qnl0ZXNfQ29uY2F0QW5kRGVsANEHDlB5Q29tcGxleF9UeXBlA4YTEl9QeV9FbGxpcHNpc09iamVjdAOFExFQeUV4Y19TeXN0ZW1FcnJvcgOEEw9fUHlfY3R5cGVfdGFibGUDgxMWX1B5RXJyX0JhZEludGVybmFsQ2FsbADVGhxQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsAI4UFV9QeUJ5dGVzX0RlY29kZUVzY2FwZQC8BwhzaXByaW50ZgDPRCZfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGVJbnRlcm5hbADrFBZQeVVuaWNvZGVfQXBwZW5kQW5kRGVsAJ0VFFB5VW5pY29kZV9Gcm9tRm9ybWF0AKQUGFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZwOCExhQeUVycl9XYXJuRXhwbGljaXRPYmplY3QA8xYLUHlTeXNfQXVkaXQA6h4UX1B5T1NfUmVhZGxpbmVUU3RhdGUDgRMGZmZsdXNoALI/BnN0ZGVycgOAEwVmcHV0cwDuPw1QeU1lbV9SYXdGcmVlAPkQFFB5RXZhbF9SZXN0b3JlVGhyZWFkANoYEVB5RXZhbF9TYXZlVGhyZWFkANkYEFB5TWVtX1Jhd1JlYWxsb2MA+BAOUHlPU19JbnB1dEhvb2sD/xIIY2xlYXJlcnIAoD0FZmdldHMAvD8EZmVvZgCtPxdfUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAC5MBJQeUVycl9DaGVja1NpZ25hbHMAsjANUHlPU19SZWFkbGluZQCiBRxQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyA/4SFlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sAsh8RUHlFeGNfTWVtb3J5RXJyb3ID/RIVUHlUaHJlYWRfYWNxdWlyZV9sb2NrALcfBmlzYXR0eQCAQRVQeVRocmVhZF9yZWxlYXNlX2xvY2sAtR8QUHlVbmljb2RlX0RlY29kZQCuFBZQeVVuaWNvZGVfQXNVVEY4U3RyaW5nAOgUEl9QeV9GYXRhbEVycm9yRnVuYwClHQZtZW1jbXAAlkIZX1B5VW5pY29kZV9TY2FuSWRlbnRpZmllcgCeFRNQeVVuaWNvZGVfU3Vic3RyaW5nAKEVFl9QeVVuaWNvZGVfSXNQcmludGFibGUAnBYIaXN4ZGlnaXQArUEHX1B5X2R1cACjIAZmZG9wZW4A/jsGZmNsb3NlAKQ/B3RvbG93ZXIA1UUEZ2V0YwC2PwZ1bmdldGMA8UUYUHlfVW5pdmVyc2FsTmV3bGluZUZnZXRzALMLE1B5RXhjX1N5bnRheFdhcm5pbmcD/BIFZnRlbGwAgkAFbHNlZWsAh0INUHlFeGNfT1NFcnJvcgP7Eh5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUA0RoUX1B5T2JqZWN0X0NhbGxNZXRob2QAnQgQUHlPYmplY3RfR2V0QXR0cgC1EBRfUHlPYmplY3RfTWFrZVRwQ2FsbACICBdfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdACGCAdzdHJjc3BuAPNEFF9QeV9CdWlsZFZhbHVlX1NpemVUANEcDVB5T2JqZWN0X1R5cGUAswUQX1B5RXJyX1NldFN0cmluZwCzGg1QeU9iamVjdF9TaXplALQFDlB5TWFwcGluZ19TaXplALUFD1B5T2JqZWN0X0xlbmd0aAC2BRBfUHlPYmplY3RfSGFzTGVuALcFE1B5T2JqZWN0X0xlbmd0aEhpbnQAuAUXX1B5RXJyX0V4Y2VwdGlvbk1hdGNoZXMAtxoMX1B5RXJyX0NsZWFyAK0aF19QeU9iamVjdF9Mb29rdXBTcGVjaWFsALoSC1B5VHlwZV9UeXBlA/oSD1B5X0dlbmVyaWNBbGlhcwDcChRfUHlPYmplY3RfTG9va3VwQXR0cgCsEAxfUHlMb25nX1NpZ24Apg0NX1B5RXJyX0Zvcm1hdACrGhJQeVNlcXVlbmNlX1NldEl0ZW0AvgUSUHlTZXF1ZW5jZV9EZWxJdGVtAMAFFlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcAwQUYUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyAMMFFVB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgDFBRVQeU9iamVjdF9Bc1JlYWRCdWZmZXIAxQUWUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgDGBRNQeUJ1ZmZlcl9HZXRQb2ludGVyAMkFFl9QeV9hZGRfb25lX3RvX2luZGV4X0YAygUWX1B5X2FkZF9vbmVfdG9faW5kZXhfQwDLBRdQeUJ1ZmZlcl9TaXplRnJvbUZvcm1hdADMBRxQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzAKUIF1B5QnVmZmVyX0Zyb21Db250aWd1b3VzAM0FBm1lbXNldADQPhFQeU9iamVjdF9Db3B5RGF0YQDOBRFQeUV4Y19CdWZmZXJFcnJvcgP5EhFQeUJ1ZmZlcl9GaWxsSW5mbwDQBQ9QeU9iamVjdF9Gb3JtYXQA0QUOUHlVbmljb2RlX1R5cGUD+BILUHlMb25nX1R5cGUD9xIOUHlOdW1iZXJfQ2hlY2sA0gULUHlOdW1iZXJfT3IA0wUMUHlOdW1iZXJfWG9yANUFDFB5TnVtYmVyX0FuZADWBQ9QeU51bWJlcl9Mc2hpZnQA1wUPUHlOdW1iZXJfUnNoaWZ0ANgFEVB5TnVtYmVyX1N1YnRyYWN0ANkFD1B5TnVtYmVyX0Rpdm1vZADaBQxQeU51bWJlcl9BZGQA2wURUHlOdW1iZXJfTXVsdGlwbHkA3AUXUHlOdW1iZXJfTWF0cml4TXVsdGlwbHkA3QUUUHlOdW1iZXJfRmxvb3JEaXZpZGUA3gUTUHlOdW1iZXJfVHJ1ZURpdmlkZQDfBRJQeU51bWJlcl9SZW1haW5kZXIA4AUOUHlOdW1iZXJfUG93ZXIA4QUSUHlOdW1iZXJfSW5QbGFjZU9yAOQFE1B5TnVtYmVyX0luUGxhY2VYb3IA5gUTUHlOdW1iZXJfSW5QbGFjZUFuZADnBRZQeU51bWJlcl9JblBsYWNlTHNoaWZ0AOgFFlB5TnVtYmVyX0luUGxhY2VSc2hpZnQA6QUYUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0AOoFHlB5TnVtYmVyX0luUGxhY2VNYXRyaXhNdWx0aXBseQDrBRtQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUA7AUaUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUA7QUZUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgDuBRNQeU51bWJlcl9JblBsYWNlQWRkAO8FGFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQDwBRVQeU51bWJlcl9JblBsYWNlUG93ZXIA8QURUHlOdW1iZXJfTmVnYXRpdmUA8wURUHlOdW1iZXJfUG9zaXRpdmUA9AUPUHlOdW1iZXJfSW52ZXJ0APUFEVB5TnVtYmVyX0Fic29sdXRlAPYFEFB5RXJyX1dhcm5Gb3JtYXQA7xYOUHlOdW1iZXJfSW5kZXgA+AUMX1B5TG9uZ19Db3B5AJoNDVB5TnVtYmVyX0xvbmcA+QUMUHlFcnJfV2FybkV4APIWGFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdAC+DRFfUHlMb25nX0Zyb21CeXRlcwC9DRBQeUJ5dGVBcnJheV9UeXBlA/YSGV9QeUJ5dGVBcnJheV9lbXB0eV9zdHJpbmcD9RIOUHlOdW1iZXJfRmxvYXQA+gUPUHlMb25nX0FzRG91YmxlAMANElB5RmxvYXRfRnJvbVN0cmluZwDDCw9QeU51bWJlcl9Ub0Jhc2UA+wUOX1B5TG9uZ19Gb3JtYXQAtw0RUHlTZXF1ZW5jZV9MZW5ndGgA/gURUHlTZXF1ZW5jZV9Db25jYXQA/wURUHlTZXF1ZW5jZV9SZXBlYXQAgAYYUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0AIEGGFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdACCBhNQeVNlcXVlbmNlX0dldFNsaWNlAIMGFF9QeVNsaWNlX0Zyb21JbmRpY2VzAPcRE1B5U2VxdWVuY2VfU2V0U2xpY2UAhAYTUHlTZXF1ZW5jZV9EZWxTbGljZQCFBhBQeVNlcXVlbmNlX1R1cGxlAIYGDlB5TGlzdF9Bc1R1cGxlAPAMD19QeVR1cGxlX1Jlc2l6ZQCkEg1QeVNlcUl0ZXJfTmV3AMYMHF9QeU9iamVjdF9OZXh0Tm90SW1wbGVtZW50ZWQAwRAPUHlTZXF1ZW5jZV9MaXN0AIkGFl9QeVNlcXVlbmNlX0l0ZXJTZWFyY2gAiwYQUHlTZXF1ZW5jZV9Db3VudACMBg1QeVNlcXVlbmNlX0luAI0GEFB5U2VxdWVuY2VfSW5kZXgAjgYPUHlNYXBwaW5nX0NoZWNrAI8GEFB5TWFwcGluZ19MZW5ndGgAkAYXUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcAkQYXUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcAkgYWUHlNYXBwaW5nX0hhc0tleVN0cmluZwCTBhBQeU1hcHBpbmdfSGFzS2V5AJQGDlB5TWFwcGluZ19LZXlzAJUGC1B5RGljdF9UeXBlA/QSC1B5RGljdF9LZXlzAKsOD1B5TWFwcGluZ19JdGVtcwCXBgxQeURpY3RfSXRlbXMArQ4QUHlNYXBwaW5nX1ZhbHVlcwCYBg1QeURpY3RfVmFsdWVzAKwOFl9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwA4xgPUHlPYmplY3RfSXNUcnVlALEQE1B5T2JqZWN0X0lzU3ViY2xhc3MAnAYYX1B5T2JqZWN0X1JlYWxJc0luc3RhbmNlAKAGGF9QeU9iamVjdF9SZWFsSXNTdWJjbGFzcwChBhFQeU9iamVjdF9HZXRBSXRlcgCjBg1QeUFJdGVyX0NoZWNrAKQGHV9QeVNlcXVlbmNlX0J5dGVzVG9DaGFycEFycmF5AKYGEl9QeV9GcmVlQ2hhclBBcnJheQCnBgxfUHlBY2N1X0luaXQAqAYSX1B5QWNjdV9BY2N1bXVsYXRlAKkGDVB5TGlzdF9BcHBlbmQA3gwPUHlMaXN0X1NldFNsaWNlAOIMFF9QeUFjY3VfRmluaXNoQXNMaXN0AKsGDl9QeUFjY3VfRmluaXNoAKwGD19QeUFjY3VfRGVzdHJveQCtBg9QeUJvb2xfRnJvbUxvbmcArgYaX1B5X0ZhdGFsUmVmY291bnRFcnJvckZ1bmMAqR0RX1B5QXJnX05vS2V5d29yZHMAjxsQX1B5QXJnX05vS3duYW1lcwCRGxFfUHlfY3R5cGVfdG9sb3dlcgPzEhFfUHlfY3R5cGVfdG91cHBlcgPyEgdtZW1yY2hyAJlCBm1lbWNocgCVQhJfUHlFdmFsX1NsaWNlSW5kZXgAiBkWUHlCeXRlQXJyYXlfRnJvbU9iamVjdADVBh1QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQDWBg1fUHlPYmplY3RfTmV3AKAQD1B5T2JqZWN0X01hbGxvYwCBERBQeUJ5dGVBcnJheV9TaXplANcGFFB5Qnl0ZUFycmF5X0FzU3RyaW5nANgGElB5Qnl0ZUFycmF5X1Jlc2l6ZQDZBg1QeU9iamVjdF9GcmVlAIQREFB5T2JqZWN0X1JlYWxsb2MAgxESUHlCeXRlQXJyYXlfQ29uY2F0ANoGDFB5X2hleGRpZ2l0cwPxEg1fUHlfR2V0Q29uZmlnAPYdElB5RXhjX0J5dGVzV2FybmluZwPwEhRQeUJ5dGVBcnJheUl0ZXJfVHlwZQPvEhBfUHlPYmplY3RfR0NfTmV3AMIgFV9QeUFyZ19VbnBhY2tLZXl3b3JkcwCKGxJfUHlBcmdfQmFkQXJndW1lbnQA+RoZUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZwC/FBVQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMAqw8PUHlPYmplY3RfR0NfRGVsAMUgEV9QeUJ5dGVzX0Zvcm1hdEV4ALgHD19QeUJ5dGVzX1JlcGVhdADTBwdtZW1tb3ZlAM8+El9QeU9iamVjdF9HZXRTdGF0ZQDnEhZQeVVuaWNvZGVfRGVjb2RlTGF0aW4xALYUDV9QeUxvbmdfQXNJbnQAoQ0cUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZwC4FBtQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QArRQQX1B5Qnl0ZXNfRnJvbUhleADGBxNfUHlfc3RyaGV4X3dpdGhfc2VwAOUfDFB5Qnl0ZXNfVHlwZQPuEg5QeUxpc3RfUmV2ZXJzZQDvDBJfUHlFdmFsX0dldEJ1aWx0aW4AgRkTUHlUeXBlX0dlbmVyaWNBbGxvYwC3EhFQeVR5cGVfR2VuZXJpY05ldwC4EhBfUHlfTmV3UmVmZXJlbmNlAKQQD1B5T2JqZWN0X0NhbGxvYwCCERJQeUJ5dGVzX0Zyb21TdHJpbmcArgcTUHlCeXRlc19Gcm9tRm9ybWF0VgCvBxVfUHlCeXRlc1dyaXRlcl9SZXNpemUAsAcVX1B5Qnl0ZXNXcml0ZXJfRmluaXNoALEHE19QeUJ5dGVzV3JpdGVyX0luaXQAsgcUX1B5Qnl0ZXNXcml0ZXJfQWxsb2MAswcZX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcwC0Bw9fUHlCeXRlc19SZXNpemUAtQcWX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYwC2BxJQeUJ5dGVzX0Zyb21Gb3JtYXQAtwcOUHlPYmplY3RfQVNDSUkAqRAZX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcgC7DRVfUHlVbmljb2RlX0Zvcm1hdExvbmcArRUVUHlPU19kb3VibGVfdG9fc3RyaW5nAOEfFl9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUAuwcSX1B5TG9uZ19EaWdpdFZhbHVlA+0SFFB5Qnl0ZXNfRGVjb2RlRXNjYXBlAL0HDFB5Qnl0ZXNfU2l6ZQC+Bw1fUHlCeXRlc19GaW5kAMEHFF9QeUJ5dGVzX1JldmVyc2VGaW5kAMIHDFB5Qnl0ZXNfUmVwcgDDBw1fUHlCeXRlc19Kb2luAMQHElB5Qnl0ZXNfRnJvbU9iamVjdADHBxFQeUVycl9CYWRBcmd1bWVudADMGhBQeUJ5dGVzSXRlcl9UeXBlA+wSDlB5Qnl0ZXNfQ29uY2F0AM8HHF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2VUc3RhdGUAyBoUX1B5X0ZhdGFsRXJyb3JGb3JtYXQAqB0cX1B5T2JqZWN0X0Zhc3RDYWxsRGljdFRzdGF0ZQCJCA9fUHlFcnJfTm9NZW1vcnkAzRoXUHlPYmplY3RfVmVjdG9yY2FsbERpY3QAjAgPX1B5U3RhY2tfQXNEaWN0AI0IDl9QeU9iamVjdF9DYWxsAJIIDVB5T2JqZWN0X0NhbGwAkwgQUHlDRnVuY3Rpb25fQ2FsbACTCBZfUHlGdW5jdGlvbl9WZWN0b3JjYWxsAJUIHVB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzAJYIE1B5T2JqZWN0X0NhbGxPYmplY3QAlwgWX1B5T2JqZWN0X0NhbGxfUHJlcGVuZACYCBVQeU9iamVjdF9DYWxsRnVuY3Rpb24AmQgWX1B5X1ZhQnVpbGRTdGFja19TaXplVADXHBBfUHlfVmFCdWlsZFN0YWNrANQcE1B5RXZhbF9DYWxsRnVuY3Rpb24AmQgcX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVACbCBNQeU9iamVjdF9DYWxsTWV0aG9kAJwIEFB5Q2FsbGFibGVfQ2hlY2sAxxARUHlFdmFsX0NhbGxNZXRob2QAnAgWX1B5T2JqZWN0X0NhbGxNZXRob2RJZACeCBpfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVACfCBxfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUAKAIGlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzAKIIDVB5Q2Fwc3VsZV9OZXcApggOUHlDYXBzdWxlX1R5cGUD6xIRUHlDYXBzdWxlX0lzVmFsaWQApwgUUHlDYXBzdWxlX0dldFBvaW50ZXIAqAgRUHlDYXBzdWxlX0dldE5hbWUAqQgXUHlDYXBzdWxlX0dldERlc3RydWN0b3IAqggUUHlDYXBzdWxlX0dldENvbnRleHQAqwgUUHlDYXBzdWxlX1NldFBvaW50ZXIArAgRUHlDYXBzdWxlX1NldE5hbWUArQgXUHlDYXBzdWxlX1NldERlc3RydWN0b3IArggUUHlDYXBzdWxlX1NldENvbnRleHQArwgQUHlDYXBzdWxlX0ltcG9ydACwCApQeUNlbGxfTmV3ALMIC1B5Q2VsbF9UeXBlA+oSClB5Q2VsbF9HZXQAtAgKUHlDZWxsX1NldAC1CBRQeU9iamVjdF9SaWNoQ29tcGFyZQCtEBFQeU1ldGhvZF9GdW5jdGlvbgC+CA1QeU1ldGhvZF9UeXBlA+kSDVB5TWV0aG9kX1NlbGYAvwgMUHlNZXRob2RfTmV3AMAIFlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMAxRYPX1B5X0hhc2hQb2ludGVyAP4cDVB5T2JqZWN0X0hhc2gAsxAOX1B5VHlwZV9Mb29rdXAAuxIUUHlJbnN0YW5jZU1ldGhvZF9OZXcAyQgVUHlJbnN0YW5jZU1ldGhvZF9UeXBlA+gSGVB5SW5zdGFuY2VNZXRob2RfRnVuY3Rpb24AyggQX1B5Q29kZV9WYWxpZGF0ZQDUCAtfUHlDb2RlX05ldwDVCAtQeUNvZGVfVHlwZQPnEhBfUHlPYmplY3RfTmV3VmFyAKEQEFB5RnJvemVuU2V0X1R5cGUD5hIPUHlGcm96ZW5TZXRfTmV3AMMRGVB5Q29kZV9OZXdXaXRoUG9zT25seUFyZ3MA1wgRUHlVbmljb2RlX0NvbXBhcmUAkxUKUHlDb2RlX05ldwDYCA9QeUNvZGVfTmV3RW1wdHkA2QgZUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdADQFBBQeUNvZGVfQWRkcjJMaW5lANwIF19QeUNvZGVfQ2hlY2tMaW5lTnVtYmVyAN0IFFB5Q29kZV9BZGRyMkxvY2F0aW9uAN4IEF9QeUNvZGVfR2V0RXh0cmEA4AgQX1B5Q29kZV9TZXRFeHRyYQDhCBJQeUNvZGVfR2V0VmFybmFtZXMA4ggSUHlDb2RlX0dldENlbGx2YXJzAOQIElB5Q29kZV9HZXRGcmVldmFycwDlCA5QeUNvZGVfR2V0Q29kZQDmCBNfUHlDb2RlX0NvbnN0YW50S2V5AOsIFFB5Q29tcGxleF9Bc0NDb21wbGV4AIoJEF9QeVNldF9OZXh0RW50cnkAyxESUHlMb25nX0Zyb21Wb2lkUHRyAKsND19QeVVuaWNvZGVfQ29weQCYFAlfUHlfY19zdW0A/wgKX1B5X2NfZGlmZgCACQlfUHlfY19uZWcAgQkKX1B5X2NfcHJvZACCCQpfUHlfY19xdW90AIMJCV9QeV9jX3BvdwCECQVoeXBvdADTQAVhdGFuMgDSPANwb3cAhEMDbG9nAOtBA2V4cAD+PgNzaW4AwkQDY29zALI9CV9QeV9jX2FicwCFCRVQeUNvbXBsZXhfRnJvbURvdWJsZXMAhwkWUHlDb21wbGV4X1JlYWxBc0RvdWJsZQCICRZQeUNvbXBsZXhfSW1hZ0FzRG91YmxlAIkJDl9QeV9IYXNoRG91YmxlAP0cKl9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSQCAFSVfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzAOAfF1B5RXhjX1plcm9EaXZpc2lvbkVycm9yA+USFV9QeVVuaWNvZGVXcml0ZXJfSW5pdACjFBhfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MAtgcXX1B5VW5pY29kZVdyaXRlcl9GaW5pc2gAnRQNUHlDTWV0aG9kX05ldwDaDw9QeU1lbWJlcl9HZXRPbmUAzB4PUHlNZW1iZXJfU2V0T25lAM0eEFB5VHVwbGVfR2V0U2xpY2UAmhIVX1B5TWV0aG9kV3JhcHBlcl9UeXBlA+QSEVB5RGVzY3JfTmV3TWV0aG9kAKwJElB5TWV0aG9kRGVzY3JfVHlwZQPjEhVfUHlPYmplY3RfRnVuY3Rpb25TdHIAqxAWUHlEZXNjcl9OZXdDbGFzc01ldGhvZAC1CRdQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZQPiEhFQeURlc2NyX05ld01lbWJlcgC2CRJQeU1lbWJlckRlc2NyX1R5cGUD4RIRUHlEZXNjcl9OZXdHZXRTZXQAtwkSUHlHZXRTZXREZXNjcl9UeXBlA+ASElB5RGVzY3JfTmV3V3JhcHBlcgC4CRNQeVdyYXBwZXJEZXNjcl9UeXBlA98SDlB5RGVzY3JfSXNEYXRhALkJD1B5RGljdFByb3h5X05ldwC6CRBQeURpY3RQcm94eV9UeXBlA94SE1B5T2JqZWN0X0dDX1VuVHJhY2sAvyANX1B5VHJhc2hfY29uZADUEBFQeVRocmVhZFN0YXRlX0dldADUHQ5fUHlUcmFzaF9iZWdpbgDSEAxfUHlUcmFzaF9lbmQA0xANUHlXcmFwcGVyX05ldwDACRJQeVR5cGVfR2V0UXVhbE5hbWUAzBIPUHlQcm9wZXJ0eV9UeXBlA90SHV9QeVR5cGVfR2V0RG9jRnJvbUludGVybmFsRG9jALASJ19QeVR5cGVfR2V0VGV4dFNpZ25hdHVyZUZyb21JbnRlcm5hbERvYwCyEg9QeURpY3RfQ29udGFpbnMArw4SX1B5QXJnX1VucGFja1N0YWNrAI4bFF9QeU9iamVjdF9Jc0Fic3RyYWN0ALoQHV9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nAJYVD1B5UmV2ZXJzZWRfVHlwZQPcEgtQeUVudW1fVHlwZQPbEhRQeUV4Y2VwdGlvbl9HZXRDYXVzZQD9CRRQeUV4Y2VwdGlvbl9TZXRDYXVzZQD+CRZQeUV4Y2VwdGlvbl9HZXRDb250ZXh0AP8JFlB5RXhjZXB0aW9uX1NldENvbnRleHQAgAoVUHlFeGNlcHRpb25DbGFzc19OYW1lAIEKGFB5RXhjX0Jhc2VFeGNlcHRpb25Hcm91cAPaEiBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZwCFCiBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZwCFCh5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QAhgoeUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0AIcKIVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdACGCh1QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydACICh1QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydACJCiBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydACICh1QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydACKCh1QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydACKCiBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydACKChtQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQAiwobUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kAIwKHlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZACLChtQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQAjQobUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kAI0KHlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZACNCh5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24AjgoeUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uAI4KIVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgCOCh5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24AjwoeUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uAI8KIVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgCPChtQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUAkAofX1B5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZQCRChtQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3ID2RIVUHlFeGNfQmxvY2tpbmdJT0Vycm9yA9gSFVB5RXhjX0Jyb2tlblBpcGVFcnJvcgPXEhdQeUV4Y19DaGlsZFByb2Nlc3NFcnJvcgPWEhxQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yA9USHFB5RXhjX0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3ID1BIaUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3ID0xIVUHlFeGNfRmlsZUV4aXN0c0Vycm9yA9ISF1B5RXhjX0ZpbGVOb3RGb3VuZEVycm9yA9ESF1B5RXhjX0lzQURpcmVjdG9yeUVycm9yA9ASGFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcgPPEhZQeUV4Y19JbnRlcnJ1cHRlZEVycm9yA84SFVB5RXhjX1Blcm1pc3Npb25FcnJvcgPNEhhQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3IDzBISUHlFeGNfVGltZW91dEVycm9yA8sSEFB5TW9kdWxlX0dldERpY3QA/Q8SUHlFcnJfTmV3RXhjZXB0aW9uANgaFlB5RXhjX0Vudmlyb25tZW50RXJyb3IDyhINUHlFeGNfSU9FcnJvcgPJEhZfUHlFcnJfVHJ5U2V0RnJvbUNhdXNlAJMKCVB5U2V0X0FkZADJEQ5QeVNldF9Db250YWlucwDGEQ9QeUZ1bmN0aW9uX1R5cGUDyBILUHlEaWN0X0NvcHkAqQ4SUHlVbmljb2RlX1JlYWRDaGFyAN0UEFB5RXhjX1N5c3RlbUV4aXQDxxIZUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcgPGEhVQeUV4Y19Db25uZWN0aW9uRXJyb3IDxRIOUHlFeGNfRU9GRXJyb3IDxBIUUHlFeGNfUmVjdXJzaW9uRXJyb3IDwxIPUHlFeGNfTmFtZUVycm9yA8ISF1B5RXhjX1VuYm91bmRMb2NhbEVycm9yA8ESGFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcgPAEhRQeUV4Y19Bc3NlcnRpb25FcnJvcgO/EhVQeUV4Y19Bcml0aG1ldGljRXJyb3IDvhIYUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yA70SFFB5RXhjX1JlZmVyZW5jZUVycm9yA7wSDVB5RXhjX1dhcm5pbmcDuxIRUHlFeGNfVXNlcldhcm5pbmcDuhIfUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZwO5EhRQeUV4Y19SdW50aW1lV2FybmluZwO4EhNQeUV4Y19GdXR1cmVXYXJuaW5nA7cSE1B5RXhjX0ltcG9ydFdhcm5pbmcDthIUUHlFeGNfVW5pY29kZVdhcm5pbmcDtRIVUHlFeGNfRW5jb2RpbmdXYXJuaW5nA7QSFVB5RXhjX1Jlc291cmNlV2FybmluZwOzEhdQeU9iamVjdF9HZW5lcmljR2V0RGljdADWDhdQeU9iamVjdF9HZW5lcmljU2V0RGljdADFEBNQeV9HZW5lcmljQWxpYXNUeXBlA7ISIV9QeVVuaWNvZGVXcml0ZXJfV3JpdGVBU0NJSVN0cmluZwCeFBFQeU9iamVjdF9HQ19UcmFjawC+IBlfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyAOIUD19QeUdlbl9GaW5hbGl6ZQDxCg9QeUFzeW5jR2VuX1R5cGUDsRIVUHlFcnJfV3JpdGVVbnJhaXNhYmxlANwaC1B5Q29yb19UeXBlA7ASIVB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYwCjEBNfUHlPYmplY3RfR0NfTmV3VmFyAMMgFVB5R2VuX05ld1dpdGhRdWFsTmFtZQD9Cg9QeUZyYW1lX0dldENvZGUA/gsJUHlHZW5fTmV3AP8KClB5Q29yb19OZXcAhAsOUHlBc3luY0dlbl9OZXcAhwscX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZQOvEhVfUHlFcnJfQ2hhaW5TdGFja0l0ZW0AxxoYX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0AOYYE19QeUNvcm9XcmFwcGVyX1R5cGUDrhIVX1B5QXN5bmNHZW5BU2VuZF9UeXBlA60SFl9QeUFzeW5jR2VuQVRocm93X1R5cGUDrBINUHlGaWxlX0Zyb21GZACtCw5QeUZpbGVfR2V0TGluZQCuCxJQeUZpbGVfV3JpdGVPYmplY3QArwsSUHlGaWxlX1dyaXRlU3RyaW5nALALGVB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IAsQsgX1B5TG9uZ19GaWxlRGVzY3JpcHRvcl9Db252ZXJ0ZXIAsgsJZmxvY2tmaWxlAMU/DWdldGNfdW5sb2NrZWQAk0ALZnVubG9ja2ZpbGUAiEAUUHlGaWxlX05ld1N0ZFByaW50ZXIAtAsRUHlTdGRQcmludGVyX1R5cGUDqxIWUHlGaWxlX1NldE9wZW5Db2RlSG9vawC2CxBQeV9Jc0luaXRpYWxpemVkAIcdFVB5RmlsZV9PcGVuQ29kZU9iamVjdAC3Cw9QeUZpbGVfT3BlbkNvZGUAuAsXX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcAxxQJX1B5X3dyaXRlAJsgDlB5RmxvYXRfR2V0TWF4AL8LDlB5RmxvYXRfR2V0TWluAMALD1B5RmxvYXRfR2V0SW5mbwDBCxRQeVN0cnVjdFNlcXVlbmNlX05ldwCEEhRfUHlVbmljb2RlX0Zyb21BU0NJSQCSFA9fUHlMb25nX051bUJpdHMApw0NX1B5X1N3YXBwZWRPcAOqEgVmcmV4cAD1PwRtb2RmALBCEVB5TG9uZ19Gcm9tRG91YmxlAJ4NDl9QeUxvbmdfTHNoaWZ0AMwNGlB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyAI0SGV9QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMAzwsWX1B5RGVidWdBbGxvY2F0b3JTdGF0cwCGEQ1QeUZsb2F0X1BhY2syANALBWxkZXhwAMZBDVB5RmxvYXRfUGFjazQA0QsNUHlGbG9hdF9QYWNrOADSCw9QeUZsb2F0X1VucGFjazIA0wsPX1B5X2RnX2luZmluaXR5AOgfDV9QeV9kZ19zdGRuYW4A5x8PUHlGbG9hdF9VbnBhY2s0ANQLD1B5RmxvYXRfVW5wYWNrOADVCwRmbW9kANg/ElB5RXJyX1NldEZyb21FcnJubwDSGgVyb3VuZACGRAtfUHlfZGdfZHRvYQDzHw1fUHlfZGdfc3RydG9kAOkfD19QeV9kZ19mcmVlZHRvYQDyHxRfUHlfcGFyc2VfaW5mX29yX25hbgDeHwZzdHJ0b2wAmUUdX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWRXcml0ZXIA/R8VUHlGcmFtZV9HZXRMaW5lTnVtYmVyAPELDFB5RnJhbWVfVHlwZQOpEgtQeUZyYW1lX05ldwD2Cw1QeU1vZHVsZV9UeXBlA6gSHVB5RnJhbWVfRmFzdFRvTG9jYWxzV2l0aEVycm9yAPkLFFB5RnJhbWVfRmFzdFRvTG9jYWxzAPoLFFB5RnJhbWVfTG9jYWxzVG9GYXN0APwLFV9QeUZyYW1lX0lzRW50cnlGcmFtZQD9Cw9QeUZyYW1lX0dldEJhY2sA/wsRUHlGcmFtZV9HZXRMb2NhbHMAgAwSUHlGcmFtZV9HZXRHbG9iYWxzAIIME1B5RnJhbWVfR2V0QnVpbHRpbnMAhAwQUHlGcmFtZV9HZXRMYXN0aQCGDBRQeUZyYW1lX0dldEdlbmVyYXRvcgCHDBtQeUNvbXBpbGVfT3Bjb2RlU3RhY2tFZmZlY3QAvxkaUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUAkgwOUHlGdW5jdGlvbl9OZXcAlAwSUHlGdW5jdGlvbl9HZXRDb2RlAJUMFVB5RnVuY3Rpb25fR2V0R2xvYmFscwCWDBRQeUZ1bmN0aW9uX0dldE1vZHVsZQCXDBZQeUZ1bmN0aW9uX0dldERlZmF1bHRzAJgMFlB5RnVuY3Rpb25fU2V0RGVmYXVsdHMAmQwYUHlGdW5jdGlvbl9HZXRLd0RlZmF1bHRzAJoMGFB5RnVuY3Rpb25fU2V0S3dEZWZhdWx0cwCbDBVQeUZ1bmN0aW9uX0dldENsb3N1cmUAnAwVUHlGdW5jdGlvbl9TZXRDbG9zdXJlAJ0MGVB5RnVuY3Rpb25fR2V0QW5ub3RhdGlvbnMAngwZUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucwCgDBFQeUNsYXNzTWV0aG9kX05ldwCtDBJQeUNsYXNzTWV0aG9kX1R5cGUDpxISUHlTdGF0aWNNZXRob2RfTmV3ALEME1B5U3RhdGljTWV0aG9kX1R5cGUDphIcX1B5SW50ZXJwcmV0ZXJTdGF0ZV9Mb29rVXBJRAC9HRxfUHlJbnRlcnByZXRlclN0YXRlX0lERGVjcmVmAMAdE1B5TG9uZ19Gcm9tTG9uZ0xvbmcArQ0VX1B5SW50ZXJwcmV0ZXJJRF9UeXBlA6USHFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cAsg0bUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzAPoaHF9QeUludGVycHJldGVyU3RhdGVfSURJbmNyZWYAvx0UX1B5SW50ZXJwcmV0ZXJJRF9OZXcAwgwfX1B5SW50ZXJwcmV0ZXJTdGF0ZV9HZXRJRE9iamVjdADDDB1fUHlJbnRlcnByZXRlclN0YXRlX0lESW5pdHJlZgC+HRhQeUludGVycHJldGVyU3RhdGVfR2V0SUQAvB0XX1B5SW50ZXJwcmV0ZXJJRF9Mb29rVXAAxAwRUHlMb25nX0FzTG9uZ0xvbmcArw0OUHlTZXFJdGVyX1R5cGUDpBIOUHlDYWxsSXRlcl9OZXcAyAwPUHlDYWxsSXRlcl9UeXBlA6MSGF9QeUxpc3RfRGVidWdNYWxsb2NTdGF0cwDVDA5QeUxpc3RfU2V0SXRlbQDZDA1QeUxpc3RfSW5zZXJ0ANoMD1B5TGlzdF9HZXRTbGljZQDfDAxQeV9SZXByRW50ZXIA0BAaX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXIA4RQMUHlfUmVwckxlYXZlANEQD1B5TGlzdEl0ZXJfVHlwZQOiEhJQeUxpc3RSZXZJdGVyX1R5cGUDoRIZX1B5RXZhbF9TbGljZUluZGV4Tm90Tm9uZQCJGRtQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQAshALX1B5TG9uZ19OZXcAmQ0XUHlMb25nX0Zyb21VbnNpZ25lZExvbmcAnA0bUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nAJ0NEVB5TG9uZ19Gcm9tU2l6ZV90AJwNFVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwCjDQ9QeUxvbmdfQXNTaXplX3QApA0ZUHlMb25nX0FzVW5zaWduZWRMb25nTWFzawClDRVfUHlMb25nX0Zyb21CeXRlQXJyYXkAqA0QUHlMb25nX0FzVm9pZFB0cgCsDRlQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nALANHVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrALENH19QeUxvbmdfVW5zaWduZWRTaG9ydF9Db252ZXJ0ZXIAsw0dX1B5TG9uZ19VbnNpZ25lZEludF9Db252ZXJ0ZXIAtA0eX1B5TG9uZ19VbnNpZ25lZExvbmdfQ29udmVydGVyALQNIl9QeUxvbmdfVW5zaWduZWRMb25nTG9uZ19Db252ZXJ0ZXIAtQ0YX1B5TG9uZ19TaXplX3RfQ29udmVydGVyALYNIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsAJ8UFF9QeUxvbmdfRm9ybWF0V3JpdGVyALoNDV9QeUxvbmdfRnJleHAAvw0OX1B5TG9uZ19Sc2hpZnQAyg0LX1B5TG9uZ19HQ0QAzg0SX1B5TG9uZ19EaXZtb2ROZWFyANINDlB5TG9uZ19HZXRJbmZvAN8NEF9QeVVuaWNvZGVfRXF1YWwAkhUOUHlPYmplY3RfQnl0ZXMAqhAcX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcgD4HxhfUHlEaWN0X0RlYnVnTWFsbG9jU3RhdHMA/Q0YX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5AP4NFl9QeU9iamVjdF9Bc3NlcnRGYWlsZWQAlxAZX1B5RGljdF9IYXNPbmx5U3RyaW5nS2V5cwCEDgxfUHlEaWN0X05leHQAhg4UX1B5RGljdF9NYXliZVVudHJhY2sAhw4OUHlPYmplY3RfSVNfR0MAwCATX1B5RGljdF9OZXdQcmVzaXplZACIDg5QeURpY3RfR2V0SXRlbQCODgxfUHlFcnJfRmV0Y2gAuhoOX1B5RXJyX1Jlc3RvcmUApxoZX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaACQDhhfUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IAkg4aX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IAkw4eX1B5RGljdF9HZXRJdGVtU3RyaW5nV2l0aEVycm9yAJQOGV9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gAmA4OUHlEaWN0X0RlbEl0ZW0AmQ4SX1B5RXJyX1NldEtleUVycm9yALAaGV9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2gAmw4RX1B5RGljdF9EZWxJdGVtSWYAnA4MUHlEaWN0X0NsZWFyAJ0OC19QeURpY3RfUG9wAJ8OFFB5RGljdF9NZXJnZUZyb21TZXEyAKEOEVB5RGljdF9TZXREZWZhdWx0AKIODVB5RGljdF9VcGRhdGUAow4MUHlEaWN0X01lcmdlAKcOD19QeURpY3RfTWVyZ2VFeACoDhJQeURpY3RJdGVyS2V5X1R5cGUDoBILUHlEaWN0X1NpemUAqg4OX1B5RGljdF9TaXplT2YArg4aX1B5RGljdF9Db250YWluc19Lbm93bkhhc2gAsA4SX1B5RGljdF9Db250YWluc0lkALEOHlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cwCJGxRQeURpY3RfR2V0SXRlbVN0cmluZwC7DhFfUHlEaWN0X1NldEl0ZW1JZAC8DhFfUHlEaWN0X0RlbEl0ZW1JZAC+DhRQeURpY3RfRGVsSXRlbVN0cmluZwC/DhVQeURpY3RSZXZJdGVyS2V5X1R5cGUDnxIXUHlEaWN0UmV2SXRlclZhbHVlX1R5cGUDnhIPX1B5RGljdFZpZXdfTmV3AMYOFV9QeURpY3RWaWV3X0ludGVyc2VjdADHDg9QeURpY3RLZXlzX1R5cGUDnRIQUHlEaWN0SXRlbXNfVHlwZQOcEhNQeURpY3RJdGVySXRlbV9UeXBlA5sSFFB5RGljdEl0ZXJWYWx1ZV9UeXBlA5oSFlB5RGljdFJldkl0ZXJJdGVtX1R5cGUDmRIRUHlEaWN0VmFsdWVzX1R5cGUDmBIMUHlPRGljdF9UeXBlA5cSEFB5T0RpY3RJdGVyX1R5cGUDlhILUHlPRGljdF9OZXcA/A4PUHlPRGljdF9TZXRJdGVtAP0OFl9QeUVycl9DaGFpbkV4Y2VwdGlvbnMAxhoPUHlPRGljdF9EZWxJdGVtAIAPEFB5T0RpY3RLZXlzX1R5cGUDlRISUHlPRGljdFZhbHVlc19UeXBlA5QSEVB5T0RpY3RJdGVtc19UeXBlA5MSF1B5TWVtb3J5Vmlld19Gcm9tTWVtb3J5AKMPFV9QeU1hbmFnZWRCdWZmZXJfVHlwZQOSEhFQeU1lbW9yeVZpZXdfVHlwZQOREhdQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcgCmDxpQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwCoDxdQeVVuaWNvZGVfQXNBU0NJSVN0cmluZwD2FA9QeUNGdW5jdGlvbl9OZXcA2Q8RUHlDRnVuY3Rpb25fTmV3RXgA2w8OUHlDTWV0aG9kX1R5cGUDkBIXUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24A4Q8TUHlDRnVuY3Rpb25fR2V0U2VsZgDiDxRQeUNGdW5jdGlvbl9HZXRGbGFncwDjDxBQeU1vZHVsZURlZl9Jbml0APAPEFB5TW9kdWxlRGVmX1R5cGUDjxISUHlNb2R1bGVfTmV3T2JqZWN0APEPDFB5TW9kdWxlX05ldwDzDxdfUHlJbXBvcnRfSXNJbml0aWFsaXplZADMGxtfUHlNb2R1bGVfQ3JlYXRlSW5pdGlhbGl6ZWQA9Q8SX1B5X1BhY2thZ2VDb250ZXh0A44SB3N0cnJjaHIAh0UWUHlNb2R1bGVfR2V0TmFtZU9iamVjdAD2DxVQeU1vZHVsZV9TZXREb2NTdHJpbmcA+Q8YUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyAPoPEFB5TW9kdWxlX0V4ZWNEZWYA+w8QUHlNb2R1bGVfR2V0TmFtZQD8DxpQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAD+DxRQeU1vZHVsZV9HZXRGaWxlbmFtZQD/Dw9QeU1vZHVsZV9HZXREZWYAgBARUHlNb2R1bGVfR2V0U3RhdGUAgRAPX1B5TW9kdWxlX0NsZWFyAIIQE19QeU1vZHVsZV9DbGVhckRpY3QAgxAcX1B5TW9kdWxlU3BlY19Jc0luaXRpYWxpemluZwCEEBJQeVN5c19Gb3JtYXRTdGRlcnIAgB8RX1B5TmFtZXNwYWNlX1R5cGUDjRIQX1B5TmFtZXNwYWNlX05ldwCUEBpfUHlPYmplY3RfQ2hlY2tDb25zaXN0ZW5jeQCWEBhfUHlUeXBlX0NoZWNrQ29uc2lzdGVuY3kArxIbX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5AP0TEV9QeU9iamVjdF9Jc0ZyZWVkAJgQCGZpcHJpbnRmAOs/BmZ3cml0ZQCOQAVmcHV0YwDtPw5fUHlPYmplY3RfRHVtcACZEAlQeV9JbmNSZWYAmhAJUHlfRGVjUmVmAJsQCl9QeV9JbmNSZWYAnBAKX1B5X0RlY1JlZgCdEA1QeU9iamVjdF9Jbml0AJ4QFl9QeV90cmFjZW1hbGxvY19jb25maWcDjBIQUHlPYmplY3RfSW5pdFZhcgCfEBZQeU9iamVjdF9DYWxsRmluYWxpemVyAKIQDlB5T2JqZWN0X1ByaW50AKUQBmZlcnJvcgCuPw5fUHlfQnJlYWtQb2ludACoEBFQeUdJTFN0YXRlX0Vuc3VyZQDmHRJQeUdJTFN0YXRlX1JlbGVhc2UA5x0YX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nAMsUFVB5VW5pY29kZV9EZWNvZGVBU0NJSQCxFCBfUHlPYmplY3RfR2VuZXJpY0dldEF0dHJXaXRoRGljdACvEBZQeU9iamVjdF9IYXNBdHRyU3RyaW5nALcQFl9QeU9iamVjdF9Mb29rdXBBdHRySWQAvhAUX1B5T2JqZWN0X0dldERpY3RQdHIAwBAgX1B5T2JqZWN0X0dlbmVyaWNTZXRBdHRyV2l0aERpY3QAwxAMUHlPYmplY3RfTm90AMYQEFB5RXZhbF9HZXRMb2NhbHMAgxkYX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzAM8QGV9QeVR1cGxlX0RlYnVnTWFsbG9jU3RhdHMAphIVUHlUaHJlYWRTdGF0ZV9HZXREaWN0ANcdHVB5T2JqZWN0X0dFVF9XRUFLUkVGU19MSVNUUFRSANYQCVB5X05ld1JlZgC4AgpQeV9YTmV3UmVmANcQBVB5X0lzANgQCVB5X0lzTm9uZQDZEAlQeV9Jc1RydWUA2hAKUHlfSXNGYWxzZQDbEAxfUHlOb25lX1R5cGUDixIWX1B5Tm90SW1wbGVtZW50ZWRfVHlwZQOKEhNQeUNvbnRleHRUb2tlbl9UeXBlA4kSEVB5Q29udGV4dFZhcl9UeXBlA4gSDlB5Q29udGV4dF9UeXBlA4cSD1B5RWxsaXBzaXNfVHlwZQOGEg1QeUZpbHRlcl9UeXBlA4USFFB5TG9uZ1JhbmdlSXRlcl9UeXBlA4QSClB5TWFwX1R5cGUDgxITUHlQaWNrbGVCdWZmZXJfVHlwZQOCEhBQeVJhbmdlSXRlcl9UeXBlA4ESDFB5UmFuZ2VfVHlwZQOAEg5QeVNldEl0ZXJfVHlwZQP/EQxQeVN1cGVyX1R5cGUD/hEQUHlUdXBsZUl0ZXJfVHlwZQP9ERJQeVVuaWNvZGVJdGVyX1R5cGUD/BEKUHlaaXBfVHlwZQP7ERxfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlA/oRFF9QeVdlYWtyZWZfUHJveHlUeXBlA/kREl9QeVdlYWtyZWZfUmVmVHlwZQP4ERpfUHlNZW1fU2V0RGVmYXVsdEFsbG9jYXRvcgDfEBdfUHlNZW1fR2V0QWxsb2NhdG9yTmFtZQDkEBZfUHlNZW1fU2V0dXBBbGxvY2F0b3JzAOUQBmNhbGxvYwD6RgdyZWFsbG9jAOVGElB5TWVtX1NldEFsbG9jYXRvcgDuEBVQeU1lbV9TZXR1cERlYnVnSG9va3MA7xAeX1B5TWVtX0dldEN1cnJlbnRBbGxvY2F0b3JOYW1lAPAQEFB5R0lMU3RhdGVfQ2hlY2sA5R0SUHlNZW1fR2V0QWxsb2NhdG9yAPIQGlB5T2JqZWN0X0dldEFyZW5hQWxsb2NhdG9yAPMQGlB5T2JqZWN0X1NldEFyZW5hQWxsb2NhdG9yAPUQD1B5TWVtX1Jhd01hbGxvYwD2EA9QeU1lbV9SYXdDYWxsb2MA9xAQX1B5TWVtX1Jhd1djc2R1cAD+EAZ3Y3NsZW4As0YQX1B5TWVtX1Jhd1N0cmR1cAD/EA1fUHlNZW1fU3RyZHVwAIARFl9QeV9HZXRBbGxvY2F0ZWRCbG9ja3MAhREZUHlQaWNrbGVCdWZmZXJfRnJvbU9iamVjdACKERhQeVBpY2tsZUJ1ZmZlcl9HZXRCdWZmZXIAixEWUHlQaWNrbGVCdWZmZXJfUmVsZWFzZQCMERdfUHlTbGljZV9HZXRMb25nSW5kaWNlcwD8EQpQeVNldF9TaXplAMQRC1B5U2V0X0NsZWFyAMURCVB5U2V0X1BvcADMEQ1fUHlVbmljb2RlX0VRAJkVDF9QeVNldF9EdW1teQP3EQtQeVNsaWNlX05ldwD2ERJQeVNsaWNlX0dldEluZGljZXMA+BEUUHlTbGljZV9HZXRJbmRpY2VzRXgA+xEYUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtAIUSGFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQCGEhpfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZQCHEhlQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlAI4SGV9QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUAkBIYUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlAJESHVB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkA/YRD1B5VHVwbGVfU2V0SXRlbQCWEhVfUHlUdXBsZV9NYXliZVVudHJhY2sAlxITX1B5T2JqZWN0X0dDX1Jlc2l6ZQDEIBFQeVR5cGVfQ2xlYXJDYWNoZQCzEg9QeVR5cGVfTW9kaWZpZWQAtBIZX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWxJZAC+Eg9QeVR5cGVfR2V0RmxhZ3MAvxIYUHlUeXBlX1NVUFBPUlRTX1dFQUtSRUZTAMASGl9QeVR5cGVfQ2FsY3VsYXRlTWV0YWNsYXNzAMESGFB5VHlwZV9Gcm9tTW9kdWxlQW5kU3BlYwDDEhNfUHlXZWFrcmVmX0NsZWFyUmVmALAWD1B5VHlwZV9Gcm9tU3BlYwDJEg5QeVR5cGVfR2V0TmFtZQDKEg5QeVR5cGVfR2V0U2xvdADOEhBQeVR5cGVfR2V0TW9kdWxlAM8SFVB5VHlwZV9HZXRNb2R1bGVTdGF0ZQDQEhVQeVR5cGVfR2V0TW9kdWxlQnlEZWYA0RIQX1B5VHlwZV9Mb29rdXBJZADSEhBQeUFyZ19QYXJzZVR1cGxlAPAaFlB5VW5pY29kZV9Jc0lkZW50aWZpZXIAnxURUHlFdmFsX0dldEdsb2JhbHMAhBkQUHlXZWFrcmVmX05ld1JlZgDCFhJQeUltcG9ydF9HZXRNb2R1bGUA0RsPUHlJbXBvcnRfSW1wb3J0AMYbE19QeV9HZXRFcnJvckhhbmRsZXIA/BMdX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMA/xMYUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzAIEUEFB5VW5pY29kZV9SZXNpemUAhBQVUHlVbmljb2RlX0Zyb21Vbmljb2RlAIgUFlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIAiRQZUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YQCTFBZfUHlVbmljb2RlX0ZpbmRNYXhDaGFyAJcUEFB5VW5pY29kZV9Bc1VDUzQAmRQUUHlVbmljb2RlX0FzVUNTNENvcHkAmxQOUHlVbmljb2RlX0ZpbGwAoBQiX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUxhdGluMVN0cmluZwCiFBRQeVVuaWNvZGVfQXNXaWRlQ2hhcgClFBpQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZwCmFCNfUHlVbmljb2RlX1dpZGVDaGFyU3RyaW5nX0NvbnZlcnRlcgCnFBpQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZQCoFBRfUHlVbmljb2RlX0FzVW5pY29kZQCpFCdfUHlVbmljb2RlX1dpZGVDaGFyU3RyaW5nX09wdF9Db252ZXJ0ZXIAqhQVUHlVbmljb2RlX0Zyb21PcmRpbmFsAKsUFFB5VW5pY29kZV9Gcm9tT2JqZWN0AKwUHV9QeUludGVycHJldGVyU3RhdGVfR2V0Q29uZmlnAM4dD19QeUNvZGVjX0xvb2t1cACQGRNQeUNvZGVjX0xvb2t1cEVycm9yAKMZHVB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsAK8UHVB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsALAUE19QeUNvZGVjX0RlY29kZVRleHQAoRkVUHlVbmljb2RlX0RlY29kZVVURjE2ALMUFVB5VW5pY29kZV9EZWNvZGVVVEYzMgC0FBlQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0ALcUDlB5Q29kZWNfRGVjb2RlAJ0ZGlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlALkUGVB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QAuhQOUHlDb2RlY19FbmNvZGUAmxkWUHlVbmljb2RlX0VuY29kZUxvY2FsZQC7FBJfUHlfRW5jb2RlTG9jYWxlRXgAjCAUUHlDb2RlY19TdHJpY3RFcnJvcnMApBkZUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAC9FBZfUHlVbmljb2RlX0VuY29kZVVURjE2AMMUFl9QeVVuaWNvZGVfRW5jb2RlVVRGMzIAxBQZX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZwDGFBNfUHlDb2RlY19FbmNvZGVUZXh0AKAZBndjc2NtcACtRhpQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQDMFB1QeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZQDNFBJfUHlfRGVjb2RlTG9jYWxlRXgAhyAWUHlVbmljb2RlX0RlY29kZUxvY2FsZQDPFCBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQDRFBVQeVVuaWNvZGVfRlNDb252ZXJ0ZXIA0xQLUHlPU19GU1BhdGgAmi8TUHlVbmljb2RlX0ZTRGVjb2RlcgDUFBNQeVVuaWNvZGVfQXNVbmljb2RlANoUEVB5VW5pY29kZV9HZXRTaXplANsUE1B5VW5pY29kZV9HZXRMZW5ndGgA3BQTUHlVbmljb2RlX1dyaXRlQ2hhcgDeFBRQeVVuaWNvZGVfRGVjb2RlVVRGNwDfFBxQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsAOAUFV9QeVVuaWNvZGVfRW5jb2RlVVRGNwDjFBBfUHlfRGVjb2RlVVRGOEV4AOUUHl9QeV9EZWNvZGVVVEY4X3N1cnJvZ2F0ZWVzY2FwZQDmFBBfUHlfRW5jb2RlVVRGOEV4AOcUF1B5VW5pY29kZV9Bc1VURjMyU3RyaW5nAOkUF1B5VW5pY29kZV9Bc1VURjE2U3RyaW5nAOoUJl9QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZVN0YXRlZnVsAOwUHVB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlAO0UH1B5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcA7hQpX1B5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlU3RhdGVmdWwA7xQgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUA8BQiUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwDxFBhQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcA9BQkX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsAPUUF1B5VW5pY29kZV9EZWNvZGVDaGFybWFwAPcUGlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwAPgUGF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcAD5FBlQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nAPwUE1B5VW5pY29kZV9UcmFuc2xhdGUA/RQXX1B5VW5pY29kZV9Jc1doaXRlc3BhY2UAkRYZX1B5VW5pY29kZV9Ub0RlY2ltYWxEaWdpdACXFiJfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nAIEVD1B5VW5pY29kZV9Db3VudACDFQ5QeVVuaWNvZGVfRmluZACJFRJQeVVuaWNvZGVfRmluZENoYXIAixUTUHlVbmljb2RlX1RhaWxtYXRjaACMFRRfUHlVbmljb2RlX0pvaW5BcnJheQCPFRNfUHlVbmljb2RlX0Zhc3RGaWxsAJAVFFB5VW5pY29kZV9TcGxpdGxpbmVzAJEVFl9QeVVuaWNvZGVfSXNMaW5lYnJlYWsAkhYHd21lbWNtcADbRhlfUHlVbmljb2RlX0VxdWFsVG9BU0NJSUlkAJcVFVB5VW5pY29kZV9SaWNoQ29tcGFyZQCYFRJQeVVuaWNvZGVfQ29udGFpbnMAmhUQUHlVbmljb2RlX0NvbmNhdACbFRBQeVVuaWNvZGVfQXBwZW5kAJwVFV9QeVVuaWNvZGVfSXNYaWRTdGFydACVFhhfUHlVbmljb2RlX0lzWGlkQ29udGludWUAlhYRX1B5VW5pY29kZV9YU3RyaXAAoBURUHlVbmljb2RlX1JlcGxhY2UAoxUPUHlVbmljb2RlX1NwbGl0AKYVFF9QeV9hc2NpaV93aGl0ZXNwYWNlA/URE1B5VW5pY29kZV9QYXJ0aXRpb24AqBUUUHlVbmljb2RlX1JQYXJ0aXRpb24AqRUQUHlVbmljb2RlX1JTcGxpdACqFR9fUHlVbmljb2RlV3JpdGVyX1dyaXRlU3Vic3RyaW5nAKwVEFB5VW5pY29kZV9Gb3JtYXQArhUZX1B5RXJyX1dyaXRlVW5yYWlzYWJsZU1zZwDbGhhQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwAtRUOUHlJbml0X19zdHJpbmcAuxUWX1B5VW5pY29kZV9Jc0xvd2VyY2FzZQCdFhZfUHlVbmljb2RlX0lzVXBwZXJjYXNlAJ4WFl9QeVVuaWNvZGVfSXNUaXRsZWNhc2UAlBYZX1B5VW5pY29kZV9Jc0RlY2ltYWxEaWdpdACYFhJfUHlVbmljb2RlX0lzRGlnaXQAmhYUX1B5VW5pY29kZV9Jc051bWVyaWMAmxYSX1B5VW5pY29kZV9Jc0FscGhhAKcWH19QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWRXcml0ZXIA9B8WX1B5VW5pY29kZV9Ub1RpdGxlRnVsbACiFhpfUHlVbmljb2RlX0lzQ2FzZUlnbm9yYWJsZQCmFhJfUHlVbmljb2RlX0lzQ2FzZWQApRYWX1B5VW5pY29kZV9Ub0xvd2VyRnVsbAChFhdfUHlVbmljb2RlX1RvRm9sZGVkRnVsbACkFhZfUHlVbmljb2RlX1RvVXBwZXJGdWxsAKMWFF9QeVVuaWNvZGVfVG9OdW1lcmljAJAWFl9QeVVuaWNvZGVfVG9UaXRsZWNhc2UAkxYSX1B5VW5pY29kZV9Ub0RpZ2l0AJkWFl9QeVVuaWNvZGVfVG9VcHBlcmNhc2UAnxYWX1B5VW5pY29kZV9Ub0xvd2VyY2FzZQCgFhpfUHlXZWFrcmVmX0dldFdlYWtyZWZDb3VudACvFhJQeVdlYWtyZWZfTmV3UHJveHkAwxYTUHlXZWFrcmVmX0dldE9iamVjdADEFhVQeUVycl9SZXNvdXJjZVdhcm5pbmcA8RYSUHlFcnJfV2FybkV4cGxpY2l0APcWGFB5RXJyX1dhcm5FeHBsaWNpdEZvcm1hdAD4FhBfUHlfSXNGaW5hbGl6aW5nAIUdEF9QeVdhcm5pbmdzX0luaXQA+hYWUHlUaHJlYWRTdGF0ZV9HZXRGcmFtZQDYHQ5fUHlTeXNfR2V0QXR0cgDkHhVfUHlfRGlzcGxheVNvdXJjZUxpbmUAzR8VUHlNb2R1bGVfQWRkT2JqZWN0UmVmANgcC1B5SW5pdF9fYXN0ALwXFFB5X0dldFJlY3Vyc2lvbkxpbWl0AOEYF1B5TW9kdWxlX0FkZEludENvbnN0YW50ANocEFB5SW5pdF9fdG9rZW5pemUA5RcQUHlNb2R1bGVfQWRkVHlwZQDcHAhzbnByaW50ZgDMRCBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdADnGxlQeUV2YWxfTWVyZ2VDb21waWxlckZsYWdzAIUZDF9QeUFyZW5hX05ldwD5HA1fUHlBcmVuYV9GcmVlAPocDl9QeUFTVF9Db21waWxlALQZEl9QeV9Tb3VyY2VBc1N0cmluZwCYHhZQeV9Db21waWxlU3RyaW5nT2JqZWN0AJYeElB5RXZhbF9HZXRCdWlsdGlucwCAGQ9QeUV2YWxfRXZhbENvZGUA5BgRUHlSdW5fU3RyaW5nRmxhZ3MAjB4RUHlFdmFsX0V2YWxDb2RlRXgA9BgfX1B5QXJnX1VucGFja0tleXdvcmRzV2l0aFZhcmFyZwCLGxlfUHlFdmFsX1NldFN3aXRjaEludGVydmFsAMoYGV9QeUV2YWxfR2V0U3dpdGNoSW50ZXJ2YWwAyxgZX1B5X0ZhdGFsRXJyb3JfVHN0YXRlTlVMTADMGBlQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkAM0YFFB5VGhyZWFkX2luaXRfdGhyZWFkAKwfEnB0aHJlYWRfbXV0ZXhfaW5pdADEORJwdGhyZWFkX211dGV4X2xvY2sA3BAWcHRocmVhZF9jb25kX3RpbWVkd2FpdADjAhRwdGhyZWFkX211dGV4X3VubG9jawDcEBNwdGhyZWFkX2NvbmRfc2lnbmFsANwQFFB5VGhyZWFkX2V4aXRfdGhyZWFkALEfGVB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQAsB8UcHRocmVhZF9jb25kX2Rlc3Ryb3kA3BAVcHRocmVhZF9tdXRleF9kZXN0cm95ANwQElB5RXZhbF9Jbml0VGhyZWFkcwCoEBJQeUV2YWxfQWNxdWlyZUxvY2sA0xgSUHlFdmFsX1JlbGVhc2VMb2NrANQYEXB0aHJlYWRfY29uZF93YWl0AMQ5FFB5RXZhbF9BY3F1aXJlVGhyZWFkANYYE19QeVRocmVhZFN0YXRlX1N3YXAAuh0UUHlFdmFsX1JlbGVhc2VUaHJlYWQA1xgYX1B5VGhyZWFkX2F0X2ZvcmtfcmVpbml0ALYfG19QeVRocmVhZFN0YXRlX0RlbGV0ZUV4Y2VwdADSHRZfUHlFdmFsX1NpZ25hbEFzeW5jRXhjANgYFl9QeUV2YWxfU2lnbmFsUmVjZWl2ZWQA2xgWX1B5RXZhbF9BZGRQZW5kaW5nQ2FsbADcGBFQeV9BZGRQZW5kaW5nQ2FsbADdGAxfUHlFcnJfUHJpbnQAjh4TUHlfTWFrZVBlbmRpbmdDYWxscwDfGBlfUHlFcnJfQ2hlY2tTaWduYWxzVHN0YXRlALMwElB5VGhyZWFkX2ZyZWVfbG9jawCzHxRQeV9TZXRSZWN1cnNpb25MaW1pdADiGBBQeUV2YWxfRXZhbEZyYW1lAOgYElB5RXZhbF9FdmFsRnJhbWVFeADpGBBQeVRyYWNlQmFja19IZXJlAMkfDl9QeUVycl9TZXROb25lALEaFFB5RXJyX1NldEltcG9ydEVycm9yANQaEFB5RXJyX1NldEV4Y0luZm8AxBoZX1B5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgC5GhpfUHlFcnJfR2V0VG9wbW9zdEV4Y2VwdGlvbgCpGhBfUHlFcnJfU2V0T2JqZWN0AKoaGlB5VGhyZWFkU3RhdGVfRW50ZXJUcmFjaW5nAPUYGlB5VGhyZWFkU3RhdGVfTGVhdmVUcmFjaW5nAPYYEl9QeUV2YWxfU2V0UHJvZmlsZQD3GBFQeUV2YWxfU2V0UHJvZmlsZQD4GBBfUHlFdmFsX1NldFRyYWNlAPkYD1B5RXZhbF9TZXRUcmFjZQD6GA9QeUV2YWxfR2V0RnJhbWUA/hgUX1B5RXZhbF9HZXRCdWlsdGluSWQAghkSUHlFdmFsX0dldEZ1bmNOYW1lAIYZElB5RXZhbF9HZXRGdW5jRGVzYwCHGR1fUHlFdmFsX1JlcXVlc3RDb2RlRXh0cmFJbmRleACKGRBQeUNvZGVjX1JlZ2lzdGVyAI0ZElB5Q29kZWNfVW5yZWdpc3RlcgCPGRZQeUludGVycHJldGVyU3RhdGVfR2V0ALsdFVB5Q29kZWNfS25vd25FbmNvZGluZwCRGSJfUHlDb2RlY0luZm9fR2V0SW5jcmVtZW50YWxEZWNvZGVyAJIZIl9QeUNvZGVjSW5mb19HZXRJbmNyZW1lbnRhbEVuY29kZXIAlBkPUHlDb2RlY19FbmNvZGVyAJUZD1B5Q29kZWNfRGVjb2RlcgCWGRpQeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgCXGRpQeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgCYGRRQeUNvZGVjX1N0cmVhbVJlYWRlcgCZGRRQeUNvZGVjX1N0cmVhbVdyaXRlcgCaGRtfUHlDb2RlY19Mb29rdXBUZXh0RW5jb2RpbmcAnxkVUHlDb2RlY19SZWdpc3RlckVycm9yAKIZFFB5Q29kZWNfSWdub3JlRXJyb3JzAKUZFVB5Q29kZWNfUmVwbGFjZUVycm9ycwCmGR9QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzAKcZHlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycwCoGRlQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzAKkZI1B5Q29tcGlsZV9PcGNvZGVTdGFja0VmZmVjdFdpdGhKdW1wAL0ZD1B5Q29kZV9PcHRpbWl6ZQDAGRFQeVN5bXRhYmxlX0xvb2t1cADhHhdQeUVycl9Qcm9ncmFtVGV4dE9iamVjdADkGhpfUHlDb250ZXh0X05ld0hhbXRGb3JUZXN0cwD+GQ1QeUNvbnRleHRfTmV3AP8ZDlB5Q29udGV4dF9Db3B5AIEaFVB5Q29udGV4dF9Db3B5Q3VycmVudACCGg9QeUNvbnRleHRfRW50ZXIAgxoOUHlDb250ZXh0X0V4aXQAhBoQUHlDb250ZXh0VmFyX05ldwCGGhBQeUNvbnRleHRWYXJfR2V0AIgaEFB5Q29udGV4dFZhcl9TZXQAiRoSUHlDb250ZXh0VmFyX1Jlc2V0AIoaEV9QeUVycl9HZXRFeGNJbmZvAL4aGl9QeUVycl9HZXRIYW5kbGVkRXhjZXB0aW9uAL8aGVB5RXJyX0dldEhhbmRsZWRFeGNlcHRpb24AwBoaX1B5RXJyX1NldEhhbmRsZWRFeGNlcHRpb24AwRoZUHlFcnJfU2V0SGFuZGxlZEV4Y2VwdGlvbgDCGhBQeUVycl9HZXRFeGNJbmZvAMMaHl9QeUVycl9TdGFja0l0ZW1Ub0V4Y0luZm9UdXBsZQDFGiRQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QAzxolUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0cwDQGghzdHJlcnJvcgD2RBxQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzANMaFVB5RXJyX0JhZEludGVybmFsQ2FsbADWGg1QeUVycl9Gb3JtYXRWANcaGVB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MA2RoRUHlUcmFjZUJhY2tfUHJpbnQA0B8WX1B5VHJhY2VCYWNrX0Zyb21GcmFtZQDIHxRQeUVycl9TeW50YXhMb2NhdGlvbgDdGhZQeUVycl9TeW50YXhMb2NhdGlvbkV4AN4aGlB5RXJyX1N5bnRheExvY2F0aW9uT2JqZWN0AOAaIFB5RXJyX1JhbmdlZFN5bnRheExvY2F0aW9uT2JqZWN0AOIaEVB5RXJyX1Byb2dyYW1UZXh0AOMaDV9QeV9mb3Blbl9vYmoAmSANUHlfRnJvemVuTWFpbgDrGhVfUHlSdW50aW1lX0luaXRpYWxpemUAgx0JUHlfR0VURU5WAIQcDlB5X1ZlcmJvc2VGbGFnA/QRDVB5X0dldFZlcnNpb24AlxsPUHlfR2V0Q29weXJpZ2h0AJUbG1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQDmGxRQeVJ1bl9BbnlGaWxlRXhGbGFncwCGHg1QeV9GaW5hbGl6ZUV4AJwdC1B5QXJnX1BhcnNlAO0aEl9QeUFyZ19QYXJzZV9TaXplVADvGhFfUHlBcmdfUGFyc2VTdGFjawDyGg1QeUFyZ19WYVBhcnNlAPcaFF9QeUFyZ19WYVBhcnNlX1NpemVUAPgaHVB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzAP4aJF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAD/GiBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdACAGyZfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVACCGxxfUHlBcmdfUGFyc2VTdGFja0FuZEtleXdvcmRzAIMbIl9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QAhxsoX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVACIGxNfUHlBcmdfTm9Qb3NpdGlvbmFsAJAbDlB5X0dldENvbXBpbGVyAJQbDlB5X0dldFBsYXRmb3JtAJYbClB5X1ZlcnNpb24D8xEWX1B5X2hhc2h0YWJsZV9oYXNoX3B0cgC6GxJfUHlfSGFzaFBvaW50ZXJSYXcA/xwcX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdADYEBJfUHlfaGFzaHRhYmxlX3NpemUAuxsTX1B5X2hhc2h0YWJsZV9zdGVhbAC9GxFfUHlfaGFzaHRhYmxlX3NldAC+GxFfUHlfaGFzaHRhYmxlX2dldAC/GxVfUHlfaGFzaHRhYmxlX2ZvcmVhY2gAwBsWX1B5X2hhc2h0YWJsZV9uZXdfZnVsbADBGxFfUHlfaGFzaHRhYmxlX25ldwDDGxNfUHlfaGFzaHRhYmxlX2NsZWFyAMQbFV9QeV9oYXNodGFibGVfZGVzdHJveQDFGxVfUHlJbXBvcnRfQWNxdWlyZUxvY2sAyBsVX1B5SW1wb3J0X1JlbGVhc2VMb2NrAMkbEFB5SW1wb3J0X0luaXR0YWID8hEVX1B5SW1wb3J0X0dldE1vZHVsZUlkAM0bE19QeUltcG9ydF9TZXRNb2R1bGUA0hsZX1B5SW1wb3J0X1NldE1vZHVsZVN0cmluZwDTGxdQeUltcG9ydF9HZXRNYWdpY051bWJlcgDUGxRQeUltcG9ydF9HZXRNYWdpY1RhZwDVGx5fUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QA1hsSX1B5U3RhdGVfQWRkTW9kdWxlAMsdFl9QeUltcG9ydF9GaXh1cEJ1aWx0aW4A1xsYUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0ANgbElB5SW1wb3J0X0FkZE1vZHVsZQDaGxdQeUltcG9ydF9FeGVjQ29kZU1vZHVsZQDbGx1QeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdADcGyRQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMA3RsZUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeADeGxRQeUltcG9ydF9HZXRJbXBvcnRlcgDiGyFQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QA4xsZX1B5SW1wb3J0X0Zyb3plbkJvb3RzdHJhcAPxERZQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzA/ARFl9QeUltcG9ydF9Gcm96ZW5TdGRsaWID7xEUX1B5SW1wb3J0X0Zyb3plblRlc3QD7hEeUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nALscHFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sAxxsWX1B5VGltZV9HZXRQZXJmQ291bnRlcgDCHhZfUHlUaW1lX0FzTWljcm9zZWNvbmRzALgeGlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsAOgbFVB5SW1wb3J0X1JlbG9hZE1vZHVsZQDpGwtQeUluaXRfX2ltcADqGxZQeUltcG9ydF9FeHRlbmRJbml0dGFiAO0bF19QeUltcG9ydF9HZXRNb2R1bGVBdHRyAO8bHV9QeUltcG9ydF9HZXRNb2R1bGVBdHRyU3RyaW5nAPAbGFB5X0lnbm9yZUVudmlyb25tZW50RmxhZwPtEQZnZXRlbnYAmkALUHlTdGF0dXNfT2sAhRwOUHlTdGF0dXNfRXJyb3IAhhwRUHlTdGF0dXNfTm9NZW1vcnkAhxwNUHlTdGF0dXNfRXhpdACIHBBQeVN0YXR1c19Jc0Vycm9yAIkcD1B5U3RhdHVzX0lzRXhpdACKHBdfUHlXaWRlU3RyaW5nTGlzdF9DbGVhcgCNHBZfUHlXaWRlU3RyaW5nTGlzdF9Db3B5AI4cF1B5V2lkZVN0cmluZ0xpc3RfSW5zZXJ0AI8cF1B5V2lkZVN0cmluZ0xpc3RfQXBwZW5kAJAcGF9QeVdpZGVTdHJpbmdMaXN0X0V4dGVuZACRHBhfUHlXaWRlU3RyaW5nTGlzdF9Bc0xpc3QAkhwcUHlfU2V0U3RhbmRhcmRTdHJlYW1FbmNvZGluZwCTHB9fUHlfQ2xlYXJTdGFuZGFyZFN0cmVhbUVuY29kaW5nAJQcEV9QeV9DbGVhckFyZ2NBcmd2AJUcDlB5X0dldEFyZ2NBcmd2AJYcGl9QeUNvbmZpZ19Jbml0Q29tcGF0Q29uZmlnAJgcG1B5Q29uZmlnX0luaXRJc29sYXRlZENvbmZpZwCaHBJQeUNvbmZpZ19TZXRTdHJpbmcAmxwbX1B5X1ByZUluaXRpYWxpemVGcm9tQ29uZmlnAJIdD1B5X0RlY29kZUxvY2FsZQCIIBBfUHlDb25maWdfQXNEaWN0AJ4cEl9QeUNvbmZpZ19Gcm9tRGljdACfHA9fUHlfZ2V0X3hvcHRpb24A8RwGd2NzY2hyAKxGD1B5X0lzb2xhdGVkRmxhZwPsERNQeV9CeXRlc1dhcm5pbmdGbGFnA+sRDlB5X0luc3BlY3RGbGFnA+oRElB5X0ludGVyYWN0aXZlRmxhZwPpEQ9QeV9PcHRpbWl6ZUZsYWcD6BEMUHlfRGVidWdGbGFnA+cRDFB5X1F1aWV0RmxhZwPmEQ1QeV9Gcm96ZW5GbGFnA+URFlB5X1VuYnVmZmVyZWRTdGRpb0ZsYWcD5BENUHlfTm9TaXRlRmxhZwPjERhQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcD4hEWUHlfTm9Vc2VyU2l0ZURpcmVjdG9yeQPhERhQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcD4BEHc2V0dmJ1ZgCpRBJfUHlBcmd2X0FzV3N0ckxpc3QA7xwQUHlDb25maWdfU2V0QXJndgCmHBpQeUNvbmZpZ19TZXRXaWRlU3RyaW5nTGlzdACnHAdpcHJpbnRmAI5DBndjc3RvawDFRhBfUHlfZ2V0X2Vudl9mbGFnAPgcCl9QeV9HZXRFbnYA8hwHc3RydG91bACYRQ5fUHlfc3RyX3RvX2ludAD3HAZ3Y3N0b2wAy0YRX1B5X0dldEZvcmNlQVNDSUkAhCAJc2V0bG9jYWxlAKFEGl9QeV9Jc0xvY2FsZUNvZXJjaW9uVGFyZ2V0AIkdDVB5Q29uZmlnX1JlYWQArBwUX1B5X0dldENvbmZpZ3NBc0RpY3QArRwcUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZwPfER9QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nA94RIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzA90RJF9QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycwPcEQtQeV9VVEY4TW9kZQPbERVfUHlfR2V0TG9jYWxlRW5jb2RpbmcAjSAZUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZQCvHBtQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGUAshwbUHlNYXJzaGFsX1JlYWRTaG9ydEZyb21GaWxlALUcGlB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlALccIFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlALkcEV9QeV9mc3RhdF9ub3JhaXNlAI4gBWZyZWFkAPI/HFB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbUZpbGUAvBwdUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcAvhwOUHlNYXJzaGFsX0luaXQAvxwfX1B5X2NvbnZlcnRfb3B0aW9uYWxfdG9fc3NpemVfdADMHA9QeV9WYUJ1aWxkVmFsdWUA0hwWX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVADTHBpQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudADbHAl2c25wcmludGYAlUYOUHlPU192c25wcmludGYA3hwZX1B5UGF0aENvbmZpZ19DbGVhckdsb2JhbADhHAZ3Y3NjcHkAsEYKUHlfU2V0UGF0aADjHBBQeV9TZXRQeXRob25Ib21lAOUcEVB5X1NldFByb2dyYW1OYW1lAOYcFl9QeV9TZXRQcm9ncmFtRnVsbFBhdGgA5xwKUHlfR2V0UGF0aADoHAxQeV9HZXRQcmVmaXgA6RwQUHlfR2V0RXhlY1ByZWZpeADqHBVQeV9HZXRQcm9ncmFtRnVsbFBhdGgA6xwQUHlfR2V0UHl0aG9uSG9tZQDsHBFQeV9HZXRQcm9ncmFtTmFtZQDtHAtfUHlfd2dldGN3ZAChIA1fUHlfd3JlYWRsaW5rAJ0gB3djc3JjaHIAvEYHd2NzbmNweQC4Rg1fUHlfd3JlYWxwYXRoAJ4gB3djc25jbXAAt0YdX1B5UHJlQ29uZmlnX0luaXRDb21wYXRDb25maWcA8xweUHlQcmVDb25maWdfSW5pdElzb2xhdGVkQ29uZmlnAPUcFF9QeV9TZXRMb2NhbGVGcm9tRW52AIsdGF9QeV9MZWdhY3lMb2NhbGVEZXRlY3RlZACIHRZfUHlfQ29lcmNlTGVnYWN5TG9jYWxlAIodEVB5SGFzaF9HZXRGdW5jRGVmAIEdDl9QeV9IYXNoU2VjcmV0A9oRFF9QeVJ1bnRpbWVTdGF0ZV9Jbml0ALEdE19QeVJ1bnRpbWVfRmluYWxpemUAhB0UX1B5UnVudGltZVN0YXRlX0ZpbmkAsh0VX1B5X0lzQ29yZUluaXRpYWxpemVkAIYdC25sX2xhbmdpbmZvAMJBE19QeV9SZXNldEZvcmNlQVNDSUkAhiAGc2V0ZW52AJtEHV9QeUludGVycHJldGVyU3RhdGVfU2V0Q29uZmlnAIwdG19QeV9QcmVJbml0aWFsaXplRnJvbVB5QXJndgCOHRhQeV9QcmVJbml0aWFsaXplRnJvbUFyZ3MAkB0QUHlfUHJlSW5pdGlhbGl6ZQCRHRpfUHlJbnRlcnByZXRlclN0YXRlX0VuYWJsZQCzHRZQeUludGVycHJldGVyU3RhdGVfTmV3ALQdEVB5VGhyZWFkU3RhdGVfTmV3AMUdElB5VGhyZWFkU3RhdGVfU3dhcADVHQ9QeV9Jbml0aWFsaXplRXgAlh0NUHlfRmF0YWxFcnJvcgCZHQ1QeV9Jbml0aWFsaXplAJodEl9QeV9Jbml0aWFsaXplTWFpbgCbHQxQeUdDX0NvbGxlY3QAtyAZUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQC4HQtQeV9GaW5hbGl6ZQChHRJfUHlfTmV3SW50ZXJwcmV0ZXIAoh0NUHlFcnJfUHJpbnRFeACQHhNQeVRocmVhZFN0YXRlX0NsZWFyALcdFFB5VGhyZWFkU3RhdGVfRGVsZXRlAM8dEVB5X05ld0ludGVycHJldGVyAKMdEVB5X0VuZEludGVycHJldGVyAKQdGF9QeV9EdW1wRXh0ZW5zaW9uTW9kdWxlcwCmHRFfUHlfd3JpdGVfbm9yYWlzZQCcIA1fUHlfRHVtcEFTQ0lJANMfD19QeV9EdW1wRGVjaW1hbADRHxNfUHlfRHVtcEhleGFkZWNpbWFsANIfGF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcwDWHwh2ZnByaW50ZgCFRglQeV9BdEV4aXQAqh0HUHlfRXhpdACrHRJQeV9GZElzSW50ZXJhY3RpdmUArB0TX1B5X0ZkSXNJbnRlcmFjdGl2ZQCtHQtQeU9TX2dldHNpZwCuHQZzaWduYWwAuEQLUHlPU19zZXRzaWcArx0Mc2lnaW50ZXJydXB0ALZEBWZjbnRsAKU/Hl9QeV9VbmhhbmRsZWRLZXlib2FyZEludGVycnVwdAPZEQ9QeU9TX215c3RybmljbXAA3B8YUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyALUdHVB5SW50ZXJwcmV0ZXJTdGF0ZV9UaHJlYWRIZWFkAKMbIV9QeUludGVycHJldGVyU3RhdGVfUmVxdWlyZXNJRFJlZgDBHSBfUHlJbnRlcnByZXRlclN0YXRlX1JlcXVpcmVJRFJlZgDCHSFfUHlJbnRlcnByZXRlclN0YXRlX0dldE1haW5Nb2R1bGUAwx0aUHlJbnRlcnByZXRlclN0YXRlX0dldERpY3QAxB0QUHlUaHJlYWRfdHNzX2dldADAHxBQeVRocmVhZF90c3Nfc2V0AL8fGV9QeVRocmVhZFN0YXRlX1NldEN1cnJlbnQAxx0XX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MAyB0TX1B5VGhyZWFkU3RhdGVfSW5pdADJHRJQeVN0YXRlX0ZpbmRNb2R1bGUAyh0RUHlTdGF0ZV9BZGRNb2R1bGUAzB0UUHlTdGF0ZV9SZW1vdmVNb2R1bGUAzR0cX1B5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudADQHRtQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQA0R0bX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0ANMdFl9QeVRocmVhZFN0YXRlX0dldERpY3QA1h0cUHlUaHJlYWRTdGF0ZV9HZXRJbnRlcnByZXRlcgDXBhNQeVRocmVhZFN0YXRlX0dldElEANkdGVB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMA2h0XUHlJbnRlcnByZXRlclN0YXRlX0hlYWQA2x0XUHlJbnRlcnByZXRlclN0YXRlX01haW4A3B0XUHlJbnRlcnByZXRlclN0YXRlX05leHQA3R0SUHlUaHJlYWRTdGF0ZV9OZXh0AN4dF19QeVRocmVhZF9DdXJyZW50RnJhbWVzAN8dG19QeVRocmVhZF9DdXJyZW50RXhjZXB0aW9ucwDgHRNQeVRocmVhZF90c3NfY3JlYXRlAL0fJV9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUA4h0TUHlUaHJlYWRfdHNzX2RlbGV0ZQC+HxdQeVRocmVhZF90c3NfaXNfY3JlYXRlZADdHSNfUHlPYmplY3RfQ2hlY2tDcm9zc0ludGVycHJldGVyRGF0YQDoHR5fUHlDcm9zc0ludGVycHJldGVyRGF0YV9Mb29rdXAA6R0hX1B5T2JqZWN0X0dldENyb3NzSW50ZXJwcmV0ZXJEYXRhAOodH19QeUNyb3NzSW50ZXJwcmV0ZXJEYXRhX1JlbGVhc2UA6x0hX1B5Q3Jvc3NJbnRlcnByZXRlckRhdGFfTmV3T2JqZWN0AOwdJV9QeUNyb3NzSW50ZXJwcmV0ZXJEYXRhX1JlZ2lzdGVyQ2xhc3MA7R0kX1B5SW50ZXJwcmV0ZXJTdGF0ZV9HZXRFdmFsRnJhbWVGdW5jAPMdJF9QeUludGVycHJldGVyU3RhdGVfU2V0RXZhbEZyYW1lRnVuYwD0HSFfUHlJbnRlcnByZXRlclN0YXRlX0dldENvbmZpZ0NvcHkA9R0UX1B5UnVuX0FueUZpbGVPYmplY3QA/R0cX1B5UnVuX0ludGVyYWN0aXZlTG9vcE9iamVjdAD/HRdfUHlSdW5fU2ltcGxlRmlsZU9iamVjdACAHgZyZXdpbmQAgUQaUHlSdW5fSW50ZXJhY3RpdmVMb29wRmxhZ3MAhx4aUHlSdW5fSW50ZXJhY3RpdmVPbmVPYmplY3QAiB4ZUHlSdW5fSW50ZXJhY3RpdmVPbmVGbGFncwCJHhdQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncwCKHhdQeVJ1bl9TaW1wbGVTdHJpbmdGbGFncwCLHhRfUHlfSGFuZGxlU3lzdGVtRXhpdACNHg5fUHlFcnJfRGlzcGxheQCRHhdfUHlfV3JpdGVJbmRlbnRlZE1hcmdpbgDMHw9fUHlfV3JpdGVJbmRlbnQAyx8RUHlSdW5fRmlsZUV4RmxhZ3MAlR4XUHlfQ29tcGlsZVN0cmluZ0V4RmxhZ3MAlx4NUHlSdW5fQW55RmlsZQCZHg9QeVJ1bl9BbnlGaWxlRXgAmh4SUHlSdW5fQW55RmlsZUZsYWdzAJseClB5UnVuX0ZpbGUAnB4MUHlSdW5fRmlsZUV4AJ0eD1B5UnVuX0ZpbGVGbGFncwCeHhBQeVJ1bl9TaW1wbGVGaWxlAJ8eElB5UnVuX1NpbXBsZUZpbGVFeACgHgxQeVJ1bl9TdHJpbmcAoR4SUHlSdW5fU2ltcGxlU3RyaW5nAKIeEFB5X0NvbXBpbGVTdHJpbmcAox4VUHlfQ29tcGlsZVN0cmluZ0ZsYWdzAKQeFFB5UnVuX0ludGVyYWN0aXZlT25lAKUeFVB5UnVuX0ludGVyYWN0aXZlTG9vcACmHhtfUHlUcmFjZUJhY2tfUHJpbnRfSW5kZW50ZWQAzx8LX1B5VGltZV9BZGQApx4OX1B5VGltZV9NdWxEaXYAqB4QX1B5TG9uZ19Bc1RpbWVfdACpHhJfUHlMb25nX0Zyb21UaW1lX3QAqh4WX1B5VGltZV9PYmplY3RUb1RpbWVfdACrHhhfUHlUaW1lX09iamVjdFRvVGltZXNwZWMArB4XX1B5VGltZV9PYmplY3RUb1RpbWV2YWwArh4TX1B5VGltZV9Gcm9tU2Vjb25kcwCvHhdfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcwCwHh1fUHlUaW1lX0Zyb21OYW5vc2Vjb25kc09iamVjdACxHhRfUHlUaW1lX0Zyb21UaW1lc3BlYwCyHhNfUHlUaW1lX0Zyb21UaW1ldmFsALMeGV9QeVRpbWVfRnJvbVNlY29uZHNPYmplY3QAtB4eX1B5VGltZV9Gcm9tTWlsbGlzZWNvbmRzT2JqZWN0ALYeF19QeVRpbWVfQXNTZWNvbmRzRG91YmxlALceG19QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdACqHhVfUHlUaW1lX0FzTmFub3NlY29uZHMAsB4WX1B5VGltZV9Bc01pbGxpc2Vjb25kcwC5HhFfUHlUaW1lX0FzVGltZXZhbAC6HhdfUHlUaW1lX0FzVGltZXZhbF9jbGFtcAC8HhdfUHlUaW1lX0FzVGltZXZhbFRpbWVfdAC9HhhfUHlUaW1lX0FzVGltZXNwZWNfY2xhbXAAvh4SX1B5VGltZV9Bc1RpbWVzcGVjAL8eFl9QeVRpbWVfR2V0U3lzdGVtQ2xvY2sAwB4NY2xvY2tfZ2V0dGltZQDdPh5fUHlUaW1lX0dldFN5c3RlbUNsb2NrV2l0aEluZm8AwR4MY2xvY2tfZ2V0cmVzAN4+GV9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2sAwh4hX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvAMMeHl9QeVRpbWVfR2V0UGVyZkNvdW50ZXJXaXRoSW5mbwDDHhFfUHlUaW1lX2xvY2FsdGltZQDEHgtsb2NhbHRpbWVfcgDZPg5fUHlUaW1lX2dtdGltZQDFHghnbXRpbWVfcgDaPhBfUHlEZWFkbGluZV9Jbml0AMYeD19QeURlYWRsaW5lX0dldADHHg1fUHlPU19VUmFuZG9tAMgeCF9QeV9vcGVuAJYgBWNsb3NlAKY9CV9QeV9mc3RhdACPIAhfUHlfcmVhZACaIBBfUHlfb3Blbl9ub3JhaXNlAJcgBHJlYWQAzEMVX1B5T1NfVVJhbmRvbU5vbmJsb2NrAMgeElB5U3lzX0FkZEF1ZGl0SG9vawDtHhBfUHlTeXNfR2V0U2l6ZU9mAO4eFlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMA8B4aUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUA8R4TUHlTeXNfQWRkV2Fybk9wdGlvbgDyHhRQeVN5c19IYXNXYXJuT3B0aW9ucwD0HhBQeVN5c19BZGRYT3B0aW9uAPUeEVB5U3lzX0dldFhPcHRpb25zAPceEFB5VGhyZWFkX0dldEluZm8AxR8NUHlTeXNfU2V0UGF0aAD6Hg9QeVN5c19TZXRBcmd2RXgA+x4NUHlTeXNfU2V0QXJndgD8HhFQeVN5c19Xcml0ZVN0ZG91dAD9HhJQeVN5c19Gb3JtYXRTdGRvdXQA/h4VcHRocmVhZF9jb25kYXR0cl9pbml0ANwQGXB0aHJlYWRfY29uZGF0dHJfc2V0Y2xvY2sAxDkRcHRocmVhZF9jb25kX2luaXQAxDkMZ2V0dGltZW9mZGF5AN8+GVB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQArh8RcHRocmVhZF9hdHRyX2luaXQA3BAZcHRocmVhZF9hdHRyX3NldHN0YWNrc2l6ZQDEORRwdGhyZWFkX2F0dHJfZGVzdHJveQDcEA5wdGhyZWFkX2NyZWF0ZQDVQQ5wdGhyZWFkX2RldGFjaADcEAxwdGhyZWFkX3NlbGYApEMMcHRocmVhZF9leGl0ANxBG1B5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZAC0HxVwdGhyZWFkX211dGV4X3RyeWxvY2sA3BATUHlUaHJlYWRfY3JlYXRlX2tleQC4HxJwdGhyZWFkX2tleV9jcmVhdGUA10EScHRocmVhZF9rZXlfZGVsZXRlANhBE1B5VGhyZWFkX2RlbGV0ZV9rZXkAuR8ZUHlUaHJlYWRfZGVsZXRlX2tleV92YWx1ZQC6HxNwdGhyZWFkX3NldHNwZWNpZmljANpBFlB5VGhyZWFkX3NldF9rZXlfdmFsdWUAux8WUHlUaHJlYWRfZ2V0X2tleV92YWx1ZQC8HxNwdGhyZWFkX2dldHNwZWNpZmljANlBElB5VGhyZWFkX1JlSW5pdFRMUwCoEBZQeVRocmVhZF9nZXRfc3RhY2tzaXplAMEfFlB5VGhyZWFkX3NldF9zdGFja3NpemUAwh8SUHlUaHJlYWRfdHNzX2FsbG9jAMMfEVB5VGhyZWFkX3Rzc19mcmVlAMQfB2NvbmZzdHIAqz0QX1B5VHJhY2ViYWNrX0FkZADKHw5QeU9TX215c3RyaWNtcADdHwpfUHlfc3RyaGV4AOIfEF9QeV9zdHJoZXhfYnl0ZXMA5B8ZX1B5X3N0cmhleF9ieXRlc193aXRoX3NlcADmHwpsb2NhbGVjb252AOhBGF9QeV9HZXRMb2NhbGVjb252TnVtZXJpYwCmIBNfUHlfZGV2aWNlX2VuY29kaW5nAIEgG19QeV9HZXRMb2NhbGVFbmNvZGluZ09iamVjdACCIAhtYnN0b3djcwCSQgdtYnJ0b3djAI5CD1B5X0VuY29kZUxvY2FsZQCJIBNfUHlfRW5jb2RlTG9jYWxlUmF3AIsgBWZzdGF0AP0/BHN0YXQA4EQIX1B5X3N0YXQAkSATX1B5X2dldF9pbmhlcml0YWJsZQCSIBNfUHlfc2V0X2luaGVyaXRhYmxlAJMgHl9QeV9zZXRfaW5oZXJpdGFibGVfYXN5bmNfc2FmZQCVIARvcGVuANxCCl9QeV93Zm9wZW4AmCAId2NzdG9tYnMAzkYFZm9wZW4A4j8Fd3JpdGUA4EYIcmVhZGxpbmsAz0MIcmVhbHBhdGgA0kMGZ2V0Y3dkAJZADF9QeV9ub3JtcGF0aACiIBBfUHlfZ2V0X2Jsb2NraW5nAKQgEF9QeV9zZXRfYmxvY2tpbmcApSAOX1B5X2Nsb3NlcmFuZ2UApyASX1B5X1VURjhfRWRpdF9Db3N0AKkgBmRsb3BlbgCVPgdkbGVycm9yAIY+BWRsc3ltAIg+HVB5X0VNU0NSSVBURU5fU0lHTkFMX0hBTkRMSU5HA9gRFFB5RXJyX1NldEludGVycnVwdEV4ALUwDlB5SW5pdF9fY3R5cGVzAIEhF1B5SW5pdF9fcG9zaXhzdWJwcm9jZXNzAKAiC1B5SW5pdF9fYnoyAKIiC1B5SW5pdF96bGliALUiGVB5SW5pdF9feHhzdWJpbnRlcnByZXRlcnMA1SIMUHlJbml0X2FycmF5APEiD1B5SW5pdF9fYXN5bmNpbwDIIw5QeUluaXRfX2Jpc2VjdACbJBNQeUluaXRfX2NvbnRleHR2YXJzAKMkC1B5SW5pdF9fY3N2AKYkDVB5SW5pdF9faGVhcHEAyyQMUHlJbml0X19qc29uANokDlB5SW5pdF9fbHNwcm9mAO8kDlB5SW5pdF9fb3Bjb2RlAIIlDlB5SW5pdF9fcGlja2xlAIQlDVB5SW5pdF9fcXVldWUA0CUOUHlJbml0X19yYW5kb20A3yUOUHlJbml0X19zdHJ1Y3QA7iUOUHlJbml0X190eXBpbmcAySYQUHlJbml0X196b25laW5mbwDMJg5QeUluaXRfYXVkaW9vcADlJgtQeUluaXRfbWF0aACBJwxQeUluaXRfY21hdGgAzCcSUHlJbml0X19zdGF0aXN0aWNzAOwnEFB5SW5pdF9fZGF0ZXRpbWUA7icPUHlJbml0X19kZWNpbWFsAJApD1B5SW5pdF9iaW5hc2NpaQDXKgtQeUluaXRfX21kNQDkKgxQeUluaXRfX3NoYTEA8SoOUHlJbml0X19zaGEyNTYA+yoOUHlJbml0X19zaGE1MTIAhisMUHlJbml0X19zaGEzAJIrDlB5SW5pdF9fYmxha2UyAKkrDlB5SW5pdF9weWV4cGF0AMArE1B5SW5pdF9fZWxlbWVudHRyZWUAgCwRUHlJbml0X19jb2RlY3NfY24A4SwRUHlJbml0X19jb2RlY3NfaGsA7iwWUHlJbml0X19jb2RlY3NfaXNvMjAyMgD0LBFQeUluaXRfX2NvZGVjc19qcACbLRFQeUluaXRfX2NvZGVjc19rcgCpLRFQeUluaXRfX2NvZGVjc190dwCyLRZQeUluaXRfX211bHRpYnl0ZWNvZGVjALktElB5SW5pdF91bmljb2RlZGF0YQDjLQ1QeUluaXRfX2NyeXB0APwtC1B5SW5pdF9tbWFwAP4tDVB5SW5pdF9zZWxlY3QAnS4OUHlJbml0X19zb2NrZXQApy4NUHlJbml0X2F0ZXhpdAD0LhNQeUluaXRfZmF1bHRoYW5kbGVyAPouDFB5SW5pdF9wb3NpeACbLw5QeUluaXRfX3NpZ25hbACxMBNQeUluaXRfX3RyYWNlbWFsbG9jANMwDlB5SW5pdF9fY29kZWNzAPwwE1B5SW5pdF9fY29sbGVjdGlvbnMApDEMUHlJbml0X2Vycm5vAOUxClB5SW5pdF9faW8A7TEQUHlJbml0X2l0ZXJ0b29scwDRMwtQeUluaXRfX3NyZQCyNA5QeUluaXRfX3RocmVhZADyNAtQeUluaXRfdGltZQCdNQ9QeUluaXRfX3dlYWtyZWYAuTULUHlJbml0X19hYmMAwDURUHlJbml0X19mdW5jdG9vbHMA0DUOUHlJbml0X19sb2NhbGUA7jUQUHlJbml0X19vcGVyYXRvcgD9NQxQeUluaXRfX3N0YXQAyjYQUHlJbml0X19zeW10YWJsZQDXNhBQeUluaXRfeHhzdWJ0eXBlANs2CVB5SW5pdF9nYwCzIApQeV9SdW5NYWluAK8gBnBlcnJvcgDoQgZnZXRwaWQA3DsEa2lsbAC/QQdQeV9NYWluALAgDFB5X0J5dGVzTWFpbgCyIAtQeUdDX0VuYWJsZQC0IAxQeUdDX0Rpc2FibGUAtSAOUHlHQ19Jc0VuYWJsZWQAtiAVUHlPYmplY3RfR0NfSXNUcmFja2VkAMYgF1B5T2JqZWN0X0dDX0lzRmluYWxpemVkAMcgBnN0cmNhdADsRBBmZmlfdHlwZV9wb2ludGVyA9cREGZmaV9jbG9zdXJlX2ZyZWUArToRZmZpX2Nsb3N1cmVfYWxsb2MArDoNZmZpX3R5cGVfdm9pZAPWEQxmZmlfcHJlcF9jaWYAoDoUZmZpX3ByZXBfY2xvc3VyZV9sb2MArjoPZmZpX3R5cGVfc2ludDMyA9UREGZmaV9wcmVwX2NpZl92YXIAoToIZmZpX2NhbGwAqzoHZGxjbG9zZQCFPg5mZmlfdHlwZV91aW50OAPUEQ9mZmlfdHlwZV9kb3VibGUD0xETZmZpX3R5cGVfbG9uZ2RvdWJsZQPSEQ5mZmlfdHlwZV9mbG9hdAPREQ9mZmlfdHlwZV9zaW50MTYD0BEPZmZpX3R5cGVfdWludDE2A88RD2ZmaV90eXBlX3VpbnQzMgPOEQ9mZmlfdHlwZV9zaW50NjQDzREPZmZpX3R5cGVfdWludDY0A8wRDmZmaV90eXBlX3NpbnQ4A8sRDV9fZXh0ZW5kZGZ0ZjIA8EcMX190cnVuY3RmZGYyANpIEV9QeV9HaWRfQ29udmVydGVyAJgvEV9QeV9VaWRfQ29udmVydGVyAJcvD1B5T1NfQmVmb3JlRm9yawCRLxVQeU9TX0FmdGVyRm9ya19QYXJlbnQAky8EZm9yawDTOxRQeU9TX0FmdGVyRm9ya19DaGlsZACULwVfZXhpdAC1PANkdXAAjz4EZHVwMgCQPgVjaGRpcgCZPQV1bWFzawDvRRJfUHlfUmVzdG9yZVNpZ25hbHMAuDAGc2V0c2lkALxCB3NldHBnaWQAokQIc2V0cmVnaWQApUQIc2V0cmV1aWQApUQGZXhlY3ZlANI7BWV4ZWN2APs+B29wZW5kaXIA5EIHc3lzY29uZgCqRQVkaXJmZADXBgdyZWFkZGlyAM1DCGNsb3NlZGlyAKc9EUJaMl9iekNvbXByZXNzRW5kALk6EkJaMl9iekNvbXByZXNzSW5pdACzOg5CWjJfYnpDb21wcmVzcwC2OhNCWjJfYnpEZWNvbXByZXNzRW5kAL06FEJaMl9iekRlY29tcHJlc3NJbml0ALo6EEJaMl9iekRlY29tcHJlc3MAvDoHYWRsZXIzMgDXOg1kZWZsYXRlSW5pdDJfAOM6CmRlZmxhdGVFbmQA5DoHZGVmbGF0ZQDuOhRkZWZsYXRlU2V0RGljdGlvbmFyeQDnOgVjcmMzMgDeOg1pbmZsYXRlSW5pdDJfAKU7CmluZmxhdGVFbmQAqjsHaW5mbGF0ZQCoOxRpbmZsYXRlU2V0RGljdGlvbmFyeQCsOwt6bGliVmVyc2lvbgDCOwtkZWZsYXRlQ29weQDzOgtpbmZsYXRlQ29weQCwOwdpc2FscGhhAP1ABGFjb3MAuzwFYWNvc2gAvzwEYXNpbgDJPAVhc2luaADLPARhdGFuANA8BWF0YW5oANc8BGNicnQAhT0IY29weXNpZ24Arz0EY29zaAC0PQNlcmYA4z4EZXJmYwDlPgRleHAyAIU/BWV4cG0xAIs/BGZhYnMAmz8Ec2luaADHRARzcXJ0ANFEA3RhbgCxRQR0YW5oALNFCW5leHRhZnRlcgDJQgVsb2cxcADwQQVsb2cxMADtQQRsb2cyAPNBDmV4cGxpY2l0X2J6ZXJvAOc8B3N0cm5jYXQAgUUHY3J5cHRfcgDWPQRtbWFwAKlCBm11bm1hcAC9QgVtc3luYwC2QgdtYWR2aXNlAIlCCWZ0cnVuY2F0ZQCEQAZtcmVtYXAAtUIEcG9sbADvQgZzZWxlY3QAlEQLZ2V0c29ja25hbWUAqWIGc29ja2V0ALRiCmdldHNvY2tvcHQAqmIEYmluZAClYgtnZXRwZWVybmFtZQCoYgZsaXN0ZW4Aq2IEc2VuZACvYgpzZXRzb2Nrb3B0ALJiB2FjY2VwdDQApGIGYWNjZXB0AKNiCWluZXRfbnRvcAD0QAVudG9ocwDRQAVodG9ucwDRQAxnYWlfc3RyZXJyb3IAkEAMZnJlZWFkZHJpbmZvAKdiCWluZXRfcHRvbgD1QAdjb25uZWN0AKZiBHJlY3YArGIIcmVjdmZyb20ArWIGc2VuZHRvALFiB3JlY3Ztc2cArmIHc2VuZG1zZwCwYgtnZXRob3N0bmFtZQCcQA1nZXRzZXJ2YnluYW1lALRADWdldHNlcnZieXBvcnQAtkAFbnRvaGwAz0AFaHRvbmwAz0AJaW5ldF9hdG9uAO5ACWluZXRfbnRvYQDzQBJfX2hfZXJybm9fbG9jYXRpb24Aw0AJaHN0cmVycm9yAM5ACWdldHJsaW1pdACxQAlzZXRybGltaXQAp0QFcmFpc2UAwkMKc2lnZmlsbHNldAC1RA9wdGhyZWFkX3NpZ21hc2sAp0MOUHlPU19BZnRlckZvcmsAlS8PX1B5TG9uZ19Gcm9tVWlkAJYvD19QeUxvbmdfRnJvbUdpZACWLxRfUHlfU2lnc2V0X0NvbnZlcnRlcgCZLwtzaWdlbXB0eXNldAC0RAlzaWdhZGRzZXQAsUQGYWNjZXNzALk8CXR0eW5hbWVfcgDrRQZmY2hkaXIAnz8GZmNobW9kAKA/CGZjaG1vZGF0AKE/BWNobW9kAJo9BmZjaG93bgCiPwhmY2hvd25hdACjPwVjaG93bgCbPQZjaHJvb3QA0TsHY3Rlcm1pZAD4PQlmZG9wZW5kaXIAqz8JcmV3aW5kZGlyAIJEB21rZGlyYXQAnEIFbWtkaXIAm0ILZ2V0cHJpb3JpdHkAr0AKcmVhZGxpbmthdADQQwh1bmxpbmthdAD0RQVybWRpcgCFRAdzeW1saW5rAKdFBXVuYW1lAPBFCWZ1dGltZXNhdACKQAhmdXRpbWVucwCJQAV0aW1lcwDLOwdmZXhlY3ZlALE/C3NjaGVkX3lpZWxkAJBECWxvZ2luX3R0eQD6QQZnZXRnaWQAhREHZ2V0cGdycACuQAdnZXRwcGlkALAwBmdldHVpZACFEQhnZXRsb2dpbgCkQAZraWxscGcAwEEGc2V0dWlkAJlEBnNldGdpZACZRAdnZXRwZ2lkAK1AB3NldHBncnAAo0QEd2FpdAC6PAZ3YWl0aWQAyjsHd2FpdHBpZACaQgZnZXRzaWQArUAJdGNnZXRwZ3JwALtFCXRjc2V0cGdycADARQZvcGVuYXQA40IEZHVwMwCRPgVsb2NrZgDqQQVyZWFkdgDRQwVwcmVhZACLQwZ3cml0ZXYA4UYGcHdyaXRlALZDBHBpcGUA6UIIdHJ1bmNhdGUA4kUNcG9zaXhfZmFkdmlzZQDxQgh1bnNldGVudgD1RQVmc3luYwD/PwRzeW5jAKgQCWZkYXRhc3luYwCnPwhmc3RhdHZmcwDlRAdzdGF0dmZzAONECWZwYXRoY29uZgDpPwhwYXRoY29uZgDmQgVsc3RhdACIQgdmc3RhdGF0AP4/CHJlbmFtZWF0APpDBnJlbmFtZQD5QwZ1bmxpbmsA80UGdXRpbWVzAPpFB2Vudmlyb24DyhEFcXNvcnQAwEMTX1B5RXJyX0NoZWNrU2lnbmFscwC0MBJQeUVycl9TZXRJbnRlcnJ1cHQAtzAWUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAC6MBJfUHlPU19Jc01haW5UaHJlYWQAuzAJZ2V0aXRpbWVyAKJACXN0cnNpZ25hbACJRQZzdHJzdHIAi0UFcGF1c2UA50IKc2lncGVuZGluZwCoQwdzaWd3YWl0AMBEC3NpZ3dhaXRpbmZvAMFEDHNpZ3RpbWVkd2FpdAC/RAtzaWdpc21lbWJlcgC3RBdfX2xpYmNfY3VycmVudF9zaWdydG1pbgC+RBdfX2xpYmNfY3VycmVudF9zaWdydG1heAC9RBNQeVRyYWNlTWFsbG9jX1RyYWNrAOMwFVB5VHJhY2VNYWxsb2NfVW50cmFjawDmMBtfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2sA6DAVX1B5Qnl0ZXNJT0J1ZmZlcl9UeXBlA8kRB2lzYWxudW0A+0AHdG91cHBlcgDXRQ1jbG9ja19zZXR0aW1lAKI9D2Nsb2NrX25hbm9zbGVlcAChPQR0aW1lANw+Bm1rdGltZQDYPgVjbG9jawDbPgd3Y3Njb2xsAK9GB3djc3hmcm0A0kYHZ2V0dGV4dADHRQhkZ2V0dGV4dACBPglkY2dldHRleHQA/z0KdGV4dGRvbWFpbgDGRQ5iaW5kdGV4dGRvbWFpbgD7PRdiaW5kX3RleHRkb21haW5fY29kZXNldADkPAdpc3VwcGVyAJJBD19fc21hbGxfZnByaW50ZgDsPxpfUHlfR2V0X0dldHBhdGhfQ29kZU9iamVjdACNOhBmZmlfcHJlcF9jbG9zdXJlAKI6FmZmaV9nZXRfc3RydWN0X29mZnNldHMAozoRZmZpX2phdmFfcmF3X3NpemUApDoYZmZpX2phdmFfcmF3X3RvX3B0cmFycmF5AKU6GGZmaV9qYXZhX3B0cmFycmF5X3RvX3JhdwCmOhFmZmlfamF2YV9yYXdfY2FsbACnOh1mZmlfcHJlcF9qYXZhX3Jhd19jbG9zdXJlX2xvYwCoOhlmZmlfcHJlcF9qYXZhX3Jhd19jbG9zdXJlAKo6FmZmaV90cmFtcF9pc19zdXBwb3J0ZWQAhREPZmZpX3RyYW1wX2FsbG9jANwQE2ZmaV90cmFtcF9zZXRfcGFybXMA4CsSZmZpX3RyYW1wX2dldF9hZGRyANwQDmZmaV90cmFtcF9mcmVlAJEpDUJaMl9ibG9ja1NvcnQArzoVQloyX2J6X19Bc3NlcnRIX19mYWlsALE6EEJaMl9iemxpYlZlcnNpb24AsjoOQloyX2NyYzMyVGFibGUDyBERQloyX2NvbXByZXNzQmxvY2sA0DoOQloyX2luZGV4SW50b0YAuzoJQloyX3JOdW1zA8cRDkJaMl9kZWNvbXByZXNzANI6D0JaMl9ieldyaXRlT3BlbgC+OgtCWjJfYnpXcml0ZQC/OhBCWjJfYnpXcml0ZUNsb3NlAMA6EkJaMl9ieldyaXRlQ2xvc2U2NADBOg5CWjJfYnpSZWFkT3BlbgDCOg9CWjJfYnpSZWFkQ2xvc2UAwzoKQloyX2J6UmVhZADEOgVmZ2V0YwC2PxNCWjJfYnpSZWFkR2V0VW51c2VkAMU6GEJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzcwDGOhpCWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzcwDHOgpCWjJfYnpvcGVuAMg6C0JaMl9iemRvcGVuAMo6CkJaMl9ienJlYWQAyzoLQloyX2J6d3JpdGUAzDoLQloyX2J6Zmx1c2gA3BALQloyX2J6Y2xvc2UAzToLQloyX2J6ZXJyb3IAzjoPQloyX2JzSW5pdFdyaXRlAM86FUJaMl9oYk1ha2VDb2RlTGVuZ3RocwDTOhFCWjJfaGJBc3NpZ25Db2RlcwDUOhhCWjJfaGJDcmVhdGVEZWNvZGVUYWJsZXMA1ToJYWRsZXIzMl96ANY6D2FkbGVyMzJfY29tYmluZQDYOhFhZGxlcjMyX2NvbWJpbmU2NADYOgljb21wcmVzczIA2ToMZGVmbGF0ZUluaXRfAOI6CGNvbXByZXNzANo6DWNvbXByZXNzQm91bmQA2zoNZ2V0X2NyY190YWJsZQDcOgdjcmMzMl96AN06D2NyYzMyX2NvbWJpbmU2NADfOg1jcmMzMl9jb21iaW5lAN86E2NyYzMyX2NvbWJpbmVfZ2VuNjQA4DoRY3JjMzJfY29tYmluZV9nZW4A4DoQY3JjMzJfY29tYmluZV9vcADhOgd6Y2FsbG9jALQ6BnpjZnJlZQDjEAh6X2Vycm1zZwPGEQxkZWZsYXRlUmVzZXQA5ToQZGVmbGF0ZVJlc2V0S2VlcADmOhRkZWZsYXRlR2V0RGljdGlvbmFyeQDpOghfdHJfaW5pdAC2OxBkZWZsYXRlU2V0SGVhZGVyAOo6DmRlZmxhdGVQZW5kaW5nAOs6DGRlZmxhdGVQcmltZQDsOg5fdHJfZmx1c2hfYml0cwC5Ow1kZWZsYXRlUGFyYW1zAO06CV90cl9hbGlnbgC6OxBfdHJfc3RvcmVkX2Jsb2NrALg7C2RlZmxhdGVUdW5lAPE6DGRlZmxhdGVCb3VuZADyOg9fdHJfZmx1c2hfYmxvY2sAuzsMX2xlbmd0aF9jb2RlA8URCl9kaXN0X2NvZGUDxBERZGVmbGF0ZV9jb3B5cmlnaHQDwxEHZ3pjbG9zZQD3OglnemNsb3NlX3IAkDsJZ3pjbG9zZV93AJ07Bmd6b3BlbgD4Oghnem9wZW42NAD4OgdnemRvcGVuAPo6CGd6YnVmZmVyAPs6CGd6cmV3aW5kAPw6CGd6c2VlazY0AP06CGd6X2Vycm9yAP46Bmd6c2VlawD/OghnenRlbGw2NACAOwZnenRlbGwAgDsKZ3pvZmZzZXQ2NACBOwhnem9mZnNldACBOwVnemVvZgCCOwdnemVycm9yAIM7Cmd6Y2xlYXJlcnIAhDsGZ3pyZWFkAIU7B2d6ZnJlYWQAiTsGZ3pnZXRjAIo7B2d6Z2V0Y18AijsIZ3p1bmdldGMAizsGZ3pnZXRzAIw7CGd6ZGlyZWN0AI47DGluZmxhdGVSZXNldACjOwdnendyaXRlAJE7CGd6ZndyaXRlAJY7Bmd6cHV0YwCXOwZnenB1dHMAmDsJZ3p2cHJpbnRmAJk7CGd6cHJpbnRmAJo7B2d6Zmx1c2gAmzsLZ3pzZXRwYXJhbXMAnDsQaW5mbGF0ZUJhY2tJbml0XwCeOwtpbmZsYXRlQmFjawCfOw1pbmZsYXRlX3RhYmxlALU7DGluZmxhdGVfZmFzdAChOw5pbmZsYXRlQmFja0VuZACgOxBpbmZsYXRlUmVzZXRLZWVwAKI7DWluZmxhdGVSZXNldDIApDsMaW5mbGF0ZUluaXRfAKY7DGluZmxhdGVQcmltZQCnOxRpbmZsYXRlR2V0RGljdGlvbmFyeQCrOxBpbmZsYXRlR2V0SGVhZGVyAK07C2luZmxhdGVTeW5jAK47EGluZmxhdGVTeW5jUG9pbnQArzsQaW5mbGF0ZVVuZGVybWluZQCxOw9pbmZsYXRlVmFsaWRhdGUAsjsLaW5mbGF0ZU1hcmsAszsQaW5mbGF0ZUNvZGVzVXNlZAC0OxFpbmZsYXRlX2NvcHlyaWdodAPCEQlfdHJfdGFsbHkAvzsLdW5jb21wcmVzczIAwDsKdW5jb21wcmVzcwDBOxB6bGliQ29tcGlsZUZsYWdzAMM7BnpFcnJvcgDEOxllbXNjcmlwdGVuX0dldFByb2NBZGRyZXNzAMU7ImVtc2NyaXB0ZW5fd2ViZ2wxX2dldF9wcm9jX2FkZHJlc3MAyTstX3dlYmdsMV9tYXRjaF9leHRfcHJvY19hZGRyZXNzX3dpdGhvdXRfc3VmZml4AMg7IWVtc2NyaXB0ZW5fd2ViZ2xfZ2V0X3Byb2NfYWRkcmVzcwDGOxVTRExfR0xfR2V0UHJvY0FkZHJlc3MAxzsRZWdsR2V0UHJvY0FkZHJlc3MAxzsSZ2xmd0dldFByb2NBZGRyZXNzAMc7B2dldGRhdGUA3BAFc3RpbWUAzDsTY2xvY2tfZ2V0Y3B1Y2xvY2tpZADNOwhnZXRwd25hbQDOOwhnZXRwd3VpZADOOwpnZXRwd25hbV9yAM87CmdldHB3dWlkX3IAzzsIc2V0cHdlbnQAqBAIZW5kcHdlbnQAqBAIZ2V0cHdlbnQA0DsIZ2V0Z3JuYW0AzjsIZ2V0Z3JnaWQAzjsKZ2V0Z3JuYW1fcgDPOwpnZXRncmdpZF9yAM87CGdldGdyZW50ANA7CGVuZGdyZW50AKgQCHNldGdyZW50AKgQBWZsb2NrAMQ5BXZmb3JrANM7C3Bvc2l4X3NwYXduANQ7BXBvcGVuANU7BnBjbG9zZQDWOwlzZXRncm91cHMA1zsLc2lnYWx0c3RhY2sA2DsPX19zeXNjYWxsX3VuYW1lANk7EV9fc3lzY2FsbF9zZXRwZ2lkANo7Dl9fc3lzY2FsbF9zeW5jAIUREF9fc3lzY2FsbF9nZXRzaWQA2zsRX19zeXNjYWxsX2dldHBnaWQA2zsQX19zeXNjYWxsX2dldHBpZADcOxFfX3N5c2NhbGxfZ2V0cHBpZACwMA5fX3N5c2NhbGxfbGluawDdOxVfX3N5c2NhbGxfZ2V0Z3JvdXBzMzIA3jsQX19zeXNjYWxsX3NldHNpZACFEQ9fX3N5c2NhbGxfdW1hc2sA3zsTX19zeXNjYWxsX3NldHJsaW1pdADEORNfX3N5c2NhbGxfZ2V0cnVzYWdlAOA7FV9fc3lzY2FsbF9nZXRwcmlvcml0eQDEORVfX3N5c2NhbGxfc2V0cHJpb3JpdHkA4TsXX19zeXNjYWxsX3NldGRvbWFpbm5hbWUA4jsSX19zeXNjYWxsX2dldHVpZDMyAIUREl9fc3lzY2FsbF9nZXRnaWQzMgCFERNfX3N5c2NhbGxfZ2V0ZXVpZDMyAIURE19fc3lzY2FsbF9nZXRlZ2lkMzIAhREVX19zeXNjYWxsX2dldHJlc3VpZDMyAOM7FV9fc3lzY2FsbF9nZXRyZXNnaWQzMgDjOw9fX3N5c2NhbGxfcGF1c2UA5DsRX19zeXNjYWxsX21hZHZpc2UA4wIPX19zeXNjYWxsX21sb2NrAMQ5EV9fc3lzY2FsbF9tdW5sb2NrAMQ5El9fc3lzY2FsbF9tcHJvdGVjdADjAhBfX3N5c2NhbGxfbXJlbWFwAOU7El9fc3lzY2FsbF9tbG9ja2FsbADcEBRfX3N5c2NhbGxfbXVubG9ja2FsbACFERNfX3N5c2NhbGxfcHJsaW1pdDY0AOY7FF9fc3lzY2FsbF91Z2V0cmxpbWl0AOc7FF9fc3lzY2FsbF9zZXRzb2Nrb3B0AOg7Dl9fc3lzY2FsbF9hY2N0AOk7EV9fc3lzY2FsbF9taW5jb3JlAOo7D19fc3lzY2FsbF9waXBlMgDrOxJfX3N5c2NhbGxfcHNlbGVjdDYA7DsSX19zeXNjYWxsX3JlY3ZtbXNnAO07El9fc3lzY2FsbF9zZW5kbW1zZwDtOxJfX3N5c2NhbGxfc2h1dGRvd24A7DsUX19zeXNjYWxsX3NvY2tldHBhaXIA7DsPX19zeXNjYWxsX3dhaXQ0AO47BmF0ZXhpdADcEAxfX2N4YV9hdGV4aXQA4wIOX19jeGFfZmluYWxpemUAkSkFX0V4aXQA7zsEY29zZgCzPQRzaW5mAMZEBGV4cGYAiT8IX19tdWx0ZjMAs0gIX19hZGR0ZjMAg0cIX19zdWJ0ZjMA0kgNX19jdHlwZV9iX2xvYwD1OxZfX2N0eXBlX2dldF9tYl9jdXJfbWF4APY7CF9fZ2V0X3RwAKVDE19fY3R5cGVfdG9sb3dlcl9sb2MA9zsTX19jdHlwZV90b3VwcGVyX2xvYwD4OyBfX2Vtc2NyaXB0ZW5fZW52aXJvbl9jb25zdHJ1Y3RvcgD5OwlfX2Vudmlyb24DwREZZW1zY3JpcHRlbl9idWlsdGluX21hbGxvYwDjRgpfX19lbnZpcm9uA8ARCF9lbnZpcm9uA78RDF9fZmx0X3JvdW5kcwD/OwpmZWdldHJvdW5kAIURDF9fZm1vZGVmbGFncwCAPAxfX2ZwY2xhc3NpZnkAgjwNX19mcGNsYXNzaWZ5ZgCDPA1fX2ZwY2xhc3NpZnlsAIQ8CF9fZGl2dGYzAONHC19fbW9fbG9va3VwAJU8Cl9fb3ZlcmZsb3cAlzwKX19yYW5kbmFtZQCZPAZzY2FsYm4Ai0QFZmxvb3IAxj8HX19sdHRmMgDTRwlfX2ZpeHRmZGkA/kcHX19ndHRmMgDURwlfX2ZpeHRmc2kA/0cLX19mbG9hdHNpdGYAlUgJX19zaWduYml0AJ48Cl9fc2lnbmJpdGYAnzwKX19zaWduYml0bACgPBJfX3dhc2lfc3lzY2FsbF9yZXQApEYKX19zeW5jY2FsbACoPAVmYWJzbACdPwdfX2dldGYyANRHB19fdWZsb3cArjwIX19meHN0YXQArzwKX19meHN0YXRhdACwPAhfX2x4c3RhdACxPAdfX3hzdGF0ALI8CF9feG1rbm9kALM8BW1rbm9kAKBCCl9feG1rbm9kYXQAtDwHbWtub2RhdAChQgpfX2Z4c3RhdDY0AK88DF9fZnhzdGF0YXQ2NACwPApfX2x4c3RhdDY0ALE8CV9feHN0YXQ2NACyPARhNjRsALY8BGw2NGEAtzwDYWJzALg8BGFjY3QAujwFYWNvc2YAvTwFc3FydGYA0kQGYWNvc2hmAMA8BmxvZzFwZgDxQQRsb2dmAPlBBmFjb3NobADBPAVhY29zbADCPAdfX2VxdGYyANNHB19fbmV0ZjIA00cFc3FydGwA00QFYWxhcm0AwzwJc2V0aXRpbWVyAJ9EDWFsaWduZWRfYWxsb2MAxDwOcG9zaXhfbWVtYWxpZ24A6kYJYWxwaGFzb3J0AMU8B3N0cmNvbGwA8UQLYWxwaGFzb3J0NjQAxTwHYXNjdGltZQDGPA9fX25sX2xhbmdpbmZvX2wAwUEJYXNjdGltZV9yAMc8BWFzaW5mAMo8BWZhYnNmAJw/BmFzaW5oZgDMPAZhc2luaGwAzTwFYXNpbmwAzjwIYXNwcmludGYAzzwJdmFzcHJpbnRmAPtFBmF0YW4yZgDTPAVhdGFuZgDWPAZhdGFuMmwA1TwFYXRhbmwA2jwGYXRhbmhmANg8BmF0YW5obADZPAZsb2cxcGwA8kEGX19sb2NrAJEpCF9fdW5sb2NrAJEpD19fX2N4YV9maW5hbGl6ZQCRKQ1fX19jeGFfYXRleGl0ANs8DV9fbGliY19jYWxsb2MA+kYIX19hdGV4aXQA3DwEYXRvZgDePAZzdHJ0b2QAjkUEYXRvaQDfPAdpc3NwYWNlAJBBB2lzZGlnaXQAhUEEYXRvbADfPAVhdG9sbADgPAhiYXNlbmFtZQDhPA5fX3hwZ19iYXNlbmFtZQDhPARiY21wAOI8BWJjb3B5AOM8CnN0cmNhc2VjbXAA6UQHYnNlYXJjaADlPAVidG93YwDmPAViemVybwDnPAhjMTZydG9tYgDoPAd3Y3J0b21iAKhGCGMzMnJ0b21iAOk8BGNhYnMA6jwFY2Fic2YA6zwGaHlwb3RmANVABWNhYnNsAOw8Bmh5cG90bADWQAVjYWNvcwDtPAVjYXNpbgD3PAZjYWNvc2YA7jwGY2FzaW5mAPg8BmNhY29zaADvPAdjYWNvc2hmAPA8B2NhY29zaGwA8TwGY2Fjb3NsAPI8BmNhc2lubAD8PAljYWxsX29uY2UA8zwEY2FyZwD0PAVjYXJnZgD1PAVjYXJnbAD2PAVjc3FydADvPQRjbG9nAKM9BmNzcXJ0ZgDwPQVjbG9nZgCkPQZjYXNpbmgA+TwHY2FzaW5oZgD6PAdjYXNpbmhsAPs8BmNzcXJ0bADxPQVjbG9nbAClPQVjYXRhbgD9PAZjYXRhbmYA/jwGY2F0YW5oAP88B2NhdGFuaGYAgD0HY2F0YW5obACBPQZjYXRhbmwAgj0EbG9nbAD7QQxfX3RydW5jdGZzZjIA20gNX19leHRlbmRzZnRmMgD0RwhjYXRjbG9zZQDcEAdjYXRnZXRzAIM9B2NhdG9wZW4AhD0FY2JydGYAhj0FY2JydGwAhz0EY2NvcwCIPQVjY29zaACKPQVjY29zZgCJPQZjY29zaGYAiz0FY29zaGYAtT0Fc2luaGYAyEQJY29weXNpZ25mALA9BmNjb3NobACMPQVjY29zbACNPQRjZWlsAI49BWNlaWxmAI89BWNlaWxsAJA9BGNleHAAkT0FY2V4cGYAkj0FY2V4cGwAkz0LY2ZnZXRvc3BlZWQAlD0LY2ZnZXRpc3BlZWQAlT0JY2ZtYWtlcmF3AJY9C2Nmc2V0b3NwZWVkAJc9C2Nmc2V0aXNwZWVkAJg9CmNmc2V0c3BlZWQAlz0FY2ltYWcAnD0GY2ltYWdmAJ09BmNpbWFnbACePQhjbGVhcmVudgCfPRFjbGVhcmVycl91bmxvY2tlZACgPRdlbXNjcmlwdGVuX3RocmVhZF9zbGVlcADdQQ1jbmRfYnJvYWRjYXN0ANwQC2NuZF9kZXN0cm95AJEpCGNuZF9pbml0AKg9CmNuZF9zaWduYWwA3BANY25kX3RpbWVkd2FpdACpPQhjbmRfd2FpdACqPQRjb25qAKw9BWNvbmpmAK09BWNvbmpsAK49CWNvcHlzaWdubACxPQZleHBtMWYAjD8FY29zaGwAtj0EY29zbAC3PQRjcG93ALg9CF9fbXVsZGMzAKpIBWNwb3dmALk9CF9fbXVsc2MzALBIBWNwb3dsALo9Cl9fdW5vcmR0ZjIA1UcIX19tdWx0YzMAskgFY3Byb2oAuz0GY3Byb2pmALw9BmNwcm9qbAC9PQVjcmVhbAC+PQZjcmVhbGYAvz0GY3JlYWxsAMA9BWNyZWF0AME9B2NyZWF0NjQAwT0FY3J5cHQAwj0QX19jcnlwdF9ibG93ZmlzaADDPQtfX2NyeXB0X2RlcwDKPQtfX2NyeXB0X21kNQDOPQdzdHJubGVuAIVFDl9fY3J5cHRfc2hhMjU2ANc9Dl9fY3J5cHRfc2hhNTEyAOA9B3NwcmludGYAzkQEY3NpbgDpPQVjc2luaADrPQVjc2luZgDqPQZjc2luaGYA7D0GY3NpbmhsAO09BWNzaW5sAO49BGN0YW4A8j0FY3RhbmgA9D0FY3RhbmYA8z0GY3RhbmhmAPU9BHRhbmYAskUGY3RhbmhsAPY9BWN0YW5sAPc9BWN0aW1lAPk9CWxvY2FsdGltZQDpQQdjdGltZV9yAPo9CmRjbmdldHRleHQA/j0PX19nZXR0ZXh0ZG9tYWluAMVFCWRuZ2V0dGV4dACAPghkaWZmdGltZQCCPgdkaXJuYW1lAIM+A2RpdgCEPgtfX2xpYmNfZnJlZQDkRg1fX2xpYmNfbWFsbG9jAONGC19fZGxfc2V0ZXJyAIc+B2RuX2NvbXAAiT4JZG5fZXhwYW5kAIo+C2RuX3NraXBuYW1lAIs+B2RwcmludGYAjD4IdmRwcmludGYA/EUHZXJhbmQ0OACNPgdkcmFuZDQ4AI4+El9fd2FzaV9mZF9pc192YWxpZAClRgtfX2R1cGxvY2FsZQCSPglkdXBsb2NhbGUAkj4LbmV3X2RsZXZlbnQAlD4WcHRocmVhZF9zZXRjYW5jZWxzdGF0ZQDEORFlbXNjcmlwdGVuX2Rsb3BlbgCYPhllbXNjcmlwdGVuX2Rsb3Blbl9wcm9taXNlAJs+BmRsYWRkcgCePgRlY3Z0AJ8+HWVtc2NyaXB0ZW5fYXRvbWljX2V4Y2hhbmdlX3U4AKA+HmVtc2NyaXB0ZW5fYXRvbWljX2V4Y2hhbmdlX3UxNgChPh5lbXNjcmlwdGVuX2F0b21pY19leGNoYW5nZV91MzIAoj4eZW1zY3JpcHRlbl9hdG9taWNfZXhjaGFuZ2VfdTY0AKM+GGVtc2NyaXB0ZW5fYXRvbWljX2Nhc191OACkPhllbXNjcmlwdGVuX2F0b21pY19jYXNfdTE2AKU+GWVtc2NyaXB0ZW5fYXRvbWljX2Nhc191MzIApj4ZZW1zY3JpcHRlbl9hdG9taWNfY2FzX3U2NACnPhllbXNjcmlwdGVuX2F0b21pY19sb2FkX3U4AKg+GmVtc2NyaXB0ZW5fYXRvbWljX2xvYWRfdTE2AKk+GmVtc2NyaXB0ZW5fYXRvbWljX2xvYWRfdTMyAN0dGmVtc2NyaXB0ZW5fYXRvbWljX2xvYWRfZjMyAL89GmVtc2NyaXB0ZW5fYXRvbWljX2xvYWRfdTY0AKo+GmVtc2NyaXB0ZW5fYXRvbWljX2xvYWRfZjY0AL49GmVtc2NyaXB0ZW5fYXRvbWljX3N0b3JlX3U4AKs+G2Vtc2NyaXB0ZW5fYXRvbWljX3N0b3JlX3UxNgCsPhtlbXNjcmlwdGVuX2F0b21pY19zdG9yZV91MzIArT4bZW1zY3JpcHRlbl9hdG9taWNfc3RvcmVfZjMyAK4+G2Vtc2NyaXB0ZW5fYXRvbWljX3N0b3JlX3U2NACvPhtlbXNjcmlwdGVuX2F0b21pY19zdG9yZV9mNjQAsD4XZW1zY3JpcHRlbl9hdG9taWNfZmVuY2UAqBAXZW1zY3JpcHRlbl9hdG9taWNfb3JfdTgAsT4YZW1zY3JpcHRlbl9hdG9taWNfYWRkX3U4ALI+GWVtc2NyaXB0ZW5fYXRvbWljX2FkZF91MTYAsz4ZZW1zY3JpcHRlbl9hdG9taWNfYWRkX3UzMgC0PhllbXNjcmlwdGVuX2F0b21pY19hZGRfdTY0ALU+GGVtc2NyaXB0ZW5fYXRvbWljX3N1Yl91OAC2PhllbXNjcmlwdGVuX2F0b21pY19zdWJfdTE2ALc+GWVtc2NyaXB0ZW5fYXRvbWljX3N1Yl91MzIAuD4ZZW1zY3JpcHRlbl9hdG9taWNfc3ViX3U2NAC5PhhlbXNjcmlwdGVuX2F0b21pY19hbmRfdTgAuj4ZZW1zY3JpcHRlbl9hdG9taWNfYW5kX3UxNgC7PhllbXNjcmlwdGVuX2F0b21pY19hbmRfdTMyALw+GWVtc2NyaXB0ZW5fYXRvbWljX2FuZF91NjQAvT4YZW1zY3JpcHRlbl9hdG9taWNfb3JfdTE2AL4+GGVtc2NyaXB0ZW5fYXRvbWljX29yX3UzMgC/PhhlbXNjcmlwdGVuX2F0b21pY19vcl91NjQAwD4YZW1zY3JpcHRlbl9hdG9taWNfeG9yX3U4AME+GWVtc2NyaXB0ZW5fYXRvbWljX3hvcl91MTYAwj4ZZW1zY3JpcHRlbl9hdG9taWNfeG9yX3UzMgDDPhllbXNjcmlwdGVuX2F0b21pY194b3JfdTY0AMQ+F2Vtc2NyaXB0ZW5fY29uc29sZV9sb2dmAMU+GWVtc2NyaXB0ZW5fY29uc29sZV9lcnJvcmYAxz4YZW1zY3JpcHRlbl9jb25zb2xlX3dhcm5mAMg+EF9lbXNjcmlwdGVuX291dGYAyT4QX2Vtc2NyaXB0ZW5fZXJyZgDKPhVlbXNjcmlwdGVuX2ZpYmVyX2luaXQAyz4qZW1zY3JpcHRlbl9maWJlcl9pbml0X2Zyb21fY3VycmVudF9jb250ZXh0AMw+GWVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2Jhc2UAy0gYZW1zY3JpcHRlbl9zdGFja19nZXRfZW5kAMxIGGVtc2NyaXB0ZW5fZ2V0X2hlYXBfc2l6ZQDNPhllbXNjcmlwdGVuX2J1aWx0aW5fbWVtY3B5AM4+EF9fc3lzY2FsbF9tdW5tYXAA0T4XZW1zY3JpcHRlbl9idWlsdGluX2ZyZWUA5EYPX19zeXNjYWxsX21zeW5jANM+D19fc3lzY2FsbF9tbWFwMgDUPhtlbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24A6EYVZW1zY3JpcHRlbl9zY2FuX3N0YWNrANU+HGVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2N1cnJlbnQAzUgFdHpzZXQA1j4GdHpuYW1lA74RCGRheWxpZ2h0A70RCHRpbWV6b25lA7wRBnRpbWVnbQDXPgdfX2Nsb2NrANs+Bl9fdGltZQDcPg5fX2Nsb2NrX2dldHJlcwDePg5fX2dldHRpbWVvZmRheQDfPgZkeXNpemUA4D4Gc2V0a2V5AOE+B2VuY3J5cHQA4j4Kc2V0aG9zdGVudACRKQpnZXRob3N0ZW50AIURCWdldG5ldGVudACFEQplbmRob3N0ZW50AKgQCXNldG5ldGVudACRKQllbmRuZXRlbnQAqBAEZXJmZgDmPgVlcmZjZgDoPgRlcmZsAOk+BWVyZmNsAOo+BXZ3YXJuAOs+Cl9fcHJvZ25hbWUDuxEHZnByaW50ZgDqPwZ2d2FybngA7D4EcHV0YwDtPwR2ZXJyAO0+BXZlcnJ4AO4+BHdhcm4A7z4Fd2FybngA8D4DZXJyAPE+BGVycngA8j4MZXRoZXJfYXRvbl9yAPM+CmV0aGVyX2F0b24A9D4MZXRoZXJfbnRvYV9yAPU+CmV0aGVyX250b2EA9j4KZXRoZXJfbGluZQD3Pg1ldGhlcl9udG9ob3N0AIQ9DWV0aGVyX2hvc3R0b24AhD0FZXhlY2wA+D4GZXhlY2xlAPk+BmV4ZWNscAD6PgZleGVjdnAA/T4HZXhlY3ZwZQD8PgVleHAxMACCPwVwb3cxMACCPwZleHAxMGYAgz8FbW9kZmYAsUIFZXhwMmYAhj8GcG93MTBmAIM/BmV4cDEwbACEPwVtb2RmbACyQgVleHAybACIPwRwb3dsAIpDBnBvdzEwbACEPwdfX2xldGYyANNHB3NjYWxibmwAjUQEZXhwbACKPwZleHBtMWwAjT8JX2ZsdXNobGJmAI4/DV9fZnNldGxvY2tpbmcAxDkKX19md3JpdGluZwCPPwpfX2ZyZWFkaW5nAJA/C19fZnJlYWRhYmxlAJE/C19fZndyaXRhYmxlAJI/Bl9fZmxiZgCTPwpfX2ZidWZzaXplAJQ/Cl9fZnBlbmRpbmcAlT8IX19mcHVyZ2UAlj8GZnB1cmdlAJY/DF9fZnJlYWRhaGVhZACXPwpfX2ZyZWFkcHRyAJg/DV9fZnJlYWRwdHJpbmMAmT8JX19mc2V0ZXJyAJo/CWZhY2Nlc3NhdACePwRmY3Z0AKY/BnN0cnNwbgCKRQRmZGltAKg/BWZkaW1mAKk/BWZkaW1sAKo/D2ZlZ2V0ZXhjZXB0ZmxhZwCsPwxmZXRlc3RleGNlcHQA3BAMZmVob2xkZXhjZXB0ANwQCGZlZ2V0ZW52ANwQDWZlY2xlYXJleGNlcHQA3BANZmVyYWlzZWV4Y2VwdADcEAxfX2Zlc2V0cm91bmQA3BAIZmVzZXRlbnYA3BANZmVvZl91bmxvY2tlZACtPxFfSU9fZmVvZl91bmxvY2tlZACtPw9mZXJyb3JfdW5sb2NrZWQArj8TX0lPX2ZlcnJvcl91bmxvY2tlZACuPw9mZXNldGV4Y2VwdGZsYWcArz8KZmVzZXRyb3VuZACwPwtmZXVwZGF0ZWVudgDcEA9mZmx1c2hfdW5sb2NrZWQAsj8DZmZzALM/BGZmc2wAtD8FZmZzbGwAtT8VZW1zY3JpcHRlbl9mdXRleF93YWtlAMQ5BmZnZXRsbgC6PwdnZXRsaW5lAKNAB2ZnZXRwb3MAuz8JZmdldHBvczY0ALs/DmZnZXRzX3VubG9ja2VkALw/EV9fZmdldHdjX3VubG9ja2VkAL0/BWZ3aWRlAItABm1idG93YwCTQgZmZ2V0d2MAvj8PZmdldHdjX3VubG9ja2VkAL0/DmdldHdjX3VubG9ja2VkAL0/BmZnZXR3cwC/Pw9mZ2V0d3NfdW5sb2NrZWQAvz8PZmlsZW5vX3VubG9ja2VkAMA/BmZpbml0ZQDBPwdmaW5pdGVmAMI/DV9fZmxvYXR1bnNpdGYAoEgFZm1vZGwA2j8MZnRyeWxvY2tmaWxlAIdABmZsb29yZgDHPwZmbG9vcmwAyD8DZm1hAMk/BGZtYWYAyz8EZm1hbADMPwZmcmV4cGwA9z8KbmV4dGFmdGVybADLQgZpbG9nYmwA6UAEZm1heADOPwVmbWF4ZgDPPwVmbWF4bADQPwhmbWVtb3BlbgDRPwRmbWluANU/BWZtaW5mANY/BWZtaW5sANc/BWZtb2RmANk/BmZtdG1zZwDbPwdmbm1hdGNoANw/CHRvd3VwcGVyANtFCHRvd2xvd2VyANlFBndjdHlwZQCcQQhpc3djdHlwZQCbQQdmb3BlbjY0AOI/C2ZvcGVuY29va2llAOM/B2ZvcmtwdHkA6D8Hb3BlbnB0eQDlQgVwaXBlMgDqQgl2ZmlwcmludGYAiEYQX19zbWFsbF92ZnByaW50ZgCJRg5mcHV0c191bmxvY2tlZADuPxFfX2ZwdXR3Y191bmxvY2tlZADvPwZ3Y3RvbWIA1EYGZnB1dHdjAPA/D2ZwdXR3Y191bmxvY2tlZADvPw5wdXR3Y191bmxvY2tlZADvPwZmcHV0d3MA8T8Jd2NzcnRvbWJzAL1GD2ZwdXR3c191bmxvY2tlZADxPw5mcmVhZF91bmxvY2tlZADyPwpmcmVlbG9jYWxlAPM/DF9fZnJlZWxvY2FsZQDzPwdmcmVvcGVuAPQ/CWZyZW9wZW42NAD0PwZmcmV4cGYA9j8GZnNjYW5mAPg/B3Zmc2NhbmYAikYPX19pc29jOTlfZnNjYW5mAPg/BWZzZWVrAPs/BmZzZWVrbwD6Pwhmc2Vla282NAD6Pwdmc2V0cG9zAPw/CWZzZXRwb3M2NAD8Pwdmc3RhdDY0AP0/CWZzdGF0YXQ2NAD+PwZmdGVsbG8AgUAIZnRlbGxvNjQAgUAFZnRpbWUAg0ALZnRydW5jYXRlNjQAhEAJdXRpbWVuc2F0APlFCGZ3cHJpbnRmAIxACXZmd3ByaW50ZgCNRg9md3JpdGVfdW5sb2NrZWQAjkAHZndzY2FuZgCPQAh2ZndzY2FuZgCSRhBfX2lzb2M5OV9md3NjYW5mAI9ABGdjdnQAkUAUZ2V0X2N1cnJlbnRfZGlyX25hbWUAkkAGc3RyZHVwAPRECF9JT19nZXRjALY/DmZnZXRjX3VubG9ja2VkAJNAEV9JT19nZXRjX3VubG9ja2VkAJNAB2dldGNoYXIAlEAQZ2V0Y2hhcl91bmxvY2tlZACVQAhnZXRkZWxpbQCXQApfX2dldGRlbGltAJdACGdldGRlbnRzAJhACmdldGRlbnRzNjQAmEANZ2V0ZG9tYWlubmFtZQCZQAdnZXRlZ2lkAIURB2dldGV1aWQAhREJZ2V0Z3JvdXBzAJtACWdldGhvc3RpZACFEQtmcmVlaWZhZGRycwCdQApnZXRpZmFkZHJzAJ5AC19fZ2V0aXRpbWVyAJxECmdldGxvZ2luX3IApUAGZ2V0b3B0AKdACl9fb3B0cmVzZXQDuhEGb3B0aW5kA7kRCF9fb3B0cG9zA7gRBm9wdGFyZwO3EQZvcHRvcHQDthEGb3B0ZXJyA7URCG9wdHJlc2V0A7QRDl9fcG9zaXhfZ2V0b3B0AKdAC2dldG9wdF9sb25nAKhAEGdldG9wdF9sb25nX29ubHkAq0AFbWJsZW4AikILZ2V0cGFnZXNpemUArEAJZ2V0cmVzZ2lkALBACWdldHJlc3VpZACwQAtnZXRybGltaXQ2NACxQAlnZXRydXNhZ2UAskAEZ2V0cwCzQA9nZXRzZXJ2YnluYW1lX3IAtUAPZ2V0c2VydmJ5cG9ydF9yALdACWdldHN1Ym9wdAC4QAZnZXR0aWQAuUAEZ2V0dwC6QAVnZXR3YwC7QAhnZXR3Y2hhcgC8QBFnZXR3Y2hhcl91bmxvY2tlZAC8QARnbG9iAL1ACGdsb2JmcmVlAMFABmdsb2I2NAC9QApnbG9iZnJlZTY0AMFABmdtdGltZQDCQAdoX2Vycm5vA7MRBmhlcnJvcgDEQAdoY3JlYXRlAMVACGhkZXN0cm95AMhAB2hzZWFyY2gAykAJaGNyZWF0ZV9yAMZACmhkZXN0cm95X3IAyUAJaHNlYXJjaF9yAMtACmljb252X29wZW4A2EAFaWNvbnYA20ALaWNvbnZfY2xvc2UA4UAQaWZfZnJlZW5hbWVpbmRleADiQA5pZl9pbmRleHRvbmFtZQDjQAVpb2N0bAD6QAxpZl9uYW1laW5kZXgA5EAOaWZfbmFtZXRvaW5kZXgA5kAFaWxvZ2IA50AGaWxvZ2JmAOhAB2ltYXhhYnMA6kAHaW1heGRpdgDrQAVpbmRleADsQAlpbmV0X2FkZHIA7UAMaW5ldF9uZXR3b3JrAO9ADWluZXRfbWFrZWFkZHIA8EAKaW5ldF9sbmFvZgDxQAppbmV0X25ldG9mAPJABmluc3F1ZQD3QAZyZW1xdWUA+EAJX19pbnRzY2FuAPlACF9fbXVsdGkzALRIC19faXNhbG51bV9sAPxACWlzYWxudW1fbAD8QAtfX2lzYWxwaGFfbAD+QAlpc2FscGhhX2wA/kAHaXNhc2NpaQD/QAdpc2JsYW5rAIFBC19faXNibGFua19sAIJBCWlzYmxhbmtfbACCQQdpc2NudHJsAINBC19faXNjbnRybF9sAIRBCWlzY250cmxfbACEQQtfX2lzZGlnaXRfbACGQQlpc2RpZ2l0X2wAhkEHaXNncmFwaACHQQtfX2lzZ3JhcGhfbACIQQlpc2dyYXBoX2wAiEEHaXNsb3dlcgCJQQtfX2lzbG93ZXJfbACKQQlpc2xvd2VyX2wAikEHaXNwcmludACLQQtfX2lzcHJpbnRfbACMQQlpc3ByaW50X2wAjEEHaXNwdW5jdACNQQtfX2lzcHVuY3RfbACOQQlpc3B1bmN0X2wAjkEJaXNzZXR1Z2lkAI9BC19faXNzcGFjZV9sAJFBCWlzc3BhY2VfbACRQQtfX2lzdXBwZXJfbACTQQlpc3VwcGVyX2wAk0EIaXN3YWxudW0AlEEIaXN3ZGlnaXQAhUEIaXN3YWxwaGEAlkEMX19pc3dhbG51bV9sAJVBCmlzd2FsbnVtX2wAlUEMX19pc3dhbHBoYV9sAJdBCmlzd2FscGhhX2wAl0EIaXN3YmxhbmsAmEEMX19pc3dibGFua19sAIJBCmlzd2JsYW5rX2wAgkEIaXN3Y250cmwAmUEMX19pc3djbnRybF9sAJpBCmlzd2NudHJsX2wAmkEIaXN3Z3JhcGgAn0EIaXN3bG93ZXIAoUEIaXN3cHJpbnQAo0EIaXN3cHVuY3QApUEIaXN3c3BhY2UAp0EIaXN3dXBwZXIAqUEJaXN3eGRpZ2l0AKtBDF9faXN3Y3R5cGVfbACdQQpfX3djdHlwZV9sAJ5BCmlzd2N0eXBlX2wAnUEId2N0eXBlX2wAnkEMX19pc3dkaWdpdF9sAIZBCmlzd2RpZ2l0X2wAhkEMX19pc3dncmFwaF9sAKBBCmlzd2dyYXBoX2wAoEEMX19pc3dsb3dlcl9sAKJBCmlzd2xvd2VyX2wAokEMX19pc3dwcmludF9sAKRBCmlzd3ByaW50X2wApEEMX19pc3dwdW5jdF9sAKZBCmlzd3B1bmN0X2wApkEMX19pc3dzcGFjZV9sAKhBCmlzd3NwYWNlX2wAqEEMX19pc3d1cHBlcl9sAKpBCmlzd3VwcGVyX2wAqkENX19pc3d4ZGlnaXRfbACsQQtpc3d4ZGlnaXRfbACsQQxfX2lzeGRpZ2l0X2wArkEKaXN4ZGlnaXRfbACuQQJqMACvQQJ5MACxQQNqMGYAskEDeTBmALRBAmoxALVBAnkxALdBA2oxZgC4QQN5MWYAukECam4Au0ECeW4AvEEDam5mAL1BA3luZgC+QQRsYWJzALg8DV9fbmxfbGFuZ2luZm8AwkENbmxfbGFuZ2luZm9fbADBQQZsY2htb2QAw0EGbGNob3duAMRBB2xjb25nNDgAxUEGbGRleHBmAMdBB3NjYWxibmYAjEQGbGRleHBsAMhBBGxkaXYAhD4PZ2V0X25wcm9jc19jb25mAMlBCmdldF9ucHJvY3MAykEOZ2V0X3BoeXNfcGFnZXMAy0EQZ2V0X2F2cGh5c19wYWdlcwDMQQZsZ2FtbWEAzUEJX19zaWduZ2FtA7IRCGxnYW1tYV9yAM5BB2xnYW1tYWYAz0EJbGdhbW1hZl9yANBBC19fbGdhbW1hbF9yANFBB2xnYW1tYWwA0kEJbGdhbW1hbF9yANFBIGVtc2NyaXB0ZW5faGFzX3RocmVhZGluZ19zdXBwb3J0AIURHGVtc2NyaXB0ZW5fbnVtX2xvZ2ljYWxfY29yZXMAsDAiZW1zY3JpcHRlbl9mb3JjZV9udW1fbG9naWNhbF9jb3JlcwCRKRVlbXNjcmlwdGVuX2Z1dGV4X3dhaXQA00EhZW1zY3JpcHRlbl9pc19tYWluX3J1bnRpbWVfdGhyZWFkALAwK2Vtc2NyaXB0ZW5fbWFpbl90aHJlYWRfcHJvY2Vzc19xdWV1ZWRfY2FsbHMAqBAuZW1zY3JpcHRlbl9jdXJyZW50X3RocmVhZF9wcm9jZXNzX3F1ZXVlZF9jYWxscwCoEBFfZW1zY3JpcHRlbl95aWVsZADUQRhfZW1zY3JpcHRlbl9jaGVja190aW1lcnMAnkQYcHRocmVhZF9tdXRleF9jb25zaXN0ZW50ANwQFHB0aHJlYWRfYmFycmllcl9pbml0AOMCF3B0aHJlYWRfYmFycmllcl9kZXN0cm95ANwQFHB0aHJlYWRfYmFycmllcl93YWl0ANwQFnB0aHJlYWRfY29uZF9icm9hZGNhc3QA3BAOcHRocmVhZF9hdGZvcmsA4wIOcHRocmVhZF9jYW5jZWwA3BAScHRocmVhZF90ZXN0Y2FuY2VsAKgQEF9fcHRocmVhZF9kZXRhY2gA3BANcHRocmVhZF9lcXVhbADYEBZwdGhyZWFkX211dGV4YXR0cl9pbml0ANwQHXB0aHJlYWRfbXV0ZXhhdHRyX3NldHByb3RvY29sAMQ5GXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUAxDkZcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveQDcEBxwdGhyZWFkX211dGV4YXR0cl9zZXRwc2hhcmVkAMQ5GHB0aHJlYWRfY29uZGF0dHJfZGVzdHJveQDcEBtwdGhyZWFkX2NvbmRhdHRyX3NldHBzaGFyZWQAxDkScHRocmVhZF9nZXRhdHRyX25wAMQ5FXB0aHJlYWRfc2V0Y2FuY2VsdHlwZQDEORNwdGhyZWFkX3J3bG9ja19pbml0AMQ5FnB0aHJlYWRfcndsb2NrX2Rlc3Ryb3kA3BAVcHRocmVhZF9yd2xvY2tfcmRsb2NrANwQGHB0aHJlYWRfcndsb2NrX3RyeXJkbG9jawDcEBpwdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jawDEORVwdGhyZWFkX3J3bG9ja193cmxvY2sA3BAYcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrANwQGnB0aHJlYWRfcndsb2NrX3RpbWVkd3Jsb2NrAMQ5FXB0aHJlYWRfcndsb2NrX3VubG9jawDcEBdwdGhyZWFkX3J3bG9ja2F0dHJfaW5pdADcEBpwdGhyZWFkX3J3bG9ja2F0dHJfZGVzdHJveQDcEB1wdGhyZWFkX3J3bG9ja2F0dHJfc2V0cHNoYXJlZADEORFwdGhyZWFkX3NwaW5faW5pdADEORRwdGhyZWFkX3NwaW5fZGVzdHJveQDcEBFwdGhyZWFkX3NwaW5fbG9jawDcEBRwdGhyZWFkX3NwaW5fdHJ5bG9jawDcEBNwdGhyZWFkX3NwaW5fdW5sb2NrANwQG3B0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZQDEORpwdGhyZWFkX2F0dHJfc2V0c2NoZWRwYXJhbQDEOQhzZW1faW5pdADjAghzZW1fcG9zdADcEAhzZW1fd2FpdADcEAtzZW1fdHJ5d2FpdADcEAtzZW1fZGVzdHJveQDcEBdwdGhyZWFkX211dGV4X3RpbWVkbG9jawDEOSFlbXNjcmlwdGVuX2J1aWx0aW5fcHRocmVhZF9jcmVhdGUA1UEfZW1zY3JpcHRlbl9idWlsdGluX3B0aHJlYWRfam9pbgDWQQxwdGhyZWFkX2pvaW4A1kEMcHRocmVhZF9vbmNlANtBIWVtc2NyaXB0ZW5fYnVpbHRpbl9wdGhyZWFkX2RldGFjaADcEAt0aHJkX2RldGFjaADcEARsaW5rAN5BBmxpbmthdADfQQVsbGFicwDqQAVsbGRpdgDrQAZsbHJpbnQA4EEEcmludADCQgdsbHJpbnRmAOFBBXJpbnRmAMNCB2xscmludGwA4kEFcmludGwAhEQHbGxyb3VuZADjQQhsbHJvdW5kZgDkQQZyb3VuZGYAh0QIbGxyb3VuZGwA5UEGcm91bmRsAIhEB2xvY2tmNjQA6kEGbG9nMTBmAO5BBmxvZzEwbADvQQVsb2cyZgD0QQVsb2cybAD1QQRsb2diAPZBBWxvZ2JmAPdBBWxvZ2JsAPhBCHN0cnRvdWxsAJVFB25yYW5kNDgA/UEHbHJhbmQ0OAD+QQVscmludAD/QQZscmludGYAgEIGbHJpbnRsAIFCBmxyb3VuZACCQgdscm91bmRmAINCB2xyb3VuZGwAhEIHbHNlYXJjaACFQgVsZmluZACGQgdsc2VlazY0AIdCB2xzdGF0NjQAiEIGbWJybGVuAItCCG1icnRvYzE2AIxCCG1icnRvYzMyAI1CB21ic2luaXQAj0IKbWJzbnJ0b3djcwCQQgltYnNydG93Y3MAkUIHbWVtY2NweQCUQgZtZW1tZW0Al0IHbWVtcGNweQCYQgdtaW5jb3JlAJpCB21rZHRlbXAAnUIGbWtmaWZvAJ5CCG1rZmlmb2F0AJ9CCG1rb3N0ZW1wAKJCCm1rb3N0ZW1wNjQAokIJbWtvc3RlbXBzAKNCC21rb3N0ZW1wczY0AKNCB21rc3RlbXAApEIJbWtzdGVtcDY0AKRCCG1rc3RlbXBzAKVCCm1rc3RlbXBzNjQApUIGbWt0ZW1wAKZCBW1sb2NrAKdCCG1sb2NrYWxsAKhCF2Vtc2NyaXB0ZW5fYnVpbHRpbl9tbWFwAKlCBm1tYXA2NACpQglzZXRtbnRlbnQAqkIJZW5kbW50ZW50AKtCC2dldG1udGVudF9yAKxCBnNzY2FuZgDfRAlnZXRtbnRlbnQArUIJYWRkbW50ZW50AK5CCWhhc21udG9wdACvQghtcHJvdGVjdACJQgdqcmFuZDQ4ALNCB21yYW5kNDgAtEILbXR4X2Rlc3Ryb3kAkSkIbXR4X2luaXQAt0IIbXR4X2xvY2sAuEINbXR4X3RpbWVkbG9jawC6QgttdHhfdHJ5bG9jawC7QgptdHhfdW5sb2NrANwQB211bmxvY2sAp0IKbXVubG9ja2FsbAC8QhllbXNjcmlwdGVuX2J1aWx0aW5fbXVubWFwAL1CA25hbgC+QgRuYW5mAL9CBG5hbmwAwEIJbmFub3NsZWVwAMFCCW5lYXJieWludADCQgpuZWFyYnlpbnRmAMNCCm5lYXJieWludGwAxEIMZ2V0bmV0YnlhZGRyAMQ5DGdldG5ldGJ5bmFtZQDcEAtfX25ld2xvY2FsZQDIQgluZXdsb2NhbGUAyEIKbmV4dGFmdGVyZgDKQgpuZXh0dG93YXJkAMxCC25leHR0b3dhcmRmAM1CC25leHR0b3dhcmRsAM5CBG5mdHcAz0IGbmZ0dzY0AM9CBG5pY2UA0UILc2V0cHJpb3JpdHkApEQIbnNfZ2V0MTYA0kIIbnNfZ2V0MzIA00IIbnNfcHV0MTYA1EIIbnNfcHV0MzIA1UIJbnNfc2tpcHJyANZCDG5zX2luaXRwYXJzZQDXQhJuc19uYW1lX3VuY29tcHJlc3MA2EIKbnNfcGFyc2VycgDZQgxfbnNfZmxhZ2RhdGEDsREGb3BlbjY0ANxCDm9wZW5fbWVtc3RyZWFtAN1CD29wZW5fd21lbXN0cmVhbQDgQghvcGVuYXQ2NADjQgl0Y3NldGF0dHIAv0ULcG9zaXhfY2xvc2UA8EIPcG9zaXhfZmFkdmlzZTY0APFCD3Bvc2l4X2ZhbGxvY2F0ZQDyQhFwb3NpeF9mYWxsb2NhdGU2NADyQg1wb3NpeF9tYWR2aXNlAOMCJHBvc2l4X3NwYXduX2ZpbGVfYWN0aW9uc19hZGRjaGRpcl9ucADzQiFwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRkY2xvc2UA9EIgcG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2FkZGR1cDIA9UIlcG9zaXhfc3Bhd25fZmlsZV9hY3Rpb25zX2FkZGZjaGRpcl9ucAD2QiBwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfYWRkb3BlbgD3QiBwb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfZGVzdHJveQD4Qh1wb3NpeF9zcGF3bl9maWxlX2FjdGlvbnNfaW5pdAD5Qhdwb3NpeF9zcGF3bmF0dHJfZGVzdHJveQDcEBhwb3NpeF9zcGF3bmF0dHJfZ2V0ZmxhZ3MA+kIZcG9zaXhfc3Bhd25hdHRyX2dldHBncm91cAD7Qh1wb3NpeF9zcGF3bmF0dHJfZ2V0c2lnZGVmYXVsdAD8Qhpwb3NpeF9zcGF3bmF0dHJfZ2V0c2lnbWFzawD9QhRwb3NpeF9zcGF3bmF0dHJfaW5pdAD+Qh1wb3NpeF9zcGF3bmF0dHJfZ2V0c2NoZWRwYXJhbQD/Qh1wb3NpeF9zcGF3bmF0dHJfc2V0c2NoZWRwYXJhbQD/Qh5wb3NpeF9zcGF3bmF0dHJfZ2V0c2NoZWRwb2xpY3kA/0IecG9zaXhfc3Bhd25hdHRyX3NldHNjaGVkcG9saWN5AP9CGHBvc2l4X3NwYXduYXR0cl9zZXRmbGFncwCAQxlwb3NpeF9zcGF3bmF0dHJfc2V0cGdyb3VwAIFDHXBvc2l4X3NwYXduYXR0cl9zZXRzaWdkZWZhdWx0AIJDGnBvc2l4X3NwYXduYXR0cl9zZXRzaWdtYXNrAINDBHBvd2YAh0MHcHJlYWQ2NACLQwZwcmVhZHYAjEMIcHJlYWR2NjQAjEMGcHJpbnRmAI1DDl9fc21hbGxfcHJpbnRmAI9DD19fcHJvZ25hbWVfZnVsbAOwER1wcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZQOvERdwcm9ncmFtX2ludm9jYXRpb25fbmFtZQOuERhlbV9wcm94eWluZ19xdWV1ZV9jcmVhdGUAhREZZW1fcHJveHlpbmdfcXVldWVfZGVzdHJveQCRKSFlbXNjcmlwdGVuX3Byb3h5X2dldF9zeXN0ZW1fcXVldWUAhREeZW1zY3JpcHRlbl9wcm94eV9leGVjdXRlX3F1ZXVlAJFDF2Vtc2NyaXB0ZW5fcHJveHlfZmluaXNoAJFDFmVtc2NyaXB0ZW5fcHJveHlfYXN5bmMAkkMVZW1zY3JpcHRlbl9wcm94eV9zeW5jAJJDHmVtc2NyaXB0ZW5fcHJveHlfc3luY193aXRoX2N0eACSQwdwc2VsZWN0AJNDG3B0aHJlYWRfYXR0cl9nZXRkZXRhY2hzdGF0ZQCUQxlwdGhyZWFkX2F0dHJfZ2V0Z3VhcmRzaXplAPtCHHB0aHJlYWRfYXR0cl9nZXRpbmhlcml0c2NoZWQAlUMacHRocmVhZF9hdHRyX2dldHNjaGVkcGFyYW0AlkMbcHRocmVhZF9hdHRyX2dldHNjaGVkcG9saWN5AJdDFXB0aHJlYWRfYXR0cl9nZXRzY29wZQCYQxVwdGhyZWFkX2F0dHJfZ2V0c3RhY2sAmUMZcHRocmVhZF9hdHRyX2dldHN0YWNrc2l6ZQCaQx5wdGhyZWFkX2JhcnJpZXJhdHRyX2dldHBzaGFyZWQAm0MZcHRocmVhZF9jb25kYXR0cl9nZXRjbG9jawCcQxtwdGhyZWFkX2NvbmRhdHRyX2dldHBzaGFyZWQAnUMdcHRocmVhZF9tdXRleGF0dHJfZ2V0cHJvdG9jb2wAnkMccHRocmVhZF9tdXRleGF0dHJfZ2V0cHNoYXJlZACfQxtwdGhyZWFkX211dGV4YXR0cl9nZXRyb2J1c3QAoEMZcHRocmVhZF9tdXRleGF0dHJfZ2V0dHlwZQChQx1wdGhyZWFkX3J3bG9ja2F0dHJfZ2V0cHNoYXJlZACaQxVfcHRocmVhZF9jbGVhbnVwX3B1c2gAokMUX3B0aHJlYWRfY2xlYW51cF9wb3AAo0MMdGhyZF9jdXJyZW50AKRDIWVtc2NyaXB0ZW5fbWFpbl9icm93c2VyX3RocmVhZF9pZAClQxBfX3NpZ19pc19ibG9ja2VkAKZDCHNpZ29yc2V0ALtECXNpZ2FuZHNldACyRAlzaWdkZWxzZXQAs0QNX19zaWdfcGVuZGluZwOtEQdwdHNuYW1lAKlDDHBvc2l4X29wZW5wdACqQwdncmFudHB0ANwQCHVubG9ja3B0AKtDCXB0c25hbWVfcgCsQwhfSU9fcHV0YwDtPw1wdXRjX3VubG9ja2VkAK1DDmZwdXRjX3VubG9ja2VkAK1DEV9JT19wdXRjX3VubG9ja2VkAK1DB3B1dGNoYXIArkMQcHV0Y2hhcl91bmxvY2tlZACvQwZwdXRlbnYAsUMEcHV0dwCzQwVwdXR3YwC0QwhwdXR3Y2hhcgC1QxFwdXR3Y2hhcl91bmxvY2tlZAC1Qwhwd3JpdGU2NAC2Qwdwd3JpdGV2ALdDCXB3cml0ZXY2NAC3Qwdxc29ydF9yALhDDV9fc2lnX2FjdGlvbnMDrBEFc3JhbmQAw0MEcmFuZADEQwZyYW5kX3IAxUMHc3JhbmRvbQDGQwlpbml0c3RhdGUAyEMIc2V0c3RhdGUAykMGcmFuZG9tAMtDCXJlYWRkaXI2NADNQwlyZWFkZGlyX3IAzkMLcmVhZGRpcjY0X3IAzkMIcmVjdm1tc2cA00MHcmVnY29tcADUQwdyZWdmcmVlANpDCHJlZ2Vycm9yAO1DB3JlZ2V4ZWMA7kMJcmVtYWluZGVyAPJDBnJlbXF1bwD2QwRkcmVtAPJDCnJlbWFpbmRlcmYA80MHcmVtcXVvZgD3QwVkcmVtZgDzQwpyZW1haW5kZXJsAPRDB3JlbXF1b2wA+EMGcmVtb3ZlAPVDCHJlc19pbml0AIURC3Jlc19ta3F1ZXJ5APtDC19fcmVzX21zZW5kAP5DCHJlc19zZW5kAP9DC19fcmVzX3N0YXRlAIBEBnJpbmRleACDRAVzY2FsYgCJRAZzY2FsYmYAikQHc2NhbGJsbgDGQQhzY2FsYmxuZgDHQQhzY2FsYmxubADIQQdzY2FuZGlyAI5ECXNjYW5kaXI2NACORAVzY2FuZgCPRAZ2c2NhbmYAlEYOX19pc29jOTlfc2NhbmYAj0QNc2VjdXJlX2dldGVudgCRRAZzZWVkNDgAkkQHc2Vla2RpcgCTRAhzZW5kbW1zZwCVRAplbmRzZXJ2ZW50AKgQCnNldHNlcnZlbnQAkSkKZ2V0c2VydmVudACFEQZzZXRidWYAlkQJc2V0YnVmZmVyAJdEDXNldGRvbWFpbm5hbWUAmEQHc2V0ZWdpZACZRAdzZXRldWlkAJlEE19lbXNjcmlwdGVuX3RpbWVvdXQAnUQKc2V0bGluZWJ1ZgCgRAlzZXRyZXNnaWQApkQJc2V0cmVzdWlkAKZEC3NldHJsaW1pdDY0AKdECHNobV9vcGVuAK5ECnNobV91bmxpbmsAr0QJc2lnYWN0aW9uALBECmJzZF9zaWduYWwAuEQNX19zeXN2X3NpZ25hbAC4RAdzaWduZ2FtA6sRC3NpZ25pZmljYW5kALlEDHNpZ25pZmljYW5kZgC6RAtzaWdwcm9jbWFzawC8RAZzaW5jb3MAw0QHc2luY29zZgDERAdzaW5jb3NsAMVEBXNpbmhsAMlEBHNpbmwAykQFc2xlZXAAy0QKc29ja2F0bWFyawDNRAh2c3ByaW50ZgCZRgl2c2lwcmludGYAmkYPX19zbWFsbF9zcHJpbnRmANBEEF9fc21hbGxfdnNwcmludGYAm0YHc3JhbmQ0OADeRAd2c3NjYW5mAJxGD19faXNvYzk5X3NzY2FuZgDfRAZzdGF0NjQA4EQGc3RhdGZzAOFEB2ZzdGF0ZnMA4kQJc3RhdHZmczY0AONECHN0YXRmczY0AOFECmZzdGF0dmZzNjQA5UQJZnN0YXRmczY0AOJEBnN0cGNweQDnRAdzdHBuY3B5AOhEDl9fc3RyY2FzZWNtcF9sAOpEDHN0cmNhc2VjbXBfbADqRApzdHJjYXNlc3RyAOtEC3N0cm5jYXNlY21wAP9ECXN0cmNocm51bADuRAtfX3N0cmNvbGxfbADwRAlzdHJjb2xsX2wA8EQMX19zdHJlcnJvcl9sAPVECnN0cmVycm9yX2wA9UQKc3RyZXJyb3JfcgD3RBBfX3hwZ19zdHJlcnJvcl9yAPdECXN0cmZtb25fbAD4RAdzdHJmbW9uAPpEB3N0cmxjYXQA+0QHc3RybGNweQD8RAZzdHJsd3IA/kQPX19zdHJuY2FzZWNtcF9sAIBFDXN0cm5jYXNlY21wX2wAgEUHc3RybmR1cACERQdzdHJwYnJrAIZFBnN0cnNlcACIRQZzdHJ0b2YAjEUHc3RydG9sZACPRQhzdHJ0b2ZfbACQRQhzdHJ0b2RfbACRRQlzdHJ0b2xkX2wAkkUKX19zdHJ0b2ZfbACQRQpfX3N0cnRvZF9sAJFFC19fc3RydG9sZF9sAJJFBnN0cnRvawCTRQhzdHJ0b2tfcgCURQdzdHJ0b2xsAJdFCXN0cnRvaW1heACaRQlzdHJ0b3VtYXgAm0URX19zdHJ0b2xfaW50ZXJuYWwAmUUSX19zdHJ0b3VsX2ludGVybmFsAJhFEl9fc3RydG9sbF9pbnRlcm5hbACXRRNfX3N0cnRvdWxsX2ludGVybmFsAJVFFF9fc3RydG9pbWF4X2ludGVybmFsAJpFFF9fc3RydG91bWF4X2ludGVybmFsAJtFCnN0cnRvdWxsX2wAnEUJc3RydG9sbF9sAJ1FCXN0cnRvdWxfbACeRQhzdHJ0b2xfbACfRQZzdHJ1cHIAoEUKc3RydmVyc2NtcAChRQtfX3N0cnhmcm1fbACiRQdzdHJ4ZnJtAKNFCXN0cnhmcm1fbACiRQRzd2FiAKRFCHN3cHJpbnRmAKVFCXZzd3ByaW50ZgCeRgdzd3NjYW5mAKZFCHZzd3NjYW5mAKBGEF9faXNvYzk5X3N3c2NhbmYApkUJc3ltbGlua2F0AKhFCnNldGxvZ21hc2sAq0UIY2xvc2Vsb2cArEUHb3BlbmxvZwCtRQZzeXNsb2cAr0UHdnN5c2xvZwCwRQV0YW5oZgC0RQV0YW5obAC1RQR0YW5sALZFB3RjZHJhaW4At0UGdGNmbG93ALhFB3RjZmx1c2gAuUUJdGNnZXRhdHRyALpFCHRjZ2V0c2lkALxFDHRjZ2V0d2luc2l6ZQC9RQt0Y3NlbmRicmVhawC+RQx0Y3NldHdpbnNpemUAwUUHdGRlbGV0ZQDCRQh0ZGVzdHJveQDDRQd0ZWxsZGlyAN0dB3RlbXBuYW0AxEUIbmdldHRleHQAyEUFdGZpbmQAyUUGdGdhbW1hAMpFB3RnYW1tYWYAy0UHdGdhbW1hbADMRQt0aHJkX2NyZWF0ZQDNRQl0aHJkX2V4aXQAzkUJdGhyZF9qb2luAM9FCnRocmRfc2xlZXAA0EUKdGhyZF95aWVsZACoEBplbXNjcmlwdGVuX3NldF90aHJlYWRfbmFtZQCREQx0aW1lc3BlY19nZXQA0UUHdG1wZmlsZQDSRQl0bXBmaWxlNjQA0kUGdG1wbmFtANNFB3RvYXNjaWkA1EULX190b2xvd2VyX2wA1kUJdG9sb3dlcl9sANZFC19fdG91cHBlcl9sANhFCXRvdXBwZXJfbADYRQxfX3Rvd3VwcGVyX2wA3EUMX190b3dsb3dlcl9sAN1FCnRvd3VwcGVyX2wA3EUKdG93bG93ZXJfbADdRQV0cnVuYwDhRQp0cnVuY2F0ZTY0AOJFBnRydW5jZgDjRQZ0cnVuY2wA5EUHdHNlYXJjaADnRQp0c3NfY3JlYXRlAOhFCnRzc19kZWxldGUAuR8HdHNzX3NldADpRQd0dHluYW1lAOpFBXR3YWxrAOxFBnVhbGFybQDuRQd1bmdldHdjAPJFC19fdXNlbG9jYWxlAPZFCXVzZWxvY2FsZQD2RQZ1c2xlZXAA90UFdXRpbWUA+EULdmVyc2lvbnNvcnQA/UUNdmVyc2lvbnNvcnQ2NAD9RRNfX3ZmcHJpbnRmX2ludGVybmFsAP5FEF9faXNvYzk5X3Zmc2NhbmYAikYHd2NzbmxlbgC5RhFfX2lzb2M5OV92ZndzY2FuZgCSRgd2cHJpbnRmAJNGD19faXNvYzk5X3ZzY2FuZgCURgp2c25pcHJpbnRmAJdGEV9fc21hbGxfdnNucHJpbnRmAJhGEF9faXNvYzk5X3Zzc2NhbmYAnEYRX19pc29jOTlfdnN3c2NhbmYAoEYIdndwcmludGYAokYHdndzY2FuZgCjRhBfX2lzb2M5OV92d3NjYW5mAKNGBndjcGNweQCmRgd3Y3BuY3B5AKdGCndjc2Nhc2VjbXAAqUYLd2NzbmNhc2VjbXAAtEYMd2NzY2FzZWNtcF9sAKpGBndjc2NhdACrRgtfX3djc2NvbGxfbACuRgl3Y3Njb2xsX2wArkYHd2NzY3NwbgCxRgZ3Y3NkdXAAskYHd21lbWNweQDcRg13Y3NuY2FzZWNtcF9sALVGB3djc25jYXQAtkYHd21lbXNldADeRgd3bWVtY2hyANpGCndjc25ydG9tYnMAukYHd2NzcGJyawC7RgZ3Y3NzcG4AvkYGd2Nzc3RyAL9GBndjc3RvZgDARgZ3Y3N0b2QAw0YHd2NzdG9sZADERgh3Y3N0b3VsbADGRgd3Y3N0b2xsAMlGB3djc3RvdWwAykYJd2NzdG9pbWF4AMxGCXdjc3RvdW1heADNRgZ3Y3N3Y3MAz0YId2Nzd2lkdGgA0EYHd2N3aWR0aADZRgtfX3djc3hmcm1fbADRRgl3Y3N4ZnJtX2wA0UYFd2N0b2IA00YHd2N0cmFucwDVRgl0b3djdHJhbnMA1kYLX193Y3RyYW5zX2wA10YNX190b3djdHJhbnNfbADYRgl3Y3RyYW5zX2wA10YLdG93Y3RyYW5zX2wA2EYId21lbW1vdmUA3UYHd3ByaW50ZgDfRgZ3c2NhbmYA4kYPX19pc29jOTlfd3NjYW5mAOJGBHNicmsA/EYOX19saWJjX3JlYWxsb2MA5UYQcmVhbGxvY19pbl9wbGFjZQDnRghtZW1hbGlnbgDoRgZ2YWxsb2MA60YHcHZhbGxvYwDsRghtYWxsaW5mbwDtRgdtYWxsb3B0AO5GC21hbGxvY190cmltAO9GEm1hbGxvY191c2FibGVfc2l6ZQDwRhBtYWxsb2NfZm9vdHByaW50APFGFG1hbGxvY19tYXhfZm9vdHByaW50APJGFm1hbGxvY19mb290cHJpbnRfbGltaXQA80YabWFsbG9jX3NldF9mb290cHJpbnRfbGltaXQA9EYSaW5kZXBlbmRlbnRfY2FsbG9jAPVGFGluZGVwZW5kZW50X2NvbWFsbG9jAPdGCWJ1bGtfZnJlZQD4RhdlbXNjcmlwdGVuX2dldF9zYnJrX3B0cgD7RgNicmsA/UYGX190cmFwAMg8CV9fYWJzdmRpMgD+RglfX2Fic3ZzaTIA/0YJX19hYnN2dGkyAIBHCF9fYWRkZGYzAIFHDV9fZmVfZ2V0cm91bmQAhRESX19mZV9yYWlzZV9pbmV4YWN0AIURCF9fYWRkc2YzAIJHCV9fYXNobHRpMwCIRwlfX2xzaHJ0aTMApkgJX19hZGR2ZGkzAIRHCV9fYWRkdnNpMwCFRwlfX2FkZHZ0aTMAhkcJX19hc2hsZGkzAIdHCV9fYXNocmRpMwCJRwlfX2FzaHJ0aTMAikcVX19hdG9taWNfaXNfbG9ja19mcmVlAItHDV9fYXRvbWljX2xvYWQAjEcOX19hdG9taWNfc3RvcmUAjUcZX19hdG9taWNfY29tcGFyZV9leGNoYW5nZQCORxFfX2F0b21pY19leGNoYW5nZQCPRw9fX2F0b21pY19sb2FkXzEAkEcPX19hdG9taWNfbG9hZF8yAJFHD19fYXRvbWljX2xvYWRfNACSRw9fX2F0b21pY19sb2FkXzgAk0cQX19hdG9taWNfbG9hZF8xNgCURxBfX2F0b21pY19zdG9yZV8xAJVHEF9fYXRvbWljX3N0b3JlXzIAlkcQX19hdG9taWNfc3RvcmVfNACXRxBfX2F0b21pY19zdG9yZV84AJhHEV9fYXRvbWljX3N0b3JlXzE2AJlHE19fYXRvbWljX2V4Y2hhbmdlXzEAmkcTX19hdG9taWNfZXhjaGFuZ2VfMgCbRxNfX2F0b21pY19leGNoYW5nZV80AJxHE19fYXRvbWljX2V4Y2hhbmdlXzgAnUcUX19hdG9taWNfZXhjaGFuZ2VfMTYAnkcbX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV8xAJ9HG19fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfMgCgRxtfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlXzQAoUcbX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV84AKJHHF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfMTYAo0cUX19hdG9taWNfZmV0Y2hfYWRkXzEApEcUX19hdG9taWNfZmV0Y2hfYWRkXzIApUcUX19hdG9taWNfZmV0Y2hfYWRkXzQApkcUX19hdG9taWNfZmV0Y2hfYWRkXzgAp0cVX19hdG9taWNfZmV0Y2hfYWRkXzE2AKhHFF9fYXRvbWljX2ZldGNoX3N1Yl8xAKlHFF9fYXRvbWljX2ZldGNoX3N1Yl8yAKpHFF9fYXRvbWljX2ZldGNoX3N1Yl80AKtHFF9fYXRvbWljX2ZldGNoX3N1Yl84AKxHFV9fYXRvbWljX2ZldGNoX3N1Yl8xNgCtRxRfX2F0b21pY19mZXRjaF9hbmRfMQCuRxRfX2F0b21pY19mZXRjaF9hbmRfMgCvRxRfX2F0b21pY19mZXRjaF9hbmRfNACwRxRfX2F0b21pY19mZXRjaF9hbmRfOACxRxVfX2F0b21pY19mZXRjaF9hbmRfMTYAskcTX19hdG9taWNfZmV0Y2hfb3JfMQCzRxNfX2F0b21pY19mZXRjaF9vcl8yALRHE19fYXRvbWljX2ZldGNoX29yXzQAtUcTX19hdG9taWNfZmV0Y2hfb3JfOAC2RxRfX2F0b21pY19mZXRjaF9vcl8xNgC3RxRfX2F0b21pY19mZXRjaF94b3JfMQC4RxRfX2F0b21pY19mZXRjaF94b3JfMgC5RxRfX2F0b21pY19mZXRjaF94b3JfNAC6RxRfX2F0b21pY19mZXRjaF94b3JfOAC7RxVfX2F0b21pY19mZXRjaF94b3JfMTYAvEcVX19hdG9taWNfZmV0Y2hfbmFuZF8xAL1HFV9fYXRvbWljX2ZldGNoX25hbmRfMgC+RxVfX2F0b21pY19mZXRjaF9uYW5kXzQAv0cVX19hdG9taWNfZmV0Y2hfbmFuZF84AMBHFl9fYXRvbWljX2ZldGNoX25hbmRfMTYAwUcRYXRvbWljX2ZsYWdfY2xlYXIAwkcaYXRvbWljX2ZsYWdfY2xlYXJfZXhwbGljaXQAw0cYYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0AMRHIWF0b21pY19mbGFnX3Rlc3RfYW5kX3NldF9leHBsaWNpdADFRxNhdG9taWNfc2lnbmFsX2ZlbmNlAJEpE2F0b21pY190aHJlYWRfZmVuY2UAkSkKX19ic3dhcGRpMgDGRwpfX2Jzd2Fwc2kyANBADV9fY2xlYXJfY2FjaGUAx0cIX19jbHpkaTIAyEcIX19jbHpzaTIAyUcIX19jbHp0aTIAykcIX19jbXBkaTIAy0cIX19jbXB0aTIAzEcHX19sZWRmMgDNRwdfX2dlZGYyAM5HCl9fdW5vcmRkZjIAz0cHX19lcWRmMgDNRwdfX2x0ZGYyAM1HB19fbmVkZjIAzUcHX19ndGRmMgDORwdfX2xlc2YyANBHB19fZ2VzZjIA0UcKX191bm9yZHNmMgDSRwdfX2Vxc2YyANBHB19fbHRzZjIA0EcHX19uZXNmMgDQRwdfX2d0c2YyANFHCF9fY3R6ZGkyANZHCF9fY3R6c2kyANdHCF9fY3R6dGkyANhHCF9fZGl2ZGMzANlHCF9fZGl2ZGYzANpHCF9fZGl2ZGkzANtHDF9fdWRpdm1vZGRpNADfSAtfX2Rpdm1vZGRpNADcRwtfX2Rpdm1vZHNpNADdRwxfX3VkaXZtb2RzaTQA4EgLX19kaXZtb2R0aTQA3kcMX191ZGl2bW9kdGk0AOFICF9fZGl2c2MzAN9HCF9fZGl2c2YzAOBHCF9fZGl2c2kzAOFHCF9fZGl2dGMzAOJHCF9fZGl2dGkzAORHCF9fZGl2eGMzAOVHCHNldFRocmV3AOZHCV9fVEhSRVdfXwOqEQxfX3RocmV3VmFsdWUDqREKc2F2ZVNldGptcADnRwtzZXRUZW1wUmV0MADqRwp0ZXN0U2V0am1wAOhHEmVtc2NyaXB0ZW5fbG9uZ2ptcADpRwtnZXRUZW1wUmV0MADrRw5fX2dldF90ZW1wX3JldADrRw5fX3NldF90ZW1wX3JldADqRxRfX2VtdXRsc19nZXRfYWRkcmVzcwDsRxZfX2VuYWJsZV9leGVjdXRlX3N0YWNrAO9HDV9fZXh0ZW5kaGZzZjIA8UcOX19nbnVfaDJmX2llZWUA8kcNX19leHRlbmRzZmRmMgDzRwhfX2Zmc2RpMgD1RwhfX2Zmc3NpMgD2RwhfX2Zmc3RpMgD3RwlfX2ZpeGRmZGkA+EcMX19maXh1bnNkZmRpAIFICV9fZml4ZGZzaQD5RwlfX2ZpeGRmdGkA+kcJX19maXhzZmRpAPtHDF9fZml4dW5zc2ZkaQCESAlfX2ZpeHNmc2kA/EcJX19maXhzZnRpAP1HCV9fZml4dGZ0aQCASAxfX2ZpeHVuc2Rmc2kAgkgMX19maXh1bnNkZnRpAINIDF9fZml4dW5zc2ZzaQCFSAxfX2ZpeHVuc3NmdGkAhkgMX19maXh1bnN0ZmRpAIdIDF9fZml4dW5zdGZzaQCISAxfX2ZpeHVuc3RmdGkAiUgMX19maXh1bnN4ZmRpAIpIDF9fZml4dW5zeGZzaQCLSAxfX2ZpeHVuc3hmdGkAjEgJX19maXh4ZmRpAI1ICV9fZml4eGZ0aQCOSAtfX2Zsb2F0ZGlkZgCPSAtfX2Zsb2F0ZGlzZgCQSAtfX2Zsb2F0ZGl0ZgCRSAtfX2Zsb2F0ZGl4ZgCSSAtfX2Zsb2F0c2lkZgCTSAtfX2Zsb2F0c2lzZgCUSAtfX2Zsb2F0dGlkZgCWSAtfX2Zsb2F0dGlzZgCXSAtfX2Zsb2F0dGl0ZgCYSAtfX2Zsb2F0dGl4ZgCZSA1fX2Zsb2F0dW5kaWRmAJpIDV9fZmxvYXR1bmRpc2YAm0gNX19mbG9hdHVuZGl0ZgCcSA1fX2Zsb2F0dW5kaXhmAJ1IDV9fZmxvYXR1bnNpZGYAnkgNX19mbG9hdHVuc2lzZgCfSA1fX2Zsb2F0dW50aWRmAKFIDV9fZmxvYXR1bnRpc2YAokgNX19mbG9hdHVudGl0ZgCjSA1fX2Zsb2F0dW50aXhmAKRICV9fbHNocmRpMwClSAhfX21vZGRpMwCnSAhfX21vZHNpMwCoSAhfX21vZHRpMwCpSAhfX211bGRmMwCrSAhfX211bGRpMwCsSAlfX211bG9kaTQArUgJX19tdWxvc2k0AK5ICV9fbXVsb3RpNACvSAlfX3VkaXZ0aTMA40gIX19tdWxzZjMAsUgJX19tdWx2ZGkzALVICV9fbXVsdnNpMwC2SAlfX211bHZ0aTMAt0gIX19tdWx4YzMAskgIX19uZWdkZjIAuEgIX19uZWdkaTIAuUgIX19uZWdzZjIAukgIX19uZWd0aTIAu0gJX19uZWd2ZGkyALxICV9fbmVndnNpMgC9SAlfX25lZ3Z0aTIAvkgLX19wYXJpdHlkaTIAv0gLX19wYXJpdHlzaTIAwEgLX19wYXJpdHl0aTIAwUgNX19wb3Bjb3VudGRpMgDCSA1fX3BvcGNvdW50c2kyAMNIDV9fcG9wY291bnR0aTIAxEgJX19wb3dpZGYyAMVICV9fcG93aXNmMgDGSAlfX3Bvd2l0ZjIAx0gJX19wb3dpeGYyAMdIFWVtc2NyaXB0ZW5fc3RhY2tfaW5pdADISBtlbXNjcmlwdGVuX3N0YWNrX3NldF9saW1pdHMAyUgZZW1zY3JpcHRlbl9zdGFja19nZXRfZnJlZQDKSAlzdGFja1NhdmUAzUgMc3RhY2tSZXN0b3JlAM5ICnN0YWNrQWxsb2MAz0gIX19zdWJkZjMA0EgIX19zdWJzZjMA0UgJX19zdWJ2ZGkzANNICV9fc3VidnNpMwDUSAlfX3N1YnZ0aTMA1UgMX190cnVuY2RmaGYyANZIDF9fdHJ1bmNkZnNmMgDXSAxfX3RydW5jc2ZoZjIA2EgOX19nbnVfZjJoX2llZWUA2UgJX191Y21wZGkyANxICV9fdWNtcHRpMgDdSAlfX3VkaXZkaTMA3kgJX191ZGl2c2kzAOJICV9fdW1vZGRpMwDkSAlfX3Vtb2RzaTMA5UgJX191bW9kdGkzAOZILl9aTlN0M19fMjZfX3NvcnRJUk5TXzZfX2xlc3NJY2NFRVBjRUV2VDBfUzVfVF8A50giX1pOU3QzX18yN19fbG9nMmlCNnYxNTAwN0lsRUVUX1MxXwDoSEVfWk5TdDNfXzIxNl9VbndyYXBBbGdQb2xpY3lJUk5TXzZfX2xlc3NJY2NFRUUxMF9fZ2V0X2NvbXBCNnYxNTAwN0VTM18A2TB3X1pOU3QzX18yMTFfX2ludHJvc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFdlQxX1M2X1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUA6UghX1pOU3QzX18yMTJfX2xpYmNwcF9jbHpCNnYxNTAwN0VqAOpIJl9aTktTdDNfXzI2X19sZXNzSWNjRWNsQjZ2MTUwMDdFUktjUzNfAOtITl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU5aXRlcl9zd2FwQjZ2MTUwMDdJUlBjUzVfRUV2T1RfT1QwXwDsSKYBX1pOU3QzX18yMjRfX3NvcnQ0X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M3XwDtSKkBX1pOU3QzX18yMjRfX3NvcnQ1X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M4X1M3XwDuSFNfWk5TdDNfXzIxOF9faW5zZXJ0aW9uX3NvcnRfM0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFdlQxX1M2X1QwXwDvSFhfWk5TdDNfXzIxNF9fcGFydGlhbF9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJY2NFRVBjUzVfRUVUMV9TNl9TNl9UMl9SVDBfAPBIXV9aTlN0M19fMjE5X19zb3J0NV93cmFwX3BvbGljeUlOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFalQxX1M2X1M2X1M2X1M2X1QwXwDxSEpfWk5TdDNfXzI3X19zb3J0M0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFalQxX1M2X1M2X1QwXwDySERfWk5TdDNfXzIyN19faW5zZXJ0aW9uX3NvcnRfaW5jb21wbGV0ZUlSTlNfNl9fbGVzc0ljY0VFUGNFRWJUMF9TNV9UXwDzSKMBX1pOU3QzX18yMjRfX3NvcnQzX21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M3XwD0SC5fWk5TdDNfXzI2X19zb3J0SVJOU182X19sZXNzSXd3RUVQd0VFdlQwX1M1X1RfAPVIRV9aTlN0M19fMjE2X1Vud3JhcEFsZ1BvbGljeUlSTlNfNl9fbGVzc0l3d0VFRTEwX19nZXRfY29tcEI2djE1MDA3RVMzXwDZMHdfWk5TdDNfXzIxMV9faW50cm9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJd3dFRVB3RUV2VDFfUzZfVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQD2SCZfWk5LU3QzX18yNl9fbGVzc0l3d0VjbEI2djE1MDA3RVJLd1MzXwD3SE5fWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFOWl0ZXJfc3dhcEI2djE1MDA3SVJQd1M1X0VFdk9UX09UMF8A+EimAV9aTlN0M19fMjI0X19zb3J0NF9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l3d0VFUHdFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TOF9TN18A+UipAV9aTlN0M19fMjI0X19zb3J0NV9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l3d0VFUHdFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TOF9TOF9TN18A+khTX1pOU3QzX18yMThfX2luc2VydGlvbl9zb3J0XzNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l3d0VFUHdFRXZUMV9TNl9UMF8A+0hYX1pOU3QzX18yMTRfX3BhcnRpYWxfc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXd3RUVQd1M1X0VFVDFfUzZfUzZfVDJfUlQwXwD8SF1fWk5TdDNfXzIxOV9fc29ydDVfd3JhcF9wb2xpY3lJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l3d0VFUHdFRWpUMV9TNl9TNl9TNl9TNl9UMF8A/UhKX1pOU3QzX18yN19fc29ydDNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l3d0VFUHdFRWpUMV9TNl9TNl9UMF8A/khEX1pOU3QzX18yMjdfX2luc2VydGlvbl9zb3J0X2luY29tcGxldGVJUk5TXzZfX2xlc3NJd3dFRVB3RUViVDBfUzVfVF8A/0ijAV9aTlN0M19fMjI0X19zb3J0M19tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l3d0VFUHdFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TN18AgEkuX1pOU3QzX18yNl9fc29ydElSTlNfNl9fbGVzc0lhYUVFUGFFRXZUMF9TNV9UXwCBSUVfWk5TdDNfXzIxNl9VbndyYXBBbGdQb2xpY3lJUk5TXzZfX2xlc3NJYWFFRUUxMF9fZ2V0X2NvbXBCNnYxNTAwN0VTM18A2TB3X1pOU3QzX18yMTFfX2ludHJvc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWFhRUVQYUVFdlQxX1M2X1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAgkkmX1pOS1N0M19fMjZfX2xlc3NJYWFFY2xCNnYxNTAwN0VSS2FTM18A60hOX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTlpdGVyX3N3YXBCNnYxNTAwN0lSUGFTNV9FRXZPVF9PVDBfAOxIpgFfWk5TdDNfXzIyNF9fc29ydDRfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJYWFFRVBhRUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzhfUzdfAO1IqQFfWk5TdDNfXzIyNF9fc29ydDVfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJYWFFRVBhRUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzhfUzhfUzdfAO5IU19aTlN0M19fMjE4X19pbnNlcnRpb25fc29ydF8zSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJYWFFRVBhRUV2VDFfUzZfVDBfAO9IWF9aTlN0M19fMjE0X19wYXJ0aWFsX3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lhYUVFUGFTNV9FRVQxX1M2X1M2X1QyX1JUMF8A8EhdX1pOU3QzX18yMTlfX3NvcnQ1X3dyYXBfcG9saWN5SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJYWFFRVBhRUVqVDFfUzZfUzZfUzZfUzZfVDBfAPFISl9aTlN0M19fMjdfX3NvcnQzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJYWFFRVBhRUVqVDFfUzZfUzZfVDBfAPJIRF9aTlN0M19fMjI3X19pbnNlcnRpb25fc29ydF9pbmNvbXBsZXRlSVJOU182X19sZXNzSWFhRUVQYUVFYlQwX1M1X1RfAPNIowFfWk5TdDNfXzIyNF9fc29ydDNfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJYWFFRVBhRUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzdfAPRILl9aTlN0M19fMjZfX3NvcnRJUk5TXzZfX2xlc3NJaGhFRVBoRUV2VDBfUzVfVF8Ag0lFX1pOU3QzX18yMTZfVW53cmFwQWxnUG9saWN5SVJOU182X19sZXNzSWhoRUVFMTBfX2dldF9jb21wQjZ2MTUwMDdFUzNfANkwd19aTlN0M19fMjExX19pbnRyb3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0loaEVFUGhFRXZUMV9TNl9UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAIRJJl9aTktTdDNfXzI2X19sZXNzSWhoRWNsQjZ2MTUwMDdFUktoUzNfAIVJTl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU5aXRlcl9zd2FwQjZ2MTUwMDdJUlBoUzVfRUV2T1RfT1QwXwDsSKYBX1pOU3QzX18yMjRfX3NvcnQ0X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M3XwCGSakBX1pOU3QzX18yMjRfX3NvcnQ1X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M4X1M3XwCHSVNfWk5TdDNfXzIxOF9faW5zZXJ0aW9uX3NvcnRfM0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFdlQxX1M2X1QwXwCISVhfWk5TdDNfXzIxNF9fcGFydGlhbF9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJaGhFRVBoUzVfRUVUMV9TNl9TNl9UMl9SVDBfAIlJXV9aTlN0M19fMjE5X19zb3J0NV93cmFwX3BvbGljeUlOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFalQxX1M2X1M2X1M2X1M2X1QwXwCKSUpfWk5TdDNfXzI3X19zb3J0M0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFalQxX1M2X1M2X1QwXwCLSURfWk5TdDNfXzIyN19faW5zZXJ0aW9uX3NvcnRfaW5jb21wbGV0ZUlSTlNfNl9fbGVzc0loaEVFUGhFRWJUMF9TNV9UXwCMSaMBX1pOU3QzX18yMjRfX3NvcnQzX21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M3XwCNSS5fWk5TdDNfXzI2X19zb3J0SVJOU182X19sZXNzSXNzRUVQc0VFdlQwX1M1X1RfAI5JRV9aTlN0M19fMjE2X1Vud3JhcEFsZ1BvbGljeUlSTlNfNl9fbGVzc0lzc0VFRTEwX19nZXRfY29tcEI2djE1MDA3RVMzXwDZMHdfWk5TdDNfXzIxMV9faW50cm9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJc3NFRVBzRUV2VDFfUzZfVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQCPSSZfWk5LU3QzX18yNl9fbGVzc0lzc0VjbEI2djE1MDA3RVJLc1MzXwCQSU5fWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFOWl0ZXJfc3dhcEI2djE1MDA3SVJQc1M1X0VFdk9UX09UMF8AkUmmAV9aTlN0M19fMjI0X19zb3J0NF9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lzc0VFUHNFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TOF9TN18AkkmpAV9aTlN0M19fMjI0X19zb3J0NV9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lzc0VFUHNFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TOF9TOF9TN18Ak0lTX1pOU3QzX18yMThfX2luc2VydGlvbl9zb3J0XzNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lzc0VFUHNFRXZUMV9TNl9UMF8AlElYX1pOU3QzX18yMTRfX3BhcnRpYWxfc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXNzRUVQc1M1X0VFVDFfUzZfUzZfVDJfUlQwXwCVSV1fWk5TdDNfXzIxOV9fc29ydDVfd3JhcF9wb2xpY3lJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lzc0VFUHNFRWpUMV9TNl9TNl9TNl9TNl9UMF8AlklKX1pOU3QzX18yN19fc29ydDNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lzc0VFUHNFRWpUMV9TNl9TNl9UMF8Al0lEX1pOU3QzX18yMjdfX2luc2VydGlvbl9zb3J0X2luY29tcGxldGVJUk5TXzZfX2xlc3NJc3NFRVBzRUViVDBfUzVfVF8AmEmjAV9aTlN0M19fMjI0X19zb3J0M19tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lzc0VFUHNFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TN18AmUkuX1pOU3QzX18yNl9fc29ydElSTlNfNl9fbGVzc0l0dEVFUHRFRXZUMF9TNV9UXwCaSUVfWk5TdDNfXzIxNl9VbndyYXBBbGdQb2xpY3lJUk5TXzZfX2xlc3NJdHRFRUUxMF9fZ2V0X2NvbXBCNnYxNTAwN0VTM18A2TB3X1pOU3QzX18yMTFfX2ludHJvc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXR0RUVQdEVFdlQxX1M2X1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAm0kmX1pOS1N0M19fMjZfX2xlc3NJdHRFY2xCNnYxNTAwN0VSS3RTM18AnElOX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTlpdGVyX3N3YXBCNnYxNTAwN0lSUHRTNV9FRXZPVF9PVDBfAJFJpgFfWk5TdDNfXzIyNF9fc29ydDRfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJdHRFRVB0RUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzhfUzdfAJ1JqQFfWk5TdDNfXzIyNF9fc29ydDVfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJdHRFRVB0RUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzhfUzhfUzdfAJ5JU19aTlN0M19fMjE4X19pbnNlcnRpb25fc29ydF8zSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJdHRFRVB0RUV2VDFfUzZfVDBfAJ9JWF9aTlN0M19fMjE0X19wYXJ0aWFsX3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l0dEVFUHRTNV9FRVQxX1M2X1M2X1QyX1JUMF8AoEldX1pOU3QzX18yMTlfX3NvcnQ1X3dyYXBfcG9saWN5SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJdHRFRVB0RUVqVDFfUzZfUzZfUzZfUzZfVDBfAKFJSl9aTlN0M19fMjdfX3NvcnQzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJdHRFRVB0RUVqVDFfUzZfUzZfVDBfAKJJRF9aTlN0M19fMjI3X19pbnNlcnRpb25fc29ydF9pbmNvbXBsZXRlSVJOU182X19sZXNzSXR0RUVQdEVFYlQwX1M1X1RfAKNJowFfWk5TdDNfXzIyNF9fc29ydDNfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJdHRFRVB0RUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzdfAKRJLl9aTlN0M19fMjZfX3NvcnRJUk5TXzZfX2xlc3NJaWlFRVBpRUV2VDBfUzVfVF8ApUlFX1pOU3QzX18yMTZfVW53cmFwQWxnUG9saWN5SVJOU182X19sZXNzSWlpRUVFMTBfX2dldF9jb21wQjZ2MTUwMDdFUzNfANkwd19aTlN0M19fMjExX19pbnRyb3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lpaUVFUGlFRXZUMV9TNl9UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAKZJJl9aTktTdDNfXzI2X19sZXNzSWlpRWNsQjZ2MTUwMDdFUktpUzNfAPdITl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU5aXRlcl9zd2FwQjZ2MTUwMDdJUlBpUzVfRUV2T1RfT1QwXwD4SKYBX1pOU3QzX18yMjRfX3NvcnQ0X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M3XwD5SKkBX1pOU3QzX18yMjRfX3NvcnQ1X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M4X1M3XwD6SFNfWk5TdDNfXzIxOF9faW5zZXJ0aW9uX3NvcnRfM0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFdlQxX1M2X1QwXwD7SFhfWk5TdDNfXzIxNF9fcGFydGlhbF9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJaWlFRVBpUzVfRUVUMV9TNl9TNl9UMl9SVDBfAPxIXV9aTlN0M19fMjE5X19zb3J0NV93cmFwX3BvbGljeUlOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFalQxX1M2X1M2X1M2X1M2X1QwXwD9SEpfWk5TdDNfXzI3X19zb3J0M0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFalQxX1M2X1M2X1QwXwD+SERfWk5TdDNfXzIyN19faW5zZXJ0aW9uX3NvcnRfaW5jb21wbGV0ZUlSTlNfNl9fbGVzc0lpaUVFUGlFRWJUMF9TNV9UXwD/SKMBX1pOU3QzX18yMjRfX3NvcnQzX21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M3XwCASS5fWk5TdDNfXzI2X19zb3J0SVJOU182X19sZXNzSWpqRUVQakVFdlQwX1M1X1RfAKdJRV9aTlN0M19fMjE2X1Vud3JhcEFsZ1BvbGljeUlSTlNfNl9fbGVzc0lqakVFRTEwX19nZXRfY29tcEI2djE1MDA3RVMzXwDZMHdfWk5TdDNfXzIxMV9faW50cm9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJampFRVBqRUV2VDFfUzZfVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQCoSSZfWk5LU3QzX18yNl9fbGVzc0lqakVjbEI2djE1MDA3RVJLalMzXwCpSU5fWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFOWl0ZXJfc3dhcEI2djE1MDA3SVJQalM1X0VFdk9UX09UMF8A+EimAV9aTlN0M19fMjI0X19zb3J0NF9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lqakVFUGpFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TOF9TN18AqkmpAV9aTlN0M19fMjI0X19zb3J0NV9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lqakVFUGpFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TOF9TOF9TN18Aq0lTX1pOU3QzX18yMThfX2luc2VydGlvbl9zb3J0XzNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lqakVFUGpFRXZUMV9TNl9UMF8ArElYX1pOU3QzX18yMTRfX3BhcnRpYWxfc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWpqRUVQalM1X0VFVDFfUzZfUzZfVDJfUlQwXwCtSV1fWk5TdDNfXzIxOV9fc29ydDVfd3JhcF9wb2xpY3lJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lqakVFUGpFRWpUMV9TNl9TNl9TNl9TNl9UMF8ArklKX1pOU3QzX18yN19fc29ydDNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lqakVFUGpFRWpUMV9TNl9TNl9UMF8Ar0lEX1pOU3QzX18yMjdfX2luc2VydGlvbl9zb3J0X2luY29tcGxldGVJUk5TXzZfX2xlc3NJampFRVBqRUViVDBfUzVfVF8AsEmjAV9aTlN0M19fMjI0X19zb3J0M19tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lqakVFUGpFRU5TXzllbmFibGVfaWZJWHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TN18AsUkuX1pOU3QzX18yNl9fc29ydElSTlNfNl9fbGVzc0lsbEVFUGxFRXZUMF9TNV9UXwCySUVfWk5TdDNfXzIxNl9VbndyYXBBbGdQb2xpY3lJUk5TXzZfX2xlc3NJbGxFRUUxMF9fZ2V0X2NvbXBCNnYxNTAwN0VTM18A2TB3X1pOU3QzX18yMTFfX2ludHJvc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWxsRUVQbEVFdlQxX1M2X1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAs0kmX1pOS1N0M19fMjZfX2xlc3NJbGxFY2xCNnYxNTAwN0VSS2xTM18A90hOX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTlpdGVyX3N3YXBCNnYxNTAwN0lSUGxTNV9FRXZPVF9PVDBfAPhIpgFfWk5TdDNfXzIyNF9fc29ydDRfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbGxFRVBsRUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzhfUzdfAPlIqQFfWk5TdDNfXzIyNF9fc29ydDVfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbGxFRVBsRUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzhfUzhfUzdfAPpIU19aTlN0M19fMjE4X19pbnNlcnRpb25fc29ydF8zSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbGxFRVBsRUV2VDFfUzZfVDBfAPtIWF9aTlN0M19fMjE0X19wYXJ0aWFsX3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lsbEVFUGxTNV9FRVQxX1M2X1M2X1QyX1JUMF8A/EhdX1pOU3QzX18yMTlfX3NvcnQ1X3dyYXBfcG9saWN5SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbGxFRVBsRUVqVDFfUzZfUzZfUzZfUzZfVDBfAP1ISl9aTlN0M19fMjdfX3NvcnQzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbGxFRVBsRUVqVDFfUzZfUzZfVDBfAP5IRF9aTlN0M19fMjI3X19pbnNlcnRpb25fc29ydF9pbmNvbXBsZXRlSVJOU182X19sZXNzSWxsRUVQbEVFYlQwX1M1X1RfAP9IowFfWk5TdDNfXzIyNF9fc29ydDNfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbGxFRVBsRUVOU185ZW5hYmxlX2lmSVhzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzdfAIBJLl9aTlN0M19fMjZfX3NvcnRJUk5TXzZfX2xlc3NJbW1FRVBtRUV2VDBfUzVfVF8AtElFX1pOU3QzX18yMTZfVW53cmFwQWxnUG9saWN5SVJOU182X19sZXNzSW1tRUVFMTBfX2dldF9jb21wQjZ2MTUwMDdFUzNfANkwd19aTlN0M19fMjExX19pbnRyb3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0ltbUVFUG1FRXZUMV9TNl9UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFALVJJl9aTktTdDNfXzI2X19sZXNzSW1tRWNsQjZ2MTUwMDdFUkttUzNfAKlJTl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU5aXRlcl9zd2FwQjZ2MTUwMDdJUlBtUzVfRUV2T1RfT1QwXwD4SKYBX1pOU3QzX18yMjRfX3NvcnQ0X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M3XwCqSakBX1pOU3QzX18yMjRfX3NvcnQ1X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M4X1M3XwCrSVNfWk5TdDNfXzIxOF9faW5zZXJ0aW9uX3NvcnRfM0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFdlQxX1M2X1QwXwCsSVhfWk5TdDNfXzIxNF9fcGFydGlhbF9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbW1FRVBtUzVfRUVUMV9TNl9TNl9UMl9SVDBfAK1JXV9aTlN0M19fMjE5X19zb3J0NV93cmFwX3BvbGljeUlOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFalQxX1M2X1M2X1M2X1M2X1QwXwCuSUpfWk5TdDNfXzI3X19zb3J0M0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFalQxX1M2X1M2X1QwXwCvSURfWk5TdDNfXzIyN19faW5zZXJ0aW9uX3NvcnRfaW5jb21wbGV0ZUlSTlNfNl9fbGVzc0ltbUVFUG1FRWJUMF9TNV9UXwCwSaMBX1pOU3QzX18yMjRfX3NvcnQzX21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M3XwCxSS5fWk5TdDNfXzI2X19zb3J0SVJOU182X19sZXNzSXh4RUVQeEVFdlQwX1M1X1RfALZJRV9aTlN0M19fMjE2X1Vud3JhcEFsZ1BvbGljeUlSTlNfNl9fbGVzc0l4eEVFRTEwX19nZXRfY29tcEI2djE1MDA3RVMzXwDZMHdfWk5TdDNfXzIxMV9faW50cm9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUV2VDFfUzZfVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQC3SSZfWk5LU3QzX18yNl9fbGVzc0l4eEVjbEI2djE1MDA3RVJLeFMzXwC4SU5fWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFOWl0ZXJfc3dhcEI2djE1MDA3SVJQeFM1X0VFdk9UX09UMF8AuUmoAV9aTlN0M19fMjI0X19zb3J0NF9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l4eEVFUHhFRU5TXzllbmFibGVfaWZJWG50c3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M3XwC6SasBX1pOU3QzX18yMjRfX3NvcnQ1X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXh4RUVQeEVFTlNfOWVuYWJsZV9pZklYbnRzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzhfUzhfUzdfALtJU19aTlN0M19fMjE4X19pbnNlcnRpb25fc29ydF8zSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUV2VDFfUzZfVDBfALxJWF9aTlN0M19fMjE0X19wYXJ0aWFsX3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l4eEVFUHhTNV9FRVQxX1M2X1M2X1QyX1JUMF8AvUldX1pOU3QzX18yMTlfX3NvcnQ1X3dyYXBfcG9saWN5SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUVqVDFfUzZfUzZfUzZfUzZfVDBfAL5JSl9aTlN0M19fMjdfX3NvcnQzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUVqVDFfUzZfUzZfVDBfAL9JRF9aTlN0M19fMjI3X19pbnNlcnRpb25fc29ydF9pbmNvbXBsZXRlSVJOU182X19sZXNzSXh4RUVQeEVFYlQwX1M1X1RfAMBJpQFfWk5TdDNfXzIyNF9fc29ydDNfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUVOU185ZW5hYmxlX2lmSVhudHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TN18AwUkuX1pOU3QzX18yNl9fc29ydElSTlNfNl9fbGVzc0l5eUVFUHlFRXZUMF9TNV9UXwDCSUVfWk5TdDNfXzIxNl9VbndyYXBBbGdQb2xpY3lJUk5TXzZfX2xlc3NJeXlFRUUxMF9fZ2V0X2NvbXBCNnYxNTAwN0VTM18A2TB3X1pOU3QzX18yMTFfX2ludHJvc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXl5RUVQeUVFdlQxX1M2X1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAw0kmX1pOS1N0M19fMjZfX2xlc3NJeXlFY2xCNnYxNTAwN0VSS3lTM18AxElOX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTlpdGVyX3N3YXBCNnYxNTAwN0lSUHlTNV9FRXZPVF9PVDBfALlJqAFfWk5TdDNfXzIyNF9fc29ydDRfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeXlFRVB5RUVOU185ZW5hYmxlX2lmSVhudHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TOF9TN18AxUmrAV9aTlN0M19fMjI0X19zb3J0NV9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l5eUVFUHlFRU5TXzllbmFibGVfaWZJWG50c3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M4X1M3XwDGSVNfWk5TdDNfXzIxOF9faW5zZXJ0aW9uX3NvcnRfM0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXl5RUVQeUVFdlQxX1M2X1QwXwDHSVhfWk5TdDNfXzIxNF9fcGFydGlhbF9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeXlFRVB5UzVfRUVUMV9TNl9TNl9UMl9SVDBfAMhJXV9aTlN0M19fMjE5X19zb3J0NV93cmFwX3BvbGljeUlOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXl5RUVQeUVFalQxX1M2X1M2X1M2X1M2X1QwXwDJSUpfWk5TdDNfXzI3X19zb3J0M0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXl5RUVQeUVFalQxX1M2X1M2X1QwXwDKSURfWk5TdDNfXzIyN19faW5zZXJ0aW9uX3NvcnRfaW5jb21wbGV0ZUlSTlNfNl9fbGVzc0l5eUVFUHlFRWJUMF9TNV9UXwDLSaUBX1pOU3QzX18yMjRfX3NvcnQzX21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXl5RUVQeUVFTlNfOWVuYWJsZV9pZklYbnRzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzdfAMxJLl9aTlN0M19fMjZfX3NvcnRJUk5TXzZfX2xlc3NJZmZFRVBmRUV2VDBfUzVfVF8AzUlFX1pOU3QzX18yMTZfVW53cmFwQWxnUG9saWN5SVJOU182X19sZXNzSWZmRUVFMTBfX2dldF9jb21wQjZ2MTUwMDdFUzNfANkwd19aTlN0M19fMjExX19pbnRyb3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lmZkVFUGZFRXZUMV9TNl9UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAM5JJl9aTktTdDNfXzI2X19sZXNzSWZmRWNsQjZ2MTUwMDdFUktmUzNfAM9JTl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU5aXRlcl9zd2FwQjZ2MTUwMDdJUlBmUzVfRUV2T1RfT1QwXwDQSaYBX1pOU3QzX18yMjRfX3NvcnQ0X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M3XwDRSakBX1pOU3QzX18yMjRfX3NvcnQ1X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M4X1M3XwDSSVNfWk5TdDNfXzIxOF9faW5zZXJ0aW9uX3NvcnRfM0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFdlQxX1M2X1QwXwDTSVhfWk5TdDNfXzIxNF9fcGFydGlhbF9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZmZFRVBmUzVfRUVUMV9TNl9TNl9UMl9SVDBfANRJXV9aTlN0M19fMjE5X19zb3J0NV93cmFwX3BvbGljeUlOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFalQxX1M2X1M2X1M2X1M2X1QwXwDVSUpfWk5TdDNfXzI3X19zb3J0M0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFalQxX1M2X1M2X1QwXwDWSURfWk5TdDNfXzIyN19faW5zZXJ0aW9uX3NvcnRfaW5jb21wbGV0ZUlSTlNfNl9fbGVzc0lmZkVFUGZFRWJUMF9TNV9UXwDXSaMBX1pOU3QzX18yMjRfX3NvcnQzX21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFTlNfOWVuYWJsZV9pZklYc3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M3XwDYSS5fWk5TdDNfXzI2X19zb3J0SVJOU182X19sZXNzSWRkRUVQZEVFdlQwX1M1X1RfANlJRV9aTlN0M19fMjE2X1Vud3JhcEFsZ1BvbGljeUlSTlNfNl9fbGVzc0lkZEVFRTEwX19nZXRfY29tcEI2djE1MDA3RVMzXwDZMHdfWk5TdDNfXzIxMV9faW50cm9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUV2VDFfUzZfVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQDaSSZfWk5LU3QzX18yNl9fbGVzc0lkZEVjbEI2djE1MDA3RVJLZFMzXwDbSU5fWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFOWl0ZXJfc3dhcEI2djE1MDA3SVJQZFM1X0VFdk9UX09UMF8A3EmoAV9aTlN0M19fMjI0X19zb3J0NF9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lkZEVFUGRFRU5TXzllbmFibGVfaWZJWG50c3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M3XwDdSasBX1pOU3QzX18yMjRfX3NvcnQ1X21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWRkRUVQZEVFTlNfOWVuYWJsZV9pZklYbnRzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzhfUzhfUzdfAN5JU19aTlN0M19fMjE4X19pbnNlcnRpb25fc29ydF8zSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUV2VDFfUzZfVDBfAN9JWF9aTlN0M19fMjE0X19wYXJ0aWFsX3NvcnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lkZEVFUGRTNV9FRVQxX1M2X1M2X1QyX1JUMF8A4EldX1pOU3QzX18yMTlfX3NvcnQ1X3dyYXBfcG9saWN5SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUVqVDFfUzZfUzZfUzZfUzZfVDBfAOFJSl9aTlN0M19fMjdfX3NvcnQzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUVqVDFfUzZfUzZfVDBfAOJJRF9aTlN0M19fMjI3X19pbnNlcnRpb25fc29ydF9pbmNvbXBsZXRlSVJOU182X19sZXNzSWRkRUVQZEVFYlQwX1M1X1RfAONJpQFfWk5TdDNfXzIyNF9fc29ydDNfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUVOU185ZW5hYmxlX2lmSVhudHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TN18A5EkuX1pOU3QzX18yNl9fc29ydElSTlNfNl9fbGVzc0llZUVFUGVFRXZUMF9TNV9UXwDlSUVfWk5TdDNfXzIxNl9VbndyYXBBbGdQb2xpY3lJUk5TXzZfX2xlc3NJZWVFRUUxMF9fZ2V0X2NvbXBCNnYxNTAwN0VTM18A2TB3X1pOU3QzX18yMTFfX2ludHJvc29ydElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWVlRUVQZUVFdlQxX1M2X1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUA5kkmX1pOS1N0M19fMjZfX2xlc3NJZWVFY2xCNnYxNTAwN0VSS2VTM18A50lOX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTlpdGVyX3N3YXBCNnYxNTAwN0lSUGVTNV9FRXZPVF9PVDBfAOhJqAFfWk5TdDNfXzIyNF9fc29ydDRfbWF5YmVfYnJhbmNobGVzc0I2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZWVFRVBlRUVOU185ZW5hYmxlX2lmSVhudHNyMjFfX3VzZV9icmFuY2hsZXNzX3NvcnRJVDBfVDFfRUU1dmFsdWVFdkU0dHlwZUVTOF9TOF9TOF9TOF9TN18A6UmrAV9aTlN0M19fMjI0X19zb3J0NV9tYXliZV9icmFuY2hsZXNzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0llZUVFUGVFRU5TXzllbmFibGVfaWZJWG50c3IyMV9fdXNlX2JyYW5jaGxlc3Nfc29ydElUMF9UMV9FRTV2YWx1ZUV2RTR0eXBlRVM4X1M4X1M4X1M4X1M4X1M3XwDqSVNfWk5TdDNfXzIxOF9faW5zZXJ0aW9uX3NvcnRfM0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWVlRUVQZUVFdlQxX1M2X1QwXwDrSVhfWk5TdDNfXzIxNF9fcGFydGlhbF9zb3J0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZWVFRVBlUzVfRUVUMV9TNl9TNl9UMl9SVDBfAOxJXV9aTlN0M19fMjE5X19zb3J0NV93cmFwX3BvbGljeUlOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWVlRUVQZUVFalQxX1M2X1M2X1M2X1M2X1QwXwDtSUpfWk5TdDNfXzI3X19zb3J0M0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWVlRUVQZUVFalQxX1M2X1M2X1QwXwDuSURfWk5TdDNfXzIyN19faW5zZXJ0aW9uX3NvcnRfaW5jb21wbGV0ZUlSTlNfNl9fbGVzc0llZUVFUGVFRWJUMF9TNV9UXwDvSaUBX1pOU3QzX18yMjRfX3NvcnQzX21heWJlX2JyYW5jaGxlc3NCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWVlRUVQZUVFTlNfOWVuYWJsZV9pZklYbnRzcjIxX191c2VfYnJhbmNobGVzc19zb3J0SVQwX1QxX0VFNXZhbHVlRXZFNHR5cGVFUzhfUzhfUzhfUzdfAPBJwQFfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMTFfX2l0ZXJfbW92ZUI2djE1MDA3SVJQY0VFTlNfOWVuYWJsZV9pZklYc3IxMmlzX3JlZmVyZW5jZUlEVGRlY2xzcjNzdGRFN2RlY2x2YWxJUlRfRUVFRUU1dmFsdWVFRFRjbHNyM3N0ZEU0bW92ZWRlY2xzcjNzdGRFN2RlY2x2YWxJUzhfRUVFRUU0dHlwZUVPUzdfAN0dKV9aTlN0M19fMjlpdGVyX3N3YXBCNnYxNTAwN0lQY1MxX0VFdlRfVDBfAPFJPF9aTlN0M19fMjExX19jb25kX3N3YXBCNnYxNTAwN0lSTlNfNl9fbGVzc0ljY0VFUGNFRXZUMF9TNV9UXwDySUtfWk5TdDNfXzIyM19fcGFydGlhbGx5X3NvcnRlZF9zd2FwQjZ2MTUwMDdJUk5TXzZfX2xlc3NJY2NFRVBjRUV2VDBfUzVfUzVfVF8A80lWX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTI1X192YWxpZGF0ZV9pdGVyX3JlZmVyZW5jZUI2djE1MDA3SVJQY0VFdnYAqBDBAV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUxMV9faXRlcl9tb3ZlQjZ2MTUwMDdJUlB3RUVOU185ZW5hYmxlX2lmSVhzcjEyaXNfcmVmZXJlbmNlSURUZGVjbHNyM3N0ZEU3ZGVjbHZhbElSVF9FRUVFRTV2YWx1ZUVEVGNsc3Izc3RkRTRtb3ZlZGVjbHNyM3N0ZEU3ZGVjbHZhbElTOF9FRUVFRTR0eXBlRU9TN18A3R0pX1pOU3QzX18yOWl0ZXJfc3dhcEI2djE1MDA3SVB3UzFfRUV2VF9UMF8A9Ek8X1pOU3QzX18yMTFfX2NvbmRfc3dhcEI2djE1MDA3SVJOU182X19sZXNzSXd3RUVQd0VFdlQwX1M1X1RfAPVJS19aTlN0M19fMjIzX19wYXJ0aWFsbHlfc29ydGVkX3N3YXBCNnYxNTAwN0lSTlNfNl9fbGVzc0l3d0VFUHdFRXZUMF9TNV9TNV9UXwD2SVZfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMjVfX3ZhbGlkYXRlX2l0ZXJfcmVmZXJlbmNlQjZ2MTUwMDdJUlB3RUV2dgCoEMEBX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTExX19pdGVyX21vdmVCNnYxNTAwN0lSUGFFRU5TXzllbmFibGVfaWZJWHNyMTJpc19yZWZlcmVuY2VJRFRkZWNsc3Izc3RkRTdkZWNsdmFsSVJUX0VFRUVFNXZhbHVlRURUY2xzcjNzdGRFNG1vdmVkZWNsc3Izc3RkRTdkZWNsdmFsSVM4X0VFRUVFNHR5cGVFT1M3XwDdHSlfWk5TdDNfXzI5aXRlcl9zd2FwQjZ2MTUwMDdJUGFTMV9FRXZUX1QwXwDxSTxfWk5TdDNfXzIxMV9fY29uZF9zd2FwQjZ2MTUwMDdJUk5TXzZfX2xlc3NJYWFFRVBhRUV2VDBfUzVfVF8A8klLX1pOU3QzX18yMjNfX3BhcnRpYWxseV9zb3J0ZWRfc3dhcEI2djE1MDA3SVJOU182X19sZXNzSWFhRUVQYUVFdlQwX1M1X1M1X1RfAPNJVl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUyNV9fdmFsaWRhdGVfaXRlcl9yZWZlcmVuY2VCNnYxNTAwN0lSUGFFRXZ2AKgQwQFfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMTFfX2l0ZXJfbW92ZUI2djE1MDA3SVJQaEVFTlNfOWVuYWJsZV9pZklYc3IxMmlzX3JlZmVyZW5jZUlEVGRlY2xzcjNzdGRFN2RlY2x2YWxJUlRfRUVFRUU1dmFsdWVFRFRjbHNyM3N0ZEU0bW92ZWRlY2xzcjNzdGRFN2RlY2x2YWxJUzhfRUVFRUU0dHlwZUVPUzdfAN0dKV9aTlN0M19fMjlpdGVyX3N3YXBCNnYxNTAwN0lQaFMxX0VFdlRfVDBfAPFJPF9aTlN0M19fMjExX19jb25kX3N3YXBCNnYxNTAwN0lSTlNfNl9fbGVzc0loaEVFUGhFRXZUMF9TNV9UXwD3SUtfWk5TdDNfXzIyM19fcGFydGlhbGx5X3NvcnRlZF9zd2FwQjZ2MTUwMDdJUk5TXzZfX2xlc3NJaGhFRVBoRUV2VDBfUzVfUzVfVF8A+ElWX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTI1X192YWxpZGF0ZV9pdGVyX3JlZmVyZW5jZUI2djE1MDA3SVJQaEVFdnYAqBDBAV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUxMV9faXRlcl9tb3ZlQjZ2MTUwMDdJUlBzRUVOU185ZW5hYmxlX2lmSVhzcjEyaXNfcmVmZXJlbmNlSURUZGVjbHNyM3N0ZEU3ZGVjbHZhbElSVF9FRUVFRTV2YWx1ZUVEVGNsc3Izc3RkRTRtb3ZlZGVjbHNyM3N0ZEU3ZGVjbHZhbElTOF9FRUVFRTR0eXBlRU9TN18A3R0pX1pOU3QzX18yOWl0ZXJfc3dhcEI2djE1MDA3SVBzUzFfRUV2VF9UMF8A+Uk8X1pOU3QzX18yMTFfX2NvbmRfc3dhcEI2djE1MDA3SVJOU182X19sZXNzSXNzRUVQc0VFdlQwX1M1X1RfAPpJS19aTlN0M19fMjIzX19wYXJ0aWFsbHlfc29ydGVkX3N3YXBCNnYxNTAwN0lSTlNfNl9fbGVzc0lzc0VFUHNFRXZUMF9TNV9TNV9UXwD7SVZfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMjVfX3ZhbGlkYXRlX2l0ZXJfcmVmZXJlbmNlQjZ2MTUwMDdJUlBzRUV2dgCoEMEBX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTExX19pdGVyX21vdmVCNnYxNTAwN0lSUHRFRU5TXzllbmFibGVfaWZJWHNyMTJpc19yZWZlcmVuY2VJRFRkZWNsc3Izc3RkRTdkZWNsdmFsSVJUX0VFRUVFNXZhbHVlRURUY2xzcjNzdGRFNG1vdmVkZWNsc3Izc3RkRTdkZWNsdmFsSVM4X0VFRUVFNHR5cGVFT1M3XwDdHSlfWk5TdDNfXzI5aXRlcl9zd2FwQjZ2MTUwMDdJUHRTMV9FRXZUX1QwXwD5STxfWk5TdDNfXzIxMV9fY29uZF9zd2FwQjZ2MTUwMDdJUk5TXzZfX2xlc3NJdHRFRVB0RUV2VDBfUzVfVF8A/ElLX1pOU3QzX18yMjNfX3BhcnRpYWxseV9zb3J0ZWRfc3dhcEI2djE1MDA3SVJOU182X19sZXNzSXR0RUVQdEVFdlQwX1M1X1M1X1RfAP1JVl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUyNV9fdmFsaWRhdGVfaXRlcl9yZWZlcmVuY2VCNnYxNTAwN0lSUHRFRXZ2AKgQwQFfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMTFfX2l0ZXJfbW92ZUI2djE1MDA3SVJQaUVFTlNfOWVuYWJsZV9pZklYc3IxMmlzX3JlZmVyZW5jZUlEVGRlY2xzcjNzdGRFN2RlY2x2YWxJUlRfRUVFRUU1dmFsdWVFRFRjbHNyM3N0ZEU0bW92ZWRlY2xzcjNzdGRFN2RlY2x2YWxJUzhfRUVFRUU0dHlwZUVPUzdfAN0dKV9aTlN0M19fMjlpdGVyX3N3YXBCNnYxNTAwN0lQaVMxX0VFdlRfVDBfAPRJPF9aTlN0M19fMjExX19jb25kX3N3YXBCNnYxNTAwN0lSTlNfNl9fbGVzc0lpaUVFUGlFRXZUMF9TNV9UXwD1SUtfWk5TdDNfXzIyM19fcGFydGlhbGx5X3NvcnRlZF9zd2FwQjZ2MTUwMDdJUk5TXzZfX2xlc3NJaWlFRVBpRUV2VDBfUzVfUzVfVF8A9klWX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTI1X192YWxpZGF0ZV9pdGVyX3JlZmVyZW5jZUI2djE1MDA3SVJQaUVFdnYAqBDBAV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUxMV9faXRlcl9tb3ZlQjZ2MTUwMDdJUlBqRUVOU185ZW5hYmxlX2lmSVhzcjEyaXNfcmVmZXJlbmNlSURUZGVjbHNyM3N0ZEU3ZGVjbHZhbElSVF9FRUVFRTV2YWx1ZUVEVGNsc3Izc3RkRTRtb3ZlZGVjbHNyM3N0ZEU3ZGVjbHZhbElTOF9FRUVFRTR0eXBlRU9TN18A3R0pX1pOU3QzX18yOWl0ZXJfc3dhcEI2djE1MDA3SVBqUzFfRUV2VF9UMF8A9Ek8X1pOU3QzX18yMTFfX2NvbmRfc3dhcEI2djE1MDA3SVJOU182X19sZXNzSWpqRUVQakVFdlQwX1M1X1RfAP5JS19aTlN0M19fMjIzX19wYXJ0aWFsbHlfc29ydGVkX3N3YXBCNnYxNTAwN0lSTlNfNl9fbGVzc0lqakVFUGpFRXZUMF9TNV9TNV9UXwD/SVZfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMjVfX3ZhbGlkYXRlX2l0ZXJfcmVmZXJlbmNlQjZ2MTUwMDdJUlBqRUV2dgCoEMEBX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTExX19pdGVyX21vdmVCNnYxNTAwN0lSUGxFRU5TXzllbmFibGVfaWZJWHNyMTJpc19yZWZlcmVuY2VJRFRkZWNsc3Izc3RkRTdkZWNsdmFsSVJUX0VFRUVFNXZhbHVlRURUY2xzcjNzdGRFNG1vdmVkZWNsc3Izc3RkRTdkZWNsdmFsSVM4X0VFRUVFNHR5cGVFT1M3XwDdHSlfWk5TdDNfXzI5aXRlcl9zd2FwQjZ2MTUwMDdJUGxTMV9FRXZUX1QwXwD0STxfWk5TdDNfXzIxMV9fY29uZF9zd2FwQjZ2MTUwMDdJUk5TXzZfX2xlc3NJbGxFRVBsRUV2VDBfUzVfVF8A9UlLX1pOU3QzX18yMjNfX3BhcnRpYWxseV9zb3J0ZWRfc3dhcEI2djE1MDA3SVJOU182X19sZXNzSWxsRUVQbEVFdlQwX1M1X1M1X1RfAPZJVl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUyNV9fdmFsaWRhdGVfaXRlcl9yZWZlcmVuY2VCNnYxNTAwN0lSUGxFRXZ2AKgQwQFfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMTFfX2l0ZXJfbW92ZUI2djE1MDA3SVJQbUVFTlNfOWVuYWJsZV9pZklYc3IxMmlzX3JlZmVyZW5jZUlEVGRlY2xzcjNzdGRFN2RlY2x2YWxJUlRfRUVFRUU1dmFsdWVFRFRjbHNyM3N0ZEU0bW92ZWRlY2xzcjNzdGRFN2RlY2x2YWxJUzhfRUVFRUU0dHlwZUVPUzdfAN0dKV9aTlN0M19fMjlpdGVyX3N3YXBCNnYxNTAwN0lQbVMxX0VFdlRfVDBfAPRJPF9aTlN0M19fMjExX19jb25kX3N3YXBCNnYxNTAwN0lSTlNfNl9fbGVzc0ltbUVFUG1FRXZUMF9TNV9UXwD+SUtfWk5TdDNfXzIyM19fcGFydGlhbGx5X3NvcnRlZF9zd2FwQjZ2MTUwMDdJUk5TXzZfX2xlc3NJbW1FRVBtRUV2VDBfUzVfUzVfVF8A/0lWX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTI1X192YWxpZGF0ZV9pdGVyX3JlZmVyZW5jZUI2djE1MDA3SVJQbUVFdnYAqBDBAV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUxMV9faXRlcl9tb3ZlQjZ2MTUwMDdJUlB4RUVOU185ZW5hYmxlX2lmSVhzcjEyaXNfcmVmZXJlbmNlSURUZGVjbHNyM3N0ZEU3ZGVjbHZhbElSVF9FRUVFRTV2YWx1ZUVEVGNsc3Izc3RkRTRtb3ZlZGVjbHNyM3N0ZEU3ZGVjbHZhbElTOF9FRUVFRTR0eXBlRU9TN18A3R0pX1pOU3QzX18yOWl0ZXJfc3dhcEI2djE1MDA3SVB4UzFfRUV2VF9UMF8AgEpNX1pOU3QzX18yN19fc29ydDRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l4eEVFUHhFRWpUMV9TNl9TNl9TNl9UMF8AgUpWX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTI1X192YWxpZGF0ZV9pdGVyX3JlZmVyZW5jZUI2djE1MDA3SVJQeEVFdnYAqBDBAV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUxMV9faXRlcl9tb3ZlQjZ2MTUwMDdJUlB5RUVOU185ZW5hYmxlX2lmSVhzcjEyaXNfcmVmZXJlbmNlSURUZGVjbHNyM3N0ZEU3ZGVjbHZhbElSVF9FRUVFRTV2YWx1ZUVEVGNsc3Izc3RkRTRtb3ZlZGVjbHNyM3N0ZEU3ZGVjbHZhbElTOF9FRUVFRTR0eXBlRU9TN18A3R0pX1pOU3QzX18yOWl0ZXJfc3dhcEI2djE1MDA3SVB5UzFfRUV2VF9UMF8AgEpNX1pOU3QzX18yN19fc29ydDRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l5eUVFUHlFRWpUMV9TNl9TNl9TNl9UMF8AgkpWX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTI1X192YWxpZGF0ZV9pdGVyX3JlZmVyZW5jZUI2djE1MDA3SVJQeUVFdnYAqBDBAV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUxMV9faXRlcl9tb3ZlQjZ2MTUwMDdJUlBmRUVOU185ZW5hYmxlX2lmSVhzcjEyaXNfcmVmZXJlbmNlSURUZGVjbHNyM3N0ZEU3ZGVjbHZhbElSVF9FRUVFRTV2YWx1ZUVEVGNsc3Izc3RkRTRtb3ZlZGVjbHNyM3N0ZEU3ZGVjbHZhbElTOF9FRUVFRTR0eXBlRU9TN18A3R0pX1pOU3QzX18yOWl0ZXJfc3dhcEI2djE1MDA3SVBmUzFfRUV2VF9UMF8Ag0o8X1pOU3QzX18yMTFfX2NvbmRfc3dhcEI2djE1MDA3SVJOU182X19sZXNzSWZmRUVQZkVFdlQwX1M1X1RfAIRKS19aTlN0M19fMjIzX19wYXJ0aWFsbHlfc29ydGVkX3N3YXBCNnYxNTAwN0lSTlNfNl9fbGVzc0lmZkVFUGZFRXZUMF9TNV9TNV9UXwCFSlZfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMjVfX3ZhbGlkYXRlX2l0ZXJfcmVmZXJlbmNlQjZ2MTUwMDdJUlBmRUV2dgCoEMEBX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTExX19pdGVyX21vdmVCNnYxNTAwN0lSUGRFRU5TXzllbmFibGVfaWZJWHNyMTJpc19yZWZlcmVuY2VJRFRkZWNsc3Izc3RkRTdkZWNsdmFsSVJUX0VFRUVFNXZhbHVlRURUY2xzcjNzdGRFNG1vdmVkZWNsc3Izc3RkRTdkZWNsdmFsSVM4X0VFRUVFNHR5cGVFT1M3XwDdHSlfWk5TdDNfXzI5aXRlcl9zd2FwQjZ2MTUwMDdJUGRTMV9FRXZUX1QwXwCGSk1fWk5TdDNfXzI3X19zb3J0NElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWRkRUVQZEVFalQxX1M2X1M2X1M2X1QwXwCHSlZfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMjVfX3ZhbGlkYXRlX2l0ZXJfcmVmZXJlbmNlQjZ2MTUwMDdJUlBkRUV2dgCoEMEBX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTExX19pdGVyX21vdmVCNnYxNTAwN0lSUGVFRU5TXzllbmFibGVfaWZJWHNyMTJpc19yZWZlcmVuY2VJRFRkZWNsc3Izc3RkRTdkZWNsdmFsSVJUX0VFRUVFNXZhbHVlRURUY2xzcjNzdGRFNG1vdmVkZWNsc3Izc3RkRTdkZWNsdmFsSVM4X0VFRUVFNHR5cGVFT1M3XwDdHSlfWk5TdDNfXzI5aXRlcl9zd2FwQjZ2MTUwMDdJUGVTMV9FRXZUX1QwXwCISk1fWk5TdDNfXzI3X19zb3J0NElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWVlRUVQZUVFalQxX1M2X1M2X1M2X1QwXwCJSlZfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMjVfX3ZhbGlkYXRlX2l0ZXJfcmVmZXJlbmNlQjZ2MTUwMDdJUlBlRUV2dgCoEDhfWk5TdDNfXzI3X19zb3J0NUlSTlNfNl9fbGVzc0llZUVFUGVFRWpUMF9TNV9TNV9TNV9TNV9UXwCKSoEBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0ljRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzJfRUU1dmFsdWVFdkU0dHlwZUVSUzJfUzVfAItKgQFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SXdFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTMl9FRTV2YWx1ZUV2RTR0eXBlRVJTMl9TNV8AjEqBAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJYUVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVMyX0VFNXZhbHVlRXZFNHR5cGVFUlMyX1M1XwCLSoEBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0loRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzJfRUU1dmFsdWVFdkU0dHlwZUVSUzJfUzVfAItKgQFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SXNFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTMl9FRTV2YWx1ZUV2RTR0eXBlRVJTMl9TNV8AjUqBAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJdEVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVMyX0VFNXZhbHVlRXZFNHR5cGVFUlMyX1M1XwCNSoEBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lpRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzJfRUU1dmFsdWVFdkU0dHlwZUVSUzJfUzVfAIxKgQFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SWpFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTMl9FRTV2YWx1ZUV2RTR0eXBlRVJTMl9TNV8AjEqBAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJbEVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVMyX0VFNXZhbHVlRXZFNHR5cGVFUlMyX1M1XwCMSoEBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0ltRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzJfRUU1dmFsdWVFdkU0dHlwZUVSUzJfUzVfAIxKgQFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SXhFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTMl9FRTV2YWx1ZUV2RTR0eXBlRVJTMl9TNV8AjkqBAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJeUVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVMyX0VFNXZhbHVlRXZFNHR5cGVFUlMyX1M1XwCOSoEBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lmRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzJfRUU1dmFsdWVFdkU0dHlwZUVSUzJfUzVfAI9KgQFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SWRFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTMl9FRTV2YWx1ZUV2RTR0eXBlRVJTMl9TNV8AkEqBAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJZUVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVMyX0VFNXZhbHVlRXZFNHR5cGVFUlMyX1M1XwCRSkVfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNG5leHRCNnYxNTAwN0lQY0VFVF9TNV9TNV8AkkpQX1pOU3QzX18yMjNfX2RlYnVnX3JhbmRvbWl6ZV9yYW5nZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUGNTMl9FRXZUMF9UMV8AkRFdX1pOU3QzX18yMTlfX3BhcnRpYWxfc29ydF9pbXBsSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJY2NFRVBjUzVfRUVUMV9TNl9TNl9UMl9PVDBfAJNKOF9aTlN0M19fMjdfX3NvcnQ1SVJOU182X19sZXNzSWNjRUVQY0VFalQwX1M1X1M1X1M1X1M1X1RfAJRKVV9aTlN0M19fMjExX19tYWtlX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFdlQxX1M2X09UMF8AlUp4X1pOU3QzX18yMTFfX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFdlQxX09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFUzZfAJZKVV9aTlN0M19fMjExX19zb3J0X2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFdlQxX1M2X09UMF8Al0p+X1pOU3QzX18yMTBfX3BvcF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU182X19sZXNzSWNjRUVQY0VFdlQxX1M1X1JUMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNV9FMTVkaWZmZXJlbmNlX3R5cGVFAJhKfV9aTlN0M19fMjE3X19mbG95ZF9zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0ljY0VFUGNFRVQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAJlKfV9aTlN0M19fMjlfX3NpZnRfdXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWNjRUVQY0VFdlQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAJpKTV9aTlN0M19fMjdfX3NvcnQ0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJY2NFRVBjRUVqVDFfUzZfUzZfUzZfVDBfAJtKRV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU0bmV4dEI2djE1MDA3SVB3RUVUX1M1X1M1XwCSSlBfWk5TdDNfXzIyM19fZGVidWdfcmFuZG9taXplX3JhbmdlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQd1MyX0VFdlQwX1QxXwCREV1fWk5TdDNfXzIxOV9fcGFydGlhbF9zb3J0X2ltcGxJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l3d0VFUHdTNV9FRVQxX1M2X1M2X1QyX09UMF8AnEo4X1pOU3QzX18yN19fc29ydDVJUk5TXzZfX2xlc3NJd3dFRVB3RUVqVDBfUzVfUzVfUzVfUzVfVF8AnUpVX1pOU3QzX18yMTFfX21ha2VfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJd3dFRVB3RUV2VDFfUzZfT1QwXwCeSnhfWk5TdDNfXzIxMV9fc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJd3dFRVB3RUV2VDFfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUVTNl8An0pVX1pOU3QzX18yMTFfX3NvcnRfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJd3dFRVB3RUV2VDFfUzZfT1QwXwCgSn5fWk5TdDNfXzIxMF9fcG9wX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzZfX2xlc3NJd3dFRVB3RUV2VDFfUzVfUlQwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM1X0UxNWRpZmZlcmVuY2VfdHlwZUUAoUp9X1pOU3QzX18yMTdfX2Zsb3lkX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXd3RUVQd0VFVDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAokp9X1pOU3QzX18yOV9fc2lmdF91cEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJd3dFRVB3RUV2VDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAo0pNX1pOU3QzX18yN19fc29ydDRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l3d0VFUHdFRWpUMV9TNl9TNl9TNl9UMF8ApEpFX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTRuZXh0QjZ2MTUwMDdJUGFFRVRfUzVfUzVfAJJKUF9aTlN0M19fMjIzX19kZWJ1Z19yYW5kb21pemVfcmFuZ2VCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVBhUzJfRUV2VDBfVDFfAJERXV9aTlN0M19fMjE5X19wYXJ0aWFsX3NvcnRfaW1wbElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWFhRUVQYVM1X0VFVDFfUzZfUzZfVDJfT1QwXwCTSjhfWk5TdDNfXzI3X19zb3J0NUlSTlNfNl9fbGVzc0lhYUVFUGFFRWpUMF9TNV9TNV9TNV9TNV9UXwCUSlVfWk5TdDNfXzIxMV9fbWFrZV9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lhYUVFUGFFRXZUMV9TNl9PVDBfAJVKeF9aTlN0M19fMjExX19zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lhYUVFUGFFRXZUMV9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRVM2XwCWSlVfWk5TdDNfXzIxMV9fc29ydF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lhYUVFUGFFRXZUMV9TNl9PVDBfAJdKfl9aTlN0M19fMjEwX19wb3BfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfNl9fbGVzc0lhYUVFUGFFRXZUMV9TNV9SVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzVfRTE1ZGlmZmVyZW5jZV90eXBlRQCYSn1fWk5TdDNfXzIxN19fZmxveWRfc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJYWFFRVBhRUVUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQCZSn1fWk5TdDNfXzI5X19zaWZ0X3VwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lhYUVFUGFFRXZUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQCaSk1fWk5TdDNfXzI3X19zb3J0NElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWFhRUVQYUVFalQxX1M2X1M2X1M2X1QwXwCbSkVfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNG5leHRCNnYxNTAwN0lQaEVFVF9TNV9TNV8AkkpQX1pOU3QzX18yMjNfX2RlYnVnX3JhbmRvbWl6ZV9yYW5nZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUGhTMl9FRXZUMF9UMV8AkRFdX1pOU3QzX18yMTlfX3BhcnRpYWxfc29ydF9pbXBsSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJaGhFRVBoUzVfRUVUMV9TNl9TNl9UMl9PVDBfAKVKOF9aTlN0M19fMjdfX3NvcnQ1SVJOU182X19sZXNzSWhoRUVQaEVFalQwX1M1X1M1X1M1X1M1X1RfAKZKVV9aTlN0M19fMjExX19tYWtlX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFdlQxX1M2X09UMF8Ap0p4X1pOU3QzX18yMTFfX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFdlQxX09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFUzZfAKhKVV9aTlN0M19fMjExX19zb3J0X2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFdlQxX1M2X09UMF8AqUp+X1pOU3QzX18yMTBfX3BvcF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU182X19sZXNzSWhoRUVQaEVFdlQxX1M1X1JUMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNV9FMTVkaWZmZXJlbmNlX3R5cGVFAKpKfV9aTlN0M19fMjE3X19mbG95ZF9zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0loaEVFUGhFRVQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAKtKfV9aTlN0M19fMjlfX3NpZnRfdXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWhoRUVQaEVFdlQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAKxKTV9aTlN0M19fMjdfX3NvcnQ0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJaGhFRVBoRUVqVDFfUzZfUzZfUzZfVDBfAK1KRV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU0bmV4dEI2djE1MDA3SVBzRUVUX1M1X1M1XwCSSlBfWk5TdDNfXzIyM19fZGVidWdfcmFuZG9taXplX3JhbmdlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQc1MyX0VFdlQwX1QxXwCREV1fWk5TdDNfXzIxOV9fcGFydGlhbF9zb3J0X2ltcGxJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lzc0VFUHNTNV9FRVQxX1M2X1M2X1QyX09UMF8Arko4X1pOU3QzX18yN19fc29ydDVJUk5TXzZfX2xlc3NJc3NFRVBzRUVqVDBfUzVfUzVfUzVfUzVfVF8Ar0pVX1pOU3QzX18yMTFfX21ha2VfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJc3NFRVBzRUV2VDFfUzZfT1QwXwCwSnhfWk5TdDNfXzIxMV9fc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJc3NFRVBzRUV2VDFfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUVTNl8AsUpVX1pOU3QzX18yMTFfX3NvcnRfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJc3NFRVBzRUV2VDFfUzZfT1QwXwCySn5fWk5TdDNfXzIxMF9fcG9wX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzZfX2xlc3NJc3NFRVBzRUV2VDFfUzVfUlQwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM1X0UxNWRpZmZlcmVuY2VfdHlwZUUAs0p9X1pOU3QzX18yMTdfX2Zsb3lkX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXNzRUVQc0VFVDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAtEp9X1pOU3QzX18yOV9fc2lmdF91cEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJc3NFRVBzRUV2VDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAtUpNX1pOU3QzX18yN19fc29ydDRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lzc0VFUHNFRWpUMV9TNl9TNl9TNl9UMF8AtkpFX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTRuZXh0QjZ2MTUwMDdJUHRFRVRfUzVfUzVfAJJKUF9aTlN0M19fMjIzX19kZWJ1Z19yYW5kb21pemVfcmFuZ2VCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVB0UzJfRUV2VDBfVDFfAJERXV9aTlN0M19fMjE5X19wYXJ0aWFsX3NvcnRfaW1wbElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXR0RUVQdFM1X0VFVDFfUzZfUzZfVDJfT1QwXwC3SjhfWk5TdDNfXzI3X19zb3J0NUlSTlNfNl9fbGVzc0l0dEVFUHRFRWpUMF9TNV9TNV9TNV9TNV9UXwC4SlVfWk5TdDNfXzIxMV9fbWFrZV9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l0dEVFUHRFRXZUMV9TNl9PVDBfALlKeF9aTlN0M19fMjExX19zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l0dEVFUHRFRXZUMV9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRVM2XwC6SlVfWk5TdDNfXzIxMV9fc29ydF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l0dEVFUHRFRXZUMV9TNl9PVDBfALtKfl9aTlN0M19fMjEwX19wb3BfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfNl9fbGVzc0l0dEVFUHRFRXZUMV9TNV9SVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzVfRTE1ZGlmZmVyZW5jZV90eXBlRQC8Sn1fWk5TdDNfXzIxN19fZmxveWRfc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJdHRFRVB0RUVUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQC9Sn1fWk5TdDNfXzI5X19zaWZ0X3VwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l0dEVFUHRFRXZUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQC+Sk1fWk5TdDNfXzI3X19zb3J0NElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXR0RUVQdEVFalQxX1M2X1M2X1M2X1QwXwC/SkVfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNG5leHRCNnYxNTAwN0lQaUVFVF9TNV9TNV8AkkpQX1pOU3QzX18yMjNfX2RlYnVnX3JhbmRvbWl6ZV9yYW5nZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUGlTMl9FRXZUMF9UMV8AkRFdX1pOU3QzX18yMTlfX3BhcnRpYWxfc29ydF9pbXBsSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJaWlFRVBpUzVfRUVUMV9TNl9TNl9UMl9PVDBfAJxKOF9aTlN0M19fMjdfX3NvcnQ1SVJOU182X19sZXNzSWlpRUVQaUVFalQwX1M1X1M1X1M1X1M1X1RfAJ1KVV9aTlN0M19fMjExX19tYWtlX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFdlQxX1M2X09UMF8Ankp4X1pOU3QzX18yMTFfX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFdlQxX09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFUzZfAJ9KVV9aTlN0M19fMjExX19zb3J0X2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFdlQxX1M2X09UMF8AoEp+X1pOU3QzX18yMTBfX3BvcF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU182X19sZXNzSWlpRUVQaUVFdlQxX1M1X1JUMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNV9FMTVkaWZmZXJlbmNlX3R5cGVFAKFKfV9aTlN0M19fMjE3X19mbG95ZF9zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lpaUVFUGlFRVQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAKJKfV9aTlN0M19fMjlfX3NpZnRfdXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWlpRUVQaUVFdlQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAKNKTV9aTlN0M19fMjdfX3NvcnQ0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJaWlFRVBpRUVqVDFfUzZfUzZfUzZfVDBfAKRKRV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU0bmV4dEI2djE1MDA3SVBqRUVUX1M1X1M1XwCSSlBfWk5TdDNfXzIyM19fZGVidWdfcmFuZG9taXplX3JhbmdlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQalMyX0VFdlQwX1QxXwCREV1fWk5TdDNfXzIxOV9fcGFydGlhbF9zb3J0X2ltcGxJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lqakVFUGpTNV9FRVQxX1M2X1M2X1QyX09UMF8AwEo4X1pOU3QzX18yN19fc29ydDVJUk5TXzZfX2xlc3NJampFRVBqRUVqVDBfUzVfUzVfUzVfUzVfVF8AwUpVX1pOU3QzX18yMTFfX21ha2VfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJampFRVBqRUV2VDFfUzZfT1QwXwDCSnhfWk5TdDNfXzIxMV9fc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJampFRVBqRUV2VDFfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUVTNl8Aw0pVX1pOU3QzX18yMTFfX3NvcnRfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJampFRVBqRUV2VDFfUzZfT1QwXwDESn5fWk5TdDNfXzIxMF9fcG9wX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzZfX2xlc3NJampFRVBqRUV2VDFfUzVfUlQwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM1X0UxNWRpZmZlcmVuY2VfdHlwZUUAxUp9X1pOU3QzX18yMTdfX2Zsb3lkX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWpqRUVQakVFVDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAxkp9X1pOU3QzX18yOV9fc2lmdF91cEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJampFRVBqRUV2VDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAx0pNX1pOU3QzX18yN19fc29ydDRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lqakVFUGpFRWpUMV9TNl9TNl9TNl9UMF8AyEpFX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTRuZXh0QjZ2MTUwMDdJUGxFRVRfUzVfUzVfAJJKUF9aTlN0M19fMjIzX19kZWJ1Z19yYW5kb21pemVfcmFuZ2VCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVBsUzJfRUV2VDBfVDFfAJERXV9aTlN0M19fMjE5X19wYXJ0aWFsX3NvcnRfaW1wbElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWxsRUVQbFM1X0VFVDFfUzZfUzZfVDJfT1QwXwCcSjhfWk5TdDNfXzI3X19zb3J0NUlSTlNfNl9fbGVzc0lsbEVFUGxFRWpUMF9TNV9TNV9TNV9TNV9UXwCdSlVfWk5TdDNfXzIxMV9fbWFrZV9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lsbEVFUGxFRXZUMV9TNl9PVDBfAJ5KeF9aTlN0M19fMjExX19zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lsbEVFUGxFRXZUMV9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRVM2XwCfSlVfWk5TdDNfXzIxMV9fc29ydF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lsbEVFUGxFRXZUMV9TNl9PVDBfAKBKfl9aTlN0M19fMjEwX19wb3BfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfNl9fbGVzc0lsbEVFUGxFRXZUMV9TNV9SVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzVfRTE1ZGlmZmVyZW5jZV90eXBlRQChSn1fWk5TdDNfXzIxN19fZmxveWRfc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbGxFRVBsRUVUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQCiSn1fWk5TdDNfXzI5X19zaWZ0X3VwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lsbEVFUGxFRXZUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQCjSk1fWk5TdDNfXzI3X19zb3J0NElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWxsRUVQbEVFalQxX1M2X1M2X1M2X1QwXwCkSkVfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNG5leHRCNnYxNTAwN0lQbUVFVF9TNV9TNV8AkkpQX1pOU3QzX18yMjNfX2RlYnVnX3JhbmRvbWl6ZV9yYW5nZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUG1TMl9FRXZUMF9UMV8AkRFdX1pOU3QzX18yMTlfX3BhcnRpYWxfc29ydF9pbXBsSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbW1FRVBtUzVfRUVUMV9TNl9TNl9UMl9PVDBfAMBKOF9aTlN0M19fMjdfX3NvcnQ1SVJOU182X19sZXNzSW1tRUVQbUVFalQwX1M1X1M1X1M1X1M1X1RfAMFKVV9aTlN0M19fMjExX19tYWtlX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFdlQxX1M2X09UMF8Awkp4X1pOU3QzX18yMTFfX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFdlQxX09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFUzZfAMNKVV9aTlN0M19fMjExX19zb3J0X2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFdlQxX1M2X09UMF8AxEp+X1pOU3QzX18yMTBfX3BvcF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU182X19sZXNzSW1tRUVQbUVFdlQxX1M1X1JUMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNV9FMTVkaWZmZXJlbmNlX3R5cGVFAMVKfV9aTlN0M19fMjE3X19mbG95ZF9zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0ltbUVFUG1FRVQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAMZKfV9aTlN0M19fMjlfX3NpZnRfdXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSW1tRUVQbUVFdlQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAMdKTV9aTlN0M19fMjdfX3NvcnQ0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJbW1FRVBtRUVqVDFfUzZfUzZfUzZfVDBfAMhKRV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU0bmV4dEI2djE1MDA3SVB4RUVUX1M1X1M1XwCSSlBfWk5TdDNfXzIyM19fZGVidWdfcmFuZG9taXplX3JhbmdlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQeFMyX0VFdlQwX1QxXwCREV1fWk5TdDNfXzIxOV9fcGFydGlhbF9zb3J0X2ltcGxJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l4eEVFUHhTNV9FRVQxX1M2X1M2X1QyX09UMF8AyUo4X1pOU3QzX18yN19fc29ydDVJUk5TXzZfX2xlc3NJeHhFRVB4RUVqVDBfUzVfUzVfUzVfUzVfVF8AykpVX1pOU3QzX18yMTFfX21ha2VfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUV2VDFfUzZfT1QwXwDLSnhfWk5TdDNfXzIxMV9fc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUV2VDFfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUVTNl8AzEpVX1pOU3QzX18yMTFfX3NvcnRfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUV2VDFfUzZfT1QwXwDNSn5fWk5TdDNfXzIxMF9fcG9wX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzZfX2xlc3NJeHhFRVB4RUV2VDFfUzVfUlQwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM1X0UxNWRpZmZlcmVuY2VfdHlwZUUAzkp9X1pOU3QzX18yMTdfX2Zsb3lkX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXh4RUVQeEVFVDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAz0p9X1pOU3QzX18yOV9fc2lmdF91cEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeHhFRVB4RUV2VDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUA0EpFX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTRuZXh0QjZ2MTUwMDdJUHlFRVRfUzVfUzVfAJJKUF9aTlN0M19fMjIzX19kZWJ1Z19yYW5kb21pemVfcmFuZ2VCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVB5UzJfRUV2VDBfVDFfAJERXV9aTlN0M19fMjE5X19wYXJ0aWFsX3NvcnRfaW1wbElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSXl5RUVQeVM1X0VFVDFfUzZfUzZfVDJfT1QwXwDRSjhfWk5TdDNfXzI3X19zb3J0NUlSTlNfNl9fbGVzc0l5eUVFUHlFRWpUMF9TNV9TNV9TNV9TNV9UXwDSSlVfWk5TdDNfXzIxMV9fbWFrZV9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l5eUVFUHlFRXZUMV9TNl9PVDBfANNKeF9aTlN0M19fMjExX19zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l5eUVFUHlFRXZUMV9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRVM2XwDUSlVfWk5TdDNfXzIxMV9fc29ydF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l5eUVFUHlFRXZUMV9TNl9PVDBfANVKfl9aTlN0M19fMjEwX19wb3BfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfNl9fbGVzc0l5eUVFUHlFRXZUMV9TNV9SVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzVfRTE1ZGlmZmVyZW5jZV90eXBlRQDWSn1fWk5TdDNfXzIxN19fZmxveWRfc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJeXlFRVB5RUVUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQDXSn1fWk5TdDNfXzI5X19zaWZ0X3VwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0l5eUVFUHlFRXZUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQDYSkVfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNG5leHRCNnYxNTAwN0lQZkVFVF9TNV9TNV8AkkpQX1pOU3QzX18yMjNfX2RlYnVnX3JhbmRvbWl6ZV9yYW5nZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUGZTMl9FRXZUMF9UMV8AkRFdX1pOU3QzX18yMTlfX3BhcnRpYWxfc29ydF9pbXBsSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZmZFRVBmUzVfRUVUMV9TNl9TNl9UMl9PVDBfANlKOF9aTlN0M19fMjdfX3NvcnQ1SVJOU182X19sZXNzSWZmRUVQZkVFalQwX1M1X1M1X1M1X1M1X1RfANpKVV9aTlN0M19fMjExX19tYWtlX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFdlQxX1M2X09UMF8A20p4X1pOU3QzX18yMTFfX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFdlQxX09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFUzZfANxKVV9aTlN0M19fMjExX19zb3J0X2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFdlQxX1M2X09UMF8A3Up+X1pOU3QzX18yMTBfX3BvcF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU182X19sZXNzSWZmRUVQZkVFdlQxX1M1X1JUMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNV9FMTVkaWZmZXJlbmNlX3R5cGVFAN5KfV9aTlN0M19fMjE3X19mbG95ZF9zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lmZkVFUGZFRVQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAN9KfV9aTlN0M19fMjlfX3NpZnRfdXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWZmRUVQZkVFdlQxX1M2X09UMF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNl9FMTVkaWZmZXJlbmNlX3R5cGVFAOBKTV9aTlN0M19fMjdfX3NvcnQ0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZmZFRVBmRUVqVDFfUzZfUzZfUzZfVDBfAOFKRV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU0bmV4dEI2djE1MDA3SVBkRUVUX1M1X1M1XwCSSlBfWk5TdDNfXzIyM19fZGVidWdfcmFuZG9taXplX3JhbmdlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQZFMyX0VFdlQwX1QxXwCREV1fWk5TdDNfXzIxOV9fcGFydGlhbF9zb3J0X2ltcGxJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0lkZEVFUGRTNV9FRVQxX1M2X1M2X1QyX09UMF8A4ko4X1pOU3QzX18yN19fc29ydDVJUk5TXzZfX2xlc3NJZGRFRVBkRUVqVDBfUzVfUzVfUzVfUzVfVF8A40pVX1pOU3QzX18yMTFfX21ha2VfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUV2VDFfUzZfT1QwXwDkSnhfWk5TdDNfXzIxMV9fc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUV2VDFfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUVTNl8A5UpVX1pOU3QzX18yMTFfX3NvcnRfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUV2VDFfUzZfT1QwXwDmSn5fWk5TdDNfXzIxMF9fcG9wX2hlYXBCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzZfX2xlc3NJZGRFRVBkRUV2VDFfUzVfUlQwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM1X0UxNWRpZmZlcmVuY2VfdHlwZUUA50p9X1pOU3QzX18yMTdfX2Zsb3lkX3NpZnRfZG93bklOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWRkRUVQZEVFVDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUA6Ep9X1pOU3QzX18yOV9fc2lmdF91cEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZGRFRVBkRUV2VDFfUzZfT1QwX05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUA6UpFX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTRuZXh0QjZ2MTUwMDdJUGVFRVRfUzVfUzVfAJJKUF9aTlN0M19fMjIzX19kZWJ1Z19yYW5kb21pemVfcmFuZ2VCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVBlUzJfRUV2VDBfVDFfAJERXV9aTlN0M19fMjE5X19wYXJ0aWFsX3NvcnRfaW1wbElOU18xN19DbGFzc2ljQWxnUG9saWN5RVJOU182X19sZXNzSWVlRUVQZVM1X0VFVDFfUzZfUzZfVDJfT1QwXwDqSlVfWk5TdDNfXzIxMV9fbWFrZV9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0llZUVFUGVFRXZUMV9TNl9PVDBfAOtKeF9aTlN0M19fMjExX19zaWZ0X2Rvd25JTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0llZUVFUGVFRXZUMV9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRVM2XwDsSlVfWk5TdDNfXzIxMV9fc29ydF9oZWFwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0llZUVFUGVFRXZUMV9TNl9PVDBfAO1Kfl9aTlN0M19fMjEwX19wb3BfaGVhcEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfNl9fbGVzc0llZUVFUGVFRXZUMV9TNV9SVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzVfRTE1ZGlmZmVyZW5jZV90eXBlRQDuSn1fWk5TdDNfXzIxN19fZmxveWRfc2lmdF9kb3duSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUk5TXzZfX2xlc3NJZWVFRVBlRUVUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQDvSn1fWk5TdDNfXzI5X19zaWZ0X3VwQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVSTlNfNl9fbGVzc0llZUVFUGVFRXZUMV9TNl9PVDBfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzZfRTE1ZGlmZmVyZW5jZV90eXBlRQDwShtfWk5LU3QxMmJhZF9hbnlfY2FzdDR3aGF0RXYA8Uo6X1pOS1N0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTEyYmFkX2FueV9jYXN0NHdoYXRFdgDxShdfWk5TdDEyYmFkX2FueV9jYXN0RDBFdgDiQBJfWk5TdDhiYWRfY2FzdEQyRXYA2TAGX1pkbFB2AOJANl9aTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTEyYmFkX2FueV9jYXN0RDBFdgDiQBRfWlRWU3QxMmJhZF9hbnlfY2FzdAOoERRfWlRJU3QxMmJhZF9hbnlfY2FzdAOnERRfWlRTU3QxMmJhZF9hbnlfY2FzdAOmEShfWlRWTjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FA6URD19aVElTdDhiYWRfY2FzdAOkETVfWlRWTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTEyYmFkX2FueV9jYXN0RQOjETVfWlRJTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTEyYmFkX2FueV9jYXN0RQOiETVfWlRTTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTEyYmFkX2FueV9jYXN0RQOhESdfWk5TdDNfXzIyM19fY3h4X2F0b21pY19ub3RpZnlfb25lRVBWS3YA8kpmX1pOU3QzX18yMjJfX2N4eF9hdG9taWNfZmV0Y2hfYWRkQjZ2MTUwMDdJeEVFVF9QTlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSVMxX0VFUzFfTlNfMTJtZW1vcnlfb3JkZXJFAKdHJ19aTlN0M19fMjIzX19jeHhfYXRvbWljX25vdGlmeV9hbGxFUFZLdgDySidfWk5TdDNfXzIyM19fbGliY3BwX2F0b21pY19tb25pdG9yRVBWS3YA9UojX1pOS1N0M19fMjRoYXNoSVBWS3ZFY2xCNnYxNTAwN0VTMl8A9kpgX1pOU3QzX18yMTdfX2N4eF9hdG9taWNfbG9hZEI2djE1MDA3SXhFRVRfUFZLTlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSVMxX0VFTlNfMTJtZW1vcnlfb3JkZXJFAJNHJV9aTlN0M19fMjIwX19saWJjcHBfYXRvbWljX3dhaXRFUFZLdngA90pnX1pOU3QzX18yMjJfX2N4eF9hdG9taWNfZmV0Y2hfYWRkQjZ2MTUwMDdJeEVFVF9QVk5TXzIyX19jeHhfYXRvbWljX2Jhc2VfaW1wbElTMV9FRVMxX05TXzEybWVtb3J5X29yZGVyRQCnR2dfWk5TdDNfXzIyMl9fY3h4X2F0b21pY19mZXRjaF9zdWJCNnYxNTAwN0l4RUVUX1BWTlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSVMxX0VFUzFfTlNfMTJtZW1vcnlfb3JkZXJFAKxHX19aTlN0M19fMjIzX19jeHhfYXRvbWljX25vdGlmeV9vbmVFUFZLTlNfMTdfX2N4eF9hdG9taWNfaW1wbEl4TlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSXhFRUVFAPlKX19aTlN0M19fMjIzX19jeHhfYXRvbWljX25vdGlmeV9hbGxFUFZLTlNfMTdfX2N4eF9hdG9taWNfaW1wbEl4TlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSXhFRUVFAPlKX19aTlN0M19fMjIzX19saWJjcHBfYXRvbWljX21vbml0b3JFUFZLTlNfMTdfX2N4eF9hdG9taWNfaW1wbEl4TlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSXhFRUVFAPpKXV9aTlN0M19fMjIwX19saWJjcHBfYXRvbWljX3dhaXRFUFZLTlNfMTdfX2N4eF9hdG9taWNfaW1wbEl4TlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSXhFRUVFeAD7Si9fWk5TdDNfXzIyMV9fbXVybXVyMl9vcl9jaXR5aGFzaEltTG0zMkVFY2xFUEt2bQD8Sg9fWlN0OXRlcm1pbmF0ZXYA8mEmX1pOU3QzX18yMTBfX2xvYWR3b3JkQjZ2MTUwMDdJbUVFVF9QS3YA/UpIX1pOU3QzX18yNmNocm9ubzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFNHplcm9CNnYxNTAwN0V2AP5KJF9aTlN0M19fMjZjaHJvbm8xMnN0ZWFkeV9jbG9jazNub3dFdgCSTKoBX1pOU3QzX18yNmNocm9ub21pQjZ2MTUwMDdJTlMwXzEyc3RlYWR5X2Nsb2NrRU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVTNl9FRU5TXzExY29tbW9uX3R5cGVJSlQwX1QxX0VFNHR5cGVFUktOUzBfMTB0aW1lX3BvaW50SVRfUzhfRUVSS05TQ19JU0RfUzlfRUUA/0pmX1pOU3QzX18yNmNocm9ub25lQjZ2MTUwMDdJeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFeFMzX0VFYlJLTlMwXzhkdXJhdGlvbklUX1QwX0VFUktOUzRfSVQxX1QyX0VFAIBLZl9aTlN0M19fMjZjaHJvbm9sdEI2djE1MDA3SXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRXhTM19FRWJSS05TMF84ZHVyYXRpb25JVF9UMF9FRVJLTlM0X0lUMV9UMl9FRQCBS2hfWk5LU3QzX18yMjlfX2xpYmNwcF90aW1lZF9iYWNrb2ZmX3BvbGljeWNsQjZ2MTUwMDdFTlNfNmNocm9ubzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFRQCCSzNfWk5TdDNfXzI2Y2hyb25vMTVkdXJhdGlvbl92YWx1ZXNJeEU0emVyb0I2djE1MDA3RXYAg0vYAV9aTlN0M19fMjZjaHJvbm84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUMyQjZ2MTUwMDdJeEVFUktUX1BOU185ZW5hYmxlX2lmSVhhYXNyMTRpc19jb252ZXJ0aWJsZUlTOF94RUU1dmFsdWVvb0xfWk5TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFNXZhbHVlRUVudHNyMjN0cmVhdF9hc19mbG9hdGluZ19wb2ludElTNl9FRTV2YWx1ZUV2RTR0eXBlRQCESzxfWk5TdDNfXzIyOV9fY3h4X25vbmF0b21pY19jb21wYXJlX2VxdWFsQjZ2MTUwMDdJeEVFYlJLVF9TM18AhUt8X1pOS1N0M19fMjZjaHJvbm8xMHRpbWVfcG9pbnRJTlMwXzEyc3RlYWR5X2Nsb2NrRU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVFMTZ0aW1lX3NpbmNlX2Vwb2NoQjZ2MTUwMDdFdgCqPoUBX1pOU3QzX18yNmNocm9ub21pQjZ2MTUwMDdJeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFeFMzX0VFTlNfMTFjb21tb25fdHlwZUlKTlMwXzhkdXJhdGlvbklUX1QwX0VFTlM1X0lUMV9UMl9FRUVFNHR5cGVFUktTOF9SS1NCXwCGS2ZfWk5TdDNfXzI2Y2hyb25vZXFCNnYxNTAwN0l4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUV4UzNfRUViUktOUzBfOGR1cmF0aW9uSVRfVDBfRUVSS05TNF9JVDFfVDJfRUUAh0tmX1pOS1N0M19fMjZjaHJvbm8xM19fZHVyYXRpb25fbHRJTlMwXzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFRVM1X0VjbEI2djE1MDA3RVJLUzVfUzhfALhJ0gFfWk5TdDNfXzI2Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMEVFRUVDMkI2djE1MDA3SWlFRVJLVF9QTlNfOWVuYWJsZV9pZklYYWFzcjE0aXNfY29udmVydGlibGVJUzhfeEVFNXZhbHVlb29MX1pOU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRTV2YWx1ZUVFbnRzcjIzdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnRJUzZfRUU1dmFsdWVFdkU0dHlwZUUAiEt1X1pOU3QzX18yNmNocm9ub2d0QjZ2MTUwMDdJeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFeE5TMl9JTHgxRUx4MTAwMEVFRUVFYlJLTlMwXzhkdXJhdGlvbklUX1QwX0VFUktOUzVfSVQxX1QyX0VFAIlLoAJfWk5TdDNfXzI2Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVDMkI2djE1MDA3SXhOUzJfSUx4MUVMeDEwMDBFRUVFRVJLTlMxX0lUX1QwX0VFUE5TXzllbmFibGVfaWZJWGFhc3IxM19fbm9fb3ZlcmZsb3dJUzhfUzNfRUU1dmFsdWVvb0xfWk5TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFNXZhbHVlRUVhYWVxc3IxM19fbm9fb3ZlcmZsb3dJUzhfUzNfRTR0eXBlRTNkZW5MaTFFbnRzcjIzdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnRJUzdfRUU1dmFsdWVFdkU0dHlwZUUAiktjX1pOU3QzX18yMjVfX2xpYmNwcF90aHJlYWRfc2xlZXBfZm9yQjZ2MTUwMDdFUktOU182Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFAItL1QFfWk5TdDNfXzI2Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMEVFRUVDMkI2djE1MDA3SWlFRVJLVF9QTlNfOWVuYWJsZV9pZklYYWFzcjE0aXNfY29udmVydGlibGVJUzhfeEVFNXZhbHVlb29MX1pOU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRTV2YWx1ZUVFbnRzcjIzdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnRJUzZfRUU1dmFsdWVFdkU0dHlwZUUAiEt4X1pOU3QzX18yNmNocm9ub2d0QjZ2MTUwMDdJeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFeE5TMl9JTHgxRUx4MTAwMDAwMEVFRUVFYlJLTlMwXzhkdXJhdGlvbklUX1QwX0VFUktOUzVfSVQxX1QyX0VFAIxL2wFfWk5TdDNfXzI2Y2hyb25vZHZCNnYxNTAwN0l4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVpRUVOU185ZW5hYmxlX2lmSVhhYW50c3IxM19faXNfZHVyYXRpb25JVDFfRUU1dmFsdWVzcjE0aXNfY29udmVydGlibGVJUzVfTlNfMTFjb21tb25fdHlwZUlKVF9TNV9FRTR0eXBlRUVFNXZhbHVlRU5TMF84ZHVyYXRpb25JUzlfVDBfRUVFNHR5cGVFUktOU0FfSVM3X1NCX0VFUktTNV8AjUsqX1pOU3QzX18yMjFfX2xpYmNwcF90aHJlYWRfeWllbGRCNnYxNTAwN0V2AI5LSl9aTktTdDNfXzI2Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUU1Y291bnRCNnYxNTAwN0V2AKo+Zl9aTktTdDNfXzI2Y2hyb25vMTNfX2R1cmF0aW9uX2VxSU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVTNV9FY2xCNnYxNTAwN0VSS1M1X1M4XwCPS3VfWk5TdDNfXzI2Y2hyb25vbHRCNnYxNTAwN0l4TlNfNXJhdGlvSUx4MUVMeDEwMDBFRUV4TlMyX0lMeDFFTHgxMDAwMDAwMDAwRUVFRUViUktOUzBfOGR1cmF0aW9uSVRfVDBfRUVSS05TNV9JVDFfVDJfRUUAkEtsX1pOU3QzX18yMjFfX2NvbnZlcnRfdG9fdGltZXNwZWNCNnYxNTAwN0k4dGltZXNwZWNFRVRfUktOU182Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFAJFLsAFfWk5TdDNfXzI2Y2hyb25vMTNkdXJhdGlvbl9jYXN0QjZ2MTUwMDdJTlMwXzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFRXhOUzNfSUx4MUVMeDEwMDBFRUVFRU5TXzllbmFibGVfaWZJWHNyMTNfX2lzX2R1cmF0aW9uSVRfRUU1dmFsdWVFUzhfRTR0eXBlRVJLTlMyX0lUMF9UMV9FRQCSS3hfWk5TdDNfXzI2Y2hyb25vbHRCNnYxNTAwN0l4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDBFRUV4TlMyX0lMeDFFTHgxMDAwMDAwMDAwRUVFRUViUktOUzBfOGR1cmF0aW9uSVRfVDBfRUVSS05TNV9JVDFfVDJfRUUAk0t/X1pOS1N0M19fMjZjaHJvbm8xM19fZHVyYXRpb25fbHRJTlMwXzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDBFRUVFRU5TMl9JeE5TM19JTHgxRUx4MTAwMDAwMDAwMEVFRUVFRWNsQjZ2MTUwMDdFUktTNV9SS1M3XwCUS60BX1pOU3QzX18yNmNocm9ubzEzZHVyYXRpb25fY2FzdEI2djE1MDA3SU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxRUVFRUV4TlMzX0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVOU185ZW5hYmxlX2lmSVhzcjEzX19pc19kdXJhdGlvbklUX0VFNXZhbHVlRVM4X0U0dHlwZUVSS05TMl9JVDBfVDFfRUUAlUtBX1pOS1N0M19fMjZjaHJvbm84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxRUVFRTVjb3VudEI2djE1MDA3RXYAqj6RAV9aTlN0M19fMjZjaHJvbm9taUI2djE1MDA3SXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRXhOUzJfSUx4MUVMeDFFRUVFRU5TXzExY29tbW9uX3R5cGVJSk5TMF84ZHVyYXRpb25JVF9UMF9FRU5TNl9JVDFfVDJfRUVFRTR0eXBlRVJLUzlfUktTQ18AlkuEAV9aTktTdDNfXzI2Y2hyb25vMTVfX2R1cmF0aW9uX2Nhc3RJTlMwXzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFRU5TMl9JeE5TM19JTHgxRUx4MUVFRUVFUzRfTGIxRUxiMEVFY2xCNnYxNTAwN0VSS1M1XwCXS50CX1pOU3QzX18yNmNocm9ubzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFQzJCNnYxNTAwN0l4TlMyX0lMeDFFTHgxRUVFRUVSS05TMV9JVF9UMF9FRVBOU185ZW5hYmxlX2lmSVhhYXNyMTNfX25vX292ZXJmbG93SVM4X1MzX0VFNXZhbHVlb29MX1pOU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRTV2YWx1ZUVFYWFlcXNyMTNfX25vX292ZXJmbG93SVM4X1MzX0U0dHlwZUUzZGVuTGkxRW50c3IyM3RyZWF0X2FzX2Zsb2F0aW5nX3BvaW50SVM3X0VFNXZhbHVlRXZFNHR5cGVFAJhLzwFfWk5TdDNfXzI2Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MUVFRUVDMkI2djE1MDA3SXhFRVJLVF9QTlNfOWVuYWJsZV9pZklYYWFzcjE0aXNfY29udmVydGlibGVJUzhfeEVFNXZhbHVlb29MX1pOU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRTV2YWx1ZUVFbnRzcjIzdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnRJUzZfRUU1dmFsdWVFdkU0dHlwZUUAhEutAV9aTlN0M19fMjZjaHJvbm8xM2R1cmF0aW9uX2Nhc3RCNnYxNTAwN0lOUzBfOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFeE5TM19JTHgxRUx4MUVFRUVFTlNfOWVuYWJsZV9pZklYc3IxM19faXNfZHVyYXRpb25JVF9FRTV2YWx1ZUVTOF9FNHR5cGVFUktOUzJfSVQwX1QxX0VFAJlLmQFfWk5LU3QzX18yNmNocm9ubzE1X19kdXJhdGlvbl9jYXN0SU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxRUVFRUVOUzJfSXhOUzNfSUx4MUVMeDEwMDAwMDAwMDBFRUVFRU5TM19JTHgxMDAwMDAwMDAwRUx4MUVFRUxiMEVMYjFFRWNsQjZ2MTUwMDdFUktTNV8AmkuZAV9aTktTdDNfXzI2Y2hyb25vMTVfX2R1cmF0aW9uX2Nhc3RJTlMwXzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDBFRUVFRU5TMl9JeE5TM19JTHgxRUx4MTAwMDAwMDAwMEVFRUVFTlMzX0lMeDEwMDAwMDBFTHgxRUVFTGIwRUxiMUVFY2xCNnYxNTAwN0VSS1M1XwCbS0RfWk5LU3QzX18yNmNocm9ubzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDBFRUVFNWNvdW50QjZ2MTUwMDdFdgCqPoIBX1pOS1N0M19fMjZjaHJvbm8xM19fZHVyYXRpb25fbHRJTlMwXzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDBFRUVFRU5TMl9JeE5TM19JTHgxRUx4MTAwMDAwMDAwMEVFRUVFRWNsQjZ2MTUwMDdFUktTNV9SS1M3XwCcS6MCX1pOU3QzX18yNmNocm9ubzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFQzJCNnYxNTAwN0l4TlMyX0lMeDFFTHgxMDAwMDAwRUVFRUVSS05TMV9JVF9UMF9FRVBOU185ZW5hYmxlX2lmSVhhYXNyMTNfX25vX292ZXJmbG93SVM4X1MzX0VFNXZhbHVlb29MX1pOU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRTV2YWx1ZUVFYWFlcXNyMTNfX25vX292ZXJmbG93SVM4X1MzX0U0dHlwZUUzZGVuTGkxRW50c3IyM3RyZWF0X2FzX2Zsb2F0aW5nX3BvaW50SVM3X0VFNXZhbHVlRXZFNHR5cGVFAJ1LswFfWk5TdDNfXzI2Y2hyb25vMTNkdXJhdGlvbl9jYXN0QjZ2MTUwMDdJTlMwXzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFRXhOUzNfSUx4MUVMeDEwMDAwMDBFRUVFRU5TXzllbmFibGVfaWZJWHNyMTNfX2lzX2R1cmF0aW9uSVRfRUU1dmFsdWVFUzhfRTR0eXBlRVJLTlMyX0lUMF9UMV9FRQCeS5kBX1pOS1N0M19fMjZjaHJvbm8xNV9fZHVyYXRpb25fY2FzdElOUzBfOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMEVFRUVFTlMyX0l4TlMzX0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVOUzNfSUx4MTAwMEVMeDFFRUVMYjBFTGIxRUVjbEI2djE1MDA3RVJLUzVfAJ9LR19aTktTdDNfXzI2Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMEVFRUU1Y291bnRCNnYxNTAwN0V2AKo+MF9aTlN0M19fMjM0X19jb25zdHJ1Y3RfYmFycmllcl9hbGdvcml0aG1fYmFzZUVSbACgSwVfWm53bQCsWihfWk5TdDNfXzIyNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZUMyRVJsAKFLbV9aTlN0M19fMjEwdW5pcXVlX3B0cklBX05TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdEVOU18xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRUMyQjZ2MTUwMDdJTGIxRXZFRXYAoksUX1puYW1TdDExYWxpZ25fdmFsX3QA300xX1pOU3QzX18yMjRfX2JhcnJpZXJfYWxnb3JpdGhtX2Jhc2U5X19zdGF0ZV90QzJFdgCjS3NfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJQV9OU18yNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZTlfX3N0YXRlX3RFTlNfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUVDMkI2djE1MDA3SVBTMl9MYjFFdnZFRVRfAKRLaV9aTlN0M19fMjEwdW5pcXVlX3B0cklBX05TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdEVOU18xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRWFTQjZ2MTUwMDdFT1M2XwClS2ZfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJQV9OU18yNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZTlfX3N0YXRlX3RFTlNfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUVEMkI2djE1MDA3RXYApktLX1pOU3QzX18yMzFfX2Fycml2ZV9iYXJyaWVyX2FsZ29yaXRobV9iYXNlRVBOU18yNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZUVoAKdLLl9aTlN0M19fMjI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOF9fYXJyaXZlRWgAqEsnX1pOU3QzX18yMTF0aGlzX3RocmVhZDZnZXRfaWRCNnYxNTAwN0V2AKlLMF9aTktTdDNfXzI0aGFzaElOU18xMV9fdGhyZWFkX2lkRUVjbEI2djE1MDA3RVMxXwCqS2dfWk5LU3QzX18yMTB1bmlxdWVfcHRySUFfTlNfMjRfX2JhcnJpZXJfYWxnb3JpdGhtX2Jhc2U5X19zdGF0ZV90RU5TXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVFaXhCNnYxNTAwN0VtAKtLVl9aTlN0M19fMjEzX19hdG9taWNfYmFzZUloTGIwRUUyM2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nQjZ2MTUwMDdFUmhoTlNfMTJtZW1vcnlfb3JkZXJFAKxLS19aTlN0M19fMjMyX19kZXN0cm95X2JhcnJpZXJfYWxnb3JpdGhtX2Jhc2VFUE5TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlRQCtSydfWk5TdDNfXzIyNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZUQyRXYArkuPAV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdEVOU18xNGRlZmF1bHRfZGVsZXRlSUFfUzJfRUVFQzJCNnYxNTAwN0lOU18xNl9fdmFsdWVfaW5pdF90YWdFUzlfRUVPVF9PVDBfAK9LNF9aTlN0M19fMjI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdFV0X0MyRXYAsEuQAV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdEVOU18xNGRlZmF1bHRfZGVsZXRlSUFfUzJfRUVFQzJCNnYxNTAwN0lSUzNfTlNfMTZfX3ZhbHVlX2luaXRfdGFnRUVFT1RfT1QwXwCxS2xfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJQV9OU18yNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZTlfX3N0YXRlX3RFTlNfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUU3cmVsZWFzZUI2djE1MDA3RXYAuT+1AV9aTlN0M19fMjEwdW5pcXVlX3B0cklBX05TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdEVOU18xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRTVyZXNldEI2djE1MDA3SVBTMl9FRU5TXzllbmFibGVfaWZJWHNyMjhfQ2hlY2tBcnJheVBvaW50ZXJDb252ZXJzaW9uSVRfRUU1dmFsdWVFdkU0dHlwZUVTQV8AsktxX1pOU3QzX18yMTB1bmlxdWVfcHRySUFfTlNfMjRfX2JhcnJpZXJfYWxnb3JpdGhtX2Jhc2U5X19zdGF0ZV90RU5TXzE0ZGVmYXVsdF9kZWxldGVJUzNfRUVFMTFnZXRfZGVsZXRlckI2djE1MDA3RXYA2TBzX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfMjRfX2JhcnJpZXJfYWxnb3JpdGhtX2Jhc2U5X19zdGF0ZV90RU5TXzE0ZGVmYXVsdF9kZWxldGVJQV9TMl9FRUU2c2Vjb25kQjZ2MTUwMDdFdgDZMGtfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJQV9OU18yNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZTlfX3N0YXRlX3RFTlNfMTRkZWZhdWx0X2RlbGV0ZUlTM19FRUU1cmVzZXRCNnYxNTAwN0VEbgCzS3VfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUE5TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdEVMaTBFTGIwRUVDMkI2djE1MDA3RU5TXzE2X192YWx1ZV9pbml0X3RhZ0UAtEuMAV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xNGRlZmF1bHRfZGVsZXRlSUFfTlNfMjRfX2JhcnJpZXJfYWxnb3JpdGhtX2Jhc2U5X19zdGF0ZV90RUVFTGkxRUxiMUVFQzJCNnYxNTAwN0VOU18xNl9fdmFsdWVfaW5pdF90YWdFANkwK19aTlN0M19fMjEzX19hdG9taWNfYmFzZUloTGIxRUVDMkI2djE1MDA3RWgAtUsrX1pOU3QzX18yMTNfX2F0b21pY19iYXNlSWhMYjBFRUMyQjZ2MTUwMDdFaAC2S0pfWk5TdDNfXzIxN19fY3h4X2F0b21pY19pbXBsSWhOU18yMl9fY3h4X2F0b21pY19iYXNlX2ltcGxJaEVFRUMyQjZ2MTUwMDdFaAC3SyhfWk5TdDNfXzIyMl9fY3h4X2F0b21pY19iYXNlX2ltcGxJaEVDMkVoALhLaV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQTlNfMjRfX2JhcnJpZXJfYWxnb3JpdGhtX2Jhc2U5X19zdGF0ZV90RUxpMEVMYjBFRUMyQjZ2MTUwMDdJUlMzX3ZFRU9UXwC5S3JfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU18yNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZTlfX3N0YXRlX3RFTlNfMTRkZWZhdWx0X2RlbGV0ZUlBX1MyX0VFRTVmaXJzdEI2djE1MDA3RXYA2TB+X1pOS1N0M19fMjE0ZGVmYXVsdF9kZWxldGVJQV9OU18yNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZTlfX3N0YXRlX3RFRWNsQjZ2MTUwMDdJUzJfRUVOUzRfMjBfRW5hYmxlSWZDb252ZXJ0aWJsZUlUX0U0dHlwZUVQUzdfALpLe19aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xNGRlZmF1bHRfZGVsZXRlSUFfTlNfMjRfX2JhcnJpZXJfYWxnb3JpdGhtX2Jhc2U5X19zdGF0ZV90RUVFTGkxRUxiMUVFNV9fZ2V0QjZ2MTUwMDdFdgDZMGRfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUE5TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdEVMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwFV9aZGFQdlN0MTFhbGlnbl92YWxfdADHTR5fWk5LU3QzX18yNGhhc2hJbUVjbEI2djE1MDA3RW0AkkozX1pOU3QzX18yMzBfX2xpYmNwcF90aHJlYWRfZ2V0X2N1cnJlbnRfaWRCNnYxNTAwN0V2ALtLIl9aTlN0M19fMjExX190aHJlYWRfaWRDMkI2djE1MDA3RW0AvEtzX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzI0X19iYXJyaWVyX2FsZ29yaXRobV9iYXNlOV9fc3RhdGVfdEVOU18xNGRlZmF1bHRfZGVsZXRlSUFfUzJfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMHlfWk5TdDNfXzIzNl9fY3h4X2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZ0I2djE1MDA3SWhFRWJQTlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSVRfRUVQUzJfUzJfTlNfMTJtZW1vcnlfb3JkZXJFUzZfAL1LLV9aTlN0M19fMjIyX19saWJjcHBfdGhyZWFkX2dldF9pZEI2djE1MDA3RVBLbQDdHWVfWk5LU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU18yNF9fYmFycmllcl9hbGdvcml0aG1fYmFzZTlfX3N0YXRlX3RFTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMDhfWk5TdDNfXzIxOF9fdG9fZmFpbHVyZV9vcmRlckI2djE1MDA3RU5TXzEybWVtb3J5X29yZGVyRQC+SxtfWk5TdDNfXzIxMnBsYWNlaG9sZGVyczJfMUUDoBEbX1pOU3QzX18yMTJwbGFjZWhvbGRlcnMyXzJFA58RG19aTlN0M19fMjEycGxhY2Vob2xkZXJzMl8zRQOeERtfWk5TdDNfXzIxMnBsYWNlaG9sZGVyczJfNEUDnREbX1pOU3QzX18yMTJwbGFjZWhvbGRlcnMyXzVFA5wRG19aTlN0M19fMjEycGxhY2Vob2xkZXJzMl82RQObERtfWk5TdDNfXzIxMnBsYWNlaG9sZGVyczJfN0UDmhEbX1pOU3QzX18yMTJwbGFjZWhvbGRlcnMyXzhFA5kRG19aTlN0M19fMjEycGxhY2Vob2xkZXJzMl85RQOYERxfWk5TdDNfXzIxMnBsYWNlaG9sZGVyczNfMTBFA5cRGV9aTlN0M19fMjh0b19jaGFyc0VQY1MwX2YAv0t9X1pOU3QzX18yMThfRmxvYXRpbmdfdG9fY2hhcnNCNnYxNTAwN0lMTlNfMjdfRmxvYXRpbmdfdG9fY2hhcnNfb3ZlcmxvYWRFMEVmRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MzX1QwX05TXzEyY2hhcnNfZm9ybWF0RWkAwEsmX1pOU3QzX18yOGJpdF9jYXN0QjZ2MTUwMDdJamZFRVRfUktUMF8A3R0mX1pOU3QzX18yOGJpdF9jYXN0QjZ2MTUwMDdJZmpFRVRfUktUMF8Avz1TX1pOU3QzX18yMjJfRmxvYXRpbmdfdG9fY2hhcnNfcnl1SWZFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzJfVF9OU18xMmNoYXJzX2Zvcm1hdEUAwUsZX1pOU3QzX18yOHRvX2NoYXJzRVBjUzBfZADCS31fWk5TdDNfXzIxOF9GbG9hdGluZ190b19jaGFyc0I2djE1MDA3SUxOU18yN19GbG9hdGluZ190b19jaGFyc19vdmVybG9hZEUwRWRFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzNfVDBfTlNfMTJjaGFyc19mb3JtYXRFaQDDSyZfWk5TdDNfXzI4Yml0X2Nhc3RCNnYxNTAwN0l5ZEVFVF9SS1QwXwCqPiZfWk5TdDNfXzI4Yml0X2Nhc3RCNnYxNTAwN0lkeUVFVF9SS1QwXwC+PVNfWk5TdDNfXzIyMl9GbG9hdGluZ190b19jaGFyc19yeXVJZEVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX05TXzEyY2hhcnNfZm9ybWF0RQDESxlfWk5TdDNfXzI4dG9fY2hhcnNFUGNTMF9lAMVLK19aTlN0M19fMjh0b19jaGFyc0VQY1MwX2ZOU18xMmNoYXJzX2Zvcm1hdEUAxkt9X1pOU3QzX18yMThfRmxvYXRpbmdfdG9fY2hhcnNCNnYxNTAwN0lMTlNfMjdfRmxvYXRpbmdfdG9fY2hhcnNfb3ZlcmxvYWRFMUVmRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MzX1QwX05TXzEyY2hhcnNfZm9ybWF0RWkAx0tSX1pOU3QzX18yMzFfRmxvYXRpbmdfdG9fY2hhcnNfaGV4X3Nob3J0ZXN0QjZ2MTUwMDdJZkVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UXwDISytfWk5TdDNfXzI4dG9fY2hhcnNFUGNTMF9kTlNfMTJjaGFyc19mb3JtYXRFAMlLfV9aTlN0M19fMjE4X0Zsb2F0aW5nX3RvX2NoYXJzQjZ2MTUwMDdJTE5TXzI3X0Zsb2F0aW5nX3RvX2NoYXJzX292ZXJsb2FkRTFFZEVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTM19UMF9OU18xMmNoYXJzX2Zvcm1hdEVpAMpLUl9aTlN0M19fMjMxX0Zsb2F0aW5nX3RvX2NoYXJzX2hleF9zaG9ydGVzdEI2djE1MDA3SWRFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzJfVF8Ay0srX1pOU3QzX18yOHRvX2NoYXJzRVBjUzBfZU5TXzEyY2hhcnNfZm9ybWF0RQDMSyxfWk5TdDNfXzI4dG9fY2hhcnNFUGNTMF9mTlNfMTJjaGFyc19mb3JtYXRFaQDNS31fWk5TdDNfXzIxOF9GbG9hdGluZ190b19jaGFyc0I2djE1MDA3SUxOU18yN19GbG9hdGluZ190b19jaGFyc19vdmVybG9hZEUyRWZFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzNfVDBfTlNfMTJjaGFyc19mb3JtYXRFaQDOS1tfWk5TdDNfXzIzOV9GbG9hdGluZ190b19jaGFyc19zY2llbnRpZmljX3ByZWNpc2lvbkI2djE1MDA3SWZFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzJfVF9pAM9LVl9aTlN0M19fMjM0X0Zsb2F0aW5nX3RvX2NoYXJzX2ZpeGVkX3ByZWNpc2lvbkI2djE1MDA3SWZFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzJfVF9pANBLWF9aTlN0M19fMjM2X0Zsb2F0aW5nX3RvX2NoYXJzX2dlbmVyYWxfcHJlY2lzaW9uQjZ2MTUwMDdJZkVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX2kA0UtUX1pOU3QzX18yMzJfRmxvYXRpbmdfdG9fY2hhcnNfaGV4X3ByZWNpc2lvbkI2djE1MDA3SWZFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzJfVF9pANJLLF9aTlN0M19fMjh0b19jaGFyc0VQY1MwX2ROU18xMmNoYXJzX2Zvcm1hdEVpANNLfV9aTlN0M19fMjE4X0Zsb2F0aW5nX3RvX2NoYXJzQjZ2MTUwMDdJTE5TXzI3X0Zsb2F0aW5nX3RvX2NoYXJzX292ZXJsb2FkRTJFZEVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTM19UMF9OU18xMmNoYXJzX2Zvcm1hdEVpANRLW19aTlN0M19fMjM5X0Zsb2F0aW5nX3RvX2NoYXJzX3NjaWVudGlmaWNfcHJlY2lzaW9uQjZ2MTUwMDdJZEVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX2kA1UtWX1pOU3QzX18yMzRfRmxvYXRpbmdfdG9fY2hhcnNfZml4ZWRfcHJlY2lzaW9uQjZ2MTUwMDdJZEVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX2kA1ktYX1pOU3QzX18yMzZfRmxvYXRpbmdfdG9fY2hhcnNfZ2VuZXJhbF9wcmVjaXNpb25CNnYxNTAwN0lkRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MyX1RfaQDXS1RfWk5TdDNfXzIzMl9GbG9hdGluZ190b19jaGFyc19oZXhfcHJlY2lzaW9uQjZ2MTUwMDdJZEVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX2kA2EssX1pOU3QzX18yOHRvX2NoYXJzRVBjUzBfZU5TXzEyY2hhcnNfZm9ybWF0RWkA2Us0X1pOU3QzX18yMTZfX2Yyc19idWZmZXJlZF9uRVBjUzBfZk5TXzEyY2hhcnNfZm9ybWF0RQCtTzRfWk5TdDNfXzIxNl9fZDJzX2J1ZmZlcmVkX25FUGNTMF9kTlNfMTJjaGFyc19mb3JtYXRFALdMI19aTlN0M19fMjZfX2l0b2ExNl9DaGFyY29udl9kaWdpdHNFA5YRPl9aTlN0M19fMjh0b19jaGFyc0I2djE1MDA3SWpMaTBFRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MyX1RfANpLYF9aTlN0M19fMjE1X190b19jaGFyc19pdG9hQjZ2MTUwMDdJakVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX05TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFRQDbSzVfWk5TdDNfXzI2X19pdG9hMTNfX3RyYWl0c19iYXNlSWp2RTdfX3dpZHRoQjZ2MTUwMDdFagDcSzlfWk5TdDNfXzI2X19pdG9hMTNfX3RyYWl0c19iYXNlSWp2RTlfX2NvbnZlcnRCNnYxNTAwN0VQY2oA3UsoX1pOU3QzX18yNl9faXRvYTdfX3RhYmxlSXZFMTBfX3BvdzEwXzMyRQOVEStfWk5TdDNfXzI2X19pdG9hMTNfX2Jhc2VfMTBfdTMyQjZ2MTUwMDdFUGNqAN5LJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQxQjZ2MTUwMDdFUGNqAN9LJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQyQjZ2MTUwMDdFUGNqAOBLJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQzQjZ2MTUwMDdFUGNqAOFLJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQ0QjZ2MTUwMDdFUGNqAOJLJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQ1QjZ2MTUwMDdFUGNqAONLJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQ2QjZ2MTUwMDdFUGNqAORLJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQ3QjZ2MTUwMDdFUGNqAOVLJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQ4QjZ2MTUwMDdFUGNqAOZLJl9aTlN0M19fMjZfX2l0b2E5X19hcHBlbmQ5QjZ2MTUwMDdFUGNqAOdLL19aTlN0M19fMjZfX2l0b2ExMF9fYXBwZW5kMTBCNnYxNTAwN0lqRUVQY1MyX1RfAOhLLl9aTlN0M19fMjZfX2l0b2E3X190YWJsZUl2RTE2X19kaWdpdHNfYmFzZV8xMEUDlBF0X1pOU3QzX18yNmNvcHlfbkI2djE1MDA3SVBLY2lQY0VFTlNfOWVuYWJsZV9pZklYc3IzM19faXNfY3BwMTdfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcklUX0VFNXZhbHVlRVQxX0U0dHlwZUVTNV9UMF9TNl8A6UspX1pOU3QzX18yNGNvcHlCNnYxNTAwN0lQS2NQY0VFVDBfVF9TNV9TNF8A6ktAX1pOU3QzX18yNl9fY29weUI2djE1MDA3SVBLY1MyX1BjTGkwRUVFTlNfNHBhaXJJVF9UMV9FRVM1X1QwX1M2XwDrSzFfWk5TdDNfXzIxNF9fdW53cmFwX3JhbmdlQjZ2MTUwMDdJUEtjUzJfRUVEYVRfVDBfAOxLd19aTlN0M19fMjEzX191bndyYXBfaXRlckI2djE1MDA3SVBjTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzFfTGIxRUVFTGkwRUVFRFRjbHNyVDBfOF9fdW53cmFwY2xzcjNzdGRFN2RlY2x2YWxJVF9FRUVFUzVfANkwQF9aTlN0M19fMjExX19jb3B5X2ltcGxCNnYxNTAwN0lLY2N2RUVOU180cGFpcklQVF9QVDBfRUVTNF9TNF9TNl8A7Us2X1pOU3QzX18yMTRfX3Jld3JhcF9yYW5nZUI2djE1MDA3SVBLY1MyX1MyX0VFVDBfUzNfVDFfAO5LUV9aTlN0M19fMjEzX19yZXdyYXBfaXRlckI2djE1MDA3SVBjUzFfTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzFfTGIxRUVFRUVUX1M0X1QwXwDvS2ZfWk5TdDNfXzI5bWFrZV9wYWlyQjZ2MTUwMDdJUEtjUGNFRU5TXzRwYWlySU5TXzE4X191bndyYXBfcmVmX2RlY2F5SVRfRTR0eXBlRU5TNV9JVDBfRTR0eXBlRUVFT1M2X09TOV8A8Es+X1pOU3QzX18yMTlfX3Vud3JhcF9yYW5nZV9pbXBsSVBLY1MyX0U4X191bndyYXBCNnYxNTAwN0VTMl9TMl8A8Us6X1pOU3QzX18yMThfX3Vud3JhcF9pdGVyX2ltcGxJUGNMYjFFRThfX3Vud3JhcEI2djE1MDA3RVMxXwDZMDRfWk5TdDNfXzI0cGFpcklQS2NQY0VDMkI2djE1MDA3SVMyX1MzX0xQdjBFRUVPVF9PVDBfAPJLPl9aTlN0M19fMjE5X191bndyYXBfcmFuZ2VfaW1wbElQS2NTMl9FOF9fcmV3cmFwQjZ2MTUwMDdFUzJfUzJfAPNLPV9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSVBjTGIxRUU4X19yZXdyYXBCNnYxNTAwN0VTMV9TMV8A9Et4X1pOU3QzX18yMTNfX3Vud3JhcF9pdGVyQjZ2MTUwMDdJUEtjTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzJfTGIxRUVFTGkwRUVFRFRjbHNyVDBfOF9fdW53cmFwY2xzcjNzdGRFN2RlY2x2YWxJVF9FRUVFUzZfANkwNV9aTlN0M19fMjRwYWlySVBLY1MyX0VDMkI2djE1MDA3SVMyX1MyX0xQdjBFRUVPVF9PVDBfAPJLO19aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSVBLY0xiMUVFOF9fdW53cmFwQjZ2MTUwMDdFUzJfANkwKl9aTlN0M19fMjEyX190b19hZGRyZXNzQjZ2MTUwMDdJS2NFRVBUX1MzXwDZMClfWk5TdDNfXzIxMl9fdG9fYWRkcmVzc0I2djE1MDA3SWNFRVBUX1MyXwDZMFJfWk5TdDNfXzIxM19fcmV3cmFwX2l0ZXJCNnYxNTAwN0lQS2NTMl9OU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTMl9MYjFFRUVFRVRfUzVfVDBfAO9LPl9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSVBLY0xiMUVFOF9fcmV3cmFwQjZ2MTUwMDdFUzJfUzJfAPRLJV9aTlN0M19fMjE4X19kMmV4cF9idWZmZXJlZF9uRVBjUzBfZGoAsEwnX1pOU3QzX18yMjBfX2QyZml4ZWRfYnVmZmVyZWRfbkVQY1MwX2RqAKRMOl9aTlN0M19fMjI1X0dlbmVyYWxfcHJlY2lzaW9uX3RhYmxlc0lmRTE2X1NwZWNpYWxfWF90YWJsZUUDkxEvX1pOU3QzX18yMjVfR2VuZXJhbF9wcmVjaXNpb25fdGFibGVzSWZFNl9NYXhfUEUDkhEjX1pOU3QzX18yM21pbkI2djE1MDA3SWlFRVJLVF9TM19TM18A9Us7X1pOU3QzX18yMjVfR2VuZXJhbF9wcmVjaXNpb25fdGFibGVzSWZFMTdfT3JkaW5hcnlfWF90YWJsZUUDkRFlX1paTlN0M19fMjM2X0Zsb2F0aW5nX3RvX2NoYXJzX2dlbmVyYWxfcHJlY2lzaW9uQjZ2MTUwMDdJZkVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX2lFTktVbHZFX2NsRXYA9ksrX1pOU3QzX18yM2VuZEI2djE1MDA3SWNMbTExN0VFRVBUX1JBVDBfX1MxXwD3SylfWk5TdDNfXzI0ZmluZEI2djE1MDA3SVBjY0VFVF9TMl9TMl9SS1QwXwD4SzVfWk5TdDNfXzIzbWluQjZ2MTUwMDdJaU5TXzZfX2xlc3NJaWlFRUVFUktUX1M1X1M1X1QwXwD5S5EBX1pOU3QzX18yN2ZpbmRfaWZCNnYxNTAwN0lQS2paWk5TXzM2X0Zsb2F0aW5nX3RvX2NoYXJzX2dlbmVyYWxfcHJlY2lzaW9uQjZ2MTUwMDdJZkVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTNV9UX2lFTktVbHZFX2NsRXZFVWxqRV9FRVM2X1M2X1M2X1QwXwD6S3JfWlpaTlN0M19fMjM2X0Zsb2F0aW5nX3RvX2NoYXJzX2dlbmVyYWxfcHJlY2lzaW9uQjZ2MTUwMDdJZkVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX2lFTktVbHZFX2NsRXZFTktVbGpFX2NsRWoA+0s6X1pOU3QzX18yMjVfR2VuZXJhbF9wcmVjaXNpb25fdGFibGVzSWRFMTZfU3BlY2lhbF9YX3RhYmxlRQOQES9fWk5TdDNfXzIyNV9HZW5lcmFsX3ByZWNpc2lvbl90YWJsZXNJZEU2X01heF9QRQOPETtfWk5TdDNfXzIyNV9HZW5lcmFsX3ByZWNpc2lvbl90YWJsZXNJZEUxN19PcmRpbmFyeV9YX3RhYmxlRQOOEWVfWlpOU3QzX18yMzZfRmxvYXRpbmdfdG9fY2hhcnNfZ2VuZXJhbF9wcmVjaXNpb25CNnYxNTAwN0lkRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MyX1RfaUVOS1VsdkVfY2xFdgD8SytfWk5TdDNfXzIzZW5kQjZ2MTUwMDdJY0xtNzczRUVFUFRfUkFUMF9fUzFfAP1LQV9aTlN0M19fMjExbG93ZXJfYm91bmRCNnYxNTAwN0lQS3l5TlNfNGxlc3NJdkVFRUVUX1M1X1M1X1JLVDBfVDFfAP5LkQFfWk5TdDNfXzI3ZmluZF9pZkI2djE1MDA3SVBLeVpaTlNfMzZfRmxvYXRpbmdfdG9fY2hhcnNfZ2VuZXJhbF9wcmVjaXNpb25CNnYxNTAwN0lkRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1M1X1RfaUVOS1VsdkVfY2xFdkVVbHlFX0VFUzZfUzZfUzZfVDBfAP9LeF9aTlN0M19fMjE4X19sb3dlcl9ib3VuZF9pbXBsQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQS3lTM195TlNfMTBfX2lkZW50aXR5RU5TXzRsZXNzSXZFRUVFVDBfUzdfVDFfUktUMl9SVDRfUlQzXwCATHJfWlpaTlN0M19fMjM2X0Zsb2F0aW5nX3RvX2NoYXJzX2dlbmVyYWxfcHJlY2lzaW9uQjZ2MTUwMDdJZEVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX2lFTktVbHZFX2NsRXZFTktVbHlFX2NsRXkAgUxyX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRThkaXN0YW5jZUI2djE1MDA3SVBLeUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzdfUzdfAIJMXV9aTlN0M19fMjE1X19oYWxmX3Bvc2l0aXZlQjZ2MTUwMDdJbEVFTlNfOWVuYWJsZV9pZklYc3IxMWlzX2ludGVncmFsSVRfRUU1dmFsdWVFUzJfRTR0eXBlRVMyXwCDTElfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFN2FkdmFuY2VCNnYxNTAwN0lQS3lsRUV2UlRfVDBfAIRMcl9aTlN0M19fMjhfX2ludm9rZUI2djE1MDA3SVJOU18xMF9faWRlbnRpdHlFSlJLeUVFRURUY2xjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFc3BjbHNyM3N0ZEU3ZGVjbHZhbElUMF9FRUVFT1M1X0RwT1M2XwCSSnFfWk5TdDNfXzI4X19pbnZva2VCNnYxNTAwN0lSTlNfNGxlc3NJdkVFSlJLeVM1X0VFRURUY2xjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFc3BjbHNyM3N0ZEU3ZGVjbHZhbElUMF9FRUVFT1M2X0RwT1M3XwCFTFBfWk5TdDNfXzI4ZGlzdGFuY2VCNnYxNTAwN0lQS3lFRU5TXzE1aXRlcmF0b3JfdHJhaXRzSVRfRTE1ZGlmZmVyZW5jZV90eXBlRVM0X1M0XwCGTClfWk5TdDNfXzI3YWR2YW5jZUI2djE1MDA3SVBLeWxsdkVFdlJUX1QwXwCHTGZfWk5LU3QzX18yNGxlc3NJdkVjbEI2djE1MDA3SVJLeVM0X0VFRFRsdGNsc3Izc3RkRTdmb3J3YXJkSVRfRWZwX0VjbHNyM3N0ZEU3Zm9yd2FyZElUMF9FZnAwX0VFT1M1X09TNl8AxEkkX1pOS1N0M19fMjEwX19pZGVudGl0eWNsSVJLeUVFT1RfUzVfAJJKc19aTlN0M19fMjEwX19kaXN0YW5jZUI2djE1MDA3SVBLeUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzRfUzRfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UAiEwqX1pOU3QzX18yMjFfX2NvbnZlcnRfdG9faW50ZWdyYWxCNnYxNTAwN0VsANkwcF9aTlN0M19fMjlfX2FkdmFuY2VCNnYxNTAwN0lQS3lFRXZSVF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTM19FMTVkaWZmZXJlbmNlX3R5cGVFTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UAiUwkX1pOU3QzX18yNmNocm9ubzEyc3lzdGVtX2Nsb2NrM25vd0V2AIpMJF9aTlN0M19fMjIwX190aHJvd19zeXN0ZW1fZXJyb3JFaVBLYwCnX9UBX1pOU3QzX18yNmNocm9ubzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDBFRUVFQzJCNnYxNTAwN0lsRUVSS1RfUE5TXzllbmFibGVfaWZJWGFhc3IxNGlzX2NvbnZlcnRpYmxlSVM4X3hFRTV2YWx1ZW9vTF9aTlNfMTdpbnRlZ3JhbF9jb25zdGFudEliTGIwRUU1dmFsdWVFRW50c3IyM3RyZWF0X2FzX2Zsb2F0aW5nX3BvaW50SVM2X0VFNXZhbHVlRXZFNHR5cGVFAIhLjgFfWk5TdDNfXzI2Y2hyb25vcGxCNnYxNTAwN0l4TlNfNXJhdGlvSUx4MUVMeDFFRUV4TlMyX0lMeDFFTHgxMDAwMDAwRUVFRUVOU18xMWNvbW1vbl90eXBlSUpOUzBfOGR1cmF0aW9uSVRfVDBfRUVOUzZfSVQxX1QyX0VFRUU0dHlwZUVSS1M5X1JLU0NfAIxMbF9aTlN0M19fMjZjaHJvbm8xMHRpbWVfcG9pbnRJTlMwXzEyc3lzdGVtX2Nsb2NrRU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwRUVFRUVFQzJCNnYxNTAwN0VSS1M2XwCNTGxfWk5TdDNfXzI2Y2hyb25vMTJzeXN0ZW1fY2xvY2s5dG9fdGltZV90RVJLTlMwXzEwdGltZV9wb2ludElTMV9OUzBfOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMEVFRUVFRUUAjkx5X1pOS1N0M19fMjZjaHJvbm8xMHRpbWVfcG9pbnRJTlMwXzEyc3lzdGVtX2Nsb2NrRU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwRUVFRUVFMTZ0aW1lX3NpbmNlX2Vwb2NoQjZ2MTUwMDdFdgCqPqoBX1pOU3QzX18yNmNocm9ubzEzZHVyYXRpb25fY2FzdEI2djE1MDA3SU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxRUVFRUV4TlMzX0lMeDFFTHgxMDAwMDAwRUVFRUVOU185ZW5hYmxlX2lmSVhzcjEzX19pc19kdXJhdGlvbklUX0VFNXZhbHVlRVM4X0U0dHlwZUVSS05TMl9JVDBfVDFfRUUAj0yBAV9aTktTdDNfXzI2Y2hyb25vMTVfX2R1cmF0aW9uX2Nhc3RJTlMwXzhkdXJhdGlvbkl4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDBFRUVFRU5TMl9JeE5TM19JTHgxRUx4MUVFRUVFUzRfTGIxRUxiMEVFY2xCNnYxNTAwN0VSS1M1XwCQTC1fWk5TdDNfXzI2Y2hyb25vMTJzeXN0ZW1fY2xvY2sxMWZyb21fdGltZV90RXgAkUyaAl9aTlN0M19fMjZjaHJvbm84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwRUVFRUMyQjZ2MTUwMDdJeE5TMl9JTHgxRUx4MUVFRUVFUktOUzFfSVRfVDBfRUVQTlNfOWVuYWJsZV9pZklYYWFzcjEzX19ub19vdmVyZmxvd0lTOF9TM19FRTV2YWx1ZW9vTF9aTlNfMTdpbnRlZ3JhbF9jb25zdGFudEliTGIwRUU1dmFsdWVFRWFhZXFzcjEzX19ub19vdmVyZmxvd0lTOF9TM19FNHR5cGVFM2RlbkxpMUVudHNyMjN0cmVhdF9hc19mbG9hdGluZ19wb2ludElTN19FRTV2YWx1ZUV2RTR0eXBlRQCKS6oBX1pOU3QzX18yNmNocm9ubzEzZHVyYXRpb25fY2FzdEI2djE1MDA3SU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwRUVFRUV4TlMzX0lMeDFFTHgxRUVFRUVOU185ZW5hYmxlX2lmSVhzcjEzX19pc19kdXJhdGlvbklUX0VFNXZhbHVlRVM4X0U0dHlwZUVSS05TMl9JVDBfVDFfRUUAkkvYAV9aTlN0M19fMjZjaHJvbm84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUMyQjZ2MTUwMDdJbEVFUktUX1BOU185ZW5hYmxlX2lmSVhhYXNyMTRpc19jb252ZXJ0aWJsZUlTOF94RUU1dmFsdWVvb0xfWk5TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFNXZhbHVlRUVudHNyMjN0cmVhdF9hc19mbG9hdGluZ19wb2ludElTNl9FRTV2YWx1ZUV2RTR0eXBlRQCIS5EBX1pOU3QzX18yNmNocm9ub3BsQjZ2MTUwMDdJeE5TXzVyYXRpb0lMeDFFTHgxRUVFeE5TMl9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFTlNfMTFjb21tb25fdHlwZUlKTlMwXzhkdXJhdGlvbklUX1QwX0VFTlM2X0lUMV9UMl9FRUVFNHR5cGVFUktTOV9SS1NDXwCUTG9fWk5TdDNfXzI2Y2hyb25vMTB0aW1lX3BvaW50SU5TMF8xMnN0ZWFkeV9jbG9ja0VOUzBfOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFRUMyQjZ2MTUwMDdFUktTNl8AjUzVAV9aTlN0M19fMjZjaHJvbm84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwRUVFRUMyQjZ2MTUwMDdJeEVFUktUX1BOU185ZW5hYmxlX2lmSVhhYXNyMTRpc19jb252ZXJ0aWJsZUlTOF94RUU1dmFsdWVvb0xfWk5TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFNXZhbHVlRUVudHNyMjN0cmVhdF9hc19mbG9hdGluZ19wb2ludElTNl9FRTV2YWx1ZUV2RTR0eXBlRQCES5MBX1pOS1N0M19fMjZjaHJvbm8xNV9fZHVyYXRpb25fY2FzdElOUzBfOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MUVFRUVFTlMyX0l4TlMzX0lMeDFFTHgxMDAwMDAwRUVFRUVOUzNfSUx4MTAwMDAwMEVMeDFFRUVMYjBFTGIxRUVjbEI2djE1MDA3RVJLUzVfAJtLKV9aTlN0M19fMjZjaHJvbm8xMnN5c3RlbV9jbG9jazlpc19zdGVhZHlFA40RKV9aTlN0M19fMjZjaHJvbm8xMnN0ZWFkeV9jbG9jazlpc19zdGVhZHlFA4wRK19aTlN0M19fMjE4Y29uZGl0aW9uX3ZhcmlhYmxlMTBub3RpZnlfb25lRXYAlUw8X1pOU3QzX18yMjNfX2xpYmNwcF9jb25kdmFyX3NpZ25hbEI2djE1MDA3RVAxNHB0aHJlYWRfY29uZF90ANwQK19aTlN0M19fMjE4Y29uZGl0aW9uX3ZhcmlhYmxlMTBub3RpZnlfYWxsRXYAlkw/X1pOU3QzX18yMjZfX2xpYmNwcF9jb25kdmFyX2Jyb2FkY2FzdEI2djE1MDA3RVAxNHB0aHJlYWRfY29uZF90ANwQQV9aTlN0M19fMjE4Y29uZGl0aW9uX3ZhcmlhYmxlNHdhaXRFUk5TXzExdW5pcXVlX2xvY2tJTlNfNW11dGV4RUVFAJdMN19aTktTdDNfXzIxMXVuaXF1ZV9sb2NrSU5TXzVtdXRleEVFOW93bnNfbG9ja0I2djE1MDA3RXYAmEwzX1pOS1N0M19fMjExdW5pcXVlX2xvY2tJTlNfNW11dGV4RUU1bXV0ZXhCNnYxNTAwN0V2AN0dKF9aTlN0M19fMjVtdXRleDEzbmF0aXZlX2hhbmRsZUI2djE1MDA3RXYA2TBMX1pOU3QzX18yMjFfX2xpYmNwcF9jb25kdmFyX3dhaXRCNnYxNTAwN0VQMTRwdGhyZWFkX2NvbmRfdFAxNXB0aHJlYWRfbXV0ZXhfdADEOacBX1pOU3QzX18yMThjb25kaXRpb25fdmFyaWFibGUxNV9fZG9fdGltZWRfd2FpdEVSTlNfMTF1bmlxdWVfbG9ja0lOU181bXV0ZXhFRUVOU182Y2hyb25vMTB0aW1lX3BvaW50SU5TNV8xMnN5c3RlbV9jbG9ja0VOUzVfOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFRUUAmUx8X1pOS1N0M19fMjZjaHJvbm8xMHRpbWVfcG9pbnRJTlMwXzEyc3lzdGVtX2Nsb2NrRU5TMF84ZHVyYXRpb25JeE5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVFMTZ0aW1lX3NpbmNlX2Vwb2NoQjZ2MTUwMDdFdgCqPmZfWk5TdDNfXzI2Y2hyb25vZ3RCNnYxNTAwN0l4TlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUV4UzNfRUViUktOUzBfOGR1cmF0aW9uSVRfVDBfRUVSS05TNF9JVDFfVDJfRUUAmkxbX1pOU3QzX18yMjZfX2xpYmNwcF9jb25kdmFyX3RpbWVkd2FpdEI2djE1MDA3RVAxNHB0aHJlYWRfY29uZF90UDE1cHRocmVhZF9tdXRleF90UDh0aW1lc3BlYwDjAltfWk5TdDNfXzIyNW5vdGlmeV9hbGxfYXRfdGhyZWFkX2V4aXRFUk5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRU5TXzExdW5pcXVlX2xvY2tJTlNfNW11dGV4RUVFAJtMIF9aTlN0M19fMjE5X190aHJlYWRfbG9jYWxfZGF0YUV2AK9fRl9aTktTdDNfXzIyMV9fdGhyZWFkX3NwZWNpZmljX3B0cklOU18xNV9fdGhyZWFkX3N0cnVjdEVFM2dldEI2djE1MDA3RXYAnEweX1pOU3QzX18yMTVfX3RocmVhZF9zdHJ1Y3RDMUV2AMFfSV9aTlN0M19fMjIxX190aHJlYWRfc3BlY2lmaWNfcHRySU5TXzE1X190aHJlYWRfc3RydWN0RUUxMXNldF9wb2ludGVyRVBTMV8AnUxEX1pOS1N0M19fMjIxX190aHJlYWRfc3BlY2lmaWNfcHRySU5TXzE1X190aHJlYWRfc3RydWN0RUVwdEI2djE1MDA3RXYAnkw0X1pOU3QzX18yMTF1bmlxdWVfbG9ja0lOU181bXV0ZXhFRTdyZWxlYXNlQjZ2MTUwMDdFdgCfTFpfWk5TdDNfXzIxNV9fdGhyZWFkX3N0cnVjdDI1bm90aWZ5X2FsbF9hdF90aHJlYWRfZXhpdEVQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEUAxl8lX1pOU3QzX18yMTZfX2xpYmNwcF90bHNfZ2V0QjZ2MTUwMDdFagC8HydfWk5TdDNfXzIxNl9fbGliY3BwX3Rsc19zZXRCNnYxNTAwN0VqUHYAoEwhX1pOU3QzX18yMThjb25kaXRpb25fdmFyaWFibGVEMkV2AKFMPV9aTlN0M19fMjI0X19saWJjcHBfY29uZHZhcl9kZXN0cm95QjZ2MTUwMDdFUDE0cHRocmVhZF9jb25kX3QA3BAhX1pOU3QzX18yMThjb25kaXRpb25fdmFyaWFibGVEMUV2AKFMIV9aTlN0M19fMjE3X19hcHBlbmRfbl9kaWdpdHNFampQYwCiTCNfWk5TdDNfXzIyMF9fYXBwZW5kX25pbmVfZGlnaXRzRWpQYwCjTCVfWk5TdDNfXzIxNl9fZG91YmxlX3RvX2JpdHNCNnYxNTAwN0VkANE8J19aTlN0M19fMjE4X19pbmRleEZvckV4cG9uZW50QjZ2MTUwMDdFagClTBpfWk5TdDNfXzIxNF9fUE9XMTBfT0ZGU0VURQOLEShfWk5TdDNfXzIxOV9fcG93MTBCaXRzRm9ySW5kZXhCNnYxNTAwN0VqAKZMJV9aTlN0M19fMjE2X19sZW5ndGhGb3JJbmRleEI2djE1MDA3RWoAp0wZX1pOU3QzX18yMTNfX1BPVzEwX1NQTElURQOKESpfWk5TdDNfXzIxN19fbXVsU2hpZnRfbW9kMWU5QjZ2MTUwMDdFeVBLeWkAqEwlX1pOU3QzX18yMTZfX2RlY2ltYWxMZW5ndGg5QjZ2MTUwMDdFagCpTBlfWk5TdDNfXzIxM19fTUlOX0JMT0NLXzJFA4kRHF9aTlN0M19fMjE2X19QT1cxMF9PRkZTRVRfMkUDiBEbX1pOU3QzX18yMTVfX1BPVzEwX1NQTElUXzJFA4cRKl9aTlN0M19fMjIwX19tdWx0aXBsZU9mUG93ZXJPZjJCNnYxNTAwN0V5agCqTClfWk5TdDNfXzIxN19fYXBwZW5kX2NfZGlnaXRzQjZ2MTUwMDdFampQYwCrTCBfWk5TdDNfXzIxMV9fbG9nMTBQb3cyQjZ2MTUwMDdFaQCsTCVfWk5TdDNfXzIxM19fcnl1X3VtdWwxMjhCNnYxNTAwN0V5eVB5AK1MKl9aTlN0M19fMjE5X19yeXVfc2hpZnRyaWdodDEyOEI2djE1MDA3RXl5agCuTCZfWk5TdDNfXzIxNl9fdWludDEyOF9tb2QxZTlCNnYxNTAwN0V5eQCvTClfWk5TdDNfXzIxN19fYXBwZW5kX2RfZGlnaXRzQjZ2MTUwMDdFampQYwCxTCpfWk5TdDNfXzIyMF9fbXVsdGlwbGVPZlBvd2VyT2Y1QjZ2MTUwMDdFeWoAskwhX1pOU3QzX18yMTJfX3BvdzVGYWN0b3JCNnYxNTAwN0V5ALNMLF9aTlN0M19fMjIwX191bXVsMjU2X2hpMTI4X2xvNjRCNnYxNTAwN0V5eXl5ALRMGl9aTlN0M19fMjZfX2RpdjVCNnYxNTAwN0V5ALVMHF9aTlN0M19fMjdfX3VtdWxoQjZ2MTUwMDdFeXkAtkxBX1pOU3QzX18yMTVfX2QyZF9zbWFsbF9pbnRCNnYxNTAwN0V5alBOU18yMV9fZmxvYXRpbmdfZGVjaW1hbF82NEUAuEwbX1pOU3QzX18yN19fZGl2MTBCNnYxNTAwN0V5ALlMGl9aTlN0M19fMjVfX2QyZEI2djE1MDA3RXlqALpMUV9aTlN0M19fMjEwX190b19jaGFyc0I2djE1MDA3RVBjUzBfTlNfMjFfX2Zsb2F0aW5nX2RlY2ltYWxfNjRFTlNfMTJjaGFyc19mb3JtYXRFZAC7TB9fWk5TdDNfXzIxMF9fcG93NWJpdHNCNnYxNTAwN0VpALxMI19aTlN0M19fMjIzX19ET1VCTEVfUE9XNV9JTlZfU1BMSVRFA4YRLF9aTlN0M19fMjEzX19tdWxTaGlmdEFsbEI2djE1MDA3RXlQS3lpUHlTMl9qAL1MIF9aTlN0M19fMjExX19sb2cxMFBvdzVCNnYxNTAwN0VpAL5MH19aTlN0M19fMjE5X19ET1VCTEVfUE9XNV9TUExJVEUDhREcX1pOU3QzX18yOF9fZGl2MTAwQjZ2MTUwMDdFeQC/TCZfWk5TdDNfXzIxN19fZGVjaW1hbExlbmd0aDE3QjZ2MTUwMDdFeQDATGBfWlpOU3QzX18yMTBfX3RvX2NoYXJzQjZ2MTUwMDdFUGNTMF9OU18yMV9fZmxvYXRpbmdfZGVjaW1hbF82NEVOU18xMmNoYXJzX2Zvcm1hdEVkRTExX0FkanVzdG1lbnQDhBEmX1pOU3QzX18yMTVfQml0U2NhbkZvcndhcmRCNnYxNTAwN0VQbWoAwUxqX1paTlN0M19fMjEwX190b19jaGFyc0I2djE1MDA3RVBjUzBfTlNfMjFfX2Zsb2F0aW5nX2RlY2ltYWxfNjRFTlNfMTJjaGFyc19mb3JtYXRFZEUyMV9NYXhfc2hpZnRlZF9tYW50aXNzYQODERxfWk5TdDNfXzI4X19kaXYxZThCNnYxNTAwN0V5AMJMI19aTlN0M19fMjEwX19tdWxTaGlmdEI2djE1MDA3RXlQS3lpAMNMFF9aTlN0M19fMjhfX2dldF9kYkV2AMRMGl9aTlN0M19fMjExX19saWJjcHBfZGJDMUV2AMlMG19aTlN0M19fMjE0X19nZXRfY29uc3RfZGJFdgDFTBZfWk5TdDNfXzI4X19pX25vZGVEMkV2AMZMFl9aTlN0M19fMjhfX2lfbm9kZUQxRXYAxkwWX1pOU3QzX18yOF9fY19ub2RlRDJFdgDHTBVfWlRWTlN0M19fMjhfX2Nfbm9kZUUDghEWX1pOU3QzX18yOF9fY19ub2RlRDBFdgDITBpfWk5TdDNfXzIxMV9fbGliY3BwX2RiQzJFdgDJTBpfWk5TdDNfXzIxMV9fbGliY3BwX2RiRDJFdgDKTCtfWk5LU3QzX18yMTFfX2xpYmNwcF9kYjE1X19maW5kX2NfZnJvbV9pRVB2AMtMMF9aTlN0M19fMjEwbG9ja19ndWFyZElOU181bXV0ZXhFRUMyQjZ2MTUwMDdFUlMxXwDMTCxfWk5LU3QzX18yMTFfX2xpYmNwcF9kYjE1X19maW5kX2l0ZXJhdG9yRVBLdgDNTC1fWk5TdDNfXzIxMGxvY2tfZ3VhcmRJTlNfNW11dGV4RUVEMkI2djE1MDA3RXYAzkwWX1pOU3QzX18yNW11dGV4NGxvY2tFdgCUWiJfWk5LU3QzX18yNGhhc2hJUEt2RWNsQjZ2MTUwMDdFUzJfAPZKGF9aTlN0M19fMjVtdXRleDZ1bmxvY2tFdgCWWilfWk5TdDNfXzIxMV9fbGliY3BwX2RiMTFfX2luc2VydF9pY0VQdlBLdgDPTCxfWk5TdDNfXzIxMV9fbGliY3BwX2RiMTdfX2luc2VydF9pdGVyYXRvckVQdgDQTCdfWk5TdDNfXzI4X19jX25vZGU1X19hZGRFUE5TXzhfX2lfbm9kZUUA0UwZX1pOU3QzX18yMTJfX25leHRfcHJpbWVFbQDsTyFfWk5LU3QzX18yNGhhc2hJUHZFY2xCNnYxNTAwN0VTMV8A9koxX1pOU3QzX18yOF9faV9ub2RlQzJCNnYxNTAwN0VQdlBTMF9QTlNfOF9fY19ub2RlRQDSTBhfWlN0MTdfX3Rocm93X2JhZF9hbGxvY3YAq1o/X1pOU3QzX18yMTFfX2xpYmNwcF9kYjEwX19pbnNlcnRfY0VQdlBGUE5TXzhfX2Nfbm9kZUVTMV9TMV9TM19FANNMI19aTlN0M19fMjExX19saWJjcHBfZGI5X19lcmFzZV9pRVB2ANRMKl9aTlN0M19fMjhfX2Nfbm9kZThfX3JlbW92ZUVQTlNfOF9faV9ub2RlRQDVTDhfWk5TdDNfXzI0ZmluZEI2djE1MDA3SVBQTlNfOF9faV9ub2RlRVMyX0VFVF9TNF9TNF9SS1QwXwDWTCtfWk5TdDNfXzIxMV9fbGliY3BwX2RiMTZfX2ludmFsaWRhdGVfYWxsRVB2ANdMLV9aTktTdDNfXzIxMV9fbGliY3BwX2RiMTdfX2ZpbmRfY19hbmRfbG9ja0VQdgDYTCNfWk5LU3QzX18yMTFfX2xpYmNwcF9kYjhfX2ZpbmRfY0VQdgDZTCBfWk5LU3QzX18yMTFfX2xpYmNwcF9kYjZ1bmxvY2tFdgDaTCNfWk5TdDNfXzIxMV9fbGliY3BwX2RiOV9fZXJhc2VfY0VQdgDbTC1fWk5TdDNfXzIxMV9fbGliY3BwX2RiMTVfX2l0ZXJhdG9yX2NvcHlFUHZQS3YA3EwuX1pOS1N0M19fMjExX19saWJjcHBfZGIxN19fZGVyZWZlcmVuY2VhYmxlRVBLdgDdTCxfWk5LU3QzX18yMTFfX2xpYmNwcF9kYjE1X19kZWNyZW1lbnRhYmxlRVBLdgDeTCZfWk5LU3QzX18yMTFfX2xpYmNwcF9kYjlfX2FkZGFibGVFUEt2bADfTC1fWk5LU3QzX18yMTFfX2xpYmNwcF9kYjE1X19zdWJzY3JpcHRhYmxlRVBLdmwA4Ew2X1pOS1N0M19fMjExX19saWJjcHBfZGIyMl9fbGVzc190aGFuX2NvbXBhcmFibGVFUEt2UzJfAOFMIV9aTlN0M19fMjExX19saWJjcHBfZGI0c3dhcEVQdlMxXwDiTI8BX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lQUE5TXzhfX2lfbm9kZUVFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTNV9FRTV2YWx1ZUV2RTR0eXBlRVJTNV9TOF8AjEolX1pOU3QzX18yMTFfX2xpYmNwcF9kYjEwX19pbnNlcnRfaUVQdgDjTBVfWlRJTlN0M19fMjhfX2Nfbm9kZUUDgREWX1pOU3QzX18yOF9fY19ub2RlRDFFdgDHTBJfX2N4YV9wdXJlX3ZpcnR1YWwA+mEVX1pUU05TdDNfXzI4X19jX25vZGVFA4ARJV9aVFZOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UD/xAaX1pOU3QzX18yMTFfX2xpYmNwcF9kYkQxRXYAykxmX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xOGRpcmVjdG9yeV9pdGVyYXRvckMyRVJLTlMxXzRwYXRoRVBOU18xMGVycm9yX2NvZGVFTlMxXzE3ZGlyZWN0b3J5X29wdGlvbnNFAORMRl9aTlN0M19fMjEwc2hhcmVkX3B0cklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVDMkI2djE1MDA3RXYA5UwhX1pOU3QzX18yMTBlcnJvcl9jb2RlQzJCNnYxNTAwN0V2AOdMlwFfWk5TdDNfXzIxMW1ha2Vfc2hhcmVkQjZ2MTUwMDdJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVKUktOUzJfNHBhdGhFUk5TMl8xN2RpcmVjdG9yeV9vcHRpb25zRVJOU18xMGVycm9yX2NvZGVFRXZFRU5TXzEwc2hhcmVkX3B0cklUX0VFRHBPVDBfAOhMSV9aTlN0M19fMjEwc2hhcmVkX3B0cklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVhU0I2djE1MDA3RU9TNF8A6UxGX1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUQyQjZ2MTUwMDdFdgDqTEdfWk5LU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRXB0QjZ2MTUwMDdFdgDdHTBfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbTRnb29kRXYAixxKX1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRTVyZXNldEI2djE1MDA3RXYA60wjX1pOS1N0M19fMjEwZXJyb3JfY29kZWN2YkI2djE1MDA3RXYAixwlX1pOU3QzX18yMTBlcnJvcl9jb2RlNWNsZWFyQjZ2MTUwMDdFdgDtTBxfWk5TdDNfXzIxNXN5c3RlbV9jYXRlZ29yeUV2AJ5fRF9aTlN0M19fMjlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFQzJCNnYxNTAwN0V2ANkwswFfWk5TdDNfXzIxNWFsbG9jYXRlX3NoYXJlZEI2djE1MDA3SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUpSS05TMl80cGF0aEVSTlMyXzE3ZGlyZWN0b3J5X29wdGlvbnNFUk5TXzEwZXJyb3JfY29kZUVFdkVFTlNfMTBzaGFyZWRfcHRySVRfRUVSS1QwX0RwT1QxXwDuTElfWk5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFQzJCNnYxNTAwN0VPUzRfAO9MTF9aTlN0M19fMjEwc2hhcmVkX3B0cklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUU0c3dhcEI2djE1MDA3RVJTNF8A8Ew6X1pOU3QzX18yMTlfX3NoYXJlZF93ZWFrX2NvdW50MTZfX3JlbGVhc2Vfc2hhcmVkQjZ2MTUwMDdFdgDxTFFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVDMkI2djE1MDA3SURuRUVQS2MA8kxhX1pOU3QzX18ycGxCNnYxNTAwN0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlNfMTJiYXNpY19zdHJpbmdJVF9UMF9UMV9FRU9TOV9QS1M2XwDzTENfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMkV2AKddlAFfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI0X190aHJvd19maWxlc3lzdGVtX2Vycm9yQjZ2MTUwMDdJSlJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktOU18xMGVycm9yX2NvZGVFRUVFdkRwT1RfAPRMoAFfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI0X190aHJvd19maWxlc3lzdGVtX2Vycm9yQjZ2MTUwMDdJSlJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktOUzFfNHBhdGhFUktOU18xMGVycm9yX2NvZGVFRUVFdkRwT1RfAPVMowFfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI0X190aHJvd19maWxlc3lzdGVtX2Vycm9yQjZ2MTUwMDdJSlJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktOUzFfNHBhdGhFU0NfUktOU18xMGVycm9yX2NvZGVFRUVFdkRwT1RfAPZMKV9aTlN0M19fMjIwX19saWJjcHBfdW5yZWFjaGFibGVCNnYxNTAwN0V2AMg8TV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3IxMV9faW5jcmVtZW50RVBOU18xMGVycm9yX2NvZGVFAPdMQl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW03YWR2YW5jZUVSTlNfMTBlcnJvcl9jb2RlRQD4TC5fWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoQzJCNnYxNTAwN0VPUzJfAPlMMF9aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoNWNfc3RyQjZ2MTUwMDdFdgD6TCtfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoRDJCNnYxNTAwN0V2APxMQV9aTlN0M19fMjE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUMyQjZ2MTUwMDdFUEtjAP1Ma19aTlN0M19fMmVxQjZ2MTUwMDdJY05TXzExY2hhcl90cmFpdHNJY0VFTGkxRUVFYk5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJVF9UMF9FRU5TXzExY29tbW9uX3R5cGVJSlM2X0VFNHR5cGVFAP5MRF9aTktTdDNfXzIxN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1ZW1wdHlCNnYxNTAwN0V2AP9MMF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW01Y2xvc2VFdgCATWtfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoQzJCNnYxNTAwN0lOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFdkVFUktUX05TMl82Zm9ybWF0RQCBTTRfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbWR2QjZ2MTUwMDdFUktOUzFfNHBhdGhFUzRfAIJNWV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTVkaXJlY3RvcnlfZW50cnkyMF9fY3JlYXRlX2l0ZXJfcmVzdWx0QjZ2MTUwMDdFTlMxXzlmaWxlX3R5cGVFAINNaF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTVkaXJlY3RvcnlfZW50cnkxOV9fYXNzaWduX2l0ZXJfZW50cnlCNnYxNTAwN0VPTlMxXzRwYXRoRU5TMl8xM19fY2FjaGVkX2RhdGFFAIRNTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUMyQjZ2MTUwMDdFT1M1XwCFTVBfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNWNfc3RyQjZ2MTUwMDdFdgD6TEBfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xOGRpcmVjdG9yeV9pdGVyYXRvcjEzX19kZXJlZmVyZW5jZUV2AIdNcF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yQzJFUktOUzFfNHBhdGhFTlMxXzE3ZGlyZWN0b3J5X29wdGlvbnNFUE5TXzEwZXJyb3JfY29kZUUAiE1lX1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRUMyQjZ2MTUwMDdFRG4AiU1gX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUMyRVJLTlMxXzRwYXRoRU5TMV8xN2RpcmVjdG9yeV9vcHRpb25zRVJOU18xMGVycm9yX2NvZGVFAIpNf19aTlN0M19fMjExbWFrZV9zaGFyZWRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRUpFdkVFTlNfMTBzaGFyZWRfcHRySVRfRUVEcE9UMF8Ai01nX1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRWFTQjZ2MTUwMDdFT1M1XwDpTGRfWk5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVFRDJCNnYxNTAwN0V2AOpMZV9aTktTdDNfXzIxMHNoYXJlZF9wdHJJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVFcHRCNnYxNTAwN0V2AN0daF9aTlN0M19fMjVzdGFja0lOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzVkZXF1ZUlTM19OU185YWxsb2NhdG9ySVMzX0VFRUVFNHB1c2hCNnYxNTAwN0VPUzNfAIxNLF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1EMkV2AI1NL19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhDMkI2djE1MDA3RVJLUzJfAI5NL19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTVkaXJlY3RvcnlfZW50cnlDMkV2AI9NQF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtYW5CNnYxNTAwN0VOUzFfMTdkaXJlY3Rvcnlfb3B0aW9uc0VTMl8AkU0mX1pOS1N0M19fMjEwZXJyb3JfY29kZTV2YWx1ZUI2djE1MDA3RXYA3R0vX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNWRpcmVjdG9yeV9lbnRyeUQyRXYA/ExiX1pOU3QzX18yOWFsbG9jYXRvcklOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRUVDMkI2djE1MDA3RXYA2TCbAV9aTlN0M19fMjE1YWxsb2NhdGVfc2hhcmVkQjZ2MTUwMDdJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOU185YWxsb2NhdG9ySVM0X0VFSkV2RUVOU18xMHNoYXJlZF9wdHJJVF9FRVJLVDBfRHBPVDFfAJJNZ19aTlN0M19fMjEwc2hhcmVkX3B0cklOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRUVDMkI2djE1MDA3RU9TNV8A70xqX1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRTRzd2FwQjZ2MTUwMDdFUlM1XwDwTFZfWk5TdDNfXzI1ZGVxdWVJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRTlwdXNoX2JhY2tFT1MzXwCTTVBfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjVfX3BvcEVQTlNfMTBlcnJvcl9jb2RlRQCUTWRfWk5TdDNfXzI1c3RhY2tJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU181ZGVxdWVJUzNfTlNfOWFsbG9jYXRvcklTM19FRUVFRTNwb3BCNnYxNTAwN0V2AJVNZl9aTktTdDNfXzI1c3RhY2tJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU181ZGVxdWVJUzNfTlNfOWFsbG9jYXRvcklTM19FRUVFRTRzaXplQjZ2MTUwMDdFdgCWTWhfWk5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVFNXJlc2V0QjZ2MTUwMDdFdgDrTFRfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjlfX2FkdmFuY2VFUE5TXzEwZXJyb3JfY29kZUUAl01SX1pOU3QzX18yNWRlcXVlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUU4cG9wX2JhY2tFdgCYTVdfWk5LU3QzX18yNWRlcXVlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUU0c2l6ZUI2djE1MDA3RXYAmU1kX1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRUMyQjZ2MTUwMDdFdgDlTDpfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yQzJCNnYxNTAwN0V2AJpNZF9aTlN0M19fMjVzdGFja0lOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzVkZXF1ZUlTM19OU185YWxsb2NhdG9ySVMzX0VFRUVFM3RvcEI2djE1MDA3RXYAm006X1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xOGRpcmVjdG9yeV9pdGVyYXRvckQyQjZ2MTUwMDdFdgCcTUNfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3I3b3B0aW9uc0V2AJ1NQV9aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjVkZXB0aEV2AJ5NSl9aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEzX19kZXJlZmVyZW5jZUV2AJ9NTl9aTlN0M19fMjVkZXF1ZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFNGJhY2tFdgCgTVdfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjExX19pbmNyZW1lbnRFUE5TXzEwZXJyb3JfY29kZUUAoU1WX1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTdyZWN1cnNpb25fcGVuZGluZ0I2djE1MDA3RXYAok1bX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxNV9fdHJ5X3JlY3Vyc2lvbkVQTlNfMTBlcnJvcl9jb2RlRQCjTVRfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNWRpcmVjdG9yeV9lbnRyeTEyX19nZXRfc3ltX2Z0QjZ2MTUwMDdFUE5TXzEwZXJyb3JfY29kZUUApE1MX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xMWZpbGVfc3RhdHVzQzJCNnYxNTAwN0VOUzFfOWZpbGVfdHlwZUVOUzFfNXBlcm1zRQClTUNfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTEyc3RhdHVzX2tub3duQjZ2MTUwMDdFTlMxXzExZmlsZV9zdGF0dXNFAKZNM19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTFmaWxlX3N0YXR1c0QyQjZ2MTUwMDdFdgDZMEFfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTEwaXNfc3ltbGlua0I2djE1MDA3RU5TMV8xMWZpbGVfc3RhdHVzRQCnTUNfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTEyaXNfZGlyZWN0b3J5QjZ2MTUwMDdFTlMxXzExZmlsZV9zdGF0dXNFAKhNT19aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTE1ZGlyZWN0b3J5X2VudHJ5OF9fZ2V0X2Z0QjZ2MTUwMDdFUE5TXzEwZXJyb3JfY29kZUUAqU07X1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTVkaXJlY3RvcnlfZW50cnk0cGF0aEI2djE1MDA3RXYA2TBKX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNl9fc3ltbGlua19zdGF0dXNFUktOUzFfNHBhdGhFUE5TXzEwZXJyb3JfY29kZUUAqFs3X1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTFmaWxlX3N0YXR1czR0eXBlQjZ2MTUwMDdFdgCqTTxfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTZleGlzdHNCNnYxNTAwN0VOUzFfMTFmaWxlX3N0YXR1c0UAq00sX1pOU3QzX18yMTVtYWtlX2Vycm9yX2NvZGVCNnYxNTAwN0VOU180ZXJyY0UArE1BX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW04X19zdGF0dXNFUktOUzFfNHBhdGhFUE5TXzEwZXJyb3JfY29kZUUAgVt0X1pOU3QzX18yNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtOWZpbGVfdHlwZUVFQzJCNnYxNTAwN0lMYjFFTFB2MEVFRXYArU2AAV9aTlN0M19fMjRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTlmaWxlX3R5cGVFRUMyQjZ2MTUwMDdJUkEyNTZfY1M3X0xQdjBFRUVPVF9PVDBfAK5NQ19aTktTdDNfXzIxN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0c2l6ZUI2djE1MDA3RXYA3h1AX1pOS1N0M19fMjE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRTdjb21wYXJlRVMzXwCvTVdfWk5TdDNfXzIyOF9fY2hhcl90cmFpdHNfbGVuZ3RoX2NoZWNrZWRCNnYxNTAwN0lOU18xMWNoYXJfdHJhaXRzSWNFRUVFbVBLTlRfOWNoYXJfdHlwZUUAsE0uX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGFTQjZ2MTUwMDdFT1MyXwCxTS9fWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoZFZCNnYxNTAwN0VSS1MyXwCyTUtfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVDMkI2djE1MDA3RXYAs02fAV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VCNnYxNTAwN0lOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNTN19OU185YWxsb2NhdG9ySWNFRUVFUktUXwC0TUZfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE1ZGlyZWN0b3J5X2VudHJ5MTNfX2NhY2hlZF9kYXRhQzJCNnYxNTAwN0V2ALVNZl9aWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE1ZGlyZWN0b3J5X2VudHJ5MjBfX2NyZWF0ZV9pdGVyX3Jlc3VsdEI2djE1MDA3RU5TMV85ZmlsZV90eXBlRUVOS1VsdkVfY2xFdgC2TR1fWk5TdDNfXzIxNmdlbmVyaWNfY2F0ZWdvcnlFdgCbXzdfWk5TdDNfXzIxMGVycm9yX2NvZGVDMkI2djE1MDA3RWlSS05TXzE0ZXJyb3JfY2F0ZWdvcnlFALdNP19aTlN0M19fMjE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUMyQjZ2MTUwMDdFdgDlTCNfWk5TdDNfXzIzbWluQjZ2MTUwMDdJbUVFUktUX1MzX1MzXwC4TUNfWk5LU3QzX18yMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNGRhdGFCNnYxNTAwN0V2AN0dKV9aTlN0M19fMjExY2hhcl90cmFpdHNJY0U3Y29tcGFyZUVQS2NTM19tALlNNV9aTlN0M19fMjNtaW5CNnYxNTAwN0ltTlNfNl9fbGVzc0ltbUVFRUVSS1RfUzVfUzVfVDBfALpNJF9aTlN0M19fMjExY2hhcl90cmFpdHNJY0U2bGVuZ3RoRVBLYwCwTU5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVhU0I2djE1MDA3RU9TNV8Au015X1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTNfX21vdmVfYXNzaWduQjZ2MTUwMDdFUlM1X05TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMUVFRQC8TVRfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFOV9faXNfbG9uZ0I2djE1MDA3RXYAvU1RX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFN19fYWxsb2NCNnYxNTAwN0V2ANkwXV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE4X19nZXRfbG9uZ19wb2ludGVyQjZ2MTUwMDdFdgDdHVpfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTRfX2dldF9sb25nX2NhcEI2djE1MDA3RXYAvk1KX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJY0VFRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVJTMl9QY20Av01hX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTlfX21vdmVfYXNzaWduX2FsbG9jQjZ2MTUwMDdFUlM1XwCREXFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySU5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVfX3JlcEVTNV9FNWZpcnN0QjZ2MTUwMDdFdgDZMFtfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxNl9fc2V0X3Nob3J0X3NpemVCNnYxNTAwN0VtAMBNXl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE5X19nZXRfc2hvcnRfcG9pbnRlckI2djE1MDA3RXYA2TAmX1pOU3QzX18yMTFjaGFyX3RyYWl0c0ljRTZhc3NpZ25FUmNSS2MAwU1yX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNV9fcmVwRVM1X0U1Zmlyc3RCNnYxNTAwN0V2ANkwLl9aTlN0M19fMjlhbGxvY2F0b3JJY0UxMGRlYWxsb2NhdGVCNnYxNTAwN0VQY20Awk1yX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU1X19yZXBFUzVfRTZzZWNvbmRCNnYxNTAwN0V2ANkwf19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE5X19tb3ZlX2Fzc2lnbl9hbGxvY0I2djE1MDA3RVJTNV9OU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjFFRUUAkRF7X1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVfX3JlcEVMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwNF9aTlN0M19fMjE0cG9pbnRlcl90cmFpdHNJUGNFMTBwb2ludGVyX3RvQjZ2MTUwMDdFUmMA2TB8X1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU1X19yZXBFTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMCtfWk5TdDNfXzIxOV9fbGliY3BwX2RlYWxsb2NhdGVCNnYxNTAwN0VQdm1tAMNNLV9aTlN0M19fMjI0X19pc19vdmVyYWxpZ25lZF9mb3JfbmV3QjZ2MTUwMDdFbQDETUpfWk5TdDNfXzIyN19fZG9fZGVhbGxvY2F0ZV9oYW5kbGVfc2l6ZUI2djE1MDA3SUpTdDExYWxpZ25fdmFsX3RFRUV2UHZtRHBUXwDFTTtfWk5TdDNfXzIyN19fZG9fZGVhbGxvY2F0ZV9oYW5kbGVfc2l6ZUI2djE1MDA3SUpFRUV2UHZtRHBUXwDGTUZfWk5TdDNfXzIyNF9fbGliY3BwX29wZXJhdG9yX2RlbGV0ZUI2djE1MDA3SUpQdlN0MTFhbGlnbl92YWxfdEVFRXZEcFRfAMdNN19aTlN0M19fMjI0X19saWJjcHBfb3BlcmF0b3JfZGVsZXRlQjZ2MTUwMDdJSlB2RUVFdkRwVF8A4kAVX1pkbFB2U3QxMWFsaWduX3ZhbF90ALNaTF9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySWNFRUxpMUVMYjFFRTVfX2dldEI2djE1MDA3RXYA2TBHX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFQzJFUktTNV8AyE03X1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGgxMWlzX2Fic29sdXRlQjZ2MTUwMDdFdgDJTUdfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVhU0VSS1M1XwDKTThfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDEyaGFzX2ZpbGVuYW1lQjZ2MTUwMDdFdgDLTUtfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVwTEI2djE1MDA3RWMAzE0xX1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGg2bmF0aXZlQjZ2MTUwMDdFdgDZME9fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVwTEI2djE1MDA3RVJLUzVfAM1NUl9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3X19hbGxvY0I2djE1MDA3RXYA2TBtX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJY0VFRTM3c2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbkI2djE1MDA3SVMyX3Z2RUVTMl9SS1MyXwCRKZABX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU1X19yZXBFUzVfRUMyQjZ2MTUwMDdJTlNfMThfX2RlZmF1bHRfaW5pdF90YWdFUzVfRUVPVF9PVDBfAM5NXl9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxOF9fZ2V0X2xvbmdfcG9pbnRlckI2djE1MDA3RXYA3R1bX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE1X19nZXRfbG9uZ19zaXplQjZ2MTUwMDdFdgDeHV9fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUyNV9faW5pdF9jb3B5X2N0b3JfZXh0ZXJuYWxFUEtjbQCwXWdfWk5TdDNfXzIxOV9fZGVidWdfZGJfaW5zZXJ0X2NCNnYxNTAwN0lOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFRUV2UFRfAJEpc19aTktTdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySU5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVfX3JlcEVTNV9FNnNlY29uZEI2djE1MDA3RXYA2TCOAV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU1X19yZXBFTGkwRUxiMEVFQzJCNnYxNTAwN0VOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0UA2TBQX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzlhbGxvY2F0b3JJY0VFTGkxRUxiMUVFQzJCNnYxNTAwN0lTMl92RUVPVF8Az01NX1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySWNFRUxpMUVMYjFFRTVfX2dldEI2djE1MDA3RXYA2TBYX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTNfX2ZpdHNfaW5fc3NvQjZ2MTUwMDdFbQDQTVNfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFOG1heF9zaXplQjZ2MTUwMDdFdgDRTU1fWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvckljRUVFOG1heF9zaXplQjZ2MTUwMDdJUzJfdnZFRW1SS1MyXwDSTSpfWk5TdDNfXzIxNG51bWVyaWNfbGltaXRzSW1FM21heEI2djE1MDA3RXYA001gX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTIwX190aHJvd19sZW5ndGhfZXJyb3JCNnYxNTAwN0V2ANRNK19aTlN0M19fMjIwX190aHJvd19sZW5ndGhfZXJyb3JCNnYxNTAwN0VQS2MA1U18X1pOU3QzX18yMTlfX2FsbG9jYXRlX2F0X2xlYXN0QjZ2MTUwMDdJTlNfOWFsbG9jYXRvckljRUVFRU5TXzE5X19hbGxvY2F0aW9uX3Jlc3VsdElOU18xNmFsbG9jYXRvcl90cmFpdHNJVF9FN3BvaW50ZXJFRUVSUzVfbQDWTSlfWk5TdDNfXzI5YWxsb2NhdG9ySWNFOGFsbG9jYXRlQjZ2MTUwMDdFbQDXTVZfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxMV9fcmVjb21tZW5kQjZ2MTUwMDdFbQDYTV1fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxMF9fYWxpZ25faXRCNnYxNTAwN0lMbTE2RUVFbW0A2U1dX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTZfX2JlZ2luX2xpZmV0aW1lQjZ2MTUwMDdFUGNtAJERXl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE4X19zZXRfbG9uZ19wb2ludGVyQjZ2MTUwMDdFUGMA/T1ZX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTRfX3NldF9sb25nX2NhcEI2djE1MDA3RW0A2k1aX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTVfX3NldF9sb25nX3NpemVCNnYxNTAwN0VtANtNN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJbUxiMUVFM21heEI2djE1MDA3RXYA000YX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uAOthIV9aTlN0MTJsZW5ndGhfZXJyb3JDMkI2djE1MDA3RVBLYwDcTRdfWk5TdDEybGVuZ3RoX2Vycm9yRDFFdgCcYhRfWlRJU3QxMmxlbmd0aF9lcnJvcgP+EBRfX2N4YV9mcmVlX2V4Y2VwdGlvbgDsYRRfWlRWU3QxMmxlbmd0aF9lcnJvcgP9EBhfWk5TdDExbG9naWNfZXJyb3JDMkVQS2MAkl0rX1pTdDI4X190aHJvd19iYWRfYXJyYXlfbmV3X2xlbmd0aEI2djE1MDA3dgDdTSdfWk5TdDNfXzIxN19fbGliY3BwX2FsbG9jYXRlQjZ2MTUwMDdFbW0A3k0fX1pOU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoRDFFdgDZMBxfWlRJU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoA/wQH19aTlN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aEMxRXYAmmJDX1pOU3QzX18yMjFfX2xpYmNwcF9vcGVyYXRvcl9uZXdCNnYxNTAwN0lKbVN0MTFhbGlnbl92YWxfdEVFRVB2RHBUXwDfTTRfWk5TdDNfXzIyMV9fbGliY3BwX29wZXJhdG9yX25ld0I2djE1MDA3SUptRUVFUHZEcFRfAOBNFF9abndtU3QxMWFsaWduX3ZhbF90AK9aPl9aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoMThoYXNfcm9vdF9kaXJlY3RvcnlCNnYxNTAwN0V2AOFNYl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE5X19jb3B5X2Fzc2lnbl9hbGxvY0I2djE1MDA3RVJLUzVfAJERT19aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU0ZGF0YUI2djE1MDA3RXYA+kxPX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTRzaXplQjZ2MTUwMDdFdgDiTWFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxN19fYXNzaWduX25vX2FsaWFzSUxiMUVFRVJTNV9QS2NtAMZdYV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE3X19hc3NpZ25fbm9fYWxpYXNJTGIwRUVFUlM1X1BLY20AxV0uX1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGgxMF9fZmlsZW5hbWVFdgDpWktfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU5cHVzaF9iYWNrRWMAx11UX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmFwcGVuZEI2djE1MDA3RVJLUzVfAONNNF9aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoMTZfX3Jvb3RfZGlyZWN0b3J5RXYA3VuAAV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE5X19jb3B5X2Fzc2lnbl9hbGxvY0I2djE1MDA3RVJLUzVfTlNfMTdpbnRlZ3JhbF9jb25zdGFudEliTGIwRUVFAJERWV9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxM19fZ2V0X3BvaW50ZXJCNnYxNTAwN0V2AORNXF9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxNl9fZ2V0X3Nob3J0X3NpemVCNnYxNTAwN0V2AOVNZl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTI3X19pbnZhbGlkYXRlX2l0ZXJhdG9yc19wYXN0QjZ2MTUwMDdFbQCREVhfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxM19fZ2V0X3BvaW50ZXJCNnYxNTAwN0V2AORNI19aTlN0M19fMjNtYXhCNnYxNTAwN0ltRUVSS1RfUzNfUzNfAOZNNV9aTlN0M19fMjNtYXhCNnYxNTAwN0ltTlNfNl9fbGVzc0ltbUVFRUVSS1RfUzVfUzVfVDBfAOdNX19aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxOV9fZ2V0X3Nob3J0X3BvaW50ZXJCNnYxNTAwN0V2ANkwN19aTlN0M19fMjE0cG9pbnRlcl90cmFpdHNJUEtjRTEwcG9pbnRlcl90b0I2djE1MDA3RVJTMV8A2TBLX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmFwcGVuZEVQS2NtALtdU19aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU4Y2FwYWNpdHlCNnYxNTAwN0V2AOhNVV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTEwX19zZXRfc2l6ZUI2djE1MDA3RW0A6U2QAV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNV9fcmVwRVM1X0VDMkI2djE1MDA3SU5TXzE4X19kZWZhdWx0X2luaXRfdGFnRVNBX0VFT1RfT1QwXwDOTVlfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxNF9fZGVmYXVsdF9pbml0QjZ2MTUwMDdFdgDqTX5fWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTIwX19pc19wYXRoYWJsZV9zdHJpbmdJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRXZFMTNfX3JhbmdlX2JlZ2luQjZ2MTUwMDdFUktTNl8A3R18X1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0yMF9faXNfcGF0aGFibGVfc3RyaW5nSU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUV2RTExX19yYW5nZV9lbmRCNnYxNTAwN0VSS1M2XwDrTccBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNF9fYXBwZW5kX3JhbmdlQjZ2MTUwMDdJUEtjRUVOU185ZW5hYmxlX2lmSVhzcjI3X19pc19jcHAxN19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVFdkU0dHlwZUVSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVM4X1M4XwDsTV9fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfOWFsbG9jYXRvckljRUVMaTFFTGIxRUVDMkI2djE1MDA3RU5TXzE4X19kZWZhdWx0X2luaXRfdGFnRQDZMFBfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2X196ZXJvQjZ2MTUwMDdFdgDtTSJfWk5TdDNfXzI5YWxsb2NhdG9ySWNFQzJCNnYxNTAwN0V2ANkwPl9aTlN0M19fMjE2X19ub25fdHJpdmlhbF9pZklMYjFFTlNfOWFsbG9jYXRvckljRUVFQzJCNnYxNTAwN0V2ANkwnwFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2YXBwZW5kQjZ2MTUwMDdJUEtjRUVOU185ZW5hYmxlX2lmSVhzcjI3X19pc19jcHAxN19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVFUlM1X0U0dHlwZUVTQV9TQV8A7k1FX1pOS1N0M19fMjE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRTZsZW5ndGhCNnYxNTAwN0V2AN4dUF9aTlN0M19fMjhkaXN0YW5jZUI2djE1MDA3SVBLY0VFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzRfUzRfAO9NY19aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxNV9fYWRkcl9pbl9yYW5nZUI2djE1MDA3SVJLY0VFYk9UXwDwTVBfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU5X19ncm93X2J5RW1tbW1tbQCrXVpfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVDMkI2djE1MDA3SVBLY3ZFRVRfUzlfUktTNF8A8U1zX1pOU3QzX18yMTBfX2Rpc3RhbmNlQjZ2MTUwMDdJUEtjRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTNF9TNF9OU18yNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRQDyTZIBX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU1X19yZXBFUzVfRUMyQjZ2MTUwMDdJTlNfMThfX2RlZmF1bHRfaW5pdF90YWdFUktTNV9FRU9UX09UMF8Azk2UAV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZfX2luaXRJUEtjRUVOU185ZW5hYmxlX2lmSVhzcjI3X19pc19jcHAxN19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVFdkU0dHlwZUVTQV9TQV8A801SX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzlhbGxvY2F0b3JJY0VFTGkxRUxiMUVFQzJCNnYxNTAwN0lSS1MyX3ZFRU9UXwDPTX9fWk5TdDNfXzI2Y2hyb25vMTB0aW1lX3BvaW50SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZfRmlsZXN5c3RlbUNsb2NrRU5TMF84ZHVyYXRpb25Jbk5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVFQzJCNnYxNTAwN0V2APRNTF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTVkaXJlY3RvcnlfZW50cnkxM19fY2FjaGVkX2RhdGE3X19yZXNldEI2djE1MDA3RXYA9U1IX1pOU3QzX18yNmNocm9ubzhkdXJhdGlvbkluTlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFNHplcm9CNnYxNTAwN0V2APZNgQFfWk5TdDNfXzI2Y2hyb25vMTB0aW1lX3BvaW50SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZfRmlsZXN5c3RlbUNsb2NrRU5TMF84ZHVyYXRpb25Jbk5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVFM21pbkI2djE1MDA3RXYA900zX1pOU3QzX18yNmNocm9ubzE1ZHVyYXRpb25fdmFsdWVzSW5FNHplcm9CNnYxNTAwN0V2APhN2AFfWk5TdDNfXzI2Y2hyb25vOGR1cmF0aW9uSW5OU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVDMkI2djE1MDA3SW5FRVJLVF9QTlNfOWVuYWJsZV9pZklYYWFzcjE0aXNfY29udmVydGlibGVJUzhfbkVFNXZhbHVlb29MX1pOU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRTV2YWx1ZUVFbnRzcjIzdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnRJUzZfRUU1dmFsdWVFdkU0dHlwZUUA+U1HX1pOU3QzX18yNmNocm9ubzhkdXJhdGlvbkluTlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFM21pbkI2djE1MDA3RXYA+k2DAV9aTlN0M19fMjZjaHJvbm8xMHRpbWVfcG9pbnRJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNl9GaWxlc3lzdGVtQ2xvY2tFTlMwXzhkdXJhdGlvbkluTlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFRUVDMkI2djE1MDA3RVJLUzhfAPtNMl9aTlN0M19fMjZjaHJvbm8xNWR1cmF0aW9uX3ZhbHVlc0luRTNtaW5CNnYxNTAwN0V2APxNLV9aTlN0M19fMjE0bnVtZXJpY19saW1pdHNJbkU2bG93ZXN0QjZ2MTUwMDdFdgD9TTpfWk5TdDNfXzIyM19fbGliY3BwX251bWVyaWNfbGltaXRzSW5MYjFFRTZsb3dlc3RCNnYxNTAwN0V2AP5NN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJbkxiMUVFM21pbkI2djE1MDA3RXYA/01mX1pOU3QzX18yMTVfX2RlYnVnX2RiX3N3YXBCNnYxNTAwN0lOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFRUV2UFRfUzhfAJERK19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhDMkI2djE1MDA3RXYAgE41X1pOU3QzX18yMTRfX3NoYXJlZF9jb3VudDE2X19yZWxlYXNlX3NoYXJlZEI2djE1MDA3RXYAgU4wX1pOU3QzX18yMTlfX3NoYXJlZF93ZWFrX2NvdW50MTRfX3JlbGVhc2Vfd2Vha0V2AINaP19aTlN0M19fMjM0X19saWJjcHBfYXRvbWljX3JlZmNvdW50X2RlY3JlbWVudEI2djE1MDA3SWxFRVRfUlMxXwCCTqQBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTNl9FRTV2YWx1ZUV2RTR0eXBlRVJTNl9TOV8AjEqaAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJUE5TXzE5X19zaGFyZWRfd2Vha19jb3VudEVFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTNF9FRTV2YWx1ZUV2RTR0eXBlRVJTNF9TN18AjErCAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzdfRUU1dmFsdWVFdkU0dHlwZUVSUzdfU0FfAIxKiwFfWk5TdDNfXzIxOF9fYWxsb2NhdGlvbl9ndWFyZElOU185YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOUzFfSVM1X0VFRUVFRUVDMkI2djE1MDA3SVM2X0VFVF9tAINOiQFfWk5LU3QzX18yMThfX2FsbG9jYXRpb25fZ3VhcmRJTlNfOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlMxX0lTNV9FRUVFRUVFNV9fZ2V0QjZ2MTUwMDdFdgDXBqQBX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFQzJCNnYxNTAwN0lKUktOUzJfNHBhdGhFUk5TMl8xN2RpcmVjdG9yeV9vcHRpb25zRVJOU18xMGVycm9yX2NvZGVFRUVFUzVfRHBPVF8AhE6RAV9aTlN0M19fMjE4X19hbGxvY2F0aW9uX2d1YXJkSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TMV9JUzVfRUVFRUVFRTEzX19yZWxlYXNlX3B0ckI2djE1MDA3RXYAhU5tX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFMTBfX2dldF9lbGVtQjZ2MTUwMDdFdgCGTqEBX1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRTI3X19jcmVhdGVfd2l0aF9jb250cm9sX2Jsb2NrQjZ2MTUwMDdJUzNfTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlTM19OU185YWxsb2NhdG9ySVMzX0VFRUVFRVM0X1BUX1BUMF8Ah06EAV9aTlN0M19fMjE4X19hbGxvY2F0aW9uX2d1YXJkSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TMV9JUzVfRUVFRUVFRUQyQjZ2MTUwMDdFdgCITmBfWk5TdDNfXzIxNl9fbm9uX3RyaXZpYWxfaWZJTGIxRU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUVDMkI2djE1MDA3RXYA2TB5X1pOU3QzX18yOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlMwX0lTNF9FRUVFRUMyQjZ2MTUwMDdJUzRfRUVSS05TMF9JVF9FRQDPTY0BX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TMV9JUzVfRUVFRUVFRThhbGxvY2F0ZUI2djE1MDA3RVJTOF9tAIlOWl9aVFZOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFRQP7ECpfWk5TdDNfXzIxOV9fc2hhcmVkX3dlYWtfY291bnRDMkI2djE1MDA3RWwAik5vX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFOF9TdG9yYWdlQzJCNnYxNTAwN0VPUzVfAM9Nbl9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRTExX19nZXRfYWxsb2NCNnYxNTAwN0V2AIZOsAFfWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvcklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFRTljb25zdHJ1Y3RCNnYxNTAwN0lTNF9KUktOUzNfNHBhdGhFUk5TM18xN2RpcmVjdG9yeV9vcHRpb25zRVJOU18xMGVycm9yX2NvZGVFRXZ2RUV2UlM1X1BUX0RwT1QwXwCLTmxfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUU4X1N0b3JhZ2VEMkI2djE1MDA3RXYA2TAiX1pOU3QzX18yMTlfX3NoYXJlZF93ZWFrX2NvdW50RDJFdgDZMFhfWk5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFMThfX2VuYWJsZV93ZWFrX3RoaXNCNnYxNTAwN0V6AJERbl9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRThfU3RvcmFnZTEwX19nZXRfZWxlbUV2ANkwlAFfWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlMxX0lTNV9FRUVFRUVFMTBkZWFsbG9jYXRlQjZ2MTUwMDdFUlM4X1BTN19tAIxOhgFfWk5TdDNfXzIxNl9fbm9uX3RyaXZpYWxfaWZJTGIxRU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TMV9JUzVfRUVFRUVFRUMyQjZ2MTUwMDdFdgDZMHFfWk5TdDNfXzI5YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOUzBfSVM0X0VFRUVFOGFsbG9jYXRlQjZ2MTUwMDdFbQCNTpUBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TMV9JUzVfRUVFRUVFRThtYXhfc2l6ZUI2djE1MDA3SVM4X3Z2RUVtUktTOF8Ajk4lX1pOU3QzX18yMTRfX3NoYXJlZF9jb3VudEMyQjZ2MTUwMDdFbACPTiFfWlRWTlN0M19fMjE5X19zaGFyZWRfd2Vha19jb3VudEUD+hBvX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFOF9TdG9yYWdlMTFfX2dldF9hbGxvY0V2ANkwjQFfWk5TdDNfXzIxMmNvbnN0cnVjdF9hdEI2djE1MDA3SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FSlJLTlMyXzRwYXRoRVJOUzJfMTdkaXJlY3Rvcnlfb3B0aW9uc0VSTlNfMTBlcnJvcl9jb2RlRUVQUzNfRUVQVF9TRF9EcE9UMF8AkE5bX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFRDJFdgCRTltfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUVEMEV2AJJOa19aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRTE2X19vbl96ZXJvX3NoYXJlZEV2AJNOcF9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVFN2Rlc3Ryb3lCNnYxNTAwN0lTNF92dkVFdlJTNV9QVF8AlE5wX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFMjFfX29uX3plcm9fc2hhcmVkX3dlYWtFdgCVTocBX1pOU3QzX18yMTRwb2ludGVyX3RyYWl0c0lQTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFRUUxMHBvaW50ZXJfdG9CNnYxNTAwN0VSUzdfANkwHF9aVFZOU3QzX18yMTRfX3NoYXJlZF9jb3VudEUD+RBzX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVTNF9FMTZfX2dldF9maXJzdF9iYXNlQjZ2MTUwMDdFUFM2XwDZMEtfWk5TdDNfXzIxMGRlc3Ryb3lfYXRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUxpMEVFRXZQVF8Alk5NX1pOU3QzX18yMTJfX2Rlc3Ryb3lfYXRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUxpMEVFRXZQVF8Al054X1pOU3QzX18yOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlMwX0lTNF9FRUVFRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVBTNl9tAJhOdF9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJTlNfOWFsbG9jYXRvcklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFUzRfRTE3X19nZXRfc2Vjb25kX2Jhc2VCNnYxNTAwN0VQUzZfANkwSl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZhcHBlbmRFUEtjANVdS19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZfX2luaXRFUEtjbQCvXYMBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3JDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRU5TXzEwZXJyb3JfY29kZUUAmU4wX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3JEMUV2AL5aL19aVElOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3JFA/gQjwFfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvckMyQjZ2MTUwMDdFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktOUzFfNHBhdGhFTlNfMTBlcnJvcl9jb2RlRQCaTpIBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3JDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLTlMxXzRwYXRoRVNEX05TXzEwZXJyb3JfY29kZUUAm04vX1pUVk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvckUD9xBmX1pOU3QzX18yMTJzeXN0ZW1fZXJyb3JDMkVOU18xMGVycm9yX2NvZGVFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAKFfe19aTlN0M19fMjExbWFrZV9zaGFyZWRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVKTlMyXzRwYXRoRVM1X0V2RUVOU18xMHNoYXJlZF9wdHJJVF9FRURwT1QwXwCcTj1fWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjEzX19jcmVhdGVfd2hhdEVpAMBaU19aTlN0M19fMjEwc2hhcmVkX3B0cklOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVFRDJCNnYxNTAwN0V2AOpMG19aTlN0M19fMjEyc3lzdGVtX2Vycm9yRDJFdgC4T1FfWk5TdDNfXzI5YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRUVDMkI2djE1MDA3RXYA2TCXAV9aTlN0M19fMjE1YWxsb2NhdGVfc2hhcmVkQjZ2MTUwMDdJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUpOUzJfNHBhdGhFUzdfRXZFRU5TXzEwc2hhcmVkX3B0cklUX0VFUktUMF9EcE9UMV8AnU6YAV9aTlN0M19fMjE4X19hbGxvY2F0aW9uX2d1YXJkSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVOUzFfSVM2X0VFRUVFRUVDMkI2djE1MDA3SVM3X0VFVF9tAJ5OlgFfWk5LU3QzX18yMThfX2FsbG9jYXRpb25fZ3VhcmRJTlNfOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TMV9JUzZfRUVFRUVFRTVfX2dldEI2djE1MDA3RXYA1waIAV9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUVDMkI2djE1MDA3SUpOUzJfNHBhdGhFUzlfRUVFUzZfRHBPVF8An06eAV9aTlN0M19fMjE4X19hbGxvY2F0aW9uX2d1YXJkSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVOUzFfSVM2X0VFRUVFRUUxM19fcmVsZWFzZV9wdHJCNnYxNTAwN0V2AIVOel9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUUxMF9fZ2V0X2VsZW1CNnYxNTAwN0V2AKBOrgFfWk5TdDNfXzIxMHNoYXJlZF9wdHJJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFRTI3X19jcmVhdGVfd2l0aF9jb250cm9sX2Jsb2NrQjZ2MTUwMDdJUzRfTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlTNF9OU185YWxsb2NhdG9ySVM0X0VFRUVFRVM1X1BUX1BUMF8Ah06RAV9aTlN0M19fMjE4X19hbGxvY2F0aW9uX2d1YXJkSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVOUzFfSVM2X0VFRUVFRUVEMkI2djE1MDA3RXYAoU5tX1pOU3QzX18yMTZfX25vbl90cml2aWFsX2lmSUxiMUVOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRUVFRUMyQjZ2MTUwMDdFdgDZMIYBX1pOU3QzX18yOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TMF9JUzVfRUVFRUVDMkI2djE1MDA3SVM1X0VFUktOUzBfSVRfRUUAz02aAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlMxX0lTNl9FRUVFRUVFOGFsbG9jYXRlQjZ2MTUwMDdFUlM5X20Aok5nX1pUVk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TXzlhbGxvY2F0b3JJUzRfRUVFRQP2EHxfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TXzlhbGxvY2F0b3JJUzRfRUVFOF9TdG9yYWdlQzJCNnYxNTAwN0VPUzZfAM9Ne19aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUUxMV9fZ2V0X2FsbG9jQjZ2MTUwMDdFdgCgTpQBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFRUVFOWNvbnN0cnVjdEI2djE1MDA3SVM1X0pOUzNfNHBhdGhFUzlfRXZ2RUV2UlM2X1BUX0RwT1QwXwCjTnlfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TXzlhbGxvY2F0b3JJUzRfRUVFOF9TdG9yYWdlRDJCNnYxNTAwN0V2ANkwU19aTlN0M19fMjEwc2hhcmVkX3B0cklOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVFQzJCNnYxNTAwN0V2AOVMZV9aTlN0M19fMjEwc2hhcmVkX3B0cklOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVFMThfX2VuYWJsZV93ZWFrX3RoaXNCNnYxNTAwN0V6AJERe19aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUU4X1N0b3JhZ2UxMF9fZ2V0X2VsZW1FdgDZMKEBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVOUzFfSVM2X0VFRUVFRUUxMGRlYWxsb2NhdGVCNnYxNTAwN0VSUzlfUFM4X20ApE6TAV9aTlN0M19fMjE2X19ub25fdHJpdmlhbF9pZklMYjFFTlNfOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TMV9JUzZfRUVFRUVFRUMyQjZ2MTUwMDdFdgDZMH5fWk5TdDNfXzI5YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlMwX0lTNV9FRUVFRThhbGxvY2F0ZUI2djE1MDA3RW0ApU6iAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlMxX0lTNl9FRUVFRUVFOG1heF9zaXplQjZ2MTUwMDdJUzlfdnZFRW1SS1M5XwCmTnxfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TXzlhbGxvY2F0b3JJUzRfRUVFOF9TdG9yYWdlMTFfX2dldF9hbGxvY0V2ANkwcV9aTlN0M19fMjEyY29uc3RydWN0X2F0QjZ2MTUwMDdJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFSk5TMl80cGF0aEVTNV9FUFM0X0VFUFRfUzhfRHBPVDBfAKdOaF9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUVEMkV2AKhOaF9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUVEMEV2AKlOeF9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUUxNl9fb25femVyb19zaGFyZWRFdgCqTn1fWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvcklOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVFRUU3ZGVzdHJveUI2djE1MDA3SVM1X3Z2RUV2UlM2X1BUXwCrTn1fWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TXzlhbGxvY2F0b3JJUzRfRUVFMjFfX29uX3plcm9fc2hhcmVkX3dlYWtFdgCsTpQBX1pOU3QzX18yMTRwb2ludGVyX3RyYWl0c0lQTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVOU185YWxsb2NhdG9ySVM1X0VFRUVFMTBwb2ludGVyX3RvQjZ2MTUwMDdFUlM4XwDZMIABX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRUVFUzVfRTE2X19nZXRfZmlyc3RfYmFzZUI2djE1MDA3RVBTN18A2TBPX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VDMkI2djE1MDA3RVJLTlMxXzRwYXRoRVM2XwCtTlhfWk5TdDNfXzIxMGRlc3Ryb3lfYXRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVMaTBFRUV2UFRfAK5OWl9aTlN0M19fMjEyX19kZXN0cm95X2F0QjZ2MTUwMDdJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTGkwRUVFdlBUXwCvTjlfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUQyRXYAsE6FAV9aTlN0M19fMjlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVOUzBfSVM1X0VFRUVFMTBkZWFsbG9jYXRlQjZ2MTUwMDdFUFM3X20AsU6BAV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJTlNfOWFsbG9jYXRvcklOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVFRVM1X0UxN19fZ2V0X3NlY29uZF9iYXNlQjZ2MTUwMDdFUFM3XwDZMH1fWk5TdDNfXzIxMW1ha2Vfc2hhcmVkQjZ2MTUwMDdJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFSlJLTlMyXzRwYXRoRVM1X0V2RUVOU18xMHNoYXJlZF9wdHJJVF9FRURwT1QwXwCyTpkBX1pOU3QzX18yMTVhbGxvY2F0ZV9zaGFyZWRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVOU185YWxsb2NhdG9ySVM0X0VFSlJLTlMyXzRwYXRoRVM3X0V2RUVOU18xMHNoYXJlZF9wdHJJVF9FRVJLVDBfRHBPVDFfALNOigFfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TXzlhbGxvY2F0b3JJUzRfRUVFQzJCNnYxNTAwN0lKUktOUzJfNHBhdGhFUzlfRUVFUzZfRHBPVF8AtE6WAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRUVFRTljb25zdHJ1Y3RCNnYxNTAwN0lTNV9KUktOUzNfNHBhdGhFUzlfRXZ2RUV2UlM2X1BUX0RwT1QwXwCjTnNfWk5TdDNfXzIxMmNvbnN0cnVjdF9hdEI2djE1MDA3SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRUpSS05TMl80cGF0aEVTNV9FUFM0X0VFUFRfU0FfRHBPVDBfAKdOfV9aTlN0M19fMjExbWFrZV9zaGFyZWRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVKUktOUzJfNHBhdGhFUzdfRXZFRU5TXzEwc2hhcmVkX3B0cklUX0VFRHBPVDBfALVOmQFfWk5TdDNfXzIxNWFsbG9jYXRlX3NoYXJlZEI2djE1MDA3SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TXzlhbGxvY2F0b3JJUzRfRUVKUktOUzJfNHBhdGhFUzlfRXZFRU5TXzEwc2hhcmVkX3B0cklUX0VFUktUMF9EcE9UMV8Atk6KAV9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFTlNfOWFsbG9jYXRvcklTNF9FRUVDMkI2djE1MDA3SUpSS05TMl80cGF0aEVTQl9FRUVTNl9EcE9UXwC3TpYBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFRUVFOWNvbnN0cnVjdEI2djE1MDA3SVM1X0pSS05TM180cGF0aEVTQl9FdnZFRXZSUzZfUFRfRHBPVDBfAKNOc19aTlN0M19fMjEyY29uc3RydWN0X2F0QjZ2MTUwMDdJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFSlJLTlMyXzRwYXRoRVM3X0VQUzRfRUVQVF9TQV9EcE9UMF8Ap05fX1pOU3QzX18ycGxCNnYxNTAwN0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFTlNfMTJiYXNpY19zdHJpbmdJVF9UMF9UMV9FRU9TOV9TQV8AuU4nX1pOU3QzX18yNWFycmF5SWNMbTI1NkVFNGRhdGFCNnYxNTAwN0V2ANkwKF9aTktTdDNfXzI1YXJyYXlJY0xtMjU2RUU0c2l6ZUI2djE1MDA3RXYAuk5LX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmFzc2lnbkVQS2NtALtOYF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTIxX19yZXNpemVfZGVmYXVsdF9pbml0QjZ2MTUwMDdFbQC8TktfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVpeEI2djE1MDA3RW0AvU5XX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTdfX2Fzc2lnbl9leHRlcm5hbEVQS2NtALddYF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTIxX19hcHBlbmRfZGVmYXVsdF9pbml0QjZ2MTUwMDdFbQC+TllfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxNF9fZXJhc2VfdG9fZW5kQjZ2MTUwMDdFbQC/TmBfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxOV9fbnVsbF90ZXJtaW5hdGVfYXRCNnYxNTAwN0VQY20AwE6pAV9aTlN0M19fMjE4X19hbGxvY2F0aW9uX2d1YXJkSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TMV9JUzZfRUVFRUVFRUMyQjZ2MTUwMDdJUzdfRUVUX20AwU6nAV9aTktTdDNfXzIxOF9fYWxsb2NhdGlvbl9ndWFyZElOU185YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOUzFfSVM2X0VFRUVFRUU1X19nZXRCNnYxNTAwN0V2ANcGjAFfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFTlNfOWFsbG9jYXRvcklTNF9FRUVDMkI2djE1MDA3SUpFRUVTNl9EcE9UXwDCTq8BX1pOU3QzX18yMThfX2FsbG9jYXRpb25fZ3VhcmRJTlNfOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFTlMxX0lTNl9FRUVFRUVFMTNfX3JlbGVhc2VfcHRyQjZ2MTUwMDdFdgCFTosBX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TXzlhbGxvY2F0b3JJUzRfRUVFMTBfX2dldF9lbGVtQjZ2MTUwMDdFdgCgTr8BX1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRTI3X19jcmVhdGVfd2l0aF9jb250cm9sX2Jsb2NrQjZ2MTUwMDdJUzRfTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlTNF9OU185YWxsb2NhdG9ySVM0X0VFRUVFRVM1X1BUX1BUMF8Ah06iAV9aTlN0M19fMjE4X19hbGxvY2F0aW9uX2d1YXJkSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TMV9JUzZfRUVFRUVFRUQyQjZ2MTUwMDdFdgDDTn5fWk5TdDNfXzIxNl9fbm9uX3RyaXZpYWxfaWZJTGIxRU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVFRUVDMkI2djE1MDA3RXYA2TCXAV9aTlN0M19fMjlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TMF9JUzVfRUVFRUVDMkI2djE1MDA3SVM1X0VFUktOUzBfSVRfRUUAz02rAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOUzFfSVM2X0VFRUVFRUU4YWxsb2NhdGVCNnYxNTAwN0VSUzlfbQDETnhfWlRWTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOU185YWxsb2NhdG9ySVM0X0VFRUUD9RCNAV9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOU185YWxsb2NhdG9ySVM0X0VFRThfU3RvcmFnZUMyQjZ2MTUwMDdFT1M2XwDPTYwBX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TXzlhbGxvY2F0b3JJUzRfRUVFMTFfX2dldF9hbGxvY0I2djE1MDA3RXYAoE6YAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRUVFOWNvbnN0cnVjdEI2djE1MDA3SVM1X0pFdnZFRXZSUzZfUFRfRHBPVDBfAMVOigFfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFTlNfOWFsbG9jYXRvcklTNF9FRUU4X1N0b3JhZ2VEMkI2djE1MDA3RXYA2TB2X1pOU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRTE4X19lbmFibGVfd2Vha190aGlzQjZ2MTUwMDdFegCREYwBX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TXzlhbGxvY2F0b3JJUzRfRUVFOF9TdG9yYWdlMTBfX2dldF9lbGVtRXYA2TCyAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOUzFfSVM2X0VFRUVFRUUxMGRlYWxsb2NhdGVCNnYxNTAwN0VSUzlfUFM4X20Axk6kAV9aTlN0M19fMjE2X19ub25fdHJpdmlhbF9pZklMYjFFTlNfOWFsbG9jYXRvcklOU18yMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFTlMxX0lTNl9FRUVFRUVFQzJCNnYxNTAwN0V2ANkwjwFfWk5TdDNfXzI5YWxsb2NhdG9ySU5TXzIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOUzBfSVM1X0VFRUVFOGFsbG9jYXRlQjZ2MTUwMDdFbQDHTrMBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TMV9JUzZfRUVFRUVFRThtYXhfc2l6ZUI2djE1MDA3SVM5X3Z2RUVtUktTOV8AyE6NAV9aTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOU185YWxsb2NhdG9ySVM0X0VFRThfU3RvcmFnZTExX19nZXRfYWxsb2NFdgDZMHVfWk5TdDNfXzIxMmNvbnN0cnVjdF9hdEI2djE1MDA3SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFSkVQUzRfRUVQVF9TN19EcE9UMF8AyU55X1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TXzlhbGxvY2F0b3JJUzRfRUVFRDJFdgDKTnlfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFTlNfOWFsbG9jYXRvcklTNF9FRUVEMEV2AMtOiQFfWk5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFTlNfOWFsbG9jYXRvcklTNF9FRUUxNl9fb25femVyb19zaGFyZWRFdgDMTo4BX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVFRUU3ZGVzdHJveUI2djE1MDA3SVM1X3Z2RUV2UlM2X1BUXwDNTo4BX1pOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TXzlhbGxvY2F0b3JJUzRfRUVFMjFfX29uX3plcm9fc2hhcmVkX3dlYWtFdgDOTqUBX1pOU3QzX18yMTRwb2ludGVyX3RyYWl0c0lQTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TXzlhbGxvY2F0b3JJUzVfRUVFRUUxMHBvaW50ZXJfdG9CNnYxNTAwN0VSUzhfANkwkQFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVFRVM1X0UxNl9fZ2V0X2ZpcnN0X2Jhc2VCNnYxNTAwN0VQUzdfANkwSl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBDMkV2AM9OYl9aTlN0M19fMjVzdGFja0lOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzVkZXF1ZUlTM19OU185YWxsb2NhdG9ySVMzX0VFRUVFQzJCNnYxNTAwN0V2AM9OU19aTlN0M19fMjVkZXF1ZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFQzJCNnYxNTAwN0V2AM9OU19aTlN0M19fMjEyX19kZXF1ZV9iYXNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUVDMkV2ANBOVl9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUVDMkV2ANFOf19aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJbU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUVDMkI2djE1MDA3SWlOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0VFRU9UX09UMF8AsUuEAV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFQzJCNnYxNTAwN0lEbk5TXzE4X19kZWZhdWx0X2luaXRfdGFnRUVFT1RfT1QwXwDSTj5fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JbUxpMEVMYjBFRUMyQjZ2MTUwMDdJaXZFRU9UXwC5S4EBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUxpMUVMYjFFRUMyQjZ2MTUwMDdFTlNfMThfX2RlZmF1bHRfaW5pdF90YWdFANkwY19aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTGkwRUxiMEVFQzJCNnYxNTAwN0lEbnZFRU9UXwDTToIBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzlhbGxvY2F0b3JJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVMaTFFTGIxRUVDMkI2djE1MDA3RU5TXzE4X19kZWZhdWx0X2luaXRfdGFnRQDZMEVfWk5TdDNfXzI5YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVDMkI2djE1MDA3RXYA2TBhX1pOU3QzX18yMTZfX25vbl90cml2aWFsX2lmSUxiMUVOU185YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFRUMyQjZ2MTUwMDdFdgDZMGlfWk5TdDNfXzIxMGRlc3Ryb3lfYXRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRUxpMEVFRXZQVF8A1E5rX1pOU3QzX18yMTJfX2Rlc3Ryb3lfYXRCNnYxNTAwN0lOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRUxpMEVFRXZQVF8A1U5KX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEQyRXYA1k5aX1pOU3QzX18yNXN0YWNrSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfNWRlcXVlSVMzX05TXzlhbGxvY2F0b3JJUzNfRUVFRUVEMkV2ANZOU19aTlN0M19fMjEyX19kZXF1ZV9iYXNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUVEMkV2ANdOV19aTlN0M19fMjEyX19kZXF1ZV9iYXNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUU1Y2xlYXJFdgDYTmJfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFNWJlZ2luQjZ2MTUwMDdFdgDeHWBfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFM2VuZEI2djE1MDA3RXYA1wZhX1pOU3QzX18yMTJfX2RlcXVlX2Jhc2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRTdfX2FsbG9jQjZ2MTUwMDdFdgDZTm5fWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvcklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVJTNV9QUzRfbQDaTlZfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFRDJFdgDbTldfWk5TdDNfXzIxMl9fZGVxdWVfYmFzZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFNWJlZ2luRXYA3E5VX1pOU3QzX18yMTJfX2RlcXVlX2Jhc2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRTNlbmRFdgDdTmVfWk5TdDNfXzJuZUI2djE1MDA3RVJLTlNfMTZfX2RlcXVlX2l0ZXJhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUFMzX1JTM19QUzRfbExsMEVFRVM5XwDeTl5fWk5TdDNfXzIxMl9fZGVxdWVfYmFzZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFNHNpemVCNnYxNTAwN0V2ANlOYl9aTktTdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFNHNpemVCNnYxNTAwN0V2AN9OYl9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUU1ZnJvbnRCNnYxNTAwN0V2AN4dZl9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUU5cG9wX2Zyb250QjZ2MTUwMDdFdgDgTl5fWk5LU3QzX18yMTZfX2RlcXVlX2l0ZXJhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUFMzX1JTM19QUzRfbExsMEVFZGVCNnYxNTAwN0V2AN4dXV9aTlN0M19fMjE2X19kZXF1ZV9pdGVyYXRvcklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVBTM19SUzNfUFM0X2xMbDBFRXBwQjZ2MTUwMDdFdgDhTlJfWk5TdDNfXzI5YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVBTM19tAOJOY19aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJbU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUU2c2Vjb25kQjZ2MTUwMDdFdgDZMGJfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFNWNsZWFyQjZ2MTUwMDdFdgDjTmRfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFN19fYWxsb2NCNnYxNTAwN0V2AKBOZl9aTktTdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFOGNhcGFjaXR5QjZ2MTUwMDdFdgDkTm9fWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUUxMGRlYWxsb2NhdGVCNnYxNTAwN0VSUzZfUFM1X20A5U5jX1pOS1N0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUU1ZW1wdHlCNnYxNTAwN0V2AOZOYl9aTlN0M19fMjE2X19kZXF1ZV9pdGVyYXRvcklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVBTM19SUzNfUFM0X2xMbDBFRUMyQjZ2MTUwMDdFUzZfUzRfALdNZV9aTlN0M19fMmVxQjZ2MTUwMDdFUktOU18xNl9fZGVxdWVfaXRlcmF0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVQUzNfUlMzX1BTNF9sTGwwRUVFUzlfAOdOYl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJbU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUU1Zmlyc3RCNnYxNTAwN0V2ANkwdF9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUUxOV9fZGVzdHJ1Y3RfYXRfYmVnaW5CNnYxNTAwN0VQUzRfAOhOPF9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUltTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMIoBX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVM0X0VFRTE5X19kZXN0cnVjdF9hdF9iZWdpbkVQUzRfTlNfMTdpbnRlZ3JhbF9jb25zdGFudEliTGIxRUVFANtNbl9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVMaTFFTGIxRUU1X19nZXRCNnYxNTAwN0V2ANkwcl9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUUxN19fZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFM0XwDpTlNfWk5TdDNfXzI5YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUUxMGRlYWxsb2NhdGVCNnYxNTAwN0VQUzRfbQDqTmdfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVM0X0VFRTZzZWNvbmRCNnYxNTAwN0V2ANkwZ19aTktTdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFOV9fZW5kX2NhcEI2djE1MDA3RXYAoE6QAV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUUxN19fZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFM0X05TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFRQDrTkxfWk5TdDNfXzIxMl9fdG9fYWRkcmVzc0I2djE1MDA3SVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFUFRfUzZfANkwcV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFRTdkZXN0cm95QjZ2MTUwMDdJUzVfdnZFRXZSUzZfUFRfAJERTF9aTlN0M19fMjEwZGVzdHJveV9hdEI2djE1MDA3SVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUxpMEVFRXZQVF8AkSlOX1pOU3QzX18yMTJfX2Rlc3Ryb3lfYXRCNnYxNTAwN0lQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVMaTBFRUV2UFRfAJEpb19aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFTGkxRUxiMUVFNV9fZ2V0QjZ2MTUwMDdFdgDZMGdfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUU1Zmlyc3RCNnYxNTAwN0V2ANkwYV9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TCWAV9aTlN0M19fMjlhbGxvY2F0b3JJTlNfMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjEyX19zaGFyZWRfaW1wRU5TMF9JUzVfRUVFRUUxMGRlYWxsb2NhdGVCNnYxNTAwN0VQUzdfbQDsTpIBX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFRUVTNV9FMTdfX2dldF9zZWNvbmRfYmFzZUI2djE1MDA3RVBTN18A2TBgX1pOS1N0M19fMjVkZXF1ZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFMTJfX2JhY2tfc3BhcmVCNnYxNTAwN0V2AO1OXl9aTlN0M19fMjVkZXF1ZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFMTlfX2FkZF9iYWNrX2NhcGFjaXR5RXYA7k59X1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUU5Y29uc3RydWN0QjZ2MTUwMDdJUzRfSlM0X0V2dkVFdlJTNV9QVF9EcE9UMF8A705eX1pOS1N0M19fMjVkZXF1ZUlOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzNfRUVFMTBfX2NhcGFjaXR5QjZ2MTUwMDdFdgDwTl9fWk5LU3QzX18yMTJfX2RlcXVlX2Jhc2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRTRzaXplQjZ2MTUwMDdFdgDZTmFfWk5LU3QzX18yNWRlcXVlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUUxM19fZnJvbnRfc3BhcmVCNnYxNTAwN0V2AKMbal9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUU5cHVzaF9iYWNrQjZ2MTUwMDdFUktTNF8A8U5rX1pOS1N0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUUxMl9fYmFja19zcGFyZUI2djE1MDA3RXYA8k5nX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUU4YWxsb2NhdGVCNnYxNTAwN0VSUzVfbQDzTmFfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFOXB1c2hfYmFja0VPUzRfAPFOW19aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUk5TXzlhbGxvY2F0b3JJUzRfRUVFQzJFbW1TN18A9E5mX1pOU3QzX18yMjJfX2FsbG9jYXRvcl9kZXN0cnVjdG9ySU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUVDMkI2djE1MDA3RVJTNV9tALdN2QFfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfMjJfX2FsbG9jYXRvcl9kZXN0cnVjdG9ySU5TXzlhbGxvY2F0b3JJUzNfRUVFRUVDMkI2djE1MDA3SUxiMUV2RUVTNF9OU18xNl9fZGVwZW5kZW50X3R5cGVJTlNfMjdfX3VuaXF1ZV9wdHJfZGVsZXRlcl9zZmluYWVJUzhfRUVYVF9FRTIwX19nb29kX3J2YWxfcmVmX3R5cGVFAPVOe19aTktTdDNfXzIxMHVuaXF1ZV9wdHJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfMjJfX2FsbG9jYXRvcl9kZXN0cnVjdG9ySU5TXzlhbGxvY2F0b3JJUzNfRUVFRUUzZ2V0QjZ2MTUwMDdFdgDdHWJfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVJOU185YWxsb2NhdG9ySVM0X0VFRTlwdXNoX2JhY2tFT1M0XwD2Tn5fWk5TdDNfXzIxMHVuaXF1ZV9wdHJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfMjJfX2FsbG9jYXRvcl9kZXN0cnVjdG9ySU5TXzlhbGxvY2F0b3JJUzNfRUVFRUU3cmVsZWFzZUI2djE1MDA3RXYAuT+lAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVM3X0VFNXZhbHVlRXZFNHR5cGVFUlM3X1NBXwCMSmZfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFOV9fZW5kX2NhcEI2djE1MDA3RXYAoE5nX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVSTlNfOWFsbG9jYXRvcklTNF9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCgTnhfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfMjJfX2FsbG9jYXRvcl9kZXN0cnVjdG9ySU5TXzlhbGxvY2F0b3JJUzNfRUVFRUVEMkI2djE1MDA3RXYA905XX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVSTlNfOWFsbG9jYXRvcklTNF9FRUVEMkV2APhOZV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUk5TXzlhbGxvY2F0b3JJUzRfRUVFMTBwdXNoX2Zyb250RVJLUzRfAPlOY19aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTNF9FRUUxMHB1c2hfZnJvbnRFT1M0XwD6TlpfWk5TdDNfXzIxMmNvbnN0cnVjdF9hdEI2djE1MDA3SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FSlMzX0VQUzNfRUVQVF9TNl9EcE9UMF8A+05jX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJbU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUU1Zmlyc3RCNnYxNTAwN0V2ANkwPV9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JbUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBMX1pOU3QzX18yNG1vdmVCNnYxNTAwN0lQUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUzVfRUVUMF9UX1M3X1M2XwD8Tk1fWk5TdDNfXzIxM21vdmVfaXRlcmF0b3JJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVDMkI2djE1MDA3RVM1XwC8S8sBX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVSTlNfOWFsbG9jYXRvcklTNF9FRUUxOF9fY29uc3RydWN0X2F0X2VuZElOU18xM21vdmVfaXRlcmF0b3JJUFM0X0VFRUVOU185ZW5hYmxlX2lmSVhzcjI3X19pc19jcHAxN19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVFdkU0dHlwZUVTRV9TRV8A/U6AAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFRTljb25zdHJ1Y3RCNnYxNTAwN0lTNV9KUktTNV9FdnZFRXZSUzZfUFRfRHBPVDBfAP5Ofl9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFRTljb25zdHJ1Y3RCNnYxNTAwN0lTNV9KUzVfRXZ2RUV2UlM2X1BUX0RwT1QwXwD+TktfWk5TdDNfXzI5YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRThhbGxvY2F0ZUI2djE1MDA3RW0A/05WX1pOU3QzX18yMTNtb3ZlX2JhY2t3YXJkQjZ2MTUwMDdJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVM1X0VFVDBfVF9TN19TNl8AgE9wX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUk5TXzlhbGxvY2F0b3JJUzRfRUVFQzJCNnYxNTAwN0lEblM4X0VFT1RfT1QwXwCBT2VfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVJOU185YWxsb2NhdG9ySVM0X0VFRTdfX2FsbG9jQjZ2MTUwMDdFdgCCT58BX1pOU3QzX18yMTlfX2FsbG9jYXRlX2F0X2xlYXN0QjZ2MTUwMDdJTlNfOWFsbG9jYXRvcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUVFTlNfMTlfX2FsbG9jYXRpb25fcmVzdWx0SU5TXzE2YWxsb2NhdG9yX3RyYWl0c0lUX0U3cG9pbnRlckVFRVJTOV9tAINPjgFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzIyX19hbGxvY2F0b3JfZGVzdHJ1Y3RvcklOU185YWxsb2NhdG9ySVMzX0VFRUVFQzJCNnYxNTAwN0lSUzRfUzhfRUVPVF9PVDBfAIRPhAFfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU18yMl9fYWxsb2NhdG9yX2Rlc3RydWN0b3JJTlNfOWFsbG9jYXRvcklTM19FRUVFRTVmaXJzdEI2djE1MDA3RXYA2TCDAV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfMjJfX2FsbG9jYXRvcl9kZXN0cnVjdG9ySU5TXzlhbGxvY2F0b3JJUzNfRUVFRUU1Zmlyc3RCNnYxNTAwN0V2ANkwZl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMGdfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVSTlNfOWFsbG9jYXRvcklTNF9FRUU1Zmlyc3RCNnYxNTAwN0V2ANkwfl9aTlN0M19fMjEwdW5pcXVlX3B0cklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU18yMl9fYWxsb2NhdG9yX2Rlc3RydWN0b3JJTlNfOWFsbG9jYXRvcklTM19FRUVFRTVyZXNldEI2djE1MDA3RVM0XwCFT2NfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVJOU185YWxsb2NhdG9ySVM0X0VFRTVjbGVhckI2djE1MDA3RXYAhk9nX1pOS1N0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUk5TXzlhbGxvY2F0b3JJUzRfRUVFOGNhcGFjaXR5QjZ2MTUwMDdFdgDkToECX1pOU3QzX18yNl9fbW92ZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVM2X1M2X0VFTlNfOWVuYWJsZV9pZklYYWFhYXNyMjFpc19jb3B5X2NvbnN0cnVjdGlibGVJVDBfRUU1dmFsdWVzcjIxaXNfY29weV9jb25zdHJ1Y3RpYmxlSVQxX0VFNXZhbHVlc3IyMWlzX2NvcHlfY29uc3RydWN0aWJsZUlUMl9FRTV2YWx1ZUVOU180cGFpcklTOF9TQV9FRUU0dHlwZUVTOF9TOV9TQV8Ah0+HAV9aTlN0M19fMjhkaXN0YW5jZUI2djE1MDA3SU5TXzEzbW92ZV9pdGVyYXRvcklQUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVFRU5TXzE1aXRlcmF0b3JfdHJhaXRzSVRfRTE1ZGlmZmVyZW5jZV90eXBlRVM5X1M5XwCIT3NfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVJOU185YWxsb2NhdG9ySVM0X0VFRTIxX0NvbnN0cnVjdFRyYW5zYWN0aW9uQzJFUFBTNF9tAIlPTF9aTktTdDNfXzIxM21vdmVfaXRlcmF0b3JJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVkZUI2djE1MDA3RXYA3R1LX1pOU3QzX18yMTNtb3ZlX2l0ZXJhdG9ySVBQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFcHBCNnYxNTAwN0V2AIpPbl9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUk5TXzlhbGxvY2F0b3JJUzRfRUVFMjFfQ29uc3RydWN0VHJhbnNhY3Rpb25EMkV2AItPXV9aTlN0M19fMjEyY29uc3RydWN0X2F0QjZ2MTUwMDdJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FSlJLUzRfRVBTNF9FRVBUX1M5X0RwT1QwXwC5S5oBX1pOU3QzX18yMTNfX3Vud3JhcF9pdGVyQjZ2MTUwMDdJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzE4X191bndyYXBfaXRlcl9pbXBsSVM1X0xiMUVFRUxpMEVFRURUY2xzclQwXzhfX3Vud3JhcGNsc3Izc3RkRTdkZWNsdmFsSVRfRUVFRVM5XwDZMHxfWk5TdDNfXzIxMV9fbW92ZV9pbXBsQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVTNV92RUVOU180cGFpcklQVDBfUFQxX0VFUzhfUzhfU0FfAIxPdF9aTlN0M19fMjEzX19yZXdyYXBfaXRlckI2djE1MDA3SVBQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVTNV9OU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTNV9MYjFFRUVFRVRfUzhfVDBfAO9LiQFfWk5TdDNfXzI5bWFrZV9wYWlyQjZ2MTUwMDdJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVM1X0VFTlNfNHBhaXJJTlNfMThfX3Vud3JhcF9yZWZfZGVjYXlJVF9FNHR5cGVFTlM3X0lUMF9FNHR5cGVFRUVPUzhfT1NCXwDwS11fWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElQUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTGIxRUU4X191bndyYXBCNnYxNTAwN0VTNV8A2TBXX1pOU3QzX18yNHBhaXJJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVM1X0VDMkI2djE1MDA3SVM1X1M1X0xQdjBFRUVPVF9PVDBfAPJLYF9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSVBQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVMYjFFRThfX3Jld3JhcEI2djE1MDA3RVM1X1M1XwD0S6oBX1pOU3QzX18yMTBfX2Rpc3RhbmNlQjZ2MTUwMDdJTlNfMTNtb3ZlX2l0ZXJhdG9ySVBQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzlfUzlfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UAjU9bX1pOU3QzX18yMTJjb25zdHJ1Y3RfYXRCNnYxNTAwN0lQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVKUzRfRVBTNF9FRVBUX1M3X0RwT1QwXwC5S2hfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVSTlNfOWFsbG9jYXRvcklTNF9FRUU2c2Vjb25kQjZ2MTUwMDdFdgCOTyFfWk5TdDNfXzI2cmFuZ2VzNV9fY3BvOWl0ZXJfbW92ZUUD9BCIAV9aTktTdDNfXzI2cmFuZ2VzMTFfX2l0ZXJfbW92ZTRfX2ZuY2xCNnYxNTAwN0lSS1BQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRURUY2xzcjNzdGRFNG1vdmVkZWNsc3Izc3RkRTdmb3J3YXJkSVRfRWZwX0VFRU9TQl8Aj0+DAV9aTlN0M19fMm1pQjZ2MTUwMDdJUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVM1X0VFRFRtaWNsZHRmcF80YmFzZUVjbGR0ZnAwXzRiYXNlRUVSS05TXzEzbW92ZV9pdGVyYXRvcklUX0VFUktOUzdfSVQwX0VFAJBPUF9aTktSU3QzX18yMTNtb3ZlX2l0ZXJhdG9ySVBQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFNGJhc2VCNnYxNTAwN0V2ANkwcF9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlSTlNfOWFsbG9jYXRvcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUxpMUVMYjBFRTVfX2dldEI2djE1MDA3RXYA3R1vX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVFRUU4bWF4X3NpemVCNnYxNTAwN0lTNV92dkVFbVJLUzVfAJFPcF9aTlN0M19fMjE1X19tb3ZlX2JhY2t3YXJkQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUzZfRUVUMV9UMF9TOF9TN18Akk/tAV9aTlN0M19fMjIwX19tb3ZlX2JhY2t3YXJkX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRVM1X0VFTlNfOWVuYWJsZV9pZklYYWFzcjdpc19zYW1lSU5TXzEycmVtb3ZlX2NvbnN0SVQwX0U0dHlwZUVUMV9FRTV2YWx1ZXNyMjhpc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlSVNCX0VFNXZhbHVlRVBTQl9FNHR5cGVFUFM4X1NGX1NDXwCTT3RfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUk5TXzlhbGxvY2F0b3JJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVMaTFFTGIwRUVDMkI2djE1MDA3SVM3X3ZFRU9UXwC8S0xfWk5TdDNfXzI5YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUU4YWxsb2NhdGVCNnYxNTAwN0VtAJRPcF9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFRThtYXhfc2l6ZUI2djE1MDA3SVM2X3Z2RUVtUktTNl8AlU9kX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUxpMEVMYjBFRUMyQjZ2MTUwMDdJUlM0X3ZFRU9UXwC5S5ABX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzIyX19hbGxvY2F0b3JfZGVzdHJ1Y3RvcklOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVFRUxpMUVMYjBFRUMyQjZ2MTUwMDdJUzdfdkVFT1RfAJZPYF9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMF9fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMGBfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUFBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TCEAV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfMjJfX2FsbG9jYXRvcl9kZXN0cnVjdG9ySU5TXzlhbGxvY2F0b3JJUzNfRUVFRUU2c2Vjb25kQjZ2MTUwMDdFdgCXT2VfWk5TdDNfXzIyMl9fYWxsb2NhdG9yX2Rlc3RydWN0b3JJTlNfOWFsbG9jYXRvcklOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRUVFRWNsQjZ2MTUwMDdFUFM0XwCYT4wBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzIyX19hbGxvY2F0b3JfZGVzdHJ1Y3RvcklOU185YWxsb2NhdG9ySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVFRUxpMUVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBzX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVSTlNfOWFsbG9jYXRvcklTNF9FRUUxN19fZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFM0XwCZT2hfWk5LU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVSTlNfOWFsbG9jYXRvcklTNF9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCgTpEBX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVSTlNfOWFsbG9jYXRvcklTNF9FRUUxN19fZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFM0X05TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFRQCaT2hfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUE5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUk5TXzlhbGxvY2F0b3JJUzRfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMC9fWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtQzJFT1MyXwCbTzJfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE1ZGlyZWN0b3J5X2VudHJ5QzJFT1MyXwCcT0tfWk5TdDNfXzIxMl9fdG9fYWRkcmVzc0I2djE1MDA3SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRUVQVF9TNV8A2TBsX1pOU3QzX18yNWRlcXVlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FTlNfOWFsbG9jYXRvcklTM19FRUUyNV9fbWF5YmVfcmVtb3ZlX2JhY2tfc3BhcmVCNnYxNTAwN0ViAJ1PZ19aTktTdDNfXzI1ZGVxdWVJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRTE5X19iYWNrX3NwYXJlX2Jsb2Nrc0I2djE1MDA3RXYAnk9hX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVM0X0VFRTRiYWNrQjZ2MTUwMDdFdgCfT2VfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU180X19mczEwZmlsZXN5c3RlbTEyX19kaXJfc3RyZWFtRU5TXzlhbGxvY2F0b3JJUzRfRUVFOHBvcF9iYWNrQjZ2MTUwMDdFdgCgT1pfWlRJTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRUUD8xA9X1pOS1N0M19fMjE5X19zaGFyZWRfd2Vha19jb3VudDEzX19nZXRfZGVsZXRlckVSS1N0OXR5cGVfaW5mbwDEOVpfWlRTTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMl9fZGlyX3N0cmVhbUVOU185YWxsb2NhdG9ySVMzX0VFRUUD8hAhX1pUSU5TdDNfXzIxOV9fc2hhcmVkX3dlYWtfY291bnRFA/EQZ19aVElOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOU180X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjhfU3RvcmFnZUVOU185YWxsb2NhdG9ySVM0X0VFRUUD8BBnX1pUU05TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yOF9TdG9yYWdlRU5TXzlhbGxvY2F0b3JJUzRfRUVFRQPvEHhfWlRJTlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTlNfNF9fZnMxMGZpbGVzeXN0ZW0yOHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IxMl9fc2hhcmVkX2ltcEVOU185YWxsb2NhdG9ySVM0X0VFRUUD7hB4X1pUU05TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU5TXzRfX2ZzMTBmaWxlc3lzdGVtMjhyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yMTJfX3NoYXJlZF9pbXBFTlNfOWFsbG9jYXRvcklTNF9FRUVFA+0QZl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMThkaXJlY3RvcnlfaXRlcmF0b3JDMUVSS05TMV80cGF0aEVQTlNfMTBlcnJvcl9jb2RlRU5TMV8xN2RpcmVjdG9yeV9vcHRpb25zRQDkTHBfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI4cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvckMxRVJLTlMxXzRwYXRoRU5TMV8xN2RpcmVjdG9yeV9vcHRpb25zRVBOU18xMGVycm9yX2NvZGVFAIhNGV9aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYAoU8aX1pTdDE5dW5jYXVnaHRfZXhjZXB0aW9uc3YAok8YX1pOU3QxM2V4Y2VwdGlvbl9wdHJEMkV2AKNPG19aTlN0MTNleGNlcHRpb25fcHRyQzJFUktTXwCkTxtfWk5TdDEzZXhjZXB0aW9uX3B0cmFTRVJLU18ApU8bX1pOU3QxNm5lc3RlZF9leGNlcHRpb25DMkV2AKZPGF9aVFZTdDE2bmVzdGVkX2V4Y2VwdGlvbgPsEBhfWlN0MTdjdXJyZW50X2V4Y2VwdGlvbnYAp08gX1pOU3QxM2V4Y2VwdGlvbl9wdHJDMkI2djE1MDA3RXYAtEsbX1pOU3QxNm5lc3RlZF9leGNlcHRpb25EMkV2AKhPGF9aTlN0MTNleGNlcHRpb25fcHRyRDFFdgCjTxtfWk5TdDE2bmVzdGVkX2V4Y2VwdGlvbkQwRXYAqU8bX1pOU3QxNm5lc3RlZF9leGNlcHRpb25EMUV2AKhPKl9aTktTdDE2bmVzdGVkX2V4Y2VwdGlvbjE0cmV0aHJvd19uZXN0ZWRFdgCqTyFfWk5TdDEzZXhjZXB0aW9uX3B0ckMyQjZ2MTUwMDdFRG4A004kX1pTdGVxQjZ2MTUwMDdSS1N0MTNleGNlcHRpb25fcHRyUzFfAKtPG19aTlN0MTNleGNlcHRpb25fcHRyQzFFUktTXwCkTyhfWlN0MTdyZXRocm93X2V4Y2VwdGlvblN0MTNleGNlcHRpb25fcHRyAKxPGF9aVElTdDE2bmVzdGVkX2V4Y2VwdGlvbgPrEBhfWlRTU3QxNm5lc3RlZF9leGNlcHRpb24D6hAbX1pOU3QxNm5lc3RlZF9leGNlcHRpb25DMUV2AKZPJF9aTlN0M19fMjE1X19mbG9hdF90b19iaXRzQjZ2MTUwMDdFZgDUPDJfWk5TdDNfXzIyM19MYXJnZV9pbnRlZ2VyX3RvX2NoYXJzQjZ2MTUwMDdFUGNTMF9qaQCuTxpfWk5TdDNfXzI1X19mMmRCNnYxNTAwN0VqagCvT1JfWk5TdDNfXzIxMF9fdG9fY2hhcnNCNnYxNTAwN0VQY1MwX05TXzIxX19mbG9hdGluZ19kZWNpbWFsXzMyRU5TXzEyY2hhcnNfZm9ybWF0RWpqALBPHF9aTlN0M19fMjhfX2RpdjFlOUI2djE1MDA3RXkAsU8qX1pOU3QzX18yMTlfX211bFBvdzVJbnZEaXZQb3cyQjZ2MTUwMDdFamppALJPJ19aTlN0M19fMjE2X19tdWxQb3c1ZGl2UG93MkI2djE1MDA3RWpqaQCzTypfWk5TdDNfXzIyMF9fbXVsdGlwbGVPZlBvd2VyT2YyQjZ2MTUwMDdFamoAtE8qX1pOU3QzX18yMjBfX211bHRpcGxlT2ZQb3dlck9mNUI2djE1MDA3RWpqALVPYV9aWk5TdDNfXzIxMF9fdG9fY2hhcnNCNnYxNTAwN0VQY1MwX05TXzIxX19mbG9hdGluZ19kZWNpbWFsXzMyRU5TXzEyY2hhcnNfZm9ybWF0RWpqRTExX0FkanVzdG1lbnQD6RBrX1paTlN0M19fMjEwX190b19jaGFyc0I2djE1MDA3RVBjUzBfTlNfMjFfX2Zsb2F0aW5nX2RlY2ltYWxfMzJFTlNfMTJjaGFyc19mb3JtYXRFampFMjFfTWF4X3NoaWZ0ZWRfbWFudGlzc2ED6BAiX1pOU3QzX18yMjJfX0ZMT0FUX1BPVzVfSU5WX1NQTElURQPnECFfWk5TdDNfXzIxMF9fbXVsU2hpZnRCNnYxNTAwN0VqeWkAtk8hX1pOU3QzX18yMTJfX3BvdzVGYWN0b3JCNnYxNTAwN0VqALdPHl9aTlN0M19fMjE4X19GTE9BVF9QT1c1X1NQTElURQPmEBtfWk5TdDNfXzIxMmZvcm1hdF9lcnJvckQyRXYAuE8YX1pOU3QxM3J1bnRpbWVfZXJyb3JEMkV2AJ5iG19aTlN0M19fMjEyZm9ybWF0X2Vycm9yRDBFdgC5TxtfWk5TdDNfXzIxMmZvcm1hdF9lcnJvckQxRXYAuE8aX1pUVk5TdDNfXzIxMmZvcm1hdF9lcnJvckUD5RAaX1pUSU5TdDNfXzIxMmZvcm1hdF9lcnJvckUD5BAcX1pOS1N0MTNydW50aW1lX2Vycm9yNHdoYXRFdgCOTxpfWlRTTlN0M19fMjEyZm9ybWF0X2Vycm9yRQPjEBVfWlRJU3QxM3J1bnRpbWVfZXJyb3ID4hAgX1pOU3QzX18yMTdiYWRfZnVuY3Rpb25fY2FsbEQyRXYA2TATX1pOU3Q5ZXhjZXB0aW9uRDJFdgDZMCBfWk5TdDNfXzIxN2JhZF9mdW5jdGlvbl9jYWxsRDBFdgDiQCBfWk5TdDNfXzIxN2JhZF9mdW5jdGlvbl9jYWxsRDFFdgDZMCRfWk5LU3QzX18yMTdiYWRfZnVuY3Rpb25fY2FsbDR3aGF0RXYAuk8fX1pUVk5TdDNfXzIxN2JhZF9mdW5jdGlvbl9jYWxsRQPhEB9fWlRJTlN0M19fMjE3YmFkX2Z1bmN0aW9uX2NhbGxFA+AQH19aVFNOU3QzX18yMTdiYWRfZnVuY3Rpb25fY2FsbEUD3xAQX1pUSVN0OWV4Y2VwdGlvbgPeECpfWk5LU3QzX18yMjNfX2Z1dHVyZV9lcnJvcl9jYXRlZ29yeTRuYW1lRXYAu08tX1pOS1N0M19fMjIzX19mdXR1cmVfZXJyb3JfY2F0ZWdvcnk3bWVzc2FnZUVpALxPHF9aTlN0M19fMjE1ZnV0dXJlX2NhdGVnb3J5RXYAvU8dX1pOU3QzX18yMTRlcnJvcl9jYXRlZ29yeUQyRXYA2TAqX1pOU3QzX18yMTJmdXR1cmVfZXJyb3JDMkVOU18xMGVycm9yX2NvZGVFAL5PIF9aTktTdDNfXzIxMGVycm9yX2NvZGU3bWVzc2FnZUV2AJ9fV19aTlN0MTFsb2dpY19lcnJvckMyRVJLTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOUzBfMTFjaGFyX3RyYWl0c0ljRUVOUzBfOWFsbG9jYXRvckljRUVFRQCPXRpfWlRWTlN0M19fMjEyZnV0dXJlX2Vycm9yRQPdEBtfWk5TdDNfXzIxMmZ1dHVyZV9lcnJvckQyRXYAv08WX1pOU3QxMWxvZ2ljX2Vycm9yRDJFdgCcYhtfWk5TdDNfXzIxMmZ1dHVyZV9lcnJvckQwRXYAwE8bX1pOU3QzX18yMTJmdXR1cmVfZXJyb3JEMUV2AL9PMF9aTlN0M19fMjE3X19hc3NvY19zdWJfc3RhdGUxNl9fb25femVyb19zaGFyZWRFdgDBTyhfWk5TdDNfXzIxN19fYXNzb2Nfc3ViX3N0YXRlOXNldF92YWx1ZUV2AMJPMV9aTlN0M19fMjExdW5pcXVlX2xvY2tJTlNfNW11dGV4RUVDMkI2djE1MDA3RVJTMV8Aw080X1pOS1N0M19fMjE3X19hc3NvY19zdWJfc3RhdGUxMV9faGFzX3ZhbHVlQjZ2MTUwMDdFdgDETzlfWk5TdDNfXzIyMF9fdGhyb3dfZnV0dXJlX2Vycm9yQjZ2MTUwMDdFTlNfMTFmdXR1cmVfZXJyY0UAxU8uX1pOU3QzX18yMTF1bmlxdWVfbG9ja0lOU181bXV0ZXhFRUQyQjZ2MTUwMDdFdgDGTyRfWlN0bmVCNnYxNTAwN1JLU3QxM2V4Y2VwdGlvbl9wdHJTMV8Ax080X1pOU3QzX18yMTVtYWtlX2Vycm9yX2NvZGVCNnYxNTAwN0VOU18xMWZ1dHVyZV9lcnJjRQDITypfWk5TdDNfXzIxMmZ1dHVyZV9lcnJvckMxRU5TXzEwZXJyb3JfY29kZUUAvk8aX1pUSU5TdDNfXzIxMmZ1dHVyZV9lcnJvckUD3BA4X1pOU3QzX18yMTdfX2Fzc29jX3N1Yl9zdGF0ZTI0c2V0X3ZhbHVlX2F0X3RocmVhZF9leGl0RXYAyU9QX1pOU3QzX18yMTVfX3RocmVhZF9zdHJ1Y3QyN19fbWFrZV9yZWFkeV9hdF90aHJlYWRfZXhpdEVQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUUAx189X1pOU3QzX18yMTdfX2Fzc29jX3N1Yl9zdGF0ZTEzc2V0X2V4Y2VwdGlvbkVTdDEzZXhjZXB0aW9uX3B0cgDKT0xfWk5TdDNfXzIxN19fYXNzb2Nfc3ViX3N0YXRlMjhzZXRfZXhjZXB0aW9uX2F0X3RocmVhZF9leGl0RVN0MTNleGNlcHRpb25fcHRyAMtPLF9aTlN0M19fMjE3X19hc3NvY19zdWJfc3RhdGUxMl9fbWFrZV9yZWFkeUV2AMxPI19aTlN0M19fMjE3X19hc3NvY19zdWJfc3RhdGU0Y29weUV2AM1PR19aTlN0M19fMjE3X19hc3NvY19zdWJfc3RhdGUxMF9fc3ViX3dhaXRFUk5TXzExdW5pcXVlX2xvY2tJTlNfNW11dGV4RUVFAM5PM19aTktTdDNfXzIxN19fYXNzb2Nfc3ViX3N0YXRlMTBfX2lzX3JlYWR5QjZ2MTUwMDdFdgDPTytfWk5TdDNfXzIxMXVuaXF1ZV9sb2NrSU5TXzVtdXRleEVFNnVubG9ja0V2ANBPI19aTlN0M19fMjE3X19hc3NvY19zdWJfc3RhdGU0d2FpdEV2ANFPKF9aTlN0M19fMjE3X19hc3NvY19zdWJfc3RhdGU5X19leGVjdXRlRXYA0k8uX1pOU3QzX18yNmZ1dHVyZUl2RUMyRVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRQDTTzdfWk5TdDNfXzIxN19fYXNzb2Nfc3ViX3N0YXRlMTVfX2F0dGFjaF9mdXR1cmVCNnYxNTAwN0V2ANRPMV9aTlN0M19fMjE0X19zaGFyZWRfY291bnQxMl9fYWRkX3NoYXJlZEI2djE1MDA3RXYA1U8XX1pOU3QzX18yNmZ1dHVyZUl2RUQyRXYA1k8ZX1pOU3QzX18yNmZ1dHVyZUl2RTNnZXRFdgDXT11fWk5TdDNfXzIxMHVuaXF1ZV9wdHJJTlNfMTRfX3NoYXJlZF9jb3VudEVOU18yMl9fcmVsZWFzZV9zaGFyZWRfY291bnRFRUMyQjZ2MTUwMDdJTGIxRXZFRVBTMV8A2E9TX1pOU3QzX18yMTB1bmlxdWVfcHRySU5TXzE0X19zaGFyZWRfY291bnRFTlNfMjJfX3JlbGVhc2Vfc2hhcmVkX2NvdW50RUVEMkI2djE1MDA3RXYA2U99X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfMTRfX3NoYXJlZF9jb3VudEVOU18yMl9fcmVsZWFzZV9zaGFyZWRfY291bnRFRUMyQjZ2MTUwMDdJUlMyX05TXzE2X192YWx1ZV9pbml0X3RhZ0VFRU9UX09UMF8AsUtaX1pOU3QzX18yMTB1bmlxdWVfcHRySU5TXzE0X19zaGFyZWRfY291bnRFTlNfMjJfX3JlbGVhc2Vfc2hhcmVkX2NvdW50RUU1cmVzZXRCNnYxNTAwN0VQUzFfANpPGF9aTlN0M19fMjdwcm9taXNlSXZFQzJFdgDbTyhfWk5TdDNfXzIxN19fYXNzb2Nfc3ViX3N0YXRlQzJCNnYxNTAwN0V2ANxPH19aVFZOU3QzX18yMTdfX2Fzc29jX3N1Yl9zdGF0ZUUD2xAbX1pOU3QzX18yNW11dGV4QzJCNnYxNTAwN0V2AMlMKV9aTlN0M19fMjE4Y29uZGl0aW9uX3ZhcmlhYmxlQzJCNnYxNTAwN0V2AN1PGF9aTlN0M19fMjdwcm9taXNlSXZFRDJFdgDeTy5fWk5LU3QzX18yMTRfX3NoYXJlZF9jb3VudDl1c2VfY291bnRCNnYxNTAwN0V2AN9PS19aU3QxOG1ha2VfZXhjZXB0aW9uX3B0ckI2djE1MDA3SU5TdDNfXzIxMmZ1dHVyZV9lcnJvckVFU3QxM2V4Y2VwdGlvbl9wdHJUXwDgTzNfWk5TdDNfXzIyMV9fbGliY3BwX3JlbGF4ZWRfbG9hZEI2djE1MDA3SWxFRVRfUEtTMV8A3R0fX1pOU3QzX18yMTJmdXR1cmVfZXJyb3JDMkVSS1MwXwDhTyJfWk5TdDNfXzI3cHJvbWlzZUl2RTEwZ2V0X2Z1dHVyZUV2AOJPLl9aTlN0M19fMjZmdXR1cmVJdkVDMUVQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUUA008gX1pOU3QzX18yN3Byb21pc2VJdkU5c2V0X3ZhbHVlRXYA4081X1pOU3QzX18yN3Byb21pc2VJdkUxM3NldF9leGNlcHRpb25FU3QxM2V4Y2VwdGlvbl9wdHIA5E8wX1pOU3QzX18yN3Byb21pc2VJdkUyNHNldF92YWx1ZV9hdF90aHJlYWRfZXhpdEV2AOVPRF9aTlN0M19fMjdwcm9taXNlSXZFMjhzZXRfZXhjZXB0aW9uX2F0X3RocmVhZF9leGl0RVN0MTNleGNlcHRpb25fcHRyAOZPH19aTlN0M19fMjEzc2hhcmVkX2Z1dHVyZUl2RUQyRXYA1k8jX1pOU3QzX18yMTNzaGFyZWRfZnV0dXJlSXZFYVNFUktTMV8A508/X1pOU3QzX18yMzRfX2xpYmNwcF9hdG9taWNfcmVmY291bnRfaW5jcmVtZW50QjZ2MTUwMDdJbEVFVF9SUzFfAOhPIF9aTlN0M19fMjE3X19hc3NvY19zdWJfc3RhdGVEMkV2AOlPE19aTlN0M19fMjVtdXRleEQxRXYAqlodX1pOU3QzX18yMTRfX3NoYXJlZF9jb3VudEQyRXYA2TAgX1pOU3QzX18yMTdfX2Fzc29jX3N1Yl9zdGF0ZUQwRXYA6k8mX1pOU3QzX18yMjNfX2Z1dHVyZV9lcnJvcl9jYXRlZ29yeUQwRXYA4kBVX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU18xNF9fc2hhcmVkX2NvdW50RUxpMEVMYjBFRUMyQjZ2MTUwMDdJUlMyX3ZFRU9UXwC5S2hfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfMjJfX3JlbGVhc2Vfc2hhcmVkX2NvdW50RUxpMUVMYjFFRUMyQjZ2MTUwMDdFTlNfMTZfX3ZhbHVlX2luaXRfdGFnRQDZMF9fWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU18xNF9fc2hhcmVkX2NvdW50RU5TXzIyX19yZWxlYXNlX3NoYXJlZF9jb3VudEVFNWZpcnN0QjZ2MTUwMDdFdgDZMGBfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU18xNF9fc2hhcmVkX2NvdW50RU5TXzIyX19yZWxlYXNlX3NoYXJlZF9jb3VudEVFNnNlY29uZEI2djE1MDA3RXYA2TA5X1pOU3QzX18yMjJfX3JlbGVhc2Vfc2hhcmVkX2NvdW50Y2xFUE5TXzE0X19zaGFyZWRfY291bnRFAOtPUF9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQTlNfMTRfX3NoYXJlZF9jb3VudEVMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwV19aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18yMl9fcmVsZWFzZV9zaGFyZWRfY291bnRFTGkxRUxiMUVFNV9fZ2V0QjZ2MTUwMDdFdgDZMBlfWk5TdDExbG9naWNfZXJyb3JDMkVSS1NfAJNdJV9aVFZOU3QzX18yMjNfX2Z1dHVyZV9lcnJvcl9jYXRlZ29yeUUD2hAlX1pUSU5TdDNfXzIyM19fZnV0dXJlX2Vycm9yX2NhdGVnb3J5RQPZEDVfWk5LU3QzX18yMTRlcnJvcl9jYXRlZ29yeTIzZGVmYXVsdF9lcnJvcl9jb25kaXRpb25FaQCUXz9fWk5LU3QzX18yMTRlcnJvcl9jYXRlZ29yeTEwZXF1aXZhbGVudEVpUktOU18xNWVycm9yX2NvbmRpdGlvbkUAlV86X1pOS1N0M19fMjE0ZXJyb3JfY2F0ZWdvcnkxMGVxdWl2YWxlbnRFUktOU18xMGVycm9yX2NvZGVFaQCXXxpfWk5LU3QxMWxvZ2ljX2Vycm9yNHdoYXRFdgCOTxpfWlRTTlN0M19fMjEyZnV0dXJlX2Vycm9yRQPYEBNfWlRJU3QxMWxvZ2ljX2Vycm9yA9cQH19aVElOU3QzX18yMTdfX2Fzc29jX3N1Yl9zdGF0ZUUD1hAfX1pUU05TdDNfXzIxN19fYXNzb2Nfc3ViX3N0YXRlRQPVEBxfWlRJTlN0M19fMjE0X19zaGFyZWRfY291bnRFA9QQJV9aVFNOU3QzX18yMjNfX2Z1dHVyZV9lcnJvcl9jYXRlZ29yeUUD0xAaX1pUSU5TdDNfXzIxMl9fZG9fbWVzc2FnZUUD0hAXX1pOU3QzX18yNmZ1dHVyZUl2RUQxRXYA1k8YX1pOU3QzX18yN3Byb21pc2VJdkVDMUV2ANtPGF9aTlN0M19fMjdwcm9taXNlSXZFRDFFdgDeTx9fWk5TdDNfXzIxM3NoYXJlZF9mdXR1cmVJdkVEMUV2ANZPMl9aTlN0M19fMjExbG93ZXJfYm91bmRCNnYxNTAwN0lQS2ptRUVUX1MzX1MzX1JLVDBfAO1PT19aTlN0M19fMjIwX19jaGVja19mb3Jfb3ZlcmZsb3dCNnYxNTAwN0lMbTRFRUVOU185ZW5hYmxlX2lmSVhlcVRfTGk0RUV2RTR0eXBlRW0A7k9EX1pOU3QzX18yMTFsb3dlcl9ib3VuZEI2djE1MDA3SVBLam1OU182X19sZXNzSWptRUVFRVRfUzVfUzVfUktUMF9UMV8A708tX1pOU3QzX18yMjJfX3Rocm93X292ZXJmbG93X2Vycm9yQjZ2MTUwMDdFUEtjAPBPe19aTlN0M19fMjE4X19sb3dlcl9ib3VuZF9pbXBsQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQS2pTM19tTlNfMTBfX2lkZW50aXR5RU5TXzZfX2xlc3NJam1FRUVFVDBfUzdfVDFfUktUMl9SVDRfUlQzXwDxT3JfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFOGRpc3RhbmNlQjZ2MTUwMDdJUEtqRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTN19TN18A8k9JX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTdhZHZhbmNlQjZ2MTUwMDdJUEtqbEVFdlJUX1QwXwDzT3JfWk5TdDNfXzI4X19pbnZva2VCNnYxNTAwN0lSTlNfMTBfX2lkZW50aXR5RUpSS2pFRUVEVGNsY2xzcjNzdGRFN2RlY2x2YWxJVF9FRXNwY2xzcjNzdGRFN2RlY2x2YWxJVDBfRUVFRU9TNV9EcE9TNl8Akkp0X1pOU3QzX18yOF9faW52b2tlQjZ2MTUwMDdJUk5TXzZfX2xlc3NJam1FRUpSS2pSS21FRUVEVGNsY2xzcjNzdGRFN2RlY2x2YWxJVF9FRXNwY2xzcjNzdGRFN2RlY2x2YWxJVDBfRUVFRU9TOF9EcE9TOV8A9E9QX1pOU3QzX18yOGRpc3RhbmNlQjZ2MTUwMDdJUEtqRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTNF9TNF8A9U8pX1pOU3QzX18yN2FkdmFuY2VCNnYxNTAwN0lQS2psbHZFRXZSVF9UMF8A9k8mX1pOS1N0M19fMjZfX2xlc3NJam1FY2xCNnYxNTAwN0VSS2pSS20AqUkkX1pOS1N0M19fMjEwX19pZGVudGl0eWNsSVJLakVFT1RfUzVfAJJKc19aTlN0M19fMjEwX19kaXN0YW5jZUI2djE1MDA3SVBLakVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzRfUzRfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UA909wX1pOU3QzX18yOV9fYWR2YW5jZUI2djE1MDA3SVBLakVFdlJUX05TXzE1aXRlcmF0b3JfdHJhaXRzSVMzX0UxNWRpZmZlcmVuY2VfdHlwZUVOU18yNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRQD4TyNfWk5TdDE0b3ZlcmZsb3dfZXJyb3JDMkI2djE1MDA3RVBLYwD5TxlfWk5TdDE0b3ZlcmZsb3dfZXJyb3JEMUV2AJ5iFl9aVElTdDE0b3ZlcmZsb3dfZXJyb3ID0RAWX1pUVlN0MTRvdmVyZmxvd19lcnJvcgPQEBpfWk5TdDEzcnVudGltZV9lcnJvckMyRVBLYwCaXS5fWk5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMkV2APpPFl9aTlN0M19fMjhpb3NfYmFzZUQyRXYA4FIuX1pOU3QzX18yOWJhc2ljX2lvc0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgD7Ty5fWk5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMUV2APpPOF9aTlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRTdjb3B5Zm10RVJLUzNfAPxPMF9aTlN0M19fMjhpb3NfYmFzZTE2X19jYWxsX2NhbGxiYWNrc0VOUzBfNWV2ZW50RQDVUiBfWk5TdDNfXzI4aW9zX2Jhc2U3Y29weWZtdEVSS1MwXwDkUkFfWk5LU3QzX18yOWJhc2ljX2lvc0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFMTBleGNlcHRpb25zQjZ2MTUwMDdFdgD9T0BfWk5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUUxMGV4Y2VwdGlvbnNCNnYxNTAwN0VqAP5PKF9aTlN0M19fMjhpb3NfYmFzZTEwZXhjZXB0aW9uc0I2djE1MDA3RWoA/08pX1pOS1N0M19fMjhpb3NfYmFzZTEwZXhjZXB0aW9uc0I2djE1MDA3RXYA/U81X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUQyRXYAgFA0X1pUVk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQPPEBRfWk5TdDNfXzI2bG9jYWxlRDFFdgDrVjVfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgCBUDVfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDFFdgCAUDVfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzJFdgCCUBRfWk5TdDNfXzI2bG9jYWxlQzFFdgDpVjlfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzJFUktTM18Ag1AYX1pOU3QzX18yNmxvY2FsZUMxRVJLUzBfAOpWOV9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVhU0VSS1MzXwCEUBhfWk5TdDNfXzI2bG9jYWxlYVNFUktTMF8A7FY7X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTRzd2FwRVJTM18AhVCLAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJTlNfNmxvY2FsZUVFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTM19FRTV2YWx1ZUV2RTR0eXBlRVJTM19TNl8AhlCCAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJUGNFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTM19FRTV2YWx1ZUV2RTR0eXBlRVJTM19TNl8AjEpFX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTVpbWJ1ZUVSS05TXzZsb2NhbGVFAJERPF9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2c2V0YnVmRVBjbADOTVFfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFN3NlZWtvZmZFeE5TXzhpb3NfYmFzZTdzZWVrZGlyRWoAh1ApX1pOU3QzX18yNGZwb3NJMTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RXgAiFBTX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTdzZWVrcG9zRU5TXzRmcG9zSTExX19tYnN0YXRlX3RFRWoAiVA4X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTRzeW5jRXYA3BA9X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTlzaG93bWFueWNFdgDcEDxfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnhzZ2V0bkVQY2wAilAjX1pOU3QzX18yM21pbkI2djE1MDA3SWxFRVJLVF9TM19TM18A9UslX1pOU3QzX18yMTFjaGFyX3RyYWl0c0ljRTRjb3B5RVBjUEtjbQCLUEFfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNWdidW1wQjZ2MTUwMDdFaQCMUClfWk5TdDNfXzIxMWNoYXJfdHJhaXRzSWNFMTJ0b19jaGFyX3R5cGVFaQCNUDVfWk5TdDNfXzIzbWluQjZ2MTUwMDdJbE5TXzZfX2xlc3NJbGxFRUVFUktUX1M1X1M1X1QwXwD5S3RfWk5TdDNfXzI2Y29weV9uQjZ2MTUwMDdJUEtjbVBjRUVOU185ZW5hYmxlX2lmSVhzcjMzX19pc19jcHAxN19yYW5kb21fYWNjZXNzX2l0ZXJhdG9ySVRfRUU1dmFsdWVFVDFfRTR0eXBlRVM1X1QwX1M2XwDpSz1fWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFOXVuZGVyZmxvd0V2ANJNH19aTlN0M19fMjExY2hhcl90cmFpdHNJY0UzZW9mRXYA0005X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTV1Zmxvd0V2AI5QKF9aTlN0M19fMjExY2hhcl90cmFpdHNJY0UxMXRvX2ludF90eXBlRWMAj1A9X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTlwYmFja2ZhaWxFaQCEPT1fWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnhzcHV0bkVQS2NsAJBQPF9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU4b3ZlcmZsb3dFaQCEPTNfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQyRXYAz00zX1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMUV2AJFQMl9aVFROU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA84QO19aVHYwX24xMl9OU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMUV2AJJQM19aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgCTUDtfWlR2MF9uMTJfTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgCUUD5fWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTZzZW50cnlDMkVSUzNfYgCVUDpfWk5LU3QzX18yOWJhc2ljX2lvc0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNGdvb2RCNnYxNTAwN0V2AJZQOV9aTktTdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUUzdGllQjZ2MTUwMDdFdgCXUDdfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTVmbHVzaEV2AJhQI19aTktTdDNfXzI4aW9zX2Jhc2U1ZmxhZ3NCNnYxNTAwN0V2AN4dHF9aTktTdDNfXzI4aW9zX2Jhc2U2Z2V0bG9jRXYA11I8X1pOU3QzX18yOXVzZV9mYWNldEI2djE1MDA3SU5TXzVjdHlwZUljRUVFRVJLVF9SS05TXzZsb2NhbGVFAJlQWl9aTlN0M19fMjE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzJCNnYxNTAwN0VSTlNfMTNiYXNpY19pc3RyZWFtSWNTMl9FRQCaUEFfWk5TdDNfXzIxOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUMyQjZ2MTUwMDdFdgC0S1FfWk5TdDNfXzJlcUI2djE1MDA3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFYlJLTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySVRfVDBfRUVTOF8Am1BCX1pOS1N0M19fMjE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFZGVCNnYxNTAwN0V2AJxQIV9aTktTdDNfXzI1Y3R5cGVJY0UyaXNCNnYxNTAwN0VtYwCdUEFfWk5TdDNfXzIxOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRXBwQjZ2MTUwMDdFdgCeUD1fWk5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU4c2V0c3RhdGVCNnYxNTAwN0VqAJ9QIl9aTktTdDNfXzI4aW9zX2Jhc2U0Z29vZEI2djE1MDA3RXYAoFA7X1pOS1N0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRTVyZGJ1ZkI2djE1MDA3RXYApSE9X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2c2VudHJ5QzFFUlMzXwDuUERfWk5LU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2c2VudHJ5Y3ZiQjZ2MTUwMDdFdgCoPkNfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFN3B1YnN5bmNCNnYxNTAwN0V2AKFQOl9aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnNlbnRyeUQxRXYA71A3X1pOU3QzX18yOGlvc19iYXNlMzNfX3NldF9iYWRiaXRfYW5kX2NvbnNpZGVyX3JldGhyb3dFdgDtUhZfWk5TdDNfXzI1Y3R5cGVJY0UyaWRFA80QJV9aTktTdDNfXzI2bG9jYWxlOXVzZV9mYWNldEVSTlMwXzJpZEUAq1NKX1pOS1N0M19fMjE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNWVxdWFsQjZ2MTUwMDdFUktTM18AolBBX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTVzZ2V0Y0I2djE1MDA3RXYAo1BCX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTZzYnVtcGNCNnYxNTAwN0V2AKRQJV9aTlN0M19fMjhpb3NfYmFzZThzZXRzdGF0ZUI2djE1MDA3RWoApVBOX1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVyc0VQTlNfMTViYXNpY19zdHJlYW1idWZJY1MyX0VFAKZQPl9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnNlbnRyeUMxRVJTM19iAJVQRF9aTktTdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTZzZW50cnljdmJCNnYxNTAwN0V2AKg+KV9aTlN0M19fMjExY2hhcl90cmFpdHNJY0UxMWVxX2ludF90eXBlRWlpANgQQV9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1c3B1dGNCNnYxNTAwN0VjAKdQMF9aTlN0M19fMjhpb3NfYmFzZTE4X19zZXRzdGF0ZV9ub3Rocm93QjZ2MTUwMDdFagCoUCNfWk5LU3QzX18yOGlvc19iYXNlNXJkYnVmQjZ2MTUwMDdFdgClITRfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRXJzRVJiAKlQYF9aTlN0M19fMjE4X19pbnB1dF9hcml0aG1ldGljQjZ2MTUwMDdJYmNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwCqUG5fWk5TdDNfXzI5dXNlX2ZhY2V0QjZ2MTUwMDdJTlNfN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRUVSS1RfUktOU182bG9jYWxlRQCrUGpfWk5LU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzZ2V0QjZ2MTUwMDdFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJiAKxQNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFcnNFUnMArVB0X1pOU3QzX18yMzhfX2lucHV0X2FyaXRobWV0aWNfd2l0aF9udW1lcmljX2xpbWl0c0I2djE1MDA3SXNjTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU18xM2Jhc2ljX2lzdHJlYW1JVDBfVDFfRUVTN19SVF8ArlBqX1pOS1N0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM2dldEI2djE1MDA3RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSbACvUCpfWk5TdDNfXzIxNG51bWVyaWNfbGltaXRzSXNFM21pbkI2djE1MDA3RXYAsFAqX1pOU3QzX18yMTRudW1lcmljX2xpbWl0c0lzRTNtYXhCNnYxNTAwN0V2ALFQNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFcnNFUnQAslBgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0l0Y05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfALNQal9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUnQAtFA0X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVyc0VSaQC1UHRfWk5TdDNfXzIzOF9faW5wdXRfYXJpdGhtZXRpY193aXRoX251bWVyaWNfbGltaXRzQjZ2MTUwMDdJaWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwC2UCpfWk5TdDNfXzIxNG51bWVyaWNfbGltaXRzSWlFM21pbkI2djE1MDA3RXYAt1AqX1pOU3QzX18yMTRudW1lcmljX2xpbWl0c0lpRTNtYXhCNnYxNTAwN0V2ALhQNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFcnNFUmoAuVBgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0lqY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfALpQa19aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUzhfALtQNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFcnNFUmwAvFBgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0lsY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfAL1QNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFcnNFUm0AvlBgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0ltY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfAL9Qal9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUm0AwFA0X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVyc0VSeADBUGBfWk5TdDNfXzIxOF9faW5wdXRfYXJpdGhtZXRpY0I2djE1MDA3SXhjTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU18xM2Jhc2ljX2lzdHJlYW1JVDBfVDFfRUVTN19SVF8AwlBqX1pOS1N0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM2dldEI2djE1MDA3RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSeADDUDRfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRXJzRVJ5AMRQYF9aTlN0M19fMjE4X19pbnB1dF9hcml0aG1ldGljQjZ2MTUwMDdJeWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwDFUGpfWk5LU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzZ2V0QjZ2MTUwMDdFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJ5AMZQNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFcnNFUmYAx1BgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0lmY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfAMhQal9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUmYAyVA0X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVyc0VSZADKUGBfWk5TdDNfXzIxOF9faW5wdXRfYXJpdGhtZXRpY0I2djE1MDA3SWRjTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU18xM2Jhc2ljX2lzdHJlYW1JVDBfVDFfRUVTN19SVF8Ay1BqX1pOS1N0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM2dldEI2djE1MDA3RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSZADMUDRfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRXJzRVJlAM1QYF9aTlN0M19fMjE4X19pbnB1dF9hcml0aG1ldGljQjZ2MTUwMDdJZWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwDOUGpfWk5LU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzZ2V0QjZ2MTUwMDdFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJlAM9QNV9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFcnNFUlB2ANBQYV9aTlN0M19fMjE4X19pbnB1dF9hcml0aG1ldGljQjZ2MTUwMDdJUHZjTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU18xM2Jhc2ljX2lzdHJlYW1JVDBfVDFfRUVTOF9SVF8A0VBrX1pOS1N0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM2dldEI2djE1MDA3RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSUHYA0lA1X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUUzZ2V0RXYA01A9X1pOS1N0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRTdyZHN0YXRlQjZ2MTUwMDdFdgCjGyVfWk5LU3QzX18yOGlvc19iYXNlN3Jkc3RhdGVCNnYxNTAwN0V2AKMbOF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFM2dldEVQY2xjANRQH19aTlN0M19fMjExY2hhcl90cmFpdHNJY0UyZXFFY2MA2BBRX1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUUzZ2V0RVJOU18xNWJhc2ljX3N0cmVhbWJ1ZkljUzJfRUVjANVQPF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFN2dldGxpbmVFUGNsYwDWUDlfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTZpZ25vcmVFbGkA11AqX1pOU3QzX18yMTRudW1lcmljX2xpbWl0c0lsRTNtYXhCNnYxNTAwN0V2ALhQN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJbExiMUVFM21heEI2djE1MDA3RXYAuFA2X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0cGVla0V2ANhQOF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNHJlYWRFUGNsANlQQ19aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1c2dldG5CNnYxNTAwN0VQY2wA2lA8X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU4cmVhZHNvbWVFUGNsANtQRF9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU4aW5fYXZhaWxCNnYxNTAwN0V2ANxQOV9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFN3B1dGJhY2tFYwDdUDpfWk5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1Y2xlYXJCNnYxNTAwN0VqAN5QRV9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU5c3B1dGJhY2tjQjZ2MTUwMDdFYwDfUBpfWk5TdDNfXzI4aW9zX2Jhc2U1Y2xlYXJFagDdUjdfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTV1bmdldEV2AOBQQ19aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU3c3VuZ2V0Y0I2djE1MDA3RXYA4VA2X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0c3luY0V2AOJQN19aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNXRlbGxnRXYA41BdX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTEwcHVic2Vla29mZkI2djE1MDA3RXhOU184aW9zX2Jhc2U3c2Vla2RpckVqAORQTl9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNXNlZWtnRU5TXzRmcG9zSTExX19tYnN0YXRlX3RFRQDlUF9fWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFMTBwdWJzZWVrcG9zQjZ2MTUwMDdFTlNfNGZwb3NJMTFfX21ic3RhdGVfdEVFagDmUDZfWk5TdDNfXzJlcUI2djE1MDA3STExX19tYnN0YXRlX3RFRWJSS05TXzRmcG9zSVRfRUVTNl8A51ArX1pOS1N0M19fMjRmcG9zSTExX19tYnN0YXRlX3RFY3Z4QjZ2MTUwMDdFdgDoUExfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTVzZWVrZ0V4TlNfOGlvc19iYXNlN3NlZWtkaXJFAOlQM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDJFdgDPTTNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYA6lAyX1pUVE5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUDzBA7X1pUdjBfbjEyX05TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYA61AzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMEV2AOxQO19aVHYwX24xMl9OU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMEV2AO1QPV9aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnNlbnRyeUMyRVJTM18A7lA6X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2c2VudHJ5RDJFdgDvUDNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRWxzRWIA8FBuX1pOU3QzX18yOXVzZV9mYWNldEI2djE1MDA3SU5TXzdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVFUktUX1JLTlNfNmxvY2FsZUUA8VBaX1pOU3QzX18yMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVDMkI2djE1MDA3RVJOU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFAJpQOl9aTktTdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0ZmlsbEI2djE1MDA3RXYA8lBlX1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM3B1dEI2djE1MDA3RVM0X1JOU184aW9zX2Jhc2VFY2IA81BHX1pOS1N0M19fMjE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNmZhaWxlZEI2djE1MDA3RXYA9FBIX1pOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUyaWRFA8sQO19aTktTdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1d2lkZW5CNnYxNTAwN0VjAPVQM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFbHNFcwD2UGVfWk5LU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzcHV0QjZ2MTUwMDdFUzRfUk5TXzhpb3NfYmFzZUVjbAD3UDNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRWxzRXQA+FBlX1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM3B1dEI2djE1MDA3RVM0X1JOU184aW9zX2Jhc2VFY20A+VAzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVsc0VpAPpQM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFbHNFagD4UDNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRWxzRWwA+1AzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVsc0VtAPhQM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFbHNFeAD8UGVfWk5LU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzcHV0QjZ2MTUwMDdFUzRfUk5TXzhpb3NfYmFzZUVjeAD9UDNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRWxzRXkA/lBlX1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM3B1dEI2djE1MDA3RVM0X1JOU184aW9zX2Jhc2VFY3kA/1AzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVsc0VmAIBRZV9aTktTdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTNwdXRCNnYxNTAwN0VTNF9STlNfOGlvc19iYXNlRWNkAIFRM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFbHNFZACCUTNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRWxzRWUAg1FlX1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM3B1dEI2djE1MDA3RVM0X1JOU184aW9zX2Jhc2VFY2UAhFE1X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVsc0VQS3YAhVFnX1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM3B1dEI2djE1MDA3RVM0X1JOU184aW9zX2Jhc2VFY1BLdgCGUU5fWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRWxzRVBOU18xNWJhc2ljX3N0cmVhbWJ1ZkljUzJfRUUAh1FcX1pOU3QzX18yMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVDMkI2djE1MDA3RVBOU18xNWJhc2ljX3N0cmVhbWJ1ZkljUzJfRUUAvEtBX1pOU3QzX18yMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVkZUI2djE1MDA3RXYA2TBBX1pOU3QzX18yMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVhU0I2djE1MDA3RWMAiFFBX1pOU3QzX18yMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVwcEI2djE1MDA3RXYA2TA4X1pOU3QzX18yOGlvc19iYXNlMzRfX3NldF9mYWlsYml0X2FuZF9jb25zaWRlcl9yZXRocm93RXYA7lI1X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUUzcHV0RWMAiVE6X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1d3JpdGVFUEtjbACKUURfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNXNwdXRuQjZ2MTUwMDdFUEtjbACLUTRfWk5TdDNfXzIxNGJhc2ljX2lvc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMkV2AM9NNF9aTlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYAjFEzX1pUVE5TdDNfXzIxNGJhc2ljX2lvc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA8oQOV9aVGhuOF9OU3QzX18yMTRiYXNpY19pb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDFFdgCNUTxfWlR2MF9uMTJfTlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYAjlE0X1pOU3QzX18yMTRiYXNpY19pb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgCPUTlfWlRobjhfTlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQwRXYAkFE8X1pUdjBfbjEyX05TdDNfXzIxNGJhc2ljX2lvc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMEV2AJFRLl9aTlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUQyRXYA+k8uX1pOU3QzX18yOWJhc2ljX2lvc0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRDBFdgD7Ty5fWk5TdDNfXzI5YmFzaWNfaW9zSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVEMUV2APpPOF9aTlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRTdjb3B5Zm10RVJLUzNfAPxPQV9aTktTdDNfXzI5YmFzaWNfaW9zSXdOU18xMWNoYXJfdHJhaXRzSXdFRUUxMGV4Y2VwdGlvbnNCNnYxNTAwN0V2AP1PQF9aTlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRTEwZXhjZXB0aW9uc0I2djE1MDA3RWoA/k81X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRUQyRXYAklE0X1pUVk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQPJEDVfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRDBFdgCTUTVfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRDFFdgCSUTVfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFQzJFdgCUUTlfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFQzJFUktTM18AlVE5X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRWFTRVJLUzNfAIRQO19aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU0c3dhcEVSUzNfAIVQggFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SVB3RUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzNfRUU1dmFsdWVFdkU0dHlwZUVSUzNfUzZfAIxKRV9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU1aW1idWVFUktOU182bG9jYWxlRQCRETxfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNnNldGJ1ZkVQd2wAzk1RX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTdzZWVrb2ZmRXhOU184aW9zX2Jhc2U3c2Vla2RpckVqAIdQU19aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU3c2Vla3Bvc0VOU180ZnBvc0kxMV9fbWJzdGF0ZV90RUVqAIlQOF9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU0c3luY0V2ANwQPV9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU5c2hvd21hbnljRXYA3BA8X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTZ4c2dldG5FUHdsAJZRJV9aTlN0M19fMjExY2hhcl90cmFpdHNJd0U0Y29weUVQd1BLd20Al1FBX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTVnYnVtcEI2djE1MDA3RWkAmFEpX1pOU3QzX18yMTFjaGFyX3RyYWl0c0l3RTEydG9fY2hhcl90eXBlRWoA2TB0X1pOU3QzX18yNmNvcHlfbkI2djE1MDA3SVBLd21Qd0VFTlNfOWVuYWJsZV9pZklYc3IzM19faXNfY3BwMTdfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcklUX0VFNXZhbHVlRVQxX0U0dHlwZUVTNV9UMF9TNl8AmVE9X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTl1bmRlcmZsb3dFdgDSTR9fWk5TdDNfXzIxMWNoYXJfdHJhaXRzSXdFM2VvZkV2ANNNOV9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU1dWZsb3dFdgCaUShfWk5TdDNfXzIxMWNoYXJfdHJhaXRzSXdFMTF0b19pbnRfdHlwZUV3ANkwPV9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU5cGJhY2tmYWlsRWoAhD09X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTZ4c3B1dG5FUEt3bACbUTxfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFOG92ZXJmbG93RWoAhD0zX1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVEMkV2AM9NM19aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRDFFdgCRUDJfWlRUTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQPIEDtfWlR2MF9uMTJfTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRDFFdgCSUDNfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUQwRXYAk1A7X1pUdjBfbjEyX05TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUQwRXYAlFA+X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU2c2VudHJ5QzJFUlMzX2IAnFE6X1pOS1N0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRTRnb29kQjZ2MTUwMDdFdgCWUDlfWk5LU3QzX18yOWJhc2ljX2lvc0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFM3RpZUI2djE1MDA3RXYAl1A3X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU1Zmx1c2hFdgCdUTxfWk5TdDNfXzI5dXNlX2ZhY2V0QjZ2MTUwMDdJTlNfNWN0eXBlSXdFRUVFUktUX1JLTlNfNmxvY2FsZUUAnlFaX1pOU3QzX18yMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVDMkI2djE1MDA3RVJOU18xM2Jhc2ljX2lzdHJlYW1Jd1MyX0VFAJ9RQV9aTlN0M19fMjE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFQzJCNnYxNTAwN0V2ALRLUV9aTlN0M19fMmVxQjZ2MTUwMDdJd05TXzExY2hhcl90cmFpdHNJd0VFRUViUktOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJVF9UMF9FRVM4XwCgUUJfWk5LU3QzX18yMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVkZUI2djE1MDA3RXYAoVEhX1pOS1N0M19fMjVjdHlwZUl3RTJpc0I2djE1MDA3RW13AKJRQV9aTlN0M19fMjE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFcHBCNnYxNTAwN0V2AKNRPV9aTlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRThzZXRzdGF0ZUI2djE1MDA3RWoAn1A7X1pOS1N0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRTVyZGJ1ZkI2djE1MDA3RXYApSE9X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU2c2VudHJ5QzFFUlMzXwDVUURfWk5LU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU2c2VudHJ5Y3ZiQjZ2MTUwMDdFdgCoPkNfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFN3B1YnN5bmNCNnYxNTAwN0V2AKFQOl9aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNnNlbnRyeUQxRXYA1lEWX1pOU3QzX18yNWN0eXBlSXdFMmlkRQPHEEpfWk5LU3QzX18yMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUU1ZXF1YWxCNnYxNTAwN0VSS1MzXwCkUUFfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNXNnZXRjQjZ2MTUwMDdFdgClUUJfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNnNidW1wY0I2djE1MDA3RXYAplFOX1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVyc0VQTlNfMTViYXNpY19zdHJlYW1idWZJd1MyX0VFAKdRPl9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNnNlbnRyeUMxRVJTM19iAJxRRF9aTktTdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRTZzZW50cnljdmJCNnYxNTAwN0V2AKg+KV9aTlN0M19fMjExY2hhcl90cmFpdHNJd0UxMWVxX2ludF90eXBlRWpqANgQQV9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU1c3B1dGNCNnYxNTAwN0V3AKhRNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFcnNFUmIAqVFgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0lid05TXzExY2hhcl90cmFpdHNJd0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfAKpRbl9aTlN0M19fMjl1c2VfZmFjZXRCNnYxNTAwN0lOU183bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVFRVJLVF9SS05TXzZsb2NhbGVFAKtRal9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUmIArFA0X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVyc0VScwCsUXRfWk5TdDNfXzIzOF9faW5wdXRfYXJpdGhtZXRpY193aXRoX251bWVyaWNfbGltaXRzQjZ2MTUwMDdJc3dOU18xMWNoYXJfdHJhaXRzSXdFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwCtUWpfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzZ2V0QjZ2MTUwMDdFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJsAK9QNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFcnNFUnQArlFgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0l0d05TXzExY2hhcl90cmFpdHNJd0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfAK9Ral9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUnQAtFA0X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVyc0VSaQCwUXRfWk5TdDNfXzIzOF9faW5wdXRfYXJpdGhtZXRpY193aXRoX251bWVyaWNfbGltaXRzQjZ2MTUwMDdJaXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwCxUTRfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRXJzRVJqALJRYF9aTlN0M19fMjE4X19pbnB1dF9hcml0aG1ldGljQjZ2MTUwMDdJandOU18xMWNoYXJfdHJhaXRzSXdFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwCzUWtfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzZ2V0QjZ2MTUwMDdFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalM4XwC7UDRfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRXJzRVJsALRRYF9aTlN0M19fMjE4X19pbnB1dF9hcml0aG1ldGljQjZ2MTUwMDdJbHdOU18xMWNoYXJfdHJhaXRzSXdFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwC1UTRfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRXJzRVJtALZRYF9aTlN0M19fMjE4X19pbnB1dF9hcml0aG1ldGljQjZ2MTUwMDdJbXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwC3UWpfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzZ2V0QjZ2MTUwMDdFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJtAMBQNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFcnNFUngAuFFgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0l4d05TXzExY2hhcl90cmFpdHNJd0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfALlRal9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUngAw1A0X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVyc0VSeQC6UWBfWk5TdDNfXzIxOF9faW5wdXRfYXJpdGhtZXRpY0I2djE1MDA3SXl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRVJOU18xM2Jhc2ljX2lzdHJlYW1JVDBfVDFfRUVTN19SVF8Au1FqX1pOS1N0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFM2dldEI2djE1MDA3RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSeQDGUDRfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRXJzRVJmALxRYF9aTlN0M19fMjE4X19pbnB1dF9hcml0aG1ldGljQjZ2MTUwMDdJZndOU18xMWNoYXJfdHJhaXRzSXdFRUVFUk5TXzEzYmFzaWNfaXN0cmVhbUlUMF9UMV9FRVM3X1JUXwC9UWpfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzZ2V0QjZ2MTUwMDdFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJmAMlQNF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFcnNFUmQAvlFgX1pOU3QzX18yMThfX2lucHV0X2FyaXRobWV0aWNCNnYxNTAwN0lkd05TXzExY2hhcl90cmFpdHNJd0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzdfUlRfAL9Ral9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUmQAzFA0X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVyc0VSZQDAUWBfWk5TdDNfXzIxOF9faW5wdXRfYXJpdGhtZXRpY0I2djE1MDA3SWV3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRVJOU18xM2Jhc2ljX2lzdHJlYW1JVDBfVDFfRUVTN19SVF8AwVFqX1pOS1N0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFM2dldEI2djE1MDA3RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSZQDPUDVfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRXJzRVJQdgDCUWFfWk5TdDNfXzIxOF9faW5wdXRfYXJpdGhtZXRpY0I2djE1MDA3SVB2d05TXzExY2hhcl90cmFpdHNJd0VFRUVSTlNfMTNiYXNpY19pc3RyZWFtSVQwX1QxX0VFUzhfUlRfAMNRa19aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNnZXRCNnYxNTAwN0VTNF9TNF9STlNfOGlvc19iYXNlRVJqUlB2ANJQNV9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFM2dldEV2AMRRPV9aTktTdDNfXzI5YmFzaWNfaW9zSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU3cmRzdGF0ZUI2djE1MDA3RXYAoxs4X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUUzZ2V0RVB3bHcAxVEfX1pOU3QzX18yMTFjaGFyX3RyYWl0c0l3RTJlcUV3dwDYEFFfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRTNnZXRFUk5TXzE1YmFzaWNfc3RyZWFtYnVmSXdTMl9FRXcAxlE8X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU3Z2V0bGluZUVQd2x3AMdROV9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNmlnbm9yZUVsagDIUTZfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRTRwZWVrRXYAyVE4X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU0cmVhZEVQd2wAylFDX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTVzZ2V0bkI2djE1MDA3RVB3bADaUDxfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRThyZWFkc29tZUVQd2wAy1FEX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRThpbl9hdmFpbEI2djE1MDA3RXYAzFE5X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU3cHV0YmFja0V3AM1ROl9aTlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRTVjbGVhckI2djE1MDA3RWoA3lBFX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTlzcHV0YmFja2NCNnYxNTAwN0V3AM5RN19aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNXVuZ2V0RXYAz1FDX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTdzdW5nZXRjQjZ2MTUwMDdFdgDQUTZfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRTRzeW5jRXYA0VE3X1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU1dGVsbGdFdgDSUV1fWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFMTBwdWJzZWVrb2ZmQjZ2MTUwMDdFeE5TXzhpb3NfYmFzZTdzZWVrZGlyRWoA5FBOX1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU1c2Vla2dFTlNfNGZwb3NJMTFfX21ic3RhdGVfdEVFANNRX19aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUUxMHB1YnNlZWtwb3NCNnYxNTAwN0VOU180ZnBvc0kxMV9fbWJzdGF0ZV90RUVqAOZQTF9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNXNlZWtnRXhOU184aW9zX2Jhc2U3c2Vla2RpckUA1FEzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVEMkV2AM9NM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRDFFdgDqUDJfWlRUTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQPGEDtfWlR2MF9uMTJfTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRDFFdgDrUDNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUQwRXYA7FA7X1pUdjBfbjEyX05TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUQwRXYA7VA9X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU2c2VudHJ5QzJFUlMzXwDVUTpfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRTZzZW50cnlEMkV2ANZRM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFbHNFYgDXUW5fWk5TdDNfXzI5dXNlX2ZhY2V0QjZ2MTUwMDdJTlNfN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFRUVSS1RfUktOU182bG9jYWxlRQDYUVpfWk5TdDNfXzIxOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUMyQjZ2MTUwMDdFUk5TXzEzYmFzaWNfb3N0cmVhbUl3UzJfRUUAn1E6X1pOS1N0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRTRmaWxsQjZ2MTUwMDdFdgDZUWVfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzcHV0QjZ2MTUwMDdFUzRfUk5TXzhpb3NfYmFzZUV3YgDzUEdfWk5LU3QzX18yMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUU2ZmFpbGVkQjZ2MTUwMDdFdgD0UEhfWk5TdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTJpZEUDxRA7X1pOS1N0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRTV3aWRlbkI2djE1MDA3RWMA2lEzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVsc0VzANtRZV9aTktTdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNwdXRCNnYxNTAwN0VTNF9STlNfOGlvc19iYXNlRXdsAPdQM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFbHNFdADcUWVfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzcHV0QjZ2MTUwMDdFUzRfUk5TXzhpb3NfYmFzZUV3bQD5UDNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRWxzRWkA3VEzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVsc0VqANxRM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFbHNFbADeUTNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRWxzRW0A3FEzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVsc0V4AN9RZV9aTktTdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNwdXRCNnYxNTAwN0VTNF9STlNfOGlvc19iYXNlRXd4AP1QM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFbHNFeQDgUWVfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzcHV0QjZ2MTUwMDdFUzRfUk5TXzhpb3NfYmFzZUV3eQD/UDNfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRWxzRWYA4VFlX1pOS1N0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFM3B1dEI2djE1MDA3RVM0X1JOU184aW9zX2Jhc2VFd2QAgVEzX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVsc0VkAOJRM19aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFbHNFZQDjUWVfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzcHV0QjZ2MTUwMDdFUzRfUk5TXzhpb3NfYmFzZUV3ZQCEUTVfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRWxzRVBLdgDkUWdfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzcHV0QjZ2MTUwMDdFUzRfUk5TXzhpb3NfYmFzZUV3UEt2AIZRTl9aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFbHNFUE5TXzE1YmFzaWNfc3RyZWFtYnVmSXdTMl9FRQDlUVxfWk5TdDNfXzIxOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUMyQjZ2MTUwMDdFUE5TXzE1YmFzaWNfc3RyZWFtYnVmSXdTMl9FRQC8S0FfWk5TdDNfXzIxOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRWRlQjZ2MTUwMDdFdgDZMEFfWk5TdDNfXzIxOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRWFTQjZ2MTUwMDdFdwDmUUFfWk5TdDNfXzIxOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRXBwQjZ2MTUwMDdFdgDZMDVfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRTNwdXRFdwDnUTpfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRTV3cml0ZUVQS3dsAOhRRF9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU1c3B1dG5CNnYxNTAwN0VQS3dsAItRSV9aTlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUMyRU9TNV8A6VFFX1pUVk5TdDNfXzIxNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFA8QQTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTRkYXRhQjZ2MTUwMDdFdgD6TEJfWk5LU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTVlYmFja0I2djE1MDA3RXYA1wZBX1pOS1N0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0Z3B0ckI2djE1MDA3RXYAgQpCX1pOS1N0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1ZWdwdHJCNnYxNTAwN0V2AKMbQl9aTktTdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNXBiYXNlQjZ2MTUwMDdFdgD9T0FfWk5LU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTRwcHRyQjZ2MTUwMDdFdgClIUJfWk5LU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTVlcHB0ckI2djE1MDA3RXYA8jZHX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTRzZXRnQjZ2MTUwMDdFUGNTNF9TNF8A6lFEX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTRzZXRwQjZ2MTUwMDdFUGNTNF8A61FDX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTdfX3BidW1wQjZ2MTUwMDdFbADsUUNfWk5LU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTZnZXRsb2NCNnYxNTAwN0V2AO1RUF9aTlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU4cHViaW1idWVCNnYxNTAwN0VSS05TXzZsb2NhbGVFAO5RSV9aTlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRWFTRU9TNV8A71FMX1pOU3QzX18yMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNHN3YXBFUlM1XwDwUVFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU0c3dhcEI2djE1MDA3RVJTNV8A8VFtX1pOU3QzX18yMjVfX2RlYnVnX2RiX2ludmFsaWRhdGVfYWxsQjZ2MTUwMDdJTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRUVFdlBUXwCRKcABX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU1X19yZXBFRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzlfRUU1dmFsdWVFdkU0dHlwZUVSUzlfU0NfAPJRPl9aTlN0M19fMjE2X19zd2FwX2FsbG9jYXRvckI2djE1MDA3SU5TXzlhbGxvY2F0b3JJY0VFRUV2UlRfUzRfAJERSV9aTktTdDNfXzIxNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUzc3RyRXYA81FZX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTEzZ2V0X2FsbG9jYXRvckI2djE1MDA3RXYAkSlZX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFQzJCNnYxNTAwN0lQY3ZFRVRfUzhfUktTNF8A8U1PX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFQzJCNnYxNTAwN0VSS1M0XwD0UZMBX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNl9faW5pdElQY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUzlfUzlfAPNNZF9aTlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTNzdHJFUktOU18xMmJhc2ljX3N0cmluZ0ljUzJfUzRfRUUA9VFQX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNnJlc2l6ZUI2djE1MDA3RW0A9lFBX1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTVwYnVtcEI2djE1MDA3RWkA7FFJX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNnJlc2l6ZUVtYwDYXU5fWk5TdDNfXzIxNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU5dW5kZXJmbG93RXYA91FOX1pOU3QzX18yMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFOXBiYWNrZmFpbEVpAPhRI19aTlN0M19fMjExY2hhcl90cmFpdHNJY0U3bm90X2VvZkVpAPlRTV9aTlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRThvdmVyZmxvd0VpAPpRJF9aTlN0M19fMjNtYXhCNnYxNTAwN0lQY0VFUktUX1M0X1M0XwDmTTpfWk5TdDNfXzIzbWF4QjZ2MTUwMDdJUGNOU182X19sZXNzSVMxX1MxX0VFRUVSS1RfUzZfUzZfVDBfAOdNYl9aTlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTdzZWVrb2ZmRXhOU184aW9zX2Jhc2U3c2Vla2RpckVqAPtRTF9aTlN0M19fMjE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRWFTRU9TNV8A/FE3X1pOU3QzX18yMTRiYXNpY19pb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFYVNFT1MzXwD9UUJfWk5TdDNfXzIxNGJhc2ljX2lvc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0c3dhcEI2djE1MDA3RVJTM18A/lFNX1pOU3QzX18yMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRWFTRU9TNV8A/1E2X1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVhU0VPUzNfAIBSQV9aTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNHN3YXBCNnYxNTAwN0VSUzNfAIFSTV9aTlN0M19fMjE5YmFzaWNfaXN0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVhU0VPUzVfAIJSNl9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFYVNFT1MzXwCDUkFfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTRzd2FwQjZ2MTUwMDdFUlMzXwCEUjpfWk5TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0b3BlbkVQS2NqAIVSOV9aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNG9wZW5FUEtjagCGUkJfWk5TdDNfXzIxM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTE1X19tYWtlX21kc3RyaW5nRWoAh1JiX1pOU3QzX18yMTRiYXNpY19pZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNG9wZW5FUktOU18xMmJhc2ljX3N0cmluZ0ljUzJfTlNfOWFsbG9jYXRvckljRUVFRWoAiFJhX1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0b3BlbkVSS05TXzEyYmFzaWNfc3RyaW5nSWNTMl9OU185YWxsb2NhdG9ySWNFRUVFagCJUjpfWk5TdDNfXzIxNGJhc2ljX29mc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0b3BlbkVQS2NqAIpSYl9aTlN0M19fMjE0YmFzaWNfb2ZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTRvcGVuRVJLTlNfMTJiYXNpY19zdHJpbmdJY1MyX05TXzlhbGxvY2F0b3JJY0VFRUVqAItSM19aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzJFdgCMUjJfWlRWTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQPDEElfWk5TdDNfXzI5aGFzX2ZhY2V0QjZ2MTUwMDdJTlNfN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUVFRWJSS05TXzZsb2NhbGVFAI1STF9aTlN0M19fMjl1c2VfZmFjZXRCNnYxNTAwN0lOU183Y29kZWN2dEljYzExX19tYnN0YXRlX3RFRUVFUktUX1JLTlNfNmxvY2FsZUUAjlI8X1pOS1N0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEUxM2Fsd2F5c19ub2NvbnZCNnYxNTAwN0V2AI9SJl9aTlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEUyaWRFA8IQJV9aTktTdDNfXzI2bG9jYWxlOWhhc19mYWNldEVSTlMwXzJpZEUA+FY2X1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVDMkVPUzNfAJBSM19aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDJFdgCRUjdfWk5TdDNfXzIxM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTVjbG9zZUV2AJJSBl9aZGFQdgDiQJUBX1pOU3QzX18yMTB1bmlxdWVfcHRySThfSU9fRklMRVBGaVBTMV9FRUMyQjZ2MTUwMDdJTGIxRXZFRVMyX05TXzE2X19kZXBlbmRlbnRfdHlwZUlOU18yN19fdW5pcXVlX3B0cl9kZWxldGVyX3NmaW5hZUlTNF9FRVhUX0VFMjBfX2dvb2RfcnZhbF9yZWZfdHlwZUUAk1I6X1pOU3QzX18yMTB1bmlxdWVfcHRySThfSU9fRklMRVBGaVBTMV9FRTdyZWxlYXNlQjZ2MTUwMDdFdgC5PzRfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJOF9JT19GSUxFUEZpUFMxX0VFRDJCNnYxNTAwN0V2AJRSM19aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgCVUjNfWk5TdDNfXzIxM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYAkVI5X1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0c3dhcEVSUzNfAJZSgwFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SVBLY0VFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVM0X0VFNXZhbHVlRXZFNHR5cGVFUlM0X1M3XwCMSooBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lQOF9JT19GSUxFRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzRfRUU1dmFsdWVFdkU0dHlwZUVSUzRfUzdfAIxKnwFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SVBLTlNfN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUVFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTN19FRTV2YWx1ZUV2RTR0eXBlRVJTN19TQV8AjEqNAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJMTFfX21ic3RhdGVfdEVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVMzX0VFNXZhbHVlRXZFNHR5cGVFUlMzX1M2XwCXUoEBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0liRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzJfRUU1dmFsdWVFdkU0dHlwZUVSUzJfUzVfAItKSl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUDhfSU9fRklMRVBGaVMyX0VFQzJCNnYxNTAwN0lSUzJfUzRfRUVPVF9PVDBfAJhSP19aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUDhfSU9fRklMRVBGaVMyX0VFNWZpcnN0QjZ2MTUwMDdFdgDZMDpfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJOF9JT19GSUxFUEZpUFMxX0VFNXJlc2V0QjZ2MTUwMDdFUzJfAJlSO19aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFOXVuZGVyZmxvd0V2AJpSPl9aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFMTFfX3JlYWRfbW9kZUV2AJtSRl9aTktTdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFMmluQjZ2MTUwMDdFUlMxX1BLY1M1X1JTNV9QY1M3X1JTN18AnFIlX1pOU3QzX18yMTZfX3Rocm93X2JhZF9jYXN0QjZ2MTUwMDdFdgCdUhJfWk5TdDhiYWRfY2FzdEQxRXYA2TASX1pOU3Q4YmFkX2Nhc3RDMUV2AJ9iO19aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFOXBiYWNrZmFpbEVpAJ5SOl9aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFOG92ZXJmbG93RWkAn1I/X1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUUxMl9fd3JpdGVfbW9kZUV2AKBSR19aTktTdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFM291dEI2djE1MDA3RVJTMV9QS2NTNV9SUzVfUGNTN19SUzdfAKFSOl9aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnNldGJ1ZkVQY2wAolIFX1puYW0A4E0jX1pOU3QzX18yM21heEI2djE1MDA3SWxFRVJLVF9TM19TM18Ao1I1X1pOU3QzX18yM21heEI2djE1MDA3SWxOU182X19sZXNzSWxsRUVFRVJLVF9TNV9TNV9UMF8ApFJPX1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU3c2Vla29mZkV4TlNfOGlvc19iYXNlN3NlZWtkaXJFagClUjZfWk5LU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RThlbmNvZGluZ0I2djE1MDA3RXYAoVAvX1pOU3QzX18yNGZwb3NJMTFfX21ic3RhdGVfdEU1c3RhdGVCNnYxNTAwN0VTMV8AplJRX1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU3c2Vla3Bvc0VOU180ZnBvc0kxMV9fbWJzdGF0ZV90RUVqAKdSLl9aTktTdDNfXzI0ZnBvc0kxMV9fbWJzdGF0ZV90RTVzdGF0ZUI2djE1MDA3RXYAqFI2X1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0c3luY0V2AKlSQV9aTktTdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFN3Vuc2hpZnRCNnYxNTAwN0VSUzFfUGNTNF9SUzRfAKpSPl9aTktTdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFNmxlbmd0aEI2djE1MDA3RVJTMV9QS2NTNV9tAKtSQ19aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNWltYnVlRVJLTlNfNmxvY2FsZUUArFJGX1pOU3QzX18yMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRDJFdgCtUkZfWk5TdDNfXzIxNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMEV2AK5SbF9aTlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTdzZWVrcG9zQjZ2MTUwMDdFTlNfNGZwb3NJMTFfX21ic3RhdGVfdEVFagCvUklfWk5TdDNfXzIxOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMUV2ALBSSF9aVFROU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQPBEElfWk5TdDNfXzIxOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMkV2ALFSSV9aTlN0M19fMjE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQwRXYAslJOX1pUaG44X05TdDNfXzIxOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMUV2ALNSTl9aVGhuOF9OU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRDBFdgC0UlFfWlR2MF9uMTJfTlN0M19fMjE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQxRXYAtVJRX1pUdjBfbjEyX05TdDNfXzIxOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMEV2ALZSSl9aTlN0M19fMjE5YmFzaWNfb3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMUV2ALdSSV9aVFROU3QzX18yMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUDwBBKX1pOU3QzX18yMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQyRXYAuFJKX1pOU3QzX18yMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQwRXYAuVJSX1pUdjBfbjEyX05TdDNfXzIxOWJhc2ljX29zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRDFFdgC6UlJfWlR2MF9uMTJfTlN0M19fMjE5YmFzaWNfb3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMEV2ALtSSl9aTlN0M19fMjE5YmFzaWNfaXN0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMUV2ALxSSV9aVFROU3QzX18yMTliYXNpY19pc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUDvxBKX1pOU3QzX18yMTliYXNpY19pc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQyRXYAvVJKX1pOU3QzX18yMTliYXNpY19pc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQwRXYAvlJSX1pUdjBfbjEyX05TdDNfXzIxOWJhc2ljX2lzdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRDFFdgC/UlJfWlR2MF9uMTJfTlN0M19fMjE5YmFzaWNfaXN0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVEMEV2AMBSNF9aTlN0M19fMjE0YmFzaWNfaWZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYAwVIzX1pUVE5TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA74QNF9aTlN0M19fMjE0YmFzaWNfaWZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQyRXYAwlI0X1pOU3QzX18yMTRiYXNpY19pZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgDDUjxfWlR2MF9uMTJfTlN0M19fMjE0YmFzaWNfaWZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYAxFI8X1pUdjBfbjEyX05TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMEV2AMVSNF9aTlN0M19fMjE0YmFzaWNfb2ZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYAxlIzX1pUVE5TdDNfXzIxNGJhc2ljX29mc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA70QNF9aTlN0M19fMjE0YmFzaWNfb2ZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQyRXYAx1I0X1pOU3QzX18yMTRiYXNpY19vZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRDBFdgDIUjxfWlR2MF9uMTJfTlN0M19fMjE0YmFzaWNfb2ZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUQxRXYAyVI8X1pUdjBfbjEyX05TdDNfXzIxNGJhc2ljX29mc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVEMEV2AMpSKV9aTlN0M19fMjRjb3B5QjZ2MTUwMDdJUEt3UHdFRVQwX1RfUzVfUzRfAOpLQF9aTlN0M19fMjZfX2NvcHlCNnYxNTAwN0lQS3dTMl9Qd0xpMEVFRU5TXzRwYWlySVRfVDFfRUVTNV9UMF9TNl8A60sxX1pOU3QzX18yMTRfX3Vud3JhcF9yYW5nZUI2djE1MDA3SVBLd1MyX0VFRGFUX1QwXwDsS3dfWk5TdDNfXzIxM19fdW53cmFwX2l0ZXJCNnYxNTAwN0lQd05TXzE4X191bndyYXBfaXRlcl9pbXBsSVMxX0xiMUVFRUxpMEVFRURUY2xzclQwXzhfX3Vud3JhcGNsc3Izc3RkRTdkZWNsdmFsSVRfRUVFRVM1XwDZMEBfWk5TdDNfXzIxMV9fY29weV9pbXBsQjZ2MTUwMDdJS3d3dkVFTlNfNHBhaXJJUFRfUFQwX0VFUzRfUzRfUzZfAO1LNl9aTlN0M19fMjE0X19yZXdyYXBfcmFuZ2VCNnYxNTAwN0lQS3dTMl9TMl9FRVQwX1MzX1QxXwDuS1FfWk5TdDNfXzIxM19fcmV3cmFwX2l0ZXJCNnYxNTAwN0lQd1MxX05TXzE4X191bndyYXBfaXRlcl9pbXBsSVMxX0xiMUVFRUVFVF9TNF9UMF8A70tmX1pOU3QzX18yOW1ha2VfcGFpckI2djE1MDA3SVBLd1B3RUVOU180cGFpcklOU18xOF9fdW53cmFwX3JlZl9kZWNheUlUX0U0dHlwZUVOUzVfSVQwX0U0dHlwZUVFRU9TNl9PUzlfAPBLPl9aTlN0M19fMjE5X191bndyYXBfcmFuZ2VfaW1wbElQS3dTMl9FOF9fdW53cmFwQjZ2MTUwMDdFUzJfUzJfAPFLOl9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSVB3TGIxRUU4X191bndyYXBCNnYxNTAwN0VTMV8A2TA0X1pOU3QzX18yNHBhaXJJUEt3UHdFQzJCNnYxNTAwN0lTMl9TM19MUHYwRUVFT1RfT1QwXwDySz5fWk5TdDNfXzIxOV9fdW53cmFwX3JhbmdlX2ltcGxJUEt3UzJfRThfX3Jld3JhcEI2djE1MDA3RVMyX1MyXwDzSz1fWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElQd0xiMUVFOF9fcmV3cmFwQjZ2MTUwMDdFUzFfUzFfAPRLeF9aTlN0M19fMjEzX191bndyYXBfaXRlckI2djE1MDA3SVBLd05TXzE4X191bndyYXBfaXRlcl9pbXBsSVMyX0xiMUVFRUxpMEVFRURUY2xzclQwXzhfX3Vud3JhcGNsc3Izc3RkRTdkZWNsdmFsSVRfRUVFRVM2XwDZMDVfWk5TdDNfXzI0cGFpcklQS3dTMl9FQzJCNnYxNTAwN0lTMl9TMl9MUHYwRUVFT1RfT1QwXwDySztfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElQS3dMYjFFRThfX3Vud3JhcEI2djE1MDA3RVMyXwDZMCpfWk5TdDNfXzIxMl9fdG9fYWRkcmVzc0I2djE1MDA3SUt3RUVQVF9TM18A2TApX1pOU3QzX18yMTJfX3RvX2FkZHJlc3NCNnYxNTAwN0l3RUVQVF9TMl8A2TBSX1pOU3QzX18yMTNfX3Jld3JhcF9pdGVyQjZ2MTUwMDdJUEt3UzJfTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzJfTGIxRUVFRUVUX1M1X1QwXwDvSz5fWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElQS3dMYjFFRThfX3Jld3JhcEI2djE1MDA3RVMyX1MyXwD0S1xfWk5TdDNfXzIxNl9fc3dhcF9hbGxvY2F0b3JCNnYxNTAwN0lOU185YWxsb2NhdG9ySWNFRUVFdlJUX1M0X05TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFRQCREU9fWk5TdDNfXzI4ZGlzdGFuY2VCNnYxNTAwN0lQY0VFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzNfUzNfAO9Ncl9aTlN0M19fMjEwX19kaXN0YW5jZUI2djE1MDA3SVBjRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTM19TM19OU18yNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRQDyTStfWk5LU3QzX18yNl9fbGVzc0lQY1MxX0VjbEI2djE1MDA3RVJLUzFfUzRfAKlJUF9aTktTdDNfXzIxOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRTE0X190ZXN0X2Zvcl9lb2ZCNnYxNTAwN0V2AMtSSF9aTlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFMmlkRQO8EDdfWk5TdDNfXzIyM19fbGliY3BwX251bWVyaWNfbGltaXRzSXNMYjFFRTNtaW5CNnYxNTAwN0V2ALBQN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJc0xiMUVFM21heEI2djE1MDA3RXYAsVA3X1pOU3QzX18yMjNfX2xpYmNwcF9udW1lcmljX2xpbWl0c0lpTGIxRUUzbWluQjZ2MTUwMDdFdgC3UDdfWk5TdDNfXzIyM19fbGliY3BwX251bWVyaWNfbGltaXRzSWlMYjFFRTNtYXhCNnYxNTAwN0V2ALhQI19aTktTdDNfXzI1Y3R5cGVJY0U1d2lkZW5CNnYxNTAwN0VjAMxSUF9aTktTdDNfXzIxOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRTE0X190ZXN0X2Zvcl9lb2ZCNnYxNTAwN0V2AM1SSF9aTlN0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMmlkRQO7ECNfWk5LU3QzX18yNWN0eXBlSXdFNXdpZGVuQjZ2MTUwMDdFYwDOUjxfWk5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU0c3dhcEI2djE1MDA3RVJTM18Az1IcX1pOU3QzX18yOGlvc19iYXNlNHN3YXBFUlMwXwDsUqsBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lQTlNfMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzdfRUU1dmFsdWVFdkU0dHlwZUVSUzdfU0FfAIxKSl9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQOF9JT19GSUxFTGkwRUxiMEVFQzJCNnYxNTAwN0lSUzJfdkVFT1RfALlLTV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQRmlQOF9JT19GSUxFRUxpMUVMYjBFRUMyQjZ2MTUwMDdJUzRfdkVFT1RfALlLQF9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUDhfSU9fRklMRVBGaVMyX0VFNnNlY29uZEI2djE1MDA3RXYAl09FX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVA4X0lPX0ZJTEVMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwSV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQRmlQOF9JT19GSUxFRUxpMUVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TA0X1pUSU5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQO6EDJfWlRWTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQO5EDJfWlRJTlN0M19fMjEzYmFzaWNfaXN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQO4EDJfWlRWTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQO3EDJfWlRJTlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQO2EDNfWlRWTlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUDtRAzX1pUSU5TdDNfXzIxNGJhc2ljX2lvc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA7QQTl9aVENOU3QzX18yMTRiYXNpY19pb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRTBfTlNfMTNiYXNpY19pc3RyZWFtSWNTMl9FRQOzEE5fWlRDTlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUU4X05TXzEzYmFzaWNfb3N0cmVhbUljUzJfRUUDshA0X1pUSU5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1Zkl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQOxEDJfWlRWTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQOwEDJfWlRJTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQOvEDJfWlRWTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQOuEDJfWlRJTlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQOtEEVfWlRJTlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUDrBAyX1pUSU5TdDNfXzIxM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUUDqxAtX1pUVk5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA6oQLV9aVElOU3QzX18yOWJhc2ljX2lvc0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQOpEC1fWlRTTlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUDqBAVX1pUSU5TdDNfXzI4aW9zX2Jhc2VFA6cQNF9aVFNOU3QzX18yMTViYXNpY19zdHJlYW1idWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUUDphAyX1pUU05TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUDpRApX1pUVk4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UDpBAyX1pUU05TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUDoxAzX1pUU05TdDNfXzIxNGJhc2ljX2lvc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA6IQLV9aVFZOU3QzX18yOWJhc2ljX2lvc0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQOhEC1fWlRJTlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUUDoBAtX1pUU05TdDNfXzI5YmFzaWNfaW9zSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFA58QNF9aVFNOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRUUDnhAyX1pUU05TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUDnRAyX1pUU05TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUDnBBFX1pUU05TdDNfXzIxNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFA5sQSF9aVFZOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQOaEEhfWlRJTlN0M19fMjE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUDmRBkX1pUQ05TdDNfXzIxOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMF9OU18xNGJhc2ljX2lvc3RyZWFtSWNTMl9FRQOYEGNfWlRDTlN0M19fMjE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUwX05TXzEzYmFzaWNfaXN0cmVhbUljUzJfRUUDlxBjX1pUQ05TdDNfXzIxOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFOF9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFA5YQSF9aVFNOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQOVEElfWlRWTlN0M19fMjE5YmFzaWNfb3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFA5QQSV9aVElOU3QzX18yMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUDkxBkX1pUQ05TdDNfXzIxOWJhc2ljX29zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTBfTlNfMTNiYXNpY19vc3RyZWFtSWNTMl9FRQOSEElfWlRTTlN0M19fMjE5YmFzaWNfb3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFA5EQSV9aVFZOU3QzX18yMTliYXNpY19pc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUDkBBJX1pUSU5TdDNfXzIxOWJhc2ljX2lzdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQOPEGRfWlRDTlN0M19fMjE5YmFzaWNfaXN0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMF9OU18xM2Jhc2ljX2lzdHJlYW1JY1MyX0VFA44QSV9aVFNOU3QzX18yMTliYXNpY19pc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUDjRAzX1pUVk5TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA4wQM19aVElOU3QzX18yMTRiYXNpY19pZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQOLEE5fWlRDTlN0M19fMjE0YmFzaWNfaWZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUwX05TXzEzYmFzaWNfaXN0cmVhbUljUzJfRUUDihAzX1pUU05TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA4kQM19aVFZOU3QzX18yMTRiYXNpY19vZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQOIEDNfWlRJTlN0M19fMjE0YmFzaWNfb2ZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUDhxBOX1pUQ05TdDNfXzIxNGJhc2ljX29mc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFMF9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFA4YQM19aVFNOU3QzX18yMTRiYXNpY19vZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQOFEDJfWlRTTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQOEEDVfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzFFdgCCUDlfWk5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzFFUktTM18Ag1A1X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRUMxRXYAlFE5X1pOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRUMxRVJLUzNfAJVRSV9aTlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUMxRU9TNV8A6VEzX1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVDMUV2AIxSNl9aTlN0M19fMjEzYmFzaWNfZmlsZWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzFFT1MzXwCQUiZfWk5LU3QzX18yMTlfX2lvc3RyZWFtX2NhdGVnb3J5NG5hbWVFdgDQUilfWk5LU3QzX18yMTlfX2lvc3RyZWFtX2NhdGVnb3J5N21lc3NhZ2VFaQDRUiJfWk5LU3QzX18yMTJfX2RvX21lc3NhZ2U3bWVzc2FnZUVpAJhfHl9aTlN0M19fMjE3aW9zdHJlYW1fY2F0ZWdvcnlFdgDSUmtfWk5TdDNfXzI4aW9zX2Jhc2U3ZmFpbHVyZUMyRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLTlNfMTBlcnJvcl9jb2RlRQDTUh1fWlRWTlN0M19fMjhpb3NfYmFzZTdmYWlsdXJlRQODEDJfWk5TdDNfXzI4aW9zX2Jhc2U3ZmFpbHVyZUMyRVBLY1JLTlNfMTBlcnJvcl9jb2RlRQDUUi1fWk5TdDNfXzIxMnN5c3RlbV9lcnJvckMyRU5TXzEwZXJyb3JfY29kZUVQS2MAol8eX1pOU3QzX18yOGlvc19iYXNlN2ZhaWx1cmVEMkV2ALhPHl9aTlN0M19fMjhpb3NfYmFzZTdmYWlsdXJlRDBFdgC5Tx5fWk5TdDNfXzI4aW9zX2Jhc2U3ZmFpbHVyZUQxRXYAuE8mX1pOU3QzX18yOGlvc19iYXNlNWltYnVlRVJLTlNfNmxvY2FsZUUA1lIbX1pOU3QzX18yOGlvc19iYXNlNnhhbGxvY0V2ANhSHV9aTlN0M19fMjhpb3NfYmFzZTlfX3hpbmRleF9FA4IQK19aTlN0M19fMjEzX19hdG9taWNfYmFzZUlpTGIxRUVwcEI2djE1MDA3RWkA2VJFX1pOU3QzX18yMTNfX2F0b21pY19iYXNlSWlMYjFFRTlmZXRjaF9hZGRCNnYxNTAwN0VpTlNfMTJtZW1vcnlfb3JkZXJFANpSGl9aTlN0M19fMjhpb3NfYmFzZTVpd29yZEVpANtSGl9aTlN0M19fMjhpb3NfYmFzZTVwd29yZEVpAN5SO19aTlN0M19fMjhpb3NfYmFzZTE3cmVnaXN0ZXJfY2FsbGJhY2tFUEZ2TlMwXzVldmVudEVSUzBfaUVpAN9SFV9aVFZOU3QzX18yOGlvc19iYXNlRQOBEBZfWk5TdDNfXzI4aW9zX2Jhc2VEMEV2APtPFl9aTlN0M19fMjhpb3NfYmFzZUQxRXYA4FImX1pOU3QzX18yMTVfX3Rocm93X2ZhaWx1cmVCNnYxNTAwN0VQS2MA4VJrX1pOU3QzX18yMTBlcnJvcl9jb2RlQzJCNnYxNTAwN0lOU183aW9fZXJyY0VFRVRfUE5TXzllbmFibGVfaWZJWHNyMThpc19lcnJvcl9jb2RlX2VudW1JUzNfRUU1dmFsdWVFdkU0dHlwZUUA4lIyX1pOU3QzX18yOGlvc19iYXNlN2ZhaWx1cmVDMUVQS2NSS05TXzEwZXJyb3JfY29kZUUA1FIdX1pUSU5TdDNfXzI4aW9zX2Jhc2U3ZmFpbHVyZUUDgBAaX1pOU3QzX18yOGlvc19iYXNlNGluaXRFUHYA41KnAV9aTlN0M19fMjEwdW5pcXVlX3B0cklQRnZOU184aW9zX2Jhc2U1ZXZlbnRFUlMxX2lFUEZ2UHZFRUMyQjZ2MTUwMDdJTGIxRXZFRVBTNV9OU18xNl9fZGVwZW5kZW50X3R5cGVJTlNfMjdfX3VuaXF1ZV9wdHJfZGVsZXRlcl9zZmluYWVJUzhfRUVYVF9FRTIwX19nb29kX3J2YWxfcmVmX3R5cGVFAOVSigFfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJaVBGdlB2RUVDMkI2djE1MDA3SUxiMUV2RUVQaU5TXzE2X19kZXBlbmRlbnRfdHlwZUlOU18yN19fdW5pcXVlX3B0cl9kZWxldGVyX3NmaW5hZUlTM19FRVhUX0VFMjBfX2dvb2RfcnZhbF9yZWZfdHlwZUUA5lKKAV9aTlN0M19fMjEwdW5pcXVlX3B0cklsUEZ2UHZFRUMyQjZ2MTUwMDdJTGIxRXZFRVBsTlNfMTZfX2RlcGVuZGVudF90eXBlSU5TXzI3X191bmlxdWVfcHRyX2RlbGV0ZXJfc2ZpbmFlSVMzX0VFWFRfRUUyMF9fZ29vZF9ydmFsX3JlZl90eXBlRQDnUo4BX1pOU3QzX18yMTB1bmlxdWVfcHRySVB2UEZ2UzFfRUVDMkI2djE1MDA3SUxiMUV2RUVQUzFfTlNfMTZfX2RlcGVuZGVudF90eXBlSU5TXzI3X191bmlxdWVfcHRyX2RlbGV0ZXJfc2ZpbmFlSVMzX0VFWFRfRUUyMF9fZ29vZF9ydmFsX3JlZl90eXBlRQDoUkxfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJUEZ2TlNfOGlvc19iYXNlNWV2ZW50RVJTMV9pRVBGdlB2RUU1cmVzZXRCNnYxNTAwN0VQUzVfAOlSR19aTktTdDNfXzIxMHVuaXF1ZV9wdHJJUEZ2TlNfOGlvc19iYXNlNWV2ZW50RVJTMV9pRVBGdlB2RUVjdmJCNnYxNTAwN0V2AIscL19aTlN0M19fMjEwdW5pcXVlX3B0cklpUEZ2UHZFRTVyZXNldEI2djE1MDA3RVBpAOlSLF9aTktTdDNfXzIxMHVuaXF1ZV9wdHJJaVBGdlB2RUVjdmJCNnYxNTAwN0V2AIscL19aTlN0M19fMjEwdW5pcXVlX3B0cklsUEZ2UHZFRTVyZXNldEI2djE1MDA3RVBsAOlSLF9aTktTdDNfXzIxMHVuaXF1ZV9wdHJJbFBGdlB2RUVjdmJCNnYxNTAwN0V2AIscM19aTlN0M19fMjEwdW5pcXVlX3B0cklQdlBGdlMxX0VFNXJlc2V0QjZ2MTUwMDdFUFMxXwDpUi5fWk5LU3QzX18yMTB1bmlxdWVfcHRySVB2UEZ2UzFfRUVjdmJCNnYxNTAwN0V2AIscS19aTlN0M19fMjEwdW5pcXVlX3B0cklQRnZOU184aW9zX2Jhc2U1ZXZlbnRFUlMxX2lFUEZ2UHZFRTdyZWxlYXNlQjZ2MTUwMDdFdgC5PzBfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJaVBGdlB2RUU3cmVsZWFzZUI2djE1MDA3RXYAuT8wX1pOU3QzX18yMTB1bmlxdWVfcHRySWxQRnZQdkVFN3JlbGVhc2VCNnYxNTAwN0V2ALk/Ml9aTlN0M19fMjEwdW5pcXVlX3B0cklQdlBGdlMxX0VFN3JlbGVhc2VCNnYxNTAwN0V2ALk/LF9aTlN0M19fMjEwdW5pcXVlX3B0cklQdlBGdlMxX0VFRDJCNnYxNTAwN0V2AOpSKl9aTlN0M19fMjEwdW5pcXVlX3B0cklsUEZ2UHZFRUQyQjZ2MTUwMDdFdgDqUipfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJaVBGdlB2RUVEMkI2djE1MDA3RXYA6lJFX1pOU3QzX18yMTB1bmlxdWVfcHRySVBGdk5TXzhpb3NfYmFzZTVldmVudEVSUzFfaUVQRnZQdkVFRDJCNnYxNTAwN0V2AOpSXF9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBGdk5TXzhpb3NfYmFzZTVldmVudEVSUzFfaUVQRnZQdkVFQzJCNnYxNTAwN0lSUzZfUzlfRUVPVF9PVDBfAJhSQV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGlQRnZQdkVFQzJCNnYxNTAwN0lSUzFfUzRfRUVPVF9PVDBfAJhSQV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGxQRnZQdkVFQzJCNnYxNTAwN0lSUzFfUzRfRUVPVF9PVDBfAJhSQ19aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFB2UEZ2UzFfRUVDMkI2djE1MDA3SVJTMl9TNF9FRU9UX09UMF8AmFJRX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUEZ2TlNfOGlvc19iYXNlNWV2ZW50RVJTMV9pRVBGdlB2RUU1Zmlyc3RCNnYxNTAwN0V2ANkwUl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBGdk5TXzhpb3NfYmFzZTVldmVudEVSUzFfaUVQRnZQdkVFNnNlY29uZEI2djE1MDA3RXYAl09SX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBGdk5TXzhpb3NfYmFzZTVldmVudEVSUzFfaUVQRnZQdkVFNWZpcnN0QjZ2MTUwMDdFdgDZMDZfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBpUEZ2UHZFRTVmaXJzdEI2djE1MDA3RXYA2TA3X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQaVBGdlB2RUU2c2Vjb25kQjZ2MTUwMDdFdgCXTzdfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQaVBGdlB2RUU1Zmlyc3RCNnYxNTAwN0V2ANkwNl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGxQRnZQdkVFNWZpcnN0QjZ2MTUwMDdFdgDZMDdfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBsUEZ2UHZFRTZzZWNvbmRCNnYxNTAwN0V2AJdPN19aTktTdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBsUEZ2UHZFRTVmaXJzdEI2djE1MDA3RXYA2TA4X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUHZQRnZTMV9FRTVmaXJzdEI2djE1MDA3RXYA2TA5X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUHZQRnZTMV9FRTZzZWNvbmRCNnYxNTAwN0V2AJdPOV9aTktTdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQdlBGdlMxX0VFNWZpcnN0QjZ2MTUwMDdFdgDZMBxfWk5TdDNfXzI4aW9zX2Jhc2U0bW92ZUVSUzBfAOtSnQFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SVBQRnZOU184aW9zX2Jhc2U1ZXZlbnRFUlMxX2lFRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzhfRUU1dmFsdWVFdkU0dHlwZUVSUzhfU0JfAIxKggFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SVBpRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzNfRUU1dmFsdWVFdkU0dHlwZUVSUzNfUzZfAIxKggFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SVBsRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzNfRUU1dmFsdWVFdkU0dHlwZUVSUzNfUzZfAIxKgwFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SVBQdkVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVM0X0VFNXZhbHVlRXZFNHR5cGVFUlM0X1M3XwCMSiVfWk5TdDNfXzI4aW9zX2Jhc2UxNXN5bmNfd2l0aF9zdGRpb0ViAO9SIl9aTlN0M19fMjE5X19pb3N0cmVhbV9jYXRlZ29yeUQwRXYA4kAvX1pOU3QzX18yMTVtYWtlX2Vycm9yX2NvZGVCNnYxNTAwN0VOU183aW9fZXJyY0UA8FJmX1pOU3QzX18yMjJfX2N4eF9hdG9taWNfZmV0Y2hfYWRkQjZ2MTUwMDdJaUVFVF9QTlNfMjJfX2N4eF9hdG9taWNfYmFzZV9pbXBsSVMxX0VFUzFfTlNfMTJtZW1vcnlfb3JkZXJFAKZHXV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQUEZ2TlNfOGlvc19iYXNlNWV2ZW50RVJTMV9pRUxpMEVMYjBFRUMyQjZ2MTUwMDdJUlM2X3ZFRU9UXwC5S0VfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUEZ2UHZFTGkxRUxiMEVFQzJCNnYxNTAwN0lTM192RUVPVF8AuUtCX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBpTGkwRUxiMEVFQzJCNnYxNTAwN0lSUzFfdkVFT1RfALlLQl9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQbExpMEVMYjBFRUMyQjZ2MTUwMDdJUlMxX3ZFRU9UXwC5S0NfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUFB2TGkwRUxiMEVFQzJCNnYxNTAwN0lSUzJfdkVFT1RfALlLWF9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQUEZ2TlNfOGlvc19iYXNlNWV2ZW50RVJTMV9pRUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBGdlB2RUxpMUVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBZX1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQUEZ2TlNfOGlvc19iYXNlNWV2ZW50RVJTMV9pRUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TA9X1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBpTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMD5fWk5LU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBpTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMD1fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUGxMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwPl9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUGxMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwPl9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQUHZMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwP19aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUFB2TGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMCFfWlRWTlN0M19fMjE5X19pb3N0cmVhbV9jYXRlZ29yeUUD/w8hX1pUSU5TdDNfXzIxOV9faW9zdHJlYW1fY2F0ZWdvcnlFA/4PHV9aTlN0M19fMjhpb3NfYmFzZTlib29sYWxwaGFFA/0PF19aTlN0M19fMjhpb3NfYmFzZTNkZWNFA/wPGV9aTlN0M19fMjhpb3NfYmFzZTVmaXhlZEUD+w8XX1pOU3QzX18yOGlvc19iYXNlM2hleEUD+g8cX1pOU3QzX18yOGlvc19iYXNlOGludGVybmFsRQP5DxhfWk5TdDNfXzI4aW9zX2Jhc2U0bGVmdEUD+A8XX1pOU3QzX18yOGlvc19iYXNlM29jdEUD9w8ZX1pOU3QzX18yOGlvc19iYXNlNXJpZ2h0RQP2Dx9fWk5TdDNfXzI4aW9zX2Jhc2UxMHNjaWVudGlmaWNFA/UPHF9aTlN0M19fMjhpb3NfYmFzZThzaG93YmFzZUUD9A8dX1pOU3QzX18yOGlvc19iYXNlOXNob3dwb2ludEUD8w8bX1pOU3QzX18yOGlvc19iYXNlN3Nob3dwb3NFA/IPGl9aTlN0M19fMjhpb3NfYmFzZTZza2lwd3NFA/EPG19aTlN0M19fMjhpb3NfYmFzZTd1bml0YnVmRQPwDx1fWk5TdDNfXzI4aW9zX2Jhc2U5dXBwZXJjYXNlRQPvDyBfWk5TdDNfXzI4aW9zX2Jhc2UxMWFkanVzdGZpZWxkRQPuDx1fWk5TdDNfXzI4aW9zX2Jhc2U5YmFzZWZpZWxkRQPtDx9fWk5TdDNfXzI4aW9zX2Jhc2UxMGZsb2F0ZmllbGRFA+wPGl9aTlN0M19fMjhpb3NfYmFzZTZiYWRiaXRFA+sPGl9aTlN0M19fMjhpb3NfYmFzZTZlb2ZiaXRFA+oPG19aTlN0M19fMjhpb3NfYmFzZTdmYWlsYml0RQPpDxtfWk5TdDNfXzI4aW9zX2Jhc2U3Z29vZGJpdEUD6A8XX1pOU3QzX18yOGlvc19iYXNlM2FwcEUD5w8XX1pOU3QzX18yOGlvc19iYXNlM2F0ZUUD5g8aX1pOU3QzX18yOGlvc19iYXNlNmJpbmFyeUUD5Q8WX1pOU3QzX18yOGlvc19iYXNlMmluRQPkDxdfWk5TdDNfXzI4aW9zX2Jhc2Uzb3V0RQPjDxlfWk5TdDNfXzI4aW9zX2Jhc2U1dHJ1bmNFA+IPFV9aVFNOU3QzX18yOGlvc19iYXNlRQPhDx1fWlRTTlN0M19fMjhpb3NfYmFzZTdmYWlsdXJlRQPgDxpfWlRJTlN0M19fMjEyc3lzdGVtX2Vycm9yRQPfDyFfWlRTTlN0M19fMjE5X19pb3N0cmVhbV9jYXRlZ29yeUUD3g9rX1pOU3QzX18yOGlvc19iYXNlN2ZhaWx1cmVDMUVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS05TXzEwZXJyb3JfY29kZUUA01IfX1pOU3QzX18yMTlfX3N0YXJ0X3N0ZF9zdHJlYW1zRQPdDxtfWk5TdDNfXzI4aW9zX2Jhc2U0SW5pdEMxRXYAglMbX1pOU3QzX18yOGlvc19iYXNlNEluaXREMUV2ANkwF19aTlN0M19fMjlEb0lPU0luaXRDMkV2APFSM19aTlN0M19fMjEwX19zdGRpbmJ1ZkljRUMyRVA4X0lPX0ZJTEVQMTFfX21ic3RhdGVfdADyUg5fWk5TdDNfXzIzY2luRQPcD1ZfWk5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUMxQjZ2MTUwMDdFUE5TXzE1YmFzaWNfc3RyZWFtYnVmSWNTMl9FRQDzUjRfWk5TdDNfXzIxMV9fc3Rkb3V0YnVmSWNFQzJFUDhfSU9fRklMRVAxMV9fbWJzdGF0ZV90APRSD19aTlN0M19fMjRjb3V0RQPbD1ZfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUMxQjZ2MTUwMDdFUE5TXzE1YmFzaWNfc3RyZWFtYnVmSWNTMl9FRQD1Ug9fWk5TdDNfXzI0Y2VyckUD2g8PX1pOU3QzX18yNGNsb2dFA9kPUV9aTlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRTN0aWVCNnYxNTAwN0VQTlNfMTNiYXNpY19vc3RyZWFtSWNTMl9FRQD2UiBfWk5TdDNfXzI3dW5pdGJ1ZkVSTlNfOGlvc19iYXNlRQD3UjNfWk5TdDNfXzIxMF9fc3RkaW5idWZJd0VDMkVQOF9JT19GSUxFUDExX19tYnN0YXRlX3QA+FIPX1pOU3QzX18yNHdjaW5FA9gPVl9aTlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFQzFCNnYxNTAwN0VQTlNfMTViYXNpY19zdHJlYW1idWZJd1MyX0VFAPlSNF9aTlN0M19fMjExX19zdGRvdXRidWZJd0VDMkVQOF9JT19GSUxFUDExX19tYnN0YXRlX3QA+lIQX1pOU3QzX18yNXdjb3V0RQPXD1ZfWk5TdDNfXzIxM2Jhc2ljX29zdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUMxQjZ2MTUwMDdFUE5TXzE1YmFzaWNfc3RyZWFtYnVmSXdTMl9FRQD7UhBfWk5TdDNfXzI1d2NlcnJFA9YPEF9aTlN0M19fMjV3Y2xvZ0UD1Q9RX1pOU3QzX18yOWJhc2ljX2lvc0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFM3RpZUI2djE1MDA3RVBOU18xM2Jhc2ljX29zdHJlYW1Jd1MyX0VFAPZSG19aVFZOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQPUDzZfWk5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVDMkI2djE1MDA3RXYA/FJUX1pOU3QzX18yOWJhc2ljX2lvc0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNGluaXRCNnYxNTAwN0VQTlNfMTViYXNpY19zdHJlYW1idWZJY1MyX0VFAP1SHF9aVFZOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRUUD0w8hX1pOU3QzX18yOGlvc19iYXNlNHNldGZCNnYxNTAwN0VqAP5SG19aVFZOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQPSD0NfWk5LU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRTZnZXRsb2NCNnYxNTAwN0V2AO1RNl9aTlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUMyQjZ2MTUwMDdFdgD/UlRfWk5TdDNfXzI5YmFzaWNfaW9zSXdOU18xMWNoYXJfdHJhaXRzSXdFRUU0aW5pdEI2djE1MDA3RVBOU18xNWJhc2ljX3N0cmVhbWJ1Zkl3UzJfRUUA/VIcX1pUVk5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRQPRD0xfWk5TdDNfXzI5dXNlX2ZhY2V0QjZ2MTUwMDdJTlNfN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RUVFRVJLVF9SS05TXzZsb2NhbGVFAIBTPF9aTktTdDNfXzI3Y29kZWN2dEl3YzExX19tYnN0YXRlX3RFMTNhbHdheXNfbm9jb252QjZ2MTUwMDdFdgCPUhdfWk5TdDNfXzI5RG9JT1NJbml0RDJFdgCBUxtfWk5TdDNfXzI4aW9zX2Jhc2U0SW5pdEMyRXYAglMXX1pOU3QzX18yOURvSU9TSW5pdEMxRXYA8VIXX1pOU3QzX18yOURvSU9TSW5pdEQxRXYAgVMbX1pOU3QzX18yOGlvc19iYXNlNEluaXREMkV2ANkwHF9aTlN0M19fMjEwX19zdGRpbmJ1ZkljRUQwRXYAhFMsX1pOU3QzX18yMTBfX3N0ZGluYnVmSWNFNWltYnVlRVJLTlNfNmxvY2FsZUUAhVMkX1pOU3QzX18yMjFfX3Rocm93X3J1bnRpbWVfZXJyb3JFUEtjAOdUJF9aTlN0M19fMjEwX19zdGRpbmJ1ZkljRTl1bmRlcmZsb3dFdgCGUyRfWk5TdDNfXzIxMF9fc3RkaW5idWZJY0U5X19nZXRjaGFyRWIAh1MgX1pOU3QzX18yMTBfX3N0ZGluYnVmSWNFNXVmbG93RXYAiFMkX1pOU3QzX18yMTBfX3N0ZGluYnVmSWNFOXBiYWNrZmFpbEVpAIlTI19aTlN0M19fMjNtYXhCNnYxNTAwN0lpRUVSS1RfUzNfUzNfAKNSNV9aTlN0M19fMjNtYXhCNnYxNTAwN0lpTlNfNl9fbGVzc0lpaUVFRUVSS1RfUzVfUzVfVDBfAKRSHl9aTlN0M19fMjhpb3NfYmFzZUMyQjZ2MTUwMDdFdgCKUx1fWk5TdDNfXzIxMV9fc3Rkb3V0YnVmSWNFRDBFdgCEUy1fWk5TdDNfXzIxMV9fc3Rkb3V0YnVmSWNFNWltYnVlRVJLTlNfNmxvY2FsZUUAi1MgX1pOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRTRzeW5jRXYAjFMlX1pOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRTZ4c3B1dG5FUEtjbACNUyRfWk5TdDNfXzIxMV9fc3Rkb3V0YnVmSWNFOG92ZXJmbG93RWkAjlMcX1pOU3QzX18yMTBfX3N0ZGluYnVmSXdFRDBFdgCPUyxfWk5TdDNfXzIxMF9fc3RkaW5idWZJd0U1aW1idWVFUktOU182bG9jYWxlRQCQUzZfWk5LU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RThlbmNvZGluZ0I2djE1MDA3RXYAoVAkX1pOU3QzX18yMTBfX3N0ZGluYnVmSXdFOXVuZGVyZmxvd0V2AJFTJF9aTlN0M19fMjEwX19zdGRpbmJ1Zkl3RTlfX2dldGNoYXJFYgCSUyBfWk5TdDNfXzIxMF9fc3RkaW5idWZJd0U1dWZsb3dFdgCTUyRfWk5TdDNfXzIxMF9fc3RkaW5idWZJd0U5cGJhY2tmYWlsRWoAlFNHX1pOS1N0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEUzb3V0QjZ2MTUwMDdFUlMxX1BLd1M1X1JTNV9QY1M3X1JTN18AoVImX1pOU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RTJpZEUD0A9GX1pOS1N0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEUyaW5CNnYxNTAwN0VSUzFfUEtjUzVfUlM1X1B3UzdfUlM3XwCcUh1fWk5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRDBFdgCPUy1fWk5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFNWltYnVlRVJLTlNfNmxvY2FsZUUAlVMgX1pOU3QzX18yMTFfX3N0ZG91dGJ1Zkl3RTRzeW5jRXYAjFNBX1pOS1N0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEU3dW5zaGlmdEI2djE1MDA3RVJTMV9QY1M0X1JTNF8AqlIlX1pOU3QzX18yMTFfX3N0ZG91dGJ1Zkl3RTZ4c3B1dG5FUEt3bACWUyRfWk5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFOG92ZXJmbG93RWoAl1MjX1pOU3QzX18yMTFjaGFyX3RyYWl0c0l3RTdub3RfZW9mRWoA+VEbX1pUSU5TdDNfXzIxMF9fc3RkaW5idWZJY0VFA88PG19aVFNOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQPODxxfWlRJTlN0M19fMjExX19zdGRvdXRidWZJY0VFA80PHF9aVFNOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRUUDzA8bX1pUSU5TdDNfXzIxMF9fc3RkaW5idWZJd0VFA8sPG19aVFNOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQPKDxxfWlRJTlN0M19fMjExX19zdGRvdXRidWZJd0VFA8kPHF9aVFNOU3QzX18yMTFfX3N0ZG91dGJ1Zkl3RUUDyA8mX1pOS1N0M19fMjE5X19saWJjcHBfZGVidWdfaW5mbzR3aGF0RXYAmFMVX1pOU3QzX18yOXRvX3N0cmluZ0VpAMJeYV9aTlN0M19fMnBsQjZ2MTUwMDdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRU5TXzEyYmFzaWNfc3RyaW5nSVRfVDBfVDFfRUVQS1M2X09TOV8AmVNNX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFcExCNnYxNTAwN0VQS2MAmlNLX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmluc2VydEVtUEtjAMJdRF9aTlN0M19fMjI5X19saWJjcHBfYWJvcnRfZGVidWdfZnVuY3Rpb25FUktOU18xOV9fbGliY3BwX2RlYnVnX2luZm9FAJtTRl9aTlN0M19fMjI3X19saWJjcHBfc2V0X2RlYnVnX2Z1bmN0aW9uRVBGdlJLTlNfMTlfX2xpYmNwcF9kZWJ1Z19pbmZvRUUAnFMjX1pOU3QzX18yMjNfX2xpYmNwcF9kZWJ1Z19mdW5jdGlvbkUDxw8fX1pOU3QzX18yMTdkZWNsYXJlX3JlYWNoYWJsZUVQdgCRKSJfWk5TdDNfXzIxOWRlY2xhcmVfbm9fcG9pbnRlcnNFUGNtAJERJF9aTlN0M19fMjIxdW5kZWNsYXJlX25vX3BvaW50ZXJzRVBjbQCRESNfWk5TdDNfXzIyMV9fdW5kZWNsYXJlX3JlYWNoYWJsZUVQdgDZMBhfWk5TdDNfXzI3Y29sbGF0ZUljRUQyRXYA2TAaX1pOU3QzX18yNmxvY2FsZTVmYWNldEQyRXYA2TAYX1pOU3QzX18yN2NvbGxhdGVJY0VEMEV2AOJAGF9aTlN0M19fMjdjb2xsYXRlSWNFRDFFdgDZMC5fWk5LU3QzX18yN2NvbGxhdGVJY0UxMGRvX2NvbXBhcmVFUEtjUzNfUzNfUzNfAJ1TKl9aTktTdDNfXzI3Y29sbGF0ZUljRTEyZG9fdHJhbnNmb3JtRVBLY1MzXwCeU1VfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVDMkI2djE1MDA3SVBLY3ZFRVRfUzlfAJ9TJF9aTktTdDNfXzI3Y29sbGF0ZUljRTdkb19oYXNoRVBLY1MzXwCgUxhfWk5TdDNfXzI3Y29sbGF0ZUl3RUQyRXYA2TAYX1pOU3QzX18yN2NvbGxhdGVJd0VEMEV2AOJAGF9aTlN0M19fMjdjb2xsYXRlSXdFRDFFdgDZMC5fWk5LU3QzX18yN2NvbGxhdGVJd0UxMGRvX2NvbXBhcmVFUEt3UzNfUzNfUzNfAKFTKl9aTktTdDNfXzI3Y29sbGF0ZUl3RTEyZG9fdHJhbnNmb3JtRVBLd1MzXwCiU1VfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVDMkI2djE1MDA3SVBLd3ZFRVRfUzlfAKNTkAFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySU5TXzEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTVfX3JlcEVTNV9FQzJCNnYxNTAwN0lOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0VTQV9FRU9UX09UMF8Azk2UAV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZfX2luaXRJUEt3RUVOU185ZW5hYmxlX2lmSVhzcjI3X19pc19jcHAxN19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVFdkU0dHlwZUVTQV9TQV8ApFNnX1pOU3QzX18yMTlfX2RlYnVnX2RiX2luc2VydF9jQjZ2MTUwMDdJTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRUVFdlBUXwCRKSRfWk5LU3QzX18yN2NvbGxhdGVJd0U3ZG9faGFzaEVQS3dTM18ApVNlX1pOS1N0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFNmRvX2dldEVTNF9TNF9STlNfOGlvc19iYXNlRVJqUmIAplM/X1pOU3QzX18yOXVzZV9mYWNldEI2djE1MDA3SU5TXzhudW1wdW5jdEljRUVFRVJLVF9SS05TXzZsb2NhbGVFAKdTKV9aTktTdDNfXzI4bnVtcHVuY3RJY0U4dHJ1ZW5hbWVCNnYxNTAwN0V2AKhTKl9aTktTdDNfXzI4bnVtcHVuY3RJY0U5ZmFsc2VuYW1lQjZ2MTUwMDdFdgCpU5sBX1pOU3QzX18yMTRfX3NjYW5fa2V5d29yZElOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVQS05TXzEyYmFzaWNfc3RyaW5nSWNTM19OU185YWxsb2NhdG9ySWNFRUVFTlNfNWN0eXBlSWNFRUVFVDBfUlRfU0VfU0RfU0RfUktUMV9SamIAqlMZX1pOU3QzX18yOG51bXB1bmN0SWNFMmlkRQPGD4kBX1pOU3QzX18yOGRpc3RhbmNlQjZ2MTUwMDdJUEtOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTQV9TQV8ArFOKAV9aTlN0M19fMjEwdW5pcXVlX3B0ckloUEZ2UHZFRUMyQjZ2MTUwMDdJTGIxRXZFRVBoTlNfMTZfX2RlcGVuZGVudF90eXBlSU5TXzI3X191bmlxdWVfcHRyX2RlbGV0ZXJfc2ZpbmFlSVMzX0VFWFRfRUUyMF9fZ29vZF9ydmFsX3JlZl90eXBlRQCtUy9fWk5TdDNfXzIxMHVuaXF1ZV9wdHJJaFBGdlB2RUU1cmVzZXRCNnYxNTAwN0VQaADpUiVfWk5LU3QzX18yNWN0eXBlSWNFN3RvdXBwZXJCNnYxNTAwN0VjAK5TTF9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVpeEI2djE1MDA3RW0AvU5QX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVlbXB0eUI2djE1MDA3RXYAr1MqX1pOU3QzX18yMTB1bmlxdWVfcHRySWhQRnZQdkVFRDJCNnYxNTAwN0V2AOpSZV9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJsALBTdl9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTE1X19kb19nZXRfc2lnbmVkSWxFRVM0X1M0X1M0X1JOU184aW9zX2Jhc2VFUmpSVF8AsVM0X1pOU3QzX18yMTRfX251bV9nZXRfYmFzZTEwX19nZXRfYmFzZUVSTlNfOGlvc19iYXNlRQCyUzRfWk5LU3QzX18yOV9fbnVtX2dldEljRTEwX19kb193aWRlbkVSTlNfOGlvc19iYXNlRVBjALNTOl9aTlN0M19fMjlfX251bV9nZXRJY0UxN19fc3RhZ2UyX2ludF9wcmVwRVJOU184aW9zX2Jhc2VFUmMAtFN6X1pOU3QzX18yOV9fbnVtX2dldEljRTE3X19zdGFnZTJfaW50X2xvb3BFY2lQY1JTMl9SamNSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVQalJTRF9QS2MAtVMzX1pOU3QzX18yMjVfX251bV9nZXRfc2lnbmVkX2ludGVncmFsSWxFRVRfUEtjUzNfUmppALZTX19aTlN0M19fMjE2X19jaGVja19ncm91cGluZ0VSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVQalM4X1JqALdTZV9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJ4ALhTdl9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTE1X19kb19nZXRfc2lnbmVkSXhFRVM0X1M0X1M0X1JOU184aW9zX2Jhc2VFUmpSVF8AuVMzX1pOU3QzX18yMjVfX251bV9nZXRfc2lnbmVkX2ludGVncmFsSXhFRVRfUEtjUzNfUmppALpTZV9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJ0ALtTeF9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTE3X19kb19nZXRfdW5zaWduZWRJdEVFUzRfUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJUXwC8UzVfWk5TdDNfXzIyN19fbnVtX2dldF91bnNpZ25lZF9pbnRlZ3JhbEl0RUVUX1BLY1MzX1JqaQC9U2ZfWk5LU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU2ZG9fZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpTOF8AvlN4X1pOS1N0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFMTdfX2RvX2dldF91bnNpZ25lZElqRUVTNF9TNF9TNF9STlNfOGlvc19iYXNlRVJqUlRfAL9TNV9aTlN0M19fMjI3X19udW1fZ2V0X3Vuc2lnbmVkX2ludGVncmFsSWpFRVRfUEtjUzNfUmppAMBTZV9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJtAMFTeF9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTE3X19kb19nZXRfdW5zaWduZWRJbUVFUzRfUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJUXwDCUzVfWk5TdDNfXzIyN19fbnVtX2dldF91bnNpZ25lZF9pbnRlZ3JhbEltRUVUX1BLY1MzX1JqaQDAU2VfWk5LU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU2ZG9fZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSeQDDU3hfWk5LU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxN19fZG9fZ2V0X3Vuc2lnbmVkSXlFRVM0X1M0X1M0X1JOU184aW9zX2Jhc2VFUmpSVF8AxFM1X1pOU3QzX18yMjdfX251bV9nZXRfdW5zaWduZWRfaW50ZWdyYWxJeUVFVF9QS2NTM19SamkAxVNlX1pOS1N0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFNmRvX2dldEVTNF9TNF9STlNfOGlvc19iYXNlRVJqUmYAxlN+X1pOS1N0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFMjNfX2RvX2dldF9mbG9hdGluZ19wb2ludElmRUVTNF9TNF9TNF9STlNfOGlvc19iYXNlRVJqUlRfAMdTQV9aTlN0M19fMjlfX251bV9nZXRJY0UxOV9fc3RhZ2UyX2Zsb2F0X3ByZXBFUk5TXzhpb3NfYmFzZUVQY1JjUzVfAMhTgAFfWk5TdDNfXzI5X19udW1fZ2V0SWNFMTlfX3N0YWdlMl9mbG9hdF9sb29wRWNSYlJjUGNSUzRfY2NSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVQalJTRV9SalM0XwDJUyhfWk5TdDNfXzIxNV9fbnVtX2dldF9mbG9hdElmRUVUX1BLY1MzX1JqAMpTZV9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJkAMtTfl9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTIzX19kb19nZXRfZmxvYXRpbmdfcG9pbnRJZEVFUzRfUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJUXwDMUyhfWk5TdDNfXzIxNV9fbnVtX2dldF9mbG9hdElkRUVUX1BLY1MzX1JqAM1TZV9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJlAM5Tfl9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTIzX19kb19nZXRfZmxvYXRpbmdfcG9pbnRJZUVFUzRfUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJUXwDPUyhfWk5TdDNfXzIxNV9fbnVtX2dldF9mbG9hdEllRUVUX1BLY1MzX1JqANBTZl9aTktTdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJQdgDRUyBfWk5TdDNfXzIxNF9fbnVtX2dldF9iYXNlNV9fc3JjRQPFDypfWk5LU3QzX18yNWN0eXBlSWNFNXdpZGVuQjZ2MTUwMDdFUEtjUzNfUGMA0lMSX1pOU3QzX18yNl9fY2xvY0V2ANNTNl9aTlN0M19fMjE3X19saWJjcHBfc3NjYW5mX2xFUEtjUDE1X19sb2NhbGVfc3RydWN0UzFfegDUUypfWk5TdDNfXzI0ZmluZEI2djE1MDA3SVBLY2NFRVRfUzNfUzNfUktUMF8A+Es+X1pOU3QzX18yMjFfX2xpYmNwcF9sb2NhbGVfZ3VhcmRDMkI2djE1MDA3RVJQMTVfX2xvY2FsZV9zdHJ1Y3QA1VMsX1pOU3QzX18yMjFfX2xpYmNwcF9sb2NhbGVfZ3VhcmREMkI2djE1MDA3RXYA1lNlX1pOS1N0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFNmRvX2dldEVTNF9TNF9STlNfOGlvc19iYXNlRVJqUmIA11M/X1pOU3QzX18yOXVzZV9mYWNldEI2djE1MDA3SU5TXzhudW1wdW5jdEl3RUVFRVJLVF9SS05TXzZsb2NhbGVFANhTKV9aTktTdDNfXzI4bnVtcHVuY3RJd0U4dHJ1ZW5hbWVCNnYxNTAwN0V2AKhTKl9aTktTdDNfXzI4bnVtcHVuY3RJd0U5ZmFsc2VuYW1lQjZ2MTUwMDdFdgCpU5sBX1pOU3QzX18yMTRfX3NjYW5fa2V5d29yZElOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVQS05TXzEyYmFzaWNfc3RyaW5nSXdTM19OU185YWxsb2NhdG9ySXdFRUVFTlNfNWN0eXBlSXdFRUVFVDBfUlRfU0VfU0RfU0RfUktUMV9SamIA2VNDX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRDJFdgDlXRlfWk5TdDNfXzI4bnVtcHVuY3RJd0UyaWRFA8QPiQFfWk5TdDNfXzI4ZGlzdGFuY2VCNnYxNTAwN0lQS05TXzEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUVFRU5TXzE1aXRlcmF0b3JfdHJhaXRzSVRfRTE1ZGlmZmVyZW5jZV90eXBlRVNBX1NBXwCsUyVfWk5LU3QzX18yNWN0eXBlSXdFN3RvdXBwZXJCNnYxNTAwN0V3AMxST19aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU0c2l6ZUI2djE1MDA3RXYA4k1MX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRWl4QjZ2MTUwMDdFbQDaU1BfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNWVtcHR5QjZ2MTUwMDdFdgCvU2VfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSbADbU3ZfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxNV9fZG9fZ2V0X3NpZ25lZElsRUVTNF9TNF9TNF9STlNfOGlvc19iYXNlRVJqUlRfANxTNF9aTktTdDNfXzI5X19udW1fZ2V0SXdFMTBfX2RvX3dpZGVuRVJOU184aW9zX2Jhc2VFUHcA3VM6X1pOU3QzX18yOV9fbnVtX2dldEl3RTE3X19zdGFnZTJfaW50X3ByZXBFUk5TXzhpb3NfYmFzZUVSdwDeU3pfWk5TdDNfXzI5X19udW1fZ2V0SXdFMTdfX3N0YWdlMl9pbnRfbG9vcEV3aVBjUlMyX1Jqd1JLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVBqUlNEX1BLdwDfU2VfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSeADgU3ZfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxNV9fZG9fZ2V0X3NpZ25lZEl4RUVTNF9TNF9TNF9STlNfOGlvc19iYXNlRVJqUlRfAOFTZV9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJ0AOJTeF9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTE3X19kb19nZXRfdW5zaWduZWRJdEVFUzRfUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJUXwDjU2ZfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpTOF8A5FN4X1pOS1N0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTdfX2RvX2dldF91bnNpZ25lZElqRUVTNF9TNF9TNF9STlNfOGlvc19iYXNlRVJqUlRfAOVTZV9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJtAOZTeF9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTE3X19kb19nZXRfdW5zaWduZWRJbUVFUzRfUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJUXwDnU2VfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSeQDoU3hfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxN19fZG9fZ2V0X3Vuc2lnbmVkSXlFRVM0X1M0X1M0X1JOU184aW9zX2Jhc2VFUmpSVF8A6VNlX1pOS1N0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFNmRvX2dldEVTNF9TNF9STlNfOGlvc19iYXNlRVJqUmYA6lN+X1pOS1N0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMjNfX2RvX2dldF9mbG9hdGluZ19wb2ludElmRUVTNF9TNF9TNF9STlNfOGlvc19iYXNlRVJqUlRfAOtTQV9aTlN0M19fMjlfX251bV9nZXRJd0UxOV9fc3RhZ2UyX2Zsb2F0X3ByZXBFUk5TXzhpb3NfYmFzZUVQd1J3UzVfAOxTf19aTlN0M19fMjlfX251bV9nZXRJd0UxOV9fc3RhZ2UyX2Zsb2F0X2xvb3BFd1JiUmNQY1JTNF93d1JLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVBqUlNFX1JqUHcA7VNlX1pOS1N0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFNmRvX2dldEVTNF9TNF9STlNfOGlvc19iYXNlRVJqUmQA7lN+X1pOS1N0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMjNfX2RvX2dldF9mbG9hdGluZ19wb2ludElkRUVTNF9TNF9TNF9STlNfOGlvc19iYXNlRVJqUlRfAO9TZV9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJlAPBTfl9aTktTdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTIzX19kb19nZXRfZmxvYXRpbmdfcG9pbnRJZUVFUzRfUzRfUzRfUk5TXzhpb3NfYmFzZUVSalJUXwDxU2ZfWk5LU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpSUHYA8lMqX1pOS1N0M19fMjVjdHlwZUl3RTV3aWRlbkI2djE1MDA3RVBLY1MzX1B3APNTKl9aTlN0M19fMjRmaW5kQjZ2MTUwMDdJUEt3d0VFVF9TM19TM19SS1QwXwDWTC9fWk5LU3QzX18yOG51bXB1bmN0SWNFMTNkZWNpbWFsX3BvaW50QjZ2MTUwMDdFdgD0Uy9fWk5LU3QzX18yOG51bXB1bmN0SWNFMTN0aG91c2FuZHNfc2VwQjZ2MTUwMDdFdgD1UylfWk5LU3QzX18yOG51bXB1bmN0SWNFOGdyb3VwaW5nQjZ2MTUwMDdFdgD2UzZfWk5LU3QzX18yOV9fbnVtX2dldEljRTEyX19kb193aWRlbl9wRVJOU184aW9zX2Jhc2VFUGMAs1MvX1pOS1N0M19fMjhudW1wdW5jdEl3RTEzZGVjaW1hbF9wb2ludEI2djE1MDA3RXYA9FMvX1pOS1N0M19fMjhudW1wdW5jdEl3RTEzdGhvdXNhbmRzX3NlcEI2djE1MDA3RXYA9VMpX1pOS1N0M19fMjhudW1wdW5jdEl3RThncm91cGluZ0I2djE1MDA3RXYA9lMpX1pOU3QzX18yNGZpbmRCNnYxNTAwN0lQd3dFRVRfUzJfUzJfUktUMF8A1kw/X1pOS1N0M19fMjlfX251bV9nZXRJd0UxMl9fZG9fd2lkZW5fcEl3RUVQS1RfUk5TXzhpb3NfYmFzZUVQUzNfAPdTNl9aTktTdDNfXzI5X19udW1fZ2V0SXdFMTJfX2RvX3dpZGVuX3BFUk5TXzhpb3NfYmFzZUVQYwCzU2BfWk5LU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU2ZG9fcHV0RVM0X1JOU184aW9zX2Jhc2VFY2IA+FNPX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNWJlZ2luQjZ2MTUwMDdFdgD5U01fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUzZW5kQjZ2MTUwMDdFdgD6UzNfWk5TdDNfXzJuZUI2djE1MDA3SVBjRUViUktOU18xMV9fd3JhcF9pdGVySVRfRUVTNl8Ax08nX1pOS1N0M19fMjExX193cmFwX2l0ZXJJUGNFZGVCNnYxNTAwN0V2AN0dJl9aTlN0M19fMjExX193cmFwX2l0ZXJJUGNFcHBCNnYxNTAwN0V2ALgCK19aTlN0M19fMjExX193cmFwX2l0ZXJJUGNFQzJCNnYxNTAwN0VQS3ZTMV8A+1MzX1pOU3QzX18yZXFCNnYxNTAwN0lQY0VFYlJLTlNfMTFfX3dyYXBfaXRlcklUX0VFUzZfAKtPYF9aTktTdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19wdXRFUzRfUk5TXzhpb3NfYmFzZUVjbAD8U35fWk5LU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxN19fZG9fcHV0X2ludGVncmFsQjZ2MTUwMDdJbEVFUzRfUzRfUk5TXzhpb3NfYmFzZUVjVF9QS2MA/VMvX1pOU3QzX18yMTRfX251bV9wdXRfYmFzZTEyX19mb3JtYXRfaW50RVBjUEtjYmoA/lM4X1pOU3QzX18yMTlfX2xpYmNwcF9zbnByaW50Zl9sRVBjbVAxNV9fbG9jYWxlX3N0cnVjdFBLY3oA/1NCX1pOU3QzX18yMTRfX251bV9wdXRfYmFzZTE4X19pZGVudGlmeV9wYWRkaW5nRVBjUzFfUktOU184aW9zX2Jhc2VFAIBUTV9aTlN0M19fMjlfX251bV9wdXRJY0UyMV9fd2lkZW5fYW5kX2dyb3VwX2ludEVQY1MyX1MyX1MyX1JTMl9TM19SS05TXzZsb2NhbGVFAIFUcl9aTlN0M19fMjE2X19wYWRfYW5kX291dHB1dEljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvcklUX1QwX0VFUzZfUEtTNF9TOF9TOF9STlNfOGlvc19iYXNlRVM0XwCCVGBfWk5LU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU2ZG9fcHV0RVM0X1JOU184aW9zX2Jhc2VFY3gAg1R+X1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFMTdfX2RvX3B1dF9pbnRlZ3JhbEI2djE1MDA3SXhFRVM0X1M0X1JOU184aW9zX2Jhc2VFY1RfUEtjAIRUYF9aTktTdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19wdXRFUzRfUk5TXzhpb3NfYmFzZUVjbQCFVH5fWk5LU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxN19fZG9fcHV0X2ludGVncmFsQjZ2MTUwMDdJbUVFUzRfUzRfUk5TXzhpb3NfYmFzZUVjVF9QS2MAhlRgX1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFNmRvX3B1dEVTNF9STlNfOGlvc19iYXNlRWN5AIdUfl9aTktTdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTE3X19kb19wdXRfaW50ZWdyYWxCNnYxNTAwN0l5RUVTNF9TNF9STlNfOGlvc19iYXNlRWNUX1BLYwCIVGBfWk5LU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU2ZG9fcHV0RVM0X1JOU184aW9zX2Jhc2VFY2QAiVSEAV9aTktTdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTIzX19kb19wdXRfZmxvYXRpbmdfcG9pbnRCNnYxNTAwN0lkRUVTNF9TNF9STlNfOGlvc19iYXNlRWNUX1BLYwCKVDBfWk5TdDNfXzIxNF9fbnVtX3B1dF9iYXNlMTRfX2Zvcm1hdF9mbG9hdEVQY1BLY2oAi1QnX1pOS1N0M19fMjhpb3NfYmFzZTlwcmVjaXNpb25CNnYxNTAwN0V2ANcGigFfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJY1BGdlB2RUVDMkI2djE1MDA3SUxiMUV2RUVQY05TXzE2X19kZXBlbmRlbnRfdHlwZUlOU18yN19fdW5pcXVlX3B0cl9kZWxldGVyX3NmaW5hZUlTM19FRVhUX0VFMjBfX2dvb2RfcnZhbF9yZWZfdHlwZUUAjFQ4X1pOU3QzX18yMTlfX2xpYmNwcF9hc3ByaW50Zl9sRVBQY1AxNV9fbG9jYWxlX3N0cnVjdFBLY3oAjVQvX1pOU3QzX18yMTB1bmlxdWVfcHRySWNQRnZQdkVFNXJlc2V0QjZ2MTUwMDdFUGMA6VJPX1pOU3QzX18yOV9fbnVtX3B1dEljRTIzX193aWRlbl9hbmRfZ3JvdXBfZmxvYXRFUGNTMl9TMl9TMl9SUzJfUzNfUktOU182bG9jYWxlRQCOVCpfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJY1BGdlB2RUVEMkI2djE1MDA3RXYA6lJgX1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFNmRvX3B1dEVTNF9STlNfOGlvc19iYXNlRWNlAI9UhAFfWk5LU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUyM19fZG9fcHV0X2Zsb2F0aW5nX3BvaW50QjZ2MTUwMDdJZUVFUzRfUzRfUk5TXzhpb3NfYmFzZUVjVF9QS2MAkFRiX1pOS1N0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFNmRvX3B1dEVTNF9STlNfOGlvc19iYXNlRWNQS3YAkVQjX1pOS1N0M19fMjhpb3NfYmFzZTV3aWR0aEI2djE1MDA3RXYAgQpMX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFQzJCNnYxNTAwN0VtYwCSVCJfWk5TdDNfXzI4aW9zX2Jhc2U1d2lkdGhCNnYxNTAwN0VsAJNUYF9aTktTdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTZkb19wdXRFUzRfUk5TXzhpb3NfYmFzZUV3YgCUVE9fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU1YmVnaW5CNnYxNTAwN0V2APlTTV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTNlbmRCNnYxNTAwN0V2AJVUM19aTlN0M19fMm5lQjZ2MTUwMDdJUHdFRWJSS05TXzExX193cmFwX2l0ZXJJVF9FRVM2XwDHTydfWk5LU3QzX18yMTFfX3dyYXBfaXRlcklQd0VkZUI2djE1MDA3RXYA3R0mX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQd0VwcEI2djE1MDA3RXYAik9YX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTNfX2dldF9wb2ludGVyQjZ2MTUwMDdFdgDkTStfWk5TdDNfXzIxMV9fd3JhcF9pdGVySVB3RUMyQjZ2MTUwMDdFUEt2UzFfAPtTM19aTlN0M19fMmVxQjZ2MTUwMDdJUHdFRWJSS05TXzExX193cmFwX2l0ZXJJVF9FRVM2XwCrT2BfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fcHV0RVM0X1JOU184aW9zX2Jhc2VFd2wAllR+X1pOS1N0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTdfX2RvX3B1dF9pbnRlZ3JhbEI2djE1MDA3SWxFRVM0X1M0X1JOU184aW9zX2Jhc2VFd1RfUEtjAJdUTF9aTlN0M19fMjlfX251bV9wdXRJd0UyMV9fd2lkZW5fYW5kX2dyb3VwX2ludEVQY1MyX1MyX1B3UlMzX1M0X1JLTlNfNmxvY2FsZUUAmFRyX1pOU3QzX18yMTZfX3BhZF9hbmRfb3V0cHV0SXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySVRfVDBfRUVTNl9QS1M0X1M4X1M4X1JOU184aW9zX2Jhc2VFUzRfAJlUYF9aTktTdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTZkb19wdXRFUzRfUk5TXzhpb3NfYmFzZUV3eACaVH5fWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxN19fZG9fcHV0X2ludGVncmFsQjZ2MTUwMDdJeEVFUzRfUzRfUk5TXzhpb3NfYmFzZUV3VF9QS2MAm1RgX1pOS1N0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFNmRvX3B1dEVTNF9STlNfOGlvc19iYXNlRXdtAJxUfl9aTktTdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTE3X19kb19wdXRfaW50ZWdyYWxCNnYxNTAwN0ltRUVTNF9TNF9STlNfOGlvc19iYXNlRXdUX1BLYwCdVGBfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fcHV0RVM0X1JOU184aW9zX2Jhc2VFd3kAnlR+X1pOS1N0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTdfX2RvX3B1dF9pbnRlZ3JhbEI2djE1MDA3SXlFRVM0X1M0X1JOU184aW9zX2Jhc2VFd1RfUEtjAJ9UYF9aTktTdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTZkb19wdXRFUzRfUk5TXzhpb3NfYmFzZUV3ZACgVIQBX1pOS1N0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMjNfX2RvX3B1dF9mbG9hdGluZ19wb2ludEI2djE1MDA3SWRFRVM0X1M0X1JOU184aW9zX2Jhc2VFd1RfUEtjAKFUigFfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJd1BGdlB2RUVDMkI2djE1MDA3SUxiMUV2RUVQd05TXzE2X19kZXBlbmRlbnRfdHlwZUlOU18yN19fdW5pcXVlX3B0cl9kZWxldGVyX3NmaW5hZUlTM19FRVhUX0VFMjBfX2dvb2RfcnZhbF9yZWZfdHlwZUUAolQvX1pOU3QzX18yMTB1bmlxdWVfcHRySXdQRnZQdkVFNXJlc2V0QjZ2MTUwMDdFUHcA6VJOX1pOU3QzX18yOV9fbnVtX3B1dEl3RTIzX193aWRlbl9hbmRfZ3JvdXBfZmxvYXRFUGNTMl9TMl9Qd1JTM19TNF9SS05TXzZsb2NhbGVFAKNUKl9aTlN0M19fMjEwdW5pcXVlX3B0ckl3UEZ2UHZFRUQyQjZ2MTUwMDdFdgDqUmBfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fcHV0RVM0X1JOU184aW9zX2Jhc2VFd2UApFSEAV9aTktTdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTIzX19kb19wdXRfZmxvYXRpbmdfcG9pbnRCNnYxNTAwN0llRUVTNF9TNF9STlNfOGlvc19iYXNlRXdUX1BLYwClVGJfWk5LU3QzX18yN251bV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fcHV0RVM0X1JOU184aW9zX2Jhc2VFd1BLdgCmVExfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVDMkI2djE1MDA3RW13AKdUTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTRkYXRhQjZ2MTUwMDdFdgD6TCRfWk5TdDNfXzI3cmV2ZXJzZUI2djE1MDA3SVBjRUV2VF9TMl8AqFRBX1pOU3QzX18yOV9fcmV2ZXJzZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUGNTMl9FRXZUMF9UMV8AqVQkX1pOU3QzX18yN3JldmVyc2VCNnYxNTAwN0lQd0VFdlRfUzJfAKpUQV9aTlN0M19fMjlfX3JldmVyc2VCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVB3UzJfRUV2VDBfVDFfAKtUa19aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpQMnRtUEtjU0NfAKxUJV9aTktTdDNfXzI1Y3R5cGVJY0U2bmFycm93QjZ2MTUwMDdFY2MArVRXX1pOS1N0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTEzZG9fZGF0ZV9vcmRlckV2AK5Ubl9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxMWRvX2dldF90aW1lRVM0X1M0X1JOU184aW9zX2Jhc2VFUmpQMnRtAK9Ubl9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxMWRvX2dldF9kYXRlRVM0X1M0X1JOU184aW9zX2Jhc2VFUmpQMnRtALBUcV9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxNGRvX2dldF93ZWVrZGF5RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpQMnRtALFUdF9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxN19fZ2V0X3dlZWtkYXluYW1lRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJY0VFALJUc19aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxNmRvX2dldF9tb250aG5hbWVFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalAydG0As1RyX1pOS1N0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTE1X19nZXRfbW9udGhuYW1lRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJY0VFALRUbl9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxMWRvX2dldF95ZWFyRVM0X1M0X1JOU184aW9zX2Jhc2VFUmpQMnRtALVUbV9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxMF9fZ2V0X3llYXJFUmlSUzRfUzRfUmpSS05TXzVjdHlwZUljRUUAtlRuX1pOU3QzX18yMjBfX2dldF91cF90b19uX2RpZ2l0c0ljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVpUlQwX1M1X1JqUktOU181Y3R5cGVJVF9FRWkAt1RqX1pOS1N0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTZkb19nZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalAydG1jYwC4VGtfWk5LU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFOV9fZ2V0X2RheUVSaVJTNF9TNF9SalJLTlNfNWN0eXBlSWNFRQC5VG1fWk5LU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFMTBfX2dldF9ob3VyRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJY0VFALpUcF9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxM19fZ2V0XzEyX2hvdXJFUmlSUzRfUzRfUmpSS05TXzVjdHlwZUljRUUAu1R1X1pOS1N0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTE4X19nZXRfZGF5X3llYXJfbnVtRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJY0VFALxUbl9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxMV9fZ2V0X21vbnRoRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJY0VFAL1Ub19aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxMl9fZ2V0X21pbnV0ZUVSaVJTNF9TNF9SalJLTlNfNWN0eXBlSWNFRQC+VHJfWk5LU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFMTdfX2dldF93aGl0ZV9zcGFjZUVSUzRfUzRfUmpSS05TXzVjdHlwZUljRUUAv1RuX1pOS1N0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTExX19nZXRfYW1fcG1FUmlSUzRfUzRfUmpSS05TXzVjdHlwZUljRUUAwFRvX1pOS1N0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTEyX19nZXRfc2Vjb25kRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJY0VFAMFUcF9aTktTdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxM19fZ2V0X3dlZWtkYXlFUmlSUzRfUzRfUmpSS05TXzVjdHlwZUljRUUAwlRuX1pOS1N0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTExX19nZXRfeWVhcjRFUmlSUzRfUzRfUmpSS05TXzVjdHlwZUljRUUAw1RuX1pOS1N0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTEzX19nZXRfcGVyY2VudEVSUzRfUzRfUmpSS05TXzVjdHlwZUljRUUAxFRrX1pOS1N0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNnZXRFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalAydG1QS3dTQ18AxVQlX1pOS1N0M19fMjVjdHlwZUl3RTZuYXJyb3dCNnYxNTAwN0V3YwDGVFdfWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTNkb19kYXRlX29yZGVyRXYArlRuX1pOS1N0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTExZG9fZ2V0X3RpbWVFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalAydG0Ax1RuX1pOS1N0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTExZG9fZ2V0X2RhdGVFUzRfUzRfUk5TXzhpb3NfYmFzZUVSalAydG0AyFRPX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTRkYXRhQjZ2MTUwMDdFdgD6TFlfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTNfX2dldF9wb2ludGVyQjZ2MTUwMDdFdgDkTVRfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFOV9faXNfbG9uZ0I2djE1MDA3RXYAvU1bX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE1X19nZXRfbG9uZ19zaXplQjZ2MTUwMDdFdgDeHVxfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTZfX2dldF9zaG9ydF9zaXplQjZ2MTUwMDdFdgDlTXFfWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTRkb19nZXRfd2Vla2RheUVTNF9TNF9STlNfOGlvc19iYXNlRVJqUDJ0bQDJVHRfWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTdfX2dldF93ZWVrZGF5bmFtZUVSaVJTNF9TNF9SalJLTlNfNWN0eXBlSXdFRQDKVHNfWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTZkb19nZXRfbW9udGhuYW1lRVM0X1M0X1JOU184aW9zX2Jhc2VFUmpQMnRtAMtUcl9aTktTdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxNV9fZ2V0X21vbnRobmFtZUVSaVJTNF9TNF9SalJLTlNfNWN0eXBlSXdFRQDMVG5fWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTFkb19nZXRfeWVhckVTNF9TNF9STlNfOGlvc19iYXNlRVJqUDJ0bQDNVG1fWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTBfX2dldF95ZWFyRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJd0VFAM5Ubl9aTlN0M19fMjIwX19nZXRfdXBfdG9fbl9kaWdpdHNJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFaVJUMF9TNV9SalJLTlNfNWN0eXBlSVRfRUVpAM9Ual9aTktTdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU2ZG9fZ2V0RVM0X1M0X1JOU184aW9zX2Jhc2VFUmpQMnRtY2MA0FRrX1pOS1N0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTlfX2dldF9kYXlFUmlSUzRfUzRfUmpSS05TXzVjdHlwZUl3RUUA0VRtX1pOS1N0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTEwX19nZXRfaG91ckVSaVJTNF9TNF9SalJLTlNfNWN0eXBlSXdFRQDSVHBfWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTNfX2dldF8xMl9ob3VyRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJd0VFANNUdV9aTktTdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxOF9fZ2V0X2RheV95ZWFyX251bUVSaVJTNF9TNF9SalJLTlNfNWN0eXBlSXdFRQDUVG5fWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTFfX2dldF9tb250aEVSaVJTNF9TNF9SalJLTlNfNWN0eXBlSXdFRQDVVG9fWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTJfX2dldF9taW51dGVFUmlSUzRfUzRfUmpSS05TXzVjdHlwZUl3RUUA1lRyX1pOS1N0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTE3X19nZXRfd2hpdGVfc3BhY2VFUlM0X1M0X1JqUktOU181Y3R5cGVJd0VFANdUbl9aTktTdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxMV9fZ2V0X2FtX3BtRVJpUlM0X1M0X1JqUktOU181Y3R5cGVJd0VFANhUb19aTktTdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxMl9fZ2V0X3NlY29uZEVSaVJTNF9TNF9SalJLTlNfNWN0eXBlSXdFRQDZVHBfWk5LU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMTNfX2dldF93ZWVrZGF5RVJpUlM0X1M0X1JqUktOU181Y3R5cGVJd0VFANpUbl9aTktTdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxMV9fZ2V0X3llYXI0RVJpUlM0X1M0X1JqUktOU181Y3R5cGVJd0VFANtUbl9aTktTdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxM19fZ2V0X3BlcmNlbnRFUlM0X1M0X1JqUktOU181Y3R5cGVJd0VFANxUaF9aTktTdDNfXzI4dGltZV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzcHV0RVM0X1JOU184aW9zX2Jhc2VFY1BLMnRtUEtjU0NfAN1UQV9aTlN0M19fMjE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFcHBCNnYxNTAwN0VpAM9NZ19aTktTdDNfXzI4dGltZV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU2ZG9fcHV0RVM0X1JOU184aW9zX2Jhc2VFY1BLMnRtY2MA3lQtX1pOS1N0M19fMjEwX190aW1lX3B1dDhfX2RvX3B1dEVQY1JTMV9QSzJ0bWNjAN9UVl9aTlN0M19fMjRjb3B5QjZ2MTUwMDdJUGNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRVQwX1RfUzdfUzZfAOBUbV9aTlN0M19fMjZfX2NvcHlCNnYxNTAwN0lQY1MxX05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUxpMEVFRU5TXzRwYWlySVRfVDFfRUVTN19UMF9TOF8A4VRoX1pOS1N0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNwdXRFUzRfUk5TXzhpb3NfYmFzZUV3UEsydG1QS3dTQ18A4lRBX1pOU3QzX18yMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVwcEI2djE1MDA3RWkAz01nX1pOS1N0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTZkb19wdXRFUzRfUk5TXzhpb3NfYmFzZUV3UEsydG1jYwDjVC1fWk5LU3QzX18yMTBfX3RpbWVfcHV0OF9fZG9fcHV0RVB3UlMxX1BLMnRtY2MA5FRWX1pOU3QzX18yNGNvcHlCNnYxNTAwN0lQd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFVDBfVF9TN19TNl8A5VRPX1pOU3QzX18yMjBfX2xpYmNwcF9tYnNydG93Y3NfbEI2djE1MDA3RVB3UFBLY21QMTFfX21ic3RhdGVfdFAxNV9fbG9jYWxlX3N0cnVjdADmVG1fWk5TdDNfXzI2X19jb3B5QjZ2MTUwMDdJUHdTMV9OU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVMaTBFRUVOU180cGFpcklUX1QxX0VFUzdfVDBfUzhfAOhUMV9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFMTZkb19kZWNpbWFsX3BvaW50RXYA6VQqX1pOU3QzX18yMTRudW1lcmljX2xpbWl0c0ljRTNtYXhCNnYxNTAwN0V2AOpUN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJY0xiMUVFM21heEI2djE1MDA3RXYA6lQxX1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIwRUUxNmRvX3Rob3VzYW5kc19zZXBFdgDpVCxfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTExZG9fZ3JvdXBpbmdFdgDrVC9fWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTE0ZG9fY3Vycl9zeW1ib2xFdgDrVDFfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTE2ZG9fcG9zaXRpdmVfc2lnbkV2AOtUMV9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFMTZkb19uZWdhdGl2ZV9zaWduRXYA7FRJX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNl9faW5pdEVtYwDBXS9fWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTE0ZG9fZnJhY19kaWdpdHNFdgDcEC5fWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTEzZG9fcG9zX2Zvcm1hdEV2AO1ULl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFMTNkb19uZWdfZm9ybWF0RXYA7VQxX1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIxRUUxNmRvX2RlY2ltYWxfcG9pbnRFdgDpVDFfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRTE2ZG9fdGhvdXNhbmRzX3NlcEV2AOlULF9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFMTFkb19ncm91cGluZ0V2AOtUL19aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFMTRkb19jdXJyX3N5bWJvbEV2AOtUMV9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFMTZkb19wb3NpdGl2ZV9zaWduRXYA61QxX1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIxRUUxNmRvX25lZ2F0aXZlX3NpZ25FdgDsVC9fWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRTE0ZG9fZnJhY19kaWdpdHNFdgDcEC5fWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRTEzZG9fcG9zX2Zvcm1hdEV2AO1ULl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFMTNkb19uZWdfZm9ybWF0RXYA7VQxX1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUUxNmRvX2RlY2ltYWxfcG9pbnRFdgDuVCpfWk5TdDNfXzIxNG51bWVyaWNfbGltaXRzSXdFM21heEI2djE1MDA3RXYAuFA3X1pOU3QzX18yMjNfX2xpYmNwcF9udW1lcmljX2xpbWl0c0l3TGIxRUUzbWF4QjZ2MTUwMDdFdgC4UDFfWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRTE2ZG9fdGhvdXNhbmRzX3NlcEV2AO5ULF9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFMTFkb19ncm91cGluZ0V2AOtUL19aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFMTRkb19jdXJyX3N5bWJvbEV2AO9US19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUMyQjZ2MTUwMDdFdgDwVFlfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxNF9fZGVmYXVsdF9pbml0QjZ2MTUwMDdFdgDqTTFfWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRTE2ZG9fcG9zaXRpdmVfc2lnbkV2AO9UMV9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFMTZkb19uZWdhdGl2ZV9zaWduRXYA8VRJX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNl9faW5pdEVtdwD/XS9fWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRTE0ZG9fZnJhY19kaWdpdHNFdgDcEC5fWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRTEzZG9fcG9zX2Zvcm1hdEV2AO1ULl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFMTNkb19uZWdfZm9ybWF0RXYA7VQxX1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUUxNmRvX2RlY2ltYWxfcG9pbnRFdgDuVDFfWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRTE2ZG9fdGhvdXNhbmRzX3NlcEV2AO5ULF9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMTFkb19ncm91cGluZ0V2AOtUL19aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMTRkb19jdXJyX3N5bWJvbEV2AO9UMV9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMTZkb19wb3NpdGl2ZV9zaWduRXYA71QxX1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUUxNmRvX25lZ2F0aXZlX3NpZ25FdgDxVC9fWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRTE0ZG9fZnJhY19kaWdpdHNFdgDcEC5fWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRTEzZG9fcG9zX2Zvcm1hdEV2AO1ULl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMTNkb19uZWdfZm9ybWF0RXYA7VQ4X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMEVFMTZkb19kZWNpbWFsX3BvaW50RXYA8lQ4X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMEVFMTZkb190aG91c2FuZHNfc2VwRXYA81QzX1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMEVFMTFkb19ncm91cGluZ0V2APRUNl9aTktTdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjBFRTE0ZG9fY3Vycl9zeW1ib2xFdgD1VDhfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIwRUUxNmRvX3Bvc2l0aXZlX3NpZ25FdgD2VDhfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIwRUUxNmRvX25lZ2F0aXZlX3NpZ25FdgD3VDZfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIwRUUxNGRvX2ZyYWNfZGlnaXRzRXYA+FQ1X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMEVFMTNkb19wb3NfZm9ybWF0RXYA+VQ1X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMEVFMTNkb19uZWdfZm9ybWF0RXYA+lQ4X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMUVFMTZkb19kZWNpbWFsX3BvaW50RXYA8lQ4X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMUVFMTZkb190aG91c2FuZHNfc2VwRXYA81QzX1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMUVFMTFkb19ncm91cGluZ0V2APRUNl9aTktTdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjFFRTE0ZG9fY3Vycl9zeW1ib2xFdgD1VDhfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIxRUUxNmRvX3Bvc2l0aXZlX3NpZ25FdgD2VDhfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIxRUUxNmRvX25lZ2F0aXZlX3NpZ25FdgD3VDZfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIxRUUxNGRvX2ZyYWNfZGlnaXRzRXYA+FQ1X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMUVFMTNkb19wb3NfZm9ybWF0RXYA+VQ1X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMUVFMTNkb19uZWdfZm9ybWF0RXYA+lQ4X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMEVFMTZkb19kZWNpbWFsX3BvaW50RXYA1wY4X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMEVFMTZkb190aG91c2FuZHNfc2VwRXYAgQozX1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMEVFMTFkb19ncm91cGluZ0V2APtUNl9aTktTdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjBFRTE0ZG9fY3Vycl9zeW1ib2xFdgD8VEdfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVDMkVSS1M1XwD9VFJfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFN19fYWxsb2NCNnYxNTAwN0V2ANkwbV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySXdFRUUzN3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb25CNnYxNTAwN0lTMl92dkVFUzJfUktTMl8AkSmQAV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNV9fcmVwRVM1X0VDMkI2djE1MDA3SU5TXzE4X19kZWZhdWx0X2luaXRfdGFnRVM1X0VFT1RfT1QwXwDOTXJfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU1X19yZXBFUzVfRTVmaXJzdEI2djE1MDA3RXYA2TBxX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU1X19yZXBFUzVfRTVmaXJzdEI2djE1MDA3RXYA2TBeX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE4X19nZXRfbG9uZ19wb2ludGVyQjZ2MTUwMDdFdgDdHV9fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUyNV9faW5pdF9jb3B5X2N0b3JfZXh0ZXJuYWxFUEt3bQDuXThfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIwRUUxNmRvX3Bvc2l0aXZlX3NpZ25FdgD+VDhfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIwRUUxNmRvX25lZ2F0aXZlX3NpZ25FdgD/VDZfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIwRUUxNGRvX2ZyYWNfZGlnaXRzRXYAgFU1X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMEVFMTNkb19wb3NfZm9ybWF0RXYA+lQ1X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMEVFMTNkb19uZWdfZm9ybWF0RXYAgVU4X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMUVFMTZkb19kZWNpbWFsX3BvaW50RXYA1wY4X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMUVFMTZkb190aG91c2FuZHNfc2VwRXYAgQozX1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMUVFMTFkb19ncm91cGluZ0V2APtUNl9aTktTdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjFFRTE0ZG9fY3Vycl9zeW1ib2xFdgD8VDhfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIxRUUxNmRvX3Bvc2l0aXZlX3NpZ25FdgD+VDhfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIxRUUxNmRvX25lZ2F0aXZlX3NpZ25FdgD/VDZfWk5LU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIxRUUxNGRvX2ZyYWNfZGlnaXRzRXYAgFU1X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMUVFMTNkb19wb3NfZm9ybWF0RXYA+lQ1X1pOS1N0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMUVFMTNkb19uZWdfZm9ybWF0RXYAgVVoX1pOS1N0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU2ZG9fZ2V0RVM0X1M0X2JSTlNfOGlvc19iYXNlRVJqUmUAglUaX1pOU3QzX18yMTJfX2RvX25vdGhpbmdFUHYAkSmZAV9aTlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU4X19kb19nZXRFUlM0X1M0X2JSS05TXzZsb2NhbGVFalJqUmJSS05TXzVjdHlwZUljRUVSTlNfMTB1bmlxdWVfcHRySWNQRnZQdkVFRVJQY1NNXwCDVS1fWk5LU3QzX18yMTB1bmlxdWVfcHRySWNQRnZQdkVFM2dldEI2djE1MDA3RXYA3R0qX1pOU3QzX18yM2VuZEI2djE1MDA3SWNMbTEwRUVFUFRfUkFUMF9fUzFfAIRVQV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGNQRnZQdkVFQzJCNnYxNTAwN0lSUzFfUzRfRUVPVF9PVDBfAJhSigFfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJalBGdlB2RUVDMkI2djE1MDA3SUxiMUV2RUVQak5TXzE2X19kZXBlbmRlbnRfdHlwZUlOU18yN19fdW5pcXVlX3B0cl9kZWxldGVyX3NmaW5hZUlTM19FRVhUX0VFMjBfX2dvb2RfcnZhbF9yZWZfdHlwZUUAhVUtX1pOS1N0M19fMjEwdW5pcXVlX3B0cklqUEZ2UHZFRTNnZXRCNnYxNTAwN0V2AN0dmwFfWk5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFMTNfX2dhdGhlcl9pbmZvRWJSS05TXzZsb2NhbGVFUk5TXzEwbW9uZXlfYmFzZTdwYXR0ZXJuRVJjUzhfUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTRl9TRl9TRl9SaQCGVUFfWk5TdDNfXzIxOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRXBwQjZ2MTUwMDdFaQCHVUpfWk5LU3QzX18yMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUU3X19wcm94eWRlQjZ2MTUwMDdFdgCqTW9fWk5TdDNfXzIxMV9fd3JhcF9pdGVySVBLY0VDMkI2djE1MDA3SVBjRUVSS05TMF9JVF9FRVBOU185ZW5hYmxlX2lmSVhzcjE0aXNfY29udmVydGlibGVJUzZfUzJfRUU1dmFsdWVFdkU0dHlwZUUAiFU/X1pOU3QzX18ybmVCNnYxNTAwN0lQS2NQY0VFYlJLTlNfMTFfX3dyYXBfaXRlcklUX0VFUktOUzRfSVQwX0VFAMdPKF9aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBLY0VkZUI2djE1MDA3RXYA3R0nX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQS2NFcHBCNnYxNTAwN0V2ALgCXl9aTlN0M19fMm1pQjZ2MTUwMDdJUEtjUGNFRURUbWljbGR0ZnBfNGJhc2VFY2xkdGZwMF80YmFzZUVFUktOU18xMV9fd3JhcF9pdGVySVRfRUVSS05TNV9JVDBfRUUAiVUnX1pOS1N0M19fMjExX193cmFwX2l0ZXJJUGNFbWlCNnYxNTAwN0VsAIpVO19aTlN0M19fMjVlcXVhbEI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUGNFRVMzX0VFYlRfUzRfVDBfAItVRl9aTlN0M19fMjE5X19kb3VibGVfb3Jfbm90aGluZ0ljRUV2Uk5TXzEwdW5pcXVlX3B0cklUX1BGdlB2RUVFUlBTMl9TOV8AjFVGX1pOU3QzX18yMTlfX2RvdWJsZV9vcl9ub3RoaW5nSWpFRXZSTlNfMTB1bmlxdWVfcHRySVRfUEZ2UHZFRUVSUFMyX1M5XwCNVSpfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJalBGdlB2RUVEMkI2djE1MDA3RXYA6lI3X1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGNQRnZQdkVFNWZpcnN0QjZ2MTUwMDdFdgDZMDZfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBjUEZ2UHZFRTVmaXJzdEI2djE1MDA3RXYA2TA3X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQY1BGdlB2RUU2c2Vjb25kQjZ2MTUwMDdFdgCXTxpfWk5TdDEzcnVudGltZV9lcnJvckMxRVBLYwCaXRhfWk5TdDEzcnVudGltZV9lcnJvckQxRXYAnmKQAV9aTktTdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFNmRvX2dldEVTNF9TNF9iUk5TXzhpb3NfYmFzZUVSalJOU18xMmJhc2ljX3N0cmluZ0ljUzNfTlNfOWFsbG9jYXRvckljRUVFRQCOVU9fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU1Y2xlYXJCNnYxNTAwN0V2AI9VngFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2YXBwZW5kQjZ2MTUwMDdJUGNFRU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2NwcDE3X2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUVSUzVfRTR0eXBlRVM5X1M5XwDuTWJfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTVfX2FkZHJfaW5fcmFuZ2VCNnYxNTAwN0lSY0VFYk9UXwDwTUFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBqUEZ2UHZFRUMyQjZ2MTUwMDdJUlMxX1M0X0VFT1RfT1QwXwCYUjdfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQalBGdlB2RUU1Zmlyc3RCNnYxNTAwN0V2ANkwRl9aTlN0M19fMjl1c2VfZmFjZXRCNnYxNTAwN0lOU18xMG1vbmV5cHVuY3RJY0xiMUVFRUVFUktUX1JLTlNfNmxvY2FsZUUAkFUzX1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIxRUUxMG5lZ19mb3JtYXRCNnYxNTAwN0V2AJFVNl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFMTNuZWdhdGl2ZV9zaWduQjZ2MTUwMDdFdgCSVTZfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRTEzcG9zaXRpdmVfc2lnbkI2djE1MDA3RXYAqVM2X1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIxRUUxM2RlY2ltYWxfcG9pbnRCNnYxNTAwN0V2APRTNl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFMTN0aG91c2FuZHNfc2VwQjZ2MTUwMDdFdgD1UzBfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRThncm91cGluZ0I2djE1MDA3RXYA9lM0X1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIxRUUxMWN1cnJfc3ltYm9sQjZ2MTUwMDdFdgCoUzRfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRTExZnJhY19kaWdpdHNCNnYxNTAwN0V2AJNVRl9aTlN0M19fMjl1c2VfZmFjZXRCNnYxNTAwN0lOU18xMG1vbmV5cHVuY3RJY0xiMEVFRUVFUktUX1JLTlNfNmxvY2FsZUUAlFUzX1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIwRUUxMG5lZ19mb3JtYXRCNnYxNTAwN0V2AJFVNl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFMTNuZWdhdGl2ZV9zaWduQjZ2MTUwMDdFdgCSVTZfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTEzcG9zaXRpdmVfc2lnbkI2djE1MDA3RXYAqVM2X1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIwRUUxM2RlY2ltYWxfcG9pbnRCNnYxNTAwN0V2APRTNl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFMTN0aG91c2FuZHNfc2VwQjZ2MTUwMDdFdgD1UzBfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRThncm91cGluZ0I2djE1MDA3RXYA9lM0X1pOS1N0M19fMjEwbW9uZXlwdW5jdEljTGIwRUUxMWN1cnJfc3ltYm9sQjZ2MTUwMDdFdgCoUzRfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTExZnJhY19kaWdpdHNCNnYxNTAwN0V2AJNVZV9aTlN0M19fMjE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFN19fcHJveHlDMkI2djE1MDA3RWNQTlNfMTViYXNpY19zdHJlYW1idWZJY1MyX0VFAKVNKl9aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBjRTRiYXNlQjZ2MTUwMDdFdgDdHT9fWk5TdDNfXzJlcUI2djE1MDA3SVBLY1BjRUViUktOU18xMV9fd3JhcF9pdGVySVRfRUVSS05TNF9JVDBfRUUAq08rX1pOS1N0M19fMjExX193cmFwX2l0ZXJJUEtjRTRiYXNlQjZ2MTUwMDdFdgDdHVJfWk5TdDNfXzI1ZXF1YWxCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBjRUVTM19OU18xMF9fZXF1YWxfdG9JY2NFRUVFYlRfUzZfVDBfVDFfAJVVJ19aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBjRXBsQjZ2MTUwMDdFbACWVTVfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJY1BGdlB2RUUxMWdldF9kZWxldGVyQjZ2MTUwMDdFdgCXVTBfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJY1BGdlB2RUU3cmVsZWFzZUI2djE1MDA3RXYAuT8tX1pOU3QzX18yMTB1bmlxdWVfcHRySWNQRnZQdkVFYVNCNnYxNTAwN0VPUzRfAJhVNV9aTlN0M19fMjEwdW5pcXVlX3B0cklqUEZ2UHZFRTExZ2V0X2RlbGV0ZXJCNnYxNTAwN0V2AJdVMF9aTlN0M19fMjEwdW5pcXVlX3B0cklqUEZ2UHZFRTdyZWxlYXNlQjZ2MTUwMDdFdgC5Py1fWk5TdDNfXzIxMHVuaXF1ZV9wdHJJalBGdlB2RUVhU0I2djE1MDA3RU9TNF8AmFUkX1pOU3QzX18yN3JldmVyc2VCNnYxNTAwN0lQakVFdlRfUzJfAKpUL19aTlN0M19fMjEwdW5pcXVlX3B0cklqUEZ2UHZFRTVyZXNldEI2djE1MDA3RVBqAOlSaF9aTktTdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFNmRvX2dldEVTNF9TNF9iUk5TXzhpb3NfYmFzZUVSalJlAJlVmQFfWk5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFOF9fZG9fZ2V0RVJTNF9TNF9iUktOU182bG9jYWxlRWpSalJiUktOU181Y3R5cGVJd0VFUk5TXzEwdW5pcXVlX3B0ckl3UEZ2UHZFRUVSUHdTTV8AmlUtX1pOS1N0M19fMjEwdW5pcXVlX3B0ckl3UEZ2UHZFRTNnZXRCNnYxNTAwN0V2AN0dKl9aTlN0M19fMjNlbmRCNnYxNTAwN0l3TG0xMEVFRVBUX1JBVDBfX1MxXwCbVUFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVB3UEZ2UHZFRUMyQjZ2MTUwMDdJUlMxX1M0X0VFT1RfT1QwXwCYUrEBX1pOU3QzX18yMTFfX21vbmV5X2dldEl3RTEzX19nYXRoZXJfaW5mb0ViUktOU182bG9jYWxlRVJOU18xMG1vbmV5X2Jhc2U3cGF0dGVybkVSd1M4X1JOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUk5TOV9Jd05TQV9Jd0VFTlNDX0l3RUVFRVNKX1NKX1JpAJxVQV9aTlN0M19fMjE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFcHBCNnYxNTAwN0VpAJ1VSl9aTktTdDNfXzIxOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRTdfX3Byb3h5ZGVCNnYxNTAwN0V2AN0dS19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTlwdXNoX2JhY2tFdwCFXktfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVpeEI2djE1MDA3RW0A2lNvX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQS3dFQzJCNnYxNTAwN0lQd0VFUktOUzBfSVRfRUVQTlNfOWVuYWJsZV9pZklYc3IxNGlzX2NvbnZlcnRpYmxlSVM2X1MyX0VFNXZhbHVlRXZFNHR5cGVFAIhVP19aTlN0M19fMm5lQjZ2MTUwMDdJUEt3UHdFRWJSS05TXzExX193cmFwX2l0ZXJJVF9FRVJLTlM0X0lUMF9FRQDHTyhfWk5LU3QzX18yMTFfX3dyYXBfaXRlcklQS3dFZGVCNnYxNTAwN0V2AN0dJ19aTlN0M19fMjExX193cmFwX2l0ZXJJUEt3RXBwQjZ2MTUwMDdFdgCKT15fWk5TdDNfXzJtaUI2djE1MDA3SVBLd1B3RUVEVG1pY2xkdGZwXzRiYXNlRWNsZHRmcDBfNGJhc2VFRVJLTlNfMTFfX3dyYXBfaXRlcklUX0VFUktOUzVfSVQwX0VFAJBPJ19aTktTdDNfXzIxMV9fd3JhcF9pdGVySVB3RW1pQjZ2MTUwMDdFbACeVTtfWk5TdDNfXzI1ZXF1YWxCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVB3RUVTM19FRWJUX1M0X1QwXwCfVUZfWk5TdDNfXzIxOV9fZG91YmxlX29yX25vdGhpbmdJd0VFdlJOU18xMHVuaXF1ZV9wdHJJVF9QRnZQdkVFRVJQUzJfUzlfAKBVN19aTktTdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVB3UEZ2UHZFRTVmaXJzdEI2djE1MDA3RXYA2TCQAV9aTktTdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFNmRvX2dldEVTNF9TNF9iUk5TXzhpb3NfYmFzZUVSalJOU18xMmJhc2ljX3N0cmluZ0l3UzNfTlNfOWFsbG9jYXRvckl3RUVFRQChVU9fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU1Y2xlYXJCNnYxNTAwN0V2AKJVngFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU2YXBwZW5kQjZ2MTUwMDdJUHdFRU5TXzllbmFibGVfaWZJWHNyMjdfX2lzX2NwcDE3X2ZvcndhcmRfaXRlcmF0b3JJVF9FRTV2YWx1ZUVSUzVfRTR0eXBlRVM5X1M5XwCjVW1fWk5TdDNfXzIyNV9fZGVidWdfZGJfaW52YWxpZGF0ZV9hbGxCNnYxNTAwN0lOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFRUV2UFRfAJEpXV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE4X19nZXRfbG9uZ19wb2ludGVyQjZ2MTUwMDdFdgDdHSZfWk5TdDNfXzIxMWNoYXJfdHJhaXRzSXdFNmFzc2lnbkVSd1JLdwCkVVpfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxNV9fc2V0X2xvbmdfc2l6ZUI2djE1MDA3RW0A201eX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTlfX2dldF9zaG9ydF9wb2ludGVyQjZ2MTUwMDdFdgDZMFtfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxNl9fc2V0X3Nob3J0X3NpemVCNnYxNTAwN0VtAMBNU19aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU4Y2FwYWNpdHlCNnYxNTAwN0V2AKVVT19aTlN0M19fMjhkaXN0YW5jZUI2djE1MDA3SVB3RUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTM19TM18A9U9iX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE1X19hZGRyX2luX3JhbmdlQjZ2MTUwMDdJUndFRWJPVF8AplVQX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFOV9fZ3Jvd19ieUVtbW1tbW0A6V1RX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFN19fYWxsb2NCNnYxNTAwN0V2ANkwWV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUMyQjZ2MTUwMDdJUHd2RUVUX1M4X1JLUzRfAKdVS19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZhcHBlbmRFUEt3bQD5XVVfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxMF9fc2V0X3NpemVCNnYxNTAwN0VtAOlNRl9aTlN0M19fMjl1c2VfZmFjZXRCNnYxNTAwN0lOU18xMG1vbmV5cHVuY3RJd0xiMUVFRUVFUktUX1JLTlNfNmxvY2FsZUUAqFUzX1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUUxMG5lZ19mb3JtYXRCNnYxNTAwN0V2AJFVNl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMTNuZWdhdGl2ZV9zaWduQjZ2MTUwMDdFdgCSVU5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVhU0I2djE1MDA3RU9TNV8AqVU2X1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUUxM3Bvc2l0aXZlX3NpZ25CNnYxNTAwN0V2AKlTNl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMTNkZWNpbWFsX3BvaW50QjZ2MTUwMDdFdgD0UzZfWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRTEzdGhvdXNhbmRzX3NlcEI2djE1MDA3RXYA9VMwX1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUU4Z3JvdXBpbmdCNnYxNTAwN0V2APZTNF9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMTFjdXJyX3N5bWJvbEI2djE1MDA3RXYAqFM0X1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUUxMWZyYWNfZGlnaXRzQjZ2MTUwMDdFdgCTVUZfWk5TdDNfXzI5dXNlX2ZhY2V0QjZ2MTUwMDdJTlNfMTBtb25leXB1bmN0SXdMYjBFRUVFRVJLVF9SS05TXzZsb2NhbGVFAKpVM19aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFMTBuZWdfZm9ybWF0QjZ2MTUwMDdFdgCRVTZfWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRTEzbmVnYXRpdmVfc2lnbkI2djE1MDA3RXYAklU2X1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUUxM3Bvc2l0aXZlX3NpZ25CNnYxNTAwN0V2AKlTNl9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFMTNkZWNpbWFsX3BvaW50QjZ2MTUwMDdFdgD0UzZfWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRTEzdGhvdXNhbmRzX3NlcEI2djE1MDA3RXYA9VMwX1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUU4Z3JvdXBpbmdCNnYxNTAwN0V2APZTNF9aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFMTFjdXJyX3N5bWJvbEI2djE1MDA3RXYAqFM0X1pOS1N0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUUxMWZyYWNfZGlnaXRzQjZ2MTUwMDdFdgCTVWVfWk5TdDNfXzIxOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRTdfX3Byb3h5QzJCNnYxNTAwN0V3UE5TXzE1YmFzaWNfc3RyZWFtYnVmSXdTMl9FRQC3TSpfWk5LU3QzX18yMTFfX3dyYXBfaXRlcklQd0U0YmFzZUI2djE1MDA3RXYA3R0/X1pOU3QzX18yZXFCNnYxNTAwN0lQS3dQd0VFYlJLTlNfMTFfX3dyYXBfaXRlcklUX0VFUktOUzRfSVQwX0VFAKtPK19aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBLd0U0YmFzZUI2djE1MDA3RXYA3R1SX1pOU3QzX18yNWVxdWFsQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQd0VFUzNfTlNfMTBfX2VxdWFsX3RvSXd3RUVFRWJUX1M2X1QwX1QxXwCrVSdfWk5LU3QzX18yMTFfX3dyYXBfaXRlcklQd0VwbEI2djE1MDA3RWwArFU1X1pOU3QzX18yMTB1bmlxdWVfcHRySXdQRnZQdkVFMTFnZXRfZGVsZXRlckI2djE1MDA3RXYAl1UwX1pOU3QzX18yMTB1bmlxdWVfcHRySXdQRnZQdkVFN3JlbGVhc2VCNnYxNTAwN0V2ALk/LV9aTlN0M19fMjEwdW5pcXVlX3B0ckl3UEZ2UHZFRWFTQjZ2MTUwMDdFT1M0XwCYVSBfWk5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFMmlkRQPDDyBfWk5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFMmlkRQPCDyBfWk5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMmlkRQPBD3lfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxM19fbW92ZV9hc3NpZ25CNnYxNTAwN0VSUzVfTlNfMTdpbnRlZ3JhbF9jb25zdGFudEliTGIxRUVFAK1VIF9aTlN0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUUyaWRFA8APY19aTktTdDNfXzI5bW9uZXlfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFNmRvX3B1dEVTNF9iUk5TXzhpb3NfYmFzZUVjZQCuVTlfWk5TdDNfXzJlcUI2djE1MDA3SWNQRnZQdkVFRWJSS05TXzEwdW5pcXVlX3B0cklUX1QwX0VFRG4Ar1WZAV9aTlN0M19fMjExX19tb25leV9wdXRJY0UxM19fZ2F0aGVyX2luZm9FYmJSS05TXzZsb2NhbGVFUk5TXzEwbW9uZXlfYmFzZTdwYXR0ZXJuRVJjUzhfUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTRl9TRl9SaQCwVaIBX1pOU3QzX18yMTFfX21vbmV5X3B1dEljRThfX2Zvcm1hdEVQY1JTMl9TM19qUEtjUzVfUktOU181Y3R5cGVJY0VFYlJLTlNfMTBtb25leV9iYXNlN3BhdHRlcm5FY2NSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVTTF9TTF9pALFVLF9aTktTdDNfXzIxMHVuaXF1ZV9wdHJJY1BGdlB2RUVjdmJCNnYxNTAwN0V2AIscM19aTktTdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFMTBwb3NfZm9ybWF0QjZ2MTUwMDdFdgCyVTNfWk5LU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTEwcG9zX2Zvcm1hdEI2djE1MDA3RXYAslVQX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTViZWdpbkI2djE1MDA3RXYA+VMoX1pOS1N0M19fMjExX193cmFwX2l0ZXJJUEtjRXBsQjZ2MTUwMDdFbACWVU5fWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFM2VuZEI2djE1MDA3RXYA+lM8X1pOU3QzX18yNGNvcHlCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBLY0VFUGNFRVQwX1RfUzdfUzZfALNVKl9aTlN0M19fMjE0bnVtZXJpY19saW1pdHNJakUzbWF4QjZ2MTUwMDdFdgDTTY0BX1pOS1N0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU2ZG9fcHV0RVM0X2JSTlNfOGlvc19iYXNlRWNSS05TXzEyYmFzaWNfc3RyaW5nSWNTM19OU185YWxsb2NhdG9ySWNFRUVFALRVY19aTktTdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFNmRvX3B1dEVTNF9iUk5TXzhpb3NfYmFzZUV3ZQC1VTlfWk5TdDNfXzJlcUI2djE1MDA3SXdQRnZQdkVFRWJSS05TXzEwdW5pcXVlX3B0cklUX1QwX0VFRG4Ar1WvAV9aTlN0M19fMjExX19tb25leV9wdXRJd0UxM19fZ2F0aGVyX2luZm9FYmJSS05TXzZsb2NhbGVFUk5TXzEwbW9uZXlfYmFzZTdwYXR0ZXJuRVJ3UzhfUk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSTlM5X0l3TlNBX0l3RUVOU0NfSXdFRUVFU0pfUmkAtlW5AV9aTlN0M19fMjExX19tb25leV9wdXRJd0U4X19mb3JtYXRFUHdSUzJfUzNfalBLd1M1X1JLTlNfNWN0eXBlSXdFRWJSS05TXzEwbW9uZXlfYmFzZTdwYXR0ZXJuRXd3UktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktOU0VfSXdOU0ZfSXdFRU5TSF9Jd0VFRUVTUV9pALdVNl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUHdQRnZQdkVFNWZpcnN0QjZ2MTUwMDdFdgDZMDdfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVB3UEZ2UHZFRTZzZWNvbmRCNnYxNTAwN0V2AJdPLF9aTktTdDNfXzIxMHVuaXF1ZV9wdHJJd1BGdlB2RUVjdmJCNnYxNTAwN0V2AIscM19aTktTdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFMTBwb3NfZm9ybWF0QjZ2MTUwMDdFdgCyVTNfWk5LU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRTEwcG9zX2Zvcm1hdEI2djE1MDA3RXYAslVQX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTViZWdpbkI2djE1MDA3RXYA+VMoX1pOS1N0M19fMjExX193cmFwX2l0ZXJJUEt3RXBsQjZ2MTUwMDdFbACsVU5fWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFM2VuZEI2djE1MDA3RXYAlVQ8X1pOU3QzX18yNGNvcHlCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBLd0VFUHdFRVQwX1RfUzdfUzZfALhVjQFfWk5LU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTZkb19wdXRFUzRfYlJOU184aW9zX2Jhc2VFd1JLTlNfMTJiYXNpY19zdHJpbmdJd1MzX05TXzlhbGxvY2F0b3JJd0VFRUUAuVVTX1pOU3QzX18yNl9fY29weUI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEtjRUVTNF9QY0xpMEVFRU5TXzRwYWlySVRfVDFfRUVTN19UMF9TOF8AulUsX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQS2NFQzJCNnYxNTAwN0VQS3ZTMl8A+1M3X1pOU3QzX18yMjNfX2xpYmNwcF9udW1lcmljX2xpbWl0c0lqTGIxRUUzbWF4QjZ2MTUwMDdFdgDTTSdfWk5TdDNfXzIxMV9fd3JhcF9pdGVySVBLY0VwTEI2djE1MDA3RWwAu1VTX1pOU3QzX18yNl9fY29weUI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEt3RUVTNF9Qd0xpMEVFRU5TXzRwYWlySVRfVDFfRUVTN19UMF9TOF8AvFUsX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQS3dFQzJCNnYxNTAwN0VQS3ZTMl8A+1MnX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQS3dFcExCNnYxNTAwN0VsAL1VaF9aTktTdDNfXzI4bWVzc2FnZXNJY0U3ZG9fb3BlbkVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS05TXzZsb2NhbGVFAPc+XV9aTktTdDNfXzI4bWVzc2FnZXNJY0U2ZG9fZ2V0RWxpaVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQC+VSFfWk5LU3QzX18yOG1lc3NhZ2VzSWNFOGRvX2Nsb3NlRWwAkRFoX1pOS1N0M19fMjhtZXNzYWdlc0l3RTdkb19vcGVuRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLTlNfNmxvY2FsZUUA9z5dX1pOS1N0M19fMjhtZXNzYWdlc0l3RTZkb19nZXRFbGlpUktOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAL9VIV9aTktTdDNfXzI4bWVzc2FnZXNJd0U4ZG9fY2xvc2VFbACRES5fWk5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSWNjMTFfX21ic3RhdGVfdEVEMkV2ANkwJl9aTlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVEMkV2ANkwLl9aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJY2MxMV9fbWJzdGF0ZV90RUQwRXYA4kAuX1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUljYzExX19tYnN0YXRlX3RFRDFFdgDZMC5fWk5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSXdjMTFfX21ic3RhdGVfdEVEMkV2AMBVJl9aTlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVEMkV2AMFVLl9aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJd2MxMV9fbWJzdGF0ZV90RUQwRXYAwlUuX1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUl3YzExX19tYnN0YXRlX3RFRDFFdgDAVS9fWk5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURzYzExX19tYnN0YXRlX3RFRDJFdgDZMCdfWk5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUQyRXYA2TAvX1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEc2MxMV9fbWJzdGF0ZV90RUQwRXYA4kAvX1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEc2MxMV9fbWJzdGF0ZV90RUQxRXYA2TAvX1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEaWMxMV9fbWJzdGF0ZV90RUQyRXYA2TAnX1pOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVEMkV2ANkwL19aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRGljMTFfX21ic3RhdGVfdEVEMEV2AOJAL19aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRGljMTFfX21ic3RhdGVfdEVEMUV2ANkwMF9aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRHNEdTExX19tYnN0YXRlX3RFRDJFdgDZMChfWk5TdDNfXzI3Y29kZWN2dElEc0R1MTFfX21ic3RhdGVfdEVEMkV2ANkwMF9aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRHNEdTExX19tYnN0YXRlX3RFRDBFdgDiQDBfWk5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURzRHUxMV9fbWJzdGF0ZV90RUQxRXYA2TAwX1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEaUR1MTFfX21ic3RhdGVfdEVEMkV2ANkwKF9aTlN0M19fMjdjb2RlY3Z0SURpRHUxMV9fbWJzdGF0ZV90RUQyRXYA2TAwX1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEaUR1MTFfX21ic3RhdGVfdEVEMEV2AOJAMF9aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRGlEdTExX19tYnN0YXRlX3RFRDFFdgDZMBpfWk5TdDNfXzI2bG9jYWxlNV9faW1wQzJFbQDDVRlfWlRWTlN0M19fMjZsb2NhbGU1X19pbXBFA78PIl9aTlN0M19fMjZsb2NhbGU1ZmFjZXRDMkI2djE1MDA3RW0AxFVHX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRUMyRW0AxVVTX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTVjbGVhckI2djE1MDA3RXYAxlU0X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzdjb2xsYXRlSWNFRUVFdlBUXwDHVTRfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfN2NvbGxhdGVJd0VFRUV2UFRfAMhVMl9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU181Y3R5cGVJY0VFRUV2UFRfAMpVMl9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU181Y3R5cGVJd0VFRUV2UFRfAMtVQl9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU183Y29kZWN2dEljYzExX19tYnN0YXRlX3RFRUVFdlBUXwDMVUJfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RUVFRXZQVF8AzlVDX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzdjb2RlY3Z0SURzYzExX19tYnN0YXRlX3RFRUVFdlBUXwDPVUNfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVFRUV2UFRfANBVRF9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU183Y29kZWN2dElEc0R1MTFfX21ic3RhdGVfdEVFRUV2UFRfANFVRF9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU183Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVFRUV2UFRfANJVNV9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU184bnVtcHVuY3RJY0VFRUV2UFRfANRVNV9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU184bnVtcHVuY3RJd0VFRUV2UFRfANZVZF9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU183bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVFRXZQVF8A11VkX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRUVFdlBUXwDYVWRfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRUV2UFRfANlVZF9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU183bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVFRXZQVF8A2lU8X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzEwbW9uZXlwdW5jdEljTGIwRUVFRUV2UFRfANxVPF9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU18xMG1vbmV5cHVuY3RJY0xiMUVFRUVFdlBUXwDdVTxfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfMTBtb25leXB1bmN0SXdMYjBFRUVFRXZQVF8A3lU8X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzEwbW9uZXlwdW5jdEl3TGIxRUVFRUV2UFRfAN9VZl9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU185bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVFdlBUXwDhVWZfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfOW1vbmV5X2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVFRXZQVF8A41VmX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRUV2UFRfAOVVZl9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU185bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRUVFdlBUXwDnVWVfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVFdlBUXwDoVWVfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRUVFdlBUXwDpVWVfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVFdlBUXwDrVWVfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfOHRpbWVfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRUVFdlBUXwDtVTVfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfOG1lc3NhZ2VzSWNFRUVFdlBUXwDvVTVfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfOG1lc3NhZ2VzSXdFRUVFdlBUXwDwVU9fWk5TdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFRDJCNnYxNTAwN0V2APFVGV9aVFZOU3QzX18yNmxvY2FsZTVmYWNldEUDvg9+X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUVDMkI2djE1MDA3SURuTlNfMThfX2RlZmF1bHRfaW5pdF90YWdFRUVPVF9PVDBfAPJVXF9aTlN0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUUxNl9fZGVzdHJveV92ZWN0b3JDMkVSUzZfALxLkgFfWk5TdDNfXzIxOF9fbWFrZV90cmFuc2FjdGlvbkI2djE1MDA3SU5TXzZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzRfTG0zMEVFRUUxNl9fZGVzdHJveV92ZWN0b3JFRUVOU18xM19fdHJhbnNhY3Rpb25JVF9FRVNBXwDzVWtfWk5TdDNfXzIxOV9fZGVidWdfZGJfaW5zZXJ0X2NCNnYxNTAwN0lOU182dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVM0X0xtMzBFRUVFRUVFdlBUXwCRKVpfWk5TdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMTFfX3ZhbGxvY2F0ZUI2djE1MDA3RW0A9FVZX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTE4X19jb25zdHJ1Y3RfYXRfZW5kRW0A9VV2X1pOU3QzX18yMTNfX3RyYW5zYWN0aW9uSU5TXzZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzRfTG0zMEVFRUUxNl9fZGVzdHJveV92ZWN0b3JFRUQyQjZ2MTUwMDdFdgD2VYABX1pOU3QzX18yMTNfX3RyYW5zYWN0aW9uSU5TXzZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzRfTG0zMEVFRUUxNl9fZGVzdHJveV92ZWN0b3JFRTEwX19jb21wbGV0ZUI2djE1MDA3RXYA91VTX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU0c2l6ZUI2djE1MDA3RXYA+FVVX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTdfX2NsZWFyQjZ2MTUwMDdFdgD5VWFfWk5LU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTE3X19hbm5vdGF0ZV9zaHJpbmtCNnYxNTAwN0VtAPpVcV9aTlN0M19fMjI1X19kZWJ1Z19kYl9pbnZhbGlkYXRlX2FsbEI2djE1MDA3SU5TXzZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzRfTG0zMEVFRUVFRUV2UFRfAJEpGF9aTlN0M19fMjdjb2xsYXRlSWNFMmlkRQO9DxtfWk5TdDNfXzI2bG9jYWxlMmlkNV9fZ2V0RXYA+1UsX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsRVBOUzBfNWZhY2V0RWwA/FUgX1pOU3QzX18yN2NvbGxhdGVJY0VDMkI2djE1MDA3RW0A/VUYX1pOU3QzX18yN2NvbGxhdGVJd0UyaWRFA7wPIF9aTlN0M19fMjdjb2xsYXRlSXdFQzJCNnYxNTAwN0VtAP5VGl9aTlN0M19fMjVjdHlwZUljRUMxRVBLbWJtAJhXHl9aTlN0M19fMjVjdHlwZUl3RUMyQjZ2MTUwMDdFbQD/VS5fWk5TdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFQzJCNnYxNTAwN0VtAIBWJl9aTlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVDMUVtAL1XJ19aTlN0M19fMjdjb2RlY3Z0SURzYzExX19tYnN0YXRlX3RFMmlkRQO7Dy9fWk5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUMyQjZ2MTUwMDdFbQCBVidfWk5TdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RTJpZEUDug8vX1pOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RW0AglYoX1pOU3QzX18yN2NvZGVjdnRJRHNEdTExX19tYnN0YXRlX3RFMmlkRQO5DzBfWk5TdDNfXzI3Y29kZWN2dElEc0R1MTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RW0Ag1YoX1pOU3QzX18yN2NvZGVjdnRJRGlEdTExX19tYnN0YXRlX3RFMmlkRQO4DzBfWk5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RW0AhFYZX1pOU3QzX18yOG51bXB1bmN0SWNFQzFFbQCJWBlfWk5TdDNfXzI4bnVtcHVuY3RJd0VDMUVtAIpYUF9aTlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFQzJCNnYxNTAwN0VtAIVWUF9aTlN0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFQzJCNnYxNTAwN0VtAIZWUF9aTlN0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFQzJCNnYxNTAwN0VtAIdWUF9aTlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFQzJCNnYxNTAwN0VtAIhWKF9aTlN0M19fMjEwbW9uZXlwdW5jdEljTGIwRUVDMkI2djE1MDA3RW0AiVYoX1pOU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRUMyQjZ2MTUwMDdFbQCKVihfWk5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFQzJCNnYxNTAwN0VtAItWKF9aTlN0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUVDMkI2djE1MDA3RW0AjFZKX1pOU3QzX18yOW1vbmV5X2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTJpZEUDtw9SX1pOU3QzX18yOW1vbmV5X2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUMyQjZ2MTUwMDdFbQCNVkpfWk5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFMmlkRQO2D1JfWk5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFQzJCNnYxNTAwN0VtAI5WSl9aTlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUyaWRFA7UPUl9aTlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVDMkI2djE1MDA3RW0Aj1ZKX1pOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTJpZEUDtA9SX1pOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUMyQjZ2MTUwMDdFbQCQVklfWk5TdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUyaWRFA7MPUV9aTlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUMyQjZ2MTUwMDdFbQCRVklfWk5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUyaWRFA7IPUV9aTlN0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUMyQjZ2MTUwMDdFbQCSVklfWk5TdDNfXzI4dGltZV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUyaWRFA7EPUV9aTlN0M19fMjh0aW1lX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUMyQjZ2MTUwMDdFbQCTVklfWk5TdDNfXzI4dGltZV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUyaWRFA7APUV9aTlN0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUMyQjZ2MTUwMDdFbQCUVhlfWk5TdDNfXzI4bWVzc2FnZXNJY0UyaWRFA68PIV9aTlN0M19fMjhtZXNzYWdlc0ljRUMyQjZ2MTUwMDdFbQCVVhlfWk5TdDNfXzI4bWVzc2FnZXNJd0UyaWRFA64PIV9aTlN0M19fMjhtZXNzYWdlc0l3RUMyQjZ2MTUwMDdFbQCWVmFfWk5TdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMTZfX2Rlc3Ryb3lfdmVjdG9yY2xCNnYxNTAwN0V2AJdWVl9aTlN0M19fMjZsb2NhbGU1X19pbXBDMkVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVtAJhWGl9aTlN0M19fMjZsb2NhbGU3Y2xhc3NpY0V2AJlWU19aTlN0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUVhU0I2djE1MDA3RVJLUzZfAJpWT19aTlN0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUVpeEI2djE1MDA3RW0Am1ZcX1pOU3QzX18yMTRjb2xsYXRlX2J5bmFtZUljRUMxRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0A/1Y8X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE0Y29sbGF0ZV9ieW5hbWVJY0VFRUV2UFRfAMdVXF9aTlN0M19fMjE0Y29sbGF0ZV9ieW5hbWVJd0VDMUVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVtAIVXPF9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU18xNGNvbGxhdGVfYnluYW1lSXdFRUVFdlBUXwDIVVpfWk5TdDNfXzIxMmN0eXBlX2J5bmFtZUljRUMxRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0Ao1c6X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzEyY3R5cGVfYnluYW1lSWNFRUVFdlBUXwDKVVpfWk5TdDNfXzIxMmN0eXBlX2J5bmFtZUl3RUMxRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0Aqlc6X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzEyY3R5cGVfYnluYW1lSXdFRUVFdlBUXwDLVXJfWk5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSWNjMTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0AnFZKX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE0Y29kZWN2dF9ieW5hbWVJY2MxMV9fbWJzdGF0ZV90RUVFRXZQVF8AzFVyX1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUl3YzExX19tYnN0YXRlX3RFQzJCNnYxNTAwN0VSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVtAJ1WSl9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU18xNGNvZGVjdnRfYnluYW1lSXdjMTFfX21ic3RhdGVfdEVFRUV2UFRfAM5Vc19aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRHNjMTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0AnlZLX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE0Y29kZWN2dF9ieW5hbWVJRHNjMTFfX21ic3RhdGVfdEVFRUV2UFRfAM9Vc19aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRGljMTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0An1ZLX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE0Y29kZWN2dF9ieW5hbWVJRGljMTFfX21ic3RhdGVfdEVFRUV2UFRfANBVdF9aTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRHNEdTExX19tYnN0YXRlX3RFQzJCNnYxNTAwN0VSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVtAKBWTF9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU18xNGNvZGVjdnRfYnluYW1lSURzRHUxMV9fbWJzdGF0ZV90RUVFRXZQVF8A0VV0X1pOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEaUR1MTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0AoVZMX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE0Y29kZWN2dF9ieW5hbWVJRGlEdTExX19tYnN0YXRlX3RFRUVFdlBUXwDSVV1fWk5TdDNfXzIxNW51bXB1bmN0X2J5bmFtZUljRUMxRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0AnFg9X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE1bnVtcHVuY3RfYnluYW1lSWNFRUVFdlBUXwDUVV1fWk5TdDNfXzIxNW51bXB1bmN0X2J5bmFtZUl3RUMxRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0AoVg9X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE1bnVtcHVuY3RfYnluYW1lSXdFRUVFdlBUXwDWVWtfWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjBFRUMyQjZ2MTUwMDdFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFbQCiVkNfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfMTdtb25leXB1bmN0X2J5bmFtZUljTGIwRUVFRUV2UFRfANxVa19aTlN0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMUVFQzJCNnYxNTAwN0VSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVtAKNWQ19aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU18xN21vbmV5cHVuY3RfYnluYW1lSWNMYjFFRUVFRXZQVF8A3VVrX1pOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIwRUVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0ApFZDX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE3bW9uZXlwdW5jdF9ieW5hbWVJd0xiMEVFRUVFdlBUXwDeVWtfWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjFFRUMyQjZ2MTUwMDdFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFbQClVkNfWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfMTdtb25leXB1bmN0X2J5bmFtZUl3TGIxRUVFRUV2UFRfAN9VhAFfWk5TdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUMyQjZ2MTUwMDdFUktOU18xMmJhc2ljX3N0cmluZ0ljUzNfTlNfOWFsbG9jYXRvckljRUVFRW0AplZtX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE1dGltZV9nZXRfYnluYW1lSWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVFdlBUXwDoVYkBX1pOU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TMl9JY0VFTlNfOWFsbG9jYXRvckljRUVFRW0Ap1ZtX1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE1dGltZV9nZXRfYnluYW1lSXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRUVFdlBUXwDpVYQBX1pOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY1MzX05TXzlhbGxvY2F0b3JJY0VFRUVtAKhWbV9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU18xNXRpbWVfcHV0X2J5bmFtZUljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVFRXZQVF8A61WJAV9aTlN0M19fMjE1dGltZV9wdXRfYnluYW1lSXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFQzJCNnYxNTAwN0VSS05TXzEyYmFzaWNfc3RyaW5nSWNOUzJfSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVtAKlWbV9aTlN0M19fMjZsb2NhbGU1X19pbXA3aW5zdGFsbElOU18xNXRpbWVfcHV0X2J5bmFtZUl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVFRXZQVF8A7VVlX1pOU3QzX18yMTVtZXNzYWdlc19ieW5hbWVJY0VDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0AqlY9X1pOU3QzX18yNmxvY2FsZTVfX2ltcDdpbnN0YWxsSU5TXzE1bWVzc2FnZXNfYnluYW1lSWNFRUVFdlBUXwDvVWVfWk5TdDNfXzIxNW1lc3NhZ2VzX2J5bmFtZUl3RUMyQjZ2MTUwMDdFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFbQCrVj1fWk5TdDNfXzI2bG9jYWxlNV9faW1wN2luc3RhbGxJTlNfMTVtZXNzYWdlc19ieW5hbWVJd0VFRUV2UFRfAPBVJl9aTlN0M19fMjZsb2NhbGU1X19pbXAxMm1ha2VfY2xhc3NpY0V2AKxWZl9aTlN0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUUxOV9fY29weV9hc3NpZ25fYWxsb2NCNnYxNTAwN0VSS1M2XwCREd8BX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTZhc3NpZ25JUFMzX0VFTlNfOWVuYWJsZV9pZklYYWFzcjI3X19pc19jcHAxN19mb3J3YXJkX2l0ZXJhdG9ySVRfRUU1dmFsdWVzcjE2aXNfY29uc3RydWN0aWJsZUlTM19OU18xNWl0ZXJhdG9yX3RyYWl0c0lTQV9FOXJlZmVyZW5jZUVFRTV2YWx1ZUV2RTR0eXBlRVNBX1NBXwCtVi1fWlRWTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJY2MxMV9fbWJzdGF0ZV90RUUDrQ8xX1pOU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUMyQjZ2MTUwMDdFUEtjbQCuVi1fWlRWTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJd2MxMV9fbWJzdGF0ZV90RUUDrA8pX1pOU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RUMyRVBLY20Ar1YuX1pUVk5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURzYzExX19tYnN0YXRlX3RFRQOrDzJfWk5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUMyQjZ2MTUwMDdFUEtjbQCwVi5fWlRWTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRGljMTFfX21ic3RhdGVfdEVFA6oPMl9aTlN0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFQzJCNnYxNTAwN0VQS2NtALFWL19aVFZOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEc0R1MTFfX21ic3RhdGVfdEVFA6kPM19aTlN0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RUMyQjZ2MTUwMDdFUEtjbQCyVi9fWlRWTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRGlEdTExX19tYnN0YXRlX3RFRQOoDzNfWk5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVDMkI2djE1MDA3RVBLY20As1YmX1pUVk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjBFRUUDpw8sX1pOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIwRUU0aW5pdEVQS2MAtFYmX1pUVk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjFFRUUDpg8sX1pOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIxRUU0aW5pdEVQS2MAtVYmX1pUVk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjBFRUUDpQ8sX1pOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIwRUU0aW5pdEVQS2MAtlYmX1pUVk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjFFRUUDpA8sX1pOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIxRUU0aW5pdEVQS2MAt1ZfX1pOU3QzX18yMThfX3RpbWVfZ2V0X3N0b3JhZ2VJY0VDMkVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAuFZQX1pUVk5TdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUDow9RX1pOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRDJCNnYxNTAwN0V2ANkwX19aTlN0M19fMjE4X190aW1lX2dldF9zdG9yYWdlSXdFQzJFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFALlWUF9aVFZOU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA6IPUV9aTlN0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUQyQjZ2MTUwMDdFdgDZMFBfWlRWTlN0M19fMjE1dGltZV9wdXRfYnluYW1lSWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQOhD3xfWk5TdDNfXzI4dGltZV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY1MzX05TXzlhbGxvY2F0b3JJY0VFRUVtALpWUF9aVFZOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA6APgQFfWk5TdDNfXzI4dGltZV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVDMkI2djE1MDA3RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TMl9JY0VFTlNfOWFsbG9jYXRvckljRUVFRW0Au1YgX1pUVk5TdDNfXzIxNW1lc3NhZ2VzX2J5bmFtZUljRUUDnw8gX1pUVk5TdDNfXzIxNW1lc3NhZ2VzX2J5bmFtZUl3RUUDng8eX1pOU3QzX18yNmxvY2FsZTVfX2ltcEMyRVJLUzFfALxWW19aTlN0M19fMjZsb2NhbGU1X19pbXBDMkVSS1MxX1JLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRWkAvVYiX1pOU3QzX18yNmxvY2FsZTVfX2ltcEMyRVJLUzFfUzNfaQC+VjxfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfN2NvbGxhdGVJY0VFRUV2UktTMV8Av1Y8X1pOU3QzX18yNmxvY2FsZTVfX2ltcDEyaW5zdGFsbF9mcm9tSU5TXzdjb2xsYXRlSXdFRUVFdlJLUzFfAMBWOl9aTlN0M19fMjZsb2NhbGU1X19pbXAxMmluc3RhbGxfZnJvbUlOU181Y3R5cGVJY0VFRUV2UktTMV8AwVY6X1pOU3QzX18yNmxvY2FsZTVfX2ltcDEyaW5zdGFsbF9mcm9tSU5TXzVjdHlwZUl3RUVFRXZSS1MxXwDCVkpfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUVFRXZSS1MxXwDDVktfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfN2NvZGVjdnRJRHNjMTFfX21ic3RhdGVfdEVFRUV2UktTMV8AxFZLX1pOU3QzX18yNmxvY2FsZTVfX2ltcDEyaW5zdGFsbF9mcm9tSU5TXzdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFRUVFdlJLUzFfAMVWTF9aTlN0M19fMjZsb2NhbGU1X19pbXAxMmluc3RhbGxfZnJvbUlOU183Y29kZWN2dElEc0R1MTFfX21ic3RhdGVfdEVFRUV2UktTMV8AxlZMX1pOU3QzX18yNmxvY2FsZTVfX2ltcDEyaW5zdGFsbF9mcm9tSU5TXzdjb2RlY3Z0SURpRHUxMV9fbWJzdGF0ZV90RUVFRXZSS1MxXwDHVkpfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RUVFRXZSS1MxXwDIVkRfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfMTBtb25leXB1bmN0SWNMYjBFRUVFRXZSS1MxXwDJVkRfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfMTBtb25leXB1bmN0SWNMYjFFRUVFRXZSS1MxXwDKVkRfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfMTBtb25leXB1bmN0SXdMYjBFRUVFRXZSS1MxXwDLVkRfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfMTBtb25leXB1bmN0SXdMYjFFRUVFRXZSS1MxXwDMVm5fWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfOW1vbmV5X2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVFRXZSS1MxXwDNVm5fWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfOW1vbmV5X2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVFRXZSS1MxXwDOVm5fWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfOW1vbmV5X3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVFRXZSS1MxXwDPVm5fWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVFRXZSS1MxXwDQVj1fWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfOG51bXB1bmN0SWNFRUVFdlJLUzFfANFWPV9aTlN0M19fMjZsb2NhbGU1X19pbXAxMmluc3RhbGxfZnJvbUlOU184bnVtcHVuY3RJd0VFRUV2UktTMV8A0lZsX1pOU3QzX18yNmxvY2FsZTVfX2ltcDEyaW5zdGFsbF9mcm9tSU5TXzdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVFdlJLUzFfANNWbF9aTlN0M19fMjZsb2NhbGU1X19pbXAxMmluc3RhbGxfZnJvbUlOU183bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVFRXZSS1MxXwDUVmxfWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRUV2UktTMV8A1VZsX1pOU3QzX18yNmxvY2FsZTVfX2ltcDEyaW5zdGFsbF9mcm9tSU5TXzdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRUVFdlJLUzFfANZWbV9aTlN0M19fMjZsb2NhbGU1X19pbXAxMmluc3RhbGxfZnJvbUlOU184dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRUV2UktTMV8A11ZtX1pOU3QzX18yNmxvY2FsZTVfX2ltcDEyaW5zdGFsbF9mcm9tSU5TXzh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVFRXZSS1MxXwDYVm1fWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVFdlJLUzFfANlWbV9aTlN0M19fMjZsb2NhbGU1X19pbXAxMmluc3RhbGxfZnJvbUlOU184dGltZV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFRUV2UktTMV8A2lY9X1pOU3QzX18yNmxvY2FsZTVfX2ltcDEyaW5zdGFsbF9mcm9tSU5TXzhtZXNzYWdlc0ljRUVFRXZSS1MxXwDbVj1fWk5TdDNfXzI2bG9jYWxlNV9faW1wMTJpbnN0YWxsX2Zyb21JTlNfOG1lc3NhZ2VzSXdFRUVFdlJLUzFfANxWI19aTktTdDNfXzI2bG9jYWxlNV9faW1wOXVzZV9mYWNldEVsAN1WK19aTlN0M19fMjZsb2NhbGU1X19pbXBDMkVSS1MxX1BOUzBfNWZhY2V0RWwA3lZMX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTZyZXNpemVFbQDgVhpfWk5TdDNfXzI2bG9jYWxlNV9faW1wRDJFdgDiVhpfWk5TdDNfXzI2bG9jYWxlNV9faW1wRDBFdgDjVhpfWk5TdDNfXzI2bG9jYWxlNV9faW1wRDFFdgDiVk5fWk5TdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFOF9fYXBwZW5kRW0A5FZjX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTE3X19kZXN0cnVjdF9hdF9lbmRCNnYxNTAwN0VQUzNfAOVWI19aTktTdDNfXzI2bG9jYWxlNV9faW1wOWhhc19mYWNldEVsAOZWUF9aTktTdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFaXhCNnYxNTAwN0VtAJtWGl9aTlN0M19fMjZsb2NhbGU1X19pbXBDMUVtAMNVJV9aTlN0M19fMjZsb2NhbGU1X19pbXAxMW1ha2VfZ2xvYmFsRXYA51YbX1pOU3QzX18yNmxvY2FsZThfX2dsb2JhbEV2AOhWFF9aTlN0M19fMjZsb2NhbGVDMkV2AOlWGF9aTlN0M19fMjZsb2NhbGVDMkVSS1MwXwDqVhRfWk5TdDNfXzI2bG9jYWxlRDJFdgDrVhZfWk5TdDNfXzI2bG9jYWxlQzJFUEtjAO1WVl9aTlN0M19fMjZsb2NhbGU1X19pbXBDMUVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVtAJhWT19aTlN0M19fMjZsb2NhbGVDMkVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUA7lYcX1pOU3QzX18yNmxvY2FsZUMyRVJLUzBfUEtjaQDvVltfWk5TdDNfXzI2bG9jYWxlNV9faW1wQzFFUktTMV9SS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVpAL1WVV9aTlN0M19fMjZsb2NhbGVDMkVSS1MwX1JLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRWkA8FYcX1pOU3QzX18yNmxvY2FsZUMyRVJLUzBfUzJfaQDxViJfWk5TdDNfXzI2bG9jYWxlNV9faW1wQzFFUktTMV9TM19pAL5WGF9aTktTdDNfXzI2bG9jYWxlNG5hbWVFdgDyVh5fWk5LU3QzX18yNmxvY2FsZTVfX2ltcDRuYW1lRXYA81YzX1pOU3QzX18yNmxvY2FsZTE0X19pbnN0YWxsX2N0b3JFUktTMF9QTlMwXzVmYWNldEVsAPRWK19aTlN0M19fMjZsb2NhbGU1X19pbXBDMUVSS1MxX1BOUzBfNWZhY2V0RWwA3lYdX1pOU3QzX18yNmxvY2FsZTZnbG9iYWxFUktTMF8A9VZgX1pOU3QzX18ybmVCNnYxNTAwN0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFYlJLTlNfMTJiYXNpY19zdHJpbmdJVF9UMF9UMV9FRVBLUzZfAPZWYF9aTlN0M19fMmVxQjZ2MTUwMDdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRWJSS05TXzEyYmFzaWNfc3RyaW5nSVRfVDBfVDFfRUVQS1M2XwD3VhxfWk5TdDNfXzI2bG9jYWxlMmlkNl9faW5pdEV2APlWGV9aTktTdDNfXzI2bG9jYWxlZXFFUktTMF8A+lZYX1pOU3QzX18yZXFCNnYxNTAwN0lOU185YWxsb2NhdG9ySWNFRUVFYlJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFVF9FRVM5XwD7VhpfWk5TdDNfXzI2bG9jYWxlNWZhY2V0RDBFdgDiQBpfWk5TdDNfXzI2bG9jYWxlNWZhY2V0RDFFdgDZMCpfWk5TdDNfXzI2bG9jYWxlNWZhY2V0MTZfX29uX3plcm9fc2hhcmVkRXYAwU8zX1pOU3QzX18yMjFfX2xpYmNwcF9hY3F1aXJlX2xvYWRCNnYxNTAwN0ltRUVUX1BLUzFfAN0dI19aTlN0M19fMjExX19jYWxsX29uY2VFUlZtUHZQRnZTMl9FAKlaHl9aTlN0M19fMjZsb2NhbGUyaWQ5X19uZXh0X2lkRQOdDyNfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSWNFQzJFUEtjbQD9Vh9fWlRWTlN0M19fMjE0Y29sbGF0ZV9ieW5hbWVJY0VFA5wPWV9aTlN0MTNydW50aW1lX2Vycm9yQzFFUktOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TMF8xMWNoYXJfdHJhaXRzSWNFRU5TMF85YWxsb2NhdG9ySWNFRUVFAJldXF9aTlN0M19fMjE0Y29sbGF0ZV9ieW5hbWVJY0VDMkVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVtAP9WWl9aTlN0M19fMnBsSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVOU18xMmJhc2ljX3N0cmluZ0lUX1QwX1QxX0VFUEtTNl9SS1M5XwCcXiBfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSWNFRDJFdgCAVyBfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSWNFRDBFdgCBVyBfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSWNFRDFFdgCAVzZfWk5LU3QzX18yMTRjb2xsYXRlX2J5bmFtZUljRTEwZG9fY29tcGFyZUVQS2NTM19TM19TM18AglcyX1pOS1N0M19fMjE0Y29sbGF0ZV9ieW5hbWVJY0UxMmRvX3RyYW5zZm9ybUVQS2NTM18Ag1cjX1pOU3QzX18yMTRjb2xsYXRlX2J5bmFtZUl3RUMyRVBLY20AhFcfX1pUVk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSXdFRQObD1xfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSXdFQzJFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFbQCFVyBfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSXdFRDJFdgCGVyBfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSXdFRDBFdgCHVyBfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSXdFRDFFdgCGVzZfWk5LU3QzX18yMTRjb2xsYXRlX2J5bmFtZUl3RTEwZG9fY29tcGFyZUVQS3dTM19TM19TM18AiFdQX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTVjX3N0ckI2djE1MDA3RXYA+kwyX1pOS1N0M19fMjE0Y29sbGF0ZV9ieW5hbWVJd0UxMmRvX3RyYW5zZm9ybUVQS3dTM18AiVcWX1pOU3QzX18yNWN0eXBlSXdFRDBFdgDiQBZfWk5TdDNfXzI1Y3R5cGVJd0VEMUV2ANkwHF9aTktTdDNfXzI1Y3R5cGVJd0U1ZG9faXNFbXcAilcjX1pOU3QzX18yNWN0eXBlSWNFMTNjbGFzc2ljX3RhYmxlRXYAi1ciX1pOS1N0M19fMjVjdHlwZUl3RTVkb19pc0VQS3dTM19QbQCMVydfWk5LU3QzX18yNWN0eXBlSXdFMTBkb19zY2FuX2lzRW1QS3dTM18AjVcoX1pOS1N0M19fMjVjdHlwZUl3RTExZG9fc2Nhbl9ub3RFbVBLd1MzXwCOVyFfWk5LU3QzX18yNWN0eXBlSXdFMTBkb190b3VwcGVyRXcAj1crX1pOU3QzX18yNWN0eXBlSWNFMjFfX2NsYXNzaWNfdXBwZXJfdGFibGVFdgCQVyVfWk5LU3QzX18yNWN0eXBlSXdFMTBkb190b3VwcGVyRVB3UEt3AJFXIV9aTktTdDNfXzI1Y3R5cGVJd0UxMGRvX3RvbG93ZXJFdwCSVytfWk5TdDNfXzI1Y3R5cGVJY0UyMV9fY2xhc3NpY19sb3dlcl90YWJsZUV2AJNXJV9aTktTdDNfXzI1Y3R5cGVJd0UxMGRvX3RvbG93ZXJFUHdQS3cAlFceX1pOS1N0M19fMjVjdHlwZUl3RThkb193aWRlbkVjAJJKJV9aTktTdDNfXzI1Y3R5cGVJd0U4ZG9fd2lkZW5FUEtjUzNfUHcAlVcgX1pOS1N0M19fMjVjdHlwZUl3RTlkb19uYXJyb3dFd2MAllcnX1pOS1N0M19fMjVjdHlwZUl3RTlkb19uYXJyb3dFUEt3UzNfY1BjAJdXGl9aTlN0M19fMjVjdHlwZUljRUMyRVBLbWJtAJhXIV9aTlN0M19fMjEwY3R5cGVfYmFzZUMyQjZ2MTUwMDdFdgDZMBVfWlRWTlN0M19fMjVjdHlwZUljRUUDmg8WX1pOU3QzX18yNWN0eXBlSWNFRDJFdgCZVxZfWk5TdDNfXzI1Y3R5cGVJY0VEMEV2AJpXFl9aTlN0M19fMjVjdHlwZUljRUQxRXYAmVchX1pOS1N0M19fMjVjdHlwZUljRTEwZG9fdG91cHBlckVjAJtXJV9aTktTdDNfXzI1Y3R5cGVJY0UxMGRvX3RvdXBwZXJFUGNQS2MAnFchX1pOS1N0M19fMjVjdHlwZUljRTEwZG9fdG9sb3dlckVjAJ1XJV9aTktTdDNfXzI1Y3R5cGVJY0UxMGRvX3RvbG93ZXJFUGNQS2MAnlceX1pOS1N0M19fMjVjdHlwZUljRThkb193aWRlbkVjAJJKJV9aTktTdDNfXzI1Y3R5cGVJY0U4ZG9fd2lkZW5FUEtjUzNfUGMAn1cgX1pOS1N0M19fMjVjdHlwZUljRTlkb19uYXJyb3dFY2MAoFcnX1pOS1N0M19fMjVjdHlwZUljRTlkb19uYXJyb3dFUEtjUzNfY1BjAKFXIV9aTlN0M19fMjEyY3R5cGVfYnluYW1lSWNFQzJFUEtjbQCiVx1fWlRWTlN0M19fMjEyY3R5cGVfYnluYW1lSWNFRQOZD1pfWk5TdDNfXzIxMmN0eXBlX2J5bmFtZUljRUMyRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0Ao1ceX1pOU3QzX18yMTJjdHlwZV9ieW5hbWVJY0VEMEV2AKRXHl9aTlN0M19fMjEyY3R5cGVfYnluYW1lSWNFRDFFdgDQWClfWk5LU3QzX18yMTJjdHlwZV9ieW5hbWVJY0UxMGRvX3RvdXBwZXJFYwClVy1fWk5LU3QzX18yMTJjdHlwZV9ieW5hbWVJY0UxMGRvX3RvdXBwZXJFUGNQS2MAplcpX1pOS1N0M19fMjEyY3R5cGVfYnluYW1lSWNFMTBkb190b2xvd2VyRWMAp1ctX1pOS1N0M19fMjEyY3R5cGVfYnluYW1lSWNFMTBkb190b2xvd2VyRVBjUEtjAKhXIV9aTlN0M19fMjEyY3R5cGVfYnluYW1lSXdFQzJFUEtjbQCpVx1fWlRWTlN0M19fMjEyY3R5cGVfYnluYW1lSXdFRQOYDxZfWk5TdDNfXzI1Y3R5cGVJd0VEMkV2ANkwWl9aTlN0M19fMjEyY3R5cGVfYnluYW1lSXdFQzJFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFbQCqVx5fWk5TdDNfXzIxMmN0eXBlX2J5bmFtZUl3RUQwRXYAq1ceX1pOU3QzX18yMTJjdHlwZV9ieW5hbWVJd0VEMUV2ANRYJF9aTktTdDNfXzIxMmN0eXBlX2J5bmFtZUl3RTVkb19pc0VtdwCsVypfWk5LU3QzX18yMTJjdHlwZV9ieW5hbWVJd0U1ZG9faXNFUEt3UzNfUG0ArVcvX1pOS1N0M19fMjEyY3R5cGVfYnluYW1lSXdFMTBkb19zY2FuX2lzRW1QS3dTM18ArlcwX1pOS1N0M19fMjEyY3R5cGVfYnluYW1lSXdFMTFkb19zY2FuX25vdEVtUEt3UzNfAK9XKV9aTktTdDNfXzIxMmN0eXBlX2J5bmFtZUl3RTEwZG9fdG91cHBlckV3ALBXLV9aTktTdDNfXzIxMmN0eXBlX2J5bmFtZUl3RTEwZG9fdG91cHBlckVQd1BLdwCxVylfWk5LU3QzX18yMTJjdHlwZV9ieW5hbWVJd0UxMGRvX3RvbG93ZXJFdwCyVy1fWk5LU3QzX18yMTJjdHlwZV9ieW5hbWVJd0UxMGRvX3RvbG93ZXJFUHdQS3cAs1cmX1pOS1N0M19fMjEyY3R5cGVfYnluYW1lSXdFOGRvX3dpZGVuRWMAtFc3X1pOU3QzX18yMTZfX2xpYmNwcF9idG93Y19sQjZ2MTUwMDdFaVAxNV9fbG9jYWxlX3N0cnVjdAC1Vy1fWk5LU3QzX18yMTJjdHlwZV9ieW5hbWVJd0U4ZG9fd2lkZW5FUEtjUzNfUHcAtlcoX1pOS1N0M19fMjEyY3R5cGVfYnluYW1lSXdFOWRvX25hcnJvd0V3YwC3VzdfWk5TdDNfXzIxNl9fbGliY3BwX3djdG9iX2xCNnYxNTAwN0VqUDE1X19sb2NhbGVfc3RydWN0ALhXL19aTktTdDNfXzIxMmN0eXBlX2J5bmFtZUl3RTlkb19uYXJyb3dFUEt3UzNfY1BjALlXJl9aTlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVEMEV2AOJAJl9aTlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVEMUV2ANkwQl9aTktTdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFNmRvX291dEVSUzFfUEtjUzVfUlM1X1BjUzdfUlM3XwC6V0FfWk5LU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RTVkb19pbkVSUzFfUEtjUzVfUlM1X1BjUzdfUlM3XwC6Vz1fWk5LU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RTEwZG9fdW5zaGlmdEVSUzFfUGNTNF9SUzRfALtXMl9aTktTdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFMTFkb19lbmNvZGluZ0V2AJQ3N19aTktTdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFMTZkb19hbHdheXNfbm9jb252RXYAlDc5X1pOS1N0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEU5ZG9fbGVuZ3RoRVJTMV9QS2NTNV9tALxXNF9aTktTdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFMTNkb19tYXhfbGVuZ3RoRXYAlDcmX1pOU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RUMyRW0AvVclX1pUVk5TdDNfXzI3Y29kZWN2dEl3YzExX19tYnN0YXRlX3RFRQOXDyNfWk5TdDNfXzIxMmNvZGVjdnRfYmFzZUMyQjZ2MTUwMDdFdgDZMCZfWk5TdDNfXzI3Y29kZWN2dEl3YzExX19tYnN0YXRlX3RFRDBFdgDCVSZfWk5TdDNfXzI3Y29kZWN2dEl3YzExX19tYnN0YXRlX3RFRDFFdgDBVUJfWk5LU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RTZkb19vdXRFUlMxX1BLd1M1X1JTNV9QY1M3X1JTN18AvldRX1pOU3QzX18yMjFfX2xpYmNwcF93Y3NucnRvbWJzX2xCNnYxNTAwN0VQY1BQS3dtbVAxMV9fbWJzdGF0ZV90UDE1X19sb2NhbGVfc3RydWN0AL9XSV9aTlN0M19fMjE4X19saWJjcHBfd2NydG9tYl9sQjZ2MTUwMDdFUGN3UDExX19tYnN0YXRlX3RQMTVfX2xvY2FsZV9zdHJ1Y3QAwFdBX1pOS1N0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEU1ZG9faW5FUlMxX1BLY1M1X1JTNV9Qd1M3X1JTN18AwVdRX1pOU3QzX18yMjFfX2xpYmNwcF9tYnNucnRvd2NzX2xCNnYxNTAwN0VQd1BQS2NtbVAxMV9fbWJzdGF0ZV90UDE1X19sb2NhbGVfc3RydWN0AMJXTF9aTlN0M19fMjE4X19saWJjcHBfbWJydG93Y19sQjZ2MTUwMDdFUHdQS2NtUDExX19tYnN0YXRlX3RQMTVfX2xvY2FsZV9zdHJ1Y3QAw1c9X1pOS1N0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEUxMGRvX3Vuc2hpZnRFUlMxX1BjUzRfUlM0XwDEVzJfWk5LU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RTExZG9fZW5jb2RpbmdFdgDFVz1fWk5TdDNfXzIxN19fbGliY3BwX21idG93Y19sQjZ2MTUwMDdFUHdQS2NtUDE1X19sb2NhbGVfc3RydWN0AMZXO19aTlN0M19fMjIxX19saWJjcHBfbWJfY3VyX21heF9sQjZ2MTUwMDdFUDE1X19sb2NhbGVfc3RydWN0AMdXN19aTktTdDNfXzI3Y29kZWN2dEl3YzExX19tYnN0YXRlX3RFMTZkb19hbHdheXNfbm9jb252RXYA3BA5X1pOS1N0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEU5ZG9fbGVuZ3RoRVJTMV9QS2NTNV9tAMhXSV9aTlN0M19fMjE3X19saWJjcHBfbWJybGVuX2xCNnYxNTAwN0VQS2NtUDExX19tYnN0YXRlX3RQMTVfX2xvY2FsZV9zdHJ1Y3QAyVc0X1pOS1N0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEUxM2RvX21heF9sZW5ndGhFdgDKVydfWk5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUQwRXYA4kAnX1pOU3QzX18yN2NvZGVjdnRJRHNjMTFfX21ic3RhdGVfdEVEMUV2ANkwRF9aTktTdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RTZkb19vdXRFUlMxX1BLRHNTNV9SUzVfUGNTN19SUzdfAMtXQ19aTktTdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RTVkb19pbkVSUzFfUEtjUzVfUlM1X1BEc1M3X1JTN18AzVc+X1pOS1N0M19fMjdjb2RlY3Z0SURzYzExX19tYnN0YXRlX3RFMTBkb191bnNoaWZ0RVJTMV9QY1M0X1JTNF8Au1czX1pOS1N0M19fMjdjb2RlY3Z0SURzYzExX19tYnN0YXRlX3RFMTFkb19lbmNvZGluZ0V2ANwQOF9aTktTdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RTE2ZG9fYWx3YXlzX25vY29udkV2ANwQOl9aTktTdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RTlkb19sZW5ndGhFUlMxX1BLY1M1X20Az1c1X1pOS1N0M19fMjdjb2RlY3Z0SURzYzExX19tYnN0YXRlX3RFMTNkb19tYXhfbGVuZ3RoRXYA0VcoX1pOU3QzX18yN2NvZGVjdnRJRHNEdTExX19tYnN0YXRlX3RFRDBFdgDiQChfWk5TdDNfXzI3Y29kZWN2dElEc0R1MTFfX21ic3RhdGVfdEVEMUV2ANkwRl9aTktTdDNfXzI3Y29kZWN2dElEc0R1MTFfX21ic3RhdGVfdEU2ZG9fb3V0RVJTMV9QS0RzUzVfUlM1X1BEdVM3X1JTN18Ay1dFX1pOS1N0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RTVkb19pbkVSUzFfUEtEdVM1X1JTNV9QRHNTN19SUzdfAM1XQF9aTktTdDNfXzI3Y29kZWN2dElEc0R1MTFfX21ic3RhdGVfdEUxMGRvX3Vuc2hpZnRFUlMxX1BEdVM0X1JTNF8Au1c0X1pOS1N0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RTExZG9fZW5jb2RpbmdFdgDcEDlfWk5LU3QzX18yN2NvZGVjdnRJRHNEdTExX19tYnN0YXRlX3RFMTZkb19hbHdheXNfbm9jb252RXYA3BA8X1pOS1N0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RTlkb19sZW5ndGhFUlMxX1BLRHVTNV9tAM9XNl9aTktTdDNfXzI3Y29kZWN2dElEc0R1MTFfX21ic3RhdGVfdEUxM2RvX21heF9sZW5ndGhFdgDRVydfWk5TdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RUQwRXYA4kAnX1pOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVEMUV2ANkwRF9aTktTdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RTZkb19vdXRFUlMxX1BLRGlTNV9SUzVfUGNTN19SUzdfANJXQ19aTktTdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RTVkb19pbkVSUzFfUEtjUzVfUlM1X1BEaVM3X1JTN18A1Fc+X1pOS1N0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFMTBkb191bnNoaWZ0RVJTMV9QY1M0X1JTNF8Au1czX1pOS1N0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFMTFkb19lbmNvZGluZ0V2ANwQOF9aTktTdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RTE2ZG9fYWx3YXlzX25vY29udkV2ANwQOl9aTktTdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RTlkb19sZW5ndGhFUlMxX1BLY1M1X20A1lc1X1pOS1N0M19fMjdjb2RlY3Z0SURpYzExX19tYnN0YXRlX3RFMTNkb19tYXhfbGVuZ3RoRXYA0VcoX1pOU3QzX18yN2NvZGVjdnRJRGlEdTExX19tYnN0YXRlX3RFRDBFdgDiQChfWk5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVEMUV2ANkwRl9aTktTdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEU2ZG9fb3V0RVJTMV9QS0RpUzVfUlM1X1BEdVM3X1JTN18A0ldFX1pOS1N0M19fMjdjb2RlY3Z0SURpRHUxMV9fbWJzdGF0ZV90RTVkb19pbkVSUzFfUEtEdVM1X1JTNV9QRGlTN19SUzdfANRXQF9aTktTdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEUxMGRvX3Vuc2hpZnRFUlMxX1BEdVM0X1JTNF8Au1c0X1pOS1N0M19fMjdjb2RlY3Z0SURpRHUxMV9fbWJzdGF0ZV90RTExZG9fZW5jb2RpbmdFdgDcEDlfWk5LU3QzX18yN2NvZGVjdnRJRGlEdTExX19tYnN0YXRlX3RFMTZkb19hbHdheXNfbm9jb252RXYA3BA8X1pOS1N0M19fMjdjb2RlY3Z0SURpRHUxMV9fbWJzdGF0ZV90RTlkb19sZW5ndGhFUlMxX1BLRHVTNV9tANZXNl9aTktTdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEUxM2RvX21heF9sZW5ndGhFdgDRV0ZfWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOEl3RTZkb19vdXRFUjExX19tYnN0YXRlX3RQS3dTNV9SUzVfUGNTN19SUzdfANhXRV9aTktTdDNfXzIxNF9fY29kZWN2dF91dGY4SXdFNWRvX2luRVIxMV9fbWJzdGF0ZV90UEtjUzVfUlM1X1B3UzdfUlM3XwDZV0FfWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOEl3RTEwZG9fdW5zaGlmdEVSMTFfX21ic3RhdGVfdFBjUzRfUlM0XwC7VyxfWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOEl3RTExZG9fZW5jb2RpbmdFdgDcEDFfWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOEl3RTE2ZG9fYWx3YXlzX25vY29udkV2ANwQPV9aTktTdDNfXzIxNF9fY29kZWN2dF91dGY4SXdFOWRvX2xlbmd0aEVSMTFfX21ic3RhdGVfdFBLY1M1X20A2lcuX1pOS1N0M19fMjE0X19jb2RlY3Z0X3V0ZjhJd0UxM2RvX21heF9sZW5ndGhFdgDbV0hfWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEc0U2ZG9fb3V0RVIxMV9fbWJzdGF0ZV90UEtEc1M1X1JTNV9QY1M3X1JTN18A3FdHX1pOS1N0M19fMjE0X19jb2RlY3Z0X3V0ZjhJRHNFNWRvX2luRVIxMV9fbWJzdGF0ZV90UEtjUzVfUlM1X1BEc1M3X1JTN18A3VdCX1pOS1N0M19fMjE0X19jb2RlY3Z0X3V0ZjhJRHNFMTBkb191bnNoaWZ0RVIxMV9fbWJzdGF0ZV90UGNTNF9SUzRfALtXLV9aTktTdDNfXzIxNF9fY29kZWN2dF91dGY4SURzRTExZG9fZW5jb2RpbmdFdgDcEDJfWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEc0UxNmRvX2Fsd2F5c19ub2NvbnZFdgDcED5fWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEc0U5ZG9fbGVuZ3RoRVIxMV9fbWJzdGF0ZV90UEtjUzVfbQDeVy9fWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEc0UxM2RvX21heF9sZW5ndGhFdgDfV0hfWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEaUU2ZG9fb3V0RVIxMV9fbWJzdGF0ZV90UEtEaVM1X1JTNV9QY1M3X1JTN18A4FdHX1pOS1N0M19fMjE0X19jb2RlY3Z0X3V0ZjhJRGlFNWRvX2luRVIxMV9fbWJzdGF0ZV90UEtjUzVfUlM1X1BEaVM3X1JTN18A4VdCX1pOS1N0M19fMjE0X19jb2RlY3Z0X3V0ZjhJRGlFMTBkb191bnNoaWZ0RVIxMV9fbWJzdGF0ZV90UGNTNF9SUzRfALtXLV9aTktTdDNfXzIxNF9fY29kZWN2dF91dGY4SURpRTExZG9fZW5jb2RpbmdFdgDcEDJfWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEaUUxNmRvX2Fsd2F5c19ub2NvbnZFdgDcED5fWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEaUU5ZG9fbGVuZ3RoRVIxMV9fbWJzdGF0ZV90UEtjUzVfbQDiVy9fWk5LU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEaUUxM2RvX21heF9sZW5ndGhFdgDjV0tfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJd0xiMEVFNmRvX291dEVSMTFfX21ic3RhdGVfdFBLd1M1X1JTNV9QY1M3X1JTN18A5FdKX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SXdMYjBFRTVkb19pbkVSMTFfX21ic3RhdGVfdFBLY1M1X1JTNV9Qd1M3X1JTN18A5ldGX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SXdMYjBFRTEwZG9fdW5zaGlmdEVSMTFfX21ic3RhdGVfdFBjUzRfUlM0XwC7VzFfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJd0xiMEVFMTFkb19lbmNvZGluZ0V2ANwQNl9aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIwRUUxNmRvX2Fsd2F5c19ub2NvbnZFdgDcEEJfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJd0xiMEVFOWRvX2xlbmd0aEVSMTFfX21ic3RhdGVfdFBLY1M1X20A6FczX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SXdMYjBFRTEzZG9fbWF4X2xlbmd0aEV2AOpXS19aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIxRUU2ZG9fb3V0RVIxMV9fbWJzdGF0ZV90UEt3UzVfUlM1X1BjUzdfUlM3XwDrV0pfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJd0xiMUVFNWRvX2luRVIxMV9fbWJzdGF0ZV90UEtjUzVfUlM1X1B3UzdfUlM3XwDtV0ZfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJd0xiMUVFMTBkb191bnNoaWZ0RVIxMV9fbWJzdGF0ZV90UGNTNF9SUzRfALtXMV9aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIxRUUxMWRvX2VuY29kaW5nRXYA3BA2X1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SXdMYjFFRTE2ZG9fYWx3YXlzX25vY29udkV2ANwQQl9aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIxRUU5ZG9fbGVuZ3RoRVIxMV9fbWJzdGF0ZV90UEtjUzVfbQDvVzNfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJd0xiMUVFMTNkb19tYXhfbGVuZ3RoRXYA6ldNX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURzTGIwRUU2ZG9fb3V0RVIxMV9fbWJzdGF0ZV90UEtEc1M1X1JTNV9QY1M3X1JTN18A8VdMX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURzTGIwRUU1ZG9faW5FUjExX19tYnN0YXRlX3RQS2NTNV9SUzVfUERzUzdfUlM3XwDyV0dfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjBFRTEwZG9fdW5zaGlmdEVSMTFfX21ic3RhdGVfdFBjUzRfUlM0XwC7VzJfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjBFRTExZG9fZW5jb2RpbmdFdgDcEDdfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjBFRTE2ZG9fYWx3YXlzX25vY29udkV2ANwQQ19aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNklEc0xiMEVFOWRvX2xlbmd0aEVSMTFfX21ic3RhdGVfdFBLY1M1X20A81c0X1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURzTGIwRUUxM2RvX21heF9sZW5ndGhFdgD0V01fWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjFFRTZkb19vdXRFUjExX19tYnN0YXRlX3RQS0RzUzVfUlM1X1BjUzdfUlM3XwD1V0xfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjFFRTVkb19pbkVSMTFfX21ic3RhdGVfdFBLY1M1X1JTNV9QRHNTN19SUzdfAPZXR19aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNklEc0xiMUVFMTBkb191bnNoaWZ0RVIxMV9fbWJzdGF0ZV90UGNTNF9SUzRfALtXMl9aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNklEc0xiMUVFMTFkb19lbmNvZGluZ0V2ANwQN19aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNklEc0xiMUVFMTZkb19hbHdheXNfbm9jb252RXYA3BBDX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURzTGIxRUU5ZG9fbGVuZ3RoRVIxMV9fbWJzdGF0ZV90UEtjUzVfbQD3VzRfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjFFRTEzZG9fbWF4X2xlbmd0aEV2APRXTV9aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNklEaUxiMEVFNmRvX291dEVSMTFfX21ic3RhdGVfdFBLRGlTNV9SUzVfUGNTN19SUzdfAPhXTF9aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNklEaUxiMEVFNWRvX2luRVIxMV9fbWJzdGF0ZV90UEtjUzVfUlM1X1BEaVM3X1JTN18A+VdHX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIwRUUxMGRvX3Vuc2hpZnRFUjExX19tYnN0YXRlX3RQY1M0X1JTNF8Au1cyX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIwRUUxMWRvX2VuY29kaW5nRXYA3BA3X1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIwRUUxNmRvX2Fsd2F5c19ub2NvbnZFdgDcEENfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRGlMYjBFRTlkb19sZW5ndGhFUjExX19tYnN0YXRlX3RQS2NTNV9tAPpXNF9aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNklEaUxiMEVFMTNkb19tYXhfbGVuZ3RoRXYA+1dNX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIxRUU2ZG9fb3V0RVIxMV9fbWJzdGF0ZV90UEtEaVM1X1JTNV9QY1M3X1JTN18A/FdMX1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIxRUU1ZG9faW5FUjExX19tYnN0YXRlX3RQS2NTNV9SUzVfUERpUzdfUlM3XwD9V0dfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRGlMYjFFRTEwZG9fdW5zaGlmdEVSMTFfX21ic3RhdGVfdFBjUzRfUlM0XwC7VzJfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRGlMYjFFRTExZG9fZW5jb2RpbmdFdgDcEDdfWk5LU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRGlMYjFFRTE2ZG9fYWx3YXlzX25vY29udkV2ANwQQ19aTktTdDNfXzIxNV9fY29kZWN2dF91dGYxNklEaUxiMUVFOWRvX2xlbmd0aEVSMTFfX21ic3RhdGVfdFBLY1M1X20A/lc0X1pOS1N0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIxRUUxM2RvX21heF9sZW5ndGhFdgD7V0xfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNkl3RTZkb19vdXRFUjExX19tYnN0YXRlX3RQS3dTNV9SUzVfUGNTN19SUzdfAP9XS19aTktTdDNfXzIyMF9fY29kZWN2dF91dGY4X3V0ZjE2SXdFNWRvX2luRVIxMV9fbWJzdGF0ZV90UEtjUzVfUlM1X1B3UzdfUlM3XwCBWEdfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNkl3RTEwZG9fdW5zaGlmdEVSMTFfX21ic3RhdGVfdFBjUzRfUlM0XwC7VzJfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNkl3RTExZG9fZW5jb2RpbmdFdgDcEDdfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNkl3RTE2ZG9fYWx3YXlzX25vY29udkV2ANwQQ19aTktTdDNfXzIyMF9fY29kZWN2dF91dGY4X3V0ZjE2SXdFOWRvX2xlbmd0aEVSMTFfX21ic3RhdGVfdFBLY1M1X20Ag1g0X1pOS1N0M19fMjIwX19jb2RlY3Z0X3V0ZjhfdXRmMTZJd0UxM2RvX21heF9sZW5ndGhFdgDbV05fWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEc0U2ZG9fb3V0RVIxMV9fbWJzdGF0ZV90UEtEc1M1X1JTNV9QY1M3X1JTN18AhFhNX1pOS1N0M19fMjIwX19jb2RlY3Z0X3V0ZjhfdXRmMTZJRHNFNWRvX2luRVIxMV9fbWJzdGF0ZV90UEtjUzVfUlM1X1BEc1M3X1JTN18AhVhIX1pOS1N0M19fMjIwX19jb2RlY3Z0X3V0ZjhfdXRmMTZJRHNFMTBkb191bnNoaWZ0RVIxMV9fbWJzdGF0ZV90UGNTNF9SUzRfALtXM19aTktTdDNfXzIyMF9fY29kZWN2dF91dGY4X3V0ZjE2SURzRTExZG9fZW5jb2RpbmdFdgDcEDhfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEc0UxNmRvX2Fsd2F5c19ub2NvbnZFdgDcEERfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEc0U5ZG9fbGVuZ3RoRVIxMV9fbWJzdGF0ZV90UEtjUzVfbQCGWDVfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEc0UxM2RvX21heF9sZW5ndGhFdgDjV05fWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEaUU2ZG9fb3V0RVIxMV9fbWJzdGF0ZV90UEtEaVM1X1JTNV9QY1M3X1JTN18Ah1hNX1pOS1N0M19fMjIwX19jb2RlY3Z0X3V0ZjhfdXRmMTZJRGlFNWRvX2luRVIxMV9fbWJzdGF0ZV90UEtjUzVfUlM1X1BEaVM3X1JTN18AiFhIX1pOS1N0M19fMjIwX19jb2RlY3Z0X3V0ZjhfdXRmMTZJRGlFMTBkb191bnNoaWZ0RVIxMV9fbWJzdGF0ZV90UGNTNF9SUzRfALtXM19aTktTdDNfXzIyMF9fY29kZWN2dF91dGY4X3V0ZjE2SURpRTExZG9fZW5jb2RpbmdFdgDcEDhfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEaUUxNmRvX2Fsd2F5c19ub2NvbnZFdgDcEERfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEaUU5ZG9fbGVuZ3RoRVIxMV9fbWJzdGF0ZV90UEtjUzVfbQCGWDVfWk5LU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEaUUxM2RvX21heF9sZW5ndGhFdgDjVyZfWk5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0xNkVFRDBFdgDiQCZfWk5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0xNkVFRDFFdgDZMCZfWk5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0zMkVFRDBFdgDiQCZfWk5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0zMkVFRDFFdgDZMCdfWk5TdDNfXzIxN19fd2lkZW5fZnJvbV91dGY4SUxtMTZFRUQwRXYA4kAnX1pOU3QzX18yMTdfX3dpZGVuX2Zyb21fdXRmOElMbTE2RUVEMUV2ANkwJ19aTlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0zMkVFRDBFdgDiQCdfWk5TdDNfXzIxN19fd2lkZW5fZnJvbV91dGY4SUxtMzJFRUQxRXYA2TAZX1pOU3QzX18yOG51bXB1bmN0SWNFQzJFbQCJWBhfWlRWTlN0M19fMjhudW1wdW5jdEljRUUDlg8ZX1pOU3QzX18yOG51bXB1bmN0SXdFQzJFbQCKWBhfWlRWTlN0M19fMjhudW1wdW5jdEl3RUUDlQ8ZX1pOU3QzX18yOG51bXB1bmN0SWNFRDJFdgCLWBlfWk5TdDNfXzI4bnVtcHVuY3RJY0VEMEV2AIxYGV9aTlN0M19fMjhudW1wdW5jdEljRUQxRXYAi1gZX1pOU3QzX18yOG51bXB1bmN0SXdFRDJFdgCNWBlfWk5TdDNfXzI4bnVtcHVuY3RJd0VEMEV2AI5YGV9aTlN0M19fMjhudW1wdW5jdEl3RUQxRXYAjVgqX1pOS1N0M19fMjhudW1wdW5jdEljRTE2ZG9fZGVjaW1hbF9wb2ludEV2APJUKl9aTktTdDNfXzI4bnVtcHVuY3RJd0UxNmRvX2RlY2ltYWxfcG9pbnRFdgDXBipfWk5LU3QzX18yOG51bXB1bmN0SWNFMTZkb190aG91c2FuZHNfc2VwRXYA81QqX1pOS1N0M19fMjhudW1wdW5jdEl3RTE2ZG9fdGhvdXNhbmRzX3NlcEV2AIEKJV9aTktTdDNfXzI4bnVtcHVuY3RJY0UxMWRvX2dyb3VwaW5nRXYA9FQlX1pOS1N0M19fMjhudW1wdW5jdEl3RTExZG9fZ3JvdXBpbmdFdgD7VCVfWk5LU3QzX18yOG51bXB1bmN0SWNFMTFkb190cnVlbmFtZUV2AI9YJV9aTktTdDNfXzI4bnVtcHVuY3RJd0UxMWRvX3RydWVuYW1lRXYAkFhRX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFQzJCNnYxNTAwN0lEbkVFUEt3AJFYJF9aTlN0M19fMjExY2hhcl90cmFpdHNJd0U2bGVuZ3RoRVBLdwCSWEtfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU2X19pbml0RVBLd20A7V0mX1pOS1N0M19fMjhudW1wdW5jdEljRTEyZG9fZmFsc2VuYW1lRXYAk1gmX1pOS1N0M19fMjhudW1wdW5jdEl3RTEyZG9fZmFsc2VuYW1lRXYAlFgkX1pOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJY0VDMkVQS2NtAJVYIF9aVFZOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJY0VFA5QPKF9aTlN0M19fMjE1bnVtcHVuY3RfYnluYW1lSWNFNl9faW5pdEVQS2MAllgnX1pOU3QzX18yMjJfX2xpYmNwcF91bmlxdWVfbG9jYWxlQzJFUEtjAJdYJ19aTktTdDNfXzIyMl9fbGliY3BwX3VuaXF1ZV9sb2NhbGVjdmJFdgCLHCdfWk5TdDNfXzIyMl9fbGliY3BwX3VuaXF1ZV9sb2NhbGUzZ2V0RXYA2TA7X1pOU3QzX18yMjFfX2xpYmNwcF9sb2NhbGVjb252X2xCNnYxNTAwN0VQMTVfX2xvY2FsZV9zdHJ1Y3QAmFhNX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFYVNCNnYxNTAwN0VQS2MAmlglX1pOU3QzX18yMjJfX2xpYmNwcF91bmlxdWVfbG9jYWxlRDJFdgCbWF1fWk5TdDNfXzIxNW51bXB1bmN0X2J5bmFtZUljRUMyRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0AnFghX1pOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJY0VEMEV2AIxYIV9aTlN0M19fMjE1bnVtcHVuY3RfYnluYW1lSWNFRDFFdgCLWEpfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2YXNzaWduRVBLYwCeWCRfWk5TdDNfXzIxNW51bXB1bmN0X2J5bmFtZUl3RUMyRVBLY20An1ggX1pUVk5TdDNfXzIxNW51bXB1bmN0X2J5bmFtZUl3RUUDkw8oX1pOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJd0U2X19pbml0RVBLYwCgWF1fWk5TdDNfXzIxNW51bXB1bmN0X2J5bmFtZUl3RUMyRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRW0AoVghX1pOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJd0VEMEV2AI5YIV9aTlN0M19fMjE1bnVtcHVuY3RfYnluYW1lSXdFRDFFdgCNWEFfWk5TdDNfXzI5X19yZXZlcnNlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQalMyX0VFdlQwX1QxXwCrVC1fWk5LU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRTdfX3dlZWtzRXYAolgtX1pOS1N0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0U3X193ZWVrc0V2AKRYTV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRWFTQjZ2MTUwMDdFUEt3AKZYLl9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFOF9fbW9udGhzRXYAp1guX1pOS1N0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0U4X19tb250aHNFdgCpWC1fWk5LU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRTdfX2FtX3BtRXYAq1gtX1pOS1N0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0U3X19hbV9wbUV2AK1YKV9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFM19feEV2AK9YKV9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFM19feEV2ALFYKV9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFM19fWEV2ALNYKV9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFM19fWEV2ALVYKV9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFM19fY0V2ALdYKV9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFM19fY0V2ALlYKV9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFM19fckV2ALtYKV9aTktTdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFM19fckV2AL1YG19aTlN0M19fMjEwX190aW1lX2dldEMyRVBLYwC/WFRfWk5TdDNfXzIxMF9fdGltZV9nZXRDMkVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAwFgZX1pOU3QzX18yMTBfX3RpbWVfZ2V0RDJFdgDBWDtfWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUljRTlfX2FuYWx5emVFY1JLTlNfNWN0eXBlSWNFRQDCWH1fWk5TdDNfXzIxNF9fc2Nhbl9rZXl3b3JkSVBjUE5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVOU181Y3R5cGVJY0VFRUVUMF9SVF9TQ19TQl9TQl9SS1QxX1JqYgDDWE5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU0YmFja0I2djE1MDA3RXYAxFhAX1pOU3QzX18yMjBfX2dldF91cF90b19uX2RpZ2l0c0ljUGNFRWlSVDBfUzJfUmpSS05TXzVjdHlwZUlUX0VFaQDFWIgBX1pOU3QzX18yOGRpc3RhbmNlQjZ2MTUwMDdJUE5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVFRU5TXzE1aXRlcmF0b3JfdHJhaXRzSVRfRTE1ZGlmZmVyZW5jZV90eXBlRVM5X1M5XwCsUztfWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUl3RTlfX2FuYWx5emVFY1JLTlNfNWN0eXBlSXdFRQDGWH1fWk5TdDNfXzIxNF9fc2Nhbl9rZXl3b3JkSVB3UE5TXzEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUVOU181Y3R5cGVJd0VFRUVUMF9SVF9TQ19TQl9TQl9SS1QxX1JqYgDHWE5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU0YmFja0I2djE1MDA3RXYAyFhAX1pOU3QzX18yMjBfX2dldF91cF90b19uX2RpZ2l0c0l3UHdFRWlSVDBfUzJfUmpSS05TXzVjdHlwZUlUX0VFaQDJWIgBX1pOU3QzX18yOGRpc3RhbmNlQjZ2MTUwMDdJUE5TXzEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUVFRU5TXzE1aXRlcmF0b3JfdHJhaXRzSVRfRTE1ZGlmZmVyZW5jZV90eXBlRVM5X1M5XwCsUzVfWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUljRTRpbml0RVJLTlNfNWN0eXBlSWNFRQDKWDVfWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUl3RTRpbml0RVJLTlNfNWN0eXBlSXdFRQDLWJYBX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNmFzc2lnbklQd0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRVJTNV9FNHR5cGVFUzlfUzlfAMxYS19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZhc3NpZ25FUEt3bQDNWGZfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUyN19faW52YWxpZGF0ZV9pdGVyYXRvcnNfcGFzdEI2djE1MDA3RW0AkREmX1pOU3QzX18yMThfX3RpbWVfZ2V0X3N0b3JhZ2VJY0VDMkVQS2MAzlgjX1pOU3QzX18yMTVfX3RpbWVfZ2V0X3RlbXBJY0VDMkVQS2MAz1geX1pOU3QzX18yMTJjdHlwZV9ieW5hbWVJY0VEMkV2ANBYIF9aVFZOU3QzX18yMTVfX3RpbWVfZ2V0X3RlbXBJY0VFA5IPXF9aTlN0M19fMjE1X190aW1lX2dldF90ZW1wSWNFQzJFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFANFYJl9aTlN0M19fMjE4X190aW1lX2dldF9zdG9yYWdlSXdFQzJFUEtjANJYI19aTlN0M19fMjE1X190aW1lX2dldF90ZW1wSXdFQzJFUEtjANNYHl9aTlN0M19fMjEyY3R5cGVfYnluYW1lSXdFRDJFdgDUWCBfWlRWTlN0M19fMjE1X190aW1lX2dldF90ZW1wSXdFRQORD1xfWk5TdDNfXzIxNV9fdGltZV9nZXRfdGVtcEl3RUMyRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQDVWDRfWk5LU3QzX18yMThfX3RpbWVfZ2V0X3N0b3JhZ2VJY0UxNV9fZG9fZGF0ZV9vcmRlckV2ANZYNF9aTktTdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUl3RTE1X19kb19kYXRlX29yZGVyRXYA11gbX1pOU3QzX18yMTBfX3RpbWVfcHV0QzJFUEtjANhYVF9aTlN0M19fMjEwX190aW1lX3B1dEMyRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQDZWBlfWk5TdDNfXzIxMF9fdGltZV9wdXREMkV2ANpYO19aTlN0M19fMjZyb3RhdGVCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBjRUVFRVRfUzRfUzRfUzRfANxYSl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZpbnNlcnRFbW1jAKpdZF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVlcmFzZUI2djE1MDA3RU5TXzExX193cmFwX2l0ZXJJUEtjRUUA3VhSX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFOHBvcF9iYWNrQjZ2MTUwMDdFdgDeWEpfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU2YXNzaWduRVBLdwDgWDtfWk5TdDNfXzI2cm90YXRlQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQd0VFRUVUX1M0X1M0X1M0XwDhWEpfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU2aW5zZXJ0RW1tdwDoXWRfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU1ZXJhc2VCNnYxNTAwN0VOU18xMV9fd3JhcF9pdGVySVBLd0VFAOJYUl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRThwb3BfYmFja0I2djE1MDA3RXYA41ggX1pOU3QzX18yMTRfX2NvZGVjdnRfdXRmOEl3RUQwRXYA5FghX1pOU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEc0VEMEV2AOJAIV9aTlN0M19fMjE0X19jb2RlY3Z0X3V0ZjhJRGlFRDBFdgDiQCVfWk5TdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIwRUVEMEV2AORYJV9aTlN0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SXdMYjFFRUQwRXYA5FgmX1pOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjBFRUQwRXYA4kAmX1pOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjFFRUQwRXYA4kAmX1pOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRGlMYjBFRUQwRXYA4kAmX1pOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRGlMYjFFRUQwRXYA4kAmX1pOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNkl3RUQwRXYA5FgnX1pOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEaUVEMEV2AOJAJ19aTlN0M19fMjIwX19jb2RlY3Z0X3V0ZjhfdXRmMTZJRHNFRDBFdgDiQFBfWk5TdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUQwQjZ2MTUwMDdFdgDiQFBfWk5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUQwQjZ2MTUwMDdFdgDiQFBfWk5TdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUQwQjZ2MTUwMDdFdgDiQFBfWk5TdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUQwQjZ2MTUwMDdFdgDiQC5fWk5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFRDJCNnYxNTAwN0V2ANkwUV9aTlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUQwQjZ2MTUwMDdFdgDiQC5fWk5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFRDJCNnYxNTAwN0V2ANkwUV9aTlN0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUQwQjZ2MTUwMDdFdgDiQFlfWk5TdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUQyQjZ2MTUwMDdFdgDlWCxfWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUljRUQyQjZ2MTUwMDdFdgDmWFlfWk5TdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUQwQjZ2MTUwMDdFdgDnWGdfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUxM2RvX2RhdGVfb3JkZXJCNnYxNTAwN0V2AOhYYF9aTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTdfX3dlZWtzQjZ2MTUwMDdFdgCGTmFfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU4X19tb250aHNCNnYxNTAwN0V2AOlYYF9aTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTdfX2FtX3BtQjZ2MTUwMDdFdgDqWFxfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzX19jQjZ2MTUwMDdFdgDrWFxfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzX19yQjZ2MTUwMDdFdgDsWFxfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzX194QjZ2MTUwMDdFdgDtWFxfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzX19YQjZ2MTUwMDdFdgDuWGVfWlRobjhfTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTdfX3dlZWtzQjZ2MTUwMDdFdgDvWGZfWlRobjhfTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRThfX21vbnRoc0I2djE1MDA3RXYA8FhlX1pUaG44X05LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU3X19hbV9wbUI2djE1MDA3RXYA8VhhX1pUaG44X05LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzX19jQjZ2MTUwMDdFdgDyWGFfWlRobjhfTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTNfX3JCNnYxNTAwN0V2APNYYV9aVGhuOF9OS1N0M19fMjE1dGltZV9nZXRfYnluYW1lSWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFM19feEI2djE1MDA3RXYA9FhhX1pUaG44X05LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUUzX19YQjZ2MTUwMDdFdgD1WFlfWk5TdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUQyQjZ2MTUwMDdFdgD2WCxfWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUl3RUQyQjZ2MTUwMDdFdgD3WFlfWk5TdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUQwQjZ2MTUwMDdFdgD4WGdfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUxM2RvX2RhdGVfb3JkZXJCNnYxNTAwN0V2APlYYF9aTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTdfX3dlZWtzQjZ2MTUwMDdFdgCGTmFfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU4X19tb250aHNCNnYxNTAwN0V2AOlYYF9aTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTdfX2FtX3BtQjZ2MTUwMDdFdgDqWFxfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzX19jQjZ2MTUwMDdFdgDrWFxfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzX19yQjZ2MTUwMDdFdgDsWFxfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzX194QjZ2MTUwMDdFdgDtWFxfWk5LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzX19YQjZ2MTUwMDdFdgDuWGVfWlRobjhfTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTdfX3dlZWtzQjZ2MTUwMDdFdgDvWGZfWlRobjhfTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRThfX21vbnRoc0I2djE1MDA3RXYA8FhlX1pUaG44X05LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUU3X19hbV9wbUI2djE1MDA3RXYA8VhhX1pUaG44X05LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzX19jQjZ2MTUwMDdFdgDyWGFfWlRobjhfTktTdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRTNfX3JCNnYxNTAwN0V2APNYYV9aVGhuOF9OS1N0M19fMjE1dGltZV9nZXRfYnluYW1lSXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFM19feEI2djE1MDA3RXYA9FhhX1pUaG44X05LU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUUzX19YQjZ2MTUwMDdFdgD1WFFfWk5TdDNfXzI4dGltZV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVEMEI2djE1MDA3RXYA+lhRX1pOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRDJCNnYxNTAwN0V2APtYUV9aTlN0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUQwQjZ2MTUwMDdFdgD6WFFfWk5TdDNfXzI4dGltZV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVEMkI2djE1MDA3RXYA+1hZX1pOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVEMEI2djE1MDA3RXYA+lhZX1pOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVEMEI2djE1MDA3RXYA+lgoX1pOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRUQwQjZ2MTUwMDdFdgDiQChfWk5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFRDBCNnYxNTAwN0V2AOJAKF9aTlN0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUVEMEI2djE1MDA3RXYA4kAoX1pOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUQwQjZ2MTUwMDdFdgDiQC9fWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjBFRUQyQjZ2MTUwMDdFdgD8WC9fWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjBFRUQwQjZ2MTUwMDdFdgD9WC9fWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjFFRUQyQjZ2MTUwMDdFdgD+WC9fWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjFFRUQwQjZ2MTUwMDdFdgD/WC9fWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjBFRUQyQjZ2MTUwMDdFdgCAWS9fWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjBFRUQwQjZ2MTUwMDdFdgCBWS9fWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjFFRUQyQjZ2MTUwMDdFdgCCWS9fWk5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjFFRUQwQjZ2MTUwMDdFdgCDWVJfWk5TdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRDBCNnYxNTAwN0V2AOJAUl9aTlN0M19fMjltb25leV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVEMEI2djE1MDA3RXYA4kBSX1pOU3QzX18yOW1vbmV5X3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUQwQjZ2MTUwMDdFdgDiQFJfWk5TdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRDBCNnYxNTAwN0V2AOJAIV9aTlN0M19fMjhtZXNzYWdlc0ljRUQwQjZ2MTUwMDdFdgDiQCFfWk5TdDNfXzI4bWVzc2FnZXNJd0VEMEI2djE1MDA3RXYA4kApX1pOU3QzX18yMTVtZXNzYWdlc19ieW5hbWVJY0VEMEI2djE1MDA3RXYA4kApX1pOU3QzX18yMTVtZXNzYWdlc19ieW5hbWVJd0VEMEI2djE1MDA3RXYA4kCOAV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU1X19yZXBFTGkwRUxiMEVFQzJCNnYxNTAwN0VOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0UA2TBfX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzlhbGxvY2F0b3JJd0VFTGkxRUxiMUVFQzJCNnYxNTAwN0VOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0UA2TBQX1pOU3QzX18yOGRpc3RhbmNlQjZ2MTUwMDdJUEt3RUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTNF9TNF8A9U9TX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRThtYXhfc2l6ZUI2djE1MDA3RXYAhFlYX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTNfX2ZpdHNfaW5fc3NvQjZ2MTUwMDdFbQCFWVZfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxMV9fcmVjb21tZW5kQjZ2MTUwMDdFbQCGWXxfWk5TdDNfXzIxOV9fYWxsb2NhdGVfYXRfbGVhc3RCNnYxNTAwN0lOU185YWxsb2NhdG9ySXdFRUVFTlNfMTlfX2FsbG9jYXRpb25fcmVzdWx0SU5TXzE2YWxsb2NhdG9yX3RyYWl0c0lUX0U3cG9pbnRlckVFRVJTNV9tAINPXV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE2X19iZWdpbl9saWZldGltZUI2djE1MDA3RVB3bQCREV5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxOF9fc2V0X2xvbmdfcG9pbnRlckI2djE1MDA3RVB3AP09WV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE0X19zZXRfbG9uZ19jYXBCNnYxNTAwN0VtANpNYF9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUyMF9fdGhyb3dfbGVuZ3RoX2Vycm9yQjZ2MTUwMDdFdgDUTSJfWk5TdDNfXzI5YWxsb2NhdG9ySXdFQzJCNnYxNTAwN0V2ANkwPl9aTlN0M19fMjE2X19ub25fdHJpdmlhbF9pZklMYjFFTlNfOWFsbG9jYXRvckl3RUVFQzJCNnYxNTAwN0V2ANkwc19aTlN0M19fMjEwX19kaXN0YW5jZUI2djE1MDA3SVBLd0VFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzRfUzRfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UA909NX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJd0VFRThtYXhfc2l6ZUI2djE1MDA3SVMyX3Z2RUVtUktTMl8AlU80X1pOU3QzX18yMTRwb2ludGVyX3RyYWl0c0lQd0UxMHBvaW50ZXJfdG9CNnYxNTAwN0VSdwDZMClfWk5TdDNfXzI5YWxsb2NhdG9ySXdFOGFsbG9jYXRlQjZ2MTUwMDdFbQCUT3JfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySU5TXzEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTVfX3JlcEVTNV9FNnNlY29uZEI2djE1MDA3RXYA2TBcX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTBfX2FsaWduX2l0QjZ2MTUwMDdJTG00RUVFbW0Ah1lzX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNV9fcmVwRVM1X0U2c2Vjb25kQjZ2MTUwMDdFdgDZME1fWk5LU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzlhbGxvY2F0b3JJd0VFTGkxRUxiMUVFNV9fZ2V0QjZ2MTUwMDdFdgDZMHtfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNV9fcmVwRUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBMX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzlhbGxvY2F0b3JJd0VFTGkxRUxiMUVFNV9fZ2V0QjZ2MTUwMDdFdgDZMCpfWk5TdDNfXzIyMV9fY29udmVydF90b19pbnRlZ3JhbEI2djE1MDA3RW0A2TBKX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJd0VFRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVJTMl9Qd20A5U4uX1pOU3QzX18yOWFsbG9jYXRvckl3RTEwZGVhbGxvY2F0ZUI2djE1MDA3RVB3bQDqTlpfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTRfX2dldF9sb25nX2NhcEI2djE1MDA3RXYAvk18X1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU1X19yZXBFTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMGRfWk5TdDNfXzIxNF9fcmV2ZXJzZV9pbXBsQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQY0VFdlQwX1MzX05TXzI2cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWdFAIhZZF9aTlN0M19fMjE0X19yZXZlcnNlX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVB3RUV2VDBfUzNfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UAiVlfX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE5X19nZXRfc2hvcnRfcG9pbnRlckI2djE1MDA3RXYA2TA3X1pOU3QzX18yMTRwb2ludGVyX3RyYWl0c0lQS3dFMTBwb2ludGVyX3RvQjZ2MTUwMDdFUlMxXwDZMDBfWk5TdDNfXzIxNF9fdW53cmFwX3JhbmdlQjZ2MTUwMDdJUGNTMV9FRURhVF9UMF8A7EulAV9aTlN0M19fMjEzX191bndyYXBfaXRlckI2djE1MDA3SU5TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzE4X191bndyYXBfaXRlcl9pbXBsSVM0X0xiMEVFRUxpMEVFRURUY2xzclQwXzhfX3Vud3JhcGNsc3Izc3RkRTdkZWNsdmFsSVRfRUVFRVM4XwDZMG9fWk5TdDNfXzIxMV9fY29weV9pbXBsQjZ2MTUwMDdJUGNTMV9OU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRU5TXzRwYWlySVRfVDFfRUVTN19UMF9TOF8Ailk1X1pOU3QzX18yMTRfX3Jld3JhcF9yYW5nZUI2djE1MDA3SVBjUzFfUzFfRUVUMF9TMl9UMV8A7kt/X1pOU3QzX18yMTNfX3Jld3JhcF9pdGVyQjZ2MTUwMDdJTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUzRfTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzRfTGIwRUVFRUVUX1M3X1QwXwCSSpMBX1pOU3QzX18yOW1ha2VfcGFpckI2djE1MDA3SVBjTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVOU180cGFpcklOU18xOF9fdW53cmFwX3JlZl9kZWNheUlUX0U0dHlwZUVOUzdfSVQwX0U0dHlwZUVFRU9TOF9PU0JfAPBLPV9aTlN0M19fMjE5X191bndyYXBfcmFuZ2VfaW1wbElQY1MxX0U4X191bndyYXBCNnYxNTAwN0VTMV9TMV8A8UthX1pOU3QzX18yNHBhaXJJUGNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFQzJCNnYxNTAwN0lTMV9TNV9MUHYwRUVFT1RfT1QwXwDyS2hfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVMYjBFRThfX3Vud3JhcEI2djE1MDA3RVM0XwDZMD1fWk5TdDNfXzIxOV9fdW53cmFwX3JhbmdlX2ltcGxJUGNTMV9FOF9fcmV3cmFwQjZ2MTUwMDdFUzFfUzFfAPNLa19aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSU5TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUxiMEVFOF9fcmV3cmFwQjZ2MTUwMDdFUzRfUzRfAJJKNF9aTlN0M19fMjRwYWlySVBjUzFfRUMyQjZ2MTUwMDdJUzFfUzFfTFB2MEVFRU9UX09UMF8A8kswX1pOU3QzX18yMTRfX3Vud3JhcF9yYW5nZUI2djE1MDA3SVB3UzFfRUVEYVRfVDBfAOxLpQFfWk5TdDNfXzIxM19fdW53cmFwX2l0ZXJCNnYxNTAwN0lOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVOU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTNF9MYjBFRUVMaTBFRUVEVGNsc3JUMF84X191bndyYXBjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFRUVTOF8A2TBvX1pOU3QzX18yMTFfX2NvcHlfaW1wbEI2djE1MDA3SVB3UzFfTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUVOU180cGFpcklUX1QxX0VFUzdfVDBfUzhfAItZNV9aTlN0M19fMjE0X19yZXdyYXBfcmFuZ2VCNnYxNTAwN0lQd1MxX1MxX0VFVDBfUzJfVDFfAO5Lf19aTlN0M19fMjEzX19yZXdyYXBfaXRlckI2djE1MDA3SU5TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRVM0X05TXzE4X191bndyYXBfaXRlcl9pbXBsSVM0X0xiMEVFRUVFVF9TN19UMF8AkkqTAV9aTlN0M19fMjltYWtlX3BhaXJCNnYxNTAwN0lQd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFTlNfNHBhaXJJTlNfMThfX3Vud3JhcF9yZWZfZGVjYXlJVF9FNHR5cGVFTlM3X0lUMF9FNHR5cGVFRUVPUzhfT1NCXwDwSz1fWk5TdDNfXzIxOV9fdW53cmFwX3JhbmdlX2ltcGxJUHdTMV9FOF9fdW53cmFwQjZ2MTUwMDdFUzFfUzFfAPFLYV9aTlN0M19fMjRwYWlySVB3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUMyQjZ2MTUwMDdJUzFfUzVfTFB2MEVFRU9UX09UMF8A8ktoX1pOU3QzX18yMThfX3Vud3JhcF9pdGVyX2ltcGxJTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFTGIwRUU4X191bndyYXBCNnYxNTAwN0VTNF8A2TA9X1pOU3QzX18yMTlfX3Vud3JhcF9yYW5nZV9pbXBsSVB3UzFfRThfX3Jld3JhcEI2djE1MDA3RVMxX1MxXwDzS2tfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVMYjBFRThfX3Jld3JhcEI2djE1MDA3RVM0X1M0XwCSSjRfWk5TdDNfXzI0cGFpcklQd1MxX0VDMkI2djE1MDA3SVMxX1MxX0xQdjBFRUVPVF9PVDBfAPJLUF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZfX3plcm9CNnYxNTAwN0V2AO1NUF9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySXdFRUxpMUVMYjFFRUMyQjZ2MTUwMDdJUzJfdkVFT1RfAM9NK19aTktTdDNfXzIxMF9fZXF1YWxfdG9JY2NFY2xCNnYxNTAwN0VSS2NTM18AjFkmX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQY0VwTEI2djE1MDA3RWwAu1VyX1pOU3QzX18yMTBfX2Rpc3RhbmNlQjZ2MTUwMDdJUHdFRU5TXzE1aXRlcmF0b3JfdHJhaXRzSVRfRTE1ZGlmZmVyZW5jZV90eXBlRVMzX1MzX05TXzI2cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWdFAPdPkgFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySU5TXzEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTVfX3JlcEVTNV9FQzJCNnYxNTAwN0lOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0VSS1M1X0VFT1RfT1QwXwDOTZMBX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNl9faW5pdElQd0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUzlfUzlfAKRTUl9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySXdFRUxpMUVMYjFFRUMyQjZ2MTUwMDdJUktTMl92RUVPVF8Az00rX1pOS1N0M19fMjEwX19lcXVhbF90b0l3d0VjbEI2djE1MDA3RVJLd1MzXwCNWSZfWk5TdDNfXzIxMV9fd3JhcF9pdGVySVB3RXBMQjZ2MTUwMDdFbAC9VWFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxOV9fbW92ZV9hc3NpZ25fYWxsb2NCNnYxNTAwN0VSUzVfAJERf19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE5X19tb3ZlX2Fzc2lnbl9hbGxvY0I2djE1MDA3RVJTNV9OU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjFFRUUAkRFEX1pOU3QzX18yMTRfX3Vud3JhcF9yYW5nZUI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEtjRUVTNF9FRURhVF9UMF8AjllJX1pOU3QzX18yMTRfX3Jld3JhcF9yYW5nZUI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEtjRUVTNF9TM19FRVQwX1M1X1QxXwCPWXlfWk5TdDNfXzI5bWFrZV9wYWlyQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQS2NFRVBjRUVOU180cGFpcklOU18xOF9fdW53cmFwX3JlZl9kZWNheUlUX0U0dHlwZUVOUzdfSVQwX0U0dHlwZUVFRU9TOF9PU0JfAPBLUV9aTlN0M19fMjE5X191bndyYXBfcmFuZ2VfaW1wbElOU18xMV9fd3JhcF9pdGVySVBLY0VFUzRfRThfX3Vud3JhcEI2djE1MDA3RVM0X1M0XwCQWUdfWk5TdDNfXzI0cGFpcklOU18xMV9fd3JhcF9pdGVySVBLY0VFUGNFQzJCNnYxNTAwN0lTNF9TNV9MUHYwRUVFT1RfT1QwXwDyS1FfWk5TdDNfXzIxOV9fdW53cmFwX3JhbmdlX2ltcGxJTlNfMTFfX3dyYXBfaXRlcklQS2NFRVM0X0U4X19yZXdyYXBCNnYxNTAwN0VTNF9TM18AkVmLAV9aTlN0M19fMjEzX191bndyYXBfaXRlckI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEtjRUVOU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTNF9MYjFFRUVMaTBFRUVEVGNsc3JUMF84X191bndyYXBjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFRUVTOF8AkllOX1pOU3QzX18yMThfX3Vud3JhcF9pdGVyX2ltcGxJTlNfMTFfX3dyYXBfaXRlcklQS2NFRUxiMUVFOF9fdW53cmFwQjZ2MTUwMDdFUzRfAJNZiAFfWk5TdDNfXzIxMl9fdG9fYWRkcmVzc0I2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEtjRUV2RUVOU181ZGVjYXlJRFRjbHNyMTlfX3RvX2FkZHJlc3NfaGVscGVySVRfRUU2X19jYWxsY2w3ZGVjbHZhbElSS1M2X0VFRUVFNHR5cGVFUzhfAJRZTF9aTlN0M19fMjE5X190b19hZGRyZXNzX2hlbHBlcklOU18xMV9fd3JhcF9pdGVySVBLY0VFdkU2X19jYWxsQjZ2MTUwMDdFUktTNF8AlVlJX1pOU3QzX18yMTRwb2ludGVyX3RyYWl0c0lOU18xMV9fd3JhcF9pdGVySVBLY0VFRTEwdG9fYWRkcmVzc0I2djE1MDA3RVM0XwCWWWVfWk5TdDNfXzIxM19fcmV3cmFwX2l0ZXJCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBLY0VFUzNfTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzRfTGIxRUVFRUVUX1M3X1QwXwCXWVFfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElOU18xMV9fd3JhcF9pdGVySVBLY0VFTGIxRUU4X19yZXdyYXBCNnYxNTAwN0VTNF9TM18AmFlEX1pOU3QzX18yMTRfX3Vud3JhcF9yYW5nZUI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEt3RUVTNF9FRURhVF9UMF8AjllJX1pOU3QzX18yMTRfX3Jld3JhcF9yYW5nZUI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEt3RUVTNF9TM19FRVQwX1M1X1QxXwCZWXlfWk5TdDNfXzI5bWFrZV9wYWlyQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQS3dFRVB3RUVOU180cGFpcklOU18xOF9fdW53cmFwX3JlZl9kZWNheUlUX0U0dHlwZUVOUzdfSVQwX0U0dHlwZUVFRU9TOF9PU0JfAPBLUV9aTlN0M19fMjE5X191bndyYXBfcmFuZ2VfaW1wbElOU18xMV9fd3JhcF9pdGVySVBLd0VFUzRfRThfX3Vud3JhcEI2djE1MDA3RVM0X1M0XwCQWUdfWk5TdDNfXzI0cGFpcklOU18xMV9fd3JhcF9pdGVySVBLd0VFUHdFQzJCNnYxNTAwN0lTNF9TNV9MUHYwRUVFT1RfT1QwXwDyS1FfWk5TdDNfXzIxOV9fdW53cmFwX3JhbmdlX2ltcGxJTlNfMTFfX3dyYXBfaXRlcklQS3dFRVM0X0U4X19yZXdyYXBCNnYxNTAwN0VTNF9TM18AmlmLAV9aTlN0M19fMjEzX191bndyYXBfaXRlckI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEt3RUVOU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTNF9MYjFFRUVMaTBFRUVEVGNsc3JUMF84X191bndyYXBjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFRUVTOF8AkllOX1pOU3QzX18yMThfX3Vud3JhcF9pdGVyX2ltcGxJTlNfMTFfX3dyYXBfaXRlcklQS3dFRUxiMUVFOF9fdW53cmFwQjZ2MTUwMDdFUzRfAJNZiAFfWk5TdDNfXzIxMl9fdG9fYWRkcmVzc0I2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUEt3RUV2RUVOU181ZGVjYXlJRFRjbHNyMTlfX3RvX2FkZHJlc3NfaGVscGVySVRfRUU2X19jYWxsY2w3ZGVjbHZhbElSS1M2X0VFRUVFNHR5cGVFUzhfAJRZTF9aTlN0M19fMjE5X190b19hZGRyZXNzX2hlbHBlcklOU18xMV9fd3JhcF9pdGVySVBLd0VFdkU2X19jYWxsQjZ2MTUwMDdFUktTNF8AlVlJX1pOU3QzX18yMTRwb2ludGVyX3RyYWl0c0lOU18xMV9fd3JhcF9pdGVySVBLd0VFRTEwdG9fYWRkcmVzc0I2djE1MDA3RVM0XwCWWWVfWk5TdDNfXzIxM19fcmV3cmFwX2l0ZXJCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBLd0VFUzNfTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzRfTGIxRUVFRUVUX1M3X1QwXwCbWVFfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElOU18xMV9fd3JhcF9pdGVySVBLd0VFTGIxRUU4X19yZXdyYXBCNnYxNTAwN0VTNF9TM18AnFlRX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBQTlNfNmxvY2FsZTVmYWNldEVMaTBFTGIwRUVDMkI2djE1MDA3SURudkVFT1RfANNOfF9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xNV9fc3NvX2FsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVMbTMwRUVFTGkxRUxiMEVFQzJCNnYxNTAwN0VOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0UAnVl4X1pOU3QzX18yMTNfX3RyYW5zYWN0aW9uSU5TXzZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzRfTG0zMEVFRUUxNl9fZGVzdHJveV92ZWN0b3JFRUMyQjZ2MTUwMDdFUzhfAJ5ZT19aTktTdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFOG1heF9zaXplRXYAn1lkX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUUyMF9fdGhyb3dfbGVuZ3RoX2Vycm9yQjZ2MTUwMDdFdgCgWVVfWk5TdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFN19fYWxsb2NCNnYxNTAwN0V2AKFZmQFfWk5TdDNfXzIxOV9fYWxsb2NhdGVfYXRfbGVhc3RCNnYxNTAwN0lOU18xNV9fc3NvX2FsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVMbTMwRUVFRUVOU18xOV9fYWxsb2NhdGlvbl9yZXN1bHRJTlNfMTZhbGxvY2F0b3JfdHJhaXRzSVRfRTdwb2ludGVyRUVFUlM4X20AollXX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKNZXl9aTktTdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMTRfX2Fubm90YXRlX25ld0I2djE1MDA3RW0ApFliX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTIxX0NvbnN0cnVjdFRyYW5zYWN0aW9uQzJFUlM2X20ApVk6X1pOU3QzX18yMTJfX3RvX2FkZHJlc3NCNnYxNTAwN0lQTlNfNmxvY2FsZTVmYWNldEVFRVBUX1M1XwDZMHVfWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfMTVfX3Nzb19hbGxvY2F0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTG0zMEVFRUU5Y29uc3RydWN0QjZ2MTUwMDdJUzRfSkV2dkVFdlJTNV9QVF9EcE9UMF8AplleX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTIxX0NvbnN0cnVjdFRyYW5zYWN0aW9uRDJFdgCnWT9fWk5TdDNfXzIxNV9fc3NvX2FsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVMbTMwRUVDMkI2djE1MDA3RXYAqFlWX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU3X19hbGxvY0I2djE1MDA3RXYAoVlpX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzE1X19zc29fYWxsb2NhdG9ySVBOU182bG9jYWxlNWZhY2V0RUxtMzBFRUVFOG1heF9zaXplQjZ2MTUwMDdJUzVfdkVFbVJLUzVfAJVPSV9aTlN0M19fMjE1X19zc29fYWxsb2NhdG9ySVBOU182bG9jYWxlNWZhY2V0RUxtMzBFRThhbGxvY2F0ZUI2djE1MDA3RW1QS3YAqVlhX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU2c2Vjb25kQjZ2MTUwMDdFdgCjWWBfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTVmaXJzdEI2djE1MDA3RXYA2TBTX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU0ZGF0YUI2djE1MDA3RXYA3R1XX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU4Y2FwYWNpdHlCNnYxNTAwN0V2AKpZel9aTktTdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMzFfX2Fubm90YXRlX2NvbnRpZ3VvdXNfY29udGFpbmVyQjZ2MTUwMDdFUEt2UzhfUzhfUzhfAKtZR19aTktTdDNfXzIxNV9fc3NvX2FsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVMbTMwRUU4bWF4X3NpemVCNnYxNTAwN0V2AJVPYl9aTktTdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTZzZWNvbmRCNnYxNTAwN0V2AKNZal9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfMTVfX3Nzb19hbGxvY2F0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTG0zMEVFRUxpMUVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TAzX1pOU3QzX18yOWFsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVFQzJCNnYxNTAwN0V2ANkwOl9aTlN0M19fMjlhbGxvY2F0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFRThhbGxvY2F0ZUI2djE1MDA3RW0AlE9PX1pOU3QzX18yMTZfX25vbl90cml2aWFsX2lmSUxiMUVOU185YWxsb2NhdG9ySVBOU182bG9jYWxlNWZhY2V0RUVFRUMyQjZ2MTUwMDdFdgDZMF5fWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVFRUU4bWF4X3NpemVCNnYxNTAwN0lTNV92dkVFbVJLUzVfAJVPaV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xNV9fc3NvX2FsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVMbTMwRUVFTGkxRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZME5fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUFBOU182bG9jYWxlNWZhY2V0RUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBYX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCjWWFfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU1Zmlyc3RCNnYxNTAwN0V2ANkwT19aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUFBOU182bG9jYWxlNWZhY2V0RUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBGX1pOU3QzX18yMTJjb25zdHJ1Y3RfYXRCNnYxNTAwN0lQTlNfNmxvY2FsZTVmYWNldEVKRVBTM19FRVBUX1M2X0RwT1QwXwC0S2FfWk5LU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTE3X19hbm5vdGF0ZV9kZWxldGVCNnYxNTAwN0V2AKxZal9aTlN0M19fMjE4X19kZWJ1Z19kYl9lcmFzZV9jQjZ2MTUwMDdJTlNfNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTNF9MbTMwRUVFRUVFRXZQVF8AkSlpX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzE1X19zc29fYWxsb2NhdG9ySVBOU182bG9jYWxlNWZhY2V0RUxtMzBFRUVFMTBkZWFsbG9jYXRlQjZ2MTUwMDdFUlM1X1BTNF9tAK1ZaF9aTlN0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUUyMl9fYmFzZV9kZXN0cnVjdF9hdF9lbmRCNnYxNTAwN0VQUzNfAK5ZTV9aTlN0M19fMjE1X19zc29fYWxsb2NhdG9ySVBOU182bG9jYWxlNWZhY2V0RUxtMzBFRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVBTM19tAK9Za19aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU18xNV9fc3NvX2FsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVMbTMwRUVFRTdkZXN0cm95QjZ2MTUwMDdJUzRfdnZFRXZSUzVfUFRfAJEROl9aTlN0M19fMjEwZGVzdHJveV9hdEI2djE1MDA3SVBOU182bG9jYWxlNWZhY2V0RUxpMEVFRXZQVF8AkSk8X1pOU3QzX18yMTJfX2Rlc3Ryb3lfYXRCNnYxNTAwN0lQTlNfNmxvY2FsZTVmYWNldEVMaTBFRUV2UFRfAJEpQV9aTlN0M19fMjlhbGxvY2F0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVBTM19tAOpOhAFfWk5TdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMTlfX2NvcHlfYXNzaWduX2FsbG9jQjZ2MTUwMDdFUktTNl9OU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRUUAkRFgX1pOU3QzX18yOGRpc3RhbmNlQjZ2MTUwMDdJUFBOU182bG9jYWxlNWZhY2V0RUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzZfUzZfAPVPOV9aTlN0M19fMjdhZHZhbmNlQjZ2MTUwMDdJUFBOU182bG9jYWxlNWZhY2V0RW1tdkVFdlJUX1QwXwD2TzpfWk5TdDNfXzI0Y29weUI2djE1MDA3SVBQTlNfNmxvY2FsZTVmYWNldEVTNF9FRVQwX1RfUzZfUzVfAOpLpwFfWk5TdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMThfX2NvbnN0cnVjdF9hdF9lbmRJUFMzX0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFU0FfU0FfbQCwWVRfWk5TdDNfXzI2dmVjdG9ySVBOU182bG9jYWxlNWZhY2V0RU5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMTNfX3ZkZWFsbG9jYXRlRXYAsVlbX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUUxMV9fcmVjb21tZW5kQjZ2MTUwMDdFbQCyWYMBX1pOU3QzX18yMTBfX2Rpc3RhbmNlQjZ2MTUwMDdJUFBOU182bG9jYWxlNWZhY2V0RUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzZfUzZfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UA90+AAV9aTlN0M19fMjlfX2FkdmFuY2VCNnYxNTAwN0lQUE5TXzZsb2NhbGU1ZmFjZXRFRUV2UlRfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzVfRTE1ZGlmZmVyZW5jZV90eXBlRU5TXzI2cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWdFAPhPUV9aTlN0M19fMjZfX2NvcHlCNnYxNTAwN0lQUE5TXzZsb2NhbGU1ZmFjZXRFUzRfUzRfTGkwRUVFTlNfNHBhaXJJVF9UMV9FRVM2X1QwX1M3XwDrS3tfWk5TdDNfXzIzMF9fdW5pbml0aWFsaXplZF9hbGxvY2F0b3JfY29weUI2djE1MDA3SU5TXzE1X19zc29fYWxsb2NhdG9ySVBOU182bG9jYWxlNWZhY2V0RUxtMzBFRUVQUzRfUzZfUzZfRUVUMl9SVF9UMF9UMV9TN18As1ltX1pOU3QzX18yNnZlY3RvcklQTlNfNmxvY2FsZTVmYWNldEVOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTI3X19pbnZhbGlkYXRlX2l0ZXJhdG9yc19wYXN0QjZ2MTUwMDdFUFMzXwCREUFfWk5TdDNfXzIxNF9fdW53cmFwX3JhbmdlQjZ2MTUwMDdJUFBOU182bG9jYWxlNWZhY2V0RVM0X0VFRGFUX1QwXwDsS4gBX1pOU3QzX18yMTNfX3Vud3JhcF9pdGVyQjZ2MTUwMDdJUFBOU182bG9jYWxlNWZhY2V0RU5TXzE4X191bndyYXBfaXRlcl9pbXBsSVM0X0xiMUVFRUxpMEVFRURUY2xzclQwXzhfX3Vud3JhcGNsc3Izc3RkRTdkZWNsdmFsSVRfRUVFRVM4XwDZMFJfWk5TdDNfXzIxMV9fY29weV9pbXBsQjZ2MTUwMDdJUE5TXzZsb2NhbGU1ZmFjZXRFUzNfdkVFTlNfNHBhaXJJUFRfUFQwX0VFUzZfUzZfUzhfAO1LRl9aTlN0M19fMjE0X19yZXdyYXBfcmFuZ2VCNnYxNTAwN0lQUE5TXzZsb2NhbGU1ZmFjZXRFUzRfUzRfRUVUMF9TNV9UMV8A7ktiX1pOU3QzX18yMTNfX3Jld3JhcF9pdGVyQjZ2MTUwMDdJUFBOU182bG9jYWxlNWZhY2V0RVM0X05TXzE4X191bndyYXBfaXRlcl9pbXBsSVM0X0xiMUVFRUVFVF9TN19UMF8A70t3X1pOU3QzX18yOW1ha2VfcGFpckI2djE1MDA3SVBQTlNfNmxvY2FsZTVmYWNldEVTNF9FRU5TXzRwYWlySU5TXzE4X191bndyYXBfcmVmX2RlY2F5SVRfRTR0eXBlRU5TNl9JVDBfRTR0eXBlRUVFT1M3X09TQV8A8EtOX1pOU3QzX18yMTlfX3Vud3JhcF9yYW5nZV9pbXBsSVBQTlNfNmxvY2FsZTVmYWNldEVTNF9FOF9fdW53cmFwQjZ2MTUwMDdFUzRfUzRfAPFLS19aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSVBQTlNfNmxvY2FsZTVmYWNldEVMYjFFRThfX3Vud3JhcEI2djE1MDA3RVM0XwDZMEVfWk5TdDNfXzI0cGFpcklQUE5TXzZsb2NhbGU1ZmFjZXRFUzRfRUMyQjZ2MTUwMDdJUzRfUzRfTFB2MEVFRU9UX09UMF8A8ktOX1pOU3QzX18yMTlfX3Vud3JhcF9yYW5nZV9pbXBsSVBQTlNfNmxvY2FsZTVmYWNldEVTNF9FOF9fcmV3cmFwQjZ2MTUwMDdFUzRfUzRfAPNLTl9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSVBQTlNfNmxvY2FsZTVmYWNldEVMYjFFRThfX3Jld3JhcEI2djE1MDA3RVM0X1M0XwD0S3lfWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfMTVfX3Nzb19hbGxvY2F0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTG0zMEVFRUU5Y29uc3RydWN0QjZ2MTUwMDdJUzRfSlJTNF9FdnZFRXZSUzVfUFRfRHBPVDBfAP5Ocl9aTlN0M19fMjI5X0FsbG9jYXRvckRlc3Ryb3lSYW5nZVJldmVyc2VJTlNfMTVfX3Nzb19hbGxvY2F0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTG0zMEVFRVBTNF9FQzJCNnYxNTAwN0VSUzVfUlM2X1M5XwDSTGlfWk5LU3QzX18yMjlfQWxsb2NhdG9yRGVzdHJveVJhbmdlUmV2ZXJzZUlOU18xNV9fc3NvX2FsbG9jYXRvcklQTlNfNmxvY2FsZTVmYWNldEVMbTMwRUVFUFM0X0VjbEI2djE1MDA3RXYAtFlKX1pOU3QzX18yMTJjb25zdHJ1Y3RfYXRCNnYxNTAwN0lQTlNfNmxvY2FsZTVmYWNldEVKUlMzX0VQUzNfRUVQVF9TN19EcE9UMF8AuUs+X1pOU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfNmxvY2FsZTVmYWNldEVFQzJCNnYxNTAwN0VTNF8AvEuAAV9aTlN0M19fMjE5X19hbGxvY2F0b3JfZGVzdHJveUI2djE1MDA3SU5TXzE1X19zc29fYWxsb2NhdG9ySVBOU182bG9jYWxlNWZhY2V0RUxtMzBFRUVOU18xNnJldmVyc2VfaXRlcmF0b3JJUFM0X0VFUzhfRUV2UlRfVDBfVDFfALVZVV9aTlN0M19fMm5lQjZ2MTUwMDdJUFBOU182bG9jYWxlNWZhY2V0RVM0X0VFYlJLTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVRfRUVSS05TNV9JVDBfRUUAtlmdAV9aTlN0M19fMjEyX190b19hZGRyZXNzQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfNmxvY2FsZTVmYWNldEVFRXZFRU5TXzVkZWNheUlEVGNsc3IxOV9fdG9fYWRkcmVzc19oZWxwZXJJVF9FRTZfX2NhbGxjbDdkZWNsdmFsSVJLUzhfRUVFRUU0dHlwZUVTQV8At1k8X1pOU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfNmxvY2FsZTVmYWNldEVFcHBCNnYxNTAwN0V2ALhZQF9aTktTdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUFBOU182bG9jYWxlNWZhY2V0RUU0YmFzZUI2djE1MDA3RXYA3R1hX1pOU3QzX18yMTlfX3RvX2FkZHJlc3NfaGVscGVySU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUE5TXzZsb2NhbGU1ZmFjZXRFRUV2RTZfX2NhbGxCNnYxNTAwN0VSS1M2XwC5WT1fWk5LU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfNmxvY2FsZTVmYWNldEVFcHRCNnYxNTAwN0V2ALpZnAFfWk5TdDNfXzI0cHJldkI2djE1MDA3SVBQTlNfNmxvY2FsZTVmYWNldEVFRU5TXzllbmFibGVfaWZJWHNyMjVfX2lzX2NwcDE3X2lucHV0X2l0ZXJhdG9ySVRfRUU1dmFsdWVFUzZfRTR0eXBlRVM2X05TXzE1aXRlcmF0b3JfdHJhaXRzSVM2X0UxNWRpZmZlcmVuY2VfdHlwZUUAu1k5X1pOU3QzX18yN2FkdmFuY2VCNnYxNTAwN0lQUE5TXzZsb2NhbGU1ZmFjZXRFbGx2RUV2UlRfVDBfAPZPVV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzZsb2NhbGU1ZmFjZXRFUk5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFQzJFbW1TNl8AvFljX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNmxvY2FsZTVmYWNldEVSTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUUxOF9fY29uc3RydWN0X2F0X2VuZEVtAL1Zfl9aTlN0M19fMjZ2ZWN0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUUyNl9fc3dhcF9vdXRfY2lyY3VsYXJfYnVmZmVyRVJOU18xNF9fc3BsaXRfYnVmZmVySVMzX1JTNV9FRQC+WVFfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU182bG9jYWxlNWZhY2V0RVJOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRUQyRXYAv1lqX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQUE5TXzZsb2NhbGU1ZmFjZXRFUk5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFQzJCNnYxNTAwN0lEblM3X0VFT1RfT1QwXwCBT19fWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU182bG9jYWxlNWZhY2V0RVJOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTdfX2FsbG9jQjZ2MTUwMDdFdgCCT2FfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU182bG9jYWxlNWZhY2V0RVJOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKBObV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzZsb2NhbGU1ZmFjZXRFUk5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMjFfQ29uc3RydWN0VHJhbnNhY3Rpb25DMkVQUFMzX20AiU9oX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfNmxvY2FsZTVmYWNldEVSTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUUyMV9Db25zdHJ1Y3RUcmFuc2FjdGlvbkQyRXYAi0+gAV9aTlN0M19fMjQyX191bmluaXRpYWxpemVkX2FsbG9jYXRvcl9tb3ZlX2lmX25vZXhjZXB0QjZ2MTUwMDdJTlNfMTVfX3Nzb19hbGxvY2F0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTG0zMEVFRU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUzRfRUVTOF9TNF92RUVUMV9SVF9UMF9TQ19TOV8AwFmTAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJUFBOU182bG9jYWxlNWZhY2V0RUVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVM2X0VFNXZhbHVlRXZFNHR5cGVFUlM2X1M5XwCMSl1fWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU182bG9jYWxlNWZhY2V0RVJOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTVjbGVhckI2djE1MDA3RXYAwVlhX1pOS1N0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzZsb2NhbGU1ZmFjZXRFUk5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFOGNhcGFjaXR5QjZ2MTUwMDdFdgDkTm5fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUk5TXzE1X19zc29fYWxsb2NhdG9ySVBOU182bG9jYWxlNWZhY2V0RUxtMzBFRUVMaTFFTGIwRUVDMkI2djE1MDA3SVM2X3ZFRU9UXwC8S2JfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfNmxvY2FsZTVmYWNldEVSTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU2c2Vjb25kQjZ2MTUwMDdFdgCOT2FfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfNmxvY2FsZTVmYWNldEVSTlNfMTVfX3Nzb19hbGxvY2F0b3JJUzNfTG0zMEVFRUU1Zmlyc3RCNnYxNTAwN0V2ANkwal9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlSTlNfMTVfX3Nzb19hbGxvY2F0b3JJUE5TXzZsb2NhbGU1ZmFjZXRFTG0zMEVFRUxpMUVMYjBFRTVfX2dldEI2djE1MDA3RXYA3R1SX1pOU3QzX18yNG1vdmVCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJUFBOU182bG9jYWxlNWZhY2V0RUVFUzZfRUVUMF9UX1M4X1M3XwDCWYcCX1pOU3QzX18yNl9fbW92ZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfNmxvY2FsZTVmYWNldEVFRVM3X1M3X0VFTlNfOWVuYWJsZV9pZklYYWFhYXNyMjFpc19jb3B5X2NvbnN0cnVjdGlibGVJVDBfRUU1dmFsdWVzcjIxaXNfY29weV9jb25zdHJ1Y3RpYmxlSVQxX0VFNXZhbHVlc3IyMWlzX2NvcHlfY29uc3RydWN0aWJsZUlUMl9FRTV2YWx1ZUVOU180cGFpcklTOV9TQl9FRUU0dHlwZUVTOV9TQV9TQl8Aw1mgAV9aTlN0M19fMjEzX191bndyYXBfaXRlckI2djE1MDA3SU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUE5TXzZsb2NhbGU1ZmFjZXRFRUVOU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTNl9MYjBFRUVMaTBFRUVEVGNsc3JUMF84X191bndyYXBjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFRUVTQV8A2TCLAV9aTlN0M19fMjExX19tb3ZlX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVBQTlNfNmxvY2FsZTVmYWNldEVTNV9MaTBFRUVOU180cGFpcklOU18xNnJldmVyc2VfaXRlcmF0b3JJVDBfRUVOUzdfSVQxX0VFRUVTOV9TOV9TQl8AxFl6X1pOU3QzX18yMTNfX3Jld3JhcF9pdGVyQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfNmxvY2FsZTVmYWNldEVFRVM2X05TXzE4X191bndyYXBfaXRlcl9pbXBsSVM2X0xiMEVFRUVFVF9TOV9UMF8AkkqPAV9aTlN0M19fMjltYWtlX3BhaXJCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJUFBOU182bG9jYWxlNWZhY2V0RUVFUzZfRUVOU180cGFpcklOU18xOF9fdW53cmFwX3JlZl9kZWNheUlUX0U0dHlwZUVOUzhfSVQwX0U0dHlwZUVFRU9TOV9PU0NfAPBLal9aTlN0M19fMjExX19tb3ZlX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVBOU182bG9jYWxlNWZhY2V0RVM0X3ZFRU5TXzRwYWlySVBUMF9QVDFfRUVTN19TN19TOV8AjE+QAV9aTlN0M19fMjltYWtlX3BhaXJCNnYxNTAwN0lSTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfNmxvY2FsZTVmYWNldEVFRVM2X0VFTlNfNHBhaXJJTlNfMThfX3Vud3JhcF9yZWZfZGVjYXlJVF9FNHR5cGVFTlM5X0lUMF9FNHR5cGVFRUVPU0FfT1NEXwDwS2NfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElOU18xNnJldmVyc2VfaXRlcmF0b3JJUFBOU182bG9jYWxlNWZhY2V0RUVFTGIwRUU4X191bndyYXBCNnYxNTAwN0VTNl8A2TBdX1pOU3QzX18yNHBhaXJJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfNmxvY2FsZTVmYWNldEVFRVM2X0VDMkI2djE1MDA3SVM2X1M2X0xQdjBFRUVPVF9PVDBfAPJLZl9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUE5TXzZsb2NhbGU1ZmFjZXRFRUVMYjBFRThfX3Jld3JhcEI2djE1MDA3RVM2X1M2XwCSSl5fWk5TdDNfXzI0cGFpcklOU18xNnJldmVyc2VfaXRlcmF0b3JJUFBOU182bG9jYWxlNWZhY2V0RUVFUzZfRUMyQjZ2MTUwMDdJUlM2X1M2X0xQdjBFRUVPVF9PVDBfAPJLbV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzZsb2NhbGU1ZmFjZXRFUk5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMTdfX2Rlc3RydWN0X2F0X2VuZEI2djE1MDA3RVBTM18AxVliX1pOS1N0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzZsb2NhbGU1ZmFjZXRFUk5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFOV9fZW5kX2NhcEI2djE1MDA3RXYAoE6LAV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzZsb2NhbGU1ZmFjZXRFUk5TXzE1X19zc29fYWxsb2NhdG9ySVMzX0xtMzBFRUVFMTdfX2Rlc3RydWN0X2F0X2VuZEI2djE1MDA3RVBTM19OU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRUUAxlliX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU182bG9jYWxlNWZhY2V0RVJOU18xNV9fc3NvX2FsbG9jYXRvcklTM19MbTMwRUVFRTVmaXJzdEI2djE1MDA3RXYA2TBPX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTdjb21wYXJlRW1tUEtjbQDOXWBfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMjBfX3Rocm93X291dF9vZl9yYW5nZUI2djE1MDA3RXYAx1krX1pOU3QzX18yMjBfX3Rocm93X291dF9vZl9yYW5nZUI2djE1MDA3RVBLYwDIWSFfWk5TdDEyb3V0X29mX3JhbmdlQzJCNnYxNTAwN0VQS2MAyVkXX1pOU3QxMm91dF9vZl9yYW5nZUQxRXYAnGIUX1pUSVN0MTJvdXRfb2ZfcmFuZ2UDkA8UX1pUVlN0MTJvdXRfb2ZfcmFuZ2UDjw9WX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTdfX2Fzc2lnbl9leHRlcm5hbEVQS2MAuF1kX1pOU3QzX18yMTRfX3JldmVyc2VfaW1wbEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUGpFRXZUMF9TM19OU18yNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRQCJWVdfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxN19fYXNzaWduX2V4dGVybmFsRVBLd20A9V1gX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTlfX251bGxfdGVybWluYXRlX2F0QjZ2MTUwMDdFUHdtAMpZVl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE3X19hc3NpZ25fZXh0ZXJuYWxFUEt3APZdF19aVFZOU3QzX18yN2NvbGxhdGVJY0VFA44PF19aVFZOU3QzX18yN2NvbGxhdGVJd0VFA40PFV9aVFZOU3QzX18yNWN0eXBlSXdFRQOMDyVfWlRWTlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVFA4sPJl9aVFZOU3QzX18yN2NvZGVjdnRJRHNjMTFfX21ic3RhdGVfdEVFA4oPJl9aVFZOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVFA4kPJ19aVFZOU3QzX18yN2NvZGVjdnRJRHNEdTExX19tYnN0YXRlX3RFRQOIDydfWlRWTlN0M19fMjdjb2RlY3Z0SURpRHUxMV9fbWJzdGF0ZV90RUUDhw9HX1pUVk5TdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUDhg9HX1pUVk5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUDhQ9HX1pUVk5TdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUDhA9HX1pUVk5TdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUDgw8fX1pUVk5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFRQOCDyFfWk5TdDNfXzIxMG1vbmV5X2Jhc2VDMkI2djE1MDA3RXYA2TAfX1pUVk5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFRQOBDx9fWlRWTlN0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUVFA4APH19aVFZOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUD/w5JX1pUVk5TdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQP+DiVfWk5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFQzJCNnYxNTAwN0V2ANkwSV9aVFZOU3QzX18yOW1vbmV5X2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUD/Q4lX1pOU3QzX18yMTFfX21vbmV5X2dldEl3RUMyQjZ2MTUwMDdFdgDZMElfWlRWTlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFA/wOJV9aTlN0M19fMjExX19tb25leV9wdXRJY0VDMkI2djE1MDA3RXYA2TBJX1pUVk5TdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQP7DiVfWk5TdDNfXzIxMV9fbW9uZXlfcHV0SXdFQzJCNnYxNTAwN0V2ANkwSF9aVFZOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQP6DiZfWk5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFQzJFdgDLWSVfWlRWTlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJY0VFA/kOSF9aVFZOU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQP4DiZfWk5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFQzJFdgDMWSVfWlRWTlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0VFA/cOIV9aTlN0M19fMjEwX190aW1lX3B1dEMyQjZ2MTUwMDdFdgDNWUhfWlRWTlN0M19fMjh0aW1lX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUD9g5IX1pUVk5TdDNfXzI4dGltZV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA/UOGF9aVFZOU3QzX18yOG1lc3NhZ2VzSWNFRQP0DiRfWk5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VDMkI2djE1MDA3RXYA2TAYX1pUVk5TdDNfXzI4bWVzc2FnZXNJd0VFA/MOUl9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQTlNfNmxvY2FsZTVmYWNldEVMaTBFTGIwRUVDMkI2djE1MDA3SVJTM192RUVPVF8AuUtNX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU182bG9jYWxlNWZhY2V0RUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBOX1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQTlNfNmxvY2FsZTVmYWNldEVMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwqwFfWk5TdDNfXzIxMF9fZGlzdGFuY2VCNnYxNTAwN0lQTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzlfUzlfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UAz1lBX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQaFBGdlB2RUVDMkI2djE1MDA3SVJTMV9TNF9FRU9UX09UMF8AmFI2X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQaFBGdlB2RUU1Zmlyc3RCNnYxNTAwN0V2ANkwN19aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGhQRnZQdkVFNnNlY29uZEI2djE1MDA3RXYAl09CX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBoTGkwRUxiMEVFQzJCNnYxNTAwN0lSUzFfdkVFT1RfALlLPV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQaExpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TCrAV9aTlN0M19fMjEwX19kaXN0YW5jZUI2djE1MDA3SVBOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTOV9TOV9OU18yNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRQDPWSFfWk5TdDNfXzIxNV9fdGltZV9nZXRfdGVtcEljRUQwRXYA0FkhX1pOU3QzX18yMTVfX3RpbWVfZ2V0X3RlbXBJd0VEMEV2ANFZZl9aTlN0M19fMjhfX3JvdGF0ZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfMTFfX3dyYXBfaXRlcklQY0VFUzRfRUVOU180cGFpcklUMF9TNl9FRVM2X1M2X1QxXwDSWUhfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU1ZXJhc2VFbW0A01lYX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTRuZXh0QjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQY0VFRUVUX1M3X1M3XwCSSkhfWk5TdDNfXzI0cGFpcklOU18xMV9fd3JhcF9pdGVySVBjRUVTM19FQzJCNnYxNTAwN0lSUzNfUzZfTFB2MEVFRU9UX09UMF8A8ktHX1pOU3QzX18yNHBhaXJJTlNfMTFfX3dyYXBfaXRlcklQY0VFUzNfRUMyQjZ2MTUwMDdJUzNfUzNfTFB2MEVFRU9UX09UMF8A8kt7X1pOU3QzX18yMTNfX3JvdGF0ZV9pbXBsQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xMV9fd3JhcF9pdGVySVBjRUVFRVQwX1M1X1M1X1M1X05TXzI2cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWdFANRZtAFfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNG5leHRCNnYxNTAwN0lSTlNfMTFfX3dyYXBfaXRlcklQY0VFRUVOU185cmVtb3ZlX2N2SU5TXzE2cmVtb3ZlX3JlZmVyZW5jZUlUX0U0dHlwZUVFNHR5cGVFT1NBX05TXzE1aXRlcmF0b3JfdHJhaXRzSVNFX0UxNWRpZmZlcmVuY2VfdHlwZUUA1VlQX1pOU3QzX18yMTNfX3JvdGF0ZV9sZWZ0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfMTFfX3dyYXBfaXRlcklQY0VFRUVUMF9TNV9TNV8A1llRX1pOU3QzX18yMTRfX3JvdGF0ZV9yaWdodElOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzExX193cmFwX2l0ZXJJUGNFRUVFVDBfUzVfUzVfANdZUl9aTlN0M19fMjEyX19yb3RhdGVfZ2NkSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfMTFfX3dyYXBfaXRlcklQY0VFRUVUMF9TNV9TNV9TNV8A2FmeAV9aTlN0M19fMjRuZXh0QjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQY0VFRUVOU185ZW5hYmxlX2lmSVhzcjI1X19pc19jcHAxN19pbnB1dF9pdGVyYXRvcklUX0VFNXZhbHVlRVM1X0U0dHlwZUVTNV9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNV9FMTVkaWZmZXJlbmNlX3R5cGVFANlZ1AFfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFMTFfX2l0ZXJfbW92ZUI2djE1MDA3SVJOU18xMV9fd3JhcF9pdGVySVBjRUVFRU5TXzllbmFibGVfaWZJWHNyMTJpc19yZWZlcmVuY2VJRFRkZWNsc3Izc3RkRTdkZWNsdmFsSVJUX0VFRUVFNXZhbHVlRURUY2xzcjNzdGRFNG1vdmVkZWNsc3Izc3RkRTdkZWNsdmFsSVNBX0VFRUVFNHR5cGVFT1M5XwDdHfEBX1pOU3QzX18yNl9fbW92ZUI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfMTFfX3dyYXBfaXRlcklQY0VFUzRfUzRfRUVOU185ZW5hYmxlX2lmSVhhYWFhc3IyMWlzX2NvcHlfY29uc3RydWN0aWJsZUlUMF9FRTV2YWx1ZXNyMjFpc19jb3B5X2NvbnN0cnVjdGlibGVJVDFfRUU1dmFsdWVzcjIxaXNfY29weV9jb25zdHJ1Y3RpYmxlSVQyX0VFNXZhbHVlRU5TXzRwYWlySVM2X1M4X0VFRTR0eXBlRVM2X1M3X1M4XwDaWbQBX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTRwcmV2QjZ2MTUwMDdJUk5TXzExX193cmFwX2l0ZXJJUGNFRUVFTlNfOXJlbW92ZV9jdklOU18xNnJlbW92ZV9yZWZlcmVuY2VJVF9FNHR5cGVFRTR0eXBlRU9TQV9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTRV9FMTVkaWZmZXJlbmNlX3R5cGVFANtZYF9aTlN0M19fMjE1X19tb3ZlX2JhY2t3YXJkQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xMV9fd3JhcF9pdGVySVBjRUVTNF9FRVQxX1QwX1M2X1M1XwDcWV5fWk5TdDNfXzJtaUI2djE1MDA3SVBjUzFfRUVEVG1pY2xkdGZwXzRiYXNlRWNsZHRmcDBfNGJhc2VFRVJLTlNfMTFfX3dyYXBfaXRlcklUX0VFUktOUzNfSVQwX0VFAIlVhAFfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFOGRpc3RhbmNlQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQY0VFRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTOF9TOF8A3Vl1X1pOU3QzX18yMTNfX3N3YXBfcmFuZ2VzQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xMV9fd3JhcF9pdGVySVBjRUVTNF9TNF9TNF9FRU5TXzRwYWlySVQwX1QyX0VFUzZfVDFfUzdfVDNfAN5ZKV9aTlN0M19fMjEwX19hbGdvX2djZEI2djE1MDA3SWxFRVRfUzFfUzFfAN9ZJl9aTlN0M19fMjExX193cmFwX2l0ZXJJUGNFbW1CNnYxNTAwN0V2AOBZO19aTlN0M19fMjdhZHZhbmNlQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQY0VFbGx2RUV2UlRfVDBfAOFZggFfWk5TdDNfXzI5X19hZHZhbmNlQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQY0VFRUV2UlRfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzRfRTE1ZGlmZmVyZW5jZV90eXBlRU5TXzI2cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWdFAOJZaV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUyNV9fdmFsaWRhdGVfaXRlcl9yZWZlcmVuY2VCNnYxNTAwN0lSTlNfMTFfX3dyYXBfaXRlcklQY0VFRUV2dgCoEIoBX1pOU3QzX18yMTNfX3Vud3JhcF9pdGVyQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQY0VFTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzNfTGIxRUVFTGkwRUVFRFRjbHNyVDBfOF9fdW53cmFwY2xzcjNzdGRFN2RlY2x2YWxJVF9FRUVFUzdfAJJZV19aTlN0M19fMjExX19tb3ZlX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RWNjdkVFTlNfNHBhaXJJUFQwX1BUMV9FRVM0X1M0X1M2XwCMT2RfWk5TdDNfXzIxM19fcmV3cmFwX2l0ZXJCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBjRUVTMl9OU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTM19MYjFFRUVFRVRfUzZfVDBfAJdZeV9aTlN0M19fMjltYWtlX3BhaXJCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBjRUVTM19FRU5TXzRwYWlySU5TXzE4X191bndyYXBfcmVmX2RlY2F5SVRfRTR0eXBlRU5TNV9JVDBfRTR0eXBlRUVFT1M2X09TOV8A8EtmX1pOU3QzX18yOW1ha2VfcGFpckI2djE1MDA3SVBjUzFfRUVOU180cGFpcklOU18xOF9fdW53cmFwX3JlZl9kZWNheUlUX0U0dHlwZUVOUzNfSVQwX0U0dHlwZUVFRU9TNF9PUzdfAPBLTV9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSU5TXzExX193cmFwX2l0ZXJJUGNFRUxiMUVFOF9fdW53cmFwQjZ2MTUwMDdFUzNfAJNZUF9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSU5TXzExX193cmFwX2l0ZXJJUGNFRUxiMUVFOF9fcmV3cmFwQjZ2MTUwMDdFUzNfUzJfAJhZhwFfWk5TdDNfXzIxMl9fdG9fYWRkcmVzc0I2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUGNFRXZFRU5TXzVkZWNheUlEVGNsc3IxOV9fdG9fYWRkcmVzc19oZWxwZXJJVF9FRTZfX2NhbGxjbDdkZWNsdmFsSVJLUzVfRUVFRUU0dHlwZUVTN18AlFlLX1pOU3QzX18yMTlfX3RvX2FkZHJlc3NfaGVscGVySU5TXzExX193cmFwX2l0ZXJJUGNFRXZFNl9fY2FsbEI2djE1MDA3RVJLUzNfAJVZSF9aTlN0M19fMjE0cG9pbnRlcl90cmFpdHNJTlNfMTFfX3dyYXBfaXRlcklQY0VFRTEwdG9fYWRkcmVzc0I2djE1MDA3RVMzXwCWWZ4BX1pOU3QzX18yNHByZXZCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVBjRUVFRU5TXzllbmFibGVfaWZJWHNyMjVfX2lzX2NwcDE3X2lucHV0X2l0ZXJhdG9ySVRfRUU1dmFsdWVFUzVfRTR0eXBlRVM1X05TXzE1aXRlcmF0b3JfdHJhaXRzSVM1X0UxNWRpZmZlcmVuY2VfdHlwZUUA41nIAV9aTlN0M19fMjIwX19tb3ZlX2JhY2t3YXJkX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RWNjRUVOU185ZW5hYmxlX2lmSVhhYXNyN2lzX3NhbWVJTlNfMTJyZW1vdmVfY29uc3RJVDBfRTR0eXBlRVQxX0VFNXZhbHVlc3IyOGlzX3RyaXZpYWxseV9tb3ZlX2Fzc2lnbmFibGVJUzdfRUU1dmFsdWVFUFM3X0U0dHlwZUVQUzRfU0JfUzhfAJNPYl9aTlN0M19fMjhkaXN0YW5jZUI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUGNFRUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzVfUzVfAORZYV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU5aXRlcl9zd2FwQjZ2MTUwMDdJUk5TXzExX193cmFwX2l0ZXJJUGNFRVM3X0VFdk9UX09UMF8A5VmFAV9aTlN0M19fMjEwX19kaXN0YW5jZUI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUGNFRUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFUzVfUzVfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UA5lk8X1pOU3QzX18yOWl0ZXJfc3dhcEI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUGNFRVMzX0VFdlRfVDBfAOdZXl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTI2X19lcmFzZV9leHRlcm5hbF93aXRoX21vdmVFbW0Ay11mX1pOU3QzX18yOF9fcm90YXRlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xMV9fd3JhcF9pdGVySVB3RUVTNF9FRU5TXzRwYWlySVQwX1M2X0VFUzZfUzZfVDFfAOhZSF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTVlcmFzZUVtbQDpWVlfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxNF9fZXJhc2VfdG9fZW5kQjZ2MTUwMDdFbQDqWVhfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNG5leHRCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVB3RUVFRVRfUzdfUzdfAJJKSF9aTlN0M19fMjRwYWlySU5TXzExX193cmFwX2l0ZXJJUHdFRVMzX0VDMkI2djE1MDA3SVJTM19TNl9MUHYwRUVFT1RfT1QwXwDyS0dfWk5TdDNfXzI0cGFpcklOU18xMV9fd3JhcF9pdGVySVB3RUVTM19FQzJCNnYxNTAwN0lTM19TM19MUHYwRUVFT1RfT1QwXwDyS3tfWk5TdDNfXzIxM19fcm90YXRlX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzExX193cmFwX2l0ZXJJUHdFRUVFVDBfUzVfUzVfUzVfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UA61m0AV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU0bmV4dEI2djE1MDA3SVJOU18xMV9fd3JhcF9pdGVySVB3RUVFRU5TXzlyZW1vdmVfY3ZJTlNfMTZyZW1vdmVfcmVmZXJlbmNlSVRfRTR0eXBlRUU0dHlwZUVPU0FfTlNfMTVpdGVyYXRvcl90cmFpdHNJU0VfRTE1ZGlmZmVyZW5jZV90eXBlRQDsWVBfWk5TdDNfXzIxM19fcm90YXRlX2xlZnRJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xMV9fd3JhcF9pdGVySVB3RUVFRVQwX1M1X1M1XwDtWVFfWk5TdDNfXzIxNF9fcm90YXRlX3JpZ2h0SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFTlNfMTFfX3dyYXBfaXRlcklQd0VFRUVUMF9TNV9TNV8A7llSX1pOU3QzX18yMTJfX3JvdGF0ZV9nY2RJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xMV9fd3JhcF9pdGVySVB3RUVFRVQwX1M1X1M1X1M1XwDvWZ4BX1pOU3QzX18yNG5leHRCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVB3RUVFRU5TXzllbmFibGVfaWZJWHNyMjVfX2lzX2NwcDE3X2lucHV0X2l0ZXJhdG9ySVRfRUU1dmFsdWVFUzVfRTR0eXBlRVM1X05TXzE1aXRlcmF0b3JfdHJhaXRzSVM1X0UxNWRpZmZlcmVuY2VfdHlwZUUA8FnUAV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUUxMV9faXRlcl9tb3ZlQjZ2MTUwMDdJUk5TXzExX193cmFwX2l0ZXJJUHdFRUVFTlNfOWVuYWJsZV9pZklYc3IxMmlzX3JlZmVyZW5jZUlEVGRlY2xzcjNzdGRFN2RlY2x2YWxJUlRfRUVFRUU1dmFsdWVFRFRjbHNyM3N0ZEU0bW92ZWRlY2xzcjNzdGRFN2RlY2x2YWxJU0FfRUVFRUU0dHlwZUVPUzlfAN0d8QFfWk5TdDNfXzI2X19tb3ZlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xMV9fd3JhcF9pdGVySVB3RUVTNF9TNF9FRU5TXzllbmFibGVfaWZJWGFhYWFzcjIxaXNfY29weV9jb25zdHJ1Y3RpYmxlSVQwX0VFNXZhbHVlc3IyMWlzX2NvcHlfY29uc3RydWN0aWJsZUlUMV9FRTV2YWx1ZXNyMjFpc19jb3B5X2NvbnN0cnVjdGlibGVJVDJfRUU1dmFsdWVFTlNfNHBhaXJJUzZfUzhfRUVFNHR5cGVFUzZfUzdfUzhfAPFZtAFfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNHByZXZCNnYxNTAwN0lSTlNfMTFfX3dyYXBfaXRlcklQd0VFRUVOU185cmVtb3ZlX2N2SU5TXzE2cmVtb3ZlX3JlZmVyZW5jZUlUX0U0dHlwZUVFNHR5cGVFT1NBX05TXzE1aXRlcmF0b3JfdHJhaXRzSVNFX0UxNWRpZmZlcmVuY2VfdHlwZUUA8llgX1pOU3QzX18yMTVfX21vdmVfYmFja3dhcmRCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzExX193cmFwX2l0ZXJJUHdFRVM0X0VFVDFfVDBfUzZfUzVfAPNZXl9aTlN0M19fMm1pQjZ2MTUwMDdJUHdTMV9FRURUbWljbGR0ZnBfNGJhc2VFY2xkdGZwMF80YmFzZUVFUktOU18xMV9fd3JhcF9pdGVySVRfRUVSS05TM19JVDBfRUUAkE+EAV9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU4ZGlzdGFuY2VCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVB3RUVFRU5TXzE1aXRlcmF0b3JfdHJhaXRzSVRfRTE1ZGlmZmVyZW5jZV90eXBlRVM4X1M4XwD0WXVfWk5TdDNfXzIxM19fc3dhcF9yYW5nZXNCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RU5TXzExX193cmFwX2l0ZXJJUHdFRVM0X1M0X1M0X0VFTlNfNHBhaXJJVDBfVDJfRUVTNl9UMV9TN19UM18A9VkmX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQd0VtbUI2djE1MDA3RXYAuFk7X1pOU3QzX18yN2FkdmFuY2VCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVB3RUVsbHZFRXZSVF9UMF8A9lmCAV9aTlN0M19fMjlfX2FkdmFuY2VCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVB3RUVFRXZSVF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTNF9FMTVkaWZmZXJlbmNlX3R5cGVFTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UA91lpX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTI1X192YWxpZGF0ZV9pdGVyX3JlZmVyZW5jZUI2djE1MDA3SVJOU18xMV9fd3JhcF9pdGVySVB3RUVFRXZ2AKgQigFfWk5TdDNfXzIxM19fdW53cmFwX2l0ZXJCNnYxNTAwN0lOU18xMV9fd3JhcF9pdGVySVB3RUVOU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTM19MYjFFRUVMaTBFRUVEVGNsc3JUMF84X191bndyYXBjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFRUVTN18AkllXX1pOU3QzX18yMTFfX21vdmVfaW1wbEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFd3d2RUVOU180cGFpcklQVDBfUFQxX0VFUzRfUzRfUzZfAIxPZF9aTlN0M19fMjEzX19yZXdyYXBfaXRlckI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUHdFRVMyX05TXzE4X191bndyYXBfaXRlcl9pbXBsSVMzX0xiMUVFRUVFVF9TNl9UMF8Am1l5X1pOU3QzX18yOW1ha2VfcGFpckI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUHdFRVMzX0VFTlNfNHBhaXJJTlNfMThfX3Vud3JhcF9yZWZfZGVjYXlJVF9FNHR5cGVFTlM1X0lUMF9FNHR5cGVFRUVPUzZfT1M5XwDwS2ZfWk5TdDNfXzI5bWFrZV9wYWlyQjZ2MTUwMDdJUHdTMV9FRU5TXzRwYWlySU5TXzE4X191bndyYXBfcmVmX2RlY2F5SVRfRTR0eXBlRU5TM19JVDBfRTR0eXBlRUVFT1M0X09TN18A8EtNX1pOU3QzX18yMThfX3Vud3JhcF9pdGVyX2ltcGxJTlNfMTFfX3dyYXBfaXRlcklQd0VFTGIxRUU4X191bndyYXBCNnYxNTAwN0VTM18Ak1lQX1pOU3QzX18yMThfX3Vud3JhcF9pdGVyX2ltcGxJTlNfMTFfX3dyYXBfaXRlcklQd0VFTGIxRUU4X19yZXdyYXBCNnYxNTAwN0VTM19TMl8AnFmHAV9aTlN0M19fMjEyX190b19hZGRyZXNzQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQd0VFdkVFTlNfNWRlY2F5SURUY2xzcjE5X190b19hZGRyZXNzX2hlbHBlcklUX0VFNl9fY2FsbGNsN2RlY2x2YWxJUktTNV9FRUVFRTR0eXBlRVM3XwCUWUtfWk5TdDNfXzIxOV9fdG9fYWRkcmVzc19oZWxwZXJJTlNfMTFfX3dyYXBfaXRlcklQd0VFdkU2X19jYWxsQjZ2MTUwMDdFUktTM18AlVlIX1pOU3QzX18yMTRwb2ludGVyX3RyYWl0c0lOU18xMV9fd3JhcF9pdGVySVB3RUVFMTB0b19hZGRyZXNzQjZ2MTUwMDdFUzNfAJZZngFfWk5TdDNfXzI0cHJldkI2djE1MDA3SU5TXzExX193cmFwX2l0ZXJJUHdFRUVFTlNfOWVuYWJsZV9pZklYc3IyNV9faXNfY3BwMTdfaW5wdXRfaXRlcmF0b3JJVF9FRTV2YWx1ZUVTNV9FNHR5cGVFUzVfTlNfMTVpdGVyYXRvcl90cmFpdHNJUzVfRTE1ZGlmZmVyZW5jZV90eXBlRQD4WcgBX1pOU3QzX18yMjBfX21vdmVfYmFja3dhcmRfaW1wbEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFd3dFRU5TXzllbmFibGVfaWZJWGFhc3I3aXNfc2FtZUlOU18xMnJlbW92ZV9jb25zdElUMF9FNHR5cGVFVDFfRUU1dmFsdWVzcjI4aXNfdHJpdmlhbGx5X21vdmVfYXNzaWduYWJsZUlTN19FRTV2YWx1ZUVQUzdfRTR0eXBlRVBTNF9TQl9TOF8Ak09iX1pOU3QzX18yOGRpc3RhbmNlQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQd0VFRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTNV9TNV8AiE9hX1pOU3QzX18yOF9JdGVyT3BzSU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFRTlpdGVyX3N3YXBCNnYxNTAwN0lSTlNfMTFfX3dyYXBfaXRlcklQd0VFUzdfRUV2T1RfT1QwXwD5WYUBX1pOU3QzX18yMTBfX2Rpc3RhbmNlQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQd0VFRUVOU18xNWl0ZXJhdG9yX3RyYWl0c0lUX0UxNWRpZmZlcmVuY2VfdHlwZUVTNV9TNV9OU18yNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRQCNTzxfWk5TdDNfXzI5aXRlcl9zd2FwQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQd0VFUzNfRUV2VF9UMF8A+llgX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTIwX190aHJvd19vdXRfb2ZfcmFuZ2VCNnYxNTAwN0V2AMdZXl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTI2X19lcmFzZV9leHRlcm5hbF93aXRoX21vdmVFbW0Ail6sAV9aTlN0M19fMjEwX19kaXN0YW5jZUI2djE1MDA3SVBLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFU0FfU0FfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UAz1kqX1pOU3QzX18yMTRudW1lcmljX2xpbWl0c0lsRTNtaW5CNnYxNTAwN0V2ALdQN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJbExiMUVFM21pbkI2djE1MDA3RXYAt1AqX1pOU3QzX18yMTRudW1lcmljX2xpbWl0c0l4RTNtaW5CNnYxNTAwN0V2APtZKl9aTlN0M19fMjE0bnVtZXJpY19saW1pdHNJeEUzbWF4QjZ2MTUwMDdFdgD8WTdfWk5TdDNfXzIyM19fbGliY3BwX251bWVyaWNfbGltaXRzSXhMYjFFRTNtaW5CNnYxNTAwN0V2APtZN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJeExiMUVFM21heEI2djE1MDA3RXYA/FkqX1pOU3QzX18yMTRudW1lcmljX2xpbWl0c0l0RTNtYXhCNnYxNTAwN0V2AP1ZN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJdExiMUVFM21heEI2djE1MDA3RXYA/VkqX1pOU3QzX18yMTRudW1lcmljX2xpbWl0c0l5RTNtYXhCNnYxNTAwN0V2AP5ZN19aTlN0M19fMjIzX19saWJjcHBfbnVtZXJpY19saW1pdHNJeUxiMUVFM21heEI2djE1MDA3RXYA/lkqX1pOU3QzX18yMTFfX2RvX3N0cnRvZEI2djE1MDA3SWZFRVRfUEtjUFBjAP9ZKl9aTlN0M19fMjExX19kb19zdHJ0b2RCNnYxNTAwN0lkRUVUX1BLY1BQYwCAWipfWk5TdDNfXzIxMV9fZG9fc3RydG9kQjZ2MTUwMDdJZUVFVF9QS2NQUGMAgVqsAV9aTlN0M19fMjEwX19kaXN0YW5jZUI2djE1MDA3SVBLTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRUVFTlNfMTVpdGVyYXRvcl90cmFpdHNJVF9FMTVkaWZmZXJlbmNlX3R5cGVFU0FfU0FfTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UAz1lCX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBjTGkwRUxiMEVFQzJCNnYxNTAwN0lSUzFfdkVFT1RfALlLPl9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUGNMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwPV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQY0xpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBCX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBqTGkwRUxiMEVFQzJCNnYxNTAwN0lSUzFfdkVFT1RfALlLNl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGpQRnZQdkVFNWZpcnN0QjZ2MTUwMDdFdgDZMDdfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBqUEZ2UHZFRTZzZWNvbmRCNnYxNTAwN0V2AJdPPV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQakxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TA+X1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQakxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBCX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVB3TGkwRUxiMEVFQzJCNnYxNTAwN0lSUzFfdkVFT1RfALlLPl9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUHdMaTBFTGIwRUU1X19nZXRCNnYxNTAwN0V2ANkwPV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQd0xpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TAiX1pOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRTRpbnRsRQPyDiJfWk5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFNGludGxFA/EOIl9aTlN0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUU0aW50bEUD8A4iX1pOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRTRpbnRsRQPvDhZfWk5TdDNfXzI2bG9jYWxlNG5vbmVFA+4OGV9aTlN0M19fMjZsb2NhbGU3Y29sbGF0ZUUD7Q4XX1pOU3QzX18yNmxvY2FsZTVjdHlwZUUD7A4aX1pOU3QzX18yNmxvY2FsZThtb25ldGFyeUUD6w4ZX1pOU3QzX18yNmxvY2FsZTdudW1lcmljRQPqDhZfWk5TdDNfXzI2bG9jYWxlNHRpbWVFA+kOGl9aTlN0M19fMjZsb2NhbGU4bWVzc2FnZXNFA+gOFV9aTlN0M19fMjZsb2NhbGUzYWxsRQPnDhlfWlRJTlN0M19fMjZsb2NhbGU1X19pbXBFA+YOH19aVElOU3QzX18yMTRjb2xsYXRlX2J5bmFtZUljRUUD5Q4fX1pUSU5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSXdFRQPkDhxfWk5TdDNfXzIxMGN0eXBlX2Jhc2U1c3BhY2VFA+MOHF9aTlN0M19fMjEwY3R5cGVfYmFzZTVwcmludEUD4g4cX1pOU3QzX18yMTBjdHlwZV9iYXNlNWNudHJsRQPhDhxfWk5TdDNfXzIxMGN0eXBlX2Jhc2U1dXBwZXJFA+AOHF9aTlN0M19fMjEwY3R5cGVfYmFzZTVsb3dlckUD3w4cX1pOU3QzX18yMTBjdHlwZV9iYXNlNWFscGhhRQPeDhxfWk5TdDNfXzIxMGN0eXBlX2Jhc2U1ZGlnaXRFA90OHF9aTlN0M19fMjEwY3R5cGVfYmFzZTVwdW5jdEUD3A4dX1pOU3QzX18yMTBjdHlwZV9iYXNlNnhkaWdpdEUD2w4cX1pOU3QzX18yMTBjdHlwZV9iYXNlNWJsYW5rRQPaDhxfWk5TdDNfXzIxMGN0eXBlX2Jhc2U1YWxudW1FA9kOHF9aTlN0M19fMjEwY3R5cGVfYmFzZTVncmFwaEUD2A4fX1pOU3QzX18yNWN0eXBlSWNFMTB0YWJsZV9zaXplRQPXDhVfWlRJTlN0M19fMjVjdHlwZUljRUUD1g4dX1pUSU5TdDNfXzIxMmN0eXBlX2J5bmFtZUljRUUD1Q4dX1pUSU5TdDNfXzIxMmN0eXBlX2J5bmFtZUl3RUUD1A4lX1pUSU5TdDNfXzI3Y29kZWN2dEl3YzExX19tYnN0YXRlX3RFRQPTDhhfWlRJTlN0M19fMjhudW1wdW5jdEljRUUD0g4YX1pUSU5TdDNfXzI4bnVtcHVuY3RJd0VFA9EOIF9aVElOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJY0VFA9AOIF9aVElOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJd0VFA88OGV9aVElOU3QzX18yNmxvY2FsZTVmYWNldEUDzg4ZX1pUU05TdDNfXzI2bG9jYWxlNWZhY2V0RQPNDhVfWlRJTlN0M19fMjVjdHlwZUl3RUUDzA4VX1pUU05TdDNfXzI1Y3R5cGVJd0VFA8sOGF9aVFNOU3QzX18yMTBjdHlwZV9iYXNlRQPKDhhfWlRJTlN0M19fMjEwY3R5cGVfYmFzZUUDyQ4lX1pUSU5TdDNfXzI3Y29kZWN2dEljYzExX19tYnN0YXRlX3RFRQPIDiVfWlRTTlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVFA8cOGl9aVFNOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFA8YOGl9aVElOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFA8UOJl9aVElOU3QzX18yN2NvZGVjdnRJRHNjMTFfX21ic3RhdGVfdEVFA8QOJl9aVFNOU3QzX18yN2NvZGVjdnRJRHNjMTFfX21ic3RhdGVfdEVFA8MOJ19aVElOU3QzX18yN2NvZGVjdnRJRHNEdTExX19tYnN0YXRlX3RFRQPCDidfWlRTTlN0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RUUDwQ4mX1pUSU5TdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RUUDwA4mX1pUU05TdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RUUDvw4nX1pUSU5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVFA74OJ19aVFNOU3QzX18yN2NvZGVjdnRJRGlEdTExX19tYnN0YXRlX3RFRQO9DiVfWlRWTlN0M19fMjE2X19uYXJyb3dfdG9fdXRmOElMbTE2RUVFA7wOJV9aVElOU3QzX18yMTZfX25hcnJvd190b191dGY4SUxtMTZFRUUDuw4lX1pUU05TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0xNkVFRQO6DiVfWlRWTlN0M19fMjE2X19uYXJyb3dfdG9fdXRmOElMbTMyRUVFA7kOJV9aVElOU3QzX18yMTZfX25hcnJvd190b191dGY4SUxtMzJFRUUDuA4lX1pUU05TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0zMkVFRQO3DiZfWlRWTlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0xNkVFRQO2DiZfWlRJTlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0xNkVFRQO1DiZfWlRTTlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0xNkVFRQO0DiZfWlRWTlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0zMkVFRQOzDiZfWlRJTlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0zMkVFRQOyDiZfWlRTTlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0zMkVFRQOxDh9fWlRWTlN0M19fMjE0X19jb2RlY3Z0X3V0ZjhJd0VFA7AOH19aVElOU3QzX18yMTRfX2NvZGVjdnRfdXRmOEl3RUUDrw4fX1pUU05TdDNfXzIxNF9fY29kZWN2dF91dGY4SXdFRQOuDiVfWlRTTlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFA60OIF9aVFZOU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEc0VFA6wOIF9aVElOU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEc0VFA6sOIF9aVFNOU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEc0VFA6oOIF9aVFZOU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEaUVFA6kOIF9aVElOU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEaUVFA6gOIF9aVFNOU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEaUVFA6cOJF9aVFZOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJd0xiMEVFRQOmDiRfWlRJTlN0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SXdMYjBFRUUDpQ4kX1pUU05TdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIwRUVFA6QOJF9aVFZOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJd0xiMUVFRQOjDiRfWlRJTlN0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SXdMYjFFRUUDog4kX1pUU05TdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIxRUVFA6EOJV9aVFZOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjBFRUUDoA4lX1pUSU5TdDNfXzIxNV9fY29kZWN2dF91dGYxNklEc0xiMEVFRQOfDiVfWlRTTlN0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURzTGIwRUVFA54OJV9aVFZOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjFFRUUDnQ4lX1pUSU5TdDNfXzIxNV9fY29kZWN2dF91dGYxNklEc0xiMUVFRQOcDiVfWlRTTlN0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURzTGIxRUVFA5sOJV9aVFZOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRGlMYjBFRUUDmg4lX1pUSU5TdDNfXzIxNV9fY29kZWN2dF91dGYxNklEaUxiMEVFRQOZDiVfWlRTTlN0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIwRUVFA5gOJV9aVFZOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRGlMYjFFRUUDlw4lX1pUSU5TdDNfXzIxNV9fY29kZWN2dF91dGYxNklEaUxiMUVFRQOWDiVfWlRTTlN0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIxRUVFA5UOJV9aVFZOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNkl3RUUDlA4lX1pUSU5TdDNfXzIyMF9fY29kZWN2dF91dGY4X3V0ZjE2SXdFRQOTDiVfWlRTTlN0M19fMjIwX19jb2RlY3Z0X3V0ZjhfdXRmMTZJd0VFA5IOJl9aVFZOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEaUVFA5EOJl9aVElOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEaUVFA5AOJl9aVFNOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEaUVFA48OJl9aVFZOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEc0VFA44OJl9aVElOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEc0VFA40OJl9aVFNOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEc0VFA4wOGV9aVFNOU3QzX18yNmxvY2FsZTVfX2ltcEUDiw4fX1pUU05TdDNfXzIxNGNvbGxhdGVfYnluYW1lSWNFRQOKDhdfWlRTTlN0M19fMjdjb2xsYXRlSWNFRQOJDhdfWlRJTlN0M19fMjdjb2xsYXRlSWNFRQOIDh9fWlRTTlN0M19fMjE0Y29sbGF0ZV9ieW5hbWVJd0VFA4cOF19aVFNOU3QzX18yN2NvbGxhdGVJd0VFA4YOF19aVElOU3QzX18yN2NvbGxhdGVJd0VFA4UOFV9aVFNOU3QzX18yNWN0eXBlSWNFRQOEDh1fWlRTTlN0M19fMjEyY3R5cGVfYnluYW1lSWNFRQODDh1fWlRTTlN0M19fMjEyY3R5cGVfYnluYW1lSXdFRQOCDhhfWlRTTlN0M19fMjhudW1wdW5jdEljRUUDgQ4YX1pUU05TdDNfXzI4bnVtcHVuY3RJd0VFA4AOIF9aVFNOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJY0VFA/8NIF9aVFNOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJd0VFA/4NR19aVElOU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFA/0NR19aVFNOU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFA/wNGV9aVFNOU3QzX18yOV9fbnVtX2dldEljRUUD+w0cX1pUU05TdDNfXzIxNF9fbnVtX2dldF9iYXNlRQP6DRxfWlRJTlN0M19fMjE0X19udW1fZ2V0X2Jhc2VFA/kNGV9aVElOU3QzX18yOV9fbnVtX2dldEljRUUD+A1HX1pUSU5TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUD9w1HX1pUU05TdDNfXzI3bnVtX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUD9g0ZX1pUU05TdDNfXzI5X19udW1fZ2V0SXdFRQP1DRlfWlRJTlN0M19fMjlfX251bV9nZXRJd0VFA/QNR19aVElOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFA/MNR19aVFNOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFA/INGV9aVFNOU3QzX18yOV9fbnVtX3B1dEljRUUD8Q0cX1pUU05TdDNfXzIxNF9fbnVtX3B1dF9iYXNlRQPwDRxfWlRJTlN0M19fMjE0X19udW1fcHV0X2Jhc2VFA+8NGV9aVElOU3QzX18yOV9fbnVtX3B1dEljRUUD7g1HX1pUSU5TdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUD7Q1HX1pUU05TdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUD7A0ZX1pUU05TdDNfXzI5X19udW1fcHV0SXdFRQPrDRlfWlRJTlN0M19fMjlfX251bV9wdXRJd0VFA+oNSF9aVElOU3QzX18yOHRpbWVfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQPpDUhfWlRTTlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUD6A0WX1pUU05TdDNfXzI5dGltZV9iYXNlRQPnDRZfWlRJTlN0M19fMjl0aW1lX2Jhc2VFA+YNJV9aVFNOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUljRUUD5Q0lX1pUSU5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFRQPkDUhfWlRJTlN0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUD4w1IX1pUU05TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA+INJV9aVFNOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUl3RUUD4Q0lX1pUSU5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFRQPgDVBfWlRJTlN0M19fMjE1dGltZV9nZXRfYnluYW1lSWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQPfDVBfWlRTTlN0M19fMjE1dGltZV9nZXRfYnluYW1lSWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQPeDSNfWlRTTlN0M19fMjE4X190aW1lX2dldF9zdG9yYWdlSWNFRQPdDRhfWlRTTlN0M19fMjEwX190aW1lX2dldEUD3A0YX1pUSU5TdDNfXzIxMF9fdGltZV9nZXRFA9sNI19aVElOU3QzX18yMThfX3RpbWVfZ2V0X3N0b3JhZ2VJY0VFA9oNUF9aVElOU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA9kNUF9aVFNOU3QzX18yMTV0aW1lX2dldF9ieW5hbWVJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA9gNI19aVFNOU3QzX18yMThfX3RpbWVfZ2V0X3N0b3JhZ2VJd0VFA9cNI19aVElOU3QzX18yMThfX3RpbWVfZ2V0X3N0b3JhZ2VJd0VFA9YNSF9aVElOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQPVDUhfWlRTTlN0M19fMjh0aW1lX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUD1A0YX1pUU05TdDNfXzIxMF9fdGltZV9wdXRFA9MNGF9aVElOU3QzX18yMTBfX3RpbWVfcHV0RQPSDUhfWlRJTlN0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUD0Q1IX1pUU05TdDNfXzI4dGltZV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA9ANUF9aVElOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFA88NUF9aVFNOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFA84NUF9aVElOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA80NUF9aVFNOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA8wNH19aVElOU3QzX18yMTBtb25leXB1bmN0SWNMYjBFRUUDyw0fX1pUU05TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFRQPKDRhfWlRTTlN0M19fMjEwbW9uZXlfYmFzZUUDyQ0YX1pUSU5TdDNfXzIxMG1vbmV5X2Jhc2VFA8gNH19aVElOU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRUUDxw0fX1pUU05TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFRQPGDR9fWlRJTlN0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUVFA8UNH19aVFNOU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRUUDxA0fX1pUSU5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMUVFRQPDDR9fWlRTTlN0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUVFA8INJl9aVElOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIwRUVFA8ENJl9aVFNOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIwRUVFA8ANJl9aVElOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIxRUVFA78NJl9aVFNOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUljTGIxRUVFA74NJl9aVElOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIwRUVFA70NJl9aVFNOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIwRUVFA7wNJl9aVElOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIxRUVFA7sNJl9aVFNOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIxRUVFA7oNSV9aVElOU3QzX18yOW1vbmV5X2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUDuQ1JX1pUU05TdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQO4DRxfWlRTTlN0M19fMjExX19tb25leV9nZXRJY0VFA7cNHF9aVElOU3QzX18yMTFfX21vbmV5X2dldEljRUUDtg1JX1pUSU5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQO1DUlfWlRTTlN0M19fMjltb25leV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFA7QNHF9aVFNOU3QzX18yMTFfX21vbmV5X2dldEl3RUUDsw0cX1pUSU5TdDNfXzIxMV9fbW9uZXlfZ2V0SXdFRQOyDUlfWlRJTlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFA7ENSV9aVFNOU3QzX18yOW1vbmV5X3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUDsA0cX1pUU05TdDNfXzIxMV9fbW9uZXlfcHV0SWNFRQOvDRxfWlRJTlN0M19fMjExX19tb25leV9wdXRJY0VFA64NSV9aVElOU3QzX18yOW1vbmV5X3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUDrQ1JX1pUU05TdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQOsDRxfWlRTTlN0M19fMjExX19tb25leV9wdXRJd0VFA6sNHF9aVElOU3QzX18yMTFfX21vbmV5X3B1dEl3RUUDqg0YX1pUSU5TdDNfXzI4bWVzc2FnZXNJY0VFA6kNGF9aVFNOU3QzX18yOG1lc3NhZ2VzSWNFRQOoDRtfWlRTTlN0M19fMjEzbWVzc2FnZXNfYmFzZUUDpw0bX1pUSU5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFA6YNGF9aVElOU3QzX18yOG1lc3NhZ2VzSXdFRQOlDRhfWlRTTlN0M19fMjhtZXNzYWdlc0l3RUUDpA0gX1pUSU5TdDNfXzIxNW1lc3NhZ2VzX2J5bmFtZUljRUUDow0gX1pUU05TdDNfXzIxNW1lc3NhZ2VzX2J5bmFtZUljRUUDog0gX1pUSU5TdDNfXzIxNW1lc3NhZ2VzX2J5bmFtZUl3RUUDoQ0gX1pUU05TdDNfXzIxNW1lc3NhZ2VzX2J5bmFtZUl3RUUDoA0tX1pUSU5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSWNjMTFfX21ic3RhdGVfdEVFA58NLV9aVFNOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUljYzExX19tYnN0YXRlX3RFRQOeDS1fWlRJTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJd2MxMV9fbWJzdGF0ZV90RUUDnQ0tX1pUU05TdDNfXzIxNGNvZGVjdnRfYnluYW1lSXdjMTFfX21ic3RhdGVfdEVFA5wNLl9aVElOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEc2MxMV9fbWJzdGF0ZV90RUUDmw0uX1pUU05TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURzYzExX19tYnN0YXRlX3RFRQOaDS5fWlRJTlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRGljMTFfX21ic3RhdGVfdEVFA5kNLl9aVFNOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEaWMxMV9fbWJzdGF0ZV90RUUDmA0vX1pUSU5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURzRHUxMV9fbWJzdGF0ZV90RUUDlw0vX1pUU05TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURzRHUxMV9fbWJzdGF0ZV90RUUDlg0vX1pUSU5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURpRHUxMV9fbWJzdGF0ZV90RUUDlQ0vX1pUU05TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURpRHUxMV9fbWJzdGF0ZV90RUUDlA0gX1pUSU5TdDNfXzIxNV9fdGltZV9nZXRfdGVtcEljRUUDkw0gX1pUU05TdDNfXzIxNV9fdGltZV9nZXRfdGVtcEljRUUDkg0gX1pUSU5TdDNfXzIxNV9fdGltZV9nZXRfdGVtcEl3RUUDkQ0gX1pUU05TdDNfXzIxNV9fdGltZV9nZXRfdGVtcEl3RUUDkA0eX1pOU3QzX18yNmxvY2FsZTVfX2ltcEMxRVJLUzFfALxWFl9aTlN0M19fMjZsb2NhbGVDMUVQS2MA7VZPX1pOU3QzX18yNmxvY2FsZUMxRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQDuVhxfWk5TdDNfXzI2bG9jYWxlQzFFUktTMF9QS2NpAO9WVV9aTlN0M19fMjZsb2NhbGVDMUVSS1MwX1JLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRWkA8FYcX1pOU3QzX18yNmxvY2FsZUMxRVJLUzBfUzJfaQDxViNfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSWNFQzFFUEtjbQD9ViNfWk5TdDNfXzIxNGNvbGxhdGVfYnluYW1lSXdFQzFFUEtjbQCEVyFfWk5TdDNfXzIxMmN0eXBlX2J5bmFtZUljRUMxRVBLY20AolchX1pOU3QzX18yMTJjdHlwZV9ieW5hbWVJd0VDMUVQS2NtAKlXKV9aTlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVDMUVQS2NtAK9WJl9aTlN0M19fMjE2X19uYXJyb3dfdG9fdXRmOElMbTE2RUVEMkV2ANkwJl9aTlN0M19fMjE2X19uYXJyb3dfdG9fdXRmOElMbTMyRUVEMkV2ANkwJ19aTlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0xNkVFRDJFdgDZMCdfWk5TdDNfXzIxN19fd2lkZW5fZnJvbV91dGY4SUxtMzJFRUQyRXYA2TAkX1pOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJY0VDMUVQS2NtAJVYIV9aTlN0M19fMjE1bnVtcHVuY3RfYnluYW1lSWNFRDJFdgCLWCRfWk5TdDNfXzIxNW51bXB1bmN0X2J5bmFtZUl3RUMxRVBLY20An1ghX1pOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJd0VEMkV2AI1YG19aTlN0M19fMjEwX190aW1lX2dldEMxRVBLYwC/WFRfWk5TdDNfXzIxMF9fdGltZV9nZXRDMUVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAwFgZX1pOU3QzX18yMTBfX3RpbWVfZ2V0RDFFdgDBWCZfWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUljRUMxRVBLYwDOWF9fWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUljRUMxRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQC4ViZfWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUl3RUMxRVBLYwDSWF9fWk5TdDNfXzIxOF9fdGltZV9nZXRfc3RvcmFnZUl3RUMxRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQC5VhtfWk5TdDNfXzIxMF9fdGltZV9wdXRDMUVQS2MA2FhUX1pOU3QzX18yMTBfX3RpbWVfcHV0QzFFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFANlYGV9aTlN0M19fMjEwX190aW1lX3B1dEQxRXYA2lgbX1pOU3QzX18yMTJiYWRfd2Vha19wdHJEMkV2ANkwG19aTlN0M19fMjEyYmFkX3dlYWtfcHRyRDBFdgDiQBtfWk5TdDNfXzIxMmJhZF93ZWFrX3B0ckQxRXYA2TAfX1pOS1N0M19fMjEyYmFkX3dlYWtfcHRyNHdoYXRFdgCCWh1fWk5TdDNfXzIxNF9fc2hhcmVkX2NvdW50RDBFdgDITCJfWk5TdDNfXzIxOV9fc2hhcmVkX3dlYWtfY291bnREMEV2AMhMJV9aTlN0M19fMjE5X19zaGFyZWRfd2Vha19jb3VudDRsb2NrRXYAhFoZX1pOU3QzX18yOF9fc3BfbXV0NGxvY2tFdgCFWjlfWk5TdDNfXzIxOV9fbGliY3BwX211dGV4X2xvY2tCNnYxNTAwN0VQMTVwdGhyZWFkX211dGV4X3QA3BAbX1pOU3QzX18yOF9fc3BfbXV0NnVubG9ja0V2AIZaO19aTlN0M19fMjIxX19saWJjcHBfbXV0ZXhfdW5sb2NrQjZ2MTUwMDdFUDE1cHRocmVhZF9tdXRleF90ANwQG19aTlN0M19fMjEyX19nZXRfc3BfbXV0RVBLdgCHWhdfWk5TdDNfXzI1YWxpZ25FbW1SUHZSbQCIWhlfWk5TdDNfXzIxM2FsbG9jYXRvcl9hcmdFA48NGl9aVFZOU3QzX18yMTJiYWRfd2Vha19wdHJFA44NGl9aVElOU3QzX18yMTJiYWRfd2Vha19wdHJFA40NGl9aVFNOU3QzX18yMTJiYWRfd2Vha19wdHJFA4wNHV9aTlN0M19fMjE0X19zaGFyZWRfY291bnREMUV2ANkwHF9aVFNOU3QzX18yMTRfX3NoYXJlZF9jb3VudEUDiw0iX1pOU3QzX18yMTlfX3NoYXJlZF93ZWFrX2NvdW50RDFFdgDZMCFfWlRTTlN0M19fMjE5X19zaGFyZWRfd2Vha19jb3VudEUDig0/X1pOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjE5bmV3X2RlbGV0ZV9yZXNvdXJjZUV2AIlaQF9aTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIyMG51bGxfbWVtb3J5X3Jlc291cmNlRXYAilpAX1pOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjIwZ2V0X2RlZmF1bHRfcmVzb3VyY2VFdgCLWp0BX1pOU3QzX18yMjRhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXRCNnYxNTAwN0lQTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIxNW1lbW9yeV9yZXNvdXJjZUVFRVRfUE5TXzZhdG9taWNJUzZfRUVOUzhfMTB2YWx1ZV90eXBlRU5TXzEybWVtb3J5X29yZGVyRQCNWokBX1pOU3QzX18yMjBhdG9taWNfbG9hZF9leHBsaWNpdEI2djE1MDA3SVBOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjE1bWVtb3J5X3Jlc291cmNlRUVFVF9QS05TXzZhdG9taWNJUzZfRUVOU18xMm1lbW9yeV9vcmRlckUAkkdWX1pOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjIwc2V0X2RlZmF1bHRfcmVzb3VyY2VFUE5TMV8xNW1lbW9yeV9yZXNvdXJjZUUAjlpOX1pOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjMyX19uZXdfZGVsZXRlX21lbW9yeV9yZXNvdXJjZV9pbXBEMEV2AOJAPV9aTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIxNW1lbW9yeV9yZXNvdXJjZUQyRXYA2TBaX1pOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjMyX19uZXdfZGVsZXRlX21lbW9yeV9yZXNvdXJjZV9pbXAxMWRvX2FsbG9jYXRlRW1tAI9aXl9aTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIzMl9fbmV3X2RlbGV0ZV9tZW1vcnlfcmVzb3VyY2VfaW1wMTNkb19kZWFsbG9jYXRlRVB2bW0AkFpxX1pOS1N0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIzMl9fbmV3X2RlbGV0ZV9tZW1vcnlfcmVzb3VyY2VfaW1wMTFkb19pc19lcXVhbEVSS05TMV8xNW1lbW9yeV9yZXNvdXJjZUUA2BBIX1pOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjI2X19udWxsX21lbW9yeV9yZXNvdXJjZV9pbXBEMEV2AOJAVF9aTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIyNl9fbnVsbF9tZW1vcnlfcmVzb3VyY2VfaW1wMTFkb19hbGxvY2F0ZUVtbQCRWlhfWk5TdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMjZfX251bGxfbWVtb3J5X3Jlc291cmNlX2ltcDEzZG9fZGVhbGxvY2F0ZUVQdm1tAJJaa19aTktTdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMjZfX251bGxfbWVtb3J5X3Jlc291cmNlX2ltcDExZG9faXNfZXF1YWxFUktOUzFfMTVtZW1vcnlfcmVzb3VyY2VFANgQfl9aTlN0M19fMjEzX19hdG9taWNfYmFzZUlQTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIxNW1lbW9yeV9yZXNvdXJjZUVMYjBFRThleGNoYW5nZUI2djE1MDA3RVM1X05TXzEybWVtb3J5X29yZGVyRQCTWnhfWk5LU3QzX18yMTNfX2F0b21pY19iYXNlSVBOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjE1bWVtb3J5X3Jlc291cmNlRUxiMEVFNGxvYWRCNnYxNTAwN0VOU18xMm1lbW9yeV9vcmRlckUAkkedAV9aTlN0M19fMjIxX19jeHhfYXRvbWljX2V4Y2hhbmdlQjZ2MTUwMDdJUE5TdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMTVtZW1vcnlfcmVzb3VyY2VFRUVUX1BOU18yMl9fY3h4X2F0b21pY19iYXNlX2ltcGxJUzZfRUVTNl9OU18xMm1lbW9yeV9vcmRlckUAnEeXAV9aTlN0M19fMjE3X19jeHhfYXRvbWljX2xvYWRCNnYxNTAwN0lQTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIxNW1lbW9yeV9yZXNvdXJjZUVFRVRfUEtOU18yMl9fY3h4X2F0b21pY19iYXNlX2ltcGxJUzZfRUVOU18xMm1lbW9yeV9vcmRlckUAkkdNX1pUVk5TdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMzJfX25ld19kZWxldGVfbWVtb3J5X3Jlc291cmNlX2ltcEUDiQ1NX1pUSU5TdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMzJfX25ld19kZWxldGVfbWVtb3J5X3Jlc291cmNlX2ltcEUDiA1HX1pUVk5TdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMjZfX251bGxfbWVtb3J5X3Jlc291cmNlX2ltcEUDhw1HX1pUSU5TdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMjZfX251bGxfbWVtb3J5X3Jlc291cmNlX2ltcEUDhg1NX1pUU05TdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMzJfX25ld19kZWxldGVfbWVtb3J5X3Jlc291cmNlX2ltcEUDhQ08X1pUU05TdDEyZXhwZXJpbWVudGFsMTVmdW5kYW1lbnRhbHNfdjEzcG1yMTVtZW1vcnlfcmVzb3VyY2VFA4QNPF9aVElOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjE1bWVtb3J5X3Jlc291cmNlRQODDUdfWlRTTlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIyNl9fbnVsbF9tZW1vcnlfcmVzb3VyY2VfaW1wRQOCDRpfWk5TdDNfXzI1bXV0ZXg4dHJ5X2xvY2tFdgCVWjxfWk5TdDNfXzIyMl9fbGliY3BwX211dGV4X3RyeWxvY2tCNnYxNTAwN0VQMTVwdGhyZWFkX211dGV4X3QAlDceX1pOU3QzX18yMTVyZWN1cnNpdmVfbXV0ZXhDMkV2AJdaQ19aTlN0M19fMjI5X19saWJjcHBfcmVjdXJzaXZlX211dGV4X2luaXRCNnYxNTAwN0VQMTVwdGhyZWFkX211dGV4X3QAmFoeX1pOU3QzX18yMTVyZWN1cnNpdmVfbXV0ZXhEMkV2AJlaRl9aTlN0M19fMjMyX19saWJjcHBfcmVjdXJzaXZlX211dGV4X2Rlc3Ryb3lCNnYxNTAwN0VQMTVwdGhyZWFkX211dGV4X3QA3BAhX1pOU3QzX18yMTVyZWN1cnNpdmVfbXV0ZXg0bG9ja0V2AJpaQ19aTlN0M19fMjI5X19saWJjcHBfcmVjdXJzaXZlX211dGV4X2xvY2tCNnYxNTAwN0VQMTVwdGhyZWFkX211dGV4X3QA3BAjX1pOU3QzX18yMTVyZWN1cnNpdmVfbXV0ZXg2dW5sb2NrRXYAm1pFX1pOU3QzX18yMzFfX2xpYmNwcF9yZWN1cnNpdmVfbXV0ZXhfdW5sb2NrQjZ2MTUwMDdFUDE1cHRocmVhZF9tdXRleF90ANwQJV9aTlN0M19fMjE1cmVjdXJzaXZlX211dGV4OHRyeV9sb2NrRXYAnFpGX1pOU3QzX18yMzJfX2xpYmNwcF9yZWN1cnNpdmVfbXV0ZXhfdHJ5bG9ja0I2djE1MDA3RVAxNXB0aHJlYWRfbXV0ZXhfdACUNxpfWk5TdDNfXzIxMXRpbWVkX211dGV4QzJFdgCdWhpfWk5TdDNfXzIxMXRpbWVkX211dGV4RDJFdgCeWh1fWk5TdDNfXzIxMXRpbWVkX211dGV4NGxvY2tFdgCfWiFfWk5TdDNfXzIxMXRpbWVkX211dGV4OHRyeV9sb2NrRXYAoFpEX1pOU3QzX18yMTF1bmlxdWVfbG9ja0lOU181bXV0ZXhFRUMyQjZ2MTUwMDdFUlMxX05TXzEzdHJ5X3RvX2xvY2tfdEUAoVofX1pOU3QzX18yMTF0aW1lZF9tdXRleDZ1bmxvY2tFdgCiWiRfWk5TdDNfXzIyMXJlY3Vyc2l2ZV90aW1lZF9tdXRleEMyRXYAo1oiX1pOU3QzX18yMTFfX3RocmVhZF9pZEMyQjZ2MTUwMDdFdgC0SyRfWk5TdDNfXzIyMXJlY3Vyc2l2ZV90aW1lZF9tdXRleEQyRXYAnlonX1pOU3QzX18yMjFyZWN1cnNpdmVfdGltZWRfbXV0ZXg0bG9ja0V2AKRaKF9aTlN0M19fMmVxQjZ2MTUwMDdFTlNfMTFfX3RocmVhZF9pZEVTMF8ApVouX1pOU3QzX18yMjRfX2xpYmNwcF90aHJlYWRfaWRfZXF1YWxCNnYxNTAwN0VtbQDYECtfWk5TdDNfXzIyMXJlY3Vyc2l2ZV90aW1lZF9tdXRleDh0cnlfbG9ja0V2AKZaKV9aTlN0M19fMjIxcmVjdXJzaXZlX3RpbWVkX211dGV4NnVubG9ja0V2AKdaKF9aTlN0M19fMjExX190aHJlYWRfaWQ3X19yZXNldEI2djE1MDA3RXYAqFoWX1pOU3QzX18yMTBkZWZlcl9sb2NrRQOBDRdfWk5TdDNfXzIxMXRyeV90b19sb2NrRQOADRZfWk5TdDNfXzIxMGFkb3B0X2xvY2tFA/8MHl9aTlN0M19fMjE1cmVjdXJzaXZlX211dGV4QzFFdgCXWh5fWk5TdDNfXzIxNXJlY3Vyc2l2ZV9tdXRleEQxRXYAmVoaX1pOU3QzX18yMTF0aW1lZF9tdXRleEMxRXYAnVoaX1pOU3QzX18yMTF0aW1lZF9tdXRleEQxRXYAnlokX1pOU3QzX18yMjFyZWN1cnNpdmVfdGltZWRfbXV0ZXhDMUV2AKNaJF9aTlN0M19fMjIxcmVjdXJzaXZlX3RpbWVkX211dGV4RDFFdgCeWhNfWk5TdDNfXzI1bXV0ZXhEMkV2AKpaPF9aTlN0M19fMjIyX19saWJjcHBfbXV0ZXhfZGVzdHJveUI2djE1MDA3RVAxNXB0aHJlYWRfbXV0ZXhfdADcEBNfWk5TdDliYWRfYWxsb2NEMUV2ANkwEF9aVElTdDliYWRfYWxsb2MD/gwTX1pOU3Q5YmFkX2FsbG9jQzFFdgCYYhZfWlN0MTVnZXRfbmV3X2hhbmRsZXJ2APVhE19abndtUktTdDlub3Rocm93X3QArVoTX1puYW1SS1N0OW5vdGhyb3dfdACuWhRfWmRsUHZSS1N0OW5vdGhyb3dfdADGTQdfWmRsUHZtAMZNFF9aZGFQdlJLU3Q5bm90aHJvd190AMZNB19aZGFQdm0Axk0sX1pOU3QzX18yMjJfX2xpYmNwcF9hbGlnbmVkX2FsbG9jQjZ2MTUwMDdFbW0AsFoiX1pud21TdDExYWxpZ25fdmFsX3RSS1N0OW5vdGhyb3dfdACxWiJfWm5hbVN0MTFhbGlnbl92YWxfdFJLU3Q5bm90aHJvd190ALJaK19aTlN0M19fMjIxX19saWJjcHBfYWxpZ25lZF9mcmVlQjZ2MTUwMDdFUHYA4kAjX1pkbFB2U3QxMWFsaWduX3ZhbF90UktTdDlub3Rocm93X3QAtFoWX1pkbFB2bVN0MTFhbGlnbl92YWxfdAC1WiNfWmRhUHZTdDExYWxpZ25fdmFsX3RSS1N0OW5vdGhyb3dfdAC2WhZfWmRhUHZtU3QxMWFsaWduX3ZhbF90AMVNDF9aU3Q3bm90aHJvdwP9DDJfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2X0ZpbGVzeXN0ZW1DbG9jazNub3dFdgC3Ws8BX1pOU3QzX18yNmNocm9ubzhkdXJhdGlvbkluTlNfNXJhdGlvSUx4MUVMeDFFRUVFQzJCNnYxNTAwN0l4RUVSS1RfUE5TXzllbmFibGVfaWZJWGFhc3IxNGlzX2NvbnZlcnRpYmxlSVM4X25FRTV2YWx1ZW9vTF9aTlNfMTdpbnRlZ3JhbF9jb25zdGFudEliTGIwRUU1dmFsdWVFRW50c3IyM3RyZWF0X2FzX2Zsb2F0aW5nX3BvaW50SVM2X0VFNXZhbHVlRXZFNHR5cGVFALha2AFfWk5TdDNfXzI2Y2hyb25vOGR1cmF0aW9uSW5OU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVDMkI2djE1MDA3SWxFRVJLVF9QTlNfOWVuYWJsZV9pZklYYWFzcjE0aXNfY29udmVydGlibGVJUzhfbkVFNXZhbHVlb29MX1pOU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRTV2YWx1ZUVFbnRzcjIzdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnRJUzZfRUU1dmFsdWVFdkU0dHlwZUUAuVqhAV9aTlN0M19fMjZjaHJvbm8xM2R1cmF0aW9uX2Nhc3RCNnYxNTAwN0lOUzBfOGR1cmF0aW9uSW5OU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFblM0X0VFTlNfOWVuYWJsZV9pZklYc3IxM19faXNfZHVyYXRpb25JVF9FRTV2YWx1ZUVTN19FNHR5cGVFUktOUzJfSVQwX1QxX0VFALpakQFfWk5TdDNfXzI2Y2hyb25vcGxCNnYxNTAwN0luTlNfNXJhdGlvSUx4MUVMeDFFRUVuTlMyX0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVOU18xMWNvbW1vbl90eXBlSUpOUzBfOGR1cmF0aW9uSVRfVDBfRUVOUzZfSVQxX1QyX0VFRUU0dHlwZUVSS1M5X1JLU0NfALtanQJfWk5TdDNfXzI2Y2hyb25vOGR1cmF0aW9uSW5OU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVDMkI2djE1MDA3SW5OUzJfSUx4MUVMeDFFRUVFRVJLTlMxX0lUX1QwX0VFUE5TXzllbmFibGVfaWZJWGFhc3IxM19fbm9fb3ZlcmZsb3dJUzhfUzNfRUU1dmFsdWVvb0xfWk5TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFNXZhbHVlRUVhYWVxc3IxM19fbm9fb3ZlcmZsb3dJUzhfUzNfRTR0eXBlRTNkZW5MaTFFbnRzcjIzdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnRJUzdfRUU1dmFsdWVFdkU0dHlwZUUAvFpKX1pOS1N0M19fMjZjaHJvbm84ZHVyYXRpb25Jbk5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRTVjb3VudEI2djE1MDA3RXYAwD18X1pOS1N0M19fMjZjaHJvbm8xNV9fZHVyYXRpb25fY2FzdElOUzBfOGR1cmF0aW9uSW5OU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFUzVfTlMzX0lMeDFFTHgxRUVFTGIxRUxiMUVFY2xCNnYxNTAwN0VSS1M1XwC9WjBfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvckQyRXYAvlowX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3JEMEV2AL9aVF9aTktTdDNfXzIxMHNoYXJlZF9wdHJJTlNfNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I4X1N0b3JhZ2VFRXB0QjZ2MTUwMDdFdgDdHT1fWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3I1cGF0aDFCNnYxNTAwN0V2AMFaPV9aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvcjVwYXRoMkI2djE1MDA3RXYAw1pEX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xMF9fYWJzb2x1dGVFUktOUzFfNHBhdGhFUE5TXzEwZXJyb3JfY29kZUUAxFo8X1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNF9fY3VycmVudF9wYXRoRVBOU18xMGVycm9yX2NvZGVFAMZaRV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTFfX2Nhbm9uaWNhbEVSS05TMV80cGF0aEVQTlNfMTBlcnJvcl9jb2RlRQDHWj9fWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoQzJCNnYxNTAwN0lQY3ZFRVJLVF9OUzJfNmZvcm1hdEUAylqEAV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VCNnYxNTAwN0lQY0VFdlJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktUXwDMWlVfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTZfX2NvcHlFUktOUzFfNHBhdGhFUzRfTlMxXzEyY29weV9vcHRpb25zRVBOU18xMGVycm9yX2NvZGVFAM1aO19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtb3JCNnYxNTAwN0VOUzFfMTJjb3B5X29wdGlvbnNFUzJfAM5aO19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtYW5CNnYxNTAwN0VOUzFfMTJjb3B5X29wdGlvbnNFUzJfAJFNPl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtOGlzX290aGVyQjZ2MTUwMDdFTlMxXzExZmlsZV9zdGF0dXNFANFaRl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTVpc19yZWd1bGFyX2ZpbGVCNnYxNTAwN0VOUzFfMTFmaWxlX3N0YXR1c0UA0lpLX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNF9fY29weV9zeW1saW5rRVJLTlMxXzRwYXRoRVM0X1BOU18xMGVycm9yX2NvZGVFANRaTV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTZfX2NyZWF0ZV9zeW1saW5rRVJLTlMxXzRwYXRoRVM0X1BOU18xMGVycm9yX2NvZGVFANZaT19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMThfX2NyZWF0ZV9oYXJkX2xpbmtFUktOUzFfNHBhdGhFUzRfUE5TXzEwZXJyb3JfY29kZUUA11ozX1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGg4ZmlsZW5hbWVCNnYxNTAwN0V2ANhaW19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTFfX2NvcHlfZmlsZUVSS05TMV80cGF0aEVTNF9OUzFfMTJjb3B5X29wdGlvbnNFUE5TXzEwZXJyb3JfY29kZUUA2VpPX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xOF9fY3JlYXRlX2RpcmVjdG9yeUVSS05TMV80cGF0aEVTNF9QTlNfMTBlcnJvcl9jb2RlRQDaWlZfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yQzJCNnYxNTAwN0VSS05TMV80cGF0aEVSTlNfMTBlcnJvcl9jb2RlRQDbWkVfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yQzJCNnYxNTAwN0VSS05TMV80cGF0aEUA3FpDX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW1uZUI2djE1MDA3RVJLTlMxXzE4ZGlyZWN0b3J5X2l0ZXJhdG9yRVM0XwDdWjtfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xOGRpcmVjdG9yeV9pdGVyYXRvcnB0QjZ2MTUwMDdFdgDeWlJfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE4ZGlyZWN0b3J5X2l0ZXJhdG9yOWluY3JlbWVudEI2djE1MDA3RVJOU18xMGVycm9yX2NvZGVFAN9aSF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTRfX3JlYWRfc3ltbGlua0VSS05TMV80cGF0aEVQTlNfMTBlcnJvcl9jb2RlRQDhWmZfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVDMklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNTMl9FRXZFRVJLVF8A6lpxX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aEMyQjZ2MTUwMDdFT05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVOUzJfNmZvcm1hdEUA61pHX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW02c3RhdHVzQjZ2MTUwMDdFUktOUzFfNHBhdGhFUk5TXzEwZXJyb3JfY29kZUUA7VpDX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW1lcUI2djE1MDA3RVJLTlMxXzE4ZGlyZWN0b3J5X2l0ZXJhdG9yRVM0XwDuWjtfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xOGRpcmVjdG9yeV9pdGVyYXRvcmRlQjZ2MTUwMDdFdgDeWjRfWk5TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVDMUV2APFaOl9aTlN0M19fMjE0YmFzaWNfaWZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTZfX29wZW5FaWoA8lo7X1pOS1N0M19fMjE0YmFzaWNfaWZzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRTdpc19vcGVuRXYA81o0X1pOU3QzX18yMTRiYXNpY19vZnN0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFQzFFdgD0WjpfWk5TdDNfXzIxNGJhc2ljX29mc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2X19vcGVuRWlqAPVaO19aTktTdDNfXzIxNGJhc2ljX29mc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU3aXNfb3BlbkV2APZac19aTlN0M19fMjRjb3B5QjZ2MTUwMDdJTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNTM19FRUVFVDBfVF9TOF9TN18A91o6X1pOS1N0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRTRmYWlsQjZ2MTUwMDdFdgD4Wk5fWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTIwX19jcmVhdGVfZGlyZWN0b3JpZXNFUktOUzFfNHBhdGhFUE5TXzEwZXJyb3JfY29kZUUA+lo3X1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGgxMXBhcmVudF9wYXRoQjZ2MTUwMDdFdgD8WjBfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDVlbXB0eUI2djE1MDA3RXYA/Vo0X1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW1lcUI2djE1MDA3RVJLTlMxXzRwYXRoRVM0XwD+WkxfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE4X19jcmVhdGVfZGlyZWN0b3J5RVJLTlMxXzRwYXRoRVBOU18xMGVycm9yX2NvZGVFAP9aMV9aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoMTNfX3BhcmVudF9wYXRoRXYAgFtpX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRWN2TlNfMTdiYXNpY19zdHJpbmdfdmlld0ljUzJfRUVCNnYxNTAwN0V2AIJbWV9aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoOV9fY29tcGFyZUVOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAINbV19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjZfX2NyZWF0ZV9kaXJlY3Rvcnlfc3ltbGlua0VSS05TMV80cGF0aEVTNF9QTlNfMTBlcnJvcl9jb2RlRQCFW0pfWk5TdDNfXzIxMHVuaXF1ZV9wdHJJQV9jTlNfMTRkZWZhdWx0X2RlbGV0ZUlTMV9FRUVDMkI2djE1MDA3SVBjTGIxRXZ2RUVUXwCGW0JfWk5LU3QzX18yMTB1bmlxdWVfcHRySUFfY05TXzE0ZGVmYXVsdF9kZWxldGVJUzFfRUVFM2dldEI2djE1MDA3RXYA3R0/X1pOU3QzX18yMTB1bmlxdWVfcHRySUFfY05TXzE0ZGVmYXVsdF9kZWxldGVJUzFfRUVFRDJCNnYxNTAwN0V2AIhbZ19aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGNOU18xNGRlZmF1bHRfZGVsZXRlSUFfY0VFRUMyQjZ2MTUwMDdJUlMxX05TXzE2X192YWx1ZV9pbml0X3RhZ0VFRU9UX09UMF8AsUtKX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGNOU18xNGRlZmF1bHRfZGVsZXRlSUFfY0VFRTVmaXJzdEI2djE1MDA3RXYA2TBEX1pOU3QzX18yMTB1bmlxdWVfcHRySUFfY05TXzE0ZGVmYXVsdF9kZWxldGVJUzFfRUVFNXJlc2V0QjZ2MTUwMDdFRG4AiltIX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNF9fY3VycmVudF9wYXRoRVJLTlMxXzRwYXRoRVBOU18xMGVycm9yX2NvZGVFAItbSV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTJfX2VxdWl2YWxlbnRFUktOUzFfNHBhdGhFUzRfUE5TXzEwZXJyb3JfY29kZUUAjFt3X1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aEMyQjZ2MTUwMDdJTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRXZFRVJLVF9OUzJfNmZvcm1hdEUAjVuFAV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VCNnYxNTAwN0lOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFRUV2UlNBX1JLVF8AjltFX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xMV9fZmlsZV9zaXplRVJLTlMxXzRwYXRoRVBOU18xMGVycm9yX2NvZGVFAI9bS19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTdfX2hhcmRfbGlua19jb3VudEVSS05TMV80cGF0aEVQTlNfMTBlcnJvcl9jb2RlRQCQW0dfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTEzX19mc19pc19lbXB0eUVSS05TMV80cGF0aEVQTlNfMTBlcnJvcl9jb2RlRQCRW19fWk5TdDNfXzJlcUI2djE1MDA3SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FUzNfRUViUktOU18xMHNoYXJlZF9wdHJJVF9FRVJLTlM0X0lUMF9FRQCrT0tfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE3X19sYXN0X3dyaXRlX3RpbWVFUktOUzFfNHBhdGhFUE5TXzEwZXJyb3JfY29kZUUAklupAV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTdfX2xhc3Rfd3JpdGVfdGltZUVSS05TMV80cGF0aEVOU182Y2hyb25vMTB0aW1lX3BvaW50SU5TMV8xNl9GaWxlc3lzdGVtQ2xvY2tFTlM1XzhkdXJhdGlvbkluTlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFRUVFUE5TXzEwZXJyb3JfY29kZUUAlVsqX1pOU3QzX18yNWFycmF5STh0aW1lc3BlY0xtMkVFaXhCNnYxNTAwN0VtAJZbZV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTNfX3Blcm1pc3Npb25zRVJLTlMxXzRwYXRoRU5TMV81cGVybXNFTlMxXzEycGVybV9vcHRpb25zRVBOU18xMGVycm9yX2NvZGVFAJdbNF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtYU5CNnYxNTAwN0VSTlMxXzVwZXJtc0VTMl8AmVs/X1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTFmaWxlX3N0YXR1czExcGVybWlzc2lvbnNCNnYxNTAwN0V2AN4dNF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtb1JCNnYxNTAwN0VSTlMxXzVwZXJtc0VTMl8Am1swX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW1jb0I2djE1MDA3RU5TMV81cGVybXNFAJxbM19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtYW5CNnYxNTAwN0VOUzFfNXBlcm1zRVMyXwCRTTtfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbWFuQjZ2MTUwMDdFTlMxXzEycGVybV9vcHRpb25zRVMyXwCRTTNfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbW9yQjZ2MTUwMDdFTlMxXzVwZXJtc0VTMl8AzlpBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW04X19yZW1vdmVFUktOUzFfNHBhdGhFUE5TXzEwZXJyb3JfY29kZUUAnVtGX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xMl9fcmVtb3ZlX2FsbEVSS05TMV80cGF0aEVQTlNfMTBlcnJvcl9jb2RlRQCeW50BX1pOU3QzX18yM2dldEI2djE1MDA3SUxtMEVOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW05ZmlsZV90eXBlRUVFT05TXzEzdHVwbGVfZWxlbWVudElYVF9FTlNfNHBhaXJJVDBfVDFfRUVFNHR5cGVFT1NDXwDZMJ0BX1pOU3QzX18yM2dldEI2djE1MDA3SUxtMUVOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW05ZmlsZV90eXBlRUVFT05TXzEzdHVwbGVfZWxlbWVudElYVF9FTlNfNHBhaXJJVDBfVDFfRUVFNHR5cGVFT1NDXwChW3JfWk5TdDNfXzIxNWVycm9yX2NvbmRpdGlvbkMyQjZ2MTUwMDdJTlNfNGVycmNFRUVUX1BOU185ZW5hYmxlX2lmSVhzcjIzaXNfZXJyb3JfY29uZGl0aW9uX2VudW1JUzNfRUU1dmFsdWVFdkU0dHlwZUUAols9X1pOU3QzX18yZXFCNnYxNTAwN0VSS05TXzEwZXJyb3JfY29kZUVSS05TXzE1ZXJyb3JfY29uZGl0aW9uRQCjW0RfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbThfX3JlbmFtZUVSS05TMV80cGF0aEVTNF9QTlNfMTBlcnJvcl9jb2RlRQCkW0hfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTEzX19yZXNpemVfZmlsZUVSS05TMV80cGF0aEV5UE5TXzEwZXJyb3JfY29kZUUApVtAX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW03X19zcGFjZUVSS05TMV80cGF0aEVQTlNfMTBlcnJvcl9jb2RlRQCmW0NfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTIxX190ZW1wX2RpcmVjdG9yeV9wYXRoRVBOU18xMGVycm9yX2NvZGVFAKlbQF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhDMkI2djE1MDA3SVBLY3ZFRVJLVF9OUzJfNmZvcm1hdEUAqluFAV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VCNnYxNTAwN0lQS2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8AzFpMX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xOF9fd2Vha2x5X2Nhbm9uaWNhbEVSS05TMV80cGF0aEVQTlNfMTBlcnJvcl9jb2RlRQCsW0FfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoQzJCNnYxNTAwN0lBMV9jdkVFUktUX05TMl82Zm9ybWF0RQCtWzNfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoOV9fcmVzZXJ2ZUI2djE1MDA3RW0ArltfX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUVDMkI2djE1MDA3RXYAsVtDX1pOS1N0M19fMjE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRTRiYWNrQjZ2MTUwMDdFdgCyW5sBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDZhc3NpZ25CNnYxNTAwN0lOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVOU185ZW5hYmxlX2lmSVhzcjEzX19pc19wYXRoYWJsZUlUX0VFNXZhbHVlRVJTMl9FNHR5cGVFUktTOV8AtFtqX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUU5cHVzaF9iYWNrQjZ2MTUwMDdFT1M0XwC2W2RfWk5LU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUU1ZW1wdHlCNnYxNTAwN0V2ALdbZF9aTlN0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFNnJiZWdpbkI2djE1MDA3RXYAuFtiX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUU0cmVuZEI2djE1MDA3RXYAuVuEAV9aTlN0M19fMm5lQjZ2MTUwMDdJTlNfMTFfX3dyYXBfaXRlcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFUzdfRUViUktOU18xNnJldmVyc2VfaXRlcmF0b3JJVF9FRVJLTlM4X0lUMF9FRQC6WzRfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDE2bGV4aWNhbGx5X25vcm1hbEV2ALtbbF9aTktTdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJTlNfMTFfX3dyYXBfaXRlcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRWRlQjZ2MTUwMDdFdgC8W5YBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aGRWQjZ2MTUwMDdJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFTlNfOWVuYWJsZV9pZklYc3IxM19faXNfcGF0aGFibGVJVF9FRTV2YWx1ZUVSUzJfRTR0eXBlRVJLUzlfAL1ba19aTlN0M19fMjE2cmV2ZXJzZV9pdGVyYXRvcklOU18xMV9fd3JhcF9pdGVySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVFcHBCNnYxNTAwN0V2AL5bX19aTlN0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFRDJCNnYxNTAwN0V2AL9bhgFfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbThfUGF0aENWVEljRTE1X19hcHBlbmRfc291cmNlQjZ2MTUwMDdJQTFfY0VFdlJOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUktUXwDAW0lfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3cmVzZXJ2ZUVtALldQl9aTlN0M19fMjE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUMyQjZ2MTUwMDdFUEtjbQC3TY4BX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFQzJCNnYxNTAwN0lEbk5TXzE4X19kZWZhdWx0X2luaXRfdGFnRUVFT1RfT1QwXwDSTntfWk5TdDNfXzIxOV9fZGVidWdfZGJfaW5zZXJ0X2NCNnYxNTAwN0lOU182dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM1X0VFRUVFRXZQVF8AkSlnX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCjWYEBX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUUyMl9fY29uc3RydWN0X29uZV9hdF9lbmRCNnYxNTAwN0lKUzRfRUVFdkRwT1RfAMJbdF9aTlN0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFMjFfX3B1c2hfYmFja19zbG93X3BhdGhJUzRfRUV2T1RfAMNbQF9aTktTdDNfXzIxN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVpeEI2djE1MDA3RW0AxFthX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUUzZW5kQjZ2MTUwMDdFdgDFW21fWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJTlNfMTFfX3dyYXBfaXRlcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRUMyQjZ2MTUwMDdFUzdfALxLb19aTktTdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJTlNfMTFfX3dyYXBfaXRlcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRTRiYXNlQjZ2MTUwMDdFdgDdHWBfWk5TdDNfXzJuZUI2djE1MDA3SVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUViUktOU18xMV9fd3JhcF9pdGVySVRfRUVTQV8Ax09jX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUU1YmVnaW5CNnYxNTAwN0V2AMZbU19aTlN0M19fMjExX193cmFwX2l0ZXJJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFbW1CNnYxNTAwN0V2AMdbVF9aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRWRlQjZ2MTUwMDdFdgDdHZsBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDZhcHBlbmRCNnYxNTAwN0lOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVOU185ZW5hYmxlX2lmSVhzcjEzX19pc19wYXRoYWJsZUlUX0VFNXZhbHVlRVJTMl9FNHR5cGVFUktTOV8AyFuNAV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRUMyQjZ2MTUwMDdFdgDJW4sBX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFN3Jlc2VydmVFbQDKW5IBX1pOS1N0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTVlbXB0eUI2djE1MDA3RXYAt1tBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aEMyQjZ2MTUwMDdJQTJfY3ZFRVJLVF9OUzJfNmZvcm1hdEUAzVuQAV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTRiYWNrQjZ2MTUwMDdFdgDQW4wBX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFOHBvcF9iYWNrRXYA0VuRAV9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUU0c2l6ZUI2djE1MDA3RXYA01uRAV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTViZWdpbkI2djE1MDA3RXYAxluPAV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTNlbmRCNnYxNTAwN0V2AMVbjgFfWk5TdDNfXzJuZUI2djE1MDA3SVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFYlJLTlNfMTFfX3dyYXBfaXRlcklUX0VFU0ZfAMdPbF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGhkVkI2djE1MDA3SUExX2NFRU5TXzllbmFibGVfaWZJWHNyMTNfX2lzX3BhdGhhYmxlSVRfRUU1dmFsdWVFUlMyX0U0dHlwZUVSS1M2XwDUWzlfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoMTRtYWtlX3ByZWZlcnJlZEI2djE1MDA3RXYA2TCCAV9aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVkZUI2djE1MDA3RXYA3R2BAV9aTlN0M19fMjExX193cmFwX2l0ZXJJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRXBwQjZ2MTUwMDdFdgDVW40BX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFRDJCNnYxNTAwN0V2ANZbbF9aTlN0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFMTZfX2Rlc3Ryb3lfdmVjdG9yQzJFUlM3XwC8S3FfWk5TdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTE2X19kZXN0cm95X3ZlY3RvcmNsQjZ2MTUwMDdFdgDXWzhfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoMTdyZXBsYWNlX2V4dGVuc2lvbkVSS1MyXwDYWzRfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDlleHRlbnNpb25CNnYxNTAwN0V2ANlbL19aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoMTFfX2V4dGVuc2lvbkV2ANpbL19aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoMTFfX3Jvb3RfbmFtZUV2ANtbM19aTktTdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoMTVfX3Jvb3RfcGF0aF9yYXdFdgDeWzNfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDE1X19yZWxhdGl2ZV9wYXRoRXYA4VtPX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTRiYWNrQjZ2MTUwMDdFdgDEWClfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDZfX3N0ZW1FdgDjW2VfWk5TdDNfXzI0cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUzRfRUMyQjZ2MTUwMDdJUktTNF9SQTFfS2NMUHYwRUVFT1RfT1QwXwDlW01fWk5LU3QzX18yMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFMTJmaW5kX2xhc3Rfb2ZCNnYxNTAwN0VjbQDmW2JfWk5TdDNfXzI0cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUzRfRUMyQjZ2MTUwMDdJUktTNF9TNF9MUHYwRUVFT1RfT1QwXwDnW0ZfWk5LU3QzX18yMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFNnN1YnN0ckI2djE1MDA3RW1tAOhbYF9aTlN0M19fMjRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVTNF9FQzJCNnYxNTAwN0lTNF9TNF9MUHYwRUVFT1RfT1QwXwDnW7wBX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRUMyQjZ2MTUwMDdJRG5OU18xOF9fZGVmYXVsdF9pbml0X3RhZ0VFRU9UX09UMF8A0k6pAV9aTlN0M19fMjE5X19kZWJ1Z19kYl9pbnNlcnRfY0I2djE1MDA3SU5TXzZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVNBX0VFRUVFRXZQVF8AkSmVAV9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUU4Y2FwYWNpdHlCNnYxNTAwN0V2AOlbjQFfWk5LU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFOG1heF9zaXplRXYA6luTAV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTdfX2FsbG9jQjZ2MTUwMDdFdgCjWZMBX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRUMyRW1tU0NfAOtbvAFfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUyNl9fc3dhcF9vdXRfY2lyY3VsYXJfYnVmZmVyRVJOU18xNF9fc3BsaXRfYnVmZmVySVM5X1JTQl9FRQDsW48BX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRUQyRXYA7VuiAV9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUyMF9fdGhyb3dfbGVuZ3RoX2Vycm9yQjZ2MTUwMDdFdgCgWaUBX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFMTJlbXBsYWNlX2JhY2tJSlJTNV9SUzhfRUVFUlM5X0RwT1RfAO5boQFfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUxN19fZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFM5XwDvW4YBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW04X1BhdGhDVlRJY0UxNV9fYXBwZW5kX3NvdXJjZUI2djE1MDA3SUEyX2NFRXZSTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVJLVF8AwFuGAV9aTlN0M19fMjExX193cmFwX2l0ZXJJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUMyQjZ2MTUwMDdFUEt2U0FfAPtTjgFfWk5TdDNfXzJlcUI2djE1MDA3SVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFYlJLTlNfMTFfX3dyYXBfaXRlcklUX0VFU0ZfAKtPcV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGg2YXBwZW5kQjZ2MTUwMDdJQTFfY0VFTlNfOWVuYWJsZV9pZklYc3IxM19faXNfcGF0aGFibGVJVF9FRTV2YWx1ZUVSUzJfRTR0eXBlRVJLUzZfAPBbmgFfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUxNl9fZGVzdHJveV92ZWN0b3JDMkVSU0NfALxLnwFfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUxNl9fZGVzdHJveV92ZWN0b3JjbEI2djE1MDA3RXYA8Vs6X1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGgxOGxleGljYWxseV9yZWxhdGl2ZUVSS1MyXwDyW01fWk5TdDNfXzJuZUI2djE1MDA3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFYk5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJVF9UMF9FRVM2XwD0W01fWk5TdDNfXzJlcUI2djE1MDA3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFYk5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJVF9UMF9FRVM2XwD+TGxfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoZFZCNnYxNTAwN0lBM19jRUVOU185ZW5hYmxlX2lmSVhzcjEzX19pc19wYXRoYWJsZUlUX0VFNXZhbHVlRVJTMl9FNHR5cGVFUktTNl8A1FtrX1pOU3QzX18ybmVCNnYxNTAwN0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVMaTFFRUViTlNfMTdiYXNpY19zdHJpbmdfdmlld0lUX1QwX0VFTlNfMTFjb21tb25fdHlwZUlKUzZfRUU0dHlwZUUA9FtxX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDZhcHBlbmRCNnYxNTAwN0lBM19jRUVOU185ZW5hYmxlX2lmSVhzcjEzX19pc19wYXRoYWJsZUlUX0VFNXZhbHVlRVJTMl9FNHR5cGVFUktTNl8A8FszX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xMGhhc2hfdmFsdWVFUktOUzFfNHBhdGhFAPtbTV9aTktTdDNfXzI0aGFzaElOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRWNsQjZ2MTUwMDdFUzRfAPxbJF9aTlN0M19fMjE0X19oYXNoX2NvbWJpbmVCNnYxNTAwN0VtbQD9WzhfWk5LU3QzX18yMTNfX3NjYWxhcl9oYXNoSU5TXzZfUGFpclRFTG0yRUVjbEI2djE1MDA3RVMxXwD+Wy9fWk5TdDNfXzIxNl9fZG9fc3RyaW5nX2hhc2hCNnYxNTAwN0lQS2NFRW1UX1MzXwD/WyhfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDViZWdpbkV2AIBcNF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGg4aXRlcmF0b3JDMkI2djE1MDA3RXYAgVxnX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDEzX19hc3NpZ25fdmlld0I2djE1MDA3RVJLTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQCCXCZfWk5LU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW00cGF0aDNlbmRFdgCDXDdfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTRwYXRoOGl0ZXJhdG9yMTFfX2luY3JlbWVudEV2AIRcN19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGg4aXRlcmF0b3IxMV9fZGVjcmVtZW50RXYAhlw7X1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNWRpcmVjdG9yeV9lbnRyeTEyX19kb19yZWZyZXNoRXYAh1w8X1pOS1N0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTZmaWxlc3lzdGVtX2Vycm9yNHdoYXRCNnYxNTAwN0V2AIhcrQFfWk5TdDNfXzI2Y2hyb25vMTNkdXJhdGlvbl9jYXN0QjZ2MTUwMDdJTlMwXzhkdXJhdGlvbkluTlNfNXJhdGlvSUx4MUVMeDEwMDAwMDAwMDBFRUVFRW5OUzNfSUx4MUVMeDFFRUVFRU5TXzllbmFibGVfaWZJWHNyMTNfX2lzX2R1cmF0aW9uSVRfRUU1dmFsdWVFUzhfRTR0eXBlRVJLTlMyX0lUMF9UMV9FRQCJXJkBX1pOS1N0M19fMjZjaHJvbm8xNV9fZHVyYXRpb25fY2FzdElOUzBfOGR1cmF0aW9uSW5OU181cmF0aW9JTHgxRUx4MUVFRUVFTlMyX0luTlMzX0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVOUzNfSUx4MTAwMDAwMDAwMEVMeDFFRUVMYjBFTGIxRUVjbEI2djE1MDA3RVJLUzVfAIpcQV9aTktTdDNfXzI2Y2hyb25vOGR1cmF0aW9uSW5OU181cmF0aW9JTHgxRUx4MUVFRUU1Y291bnRCNnYxNTAwN0V2AMA9M19aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMTFmaWxlX3N0YXR1c0MyQjZ2MTUwMDdFdgCLXERfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTExZmlsZV9zdGF0dXM0dHlwZUI2djE1MDA3RU5TMV85ZmlsZV90eXBlRQCMXEhfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTExZmlsZV9zdGF0dXMxMXBlcm1pc3Npb25zQjZ2MTUwMDdFTlMxXzVwZXJtc0UA201WX1pOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVDMkI2djE1MDA3RVBOU18xNWJhc2ljX3N0cmVhbWJ1ZkljUzJfRUUAjlw5X1pOU3QzX18yMTNiYXNpY19maWxlYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUU2X19vcGVuRWlqAI9cOl9aTktTdDNfXzIxM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRTdpc19vcGVuRXYAkFxWX1pOU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVDMkI2djE1MDA3RVBOU18xNWJhc2ljX3N0cmVhbWJ1ZkljUzJfRUUAkVyKAV9aTlN0M19fMjZfX2NvcHlCNnYxNTAwN0lOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVTNF9OU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY1MzX0VFTGkwRUVFTlNfNHBhaXJJVF9UMV9FRVM4X1QwX1M5XwCSXCJfWk5LU3QzX18yOGlvc19iYXNlNGZhaWxCNnYxNTAwN0V2AJNcXl9aTlN0M19fMjE0X191bndyYXBfcmFuZ2VCNnYxNTAwN0lOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVTNF9FRURhVF9UMF8A7EuMAV9aTlN0M19fMjExX19jb3B5X2ltcGxCNnYxNTAwN0lOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVTNF9OU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY1MzX0VFRUVOU180cGFpcklUX1QxX0VFUzhfVDBfUzlfAJRcY19aTlN0M19fMjE0X19yZXdyYXBfcmFuZ2VCNnYxNTAwN0lOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVTNF9TNF9FRVQwX1M1X1QxXwCSSrABX1pOU3QzX18yOW1ha2VfcGFpckI2djE1MDA3SU5TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljUzNfRUVFRU5TXzRwYWlySU5TXzE4X191bndyYXBfcmVmX2RlY2F5SVRfRTR0eXBlRU5TOF9JVDBfRTR0eXBlRUVFT1M5X09TQ18A8EtrX1pOU3QzX18yMTlfX3Vud3JhcF9yYW5nZV9pbXBsSU5TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVM0X0U4X191bndyYXBCNnYxNTAwN0VTNF9TNF8A8Ut+X1pOU3QzX18yNHBhaXJJTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNTM19FRUVDMkI2djE1MDA3SVM0X1M2X0xQdjBFRUVPVF9PVDBfAPJLa19aTlN0M19fMjE5X191bndyYXBfcmFuZ2VfaW1wbElOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVTNF9FOF9fcmV3cmFwQjZ2MTUwMDdFUzRfUzRfAJJKpQFfWk5TdDNfXzIxM19fdW53cmFwX2l0ZXJCNnYxNTAwN0lOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTNF9MYjBFRUVMaTBFRUVEVGNsc3JUMF84X191bndyYXBjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFRUVTOF8A2TBiX1pOU3QzX18yNHBhaXJJTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUzRfRUMyQjZ2MTUwMDdJUzRfUzRfTFB2MEVFRU9UX09UMF8A8ktoX1pOU3QzX18yMThfX3Vud3JhcF9pdGVyX2ltcGxJTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTGIwRUU4X191bndyYXBCNnYxNTAwN0VTNF8A2TB/X1pOU3QzX18yMTNfX3Jld3JhcF9pdGVyQjZ2MTUwMDdJTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUzRfTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzRfTGIwRUVFRUVUX1M3X1QwXwCSSmtfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVMYjBFRThfX3Jld3JhcEI2djE1MDA3RVM0X1M0XwCSSklfWk5LU3QzX18yMTBzaGFyZWRfcHRySU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJfX2Rpcl9zdHJlYW1FRTNnZXRCNnYxNTAwN0V2AN0dzwFfWk5TdDNfXzI2Y2hyb25vOGR1cmF0aW9uSW5OU181cmF0aW9JTHgxRUx4MUVFRUVDMkI2djE1MDA3SWlFRVJLVF9QTlNfOWVuYWJsZV9pZklYYWFzcjE0aXNfY29udmVydGlibGVJUzhfbkVFNXZhbHVlb29MX1pOU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRTV2YWx1ZUVFbnRzcjIzdHJlYXRfYXNfZmxvYXRpbmdfcG9pbnRJUzZfRUU1dmFsdWVFdkU0dHlwZUUAuVqRAV9aTlN0M19fMjZjaHJvbm9taUI2djE1MDA3SW5OU181cmF0aW9JTHgxRUx4MUVFRW5OUzJfSUx4MUVMeDEwMDAwMDAwMDBFRUVFRU5TXzExY29tbW9uX3R5cGVJSk5TMF84ZHVyYXRpb25JVF9UMF9FRU5TNl9JVDFfVDJfRUVFRTR0eXBlRVJLUzlfUktTQ18AlVyQAV9aTktTdDNfXzI2Y2hyb25vMTB0aW1lX3BvaW50SU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTZfRmlsZXN5c3RlbUNsb2NrRU5TMF84ZHVyYXRpb25Jbk5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVFMTZ0aW1lX3NpbmNlX2Vwb2NoQjZ2MTUwMDdFdgDAPa0BX1pOU3QzX18yNmNocm9ubzEzZHVyYXRpb25fY2FzdEI2djE1MDA3SU5TMF84ZHVyYXRpb25Jbk5TXzVyYXRpb0lMeDFFTHgxRUVFRUVuTlMzX0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVOU185ZW5hYmxlX2lmSVhzcjEzX19pc19kdXJhdGlvbklUX0VFNXZhbHVlRVM4X0U0dHlwZUVSS05TMl9JVDBfVDFfRUUAllyRAV9aTlN0M19fMjZjaHJvbm9taUI2djE1MDA3SW5OU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRW5OUzJfSUx4MUVMeDFFRUVFRU5TXzExY29tbW9uX3R5cGVJSk5TMF84ZHVyYXRpb25JVF9UMF9FRU5TNl9JVDFfVDJfRUVFRTR0eXBlRVJLUzlfUktTQ18Al1x8X1pOU3QzX18yNmNocm9ub3BsQjZ2MTUwMDdJbk5TXzVyYXRpb0lMeDFFTHgxRUVFblMzX0VFTlNfMTFjb21tb25fdHlwZUlKTlMwXzhkdXJhdGlvbklUX1QwX0VFTlM1X0lUMV9UMl9FRUVFNHR5cGVFUktTOF9SS1NCXwCYXJEBX1pOU3QzX18yNmNocm9ub3BsQjZ2MTUwMDdJbk5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFbk5TMl9JTHgxRUx4MUVFRUVFTlNfMTFjb21tb25fdHlwZUlKTlMwXzhkdXJhdGlvbklUX1QwX0VFTlM2X0lUMV9UMl9FRUVFNHR5cGVFUktTOV9SS1NDXwCZXHxfWk5TdDNfXzI2Y2hyb25vbWlCNnYxNTAwN0luTlNfNXJhdGlvSUx4MUVMeDFFRUVuUzNfRUVOU18xMWNvbW1vbl90eXBlSUpOUzBfOGR1cmF0aW9uSVRfVDBfRUVOUzVfSVQxX1QyX0VFRUU0dHlwZUVSS1M4X1JLU0JfAJpchAFfWk5LU3QzX18yNmNocm9ubzE1X19kdXJhdGlvbl9jYXN0SU5TMF84ZHVyYXRpb25Jbk5TXzVyYXRpb0lMeDFFTHgxMDAwMDAwMDAwRUVFRUVOUzJfSW5OUzNfSUx4MUVMeDFFRUVFRVM0X0xiMUVMYjBFRWNsQjZ2MTUwMDdFUktTNV8Am1zPAV9aTlN0M19fMjZjaHJvbm84ZHVyYXRpb25Jbk5TXzVyYXRpb0lMeDFFTHgxRUVFRUMyQjZ2MTUwMDdJbkVFUktUX1BOU185ZW5hYmxlX2lmSVhhYXNyMTRpc19jb252ZXJ0aWJsZUlTOF9uRUU1dmFsdWVvb0xfWk5TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFNXZhbHVlRUVudHNyMjN0cmVhdF9hc19mbG9hdGluZ19wb2ludElTNl9FRTV2YWx1ZUV2RTR0eXBlRQD5TS5fWk5LU3QzX18yNWFycmF5STh0aW1lc3BlY0xtMkVFNGRhdGFCNnYxNTAwN0V2ANkwjAFfWk5TdDNfXzIxMF9fZ2V0X3BhaXJJTG0wRUUzZ2V0QjZ2MTUwMDdJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtOWZpbGVfdHlwZUVFRU9UX09OU180cGFpcklTQV9UMF9FRQDZMIwBX1pOU3QzX18yMTBfX2dldF9wYWlySUxtMUVFM2dldEI2djE1MDA3SU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTlmaWxlX3R5cGVFRUVPVDBfT05TXzRwYWlySVRfU0FfRUUAo1kpX1pOS1N0M19fMjEwZXJyb3JfY29kZThjYXRlZ29yeUI2djE1MDA3RXYA3h0uX1pOS1N0M19fMjE1ZXJyb3JfY29uZGl0aW9uOGNhdGVnb3J5QjZ2MTUwMDdFdgDeHStfWk5LU3QzX18yMTVlcnJvcl9jb25kaXRpb241dmFsdWVCNnYxNTAwN0V2AN0dMV9aTlN0M19fMjIwbWFrZV9lcnJvcl9jb25kaXRpb25CNnYxNTAwN0VOU180ZXJyY0UArE08X1pOU3QzX18yMTVlcnJvcl9jb25kaXRpb25DMkI2djE1MDA3RWlSS05TXzE0ZXJyb3JfY2F0ZWdvcnlFALdNRF9aTktTdDNfXzIxN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUU1ZnJvbnRCNnYxNTAwN0V2AN0dbV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUxpMEVMYjBFRUMyQjZ2MTUwMDdJRG52RUVPVF8A006MAV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUxpMUVMYjFFRUMyQjZ2MTUwMDdFTlNfMThfX2RlZmF1bHRfaW5pdF90YWdFANkwT19aTlN0M19fMjlhbGxvY2F0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVDMkI2djE1MDA3RXYA2TBrX1pOU3QzX18yMTZfX25vbl90cml2aWFsX2lmSUxiMUVOU185YWxsb2NhdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVDMkI2djE1MDA3RXYA2TBwX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMHJfWk5TdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTIxX0NvbnN0cnVjdFRyYW5zYWN0aW9uQzJFUlM3X20AoVxlX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUU3X19hbGxvY0I2djE1MDA3RXYAo1lWX1pOU3QzX18yMTJfX3RvX2FkZHJlc3NCNnYxNTAwN0lOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVQVF9TNl8A2TCIAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUU5Y29uc3RydWN0QjZ2MTUwMDdJUzVfSlM1X0V2dkVFdlJTNl9QVF9EcE9UMF8AolxuX1pOU3QzX18yNnZlY3RvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUUyMV9Db25zdHJ1Y3RUcmFuc2FjdGlvbkQyRXYAp1ljX1pOS1N0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFNHNpemVCNnYxNTAwN0V2AKNca19aTktTdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTExX19yZWNvbW1lbmRCNnYxNTAwN0VtAKRcZV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU185YWxsb2NhdG9ySVM0X0VFRUMyRW1tUzdfAKVcjgFfWk5TdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTI2X19zd2FwX291dF9jaXJjdWxhcl9idWZmZXJFUk5TXzE0X19zcGxpdF9idWZmZXJJUzRfUlM2X0VFAKZcYV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU185YWxsb2NhdG9ySVM0X0VFRUQyRXYAp1xqX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMGVfWk5TdDNfXzIxMmNvbnN0cnVjdF9hdEI2djE1MDA3SU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVKUzRfRVBTNF9FRVBUX1M3X0RwT1QwXwCWT3FfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUU2c2Vjb25kQjZ2MTUwMDdFdgDZMHlfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfOWFsbG9jYXRvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVMaTFFTGIxRUU1X19nZXRCNnYxNTAwN0V2ANkwX19aTktTdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRThtYXhfc2l6ZUV2AKhcZ19aTktTdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRThjYXBhY2l0eUI2djE1MDA3RXYAqVx0X1pOS1N0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFMjBfX3Rocm93X2xlbmd0aF9lcnJvckI2djE1MDA3RXYAoFl6X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU185YWxsb2NhdG9ySVM0X0VFRUMyQjZ2MTUwMDdJRG5TOF9FRU9UX09UMF8AgU9vX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUk5TXzlhbGxvY2F0b3JJUzRfRUVFN19fYWxsb2NCNnYxNTAwN0V2AIJPqQFfWk5TdDNfXzIxOV9fYWxsb2NhdGVfYXRfbGVhc3RCNnYxNTAwN0lOU185YWxsb2NhdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUVFTlNfMTlfX2FsbG9jYXRpb25fcmVzdWx0SU5TXzE2YWxsb2NhdG9yX3RyYWl0c0lUX0U3cG9pbnRlckVFRVJTOV9tAKpccV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU185YWxsb2NhdG9ySVM0X0VFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKBOcV9aTktTdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTE3X19hbm5vdGF0ZV9kZWxldGVCNnYxNTAwN0V2AKtcWl9aTlN0M19fMjE2cmV2ZXJzZV9pdGVyYXRvcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVDMkI2djE1MDA3RVM1XwC8S7ABX1pOU3QzX18yNDJfX3VuaW5pdGlhbGl6ZWRfYWxsb2NhdG9yX21vdmVfaWZfbm9leGNlcHRCNnYxNTAwN0lOU185YWxsb2NhdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUzVfRUVTOV9TNV92RUVUMV9SVF9UMF9TRF9TQV8AwFlcX1pOS1N0M19fMjE2cmV2ZXJzZV9pdGVyYXRvcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUU0YmFzZUI2djE1MDA3RXYA3R2vAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTN19FRTV2YWx1ZUV2RTR0eXBlRVJTN19TQV8AjEpuX1pOS1N0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFMTRfX2Fubm90YXRlX25ld0I2djE1MDA3RW0ArFyBAV9aTlN0M19fMjI1X19kZWJ1Z19kYl9pbnZhbGlkYXRlX2FsbEI2djE1MDA3SU5TXzZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzVfRUVFRUVFdlBUXwCRKW1fWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfOWFsbG9jYXRvcklTNF9FRUU1Y2xlYXJCNnYxNTAwN0V2AK1ccV9aTktTdDNfXzIxNF9fc3BsaXRfYnVmZmVySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfOWFsbG9jYXRvcklTNF9FRUU4Y2FwYWNpdHlCNnYxNTAwN0V2AK5ceV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUUxMGRlYWxsb2NhdGVCNnYxNTAwN0VSUzZfUFM1X20Ar1xmX1pOS1N0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFN19fYWxsb2NCNnYxNTAwN0V2AKNZel9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUU4bWF4X3NpemVCNnYxNTAwN0lTNl92dkVFbVJLUzZfALBcaF9aTktTdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKNZcl9aTktTdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfOWFsbG9jYXRvcklTNF9FRUU2c2Vjb25kQjZ2MTUwMDdFdgDZMHpfWk5LU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzlhbGxvY2F0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFTGkxRUxiMUVFNV9fZ2V0QjZ2MTUwMDdFdgDZMHFfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMGtfWk5LU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMH5fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUk5TXzlhbGxvY2F0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFTGkxRUxiMEVFQzJCNnYxNTAwN0lTN192RUVPVF8AvEtWX1pOU3QzX18yOWFsbG9jYXRvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRThhbGxvY2F0ZUI2djE1MDA3RW0AsVxyX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVJOU185YWxsb2NhdG9ySVM0X0VFRTZzZWNvbmRCNnYxNTAwN0V2AI5PcV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfOWFsbG9jYXRvcklTNF9FRUU1Zmlyc3RCNnYxNTAwN0V2ANkwel9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlSTlNfOWFsbG9jYXRvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVMaTFFTGIwRUU1X19nZXRCNnYxNTAwN0V2AN0dY19aTktTdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTRkYXRhQjZ2MTUwMDdFdgDdHYoBX1pOS1N0M19fMjZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzRfRUVFMzFfX2Fubm90YXRlX2NvbnRpZ3VvdXNfY29udGFpbmVyQjZ2MTUwMDdFUEt2UzlfUzlfUzlfAKtZbl9aTlN0M19fMjRtb3ZlQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVTN19FRVQwX1RfUzlfUzhfAMJZowJfWk5TdDNfXzI2X19tb3ZlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRVM4X1M4X0VFTlNfOWVuYWJsZV9pZklYYWFhYXNyMjFpc19jb3B5X2NvbnN0cnVjdGlibGVJVDBfRUU1dmFsdWVzcjIxaXNfY29weV9jb25zdHJ1Y3RpYmxlSVQxX0VFNXZhbHVlc3IyMWlzX2NvcHlfY29uc3RydWN0aWJsZUlUMl9FRTV2YWx1ZUVOU180cGFpcklTQV9TQ19FRUU0dHlwZUVTQV9TQl9TQ18Aw1m8AV9aTlN0M19fMjEzX191bndyYXBfaXRlckI2djE1MDA3SU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzdfTGIwRUVFTGkwRUVFRFRjbHNyVDBfOF9fdW53cmFwY2xzcjNzdGRFN2RlY2x2YWxJVF9FRUVFU0JfANkwpwFfWk5TdDNfXzIxMV9fbW92ZV9pbXBsQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVM2X0xpMEVFRU5TXzRwYWlySU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklUMF9FRU5TOF9JVDFfRUVFRVNBX1NBX1NDXwDEWZYBX1pOU3QzX18yMTNfX3Jld3JhcF9pdGVyQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVTN19OU18xOF9fdW53cmFwX2l0ZXJfaW1wbElTN19MYjBFRUVFRVRfU0FfVDBfAJJKqwFfWk5TdDNfXzI5bWFrZV9wYWlyQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVTN19FRU5TXzRwYWlySU5TXzE4X191bndyYXBfcmVmX2RlY2F5SVRfRTR0eXBlRU5TOV9JVDBfRTR0eXBlRUVFT1NBX09TRF8A8EukAV9aTlN0M19fMjEzX191bndyYXBfaXRlckI2djE1MDA3SVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzVfTGIxRUVFTGkwRUVFRFRjbHNyVDBfOF9fdW53cmFwY2xzcjNzdGRFN2RlY2x2YWxJVF9FRUVFUzlfANkwhgFfWk5TdDNfXzIxMV9fbW92ZV9pbXBsQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUzVfdkVFTlNfNHBhaXJJUFQwX1BUMV9FRVM4X1M4X1NBXwCMT35fWk5TdDNfXzIxM19fcmV3cmFwX2l0ZXJCNnYxNTAwN0lQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVM1X05TXzE4X191bndyYXBfaXRlcl9pbXBsSVM1X0xiMUVFRUVFVF9TOF9UMF8A70usAV9aTlN0M19fMjltYWtlX3BhaXJCNnYxNTAwN0lSTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVTN19FRU5TXzRwYWlySU5TXzE4X191bndyYXBfcmVmX2RlY2F5SVRfRTR0eXBlRU5TQV9JVDBfRTR0eXBlRUVFT1NCX09TRV8A8Et/X1pOU3QzX18yMThfX3Vud3JhcF9pdGVyX2ltcGxJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUVMYjBFRThfX3Vud3JhcEI2djE1MDA3RVM3XwDZMHlfWk5TdDNfXzI0cGFpcklOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRVM3X0VDMkI2djE1MDA3SVM3X1M3X0xQdjBFRUVPVF9PVDBfAPJLggFfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRUxiMEVFOF9fcmV3cmFwQjZ2MTUwMDdFUzdfUzdfAJJKZ19aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTGIxRUU4X191bndyYXBCNnYxNTAwN0VTNV8A2TCTAV9aTlN0M19fMjltYWtlX3BhaXJCNnYxNTAwN0lQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRVM1X0VFTlNfNHBhaXJJTlNfMThfX3Vud3JhcF9yZWZfZGVjYXlJVF9FNHR5cGVFTlM3X0lUMF9FNHR5cGVFRUVPUzhfT1NCXwDwS3pfWk5TdDNfXzI0cGFpcklOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRVM3X0VDMkI2djE1MDA3SVJTN19TN19MUHYwRUVFT1RfT1QwXwDyS2pfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUxiMUVFOF9fcmV3cmFwQjZ2MTUwMDdFUzVfUzVfAPRLYV9aTlN0M19fMjRwYWlySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUzVfRUMyQjZ2MTUwMDdJUzVfUzVfTFB2MEVFRU9UX09UMF8A8kt9X1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUk5TXzlhbGxvY2F0b3JJUzRfRUVFMTdfX2Rlc3RydWN0X2F0X2VuZEI2djE1MDA3RVBTNF8AslxdX1pOU3QzX18yOWFsbG9jYXRvcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVBTNF9tALNccl9aTktTdDNfXzIxNF9fc3BsaXRfYnVmZmVySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfOWFsbG9jYXRvcklTNF9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCgTpsBX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFUk5TXzlhbGxvY2F0b3JJUzRfRUVFMTdfX2Rlc3RydWN0X2F0X2VuZEI2djE1MDA3RVBTNF9OU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRUUAtFx7X1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFRTdkZXN0cm95QjZ2MTUwMDdJUzVfdnZFRXZSUzZfUFRfAJERVl9aTlN0M19fMjEwZGVzdHJveV9hdEI2djE1MDA3SU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVMaTBFRUV2UFRfAJEpWF9aTlN0M19fMjEyX19kZXN0cm95X2F0QjZ2MTUwMDdJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUxpMEVFRXZQVF8AkSlyX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVSTlNfOWFsbG9jYXRvcklTNF9FRUU1Zmlyc3RCNnYxNTAwN0V2ANkwWF9aTlN0M19fMjExX193cmFwX2l0ZXJJUE5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFQzJCNnYxNTAwN0VQS3ZTNV8A+1NgX1pOU3QzX18yZXFCNnYxNTAwN0lQTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFYlJLTlNfMTFfX3dyYXBfaXRlcklUX0VFU0FfAKtPV19aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRTRiYXNlQjZ2MTUwMDdFdgDdHXpfWk5TdDNfXzIxOF9fZGVidWdfZGJfZXJhc2VfY0I2djE1MDA3SU5TXzZ2ZWN0b3JJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzlhbGxvY2F0b3JJUzVfRUVFRUVFdlBUXwCRKWVfWk5TdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTdfX2NsZWFyQjZ2MTUwMDdFdgC1XHhfWk5TdDNfXzI2dmVjdG9ySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU185YWxsb2NhdG9ySVM0X0VFRTIyX19iYXNlX2Rlc3RydWN0X2F0X2VuZEI2djE1MDA3RVBTNF8AtlxFX1pOS1N0M19fMjE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRTVyZmluZEI2djE1MDA3RWNtALdcVF9aTlN0M19fMjExX19zdHJfcmZpbmRCNnYxNTAwN0ljbU5TXzExY2hhcl90cmFpdHNJY0VFTG00Mjk0OTY3Mjk1RUVFVDBfUEtUX1MzX1M0X1MzXwC4XJsBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUxpMEVMYjBFRUMyQjZ2MTUwMDdJRG52RUVPVF8A0066AV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVMaTFFTGIxRUVDMkI2djE1MDA3RU5TXzE4X19kZWZhdWx0X2luaXRfdGFnRQDZMH1fWk5TdDNfXzI5YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUMyQjZ2MTUwMDdFdgDZMJkBX1pOU3QzX18yMTZfX25vbl90cml2aWFsX2lmSUxiMUVOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVFQzJCNnYxNTAwN0V2ANkwlgFfWk5LU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFOV9fZW5kX2NhcEI2djE1MDA3RXYAo1mUAV9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUU3X19hbGxvY0I2djE1MDA3RXYAo1moAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVFOG1heF9zaXplQjZ2MTUwMDdJU0JfdnZFRW1SS1NCXwC5XJ8BX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTZzZWNvbmRCNnYxNTAwN0V2ANkwqAFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRUMyQjZ2MTUwMDdJRG5TRF9FRU9UX09UMF8AgU+dAV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVSTlNfOWFsbG9jYXRvcklTOV9FRUU3X19hbGxvY0I2djE1MDA3RXYAgk/XAV9aTlN0M19fMjE5X19hbGxvY2F0ZV9hdF9sZWFzdEI2djE1MDA3SU5TXzlhbGxvY2F0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFRUVFTlNfMTlfX2FsbG9jYXRpb25fcmVzdWx0SU5TXzE2YWxsb2NhdG9yX3RyYWl0c0lUX0U3cG9pbnRlckVFRVJTRV9tALpcnwFfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFUk5TXzlhbGxvY2F0b3JJUzlfRUVFOV9fZW5kX2NhcEI2djE1MDA3RXYAoE6fAV9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUxN19fYW5ub3RhdGVfZGVsZXRlQjZ2MTUwMDdFdgC7XIgBX1pOU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVDMkI2djE1MDA3RVNBXwC8S90BX1pOU3QzX18yNDJfX3VuaW5pdGlhbGl6ZWRfYWxsb2NhdG9yX21vdmVfaWZfbm9leGNlcHRCNnYxNTAwN0lOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVOU18xNnJldmVyc2VfaXRlcmF0b3JJUFNBX0VFU0VfU0VfRUVUMl9SVF9UMF9UMV9TRl8AvFyKAV9aTktTdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRTRiYXNlQjZ2MTUwMDdFdgDdHd0BX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lQTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTQ19FRTV2YWx1ZUV2RTR0eXBlRVJTQ19TRl8AjEqVAV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKNZnAFfWk5LU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFMTRfX2Fubm90YXRlX25ld0I2djE1MDA3RW0AvVyvAV9aTlN0M19fMjI1X19kZWJ1Z19kYl9pbnZhbGlkYXRlX2FsbEI2djE1MDA3SU5TXzZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVNBX0VFRUVFRXZQVF8AkSmbAV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVSTlNfOWFsbG9jYXRvcklTOV9FRUU1Y2xlYXJCNnYxNTAwN0V2AL5cnwFfWk5LU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRThjYXBhY2l0eUI2djE1MDA3RXYAv1ynAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVFMTBkZWFsbG9jYXRlQjZ2MTUwMDdFUlNCX1BTQV9tAMBcnwFfWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTVmaXJzdEI2djE1MDA3RXYA2TCZAV9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMKABX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUU2c2Vjb25kQjZ2MTUwMDdFdgDZMKgBX1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVMaTFFTGIxRUU1X19nZXRCNnYxNTAwN0V2ANkwpwFfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfOWFsbG9jYXRvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFTGkxRUxiMUVFNV9fZ2V0QjZ2MTUwMDdFdgDZMKwBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVJOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVMaTFFTGIwRUVDMkI2djE1MDA3SVNDX3ZFRU9UXwC8S4QBX1pOU3QzX18yOWFsbG9jYXRvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUU4YWxsb2NhdGVCNnYxNTAwN0VtAMFcoAFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRTZzZWNvbmRCNnYxNTAwN0V2AI5PnwFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRTVmaXJzdEI2djE1MDA3RXYA2TCoAV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlSTlNfOWFsbG9jYXRvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFTGkxRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDdHZgBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TCRAV9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUU0ZGF0YUI2djE1MDA3RXYA3R24AV9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUzMV9fYW5ub3RhdGVfY29udGlndW91c19jb250YWluZXJCNnYxNTAwN0VQS3ZTRV9TRV9TRV8Aq1mfAV9aTlN0M19fMm5lQjZ2MTUwMDdJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFU0FfRUViUktOU18xNnJldmVyc2VfaXRlcmF0b3JJVF9FRVJLTlNCX0lUMF9FRQC2WecBX1pOU3QzX18yMTJfX3RvX2FkZHJlc3NCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUV2RUVOU181ZGVjYXlJRFRjbHNyMTlfX3RvX2FkZHJlc3NfaGVscGVySVRfRUU2X19jYWxsY2w3ZGVjbHZhbElSS1NFX0VFRUVFNHR5cGVFU0dfAMJchwFfWk5LU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVkZUI2djE1MDA3RXYAw1y2AV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVFOWNvbnN0cnVjdEI2djE1MDA3SVNBX0pTQV9FdnZFRXZSU0JfUFRfRHBPVDBfAMRchgFfWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRXBwQjZ2MTUwMDdFdgDFXMgBX1pOU3QzX18yMjlfQWxsb2NhdG9yRGVzdHJveVJhbmdlUmV2ZXJzZUlOU185YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVOU18xNnJldmVyc2VfaXRlcmF0b3JJUFNBX0VFRUMyQjZ2MTUwMDdFUlNCX1JTRV9TSF8A0ky/AV9aTktTdDNfXzIyOV9BbGxvY2F0b3JEZXN0cm95UmFuZ2VSZXZlcnNlSU5TXzlhbGxvY2F0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFRU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQU0FfRUVFY2xCNnYxNTAwN0V2AMZcngFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMIQBX1pOU3QzX18yMTJfX3RvX2FkZHJlc3NCNnYxNTAwN0lOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFUFRfU0JfANkwkwFfWk5TdDNfXzIxMmNvbnN0cnVjdF9hdEI2djE1MDA3SU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFSlM5X0VQUzlfRUVQVF9TQ19EcE9UMF8Ax1yrAV9aTlN0M19fMjE5X190b19hZGRyZXNzX2hlbHBlcklOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUV2RTZfX2NhbGxCNnYxNTAwN0VSS1NDXwDIXI8BX1pOU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySU5TMF9JUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVFQzJCNnYxNTAwN0VTQl8AvEvFAV9aTlN0M19fMjE5X19hbGxvY2F0b3JfZGVzdHJveUI2djE1MDA3SU5TXzlhbGxvY2F0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFRU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklOU0NfSVBTQV9FRUVFU0ZfRUV2UlRfVDBfVDFfAMlchwFfWk5LU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVwdEI2djE1MDA3RXYAylzmAV9aTlN0M19fMjRwcmV2QjZ2MTUwMDdJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVOU185ZW5hYmxlX2lmSVhzcjI1X19pc19jcHAxN19pbnB1dF9pdGVyYXRvcklUX0VFNXZhbHVlRVNDX0U0dHlwZUVTQ19OU18xNWl0ZXJhdG9yX3RyYWl0c0lTQ19FMTVkaWZmZXJlbmNlX3R5cGVFAMtcgwFfWk5TdDNfXzI3YWR2YW5jZUI2djE1MDA3SVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRWxsdkVFdlJUX1QwXwDMXMoBX1pOU3QzX18yOV9fYWR2YW5jZUI2djE1MDA3SVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFdlJUX05TXzE1aXRlcmF0b3JfdHJhaXRzSVNCX0UxNWRpZmZlcmVuY2VfdHlwZUVOU18yNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRQDNXKYBX1pOU3QzX18ybmVCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVTQ19FRWJSS05TMV9JVF9FRVJLTlMxX0lUMF9FRQDOXO4BX1pOU3QzX18yMTJfX3RvX2FkZHJlc3NCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJTlMxX0lQTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFRUVFdkVFTlNfNWRlY2F5SURUY2xzcjE5X190b19hZGRyZXNzX2hlbHBlcklUX0VFNl9fY2FsbGNsN2RlY2x2YWxJUktTRl9FRUVFRTR0eXBlRVNIXwDPXKkBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFRUU3ZGVzdHJveUI2djE1MDA3SVNBX3Z2RUV2UlNCX1BUXwCREY0BX1pOU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySU5TMF9JUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVFcHBCNnYxNTAwN0V2ANBckQFfWk5LU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySU5TMF9JUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVFNGJhc2VCNnYxNTAwN0V2AN0dhAFfWk5TdDNfXzIxMGRlc3Ryb3lfYXRCNnYxNTAwN0lOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUxpMEVFRXZQVF8AkSmyAV9aTlN0M19fMjE5X190b19hZGRyZXNzX2hlbHBlcklOU18xNnJldmVyc2VfaXRlcmF0b3JJTlMxX0lQTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFRUVFdkU2X19jYWxsQjZ2MTUwMDdFUktTRF8A0VyGAV9aTlN0M19fMjE2cmV2ZXJzZV9pdGVyYXRvcklQTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFbW1CNnYxNTAwN0V2ANVbhgFfWk5TdDNfXzIxMl9fZGVzdHJveV9hdEI2djE1MDA3SU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTGkwRUVFdlBUXwCRKY4BX1pOS1N0M19fMjE2cmV2ZXJzZV9pdGVyYXRvcklOUzBfSVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFRXB0QjZ2MTUwMDdFdgDSXP4BX1pOU3QzX18yNHByZXZCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRUVFRU5TXzllbmFibGVfaWZJWHNyMjVfX2lzX2NwcDE3X2lucHV0X2l0ZXJhdG9ySVRfRUU1dmFsdWVFU0VfRTR0eXBlRVNFX05TXzE1aXRlcmF0b3JfdHJhaXRzSVNFX0UxNWRpZmZlcmVuY2VfdHlwZUUA01ybAV9aTlN0M19fMjdhZHZhbmNlQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFbGx2RUV2UlRfVDBfANRc4gFfWk5TdDNfXzI5X19hZHZhbmNlQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFRUV2UlRfTlNfMTVpdGVyYXRvcl90cmFpdHNJU0RfRTE1ZGlmZmVyZW5jZV90eXBlRU5TXzI2cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWdFANVchgFfWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRXBMQjZ2MTUwMDdFbADWXKsBX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRTE3X19kZXN0cnVjdF9hdF9lbmRCNnYxNTAwN0VQUzlfANdciwFfWk5TdDNfXzI5YWxsb2NhdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFRTEwZGVhbGxvY2F0ZUI2djE1MDA3RVBTOV9tANhcoAFfWk5LU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKBOyQFfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFUk5TXzlhbGxvY2F0b3JJUzlfRUVFMTdfX2Rlc3RydWN0X2F0X2VuZEI2djE1MDA3RVBTOV9OU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRUUA2VygAV9aTktTdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRVJOU185YWxsb2NhdG9ySVM5X0VFRTVmaXJzdEI2djE1MDA3RXYA2TC0AV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTIyX19jb25zdHJ1Y3Rfb25lX2F0X2VuZEI2djE1MDA3SUpSUzVfUlM4X0VFRXZEcE9UXwDaXK4BX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFMjRfX2VtcGxhY2VfYmFja19zbG93X3BhdGhJSlJTNV9SUzhfRUVFdkRwT1RfANtcoAFfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUyMV9Db25zdHJ1Y3RUcmFuc2FjdGlvbkMyRVJTQ19tANxcuwFfWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUVFRTljb25zdHJ1Y3RCNnYxNTAwN0lTQV9KUlM2X1JTOV9FdnZFRXZSU0JfUFRfRHBPVDBfAN1cnAFfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUyMV9Db25zdHJ1Y3RUcmFuc2FjdGlvbkQyRXYAp1mZAV9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVFTlNfOWFsbG9jYXRvcklTOV9FRUUxMV9fcmVjb21tZW5kQjZ2MTUwMDdFbQDeXJgBX1pOU3QzX18yMTJjb25zdHJ1Y3RfYXRCNnYxNTAwN0lOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRUpSUzVfUlM4X0VQUzlfRUVQVF9TRV9EcE9UMF8A31yCAV9aTlN0M19fMjRwYWlySU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVOU180X19mczEwZmlsZXN5c3RlbTEyUGF0aFBhcnRLaW5kRUVDMkI2djE1MDA3SVJTNF9SUzdfTFB2MEVFRU9UX09UMF8A4FyrAV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTI3X19pbnZhbGlkYXRlX2l0ZXJhdG9yc19wYXN0QjZ2MTUwMDdFUFM5XwCREaYBX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklOU18xN2Jhc2ljX3N0cmluZ192aWV3SWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFTlNfNF9fZnMxMGZpbGVzeXN0ZW0xMlBhdGhQYXJ0S2luZEVFRU5TXzlhbGxvY2F0b3JJUzlfRUVFMjJfX2Jhc2VfZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFM5XwDhXJ8BX1pOS1N0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTE3X19hbm5vdGF0ZV9zaHJpbmtCNnYxNTAwN0VtAOJchQFfWk5LU3QzX18yMTFfX3dyYXBfaXRlcklQTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVFNGJhc2VCNnYxNTAwN0V2AN0dqAFfWk5TdDNfXzIxOF9fZGVidWdfZGJfZXJhc2VfY0I2djE1MDA3SU5TXzZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVNBX0VFRUVFRXZQVF8AkSmTAV9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJTlNfMTdiYXNpY19zdHJpbmdfdmlld0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRU5TXzRfX2ZzMTBmaWxlc3lzdGVtMTJQYXRoUGFydEtpbmRFRUVOU185YWxsb2NhdG9ySVM5X0VFRTdfX2NsZWFyQjZ2MTUwMDdFdgDjXFtfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SVBjUzNfY0xiMUVFMTNfX3JhbmdlX2JlZ2luQjZ2MTUwMDdFUEtjANkwWV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJUGNTM19jTGIxRUUxMV9fcmFuZ2VfZW5kQjZ2MTUwMDdFUEtjAORcZV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xNGRlZmF1bHRfZGVsZXRlSUFfY0VFTGkxRUxiMUVFQzJCNnYxNTAwN0VOU18xNl9fdmFsdWVfaW5pdF90YWdFANkwSV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUGNOU18xNGRlZmF1bHRfZGVsZXRlSUFfY0VFRTVmaXJzdEI2djE1MDA3RXYA2TBKX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQY05TXzE0ZGVmYXVsdF9kZWxldGVJQV9jRUVFNnNlY29uZEI2djE1MDA3RXYA2TBVX1pOS1N0M19fMjE0ZGVmYXVsdF9kZWxldGVJQV9jRWNsQjZ2MTUwMDdJY0VFTlMyXzIwX0VuYWJsZUlmQ29udmVydGlibGVJVF9FNHR5cGVFUFM1XwC1OlRfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfMTRkZWZhdWx0X2RlbGV0ZUlBX2NFRUxpMUVMYjFFRTVfX2dldEI2djE1MDA3RXYA2TCKAV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjBfX2lzX3BhdGhhYmxlX3N0cmluZ0lOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFdkUxM19fcmFuZ2VfYmVnaW5CNnYxNTAwN0VSS1M4XwD6TIgBX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0yMF9faXNfcGF0aGFibGVfc3RyaW5nSU5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUV2RTExX19yYW5nZV9lbmRCNnYxNTAwN0VSS1M4XwDmXFFfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmxlbmd0aEI2djE1MDA3RXYA51xcX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxM19fcmFuZ2VfYmVnaW5CNnYxNTAwN0VTNF8A2TBaX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0yNF9faXNfcGF0aGFibGVfY2hhcl9hcnJheUlQS2NTNF9jTGIxRUUxMV9fcmFuZ2VfZW5kQjZ2MTUwMDdFUzRfAORcXF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTFfY1BjY0xiMUVFMTNfX3JhbmdlX2JlZ2luQjZ2MTUwMDdFUEtjANkwWl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTFfY1BjY0xiMUVFMTFfX3JhbmdlX2VuZEI2djE1MDA3RVBLYwDkXIABX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0yMF9faXNfcGF0aGFibGVfc3RyaW5nSU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY05TXzExY2hhcl90cmFpdHNJY0VFRUV2RTE1X19maXJzdF9vcl9udWxsQjZ2MTUwMDdFUktTNl8A6FxyX1pOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNF9faXNfc2VwYXJhdG9yQjZ2MTUwMDdJY0VFTlNfOWVuYWJsZV9pZklYc3IxOF9fY2FuX2NvbnZlcnRfY2hhcklUX0VFNXZhbHVlRWJFNHR5cGVFUzRfAN9bXF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTJfY1BjY0xiMUVFMTNfX3JhbmdlX2JlZ2luQjZ2MTUwMDdFUEtjANkwWl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTJfY1BjY0xiMUVFMTFfX3JhbmdlX2VuZEI2djE1MDA3RVBLYwDkXF5fWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTI0X19pc19wYXRoYWJsZV9jaGFyX2FycmF5SUExX2NQY2NMYjFFRTE1X19maXJzdF9vcl9udWxsQjZ2MTUwMDdFUEtjAKpNXl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTNfY1BjY0xiMUVFMTVfX2ZpcnN0X29yX251bGxCNnYxNTAwN0VQS2MAqk2GAV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtOF9QYXRoQ1ZUSWNFMTVfX2FwcGVuZF9zb3VyY2VCNnYxNTAwN0lBM19jRUV2Uk5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVSS1RfAMBbXF9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTNfY1BjY0xiMUVFMTNfX3JhbmdlX2JlZ2luQjZ2MTUwMDdFUEtjANkwWl9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtMjRfX2lzX3BhdGhhYmxlX2NoYXJfYXJyYXlJQTNfY1BjY0xiMUVFMTFfX3JhbmdlX2VuZEI2djE1MDA3RVBLYwDkXDdfWk5TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2X0ZpbGVzeXN0ZW1DbG9jazlpc19zdGVhZHlFA/wMNV9aTlN0M19fMjRfX2ZzMTBmaWxlc3lzdGVtNHBhdGgxOXByZWZlcnJlZF9zZXBhcmF0b3JFA/sML19aVFNOU3QzX18yNF9fZnMxMGZpbGVzeXN0ZW0xNmZpbGVzeXN0ZW1fZXJyb3JFA/oMHl9aTlN0MTliYWRfb3B0aW9uYWxfYWNjZXNzRDJFdgDZMB5fWk5TdDE5YmFkX29wdGlvbmFsX2FjY2Vzc0QwRXYA4kAeX1pOU3QxOWJhZF9vcHRpb25hbF9hY2Nlc3NEMUV2ANkwIl9aTktTdDE5YmFkX29wdGlvbmFsX2FjY2VzczR3aGF0RXYA6VwsX1pOU3QxMmV4cGVyaW1lbnRhbDE5YmFkX29wdGlvbmFsX2FjY2Vzc0QyRXYAv08sX1pOU3QxMmV4cGVyaW1lbnRhbDE5YmFkX29wdGlvbmFsX2FjY2Vzc0QwRXYAwE8sX1pOU3QxMmV4cGVyaW1lbnRhbDE5YmFkX29wdGlvbmFsX2FjY2Vzc0QxRXYAv08bX1pUVlN0MTliYWRfb3B0aW9uYWxfYWNjZXNzA/kMG19aVElTdDE5YmFkX29wdGlvbmFsX2FjY2VzcwP4DBtfWlRTU3QxOWJhZF9vcHRpb25hbF9hY2Nlc3MD9wwrX1pUVk5TdDEyZXhwZXJpbWVudGFsMTliYWRfb3B0aW9uYWxfYWNjZXNzRQP2DCtfWlRJTlN0MTJleHBlcmltZW50YWwxOWJhZF9vcHRpb25hbF9hY2Nlc3NFA/UMK19aVFNOU3QxMmV4cGVyaW1lbnRhbDE5YmFkX29wdGlvbmFsX2FjY2Vzc0UD9AxXX1pOU3QzX18yMTNyYW5kb21fZGV2aWNlQzJFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAOpcHF9aTlN0M19fMjEzcmFuZG9tX2RldmljZUQyRXYA2TAcX1pOU3QzX18yMTNyYW5kb21fZGV2aWNlY2xFdgDrXCNfWk5LU3QzX18yMTNyYW5kb21fZGV2aWNlN2VudHJvcHlFdgDsXFdfWk5TdDNfXzIxM3JhbmRvbV9kZXZpY2VDMUVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUA6lwcX1pOU3QzX18yMTNyYW5kb21fZGV2aWNlRDFFdgDZMBtfWk5TdDNfXzIxMl9fcnNfZGVmYXVsdEMyRXYA7VwdX1pOU3QzX18yMTJfX3JzX2RlZmF1bHQ0X19jX0UD8wwfX1pOU3QzX18yMTJfX3JzX2RlZmF1bHRDMkVSS1MwXwDuXBtfWk5TdDNfXzIxMl9fcnNfZGVmYXVsdEQyRXYA71wbX1pOU3QzX18yMTJfX3JzX2RlZmF1bHRjbEV2APBcmwFfWk5TdDNfXzIyM21lcnNlbm5lX3R3aXN0ZXJfZW5naW5lSWpMbTMyRUxtNjI0RUxtMzk3RUxtMzFFTGoyNTY3NDgzNjE1RUxtMTFFTGo0Mjk0OTY3Mjk1RUxtN0VMajI2MzY5Mjg2NDBFTG0xNUVMajQwMjI3MzA3NTJFTG0xOEVMajE4MTI0MzMyNTNFRUMyQjZ2MTUwMDdFdgDxXJMBX1pOU3QzX18yMjNtZXJzZW5uZV90d2lzdGVyX2VuZ2luZUlqTG0zMkVMbTYyNEVMbTM5N0VMbTMxRUxqMjU2NzQ4MzYxNUVMbTExRUxqNDI5NDk2NzI5NUVMbTdFTGoyNjM2OTI4NjQwRUxtMTVFTGo0MDIyNzMwNzUyRUxtMThFTGoxODEyNDMzMjUzRUVjbEV2APJcmwFfWk5TdDNfXzIyM21lcnNlbm5lX3R3aXN0ZXJfZW5naW5lSWpMbTMyRUxtNjI0RUxtMzk3RUxtMzFFTGoyNTY3NDgzNjE1RUxtMTFFTGo0Mjk0OTY3Mjk1RUxtN0VMajI2MzY5Mjg2NDBFTG0xNUVMajQwMjI3MzA3NTJFTG0xOEVMajE4MTI0MzMyNTNFRUMyQjZ2MTUwMDdFagDzXNEBX1pOU3QzX18yMjNtZXJzZW5uZV90d2lzdGVyX2VuZ2luZUlqTG0zMkVMbTYyNEVMbTM5N0VMbTMxRUxqMjU2NzQ4MzYxNUVMbTExRUxqNDI5NDk2NzI5NUVMbTdFTGoyNjM2OTI4NjQwRUxtMTVFTGo0MDIyNzMwNzUyRUxtMThFTGoxODEyNDMzMjUzRUU4X19yc2hpZnRCNnYxNTAwN0lMbTFFRUVOU185ZW5hYmxlX2lmSVhsdFRfTF9aTlMxXzNfRHRFRUVqRTR0eXBlRWoAg0zSAV9aTlN0M19fMjIzbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmVJakxtMzJFTG02MjRFTG0zOTdFTG0zMUVMajI1Njc0ODM2MTVFTG0xMUVMajQyOTQ5NjcyOTVFTG03RUxqMjYzNjkyODY0MEVMbTE1RUxqNDAyMjczMDc1MkVMbTE4RUxqMTgxMjQzMzI1M0VFOF9fcnNoaWZ0QjZ2MTUwMDdJTG0xMUVFRU5TXzllbmFibGVfaWZJWGx0VF9MX1pOUzFfM19EdEVFRWpFNHR5cGVFagD0XMkBX1pOU3QzX18yMjNtZXJzZW5uZV90d2lzdGVyX2VuZ2luZUlqTG0zMkVMbTYyNEVMbTM5N0VMbTMxRUxqMjU2NzQ4MzYxNUVMbTExRUxqNDI5NDk2NzI5NUVMbTdFTGoyNjM2OTI4NjQwRUxtMTVFTGo0MDIyNzMwNzUyRUxtMThFTGoxODEyNDMzMjUzRUU4X19sc2hpZnRCNnYxNTAwN0lMbTdFRUVOU185ZW5hYmxlX2lmSVhsdFRfTG0zMkVFakU0dHlwZUVqAPVcygFfWk5TdDNfXzIyM21lcnNlbm5lX3R3aXN0ZXJfZW5naW5lSWpMbTMyRUxtNjI0RUxtMzk3RUxtMzFFTGoyNTY3NDgzNjE1RUxtMTFFTGo0Mjk0OTY3Mjk1RUxtN0VMajI2MzY5Mjg2NDBFTG0xNUVMajQwMjI3MzA3NTJFTG0xOEVMajE4MTI0MzMyNTNFRThfX2xzaGlmdEI2djE1MDA3SUxtMTVFRUVOU185ZW5hYmxlX2lmSVhsdFRfTG0zMkVFakU0dHlwZUVqAPZc0gFfWk5TdDNfXzIyM21lcnNlbm5lX3R3aXN0ZXJfZW5naW5lSWpMbTMyRUxtNjI0RUxtMzk3RUxtMzFFTGoyNTY3NDgzNjE1RUxtMTFFTGo0Mjk0OTY3Mjk1RUxtN0VMajI2MzY5Mjg2NDBFTG0xNUVMajQwMjI3MzA3NTJFTG0xOEVMajE4MTI0MzMyNTNFRThfX3JzaGlmdEI2djE1MDA3SUxtMThFRUVOU185ZW5hYmxlX2lmSVhsdFRfTF9aTlMxXzNfRHRFRUVqRTR0eXBlRWoA91wUX1pOU3QzX18yOF9fcnNfZ2V0RXYA+FwbX1pOU3QzX18yMTJfX3JzX2RlZmF1bHRDMUV2AO1clgFfWk5TdDNfXzIyM21lcnNlbm5lX3R3aXN0ZXJfZW5naW5lSWpMbTMyRUxtNjI0RUxtMzk3RUxtMzFFTGoyNTY3NDgzNjE1RUxtMTFFTGo0Mjk0OTY3Mjk1RUxtN0VMajI2MzY5Mjg2NDBFTG0xNUVMajQwMjI3MzA3NTJFTG0xOEVMajE4MTI0MzMyNTNFRTRzZWVkRWoA+VzSAV9aTlN0M19fMjIzbWVyc2VubmVfdHdpc3Rlcl9lbmdpbmVJakxtMzJFTG02MjRFTG0zOTdFTG0zMUVMajI1Njc0ODM2MTVFTG0xMUVMajQyOTQ5NjcyOTVFTG03RUxqMjYzNjkyODY0MEVMbTE1RUxqNDAyMjczMDc1MkVMbTE4RUxqMTgxMjQzMzI1M0VFOF9fcnNoaWZ0QjZ2MTUwMDdJTG0zMEVFRU5TXzllbmFibGVfaWZJWGx0VF9MX1pOUzFfM19EdEVFRWpFNHR5cGVFagD6XB9fWk5TdDNfXzIxMl9fcnNfZGVmYXVsdEMxRVJLUzBfAO5cG19aTlN0M19fMjEyX19yc19kZWZhdWx0RDFFdgDvXDpfWk5TdDNfXzIxMXJlZ2V4X2Vycm9yQzJFTlNfMTVyZWdleF9jb25zdGFudHMxMGVycm9yX3R5cGVFAPtcGV9aVFZOU3QzX18yMTFyZWdleF9lcnJvckUD8gwaX1pOU3QzX18yMTFyZWdleF9lcnJvckQyRXYAuE8aX1pOU3QzX18yMTFyZWdleF9lcnJvckQwRXYAuU8aX1pOU3QzX18yMTFyZWdleF9lcnJvckQxRXYAuE8jX1pOU3QzX18yMjBfX2dldF9jb2xsYXRpb25fbmFtZUVQS2MA/FxDX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFYVNFYwCuXR9fWk5TdDNfXzIxNV9fZ2V0X2NsYXNzbmFtZUVQS2NiAP1cPl9aTktTdDNfXzIyM19fbWF0Y2hfYW55X2J1dF9uZXdsaW5lSWNFNl9fZXhlY0VSTlNfN19fc3RhdGVJY0VFAP5cLl9aTktTdDNfXzIxNV9faGFzX29uZV9zdGF0ZUljRTVmaXJzdEI2djE1MDA3RXYA3h0+X1pOS1N0M19fMjIzX19tYXRjaF9hbnlfYnV0X25ld2xpbmVJd0U2X19leGVjRVJOU183X19zdGF0ZUl3RUUA/1wuX1pOS1N0M19fMjE1X19oYXNfb25lX3N0YXRlSXdFNWZpcnN0QjZ2MTUwMDdFdgDeHRlfWlRJTlN0M19fMjExcmVnZXhfZXJyb3JFA/EMGV9aVFNOU3QzX18yMTFyZWdleF9lcnJvckUD8Aw6X1pOU3QzX18yMTFyZWdleF9lcnJvckMxRU5TXzE1cmVnZXhfY29uc3RhbnRzMTBlcnJvcl90eXBlRQD7XCJfWk5TdDNfXzIxOV9fc2hhcmVkX211dGV4X2Jhc2VDMkV2AIFdJV9aTlN0M19fMjE5X19zaGFyZWRfbXV0ZXhfYmFzZTRsb2NrRXYAgl0pX1pOU3QzX18yMTlfX3NoYXJlZF9tdXRleF9iYXNlOHRyeV9sb2NrRXYAg10nX1pOU3QzX18yMTlfX3NoYXJlZF9tdXRleF9iYXNlNnVubG9ja0V2AIRdLV9aTlN0M19fMjE5X19zaGFyZWRfbXV0ZXhfYmFzZTExbG9ja19zaGFyZWRFdgCFXTFfWk5TdDNfXzIxOV9fc2hhcmVkX211dGV4X2Jhc2UxNXRyeV9sb2NrX3NoYXJlZEV2AIZdL19aTlN0M19fMjE5X19zaGFyZWRfbXV0ZXhfYmFzZTEzdW5sb2NrX3NoYXJlZEV2AIddIV9aTlN0M19fMjE4c2hhcmVkX3RpbWVkX211dGV4QzJFdgCIXSJfWk5TdDNfXzIxOV9fc2hhcmVkX211dGV4X2Jhc2VDMUV2AIFdJF9aTlN0M19fMjE4c2hhcmVkX3RpbWVkX211dGV4NGxvY2tFdgCJXShfWk5TdDNfXzIxOHNoYXJlZF90aW1lZF9tdXRleDh0cnlfbG9ja0V2AIpdJl9aTlN0M19fMjE4c2hhcmVkX3RpbWVkX211dGV4NnVubG9ja0V2AItdLF9aTlN0M19fMjE4c2hhcmVkX3RpbWVkX211dGV4MTFsb2NrX3NoYXJlZEV2AIxdMF9aTlN0M19fMjE4c2hhcmVkX3RpbWVkX211dGV4MTV0cnlfbG9ja19zaGFyZWRFdgCNXS5fWk5TdDNfXzIxOHNoYXJlZF90aW1lZF9tdXRleDEzdW5sb2NrX3NoYXJlZEV2AI5dIV9aTlN0M19fMjE4c2hhcmVkX3RpbWVkX211dGV4QzFFdgCIXRNfWlRWU3QxMWxvZ2ljX2Vycm9yA+8MG19aTlN0OWV4Y2VwdGlvbkMyQjZ2MTUwMDdFdgCQXSNfWk5TdDNfXzIxOF9fbGliY3BwX3JlZnN0cmluZ0MyRVBLYwCRXRBfWlRWU3Q5ZXhjZXB0aW9uA+4MJV9aTlN0M19fMjE4X19saWJjcHBfcmVmc3RyaW5nQzJFUktTMF8AlF0xX1pOS1N0M19fMjE4X19saWJjcHBfcmVmc3RyaW5nMTVfX3VzZXNfcmVmY291bnRFdgCUNxlfWk5TdDExbG9naWNfZXJyb3JhU0VSS1NfAJddJV9aTlN0M19fMjE4X19saWJjcHBfcmVmc3RyaW5nYVNFUktTMF8AmF1ZX1pOU3QxM3J1bnRpbWVfZXJyb3JDMkVSS05TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlMwXzExY2hhcl90cmFpdHNJY0VFTlMwXzlhbGxvY2F0b3JJY0VFRUUAmV0VX1pUVlN0MTNydW50aW1lX2Vycm9yA+0MG19aTlN0MTNydW50aW1lX2Vycm9yQzJFUktTXwCbXRtfWk5TdDEzcnVudGltZV9lcnJvcmFTRVJLU18Al11XX1pOU3QxMWxvZ2ljX2Vycm9yQzFFUktOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TMF8xMWNoYXJfdHJhaXRzSWNFRU5TMF85YWxsb2NhdG9ySWNFRUVFAI9dGF9aTlN0MTFsb2dpY19lcnJvckMxRVBLYwCSXRlfWk5TdDExbG9naWNfZXJyb3JDMUVSS1NfAJNdG19aTlN0MTNydW50aW1lX2Vycm9yQzFFUktTXwCbXU5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3cmVwbGFjZUVtbVBLY20AnF0lX1pOU3QzX18yMTFjaGFyX3RyYWl0c0ljRTRtb3ZlRVBjUEtjbQCdXWBfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUyMV9fZ3Jvd19ieV9hbmRfcmVwbGFjZUVtbW1tbW1QS2MAnl1MX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVyZmluZEVQS2NtbQCfXVdfWk5TdDNfXzIxMV9fc3RyX3JmaW5kQjZ2MTUwMDdJY21OU18xMWNoYXJfdHJhaXRzSWNFRUxtNDI5NDk2NzI5NUVFRVQwX1BLVF9TM19TNl9TM19TM18AoF1HX1pOU3QzX18yMThfX2ZpbmRfZW5kX2NsYXNzaWNCNnYxNTAwN0lQS2NTMl9Eb0ZiY2NFRUVUX1M0X1M0X1QwX1M1X1JUMV8AoV1MX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNl9faW5pdEVQS2NtbQCiXU1fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3cmVwbGFjZUVtbVBLYwCjXVhfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMTZmaW5kX2xhc3Rfbm90X29mRVBLY21tAKRdYl9aTlN0M19fMjIyX19zdHJfZmluZF9sYXN0X25vdF9vZkI2djE1MDA3SWNtTlNfMTFjaGFyX3RyYWl0c0ljRUVMbTQyOTQ5NjcyOTVFRUVUMF9QS1RfUzNfUzZfUzNfUzNfAKVdJ19aTlN0M19fMjExY2hhcl90cmFpdHNJY0U0ZmluZEVQS2NtUlMyXwCmXWZfWk5TdDNfXzIxOF9fZGVidWdfZGJfZXJhc2VfY0I2djE1MDA3SU5TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVFRXZQVF8AkSlZX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTE3ZmluZF9maXJzdF9ub3Rfb2ZFUEtjbW0AqF1jX1pOU3QzX18yMjNfX3N0cl9maW5kX2ZpcnN0X25vdF9vZkI2djE1MDA3SWNtTlNfMTFjaGFyX3RyYWl0c0ljRUVMbTQyOTQ5NjcyOTVFRUVUMF9QS1RfUzNfUzZfUzNfUzNfAKldJV9aTlN0M19fMjExY2hhcl90cmFpdHNJY0U2YXNzaWduRVBjbWMArF0sX1pOU3QzX18yNmZpbGxfbkI2djE1MDA3SVBjbWNFRVRfUzJfVDBfUktUMV8ArV1FX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTJhdEVtALFdTF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZpbnNlcnRFbVBLY20Asl1VX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTEzZmluZF9maXJzdF9vZkVQS2NtbQCzXV9fWk5TdDNfXzIxOV9fc3RyX2ZpbmRfZmlyc3Rfb2ZCNnYxNTAwN0ljbU5TXzExY2hhcl90cmFpdHNJY0VFTG00Mjk0OTY3Mjk1RUVFVDBfUEtUX1MzX1M2X1MzX1MzXwC0XUBfWk5TdDNfXzIxOF9fZmluZF9maXJzdF9vZl9jZUlQS2NTMl9SRG9GYmNjRUVFVF9TNV9TNV9UMF9TNl9PVDFfALVdTF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTdyZXBsYWNlRW1tbWMAtl1dX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFMThfX3Nocmlua19vcl9leHRlbmRCNnYxNTAwN0VtALpdTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZhc3NpZ25FUktTNV9tbQC8XUpfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNGNvcHlFUGNtbQC9XU5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVDMkVSS1M1X21tUktTNF8Avl1IX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTRmaW5kRWNtAL9dU19aTlN0M19fMjEwX19zdHJfZmluZEI2djE1MDA3SWNtTlNfMTFjaGFyX3RyYWl0c0ljRUVMbTQyOTQ5NjcyOTVFRUVUMF9QS1RfUzNfUzRfUzNfAMBdVF9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUxMmZpbmRfbGFzdF9vZkVQS2NtbQDDXV5fWk5TdDNfXzIxOF9fc3RyX2ZpbmRfbGFzdF9vZkI2djE1MDA3SWNtTlNfMTFjaGFyX3RyYWl0c0ljRUVMbTQyOTQ5NjcyOTVFRUVUMF9QS1RfUzNfUzZfUzNfUzNfAMRdSV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZhcHBlbmRFbWMAyF1JX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTVyZmluZEVjbQDJXUlfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2YXNzaWduRW1jAMpdTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRTZhcHBlbmRFUktTNV9tbQDMXUxfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFN2NvbXBhcmVFUEtjAM1dTl9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3Y29tcGFyZUVtbVBLYwDPXURfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUUyYXRFbQCxXUtfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNGZpbmRFUEtjbW0A0F1WX1pOU3QzX18yMTBfX3N0cl9maW5kQjZ2MTUwMDdJY21OU18xMWNoYXJfdHJhaXRzSWNFRUxtNDI5NDk2NzI5NUVFRVQwX1BLVF9TM19TNl9TM19TM18A0V1FX1pOU3QzX18yMThfX3NlYXJjaF9zdWJzdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFRUVQS1RfUzVfUzVfUzVfUzVfANJdUl9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3Y29tcGFyZUVtbVJLUzVfbW0A013tAV9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3Y29tcGFyZUI2djE1MDA3SU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJY1MyX0VFRUVOU185ZW5hYmxlX2lmSVhhYXNyMzNfX2Nhbl9iZV9jb252ZXJ0ZWRfdG9fc3RyaW5nX3ZpZXdJY1MyX1RfRUU1dmFsdWVudHNyMTdfX2lzX3NhbWVfdW5jdnJlZklTQV9TNV9FRTV2YWx1ZUVpRTR0eXBlRW1tUktTQV9tbQDUXVFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU3cmVwbGFjZUVtbVJLUzVfbW0A1l1eX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFNmluc2VydEVOU18xMV9fd3JhcF9pdGVySVBLY0VFYwDXXU9fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU2aW5zZXJ0RW1SS1M1X21tANldTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTdyZXBsYWNlRW1tUEt3bQDaXSVfWk5TdDNfXzIxMWNoYXJfdHJhaXRzSXdFNG1vdmVFUHdQS3dtANtdYF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTIxX19ncm93X2J5X2FuZF9yZXBsYWNlRW1tbW1tbVBLdwDcXUxfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNXJmaW5kRVBLd21tAN1dV19aTlN0M19fMjExX19zdHJfcmZpbmRCNnYxNTAwN0l3bU5TXzExY2hhcl90cmFpdHNJd0VFTG00Mjk0OTY3Mjk1RUVFVDBfUEtUX1MzX1M2X1MzX1MzXwDeXUdfWk5TdDNfXzIxOF9fZmluZF9lbmRfY2xhc3NpY0I2djE1MDA3SVBLd1MyX0RvRmJ3d0VFRVRfUzRfUzRfVDBfUzVfUlQxXwDfXUxfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU2X19pbml0RVBLd21tAOBdTV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTdyZXBsYWNlRW1tUEt3AOFdWF9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxNmZpbmRfbGFzdF9ub3Rfb2ZFUEt3bW0A4l1iX1pOU3QzX18yMjJfX3N0cl9maW5kX2xhc3Rfbm90X29mQjZ2MTUwMDdJd21OU18xMWNoYXJfdHJhaXRzSXdFRUxtNDI5NDk2NzI5NUVFRVQwX1BLVF9TM19TNl9TM19TM18A410nX1pOU3QzX18yMTFjaGFyX3RyYWl0c0l3RTRmaW5kRVBLd21SUzJfAORdZl9aTlN0M19fMjE4X19kZWJ1Z19kYl9lcmFzZV9jQjZ2MTUwMDdJTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRUVFdlBUXwCRKVlfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTdmaW5kX2ZpcnN0X25vdF9vZkVQS3dtbQDmXWNfWk5TdDNfXzIyM19fc3RyX2ZpbmRfZmlyc3Rfbm90X29mQjZ2MTUwMDdJd21OU18xMWNoYXJfdHJhaXRzSXdFRUxtNDI5NDk2NzI5NUVFRVQwX1BLVF9TM19TNl9TM19TM18A510lX1pOU3QzX18yMTFjaGFyX3RyYWl0c0l3RTZhc3NpZ25FUHdtdwDqXSxfWk5TdDNfXzI2ZmlsbF9uQjZ2MTUwMDdJUHdtd0VFVF9TMl9UMF9SS1QxXwDrXUNfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVhU0V3AOxdRV9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUyYXRFbQDvXUxfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU2aW5zZXJ0RW1QS3dtAPBdVV9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxM2ZpbmRfZmlyc3Rfb2ZFUEt3bW0A8V1fX1pOU3QzX18yMTlfX3N0cl9maW5kX2ZpcnN0X29mQjZ2MTUwMDdJd21OU18xMWNoYXJfdHJhaXRzSXdFRUxtNDI5NDk2NzI5NUVFRVQwX1BLVF9TM19TNl9TM19TM18A8l1AX1pOU3QzX18yMThfX2ZpbmRfZmlyc3Rfb2ZfY2VJUEt3UzJfUkRvRmJ3d0VFRVRfUzVfUzVfVDBfUzZfT1QxXwDzXUxfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU3cmVwbGFjZUVtbW13APRdSV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTdyZXNlcnZlRW0A911dX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMThfX3Nocmlua19vcl9leHRlbmRCNnYxNTAwN0VtAPhdTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZhc3NpZ25FUktTNV9tbQD6XUpfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNGNvcHlFUHdtbQD7XU5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVDMkVSS1M1X21tUktTNF8A/F1IX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTRmaW5kRXdtAP1dU19aTlN0M19fMjEwX19zdHJfZmluZEI2djE1MDA3SXdtTlNfMTFjaGFyX3RyYWl0c0l3RUVMbTQyOTQ5NjcyOTVFRUVUMF9QS1RfUzNfUzRfUzNfAP5dS19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZpbnNlcnRFbVBLdwCAXlRfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFMTJmaW5kX2xhc3Rfb2ZFUEt3bW0AgV5eX1pOU3QzX18yMThfX3N0cl9maW5kX2xhc3Rfb2ZCNnYxNTAwN0l3bU5TXzExY2hhcl90cmFpdHNJd0VFTG00Mjk0OTY3Mjk1RUVFVDBfUEtUX1MzX1M2X1MzX1MzXwCCXmFfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUUxN19fYXNzaWduX25vX2FsaWFzSUxiMEVFRVJTNV9QS3dtAINeYV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTE3X19hc3NpZ25fbm9fYWxpYXNJTGIxRUVFUlM1X1BLd20AhF5JX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNmFwcGVuZEVtdwCGXklfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNXJmaW5kRXdtAIdeVF9aTlN0M19fMjExX19zdHJfcmZpbmRCNnYxNTAwN0l3bU5TXzExY2hhcl90cmFpdHNJd0VFTG00Mjk0OTY3Mjk1RUVFVDBfUEtUX1MzX1M0X1MzXwCIXklfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU2YXNzaWduRW13AIleTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZhcHBlbmRFUktTNV9tbQCLXkxfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFN2NvbXBhcmVFUEt3AIxeT19aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU3Y29tcGFyZUVtbVBLd20AjV4pX1pOU3QzX18yMTFjaGFyX3RyYWl0c0l3RTdjb21wYXJlRVBLd1MzX20Ajl5OX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTdjb21wYXJlRW1tUEt3AI9eRF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTJhdEVtAO9dS19aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU0ZmluZEVQS3dtbQCQXlZfWk5TdDNfXzIxMF9fc3RyX2ZpbmRCNnYxNTAwN0l3bU5TXzExY2hhcl90cmFpdHNJd0VFTG00Mjk0OTY3Mjk1RUVFVDBfUEtUX1MzX1M2X1MzX1MzXwCRXkVfWk5TdDNfXzIxOF9fc2VhcmNoX3N1YnN0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRVBLVF9TNV9TNV9TNV9TNV8Akl5SX1pOS1N0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTdjb21wYXJlRW1tUktTNV9tbQCTXmlfWk5LU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFY3ZOU18xN2Jhc2ljX3N0cmluZ192aWV3SXdTMl9FRUI2djE1MDA3RXYAglvtAV9aTktTdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU3Y29tcGFyZUI2djE1MDA3SU5TXzE3YmFzaWNfc3RyaW5nX3ZpZXdJd1MyX0VFRUVOU185ZW5hYmxlX2lmSVhhYXNyMzNfX2Nhbl9iZV9jb252ZXJ0ZWRfdG9fc3RyaW5nX3ZpZXdJd1MyX1RfRUU1dmFsdWVudHNyMTdfX2lzX3NhbWVfdW5jdnJlZklTQV9TNV9FRTV2YWx1ZUVpRTR0eXBlRW1tUktTQV9tbQCUXkZfWk5LU3QzX18yMTdiYXNpY19zdHJpbmdfdmlld0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFNnN1YnN0ckI2djE1MDA3RW1tAJVeQF9aTktTdDNfXzIxN2Jhc2ljX3N0cmluZ192aWV3SXdOU18xMWNoYXJfdHJhaXRzSXdFRUU3Y29tcGFyZUVTM18All5CX1pOU3QzX18yMTdiYXNpY19zdHJpbmdfdmlld0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFQzJCNnYxNTAwN0VQS3dtALdNSl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZhcHBlbmRFUEt3AJdeUV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTdyZXBsYWNlRW1tUktTNV9tbQCYXl5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUU2aW5zZXJ0RU5TXzExX193cmFwX2l0ZXJJUEt3RUV3AJleSV9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZyZXNpemVFbXcAml5PX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNmluc2VydEVtUktTNV9tbQCbXm5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVDMkI2djE1MDA3RU5TXzI0X191bmluaXRpYWxpemVkX3NpemVfdGFnRW1SS1M0XwCdXkVfWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfOWFsbG9jYXRvckljRUVFOGFsbG9jYXRlQjZ2MTUwMDdFUlMyX20Anl5OX1pOU3QzX18yNHN0b2lFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUG1pAJ9eQ19aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUQxRXYAp11OX1pOU3QzX18yNHN0b2xFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUG1pAKNeT19aTlN0M19fMjVzdG91bEVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVQbWkApV5PX1pOU3QzX18yNXN0b2xsRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVBtaQCnXlBfWk5TdDNfXzI2c3RvdWxsRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRVBtaQCpXk1fWk5TdDNfXzI0c3RvZkVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVQbQCrXk1fWk5TdDNfXzI0c3RvZEVSS05TXzEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVQbQCtXk5fWk5TdDNfXzI1c3RvbGRFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFUG0Ar15OX1pOU3QzX18yNHN0b2lFUktOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFUG1pALFeTl9aTlN0M19fMjRzdG9sRVJLTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRVBtaQC0Xk9fWk5TdDNfXzI1c3RvdWxFUktOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFUG1pALZeT19aTlN0M19fMjVzdG9sbEVSS05TXzEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUVQbWkAuF5QX1pOU3QzX18yNnN0b3VsbEVSS05TXzEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUVQbWkAul5NX1pOU3QzX18yNHN0b2ZFUktOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFUG0AvF5NX1pOU3QzX18yNHN0b2RFUktOU18xMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFUG0Avl5OX1pOU3QzX18yNXN0b2xkRVJLTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRVBtAMBePl9aTlN0M19fMjh0b19jaGFyc0I2djE1MDA3SWlMaTBFRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MyX1RfAMNeVF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUMyQjZ2MTUwMDdJUGN2RUVUX1M4XwCfUxVfWk5TdDNfXzI5dG9fc3RyaW5nRWwAwl4+X1pOU3QzX18yOHRvX2NoYXJzQjZ2MTUwMDdJbExpMEVFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzJfVF8Aw14VX1pOU3QzX18yOXRvX3N0cmluZ0V4AMRePl9aTlN0M19fMjh0b19jaGFyc0I2djE1MDA3SXhMaTBFRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MyX1RfAMVeFV9aTlN0M19fMjl0b19zdHJpbmdFagDGXhVfWk5TdDNfXzI5dG9fc3RyaW5nRW0Axl4+X1pOU3QzX18yOHRvX2NoYXJzQjZ2MTUwMDdJbUxpMEVFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzJfVF8A2ksVX1pOU3QzX18yOXRvX3N0cmluZ0V5AMdePl9aTlN0M19fMjh0b19jaGFyc0I2djE1MDA3SXlMaTBFRUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MyX1RfAMheF19aTlN0M19fMjEwdG9fd3N0cmluZ0VpAMleVF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUMyQjZ2MTUwMDdJUGN2RUVUX1M4XwDKXhdfWk5TdDNfXzIxMHRvX3dzdHJpbmdFbADJXhdfWk5TdDNfXzIxMHRvX3dzdHJpbmdFeADLXhdfWk5TdDNfXzIxMHRvX3dzdHJpbmdFagDMXhdfWk5TdDNfXzIxMHRvX3dzdHJpbmdFbQDMXhdfWk5TdDNfXzIxMHRvX3dzdHJpbmdFeQDNXhVfWk5TdDNfXzI5dG9fc3RyaW5nRWYAzl4VX1pOU3QzX18yOXRvX3N0cmluZ0VkANFeFV9aTlN0M19fMjl0b19zdHJpbmdFZQDTXhdfWk5TdDNfXzIxMHRvX3dzdHJpbmdFZgDVXkNfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVEMUV2AOVdUF9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRTZyZXNpemVCNnYxNTAwN0VtANheTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUMyQjZ2MTUwMDdFT1M1XwCFTRdfWk5TdDNfXzIxMHRvX3dzdHJpbmdFZADZXhdfWk5TdDNfXzIxMHRvX3dzdHJpbmdFZQDbXqgBX1pOU3QzX18yMTVfX2ZpbmRfZW5kX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVBLY1MzX1MzX1MzX0RvRmJjY0VOU18xMF9faWRlbnRpdHlFUzVfRUVOU180cGFpcklUMF9TN19FRVM3X1QxX1QyX1QzX1JUNF9SVDVfUlQ2X05TXzIwZm9yd2FyZF9pdGVyYXRvcl90YWdFU0lfAN1eRl9aTlN0M19fMjhfSXRlck9wc0lOU18xN19DbGFzc2ljQWxnUG9saWN5RUU0bmV4dEI2djE1MDA3SVBLY0VFVF9TNl9TNl8AkkpyX1pOU3QzX18yOF9faW52b2tlQjZ2MTUwMDdJUk5TXzEwX19pZGVudGl0eUVKUktjRUVFRFRjbGNsc3Izc3RkRTdkZWNsdmFsSVRfRUVzcGNsc3Izc3RkRTdkZWNsdmFsSVQwX0VFRUVPUzVfRHBPUzZfAJJKbF9aTlN0M19fMjhfX2ludm9rZUI2djE1MDA3SVJEb0ZiY2NFSlJLY1M0X0VFRURUY2xjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFc3BjbHNyM3N0ZEU3ZGVjbHZhbElUMF9FRUVFT1M1X0RwT1M2XwDeXjZfWk5TdDNfXzI0cGFpcklQS2NTMl9FQzJCNnYxNTAwN0lSUzJfUzVfTFB2MEVFRU9UX09UMF8A8kskX1pOS1N0M19fMjEwX19pZGVudGl0eWNsSVJLY0VFT1RfUzVfAJJKLl9aTlN0M19fMjhfX2ZpbGxfbkI2djE1MDA3SVBjbWNFRVRfUzJfVDBfUktUMV8A316oAV9aTlN0M19fMjE1X19maW5kX2VuZF9pbXBsQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVQS3dTM19TM19TM19Eb0Zid3dFTlNfMTBfX2lkZW50aXR5RVM1X0VFTlNfNHBhaXJJVDBfUzdfRUVTN19UMV9UMl9UM19SVDRfUlQ1X1JUNl9OU18yMGZvcndhcmRfaXRlcmF0b3JfdGFnRVNJXwDgXkZfWk5TdDNfXzI4X0l0ZXJPcHNJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVFNG5leHRCNnYxNTAwN0lQS3dFRVRfUzZfUzZfAJJKcl9aTlN0M19fMjhfX2ludm9rZUI2djE1MDA3SVJOU18xMF9faWRlbnRpdHlFSlJLd0VFRURUY2xjbHNyM3N0ZEU3ZGVjbHZhbElUX0VFc3BjbHNyM3N0ZEU3ZGVjbHZhbElUMF9FRUVFT1M1X0RwT1M2XwCSSmxfWk5TdDNfXzI4X19pbnZva2VCNnYxNTAwN0lSRG9GYnd3RUpSS3dTNF9FRUVEVGNsY2xzcjNzdGRFN2RlY2x2YWxJVF9FRXNwY2xzcjNzdGRFN2RlY2x2YWxJVDBfRUVFRU9TNV9EcE9TNl8A4V42X1pOU3QzX18yNHBhaXJJUEt3UzJfRUMyQjZ2MTUwMDdJUlMyX1M1X0xQdjBFRUVPVF9PVDBfAPJLJF9aTktTdDNfXzIxMF9faWRlbnRpdHljbElSS3dFRU9UX1M1XwCSSi5fWk5TdDNfXzI4X19maWxsX25CNnYxNTAwN0lQd213RUVUX1MyX1QwX1JLVDFfAOJeQ19aTktTdDNfXzIxN2Jhc2ljX3N0cmluZ192aWV3SXdOU18xMWNoYXJfdHJhaXRzSXdFRUU0c2l6ZUI2djE1MDA3RXYA3h1DX1pOS1N0M19fMjE3YmFzaWNfc3RyaW5nX3ZpZXdJd05TXzExY2hhcl90cmFpdHNJd0VFRTRkYXRhQjZ2MTUwMDdFdgDdHWJfWk5TdDNfXzJwbEI2djE1MDA3SWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUVOU18xMmJhc2ljX3N0cmluZ0lUX1QwX1QxX0VFUktTOV9QS1M2XwDkXmRfWk5TdDE2aW52YWxpZF9hcmd1bWVudEMyQjZ2MTUwMDdFUktOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TMF8xMWNoYXJfdHJhaXRzSWNFRU5TMF85YWxsb2NhdG9ySWNFRUVFAOdeG19aTlN0MTZpbnZhbGlkX2FyZ3VtZW50RDFFdgCcYhhfWlRJU3QxNmludmFsaWRfYXJndW1lbnQD7AwYX1pUVlN0MTZpbnZhbGlkX2FyZ3VtZW50A+sMYF9aTlN0MTJvdXRfb2ZfcmFuZ2VDMkI2djE1MDA3RVJLTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOUzBfMTFjaGFyX3RyYWl0c0ljRUVOUzBfOWFsbG9jYXRvckljRUVFRQDoXmBfWk5TdDNfXzIxNV9fdG9fY2hhcnNfaXRvYUI2djE1MDA3SWlFRU5TXzE1dG9fY2hhcnNfcmVzdWx0RVBjUzJfVF9OU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjFFRUUA6V5IX1pOU3QzX18yMThfX3RvX3Vuc2lnbmVkX2xpa2VCNnYxNTAwN0lpRUVOU18xM21ha2VfdW5zaWduZWRJVF9FNHR5cGVFUzJfANkwKF9aTlN0M19fMjEyX19jb21wbGVtZW50QjZ2MTUwMDdJakVFVF9TMV8A6l5gX1pOU3QzX18yMTVfX3RvX2NoYXJzX2l0b2FCNnYxNTAwN0l4RUVOU18xNXRvX2NoYXJzX3Jlc3VsdEVQY1MyX1RfTlNfMTdpbnRlZ3JhbF9jb25zdGFudEliTGIxRUVFAOteSF9aTlN0M19fMjE4X190b191bnNpZ25lZF9saWtlQjZ2MTUwMDdJeEVFTlNfMTNtYWtlX3Vuc2lnbmVkSVRfRTR0eXBlRVMyXwCwHihfWk5TdDNfXzIxMl9fY29tcGxlbWVudEI2djE1MDA3SXlFRVRfUzFfALlIYF9aTlN0M19fMjE1X190b19jaGFyc19pdG9hQjZ2MTUwMDdJeUVFTlNfMTV0b19jaGFyc19yZXN1bHRFUGNTMl9UX05TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFRQDsXjVfWk5TdDNfXzI2X19pdG9hMTNfX3RyYWl0c19iYXNlSXl2RTdfX3dpZHRoQjZ2MTUwMDdFeQDtXjlfWk5TdDNfXzI2X19pdG9hMTNfX3RyYWl0c19iYXNlSXl2RTlfX2NvbnZlcnRCNnYxNTAwN0VQY3kA7l4hX1pOU3QzX18yMTJfX2xpYmNwcF9jbHpCNnYxNTAwN0V5AO9eKF9aTlN0M19fMjZfX2l0b2E3X190YWJsZUl2RTEwX19wb3cxMF82NEUD6gwrX1pOU3QzX18yNl9faXRvYTEzX19iYXNlXzEwX3U2NEI2djE1MDA3RVBjeQDwXi9fWk5TdDNfXzI2X19pdG9hMTBfX2FwcGVuZDEwQjZ2MTUwMDdJeUVFUGNTMl9UXwDxXpMBX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNl9faW5pdElQY0VFTlNfOWVuYWJsZV9pZklYc3IyN19faXNfY3BwMTdfZm9yd2FyZF9pdGVyYXRvcklUX0VFNXZhbHVlRXZFNHR5cGVFUzlfUzlfAPJeZl9aTlN0M19fMjE1X19kZWJ1Z19kYl9zd2FwQjZ2MTUwMDdJTlNfMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRUVFdlBUX1M4XwCREUVfWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUU0bnBvc0UD6QxFX1pOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFNG5wb3NFA+gMTl9aTlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUMxRVJLUzVfbW1SS1M0XwC+XU5fWk5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVDMUVSS1M1X21tUktTNF8A/F0bX1pOU3QzX18yMTJzdHJzdHJlYW1idWZDMkVsAPNeGl9aVFZOU3QzX18yMTJzdHJzdHJlYW1idWZFA+cMJ19aTlN0M19fMjEyc3Ryc3RyZWFtYnVmQzJFUEZQdm1FUEZ2UzFfRQD0XiVfWk5TdDNfXzIxMnN0cnN0cmVhbWJ1ZjZfX2luaXRFUGNsUzFfAPVeIF9aTlN0M19fMjEyc3Ryc3RyZWFtYnVmQzJFUGNsUzFfAPZeHl9aTlN0M19fMjEyc3Ryc3RyZWFtYnVmQzJFUEtjbAD3XiBfWk5TdDNfXzIxMnN0cnN0cmVhbWJ1ZkMyRVBhbFMxXwD2Xh5fWk5TdDNfXzIxMnN0cnN0cmVhbWJ1ZkMyRVBLYWwA914gX1pOU3QzX18yMTJzdHJzdHJlYW1idWZDMkVQaGxTMV8A9l4eX1pOU3QzX18yMTJzdHJzdHJlYW1idWZDMkVQS2hsAPdeG19aTlN0M19fMjEyc3Ryc3RyZWFtYnVmRDJFdgD4XhtfWk5TdDNfXzIxMnN0cnN0cmVhbWJ1ZkQwRXYA+V4bX1pOU3QzX18yMTJzdHJzdHJlYW1idWZEMUV2APheIV9aTlN0M19fMjEyc3Ryc3RyZWFtYnVmNHN3YXBFUlMwXwD6XoYBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lQRlB2bUVFRU5TXzllbmFibGVfaWZJWGFhc3IyMWlzX21vdmVfY29uc3RydWN0aWJsZUlUX0VFNXZhbHVlc3IxOGlzX21vdmVfYXNzaWduYWJsZUlTNV9FRTV2YWx1ZUV2RTR0eXBlRVJTNV9TOF8AjEqGAV9aTlN0M19fMjRzd2FwQjZ2MTUwMDdJUEZ2UHZFRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzVfRUU1dmFsdWVFdkU0dHlwZUVSUzVfUzhfAIxKIF9aTlN0M19fMjEyc3Ryc3RyZWFtYnVmNmZyZWV6ZUViAPteHV9aTlN0M19fMjEyc3Ryc3RyZWFtYnVmM3N0ckV2APxeIV9aTktTdDNfXzIxMnN0cnN0cmVhbWJ1ZjZwY291bnRFdgD9XiJfWk5TdDNfXzIxMnN0cnN0cmVhbWJ1ZjhvdmVyZmxvd0VpAP5eI19aTlN0M19fMjEyc3Ryc3RyZWFtYnVmOXBiYWNrZmFpbEVpAP9eI19aTlN0M19fMjEyc3Ryc3RyZWFtYnVmOXVuZGVyZmxvd0V2AIBfN19aTlN0M19fMjEyc3Ryc3RyZWFtYnVmN3NlZWtvZmZFeE5TXzhpb3NfYmFzZTdzZWVrZGlyRWoAgV8kX1pOU3QzX18yM21pbkI2djE1MDA3SVBjRUVSS1RfUzRfUzRfALhNOl9aTlN0M19fMjNtaW5CNnYxNTAwN0lQY05TXzZfX2xlc3NJUzFfUzFfRUVFRVJLVF9TNl9TNl9UMF8Auk05X1pOU3QzX18yMTJzdHJzdHJlYW1idWY3c2Vla3Bvc0VOU180ZnBvc0kxMV9fbWJzdGF0ZV90RUVqAIJfGV9aTlN0M19fMjEwaXN0cnN0cmVhbUQyRXYAg18ZX1pOU3QzX18yMTBpc3Ryc3RyZWFtRDFFdgCEXxhfWlRUTlN0M19fMjEwaXN0cnN0cmVhbUUD5gwhX1pUdjBfbjEyX05TdDNfXzIxMGlzdHJzdHJlYW1EMUV2AIVfGV9aTlN0M19fMjEwaXN0cnN0cmVhbUQwRXYAhl8hX1pUdjBfbjEyX05TdDNfXzIxMGlzdHJzdHJlYW1EMEV2AIdfGV9aTlN0M19fMjEwb3N0cnN0cmVhbUQyRXYAiF8ZX1pOU3QzX18yMTBvc3Ryc3RyZWFtRDFFdgCJXxhfWlRUTlN0M19fMjEwb3N0cnN0cmVhbUUD5QwhX1pUdjBfbjEyX05TdDNfXzIxMG9zdHJzdHJlYW1EMUV2AIpfGV9aTlN0M19fMjEwb3N0cnN0cmVhbUQwRXYAi18hX1pUdjBfbjEyX05TdDNfXzIxMG9zdHJzdHJlYW1EMEV2AIxfF19aTlN0M19fMjlzdHJzdHJlYW1EMkV2AI1fF19aTlN0M19fMjlzdHJzdHJlYW1EMUV2AI5fFl9aVFROU3QzX18yOXN0cnN0cmVhbUUD5AwcX1pUaG44X05TdDNfXzI5c3Ryc3RyZWFtRDFFdgCPXx9fWlR2MF9uMTJfTlN0M19fMjlzdHJzdHJlYW1EMUV2AJBfF19aTlN0M19fMjlzdHJzdHJlYW1EMEV2AJFfHF9aVGhuOF9OU3QzX18yOXN0cnN0cmVhbUQwRXYAkl8fX1pUdjBfbjEyX05TdDNfXzI5c3Ryc3RyZWFtRDBFdgCTXxpfWlRJTlN0M19fMjEyc3Ryc3RyZWFtYnVmRQPjDBhfWlRWTlN0M19fMjEwaXN0cnN0cmVhbUUD4gwYX1pUSU5TdDNfXzIxMGlzdHJzdHJlYW1FA+EMRF9aVENOU3QzX18yMTBpc3Ryc3RyZWFtRTBfTlNfMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA+AMGF9aVFZOU3QzX18yMTBvc3Ryc3RyZWFtRQPfDBhfWlRJTlN0M19fMjEwb3N0cnN0cmVhbUUD3gxEX1pUQ05TdDNfXzIxMG9zdHJzdHJlYW1FMF9OU18xM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUD3QwWX1pUVk5TdDNfXzI5c3Ryc3RyZWFtRQPcDBZfWlRJTlN0M19fMjlzdHJzdHJlYW1FA9sMQ19aVENOU3QzX18yOXN0cnN0cmVhbUUwX05TXzE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUD2gxCX1pUQ05TdDNfXzI5c3Ryc3RyZWFtRTBfTlNfMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFA9kMQl9aVENOU3QzX18yOXN0cnN0cmVhbUU4X05TXzEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQPYDBpfWlRTTlN0M19fMjEyc3Ryc3RyZWFtYnVmRQPXDBhfWlRTTlN0M19fMjEwaXN0cnN0cmVhbUUD1gwYX1pUU05TdDNfXzIxMG9zdHJzdHJlYW1FA9UMFl9aVFNOU3QzX18yOXN0cnN0cmVhbUUD1AwbX1pOU3QzX18yMTJzdHJzdHJlYW1idWZDMUVsAPNeJ19aTlN0M19fMjEyc3Ryc3RyZWFtYnVmQzFFUEZQdm1FUEZ2UzFfRQD0XiBfWk5TdDNfXzIxMnN0cnN0cmVhbWJ1ZkMxRVBjbFMxXwD2Xh5fWk5TdDNfXzIxMnN0cnN0cmVhbWJ1ZkMxRVBLY2wA914gX1pOU3QzX18yMTJzdHJzdHJlYW1idWZDMUVQYWxTMV8A9l4eX1pOU3QzX18yMTJzdHJzdHJlYW1idWZDMUVQS2FsAPdeIF9aTlN0M19fMjEyc3Ryc3RyZWFtYnVmQzFFUGhsUzFfAPZeHl9aTlN0M19fMjEyc3Ryc3RyZWFtYnVmQzFFUEtobAD3Xh1fWk5TdDNfXzIxNGVycm9yX2NhdGVnb3J5RDBFdgDITC5fWk5TdDNfXzJlcUI2djE1MDA3RVJLTlNfMTVlcnJvcl9jb25kaXRpb25FUzJfAJZfKl9aTktTdDNfXzIxNGVycm9yX2NhdGVnb3J5ZXFCNnYxNTAwN0VSS1MwXwDYECtfWk5LU3QzX18yMjRfX2dlbmVyaWNfZXJyb3JfY2F0ZWdvcnk0bmFtZUV2AJlfLl9aTktTdDNfXzIyNF9fZ2VuZXJpY19lcnJvcl9jYXRlZ29yeTdtZXNzYWdlRWkAml8qX1pOS1N0M19fMjIzX19zeXN0ZW1fZXJyb3JfY2F0ZWdvcnk0bmFtZUV2AJxfLV9aTktTdDNfXzIyM19fc3lzdGVtX2Vycm9yX2NhdGVnb3J5N21lc3NhZ2VFaQCaXz5fWk5LU3QzX18yMjNfX3N5c3RlbV9lcnJvcl9jYXRlZ29yeTIzZGVmYXVsdF9lcnJvcl9jb25kaXRpb25FaQCdXyVfWk5LU3QzX18yMTVlcnJvcl9jb25kaXRpb243bWVzc2FnZUV2AJ9fa19aTlN0M19fMjEyc3lzdGVtX2Vycm9yNl9faW5pdEVSS05TXzEwZXJyb3JfY29kZUVOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAKBfGl9aVFZOU3QzX18yMTJzeXN0ZW1fZXJyb3JFA9MMKl9aTlN0M19fMjEyc3lzdGVtX2Vycm9yQzJFTlNfMTBlcnJvcl9jb2RlRQCjX21fWk5TdDNfXzIxMnN5c3RlbV9lcnJvckMyRWlSS05TXzE0ZXJyb3JfY2F0ZWdvcnlFUktOU18xMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAKRfNF9aTlN0M19fMjEyc3lzdGVtX2Vycm9yQzJFaVJLTlNfMTRlcnJvcl9jYXRlZ29yeUVQS2MApV8xX1pOU3QzX18yMTJzeXN0ZW1fZXJyb3JDMkVpUktOU18xNGVycm9yX2NhdGVnb3J5RQCmXxtfWk5TdDNfXzIxMnN5c3RlbV9lcnJvckQwRXYAuU8bX1pOU3QzX18yMTJzeXN0ZW1fZXJyb3JEMUV2ALhPLV9aTlN0M19fMjEyc3lzdGVtX2Vycm9yQzFFTlNfMTBlcnJvcl9jb2RlRVBLYwCiXxtfWk5TdDNfXzIxMl9fZG9fbWVzc2FnZUQwRXYAyEwnX1pOU3QzX18yMjRfX2dlbmVyaWNfZXJyb3JfY2F0ZWdvcnlEMEV2AOJAJl9aTlN0M19fMjIzX19zeXN0ZW1fZXJyb3JfY2F0ZWdvcnlEMEV2AOJAJl9aVFZOU3QzX18yMjRfX2dlbmVyaWNfZXJyb3JfY2F0ZWdvcnlFA9IMJl9aVElOU3QzX18yMjRfX2dlbmVyaWNfZXJyb3JfY2F0ZWdvcnlFA9EMJV9aVFZOU3QzX18yMjNfX3N5c3RlbV9lcnJvcl9jYXRlZ29yeUUD0AwlX1pUSU5TdDNfXzIyM19fc3lzdGVtX2Vycm9yX2NhdGVnb3J5RQPPDBpfWlRTTlN0M19fMjEyc3lzdGVtX2Vycm9yRQPODBxfWlRWTlN0M19fMjE0ZXJyb3JfY2F0ZWdvcnlFA80MHF9aVElOU3QzX18yMTRlcnJvcl9jYXRlZ29yeUUDzAwdX1pOU3QzX18yMTRlcnJvcl9jYXRlZ29yeUQxRXYA2TAcX1pUU05TdDNfXzIxNGVycm9yX2NhdGVnb3J5RQPLDBpfWlRWTlN0M19fMjEyX19kb19tZXNzYWdlRQPKDBpfWlRTTlN0M19fMjEyX19kb19tZXNzYWdlRQPJDCZfWlRTTlN0M19fMjI0X19nZW5lcmljX2Vycm9yX2NhdGVnb3J5RQPIDCVfWlRTTlN0M19fMjIzX19zeXN0ZW1fZXJyb3JfY2F0ZWdvcnlFA8cMZl9aTlN0M19fMjEyc3lzdGVtX2Vycm9yQzFFTlNfMTBlcnJvcl9jb2RlRVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQChXypfWk5TdDNfXzIxMnN5c3RlbV9lcnJvckMxRU5TXzEwZXJyb3JfY29kZUUAo19tX1pOU3QzX18yMTJzeXN0ZW1fZXJyb3JDMUVpUktOU18xNGVycm9yX2NhdGVnb3J5RVJLTlNfMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQCkXzRfWk5TdDNfXzIxMnN5c3RlbV9lcnJvckMxRWlSS05TXzE0ZXJyb3JfY2F0ZWdvcnlFUEtjAKVfMV9aTlN0M19fMjEyc3lzdGVtX2Vycm9yQzFFaVJLTlNfMTRlcnJvcl9jYXRlZ29yeUUApl8UX1pOU3QzX18yNnRocmVhZEQyRXYAqF8tX1pOU3QzX18yMjJfX2xpYmNwcF90aHJlYWRfaXNudWxsQjZ2MTUwMDdFUEttAPRQF19aTlN0M19fMjZ0aHJlYWQ0am9pbkV2AKlfKl9aTlN0M19fMjIwX19saWJjcHBfdGhyZWFkX2pvaW5CNnYxNTAwN0VQbQCqXxlfWk5TdDNfXzI2dGhyZWFkNmRldGFjaEV2AKtfLF9aTlN0M19fMjIyX19saWJjcHBfdGhyZWFkX2RldGFjaEI2djE1MDA3RVBtAKxfKF9aTlN0M19fMjZ0aHJlYWQyMGhhcmR3YXJlX2NvbmN1cnJlbmN5RXYArV9XX1pOU3QzX18yMTF0aGlzX3RocmVhZDlzbGVlcF9mb3JFUktOU182Y2hyb25vOGR1cmF0aW9uSXhOU181cmF0aW9JTHgxRUx4MTAwMDAwMDAwMEVFRUVFAK5fO19aTlN0M19fMjIxX190aHJlYWRfc3BlY2lmaWNfcHRySU5TXzE1X190aHJlYWRfc3RydWN0RUVDMkV2ALBfTF9aTlN0M19fMjIxX190aHJlYWRfc3BlY2lmaWNfcHRySU5TXzE1X190aHJlYWRfc3RydWN0RUUxNl9fYXRfdGhyZWFkX2V4aXRFUHYAsV8vX1pOU3QzX18yMTlfX2xpYmNwcF90bHNfY3JlYXRlQjZ2MTUwMDdFUGpQRnZQdkUAsl8iX1pOU3QzX18yMTlfX3RocmVhZF9zdHJ1Y3RfaW1wRDJFdgCzX25fWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFNWJlZ2luQjZ2MTUwMDdFdgDGW2xfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFM2VuZEI2djE1MDA3RXYAxVthX1pOU3QzX18ybmVCNnYxNTAwN0lQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRWJSS05TXzExX193cmFwX2l0ZXJJVF9FRVNDXwDHT1dfWk5TdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTViZWdpbkI2djE1MDA3RXYAxltVX1pOU3QzX18yNnZlY3RvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUUzZW5kQjZ2MTUwMDdFdgDFW0pfWk5TdDNfXzJuZUI2djE1MDA3SVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFRWJSS05TXzExX193cmFwX2l0ZXJJVF9FRVM4XwDHTz5fWk5LU3QzX18yMTFfX3dyYXBfaXRlcklQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRWRlQjZ2MTUwMDdFdgDdHT1fWk5TdDNfXzIxMV9fd3JhcF9pdGVySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFcHBCNnYxNTAwN0V2AIpPVV9aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVwdEI2djE1MDA3RXYA3R1UX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFcHBCNnYxNTAwN0V2ALRfal9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUVEMkI2djE1MDA3RXYAtV9TX1pOU3QzX18yNnZlY3RvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUVEMkI2djE1MDA3RXYAtl9ZX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFQzJCNnYxNTAwN0VQS3ZTN18A+1NhX1pOU3QzX18yZXFCNnYxNTAwN0lQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRWJSS05TXzExX193cmFwX2l0ZXJJVF9FRVNDXwCrT1dfWk5TdDNfXzIxMl9fdG9fYWRkcmVzc0I2djE1MDA3SU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUVQVF9TOF8A2TBCX1pOU3QzX18yMTFfX3dyYXBfaXRlcklQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUMyQjZ2MTUwMDdFUEt2UzNfAPtTSl9aTlN0M19fMmVxQjZ2MTUwMDdJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVFYlJLTlNfMTFfX3dyYXBfaXRlcklUX0VFUzhfAKtPd19aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUUxNl9fZGVzdHJveV92ZWN0b3JDMkVSUzlfALxLfF9aTlN0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUUxNl9fZGVzdHJveV92ZWN0b3JjbEI2djE1MDA3RXYAt19gX1pOU3QzX18yNnZlY3RvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUUxNl9fZGVzdHJveV92ZWN0b3JDMkVSUzVfALxLZV9aTlN0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMTZfX2Rlc3Ryb3lfdmVjdG9yY2xCNnYxNTAwN0V2ALhfXl9aTlN0M19fMjE5X190aHJlYWRfc3RydWN0X2ltcDI1bm90aWZ5X2FsbF9hdF90aHJlYWRfZXhpdEVQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEUAuV9VX1pOU3QzX18yNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUMyQjZ2MTUwMDdJUlMyX1JTNF9MUHYwRUVFT1RfT1QwXwDyS3VfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFOXB1c2hfYmFja0I2djE1MDA3RU9TNl8Aul9yX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKNZjAFfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFMjJfX2NvbnN0cnVjdF9vbmVfYXRfZW5kQjZ2MTUwMDdJSlM2X0VFRXZEcE9UXwC7X39fWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFMjFfX3B1c2hfYmFja19zbG93X3BhdGhJUzZfRUV2T1RfALxfVF9aTlN0M19fMjE5X190aHJlYWRfc3RydWN0X2ltcDI3X19tYWtlX3JlYWR5X2F0X3RocmVhZF9leGl0RVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRQC9X19fWk5TdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTlwdXNoX2JhY2tCNnYxNTAwN0VSS1MyXwC+X1tfWk5TdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKNZd19aTlN0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMjJfX2NvbnN0cnVjdF9vbmVfYXRfZW5kQjZ2MTUwMDdJSlJLUzJfRUVFdkRwT1RfAL9fal9aTlN0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMjFfX3B1c2hfYmFja19zbG93X3BhdGhJUktTMl9FRXZPVF8AwF8eX1pOU3QzX18yMTVfX3RocmVhZF9zdHJ1Y3RDMkV2AMFfIl9aTlN0M19fMjE5X190aHJlYWRfc3RydWN0X2ltcEMyRXYAwl9TX1pOU3QzX18yNnZlY3RvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUVDMkI2djE1MDA3RXYAw19qX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRUMyQjZ2MTUwMDdFdgDEXx5fWk5TdDNfXzIxNV9fdGhyZWFkX3N0cnVjdEQyRXYAxV8iX1pOU3QzX18yMTlfX3RocmVhZF9zdHJ1Y3RfaW1wRDFFdgCzX1hfWk5LU3QzX18yMTFfX3dyYXBfaXRlcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFNGJhc2VCNnYxNTAwN0V2AN0dQV9aTktTdDNfXzIxMV9fd3JhcF9pdGVySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFNGJhc2VCNnYxNTAwN0V2AN0dfF9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFMTdfX2Fubm90YXRlX2RlbGV0ZUI2djE1MDA3RXYAq1yFAV9aTlN0M19fMjE4X19kZWJ1Z19kYl9lcmFzZV9jQjZ2MTUwMDdJTlNfNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM3X0VFRUVFRXZQVF8AkSlwX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTdfX2NsZWFyQjZ2MTUwMDdFdgDIX3BfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFN19fYWxsb2NCNnYxNTAwN0V2AKNZcl9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFOGNhcGFjaXR5QjZ2MTUwMDdFdgCpXIQBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUVFMTBkZWFsbG9jYXRlQjZ2MTUwMDdFUlM4X1BTN19tAIgRbl9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFNGRhdGFCNnYxNTAwN0V2AN0dbl9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFNHNpemVCNnYxNTAwN0V2AKNclQFfWk5LU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTMxX19hbm5vdGF0ZV9jb250aWd1b3VzX2NvbnRhaW5lckI2djE1MDA3RVBLdlNCX1NCX1NCXwCrWYMBX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTIyX19iYXNlX2Rlc3RydWN0X2F0X2VuZEI2djE1MDA3RVBTNl8AyV9gX1pOU3QzX18yMThfX2hpZGRlbl9hbGxvY2F0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFMTBkZWFsbG9jYXRlRVBTNl9tAIgRfF9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFNnNlY29uZEI2djE1MDA3RXYA2TBzX1pOS1N0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCjWYYBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUVFN2Rlc3Ryb3lCNnYxNTAwN0lTN192dkVFdlJTOF9QVF8AkRFXX1pOU3QzX18yMTBkZXN0cm95X2F0QjZ2MTUwMDdJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVMaTBFRUV2UFRfAJEpWV9aTlN0M19fMjEyX19kZXN0cm95X2F0QjZ2MTUwMDdJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVMaTBFRUV2UFRfAJEphAFfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRUxpMUVMYjFFRTVfX2dldEI2djE1MDA3RXYA2TB8X1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMGxfWk5LU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBlX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMTdfX2Fubm90YXRlX2RlbGV0ZUI2djE1MDA3RXYArFluX1pOU3QzX18yMThfX2RlYnVnX2RiX2VyYXNlX2NCNnYxNTAwN0lOU182dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMzX0VFRUVFRXZQVF8AkSlZX1pOU3QzX18yNnZlY3RvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU3X19jbGVhckI2djE1MDA3RXYAyl9ZX1pOU3QzX18yNnZlY3RvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU3X19hbGxvY0I2djE1MDA3RXYAo1lbX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFOGNhcGFjaXR5QjZ2MTUwMDdFdgCqWW1fWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVFMTBkZWFsbG9jYXRlQjZ2MTUwMDdFUlM0X1BTM19tAIgRV19aTktTdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTRkYXRhQjZ2MTUwMDdFdgDdHVdfWk5LU3QzX18yNnZlY3RvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU0c2l6ZUI2djE1MDA3RXYA+FV+X1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMzFfX2Fubm90YXRlX2NvbnRpZ3VvdXNfY29udGFpbmVyQjZ2MTUwMDdFUEt2UzdfUzdfUzdfAKtZbF9aTlN0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMjJfX2Jhc2VfZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFMyXwDLX0lfWk5TdDNfXzIxOF9faGlkZGVuX2FsbG9jYXRvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFMTBkZWFsbG9jYXRlRVBTMl9tAIgRZV9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTZzZWNvbmRCNnYxNTAwN0V2ANkwXF9aTktTdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTlfX2VuZF9jYXBCNnYxNTAwN0V2AKNZQF9aTlN0M19fMjEyX190b19hZGRyZXNzQjZ2MTUwMDdJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVQVF9TNF8A2TBvX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVFRTdkZXN0cm95QjZ2MTUwMDdJUzNfdnZFRXZSUzRfUFRfAJERQF9aTlN0M19fMjEwZGVzdHJveV9hdEI2djE1MDA3SVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUxpMEVFRXZQVF8AkSlCX1pOU3QzX18yMTJfX2Rlc3Ryb3lfYXRCNnYxNTAwN0lQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVMaTBFRUV2UFRfAJEpbV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xOF9faGlkZGVuX2FsbG9jYXRvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFRUxpMUVMYjFFRTVfX2dldEI2djE1MDA3RXYA2TBlX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTVmaXJzdEI2djE1MDA3RXYA2TBVX1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMHtfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTVmaXJzdEI2djE1MDA3RXYA2TB9X1pOU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTIxX0NvbnN0cnVjdFRyYW5zYWN0aW9uQzJFUlM5X20AoVyTAV9aTlN0M19fMjE2YWxsb2NhdG9yX3RyYWl0c0lOU18xOF9faGlkZGVuX2FsbG9jYXRvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFRTljb25zdHJ1Y3RCNnYxNTAwN0lTN19KUzdfRXZ2RUV2UlM4X1BUX0RwT1QwXwCiXHlfWk5TdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFMjFfQ29uc3RydWN0VHJhbnNhY3Rpb25EMkV2AKdZdl9aTktTdDNfXzI2dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFMTFfX3JlY29tbWVuZEI2djE1MDA3RW0ApFxwX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUVDMkVtbVM5XwDMX5kBX1pOU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTI2X19zd2FwX291dF9jaXJjdWxhcl9idWZmZXJFUk5TXzE0X19zcGxpdF9idWZmZXJJUzZfUlM4X0VFAM1fbF9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFRDJFdgDOX2tfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTGkwRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDZMGZfWk5TdDNfXzIxMmNvbnN0cnVjdF9hdEI2djE1MDA3SU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFSlM2X0VQUzZfRUVQVF9TOV9EcE9UMF8Alk9qX1pOS1N0M19fMjZ2ZWN0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUU4bWF4X3NpemVFdgCoXH9fWk5LU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTIwX190aHJvd19sZW5ndGhfZXJyb3JCNnYxNTAwN0V2AKBZhQFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUVDMkI2djE1MDA3SURuU0FfRUVPVF9PVDBfAIFPel9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFN19fYWxsb2NCNnYxNTAwN0V2AIJPtAFfWk5TdDNfXzIxOV9fYWxsb2NhdGVfYXRfbGVhc3RCNnYxNTAwN0lOU18xOF9faGlkZGVuX2FsbG9jYXRvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFRUVOU18xOV9fYWxsb2NhdGlvbl9yZXN1bHRJTlNfMTZhbGxvY2F0b3JfdHJhaXRzSVRfRTdwb2ludGVyRUVFUlNCX20Az198X1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCgTltfWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUMyQjZ2MTUwMDdFUzdfALxLugFfWk5TdDNfXzI0Ml9fdW5pbml0aWFsaXplZF9hbGxvY2F0b3JfbW92ZV9pZl9ub2V4Y2VwdEI2djE1MDA3SU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUVOU18xNnJldmVyc2VfaXRlcmF0b3JJUFM3X0VFU0JfU0JfRUVUMl9SVF9UMF9UMV9TQ18A0F9dX1pOS1N0M19fMjE2cmV2ZXJzZV9pdGVyYXRvcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFNGJhc2VCNnYxNTAwN0V2AN0dsAFfWk5TdDNfXzI0c3dhcEI2djE1MDA3SVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFTlNfOWVuYWJsZV9pZklYYWFzcjIxaXNfbW92ZV9jb25zdHJ1Y3RpYmxlSVRfRUU1dmFsdWVzcjE4aXNfbW92ZV9hc3NpZ25hYmxlSVM5X0VFNXZhbHVlRXZFNHR5cGVFUlM5X1NDXwCMSnlfWk5LU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTE0X19hbm5vdGF0ZV9uZXdCNnYxNTAwN0VtAKxcjAFfWk5TdDNfXzIyNV9fZGVidWdfZGJfaW52YWxpZGF0ZV9hbGxCNnYxNTAwN0lOU182dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzdfRUVFRUVFdlBUXwCRKXhfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFUk5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTVjbGVhckI2djE1MDA3RXYA0V98X1pOS1N0M19fMjE0X19zcGxpdF9idWZmZXJJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFOGNhcGFjaXR5QjZ2MTUwMDdFdgCuXHFfWk5LU3QzX18yNnZlY3RvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVM2X0VFRTdfX2FsbG9jQjZ2MTUwMDdFdgCjWYQBX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUVFOG1heF9zaXplQjZ2MTUwMDdJUzhfdkVFbVJLUzhfALBcWl9aTktTdDNfXzIxOF9faGlkZGVuX2FsbG9jYXRvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUU4bWF4X3NpemVFdgCwXH1fWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUU2c2Vjb25kQjZ2MTUwMDdFdgDZMIUBX1pOS1N0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xOF9faGlkZGVuX2FsbG9jYXRvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFTGkxRUxiMUVFNV9fZ2V0QjZ2MTUwMDdFdgDZMG5fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTGkwRUxiMEVFQzJCNnYxNTAwN0lEbnZFRU9UXwDTTokBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFTGkxRUxiMEVFQzJCNnYxNTAwN0lTOV92RUVPVF8AvEtZX1pOU3QzX18yMThfX2hpZGRlbl9hbGxvY2F0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFOGFsbG9jYXRlRW0A0l99X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFNnNlY29uZEI2djE1MDA3RXYAjk98X1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMIUBX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFTGkxRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDdHXJfWk5TdDNfXzJuZUI2djE1MDA3SVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRVM3X0VFYlJLTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVRfRUVSS05TOF9JVDBfRUUAtlm6AV9aTlN0M19fMjEyX190b19hZGRyZXNzQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFdkVFTlNfNWRlY2F5SURUY2xzcjE5X190b19hZGRyZXNzX2hlbHBlcklUX0VFNl9fY2FsbGNsN2RlY2x2YWxJUktTQl9FRUVFRTR0eXBlRVNEXwDTX1pfWk5LU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVkZUI2djE1MDA3RXYA1F9ZX1pOU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVwcEI2djE1MDA3RXYAx1ulAV9aTlN0M19fMjI5X0FsbG9jYXRvckRlc3Ryb3lSYW5nZVJldmVyc2VJTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUzdfRUVFQzJCNnYxNTAwN0VSUzhfUlNCX1NFXwDSTJwBX1pOS1N0M19fMjI5X0FsbG9jYXRvckRlc3Ryb3lSYW5nZVJldmVyc2VJTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUzdfRUVFY2xCNnYxNTAwN0V2ANVffl9aTlN0M19fMjE5X190b19hZGRyZXNzX2hlbHBlcklOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUV2RTZfX2NhbGxCNnYxNTAwN0VSS1M5XwDWX2JfWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJTlMwX0lQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRUVDMkI2djE1MDA3RVM4XwC8S6IBX1pOU3QzX18yMTlfX2FsbG9jYXRvcl9kZXN0cm95QjZ2MTUwMDdJTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklOUzlfSVBTN19FRUVFU0NfRUV2UlRfVDBfVDFfANdfWl9aTktTdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRXB0QjZ2MTUwMDdFdgDYX7kBX1pOU3QzX18yNHByZXZCNnYxNTAwN0lQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRU5TXzllbmFibGVfaWZJWHNyMjVfX2lzX2NwcDE3X2lucHV0X2l0ZXJhdG9ySVRfRUU1dmFsdWVFUzlfRTR0eXBlRVM5X05TXzE1aXRlcmF0b3JfdHJhaXRzSVM5X0UxNWRpZmZlcmVuY2VfdHlwZUUA2V9WX1pOU3QzX18yN2FkdmFuY2VCNnYxNTAwN0lQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVsbHZFRXZSVF9UMF8Ah0ydAV9aTlN0M19fMjlfX2FkdmFuY2VCNnYxNTAwN0lQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRXZSVF9OU18xNWl0ZXJhdG9yX3RyYWl0c0lTOF9FMTVkaWZmZXJlbmNlX3R5cGVFTlNfMjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0UAiUx5X1pOU3QzX18ybmVCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUVTOV9FRWJSS05TMV9JVF9FRVJLTlMxX0lUMF9FRQDOXMEBX1pOU3QzX18yMTJfX3RvX2FkZHJlc3NCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJTlMxX0lQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRUVFdkVFTlNfNWRlY2F5SURUY2xzcjE5X190b19hZGRyZXNzX2hlbHBlcklUX0VFNl9fY2FsbGNsN2RlY2x2YWxJUktTQ19FRUVFRTR0eXBlRVNFXwDaX2BfWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJTlMwX0lQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRUVwcEI2djE1MDA3RXYA219kX1pOS1N0M19fMjE2cmV2ZXJzZV9pdGVyYXRvcklOUzBfSVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFRTRiYXNlQjZ2MTUwMDdFdgDdHYUBX1pOU3QzX18yMTlfX3RvX2FkZHJlc3NfaGVscGVySU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklOUzFfSVBOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFRUV2RTZfX2NhbGxCNnYxNTAwN0VSS1NBXwDcX1lfWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRW1tQjZ2MTUwMDdFdgC0X2FfWk5LU3QzX18yMTZyZXZlcnNlX2l0ZXJhdG9ySU5TMF9JUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRUVFcHRCNnYxNTAwN0V2AN1f0QFfWk5TdDNfXzI0cHJldkI2djE1MDA3SU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRUVFTlNfOWVuYWJsZV9pZklYc3IyNV9faXNfY3BwMTdfaW5wdXRfaXRlcmF0b3JJVF9FRTV2YWx1ZUVTQl9FNHR5cGVFU0JfTlNfMTVpdGVyYXRvcl90cmFpdHNJU0JfRTE1ZGlmZmVyZW5jZV90eXBlRQDeX25fWk5TdDNfXzI3YWR2YW5jZUI2djE1MDA3SU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRWxsdkVFdlJUX1QwXwDfX7UBX1pOU3QzX18yOV9fYWR2YW5jZUI2djE1MDA3SU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVFRUVFdlJUX05TXzE1aXRlcmF0b3JfdHJhaXRzSVNBX0UxNWRpZmZlcmVuY2VfdHlwZUVOU18yNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRQDgX1lfWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUE5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFRXBMQjZ2MTUwMDdFbADhX4gBX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUUxN19fZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFM2XwDiX31fWk5LU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCgTqYBX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUUxN19fZGVzdHJ1Y3RfYXRfZW5kQjZ2MTUwMDdFUFM2X05TXzE3aW50ZWdyYWxfY29uc3RhbnRJYkxiMEVFRQDjX31fWk5LU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzZfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMGRfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU1Zmlyc3RCNnYxNTAwN0V2ANkwZl9aTlN0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMjFfQ29uc3RydWN0VHJhbnNhY3Rpb25DMkVSUzVfbQClWX5fWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVFOWNvbnN0cnVjdEI2djE1MDA3SVMzX0pSS1MzX0V2dkVFdlJTNF9QVF9EcE9UMF8A/k5iX1pOU3QzX18yNnZlY3RvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUUyMV9Db25zdHJ1Y3RUcmFuc2FjdGlvbkQyRXYAp1lfX1pOS1N0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMTFfX3JlY29tbWVuZEI2djE1MDA3RW0A5F9ZX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFQzJFbW1TNV8A5V+CAV9aTlN0M19fMjZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMjZfX3N3YXBfb3V0X2NpcmN1bGFyX2J1ZmZlckVSTlNfMTRfX3NwbGl0X2J1ZmZlcklTMl9SUzRfRUUA5l9VX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFRDJFdgDnX1RfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUxpMEVMYjBFRTVfX2dldEI2djE1MDA3RXYA2TBRX1pOU3QzX18yMTJjb25zdHJ1Y3RfYXRCNnYxNTAwN0lQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVKUktTMl9FUFMyX0VFUFRfUzdfRHBPVDBfALlLU19aTktTdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRThtYXhfc2l6ZUV2AOhfaF9aTktTdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTIwX190aHJvd19sZW5ndGhfZXJyb3JCNnYxNTAwN0V2AKBZbl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUVDMkI2djE1MDA3SURuUzZfRUVPVF9PVDBfAIFPY19aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFUk5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTdfX2FsbG9jQjZ2MTUwMDdFdgCCT50BX1pOU3QzX18yMTlfX2FsbG9jYXRlX2F0X2xlYXN0QjZ2MTUwMDdJTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVFRU5TXzE5X19hbGxvY2F0aW9uX3Jlc3VsdElOU18xNmFsbG9jYXRvcl90cmFpdHNJVF9FN3BvaW50ZXJFRUVSUzdfbQDpX2VfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCgTkRfWk5TdDNfXzIxNnJldmVyc2VfaXRlcmF0b3JJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVDMkI2djE1MDA3RVMzXwC8S6QBX1pOU3QzX18yNDJfX3VuaW5pdGlhbGl6ZWRfYWxsb2NhdG9yX21vdmVfaWZfbm9leGNlcHRCNnYxNTAwN0lOU18xOF9faGlkZGVuX2FsbG9jYXRvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFRU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUzNfRUVTN19TM192RUVUMV9SVF9UMF9TQl9TOF8AwFlGX1pOS1N0M19fMjE2cmV2ZXJzZV9pdGVyYXRvcklQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRTRiYXNlQjZ2MTUwMDdFdgDdHZkBX1pOU3QzX18yNHN3YXBCNnYxNTAwN0lQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVOU185ZW5hYmxlX2lmSVhhYXNyMjFpc19tb3ZlX2NvbnN0cnVjdGlibGVJVF9FRTV2YWx1ZXNyMThpc19tb3ZlX2Fzc2lnbmFibGVJUzVfRUU1dmFsdWVFdkU0dHlwZUVSUzVfUzhfAIxKYl9aTktTdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTE0X19hbm5vdGF0ZV9uZXdCNnYxNTAwN0VtAKRZdV9aTlN0M19fMjI1X19kZWJ1Z19kYl9pbnZhbGlkYXRlX2FsbEI2djE1MDA3SU5TXzZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzNfRUVFRUVFdlBUXwCRKWFfWk5TdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU1Y2xlYXJCNnYxNTAwN0V2AOpfZV9aTktTdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU4Y2FwYWNpdHlCNnYxNTAwN0V2AOROWl9aTktTdDNfXzI2dmVjdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTdfX2FsbG9jQjZ2MTUwMDdFdgCjWW1fWk5TdDNfXzIxNmFsbG9jYXRvcl90cmFpdHNJTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVFOG1heF9zaXplQjZ2MTUwMDdJUzRfdkVFbVJLUzRfAJVPQ19aTktTdDNfXzIxOF9faGlkZGVuX2FsbG9jYXRvcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFOG1heF9zaXplRXYAlU9mX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTZzZWNvbmRCNnYxNTAwN0V2ANkwbl9aTktTdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVMaTFFTGIxRUU1X19nZXRCNnYxNTAwN0V2ANkwV19aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTGkwRUxiMEVFQzJCNnYxNTAwN0lEbnZFRU9UXwDTTnJfWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUk5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVFTGkxRUxiMEVFQzJCNnYxNTAwN0lTNV92RUVPVF8AvEtCX1pOU3QzX18yMThfX2hpZGRlbl9hbGxvY2F0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRThhbGxvY2F0ZUVtAOtfZl9aTlN0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU2c2Vjb25kQjZ2MTUwMDdFdgCOT2VfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFNWZpcnN0QjZ2MTUwMDdFdgDZMG5fWk5TdDNfXzIyMl9fY29tcHJlc3NlZF9wYWlyX2VsZW1JUk5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVFTGkxRUxiMEVFNV9fZ2V0QjZ2MTUwMDdFdgDdHVhfWk5TdDNfXzI0bW92ZUI2djE1MDA3SU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVTNV9FRVQwX1RfUzdfUzZfAMJZjQJfWk5TdDNfXzI2X19tb3ZlQjZ2MTUwMDdJTlNfMTdfQ2xhc3NpY0FsZ1BvbGljeUVOU18xNnJldmVyc2VfaXRlcmF0b3JJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVFUzZfUzZfRUVOU185ZW5hYmxlX2lmSVhhYWFhc3IyMWlzX2NvcHlfY29uc3RydWN0aWJsZUlUMF9FRTV2YWx1ZXNyMjFpc19jb3B5X2NvbnN0cnVjdGlibGVJVDFfRUU1dmFsdWVzcjIxaXNfY29weV9jb25zdHJ1Y3RpYmxlSVQyX0VFNXZhbHVlRU5TXzRwYWlySVM4X1NBX0VFRTR0eXBlRVM4X1M5X1NBXwDDWaYBX1pOU3QzX18yMTNfX3Vud3JhcF9pdGVyQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFRU5TXzE4X191bndyYXBfaXRlcl9pbXBsSVM1X0xiMEVFRUxpMEVFRURUY2xzclQwXzhfX3Vud3JhcGNsc3Izc3RkRTdkZWNsdmFsSVRfRUVFRVM5XwDZMJEBX1pOU3QzX18yMTFfX21vdmVfaW1wbEI2djE1MDA3SU5TXzE3X0NsYXNzaWNBbGdQb2xpY3lFUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVM0X0xpMEVFRU5TXzRwYWlySU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklUMF9FRU5TNl9JVDFfRUVFRVM4X1M4X1NBXwDEWYABX1pOU3QzX18yMTNfX3Jld3JhcF9pdGVyQjZ2MTUwMDdJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFRVM1X05TXzE4X191bndyYXBfaXRlcl9pbXBsSVM1X0xiMEVFRUVFVF9TOF9UMF8AkkqVAV9aTlN0M19fMjltYWtlX3BhaXJCNnYxNTAwN0lOU18xNnJldmVyc2VfaXRlcmF0b3JJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVFUzVfRUVOU180cGFpcklOU18xOF9fdW53cmFwX3JlZl9kZWNheUlUX0U0dHlwZUVOUzdfSVQwX0U0dHlwZUVFRU9TOF9PU0JfAPBLjgFfWk5TdDNfXzIxM19fdW53cmFwX2l0ZXJCNnYxNTAwN0lQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX3Vud3JhcF9pdGVyX2ltcGxJUzNfTGIxRUVFTGkwRUVFRFRjbHNyVDBfOF9fdW53cmFwY2xzcjNzdGRFN2RlY2x2YWxJVF9FRUVFUzdfANkwcF9aTlN0M19fMjExX19tb3ZlX2ltcGxCNnYxNTAwN0lOU18xN19DbGFzc2ljQWxnUG9saWN5RVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVMzX3ZFRU5TXzRwYWlySVBUMF9QVDFfRUVTNl9TNl9TOF8AjE9oX1pOU3QzX18yMTNfX3Jld3JhcF9pdGVyQjZ2MTUwMDdJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVMzX05TXzE4X191bndyYXBfaXRlcl9pbXBsSVMzX0xiMUVFRUVFVF9TNl9UMF8A70uWAV9aTlN0M19fMjltYWtlX3BhaXJCNnYxNTAwN0lSTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFRVM1X0VFTlNfNHBhaXJJTlNfMThfX3Vud3JhcF9yZWZfZGVjYXlJVF9FNHR5cGVFTlM4X0lUMF9FNHR5cGVFRUVPUzlfT1NDXwDwS2lfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElOU18xNnJldmVyc2VfaXRlcmF0b3JJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVFTGIwRUU4X191bndyYXBCNnYxNTAwN0VTNV8A2TBjX1pOU3QzX18yNHBhaXJJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFRVM1X0VDMkI2djE1MDA3SVM1X1M1X0xQdjBFRUVPVF9PVDBfAPJLbF9aTlN0M19fMjE4X191bndyYXBfaXRlcl9pbXBsSU5TXzE2cmV2ZXJzZV9pdGVyYXRvcklQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFRUVMYjBFRThfX3Jld3JhcEI2djE1MDA3RVM1X1M1XwCSSlFfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTGIxRUU4X191bndyYXBCNnYxNTAwN0VTM18A2TB9X1pOU3QzX18yOW1ha2VfcGFpckI2djE1MDA3SVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVTM19FRU5TXzRwYWlySU5TXzE4X191bndyYXBfcmVmX2RlY2F5SVRfRTR0eXBlRU5TNV9JVDBfRTR0eXBlRUVFT1M2X09TOV8A8EtkX1pOU3QzX18yNHBhaXJJTlNfMTZyZXZlcnNlX2l0ZXJhdG9ySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVFRVM1X0VDMkI2djE1MDA3SVJTNV9TNV9MUHYwRUVFT1RfT1QwXwDyS1RfWk5TdDNfXzIxOF9fdW53cmFwX2l0ZXJfaW1wbElQUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTGIxRUU4X19yZXdyYXBCNnYxNTAwN0VTM19TM18A9EtLX1pOU3QzX18yNHBhaXJJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVMzX0VDMkI2djE1MDA3SVMzX1MzX0xQdjBFRUVPVF9PVDBfAPJLcV9aTlN0M19fMjE0X19zcGxpdF9idWZmZXJJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFUk5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVMyX0VFRTE3X19kZXN0cnVjdF9hdF9lbmRCNnYxNTAwN0VQUzJfAOxfZl9aTktTdDNfXzIxNF9fc3BsaXRfYnVmZmVySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU5X19lbmRfY2FwQjZ2MTUwMDdFdgCgTo8BX1pOU3QzX18yMTRfX3NwbGl0X2J1ZmZlcklQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVSTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzJfRUVFMTdfX2Rlc3RydWN0X2F0X2VuZEI2djE1MDA3RVBTMl9OU18xN2ludGVncmFsX2NvbnN0YW50SWJMYjBFRUUA7V9mX1pOS1N0M19fMjE3X19jb21wcmVzc2VkX3BhaXJJUFBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRVJOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUU1Zmlyc3RCNnYxNTAwN0V2ANkwggFfWk5TdDNfXzIxN19fY29tcHJlc3NlZF9wYWlySVBQTlNfMTdfX2Fzc29jX3N1Yl9zdGF0ZUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTMl9FRUVDMkI2djE1MDA3SURuTlNfMThfX2RlZmF1bHRfaW5pdF90YWdFRUVPVF9PVDBfANJOb19aTlN0M19fMjE5X19kZWJ1Z19kYl9pbnNlcnRfY0I2djE1MDA3SU5TXzZ2ZWN0b3JJUE5TXzE3X19hc3NvY19zdWJfc3RhdGVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzNfRUVFRUVFdlBUXwCRKZkBX1pOU3QzX18yMTdfX2NvbXByZXNzZWRfcGFpcklQTlNfNHBhaXJJUE5TXzE4Y29uZGl0aW9uX3ZhcmlhYmxlRVBOU181bXV0ZXhFRUVOU18xOF9faGlkZGVuX2FsbG9jYXRvcklTNl9FRUVDMkI2djE1MDA3SURuTlNfMThfX2RlZmF1bHRfaW5pdF90YWdFRUVPVF9PVDBfANJOhgFfWk5TdDNfXzIxOV9fZGVidWdfZGJfaW5zZXJ0X2NCNnYxNTAwN0lOU182dmVjdG9ySU5TXzRwYWlySVBOU18xOGNvbmRpdGlvbl92YXJpYWJsZUVQTlNfNW11dGV4RUVFTlNfMThfX2hpZGRlbl9hbGxvY2F0b3JJUzdfRUVFRUVFdlBUXwCRKYABX1pOU3QzX18yMjJfX2NvbXByZXNzZWRfcGFpcl9lbGVtSU5TXzE4X19oaWRkZW5fYWxsb2NhdG9ySVBOU18xN19fYXNzb2Nfc3ViX3N0YXRlRUVFTGkxRUxiMUVFQzJCNnYxNTAwN0VOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0UA2TCXAV9aTlN0M19fMjIyX19jb21wcmVzc2VkX3BhaXJfZWxlbUlOU18xOF9faGlkZGVuX2FsbG9jYXRvcklOU180cGFpcklQTlNfMThjb25kaXRpb25fdmFyaWFibGVFUE5TXzVtdXRleEVFRUVFTGkxRUxiMUVFQzJCNnYxNTAwN0VOU18xOF9fZGVmYXVsdF9pbml0X3RhZ0UA2TAeX1pOU3QzX18yMTVfX3RocmVhZF9zdHJ1Y3REMUV2AMVfFF9aTlN0M19fMjZ0aHJlYWREMUV2AKhfH19aTlN0M19fMjE5cGllY2V3aXNlX2NvbnN0cnVjdEUDxgwfX1pOU3QzX18yOHZhbGFycmF5SW1FNnJlc2l6ZUVtbQDuXyVfWk5LU3QzX18yOHZhbGFycmF5SW1FNHNpemVCNnYxNTAwN0V2APhVJ19aTlN0M19fMjh2YWxhcnJheUltRTdfX2NsZWFyQjZ2MTUwMDdFbQDvXyJfWk5TdDNfXzI5YWxsb2NhdG9ySW1FQzJCNnYxNTAwN0V2ANkwKV9aTlN0M19fMjlhbGxvY2F0b3JJbUU4YWxsb2NhdGVCNnYxNTAwN0VtAJRPLl9aTlN0M19fMjlhbGxvY2F0b3JJbUUxMGRlYWxsb2NhdGVCNnYxNTAwN0VQbW0A6k4+X1pOU3QzX18yMTZfX25vbl90cml2aWFsX2lmSUxiMUVOU185YWxsb2NhdG9ySW1FRUVDMkI2djE1MDA3RXYA2TBNX1pOU3QzX18yMTZhbGxvY2F0b3JfdHJhaXRzSU5TXzlhbGxvY2F0b3JJbUVFRThtYXhfc2l6ZUI2djE1MDA3SVMyX3Z2RUVtUktTMl8AlU8ZX1pOU3QzX18yNmdzbGljZTZfX2luaXRFbQDwXyFfWk5TdDNfXzI4dmFsYXJyYXlJbUVDMkI2djE1MDA3RW0A8V8hX1pOU3QzX18yOHZhbGFycmF5SW1FRDJCNnYxNTAwN0V2APJfIV9aTlN0M19fMjh2YWxhcnJheUltRWl4QjZ2MTUwMDdFbQCbViFfWk5LU3QxOGJhZF92YXJpYW50X2FjY2VzczR3aGF0RXYA818dX1pOU3QxOGJhZF92YXJpYW50X2FjY2Vzc0QwRXYA4kAaX1pUVlN0MThiYWRfdmFyaWFudF9hY2Nlc3MDxQwaX1pUSVN0MThiYWRfdmFyaWFudF9hY2Nlc3MDxAwaX1pUU1N0MThiYWRfdmFyaWFudF9hY2Nlc3MDwwwmX1pOU3QzX18yMjJfX2xpYmNwcF92ZXJib3NlX2Fib3J0RVBLY3oA9F8OX19jeGFfYmFkX2Nhc3QAnVIQX19jeGFfYmFkX3R5cGVpZAD2XxVfWk5TdDEwYmFkX3R5cGVpZEQxRXYA2TASX1pUSVN0MTBiYWRfdHlwZWlkA8IMFV9aTlN0MTBiYWRfdHlwZWlkQzFFdgChYiBfX2N4YV90aHJvd19iYWRfYXJyYXlfbmV3X2xlbmd0aADdTRlfWlN0MTRzZXRfdW5leHBlY3RlZFBGdnZFAPdfGF9fY3hhX3VuZXhwZWN0ZWRfaGFuZGxlcgPBDBhfWlN0MTNzZXRfdGVybWluYXRlUEZ2dkUA+F8XX19jeGFfdGVybWluYXRlX2hhbmRsZXIDwAwaX1pTdDE1c2V0X25ld19oYW5kbGVyUEZ2dkUA+V8RX19jeGFfbmV3X2hhbmRsZXIDvwwOX19jeGFfZGVtYW5nbGUA+l8UX19neHhfcGVyc29uYWxpdHlfdjAA5WElX190aHJvd25fb2JqZWN0X2Zyb21fdW53aW5kX2V4Y2VwdGlvbgDmYRdfX2dldF9leGNlcHRpb25fbWVzc2FnZQDoYSFfX2dldF9leGNlcHRpb25fdGVybWluYXRlX21lc3NhZ2UA6mETX19jeGFfZ3VhcmRfYWNxdWlyZQDtYRNfX2N4YV9ndWFyZF9yZWxlYXNlAO9hEV9fY3hhX2d1YXJkX2Fib3J0APBhFV9aU3QxNGdldF91bmV4cGVjdGVkdgDxYRRfWlN0MTNnZXRfdGVybWluYXRldgDzYRFfWlN0MTB1bmV4cGVjdGVkdgD0YRNfX2N4YV90aHJlYWRfYXRleGl0APZhFV9fY3hhX2RlbGV0ZWRfdmlydHVhbAD7YRNfWk5TdDl0eXBlX2luZm9EMkV2ANkwJV9aVElOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UDvgwkX1pUSU4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FA70MDl9fZHluYW1pY19jYXN0AP9hJV9aVElOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UDvAwGX1pUSURuA7sMJ19aVElOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQO6DAVfWlRJdgO5DChfWlRJTjEwX19jeHhhYml2MTIwX19mdW5jdGlvbl90eXBlX2luZm9FA7gMMV9aVElOMTBfX2N4eGFiaXYxMjlfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mb0UDtwwPX19jeGFfY2FuX2NhdGNoAJRiFV9fY3hhX2lzX3BvaW50ZXJfdHlwZQCVYiRfWlRTTjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UDtgwQX1pUSVN0OXR5cGVfaW5mbwO1DCVfWlRTTjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FA7QMJV9aVFNOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0UDswwnX1pUU04xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FA7IMKF9aVFNOMTBfX2N4eGFiaXYxMjBfX2Z1bmN0aW9uX3R5cGVfaW5mb0UDsQwxX1pUU04xMF9fY3h4YWJpdjEyOV9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvRQOwDCRfWlRWTjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UDrwwrX1pUVk4xMF9fY3h4YWJpdjEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRQOuDCtfWlRJTjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FA60MK19aVFNOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UDrAwFX1pUU3YDqwwGX1pUU1B2A6oMBl9aVElQdgOpDCdfWlRWTjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UDqAwHX1pUU1BLdgOnDAdfWlRJUEt2A6YMBl9aVFNEbgOlDAdfWlRTUERuA6QMB19aVElQRG4DowwIX1pUU1BLRG4DogwIX1pUSVBLRG4DoQwFX1pUU2IDoAwFX1pUSWIDnwwGX1pUU1BiA54MBl9aVElQYgOdDAdfWlRTUEtiA5wMB19aVElQS2IDmwwFX1pUU3cDmgwFX1pUSXcDmQwGX1pUU1B3A5gMBl9aVElQdwOXDAdfWlRTUEt3A5YMB19aVElQS3cDlQwFX1pUU2MDlAwFX1pUSWMDkwwGX1pUU1BjA5IMBl9aVElQYwORDAdfWlRTUEtjA5AMB19aVElQS2MDjwwFX1pUU2gDjgwFX1pUSWgDjQwGX1pUU1BoA4wMBl9aVElQaAOLDAdfWlRTUEtoA4oMB19aVElQS2gDiQwFX1pUU2EDiAwFX1pUSWEDhwwGX1pUU1BhA4YMBl9aVElQYQOFDAdfWlRTUEthA4QMB19aVElQS2EDgwwFX1pUU3MDggwFX1pUSXMDgQwGX1pUU1BzA4AMBl9aVElQcwP/CwdfWlRTUEtzA/4LB19aVElQS3MD/QsFX1pUU3QD/AsFX1pUSXQD+wsGX1pUU1B0A/oLBl9aVElQdAP5CwdfWlRTUEt0A/gLB19aVElQS3QD9wsFX1pUU2kD9gsFX1pUSWkD9QsGX1pUU1BpA/QLBl9aVElQaQPzCwdfWlRTUEtpA/ILB19aVElQS2kD8QsFX1pUU2oD8AsFX1pUSWoD7wsGX1pUU1BqA+4LBl9aVElQagPtCwdfWlRTUEtqA+wLB19aVElQS2oD6wsFX1pUU2wD6gsFX1pUSWwD6QsGX1pUU1BsA+gLBl9aVElQbAPnCwdfWlRTUEtsA+YLB19aVElQS2wD5QsFX1pUU20D5AsFX1pUSW0D4wsGX1pUU1BtA+ILBl9aVElQbQPhCwdfWlRTUEttA+ALB19aVElQS20D3wsFX1pUU3gD3gsFX1pUSXgD3QsGX1pUU1B4A9wLBl9aVElQeAPbCwdfWlRTUEt4A9oLB19aVElQS3gD2QsFX1pUU3kD2AsFX1pUSXkD1wsGX1pUU1B5A9YLBl9aVElQeQPVCwdfWlRTUEt5A9QLB19aVElQS3kD0wsFX1pUU24D0gsFX1pUSW4D0QsGX1pUU1BuA9ALBl9aVElQbgPPCwdfWlRTUEtuA84LB19aVElQS24DzQsFX1pUU28DzAsFX1pUSW8DywsGX1pUU1BvA8oLBl9aVElQbwPJCwdfWlRTUEtvA8gLB19aVElQS28DxwsGX1pUU0RoA8YLBl9aVElEaAPFCwdfWlRTUERoA8QLB19aVElQRGgDwwsIX1pUU1BLRGgDwgsIX1pUSVBLRGgDwQsFX1pUU2YDwAsFX1pUSWYDvwsGX1pUU1BmA74LBl9aVElQZgO9CwdfWlRTUEtmA7wLB19aVElQS2YDuwsFX1pUU2QDugsFX1pUSWQDuQsGX1pUU1BkA7gLBl9aVElQZAO3CwdfWlRTUEtkA7YLB19aVElQS2QDtQsFX1pUU2UDtAsFX1pUSWUDswsGX1pUU1BlA7ILBl9aVElQZQOxCwdfWlRTUEtlA7ALB19aVElQS2UDrwsFX1pUU2cDrgsFX1pUSWcDrQsGX1pUU1BnA6wLBl9aVElQZwOrCwdfWlRTUEtnA6oLB19aVElQS2cDqQsGX1pUU0R1A6gLBl9aVElEdQOnCwdfWlRTUER1A6YLB19aVElQRHUDpQsIX1pUU1BLRHUDpAsIX1pUSVBLRHUDowsGX1pUU0RzA6ILBl9aVElEcwOhCwdfWlRTUERzA6ALB19aVElQRHMDnwsIX1pUU1BLRHMDngsIX1pUSVBLRHMDnQsGX1pUU0RpA5wLBl9aVElEaQObCwdfWlRTUERpA5oLB19aVElQRGkDmQsIX1pUU1BLRGkDmAsIX1pUSVBLRGkDlwslX1pUVk4xMF9fY3h4YWJpdjExN19fYXJyYXlfdHlwZV9pbmZvRQOWCyVfWlRJTjEwX19jeHhhYml2MTE3X19hcnJheV90eXBlX2luZm9FA5ULJV9aVFNOMTBfX2N4eGFiaXYxMTdfX2FycmF5X3R5cGVfaW5mb0UDlAsoX1pUVk4xMF9fY3h4YWJpdjEyMF9fZnVuY3Rpb25fdHlwZV9pbmZvRQOTCyRfWlRWTjEwX19jeHhhYml2MTE2X19lbnVtX3R5cGVfaW5mb0UDkgskX1pUSU4xMF9fY3h4YWJpdjExNl9fZW51bV90eXBlX2luZm9FA5ELJF9aVFNOMTBfX2N4eGFiaXYxMTZfX2VudW1fdHlwZV9pbmZvRQOQCyhfWlRJTjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FA48LKF9aVFNOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UDjgspX1pUSU4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UDjQspX1pUU04xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UDjAslX1pUVk4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQOLCzFfWlRWTjEwX19jeHhhYml2MTI5X19wb2ludGVyX3RvX21lbWJlcl90eXBlX2luZm9FA4oLE19aTlN0OWV4Y2VwdGlvbkQwRXYA4kATX1pOU3Q5ZXhjZXB0aW9uRDFFdgDZMBdfWk5LU3Q5ZXhjZXB0aW9uNHdoYXRFdgCWYhhfWk5TdDEzYmFkX2V4Y2VwdGlvbkQwRXYA4kAYX1pOU3QxM2JhZF9leGNlcHRpb25EMUV2ANkwHF9aTktTdDEzYmFkX2V4Y2VwdGlvbjR3aGF0RXYAl2ITX1pOU3Q5YmFkX2FsbG9jQzJFdgCYYhBfWlRWU3Q5YmFkX2FsbG9jA4kLE19aTlN0OWJhZF9hbGxvY0QwRXYA4kAXX1pOS1N0OWJhZF9hbGxvYzR3aGF0RXYAmWIfX1pOU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoQzJFdgCaYhxfWlRWU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoA4gLH19aTlN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aEQwRXYA4kAjX1pOS1N0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aDR3aGF0RXYAm2IQX1pUU1N0OWV4Y2VwdGlvbgOHCxVfWlRWU3QxM2JhZF9leGNlcHRpb24DhgsVX1pUSVN0MTNiYWRfZXhjZXB0aW9uA4ULFV9aVFNTdDEzYmFkX2V4Y2VwdGlvbgOECxxfWlRTU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoA4MLEF9aVFNTdDliYWRfYWxsb2MDggsYX1pOU3QxM2JhZF9leGNlcHRpb25EMkV2ANkwE19aTlN0OWJhZF9hbGxvY0QyRXYA2TAfX1pOU3QyMGJhZF9hcnJheV9uZXdfbGVuZ3RoRDJFdgDZMBZfWk5TdDExbG9naWNfZXJyb3JEMEV2AMBPFl9aTlN0MTFsb2dpY19lcnJvckQxRXYAnGIYX1pOU3QxM3J1bnRpbWVfZXJyb3JEMEV2ALlPF19aTlN0MTJkb21haW5fZXJyb3JEMEV2AMBPF19aTlN0MTJkb21haW5fZXJyb3JEMUV2AJxiG19aTlN0MTZpbnZhbGlkX2FyZ3VtZW50RDBFdgDATxdfWk5TdDEybGVuZ3RoX2Vycm9yRDBFdgDATxdfWk5TdDEyb3V0X29mX3JhbmdlRDBFdgDATxZfWk5TdDExcmFuZ2VfZXJyb3JEMEV2ALlPFl9aTlN0MTFyYW5nZV9lcnJvckQxRXYAnmIZX1pOU3QxNG92ZXJmbG93X2Vycm9yRDBFdgC5TxpfWk5TdDE1dW5kZXJmbG93X2Vycm9yRDBFdgC5TxpfWk5TdDE1dW5kZXJmbG93X2Vycm9yRDFFdgCeYhRfWlRWU3QxMmRvbWFpbl9lcnJvcgOBCxRfWlRJU3QxMmRvbWFpbl9lcnJvcgOACxRfWlRTU3QxMmRvbWFpbl9lcnJvcgP/ChNfWlRTU3QxMWxvZ2ljX2Vycm9yA/4KGF9aVFNTdDE2aW52YWxpZF9hcmd1bWVudAP9ChRfWlRTU3QxMmxlbmd0aF9lcnJvcgP8ChRfWlRTU3QxMm91dF9vZl9yYW5nZQP7ChNfWlRWU3QxMXJhbmdlX2Vycm9yA/oKE19aVElTdDExcmFuZ2VfZXJyb3ID+QoTX1pUU1N0MTFyYW5nZV9lcnJvcgP4ChVfWlRTU3QxM3J1bnRpbWVfZXJyb3ID9woWX1pUU1N0MTRvdmVyZmxvd19lcnJvcgP2ChdfWlRWU3QxNXVuZGVyZmxvd19lcnJvcgP1ChdfWlRJU3QxNXVuZGVyZmxvd19lcnJvcgP0ChdfWlRTU3QxNXVuZGVyZmxvd19lcnJvcgPzChdfWk5TdDEyZG9tYWluX2Vycm9yRDJFdgCcYhtfWk5TdDE2aW52YWxpZF9hcmd1bWVudEQyRXYAnGIXX1pOU3QxMmxlbmd0aF9lcnJvckQyRXYAnGIXX1pOU3QxMm91dF9vZl9yYW5nZUQyRXYAnGIWX1pOU3QxMXJhbmdlX2Vycm9yRDJFdgCeYhlfWk5TdDE0b3ZlcmZsb3dfZXJyb3JEMkV2AJ5iGl9aTlN0MTV1bmRlcmZsb3dfZXJyb3JEMkV2AJ5iE19aTlN0OXR5cGVfaW5mb0QwRXYA4kATX1pOU3Q5dHlwZV9pbmZvRDFFdgDZMBJfWk5TdDhiYWRfY2FzdEMyRXYAn2IPX1pUVlN0OGJhZF9jYXN0A/IKEl9aTlN0OGJhZF9jYXN0RDBFdgDiQBZfWk5LU3Q4YmFkX2Nhc3Q0d2hhdEV2AKBiFV9aTlN0MTBiYWRfdHlwZWlkQzJFdgChYhJfWlRWU3QxMGJhZF90eXBlaWQD8QoVX1pOU3QxMGJhZF90eXBlaWREMkV2ANkwFV9aTlN0MTBiYWRfdHlwZWlkRDBFdgDiQBlfWk5LU3QxMGJhZF90eXBlaWQ0d2hhdEV2AKJiEF9aVFZTdDl0eXBlX2luZm8D8AoQX1pUU1N0OXR5cGVfaW5mbwPvCg9fWlRTU3Q4YmFkX2Nhc3QD7goSX1pUU1N0MTBiYWRfdHlwZWlkA+0KC2luNmFkZHJfYW55A+wKEGluNmFkZHJfbG9vcGJhY2sD6woIc2h1dGRvd24As2IKc29ja2V0cGFpcgC1YggCnAIJ12MBACMCC+gxpQKmAsoCywLMAs0CzgLPAtAC0QLSArgCvgK9AtMC1ALVAtYC1wLYAtkCjgjaAtsC3ALdAt4C3wLgAuECwALiAuMCxgL0AvEC9QL2AvcC+wL8Av0C/gL/AoADgQOCA4MD7AKEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA8QCkQOSA5MDlAOVA5YDlwOYA5kDvwKaA5wDnQPqAu0C7gLvAvAC8gLzAvgC+QL6ArkDugO7A7UDxAPFA8YDxwPIA8oDywOzAo4E3QOVBJcEmASsBK4EqgSrBKoEoASMBfEE8QTqBOQDzATUBNgE2AThBOED4AP8BP8E/AT/BJEFoQWlBbEFywXKBcEQswa0BrUGrwawBrEGsgbbBtwG3QauEN4G3wbgBrcSuBKEEeUG1wbaBuYG5wboBuoG4QbrBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweRB5IHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wH4gbjBuQGyAfJB8oHywfMB80HzgfUB9cG0AfVB9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB8UH7gfvB/AHkQfyB/MH9Af1B/YH9wf4B/kH+gf7B/wH/Qf+B/8HgAiBCIIIgwiECOIG4wbSB4UIqwesB7EIsgi2CLcIuAi5CLoIuwi8CL0IwQjCCMMIxAjFCMQQxgjHCMgI0QjSCMsIzAjNCMUIuAjOCM8I0AjSCPcI5wjoCOkI6gjsCO8I8AjxCPII8wj4CPkI+gj7CPwI/Qj0CPUI9Aj2CJAJjAmNCY4JjwmRCZIJkwmUCZUJlgmXCZgJmQmaCZsJnAmdCa0JrgmvCbAJsQmyCbMJuwnMCc0JzgnPCZ4Jnwm4CKAJoQmiCdAJowmkCaUJ0QmmCacJqAnSCdMJqQmqCasJywjBCcIJuAjDCcQJxQnUCdUJ1gnXCdgJ2Qm8Cb0JvgnGCL8J2gnbCdwJ3QneCd8J4AnhCeIJ4wncCuQJ5QnnCegJ6QnqCcYJxwnICckJygnLCcUg9gnrCewJ7QnuCfAJ9wn4CfkJ8QnjBvIJ8wn1CZQKlQqWCsAKwQqYCpkKmgqXCqYKpwqoCqkKqgqnCqgKqwqtCq4KrwqwCrEKsgq2CrgKuQq3CroKvAq+Cr8KvQqqCqcKqArGCq0KrwqwCscKyArKCssKyQrMCs0KzgrQCtEKzwrSCtMK1ArVCtYK1wqSCpsKnAqdCp4K1g7FEJ8KoAqhCvwJogqjCqQKpQqzCrQKtQq7CsMKxArFCucK6AraCrgIuQjbCqgW6QrqCusK7ArtCu4K7wrwCt0K3grgCuEK4grjCuQK5QrmCvcKhQuGC/EKkAuRC5IL8gqUC5ULlguXC5gLmQuaC5sLnAv4CvkK+gqBC50LmQuaC54LnwugC6ELoguCC7gIgwujC6ULpgunC6gLiwuqC6sLiQvGCIoLjAu4CI8LrAurC40LxgiOC7ULuQu6C7sLvAu9C7kLvgvEC8cLyAvJC8oLywvNC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvkC+UL5gvnC+gL6QvrC+wL7QvuC+8L4wvwC/ILiAyJDIoMgQyLDIwMjQyODI8MgwyFDJAM8wv0C/ULlQihDKMMpAyiDKUMpgyyDLMMtAy1DLYMtwy4DLkMlQuWC5cLmAu6DKcMqAzGCKkMqgyrDLoMpwyuDM0IxgipDK8MsAzBDMUMuwy8DL0Mvgy/DMAM4gbjBscMzQzODM8MyQzGCMoM0AzRDNIM0wzJDMYIywzoDOkM6gzrDOwM7QzxDPIMshDzDPQM9Qz2DPcM+QzXBv4M/wyADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDeUMjQ2ODY8NkA2RDZINkw2UDawH4gbjBvoMlg2XDZgN+wzjBvwM2g3bDdwN3Q3ZDdgN4Q3iDeMN5Q3XDeAN0A3mDecN1A3oDekN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DaUOsg7IDskOsw60DrUOtg63DrYSuQ66DtgO2Q6vDtcG2g7bDtwO3Q7eDt8O4A7hDuIO4w7kDuUO5g7nDugO6Q7qDusOwA7BDsIOww7EDsUOtgjLDrgIzA7ODs8O7A7HDu0O7g7KDu8O8A7xDvIO8w7QDvQOiQ+LD40Pjg+PD5APkQ+SD5QPlQ+WD5cP+w6YD5kPmg+bD/UO9g73DvgO+Q76DpwPgg+DD4QPnQ+FD54Phg+fD4gPoA+hD6IPrw+xD7IP4wazD7QPuQ+6D+IG4watD7wPvQ++D8APxA/wBsUPxg/HD8gPyg/LD8wPxQ/ND84Pzw/QD9EP0g/TD9QP1Q/WD9cP2A/cD90P3g/fD+AP5A/lD+YP5w/oD+kP6g/rD+wP7Q/uD+8PhRCGEIcQiBCJEIoQixCMEI0QjhCVEI8QkBC4CLkIkRCSEJMQ3BDJEMoQyxDdEN4QzBDNEM4Q4BDhEOIQ4xDmEOcQ6BDpEOoQ6xDsEO0QhxGIEY0R4waOEY8R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tSG2IbshuCG5IbohviHOIc4hwCHBIcUhxiHHIcghySHKIcshzCHNIc8h0CHRIdIh0yHUIdUh1iHXIdghkCLcId0hoQ/ICd4h3yHgIfEG4SHiIeMh5CHlIeYh5yHoIekh6iHrIewh7SHuIe8h8CHxIfIh8yH0IfUh9iH3Ifgh+SH6Ifsh/CH9If4h+yH/If0hgCL7Ifwh/SH+Ifsh/yH9IYAigSKCIoMihCKBIoUigyKGIociiCKJIooiiyKMIo0ijiKPIpEikiKTIpQilSKWIpcinyKZIpoioSKpIqoioyKkIqUipiKnIqgirCKtIq8isiKzIqwitCKpIrsitiK3IrgiuSK6Ir4iwCLBIsIixCLFIsciyCLJIssizCLNIs4i0CLRItMi1CLWItci6SLYItoivQy+DNsixQzcIt4i3yLgIuEi4iLjIuQi5SLmIugi6iLrIuwi7SLuIu8i8CLyIvMi9CL1Ipwj+CL5Ivoi+yL8Iv0i/iL/IoAjgSOCI4MjhCOFI4YjhyOII4AjiSOKI4sjhyOMI4AjiSOKI4sjjSOOI48jkCORI5IjkyOUI5UjliOdI54jnyOgI/cirCLXBqEjoiOjI5gjpCOlI6cjqCOpI6ojqyOsI64jryOwI7EjsCOyI7MjtCOZI7UjtiO3I7gjuSO6I7sjvCO9I74jvyPAI8EjwiPDI8QjxSPGI8cjyiO4CMsj0SPSI8YIqQzcI8kj6CPqI+sj6SPsI+0j7yOGJIgkiSSHJIokiyTMI84jzyPQI9gf2yPdI98j4CPiI+Mj5CPlI+Yj5yPwI/Ej8iPzI/Qj9SP2I/cj+CP5I/oj+yP8I/0j2B/+I/8jgCSBJIIkgySEJIUkjCSNJI4kjySQJJEkkiT6I5MklCSVJJYklySYJJkkmiTnF+gXnCSeJJ8koSSiJKQkpSSnJKkkqiSrJLIksyS2JLckuSS6JLskwCTBJMIkrCStJK4krySwJLEkvCS+JMMkxCTFJMYkxyTIJMkkyiTPJNYkzCTOJNAk0iTTJNUk1yTYJNkk2yTcJKMipCKlIt0k4STiJOQk5iTjJOck6STrJO0k6iTuJPMk/iT2JPsk+CS2IrciuCLwJPEk9CSsIvUk9yT5JPokgyW5C/YU6BSGJYcliCWwJdoKuAi5CNoKuAi5CLkluiW7JbwlxSXGJcclyCWJJY0ljiWSJbElsiW0JbUltiW4Jb4lvyXAJcElwiXDJcQlySXKJcslzCXNJc4lzyXyItEl0iXTJdQl1SXWJdcl2CXZJdsl3CXdJd4l4CXhJeIl4yXkJeYl6CXpJeol6yXvJfAl8SXyJfMl9SX3Jfkl+yX9JYAmiSaKJowmjSaOJo8mpSamJqcmqCapJqomqyasJqkmqiarJqwmrSauJqsmryawJrEmsiazJrQmtSa2JrcmuCa5JromuyarJrwmvSa+Jr8mwCbBJsImwybEJpkmmia2JrcmxSbGJscmyCaBJoImyAmDJoQm9iX4JfolhSaGJocmiCbgIZAmkSaSJpMmlSaWJpcmmCabJpwmnSaeJp8moCahJqImoybtJaQmqBvKJssmzSbOJs8m0CbRJtIm1CbVJtYm2CbaJtsm3CbeJt8m4CbmF+cX6BfmJucm6CbpJuom6ybsJu0m7ibvJvAm8SbyJvMm9Cb1JvYm9yb4Jvkm+ib7Jvwm/Sb+Jv8mgCeIJ689sj2FP5s/oSetJ68nsie0J7YnuyfCRNFEgieDJ4QnhSeGJ4cniieLJ4wnjSeOJ5AnkSeSJ5QnlSeWJ5cnmCeZJ5onnCedJ54nnyegJ6MnpCelJ6YnpyeoJ6knqierJ6wnriexJ7MntSe3J7gnuSe6J7wnvSe+J78nwCfBJ8InwyfGJ8cnyCfLJ80nzyfQJ9In0yfVJ9Yn2CfZJ9on2yfcJ90n3ifgJ+En4ifjJ+Qn5ifnJ+gn6ifrJ+0n8CfvJ/En8ifzJ/Qn9Sf2J/cn+CfFHsQe+Sf6J4wojSiOKI8okSiSKJoomyicKJ0onii9KL4ovyjAKMEoxCjFKOwo7SjuKJwo7yjwKPEogCmTKIEplCiCKfsn/Cf9J/4n/yeAKIEogiiGKJUoliiXKJgomSifKKEooiikKKUopyipKKooqyitKK4osCixKLIosyi0KLUotii5KLoouyjHKMMoySjLKMwozSjOKM8o0ijTKNQo1SjWKNco2ijbKIco3CiIKN0o3ijgKOEo5ijnKOgo6SjqKOso9Cj1KPMo9ij3KPgo+Sj6KPso/Cj9KLoo/ij/KOgohSmEKIYpiCmJKZAoiymMKYoojSmOKeQojyn8EIo3kSmSKZMplCmVKZYpminuKe8p8CnxKfMp9SnJKs0qzirPKtAqnymgKaEpoimjKaQppSmmKacpqCmpKasprCmtKa8psCmxKbIpsym0KbUptym4Kbkpuim7KbwpvSm+Kb8pwCnBKcIpwynEKcUpxinHKcgpySnKKcspzCnNKcACwALOKc8p0CnRKdIp0ynUKdUp1inXKdgp2SnaKdsp3CndKd4p3yngKeEpwALiKeYp5ynoKekp6inrKewpwALtKfYp9yn4Kfkp+in7Kfwp/Sn+Kf8pgCqBKoIqgyqEKoUqhiqHKogqiSqKKosqjCqNKo4qjyqQKpEqkiqTKpQqlSrOKZYqlyqYKpkqmiqbKpwqnSqeKp8qoCqiKqMqpCqlKqYqpyqoKqkqqiqrKqwqrSquKq8qsCqxKrIqsyq0KrUqtiq3KrgquSqeKboquyq8Kr0qviq/KsAqwSrCKsMqxCrFKsYqxyrIKsoqzCrRKtIq0yrUKtUqyyrWKqMipCKlItgq2irbKtwq3SreKt8q3SrgKsAi4SriKuMq5hfnF+gX5SrnKugqrCLpKuoq7CrtKu4q7yrwKuYX5xfoF/Iq9CroKqwi6Sr1Kvcq+CruKvkq+iqjIqQipSL8Kv4q/yroKqwigCuBK4MrhCvuKoUroyKkIqUihyuJK4or6CqsIosrjCuOK48rkCuRK5MrlCuVK5YrlyuYK5ormyucK50rniufK6AroSuiK6MrpCumK6crqCujIqQipSKqK64rryuwK7ErsiuzK7QrkCu1K7kruiu7K7wrvSu+K78r7iq1K8IrxyvgK8sr4ivjK7k4kziqOJ84tDikOK44oDipOKU4oziROJA4ujjBOMI4wDjEOLYityK4IsErwyvhK4ERgxGhOMQrojjJK8orzCusOM0rrTjOK684zyuwONAr0SumONIrpzjTK6g41CvVK7E41iuyONcr2CurONkrtzjaK7g42yu1ONwrtjjeK7M43yvlK+Yr5yvoK+or6yvsK+0r7ivvK/Ar8SvyK/Mr9CvyK/Mr9Cv1K/Yr9yv4K/kr+iv7K/wr/Sv+K/8rnizQLNEs0izTLNQs1SzWLNcs2CzAJIEsgiyILIksiiyNLI8sjiyQLJEsoCyhLJ8soyykLMsszSzMLM4s2SyDLIcskiyULJYsmCyaLNgfpSymLKcsqCypLKosqyysLK0sryywLLEssiyzLLQstSy3LLgsuSy6LLssvCy9LL8swCzBLMMsxCzFLMYsxyzILMksyizaLNws3SzeLN8s4iztLOMs5CzlLOYs5yzoLOks6izrLOws6izqLO8s8yzwLPEs8iz1LNwQ9iz3LPgs+Sz6LPss/Cz9LP8sgC2BLYItgy2ELYUthi2HLYgtiS2KLYstjC2NLY4tjy2QLZItky2ULZUtli2XLZMtmC2ZLZotnC2oLZ0tni2fLaAtoS2iLaMtpS2mLactqi2xLastrC2tLa4try2wLbMtuC20LbUtti23Lbotuy28Lb0tvi2/LawiwC3CLcYtxy3jAsgtyS3LLcwtzS3OLc8t0C3HLeMC0S3SLdMt1C3VLdYt1y3jAtgt2S3bLdwt1S3dLd4t4wLfLeAt4S3iLfMt9C33Lfgt+S36Lfst5C3lLeYt5y3oLekt6i3rLewt7S3vLfEt9S32LegqrCL9Lcwc5hfnF+gX/y2ALoEugi6sIoMuhC6FLoYuhy6ILokuii6LLo0uji6PLpAukS6SLpMulC6VLpYuly6YLpkumi6KLpsukyuUK5Urni6fLqAuoS6iLqMupi6cLqgurC6xLtYuwC7YLsYuyS7QLtku0y7VLqkuqi6rLq4ury6wLrQuti63Lrkuui66C7suvC69Lr4uvy7BLsIuxC7FLscuyC7KLssuzC7NLs4uzy7SLtQu2i7bLt0u3i7fLuAu4S7iLuMu5C7lLuYu5S7nLugu6S7qLusu7C7tLu4u7y7wLvUu9i73Lvgu+S6BL4YviS+OL/4u/y6CL4MvhC+FL4cviC+KL4svjC+NL48vkC/cEKAwoTCcL50vni+fL6MvpS+mL6cvqC+pL6ovqy+sL60vry+wL7Evsi+zL7QvtS+3L7gvuS+6L7svvC+9L78vwC/CL8MvxC/GL8cvyC/JL8ovyy/ML80vzi/LL88v0C/RL9Iv0y/UL9Uv1i/XL9gv2S/aL9sv3C/dL94v3y/gL+Ev4i/jL+Qv5S/mL+cv6C/pL+sv7C/tL+4v7y/xL/Iv8y/0L/Uv9i/4L/kv+i/7L/wv/S/+L/8vgDCBMIIwgzCEMIUwhjCHMIgwiTCLMIwwjjCPMJAwkTCSMJMwlDCVMJYwlzCYMJkwmjCbMJwwnjCwMLAwsDCwMLAwsDCwMLAwsDCwMKIwozCkMMACpTClMKYwpzCoMKowqzCsMK4wpRq2MMIwvDC9ML4wvzDAMMEwwzDEMMUwxjDHMMgwyTDLMMwwzTDPMNAw0TDVMNYw7x7dHdcw2DDZMMUb2zDcMN0w3jDfMOAw4TDvHu0w7jDvMPAw9jDqMOsw7DDxMPIw8zD0MPUw9zD4MONG5Eb9MP4w/zCAMYExgjGDMYQxhTGGMYcxiDGJMYoxizGMMY0xjjGPMZAxkTGSMZMxlDGVMZYxlzGYMZkxmjGbMZwxnTGeMZ8xoDGhMaIxozGJGaUxpjGnMakxqjGoMasxrDGtMa8xzTHOMc8x0DHRMdYx1zHYMdkx3DHdMd4x3zHjBuAx4THiMeMx1wawMbIxtDG1MbcxuDGzMbsxvzHBMbExwjGuMcMxxDHFMb4xvDHGMccxyDHJMcoxyzHMMdIx0zHUMdUx2jHbMeQx5jHqMesx7DHuMe8x8DH6Mfsx/DH9Mf4xvQu9C70L8THzMfQx9TH/MYAygTKCMoMyhDKFMoYy9jG4CLkI9zH4MfkxhzKIMokyiTKSMpQylTKWMpcymDKZMpoynDKdMp4ynzKgMpsyoTKiMqMyizKMMo0yjjKPMpEyqTKpMqkyqjKrMqwyrTKuMq8ysDKxMrIyszK0MrUytjK4MrkyuzK8Mr0yvzKkMqEPyAmlMqYyqDLAMsEyjxC4CM8y0DLRMtIy1DLVMt0y3jLfMuAy4TLiMuMy5DLlMuYy5zLoMuoy6zLsMu4y7zLwMvEy8jLzMsMyxDLFMsYyxzLJMvQy9TL2Mssy9zL4Mvky+jL7Mvwy/TL+Mv8ygDOBM4IzzDLXMZYazTLOMqAzoTOiM88y0DKSM9UyuQu5C7kLlDOVM5YzlzOYM4wohTOdM54znzOjM6QzpTOmM6czqDOpM6ozqzOsM60zrjO1M5sztjO3M7gzuTOGM4gziTOHM4ozjDOvM7AzsTOyM7MztDPCM8MzxTPGM8czyDPJM8ozyzPLM8szzDPNM84zzzPQM7ozuzO8M70zvzPBM9Iz4DPVM7gI1jPXM9gz1DPZM9oz2zPdM9wz3jPfM+Ez4jPjM+Qz5zPoM+kz6jPnM+gz7jPvM40YxgjxM/IzjRiOGPUz9jONGI4Y+TP6M/szuAj8M/0zjRiOGIA0gTSDNMYIhDSFNI0YxgiJNIo0jRiOGIs0jDSVGI00lhiONI80kTSSNJM0lDSNGMYIlzSYNJk0wQ6aNJs05zPoM580oDT7M6Q0uAilNKY0qTTHCao0qzSuNMYIrzSwNOUz5jPrM+wz7TPrM/Az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u1K8Ur5Sv1LAUsFSw1LEUsVSxlLIUslSylKRKdVS1FK4T5hSmFKYUphS4kDQUtFSuU/gUvtPkSn9Uv1SgFOYUJ1Rg1OEU4VThlOIU4lThFOLU4xTjVOOU49TkFORU5NTlFOPU5VTjFOWU5dTwl6ZU81NmlObU6dTqFOpU6pTrlOYUrVTtlO3U/VT9lO6U71TwFPAU8VTyVPKU9JT9FPNU9BT01PUU/ZF2FOoU6lT2VPMUt9T9VP2U+1T81P0U4FUqFSNVI5UglSYUvtFrkGGQZhUqlSjVJlUmFKRQppdzk2RKYNV51SGVZ1Qh1WLVYxVjVWYUu5NmlWcVaJRnVWFXp9VoFWjVfldsFWxVbZVt1XzP8VV8kzHVchVyVXKVctVzFXNVc5Vz1XQVdFV0lXTVdRV1VXWVddV2FXZVdpV21XcVd1V3lXfVeBV4VXiVeNV5FXlVeZV51XoVelV6lXrVexV7VXuVe9V8FX0VfVVl1amWflW4FbNWchNmVaaVqxa/1bHVYVXyFWjV8pVqlfLVZxWzFWdVs5VnlbPVZ9W0FWgVtFVoVbSVZxY1FWhWNZVolbcVaNW3VWkVt5VpVbfVaZW6FWnVulVqFbrValW7VWqVu9V8FW0VrVWtla3VrhWuVbIQv5WmFiZWJpY21idWOZUzFimWP1U31jRWMpY1VjLWNlY5k2/VsBWwVbCVsNWxFbFVsZWx1bIVslWylbLVsxWzVbOVs9W0FbRVtJW01bUVtVW1lbXVthW2VbaVttW3Fb8Vb1ZvlnoVphWvVa+Vt5W8lahRM5d/FaZXZxen1PwRKJFklSjU65G0UanVPg79zvmPNNGukaoRpBCjkLGV8dXk0L2O4tClljoQaBYo1ilWKhYqlisWK5YsFiyWLRYtli4WLpYvFi+WMNYxVjHWMlYxlTNWM9Y01iREbNZ/k60WbpZyVniVuNWwU+AV4FXgleDV6BThleHV4hXiVelU5lXmlebV5xXnVeeV5JKn1egV6FX0FikV6VXplenV6hX1FirV6xXrVeuV69XsFexV7JXs1e0V7ZXt1e5V8FVwlW+V8FXxFfFV9wQyFfKV4tYjFjyVPNU9FSPWJNYjViOWNcGgQr7VJBYlFiMWI5Y2TDiQOJAileMV41XjlePV5FXkleUV5JKlVeWV5dX4kC6V7pXu1eUN5Q3vFeUN+JAy1fNV7tX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QZjSqwFqI7kBNgIAIwBBqNKrAWojuQE2AgAjAEG40qsBaiO5ATYCACMAQcjSqwFqI7kBNgIAIwBB2NKrAWojuQE2AgAjAEHo0qsBaiO5ATYCACMAQfjSqwFqI7kBNgIAIwBBiNOrAWojuQE2AgAjAEGY06sBaiO5ATYCACMAQajTqwFqI7kBNgIAIwBBuNOrAWojuQE2AgAjAEHI06sBaiO5ATYCACMAQdjTqwFqI7kBNgIAIwBB6NOrAWojuQE2AgAjAEH406sBaiO5ATYCACMAQYjUqwFqI7kBNgIAIwBBmNSrAWojuQE2AgAjAEGo1KsBaiO5ATYCACMAQbjUqwFqI7kBNgIAIwBByNSrAWojuQE2AgAjAEHY1KsBaiO5ATYCACMAQejUqwFqI7kBNgIAIwBB+NSrAWojuQE2AgAjAEGI1asBaiO5ATYCACMAQZjVqwFqI7kBNgIAIwBBqNWrAWojuQE2AgAjAEG41asBaiO5ATYCACMAQcjVqwFqI7kBNgIAIwBB2NWrAWojuQE2AgAjAEHo1asBaiO5ATYCACMAQfjVqwFqI7kBNgIAIwBBiNarAWojuQE2AgAjAEGY1qsBaiO5ATYCACMAQajWqwFqI7kBNgIAIwBBuNarAWojuQE2AgAjAEHI1qsBaiO5ATYCACMAQdjWqwFqI7kBNgIAIwBB6NarAWojuQE2AgAjAEH41qsBaiO5ATYCACMAQYjXqwFqI7kBNgIAIwBBmNerAWojuQE2AgAjAEGo16sBaiO5ATYCACMAQbjXqwFqI7kBNgIAIwBByNerAWojuQE2AgAjAEHY16sBaiO5ATYCACMAQejXqwFqI7kBNgIAIwBB+NerAWojuQE2AgAjAEGI2KsBaiO5ATYCACMAQZjYqwFqI7kBNgIAIwBBqNirAWojuQE2AgAjAEG42KsBaiO5ATYCACMAQcjYqwFqI7kBNgIAIwBB2NirAWojuQE2AgAjAEHo2KsBaiO5ATYCACMAQfjYqwFqI7kBNgIAIwBBiNmrAWojuQE2AgAjAEGY2asBaiO5ATYCACMAQajZqwFqI7kBNgIAIwBBuNmrAWojuQE2AgAjAEHI2asBaiO5ATYCACMAQdjZqwFqI7kBNgIAIwBB6NmrAWojuQE2AgAjAEH42asBaiO2ATYCACMAQYzaqwFqI7YBNgIAIwBBpNqrAWojtgE2AgAjAEG82qsBaiO2ATYCACMAQdTaqwFqI7YBNgIAIwBB7NqrAWojtgE2AgAjAEGE26sBaiO2ATYCACMAQZzbqwFqI7YBNgIAIwBBtNurAWojtgE2AgAjAEHM26sBaiO2ATYCACMAQeTbqwFqI7YBNgIAIwBB/NurAWojtgE2AgAjAEGU3KsBaiO2ATYCACMAQazcqwFqI7YBNgIAIwBBxNyrAWojtgE2AgAjAEHc3KsBaiO2ATYCACMAQfTcqwFqI7YBNgIAIwBBjN2rAWojtgE2AgAjAEGk3asBaiO2ATYCACMAQbzdqwFqI7YBNgIAIwBB1N2rAWojtgE2AgAjAEHs3asBaiO2ATYCACMAQYTeqwFqI7YBNgIAIwBBnN6rAWojtgE2AgAjAEG03qsBaiO2ATYCACMAQczeqwFqI7YBNgIAIwBB5N6rAWojtgE2AgAjAEH83qsBaiO2ATYCACMAQZTfqwFqI7YBNgIAIwBBrN+rAWojtgE2AgAjAEHE36sBaiO2ATYCACMAQdzfqwFqI7YBNgIAIwBB9N+rAWojtgE2AgAjAEGM4KsBaiO2ATYCACMAQaTgqwFqI7YBNgIAIwBBvOCrAWojtgE2AgAjAEHU4KsBaiO2ATYCACMAQezgqwFqI7YBNgIAIwBBhOGrAWojtgE2AgAjAEGc4asBaiO2ATYCACMAQbThqwFqI7YBNgIAIwBBzOGrAWojtgE2AgAjAEHk4asBaiO2ATYCACMAQfzhqwFqI7YBNgIAIwBBlOKrAWojtgE2AgAjAEGs4qsBaiO2ATYCACMAQcTiqwFqI7YBNgIAIwBB3OKrAWojtgE2AgAjAEH04qsBaiO2ATYCACMAQYzjqwFqI7YBNgIAIwBBpOOrAWojtgE2AgAjAEG846sBaiO2ATYCACMAQdTjqwFqI7YBNgIAIwBB7OOrAWojtgE2AgAjAEGE5KsBaiO2ATYCACMAQZzkqwFqI7YBNgIAIwBBtOSrAWojtgE2AgAjAEHM5KsBaiO2ATYCACMAQeTkqwFqI7YBNgIAIwBB/OSrAWojtgE2AgAjAEGU5asBaiO2ATYCACMAQazlqwFqI7YBNgIAIwBBxOWrAWojtgE2AgAjAEHc5asBaiO2ATYCACMAQfTlqwFqI7YBNgIAIwBBjOarAWojtgE2AgAjAEGk5qsBaiO2ATYCACMAQbzmqwFqI7YBNgIAIwBB1OarAWojtgE2AgAjAEHs5qsBaiO2ATYCACMAQYTnqwFqI7YBNgIAIwBBnOerAWojtgE2AgAjAEG056sBaiO2ATYCACMAQcznqwFqI7YBNgIAIwBB5OerAWojtgE2AgAjAEH856sBaiO2ATYCACMAQZToqwFqI7YBNgIAIwBBrOirAWojtgE2AgAjAEHE6KsBaiO2ATYCACMAQdzoqwFqI7YBNgIAIwBB9OirAWojtgE2AgAjAEGM6asBaiO2ATYCACMAQaTpqwFqI7YBNgIAIwBBvOmrAWojtgE2AgAjAEHU6asBaiO2ATYCACMAQezpqwFqI7YBNgIAIwBBhOqrAWojtgE2AgAjAEGc6qsBaiO2ATYCACMAQbTqqwFqI7YBNgIAIwBBzOqrAWojtgE2AgAjAEHk6qsBaiO2ATYCACMAQfzqqwFqI7YBNgIAIwBBlOurAWojtgE2AgAjAEGs66sBaiO2ATYCACMAQcTrqwFqI7YBNgIAIwBB3OurAWojtgE2AgAjAEH066sBaiO2ATYCACMAQYzsqwFqI7YBNgIAIwBBpOyrAWojtgE2AgAjAEG87KsBaiO2ATYCACMAQdTsqwFqI7YBNgIAIwBB7OyrAWojtgE2AgAjAEGE7asBaiO2ATYCACMAQZztqwFqI7YBNgIAIwBBtO2rAWojtgE2AgAjAEHM7asBaiO2ATYCACMAQeTtqwFqI7YBNgIAIwBB/O2rAWojtgE2AgAjAEGU7qsBaiO2ATYCACMAQazuqwFqI7YBNgIAIwBBxO6rAWojtgE2AgAjAEHc7qsBaiO2ATYCACMAQfTuqwFqI7YBNgIAIwBBjO+rAWojtgE2AgAjAEGk76sBaiO2ATYCACMAQbzvqwFqI7YBNgIAIwBB1O+rAWojtgE2AgAjAEHs76sBaiO2ATYCACMAQYTwqwFqI7YBNgIAIwBBnPCrAWojtgE2AgAjAEG08KsBaiO2ATYCACMAQczwqwFqI7YBNgIAIwBB5PCrAWojtgE2AgAjAEH88KsBaiO2ATYCACMAQZTxqwFqI7YBNgIAIwBBrPGrAWojtgE2AgAjAEHE8asBaiO2ATYCACMAQdzxqwFqI7YBNgIAIwBB9PGrAWojtgE2AgAjAEGM8qsBaiO2ATYCACMAQaTyqwFqI7YBNgIAIwBBvPKrAWojtgE2AgAjAEHU8qsBaiO2ATYCACMAQezyqwFqI7YBNgIAIwBBhPOrAWojtgE2AgAjAEGc86sBaiO2ATYCACMAQbTzqwFqI7YBNgIAIwBBzPOrAWojtgE2AgAjAEHk86sBaiO2ATYCACMAQfzzqwFqI7YBNgIAIwBBlPSrAWojtgE2AgAjAEGs9KsBaiO2ATYCACMAQcT0qwFqI7YBNgIAIwBB3PSrAWojtgE2AgAjAEH09KsBaiO2ATYCACMAQYz1qwFqI7YBNgIAIwBBpPWrAWojtgE2AgAjAEG89asBaiO2ATYCACMAQdT1qwFqI7YBNgIAIwBB7PWrAWojtgE2AgAjAEGE9qsBaiO2ATYCACMAQZz2qwFqI7YBNgIAIwBBtParAWojtgE2AgAjAEHM9qsBaiO2ATYCACMAQeT2qwFqI7YBNgIAIwBB/ParAWojtgE2AgAjAEGU96sBaiO2ATYCACMAQaz3qwFqI7YBNgIAIwBBxPerAWojtgE2AgAjAEHc96sBaiO2ATYCACMAQfT3qwFqI7YBNgIAIwBBjPirAWojtgE2AgAjAEGk+KsBaiO2ATYCACMAQbz4qwFqI7YBNgIAIwBB1PirAWojtgE2AgAjAEHs+KsBaiO2ATYCACMAQYT5qwFqI7YBNgIAIwBBnPmrAWojtgE2AgAjAEG0+asBaiO2ATYCACMAQcz5qwFqI7YBNgIAIwBB5PmrAWojtgE2AgAjAEH8+asBaiO2ATYCACMAQZT6qwFqI7YBNgIAIwBBrPqrAWojtgE2AgAjAEHE+qsBaiO2ATYCACMAQdz6qwFqI7YBNgIAIwBB9PqrAWojtgE2AgAjAEGM+6sBaiO2ATYCACMAQaT7qwFqI7YBNgIAIwBBvPurAWojtgE2AgAjAEHU+6sBaiO2ATYCACMAQez7qwFqI7YBNgIAIwBBhPyrAWojtgE2AgAjAEGc/KsBaiO2ATYCACMAQbT8qwFqI7YBNgIAIwBBzPyrAWojtgE2AgAjAEHk/KsBaiO2ATYCACMAQfz8qwFqI7YBNgIAIwBBlP2rAWojtgE2AgAjAEGs/asBaiO2ATYCACMAQcT9qwFqI7YBNgIAIwBB3P2rAWojtgE2AgAjAEH0/asBaiO2ATYCACMAQYz+qwFqI7YBNgIAIwBBpP6rAWojtgE2AgAjAEG8/qsBaiO2ATYCACMAQdT+qwFqI7YBNgIAIwBB7P6rAWojtgE2AgAjAEGE/6sBaiO2ATYCACMAQZz/qwFqI7YBNgIAIwBBtP+rAWojtgE2AgAjAEHM/6sBaiO2ATYCACMAQeT/qwFqI7YBNgIAIwBB/P+rAWojtgE2AgAjAEGUgKwBaiO2ATYCACMAQayArAFqI7YBNgIAIwBBxICsAWojtgE2AgAjAEHcgKwBaiO2ATYCACMAQfSArAFqI7YBNgIAIwBBjIGsAWojtgE2AgAjAEGkgawBaiO2ATYCACMAQbyBrAFqI7YBNgIAIwBB1IGsAWojtgE2AgAjAEHsgawBaiO2ATYCACMAQYSCrAFqI7YBNgIAIwBBnIKsAWojtgE2AgAjAEG0gqwBaiO2ATYCACMAQcyCrAFqI7YBNgIAIwBB5IKsAWojtgE2AgAjAEH8gqwBaiO2ATYCACMAQZSDrAFqI7YBNgIAIwBBrIOsAWojtgE2AgAjAEHEg6wBaiO2ATYCACMAQdyDrAFqI7YBNgIAIwBB9IOsAWojtgE2AgAjAEGMhKwBaiO2ATYCACMAQaSErAFqI7YBNgIAIwBBvISsAWojtgE2AgAjAEHUhKwBaiO2ATYCACMAQeyErAFqI7YBNgIAIwBBhIWsAWojtgE2AgAjAEGchawBaiO2ATYCACMAQbSFrAFqI7YBNgIAIwBBzIWsAWojtgE2AgAjAEHkhawBaiO2ATYCACMAQfyFrAFqI7YBNgIAIwBBlIasAWojtgE2AgAjAEGshqwBaiO2ATYCACMAQcSGrAFqI7YBNgIAIwBB3IasAWojtgE2AgAjAEH0hqwBaiO2ATYCACMAQYyHrAFqI7YBNgIAIwBBpIesAWojtgE2AgAjAEG8h6wBaiO2ATYCACMAQdSHrAFqI7YBNgIAIwBB7IesAWojtgE2AgAjAEGEiKwBaiO2ATYCACMAQZyIrAFqI7YBNgIAIwBBtIisAWojtgE2AgAjAEHMiKwBaiO2ATYCACMAQeSIrAFqI7YBNgIAIwBB/IisAWojtgE2AgAjAEGUiawBaiO2ATYCACMAQayJrAFqI7YBNgIAIwBBxImsAWojtgE2AgAjAEHciawBaiO2ATYCACMAQfSJrAFqI7YBNgIAIwBBjIqsAWojsQE2AgAjAEGwiqwBaiOxATYCACMAQdSKrAFqI7EBNgIAIwBB+IqsAWojsQE2AgAjAEGci6wBaiOxATYCACMAQcCLrAFqI7EBNgIAIwBB5IusAWojsQE2AgAjAEGIjKwBaiOxATYCACMAQayMrAFqI7EBNgIAIwBByIysAWojsQE2AgAjAEHkjKwBaiOxATYCACMAQYCNrAFqI7EBNgIAIwBBnI2sAWojsQE2AgAjAEG4jawBaiOxATYCACMAQdSNrAFqI7EBNgIAIwBB+I2sAWojsQE2AgAjAEGUjqwBaiOxATYCACMAQcSOrAFqI7EBNgIAIwBB4I6sAWojsQE2AgAjAEH8jqwBaiOxATYCACMAQZiPrAFqI7EBNgIAIwBBuI+sAWojsQE2AgAjAEHYj6wBaiOxATYCACMAQfiPrAFqI7EBNgIAIwBBoJCsAWojsQE2AgAjAEHAkKwBaiOxATYCACMAQeiQrAFqI7EBNgIAIwBBhJGsAWojsQE2AgAjAEGskawBaiOxATYCACMAQdSRrAFqI7EBNgIAIwBB9JGsAWojsQE2AgAjAEGgkqwBaiOxATYCACMAQcCSrAFqI7EBNgIAIwBB5JKsAWojsQE2AgAjAEGIk6wBaiOxATYCACMAQayTrAFqI7EBNgIAIwBBzJOsAWojsQE2AgAjAEHsk6wBaiOxATYCACMAQZCUrAFqI7EBNgIAIwBBuJSsAWojsQE2AgAjAEHclKwBaiOxATYCACMAQYCVrAFqI7EBNgIAIwBBpJWsAWojsQE2AgAjAEHIlawBaiOxATYCACMAQfCVrAFqI7EBNgIAIwBBmJasAWojsQE2AgAjAEG8lqwBaiOxATYCACMAQeCWrAFqI7EBNgIAIwBBiJesAWojsQE2AgAjAEGsl6wBaiOxATYCACMAQdiXrAFqI7EBNgIAIwBBgJisAWojsQE2AgAjAEGkmKwBaiOxATYCACMAQcyYrAFqI7EBNgIAIwBB8JisAWojsQE2AgAjAEGQmawBaiOxATYCACMAQbSZrAFqI7EBNgIAIwBB2JmsAWojsQE2AgAjAEH8mawBaiOxATYCACMAQaCarAFqI7EBNgIAIwBBwJqsAWojsQE2AgAjAEHkmqwBaiOxATYCACMAQYSbrAFqI7EBNgIAIwBBqJusAWojsQE2AgAjAEHIm6wBaiOxATYCACMAQeybrAFqI7EBNgIAIwBBkJysAWojsQE2AgAjAEG0nKwBaiOxATYCACMAQdycrAFqI7EBNgIAIwBBgJ2sAWojsQE2AgAjAEGknawBaiOxATYCACMAQcSdrAFqI7EBNgIAIwBB5J2sAWojsQE2AgAjAEGInqwBaiOxATYCACMAQbSerAFqI7EBNgIAIwBB3J6sAWojsQE2AgAjAEGAn6wBaiOxATYCACMAQaifrAFqI7EBNgIAIwBB1J+sAWojsQE2AgAjAEH8n6wBaiOxATYCACMAQZygrAFqI7EBNgIAIwBBwKCsAWojsQE2AgAjAEHkoKwBaiOxATYCACMAQYihrAFqI7EBNgIAIwBBsKGsAWojsQE2AgAjAEHUoawBaiOxATYCACMAQfihrAFqI7EBNgIAIwBBnKKsAWojsQE2AgAjAEHAoqwBaiOxATYCACMAQeSirAFqI7EBNgIAIwBBiKOsAWojsQE2AgAjAEGso6wBaiOxATYCACMAQdijrAFqI7EBNgIAIwBBhKSsAWojsQE2AgAjAEGkpKwBaiOxATYCACMAQcikrAFqI7EBNgIAIwBB6KSsAWojsQE2AgAjAEGMpawBaiOxATYCACMAQbClrAFqI7EBNgIAIwBB4KWsAWojsQE2AgAjAEGEpqwBaiOxATYCACMAQaimrAFqI7EBNgIAIwBB0KasAWojsQE2AgAjAEH0pqwBaiOxATYCACMAQZSnrAFqI7EBNgIAIwBBtKesAWojsQE2AgAjAEHcp6wBaiOxATYCACMAQYCorAFqI7EBNgIAIwBBpKisAWojsQE2AgAjAEHIqKwBaiOxATYCACMAQeiorAFqI7EBNgIAIwBBjKmsAWojsQE2AgAjAEGwqawBaiOxATYCACMAQdSprAFqI7EBNgIAIwBB9KmsAWojsQE2AgAjAEGYqqwBaiOxATYCACMAQcCqrAFqI7EBNgIAIwBB4KqsAWojsQE2AgAjAEGEq6wBaiOxATYCACMAQaSrrAFqI7EBNgIAIwBBxKusAWojsQE2AgAjAEHkq6wBaiOxATYCACMAQYisrAFqI7EBNgIAIwBBsKysAWojsQE2AgAjAEHUrKwBaiOxATYCACMAQfisrAFqI7EBNgIAIwBBmK2sAWojsQE2AgAjAEHArawBaiOxATYCACMAQeStrAFqI7EBNgIAIwBBiK6sAWojsQE2AgAjAEGwrqwBaiOxATYCACMAQdSurAFqI7EBNgIAIwBB9K6sAWojsQE2AgAjAEGUr6wBaiOxATYCACMAQbivrAFqI7EBNgIAIwBB4K+sAWojsQE2AgAjAEGEsKwBaiOxATYCACMAQaiwrAFqI7EBNgIAIwBBzLCsAWojsQE2AgAjAEHwsKwBaiOxATYCACMAQZixrAFqI7EBNgIAIwBBvLGsAWojsQE2AgAjAEHksawBaiOxATYCACMAQYyyrAFqI7EBNgIAIwBBsLKsAWojsQE2AgAjAEHUsqwBaiOxATYCACMAQfiyrAFqI7EBNgIAIwBBnLOsAWojsQE2AgAjAEG8s6wBaiOxATYCACMAQeCzrAFqI7EBNgIAIwBBhLSsAWojsQE2AgAjAEGotKwBaiOxATYCACMAQcy0rAFqI7EBNgIAIwBB8LSsAWojsQE2AgAjAEGYtawBaiOxATYCACMAQby1rAFqI7EBNgIAIwBB3LWsAWojsQE2AgAjAEGEtqwBaiOxATYCACMAQai2rAFqI7EBNgIAIwBBzLasAWojsQE2AgAjAEH0tqwBaiOxATYCACMAQZi3rAFqI7EBNgIAIwBBwLesAWojsQE2AgAjAEHkt6wBaiOxATYCACMAQYi4rAFqI7EBNgIAIwBBqLisAWojsQE2AgAjAEHIuKwBaiOxATYCACMAQfS4rAFqI7EBNgIAIwBBoLmsAWojsQE2AgAjAEHEuawBaiOxATYCACMAQei5rAFqI7EBNgIAIwBBpLqsAWojsQE2AgAjAEHYuqwBaiOxATYCACMAQYS7rAFqI7EBNgIAIwBBvLusAWojsQE2AgAjAEHou6wBaiOxATYCACMAQYy8rAFqI7EBNgIAIwBBrLysAWojsQE2AgAjAEHQvKwBaiOxATYCACMAQfS8rAFqI7EBNgIAIwBBmL2sAWojsQE2AgAjAEG8vawBaiOxATYCACMAQeS9rAFqI7EBNgIAIwBBiL6sAWojsQE2AgAjAEGwvqwBaiOxATYCACMAQdi+rAFqI7EBNgIAIwBBgL+sAWojsQE2AgAjAEGsv6wBaiOxATYCACMAQdS/rAFqI7EBNgIAIwBBgMCsAWojsQE2AgAjAEGswKwBaiOxATYCACMAQdTArAFqI7EBNgIAIwBB+MCsAWojsQE2AgAjAEGcwawBaiOxATYCACMAQcTBrAFqI7EBNgIAIwBB+MGsAWojsQE2AgAjAEGswqwBaiOxATYCACMAQdDCrAFqI7EBNgIAIwBB7MKsAWojsQE2AgAjAEGMw6wBaiOxATYCACMAQajDrAFqI7EBNgIAIwBByMOsAWojsQE2AgAjAEHsw6wBaiOxATYCACMAQYzErAFqI7EBNgIAIwBBsMSsAWojsQE2AgAjAEHUxKwBaiOxATYCACMAQfTErAFqI7EBNgIAIwBBlMWsAWojsQE2AgAjAEG0xawBaiOxATYCACMAQdTFrAFqI7EBNgIAIwBB9MWsAWojsQE2AgAjAEGUxqwBaiOxATYCACMAQbTGrAFqI7EBNgIAIwBB1MasAWojsQE2AgAjAEH0xqwBaiOxATYCACMAQZzHrAFqI7EBNgIAIwBBwMesAWojsQE2AgAjAEHsx6wBaiOxATYCACMAQZTIrAFqI7EBNgIAIwBBuMisAWojsQE2AgAjAEHYyKwBaiOxATYCACMAQfjIrAFqI7EBNgIAIwBBnMmsAWojsQE2AgAjAEHAyawBaiOxATYCACMAQeTJrAFqI7EBNgIAIwBBhMqsAWojsQE2AgAjAEGoyqwBaiOxATYCACMAQczKrAFqI7EBNgIAIwBB7MqsAWojsQE2AgAjAEGQy6wBaiOxATYCACMAQbDLrAFqI7EBNgIAIwBB1MusAWojsQE2AgAjAEH0y6wBaiOxATYCACMAQZjMrAFqI7EBNgIAIwBBuMysAWojsQE2AgAjAEHYzKwBaiOxATYCACMAQfTMrAFqI7EBNgIAIwBBmM2sAWojsQE2AgAjAEG4zawBaiOxATYCACMAQdzNrAFqI7EBNgIAIwBB/M2sAWojsQE2AgAjAEGgzqwBaiOxATYCACMAQbzOrAFqI7EBNgIAIwBB5M6sAWojsQE2AgAjAEGEz6wBaiOxATYCACMAQajPrAFqI7EBNgIAIwBByM+sAWojsQE2AgAjAEHoz6wBaiOxATYCACMAQYjQrAFqI7EBNgIAIwBBqNCsAWojsQE2AgAjAEHI0KwBaiOxATYCACMAQfDQrAFqI7EBNgIAIwBBlNGsAWojsQE2AgAjAEG40awBaiOxATYCACMAQdjRrAFqI7EBNgIAIwBB9NGsAWojsQE2AgAjAEGU0qwBaiOxATYCACMAQbTSrAFqI7EBNgIAIwBB2NKsAWojsQE2AgAjAEH40qwBaiOxATYCACMAQZjTrAFqI7EBNgIAIwBBuNOsAWojsQE2AgAjAEHc06wBaiOxATYCACMAQfzTrAFqI7EBNgIAIwBBnNSsAWojsQE2AgAjAEG41KwBaiOxATYCACMAQdTUrAFqI7EBNgIAIwBB+NSsAWojsQE2AgAjAEGk1awBaiOxATYCACMAQdDVrAFqI7EBNgIAIwBB8NWsAWojsQE2AgAjAEGU1qwBaiOxATYCACMAQbTWrAFqI7EBNgIAIwBB0NasAWojsQE2AgAjAEHw1qwBaiOxATYCACMAQZjXrAFqI7EBNgIAIwBBuNesAWojsQE2AgAjAEHY16wBaiOxATYCACMAQfjXrAFqI7EBNgIAIwBBmNisAWojsQE2AgAjAEG42KwBaiOxATYCACMAQdjYrAFqI7EBNgIAIwBBgNmsAWojsQE2AgAjAEGo2awBaiOxATYCACMAQdTZrAFqI7EBNgIAIwBB8NmsAWojsQE2AgAjAEGM2qwBaiOxATYCACMAQajarAFqI7EBNgIAIwBByNqsAWojsQE2AgAjAEHo2qwBaiOxATYCACMAQYzbrAFqI7EBNgIAIwBBrNusAWojsQE2AgAjAEHQ26wBaiOxATYCACMAQfTbrAFqI7EBNgIAIwBBmNysAWojsQE2AgAjAEHE3KwBaiOxATYCACMAQeTcrAFqI7EBNgIAIwBBhN2sAWojsQE2AgAjAEGk3awBaiOxATYCACMAQcTdrAFqI7EBNgIAIwBB6N2sAWojsQE2AgAjAEGI3qwBaiOxATYCACMAQazerAFqI7EBNgIAIwBBzN6sAWojsQE2AgAjAEHs3qwBaiOxATYCACMAQZDfrAFqI7EBNgIAIwBBsN+sAWojsQE2AgAjAEHQ36wBaiOxATYCACMAQfDfrAFqI7EBNgIAIwBBkOCsAWojsQE2AgAjAEGw4KwBaiOxATYCACMAQeTgrAFqI7EBNgIAIwBBhOGsAWojsQE2AgAjAEGk4awBaiOxATYCACMAQcjhrAFqI7EBNgIAIwBB6OGsAWojsQE2AgAjAEGE4qwBaiOxATYCACMAQajirAFqI7EBNgIAIwBB0OKsAWojsQE2AgAjAEHw4qwBaiOxATYCACMAQZDjrAFqI7EBNgIAIwBBtOOsAWojsQE2AgAjAEHY46wBaiOxATYCACMAQfzjrAFqI7EBNgIAIwBBnOSsAWojsQE2AgAjAEHA5KwBaiOxATYCACMAQdzkrAFqI7EBNgIAIwBB+OSsAWojsQE2AgAjAEGU5awBaiOxATYCACMAQbDlrAFqI7EBNgIAIwBBzOWsAWojsQE2AgAjAEHo5awBaiOxATYCACMAQYTmrAFqI7EBNgIAIwBBoOasAWojsQE2AgAjAEG85qwBaiOxATYCACMAQdjmrAFqI7EBNgIAIwBB9OasAWojsQE2AgAjAEGQ56wBaiOxATYCACMAQaznrAFqI7EBNgIAIwBByOesAWojsQE2AgAjAEHk56wBaiOxATYCACMAQYDorAFqI7EBNgIAIwBBnOisAWojsQE2AgAjAEG46KwBaiOxATYCACMAQdTorAFqI7EBNgIAIwBB8OisAWojsQE2AgAjAEGM6awBaiOxATYCACMAQajprAFqI7EBNgIAIwBBxOmsAWojsQE2AgAjAEHg6awBaiOxATYCACMAQfzprAFqI7EBNgIAIwBBmOqsAWojsQE2AgAjAEG06qwBaiOxATYCACMAQdDqrAFqI7EBNgIAIwBB7OqsAWojsQE2AgAjAEGI66wBaiOxATYCACMAQaTrrAFqI7EBNgIAIwBBwOusAWojsQE2AgAjAEHc66wBaiOxATYCACMAQfjrrAFqI7EBNgIAIwBBlOysAWojsQE2AgAjAEGw7KwBaiOxATYCACMAQczsrAFqI7EBNgIAIwBB6OysAWojsQE2AgAjAEGE7awBaiOxATYCACMAQaDtrAFqI7EBNgIAIwBBvO2sAWojsQE2AgAjAEHY7awBaiOxATYCACMAQfTtrAFqI7EBNgIAIwBBkO6sAWojsQE2AgAjAEGs7qwBaiOxATYCACMAQcjurAFqI7EBNgIAIwBB5O6sAWojsQE2AgAjAEGA76wBaiOxATYCACMAQZzvrAFqI7EBNgIAIwBBuO+sAWojsQE2AgAjAEHU76wBaiOxATYCACMAQfDvrAFqI7EBNgIAIwBBjPCsAWojsQE2AgAjAEGo8KwBaiOxATYCACMAQcTwrAFqI7EBNgIAIwBB4PCsAWojsQE2AgAjAEH88KwBaiOxATYCACMAQZjxrAFqI7EBNgIAIwBBtPGsAWojsQE2AgAjAEHQ8awBaiOxATYCACMAQezxrAFqI7EBNgIAIwBBiPKsAWojsQE2AgAjAEGk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AgAjAEHAlK0BaiOxATYCACMAQeiUrQFqI7EBNgIAIwBBkJWtAWojsQE2AgAjAEG4la0BaiOxATYCACMAQeCVrQFqI7EBNgIAIwBBiJatAWojsQE2AgAjAEGwlq0BaiOxATYCACMAQdiWrQFqI7EBNgIAIwBBgJetAWojsQE2AgAjAEGol60BaiOxATYCACMAQdCXrQFqI7EBNgIAIwBB+JetAWojsQE2AgAjAEGgmK0BaiOxATYCACMAQciYrQFqI7EBNgIAIwBB8JitAWojsQE2AgAjAEGYma0BaiOxATYCACMAQcCZrQFqI7EBNgIAIwBB6JmtAWojsQE2AgAjAEGQmq0BaiOxATYCACMAQbiarQFqI7EBNgIAIwBB4JqtAWojsQE2AgAjAEGIm60BaiOxATYCACMAQbCbrQFqI7EBNgIAIwBB2JutAWojsQE2AgAjAEGAnK0BaiOxATYCACMAQaicrQFqI7EBNgIAIwBB0JytAWojsQE2AgAjAEH4nK0BaiOxATYCACMAQaCdrQFqI7EBNgIAIwBByJ2tAWojsQE2AgAjAEHwna0BaiOxATYCACMAQZierQFqI7EBNgIAIwBBwJ6tAWojsQE2AgAjAEHonq0BaiOxATYCACMAQZCfrQFqI7EBNgIAIwBBuJ+tAWojsQE2AgAjAEHgn60BaiOxATYCACMAQYigrQFqI7EBNgIAIwBBsKCtAWojsQE2AgAjAEHYoK0BaiOxATYCACMAQYChrQFqI7EBNgIAIwBBqKGtAWojsQE2AgAjAEHQoa0BaiOxATYCACMAQfihrQFqI7EBNgIAIwBBoKKtAWojsQE2AgAjAEHIoq0BaiOxATYCACMAQfCirQFqI7EBNgIAIwBBmKOtAWojsQE2AgAjAEHAo60BaiOxATYCACMAQeijrQFqI7EBNgIAIwBBkKStAWojsQE2AgAjAEG4pK0BaiOxATYCACMAQeCkrQFqI7EBNgIAIwBBiKWtAWojsQE2AgAjAEGwpa0BaiOxATYCACMAQdilrQFqI7EBNgIAIwBBgKatAWojsQE2AgAjAEGopq0BaiOxATYCACMAQdCmrQFqI7EBNgIAIwBB+KatAWojsQE2AgAjAEGgp60BaiOxATYCACMAQcinrQFqI7EBNgIAIwBB8KetAWojsQE2AgAjAEGYqK0BaiOxATYCACMAQciorQFqI7QBNgIAIwBBkM+wAWojAEHhpgtqNgIAIwBBlM+wAWojAEH2pAtqNgIAIwBBmM+wAWojAEHjpgtqNgIAIwBBoM+wAWojAEHV6wVqNgIAIwBBpM+wAWojAEG0NWo2AgAjAEGoz7ABaiMAQYm8C2o2AgAjAEGsz7ABaiMAQYq2C2o2AgAjAEGwz7ABaiMAQaP+Bmo2AgAjAEG0z7ABaiMAQf3RBmo2AgAjAEG4z7ABaiMAQe/aBWo2AgAjAEG8z7ABaiMAQdaRAmo2AgAjAEHAz7ABaiMAQezaB2o2AgAjAEHEz7ABaiMAQdPpBWo2AgAjAEHIz7ABaiMAQfzTCWo2AgAjAEGI07ABaiO5ATYCACMAQZjTsAFqI7kBNgIAIwBBqNOwAWojuQE2AgAjAEG407ABaiO5ATYCACMAQcjTsAFqI7kBNgIAIwBB2NOwAWojuQE2AgAjAEHo07ABaiO5ATYCACMAQfjTsAFqI7kBNgIAIwBBiNSwAWojuQE2AgAjAEGY1LABaiO5ATYCACMAQajUsAFqI7kBNgIAIwBBuNSwAWojuQE2AgAjAEHI1LABaiO5ATYCACMAQdjUsAFqI7kBNgIAIwBB6NSwAWojuQE2AgAjAEH41LABaiO5ATYCACMAQYjVsAFqI7kBNgIAIwBBmNWwAWojuQE2AgAjAEGo1bABaiO5ATYCACMAQbjVsAFqI7kBNgIAIwBByNWwAWojuQE2AgAjAEHY1bABaiO5ATYCACMAQejVsAFqI7kBNgIAIwBB+NWwAWojuQE2AgAjAEGI1rABaiO5ATYCACMAQZjWsAFqI7kBNgIAIwBBqNawAWojuQE2AgAjAEG41rABaiO5ATYCACMAQcjWsAFqI7kBNgIAIwBB2NawAWojuQE2AgAjAEHo1rABaiO5ATYCACMAQfjWsAFqI7kBNgIAIwBBiNewAWojuQE2AgAjAEGY17ABaiO5ATYCACMAQajXsAFqI7kBNgIAIwBBuNewAWojuQE2AgAjAEHI17ABaiO5ATYCACMAQdjXsAFqI7kBNgIAIwBB6NewAWojuQE2AgAjAEH417ABaiO5ATYCACMAQYjYsAFqI7kBNgIAIwBBmNiwAWojuQE2AgAjAEGo2LABaiO5ATYCACMAQbjYsAFqI7kBNgIAIwBByNiwAWojuQE2AgAjAEHY2LABaiO5ATYCACMAQejYsAFqI7kBNgIAIwBB+NiwAWojuQE2AgAjAEGI2bABaiO5ATYCACMAQZjZsAFqI7kBNgIAIwBBqNmwAWojuQE2AgAjAEG42bABaiO5ATYCACMAQcjZsAFqI7kBNgIAIwBB2NmwAWojuQE2AgAjAEHo2bABaiO5ATYCACMAQfjZsAFqI7kBNgIAIwBBiNqwAWojuQE2AgAjAEGY2rABaiO5ATYCACMAQajasAFqI7kBNgIAIwBBuNqwAWojuQE2AgAjAEHI2rABaiO5ATYCACMAQdjasAFqI7kBNgIAIwBB6NqwAWojuQE2AgAjAEH42rABaiO5ATYCACMAQYjbsAFqI7kBNgIAIwBBmNuwAWojuQE2AgAjAEGo27ABaiO5ATYCACMAQbjbsAFqI7kBNgIAIwBByNuwAWojuQE2AgAjAEHY27ABaiO5ATYCACMAQejbsAFqI7kBNgIAIwBB+NuwAWojuQE2AgAjAEGI3LABaiO5ATYCACMAQZjcsAFqI7kBNgIAIwBBqNywAWojuQE2AgAjAEG43LABaiO5ATYCACMAQcjcsAFqI7kBNgIAIwBB2NywAWojuQE2AgAjAEHo3LABaiO5ATYCACMAQfjcsAFqI7kBNgIAIwBBiN2wAWojuQE2AgAjAEGY3bABaiO5ATYCACMAQajdsAFqI7kBNgIAIwBBuN2wAWojuQE2AgAjAEHI3bABaiO5ATYCACMAQdjdsAFqI7kBNgIAIwBB6N2wAWojuQE2AgAjAEH43bABaiO5ATYCACMAQYjesAFqI7kBNgIAIwBBmN6wAWojuQE2AgAjAEGo3rABaiO5ATYCACMAQbjesAFqI7kBNgIAIwBByN6wAWojuQE2AgAjAEHY3rABaiO5ATYCACMAQejesAFqI7kBNgIAIwBB+N6wAWojuQE2AgAjAEGI37ABaiO5ATYCACMAQZjfsAFqI7kBNgIAIwBBqN+wAWojuQE2AgAjAEG437ABaiO5ATYCACMAQcjfsAFqI7kBNgIAIwBB2N+wAWojuQE2AgAjAEHo37ABaiO5ATYCACMAQfjfsAFqI7kBNgIAIwBBiOCwAWojuQE2AgAjAEGY4LABaiO5ATYCACMAQajgsAFqI7kBNgIAIwBBuOCwAWojuQE2AgAjAEHI4LABaiO5ATYCACMAQdjgsAFqI7kBNgIAIwBB6OCwAWojuQE2AgAjAEH44LABaiO5ATYCACMAQYjhsAFqI7kBNgIAIwBBmOGwAWojuQE2AgAjAEGo4bABaiO5ATYCACMAQbjhsAFqI7kBNgIAIwBByOGwAWojuQE2AgAjAEHY4bABaiO5ATYCACMAQejhsAFqI7kBNgIAIwBB+OGwAWojuQE2AgAjAEGI4rABaiO5ATYCACMAQZjisAFqI7kBNgIAIwBBqOKwAWojuQE2AgAjAEG44rABaiO5ATYCACMAQcjisAFqI7kBNgIAIwBB2OKwAWojuQE2AgAjAEHo4rABaiO5ATYCACMAQfjisAFqI7kBNgIAIwBBiOOwAWojuQE2AgAjAEGY47ABaiO5ATYCACMAQajjsAFqI7kBNgIAIwBBuOOwAWojuQE2AgAjAEHI47ABaiO5ATYCACMAQdjjsAFqI7kBNgIAIwBB6OOwAWojuQE2AgAjAEH447ABaiO5ATYCACMAQYjksAFqI7kBNgIAIwBBmOSwAWojuQE2AgAjAEGo5LABaiO5ATYCACMAQbjksAFqI7kBNgIAIwBByOSwAWojuQE2AgAjAEHY5LABaiO5ATYCACMAQejksAFqI7kBNgIAIwBB+OSwAWojuQE2AgAjAEGI5bABaiO5ATYCACMAQZjlsAFqI7kBNgIAIwBBqOWwAWojuQE2AgAjAEG45bABaiO5ATYCACMAQcjlsAFqI7kBNgIAIwBB2OWwAWojuQE2AgAjAEHo5bABaiO5ATYCACMAQfjlsAFqI7kBNgIAIwBBiOawAWojuQE2AgAjAEGY5rABaiO5ATYCACMAQajmsAFqI7kBNgIAIwBBuOawAWojuQE2AgAjAEHI5rABaiO5ATYCACMAQdjmsAFqI7kBNgIAIwBB6OawAWojuQE2AgAjAEH45rABaiO5ATYCACMAQYjnsAFqI7kBNgIAIwBBmOewAWojuQE2AgAjAEGo57ABaiO5ATYCACMAQbjnsAFqI7kBNgIAIwBByOewAWojuQE2AgAjAEHY57ABaiO5ATYCACMAQejnsAFqI7kBNgIAIwBB+OewAWojuQE2AgAjAEGI6LABaiO5ATYCACMAQZjosAFqI7kBNgIAIwBBqOiwAWojuQE2AgAjAEG46LABaiO5ATYCACMAQcjosAFqI7kBNgIAIwBB2OiwAWojuQE2AgAjAEHo6LABaiO5ATYCACMAQfjosAFqI7kBNgIAIwBBiOmwAWojuQE2AgAjAEGY6bABaiO5ATYCACMAQajpsAFqI7kBNgIAIwBBuOmwAWojuQE2AgAjAEHI6bABaiO5ATYCACMAQdjpsAFqI7kBNgIAIwBB6OmwAWojuQE2AgAjAEH46bABaiO5ATYCACMAQYjqsAFqI7kBNgIAIwBBmOqwAWojuQE2AgAjAEGo6rABaiO5ATYCACMAQbjqsAFqI7kBNgIAIwBByOqwAWojuQE2AgAjAEHY6rABaiO5ATYCACMAQejqsAFqI7kBNgIAIwBB+OqwAWojuQE2AgAjAEGI67ABaiO5ATYCACMAQZjrsAFqI7kBNgIAIwBBqOuwAWojuQE2AgAjAEG467ABaiO5ATYCACMAQcjrsAFqI7kBNgIAIwBB2OuwAWojuQE2AgAjAEHo67ABaiO5ATYCACMAQfjrsAFqI7kBNgIAIwBBiOywAWojuQE2AgAjAEGY7LABaiO5ATYCACMAQajssAFqI7kBNgIAIwBBuOywAWojuQE2AgAjAEHI7LABaiO5ATYCACMAQdjssAFqI7kBNgIAIwBB6OywAWojuQE2AgAjAEH47LABaiO5ATYCACMAQYjtsAFqI7kBNgIAIwBBmO2wAWojuQE2AgAjAEGo7bABaiO5ATYCACMAQbjtsAFqI7kBNgIAIwBByO2wAWojuQE2AgAjAEHY7bABaiO5ATYCACMAQejtsAFqI7kBNgIAIwBB+O2wAWojuQE2AgAjAEGI7rABaiO5ATYCACMAQZjusAFqI7kBNgIAIwBBqO6wAWojuQE2AgAjAEG47rABaiO5ATYCACMAQcjusAFqI7kBNgIAIwBB2O6wAWojuQE2AgAjAEHo7rABaiO5ATYCACMAQfjusAFqI7kBNgIAIwBBiO+wAWojuQE2AgAjAEGY77ABaiO5ATYCACMAQajvsAFqI7kBNgIAIwBBuO+wAWojuQE2AgAjAEHI77ABaiO5ATYCACMAQdjvsAFqI7kBNgIAIwBB6O+wAWojuQE2AgAjAEH477ABaiO5ATYCACMAQYjwsAFqI7kBNgIAIwBBmPCwAWojuQE2AgAjAEGo8LABaiO5ATYCACMAQbjwsAFqI7kBNgIAIwBByPCwAWojuQE2AgAjAEHY8LABaiO5ATYCACMAQejwsAFqI7kBNgIAIwBB+PCwAWojuQE2AgAjAEGI8bABaiO5ATYCACMAQZjxsAFqI7kBNgIAIwBBqPGwAWojuQE2AgAjAEG48bABaiO5ATYCACMAQcjxsAFqI7kBNgIAIwBB2PGwAWojuQE2AgAjAEHo8bABaiO5ATYCACMAQfjxsAFqI7kBNgIAIwBBiPKwAWojuQE2AgAjAEGY8rABaiO5ATYCACMAQajysAFqI7kBNgIAIwBBuPKwAWojuQE2AgAjAEHI8rABaiO5ATYCACMAQdjysAFqI7kBNgIAIwBB6PKwAWojuQE2AgAjAEH48rABaiO5ATYCACMAQYjzsAFqI7kBNgIAIwBBmPOwAWojuQE2AgAjAEGo87ABaiO5ATYCACMAQbjzsAFqI7kBNgIAIwBByPOwAWojuQE2AgAjAEHY87ABaiO5ATYCACMAQejzsAFqI7YBNgIAIwBB/POwAWojtgE2AgAjAEGU9LABaiO2ATYCACMAQaz0sAFqI7YBNgIAIwBBxPSwAWojtgE2AgAjAEHc9LABaiO2ATYCACMAQfT0sAFqI7YBNgIAIwBBjPWwAWojtgE2AgAjAEGk9bABaiO2ATYCACMAQbz1sAFqI7YBNgIAIwBB1PWwAWojtgE2AgAjAEHs9bABaiO2ATYCACMAQYT2sAFqI7YBNgIAIwBBnPawAWojtgE2AgAjAEG09rABaiO2ATYCACMAQcz2sAFqI7YBNgIAIwBB5PawAWojtgE2AgAjAEH89rABaiO2ATYCACMAQZT3sAFqI7YBNgIAIwBBrPewAWojtgE2AgAjAEHE97ABaiO2ATYCACMAQdz3sAFqI7YBNgIAIwBB9PewAWojtgE2AgAjAEGM+LABaiO2ATYCACMAQaT4sAFqI7YBNgIAIwBBvPiwAWojtgE2AgAjAEHU+LABaiO2ATYCACMAQez4sAFqI7YBNgIAIwBBhPmwAWojtgE2AgAjAEGc+bABaiO2ATYCACMAQbT5sAFqI7YBNgIAIwBBzPmwAWojtgE2AgAjAEHk+bABaiO2ATYCACMAQfz5sAFqI7YBNgIAIwBBlPqwAWojtgE2AgAjAEGs+rABaiO2ATYCACMAQcT6sAFqI7YBNgIAIwBB3PqwAWojtgE2AgAjAEH0+rABaiO2ATYCACMAQYz7sAFqI7YBNgIAIwBBpPuwAWojtgE2AgAjAEG8+7ABaiO2ATYCACMAQdT7sAFqI7YBNgIAIwBB7PuwAWojtgE2AgAjAEGE/LABaiO2ATYCACMAQZz8sAFqI7YBNgIAIwBBtPywAWojtgE2AgAjAEHM/LABaiO2ATYCACMAQeT8sAFqI7YBNgIAIwBB/PywAWojtgE2AgAjAEGU/bABaiO2ATYCACMAQaz9sAFqI7YBNgIAIwBBxP2wAWojtgE2AgAjAEHc/bABaiO2ATYCACMAQfT9sAFqI7YBNgIAIwBBjP6wAWojtgE2AgAjAEGk/rABaiO2ATYCACMAQbz+sAFqI7YBNgIAIwBB1P6wAWojtgE2AgAjAEHs/rABaiO2ATYCACMAQYT/sAFqI7YBNgIAIwBBnP+wAWojtgE2AgAjAEG0/7ABaiO2ATYCACMAQcz/sAFqI7YBNgIAIwBB5P+wAWojtgE2AgAjAEH8/7ABaiO2ATYCACMAQZSAsQFqI7YBNgIAIwBBrICxAWojtgE2AgAjAEHEgLEBaiO2ATYCACMAQdyAsQFqI7YBNgIAIwBB9ICxAWojtgE2AgAjAEGMgbEBaiO2ATYCACMAQaSBsQFqI7YBNgIAIwBBvIGxAWojtgE2AgAjAEHUgbEBaiO2ATYCACMAQeyBsQFqI7YBNgIAIwBBhIKxAWojtgE2AgAjAEGcgrEBaiO2ATYCACMAQbSCsQFqI7YBNgIAIwBBzIKxAWojtgE2AgAjAEHkgrEBaiO2ATYCACMAQfyCsQFqI7YBNgIAIwBBlIOxAWojtgE2AgAjAEGsg7EBaiO2ATYCACMAQcSDsQFqI7YBNgIAIwBB3IOxAWojtgE2AgAjAEH0g7EBaiO2ATYCACMAQYyEsQFqI7YBNgIAIwBBpISxAWojtgE2AgAjAEG8hLEBaiO2ATYCACMAQdSEsQFqI7YBNgIAIwBB7ISxAWojtgE2AgAjAEGEhbEBaiO2ATYCACMAQZyFsQFqI7YBNgIAIwBBtIWxAWojtgE2AgAjAEHMhbEBaiO2ATYCACMAQeSFsQFqI7YBNgIAIwBB/IWxAWojtgE2AgAjAEGUhrEBaiO2ATYCACMAQayGsQFqI7YBNgIAIwBBxIaxAWojtgE2AgAjAEHchrEBaiO2ATYCACMAQfSGsQFqI7YBNgIAIwBBjIexAWojtgE2AgAjAEGkh7EBaiO2ATYCACMAQbyHsQFqI7YBNgIAIwBB1IexAWojtgE2AgAjAEHsh7EBaiO2ATYCACMAQYSIsQFqI7YBNgIAIwBBnIixAWojtgE2AgAjAEG0iLEBaiO2ATYCACMAQcyIsQFqI7YBNgIAIwBB5IixAWojtgE2AgAjAEH8iLEBaiO2ATYCACMAQZSJsQFqI7YBNgIAIwBBrImxAWojtgE2AgAjAEHEibEBaiO2ATYCACMAQdyJsQFqI7YBNgIAIwBB9ImxAWojtgE2AgAjAEGMirEBaiO2ATYCACMAQaSKsQFqI7YBNgIAIwBBvIqxAWojtgE2AgAjAEHUirEBaiO2ATYCACMAQeyKsQFqI7YBNgIAIwBBhIuxAWojtgE2AgAjAEGci7EBaiO2ATYCACMAQbSLsQFqI7YBNgIAIwBBzIuxAWojtgE2AgAjAEHki7EBaiO2ATYCACMAQfyLsQFqI7YBNgIAIwBBlIyxAWojtgE2AgAjAEGsjLEBaiO2ATYCACMAQcSMsQFqI7YBNgIAIwBB3IyxAWojtgE2AgAjAEH0jLEBaiO2ATYCACMAQYyNsQFqI7YBNgIAIwBBpI2xAWojtgE2AgAjAEG8jbEBaiO2ATYCACMAQdSNsQFqI7YBNgIAIwBB7I2xAWojtgE2AgAjAEGEjrEBaiO2ATYCACMAQZyOsQFqI7YBNgIAIwBBtI6xAWojtgE2AgAjAEHMjrEBaiO2ATYCACMAQeSOsQFqI7YBNgIAIwBB/I6xAWojtgE2AgAjAEGUj7EBaiO2ATYCACMAQayPsQFqI7YBNgIAIwBBxI+xAWojtgE2AgAjAEHcj7EBaiO2ATYCACMAQfSPsQFqI7YBNgIAIwBBjJCxAWojtgE2AgAjAEGkkLEBaiO2ATYCACMAQbyQsQFqI7YBNgIAIwBB1JCxAWojtgE2AgAjAEHskLEBaiO2ATYCACMAQYSRsQFqI7YBNgIAIwBBnJGxAWojtgE2AgAjAEG0kbEBaiO2ATYCACMAQcyRsQFqI7YBNgIAIwBB5JGxAWojtgE2AgAjAEH8kbEBaiO2ATYCACMAQZSSsQFqI7YBNgIAIwBBrJKxAWojtgE2AgAjAEHEkrEBaiO2ATYCACMAQdySsQFqI7YBNgIAIwBB9JKxAWojtgE2AgAjAEGMk7EBaiO2ATYCACMAQaSTsQFqI7YBNgIAIwBBvJOxAWojtgE2AgAjAEHUk7EBaiO2ATYCACMAQeyTsQFqI7YBNgIAIwBBhJSxAWojtgE2AgAjAEGclLEBaiO2ATYCACMAQbSUsQFqI7YBNgIAIwBBzJSxAWojtgE2AgAjAEHklLEBaiO2ATYCACMAQfyUsQFqI7YBNgIAIwBBlJWxAWojtgE2AgAjAEGslbEBaiO2ATYCACMAQcSVsQFqI7YBNgIAIwBB3JWxAWojtgE2AgAjAEH0lbEBaiO2ATYCACMAQYyWsQFqI7YBNgIAIwBBpJaxAWojtgE2AgAjAEG8lrEBaiO2ATYCACMAQdSWsQFqI7YBNgIAIwBB7JaxAWojtgE2AgAjAEGEl7EBaiO2ATYCACMAQZyXsQFqI7YBNgIAIwBBtJexAWojtgE2AgAjAEHMl7EBaiO2ATYCACMAQeSXsQFqI7YBNgIAIwBB/JexAWojtgE2AgAjAEGUmLEBaiO2ATYCACMAQayYsQFqI7YBNgIAIwBBxJixAWojtgE2AgAjAEHcmLEBaiO2ATYCACMAQfSYsQFqI7YBNgIAIwBBjJmxAWojtgE2AgAjAEGkmbEBaiO2ATYCACMAQbyZsQFqI7YBNgIAIwBB1JmxAWojtgE2AgAjAEHsmbEBaiO2ATYCACMAQYSasQFqI7YBNgIAIwBBnJqxAWojtgE2AgAjAEG0mrEBaiO2ATYCACMAQcyasQFqI7YBNgIAIwBB5JqxAWojtgE2AgAjAEH8mrEBaiO2ATYCACMAQZSbsQFqI7YBNgIAIwBBrJuxAWojtgE2AgAjAEHEm7EBaiO2ATYCACMAQdybsQFqI7YBNgIAIwBB9JuxAWojtgE2AgAjAEGMnLEBaiO2ATYCACMAQaScsQFqI7YBNgIAIwBBvJyxAWojtgE2AgAjAEHUnLEBaiO2ATYCACMAQeycsQFqI7YBNgIAIwBBhJ2xAWojtgE2AgAjAEGcnbEBaiO2ATYCACMAQbSdsQFqI7YBNgIAIwBBzJ2xAWojtgE2AgAjAEHknbEBaiO2ATYCACMAQfydsQFqI7YBNgIAIwBBlJ6xAWojtgE2AgAjAEGsnrEBaiO2ATYCACMAQcSesQFqI7YBNgIAIwBB3J6xAWojtgE2AgAjAEH0nrEBaiO2ATYCACMAQYyfsQFqI7YBNgIAIwBBpJ+xAWojtgE2AgAjAEG8n7EBaiO2ATYCACMAQdSfsQFqI7YBNgIAIwBB7J+xAWojtgE2AgAjAEGEoLEBaiO2ATYCACMAQZygsQFqI7YBNgIAIwBBtKCxAWojtgE2AgAjAEHMoLEBaiO2ATYCACMAQeSgsQFqI7YBNgIAIwBB/KCxAWojtgE2AgAjAEGUobEBaiO2ATYCACMAQayhsQFqI7YBNgIAIwBBxKGxAWojtgE2AgAjAEHcobEBaiO2ATYCACMAQfShsQFqI7YBNgIAIwBBjKKxAWojtgE2AgAjAEGkorEBaiO2ATYCACMAQbyisQFqI7YBNgIAIwBB1KKxAWojtgE2AgAjAEHsorEBaiO2ATYCACMAQYSjsQFqI7YBNgIAIwBBnKOxAWojtgE2AgAjAEG0o7EBaiO2ATYCACMAQcyjsQFqI7YBNgIAIwBB5KOxAWojtgE2AgAjAEH8o7EBaiOxATYCACMAQaCksQFqI7EBNgIAIwBBxKSxAWojsQE2AgAjAEHopLEBaiOxATYCACMAQYylsQFqI7EBNgIAIwBBsKWxAWojsQE2AgAjAEHUpbEBaiOxATYCACMAQfilsQFqI7EBNgIAIwBBnKaxAWojsQE2AgAjAEG4prEBaiOxATYCACMAQdSmsQFqI7EBNgIAIwBB8KaxAWojsQE2AgAjAEGMp7EBaiOxATYCACMAQainsQFqI7EBNgIAIwBBxKexAWojsQE2AgAjAEHop7EBaiOxATYCACMAQYSosQFqI7EBNgIAIwBBtKixAWojsQE2AgAjAEHQqLEBaiOxATYCACMAQeyosQFqI7EBNgIAIwBBiKmxAWojsQE2AgAjAEGoqbEBaiOxATYCACMAQcipsQFqI7EBNgIAIwBB6KmxAWojsQE2AgAjAEGQqrEBaiOxATYCACMAQbCqsQFqI7EBNgIAIwBB2KqxAWojsQE2AgAjAEH0qrEBaiOxATYCACMAQZyrsQFqI7EBNgIAIwBBxKuxAWojsQE2AgAjAEHkq7EBaiOxATYCACMAQZCssQFqI7EBNgIAIwBBsKyxAWojsQE2AgAjAEHUrLEBaiOxATYCACMAQfissQFqI7EBNgIAIwBBnK2xAWojsQE2AgAjAEG8rbEBaiOxATYCACMAQdytsQFqI7EBNgIAIwBBgK6xAWojsQE2AgAjAEGorrEBaiOxATYCACMAQcyusQFqI7EBNgIAIwBB8K6xAWojsQE2AgAjAEGUr7EBaiOxATYCACMAQbivsQFqI7EBNgIAIwBB4K+xAWojsQE2AgAjAEGIsLEBaiOxATYCACMAQaywsQFqI7EBNgIAIwBB0LCxAWojsQE2AgAjAEH4sLEBaiOxATYCACMAQZyxsQFqI7EBNgIAIwBByLGxAWojsQE2AgAjAEHwsbEBaiOxATYCACMAQZSysQFqI7EBNgIAIwBBvLKxAWojsQE2AgAjAEHgsrEBaiOxATYCACMAQYCzsQFqI7EBNgIAIwBBpLOxAWojsQE2AgAjAEHIs7EBaiOxATYCACMAQeyzsQFqI7EBNgIAIwBBkLSxAWojsQE2AgAjAEGwtLEBaiOxATYCACMAQdS0sQFqI7EBNgIAIwBB9LSxAWojsQE2AgAjAEGYtbEBaiOxATYCACMAQbi1sQFqI7EBNgIAIwBB3LWxAWojsQE2AgAjAEGAtrEBaiOxATYCACMAQaS2sQFqI7EBNgIAIwBBzLaxAWojsQE2AgAjAEHwtrEBaiOxATYCACMAQZS3sQFqI7EBNgIAIwBBtLexAWojsQE2AgAjAEHUt7EBaiOxATYCACMAQfi3sQFqI7EBNgIAIwBBpLixAWojsQE2AgAjAEHMuLEBaiOxATYCACMAQfC4sQFqI7EBNgIAIwBBmLmxAWojsQE2AgAjAEHEubEBaiOxATYCACMAQey5sQFqI7EBNgIAIwBBjLqxAWojsQE2AgAjAEGwurEBaiOxATYCACMAQdS6sQFqI7EBNgIAIwBB+LqxAWojsQE2AgAjAEGgu7EBaiOxATYCACMAQcS7sQFqI7EBNgIAIwBB6LuxAWojsQE2AgAjAEGMvLEBaiOxATYCACMAQbC8sQFqI7EBNgIAIwBB1LyxAWojsQE2AgAjAEH4vLEBaiOxATYCACMAQZy9sQFqI7EBNgIAIwBByL2xAWojsQE2AgAjAEH0vbEBaiOxATYCACMAQZS+sQFqI7EBNgIAIwBBuL6xAWojsQE2AgAjAEHYvrEBaiOxATYCACMAQfy+sQFqI7EBNgIAIwBBoL+xAWojsQE2AgAjAEHQv7EBaiOxATYCACMAQfS/sQFqI7EBNgIAIwBBmMCxAWojsQE2AgAjAEHAwLEBaiOxATYCACMAQeTAsQFqI7EBNgIAIwBBhMGxAWojsQE2AgAjAEGkwbEBaiOxATYCACMAQczBsQFqI7EBNgIAIwBB8MGxAWojsQE2AgAjAEGUwrEBaiOxATYCACMAQbjCsQFqI7EBNgIAIwBB2MKxAWojsQE2AgAjAEH8wrEBaiOxATYCACMAQaDDsQFqI7EBNgIAIwBBxMOxAWojsQE2AgAjAEHkw7EBaiOxATYCACMAQYjEsQFqI7EBNgIAIwBBsMSxAWojsQE2AgAjAEHQxLEBaiOxATYCACMAQfTEsQFqI7EBNgIAIwBBlMWxAWojsQE2AgAjAEG0xbEBaiOxATYCACMAQdTFsQFqI7EBNgIAIwBB+MWxAWojsQE2AgAjAEGgxrEBaiOxATYCACMAQcTGsQFqI7EBNgIAIwBB6MaxAWojsQE2AgAjAEGIx7EBaiOxATYCACMAQbDHsQFqI7EBNgIAIwBB1MexAWojsQE2AgAjAEH4x7EBaiOxATYCACMAQaDIsQFqI7EBNgIAIwBBxMixAWojsQE2AgAjAEHkyLEBaiOxATYCACMAQYTJsQFqI7EBNgIAIwBBqMmxAWojsQE2AgAjAEHQybEBaiOxATYCACMAQfTJsQFqI7EBNgIAIwBBmMqxAWojsQE2AgAjAEG8yrEBaiOxATYCACMAQeDKsQFqI7EBNgIAIwBBiMuxAWojsQE2AgAjAEGsy7EBaiOxATYCACMAQdTLsQFqI7EBNgIAIwBB/MuxAWojsQE2AgAjAEGgzLEBaiOxATYCACMAQcTMsQFqI7EBNgIAIwBB6MyxAWojsQE2AgAjAEGMzbEBaiOxATYCACMAQazNsQFqI7EBNgIAIwBB0M2xAWojsQE2AgAjAEH0zbEBaiOxATYCACMAQZjOsQFqI7EBNgIAIwBBvM6xAWojsQE2AgAjAEHgzrEBaiOxATYCACMAQYjPsQFqI7EBNgIAIwBBrM+xAWojsQE2AgAjAEHMz7EBaiOxATYCACMAQfTPsQFqI7EBNgIAIwBBmNCxAWojsQE2AgAjAEG80LEBaiOxATYCACMAQeTQsQFqI7EBNgIAIwBBiNGxAWojsQE2AgAjAEGw0bEBaiOxATYCACMAQdTRsQFqI7EBNgIAIwBB+NGxAWojsQE2AgAjAEGY0rEBaiOxATYCACMAQbjSsQFqI7EBNgIAIwBB5NKxAWojsQE2AgAjAEGQ07EBaiOxATYCACMAQbTTsQFqI7EBNgIAIwBB2NOxAWojsQE2AgAjAEGU1LEBaiOxATYCACMAQcjUsQFqI7EBNgIAIwBB9NSxAWojsQE2AgAjAEGs1bEBaiOxATYCACMAQdjVsQFqI7EBNgIAIwBB/NWxAWojsQE2AgAjAEGc1rEBaiOxATYCACMAQcDWsQFqI7EBNgIAIwBB5NaxAWojsQE2AgAjAEGI17EBaiOxATYCACMAQazXsQFqI7EBNgIAIwBB1NexAWojsQE2AgAjAEH417EBaiOxATYCACMAQaDYsQFqI7EBNgIAIwBByNixAWojsQE2AgAjAEHw2LEBaiOxATYCACMAQZzZsQFqI7EBNgIAIwBBxNmxAWojsQE2AgAjAEHw2bEBaiOxATYCACMAQZzasQFqI7EBNgIAIwBBxNqxAWojsQE2AgAjAEHo2rEBaiOxATYCACMAQYzbsQFqI7EBNgIAIwBBtNuxAWojsQE2AgAjAEHo27EBaiOxATYCACMAQZzcsQFqI7EBNgIAIwBBwNyxAWojsQE2AgAjAEHc3LEBaiOxATYCACMAQfzcsQFqI7EBNgIAIwBBmN2xAWojsQE2AgAjAEG43bEBaiOxATYCACMAQdzdsQFqI7EBNgIAIwBB/N2xAWojsQE2AgAjAEGg3rEBaiOxATYCACMAQcTesQFqI7EBNgIAIwBB5N6xAWojsQE2AgAjAEGE37EBaiOxATYCACMAQaTfsQFqI7EBNgIAIwBBxN+xAWojsQE2AgAjAEHk37EBaiOxATYCACMAQYTgsQFqI7EBNgIAIwBBpOCxAWojsQE2AgAjAEHE4LEBaiOxATYCACMAQeTgsQFqI7EBNgIAIwBBjOGxAWojsQE2AgAjAEGw4bEBaiOxATYCACMAQdzhsQFqI7EBNgIAIwBBhOKxAWojsQE2AgAjAEGo4rEBaiOxATYCACMAQcjisQFqI7EBNgIAIwBB6OKxAWojsQE2AgAjAEGM47EBaiOxATYCACMAQbDjsQFqI7EBNgIAIwBB1OOxAWojsQE2AgAjAEH047EBaiOxATYCACMAQZjksQFqI7EBNgIAIwBBvOSxAWojsQE2AgAjAEHc5LEBaiOxATYCACMAQYDlsQFqI7EBNgIAIwBBoOWxAWojsQE2AgAjAEHE5bEBaiOxATYCACMAQeTlsQFqI7EBNgIAIwBBiOaxAWojsQE2AgAjAEGo5rEBaiOxATYCACMAQcjmsQFqI7EBNgIAIwBB5OaxAWojsQE2AgAjAEGI57EBaiOxATYCACMAQajnsQFqI7EBNgIAIwBBzOexAWojsQE2AgAjAEHs57EBaiOxATYCACMAQZDosQFqI7EBNgIAIwBBrOixAWojsQE2AgAjAEHU6LEBaiOxATYCACMAQfTosQFqI7EBNgIAIwBBmOmxAWojsQE2AgAjAEG46bEBaiOxATYCACMAQdjpsQFqI7EBNgIAIwBB+OmxAWojsQE2AgAjAEGY6rEBaiOxATYCACMAQbjqsQFqI7EBNgIAIwBB4OqxAWojsQE2AgAjAEGE67EBaiOxATYCACMAQajrsQFqI7EBNgIAIwBByOuxAWojsQE2AgAjAEHk67EBaiOxATYCACMAQYTssQFqI7EBNgIAIwBBpOyxAWojsQE2AgAjAEHI7LEBaiOxATYCACMAQejssQFqI7EBNgIAIwBBiO2xAWojsQE2AgAjAEGo7bEBaiOxATYCACMAQcztsQFqI7EBNgIAIwBB7O2xAWojsQE2AgAjAEGM7rEBaiOxATYCACMAQajusQFqI7EBNgIAIwBBxO6xAWojsQE2AgAjAEHo7rEBaiOxATYCACMAQZTvsQFqI7EBNgIAIwBBwO+xAWojsQE2AgAjAEHg77EBaiOxATYCACMAQYTwsQFqI7EBNgIAIwBBpPCxAWojsQE2AgAjAEHA8LEBaiOxATYCACMAQeDwsQFqI7EBNgIAIwBBiPGxAWojsQE2AgAjAEGo8bEBaiOxATYCACMAQcjxsQFqI7EBNgIAIwBB6PGxAWojsQE2AgAjAEGI8rEBaiOxATYCACMAQajysQFqI7EBNgIAIwBByPKxAWojsQE2AgAjAEHw8rEBaiOxATYCACMAQZjzsQFqI7EBNgIAIwBBxPOxAWojsQE2AgAjAEHg87EBaiOxATYCACMAQfzzsQFqI7EBNgIAIwBBmPSxAWojsQE2AgAjAEG49LEBaiOxATYCACMAQdj0sQFqI7EBNgIAIwBB/PSxAWojsQE2AgAjAEGc9bEBaiOxATYCACMAQcD1sQFqI7EBNgIAIwBB5PWxAWojsQE2AgAjAEGI9rEBaiOxATYCACMAQbT2sQFqI7EBNgIAIwBB1PaxAWojsQE2AgAjAEH09rEBaiOxATYC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aiOxATYCACMAQdiUsgFqI7EBNgIAIwBB9JSyAWojsQE2AgAjAEGQlbIBaiOxATYCACMAQayVsgFqI7EBNgIAIwBByJWyAWojsQE2AgAjAEHklbIBaiOxATYCACMAQYCWsgFqI7EBNgIAIwBBnJayAWojsQE2AgAjAEG4lrIBaiOxATYCACMAQdSWsgFqI7EBNgIAIwBB8JayAWojsQE2AgAjAEGMl7IBaiOxATYCACMAQaiXsgFqI7EBNgIAIwBBxJeyAWojsQE2AgAjAEHgl7IBaiOxATYCACMAQfyXsgFqI7EBNgIAIwBBmJiyAWojsQE2AgAjAEG0mLIBaiOxATYCACMAQdCYsgFqI7EBNgIAIwBB7JiyAWojsQE2AgAjAEGImbIBaiOxATYCACMAQaSZsgFqI7EBNgIAIwBBwJmyAWojsQE2AgAjAEHcmbIBaiOxATYCACMAQfiZsgFqI7EBNgIAIwBBlJqyAWojsQE2AgAjAEGwmrIBaiOxATYCACMAQdiasgFqI7EBNgIAIwBBgJuyAWojsQE2AgAjAEGom7IBaiOxATYCACMAQdCbsgFqI7EBNgIAIwBB+JuyAWojsQE2AgAjAEGgnLIBaiOxATYCACMAQcicsgFqI7EBNgIAIwBB8JyyAWojsQE2AgAjAEGYnbIBaiOxATYCACMAQcCdsgFqI7EBNgIAIwBB6J2yAWojsQE2AgAjAEGQnrIBaiOxATYCACMAQbiesgFqI7EBNgIAIwBB4J6yAWojsQE2AgAjAEGIn7IBaiOxATYCACMAQbCfsgFqI7EBNgIAIwBB2J+yAWojsQE2AgAjAEGAoLIBaiOxATYCACMAQaigsgFqI7EBNgIAIwBB0KCyAWojsQE2AgAjAEH4oLIBaiOxATYCACMAQaChsgFqI7EBNgIAIwBByKGyAWojsQE2AgAjAEHwobIBaiOxATYCACMAQZiisgFqI7EBNgIAIwBBwKKyAWojsQE2AgAjAEHoorIBaiOxATYCACMAQZCjsgFqI7EBNgIAIwBBuKOyAWojsQE2AgAjAEHgo7IBaiOxATYCACMAQYiksgFqI7EBNgIAIwBBsKSyAWojsQE2AgAjAEHYpLIBaiOxATYCACMAQYClsgFqI7EBNgIAIwBBqKWyAWojsQE2AgAjAEHQpbIBaiOxATYCACMAQfilsgFqI7EBNgIAIwBBoKayAWojsQE2AgAjAEHIprIBaiOxATYCACMAQfCmsgFqI7EBNgIAIwBBmKeyAWojsQE2AgAjAEHAp7IBaiOxATYCACMAQeinsgFqI7EBNgIAIwBBkKiyAWojsQE2AgAjAEG4qLIBaiOxATYCACMAQeCosgFqI7EBNgIAIwBBiKmyAWojsQE2AgAjAEGwqbIBaiOxATYCACMAQdipsgFqI7EBNgIAIwBBgKqyAWojsQE2AgAjAEGoqrIBaiOxATYCACMAQdCqsgFqI7EBNgIAIwBB+KqyAWojsQE2AgAjAEGgq7IBaiOxATYCACMAQcirsgFqI7EBNgIAIwBB8KuyAWojsQE2AgAjAEGYrLIBaiOxATYCACMAQcCssgFqI7EBNgIAIwBB6KyyAWojsQE2AgAjAEGQrbIBaiOxATYCACMAQbitsgFqI7EBNgIAIwBB4K2yAWojsQE2AgAjAEGIrrIBaiOxATYCACMAQbCusgFqI7EBNgIAIwBB2K6yAWojsQE2AgAjAEGAr7IBaiOxATYCACMAQaivsgFqI7EBNgIAIwBB0K+yAWojsQE2AgAjAEH4r7IBaiOxATYCACMAQaCwsgFqI7EBNgIAIwBByLCyAWojsQE2AgAjAEHwsLIBaiOxATYCACMAQZixsgFqI7EBNgIAIwBBwLGyAWojsQE2AgAjAEHosbIBaiOxATYCACMAQZCysgFqI7EBNgIAIwBBuLKyAWojsQE2AgAjAEHgsrIBaiOxATYCACMAQYizsgFqI7EBNgIAIwBBsLOyAWojsQE2AgAjAEHYs7IBaiOxATYCACMAQYC0sgFqI7EBNgIAIwBBqLSyAWojsQE2AgAjAEHQtLIBaiOxATYCACMAQfi0sgFqI7EBNgIAIwBBoLWyAWojsQE2AgAjAEHItbIBaiOxATYCACMAQfC1sgFqI7EBNgIAIwBBmLayAWojsQE2AgAjAEHAtrIBaiOxATYCACMAQei2sgFqI7EBNgIAIwBBkLeyAWojsQE2AgAjAEG4t7IBaiOxATYCACMAQeC3sgFqI7EBNgIAIwBBiLiyAWojsQE2AgAjAEGwuLIBaiOxATYCACMAQdi4sgFqI7EBNgIAIwBBgLmyAWojsQE2AgAjAEGoubIBaiOxATYCACMAQdC5sgFqI7EBNgIAIwBB+LmyAWojsQE2AgAj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QbD5tQFqIwBB4aQJajYCACMAQbT5tQFqIwBBy6IJajYCACMAQbj5tQFqIwBB4wZqNgIAIwBBvPm1AWojAEHg7wZqNgIAIwBBwPm1AWojAEGkIWo2AgAjAEHE+bUBaiMAQYnMAGo2AgAjAEHI+bUBaiMAQc+6AWo2AgAjAEHM+bUBaiMAQdG3BGo2AgAjAEHQ+bUBaiMAQYD5Bmo2AgAjAEHU+bUBaiMAQdr8AGo2AgAjAEHY+bUBaiMAQbChBGo2AgAjAEHc+bUBaiMAQfavC2o2AgAjAEHg+bUBaiMAQfa3CWo2AgAjAEHk+bUBaiMAQbHeBWo2AgAjAEHo+bUBaiMAQYaVAWo2AgAjAEHs+bUBaiMAQfeIAmo2AgAjAEHw+bUBaiMAQYK2C2o2AgAjAEH0+bUBaiMAQZC/B2o2AgAjAEH4+bUBaiMAQYiXBGo2AgAjAEH8+bUBaiMAQfDeBWo2AgAjAEGA+rUBaiMAQdK1CWo2AgAjAEGE+rUBaiMAQfrQBWo2AgAjAEGI+rUBaiMAQdrrBWo2AgAjAEGM+rUBaiMAQcq5CGo2AgAjAEGQ+rUBaiMAQZSKCGo2AgAjAEGU+rUBaiMAQZ/IAmo2AgAjAEGY+rUBaiMAQb+hBGo2AgAjAEGc+rUBaiMAQYWGAmo2AgAjAEGg+rUBaiMAQc+/AWo2AgAjAEGk+rUBaiMAQf21BWo2AgAjAEGo+rUBaiMAQYrhAGo2AgAjAEGs+rUBaiMAQZTmA2o2AgAjAEGw+rUBaiMAQYO2CWo2AgAjAEG0+rUBaiMAQauAAmo2AgAjAEG4+rUBaiMAQcwUajYCACMAQbz6tQFqIwBBrKEGajYCACMAQcD6tQFqIwBBpdMAajYCACMAQcT6tQFqIwBBpTBqNgIAIwBByPq1AWojAEHTrgJqNgIAIwBBzPq1AWojAEHZqQJqNgIAIwBB0Pq1AWojAEGyqQJqNgIAIwBB1Pq1AWojAEGPngdqNgIAIwBB2Pq1AWojAEG8rwVqNgIAIwBB3Pq1AWojAEHsxwVqNgIAIwBB4Pq1AWojAEHKtwlqNgIAIwBB5Pq1AWojAEHklQJqNgIAIwBB6Pq1AWojAEGLjgJqNgIAIwBB7Pq1AWojAEH+yQBqNgIAIwBB8Pq1AWojAEHvugVqNgIAIwBB9Pq1AWojAEG/mgJqNgIAIwBB+Pq1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QYjKImo2AgAjAEHQ6bgBaiMAQYjOImo2AgAjAEHY6bgBaiMAQYjSImo2AgAjAEHg6bgBaiMAQYjWImo2AgAjAEHo6bgBaiMAQYjaImo2AgAjAEHw6bgBaiMAQYjeImo2AgAjAEH46bgBaiMAQYjiImo2AgAjAEGA6rgBaiMAQYjmImo2AgAjAEGI6rgBaiMAQYjqImo2AgAjAEGQ6rgBaiMAQYjuImo2AgAjAEGY6rgBaiMAQYjyImo2AgAjAEGg6rgBaiMAQYj2Imo2AgAjAEGo6rgBaiMAQYj6Imo2AgAjAEGw6rgBaiMAQYj+Imo2AgAjAEG46rgBaiMAQYiCI2o2AgAjAEHA6rgBaiMAQYiGI2o2AgAjAEHI6rgBaiMAQYiKI2o2AgAjAEHQ6rgBaiMAQYiOI2o2AgAjAEHY6rgBaiMAQYiSI2o2AgAjAEHg6rgBaiMAQYiWI2o2AgAjAEHo6rgBaiMAQYiaI2o2AgAjAEHw6rgBaiMAQYieI2o2AgAjAEH46rgBaiMAQYiiI2o2AgAjAEGA67gBaiMAQYimI2o2AgAjAEGI67gBaiMAQYiqI2o2AgAjAEGQ67gBaiMAQYiuI2o2AgAjAEGY67gBaiMAQYiyI2o2AgAjAEGg67gBaiMAQYi2I2o2AgAjAEGo67gBaiMAQYi6I2o2AgAjAEGw67gBaiMAQYi+I2o2AgAjAEG467gBaiMAQYjCI2o2AgAjAEHA67gBaiMAQYjGI2o2AgAjAEHI67gBaiMAQYjKI2o2AgAjAEHQ67gBaiMAQYjOI2o2AgAjAEHY67gBaiMAQYjSI2o2AgAjAEHg67gBaiMAQYjWI2o2AgAjAEHo67gBaiMAQYjaI2o2AgAjAEHw67gBaiMAQYjeI2o2AgAjAEH467gBaiMAQYjiI2o2AgAjAEGA7LgBaiMAQYjmI2o2AgAjAEGI7LgBaiMAQYjqI2o2AgAjAEGQ7LgBaiMAQYjuI2o2AgAjAEGY7LgBaiMAQYjyI2o2AgAjAEGg7LgBaiMAQYj2I2o2AgAjAEGo7LgBaiMAQYj6I2o2AgAjAEGw7LgBaiMAQYj+I2o2AgAjAEG47LgBaiMAQYiCJGo2AgAjAEHA7LgBaiMAQYiGJGo2AgAjAEHI7LgBaiMAQYiKJGo2AgAjAEHQ7LgBaiMAQYiOJGo2AgAjAEHY7LgBaiMAQYiSJGo2AgAjAEHg7LgBaiMAQYiWJGo2AgAjAEHo7LgBaiMAQYiaJGo2AgAjAEHw7LgBaiMAQYieJGo2AgAjAEH47LgBaiMAQYiiJGo2AgAjAEGA7bgBaiMAQYimJGo2AgAjAEGI7bgBaiMAQYiqJGo2AgAjAEGQ7bgBaiMAQYiuJGo2AgAjAEGY7bgBaiMAQYiyJGo2AgAjAEGg7bgBaiMAQYi2JGo2AgAjAEGo7bgBaiMAQYi6JGo2AgAjAEGw7bgBaiMAQYi+JGo2AgAjAEG47bgBaiMAQYjCJGo2AgAjAEHA7bgBaiMAQYjGJGo2AgAjAEHI7bgBaiMAQYjKJGo2AgAjAEHQ7bgBaiMAQYjOJGo2AgAjAEHY7bgBaiMAQYjSJGo2AgAjAEHg7bgBaiMAQYjWJGo2AgAjAEHo7bgBaiMAQYjaJGo2AgAjAEHw7bgBaiMAQYjeJGo2AgAjAEH47bgBaiMAQYjiJGo2AgAjAEGA7rgBaiMAQYjmJGo2AgAjAEGI7rgBaiMAQYjqJGo2AgAjAEGQ7rgBaiMAQYjuJGo2AgAjAEGY7rgBaiMAQYjyJGo2AgAjAEGg7rgBaiMAQYj2JGo2AgAjAEGo7rgBaiMAQYj6JGo2AgAjAEGw7rgBaiMAQYj+JGo2AgAjAEG47rgBaiMAQYiCJWo2AgAjAEGI9LgBaiMAQdSEJWo2AgAjAEGQ9LgBaiMAQeCHJWo2AgAjAEGw9LgBaiMAQZyIJWo2AgAjAEG49LgBaiMAQZSJJWo2AgAjAEHI9rgBaiMAQeCMJWo2AgAjAEHQ9rgBaiMAQZyOJWo2AgAjAEHY9rgBaiMAQbSPJWo2AgAjAEHg9rgBaiMAQfCQJWo2AgAjAEHo9rgBaiMAQZaSJWo2AgAjAEHw9rgBaiMAQcKTJWo2AgAjAEH49rgBaiMAQbKUJWo2AgAjAEGA97gBaiMAQdSVJWo2AgAjAEGI97gBaiMAQeaWJWo2AgAjAEHA97gBaiMAQf6XJWo2AgAjAEHI97gBaiMAQbqZJWo2AgAjAEHQ97gBaiMAQfaaJWo2AgAjAEHY97gBaiMAQbKcJWo2AgAjAEHg97gBaiMAQe6dJWo2AgAjAEHo97gBaiMAQaqfJWo2AgAjAEHw97gBaiMAQeagJWo2AgAjAEH497gBaiMAQaKiJWo2AgAjAEGA+LgBaiMAQd6jJWo2AgAjAEGI+LgBaiMAQZqlJWo2AgAjAEGQ+LgBaiMAQdamJWo2AgAjAEGY+LgBaiMAQZKoJWo2AgAjAEGg+LgBaiMAQc6pJWo2AgAjAEGo+LgBaiMAQYqrJWo2AgAjAEGw+LgBaiMAQcasJWo2AgAjAEG4+LgBaiMAQYKuJWo2AgAjAEHA+LgBaiMAQb6vJWo2AgAjAEHI+LgBaiMAQfqwJWo2AgAjAEHQ+LgBaiMAQbayJWo2AgAjAEHY+LgBaiMAQfKzJWo2AgAjAEHg+LgBaiMAQa61JWo2AgAjAEHo+LgBaiMAQeq2JWo2AgAjAEHw+LgBaiMAQaa4JWo2AgAjAEH4+LgBaiMAQeK5JWo2AgAjAEGA+bgBaiMAQZ67JWo2AgAjAEGI+bgBaiMAQdq8JWo2AgAjAEGQ+bgBaiMAQZa+JWo2AgAjAEGY+bgBaiMAQdK/JWo2AgAjAEGg+bgBaiMAQY7BJWo2AgAjAEGo+bgBaiMAQcrCJWo2AgAjAEGw+bgBaiMAQYbEJWo2AgAjAEG4+bgBaiMAQcLFJWo2AgAjAEHA+bgBaiMAQf7GJWo2AgAjAEHI+bgBaiMAQbrIJWo2AgAjAEHQ+bgBaiMAQfbJJWo2AgAjAEHY+bgBaiMAQbLLJWo2AgAjAEHg+bgBaiMAQe7MJWo2AgAjAEHo+bgBaiMAQarOJWo2AgAjAEHw+bgBaiMAQebPJWo2AgAjAEH4+bgBaiMAQaLRJWo2AgAjAEGA+rgBaiMAQdTSJWo2AgAjAEGI+rgBaiMAQZDUJWo2AgAjAEGQ+rgBaiMAQczVJWo2AgAjAEGY+rgBaiMAQYjXJWo2AgAjAEGg+rgBaiMAQcTYJWo2AgAjAEGo+rgBaiMAQYDaJWo2AgAjAEGw+rgBaiMAQbzbJWo2AgAjAEG4+rgBaiMAQfjcJWo2AgAjAEHA+rgBaiMAQbTeJWo2AgAjAEHI+rgBaiMAQfDfJWo2AgAjAEHQ+rgBaiMAQazhJWo2AgAjAEHY+rgBaiMAQejiJWo2AgAjAEHg+rgBaiMAQaTkJWo2AgAjAEHo+rgBaiMAQeDlJWo2AgAjAEHw+rgBaiMAQZznJWo2AgAjAEH4+rgBaiMAQdjoJWo2AgAjAEGA+7gBaiMAQZTqJWo2AgAjAEGI+7gBaiMAQdDrJWo2AgAjAEGQ+7gBaiMAQYztJWo2AgAjAEGY+7gBaiMAQcjuJWo2AgAjAEGg+7gBaiMAQYTwJWo2AgAjAEGo+7gBaiMAQcDxJWo2AgAjAEGw+7gBaiMAQfzyJWo2AgAjAEG4+7gBaiMAQbj0JWo2AgAjAEHA+7gBaiMAQfT1JWo2AgAjAEHI+7gBaiMAQbD3JWo2AgAjAEHQ+7gBaiMAQez4JWo2AgAjAEHY+7gBaiMAQaj6JWo2AgAjAEHg+7gBaiMAQeT7JWo2AgAjAEHo+7gBaiMAQaD9JWo2AgAjAEHw+7gBaiMAQdz+JWo2AgAjAEH4+7gBaiMAQZiAJmo2AgAjAEHIjLkBaiMAQeCBJmo2AgAjAEHQjLkBaiMAQd6EJmo2AgAjAEHYjLkBaiMAQdyHJmo2AgAjAEHgjLkBaiMAQdqKJmo2AgAjAEHojLkBaiMAQdiNJmo2AgAjAEHwjLkBaiMAQdaQJmo2AgAjAEH4jLkBaiMAQdSTJmo2AgAjAEGAjbkBaiMAQdKWJmo2AgAjAEGIjbkBaiMAQdCZJmo2AgAjAEGQjbkBaiMAQc6cJmo2AgAjAEGYjbkBaiMAQcyfJmo2AgAjAEGgjbkBaiMAQcqiJmo2AgAjAEGojbkBaiMAQcilJmo2AgAjAEGwjbkBaiMAQcaoJmo2AgAjAEG4jbkBaiMAQcSrJmo2AgAjAEHAjbkBaiMAQcKuJmo2AgAjAEHIjbkBaiMAQcCxJmo2AgAjAEHQjbkBaiMAQb60Jmo2AgAjAEHYjbkBaiMAQby3Jmo2AgAjAEHgjbkBaiMAQbq6Jmo2AgAjAEHojbkBaiMAQbi9Jmo2AgAjAEHwjbkBaiMAQbbAJmo2AgAjAEH4jbkBaiMAQbTDJmo2AgAjAEGAjrkBaiMAQbLGJmo2AgAjAEGIjrkBaiMAQbDJJmo2AgAjAEGQjrkBaiMAQa7MJmo2AgAjAEGYjrkBaiMAQazPJmo2AgAjAEGgjrkBaiMAQarSJmo2AgAjAEGojrkBaiMAQajVJmo2AgAjAEGwjrkBaiMAQabYJmo2AgAjAEG4jrkBaiMAQaTbJmo2AgAjAEHAjrkBaiMAQaLeJmo2AgAjAEHIjrkBaiMAQaDhJmo2AgAjAEHQjrkBaiMAQa7hJmo2AgAjAEHwjrkBaiMAQcLhJmo2AgAjAEGAj7kBaiMAQe7hJmo2AgAjAEGIj7kBaiMAQfDjJmo2AgAjAEGQj7kBaiMAQZ7lJmo2AgAjAEGYj7kBaiMAQeDmJmo2AgAjAEGgj7kBaiMAQaLoJmo2AgAjAEGoj7kBaiMAQeTpJmo2AgAjAEGwj7kBaiMAQabrJmo2AgAjAEG4j7kBaiMAQejsJmo2AgAjAEHAj7kBaiMAQaruJmo2AgAjAEHIj7kBaiMAQezvJmo2AgAjAEHQj7kBaiMAQa7xJmo2AgAjAEHYj7kBaiMAQfDyJmo2AgAjAEHgj7kBaiMAQbL0Jmo2AgAjAEHoj7kBaiMAQfT1Jmo2AgAjAEHwj7kBaiMAQbb3Jmo2AgAjAEH4j7kBaiMAQfj4Jmo2AgAjAEGAkLkBaiMAQbr6Jmo2AgAjAEGIkLkBaiMAQfz7Jmo2AgAjAEGQkLkBaiMAQb79Jmo2AgAjAEGYkLkBaiMAQYD/Jmo2AgAjAEGgkLkBaiMAQcKAJ2o2AgAjAEGokLkBaiMAQYSCJ2o2AgAjAEGwkLkBaiMAQcaDJ2o2AgAjAEG4kLkBaiMAQYiFJ2o2AgAjAEHAkLkBaiMAQcqGJ2o2AgAjAEHIkLkBaiMAQYyIJ2o2AgAjAEHQkLkBaiMAQc6JJ2o2AgAjAEHYkLkBaiMAQZCLJ2o2AgAjAEHgkLkBaiMAQdKMJ2o2AgAjAEHokLkBaiMAQZSOJ2o2AgAjAEHwkLkBaiMAQdaPJ2o2AgAjAEH4kLkBaiMAQZiRJ2o2AgAjAEGAkbkBaiMAQdqSJ2o2AgAjAEGIkbkBaiMAQZyUJ2o2AgAjAEGQkbkBaiMAQd6VJ2o2AgAjAEGYkbkBaiMAQaCXJ2o2AgAjAEGgkbkBaiMAQeKYJ2o2AgAjAEGokbkBaiMAQaSaJ2o2AgAjAEGwkbkBaiMAQeabJ2o2AgAjAEG4kbkBaiMAQaidJ2o2AgAjAEHAkbkBaiMAQeqeJ2o2AgAjAEHIkbkBaiMAQaygJ2o2AgAjAEHQkbkBaiMAQe6hJ2o2AgAjAEHYkbkBaiMAQbCjJ2o2AgAjAEHgkbkBaiMAQfKkJ2o2AgAjAEHokbkBaiMAQbSmJ2o2AgAjAEHwkbkBaiMAQfanJ2o2AgAjAEH4kbkBaiMAQbipJ2o2AgAjAEGAkrkBaiMAQfqqJ2o2AgAjAEGIkrkBaiMAQbysJ2o2AgAjAEGQkrkBaiMAQf6tJ2o2AgAjAEGYkrkBaiMA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aiMAQbC1uQFqNgIAIwBBoLW5AWojAEHQtbkBajYCACMAQbC1uQFqIwBBy6MJajYCACMAQbS1uQFqIwJBthlqNgIAIwBBvLW5AWojAEHp4g5qNgIAIwBB1LW5AWojAkG3GWo2AgAjAEHgtbkBaiMAQaLHAmo2AgAjAEHotbkBaiMCQbgZajYCACMAQey1uQFqIwJBuRlqNgIAIwBB+LW5AWojAkG6GWo2AgAjAEGEtrkBaiMAQeniDmo2AgAjAEGwtrkBaiMAQdDVKGo2AgAjAEG4trkBaiMAQfrWKGo2AgAjAEHAtrkBaiMAQbTaKGo2AgAjAEHQtrkBaiMAQaLcKGo2AgAjAEGguLkBaiMAQcTdKGo2AgAjAEG4uLkBaiMAQczdKGo2AgAjAEHIuLkBaiMAQfDgKGo2AgAjAEHQuLkBaiMAQfTgKGo2AgAjAEHYuLkBaiMAQbDhKGo2AgAjAEHouLkBaiMAQfLhKGo2AgAjAEGgubkBaiMAQfThKGo2AgAjAEGoubkBaiMAQbzjKGo2AgAjAEGwubkBaiMAQb7jKGo2AgAjAEG4ubkBaiMAQbLnKGo2AgAjAEHAubkBaiMAQdLnKGo2AgAjAEHQubkBaiMAQdTnKGo2AgAjAEHYubkBaiMAQeLqKGo2AgAjAEHgubkBaiMAQdTuKGo2AgAjAEHoubkBaiMAQa7yKGo2AgAjAEHwubkBaiMAQaT2KGo2AgAjAEH4ubkBaiMAQfz5KGo2AgAjAEGAurkBaiMAQer9KGo2AgAjAEGIurkBaiMAQeCBKWo2AgAjAEGQurkBaiMAQa6FKWo2AgAjAEGYurkBaiMAQfSIKWo2AgAjAEGgurkBaiMAQcyMKWo2AgAjAEGourkBaiMAQcCQKWo2AgAjAEGwurkBaiMAQbaUKWo2AgAjAEG4urkBaiMAQaSYKWo2AgAjAEHAurkBaiMAQZScKWo2AgAjAEHIurkBaiMAQeyfKWo2AgAjAEHQurkBaiMAQfyiKWo2AgAjAEHYurkBaiMAQeSmKWo2AgAjAEHgurkBaiMAQbSqKWo2AgAjAEHourkBaiMAQZ6uKWo2AgAjAEHwurkBaiMAQeKxKWo2AgAjAEH4urkBaiMAQdi1KWo2AgAjAEGAu7kBaiMAQZy5KWo2AgAjAEGIu7kBaiMAQf68KWo2AgAjAEGQu7kBaiMAQeC/KWo2AgAjAEGYu7kBaiMAQbTDKWo2AgAjAEGgu7kBaiMAQeDFKWo2AgAjAEGou7kBaiMAQcrJKWo2AgAjAEGwu7kBaiMAQcDNKWo2AgAjAEG4u7kBaiMAQbTRKWo2AgAjAEHAu7kBaiMAQbDVKWo2AgAjAEHIu7kBaiMAQaDZKWo2AgAjAEHQu7kBaiMAQZzdKWo2AgAjAEHYu7kBaiMAQdbgKWo2AgAjAEHgu7kBaiMAQcrkKWo2AgAjAEHou7kBaiMAQbzoKWo2AgAjAEHwu7kBaiMAQbrsKWo2AgAjAEH4u7kBaiMAQazwKWo2AgAjAEGAvLkBaiMAQZz0KWo2AgAjAEGIvLkBaiMAQZb4KWo2AgAjAEGQvLkBaiMAQfz7KWo2AgAjAEGYvLkBaiMAQez/KWo2AgAjAEGgvLkBaiMAQbiDKmo2AgAjAEGovLkBaiMAQaCHKmo2AgAjAEGwvLkBaiMAQciKKmo2AgAjAEG4vLkBaiMAQf6NKmo2AgAjAEHAvLkBaiMAQbaRKmo2AgAjAEHIvLkBaiMAQaqUKmo2AgAjAEHQvLkBaiMAQfiXKmo2AgAjAEHYvLkBaiMAQcCbKmo2AgAjAEHgvLkBaiMAQayfKmo2AgAjAEHovLkBaiMAQeCiKmo2AgAjAEHwvLkBaiMAQdqmKmo2AgAjAEH4vLkBaiMAQfCpKmo2AgAjAEGAvbkBaiMAQeatKmo2AgAjAEGIvbkBaiMAQc6xKmo2AgAjAEGQvbkBaiMAQbq1Kmo2AgAjAEGYvbkBaiMAQYK5Kmo2AgAjAEGgvbkBaiMAQfy8Kmo2AgAjAEGovbkBaiMAQe7AKmo2AgAjAEGwvbkBaiMAQdjEKmo2AgAjAEG4vbkBaiMAQdDIKmo2AgAjAEHAvbkBaiMAQbTMKmo2AgAjAEHIvbkBaiMAQfrPKmo2AgAjAEHQvbkBaiMAQe7TKmo2AgAjAEHYvbkBaiMAQdzXKmo2AgAjAEHgvbkBaiMAQYzbKmo2AgAjAEHovbkBaiMAQbzeKmo2AgAjAEHwvbkBaiMAQaLiKmo2AgAjAEH4vbkBaiMAQf7lKmo2AgAjAEGAvrkBaiMAQdzpKmo2AgAjAEGIvrkBaiMAQc7tKmo2AgAjAEGQvrkBaiMAQbLxKmo2AgAjAEGYvrkBaiMAQYj1Kmo2AgAjAEGgvrkBaiMAQbz4Kmo2AgAjAEGovrkBaiMAQe77Kmo2AgAjAEGwvrkBaiMAQdj/Kmo2AgAjAEG4vrkBaiMAQcKDK2o2AgAjAEHAvrkBaiMAQaqHK2o2AgAjAEHIvrkBaiMAQfqKK2o2AgAjAEHQvrkBaiMAQcCOK2o2AgAjAEHYvrkBaiMAQaiSK2o2AgAjAEHgvrkBaiMAQZyWK2o2AgAjAEHovrkBaiMAQfiZK2o2AgAjAEHwvrkBaiMAQYScK2o2AgAjAEH4vrkBaiMAQfyfK2o2AgAjAEGAv7kBaiMAQcyjK2o2AgAjAEGIv7kBaiMAQYinK2o2AgAjAEGQv7kBaiMAQbaqK2o2AgAjAEGYv7kBaiMAQYStK2o2AgAjAEGgv7kBaiMAQaiwK2o2AgAjAEGov7kBaiMAQYy0K2o2AgAjAEGwv7kBaiMAQc63K2o2AgAjAEG4v7kBaiMAQci6K2o2AgAjAEHAv7kBaiMAQaS9K2o2AgAjAEHIv7kBaiMAQZDBK2o2AgAjAEHQv7kBaiMAQfTEK2o2AgAjAEHYv7kBaiMAQeDIK2o2AgAjAEHgv7kBaiMAQfDLK2o2AgAjAEHov7kBaiMAQaDPK2o2AgAjAEHwv7kBaiMAQYbTK2o2AgAjAEH4v7kBaiMAQcrWK2o2AgAjAEGAwLkBaiMAQZraK2o2AgAjAEGIwLkBaiMAQYLeK2o2AgAjAEGQwLkBaiMAQf7hK2o2AgAjAEGYwLkBaiMAQfTjK2o2AgAjAEGgwLkBaiMAQernK2o2AgAjAEGowLkBaiMAQdTrK2o2AgAjAEH4xbkBaiMAQbjuK2o2AgAjAEGoxrkBaiMAQbruK2o2AgAjAEGwxrkBaiMAQaDyK2o2AgAjAEG4xrkBaiMAQbz1K2o2AgAjAEHAxrkBaiMAQYr5K2o2AgAjAEHIxrkBaiMAQc78K2o2AgAjAEHQxrkBaiMAQbSALGo2AgAjAEHYxrkBaiMAQYyELGo2AgAjAEHgxrkBaiMAQdaGLGo2AgAjAEHoxrkBaiMAQaKILGo2AgAjAEHwxrkBaiMAQfqJLGo2AgAjAEH4xrkBaiMAQc6MLGo2AgAjAEGAx7kBaiMAQfKPLGo2AgAjAEGIx7kBaiMAQeySLGo2AgAjAEGQx7kBaiMAQdKWLGo2AgAjAEGYx7kBaiMAQbyaLGo2AgAjAEGgx7kBaiMAQaSdLGo2AgAjAEGox7kBaiMAQZShLGo2AgAjAEGwx7kBaiMAQbakLGo2AgAjAEG4x7kBaiMAQfynLGo2AgAjAEHAx7kBaiMAQdKqLGo2AgAjAEHIx7kBaiMAQditLGo2AgAjAEHQx7kBaiMAQdKxLGo2AgAjAEHYx7kBaiMAQai1LGo2AgAjAEHgx7kBaiMAQei1LGo2AgAjAEHox7kBaiMAQdK5LGo2AgAjAEHwx7kBaiMAQbK9LGo2AgAjAEH4x7kBaiMAQejALGo2AgAjAEGAyLkBaiMAQcrELGo2AgAjAEGIyLkBaiMAQbjFLGo2AgAjAEGQyLkBaiMAQbbHLGo2AgAjAEGYyLkBaiMAQbzJLGo2AgAjAEGgyLkBaiMAQaTMLGo2AgAjAEGoyLkBaiMAQZjPLGo2AgAjAEGwyLkBaiMAQczSLGo2AgAjAEG4yLkBaiMAQbzVLGo2AgAjAEHAyLkBaiMAQfDXLGo2AgAjAEHIyLkBaiMAQdrZLGo2AgAjAEHQyLkBaiMAQY7dLGo2AgAjAEHYyLkBaiMAQaDfLGo2AgAjAEHgyLkBaiMAQfjhLGo2AgAjAEHoyLkBaiMAQbDlLGo2AgAjAEHwyLkBaiMAQajoLGo2AgAjAEH4yLkBaiMAQZLsLGo2AgAjAEGAybkBaiMAQe7tLGo2AgAjAEGIybkBaiMAQfTvLGo2AgAjAEGQybkBaiMAQfbyLGo2AgAjAEGYybkBaiMAQb71LGo2AgAjAEGgybkBaiMAQY75LGo2AgAjAEGoybkBaiMAQdT8LGo2AgAjAEGwybkBaiMAQbT+LGo2AgAjAEG4ybkBaiMAQYSBLWo2AgAjAEHAybkBaiMAQfKELWo2AgAjAEHIybkBaiMAQZiILWo2AgAjAEHQybkBaiMAQZaMLWo2AgAjAEHYybkBaiMAQeKPLWo2AgAjAEHgybkBaiMAQZiTLWo2AgAjAEHoybkBaiMAQfaWLWo2AgAjAEHwybkBaiMAQaCaLWo2AgAjAEH4ybkBaiMAQaKaLWo2AgAjAEGAyrkBaiMAQaSaLWo2AgAjAEGIyrkBaiMAQcybLWo2AgAjAEGQyrkBaiMAQc6cLWo2AgAjAEGYyrkBaiMAQYifLWo2AgAjAEGgyrkBaiMAQfqhLWo2AgAjAEGoyrkBaiMAQeilLWo2AgAjAEGwyrkBaiMAQeCoLWo2AgAjAEG4yrkBaiMAQZisLWo2AgAjAEHAyrkBaiMAQYqwLWo2AgAjAEHIyrkBaiMAQcqzLWo2AgAjAEHQyrkBaiMAQaK3LWo2AgAjAEHYyrkBaiMAQci6LWo2AgAjAEHgyrkBaiMAQdC9LWo2AgAjAEHoyrkBaiMAQcrALWo2AgAjAEHwyrkBaiMAQYDELWo2AgAjAEH4yrkBaiMAQdzHLWo2AgAjAEGAy7kBaiMAQdTLLWo2AgAjAEGIy7kBaiMAQYzPLWo2AgAjAEGQy7kBaiMAQdrSLWo2AgAjAEGYy7kBaiMAQfzVLWo2AgAjAEGgy7kBaiMAQcjZLWo2AgAjAEGoy7kBaiMAQaLbLWo2AgAjAEGwy7kBaiMAQYzeLWo2AgAjAEG4y7kBaiMAQfDfLWo2AgAjAEHAy7kBaiMAQeriLWo2AgAjAEHIy7kBaiMAQdzlLWo2AgAjAEHQy7kBaiMAQejlLWo2AgAjAEHYy7kBaiMAQeznLWo2AgAjAEHgy7kBaiMAQczqLWo2AgAjAEHoy7kBaiMAQbDuLWo2AgAjAEHwy7kBaiMAQejxLWo2AgAjAEH4y7kBaiMAQf7zLWo2AgAjAEGAzLkBaiMAQZL3LWo2AgAjAEGIzLkBaiMAQb75LWo2AgAjAEGQzLkBaiMAQaj7LWo2AgAjAEGYzLkBaiMAQaT/LWo2AgAjAEGgzLkBaiMAQez/LWo2AgAjAEGozLkBaiMAQYKDLmo2AgAjAEGwzLkBaiMAQZSGLmo2AgAjAEG4zLkBaiMAQY6ILmo2AgAjAEHAzLkBaiMAQcaLLmo2AgAjAEHIzLkBaiMAQbiNLmo2AgAjAEHQzLkBaiMAQcCQLmo2AgAjAEHYzLkBaiMAQe6SLmo2AgAjAEHgzLkBaiMAQcqVLmo2AgAjAEHozLkBaiMAQaCZLmo2AgAjAEHwzLkBaiMAQY6cLmo2AgAjAEH4zLkBaiMAQeaeLmo2AgAjAEGAzbkBaiMAQcCiLmo2AgAjAEGIzbkBaiMAQYyjLmo2AgAjAEGQzbkBaiMAQfKmLmo2AgAjAEGYzbkBaiMAQdSpLmo2AgAjAEGgzbkBaiMAQfKsLmo2AgAjAEGozbkBaiMAQaKwLmo2AgAjAEGwzbkBaiMAQZazLmo2AgAjAEG4zbkBaiMAQey2Lmo2AgAjAEHAzbkBaiMAQfa5Lmo2AgAjAEHIzbkBaiMAQY69Lmo2AgAjAEHQzbkBaiMAQeq/Lmo2AgAjAEHYzbkBaiMAQbTBLmo2AgAjAEHgzbkBaiMAQcrDLmo2AgAjAEHozbkBaiMAQebFLmo2AgAjAEHwzbkBaiMAQeLILmo2AgAjAEH4zbkBaiMAQcTKLmo2AgAjAEGAzrkBaiMAQfjNLmo2AgAjAEGIzrkBaiMAQc7RLmo2AgAjAEGQzrkBaiMAQazVLmo2AgAjAEGYzrkBaiMAQZTYLmo2AgAjAEGgzrkBaiMAQfDaLmo2AgAjAEGozrkBaiMAQfbaLmo2AgAjAEGwzrkBaiMAQY7eLmo2AgAjAEG4zrkBaiMAQfThLmo2AgAjAEHAzrkBaiMAQZLkLmo2AgAjAEHIzrkBaiMAQcrnLmo2AgAjAEHQzrkBaiMAQdTpLmo2AgAjAEHYzrkBaiMAQbbrLmo2AgAjAEHgzrkBaiMAQZ7vLmo2AgAjAEHozrkBaiMAQezyLmo2AgAjAEHwzrkBaiMAQfbyLmo2AgAjAEH4zrkBaiMAQcbzLmo2AgAjAEGAz7kBaiMAQdr2Lmo2AgAjAEGIz7kBaiMAQbb6Lmo2AgAjAEGQz7kBaiMAQZ7+Lmo2AgAjAEGYz7kBaiMAQb6BL2o2AgAjAEGgz7kBaiMAQcqDL2o2AgAjAEGoz7kBaiMAQfyGL2o2AgAjAEGwz7kBaiMAQf6GL2o2AgAjAEG4z7kBaiMAQeiIL2o2AgAjAEHQz7kBaiMAQaaML2o2AgAjAEHYz7kBaiMAQbyPL2o2AgAjAEHoz7kBaiMAQeqQL2o2AgAjAEHwz7kBaiMAQdSTL2o2AgAjAEH4z7kBaiMAQaqXL2o2AgAjAEGA0LkBaiMAQbiaL2o2AgAjAEGI0LkBaiMAQYSbL2o2AgAjAEGQ0LkBaiMAQaaeL2o2AgAjAEGY0LkBaiMAQZyfL2o2AgAjAEGg0LkBaiMAQY6iL2o2AgAjAEGo0LkBaiMAQfSlL2o2AgAjAEGw0LkBaiMAQeyoL2o2AgAjAEG40LkBaiMAQcKsL2o2AgAjAEHA0LkBaiMAQaCwL2o2AgAjAEHI0LkBaiMAQeCzL2o2AgAjAEHQ0LkBaiMAQZK1L2o2AgAjAEHY0LkBaiMAQeK1L2o2AgAjAEHg0LkBaiMAQe61L2o2AgAjAEHw1bkBaiMA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/vQwajYCACMAQej3uQFqIwBB+PgwajYCACMAQfD3uQFqIwBB9PwwajYCACMAQfj3uQFqIwBB9IAxajYCACMAQYD4uQFqIwBB8oQxajYCACMAQYj4uQFqIwBB4IgxajYCACMAQZD4uQFqIwBB4IwxajYCACMAQZj4uQFqIwBB4JAxajYCACMAQaD4uQFqIwBB1JQxajYCACMAQaj4uQFqIwBByJgxajYCACMAQbD4uQFqIwBByJwxajYCACMAQbj4uQFqIwBByKAxajYCACMAQcD4uQFqIwBByKQxajYCACMAQcj4uQFqIwBBwKgxajYCACMAQdD4uQFqIwBBwKwxajYCACMAQdj4uQFqIwBBvLAxajYCACMAQeD4uQFqIwBBuLQxajYCACMAQej4uQFqIwBBnrgxajYCACMAQfD4uQFqIwBBkLwxajYCACMAQfj4uQFqIwBBkMAxajYCACMAQYD5uQFqIwBBjMQxajYCACMAQYj5uQFqIwBBiMgxajYCACMAQZD5uQFqIwBBgswxajYCACMAQZj5uQFqIwBBgNAxajYCACMAQaD5uQFqIwBB/NMxajYCACMAQaj5uQFqIwBB/NcxajYCACMAQbD5uQFqIwBB9tsxajYCACMAQbj5uQFqIwBB9N8xajYCACMAQcD5uQFqIwBB7uMxajYCACMAQcj5uQFqIwBB6ucxajYCACMAQdD5uQFqIwBB5OsxajYCACMAQdj5uQFqIwBB5O8xajYCACMAQeD5uQFqIwBB3vMxajYCACMAQej5uQFqIwBB3PcxajYCACMAQfD5uQFqIwBB1PsxajYCACMAQfj5uQFqIwBBkv4xajYCACMAQYD6uQFqIwBBpoEyajYCACMAQYj6uQFqIwBBpIUyajYCACMAQZD6uQFqIwBBoIkyajYCACMAQZj6uQFqIwBBno0yajYCACMAQaD6uQFqIwBBmpEyajYCACMAQaj6uQFqIwBBmJUyajYCACMAQbD6uQFqIwBBmJkyajYCACMAQbj6uQFqIwBBlp0yajYCACMAQcD6uQFqIwBBlqEyajYCACMAQcj6uQFqIwBBkqUyajYCACMAQdD6uQFqIwBBkKkyajYCACMAQdj6uQFqIwBBkK0yajYCACMAQeD6uQFqIwBB0K8yajYCACMAQej6uQFqIwBB4rIyajYCACMAQfD6uQFqIwBB4LYyajYCACMAQfj6uQFqIwBB3LoyajYCACMAQYD7uQFqIwBB2r4yajYCACMAQYj7uQFqIwBB2sIyajYCACMAQZD7uQFqIwBB2sYyajYCACMAQZj7uQFqIwBB2soyajYCACMAQaD7uQFqIwBB1s4yajYCACMAQaj7uQFqIwBB3tAyajYCACMAQbD7uQFqIwBBvtIyajYCACMAQbj7uQFqIwBB/tUyajYCACMAQcD7uQFqIwBB/tkyajYCACMAQcj7uQFqIwBB+t0yajYCACMAQdD7uQFqIwBB9uEyajYCACMAQdj7uQFqIwBB9OUyajYCACMAQeD7uQFqIwBB9OkyajYCACMAQej7uQFqIwBB6O0yajYCACMAQfD7uQFqIwBB4vEyajYCACMAQfj7uQFqIwBB3vUyajYCACMAQfiBugFqIwBBpvgyajYCACMAQYiEugFqIwBB8PsyajYCACMAQZCEugFqIwBBrP0yajYCACMAQZiEugFqIwBB6P4yajYCACMAQaCEugFqIwBB/v8yajYCACMAQaiEugFqIwBBpIEzajYCACMAQbCEugFqIwBB0IIzajYCACMAQbiEugFqIwBBwIMzajYCACMAQcCEugFqIwBB4oQzajYCACMAQYCFugFqIwBBooUzajYCACMAQYiFugFqIwBB3oYzajYCACMAQZCFugFqIwBBmogzajYCACMAQZiFugFqIwBB1okzajYCACMAQaCFugFqIwBBkoszajYCACMAQaiFugFqIwBBzowzajYCACMAQbCFugFqIwBBio4zajYCACMAQbiFugFqIwBBxo8zajYCACMAQcCFugFqIwBBgpEzajYCACMAQciFugFqIwBBvpIzajYCACMAQdCFugFqIwBB+pMzajYCACMAQdiFugFqIwBBtpUzajYCACMAQeCFugFqIwBB8pYzajYCACMAQeiFugFqIwBBrpgzajYCACMAQfCFugFqIwBB6pkzajYCACMAQfiFugFqIwBBppszajYCACMAQYCGugFqIwBB4pwzajYCACMAQYiGugFqIwBBnp4zajYCACMAQZCGugFqIwBB2p8zajYCACMAQZiGugFqIwBBlqEzajYCACMAQaCGugFqIwBB0qIzajYCACMAQaiGugFqIwBBjqQzajYCACMAQbCGugFqIwBByqUzajYCACMAQbiGugFqIwBBhqczajYCACMAQcCGugFqIwBBwqgzajYCACMAQciGugFqIwBB/qkzajYCACMAQdCGugFqIwBBuqszajYCACMAQdiGugFqIwBB9qwzajYCACMAQeCGugFqIwBBsq4zajYCACMAQeiGugFqIwBB7q8zajYCACMAQfCGugFqIwBBqrEzajYCACMAQfiGugFqIwBB5rIzajYCACMAQYCHugFqIwBBzLMzajYCACMAQYiHugFqIwBBiLUzajYCACMAQZCHugFqIwBBxLYzajYCACMAQZiHugFqIwBBgLgzajYCACMAQaCHugFqIwBBvLkzajYCACMAQaiHugFqIwBB+LozajYCACMAQbCHugFqIwBBtLwzajYCACMAQbiHugFqIwBB8L0zajYCACMAQcCHugFqIwBBrL8zajYCACMAQciHugFqIwBB6MAzajYCACMAQdCHugFqIwBBpMIzajYCACMAQdiHugFqIwBB4MMzajYCACMAQeCHugFqIwBBnMUzajYCACMAQeiHugFqIwBB2MYzajYCACMAQfCHugFqIwBBlMgzajYCACMAQfiHugFqIwBB0MkzajYCACMAQYCIugFqIwBBjMszajYCACMAQYiIugFqIwBByMwzajYCACMAQZCIugFqIwBBhM4zajYCACMAQZiIugFqIwBBwM8zajYCACMAQaCIugFqIwBB/NAzajYCACMAQaiIugFqIwBBuNIzajYCACMAQbCIugFqIwBB9NMzajYCACMAQbiIugFqIwBBsNUzajYCACMAQcCIugFqIwBB7NYzajYCACMAQciIugFqIwBBqNgzajYCACMAQdCIugFqIwBB5NkzajYCACMAQdiIugFqIwBBoNszajYCACMAQeCIugFqIwBB3NwzajYCACMAQeiIugFqIwBBmN4zajYCACMAQfCIugFqIwBB1N8zajYCACMAQfiIugFqIwBBkOEzajYCACMAQYCJugFqIwBBzOIzajYCACMAQYiJugFqIwBBiOQzajYCACMAQZCJugFqIwBBxOUzajYCACMAQZiJugFqIwBBgOczajYCACMAQaCJugFqIwBBvOgzajYCACMAQYiUugFqIwBB0OgzajYCACMAQZCUugFqIwBBmOozajYCACMAQaCUugFqIwBB9uwzajYCACMAQYCVugFqIwBBnu0zajYCACMAQZCVugFqIwBBpO0zajYCACMAQZiVugFqIwBBlO8zajYCACMAQfCWugFqIwBBqvIzajYCACMAQfiWugFqIwBB1PUzajYCACMAQYCXugFqIwBB1PkzajYCACMAQYiXugFqIwBBgv0zajYCACMAQZCXugFqIwBByP8zajYCACMAQZiXugFqIwBB1oI0ajYCACMAQaCXugFqIwBBkoY0ajYCACMAQaiXugFqIwBB/oc0ajYCACMAQbiXugFqIwBBgIg0ajYCACMAQcCXugFqIwBB4Ik0ajYCACMAQciXugFqIwBBioo0ajYCACMAQdiXugFqIwBB6ow0ajYCACMAQeCXugFqIwBBmI80ajYCACMAQeiXugFqIwBByJI0ajYCACMAQfiXugFqIwBBnJU0ajYCACMAQYCYugFqIwBBmJg0ajYCACMAQYiYugFqIwBBxJo0ajYCACMAQZCYugFqIwBB1Jw0ajYCACMAQZiYugFqIwBB/J40ajYCACMAQaCYugFqIwBB/p40ajYCACMAQaiYugFqIwBB3KA0ajYCACMAQbCYugFqIwBB3qA0ajYCACMAQbiYugFqIwBB1qQ0ajYCACMAQcCYugFqIwBBvKc0ajYCACMAQciYugFqIwBB2qo0ajYCACMAQdCYugFqIwBB0Kw0ajYCACMAQdiYugFqIwBBuq80ajYCACMAQeCYugFqIwBBvK80ajYCACMAQeiYugFqIwBB9LE0ajYCACMAQfCYugFqIwBB5rU0ajYCACMAQfiYugFqIwBBmLg0ajYCACMAQYCZugFqIwBB9Lk0ajYCACMAQYiZugFqIwBB4rw0ajYCACMAQZCZugFqIwBB2MA0ajYCACMAQZiZugFqIwBB9MA0ajYCACMAQaCZugFqIwBBmMQ0ajYCACMAQaiZugFqIwBBysY0ajYCACMAQbCZugFqIwBBqMg0ajYCACMAQbiZugFqIwBB8sg0ajYCACMAQcCZugFqIwBB9Mg0ajYCACMAQciZugFqIwBBqMo0ajYCACMAQdCZugFqIwBBgMw0ajYCACMAQdiZugFqIwBBtsw0ajYCACMAQeiZugFqIwBBuMw0ajYCACMAQfCZugFqIwBB1s40ajYCACMAQfiZugFqIwBByM80ajYCACMAQZiaugFqIwBB/tA0ajYCACMAQaCaugFqIwBB6tQ0ajYCACMAQaiaugFqIwBBlNc0ajYCACMAQcCaugFqIwBB0Ng0ajYCACMAQciaugFqIwBBrtw0ajYCACMAQdCaugFqIwBBsNw0ajYCACMAQdiaugFqIwBB+t80ajYCACMAQeCaugFqIwBB1OA0ajYCACMAQeiaugFqIwBB3uA0ajYCACMAQfCaugFqIwBBqOI0ajYCACMAQYCbugFqIwBBquI0ajYCACMAQYibugFqIwBBmuQ0ajYCACMAQZCbugFqIwBBzuc0ajYCACMAQZibugFqIwBBwus0ajYCACMAQaCbugFqIwBBsO80ajYCACMAQaibugFqIwBB4O80ajYCACMAQbCbugFqIwBB4u80ajYCACMAQbibugFqIwBBiPA0ajYCACMAQcCbugFqIwBBzvA0ajYCACMAQcibugFqIwBB7PA0ajYCACMAQdCbugFqIwBB3PI0ajYCACMAQdibugFqIwBB+vQ0ajYCACMAQeCbugFqIwBBjvY0ajYCACMAQeibugFqIwBBkPY0ajYCACMAQfCbugFqIwBBnPY0ajYCACMAQcihugFqIwBBjvk0ajYCACMAQdChugFqIwBB9vs0ajYCACMAQfihugFqIwBBtvw0ajYCACMAQYiqugFqIwBBgIA1ajYCACMAQbiqugFqIwBB2IE1ajYCACMAQeiwugFqIwBBkoM1ajYCACMAQfCwugFqIwBBjIY1ajYCACMAQdCxugFqIwBBhok1ajYCACMAQdixugFqIwBBgIw1ajYCACMAQeCxugFqIwBB+o41ajYCACMAQZC0ugFqIwBBoI81ajYCACMAQbC0ugFqIwBBppA1ajYCACMAQbi0ugFqIwBB3pA1ajYCACMAQci0ugFqIwBB2JE1ajYCACMAQdC0ugFqIwBBuJI1ajYCACMAQdi0ugFqIwBB5pM1ajYCACMAQYC1ugFqIwBBlJU1ajYCACMAQYi1ugFqIwBB0JY1ajYCACMAQZC1ugFqIwBBjJg1ajYCACMAQZi1ugFqIwBByJk1ajYCACMAQaC1ugFqIwBBhJs1ajYCACMAQai1ugFqIwBBwJw1ajYCACMAQbC1ugFqIwBB/J01ajYCACMAQbi1ugFqIwBBuJ81ajYCACMAQcC1ugFqIwBB9KA1ajYCACMAQci1ugFqIwBBsKI1ajYCACMAQdC1ugFqIwBB7KM1ajYCACMAQdi1ugFqIwBBqKU1ajYCACMAQeC1ugFqIwBB5KY1ajYCACMAQei1ugFqIwBBoKg1ajYCACMAQfC1ugFqIwBB3Kk1ajYCACMAQfi1ugFqIwBBmKs1ajYCACMAQYC2ugFqIwBB1Kw1ajYCACMAQYi2ugFqIwBBkK41ajYCACMAQZC2ugFqIwBBzK81ajYCACMAQZi2ugFqIwBBiLE1ajYCACMAQaC2ugFqIwBBxLI1ajYCACMAQai2ugFqIwBBgLQ1ajYCACMAQbC2ugFqIwBBvLU1ajYCACMAQbi2ugFqIwBB+LY1ajYCACMAQcC2ugFqIwBBtLg1ajYCACMAQci2ugFqIwBB8Lk1ajYCACMAQdC2ugFqIwBBrLs1ajYCACMAQdi2ugFqIwBB6Lw1ajYCACMAQeC2ugFqIwBBpL41ajYCACMAQei2ugFqIwBB4L81ajYCACMAQfC2ugFqIwBBnME1ajYCACMAQfi2ugFqIwBB2MI1ajYCACMAQYC3ugFqIwBBlMQ1ajYCACMAQYi3ugFqIwBB0MU1ajYCACMAQZC3ugFqIwBBjMc1ajYCACMAQZi3ugFqIwBByMg1ajYCACMAQaC3ugFqIwBBhMo1ajYCACMAQai3ugFqIwBBwMs1ajYCACMAQbC3ugFqIwBB/Mw1ajYCACMAQbi3ugFqIwBBuM41ajYCACMAQcC3ugFqIwBB9M81ajYCACMAQci3ugFqIwBBsNE1ajYCACMAQdC3ugFqIwBB7NI1ajYCACMAQdi3ugFqIwBBqNQ1ajYCACMAQeC3ugFqIwBB5NU1ajYCACMAQei3ugFqIwBBoNc1ajYCACMAQfC3ugFqIwBB3Ng1ajYCACMAQfi3ugFqIwBBmNo1ajYCACMAQYC4ugFqIwBB1Ns1ajYCACMAQYi4ugFqIwBBkN01ajYCACMAQZC4ugFqIwBBzN41ajYCACMAQZi4ugFqIwBBiOA1ajYCACMAQaC4ugFqIwBBxOE1ajYCACMAQai4ugFqIwBBgOM1ajYCACMAQbC4ugFqIwBBvOQ1ajYCACMAQbi4ugFqIwBB+OU1ajYCACMAQcC4ugFqIwBBtOc1ajYCACMAQci4ugFqIwBB8Og1ajYCACMAQdC4ugFqIwBBrOo1ajYCACMAQdi4ugFqIwBB6Os1ajYCACMAQeC4ugFqIwBBpO01ajYCACMAQei4ugFqIwBB4O41ajYCACMAQYDCugFqIwBB4PI1ajYCACMAQYjCugFqIwBB5PQ1ajYCACMAQZDCugFqIwBB4Pg1ajYCACMAQZjCugFqIwBBlPs1ajYCACMAQfDDugFqIwBBmv41ajYCACMAQfjDugFqIwBBnv41ajYCACMAQYDEugFqIwBBpv41ajYCACMAQYjEugFqIwBB2oA2ajYCACMAQZDEugFqIwBBkIQ2ajYCACMAQZjEugFqIwBBvoc2ajYCACMAQaDEugFqIwBB0oo2ajYCACMAQajEugFqIwBBio42ajYCACMAQbDEugFqIwBB9o42ajYCACMAQbjEugFqIwBB1JA2ajYCACMAQcjEugFqIwBBrpI2ajYCACMAQYDFugFqIwBBvpU2ajYCACMAQYjFugFqIwBBkpk2ajYCACMAQZDFugFqIwBBspk2ajYCACMAQZjFugFqIwBBxpw2ajYCACMAQaDFugFqIwBB3J82ajYCACMAQajFugFqIwBBkKM2ajYCACMAQbDFugFqIwBBvKY2ajYCACMAQbjFugFqIwBB0qk2ajYCACMAQcDFugFqIwBBjKw2ajYCACMAQcjFugFqIwBBgrA2ajYCACMAQdDFugFqIwBBtLE2ajYCACMAQdjFugFqIwBBrrM2ajYCACMAQeDFugFqIwBB9LY2ajYCACMAQejFugFqIwBB/Lk2ajYCACMAQfDFugFqIwBBhL02ajYCACMAQfjFugFqIwBBpL82ajYCACMAQYDGugFqIwBBpsE2ajYCACMAQYjGugFqIwBB3MI2ajYCACMAQZDGugFqIwBBusY2ajYCACMAQZjGugFqIwBB6Mk2ajYCACMAQaDGugFqIwBBxs02ajYCACMAQajGugFqIwBB4NA2ajYCACMAQbDGugFqIwBBptQ2ajYCACMAQbjGugFqIwBB6NY2ajYCACMAQcDGugFqIwBBzNo2ajYCACMAQcjGugFqIwBBjN02ajYCACMAQdDGugFqIwBBot42ajYCACMAQdjGugFqIwBBlOE2ajYCACMAQeDGugFqIwBB8OM2ajYCACMAQejGugFqIwBB5uY2ajYCACMAQfDGugFqIwBByOg2ajYCACMAQfjGugFqIwBBxOw2ajYCACMAQYDHugFqIwBBqvA2ajYCACMAQYjHugFqIwBBkvQ2ajYCACMAQZDHugFqIwBB9vc2ajYCACMAQZjHugFqIwBB7Ps2ajYCACMAQaDHugFqIwBB2P82ajYCACMAQajHugFqIwBBtIM3ajYCACMAQbDHugFqIwBBiIc3ajYCACMAQbjHugFqIwBB6oo3ajYCACMAQcDHugFqIwBB1o43ajYCACMAQcjHugFqIwBBuJI3ajYCACMAQdDHugFqIwBBoJY3ajYCACMAQdjHugFqIwBB9Jk3ajYCACMAQeDHugFqIwBB8J03ajYCACMAQejHugFqIwBB1KE3ajYCACMAQfDHugFqIwBBnKU3ajYCACMAQfjHugFqIwBBmKk3ajYCACMAQYDIugFqIwBBkq03ajYCACMAQYjIugFqIwBB6rA3ajYCACMAQZDIugFqIwBBtrQ3ajYCACMAQZjIugFqIwBBiLg3ajYCACMAQaDIugFqIwBB8rs3ajYCACMAQajIugFqIwBB4L83ajYCACMAQbDIugFqIwBB0sM3ajYCACMAQbjIugFqIwBBysc3ajYCACMAQcDIugFqIwBBwss3ajYCACMAQcjIugFqIwBBus83ajYCACMAQdDIugFqIwBBstM3ajYCACMAQdjIugFqIwBBkNc3ajYCACMAQeDIugFqIwBB+to3ajYCACMAQejIugFqIwBB7t43ajYCACMAQfDIugFqIwBB6OI3ajYCACMAQfjIugFqIwBBsuY3ajYCACMAQYDJugFqIwBBmOo3ajYCACMAQYjJugFqIwBB8u03ajYCACMAQZDJugFqIwBB6vE3ajYCACMAQZjJugFqIwBB4vU3ajYCACMAQaDJugFqIwBByvk3ajYCACMAQajJugFqIwBByP03ajYCACMAQbDJugFqIwBBuoE4ajYCACMAQbjJugFqIwBBtIU4ajYCACMAQcDJugFqIwBBmIk4ajYCACMAQcjJugFqIwBBjI04ajYCACMAQdDJugFqIwBB6JA4ajYCACMAQdjJugFqIwBB3pQ4ajYCACMAQeDJugFqIwBBspg4ajYCACMAQejJugFqIwBBnJw4ajYCACMAQfDJugFqIwBBiqA4ajYCACMAQfjJugFqIwBBsKI4ajYCACMAQYDKugFqIwBBsKU4ajYCACMAQYjKugFqIwBBpKk4ajYCACMAQZDKugFqIwBBiq04ajYCACMAQZjKugFqIwBBgLE4ajYCACMAQaDKugFqIwBB9LQ4ajYCACMAQajKugFqIwBB7rg4ajYCACMAQbDKugFqIwBB1rw4ajYCACMAQbjKugFqIwBB0sA4ajYCACMAQcDKugFqIwBBtMQ4ajYCACMAQcjKugFqIwBBnsg4ajYCACMAQdDKugFqIwBBnMw4ajYCACMAQdjKugFqIwBB9M84ajYCACMAQeDKugFqIwBBqNI4ajYCACMAQejKugFqIwBBtNU4ajYCACMAQfDKugFqIwBBntk4ajYCACMAQfjKugFqIwBBiN04ajYCACMAQYDLugFqIwBBgOE4ajYCACMAQYjLugFqIwBB/OQ4ajYCACMAQZDLugFqIwBB9Og4ajYCACMAQZjLugFqIwBB8uw4ajYCACMAQaDLugFqIwBB6vA4ajYCACMAQajLugFqIwBByPI4ajYCACMAQbDLugFqIwBBlvQ4ajYCACMAQbjLugFqIwBBvPc4ajYCACMAQcDLugFqIwBB/vo4ajYCACMAQcjLugFqIwBB3v44ajYCACMAQdDLugFqIwBByII5ajYCACMAQdjLugFqIwBBuIY5ajYCACMAQeDLugFqIwBBsIo5ajYCACMAQejLugFqIwBBlo45ajYCACMAQfDLugFqIwBB/JE5ajYCACMAQfjLugFqIwBB+JU5ajYCACMAQcjRugFqIwBBupg5ajYCACMAQdDRugFqIwBBups5ajYCACMAQfDRugFqIwBB8pw5ajYCACMAQfjRugFqIwBB9pw5ajYCACMAQYDSugFqIwBBkJ05ajYCACMAQYjSugFqIwBBxJ85ajYCACMAQZDSugFqIwBBxp85ajYCACMAQZjSugFqIwBByJ85ajYCACMAQaDSugFqIwBB5qI5ajYCACMAQajSugFqIwBB6KI5ajYCACMAQbDSugFqIwBBhKY5ajYCACMAQbjSugFqIwBBhqY5ajYCACMAQcDSugFqIwBBiKY5ajYCACMAQcjSugFqIwBB7qg5ajYCACMAQdDSugFqIwBBsqk5ajYCACMAQdjSugFqIwBBtKk5ajYCACMAQejSugFqIwBBuqs5ajYCACMAQfDSugFqIwBB9K05ajYCACMAQfjSugFqIwBB2K45ajYCACMAQZDTugFqIwBB2q45ajYCACMAQZjTugFqIwBB1LI5ajYCACMAQaDTugFqIwBBqLU5ajYCACMAQajTugFqIwBBrLU5ajYCACMAQbDTugFqIwBBrrU5ajYCACMAQbjTugFqIwBBirc5ajYCACMAQcDTugFqIwBBhLg5ajYCACMAQcjTugFqIwBBhrg5ajYCACMAQeDTugFqIwBBiLg5ajYCACMAQejTugFqIwBBirg5ajYCACMAQfDTugFqIwBB8ro5ajYCACMAQfjTugFqIwBB9ro5ajYCACMAQYjUugFqIwBBsL45ajYCACMAQZDUugFqIwBBsr45ajYCACMAQZjUugFqIwBBtL45ajYCACMAQbDUugFqIwBB1MA5ajYCACMAQcDUugFqIwBB1sA5ajYCACMAQcjUugFqIwBB+ME5ajYCACMAQdDUugFqIwBB+sE5ajYCACMAQdjUugFqIwBB/ME5ajYCACMAQeDUugFqIwBBvsM5ajYCACMAQejUugFqIwBBzsM5ajYCACMAQYjVugFqIwBB0MM5ajYCACMAQZjVugFqIwBB0MQ5ajYCACMAQaDVugFqIwBBtsY5ajYCACMAQajVugFqIwBB7Mg5ajYCACMAQbDVugFqIwBBwso5ajYCACMAQbjVugFqIwBB4so5ajYCACMAQcDVugFqIwBBys45ajYCACMAQdDVugFqIwBB/s45ajYCACMAQeDVugFqIwBBgM85ajYCACMAQejVugFqIwBBgNE5ajYCACMAQfjVugFqIwBB9tQ5ajYCACMAQYDWugFqIwBB+NQ5ajYCACMAQYjWugFqIwBB+tQ5ajYCACMAQZjWugFqIwBB8tg5ajYCACMAQbDWugFqIwBB9Ng5ajYCACMAQbjWugFqIwBB7to5ajYCACMAQcDWugFqIwBB8No5ajYCACMAQdDWugFqIwBB8to5ajYCACMAQdjWugFqIwBB9No5ajYCACMAQeDWugFqIwBBqNs5ajYCACMAQejWugFqIwBBqts5ajYCACMAQfDWugFqIwBBrNs5ajYCACMAQYDXugFqIwBBqN05ajYCACMAQYjXugFqIwBBwN05ajYCACMAQZDXugFqIwBByOA5ajYCACMAQaDXugFqIwBBpuE5ajYCACMAQajXugFqIwBB/uM5ajYCACMAQbjXugFqIwBBsuY5ajYCACMAQcjXugFqIwBBuuc5ajYCACMAQdDXugFqIwBB3Oc5ajYCACMAQdjXugFqIwBB+uc5ajYCACMAQeDXugFqIwBB/Oc5ajYCACMAQejXugFqIwBBsOg5ajYCACMAQfDXugFqIwBBsug5ajYCACMAQfjXugFqIwBBqOs5ajYCACMAQYDYugFqIwBB2u45ajYCACMAQZDYugFqIwBBnvI5ajYCACMAQZjYugFqIwBBzPI5ajYCACMAQaDYugFqIwBBzvI5ajYCACMAQbDYugFqIwBB0PI5ajYCACMAQbjYugFqIwBBtvM5ajYCACMAQcDYugFqIwBBuPM5ajYCACMAQcjYugFqIwBB1PM5ajYCACMAQdDYugFqIwBB7vU5ajYCACMAQeDYugFqIwBBsvk5ajYCACMAQfDYugFqIwBBnPw5ajYCACMAQfjYugFqIwBB6Pw5ajYCACMAQYDZugFqIwBBsv45ajYCACMAQYjZugFqIwBBtP45ajYCACMAQZjZugFqIwBBjv85ajYCACMAQaDZugFqIwBB2P85ajYCACMAQbDZugFqIwBBzIA6ajYCACMAQbjZugFqIwBBzII6ajYCACMAQcjZugFqIwBB1oM6ajYCACMAQdDZugFqIwBB2IM6ajYCACMAQdjZugFqIwBB2oM6ajYCACMAQeDZugFqIwBBhIQ6ajYCACMAQejZugFqIwBBhoQ6ajYCACMAQfDZugFqIwBBiIQ6ajYCACMAQfjZugFqIwBBioQ6ajYCACMAQYDaugFqIwBBjIQ6ajYCACMAQZDaugFqIwBB8IQ6ajYCACMAQZjaugFqIwBB6oY6ajYCACMAQaDaugFqIwBB7IY6ajYCACMAQajaugFqIwBBgIg6ajYCACMAQbDaugFqIwBBvok6ajYCACMAQcjaugFqIwBBhoo6ajYCACMAQdDaugFqIwBB8os6ajYCACMAQdjaugFqIwBBgI86ajYCACMAQejaugFqIwBB3o86ajYCACMAQfDaugFqIwBBtpM6ajYCACMAQfjaugFqIwBB0JY6ajYCACMAQZDbugFqIwBB3pk6ajYCACMAQaDbugFqIwBBgpo6ajYCACMAQajbugFqIwBBhJo6ajYCACMAQbDbugFqIwBBhpo6ajYCACMAQbjbugFqIwBB6ps6ajYCACMAQcDbugFqIwBB2pw6ajYCACMAQdDbugFqIwBB3Jw6ajYCACMAQejbugFqIwBB3pw6ajYCACMAQfDbugFqIwBB4Jw6ajYCACMAQfjbugFqIwBBiqA6ajYCACMAQYDcugFqIwBBjKA6ajYCACMAQYjcugFqIwBBzKM6ajYCACMAQZjcugFqIwBBzqM6ajYCACMAQaDcugFqIwBB0KM6ajYCACMAQajcugFqIwBB0qM6ajYCACMAQbDcugFqIwBB1KM6ajYCACMAQZDkugFqIwBBwKY6ajYCACMAQZjkugFqIwBB3qc6ajYCACMAQaDkugFqIwBBmqk6ajYCACMAQajkugFqIwBBsqo6ajYCACMAQbDkugFqIwBB7qo6ajYCACMAQbjkugFqIwBB+qs6ajYCACMAQcDkugFqIwBB9Kw6ajYCACMAQcjkugFqIwBB7K06ajYCACMAQdDkugFqIwBBqK86ajYCACMAQdjkugFqIwBB5LA6ajYCACMAQeDkugFqIwBBoLI6ajYCACMAQejkugFqIwBB3LM6ajYCACMAQfDkugFqIwBBmLU6ajYCACMAQfjkugFqIwBB1LY6ajYCACMAQfjmugFqIwBBkLg6ajYCACMAQaDpugFqIwBB5Lg6ajYCACMAQajpugFqIwBBlLo6ajYCACMAQbDpugFqIwBB0Ls6ajYCACMAQbjpugFqIwBBjL06ajYCACMAQcDpugFqIwBByL46ajYCACMAQcjpugFqIwBBgsA6ajYCACMAQdDpugFqIwBBvsE6ajYCACMAQdjpugFqIwBB+sI6ajYCACMAQeDpugFqIwBBtsQ6ajYCACMAQejpugFqIwBB8sU6ajYCACMAQfDpugFqIwBBrsc6ajYCACMAQfD0ugFqIwBB8Mg6ajYCACMAQfj0ugFqIwBB8sg6ajYCACMAQfj2ugFqIwBB5sk6ajYCACMAQaj5ugFqIwBBnMo6ajYCACMAQbD5ugFqIwBBjss6ajYCACMAQbj5ugFqIwBB/ss6ajYCACMAQcD5ugFqIwBBgMw6ajYCACMAQcj5ugFqIwBBgsw6ajYCACMAQdD5ugFqIwBBjs06ajYCACMAQdj5ugFqIwBBkM06ajYCACMAQeD5ugFqIwBBhM46ajYCACMAQfD5ugFqIwBBls46ajYCACMAQaCEuwFqIwBBoM46ajYCACMAQaiEuwFqIwBBtM46ajYCACMAQbCEuwFqIwBB1M46ajYCACMAQdiEuwFqIwBB2M46ajYCACMAQYiUuwFqIwBB8M86ajYCACMAQZiUuwFqIwBBqtE6ajYCACMAQaCUuwFqIwBB5tI6ajYCACMAQaiUuwFqIwBBotQ6ajYCACMAQcCUuwFqIwBB3NU6ajYCACMAQeCUuwFqIwBBmNc6ajYCACMAQeiUuwFqIwBB1Ng6ajYCACMAQfCUuwFqIwBBkNo6ajYCACMAQfiUuwFqIwBBzNs6ajYCACMAQfCYuwFqIwBBiN06ajYCACMAQfiYuwFqIwBBxN46ajYCACMAQYCZuwFqIwBBgOA6ajYCACMAQYiZuwFqIwBBvOE6ajYCACMAQZCZuwFqIwBB+OI6ajYCACMAQZiZuwFqIwBBsuQ6ajYCACMAQaCZuwFqIwBB7uU6ajYCACMAQaiZuwFqIwBBquc6ajYCACMAQbCZuwFqIwBB5ug6ajYCACMAQbiZuwFqIwBBoOo6ajYCACMAQcCZuwFqIwBB2Os6ajYCACMAQciZuwFqIwBBlO06ajYCACMAQdCZuwFqIwBBzu46ajYCACMAQdiZuwFqIwBBhvA6ajYCACMAQeCZuwFqIwBBwPE6ajYCACMAQeiZuwFqIwBB/PI6ajYCACMAQfCZuwFqIwBBuPQ6ajYCACMAQYikuwFqIwBB8PU6ajYCACMAQZikuwFqIwBBovc6ajYCACMAQaCkuwFqIwBBzvg6ajYCACMAQaikuwFqIwBB5vk6ajYCACMAQcCkuwFqIwBBmvs6ajYCACMAQeCkuwFqIwBBlPw6ajYCACMAQeikuwFqIwBBtv06ajYCACMAQfCkuwFqIwBB6v46ajYCACMAQfikuwFqIwBBloA7ajYCACMAQfCouwFqIwBBroE7ajYCACMAQfiouwFqIwBBqoI7ajYCACMAQYCpuwFqIwBBkIM7ajYCACMAQYipuwFqIwBBxIQ7ajYCACMAQZCpuwFqIwBB3oU7ajYCACMAQZipuwFqIwBBioc7ajYCACMAQaCpuwFqIwBBoog7ajYCACMAQaipuwFqIwBB0ok7ajYCACMAQbCpuwFqIwBB0Io7ajYCACMAQbipuwFqIwBBxos7ajYCACMAQcCpuwFqIwBB7Iw7ajYCACMAQcipuwFqIwBBkI47ajYCACMAQdCpuwFqIwBBxI87ajYCACMAQdipuwFqIwBBgJE7ajYCACMAQeCpuwFqIwBBopI7ajYCACMAQeipuwFqIwBBzJM7ajYCACMAQfCpuwFqIwBB1pQ7ajYCACMAQYCyuwFqIwBB0qYLajYCACMAQYiyuwFqIwBBgIK6AWo2AgAjAEGMsrsBaiMAQYG6C2o2AgAjAEGUsrsBaiMAQYCyugFqNgIAIwBBmLK7AWojAEGFxARqNgIAIwBBnLK7AWojAEGA8rkBajYCACMAQaSyuwFqIwBB06YEajYCACMAQayyuwFqIwBBgOK6AWo2AgAjAEGwsrsBaiMAQb6mBGo2AgAjAEG4srsBaiMAQYCSuwFqNgIAIwBBvLK7AWojAEGrpgRqNgIAIwBBwLK7AWojAEGAwroBajYCACMAQciyuwFqIwBB6aUEajYCACMAQdCyuwFqIwBBgPK6AWo2AgAjAEHUsrsBaiMAQdSlBGo2AgAjAEHcsrsBaiMAQYCiuwFqNgIAIwBB4LK7AWojAEHBpQRqNgIAIwBB5LK7AWojAEGA0roBajYCACMAQeyyuwFqIwBBtNIDajYCACMAQfCyuwFqIwBB8O81ajYCACMAQfSyuwFqIwBBgIK7AWo2AgAjAEH4srsBaiMAQcw/ajYCACMAQfyyuwFqIwBBgJK6AWo2AgAjAEGAs7sBaiMAQYCiugFqNgIAIwBBhLO7AWojAEHp4g5qNgIAIwBBpLO7AWojAEGm0QNqNgIAIwBBsLO7AWojAEHQs7sBajYCACMAQbSzuwFqIwBB8LO7AWo2AgAjAEHQs7sBaiMAQcujCWo2AgAjAEHUs7sBaiMCQe0ZajYCACMAQdyzuwFqIwBB6eIOajYCACMAQfSzuwFqIwJB7hlqNgIAIwBBgLS7AWojAEGx0QNqNgIAIwBBjLS7AWojAkHvGWo2AgAjAEGYtLsBaiMCQfAZajYCACMAQaS0uwFqIwBBtqQLajYCACMAQbC0uwFqIwJB8RlqNgIAIwBBvLS7AWojAkHyGWo2AgAjAEHItLsBaiMAQZG4CWo2AgAjAEHUtLsBaiMCQfMZajYCACMAQeC0uwFqIwJB9BlqNgIAIwBB7LS7AWojAEHp4g5qNgIAIwBBkLW7AWojAEHgljtqNgIAIwBBmLW7AWojAEGcmDtqNgIAIwBBoLW7AWojAEHKmTtqNgIAIwBBqLW7AWojAEH4mTtqNgIAIwBBsLW7AWojAEHqmjtqNgIAIwBBkLe7AWojAEGMnDtqNgIAIwBBmLe7AWojAEG8njtqNgIAIwBBoLe7AWojAEHgoTtqNgIAIwBBqLe7AWojAEGspDtqNgIAIwBBsLe7AWojAEGupDtqNgIAIwBBuLe7AWojAEHCpjtqNgIAIwBBwLe7AWojAEHmqTtqNgIAIwBBkLi7AWojAEG4qztqNgIAIwBBmLi7AWojAEGmrztqNgIAIwBBoLi7AWojAEHisDtqNgIAIwBBqLi7AWojAEHisjtqNgIAIwBBgLq7AWojAEGetDtqNgIAIwBBiLq7AWojAEGWuDtqNgIAIwBBkLq7AWojAEGKvDtqNgIAIwBBmLq7AWojAEGGwDtqNgIAIwBBoLq7AWojAEGCxDtqNgIAIwBBqLq7AWojAEGCyDtqNgIAIwBBsLq7AWojAEHqyztqNgIAIwBBuLq7AWojAEHazztqNgIAIwBBwLq7AWojAEHQ0ztqNgIAIwBByLq7AWojAEG61ztqNgIAIwBB0Lq7AWojAEGu2ztqNgIAIwBB2Lq7AWojAEGq3ztqNgIAIwBB4Lq7AWojAEGM4ztqNgIAIwBB6Lq7AWojAEHe5jtqNgIAIwBB8Lq7AWojAEHK6jtqNgIAIwBB+Lq7AWojAEHE7jtqNgIAIwBBgLu7AWojAEG08jtqNgIAIwBBiLu7AWojAEGo9jtqNgIAIwBBkLu7AWojAEGm+jtqNgIAIwBBmLu7AWojAEGA/jtqNgIAIwBBoLu7AWojAEH+gTxqNgIAIwBBqLu7AWojAEH+hTxqNgIAIwBBsLu7AWojAEHsiTxqNgIAIwBBuLu7AWojAEHQjTxqNgIAIwBBwLu7AWojAEHQkTxqNgIAIwBByLu7AWojAEHElTxqNgIAIwBB0Lu7AWojAEHCmTxqNgIAIwBB2Lu7AWojAEGUnTxqNgIAIwBB4Lu7AWojAEGUoTxqNgIAIwBB6Lu7AWojAEGIpTxqNgIAIwBB8Lu7AWojAEHaqDxqNgIAIwBB+Lu7AWojAEGyrDxqNgIAIwBBgLy7AWojAEGUsDxqNgIAIwBBiLy7AWojAEHmszxqNgIAIwBBkLy7AWojAEHitzxqNgIAIwBBmLy7AWojAEHcuzxqNgIAIwBBoLy7AWojAEHUvzxqNgIAIwBBqLy7AWojAEHQwzxqNgIAIwBBsLy7AWojAEG6xzxqNgIAIwBBuLy7AWojAEGoyzxqNgIAIwBBwLy7AWojAEGgzzxqNgIAIwBByLy7AWojAEGe0zxqNgIAIwBB0Ly7AWojAEGE1zxqNgIAIwBB2Ly7AWojAEH42jxqNgIAIwBB4Ly7AWojAEHu3jxqNgIAIwBB6Ly7AWojAEHu4jxqNgIAIwBB8Ly7AWojAEGk5jxqNgIAIwBB+Ly7AWojAEGU6jxqNgIAIwBBgL27AWojAEGM7jxqNgIAIwBBiL27AWojAEG08DxqNgIAIwBBkL27AWojAEHC8zxqNgIAIwBBmL27AWojAEG+9zxqNgIAIwBBoL27AWojAEG4+zxqNgIAIwBBqL27AWojAEGs/zxqNgIAIwBBsL27AWojAEGmgz1qNgIAIwBBuL27AWojAEGahz1qNgIAIwBBwL27AWojAEH4ij1qNgIAIwBByL27AWojAEHyjj1qNgIAIwBB0L27AWojAEHwkj1qNgIAIwBB2L27AWojAEHilj1qNgIAIwBB4L27AWojAEHGmj1qNgIAIwBB6L27AWojAEHEnj1qNgIAIwBB8L27AWojAEH6oD1qNgIAIwBB+L27AWojAEGIpD1qNgIAIwBBgL67AWojAEHopz1qNgIAIwBBiL67AWojAEHSqz1qNgIAIwBBkL67AWojAEHIrz1qNgIAIwBBmL67AWojAEHEsz1qNgIAIwBBoL67AWojAEGstz1qNgIAIwBBqL67AWojAEGMuz1qNgIAIwBBsL67AWojAEHyvj1qNgIAIwBBuL67AWojAEHqwD1qNgIAIwBBwL67AWojAEHCwj1qNgIAIwBByL67AWojAEGCxj1qNgIAIwBB0L67AWojAEGCyj1qNgIAIwBB2L67AWojAEGAzj1qNgIAIwBB4L67AWojAEH60T1qNgIAIwBB6L67AWojAEHW1T1qNgIAIwBB8L67AWojAEH02D1qNgIAIwBB+L67AWojAEHI3D1qNgIAIwBBgL+7AWojAEGs4D1qNgIAIwBBiL+7AWojAEHi4z1qNgIAIwBB8L+7AWojAEGO5j1qNgIAIwBB+L+7AWojAEGO6j1qNgIAIwBBgMC7AWojAEGO7j1qNgIAIwBBiMC7AWojAEGO8j1qNgIAIwBBkMC7AWojAEGO9j1qNgIAIwBBmMC7AWojAEGO+j1qNgIAIwBBoMC7AWojAEGO/j1qNgIAIwBBqMC7AWojAEGOgj5qNgIAIwBBsMC7AWojAEGOhj5qNgIAIwBBuMC7AWojAEGOij5qNgIAIwBBwMC7AWojAEGOjj5qNgIAIwBByMC7AWojAEGOkj5qNgIAIwBB0MC7AWojAEGOlj5qNgIAIwBB2MC7AWojAEGOmj5qNgIAIwBB4MC7AWojAEGOnj5qNgIAIwBB6MC7AWojAEGOoj5qNgIAIwBB8MC7AWojAEGOpj5qNgIAIwBB+MC7AWojAEGOqj5qNgIAIwBBgMG7AWojAEGOrj5qNgIAIwBBiMG7AWojAEGOsj5qNgIAIwBBkMG7AWojAEGOtj5qNgIAIwBBmMG7AWojAEGOuj5qNgIAIwBBoMG7AWojAEGOvj5qNgIAIwBBqMG7AWojAEGOwj5qNgIAIwBBsMG7AWojAEGOxj5qNgIAIwBBuMG7AWojAEGOyj5qNgIAIwBBwMG7AWojAEGOzj5qNgIAIwBByMG7AWojAEGO0j5qNgIAIwBB0MG7AWojAEGO1j5qNgIAIwBB2MG7AWojAEGO2j5qNgIAIwBB4MG7AWojAEGO3j5qNgIAIwBB6MG7AWojAEGO4j5qNgIAIwBB8MG7AWojAEGO5j5qNgIAIwBB+MG7AWojAEGO6j5qNgIAIwBBgMK7AWojAEGO7j5qNgIAIwBBiMK7AWojAEGO8j5qNgIAIwBBkMK7AWojAEGO9j5qNgIAIwBBmMK7AWojAEGO+j5qNgIAIwBBoMK7AWojAEGO/j5qNgIAIwBBqMK7AWojAEGOgj9qNgIAIwBBsMK7AWojAEGOhj9qNgIAIwBBuMK7AWojAEGOij9qNgIAIwBBwMK7AWojAEGOjj9qNgIAIwBByMK7AWojAEGOkj9qNgIAIwBB2MS7AWojAEHWlD9qNgIAIwBB4MS7AWojAEHWmD9qNgIAIwBBiMW7AWojAEHumD9qNgIAIwBBmMe7AWojAEGAnT9qNgIAIwBBoMe7AWojAEG8nj9qNgIAIwBBqMe7AWojAEHKnz9qNgIAIwBBsMe7AWojAEGGoT9qNgIAIwBBuMe7AWojAEHCoj9qNgIAIwBBwMe7AWojAEHyoz9qNgIAIwBByMe7AWojAEH6pD9qNgIAIwBB0Me7AWojAEGYpj9qNgIAIwBB2Me7AWojAEHUpz9qNgIAIwBB4Me7AWojAEGQqT9qNgIAIwBB6Me7AWojAEG2qj9qNgIAIwBB8Me7AWojAEHiqz9qNgIAIwBBkMi7AWojAEGErT9qNgIAIwBBmMi7AWojAEHArj9qNgIAIwBBoMi7AWojAEH8rz9qNgIAIwBBqMi7AWojAEG4sT9qNgIAIwBBsMi7AWojAEH0sj9qNgIAIwBBuMi7AWojAEGwtD9qNgIAIwBBwMi7AWojAEHstT9qNgIAIwBByMi7AWojAEGotz9qNgIAIwBB0Mi7AWojAEHkuD9qNgIAIwBB2Mi7AWojAEGguj9qNgIAIwBB4Mi7AWojAEHcuz9qNgIAIwBB6Mi7AWojAEGYvT9qNgIAIwBB8Mi7AWojAEHUvj9qNgIAIwBB+Mi7AWojAEGQwD9qNgIAIwBBgMm7AWojAEHMwT9qNgIAIwBBiMm7AWojAEGIwz9qNgIAIwBBkMm7AWojAEHExD9qNgIAIwBBmMm7AWojAEGAxj9qNgIAIwBBoMm7AWojAEG8xz9qNgIAIwBBqMm7AWojAEH4yD9qNgIAIwBBsMm7AWojAEG0yj9qNgIAIwBBuMm7AWojAEHwyz9qNgIAIwBBwMm7AWojAEGszT9qNgIAIwBByMm7AWojAEHozj9qNgIAIwBB0Mm7AWojAEGk0D9qNgIAIwBB4Mm7AWojAEHg0T9qNgIAIwBB6Mm7AWojAEGc0z9qNgIAIwBB8Mm7AWojAEHY1D9qNgIAIwBB+Mm7AWojAEGU1j9qNgIAIwBBgMq7AWojAEHQ1z9qNgIAIwBBiMq7AWojAEGM2T9qNgIAIwBBkMq7AWojAEHI2j9qNgIAIwBBmMq7AWojAEGE3D9qNgIAIwBBoMq7AWojAEHA3T9qNgIAIwBBqMq7AWojAEH83j9qNgIAIwBBsMq7AWojAEG44D9qNgIAIwBBuMq7AWojAEH04T9qNgIAIwBBwMq7AWojAEGw4z9qNgIAIwBByMq7AWojAEHs5D9qNgIAIwBB0Mq7AWojAEGo5j9qNgIAIwBB2Mq7AWojAEHk5z9qNgIAIwBB4Mq7AWojAEGg6T9qNgIAIwBB6Mq7AWojAEHc6j9qNgIAIwBB8Mq7AWojAEGY7D9qNgIAIwBB+Mq7AWojAEHU7T9qNgIAIwBBgMu7AWojAEGQ7z9qNgIAIwBBiMu7AWojAEHM8D9qNgIAIwBBkMu7AWojAEGI8j9qNgIAIwBBmMu7AWojAEHE8z9qNgIAIwBBoMu7AWojAEGA9T9qNgIAIwBBqMu7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QfC2vAFqIwBBppULajYCACMAQfS2vAFqIwBBrpULajYCACMAQfi2vAFqIwBBuJULajYCACMAQfy2vAFqIwBB8ZQLajYCACMAQYC3vAFqIwBB4YsLajYCACMAQZC3vAFqIwBBi9sKajYCACMAQZS3vAFqIwBBn4MLajYCACMAQZi3vAFqIwBB6eIOajYCACMAQZy3vAFqIwBB4doKajYCACMAQaC3vAFqIwBB/+8KajYCACMAQaS3vAFqIwBBi9sKajYCACMAQai3vAFqIwBBtL8KajYCACMAQay3vAFqIwBBloILajYCACMAQbC3vAFqIwBB4doKajYCACMAQbS3vAFqIwBBovwKajYCACMAQbi3vAFqIwBB+u8KajYCACMAQby3vAFqIwBB5ZEKajYCACMAQcC3vAFqIwBB3vkKajYCACMAQcS3vAFqIwBB8rcKajYCACMAQci3vAFqIwBBtL8KajYCACMAQcy3vAFqIwBBl64KajYCACMAQdC3vAFqIwBBmvAKajYCACMAQdS3vAFqIwBB4s8KajYCACMAQdi3vAFqIwBBjsIKajYCACMAQdy3vAFqIwBB1bcKajYCACMAQeC3vAFqIwBBwdMKajYCACMAQeS3vAFqIwBBlIILajYCACMAQei3vAFqIwBB0+EKajYCACMAQey3vAFqIwBBovwKajYCACMAQfC3vAFqIwBB9oELajYCACMAQfS3vAFqIwBB4rgKajYCACMAQfi3vAFqIwBB9MsKajYCACMAQfy3vAFqIwBBwJUKajYCACMAQYC4vAFqIwBBmYILajYCACMAQYS4vAFqIwBBv9kKajYCACMAQYi4vAFqIwBB/Y4KajYCACMAQYy4vAFqIwBB/u8KajYCACMAQZC4vAFqIwBBj8EKajYCACMAQZS4vAFqIwBB6eIOajYCACMAQZi4vAFqIwBB6+YKajYCACMAQZy4vAFqIwBB3YELajYCACMAQaC4vAFqIwBB7c8KajYCACMAQaS4vAFqIwBB37QKajYCACMAQai4vAFqIwBBspEKajYCACMAQay4vAFqIwBB5c8KajYCACMAQbC4vAFqIwBBvP0JajYCACMAQbS4vAFqIwBBxoUKajYCACMAQbi4vAFqIwBBuYELajYCACMAQby4vAFqIwBB2bcKajYCACMAQcC4vAFqIwBB57IKajYCACMAQcS4vAFqIwBB4M8KajYCACMAQci4vAFqIwBB1uEKajYCACMAQcy4vAFqIwBBxNMKajYCACMAQdC4vAFqIwBB+YoKajYCACMAQdS4vAFqIwBBgNAKajYCACMAQdi4vAFqIwBBjsIKajYCACMAQdy4vAFqIwBBrbQKajYCACMAQeC4vAFqIwBBwPYJajYCACMAQeS4vAFqIwBBlIILajYCACMAQei4vAFqIwBB3tQKajYCACMAQey4vAFqIwBBjPcJajYCACMAQfC4vAFqIwBB6pQKajYCACMAQfi4vAFqIwBB/c8KajYCACMAQfy4vAFqIwBBwJUKajYCACMAQYS5vAFqIwBBhdIKajYCACMAQYi5vAFqIwBB/Y4KajYCACMAQZS5vAFqIwBBvNkKajYCACMAQaC5vAFqIwBB7c8KajYCACMAQay5vAFqIwBBuYELajYCACMAQbi5vAFqIwBB4M8KajYCACMAQcS5vAFqIwBB+YoKajYCACMAQdC5vAFqIwBBrbQKajYCACMAQdy5vAFqIwBB3tQKajYCACMAQeC5vAFqIwBB5vkKajYCACMAQfC5vAFqIwBBgLq8AWo2AgAjAEGEurwBaiMCQboaajYCACMAQYy6vAFqIwJBuxpqNgIAIwBBlLq8AWojxwE2AgAjAEGcurwBaiMAQdC0vAFqNgIAIwBBpLq8AWojAEGwurwBajYCACMAQbC6vAFqIwBBgYoFajYCACMAQey6vAFqIwBBpNMAajYCACMAQfi6vAFqIwBBkLu8AWo2AgAjAEH8urwBaiMAQeDh7QFqNgIAIwBBkLu8AWojAEGl0wBqNgIAIwBBlLu8AWojAkG8Gmo2AgAjAEGcu7wBaiMAQeCViQFqNgIAIwBBxLu8AWojAEG/qQRqNgIAIwBB1Lu8AWojAEHwu7wBajYCACMAQdi7vAFqIwJBvhpqNgIAIwBB3Lu8AWojAkG/Gmo2AgAjAEHgu7wBaiMCQcAaajYCACMAQfS7vAFqIwJBwRpqNgIAIwBBgLy8AWojAEG6qQRqNgIAIwBBkLy8AWojAEGgvLwBajYCACMAQaS8vAFqIwJBwhpqNgIAIwBBrLy8AWojAkHDGmo2AgAjAEG0vLwBaiMCQcQaajYCACMAQby8vAFqIwBBwJiJAWo2AgAjAEHEvLwBaiMAQbC9vAFqNgIAIwBBzLy8AWojAEHQv7wBajYCACMAQdS8vAFqIwBBgMC8AWo2AgAjAEHcvLwBaiPHATYCACMAQeS8vAFqIwJBxRpqNgIAIwBB7Ly8AWojAkHGGmo2AgAjAEH0vLwBaiMCQccaajYCACMAQfy8vAFqIwJByBpqNgIAIwBBhL28AWojAkHGGmo2AgAjAEGMvbwBaiMCQckaajYCACMAQZS9vAFqIwJByhpqNgIAIwBBnL28AWojAkHLGmo2AgAjAEGkvbwBaiMCQcwaajYCACMAQbC9vAFqIwBBo/AGajYCACMAQbS9vAFqIwJBzRpqNgIAIwBBwL28AWojAEHytwhqNgIAIwBBxL28AWojAkHOGmo2AgAjAEHQvbwBaiMAQea3CGo2AgAjAEHUvbwBaiMCQc8aajYCACMAQeC9vAFqIwBBs+wFajYCACMAQeS9vAFqIwJB0BpqNgIAIwBB8L28AWojAEH/8QZqNgIAIwBB9L28AWojAkHRGmo2AgAjAEGAvrwBaiMAQdm7Bmo2AgAjAEGEvrwBaiMCQdIaajYCACMAQZC+vAFqIwBBqYoJajYCACMAQZS+vAFqIwJB0xpqNgIAIwBBoL68AWojAEHB2wZqNgIAIwBBpL68AWojAkHUGmo2AgAjAEGwvrwBaiMAQaWaB2o2AgAjAEG0vrwBaiMCQdUaajYCACMAQcC+vAFqIwBB2bQGajYCACMAQcS+vAFqIwJB1hpqNgIAIwBB0L68AWojAEGY0gVqNgIAIwBB1L68AWojAkHXGmo2AgAjAEHgvrwBaiMAQfm5Bmo2AgAjAEHkvrwBaiMCQdgaajYCACMAQfC+vAFqIwBBjLUFajYCACMAQfS+vAFqIwJB2RpqNgIAIwBBgL+8AWojAEGi5AZqNgIAIwBBhL+8AWojAkHaGmo2AgAjAEGQv7wBaiMAQbbbBmo2AgAjAEGUv7wBaiMCQdsaajYCACMAQaC/vAFqIwBB4s8JajYCACMAQaS/vAFqIwJB3BpqNgIAIwBBsL+8AWojAEG1xglqNgIAIwBBtL+8AWojAkHdGmo2AgAjAEHQv7wBaiMAQd7HCWo2AgAjAEGAwLwBaiMAQcvdCGo2AgAjAEGEwLwBaiMCQd4aajYCACMAQbDAvAFqIwBBkrYEajYCACMAQbTAvAFqIwBB8ucFajYCACMAQbjAvAFqIwBBqZwCajYCACMAQbzAvAFqIwBBx9cAajYCACMAQcDAvAFqIwBB3eYBajYCACMAQcTAvAFqIwBBnYkBajYCACMAQczAvAFqIwBBmoUKajYCACMAQdDAvAFqIwBBlvoKajYCACMAQdTAvAFqIwBBkOMKajYCACMAQdjAvAFqIwBB2OoJajYCACMAQdzAvAFqIwBB4rQFajYCACMAQezAvAFqIwBBsMG8AWo2AgAjAEGEwbwBaiMAQd+VAWo2AgAjAEGIwbwBaiMAQeCoiQFqNgIAIwBBkMG8AWojAEGgwrwBajYCACMAQZTBvAFqIwBB0MK8AWo2AgAjAEGYwbwBaiMCQd8aajYCACMAQZzBvAFqIwJB4BpqNgIAIwBBoMG8AWojAkHhGmo2AgAjAEG0wbwBaiMCQeIaajYCACMAQbzBvAFqIwBB0MG8AWo2AgAjAEHQwbwBaiMAQcnWA2o2AgAjAEHUwbwBaiMCQeMaajYCACMAQdzBvAFqIwBBkKGJAWo2AgAjAEHgwbwBaiMAQa0aajYCACMAQeTBvAFqIwJB5BpqNgIAIwBB7MG8AWojAEHQo4kBajYCACMAQfDBvAFqIwBBqtYDajYCACMAQfTBvAFqIwJB5RpqNgIAIwBB/MG8AWojAEHApYkBajYCACMAQYDCvAFqIwBB6bQFajYCACMAQYTCvAFqIwJB5hpqNgIAIwBBjMK8AWojAEGgpokBajYCACMAQaDCvAFqIwBB35UBajYCACMAQaTCvAFqIwJB5xpqNgIAIwBBrMK8AWojAEGQqokBajYCACMAQbDCvAFqIwBB6bQFajYCACMAQbTCvAFqIwJB6BpqNgIAIwBBvMK8AWojAEHwsYkBajYCACMAQdTCvAFqIwJB6RpqNgIAIwBB7MK8AWojAEGujQFqNgIAIwBB+MK8AWojAkH2Gmo2AgAjAEGMw7wBaiMCQfcaajYCACMAQajDvAFqI8cBNgIAIwBBuMO8AWojAEGQs4kBajYCACMAQdTDvAFqIwBB4MS8AWo2AgAjAEHYw7wBaiMAQZDIvAFqNgIAIwBB3MO8AWojAEHgyLwBajYCACMAQfTDvAFqIwJB+BpqNgIAIwBB+MO8AWoj5QE2AgAjAEH8w7wBaiMCQfkaajYCACMAQYDEvAFqI44CNgIAIwBBpMS8AWojAkH6Gmo2AgAjAEHAxLwBaiMAQaaNAWo2AgAjAEHExLwBaiMAQeCIigFqNgIAIwBBzMS8AWojAEGAyrwBajYCACMAQeDEvAFqIwBBv9cAajYCACMAQeTEvAFqIwJB+xpqNgIAIwBB7MS8AWojAEHww4kBajYCACMAQfDEvAFqIwBB/rcIajYCACMAQfTEvAFqIwJB/BpqNgIAIwBB/MS8AWojAEHgxYkBajYCACMAQYDFvAFqIwBBo/AGajYCACMAQYTFvAFqIwJB/RpqNgIAIwBBjMW8AWojAEHQx4kBajYCACMAQZDFvAFqIwBBz5UBajYCACMAQZTFvAFqIwJB/hpqNgIAIwBBnMW8AWojAEGQyIkBajYCACMAQaDFvAFqIwBBpiZqNgIAIwBBpMW8AWojAkH/Gmo2AgAjAEGsxbwBaiMAQYDJiQFqNgIAIwBBsMW8AWojAEHT7wVqNgIAIwBBtMW8AWojAkGAG2o2AgAjAEG8xbwBaiMAQaDKiQFqNgIAIwBBwMW8AWojAEGStgRqNgIAIwBBxMW8AWojAkGBG2o2AgAjAEHMxbwBaiMAQYDMiQFqNgIAIwBB0MW8AWojAEHZogdqNgIAIwBB1MW8AWojAkGCG2o2AgAjAEHcxbwBaiMAQdDMiQFqNgIAIwBB4MW8AWojAEHxogdqNgIAIwBB5MW8AWojAkGDG2o2AgAjAEHsxbwBaiMAQeDNiQFqNgIAIwBB8MW8AWojAEHU1ABqNgIAIwBB9MW8AWojAkGEG2o2AgAjAEH8xbwBaiMAQaDPiQFqNgIAIwBBgMa8AWojAEHmnQVqNgIAIwBBhMa8AWojAkGFG2o2AgAjAEGMxrwBaiMAQZDRiQFqNgIAIwBBkMa8AWojAEHUOGo2AgAjAEGUxrwBaiMCQYYbajYCACMAQZzGvAFqIwBB0NOJAWo2AgAjAEGgxrwBaiMAQcCwBGo2AgAjAEGkxrwBaiMCQYcbajYCACMAQazGvAFqIwBBoNaJAWo2AgAjAEGwxrwBaiMAQcipBWo2AgAjAEG0xrwBaiMCQYgbajYCACMAQbzGvAFqIwBB8NiJAWo2AgAjAEHAxrwBaiMAQfWwBGo2AgAjAEHExrwBaiMCQYkbajYCACMAQczGvAFqIwBB8NmJAWo2AgAjAEHQxrwBaiMAQba4CGo2AgAjAEHUxrwBaiMCQYobajYCACMAQdzGvAFqIwBBkNuJAWo2AgAjAEHgxrwBaiMAQZW2BWo2AgAjAEHkxrwBaiMCQYsbajYCACMAQezGvAFqIwBB8NyJAWo2AgAjAEHwxrwBaiMAQb2xBGo2AgAjAEH0xrwBaiMCQYwbajYCACMAQfzGvAFqIwBB8N6JAWo2AgAjAEGAx7wBaiMAQeuWBmo2AgAjAEGEx7wBaiMCQY0bajYCACMAQYzHvAFqIwBBoOCJAWo2AgAjAEGQx7wBaiMAQfeWBmo2AgAjAEGUx7wBaiMCQY4bajYCACMAQZzHvAFqIwBB4OGJAWo2AgAjAEGgx7wBaiMAQanBAGo2AgAjAEGkx7wBaiMCQY8bajYCACMAQazHvAFqIwBB0OKJAWo2AgAjAEGwx7wBaiMAQbTBAGo2AgAjAEG0x7wBaiMCQZAbajYCACMAQbzHvAFqIwBB4OSJAWo2AgAjAEHAx7wBaiMAQcTUAGo2AgAjAEHEx7wBaiMCQZEbajYCACMAQczHvAFqIwBBkOaJAWo2AgAjAEHQx7wBaiMAQarzBWo2AgAjAEHUx7wBaiMCQZIbajYCACMAQdzHvAFqIwBBoOiJAWo2AgAjAEHgx7wBaiMAQZKxBGo2AgAjAEHkx7wBaiMCQZMbajYCACMAQezHvAFqIwBB8POJAWo2AgAjAEHwx7wBaiMAQcfzBWo2AgAjAEH0x7wBaiMCQZQbajYCACMAQfzHvAFqIwBB8IGKAWo2AgAjAEGQyLwBaiMAQbwZajYCACMAQaDIvAFqIwBB0xhqNgIAIwBBpMi8AWojAEGqhwdqNgIAIwBBtMi8AWojAEG2/wZqNgIAIwBBuMi8AWojAEGKsARqNgIAIwBByMi8AWojAEGxsgVqNgIAIwBB4Mi8AWojAEHKwQBqNgIAIwBB5Mi8AWojAkGQG2o2AgAjAEHsyLwBaiMAQb/BAGo2AgAjAEGQybwBaiMAQbKKBGo2AgAjAEGUybwBaiMAQY+fAmo2AgAjAEGYybwBaiMAQamcAmo2AgAjAEGgybwBaiMAQbKKBGo2AgAjAEGkybwBaiMAQY+fAmo2AgAjAEGoybwBaiMAQamcAmo2AgAjAEGwybwBaiMAQbwZajYCACMAQbTJvAFqIwBBqocHajYCACMAQbjJvAFqIwBBirAEajYCACMAQbzJvAFqIwBBkrYEajYCACMAQcjJvAFqIwBBsMm8AWo2AgAjAEHMybwBaiMAQbaNAWo2AgAjAEGAyrwBaiMAQYqiB2o2AgAjAEGEyrwBaiMCQZUbajYCACMAQYzKvAFqIwBBwImKAWo2AgAjAEGQyrwBaiMAQbQmajYCACMAQZTKvAFqIwJBlhtqNgIAIwBBnMq8AWojAEGwiooBajYCACMAQaDKvAFqIwBB/5IEajYCACMAQaTKvAFqIwJBlxtqNgIAIwBBrMq8AWojAEGAjIoBajYCACMAQbDKvAFqIwBBtqIHajYCACMAQbTKvAFqIwJBmBtqNgIAIwBBvMq8AWojAEHQjYoBajYCACMAQcDKvAFqIwBB5KEHajYCACMAQcTKvAFqIwJBmRtqNgIAIwBBzMq8AWojAEGQjooBajYCACMAQdDKvAFqIwBBxswAajYCACMAQdTKvAFqIwJBmhtqNgIAIwBB3Mq8AWojAEHwj4oBajYCACMAQeDKvAFqIwBBmqIHajYCACMAQeTKvAFqIwJBmxtqNgIAIwBB7Mq8AWojAEHAkYoBajYCACMAQfDKvAFqIwBBo/AGajYCACMAQfTKvAFqIwJBnBtqNgIAIwBB/Mq8AWojAEGwkooBajYCACMAQYDLvAFqIwBBn54EajYCACMAQYTLvAFqIwJBnRtqNgIAIwBBjMu8AWojAEHwk4oBajYCACMAQZDLvAFqIwBBlZcCajYCACMAQZTLvAFqIwJBnhtqNgIAIwBBnMu8AWojAEGwlYoBajYCACMAQaDLvAFqIwBB9boFajYCACMAQaTLvAFqIwJBnxtqNgIAIwBBrMu8AWojAEGQlooBajYCACMAQbDLvAFqIwBBzYQCajYCACMAQbTLvAFqIwJBoBtqNgIAIwBBvMu8AWojAEHwlooBajYCACMAQcDLvAFqIwBBnrQFajYCACMAQcTLvAFqIwJBoRtqNgIAIwBBzMu8AWojAEHQl4oBajYCACMAQdDLvAFqIwBBtsMEajYCACMAQdTLvAFqIwJBohtqNgIAIwBB3Mu8AWojAEGwmIoBajYCACMAQeDLvAFqIwBB8b0JajYCACMAQeTLvAFqIwJBoxtqNgIAIwBB7Mu8AWojAEGAmooBajYCACMAQfDLvAFqIwBBnMIEajYCACMAQfTLvAFqIwJBpBtqNgIAIwBB/Mu8AWojAEGAm4oBajYCACMAQYDMvAFqIwBBpZ8EajYCACMAQYTMvAFqIwJBpRtqNgIAIwBBjMy8AWojAEGgnIoBajYCACMAQZDMvAFqIwBBmLgEajYCACMAQZTMvAFqIwJBphtqNgIAIwBBnMy8AWojAEGgnYoBajYCACMAQaDMvAFqIwBB5rgEajYCACMAQaTMvAFqIwJBpxtqNgIAIwBBrMy8AWojAEHAnooBajYCACMAQbDMvAFqIwBBl8EAajYCACMAQbTMvAFqIwJBqBtqNgIAIwBBvMy8AWojAEGgn4oBajYCACMAQcDMvAFqIwBBhcEAajYCACMAQcTMvAFqIwJBqRtqNgIAIwBBzMy8AWojAEGQoYoBajYCACMAQdDMvAFqIwBBrb4KajYCACMAQdTMvAFqIwJBqhtqNgIAIwBB3My8AWojAEGAo4oBajYCACMAQeDMvAFqIwBB3O8KajYCACMAQeTMvAFqIwJBqxtqNgIAIwBB7My8AWojAEGAp4oBajYCACMAQYDNvAFqIwBBs8IAajYCACMAQYTNvAFqIwBBks8AajYCACMAQYjNvAFqIwBBvBlqNgIAIwBBjM28AWojAEGqhwdqNgIAIwBBkM28AWojAEGKsARqNgIAIwBBlM28AWojAEGpnAJqNgIAIwBBsM28AWojAEHa/ABqNgIAIwBBtM28AWojAEGQqooBajYCACMAQbzNvAFqIwBB0M28AWo2AgAjAEHQzbwBaiMAQcnWA2o2AgAjAEHUzbwBaiMCQawbajYCACMAQdzNvAFqIwBBwKuKAWo2AgAjAEHgzbwBaiMAQb2WBGo2AgAjAEHkzbwBaiMCQa0bajYCACMAQezNvAFqIwBBgK6KAWo2AgAjAEHwzbwBaiMAQarWA2o2AgAjAEH0zbwBaiMCQa4bajYCACMAQfzNvAFqIwBB0K6KAWo2AgAjAEGAzrwBaiMAQcDHAmo2AgAjAEGEzrwBaiMCQa8bajYCACMAQYzOvAFqIwBB8K+KAWo2AgAjAEGQzrwBaiMAQZiUAmo2AgAjAEGUzrwBaiMCQbAbajYCACMAQZzOvAFqIwBBgLGKAWo2AgAjAEHEzrwBaiMAQa/rA2o2AgAjAEHIzrwBaiMAQdCxigFqNgIAIwBB0M68AWojAEHwzrwBajYCACMAQdTOvAFqIwBB0NC8AWo2AgAjAEHYzrwBaiMCQbUbajYCACMAQfDOvAFqIwBBsdIHajYCACMAQfTOvAFqIwJBthtqNgIAIwBB/M68AWojAEGb7ANqNgIAIwBBgM+8AWojAEHgzgdqNgIAIwBBhM+8AWojAkG3G2o2AgAjAEGMz7wBaiMAQfbrA2o2AgAjAEGQz7wBaiMAQZn5CGo2AgAjAEGUz7wBaiMCQbgbajYCACMAQZzPvAFqIwBBpPkIajYCACMAQaDPvAFqIwBBmNsFajYCACMAQaTPvAFqIwJBuRtqNgIAIwBBrM+8AWojAEGAwAdqNgIAIwBBsM+8AWojAEGe4wNqNgIAIwBBtM+8AWojAkG6G2o2AgAjAEG8z7wBaiMAQY2xDGo2AgAjAEHAz7wBaiMAQfziA2o2AgAjAEHEz7wBaiMCQbsbajYCACMAQczPvAFqIwBBrdUMajYCACMAQdDPvAFqIwBBydYDajYCACMAQdTPvAFqIwJBvBtqNgIAIwBB3M+8AWojAEGRwQdqNgIAIwBB4M+8AWojAEGq1gNqNgIAIwBB5M+8AWojAkG9G2o2AgAjAEHsz7wBaiMAQcvUDWo2AgAjAEHwz7wBaiMAQbS0BWo2AgAjAEH0z7wBaiMCQb4bajYCACMAQfzPvAFqIwBB16cFajYCACMAQYDQvAFqIwBB2DVqNgIAIwBBhNC8AWojAkG/G2o2AgAjAEGM0LwBaiMAQanFBWo2AgAjAEGQ0LwBaiMAQfuGCWo2AgAjAEGU0LwBaiMCQcAbajYCACMAQZzQvAFqIwBB28QMajYCACMAQaDQvAFqIwBBi9MAajYCACMAQaTQvAFqIwJBwRtqNgIAIwBBrNC8AWojAEHdxQVqNgIAIwBBsNC8AWojAEH+iwdqNgIAIwBBtNC8AWojAkHCG2o2AgAjAEG80LwBaiMAQYDGBWo2AgAjAEHU0LwBaiMCQcMbajYCACMAQeDQvAFqIwBB5cUHajYCACMAQeTQvAFqIwBB5MUCajYCACMAQfjQvAFqIwBBxMADajYCACMAQYzRvAFqIwBB4dIEajYCACMAQaDRvAFqIwBB7cUEajYCACMAQbTRvAFqIwBBo88IajYCACMAQcjRvAFqIwBBtvwAajYCACMAQdTRvAFqIwBB5cUHajYCACMAQdjRvAFqIwBB5MUCajYCACMAQeDRvAFqIwBBysEAajYCACMAQeTRvAFqIwBBh7sBajYCACMAQejRvAFqIwBB5cUHajYCACMAQezRvAFqIwBB4vwAajYCACMAQYDSvAFqIwBBwaMFajYCACMAQYTSvAFqIwBB5cUHajYCACMAQYjSvAFqIwBB5MUCajYCACMAQYzSvAFqIwBB3pQFajYCACMAQajSvAFqIwBBuSNqNgIAIwBBrNK8AWojAEGwsooBajYCACMAQbTSvAFqIwBB0NK8AWo2AgAjAEG40rwBaiMAQfDgvAFqNgIAIwBBvNK8AWojAkHGG2o2AgAjAEHA0rwBaiMCQccbajYCACMAQcTSvAFqIwJByBtqNgIAIwBB0NK8AWojAEHIsAFqNgIAIwBB1NK8AWojAkHJG2o2AgAjAEHc0rwBaiMAQcC0igFqNgIAIwBB4NK8AWojAEHd5gFqNgIAIwBB5NK8AWojAkHKG2o2AgAjAEHs0rwBaiMAQfC6igFqNgIAIwBB8NK8AWojAEHDoQdqNgIAIwBB9NK8AWojAkHLG2o2AgAjAEH80rwBaiMAQfDDigFqNgIAIwBBgNO8AWojAEH70QNqNgIAIwBBhNO8AWojAkHMG2o2AgAjAEGM07wBaiMAQfDEigFqNgIAIwBBkNO8AWojAEHNqQhqNgIAIwBBlNO8AWojAkHNG2o2AgAjAEGc07wBaiMAQZDHigFqNgIAIwBBoNO8AWojAEHDqQhqNgIAIwBBpNO8AWojAkHOG2o2AgAjAEGs07wBaiMAQfDOigFqNgIAIwBBsNO8AWojAEGquwRqNgIAIwBBtNO8AWojAkHPG2o2AgAjAEG807wBaiMAQYDQigFqNgIAIwBBwNO8AWojAEGguwRqNgIAIwBBxNO8AWojAkHQG2o2AgAjAEHM07wBaiMAQcDaigFqNgIAIwBB0NO8AWojAEHS1wBqNgIAIwBB1NO8AWojAkHRG2o2AgAjAEHc07wBaiMAQeDbigFqNgIAIwBB4NO8AWojAEHjvwhqNgIAIwBB5NO8AWojAkHSG2o2AgAjAEHs07wBaiMAQaDcigFqNgIAIwBB8NO8AWojAEHMpwhqNgIAIwBB9NO8AWojAkHTG2o2AgAjAEH807wBaiMAQYDdigFqNgIAIwBBgNS8AWojAEHqtwlqNgIAIwBBhNS8AWojAkHUG2o2AgAjAEGM1LwBaiMAQeDdigFqNgIAIwBBkNS8AWojAEHG0QNqNgIAIwBBlNS8AWojAkHVG2o2AgAjAEGc1LwBaiMAQcDeigFqNgIAIwBBoNS8AWojAEG2sAFqNgIAIwBBpNS8AWojAkHWG2o2AgAjAEGs1LwBaiMAQeDjigFqNgIAIwBBsNS8AWojAEHr0QNqNgIAIwBBtNS8AWojAkHXG2o2AgAjAEG81LwBaiMAQcDligFqNgIAIwBBwNS8AWojAEHyCGo2AgAjAEHE1LwBaiMCQdgbajYCACMAQczUvAFqIwBBgOmKAWo2AgAjAEHQ1LwBaiMAQdvRBWo2AgAjAEHU1LwBaiMCQdkbajYCACMAQdzUvAFqIwBB0OmKAWo2AgAjAEHg1LwBaiMAQYmjB2o2AgAjAEHk1LwBaiMCQdobajYCACMAQezUvAFqIwBB4OyKAWo2AgAjAEHw1LwBaiMAQa2cCGo2AgAjAEH01LwBaiMCQdsbajYCACMAQfzUvAFqIwBBsPCKAWo2AgAjAEGA1bwBaiMAQeLRA2o2AgAjAEGE1bwBaiMCQdwbajYCACMAQYzVvAFqIwBBoPSKAWo2AgAjAEGQ1bwBaiMAQdPRBWo2AgAjAEGU1bwBaiMCQd0bajYCACMAQZzVvAFqIwBB8PaKAWo2AgAjAEGg1bwBaiMAQZ+sBWo2AgAjAEGk1bwBaiMCQd4bajYCACMAQazVvAFqIwBBgPyKAWo2AgAjAEGw1bwBaiMAQf7MBWo2AgAjAEG01bwBaiMCQd8bajYCACMAQbzVvAFqIwBB0PyKAWo2AgAjAEHA1bwBaiMAQamiB2o2AgAjAEHE1bwBaiMCQeAbajYCACMAQczVvAFqIwBBsP2KAWo2AgAjAEHQ1bwBaiMAQYDRBWo2AgAjAEHU1bwBaiMCQeEbajYCACMAQdzVvAFqIwBBgP+KAWo2AgAjAEHg1bwBaiMAQc67Bmo2AgAjAEHk1bwBaiMCQeIbajYCACMAQezVvAFqIwBB4IGLAWo2AgAjAEHw1bwBaiMAQbScB2o2AgAjAEH01bwBaiMCQeMbajYCACMAQfzVvAFqIwBBwISLAWo2AgAjAEGA1rwBaiMAQbu3Amo2AgAjAEGE1rwBaiMCQeQbajYCACMAQYzWvAFqIwBB4I6LAWo2AgAjAEGQ1rwBaiMAQeH8AGo2AgAjAEGU1rwBaiMCQeUbajYCACMAQZzWvAFqIwBB0JCLAWo2AgAjAEGg1rwBaiMAQZU4ajYCACMAQaTWvAFqIwJB5htqNgIAIwBBrNa8AWojAEHAkYsBajYCACMAQbDWvAFqIwBB0cQGajYCACMAQbTWvAFqIwJB5xtqNgIAIwBBvNa8AWojAEGAk4sBajYCACMAQcDWvAFqIwBBs84FajYCACMAQcTWvAFqIwJB6BtqNgIAIwBBzNa8AWojAEHwlIsBajYCACMAQdDWvAFqIwBB080FajYCACMAQdTWvAFqIwJB6RtqNgIAIwBB3Na8AWojAEHglYsBajYCACMAQeDWvAFqIwBBr7wIajYCACMAQeTWvAFqIwJB6htqNgIAIwBB7Na8AWojAEGgmosBajYCACMAQfDWvAFqIwBBoQRqNgIAIwBB9Na8AWojAkHrG2o2AgAjAEH81rwBaiMAQeCaiwFqNgIAIwBBgNe8AWojAEGwwghqNgIAIwBBhNe8AWojAkHsG2o2AgAjAEGM17wBaiMAQeCciwFqNgIAIwBBkNe8AWojAEHIvwhqNgIAIwBBlNe8AWojAkHtG2o2AgAjAEGc17wBaiMAQaCdiwFqNgIAIwBBoNe8AWojAEHIngRqNgIAIwBBpNe8AWojAkHuG2o2AgAjAEGs17wBaiMAQeCdiwFqNgIAIwBBsNe8AWojAEHPvwhqNgIAIwBBtNe8AWojAkHvG2o2AgAjAEG817wBaiMAQaCeiwFqNgIAIwBBwNe8AWojAEH9vghqNgIAIwBBxNe8AWojAkHwG2o2AgAjAEHM17wBaiMAQfCfiwFqNgIAIwBB0Ne8AWojAEGXkwVqNgIAIwBB1Ne8AWojAkHxG2o2AgAjAEHc17wBaiMAQbCgiwFqNgIAIwBB4Ne8AWojAEGBtQVqNgIAIwBB5Ne8AWojAkHyG2o2AgAjAEHs17wBaiMAQfCgiwFqNgIAIwBB8Ne8AWojAEGr9gVqNgIAIwBB9Ne8AWojAkHzG2o2AgAjAEH817wBaiMAQbChiwFqNgIAIwBBgNi8AWojAEH2vghqNgIAIwBBhNi8AWojAkH0G2o2AgAjAEGM2LwBaiMAQYCiiwFqNgIAIwBBkNi8AWojAEGEvwhqNgIAIwBBlNi8AWojAkH1G2o2AgAjAEGc2LwBaiMAQcCiiwFqNgIAIwBBoNi8AWojAEGpwghqNgIAIwBBpNi8AWojAkH2G2o2AgAjAEGs2LwBaiMAQaCjiwFqNgIAIwBBsNi8AWojAEHMwghqNgIAIwBBtNi8AWojAkH3G2o2AgAjAEG82LwBaiMAQeCjiwFqNgIAIwBBwNi8AWojAEHEwghqNgIAIwBBxNi8AWojAkH4G2o2AgAjAEHM2LwBaiMAQcCkiwFqNgIAIwBB0Ni8AWojAEG+ngRqNgIAIwBB1Ni8AWojAkH5G2o2AgAjAEHc2LwBaiMAQaCliwFqNgIAIwBB4Ni8AWojAEGMhgFqNgIAIwBB5Ni8AWojAkH6G2o2AgAjAEHs2LwBaiMAQYCmiwFqNgIAIwBB8Ni8AWojAEGfvwhqNgIAIwBB9Ni8AWojAkH7G2o2AgAjAEH82LwBaiMAQZCniwFqNgIAIwBBgNm8AWojAEHAvwhqNgIAIwBBhNm8AWojAkH8G2o2AgAjAEGM2bwBaiMAQdCqiwFqNgIAIwBBkNm8AWojAEGvvwhqNgIAIwBBlNm8AWojAkH9G2o2AgAjAEGc2bwBaiMAQaCsiwFqNgIAIwBBoNm8AWojAEGmvwhqNgIAIwBBpNm8AWojAkH+G2o2AgAjAEGs2bwBaiMAQYCtiwFqNgIAIwBBsNm8AWojAEG6wghqNgIAIwBBtNm8AWojAkH/G2o2AgAjAEG82bwBaiMAQcCtiwFqNgIAIwBBwNm8AWojAEHGngRqNgIAIwBBxNm8AWojAkGAHGo2AgAjAEHM2bwBaiMAQZCuiwFqNgIAIwBB0Nm8AWojAEG8ngRqNgIAIwBB1Nm8AWojAkGBHGo2AgAjAEHc2bwBaiMAQYCviwFqNgIAIwBB4Nm8AWojAEGGnwVqNgIAIwBB5Nm8AWojAkGCHGo2AgAjAEHs2bwBaiMAQfCviwFqNgIAIwBB8Nm8AWojAEGj8AZqNgIAIwBB9Nm8AWojAkGDHGo2AgAjAEH82bwBaiMAQYCziwFqNgIAIwBBgNq8AWojAEHo3gdqNgIAIwBBhNq8AWojAkGEHGo2AgAjAEGM2rwBaiMAQcCziwFqNgIAIwBBkNq8AWojAEHbmgZqNgIAIwBBlNq8AWojAkGFHGo2AgAjAEGc2rwBaiMAQbC0iwFqNgIAIwBBoNq8AWojAEGfngRqNgIAIwBBpNq8AWojAkGGHGo2AgAjAEGs2rwBaiMAQYC2iwFqNgIAIwBBsNq8AWojAEGTtgtqNgIAIwBBtNq8AWojAkGHHGo2AgAjAEG82rwBaiMAQdC2iwFqNgIAIwBBwNq8AWojAEHFpwZqNgIAIwBBxNq8AWojAkGIHGo2AgAjAEHM2rwBaiMAQaC3iwFqNgIAIwBB0Nq8AWojAEGO0gVqNgIAIwBB1Nq8AWojAkGJHGo2AgAjAEHc2rwBaiMAQcC5iwFqNgIAIwBB4Nq8AWojAEGpiglqNgIAIwBB5Nq8AWojAkGKHGo2AgAjAEHs2rwBaiMAQZC7iwFqNgIAIwBB8Nq8AWojAEGPOGo2AgAjAEH02rwBaiMCQYscajYCACMAQfzavAFqIwBB8LuLAWo2AgAjAEGA27wBaiMAQbiGCWo2AgAjAEGE27wBaiMCQYwcajYCACMAQYzbvAFqIwBBkL+LAWo2AgAjAEGQ27wBaiMAQaLkBmo2AgAjAEGU27wBaiMCQY0cajYCACMAQZzbvAFqIwBBoMGLAWo2AgAjAEGg27wBaiMAQd43ajYCACMAQaTbvAFqIwJBjhxqNgIAIwBBrNu8AWojAEHwwYsBajYCACMAQbDbvAFqIwBBmOQGajYCACMAQbTbvAFqIwJBjxxqNgIAIwBBvNu8AWojAEHAw4sBajYCACMAQcDbvAFqIwBBvLABajYCACMAQcTbvAFqIwJBkBxqNgIAIwBBzNu8AWojAEHQxYsBajYCACMAQdDbvAFqIwBBmgRqNgIAIwBB1Nu8AWojAkGRHGo2AgAjAEHc27wBaiMAQfDGiwFqNgIAIwBB4Nu8AWojAEH5iwdqNgIAIwBB5Nu8AWojAkGSHGo2AgAjAEHs27wBaiMAQbDIiwFqNgIAIwBB8Nu8AWojAEGgzQNqNgIAIwBB9Nu8AWojAkGTHGo2AgAjAEH827wBaiMAQaDJiwFqNgIAIwBBgNy8AWojAEGAzQNqNgIAIwBBhNy8AWojAkGUHGo2AgAjAEGM3LwBaiMAQYDKiwFqNgIAIwBBkNy8AWojAEH5N2o2AgAjAEGU3LwBaiMCQZUcajYCACMAQZzcvAFqIwBB4MqLAWo2AgAjAEGg3LwBaiMAQfzuBmo2AgAjAEGk3LwBaiMCQZYcajYCACMAQazcvAFqIwBB0MuLAWo2AgAjAEGw3LwBaiMAQYnvBmo2AgAjAEG03LwBaiMCQZccajYCACMAQbzcvAFqIwBBwMyLAWo2AgAjAEHA3LwBaiMAQYfyBmo2AgAjAEHE3LwBaiMCQZgcajYCACMAQczcvAFqIwBBwM6LAWo2AgAjAEHQ3LwBaiMAQfAwajYCACMAQdTcvAFqIwJBmRxqNgIAIwBB3Ny8AWojAEGw0osBajYCACMAQeDcvAFqIwBB+jBqNgIAIwBB5Ny8AWojAkGaHGo2AgAjAEHs3LwBaiMAQYDTiwFqNgIAIwBB8Ny8AWojAEHTvgNqNgIAIwBB9Ny8AWojAkGbHGo2AgAjAEH83LwBaiMAQcDTiwFqNgIAIwBBgN28AWojAEHx0QNqNgIAIwBBhN28AWojAkGcHGo2AgAjAEGM3bwBaiMAQZDUiwFqNgIAIwBBkN28AWojAEGYnwlqNgIAIwBBlN28AWojAkGdHGo2AgAjAEGc3bwBaiMAQbDViwFqNgIAIwBBoN28AWojAEGsnwlqNgIAIwBBpN28AWojAkGeHGo2AgAjAEGs3bwBaiMAQfDViwFqNgIAIwBBsN28AWojAEGenwlqNgIAIwBBtN28AWojAkGfHGo2AgAjAEG83bwBaiMAQbDWiwFqNgIAIwBBwN28AWojAEGYsgpqNgIAIwBBxN28AWojAkGgHGo2AgAjAEHM3bwBaiMAQZDXiwFqNgIAIwBB0N28AWojAEHH9QpqNgIAIwBB1N28AWojAkGhHGo2AgAjAEHc3bwBaiMAQYDYiwFqNgIAIwBB4N28AWojAEHO9wpqNgIAIwBB5N28AWojAkGiHGo2AgAjAEHs3bwBaiMAQdDZiwFqNgIAIwBB8N28AWojAEGb+ApqNgIAIwBB9N28AWojAkGjHGo2AgAjAEH83bwBaiMAQbDaiwFqNgIAIwBBgN68AWojAEGG9gpqNgIAIwBBhN68AWojAkGkHGo2AgAjAEGM3rwBaiMAQaDbiwFqNgIAIwBBkN68AWojAEGsiwpqNgIAIwBBlN68AWojAkGlHGo2AgAjAEGc3rwBaiMAQaDciwFqNgIAIwBBoN68AWojAEHX2QpqNgIAIwBBpN68AWojAkGmHGo2AgAjAEGs3rwBaiMAQfDciwFqNgIAIwBBsN68AWojAEHJ2QpqNgIAIwBBtN68AWojAkGnHGo2AgAjAEG83rwBaiMAQeDdiwFqNgIAIwBBwN68AWojAEGvnAJqNgIAIwBBxN68AWojAkGoHGo2AgAjAEHM3rwBaiMAQdDeiwFqNgIAIwBB0N68AWojAEGwnAJqNgIAIwBB1N68AWojAkGpHGo2AgAjAEHc3rwBaiMAQcDfiwFqNgIAIwBB4N68AWojAEHtpANqNgIAIwBB5N68AWojAkGqHGo2AgAjAEHs3rwBaiMAQdDhiwFqNgIAIwBB8N68AWojAEH1pQZqNgIAIwBB9N68AWojAkGrHGo2AgAjAEH83rwBaiMAQbDiiwFqNgIAIwBBgN+8AWojAEH9pQZqNgIAIwBBhN+8AWojAkGsHGo2AgAjAEGM37wBaiMAQZDjiwFqNgIAIwBBkN+8AWojAEH+pQZqNgIAIwBBlN+8AWojAkGtHGo2AgAjAEGc37wBaiMAQaDkiwFqNgIAIwBBoN+8AWojAEGb0ABqNgIAIwBBpN+8AWojAkGuHGo2AgAjAEGs37wBaiMAQcDmiwFqNgIAIwBBsN+8AWojAEGE6QVqNgIAIwBBtN+8AWojAkGvHGo2AgAjAEG837wBaiMAQZDoiwFqNgIAIwBBwN+8AWojAEHo8gVqNgIAIwBBxN+8AWojAkGwHGo2AgAjAEHM37wBaiMAQdDoiwFqNgIAIwBB0N+8AWojAEGSqwVqNgIAIwBB1N+8AWojAkGxHGo2AgAjAEHc37wBaiMAQdDqiwFqNgIAIwBB4N+8AWojAEG+2gBqNgIAIwBB5N+8AWojAkGyHGo2AgAjAEHs37wBaiMAQcDriwFqNgIAIwBB8N+8AWojAEGszAdqNgIAIwBB9N+8AWojAkGzHGo2AgAjAEH837wBaiMAQdDtiwFqNgIAIwBBgOC8AWojAEGczAdqNgIAIwBBhOC8AWojAkG0HGo2AgAjAEGM4LwBaiMAQbDuiwFqNgIAIwBBkOC8AWojAEGQlwZqNgIAIwBBlOC8AWojAkG1HGo2AgAjAEGc4LwBaiMAQaDviwFqNgIAIwBBoOC8AWojAEGDlwZqNgIAIwBBpOC8AWojAkG2HGo2AgAjAEGs4LwBaiMAQcDwiwFqNgIAIwBBsOC8AWojAEHX0QNqNgIAIwBBtOC8AWojAkG3HGo2AgAjAEG84LwBaiMAQYDyiwFqNgIAIwBBwOC8AWojAEHY6AVqNgIAIwBBxOC8AWojAkG4HGo2AgAjAEHM4LwBaiMAQcD0iwFqNgIAIwBB0OC8AWojAEGSgwhqNgIAIwBB1OC8AWojAkG5HGo2AgAjAEHc4LwBaiMAQdD2iwFqNgIAIwBB9OC8AWojAkG6HGo2AgAjAEGA4bwBaiMAQdXrBWo2AgAjAEGE4bwBaiMAQd/DCGo2AgAjAEGI4bwBaiMAQYCSAmo2AgAjAEGU4bwBaiMAQYDhvAFqNgIAIwBBmOG8AWojAEHIsAFqNgIAIwBBtOG8AWojAEHIsAFqNgIAIwBBuOG8AWojAEHV6wVqNgIAIwBB4OG8AWojAEHV6wVqNgIAIwBB5OG8AWojAEGEgwhqNgIAIwBB6OG8AWojAEHfwwhqNgIAIwBB7OG8AWojAEG/xQJqNgIAIwBB8OG8AWojAEGAkgJqNgIAIwBB/OG8AWojAEHg4bwBajYCACMAQYDivAFqIwBB3eYBajYCACMAQZzivAFqIwBB3eYBajYCACMAQaDivAFqIwBB1esFajYCACMAQcTivAFqIwBB1esFajYCACMAQdDivAFqIwBBxOK8AWo2AgAjAEHU4rwBaiMAQfvRA2o2AgAjAEHw4rwBaiMAQfvRA2o2AgAjAEH04rwBaiMAQdXrBWo2AgAjAEGg47wBaiMAQdXrBWo2AgAjAEGk47wBaiMAQYSDCGo2AgAjAEGo47wBaiMAQd/DCGo2AgAjAEGs47wBaiMAQYCSAmo2AgAjAEG447wBaiMAQaDjvAFqNgIAIwBBvOO8AWojAEHNqQhqNgIAIwBB2OO8AWojAEHNqQhqNgIAIwBB3OO8AWojAEHV6wVqNgIAIwBBgOS8AWojAEGpxAhqNgIAIwBBhOS8AWojAEGEgwhqNgIAIwBBkOS8AWojAEGA5LwBajYCACMAQZTkvAFqIwBBw6kIajYCACMAQbDkvAFqIwBB1esFajYCACMAQbTkvAFqIwBBl78IajYCACMAQbjkvAFqIwBB2MIIajYCACMAQbzkvAFqIwBB38MIajYCACMAQcDkvAFqIwBBgJICajYCACMAQczkvAFqIwBBsOS8AWo2AgAjAEHQ5LwBaiMAQaq7BGo2AgAjAEHs5LwBaiMAQaq7BGo2AgAjAEHw5LwBaiMAQdXrBWo2AgAjAEGg5bwBaiMAQanECGo2AgAjAEGk5bwBaiMAQZe/CGo2AgAjAEGo5bwBaiMAQdjCCGo2AgAjAEG05bwBaiMAQaDlvAFqNgIAIwBBuOW8AWojAEGguwRqNgIAIwBB1OW8AWojAEHV6wVqNgIAIwBB4OW8AWojAEHU5bwBajYCACMAQeTlvAFqIwBB0tcAajYCACMAQYDmvAFqIwBB0tcAajYCACMAQYTmvAFqIwBB1esFajYCACMAQajmvAFqIwBB1esFajYCACMAQbTmvAFqIwBBqOa8AWo2AgAjAEG45rwBaiMAQcbRA2o2AgAjAEHU5rwBaiMAQcbRA2o2AgAjAEHY5rwBaiMAQdXrBWo2AgAjAEH85rwBaiMAQdXrBWo2AgAjAEGA57wBaiMAQd/DCGo2AgAjAEGM57wBaiMAQfzmvAFqNgIAIwBBkOe8AWojAEG2sAFqNgIAIwBBrOe8AWojAEG2sAFqNgIAIwBBsOe8AWojAEHV6wVqNgIAIwBB4Oe8AWojAEHV6wVqNgIAIwBB5Oe8AWojAEGEgwhqNgIAIwBB6Oe8AWojAEHfwwhqNgIAIwBB9Oe8AWojAEHg57wBajYCACMAQfjnvAFqIwBB69EDajYCACMAQZTovAFqIwBB69EDajYCACMAQZjovAFqIwBB1esFajYCACMAQbzovAFqIwBBze8FajYCACMAQcDovAFqIwBB3bcEajYCACMAQczovAFqIwBBvOi8AWo2AgAjAEHQ6LwBaiMAQfIIajYCACMAQezovAFqIwBB1esFajYCACMAQfDovAFqIwBB38MIajYCACMAQfzovAFqIwBB7Oi8AWo2AgAjAEGA6bwBaiMAQdvRBWo2AgAjAEGc6bwBaiMAQdvRBWo2AgAjAEGg6bwBaiMAQdXrBWo2AgAjAEHQ6bwBaiMAQe2cCWo2AgAjAEHU6bwBaiMAQdXKAGo2AgAjAEHY6bwBaiMAQdvDCGo2AgAjAEHc6bwBaiMAQdDDCGo2AgAjAEHo6bwBaiMAQdDpvAFqNgIAIwBB7Om8AWojAEGJowdqNgIAIwBBiOq8AWojAEGJowdqNgIAIwBBjOq8AWojAEHtnAlqNgIAIwBBsOq8AWojAEGJowdqNgIAIwBBtOq8AWojAEHVygBqNgIAIwBB4Oq8AWojAEHtnAlqNgIAIwBB5Oq8AWojAEHVygBqNgIAIwBB6Oq8AWojAEHbwwhqNgIAIwBB7Oq8AWojAEHQwwhqNgIAIwBB+Oq8AWojAEHg6rwBajYCACMAQfzqvAFqIwBBrZwIajYCACMAQZjrvAFqIwBBrZwIajYCACMAQZzrvAFqIwBB7ZwJajYCACMAQcDrvAFqIwBBrZwIajYCACMAQcTrvAFqIwBB1coAajYCACMAQejrvAFqIwBB1esFajYCACMAQezrvAFqIwBB38MIajYCACMAQfjrvAFqIwBB6Ou8AWo2AgAjAEH867wBaiMAQeLRA2o2AgAjAEGY7LwBaiMAQeLRA2o2AgAjAEGc7LwBaiMAQdXrBWo2AgAjAEHA7LwBaiMAQe2cCWo2AgAjAEHE7LwBaiMAQdXKAGo2AgAjAEHI7LwBaiMAQakLajYCACMAQczsvAFqIwBB38MIajYCACMAQdjsvAFqIwBBwOy8AWo2AgAjAEHc7LwBaiMAQdPRBWo2AgAjAEH47LwBaiMAQdPRBWo2AgAjAEH87LwBaiMAQe2cCWo2AgAjAEGg7bwBaiMAQdPRBWo2AgAjAEGk7bwBaiMAQdXKAGo2AgAjAEHI7bwBaiMAQaK5CGo2AgAjAEHU7bwBaiMAQcjtvAFqNgIAIwBB2O28AWojAEGfrAVqNgIAIwBB9O28AWojAEHV6wVqNgIAIwBB+O28AWojAEHfwwhqNgIAIwBBhO68AWojAEH07bwBajYCACMAQYjuvAFqIwBBgNEFajYCACMAQaTuvAFqIwBBgNEFajYCACMAQajuvAFqIwBB1esFajYCACMAQczuvAFqIwBB1esFajYCACMAQdDuvAFqIwBB38MIajYCACMAQdzuvAFqIwBBzO68AWo2AgAjAEHg7rwBaiMAQc67Bmo2AgAjAEH87rwBaiMAQc67Bmo2AgAjAEGA77wBaiMAQdXrBWo2AgAjAEGw77wBaiMAQdXrBWo2AgAjAEG077wBaiMAQbu3Amo2AgAjAEG477wBaiMAQauKAmo2AgAjAEG877wBaiMAQd/DCGo2AgAjAEHA77wBaiMAQYCSAmo2AgAjAEHM77wBaiMAQbDvvAFqNgIAIwBB0O+8AWojAEG0nAdqNgIAIwBB7O+8AWojAEG0nAdqNgIAIwBB8O+8AWojAEHV6wVqNgIAIwBBmPC8AWojAEHswwFqNgIAIwBBpPC8AWojAEGY8LwBajYCACMAQajwvAFqIwBB4fwAajYCACMAQcTwvAFqIwBBlThqNgIAIwBByPC8AWojAEHV6wVqNgIAIwBB8PC8AWojAEHV6wVqNgIAIwBB9PC8AWojAEG0NWo2AgAjAEH48LwBaiMAQY4xajYCACMAQYTxvAFqIwBB8PC8AWo2AgAjAEGI8bwBaiMAQdHEBmo2AgAjAEGk8bwBaiMAQdHEBmo2AgAjAEGo8bwBaiMAQdXrBWo2AgAjAEHQ8bwBaiMAQe74Bmo2AgAjAEHU8bwBaiMAQYu8CGo2AgAjAEHY8bwBaiMAQe/hAGo2AgAjAEHk8bwBaiMAQdDxvAFqNgIAIwBB6PG8AWojAEHTzQVqNgIAIwBBhPK8AWojAEHavwhqNgIAIwBBjPK8AWojAEHCwghqNgIAIwBBkPK8AWojAEGE8rwBajYCACMAQbDyvAFqIwBB1esFajYCACMAQbTyvAFqIwBBqZwCajYCACMAQbjyvAFqIwBBhIMIajYCACMAQbzyvAFqIwBB38MIajYCACMAQcjyvAFqIwBBsPK8AWo2AgAjAEHM8rwBaiMAQYafBWo2AgAjAEHo8rwBaiMAQYafBWo2AgAjAEHs8rwBaiMAQdXrBWo2AgAjAEGQ87wBaiMAQanECGo2AgAjAEGc87wBaiMAQZDzvAFqNgIAIwBBoPO8AWojAEGj8AZqNgIAIwBBvPO8AWojAEGpxAhqNgIAIwBByPO8AWojAEG887wBajYCACMAQczzvAFqIwBB25oGajYCACMAQfDzvAFqIwBBqcQIajYCACMAQfTzvAFqIwBB57cLajYCACMAQfjzvAFqIwBBsMwHajYCACMAQYT0vAFqIwBB8PO8AWo2AgAjAEGI9LwBaiMAQZO2C2o2AgAjAEGo9LwBaiMAQanECGo2AgAjAEG09LwBaiMAQaj0vAFqNgIAIwBBuPS8AWojAEG8sAFqNgIAIwBB1PS8AWojAEHV6wVqNgIAIwBB2PS8AWojAEHy5wVqNgIAIwBB5PS8AWojAEHU9LwBajYCACMAQej0vAFqIwBBie8GajYCACMAQYT1vAFqIwBBie8GajYCACMAQYj1vAFqIwBB1esFajYCACMAQaz1vAFqIwBBqcQIajYCACMAQbj1vAFqIwBBrPW8AWo2AgAjAEG89bwBaiMAQfHRA2o2AgAjAEHY9bwBaiMAQanECGo2AgAjAEHk9bwBaiMAQdj1vAFqNgIAIwBB6PW8AWojAEGYnwlqNgIAIwBBhPa8AWojAEGpxAhqNgIAIwBBkPa8AWojAEGE9rwBajYCACMAQZT2vAFqIwBBnp8JajYCACMAQbD2vAFqIwBB7MMBajYCACMAQbz2vAFqIwBBsPa8AWo2AgAjAEHA9rwBaiMAQcf1Cmo2AgAjAEHc9rwBaiMAQezDAWo2AgAjAEHo9rwBaiMAQdz2vAFqNgIAIwBB7Pa8AWojAEHO9wpqNgIAIwBBiPe8AWojAEHswwFqNgIAIwBBlPe8AWojAEGI97wBajYCACMAQZj3vAFqIwBBm/gKajYCACMAQbT3vAFqIwBB7MMBajYCACMAQcD3vAFqIwBBtPe8AWo2AgAjAEHE97wBaiMAQYb2Cmo2AgAjAEHg97wBaiMAQezDAWo2AgAjAEHs97wBaiMAQeD3vAFqNgIAIwBB8Pe8AWojAEGsiwpqNgIAIwBBjPi8AWojAEHswwFqNgIAIwBBmPi8AWojAEGM+LwBajYCACMAQZz4vAFqIwBB19kKajYCACMAQbj4vAFqIwBB7MMBajYCACMAQcT4vAFqIwBBuPi8AWo2AgAjAEHI+LwBaiMAQcnZCmo2AgAjAEHk+LwBaiMAQdXrBWo2AgAjAEHw+LwBaiMAQeT4vAFqNgIAIwBB9Pi8AWojAEGwnAJqNgIAIwBBkPm8AWojAEGwnAJqNgIAIwBBlPm8AWojAEHV6wVqNgIAIwBBwPm8AWojAEGDvApqNgIAIwBByPm8AWojAEHeuwpqNgIAIwBB0Pm8AWojAEGz0gpqNgIAIwBB4Pm8AWojAEGGwApqNgIAIwBB6Pm8AWojAEGC8gpqNgIAIwBB8Pm8AWojAEHu9QlqNgIAIwBB+Pm8AWojAEHg9QlqNgIAIwBBgPq8AWojAEHMuQpqNgIAIwBBiPq8AWojAEH73QpqNgIAIwBBkPq8AWojAEHN9QlqNgIAIwBBmPq8AWojAEGy5gpqNgIAIwBBoPq8AWojAEGkvApqNgIAIwBBqPq8AWojAEGE8AlqNgIAIwBBsPq8AWojAEGl8AlqNgIAIwBBuPq8AWojAEGi8wlqNgIAIwBBwPq8AWojAEGO8QlqNgIAIwBByPq8AWojAEGitgpqNgIAIwBB0Pq8AWojAEHD7glqNgIAIwBB2Pq8AWojAEHmkwpqNgIAIwBB4Pq8AWojAEGu8glqNgIAIwBB6Pq8AWojAEHL8AlqNgIAIwBB8Pq8AWojAEGF8wlqNgIAIwBB+Pq8AWojAEGZ8QlqNgIAIwBBgPu8AWojAEGV8wlqNgIAIwBBiPu8AWojAEGEzgpqNgIAIwBBkPu8AWojAEHk7glqNgIAIwBBmPu8AWojAEHH7wlqNgIAIwBBoPu8AWojAEGy7glqNgIAIwBBqPu8AWojAEH3/QpqNgIAIwBBsPu8AWojAEHL8QlqNgIAIwBBuPu8AWojAEG38QlqNgIAIwBBwPu8AWojAEGb7glqNgIAIwBByPu8AWojAEHfwgpqNgIAIwBB0Pu8AWojAEG98glqNgIAIwBB2Pu8AWojAEHZ8glqNgIAIwBB4Pu8AWojAEGokwpqNgIAIwBB6Pu8AWojAEHBzgpqNgIAIwBB8Pu8AWojAEHY7QpqNgIAIwBB+Pu8AWojAEGlugpqNgIAIwBBgPy8AWojAEGb1gpqNgIAIwBBiPy8AWojAEGw8AlqNgIAIwBBkPy8AWojAEGW8AlqNgIAIwBBmPy8AWojAEGE7wlqNgIAIwBBoPy8AWojAEHj2wpqNgIAIwBBqPy8AWojAEHxvApqNgIAIwBBsPy8AWojAEH9tApqNgIAIwBBuPy8AWojAEG/8AlqNgIAIwBBwPy8AWojAEGv4QpqNgIAIwBByPy8AWojAEGA4QpqNgIAIwBB0Py8AWojAEH47glqNgIAIwBB2Py8AWojAEHYkwpqNgIAIwBB4Py8AWojAEHAtgpqNgIAIwBB6Py8AWojAEH/1wpqNgIAIwBB8Py8AWojAEGRkQpqNgIAIwBB+Py8AWojAEHi7wlqNgIAIwBBgP28AWojAEGq8QlqNgIAIwBBiP28AWojAEGolApqNgIAIwBBkP28AWojAEGykgpqNgIAIwBBmP28AWojAEGT7wlqNgIAIwBBoP28AWojAEGN8glqNgIAIwBBqP28AWojAEH1jQpqNgIAIwBBsP28AWojAEGe8glqNgIAIwBBuP28AWojAEHZ8AlqNgIAIwBBwP28AWojAEHStgpqNgIAIwBByP28AWojAEHclApqNgIAIwBB0P28AWojAEGxmwpqNgIAIwBB2P28AWojAEGN4QpqNgIAIwBB4P28AWojAEGRkApqNgIAIwBB6P28AWojAEHR7glqNgIAIwBB8P28AWojAEHh1wpqNgIAIwBB+P28AWojAEHRhQpqNgIAIwBBgP68AWojAEHbiApqNgIAIwBBiP68AWojAEGV9wpqNgIAIwBB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v74BaiMAQZCJkAFqNgIAIwBB4L++AWojAEHxkwVqNgIAIwBB5L++AWojAkGDImo2AgAjAEHsv74BaiMAQYCKkAFqNgIAIwBB8L++AWojAEHGiQFqNgIAIwBB9L++AWojAkGEImo2AgAjAEH8v74BaiMAQdCKkAFqNgIAIwBBgMC+AWojAEGnmQZqNgIAIwBBhMC+AWojAkGFImo2AgAjAEGMwL4BaiMAQcCLkAFqNgIAIwBBpMC+AWojAkGGImo2AgAjAEGwwL4BaiMAQdG8C2o2AgAjAEG4wL4BaiMAQfq3C2o2AgAjAEHAwL4BaiMAQcOzC2o2AgAjAEHIwL4BaiMAQe+uC2o2AgAjAEHQwL4BaiMAQe+rC2o2AgAjAEHYwL4BaiMAQfGoC2o2AgAjAEHgwL4BaiMAQf+mC2o2AgAjAEHowL4BaiMAQc+8C2o2AgAjAEHwwL4BaiMAQfi3C2o2AgAjAEH4wL4BaiMAQcGzC2o2AgAjAEGAwb4BaiMAQe2uC2o2AgAjAEGIwb4BaiMAQe2rC2o2AgAjAEGQwb4BaiMAQe+oC2o2AgAjAEGYwb4BaiMAQf2mC2o2AgAjAEGgwb4BaiMAQdm8C2o2AgAjAEGowb4BaiMAQYK4C2o2AgAjAEGwwb4BaiMAQcuzC2o2AgAjAEG4wb4BaiMAQfeuC2o2AgAjAEHAwb4BaiMAQferC2o2AgAjAEHIwb4BaiMAQfmoC2o2AgAjAEHQwb4BaiMAQYenC2o2AgAjAEHYwb4BaiMAQYelC2o2AgAjAEHgwb4BaiMAQaajC2o2AgAjAEHowb4BaiMAQfHEC2o2AgAjAEHwwb4BaiMAQby9C2o2AgAjAEH4wb4BaiMAQcG5C2o2AgAjAEGAwr4BaiMAQde8C2o2AgAjAEGIwr4BaiMAQYC4C2o2AgAjAEGQwr4BaiMAQcmzC2o2AgAjAEGYwr4BaiMAQfWuC2o2AgAjAEGgwr4BaiMAQfWrC2o2AgAjAEGowr4BaiMAQfeoC2o2AgAjAEGwwr4BaiMAQYWnC2o2AgAjAEG4wr4BaiMAQYWlC2o2AgAjAEHAwr4BaiMAQaSjC2o2AgAjAEHIwr4BaiMAQe/EC2o2AgAjAEHQwr4BaiMAQbq9C2o2AgAjAEHYwr4BaiMAQb+5C2o2AgAjAEHgwr4BaiMAQYycCmo2AgAjAEHo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QcDcvgFqIwBBsL0LajYCACMAQcTcvgFqIwBB2bgLajYCACMAQcjcvgFqIwBBmrQLajYCACMAQczcvgFqIwBBuq8LajYCACMAQdDcvgFqIwBBoKwLajYCACMAQdTcvgFqIwBBx6kLajYCACMAQdjcvgFqIwBBsKcLajYCACMAQdzcvgFqIwBBw6ULajYCACMAQeDcvgFqIwBB8KMLajYCACMAQeTcvgFqIwBBlIMLajYCACMAQejcvgFqIwBBhoILajYCACMAQezcvgFqIwBBsYELajYCACMAQfDcvgFqIwBBwvoKajYCACMAQfTcvgFqIwBBh/AKajYCACMAQfjcvgFqIwBBvt4KajYCACMAQfzcvgFqIwBBtcQLajYCACMAQYDdvgFqIwBBmr0LajYCACMAQYTdvgFqIwBB1LgLajYCACMAQYjdvgFqIwBB/bMLajYCACMAQYzdvgFqIwBBta8LajYCACMAQZDdvgFqIwBBm6wLajYCACMAQZTdvgFqIwBBwqkLajYCACMAQZjdvgFqIwBBq6cLajYCACMAQZzdvgFqIwBBvqULajYCACMAQaDdvgFqIwBByqMLajYCACMAQaTdvgFqIwBBj4MLajYCACMAQajdvgFqIwBBgYILajYCACMAQazdvgFqIwBBrIELajYCACMAQbDdvgFqIwBBvfoKajYCACMAQbTdvgFqIwBBgvAKajYCACMAQbjdvgFqIwBBud4KajYCACMAQbzdvgFqIwBBrcQLajYCACMAQcDdvgFqIwBBlb0LajYCACMAQcTdvgFqIwBBz7gLajYCACMAQcjdvgFqIwBB+LMLajYCACMAQczdvgFqIwBBsK8LajYCACMAQdDdvgFqIwBBlqwLajYCACMAQdTdvgFqIwBBvakLajYCACMAQdjdvgFqIwBBpqcLajYCACMAQdzdvgFqIwBBuaULajYCACMAQeDdvgFqIwBBxaMLajYCACMAQeTdvgFqIwBBioMLajYCACMAQejdvgFqIwBB+YELajYCACMAQezdvgFqIwBBp4ELajYCACMAQfDdvgFqIwBB+/kKajYCACMAQfTdvgFqIwBB9e8KajYCACMAQfjdvgFqIwBBtN4KajYCACMAQfzdvgFqIwBBqMQLajYCACMAQYDevgFqIwBBkL0LajYCACMAQYTevgFqIwBByrgLajYCACMAQYjevgFqIwBB87MLajYCACMAQYzevgFqIwBBq68LajYCACMAQZDevgFqIwBBkawLajYCACMAQZTevgFqIwBBuKkLajYCACMAQZjevgFqIwBBoacLajYCACMAQZzevgFqIwBBtKULajYCACMAQaDevgFqIwBBwKMLajYCACMAQaTevgFqIwBBhYMLajYCACMAQajevgFqIwBB9IELajYCACMAQazevgFqIwBBooELajYCACMAQbDevgFqIwBB9vkKajYCACMAQbTevgFqIwBB5+8KajYCACMAQbjevgFqIwBBr94KajYCACMAQbzevgFqIwBBo8QLajYCACMAQcDevgFqIwBBi70LajYCACMAQcTevgFqIwBBxbgLajYCACMAQcjevgFqIwBB7rMLajYCACMAQczevgFqIwBBpq8LajYCACMAQdDevgFqIwBBjKwLajYCACMAQdTevgFqIwBBs6kLajYCACMAQdjevgFqIwBBnKcLajYCACMAQdzevgFqIwBBr6ULajYCACMAQeDevgFqIwBBu6MLajYCACMAQeTevgFqIwBBgIMLajYCACMAQejevgFqIwBB74ELajYCACMAQezevgFqIwBBlYELajYCACMAQfDevgFqIwBB4fkKajYCACMAQfTevgFqIwBBmu8KajYCACMAQfjevgFqIwBBqt4KajYCACMAQfzevgFqIwBBnsQLajYCACMAQYDfvgFqIwBBhr0LajYCACMAQYTfvgFqIwBBwLgLajYCACMAQYjfvgFqIwBB6bMLajYCACMAQYzfvgFqIwBBoa8LajYCACMAQZDfvgFqIwBBh6wLajYCACMAQZTfvgFqIwBBrqkLajYCACMAQZjfvgFqIwBBl6cLajYCACMAQZzfvgFqIwBBqqULajYCACMAQaDfvgFqIwBBtqMLajYCACMAQaTfvgFqIwBB84ILajYCACMAQajfvgFqIwBB6oELajYCACMAQazfvgFqIwBBkIELajYCACMAQbDfvgFqIwBB3PkKajYCACMAQbTfvgFqIwBBvu4KajYCACMAQbjfvgFqIwBBm94KajYCACMAQbzfvgFqIwBBmcQLajYCACMAQcDfvgFqIwBBgb0LajYCACMAQcTfvgFqIwBBu7gLajYCACMAQcjfvgFqIwBB5LMLajYCACMAQczfvgFqIwBBnK8LajYCACMAQdDfvgFqIwBBgqwLajYCACMAQdTfvgFqIwBBqakLajYCACMAQdjfvgFqIwBBkqcLajYCACMAQdzfvgFqIwBBpaULajYCACMAQeDfvgFqIwBBsaMLajYCACMAQeTfvgFqIwBB7oILajYCACMAQejfvgFqIwBB5YELajYCACMAQezfvgFqIwBBhoALajYCACMAQfDfvgFqIwBB4fQKajYCACMAQfTfvgFqIwBBpu4KajYCACMAQfjfvgFqIwBBzdwKajYCACMAQfzfvgFqIwBBlMQLajYCACMAQYDgvgFqIwBB/LwLajYCACMAQYTgvgFqIwBBtrgLajYCACMAQYjgvgFqIwBB37MLajYCACMAQYzgvgFqIwBBl68LajYCACMAQZDgvgFqIwBB/asLajYCACMAQZTgvgFqIwBBpKkLajYCACMAQZjgvgFqIwBBjacLajYCACMAQZzgvgFqIwBBjaULajYCACMAQaDgvgFqIwBBrKMLajYCACMAQaTgvgFqIwBB6YILajYCACMAQajgvgFqIwBB4IELajYCACMAQazgvgFqIwBB/f8KajYCACMAQbDgvgFqIwBB0fQKajYCACMAQbTgvgFqIwBBoe4KajYCACMAQbjgvgFqIwBBrNwKajYCACMAQbzgvgFqIwBBkcQLajYCACMAQcDgvgFqIwBBhbwLajYCACMAQcTgvgFqIwBBhrYLajYCACMAQcjgvgFqIwBBz7ILajYCACMAQczgvgFqIwBB6a4LajYCACMAQdDgvgFqIwBB0KsLajYCACMAQdTgvgFqIwBB2agLajYCACMAQdjgvgFqIwBB9KYLajYCACMAQdzgvgFqIwBB8qQLajYCACMAQeDgvgFqIwBBvb8BajYCACMAQeTgvgFqIwBB5KEFajYCACMAQejgvgFqIwBBu4ELajYCACMAQezgvgFqIwBBpPwKajYCACMAQfDgvgFqIwBB5pcEajYCACMAQfTgvgFqIwBBzd4KajYCACMAQfjgvgFqIwBBjdsKajYCACMAQfzgvgFqIwBB5MQLajYCACMAQYDhvgFqIwBBtb0LajYCACMAQYThvgFqIwBBurkLajYCACMAQYjhvgFqIwBBwbQLajYCACMAQYzhvgFqIwBBkrELajYCACMAQZDhvgFqIwBB+q0LajYCACMAQZThvgFqIwBBtKoLajYCACMA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sAFB+J0BajYCACMAQeSN4gFqIwBBkIziAWo2AgAjAEHojeIBaiMAQbCM4gFqNgIAIwBB7I3iAWojAEHQjOIBajYCACMAQfCN4gFqIwBB7IziAWo2AgAjAEH4jeIBaiO2ATYCACMAQYSP4gFqI7EBNgIAIwBBpI/iAWojsQE2AgAjAEHEj+IBaiOxATYCACMAQeSP4gFqI7EBNgIAIwBBiJDiAWojsQE2AgAjAEGokOIBaiOxATYCACMAQciQ4gFqI7EBNgIAIwBB6JDiAWojsQE2AgAjAEGMkeIBaiOxATYCACMAQbCR4gFqI7EBNgIAIwBB1JHiAWojsQE2AgAjAEH4keIBaiOxATYCACMAQZyS4gFqI7EBNgIAIwBBvJLiAWojsQE2AgAjAEHckuIBaiOxATYCACMAQfyS4gFqI7EBNgIAIwBBnJPiAWojsQE2AgAjAEG8k+IBaiOxATYCACMAQdyT4gFqI7EBNgIAIwBBgJTiAWojsQE2AgAjAEGglOIBaiOxATYCACMAQcCU4gFqI7EBNgIAIwBB4JTiAWojsQE2AgAjAEGAleIBaiOxATYCACMAQaCV4gFqI7EBNgIAIwBBwJXiAWojsQE2AgAjAEHgleIBaiOxATYCACMAQYCW4gFqI7EBNgIAIwBBoJbiAWojsQE2AgAjAEHAluIBaiOxATYCACMAQeCW4gFqI7EBNgIAIwBBgJfiAWojsQE2AgAjAEGgl+IBaiOxATYCACMAQcSX4gFqI7EBNgIAIwBB7JfiAWojsQE2AgAjAEGQmOIBaiOxATYCACMAQbSY4gFqI7EBNgIAIwBB2JjiAWojsQE2AgAjAEGAmeIBaiOxATYCACMAQaSZ4gFqI7EBNgIAIwBByJniAWojsQE2AgAjAEHwmeIBaiOxATYCACMAQZSa4gFqI7EBNgIAIwBBuJriAWojsQE2AgAjAEHcmuIBaiOxATYCACMAQYyb4gFqI7EBNgIAIwBBwJviAWojsQE2AgAjAEHwm+IBaiOxATYCACMAQaSc4gFqI7EBNgIAIwBB2JziAWojsQE2AgAjAEGIneIBaiOxATYCACMAQcCd4gFqI7EBNgIAIwBB8J3iAWojsQE2AgAjAEGsnuIBaiOxATYCACMAQeSe4gFqI7EBNgIAIwBBlJ/iAWojsQE2AgAjAEHEn+IBaiOxATYCACMA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IAEQ1RBBACEADAELQYANIQECQCAAECMNACAAEBYiAUF/Rw0AEAAjsAIoAgAjAEGJmwJqELQaDAELIAEgAEEAELsCIQMLIAQQByACEAcgABAHIAML0AEBBX8jAUEQayIDJAECQCAAKAIkEDgiBkUEQEEAIQAMAQtBACEAIAEQUSIFRQ0AIANBADYCBCADIAU2AgACQCAGIwBB+KinAWogAxCuAiIARQRAIAEgASgCAEEBayIANgIAIAANASABENUQDAELQYANIQICfwJAIAAQIw0AIAAQFiICQX9HDQAQACOwAigCACMAQYmbAmoQtBpBAAwBCyACIABBABC7AgshAiAFIQQMAQsgBSEEQQAhAAsgBhAHIAQQByAAEAcgA0EQaiQBIAILJAAgACgCJBBSQX9GBEBBAA8LI7IBIgAgACgCAEEBajYCACAACx4AIAAoAiQQUyIARQRAQQAPCyAAEBohASAAEAcgAQvqAQECfwJAIAJBAk8EQCMAQcqfBGogAkEAQQEQjBtFDQELAkACQAJAIAJBAEwEQEF/IQFBACECDAELIAEoAgAQvAUiAkUEQEEADwsgAhCiDSIBQX9HDQAQtRoNAUF/IQELAkACQAJAIAAoAiQQsQIiBEEBag4CAgABCyPOASgCACMAQYHEAGoQtBoMAQsgBCABQR91IARxIAFqIgFNBEAjzgEoAgAjAEHq4AdqELQaDAELIAAoAiQgARBUIgBFDQAgABAaIQMLIAJFDQIMAQsLIAIgAigCAEEBayIANgIAIAANACACENUQCyADCz8AIAEQwQMiAQRAIAAoAiQgARAcIQAgARAHIABBf0YEQEEADwsjsgEiASABKAIAQQFqNgIAIAEPC0EAEAdBAAuGAwEDfyMBQTBrIgIkASACQQA2AiggAkH/////BzYCJCACIAJBLGo2AhAgAiACQShqNgIUIAIgAkEkajYCGAJAIAEjAEHLJWogAkEQahDxGkUNACAAKAIkELECIgFBf0YNACACKAIoIgNBAEgEQCACIAEgA2oiA0EAIANBAEobNgIoCyACKAIkIgNBAEgEQCACIAEgA2oiA0EAIANBAEobIgM2AiQLIAEgA0gEQCACIAE2AiQLAkAgAigCLEEAEMADIgFFBEAQvRogAigCKCIBIAIoAiRODQEDQCAAKAIkIAEQMCIEEFUhAyAEEAcg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IABBfHEhCEEAIQBBACEEA0AgAyAAQQJ0IgFBDHJqKAIAIAMgAUEIcmooAgAgAyABQQRyaigCACABIANqKAIAIAZsbGxsIQYgAEEEaiEAIARBBGoiBCAIRw0ACwwBCxDOGhogAkE0ahDEBSACQQhqEMQFDAQLIAUEQEEAIQEDQCADIABBAnRqKAIAIAZsIQYgAEEBaiEAIAFBAWoiASAFRw0ACwsgBkUNAQsDQAJAIAIoAhwiCEEBayIAQQBIDQAgAigCJCEEA0AgByAAQQJ0IgNqIgEoAgAiBSADIARqKAIAQQFrSARAIAEgBUEBajYCAAwCCyABQQA2AgAgAEEBayIAQQBODQALCyACKAI0IQMgAigCSCIFQQBKBEBBACEAIAIoAlghBCACKAJUIQkDQCADIAcgAEECdCIBaigCACABIAlqKAIAbGohAwJAIARFDQAgASAEaigCACIBQQBIDQAgAygCACABaiEDCyAAQQFqIgAgBUcNAAsLIAZBAWshBiACKAIIIQEgCEEASgRAQQAhACACKAIsIQUgAigCKCEJA0AgASAHIABBAnQiBGooAgAgBCAJaigCAGxqIQECQCAFRQ0AIAQgBWooAgAiBEEASA0AIAEoAgAgBGohAQsgAEEBaiIAIAhHDQALCyADIAEgAigCFBDOPhogBg0ACwsgBxD9ECACQTRqEMQFIAJBCGoQxAULQQAhAwsgAkHgAGokASADC9MDAQZ/AkAgBEHGAEcEQEEAIQQgAEEBayIHQQBIDQECQCAAQQNxIgVFBEAgByEADAELIAchAANAIAIgAEECdCIGaiADNgIAIABBAWshACABIAZqKAIAIANsIQMgBEEBaiIEIAVHDQALCyAHQQNJDQEDQCACIABBAnQiBGogAzYCACACIARBBGsiBmogASAEaigCACADbCIDNgIAIAIgBEEIayIFaiABIAZqKAIAIANsIgM2AgAgAiAEQQxrIgRqIAEgBWooAgAgA2wiAzYCACABIARqKAIAIANsIQMgAEEDSiEEIABBBGshACAEDQALDAELIABBAEwNACAAQQNxIQgCQCAAQQRJBEBBACEADAELIABBfHEhCUEAIQADQCACIABBAnQiBGogAzYCACACIARBBHIiB2ogASAEaigCACADbCIDNgIAIAIgBEEIciIKaiABIAdqKAIAIANsIgM2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DmpBABCMFCICIAEQjhUhAUF/IQMgAiACKAIAQQFrIgU2AgAgBUUEQCACENUQCwJAIAFFDQACQCAAKAIEQQAgBEEAEOIMBEAgASABKAIAQQFrIgA2AgAgAEUNAQwCCyAAKAIAIAEQ3gwhAyABIAEoAgBBAWsiADYCACAADQELIAEQ1RALIAMLfgEDfyAAEKoGIQICQCAAKAIEIgFFDQAgAEEANgIEIAEgASgCAEEBayIDNgIAIAMNACABENUQCyAAKAIAIQECQCACBEBBACECIAFFDQEgAEEANgIAIAEgASgCAEEBayIANgIAIAANASABENUQQQAPCyAAQQA2AgAgASECCyACC+QBAQN/AkACQAJAIAAoAgBFBEAgACgCBCEBIABBADYCBAwBCyAAEKoGIQICQCAAKAIEIgFFDQAgAEEANgIEIAEgASgCAEEBayIDNgIAIAMNACABENUQCyAAKAIAIQEgAgRAQQAhAiABRQ0DIABBADYCACABIAEoAgBBAWsiADYCACAARQ0CDAMLQQAhAiAAQQA2AgAgAUUNAgsjAEHp4g5qQQAQjBQiACABEI4VIQIgACAAKAIAQQFrIgM2AgAgA0UEQCAAENUQCyABIAEoAgBBAWsiADYCACAADQELIAEQ1RALIAILXAECfwJAIAAoAgQiAUUNACAAQQA2AgQgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCACIBRQ0AIABBADYCACABIAEoAgBBAWsiADYCACAADQAgARDVEAsLGgAjuwEjvAEgABsiACAAKAIAQQFqNgIAIAALFgAjACIAQc+dCWogAEHO8AZqEKkdAAs5AQJ/I7ABIgFBvNoAQdTZACO7ASAARiIAG2oiAiACKAIAQQFqNgIAIAFBvNoAaiABQdTZAGogABsLgwEAIwFBEGsiACQBIAAjvAE2AgwCQAJAIAJFDQAjAEGssgVqIAIQjxsNAEEAIQIMAQsgACAAQQxqNgIAQQAhAiABIwBBrLIFakEAQQEgABCNG0UNACAAKAIMELEQIgFBAEgNACO7ASO8ASABGyICIAIoAgBBAWo2AgALIABBEGokASACC4IBAAJAIANFDQAjAEGssgVqIAMQkRsNAEEADwsCQAJ/AkACQCACQf////8HcSICQQJPBEBBACEDIwBBrLIFaiACQQBBARCMGw0B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aiACIAEgBGotAABqLQAAOgAAIAAgA0EDciIEaiACIAEgBGotAABqLQAAOgAAIANBBGohAyAHQQRqIgcgCEcNAAsLIAVFDQADQCAAIANqI6ACIAEgA2otAABqLQAAOgAAIANBAWohAyAGQQFqIgYgBUcNAAsLC4EBAQR/IAJBAEoEQANAAn8CQAJAI88BIAEtAAAiBUECdGooAgAiA0EBcQRAI6ACIQMgBEUNAQwCC0EAIANBAnFFDQIaI+EBIQMgBEUNAQsgAyAFai0AACEFC0EBCyEEIAFBAWohASAAIAU6AAAgAEEBaiEAIAZBAWoiBiACRw0ACwsLigIBBn8CQCACQQBMDQAgACOgAiABLQAAai0AADoAACACQQFrIgNFDQAgAUEBaiEEIABBAWohACADQQNxIQZBACEBIAJBAmtBA08EQCADQXxxIQhBACEDA0AgACABaiPhASICIAEgBGotAABqLQAAOgAAIAAgAUEBciIFaiACIAQgBWotAABqLQAAOgAAIAAgAUECciIFaiACIAQgBWotAABqLQAAOgAAIAAgAUEDciIFaiACIAQgBWotAABqLQAAOgAAIAFBBGohASADQQRqIgMgCEcNAAsLIAZFDQADQCAAIAFqI+EBIAEgBGotAABqLQAAOgAAIAFBAWohASAHQQFqIgcgBkcNAAsLC4YCAQV/AkAgAkEATA0AIAJBAXEhBiACQQFHBEAgAkF+cSEHA0AjoAIhBAJAI88BIAEtAAAiAkECdGooAgAiA0EBcUUEQCPhASEEIANBAnFFDQELIAIgBGotAAAhAgsgACACOgAAI6ACIQQCQCPPASABLQABIgJBAnRqKAIAIgNBAXFFBEAj4QEhBCADQQJxRQ0BCyACIARqLQAAIQILIAFBAmohASAAIAI6AAEgAEECaiEAIAVBAmoiBSAHRw0ACwsgBkUNACOgAiEDAkAjzwEgAS0AACICQQJ0aigCACIBQQFxRQRAI+EBIQMgAUECcUUNAQsgAiADai0AACECCyAAIAI6AAALCyYBAX8gACABIwBB8rcIaiACQQEQxAYiAkF+RwR/IAIQrg0FIAMLC6gFAQV/IwFBQGoiBSQBIAVBADYCDCAFQf////8HNgIIAkACfwJAAkACQCACIAMgBUEQaiAFQQxqIAVBCGoQxQZFDQAgBSgCECICEMIFDQEC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tBoMAQsCQCAARQ0AIAFBAUcNACOwASAALQAAQRhsakGoJGoiASABKAIAQQFqNgIAIAEPCyABRQRAI7ABQZQkaiIBIAEoAgBBAWo2AgAgAQ8LIAFB7////wdPBEAjwAEoAgAjAEHg3AdqELQaDAELIAFBEWoQgREiAgRAIAIjtgEiAzYCBCACIAE2AgggAy0AVUECcQRAI7YBIgMgAygCAEEBajYCAAsgAhCkECACQX82AgwgASACakEAOgAQDAILEM4aIgINAQtBACECDAELIABFDQAgAkEQaiAAIAEQzj4aIAIPCyACC8sBAQN/IAAQ/UQiAkHv////B08EQCPAASgCACMAQbz4BWoQtBpBAA8LAkACQAJAIAIOAgABAgsjsAFBlCRqIgAgACgCAEEBajYCACAADwsjsAEgAC0AAEEYbGpBqCRqIgAgACgCAEEBajYCACAADwsgAkERahCBESIBRQRAEM4aDwsgASO2ASIDNgIEIAEgAjYCCCADLQBVQQJxBEAjtgEiAyADKAIAQQFqNgIACyABEKQQIAFBfzYCDCABQRBqIAAgAkEBahDOPhogAQuhEQEJfyMBQYAFayIDJAEgA0EANgJYIANCADcDUCADQgA3A0ggABD9RCECIANBgAQ2AkwgA0EBNgJcIANB4ABqIQYCQAJAIAJFDQAgAkEASARAEM4aGkEAIQIMAgsgAkGABE0EQCADIAI2AlAMAQsgA0HIAGogBiACELAHIQYgAyACNgJQIAYNAEEAIQIMAQsgA0EBNgJYIANB4ARqQQJyIQoDQAJAAkACQAJAIAAiBS0AACICQSVHBEAgAg0BIANByABqIAYQsQchAgwGCwNAI88BIAUiBEEBaiIFLQAAIgJBAnRqLQAAQQRxDQALQQAhBwJAIAJBLkcNACPPASAEQQJqIgUtAAAiAkECdGotAABBBHFFDQADQCACwCAHQQpsakEwayEHI88BIAVBAWoiBS0AACICQQJ0ai0AAEEEcQ0ACwsCQANAQQEhBCACQf8BcSICRQRAQQEhCQwCCyACQSVGBEBBASEJDAILI88BIAJBAnRqLQAAQQNxRQRAIAVBAWoiBS0AACECDAELC0EBIQkCQAJAIAJB7ABrDg8AAgICAgICAgICAgICAgECCwJAIAVBAWoiAi0AAEHkAGsOEgACAgICAgICAgICAgIC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BEAgACgCACEDIAAoAgwEQCPIASEEIAMoAggEQCADKAIUIQQLIAMgAhDZBg0CIAEgBGshAQwDCyAAIAIQtQcNASABIANrQRBrIQEMAgsgAAJ/IAAoAgwEQEEAIAIQ1gYMAQtBACACEK0HCyIDNgIAIANFBEBBAA8LIAEgAEEYaiIEayIBBEACfyAAKAIMBEAjyAEgAygCCEUNARogAygCFAwBCyADQRBqCyAEIAEQzj4aCyAAIAI2AgQgAEEANgIUDAILIAAoAgAiAkUEQEEADwsgAEEANgIAIAIgAigCAEEBayIANgIAIABFBEAgAhDVEAtBAA8LIAAgAjYCBCAAKAIURQ0AIABBGGogAWoPCyAAKAIAIQICfyAAKAIMBEAjyAEgAigCCEUNARogAigCFCABag8LIAJBEGoLIAFqC8kCAQN/IwFBEGsiAyQBAkACQAJ/IABBGGogACgCFCIEDQAaIAAoAgAhAiAAKAIMBEAjyAEgAigCCEUNARogAigCFAwBCyACQRBqCyICIAFHDQAgACgCDA0AAkAgACgCACICRQ0AIABBADYCACACIAIoAgBBAWsiADYCACAADQAgAhDVEAsjsAFBlCRqIgAgACgCAEEBajYCAAwBCyABIAJrIQIgBARAIABBGGohASAAKAIMBEAgASACENYGIQAMAgsgASACEK0HIQAMAQsgAyAAKAIAIgE2AgwgAEEANgIAIAAoAgQgAkYEQCABIQAMAQsgACgCDARAIAEgAhDZBkUEQCABIQAMAgsgASABKAIAQQFrIgI2AgBBACEAIAINASABENUQDAELIANBDGogAhC1ByEAQQAgAygCDCAAGyEACyADQRBqJAEgAAsXACAAQgA3AgAgAEIANwIQIABCADcCCAuQAQECfyAAQYAENgIEIABBATYCFCAAQRhqIQICQCABRQ0AIAAoAggiAyABQf////8Hc0oEQBDOGhogACgCACIBRQRAQQAPC0EAIQIgAEEANgIAIAEgASgCAEEBayIANgIAIAANASABENUQQQAPCyABIANqIgFBgQROBEAgACACIAEQsAchAgsgACABNgIICyACC44BAQF/An8gAwRAIAAoAggiBCADQf////8Hc0oEQBDOGhogACgCACIBRQRAQQAPCyAAQQA2AgAgASABKAIAQQFrIgA2AgBBACAADQIaIAEQ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AgsgAEEQaiAFEK0HIQMMAQsgAkUEQCABRQRAI7YBIAAoAgRGBEAgACAAKAIAQQFqNgIAIAAhAwwDCyAAQRBqIAUQrQchAwwCCyABIAVB/////wdzIAVBAWogBCAEIAVKGyIEbUoEQCPAASgCACMAQYv4BWoQtBoMAgtBACABIARsIAVqEK0HIgZFDQEgBkEQaiECIABBEGohAwJAIAFBAk4EQCACIAkgARDOPiABaiECIARBAkgNASAEQQFrIgpBAXEhByAEQQJHBEAgCkF+cSEEQQAhAANAIAIgAy0AADoAACACQQFqIAkgARDOPiABaiICIAMtAAE6AAAgA0ECaiEDIAJBAWogCSABEM4+IAFqIQIgAEECaiIAIARHDQALCyAHRQ0BIAIgAy0AADoAACADQQFqIQMgAkEBaiAJIAEQzj4gAWohAgwBCyACIAktAAA6AAAgASACaiECIARBAkgNACAEQQFrIgpBA3EhByAEQQJrQQNPBEAgCkF8cSEEQQAhAANAIAIgAy0AADoAACACQQFqIgIgCS0AADoAACABIAJqIgIgAy0AAToAACACQQFqIgIgCS0AADoAACABIAJqIgIgAy0AAjoAACACQQFqIgIgCS0AADoAACABIAJqIgIgAy0AAzoAACACQQFqIgIgCS0AADoAACADQQRqIQMgASACaiECIABBBGoiACAERw0ACwsgB0UNAEEAIQADQCACIAMtAAA6AAAgAkEBaiICIAktAAA6AAAgA0EBaiEDIAEgAmohAiAAQQFqIgAgB0cNAAsLIAIgAyAFIAprEM4+GiAGIQMMAQsgAUUEQCACQQFGBEAgAEEQaiIBIAcsAAAiCSAFEJVCIgMEQCABIAVqIQAgBEEBayEHQQAhAgJAA0AgAiAHRwRAIAJBAWohAiADQQFqIgMgCSAAIANrEJVCIgMNAQwCCwsgBCECC0EAIQNBACAFIAJrEK0HIgdFDQMgB0EQaiEEAkADQCABIAkgACABayIFEJVCIgNFDQEgBCABIAMgAWsiBRDOPiEEIANBAWohASAEIAVqIQQgAkEBSiEDIAJBAWshAiADDQALIAAgAWshBQsgBCABIAUQzj4aIAchAwwDCyO2ASAAKAIERgRAIAAgACgCAEEBajYCACAAIQMMAwsgASAFEK0HIQMMAgsgAEEQaiEBAkAgBUEATgRA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qtgDahC0GkF/DwsCQAJAIABFDQAjugIgACgCBEcNACAAKAIIDQELI7cBKAIAIwBB7aIBahC0GkF/DwsgACABNgIIQQALOwACQAJAIABFDQAjugIgACgCBEcNACAAKAIIDQELI7cBKAIAIwBB4aMBahC0GkF/DwsgACABNgIMQQALOwACQAJAIABFDQAjugIgACgCBEcNACAAKAIIDQELI7cBKAIAIwBB86EBahC0GkF/DwsgACABNgIUQQALOwACQAJAIABFDQAjugIgACgCBEcNACAAKAIIDQELI7cBKAIAIwBB/6ABahC0GkF/DwsgACABNgIQQQAL+wIBBX8jAUEwayIEJAECQCAAEP1EQQFqIgIQ+hAiAUUEQBDOGiEBDAELIAEgACACEM4+IgUhA0EAIQICQAJAA0AgAyIBRQ0BIAFBLhDtRCIDBH8gA0EAOgAAIANBAWoFQQALIQMCQCACRQRAIAEQxxsiAg0BIAQgATYCICP2ASgCACMAQY+cDmogBEEgahCuGhpBACEBDAQLIAIgARC0ECEBIAIgAigCAEEBayIGNgIAIAZFBEAgAhDVEAsgASECCyACDQALQQAhAQwBCwJAAkACQCACBEAjugIgAigCBEcNAiACKAIIIgFFDQIgAigCDCEDIABFDQEgA0UNASADIAAQ70QNAgwDCyAEIAA2AgAjyQEoAgAjAEGGwghqIAQQrhoaQQAhAQwDCyAAIANGDQELIAQgADYCECPJASgCACMAQYbCCGogBEEQahCuGhpBACEBCyACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgBRD9EAsgBEEwaiQBIAELGgEBfyAAKAIUIgEEQCAAIAERAwALIAAQhBELZAEDfyMBQRBrIgEkASAAKAIMIQIgASAANgIMIAEjACIAQficDmogAEHp4g5qIAIbIgM2AgggASACIABB0MUKaiACGzYCBCABIAM2AgAgAEG3kgtqIAEQpBQhAiABQRBqJAEgAgtsAQR/I58CEMIgIgEEQCABIAA2AgggAARAIAAgACgCAEEBajYCAAsjsAEoAugCKAIIKAKsAyICKAIEIgMgAUEIayIANgIAIAAgAjYCACAAQQRqIgQgAyAEKAIAQQNxcjYCACACIAA2AgQLIAELOgAjnwIgACgCBEcEQCMAQfimCWpBOBDVGkEADwsgACgC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AWs2AgALIAAoAggiA0EASgRAIABB9ABqIQQgAEH2AGohBUEAIQEDQCAEIAFBAXQiBmoiAiACLwEAIgJBgP4DcSOeAiACQf8BcWotAAAiAnI7AQAgAiPvAmotAAAiAgR/IAUgBmpBACACQQF0ENA+GiABIAJqBSABC0EBaiIBIANIDQALCyAAQfj/AzsBHCAAKAJwEP0QAkAgACgCZCIBRQ0AIABBADYCZCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgAEEANgJwIAAoAmAEQCAAEMUWIABBADYCYAsgACgCaCIBBEAgARD9ECAAQQA2AmgLC8MBAQR/AkACQCAAKAIQIgIoAghBAWsiAUEATgRAA0AgAiABQQJ0akEMaiIDKAIAIgRFDQIjsQEgBCgCBEcNAiADEJEUIAFBAWsiAUEATg0ACwsgACgCDEEAENYIQQBIDQEgACgCSCICKAIIQQFrIgFBAEgEQEEADwsDQCACIAFBAnRqQQxqIgMoAgAiBEUNASOxASAEKAIERw0BIAMQkRQgAUEBayIBQQBODQALQQAPCyPBASgCACMAQeHYAGoQtBoLQX8LPgAgACgCBCIBKAIQIAEoAhQgACgCCGxqQQNqQXxxIQEgACgCcCIABH8gASAAKAIAQQJ0akEEagUgAQsQrg0LbgECfyMAQezipwFqQQAQtxIiAQRAIAAgACgCAEEBajYCACABIAA2AgggACgCXCICKAIIIQMgACgCMCEAIAEgAkEQaiICNgIcIAEgADYCGCABQv////8PNwIMIAFBfzYCFCABIAIgA2o2AiALIAELdQECfyMAQbjkpwFqQQAQtxIiAQRAIAAgACgCAEEBajYCACABIAA2AgggACgCXCICKAIIIQMgACgCMCEAIAEgAkEQaiICNgIcIAEgADYCGCABQv////8PNwIMIAFBADYCJCABQX82AhQgASACIANqNgIgCyABC9QQARh/IwFBgAFrIgckASADBH8gAygCCAVBAAshCiAAKAIUIRkgACgCXCEaIAAoAlghESAAKAJUIRAgACgCUCEOIAAoAhAhCyAAKAIMIQggACgCMCEbIAAoAhghEiAAKAIsIRMgACgCOCEUIAAoAighFSAAKAIkIRYgACgCICEXAkACQAJAIAFFDQAgAg0AIANFDQELIAEgAkEAIAMjAEHc5qcBakEA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OQMICzgBBHwgACABKwMAIgMgAisDCCIEoiACKwMAIgUgASsDCCIGoqA5AwggACADIAWiIAQgBqKhOQMAC/gBAQV8IAIrAwAiA5ogAyADRAAAAAAAAAAAYxsiBCACKwMIIgWaIAUgBUQAAAAAAAAAAGMbIgZmBEAgBEQAAAAAAAAAAGEEQBD6O0ESNgIAIABCADcDCCAAQgA3AwAPCyAAIAErAwgiBiABKwMAIgcgBSADoyIEoqEgBSAEoiADoCIDozkDCCAAIAcgBiAEoqAgA6M5AwAPCyAEIAZlBEAgACABKwMIIgYgAyAFoyIEoiABKwMAIgehIAMgBKIgBaAiA6M5AwggACAGIAcgBKKgIAOjOQMADwsgAEKAgICAgICA/P8ANwMAIABCgICAgICAgPz/ADcDCAuJAgEFfCACKwMIIQUCQCACKwMAIgNEAAAAAAAAAABiDQAgBUQAAAAAAAAAAGINACAAQgA3AwggAEKAgICAgICA+D83AwAPCyABKwMIIQQCQCABKwMAIgZEAAAAAAAAAABiDQAgBEQAAAAAAAAAAGINACADRAAAAAAAAAAAY0UgBUQAAAAAAAAAAGFxRQRAEPo7QRI2AgALIABCADcDACAAQgA3AwgPCyAGIAQQ00AhByADIAQgBhDSPCIGoiEEIAcgAxCEQyEDIAVEAAAAAAAAAABiBEAgBSAHEOtBoiAEoCEEIAMgBSAGohD+PqMhAwsgACADIAQQwkSiOQMIIAAgAyAEELI9ojkDAAv1AQICfAF+AkACQCAAKwMAIgG9IgNCgICAgICAgPj/AINCgICAgICAgPj/AFIEQCAAKwMIIgK9QoCAgICAgID4/wCDQoCAgICAgID4/wBSDQELIANC////////////AINCgICAgICAgPj/AFEEQBD6O0EANgIAIAGZDwtEAAAAAAAA+H8hASAAKwMIIgK9Qv///////////wCDQoCAgICAgID4/wBSDQEQ+jtBADYCACACmQ8LIAEgAhDTQCEBEPo7IQAgAb1CgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQcQANgIAIAEPCyAAQQA2AgALIAELUwECf0EYEIERIgFFBEAQzhoPCyABI9IBIgI2AgQgAi0AVUECcQRAI9IBIgIgAigCAEEBajYCAAsgARCkECABIAApAwg3AxAgASAA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GkEAIQEMAQsgASgCECICBEAgAiACKAIAQQFqNgIACyAAKAIYIQEgACACNgIYAkAgAUUNACABIAEoAgBBAWsiADYCACAADQAgARDVEAsjsgEiASABKAIAQQFqNgIACyADQRBqJAEgAQt2AQJ/IAAoAggQuhAhAiO7ASEBAkACQAJAIAJBAWoOAgIAAQsgACgCDBC6ECECI7sBIQECQCACQQFqDgICAAELIAAoAhAQuhAhACO7ASEBAkAgAEEBag4CAgABCyO8ASEBCyABIAEoAgBBAWo2AgAgASEDCyADC4YBAQJ/IAAQvyACQCAAKAIMIgFFDQAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCECIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhQiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgACAAKAIEKAKgAREDAAtSAQF/AkAgACgCDCIDBEAgAyACIAERAAAiAw0BCyAAKAIQIgMEQCADIAIgAREAACIDDQELIAAoAhQiAARAIAAgAiABEQAAIgMNAQtBACEDCyADC/oFAQV/IAAoAhAhAgJAIAAoAgwiASABKAIEKAJwEQEAIgFFDQAgACgCCCIDQf////8HRgRAIAAoAhAhAwJAIAAoAhQiAg0AIABB/////wcQrg0iAjYCFCACDQAgASABKAIAQQFrIgA2AgAgAA0CIAEQ1RBBAA8LIAIgACgCGBDbBSIFRQRAIAEgASgCAEEBayIANgIAIAANAiABENUQQQAPCyAAIAU2AhQgAygCAEEBRgRAIANBAjYCACADQQxqIgQoAgAhACAEIAI2AgAgA0EQaiIEKAIAIQIgBCABNgIAIAAgACgCAEEBayIBNgIAIAFFBEAgABDVEAsgAiACKAIAQQFrIgA2AgAgAEUEQCACENUQCyADQQhrIgAoAgAEQCADDwsjsAEoAugCKAIIKAKsAyIBKAIEIgIgADYCACADQQRrIgQgAiAEKAIAQQNxcjYCACAAIAE2AgAgASAANgIEIAMPC0ECEJMSIgBFBEAgAiACKAIAQQFrIgA2AgAgAEUEQCACENUQCyABIAEoAgBBAWsiADYCACAADQIgARDVEEEADwsgACABNgIQIAAgAjYCDCAADwsgAxCuDSIDRQRAIAEgASgCAEEB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QQEgACgCMCIAIABBAUwbIgAgAigCCCIBIAAgAUgbNgIAIAIgAigCAEEBayIBNgIAQQAhACABDQAgAhDVEAsgA0EgaiQBIAALCwAgACABNgIwQQALkQEBAX8jAUEgayIBJAECQCAAKAI0IgBFBEAgASMAIgBB5sMEajYCACO1ASgCACAAQcGKAWogARCuGhpBACEADAELIAAoAgQtAFdBEHFFBEAgASMAIgBB5sMEajYCECO1ASgCACAAQfyFCGogAUEQahCuGhpBACEADAELIAAgACgCAEEBajYCAAsgAUEgaiQBIAALQgEBfyABEI8UIgJFBEBBfw8LIAAoAjQhASAAIAI2AjQCQCABRQ0AIAEgASgCAEEBayIANgIAIAANACABENUQC0EAC1QBAX8jAUEgayIGJAEgBiAENgIQIAYgBTYCFCAGIAA2AgAgBiABNgIEIAYgAjYCCCAGIAM2AgwjxwIoAgAjAEGLiAJqIAYQmwghBCAGQSBqJAEgBAtGAQF/IwFBEGsiBCQBIAQgADYCACAEIAE2AgQgBCACNgIIIAQgAzYCDCPmAygCACMAQYaIAmogBBCbCCEAIARBEGokASAAC6wDAQJ/An8gACPdASgCAEcEQEEAIABBACAAKAKYAREAACIARQ0BGiAAQgA3AhAgAEEANgIIIABCADcCGCAAQQA6ACAgAQRAIAAgATYCDCABIAEoAgBBAWo2AgAgAA8LIABBABCTEiIBNgIMIAEEQCAADwsgACAAKAIAQQFrIgE2AgBBACABDQEaIAAQ1RBBAA8LI7ABKALoAigCCCIEQZQdaigCACIDRQRAQQAgAEEAIAAoApgBEQAAIgBFDQEaIABCADcCECAAQQA2AgggAEIANwIYIABBADoAICABBEAgACABNgIMIAEgASgCAEEBajYCACAADwsgAEEAEJMSIgE2AgwgAQRAIAAPCyAAIAAoAgBBAWsiATYCAEEAIAENARogABDVEEEADwsgA0EAEJMSIgA2AgxBACAARQ0AGiAEIAMoAgg2ApQdIARBmB1qIgAgACgCAEEBazYCACADQQA2AgggAxCkECOwASgC6AIoAggoAqwDIgEoAgQiAiADQQhrIgA2AgAgACABNgIAIABBBGoiBCACIAQoAgBBA3FyNgIAIAEgADYCBCADCwvrBAEFfyMBQTBrIgIkASAC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An8gACgCLCIDBEAgACgCKCICI7IBIgUgAhshBCAAKAIkIgIgBSACGyECIAAoAjAiAARAIAEgADYCLCABIAM2AiggASAENgIkIAEgAjYCICMAQfmoCmogAUEgahCkFAwCCyABIAM2AhggASAENgIUIAEgAjYCECMAQc6tCmogAUEQahCkFAwBCwJAIAAoAiQiA0UNACAAKAIoIgJFDQAgASACNgIEIAEgAzYCACMAQbSVCmogARCkFAwBCwJAAkACQCAAKAIMIgAoAggOAgABAgsjAEHp4g5qEI8UDAILIAAoAgwQphAMAQsgABCmEAshACABQTBqJAEgAAvzAQEBfwJAIAAoAiQiAwRAIAMgAiABEQAAIgMNAQsgACgCKCIDBEAgAyACIAERAAAiAw0BCyAAKAIsIgMEQCADIAIgAREAACIDDQELIAAoAjAiAwRAIAMgAiABEQAAIgMNAQsgACgCCCIDBEAgAyACIAERAAAiAw0BCyAAKAIMIgMEQCADIAIgAREAACIDDQELIAAoAhAiAwRAIAMgAiABEQAAIgMNAQsgACgCFCIDBEAgAyACIAERAAAiAw0BCyAAKAIcIgMEQCADIAIgAREAACIDDQELIAAoAhgiAARAIAAgAiABEQAAIgMNAQtBACEDCyADC8ECAQV/IwFBMGsiAyQBIAMgATYCKCADQQA2AiQgA0EANgIgIANBADYCHCADQQA2AhgCQCAAKAIEIgQoApQBIwJBvgNqRg0AIAQoApwBIwJBvwNqRw0AAkAgAkUNACAEKAIMIAIQjxsNAEF/IQUMAQsgASABKAIAQQFqNgIAIANBADYCLEEAIQRBACECAkAgASgCCEECa0EDTQRAIAMgA0EYajYCECADIANBLGo2AgwgAyADQRxqNgIIIAMgA0EgajYCBCADIANBJGo2AgAgASMAQbLMA2pBAkEFIAMQjRtFDQEgAygCGCEGIAMoAhwhBCADKAIkIQcgAygCICECCyAAIANBKGogByACIAQgBhDCCkUNASADKAIoIQELQX8hBSABIAEoAgBBAWsiADYCACAADQAgARDVEAsgA0EwaiQBIAUL9QQBAn8jAUEwayIDJAEgAyABNgIoIANBADYCJCADQQA2AiAgA0EANgIcIANBADYCGCABIAEoAgBBAWo2AgACQAJAAkACQAJAAkACQCAAKAKU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QdShAWogAEGsygJqIAJBEGoQnQghACABIAEoAgBBAWsiAzYCACADDQAgARDVEAsgAkEgaiQBIAALNQECfyAAEI8UIgBFBEBBAA8LIAAQtwshASAAIAAoAgBBAWsiAjYCACACRQRAIAAQ1RALIAELFAAjsgEiACAAKAIAQQFqNgIAIAALCgAgACgCCBCbDQs5ACAAKAIIQQBIBEAjvAEiACAAKAIAQQFqNgIAIAAPCxDZGCEBIAAoAggQgEEhACABENoYIAAQrgYLiQIBBH8jAUEQayICJAECQCAAKAIIQQBIBEAjsgEiAyADKAIAQQFqNgIADAELIAIgAkEMajYCACABIwBBvP0JaiACEPEaRQ0AAkAgAigCDCACQQhqENgUIgQEQEEAIQEgAigCCCEFDAELEL0aIAIoAgwjAEHUmwhqEMcUIgFFDQEgAiABKAIIIgU2AgggAUEQaiEECyACIAAoAgggBCAFEJsgIgA2AggQ+jsoAgAhBCABBEAgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCyACKAIIIQALIABBf0YEQCAEQQZHDQEQvRojsgEiAyADKAIAQQFqNgIADAELIAAQrg0hAwsgAkEQaiQBIAMLFAAjvAEiACAAKAIAQQFqNgIAIAALCwAjAEGWMGoQjxQLCwBE////////738LCwBEAAAAAAAAEAALrQQBA38CQCMAQYDr7AFqEIQSIgJFDQACQAJAI7ABKALoAigCCCIBQYwPaigCACIABEAgASAAKAIENgKMDyABIAEoAogPQQFrNgKIDwwBC0EQEIERIgANABDOGiEADAELIAAjwgEiATYCBCABLQBVQQJxBEAjwgEiASABKAIAQQFqNgIACyAAEKQQIABC//////////f/ADcDCAsgAiAANgIMIAJBgAgQmw02AhAgAkG0AhCbDTYCFAJAAkAjsAEoAugCKAIIIgFBjA9qKAIAIgAEQCABIAAoAgQ2AowPIAEgASgCiA9BAWs2AogPDAELQRAQgREiAA0AEM4aIQAMAQsgACPCASIBNgIEIAEtAFVBAnEEQCPCASIBIAEoAgBBAWo2AgALIAAQpBAgAEKAgICAgICACDcDCAsgAiAANgIYIAJBg3gQmw02AhwgAkHNfRCbDTYCICACQQ8Qmw02AiQgAkE1EJsNNgIoAkACQCOwASgC6AIo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IAANACABENUQC0EADwsjwQEoAgAjAEGylwJqELQaQX8LIwAj7AEgACgCBEcEQCMAQeuoCWpB+gEQ1RpBAA8LIAAoAiQLugEBA38jAUEQayIDJAECQCPsASAAKAIERwRAIwBB66gJakGEAhDVGkF/IQQMAQsCQCOyASABRwRAIAEoAgQiAi0AV0EEcUUNASABIAEoAgBBAWo2AgAgASECCyAAQQA2AkAgACgCJCEBIAAgAjYCJCABRQ0BIAEgASgCAEEBayIANgIAIAANASABENUQDAELIAMgAigCDDYCACPBASgCACMAQf/2DWogAxCuGhpBfyEECyADQRBqJAEgBAsjACPsASAAKAIERwRAIwBB66gJakG5AhDVGkEADwsgABCfDAupAQEFfwJAIAAoAjgiAUUNACO0ASABKAIERwRAIAEPCxD/DSIERQ0AAkAgASgCCEEATA0AIAFBDGohAwNAIAQgAyACQQJ0IgVqKAIAIAMgBUEEcmooAgAQjQ5BAE4EQCACQQJqIgIgASgCCEgNAQwCCwtBAA8LIAAoAjghASAAIAQ2AjggASABKAIAQQFrIgM2AgAgBCECIAMNACABENUQIAAoAjghAgsgAguaAQEBfyPsASAAKAIERwRAIwBB66gJakHDAhDVGkF/DwsCQCOyASABRwRAIAFFDQEgASgCBC0AV0EgcUUNASABIAEoAgBBAWo2AgAgASECCyAAQQA2AkAgACgCOCEBIAAgAjYCOAJAIAFFDQAgASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALQQAPCyPBASgCACMAQbKGAmoQtBpBfwu7AQEEfyAAQQhrIgFBBGoiAigCAEF8cSIEIAEoAgAiAzYCACADIAMoAgRBA3EgBHI2AgQgAUEANgIAIAIgAigCAEEBcTYCACAAKAIwBEAgABDFFgsgABCiDBogACgCGCIBIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIAAoAhAiASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAKAIUIgEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgABDFIAuTBAECfyAAQQA2AkACQCAAKAIIIgFFDQAgAEEANgIIIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAgwiAUUNACAAQQA2AgwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCNCIBRQ0AIABBADYCNCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIcIgFFDQAgAEEANgIcIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAiAiAUUNACAAQQA2AiAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCKCIBRQ0AIABBADYCKCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIsIgFFDQAgAEEANgIsIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAiQiAUUNACAAQQA2AiQgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCOCIBRQ0AIABBADYCOCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgACgCECEBI7ABQZTYAGoiAiACKAIAQQFqNgIAIAAgAjYCECABIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIAAoAhQhASOwAUGU2ABqIgIgAigCAEEBajYCACAAIAI2AhQgASABKAIAQQFrIgA2AgAgAEUEQCABENUQC0EACzkBAn8jAUEQayIBJAEgACgCFCECIAEgADYCBCABIAI2AgAjAEGgkwtqIAEQpBQhACABQRBqJAEgAAuhAgEBfwJAIAAoAhgiAwRAIAMgAiABEQAAIgMNAQsgACgCCCIDBEAgAyACIAERAAAiAw0BCyAAKAIMIgMEQCADIAIgAREAACIDDQELIAAoAjQiAwRAIAMgAiABEQAAIgMNAQsgACgCHCIDBEAgAyACIAERAAAiAw0BCyAAKAIgIgMEQCADIAIgAREAACIDDQELIAAoAigiAwRAIAMgAiABEQAAIgMNAQsgACgCECIDBEAgAyACIAERAAAiAw0BCyAAKAIsIgMEQCADIAIgAREAACIDDQELIAAoAiQiAwRAIAMgAiABEQAAIgMNAQsgACgCOCIDBEAgAyACIAERAAAiAw0BCyAAKAIUIgAEQCAAIAIgAREAACIDDQELQQAhAwsgAwsoACOyASABR0EAIAEbRQRAIAAgACgCAEEBajYCACAADwsgACABEMAIC7QHAQp/IwFB0ABrIgQkASABKAIIIQACfwJAAkAgAgRAIAFBDGohASACKAIIIABqIgdBAmshCAwBCyABQQxqIQEgACEH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NgIACyACQRBqJAEgAQuRAgEBfyMBQSBrIgMkAQJAAkACQCABQQAgASOyAUcbIgEEQCABKAIELQBXQQRxRQRAI7UBKAIAIwBB8KQBahC0GkF/IQEMBAsgAyABNgIYIAMgADYCECADIwAiAkGWyglqNgIUIAJBmc4JaiACQcu0CmogA0EQahDqHkEATg0BQX8hAQwDCyADIAA2AgAgAyMAIgJBlsoJajYCBCACQb/OCWogAkGsygJqIAMQ6h5BAEgEQEF/IQEMAwsgAEEANgJADAELIABBADYCQCABIAEoAgBBAWo2AgALIAAoAhwhAiAAIAE2AhxBACEBIAJFDQAgAiACKAIAQQFrIgA2AgAgAA0AIAIQ1RALIANBIGokASABC2IBAn8jAUEQayICJAEgAiAANgIAIAIjACIDQYfKCWo2AgRBACEBIANBrM4JaiADQazKAmogAhDqHkEATgRAIAAoAiAiASOyASABGyIBIAEoAgBBAWo2AgALIAJBEGokASABC5ECAQF/IwFBIGsiAyQBAkACQAJAIAFBACABI7IBRxsiAQRAIAEoAgQtAFdBIHFFBEAjtQEoAgAjAEGlmAFqELQaQX8hAQwECyADIAE2AhggAyAANgIQIAMjACICQYfKCWo2AhQgAkGZzglqIAJBy7QKaiADQRBqEOoeQQBODQFBfyEBDAMLIAMgADYCACADIwAiAkGHyglqNgIEIAJBv84JaiACQazKAmogAxDqHkEASARAQX8hAQwDCyAAQQA2AkAMAQsgAEEANgJAIAEgASgCAEEBajYCAAsgACgCICECIAAgATYCIEEAIQEgAkUNACACIAIoAgBBAWsiADYCACAADQAgAhDVEAsgA0EgaiQBIAELOgACQCAAKAI4DQAgABD/DSIBNgI4IAENAEEADwsgABCfDCIARQRAQQAPCyAAIAAoAgBBAWo2AgAgAAuFAQACQCABQQAgASOyAUcbIgFFBEAgAEEANgJADAELIAEoAgQtAFdBIHFFBEAjtQEoAgAjAEHRmAFqELQaQX8PCyAAQQA2AkAgASABKAIAQQFqNgIACyAAKAI4IQIgACABNgI4AkAgAkUNACACIAIoAgBBAWsiADYCACAADQAgAhDVEAtBAAtCAQF/IAAoAggQuhAhAkEAIQEjuwEhAAJAAkACQCACQQFqDgICAAELI7wB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BEAgASACKAIcaigAACICDQELIAQgAUEAQQBBABCICAwBCyAEIAEgAUEAQQBBACACEQQAQQAQhggLIgEEQCAAKAIMIAFBAhCwECICRQRAIAEPCyABIAEoAgBBAWsiBDYCACAERQRAIAEQ1RALIAJBAEwNAgJAIAAoAggiAUUNACAAQQA2AgggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIAAoAgwiAUUNAiAAQQA2AgwgASABKAIAQQFrIgA2AgAgAEUNAQwCCyPcASgCABC4GkUNARC9GgJAIAAoAggiAUUNACAAQQA2AgggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIAAoAgwiAUUNASAAQQA2AgwgASABKAIAQQFrIgA2AgAgAA0BCyABENUQCyADC1wBA38CQAJAIAAQzAwiAUUNACABIAEoAgQoAnARAQAhAiABIAEoAgBBAWsiAzYCACADRQRAIAEQ1RALIAINASOqAigCABC4GkUNACAAKAIMEPUKGgtBACECCyACC5YBAQJ/AkAgACgCCBCACyIARQ0AIAAoAgQiASgCcARAIAAPCyAAIAEoAigoAgARAQAhASAAIAAoAgBBAWsiAjYCAAJAIAFFBEAgAkUNAQwCCyACRQRAIAAQ1RALIAEQogYEQCABDwsjtQEoAgAjAEGezwdqELQaIAEgASgCAEEBayICNgIAIAEhACACDQELIAAQ1RALQQALWQACQCAAKAIMIgFFDQACQCABELcFBEAgACgCDBD9BSIBQX9HDQFBAA8LI7oBIgAgACgCAEEBajYCACAADwsgASAAKAIIayIAQQBIDQAgABCuDQ8LQQAQmw0LcgICfwF+IwFBIGsiASQBIAAoAgwhAyOwAUHkmQFqEIEZIQICfyADBEAgACkCCCEEIAEgAjYCECABIARCIIk3AhQjAEHbogVqIAFBEGoQzRwMAQsgASACNgIAIwBBpNENaiABEM0cCyEAIAFBIGokASAAC0YBAX8CQCABEKINIgJBf0YEQEEAIQEQtRoNAQsgACgCDARAIAAgAkEAIAJBAEobNgIICyOyASIBIAEoAgBBAWo2AgALIAELeQEBfyMBQSBrIgEkAQJ/AkAgACgCCEUNACAAKAIMRQ0AI7ABQeSZAWoQgRkhAiABIAApAgg3AhQgASACNgIQIwBBr8MNaiABQRBqEM0cDAELIAEjsAFB5JkBahCBGTYCACMAQaTRDWogARDNHAshACABQSBqJAEgAAt9AQN/IwFBEGsiAyQBAkACQCAAEMwMIgJFDQAgAyABNgIAIAIjACIBQba4CGogAUHiuApqIAMQnAghASACIAIoAgBBAWsiBDYCACAERQRAIAIQ1RALIAENASOqAigCABC4GkUNACAAKAIMEPUKGgtBACEBCyADQRBqJAEgAQt8AQN/IwFBEGsiAyQBAkACQCAAEMwMIgJFDQAgAyABNgIAIAIjACIBQZ0raiABQeK4CmogAxCcCCEBIAIgAigCAEEBayIENgIAIARFBEAgAhDVEAsgAQ0BI6oCKAIAELgaRQ0AIAAoAgwQ9QoaC0EAIQELIANBEGokASABC30BA38jAUEQayIDJAECQAJAIAAQzAwiAkUNACADIAE2AgAgAiMAIgFBo/AGaiABQeK4CmogAxCcCCEBIAIgAigCAEEBayIENgIAIARFBEAgAhDVEAsgAQ0BI6oCKAIAELgaRQ0AIAAoAgwQ9QoaC0EAIQELIANBEGokASABC0IBAn8gAEH0EmooAgAiAQRAIABBtBBqIQIDQCAAIAFBAWsiATYC9BIgAiABQQJ0aigCABDFICAAKAL0EiIBDQALCwshACAAIwBB364BaiOwASgC6AIoAghB9BJqKAIAQRQQhhEL+wEBBH8gAEEASARAIwBB+aUJakGgARDVGkEADwsCQCOwASgC6AIoAggiAUH0EmooAgAiAgRAIAEgAkEBayICNgL0EiABIAJBAnRqQbQQaigCACIBEKQQDAELI+IBEMIgIgENAEEADwsCQCAARQRAIAFBADYCDAwBCyABIABBBBD7ECICNgIMIAINACABIAEoAgBBAWsiADYCACAARQRAIAEQ1RALEM4aDwsgASAANgIQIAEgADYCCCOwASgC6AIoAggoAqwDIgIoAgQiAyABQQhrIgA2AgAgACACNgIAIABBBGoiBCADIAQoAgBBA3FyNgIAIAIgADYCBCABCyYAIAAoAgQtAFdBAnFFBEAjAEH5pQlqQd4BENUaQX8PCyAAKAIIC04AIAAoAgQtAFdBAnFFBEAjAEH5pQlqQfYBENUaQQAPCyABIAAoAghPBEAjzgEoAgAjsAFBsNgAahCvGkEADwsgACgCDCABQQJ0aigCAAu6AQAg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A0cEQCO7ASIAIAAoAgBBAWo2AgAgAA8LI7wBIgAgACgCAEEBajYCACAADwsgASgCCCADSgRAI7sBIgAgACgCAEEBajYCACAADwsjvAEiACAAKAIAQQFqNgIAIAAPCyABKAIIIANIBEAjuwEiACAAKAIAQQFqNgIAIAAPCyO8ASIAIAAoAgBBAWo2AgAgAA8LIAEoAgggA04EQCO7ASIAIAAoAgBBAWo2AgAgAA8LI7wBIgAgACgCAEEBajYCACAADwsgASgCCCADTARAI7sBIgAgACgCAEEBajYCACAADwsjvAEiACAAKAIAQQFqNgIAIAAPCwJAAkACQCACQQJrDgIAAQILI7wBIgAgACgCAEEBajYCACAADwsjuwEiACAAKAIAQQFqNgIAIAAPCyAAKAIMIAZBAnQiAGooAgAgASgCDCAAaigCACACEK0QCwuRAQEEfyAAKAIELQBXQQJxRQRAIwBB+aUJakGLGRDVGkEADwsj0QYQwiAiAUUEQEEADwsgAUEANgIIIAAgACgCAEEBajYCACABIAA2AgwjsAEoAugCKAIIKAKsAyICKAIEIgMgAUEIayIANgIAIAAgAjYCACAAQQRqIgQgAyAEKAIAQQNxcjYCACACIAA2AgQgAQuJAQEBfwJAAkAgACgCBCIDI+IBRwRAIAJFDQIgAygCnAEj4gEoApwBRg0BDAILIAJFDQELIwBBicgAaiACEI8bDQBBfw8LIAEoAggiAkECTwR/IwBBicgAaiACQQBBARCMG0UEQEF/DwsgASgCCAUgAgtBAEwEQCAAQQAQ+AwPCyAAIAEoAgwQ+AwLoQEBBH8gACgCDCIEBEAgAEIANwIMIAAoAgghAiAAQQA2AgggAkEBayICQQBOBEADQAJAIAQgAkECdGooAgAiA0UNACADIAMoAgBBAWsiBTYCACAFDQAgAxDVEAsgAkEBayICQQBODQALCyAEEP0QCwJAIAFFDQAgACABEOUMIgJFBEBBfw8LIAIgAigCAEEBayIDNgIAIAMNACACENUQC0EAC4oBAAJAIANFDQAjAEGJyABqIAMQkRsNAEEADwsCQCACQf////8HcSIDQQJPBEBBACECIwBBicgAaiADQQBBARCMG0UNAQtBACECIABBABC3EiIARQ0AIANFBEAgAA8LIAAgASgCABD4DEUEQCAADwsgACAAKAIAQQFrIgM2AgAgAw0AIAAQ1RALIAILbwECfyAAKAIMIgFFBEBBAA8LIAAoAggiAiABKAIISARAIAEoAgwgAkECdGooAgAhASAAIAJBAWo2AgggASABKAIAQQFqNgIAIAEPCyAAQQA2AgwgASABKAIAQQFrIgA2AgAgAEUEQCABENUQC0EACzMBAn8gABC/IAJAIAAoAgwiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgABDFIAt8AQJ/IAAoAgwiAUUEQEEADwsCQCAAKAIIIgJBAEgNACACIAEoAghODQAgASgCDCACQQJ0aigCACEBIAAgAkEBazYCCCABIAEoAgBBAWo2AgAgAQ8LIABC/////w83AgggASABKAIAQQFrIgA2AgAgAEUEQCABENUQC0EAC+cCAQV/QX8hCAJAIAIgBEECdGoiBigCACABIAAgACgCnAwRAgAiBUEASA0AAn8gBQRAQQEhBQJAIAMgBGsiB0ECSA0AA0AgBiAFQQJ0aigCACABIAAgACgCnAwRAgAiA0EASA0EIANFDQEgBSEJIAVBAXRBAXIiBSAHSA0ACwsgBCAJaiEGIAUgByAFIAdIGyAEagwBC0EBIQMCQCAEQQFqIgdBAkgNAANAIAYgAyIFQQJ0aygCACABIAAgACgCnAwRAgAiA0EASA0DIAMEQCAFIQMMAgsgBSEJIAVBAXRBAXIiAyAHSA0ACwsgBCADIAcgAyAHSBtrIQYgBCAJawshBSAGQQFqIQYDQCAFIAZMBEAgBQ8LIAUgBSAFIAZrQQF1IAZqIgggAiAIQQJ0aigCACABIAAgACgCnAwRAgAiAxsgA0EASBshBSAGIAhBAWogA0EATBshBkF/IQggA0EATg0ACwsgCAuWBQEKfyMBQRBrIgkkAQJAIAEoAgQiAi0AV0ECcUUEQCAJIAIoAgw2AgAjtQEoAgAjAEHIxQBqIAkQrhoaDAELAkAgASgCCCAAKAIIaiILRQRAI7ABKALoAigCCCIAQfQSaigCACICBEAgACACQQFrIgI2AvQSIAAgAkECdGpBtBBqKAIAIgMQpBAMAgsj4gEQwiAiAw0BQQAhAwwCCyALEOEMIgNFBEBBACEDDAILIAMoAgwhBCAAKAIIIghBAEoEQCAAKAIMIQZBACEAIAhBAUcEQCAIQX5xIQoDQCAGIABBAnQiAmooAgAiBSAFKAIAQQFqNgIAIAIgBGogBTYCACAGIAJBBHIiBWooAgAiAiACKAIAQQFqNgIAIAQgBWogAjYCACAAQQJqIQAgB0ECaiIHIApHDQALCyAIQQFxBEAgBiAAQQJ0IgJqKAIAIgAgACgCAEEBajYCACACIARqIAA2AgALIAMoAgwhBAsCQCABKAIIIgJBAEwNACAEIAhBAnRqIQQgASgCDCEGIAJBAXEhCkEAIQAgAkEBRwRAIAJBfnEhAUEAIQcDQCAGIABBAnQiAmooAgAiBSAFKAIAQQFqNgIAIAIgBGogBTYCACAGIAJBBHIiBWooAgAiAiACKAIAQQFqNgIAIAQgBWogAjYCACAAQQJqIQAgB0ECaiIHIAFHDQALCyAKRQ0AIAYgAEECdCICaigCACIAIAAoAgBBAWo2AgAgAiAEaiAANgIACyADIAs2AggMAQsgA0EANgIQIANCADcCCCOwASgC6AIoAggoAqwDIgIoAgQiBSADQQhrIgA2AgAgACACNgIAIABBBGoiBCAFIAQoAgBBA3FyNgIAIAIgADYCBAsgCUEQaiQBIAMLugMBBn8gAUEAIAFBAEobIQMgACgCCCECAkAgAUEATA0AIAJB/////wcgA25MDQAQzhoPCwJAIAIgA2wiBkUEQCOwASgC6AIoAggiAUH0EmooAgAiAgRAIAEgAkEBayICNgL0EiABIAJBAnRqQbQQaigCACIBEKQQDAILI+IBEMIgIgENAUEADwsgBhDhDCIFRQRAQQAPCyAFKAIMIgEgBkECdGohBCAAKAIMIQICQCAAKAIIIgBBAUYEQCACKAIAIgIgAigCACADajYCACABIARPDQEDQCABIAI2AgAgAUEEaiIBIARJDQALDAELIAIgAEECdGoiByACTQR/IAEFA0AgAigCACIAIAAoAgAgA2o2AgAgASAANgIAIAFBBGohASACQQRqIgIgB0kNAAsgBSgCDAshAiABIARPDQADQCABIAIoAgA2AgAgAkEEaiECIAFBBGoiASAESQ0ACwsgBSAGNgIIIAUPCyABQQA2AhAgAUIANwIII7ABKALoAigCCCgCrAMiACgCBCIEIAFBCGsiAjYCACACIAA2AgAgAkEEaiIDIAQgAygCAEEDcXI2AgAgACACNgIEIAELPgAgASAAKAIITwRAI84BKAIA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dSACcSADaiIDTQRAI84BKAIAIwBB6uAHahC0GkEADwsgACgCDCIEIANBAnRqKAIAIQEgAkEBayADRgRAAkAgACgCECIFIANIDQAgBUEBdSADSg0AIAAgAzYCCCABDwsCQCACQQJqQXxxIAIgA0EDdWpBBWpBfHEiAiACIANrQX9IG0EAIAMbIgJB/////wFLDQAgBCACQQJ0EPwQIgRFDQAgACACNgIQIAAgAzYCCCAAIAQ2AgwgAQ8LEM4aGkEADwsgASABKAIAQQFqNgIAQQAhBCAAIAMgA0EBakEAEOMMQQBOBEAgAQ8LIAEgASgCAEEBayICNgIAIAINACABENUQCyAEC6sBAQR/An8CQCAAKAIIQQBKBEADQCAAKAIMIANBAnRqKAIAIgIgAigCAEEBajYCACACIAFBAhCwECEEIAIgAigCAEEBayIFNgIAIAVFBEAgAhDVEAsgBEEASgRAQQAgACADIANBAWpBABDjDA0EGiOyASICIAIoAgBBAWo2AgAgAg8LIAQNAiADQQFqIgMgACgCCEgNAAsLI7cBKAIAIwBBnMYAahC0GgtBAAsL3gIBBn8jAUEQayIDJAEgA0EANgIMQf////8HIQQgA0H/////BzYCCAJAIAJBAWtBA08EQCMAQYAmaiACQQFBAxCMG0UNAQsgASgCACEGAkAgAkECSA0AIAEoAgQgA0EMahCJGUUNASACQQNJDQAgASgCCCADQQhqEIkZRQ0BIAMoAgghBAsgAygCDCIBQQBIBEAgACgCCCABaiICQQAgAkEAShshAQsgBEEASARAIAAoAgggBGoiAkEAIAJBAEobIQQLAkAgASAETw0AA0AgASAAKAIITg0BIAAoAgwgAUECdGooAgAiAiACKAIAQQFqNgIAIAIgBkECELAQIQcgAiACKAIAQQFrIgg2AgAgCEUEQCACENUQCyAHQQBKBEAgARCuDSEFDAMLIAcNAiABQQFqIgEgBEcNAAsLIAMgBjYCACO3ASgCACMAQbrGAGogAxCuGhoLIANBEGokASAFC5gBAQV/An8gACgCCEEASgRAA0ACQCABIAAoAgwgBEECdGooAgAiAkYEQCADQQFqIQMMAQsgAiACKAIAQQFqNgIAIAIgAUECELAQIQUgAiACKAIAQQFrIgY2AgAgBkUEQCACENUQCyAFQQBKBEAgA0EB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IQMgAUH/////A0shAiABQR52IQEgAg0ACyAEQfz///8BTwRAI8ABKAIAIwBB5/kDahC0GkEADwsgA0ECdEEMahCBESICRQRAEM4aGkEADwsgAiO5ASIBNgIEIAIgAzYCCCABLQBVQQJxBEAjuQEiASABKAIAQQFqNgIACyACEKQQIAJBDGohAQNAIAEgAEH/////A3E2AgAgAUEEaiEBIABB/////wNLIQMgAEEediEAIAMNAAsgAg8LI7ABIABBBHRqQYQEaiIBIAEoAgBBAWo2AgAgAQvzAQIDfwF+IABCgAJWBEAgACEEA0AgASICQQFqIQEgBEL/////A1YhAyAEQh6IIQQgAw0ACyACQfz///8BTwRAI8ABKAIAIwBB5/kDahC0GkEADwsgAUECdEEMahCBESICRQRAEM4aGkEADwsgAiO5ASIDNgIEIAIgATYCCCADLQBVQQJxBEAjuQEiASABKAIAQQFqNgIACyACEKQQIAJBDGohAQNAIAEgAKdB/////wNxNgIAIAFBBGohASAAQv////8DViEDIABCHoghACADDQALIAIPCyOwASAAp0EEdGpBhARqIgEgASgCAEEBajYCACABC8wDAwZ/AXwBfiMBQRBrIgUkAQJAAkAgAEQAAAAAAADgwWRFDQAgAEQAAAAAAADgQWNFDQAgAJlEAAAAAAAA4EFjBEAgAKoQmw0hAQwCC0GAgICAeBCbDSEBDAELIAC9Qv///////////wCDIghCgICAgICAgPj/AFEEQCPAASgCACMAQdn4A2oQtBoMAQsgCEKBgICAgICA+P8AWgRAI7cBKAIAIwBBw/kDahC0GgwBCyAAmiAAIABEAAAAAAAAAABjGyAFQQxqEPU/IQdBASAFKAIMQQFrIgRBHm0iBkEBaiICIAJBAU0bQQJ0QQxqEIERIgFFBEAQzhoaQQAhAQwBCyABI7kBIgM2AgQgASACNgIIIAMtAFVBAnEEQCO5ASIDIAMoAgBBAWo2AgALIAEQpBAgBEFjTgRAIAcgBCAGQR5sa0EBahDGQSEHA0AgASACQQFrIgZBAnRqQQxqAn8gB0QAAAAAAADwQWMgB0QAAAAAAAAAAGZxBEAgB6sMAQtBAAsiBDYCACACQQFKIQMgByAEuKFBHhDGQSEHIAYhAiADDQALCyAARAAAAAAAAAAAY0UNACAB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IAJBDGohAQNAIAEgBadB/////wNxNgIAIAFBBGohASAFQv////8DViEDIAVCHoghBSADDQALIAILkwIBBX8gAEEFaiIBQYUCTQRAI7ABIAFBBHRqQbQDaiIBIAEoAgBBAWo2AgAgAQ8LIAAgAEEfdSIBcyABayIEIQEDQCADIgVBAWohAyABQf////8DSyECIAFBHnYhASACDQALIAVB/P///wFPBEAjwAEoAgAjAEHn+QNqELQaQQAPCyADQQJ0QQxqEIERIgJFBEAQzhoaQQAPCyACI7kBIgE2AgQgAiADNgIIIAEtAFVBAnEEQCO5ASIBIAEoAgBBAWo2AgALIAIQpBAgAiAFQX9zIAMgAEEASBs2AgggAkEMaiEBA0AgASAEQf////8DcTYCACABQQRqIQEgBEH/////A0shAyAEQR52IQQgAw0ACyACC9wBAgN/AX4jAUEQayIBJAECfiAARQRAIwBBjacJakG4CRDVGkJ/DAELAkAgACgCBCgCVEGAgIAIcSICDQAgABC8BSIADQBCfwwBCwJ/AkACQAJAAkAgACgCCEEBag4DAAECAwsgAUEAIAAoAgxrrDcDCEEADAMLIAFCADcDCEEADAILIAEgADUCDDcDCEEADAELIAAgAUEIakEIQQFBARCqDQshAwJAIAINACAAIAAoAgBBAWsiAjYCACACDQAgABDVEAtCfyABKQMIIANBAEgbCyEEIAFBEGokASAEC5MBAgF+AX8jAUEQayICJAECQCAARQRAIwBBjacJakHrCRDVGkJ/IQEMAQsgACgCBC0AV0EBcUUEQCO1ASgCACMAQafhCGoQtBpCfyEBDAELAkACQCAAKAIIDgICAAELIAA1AgwhAQwBCyAAIAJBCGpBCEEBQQAQqg0hAEJ/IAIpAwggAEEASBshAQsgAkEQaiQBIAELkAQCBn8BfiAARQRAIwBBjacJakGrChDVGkJ/DwsCQCAAKAIELQBXQQFxBEACQAJAIAAoAggiAw4CAwABCyAANQIMDwsgAyADQR91IgFzIAFrIgFBA3EhBSABQQFrQQNJBH5CAAUgAUF8cSEEA0AgASIGQQRrIQEgAkEEaiICIARHDQALIABBDGoiAiAGQQJ0aiIEQQhrNQIAQjyGIARBDGs1AgBCHoaEIAIgAUECdGo1AgCECyEHIAUEQEEAIQIDQCAAIAFBAWsiAUECdGo1AgwgB0IehoQhByACQQFqIgIgBUcNAAsLQgAgB30gByADQQBIGw8LIAAQvAUiAEUEQEJ/DwsCQCAAKAIELQBXQQFxRQRAIwBBjacJakGPChDVGkJ/IQcMAQsCQAJAIAAoAggiAw4CAgABCyAANQIMIQcMAQsgAyADQR91IgFzIAFrIgFBA3EhBSABQQFrQQNJBH5CAAUgAUF8cSEEA0AgASIGQQRrIQEgAkEEaiICIARHDQALIABBDGoiAiAGQQJ0aiIEQQhrNQIAQjyGIARBDGs1AgBCHoaEIAIgAUECdGo1AgCECyEHIAUEQEEAIQIDQCAAIAFBAWsiAUECdGo1AgwgB0IehoQhByACQQFqIgIgBUcNAAsLQgAgB30gByADQQBIGyEHCyAAIAAoAgBBAWsiATYCACABDQAgABDVEAsgBwupAgICfgV/IAFBADYCACAARQRAIwBBjacJakHTChDVGkJ/DwsCQCAAKAIEKAJUQYCAgAhxIgcNACAAELwFIgANAEJ/DwsCQAJAAkACQCAAKAIIIgVBAWoOAwADAQILQQAgACgCDGusIQIMAgsgADUCDCECDAELIAUgBUEfdSIEcyAEayEEIAVBH3VBAXIhBgJAA0AgBEEBayIEQQBOBEAgACAEQQJ0ajUCDCADQh6GfCICQh6IIANRIQggAiEDIAgNAQwCCwsgA0IAWQRAIAMgBqx+IQIMAgsgBUEATg0AQoCAgICAgICAgH8hAiADQoCAgICAgICAgH9RDQELIAEgBjYCAEJ/IQILAkAgBw0AIAAgACgCAEEBayIENgIAIAQNACAAENUQCyACC3sAAkAgACgCBC0AV0EBcUUNACAAKAIIQQBODQAjtwEoAgAjAEG6vQZqELQaQQAPCwJAAkACQCAAEKMNIgBBf0YEQEEAIQAQtRpFDQEMAwsgAEGAgARJDQELI8ABKAIAIwBB8c8AahC0GkEADwsgASAAOwEAQQEhAAsgAAtRAAJAIAAoAgQtAFdBAXFFDQAgACgCCEEATg0AI7cBKAIAIwBBur0GahC0GkEADwsCfyAAEKMNIgBBf0YEQEEAELUaDQEaCyABIAA2AgBBAQsLswECAX4BfyMBQRBrIgMkAQJ/AkACQAJAAkAgACgCBC0AV0EBcQRAIAAoAghBAE4NASO3ASgCACMAQbq9BmoQtBpBAAwFCyO1ASgCACMAQafhCGoQtBoMAQsCQCAAKAIIDgIDAgALIAAgA0EIakEIQQFBABCqDUEASA0AIAMpAwgiAkJ/Ug0CC0EAELUaDQIaQn8hAgwBCyAANQIMIQILIAEgAjcDAEEBCyEAIANBEGokASAAC1EAAkAgACgCBC0AV0EBcUUNACAAKAIIQQBODQAjtwEoAgAjAEG6vQZqELQaQQAPCwJ/IAAQpA0iAEF/RgRAQQAQtRoNARoLIAEgADYCAEEBCwtYAQF/IwFBEGsiAiQBAn8gAUEKRgRAIAAgAkEMakEAQQBBABC4DQwBCyAAIAFBASACQQxqQQBBAEEAELkNCyEBIAIoAgwhACACQRBqJAEgAEEAIAFBf0cbC+oVAg5/An4jAUEgayIPJAECQAJAIAAEQCAAKAIELQBXQQFxDQELIwBBjacJakG8DRDVGkF/IQAMAQsCQCAAKAIIIg4gDkEfdSIFcyAFayIKQckASA0AI7ABKALoAigCCCgC5KQDIgVBAEwNACAFQdoAbiAKQQtrQQpuSw0AIA8gBTYCECO3ASgCACMAQfGBAWogD0EQahCuGhpBfyEADAELIAogCkHjAG1qQQFqIgVB/f///wFOBEAjwAEoAgAjAEHn+QNqELQaQX8hAAwBC0EBIAUgBUEBTRtBAnRBDGoQgREiCUUEQBDOGhpBfyEADAELIAkjuQEiBzYCBCAJIAU2AgggBy0AVUECcQRAI7kBIgUgBSgCAEEBajYCAAsgDkEfdiEQIABBDGohESAJEKQQIAlBDGohB0EAIQUDQAJ/AkACQCAKQQFrIgpBAE4EQCARIApBAnRqKAIAIgAgBUEATA0DGiAFQQFxIRJBACEIIAVBAUYNAiAFQX5xIQ1BACEGA0AgByAIQQJ0IgtqIgwgAK0gDDUCAEIehoQiE0KAlOvcA4AiFEKA7JSjDH4gE3w+AgAgByALQQRyaiIAIBRC/////w+DIAA1AgBCHoaEIhRCgJTr3AOAIhNCgOyUowx+IBR8PgIAIBOnIQAgCEECaiEIIAZBAmoiBiANRw0ACwwBCyAQIAUEfyAFBSAHQQA2AgBBAQtBAWsiDEEJbGpBAWohCEEKIQAgByAMQQJ0aigCACIFQQpPBEADQCAIQQFqIQggBSAAQQpsIgBPDQALCwJAIAhBgQVIDQAjsAEoAugCKAIIKALkpAMiBUEATA0AIAggEGsgBUwNAEF/IQAgCSAJKAIAQQFrIgc2AgAgB0UEQCAJENUQCyAPIAU2AgAjtwEoAgAjAEHxgQFqIA8QrhoaDAULAkACQAJAAkAgAgRAAkAgAigCDEE5TwRAIAhFDQMgCCACKAIQIAIoAhRrSg0BDAMLIAhFDQILQX8hACACIAhBORCfFEF/Rw0BIAkgCSgCAEEBayIFNgIAIAUNCSAJENUQDAkLIAMEQCAEIAMgBCgCACAIELsHIgA2AgAgAA0CQX8hACAJIAkoAgBBAWsiBTYCACAFDQkgCRDVEAwJCyAIQTkQ/hMiCkUEQEF/IQAgCSAJKAIAQQFrIgU2AgAgBQ0JIAkQ1RAMCQsgCigCEEECdkEHcSEADAILIANFBEAgAigCCCEAQQAhCgwCCyAEKAIAIQALIAAgCGohAEEAIQYgDEEASgRAA0AgAEEDayAHIAZBAnRqKAIAIgVB5ABuQQpwQTByOgAAIABBBGsgBUHoB25BCnBBMHI6AAAgAEEFayAFQZDOAG5BCnBBMHI6AAAgAEEGayAFQaCNBm5BCnBBMHI6AAAgAEEHayAFQcCEPW5BCnBBMHI6AAAgAEEIayAFQYCt4gRuQQpwQTByOgAAIABBCWsiCyAFQYDC1y9uQQpwQTByOgAAIABBAmsgBUEKbiINQQpwQTByOgAAIABBAWsgBSANQQpsa0EwcjoAACALIQAgBkEBaiIGIAxHDQALIAwhBgsgByAGQQJ0aigCACEFA0AgACILQQFrIgAgBSAFQQpuIgdBCmxrQTByOgAAIAVBCUshBiAHIQUgBg0AC0EAIQVBACEKIA5BAE4NASALQQJrQS06AAAMAQsCQAJAAkAgAEEBaw4CAAECCwJ/IAIEQAJ/IAIoAgAiACgCECIFQSBxBEAgAEEYQSQgBUHAAHEbagwBCyAAKAIkCyACKAIUagwBCyAKKAIQIgBBIHEEQCAKQRhBJCAAQcAAcRtqDAELIAooAiQLIAhqIQBBACEGIAxBAEoEQANAIABBA2sgByAGQQJ0aigCACIFQeQAbkEKcEEwcjoAACAAQQRrIAVB6AduQQpwQTByOgAAIABBBWsgBUGQzgBuQQpwQTByOgAAIABBBmsgBUGgjQZuQQpwQTByOgAAIABBB2sgBUHAhD1uQQpwQTByOgAAIABBCGsgBUGAreIEbkEKcEEwcjoAACAAQQlrIgsgBUGAwtcvbkEKcEEwcjoAACAAQQJrIAVBCm4iDUEKcEEwcjoAACAAQQFrIAUgDUEKbGtBMHI6AAAgCyEAIAZBAWoiBiAMRw0ACyAMIQYLIAcgBkECdGooAgAhBQNAIAAiC0EBayIAIAUgBUEKbiIHQQpsa0EwcjoAACAFQQlLIQYgByEFIAYNAAtBASEFIA5BAE4NAiALQQJrQS06AAAMAgsCfyACBEACfyACKAIAIgAoAhAiBUEgcQRAIABBGEEkIAVBwABxG2oMAQsgACgCJAsgAigCFEEBdGoMAQsgCigCECIAQSBxBEAgCkEYQSQgAEHAAHEbagwBCyAKKAIkCyAIQQF0aiEAQQAhBiAMQQBKBEADQCAAQQZrIAcgBkECdGooAgAiBUHkAG5BCnBBMHI7AQAgAEEIayAFQegHbkEKcEEwcjsBACAAQQprIAVBkM4AbkEKcEEwcjsBACAAQQxrIAVBoI0GbkEKcEEwcjsBACAAQQ5rIAVBwIQ9bkEKcEEwcjsBACAAQRBrIAVBgK3iBG5BCnBBMHI7AQAgAEESayILIAVBgMLXL25BCnBBMHI7AQAgAEEEayAFQQpuIg1BCnBBMHI7AQAgAEECayAFIA1BCmxrQTByOwEAIAshACAGQQFqIgYgDEcNAAsgDCEGCyAHIAZBAnRqKAIAIQUDQCAAIgtBAmsiACAFIAVBCm4iB0EKbGtBMHI7AQAgBUEJSyEGIAchBSAGDQALQQEhBSAOQQBODQEgC0EEa0EtOwEADAELAn8gAgRAAn8gAigCACIAKAIQIgVBIHEEQCAAQRhBJCAFQcAAcRtqDAELIAAoAiQLIAIoAhRBAnRqDAELIAooAhAiAEEgcQRAIApBGEEkIABBwABxG2oMAQsgCigCJAsgCEECdGohAEEAIQYgDEEASgRAA0AgAEEMayAHIAZBAnRqKAIAIgVB5ABuQQpwQTByNgIAIABBEGsgBUHoB25BCnBBMHI2AgAgAEEUayAFQZDOAG5BCnBBMHI2AgAgAEEYayAFQaCNBm5BCnBBMHI2AgAgAEEcayAFQcCEPW5BCnBBMHI2AgAgAEEgayAFQYCt4gRuQQpwQTByNgIAIABBJGsiCyAFQYDC1y9uQQpwQTByNgIAIABBCGsgBUEKbiINQQpwQTByNgIAIABBBGsgBSANQQpsa0EwcjYCACALIQAgBkEBaiIGIAxHDQALIAwhBgsgByAGQQJ0aigCACEFA0AgACILQQRrIgAgBSAFQQpuIgdBCmxrQTByNgIAIAVBCUshBiAHIQUgBg0AC0EBIQUgDkEATg0AIAtBCGtBLTYCAAsgCSAJKAIAQQFrIgA2AgAgAEUEQCAJEIQRCwJAIAIEQCACIAIoAhQgCGo2AhQMAQsgBUUEQCAEIAQoAgAgCGo2AgAMAQsgASAKNgIAC0EAIQAMBAsgE6chAAsgEgRAIAcgCEECdGoiCCAArSAINQIAQh6GhCIUQoCU69wDgCITQoDslKMMfiAUfD4CAAsgE6cLIgAEQANAIAcgBUECdGogACAAQYCU69wDbiIIQYCU69wDbGs2AgAgBUEBaiEFIABB/5Pr3ANLIQYgCCEAIAYNAAsLELIwRQ0AC0F/IQAgCSAJKAIAQQFrIgU2AgAgBQ0AIAkQ1RALIA9BIGokASAAC9sNAgp/An4CQCAABEAgACgCBC0AV0EBcQ0BCyMAQY2nCWpBmA8Q1RpBfw8LIAAoAgghDUEEIQkCQAJAAkACQCABQQNrDg4BAQEBAQIBAQEBAQEBAwALQQEhCQwCCwALQQMhCQsgDSANQR91IgdzIAdrIQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIA0EfyALQcSIkSJKDQEgC0EBayIHQR5sIAlqQSAgACAHQQJ0aigCDCIHZ2tBACAHG2pBAWsgCW0gDUEfdmoFQQELIgdBAmogByACGyEOIAQEQAJAIAQoAgxB+ABPBEAgDkUNBCAOIAQoAhAgBCgCFGtKDQEMBAsgDkUNAwtBfyEHIAQgDkH4ABCfFEF/Rw0CDA4LIAUEQCAGIAUgBigCACAOELsHIgU2AgAgBQ0DQX8PCyAOQfgAEP4TIgxFBEBBfw8LIAwoAhBBAnZBB3EhBQwDCyPAASgCACMAQbS4AWoQtBpBfw8LIAVFBEAgBCgCCCEFDAILIAYoAgAhBQsgBSAOaiEHIA1FDQEgC0EATA0IIAtBAWshDyABQf8BaiEQIAmtIRIDQCAIQR5qIQUgACAKQQJ0ajUCDCAIrYYgEYQhEQNAIAdBAWsiB0EwQdcAIBAgEadxIghBGHRBgICA0ABIGyAIajoAACAFIAlrIgUgCU4gESASiCIRQgBSIAogD0gbDQALIAUhCCAKQQFqIgogC0cNAAsMCAsCQAJAAkAgBUEBaw4CAAECCwJ/IAQEQAJ/IAQoAgAiBSgCECIHQSBxBEAgBUEYQSQgB0HAAHEbagwBCyAFKAIkCyAEKAIUagwBCyAMKAIQIgVBIHEEQCAMQRhBJCAFQcAAcRtqDAELIAwoAiQLIA5qIQcgDUUNAyALQQBMDQggC0EBayEPIAFB/wFqIRAgCa0hEgNAIAhBHmohBSAAIApBAnRqNQIMIAithiARhCERA0AgB0EBayIHQTBB1wAgECARp3EiCEEYdEGAgIDQAEgbIAhqOgAAIAUgCWsiBSAJTiARIBKIIhFCAFIgCiAPSBsNAAsgBSEIIApBAWoiCiALRw0ACwwICwJ/IAQEQAJ/IAQoAgAiBSgCECIHQSBxBEAgBUEYQSQgB0HAAHEbagwBCyAFKAIkCyAEKAIUQQF0agwBCyAMKAIQIgVBIHEEQCAMQRhBJCAFQcAAcRtqDAELIAwoAiQLIA5BAXRqIQcgDUUNAyALQQBMDQYgC0EBayEPIAFB/wFqIRAgCa0hEgNAIAhBHmohBSAAIApBAnRqNQIMIAithiARhCERA0AgB0ECayIHQTBB1wAgECARp3EiCEEYdEGAgIDQAEgbIAhqwDsBACAFIAlrIgUgCU4gESASiCIRQgBSIAogD0gbDQALIAUhCCAKQQFqIgogC0cNAAsMBgsCfyAEBEACfyAEKAIAIgUoAhAiB0EgcQRAIAVBGEEkIAdBwABxG2oMAQsgBSgCJAsgBCgCFEECdGoMAQsgDCgCECIFQSBxBEAgDEEYQSQgBUHAAHEbagwBCyAMKAIkCyAOQQJ0aiEHIA1FDQMgC0EATA0EIAtBAWshDyABQf8BaiEQIAmtIRIDQCAIQR5qIQUgACAKQQJ0ajUCDCAIrYYgEYQhEQNAIAdBBGsiB0EwQdcAIBAgEadxIghBGHRBgICA0ABIGyAIasA2AgAgBSAJayIFIAlOIBEgEogiEUIAUiAKIA9IGw0ACyAFIQggCkEBaiIKIAtHDQALDAQLIAdBAWsiB0EwOgAADAYLIAdBAWsiB0EwOgAADAQLIAdBAmsiB0EwOwEADAILIAdBBGsiB0EwNgIACwJAIAJFBEAgByEFDAELIAdBCGsiBUEwNgIAIAdBBGtB+ABB7wBB4gAgAUEIRhsgAUEQRhs2AgALQQEhCSANQQBODQMgBUEEa0EtNgIADAMLAkAgAkUEQCAHIQUMAQsgB0EEayIFQTA7AQAgB0ECa0H4AEHvAEHiACABQQhGGyABQRBGGzsBAAtBASEJIA1BAE4NAiAFQQJrQS07AQAMAgsCQCACRQRAIAchBQwBCyAHQQJrIgVBMDoAACAHQQFrQfgAQe8AQeIAIAFBCEYbIAFBEEYbOgAAC0EBIQkgDUEATg0BIAVBAWtBLToAAAwBCwJAIAJFBEAgByEFDAELIAdBAmsiBUEwOgAAIAdBAWtB+ABB7wBB4gAgAUEIRhsgAUEQRhs6AAALQQAhCSANQQBODQAgBUEBa0EtOgAACwJAIAQEQCAEIAQoAhQgDmo2AhQMAQsgCUUEQCAGIAYoAgAgDmo2AgAMAQsgAyAMNgIAC0EAIQcLIAcLKQAgAkEKRgRAIAFBACAAQQBBABC4DQ8LIAEgAiADQQAgAEEAQQAQuQ0LXwEBfyMBQRBrIgUkASAFIAE2AgwCfyADQQpGBEAgAkEAQQAgACAFQQxqELgNDAELIAIgAyAEQQBBACAAIAVBDGoQuQ0LIQMgBSgCDCEBIAVBEGokASABQQAgA0EAThsLtBUDDn8FfgF8IwFBIGsiDCQBAkACfwJAAkAgAkEkSg0AIAJBAEcgAkECSHENACAALQAAIgMNASAAIQZBAAwCCyO3ASgCACMAQZGqC2oQtBoMAgsgACEGAkADQCPPASADQf8BcUECdGotAABBCHFFDQEgBkEBaiIGLQAAIgMNAAtBAAwBCwJAAkACQCADQf8BcUEraw4DAAIBAgsgBkEBaiEGDAELQQEhECAGQQFqIQYLIAYtAAALIQMCQAJAAkACfwJAAkACQAJAAkACQCACRQRAQTAhBEEKIQIgAyADQf8BcUEwRw0HGiAGLQABIgNBwgBrDjcFCQkJCQkJCQkJCQkJAwkJCQkJCQkJAQkJCQkJCQkJCQUJCQkJCQkJCQkJCQkDCQkJCQkJCQkBCQtBMCEEIAMgA0H/AXFBMEcNBhpBASEOAkAgAkECaw4PBAkJCQkJAgkJCQkJCQkACQsgBi0AASEDC0EQIQIgA0EgckH/AXFB+ABGDQQMBgsgBi0AASEDC0EIIQIgA0EgckH/AXFB7wBHDQQMAgsgBi0AASEDC0ECIQIgA0EgckH/AXFB4gBHDQILQQEhDiAGQQJqIgMtAAAiBEHfAEcEQCADIQYMAwsgBkEDaiIGLQAACyEEQQEhDiAEQf8BcUHfAEYNAgwBC0EBIQ4LQX8hCQJAAkACQAJAAkACQAJAAn8gAiACQQFrcUUEQCACIQMDQCAJQQFqIQkgA0ECSSEHIANBAXUhAyAHRQ0ACyOAAiAEQf8BcWotAAAgAk4EQCAGIQMMBgsgBiEDA0AgAyEKIAQhBwJAIAVBAXEEQCAIQf8BcUHfAEcNASAKQQFrDAQLIAtBAWohCwsgCkEBaiIDLQAAIgRB3wBGIQUgByEIIAIgBCOAAmotAABKDQAgBEHfAEYNAAtBACEFIAdB/wFxQd8ARw0FIAohBgwJCyMAQeDs7AFqIAJBA3RqIgMrAwAiFkQAAAAAAAAAAGEEQCADIAK3EOtBRFCWCs9eyzRAoyIWOQMAIAKsIhIhEUEBIQMDQCADIgRBAWohAyARIhMgEn4iEUKBgICABFQNAAsjACIDQZDv7AFqIAJBAnRqIAQ2AgAgA0Gw8OwBaiACQQN0aiATNwMAIAYtAAAhBAsgBEH/AXEiA0HfAEYhBQJAI4ACIANqLQAAIAJIBEAgBiEKIAYhCQwBCyAGIQogBiEJIANB3wBHDQMLA0AgBCEDAkAgBUEBcQRAIAdB/wFxQd8ARw0BIApBAWoMAwsgCEEBaiEIIAkhCgsgCUEBaiIJLQAAIgRB3wBGIQUgAyEHIAIgBCOAAmotAABKDQAgBEHfAEYNAAsgA0H/AXFB3wBHDQEgCkEBagshBkEAIQUMBwsCQCAIQYEFSA0AI7ABKALoAigCCCgC5KQDIgNBAEwNACADIAhIDQILIAghBwsgB7cgFqJEAAAAAAAA8D+gIhZEAAAA/P//v0FkBEAjwAEoAgAjAEHn+QNqELQaQQAhBAwHCwJ/IBaZRAAAAAAAAOBBYwRAIBaqDAELQYCAgIB4CyIIQf3///8BTgRAI8ABKAIAIwBB5/kDahC0GkEAIQQMBwtBASAIIAhBAU0bQQJ0QQxqEIERIgVFBEAQzhoaQQAhBAwHCyAFI7kBIgM2AgQgBSAINgIIIAMtAFVBAnEEQCO5ASIDIAMoAgBBAWo2AgALIAUQpBAgBUEANgIIIwAhAyAGIAlPBEAgBiEDDAULIANBsPDsAWogAkEDdGopAwAiFSACrCITIANBkO/sAWogAkECdGooAgAiCkEBRhshFCAKQQJIIQ8gBiEDA0AgAy0AACIHQd8ARgRAIANBAWoiAyAJSQ0BDAQLQQEhBCADQQFqIQMjgAIgB2oxAAAhEQJAIA8EQCAUIRIMAQsgFCESIAMgCUYNAANAIAMtAAAiB0HfAEcEQCOAAiAHajEAACARIBN+fCERIARBAWohBAsgCSADQQFqIgNHIAQgCkhxDQALIAQgCkYEQCAVIRIMAQsgEyESIARBAkgNAANAIBIgE34hEiAEQQJLIQcgBEEBayEEIAcNAAsLIAVBDGoiCyEEIAsgBSgCCCINQQJ0aiIHIAtLBEADQCAEIBIgBDUCAH4gEXwiEadB/////wNxNgIAIBFCHoghESAEQQRqIgQgB0kNAAsLAkAgEVANACAIIA1KBEAgBCARPgIAIAUgDUEBajYCCAwBCwJAAkAgCEEBaiIHQf3///8BTgRAI8ABKAIAIwBB5/kDahC0GgwBC0EBIAcgB0EBTRtBAnRBDGoQgREiBA0BEM4aGgsgBSAFKAIAQQFrIgM2AgBBACEEIAMNCSAFENUQDAkLIAQjuQEiDTYCBCAEIAc2AgggDS0AVUECcQRAI7kBIg0gDSgCAEEBajYCAAsgBBCkECAEQQxqIAsgCEECdCIIEM4+GiAFIAUoAgBBAWsiCzYCACALRQRAIAUQ1RALIAQgCGogET4CDCAEIQUgByEICyADIAlJDQALDAILIAwgAzYCECAMIAg2AhQjtwEoAgAjAEHngAFqIAxBEGoQrhoaQQAhBAwFC0Hi////ByAJbSALSARAI7cBKAIAIwBBzNEAahC0GkEAIQQMBQtBASAJIAtsQR1qQR5tIgsgC0EBTRtBAnRBDGoQgREiBUUNASAFI7kBIgQ2AgQgBSALNgIIIAQtAFVBAnEEQCO5ASIEIAQoAgBBAWo2AgALIAUQpBAgBUEMaiIPIQQCQCADQQFrIgcgBkkNAEEAIQgDQAJAIActAAAiCkHfAEYNACOAAiAKajEAACAIrYYgEYQhESAIIAlqIghBHkgNACAEIBGnQf////8DcTYCACAIQR5rIQggEUIeiCERIARBBGohBAsgB0EBayIHIAZPDQALIAhFDQAgBCARPgIAIARBBGohBAsgCyAEIA9rQQJ1SgRAA0AgBEEANgIAIARBBGoiBCAPa0ECdSALSA0ACwsgBSgCCCIIIAhBH3UiBHMgBGsiB0EfdSAHcSEKIAchCQNAAkAgCSIEQQBMBEAgCiEEDAELIAUgBEEBayIJQQJ0aigCDEUNAQsLIAQgB0YNACAFQQAgBGsgBCAIQQBIGzYCCAwCCyAFDQFBACEEDAMLEM4aGkEAIQQMAgsCQCAODQBBACECIAUoAghFDQAgAyEGDAELIAMgBkYNACAQBEAgBUEAIAUoAghrNgIICyADLQAAIgQEQANAI88BIARB/wFxQQJ0ai0AAEEIcUUEQCADIQYMAwsgA0EBaiIDLQAAIgQNAAsLIAUQqQ0iAgR/AkAgAigCCCIAQQFqQQJLDQAgAjUCDCAArH4iEkIFfEKFAlYNACACIAIoAgBBAWsiADYCACAARQRAIAIQhBELI7ABIBKnQQR0akGEBGoiAiACKAIAQQFqNgIACyACBUEACyIERQRAQQAhBAwCCyABRQ0BIAEgAzYCAAwBCyABBEAgASAGNgIACwJAIAVFDQAgBSAFKAIAQQFrIgM2AgAgAw0AIAUQ1RALQQAhBCAAQcgBIAAQ/UQiAyADQcgBTxsQjBQiA0UNACAMIAI2AgAgDCADNgIEI7cBKAIAIwBBj50KaiAMEK4aGiADIAMoAgBBAWsiBjYCACAGDQAgAxDVEAsgDEEgaiQBIAQLugEBA38jAUEQayIDJAEgA0EANgIMIAAgA0EMaiACELwNIQQCQCADKAIMIgVFDQAgBEEAIAUgACABakYbDQACQCAERQ0AIAQgBCgCAEEBayIFNgIAIAUNACAEENUQC0EAIQQgAEHIASABIAFByAFOGxCtByIARQ0AIAMgAjYCACADIAA2AgQjtwEoAgAjAEGPnQpqIAMQrhoaIAAgACgCAEEBayICNgIAIAINACAAENUQCyADQRBqJAEgBAvhAQEGfyMBQRBrIgIkASACQQA2AgwCQCAAEIAVIgNFDQAgAyACQQhqENgUIgYgAkEMaiABELwNIQQCQCACKAIMIgcEQCAERQ0BIAcgBiACKAIIakcNAQsgAyADKAIAQQFrIgU2AgAgBQRAIAQhBQwCCyADENUQIAQhBQwBCyADIAMoAgBBAWsiBjYCACAGRQRAIAMQ1RALAkAgBEUNACAEIAQoAgBBAWsiAzYCACADDQAgBBDVEAsgAiABNgIAIAIgADYCBCO3ASgCACMAQY+dCmogAhCuGhoLIAJBEGokASAFC/8HAwt/A34BfCMBQRBrIgQkASAEQQA2AgggBEIANwMAAnwCQCAAKAIIIgVBAEgEQEEAIAVrIQUMAQsgBQ0AIAFBADYCAEQAAAAAAAAAAAwBC0EgIABBDGoiByAFQQFrIgNBAnRqKAIAIgJna0EAIAIbIQICQCAFQcWIkSJOBEAgBUHFiJEiRw0BIAJBB0sNAQsCQCACIANBHmxqIgpBN0wEQEE3IAprIgJBHm0hCCAFQQBMBH9BAAUgBCAIQQJ0aiEGIAVBAXEhDCACIAhBHmxrrSEOAn4gA0UEQEEAIQJCAAwBCyAFQX5xIQtBACECA0AgBiACQQJ0IgNqIA1C/////w+DIAMgB2o1AgAgDoaEIg2nQf////8DcTYCACAGIANBBHIiA2ogDUIeiEL/////D4MgAyAHajUCACAOhoQiDadB/////wNxNgIAIA1CHoghDSACQQJqIQIgCUECaiIJIAtHDQALIA1C/////w+DCyEPIAwEfiAGIAJBAnQiAmogAiAHajUCACAOhiAPhCINp0H/////A3E2AgAgDUIeiAUgDQunCyEDIAQgBSAIaiICQQJ0aiADNgIAIAJBAWohCAwBCwJAIAUgCkE3ayICQR5uIglrIghBAEwNAEF/IAIgCUEebGsiAnRBf3MhBSAHIAlBAnRqIQsgAq0hDkEAIQMgCCECA0AgBCACQQFrIgdBAnQiBmogBiALajUCACADrUIehoQiDSAOiD4CACANpyAFcSEDIAJBAUshBiAHIQIgBg0ACyADRQ0AIAQgBCgCAEEBcjYCAAwBCwNAIAlBAEwNASAAIAlBAWsiCUECdGooAgxFDQALIAQgBCgCAEEBcjYCAAsgBCMAQfDPEGogBCgCACICQQdxQQJ0aigCACACajYCACAEIAhBAWsiAkECdGooAgC4IRACQCACQQBMDQAgCEECayEGIAJBA3EiBwRAQQAhAwNAIBBEAAAAAAAA0EGiIAQgAkEBayICQQJ0aigCALigIRAgA0EBaiIDIAdHDQALCyAGQQNJDQADQCAQRAAAAAAAANBBoiACQQJ0IARqIgNBBGsoAgC4oEQAAAAAAADQQaIgA0EIaygCALigRAAAAAAAANBBoiAEIAJBA2siA0ECdGooAgC4oEQAAAAAAADQQaIgBCACQQRrIgJBAnRqKAIAuKAhECADQQFLDQALCyAQRAAAAAAAAIA8oiIQRAAAAAAAAPA/YQRAIApB/////wdGDQEgCkEBaiEKRAAAAAAAAOA/IRALIAEgCjYCACAQmiAQIAAoAghBAEgbDAELI8ABKAIAIwBBv7wBahC0GiABQQA2AgBEAAAAAAAA8L8LIRAgBEEQaiQBIBAL1AECAn8BfCMBQRBrIgEkAQJ8AkACQCAARQRAIwBBjacJakGAGBDVGgwBCyAAKAIELQBXQQFxRQRAI7UBKAIAIwBBp+EIahC0GgwBCyAAKAIIIgJBAWpBAk0EQCAANQIMIAKsfrkMAwsCQCAAIAFBDGoQvw0iA0QAAAAAAADwv2EEQBC1Gg0BIAEoAgwiAEGACEoNAQwDCyABKAIMIgBBgQhIDQILI8ABKAIAIwBBzbEBahC0GgtEAAAAAAAA8L8MAQsgAyAAEMZBCyEDIAFBEGokASADC5IBAQJ/AkAgACgCCCIDQQFqQQJLDQAgASgCCCICQQFqQQJLDQAgATUCDCACrH4gADUCDCADrH58EMINDwsgASgCCCECIANBAEgEQCACQQBIBEAgACABEMMNIgFFBEBBAA8LIAFBACABKAIIazYCCCABDwsgASAAEMQNDwsgAkEASARAIAAgARDEDQ8LIAAgARDDDQvaAgIEfwF+IABCBXxChQJYBEAjsAEgAKdBBHRqQYQEaiIBIAEoAgBBAWo2AgAgAQ8LIABCgICAgAR9QoGAgIB4WgRAQRAQgREiAUUEQBDOGhpBAA8LIAEjuQEiAjYCBCABIACnIgNBH3VBAXI2AgggAyADQR91IgRzIARrIQMgAi0AVUECcQRAI7kBIgIgAigCAEEBajYCAAsgARCkECABIAM2AgwgAQ8LQQJBAyAAIABCP4ciBYUgBX0iBUKAgICAgICAgBBUGyIBQQJ0QQxqEIERIgJFBEAQzhoaQQAPCyACI7kBIgM2AgQgAiABNgIIIAMtAFVBAnEEQCO5ASIDIAMoAgBBAWo2AgALIAIQpBAgAkEAIAFrIAEgAEIAUxs2AgggAkEMaiEBA0AgASAFp0H/////A3E2AgAgAUEEaiEBIAVC/////wNWIQMgBUIeiCEFIAMNAAsgAgvTBQEMfwJAIAAoAggiAiACQR91IgJzIAJrIgMgASgCCCICIAJBH3UiAnMgAmsiAk4EQCADIQYgAiEDIAEhCCAAIQEMAQsgAiEGIAAhCAsgBkEBaiICQf3///8BTgRAI8ABKAIAIwBB5/kDahC0GkEADwsgAkECdEEMahCBESIARQRAEM4aGkEADwsgACO5ASIENgIEIAAgAjYCCCAELQBVQQJxBEAjuQEiAiACKAIAQQFqNgIACyAAEKQQAkAgA0EATARAQQAhA0EAIQQMAQsgA0EBcSEJAkAgA0EBRgRAQQAhBAwBCyADQX5xIQpBACEEA0AgAEEMaiILIAVBAnQiAmogAUEMaiIMIAJqKAIAIARqIAhBDGoiBCACaigCAGoiDUH/////A3E2AgAgCyACQQRyIgJqIAIgBGooAgAgAiAMaigCACANQR52amoiAkH/////A3E2AgAgAkEediEEIAVBAmohBSAHQQJqIgcgCkcNAAsLIAlFDQAgACAFQQJ0IgJqIAIgCGooAgwgASACaigCDCAEamoiAkH/////A3E2AgwgAkEediEECyAAIAMgBkgEfyADQQFqIQIgBiADa0EBcQRAIAAgA0ECdCIDaiABIANqKAIMIARqIgRB/////wNxNgIMIARBHnYhBCACIQMLIAIgBkcEQANAIABBDGoiBSADQQJ0IgJqIAFBDGoiByACaigCACAEaiIEQf////8DcTYCACAFIAJBBGoiAmogAiAHaigCACAEQR52aiICQf////8DcTYCACACQR52IQQgA0ECaiIDIAZHDQALCyAGBSADC0ECdGogBDYCDCAAKAIIIgUgBUEfdSICcyACayIDQR91IANxIQEgAyEEA0ACQCAEIgJBAEwEQCABIQIMAQsgACACQQFrIgRBAnRqKAIMRQ0BCwsgAiADRwRAIABBACACayACIAVBAEgbNgIICyAAC9AHAg1/AX5BfyEIAkACQAJAAn8gACgCCCICIAJBH3UiAnMgAmsiAiABKAIIIgMgA0EfdSIDcyADayIFSARAIAIhAyABIQYgAAwBC0EBIQggAiAFRwRAIAUhAyACIQUgACEGIAEMAQsDQCACIgNBAWsiAkEASA0CIAAgAkECdCIEaigCDCIFIAEgBGooAgwiBEYNAAsgASAAIAQgBUsiAhshBkF/QQEgAhshCCADIQUgACABIAIbCyEJIAVB/f///wFOBEAjwAEoAgAjAEHn+QNqELQaQQAPC0EBIAUgBUEBTRtBAnRBDGoQgREiAkUEQBDOGhpBAA8LIAIjuQEiBDYCBCACIAU2AgggBC0AVUECcQRAI7kBIgQgBCgCAEEBajYCAAsgAhCkECADQQBMBEBBACEDQQAhAQwDCyADQQFxIQogA0EBRgRAQQAhAUEAIQAMAgsgA0F+cSELQQAhAUEAIQADQCACQQxqIgwgAEECdCIEaiAGQQxqIg0gBGooAgAgASAJQQxqIg4gBGooAgBqayIBQf////8DcTYCACAMIARBBHIiBGogBCANaigCACAEIA5qKAIAIAFBHnZBAXFqayIEQf////8DcTYCACAEQR52QQFxIQEgAEECaiEAIAdBAmoiByALRw0ACwwBCyOwAUGEBGoiAiACKAIAQQFqNgIAIAIPCyAKRQ0AIAIgAEECdCIEaiAEIAZqKAIMIAEgBCAJaigCDGprIgRB/////wNxNgIMIARBHnZBAXEhAQsCQCADIAVODQAgA0EBaiEEIAUgA2tBAXEEQCACIANBAnQiA2ogAyAGaigCDCABayIDQf////8DcTYCDCADQR52QQFxIQEgBCEDCyAEIAVGDQADQCACQQxqIgAgA0ECdCIEaiAGQQxqIgcgBGooAgAgAWsiAUH/////A3E2AgAgACAEQQRqIgRqIAQgB2ooAgAgAUEBdEEfdWoiBEH/////A3E2AgAgBEEedkEBcSEBIANBAmoiAyAFRw0ACwsgAigCCCEBIAhBAEgEQCACQQAgAWsiATYCCAsgASABQR91IgNzIANrIgBBH3UgAHEhBSAAIQQDQAJAIAQiA0EATARAIAUhAwwBCyACIANBAWsiBEECdGooAgxFDQELCyAAIANHBEAgAkEAIANrIAMgAUEASBsiATYCCAsCQCABQQFqQQJLDQAgAjUCDCABrH4iD0IFfEKFAlYNACACIAIoAgBBAWsiAzYCACADRQRAIAIQhBELI7ABIA+nQQR0akGEBGoiAiACKAIAQQFqNgIACyACC5IBAQJ/AkAgACgCCCIDQQFqQQJLDQAgASgCCCICQQFqQQJLDQAgADUCDCADrH4gATUCDCACrH59EMINDwsgASgCCCECIANBAEgEQCACQQBIBEAgASAAEMQNDwsgACABEMMNIgFFBEBBAA8LIAFBACABKAIIazYCCCAB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ACABayABIABBAEgbIgA2AggLAkAgAEEBakECSw0AIAM1AgwgAKx+IgxCBXxChQJWDQAgAyADKAIAQQFrIgE2AgAgAUUEQCADEIQRCyOwASAMp0EEdGpBhARqIgMgAygCAEEBajYCAAsgAwuIEwIPfwp+IwFBEGsiDSQBAkACQAJAAkACQCAAKAIIIgJBAmpBBEsNACABKAIIIgNBfkgNACADQQJKDQAgACAAKAIAQQFqNgIAIAEgASgCAEEBajYCAAwBCwJAAkACfyACQQBIBEAgAkEBakECTQRAQgAgADUCDCACrH59EMINDAILIAAQmg0iAw0CQQAhAQwHCyO5ASAAKAIERgRAIAAgACgCAEEBajYCACAAIQMMAwsgABCaDQsiAw0BQQAhAQwFCyADQQAgACgCCGs2AggLAkACQAJ/IAEoAggiAkEASARAIAJBAWpBAk0EQEIAIAE1AgwgAqx+fRDCDQwCCyABEJoNIgRFDQIgBEEAIAEoAghrIgI2AggMAwsjuQEgASgCBEYEQCABIAEoAgBBAWo2AgAgASEEDAMLIAEQmg0LIgRFDQAgBCgCCCECDAELIAMgAygCAEEBayIANgIAQQAhASAADQQgAxDVEAwECwJAIAMoAggiBiACayIBBH8gAQUgBiAGQR91IgFzIAFrIQEDQAJAIAFBAWsiAUEASARAQQAhAAwBCyADIAFBAnQiAGooAgwgACAEaigCDGsiAEUNAQsLQQAgAGsgACAGQQBIGwtBAE4EQCACIQsgBiECIAQhBSADIQQMAQsgDSADNgIMIAYhCyADIQULIAJBA0gEQCAFIQEgBCEADAELIAUoAgghBiACIQ4DQCAEIQMgBSEBAkACQANAIAEhACALIQwgBkUEQAJAIAIgDk4EQCADIQEMAQsgAxCaDSEBIAMgAygCAEEBayICNgIAIAINACADENUQCyAAIAAoAgBBAWsiAjYCACACRQRAIAAQ1RALAkAgCkUNACAKIAooAgBBAWsiADYCACAADQAgChDVEAsgCEUNCCAIIAgoAgBBAWsiADYCACAARQ0HDAgLQR5BICADIAJBAWsiBUECdCIPaigCDCIEZ2tBACAEGyIBayEQIAJBA2tBAnQhC0EAIQcgAkECayIJIAZMBEAgACALaigCDCABdiEHCyAJQQJ0IQkgEK0hE0IAIRJCACER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BQuOAQEBfwJ/IAICfyAAEKINIgNBAE4EQCABIANBHm4iADYCACADIABBHmxrDAELEL0aIABBHiACENUNIgBFBEBBfw8LIAEgABCiDTYCACAAIAAoAgBBAWsiAzYCACADRQRAIAAQ1RALQQAgASgCAEH/////AUkNARoQvRogAUH/////ATYCAEEACzYCAEEACwtBAQF/IAAoAggiAUEBakECTQRAQgAgADUCDCABrH59EMINDwsgABCaDSIBRQRAQQAPCyABQQAgACgCCGs2AgggAQs6AAJAIAAoAgQtAFdBAXEEQCABKAIELQBXQQFxDQELI7oBIgAgACgCAEEBajYCACAADwsgACABEMUNCzoAAkAgACgCBC0AV0EBcQRAIAEoAgQtAFdBAXENAQsjugEiACAAKAIAQQFqNgIAIAAPCyAAIAEQwQ0LNwECfyMBQRBrIgEkASAAIAFBDGpBAEEAQQAQuA0hACABKAIMIQIgAUEQaiQBIAJBACAAQX9HGwurAQEDfwJAAkACQAJAIAAoAggiAkEBag4DAAMBAgtBfkEAIAAoAgwiAWsgAUEBRhsPCyAAKAIMDwsgAiACQR91IgFzIAFrIQNBACEBA0AgACADQQFrIgNBAnRqKAIMIAFBHnRBgICAgARxIAFBAXZyaiIBQf////8HayABIAFB/v///wdLGyEBIANBAEoNAAtBfkEAIAFrIAEgAkEASBsiASABQX5PGyECCyACC5UCAQN/An8jugEgACgCBC0AV0EBcUUNABojugEgASgCBC0AV0EBcUUNABoCQCAAIAFGBEAMAQsgACgCCCIFIAEoAghrIgMNACAFIAVBH3UiA3MgA2shAwNAAkAgA0EBayIDQQBIBEBBACEEDAELIAAgA0ECdCIEaigCDCABIARqKAIMayIERQ0BCwtBACAEayAEIAVBAEgbIQMLAkACQAJAAkACQAJAIAJBAWsOBQQAAQMFAgsjvAEjuwEgAxsMBQsjuwEjvAEgAxsMBAsjuwEjvAEgA0EASBsMAwsjuwEjvAEgA0EAShsMAgsjuwEjvAEgA0EATBsMAQsjuwEjvAEgA0EAThsLIgMgAygCAEEBajYCACADC6UBAQN/IwFBEGsiBSQBIAEoAgghAwJ/AkACQCACBEAgAUEMaiEBIAIoAgggA2ohBAwBCyABQQxqIQEgAyEE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ANBBoiAAIAJBAWsiAkECdGooAgy4oCETIANBAWoiAyAERw0ACwsgBUEDSQ0AIABBDGohAANAIBNEAAAAAAAA0EGiIAJBAnQgAGoiA0EEaygCALigRAAAAAAAANBBoiADQQhrKAIAuKBEAAAAAAAA0EGiIAAgAkEDayIDQQJ0aigCALigRAAAAAAAANBBoiAAIAJBBGsiAkECdGooAgC4oCETIANBAUsNAAsLIAEgBkEBayICQQJ0aigCDLghFAJAIAJBAEwNACAGQQJrIQYgAkEDcSIDBEBBACEAA0AgFEQAAAAAAADQQaIgASACQQFrIgJBAnRqKAIMuKAhFCAAQQFqIgAgA0cNAAsLIAZBA0kNACABQQxqIQADQCAURAAAAAAAANBBoiACQQJ0IABqIgFBBGsoAgC4oEQAAAAAAADQQaIgAUEIaygCALigRAAAAAAAANBBoiAAIAJBA2siAUECdGooAgC4oEQAAAAAAADQQaIgACACQQRrIgJBAnRqKAIAuKAhFCABQQFLDQALCyATIBSjDAELIAMgBmsiAkHDiJEiSg0CIAJBvffuXUgNASACQR5sQSAgAEEMaiIEIANBAWsiB0ECdGooAgAiBWdrQQAgBRtqIAZBAnQgAWooAggiAmdBYHJBACACG2oiAkGACEoNAiACQc13SA0BQYN4IAIgAkGDeEwbIgxBN2shCgJAIAxBN0wEQEH+////B0E3IAxrIgBB//8DcUEebiICayADTARAI8ABKAIAIwBBqY8FahC0GgwGCyACIANqIg1BAWoQmQ0iCUUNBSAAQf//A3FBHk8EQCAJQQxqQQBBASACIAJBAU0bQQJ0ENA+GgtBACEFIAkgDUECdGogA0EASgR/IAkgAkECdGpBDGohBSADQQFxIQ4gAEH//wNxQR5wrSERAkAgB0UEQEEAIQIMAQsgA0F+cSEHQQAhAkEAIQMDQCAFIAJBAnQiAGogEEL/////D4MgACAEajUCACARhoQiEKdB/////wNxNgIAIAUgAEEEciIAaiAQQh6IQv////8PgyAAIARqNQIAIBGGhCIQp0H/////A3E2AgAgEEIeiCEQIAJBAmohAiADQQJqIgMgB0cNAAsLIA4EfiAFIAJBAnQiAmogEEL/////D4MgAiAEajUCACARhoQiEKdB/////wNxNgIAIBBCHogFIBAL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KAIERw0JIAMoAgxBf0YNCiAIDQEgASgCBA0CIABBACMAIgJBts0NaiACQaKmCWpBtQQgAkGDHWoQlxAACyAIRQ0BCyABKAIEDQkLIAJBAWoiAiAERw0ACwsgCEUNACAHQR5KDQdBACECIAdBAEwNAEEAIQMDQEEBIAggAmtBA2ssAAAiBHQiASADcQ0JIAggBEECdGooAgBFDQogASADciEDIAJBAWoiAiAHRw0ACwtBAQ8LIABBACMAIgJB9b4LaiACQaKmCWpBoAQgAkGDHWoQlxAACyAAQQAjACICQbbNDWogAkGipglqQaEEIAJBgx1qEJcQAAsgAEEAIwAiAkGQ7QVqIAJBoqYJakGlBCACQYMdahCXEAALIABBACMAIgJBkqENaiACQaKmCWpBsQQgAkGDHWoQlxAACyAAQQAjACICQf++C2ogAkGipglqQbMEIAJBgx1qEJcQAAsgAEEAIwAiAkGzzA1qIAJBoqYJakG6BCACQYMdahCXEAALIABBACMAIgJB0sQLaiACQaKmCWpBwAQgAkGDHWoQlxAACyAAQQAjACICQd/LC2ogAkGipglqQcUEIAJBgx1qEJcQAAsgAEEAIwAiAkGHzg1qIAJBoqYJakHHBCACQYMdahCXEAALIABBACMAIgJB0sQLaiACQaKmCWpBjwQgAkGDHWoQlxAACyAAQQAjACICQZOGCmogAkGipglqQY4EIAJBgx1qEJcQAAsgAEEAIwAiAkG0hgpqIAJBoqYJakGKBCACQYMdahCXEAALIABBACMAIgJBoM0HaiACQaKmCWpBhgQgAkGDHWoQlxAACyAAQQAjACICQc7NB2ogAkGipglqQYUEIAJBgx1qEJcQAAsgAEEAIwAiAkGEzgdqIAJBoqYJakGEBCACQYMdahCXEAALIABBACMAIgJBts4HaiACQaKmCWpBgwQgAkGDHWoQlxAACyAAQQAjACICQdrPDWogAkGipglqQfwDIAJBgx1qEJcQAAuuAQICfwF+IwBBgOSpAWoiACAAKAIAQQFqNgIAAkAjsAEoAugCKAIIIgBBuBVqKAIAIgEEQCAAIAFBAWsiATYCuBUgACABQQJ0akH4EmooAgAiABCkEAwBCyPLARDCICIADQAjAEGA5KkBahCADkEADwsgAEEANgIcIABBADYCCCAAIwAiAUGA5KkBajYC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CwtBACEDIAYNAgsjuwEjvAEgAyACQQJGRhsLIgMgAygCAEEBajYCAAsgCEEQaiQBIAMLeQECfyMBQRBrIgQkASAEQQA2AgwgBCAEQQxqNgIAAkAgASMAQeyTAWpBAEEBIAQQjRtFBEBBfyEDDAELIAQoAgwiAQRAIAAgARC4DiEDCyACRQ0AIAMNAEF/IQMgAhCJG0UNACAAIAJBARCkDiEDCyAEQRBqJAEgAwuEAQEDfyMBQRBrIgIkAQJ/I8sBIAEoAgRGBEAgACABQQEQpA4MAQtBfyABI7ABQaSaAWogAkEMahCsEEEASA0AGiACKAIMIgMEQCADIAMoAgBBAWsiBDYCACAERQRAIAMQ1RALIAAgAUEBEKQODAELIAAgAUEBEKEOCyEBIAJBEGokASABC7gBAgJ/AX4CQCAAQQAgACgCmAERAAAiAUUNACABQQA2AggjACICQaj07AFqIgMgAykDAEIBfCIFNwMAIAEgBTcDECACQYDkqQFqIgIgAigCAEEBajYCACABQQA2AhwgASACNgIYIAAjywFGDQAgAUEIayIAKAIADQAjsAEoAugCKAIIKAKsAyICKAIEIgMgADYCACABQQRrIgQgAyAEKAIAQQNxcjYCACAAIAI2AgAgAiAANgIECyABC8cDAgR/AX4CQCACQf////8HcSIFQQJPBEAjAEHskwFqIAVBAEEBEIwbRQ0BCyAAQQAgACgCmAERAAAiAkUNACACQQA2AggjACIEQaj07AFqIgYgBikDAEIBfCIINwMAIAIgCDcDECAEQYDkqQFqIgQgBCgCAEEBajYCACACQQA2AhwgAiAENgIYAkAgACPLAUYNACACQQhrIgAoAgANACOwASgC6AIoAggoAqwDIgQoAgQiBiAANgIAIAJBBGsiByAGIAcoAgBBA3FyNgIAIAAgBDYCACAEIAA2AgQLAkAgBUEBRgRAIAIgASgCABC4DkEASARAIAIgAigCAEEBayIANgIAQQAhBCAARQ0CDAMLIAFBBGohAQsgA0UEQCACDwsgAygCCEEATARAIAIPC0EAIQQCQANAIAIoAgQtAFdBIHFFBEAjAEGipglqQesOENUaDAILIAEgBEECdCIFaigCACEAIAMgBWooAgwiBSAFKAIAQQFqNgIAIAAgACgCAEEBajYCACACIAUgABCMDkEASA0BIARB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BEEAIQMMAwsgACECCyADKAIAIgBFDQAgACAAKAIAQQFrIgE2AgAgAQ0AIAAQ1RALAkAgAygCBCIARQ0AIAAgACgCAEEBayIBNgIAIAENACAAENUQCyADKAIIEP0QIAMQ/RBBACEDCyAFIAUoAgBBAWsiADYCACAARQRAIAUQ1RALAkAgBEUNACAEIAQoAgBBAWsiBTYCACAFDQAgBBDVEAsgAkUNACACIAIoAgBBAWsiBDYCACAEDQAgAhDVEAsgAwsqAQF/QX8hAAJAI/YBKAIAELgaDQAj3QEoAgAQuBoNABC9GkEAIQALIAALiAUAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACQT9rDjMFEhIAEhISEhIGBxISCBIMEhAKEhISEhISEhISEhISEhESEgEPDhINEgIDEhIEEgsSEgkSCyAALQAAIAEtAABGDwsgAC0AACABLQAARg8LIAAvAAAgAS8AAEYPCyAAKAAAIAEoAABGDwsgACgAACABKAAARg8LIAEtAAAgAC0AAHNBAXFFDwsgAC8AACABLwAARg8LIAAoAAAgASgAAEYPCyAAKAAAIAEoAABGDwsgACkAACABKQAAUQ8LIAApAAAgASkAAFEPCyAAKAAAIAEoAABGDwsgACgAACABKAAARg8LIAAqAAAgASoAAFsPCyAAKwAAIAErAABhDwsgAC0AACABLQAARg8LIAAoAAAgASgAAEYPCyADKAIIIAAgAygCDBDOPhogAygCACADKAIEEJQIIgJFDQECQCACKAIIQQFHBEAgAiEADAELIAIoAgwiACAAKAIAQQFqNgIAIAIgAigCAEEBayIDNgIAIAMNACACENUQCyAEKAIIIAEgBCgCDBDOPhogBCgCACAEKAIEEJQIIgJFDQICQCACKAIIQQFHBEAgAiEBDAELIAIoAgwiASABKAIAQQFqNgIAIAIgAigCAEEBayIDNgIAIAMNACACENUQCyAAIAFBAhCwECECIAAgACgCAEEBayIDNgIAIANFBEAgABDVEAsgASABKAIAQQFrIgA2AgAgAA0DDAQLI74BKAIAIwBBx/oGahC0GgtBfyECDAELQX8hAiAAIAAoAgBBAWsiAzYCACAAIQEgA0UNAQsgAg8LIAEQ1RAgAgvwAgEIf0EBIQwgAygC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AE4bIQELIANBEGokASABC7ECAQV/IwFBIGsiAyQBAkAQsjANACAARQRAIwBBspwLahCPFCEBDAELIAAoAgQiASgCLCIERQRAIAEoAgwhASADIAA2AgQgAyABNgIAIwBB+5ALaiADEKQUIQEMAQsjsAEoAugCIgIgAigCFCIFQQFrNgIUQQAhASAAIAVBAEwEfyACIwBByp4BahDjGA0BIAAoAgQoAiwFIAQLEQEAIQAgAiACKAIUQQFqNgIUIABFDQAgACgCBCIELQBXQRBxRQRAIAMgBCgCDDYCECACI7UBKAIAIwBBufsMaiADQRBqEKsaGiAAIAAoAgBBAWsiAjYCACACDQEgACAAKAIEKAIYEQMADAELIAAtABBBgAFxBEAgACEBDAELIABBACAAEIIUQQBOGyEBCyADQSBqJAEgAQsDAAELiAEBA38CQCAAEKcQIgBFDQAgAC0AEEHAAHEEQCAADwsgACMAQdSbCGoQyxQhASAAIAAoAgBBAWsiAzYCACADRQRAIAAgACgCBCgCGBEDAAsgAUUNACABQRBqIAEoAghBABCxFCECIAEgASgCAEEBayIANgIAIAANACABIAEoAgQoAhgRAwALIAILwwIBA38jAUEQayIDJAECQCAARQRAIwBBspwLahCuByEBDAELI7YBIAAoAgRGBEAgACAAKAIAQQFqNgIAIAAhAQwBCyAAI7ABQbTgAGoQuhIiAQRAI7ABKALoAiECAn8CQCABKAIEIgAtAFVBCHEEQCABIAAoAhxqKAAAIgANAQsgAiABQQBBAEEAEIgIDAELIAIgASABQQBBAEEAIAARBABBABCGCAshACABIAEoAgBBAWsiAjYCACACRQRAIAEgASgCBCgCGBEDAAtBACEBIABFDQEgACgCBCICLQBXQQhxBEAgACEBDAILIAMgAigCDDYCACO1ASgCACMAQbb6DGogAxCuGhogACAAKAIAQQFrIgI2AgAgAg0BIAAgACgCBCgCGBEDAAwBC0EAIQEQtRoNACAAEMcHIQELIANBEGokASABC+oDAQZ/IwFBIGsiAyQBIAAjsAFB1PkAaiADQRxqEKwQIQECQCADKAIcIgRFBEAgAUEASA0BIAAQphAhAgwBCyAAI7ABQZD0AGogA0EYahCsECEBAn8CQAJAIAMoAhgiAEUNACAAI7IBRg0AIAAj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CDcCCA8LIAEjAEGskqoBaiIAKQIANwIAIAEgACgCEDYCECABIAApAgg3AggPCyABIwBBwJKqAWoiACkCADcCACABIAAoAhA2AhAgASAAKQIINwIIDwsgAUIANwIAIAFBADYCECABQgA3AggLIAEBfyAAIwBB2JOqAWoiASkCADcCACAAIAEoAgg2AggLHQEBfyMAQdiTqgFqIgIoAgAgACABIAIoAggRBwALIAEBfyMAQdiTqgFqIgEgACkCADcCACABIAAoAgg2AggLJgEBfyAAQQBOBH8jAEGYkqoBaiIBKAIAIAAgASgCBBEAAAUgAQsLNgEBfwJ/IAEEQEEAQf////8HIAFuIABJDQEaCyMAQZiSqgFqIgIoAgAgACABIAIoAggRAgALCygBAX8gAUEATgR/IwBBmJKqAWoiAigCACAAIAEgAigCDBECAAUgAgsLGwEBfyMAQZiSqgFqIgEoAgAgACABKAIQEQUACyYBAX8gAEEATgR/IwBBrJKqAWoiASgCACAAIAEoAgQRAAAFIAELCzYBAX8CfyABBEBBAEH/////ByABbiAASQ0BGgsjAEGskqoBaiICKAIAIAAgASACKAIIEQIACwsoAQF/IAFBAE4EfyMAQaySqgFqIgIoAgAgACABIAIoAgwRAgAFIAILCxsBAX8jAEGskqoBaiIBKAIAIAAgASgCEBEFAAtIAQN/AkAgABCzRiIBQf7///8BSw0AIwBBmJKqAWoiAigCACABQQJ0QQRqIgEgAigCBBEAACICRQ0AIAIgACABEM4+IQMLIAMLPwEDfwJAIAAQ/URBAWoiA0EASA0AIwBBmJKqAWoiASgCACADIAEoAgQRAAAiAUUNACABIAAgAxDOPiECCyACCz8BA38CQCAAEP1EQQFqIgNBAEgNACMAQaySqgFqIgEoAgAgAyABKAIEEQAAIgFFDQAgASAAIAMQzj4hAgsgAgsmAQF/IABBAE4EfyMAQcCSqgFqIgEoAgAgACABKAIEEQAABSABCws2AQF/An8gAQRAQQBB/////wcgAW4gAEkNARoLIwBBwJKqAWoiAigCACAAIAEgAigCCBECAAsLKAEBfyABQQBOBH8jAEHAkqoBaiICKAIAIAAgASACKAIMEQIABSACCwsbAQF/IwBBwJKqAWoiASgCACAAIAEoAhARBQALBABBAAvS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IQAgAUEQaiQBIAALKgAgABC/ICAAKAI0BEAgABDFFgsgAEEIahDEBSAAIAAoAgQoAqABEQMACwwAIABBCGoQxAVBAAusAQECfyMBQSBrIgMkASADIwAiBEGwlqoBaikDADcDECADIANBHGo2AgACQCABIAIgBEHNigRqIANBEGogAxD9GkUEQEEAIQIMAQtBACECIABBACAAKAKYAREAACIARQ0AIABBADYCNCAAQQA2AgwgAygCHCAAQQhqQZwCEMcFQQBOBEAgACECDAELIAAgACgCAEEBayIBNgIAIAENACAAENUQCyADQSBqJAEgAgspACAAKAIMIgBFBEAjtwEoAgAjAEH6mgFqELQaQX8PCyAAIAEgAhDHBQsDAAELkQEAIAAoAgxFBEAjtwEoAgAjAEH6mgFqELQaQQAPCwJAIAAoAixFBEAgAEEIakHBABDIBQ0BCyPfASgCACMAQYaIBGoQtBpBAA8LIAAQpw8iAEUEQEEADwsgAEEGNgIUIABBATYCMCAAIwBBlIILajYCNCAAIABBKGoiATYCPCAAIABBJGo2AjggAUEBNgIAIAALHAAgAEEIahDEBSOyASIAIAAoAgBBAWo2AgAgAAuFAQECfyAAKAIIIgEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgACgCDCIBIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIAAoAhAiASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAKAIUIgEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgABCEEQt/AgJ/AX4jAUEgayIBJAECQAJAAkACQCAAKAIQQQAQugVBAWoOAwECAAILIAEgACkCCDcDECMAQaDCDWogAUEQahCkFCECDAILELUaDQELIAApAgghAyABIAAoAhA2AgggASADNwMAIwBBrsINaiABEKQUIQILIAFBIGokASACC+wBAQJ/QQMQkxIiAkUEQEF/DwsgACgCFCIBIAEoAgBBAWo2AgAgAiABNgIMAkACQAJAAkAgACgCFBDGECIBQQFqDgMDAQABCyOyASIAIAAoAgBBAmo2AgAgAiAANgIQDAELIAAoAggiASABKAIAQQFqNgIAIAIgATYCEAJAAkAgACgCFCOwAUGUBGpBAhCwECIBQQFqDgMDAQABCyOyASIAIAAoAgBBAWo2AgAMAQsgACgCECIAIAAoAgBBAWo2AgALIAIgADYCFCACELMQIQELIAIgAigCAEEBayIANgIAIABFBEAgAhDVEAsgAQv7AQEBfyOkAyABKAIERwRAI7oBIgEgASgCAEEBajYCACABDwsCQCACQQVNBEBBASEDQQEgAnRBM3FFBEAgACABRwRAAkAgACgCFCABKAIUQQIQsBAiA0EBRw0AIAAoAhQQxhAiAw0AIAAoAgggASgCCEECELAQIgNBAUcNACAAKAIUI7ABQZQEakECELAQIgMNACAAKAIQIAEoAhBBAhCwECEDCyADQX9GDQMLIANFIAMgAkEDRhsEQCO7ASIBIAEoAgBBAWo2AgAgAQ8LI7wBIgEgASgCAEEBajYCACABDwsjugEiASABKAIAQQFqNgIAIAEPCxDMGhoLQQALhAMBBn8CQAJAAn8CQAJAIAAoAggQoA0iAUF/RgRAELUaDQELIAAoAgwQoA0iA0F/RgRAELUaDQELIAAoAhAQoA0iAkF/RgRAELUaDQEMAgsgAkEASiEEIAEgA04NAUEBIQYgAkEATA0BIAMgAUF/c2ogAm4MAgsQvRoMAwsgASADTA0BIAJBAE4NASAEIQYgASADQX9zakEAIAJrbgshBCAEQQFqIgRBAEgNASAERQ0AIAYEQCAEIQUgA0GAgICAeCACa0wNAQwCCyAEIQUgAyACQf////8Hc0gNAQsjxAQQoBAiAEUEQEEADwsgACAFNgIUIAAgAjYCECAAIAE2AgwgAEEANgIIIAAPCyPDBBCgECIBRQRAQQAPCyABIAAoAggiAjYCDCABIAAoAhAiAzYCECAAKAIUIQAgASOwAUGEBGoiBTYCCCABIAA2AhQgAiACKAIAQQFqNgIAIAMgAygCAEEBajYCACAAIAAoAgBBAWo2AgAgBSAFKAIAQQFqNgIAIAELKgACQCACRQ0AIwBBx+gHaiACEI8bDQBBAA8LIAAgAUEMaiABKAIIEJoRC7YDAQN/IwFBEGsiBSQBAkACQAJAAkACQAJAAkACQCACDgQEAgEABQsgASgCCCEDCyABKAIAEPgFIgJFDQQgASgCBBD4BSIBRQRAIAIgAigCAEEBayIBNgIAIAENBiACENUQDAULAkAgAwRAIAMQ+AUiA0UNASADEKYNDQMjtwEoAgAjAEG1tARqELQaIAMgAygCAEEBayIANgIAIAANASADENUQDAELQQEQmw0iAw0CCyACIAIoAgBBAWsiAzYCACADRQRAIAIQ1RALIAEgASgCAEEBayICNgIAIAINBSABENUQDAQLIAEoAgAQ+AUiAUUNAyOwASIEQYQEaiICIAIoAgBBAWo2AgAgBEGUBGoiAyADKAIAQQFqNgIACyAAIAIgASADEKYRIgQNAyACIAIoAgBBAWsiBDYCACAERQRAIAIQ1RALIAEgASgCAEEBayIENgIAIARFBEAgARDVEAsgAyADKAIAQQFrIgQ2AgAgBA0CIAMQ1RAMAgsjtQEoAgAjAEGhxgtqELQaDAELIAUgAjYCACO1ASgCACMAQdSfCGogBRCuGhoLQQAhBAsgBUEQaiQBIAQLKwACQCADRQ0AIwBBx+gHaiADEJEbDQBBAA8LIAAgASACQf////8HcRCaEQsyAQJ/IAAoAggiASAAKAIUSAR/IAAgAUEBajYCCCAAKAIMIAAoAhAgAWxqEJsNBSACCwudAQECfwJAIAAoAggiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIMIgFFDQAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCECIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhQiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgABCEEQvMAQEEfwJAIAAoAgggACgCFEEAELAQQQFHDQAgACgCCCOwAUGUBGoQ2wUiAkUNAAJAIAAoAgggACgCEBDcBSIBRQRAIAIgAigCAEEBayIANgIAIABFDQEMAgsgACgCDCABENsFIQMgASABKAIAQQFrIgQ2AgAgBEUEQCABENUQCyADBEAgACgCCCEBIAAgAjYCCCABIAEoAgBBAWsiADYCACABIQIgAEUNAQwCCyACIAIoAgBBAWsiADYCAEEAIQMgAA0BCyACENUQCyADCwoAIAAoAhQQsRALCgAgACgCFBCiDQs3AQF/IAEQrg0iAUUEQEEADwsgACABEKIRIQAgASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAC7YCAQJ/AkACQAJAAkAgASOwAUGEBGpBABCwEEEBag4DAwEAAQsgACgCFCABENsFIgENAQwCCyABIAEoAgBBAWo2AgALAkAC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KCADIAIpAiA3AyAgAyACKQIYNwMYIAMgAikCEDcDECADIAIpAgA3AwAgAyACKQIINwMIIAIhASADIQQLIAFCADcCACABQgA3AjggAUIANwIwIAFCADcCKCABQgA3AiAgAUIANwIYIAFCADcCECABQgA3AgggAEF/NgIYIAAgATYCFCAAQQc2AhAgAEIANwIICyAFQQBKBEAgBCEBA0ACQCABKAIAIgBFDQAgACMAQayrqgFqRg0AIAAgACgCAEEBayIHNgIAIAVBAWshBSAHDQAgABDVEAsgAUEIaiEBIAVBAEoNAAsLIAIgBkcEQCAEEP0QCyADQUBrJAFBAAuAAwEBfwJAIAEoAgQiAyPNAUYNACADI8oBRg0AIAMjzQEQuRINACABKAIEI8oBELkSDQAjugEiASABKAIAQQFqNgIAIAEPCwJAAkACQAJAAkACQAJAAkAgAg4GBAIAAQUDBgsgACgCDCABKAIMRwRAI7wBIgEgASgCAEEBajYCACABDwsCQCAAKAIYIgNBf0YNACABKAIYIgJBf0YNACACIANGDQAjvAEiASABKAIAQQFqNgIAIAEPCyAAIAEQtxEPCyAAIAFBAhC2ESIBRQRAQQAPCyABELEQIQMgASABKAIAQQFrIgA2AgAgAEUEQCABENUQC0EAIQEgA0EASA0FIANFEK4GDwsgACABELcRDwsgACABELgRDwsgACgCDCABKAIMTgRAI7wBIgEgASgCAEEBajYCACABDwsgACABELcRDwsgACgCDCABKAIMTARAI7wBIgEgASgCAEEBajYCACABDwsgACABELgRDwsjugEiASABKAIAQQFqNgIACyABC60DAQR/AkACQAJAIAEoAgQiAiPNAUYNACACI8oBRg0AIAIjzQEQuRINACABKAIEI8oBELkSDQAjzQEiAkEAIAIoApgBEQAAIgJFDQEgAkEANgJgIAJC/////w83AhggAkEHNgIQIAJCADcCCCACIAJBIGo2AhQgAiABELsRBEAgAiACKAIAQQFrIgQ2AgAgBA0CIAIQ1RBBAA8LIAAgAhC3ESEDIAIgAigCAEEBayIENgIAIAQNASACENUQIAMPCyAAKAIMIAEoAgxKDQFBACECA0ACQCAAKAIQIgUgAk4EQCAAKAIUIAJBA3RqIQQDQCACQQFqIQIgBCgCACIDQQAgAyMA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AgNAIAMoAgAiAQRAIAEgASgCAEEBajYCACAFIAE2AgAgBSADKAIENgIECyADKAIIIgEEQCABIAEoAgBBAWo2AgAgBSABNgIIIAUgAygCDDYCDAsgA0EQaiEDIAVBEGohBSACQQJqIgIgBkcNAAsLIAlFDQAgAygCACIBRQ0AIAEgASgCAEEBajYCACAFIAE2AgAgBSADKAIENgIECyAAIAg2AgwgACAINgIIDAELIAAgATYCDCAAIAE2AgggAkH+////B0sEQEEAIQQMAQsgBUEIaiEKIAJBAWohAQNAIAEhCAJAIAMoAgAiBEUNACAEIwBBrKuqAWpGDQAgBCAEKAIAQQFqNgIAIAMoAgQiCSEAAkAgBSAGIAlxIgJBA3RqIgEoAgBFDQADQCAGIAJBCWpPBEAgCiACQQN0aiIBKAIARQ0CIAFBCGoiASgCAEUNAiABQQhqIgEoAgBFDQIgAUEIaiIBKAIARQ0CIAFBCGoiASgCAEUNAiABQQhqIgEoAgBFDQIgAUEIaiIBKAIARQ0CIAFBCGoiASgCAEUNAiABQQhqIgEoAgBFDQILIAUgAEEFdiIAIAJBBWxqQQFqIAZxIgJBA3RqIgEoAgANAAsLIAEgCTYCBCABIAQ2AgALIANBCGohAyAIQQFrIQEgCEEBSg0AC0EAIQQLIAdBEGokASAEC0AAIABBACAAKAKYAREAACIABEAgAEEANgJgIABC/////w83AhggAEEHNgIQIABCADcCCCAAIABBIGo2AhQLIAALkQIAAkAgA0UNACMAQZiNAWogAxCRGw0AQQAPCwJAAkACQCACQf////8HcSIDQQJPBEBBACECIwBBmI0BaiADQQBBARCMGw0BDAMLIANFDQELIAEoAgAhAUEAIQIgAEEAIAAoApgBEQAAIgNFDQEgA0EANgJgIANC/////w83AhggA0EHNgIQIANCADcCCCADIANBIGo2AhQgAUUEQCADDwsgAyABELsRRQRAIAMPCyADIAMoAgBBAWsiADYCACAADQEgAxDVEEEADwtBACECIABBACAAKAKYAREAACIDRQ0AIANBADYCYCADQv////8PNwIYIANBBzYCECADQgA3AgggAyADQSBqNgIUIAMhAgsgAgvQAQEEfyAAKAIYIgFBf0YEQCAAKAIUIgEgASAAKAIQIgNBA3RqIgRNBEAD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ASACRQ0CDAMLIAUgBSgCAEEBayICNgIAIAJFBEAgBRDVEAsgAyADKAIAQQFrIgI2AgAgAkUEQCADENUQCyABIAEoAgBBAWsiAjYCAEEAIQQgAg0CDAELIAMgAygCAEEBayICNgIAIAMhASACDQELIAEQ1RALIAQLgAEBAX8CQAJAAkAgACgCBCICI80BRg0AIAIjygFGDQAgAiPNARC5Eg0AIAAoAgQjygEQuRJFDQELIAEoAgQiAiPNAUYNASACI8oBRg0BIAIjzQEQuRINASABKAIEI8oBELkSDQELI7oBIgAgACgCAEEBajYCACAADwsgACABENcRC+UBAQJ/AkAgACgCBCICI80BRg0AIAIjygFGDQAjzQEiAyPKASACIAMQuRIbIQILQQAhAwJAIAJBACACKAKYAREAACICRQ0AIAJBADYCYCACQv////8PNwIYIAJBBzYCECACQgA3AgggAiACQSBqNgIUAkACQCABRQ0AIAIgARC7EUUNACACIAIoAgBBAWsiATYCACACIQAgAUUNAQwCCyACIAAQ3hEiAEUEQCACIAIoAgBBAWsiATYCACACIQAgAUUNAQwCCyAAIAAoAgBBAWsiATYCACACIQMgAQ0BCyAAENUQCyADC7wCAQJ/AkACQAJAIAAoAgQiAiPNAUYNACACI8oBRg0AIAIjzQEQuRINACAAKAIEI8oBELkSRQ0BCyABKAIEIgIjzQFGDQEgAiPKAUYNASACI80BELkSDQEgASgCBCPKARC5Eg0BCyO6ASICIAIoAgBBAWo2AgAgAg8LAkAgACgCBCICI80BRg0AIAIjygFGDQAjzQEiAyPKASACIAMQuRIbIQILQQAhAwJAIAJBACACKAKYAREAACICRQ0AIAJBADYCYCACQv////8PNwIYIAJBBzYCECACQgA3AgggAiACQSBqNgIUAkAgAiAAELsRBEAgAiACKAIAQQFrIgA2AgAgAEUNAQwCCyAAIAFGBEAgAg8LIAIgARC7EUUEQCACDwsgAiACKAIAQQFrIgA2AgAgAA0BCyACENUQCyADC1wBAX8CfwJAAkAgASgCBCICI80BRg0AIAIjygFGDQAgAiPNARC5Eg0AI7oBIQIgASgCBCPKARC5EkUNAQtBACAAIgIgARDaEQ0BGgsgAiACKAIAQQFqNgIAIAILC84IAQd/IwFBQGoiBiQBAkAgACABRgRAIAAoAgwhBCAAQSBqIgghAiAAKAIUIgEhBwJAIAEgCEYEQCAAKAIIQQBMDQEgBiABKQI4NwM4IAYgASkCMDcDMCAGIAEpAig3AyggBiABKQIgNwMgIAYgASkCGDcDGCAGIAEpAhA3AxAgBiABKQIANwMAIAYgASkCCDcDCCABIQIgBiEHCyACQgA3AgAgAkIANwI4IAJCADcCMCACQgA3AiggAkIANwIgIAJCADcCGCACQgA3AhAgAkIANwIIIABBfzYCGCAAIAI2AhQgAEEHNgIQIABCADcCCAsgBEEASgRAIAchAgNAAkAgAigCACIDRQ0AIAMjAEGsq6oBakYNACADIAMoAgBBAWsiBTYCACAEQQFrIQQgBQ0AIAMQ1RALIAJBCGohAiAEQQBKDQALCyABIAhHBEAgBxD9EAtBACECDAELAkACQAJAAkAgASgCBCICI80BRg0AIAIjygFGDQAgAiPNARC5Eg0AIAEoAgQjygEQuRJFDQELAkAgACgCDCABKAIMQQN1SARAIAAgARDVESIBDQFBfyECDAULIAEgASgCAEEBajYCAAtBACECAkACQCABKAIQIgVBAEgNAANAIAEoAhQgAkEDdGohAwNAAkAgAkEBaiECIAMoAgAiBEEAIAQjAEGsq6oBakcbDQAgA0EIaiEDIAIgBUwNAQwDCwsgBCAEKAIAQQFqNgIAIAAgBCADKAIEEMcRIgNFDQICQCADKAIAIgVFDQAgA0F/NgIEIAMjAEGsq6oBajYCACAAIAAoAgxBAWs2AgwgBSAFKAIAQQFrIgM2AgAgAw0AIAUQ1RALIAQgBCgCAEEBayIDNgIAIANFBEAgBBDVEAsgAiABKAIQIgVMDQALCyABIAEoAgBBAWsiAjYCACACDQIgARDVEAwCC0F/IQIgASABKAIAQQFrIgM2AgAgA0UEQCABENUQCyAEIAQoAgBBAWsiAzYCACADDQMgBBDVEAwDCyABEIcGIgVFBEBBfyECDAMLIAUQiAYiAwRAA0ACQCOxASADKAIERgRAIAMoAgwiAkF/Rw0BCyADELMQIgJBf0YNBAsgACADIAIQxxEiAkUNAwJAIAIoAgAiBEUNACACQX82AgQgAiMAQayrqgFqNgIAIAAgACgCDEEBazYCDCAEIAQoAgBBAWsiAjYCACACDQAgBBDVEAsgAyADKAIAQQFrIgI2AgAgAkUEQCADENUQCyAFEIgGIgMNAAsLQX8hAiAFIAUoAgBBAWsiAzYCACADRQRAIAUQ1RALELUaDQILQQAhAiAAKAIIIAAoAgwiA2sgACgCEEECdk0NASAAIANBAUECIANB0IYDSht0EM8RIQIMAQtBfyECIAUgBSgCAEEBayIENgIAIARFBEAgBRDVEAsgAyADKAIAQQFrIgQ2AgAgBA0AIAMQ1RALIAZBQGskASACC5ABAQF/AkACQCABKAIEIgIjzQFGDQAgAiPKAUYNACACI80BELkSDQAjugEhAiABKAIEI8oBELkSRQ0BCyAAIAEQ1REiAUUEQEEADwsgACABENwRIAEgASgCAEEBayICNgIAIAJFBEAgARDVEAsjsgEoAgBFBEAjsgEQ1RALIAAhAgsgAiACKAIAQQFqNgIAIAILzAQBEX8jAUFAaiIDJAEgACgCCCECIAAgASgCCDYCCCABIAI2AgggACgCDCECIAAgASgCDDYCDCABIAI2AgwgACgCECECIAAgASgCEDYCECABIAI2AhAgACgCFCEFIAAgASgCFCIGNgIUIAAgAEEgaiICIAYgAUEgaiIEIAEoAhRGGzYCFCABIAQgBSACIAVGGyIFNgIUIAIgACgCFEcgBCAFR3FFBEAgA0E4aiIFIAJBOGoiBikCADcDACADQTBqIgwgAkEwaiIHKQIANwMAIANBKGoiDSACQShqIggpAgA3AwAgA0EgaiIOIAJBIGoiCSkCADcDACADQRhqIg8gAkEYaiIKKQIANwMAIANBEGoiECACQRBqIgspAgA3AwAgAyACKQIANwMAIAMgAkEIaiIRKQIANwMIIAYgBEE4aiISKQIANwIAIAcgBEEwaiIGKQIANwIAIAggBEEoaiIHKQIANwIAIAkgBEEgaiIIKQIANwIAIAogBEEYaiIJKQIANwIAIAsgBEEQaiIKKQIANwIAIBEgBEEIaiILKQIANwIAIAIgBCkCADcCACASIAUpAwA3AgAgBiAMKQMANwIAIAcgDSkDADcCACAIIA4pAwA3AgAgCSAPKQMANwIAIAogECkDADcCACALIAMpAwg3AgAgBCADKQMANwIACwJAAkAgACgCBCPKARC5EkUNACABKAIEI8oBELkSRQ0AIAAoAhghAiAAIAEoAhg2Ahgg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QSBrIgEkAQJAIAAQiQYiAkUEQEEAIQAMAQsgASACNgIQAkBBASABQRBqEJgSIgNFBEBBACEADAELIAAQ5xIiBAR/IAAoAgQhACABIAQ2AgggASADNgIEIAEgADYCAEEDIAEQmBIFQQALIQAgAyADKAIAQQFrIgU2AgAgBQ0AIAMQ1RALIAIgAigCAEEBayIDNgIAIANFBEAgAhDVEAsgBEUNACAEIAQoAgBBAWsiAjYCACACDQAgBBDVEAsgAUEgaiQBIAAL8wMBBH8CQAJAAkACQAJAAkAjsQEgASgCBEYEQCABKAIMIgJBf0cNAQsgARCzECICQX9GDQELIAAgASACEMcRIgJFDQAgAigCACIERQ0BIAJBfzYCBCACIwBBrKuqAWo2AgAgACAAKAIMQQFrNgIMIAQgBCgCAEEBayIBNgIAIAENBCAEENUQDAQLIAEoAgQiAiPNAUcEQCACI80BELkSRQ0CCyO1ASgCABC4GkUNARC9GiPKASICQQAgAigCmAERAAAiAkUNAiACQQA2AmAgAkL/////DzcCGCACQQc2AhAgAkIANwIIIAIgAkEgajYCFCACIAEQuxEEQCACIAIoAgBBAWsiATYCACABDQMgAhDVEEEADwsCfwJAAkAjsQEgAigCBEYEQCACKAIMIgNBf0cNAQsgAhCzECIDQX9GDQELIAAgAiADEMcRIgNFDQAgAygCACIFRQRAQQAhA0EBDAILIANBfzYCBCADIwBBrKuqAWo2AgAgACAAKAIMQQFrNgIMIAUgBSgCAEEBayIANgIAQQAhAyAARQRAIAUQ1RALQQAMAQtBASEDQQALIQUgAiACKAIAQQFrIgA2AgAgAEUEQCACENUQCyADDQIgBUUNAwsgARCwGgtBACEECyAEDwsjsgEiASABKAIAQQFqNgIAIAELLgAgACgCBCgCECEBIAAoAhQgAEEgakcEfyABIAAoAhBBA3RqQQhqBSABCxCuDQv9AQEEfwJAIAAoAgQiAyPNAUYNACADI8oBRg0AI80BIgIjygEgAyACELkSGyEDCwJAIANBACADKAKYAREAACICRQ0AIAJBADYCYCACQv////8PNwIYIAJBBzYCECACQgA3AgggAiACQSBqNgIUAkACQCACIAAQuxFFBEBBACEDIAEoAggiBEEASg0BIAIPCyACIAIoAgBBAWsiAzYCACADRQ0BDAILAkADQCAAIAEgA0ECdGooAgwiBUcEQCACIAUQuxENAiABKAIIIQQLIANBAWoiAyAESA0ACyACDwsgAiACKAIAQQFrIgM2AgBBACEEIAMNAQsgAhDVEAsgBAtOAQF/AkAgASgCCEEATA0AA0AgACABIAJBAnRqKAIMELsRRQRAIAJBAWoiAiABKAIISA0BDAILC0EADwsjsgEiAiACKAIAQQFqNgIAIAILqgEBAX8gACgCBCICI8oBRgRAIAAgACgCAEEBajYCACAADwsjzQEiASACRwRAI80BIgEjygEgAiABELkSGyEBC0EAIQICQCABQQAgASgCmAERAAAiAUUNACABQQA2AmAgAUL/////DzcCGCABQQc2AhAgAUIANwIIIAEgAUEgajYCFCABIAAQuxFFBEAgAQ8LIAEgASgCAEEBayIANgIAIAANACABENUQCyACCxYAIwAiAEHBnQlqIABByIsLahClHQALDAAjAEHViwtqEI8UCwwAIwBB7JQCahCPFAtAAAJAIAEoAghFBEAgAkUNASACKAIIRQ0BCyO1ASgCACMAQZXMAWoQtBpBAA8LI4gCIgEgASgCAEEBajYCACABC9IBAQN/I7IBIQMCQCOwASgC6AIoAggiBSgCkA8iBARAIAVBADYCkA8gBBCkEAwBCyPoARDCICIEDQBBAA8LIAIgAyACGyICIAIoAgBBAWo2AgAgBCACNgIQIAAgAyAAGyIAIAAoAgBBAWo2AgAgBCAANgIIIAEgAyABGyIDIAMoAgBBAWo2AgAgBCADNgIMI7ABKALoAigCCCgCrAMiASgCBCIAIARBCGsiAzYCACADIAE2AgAgA0EEaiICIAAgAigCAEEDcXI2AgAgASADNgIEIAQLsAIBBX8gABCuDSIARQRAQQAPCwJAAkAgARCuDSIDRQRAIAAgACgCAEEBayICNgIAQQAhASAAIQMgAkUNAQwCCwJAAkAjsAEoAugCKAIIIgIoApAPIgEEQCACQQA2ApAPIAEQpBAMAQsj6AEQwiAiAQ0AQQAhAQwBCyOyASICIAIoAgBBAWo2AgAgASACNgIQIAAgACgCAEEBajYCACABIAA2AgggAyADKAIAQQFqNgIAIAEgAzYCDCOwASgC6AIoAggoAqwDIgQoAgQiBSABQQhrIgI2AgAgAiAENgIA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IgMgBEcNAAsLIAIgARDEICIDRQRAIABBADYCACACEMUgQX8PCyADEKQQIAEgBEoEQCADIARBAnRqQQxqQQAgASAEa0ECdBDQPhoLIAAgAzYCACOwASgC6AIoAggoAqwDIgAoAgQiASADQQhrIgI2AgAgAiAANgIAIAJBBGoiAyABIAMoAgBBA3FyNgIAIAAgAjYCBAtBAA8LIABBADYCAAsjAEH8pwlqQZ8HENUaQX8LbAECfyAAKAIMIgFFBEBBAA8LIAAoAggiAiABKAIISARAIAEgAkECdGooAgwhASAAIAJBAWo2AgggASABKAIAQQFqNgIAIAEPCyAAQQA2AgwgASABKAIAQQFrIgA2AgAgAEUEQCABENUQC0EAC38BBH8jAUGQAWsiASQBI7ABKALoAigCCCEEA0AgASACQQFqIgM2AgAgAUEQakGAASMAQbavAWogARDdHBogACABQRBqIAQgAkECdGpB5A9qKAIAI7QBIgIoAhAgAigCFCADbGpBA2pBfHEQhhEgAyICQRRHDQALIAFBkAFqJAELmgYBCX8jAUEQayIJJAEgASgCBCEDAkACQCAAKAIIIgINACADI7QBRw0AIAEgASgCAEEBajYCACABIQMMAQsCQAJAIAMtAFdBBHFFBEAgCSADKAIMNgIAI7UBKAIAIwBBv7QHaiAJEK4aGgwBCwJAIAEoAggiAw0AI7QBIAAoAgRHDQAgACAAKAIAQQFqNgIAIAAhAwwDCyACIANqIgJFBEAjsAFB5PIBaiIDIAMoAgBBAWo2AgAMAwsgAkEASARAIwBB/KcJakEkENUaDAELI7ABIQMCQAJAIAJBE00EQCADKALoAigCCCACQQFrQQJ0aiIEQZQPaiIFKAIAIgNFDQEgBSADKAIMNgIAIARB5A9qIgIgAigCAEEBazYCACADEKQQDAQLIAJB/P///wFLDQELI7QBIAIQwyAiAw0CDAELEM4aIgMNAQtBACEDDAELIANBDGohBQJAIAAoAggiB0EATA0AIABBDGohBkEAIQAgB0EBRwRAIAdBfnEhCgNAIAYgAEECdCICaigCACIEIAQoAgBBAWo2AgAgAiAFaiAENgIAIAYgAkEEciIEaigCACICIAIoAgBBAWo2AgAgBCAFaiACNgIAIABBAmohACAIQQJqIgggCkcNAAsLIAdBAXFFDQAg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IAU2AoABCwJAIAIoAnwNACADKAJ8IgVFDQAgBARAIAUgBCgCMCgCfEYNAQsgAiAFNgJ8CwJAIAIoAoQBDQAgAygChAEiBUUNACAEBEAgBSAEKAIwKAKEAUYNAQsgAiAFNgKEAQsCQCACKAKIAQ0AIAMoAogBIgVFDQAgBARAIAUgBCgCMCgCiAFGDQELIAIgBTYCiAELIAIoAowBDQAgAygCjAEiA0UNACAEBEAgAyAEKAIwKAKMAUYNAQsgAiADNgKMAQsCQCAAKAIoIgJFDQAgASgCKCIDRQ0AIAEoAoABIgRBACAEKAIoGyEEAkAgAigCAA0AIAMoAgAiBUUNACAEBEAgBSAEKAIoKAIARg0BCyACIAU2AgALAkAgAigCBA0AIAMoAgQiBUUNACAEBEAgBSAEKAIoKAIERg0BCyACIAU2AgQLIAIoAggNACADKAIIIgNFDQAgBARAIAMgBCgCKCgCCEYNAQsgAiADNgIICwJAIAAoAjQiAkUNACABKAI0IgNFDQAgASgCgAEiBEEAIAQoAjQbIQQCQCACKAIADQAgAygCACIFRQ0AIAQEQCAFIAQoAjQoAgBGDQELIAIgBTYCAAsCQCACKAIEDQAgAygCBCIFRQ0AIAQEQCAFIAQoAjQoAgRGDQELIAIgBTYCBAsCQCACKAIIDQAgAygCCCIFRQ0AIAQEQCAFIAQoAjQoAghGDQELIAIgBTYCCAsCQCACKAIMDQAgAygCDCIFRQ0AIAQEQCAFIAQoAjQoAgxGDQELIAIgBTYCDAsCQCACKAIUDQAgAygCFCIFRQ0AIAQEQCAFIAQoAjQoAhRGDQELIAIgBTYCFAsCQCACKAIcDQAgAygCHCIFRQ0AIAQEQCAFIAQoAjQoAhxGDQELIAIgBTYCHAsCQCACKAIgDQAgAygCICIFRQ0AIAQEQCAFIAQoAjQoAiBGDQELIAIgBTYCIAsgAigCJA0AIAMoAiQiA0UNACAEBEAgAyAEKAI0KAIkRg0BCyACIAM2AiQLAkAgACgCOCICRQ0AIAEoAjgiA0UNACABKAKAASIEQQAgBCgCOBshBAJAIAIoAgANACADKAIAIgVFDQAgBARAIAUgBCgCOCgCAEYNAQsgAiAFNgIACwJAIAIoAgQNACADKAIEIgVFDQAgBARAIAUgBCgCOCgCBEYNAQsgAiAFNgIECyAC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GyIBRQ0BCyACQQA2AgQgAiAANgIAIAEjACIDQcUmaiADQYjfBWogAhCcCCEDIAEgASgCAEEBayIANgIAIAANACABENUQCyACQRBqJAEgAwsUACO6ASIAIAAoAgBBAWo2AgAgAAuaAQEBfyMBQRBrIgIkAQJ/IAEoAgQtAFdBEHFFBEAjACIAQfzJCWogAEGY8ABqIABBn6oDaiABEPkaQQAMAQsCQCABLQAQQYABcQ0AIAEQghRBf0cNAEEADAELIAEoAghBAEoEQCACIAAoAgQoAgw2AgAjtQEoAgAjAEGryQlqIAIQrhoaQQAMAQsgABCmEAshASACQRBqJAEgAQsqAQF/IAAoAgQiASgCFCICQQBMBH9BAAUgACgCCCACbAsgASgCEGoQrg0LxAIBA38jAUEQayICJAFBACEBIAJBADYCDCACQQA2AggCQCAAI7ABQZjkAGogAkEMahCsEEEASA0AAkACQCACKAIMIgFFDQAgASgCBC0AV0EgcUUEQCABIAEoAgBBAWsiAzYCACADDQEgARDVEBD/DSEBDAILIAEQqQ4hASACKAIMIgMgAygCAEEBayIENgIAIAQNASADENUQDAELEP8NIQELIAIgATYCDAJ/QQAgAUUNABpBACAAI7ABQaThAGogAkEIahCsEEEASA0AGiACKAIIIgAEQEEAIAIoAgwgABCFE0EASA0BGgsgAigCDBCrDgshAQJAIAIoAggiAEUNACAAIAAoAgBBAWsiAzYCACADDQAgABDVEAsgAigCDCIARQ0AIAAgACgCAEEBayIDNgIAIAMNACAAENUQCyACQRBqJAEgAQsWACAAKAIEIgAgACgCAEEBajYCACAAC4sEAQV/IwFBIGsiBCQBAkAgAUUEQCO1ASgCACMAQfnfBmoQtBpBfyEGDAELIAEoAgQiAigCVEEATgRAIAQgAigCDDYCACO1ASgCACMAQbStAWogBBCuGhpBfyEGDAELIAAoAgQhAyAEIAE2AhggBCAANgIQIAQjACICQYLLCWo2AhRBfyEGIAJBmc4JaiACQcu0CmogBEEQahDqHkEASA0AAkACQAJAIAEoAqwBIgVFBEAgASECA0AgAiPUAUYNAiACKAKAASICDQALDAILQQAhAiAFKAIIIgdBAEwNAQNAI9QBIAUgAkECdGooAgxGDQEgByACQQFqIgJH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B0EAIQEgBkEATA0JA0AgACABai0AAEUNCiABQQFqIgEgBkcNAAsgBiEBDAkLIAIgAigC2AEiAUEEajYC2AEgASgCABCmECIBRQ0LIAJBsAFqIAEgAyAGEKEUIQMgASABKAIAQQFrIgA2AgAgA0F/RgRAIAANDCABENUQDAwLIAANByABENUQDAcLIAIgAigC2AEiAUEEajYC2AEgASgCABCnECIBRQ0KIAJBsAFqIAEgAyAGEKEUIQMgASABKAIAQQFrIgA2AgAgA0F/RgRAIAANCyABENUQDAsLIAANBiABENUQIAQiAA0LDAoLIAIgAigC2AEiAUEEajYC2AEgASgCABCpECIBRQ0JIAJBsAFqIAEgAyAGEKEUIQMgASABKAIAQQFrIgA2AgAgA0F/RgRAIAANCiABENUQDAoLIAANBSABENUQIAQiAA0KDAkLAkAgAigCvAFBJU8EQCACKALAASACKALEASIBa0EASg0BCyACQbABakEBQSUQnxRBAEgNCSACKALEASEBCyACKAK0ASEDAkACQAJAAkAgAigCuAFBAWsOAgABAgsgASADakElOgAADAILIAMgAUEBdGpBJTsBAAwBCyADIAFBAnRqQSU2AgALIAIgAUEBajYCxAEgBCIADQkMCAsgAkGwAWogACAAEP1EIgEQohRBf0YNByAAIAFqIQAMBgsgAiACKALYASIBQQRqNgLYASAEIQAgAkGwAWogASgCACADIAYQoRRBf0cNBQwGCyAAEP1EIQEMAwsgABD9RCEBDAELIAQiAA0EDAMLIAAgAUEAIwBBrZwIakEAEI0UIgFFDQIgAkGwAWogASADQX8QoRQhAyABIAEoAgBBAWsiADYCACAARQRAIAEQ1RALIAQhACADQQBODQEMAgsgACABQQAjAEGtnAhqQQAQjRQiAUUNASACQbABaiABIANBfxChFCEDIAEgASgCAEEBayIANgIAIABFBEAgARDVEAsgBCEAIANBAEgNAQsgAA0BCwtBACEDIAIoArABIgFFDQAgASABKAIAQQFrIgQ2AgAgBA0AIAEQ1RALIAJBgAJqJAEgAwuoAQECfyAAKAIAIQEgACgCFCICRQRAAkAgAUUNACAAQQA2AgAgASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALI7ABQZTYAGoiACAAKAIAQQFqNgIAIAAP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IAlBEGoQrhoaDAELIAEoAhAiB0GAAXFFBEAgARCCFEEASA0BIAEoAhAhBwtBACEEIAAoAhAiCEECdkEHcSIKIAdBAnZBB3EiDEkNASABKAIIIQUgACgCCCIGIQsCQCADIAZKDQAgA0EATgRAIAMhCwwBCyADIAZqIgRBACAEQQBKGyELC0EAIQQgCyACIAZqIgNBACADQQBKGyACIAJBAEgbIgZrIgIgBUgNASAIQSBxBH8gAEEYQSQgCEHAAHEbagUgACgCJAshCCAHQSBxBH8gAUEYQSQgB0HAAHEbagUgASgCJAshAwJAIAogDEYiB0UEQCAMIAMgBSAKEIQVIgNFDQELAn8CQAJAAkACQAJAIApBAmsOAwEDAgALIAAtABBBwABxRQ0DIAEtABBBwABxRQ0DIAYgCGogAiADIAUQhRUMBAtBACACQQBIDQMaQf////8HIAJBAWogAkH/////B08bIAVFDQMaIAggBkEBdGogAiADIAVB/////wdBABCGFSIAQQAgAEEAShsMAwtBACACQQBIDQIaQf////8HIAJBAWogAkH/////B08bIAVFDQIaIAggBkECdGogAiADIAVB/////wdBABCHFSIAQQAgAEEAShsMAgsACyAGIAhqIAIgAyAFEIUVCyEEIAcNAiADEP0QDAILQQAQ/RALQX8hBAsgCUEgaiQBIAQLywYBBH8CQAJAAkACQAJAIANBAkYEQCACQf////8DSw0BIAJBAXQQ+hAiBEUNASABIAJqIQAgASABIAJBfHFqIgNPBEAgBCECDAULIAQhAgNAIAIgAS0AADsBACACIAEtAAE7AQIgAiABLQACOwEEIAIgAS0AAzsBBiACQQhqIQIgAUEEaiIBIANJDQALDAQLIAJB/////wFLDQAgAkECdBD6ECIERQ0AIAJBfHEhBSAAQQJGBEAgASACQQF0aiEDIAEgASAFQQF0aiIATwRAIAQhAgwECyAEIQIDQCACIAEvAQA2AgAgAiABLwECNgIEIAIgAS8BBDYCCCACIAEvAQY2AgwgAkEQaiECIAFBCGoiASAASQ0ACwwDCyABIAJqIQAgASABIAVqIgNPBEAgBCECDAILIAQhAgNAIAIgAS0AADYCACACIAEtAAE2AgQgAiABLQACNgIIIAIgAS0AAzYCDCACQRBqIQIgAUEEaiIBIANJ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BEBBAA8LIAAoAhAhAQsgAUECdiEDIAAoAgghBCABQSBxBH8gAEEYQSQgAUHAAHEbagUgACgCJAshAiADQQdxIQECQAJAAkACQAJAIAQOAgIBAAtBACEAIARBAEwNAyABQQFrIQMMAgsCfwJAAkACQCABQQFrDgIAAQILIAItAAAMAgsgAi8BAAwBCyACKAIACxCaFhCuBg8LI7wBIgAgACgCAEEBajYCACAADwsDQAJ/AkACQAJAIAMOAgABAgsgACACai0AAAwCCyACIABBAXRqLwEADAELIAIgAEECdGooAgALEJoWBEAgAEEBaiIAIARGDQIMAQsLI7wBIgAgACgCAEEBajYCACAADwsjuwEiACAAKAIAQQFqNgIAIAALuQIBA38gACgCECIBQYABcUUEQCAAEIIUQX9GBEBBAA8LIAAoAhAhAQsgAUECdiEDIAAoAgghBCABQSBxBH8gAEEYQSQgAUHAAHEbagUgACgCJAshAiADQQdxIQECQAJAAkACQAJAIAQOAgIBAAtBACEAIARBAEwNAyABQQFrIQMMAgsCfwJAAkACQCABQQFrDgIAAQILIAItAAAMAgsgAi8BAAwBCyACKAIACxCbFhCuBg8LI7wBIgAgACgCAEEBajYCACAADwsDQAJ/AkACQAJAIAMOAgABAgsgACACai0AAAwCCyACIABBAXRqLwEADAELIAIgAEECdGooAgALEJsWBEAgAEEBaiIAIARGDQIMAQsLI7wBIgAgACgCAEEBajYCACAADwsjuwEiACAAKAIAQQFqNgIAIAALuQIBA38gACgCECIBQYABcUUEQCAAEIIUQX9GBEBBAA8LIAAoAhAhAQsgAUECdiEDIAAoAgghBCABQSBxBH8gAEEYQSQgAUHAAHEbagUgACgCJAshAiADQQdxIQECQAJAAkACQAJAIAQOAgIBAAtBACEAIARBAEwNAyABQQFrIQMMAgsCfwJAAkACQCABQQFrDgIAAQILIAItAAAMAgsgAi8BAAwBCyACKAIACxCnFhCuBg8LI7wBIgAgACgCAEEBajYCACAADwsDQAJ/AkACQAJAIAMOAgABAgsgACACai0AAAwCCyACIABBAXRqLwEADAELIAIgAEECdGooAgALEKcWBEAgAEEBaiIAIARGDQIMAQsLI7wBIgAgACgCAEEBajYCACAADwsj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ADYCBCABIAI2AgAjAEHKxA1qIAEQ0RwLIQAgAUEgaiQBIAAL4QIBA38jAUEwayICJAECQCABKAIEIgMtAFdBEHFFBEAgAiADKAIMNgIAI7UBKAIAIwBBm5wDaiACEK4aGkEAIQEMAQsCQCABLQAQQYABcQ0AIAEQghRBf0cNAEEAIQEMAQsjAEHA5KoBahCgECIDRQRAQQAhAQwBCyABIAEoAgBBAWo2AgAgAyABNgIIAn9BACABQQAgASgCCCACQSRqIAJBIGogA0EMakEAEIUWRQ0AGgJAAn8gAigCICIBQX9HBEAgARCuDQwBCyACKAIkIgFFBEAjsgEiACAAKAIAQQFqNgIADAILIAEgAigCKCACKAIsEKEVCyEAQQAgAEUNARoLIAIgAzYCFCACIAA2AhAgACEEQQIgAkEQahCYEgshASADIAMoAgBBAWsiADYCACAARQRAIAMQ1RALIARFDQAgBCAEKAIAQQFrIgM2AgAgAw0AIAQQ1RALIAJBMGokASABC64BAQF/IwFBEGsiAiQBAkAgASgCBCIALQBXQRBxRQRAIAIgACgCDDYCACO1ASgCACMAQZucA2ogAhCuGhpBACEADAELAkAgAS0AEEGAAXENACABEIIUQX9HDQBBACEADAELIwBBjOaqAWoQoBAiAEUEQEEAIQAMAQsgASABKAIAQQFqNgIAIAAgATYCCCAAIAEoAgg2AhQgAEEANgIQIAAgATYCDAsgAkEQaiQBIAALwPMBAQF8AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHXkARMBEAgAEH82QBMBEAgAEHFMkwEQCAAQeUSTARAAkAgAEHgDGsOmgENDwgKZAV/hwGQAaEBnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAQ0PCApkBX+HAZABoQEACwJAIABBMGsOjwENDwgKZAV/hwGQAaEBnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BCAqfAZ8BnwGfAZ8BD58BnwEZFFEACyAAQcAPaw4KDA4HCWMEfoYBjwGgAZ4BC0QAAAAAAADgvyEBAkAgAEHmEmsOtA4MDgcJYwR+hgGPAaABngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABngGeAZ4BngERHk0YUDSeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABngGeARgTUBEeTZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABIqMBoQGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAQwOBwljBH6GAY8BoAGeAZ4BngGeAZ4BngGeAZ4BDA4HCQ4HCZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BDA4HCWMEfoYBjwGgAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngESGVQUD08angGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABIqMBoQEYE1ARHk2eAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAQwOBwljBH6GAY8BoAGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEMDgcJYwR+hgGPAaABE052iAGXAS0wMzafAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BDA4HCWMEfoYBjwGgAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BDA4HCWMEfoYBjwGgAQALAkAgAEHuLWsOrAI1NzieAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BDA4HCWMEfoYBjwGgAZ4BngGeAZ4BngGeAQwOBwljBH6GAY8BoAGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAQwOBwljBH6GAY8BoAEACyAAQekmaw4UDQYIYgN9hQGOAZ8BITtUZXh/iQGQAZcBogGhAZ0BCwJAIABB8MAAaw6kDgudAZ0BnQFiA32FAY4BnwGdAZ0BnQGdAZ0BnQELDQYIYgN9hQGOAZ8BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BHB8OFDkZOlBkGnYdUneIAQ0NBghiA32FAY4BnwEhKi14ogF5oAENBghiA32FAY4BnwEhKi14ogF5oAGgAXqhAZ0BnQF9eHsjC50BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQ0GCGIDfYUBjgGfASEqLS4wMTM0Njc7DQYIYgN9hQGOAZ8BISotLjAxMzQ2NzsNBghiA32FAY4BnwEhKi0uMDEzNDY3O50BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQsqLS4wMTM0Njc7DQYIYgN9hQGOAZ8BIQudAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQENBghiA32FAY4BnwEhDQYIYgN9hQGOAZ8BIQ0GCGIDfYUBjgGfASEACyAAQcYyaw6UBgoMBQdhAnyEAY0BngGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBCgwFB2ECfIQBjQGeAQycAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEKDAUHYQJ8hAGNAZ4BnAGcAZwBnAGcAZwBCgwFB2ECfIQBjQGeAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEKDAUHYQJ8hAGNAZ4BnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAQoMBQdhAnyEAY0BngGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBCgwFB2ECfIQBjQGeAZwBnAGcAZwBnAGcAQoMBQdhAnyEAY0BngGcAQsgAEHv1wJMBEAgAEHApwFMBEAgAEGC6QBMBEACQCAAQYfgAGsOuQUNnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwEPCApkBX+HAZABoQGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BIz1WnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwEPCApknwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BDwgKZAV/hwGQAaEBI58BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfASM9Vmd6gQGLAZIBnwFDRUZHSElKS0xWW1xdXl+fAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BDwgKZAV/hwGQAaEBI58BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAWBhYmNnbG1ucHFyc3R1egALIABB/dkARg0TIABBhegARg0EDJ4BCyAAQd6dAUwEQCAAQdycAUwEQCAAQf+bAUwEQCAAQYPpAEYNCSAAQarwAEYNBiAAQc32AEYNiAEMoAELIABBgJwBaw4KD58BnwGHAZ8BnwGfAaMBnwEKnwELAkAgAEGMnQFrDgsInwGfAZ8BnwGfAZ8BnwEFnwFkAAsgAEG/nQFrDgIoIp0BCyAAQcCmAUwEQCAAQYOiAUwEQAJAIABB350Baw4KowGgAaABoAGgAaABoAGgAaABCwALIABBjZ4BRg0FIABB8J4BRg2kAQyfAQsgAEHGogFrDigqngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngGeAZ4BngEHngGPAZ4BficLIABBwaYBaw4MIZ0BoAE7VJ0BnQGdAZ0BnQGdAWWdAQsgAEHlzQJMBEAgAEGFgQJMBEAgAEH9vQFMBEAgAEHarQFMBEAgAEHBpwFrQQRJDQsMoAELAkAgAEHxsQFrDgkQoAGgAaABoAGgAaABoAEQAAsgAEHbrQFGDWQgAEH6vAFGDQ8MnwELIABB/cUBTARAIABB/r0Baw4ToQE9nwGfAZ8BnwGfAZ8BnwGfAZ8BnwGfAZ8BDwgKnwEInwELIABBhd4BTARAIABB/sUBRg0jIABBzMYBRg2QASAAQdLPAUYNhwEMnwELIABBht4BRg2GASAAQZbnAUYNoAEgAEH+7AFHDZ4BDKMBCyAAQfesAkwEQCAAQa+aAkwEQAJAIABBrpkCaw4GCaABoAGgAaABCQALIABBhoECRg1kIABBrIgCRw2fAQyjAQsCQCAAQcasAmsOB3+fAZ8BnwGfAZ8BpAEACyAAQbCaAkYNByAAQaGsAkcNngEMoQELAkAgAEGgzAJrDgoMDgcJYwR+hgGPAaABAAsgAEH4rAJGDX0gAEH2rQJGDQsMnQELAkAgAEGw0AJrDqoEFxJPEB1MnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQELDQYIYgN9hQGOAZ8BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQsNBghiA32FAY4BnwGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQELDQYIYgN9hQGOAZ8BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQELDQYIYgN9hQGOAZ8BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQsNBghiA32FAY4BnwEACyAAQebNAmsOCgwFB2ECfIQBjQGeAQqcAQsgAEHQ8wNMBEACQCAAQfDXAmsOCgsNBghiA32FAY4BnwEACyAAQevyA2sODgecAZwBnAGcAZwBnAGcASCcAZwBnAGcAQUJCwJAIABBkP4Daw6aCwoMBQdhAnyEAY0BngGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAQwFB2ECfIQBjQGeASA6U2R3fogBjwGWAaEBO1RleH+JAZABlwGfATxVZnmAAYoBkQGYAaABPVZneoEBiwGSAZkBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBFhEMAnd4eXoCIHehAXifAXkCIHehAXifAaABeiAMDAwFBQUFAiAgICAgU3d3d3ehAVR4eHh4eJ8BeQJ3ERE4TpwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEKFpwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEMBQdhAnyEAY0BngEgOlNkd36IAY8BlgGhATtUZXh/iQGQAZcBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBDAIgd5wBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGWAZwBnAGcAZwBnAGcAZwBnAGXAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEMBSA6oQGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAQoMBQdhAnyEAY0BngEACyAAQdHzA2sOA3ubAXseCyAAQb+/BEwEQCAAQc+sBEwEQAJAIABB2JAEaw6CGA0GCCE7ogGgAaEBnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQENBghiAyE7nQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BDQYIYmIDITuiAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQ0DITuiAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BDSE7ogEGCJ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BKxKdAZ0BDQYIYgN9hQGOAZ8BITtUZXh/iQGdAZ0BogE8VWZ5gAGKAZEBmAGgAT1WZ3qBAYsBkgGZAaEBPldoe4IBjAGTAZoBIz9YaXyDAY0BlAGbAQ84S2N0foYBjwGVASKdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQ0GCGIhO6IBoAESnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQENeJ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQ0hO50BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQ0DITuiAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQENBghiITuiAaABnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BDQYIYiE7ogGgAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQENBghiITuiAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQ0DIXiiAaABnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BCw0GCGIDfYUBjgGfAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQ0GCGIDfYUBjgGfASE7VGV4f4kBkAGXAaIBPFVmeYABigGRAZgBEhcUOZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQENBghiAyE7VKIBEp0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQ0hO6IBnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQENBghiITuiAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQENBghiA32FAY4BnwEhO1RleH+JAZABlwGiAaABCw0GCGIDfYUBjgGfAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQELDQYIYgN9hQGOAZ8BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BCw0GCGIDfYUBjgGfAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQsNBghiA32FAY4BnwGdAZ0BnQGdAZ0BnQGdAQ0GCGIDfYUBjgGfASE7VGV4f4kBkAGXAaIBoAGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BCw0GCGIDfYUBjgGfAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAZ0BnQGdAQsNBghiA32FAY4BnwEACyAAQdCpBGsOCgoMBQdhAnyEAY0BngGcAQsCQCAAQdC4BGsO2gIKDAUHYQJ8hAGNAZ4BDAUHYQJ8hAGNAZ4BIDpTZHd+iAGPAZYBoQGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBCgwFB2ECfIQBjQGeAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBCgwFB2ECfIQBjQGeAQALAkAgAEHQrARrDuwBCgwFB2ECfIQBjQGeAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAQoMBQdhAnyEAY0BngGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEKDAUHYQJ8hAGNAZ4BIDoACyAAQeCxBGsOegkLBAZgAXuDAYwBnQEfOVJjdn2HAY4BlQGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwEJCwQGYAF7gwGMAZ0BmwELIABBza8HTARAIABB39QFTARAIABBwL8Eaw6vCRUQHRoXFFJQEg8PDRxNSxgWERFOFZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEFB2ECfIQBjQGeAQdhAnyEAY0BngFhAnyEAY0BngEMBQdhAnyEAY0BngEMBQdhAgUHB2ECfIQBjQGeAQwFBwdhAkFsDAUHB2ECBwdhYWFhfIQBhAGEAY0BjQGeAZ4BngGeAQUHYQJ8DAUHYWECAgUHDAUTOHUTOBwWGRYWERM4ZHdhAnyEAY0BngGcAQsCQCAAQeClB2sOmQEKDAUHYQJ8hAGNAZ4BICksLS8wMjM1NpwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAQwFB2ECfIQBjQGeASA6U2R3fogBjwGWAQwFB2ECDAIACwJAIABB4NQFaw6CAgoMBQdhAnyEAY0BngGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBCgwFB2ECfIQBjQGeAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEKDAUHYQJ8hAGNAZ4BnAEgoQGgASMmJygACyAAQYDdBWsOFwkLBAZgAXuDAYwBnQEfKCssLi8xMjQ1CwQGmwELIABBxtEHTARAAkAgAEHOrwdrDjIKDAUHYQJ8hAGNAZ4BCgwFB2ECfIQBjQGeAQoMBQdhAnyEAY0BngEKDAUHYQJ8hAGNAZ4BCgwFB2ECfIQBjQGeAQALAkAgAEHAwgdrDgoKDAUHYQJ8hAGNAZ4BAAsgAEHwxQdrDgoJCwQGYAF7gwGMAZ0BmwELIABB/+EHTARAIABBx9EHaw73CAsEBmABe4MBjAGdAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwEJCwQGYAF7gwGMAZ0BmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAQsEBmABe4MBjAGdAR85UmN2fYcBjgGVAaABOlNkd36IAY8BlgGeATtUZXh/iQGQAZcBnwE8VWZ5gAGKAZEBmAEhPSEjPgsEBmABe4MBjAGdAZsBFRBNmwELBJ8BIZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBCwQGYAF7gwGMAZ0BHzlSY3Z9hwGOAZUBoAE6U2R3fogBjwGWAZ4BO1RleH+JAZABlwGfATxVZnmA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aiIDKAIAIQIgAy0AD0HAAHEEQCACQRh1IQUCQCACQYCAgAhIDQAgAkH//wNxIQJBASAFIAVBAUwbIgNBA3EhBkEAIQAgA0EBa0EDTwRAIANB/P///wdxIQkDQCABIABBAnRqIwBBwPISaiIDIAAgAmpBAnRqKAIANgIAIAEgAEEBciIEQQJ0aiADIAIgBGpBAnRqKAIANgIAIAEgAEECciIEQQJ0aiADIAIgBGpBAnRqKAIANgIAIAEgAEEDciIEQQJ0aiADIAIgBGpBAnRqKAIANgIAIABBBGohACAIQQRqIgggCUcNAAsLIAZFDQADQCABIABBAnRqIwBBwPISaiAAIAJqQQJ0aigCADYCACAAQQFqIQAgB0EBaiIHIAZHDQALCyAFDwsgASAAIAJqNgIAQQELwwUBCH8CQAJAAkAgAEH//8MATQR/IwAiAkGQoRRqIAJBkJkTaiAAQQZ2Qf7//x9xai8BAEEIdCAAQf8AcUEBdHJqLwEABSACC0EEdCICIwBqQb+zEmotAABBwABxRQ0AIwAgAmpBtLMSaigCACICQRR2QQdxIgNFDQAgASACQf//A3EgAkEYdWoiAkECdCIAIwBBwPISamooAgA2AgAgA0EBRg0BIAEgACMAakHE8hJqKAIANgIEIANBAkYNASABIAJBAnQiACMAakHI8hJqKAIANgIIIANBA0YNASABIAAjAGpBzPISaigCADYCDCADQQRGDQEgASACQQJ0IgAjAGpB0PISaigCADYCECADQQVGDQEgASAAIwBqQdTyEmooAgA2AhQgA0EGRg0BIAEjACACQQJ0akHY8hJqKAIANgIYIAMPC0EAIQIjAEGwsxJqIABB///DAE0EfyMAIgJBkKEUaiACQZCZE2ogAEEGdkH+//8fcWovAQBBCHQgAEH/AHFBAXRyai8BAAUgAgtBBHRqIgQoAgQhAiAELQAPQcAAcUUNASACQRh1IQMgAkGAgIAISA0AIAJB//8DcSECQQEgAyADQQFMGyIEQQNxIQZBACEAIARBAWtBA08EQCAEQfz///8HcSEJA0AgASAAQQJ0aiMAQcDyEmoiBCAAIAJqQQJ0aigCADYCACABIABBAXIiBUECdGogBCACIAVqQQJ0aigCADYCACABIABBAnIiBUECdGogBCACIAVqQQJ0aigCADYCACABIABBA3Ii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fyAAKAIABSAECyADTA0HAkAgACADQQJ0aigCCCIERQ0AIAQgASACEPwXDQBBAA8LIANBAWohAwwACwALAkAgACgCBCIDRQ0AIAMgASACEP0XDQBBAA8LIAAoAggiA0UNBSADIAEgAhD9Fw0FQQAPCyAAKAIEIQRBACEDA0BBACEFIAQEfyAEKAIABSAFCyADSgRAAkAgBCADQQJ0aigCCCIFRQ0AIAUgASACEPwXDQBBAA8LIANBAWohAwwBCwsgACgCCCEHA0BBACEDIAcEfyAHKAIABSADCyAGSgRAAkAgByAGQQJ0aigCCCIDRQ0AIAMoAgBBAUcNAAJAIAMoAgQiBEUNACAEIAEgAhD9Fw0AQQAPCyADKAIMIQRBACEDA0BBACEFIAQEfyAEKAIABSAFCyADTA0BAkAgBCADQQJ0aigCCCIFRQ0AIAUgASACEPwXDQBBAA8LIANBAWohAwwACwALIAZBAWohBgwBCwsgACgCDCEEA0BBACEFIAQEfyAEKAIABSAFCyADSgRAAkAgBCADQQJ0aigCCCIFRQ0AIAUgASACEPwXDQBBAA8LIANBAWohAwwBCwsgACgCECEAQQAhAwNAQQAhBCAABH8gACgCAAUgBAsgA0wNBQJAIAAgA0ECdGooAggiBEUNACAEIAEgAhD8Fw0AQQAPCyADQQFqIQMMAAsACyAAKAIEIQRBACEDA0BBACEFIAQEfyAEKAIABSAFCyADSgRAAkAgBCADQQJ0aigCCCIFRQ0AIAUgASACEPwXDQBBAA8LIANBAWohAwwBCwsgACgCCCEHA0BBACEDIAcEfyAHKAIABSADCyAGSgRAAkAgByAGQQJ0aigCCCIDRQ0AIAMoAgBBAUcNAAJAIAMoAgQiBEUNACAEIAEgAhD9Fw0AQQAPCyADKAIMIQRBACEDA0BBACEFIAQEfyAEKAIABSAFCyADTA0BAkAgBCADQQJ0aigCCCIFRQ0AIAUgASACEPwXDQBBAA8LIANBAWohAwwACwALIAZBAWohBgwBCwsgACgCDCEEA0BBACEFIAQEfyAEKAIABSAFCyADSgRAAkAgBCADQQJ0aigCCCIFRQ0AIAUgASACEPwXDQBBAA8LIANBAWohAwwBCwsgACgCECEAQQAhAwNAQQAhBCAABH8gACgCAAUgBAsgA0wNBAJAIAAgA0ECdGoo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GEUNAQtBAQwBC0ECCyEEA0ACQAJAAkACfwJAAkACQAJAAkAgBA4CAAECCyAAIwBB6eIOahDrGEUNAiAAIAAoAhRBAWs2AhQMBQsgACAAKAIUIgRBAWo2AhQgAS0AJARAIAAgCigC3AMiBDYCKCAEIAotANQDOgAAQQAhBAwGCyAKIAEoAhgiBTYC2AMgACAENgIUIAEQ6BogACAAKAIUQQFqNgIUIAAgARD4HSAFIQEMBgsgASgCECIEKAIMIRYgBCgCECETIAEoAiAhBSABQX82AiAgASgCHEECaiEHIARB9ABqIRcgASAFQQJ0akEoaiELDAELQQAMAQtBAQshBANAAn8CQAJAIARFBEAgASgCECIEKAIMIRYgBCgCECETIAEoAiAhBSABQX82AiAgBEH0AGohFyABIAVBAnRqQShqIRogASgCHEECaiIbLwEAIhwgCi0A1ANyIR0MAQsgACgCPEUEQCAAI8EBKAIAIwBBiIwBahCzGgsCQCABLQAlQQFHBEAgASgCHCABKAIQIgQgBCgCbEEBdGpB9ABqSQ0BCyABKAIUIgRFBEAgARDmGiIERQ0BCyAEEMkfGgtBACEQIAAoAjAiBEUNASAEIAAoAjggACABEOwYDAELQQAMAQtBAQshBANAIARFBEAgAEE8aiERIAFBKGohFSABQRxqIQ0gCkHkA2ohGCAKQeADakEEciEZIBohBSAbIQQgHEGA/gNxQQh2IQIgHSEDA0BBASEOQQEhCCAEIgchBkEBIQ9BASEJQQEhDAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA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EJAZIgNFDQAjtAEgAygCBEYEQCADIQIMAQsgAyOwAUHwiQFqIARBDGoQrBBBAEgEQCADIAMoAgBBAWsiADYCACAADQEgAxDVEAwBCyAEKAIMIgJFBEAgAyECDAELIAIQsRAhBSAEKAIMIgIgAigCAEEBayIGNgIAIAZFBEAgAhDVEAsgBUEASgRAIAMhAgwBCyADIAMoAgBBAWsiAjYCACACRQRAIAMQ1RALQQAhAiAFDQAgBCAANgIAIAQgATYCBCObAigCACMAQePHAmogBBCuGhoLIARBEGokASACC1ABA38gASMAQevWDWoQnxkiA0UEQEEADwsgAygCDCIEIAQoAgBBAWo2AgAgAyADKAIAQQFrIgU2AgAgBUUEQCADENUQCyAAIAQgASACEJwZC1ABA38gASMAQfvWDWoQnxkiA0UEQEEADwsgAygCECIEIAQoAgBBAWo2AgAgAyADKAIAQQFrIgU2AgAgBUUEQCADENUQCyAAIAQgASACEJ4ZC0wBAX8CfyOwASgC6AIoAggiAigCkARFBEBBfxCOGQ0BGgsgARDHEEUEQCO1ASgCACMAQf/TB2oQtBpBfw8LIAIoApgEIAAgARC9DgsLgAEBA38jAUEQayICJAECQCOwASgC6AIoAggiAygCkARFBEAQjhkNAQsgAygCmAQgACMAQdOQAWogABsiABCUDiIBBEAgASABKAIAQQFqNgIADAELQQAhARC1Gg0AIAIgADYCACObAigCACMAQbbhDWogAhCuGhoLIAJBEGokASABCzEBAX8gACgCBCIBLQBXQcAAcQRAIAEgABCvGkEADwsjtQEoAgAjAEHilghqELQaQQAL/wEBA38jAUEgayICJAECQAJAAkACQCAAKAIEIgMjjQIoAgAiAUcEQCADIAEQuRJFDQELQQAhASAAIAJBHGoQiwpFDQEMAwsCQCAAKAIEIgMjxwIoAgAiAUcEQCADIAEQuRJFDQELQQAhASAAIAJBHGoQjApFDQEMAwsgACgCBCIDI+YDKAIAIgFHBEAgAyABELkSRQ0CC0EAIQEgACACQRxqEIsKDQILIAJBAEEAEP4TNgIAIAIgAigCHDYCBCMAQdOVDWogAhDNHCEBDAELIAIgACgCBCgCDDYCECO1ASgCACMAQaraBWogAkEQahCuGhpBACEBCyACQSBqJAEgAQvP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KAI4IQAMAQtBAUEoEIIRIgBFDQEgACABKAI0NgIAIAEgADYCNCAIKAIAIgEoAjggADYCDCABQQA2ApQDIAEgADYCOAsgABDNGSIBQQBIDQwgACgCCCABQQV0aiIBQoKBgIAQNwIAIAEgBDYCHCABIAc2AhggASAJNgIUIAEgBTYCECAIKAIAIgFBATYClAMMAQsQzhoaIAgoAgAhAQsgASgCOCADNgIMIAFBADYClAMgASADNgI4DAkLAkAgASgCECICRQ0AIAIoAgBFDQACf0EAIQkgACgCICEGQQFBKBCCESIDRQRAEM4aGkEADAELIAMgBigCNDYCACAGIAM2AjQgACgCICECQQFBKBCCESIGRQRAEM4aGkEADAELIAYgAigCNDYCACACIAY2AjQgACgCICECQQFBKBCCESIERQRAEM4aGkEADAELIAQgAigCNDYCACACIAQ2AjQgACgCICECQQFBKBCCESIHRQRAEM4aGkEADAELIAcgAigCNDYCACACIAc2AjQgACgCICICKAKQAyEIIAIoAogDIQogAigCjAMhCyACKAKEAyEMAkACQAJAAkAgAigClANFBEAgAigCOCEFDAELQQFBKBCCESIFRQ0BIAUgAigCNDYCACACIAU2AjQgACgCICICKAI4IAU2AgwgAkEANgKUAyACIAU2AjgLIAUQzRkiAkEASA0CIAUoAgggAkEFdGoiAkF/NgIAIAIgCDYCHCACIAo2AhggAiALNgIUIAIgDDYCECACIAY2AggMAQsQzhoaCyAAKAIgIgIoAjggAzYCDCACQQA2ApQDIAIgAzYCOCACKAI8IglBFE4EQCAAIwBBvZMCakEAEMsZQQAMAgsgASgCECEFIAIgCUEBajYCPCACIAlBBHRqIgIgBTYCTCACIAY2AkggAiADNgJEIAJBQGtBAzYCAAJAAkAgASgCCCIDRQ0AIAMoAgBFDQAgACABENgZDQFBAAwDCyABKAIEIQJBACEDA0BBACEJIAIEfyACKAIABUEACyADTA0BIANBAnQhBSADQQFqIQMgACACIAVqKAIIELoZDQALDAELAkACQAJAIAAoAiAiAigClANFBEAgAigCOCEDDAELQQFBKBCCESIDRQ0BIAMgAigCNDYCACACIAM2AjQgACgCICICKAI4IAM2AgwgAkEANgKUAyACIAM2AjgL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QukANwIAIAEgBjYCHCABIAQ2AhggASAFNgIUIAEgAzYCEAwcCxDOGhoMGwsQzhoaIAcoAgAhBQwXCxDOGhoMGAsgBygCACIBKAI4IAU2AgwgAUEANgKUAyABIAU2AjgMGAsgASgCBCEDAkACQAJAIAEoAghBAWsOAgEAAgsCQAJAIAMEQCADKAIAIQQgACADEOUZDQFBACECDB0LQQEhBUEAIQIgAEEAEOUZDQEMHAtBASEFIARBAEwNAEEAIQVBACEBA0AgACADIAFBAnRqKAIIIgIoAgBBF0YEfyACKAIEBSACCxC7GUUNASABQQFqIgEgBE4hBSABIARHDQALCyAFQQFxIQIMGgsgACADQQBB5wBBkQFBogFBARDmGSECDBkLQQAhAQNAIAMEfyADKAIABUEACyABTCICDRkgAUECdCEEIAFBAWohASAAIAMgBGooAggQuxkNAAsMGAsgASgCBCEDAkACQAJAIAEoAghBAWsOAgEAAgsCQAJAIAMEQCADKAIAIQQgACADEOUZDQFBACECDBwLQQEhBUEAIQIgAEEAEOUZDQEMGwtBASEFIARBAEwNAEEAIQVBACEBA0AgACADIAFBAnRqKAIIIgIoAgBBF0YEfyACKAIEBSACCxC7GUUNASABQQFqIgEgBE4hBSABIARHDQALCyAFQQFxIQIMGQsgACADQQBB5wBBkQFBogFBABDmGSECDBgLQQAhAQNAIAMEfyADKAIABUEACyABTCICDRggAUECdCEEIAFBAWohASAAIAMgBGooAggQuxkNAAsMFwsgACABKAIEIAEoAggQxBkhAgwWCwJAIAEoAgQiAgRAIAAgAhC7GQ0BQQAhAgwXCyAAI7IBEMcZDQBBACECDBYLAkAgASgCCCICBEAgACACELsZDQFBACECDBcLIAAjsgEQxxkNAEEAIQIMFgsCQCABKAIMIgFFBEBBAiECDAELQQMhAiAAIAEQuxkNAEEAIQIMFgsgAEGFASACIAAoAiAiASgChAMgASgCjAMgASgCiAMgASgCkAMQ1RlBAEchAgwVCyABKAIIQQJGBEBBACECIAAjAEGUswdqQQAQyxkMFQtBACECIAAjAEH7+QZqQQAQyxkMFAtBACECQQAhAwJAAkACQAJAIAEoAgxBAWsOAwABAgMLAkAgASgCBCIFKAIAIgNBFEsNAEEB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IAEoAogDIQQgASgCjAMhBSABKAKEAyEGAkAgASgClANFBEAgASgCOCECDAELQQFBKBCCESICRQ0CIAIgASgCNDYCACABIAI2AjQgACgCICIAKAI4IAI2AgwgAEEANgKUAyAAIAI2AjgLQQAhASACEM0ZIgBBAEgNACACKAIIIABBBXRqIgBCq4GAgCA3AgAgACADNgIcIAAgBDYCGCAAIAU2AhQgACAGNgIQQQEhAQsgAQ8LEM4aGkEBC5YHAQd/IAAoAiAiAkJ/NwKEAyACQn83AowDQQFBKBCCESIERQRAEM4aGg8LIAQgAigCNDYCACACIAQ2AjQgACgCICICKAKQAyEFIAIoAogDIQYgAigCjAMhByACKAKEAyEIAkACQAJAAkACQAJAAkAgAigClANFBEAgAigCOCEDDAELQQFBKBCCESIDRQ0BIAMgAigCNDYCACACIAM2AjQgACgCICICKAI4IAM2AgwgAkEANgKUAyACIAM2AjgLIAMQzRkiAkEASA0FIAMoAgggAkEFdGoiAkF4NgIAIAIgBTYCHCACIAY2AhggAiAHNgIUIAIgCDYCECACIAQ2AgggACgCICICQQE2ApQDIAIoApADIQUgAigCiAMhBiACKAKMAyEHIAIoAoQDIQgMAQsQzhoaIAAoAiAiAigCkAMhBSACKAKIAyEGIAIoAowDIQcgAigChAMhCCACKAKUAw0AIAIoAjghAwwBC0EBQSgQghEiA0UNASADIAIoAjQ2AgAgAiADNgI0IAAoAiAiAigCOCADNgIMIAJBADYClAMgAiADNgI4CyADEM0ZIgJBAEgNAiADKAIIIAJBBXRqIgJC94CAgCA3AgAgAiAFNgIcIAIgBjYCGCACIAc2AhQgAiAINgIQIAAoAiAiAkEBNgKUAwwBCxDOGhogACgCICECCyACKAI4IAE2AgwgAkEANgKUAyACIAE2AjggABD5GUUNACAAKAIgIgIoAjggBDYCDCACQQA2ApQDIAIgBDYCOCAAQQEgAigChAMgAigCjAMgAigCiAMgAigCkAMQuRlFDQAgACgCICICKAKQAyEDIAIoAogDIQEgAigCjAMhBSACKAKEAyEGAkACQAJAIAIoApQDRQRAIAIoAjghBAwBC0EBQSgQghEiBEUNASAEIAIoAjQ2AgAgAiAENgI0IAAoAiAiAigCOCAE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AyAAQQhrIgE2AgAgASACNgIAIAFBBGoiBCADIAQoAgBBA3FyNgIAIAIgATYCBCAAC6oBAQN/IwFBEGsiAiQBI7ABIQECfyO3AiAAKAIERwRAI7UBKAIAIwBBotYIahC0GkF/DAELIAEoAugCIQEgACgCFARAIAIgADYCACABI74BKAIAIwBBo+QIaiACEKsaGkF/DAELIAEoAnwhAyAAQQE2AhQgACADNgIIIAAgACgCAEEBajYCACABIAA2AnwgASABKQOAAUIBfDcDgAFBAAshACACQRBqJAEgAAsOACOwASgC6AIgABCFGgvEAQECfyMBQRBrIgIkAQJ/I7cCIAEoAgRHBEAjtQEoAgAjAEGi1ghqELQaQX8MAQsgASgCFEUEQCACIAE2AgAjvgEoAgAjAEHP5AhqIAIQrhoaQX8MAQsgASAAKAJ8RwRAI74BKAIAIwBB3ZcBahC0GkF/DAELIAAgASgCCDYCfCABIAEoAgBBAWsiAzYCACADRQRAIAEQ1RALIAAgACkDgAFCAXw3A4ABIAFBADYCFCABQQA2AghBAAshACACQRBqJAEgAAs3AQF/IAAQjxQiAEUEQEEADwsgACABEIcaIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC44CAQJ/IAAoAgQtAFdBEHFFBEAjtQEoAgAjAEH/qQNqELQaQQAPCyPFAhDCICICRQRAQQAPCyAAELMQIgNBf0YEQCACQX82AiggAiACKAIAQQFrIgA2AgAgAARAQQAPCyACENUQQQAPCyACQX4gAhD+HCADcyIDIANBfk8bNgIoIAAgACgCAEEBajYCACACIAA2AgggAQRAIAEgASgCAEEBajYCAAsgAkIANwMYIAJBADYCECACIAE2AgwgAkIANwMgAkACQCAAEMAgBEAjtAEgACgCBEcNASAAQQhrKAIADQELIAFFDQEgARDAIEUNASO0ASABKAIERw0AIAFBCGsoAgBFDQELIAIQviALIAILlgIBBH8jAUEQayIEJAECfwJAI8UCIAAoAgRHBEAjtQEoAgAjAEHG1ghqELQaDAELAkACQAJAAkAjsAEoAugCIgUoAnwiBgRAAkAgACgCECIDRQ0AIAApAxggBSkDiAFSDQAgACkDICAFKQOAAVENAwsgBigCDCEDIARBADYCDCADIAAgBEEMahCf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ATYCACABDQAgABDVEAsCQCACRQ0AIAIgAigCAEEBayIBNgIAIAENACACENUQCwugAQEEfyMBQRBrIgIkASOyASEDAkAgACgCACIARQRAIAMhAQwBCyADIQEgACOyAUYNACAAKAIEIQMjsgEhBCAAEPoJIgFFBEAgBCEBDAELIAEgASgCAEEBayIENgIAIAQNACABENUQCyACIAE2AgggAiAAI7IBIgEgABs2AgQgAiADIAEgAxs2AgAjAEGjww1qIAIQzRwhACACQRBqJAEgAAvLAgEDfyMBQSBrIgMkASADIAE2AhggAyAANgIcIAMgAjYCFAJAIABFDQAjsAEoAugCIQQCQCAAKAIEKAJUQQBIBEAgAC0AV0HAAHENAQsgAyAANgIAIAQjwQEoAgAjAEHE5wFqIAMQqxoaDAELIAQoAjwiBQRAIAMgBTYCECADIAQoAkA2AgwgAyAEKAJENgIIIARBADYCRCAEQgA3AjwgBCADQRxqIANBGGogA0EUahC5GgJAIAMoAhQiAEUNACADKAIYIAAQ+wkaIAAgACgCAEEBayIBNgIAIAENACAAENUQCyADKAIcIgAgACgCAEEBayIBNgIAIAFFBEAgABDVEAsgBCADQRBqIANBDGogA0EIahC5GiADKAIMIgAgAygCGBCACiAEIAMoAhAgACADKAIIEKcaDAELIAQgACABIAIQpxoLIANBIGokAQviAQEGfyOwASgC6AIhAgJAAkAgAEUEQCACKAJIKAIAIgFFDQIgASOyAUcNAQwCCyAAKAIAIgFFDQEgASOyAUYNASACKAJIIQUgAiAANgJICyACKAJEIQQgAkEANgJEIAIoAkAhASACKAI8IQMgAkIANwI8IAIgAyABEKoaIAMgAygCAEEBayIGNgIAIAZFBEAgAxDVEAsCQCABRQ0AIAEgASgCAEEBayIDNgIAIAMNACABENUQCwJAIARFDQAgBCAEKAIAQQFrIgE2AgAgAQ0AIAQQ1RALIABFDQAgAiAFNgJICwsoAQF/IwFBEGsiBCQBIAQgAzYCDCAAIAEgAiADEMkaIARBEGokAUEAC54CAQN/IwFBEGsiBCQBIAQgACgCPDYCDCAEIAAoAkA2AgggBCAAKAJENgIAIABBADYCRCAAQgA3AjwgACAEQQxqIARBCGogBBC5GgJAIAQoAgAiBUUNACAE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QQFrIgE2AgAgAQ0AIAMQ1RALAkAgAkUNACACIAIoAgBBAWsiATYCACABDQAgAhDVEAsgAEUEQEEADwsgACAAKAIAQQFrIgI2AgBBACEBIAJFDQEMAgsgACABQQAQ4RohASAAIAAoAgBBAWsiAjYCACACDQELIAAQ1RALIAELCwAgACABQQAQ4RoLtAEBBH8CQCAAKAIUIgMEQCADIAIgAREAACIEDQELIAAoAgwiAwRAIAMgAiABEQAAIgQNAQsgACgCACIDBEAgAyACIAERAAAiBA0BCyAAKAIQIgMEQCADIAIgAREAACIEDQELIAAoAiAiBEEASgRAIABBKGohBUEAIQMDQCAFIANBAnRqKAIAIgYEQCAGIAIgAREAACIEDQMgACgCICEECyADQQFqIgMgBEgNAAsLQQAhBAsgBAu8AgEDfyMBQRBrIgIkASACQQxqIAJBCGogAkEEahC8GiPfAiAAKAIQIgEoAiwgASgCNGoQwyAiAQRAIAFBADoAGiABQQE7ARggAUEANgIIIAFCADcCEAsgAigCDCEDAkAgAUUEQAJAIANFDQAgAyADKAIAQQFrIgE2AgAgAQ0AIAMQ1RALAkAgAigCCCIBRQ0AIAEgASgCAEEBayIANgIAIAANACABENUQC0EAIQEgAigCBCIARQ0BIAAgACgCAEEBayIDNgIAIAMNASAAENUQDAELIAMgAigCCCACKAIEEKgaIAAoAhQEQCABQQQ6AEEgASABQRxqNgIMIAEgATYCMCABIAEoAgBBAWsiAzYCACADRQRAIAEQ1RALIAAoAhQhAQwBCyABIAA2AgwgACABNgIUCyACQRBqJAEgAQsZACABIAAgACgCIEECdEEoahDOPkEANgIYC8AEAQR/AkACQAJAIAAoAhQiAkUNACAAQQA2AhQgAigCACIBQQJOBEAgAkEcaiAAIAAoAiBBAnRBKGoQzj4hASACQQI6AEEgAiABNgIMIAIoAiwiASABKAJsQQF0akH0AGoiASACKAI4SwRAIAIgATYCOAsCQCACKAI0IgFFDQADQAJAIAEtACVBAUYNACABKAIcIAEoAhAiACAAKAJsQQF0akH0AGpPDQAgASgCGCIBDQEMAgsLAkACQCABKAIUIgANACABEOYaIgANABC9GgwBCyAAIAAoAgBBAWo2AgAgAiAANgIICyACQQA2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AUUNACABKAIIRQ0AIAIgADYCACO1ASgCACMAQYjWAWogAhCuGhpBACEDCyACQRBqJAEgAwsOACABBEAgARDEBQtBAAsTACABKAIAEP0QIAFBADYCAEEACwkAIwBBn+cJagsJACMAQeDEGWoLCQAjAEH0nQVqC1IBA38jAUEQayIAJAEQ0QMhASAAEJQbNgIIIAAgATYCBCAAIwAiAUHQugtqNgIAIAFBoPfsAWoiAkH6ASABQcvLAmogABDdHBogAEEQaiQBIAIL2gEBA38jAUEQayIEJAEgBEEANgIMAkAgARCzECIFQX9GDQAgACgCCEEAIAUgASACIARBDGoQmRsiAUUNACAAKAIIIAFGBEAgASABKAIAQQFrIgM2AgAgA0UEQCABENUQCyAAIAAoAgBBAWo2AgAgACEDDAELIwBBkKqrAWoQwiAiAkUEQCABIAEoAgBBAWsiADYCACAADQEgARDVEAwBCyACQgA3AgggAkEANgIQIAIQviAgAiABNgIIIAIgACgCECAEKAIMQQBHajYCECACIQMLIARBEGokASADC8gPAQd/IAAoAgQiByMAQaitqwFqRgRAIAAgASACIAMgBCAFEJobDwsCQCMAQdyrqwFqIAdGBEAgACACIAF2QR9xIghBAnRqKAIIIgdFBEACQCMAQaD57AFqKAIAIgdFBEAjAEGorasBakEAEMMgIgdFDQQgB0IANwIII7ABKALoAigCCCgCrAMiCigCBCIJIAdBCGsiBjYCACAGIAo2AgAgBkEEaiILIAkgCygCAEEDcXI2AgAgCiAGNgIEIwBBoPnsAWooAgANASMAQaD57AFqIAc2AgALIAcgBygCAEEBajYCAAsgByABQQVqIAIgAyAEIAUQmhshBCAHIAcoAgBBAWsiAjYCACACRQRAIAcQ1RALQQAhBiAERQ0CIAAoAogBIQMjAEHcq6sBahDCICIBBEBBACECIAFBCGpBAEGAARDQPhogASADQQFqNgKIASOwASgC6AIoAggoAqwDIgYoAgQiBSABQQhrIgM2AgAgAyAGNgIAIANBBGoiByAFIAcoAgBBA3FyNgIAIAYgAzYCBANAIAAgAkECdCIGaigCCCIDBEAgAyADKAIAQQFqNgIACyABIAZqIAM2AgggACACQQFyQQJ0IgZqKAIIIgMEQCADIAMoAgBBAWo2AgAL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QRBrIgIkAQJAAkACQCAAIAEgAkEMahCgG0EBaw4CAQACCyACKAIMIgMgAygCAEEBajYCAAwBCyPZASgCACABEK8aCyACQRBqJAEgAwtTAQF/IwFBEGsiAiQBIAIgAkEMajYCACACIAJBCGo2AgQgASMAQZiNAWpBAkECIAIQjRsEfyAAIAIoAgwgAigCCBCYGwVBAAshASACQRBqJAEgAQuRAQECfyMBQSBrIgIkASACQQA2AhggAiACQRxqNgIAIAIgAkEYajYCBAJAIAEjAEH0jgFqQQFBAiACEI0bRQ0AIAJBADYCFAJ/AkACQCAAIAIoAhwgAkEUahCgG0EBaw4CAQADCyACKAIUDAELIAIoAhgiASOyASABGwsiAyADKAIAQQFqNgIACyACQSBqJAEgAwsJACAAIAEQmxsLfAAjAEH8o6sBahDCICIBBEAgACAAKAIAQQFqNgIAIAEjAkGxDGo2AlAgASAANgIIIAAoAgghACABQgA3AEUgAUFAa0IANwIAIAFCADcCOCABQgA3AjAgAUIANwIoIAFCADcCICABQgA3AhggAUIANwIQIAEgADYCDAsgAQt8ACMAQcilqwFqEMIgIgEEQCAAIAAoAgBBAWo2AgAgASMCQbIMajYCUCABIAA2AgggACgCCCEAIAFCADcARSABQUBrQgA3AgAgAUIANwI4IAFCADcCMCABQgA3AiggAUIANwIgIAFCADcCGCABQgA3AhAgASAANgIMCyABC3wAIwBBlKerAWoQwiAiAQRAIAAgACgCAEEBajYCACABIwJBswxqNgJQIAEgADYCCCAAKAIIIQAgAUIANwBFIAFBQGtCADcCACABQgA3AjggAUIANwIwIAFCADcCKCABQgA3AiAgAUIANwIYIAFCADcCECABIAA2AgwLIAELBwAgABD/HAsWACAAKAIEQQJ0IAAoAgBBBHRqQShqC1wBAn8gASAAKAIQEQEAIQMgACgCCCADIAAoAgRBAWtxQQJ0aigCACICBEADQAJAIAIoAgQgA0cNACABIAIoAgggACgCFBEAAEUNACACDwsgAigCACICDQALC0EAC78DAgl/AXwgASAAKAIQEQEAIQMgACgCCCADIAAoAgRBAWtxIgZBAnRqKAIAIgJFBEBBAA8LAkADQCADIAIoAgRGBEAgASACKAIIIAAoAhQRAAANAgsgAiEEIAIoAgAiAg0AC0EADwsgBCAAKAIIIAZBAnRqIAQbIAIoAgA2AgAgACAAKAIAQQFrNgIAIAIoAgwhCSACIAAoAiQRAwACQCAAKAIAIgKzIAAoAgQiBLOVu0SamZmZmZm5P2NFDQBBECEFAn8gArgiCyALoEQzMzMzMzPjP6MiC0QAAAAAAADwQWMgC0QAAAAAAAAAAGZxBEAgC6sMAQtBAAsiA0EQTwRAQQEhAgNAIAIiBUEBdCECIAMgBUsNAAsLIAQgBUYNACAFQQJ0IgIgACgCIBEBACIDRQ0AIANBACACENA+IQEgACgCCCEIIAAoAgQiCgRAIAVBAWshBgNAIAggB0ECdGooAgAiAgRAA0AgAigCACEDIAIgASACKAIEIAZxQQJ0aiIEKAIANgIAIAQgAjYCACADIgINAAsLIAdBAWoiByAKRw0ACwsgCCAAKAIkEQMAIAAgATYCCCAAIAU2AgQLIAkLrAMCCH8BfEEQIAAoAiARAQAiA0UEQEF/DwsgASAAKAIQEQEAIQYgAyACNgIMIAMgATYCCCADIAY2AgQgACAAKAIAQQFqIgE2AgACQAJAIAGzIAAoAgQiBbOVQwAAAD9eRQ0AQRAhBAJ/IAG4IgsgC6BEMzMzMzMz4z+jIgtEAAAAAAAA8EFjIAtEAAAAAAAAAABmcQRAIAurDAELQQALIgJBEE8EQEEBIQEDQCABIgRBAXQhASACIARLDQALCyAEIAVGDQAgBEECdCIBIAAoAiARAQAiAkUNASACQQAgARDQPiEFIAAoAgghCCAAKAIEIgkEQCAEQQFrIQoDQCAIIAdBAnRqKAIAIgEEQANAIAEoAgAhAiABIAUgASgCBCAKcUECdGoiBigCADYCACAGIAE2AgAgAiIBDQALCyAHQQFqIgcgCUcNAAsLIAggACgCJBEDACAAIAU2AgggACAENgIEIAMoAgQhBiAEIQULIAMgACgCCCAFQQFrIAZxQQJ0aiIBKAIANgIAIAEgAzYCAEEADwsgACAAKAIAQQFrNgIAIAMgACgCJBEDAEF/CxwAIAAgASAAKAIMEQAAIgBFBEBBAA8LIAAoAgwLWwEDfwJAIAAoAgQEQANAIAAoAgggBEECdGohAwNAIAMoAgAiAwRAIAAgAygCCCADKAIMIAIgAREEACIFRQ0BDAQLCyAEQQFqIgQgACgCBEkNAAsLQQAhBQsgBQvoAQEDfyOGAyEHI78EIQYgBARAIAQoAgQhByAEKAIAIQYLQSggBhEBACIEBH8gBEKAgICAgAI3AgAgBEHAACAGEQEAIgU2AgggBUUEQCAEIAcRAwBBAA8LIAVCADcCACAFQgA3AjggBUIANwIwIAVCADcCKCAFQgA3AiAgBUIANwIYIAVCADcCECAFQgA3AgggBCAHNgIkIAQgBjYCICAEIAM2AhwgBCACNgIYIAQgATYCFCAEIAA2AhAgBCMCQdAMajYCDAJAIAAjzwJHDQAgASPEAkcNACAEIwJB0wxqNgIMCyAEBSAFCws6AQF/IAEQ/xwhAiAAKAIIIAIgACgCBEEBa3FBAnRqIQADQCAAKAIAIgAEQCAAKAIIIAFHDQELCyAAC8ABAQJ/QSgQ+hAiAwR/IANCgICAgIACNwIAIANBwAAQ+hAiAjYCCCACRQRAIAMQ/RBBAA8LIAJCADcCACACQgA3AjggAkIANwIwIAJCADcCKCACQgA3AiAgAkIANwIYIAJCADcCECACQgA3AgggAyOGAzYCJCADI78ENgIgIANCADcCGCADIAE2AhQgAyAANgIQIAMjAkHQDGo2AgwCQCAAI88CRw0AIAEjxAJHDQAgAyMCQdMMajYCDAsgAwUgAgsL8QIBB38CQAJAIAAoAgQiA0UEQCAAQQA2AgAMAQsgACgCCCEEA0AgBCABQQJ0IgVqKAIAIgIEQANAIAIoAgAhBCAAKAIYIgMEQCACKAIIIAMRAwALIAAoAhwiAwRAIAIoAgwgAxEDAAsgAiAAKAIkEQMAIAQiAg0ACyAAKAIEIQMgACgCCCEECyAEIAVqQQA2AgAgAUEBaiIBIANJDQALIABBADYCACADQRBGDQELQcAAIAAoAiARAQAiAUUNACABQgA3AgAgAUIANwI4IAFCADcCMCABQgA3AiggAUIANwIgIAFCADcCGCABQgA3AhAgAUIANwIIIAAoAgghBiAAKAIEIgcEQEEAIQUDQCAGIAVBAnRqKAIAIgIEQANAIAIoAgAhBCACIAEgAigCBEEPcUECdGoiAygCADYCACADIAI2AgAgBCICDQALCyAFQQFqIgUgB0cNAAsLIAYgACgCJBEDACAAIAE2AgggAEEQNgIECwuVAQEEfyAAKAIEIgIEQANAIAAoAgggA0ECdGooAgAiAQRAA0AgASgCACECIAAoAhgiBARAIAEoAgggBBEDAAsgACgCHCIEBEAgASgCDCAEEQMACyABIAAoAiQRAwAgAiIBDQALIAAoAgQhAgsgA0EBaiIDIAJJDQALCyAAKAIIIABBJGoiASgCABEDACAAIAEoAgARAwALhgQBCX8jAUEwayICJAEjsAEoAugCIQcCQEEAENYMIghFDQACQAJAAkACQAJAEIQZIgEEQCABIAEoAgBBAWo2AgAgASOwAUGM4ABqELkFIgMNAUEAIQMMAgsjAEH3iAJqEI8UIgFFBEAMBQsgAUEAIAJBAEEAEOcbIQMgASABKAIAQQFrIgQ2AgAgBEUEQCABENUQCyADRQ0EIAIgAzYCJCACI7ABQYzgAGo2AiAjAEGcAmogAkEgahDNHCIBDQBBACEEDAILAkACQCADKAIELQBXQSBxBEAgAyOwAUG47ABqELkFIgQNAiAHI9kBKAIAI7ABQbjsAGoQqhoMAQsgAyOwAUG47ABqELUQIgQNAQtBACEEDAELIAJCADcDECACIAg2AgwgAiABNgIIIAIgATYCBCACIAA2AgAgBCMAQYXfBWogAhCZCCIGRQ0AIAYgBigCAEEBayIJNgIAIAlFBEAgBhDVEAsgByAAEM4bIgYEQCAGIQUMAQsgBygCPA0AIAcj2QEoAgAgABCqGgsgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCyADRQ0BCyADIAMoAgBBAWsiATYCACABDQAgAxDVEAsgBEUNACAEIAQoAgBBAWsiATYCACABDQAgBBDVEAsgCCAIKAIAQQFrIgE2AgAgAQ0AIAgQ1RALIAJBMGokASAFCzUBAn8gABCPFCIARQRAQQAPCyAAEMYbIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC6YBAQN/AkAQsB8iAkF/Rg0AIwBBpPnsAWooAgAiAEUEQCMAQaT57AFqELIfIgA2AgAgAEUNAQsjAEGo+ewBagJ/IAIjAEHEsKsBaigCACIBRgRAIwBBqPnsAWooAgBBAWoMAQsCQCABQX9GBEAgAEEAELcfDQELENkYIQEjAEGk+ewBaigCAEEBELcfGiABENoYCyMAQcSwqwFqIAI2AgBBAQs2AgALC2wBA38jACEBAkAQsB8iAkF/Rg0AIAFBpPnsAWooAgAiAUUNAEF/IQAjAEHEsKsBaigCACACRw0AIwBBqPnsAWoiACAAKAIAQQFrIgI2AgBBASEAIAINACMAQcSwqwFqQX82AgAgARC1HwsgAAtJAQJ/IwFBIGsiACQBQQAgAEEMahDfEBojzgIjxQY2AgAjAEGw+ewBaiIBKAIAEPkQIAFBADYCAEEAIABBDGoQ7hAgAEEgaiQBCy0BAX8jsAEoAugCKAIIKAL4AyIARQRAIwAiAEGElAFqIABBgxBqEKUdAAsgAAsLACAAKAL4A0EARwtnAQJ/IAAQkBQiAQRAI7ABKALoAiICIAEQzhsiAEUEQCAADwsjsgEgAEYEQCAADwsgAigCCCAAIAEQzxtBAE4EQCAADwsgACAAKAIAQQFrIgE2AgAgAUUEQCAAENUQCyACENAbC0EAC6QBAQF/IAAoAggoAvgDIgJFBEAgACO+ASgCACMAQe66AmoQsxpBAA8LIAIgAigCAEEBajYCAAJAI8sBIAIoAgRGBEAgAiABEJEOIgFFBEBBACEBDAILIAEgASgCAEEBajYCAAwBCyACIAEQuQUiAQ0AQQAhASAAI9kBKAIAELcaRQ0AIAAQrRoLIAIgAigCAEEBayIANgIAIABFBEAgAhDVEAsgAQuvAQEDfyMBQRBrIgQkASABI7ABQYCCAWoQtRAiARCEECEDAkAgAUUNACABIAEoAgBBAWsiBTYCACAFDQAgARDVEAsCQCADRQRAQQAhAQwBCyAAKAKIBCEBIAQgAjYCDCAEIAE2AghBACEBI7ABQZyKAWogBEEIakGCgICAeEEAEKEIIgNFBEBBfyEBDAELIAMgAygCAEEBayICNgIAIAINACADENUQCyAEQRBqJAEgAQvhAgEJfyMBQRBrIgEkASAAIAFBDGogAUEIaiABQQRqELoaAkAgASgCDEUNACAAKAIIEM4dKAKMAQ0AIAEoAgwj9gEoAgAQuRIhCSABKAIEIgJFDQAgAUEEaiEGA0AgAkEIaiEIIAIoAgghBwJ/AkAgAigCDBD+CyICKAJQIwBBxo8LahCWFQR/IAQgBiAFGwUgAigCUCMAQf+UC2oQlhUiA0UNASAEIAYgBCADGyAFGwshBAJAIAkNACACKAJUIwBBkMsIahCWFQ0AQQEhBSAIDAILIAcEQCAHIAcoAgBBAWo2AgALIAQoAgAhAyAEIAc2AgBBASEFAkAgA0UNACADIAMoAgBBAWsiBjYCACAGDQAgAxDVEAsgBAwBC0EAIQUgCAshBiACIAIoAgBBAWsiAzYCACADRQRAIAIQ1RALIAciAg0ACwsgACABKAIMIAEoAgggASgCBBCnGiABQRBqJAELWAECfwJAI7ABKALoAiICIAAQzhsiAUUNACABI7IBRg0AIAIoAgggASAAEM8bQQBODQAgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCyACENAbQQAhAQsgAQsXACOwASgC6AIoAggoAvgDIAAgARC9BQsXACOwASgC6AIoAggoAvgDIAAgARCSBgt6AQR/I7ABKALoAigCCCgCiAQjAEGMwwVqELQQIgBFBEBBfw8LIAAjAEHrmgpqELQQIQFBfyECIAAgACgCAEEBayIDNgIAIANFBEAgABDVEAsCQCABRQ0AIAEQoA0hAiABIAEoAgBBAWsiADYCACAADQAgARDVEAsgAgsIACPGCigCAAuOAwEEfyMBQRBrIgYkAQJAAkACQCAABEAgACgCBCIEI9QBRg0BIAQj1AEQuRINAQsjAEG4pQlqQaADENUaDAELIAAQgBAiBUUEQCMAQbilCWpBpgMQ1RoMAQsjsAEoAugCIQcgAyABIAAQvQVBAEgNAEF/IQQgByAAIAUQyx1BAEgEQCADIAEQvwUaDAILIAUoAhwhAwJAAkAjsAEoAiAgBygCCEcEQEEAIQQgA0F/Rg0BDAQLIANBf0cNAQsCQCAFKAIQIgRFDQAgBUEANgIQIAQgBCgCAEEBayIDNgIAIAMNACAEENUQC0F/IQQgABD9DyIARQ0CIAUgABCpDiIANgIQIABFDQILIwBBrPnsAWooAgBFBEAjAEGs+ewBahD/DSIANgIAIABFDQELIAYgATYCBCAGIAI2AgBBAiAGEJgSIgBFDQAjAEGs+ewBaigCACAAIAUQjQ4hASAAIAAoAgBBAWsiBDYCACAERQRAIAAQ1RALQQAhBCABQQBODQELQX8hBAsgBkEQaiQBIAQLOQAgARC2FSIBRQRAQX8PCyAAIAEgASACENYbIQIgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCyACC2UBA38jsAEoAugCIAAQ2RsiAEUEQEEADwsgAEEAEMIWIQEgACAAKAIAQQFrIgM2AgAgA0UEQCAAENUQCwJAIAFFDQAgARDEFiECIAEgASgCAEEBayIANgIAIAANACABENUQCyACC/4BAQN/IAAoAggoAvgDIgNFBEAgACO+ASgCACMAQc4QahCzGkEADwsCQAJAAkACQCPLASADKAIERgRAIAMgARCRDiICRQ0CIAIgAigCAEEBajYCAAwBCyPZASEEIAMgARC5BSECIAAgBCgCABC3GkUNACAAEK0aC0EAIQQgACgCPA0CIAJFDQEgAigCBCIAI9QBRgRAIAIPCyAAI9QBELkSBEAgAg8LIAIgAigCAEEBayIANgIAIAANASACENUQDAELIAAoAjwNAQsgARDxDyIARQ0AIAMgASAAEL0FRQRAIAAPCyAAIAAoAgBBAWsiAzYCACADDQAgABDVEAsgBAs1AQJ/IAAQjxQiAEUEQEEADwsgABDYGyEBIAAgACgCAEEBayICNgIAIAJFBEAgABDVEAsgAQs7AQF/IAAQjxQiAEUEQEEADwsgACABQQBBABDcGyEBIAAgACgCAEEBayICNgIAIAJFBEAgABDVEAsgAQuAAgEFfyMBQSBrIgQkAQJAI7ABKALoAiIIIAAQ3xsiBUUEQAwBCyACRQRAIAEoAlAhAgsCQCAIKAIIKAKIBCMAQYzDBWoQtBAiB0UEQCAFIAUoAgBBAWsiADYCACAARQ0BDAILIARBADYCECAEIAM2AgwgBCACNgIIIAQgADYCBCAEIAU2AgAgByOwAUHMiAFqIAQQogghAiAHIAcoAgBBAWsiAzYCACADRQRAIAcQ1RALIAIEQCACIAIoAgBBAWsiBjYCACAGRQRAIAIQ1RALIAggACAFIAEQ4BshBgsgBSAFKAIAQQFrIgA2AgAgAA0BCyAFENUQCyAEQSBqJAEgBgvbAgEDfyMBQRBrIgUkAQJAIAAQjxQiAEUEQEEAIQIMAQsCfwJAAkACQCADBEAgAxDQFCIEDQFBACEDQQAhBEEADAQLQQAhAyACRQ0CDAELIAINACOwASgC6AIoAggiAwRAIAMoAogEIwBBjMMFahC0ECICBEAgBSAENgIMIAUgAjYCCCOwAUH0iAFqIAVBCGpBgoCAgHhBABChCCEDIAIgAigCAEEBayIGNgIAIAZFBEAgAhDVEAsgAw0DCxC9GkEAIQMMAgsjACIDQdq4AmogA0G73ANqEKUdAAsgAhDQFCIDDQBBACEDQQAMAQsgACABIAMgBBDcGwshAiAAIAAoAgBBAWsiATYCACABRQRAIAAQ1RALAkAgA0UNACADIAMoAgBBAWsiADYCACAADQAgAxDVEAsgBEUNACAEIAQoAgBBAWsiAzYCACADDQAgBBDVEAsgBUEQaiQBIAILDQAgACABIAJBABDdGwuWAQEDfyAAIAEQ2RsiAkUEQEEADwsjsAEhBAJAAkAgAhD9DyIDIARBjOAAahCvDiIEBH8gBAUgAyOwAUGM4ABqEIAZEI0OC0EASARAIAAgARDhGyACIAIoAgBBAWsiATYCAEEAIQMgAUUNAQwCCyADIAMoAgBBAWo2AgAgAiACKAIAQQFrIgE2AgAgAQ0BCyACENUQCyADC4EBAQF/IwFBEGsiBCQBAkAgAyACIAIQ5BgiAkUEQCAAIAEQ4RtBACECDAELIAIgAigCAEEBayIDNgIAIANFBEAgAhDVEAsgACABEM4bIgINAEEAIQIgACgCPA0AIAQgATYCACAAI/YBKAIAIwBBiLsCaiAEEKsaGgsgBEEQaiQBIAILmgEBAn8jAUEQayICJAEgACACQQxqIAJBCGogAkEEahC6GgJAI8sBIAAoAggoAvgDIgMoAgRGBEAgAyABI7IBEJ8OIgBFDQEgACAAKAIAQQFrIgE2AgAgAQ0BIAAQ1RAMAQsgAyABEL8FQQBODQAgACPZASgCABC3GkUNACAAEK0aCyACKAIMIAIoAgggAigCBBDGGiACQRBqJAEL9QEBB38jsAEoAugCIQYjACIFQezaB2oQ5R4hBCAFQdaRAmoQ5R4hBQJAAkAgBEUNACAFRQ0AIAUQ1wwiB0EASA0AIAQgABCRDiIBDQEgBigCPA0AIAQgACOyARCNDg0AAkAgBwRAQQAhAQNAIAUgARDYDCICRQ0DIAIgABCUCCICDQIgBiP2ASgCABC3GkUNAyAGEK0aIAFBAWoiASAHRw0ACwsjsgEiAyADKAIAQQFqNgIAIAMPCyAEIAAgAhCNDkEATgRAIAIPCyACIAIoAgBBAWsiBDYCACAEDQAgAhDVEAsgAw8LIAEgASgCAEEBajYCACABC+oEAQh/IwFBIGsiBCQBI7ABKALoAiEGAkAgACAEQQhqEOQbIgNBfnFBAkYNACMAQZ2oCmohAgJAAkACQAJAAkAgA0EBaw4FBQMAAQIECyMAQbHIBWohAgwCCyMAQbyoCmohAgwBCyMAQZPACGohAgsgBCAANgIAIAIgBBCkFCIDRQRAEL0aQQAgAEEAENQaGkF/IQEMAgsgAyAAQQAQ1BoaQX8hASADIAMoAgBBAWsiADYCACAADQEgAxDVEAwBCyAEQQhqEOUbIgNFBEBBfyEBDAELAkACQAJAAkAgBC0AGARAIAYgABDZGyICRQ0DIAIQ/Q8hAUEAENYMIgVFBEAgAiACKAIAQQFrIgA2AgAgAA0CIAIQ1RAMAgsgASMAQcbVCWogBRC9DiEHIAUgBSgCAEEBayIINgIAIAhFBEAgBRDVEAsgAiACKAIAQQFrIgU2AgAgBUUEQCACENUQCyAHDQELIAYgABDfGyIBRQ0CIAYgACABIAMQ4BsiAEUNASAAIAAoAgBBAWsiAjYCACACRQRAIAAQ1RALAkAgBCgCHCIABEAgABCPFCIARQ0DDAELI7IBIgAgACgCAEEBajYCAAsgASMAQZvYCWogABC9DiECIAAgACgCAEEBayIGNgIAIAZFBEAgABDVEAsgAg0BIAEgASgCAEEBayIANgIAIABFBEAgARDVEAsgAyADKAIAQQFrIgA2AgBBASEBIAANBAwDCyABRQ0BCyABIAEoAgBBAWsiADYCACAADQAgARDVEAtBfyEBIAMgAygCAEEBayIANgIAIAANAQsgAxDVEAsgBEEgaiQBIAELiwQBBH8gAQRAIAFCADcCACABQgA3AhAgAUIANwIIC0EBIQMCQCAARQ0AIAAjsgFGDQAgABDZFCIERQRAEL0aQQEPCwJAI8QGKAIAIgIoAgAiAwRAA0AgBCADEO9ERQ0CIAJBFGoiAigCACIDDQALCwJAI8MGKAIAIgJFDQAgAigCACIDRQ0AA0AgBCADEO9ERQ0CIAJBFGoiAigCACIDDQALCyOwASgC6AIoAggiBSgCjAQiAkEATARAQQIhAyACQQBIDQIgBSgCzAVFDQILI8IGKAIAIgIoAgAiAwRAA0AgBCADEO9ERQ0CIAJBFGoiAigCACIDDQALC0ECIQMjwQYoAgAiAigCACIFRQ0BA0AgBCAFEO9ERQ0BIAJBFGoiAigCACIFDQALDAELIAEEQCABIAA2AgAgASACKAIENgIEIAEgAigCEDYCCCABIAIoAggiAzYCDEEAIQUgASACKAIMQQBHOgAQIANBAEgEQCABQQE6ABAgAUEAIANrNgIMCyABIAQ2AhQCQCPFCigCACIAKAIAIgNFDQADQCAEIAMQ70RFBEAgASAAKAIENgIUQQEhBQwCCyAAQQhqIgAoAgAiAw0ACwsgASAFOgARCyACKAIEIgRFBEAgAigCCEUEQEEAIQMgAigCEA0CC0EEDwsgBC0AAEUEQEEFDwtBAEEFIAIoAggbIQMLIAML5gEBA38jAUEgayIDJAECQCAAKAIIIgEEQCABEQgAIQAMAQsgACgCBCAAKAIMELscIgFFBEAgAyAAKAIAIgI2AgAjAEGTwAhqIAMQpBQiAUUEQBC9GkEAIQBBACACQQAQ1BoaDAILQQAhACABIAJBABDUGhogASABKAIAQQFrIgI2AgAgAg0BIAEQ1RAMAQsjuAEgASgCBEYEQCABIQAMAQsgAyAAKAIANgIQI7UBKAIAIwBBkqkBaiADQRBqEK4aGiABIAEoAgBBAWsiAjYCAEEAIQAgAg0AIAEQ1RALIANBIGokASAACzUBAn8gABC2FSIARQRAQX8PCyAAEOMbIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC8MRAgl/BH4jAUGQAWsiBiQBI7ABKALoAiEHAkACQCAARQRAIAcjtwEoAgAjAEHApwdqELMaDAELIAAoAgQtAFdBEHFFBEAgByO1ASgCACMAQdaMBmoQsxoMAQsgBygCCCELIAAtABBBgAFxRQRAIAAQghRBAEgNAQsgBEEASARAIAcjtwEoAgAjAEH4yQtqELMaDAELAkACQAJAIAQEQCABRQRAIAcj2QEoAgAjAEHXkAJqELMaDAULIAEoAgQtAFdBIHFFBEAgByO1ASgCACMAQdqTAWoQsxoMBQsCQCOyASABI7ABQYD4AGoQkQ4iAkYEQEEAIQIMAQsgAg0AQQAhAiAHKAI8DQULAkAgASOwAUGAggFqEJEOIgVFBEAgBygCPA0BCwJAIAIEQCACIAIoAgBBAWo2AgAjACEJI7UBIQggAigCBC0AV0EQcUUEQCAJQZCNBmohAQwGCyAFRQ0BIAUjsgFGDQEgBSOwAUH0oQFqELUQIgFFDQYgAiABQQIQsBAhBSABIAEoAgBBAWsiCDYCACAIRQRAIAEQ1RALIAVBAEgNBiAFDQEjwQQoAgAjAEH/4QBqQQEQ8hZBAE4NAQwGCwJAIAVFDQAgBSOyAUYNACAFI7ABQfShAWoQtRAiAkUNByMAIQUjtQEhCCACKAIELQBXQRBxDQEgBUHEiwZqIQEMBQsjwQQoAgAjAEH11AlqQQEQ8hZBAEgNBiABI7ABQfz0AGoQkQ4iAkUEQCAHKAI8DQcgByPZASgCACMAQdeQAmoQsxoMBwsgAiACKAIAQQFqNgIAIwAhCSO1ASEIIAIoAgQtAFdBEHFFBEAgCUGpjQZqIQEMBQsgASOwAUHM+ABqEK8OIgFBAEgNBSABDQAgAi0AEEGAAXFFBEAgAhCCFEEASA0GCyACQS5BACACKAIIQX8QixUhBSMAQZjrB2ohASP2ASEIAkAgBUECag4CBgUACyACQQAgBRChFSIBRQ0FIAIgAigCAEEBayIFNgIAIAVFBEAgAhDVEAsgASECCyMAIQUj9gEhCCACKAIIIgFFBEAgBUGY6wdqIQEMBAsCQCAEQQJPBEBBASEFA0ACQCACQS5BACABQX8QixUiAUECag4CBAMACyAFQQFqIgUgBEcNAAsLIAJBACABEKEVIQEgAiACKAIAQQFrIgU2AgAgBUUEQCACENUQCyABRQ0GIAAoAghFBEAgASECDAQLIAYgADYChAEgBiABNgKAASMAQY/3CWogBkGAAWoQpBQhAiABIAEoAgBBAWsiBTYCACAFRQRAIAEQ1RALIAINAwwGCyAHI/YBKAIAIwBBz+sHahCzGgsgAkUNBAwDCyAAKAIIRQRAIAcjtwEoAgAjAEHApwdqELMaDAQLIAAgACgCAEEBajYCACAAIQILAkACQAJAIAcgAhDOGyIIRQRAQQAhBUEAIQEgBygCPEUNAQwDCyOyASAIRwRAQQAhASAHKAIIIAgiBSACEM8bQQBODQIMAwsjsgEiASABKAIAQQFrIgE2AgAgAQ0AI7IBENUQCyAHKAIIIgoQzh0hBSMAIgFBuPnsAWopAwAhECAFKAIkIQ0jsgEhBSABQdXrBWoQ5R4hCCABQdPpBWoQ5R4hCSABQdaRAmoQ5R4hDCAGIAU2AmQgBiAMIAUgDBs2AnAgBiACNgJgIAYgCSAFIAkbNgJsIAYgCCAFIAgbNgJoQQAhBSAHIAFBzc0AaiABQcG1CmogBkHgAGoQ6B5BAEgEQEEAIQEMAgsCQCANRQRAIAooAogEIQEgCigCvAYhCCAGQQA2AiggBiAINgIkIAYgAjYCICABI7ABQaSIAWogBkEgahCiCCEIDAELI8wBKAIAIQ0jAEHA+ewBai0AAEUEQCMAIgFBvLwOakE3QQEgDRCOQBogAUHA+ewBakEBOgAACyMAIglBtPnsAWoiASABKAIAQQFqNgIAEMIeIQ4gCUG4+ewBaiIMQgA3AwAgCigCiAQhCCAKKAK8BiEKIAZBADYCWCAGIAo2AlQgBiACNgJQIAgjsAFBpIgBaiAGQdAAahCiCCEIEMIeIQ8gASABKAIAQQFrNgIAIA8gDn0iDiAMKQMAfUEBELgeIQ8gDkEBELgeIREgASgCACEBIAZBQGsgAhDZFDYCACAGIAlB6eIOajYCPCAGIAFBAXQ2AjggBiARPgI0IAYgDz4CMCANIAlB57EOaiAGQTBqEOs/GiAMIA4gEHw3AwALQQAhASAIRQ0BCyAIIQUCQAJAAkAgA0UNACADI7IBRg0AIAMQsRAiCEEASA0DIAgNAQsgBEEAIAAoAggiA0EATBtFBEACQAJAIABBLkEAIANBARCLFSILQQJqDgIFAAELIAUgBSgCAEEBajYCAAwDCyAERQRAIABBACALEKEVIgBFDQQgAEEAIAdBAEEAEOcbIQEgACAAKAIAQQFrIgQ2AgAgBA0EIAAQ1RAMBAsgAkEAIAIoAgggCyADa2oQoRUiAEUNAyAHIAAQzhshBCAAIAAoAgBBAWsiAzYCACADRQRAIAAQ1RALIAQEQCAEIQEMBAsgBygCPA0DIAYgADYCACAHI9kBKAIAIwBBj9cIaiAGEKsaGgwDCyAFIAUoAgBBAWo2AgAMAQsgBSOwAUHM+ABqIAZBjAFqEKwQQQBIDQEgBigCjAEiAARAIAAgACgCAEEBayIBNgIAIAFFBEAgABDVEAsgCygCiAQhACALKAK8BiEBIAZBADYCHCAGIAE2AhggBiADNgIUIAYgBTYCECAAI7ABQZyJAWogBkEQahCiCCEBDAILIAUgBSgCAEEBajYCAAsgBSEBCyACIAIoAgBBAWsiADYCACAARQRAIAIQ1RALAkAgBUUNACAFIAUoAgBBAWsiADYCACAADQAgBRDVEAsgAQ0DDAILIAcgCCgCACABELMaCyACIAIoAgBBAWsiADYCACAADQAgAhDVEAsgBxDQG0EAIQELIAZBkAFqJAEgAQs7ACAAEI8UIgBFBEBBAA8LIAAgASAAIAMgBBDnGyEEIAAgACgCAEEBayIDNgIAIANFBEAgABDVEAsgBAv+AQEFfyMBQRBrIgQkAQJAAkACQAJAI7ABIgEoAugCIgMgAUGYmAFqEM4bIgFFDQAgASOyAUYNACADKAIIIAEjsAFBmJgBahDPG0EATg0CIAEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgAxDQGwwBCyABDQELQQAhAxC1Gg0BIwBB0bYJahCPFCICRQ0BIAIQxhshASACIAIoAgBBAWsiBTYCACAFRQRAIAIQ1RALIAFFDQELIAQgADYCDCAEIAE2AggjsAFB4KYBaiAEQQhqQYKAgIB4QQAQoQghAyABIAEoAgBBAWsiADYCACAADQAgARDVEAsgBEEQaiQBIAMLDQAjAEHIsKsBahDwDwvkAQEEfwJAIAAgASABEOwbIgQNAEEAIQQgACgCPA0AI84CKAIAIgUoAgAiAwRAIAAoAggoAvgDIQADQCABIAMQlhUEQCAFKAIEIgNFBEAgARDYGyIBRQ0EIAEgASgCAEEBajYCACABDwsgAxB/IgNFDQMCQCADKAIEIgYj3QJHBEAgBiPdAhC5EkUNAQsgAyACQfUHEPoPDwsgAxCAECICRQ0DIAIgBSgCBDYCCCADQQAgAyABIAEgABDWG0EAThsPCyAFQQhqIgUoAgAiAw0ACwsjsgEiBCAEKAIAQQFqNgIACyAEC4cDAQZ/IwFBIGsiBCQBAkAjAEGs+ewBaigCAEUNACAEIAE2AhQgBCACNgIQQQIgBEEQahCYEiIDRQ0AIwBBrPnsAWooAgAgAxCRDiEFIAMgAygCAEEBayIGNgIAIAZFBEAgAxDVEAsgBUUNACAAKAIIKAL4AyEGAkAgBSgCHEF/RgRAIAUoAhBFDQIgACABENkbIgNFDQIgAxD9DyIIRQRAIAMgAygCAEEBayIBNgIAIAENAyADENUQDAMLIAggBSgCEBCjDkUNASADIAMoAgBBAWsiATYCACABDQIgAxDVEAwCCyAFKAIIIgNFDQEgAxB/IgNFDQEgBiABIAMQvQVBf0cNACADIAMoAgBBAWsiATYCACABDQEgAxDVEAwBCyAAIAMgBRDLHUEASARAIAYgARC/BRogAyADKAIAQQFrIgE2AgAgAQ0BIAMQ1RAMAQsgACgCCBDOHSgCjAEEQCAEIAI2AgQgBCABNgIAIwBBudQOaiAEEIAfCyADIQcLIARBIGokASAHC/gBAQV/IwFBIGsiBSQBA0AgAyIEQQFqIQMgACAEQQN0aigCAA0ACwJAIARFBEAMAQsjzgIoAgAhAgNAIAEiA0EBaiEBIAIgA0EDdGooAgANAAtBACAFQQxqEN8QGkF/IQECQCADIARqIgJB/v///wFLDQAjAEGw+ewBaigCACACQQN0QQhqEPgQIgJFDQAjzgIoAgAiASMAQbD57AFqKAIARwRAIAIgASADQQN0QQhqEM4+GgsgAiADQQN0aiAAIARBA3RBCGoQzj4aI84CIAI2AgAjAEGw+ewBaiACNgIAQQAhAQtBACAFQQxqEO4QCyAFQSBqJAEgAQs5AQF/IwFBEGsiAiQBIAJCADcDACACQgA3AwggAiABNgIEIAIgADYCACACEO0bIQEgAkEQaiQBIAELNwEBfyAAEMYbIgBFBEBBAA8LIAAgARC1ECEBIAAgACgCAEEBayICNgIAIAJFBEAgABDVEAsgAQueAQEDfyAAEI8UIgBFBEBBAA8LAkACQCABEI8UIgFFBEAgACAAKAIAQQFrIgE2AgAgAUUNAQwCCwJAIAAQxhsiAkUEQAwBCyACIAEQtRAhAyACIAIoAgBBAWsiBDYCACAEDQAgAhDVEAsgASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAIAAoAgBBAWsiATYCACABDQELIAAQ1RALIAMLyAEBAn8CQEEAENYMIgBFDQAjwAYoAgAiAQRAA0ACQAJAIAEQjxQiAUUEQCAAIAAoAgBBAWsiAzYCAEEAIQIgACEBIANFDQEMBQsgACABEN4MQQBODQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABIAEoAgBBAWsiAzYCAEEAIQIgAw0ECyABENUQQQAPCyABIAEoAgBBAWsiAzYCACADRQRAIAEQ1RALI8AGIAJBAWoiAkECdGooAgAiAQ0ACwsgACECCyACCxMAIwBBxLCrAWooAgBBf0cQrgYLFwAQyBsjsgEiACAAKAIAQQFqNgIAIAALiAEAIwAhAQJAAkAQsB8iAEF/Rg0AIAFBpPnsAWooAgAiAUUNACMAQcSwqwFqKAIAIABHDQEjAEGo+ewBaiIAIAAoAgBBAWsiADYCACAADQAjAEHEsKsBakF/NgIAIAEQtR8LI7IBIgAgACgCAEEBajYCACAADwsjvgEoAgAjAEGM1QVqELQaQQALjQUBAn8jAUFAaiIEJAECQAJ/AkAgAwRAIAMoAgghBQwBCyABRQ0AQQEgAkEBRg0BGgtBACEAIAEgAkEAIAMjAEHMs6sBakEBQQFBACAEQSBqEIobIgFFDQEgAiAFagshACABKAIAIgMoAgQtAFdBEHFFBEAjACIBQaGbBWogAUGNvwtqIAFBn6oDaiADEPkaQQAhAAwBCyADLQAQQYABcUUEQCADEIIUQX9GBEBBACEADAILIAEoAgAhAwtBACECIABBAUcEQEEAIQAgASgCBBCxECICQQBIDQELIAMgBEEoahDkGyIBQX5xQQJGBEAjsgEiACAAKAIAQQFqNgIADAELIwBBnagKaiEAAkACQAJAAkACQAJAIAFBAWsOBQAEAQIDBQsjsgEiACAAKAIAQQFqNgIADAULIwBBscgFaiEADAILIwBBvKgKaiEADAELIwBBk8AIaiEACyAEIAM2AhAgACAEQRBqEKQUIgFFBEAQvRpBACEAQQAgA0EAENQaGgwCC0EAIQAgASADQQAQ1BoaIAEgASgCAEEBayIDNgIAIAMNASABENUQDAELQQAhA0EAIQECQCACRQ0AIAQoAiwgBCgCNEGAAhCjDyIBDQBBACEADAELAkACQCAEKAI8IgBFDQAgAC0AAEUNACAAEI8UIgMNACABIAEoAgBBAWsiAzYCAEEAIQAgA0UNAQwCCyAEIAEjsgEiACABGzYCACAEI7sBI7wBIAQtADgbNgIEIAQgAyAAIAMbNgIIQQMgBBCYEiEAAkAgA0UNACADIAMoAgBBAWsiAjYCACACDQAgAxDVEAsgAUUNASABIAEoAgBBAWsiAzYCACADDQELIAEQ1RALIARBQGskASAAC4AFAQJ/IwFB4ABrIgAkAQJAAkAgAkEBa0ECSQ0AIwBB5pYBaiACQQFBAhCMGw0AQQAhAgwBCyABKAIAIgMoAgQtAFdBEHFFBEAjACICQeaWAWogAkGNvwtqIAJBn6oDaiADEPkaQQAhAgwBCyADLQAQQYABcUUEQCADEIIUQX9GBEBBACECDAILIAEoAgAhAwsjsgEhBCACQQJOBEAgASgCBCEECyAAQgA3A1ggAEIANwNQIABCADcDSEEAIQIgAEFAa0EANgIAIABCADcDOCAAQgA3AzAgAEIANwMoIABCADcDICAAQgA3AxgCQAJAIAQQwgUEQCAEIABBGGpBgAIQxwUNAyAAIAAoAhg2AkwgACAAKAIgNgJUDAELI7IBIARHBEAjACIDQeaWAWogA0GBuwtqIANB8qYCaiAEEPkaDAMLIwBBnagKaiECAkACQAJAAkACQCADIABByABqEOQbQQFrDgUDAwABAgQLIwBBscgFaiECDAILIwBBvKgKaiECDAELIwBBk8AIaiECCyAAIAM2AhAgAiAAQRBqEKQUIgFFBEAQvRpBACECQQAgA0EAENQaGgwEC0EAIQIgASADQQAQ1BoaIAEgASgCAEEBayIDNgIAIAMNAyABENUQDAMLIAAoAkgNAQsgACADNgJICwJAIAAoAlQNACAAKAJQDQAgACADNgIAIwBBk8AIaiAAEKQUIgFFBEAQvRpBACECQQAgA0EAENQaGgwCC0EAIQIgASADQQAQ1BoaIAEgASgCAEEBayIDNgIAIAMNASABENUQDAELI7IBIQMgAEHIAGoQ5RshAiADIARGDQAgAEEYahDEBQsgAEHgAGokASACC+IBAQJ/IwFBIGsiAiQBAkAgASgCBC0AV0EQcUUEQCMAIgBBhusHaiAAQZjwAGogAEGfqgNqIAEQ+RpBACEADAELAkAgAS0AEEGAAXENACABEIIUQX9HDQBBACEADAELIAEgAkEIahDkGyIAQXtxBEAgAiABNgIAIwAgAEECdGpBnLSrAWooAgAgAhCkFCIDRQRAEL0aQQAhAEEAIAFBABDUGhoMAgtBACEAIAMgAUEAENQaGiADIAMoAgBBAWsiATYCACABDQEgAxDVEAwBCyACLQAYEK4GIQALIAJBIGokASAAC0kBAX8jsAEoAugCIQIgASMAQeGpB2oQtBAiAEUEQEEADwsgAiAAIAEQ6xshASAAIAAoAgBBAWsiAjYCACACRQRAIAAQ1RALIAELigEBAn8gASgCBC0AV0EQcUUEQCMAIgBBi5sFaiAAQZjwAGogAEGfqgNqIAEQ+RpBAA8LAkAgAS0AEEGAAXENACABEIIUQX9HDQBBAA8LI7ABKALoAiECQQAhACABEOMbIgNBAE4EfyADRQRAI7IBIgEgASgCAEEBajYCACABDwsgAiABENkbBSAACwulAQECfyAB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7whqIQIgBEGAjgZqIQVBASEEQQALNgIMIAAgAjYCCCAAIAU2AgQgACAENgIADAELIAEoAsABEPkQIAEgBjYCwAEgAigCuAEhBUEAIQYgAyABQQAQkh0CQCAAAn8gAygCACIEBEAgAygCCCECIAMoAgQhBSADKAIMDAELIAVFDQEjACEEIAUQ/hAiBg0BIARB2e8IaiECIARBgI4GaiEFQQEhBEEACzYCDCAAIAI2AgggACAFNgIEIAAgBDYCAAwBCyABKAK4ARD5ECABIAY2ArgBIAEgAigCSDYCSCABQdQAaiACQdQAahCOHEEASARAIABBADYCDCAAQQE2AgAgACMAIgFB2e8IajYCCCAAIAFB0RRqNgIEDAELIAFB5ABqIAJB5ABqEI4cQQBIBEAgAEEANgIMIABBATYCACAAIwAiAUHZ7whqNgIIIAAgAUHRFGo2AgQMAQsgAUHcAGogAkHcAGoQjhxBAEgEQCAAQQA2AgwgAEEBNgIAIAAjACIBQdnvCGo2AgggACABQdEUajYCBAwBCyABQcwBaiACQcwBahCOHEEASARAIABBADYCDCAAQQE2AgAgACMAIgFB2e8IajYCCCAAIAFB0RRqNgIEDAELIAEgAigCyAE2AsgBIAMgASABQdQBaiACKALUARCbHCADKAIAIgQEQCADKAIIIQEgAygCBCECIAAgAygCDDYCDCAAIAE2AgggACACNgIEIAAgBDYCAAwBCyADIAEgAUHYAWogAigC2AEQmxwgAygCACIEBEAgAygCCCEBIAMoAgQhAiAAIAMoAgw2AgwgACABNgIIIAAgAjYCBCAAIAQ2AgAMAQsgAyABIAFB3AFqIAIoAtwBEJscIAMoAgAiBARAIAMoAgghASADKAIEIQIgACADKAIMNgIMIAAgATYCCCAAIAI2AgQgACAENgIADAELIAMgASABQeABaiACKALgARCbHCADKAIAIgQEQCADKAIIIQEgAygCBCECIAAgAygCDDYCDCAAIAE2AgggACACNgIEIAAgBDYCAAwBCyADIAEgAUHkAWogAigC5AEQmxwgAygCACIEBEAgAygCCCEBIAMoAgQhAiAAIAMoAgw2AgwgACABNgIIIAAgAjYCBCAAIAQ2AgAMAQsgAyABIAFB6AFqIAIoAugBEJscIAMoAgAiBARAIAMoAgghASADKAIEIQIgACADKAIMNgIMIAAgATYCCCAAIAI2AgQgACAENgIADAELIAMgASABQewBaiACKALsARCbHCADKAIAIgQEQCADKAIIIQEgAygCBCECIAAgAygCDDYCDCAAIAE2AgggACACNgIEIAAgBDYCAAwBCyADIAEgAUHEAWogAigCxAEQmxwgAygCACIEBEAgAygCCCEBIAMoAgQhAiAAIAMoAgw2AgwgACABNgIIIAAgAjYCBCAAIAQ2AgAMAQsgASACKAJsNgJsIAEgAigCcDYCcCABIAIoAnQ2AnQgASACKAJ4NgJ4IAEgAigCfDYCfCABIAIoAoABNgKAASABIAIoAoQBNgKEASABIAIoAogBNgKIASABIAIoAowBNgKMASABIAIoApABNgKQASABIAIoApQBNgKUASABIAIoApgBNgKYASABIAIoApwBNgKcASADIAEgAUE8aiACKAI8EJscIAMoAgAiBARAIAMoAgghASADKAIEIQIgACADKAIMNgIMIAAgATYCCCAAIAI2AgQgACAENgIADAELIAMgASABQUBrIAIoAkAQmxwgAygCACIEBEAgAygCCCEBIAMoAgQhAiAAIAMoAgw2AgwgACABNgIIIAAgAjYCBCAAIAQ2AgAMAQsgAyABIAFBoAFqIAIoAqABEJscIAMoAgAiBARAIAMoAgghASADKAIEIQIgACADKAIMNgIMIAAgATYCCCAAIAI2AgQgACAENgIADAELIAMgASABQaQBaiACKAKkARCbHCADKAIAIgQEQCADKAIIIQEgAygCBCECIAAgAygCDDYCDCAAIAE2AgggACACNgIEIAAgBDYCAAwBCyABIAIoAvABNgLwASADIAEgAUH0AWogAigC9AEQmxwgAygCACIEBEAgAygCCCEBIAMoAgQhAiAAIAMoAgw2AgwgACABNgIIIAAgAjYCBCAAIAQ2AgAMAQsgAyABIAFB+AFqIAIoAvgBEJscIAMoAgAiBARAIAMoAgghASADKAIEIQIgACADKAIMNgIMIAAgATYCCCAAIAI2AgQgACAENgIADAELIAMgASABQfwBaiACKAL8ARCbHCADKAIAIgQEQCADKAIIIQEgAygCBCECIAAgAygCDDYCDCAAIAE2AgggACACNgIEIAAgBDYCAAwBCyADIAEgAUGoAWogAigCqAEQmxwgAygCACIE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QQFrIgE2AgAgAUUEQCAAENUQCyADEM4dEJ4cIgBFDQAgBiMAQdegBmogABC9DkEASA0BIAAgACgCAEEBayIDNgIAIANFDQIMAwtBACEACyAGIAYoAgBBAWsiAzYCACADRQRAIAYQ1RALIABFBEBBAA8LIAAgACgCAEEBayIDNgIAQQAhBiADDQELIAAQ1RALIAYLkgIBA38jAUFAaiICJAEjACEBAkAgAEUEQCABQdTrDGohAAwBCyMAQeOZDmpBABDrHgNAIwAhAwJAIAAoAgAiAUEnRwRAIAENASADQeOZDmohAAwDCyMAQfuRDmpBABDrHiAAQQRqIQAMAQsgAUEga0HeAE0EQCACIAE2AgAjAEGftQlqIAIQ6x4gAEEEaiEADAELIAFB/wFNBEAgAiABNgIQIwBBvyhqIAJBEGoQ6x4gAEEEaiEADAELIAFBgIAETwRAIAIgATYCICMAQbEoaiACQSBqEOseIABBBGohAAwBBSACIAE2AjAjAEG4KGogAkEwahDrHiAAQQRqIQAMAQsACwALIABBABDrHiACQUBrJAELigEBA38jAUEwayIDJAEgA0EgaiIEQgA3AgAgA0EYaiIFQgA3AgAgA0IANwIQIAMgATYCCCADIAI2AiggA0EANgIMIAQgA0EsajYCACADIANBMGo2AhwgBSADQSxqNgIAIAAgA0EIahCwHCAEKAIAIgRBASAFKAIAIARrIAMoAggQjkAaIANBMGokAQvhAQEBfwJAIAEoAhAiAiABKAIURgRAIAFBARCxHEUNASABKAIQIQILIAEgAkEBajYCECACIAA6AAALAkAgASgCECICIAEoAhRGBEAgAUEBELEcRQ0BIAEoAhAhAgsgASACQQFqNgIQIAIgAEEIdjoAAAsCQCABKAIQIgIgASgCFEYEQCABQQEQsRxFDQEgASgCECECCyABIAJBAWo2AhAgAiAAQRB2OgAACwJAIAEoAhAiAiABKAIURgRAIAFBARCxHEUNASABKAIQIQILIAEgAkEBajYCECACIABBGHY6AAALC9IBAQN/IAAoAhAiAwR/IAMgACgCGCICayEDIAAoAgAiBARAIAJBASADIAQQjkAaIAAgACgCGCIDNgIQIAAoAhQgA2sgAU4PCyAAKAIMKAIIIgJBA3YgAkGACGogAkGAgIAIShsiBCABIAEgBEgbIgEgAkH/////B3NKBEAgAEEDNgIEQQAPCyAAQQxqIAEgAmoiARC1BwRAIABCADcCECAAQQA2AhhBAA8LIAAgACgCDEEQaiICNgIYIAAgASACajYCFCAAIAIgA2o2AhBBAQUgAgsL9QEBA38jAUGwCGsiAyQBIAMgADYCACADIAI2AgQCQCMAIgRBjIICaiAEQYjfBWogAxDqHkEASA0AIANBJGoiBEIANwIAIANBHGoiBUIANwIAIANCADcCFCADIAE2AgwgA0EANgIQIAQgA0EwajYCACADIANBsAhqNgIgIAUgA0EwajYCACADIAI2AiwCQCACQQNIDQAgAyPPAiPEAiMCQecMakEAQQAQwRsiAjYCKCACDQAQzhoaDAELIAAgA0EMahC0HCADKAIoIgIEQCACEMUbCyADKAIkIgJBASADKAIcIAJrIAMoAgwQjkAaCyADQbAIaiQBCyQBAX8CQCAARQ0AIAAgACgCAEEBayIBNgIAIAENACAAENUQCwuRIAEJfyABIAEoAghBAWoiAjYCCAJAIAJB0Q9OBEAgAUECNgIEDAELIABFBEAgASgCECIAIAEoAhRGBEAgAUEBELEcRQ0CIAEoAhAhAAsgASAAQQFqNgIQIABBMDoAAAwBCyOyASAARgRAIAEoAhAiACABKAIURgRAIAFBARCxHEUNAiABKAIQIQALIAEgAEEBajYCECAAQc4AOgAADAELIAAj3AEoAgBGBEAgASgCECIAIAEoAhRGBEAgAUEBELEcRQ0CIAEoAhAhAAsgASAAQQFqNgIQIABB0wA6AAAMAQsjiAIgAEYEQCABKAIQIgAgASgCFEYEQCABQQEQsRxFDQIgASgCECEACyABIABBAWo2AhAgAEEuOgAADAELI7wBIABGBEAgASgCECIAIAEoAhRGBEAgAUEBELEcRQ0CIAEoAhAhAAsgASAAQQFqNgIQIABBxgA6AAAMAQsjuwEgAEYEQCABKAIQIgAgASgCFEYEQCABQQEQsRxFDQIgASgCECEACyABIABBAWo2AhAgAEHUADoAAAwBC0EAIQICQCABKAIgQQNIDQAgASgCHCIERQ0AIAAoAgBBAUYEQCOxASAAKAIERw0BIAAtABBBA3FFDQELIAQgACAEKAIMEQAAIgIEQCACKAIMIQICQCABKAIQIgAgASgCFEYEQCABQQEQ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AAsLQQAhAgsgAgsjAQF/AkAgAEUNACABEJpAIgIEQCACLQAADQELQQAhAgsgAgswACAAQQA2AhwgAEEBNgIQIABCfzcCCCAAQgE3AgAgAEL/////DzcCICAAQgA3AhQLNAAgAEEANgIkIABCgYCAgBA3AgwgAEEANgIIIABCfzcCHCAAQn83AhQgAEKCgICAEDcCAAswACAAQQA2AiQgAEIANwIUIABCgICAgBA3AgQgAEEDNgIAIABCADcCHCAAQgA3AgwLpgEAIAFBADYCJCABQoGAgIAQNwIMIAFBADYCCCABQn83AhwgAUJ/NwIUIAFCgoCAgBA3AgAgASACKAIANgIAIAEgAigCBDYCBCABIAIoAgg2AgggASACKAIMNgIMIAEgAigCEDYCECABIAIoAiA2AiAgASACKAIUNgIUIAEgAigCGDYCGCABIAIoAhw2AhwgASACKAIkNgIkIABCADcCCCAAQgA3AgALXAEDfyMBQRBrIgIkASACIAA2AgwQ+jsiA0EANgIAIAAgAkEMakEKEJlFIQRBfyEAAkAgAigCDC0AAA0AIAMoAgBBxABGDQAgASAENgIAQQAhAAsgAkEQaiQBIAALhAEBAX8jAUEQayIDJAECQCAARQ0AIAIQmkAiAEUNACAALQAARQ0AIAMgADYCDBD6OyICQQA2AgAgACADQQxqQQoQmUUhAAJAAkAgAygCDC0AAA0AIAIoAgBBxABGDQAgAEEATg0BC0EBIQALIAEoAgAgAE4NACABIAA2AgALIANBEGokAQufAQEDfwJAQQwQ+hAiAQRAAkBBkMAAEPoQIgBFBEAgAUIANwIADAELIABBgMAANgIAIABBADYCCCAAIABBEGoiAjYCDCAAIABBF2pBeHEgAms2AgQgASAANgIEIAEgADYCACABQQAQ1gwiADYCCCAADQIgASgCACIARQ0AA0AgACgCCCECIAAQ/RAgAiIADQALCyABEP0QCxDOGiEBCyABC0cBAn8gACgCACIBBEADQCABKAIIIQIgARD9ECACIgENAAsLIAAoAggiASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAEP0QC7sBAQV/AkACQAJAIAAoAgQiAigCBCIDIAFBB2pBeHEiBGoiBiACKAIATQRAIAIoAgwhBQwBC0GAwAAgBCAEQYDAAE0bIgNBEGoQ+hAiAUUNASABIAM2AgAgAUEANgIIIAEgAUEQaiIFNgIMIAEgAUEXakF4cSAFayIDNgIEIAIgATYCCCADIARqIQYgASECCyACIAY2AgQgAyAFaiICDQELEM4aDwsgACgCBCgCCCIBBEAgACABNgIECyACCzIBAX8CQCAAKAIIIAEQ3gwiAEEASA0AIAEgASgCAEEBayICNgIAIAINACABENUQCyAAC4sDAwN/AXwBfiMBQRBrIgMkAQJ/IAG9IgZCgICAgICAgPj/AINCgICAgICAgPj/AFEEQEGvlhNB0elsIAFEAAAAAAAAAABkGyAGQv///////////wCDQoCAgICAgID4/wBRDQEaQX4gAEEcdyIAIABBfk8bDAELIAEgA0EMahD1PyEFIAMoAgwhAgJAIAWaIAUgBUQAAAAAAAAAAGMbIgFEAAAAAAAAAABhBEBBACEADAELQQAhAANAAn8gAUQAAAAAAACwQaIiAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiBCAAQRx0QYCAgIAHcSAAQQN2cmoiAEH/////B2sgACAAQf7///8HSxshACACQRxrIQIgASAEuKEiAUQAAAAAAAAAAGINAAsLQX5BACAAIAJBAE4EfyACQR9wBUEeIAJBf3NBH3BrCyIEdEH/////B3EgAEEfIARrdnIiAGsgACAFRAAAAAAAAAAAYxsiACAAQX5PGwshACADQRBqJAEgAAsRAEF+IABBHHciACAAQX5PGwsHACAAQRx3CycAIAFFBEBBAA8LQX4gACABIwBB0LWrAWooAgARAAAiASABQX5PGwsKACMAQdC1qwFqC6gDAQl/I+kCKAIAIAAtAABBB3RzIQMgASABQQRvIgJBBCACGyIGayICQQNqQQdPBEAgAkEEbSIHQQFrIQkCQCAHQQNxIgpFBEAgACECIAchBAwBCyAAIQUgByEEA0AgBEEBayEEIAUoAAAgA0HDhD1scyEDIAVBBGoiAiEFIAhBAWoiCCAKRw0ACwsgB0ECdCEFIAlBAksEQANAIAIoAAwgAigACCACKAAEIAIoAAAgA0HDhD1sc0HDhD1sc0HDhD1sc0HDhD1scyEDIAJBEGohAiAEQQRrIgQNAAsLIAAgBWohAAsCQCAGQQBMDQACQCAGQQNxIghFBEAgBiECDAELQQAh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NwIAIANCADcCCAwBCyO2ARDIEkEASARAIANBADYCDCADQQE2AgAgAyMAIgJBj4AHajYCCCADIAJBnrQCajYCBAwBCyPOBBDIEkEASARAIANBADYCDCADQQE2AgAgAyMAIgJBwYAHajYCCCADIAJBnrQCajYCBAwBCyADQgA3AgAgA0IANwIICyAJKAIQIgQNACAJQRBqIQMCQCAIIgIjsAEoAiBHBEAgA0IANwIAIANCADcCCAwBCyO5ARDIEkEASARAIANBADYCDCADQQE2AgAgAyMAIgJBhP8GajYCCCADIAJB1bQCajYCBAwBCwJAIwBB2PLsAWooAgwNACMAIgRB2PLsAWogBEHEyqkBahCNEkEATg0AIANBADYCDCADQQE2AgAgAyMAIgJB4oEHajYCCCADIAJB1bQCajYCBAwBCyACQcwhI88GKAIAIgQgBEF/Rhs2AuSkAyADQgA3AgggA0IANwIACyAJKAIQIgQNACAJQRBqIQMCQCAII7ABKAIgRwRAIANCADcCACADQgA3AggMAQsCQCMAQfTaqgFqEMgSQQBIDQAjAEHA5KoBahDIEkEASA0AIwBBjOaqAWoQyBJBAEgNACADQgA3AgAgA0IANwIIDAELIANBADYCDCADQQE2AgAgAyMAIgJB2LMCajYCCCADIAJB+rQCajYCBAsgCSgCECIEDQAgCUEQaiEDAkAgCCOwASgCIEcEQCADQgA3AgAgA0IANwIIDAELI8IBEMgSQQBIBEAgA0EANgIMIANBATYCACADIwAiAkHG/wZqNgIIIAMgAkGLtAJqNgIEDAELAkAjAEGA6+wBaigCDA0AIwAiAkGA6+wBaiACQfyiqQFqEI0SQQBODQAgA0EANgIMIANBATYCACADIwAiAkH7gQdqNgIIIAMgAkGLtAJqNgIEDAELIANCADcCACADQgA3AggLIAkoAhAiBA0AIAlBEGohAwJAIAgjsAEoAiBHBEAgA0IANwIAIANCADcCCAwBCyO0ARDIEkEASARAIANBADYCDCADQQE2AgAgAyMAIgJBzYQHajYCCCADIAJB57QCajYCBAwBCyPCBBDIEkEASARAIANBADYCDCADQQE2AgAgAyMAIgJB5oAHajYCCCADIAJB57QCajYCBAwBCyADQgA3AgAgA0IANwIICyAJKAIQIgQNACMAIQQCf0EA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AiABQQA2AiACQCABKAIcIgNFDQAgAUEANgIcIAMgAygCAEEBayIBNgIAIAENACADENUQCyACDQALCyMAQZT37AFqQQA2AgAjggMoAgAhAQJAI90DKAIADQAgAUUNACABEPkQI4IDQQA2AgALI58DKAIAIQECQCPcAygCAA0AIAFFDQAgARD5ECOfA0EANgIACyMAIgFBiOjOAWoQuhUgAUH06s4BahC6FSABQZzrzgFqELoVIAFBvOvOAWoQuhUgAUH0684BahC6FSABQfCDwAFqEO0IIAFByO3OAWoQuhUgAUGQ7s4BahC6FSABQbDuzgFqELoVIAFB0O7OAWoQuhUgAUHw7s4BahC6FSABQZDvzgFqELoVIAFBrO/OAWoQuhUgAUHAhcABahDtCCABQdjxzgFqELoVIAFB9PHOAWoQuhUgAUHgh8ABahDtCCABQfTyzgFqELoVIAFBkInAAWoQ7QggAUH4884BahC6FSABQZz0zgFqELoVIAFB4PXOAWoQuhUgAUGA9s4BahC6FSABQaj2zgFqELoVIAFByPbOAWoQuhUgAUHo9s4BahC6FSABQYj3zgFqELoVIAFBqPfOAWoQuhUgAUHI984BahC6FSABQfj3zgFqELoVIAFBlIrAAWoQ7QggAUHY+c4BahC6FSABQfz5zgFqELoVIAFBmPrOAWoQuhUgAUHA+s4BahC6FSABQej6zgFqELoVIAFBnPvOAWoQuhUgAUG4+84BahC6FSABQdT7zgFqELoVIAFBwIzAAWoQ7QggAUGU/s4BahC6FSABQej/zgFqELoVIAFBmIDPAWoQuhUgAUG4gM8BahC6FSABQdiAzwFqELoVIAFBqI/AAWoQ7QggAUHwhc8BahC6FSABQaiGzwFqELoVIAFB0IbPAWoQuhUgAUHMlMABahDtCCABQYiKzwFqELoVIAFBuIrPAWoQuhUgAUHYis8BahC6FSABQfSKzwFqELoVIAFBrJjAAWoQ7QggAUH0mcABahDtCCABQZiOzwFqELoVIAFBxI7PAWoQuhUgAUG0j88BahC6FSABQZibwAFqEO0IIAFBrJDPAWoQuhUgAUGwnMABahDtCCABQcCRzwFqELoVIAFBzJ3AAWoQ7QggAUH0ks8BahC6FSABQayTzwFqELoVIAFBnJ/AAWoQ7QggAUHkoMABahDtCCABQYSW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IAFBpLbeAWoQuhUgAUHMtt4BahC6FSABQfS23gFqELoVIAFBlLfeAWoQuhUgAUG4t94BahC6FSABQdi33gFqELoVIAFBgLjeAWoQuhUgAUGouN4BahC6FSABQci43gFqELoVIAFB8LjeAWoQuhUgAUGQud4BahC6FSABQbS53gFqELoVIAFB3LneAWoQuhUgAUGEut4BahC6FSABQaS63gFqELoVIAFBzLreAWoQuhUgAUHsut4BahC6FSABQZS73gFqELoVIAFBtLveAWoQuhUgAUHcu94BahC6FSABQYC83gFqELoVIAFBoLzeAWoQuhUgAUHEvN4BahC6FSABQei83gFqELoVIAFBkL3eAWoQuhUgAUGwvd4BahC6FSABQdi93gFqELoVIAFB+L3eAWoQuhUgAUGgvt4BahC6FSABQci+3gFqELoVIAFB8L7eAWoQuhUgAUGYv94BahC6FSABQby/3gFqELoVIAFB3L/eAWoQuhUgAUGAwN4BahC6FSABQajA3gFqELoVIAFB0MDeAWoQuhUgAUHwwN4BahC6FSABQZTB3gFqELoVIAFBtMHeAWoQuhUgAUHYwd4BahC6FSABQYDC3gFqELoVIAFBpMLeAWoQuhUgAUHIwt4BahC6FSABQezF3gFqELoVIAFBkMbeAWoQuhUgAUG0xt4BahC6FSABQZSTygFqEO0IIAFB7MreAWoQuhUgAUG0zt4BahC6FSABQciXygFqEO0IIAFBvNHeAWoQuhUgAUGU1t4BahC6FSABQdCaygFqEO0IIAFBmNneAWoQuhUgAUHY794BahC6FSABQfjv3gFqELoVIAFBmPDeAWoQuhUgAUG48N4BahC6FSABQdjw3gFqELoVIAFB+PDeAWoQuhUgAUGY8d4BahC6FSABQeidygFqEO0IIAFB6PLeAWoQuhUgAUGI894BahC6FSABQazz3gFqELoVIAFBzPPeAWoQuhUgAUHw894BahC6FSABQZT03gFqELoVIAFBtPTeAWoQuhUgAUHMn8oBahDtCCABQbT+3gFqELoVIAFB3P7eAWoQuhUgAUH8/t4BahC6FSABQZiJ3wFqELoVIAFBvInfAWoQuhUgAUHgid8BahC6FSABQYCK3wFqELoVIAFBoIrfAWoQuhUgAUHAit8BahC6FSABQfynygFqEO0IIAFB5I7fAWoQuhUgAUGEj98BahC6FSABQaSP3wFqELoVIAFBxI/fAWoQuhUgAUHkj98BahC6FSABQbysygFqEO0IIAFB9JjfAWoQuhUgAUGAmt8BahC6FSABQaCa3wFqELoVIAFBnLXKAWoQ7QggAUG8m98BahC6FSABQeCc3wFqELoVIAFBgJ3fAWoQuhUgAUG4tsoBahDtCCABQbSe3wFqELoVIAFB5J/fAWoQuhUgAUGEoN8BahC6FSABQfS3ygFqEO0IIAFBhKHfAWoQuhUgAUHQot8BahC6FSABQfCi3wFqELoVIAFBkLnKAWoQ7QggAUGIpN8BahC6FSABQeSl3wFqELoVIAFBzLrKAWoQ7QggAUHopt8BahC6FSABQei7ygFqEO0IIAFBrKnfAWoQuhUgAUHQqd8BahC6FSABQfCp3wFqELoVIAFBlKrfAWoQuhUgAUGEvcoBahDtCCABQeSu3wFqELoVIAFB8LDfAWoQuhUgAUGQsd8BahC6FSABQdSx3wFqELoVIAFB/LHfAWoQuhUgAUGkst8BahC6FSABQdSy3wFqELoVIAFBvMHKAWoQ7QggAUGwuN8BahC6FSABQdS43wFqELoVIAFB+LjfAWoQuhUgAUGcud8BahC6FSABQcC53wFqELoVIAFB5LnfAWoQuhUgAUGEut8BahC6FSABQbTGygFqEO0IIAFBwLvfAWoQuhUgAUH0x8oBahDtCCABQaS93wFqELoVIAFBxL3fAWoQuhUgAUGUysoBahDtCCABQfC+3wFqELoVIAFBlL/fAWoQuhUgAUHEv98BahC6FSABQZjMygFqEO0IIAFBuMHfAWoQuhUgAUGozsoBahDtCCABQYDD3wFqELoVIAFBiNDKAWoQ7QggAUHsw98BahC6FSABQajRygFqEO0IIAFB/MXfAWoQuhUgAUGgxt8BahC6FSABQbzG3wFqELoVIAFB6MbfAWoQuhUgAUGU08oBahDtCCABQeTI3wFqELoVIAFBiNXKAWoQ7QggAUHEyd8BahC6FSABQZzWygFqEO0IIAFBoMrfAWoQuhUgAUG018oBahDtCCABQZDL3wFqELoVIAFB2NjKAWoQ7QggAUHQzN8BahC6FSABQdTaygFqEO0IIAFB0NzKAWoQ7QggAUHE0N8BahC6FSABQfTQ3wFqELoVIAFBmNHfAWoQuhUgAUGc3soBahDtCCABQfjS3wFqELoVIAFBiODKAWoQ7QggAUGY1N8BahC6FSABQbzhygFqEO0IIAFBlNbfAWoQuhUgAUHU48oBahDtCCABQazX3wFqELoVIAFB+OTKAWoQ7QggAUH42t8BahC6FSABQbzc3wFqELoVIAFB/OfKAWoQ7QggAUHY3d8BahC6FSABQYje3wFqELoVIAFBqOnKAWoQ7QggAUG8398BahC6FSABQYjh3wFqELoVIAFBlOvKAWoQ7QggAUGI4t8BahC6FSABQbjk3wFqELoVIAFBwOzKAWoQ7QggAUGY5t8BahC6FSABQcjo3wFqELoVIAFBsO7KAWoQ7QggAUGI6t8BahC6FSABQbzq3wFqELoVIAFBoPDKAWoQ7QggAUHY7N8BahC6FSABQfjs3wFqELoVIAFBmO3fAWoQuhUgAUG47d8BahC6FSABQdzt3wFqELoVIAFBgO7fAWoQuhUgAUG47t8BahC6FSABQfTu3wFqELoVIAFBlO/fAWoQuhUgAUG4798BahC6FSABQejv3wFqELoVIAFBjPDfAWoQuhUgAUGs8N8BahC6FSABQcjw3wFqELoVIAFB6PDfAWoQuhUgAUGI8soBahDtCCABQdD03wFqELoVIAFBmPbKAWoQ7QggAUGE+N8BahC6FSABQdj63wFqELoVIAFBwPfKAWoQ7QggAUH8+98BahC6FSABQdD+3wFqELoVIAFB6PjKAWoQ7QggAUHU/98BahC6FSABQcyC4AFqELoVIAFBkPrKAWoQ7QggAUHQg+ABahC6FSABQYCG4AFqELoVIAFBuPvKAWoQ7QggAUH4huABahC6FSABQcyJ4AFqELoVIAFB0PzKAWoQ7QggAUHgiuABahC6FSABQdCN4AFqELoVIAFBjP7KAWoQ7QggAUHIjuABahC6FSABQcCR4AFqELoVIAFBpP/KAWoQ7QggAUHYkuABahC6FSABQZiT4AFqELoVIAFBtJPgAWoQuhUgAUHck+ABahC6FSABQaCU4AFqELoVIAFBwJTgAWoQuhUgAUHglOABahC6FSABQYSV4AFqELoVIAFBpJXgAWoQuhUgAUHEleABahC6FSABQeiV4AFqELoVIAFBiJbgAWoQuhUgAUGkluABahC6FSABQeCAywFqEO0IIAFB2JrgAWoQuhUgAUH4muABahC6FSABQZib4AFqELoVIAFB/ITLAWoQ7QggAUGsnOABahC6FSABQcyc4AFqELoVIAFB+JzgAWoQuhUgAUGUhssBahDtCCABQeSe4AFqELoVIAFBpIjLAWoQ7QggAUGsn+ABahC6FSABQaCJywFqEO0IIAFBmKDgAWoQuhUgAUHEissBahDtCCABQYyh4AFqELoVIAFB5IvLAWoQ7QggAUGEjcsBahDtCCABQeij4AFqELoVIAFBrI7LAWoQ7QggAUG8puABahC6FSABQbip4AFqELoVIAFBgKrgAWoQuhUgAUHQquABahC6FSABQfCq4AFqELoVIAFBlKvgAWoQuhUgAUHskMsBahDtCCABQdiu4AFqELoVIAFB/K7gAWoQuhUgAUHYr+ABahC6FSABQayw4AFqELoVIAFBiJXLAWoQ7QggAUHwsOABahC6FSABQYyWywFqEO0IIAFBxJfLAWoQ7QggAUHws+ABahC6FSABQZy04AFqELoVIAFBvLTgAWoQuhUgAUHstOABahC6FSABQaC14AFqELoVIAFBwLXgAWoQuhUgAUGYmcsBahDtCCABQeS24AFqELoVIAFBvJrLAWoQ7QggAUHst+ABahC6FSABQfibywFqEO0IIAFBpLjgAWoQuhUgAUH0nMsBahDtCCABQdi44AFqELoVIAFBjLngAWoQuhUgAUG8ueABahC6FSABQZieywFqEO0IIAFB1J/LAWoQ7QggAUG8vOABahC6FSABQaS/4AFqELoVIAFB0L/gAWoQuhUgAUH0oMsBahDtCCABQbDB4AFqELoVIAFB3MHgAWoQuhUgAUH8weABahC6FSABQaDC4AFqELoVIAFBwMLgAWoQuhUgAUHowuABahC6FSABQZjD4AFqELoVIAFBvMPgAWoQuhUgAUH40L8BahDtCCABQfDD4AFqELoVIAFBwNvgAWoQuhUgAUHo2+ABahC6FSABQcCiywFqEO0IIAFBrN3gAWoQuhUgAUGYpMsBahDtCCABQbDf4AFqELoVIAFBkODgAWoQuhUgAUG04OABahC6FSABQdimywFqEO0IIAFBtOXgAWoQuhUgAUGY5uABahC6FSABQcDm4AFqELoVIAFB3ObgAWoQuhUgAUGA5+ABahC6FSABQdyrywFqEO0IIAFBlOngAWoQuhUgAUH06eABahC6FSABQZzq4AFqELoVIAFB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QZweaigCACICRQ0AIABBADYCnB4gAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGgHmooAgAiAkUNACAAQQA2AqAeIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBpB5qKAIAIgJFDQAgAEEANgKkHiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQageaigCACICRQ0AIABBADYCqB4gAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGsHmooAgAiAkUNACAAQQA2AqweIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBsB5qKAIAIgJFDQAgAEEANgKwHiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQbQeaigCACICRQ0AIABBADYCtB4gAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEG4HmooAgAiAkUNACAAQQA2ArgeIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBvB5qKAIAIgJFDQAgAEEANgK8HiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQcAeaigCACICRQ0AIABBADYCwB4gAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHEHmooAgAiAkUNACAAQQA2AsQeIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABByB5qKAIAIgJFDQAgAEEANgLIHiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQcweaigCACICRQ0AIABBADYCzB4gAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHQHmooAgAiAkUNACAAQQA2AtAeIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB1B5qKAIAIgJFDQAgAEEANgLUHiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQdgeaigCACICRQ0AIABBADYC2B4gAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHcHmooAgAiAkUNACAAQQA2AtweIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB4B5qKAIAIgJFDQAgAEEANgLgHiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQeQeaigCACICRQ0AIABBADYC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AigCAEEBayIDNgIAIAMNACACENUQCwJAIABBxCBqKAIAIgJFDQAgAEEANgLEICACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQcggaigCACICRQ0AIABBADYCyCAgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHMIGooAgAiAkUNACAAQQA2AswgIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB0CBqKAIAIgJFDQAgAEEANgLQICACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQdQgaigCACICRQ0AIABBADYC1CAgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHYIGooAgAiAkUNACAAQQA2AtggIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB3CBqKAIAIgJFDQAgAEEANgLcICACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQeAgaigCACICRQ0AIABBADYC4CAgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHkIGooAgAiAkUNACAAQQA2AuQgIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB6CBqKAIAIgJFDQAgAEEANgLoICACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQewgaigCACICRQ0AIABBADYC7CAgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHwIGooAgAiAkUNACAAQQA2AvAgIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB9CBqKAIAIgJFDQAgAEEANgL0ICACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQfggaigCACICRQ0AIABBADYC+CAgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEH8IGooAgAiAkUNACAAQQA2AvwgIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBgCFqKAIAIgJFDQAgAEEANgKAISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQYQhaigCACICRQ0AIABBADYChCEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGIIWooAgAiAkUNACAAQQA2AoghIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBjCFqKAIAIgJFDQAgAEEANgKMISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQZAhaigCACICRQ0AIABBADYCkCEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGUIWooAgAiAkUNACAAQQA2ApQhIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBmCFqKAIAIgJFDQAgAEEANgKYISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQZwhaigCACICRQ0AIABBADYCnCEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGgIWooAgAiAkUNACAAQQA2AqAhIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBpCFqKAIAIgJFDQAgAEEANgKkISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQaghaigCACICRQ0AIABBADYCqCEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGsIWooAgAiAkUNACAAQQA2AqwhIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBsCFqKAIAIgJFDQAgAEEANgKwISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQbQhaigCACICRQ0AIABBADYCtCEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEG4IWooAgAiAkUNACAAQQA2ArghIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBvCFqKAIAIgJFDQAgAEEANgK8ISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQcAhaigCACICRQ0AIABBADYCwCEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHEIWooAgAiAkUNACAAQQA2AsQhIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABByCFqKAIAIgJFDQAgAEEANgLIISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQcwhaigCACICRQ0AIABBADYCzCEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHQIWooAgAiAkUNACAAQQA2AtAhIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB1CFqKAIAIgJFDQAgAEEANgLUISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQdghaigCACICRQ0AIABBADYC2CEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHcIWooAgAiAkUNACAAQQA2AtwhIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB4CFqKAIAIgJFDQAgAEEANgLgISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQeQhaigCACICRQ0AIABBADYC5CEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHoIWooAgAiAkUNACAAQQA2AughIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB7CFqKAIAIgJFDQAgAEEANgLsISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQfAhaigCACICRQ0AIABBADYC8CEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEH0IWooAgAiAkUNACAAQQA2AvQhIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB+CFqKAIAIgJFDQAgAEEANgL4ISACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQfwhaigCACICRQ0AIABBADYC/CEgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGAImooAgAiAkUNACAAQQA2AoAiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBhCJqKAIAIgJFDQAgAEEANgKEIiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQYgiaigCACICRQ0AIABBADYCiCIgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGMImooAgAiAkUNACAAQQA2AowiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBkCJqKAIAIgJFDQAgAEEANgKQIiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQZQiaigCACICRQ0AIABBADYClCIgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGYImooAgAiAkUNACAAQQA2ApgiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBnCJqKAIAIgJFDQAgAEEANgKcIiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQaAiaigCACICRQ0AIABBADYCoCIgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGkImooAgAiAkUNACAAQQA2AqQiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBqCJqKAIAIgJFDQAgAEEANgKoIiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQawiaigCACICRQ0AIABBADYCrCIgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEGwImooAgAiAkUNACAAQQA2ArAiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBtCJqKAIAIgJFDQAgAEEANgK0IiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQbgiaigCACICRQ0AIABBADYCuCIgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEG8ImooAgAiAkUNACAAQQA2ArwiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBwCJqKAIAIgJFDQAgAEEANgLAIiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQcQiaigCACICRQ0AIABBADYCxCIgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHIImooAgAiAkUNACAAQQA2AsgiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABBzCJqKAIAIgJFDQAgAEEANgLMIiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQdAiaigCACICRQ0AIABBADYC0CIgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHUImooAgAiAkUNACAAQQA2AtQiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB2CJqKAIAIgJFDQAgAEEANgLYIiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsCQCAAQdwiaigCACICRQ0AIABBADYC3CIgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RALAkAgAEHgImooAgAiAkUNACAAQQA2AuAiIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIABB5CJqKAIAIgJFDQAgAEEANgLkIiACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsC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IANBAEwbIQsDQAJAIAZBAWshBiABLQAAQQlrIgNBF0sNAEEBIAN0QYmAgARxRQ0AIAFBAWohAQwBCwsgARD9RCIFQQBKBEAgBUEBayIDIAUgASADai0AAEEKRhshBQsgBiAFIAUgBkobIQMCQCABQQoQ7UQiBkUNAANAIAYgAWsiBiADTg0BIAMgBkEBaiIGayEDIAUgBmshBSABIAZqIgFBChDtRCIGDQALCyMAQeauDmogBxCwC0EASA0BIAEgBxCwC0EASA0BIAEgBWotAABBCkcEQCMAQdHiDmogBxCwC0EASA0CCyADQQBIDQIjAEHmrg5qIAcQsAtBAEgNAQNAIANBAEwEQCALBEBBACEBA0AjAEG82wlqIAcQsAtBAEgNBSABQQFqIgEgC0cNAAsLIwBB0eIOaiAHELALQQBIDQMMBAsgA0EBayEDIwBBlK8OaiAHELALQQBODQALDAELIAEgASgCAEEBayIANgIAIAANACABENUQCyAERQ0GIAQgBCgCAEEBayIBNgIAIAENBiAEENUQDAYLIAQgBCgCAEEBayIBNgIAIAENACAEENUQCyACIQEMAgsgAiACKAIAQQFrIgc2AgAgB0UEQCACENUQCyADRQ0AIAMgAygCAEEBayICNgIAIAINACADENUQCxC9GgsgACgCCCICQQF0IwBB+J0OQeniDiACG2ogACgCACIDEMwfQQBIDQACQAJAAkAgCiOwAUGQ9ABqELUQIgJFDQAgAigCBC0AV0EQcQ0BIAIgAigCAEEBayIHNgIAIAcNACACENUQCxC9GiMAQarJDGogAxCwC0EATg0BDAILAkAgAiOwAUHkjQFqEJIVDQAgAiOwAUGE8wBqEJIVDQAgAiADQQEQrwshByACIAIoAgBBAWsiBjYCACAGRQRAIAIQ1RALIAdBAEgNAiMAQdLcDGogAxCwC0EATg0BDAILIAIgAigCAEEBayIHNgIAIAcNACACENUQCwJAAkACQCAKEMwSIgJFDQAgAigCBC0AV0EQcQ0BIAIgAigCAEEBayIKNgIAIAoNACACENUQCxC9GiMAQdSUC2ogAxCwC0EATg0BDAILIAIgA0EBEK8LIQogAiACKAIAQQFrIgc2AgAgB0UEQCACENUQCyAKQQBIDQELAkAgASOyAUYNACABEKYQIgJFBEAQvRojAEGumAtq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CQAgAEEAEIseCw8AIAAgASACQQBBfxCXHgsPACAAIAEgAiADQX8Qlx4LCwAgACABQQAQiR4LRQEBfyABENAUIgFFBEAjsAEoAugCQQEQ/h1Bfw8LIAAgAUEAEP8dIQAgASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAC2IBAX4CQAJAIAFCAFUEQEL///////////8AIQIgAUL///////////8AhSAAWQ0BDAILIAFQDQBCgICAgICAgICAfyECQoCAgICAgICAgH8gAX0gAFUNAQsgACABfCECCyACC4QCAQJ+IAAgAn8hAwJ+AkAgAVAEQEIAIQIMAQsCfgJAQoCAgICAgICAgH8gAX8iBCAAIAIgA359IgBXBEBC////////////ACABfyAAWQ0BCyAAQj+HQv///////////wCFDAELIAAgAX4LIAJ/IQIgAyAEWQRAQv///////////wAgAX8gA1kNAQsgA0I/h0L///////////8AhQwBCyABIAN+CyEBAkACQCACQgBVBEBC////////////ACEDIAJC////////////AIUgAVkNAQwCCyACUA0AQoCAgICAgICAgH8hA0KAgICAgICAgIB/IAJ9IAFVDQELIAEgAnwhAwsgAws3AQF+AkAgABCvDSIBQn9SDQAQtRpFDQAjwAEoAgAQuBpFDQAjwAEoAgAjAEHKvgFqELQaCyABCwcAIAAQrQ0L2AMDAn8CfAF+IwFBIGsiAyQBAn8CQAJAIAAoAgQiBCPCAUcEQCAEI8IBELkSRQ0BCyADIAAQxgs5AwggAykDCEL///////////8Ag0KBgICAgICA+P8AWgRAI7cBKAIAIwBB9oINahC0GkF/DAMLIAMgAysDCDkDGAJAAkACQAJAAkAgAg4DAgEAAwsgAyADKwMYIgUgBRCGRCIGoZlEAAAAAAAA4D9hBHwgBUQAAAAAAADgP6IQhkQiBSAFoAUgBgs5AxgMAwsgAyADKwMYmzkDGAwCCyADIAMrAxicOQMYDAELIAMgAysDGCIGmyAGnCADKwMYRAAAAAAAAAAAZhs5AxgLIAMgAysDGDkDCCADKwMIIANBEGoQsEIaIAMrAxAiBUQAAAAAAADgw2YgBUQAAAAAAADgQ2VxRQRAI8ABKAIAIwBByr4BahC0GkF/DAMLIAWZRAAAAAAAAOBDYwRAIAEgBbA3AwAMAgsgAUKAgICAgICAgIB/NwMADAELIAAQrw0iB0J/UQRAAkAQtRpFDQAjwAEoAgAQuBpFDQAjwAEoAgAjAEHKvgFqELQaCyABQn83AwBBfxC1Gg0CGgwBCyABIAc3AwALQQALIQAgA0EgaiQBIAALEwAgACABIAJBgJTr3AMgAxCtHgv9BAMCfwN8AX4jAUEgayIFJAECfwJAAkAgACgCBCIGI8IBRwRAIAYjwgEQuRJFDQELIAAQxgsiB71C////////////AINCgYCAgICAgPj/AFoEQCACQQA2AgAjtwEoAgAjAEH2gg1qELQaQX8MAwsgBSAHIAVBEGoQsEI5AwggBSAFKwMIIAO3IgeiOQMIIAUgBSsDCDkDGAJAAkACQAJAAkAgBA4DAgEAAwsgBSAFKwMYIgkgCRCGRCIIoZlEAAAAAAAA4D9hBHwgCUQAAAAAAADgP6IQhkQiCSAJoAUgCAs5AxgMAwsgBSAFKwMYmzkDGAwCCyAFIAUrAxicOQMYDAELIAUgBSsDGCIImyAInCAFKwMYRAAAAAAAAAAAZhs5AxgLIAUgBSsDGDkDCCAFKwMIIQgCfCAFKwMIIAdmBEAgBSAIIAehOQMIIAUrAxBEAAAAAAAA8D+gDAELIAhEAAAAAAAAAABjRQRAIAUrAxAMAQsgBSAFKwMIIAegOQMIIAUrAxBEAAAAAAAA8L+gCyIHRAAAAAAAAODDZiAHRAAAAAAAAOBDZXFFBEAjwAEoAgAjAEHKvgFqELQaQX8MAwsgAQJ+IAeZRAAAAAAAAOBDYwRAIAewDAELQoCAgICAgICAgH8LNwMAIAUrAwgiB5lEAAAAAAAA4EFjBEAgAiAHqjYCAAwCCyACQYCAgIB4NgIADAELIAAQrw0iCkJ/UQRAAkAQtRpFDQAjwAEoAgAQuBpFDQAjwAEoAgAjAEHKvgFqELQaCyABQn83AwAgAkEANgIAQX8QtRoNAhoMAQsgASAKNwMAIAJBADYCAAtBAAshACAFQSBqJAEgAAsRACAAIAEgAkHAhD0gAxCtHgsMACAArEKAlOvcA34LBAAgAAuRAQICfwF+IwFBEGsiAiQBAkAgASgCBCIDLQBXQQFxRQRAIAIgAygCDDYCACO1ASgCACMAQYicA2ogAhCuGhpBfyEBDAELAkAgARCvDSIEQn9SDQAQtRpFDQBBfyEBI8ABKAIAELgaRQ0BI8ABKAIAIwBB9b4BahC0GgwBCyAAIAQ3AwBBACEBCyACQRBqJAEgAQvSAQEEfkL///////////8AIQQgASkDACICQj+HQv///////////wCFIAJCgJTr3AN+IAJChfqFriJ9IgVC94v0o7t/VBshAiABKAIIIgGsIQMCfwJAAkACQCABQQBKBEAgAiADQv///////////wCFVQ0BDAILIAFFDQFCgICAgICAgICAfyEEIAJCgICAgICAgICAfyADfVkNAQsgACAENwMADAELIAAgAiADfDcDAEEAIAVC9ov0o7t/Vg0BGgsjwAEoAgAjAEH1vgFqELQaQX8LC9YBAQR+Qv///////////wAhBCABKQMAIgJCP4dC////////////AIUgAkKAlOvcA34gAkKF+oWuIn0iBUL3i/Sju39UGyECIAEoAggiAaxC6Ad+IQMCfwJAAkACQCABQQBKBEAgAiADQv///////////wCFVQ0BDAILIAFFDQFCgICAgICAgICAfyEEIAJCgICAgICAgICAfyADfVkNAQsgACAENwMADAELIAAgAiADfDcDAEEAIAVC9ov0o7t/Vg0BGgsjwAEoAgAjAEH1vgFqELQaQX8LCxEAIAAgASACQYCU69wDELUeC6kEAwJ/AnwCfiMBQRBrIgQkAQJAAkACQCABKAIEIgUjwgFHBEAgBSPCARC5EkUNAQsgARDGCyIGvUL///////////8Ag0KBgICAgICA+P8AWgRAI7cBKAIAIwBB9oINahC0GkF/IQEMAwsgBCAGOQMAIAQgBCsDACADt6I5AwAgBCAEKwMAOQMIAkACQAJAAkACQCACDgMCAQADCyAEIAQrAwgiBiAGEIZEIgehmUQAAAAAAADgP2EEfCAGRAAAAAAAAOA/ohCGRCIGIAagBSAHCzkDCAwDCyAEIAQrAwibOQMIDAILIAQgBCsDCJw5AwgMAQsgBCAEKwMIIgebIAecIAQrAwhEAAAAAAAAAABmGzkDCAsgBCAEKwMIOQMAAkAgBCsDAEQAAAAAAADgw2YEQCAEKwMARAAAAAAAAOBDZQ0BCyPAASgCACMAQfW+AWoQtBpBfyEBDAMLIAQrAwAiBplEAAAAAAAA4ENjBEAgACAGsDcDAAwCCyAAQoCAgICAgICAgH83AwAMAQsCQCABEK8NIghCf1INABC1GkUNAEF/IQEjwAEoAgAQuBpFDQIjwAEoAgAjAEH1vgFqELQaDAILIAOtIQkCQCADRQ0AQgBCgICAgICAgICAfyAJgH0gCFcEQEL///////////8AIAmAIAhZDQELI8ABKAIAIwBB9b4BahC0GkF/IQEMAgsgACAIIAl+NwMAC0EAIQELIARBEGokASABCw8AIAAgASACQcCEPRC1HgtUAgF/AX4jAUEQayEBIABCgJTr3AN/IgJCgJTr3AN+IABRBEAgASACuTkDCCABKwMIDwsgASAAuTkDCCABIAErAwhEAAAAAGXNzUGjOQMIIAErAwgL8wEBAn4CQAJAAkACQAJAIAEOAwIBAAMLIAAgAELoB38iAkLoB359IgMgA0I/hyIDhSADfSIDQvQDWARAIAJCAYNQDQQgA0L0A1INBAsgAEIAWQRAIAJCAXwPCyACQgF9DwsgAEIAWQRAIABC6AeCQgBSrSAAQugHgHwPC0IAQgAgAH1C6AeAfQ8LIABCAFkEQCAAQugHgA8LQn9CAEIAIAB9IgAgAELoB4AiAELoB35SGyAAfQ8LIABCAFkEQCAAQugHgCICIAAgAkLoB35SrXwPC0J/QgBCACAAfSIAIABC6AeAIgBC6Ad+UhsgAH0hAgsgAguBAgECfgJAAkACQAJAAkAgAQ4DAgEAAwsgACAAQsCEPX8iAkLAhD1+fSIDIANCP4ciA4UgA30iA0Kgwh5YBEAgAkIBg1ANBCADQqDCHlINBAsgAEIAWQRAIAJCAXwPCyACQgF9DwsgAEIAWQRAIABCwIQ9gkIAUq0gAELAhD2AfA8LQgBCACAAfULAhD2AfQ8LIABCAFkEQCAAQsCEPYAPC0J/QgBCACAAfSIAIABCwIQ9gCIAQsCEPX5SGyAAfQ8LIABCAFkEQCAAQsCEPYAiAiAAIAJCwIQ9flKtfA8LQn9CAEIAIAB9IgAgAELAhD2AIgBCwIQ9flIbIAB9IQILIAILOwEBfyMBQRBrIgMkASAAIANBCGogA0EEaiACELseIAEgAykDCDcDACABIAMoAgQ2AgggA0EQaiQBQQALtQIBAn4CQAJAAkACQAJAIAMOAwIBAAMLIAAgAELoB38iBELoB359IgUgBUI/hyIFhSAFfSIFQvQDWARAIARCAYNQDQQgBUL0A1INBAsgAEIAWQRAIARCAXwhBAwECyAEQgF9IQQMAwsgAEIAWQRAIABC6AeCQgBSrSAAQugHgHwhBAwDC0IAQgAgAH1C6AeAfSEEDAILIABCAFkEQCAAQugHgCEEDAILQn9CAEIAIAB9IgQgBELoB4AiBELoB35SGyAEfSEEDAELIABCAFkEQCAAQugHgCIEIAAgBELoB35SrXwhBAwBC0J/QgBCACAAfSIEIARC6AeAIgRC6Ad+UhsgBH0hBAsgASAEIARCwIQ9fyIAQsCEPX59IgRCP4ciBSAAfDcDACACIAVCwIQ9gyAEfD4CAAs5AQF/IwFBEGsiAyQBIAAgA0EIaiADQQRqIAIQux4gASADKQMINwMAIAEgAygCBDYCCCADQRBqJAELLgEBfyMBQRBrIgQkASAAIARBCGogAiADELseIAEgBCkDCDcDACAEQRBqJAFBAAs5AQJ+IAEgACAAQoCU69wDfyICQoCU69wDfn0iAEI/hyIDIAJ8NwMAIAEgA0KAlOvcA4MgAHw+AggLOwECfiABIAAgAEKAlOvcA38iAkKAlOvcA359IgBCP4ciAyACfDcDACABIANCgJTr3AODIAB8PgIIQQALvgECA34CfyMBQRBrIgMkAQJAQQAgAxDdPkUEQEL///////////8AIQEgAykDACIAQj+HQv///////////wCFIABCgJTr3AN+IABChfqFriJ9QveL9KO7f1QbIQAgAygCCCIErCECAkAgBEEASgRAIAAgAkL///////////8AhVcNAQwDCyAERQ0AQoCAgICAgICAgH8hASAAQoCAgICAgICAgH8gAn1TDQILIAAgAnwhAQwBCwsgA0EQaiQBIAEL4gIDAn8EfgF8IwFBIGsiAiQBAkBBACACQRBqEN0+BEAjwwEoAgAQ0hoaQX8hAAwBC0L///////////8AIQYgAikDECIEQj+HQv///////////wCFIARCgJTr3AN+IARChfqFriJ9IgdC94v0o7t/VBshBSACKAIYIgOsIQQCQAJAAkACQCADQQBKBEAgBSAEQv///////////wCFVQ0BDAILIANFDQFCgICAgICAgICAfyEGIAVCgICAgICAgICAfyAEfVkNAQsgACAGNwMADAELIAAgBCAFfDcDACAHQvaL9KO7f1gNACABDQFBACEADAILI8ABKAIAIwBB9b4BahC0GkF/IQAMAQsgAUKAgICAEDcCBCABIwBB7sUNajYCAESV1iboCy4RPiEIQQAhACABQQAgAhDePgR8IAgFIAIoAgi3RJXWJugLLhE+oiACKQMAuaALOQMQCyACQSBqJAEgAAu+AQIDfgJ/IwFBEGsiAyQBAkBBASADEN0+RQRAQv///////////wAhASADKQMAIgBCP4dC////////////AIUgAEKAlOvcA34gAEKF+oWuIn1C94v0o7t/VBshACADKAIIIgSsIQICQCAEQQBKBEAgACACQv///////////wCFVw0BDAMLIARFDQBCgICAgICAgICAfyEBIABCgICAgICAgICAfyACfVMNAgsgACACfCEBDAELCyADQRBqJAEgAQveAgICfwR+IwFBIGsiAiQBAkBBASACQRBqEN0+BEBBfyEAI8MBKAIAENIaGgwBC0L///////////8AIQUgAikDECIEQj+HQv///////////wCFIARCgJTr3AN+IARChfqFriJ9IgdC94v0o7t/VBshBCACKAIYIgOsIQYCQAJAIANBAEoEQEEBIQMgBCAGQv///////////wCFVw0BDAILIANFDQBCgICAgICAgICAfyEFQQEhAyAEQoCAgICAgICAgH8gBn1TDQELIAQgBnwhBUEAIQMLIAAgBTcDAAJAIAdC94v0o7t/VCADcgRAI8ABKAIAIwBB9b4BahC0GgwBC0EAIQAgAUUNASABQgE3AgQgASMAQbTGDWo2AgBBASACEN4+RQRAIAEgAigCCLdEldYm6AsuET6iIAIpAwC5oDkDEAwCCyPDASgCABDSGhoLQX8hAAsgAkEgaiQBIAALUwEDfyMBQRBrIgIkASACIAA3AwgQ+jsiBEEANgIAIAJBCGogARDZPkUEQCAEKAIARQRAIARBHDYCAAsjwwEoAgAQ0hoaQX8hAwsgAkEQaiQBIAMLTAECfyMBQRBrIgMkASADIAA3AwggA0EIaiABENo+RQRAEPo7IgIoAgBFBEAgAkEcNgIACyPDASgCABDSGhpBfyECCyADQRBqJAEgAguaAgIDfgJ/IwFBEGsiBCQBAkBBASAEEN0+RQRAQv///////////wAhAiAEKQMAIgFCP4dC////////////AIUgAUKAlOvcA34gAUKF+oWuIn1C94v0o7t/VBshASAEKAIIIgWsIQMCQCAFQQBKBEAgASADQv///////////wCFVw0BDAMLIAVFDQBCgICAgICAgICAfyECIAFCgICAgICAgICAfyADfVMNAgsgASADfCECDAELCwJAAkAgAEIAVQRAQv///////////wAhASAAQv///////////wCFIAJZDQEMAgsgAFANAEKAgICAgICAgIB/IQFCgICAgICAgICAfyAAfSACVQ0BCyAAIAJ8IQELIARBEGokASABC8EBAgN+An8jAUEQayIEJAECQEEBIAQQ3T5FBEBC////////////ACECIAQpAwAiAUI/h0L///////////8AhSABQoCU69wDfiABQoX6ha4ifUL3i/Sju39UGyEBIAQoAggiBawhAwJAIAVBAEoEQCABIANC////////////AIVXDQEMAwsgBUUNAEKAgICAgICAgIB/IQIgAUKAgICAgICAgIB/IAN9Uw0CCyABIAN8IQIMAQsLIARBEGokASAAIAJ9CwsAIAAgAUEBEMkeC6QGAQZ/IwFBgAFrIgUkAUF/IQMCQCABQQBIBEAgAkUNASO3ASgCACMAQdDICGpBABCuGhoMAQsgAUUEQEEAIQMMAQsCQCMAQfz67AFqLQAARQRAIAAhBiABIQQDQEGAAiAEIARBgAJOGyEDAkAgAgRAENkYIQggBiADEIIBIQcgCBDaGAwBCyAGIAMQggEhBwsCQAJAIAdBAEgEQAJAEPo7KAIAIgNBG0cEQCADQTRrDgwEAQEBAQEBAQEBAQQBCyACRQ0CELIwRQ0CDAYLQX8hAyACRQ0GI8MBKAIAENIaGgwGCyAEIANrIQQgAyAGaiEGC0EAIQMgBEEASg0BDAQLCyMAQfz67AFqQQE6AAALAkACQAJAIAIEQAJAAkAjAEGA6bUBaigCAEEASA0AENkYIQMjAEGA6bUBaigCACAFQRBqEI4gIQQgAxDaGAJAAkAgBA0AIAUoAhAjAEGA++wBaigCAEcNACAFKQN4IwBBiPvsAWopAwBRDQELIwBBgOm1AWpBfzYCAAwBCyMAQYDptQFqKAIAIgRBAE4NAQsjAEGNqwVqQQAQliAiBEEASARAEPo7KAIAIgNBK2siBEERSw0EQQEgBHRBg4AIcUUNBAwFCyMAQYDptQFqKAIAQQBOBEAgBBCmPRoj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IAEoAgQQ1B4NBwwGCyABKAIEIQNBACECA0BBACEEIAMEfyADKAIABSAECyACTA0HIAJBAnQhBCACQQFqIQIgACADIARqKAIIENseDQALDAULIAEoAgQiAkUNBSAAIAJBAiAAKAIEIAEoAhQgASgCGCABKAIcIAEoAiAQ1h4aQQEhAgwGCyABKAIEIQNBACECA0BBACEEIAMEfyADKAIABSAECyACSgRAIAJBAnQhBCACQQFqIQIgACADIARqKAIIENQeDQEMBQsLIAEoAgghBEEAIQMDQEEAIQIgBAR/IAQoAgAFIAILIANKBEAgA0ECdCEFIANBAWohAyAAIAQgBWooAggQ2x4NAQwHCwsgASgCDCICRQ0EIAAgAkECIAAoAgQgASgCFCABKAIYIAEoAhwgASgCIBDWHhpBASECDAULIAAgASgCBBDUHkUNAiABKAIIIQQDQEEAIQIgBAR/IAQoAgAFIAILIANKBEAgA0ECdCEFIANBAWohAyAAIAQgBWooAggQ2x4NAQwGCwsgASgCECEEQQAhAwNAIAQEfyAEKAIABSACCyADTA0EIANBAnQhASADQQFqIQMgACABIARqKAIIENseDQALDAQLIAEoAgQiAgRAIAAgAhDbHkUNAgsgASgCCCICRQ0CIAAgAkECIAAoAgQgASgCFCABKAIYIAEoAhwgASgCIBDWHhoMAgsgASgCBCEDQQAhAgNAQQAhBCADBH8gAygCAAUgBAsgAkwNAiACQQJ0IQQgAkEBaiECIAAgAyAEaigCCBDbHg0ACwtBACECDAELQQEhAgsgACAAKAIkQQFrNgIkIAILswEBA38CQCABKAIEIgJFDQAgACACENQeDQAgACAAKAIkQQFrNgIkQQAPCwJAIAEoAggiAkUNACAAIAJBAiAAKAIEIAEoAhAgASgCFCABKAIYIAEoAhwQ1h4NAEEADwsgASgCDCECQQAhAQJAA0BBACEDIAIEfyACKAIABSADCyABTCIEDQEgAUECdCEDIAFBAWohASAAIAIgA2ooAggQ0x4NAAsgACAAKAIkQQFrNgIkCyAEC6oCAQR/IAEoAgQiAkUEQCABKAIAIQILAkACQCACQS5BACACKAIIQQEQixUiA0F/RwRAIAJBACADEKEVIgMNAQwCCyACIAIoAgBBAWo2AgAgAiEDCwJAIAIjAEH93gxq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aiIAIAAoAgBBAWoiADYCAAJAIAAgASgChAMiBEwNACABKAL0AkUNACAERQ0AIAEoAuQDDQAgAygCPA0AIAFBATYC5AMgAyMAIgRBntMAagJ/IAEoAqgDIAEoAqQDSgRAQQIgASgC9AMgASgC8ANBBG1ODQEaCyABKAKYAyABKAKUA0oLIgBBAEEAELggIAMgACACQQxqIAJBCGpBABC5IBogAyAEQZyfBGogACACKAIMIAIoAggQuCAgAUEANgLkAwsgAkEQaiQBC5kBAQN/I7ABKALoAiEDAkAgACgCECICIAAoAlQiAUEOdkEBcSABQQR2QQFxakEDdCIBQf////8Hc0sEQCADEM0aIQEMAQsgASACahCBESICRQRAIAMQzRohAQwBCyACQgA3AgAgASACaiIBEMEgCyABBEAgASAANgIEIAAtAFVBAnEEQCAAIAAoAgBBAWo2AgALIAEQpBALIAELywEBA38gAUEASARAIwBBkKsJakGJEhDVGkEADwsjsAEoAugCIQQCQCAAKAIQIAAoAhQgAWxqQQNqQXxxIgMgACgCVCICQQ52QQFxIAJBBHZBAXFqQQN0IgJB/////wdzSwRAIAQQzRohAgwBCyACIANqEIERIgNFBEAgBBDNGiECDAELIANCADcCACACIANqIgIQwSALIAJFBEBBAA8LIAIgADYCBCACIAE2AgggAC0AVUECcQRAIAAgACgCAEEBajYCAAsgAhCkECACC1ABAX8gACgCBCICKAIQIAIoAhQgAWxqQQNqQXxxIgJB+P///wdPBEAQzhoPCyAAQQhrIAJBCGoQgxEiAEUEQBDOGg8LIAAgATYCECAAQQhqC4MBAQR/IAAoAgQoAlQhAyAAQQhrIgIoAgAiAQRAIABBBGsoAgBBfHEiBCABNgIAIAEgASgCBEEDcSAEcjYCBCACQQA2AgALI7ABKALoAigCCCIBKAKIAyICQQBKBEAgASACQQFrNgKIAwsgACADQRF0QR91IANBG3RBH3VqQQN0ahCEEQs/AQF/An8CQCAAKAIEIgEtAFVBwABxRQ0AIAEoAqQBIgEEQCAAIAERAQBFDQELQQEgAEEIaygCAA0BGgtBAAsLQgEBfwJ/AkAgACgCBCIBLQBVQcAAcUUNACABKAKkASIBBEAgACABEQEARQ0BC0EBIABBBGstAABBAXEN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AgBBACEAIAENAyADENUQDAMLIABBAWoiACABKAIISA0ACwsgAyEACyAEQRBqJAEgAAsMACABIAAQ3gxBH3YL+AIBBH8jsAEoAugCKAIIIgBBsANqIQUgAEH8AmoiAigCACIBIAJHBEAgACgCgAMhAyAAKAK0A0F8cSIEIAE2AgAgASABKAIEQQNxIARyNgIEIANBfHEiASAFNgIAIAAgACgCtANBA3EgAXI2ArQDCyAAQQA2AogDIAIgAjYCACAAIAI2AoADIABBjANqIgIoAgAiASACRwRAIAAoApADIQMgACgCtANBfHEiBCABNgIAIAEgASgCBEEDcSAEcjYCBCADQXxxIgEgBTYCACAAIAAoArQDQQNxIAFyNgK0AwsgAEEANgKYAyACIAI2AgAgACACNgKQAyAAQZwDaiICKAIAIgEgAkcEQCAAKAKgAyEDIAAoArQDQXxxIgQgATYCACABIAEoAgRBA3EgBHI2AgQgA0F8cSIBIAU2AgAgACAAKAK0A0EDcSABcjYCtAMLIABBADYCqAMgAiACNgIAIAAgAjYCoAMjsgEiACAAKAIAQQFqNgIAIAALkAEBBH8jsAEoAugCKAIIIgBBsANqIgIoAgAiASACRwRAIAAoArQDIQQgAEGgA2oiAygCAEF8cSIFIAE2AgAgASABKAIEQQNxIAVyNgIEIARBfHEiASAAQZwDajYCACADIAMoAgBBA3EgAXI2AgALIAAgAjYCsAMgACACNgK0AyOyASIAIAAoAgBBAWo2AgAgAAtKAQJ/QQAhACOwASgC6AIoAghBsANqIgMhAgNAIAAiAUEBaiEAIAMgAigCACICRw0ACwJ/IAFBf0YEQEEAELUaDQEaCyABEK4NCwukAQECf0F/IQECQCAAIwBBi+wHaiOwASgC6AIoAggiAigC6AMQ2BxBAEgNACAAIwBBpZQCaiACKALsAxDYHEEASA0AIAAjAEGOjgpqQQEQ2hxBAEgNACAAIwBBj+wKakECENocQQBIDQAgACMAQaHsCmpBBBDaHEEASA0AIAAjAEHQxgpqQSAQ2hxBAEgNACAAIwBB088KakEmENocQR91IQELIAELYQEBfyABBH8gARD9RCECAkACQAJAIABFBEAgAkEBahD6ECIARQ0BIABBADoAAAwDCyAAEP1EIAJqQQFqEPoQIgINAQsQzhoa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IAANASABENUQDAELI7UBKAIAIwBBh4MHahC0GgsgBEEQaiQBIAML/AMBA38jAUEQayIEJAECQCOyASABRgRAI7IBIgIgAigCAEEBajYCAAwBCyABKAIELQBXQQhxBEAjAEHfAmoQ2yEhAxC/ISIARQRADAILIABB+gA6AAwgACOMAjYCCCAAIABBEGogAUEAIAMoAgQRAgAiATYCICABBEAgACECDAILIAAgACgCAEEBayIBNgIAIAENASAAENUQDAELAkACQCABIAAQmQZBAWoOAgIBAAsgASABKAIAQQFqNgIAIAEhAgwBCwJAAkAgASgCBCIDIwBB4KS2AWpGDQAgAyMAQeCktgFqELkSDQAgASgCBCIDIwBBmKi2AWpGDQAgAyMAQZiotgFqELkSRQ0BCyABEJwiIgJFDQAgAigCOCICRQ0AIAIQmyIiAkUNACACKAI8IwBBoLUJahDbISgCBEcNACABIAEoAgBBAWo2AgAgASECDAELAkAjngMgASgCBEcNACABKAIgEJwiIgJFDQAgAigCPCMAQaC1CWoQ2yEoAgRHDQAgASABKAIAQQFqNgIAIAEhAgwBC0EAIQIgASMAQcittgFqIARBDGoQvhBBAEgNACAEKAIMIgEEQCAAIAEQmCEhAiAEKAIMIgEgASgCAEEBayIANgIAIAANASABENUQDAELI7UBKAIAIwBBh4MHahC0GgsgBEEQaiQBIAIL+wMBA38jAUEQayIEJAECQCOyASABRgRAI7IBIgIgAigCAEEBajYCAAwBCyABKAIELQBXQRBxBEAjAEHt6AlqENshIQMQvyEiAEUEQAwCCyAAQdoAOgAMIAAjjAI2AgggACAAQRBqIAFBACADKAIEEQIAIgE2AiAgAQRAIAAhAgwCCyAAIAAoAgBBAWsiATYCACABDQEgABDVEAwBCwJAAkAgASAAEJkGQQFqDgICAQALIAEgASgCAEEBajYCACABIQIMAQsCQAJAIAEoAgQiAyMAQeCktgFqRg0AIAMjAEHgpLYBahC5Eg0AIAEoAgQiAyMAQZiotgFqRg0AIAMjAEGYqLYBahC5EkUNAQsgARCcIiICRQ0AIAIoAjgiAkUNACACEJsiIgJFDQAgAigCPCMAQcw6ahDbISgCBEcNACABIAEoAgBBAWo2AgAgASECDAELAkAjngMgASgCBEcN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ASgCAEEBayICNgIAIAINACABENUQCyAAEIQRC8sFAQN/IwFBsAFrIgEkAQJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAMIgPAIgJBwgBrDjkACAgICAgBAggIAwgICAcECAgICAgICAgHCAgICAgICAAGBQgFCAECCAgDCAgICAQICAgICAgICAcICyABIAAsABA2AiQgASACNgIgIwBB9J0LaiABQSBqEKQUIQAMCgsgASAALgEQNgI0IAEgAjYCMCMAQfSdC2ogAUEwahCkFCEADAkLIAEgACgCEDYCRCABIAI2AkAjAEH0nQtqIAFBQGsQpBQhAAwICyABIAAoAhA2AlQgASACNgJQIwBB4J0LaiABQdAAahCkFCEADAcLIAEgACkDEDcDaCABIAI2AmAjAEHLnQtqIAFB4ABqEKQUIQAMBgsCfCACQeYARgRAIAAqAhC7DAELIAArAxALEMILIgJFBEBBACEADAYLIAAsAAwhACABIAI2AnQgASAANgJwIwBB0J4LaiABQfAAahCkFCEAIAIgAigCAEEBayIDNgIAIAMNBSACENUQDAULIAEgAC0AECIDwCICQQBIBH9B4wAFAkAgAxCcFkUNACADQdwARg0AIANBJ0cNBAsgAC0AECECIAAsAAwLNgKAASABIAJB/wFxNgKEASMAQeOeC2ogAUGAAWoQpBQhAAwECyABIAAoAhA2AqQBIAEgAjYCoAEjAEG4nQtqIAFBoAFqEKQUIQAMAwsgAkEATgRAAkAgAxCcFkUNACADQdwARg0AIANBJ0cNAwsgAC0ADCECCyABIAA2AgQgASACQf8BcTYCACMAQYuQC2ogARCkFCEADAILIAAsAAwhAiABIAAsABA2ApQBIAEgAjYCkAEjAEH8ngtqIAFBkAFqEKQUIQAMAQsgAC0ADCECIAEgADYCFCABIAI2AhAjAEHAlAtqIAFBEGoQpBQhAAsgAUGwAWokASAAC/0CAQF/IwFBIGsiAyQBIAMgAjYCHCADIAEgAhCcFCICNgIMAkAgAkUNACADQRhqIANBFGogA0EQahC8GiADQRhqIANBFGogA0EQahC7GgJAAkACfyADKAIYIgIoAgQoAlRBAEgEQCACEMoSDAELIAIQphALIgIEQCADQQxqIAIQnRUgA0EMaiMAQYatDmoQjxQQnRUgAygCDA0B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CQAgAEEBEIkUC7gBAQN/IwFBIGsiAyQBAkAgASgCBCIELQBXQRBxRQRAIAMgBCgCDDYCACO1ASgCACMAQbOWCGogAxCuGhpBACEEDAELQQAhBCABQQBBABClFCIFQQBIDQAgBUEBayIFIAJBAnYiAkoEQCADIAU2AhAgAyACNgIUI7cBKAIAIwBBzqwNaiADQRBqEK4aGgwBCyABIAAgAhClFEF/Rg0AIAEgASgCAEEBajYCACABIQQLIANBIGokASAECz0BAX8CQCABQQRJDQAgAUECdiEBA0AgACACQQJ0aigCAEUNASACQQFqIgIgAUcNAAsgASECCyAAIAIQiRQL2QEBAn8jAUEQayIDJAECQCOyASABRgRAIABBADYCACOyASICIAIoAgBBAWo2AgAMAQsgASgCBCIEKAJUIgJBgICACHEEQCAAIAEQpQ02AgAjsgEiAiACKAIAQQFqNgIADAELIAJBgICAgAFxRQRAIAMgBCgCDDYCACO1ASgCACMAQcuVCGogAxCuGhpBACECDAELQQAhAiABIANBDGoQphQiAUUNACABIwBBiq4FaiMCQYAPahCmCCIERQRAIAEQ/RAMAQsgACABNgIAIAQhAgsgA0EQaiQBIAILGAAgACMAQYquBWoQqAgiAARAIAAQ/RALCykAIAAoAgAiAARAIAAgABCzRhCJFA8LI7IBIgAgACgCAEEBajYCACAACzsAQQAhAgJAAkACQCABELEQQQFqDgICAQALQf//AyECCyAAIAI7AQAjsgEiAiACKAIAQQFqNgIACyACCwoAIAAuAQAQrgYLOQBBACECAkACQAJAIAEQsRBBAWoOAgIBAAtBASECCyAAIAI6AAAjsgEiAiACKAIAQQFqNgIACyACCwoAIAAtAAAQrgYLGAAgACABNgIAIAEgASgCAEEBajYCACABCzcAAkAgACgCACIARQRAELUaDQEjtwEoAgAjAEGkwwpqELQaIAAPCyAAIAAoAgBBAWo2AgALIAAL4AEBAn8CQCAAKAI4IgFFDQAgAEEANgI4IAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAkgiAUUNACAAQQA2AkggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCTCIBRQ0AIABBADYCTCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAJQIgFFDQAgAEEANgJQIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAlQiAUUNACAAQQA2AlQgASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALCyoAIAAQmCIgACgCXBD9ECAAKAJkEP0QIAAoAjQQ/RAgACPLASgCGBEDAAsrACAAIAEgAiPLASgClAERAgBBAEgEQEF/DwsgAEEANgJkIABCADcCXEEACzYBAX8CQCAAKAIEKAJUQQBODQAgACgChAEiAEUNACAAQQAgACgCBCMAQYDCtgFqRhshAQsgAQsnACAAKAIEKAKEASIARQRAQQAPCyAAQQAgACgCBCMAQYDCtgFqRhsLoCEBE38jAUHAAWsiBCQBIARBADYCsAECQCABRQ0AQX8hAyAAIwBBzMO2AWogBEGoAWoQvhBBAEgNAAJAIAQoAqgBIgVFDQAgBSAFKAIAQQFrIgk2AgBBASEMIAkNACAFENUQCyAAIwBB1MO2AWogBEGoAWoQvhBBAEgNAAJAIAQoAqgBIgVFDQAgBSAFKAIAQQFrIgk2AgAgCQ0AIAUQ1RALQQAhCSAAIwBB3MO2AWogBEGoAWoQvhBBAEgNAAJAIAQoAqgBIgZFDQAgBhChDSEJIAQoAqgBIgMgAygCAEEBayINNgIAIA1FBEAgAxDVEAsgCUEATg0AAkAQtRpFDQAjtQEoAgAQuBoNACPAASgCABC4Gg0AQX8hAwwCCyO3ASgCACMAQaGBBGoQtBpBfyEDDAELQX8hAyABEP0FIg1Bf0YEQCO1ASgCABC4GkUNASO1ASgCACMAQfvwAWoQtBoMAQsCQAJAIAAoAgQoAlRBAE4NACAAKAKEASIIRQ0AIAgoAgQjAEGAwrYBakYNAQsjtQEoAgAjAEHQxwhqELQaDAELIAgtAFlBEHEEQCPJASgCACMAQfXDBWoQtBoMAQsgCCgCXCIDBEAgAxD9ECAIQQA2AlwLIAgoAjQiAwRAIAMQ/RALAn9BACAAKAKAASIDKAIEKAJUQQBODQAaQQAgAygChAEiA0UNABpBACADKAIEIwBBgMK2AWpHDQAaIAggCCgCWCADKAJYQYAYcXI2AlhBASERIAMLIQogAkUEQCAIIAgoAlhBgAhyNgJYCwJAAkAgBQ0AIApFDQAgBCAKKAIgIgM2ArgBIAQgAzYCvAEgBCAKKAIkIgM2ArQBIAhBDTsBMgJAAkAgDSAKKAIoakEBaiIFQYCAgIACTwRAIAhBADYCNAwBCyAIIAVBAnQQ+hAiBTYCNCAFDQELEM4aGkF/IQMMAwtBASADIANBAU0bIQ4gBUEAIAooAiggDWpBAnRBBGoQ0D4aIAooAigiEEEATA0BIAgoAjQgCigCNCAQQQJ0EM4+GiAKKAIoIRAMAQsgBEEANgK4ASAEQQA2ArwBIARBADYCtAEgCEENOwEyAkACQCANQf////8BTwRAIAhBADYCNAwBCyAIIA1BAnRBBGoiBRD6ECIDNgI0IAMNAQsQzhoaQX8hAwwCCyADQQAgBRDQPhpBASEOCyAIQQAjACIDQZSCC2ogA0HKAmogAkUgBkEAR3IiFRsQ3SAiBTYCXEF/IQMgBUUNAAJAAkAgDUEASgRAA0AgBEEANgKkASAEQQA2AqABIAEgDxC7BSEGIARBADYCnAEgBkUEQCO1ASgCACMAQaLxAWoQtBoMBQsgBCAEQZwBajYCmAEgBCAEQaABajYClAEgBCAEQaQBajYCkAEgBiMAQbPdBWogBEGQAWoQ8BpFBEAjtQEoAgAjAEGi8QFqELQaIAYgBigCAEEBayIDNgIAIANFDQMMBAsCQCAEKAKgASIHKAIEIgsj2wIiBUYEQEEBIRMMAQtBASATIAsj2wIQuRIbIRMgBCgCoAEiBygCBCEFCwJAAkAgBSgCVEEATg0AIAcoAoQBIgVFDQAgBSgCBCMAQYDCtgFqRg0BCyAGIAYoAgBBAWsiAzYCACADRQRAIAYQ1RALIAQgDzYCACO1ASgCACMAQeOGB2ogBBCuGhpBfyEDDAULIAgoAjQgDyAQakECdGogBUEsajYCACAIKAJYIQcgCCAFKAJYIgtBgAZxBH8gCCAHQYAEciIHNgJYIAUoAlgFIAsLQYAYcSAHcjYCWCAFIAUoAlhBgCByNgJYAkAgBhCUEkEDRgRAIAggCCgCWEGAEHI2AlgCQAJAIAUvATIiB0EMSw0AQQEgB3QiB0GgNXENASAHQcAKcUUNACAFKAJAIwBBoLUJahDbISgCCEYNACAFKAJAIwBBzDpqENshKAIIRw0BCyAEIAQoAqABKAIMNgIQI7UBKAIAIwBB+Z8DaiAEQRBqEK4aGiAGIAYoAgBBAWsiAzYCACADRQ0FDAYLIAQoApwBIgdBAEoEQCAHIAUoAiBBA3RMDQILI7cBKAIAIwBBu7wIahC0GiAGIAYoAgBBAWsiAzYCACADRQ0EDAULQQAhByAEQQA2ApwBCwJAAkACQCAVRQRAIwAhEiAFKAJcIQcgBCgCpAEQ2RQiC0UEQCAGIAYoAgBBAWsiAzYCACADRQ0HDAgLIAsQ/UQgByASQZSCC2ogBxsiEhD9RGpBA2oQ+hAiB0UEQCAGIAYoAgBBAWsiAzYCACADRQRAIAYQ1RALEM4aGkF/IQMMCQsgBCALNgKEASAEIBI2AoABIAcjAEH4oQtqIARBgAFqEM9EGiAIKAJcIQsgCAJ/IAUoAmQiEgRAIAUoAmAgEiALIAcQ3iAMAQsgCyAHEN0gCzYCXCALEP0QIAcQ/RAgCCgCXARAIAQoApwBIQcMAgsgBiAGKAIAQQFrIgM2AgAgAw0HDAYLIAJFDQELIAQoAqABIA8gBEGwAWogByAEQawBaiAEQbgBaiAEQbwBaiAEQbQBaiAJIAwQ2SEhBQwBCyAEQQA2ArwBIARBADYCuAEgBEEANgK0ASAEKAKgASAPIARBsAFqIAcgBEGsAWogBEG4AWogBEG8AWogBEG0AWogCSAMENkhIQUgBCgCuAEiByAUIAcgFEobIRQLIAVFBEAgBiAGKAIAQQFrIgM2AgAgA0UNAwwECyAEKAK0ASEHIAAgBCgCpAEgBRC5EEF/RgRAIAUgBSgCAEEBayIDNgIAIANFBEAgBRDVEAsgBiAGKAIAQQFrIgM2AgAgA0UNAwwECyAGIAYoAgBBAWsiCzYCACALRQRAIAYQ1RALIAcgDkohBiAFIAUoAgBBAWsiCzYCACALRQRAIAUQ1RALIAcgDiAGGyEOIA9BAWoiDyANRw0ACwsCQCAVRQRAIAggCCgCXCIFIwBBswJqEN0gNgJcIAUQ/RAgCCgCXA0BDAQLIAINACAEIBQ2ArgBCyAEIAQoArgBIA5qQQFrIgMgAyAOb2siAzYCuAEgCCADNgIsIAggDjsBMCAIIA02AiggCCAONgIkIAggAzYCIAJAIBNFDQAgA0EQSg0AQQAhAgJAIA1BAEwEQEEAIQlBACEGDAELQQAhBkEAIQkDQCABIAIQuwUhAyAEQQA2ApwBAn8CQAJAIANFDQAgBCAEQZwBajYCeCAEIARBoAFqNgJ0IAQgBEGkAWo2AnAgAyMAQbPdBWogBEHwAGoQ8BpFBEAjtQEoAgAjAEGi8QFqELQaIAMgAygCAEEBayIANgIAIAANASADENUQQX8hAwwJCwJAAkAgBCgCoAEiBSgCBCIMKAJUQQBODQAgBSgChAEiBUUNACAFKAIEIwBBgMK2AWpGDQELIAMgAygCAEEBayIANgIAIABFBEAgAxDVEAsgBCACNgIgI7UBKAIAIwBB44YHaiAEQSBqEK4aGkF/IQMMCQsCQCAMI9sCRg0AIAwj2wIQuRINAEEBDAMLAkAgBSgCOCIMKAIEKAJUQQBODQAgDCgChAEiDEUNACAFKAIoIQ8gDCgCBCMAQYDCtgFqRg0CCyADIAMoAgBBAWsiADYCACAARQRAIAMQ1RALIAQgAjYCMCO1ASgCACMAQeOGB2ogBEEwahCuGhoLQX8hAwwHCyAGQQFqIQYgD0EBagshDCADIAMoAgBBAWsiBTYCACAFRQRAIAMQ1RALIAkgDGohCSACQQFqIgIgDUcNAAsLIAZBDGwiAiANIBBqQQFqIgMgCWpBAnRqEPoQIgdFBEAQzhoaQX8hAwwECyAHIANBAnRqIgwgCUECdGohCyAGQQBKBEAgC0EAIAIQ0D4aCyAQRSARQQFzckUEQCAHIAooAjQgEEECdBDOPhoLIA1BAEoEQEEAIQ9BACERQQAhCQNAIAEgDxC7BSEKIARBADYCnAEgCkUEQCAHEP0QQX8hAwwGCyAEIARBnAFqNgJoIAQgBEGgAWo2AmQgBCAEQaQBajYCYCAKIwBBs90FaiAEQeAAahDwGkUEQCO1ASgCACMAQaLxAWoQtBpBfyEDIAogCigCAEEBayIANgIAIABFBEAgChDVEAsgBxD9EAwGCwJAAkAgBCgCoAEiAygCBCICKAJUQQBODQAgAygChAEiA0UNACADKAIEIwBBgMK2AWpGDQELQX8hAyAKIAooAgBBAWsiADYCACAARQRAIAoQ1RALIAcQ/RAgBCAPNgJAI7UBKAIAIwBB44YHaiAEQUBrEK4aGgwGCwJAAkAgAiPbAkYNACACI9sCELkSDQAgByAQQQJ0aiADQSxqNgIADAELAkACQCADKAI4IgIoAgQoAlRBAE4NACACKAKEASICRQ0AIAMoAighDiACKAIEIwBBgMK2AWpGDQELQX8hAyAKIAooAgBBAWsiADYCACAARQRAIAoQ1RALIAcQ/RAgBCAPNgJQI7UBKAIAIwBB44YHaiAEQdAAahCuGhoMBwsgByAQQQJ0aiALIBFBDGxqIgM2AgAgAyACKAIsIA5sNgIAIAIvATAhBSADIAwgCUECdGo2AgggA0ENOwEGIAMgBTsBBAJAIA5BAEwNACACQSxqIQNBACECIAkhBSAOQQdxIgYEQANAIAwgBUECdGogAzYCACAFQQFqIQUgAkEBaiICIAZHDQALCyAJIA5qIQkgDkEISQ0AA0AgDCAFQQJ0aiICIAM2AgAgAiADNgIcIAIgAzYCGCACIAM2AhQgAiADNgIQIAIgAzYCDCACIAM2AgggAiADNgIEIAVBCGoiBSAJRw0ACwsgEUEBaiERIAwgCUECdGpBADYCACAJQQFqIQkLIAogCigCAEEBayIDNgIAIANFBEAgChDVEAsgEEEBaiEQIA9BAWoiDyANRw0ACwsgByAQQQJ0akEANgIAIAgoAjQQ/RAgCCAHNgI0CyAIKAJYIgNBgCBxBEAjyQEoAgAjAEG9pgZqELQaQX8hAwwDCyAIIANBgCByNgJYQQAhBSMBQRBrIgMkAQJAIAAiAiMAQeTDtgFqIANBDGoQvhBBAEgEQEF/IQUMAQsgAygCDCIARQ0AIAAjAEHdkAhqEIoGIQFBfyEFIAMoAgwiACAAKAIAQQFrIgk2AgAgCUUEQCAAENUQCyABRQ0AQQAhBQJAA0ACQCABKAIIIQAgAgJ/IAEoAgQtAFdBAnFFBEAgACAFTA0CIAEgBUECdGpBDGoMAQsgACAFTA0BIAEoAgwgBUECdGoLKAIAIgkQtRAiAEUEQEF/IQUgASABKAIAQQFrIgI2AgAgASEAIAJFDQMMBAsj2wMgACgCBEcEQCADIAk2AgAjyQEoAgAjAEGZwAlqIAMQrhoaQX8hBSABIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIAAgACgCAEEBayIBNgIAIAFFDQMMBAsgAEEBNgIgIAIgACAAKAIQIAAoAggQniIhCSAAIAAoAgBBAWsiBjYCACAJQX9GBEAgBkUEQCAAENUQC0F/IQUgASABKAIAQQFrIgI2AgAgASEAIAJFDQMMBAsgBkUEQCAAENUQCyAFQQFqIQUMAQsLIAEgASgCAEEBayICNgIAQQAhBSABIQAgAg0BCyAAENUQCyADQRBqJAEgBSEDDAILIAYQ1RALQX8hAwsgBEHAAWokASADC5gGAQZ/IwFBIGsiCCQBAkAgASgCFCMAQcXACWoQtBAiBEUEQEF/IQcMAQsgBCMAQfyQCGoQigYhBUF/IQcgBCAEKAIAQQFrIgY2AgAgBkUEQCAEENUQCyAFRQ0AQQAhBwJAAkADQAJAIAUoAgghBAJ/IAUoAgQtAFdBAnFFBEAgBCAHTA0CIAUgB0ECdGpBDGoMAQsgBCAHTA0BIAUoAgwgB0ECdGoLKAIAIQQgCCAIQRxqNgIAIAggCEEYajYCBCAIIAhBFGo2AgggBCMAQa+0CmogCBDwGkUEQCAFIAUoAgBBAWsiBDYCACAERQ0EDAMLIAEoAhQgCCgCHBC1ECIERQRAIAUgBSgCAEEBayIENgIAIARFDQQMAwsj2wMgBCgCBEcEQCO1ASgCACMAQY+FB2oQtBogBCAEKAIAQQFrIgc2AgAgB0UEQCAEENUQCyAFIAUoAgBBAWsiBDYCACAEDQMMBAsCQCAEKAIgBEAgACAEIAQoAhAgAmogBCgCCCADahCeIiEGIAQgBCgCAEEBayIJNgIAIAlFBEAgBBDVEAsgBkF/Rw0BIAUgBSgCAEEBayIENgIAIARFDQUMBAsj2wMiBkEAIAYoApgBEQAAIgZFBEAgBCAEKAIAQQFrIgc2AgAgB0UEQCAEENUQCyAFIAUoAgBBAWsiBDYCACAERQ0FDAQLIAYgBCgCDDYCDCAGIAQoAgggA2o2AgggBiAEKAIQIAJqNgIQIAYgBCgCFCIJNgIUIAkEQCAJIAkoAgBBAWo2AgALIAYgBCgCGDYCGCAGIAQoAhw2AhwgBCAEKAIAQQFrIgk2AgAgCUUEQCAEENUQCyAAIAgoAhwgBhC5EEF/RgRAIAUgBSgCAEEBayIENgIAIARFBEAgBRDVEAsgBiAGKAIAQQFrIgQ2AgAgBiEFIARFDQUMBAsgBiAGKAIAQQFrIgQ2AgAgBA0AIAYQ1RALIAdBAWohBwwBCwsgBSAFKAIAQQFrIgQ2AgBBACEHIAQNAiAFENUQDAILQX8hBwwBCyAFENUQQX8hBwsgCEEgaiQBIAcLTwEBfyAAEK4OIQEgACgCXCICBH8gAhD9RCABakHJAGoFIAFByABqCyAAKAJgQQJ0aiEBIAAoAjQEfyABIAAoAihBAnRqQQRqBSABCxCuDQsNACMAQezDtgFqEPAPC7kZARl/IwFB0AFrIgIkASACQX82AoABIAJBADYCbCACIAJB6ABqNgJcIAIgAkHAAWo2AlggAiACQfQAajYCVCACIAJBtAFqNgJQIAIgAkG4AWo2AkwgAiACQbABajYCSCACIAJBgAFqNgJEIAJBQGsgAkGEAWo2AgAgAiACQYgBajYCPCACIAJBkAFqNgI4IAIgAkGUAWo2AjQgAiACQZgBajYCMCACIAJBnAFqNgIsIAIgAkGgAWo2AiggAiACQaQBajYCJCACIAJBqAFqNgIgIAIgAkGsAWo2AhwgAiACQcQBajYCGCACIAJB8ABqNgIUIAIgAkHIAWo2AhAgAiO0ATYCDCACIAJBjAFqNgIIIAIgAkHMAWo2AgQgAiACQbwBajYCAAJAIAEjAEHXoglqIAIQ8BpFDQACQCOyASACKALAAUYNABC7HSOwASgCIEYNACO+ASgCACMAQcbyAWoQtBoMAQsCQCACKAKMAUUNACACKAKQAUECSg0AI7cBKAIAIwBB5rULahC0GgwBCwJAIAIoAsgBIggoAghBAEwNAEF/IQADQAJAIAggBUECdGooAgwiASgCBC0AV0EBcUUNACABEKANIgFBAEgNACAAIAFODQAgASEAIAVBAWoiBSAIKAIISA0BDAILCyO3ASgCACMAQZaoBGoQtBpBACEFDAELELsdEM4dKAKIAgRAI74BKAIAIwBBkPMBahC0GkEAIQUMAQtBACEAI7IBIAIoAsABRwRAELUgIQcLQX8hEAJAAkACQCACKALMARCmBiIURQ0AQQAhCAJAIAIoArwBIgUjsgFGDQAgBSMAQYm3B2oQigYiBUUNASAFKAIIIgoQkxIiAUUNAiAKQQBKBEADQCAFKAIIIQ4CfwJAAkAgBSgCBC0AV0ECcUUEQCAKIA5HDQEgBSAIQQJ0akEMagwDCyAKIA5GDQELI74BKAIAIwBB2f0EahC0GgwHCyAFKAIMIAhBAnRqCygCACACQfwAahDTFEUNBSABIAhBAnRqIAIoAnw2AgwgCEEBaiIIIApHDQALCyABEKYGIQggASABKAIAQQFrIgo2AgAgCkUEQCABENUQCyAFIAUoAgBBAWsiATYCACABRQRAIAUQ1RALIAgNAAwBCwJAIAIoAsQBIgUjsgFGDQAgBRCmBiITDQBBACETIAghAEEAIQUMAgsCQAJAIAIoAnAiBSOyAUYEf0EABSAFIAJB7ABqENMURQ0BIAIoAmwQvwcLIQEjsgEgAigCuAFHBEAjAEGlqQlqQbsHENUaQQAhBQwCC0EAIQ5BACEKIAIoArABIgUjsgFHBEBBASEKIAUgAkH4AGoQmC9FDQELIAIoArQBIgUjsgFHBEBBASEOIAUgAkH8AGoQly9FDQELI7IBIgUgAigCwAEiFUcEQEEAIQVBABCTEiIARQ0CEJEvIAIoAsABIQULIAIoAqwBIRAgAigCqAEhCSACKAKkASEMIAIoAqABIQsgAigCnAEhESACKAKYASENIAIoApQBIRcgAigCkAEhEiACKAKMASEaIAIoAogBIQMgAigChAEhBCACKAKAASEZIAIoAngaIAIoAnwaIAIoAnQhFiACKALIASEPENM7IhhFBEAjsgEgBUcEQBCULwsgCCEVIAEhBiAQIQcgAyEYIAQhECAKIQggDiEBIBYhAiAAIRZBACEDIwFBEGsiCiQBAkAgDyIAKAIIIg5BAEoEQANAAkAgACADQQJ0aigCDBCgDSIEIBJGDQBBASEPIARBAUEAEJUgQQBODQAjAEHp4g5qIQQMAwsgA0EBaiIDIA5HDQALCwJAIAlBf0YNACMAIQMgCRCmPUF/Rw0AIANB6eIOaiEEQQEhDwwBCwJAIAxBf0YNACMAIQMgDBCmPUF/Rw0AIANB6eIOaiEEQQEhDwwBCwJAIBFBf0YNACMAIQMgERCmPUF/Rw0AIANB6eIOaiEEQQEhDwwBCyMAIQNBASEPIBcQpj1Bf0YEQCADQeniDmohBAwBCwJAIAsNACMAIQNBABCPPiILQX9GBEAgA0Hp4g5qIQQMAgsjACEDIAtBAEEAEJUgQQBODQAgA0Hp4g5qIQQMAQsCQANAIA1BAUsNASMAIQMgDRCPPiINQX9GBEAgA0Hp4g5qIQQMAwsjACEDIA1BAEEAEJUgQQBODQALIANB6eIOaiEEDAELAkACQAJAIAdBAWoOAgIAAQsjACEDQQBBAUEAEJUgQQBODQEgA0Hp4g5qIQQMAgsjACEDIAdBABCQPkF/Rw0AIANB6eIOaiEEDAELAkACQAJAIAtBAWoOAwIBAAELIwAhA0EBQQFBABCVIEEATg0BIANB6eIOaiEEDAILIwAhAyALQQEQkD5Bf0cNACADQeniDmohBAwBCwJAAkACQCANQQFqDgQCAQEAAQsjACEEQQJBAUEAEJUgQQBODQEgBEHp4g5qIQQMAgsjACEDIA1BAhCQPkF/Rw0AIANB6eIOaiEEDAELAkAgBkUNACMAIQMgBhCZPUF/Rw0AIANB6eIOaiEEDAELIAJBAE4EQCACEO9FGgsgGARAELgwCwJAIBBFDQAjACEDQQAQqUVBf0cNACADQeniDmohBAwBCwJAIBlBAEgNACMAIQNBACAZEKJEQX9HDQAgA0Hp4g5qIQQMAQsCQCAIRQ0AIwAhAxCqREF/Rw0AIANB6eIOaiEEDAELAkAgAUUNACMAIQMQqkRBf0cNACADQeniDmohBAwBCwJAAkACQCAFI7IBRg0AIBZFDQAjACEEQQAhAyAFIBZBABCTCA0AIARByoEMaiEEDAELIBoEQAJAIwBB+cMIahDkQiIRRQRAQQQQqkUaQYACQQQQqkUiByAHQX9GGyEMQQMhBiAAKAIIIgtBAEoEQEEAIQcDQCAGIAAgB0ECdGooAgwQoA0iCUwEQCAGIAlBAWsQpyAgCUEBaiEGCyAHQQFqIgcgC0cNAAsLIAYgDEoNASAGIAwQpyAMAQsgESgCCCEXEPo7Ig1BADYCACAREM1DIgkEQANAQQAhByAJLQATIgZBMGtB/wFxQQlNBEAgCUETaiEJA0AgB0EKbCAGQf8BcWpBMGshByAJQQFqIgktAAAiBkEwa0H/AXFBCkkNAAsLQX8gByAGQf8BcRsiC0EATgRAAkAgCyAXRg0AIAtBA0kNAEEAIQcgACgCCEEBayIGQQBOBEADQCAAIAYgB2pBAm0iCUECdGooAgwQoA0iDCALRg0CIAlBAWogByALIAxKIgwbIgcgBiAJQQFrIAwbIgZMDQALCyALEKY9GgsgDUEANgIACyAREM1DIgkNAAsLAkAgDSgCAEUNAEEEEKpFGkGAAkEEEKpFIgcgB0F/RhshDEEDIQYgACgCCCILQQBKBEBBACEHA0AgBiAAIAdBAnRqKAIMEKANIglMBEAgBiAJQQFrEKcgIAlBAWohBgsgB0EBaiIHIAtHDQALCyAGIAxKDQAgBiAMEKcgCyAREKc9GgsLIwAhAyAUKAIAIgRFBEAgA0Hp4g5qIQQMAgtBACEDQQAhAANAAkAgEwRAIAQgFSATENI7GgwBCyAEIBUQ+z4aCyADIAMQ+jsoAgAiBCADGyADIARBNkcbIARBLEYbIQMgFCAAQQFqIgBBAnRqKAIAIgQNAAsjAEHp4g5qIQQgA0UNAQsQ+jsgAzYCAAtBACEPCwJAEPo7KAIAIgMEQCASIwBB/6ELakEIEJwgGiPgASgCACEOIApBEGoiDSEEA0ACQCAEQQFrIgQgDiADIANBEG0iAEEEdGtqLQAAOgAAIANBEGtBYEsNACAAIQMgBCAKQQdqRw0BCwsgEiAEIA0gBGsQnCAaIBIjAEGiowtqQQEQnCAaIA9FDQEgEiMAQdCiCWpBBhCcIBoMAQsgEiMAQZGjC2pBEhCcIBogEiAEIAQQ/UQQnCAaCyAKQRBqJAFB/wEQtTwACyAYIhBBf0YEQBD6OygCACEGCyOyASAVRwRAEJMvCyAGBEAQ+jsgBjYCACPDASgCABDSGhoLQQAhBSAARQ0BIAAgACgCAEEBayIBNgIAIAENASAAENUQDAELQQAhBQsgCCEADAELQQAhBQtBACEBC0EAEPkQAkAgAigCbCIIRQ0AIAggCCgCAEEBayIKNgIAIAoNACAIENUQCyATBEAgExCnBgsCQCABRQ0AIAEgASgCAEEBayIINgIAIAgNACABENUQCwJAIAVFDQAgBSAFKAIAQQFrIgE2AgAgAQ0AIAUQ1RALIAAEQCAAEKcGCyAUBEAgFBCnBgsgBwRAELQgGgsgEEF/RgRAQQAhBQwBCyAQEJsNIQULIAJB0AFqJAEgBQsNACMAQcDEtgFqEPAPC0ABAX8CQCAAEIEQIgMoAgAiAARAIAAgAiABEQAAIgANAQsgAygCBCIABEAgACACIAERAAAiAA0BC0EAIQALIAALYwECfwJAIAAQgRAiACgCACIBRQ0AIABBADYCACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIEIgFFDQAgAEEANgIEIAEgASgCAEEBayIANgIAIAANACABENUQC0EAC2EBAn8CQCAAEIEQIgAoAgAiAUUNACAAQQA2AgAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCBCIBRQ0AIABBADYCBCABIAEoAgBBAWsiADYCACAADQAgARDVEAsLYAEDfyAAEIEQIgMgACMAQZDFtgFqQQAQwxIiATYCAEF/IQICQCABRQ0AIAAgARDcHEEASA0AIAMgACMAQaTFtgFqQQAQwxIiATYCBCABRQ0AIAAgARDcHEEfdSECCyACC0YBAX8gAEEIahC5OhogACgCPCIBBEAgARCzHwsgACAAKAIEIgEoAqABEQMAIAEgASgCAEEBayIANgIAIABFBEAgARDVEAsL/AEAAkACQCACBEAjAEGlvgNqIAIQjxtFDQELAkAgASgCCCICQQJPBH8jAEGlvgNqIAJBAEEBEIwbRQ0CIAEoAggFIAILQQBMBEBBCSEBDAELQX8hAgJAIAEoAgwQoQ0iAUF/RgRAELUaRQ0BDAQLIAFBAWtBCUkNAQsjtwEoAgAjAEHMpAtqELQaDAELIAAQsh8iAjYCPCACRQRAI90BKAIAIwBB99UFahC0GgwBCyAAIwIiAkHPD2o2AjAgACACQdAPajYCLEEAIQIgAEEANgI0IABBCGogAUEAQQAQszoQqyJFDQEgACgCPBCzHyAAQQA2AjwLQX8hAgsgAgsHACABEPkQCzIAQQAhAAJAIAEgAnJBAEgNACACBEBB/////wcgAm4gAUkNAQsgASACbBD2ECEACyAAC9kBAQJ/IwFBEGsiASQBAkACQAJAAkACQAJAAkACQAJAAkAgAEEJag4OAAcFBAMDAgEGCQkJCQkHCyPBASgCACMAQfUWahC0GgwHCyO3ASgCACMAQde2C2oQtBoMBgsQzhoaDAULI8MBKAIAIwBBpLEFahC0GgwECyPDASgCACMAQdPCA2oQtBoMAwsjuAIoAgAjAEGo1AhqELQaDAILI74BKAIAIwBBmLYLahC0GgwBCyABIAA2AgAjwwEoAgAjAEGqnAlqIAEQrhoaC0EBIQILIAFBEGokASACCyIAAkAgACgCBCIABEAgACACIAERAAAiAA0BC0EAIQALIAAL4gEBAn8jAUEwayICJAEgAkEANgIoIAJCADcDICACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwACQCABIAJBABDHBQ0AIAJBwwAQyAVFBEAjACIAQYvkAWogAEGY8ABqIABB8ogEaiABEPkaDAELIAAoAjxBABC3H0UEQBDZGCEDIAAoAjxBARC3HxogAxDaGAsCfyAAKAI4BEAjtwEoAgAjAEH8/AhqELQaQQAMAQsgACACKAIAIAIoAghBABCuIgshAyAAKAI8ELUfCyACKAIEBEAgAhDEBQsgAkEwaiQBIAML3QIBBn8jAUEQayIFJAEgBUEANgIIIAVCADcDACAAQRxqIQYCQAJAAkACQEEAQYCAAhCtByIERQ0AIAVBARDWDCIHNgIAIAcNASAEIAQoAgBBAWsiADYCACAADQAgBBDVEAsgBkF/NgIADAELIABBGGohCCAAQQhqIQkgBygCDCAENgIAIAVCgICCgHA3AgQgAEGAgAI2AhwgACAEQRBqNgIYIABBADYCDCAAIAE2AgggA0ECRyEBA0ACQAJAIAAoAgwiBEEBIAIbBEAgAyAEcg0BDAILIAAgAjYCDEEAIQILIAYoAgBFBEAgBSAIIAYQsCJBAEgNAwsQ2RghByAJIAMQtjohBCAHENoYIAQQqyINAiABDQEgBEEERw0BCwsgBSAGKAIAELEiIgQNAQtBACEEIAUoAgAiAEUNACAAIAAoAgBBAWsiAjYCACACDQAgABDVEAsgBUEQaiQBIAQLYgAgACgCPEEAELcfRQRAENkYIQEgACgCPEEBELcfGiABENoYCwJ/IAAoAjgEQCO3ASgCACMAQfzVDWoQtBpBAAwBCyAAQQE2AjggAEEAQQBBAhCuIgshASAAKAI8ELUfIAELrQIBBH8gAigCAARAI8EBKAIAIwBBw9QMahC0GiACQX82AgBBfw8LQYCAgIABIQQgACgCACgCCCIDQRBMBEAjAEHg3RtqIANBAnRqKAIAIQQLIAQgBCAAKAIIIgMgACgCBCIGayIFIAQgBUgbIANBAEgbIgQgBkH/////B3NKBEAj3QEoAgAjAEGw3htqELQaIAJBfzYCAEF/DwtBACAEEK0HIgNFBEAj3QEoAgAjAEGw3htqELQaIAJBfzYCAEF/DwsgACgCACADEN4MIQYgAyADKAIAQQFrIgU2AgAgBkEASARAIAUEQCACQX82AgBBfw8LIAMQ1RAgAkF/NgIAQX8PCyAFRQRAIAMQ1RALIAAgACgCBCAEajYCBCABIANBEGo2AgAgAiAENgIAIAQLywMBCH8gACgCACICKAIIIQMCQAJAAkACQCABDQAgA0EBRw0AIAIoAgwhBAwBCyADQQJHDQEgAigCDCIEKAIEKAIIIAFHDQELIAQoAgAiAyADKAIAQQFqNgIAIABBADYCACACIAIoAgBBAWsiADYCACAADQEgAhDVECADDwtBACAAKAIEIAFrEK0HIgZFBEAj3QEoAgAjAEGw3htqELQaQQAPCyADQQBKBEAgBkEQaiEEAkAgA0EBRg0AIANBAWsiBUEBcSEIAkAgA0ECRgRAQQAhAgwBCyAFQX5xIQlBACECA0AgBCACQQJ0IgQgACgCACgCDGooAgAiA0EQaiADKAIIEM4+IAMoAghqIAAoAgAoAgwgBEEEcmooAgAiA0EQaiADKAIIEM4+IAMoAghqIQQgAkECaiECIAdBAmoiByAJRw0ACwsgCEUNACAEIAAoAgAoAgwgAkECdGooAgAiAkEQaiACKAIIEM4+IAIoAghqIQQLIAQgACgCACgCDCAFQQJ0aigCACICQRBqIAIoAgggAWsQzj4aCwJAIAAoAgAiAkUNACAAQQA2AgAgAiACKAIAQQFrIgA2AgAgAA0AIAIQ1RALIAYhAwsgAwuBAQECfyAAKAJEIgEEQCABEP0QCyAAQQhqEL06GgJAIAAoAjwiAUUNACAAQQA2AjwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIAAoAlAiAQRAIAEQsx8LIAAgACgCBCIBKAKgAREDACABIAEoAgBBAWsiADYCACAARQRAIAEQ1RALC4sCAQF/An8CQCABBEAjAEGQvgNqIAEQkBtFDQELIAIEQCMAQZC+A2ogAhCPG0UNAQsQsh8iAUUEQCPdASgCACMAQffVBWoQtBoMAQsgACgCUCICBEAgAhCzHwsgAEEANgJMIABBAToAQCAAIAE2AlAgAEIANwJEIAAoAjwhASAAQQBBABCtByICNgI8AkAgAUUNACABIAEoAgBBAWsiAzYCACADDQAgARDVECAAKAI8IQILAkAgAkUNAEEAIABBCGpBAEEAELo6EKsiRQ0CGiAAKAI8IgFFDQAgAEEANgI8IAEgASgCAEEBayICNgIAIAINACABENUQCyAAKAJQELMfIABBADYCUAtBfwsLjAoBBn8jAUHQAGsiBCQBIAMEQCADKAIIIQgLIARBADYCMCAEQgA3AyggBEIANwMgIARCADcDGCAEQgA3AxAgBEIANwMIAkACQAJAIAMNACABRQ0AIAJBAWtBAkkNAQsgASACQQAgAyMAQezHtgFqQQFBAkEAIARBOGoQihsiAUUNAQsgASgCACAEQQhqQQAQxwUNACAEQQhqQcMAEMgFRQRAIwAiA0Hm4wFqIANB9ZAOaiADQfKIBGogASgCABD5GgwBC0F/IQMCQCACIAhqQQFGDQAgASgCBBC8BSIBBEAgARCiDSEDIAEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgA0F/Rw0BC0F/IQMQtRoNAQsgACgCUEEAELcfRQRAENkYIQEgACgCUEEBELcfGiABENoYCwJAIAAtADgEQCO4AigCACMAQc/+CGoQtBoMAQsgBCgCECEBIAQoAgghAgJAIAAoAggiCARAIAAoAkQiByAAKAJIIgZqIAggACgCTCIFamshCQJAIAACfyABIAYgBWtLBEAgByABIAZqIAlrIgYQ/BAiBUUEQCPdASgCABCyGkEAIQUMBgsgACAGNgJIIAAgBTYCRCAFIAggB2tqDAELIAEgCU0EQCAIIQYMAgsgByAIIAUQzz4aIAAoAkQLIgY2AgggACgCTCEFCyAFIAZqIAIgARDOPhogACAAKAJMIAFqNgJMDAELIAAgATYCTCAAIAI2AggLIABBCGohAiAEQQA2AkggBEIANwNAIABBHGohBQJAAkACQAJAAkBBAEGAgAIgAyADQYCAAk8bIgYQrQciAUUNACAEQQEQ1gwiBzYCQCAHDQEgASABKAIAQQFrIgM2AgAgAw0AIAEQ1RALIAVBfzYCAAwBCyAHKAIMIAE2AgAgBCADNgJIIAQgBjYCRCAAIAY2AhwgACABQRBqNgIYIAAoAkwhASAAQQA2AkwgAEEMaiIGIAE2AgAQ2RghByACELw6IQEgBxDaGCAAIAAoAkwgBigCAGo2AkwgARCrIg0AIABBGGohBwNAAkAgAUEERgRAIABBAToAOAwBCyAAKAJMIgFFDQAgBSgCAEUEQCAEKAJEIANGDQEgBEFAayAHIAUQsCJBAEgNAyAAKAJMIQELIABBADYCTCAAIAE2AgwQ2RghBiACELw6IQEgBhDaGCAAIAAoAkwgACgCDGo2AkwgARCrIkUNAQwCCwsgBEFAayAFKAIAELEiIgVFDQAgAC0AOEUNASAAQQA6AEAgACgCTCIBRQ0DIAAoAjwhAyAAIAAoAgggARCtByIBNgI8AkAgA0UNACADIAMoAgBBAWsiAjYCACACDQAgAxDVECAAKAI8IQELIAENAwwCCwJAIAQoAkAiA0UNACADIAMoAgBBAWsiATYCACABDQAgAxDVEAtBACEFIAJBADYCAAwCCyAAKAJMIgNFBEAgAEEBOgBAIABBADYCCAwCCyAAQQA6AEAgCA0BAkAgACAAKAJEIgEEfyAAKAJIIANPDQEgARD9ECAAQQA2AkQgACgCTAUgAwsQ+hAiATYCRCABRQRAI90BKAIAELIaDAILIAAgACgCTCIDNgJICyABIAAoAgggAxDOPhogACAAKAJENgIIDAELIAUgBSgCAEEBayIDNgIAIANFBEAgBRDVEAtBACEFCyAAKAJQELUfCyAEKAIMBEAgBEEIahDEBQsgBEHQAGokASAFCw0AIwBBkMi2AWoQ8A8LVwEBfwJAIAAQgRAiAygCACIABEAgACACIAERAAAiAA0BCyADKAIEIgAEQCAAIAIgAREAACIADQELIAMoAggiAARAIAAgAiABEQAAIgANAQtBACEACyAAC48BAQJ/AkAgABCBECIAKAIAIgFFDQAgAEEANgIAIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAgQiAUUNACAAQQA2AgQgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCCCIBRQ0AIABBADYCCCABIAEoAgBBAWsiADYCACAADQAgARDVEAtBAAsIACAAELciGguQAgECfyMBQTBrIgAkASAAQQA2AiggAEIANwMgIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDAAJAIAJBAWtBAk8EQCMAQd64C2ogAkEBQQIQjBtFDQELIAEoAgAgAEEAEMcFDQAgAEHDABDIBUUEQCMAIgJB3rgLaiACQY2/C2ogAkHyiARqIAEoAgAQ+RoMAQtBASEEAkAgAkECSA0AIAEoAgQQpQ0iBEF/Rw0AQX8hBBC1Gg0BCyAAKAIAIQMCQCAAKAIIIgJBgShOBEAQ2RghASAEIAMgAhDXOiEDIAEQ2hgMAQsgBCADIAIQ1zohAwsgAxCcDSEDCyAAKAIEBEAgABDEBQsgAEEwaiQBIAMLsgoBBn8jAUHwAWsiBCQBIAMEQCADKAIIIQYLIARBADYCmAEgBEIANwOQASAEQgA3A4gBIARCADcDgAEgBEIANwN4IARCADcDcAJAAkACQCADDQAgAUUNACACQQFrQQNJDQELIAEgAkEAIAMjAEHgybYBakEBQQNBACAEQaABahCKGyIBRQ0BCyABKAIAIARB8ABqQQAQxwUNACAEQfAAakHDABDIBUUEQCMAIgNBi+QBaiADQY2/C2ogA0HyiARqIAEoAgAQ+RoMAQtBDyEIQX8hBwJAIAIgBmoiA0EBRg0AIAEoAgQiAgRAIAIQoQ0iB0F/RgRAELUaDQMLIANBAkYNAQsgASgCCBChDSIIQX9HDQAQtRoNAUF/IQgLIAAQgRAhACAEKAJ4IQkgBCgCcCEGQQBBgIACEK0HIgFFDQAgBEEBENYMIgM2AqwBAkACQCADRQRAIAEgASgCAEEBayICNgIAIAEhAyACRQ0BDAMLIAMoAgwgATYCACAEQQA2AuABQYCAAiECIARBgIACNgLIASAEIAFBEGo2AsQBIARCgICCgHA3ArABIAQjAiIBQd4PajYC3AEgBCABQd8PajYC2AEgBCAGNgK4AQJAAn8CQAJAAkACQAJAIARBuAFqIAdBCCAIQQhBACMAQaC1C2pBOBDjOiIBQQRqDgUDAQABAgELIAAoAggjAEGPvAVqELQaDAULIARBuAFqEOQ6GgJAIwBB5e0FaiAEKALQASABQXpGGyIFDQAjAEGFsQVqIQUCQAJAIAFBBWoOAwIAAQALIAAoAgghAiAEIwAiBUHpuwlqNgIEIAQgATYCACACIAVBjKIDaiAEEK4aGgwGCyMAQcG6CWohBQsgACgCCCECIAQgBTYCGCAEIwAiBUHpuwlqNgIUIAQgATYCECACIAVBjYcDaiAEQRBqEK4aGgwECyAEIAk2ArwBIAQoAsgBDQFBAAwCCyPdASgCACMAQdu7CWoQtBoMAgtBAQshAQNAAkAgAUUEQEGAgICAASEBIAMoAggiBUEQTARAIwBBgP8baiAFQQJ0aigCACEBCwJAAkACQCACQf////8HcyABSARAI90BKAIAIwBB0P8bahC0GgwBC0EAIAEQrQciBUUEQCPdASgCACMAQdD/G2oQtBoMAQsgAyAFEN4MIQYgBSAFKAIAQQFrIgc2AgAgBkEATg0BIAcNACAFENUQCyAEQX82AsgBDAELIAdFBEAgBRDVEAsgBCAFQRBqNgLEASAEIAE2AsgBIAQgASACaiICNgKwASABQQBODQILIARBuAFqEOQ6GgwDCxDZGCEBIARBuAFqQQQQ7johBSABENoYIAVBfkYEQCAEQbgBahDkOhogACgCCCEFIARBfjYCICAEIwAiAUHpuwlqNgIkIAQgBCgC0AEiAiABQejoBmogAhs2AiggBSABQY2HA2ogBEEgahCuGhoMAwsgBCgCyAEEQCAEQbgBahDkOiIBRQRAIARBrAFqIAQoAsgBELwiIgUNByAEKAKsASIDDQQMBgsgBCAEKQLoATcDaCAEIAQpAuABNwNgIAQgBCkC2AE3A1ggBCAEKQLQATcDUCAEIAQpAsgBNwNIIARBQGsgBCkCwAE3AwAgBCAEKQK4ATcDOCAAIARBOGogASMAQZqJBWoQvSIMAwtBACEBDAELQQEhAQwACwALIAMgAygCAEEBayIBNgIAQQAhBSABDQILIAMQ1RALQQAhBQsgBCgCdARAIARB8ABqEMQFCyAEQfABaiQBIAULIwACfyACBEBBAEH/////ByACbiABSQ0BGgsgASACbBD2EAsLywMBCH8gACgCACICKAIIIQMCQAJAAkACQCABDQAgA0EBRw0AIAIoAgwhBAwBCyADQQJHDQEgAigCDCIEKAIEKAIIIAFHDQELIAQoAgAiAyADKAIAQQFqNgIAIABBADYCACACIAIoAgBBAWsiADYCACAADQEgAhDVECADDwtBACAAKAIEIAFrEK0HIgZFBEAj3QEoAgAjAEHQ/xtqELQaQQAPCyADQQBKBEAgBkEQaiEEAkAgA0EBRg0AIANBAWsiBUEBcSEIAkAgA0ECRgRAQQAhAgwBCyAFQX5xIQlBACECA0AgBCACQQJ0IgQgACgCACgCDGooAgAiA0EQaiADKAIIEM4+IAMoAghqIAAoAgAoAgwgBEEEcmooAgAiA0EQaiADKAIIEM4+IAMoAghqIQQgAkECaiECIAdBAmoiByAJRw0ACwsgCEUNACAEIAAoAgAoAgwgAkECdGooAgAiAkEQaiACKAIIEM4+IAIoAghqIQQLIAQgACgCACgCDCAFQQJ0aigCACICQRBqIAIoAgggAWsQzj4aCwJAIAAoAgAiAkUNACAAQQA2AgAgAiACKAIAQQFrIgA2AgAgAA0AIAIQ1RALIAYhAwsgAwu2AQEBfyMBQSBrIgQkAQJAAkAjAEHl7QVqIAEoAhggAkF6RhsiAQ0AIwBBhbEFaiEBAkACQAJAIAJBBWoOBAMBAAIBCyMAQcG6CWohAQwCCyAAKAIIIQEgBCADNgIEIAQgAjYCACABIwBBjKIDaiAEEK4aGgwCCyMAQejoBmohAQsgACgCCCEAIAQgATYCGCAEIAM2AhQgBCACNgIQIAAjAEGNhwNqIARBEGoQrhoaCyAEQSBqJAELpAcBB38jAUHwAGsiBSQBIAMEQCADKAIIIQYLIAVBADYCSCAFQUBrQgA3AwAgBUIANwM4IAVCADcDMCAFQgA3AyggBUIANwMgAkACQAJAIAFFDQAgAkEGSw0AIANFDQELIAEgAkEAIAMjAEGsyrYBakEAQQZBACAFQdAAahCKGyIBRQ0BC0EPIQhBCCEJAkACQCACIAZqIgNFBEBBfyECDAELAkAgASgCACICRQRAQX8hAgwBCyACEKENIgJBf0YEQBC1Gg0ECyADQQFrIgNFDQELAkAgASgCBCIERQRADAELIAQQoQ0iCUF/RgRAQQAhBBC1Gg0ECyADQQFrIgNFDQELAkAgASgCCCIERQRADAELIAQQoQ0iCEF/RgRAQQAhBBC1Gg0ECyADQQFrIgNFDQELAkAgASgCDCIERQRAQQghBgwBCyAEEKENIgZBf0YEQEEAIQQQtRoNBAsgA0EBayIDRQ0CCyABKAIQIgQEQCAEEKENIgdBf0YEQEEAIQQQtRoNBAsgA0EBRg0CCyABKAIUIAVBIGpBABDHBQRAQQAhBAwDCyAFQSBqQcMAEMgFDQEjACIDQZ3dBWogA0Hv3g1qIANB8ogEaiABKAIUEPkaQQAhBAwCC0EIIQYLQQAhBCAAEIEQIgAoAgAQvyIiAUUNACABQgA3AgggASMCIgNB3g9qNgIsIAEgA0HfD2o2AiggAUEANgIwAkACQAJAAkACQCABQQhqIgogAiAJIAggBiAHIwBBoLULakE4EOM6IgNBBGoOBQEDAgMAAwsgAUEBNgJMIAUoAiAiA0UEQCABIQQMBQsgASEEAkACQCAKIAMgBSgCKBDnOkECag4DAAEGAQsjtwEoAgAjAEHqEGoQtBoMBAsjtwEoAgAjAEGq0Q1qELQaDAMLI90BKAIAIwBBvZwBahC0GgwCCyO3ASgCACMAQenEBGoQtBoMAQsCQCMAQeXtBWogASgAICADQXpGGyICDQAjAEGFsQVqIQICQAJAIANBBWoOAwIAAQALIAAoAgghBCAFIwAiAkGLnQFqNgIEIAUgAzYCACAEIAJBjKIDaiAFEK4aGgwCCyMAQcG6CWohAgsgACgCCCEEIAUgAjYCGCAFIwAiAkGLnQFqNgIUIAUgAzYCECAEIAJBjYcDaiAFQRBqEK4aGgsgASABKAIAQQFrIgM2AgBBACEEIAMNACABENUQCyAFKAIkBEAgBUEgahDEBQsgBUHwAGokASAEC80BAQJ/AkAgABCgECIABEAgAEIANwJMIABBADoASCAAIwBB6eIOakEAEK0HIgI2AkAgAkUEQCAAIAAoAgBBAWsiAjYCACACDQIgABDVEEEADwsgACMAQeniDmpBABCtByIBNgJEIAFFBEAgACAAKAIAQQFrIgI2AgBBACEBIAINAiAAENUQQQAPCyAAELIfIgE2AlQgAQRAIAAPCyAAIAAoAgBBAWsiATYCACABRQRAIAAQ1RALI90BKAIAIwBB99UFahC0GgtBACEBCyABC50CAQJ/IwFBMGsiACQBIABBADYCKCAAQgA3AyAgAEIANwMYIABCADcDECAAQgA3AwggAEIANwMAAkAgAkEBa0ECTwRAIwBB/LgLaiACQQFBAhCMG0UNAQsgASgCACAAQQAQxwUNACAAQcMAEMgFRQRAIwAiAkH8uAtqIAJBjb8LaiACQfKIBGogASgCABD5GgwBCwJAIAJBAkgNACABKAIEEKUNIgRBf0cNAEF/IQQQtRoNAQsgACgCACEDAkAgACgCCCICQYEoTgRAENkYIQEgBCADIAIQ3johAiABENoYDAELIAQgAyACEN46IQILIAJBf0YEQEEAIQMQtRoNAQsgAhCcDSEDCyAAKAIEBEAgABDEBQsgAEEwaiQBIAML2A4BBH8jAUGwAmsiBCQBIAMEQCADKAIIIQYLIARBADYC2AEgBEIANwPQASAEQgA3A8gBIARCADcDwAEgBEIANwO4ASAEQgA3A7ABAkACQAJAIAMNACABRQ0AIAJBAWtBA0kNAQsgASACQQAgAyMAQeDKtgFqQQFBA0EAIARB4AFqEIobIgFFDQELIAEoAgAgBEGwAWpBABDHBQ0AIARBsAFqQcMAEMgFRQRAIwAiA0Hm4wFqIANBjb8LaiADQfKIBGogASgCABD5GgwBC0EPIQcCfwJAIAIgBmoiA0EBRg0AAkAgASgCBCICRQRADAELIAIQoQ0iB0F/RgRAELUaDQQLIANBAkYNAQsCQAJAIAEoAggQvAUiAQRAIAEQog0hAyABIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIANBf0cNAQsQtRoNBCAAEIEQGgwBCyAEQQA2AvABIAAQgRAgA0EATg0CGgsjtwEoAgAjAEHEwAZqELQaDAILIARBADYC8AFBgIABIQMgABCBEAshBkEAQQEgAyADQQFNGyICEK0HIgFFBEAj3QEoAgAjAEHQ/xtqELQaDAELIARBARDWDCIDNgLsASADRQRAIAEgASgCAEEBayIDNgIAIAMNASABENUQDAELIAMoAgwgATYCACAEIAI2AogCIAQgAUEQajYChAIgBEF/NgL0ASAEQQA2AqACIAQjAiIBQd4PajYCnAIgBCABQd8PajYCmAIgBEEANgL8ASAEIAQoArABNgL4ASAEKAK4ASEFAkACQAJAAkACQAJAAkACQAJAAkACQCAEQfgBaiAHIwBBoLULakE4EKU7IgFBBGoOBQIAAAABAAsgBEH4AWoQqjsaAkAjAEHl7QVqIAQoApACIAFBekYbIgUNACMAQYWxBWohBQJAAkACQCABQQVqDgQDAQACAQsjAEHBuglqIQUMAgsgBigCCCECIAQjACIFQdS6CWo2AgQgBCABNgIAIAIgBUGMogNqIAQQrhoaDAsLIwBB6OgGaiEFCyAGKAIIIQIgBCAFNgIYIAQjACIFQdS6CWo2AhQgBCABNgIQIAIgBUGNhwNqIARBEGoQrhoaDAkLIAQgBTYC/AEgBCgCiAJFBEBBgICAgAEhASADKAIIIgVBEEwEQCMAQYD/G2ogBUECdGooAgAhAQsgASACQf////8Hc0oNBkEAIAEQrQciBUUNBSADIAUQ3gwhACAFIAUoAgBBAWsiBzYCACAAQQBIBEAgB0UhAQwFCyAHRQRAIAUQ1RALIAQgBUEQajYChAIgBCABNgKIAiABQQBIDQggASACaiECCxDZGCEBIARB+AFqQQQQqDshBSABENoYAkAgBUEFag4HAAMCAgIAAAILIAQoAogCRQRAA0BBgICAgAEhASADKAIIIgVBEEwEQCMAQYD/G2ogBUECdGooAgAhAQsgASACQf////8Hc0oNB0EAIAEQrQciBUUNBiADIAUQ3gwhACAFIAUoAgBBAWsiBzYCACAAQQBIBEAgB0UhAQwGCyAHRQRAIAUQ1RALIAQgBUEQajYChAIgBCABNgKIAiABQQBIDQkQ2RghACAEQfgBakEEEKg7IQUgABDaGAJAIAVBBWoOBwAFBAQEAAAECyABIAJqIQIgBCgCiAJFDQALCyAEIAI2AvABIARB+AFqEKo7IQEgBUEBRwRAIAQgBCkCqAI3A6gBIAQgBCkCoAI3A6ABIAQgBCkCmAI3A5gBIAQgBCkCkAI3A5ABIAQgBCkCiAI3A4gBIAQgBCkCgAI3A4ABIAQgBCkC+AE3A3ggBiAEQfgAaiAFIwBBwrsJahC9IgwJCyABBEAgBCAEKQKoAjcDcCAEIAQpAqACNwNoIAQgBCkCmAI3A2AgBCAEKQKQAjcDWCAEIAQpAogCNwNQIAQgBCkCgAI3A0ggBCAEKQL4ATcDQCAGIARBQGsgASMAQe+IBWoQvSIMCQsgBEHsAWogBCgCiAIQvCIiBQ0JIAQoAuwBIgMNCEEAIQUMCQsj3QEoAgAjAEG0uwlqELQaDAcLIARB+AFqEKo7GgJAIwBB5e0FaiAEKAKQAiAFQXpGGyIBDQAjAEGFsQVqIQECQAJAAkAgBUEFag4EAwEAAgELIwBBwboJaiEBDAILIAYoAgghAiAEIwAiAUHCuwlqNgIkIAQgBTYCICACIAFBjKIDaiAEQSBqEK4aGgwICyMAQejoBmohAQsgBigCCCECIAQgATYCOCAEIwAiAUHCuwlqNgI0IAQgBTYCMCACIAFBjYcDaiAEQTBqEK4aGgwGCyAEQfgBahCqOxoj3QEoAgAjAEG0uwlqELQaDAULIAFFDQIgBRDVEAwCCyPdASgCACMAQdD/G2oQtBoMAQsj3QEoAgAjAEHQ/xtqELQaCyAEQX82AogCCyAEQfgBahCqOxoLIAMgAygCAEEBayIBNgIAQQAhBSABDQAgAxDVEAsgBCgCtAEEQCAEQbABahDEBQsgBEGwAmokASAFC/AFAQR/IwFBMGsiBSQBAkACQAJAIAMEQCADKAIIIAJqIQYMAQsgAiEGIAFFDQAgAkEDTw0ADAELIAEgAkEAIAMjAEGQy7YBakEAQQJBACAFQShqEIobIgFFDQELAkACQAJAIAZFBEBBDyEHDAELIAEoAgAiAkUEQEEPIQcMAgsgAhChDSIHQX9GBEAQtRoNBAsgBkEBRw0BC0EAIQJBASEEIAAQgRAhAwwBCyABKAIEIQIgABCBECEDIAJFBEBBACECQQEhBAwBCyACEMIFDQAjtQEoAgAjAEHOswVqELQaDAELIAMoAgQQvyIiAUUEQEEAIQQMAQsgAUIANwIIIAEjAiIGQd4PajYCLCABIAZB3w9qNgIoIAFBADYCMCABQQhqIQYgBEUEQCACIAIoAgBBAWo2AgAgASACNgJQCwJAAkACQAJAAkAgBiAHIwBBoLULakE4EKU7IgJBBGoOBQIDAQMAAwsgAUEBNgJMIAdBAE4EQCABIQQMBQsgASgCUEUEQCABIQQMBQsgAyABEMMiQQBOBEAgASEEDAULIAEgASgCAEEBayICNgIAQQAhBCACRQ0DDAQLIAEgASgCAEEBayICNgIAIAJFBEAgARDVEAsjtwEoAgAjAEHpxARqELQaQQAhBAwDCyABIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALI90BKAIAIwBBx5sBahC0GkEAIQQMAgsCQAJAIwBB5e0FaiABKAAgIAJBekYbIgQNACMAQYWxBWohBAJAAkACQCACQQVqDgQDAQACAQsjAEHBuglqIQQMAgsgAygCCCEDIAUjACIEQZmcAWo2AgQgBSACNgIAIAMgBEGMogNqIAUQrhoaDAILIwBB6OgGaiEECyADKAIIIQMgBSAENgIYIAUjACIEQZmcAWo2AhQgBSACNgIQIAMgBEGNhwNqIAVBEGoQrhoaCyABIAEoAgBBAWsiAjYCAEEAIQQgAg0BCyABENUQCyAFQTBqJAEgBAuEAgEDfyMBQdAAayICJAECQAJAIAEoAlAgAkEkakEAEMcFQX9GDQAgAUEIaiACKAIkIAIoAiwQrDshBCACQSRqEMQFIARFDQECQCMAQeXtBWogASgAICAEQXpGGyIBDQAjAEGFsQVqIQECQAJAAkAgBEEFag4EAwEAAgELIwBBwboJaiEBDAILIAAoAgghAyACIwAiAUGIkQFqNgIEIAIgBDYCACADIAFBjKIDaiACEK4aGgwCCyMAQejoBmohAQsgACgCCCEDIAIgATYCGCACIwAiAUGIkQFqNgIUIAIgBDYCECADIAFBjYcDaiACQRBqEK4aGgtBfyEDCyACQdAAaiQBIAMLswUBA38gABCBECIBIAAjAEG0y7YBakEAEMMSIgM2AgBBfyECAkAgA0UNACABIAAjAEHIy7YBakEAEMMSIgM2AgQgA0UNACABIwBB+L8DakEAQQAQ2BoiAzYCCCADRQ0AIAMgAygCAEEBajYCACAAIwBB9sIDaiADENkcQQBIBEAgASgCCCIAIAAoAgBBAWsiATYCACABDQEgABDVEEF/DwsgACMAQdCNCmpBDxDaHEEASA0AIAAjAEGx9gpqQQgQ2hxBAEgNACAAIwBBmsgKakEIENocQQBIDQAgACMAQfPgCmpBgIABENocQQBIDQAgACMAQYS7CmpBABDaHEEASA0AIAAjAEHV+ApqQQEQ2hxBAEgNACAAIwBB27oKakEJENocQQBIDQAgACMAQe66CmpBfxDaHEEASA0AIAAjAEHh9gpqQQEQ2hxBAEgNACAAIwBBh+sJakECENocQQBIDQAgACMAQYTqCmpBAxDaHEEASA0AIAAjAEH29ApqQQQQ2hxBAEgNACAAIwBB2OsJakEAENocQQBIDQAgACMAQfDSCmpBABDaHEEASA0AIAAjAEGI0wpqQQEQ2hxBAEgNACAAIwBBmNMKakECENocQQBIDQAgACMAQfvSCmpBAxDaHEEASA0AIAAjAEGl0wpqQQQQ2hxBAEgNACAAIwBB4s4KakEFENocQQBIDQAgACMAQfaTCmpBBhDaHEEASA0AIwBBoLULahCPFCIBRQ0AIAAjAEGXvApqIAEQ2RxBAEgEQCABIAEoAgBBAWsiADYCACAADQEgARDVEEF/DwsQwjsQjxQiAUUNACAAIwBBybsKaiABENkcQQBIBEAgASABKAIAQQFrIgA2AgAgAA0BIAEQ1RBBfw8LIAAjACICQaTRCWogAkHlxQtqENscQR91IQILIAILGAAgACgCTARAIABBCGoQ5DoaCyAAEMYiC6EBAQN/IAAoAgQhAyAAKAJUELMfAkAgACgCQCIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAkQiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAJQIgFFDQAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIAAQhBEgAyADKAIAQQFrIgA2AgAgAEUEQCADENUQCwu9BgEFfyMBQdAAayIGJAEgBkEANgI4IAZCADcDMCAGQgA3AyggBkIANwMgIAZCADcDGCAGQgA3AxACQAJAAkAgAkUNACADQQFHDQAgBEUNAQsgAiADQQAgBCMAQejMtgFqQQFBAUEAIAZBQGsQihsiAkUNAQsgAigCACAGQRBqQQAQxwUNACAGQRBqQcMAEMgFRQRAIwAiAEGL5AFqIABBjb8LaiAAQfKIBGogAigCABD5GgwBCyABENASIQEgACgCVEEAELcfRQRAENkYIQIgACgCVEEBELcfGiACENoYCyAAIAYoAhA2AgggBigCGCEDAkACQAJAAkACQEEAQYCAAhCtByIFRQ0AIAZBARDWDCICNgJEIAINASAFIAUoAgBBAWsiAjYCACACDQAgBRDVEAsgAEF/NgIYDAELIAIoAgwgBTYCACAGQoCAgoBwNwJIIABBgIACNgIYIAAgBUEQajYCFCAAIAM2AgwQ2RghBSAAQQhqIglBABDuOiEDIAUQ2hgCQAJAIANBfkYNACAAKAIYIgVFBEBBgIACIQQDQEGAgICAASEFIAIoAggiA0EQTARAIwBBgP8baiADQQJ0aigCACEFCwJAAkAgBEH/////B3MgBUgEQCPdASgCACMAQdD/G2oQtBoMAQtBACAFEK0HIgNFBEAj3QEoAgAjAEHQ/xtqELQaDAELIAIgAxDeDCEHIAMgAygCAEEBayIINgIAIAdBAE4NASAIDQAgAxDVEAsgAEF/NgIYDAYLIAhFBEAgAxDVEAsgACAFNgIYIAAgA0EQajYCFCAFQQBIDQUQ2RghAyAJQQAQ7johByADENoYIAdBfkYNAiAEIAVqIQQgACgCGCIFRQ0ACyAGIAQ2AkgLIAZBxABqIAUQvCIiBQ0EIAYoAkQhAgwBCyAAKAAgIQMgASgCCCEEIAYjACIFQem7CWo2AgQgBkF+NgIAIAYgAyAFQejoBmogAxs2AgggBCAFQY2HA2ogBhCuGhoLIAINAQtBACEFDAELIAIgAigCAEEBayIDNgIAQQAhBSADDQAgAhDVEAsgACgCVBC1HwsgBigCFARAIAZBEGoQxAULIAZB0ABqJAEgBQuBCQEGfyMBQeAAayIGJAECQAJAAkAgAkUNACADQQFLDQAgBEUNAQsgAiADQQAgBCMAQZTNtgFqQQBBAUEAIAZB0ABqEIobIgJFDQELAkAgA0EATARAQQQhAgwBCyACKAIAEKENIgJBf0cNAEF/IQIQtRoNAQsgARDQEiEBIAJFBEBBAEEAEK0HIQUMAQsgACgCVEEAELcfRQRAENkYIQMgACgCVEEBELcfGiADENoYCyAAQQA2AgwCQAJAAkACQAJAQQBBgIACEK0HIgVFDQAgBkEBENYMIgM2AlQgAw0BIAUgBSgCAEEBayICNgIAIAINACAFENUQCyAAQX82AhgMAQsgAygCDCAFNgIAIAZCgICCgHA3AlggAEGAgAI2AhggACAFQRBqNgIUENkYIQUgAEEIaiIJIAIQ7johBCAFENoYAkACQCAEQX5GDQAgACgCGCIFRQRAQYCAAiEHA0BBgICAgAEhBSADKAIIIgRBEEwEQCMAQYD/G2ogBEECdGooAgAhBQsCQAJAIAdB/////wdzIAVIBEAj3QEoAgAjAEHQ/xtqELQaDAELQQAgBRCtByIERQRAI90BKAIAIwBB0P8bahC0GgwBCyADIAQQ3gwhCCAEIAQoAgBBAWsiCjYCACAIQQBODQEgCg0AIAQQ1RALIABBfzYCGAwGCyAKRQRAIAQQ1RALIAAgBTYCGCAAIARBEGo2AhQgBUEASA0FENkYIQggCSACEO46IQQgCBDaGCAEQX5GDQIgBSAHaiEHIAAoAhgiBUUNAAsgBiAHNgJYCwJAAkACQCACQQRHDQAgBEEBRw0AIAkQ5DoiAkUNAQJAIwBB5e0FaiAAKAAgIAJBekYbIgUNACMAQYWxBWohBQJAAkACQCACQQVqDgQDAQACAQsjAEHBuglqIQUMAgsgASgCCCEEIAYjACIFQZqJBWo2AhQgBiACNgIQIAQgBUGMogNqIAZBEGoQrhoaDAYLIwBB6OgGaiEFCyABKAIIIQQgBiAFNgIoIAYjACIFQZqJBWo2AiQgBiACNgIgIAQgBUGNhwNqIAZBIGoQrhoaDAQLAkAgBEEFag4GAgAAAAACAAsCQCMAQeXtBWogACgAICAEQXpGGyICDQAjAEGFsQVqIQICQAJAIARBBWoOAwIAAQALIAEoAgghBSAGIwAiAkHWmAZqNgI0IAYgBDYCMCAFIAJBjKIDaiAGQTBqEK4aGgwFCyMAQcG6CWohAgsgASgCCCEFIAYgAjYCSCAGIwAiAkHWmAZqNgJEIAYgBDYCQCAFIAJBjYcDaiAGQUBrEK4aGgwDCyAAQQA2AkwgACgCGCEFCyAGQdQAaiAFELwiIgUNBCAGKAJUIQMMAQsgACgAICEFIAEoAgghBCAGIwAiAkHWmAZqNgIEIAZBfjYCACAGIAUgAkHo6AZqIAUbNgIIIAQgAkGNhwNqIAYQrhoaCyADDQELQQAhBQwBCyADIAMoAgBBAWsiAjYCAEEAIQUgAg0AIAMQ1RALIAAoAlQQtR8LIAZB4ABqJAEgBQshACADBEAjtQEoAgAjAEH3zAFqELQaQQAPCyAAIAEQyiIL0wQBBH8jAUEgayIEJAECQAJAIAEQ0BIiAigCABC/IiIBRQ0AIAAoAlRBABC3H0UEQBDZGCEDIAAoAlRBARC3HxogAxDaGAsCQAJAAkACQAJAIAFBCGogAEEIahDzOiIDQQRqDgUAAQMBAgELI90BKAIAIwBBvZwBahC0GgwDCwJAIwBB5e0FaiAAKAAgIANBekYbIgUNACMAQYWxBWohBQJAAkACQCADQQVqDgQDAQACAQsjAEHBuglqIQUMAgsgAigCCCECIAQjACIFQeqcAWo2AgQgBCADNgIAIAIgBUGMogNqIAQQrhoaDAQLIwBB6OgGaiEFCyACKAIIIQIgBCAFNgIYIAQjACIFQeqcAWo2AhQgBCADNgIQIAIgBUGNhwNqIARBEGoQrhoaDAILIAAoAkAiAyADKAIAQQFqNgIAIAEoAkAhAiABIAM2AkACQCACRQ0AIAIgAigCAEEBayIDNgIAIAMNACACENUQCyAAKAJEIgMgAygCAEEBajYCACABKAJEIQIgASADNgJEAkAgAkUNACACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgACgCUCIDBEAgAyADKAIAQQFqNgIACyABKAJQIQIgASADNgJQAkAgAkUNACACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgAC0ASCECIAFBATYCTCABIAI6AEggACgCVBC1HwwDCyO3ASgCACMAQYLpBmoQtBoLIAAoAlQQtR8gASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALQQAhAQsgBEEgaiQBIAELIQAgAwRAI7UBKAIAIwBB3c4BahC0GkEADwsgACABEMoiC10BAX8jAUEQayIFJAECfwJAAkAgAkUNACADQQFHDQAgBEUNAQtBACACIANBACAEIwBBwM22AWpBAUEBQQAgBUEMahCKG0UNARoLIAAgARDKIgshACAFQRBqJAEgAAsYACAAKAJMBEAgAEEIahCqOxoLIAAQxiILvwkBBn8jAUHgAGsiBiQBIAQEQCAEKAIIIQcLIAZBADYCSCAGQUBrQgA3AwAgBkIANwM4IAZCADcDMCAGQgA3AyggBkIANwMgAkACQAJAIAQNACACRQ0AIANBAWtBAkkNAQsgAiADQQAgBCMAQczPtgFqQQFBAkEAIAZBzABqEIobIgJFDQELIAIoAgAgBkEgakEAEMcFDQAgBkEgakHDABDIBUUEQCMAIgRB5uMBaiAEQY2/C2ogBEHyiARqIAIoAgAQ+RoMAQtBACEEAkAgAyAHakEBRg0AIAIoAgQQvAUiAgRAIAIQog0hBCACIAIoAgBBAWsiBTYCACAFRQRAIAIQ1RALIARBf0cNAQtBACEFELUaDQFBfyEECyAGQQA2AlggARDPEiICRQRAQQAhBQwBCyACEIEQIQggBEEASARAI7cBKAIAIwBBgsAGahC0GkEAIQUMAQsgBEF/IAQbIQMgACgCVEEAELcfRQRAENkYIQQgACgCVEEBELcfGiAEENoYCyAAIAYoAiA2AgggBigCKCEFAkACQAJAAkACQEEAQYCAAiADIANBgIACTxsiAhCtByIERQ0AIAZBARDWDCIHNgJUIAcNASAEIAQoAgBBAWsiAjYCACACDQAgBBDVEAsgAEF/NgIYDAELIABBCGohASAHKAIMIAQ2AgAgBiADNgJcIAAgAjYCGCAAIARBEGo2AhQgACAFNgIMIAIhBUEAIQQCQANAAkAgBUUEQCACIANGBEAgAyECDAILQYCAgIABIQQgBygCCCIFQRBMBEAjAEGA/xtqIAVBAnRqKAIAIQQLAkACQCAEIAQgAyACayIFIAQgBUgbIANBAEgbIgUgAkH/////B3NKBEAj3QEoAgAjAEHQ/xtqELQaDAELQQAgBRCtByIERQRAI90BKAIAIwBB0P8bahC0GgwBCyAHIAQQ3gwhCiAEIAQoAgBBAWsiCTYCACAKQQBODQEgCQ0AIAQQ1RALIABBfzYCGAwGCyAJRQRAIAQQ1RALIAAgBTYCGCAAIARBEGo2AhQgBUEASA0DIAIgBWohAgsQ2RghBSABQQIQqDshBCAFENoYAkACQCAEQQVqDggBAgICAgEBAAILIAAoAlBFBEBBAiEEDAILIAggABDDIkEASA0DCyAAKAIYIgVFDQEgBEECRg0BCwsgBiACNgJYIAAgBkEgaiAEEM8iQQBIDQACQAJAAkAgBEEFag4HAgAAAAACAQALAkAjAEHl7QVqIAAoACAgBEF6RhsiAg0AIwBBhbEFaiECAkACQAJAIARBBWoOBAMBAAIBCyMAQcG6CWohAgwCCyAIKAIIIQUgBiMAIgJBwrsJajYCBCAGIAQ2AgAgBSACQYyiA2ogBhCuGhoMBAsjAEHo6AZqIQILIAgoAgghBSAGIAI2AhggBiMAIgJBwrsJajYCFCAGIAQ2AhAgBSACQY2HA2ogBkEQahCuGhoMAgsgAEEBOgBICyAGQdQAaiAAKAIYELwiIgUNAyAGKAJUIQcLIAcNAQtBACEFDAELIAcgBygCAEEBayIENgIAQQAhBSAEDQAgBxDVEAsgACgCVBC1HwsgBigCJARAIAZBIGoQxAULIAZB4ABqJAEgBQuaAgECfwJAAkAgAkEBRgRAIAAoAgwEQCABKAIAIAEoAghqIAAoAghrIgMgACgCQCgCCCICQf////8Hc0oEQBDOGhpBfw8LQQAgAiADahCtByIERQRAQX8PCyAEQRBqIAAoAkBBEGogAhDOPiACaiAAKAIIIAMQzj4aIAAoAkAhAiAAIAQ2AkAgAiACKAIAQQFrIgM2AgAgA0UEQCACENUQCyAAQQA2AgwLIABBCGohAgwBCyAAQQhqIQIgACgCDA0BCyAAKAJEKAIIDQBBAA8LIAIoAgAiAiABKAIAIAEoAghqIAJrEK0HIgJFBEBBfw8LIAAoAkQhASAAIAI2AkQgASABKAIAQQFrIgA2AgAgAEUEQCABENUQC0EAC+wHAQV/IwFBgAFrIgYkAQJAAkACQCACRQ0AIANBAUsNACAERQ0BCyACIANBACAEIwBB+M+2AWpBAEEBQQAgBkHEAGoQihsiAkUNAQsCQCADQQBMBEBBgIABIQIMAQsgAigCABC8BSIFBEAgBRCiDSECIAUgBSgCAEEBayIDNgIAIANFBEAgBRDVEAsgAkF/Rw0BC0EAIQUQtRoNAUF/IQILQQAhBSAGQQA2AkwgARDPEiIDRQ0AIAMQgRAhCCACQQBMBEAjtwEoAgAjAEHUswRqELQaDAELIAAoAlRBABC3H0UEQBDZGCEFIAAoAlRBARC3HxogBRDaGAtBACEFIAAoAkQgBkHUAGpBABDHBUF/RgRAIAAoAlQQtR8MAQsgACAGKAJUNgIIIAYoAlwhBQJAAkACQEEAIAIQrQciB0UEQCPdASgCACMAQdD/G2oQtBoMAQtBASEDIAZBARDWDCIENgJIIARFBEAgByAHKAIAQQFrIgI2AgBBACEFIAINAyAHENUQDAMLIABBCGohASAEKAIMIAc2AgAgBkF/NgJQIAAgAjYCGCAAIAdBEGo2AhQgACAFNgIMAkACQAJAA0AgA0UEQEGAgICAASEFIAQoAggiA0EQTARAIwBBgP8baiADQQJ0aigCACEFCwJAAkAgAkH/////B3MgBUgEQCPdASgCACMAQdD/G2oQtBoMAQtBACAFEK0HIgNFBEAj3QEoAgAjAEHQ/xtqELQaDAELIAQgAxDeDCEHIAMgAygCAEEBayIJNgIAIAdBAE4NASAJDQAgAxDVEAsgAEF/NgIYDAcLIAlFBEAgAxDVEAsgACAFNgIYIAAgA0EQajYCFCAFQQBIDQYgAiAFaiECCxDZGCEDIAFBBBCoOyEFIAMQ2hgCQAJAAkAgBUEFag4IAQICAgIBAQACCyAAKAJQRQ0DIAggABDDIkEASA0FCyAAKAIYIgNFDQEgBUECRg0BCwsgBiACNgJMIAAgBkHUAGogBRDPIkEASA0CIAVBAUcNASAAQQA2AkwgAEEBOgBIIAEQqjsiAkUNASAGIAEpAjA3AzggBiABKQIoNwMwIAYgASkCIDcDKCAGIAEpAhg3AyAgBiABKQIQNwMYIAYgASkCCDcDECAGIAEpAgA3AwggCCAGQQhqIAIjAEHviAVqEL0iDAILIAYgAjYCTCAAIAZB1ABqQQIQzyJBAEgNAQsgBkHIAGogACgCGBC8IiIFDQMgBigCSCEECyAEDQELQQAhBQwBCyAEIAQoAgBBAWsiAjYCAEEAIQUgAg0AIAQQ1RALIAZB1ABqEMQFIAAoAlQQtR8LIAZBgAFqJAEgBQshACADBEAjtQEoAgAjAEH3zAFqELQaQQAPCyAAIAEQ0iIL0wQBBH8jAUEgayIEJAECQAJAIAEQ0BIiAigCBBC/IiIBRQ0AIAAoAlRBABC3H0UEQBDZGCEDIAAoAlRBARC3HxogAxDaGAsCQAJAAkACQAJAIAFBCGogAEEIahCwOyIDQQRqDgUAAQMBAgELI90BKAIAIwBBx5sBahC0GgwDCwJAIwBB5e0FaiAAKAAgIANBekYbIgUNACMAQYWxBWohBQJAAkACQCADQQVqDgQDAQACAQsjAEHBuglqIQUMAgsgAigCCCECIAQjACIFQfabAWo2AgQgBCADNgIAIAIgBUGMogNqIAQQrhoaDAQLIwBB6OgGaiEFCyACKAIIIQIgBCAFNgIYIAQjACIFQfabAWo2AhQgBCADNgIQIAIgBUGNhwNqIARBEGoQrhoaDAILIAAoAkAiAyADKAIAQQFqNgIAIAEoAkAhAiABIAM2AkACQCACRQ0AIAIgAigCAEEBayIDNgIAIAMNACACENUQCyAAKAJEIgMgAygCAEEBajYCACABKAJEIQIgASADNgJEAkAgAkUNACACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgACgCUCIDBEAgAyADKAIAQQFqNgIACyABKAJQIQIgASADNgJQAkAgAkUNACACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgAC0ASCECIAFBATYCTCABIAI6AEggACgCVBC1HwwDCyO3ASgCACMAQYLpBmoQtBoLIAAoAlQQtR8gASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALQQAhAQsgBEEgaiQBIAELIQAgAwRAI7UBKAIAIwBB3c4BahC0GkEADwsgACABENIiC10BAX8jAUEQayIFJAECfwJAAkAgAkUNACADQQFHDQAgBEUNAQtBACACIANBACAEIwBBpNC2AWpBAUEBQQAgBUEMahCKG0UNARoLIAAgARDSIgshACAFQRBqJAEgAAvTBAEFfwJAIwBBqJftAWooAgANACMAQaiX7QFqELIfIgE2AgAgAQ0AIwAiAUHAl+0BaigCACABQbf2AGoQtBpBAA8LIwAiAEGol+0BaiIBQgA3AgQgAUEANgIUIAFCADcCDAJAIABByNC2AWoQyBINACMAQZTStgFqQfUHEPQPIgFFDQAgARD9DyEDIwBByJftAWooAgBFBEAjACIAQciX7QFqIABB98sDaiO+ASgCAEEAENgaIgA2AgAgAEUNASADIwBBiswDaiAAEL0ODQELIwAiAEHAl+0BaiAAQanHA2ojvgEoAgBBABDYGiIANgIAIABFDQAgAyMAQbzHA2ogABC9Dg0AIwAiAEHEl+0BaiAAQaHKA2ogAEHAl+0BaigCAEEAENgaIgA2AgAgAEUNACADIwBBtMoDaiAAEL0ODQAjACIAQcyX7QFqIABBwssDaiAAQcCX7QFqKAIAQQAQ2BoiADYCACAARQ0AIAMjAEHVywNqIAAQvQ4NACMAIgBB0JftAWogAEGkwwNqIABBwJftAWooAgBBABDYGiIANgIAIABFDQAgAyMAQbfDA2ogABC9Dg0AIwAiAEHUl+0BaiAAQfzCA2ogAEHAl+0BaigCAEEAENgaIgA2AgAgAEUNACADIwBBj8MDaiAAEL0ODQAjACIEQcjQtgFqIgAgACgCAEEBajYCACADIARBgPMKaiAAEL0ODQAjxgIiACAAKAIAQQFqNgIAIAMjAEHf8gpqIAAQvQ4NAEEAIAEjAEHI0LYBaiMCQfYPahDtHRshAgsgAgtgAQF/QRAQ+hAiAkUEQEF/DwsgAiAAKQMINwMAIAIgACgCEDYCCCACIAAoAhQ2AgwgASACNgIAIAAgACgCAEEBajYCACABI4YDNgIUIAEjAkH3D2o2AhAgASAANgIEQQALjAIBBH8jAUEQayIDJAEjACICQcjQtgFqIAAoAgAiACkDACAAKAIIIAJBqJftAWpBAEEAEN0iIQICQCAAKAIIIgFFDQAgACgCDEUNAAJAAkAjAEHX9AFqEMcbIgBFBEAQvRojAEHK9AFqEMcbIgBFDQELIAAjAEGCvgVBjr4FIAFBf0YbahC0ECEBIAAgACgCAEEBayIENgIAIARFBEAgABDVEAsgAUUNACADQQA2AgQgAyACNgIAIAEgAxClCCEAIAEgASgCAEEBayIENgIAIARFBEAgARDVEAsgAA0BCxC9GgwBCyACIAIoAgBBAWsiATYCACABRQRAIAIQ1RALIAAhAgsgA0EQaiQBIAIL5QECBH8BfiAAKQMIIQUgACgCGCECIAAgACgCBCgCoAERAwAgAigCAEEBELcfGgJAIAIoAgQiA0UNACAFIAMiACkDAFIEQANAIAAiASgCDCIARQ0CIAApAwAgBVINAAsLIAAgACgCEEEBayIENgIQIAQNACACQQRqIAFBDGogACADRhsgACgCDDYCACACIAIpAwhCAX03AwggACgCCCIBRQRAIAAQ/RAMAQsgASgCAEEBELcfGiABKAIQIgMEQCADEP0QIAFBADYCEAsgASgCABC1HyAAEP0QIAEQ2SILIAIoAgAQtR8LjQIBBH8gACgCAEEBELcfGiAAKAIQIgEEQCABEP0QIABBADYCEAsgACgCABC1HyAAKAIAQQEQtx8aIAAoAgQiBCgCCCIBBEADQCABKAIEIQMgASgCACICBEAgAhDrHSABKAIAEP0QIAFBADYCAAsgAUEANgIEIAEQ/RAgAyIBDQALCyAEQgA3AwAgBEIANwMIIAQQ/RAgACgCCCICKAIQIgEEQANAIAEoAgAhAyABEP0QIAMiAQ0ACwsgAkIANwMAIAJBADYCECACKAIUIgEEQANAIAEoAgAhAyABEP0QIAMiAQ0ACwsgAkIANwMIIAJBADYCFCACEP0QIAAoAgAQtR8gACgCABCzHyAAEP0QC1oBA38jAUEQayIBJAEgACgCBBC1EiEDIAAoAhAhAiABIAApAwg3AwggASADNgIAIwBB6psNQaabDUGvsA0gAkF/RhsgAkEBRhtqIAEQpBQhACABQRBqJAEgAAuZAwICfwF+IwFBEGsiBCQBAkAgAkEEa0F9TQRAI7oBIgIgAigCAEEBajYCAAwBCwJAIAAoAgQiAyMAQcjQtgFqRg0AIAMjAEHI0LYBahC5Eg0AI7oBIgIgAigCAEEBajYCAAwBCwJAAkAgASgCBCIDIwBByNC2AWpHBEAgAyMAQcjQtgFqELkSRQ0BC0EAIQMgACgCECABKAIQRw0BIAApAwggASkDCFEhAwwBCyABKAIELQBXQQFxBEACQCABIARBDGoQsg0iBUJ/UQRAELUaDQFBACEDDAMLQQAhAyAEKAIMDQIgBUIAUw0CIAApAwggBVEhAwwCC0EAIQIMAgsgARDSBQRAIAApAwgQrQ0iAEUEQEEAIQIMAwsgACABIAIQrRAhAiAAIAAoAgBBAWsiATYCACABDQIgABDVEAwCCyO6ASICIAIoAgBBAWo2AgAMAQsgA0EARyIBIAJBAkZxQQEgAkEDRyABchsEQCO7ASICIAIoAgBBAWo2AgAMAQsjvAEiAiACKAIAQQFqNgIACyAEQRBqJAEgAgtcACABBEAgACgCBCAAKQMIIAEoAgAgACgCGEEBIAAoAhQQ3SIPCwJAAkACQCAAKAIQQQFqDgMBAgACCyMAQba4CGoQthUPCyMAQdQ4ahC2FQ8LIwBB8+MFahC2FQvqAQECfyMBQRBrIgckAQJAAkACQCAAEKAQIgZFDQAgBiADNgIYIAYgBTYCFCAGIAI2AhAgBiABNwMIIAMoAgBBARC3HxogAygCBCIABEADQCAAKQMAIAFRDQMgACgCDCIADQALCyAHIAE3AwAjACIAQcSX7QFqKAIAIABB5rAIaiAHEK4aGiADKAIAELUfAkAgBEUNACMAQcSX7QFqKAIAELgaRQ0AEL0aDAMLIAYgBigCAEEBayIANgIAIAANACAGENUQC0EAIQYMAQsgACAAKAIQQQFqNgIQIAMoAgAQtR8LIAdBEGokASAGC6sBAQJ/IwFBEGsiAyQBIANBATYCDCADIANBDGo2AgBBACEAAkAgASACIwAiBEHc7QZqIARB4Na2AWogAxD6GkUNACOwASgC6AIhAiADKAIMEKIdIQQgAhDVHRogBEUEQCO+ASgCACMAQb3vCGoQtBoMAQsgBCgCCCICEMMMIgFFBEAgBBDVHSECIAQQpB0gAhDVHRoMAQsgAkEBEMIdIAEhAAsgA0EQaiQBIAAL1AEBAX8jAUEQayIAJAEgACAAQQxqNgIAAkAgASACIwAiAUHPFWogAUHo1rYBaiAAEPoaRQ0AIAAoAgwQxAwiAUUNABC7HSICRQ0AIAEgAkYEQCO+ASgCACMAQdLcA2oQtBoMAQsgASgCECICKAIEBEAjvgEoAgAjAEHDiAlqELQaDAELIAIoAigoAgQEQCO+ASgCACMAQYaWBmpBABCuGhoMAQsgASgCECIBENUdIQMgARCkHSADENUdGiOyASIDIAMoAgBBAWo2AgALIABBEGokASADC6gBAQN/QQAhAAJAQQAQ1gwiAUUNACOwASgCHCICBEADQAJAAkAgAhDDDCIARQRAIAEgASgCAEEBayICNgIAQQAhACACRQ0BDAULIAFBACAAENoMIQMgACAAKAIAQQFrIgQ2AgAgBEUEQCAAENUQCyADQQBODQEgASABKAIAQQFrIgI2AgBBACEAIAINBAsgARDVEEEADwsgAigCACICDQALCyABIQALIAALEwAQux0iAEUEQEEADwsgABDDDAsHAEIAEMIMC50BAQF/IwFBEGsiAyQBIAMgA0EMajYCAEEAIQACQCABIAIjACIBQb2UBmogAUHw1rYBaiADEPoaRQ0AIAMoAgwQxAwiAUUNACABKAIQIgEoAgQEQCO+ASgCACMAQcOICWoQtBoMAQsgASgCKCgCBARAI7sBIgAgACgCAEEBajYCAAwBCyO8ASIAIAAoAgBBAWo2AgALIANBEGokASAAC8UOAQh/IwFB4ABrIgMkASADQQA2AkggAyADQdAAajYCMCADIANBzABqNgI0IAMgA0HIAGo2AjgCQCABIAIjACIAQZeABmogAEGA17YBaiADQTBqEPoaRQ0AIAMoAlAQxAwiAEUNACADKAJMIANBxABqENgUIgJFDQAgAhD9RCADKAJERwRAI7cBKAIAIwBB0KECahC0GgwBCyADKAJIIQQgACgCECIBKAIEBEAjvgEoAgAjAEHDiAlqELQaDAELIAEoAigoAgQEQCO+ASgCACMAQYaWBmpBABCuGhoMAQsCfwJAAkAgBEUNACAEI7IBRg0AIAQQqg4iAUUNAEEIEPoQIgZFBEAQzhoaDAELIAYgATYCAAJAIAFBgICAIE8EQCAGQQA2AgQQzhoaDAELIAYgAUEFdBD6ECIFNgIEIAVFBEAQzhoaDAELIANBADYCXANAAkAgBCADQdwAaiADQdgAaiADQdQAahCFDkUNACAGKAIEIAdBBXRqIQUgAygCVCEJAkAgAygCWBDZFCIIBEAgCBD9REEBahD6ECIKDQEQzhoaCyAFQQA2AgAMAQsgBSAKIAgQ8kQ2AgAgCSAFQQhqIggQ6h0EQCAFKAIAIgEEQCABEP0QIAVBADYCAAsgCBDrHQwBCyAHQQFqIgcgAUcNAQsLELUaRQ0CIAYoAgBBAEoEQEEAIQEDQCAGKAIEIAFBBXRqIgQoAgAiBQRAIAUQ/RAgBEEANgIACyAEQQhqEOsdIAFBAWoiASAGKAIASA0ACwsgBigCBBD9EAsgBhD9EAtBACEGELUaDQJBAQwBC0EACyEIQQAhBxC7HSAARwRAIAAoAhAQ1R0hBwsgA0EANgJcIANBADYCWCADQQA2AlQCQAJAIAAQwx0iAEUNACAAEP0PIQQgACAAKAIAQQFrIgE2AgAgAUUEQCAAENUQCyAERQ0AIAQgBCgCAEEBajYCAAJAIAgNAEEAIQUgBigCAEEATA0AA0ACQCAGKAIEIAVBBXRqIgEoAgAQjxQiAEUNAAJAAkAgAUEIahDsHSIBRQRAQX8hCSAAIAAoAgBBAWsiCjYCACAAIQEgCkUNAQwDCyAEIAAgARCNDiEJIAAgACgCAEEBayIKNgIAIApFBEAgABDVEAsgASABKAIAQQFrIgA2AgAgAA0BCyABENUQCyAJDQAgBUEBaiIFIAYoAgBIDQEMAgsLIAQgBCgCAEEBayIANgIAIAANASAEENUQDAELIAJBgQIgBCAEQQAQjB4hAiAEIAQoAgBBAWsiADYCACAARQRAIAQQ1RALIAJFDQAgAiACKAIAQQFrIgE2AgBBASEEQQAhACABDQEgAhDVEAwBCyADQdwAaiADQdgAaiADQdQAahC8GiADKAJYIQQgAygCXCECAkBBCBD6ECIARQRAEM4aGgwBCyAAQgA3AgAgAyACNgIgAn8jACIBQb+VCmogA0EgahCkFCICRQRAIAFB06YHagwBC0EAIQECQCACENkUIgVFDQAgBRD9REEBahD6ECIJRQRAEM4aGgwBCyAJIAUQ8kQhAQsgACABNgIAIAIgAigCAEEBayIFNgIAIAUEfyABBSACENUQIAAoAgALRQRAIwBB+KYHQaWmByPdASgCABC4GhtqDAELIARFDQEgAyAENgIQIwAiAUG/lQpqIANBEGoQpBQiAkUEQCABQe7pB2oMAQtBACEBAkAgAhDZFCIERQ0AIAQQ/URBAWoQ+hAiBUUEQBDOGhoMAQsgBSAEEPJEIQELIAAgATYCBCACIAIoAgBBAWsiBDYCACAEBH8gAQUgAhDVECAAKAIECw0BIwBBkeoHQcLpByPdASgCABC4GhtqCyECEL0aIAAoAgAiAQRAIAEQ/RAgAEEANgIACyAAIAI2AgQLAkAgAygCXCICRQ0AIAIgAigCAEEBayIBNgIAIAENACACENUQCwJAIAMoAlgiAkUNACACIAIoAgBBAWsiATYCACABDQAgAhDVEAsCQCADKAJUIgJFDQAgAiACKAIAQQFrIgE2AgAgAQ0AIAIQ1RALQQAhBCAADQAjAEGGxgRqQTNBASPMASgCABCOQBoQvRpBACEACyAHBEAgBxDVHRoLAkAgAARAIwBByJftAWooAgAhASAAKAIEIQICQCAAKAIAIgUEQCACBEAgAyACNgIEIAMgBTYCACABIwBBp6MDaiADEK4aGgwCCyABIAUQtBoMAQsgAgRAIAEgAhC0GgwBCyABELIaCyAAKAIAIgIEQCACEP0QCyAAKAIEIgIEQCACEP0QCyAAEP0QDAELIAQNABDOGhoLIAhFBEAgBigCAEEASgRAQQAhAANAIAYoAgQgAEEFdGoiAigCACIBBEAgARD9ECACQQA2AgALIAJBCGoQ6x0gAEEBaiIAIAYoAgBIDQALCyAGKAIEEP0QIAYQ/RALQQAhBiAERQ0AI7IBIgYgBigCAEEBajYCAAsgA0HgAGokASAGC2oAIwFBEGsiACQBIAAgAEEMajYCAAJAIAEgAiMAIgFBqtgHaiABQZDXtgFqIAAQ+hpFBEBBACEBDAELI7sBIQEgACgCDBDoHQRAEL0aI7wBIQELIAEgASgCAEEBajYCAAsgAEEQaiQBIAEL6gMCA38BfkEAIQACQEEUEPoQIgJFDQAgAhCyHyIANgIAIABFBEAgAhD9ECMAIgBBwJftAWooAgAgAEGfvQVqELQaQQAPC0EQEPoQIgBFBEAQzhoaIAJBADYCBCACEP0QQQAPCyAAQgA3AwAgAEIANwMIIAIgADYCBEEYEPoQIgBFBEAgAkEANgIIIAIoAgQiAygCCCIABEADQCAAKAIEIQEgACgCACIEBEAgBBDrHSAAKAIAEP0QIABBADYCAAsgAEEANgIEIAAQ/RAgASIADQALCyADQgA3AwAgA0IANwMIIAMQ/RAgAhD9EEEADwsgAEIANwMAIABCADcDECAAQgA3AwggAkIBNwIMIAIgADYCCCMAQaiX7QFqIgAoAgBBARC3HxoCQAJAIAApAxAiBUIAUwRAIwAiAEHAl+0BaigCACAAQbb0CmoQtBoMAQsjAEGol+0BaiAFQgF8NwMQQRgQ+hAiAA0BCyMAQaiX7QFqKAIAELUfIAIQ2SJBAA8LIABBADYCECAAIAI2AgggACAFNwMAIAAjACICQaiX7QFqIgEoAgQ2AgwgASAANgIEIAEgASkDCEIBfDcDCCABKAIAELUfIAJByNC2AWogBUEAIAFBAEEAEN0iIgANACAFEOciGkEAIQALIAALsgIBBX8jAUEQayIEJAEjAEGol+0BaiIBKAIAQQEQtx8aAkACQAJAIAEoAgQiA0UNACADIgEpAwAgAFENAQNAIAEiAigCDCIBRQ0BIAAgASkDAFINAAsMAQsgBCAANwMAIwAiAUHEl+0BaigCACABQeawCGogBBCuGhogAUGol+0BaigCABC1H0F/IQEMAQsjAEGol+0BaiIFQQRqIAJBDGogASADRhsgASgCDDYCACAFIAUpAwhCAX03AwggASgCCCICBEAgAigCAEEBELcfGiACKAIQIgMEQCADEP0QIAJBADYCEAsgAigCABC1HyABEP0QIwBBqJftAWooAgAQtR9BACEBIAJFDQEgAhDZIgwBCyABEP0QIwBBqJftAWooAgAQtR9BACEBCyAEQRBqJAEgAQtkAQF/IwFBEGsiACQBIAAjAkH4D2o2AgAgACAAQQhqNgIEAkAgASACIwAiAUGnFWogAUGY17YBaiAAEPoaRQ0AIAApAwgQ5yINACOyASIDIAMoAgBBAWo2AgALIABBEGokASADC8sBAgJ/AX4jAUEgayICJAECQAJAAkAgACgCBCIDIwBByNC2AWpHBEAgAyMAQcjQtgFqELkSRQ0BCyAAKQMIIQQMAQsCQCAAEPcFBEACQCAAEK8NIgRCf1EEQEEAIQEQtRpFDQEMBQsgBEIAWQ0DCyACIAA2AhAjtwEoAgAjAEGwogpqIAJBEGoQrhoaDAELIAIgACgCBCgCDDYCACO1ASgCACMAQaSOA2ogAhCuGhoLQQAhAQwBCyABIAQ3AwBBASEBCyACQSBqJAEgAQu6AgICfgJ/IwBBqJftAWoiACgCAEEBELcfGgJAIAAoAggiAEH/////AEsNACAAQQN0EPoQIgFFDQAjAEGol+0BaigCBCIABEADQCABIAKnQQN0aiAAKQMANwMAIAJCAXwhAiAAKAIMIgANAAsLIwBBqJftAWoiACkDCCEDIAAoAgAQtR8gA6cQ1gwiBEUEQCABEP0QQQAPCwJ/IANCAFUEQEIAIQIgASEAA0AjACIFQcjQtgFqIAApAwBBACAFQaiX7QFqQQBBABDdIiIFRQRAIAQgBCgCAEEBayIFNgIAQQAgBQ0DGiAEENUQIAEQ/RBBAA8LIAQoAgwgAqdBAnRqIAU2AgAgAEEIaiEAIAJCAXwiAiADUg0ACwsgBAshACABEP0QIAAPCyMAQaiX7QFqKAIAELUfQQAQ1gwLxQQCA38CfiMBQUBqIgQkASAEIwJB+A9qNgIgQQAhACAEQQA2AjQgBCAEQThqNgIkIAQgBEE0ajYCKAJAIAEgAiMAIgNBq/QBaiADQaDXtgFqIARBIGoQ+hpFDQBBABDWDCICRQ0AAkAjsAEoAhwiAQRAA0AgARC8HSEHIAQoAjQhBSAEKQM4IQYjACIDQaiX7QFqIgAoAgBBARC3HxoCQAJ/IAAoAgQiAEUEQCADQeawCGohASADQcSX7QFqDAELAkADQCAAKQMAIAZRDQEjACEDIAAoAgwiAA0ACyADQeawCGohASADQcSX7QFqDAELIwAhAyAAKAIIIgBFBEAgA0G+3QhqIQEgA0HMl+0BagwBCyMAIQMgACgCDA0BIANBvt0IaiEBIANBzJftAWoLKAIAIQAgBCAGNwMAIAAgASAEEK4aGiMAQaiX7QFqKAIAELUfDAMLIwBBqJftAWooAgAQtR8CQAJ/IAUEQCAAKAIQBEAgBCAGNwMQIwAiAEHMl+0BaigCACAAQb7dCGogBEEQahCuGhoMBgsgACgCCEEQagwBCyAAKAIIQRRqCygCACIARQ0AA0AgByAAKQMIUgRAIAAoAgAiAA0BDAILCyAAKAIQRQ0AIAEQwwwiAEUNAyACQQAgABDaDCEDIAAgACgCAEEBayIFNgIAIAVFBEAgABDVEAsgA0EASA0DCyABKAIAIgENAAsLIAIhAAwBCyACIAIoAgBBAWsiAzYCAEEAIQAgAw0AIAIQ1RALIARBQGskASAAC5MGAgV/AX4jAUFAaiIEJAEgBCMCQfgPajYCICAEIARBOGo2AiQgBCAEQTRqNgIoAkAgASACIwAiA0GguAhqIANBrNe2AWogBEEgahD6GkUNACAEKAI0IQEgBCkDOCEIELsdIgBFDQAjACICQaiX7QFqIgMoAgBBARC3HxoCQAJ/IAMoAgQiA0UEQCACQcSX7QFqIQMgAkHmsAhqDAELAkADQCADKQMAIAhRDQEjACECIAMoAgwiAw0ACyACQcSX7QFqIQMgAkHmsAhqDAELIwAhAiADKAIIIgNFBEAgAkHMl+0BaiEDIAJBvt0IagwBCyMAIQIgAygCDA0BIAJBzJftAWohAyACQb7dCGoLIQEgAygCACEDIAQgCDcDACADIAEgBBCuGhojAEGol+0BaigCABC1HwwBCyMAQaiX7QFqKAIAIgJFBEBBABC1HwsgAygCEARAIAQgCDcDECMAIgNBzJftAWooAgAgA0G+3QhqIARBEGoQrhoaIAIQtR8MAQtBGBD6ECIFRQRAIAIQtR8MAQsgASAFEOodBEAgAhC1HyAFEP0QDAELIAAQvB0hCCADKAIAQQEQtx8aAkACQAJAIAMoAgxFBEAjACIBQcyX7QFqKAIAIAFBr90IahC0GgwBCwJAAkACQAJAIAMoAggiBygCECIARQRAQQAhAQwBCwNAIAAiASkDCCAIUQ0CIAEoAgAiAA0ACwtBGBD6ECIARQ0BIABBATYCECAAIAg3AwggAEEANgIAIAEgB0EQaiABGyAANgIAIAcgBykDAEIBfDcDAAwCCyABKAIQDQEjACIBQcyX7QFqKAIAIAFB59wIahC0GgwCCxDOGhoMAQsgAygCBCEBQQgQ+hAiAARAIAAgBTYCACAAQQA2AgQgASABKQMAQgF8NwMAIAEoAggNAiABIAA2AggMAwsQzhoaCyADKAIAELUfIAIQtR8gBRDrHSAFEP0QDAILIAEoAgwgADYCBAsgASAANgIMIAMoAgAQtR8gAhC1HyOyASIGIAYoAgBBAWo2AgALIARBQGskASAGC78HAgN/AX4jAUFAaiIDJAEgAyMCQfgPajYCICADQQA2AjQgAyADQThqNgIkIAMgA0E0ajYCKAJAAkAgASACIwAiAEGiOGogAEG417YBaiADQSBqEPoaRQ0AIAMoAjQiAARAIAAgACgCAEEBajYCAAsgAykDOCEGAkAQux0iAUUNACMAIgJBqJftAWoiACgCAEEBELcfGgJAAn8gACgCBCIARQRAIAJB5rAIaiEBIAJBxJftAWoMAQsCQANAIAApAwAgBlENASMAIQIgACgCDCIADQALIAJB5rAIaiEBIAJBxJftAWoMAQsjACECIAAoAggiBEUEQCACQb7dCGohASACQcyX7QFqDAELIwAhACAEKAIMDQEgAEG+3QhqIQEgAEHMl+0BagsoAgAhACADIAY3AxAgACABIANBEGoQrhoaIwBBqJftAWooAgAQtR8MAQsjAEGol+0BaigCACIFRQRAQQAQtR8LIAEQvB0hBiAEKAIAQQEQtx8aAkAgBCgCDEUEQCMAIgBBzJftAWooAgAgAEGv3QhqELQaQQAhAgwBCwJAAkACQAJAAkACQCAEKAIIIgEoAhQiAkUEQEEAIQAMAQsDQCACIgApAwggBlENAiAAKAIAIgINAAsLQRgQ+hAiAkUNBCACQQE2AhAgAiAGNwMIIAJBADYCACAADQEgASACNgIUDAILIAAoAhANAiMAIgBBzJftAWooAgAgAEHn3AhqELQaQQAhAgwECyAAIAI2AgALIAEgASkDCEIBfDcDCAsgBCgCBCICKAIIIgAEQCACIAAoAgQ2AgggACACKAIMRgRAIAJBADYCDAsgAiACKQMAQgF9NwMAIAAoAgAhAiAAQgA3AgAgABD9ECACDQILQQAhAhC1Gg0BIAQoAhBFDQEgBEEANgIMDAELEM4aGkEAIQILIAQoAgAQtR8CQCAEKAIEKQMAQgBSDQAgBCgCECIARQ0AIAAoAgAhACAEKAIAQQEQtx8aIAQoAhAiAQRAIAEQ/RAgBEEANgIQCyAEKAIAELUfIABBADYCCCAEENkiCyAFELUfIAJFDQAgAhDsHSEAIAIQ6x0gAhD9ECAARQ0AIAMoAjQiAkUNAiACIAIoAgBBAWsiATYCACABDQIgAhDVEAwCCxC1GiECIAMoAjQhACACBEAgAEUNASAAIAAoAgBBAWsiAjYCACACDQEgABDVEAwBCyAADQEgAyADKQM4NwMAIwAiAEHQl+0BaigCACAAQY8FaiADEK4aGgtBACEACyADQUBrJAEgAAvNBgIEfwF+IwFB8ABrIgAkASAAQQA2AmQgAEEANgJgIAAjAkH4D2o2AkAgACAAQdwAajYCUCAAQQA2AlwgACAAQegAajYCRCAAIABB5ABqNgJIIAAgAEHgAGo2AkwCQCABIAIjACIDQZPwBmogA0HQ17YBaiAAQUBrEPoaRQ0AIAAoAlwhBiAAKQNoIQcgACgCYCECIAAoAmQhASMAQaiX7QFqIgMoAgBBARC3HxoCQAJAAkACQCADKAIEIgMEQCABIAJrIQEDQCADKQMAIAdRDQIgAygCDCIDDQALCyAAIAc3AwAjACIDQcSX7QFqKAIAIANB5rAIaiAAEK4aGgwBCyADKAIIIgJFBEAgACAHNwMQIwAiA0HMl+0BaigCACADQb7dCGogAEEQahCuGhoMAQsCQCABQQFHDQAgBg0AIAIoAhBFDQAgACAHNwMwIwAiA0HMl+0BaigCACADQb7dCGogAEEwahCuGhoMAQsgAigCAEEBELcfGiMAIQUCQCACKAIMRQRAIAVB59wIaiEGIAVBzJftAWohBQwBCwJAIAYNACMAIQUgAigCBCkDAEIAVw0AIAVBupsNaiEGIAVB1JftAWohBQwBCyACQQA2AgwgAigCCCIBKAIQIgQEQCABKQMAIQcDQCAEQQA2AhAgB0IBfSEHIAQoAgAiBA0ACyABIAc3AwALIAEoAhQiBARAIAEpAwghBwNAIARBADYCECAHQgF9IQcgBCgCACIEDQALIAEgBzcDCAsgAigCABC1HyADKAIIENkiIANBADYCCAwDCyAFKAIAIAYQtBogAigCABC1HyABQQFHDQAjAEHUl+0BaigCABC4GkUNACADKAIIKAIQBEAgACAHNwMgIwAiA0HMl+0BaigCACADQb7dCGogAEEgahCuGhoMAQsQvRogAygCCCICRQ0CIAIoAgBBARC3HxoCQCACKAIQBEAjACIDQcyX7QFqKAIAIANBr90IahC0GgwBCyACQQQQ+hAiATYCECABDQILIAIoAgAQtR8LIwBBqJftAWooAgAQtR8MAgsgASADNgIAIAIoAgAQtR8LIwBBqJftAWooAgAQtR8jsgEiBCAEKAIAQQFqNgIACyAAQfAAaiQBIAQL8QYCBn8CfiMBQUBqIgQkASAEQQA2AjQgBEEANgIwIAQjAkH4D2o2AhAgBCAEQSxqNgIgIARBADYCLCAEIARBOGo2AhQgBCAEQTRqNgIYIAQgBEEwajYCHAJAIAEgAiMAIgNByvIGaiADQfDXtgFqIARBEGoQ+hpFDQAgBCgCNCIBIAQoAjAiB3JFBEBBASEHIARBATYCMCAEQQE2AjRBASEBCyAEKQM4IQkQux0iAEUNACMAIgJBqJftAWoiAygCAEEBELcfGgJAAn8gAygCBCIDRQRAIAJBxJftAWohAyACQeawCGoMAQsCQANAIAMpAwAgCVENASMAIQIgAygCDCIDDQALIAJBxJftAWohAyACQeawCGoMAQsjACECIAMoAggiA0UEQCACQcyX7QFqIQMgAkG+3QhqDAELIwAhAiADKAIMDQEgAkHMl+0BaiEDIAJBvt0IagshASADKAIAIQMgBCAJNwMAIAMgASAEEK4aGiMAQaiX7QFqKAIAELUfDAELIwBBqJftAWooAgAiCEUEQEEAELUfCyAAELwdIQkgAygCAEEBELcfGgJAAn4CQAJAAkAgAygCDEUEQCMAIgJBzJftAWooAgAgAkHn3AhqELQaDAELQQAhACADKAIIIQUgASAHayIHQQBOBEACfgJAAkAgBSgCECIBRQRAQQAhAgwBCwNAIAEiAikDCCAJUQ0CIAIoAgAiAQ0ACwtBGBD6ECIBRQRAEM4aGgwECyABQQE2AhAgASAJNwMIIAFBADYCACACIAVBEGogAhsgATYCACAFKQMADAELIAUpAwBCAX0LIQogAUEANgIQIAUgCjcDACAHQQBKDQULIAUoAhQiAgRAA0AgAiIAKQMIIAlRDQQgACgCACICDQALC0EYEPoQIgINARDOGhoLIAMoAgAQtR8gCBC1HwwECyACQQE2AhAgAiAJNwMIIAJBADYCACAARQRAIAUgAjYCFCAFKQMIDAILIAAgAjYCACAFKQMIDAELIAUpAwhCAX0LIQkgAkEANgIQIAUgCTcDCAsgAwJ/QQEgAygCCCIGKQMAQgBSDQAaQQEgBikDCEIAUg0AGiAGKAIQRQRAQQEgBigCFEUNARoLQQALNgIMIAMoAgAQtR8gCBC1HyOyASIGIAYoAgBBAWo2AgALIARBQGskASAGC/UBAQF/IwFBMGsiACQBIABBfzYCJCAAQX82AiAgAEEANgIcIAAjAkH4D2o2AgAgACAAQRxqNgIQIAAgAEEYajYCFCAAQQA2AhggACAAQShqNgIEIAAgAEEkajYCCCAAIABBIGo2AgwCQCABIAIjACIBQZbECWogAUGQ2LYBaiAAEPoaRQ0AIAAoAiQiASAAKAIgIgJyRQRAI7cBKAIAIwBBwPEGahC0GgwBCyMAIgNByNC2AWogACkDKCABQQFGBH8gAkEBakECSQVBf0EAIAJBAUYbCyADQaiX7QFqIAAoAhwgACgCGBDdIiEDCyAAQTBqJAEgAwsNACMAQajYtgFqEPAPC0ABAX8CQCAAKAIQIgMoAgAiAARAIAAgAiABEQAAIgANAQsgAygCBCIABEAgACACIAERAAAiAA0BC0EAIQALIAALvwIBAn8CQCAAKAIQIgAoAgAiAUUNACAAQQA2AgAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCBCIBRQ0AIABBADYCBCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIIIgFFDQAgAEEANgIIIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAgwiAUUNACAAQQA2AgwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCECIBRQ0AIABBADYCECABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIUIgFFDQAgAEEANgIUIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhgiAUUNACAAQQA2AhggASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALQQALCAAgABDzIhoLgw0BCH8jAUEwayIFJAECQAJAIAJBBEYNACMAQdaxA2ogAkEEQQQQjBsNAAwBCyABKAIEIgIoAgQtAFdBEHFFBEAjACIBQdaxA2ogAUGBuwtqIAFBtuIDaiACEPkaDAELIAEoAgAhBiACLQAQQYABcUUEQCACEIIUDQEgASgCBCECCyACKAIIQQFHBEAjACIBQdaxA2ogAUGBuwtqIAFBtuIDaiACEPkaDAELAn8CQAJAAkAgAigCECIDQQJ2QQdxQQFrDgIAAQILIANBIHEEQCACQRhBJCADQcAAcRtqLQAADAMLIAIoAiQtAAAMAgsgA0EgcQRAIAJBGEEkIANBwABxG2ovAQAMAgsgAigCJC8BAAwBCyADQSBxBH8gAkEYQSQgA0HAAHEbagUgAigCJAsoAgALIQcgASgCCBChDSIEQX9GBEBBACEDELUaDQELQQAhAyAGKAIEIgIoAlRBAE4EQCAFIAIoAgw2AgAjtQEoAgAjAEGn1wJqIAUQrhoaDAELIAEoAgwhAyMAIQECQCAGIAAoAhAiAigCABC5EgRAIAFBkNm2AWohAgNAIAIsAAAiAUH/AXEEQCACQSBqIQIgASAHRw0BCwsgAUUEQCO3ASgCACMAQaeJCGoQtBpBACEDDAMLIARBFk8EQCO3ASgCACMAQZOzDGoQtBpBACEDDAMLIAMoAgQiAi0AV0EIcUUEQCAFIAIoAgw2AiAjtQEoAgAjAEGh2gJqIAVBIGoQrhoaQQAhAwwDCyAHwCICEPYiIARGBEAgAhCrFCIBRQRAQQAhAwwECwJAQQIQkxIiAkUEQCABIAEoAgBBAWsiAjYCAEEAIQMgAkUNAQwFCyADIAMoAgBBAWo2AgAgAiADNgIQIAIgATYCDCAGIAJBABD3IiEDIAIgAigCAEEBayIANgIAIAIhASAADQQLIAEQ1RAMAwsgAygCCCICIAIjAEGApxxqIARBDGxqIgAoAgAiAW4iCCABbEcEQCO3ASgCACMAQcq3BmoQtBpBACEDDAMLAkACQAJAAkACQAJAAkAgBA4WBAQEBAQEBAQEBAQEBAQAAAEBAgIDAwgLIAJBBG0iCBDWDCIARQRAQQAhAwwJCyACQQRIDQQgA0EQaiEJIARBDkYhBEEAIQIDQCAJIAJBAnQiAWogBBDUCxDCCyIDRQRAIAAgACgCAEEBayICNgIAQQAhAyACRQ0HDAoLIAAoAgwgAWogAzYCACACQQFqIgIgCEcNAAsMBAsgAkEIbSIIENYMIgBFBEBBACEDDAgLIAJBCEgNAyADQRBqIQMgBEEQRiEEQQAhAgNAIAMgAkEDdGogBBDVCxDCCyIBRQRAIAAgACgCAEEBayICNgIAQQAhAyACRQ0GDAkLIAAoAgwgAkECdGogATYCACACQQFqIgIgCEcNAAsMAwsgBUF/QQEgBEESRhs2AiwgA0EQaiACIwBB05ABaiAFQSxqELMUIgANAkEAIQMMBgsgBUF/QQEgBEEURhs2AiwgA0EQaiACIwBB05ABaiAFQSxqELQUIgANAUEAIQMMBQsgACgCBCEEAkACQAJAAkACQCABQQFrDggAAQQCBAQEAwQLQeIAIAcgBEEBRhtBwgAgBBshBwwDC0HoACAHIARBAUYbQcgAIAQbIQcMAgtB7ABB6QAgByAEQQFGIgIbQckAIAQbIAIbQcwAIAQbIQcMAQtB8QAgByAEQQFGG0HRACAEGyEHCyAAKAIIIQIgCBDWDCIARQRAQQAhAwwFCyAIQQBMDQAgA0EQaiEJIAJFIQpBACECA0AgCSABIAJsaiABIAogBBCoDSIDRQRAIAAgACgCAEEBayICNgIAQQAhAyACRQ0DDAYLIAAoAgwgAkECdGogAzYCACACQQFqIgIgCEcNAAsLAn8gBiEDIAAhAkEAIAfAEKsUIgZFDQAaAkACQEECEJMSIgFFBEAgBiAGKAIAQQFrIgE2AgBBACECIAFFDQEMAgsgAiACKAIAQQFqNgIAIAEgAjYCECABIAY2AgwgAyABQQAQ9yIhAiABIAEoAgBBAWsiAzYCACABIQYgAw0BCyAGENUQCyACCyEDIAAgACgCAEEBayICNgIAIAINAwsgABDVEAwCCyACKAIAKAIMIQIgBSAGKAIMNgIQIAUgAjYCFCO1ASgCACMAQeXrAmogBUEQahCuGhpBACEDDAELEMwaGkEAIQMLIAVBMGokASADC5wBAQR/QQwhAUEIIQJBBCEDQQEhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQcIAaw40AAQEBAQEBQcEBAcEBAQECQQEBAQEBAQEBAQEBAQEBAQLBAMEAgQGCAQECAQEBAQKBAQEAQQLQQAPC0EUDwtBDg8LQRAPC0F/DwtBAiEDCyADDwtBBiECCyACDwtBCiEBCyABIQQLIAQLkgwBBn8jAUHQAGsiBCQBIAAjAEGo2LYBahDREigCECEFIARBADYCSAJAAkACQCAAIAUoAgAiA0cEQCACRQ0CIAAoApQBIAMoApQBRg0BDAILIAJFDQELIwBB7B9qIAIQjxsNAEEAIQIMAQsgBCAEQcgAajYCNCAEIARBzABqNgIwIAEjAEHiH2ogBEEwahDxGkUEQEEAIQIMAQsgBCAEKAJMNgIgIAQgBCgCSCIBI7IBIAEbNgIkQQAhAiMAIgFBncMJaiABQfi3CmogBEEgahDqHkEASA0AAkACQAJAAkACQCAEKAJIIgFFDQAgBCgCTCIDQfUARg0AIAEoAgQiBi0AV0EQcQRAIAQgAzYCECO1ASgCACMAQeePDmogBEEQahCuGhoMBgsgBSgCACIDIAZHBEAgBiADELkSIQMgBCgCSCEBIANFDQELIAEoAhQtAABB9QBHDQEgBCAEKAJMNgIAI7UBKAIAIwBBoo8OaiAEEK4aGgwFCyABDQBBACEGDAELQQAhBiABKAIEIgEtAFdBAnENACABI9UBRg0AIAEj1QEQuRINACAEKAJIIgEoAgQiAygCVCIHQYCAgOAAcQ0AIwAhBgJAIAQoAkwiCEH1AEcNACAHQYCAgIABcUUNACAGQdDZtgFqIQNBACEGDAILAkAgBSgCACIGIANHBEAgAyAGELkSRQRAIAQoAkghAQwCCyAEKAJMIQggBCgCSCEBC0EAIQYgCCABKAIULAAARg0BCyABEIcGIgZFBEAMBAsgBEEANgJICyMAQZDZtgFqIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCgCTEHCAGsONAANDQ0NDQMFDQ0HDQ0NDQkNDQ0NDQ0NDQ0NDQ0NDQ0NDA0LDQoNAgQNDQYNDQ0NCA0NDQENCyMAQbDZtgFqIQMMCwsjAEHQ2bYBaiEDDAoLIwBB8Nm2AWohAwwJCyMAQZDatgFqIQMMCAsjAEGw2rYBaiEDDAcLIwBB0Nq2AWohAwwGCyMAQfDatgFqIQMMBQsjAEGQ27YBaiEDDAQLIwBBsNu2AWohAwwDCyMAQdDbtgFqIQMMAgsjAEHw27YBaiEDDAELIwBBkNy2AWohAwsgAAJ/QQAgBCgCSCIHRQ0AGgJAIAcoAgQiCC0AV0EGcQ0AIAggBSgCACIARg0AQQAgCCAAELkSRQ0BGiAEKAJIIQcLIAcoAggLIgEgAxCXIyIDRQ0BAkACQAJAIAFBAEwNACAEKAJIIgAoAgQiCCAFKAIAIgdGDQEgCCAHELkSDQBBACEFA0AgBCgCSCAFELsFIgBFBEAgAyADKAIAQQFrIgA2AgAgAA0GIAMQ1RAMBgsgAyAFIAAQmCMhByAAIAAoAgBBAWsiCDYCACAHBEAgCEUEQCAAENUQCyADIAMoAgBBAWsiADYCACAADQYgAxDVEAwGCyAIRQRAIAAQ1RALIAVBAWoiBSABRw0ACwwCCyAEKAJIIgBFDQEgACgCBCEHCwJAAkAgByPVAUYNACAHI9UBELkSIQcgBCgCSCEAIAcNACAAKAIEIggoAlQiB0GAgIDAAHFFDQELIAMgABCZIyIARQRAIAMgAygCAEEBayIANgIAIAANBCADENUQDAQLIAAgACgCAEEBayIFNgIAIAUNASAAENUQDAELIAdBgICAgAFxBEAgACAEQcQAahCmFCIARQRAIAMgAygCAEEBayIANgIAIAANBCADENUQDAQLIAQoAkRBAEwNASADKAIMEP0QIAMgADYCDCADIAQoAkQiADYCECADIAA2AggMAQtBASEAIAUoAgAiBSAIRwRAIAggBRC5EkEARyEACyABQQBMDQAgAEUNACADKAIMIAQoAkgiACgCDCAAKAIUKAIEIAFsEM4+GgsgBkUEQCADIQIMAgsgAyAGEJojIQAgBiAGKAIAQQFrIgU2AgAgAEF/RgRAIAVFBEAgBhDVEAsgAyADKAIAQQFrIgA2AgAgAA0CIAMQ1RAMAgsgBQRAIAMhAgwCCyAGENUQIAMhAgwBCyO3ASgCACMAQeG7DWoQtBoLIARB0ABqJAEgAgsQACAAKAIMIAFqLAAAEJsNC4sBAQJ/IwFBEGsiAyQBIAMgA0EOajYCAEF/IQQCQCACIwBBvoIEaiADEO8aRQ0AIAMuAQ4iAkH/fkwEQCPAASgCACMAQcimBWoQtBoMAQsgAkGAAU4EQCPAASgCACMAQdikBWoQtBoMAQtBACEEIAFBAEgNACAAKAIMIAFqIAI6AAALIANBEGokASAEC0cBBH8CQCACQQBMDQADQCAAIANqLQAAIgUgASADai0AACIGRgRAIAIgA0EBaiIDRw0BDAILC0F/QQEgBcAgBsBIGyEECyAECxAAIAAoAgwgAWotAAAQmw0LVgEBfyMBQRBrIgMkASADIANBD2o2AgACQCACIwBB24IEaiADEO8aRQRAQX8hAgwBC0EAIQIgAUEASA0AIAAoAgwgAWogAy0ADzoAAAsgA0EQaiQBIAILRQEEfwJAIAJBAEwNAANAIAAgA2otAAAiBSABIANqLQAAIgZGBEAgAiADQQFqIgNHDQEMAgsLQX9BASAFIAZJGyEECyAECxMAIAAoAgwgAUECdGooAgAQqxQLiwEBAn8jAUEQayIDJAEgAyADQQxqNgIAQX8hBAJAIAIjAEGP4gNqIAMQ7xpFDQAgAygCDEEAQQAQpRRBAkcEQCO1ASgCACMAQZHiA2oQtBoMAQsgAygCDCADQQhqQQEQpRQaIAFBAE4EQCAAKAIMIAFBAnRqIAMoAgg2AgALQQAhBAsgA0EQaiQBIAQLSgEEfwJAIAJBAEwNAANAIAAgA0ECdCIEaigCACIGIAEgBGooAgAiBEYEQCACIANBAWoiA0cNAQwCCwtBf0EBIAQgBkobIQULIAULEwAgACgCDCABQQF0ai4BABCbDQtZAQF/IwFBEGsiAyQBIAMgA0EOajYCAAJAIAIjAEG+ggRqIAMQ7xpFBEBBfyECDAELQQAhAiABQQBIDQAgACgCDCABQQF0aiADLwEOOwEACyADQRBqJAEgAgtMAQR/AkAgAkEATA0AA0AgACADQQF0IgRqLwEAIgYgASAEai8BACIERgRAIAIgA0EBaiIDRw0BDAILC0F/QQEgBsEgBMFIGyEFCyAFCxMAIAAoAgwgAUEBdGovAQAQmw0LlQEBAn8jAUEQayIDJAEgAyADQQxqNgIAAkAgAiMAQaGCBGogAxDvGkUEQEF/IQIMAQtBfyECIAMoAgwiBEEASARAI8ABKAIAIwBBz6UFahC0GgwBCyAEQYCABE8EQCPAASgCACMAQdajBWoQtBoMAQtBACECIAFBAEgNACAAKAIMIAFBAXRqIAQ7AQALIANBEGokASACC0oBBH8CQCACQQBMDQADQCAAIANBAXQiBGovAQAiBiABIARqLwEAIgRGBEAgAiADQQFqIgNHDQEMAgsLQX9BASAEIAZLGyEFCyAFCxMAIAAoAgwgAUECdGooAgAQmw0LWQEBfyMBQRBrIgMkASADIANBDGo2AgACQCACIwBBoYIEaiADEO8aRQRAQX8hAgwBC0EAIQIgAUEASA0AIAAoAgwgAUECdGogAygCDDYCAAsgA0EQaiQBIAILEwAgACgCDCABQQJ0aigCABCcDQuUAQEDfwJAIAIoAgQoAlRBgICACHEiBA0AIAIQvAUiAg0AQX8PCwJAAkACQCACEKMNIgVBf0cNABC1GkUNAEF/IQMgBA0CIAIgAigCAEEBayIBNgIAIAFFDQEMAgsgAUEATgRAIAAoAgwgAUECdGogBTYCAAsgBA0BIAIgAigCAEEBayIBNgIAIAENAQsgAhDVEAsgAwtKAQR/AkAgAkEATA0AA0AgACADQQJ0IgRqKAIAIgYgASAEaigCACIERgRAIAIgA0EBaiIDRw0BDAILC0F/QQEgBCAGSxshBQsgBQtZAQF/IwFBEGsiAyQBIAMgA0EMajYCAAJAIAIjAEGEggRqIAMQ7xpFBEBBfyECDAELQQAhAiABQQBIDQAgACgCDCABQQJ0aiADKAIMNgIACyADQRBqJAEgAgsTACAAKAIMIAFBA3RqKQMAEK0NC1kBAX8jAUEQayIDJAEgAyADQQhqNgIAAkAgAiMAQfiCBGogAxDvGkUEQEF/IQIMAQtBACECIAFBAEgNACAAKAIMIAFBA3RqIAMpAwg3AwALIANBEGokASACC0wCA38CfgJAIAJBAEwNAANAIAAgA0EDdCIFaikDACIGIAEgBWopAwAiB1EEQCACIANBAWoiA0cNAQwCCwtBf0EBIAYgB1MbIQQLIAQLEwAgACgCDCABQQN0aikDABCdDQuWAQICfwF+AkAgAigCBCgCVEGAgIAIcSIEDQAgAhC8BSICDQBBfw8LAkACQAJAIAIQsA0iBUJ/Ug0AELUaRQ0AQX8hAyAEDQIgAiACKAIAQQFrIgE2AgAgAUUNAQwCCyABQQBOBEAgACgCDCABQQN0aiAFNwMACyAEDQEgAiACKAIAQQFrIgE2AgAgAQ0BCyACENUQCyADC0wCA38CfgJAIAJBAEwNAANAIAAgA0EDdCIFaikDACIGIAEgBWopAwAiB1EEQCACIANBAWoiA0cNAQwCCwtBf0EBIAYgB1QbIQQLIAQLFAAgACgCDCABQQJ0aioCALsQwgsLWQEBfyMBQRBrIgMkASADIANBDGo2AgACQCACIwBBqrMBaiADEO8aRQRAQX8hAgwBC0EAIQIgAUEASA0AIAAoAgwgAUECdGogAyoCDDgCAAsgA0EQaiQBIAILEwAgACgCDCABQQN0aisDABDCCwtZAQF/IwFBEGsiAyQBIAMgA0EIajYCAAJAIAIjAEHFswFqIAMQ7xpFBEBBfyECDAELQQAhAiABQQBIDQAgACgCDCABQQN0aiADKwMIOQMACyADQRBqJAEgAgvGAQEBfyABQQBIBEAjAEHdqglqQdAEENUaQQAPCwJAAn8CQEH/////ByACKAIEIgNtIAFIDQBBACAAQQAgACgCmAERAAAiAEUNARogAEEANgIYIAAgATYCECAAIAI2AhQgACABNgIIIAFFBEAgAEEANgIMDAMLAkAgASADbCIBQQBIBEAgAEEANgIMDAELIAAgARD6ECIBNgIMIAENAwsgACAAKAIAQQFrIgE2AgAgAQ0AIAAQ1RALEM4aCw8LIABBADYCHCAAC+EBAQN/AkAgAUEATgRAIAAoAggiAyABSg0BCyPOASgCACMAQbvfB2oQtBpBfw8LAn8gAkUEQAJAIAFBAWoiAiADIAEgASADShsiAUgNACAAKAIMIQQCQCACIAMgAiADSBsiAiABRg0AIAAoAhxBAEwNACPfASgCACMAQa79AWoQtBpBfw8LIAIgAWsiBUEATA0AIAQgASAAKAIUKAIEIgFsaiAEIAEgAmxqIAEgAyACa2wQzz4aQX8gACAAKAIIIAVrEJsjQX9GDQIaC0EADwsgACABIAIgACgCFCgCDBECAAsL2gIBBX8jAUEwayICJAEgAkEANgIoIAJCADcDICACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwACQCABIAJBABDHBQ0AIAJBwwAQyAVFBEAjACIAQZafAmogAEGY8ABqIABB8ogEaiABEPkaDAELIAIoAgxBAUcEQCACEMQFI7UBKAIAIwBBh+EIahC0GgwBCyACKAIIIgMgAyAAKAIUKAIEIgFtIgMgAWwiBkcEQCACEMQFI7cBKAIAIwBBobcGahC0GgwBCyADQQBKBEACQCAAKAIIIgVB/////wdzIANOBEAgAyAFaiIDQf////8HIAFtTA0BCyACEMQFEM4aIQQMAgsgACADEJsjQX9GBEAgAhDEBQwCCyAAKAIMIAEgBWxqIAIoAgAgBhDOPhoLIAIQxAUjsgEiBCAEKAIAQQFqNgIACyACKAIEBEAgAhDEBQsgAkEwaiQBIAQLwQIBBX8gARCHBiIDRQRAQX8PCwJAIAMQiAYiAgRAA0AgACgCCCEBAkACQCAAQX8gAiAAKAIUKAIMEQIAQQBIDQAgACABQQFqEJsjQX9GDQAgAUEBdCIEQQAgBEEAShsgASABQQBIGyIFIAEgASAFShshBCABIAVKBEAgACgCDCIGIAAoAhQoAgQiBSAEQQFqbGogBiAEIAVsaiAFIAEgBGtsEM8+GgsgACAEIAIgACgCFCgCDBECAEUNAQtBfyEBIAIgAigCAEEBayIANgIAIABFBEAgAhDVEAsgAyADKAIAQQFrIgA2AgAgAA0DIAMQ1RBBfw8LIAIgAigCAEEBayIBNgIAIAFFBEAgAhDVEAsgAxCIBiICDQALCyADIAMoAgBBAWsiATYCACABRQRAIAMQ1RALQX9BABC1GhshAQsgAQviAQECfwJAIAAoAhxBAEwNACAAKAIIIAFGDQAj3wEoAgAjAEGu/QFqELQaQX8PCwJAIAAoAhAgAUgNACAAKAIIIAFBEGpODQAgACgCDEUNACAAIAE2AghBAA8LIAFFBEAgACgCDBD9ECAAQQA2AhAgAEIANwIIQQAPCwJAAkAgACgCFCgCBCICrSABQQR1IAFqQQdBAyAAKAIIQQdKG2oiA61+QiCIpw0AIAIgA2wiAkEASA0AIAAoAgwgAhD8ECICDQELEM4aGkF/DwsgACADNgIQIAAgATYCCCAAIAI2AgxBAAuSBQEFfyMBQSBrIgUkASAAKAIQIQFBfyEDAkAjAEGpiglqELYVIgJFDQAgASACNgIIIwBBouQGahC2FSICRQ0AIAEgAjYCDCMAQdaxA2oQthUiAkUNACABIAI2AhAjAEH9yAlqELYVIgJFDQAgASACNgIUIwBBoNsDahC2FSICRQ0AIAEgAjYCGCABIAAjAEHQ3LYBakEAEMMSIgI2AgAgAkUNACABIAAjAEHk3LYBakEAEMMSIgI2AgQgAkUNACACI8QBNgIEIAEoAgAiAiACKAIAQQFqNgIAIAAjAEHmhwdqIAIQ2RxBAEgEQCABKAIAIgEgASgCAEEBayIANgIAIAANASABENUQDAELIwBB1aQJahDHGyIDRQRAQX8hAyABKAIAIgEgASgCAEEBayIANgIAIAANASABENUQDAELIAMjAEHAkghqELQQIQIgAyADKAIAQQFrIgQ2AgAgBEUEQCADENUQCyABKAIAIQQgAkUEQEF/IQMgBCAEKAIAQQFrIgE2AgAgAQ0BIAQQ1RAMAQsgBSAENgIAIAIjACIDQcnWA2ogA0HiuApqIAUQnwghBCACIAIoAgBBAWsiAzYCACADRQRAIAIQ1RALIARFBEBBfyEDIAEoAgAiASABKAIAQQFrIgA2AgAgAA0BIAEQ1RAMAQtBfyEDIAQgBCgCAEEBayICNgIAIAJFBEAgBBDVEAsgACABKAIAENwcQQBIDQAgBUHkADoAHiAFQczixbIGNgAaIAVC4oTVw4ap2qTsADcAEkEAIQMgACMAQa2/AmogBUESakENQQAQsRQiARDZHEEATg0AQX8hAyABRQ0AIAEgASgCAEEBayIANgIAIAANACABENUQCyAFQSBqJAEgAwtRAQJ/IAAoAgQhASAAEL8gIAAoAhgEQCAAEMUWCyAAKAIMIgIEQCACEP0QCyAAIAEoAqABEQMAIAEgASgCAEEBayIANgIAIABFBEAgARDVEAsLrgIBBX8jAUEgayICJAEgACgCFCwAACEEAkAgACgCCCIBRQRAIAAoAgQQtRIhACACIAQ2AgQgAiAANgIAIwBBqtsNaiACEKQUIQAMAQsCQAJAAkAgBEH1AEcEQCABENYMIgNFDQEgACgCCEEATA0CQQAhAQNAIAAgASAAKAIUKAIIEQAAIgUEQCADKAIMIAFBAnRqIAU2AgAgAUEBaiIBIAAoAghIDQEMBAsLIAMgAygCAEEBayIBNgIAQQAhACABRQ0DDAQLIAAoAgwgARCJFCIDDQELQQAhAAwCCyAAKAIEELUSIQAgAiADNgIYIAIgBDYCFCACIAA2AhAjAEHSwg1qIAJBEGoQpBQhACADIAMoAgBBAWsiATYCACABDQELIAMQ1RALIAJBIGokASAAC7kGAQV/IAAoAgQjAEGo2LYBahDREiEDAkACQCAAKAIEIgQgAygCECIFKAIAIgNHBEAgBCADELkSRQ0BIAUoAgAhAwsgASgCBCIEIANGDQEgBCADELkSDQELI7oBIgAgACgCAEEBajYCACAADwsgASgCCCEEIAAoAgghAwJAIAJBfnFBAkcNACADIARGDQAjvAEjuwEgAkECRhsiACAAKAIAQQFqNgIAIAAPCwJAAkACQCAAKAIUIgUgASgCFEcNACAFKAIQIgVFDQAgACgCDCABKAIMIAMgBCADIARIGyAFEQIAIgNFBEAgACgCCCEDDAILI7wBIQACQAJAAkACQAJAAkAgAg4GAwAFBAECCAsjvAEhACADQQBMDQMMBAsjvAEhACADQQBKDQIMAwsjvAEhACADQQBODQEMAgsjvAEhACADQQBODQELI7sBIQALIAAgACgCAEEBajYCACAADwsgA0EATA0AQQAhBSABKAIIQQBMDQACQANAIAAgBSAAKAIUKAIIEQAAIgNBACABIAUgASgCFCgCCBEAACIEG0UEQAJAIANFDQAgAyADKAIAQQFrIgA2AgAgAA0AIAMQ1RALIARFDQQgBCAEKAIAQQFrIgA2AgAgAEUNAgwECyADIARBAhCwECIHBEAgAyADKAIAQQFrIgY2AgAgBkUEQCADENUQCyAEIAQoAgBBAWsiAzYCACADRQRAIAQQ1RALQQAhBiAHQQBIDQQgBUEBaiIFIAAoAggiA04NAyAFIAEoAghODQMMAQsLAkACQAJAAkAgAkECaw4CAAECCyO8ASIGIAYoAgBBAWo2AgAMAgsjuwEiBiAGKAIAQQFqNgIADAELIAMgBCACEK0QIQYLIAMgAygCAEEBayIANgIAIABFBEAgAxDVEAsgBCAEKAIAQQFrIgA2AgAgAA0CCyAEENUQDAELIAEoAgghASO8ASEAAkACQAJAAkACQAJAIAIOBgMABAUBAgYLI7wBIQAgASADTg0DDAQLI7wBIQAgASADSA0CDAMLI7wBIQAgASADTA0BDAILI7wBIQAgASADTA0BCyO7ASEACyAAIAAoAgBBAWo2AgAgAA8LIAYLiAEBA38gACgCBCMAQajYtgFqENESIQECQCAAKAIEIgIgASgCECIBKAIAIgNGDQAgAiADELkSDQAjAEHdqglqQcEWENUaQQAPCyABKAIEEMIgIgFFBEBBAA8LIAAgACgCAEEBajYCACABQQA2AgggASAANgIMIAEgACgCFCgCCDYCECABEL4gIAELoQIBBX8jAUEQayIEJAEgACgCBCMAQajYtgFqENESIQICQAJAIAEoAgQiAyACKAIQIgUoAgAiAkYNACADIAIQuRINACAEIAEoAgQoAgw2AgAjtQEoAgAjAEGNIGogBBCuGhpBACECDAELIAAoAhQiAiABKAIURwRAEMwaGkEAIQIMAQsgACgCCCIDIAEo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ASIAIAAoAgBBAWo2AgALIARBEGokASAAC+8BAQF/IwFBIGsiBCQBAkACQAJAIAFFDQAgAkECRw0AIANFDQELQQAhACABIAJBACADIwBBwPG2AWpBAkECQQAgBEEYahCKGyIBRQ0BCyABKAIEIQAgASgCACIBELMQIgJBf0YEQEEAIQAMAQsgACMAQeCX7QFqKAIAIAEgAhCQDiIDRwRAIAQgADYCAEEAIQAgBEEANgIIIAQgAyOyASADGzYCBCO+ASgCACMAQfvHDGogBBCuGhoMAQtBACEAIwBB4JftAWooAgAgASACEJsOQQBIDQAjsgEiACAAKAIAQQFqNgIACyAEQSBqJAEgAAtGAAJAIAAoAgQjAEHo6bYBakYEQCAAEKMQQQBIDQELIAAQvyAgACgCPARAIAAQxRYLIAAQ6SMaIAAgACgCBCgCoAERAwALC+oDAQJ/AkAgACgCCCIBRQ0AIABBADYCCCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIMIgFFDQAgAEEANgIMIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhAiAUUNACAAQQA2AhAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCFCIBRQ0AIABBADYCFCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIgIgFFDQAgAEEANgIgIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhgiAUUNACAAQQA2AhggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCHCIBRQ0AIABBADYCHCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIkIgFFDQAgAEEANgIkIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAigiAUUNACAAQQA2AiggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCQCIBRQ0AIABBADYCQCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAI4IgFFDQAgAEEANgI4IAEgASgCAEEBayIANgIAIAANACABENUQC0EACy4AIAAoAghFBEAjvgEoAgAjAEHgugxqELQaQQAPCyMAQfiX7QFqKAIAIAAQlAgLigIBAX8CQCAAKAIIIgMEQCADIAIgAREA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IAINACABENUQCwJAIAAoAhwiAUUNACAAQQA2AhwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCICIBRQ0AIABBADYCICABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIkIgFFDQAgAEEANgIkIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAigiAUUNACAAQQA2AiggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCLCIBRQ0AIABBADYCLCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIwIgFFDQAgAEEANgIwIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAjQiAUUNACAAQQA2AjQgASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALC9QCAQF/AkAgACgCECIDKAIAIgAEQCAAIAIgAREAACIADQELIAMoAgQiAARAIAAgAiABEQAAIgANAQsgAygCCCIABEAgACACIAERAAAiAA0BCyADKAIMIgAEQCAAIAIgAREAACIADQELIAMoAhAiAARAIAAgAiABEQAAIgANAQsgAygCFCIABEAgACACIAERAAAiAA0BCyADKAIYIgAEQCAAIAIgAREAACIADQELIAMoAhwiAARAIAAgAiABEQAAIgANAQsgAygCICIABEAgACACIAERAAAiAA0BCyADKAIkIgAEQCAAIAIgAREAACIADQELIAMoAigiAARAIAAgAiABEQAAIgANAQsgAygCLCIABEAgACACIAERAAAiAA0BCyADKAIwIgAEQCAAIAIgAREAACIADQELIAMoAjQiAARAIAAgAiABEQAAIgANAQtBACEACyAACwwAIAAoAhAQhSVBAAsKACAAKAIQEIUlC+IEAQZ/IwFBMGsiBSQBIAMEfyADKAIIBUEACyEGAkACQAJAIAMNACABRQ0AIAJBfnFBAkYNAQsgASACQQAgAyMAQdiftwFqQQJBA0EAIAVBEGoQihsiAUUNAQtBBCEDIAEoAgQhCCABKAIAIQkCQAJAAkACQCACIAZqIgRBAmsiBgRAI7IBIQAgASgCCCIDBEAjsgEhAiAEQQNrIgZFDQIgAyEACwJAIAEoAgwiA0UEQEEBIQcMAQtBACEEIAMQsRAiB0EASA0GI7IBIQIgBkEBRg0DCyAB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AiACKAIAQQFrIgc2AgAgBw0AIAIQ1RALIAFBAWsiAUEATg0ACyADQQA2AggLIABBCGohBwJAAkADQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAlQgACgCWCIBa0EASgRAIAYgACgCTCABaiICNgLcASAAIAFBAWo2AlgMAQsgACAGQdwBakEBEKAlQQBIDQEgBigC3AEhAgsgAiwAAEGAAWoO/gE9Jj9AQRkaG0JDBwgVFw0hIiMnKTU+Dg8QREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQxGERERERYRDY3LURERERERERERERERERERAwLREQJCkQFAgMGBAFEOjs8ExIRFEQWRERERB1EREQqLCggK0QwLiUvRB5ERCQ0MjM4HDlEREREREREH0QLIwBBtJa3AWoQyh0oAhAoAggQuBpFBEBBACEBDFkLQQAhASO4AigCACMAQbbAAGpBABCuGhoMWAsjsgEiASABKAIAQQFqNgIAIAcoAgAiASgCDCEDIAEoAggiAiABKAIYRgRAIAJBA3ZBBmoiBCACQf////8Hc0sNRCACIARqIgJB/////wFLDUQgAyACQQJ0EPwQIgNFDUQgASACNgIYIAEgAzYCDCABKAIIIQILIAMgAkECdGojsgE2AgAgASACQQFqNgIIDFULIAACfyAAKAJUIAAoAlgiAWtBBE4EQCAAIAFBBGo2AlggACgCTCABagwBCyAAIAZB7AFqQQQQoCVBAEgNViAGKALsAQtBBBChJUEATg1UDFULIAACfyAAKAJUIAAoAlgiAWtBAEoEQCAAIAFBAWo2AlggACgCTCABagwB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DEELIABBCBCnJUEATg0/DEALIABBABCoJUEATg0+DD8LIABBARCoJUEATg09DD4LIABBAhCoJUEATg08DD0LIABBAxCoJUEATg07DDwLQQAhBCAAKAKAASIFQQBMBEAjACIBQbSWtwFqEModKAIQKAIIIAFB4MwKahC0Ggw8CyAAIAVBAWsiATYCgAEgACgCfCIIIAFBAnRqKAIAIQIgACgCCCIDIAFBAEc2AhAgAyABBH8gBUECdCAIakEIaygCAAUgBAs2AhQgAkEASA07IAAgAygCCCACaxCoJUEATg06DDsLQQAQ1gwiBEUNOiAHKAIAIgEoAgwhAyABKAIIIgIgASgCGEYEQCACQQN2QQZqIgUgAkH/////B3NLDSogAiAFaiICQf////8BSw0qIAMgAkECdBD8ECIDRQ0qIAEgAjYCGCABIAM2AgwgASgCCCECCyADIAJBAnRqIAQ2AgAgASACQQFqNgIIDDkLQQAhAiAAKAKAASIEQQBMBEAjACIBQbSWtwFqEModKAIQKAIIIAFB4MwKahC0Ggw6CyAAIARBAWsiATYCgAEgACgCfCIFIAFBAnRqKAIAIQogACgCCCIDIAFBAEc2AhAgAyABBH8gBEECdCAFakEIaygCAAUgAgs2AhQgCkEASA05IAMoAggiCCAKayIFENYMIgRFDTkCQCAFQQBMDQAgBUEBcSELQQAhASAKIgJBAWogCEcEQCAFQX5xIQ1BACEFA0AgAUECdCIIIAQoAgxqIAJBAnQiCSADKAIMaigCADYCACAEKAIMIAhBBHJqIAkgAygCDGooAgQ2AgAgAUECaiEBIAJBAmohAiAFQQJqIgUgDUcNAAsLIAtFDQAgBCgCDCABQQJ0aiADKAIMIAJBAnRqKAIANgIACyADIAo2AgggBygCACIBKAIMIQMgASgCCCICIAEoAhhGBEAgAkEDdkEGaiIFIAJB/////wdzSw0qIAIgBWoiAkH/////AUsNKiADIAJBAnQQ/BAiA0UNKiABIAI2AhggASADNgIMIAEoAgghAgsgAyACQQJ0aiAENgIAIAEgAkEBajYCCAw4CxD/DSIERQ04IAcoAgAiASgCDCEDIAEoAggiAiABKAIYRgRAIAJBA3ZBBmoiBSACQf////8Hc0sNKiACIAVqIgJB/////wFLDSogAyACQQJ0EPwQIgNF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RgRAIAJBA3ZBBmoiBSACQf////8Hc0sNKCACIAVqIgJB/////wFLDSggAyACQQJ0EPwQIgNFDSggASACNgIYIAEgAzYCDCABKAIIIQILIAMgAkECdGogBDYCACABIAJBAWo2AggMMwtBACEEIAAoAoABIgVBAEwEQCMAIgFBtJa3AWoQyh0oAhAoAgggAUHgzApqELQaDDQLIAAgBUEBayIBNgKAASAAKAJ8IgggAUECdGooAgAhAiAAKAIIIgMgAUEARzYCECABBEAgBUECdCAIakEIaygCACEECyADIAQ2AhQgAkEASA0zIAMoAggiASACayIFQQBMBEAjACIBQbSWtwFqEModKAIQKAIIIAFB17UIQfcrIAMoAhAbahC0Ggw0CyACQQFqIgwgBEgEQCMAIgFBtJa3AWoQyh0oAhAoAgggAUHXtQhB9ysgAygCEBtqELQaDDQLIAEgDGsiBBCTEiIJRQ0zAkAgBEEATA0AIARBA3EhC0EAIQ1BACEBIAwhAiAFQQJrQQNPBEAgBEF8cSEOQQAhCgNAIAlBDGoiBCABQQJ0IgVqIAJBAnQiCCADKAIMaigCADYCACAEIAVBBHJqIAggAygCDGooAgQ2AgAgBCAFQQhyaiAIIAMoAgxqKAIINgIAIAQgBUEMcmogCCADKAIMaigCDDYCACABQQRqIQEgAkEEaiECIApBBGoiCiAORw0ACwsgC0UNAANAIAkgAUECdGogAygCDCACQQJ0aigCADYCDCABQQFqIQEgAkEBaiECIA1BAWoiDSALRw0ACwsgAyAMNgIIAkAgBygCACIBKAIIIgIgASgCFEwEQCMAIgJBtJa3AWoQyh0oAhAoAgggAkHXtQhB9ysgASgCEBtqELQaQQAhBAwBCyABIAJBAWsiAjYCCCABKAIMIAJBAnRqKAIAIgFFBEBBACEEDAELIAEgCRCpJSEEIAEgASgCAEEBayICNgIAIAINACABENUQCyAJIAkoAgBBAWsiATYCACABRQRAIAkQ1RALIARFDTMgBygCACIBKAIMIQMgASgCCCICIAEoAhhGBEAgAkEDdkEGaiIFIAJB/////wdzSw0oIAIgBWoiAkH/////AUsNKCADIAJBAnQQ/BAiA0UNKCABIAI2AhggASADNgIMIAEoAgghAgsgAyACQQJ0aiAENgIAIAEgAkEBajYCCAwyC0EAIQIgACgCgAEiA0EATARAIwAiAUG0lrcBahDKHSgCECgCCCABQeDMCmoQtBoMMwsgACADQQFrIgE2AoABIAAoAnwiBSABQQJ0aigCACEOIAAoAggiBCABQQBHNgIQIAQgAQR/IANBAnQgBWpBCGsoAgAFIAILNgIUIA5BAEgNMiAAIAZB7AFqEKIlIgFBAEgNMiABQQFNBEAjACIBQbSWtwFqEModKAIQKAIIIAFBmtsIahC0GgwzCyAGKALsASABQQFrIwBB05ABahCxFCIBRQ0yQQAhCwJAIAAgBkHsAWoQoiUiAkEASA0AIAJBAU0EQCABIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIwAiAUG0lrcBahDKHSgCECgCCCABQZrbCGoQtBoMNAsgBigC7AEgAkEBayMAQdOQAWoQsRQiAkUNACAGQQA2AkggBiACNgJEIAYgATYCQCAAI7ABQZCWAWogBkFAaxCiCCELIAIgAigCAEEBayIDNgIAIAMNACACENUQCyABIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIAtFDTICQCAOIAcoAgAiAygCFEgEQCMAIgFBtJa3AWoQyh0oAhAoAgggAUHXtQhB9ysgAygCEBtqELQaQQAhBAwBCyADKAIIIgUgDmsiBBCTEiIJRQRAQQAhBAwBCwJAIARBAEwNACAEQQNxIQxBACENQQAhASAFIA4iAkF/c2pBA08EQCAEQXxxIQ9BACEKA0AgCUEMaiIEIAFBAnQiBWogAkECdCIIIAMoAgxqKAIANgIAIAQgBUEEcmogCCADKAIMaigCBDYCACAEIAVBCHJqIAggAygCDGooAgg2AgAgBCAFQQxyaiAIIAMoAgxqKAIMNgIAIAFBBGohASACQQRqIQIgCkEEaiIKIA9HDQALCyAMRQ0AA0AgCSABQQJ0aiADKAIMIAJBAnRqKAIANgIMIAFBAWohASACQQFqIQIgDUEBaiINIAxHDQALCyADIA42AgggCyAJEKklIQQgCSAJKAIAQQFrIgE2AgAgAQ0AIAkQ1RALIAsgCygCAEEBayIBNgIAIAFFBEAgCxDVEAsgBEUNMiAHKAIAIgEoAgwhAwJAIAEoAggiAiABKAIYRgRAIAJBA3ZBBmoiBSACQf////8Hc0sNASACIAVqIgJB/////wFLDQEgAyACQQJ0EPwQIgNFDQEgASACNgIYIAEgAzYCDCABKAIIIQILIAMgAkECdGogBDYCACABIAJBAWo2AggMMgsQzhoaDDILIABBABCqJUEATg0wDDELIABBARCqJUEATg0vDDALIAAgBkHsAWoQoiUiAUEASA0vIAFBAU0EQCMAIgFBtJa3AWoQyh0oAhAoAgggAUGa2whqELQaDDALIAYoAuwBIAFBAWsjAEHTkAFqEOQUIgFFDS9BACEDAkAgACAGQewBahCiJSICQQBIDQAgAkEBTQRAIAEgASgCAEEBayICNgIAIAJFBEAgARDVEAsjACIBQbSWtwFqEModKAIQKAIIIAFBmtsIahC0GgwxCyAGKALsASACQQFrIwBB05ABahDkFCICRQ0AIAZBADYCWCAGIAI2AlQgBiABNgJQIAAjsAFBkJYBaiAGQdAAahCiCCEDIAIgAigCAEEBayIENgIAIAQNACACENUQCyABIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIANFDS8gBygCACIBKAIMIQQCQCABKAIIIgIgASgCGEYEQCACQQN2QQZqIgUgAkH/////B3NLDQEgAiAFaiICQf////8BSw0BIAQgAkECdBD8ECIERQ0BIAEgAjYCGCABIAQ2AgwgASgCCCECCyAEIAJBAnRqIAM2AgAgASACQQFqNgIIDC8LEM4aGgwvCwJ/IAcoAgAiASgCCCICIAEoAhQiBEwEQCMAIgJBtJa3AWoQyh0oAhAoAgggAkHXtQhB9ysgASgCEBtqELQaIAcoAgAiASgCFCEEIAEoAgghA0EADAELIAEgAkEBayIDNgIIIAEoAgwgA0ECdGooAgALIQICQAJAIAMgBEwEQCMAIgNBtJa3AWoQyh0oAhAoAgggA0HXtQhB9ysgASgCEBtqELQaQQAhAUEBIQMMAQsgASADQQFrIgM2AgggASgCDCADQQJ0aigCACIBRSEDIAFFBEBBACEBDAELI7EBIAEoAgRHDQAgAkUNACOxASACKAIERg0BCyMAIgRBtJa3AWoQyh0oAhAoAgggBEHipQNqELQaAkAgAkUNACACIAIoAgBBAWsiBDYCACAEDQAgAhDVEAsgAw0vIAEgASgCAEEBayICNgIAIAINLyABENUQDC8LIAZBADYCaCAGIAI2AmQgBiABNgJgIAAjsAFBkJYBaiAG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AggiAkEBayIBQQBOBEADQAJAIAMoAgwgAUEDdGooAgAiAkUNACACIAIoAgBBAWsiBDYCACAEDQAgAhDVEAsgAUEBayIBQQBODQALIAMoAgghAgsgA0EANgIEIAMoAgxBACACQQN0ENA+GiADKAIMEP0QIAMQ/RALIAAgACgCBCgCoAERAwALlwEBAX8CQCAAKAIcIgMEQCADIAIgAREAACIDDQELIAAoAgwiAwRAIAMgAiABEQAAIgMNAQsgACgCFCIDBEAgAyACIAERAAAiAw0BCyAAKAJMIgMEQCADIAIgAREAACIDDQELIAAoAhgiAwRAIAMgAiABEQAAIgMNAQsgACgCUCIABEAgACACIAERAAAiAw0BC0EAIQMLIAMLxQMBA38CQCAAKAIgIgFFDQAgAEEANgIgIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhwiAUUNACAAQQA2AhwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCDCIBRQ0AIABBADYCDCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIUIgFFDQAgAEEANgIUIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAkwiAUUNACAAQQA2AkwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCGCIBRQ0AIABBADYCGCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAJQIgFFDQAgAEEANgJQIAEgASgCAEEBayICNgIAIAINACABENUQCyAAKAIIIgIEQCAAQQA2AgggAigCCCIBQQFrIgBBAE4EQANAAkAgAigCDCAAQQN0aigCACIBRQ0AIAEgASgCAEEBayIDNgIAIAMNACABENUQCyAAQQFrIgBBAE4NAAsgAigCCCEBCyACQQA2AgQgAigCDEEAIAFBA3QQ0D4aIAIoAgwQ/RAgAhD9EAtBAAuHBgEHfyMBQSBrIgQkASABKAIIIQMCQAJAAkAgAgRAIAFBDGohASACKAIIIANqIgdBAWshBQwBCyABQQxqIQEgAyEHIANBAWsiBUEETw0ADAELIAEgAyACQQAjAEGkpLcBakEBQQRBACAEQRBqEIobIgENAEF/IQIMAQsgASgCACEJQQEhAyOyASECAkAgBUUEQCACIQYMAQsjsgEh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IgI2AgAgAg0AIAEQ1RALAkAgACgCYCIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAmwiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIIIgFFDQAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCGCIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAnAiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgACgCIARAIABBIGoiARDEBSABQQA2AgALIAAoAgwiAwRAIABBADYCDCAAKAIQQQFrIgFBAE4EQANAAkAgAyABQQJ0aigCACICRQ0AIAIgAigCAEEBayIENgIAIAQNACACENUQCyABQQFrIgFBAE4NAAsLIAMQ/RALIAAoAnwQ/RAgACgCUBD9ECAAKAJ0EP0QIAAoAngQ/RAgACAAKAIEKAKgAREDAAuuAQEBfwJAIAAoAmgiAwRAIAMgAiABEQAAIgMNAQsgACgCZCIDBEAgAyACIAERAAAiAw0BCyAAKAJgIgMEQCADIAIgAREAACIDDQELIAAoAmwiAwRAIAMgAiABEQAAIgMNAQsgACgCCCIDBEAgAyACIAERAAAiAw0BCyAAKAIYIgMEQCADIAIgAREAACIDDQELIAAoAnAiAARAIAAgAiABEQAAIgMNAQtBACEDCyADC+8DAQR/AkAgACgCaCIBRQ0AIABBADYCaCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAJkIgFFDQAgAEEANgJkIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAmAiAUUNACAAQQA2AmAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCbCIBRQ0AIABBADYCbCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIIIgFFDQAgAEEANgIIIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhgiAUUNACAAQQA2AhggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCcCIBRQ0AIABBADYCcCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgACgCIARAIABBIGoiARDEBSABQQA2AgALIAAoAgwiAwRAIABBADYCDCAA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IAAQ1RALAkAjAEGQme0BaigCCCIARQ0AIAAgACgCAEEBayIBNgIAIAENACAAENUQCwJAIwBBqJntAWooAgAiAEUNACAAKAIAIgFBAk4EQCAAIAFBAWs2AgAMAQsjAEGome0BakEANgIAIAAgAUEBayIBNgIAIAENACAAENUQCwJAIwBBoJntAWooAgAiAEUNACAAKAIAIgFBAk4EQCAAIAFBAWs2AgAMAQsjAEGgme0BakEANgIAIAAgAUEBayIBNgIAIAENACAAENUQCyMAQaSZ7QFqKAIAIgEEQANAIAEiACgCACEBAkAgACgCCCICRQ0AIAIgAigCAEEBayIDNgIAIAMNACACENUQCwJAIAAoAgwiAkUNACACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgABD9ECABDQALCyMAQaSZ7QFqQQA2AgALqQQBA38jACIBQYCZ7QFqIAFBodEKakEAELAIIgE2AgACQAJAAkAgAUUNACMAQaC9twFqIgIgASgCEDYCgAEgAhDIEkEASA0AIAAjACIBQby6BGogAUGgvbcBahDYHEEASA0AIwBBq+gFahDHGyIBRQ0AIwAiAEGEme0BaiABIABBpr4HahC0ECIANgIAIAEgASgCAEEBayICNgIAIAIEfyAABSABENUQIwBBhJntAWooAgALRQ0AIwBB2rcEahDHGyIBRQ0AIwAiAEGIme0BaiABIABBhp8FahC0ECIANgIAIAEgASgCAEEBayICNgIAIAIEfyAABSABENUQIwBBiJntAWooAgALRQ0AIwAiAUGMme0BaiABQbTEBGoQxxsiATYCACABRQ0AIwBBkJntAWooAgBFBEAjAEGQme0BaiIAI7IBIgE2AgggACABNgIEIAAgATYCACABIAEoAgBBA2o2AgALAkAjAEGome0BaigCACIBBEAgASABKAIAQQFqNgIADAELIwBBqJntAWoQ/w0iATYCACABRQ0BCyMAQaCZ7QFqKAIAIgENAiMAQb6oBmoQxxsiAEUEQCMAQaCZ7QFqQQA2AgAMAQtBACEBIAAjACICQdYSaiACQeniDmpBABCcCCECIAAgACgCAEEBayIDNgIAIANFBEAgABDVEAsjAEGgme0BaiACNgIAIAINAQtBfyEBCyABDwsgASABKAIAQQFqNgIAQQAL3QQBBH8gACgCEARAIAAQ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tRoNAQsgASgCCBChDSIBQX9GBEAQtRoNAQsjACEFAkAgAkEFa0F8SQR/IAVBzrELagUjACEFIAMoAggiByACb0UNASAFQdW3AmoLIQIgABCBECgCACACELQaDAELQQAgBxCtByIIRQ0AIwBBgJcfaiACQQJ0aigCACEAIAgQvwchBSADKAIIQQBKBEAgAkEBayEHA0ACQAJAAkACQAJAIAcOAwIAAQMLIAQgBWogASADKAIAIARqLwEAaiAAcTsBAAwDCyAEIAVqIgkgAygCACAEaiIGLwAAIAFqIAYtAAJBEHRBgID8B3FqIABxIgY6AAAgCSAGQRB2OgACIAkgBkEIdjoAAQwCCyAEIAVqIAEgAygCACAEai0AAGogAHE6AAAMAQsgBCAFaiADKAIAIARqKAIAIAFqIABxNgIACyACIARqIgQgAygCCEgNAAsLIAghBAsgAygCBARAIAMQxAULIANBMGokASAEC+ADAQZ/IwFBMGsiAyQBIANBADYCKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAAkAgAkECRwRAIwBB85IFaiACQQJBAhCMG0UNAQsgASgCACADQQAQxwUNACADQcMAEMgFRQRAIwAiAkHzkgVqIAJBjb8LaiACQfKIBGogASgCABD5GgwBCwJAAkACQCABKAIEEKENIgJBf0YEQBC1GkUNAQwECyACQQVrQXtLDQELIwBBzrELaiECIAAQgRAhAQwBCyMAIQUj3QEhASADKAIIIgBB/////wcgAm5KBEAgBUHihwRqIQIMAQtBACAAIAJsEK0HIgZFDQEgBhC/ByEFIAMoAgggAmxBAEoEQCADKAIAIQQgAkEBayEIQQAhAQNAIwBBoJcfaiAELQAAQQF0ai4BACEAAkACQAJAAkACQCAIDgMAAQIDCyABIAVqIABBCHY6AAAMAwsgASAFaiAAOwEADAILIAEgBWoiB0EAOgAAIAcgAEEIdjoAAiAHIAA6AAEMAQsgASAFaiAAQRB0NgIACyAEQQFqIQQgASACaiIBIAMoAgggAmxIDQALCyAGIQQMAQsgASgCACACELQaCyADKAIEBEAgAxDEBQsgA0EwaiQBIAQL6QQBB38jAUEwayIDJAEgA0EANgIoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3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fyEBCyMAIQICQCAFQQVrQXxJBH8gAkHOsQtqBSMAIQYgAygCCCICIAIgBW0iAiAFbEYNASAGQdW3AmoLIQIgABCBECgCACACELQaDAELIAEgAkggAUEATnFFBEAgABCBECgCACMAQf7hB2oQtBoMAQsCfwJAAkACQAJAIAVBAWsOAwABAgMLIAMoAgAgAWosAAAMAwsgAygCACABQQF0ai4BAAwCCyADKAIAIAFBA2xqIgQvAAAgBCwAAkEQdHIMAQsgAygCACABIAVsaigCAAsQmw0hBAsgAygCBARAIAMQxAULIANBMGokASAEC5gEAQp/IwFBMGsiAyQBIANBADYCKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwMAAkAgAkECRwRAIwBBwe8GaiACQQJBAhCMG0UNAQsgASgCACADQQAQxwUNACADQcMAEMgFRQRAIwAiAkHB7wZqIAJBjb8LaiACQfKIBGogASgCABD5GgwBCwJAAn8gASgCBBChDSICQX9GBEAjACECELUaDQMgAkHOsQtqDAELIwAhASABQc6xC2ogAkEFa0F8SQ0AGiMAIQEgAygCCCIFIAJvRQ0BIAFB1bcCagshAiAAEIEQKAIAIAIQtBoMAQtBACAFEK0HIgZFDQAgBhC/ByEFIAMoAggiAUEASgRAIAVBAmohCCAFQQFqIQkgAkEBayEKQQAhAANAAkACQAJAAkACQCAKDgMCAAEDCyAAIAFqIAVqQQJrIAMoAgAgBGovAQA7AQAMAwsgAygCACAEaiIHLQACIQsgBy0AASEMIAUgAEEDayIAIAFqaiAHLQAAOgAAIAkgAygCCCAAamogDDoAACAIIAMoAgggAGpqIAs6AAAMAgsgBSABIARBf3NqaiADKAIAIARqLQAAOgAADAELIAUgASACayAAamogAygCACAEaigCADYCAAtBACACIARqIgRrIQAgAygCCCIBIARKDQALCyAGIQQLIAMoAgQEQCADEMQFCyADQTBqJAEgBAu4AwEHfyMBQTBrIgMkASADQQA2AiggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDAAJAIAJBAkcEQCMAQeGoBGogAkECQQIQjBtFDQELIAEoAgAgA0EAEMcFDQAgA0HDABDIBUUEQCMAIgJB4agEaiACQY2/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wgsLC8oBAgJ8AX4CfyABEMYLIgJEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jtBADYCAAJAIAIQvzwiA71C////////////AIMiBEKBgICAgICA+P8AWgRAIAK9Qv///////////wCDQoCAgICAgID4/wBWDQEjtwEoAgAjAEHuwANqELQaQQAPCyAEQoCAgICAgID4/wBSDQAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFENACO3ASgCACMAQe7AA2oQtBpBAA8LIAMQwgsLC8oBAgJ8AX4CfyABEMYLIgJEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jtBADYCAAJAIAIQyTwiA71C////////////AIMiBEKBgICAgICA+P8AWgRAIAK9Qv///////////wCDQoCAgICAgID4/wBWDQEjtwEoAgAjAEHuwANqELQaQQAPCyAEQoCAgICAgID4/wBSDQAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFENACO3ASgCACMAQe7AA2oQtBpBAA8LIAMQwgsLC8oBAgJ8AX4CfyABEMYLIgJEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jtBADYCAAJAIAIQyzwiA71C////////////AIMiBEKBgICAgICA+P8AWgRAIAK9Qv///////////wCDQoCAgICAgID4/wBWDQEjtwEoAgAjAEHuwANqELQaQQAPCyAEQoCAgICAgID4/wBSDQAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFENACO3ASgCACMAQe7AA2oQtBpBAA8LIAMQwgsLC8oBAgJ8AX4CfyABEMYLIgJEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jtBADYCAAJAIAIQ0DwiA71C////////////AIMiBEKBgICAgICA+P8AWgRAIAK9Qv///////////wCDQoCAgICAgID4/wBWDQEjtwEoAgAjAEHuwANqELQaQQAPCyAEQoCAgICAgID4/wBSDQAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFENACO3ASgCACMAQe7AA2oQtBpBAA8LIAMQwgsLCxYAIAEgAiMCQd8TaiMAQY63C2oQiScLkQICAXwCfkQAAAAAAAD4fyECAkAgAb1C////////////AIMiA0KAgICAgICA+P8AVg0AIAC9Qv///////////wCDIgRCgICAgICAgPj/AFYNACAEQoCAgICAgID4/wBRBEAgA0KAgICAgICA+P8AUQRARAAAAAAAAPA/IAGmRAAAAAAAAPA/YQRARBgtRFT7Iek/IACmDwtE0iEzf3zZAkAgAKYPC0QYLURU+yH5PyAApg8LIANCgICAgICAgPj/AFIgAEQAAAAAAAAAAGJxRQRARAAAAAAAAPA/IAGmRAAAAAAAAPA/YQRARAAAAAAAAAAAIACmDwtEGC1EVPshCUAgAKYPCyAAIAEQ0jwhAgsgAguzAwIDfAF+AkAgAUECRg0AIAMgAUECQQIQjBsNAEEADwsCQAJ/IAAoAgAQxgsiBEQAAAAAAADwv2EEQEEAELUaDQEaCyAAKAIEEMYLIgVEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jsiAUEANgIAAkACQAJAIAQgBSACERkAIga9Qv///////////wCDIgdCgYCAgICAgPj/AFoEQCAEvUL///////////8Ag0KAgICAgICA+P8AVg0BIAW9Qv///////////wCDQoCAgICAgID4/wBWDQEgAUESNgIADAULIAdCgICAgICAgPj/AFEEQCAEvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0BIAW9QoCAgICAgID4/wCDQoCAgICAgID4/wBRDQEgAUHEADYCAAwCCwJAAkAgASgCACIBDhMEAQEBAQEBAQEBAQEBAQEBAQEGAAsgAUHEAEYNAgsjtwEoAgAQ0hoaQQAPCyABQQA2AgAMAQsgBplEAAAAAAAA+D9jDQAjwAEoAgAjAEGJwgNqELQaQQAPCyAGEMILCw8LI7cBKAIAIwBB7sADahC0GkEAC8oBAgJ8AX4CfyABEMYLIgJEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jtBADYCAAJAIAIQ1zwiA71C////////////AIMiBEKBgICAgICA+P8AWgRAIAK9Qv///////////wCDQoCAgICAgID4/wBWDQEjtwEoAgAjAEHuwANqELQaQQAPCyAEQoCAgICAgID4/wBSDQAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFENACO3ASgCACMAQe7AA2oQtBpBAA8LIAMQwgsLC8oBAgJ8AX4CfyABEMYLIgJEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jtBADYCAAJAIAIQhT0iA71C////////////AIMiBEKBgICAgICA+P8AWgRAIAK9Qv///////////wCDQoCAgICAgID4/wBWDQEjtwEoAgAjAEHuwANqELQaQQAPCyAEQoCAgICAgID4/wBSDQAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFENACO3ASgCACMAQe7AA2oQtBpBAA8LIAMQwgsLC8cBAgF/AXwCQCPCASABKAIERwRAIAEjAEGwzLcBahC+EiICBEAjsAEoAugCIQACfwJAIAIoAgQiAS0AVUEIcQRAIAIgASgCHGooAAAiAQ0BCyAAIAJBAEEAQQAQiAgMAQsgACACIAJBAEEAQQAgAREEAEEAEIYICyEAIAIgAigCAEEBayIBNgIAIAENAiACENUQIAAPC0EAIQAQtRoNAQsgARDGCyIDRAAAAAAAAPC/YQRAQQAhABC1Gg0BCyADmxCeDSEACyAACxMAIAEgAiO3CiMAQZeVBWoQiScLDAAgASO2CkEAEI8nC/oCAgJ8An4CfyAAEMYLIgNEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jsiAEEANgIAAkAgAyABERAAIgS9IgVC////////////AIMiBkKBgICAgICA+P8AWgRAIAO9Qv///////////wCDQoCAgICAgID4/wBWDQEjtwEoAgAjAEHuwANqELQaQQAPCyAGQoCAgICAgID4/wBSDQAgA71CgICAgICAgPj/AINCgICAgICAgPj/AFENACACBEAjwAEoAgAjAEGJwgNqELQaQQAPCyO3ASgCACMAQe7AA2oQtBpBAA8LAkAgBUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0AAkACQAJAAkAgACgCACIADhMEAgICAgICAgICAgICAgICAgIAAQsjtwEoAgAjAEHuwANqELQaQQAPCyAAQcQARg0BCyO3ASgCABDSGhpBAA8LIASZRAAAAAAAAPg/Yw0AI8ABKAIAIwBBicIDahC0GkEADwsgBBDCCwsLygECAnwBfgJ/IAEQxgsiAkQAAAAAAADwv2EEQEEAELUaDQEaCxD6O0EANgIAAkAgAhC0PSIDvUL///////////8AgyIEQoGAgICAgID4/wBaBEAgAr1C////////////AINCgICAgICAgPj/AFYNASO3ASgCACMAQe7A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IwBB7sADahC0GkEADwsgBEKAgICAgICA+P8AUg0AIAK9QoCAgICAgID4/wCDQoCAgICAgID4/wBRDQAjwAEoAgAjAEGJwgNqELQaQQAPCyADEMILCwsMACABI7UKQQEQjycLygECAnwBfgJ/IAEQxgsiAkQAAAAAAADwv2EEQEEAELUaDQEaCxD6O0EANgIAAkAgAhCLPyIDvUL///////////8AgyIEQoGAgICAgID4/wBaBEAgAr1C////////////AINCgICAgICAgPj/AFYNASO3ASgCACMAQe7AA2oQtBpBAA8LIARCgICAgICAgPj/AFINACACvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0AI8ABKAIAIwBBicIDahC0GkEADwsgAxDCCwsLDAAgASO0CkEAEI8nC5oEAQd/IwFBEGsiBSQBAkAgASAFQQxqEJ8NIgRBf0YEQEEAIQEQtRoNAQsgBSgCDCIBQQFGBEAgBUH/////BzYCACPAASgCACMAQcW+CGogBRCuGhpBACEBDAELIAFBf0cgBEEATnFFBEAjtwEoAgAjAEG8ngJqELQaQQAhAQwBCyAEQQxNBEAjAEHA3R9qIARBAnRqKAIAEJwNIQEMAQtBARCbDSIBRQRAQQAhAQwBCyABIAEoAgBBAWo2AgBBHiAEZ2shAiABIQBBAyEGAkACQANAIAQgAiIDdiICQQNPBEACQAJAIAYgAkEBakEBciIIQSAgCEECa2drEJsnIgJFDQAgACACENwFIQcgAiACKAIAQQFrIgY2AgAgBkUEQCACENUQCyAHRQ0AIAAgACgCAEEBayICNgIAIAJFBEAgABDVEAsgASAHENwFIgINASAHIQALIAEgASgCAEEBayIDNgIAIANFBEAgARDVEAsgACAAKAIAQQFrIgM2AgBBACEBIANFDQMMBQsgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCyAIIQYgAiEBIAchAAsgA0EBayECIANBAEoNAAsgACAAKAIAQQFrIgM2AgAgAw0BCyAAENUQCyABRQRAQQAhAQwBCyABIAQgBGlrEMwNIQQgASABKAIAQQFrIgM2AgAgA0UEQCABENUQCyAEIQELIAVBEGokASABC8UBAQJ/IAEgAGsiBEEBdiEDAkAgBEHBAEsNACACIANsQSBLDQAgASAAQQJqIgNLBEADQCAAIANsIQAgA0ECaiIDIAFJDQALCyAAEJwNDwsgACAAIANqQQFyIgRBICAEQQJrZ2sQmyciA0UEQEEADwsgBCABIAIQmyciAAR/IAMgABDcBQVBAAshAiADIAMoAgBBAWsiATYCACABRQRAIAMQ1RALAkAgAEUNACAAIAAoAgBBAWsiAzYCACADDQAgABDVEAsgAgvVAQIBfwF8AkACQCPCASABKAIERgRAIAErAwghAwwBCyABIwBBuMy3AWoQvhIiAARAI7ABKALoAiECAn8CQCAAKAIEIgEtAFVBCHEEQCAAIAEoAhxqKAAAIgENAQsgAiAAQQBBAEEAEIgIDAELIAIgACAAQQBBAEEAIAERBABBABCGCAshAiAAIAAoAgBBAWsiATYCACABDQIgABDVECACDwsQtRoNASABEMYLIgNEAAAAAAAA8L9iDQBEAAAAAAAA8L8hAxC1Gg0BCyADnBCeDSECCyACC/ACAgJ8AX4CQCACQQJGDQAjAEHTqQhqIAJBAkECEIwbDQBBAA8LAn8CQCPCASABKAIAIgIoAgRGBEAgAisDCCEDDAELIAIQxgsiA0QAAAAAAADwv2INAEQAAAAAAADwvyEDQQAQtRoNARoLAkAjwgEgASgCBCICKAIERgRAIAIrAwghBAwBCyACEMYLIgREAAAAAAAA8L9iDQBEAAAAAAAA8L8hBEEAELUaDQEaCwJAIAS9Qv///////////wCDIgVCgICAgICAgPj/AFINACADvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0AIAMQwgsPCxD6OyICQQA2AgACQCADIAQQ2D8iBL1C////////////AINCgYCAgICAgPj/AFQNACADvUL///////////8Ag0KAgICAgICA+P8AVg0AIAVCgICAgICAgPj/AFYNACACQRI2AgAjtwEoAgAjAEHuwANqELQaQQAPCyAEEMILCwvMAQIBfAF+IwFBIGsiACQBAn8CQCPCASABKAIERgRAIAErAwghAgwBCyABEMYLIgJEAAAAAAAA8L9iDQBEAAAAAAAA8L8hAkEAELUaDQEaC0EAIQECQCACvUL///////////8AgyIDQoCAgICAgID4/wBWDQAgAkQAAAAAAAAAAGENACADQoCAgICAgID4/wBRDQAgAiAAQRxqEPU/IQIgACgCHCEBCyAAIAE2AgggACACOQMAIwBBxpYNaiAAEM0cCyEBIABBIGokASABC7kJAwZ/BnwBfiMBQaACayICJAECQCABEIcGIgZFBEAMAQsCQAJ/AkAgBhCIBiIBBEBBICEHIAJBIGohAANAAkACQCABKAIEIgMjwgFGBEAgASsDCCEJDAELI7kBIANGBEAgARDADSIJRAAAAAAAAPC/Yg0BRAAAAAAAAPC/IQkQtRpFDQEMAgsgARDGCyIJRAAAAAAAAPC/Yg0ARAAAAAAAAPC/IQkQtRoNAQsgASABKAIAQQFrIgM2AgAgA0UEQCABENUQC0EAIQEgCSEIQQAhAyAFQQBKBEADQCACIAAgAUEDdGorAwAiCiAIIAiZIAqZYyIEGyINIAggCiAEGyIIoDkDGCACIAIrAxggDaE5AxAgAiAIIAIrAxChOQMIIAIrAwhEAAAAAAAAAABiBEAgACADQQN0aiACKwMIOQMAIANBAWohAwsgAisDGCEIIAFBAWoiASAFRw0ACwsCfyADIAhEAAAAAAAAAABhDQAaIAi9QoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgCb0iDkKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAI8ABKAIAIwBBhaMFahC0GkEAIQMgACEEDAgLIAsgCaAhCyAMIAlEAAAAAAAAAIAgDkL///////////8Ag0KAgICAgICA+P8AURugIQxBAAwBCwJAIAMgB0gNAAJAAkAgB0EBdCIBQf7///8ASwRAIAAhBAwBCyABIANMBEAgACEEDAELIAdBBHQhBSACQSBqIABGBEAgBRD6ECIADQIgAkEgaiEEDAELIAAhBCABIQcgACAFEPwQIgEhACABDQILI90BKAIAIwBBl5ACahC0GkEAIQMMCAsgACACQSBqIANBA3QQzj4aIAEhBwsgACADQQN0aiAIOQMAIANBAWoLIQUgBhCIBiIBDQEMAwsLIAEgASgCAEEBayIENgIAQQAhAyAEBEAgACEEDAQLIAEQ1RAgACEEDAMLELUaBEAgAkEgaiEEDAMLIAJCADcDGCACQSBqDAELQQAhAxC1GgRAIAAhBAwCCyALRAAAAAAAAAAAYgRAIAy9Qv///////////wCDQoGAgICAgID4/wBaBEAjtwEoAgAjAEGjowVqELQaIAAhBAwDCyALEMILIQMgACEEDAILIAJCADcDGAJAIAVBAEwNACACIAAgBUEBayIBQQN0aisDADkDGCAFQQFGDQADQAJAIAIgAisDGCIIIAAgASIDQQFrIgFBA3RqKwMAIgqgOQMYIAIgAisDGCAIoTkDECACIAogAisDEKE5AwggAisDCEQAAAAAAAAAAGINACABDQELCyABRQ0AAkAgAisDCEQAAAAAAAAAAGMEQCADQQN0IABqQRBrKwMARAAAAAAAAAAAYw0BCyACKwMIRAAAAAAAAAAAZEUNASADQQN0IABqQRBrKwMARAAAAAAAAAAAZEUNAQsgAiACKwMYIAIrAwgiCCAIoCIIoCIKIAIrAxihOQMQIAggAisDEGINACACIAo5AxgLIAALIQQgAisDGBDCCyEDCyAGIAYoAgBBAWsiATYCACABRQRAIAYQ1RALIAQgAkEgakYNACAEEP0QCyACQaACaiQBIAMLDQAgASMCQeQTahCiJwvMBQIDfAF+AkAgAL0iBEKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABEAAAAAAAAAABkDQEgBEL///////////8Ag0KAgICAgICA+P8AVg0BEPo7QRI2AgBEAAAAAAAA+H8PCyAARAAAAAAAAAAAYQRAEPo7QRI2AgBEAAAAAAAA8H8gAKYPCwJAIACcIABiDQAgAEQAAAAAAAAAAGMEQBD6O0ESNgIARAAAAAAAAPh/DwsgAEQAAAAAAAA3QGVFDQAjAAJ/IACZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4C0EDdGpB+N0faisDAA8LIACZIgFEI0KSDKGcxztjBEBEAAAAAAAA8D8gAKMiAL1C////////////AINCgICAgICAgPj/AFINARD6O0HEADYCACAADwsgAUQAAAAAAABpQGQEQCAARAAAAAAAAAAAYwRARAAAAAAAAAAAIAAQySejDwsQ+jtBxAA2AgBEAAAAAAAA8H8PCyABRAAAgLlFGRZAoCICIAGhRAAAgLlFGRbAoCACRAAAgLlFGRbAoCABoSABRAAAgLlFGRZAZBtEAACAuUUZGECiIAKjIQMCfCAARAAAAAAAAAAAYwRAIAEQySchACACEP4+RBgtRFT7IQnAIACjIAGjoiABEMonoyIAIAMgAKKhIQAgAUQAAAAAAIBhQGMEQCAAIAIgAUQA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//////8Ag0KAgICAgICA+P8AUg0AEPo7QcQANgIACyACC7ACAQN/IwFBIGsiAiQBQQAhACACQQA2AhgCQAJAAkACQAJAIAEoAghBAWsOAgIAAQsgAiACQRhqNgIUIAIgAkEcajYCECABIwBBufYFaiACQRBqEPAaRQ0DIAIoAhghAAwCCyO1ASgCACMAQbzXAWoQtBoMAgsgAiACQRxqNgIAIAEjAEG69gVqIAIQ8BpFDQELIAIoAhwjAkHmE2oQsCchASAARQRAIAEhAAwBCyABRQRAIAEhAAwBCwJAIAAjAkHmE2oQsCciA0UEQCABIAEoAgBBAWsiBDYCAEEAIQAgASEDIARFDQEMAgsgASADEN8FIQAgASABKAIAQQFrIgQ2AgAgBEUEQCABENUQCyADIAMoAgBBAWsiATYCACABDQELIAMQ1RALIAJBIGokASAAC6MBAQF+IAC9IgFCgICAgICAgPj/AINCgICAgICAgPj/AFIEQCAARAAAAAAAAAAAZARAIAAQ60EPCxD6O0ESNgIARAAAAAAAAPD/RAAAAAAAAPh/IABEAAAAAAAAAABhGw8LAkAgAEQAAAAAAAAAAGQNACABQv///////////wCDQoCAgICAgID4/wBWDQAQ+jtBEjYCAEQAAAAAAAD4fyEACyAAC8wBAgJ/AXwjAUEQayIDJAECQCAAKAIELQBXQQFxBEAgACgCCEEATARAI7cBKAIAIwBB7sADahC0GgwCCwJAIAAQwA0iBEQAAAAAAADwv2INABC1GkUNACPAASgCABC4GkUNAhC9GiAAIANBDGoQvw0iBEQAAAAAAADwv2EEQBC1Gg0DCyAEIAEREABEAAAAAAAAAEAgAREQACADKAIMt6KgEMILIQIMAgsgBCABERAAEMILIQIMAQsgACABQQAQjychAgsgA0EQaiQBIAILDwAgASMCQecTakEAEI8nCxkAIABEAAAAAAAAAABiBHwgABDwQQUgAAsLDQAgASMCQegTahCwJwujAQEBfiAAvSIBQoCAgICAgID4/wCDQoCAgICAgID4/wBSBEAgAEQAAAAAAAAAAGQEQCAAEO1BDwsQ+jtBEjYCAEQAAAAAAADw/0QAAAAAAAD4fyAARAAAAAAAAAAAYRsPCwJAIABEAAAAAAAAAABkDQAgAUL///////////8Ag0KAgICAgICA+P8AVg0AEPo7QRI2AgBEAAAAAAAA+H8hAAsgAAsNACABIwJB6RNqELAnC6MBAQF+AkAgAL0iAUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABEAAAAAAAAAABkDQEgAUL///////////8Ag0KAgICAgICA+P8AVg0BEPo7QRI2AgBEAAAAAAAA+H8PCyAARAAAAAAAAAAAZARAIAAQ80EPCxD6O0ESNgIARAAAAAAAAPD/RAAAAAAAAPh/IABEAAAAAAAAAABhGyEACyAAC6ECAgF8AX4jAUFAaiIAJAECfwJAI8IBIAEoAgRGBEAgASsDCCECDAELIAEQxgsiAkQAAAAAAADwv2INAEQAAAAAAADwvyECQQAQtRoNARoLAkAgAr0iA0KAgICAgICA+P8Ag0KAgICAgICA+P8AUg0AIANC////////////AIMiA0KAgICAgICA+P8AUQRAIAAgAjkDCCAARAAAAAAAAAAAIAKmOQMAIwBBurINaiAAEM0cDAILIANCgYCAgICAgPj/AFQNACAAIAI5AxggACACOQMQIwBBurINaiAAQRBqEM0cDAELEPo7QQA2AgAgACACIABBOGoQsEI5AyAgACAAKwM4OQMoIwBBurINaiAAQSBqEM0cCyEBIABBQGskASABC8gGAgN8A34CQCACQQJGDQAjAEGtK2ogAkECQQIQjBsNAEEADwsCfwJAI8IBIAEoAgAiAigCBEYEQCACKwMIIQMMAQsgAhDGCyIDRAAAAAAAAPC/Yg0ARAAAAAAAAPC/IQNBABC1Gg0BGgsCQCPCASABKAIEIgIoAgRGBEAgAisDCCEEDAELIAIQxgsiBEQAAAAAAADwv2INAEQAAAAAAADwvyEEQQAQtRoNARoLAkACQCADvSIGQoCAgICAgID4/wCDQoCAgICAgID4/wBSIAS9QoCAgICAgID4/wCDQoCAgICAgID4/wBScUUEQBD6O0EANgIAIAZC////////////AIMiBkKBgICAgICA+P8AWgRARAAAAAAAAPA/IAMgBEQAAAAAAAAAAGEbIQUMAwsgBL0iB0L///////////8AgyIIQoGAgICAgID4/wBaBEBEAAAAAAAA8D8gBCADRAAAAAAAAPA/YRshBQwDCyAGQoCAgICAgID4/wBRBEBBACECIAdCgICAgICAgPj/AINCgICAgICAgPj/AFIEQCAEmUQAAAAAAAAAQBDYP0QAAAAAAADwP2EhAgsgBEQAAAAAAAAAAGQEQCADIAOZIAIbIQUMBAtEAAAAAAAA8D8hBSAERAAAAAAAAAAAYQ0DRAAAAAAAAAAAIAOmRAAAAAAAAAAAIAIbIQUMAwsgCEKAgICAgICA+P8AUg0CRAAAAAAAAPA/IQUgA5kiA0QAAAAAAADwP2ENAiADRAAAAAAAAPA/ZEUNASAERAAAAAAAAAAAZEUNASAEIQUMAgsQ+jsiAkEANgIAIAMgBBCEQyIFvSIGQoCAgICAgID4/wCDQoCAgICAgID4/wBSDQECQCAGQv///////////wCDIgZCgICAgICAgPj/AFgEQCAGQoCAgICAgID4/wBSDQMgA0QAAAAAAAAAAGINAQsgAkESNgIAI7cBKAIAIwBB7sADahC0GkEADwsgAkHEADYCACAFmUQAAAAAAAD4P2MNASPAASgCACMAQYnCA2oQtBpBAA8LIASaRAAAAAAAAAAAIAREAAAAAAAAAABjG0QAAAAAAAAAACADRAAAAAAAAPA/YxshBQsgBRDCCwsLVAEBfAJ/AkAjwgEgASgCBEYEQCABKwMIIQIMAQsgARDGCyICRAAAAAAAAPC/Yg0ARAAAAAAAAPC/IQJBABC1Gg0BGgsgAkQ5nVKiRt+RP6IQwgsLCxYAIAEgAiMCQeoTaiMAQaGNBGoQiScLlQICA3wBfgJ8AkAgAL0iBUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0AIAG9QoCAgICAgID4/wCDQoCAgICAgID4/wBRDQBEAAAAAAAA+H8gAUQAAAAAAAAAAGENARoCQCAAmSIEIAGZIgIQ2D8iASACIAGhIgNjDQAgASADZARAIAOaIQEMAQsgASAEIAGhRAAAAAAAAOA/oiACENg/IgIgAqChIQELRAAAAAAAAPA/IACmIAGiDwsgBUL///////////8AgyIFQoCAgICAgID4/wBWBEAgAA8LIAEgAb1C////////////AINCgICAgICAgPj/AFYNABpEAAAAAAAA+H8gACAFQoCAgICAgID4/wBRGwsLDAAgASOzCkEAEI8nC8oBAgJ8AX4CfyABEMYLIgJEAAAAAAAA8L9hBEBBABC1Gg0BGgsQ+jtBADYCAAJAIAIQx0QiA71C////////////AIMiBEKBgICAgICA+P8AWgRAIAK9Qv///////////wCDQoCAgICAgID4/wBWDQEjtwEoAgAjAEHuwANqELQaQQAPCyAEQoCAgICAgID4/wBSDQAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFENACPAASgCACMAQYnCA2oQtBpBAA8LIAMQwgsLCwwAIAEjsgpBABCPJwvKAQICfAF+An8gARDGCyICRAAAAAAAAPC/YQRAQQAQtRoNARoLEPo7QQA2AgACQCACELFFIgO9Qv///////////wCDIgRCgYCAgICAgPj/AFoEQCACvUL///////////8Ag0KAgICAgICA+P8AVg0BI7cBKAIAIwBB7sADahC0GkEADwsgBEKAgICAgICA+P8AUg0AIAK9QoCAgICAgID4/wCDQoCAgICAgID4/wBRDQAjtwEoAgAjAEHuwANqELQaQQAPCyADEMILCwvKAQICfAF+An8gARDGCyICRAAAAAAAAPC/YQRAQQAQtRoNARoLEPo7QQA2AgACQCACELNFIgO9Qv///////////wCDIgRCgYCAgICAgPj/AFoEQCACvUL///////////8Ag0KAgICAgICA+P8AVg0BI7cBKAIAIwBB7sADahC0GkEADwsgBEKAgICAgICA+P8AUg0AIAK9QoCAgICAgID4/wCDQoCAgICAgID4/wBRDQAjtwEoAgAjAEHuwANqELQaQQAPCyADEMILCwv0AQECfyMBQRBrIgMkAQJAIAEoAgQiACPCAUYEQCABI8IBKAIwKAJAEQEAIQIMAQsgACgChAFFBEAgABDIEkEASA0BCyABIwBB+My3AWoQvhIiAEUEQBC1Gg0BIAMgASgCBCgCDDYCACO1ASgCACMAQeGtCGogAxCuGhoMAQsjsAEoAugCIQICfwJAIAAoAgQiAS0AVUEIcQRAIAAgASgCHGooAAAiAQ0BCyACIABBAEEAQQAQiAgMAQsgAiAAIABBAEEAQQAgAREEAEEAEIYICyECIAAgACgCAEEBayIBNgIAIAENACAAENUQCyADQRBqJAEgAgvDCQIDfwN8IwFBEGsiBSQBAkACfwJAIAMEQCADKAIIIQQMAQsgAUUNACACQQFHDQAgASgCACEAQQAMAQtBACEAIAEgAkEAIAMjAEGMzbcBakEBQQFBACAFQQRqEIobIgFFDQEgASgCACEAQQAgAiAEakEBRg0AGiABKAIECyEDIAAQhwYiAUUEQEEAIQAMAQsgAyOwAUGUBGogAxsiAiACKAIAQQFqNgIAAkACQCACKAIEIgAjuQFHBEAgAiEDDAELIAIgBUEMahCfDSEEAn8CQCAFKAIMBEAgAiEDDAELIAIgAigCAEEBayIANgIAQQAhAyAADQBBAAwBC0EBCyEAA0AgAEUEQCACENUQQQAhA0EBIQAMAQsCQAJAA0AgBCIGtyEJA0AgAw0CIAEQiAYiAkUEQCABIAEoAgBBAWsiAzYCACADRQRAIAEQ1RALQQAhABC1Gg0IIAYQmw0hAAwICwJAI7kBIAIoAgRHDQAgAiAFQQxqEJ8NIQMgBSgCDA0AIAkgA7eiIgcgAyAGbCIEtyIIYgRAIAggB6EiCCAImiAIRAAAAAAAAAAAZhtEAAAAAAAAQECiIAcgB5ogB0QAAAAAAAAAAGYbZUUNAQsgAiACKAIAQQFrIgA2AgBBACEDIABFDQQMAgsgBhCbDSIARQRAIAIgAigCAEEBayIDNgIAIANFBEAgAhDVEAsgASABKAIAQQFrIgM2AgBBACEAIANFDQcMCAsgACACENwFIQMgACAAKAIAQQFrIgQ2AgAgBEUEQCAAENUQCyACIAIoAgBBAWsiADYCACAARQRAIAIQ1RALIAMNAAsLIAEgASgCAEEBayIDNgIAQQAhACADRQ0EDAULIAMoAgQhAAwCC0EAIQAMAAsACwJAIAAjwgFHDQAgAyADKAIAQQFrIgI2AgAgAysDCCEHIAJFBEAgAxDVEAsDQEEAIQMDQCADDQIgARCIBiICRQRAIAEgASgCAEEBayIDNgIAIANFBEAgARDVEAtBACEAELUaDQUgBxDCCyEADAULIAIoAgQiAyPCAUYEQCACIAIoAgBBAWsiAzYCACACKwMIIQggA0UEQCACENUQCyAHIAiiIQcMAgsCQCADI7kBRw0AIAIgBUEMahCfDSEDIAUoAgwNACACIAIoAgBBAWsiADYCACAARQRAIAIQ1RALIAcgA7eiIQcMAgsgBxDCCyIARQRAIAIgAigCAEEBayIDNgIAIANFBEAgAhDVEAsgASABKAIAQQFrIgM2AgBBACEAIANFDQQMBQsgACACENwFIQMgACAAKAIAQQFrIgQ2AgAgBEUEQCAAENUQCyACIAIoAgBBAWsiADYCACAARQRAIAIQ1RALIAMNAAsLIAEgASgCAEEBayIDNgIAQQAhACADRQ0BDAILAkADQCABEIgGIgJFBEAQtRpFBEAgAyEADAMLIAMgAygCAEEBayICNgIAQQAhACACDQIgAxDVEAwCCyADIAIQ3AUhACADIAMoAgBBAWsiBDYCACAERQRAIAMQ1RALIAIgAigCAEEBayIDNgIAIANFBEAgAhDVEAsgACIDDQALQQAhAAsgASABKAIAQQFrIgM2AgAgAw0BCyABENUQCyAFQRBqJAEgAAvNAwICfwJ+IwFBEGsiAyQBAkACQCACQQFrQQJJDQAjAEGfqQVqIAJBAUECEIwbDQBBACECDAELIAEoAgAhAAJAIAJBAUoEQCABKAIEIgQjsgFHDQELIAIgABCaJyECDAELQQAhAiAAEPgFIgFFDQAgBBD4BSIARQRAIAEgASgCAEEBayIANgIAIAANASABENUQDAELAkACfwJAAkAgASgCCEEASARAI7cBKAIAIwBB34AEahC0GgwBCyAAKAIIQQBIBEAjtwEoAgAjAEGAgQRqELQaDAELIAEgAEEAELAQIgQEQCAEQQBMDQFBABCbDQwDCyAAIANBDGoQsg0hBSADKAIMQQBMDQEgA0L///////////8ANwMAI8ABKAIAIwBBkbsIaiADEK4aGgsgASABKAIAQQFrIgQ2AgAgBEUEQCABENUQCyAAIAAoAgBBAWsiATYCACABRQ0CDAMLIAEgA0EMahCyDSEGAkAgAygCDA0AIAVCAlMNACAGIAVBABDEJwwBCyABIAVBABDFJwshAiABIAEoAgBBAWsiBDYCACAERQRAIAEQ1RALIAAgACgCAEEBayIBNgIAIAENAQsgABDVEAsgA0EQaiQBIAILoQcCBX8KfiABUARAQQEQmw0PCwJAAkACQAJAIAIEQCABQiJWDQEgACABpyIDIwBB4OIfamoxAABYBEAjACICQZDrH2oiBSADQQN0aikDACACQZDjH2ogAKciBkEDdGopAwB+IAUgACABfaciBEEDdGopAwB+IAJBkPMfaiICIAZqMQAAIAIgA2oxAAAgAiAEajEAAHx9hhCdDQ8LIAFCDVYNASMAQZD0H2ogA0EDdGopAwAgAFQNASABQgJUBEAgABCdDQ8LIAFC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hUGgIACiRAAAAHBxGJlBoCAAokQAAACwpv2hQaAgAKJEAAAAgGm9nEGgIACiRAAAAACoCINBoCAAokQAAAAAAAAAAKCjC5UBAQF/QX8hAQJAIAAjAEH63QVqRBgtRFT7IQlAEMILENkcQQBIDQAgACMAQfCcCGpEaVcUiwq/BUAQwgsQ2RxBAEgNACAAIwBB8DlqRBgtRFT7IRlAEMILENkcQQBIDQAgACMAQZqmBmpBABDoHxDCCxDZHEEASA0AIAAjAEG3oQVqQQAQ5x8QwgsQ2RxBH3UhAQsgAQsNACMAQbDNtwFqEPAPC/wGAwN8A38BfiMBQeAAayIAJAEgAEHQAGogARCKCSAAKwNYIQIgACsDUCEDAn9BABC1Gg0AGhD6OyIBQQA2AgACQAJAIwBBsJntAWoCfyADvSIIQoCAgICAgID4/wCDQoCAgICAgID4/wBSBEAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFINAiABQQA2AgBEAAAAAAAA8D8gA6YhBEEEQQEgBEQAAAAAAADwP2EbIANEAAAAAAAAAABiDQEaQQNBAiAERAAAAAAAAPA/YRsMAQsgAUEANgIAQQYgCEL///////////8Ag0KAgICAgICA+P8AVg0AGkEFQQBEAAAAAAAA8D8gA6ZEAAAAAAAA8D9hGwtB8ABsagJ/IAK9IghCgICAgICAgPj/AINCgICAgICAgPj/AFIEQEQAAAAAAADwPyACpiEDQQRBASADRAAAAAAAAPA/YRsgAkQAAAAAAAAAAGINARpBA0ECIANEAAAAAAAA8D9hGwwBC0EGIAhC////////////AINCgICAgICAgPj/AFYNABpBBUEARAAAAAAAAPA/IAKmRAAAAAAAAPA/YRsLQQR0aiIFKwMIIQIgBSsDACEEDAELAnwgA5lE////////z39kIAKZIgRE////////z39kcgRAIAQgAxDSPCEEIANEAAAAAAAA4D+iIAJEAAAAAAAA4D+iENNAEOtBRO85+v5CLvY/oCACmqYMAQsgAEHYAGoiBSACmjkDACAAIAUpAwA3AyggAEQAAAAAAADwPyADoTkDUCAAIAApA1A3AyAgAEEwaiAAQSBqEM4nIABByABqIgYgAjkDACAFIABBOGoiBykDADcDACAAIAYpAwA3AxggACADRAAAAAAAAPA/oDkDQCAAIAApAzA3A1AgACAAKQNANwMQIABBMGogAEEQahDOJyAGIAcpAwA3AwAgACAAKQMwNwNAIAArA1AiAiAAKwNAIgMQ0jwiBCAEoCEEIAMgBSsDAKIgAiAGKwMAoqEQyzwLIQIgAUEANgIACyAAIAI5AzggACAEOQMwAkAgASgCACIBQcQARwRAIAFBEkcNASO3ASgCACMAQe7AA2oQtBpBAAwCCyPAASgCACMAQYnCA2oQtBpBAAwBCyAAIAApAzg3AwggACAAKQMwNwMAIAAQhgkLIQEgAEHgAGokASABC7cFAgR8AX4CQCAAIwBBwJ/tAWoCfyABKwMAIgS9IgZCgICAgICAgPj/AINCgICAgICAgPj/AFIEQCABKwMIIgK9QoCAgICAgID4/wCDQoCAgICAgID4/wBSDQIQ+jtBADYCAEQAAAAAAADwPyAEpiECQQRBASACRAAAAAAAAPA/YRsgBEQAAAAAAAAAAGINARpBA0ECIAJEAAAAAAAA8D9hGwwBCxD6O0EANgIAQQYgBkL///////////8Ag0KAgICAgICA+P8AVg0AGkEFQQBEAAAAAAAA8D8gBKZEAAAAAAAA8D9hGwtB8ABsagJ/IAErAwgiBL0iBkKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRARAAAAAAAAPA/IASmIQJBBEEBIAJEAAAAAAAA8D9hGyAERAAAAAAAAAAAYg0BGkEDQQIgAkQAAAAAAADwP2EbDAELQQYgBkL///////////8Ag0KAgICAgICA+P8AVg0AGkEFQQBEAAAAAAAA8D8gBKZEAAAAAAAA8D9hGwtBBHRqIgEpAwA3AwAgACABKQMINwMIDwsCQCAERAAAAAAAAAAAYg0AIAJEAAAAAAAAAABiDQAgACACOQMIIABCADcDAA8LIAKZIQUCfAJAIASZIgNEAAAAAAAAEABjRQ0AIAVEAAAAAAAAEABjRQ0AIAREAAAAAAAAAABjIAREAAAAAAAAAABkciACRAAAAAAAAAAAYyACRAAAAAAAAAAAZHJyRQ0AIANBNRDGQSIDIAMgBUE1EMZBENNAoJ9BZRDGQQwBCyADRAAAAAAAAMA/oiIDIAMgBUQAAAAAAADAP6IQ00CgnyIDIAOgCyEDEPo7QQA2AgAgACADIAUgAyADoKMiBSAERAAAAAAAAAAAZiIBGzkDACAAIAUgAqYgAyACpiABGzkDCAv1BgMDfAN/AX4jAUHgAGsiACQBIABB0ABqIAEQigkgACsDWCECIAArA1AhAwJ/QQAQtRoNABoQ+jsiAUEANgIAAkACQCMAQdCl7QFqAn8gA70iCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAIAK9QoCAgICAgID4/wCDQoCAgICAgID4/wBSDQIgAUEANgIARAAAAAAAAPA/IAOmIQRBBEEBIAREAAAAAAAA8D9hGyADRAAAAAAAAAAAYg0BGkEDQQIgBEQAAAAAAADwP2EbDAELIAFBADYCAEEGIAhC////////////AINCgICAgICAgPj/AFYNABpBBUEARAAAAAAAAPA/IAOmRAAAAAAAAPA/YRsLQfAAbGoCfyACvSIIQoCAgICAgID4/wCDQoCAgICAgID4/wBSBEBEAAAAAAAA8D8gAqYhA0EEQQEgA0QAAAAAAADwP2EbIAJEAAAAAAAAAABiDQEaQQNBAiADRAAAAAAAAPA/YRsMAQtBBiAIQv///////////wCDQoCAgICAgID4/wBWDQAaQQVBAEQAAAAAAADwPyACpkQAAAAAAADwP2EbC0EEdGoiBSsDCCECIAUrAwAhBAwBCwJ8IAOZRP///////89/ZCACmUT////////Pf2RyBEAgA0QAAAAAAADgP6IgAkQAAAAAAADgP6IQ00AQ60FE7zn6/kIu9j+gIQQgAiADENI8DAELIABB2ABqIgUgAjkDACAAIAUpAwA3AyggACADRAAAAAAAAPC/oDkDUCAAIAApA1A3AyAgAEEwaiAAQSBqEM4nIABByABqIgYgAjkDACAFIABBOGoiBykDADcDACAAIAYpAwA3AxggACADRAAAAAAAAPA/oDkDQCAAIAApAzA3A1AgACAAKQNANwMQIABBMGogAEEQahDOJyAGIAcpAwA3AwAgACAAKQMwNwNAIAArA1AgACsDQCICoiAFKwMAIgMgBisDAKKgEMs8IQQgAyACENI8IgIgAqALIQIgAUEANgIACyAAIAI5AzggACAEOQMwAkAgASgCACIBQcQARwRAIAFBEkcNASO3ASgCACMAQe7AA2oQtBpBAAwCCyPAASgCACMAQYnCA2oQtBpBAAwBCyAAIAApAzg3AwggACAAKQMwNwMAIAAQhgkLIQEgAEHgAGokASABC/4BAgJ/AnwjAUHQAGsiACQBIABBQGsgARCKCSAAKwNIIQQgACsDQCEFQQAhAQJAELUaDQAQ+jsiA0EANgIAIABByABqIgIgBTkDACAAIAIpAwA3AxggACAEmjkDQCAAIAApA0A3AxAgAEEwaiAAQRBqENEnIAIgACkDODcDACAAIAApAzA3A0AgACACKwMAOQMgIAAgACsDQJo5AygCQCADKAIAIgJBxABHBEAgAkESRw0BI7cBKAIAIwBB7sADahC0GgwCCyPAASgCACMAQYnCA2oQtBoMAQsgACAAKQMoNwMIIAAgACkDIDcDACAAEIYJIQELIABB0ABqJAEgAQuHBgMDfwZ8AX4jAUHQAGsiAiQBAkACQCAAIwBB4KvtAWoCfyABKwMAIgW9IgtCgICAgICAgPj/AINCgICAgICAgPj/AFIEQCABKwMIIga9QoCAgICAgID4/wCDQoCAgICAgID4/wBSDQIQ+jtBADYCAEQAAAAAAADwPyAFpiEGQQRBASAGRAAAAAAAAPA/YRsgBUQAAAAAAAAAAGINARpBA0ECIAZEAAAAAAAA8D9hGwwBCxD6O0EANgIAQQYgC0L///////////8Ag0KAgICAgICA+P8AVg0AGkEFQQBEAAAAAAAA8D8gBaZEAAAAAAAA8D9hGwtB8ABsagJ/IAErAwgiBb0iC0KAgICAgICA+P8Ag0KAgICAgICA+P8AUgRARAAAAAAAAPA/IAWmIQZBBEEBIAZEAAAAAAAA8D9hGyAFRAAAAAAAAAAAYg0BGkEDQQIgBkQAAAAAAADwP2EbDAELQQYgC0L///////////8Ag0KAgICAgICA+P8AVg0AGkEFQQBEAAAAAAAA8D8gBaZEAAAAAAAA8D9hGwtBBHRqIgEpAwA3AwAgACABKQMINwMIDAELAnwgBZkiCET////////Pf2QgBplE////////z39kcgRAIAVEAAAAAAAA4D+iIAZEAAAAAAAA4D+iENNAEOtBRO85+v5CLvY/oCAFpgwBCyACQcgAaiIBIAWaOQMAIAIgASkDADcDGCACIAZEAAAAAAAA8D+gOQNAIAIgAikDQDcDECACQSBqIAJBEGoQzicgAkE4aiIDIAU5AwAgASACQShqIgQpAwA3AwAgAiADKQMANwMIIAJEAAAAAAAA8D8g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ahDXJyAAIAApA0g3AzggACAAKQNAIgY3AyAgACAGNwMwAkAgAigCACICQcQARwRAIAJBEkcNASO3ASgCACMAQe7AA2oQtBoMAgsjwAEoAgAjAEGJwgNqELQaDAELIAAgACkDODcDCCAAIAApAzA3AwAgABCGCSEBCyAAQdAAaiQBIAEL5wYCA3wCfgJAIAAjAEGAuO0BagJ/AkACQAJAIAErAwAiAr0iBUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAIAErAwgiA71CgICAgICAgPj/AINCgICAgICAgPj/AFINAUQAAAAAAADwPyACpiEDIAVC////////////AIMhBkEEQQEgA0QAAAAAAADwP2EbIAJEAAAAAAAAAABiDQQaQQNBAiADRAAAAAAAAPA/YRsMBAsgBUL///////////8AgyIGQoCAgICAgID4/wBRDQFBBiAGQoCAgICAgID4/wBWDQMaDAILIAACfCACmUTSvHrdKyOGQGQEQCACRAAAAAAAAPA/IAKmoSICELQ9IAMQsj2iRGlXFIsKvwVAoiEEIAIQx0QgAxDCRKJEaVcUiwq/BUCiDAELIAMQsj0gAhC0PaIhBCADEMJEIAIQx0SiCyICOQMIIAAgBDkDACAEvUL///////////8Ag0KAgICAgICA+P8AUiACvUL///////////8Ag0KAgICAgICA+P8AUnFFBEAQ+jtBxAA2AgAPCxD6O0EANgIADwsgASsDCCIDRAAAAAAAAAAAYQ0AIAO9IgVCgICAgICAgPj/AINCgICAgICAgPj/AFENACAARAAAAAAAAPB/IAMQsj2mOQMAIAMQwkQhAyACRAAAAAAAAAAAZARAIABEAAAAAAAA8H8gA6Y5AwhCgICAgICAgPj/ACEGDAMLIABEAAAAAAAA8H8gA5qmOQMIQoCAgICAgID4/wAhBgwCC0EFQQBEAAAAAAAA8D8gAqZEAAAAAAAA8D9hGwtB8ABsagJ/IAErAwgiAr0iBUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRARAAAAAAAAPA/IAKmIQNBBEEBIANEAAAAAAAA8D9hGyACRAAAAAAAAAAAYg0BGkEDQQIgA0QAAAAAAADwP2EbDAELQQYgBUL///////////8Ag0KAgICAgICA+P8AVg0AGkEFQQBEAAAAAAAA8D8gAqZEAAAAAAAA8D9hGwtBBHRqIgEpAwA3AwAgACABKQMINwMICxD6OyEBAkAgBUL///////////8Ag0KAgICAgICA+P8AUg0AIAZCgICAgICAgPj/AFYNACABQRI2AgAPCyABQQA2AgALrgEBAX8jAUFAaiIAJAEgAEEwaiABEIoJQQAhAQJAELUaDQAQ+jsiAkEANgIAIAAgACkDODcDGCAAIAApAzA3AxAgAEEgaiAAQRBqENcnAkAgAigCACICQcQARwRAIAJBEkcNASO3ASgCACMAQe7AA2oQtBoMAgsjwAEoAgAjAEGJwgNqELQaDAELIAAgACkDKDcDCCAAIAApAyA3AwAgABCGCSEBCyAAQUBrJAEgAQvkBwMDfAJ+A38jAUEgayIAJAEgAEEQaiABEIoJIAArAxghAiAAKwMQIQRBACEBAkAQtRoNABD6OyEJAkACfCMAQZC+7QFqAn8CQAJAAkAgBL0iBUKAgICAgICA+P8AgyIGQoCAgICAgID4/wBSBEAgAr1CgICAgICAgPj/AINCgICAgICAgPj/AFINAUQAAAAAAADwPyAEpiEDIAVC////////////AINCgICAgICAgPj/AFEhCEEEQQEgA0QAAAAAAADwP2EbIAREAAAAAAAAAABiDQQaQQNBAiADRAAAAAAAAPA/YRsMBAsgBUL///////////8AgyIFQoCAgICAgID4/wBRIggNASAFQoCAgICAgID4/wBYDQJBACEIQQYMAwtBxAAhBwJ8IARE0rx63SsjhkBkBEAgBEQAAAAAAADwv6AQ/j4iBCACEMJEokRpVxSLCr8FQKIhAyAEIAIQsj2iRGlXFIsKvwVAogwBCyAEEP4+IgQgAhDCRKIhAyAEIAIQsj2iCyICvUL///////////8Ag0KAgICAgICA+P8AUQ0EQcQAQQAgA71C////////////AINCgICAgICAgPj/AFEbIQcMBAsgAkQAAAAAAAAAAGENACACvSIFQoCAgICAgID4/wCDQoCAgICAgID4/wBRDQAgAhDCRCEDIAIQsj0hAiAERAAAAAAAAAAAZARARAAAAAAAAPB/IAOmIQNBASEIRAAAAAAAAPB/IAKmDAMLRAAAAAAAAAAAIAOmIQNBASEIRAAAAAAAAAAAIAKmDAILQQVBAEQAAAAAAADwPyAEpkQAAAAAAADwP2EbC0HwAGxqAn8gAr0iBUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRARAAAAAAAAPA/IAKmIQNBBEEBIANEAAAAAAAA8D9hGyACRAAAAAAAAAAAYg0BGkEDQQIgA0QAAAAAAADwP2EbDAELQQYgBUL///////////8Ag0KAgICAgICA+P8AVg0AGkEFQQBEAAAAAAAA8D8gAqZEAAAAAAAA8D9hGwtBBHRqIgcrAwghAyAHKwMACyECIAVC////////////AINCgICAgICAgPj/AFEEQEESIQcgBkKAgICAgICA+P8AUg0BIAREAAAAAAAAAABkIAhxDQELQQAhBwsgCSAHNgIAIAAgAzkDGCAAIAI5AxACQCAJKAIAIglBxABHBEAgCUESRw0BI7cBKAIAIwBB7sADahC0GgwCCyPAASgCACMAQYnCA2oQtBoMAQsgACAAKQMYNwMIIAAgACkDEDcDACAAEIYJIQELIABBIGokASABC4AGAgR8An8jAUGwAWsiACQBAkACfwJAIAMEQCADKAIIIQkMAQsgAUUNAEECIAJBAkYNARoLIAEgAkEAIAMjAEGU0bcBakECQQJBACAAQfAAahCKGyIBRQ0BIAIgCWoLIQIgAEHgAGogASgCABCKCRC1Gg0AIABB0ABqIAEoAgQQigkQtRoNAESV1iboCy4RPiEEAkAgAkECRg0AAkAgASgCCCIDRQRADAELAkAjwgEgAygCBEYEQCADKwMIIQQMAQsgAxDGCyIERAAAAAAAAPC/Yg0ARAAAAAAAAPC/IQQQtRoNAwsgAkEDRg0BCyPCASABKAIMIgEoAgRGBEAgASsDCCEGDAELRAAAAAAAAPC/IQYgARDGCyIFRAAAAAAAAPC/YgRAIAUhBgwBCxC1Gg0BCyAAIAApA1g3A5gBIAAgACkDaDcDiAEgACAAKQNgNwOAASAAIAApA1A3A5ABAkACQCAERAAAAAAAAAAAYw0AIAZEAAAAAAAAAABjDQAgACsDgAEiBSAAKwOQASIHYQRAQQEhASAAKwOIASAAKwOYAWENAgtBACEBIAW9Qv///////////wCDQoCAgICAgID4/wBRDQEgACkDiAFC////////////AINCgICAgICAgPj/AFENASAHvUL///////////8Ag0KAgICAgICA+P8AUQ0BIAApA5gBQv///////////wCDQoCAgICAgID4/wBRDQEgACAAKQNoNwNIIAAgACkDWDcDOCAAIAApA2A3A0AgACAAKQNQNwMwIABBoAFqIABBQGsgAEEwahCACSAAIAApA6gBNwMoIAAgACkDoAE3AyAgAEEgahCFCSEFIAAgACkDmAE3AxggACAAKQOQATcDEEEBIQEgBSAEIABBEGoQhQmiZQ0BIAAgACkDiAE3AwggACAAKQOAATcDACAFIAQgABCFCaJlDQEgBSAGZSEBDAELI7cBKAIAIwBBl78GahC0GhC1Gg0BQX8hAQsgARCuBiEICyAAQbABaiQBIAgLcAECfiMBQRBrIgAkASAAIAEQigkgACkDCCECIAApAwAhA0EAIQEQtRpFBEAgA0KAgICAgICA+P8Ag0KAgICAgICA+P8AUiACQoCAgICAgID4/wCDQoCAgICAgID4/wBScRCuBiEBCyAAQRBqJAEgAQtwAQJ+IwFBEGsiACQBIAAgARCKCSAAKQMIIQIgACkDACEDQQAhARC1GkUEQCADQv///////////wCDQoCAgICAgID4/wBRIAJC////////////AINCgICAgICAgPj/AFFyEK4GIQELIABBEGokASABC3ABAn4jAUEQayIAJAEgACABEIoJIAApAwghAiAAKQMAIQNBACEBELUaRQRAIANC////////////AINCgICAgICAgPj/AFYgAkL///////////8Ag0KAgICAgICA+P8AVnIQrgYhAQsgAEEQaiQBIAEL9QMCAX8BfiMBQZABayIAJAECfwJAIAJBAWtBAkkNACMAQbz2BWogAkEBQQIQjBsNAEEADAELIABB0ABqIAEoAgAQiglBABC1Gg0AGiACQQJOBEAgASgCBCEDCyAAQegAaiICIAApA1g3AwAgACAAKQNQNwNgEPo7IgFBADYCACAAIAIpAwA3A0ggACAAKQNgNwNAIABBgAFqIABBQGsQ3ycgAiAAKQOIATcDACAAIAApA4ABNwNgIAMEQCAAQYABaiADEIoJQQAQtRoNARogACAAQYgBaiICKQMANwM4IAAgACkDgAE3AzAgAEHwAGogAEEwahDfJyACIABB+ABqIgMpAwAiBDcDACAAIABB6ABqIgIpAwA3AyggACAENwMYIAAgACkDcCIENwOAASAAIAApA2A3AyAgACAENwMQIABB8ABqIABBIGogAEEQahCDCSACIAMpAwA3AwAgACAAKQNwNwNgCwJAAkACQAJAAkAgASgCACICDhMDAgICAgICAgICAgICAgICAgIAAQsjtwEoAgAjAEHuwANqELQaQQAMBAsgAkHEAEYNAgsjtwEoAgAQ0hoaQQAMAgsgACAAKQNoNwMIIAAgACkDYDcDACAAEIYJDAELI8ABKAIAIwBBicIDahC0GkEACyEDIABBkAFqJAEgAwu3BgIFfAF+AkAgACMAQaDE7QFqAn8gASsDACICvSIHQoCAgICAgID4/wCDQoCAgICAgID4/wBSBEAgASsDCCIEvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUg0CEPo7QQA2AgBEAAAAAAAA8D8gAqYhBEEEQQEgBEQAAAAAAADwP2EbIAJEAAAAAAAAAABiDQEaQQNBAiAERAAAAAAAAPA/YRsMAQsQ+jtBADYCAEEGIAdC////////////AINCgICAgICAgPj/AFYNABpBBUEARAAAAAAAAPA/IAKmRAAAAAAAAPA/YRsLQfAAbGoCfyABKwMIIgK9IgdCgICAgICAgPj/AINCgICAgICAgPj/AFIEQEQAAAAAAADwPyACpiEEQQRBASAERAAAAAAAAPA/YRsgAkQAAAAAAAAAAGINARpBA0ECIAREAAAAAAAA8D9hGwwBC0EGIAdC////////////AINCgICAgICAgPj/AFYNABpBBUEARAAAAAAAAPA/IAKmRAAAAAAAAPA/YRsLQQR0aiIBKQMANwMAIAAgASkDCDcDCA8LAnwgApkiBUT////////Pf2QgBJkiA0T////////Pf2RyBEAgBUQAAAAAAADgP6IgA0QAAAAAAADgP6IQ00AQ60FE7zn6/kIu5j+gDAELAkAgBUQAAAAAAAAQAGNFDQAgA0QAAAAAAAAQAGNFDQAgAkQAAAAAAAAAAGMgAkQAAAAAAAAAAGRyIAREAAAAAAAAAABjIAREAAAAAAAAAABkcnIEQCAFQTUQxkEgA0E1EMZBENNAEOtBRPo3J3tPXkLAoAwCCyAEIAIQ0jwhAhD6O0ESNgIAIAAgAjkDCCAAQoCAgICAgIB4NwMADwsCQCAFIAMQ00AiBkS4HoXrUbjmP2ZFDQAgBkSuR+F6FK77P2VFDQAgBSADIAMgBWMiARsiBkQAAAAAAADwv6AgBkQAAAAAAADwP6CiIAMgBSABGyIDIAOioCIDRAAAAAAAAAAAYgR8IAMQ8EEFIAMLRAAAAAAAAOA/ogwBCyAGEOtBCyEDIAQgAhDSPCECEPo7QQA2AgAgACACOQMIIAAgAzkDAAvxAQECfyMBQdAAayIAJAEgAEFAayABEIoJQQAhAQJAELUaDQAQ+jsiA0EANgIAIAAgACkDSDcDGCAAIAApA0A3AxAgAEEgaiAAQRBqEN8nIABBKGoiAiACKwMARBZVtbuxawJAozkDACAAIAIpAwA3AzggACAAKwMgRBZVtbuxawJAozkDICAAIAApAyA3AzACQCADKAIAIgJBxABHBEAgAkESRw0BI7cBKAIAIwBB7sADahC0GgwCCyPAASgCACMAQYnCA2oQtBoMAQsgACAAKQM4NwMIIAAgACkDMDcDACAAEIYJIQELIABB0ABqJAEgAQvfAgIDfAJ+IwFBEGsiACQBIAAgARCKCSAAKwMIIQIgACsDACEEQQAhARC1GkUEQBD6O0EANgIARAAAAAAAAPh/IQMCQCAEvUL///////////8AgyIFQoCAgICAgID4/wBWDQAgAr1C////////////AIMiBkKAgICAgICA+P8AVg0AIAZCgICAgICAgPj/AFEEQCAFQoCAgICAgID4/wBRBEBEAAAAAAAA8D8gBKZEAAAAAAAA8D9hBEBEGC1EVPsh6T8gAqYhAwwDC0TSITN/fNkCQCACpiEDDAILRBgtRFT7Ifk/IAKmIQMMAQsgBUKAgICAgICA+P8AUiACRAAAAAAAAAAAYnFFBEBEAAAAAAAA8D8gBKZEAAAAAAAA8D9hBEBEAAAAAAAAAAAgAqYhAwwCC0QYLURU+yEJQCACpiEDDAELIAIgBBDSPCEDCyADEMILIQELIABBEGokASABC5gEAwN8An4BfyMBQUBqIgAkASAAQSBqIAEQigkCf0EAELUaDQAaIABBOGoiASAAKQMoNwMAIAAgACkDIDcDMBD6OyIHQQA2AgBEAAAAAAAA+H8hAgJAIAArAzAiBL1C////////////AIMiBUKAgICAgICA+P8AVg0AIAArAzgiA71C////////////AIMiBkKAgICAgICA+P8AVg0AIAZCgICAgICAgPj/AFEEQCAFQoCAgICAgID4/wBRBEBEAAAAAAAA8D8gBKZEAAAAAAAA8D9hBEBEGC1EVPsh6T8gA6YhAgwDC0TSITN/fNkCQCADpiECDAILRBgtRFT7Ifk/IAOmIQIMAQsgBUKAgICAgICA+P8AUiADRAAAAAAAAAAAYnFFBEBEAAAAAAAA8D8gBKZEAAAAAAAA8D9hBEBEAAAAAAAAAAAgA6YhAgwCC0QYLURU+yEJQCADpiECDAELIAMgBBDSPCECCyAAIAEpAwA3AxggACAAKQMwNwMQIABBEGoQhQkhBAJAAkACQAJAAkAgBygCACIBDhMDAgICAgICAgICAgICAgICAgIAAQsjtwEoAgAjAEHuwANqELQaQQAMBAsgAUHEAEYNAgsjtwEoAgAQ0hoaQQAMAgsgACACOQMIIAAgBDkDACMAQYqDCWogABDNHAwBCyPAASgCACMAQYnCA2oQtBpBAAshASAAQUBrJAEgAQvWBwIDfAJ+IwFBIGsiACQBAn8CQCACQQJGDQAjAEG7lQFqIAJBAkECEIwbDQBBAAwBCwJAI8IBIAEoAgAiAigCBEYEQCACKwMIIQQMAQsgAhDGCyIERAAAAAAAAPC/Yg0ARAAAAAAAAPC/IQRBABC1Gg0BGgsCQCPCASABKAIEIgIoAgRGBEAgAisDCCEDDAELIAIQxgsiA0QAAAAAAADwv2INAEQAAAAAAADwvyEDQQAQtRoNARoLEPo7IQICQAJAIAAjAEGwyu0BagJ/AkACQAJAIAS9IgZCgICAgICAgPj/AINCgICAgICAgPj/AFIEQCADvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUg0BRAAAAAAAAPA/IASmIQUgBkL///////////8AgyEGQQRBASAFRAAAAAAAAPA/YRsgBEQAAAAAAAAAAGINBBpBA0ECIAVEAAAAAAAA8D9hGwwECyAGQv///////////wCDIgZCgICAgICAgPj/AFENAUEGIAZCgICAgICAgPj/AFYNAxoMAgsCQCADRAAAAAAAAAAAYQRAIAQhBQwBCyAEIAMQsj2iIQUgAxDCRCEDCyAAIAU5AxAgACAEIAOiOQMYDAQLIANEAAAAAAAAAABhDQAgA71CgICAgICAgPj/AINCgICAgICAgPj/AFENACADELI9IQUgBEQAAAAAAAAAAGQEQCAARAAAAAAAAPB/IAWmOQMQIABEAAAAAAAA8H8gAxDCRKY5AxhCgICAgICAgPj/ACEGDAMLIABEAAAAAAAA8H8gBZqmOQMQIABEAAAAAAAA8H8gAxDCRJqmOQMYQoCAgICAgID4/wAhBgwCC0EFQQBEAAAAAAAA8D8gBKZEAAAAAAAA8D9hGwtB8ABsagJ/IAO9IgdCgICAgICAgPj/AINCgICAgICAgPj/AFIEQEQAAAAAAADwPyADpiEFQQRBASAFRAAAAAAAAPA/YRsgA0QAAAAAAAAAAGINARpBA0ECIAVEAAAAAAAA8D9hGwwBC0EGIAdC////////////AINCgICAgICAgPj/AFYNABpBBUEARAAAAAAAAPA/IAOmRAAAAAAAAPA/YRsLQQR0aiIBKQMINwMYIAAgASkDADcDEAsgBEQAAAAAAAAAAGENACAGQoCAgICAgID4/wBWDQAgA71C////////////AINCgICAgICAgPj/AFINACACQRI2AgAjtwEoAgAjAEHuwANqELQaQQAMAQsgAkEANgIAIAAgACkDGDcDCCAAIAApAxA3AwAgABCGCQshAiAAQSBqJAEgAgv+AQICfwJ8IwFB0ABrIgAkASAAQUBrIAEQigkgACsDSCEEIAArA0AhBUEAIQECQBC1Gg0AEPo7IgNBADYCACAAQcgAaiICIAU5AwAgACACKQMANwMYIAAgBJo5A0AgACAAKQNANwMQIABBMGogAEEQahDlJyACIAApAzg3AwAgACAAKQMwNwNAIAAgAisDADkDICAAIAArA0CaOQMoAkAgAygCACICQcQARwRAIAJBEkcNASO3ASgCACMAQe7AA2oQtBoMAgsjwAEoAgAjAEGJwgNqELQaDAELIAAgACkDKDcDCCAAIAApAyA3AwAgABCGCSEBCyAAQdAAaiQBIAEL+wYCA3wCfgJAIAAjAEHA0O0BagJ/AkACQAJAIAErAwAiAr0iBUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAIAErAwgiA71CgICAgICAgPj/AINCgICAgICAgPj/AFINAUQAAAAAAADwPyACpiEDIAVC////////////AIMhBkEEQQEgA0QAAAAAAADwP2EbIAJEAAAAAAAAAABiDQQaQQNBAiADRAAAAAAAAPA/YRsMBAsgBUL///////////8AgyIGQoCAgICAgID4/wBRDQFBBiAGQoCAgICAgID4/wBWDQMaDAILIAACfCACmUTSvHrdKyOGQGQEQCACRAAAAAAAAPA/IAKmoSICEMdEIAMQsj2iRGlXFIsKvwVAoiEEIAIQtD0gAxDCRKJEaVcUiwq/BUCiDAELIAMQsj0gAhDHRKIhBCADEMJEIAIQtD2iCyICOQMIIAAgBDkDACAEvUL///////////8Ag0KAgICAgICA+P8AUiACvUL///////////8Ag0KAgICAgICA+P8AUnFFBEAQ+jtBxAA2AgAPCxD6O0EANgIADwsgASsDCCIDRAAAAAAAAAAAYQ0AIAO9IgVCgICAgICAgPj/AINCgICAgICAgPj/AFENACADELI9IQQgAkQAAAAAAAAAAGQEQCAARAAAAAAAAPB/IASmOQMAIABEAAAAAAAA8H8gAxDCRKY5AwhCgICAgICAgPj/ACEGDAMLIABEAAAAAAAA8H8gAxDCRKY5AwggAEQAAAAAAADwfyAEmqY5AwBCgICAgICAgPj/ACEGDAILQQVBAEQAAAAAAADwPyACpkQAAAAAAADwP2EbC0HwAGxqAn8gASsDCCICvSIFQoCAgICAgID4/wCDQoCAgICAgID4/wBSBEBEAAAAAAAA8D8gAqYhA0EEQQEgA0QAAAAAAADwP2EbIAJEAAAAAAAAAABiDQEaQQNBAiADRAAAAAAAAPA/YRsMAQtBBiAFQv///////////wCDQoCAgICAgID4/wBWDQAaQQVBAEQAAAAAAADwPyACpkQAAAAAAADwP2EbC0EEdGoiASkDADcDACAAIAEpAwg3AwgLEPo7IQECQCAFQv///////////wCDQoCAgICAgID4/wBSDQAgBkKAgICAgICA+P8AVg0AIAFBEjYCAA8LIAFBADYCAAuuAQEBfyMBQUBqIgAkASAAQTBqIAEQiglBACEBAkAQtRoNABD6OyICQQA2AgAgACAAKQM4NwMYIAAgACkDMDcDECAAQSBqIABBEGoQ5ScCQCACKAIAIgJBxABHBEAgAkESRw0BI7cBKAIAIwBB7sADahC0GgwCCyPAASgCACMAQYnCA2oQtBoMAQsgACAAKQMoNwMIIAAgACkDIDcDACAAEIYJIQELIABBQGskASABC64BAQF/IwFBQGoiACQBIABBMGogARCKCUEAIQECQBC1Gg0AEPo7IgJB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AzggAEKAgICAgICAeDcDMCAAQoCAgICAgICAgH83AyggAEKAgICAgICAeDcDICAAQoCAgICAgICAgH83AxggAEKAgICAgICAeDcDECAAQpjakKK1v8j0v383AwggAEKAgICAgICAeDcDACAAQgA3A4gDIABCADcDgAMgAEL80ojj8vnZ/kY3A5ADIABC/NKI4/L52f5GNwOYAyAAQoCAgICAgID4/wA3A6ADIABCmNqQorW/yPw/NwOoAyAAQoCAgICAgID8/wA3A7ADIABCgICAgICAgPz/ADcDuAMgAEKAgICAgICA+P8ANwPAAyAAQpjakKK1v8j8v383A8gDIABC/NKI4/L52f5GNwPQAyAAQvzSiOPy+dn+RjcD2AMgAEL80ojj8vnZ/kY3A+ADIABC/NKI4/L52f5GNwPoAyAAQvzSiOPy+dn+RjcD8AMgAEL80ojj8vnZ/kY3A/gDIABC/NKI4/L52f5GNwOABCAAQvzSiOPy+dn+RjcDiAQgAEKAgICAgICA+P8ANwOQBCAAQpjakKK1v8j8PzcDmAQgAEKAgICAgICA/P8ANwOgBCAAQoCAgICAgID8/wA3A6gEIABCgICAgICAgPj/ADcDsAQgAEKY2pCitb/I9L9/NwO4BCAAQoCAgICAgID4/wA3A8AEIABCgICAgICAgICAfzcDyAQgAEKAgICAgICA+P8ANwPQBCAAQoCAgICAgICAgH83A9gEIABCgICAgICAgPj/ADcD4AQgAEIANwPoBCAAQoCAgICAgID4/wA3A/AEIABCADcD+AQgAEKAgICAgICA+P8ANwOABSAAQpjakKK1v8j0PzcDiAUgAEKAgICAgICA+P8ANwOQBSAAQoCAgICAgID8/wA3A5gFIABCgICAgICAgPj/ADcDoAUgAEKAgICAgICA/P8ANwOoBSAAQoCAgICAgID8/wA3A7AFIABCgICAgICAgPz/ADcDuAUgAEKAgICAgICA/P8ANwPABSAAQoCAgICAgICAgH83A8gFIABCgICAgICAgPz/ADcD0AUgAEIANwPYBSAAQoCAgICAgID8/wA3A+AFIABCgICAgICAgPz/ADcD6AUgAEKAgICAgICA+P8ANwPwBSAAQoCAgICAgID8/wA3A/gFIABCgICAgICAgPz/ADcDgAYgAEKAgICAgICA/P8ANwOIBiACQfCx7QFqIgBCgICAgICAgICAfzcD+AIgAEIANwPwAiAAQvzSiOPy+dn+RjcD6AIgAEL80ojj8vnZ/kY3A+ACIABCmNqQorW/yPy/fzcD2AIgAEIANwPQAiAAQoCAgICAgID8/wA3A8gCIABCgICAgICAgICAfzcDwAIgAEKY2pCitb/I/D83A7gCIABCgICAgICAgICAfzcDsAIgAEL80ojj8vnZ/kY3A6gCIABC/NKI4/L52f5GNwOgAiAAQgA3A5gCIABCgICAgICAgICAfzcDkAIgAEKAgICAgICAgIB/NwOIAiAAQoCAgICAgICAgH83A4ACIABC/NKI4/L52f5GNwP4ASAAQvzSiOPy+dn+RjcD8AEgAEKY2pCitb/I/L9/NwPoASAAQoCAgICAgICAgH83A+ABIABCgICAgICAgPz/ADcD2AEgAEKAgICAgICA/P8ANwPQASAAQpjakKK1v8j8PzcDyAEgAEKAgICAgICAgIB/NwPAASAAQvzSiOPy+dn+RjcDuAEgAEL80ojj8vnZ/kY3A7ABIABC/NKI4/L52f5GNwOoASAAQvzSiOPy+dn+RjcDoAEgAEL80ojj8vnZ/kY3A5gBIABC/NKI4/L52f5GNwOQASAAQvzSiOPy+dn+RjcDiAEgAEL80ojj8vnZ/kY3A4ABIABCmNqQorW/yPy/fzcDeCAAQoCAgICAgICAgH83A3AgAEKAgICAgICA/P8ANwNoIABCgICAgICAgICAfzcDYCAAQpjakKK1v8j8PzcDWCAAQoCAgICAgICAgH83A1AgAEKY2pCitb/I/D83A0ggAEKAgICAgICAgIB/NwNAIABCmNqQorW/yPw/NwM4IABCgICAgICAgICAfzcDMCAAQpjakKK1v8j8v383AyggAEKAgICAgICAgIB/NwMgIABCmNqQorW/yPy/fzcDGCAAQoCAgICAgICAgH83AxAgAEKY2pCitb/I/L9/NwMIIABCgICAgICAgICAfzcDACAAQgA3A4gDIABCADcDgAMgAEL80ojj8vnZ/kY3A5ADIABC/NKI4/L52f5GNwOYAyAAQgA3A6ADIABCmNqQorW/yPw/NwOoAyAAQgA3A7ADIABCgICAgICAgPz/ADcDuAMgAEIANwPAAyAAQpjakKK1v8j8v383A8gDIABC/NKI4/L52f5GNwPQAyAA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0AQgAEKAgICAgICAgIB/NwPYBCAAQoCAgICAgID4/wA3A+AEIABCADcD6AQgAEL80ojj8vnZ/kY3A/AEIABC/NKI4/L52f5GNwP4BCAAQoCAgICAgID4/wA3A4AFIABCgICAgICAgPz/ADcDiAUgAEKAgICAgICA+P8ANwOQBSAAQoCAgICAgID8/wA3A5gFIABCgICAgICAgPz/ADcDoAUgAEKAgICAgICA/P8ANwOoBSAAQoCAgICAgID8/wA3A7AFIABCgICAgICAgPz/ADcDuAUgAEKAgICAgICA/P8ANwPABSAAQoCAgICAgICAgH83A8gFIABCgICAgICAgPz/ADcD0AUgAEIANwPYBSAAQoCAgICAgID8/wA3A+AFIABCgICAgICAgPz/ADcD6AUgAEKAgICAgICA/P8ANwPwBSAAQoCAgICAgID8/wA3A/gFIABCgICAgICAgPz/ADcDgAYgAEKAgICAgICA/P8ANwOIBiACQcCf7QFqIgBCgICAgICAgICAfzcDiAIgAEIANwOAAiAAQvzSiOPy+dn+RjcD+AEgAEL80ojj8vnZ/kY3A/ABIABCgICAgICAgHg3A+gBIABCgICAgICAgPj/ADcD4AEgAEKAgICAgICA/P8ANwPYASAAQoCAgICAgID8/wA3A9ABIABCgICAgICAgPj/ADcDyAEgAEKAgICAgICA+P8ANwPAASAAQvzSiOPy+dn+RjcDuAEgAEL80ojj8vnZ/kY3A7ABIABC/NKI4/L52f5GNwOoASAAQvzSiOPy+dn+RjcDoAEgAEL80ojj8vnZ/kY3A5gBIABC/NKI4/L52f5GNwOQASAAQvzSiOPy+dn+RjcDiAEgAEL80ojj8vnZ/kY3A4ABIABCgICAgICAgHg3A3ggAEKAgICAgICA+P8ANwNwIABCgICAgICAgPj/ADcDaCAAQoCAgICAgID8/wA3A2AgAEKAgICAgICA+P8ANwNYIABCgICAgICAgPj/ADcDUCAAQoCAgICAgID4/wA3A0ggAEIANwNAIABCgICAgICAgPj/ADcDOCAAQgA3AzAgAEKAgICAgICAeDcDKCAAQgA3AyAgAEKAgICAgICAeDcDGCAAQgA3AxAgAEKAgICAgICAeDcDCCAAQoCAgICAgID4/wA3AwAgAEIANwOYAiAAQgA3A5ACIABC/NKI4/L52f5GNwOgAiAAQvzSiOPy+dn+RjcDqAIgAEKAgICAgICA+P8ANwOwAiAAQoCAgICAgID4/wA3A7gCIABCgICAgICAgPz/ADcDwAIgAEKAgICAgICA/P8ANwPIAiAAQoCAgICAgID4/wA3A9ACIABCgICAgICAgHg3A9gCIABC/NKI4/L52f5GNwPgAiAAQvzSiOPy+dn+RjcD6AIgAEIANwPwAiAAQoCAgICAgICAgH83A/gCIABCADcDgAMgAEIANwOIAyAAQvzSiOPy+dn+RjcDkAMgAEL80ojj8vnZ/kY3A5gDIABCgICAgICAgPj/ADcDoAMgAEKAgICAgICA+P8ANwOoAyAAQoCAgICAgID8/wA3A7ADIABCgICAgICAgPz/ADcDuAMgAEKAgICAgICA+P8ANwPAAyAAQoCAgICAgIB4NwPIAyAAQvzSiOPy+dn+RjcD0AMgAEL80ojj8vnZ/kY3A9gDIABC/NKI4/L52f5GNwPgAyAAQvzSiOPy+dn+RjcD6AMgAEL80ojj8vnZ/kY3A/ADIABC/NKI4/L52f5GNwP4AyAAQvzSiOPy+dn+RjcDgAQgAEL80ojj8vnZ/kY3A4gEIABCgICAgICAgPj/ADcDkAQgAEKAgICAgICA+P8ANwOYBCAAQoCAgICAgID8/wA3A6AEIABCgICAgICAgPz/ADcDqAQgAEKAgICAgICA+P8ANwOwBCAAQoCAgICAgIB4NwO4BCAAQoCAgICAgID4/wA3A8AEIABCgICAgICAgICAfzcDyAQgAEKAgICAgICA+P8ANwPQBCAAQoCAgICAgICAgH83A9gEIABCgICAgICAgPj/ADcD4AQgAEIANwPoBCAAQoCAgICAgID4/wA3A/AEIABCADcD+AQgAEKAgICAgICA+P8ANwOABSAAQoCAgICAgID4/wA3A4gFIABCgICAgICAgPj/ADcDkAUgAEKAgICAgICA/P8ANwOYBSAAQoCAgICAgID4/wA3A6AFIABCgICAgICAgHg3A6gFIABCgICAgICAgPz/ADcDsAUgAEKAgICAgICA/P8ANwO4BSAAQoCAgICAgID8/wA3A8AFIABCgICAgICAgPz/ADcDyAUgAEKAgICAgICA/P8ANwPQBSAAQoCAgICAgID8/wA3A9gFIABCgICAgICAgPz/ADcD4AUgAEKAgICAgICA/P8ANwPoBSAAQoCAgICAgID4/wA3A/AFIABCgICAgICAgPj/ADcD+AUgAEKAgICAgICA/P8ANwOABiAAQoCAgICAgID8/wA3A4gGIAJB0NbtAWoiAEKAgICAgICAgIB/NwP4AiAAQgA3A/ACIABC/NKI4/L52f5GNwPoAiAAQvzSiOPy+dn+RjcD4AIgAEKAgICAgICA/P8ANwPYAiAAQoCAgICAgID8/wA3A9ACIABCgICAgICAgPz/ADcDyAIgAEKAgICAgICA/P8ANwPAAiAAQoCAgICAgID8/wA3A7gCIABCgICAgICAgPz/ADcDsAIgAEL80ojj8vnZ/kY3A6gCIABC/NKI4/L52f5GNwOgAiAAQgA3A5gCIABCgICAgICAgICAfzcDkAIgAEKAgICAgICAgIB/NwOIAiAAQoCAgICAgICAgH83A4ACIABC/NKI4/L52f5GNwP4ASAAQvzSiOPy+dn+RjcD8AEgAEKAgICAgICA/P8ANwPoASAAQoCAgICAgID8/wA3A+ABIABCgICAgICAgPz/ADcD2AEgAEKAgICAgICA/P8ANwPQASAAQoCAgICAgID8/wA3A8gBIABCgICAgICAgPz/ADcDwAEgAEL80ojj8vnZ/kY3A7gBIABC/NKI4/L52f5GNwOwASAAQvzSiOPy+dn+RjcDqAEgAEL80ojj8vnZ/kY3A6ABIABC/NKI4/L52f5GNwOYASAAQvzSiOPy+dn+RjcDkAEgAEL80ojj8vnZ/kY3A4gBIABC/NKI4/L52f5GNwOAASAAQoCAgICAgID8/wA3A3ggAEKAgICAgICA/P8ANwNwIABCADcDaCAAQoCAgICAgID4v383A2AgAEIANwNYIABCgICAgICAgPi/fzcDUCAAQvzSiOPy+dn+RjcDSCAAQvzSiOPy+dn+RjcDQCAAQgA3AzggAEKAgICAgICA+L9/NwMwIABCgICAgICAgICAfzcDKCAAQoCAgICAgID4v383AyAgAEL80ojj8vnZ/kY3AxggAEL80ojj8vnZ/kY3AxAgAEIANwMIIABCgICAgICAgPi/fzcDACAAQgA3A4gDIABCADcDgAMgAEL80ojj8vnZ/kY3A5ADIABC/NKI4/L52f5GNwOYAyAAQoCAgICAgID8/wA3A6ADIABCgICAgICAgPz/ADcDqAMgAEKAgICAgICA/P8ANwOwAyAAQoCAgICAgID8/wA3A7gDIABCgICAgICAgPz/ADcDwAMgAEKAgICAgICA/P8ANwPIAyAAQvzSiOPy+dn+RjcD0AMgAEL80ojj8vnZ/kY3A9gDIABC/NKI4/L52f5GNwPgAyAAQvzSiOPy+dn+RjcD6AMgAEL80ojj8vnZ/kY3A/ADIABC/NKI4/L52f5GNwP4AyAAQvzSiOPy+dn+RjcDgAQgAEL80ojj8vnZ/kY3A4gEIABCgICAgICAgPz/ADcDkAQgAEKAgICAgICA/P8ANwOYBCAAQoCAgICAgID8/wA3A6AEIABCgICAgICAgPz/ADcDqAQgAEKAgICAgICA+D83A7AEIABCADcDuAQgAEL80ojj8vnZ/kY3A8AEIABC/NKI4/L52f5GNwPIBCAAQoCAgICAgID4PzcD0AQgAEKAgICAgICAgIB/NwPYBCAAQoCAgICAgID4PzcD4AQgAEIANwPoBCAAQvzSiOPy+dn+RjcD8AQgAEL80ojj8vnZ/kY3A/gEIABCgICAgICAgPg/NwOABSAAQgA3A4gFIABCgICAgICAgPg/NwOQBSAAQgA3A5gFIABCgICAgICAgPz/ADcDoAUgAEKAgICAgICA/P8ANwOoBSAAQoCAgICAgID8/wA3A7AFIABCgICAgICAgPz/ADcDuAUgAEKAgICAgICA/P8ANwPABSAAQoCAgICAgICAgH83A8gFIABCgICAgICAgPz/ADcD0AUgAEIANwPYBSAAQoCAgICAgID8/wA3A+AFIABCgICAgICAgPz/ADcD6AUgAEKAgICAgICA/P8ANwPwBSAAQoCAgICAgID8/wA3A/gFIABCgICAgICAgPz/ADcDgAYgAEKAgICAgICA/P8ANwOIBiACQbDK7QFqIgBCgICAgICAgPz/ADcD2AEgAEKAgICAgICA/P8ANwPQASAAQoCAgICAgID8/wA3A8gBIABCgICAgICAgPz/ADcDwAEgAEL80ojj8vnZ/kY3A7gBIABC/NKI4/L52f5GNwOwASAAQvzSiOPy+dn+RjcDqAEgAEL80ojj8vnZ/kY3A6ABIABC/NKI4/L52f5GNwOYASAAQvzSiOPy+dn+RjcDkAEgAEL80ojj8vnZ/kY3A4gBIABC/NKI4/L52f5GNwOAASAAQoCAgICAgID8/wA3A3ggAEKAgICAgICA/P8ANwNwIABCgICAgICAgPz/ADcDaCAAQoCAgICAgID4/wA3A2AgAEKAgICAgICA/P8ANwNYIABCgICAgICAgPj/ADcDUCAAQvzSiOPy+dn+RjcDSCAAQvzSiOPy+dn+RjcDQCAAQoCAgICAgICAgH83AzggAEKAgICAgICAeDcDMCAAQgA3AyggAEKAgICAgICAeDcDICAAQvzSiOPy+dn+RjcDGCAAQvzSiOPy+dn+RjcDECAAQoCAgICAgID8/wA3AwggAEKAgICAgICA+P8ANwMAIABCADcD6AEgAEIANwPgASAAQvzSiOPy+dn+RjcD8AEgAEL80ojj8vnZ/kY3A/gBIABCgICAgICAgICAfzcDgAIgAEIANwOIAiAAQoCAgICAgICAgH83A5ACIABCgICAgICAgICAfzcDmAIgAEL80ojj8vnZ/kY3A6ACIABC/NKI4/L52f5GNwOoAiAAQgA3A7ACIABCADcDuAIgAEIANwPAAiAAQgA3A8gCIABCADcD0AIgAEIANwPYAiAAQvzSiOPy+dn+RjcD4AIgAEL80ojj8vnZ/kY3A+gCIABCADcD8AIgAEKAgICAgICAgIB/NwP4AiAAQgA3A4gDIABCADcDgAMgAEL80ojj8vnZ/kY3A5gDIABC/NKI4/L52f5GNwOQAyAAQgA3A7gDIABCADcDsAMgAEIANwOoAyAAQgA3A6ADIABCgICAgICAgPz/ADcDiAYgAEKAgICAgICA/P8ANwOABiAAQoCAgICAgID8/wA3A/gFIABCgICAgICAgPz/ADcD8AUgAEKAgICAgICA/P8ANwPoBSAAQoCAgICAgID8/wA3A+AFIABCADcD2AUgAEKAgICAgICA/P8ANwPQBSAAQgA3A8gFIABCgICAgICAgPz/ADcDwAUgAEKAgICAgICA/P8ANwO4BSAAQoCAgICAgID8/wA3A7AFIABCgICAgICAgPz/ADcDqAUgAEKAgICAgICA/P8ANwOgBSAAQoCAgICAgID8/wA3A5gFIABCgICAgICAgPj/ADcDkAUgAEKAgICAgICA/P8ANwOIBSAAQoCAgICAgID4/wA3A4AFIABC/NKI4/L52f5GNwP4BCAAQvzSiOPy+dn+RjcD8AQgAEIANwPoBCAAQoCAgICAgID4/wA3A+AEIABCgICAgICAgICAfzcD2AQgAEKAgICAgICA+P8ANwPQBCAAQvzSiOPy+dn+RjcDyAQgAEL80ojj8vnZ/kY3A8AEIABCgICAgICAgPz/ADcDuAQgAEKAgICAgICA+P8ANwOwBCAAQoCAgICAgID8/wA3A6gEIABCgICAgICAgPz/ADcDoAQgAEKAgICAgICA/P8ANwOYBCAAQoCAgICAgID8/wA3A5AEIABC/NKI4/L52f5GNwOIBCAAQvzSiOPy+dn+RjcDgAQgAEL80ojj8vnZ/kY3A/gDIABC/NKI4/L52f5GNwPwAyAAQvzSiOPy+dn+RjcD6AMgAEL80ojj8vnZ/kY3A+ADIABC/NKI4/L52f5GNwPYAyAAQvzSiOPy+dn+RjcD0AMgAEKAgICAgICA/P8ANwPIAyAAQoCAgICAgID8/wA3A8ADQQAhAgsgAUFAayQBIAILDQAjAEG40bcBahDwDwuICQEFfAJAIAJBA0YNACMAQcKwBmogAkEDQQMQjBsNAEEADwsCfwJAI8IBIAEoAgAiAigCBEYEQCACKwMIIQMMAQsgAhDGCyIDRAAAAAAAAPC/Yg0ARAAAAAAAAPC/IQNBABC1Gg0BGgsCQCPCASABKAIEIgIoAgRGBEAgAisDCCEGDAELIAIQxgsiBkQAAAAAAADwv2INAEQAAAAAAADwvyEGQQAQtRoNARoLAkACQAJAAkAjwgEgASgCCCIBKAIERgRAIAErAwghBwwBCyABEMYLIgdEAAAAAAAA8L9iDQBBABC1Gg0EGgwBCyADRAAAAAAAAAAAZQ0AIANEAAAAAAAA8D9mDQAgB0QAAAAAAAAAAGUNAAJ8IANEAAAAAAAA4L+gIgSZRDMzMzMzM9s/ZQRARB+F61G4Hsc/IAQgBKKhIgNEaUuYyn5qtECiRHausXxFDtxAoCADokS+9GSqfDHjQKAgA6JEZlLW1XK31ECgIAOiRJ/IdS4yErVAoCADokT3s8j9fnmFQKAgA6JEtRpuOBsoRUCgIAOiRAAAAAAAAPA/oCIFRAAAAAAAAAAAYQ0CIAQgA0Rekn1vKZqjQKJE5EUua9JS4ECgIAOiRCCPt1UcbPBAoCADokQqdZuGPmzmQKAgA6JEHedOzdjRykCgIAOiRMzAEyJdzp5AoCADokRuQxqLiKRgQKAgA6JEde+eHtkYC0CgoiAFowwBCyADRAAAAAAAAPA/IAOhIAREAAAAAAAAAABlGyIDRAAAAAAAAAAAZQ0BIANEAAAAAAAA8D9mDQECfCADEOtBmp8iA0QAAAAAAAAUQGUEQCADRJqZmZmZmfm/oCIDROQ5ZGg/DRI+okQoJ9+/jPFBP6AgA6JEvxerfnogjz+gIAOiREDwlDMS9cI/oCADokTJhTPykhLmP6AgA6JEM2ZS5njS+j+gIAOiREmkRrvvbABAoCADokQAAAAAAADwP6AhBSADROmst8BaYUk/okRn7EVs60SXP6AgA6JEN1y4uavyzj+gIAOiRLJ1UwjMU/Q/oCADokTEAj0ayy4NQKAgA6JEaiViFPcTF0CgIAOiRJuxykh3hRJAoCADokRqUun9Zcb2P6AMAQsgA0QAAAAAAAAUwKAiA0SQwfjxv2niPKJE4LlA90YUgz6gIAOiRL90Y0ksXPM+oCADokTXxZ2XvMhJP6AgA6JEKkYVMvl2jj+gIAOiRPtDNBjrhsE/oCADokR/18dP0zHjP6AgA6JEAAAAAAAA8D+gIQUgA0STv5PWdPuKPqJEKuBZzMZu/D6gIAOiREVTQggZXFQ/oCADokTnTjsZQSubP6AgA6JEz1VSMdn60j+gIAOiREWkH0amjvw/oCADokQDUIdu6toVQKAgA6JEJuU+wbGhGkCgCyEDIAVEAAAAAAAAAABhDQEgAyAFoyIDmiADIAREAAAAAAAAAABjGwsgB6IgBqAiA0QAAAAAAADwv2INAgwBCyO3ASgCACMAQeT0AWoQtBoLQQAQtRoNARpEAAAAAAAA8L8hAwsgAxDCCwsL7xUBBn8jAEGQ0rcBakH1BxD0DyIERQRAQQAPCyMAIgBB3NW3AWogAEGQ1LcBajYCgAEgAEHE0rcBaiO0ATYCgAEgAEH02LcBaiAAQajXtwFqIgA2AoABAkACQCAEIAAQ3BxBAEgNACAEIwBB9Ni3AWoQ3BxBAEgNACAEIwBBwNq3AWoQ3BxBAEgNACAEIwBBjNy3AWoQ3BxBAEgNACAEIwBBkNS3AWoQ3BxBAEgNACAEIwBB3NW3AWoQ3BxBAEgNACMAQcTStwFqEMgSQQBIDQAjAEGM3LcBaiIAKAKEASEBIABBACAAKAKYAREAACIARQ0AIABCgICAgBA3AhAgAEL/////DzcCCCABIwBB3sQEaiAAEL0OIQIgACAAKAIAQQFrIgM2AgAgAkEASARAIAMNASAAENUQDAELIANFBEAgABDVEAsjAEGM3LcBaiIAQQAgACgCmAERAAAiAEUNACAAQgA3AhAgAEL/////n8DNskQ3AgggASMAQe+SBWogABC9DiECIAAgACgCAEEBayIDNgIAIAJBAEgEQCADDQEgABDVEAwBCyADRQRAIAAQ1RALIwBBjNy3AWoiAEEAIAAoApgBEQAAIgBFDQAgAEL/ooWA8MfQBzcCECAAQv//////v7LNOzcCCCABIwBB4CdqIAAQvQ4hASAAIAAoAgBBAWsiAjYCACABQQBIBEAgAg0BIAAQ1RAMAQsgAkUEQCAAENUQCyMAQajXtwFqIgAoAoQBIQEgAEEAIAAoApgBEQAAIgBFDQAgAEF/NgIIIABBgIKECDYADSABIwBB75IFaiAAEL0OIQIgACAAKAIAQQFrIgM2AgAgAkEASARAIAMNASAAENUQDAELIANFBEAgABDVEAsjAEGo17cBaiIAQQAgACgCmAERAAAiAEUNACAAQX82AgggAEGnnrD4ATYADSABIwBB4CdqIAAQvQ4hAiAAIAAoAgBBAWsiAzYCACACQQBIBEAgAw0BIAAQ1RAMAQsgA0UEQCAAENUQCyMAQYzctwFqIgBBACAAKAKYAREAACIARQ0AIABCADcCECAAQv////8fNwIIIAEjAEHexARqIAAQvQ4hASAAIAAoAgBBAWsiAjYCACABQQBIBEAgAg0BIAAQ1RAMAQsgAkUEQCAAENUQCyMAQcDatwFqIgAoAoQBIQEgAEEAIAAoApgBEQAAIgBFDQAgAEEANgANIABBfzYCCCAAQQA6AAwgAEEANgAQIAEjAEHvkgVqIAAQvQ4hAiAAIAAoAgBBAWsiAzYCACACQQBIBEAgAw0BIAAQ1RAMAQsgA0UEQCAAENUQCyMAQcDatwFqIgBBACAAKAKYAREAACIARQ0AIABBfzYCCCAAQoCu7NnzwdAfNwIMIAEjAEHgJ2ogABC9DiECIAAgACgCAEEBayIDNgIAIAJBAEgEQCADDQEgABDVEAwBCyADRQRAIAAQ1RALIwBBjNy3AWoiAEEAIAAoApgBEQAAIgBFDQAgAEKAgICAEDcCECAAQv////8PNwIIIAEjAEHexARqIAAQvQ4hASAAIAAoAgBBAWsiAjYCACABQQBIBEAgAg0BIAAQ1RAMAQsgAkUEQCAAENUQCyMAQfTYtwFqIgAoAoQBIQEgAEEAIAAoApgBEQAAIgBFDQAgAEL/////j4DAgAE3AgggAEEANgARIABBAToAECAAQQA2ABQgASMAQe+SBWogABC9DiECIAAgACgCAEEBayIDNgIAIAJBAEgEQCADDQEgABDVEAwBCyADRQRAIAAQ1RALIwBB9Ni3AWoiAEEAIAAoApgBEQAAIgBFDQAgAEF/NgIIIABCgM684PDjxZ07NwIMIABBj4T9ATYAFCABIwBB4CdqIAAQvQ4hAiAAIAAoAgBBAWsiAzYCACACQQBIBEAgAw0BIAAQ1RAMAQsgA0UEQCAAENUQCyMAQYzctwFqIgBBACAAKAKYAREAACIARQ0AIABCgICAgBA3AhAgAEL/////DzcCCCABIwBB3sQEaiAAEL0OIQEgACAAKAIAQQFrIgI2AgAgAUEASARAIAINASAAENUQDAELIAJFBEAgABDVEAsjACIAQdzVtwFqKAKEASEDIABBjNy3AWoiAEEAIAAoApgBEQAAIgBFDQAgAEIANwIQIABC/////w83AggjAEHc1bcBaiIBQQAgASgCmAERAAAhASAAKAIAIQIgACABBH8gAUEANgIMIAEgADYCCCACQQFqBSACC0EBayICNgIAIAJFBEAgABDVEAsgAUUNACADIwBB45wJaiABEL0OQQBIBEAgASABKAIAQQFrIgA2AgAgAA0BIAEQ1RAMAQsjACIAQYDd7QFqIAE2AgAgAEGM3LcBaiIAQQAgACgCmAERAAAiAEUNACAAQjw3AhAgAEJ/NwIIIwBB3NW3AWoiAUEAIAEoApgBEQAAIQEgACgCACECIAAgAQR/IAFBADYCDCABIAA2AgggAkEBagUgAgtBAWsiAjYCACACRQRAIAAQ1RALIAFFDQAgAyMAQe+SBWogARC9DiEAIAEgASgCAEEBayICNgIAIABBAEgEQCACDQEgARDVEAwBCyACRQRAIAEQ1RALIwBBjNy3AWoiAEEAIAAoApgBEQAAIgBFDQAgAELEogU3AhAgAEL/////DzcCCCMAQdzVtwFqIgFBACABKAKYAREAACEBIAAoAgAhAgJAIAFFBEAgAkEBayECDAELIAFBADYCDCABIAA2AggLIAAgAjYCACACRQRAIAAQ1RAL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1wZqQQAQrhoaDAMLQQRBAiAEGwwBCyAEQegHbiEEQQMLIQcgAC0ADSECIAAtAA4hASAALQAPIQYgAyAENgIMIAMgBjYCCCADIAE2AgQgAyACNgIAIAMjACAHQQN0akHU77cBaigCACADEKQUIgQ2AhggBEUNACAALQAMRQRAIAQhBQwBCyAAKAIUIgAjsgFGBEAgBCEFDAELIANBIGojAEGiowtqIAAjsgEQtyhBAEgEQCAEIAQoAgBBAWsiADYCACAADQEgBBDVEAwBCyADQRhqIANBIGoQjxQQnRUgAygCGCEFCyADQZABaiQBIAULywEBA38jAUFAaiIDJAEgAyADQTxqNgIwAkAgASACIwAiBEG2nQdqIARB+O+3AWogA0EwahD6GkUNACAALQANIQQgAC0ADiECIAAtAA8hASADQX82AiAgA0KAgICAEDcDGCADIAE2AhQgAyACNgIQIAMgBDYCDCADQQE2AgggA0LsjoCAEDcDACMAQY/eBWogAxDNHCIERQ0AIAAgAygCPCAEI7IBEKwoIQUgBCAEKAIAQQFrIgA2AgAgAA0AIAQQ1RALIANBQGskASAFCx0AI7IBIQEgAC0ADAR/IAAoAhQFIAELI7IBELgoCyQAI7IBIQEgAC0ADAR/IAAoAhQFIAELIwBB1coAaiOyARCDKAvrAgEDfyMBQdAAayIDJAEgAyAALQANNgJMIAMgAC0ADjYCSCADIAAtAA82AkQgAyAALQASIAAtABFBCHQgAC0AEEEQdHJyNgJAI7IBIQQgAyAALQAMBH8gACgCFAUgBAs2AjwgAyAALQATNgI4IAMgA0E8ajYCMCADIANBOGo2AjQgAyADQcwAajYCICADIANByABqNgIkIAMgA0HEAGo2AiggAyADQUBrNgIsAkAgASACIwAiBEGQnAhqIARBgPC3AWogA0EgahD6GkUNACADKAI4QQJPBEAjtwEoAgAjAEGYvwtqELQaDAELIAMgAygCPDYCECADIAMoAkw2AgAgAyADKAJINgIEIAMgAygCRDYCCCADIAMoAkA2AgwjAEHVtApqIAMQzRwiBEUNACAAKAIEIARBABDxKCIFBEAgBSADKAI4OgATCyAEIAQoAgBBAWsiADYCACAADQAgBBDVEAsgA0HQAGokASAFC5ADAQV/IwFBQGoiAiQBAkACQCABKAIE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QQAgA0EMahCIGkEASA0AAkAgAygCDCICDQAjACICQdTd7QFqKAIAIQEgAkGs9LcBakEAEJcIIgJFDQEgAkEYaiIFIAEpAhg3AgAgAiABKQIINwIIIAIgASgCKDYCKCACIAEpAiA3AiAgAiABKQIQNwIQIAJBADYCHCABKAI0IQEgBUEANgIAIAIgATYCNCMAQdjd7QFqKAIAIAIQiRoiAUUEQCACIAIoAgBBAWsiATYCACABDQIgAhDVEAwCCyABIAEoAgBBAWsiBDYCACAEDQAgARDVEAsgAiACKAIAQQFrIgE2AgAgAUUEQCACENUQC0EAIQQjAEHg8rcBahCgECIBRQ0AIAFBMDoADCABQX82AgggASABQSRqNgIgIAFCgICAgMAANwIYIAFCADcCECABQQxqIABBDGogAkEIaiADQQhqENI3IAIgAygCCBCYKUUEQCABIQQMAQsgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIANBEGokASAEC54DAQV/IwFBEGsiAyQBIANBADYCCAJAIwBB2N3tAWooAgBBACADQQxqEIgaQQBIDQACQCADKAIMIgINACMAIgJB1N3tAWooAgAhASACQaz0twFqQQAQlwgiAkUNASACQRhqIgUgASkCGDcCACACIAEpAgg3AgggAiABKAIoNgIoIAIgASkCIDcCICACIAEpAhA3AhAgAkEANgIcIAEoAjQhASAFQQA2AgAgAiABNgI0IwBB2N3tAWooAgAgAhCJGiIBRQRAIAIgAigCAEEBayIBNgIAIAENAiACENUQDAILIAEgASgCAEEBayIENgIAIAQNACABENUQCyACIAIoAgBBAWsiATYCACABRQRAIAIQ1RALQQAhBCMAQeDytwFqEKAQIgFFDQAgAUEwOgAMIAFBfzYCCCABIAFBJGo2AiAgAUKAgICAwAA3AhggAUIANwIQIAFBDGogAEEMaiACQQhqIANBCGoQ0DcgAiADKAIIEJgpRQRAIAEhBAwBCyABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgA0EQaiQBIAQLCwAgAEEMahCcN0ULoAIBBX8jAUEQayIEJAECQCMAQdjd7QFqKAIAQQAgBEEMahCIGkEASA0AAkAgBCgCDCIBDQAjACIBQdTd7QFqKAIAIQIgAUGs9LcBakEAEJcIIgFFDQEgAUEYaiIFIAIpAhg3AgAgASACKQIINwIIIAEgAigCKDYCKCABIAIpAiA3AiAgASACKQIQNwIQIAFBADYCHCACKAI0IQIgBUEANgIAIAEgAjYCNCMAQdjd7QFqKAIAIAEQiRoiAkUEQCABIAEoAgBBAWsiADYCACAADQIgARDVEAwCCyACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgASABKAIAQQFrIgM2AgAgA0UEQCABENUQCyAAIAFBARCqKSEDCyAEQRBqJAEgAwuVDQMNfwF+AXwjAUEwayIHJAEgB0EANgIEAkAgAEEMaiIAEJs3BEAgABCXNwRAI7cBKAIAIwBBpfkDahC0GkEAIQEMAgsjwAEoAgAjAEGC+QNqELQaQQAhAQwBCxCPNyIERQRAEM4aGkEAIQEMAQsgB0EgaiIFIAEpAiA3AwAgByABKAIoNgIoIAcgASkCGDcDGCAHIAEpAhA3AxAgASkCCCEQIAUgAjYCACAHIBA3AwggBCAAIAdBCGogB0EEahD3NwJAIAEgBygCBBCYKQ0AQQAhASAHQQA2AiwgB0EANgIEIAdBLGohCCAHQQRqIQsjAUGwAmsiCSQBIAlCgICAgIAINwIUIAlCADcCDCAJQTA6AAggCSAJQSBqNgIcAkACQAJAAn8CQAJAAkACQCAELQAAIgBBDnFFBEAgBCgCFCIFIAQoAgwiBkECdGpBBGsoAgAiAkUNAQJAIAZBAEwNAANAIAUgA0ECdGooAgAiDARAIANBCWwhDSAMQQpwDQIDQCANQQFqIQ0gDEEKbiIMQQpwRQ0ACwwCCyADQQFqIgMgBkcNAAsLIAQoAgQgDWpBAE4NAgsgCyALKAIAQYACcjYCAEF/IQMMBwtBACAIKAIAIgMNAxoMAQtBACAIKAIAIgMNAhogAkUNAAJ/IAQoAgQgBCgCCGq4RAAAAAAAANBBEO1BoyIRRAAAAAAAAPBBYyARRAAAAAAAAAAAZnEEQCARqwwBC0EACyEDIBFEAADA////70FkRQRAIANBAWoiCkF/Rw0CCyALIAsoAgBBgAJyNgIAQX8hAwwFC0EBIQoLIAggCkEEEIs3IgM2AgAgA0UNASAELQAAIQBBAQshDAJAIABBDnENACAEKAIUIAQoAgxBAnRqQQRrKAIADQAgA0EANgIAQQEhAwwDCwJAAkAgBCgCBCIDQQBOBEAgCUEIaiAEIAMgCxC2Nw0BDAILIAlBCGogBEEAIANrIAsQxDdBf0YNAQsgCiEDIAkoAhwhDyAJKAIUIQIjAUEQayIOJAEgCCgCACAPIAJBAWsiAEECdGooAgA2AgACQCAARQRAQQEhAgwBCyACQQJrIQBBASECA0AgACENAkACQAJAAkACfyAIKAIAIQBBACEGQQAhCkEAIAJFDQAaA0AgACAGQQJ0IgVqIAogACAFajUCAEKAlOvcA34iEKdqIgUgBa0gBSAKSa1CIIYgEHxCgICAgHCDhEIeiCIQpyIKQR50azYCACAGQQFqIgYgAkcNAAsgEKcLIgZFBEAgCCgCACEFIAIhAAwBCwJAIAIgA0kEQCACQQFqIQAgCCgCACEFDAELIA5BADoADiAIIAgoAgAgAkEBaiIAQQQgDkEOahCNNyIFNgIAIAAhAyAOLQAODQILIAUgAkECdGogBjYCAAsgBSAFKAIAIgYgDyANQQJ0aigCAGoiAkGAgICABEEAIAIgBkkgAkGAgICABE9yIgobazYCAAJAIApFDQAgAEECSQ0AQQEhAgNAIAUgAkECdGoiBkEAIAYoAgBBAWoiBiAGQYCAgIAERiIKGzYCACAGQYCAgIAERw0BIAJBAWoiAiAASQ0ACwsgCiIFRQRAIAAhAgwDCyAAIANJBEAgAEEBaiECIAgoAgAhBgwCCyAOQQA6AA8gCCAIKAIAIABBAWoiAkEEIA5BD2oQjTciBjYCACACIQMgDi0AD0UNAQtBfyECDAMLIAYgAEECdGogBTYCAAsgDUEBayEAIA0NAAsLIA5BEGokASACIgNBf0cNAgsgDEUNACAIKAIAI8UBKAIAEQMAIAhBADYCAAsgCyALKAIAQYAEcjYCAEF/IQMLIAktAAgiDEEfTQR/IAkoAhwjxQEoAgARAwAgCS0ACAUgDAtBEHENACAJQQhqI8UBKAIAEQMACyAJQbACaiQBAkACQAJAAkAgAyIAQQFqDgMAAgECCxDOGhoMAgsgBBCfNyEBIAcoAiwiACgCACECIAAjxQEoAgARAwAgBBCgNyABIAJsEJsNIQEMAwsgABCZDSEBIAcoAiwhAiABRQRAIAIjxQEoAgARAwAMAgsgAUEMaiACIABBAnQQzj4aIAIjxQEoAgARAwAgAEEfdSAAcSEFA0ACQCAAIgJBAEwEQCAFIQIMAQsgASACQQFrIgBBAnRqKAIMRQ0BCwsgASACNgIIIAQQmDdFDQAgBBCcNw0AIAFBACACazYCCAsgBBCgNwwBCyAEEKA3QQAhAQsgB0EwaiQBIAELgAEBAn8CfyAAQQxqIgEQlzcEQCABEJo3BEAjtwEoAgAjAEGRsgFqELQaQQAPCyABEJg3BEAjAEGToQVqEI8UDAILIwBBt6EFahCPFAwBCyAAEJUpCyIARQRAQQAPCyAAEMMLIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC48GAQV/IwFBEGsiBSQBIAVBADYCCAJAIwBB2N3tAWooAgBBACAFQQxqEIgaQQBIDQACQCAFKAIMIgINACMAIgJB1N3tAWooAgAhAyACQaz0twFqQQAQlwgiAkUNASACQRhqIgYgAykCGDcCACACIAMpAgg3AgggAiADKAIoNgIoIAIgAykCIDcCICACIAMpAhA3AhAgAkEANgIcIAMoAjQhAyAGQQA2AgAgAiADNgI0IwBB2N3tAWooAgAgAhCJGiIDRQRAIAIgAigCAEEBayIANgIAIAANAiACENUQDAILIAMgAygCAEEBayIENgIAIAQNACADENUQCyACIAIoAgBBAWsiBDYCACAERQRAIAIQ1RALAkACQCAAKAIEIgMjAEHg8rcBakcEQCADIwBB4PK3AWoQuRJFDQELIAAgACgCAEEBajYCAAwBCyAAKAIELQBXQQFxRQRAI7oBIgQgBCgCAEEBajYCAAwCCyMAQeDytwFqIAAgAhCXKSIADQBBACEEDAELAkACQCABKAIEIgMjAEHg8rcBakcEQCADIwBB4PK3AWoQuRJFDQELIAEgASgCAEEBajYCAAwBCwJAIAEoAgQtAFdBAXFFBEAjugEiBCAEKAIAQQFqNgIADAELIwBB4PK3AWogASACEJcpIgENAUEAIQQLIAAgACgCAEEBayICNgIAIAINASAAENUQDAELIwBB4PK3AWoQoBAiA0UEQCAAIAAoAgBBAWsiAjYCACACRQRAIAAQ1RALIAEgASgCAEEBayICNgIAQQAhBCACDQEgARDVEAwBCyADQTA6AAwgA0F/NgIIIAMgA0EkajYCICADQoCAgIDAADcCGCADQgA3AhAgA0EMaiAAQQxqIAFBDGogAkEIaiAFQQhqENs3IAAgACgCAEEBayIENgIAIARFBEAgABDVEAsgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCyACIAUoAggQmClFBEAgAyEEDAELIAMgAygCAEEBayICNgIAQQAhBCACDQAgAxDVEAsgBUEQaiQBIAQLjwYBBX8jAUEQayIFJAEgBUEANgIIAkAjAEHY3e0BaigCAEEAIAVBDGoQiBpBAEgNAAJAIAUoAgwiAg0AIwAiAkHU3e0BaigCACEDIAJBrPS3AWpBABCXCCICRQ0BIAJBGGoiBiADKQIYNwIAIAIgAykCCDcCCCACIAMoAig2AiggAiADKQIgNwIgIAIgAykCEDcCECACQQA2AhwgAygCNCEDIAZBADYCACACIAM2AjQjAEHY3e0BaigCACACEIkaIgNFBEAgAiACKAIAQQFrIgA2AgAgAA0CIAIQ1RAMAgsgAyADKAIAQQFrIgQ2AgAgBA0AIAMQ1RALIAIgAigCAEEBayIENgIAIARFBEAgAhDVEAsCQAJAIAAoAgQiAyMAQeDytwFqRwRAIAMjAEHg8rcBahC5EkUNAQsgACAAKAIAQQFqNgIADAELIAAoAgQtAFdBAXFFBEAjugEiBCAEKAIAQQFqNgIADAILIwBB4PK3AWogACACEJcpIgANAEEAIQQMAQsCQAJAIAEoAgQiAyMAQeDytwFqRwRAIAMjAEHg8rcBahC5EkUNAQsgASABKAIAQQFqNgIADAELAkAgASgCBC0AV0EBcUUEQCO6ASIEIAQoAgBBAWo2AgAMAQsjAEHg8rcBaiABIAIQlykiAQ0BQQAhBAsgACAAKAIAQQFrIgI2AgAgAg0BIAAQ1RAMAQsjAEHg8rcBahCgECIDRQRAIAAgACgCAEEBayICNgIAIAJFBEAgABDVEAsgASABKAIAQQFrIgI2AgBBACEEIAINASABENUQDAELIANBMDoADCADQX82AgggAyADQSRqNgIgIANCgICAgMAANwIYIANCADcCECADQQxqIABBDGogAUEMaiACQQhqIAVBCGoQ1jcgACAAKAIAQQFrIgQ2AgAgBEUEQCAAENUQCyABIAEoAgBBAWsiADYCACAARQRAIAEQ1RALIAIgBSgCCBCYKUUEQCADIQQMAQsgAyADKAIAQQFrIgI2AgBBACEEIAINACADENUQCyAFQRBqJAEgBAu2CwIMfwF8An8jAEHg8rcBaiAARgRAIwBB4PK3AWoQoBAMAQsgAEEAIAAoApgBEQAACyIABEAgAEEwOgAMIABBfzYCCCAAIABBJGoiBjYCICAAQoCAgIDAADcCGCAAQgA3AhAgAEEMaiEEIAEoAggiCEUEQCAAQQE2AhggBkIANwIAIARBABCkNyAAQQA2AhAgBBChNyAADwsgAUEMaiEBIAhBH3YhBiAIIAhBH3UiC3MgC2siCEEBRgRAIAAgASgCACIBQYCU69wDbiIINgIoIABBAUECIAFBgJTr3ANJGzYCGCAAIAEgCEGA7JSjfGxqNgIkIAQgBhCkNyAAQQA2AhAgBBChNyAEIAIgAxCqNyAADwsgBiELIAIhDyADIQYjAUEQayIKJAECf0QAAAAAAADQQRDtQUQAAAAAAAAiQKMgCCICuKIiEJlEAAAAAAAA4EFjBEAgEKoMAQtBgICAgHgLIQMCQAJAIBBEAAAAcG6ElkFkRQRAIANBAWoiCEH/////B0cNAQsCQCAELQAAIgJBIHENACO/ASgCACIDIAQoAhBODQAgCkEAOgAOIAQgBCgCFCADQQQgCkEOahCNNzYCFCAKLQAORQRAIAQjvwEoAgA2AhALIAQtAAAhAgsgBEEANgIMIARCADcCBCAEIAJB8AFxQQRyOgAAIAYgBigCAEGAAnI2AgAMAQsCQCO/ASgCACIDIAggAyAIShsiAyAEKAIQIgdGDQACfyAELQAAQSBxBEAgAyAHTA0CIAQgAyAGEJA3DAELIAQgAyAGEJE3C0UNAQsgAkEEEIs3IgcEQAJAIAJFDQBBACEDIAJBBE8EQCACQXxxIQwDQCAHIANBAnQiBWogASAFaigCADYCACAHIAVBBHIiDWogASANaigCADYCACAHIAVBCHIiDWogASANaigCADYCACAHIAVBDHIiBWogASAFaigCADYCACADQQRqIQMgDkEEaiIOIAxHDQALCyACQQNxIgxFDQADQCAHIANBAnQiBWogASAFaigCADYCACADQQFqIQMgCUEBaiIJIAxHDQALC0EAIQMDQAJAIANBAWohAQJAIAMgCEkNACABIQgjvwEoAgAiBSABIAEgBUgbIgUgBCgCECIJRg0AAn8gBC0AAEEgcQRAIAUgCUwNAiAEIAUgBhCQNwwBCyAEIAUgBhCRNwsNAEF/IQEMAQsgByAHIAJBgJTr3ANBgICAgAQQ7jYhBSAEKAIUIANBAnRqIAU2AgBBASACIAJBAEobIQUCfwNAIAIiA0EBTARAIAVBAnQgB2pBBGsoAgAhCSAFDAILIAcgA0EBayICQQJ0aigCAEUNAAtBASEJIAMLIQIgASEDIAkNAQsLIAcjxQEoAgARAwAgASICQX9GDQEgBCgCFCEDIAQgAjYCDCAEQQA2AgQgBCAELQAAQXBxIAtyIgc6AAAgBAJ/IAJBAnQgA2pBBGsoAgAiAyO9ASgCEEkEQCADI70BKAIISQRAQQFBAiO9ASgCBCADSxsMAgtBA0EEI70BKAIMIANLGwwBCyADI70BKAIYSQRAQQVBBiO9ASgCFCADSxsMAQsgAyO9ASgCIEkEQEEHQQgjvQEoAhwgA0sbDAELQQlBCiO9ASgCJCADSxsLIAJBCWxqQQlrNgIIAkAjvwEoAgAiAyACIAIgA0gbIgIgBCgCECIDRg0AIAdBIHEEQCACIANMDQEgBCACIAYQkDcaDAELIAQgAiAGEJE3GgsgBCAPIAYQqjcMAQsCQCAELQAAIgJBIHENACO/ASgCACIDIAQoAhBODQAgCkEAOgAPIAQgBCgCFCADQQQgCkEPahCNNzYCFCAKLQAPRQRAIAQjvwEoAgA2AhALIAQtAAAhAgsgBEEANgIMIARCADcCBCAEIAJB8AFxQQRyOgAAIAYgBigCAEGABHI2AgALIApBEGokAQsgAAudBAEDfyMBQRBrIgQkASAEI7IBNgIIIARBADYCBCAEIARBCGo2AgACQAJAIAEgAiMAIgNBsbQKaiADQZyFuAFqIAQQ+hpFDQACQCAEKAIIIgMjsgFGBEBBACEDIwBB2N3tAWooAgBBACAEQQxqEIgaQQBIDQMCQCAEKAIMIgINACMAIgJB1N3tAWooAgAhASACQaz0twFqQQAQlwgiAkUNBCACQRhqIgUgASkCGDcCACACIAEpAgg3AgggAiABKAIoNgIoIAIgASkCIDcCICACIAEpAhA3AhAgAkEANgIcIAEoAjQhASAFQQA2AgAgAiABNgI0IwBB2N3tAWooAgAgAhCJGiIBRQRAIAIgAigCAEEBayIBNgIAIAENBSACENUQDAQLIAEgASgCAEEBayIDNgIAIAMNACABENUQCyAEIAI2AgggAiACKAIAQQFrIgM2AgAgAw0BIAIQ1RAMAQsgAygCBCIDIwBBrPS3AWpGDQAgAyMAQaz0twFqELkSDQAjtQEoAgAjAEG5PWoQtBoMAQsjAEHg8rcBahCgECIDRQ0AIANBMDoADCADQX82AgggAyADQSRqNgIgIANCgICAgMAANwIYIANCADcCECADQQxqIABBDGogBCgCCEEIaiAEQQRqENw3IAQoAgggBCgCBBCYKUUNASADIAMoAgBBAWsiAjYCACACDQAgAxDVEAtBACEDCyAEQRBqJAEgAwudBAEDfyMBQRBrIgQkASAEI7IBNgIIIARBADYCBCAEIARBCGo2AgACQAJAIAEgAiMAIgNBsbQKaiADQaSFuAFqIAQQ+hpFDQACQCAEKAIIIgMjsgFGBEBBACEDIwBB2N3tAWooAgBBACAEQQxqEIgaQQBIDQMCQCAEKAIMIgINACMAIgJB1N3tAWooAgAhASACQaz0twFqQQAQlwgiAkUNBCACQRhqIgUgASkCGDcCACACIAEpAgg3AgggAiABKAIoNgIoIAIgASkCIDcCICACIAEpAhA3AhAgAkEANgIcIAEoAjQhASAFQQA2AgAgAiABNgI0IwBB2N3tAWooAgAgAhCJGiIBRQRAIAIgAigCAEEBayIBNgIAIAENBSACENUQDAQLIAEgASgCAEEBayIDNgIAIAMNACABENUQCyAEIAI2AgggAiACKAIAQQFrIgM2AgAgAw0BIAIQ1RAMAQsgAygCBCIDIwBBrPS3AWpGDQAgAyMAQaz0twFqELkSDQAjtQEoAgAjAEG5PWoQtBoMAQsjAEHg8rcBahCgECIDRQ0AIANBMDoADCADQX82AgggAyADQSRqNgIgIANCgICAgMAANwIYIANCADcCECADQQxqIABBDGogBCgCCEEIaiAEQQRqEOU3IAQoAgggBCgCBBCYKUUNASADIAMoAgBBAWsiAjYCACACDQAgAxDVEAtBACEDCyAEQRBqJAEgAwudBAEDfyMBQRBrIgQkASAEI7IBNgIIIARBADYCBCAEIARBCGo2AgACQAJAIAEgAiMAIgNBsbQKaiADQayFuAFqIAQQ+hpFDQACQCAEKAIIIgMjsgFGBEBBACEDIwBB2N3tAWooAgBBACAEQQxqEIgaQQBIDQMCQCAEKAIMIgINACMAIgJB1N3tAWooAgAhASACQaz0twFqQQAQlwgiAkUNBCACQRhqIgUgASkCGDcCACACIAEpAgg3AgggAiABKAIoNgIoIAIgASkCIDcCICACIAEpAhA3AhAgAkEANgIcIAEoAjQhASAFQQA2AgAgAiABNgI0IwBB2N3tAWooAgAgAhCJGiIBRQRAIAIgAigCAEEBayIBNgIAIAENBSACENUQDAQLIAEgASgCAEEBayIDNgIAIAMNACABENUQCyAEIAI2AgggAiACKAIAQQFrIgM2AgAgAw0BIAIQ1RAMAQsgAygCBCIDIwBBrPS3AWpGDQAgAyMAQaz0twFqELkSDQAjtQEoAgAjAEG5PWoQtBoMAQsjAEHg8rcBahCgECIDRQ0AIANBMDoADCADQX82AgggAyADQSRqNgIgIANCgICAgMAANwIYIANCADcCECADQQxqIABBDGogBCgCCEEIaiAEQQRqEOg3IAQoAgggBCgCBBCYKUUNASADIAMoAgBBAWsiAjYCACACDQAgAxDVEAtBACEDCyAEQRBqJAEgAwudBAEDfyMBQRBrIgQkASAEI7IBNgIIIARBADYCBCAEIARBCGo2AgACQAJAIAEgAiMAIgNBsbQKaiADQbSFuAFqIAQQ+hpFDQACQCAEKAIIIgMjsgFGBEBBACEDIwBB2N3tAWooAgBBACAEQQxqEIgaQQBIDQMCQCAEKAIMIgINACMAIgJB1N3tAWooAgAhASACQaz0twFqQQAQlwgiAkUNBCACQRhqIgUgASkCGDcCACACIAEpAgg3AgggAiABKAIoNgIoIAIgASkCIDcCICACIAEpAhA3AhAgAkEANgIcIAEoAjQhASAFQQA2AgAgAiABNgI0IwBB2N3tAWooAgAgAhCJGiIBRQRAIAIgAigCAEEBayIBNgIAIAENBSACENUQDAQLIAEgASgCAEEBayIDNgIAIAMNACABENUQCyAEIAI2AgggAiACKAIAQQFrIgM2AgAgAw0BIAIQ1RAMAQsgAygCBCIDIwBBrPS3AWpGDQAgAyMAQaz0twFqELkSDQAjtQEoAgAjAEG5PWoQtBoMAQsjAEHg8rcBahCgECIDRQ0AIANBMDoADCADQX82AgggAyADQSRqNgIgIANCgICAgMAANwIYIANCADcCECADQQxqIABBDGogBCgCCEEIaiAEQQRqEO43IAQoAgggBCgCBBCYKUUNASADIAMoAgBBAWsiAjYCACAC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QQAhAAwBCyMAQeDytwFqEKAQIgJFBEAgASABKAIAQQFrIgI2AgBBACEAIAINASABENUQDAELIAJBMDoADCACQX82AgggAiACQSRqNgIgIAJCgICAgMAANwIYIAJCADcCECACQQxqIAFBDGogAEEIaiADQQxqEMk3IAEgASgCAEEBayIENgIAIARFBEAgARDVEAsgACADKAIMEJgpRQRAIAIhAAwBCyACIAIoAgBBAWsiATYCAEEAIQAgAQ0AIAIQ1RALIANBEGokASAAC+ACAQN/IwFBEGsiAyQBIANBADYCDAJAAkACQCABKAIEIgQjAEHg8rcBakcEQCAEIwBB4PK3AWoQuRJFDQELIAEgASgCAEEBajYCAAwBCyABKAIEIgItAFdBAXFFBEAgAyACKAIMNgIAI7UBKAIAIwBB/cwIaiADEK4aGkEAIQAMAgsjAEHg8rcBaiABIAAQlykiAQ0AQQAhAAwBCyMAQeDytwFqEKAQIgJFBEAgASABKAIAQQFrIgI2AgBBACEAIAINASABENUQDAELIAJBMDoADCACQX82AgggAiACQSRqNgIgIAJCgICAgMAANwIYIAJCADcCECACQQxqIAFBDGogAEEIaiADQQxqEMg3IAEgASgCAEEBayIENgIAIARFBEAgARDVEAsgACADKAIMEJgpRQRAIAIhAAwBCyACIAIoAgBBAWsiATYCAEEAIQAgAQ0AIAIQ1RALIANBEGokASAAC8sBAQJ/IwFBEGsiAyQBAn8CQAJAIAEoAgQiAiMAQeDytwFqRwRAIAIjAEHg8rcBahC5EkUNAQsgASABKAIAQQFqNgIADAELAkAgASgCBCICLQBXQQFxRQRAIAMgAigCDDYCACO1ASgCACMAQf3MCGogAxCuGhoMAQsjAEHg8rcBaiABIAAQlykiAQ0BC0EADAELIAFBDGogAEEIahDHNyECIAEgASgCAEEBayIANgIAIABFBEAgARDVEAsgAhCPFAshASADQRBqJAEgAQutAgEDfyMBQRBrIgIkAQJAAkACQCABKAIEIgQjAEHg8rcBakcEQCAEIwBB4PK3AWoQuRJFDQELIAEgASgCAEEBajYCAAwBCyABKAIEIgMtAFdBAXFFBEAgAiADKAIMNgIAI7UBKAIAIwBB/cwIaiACEK4aGkEAIQEMAgsjAEHg8rcBaiABIAAQ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AkEANgIAIAAgATYCNAwBCyABIAEoAgBBAWo2AgAgASEACyMAQdjd7QFqKAIAIAAQiRohASAAIAAoAgBBAWsiAjYCACACRQRAIAAQ1RALIAFFBEBBAA8LIAEgASgCAEEBayIANgIAIABFBEAgARDVEAsjsgEiAiACKAIAQQFqNgIACyACC0EAIAAgACgCDBDLKiIARQRAQQAPCyAAIAAoAgBBAWsiATYCACABRQRAIAAQ1RALI7IBIgAgACgCAEEBajYCACAAC40DARF/IwFBsAFrIgEkASMAQdD5twFqIQIgACgCCCgCACEDQQAhAANAIABBAnQiBCABQYABamogAigCBDYCACABQdAAaiAEaiMAQfDEBkHh8QYgAigCCCADcRtqNgIAIABBAWohACACQRBqIgIoAgANAAsgASgCgAEhAiABKAJQIQAgASgChAEhBCABKAJUIQUgASgCiAEhAyABKAJYIQYgASgCjAEhByABKAJcIQggASgCkAEhCSABKAJgIQogASgClAEhCyABKAJkIQwgASgCmAEhDSABKAJoIQ4gASgCnAEhDyABKAJsIRAgASgCoAEhESABIAEoAnA2AkQgAUFAayARNgIAIAEgEDYCPCABIA82AjggASAONgI0IAEgDTYCMCABIAw2AiwgASALNgIoIAEgCjYCJCABIAk2AiAgASAINgIcIAEgBzYCGCABIAY2AhQgASADNgIQIAEgBTYCDCABIAQ2AgggASAANgIEIAEgAjYCACMAQdUAaiABEKQUIQIgAUGwAWokASACC60BAQF/AkACfyO6ASACQX5xQQJHDQAaIAEoAgQiAyMAQcjd7QFqKAIARgRAIAEoAggoAgAhAyO7ASO8ASACQQNGIAMgACgCCCgCAEZzGwwBCyO6ASADLQBXQSBxRQ0AGiABEPIpIgFBgIAGcQRAQQAhAyABQYCAAnFFDQIQvRojugEMAQsjuwEjvAEgAkEDRiAAKAIIKAIAIAFGcxsLIgMgAygCAEEBajYCAAsgAwsWACMAQdDd7QFqKAIAI7QBKAJsEQEACwsAIABBADYCCEEACwQAQQkLigEBAX8CQCMAQdD5twFqIgIoAgAEQANAIAIoAgwgAUYNAiACQRBqIgIoAgANAAsLI9kBKAIAIwBBjN0JahC0GkEADwtBACEBIAIoAggiAkGAgAZxRQRA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QbiIsMEBa0EUdyADaiIBIANzIAJxIANzakHmm4ePAmpBBXcgAWoiAGogASAJaiADIBFqIAIgGGogACABcyADcSABc2pBqvCj5gNrQQl3IABqIgIgAHMgAXEgAHNqQfnkq9kAa0EOdyACaiIDIAJzIABxIAJzakHtqeiqBGpBFHcgA2oiASADcyACcSADc2pB+63wsAVrQQV3IAFqIgBqIAMgE2ogAiASaiAAIAFzIANxIAFzakGIuMEYa0EJdyAAaiICIABzIAFxIABzakHZhby7BmpBDncgAmoiBCACcyIDIAEgCmogACADcSACc2pB9ubWlgdrQRR3IARqIgNzakG+jRdrQQR3IANqIgFqIAQgFWogAiAJaiADIARzIAFzakH/krjEB2tBC3cgAWoiAiABIANzc2pBosL17AZqQRB3IAJqIgAgAnMgAyAYaiABIAJzIABzakH0j+sQa0EXdyAAaiIDc2pBvKuE2gVrQQR3IANqIgFqIAAgE2ogAiAIaiAAIANzIAFzakGpn/veBGpBC3cgAWoiAiABIANzc2pBoOmSygBrQRB3IAJqIgAgAnMgAyAWaiABIAJzIABzakGQh4GKBGtBF3cgAGoiA3NqQcb97cQCakEEdyADaiIBaiAAIBFqIAIgC2ogACADcyABc2pBhrD7qgFrQQt3IAFqIgIgASADc3NqQfuew9gCa0EQdyACaiIAIAJzIAMgFGogASACcyAAc2pBhbqgJGpBF3cgAGoiA3NqQcffrLECa0EEdyADaiIBaiADIBJqIAIgCmogACADcyABc2pBm8yRyQFrQQt3IAFqIgIgAXMgACAXaiABIANzIAJzakH4+Yn9AWpBEHcgAmoiA3NqQZvTztoDa0EXdyADaiIBIAJBf3NyIANzakG8u9veAGtBBncgAWoiAGogASAPaiADIBhqIAIgE2ogACADQX9zciABc2pBl/+rmQRqQQp3IABqIgIgAUF/c3IgAHNqQdm4r6MFa0EPdyACaiIDIABBf3NyIAJzakHHv7Eba0EVdyADaiIBIAJBf3NyIANzakHDs+2qBmpBBncgAWoiAGogASAOaiADIBZqIAIgEWogACADQX9zciABc2pB7ubMhwdrQQp3IABqIgIgAUF/c3IgAHNqQYOXwABrQQ93IAJqIgMgAEF/c3IgAnNqQa/E7tMHa0EVdyAD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CkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3AxggDiAOKQMgIgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3AyAgDiAOKQMoIgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3AyggDiAOKQMwIgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3AzAgDiAOKQM4IgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3AzggDiAOKQNAIgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3A0AgDiAOKQNIIgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3A0ggDiAOKQNQIgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3A1AgDiAOKQNYIgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIoiEKA/gODIApCOIiEhIQ3A1ggDiAOKQNgIgpCOIYgCkKA/gODQiiGhCAKQoCA/AeDQhiGIApCgICA+A+DQgiGhIQgCkIIiEKAgID4D4MgCkIYiEKAgPwHg4QgCkIo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AyAAKQMoNwMoIAMgACkDMDcDMCADIAApAzg3AzggA0FAayAAQUBrKQMANwMAIANB0ABqIABB0ABqQYABEM4+GiADC8oBAQF/IwFBoAJrIgEkASABIAAoAtABNgLYASABIAAoAtQBIgI2AtwBIAEgACgCSDYCUCABIAAoAkw2AlQgASAAKQMQNwMYIAEgACkDGDcDICABIAApAyA3AyggASAAKQMoNwMwIAEgACkDMDcDOCABQUBrIAApAzg3AwAgASAAQUBrKQMANwNIIAEgACkDCDcDECABQdgAaiAAQdAAakGAARDOPhogAUHgAWogAUEIahCNKyABQeABaiACEK0HIQAgAUGgAmokASAAC9QHAQV/IAEoAkwhAiABQdAAaiIGIAEoAkgiA0EDdkH/AHEiBWoiBEGAAToAACAEQQFqIQQCQCAFQfAATwRAIARBACAFQf8AcxDQPhogARCIKyAGQQBB8AAQ0D4aDAELIARBAEHvACAFaxDQPhoLIAEgAzoAzwEgASADQQh2OgDOASABIANBEHY6AM0BIAEgA0EYdjoAzAEgASACOgDLASABIAJBCHY6AMoBIAEgAkEQdjoAyQEgASACQRh2OgDIASABQgA3A8ABIAEQiCsgACABMQAPPAAAIAAgATMBDjwAASAAIAFBCGoiAikDAEIoiDwAAiAAIAE1Agw8AAMgACACKQMAQhiIPAAEIAAgAikDAEIQiDwABSAAIAIpAwBCCIg8AAYgACACKQMAPAAHIAAgATEAFzwACCAAIAEzARY8AAkgACABQRBqIgIpAwBCKIg8AAogACABNQIUPAALIAAgAikDAEIYiDwADCAAIAIpAwBCEIg8AA0gACACKQMAQgiIPAAOIAAgAikDADwADyAAIAExAB88ABAgACABMwEePAARIAAgAUEYaiICKQMAQiiIPAASIAAgATUCHDwAEyAAIAIpAwBCGIg8ABQgACACKQMAQhCIPAAVIAAgAikDAEIIiDwAFiAAIAIpAwA8ABcgACABMQAnPAAYIAAgATMBJjwAGSAAIAFBIGoiAikDAEIoiDwAGiAAIAE1AiQ8ABsgACACKQMAQhiIPAAcIAAgAikDAEIQiDwAHSAAIAIpAwBCCIg8AB4gACACKQMAPAAfIAAgATEALzwAICAAIAEzAS48ACEgACABQShqIgIpAwBCKIg8ACIgACABNQIsPAAjIAAgAikDAEIYiDwAJCAAIAIpAwBCEIg8ACUgACACKQMAQgiIPAAmIAAgAikDADwAJyAAIAExADc8ACggACABMwE2PAApIAAgAUEwaiICKQMAQiiIPAAqIAAgATUCNDwAKyAAIAIpAwBCGIg8ACwgACACKQMAQhCIPAAtIAAgAikDAEIIiDwALiAAIAIpAwA8AC8gACABMQA/PAAwIAAgATMBPjwAMSAAIAFBOGoiAikDAEIoiDwAMiAAIAE1Ajw8ADMgACACKQMAQhiIPAA0IAAgAikDAEIQiDwANSAAIAIpAwBCCIg8ADYgACACKQMAPAA3IAAgATEARzwAOCAAIAEzAUY8ADkgACABQUBrIgIpAwBCKIg8ADogACABNQJEPAA7IAAgAikDAEIYiDwAPCAAIAIpAwBCEIg8AD0gACACKQMAQgiIPAA+IAAgAikDADwAPwvKAQEBfyMBQaACayIBJAEgASAAKALQATYC2AEgASAAKALUASICNgLcASABIAAoAkg2AlAgASAAKAJMNgJUIAEgACkDEDcDGCABIAApAxg3AyAgASAAKQMgNwMoIAEgACkDKDcDMCABIAApAzA3AzggAUFAayAAKQM4NwMAIAEgAEFAaykDADcDSCABIAApAwg3AxAgAUHYAGogAEHQAGpBgAEQzj4aIAFB4AFqIAFBCGoQjSsgAUHgAWogAhDiHyEAIAFBoAJqJAEgAAuUAwEFfyMBQTBrIgQkAQJAIAEoAgQtAFdBEHEEQCO1ASgCACMAQeWYBmoQtBoMAQsgARDCBUUEQCO1ASgCACMAQdrjCGoQtBoMAQsgASAEQQRqQQAQxwVBf0YNACAEKAIYQQJOBEAj3wEoAgAjAEH6igVqELQaIARBBGoQxAUMAQsgBCgCBCECIAAgACgCSCIDIAQoAgwiAUEDdGoiBTYCSCAAIAAoAkwgAUEddmogAyAFS2o2AkwCQCAAKALQASIDBEAgACADakHQAGogAkGAASADayIDIAEgASADShsiAxDOPhogACAAKALQASADaiIFNgLQASAFQYABRw0BIAAQiCsgAiADaiECIAEgA2shAQsCQCABQYABSARAIAEhBQwBCyAAQdAAaiEGA0AgBiACQYABEM4+GiAAEIgrIAJBgAFqIQIgAUH/AUshAyABQYABayIFIQEgAw0ACwsgAEHQAGogAiAFEM4+GiAAIAU2AtABCyAEQQRqEMQFI7IBIgIgAigCAEEBajYCAAsgBEEwaiQBIAILCABBgAEQmw0LHQAjAEHYuQtBx68LIAAoAtQBQcAARhtqQQYQjBQLDQAjAEGAqbgBahDwDwucAQEBfwJAIAAQgRAiAygCACIABEAgACACIAERAAAiAA0BCyADKAIEIgAEQCAAIAIgAREAACIADQELIAMoAggiAARAIAAgAiABEQAAIgANAQsgAygCDCIABEAgACACIAERAAAiAA0BCyADKAIQIgAEQCAAIAIgAREAACIADQELIAMoAhQiAARAIAAgAiABEQAAIgANAQtBACEACyAAC5MCAQJ/AkAgABCBECIAKAIAIgFFDQAgAEEANgIAIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAgQiAUUNACAAQQA2AgQgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCCCIBRQ0AIABBADYCCCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIMIgFFDQAgAEEANgIMIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhAiAUUNACAAQQA2AhAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCFCIBRQ0AIABBADYCFCABIAEoAgBBAWsiADYCACAADQAgARDVEAtBAAsIACAAEJQrGgupAgEDfyAAEIEQIgIgACMAQdCpuAFqQQAQwxIiATYCAEF/IQMCQCABRQ0AIAAgARDcHEEASA0AIAIgACMAQeSpuAFqQQAQwxIiATYCBCABRQ0AIAAgARDcHEEASA0AIAIgACMAQfipuAFqQQAQwxIiATYCCCABRQ0AIAAgARDcHEEASA0AIAIgACMAQYyquAFqQQAQwxIiATYCDCABRQ0AIAAgARDcHEEASA0AIAIgACMAQaCquAFqQQAQwxIiATYCECABRQ0AIAAgARDcHEEASA0AIAIgACMAQbSquAFqQQAQwxIiATYCFCABRQ0AIAAgARDcHEEASA0AIAAjAEHf1ABqQQAQ2hxBAEgNACAAIwAiAUHJ3QRqIAFBqrMLahDbHEEfdSEDCyADCzoBAX8gACgC4AEiAQRAIAEQsx8LIAAoAgQhASAAEIQRIAEgASgCAEEB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IAIgBCgCsAIgBCgCuAIQqysgARDaGAwBCyACIAQoArACIAEQqysLIARBsAJqEMQFCyADIQcMAQsgAyADKAIAQQFrIgI2AgBBACEHIAINACADENUQCyAEKALEAQRAIARBwAFqEMQFCyAEKAKUAQRAIARBkAFqEMQFCyAEKAJkBEAgBEHgAGoQxAULIARBsANqJAEgBwvOAQEBfwJAIAAoAgQiAUEAIAEoApgBEQAAIgFFDQAgAUEANgKwAwJAIAAoArADIgJFDQAgAkEAELcfDQAQ2RghAiAAKAKwA0EBELcfGiACENoYCyABIAApAgg3AgggAUFAayAAQUBrKQIANwIAIAEgACkCODcCOCABIAApAjA3AjAgASAAKQIoNwIoIAEgACkCIDcCICABIAApAhg3AhggASAAKQIQNwIQIAFByABqIABByABqQeYCEM4+GiAAKAKwAyIARQ0AIAAQtR8LIAELjwEBAn8jAUGwA2siAiQBAkAgACgCsAMiAUUNACABQQAQtx8NABDZGCEBIAAoArADQQEQtx8aIAEQ2hgLIAJBCmogAEHIAGpB5gIQzj4aIAJBCmogAkHwAmogAC0ACCIBEK0rIAJB8AJqIAAoArADIgMEfyADELUfIAAtAAgFIAELEK0HIQAgAkGwA2okASAAC48BAQJ/IwFBsANrIgIkAQJAIAAoArADIgFFDQAgAUEAELcfDQAQ2RghASAAKAKwA0EBELcfGiABENoYCyACQQpqIABByABqQeYCEM4+GiACQQpqIAJB8AJqIAAtAAgiARCtKyACQfACaiAAKAKwAyIDBH8gAxC1HyAALQAIBSABCxDiHyEAIAJBsANqJAEgAAutBQIKfwF+IwFBMGsiAyQBAkAgASgCBC0AV0EQcQRAI7UBKAIAIwBB5ZgGahC0GgwBCyABEMIFRQRAI7UBKAIAIwBB2uMIahC0GgwBCyABIANBBGpBABDHBUF/Rg0AIAMoAhhBAk4EQCPfASgCACMAQfqKBWoQtBogA0EEahDEBQwBCwJAIAAoArADIgENACADKAIMQYAQSA0AIAAQsh8iATYCsAMLAkAgAQRAENkYIQsgACgCsANBARC3HxoCQCADKAIMIgJFDQAgAEHIAGohCSAAQagCaiEKIABBqAFqIQQgACgAqAMhBiADKAIEIQUgAEGQAWohBwNAIAQg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AiAAQdgAaiEBIAAoANgBIQQgBSgCBCEGIABBzABqIQgDQCABIARqIQlBgAEgBGsiByADTwRAIAkgBiADEM4+GiAAIAAoANgBIANqNgDYAQwCCyAJIAYgBxDOPhogACAAKADYASAHajYA2AEgACAAKABIIgRBQGs2AEggCCAIKAAAIARBv39LajYAACAKIAEQtysgASACKQA4NwA4IAEgAikAMDcAMCABIAIpACg3ACggASACKQAgNwAgIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIAEgAikAADcAACAAIAAoANgBQUBqIgQ2ANgBIAYgB2ohBiADIAdrIgMNAAsLIAAoAuABELUfIAsQ2hgMAQsgBSgCDCIDRQ0AIABBKGohCiAAQZgBaiECIABB2ABqIQEgACgA2AEhBCAFKAIEIQYgAEHMAGohCQNAIAEgBGohCEGAASAEayIHIANPBEAgCCAGIAMQzj4aIAAgACgA2AEgA2o2ANgBDAILIAggBiAHEM4+GiAAIAAoANgBIAdqNgDYASAAIAAoAEgiBEFAazYASCAJIAkoAAAgBEG/f0tqNgAAIAogARC3KyABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQAYNwAYIAEgAikAEDcAECABIAIpAAg3AAggASACKQAANwAAIAAgACgA2AFBQGoiBDYA2AEgBiAHaiEGIAMgB2siAw0ACwsgBUEEahDEBSOyASICIAIoAgBBAWo2AgALIAVBMGokASACCwwAIwBB7soCahCPFAsNACMAQcy2uAFqEPAPC4YHAQV/IwFBEGsiCCQBAkACQAJAIAMEQCADKAIIIAJqIQUMAQsgAiEFIAFFDQAgAkEETw0ADAELIAEgAkEAIAMjAEHQt7gBakEAQQNBACAIQQRqEIobIgFFDQELQQAhAgJAAkACQCAFRQ0AAkAgASgCACIDRQRADAELAkAgAyOyAUYNACADKAIELQBXQRBxBEAgAyAIENgUIgIEQCACEP1EIAgoAgBGDQIjtwEoAgAjAEGs4QNqELQaCwwGCyMAIgFB9e0GaiABQZaIDmogAUGskAdqIAMQ+RoMBQsgBUEBayIFRQ0BCwJAIAEoAgQiBgRAQQAhAwJAIAYjsgFGDQAgBigCBC0AV0EQcQRAIAYgCBDY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gLi4AWooAgAEQEEAIQEDQAJAIAAoAiwgAUECdGoiAygCACICRQ0AIANBADYCACACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgACgCCEEAIwBBgLi4AWoiAiABQQV0aigCBBEFACACIAFBAWoiAUEFdGooAgANAAsLIAAoAggjAkH3F2oQsjgMAQsgAiACKAIAQQFrIgA2AgAgAA0AIAIQ1RALIARBEGokAQuaBAEDfyMBQRBrIgQkAQJAIAAoAiwoAghFDQAQtRoNAAJAIAAoAhwiA0UNACAAKAIkIgVFDQAgACADIAUQxSshAyAAQQA2AiQgA0EASA0BCyAAIAEQxishASAEIAI2AgggBCMCQfkXajYCBCAEIAE2AgAjAEGz2w1qIAQQzRwiAkUEQCMAQYC4uAFqKAIABEBBACECA0ACQCAAKAIsIAJBAnRqIgMoAgAiAUUNACADQQA2AgAgASABKAIAQQFrIgM2AgAgAw0AIAEQ1RALIAAoAghBACMAQYC4uAFqIgEgAkEFdGooAgQRBQAgASACQQFqIgJBBXRqKAIADQALCyAAKAIIIwJB9xdqELI4DAELIABBATYCFCAAKAIsKAIIIAJBABCTCCIBRQRAIwAiA0H10gRqIANBkakJakHcAxDKHyAAKAIIEL84CyAAQQA2AhQgAiACKAIAQQFrIgM2AgAgA0UEQCACENUQCyABRQRAIwBBgLi4AWooAgAEQEEAIQIDQAJAIAAoAiwgAkECdGoiAygCACIBRQ0AIANBADYCACABIAEoAgBBAWsiAzYCACADDQAgARDVEAsgACgCCEEAIwBBgLi4AWoiASACQQV0aigCBBEFACABIAJBAWoiAkEFdGooAgANAAsLIAAoAggjAkH3F2oQsjgMAQsgASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALIARBEGokAQssACAARQRAI7IBIgAgACgCAEEBajYCACAADwsgACAAEP1EIwBB05ABahDkFAuiAQEDfwJAELUaDQAgACgCHCIFRQRAIAAgASACEMUrGg8LIAAoAiAiBCAAKAIkIgMgAmpIBEAgAwRAIAAgBSADEMUrIQMgAEEANgIkIANBAEgNAgsgACgCLCgCDEUNASAAKAIgIQRBACEDCyACIARKBEAgACABIAIQxSsaIABBADYCJA8LIAAoAhwgA2ogASAC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ACADENUQCyAFQRBqJAEgAUEASA0BIAAjAEHRmQpqQQAQ2hxBAEgNASAAIwBBu+cKakEBENocQQBIDQEgACMAQYmLCmpBAhDaHEEASA0BIwAiAkGg4O0BaiIBI6gKNgJcIAEjAkH2F2o2AlggASOnCjYCVCABI7gGNgJQIAEjpgo2AkwgASOlCjYCSCABI7cGNgJEIAEjpAo2AkAgASOjCjYCPCABI7YGNgI4IAEjtQY2AjQgASO0BjYCMCABI6IKNgIsIAEjoQo2AiggASOgCjYCJCABI58KNgIgIAEjngo2AhwgASOdCjYCGCABI5wKNgIUIAFCBTcCDCABIAJB770LajYCACABQuCAgIAgNwIEIAEgAkH00ApqQQAQpggiAUUNAUEAIQkgACMAQfzQCmogARDZHEEATg0BIAEgASgCAEEBayICNgIAIAINACABENUQC0F/IQkLIAZBIGokASAJC5oCAQN/IwAhAyABRQRAI74BKAIAIwBBid8GahC0GkF/DwsgAiADQYC4uAFqayIDQQV1IQICfwJAAkACQCADQeAARgRAIAAoAhwiA0UNASAAKAIkIgRFDQEgACADIAQQxSshAyAAQQA2AiQgA0EATg0BQX8PCyABI7IBRw0BQQAhAUEADAMLIAEjsgFGDQELIAEgASgCAEEBajYCACMAIAJBBXRqQYi4uAFqKAIADAELQQAhASMCQfgXakEAIAAoAhQbCyEFIAAoAiwgAkECdGoiBCgCACEDIAQgATYCAAJAIANFDQAgAyADKAIAQQFrIgE2AgAgAQ0AIAMQ1RALIAAoAgggBSMAIAJBBXRqQYS4uAFqKAIAEQUAQQALMAAgACgCLCABIwBBgLi4AWprQQN1aigCACIBI7IBIAEbIgEgASgCAEEBajYCACABC9ABAQN/IAFBLhCHRSEDAkAgARDzDyICRQ0AAkAgARCPFCIBRQRAIAIgAigCAEEBayIANgIAIAIhASAARQ0BDAILIAEgAhDSG0EASARAIAIgAigCAEEBayIANgIAIABFBEAgAhDVEAsgASABKAIAQQFrIgI2AgAgAkUNAQwCCyADQQFqIQMgASABKAIAQQFrIgQ2AgAgBEUEQCABENUQCyAAIAMgAhDZHEEATgRAIAIPCyACIAIoAgBBAWsiADYCACACIQEgAA0BCyABENUQC0EAC5QC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AigCAEEBayIBNgIAIAFFBEAgAhDVEAsgBCEBCyABC4wBAQV/AkAgACgCDCIBQQFxRQ0AI+IBIAFBfnEiAigCBEcEQCACDwtBACEBIwBB6eIOakEAEIwUIgNFDQAgAyACEI4VIQQgAyADKAIAQQFrIgU2AgAgBUUEQCADENUQCyAERQ0AIAAgBDYCDCACIAIoAgBBAWsiATYCACABRQRAIAIQ1RALIAQhAQsgAQsbACAAEL8gIAAQjiwaIAAgACgCBCgCoAERAwALxgUBAn8CQCAAKAJIIgFFDQAgAEEANgJIIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAkQiAUUNACAAQQA2AkQgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCQCIBRQ0AIABBADYCQCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAI8IgFFDQAgAEEANgI8IAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAjgiAUUNACAAQQA2AjggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCNCIBRQ0AIABBADYCNCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIwIgFFDQAgAEEANgIwIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhwiAUUNACAAQQA2AhwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCGCIBRQ0AIABBADYCGCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIQIgFFDQAgAEEANgIQIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhQiAUUNACAAQQA2AhQgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCDCIBRQ0AIABBADYCDCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIsIgFFDQAgAEEANgIsIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAigiAUUNACAAQQA2AiggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCJCIBRQ0AIABBADYCJCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIIIgFFDQAgAEEANgIIIAEgASgCAEEBayIANgIAIAANACABENUQC0EAC/0CAQF/AkAgACgCSCIDBEAgAyACIAERAAAiAw0BCyAAKAJEIgMEQCADIAIgAREAACIDDQELIAAoAkAiAwRAIAMgAiABEQAAIgMNAQsgACgCPCIDBEAgAyACIAERAAAiAw0BCyAAKAI4IgMEQCADIAIgAREAACIDDQELIAAoAjQiAwRAIAMgAiABEQAAIgMNAQsgACgCMCIDBEAgAyACIAERAAAiAw0BCyAAKAIIIgMEQCADIAIgAREAACIDDQELIAAoAgwiAwRAIAMgAiABEQAAIgMNAQsgACgCECIDBEAgAyACIAERAAAiAw0BCyAAKAIUIgMEQCADIAIgAREAACIDDQELIAAoAhgiAwRAIAMgAiABEQAAIgMNAQsgACgCHCIDBEAgAyACIAERAAAiAw0BCyAAKAIsIgMEQCADIAIgAREAACIDDQELIAAoAigiAwRAIAMgAiABEQAAIgMNAQsgACgCJCIABEAgACACIAERAAAiAw0BC0EAIQMLIAML6QUBB38jAUEgayIIJAEgASgCCCEDAn8CQAJAIAIEQCABQQxqIQEgAigCCCADaiEEDAELIAFBDGohASADIQQgA0ECTw0ADAELIAEgAyACQQAjAEGY2bgBakEAQQFBACAIEIobIgENAEF/DAELI7IBIQICQAJAAkAgBEUEQCACIQMMAQsjsgEhAgJAAn8CQCABKAIAIgdFBEAgAiEHDAELI7IBIQMgBEEBayIEDQAgAyECQQAMAQsjsgEhAgJAAkAgASgCBCIDRQRAIAIhAwwBCyOyASECIARBAWsiBEUNAQsjsgEhBQJAIAEoAggiAkUEQCAFIQIMAQsgBEEBayIERQ0BC0EAIQUgASgCDCIJBEBBfyAJELEQIgVBAEgNBxogBEEBRg0DCyABKAIQELEQIgZBAE4NAkF/DAYLQQALIQULIAcjsgFGDQAgByAHKAIAQQFqNgIAIAAoAiQhASAAIAc2AiQgAUUNAiABIAEoAgBBAWsiBDYCACAEDQIMAQsgACgCJCIBRQ0BIABBADYCJCABIAEoAgBBAWsiBDYCACAEDQELIAEQ1RALI7IBIANGBEAjAEHQ0LgBahDKHRCBECgCDCEDCwJAIAMEQCADIAMoAgBBAWo2AgAgACgCKCEBIAAgAzYCKCABRQ0BIAEgASgCAEEBayIDNgIAIAMNASABENUQDAELIAAoAigiA0UEQEEAIQUMAQtBACEFIABBADYCKCADIAMoAgBBAWsiATYCACABDQAgAxDVEAsgACAFOgBMI7IBIAJGBEAjAEHQ0LgBahDKHRCBECgCECECCwJAIAIEQCACIAIoAgBBAWo2AgAgACgCLCEDIAAgAjYCLCADRQ0BIAMgAygCAEEBayICNgIAIAINASADENUQDAELIAAoAiwiAkUEQEEAIQYMAQtBACEGIABBADYCLCACIAIoAgBBAWsiAzYCACADDQAgAhDVEAsgACAGOgBNQQALIQAgCEEgaiQBIAAL7gEAAn9BACAAQQAgACgCmAERAAAiAEUNABogAEEANgIII7IBIgEoAgAhAiAAIAE2AgwgASACQQJqNgIAIABBADYCLCAAQgA3AiQgAEEANgIYIAAgATYCECAAQRQQ1gwiATYCHCABRQRAIAAoAgwiASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAKAIQIgEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgACAAKAIAQQFrIgI2AgBBACACDQEaIAAQ1RBBAA8LIABCADcCMCAAQQA2AiAgAEIANwI4IABBQGtCADcCACAAQgA3AUYgAAsLCQAgACABEJMsC/wBAQJ/IABBGGohAwJAAkAgACgCGCICRQRAI7IBIAAoAhBGDQEgASABKAIAQQFqNgIAIAMgATYCAAwBCwJAIAIoAgQiACO2AUYEQCACKAIAQQFHDQEjtgEgASgCBEcNASABKAIIQQFHDQFBACEAIAMgAigCCCICQQFqELUHQQBIDQMgAygCACACaiABLQAQOgAQDAILIAAj4gFHDQBBACEAIAIgARDeDEEATg0BDAILQQIQ1gwiAEUEQEEADwsgACgCDCADKAIANgIAIAEgASgCAEEBajYCACAAKAIMIAE2AgQgAyAANgIACyOyASIAIAAoAgBBAWo2AgALIAALYAACQCACQQJGDQAjAEGe0wBqIAJBAkECEIwbDQBBAA8LIAEoAgQiAigCBC0AV0EgcUUEQCMAIgFBntMAaiABQYG7C2ogAUHskwFqIAIQ+RpBAA8LIAAgASgCACACEJUsC+YFAQR/IwFBMGsiBCQBIwBB0NC4AWoQyh0QgRAhBgJAIAAoAhgEQCAAQRhqIQUCfyAAKAIUIgNF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AgBBfyEBAkAgAkUNACAAIwBB9sIDaiPDASgCABDYHEEASA0AIAAjACICQZTbCmpBgCAQ2hwaIAMgACACQdzAvAFqQQAQwxIiAjYCBCACRQ0AIAAjACIBQcW9CmpBARDaHBogACABQbrQCmpBAhDaHBogACABQbP/CWpBBBDaHBogACABQb+WCmpBCBDaHBogACABQfavCmpBEBDaHBogACABQfDICmpBIBDaHBogACABQd2/CmpBwAAQ2hwaIAAgAUHA8gpqQYABENocGiAAIAFB0r8KakGAAhDaHBogACABQbXyCmpBgAQQ2hwaIAAgAUHL1QpqQYAIENocGiAAIAFBhbAKakGAwAAQ2hwaQQAhAQsgAQsNACMAQfDAvAFqEPAPC14BA38gACgCBCECIAAoAhQiAQRAIAEQ/RALAkAgACgCCCIBRQ0AIAEgASgCAEEBayIDNgIAIAMNACABENUQCyAAEIQRIAIgAigCAEEBayIANgIAIABFBEAgAhDVEAsLigIBA38jAUEQayIEJAEgBEEHOwEKAkACQCACQQFrQQJJDQAjAEHJ1gNqIAJBAUECEIwbDQAMAQsgASgCACAEQQxqELILRQ0AQQchBSACQQJOBEAgASgCBCAEQQpqELMNRQ0BIAQvAQohBQsgBCgCDBCbDSICRQ0AIAUQmw0iAUUEQCACIAIoAgBBAWsiATYCACABDQEgAhDVEAwBCyAAKAIIIAIgARCNDiEFIAIgAigCAEEBayIDNgIAIANFBEAgAhDVEAsgASABKAIAQQFrIgI2AgAgAkUEQCABENUQC0EAIQMgBUEASA0AIABBADYCDCOyASIDIAMoAgBBAWo2AgALIARBEGokASADC9kCAQN/IwFBEGsiBCQBAkACQCACQQJGDQAjAEGtGmogAkECQQIQjBsNAEEAIQIMAQtBACECIAEoAgAgBEEMahCyC0UNACABKAIEIARBCmoQsw1FDQAgBC8BCiEDIAQoAgwQmw0iAUUNACAAKAIIIAEQrw4iBUEASARAIAEgASgCAEEBayIANgIAIAANASABENUQDAELIAVFBEAQ+jtBLDYCACPDASgCABDSGhogASABKAIAQQFrIgA2AgAgAA0BIAEQ1RAMAQsgAxCbDSIDRQRAIAEgASgCAEEBayIANgIAIAANASABENUQDAELIAAoAgggASAD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AEEBayIANgIAIAANASABENUQQQAPCyABIwBBwNEKaiACENkcQQBIBEAgAiACKAIAQQFrIgA2AgAgAEUEQCACENUQCyABIAEoAgBBAWsiADYCACAADQEgARDVEEEADwsgASMAIgBBhoELakEAENocGiABIABBgIgKakECENocGiABIABB8q0LakEDENocGiABIABB4uwJakEEENocGiABIABB7s0KakEFENocGiABIABBvsAKakEGENocGiABIABB8O0KakEHENocGiABIABBsvwKakEIENocGiABIABB660LakEJENocGiABIABBm6kLakEKENocGiABIABByuQKakELENocGiABIABBnI0BakEMENocGiABIABBg9AKakENENocGiABIABB5ekJakEOENocGiABIABB6+sJakEPENocGiABIABBoeIKakEQENocGiABIABBrtMKakESENocGiABIABB9ocKakETENocGiABIABBqPwKakEUENocGiABIABBzoILakEWENocGiABIABB+IILakEXENocGiABIABB6ewJakEYENocGiABIABBy+YKakEZENocGiABIABBvf4KakEaENocGiABIABBoZQKakEVENocGiABIABBmpQKakEVENocGiABIABBnYgKakERENocGiABIABBk4gKakERENocGiABIABBhMIKakEBENocGiABIABB18EKakECENocGiABIABBy/QJakEDENocGiABIABBp4gKakEFENocGiABIABBzsEKakEEENocGiABIABBuIALakGAgCAQ2hwaIAEgAEGLzwpqQYAQENocGiABIABBj9UKakEBENocGiABIABBu7wKakEeENocGiABIABB7PYJakExENocGiABIABB8OEKakEJENocGiABIABBquIKakEFENocGiABIABB94AKakEGENocGiABIABBw5oKakENENocGiABIABB7ucKakEKENocGiABIABBttsKakEHENocGiABIABBrNsKakEIENocGiABIABBvIkKakETENocGiABIABBsIkKakESENocGiABIABB6bcKakEVENocGiABIABB3bcKakEUENocGiABIABBqJcKakEEENocGiABIABB/eUKakEDENocGiABIABB/fYKakEQENocGiABIABBifcKakERENocGiABIABB54ALakEiENocGiABIABB8oALakEfENocGiABIABBq+8KakEZENocGiABIABB8ekJakEMENocGiABIABB2MwKakEkENocGiABIABBzL0KakEnENocGiABIABB+sIKakEmENocGiABIABBsbwKakGAARDaHBogASAAQeqNCmpBARDaHBogASAAQaWRCmpBAhDaHBogASAAQdWBC2pBARDaHBogASAAQfvNCmpBAhDaHBogASAAQbfiCmpBBBDaHBogASAAQfWGCmpBwAAQ2hwaIAEgAEHImApqQYABENocGiABIABBnP4KakEgENocGiABIABBsv4KakEIENocGiABIABBxMYKakGAAhDaHBogASAAQc/KCmpBgIABENocGiABIABBxYALakGAgICABBDaHBogASAAQZTiCmpBgMAAENocGiABIABB+r8KakGAEBDaHBogASAAQYvlCmpBgIACENocGiABIABBnr4KakGAgICAAhDaHBogASAAQYiICmpBARDaHBogASAAQfWyCmpBABDaHBogASAAQf2zCmpBBhDaHBogASAAQd2zCmpBERDaHBogASAAQZKUCmpBlAIQ2hwaIAEgAEHqsgpqQQAQ2hwaIAEgAEHYjApqQQAQ2hwaIAEgAEG4sgpqQQEQ2hwaIAEgAEGmsgpqQQIQ2hwaIAEgAEGOqQtqQSkQ2hwaIAEgAEH8sgpqQQQQ2hwaIAEgAEHxswpqQQYQ2hwaIAEgAEGuswpqQQgQ2hwaIAEgAEGIrwpqQQwQ2hwaIAEgAEHRswpqQREQ2hwaIAEgAEG04wpqQYgBENocGiABIABBsvUJakEKENocGiABIABBn/UJakELENocGiABIABB5bMKakEWENocGiABIABBmrAKakEdENocGiABIABB/dUKakErENocGiABIABBiIQKakEsENocGiABIABBzq4KakEuENocGiABIABBmOUKakEvENocGiABIABBrbAKakEyENocGiABIABB0tQKakEzENocGiABIABB/6gLakE6ENocGiABIABBiucKakE7ENocGiABIABB/osKakE8ENocGiABIABBksEKakHnABDaHBogASAAQYW0CmpBhgIQ2hwaIAEgAEG/9AlqQf8BENocGiABIABB+O8JakGHAhDaHBogASAAQf70CmpBgAgQ2hwaIAEgAEGO9QpqQYgnENocGiABIABB7uoJakEAENocGiABIABB5oAKakF/ENocGiABIABBw88KakGBgID4BxDaHBogASAAQeKvCmpBgICAgH4Q2hwaIAEgAEGUrwpqQYGAgIB+ENocGiABIABBuq8KakH/gYCAfhDaHBogASAAQf7mCmpBfxDaHBogASAAQe2PCmpBBBDaHBogASAAQa/ICmpBAxDaHBogASAAQdSPCmpBARDaHBogASAAQdjCCmpBAhDaHBogASAAQfKLCmpBBhDaHBogASAAQcmMCmpBBxDaHBogASAAQduPCmpBDRDaHBogASAAQb6MCmpBBxDaHBogASAAQYrcCmpBIBDaHBogASAAQcfCCmpBIRDaHBogASAAQbGxCmpBIhDaHBogASAAQZyzCmpBIxDaHBogASAAQYmzCmpBJBDaHBogASAAQa7CCmpBARDaHBogASAAQZexCmpBARDaHBogASAAQcGPCmpBFBDaHBogASAAQcqDCmpBExDaHBogASAAQaGBCmpBGBDaHBogASAAQaqvCmpBFBDaHBogASAAQdGvCmpBFRDaHBogASAAQZuPCmpBEhDaHBogASAAQZrcCmpBERDaHBogASAAQcOxCmpBExDaHBogASAAQa+PCmpBEBDaHBogASAAQbLrCWpBGhDaHBogASAAQba/CmpBBxDaHBogASAAQf/aCmpBPhDaHBogASAAQY6MCmpBOxDaHBogASAAQfOFCmpBNBDaHBogASAAQeiMCmpBNhDaHBogASAAQd2xCmpBCRDaHBogASAAQc72CWpBPRDaHBogASAAQZu3CmpBMhDaHBogASAAQZuMCmpBOhDaHBogASAAQYGGCmpBMxDaHBogASAAQfWMCmpBNRDaHBogASAAQai3CmpBMRDaHBogASAAQaKbCmpBOBDaHBogASAAQfCOCmpBwgAQ2hwaIAEgAEGXmwpqQTkQ2hwaIAEgAEGsjApqQTcQ2hwaIAEgAEH1wwtqQQAQ2hwaIAEgAEHb9glqQTwQ2hwaIAEgAEHkjgpqQcMAENocGiABIABBqewJakEBENocGiABIABB5NoKakECENocGiABIABBz8wKakEDENocGiABIABBt+sKakEEENocGiABIABBnMIKakEFENocGiABIABB0IQKakEGENocGiABIABB3IQKakEHENocGiABIABBnLgLakEIENocGiABIABBy4IKakEJENocGiABIABB1rIKakEKENocGiABIABBkrcKakELENocGiABIABBts8KakEMENocGiABIABBkb4KakEXENocGiABIABBiLoKakENENocGiABIABBu/8JakESENocGiABIABBnokKakEZENocGiABIABByesJakF3ENocGiABIABB1r0KakF9ENocGiABIABB25EKakF/ENocGiABIABB28cKakF8ENocGiABIABBvusJakF6ENocGiABIABBweoJakF2ENocGiABIABBt4ILakF7ENocGiABIABB2OkKakF+ENocGiABIABBqPQJakF0ENocGiABIABBn+8KakF4ENocGiABIABBnOYKakF5ENocGiABIABBq8EKakF1ENocGiABIABB5eEKakEBENocGiABIABB4+kKakECENocGiABIABBhYAKakEEENocGiABIABBgvUJakGACBDaHBogASAAQaLGCmpBEBDaHBogASAAQerZCmpBIBDaHBogASAAQeX3CmpBCBDaHBogASAAQeH/CWpB/wEQ2hwaIAEgAEHo9AlqQSAQ2hwaIAEgAEHxvgpqQQQQ2hwaIAEgAEH2/wlqQQEQ2hwaIAEgAEHm8ApqQQgQ2hwaIAEgAEHz9AlqQQIQ2hwaIAEgAEHiwQpqQRAQ2hwaIAEgAEHR8ApqQQAQ2hwaIAEgAEHClQpqQQEQ2hwaIAEgAEHRlQpqQQIQ2hwaIABB8OHtAWoQsh82AgAgASEECyAEC3IBAn8gACMAQbjRCmoQqAgiACgCACIBIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIAAoAgQiASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAKAIIIgEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgABD9EAsbACAAEKMQQQBOBEAgACAAKAIEKAKgAREDAAsLPgIBfwF+IwFBEGsiASQBIAApAwghAiABIAApAxA3AwggASACNwMAIwBBpJkLaiABEKQUIQAgAUEQaiQBIAAL4AcCBX8BfiMBQUBqIgMkASABKAIIIQQCQAJAAkACQCACBEAgAUEMaiEBIAIoAgggBGohBgwBCyABQQxqIQEgBCEGIARBBU8NAAwBCyABIAQgAkEAIwBBxMm8AWpBAEEEQQAgA0EQahCK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NgIAIAAjACIBQdnvCGo2AgggACABQfb9AGo2AgQMAQsCQCAFRQ0AIAEgBRC/H0UNACAAQQA2AgwgAEEBNgIAIAAjACIBQcEaajYCCCAAIAFB9v0AajYCBAwBCyAAQgA3AgAgAEIANwIICwJAAkACQCACKAIgDQAjsAEoAugCIgVFDQEgAkEQaiEBAkAgBSIAKAIIKAIgIgMoAswBQQBIBEAgAUIANwIAIAFCADcCCAwBCyADQcQBahDPGCAAENAYIAAoAghB2ABqELYfQQBIBEAgAUEANgIMIAFBATYCACABIwAiAEGo1QVqNgIIIAEgAEHYxgJqNgIEDAELIAMgABDSHSABQgA3AgggAUIANwIACyACQShqIgYgAkEYaiIHKQIANwMAIAIgAikCECILNwMgIAunDQAgAkEQaiEAAkACQCMAQaT57AFqKAIARQ0AIwBBpPnsAWoQth9BAE4NACAAQQA2AgwgAEEBNgIAIAAjACIBQfDUBWo2AgggACABQfTWBWo2AgQMAQsjACIEQaj57AFqAn8jAEGo+ewBaigCAEECSARAQX8hA0EADAELELAfIQMjACIBQaT57AFqKAIAQQEQtx8aIAFBqPnsAWooAgBBAWsLNgIAIARBxLCrAWogAzYCACAAQgA3AgggAEIANwIACyAGIAcpAgA3AwAgAiACKQIQIgs3AyAgC6cNACMAQdjm7QFqKAIABEAjAEHY5u0BakEANgIAQQEhAQNAIwBB0OLtAWogAUEDdGoiAEEANgIAIABBADYCCCAAQQA2AhAgAEEANgIYIABBADYCICAAQQA2AiggAEEANgIwIABBADYCOCABQQhqIgFBwQBHDQALCyMBQSBrIgEkASOwASIAELAfNgI4QQAgAUEMahDfEBogAEEYahC2HyEDIABBMGoQth8hBiAAQawDahC2HyEHQQAgAUEMahDuECAAKAIgQTxqELYfIQAgAkEQaiIEQQA2AgwgBCAHIAYgACADcnJyIgBBH3Y2AgAgBCAAQR91IgAjACIDQd+TAmpxNgIIIAQgACADQe7GAmpxNgIEIAFBIGokASACQShqIgYgAkEYaiIHKQIANwMAIAIgAikCECILNwMgIAunDQAgAkEQaiEDIwFBEGsiCCQBI7ABIgRB6AJqIgAoAgAhCSAAQQA2AgACQAJAAkACQCAJRQ0AIAko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ayIANgIAIAANACACENUQC0EAIQALIANBIGokASAACw0AIwBBlNK8AWoQ8A8L+AEBAX8CQCAAKAIQIgMoAgAiAARAIAAgAiABEQAAIgANAQsgAygCBCIABEAgACACIAERAAAiAA0BCyADKAIIIgAEQCAAIAIgAREAACIADQELIAMoAgwiAARAIAAgAiABEQAAIgANAQsgAygCECIABEAgACACIAERAAAiAA0BCyADKAIUIgAEQCAAIAIgAREAACIADQELIAMoAhgiAARAIAAgAiABEQAAIgANAQsgAygCHCIABEAgACACIAERAAAiAA0BCyADKAIgIgAEQCAAIAIgAREAACIADQELIAMoAiQiAARAIAAgAiABEQAAIgANAQtBACEACyAAC8MDAQJ/AkAgACgCECIAKAIAIgFFDQAgAEEANgIAIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAgQiAUUNACAAQQA2AgQgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCCCIBRQ0AIABBADYCCCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIMIgFFDQAgAEEANgIMIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhAiAUUNACAAQQA2AhAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCFCIBRQ0AIABBADYCFCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIYIgFFDQAgAEEANgIYIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhwiAUUNACAAQQA2AhwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCICIBRQ0AIABBADYCICABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIkIgFFDQAgAEEANgIkIAEgASgCAEEBayIANgIAIAANACABENUQC0EACwgAIAAQnS8aC54DAQN/IwFBQGoiBCQBIAMEfyADKAIIBUEACyEGIAQjAEG04bwBaiIFKQIgNwMoIAQgBSkCGDcDICAEIAUpAhA3AxggBCAFKQIINwMQIAQgBSkCADcDCCAEQZx/NgIEAkACQAJAIAFFDQAgAkEBRw0AIANFDQELQQAhBSABIAJBACADIwBBkOG8AWpBAUEB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CmpBARDaHA0AIAAjAEG35ApqQQUQ2hwNACAAIwBBkvkKakEDENocDQAgACMAQfD4CmpBBBDaHA0AIAAjAEHU8wpqQQEQ2hwNACAAIwBB6fMKakECENocDQAgACMAQZzGCmpBABDaHA0AIAAjAEH+9QpqQQQQ2hwNACAAIwBBgocKakGAgIAIENocDQAgACMAQcX3CmpBAhDaHA0AIAAjAEHz9QpqQQEQ2hwNACAAIwBB/PcKakECENocDQAgACMAQfH3CmpBAxDaHA0AIAAjAEHZ9wpqQQQQ2hwNACAAIwBBufcKakEFENocDQAgACMAQa71CmpBBhDaHA0AIAAjAEGqzgpqQQEQ2hwNACAAIwBBuc4KakECENocDQAgACMAQbHOCmpBABDaHA0AIAAjAEGogApqQQMQ2hwNACAAIwBBt5oKakEAENocDQAgACMAQbm3CmpBARDaHA0AIAAjAEGklgpqQQIQ2hwNACAAIwBB8NMKakEDENocDQAgACMAQazrCmpBBRDaHA0AIAAjAEGhzApqQYCAgIAEENocDQAgACMAQe/oCWpBARDaHA0AIAAjAEGU9AlqQQIQ2hwNACAAIwBB58sKakGAAhDaHA0AIAAjAEHEywpqQQAQ2hwNACAAIwBBxOMKakGAIBDaHA0AIAAjAEGA+gpqQQQQ2hwNACMAIgFB4P+8AWpBFCABQaS5AmogABCfMA0AIwAiAUHA+bwBakEDIAFB/7gCaiAAEJ8wDQAjACIBQeD5vAFqQd8AIAFBlrkCaiAAEJ8wDQAjwwEoAgAiASABKAIAQQFqNgIAIAAjACICQfbCA2ogARDZHBogAkGwg70BaiIBIAJByfsAajYCACABEJESIgFFDQAgASABKAIAQQFqNgIAIAAjACICQc/7AGogARDZHBogBSABNgIgIAJBwIO9AWoiASACQYL7AGo2AgAgASgCCCICI5kKKAIAIgQ2AkggAkFAayAENgIAIAIgBDYCOCABEJESIgFFDQAgASABKAIAQQFqNgIAIAAjACICQYX7AGogARDZHBogBSABNgIMIAJBwOLtAWogASgCnAE2AgAgASMCQcQbajYCnAEgAkHQg70BaiIBIAJBkfsAajYCACABEJESIgFFDQAgASABKAIAQQFqNgIAIAAjACICQZT7AGogARDZHBogBSABNgIQIAJBlPC8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MwECfyAAEL8gAkAgACgCECIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCyAAEMUgCyIAAkAgACgCECIABEAgACACIAERAAAiAA0BC0EAIQALIAALowEBBX8gACgCECgCHCAAKAIURwRAIABBADYCGCO+ASgCACMAQZH9BGoQtBpBAA8LIAAoAhgiAUUEQEEADwsgACgCCCIDIAAoAgwiBEECdGooAgQhAiAAIAFBAWsiBTYCGCAAIARBAWoiATYCDAJAIAFBwABHDQAgBUEATA0AIAMoAoQCIQEgAEEANgIMIAAgATYCCAsgAiACKAIAQQFqNgIAIAILlgMBBn8jAUEgayIDJAFBACEAIANBADYCHCADIwAiAkGwmb0BajYCACADIANBGGo2AgQgAyADQRxqNgIIAkAgASACQeC6BGogAxDwGkUNACADKAIYIQIjAEHInL0BahDCICIBRQ0AIAEgAigCDDYCCCABIAIoAhQ2AgwgAiACKAIAQQFqNgIAIAEgAjYCECABIAIoAhw2AhQgASACKAIINgIYIAEQviACQCADKAIcIgVBAEwNAANAIAEoAhAoAhwgASgCFEcEQEEAIQAgAUEANgIYI74BKAIAIwBBkf0EahC0GiABKAIYRQ0CIAEgASgCAEEBayICNgIAIAINAyABENUQDAMLIAEoAhgiBEUNASABKAIIIgYgASgCDCIHQQJ0aigCBCECIAEgBEEBayIINgIYIAEgB0EBaiIENgIMAkAgBEHAAEcNACAIQQBMDQAgBigChAIhBCABQQA2AgwgASAENgIICyACKAIARQRAIAIQ1RAgAygCHCEFCyAAQQFqIgAgBUgNAAsLIAEhAAsgA0EgaiQBIAALCgAgACgCGBCuDQtWAQN/IwFBEGsiASQBIAAoAhghAiAAKAIQIgMoAgghBCAAKAIEIQAgASADNgIEIAEgADYCACABIAQgAms2AggjAEHNlQ1qIAEQzRwhACABQRBqJAEgAAuhAQEFfyAAKAIYIgFFBEBBAA8LIAAoAhAoAhwgACgCFEcEQCAAQQA2AhgjvgEoAgAjAEGR/QRqELQaQQAPCyAAKAIIIgMgACgCDCIEQQJ0aigCBCECIAAgAUEBayIFNgIYIAAgBEEBayIBNgIMAkAgAUEATg0AIAVBAEwNACADKAIAIQEgAEE/NgIMIAAgATYCCAsgAiACKAIAQQFqNgIAIAILlAMBBn8jAUEgayIDJAFBACEAIANBADYCHCADIwAiAkGwmb0BajYCACADIANBGGo2AgQgAyADQRxqNgIIAkAgASACQeC6BGogAxDwGkUNACADKAIYIQIjAEGUnr0BahDCICIBRQ0AIAEgAigCEDYCCCABIAIoAhg2AgwgAiACKAIAQQFqNgIAIAEgAjYCECABIAIoAhw2AhQgASACKAIINgIYIAEQviACQCADKAIcIgVBAEwNAANAIAEoAhgiBEUNASABKAIQKAIcIAEoAhRHBEBBACEAIAFBADYCGCO+ASgCACMAQZH9BGoQtBogASgCGEUNAiABIAEoAgBBAWsiAjYCACACDQMgARDVEAwDCyABKAIIIgYgASgCDCIHQQJ0aigCBCECIAEgBEEBayIINgIYIAEgB0EBayIENgIMAkAgBEEATg0AIAhBAEwNACAGKAIAIQQgAUE/NgIMIAEgBDYCCAsgAigCAEUEQCACENUQIAMoAhwhBQsgAEEBaiIAIAVIDQALCyABIQALIANBIGokASAAC0MBAn8gABC/IAJAIAAoAgwiAUUNACAAQQA2AgwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIAAgACgCBCgCoAERAwALPwECfyMBQRBrIgEkASAAKAIEELUSIQIgASAAKQIINwIEIAEgAjYCACMAQYnCDWogARCkFCEAIAFBEGokASAACzIBAX8CQCAAKAIMIgFFDQAgAEEANgIMIAEgASgCAEEBayIANgIAIAANACABENUQC0EAC8UBAQJ/IwFBEGsiAiQBAkAgAUUEQCAAIAAoAgBBAWo2AgAMAQsgACgCCCEDIAEoAgQiBC0AV0EEcUUEQCOyASABRgRAIAAgACgCAEEBajYCAAwCCyAEKAIMIQAgAiADNgIAIAIgADYCBCO1ASgCACMAQeatAWogAhCuGhpBACEADAELIAEoAgggA00EQCPOASgCACMAQczhB2oQtBpBACEADAELIAEgA0ECdGooAgwiACAAKAIAQQFqNgIACyACQRBqJAEgAAsbACPJASgCACMAQeHdBkGh3wYgAhtqELQaQX8L8gEBAn8CQAJAIwBB4J+9AWogAEcEQCMAIQMgAkUNAiAAKAKUASADQeCfvQFqKAKUAUYNAQwCCyACRQ0BCyMA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oQgiAEUNACO7ASAARwRAIAAgACgCAEEBayIBNgIAIAFFBEAgABDVEAsQ6TEiAEUNASAAKAIIIwBBs60MahC0GgwBCyABI7sBIgJHDQAjuwEiAiACKAIAQQFrIgA2AgAgAA0AI7sBIgIQ1RALIANBEGokASACC8cBAQR/AkAgACgCAARAIAAQohAMAQsgABCjEEEATg0AIAAoAgQiAC0AVUECcQRAIAAgACgCAEEBajYCAAsPCyAAQQhrIgFBBGoiAigCAEF8cSIEIAEoAgAiAzYCACADIAMoAgRBA3EgBHI2AgQgAUEANgIAIAIgAigCAEEBcTYCACAAKAIMBEAgABDFFgsCQCAAKAIIIgFFDQAgAEEANgIIIAEgASgCAEEBayICNgIAIAINACABENUQCyAAIAAoAgQoAqABEQMAC5EBAQR/IwFBEGsiASQBAn8CQCAAI7ABQdCPAWogAUEMahCsECIDQQBMDQAgASgCDBCxECEDIAEoAgwiAiACKAIAQQFrIgQ2AgAgBEUEQCACENUQCyADQQBMDQAjtwEoAgAjAEHUrAxqELQaQQAMAQtBACADDQAaIAAgACgCAEEBajYCACAACyECIAFBEGokASACC2oBA38jAUEQayICJAEgAiAANgIMQQAhAAJAI7ABQZCmAWogAkEMakGBgICAeEEAEKEIIgFFDQAgARC0BUEASgRAIAEhAAwBCyABIAEoAgBBAWsiAzYCACADDQAgARDVEAsgAkEQaiQBIAALiQIBBH8jAUEgayIBJAEjsAEhAiABQRRqIAFBEGogAUEMahC8GgJAIAAgAkHQjwFqIAFBGGoQrBBBAEwEQBC9GgwBCyABKAIYELEQIQMgASgCGCICIAIoAgBBAWsiBDYCACAERQRAIAIQ1RALAkACQCADQQFqDgIAAQILEL0aDAELIAAjsAFBgIgBaiO7ARC5EARAEL0aCyABIAA2AhwgASOwAUGwjwFqIAFBHGpBgYCAgHhBABChCCICNgIYIAJFBEAQ9h0oAgwEQCAAENwaDAILEL0aDAELIAIgAigCAEEBayIANgIAIAANACACENUQCyABKAIUIAEoAhAgASgCDBCoGiABQSBqJAELGwAQ6TEiAARAIAAoAggjAEGY0gVqELQaC0EACzcAIwFBEGsiASQBIAFCgICAgBA3AwAgACOwAUGEqAFq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ACgCCCIARQRAI7cBKAIAIwBBjasBahC0GkEADwsgACOwAUHUogFqELUQIgBFBEAjyQEoAgAjsAFB1KIBahCvGkEADwsgACABEJcIIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC24BAX8gACgCCCIARQRAI7cBKAIAIwBBjasBahC0GkEADwsgACOwAUHkpAFqELUQIgBFBEAjyQEoAgAjsAFB5KQBahCvGkEADwsgACABEJcIIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC24BAX8gACgCCCIARQRAI7cBKAIAIwBBjasBahC0GkEADwsgACOwAUHIpQFqELUQIgBFBEAjyQEoAgAjsAFByKUBahCvGkEADwsgACABEJcIIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC24BAX8gACgCCCIARQRAI7cBKAIAIwBBjasBahC0GkEADwsgACOwAUHspQFqELUQIgBFBEAjyQEoAgAjsAFB7KUBahCvGkEADwsgACABEJcIIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC24BAX8gACgCDCIARQRAI7cBKAIAIwBBjasBahC0GkEADwsgACOwAUGYrgFqELUQIgBFBEAjyQEoAgAjsAFBmK4BahCvGkEADwsgACABEJcIIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC24BAX8gACgCDCIARQRAI7cBKAIAIwBBjasBahC0GkEADwsgACOwAUG0lgFqELUQIgBFBEAjyQEoAgAjsAFBtJYBahCvGkEADwsgAEEAEJcIIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC24BAX8gACgCCCIARQRAI7cBKAIAIwBBjasBahC0GkEADwsgACOwAUGEpQFqELUQIgBFBEAjyQEoAgAjsAFBhKUBahCvGkEADwsgAEEAEJcIIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC24BAX8gACgCDCIARQRAI7cBKAIAIwBBjasBahC0GkEADwsgACOwAUH0rQFqELUQIgBFBEAjyQEoAgAjsAFB9K0BahCvGkEADwsgAEEAEJcIIQEgACAAKAIAQQFrIgI2AgAgAkUEQCAAENUQCyABC+8CAQN/IwFBEGsiAiQBIAJB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FCEGIAgQ/RAgBkUNBSAALQAQIQkMBgsgBCEBIAkhAwwACwALAAsQzhoaCyAGIAYoAgBBAWsiATYCACABDQAgBhDVEAtBACEGDAELIAAgBUECdEEccSAJcjoAEAsgC0EgaiQBIAYL6QgBCH8gBSAEayIHIANtIQsCQAJAAkAgAARAIANBAUYNASADQQFrIQEgBCEAA0ACfwJAAkACQCABDgIAAQILIAAtAAAMAgsgAC8BAAwBCyAAKAIACyICQQtJBEACfwJAAkACQCABDgIAAQILIAJB/wFxDAILIAAvAQAMAQsgACgCAAtBCkYNBCAAIAVGDQULIAAgA2ohAAwACwALIAEEQCADQQFrIQEgBCEAAkADQAJ/AkACQAJAIAEOAgABAgsgAC0AAAwCCyAALwEADAELIAAoAgALIgJBDk8EQCAAIANqIQAMAQsgACAFTw0FAn8CQAJAAkAgAQ4CAAECCyACQf8BcQwCCyAALwEADAELIAAoAgALIQIgACADaiEAAkAgAkEKaw4EAAEBAgELCyAAIARrIANtDwsgACAEayADbQJ/AkACQAJAIANBAWsOAgABAgsgAC0AAAwCCyAALwEADAELIAAoAgALQQpGag8LIAIoAgghCAJ/IAIoAhAiAEEgcQRAIAJBGEEkIABBwABxG2oMAQsgAigCJAshCQJAAkAgCEEBRgRAIAktAAAhASADQQFGDQEgA0EBayEHIAQhAANAAn8CQAJAAkAgBw4CAAECCyAALQAADAILIAAvAQAMAQsgACgCAAsiAiABTQRAAn8CQAJAAkAgBw4CAAECCyACQf8BcQwCCyAALwEADAELIAAoAgALIAFGDQQgACAFRg0HCyAAIANqIQAMAAsACyAEIAVBASAIayADbGoiACAAIARJGyECIAktAAAiAcAhDAJAIAAgBE0NACADQQFHIQ0gCEECSCEOIANBAWshCiAEIQADQAJAIA1FBEAgACAMIAUgAGsQlUIhAAwBCwNAAn8CQAJAAkAgCg4CAAECCyAALQAADAILIAAvAQAMAQsgACgCAAsiByABTQRAAn8CQAJAAkAgCg4CAAECCyAHQf8BcQwCCyAALwEADAELIAAoAgALIAFGDQIgACAFRg0ECyAAIANqIQAMAAsACyAARQ0BIAAgAk8NAUEBIQcCQAJAAkAgDg0AA0ACfwJAAkACQCAKDgIAAQILIAAgB2otAAAMAgsgACAHQQF0ai8BAAwBCyAAIAdBAnRqKAIACyAHIAlqLQAARw0BIAdBAWoiByAIRw0ACwwBCyAHIAhHDQELIAAgBGsgA20gCGoPCyAAIANqIgAgAkkNAAsLAkAgA0EBRwRAIANBAWshBwNAIAECfwJAAkACQCAHDgIAAQILIAItAAAMAgsgAi8BAAwBCyACKAIACyIATwRAAn8CQAJAAkAgBw4CAAECCyAAQf8BcQwCCyACLwEADAELIAIoAgALIAFGDQMgAiAFRg0ICyACIANqIQIMAAsACyACIAwgBSACaxCVQiICRQ0FCyACIARrIANtIQsMBAsgBCABwCAHEJVCIgBFDQMLIAAgBGsgA21BAWoPCyAEQQogBxCVQiIARQ0BCyAAIARrIANtQQFqDwsgBiALNgIAQX8LzgIBBH8jAUEQayIFJAEgASgCCCEDAkACQAJAIAIEQCABQQxqIQEgAigCCCADaiEEDAELIAFBDGohASADIQQgA0F+cUECRw0ADAELIAEgAyACQQAjAEHA370BakECQQNBACAFQQRqEIobIgENAEF/IQIMAQsgASgCACEDQX8hAiABKAIEEKENIgZBf0YEQBC1Gg0BC0EAIQIgBEECRwRAIAEoAgghAgsgAiOwAUGsqgFqIAIbIgIgAigCAEEBajYCACAAKAIMIQEgACACNgIMAkAgAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgACgCCCEBIAMgAygCAEEBajYCACAAIAM2AggCQCABRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQC0EAIQIgACAALQAQQeABcSAGQQBHQQF0cjoAEAsgBUEQaiQBIAILgAEBBH8gAEEBOgA4IAAQ8jFBAE4EQCAAQQA2AgggAEEIayIBQQRqIgIoAgBBfHEiBCABKAIAIgM2AgAgAyADKAIEQQNxIARyNgIEIAFBADYCACACIAIoAgBBAXE2AgAgACgCZARAIAAQxRYLIAAQhzMaIAAgACgCBCgCoAERAwALC/EDAQJ/IABBADYCCAJAIAAoAhQiAUUNACAAQQA2AhQgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCGCIBRQ0AIABBADYCGCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsC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FEEAQX8gAhsQxBQLSwAgACgCCEEATARAI7cBKAIAIwBBjasBahC0GkEADwsgACgCDARAI7cBKAIAIwBByf0IahC0GkEADwsgACgCFCOwAUHsnwFqELUQC44BAQF/IwFBEGsiAiQBQQAhAQJAIAAoAghBAEwEQCO3ASgCACMAQY2rAWoQtBoMAQsgACgCDARAI7cBKAIAIwBByf0IahC0GgwBCwJAIAAoAiAiAARAIAAjsAFBjKABaiACQQxqEKwQDQELI7IBIgEgASgCAEEBajYCAAwBCyACKAIMIQELIAJBEGokASABCzQAIAAoAghBAEwEQCO3ASgCACMAQY2rAWoQtBpBAA8LIAAoAigiACAAKAIAQQFqNgIAIAALQwAgACgCCEEATARAI7cBKAIAIwBBjasBahC0GkEADwsgACgCDARAI7cBKAIAIwBByf0IahC0GkEADwsgACgCEBCuDQujAQAgACgCCEEATARAI7cBKAIAIwBBjasBahC0GkF/DwsgACgCDARAI7cBKAIAIwBByf0IahC0GkF/DwsgAUUEQCPJASgCACMAQfHeBmoQtBpBfw8LQX8hAgJAAkACQCABI7cBKAIAELoFIgFBf0YEQBC1GkUNAQwDC0EAIQIgAUEASg0BCyO3ASgCACMAQb7hCGoQtBpBfw8LIAAgATYCEAsgAgu2AgEEfyAAQQhrIgFBBGoiAigCAEF8cSIEIAEoAgAiAzYCACADIAMoAgRBA3EgBHI2AgQgAUEANgIAIABBADoAJCACIAIoAgBBAXE2AgAgACgCCCIBBEAgARD9ECAAQQA2AggLIABBHGoQrQYCQCAAKAIsIgFFDQAgAEEANgIsIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAjAiAUUNACAAQQA2AjAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCKCIBRQ0AIABBADYCKCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAI0IgFFDQAgAEEANgI0IAEgASgCAEEBayICNgIAIAINACABENUQCyAAKAI4BEAgABDFFgsgACAAKAIEKAKgAREDAAsiAAJAIAAoAjQiAARAIAAgAiABEQAAIgANAQtBACEACyAACzIBAX8CQCAAKAI0IgFFDQAgAEEANgI0IAEgASgCAEEBayIANgIAIAANACABENUQC0EAC5YDAQd/IwFBEGsiAiQBAkAgACwAJEEATARAI7cBKAIAIwBBjasBahC0GgwBCwJAIAAtACUEQCO3ASgCACMAQd7DB2oQtBoMAQsgABC+M0EASA0AAkACfwJAIAAoAgQjAEHw470BakYEQCAAKAIQIgEgACgCDCIDSg0BQQBBABD+EwwCCyACIAA2AgwjsAFBkKYBaiACQQxqQYGAgIB4QQAQoQgiAEUNBCAAKAIEIgMtAFdBEHENAiACIAMoAgw2AgAjwwEoAgAjAEG45g1qIAIQrhoaIAAgACgCAEEBayIDNgIAIAMNBCAAENUQDAQLIAAoAggiBCABQQJ0aiIFKAIAIQYgBUEANgIAIAAsACcgACwAJiAAKAIsQQQgBCADQQJ0aiIHIAUgAkEIahCEMyEEIAUgBjYCACAAIAEgA2sgBCAEQQBIGyIBIAAoAgxqNgIMQQQgByABEJMUCyIARQ0BCyAAKAIIBEAgACEBDAILIAAgACgCAEEBayIBNgIAIAENACAAENUQC0EAIQELIAJBEGokASABC6gCAQR/AkAgACgCGEEBRg0AIABBATYCGCAAQRxqEKwGIgJFBEBBfw8LAkACQAJAAkACQCACKAIIIgRBAWoiAUEASA0AAn8gBEECaiAAKAIUIgNBAXYgAUsNABogASADSQRAIAAoAgghAwwFCyABQQN2IAFqQQNBBiABQQlJG2ogAbggA7hEAAAAAAAA8j+iZQ0AGiAEQQJqCyIBQf////8DSw0AIAAoAgggAUECdBD8ECIDDQIQzhoaDAELI8ABKAIAIwBBtd4HahC0GgtBfyEBIAIgAigCAEEBayIANgIAIABFDQIMAwsgACADNgIIIAAgATYCFAsgAiADIARBABCZFCEAIAIgAigCAEEBayIENgIAQQBBfyAAGyEBIAQNAQsgAhDVEAsgAQu3CAEGfyMBQUBqIgQkASABKAIIIQMCfwJAAkAgAgRAIAFBDGohASACKAIIIANqIQUMAQsgAUEMaiEBIAMhBSADQQNPDQAMAQsgASADIAJBACMAQcjlvQFqQQBBAkEAIARBOGoQihsiAQ0AQX8MAQsjACECAkACQAJAAkAgBUUEQCACQdHiDmohAkEAIQMMAQsjACECAkAgASgCACIDRQ0AIAVBAUcNACACQdHiDmohAgwBCyABKAIEIgEjsgFGBEBBACECQQEhBgwDCyMAIQIgAUUEQCACQdHiDmohAgwBCyABKAIEIgItAFdBEHFFBEAgBCACKAIMNgIwI7UBKAIAIwBBj+QCaiAEQTBqEK4aGkF/DAULIAEQ2RQiAg0BQX8MBAtBACEBCwJAAkAgAi0AAA4OAgMDAwMDAwMDAwEDAwADCwJAIAItAAEOCwIDAwMDAwMDAwMAAwsgAi0AAkUNAQwCCyACLQABDQELAkAgA0EARyADI7IBR3EiBUUNACADKAIEIgEtAFdBEHENACAEIAEoAgw2AhAjtQEoAgAjAEHh4wJqIARBEGoQrhoaQX8MAgsgAEEAOgAkIABBHGoiCBCtBgJAIAAoAiwiAUUNACAAQQA2AiwgASABKAIAQQFrIgc2AgAgBw0AIAEQ1RALAkAgACgCMCIBRQ0AIABBADYCMCABIAEoAgBBAWsiBzYCACAHDQAgARDVEAsCQCAAKAIoIgFFDQAgAEEANgIoIAEgASgCAEEBayIHNgIAIAcNACABENUQCwJAAkAgBgRAIABBgQI7ASYjuwEhAgwBCyAAIAIQjxQiATYCLEF/IAFFDQMaIAItAAAhBiAAQQA6ACcgACAGRToAJiACLQAAQQ1GBEAgACABNgIwIAEgASgCAEEBajYCAAsjvAEhAiAGDQELIARBADYCKCAEIAI2AiQgBCOyATYCICAAI60EIARBIGoQpQgiAjYCKCACDQBBfwwCCyAAQQA2AhACQAJAAkACQCAFRQ0AIAMQ3BRBAEwNAAJAAn9BAiAAKAIUIgFBA0sNABogAUEBSw0BQQQgAbhEAAAAAAAA8j+iRAAAAAAAAPA/Zg0AGkECCyECIAAoAgggAkECdBD8ECIBRQ0DIAAgATYCCCAAIAI2AhQLIABBADYCDCAAQQE2AhggACADEMAzQQBODQFBfwwFCwJAAn9BAiAAKAIUIgNBA0sNABogA0EBSw0BQQQgA7hEAAAAAAAA8j+iRAAAAAAAAPA/Zg0AGkECCyECIAAoAgggAkECdBD8ECIDRQ0DIAAgAzYCCCAAIAI2AhQLQX8gCBCoBg0EGiAAQQI2AhgLIABBADYCDCAAQQE7ASRBAAwDCxDOGhpBfwwCCxDOGhpBfwwBCyAEIAE2AgAjtwEoAgAjAEG5rApqIAQQrhoaQX8LIQIgBEFAayQBIAIL6QQBBn8CQCAAKAIoIgIEQCACIAFBARCDMyEBDAELIAEgASgCAEEBajYCAAsCQCAAKAIwIgJFBEAgASECDAELIAEjsAFB4NgAaiACQX8QoxUhAiABIAEoAgBBAWsiBTYCACAFDQAgARDVEAsgAkUEQEF/DwsCQAJAAkAgAi0AEEGAAXENACACEIIURQ0AQX8hASACIAIoAgBBAWsiADYCACAARQ0BDAILAkAgACgCDCIBIAIoAggiBUH/////B3NKBEAjwAEoAgAjAEHT3QdqELQaDAELAkACQCAAKAIYQQJGBEAgASAAKAIQRgRAIABBHGogAhCpBkUNAgwECyAAEL4zDQMgACgCDCEBCwJAIAEgBWoiBiAAKAIQIgNMDQAgBkEBaiIEQQBIDQICfyAGQQJqIAAoAhQiB0EBdiAESw0AGiAEIAdJDQEgBEEDdiAEakEDQQYgBEEJSRtqIAS4IAe4RAAAAAAAAPI/omUNABogBkECagsiAUH/////A0sNAiAAKAIIIAFBAnQQ/BAiA0UEQBDOGhoMBAsgACADNgIIIAAgATYCFCAAKAIQIQMgACgCDCEBCyABIANKBEAgACgCCCADQQJ0akEAIAEgA2tBAnQQ0D4aIAAoAgwhAQsgAiAAKAIIIAFBAnRqIAAoAhQgAWtBABCZFEUNAgsgACAAKAIMIAVqIgE2AgwgASAAKAIQSgRAIAAgATYCEAsgAiACKAIAQQFrIgA2AgBBACEBIABFDQIMAwsjwAEoAgAjAEG13gdqELQaC0F/IQEgAiACKAIAQQFrIgA2AgAgAA0BCyACENUQCyABC0wAQQAhASAAQQAgACgCmAERAAAiAAR/IABBABD6ECIBNgIIIAEEQCAADwsgACAAKAIAQQFrIgE2AgAgAUUEQCAAENUQCxDOGgUgAQsLjwIBAX8gAEEBOgAlAkACQAJ/QQIgACgCFCICQQNLDQAaIAJBAUsNAUEEIAK4RAAAAAAAAPI/okQAAAAAAADwP2YNABpBAgshASAAKAIIIAFBAnQQ/BAiAkUNASAAIAI2AgggACABNgIUCyAAQRxqEK0GAkAgACgCLCIBRQ0AIABBADYCLCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIwIgFFDQAgAEEANgIwIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAigiAUUNACAAQQA2AiggASABKAIAQQFrIgA2AgAgAA0AIAEQ1RALI7IBIgAgACgCAEEBajYCACAADwsQzhoaQQALBwAgABDEMwuxAQEDfyAALAAkQQBMBEAjtwEoAgAjAEGNqwFqELQaQQAPCyAALQAlBEAjtwEoAgAjAEHewwdqELQaQQAPCwJAIAAoAhhBAkYEQCAAQRxqIgIQrAYhASAAQQE2AhggAUUNAQJAIAIQqAZFBEAgAiABEKkGRQ0BCyABIAEoAgBBAWsiADYCACAADQIgARDVEEEADwsgAEECNgIYIAEPC0EEIAAoAgggACgCEBCTFCEDCyADC+oCAQR/IwFBEGsiBSQBQX8hAyAFQX82AgwCQCACQQJPBEAjAEGpiglqIAJBAEEBEIwbRQ0BCyACQQBKBEAgASgCACAFQQxqEMwcRQRADAILIAUoAgwhAwsgACwAJEEATARAI7cBKAIAIwBBjasBahC0GgwBCyAALQAlBEAjtwEoAgAjAEHewwdqELQaDAELIAAoAhAgACgCDCIGayICQQAgAkEAShsiASABIAMgAiADSBsgA0EASBshAwJAIAAoAhhBAkcNACAGDQAgAiADRw0AIABBHGoiAxCsBiECIABBATYCGAJAIAJFDQACQCADEKgGRQRAIAMgAhCpBkUNAQsgAiACKAIAQQFrIgM2AgAgAw0BIAIQ1RAMAQsgAEECNgIYIAIhBAsgACAAKAIQNgIMDAELIAAQvjNBAEgNACAAIAAoAgwiAiADajYCDEEEIAAoAgggAkECdGogAxCTFCEECyAFQRBqJAEgBAvRAgEFfyMBQRBrIgYkAUF/IQMgBkF/NgIMAkAgAkECTwRAIwBBpZoHaiACQQBBARCMG0UNAQsgAkEASgRAIAEoAgAgBkEMahDMHEUNASAGKAIMIQMLIAAsACRBAEwEQCO3ASgCACMAQY2rAWoQtBoMAQsgAC0AJQRAI7cBKAIAIwBB3sMHahC0GgwBCyAAEL4zQQBIDQAjAUEQayIBJAECfyAAKAIQIgUgACgCDCIETARAQQBBABD+EwwBCyAAKAIIIARBAnRqIgcgBSAEayIEIAQgAyADIARKGyADQQBIGyIFQQJ0aiIDKAIAIQIgA0EANgIAIAAsACcgACwAJiAAKAIsQQQgByADIAFBDGoQhDMhBCADIAI2AgAgACAFIAQgBEEASBsiAyAAKAIMajYCDEEEIAcgAxCTFAshACABQRBqJAEgACEFCyAGQRBqJAEgBQtDACAALAAkQQBMBEAjtwEoAgAjAEGNqwFqELQaQQAPCyAALQAlBEAjtwEoAgAjAEHewwdqELQaQQAPCyAAKAIMEK4NC/kCAQN/IwFBEGsiBSQBIAUgACgCDCIDNgIMAkAgAkECTwRAIwBBie8GaiACQQBBARCMG0UNAQsgAkEASgRAIAEoAgAgBUEMahDMHEUEQAwCCyAFKAIMIQMLIAAsACRBAEwEQCO3ASgCACMAQY2rAWoQtBoMAQsgAC0AJQRAI7cBKAIAIwBB3sMHahC0GgwBCyADQQBIBEAgBSADNgIAI7cBKAIAIwBBnKYIaiAFEK4aGgwBCyADIAAoAhBIBEAgABC+M0EASA0BAkACQAJ/IANBAmogA0EBaiICIAAoAhQiAUEBdkkNABogASACSw0CIAJBA3YgAmpBA0EGIANBCEkbaiACuCABuEQAAAAAAADyP6JlDQAaIANBAmoLIgJB/////wNNBEAgACgCCCACQQJ0EPwQIgENARDOGhoMBAsjwAEoAgAjAEG13gdqELQaDAMLIAAgATYCCCAAIAI2AhQLIAAgAzYCEAsgAxCuDSEECyAFQRBqJAEgBAuPAwEEfyMBQSBrIgYkAQJ/AkAgAkEBa0ECSQ0AIwBBmNIFaiACQQFBAhCMGw0AQQAMAQsCQCABKAIAELwFIgUEQCAFEKINIQQgBSAFKAIAQQFrIgM2AgAgA0UEQCAFENUQCyAEQX9HDQELQQAQtRoNARpBfyEEC0EAIQMCQCACQQJIDQAgASgCBBChDSIDQX9HDQBBfyEDQQAQtRoNARoLIAAsACRBAEwEQCO3ASgCACMAQY2rAWoQtBpBAAwBCyAALQAlBEAjtwEoAgAjAEHewwdqELQaQQAMAQsgA0EDTwRAIAYgAzYCACO3ASgCACMAQYTKDWogBhCuGhpBAAwBCwJAIARBAE4NACADDQAgBiAENgIQI7cBKAIAIwBBlKMIaiAGQRBqEK4aGkEADAELAkAgBEUNACADRQ0AI8MBKAIAIwBBz5ICahC0GkEADAELAkACfwJAAkAgA0EBaw4CAAEDCyAAQQxqDAELIABBEGoLKAIAIQQLIAAgBDYCDCAEEK4NCyEFIAZBIGokASAFC8QBAQN/IwFBEGsiAyQBAkAgACwAJEEATARAI7cBKAIAIwBBjasBahC0GgwBCyABKAIEIgItAFdBEHFFBEAgAyACKAIMNgIAI7UBKAIAIwBB+YAOaiADEK4aGkEAIQIMAQsgAS0AEEGAAXFFBEBBACECIAEQghQNAQsgAC0AJQRAI7cBKAIAIwBB3sMHahC0GkEAIQIMAQsgASgCCCIEQQBKBEBBACECIAAgARDAM0EASA0BCyAEEK4NIQILIANBEGokASACC00AIAAsACRBAEwEQCO3ASgCACMAQY2rAWoQtBpBAA8LIAAtACUEQCO3ASgCACMAQd7DB2oQtBpBAA8LI7sBIgAgACgCAEEBajYCACAAC8UBAQN/IwFBEGsiAiQBAkAgABDEMyIDRQRAQQAhAAwBCwJAAkAgACgCNCIBRQRAI7IBIgQgBCgCAEEBajYCAAwBCyABEKkOIgQNACADIAMoAgBBAWsiATYCAEEAIQAgAQ0CDAELIAAoAiwhASAAKAIMIQAgAiAENgIMIAIgADYCCCACIAM2AgAgAiABI7IBIAEbNgIEIwBB58MNaiACENEcIQAgAyADKAIAQQFrIgE2AgAgAQ0BCyADENUQCyACQRBqJAEgAAvABQEFfyMBQTBrIgUkAQJAIAAtACUEQCO3ASgCACMAQd7DB2oQtBoMAQsCQCABKAIEIgItAFdBBHEEQCABKAIIQQNKDQELIAIoAgwhAiAFIAAoAgQoAgw2AgAgBSACNgIEI7UBKAIAIwBB7+oCaiAFEK4aGkEAIQIMAQtBACECIAFBAEECEJoSIgNFDQAgACADQQAQvzMhBiADIAMoAgBBAWsiBDYCACAGQQBIBEAgBA0BIAMQ1RAMAQsgBEUEQCADENUQCyABKAIMIgMQmxQiAkUEQEEAIQIMAQsCQAJAAkACQCADKAIIIgZBAWoiA0EASA0AAn8gBkECaiAAKAIUIgRBAXYgA0sNABogAyAESQRAIAAoAgghBAwFCyADQQN2IANqQQNBBiADQQlJG2ogA7ggBLhEAAAAAAAA8j+iZQ0AGiAGQQJqCyIDQf////8DSw0AIAAoAgggA0ECdBD8ECIEDQIQzhoaDAELI8ABKAIAIwBBtd4HahC0GgsgAhD9EEEAIQIMAgsgACAENgIIIAAgAzYCFAsgBCACIAZBAnQQzj4aIAIQ/RAgACAGNgIQIAEoAhQiAigCBCIDLQBXQQFxRQRAIAUgAygCDDYCECO1ASgCACMAQbzqAmogBUEQahCuGhpBACECDAELAkACQCACEKINIgJBf0YEQEEAIQIQtRpFDQEMAwsgAkEATg0BCyO3ASgCACMAQZjCBmoQtBpBACECDAELIAAgAjYCDAJAIAEoAhgiASOyAUYNACABKAIEIgItAFdBIHFFBEAgBSACKAIMNgIgI7UBKAIAIwBBpoYDaiAFQSBqEK4aGkEAIQIMAgsgACgCNCIDBEBBACECIAMgARCjDkEATg0BDAILIAEgASgCAEEBajYCACAAIAE2AjQLI7IBIgIgAigCAEEBajYCAAsgBUEwaiQBIAILKAAgACwAJEEATARAI7cBKAIAIwBBjasBahC0GkEADwsgACwAJRCuBgtmACAALAAkQQBMBEAjtwEoAgAjAEGNqwFqELQaQQAPCyAALQAlBEAjtwEoAgAjAEHewwdqELQaQQAPCyAAKAIoIgBFBEAjsgEiACAAKAIAQQFqNgIAIAAPCyAAI7ABQYygAWoQtRALTQAgACwAJEEATARAI7cBKAIAIwBBjasBahC0GkEADwsgAC0AJQRAI7cBKAIAIwBB3sMHahC0GkEADwsjvAEiACAAKAIAQQFqNgIAIAALDQAjAEHs5b0BahDwDwvhBQEEfyMBQRBrIgMkAQJAAkAgAkEBa0ECSQ0AIwBBnuwHaiACQQFBAhCMGw0AQQAhAgwBCyABKAIAIQACQAJAIAJBAk4EQAJAAkACQCABKAIEELwFIgIEQCACEKINIQQgAiACKAIAQQFrIgE2AgAgAUUEQCACENUQCyAEQX9HDQELQQAhAhC1GkUNAQwGCyAEQQBODQELI7cBKAIAIwBB6ckLahC0GkEAIQIMBAsgBBCTEiICDQFBACECDAMLQQIhBEECEJMSIgINAUEAIQIMAgsgBEUNAQsCQCAAEIcGIgFFBEAgAiACKAIAQQFrIgE2AgAgAUUNAUEAIQIMAgsgASOwAUHo4gBqIANBDGoQrBBBAEgEQCABIAEoAgBBAWsiADYCACAARQRAIAEQ1RALIAIgAigCAEEBayIBNgIAIAFFDQFBACECDAILAkAgAygCDEUEQCABENMzIQAgASABKAIAQQFrIgU2AgAgBUUEQCABENUQCyAARQRAIAIgAigCAEEBayIBNgIAIAFFDQNBACECDAQLIAMgACOwAUHo4gBqELUQIgE2AgwgAUUNASAAIQELIAIgATYCDCAEQQJPBEBBASEAA0AjsAEoAugCIQYCfwJAIAMoAgwiASgCBCIFLQBVQQhxBEAgASAFKAIcaigAACIFDQELIAYgAUEAQQBBABCICAwBCyAGIAEgAUEAQQBBACAFEQQAQQAQhggLIgFFBEAgAygCDCIBIAEoAgBBAWsiADYCACAARQRAIAEQ1RALIAIgAigCAEEBayIBNgIAIAFFDQRBACECDAULIAIgAEECdGogATYCDCAAQQFqIgAgBEcNAAsLIAMoAgwiASABKAIAQQFrIgA2AgAgAA0CIAEQ1RAMAgsgACAAKAIAQQFrIgE2AgAgAUUEQCAAENUQCyACIAIoAgBBAWsiATYCACABRQ0AQQAhAgwBCyACENUQQQAhAgsgA0EQaiQBIAILnwIBA38gABCHBiIARQRAQQAPCwJAAkAgACgCBCIBIwBB0Oa9AWpHBEAgASMAQdDmvQFqELkSRQ0BCyMAQdDmvQFqEMIgIgJFBEBBACECDAILIAAoAggiASABKAIAQQFqNgIAIAIgATYCCCAAKAIMIQEgAkEANgIQIAIgATYCDCACEL4gDAELIwBB4Oi9AWoQwiAiAUUEQAwBCyABQQA2AhQgAUIANwIMIAAgACgCAEEBajYCACABIAA2AgggARC+ICMAQdDmvQFqEMIgIgNFBEAgASABKAIAQQFrIgM2AgAgAw0BIAEQ1RAMAQsgA0IANwIMIAMgATYCCCADEL4gIAMhAgsgACAAKAIAQQFrIgE2AgAgAUUEQCAAENUQCyACC0kBAX8jAEHQ5r0BahDCICIBBEAgACgCCCICIAIoAgBBAWo2AgAgASACNgIIIAAoAgwhACABQQA2AhAgASAANgIMIAEQviALIAELRwECfyAAEL8gIAAoAhAEQCAAEMUWCwJAIAAoAggiAUUNACAAQQA2AgggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIAAQxSALPwEBfyAAKAIQBEAgABDFFgsCQCAAKAIIIgFFDQAgAEEANgIIIAEgASgCAEEBayIANgIAIAANACABENUQC0EAC9sCAQR/IAAoAgwiAUE5TgRAIAAoAggiAigCFCIBRQRAIAIoAgghAyMAQeDovQFqEMIgIgFFBEAgAkEANgIUQQAPCyABQQA2AhQgAUIANwIMIAMgAygCAEEBajYCACABIAM2AgggARC+ICACIAE2AhQgACgCCCECCyABIAEoAgBBAWo2AgAgACABNgIIIAIgAigCAEEBayIBNgIAIAFFBEAgAhDVEAsgAEEANgIMQQAhAQsCQAJAIAEgACgCCCICKAIMTgRAIAIoAhAEQCO+ASgCACMAQcG3A2oQtBpBAA8LIAJBATYCEEEAIQMgAigCCBCIBiEEIAJBADYCECAERQ0CIAIgAigCDEEBajYCDCACIAFBAnRqIAQ2AhggBCAEKAIAQQFqNgIAIAAoAgwhASAEIQMMAQsgAiABQQJ0aigCGCIDIAMoAgBBAWo2AgALIAAgAUEBajYCDAsgAwt0AAJAAkAjAEHQ5r0BaiAARwRAIAJFDQIgACgClAEjAEHQ5r0BaigClAFGDQEMAgsgAkUNAQsjAEGd7AdqIAIQjxsNAEEADwsCQCABKAIIIgJBAUYNACMAQZ3sB2ogAkEBQQEQjBsNAEEADwsgASgCDBDTMws8AQF+IwFBEGsiASQBIAApAgQhAiABIAAoAgw2AgggASACNwMAIwBBy5YNaiABENEcIQAgAUEQaiQBIAAL6wEBA38jAUEgayICJAECQCABKAIELQBXQQRxRQRAI7UBKAIAIwBBsLYHahC0GgwBCyACIwAiBEHg6L0BajYCACACIAJBGGo2AgggAiACQRxqNgIEIAEgBEGw4gVqIAIQ8RpFDQAgAigCGCIEQTpPBEAjtwEoAgAjAEH+4QdqELQaDAELIAIoAhwiAyADKAIAQQFqNgIAIAAoAgghASAAIAM2AggCQCABRQ0AIAEgASgCAEEBayIDNgIAIAMNACABENUQIAIoAhghBAsgACAENgIMI7IBIgMgAygCAEEBajYCAAsgAkEgaiQBIAMLEgAgABC/ICAAENwzGiAAEMUgC4ECAQR/AkAgACgCCCIBRQ0AIABBADYCCCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgACgCDCIEQQBKBEBBACEBA0ACQCAAIAFBAnRqQRhqIgMoAgAiAkUNACADQQA2AgAgAiACKAIAQQFrIgM2AgAgAw0AIAIQ1RAgACgCDCEECyABQQFqIgEgBEgNAAsLIAAoAhQhASAAQQA2AhQCQCABRQ0AA0ACQCABKAIAIQIgASgCBCMAQeDovQFqRw0AIAJBAUcNACABQQA2AgAgASgCFCECIAFBADYCFCABENUQIAIiAQ0BDAILCyABIAJBAWsiAjYCACACDQAgARDVEAtBAAt/AQN/AkAgACgCCCIDBEAgAyACIAERAAAiBA0BCyAAKAIMIgRBAEoEQEEAIQMDQCAAIANBAnRqKAIYIgUEQCAFIAIgAREAACIEDQMgACgCDCEECyADQQFqIgMgBEgNAAsLIAAoAhQiAwRAIAMgAiABEQAAIgQNAQtBACEECyAEC60EAQd/AkACQAJAAkAjAEHg6L0BaiAARwRAIwAhBiACRQ0CIAAoApQBIAZB4Oi9AWooApQBRg0BDAILIAJFDQELIwBBqpYBaiACEI8bRQ0BCyABKAIIIgJBA0cEQCMAQaqWAWogAkEDQQMQjBtFDQELIAEoAhAiAigCBC0AV0ECcUUEQCMAIgFBqpYBaiABQYG7C2ogAUGJyABqIAIQ+RpBAA8LIAEoAgwhACABKAIUIQUjAEHg6L0BahDCICIDRQ0AIANBADYCFCADQgA3AgwgACAAKAIAQQFqNgIAIAMgADYCCCADEL4gAkAgAigCCCIEQTlKDQACQCAEQQBMBEAgAyAENgIMDAELQQAhASAEQQFHBEAgBEF+cSEJIANBGGohBwNAIAcgAUECdCIAaiACKAIMIABqKAIAIgY2AgAgBiAGKAIAQQFqNgIAIAcgAEEEciIAaiACKAIMIABqKAIAIgA2AgAgACAAKAIAQQFqNgIAIAFBAmohASAIQQJqIgggCUcNAAsLIARBAXEEQCADIAFBAnQiAWogAigCDCABaigCACICNgIYIAIgAigCAEEBajYCAAsgAyAENgIMIARBOUcNACAFI7IBRg0DIAUoAgQjAEHg6L0BakcNASAFIAUoAgBBAWo2AgAgAyAFNgIUDAMLIAUjsgFGDQILIAMgAygCAEEBayICNgIAIAJFBEAgAxDVEAsjtwEoAgAjAEHl1gFqELQaC0EADwsgAwufAgIIfwF+IwFBEGsiAyQBIAAoAgwQ1gwiBAR/AkAgACgCDCICQQBMDQAgAkEBcSEIQQAhASACQQFHBEAgAkF+cSEJIABBGGohBgNAIAYgAUECdCICaigCACIFIAUoAgBBAWo2AgAgBCgCDCACaiAFNgIAIAYgAkEEciIFaigCACICIAIoAgBBAWo2AgAgBCgCDCAFaiACNgIAIAFBAmohASAHQQJqIgcgCUcNAAsLIAhFDQAgACABQQJ0IgJqKAIYIgEgASgCAEEBajYCACAEKAIMIAJqIAE2AgALIAAoAhQhASAAKQIEIQogAyAENgIIIAMgCjcDACADIAEjsgEgARs2AgwjAEHPww1qIAMQ0RwFQQALIQEgA0EQaiQBIAELYQECfyMAIgFB4Oi9AWojxAE2AgQgACABQdDqvQFqENwcQQBIBEBBfw8LA0AgAiIBQQFqIgJBFUcEQCAAIwBBgIm+AWogAkECdGooAgAQ3BxBAE4NAQsLQX9BACABQRRJGwurAQECfyAAEL8gAkAgACgCECIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAggiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIMIgFFDQAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCFCIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCyAAIAAoAgQoAqABEQMAC2kBAX8CQCAAKAIQIgMEQCADIAIgAREAACIDDQELIAAoAgwiAwRAIAMgAiABEQAAIgMNAQsgACgCCCIDBEAgAyACIAERAAAiAw0BCyAAKAIUIgAEQCAAIAIgAREAACIDDQELQQAhAwsgAwuhAgEFfyMBQRBrIgQkAQJAIAAoAhQiAiOyAUcEQCAAIAI2AggjsgEiASABKAIAQQFqNgIAIAAgATYCFCACIAIoAgBBAWo2AgAMAQtBACECIAAoAgwiASABKAIEKAJwEQEAIgFFDQAgACgCCCIDRQRAIAEgASgCAEEBajYCACAAIAE2AgggASECDAELAn8gACgCECIFRQRAIAMgARDbBQwBCyAEQQA2AgggBCABNgIEIAQgAzYCACAFIAQQpQgLIQMgASABKAIAQQFrIgU2AgAgBUUEQCABENUQCyADRQ0AIAMgAygCAEEBajYCACAAKAIIIQIgACADNgIIIAIgAigCAEEBayIANgIAIABFBEAgAhDVEAsgAyECCyAEQRBqJAEgAgu+AgEFfyMBQRBrIgYkASABKAIIIQQCQAJAAkAgAgRAIAFBDGohASAEIAIoAghqQQFrIQUMAQsgAUEMaiEBIARBAWsiBUECSQ0BCyABIAQgAkEAIwBBoIq+AWpBAUECQQAgBkEEahCKGyIBRQ0BCyABKAIAIQMjsgEiBCECAkAgBUUNACABKAIEIgcjsgEiAiAHGyEEIAdBACAFQQFGGw0AIAEoAgghAgsgAxCHBiIBRQRAQQAhAwwBCyAAQQAgACgCmAERAAAiA0UEQCABIAEoAgBBAWsiAzYCACADBEBBACEDDAILIAEQ1RBBACEDDAELI7IBIARHBEAgBCAEKAIAQQFqNgIAIAMgBDYCEAsgAyABNgIMIANBADYCCCACBEAgAiACKAIAQQFqNgIACyADIAI2AhQLIAZBEGokASADC8kDAQR/IwFB4ABrIgEkAQJAI7IBIAAoAhRHBEAjAEGw970BahDIEkEASA0BIAAoAhQhAyABIAAoAgw2AlQgASADNgJQIwAiA0Gw970BaiADQcy4CmogAUHQAGoQmwgiA0UNASAAKAIQIQIgACgCBCEAIAEgAzYCRCABIAA2AkAgASOyASIANgJMIAEgAiAAIAIbNgJIIwBBvrgKaiABQUBrENEcIQIMAQsgACgCCCICI7IBRgRAQQAhAiMAQbD3vQFqEMgSQQBIDQEjAEGY9L0BahDIEkEASA0BIAEgACkCCDcDICMAIgNBsPe9AWogA0HMuApqIAFBIGoQmwgiA0UNASAAKAIEIQQgACgCECEAIAEgAzYCECABIAAjsgEgABs2AhQgBCMAQfe1CmogAUEQahCbCCIARQ0BIAEjsgE2AgwgAUEBNgIIIAEgADYCBCABIwAiAEGY9L0BajYCACAAQe7CDWogARDRHCECDAELIAAoAhAhBCAAKAIEIQUgACgCDCEAIAEgAiOyASIDIAIbNgI8IAEgADYCNCABIAU2AjAgASAEIAMgBBs2AjgjAEG3uApqIAFBMGoQ0RwhAgsgAUHgAGokASACC1EBAX8gASABKAIAQQFqNgIAIAAoAgghAiAAIAE2AggCQCACRQ0AIAIgAigCAEEBayIBNgIAIAENACACENUQCyOyASIBIAEoAgBBAWo2AgAgAQtwAQJ/IAAQvyACQCAAKAIIIgFFDQAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCECIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCyAAKAIMIgEEQCABEP0QCyAAIAAoAgQoAqABEQMACzsBAX8CQCAAKAIIIgMEQCADIAIgAREAACIDDQELIAAoAhAiAARAIAAgAiABEQAAIgMNAQtBACEDCyADC5IGAQt/IAAoAhhFBEAgACgCFCEFIAAoAgwhByAAKAIIIQkCQAJ/IAAoAhAiAUUEQCAFEJMSIgZFDQIgACAGNgIQAkAgBUEATA0AIAVBAXEhC0EAIQEgBUEBRwRAIAVBfnEhCANAIAlBDGoiACAHIAFBAnQiA2ooAgBBAnRqKAIAIgIgAigCAEEBajYCACAGQQxqIgUgA2ogAjYCACAAIAcgA0EEciICaigCAEECdGooAgAiAyADKAIAQQFqNgIAIAIgBWogAzYCACABQQJqIQEgBEECaiIEIAhHDQALCyALRQ0AIAkgByABQQJ0IgNqKAIAQQJ0aigCDCIBIAEoAgBBAWo2AgAgAyAGaiABNgIMCyAGDAELIAkoAgghAwJAIAEoAgBBAk4EQCABQQxqIAUQmRIiCkUNAyAAIAo2AhAgASABKAIAQQFrIgI2AgAgAg0BIAEQ1RAMAQsgAUEIayICKAIARQRAI7ABKALoAigCCCgCrAMiBCgCBCIGIAI2AgAgAUEEayIIIAYgCCgCAEEDcXI2AgAgAiAENgIAIAQgAjYCBAsgASEKCyADIAVrIQZBACECIAUhAQNAIAIhBCABIgNBAWsiAUEASA0CIARBAWohAiAHIAFBAnRqIggoAgAiCyABIAZqRg0ACyAIIAtBAWoiAjYCAAJAIAMgBU4NACAEQQFrIQYgBEEDcSIABEBBACEEA0AgByADQQJ0aiACQQFqIgI2AgAgA0EBaiEDIARBAWoiBCAARw0ACwsgBkECTQ0AA0AgByADQQJ0aiIEIAJBAWo2AgAgBCACQQRqIgA2AgwgBCACQQNqNgIIIAQgAkECajYCBCAAIQIgA0EEaiIDIAVHDQALCyABIAVIBEADQCAJIAcgAUECdCIDaigCAEECdGooAgwiAiACKAIAQQFqNgIAIAMgCmpBDGoiBCgCACEDIAQgAjYCACADIAMoAgBBAWsiAjYCACACRQRAIAMQ1RALIAFBAWoiASAFRw0ACwsgCgsiASABKAIAQQFqNgIAIAEPCyAAQQE2AhgLQQALyAQBCH8jAUEQayIHJAEgAUEMaiEDIAEoAgghAQJAAkACQCACDQAgAUECSA0AIAFBA0gNAQsgAyABIAJBACMAQZyLvgFqQQJBAkEAIAdBCGoQihsiA0UNAQsgAygCACEBAkAgAygCBBC8BSIDBEAgAxCiDSECIAMgAygCAEEBayIFNgIAIAVFBEAgAxDVEAsgAkF/Rw0BC0EAIQUQtRoNAUF/IQILAkAgARCGBiIGRQ0AAkAgAkEASARAI7cBKAIAIwBBt78GahC0GgwBCwJAIAJB/////wFLDQAgBigCCCEJIAJBAnQQ+hAiAUUNAAJAIAJFDQBBACEFQQAhAyACQQhPBEAgAkF4cSEKA0AgASADQQJ0aiADNgIAIAEgA0EBciIEQQJ0aiAENgIAIAEgA0ECciIEQQJ0aiAENgIAIAEgA0EDciIEQQJ0aiAENgIAIAEgA0EEciIEQQJ0aiAENgIAIAEgA0EFciIEQQJ0aiAENgIAIAEgA0EGciIEQQJ0aiAENgIAIAEgA0EHciIEQQJ0aiAENgIAIANBCGohAyAIQQhqIgggCkcNAAsLIAJBB3EiBEUNAANAIAEgA0ECdGogAzYCACADQQFqIQMgBUEBaiIFIARHDQALCyAAQQAgACgCmAERAAAiBQRAIAUgAjYCFCAFQQA2AhAgBSABNgIMIAUgBjYCCCAFIAIgCUo2AhgMBAsgARD9EAwBCxDOGhoLIAYgBigCAEEBayIDNgIAIAMNACAGENUQC0EAIQULIAdBEGokASAFC6ICAgR/AX4jAUEwayIBJAECQCAAKAIQRQRAIAApAgQhBiABIAAoAhQ2AgggASAGNwMAIwBBzZUNaiABENEcIQAMAQsgACgCGARAIAAoAgQhAiABIAAoAhQ2AiQgASACNgIgIwBB3ZUNaiABQSBqENEcIQAMAQsgACgCFBCTEiIDRQRAQQAhAAwBCyAAKAIUIgRBAEoEQANAIAJBAnQiBCAAKAIMaigCABCuDSIFRQRAIAMgAygCAEEBayICNgIAQQAhACACDQMgAxDVEAwDCyADIARqIAU2AgwgAkEBaiICIAAoAhQiBEgNAAsLIAApAgQhBiABIAM2AhwgASAENgIYIAEgBjcDECMAQae/CmogAUEQahDRHCEACyABQTBqJAEgAAveAwEHfwJAIAEoAgQtAFdBBHFFDQAgASgCCCICIAAoAhRHDQAgAkEASgRAIAAoAggoAgghBQNAAkAgASADQQJ0IgRqKAIMEKINIgJBf0cNABC1GkUNAEEADwsgACgCDCAEaiACIAMgBWogACgCFGsiBCACIARIGyICQQAgAkEAShs2AgAgA0EBaiIDIAAoAhQiAkgNAAsLIAIQkxIiBkUEQEEADwsCQCAAKAIUIgJBAEwNACACQQFxIQdBACEDIAJBAUcEQCACQX5xIQhBACEBA0AgACgCCCADQQJ0IgIgACgCDGooAgBBAnRqKAIMIgQgBCgCAEEBajYCACAGQQxqIgUgAmogBDYCACAAKAIIIAJBBHIiBCAAKAIMaigCAEECdGooAgwiAiACKAIAQQFqNgIAIAQgBWogAjYCACADQQJqIQMgAUECaiIBIAhHDQALCyAHRQ0AIAAoAgggA0ECdCICIAAoAgxqKAIAQQJ0aigCDCIDIAMoAgBBAWo2AgAgAiAGaiADNgIMCyAAKAIQIQMgACAGNgIQAkAgA0UNACADIAMoAgBBAWsiADYCACAADQAgAxDVEAsjsgEiACAAKAIAQQFqNgIAIAAPCyO3ASgCACMAQdPWAWoQtBpBAAsWACAAKAIEKAIQIAAoAhRBAnRqEK4NC4QFAQp/IAAoAhhFBEAgACgCFCEEIAAoAggiCCgCCCECAkACfyAAKAIQIgFFBEAgBBCTEiIDRQ0CIAAgAzYCEAJAIAJBAEwNACAEQQBMDQAgBEEHcSEJIAgoAgwiASgCACEKQQAhAiAEQQhPBEAgBEF4cSEIA0AgA0EMaiIAIAJBAnQiBmogATYCACAAIAZBBHJqIAE2AgAgACAGQQhyaiABNgIAIAAgBkEMcmogATYCACAAIAZBEHJqIAE2AgAgACAGQRRyaiABNgIAIAAgBkEYcmogATYCACAAIAZBHHJqIAE2AgAgAkEIaiECIAdBCGoiByAIRw0ACwsgCQRAA0AgAyACQQJ0aiABNgIMIAJBAWohAiAFQQFqIgUgCUcNAAsLIAEgBCAKajYCAAsgAwwBCyAAKAIMIQYCQCABKAIAQQJOBEAgAUEMaiAEEJkSIgVFDQMgACAFNgIQIAEgASgCAEEBayIDNgIAIAMNASABENUQDAELIAFBCGsiAygCAEUEQCOwASgC6AIoAggoAqwDIgUoAgQiByADNgIAIAFBBGsiCSAHIAkoAgBBA3FyNgIAIAMgBTYCACAFIAM2AgQLIAEhBQsgAkEBayECIAQhAQNAIAFBAWsiAUEASA0CIAYgAUECdGooAgAiAyACRg0ACyABIARIBEAgCCADQQFqIgdBAnRqKAIMIQIDQCAGIAFBAnQiAGogBzYCACACIAIoAgBBAWo2AgAgACAFakEMaiIDKAIAIQAgAyACNgIAIAAgACgCAEEBayIDNgIAIANFBEAgABDVEAsgAUEBaiIBIARHDQALCyAFCyIBIAEoAgBBAWo2AgAgAQ8LIABBATYCGAtBAAvwAgEEfyMBQRBrIgUkASABQQxqIQMgASgCCCEBAkACQAJAIAINACABQQJIDQAgAUEDSA0BCyADIAEgAkEAIwBBjIy+AWpBAkECQQAgBUEIahCKGyIDRQ0BCyADKAIAIQICQCADKAIEELwFIgMEQCADEKINIQEgAyADKAIAQQFrIgQ2AgAgBEUEQCADENUQCyABQX9HDQELQQAhBBC1Gg0BQX8hAQsCQCACEIYGIgNFDQACQCABQQBIBEAjtwEoAgAjAEG3vwZqELQaDAELAkAgAUH/////AUsNACADKAIIIQYgAUECdCIEEPoQIgJFDQAgAQRAIAJBACAEENA+GgsgAEEAIAAoApgBEQAAIgQEQCAEIAE2AhQgBEEANgIQIAQgAjYCDCAEIAM2AgggBCAGRSABQQBHcTYCGAwECyACEP0QDAELEM4aGgsgAyADKAIAQQFrIgE2AgAgAQ0AIAMQ1RALQQAhBAsgBUEQaiQBIAQL2AMBB38CQCABKAIELQBXQQRxBEAgASgCCCICIAAoAhRGDQELI7cBKAIAIwBB09YBahC0GkEADwsCQCACQQBKBEAgACgCCCgCCEEBayEFA0ACfyABIANBAnQiBGooAgwQog0iAkEASARAQQAiAhC1GkUNARoMBAsgAiAFIAIgBUgbCyECIAAoAgwgBGogAjYCACADQQFqIgMgACgCFCICSA0ACwsgAhCTEiIGRQRAQQAPCwJAIAAoAhQiAkEATA0AIAJBAXEhB0EAIQMgAkEBRwRAIAJBfnEhCEEAIQEDQCAAKAIIIANBAnQiAiAAKAIMaigCAEECdGooAgwiBCAEKAIAQQFqNgIAIAZBDGoiBSACaiAENgIAIAAoAgggAkEEciIEIAAoAgxqKAIAQQJ0aigCDCICIAIoAgBBAWo2AgAgBCAFaiACNgIAIANBAmohAyABQQJqIgEgCEcNAAsLIAdFDQAgACgCCCADQQJ0IgIgACgCDGooAgBBAnRqKAIMIgMgAygCAEEBajYCACACIAZqIAM2AgwLIAAoAhAhAyAAIAY2AhACQCADRQ0AIAMgAygCAEEBayIANgIAIAANACADENUQCyOyASICIAIoAgBBAWo2AgALIAIL1gEBA38CQAJAIAAoAggiAUUNACABEIgGIgIEQCAAKAIUBEAgAg8LIAAoAgwgAhDeDEUEQCACDwsgAiACKAIAQQFrIgA2AgBBACEBIAANAiACENUQQQAPC0EAIQEQtRoNASAAKAIIIgFFDQAgAEEANgIIIAEgASgCAEEBayICNgIAIAINACABENUQCyAAKAIMIgEoAggiAkUEQEEADwsgASgCDCAAKAIQIgNBAnRqKAIAIQEgACADQQFqIgNBACACIANKGzYCECABIAEoAgBBAWo2AgALIAELkwIBAX8CQAJAIwBBtO+9AWogAEcEQCMAIQMgAkUNAiAAKAKUASADQbTvvQFqKAKUAUYNAQwCCyACRQ0BCyMAQfbGB2ogAhCPGw0AQQAPCwJAIAEoAggiAkEBRg0AIwBB9sYHaiACQQFBARCMGw0AQQAPCyABKAIMEIcGIgFFBEBBAA8LQQAhAgJAQQAQ1gwiA0UEQCABIAEoAgBBAWsiADYCACAADQEgARDVEEEADwsgAEEAIAAoApgBEQAAIgJFBEAgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCyADIAMoAgBBAWsiADYCAEEAIQIgAA0BIAMQ1RBBAA8LIAJCADcCECACIAM2AgwgAiABNgIICyACC5oCAQN/IwFBMGsiASQBAkAgACgCCCICRQRAQQAhAiAAKAIMEIcGIgNFDQECQCAAKAIQIgRFDQAgASAENgIQIAMjsAFB6IABaiMAQd+iBWogAUEQahCdCCIERQRAIAMgAygCAEEBayIANgIAIAANAyADENUQDAMLIAQgBCgCAEEBayICNgIAIAINACAEENUQCyAAKAIEIQIgACgCDCEAIAEjuwE2AgwgASAANgIIIAEgAzYCBCABIAI2AgAjAEG+ww1qIAEQ0RwhAgwBCyAAKAIUIQMgACgCBCEEIAEgACgCDDYCKCABIAI2AiQgASAENgIgIAEjuwEjvAEgAxs2AiwjAEG1ww1qIAFBIGoQ0RwhAgsgAUEwaiQBIAIL1gEBAn8jAUEgayICJAEgAkEANgIcAkAgASgCBC0AV0EEcUUEQCO1ASgCACMAQbC2B2oQtBoMAQsgAiPiATYCACACIAJBGGo2AgggAiACQRxqNgIEIAEjAEGw4gVqIAIQ8RpFDQAgAigCHCIBIAEoAgBBAWo2AgAgACgCDCEDIAAgATYCDAJAIANFDQAgAyADKAIAQQFrIgE2AgAgAQ0AIAMQ1RALIAIoAhghAyAAQQA2AhAgACADQQBHNgIUI7IBIgMgAygCAEEBajYCAAsgAkEgaiQBIAMLsgEBBn8gACgCDCIEKAIEKAJwIQUDQAJAIAQgBREBACIBRQ0AIAAoAhBBAUYEQCABDwsgACgCCCABEJQIIgJFBEAgASABKAIAQQFrIgI2AgAgAg0BIAEQ1RBBAA8LIAIQsRAhAyACIAIoAgBBAWsiBjYCACAGRQRAIAIQ1RALIANFBEAgAEEBNgIQIAEPCyABIAEoAgBBAWsiAjYCACACRQRAIAEQ1RALIANBAE4NAQsLQQAL5wEBAX8CQAJAIwBBgPG9AWogAEcEQCMAIQMgAkUNAiAAKAKUASADQYDxvQFqKAKUAUYNAQwCCyACRQ0BCyMAQei8B2ogAhCPGw0AQQAPCwJAIAEoAggiAkECRg0AIwBB6LwHaiACQQJBAhCMGw0AQQAPCyABKAIMIQIgASgCEBCHBiIBRQRAQQAPC0EAIQMCQCAAQQAgACgCmAERAAAiAEUEQCABIAEoAgBBAWsiADYCACAADQEgARDVEEEADwsgAiACKAIAQQFqNgIAIABBADYCECAAIAE2AgwgACACNgIIIAAhAwsgAws8AQF+IwFBEGsiASQBIAApAgQhAiABIAApAgw3AwggASACNwMAIwBBsMwFaiABENEcIQAgAUEQaiQBIAALKgEBfyABELEQIgFBAE4EQCAAIAE2AhAjsgEiAiACKAIAQQFqNgIACyACC6oBAQR/AkAgACgCEEEBRg0AIAAoAgwiASABKAIEKAJwEQEAIgFFDQAgACgCCCABEJQIIgNFBEAgASABKAIAQQFrIgA2AgAgAA0BIAEQ1RBBAA8LIAMQsRAhBCADIAMoAgBBAWsiAjYCACACRQRAIAMQ1RALIARBAEoEQCABDwsgASABKAIAQQFrIgI2AgAgAkUEQCABENUQC0EAIQIgBA0AIABBATYCEAsgAgvnAQEBfwJAAkAjAEHM8r0BaiAARwRAIwAhAyACRQ0CIAAoApQBIANBzPK9AWooApQBRg0BDAILIAJFDQELIwBB/LwHaiACEI8bDQBBAA8LAkAgASgCCCICQQJGDQAjAEH8vAdqIAJBAkECEIwbDQBBAA8LIAEoAgwhAiABKAIQEIcGIgFFBEBBAA8LQQAhAwJAIABBACAAKAKYAREAACIARQRAIAEgASgCAEEBayIANgIAIAANASABENUQQQAPCyACIAIoAgBBAWo2AgAgAEEANgIQIAAgATYCDCAAIAI2AgggACEDCyADCzwBAn8gABC/IAJAIAAoAggiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgACAAKAIEKAKgAREDAAv3AQEGfwJAIAAoAggiA0UNACAAKAIQIQIgAygCBCgCcCEGAkAgACgCGCIBIAAoAgxIBEADQCADIAYRAQAiAUUNAiABIAEoAgBBAWsiBDYCACAERQRAIAEQ1RALIAAgACgCGEEBaiIBNgIYIAEgACgCDEgNAAsLIAJBf0cgASACTnENACADIAYRAQAiBEUNACAAIAAoAhhBAWo2AhggACAAKAIMIgMgACgCFGoiASABIAIgASACTBsgAkF/RhsgAiABIANOGzYCDCAEDwsgACgCCCIBRQ0AIABBADYCCCABIAEoAgBBAWsiADYCACAADQAgARDVEAsgBQvzBAEEfyMBQSBrIgMkASADQQA2AhggA0EANgIUIANBADYCEAJAAkACQCMAQZj0vQFqIABHBEAjACEEIAJFDQIgACgClAEgBEGY9L0BaigClAFGDQEMAgsgAkUNAQsjAEHAmAhqIAIQjxsNAEEAIQIMAQsgAyADQRBqNgIMIAMgA0EUajYCCCADIANBGGo2AgQgAyADQRxqNgIAIAEjAEHAmAhqQQJBBCADEI0bRQRAQQAhAgwBCyABEJQSIQEgAygCGCECAkACQCABQQJGBEBBACEBIAIjsgFGDQEgAiPAASgCABC6BSIEQX9HDQIQtRoEQBC9GgsjtwEoAgAjAEH2jAxqELQaQQAhAgwDCwJAI7IBIAJGBEBBACEBDAELIAIjwAEoAgAQugUiAUF/Rw0AELUaBEAQvRoLQX8hAQsgAygCFCICI7IBRg0AIAIjwAEoAgAQugUiBEF/Rw0BELUaBEAQvRoLI7cBKAIAIwBB9owMahC0GkEAIQIMAgtBfyEEC0EAIQIgBEF+SiABQQBOcUUEQCO3ASgCACMAQcSNDGoQtBoMAQtBASEGAkAgAygCECICRQ0AIAIjsgFGDQACQCACI8ABKAIAELoFIgZBf0YEQBC1GkUNARC9GgwBCyAGQQBKDQELI7cBKAIAIwBB7KMMahC0GkEAIQIMAQsgAygCHBCHBiIFRQRAQQAhAgwBC0EAIQIgAEEAIAAoApgBEQAAIgBFBEAgBSAFKAIAQQFrIgA2AgAgAA0BIAUQ1RAMAQsgAEEANgIYIAAgBjYCFCAAIAQ2AhAgACABNgIMIAAgBTYCCCAAIQILIANBIGokASACC4MCAQR/IwFBMGsiASQBAkAgACgCCCIDRQRAQQAhA0EAENYMIgJFDQEgAhCHBiEEIAIgAigCAEEBayIFNgIAIAVFBEAgAhDVEAsgBEUNASAAKAIEIQAgAUIANwMIIAEgBDYCBCABIAA2AgAjAEHOogVqIAEQ0RwhAwwBCwJAIAAoAhAiAkF/RgRAI7IBIgIgAigCAEEBajYCAAwBCyACEK4NIgJFBEBBACEDDAILIAAoAgghAwsgACgCBCEEIAAoAgwhBSABIAApAhQ3AyAgASADNgIUIAEgBTYCGCABIAI2AhwgASAENgIQIwBBxaIFaiABQRBqENEcIQMLIAFBMGokASADCzYBAX8CQCABEKINIgJBf0YEQEEAIQEQtRoNAQsgACACNgIYI7IBIgEgASgCAEEBajYCAAsgAQuBAQEEfwJAIAAoAgwiASABKAIEKAJwEQEAIgFFDQACQCO0ASABKAIERgRAIAEhAgwBCyABEIYGIQIgASABKAIAQQFrIgQ2AgAgBEUEQCABENUQCyACRQ0BCyAAKAIIIAJBABCTCCEDIAIgAigCAEEBayIBNgIAIAENACACENUQCyADC+ABAQF/AkACQCMAQeT1vQFqIABHBEAjACEDIAJFDQIgACgClAEgA0Hk9b0BaigClAFGDQEMAgsgAkUNAQsjAEGZqQRqIAIQjxsNAEEADwsCQCABKAIIIgJBAkYNACMAQZmpBGogAkECQQIQjBsNAEEADwsgASgCDCECIAEoAhAQhwYiAUUEQEEADwtBACEDAkAgAEEAIAAoApgBEQAAIgBFBEAgASABKAIAQQFrIgA2AgAgAA0BIAEQ1RBBAA8LIAIgAigCAEEBajYCACAAIAE2AgwgACACNgIIIAAhAwsgAws8AQF+IwFBEGsiASQBIAApAgQhAiABIAAoAgw2AgggASACNwMAIwBBqcMNaiABENEcIQAgAUEQaiQBIAALYQECfyAAEL8gAkAgACgCDCIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAggiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsgACAAKAIEKAKgAREDAAudAgEDfwJAAkAgACgCCCIBRQ0AA0ACQCAAKAIMIgINAAJAIAEQiAYiAUUEQCAAKAIIIgFFDQRBACECIABBADYCCCABIAEoAgBBAWsiADYCACAARQ0BDAULIAAgARCHBiICNgIMIAEgASgCAEEBayIDNgIAIANFBEAgARDVECAAKAIMIQILIAINASAAKAIIIgFFDQNBACECIABBADYCCCABIAEoAgBBAWsiADYCACAADQQLIAEQ1RAMAgsgAiACKAIEKAJwEQEAIgINAhC1GgRAI9wBKAIAELgaRQ0CEL0aCwJAIAAoAgwiAkUNACAAQQA2AgwgAiACKAIAQQFrIgE2AgAgAQ0AIAIQ1RALIAAoAggiAQ0ACwtBACECCyACC58BAAJAAkAjAEGw970BaiAARwRAIAJFDQIgACgClAEjAEGw970BaigClAFGDQEMAgsgAkUNAQsjAEHelAVqIAIQjxsNAEEADwsgARCHBiICRQRAQQAPC0EAIQECQCAAQQAgACgCmAERAAAiAEUEQCACIAIoAgBBAWsiADYCACAADQEgAhDVEEEADwsgAEEANgIMIAAgAjYCCCAAIQELIAELVwEBfyABEIcGIgFFBEBBAA8LAkAgAEEAIAAoApgBEQAAIgBFBEAgASABKAIAQQFrIgA2AgAgAA0BIAEQ1RBBAA8LIABBADYCDCAAIAE2AgggACECCyACC5EBAQJ/IwFBMGsiASQBAn8gACgCCCICBEAgACgCBCEDIAAoAgwiAARAIAEgADYCKCABIAI2AiQgASADNgIgIwBBx8MNaiABQSBqENEcDAILIAEgAjYCFCABIAM2AhAjAEHgww1qIAFBEGoQ0RwMAQsgASAAKAIENgIAIwBB6NgNaiABENEc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AigCAEEBajYCAEH/////ByEEDAcLIAIoAgQoAlQhBSOwAUGEBGoiAyADKAIAQQFqNgIAIAIgAigCAEEBajYCAEEAIQFB/////wchBCAFQYCAgAhxDQUMBgsgAyADKAIAQQFqNgIAI7ABQZQEaiICIAIoAgBBAWo2AgBB/////wchBAwFCyOwASIBQYQEaiIDIAMoAgBBAWo2AgAgAUGUBGoLIQJBACEBDAELAkAgAxCiDSIBQX9GBEAQtRoNAQsgAyADKAIAQQFqNgIAI7ABQZQEaiACIAQbIQIMAQsQvRogAyADKAIAQQFqNgIAIAQEQCOwAUGUBGoiAiACKAIAQQFqNgIAQf////8HIQQMAwsgAiACKAIAQQFqNgIAQf////8HIQQMAgsgAiACKAIAQQFqNgIAC0H/////ByEEAkACQCACEKANQQFqDgMAAgECCxC1GkUNARC9GgwBCyADIAMoAgBBAWsiBDYCACAERQRAIAMQ1RALIAEhBEEAIQMLIABBACAAKAKYAREAACIBRQRAAkAgA0UNACADIAMoAgBBAWsiATYCACABDQAgAxDVEAsgAiACKAIAQQFrIgM2AgBBACEBIAMNAiACENUQDAILIAEgAjYCECABIAM2AgwgASAENgIIDAELI7UBKAIAIwBBpOIIahC0GkEAIQELIAZBEGokASABC28BAn8jAUEgayIBJAEgACgCBCECAn8gACgCCCIDQf////8HRgRAIAEgACkCDDcCBCABIAI2AgAjAEGpww1qIAEQ0RwMAQsgASADNgIUIAEgAjYCECMAQeSVDWogAUEQahDRHAshACABQSBqJAEgAAuGAQECfyAAEL8gAkAgACgCECIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhQiAUUNACABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIYIgFFDQAgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIAAgACgCBCgCoAERAwALUgEBfwJAIAAoAhAiAwRAIAMgAiABEQAAIgMNAQsgACgCFCIDBEAgAyACIAERAAAiAw0BCyAAKAIYIgAEQCAAIAIgAREAACIDDQELQQAhAwsgAwvYBAEHfwJAIAAoAggiBkUNACAAKAIMRQ0AIAAoAhQiAigCAEEBRgRAIAJBAjYCACAG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dGoiAikCBCESIAIgAkEMaiIEKAIANgIIIAIgEjcCACAEIAYgAUEEaiIBQQJ0aigCADYCACABIAhIDQALCyARIAo2AgAgCyAMIANrNgIAIAdBAWohByADQQFrIgNBAE4NAAsLIABBATYCHEEADwsgAiAGIAwgAWtBAnRqIgEoAgA2AgAgASAKNgIAIAMgBUgEQANAIAkgBiADQQJ0IgFqKAIAQQJ0aigCDCICIAIoAgBBAWo2AgAgASANakEMaiIEKAIAIQEgBCACNgIAIAEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgA0EBaiIDIAVHDQALCyANCyIBIAEoAgBBAWo2AgALIAEL7AYBCn8jAUEQayIMJAEgASgCCCEDAkACQAJAIAIEQCABQQxqIQEgAigCCCADaiEGDAELIAFBDGohASADIQYgA0EBa0ECTw0ADAELIAEgAyACQQAjAEGckb4BakEBQQJBACAMQQhqEIobIgFFDQELIAEoAgAhAyOyASECIAZBAUcEQCABKAIEIQILAkAgAxCGBiIIRQ0AIAgoAggiAyEHAkACQAJAAkAgAiOyAUYNACACKAIELQBXQQFxRQRAI7UBKAIAIwBB0JgEahC0GgwECyACEKINIgdBf0cNABC1GkUNAQwDCyAHQQBODQELI7cBKAIAIwBBt78GahC0GgwBC0EAIQZBACECIANB/////wFNBEAgA0ECdBD6ECECCwJAAkAgB0H/////AUsNACAHQQJ0EPoQIQYgAkUNACAGRQ0AAkAgA0EATA0AIANBB3EhCUEAIQEgA0EITwRAIANBeHEhCwNAIAIgAUECdGogATYCACACIAFBAXIiBEECdGogBDYCACACIAFBAnIiBEECdGogBDYCACACIAFBA3IiBEECdGogBDYCACACIAFBBHIiBEECdGogBDYCACACIAFBBXIiBEECdGogBDYCACACIAFBBnIiBEECdGogBDYCACACIAFBB3IiBEECdGogBDYCACABQQhqIQEgCkEIaiIKIAtHDQALCyAJRQ0AA0AgAiABQQJ0aiABNgIAIAFBAWohASAFQQFqIgUgCUcNAAsLAkAgB0EATA0AIAdBA3EhCUEAIQVBACEBIAdBBE8EQCAHQXxxIQtBACEKA0AgBiABQQJ0aiADIAFrNgIAIAYgAUEBciIEQQJ0aiADIARr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IgAgACgCAEEBajYCAAsgA0EgaiQBIAALTAECfyAAEL8gIAAoAggiASABKAIAQQFrIgI2AgAgAkUEQCABENUQCyAAKAIMIgEgASgCAEEBayICNgIAIAJFBEAgARDVEAsgABDFIAuaAgEFfwJAIAAoAggiAigCHCAARw0AAkACQCACKAIYDQAgAigCCBCIBiIBRQ0CAkAgAigCDCIDI7IBRgRAIAEgASgCAEEBajYCACABIQQMAQsgAyABEJQIIgQNACABIAEoAgBBAWsiADYCACAADQMMAgsgAigCGCEDIAIgATYCGCACKAIUIQEgAiAENgIUAkAgAUUNACABIAEoAgBBAWsiBDYCACAEDQAgARDVEAsgA0UNACADIAMoAgBBAWsiATYCACABDQAgAxDVEAsgACgCDCACKAIUQQIQsBBBAEwNASACKAIYIQUgAkEANgIYIAIoAhQiAUUNASACQQA2AhQgASABKAIAQQFrIgA2AgAgAA0BCyABENUQCyAFC5sCAQF/AkACQCMAQaiHvgFqIABHBEAjACEDIAJFDQIgACgClAEgA0Goh74BaigClAFGDQEMAgsgAkUNAQsjAEHn5gNqIAIQjxsNAEEADwsCQCABKAIIIgJBAkYNACMAQefmA2ogAkECQQIQjBsNAEEADwsCQCABKAIMIgIoAgQiAyMAQdyFvgFqRwRAIAMjAEHchb4BahC5EkUNASABKAIMIQILIAEoAhAhACMAQaiHvgFqEMIgIgFFBEBBAA8LIAEgAjYCCCACIAIoAgBBAWo2AgAgASAANgIMIAAgACgCAEEBajYCACACIAE2AhwgARC+ICABDwsjACICQefmA2ogAkGNvwtqIAJB3IW+AWooAgwgASgCDBD5GkEAC3cBAn8jAUEgayIBJAECfyAAIAAoAggiAigCHEcEQCABI7ABQeSZAWoQgRk2AhAjAEGk0Q1qIAFBEGoQ0RwMAQsgACgCBCEDIAEgACgCDDYCCCABIAI2AgQgASADNgIAIwBBqcMNaiABENEcCyEAIAFBIGokASAACw0AIwBB0JO+AWoQ8A8LVwEBfwJAIAAoAhAiAygCACIABEAgACACIAERAAAiAA0BCyADKAIEIgAEQCAAIAIgAREAACIADQELIAMoAggiAARAIAAgAiABEQAAIgANAQtBACEACyAAC48BAQJ/AkAg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IAYgACgCCEYNFgsgACAGNgIAC0EBIQxBACELDCILIARBEBCBESIDNgIEIAMNGBDOGhoLQQAhDAwgCyAEKAIcIQUgBCgCICEIIAkgCSgCAEEkayIENgIAIAwhAiAIQX9GDSADQCAKKAIAIg0gCGohAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDhAEBQkLBgoNAQIDAA8IDAcONgsgACgCcCEFIAtBAXFFBEBBASECIAVFBEBBACELDBULQQAhCyADKAIIIghBAEgNFCAJIAQgCEECdGtBBGsiBDYCAAwUCyADKAIUIQYgAygCECEHAkAgBUUNACADKAIIIgVBAEgNACAPKAIAIAQgDWogBUECdCIEa0EEayAEQQRqEM4+GgsgACADKAIINgJYIAAgAygCDDYCXEEBIQQMFQsgACgCcCEFIAtBAXFFBEBBASECIAVFBEBBACELDBQLQQAhCyADKAIIIghBAEgNEyAJIAQgCEECdGtBBGsiBDYCAAwTCyADKAIUIQIgAygCECEHAkAgBUUNACADKAIIIgVBAEgNACAPKAIAIAQgDWogBUECdCIEa0EEayAEQQRqEM4+GgsgACADKAIINgJYIAAgAygCDDYCXCADIAMoAgBBAWsiBDYCACACQQRrIQUMLgsgACgCcCEFIAtBAXFFBEBBASECIAVFBEBBACELDBMLQQAhCyADKAIIIghBAEgNEiAJIAQgCEECdGtBBGsiBDYCAAwSCyADKAIUIQIgAygCECEHAkAgBUUNACADKAIIIgVBAEgNACAPKAIAIAQgDWogBUECdCIEa0EEayAEQQRqEM4+GgsgACADKAIINgJYIAAgAygCDDYCXCADIAMoAgBBAWsiBDYCACACQQRrIQUMLgsgACgCcCEFIAtBAXFFBEBBASECIAVFBEBBACELDBILQQAhCyADKAIIIghBAEgNESAJIAQgCEECdGtBBGsiBDYCAAwRCyADKAIUIRAgAygCECEHAkAgBUUNACADKAIIIgVBAEgNACAPKAIAIAQgDWogBUECdCIEa0EEayAEQQRqEM4+GgsgACADKAIINgJYIAMoAgwhAyAAIBA2AgAgACADNgJcIAAgB0EMakEBENs0IgJBAEgNMiAKKAIAIAhqIQMgAg0MIAMhBAwrC0EBIQIg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CyACRQ0AIAIgARCXCCEEIAIgAigCAEEBayIDNgIAIANFBEAgAhDVEAsgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALIAQLFgAgACgCECIARQRAEP8NDwsgABC6CQu5AQEDfyAAKAIEIQMgABC/IAJAIAAoAgwiAUUNACAAQQA2AgwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCECIBRQ0AIABBADYCECABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIUIgFFDQAgAEEANgIUIAEgASgCAEEBayICNgIAIAINACABENUQCyAAIAMoAqABEQMAIAMgAygCAEEBayIANgIAIABFBEAgAxDVEAsLdgIDfwF+IwFBEGsiASQBAkAgAEEAI7IBEOA0IgNFDQAgACgCBCgCDCECIAApAighBCABIAM2AgwgASAENwIEIAEgAjYCACMAQbObC2ogARCkFCECIAMgAygCAEEBayIANgIAIAANACADENUQCyABQRBqJAEgAguRAgEEfyMBQUBqIgMkAQJAAkAgACgCDCIEI7IBRwRAIAAgAUEBdCIBQQJ0akEoaiIFKAIAQQBODQELIAIgAigCAEEBajYCAAwBCyAEIANBPGogA0E4aiADQTRqIANBCGoQtzQiBkUEQEEAIQIMAQsgACABQQJ0QQRyaigCKCIBIAMoAjwiAiABIAJIGyEEIAUoAgAiASACIAEgAkgbIQEgACgCDCECAkACQCADKAI4BEAgAQ0BI7YBIAIoAgRHDQEgAigCCCAERw0BIAIgAigCAEEBajYCAAwCCyACIAEgBBChFSECDAILIAEgBmogBCABaxCtByECCyADKAIIRQ0AIANBCGoQxAULIANBQGskASACC2kBAX8CQCAAKAIEIgMEQCADIAIgAREAACIDDQELIAAoAgwiAwRAIAMgAiABEQAAIgMNAQsgACgCECIDBEAgAyACIAERAAAiAw0BCyAAKAIUIgAEQCAAIAIgAREAACIDDQELQQAhAwsgAwuKAQECfwJAIAAoAgwiAUUNACAAQQA2AgwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCECIBRQ0AIABBADYCECABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIUIgFFDQAgAEEANgIUIAEgASgCAEEB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AyABENoYIAMNACO+ASgCACMAQY/WBWoQtBpBACEADAELIAAgAigCDDYCDCAAIAIoAgg2AhAjsgEiACAAKAIAQQFqNgIACyACQRBqJAEgAAtqAQJ/IwFBEGsiASQBAn8gACgCECICRQRAI74BKAIAIwBBpdYFahC0GkEADAELIAAoAgwhAyAAQgA3AgwgACgCCBC1HyABIAM2AgQgASACNgIAIwBB+9EFaiABEM0cCyEAIAFBEGokASAACzwAIABBCGoQth9BAEgEQCO+ASgCACMAQezNBWoQtBpBAA8LIABCADcCDCOyASIAIAAoAgBBAWo2AgAgAAs7AQF/IAAoAgwEQCAAEMUWCyAAIAAoAgQiASgCoAERAwAgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCwtrAQJ/IAAoAhQEQCAAEMUWCyAAEL8gIAAQlTUaAkAgACgCCCIBRQ0AIAEgASgCAEEBayICNgIAIAINACABENUQCyAAIAAoAgQiASgCoAERAwAgASABKAIAQQFrIgA2AgAgAEUEQCABENUQCwvOAgEDfwJAIAAoAgwiAUUNACAAQQA2AgwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCECIBRQ0AIABBADYCECABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIYIgFFDQAgAEEANgIYIAEgASgCAEEBayICNgIAIAINACABENUQCwJAIAAoAhwiAUUNACAAQQA2AhwgASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCCEUNACOwASICKALoAigCCCEBIAIoAhhBARC3HxogASgCECEBIAIoAhgQtR8gAUUNAANAAkAgASgCTCICRQ0AIAIgACgCCCOyARCfDiICBEAgAiACKAIAQQFrIgM2AgAgAw0BIAIQ1RAMAQsQvRoLI7ABIgIoAhhBARC3HxogASgCBCEBIAIoAhgQtR8gAQ0ACwtBAAueAQEDfwJAIAAgACgCBCMAQbikvgFqENESKAIQIgMQlzUiAkUNAAJAAkAgASOwAUGY5ABqQQIQsBBBAWoOAwIBAAELIAIgAigCAEEBajYCACACDwsgACgCBCADKAIIRwRAIAAgASACQQAQrxAPCyACIAEQkQ4iAwRAIAMgAygCAEEBajYCACADDwsQtRoNACAAIAEg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EIYIIQAgAiAFNgIADAELIAghAgJAIAQgBWoiCkEGSA0AIApBAnQQ+hAiAg0AEM4aGkEAIQAMAQsgAiAHIARBAnQiChDOPiICIApqIAEgBUECdBDOPhogBCAJaiEBAn8CQCAAKAIIIgAoAgQiBS0AVUEIcQRAIAAgBSgCHGooAAAiBQ0BCyAGIAAgAiABQf////8HcSADEIgIDAELIAYgACAAIAIgASADIAURBABBABCGCAshACACIAhGDQAgAhD9EAsgCEEgaiQBIAALawICfwF+IwFBIGsiASQBIAAoAhQhAiAAKAIEIQMgACkCDCEEIAAoAgghACABIAIjsgEgAhs2AhQgASAANgIEIAEgADYCCCABIAQ3AgwgASADNgIAIwBBjMMNaiABEM0cIQAgAUEgaiQBIAAL4gQBA38jAUEgayICJAECQAJAAkAgASgCBC0AV0EEcUUNACACIAJBEGo2AgwgAiACQRRqNgIIIAIgAkEYajYCBCACIAJBHGo2AgAgASMAQcK1CmogAhDwGkUNACACKAIcEMcQRQ0AIAIoAhgiASgCBCIDLQBXQQRxRQ0AIAIoAhQiBCOyAUYNASAEKAIELQBXQSBxDQELI7UBKAIAIwBBnOkGahC0GkEAIQEMAQsCQCO0ASADRgRAIAEgASgCAEEBajYCAAwBCyACIAEQhgYiATYCGCABDQBBACEBDAELAkAgAigCFCIBI7IBRgRAIAIQ/w0iATYCFAwBCyPLASABKAIERwRAIAIgARCpDiIBNgIUDAELIAEgASgCAEEBajYCAAsgAUUEQCACKAIYIgAgACgCAEEBayIDNgIAQQAhASADDQEgABDVEAwBCwJAIAIoAhAiASOyAUYEQCACQQA2AhAMAQsgASABKAIAQQFqNgIACyACKAIcIgMgAygCAEEBajYCACAAKAIIIQEgACADNgIIIAEgASgCAEEBayIDNgIAIANFBEAgARDVEAsgACgCDCEBIAAgAigCGDYCDCABIAEoAgBBAWsiAzYCACADRQRAIAEQ1RALIAAoAhAhASAAIAIoAhQ2AhAgASABKAIAQQFrIgM2AgAgA0UEQCABENUQCyAAKAIUIQEgACACKAIQNgIUAkAgAUUNACABIAEoAgBBAWsiAzYCACADDQAgARDVEAsgACMCQdUhakEAIAAoAggQiwgbNgIcI7IB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DAsgABDQEigCABDCICICRQRAQQAhAgwBCyADKAIMIgEgASgCAEEBajYCACACQX82AhAgAiAENgIIIAIgATYCDAJAI7kBIAEoAgRHDQAgARCiDSIBQQBIBEAQvRoMAQsgAiABNgIQCyACIwJBiCJqNgIUIAIQviALIANBEGokASACC00AAkAgA0UNACMAQaHVA2ogAxCRGw0AQQAPCwJAIAJB/////wdxIgNBAUYNACMAQaHVA2ogA0EBQQEQjBsNAEEADwsgACABKAIAEL82C4kBAQN/IwFBIGsiASQBAkAgABDQECIDBEAgA0EASA0BIAEgACgCBCgCDDYCECMAQbLODWogAUEQahCkFCECDAELIAAoAgghAiAAKAIEKAIMIQMgASAAKAIMNgIEIAEgAzYCACMAQbLBDUHBnQogAkEBRhtqIAEQpBQhAiAAENEQCyABQSBqJAEgAgtoAQJ/IwFBIGsiASQBIAAoAgwhAiAAKAIEIQMCfyAAKAIIQQFGBEAgASACNgIEIAEgAzYCACMAQdbDDWogARDNHAwBCyABIAI2AhQgASADNgIQQQIgAUEQahCYEgshACABQSBqJAEgAAu5AQEDfyAAKAIEIQMgABC/IAJAIAAoAggiAUUNACAAQQA2AgggASABKAIAQQFrIgI2AgAgAg0AIAEQ1RALAkAgACgCDCIBRQ0AIABBADYCDCABIAEoAgBBAWsiAjYCACACDQAgARDVEAsCQCAAKAIQIgFFDQAgAEEANgIQIAEgASgCAEEBayICNgIAIAINACABENUQCyAAIAMoAqABEQMAIAMgAygCAEEBayIANgIAIABFBEAgAxDVEAsLggEAAkAgAkUNACMAQZ7pA2ogAhCPGw0AQQAPCwJAIAEoAggiAkEBRg0AIwBBnukDaiACQQFBARCMGw0AQQAPCyABKAIMIAAoAggQtRAiAkUEQEEADwsgAiAAKAIMIAAoAhAQkwghASACIAIoAgBBAWsiADYCACAARQRAIAIQ1RALIAELaQEBfwJAIAAoAggiAwRAIAMgAiABEQAAIgMNAQsgACgCDCIDBEAgAyACIAERAAAiAw0BCyAAKAIQIgMEQCADIAIgAREAACIDDQELIAAoAgQiAARAIAAgAiABEQAAIgMNAQtBACEDCyADC+oBAQN/IwFBEGsiAyQBAkAgASgCCEEA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OgAEIAQgAiADQZDOAGxrIgJB//8DcUHoB24iA0EwajoABSAEIAIgA0HoB2xrIgJB//8DcUHkAG4iA0EwcjoABiAEIAIgA0HkAGxrIgJB/wFxQQpuIgNBMHI6AAcgBCACIANBCmxrQTByOgAIIABBAWshAiAFIQQgAA0ACyAFC+kEAAJAAkACQAJAAkACQAJAAkACQAJAIAJBAmsOCQgHBgUEAwIBAAkLIAAgA0YEQCAAQS46AAAgAEEBaiEACyAAIAFBgJTr3ANuIgJBMHI6AAAgAEEBaiEAIAEgAkGAlOvcA2xrIQELIAAgA0YEQCADQS46AAAgA0EBaiEACyAAIAFBgMLXL24iAkEwajoAACAAQQFqIQAgASACQYDC1y9sayEBCyAAIANGBEAgA0EuOgAAIANBAWohAAsgACABQYCt4gRuIgJBMGo6AAAgAEEBaiEAIAEgAkGAreIEbGshAQsgACADRgRAIANBLjoAACADQQFqIQALIAAgAUHAhD1uIgJBMGo6AAAgAEEBaiEAIAEgAkHAhD1sayEBCyAAIANGBEAgA0EuOgAAIANBAWohAAsgACABQaCNBm4iAkEwajoAACAAQQFqIQAgASACQaCNBmxrIQELIAAgA0YEQCADQS46AAAgA0EBaiEACyAAIAFBkM4AbiICQTBqOgAAIABBAWohACABIAJBkM4AbGshAQsgACADRgRAIANBLjoAACADQQFqIQALIAAgAUHoB24iAkEwajoAACAAQQFqIQAgASACQegHbGshAQsgACADRgRAIANBLjoAACADQQFqIQALIAAgAUHkAG4iAkEwajoAACAAQQFqIQAgASACQeQAbGshAQsgACADRgRAIANBLjoAACADQQFqIQALIAAgAUEKbiICQTBqOgAAIABBAWohACABIAJBCmxrIQELIAAgA0YEQCADQS46AAAgA0EBaiEACyAAQQFqIgNBADoAACAAIAFBMGo6AAAgAwsTACAAIAEgAkEAR0ECckEBEII3CxMAIAAgASACQQBHQQRyQQEQgjcLVAECfyAAKAIYIQECQANAIAEsAAAiAkUNASABQQFqIQEgAkEATg0AC0F/DwtBfyEBIAAoAhAQ/URBBWtBfE8Ef0F/QQAgACgCFBD9REEESxsFIAELC7AKAQt/IAcoAhQQ/UQhDCAAIAY2AgQgACgCACEI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AiwgAUUEQCAEKAKEAyAEQRRqIgEoAgARAwAgBCABKAIAEQMAQQAPCyAEQQxqIQUgBCABQYAIajYCMAJAIAMiAUUEQEG8ASAFKAIAEQEAIgFFDQEgAUIANwJQIAFCADcCaCABQgA3AgggAUEAOgAEIAEgBTYCECABQQA2AgAgAUEANgIUIAFBADYCYCABQgA3AlggASAFNgJkIAFCADcCcCABQQA2AnggASAFNgJ8IAFCADcCHCABQQA6ABggAUIANwIwIAFBADoALCABIAU2AiQgAUIANwJEIAFBQGtBADoAACABIAU2AjggAUEANgIoIAFBADYCPCABIAU2AkwgAUIANwKMASABQQA6AIgBIAFCATcCgAEgASAFNgKUASABQgA3ApgBIAFBADoAoAEgAUIANwKkASABQgA3AqwBIAFCADcCtAELIARBADYC9AIgBCABNgLgAiAEQQA2AuwCIARBADYCrAIgBEIANwLMAyAEQSE6ANQDIARBADYC9AEgBEEANgJ8IARBADsB6AEgBEIANwKcAyAEQQA2AuQBIARCADcDiAMgBEIANwK0AyAEQgA3AqQDIARBADYCrAMgBEEAOgCQAyAEIAU2ArADIARBADYCxAMgBEIANwK8AyAEIAU2AsgDIwFBEGsiCCQBIAQjAkH7Imo2ApQCIARB/AFqIgFBADYCFCABQoCAgIAQNwIMIAEjAkGRI2o2AgAgACIBBEADQCABIAdqIQYgB0EBaiIJIQcgBi0AAA0ACyAJIAQoAgwRAQAiBwRAIAcgASAJEM4+GgsgBCAHNgLkAQtBACEHIARBADYC5AIgBEGUAWogBEGQAWpBABCbORogBEIANwI0IARCADcDACAEQgA3AjwgBEIANwJEIARCADcCTCAEQgA3AlQgBEIANwJcIARCADcCZCAEQgA3AmwgBEIANwOAASAEQQA2AnggBEIANwOIASAEQgA3ApQDIARCADcCJCAEIAQoAggiBjYCHCAEIAY2AhggBCAENgJ0IARBADYCqAIgBEIANwOgAiAEQgA3A5gCIARCADcDuAIgBEIANwPAAiAEQgA3A8gCIARCADcD0AIgBEIANwHWAiAEQQA2ArQCIARBADYC6AIgBEEANgLwAiAEQQA2AvwCIARBAToAsAIgBEEANgL4ASAEQgA3AuwBIARBADsB5AMgBEIANwPYAyAEQYgEaiIJQgA3AwAgBEGABGoiCkIANwMAIARCADcD+AMgBEIANwPwAyAEQgA3A+gDQQAhBgJAIwBBmNUKahCaQCIBRQ0AEPo7IgVBADYCACAIIAE2AgggASAIQQhqQQoQmEUhBiAFKAIARQRAIAgoAggtAABFDQELIAVBADYCAEEAIQYLIARCADcDkAQgCUKAgIAENwMAIARBgICglgQ2AoQEIAogBjYCACAEQgA3A5gEAkAjAEHo1ApqEJpAIgZFDQAQ+jsiAUEANgIAIAggBjYCDCAGIAhBDGpBChCYRSEHIAEoAgBFBEAgCCgCDC0AAEUNAQsgAUEANgIAQQAhBwsgBCAHNgKcBCAIQRBqJAECQCAARQ0AIAQoAuQBDQAgAwRAIARBADYC4AILIAQQkThBAA8LIAIEQCAEQQE6AOgBIAQjAEGU6r4BajYC4AEgBCACLQAAOgDUAyAEDwsgBCMAQajnvgFqNgLgASAEDwsgBEEANgLgAiAEKAIsIARBFGoiASgCABEDACAEKAKEAyABKAIAEQMAIAQgASgCABEDAEEACw0AIAAgASACQQAQjzgL6wkBBn8gAARAIAAoAugCIQMDQAJAIANFBEAgACgC7AIiA0UNASAAQQA2AuwCCyADKAIAIQQgAygCJCAAKAIUEQMAIAMoAiwiAQRAA0AgASgCBCECIAEoAhAgACgCFBEDACABIAAoAhQRAwAgAiIBDQALCyADIAAoAhQRAwAgBCEDDAELCyAAKAKoAiEBA0ACQCABRQRAIAAoAqwCIgFFDQEgAEEANgKsAgsgASgCCCECIAEgACgCFBEDACACIQEMAQsLIAAoAvQCIgEEQANAIAEoAgQhAiABKAIQIAAoAhQRAwAgASAAKAIUEQMAIAIiAQ0ACwsgACgC8AIiAQRAA0AgASgCBCECIAEoAhAgACgCFBEDACABIAAoAhQRAwAgAiIBDQALCyAAKAKcAyIBBEADQCABKAIAIQIgASAAKAKwAygCCBEDACACIgENAAsLIAAoAqADIgEEQANAIAEoAgAhAiABIAAoArADKAIIEQMAIAIiAQ0ACwsgACgCtAMiAQRAA0AgASgCACECIAEgACgCyAMoAggRAwAgAiIBDQALCyAAKAK4AyIBBEADQCABKAIAIQIgASAAKALIAygCCBEDACACIgENAAsLIAAoAuQBIAAoAhQRAwACQCAALQDkAw0AIAAoAuACIgFFDQAgASgCFCICBH8gAiABKAIcQQJ0agVBAAshBSAAKALYAyEGA0AgAiAFRwRAIAIoAgAhAyACQQRqIgQhAiADRQ0BIAMoAhBFDQEgAygCFCAAKAIUEQMADAELCyABKAIIBEBBACECA0AgASgCACACQQJ0aigCACABKAIQKAIIEQMAIAJBAWoiAiABKAIISQ0ACwsgASgCACABKAIQKAIIEQMAIAEoAowBBEBBACECA0AgASgChAEgAkECdGooAgAgASgClAEoAggRAwAgAkEBaiICIAEoAowBSQ0ACwsgASgChAEgASgClAEoAggRAwAgASgCHARAQQAhAgNAIAEoAhQgAkECdGooAgAgASgCJCgCCBEDACACQQFqIgIgASgCHEkNAAsLIAEoAhQgASgCJCgCCBEDACABKAIwBEBBACECA0AgASgCKCACQQJ0aigCACABKAI4KAIIEQMAIAJBAWoiAiABKAIwSQ0ACwsgASgCKCABKAI4KAIIEQMAIAEoAkQEQEEAIQIDQCABKAI8IAJBAnRqKAIAIAEoAkwoAggRAwAgAkEBaiICIAEoAkRJDQALCyABKAI8IAEoAkwoAggRAwAgASgCUCICBEADQCACKAIAIQMgAiABKAJkKAIIEQMAIAMiAg0ACwsgASgCVCICBEADQCACKAIAIQMgAiABKAJkKAIIEQMAIAMiAg0ACwsgASgCaCICBEADQCACKAIAIQMgAiABKAJ8KAIIEQMAIAMiAg0ACwsgASgCbCICBEADQCACKAIAIQMgAiABKAJ8KAIIEQMAIAMiAg0ACwsgBkUEQCABKAK4ASAAKAIUEQMAIAEoAqQBIAAoAhQRAwALIAEgACgCFBEDAAsgACgChAMgACgCFBEDACAAKALMAyAAKAIUEQMAIAAoAgggACgCFBEDACAAKAIsIAAoAhQRAwAgACgCiAMgACgCFBEDACAAKALsASAAKAIUEQMAIAAoAvgBIgEEQCAAKALwASABEQMACyAAIAAoAhQRAwALC6EBAQJ/IwFBEGsiBSQBAkAgAEGUAWogAEGQAWogACgC5AEjqAQjqQQgAC0A6AEbEQIARQRAIAAgACgC5AEQmzgiBA0BCyAAIwJB/iJqNgKUAiAFIAE2AgwgACgCkAEiBCABIAIg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AAAAAPA/IQYgASkD8AMiB0IAUgRAIAcgCHy1IAe1lbshBgsgBCMAIgVBocQOajYCICAEIAY5AxggBCAINwMQIAQgBzcDCCAEIAE2AgAjzAEoAgAgBUH9lANqIAQQ7D8aDAILIAAoApABIgUgBCgCLCIBIAIgBEEsaiAFKAIAEQQAIQULIAAjAkH+Imo2ApQCIAAgACgCkAEgASACIAUgBCgCLCADIAAtAOADRUEBQQAQxzghAAsgBEEwaiQBIAALKwEBfwJAIABFDQAgACgCACECIAAgATYCACACIAAoAgRHDQAgACABNgIECwsVACAABEAgACACNgI4IAAgATYCNAsLDgAgAARAIAAgATYCNAsLDgAgAARAIAAgATYCOAsLDgAgAARAIAAgATYCPAsLDgAgAARAIAAgATYCQAsLDgAgAARAIAAgATYCRAsLDgAgAARAIAAgATYCSAsLDgAgAARAIAAgATYCTAsLFgAgAARAIABBADoAsAIgACABNgJQCwsWACAABEAgAEEBOgCwAiAAIAE2AlALCw4AIAAEQCAAIAE2AlQLCw4AIAAEQCAAIAE2AlgLCw4AIAAEQCAAIAE2AlwLCw4AIAAEQCAAIAE2AmALCxUAIAAEQCAAIAI2AmggACABNgJkCwsOACAABEAgACABNgJkCwsOACAABEAgACABNgJoCwsOACAABEAgACABNgJsCwsOACAABEAgACABNgJwCwsOACAABEAgACABNgJ4CwsWACAABEAgACACNgL0ASAAIAE2AnwLCw8AIAAEQCAAIAE2AoABCwsPACAABEAgACABNgKEAQsLDwAgAARAIAAgATYCiAELCw8AIAAEQCAAIAE2AowBCws7AQJ/AkADQCAAIgJFDQEgAigC2AMiAA0ACwJAIAIoAtwDQQFrDgMBAAEACyACIAE2AuwDQQEhAwsgAwvrAgEBfwJAAkACQCAARQ0AIAJBAEgNACABDQEgAkUNAQwCCyAADQFBAA8LAkACQAJAAkAgACgC3AMOBAIDAQADCyAAQSE2ApgCQQAPCyAAQSQ2ApgCQQAPCyAAKALYAw0AIAAQuzgNACAAQQE2ApgCQQAPC0EBIQQgAEEBNgLcAwJAIAJFBEAgACADOgDgAyADRQ0BIAAgACgCGCICNgKkAiAAIAAoAhwiATYCKCAAIAAgAiABIABBGGog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IgcgBCgCCCAHayAAKAJQEQcAIAUgBCgCDDYCACACQQFLDQALDAELIAAoAgQgAiADIAJrIAAoAlARBwALIARBEGokAQslAQF/IABBAWsiAEEqTQR/IwBBkNu+AWogAEECdGooAgAFIAELCxcAIwBBvNy+AWogAEGAAXNBAnRqKAIAC10BAn8jAUEQayIEJAEgBCABNgIMIAAoApABIgUgASACIARBDGogBSgCABEEACEFIAAgACgCkAEgASACIAUgBCgCDCADIAAtAOADRUEBQQAQxzghACAEQRBqJAEgAAueVAMWfwF8An4jAUFAaiIMJAEgDCAFNgI0IAAoAuACIQsCfyABIAAoApABRgRAIABBnAJqIRogAEGgAmoMAQsgACgCqAIiGkEEagshFiAAQagDaiERIABBnANqIRIgAEGgAmohHiAAQZwCaiEfIAtBhAFqIRsgC0HgAGohEyALQdwAaiEPIAtB0ABqIRQgAEH8AWohFwJAAkACQANAAkAgGiACNgIAIBYgDCgCNCINNgIAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQBKBEAgBCEKDAELIAdBACAEGw0RQQ8hCkEFIQUCQAJAAkAgBEEPag4QAwICAgICAgICAgIBAgQVAAILIBogDTYCAEEEIQUMFAsgACgCkAEgAUcEQCAAKAKoAi0AFEUNEwwSCyAALQDkAw0RQQMhBQwTCyAMIAM2AjRBACAEayEKIAMhDQsCQCAXIAogAiANIAEgFygCABEGACIEQQFrQQJJDQAgBEE5Rg0AIAAgCiACIAwoAjRB7SQgCRDIOA0AA0AgACIBKALYAyIADQALQSshBSABKAKABEEATA0SIAEpA/gDISJEAAAAAAAA8D8hICABKQPwAyIhQgBSBEAgISAifLUgIbWVuyEgCyAMIwAiAEGhxA5qNgIgIAwgIDkDGCAMICI3AxAgDCAhNwMIIAwgATYCACPMASgCACAAQf2UA2ogDBDsPxoMEgtBASEVQQAhBQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQFqDj4h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AgggPCgCCCA9KAIIID4oAgggPygCCCBAKAIIIEEoAgggQigCCCBDKAIIIEQoAgggRSgCCCBGKAIIIEcoAgggSCgCCCBJKAIIIEooAgggSygCCCBMKAIIIE0oAgggTigCCCBPKAIIIFAoAgggUSgCCCAEKAIIIFIoAghqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqIgQ7AcwBIBEgBEEQdjsBzgEgESCOASCPASCQASCRASCSASCTASCUASCVASCWASCXASCYASCZASCaASCbASCcASCdASCeASCfASCgASChASCiASCjASCkASClASCmASCnASCoASCpASCqASCrASCsASCtASCuASCvASCwASCxASCyASCzASC0ASC1ASC2ASC3ASC4ASAPIBQgFSAZIBwgHyAgampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqaiIEOwHIASARIARBEHY7AcoBIBEgXCBdIF4gXyBgIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiB7IHwgfSB+IH8ggAEggQEgggEggwEghAEghQEghgEghwEgiAEgiQEgigEgiwEgjAEgjQFqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqIgQ7AcQBIBEgBEEQdjsBxgELIBEvAcQBIgQgES8BxgEiAiACIARKGyEOIAIgBEkhAgJAIAcNAEECIAIgDiARLwHIASIESxshAiAOIAQgBCAOShshDiASQQNGDQBBAyACIA4gES8BygEiBEsbIQIgDiAEIAQgDkobIQ4gEkEERg0AQQQgAiAOIBEvAcwBIgRLGyECIA4gBCAEIA5KGyEEICcEQCAEIQ4MAQtBgICAgHggBCARLwHOASIQIAQgEEgbIBJBBkcbIQ5BBSACIAQgEEsbIQILIBFBoAFqIAJBAnRqIgQgBCgCAEEBajYCACAAIBhqQYANaiACOgAAAkAgJUUEQCAFIAhKDQFBACEEICpBAWpBA3EiCgRAA0AgACACQYgIbGogGiAFQQF0ai8BAEECdGpB4OICaiIQIBAoAgBBAWo2AgAgBUEBaiEFIARBAWoiBCAKRw0ACwsgKkEDSQ0BA0AgACACQYgIbGpB4OICaiIEIBogBUEBdGoiEC8BAEECdGoiCiAKKAIAQQFqNgIAIAQgEC8BAkECdGoiCiAKKAIAQQFqNgIAIAQgEC8BBEECdGoiECAQKAIAQQFqNgIAIAQgGiAFQQNqIhBBAXRqLwEAQQJ0aiIEIAQoAgBBAWo2AgAgBUEEaiEFIAggEEcNAAsMAQsgACACQYgIbGpB4OICaiIEIBogBUEBdGoiBS8BAEECdGoiAiACKAIAQQFqNgIAIAQgBS8BAkECdGoiAiACKAIAQQFqNgIAIAQgBS8BBEECdGoiAiACKAIAQQFqNgIAIAQgBS8BBkECdGoiAiACKAIAQQFqNgIAIAQgBS8BCEECdGoiAiACKAIAQQFqNgIAIAQgBS8BCkECdGoiAiACKAIAQQFqNgIAIAQgBS8BDEECdGoiAiACKAIAQQFqNgIAIAQgBS8BDkECdGoiAiACKAIAQQFqNgIAIAQgBS8BEEECdGoiAiACKAIAQQFqNgIAIAQgBS8BEkECdGoiAiACKAIAQQFqNgIAIAQgBS8BFEECdGoiAiACKAIAQQFqNgIAIAQgBS8BFkECdGoiAiACKAIAQQFqNgIAIAQgBS8BGEECdGoiAiACKAIAQQFqNgIAIAQgBS8BGkECdGoiAiACKAIAQQFqNgIAIAQgBS8BHEECdGoiAiACKAIAQQFqNgIAIAQgBS8BHkECdGoiAiACKAIAQQFqNgIAIAQgBS8BIEECdGoiAiACKAIAQQFqNgIAIAQgBS8BIkECdGoiAiACKAIAQQFqNgIAIAQgBS8BJEECdGoiAiACKAIAQQFqNgIAIAQgBS8BJkECdGoiAiACKAIAQQFqNgIAIAQgBS8BKEECdGoiAiACKAIAQQFqNgIAIAQgBS8BKkECdGoiAiACKAIAQQFqNgIAIAQgBS8BLEECdGoiAiACKAIAQQFqNgIAIAQgBS8BLkECdGoiAiACKAIAQQFqNgIAIAQgBS8BMEECdGoiAiACKAIAQQFqNgIAIAQgBS8BMkECdGoiAiACKAIAQQFqNgIAIAQgBS8BNEECdGoiAiACKAIAQQFqNgIAIAQgBS8BNkECdGoiAiACKAIAQQFqNgIAIAQgBS8BOEECdGoiAiACKAIAQQFqNgIAIAQgBS8BOkECdGoiAiAC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AEUNACAAKAIgRQ0AIAAoAiQiBEUNACAAKAIcIgFFDQAgASgCACAARw0AAkACQCABKAIEIgNBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIANBmgVGDQAgA0EqRw0BCyABKAIIIgIEQCAAKAIoIAIgBBEFACAAKAIcIQELIAEoAkQiAgRAIAAoAiggAiAAKAIkEQUAIAAoAhwhAQsgASgCQCICBEAgACgCKCACIAAoAiQRBQAgACgCHCEBCyABKAI4IgIEQCAAKAIoIAIgACgCJBEFACAAKAIcIQELIAAoAiggASAAKAIkEQUAIABBADYCHEF9QQAgA0HxAEYbIQILIAILsAEBA38gABDmOiICRQRAIAAoAhwiACAAKAIsQQF0NgI8IAAoAkQiASAAKAJMQQF0QQJrIgNqQQA7AQAgAUEAIAMQ0D4aIABBADYCtC0gAEKAgICAIDcCdCAAQgA3AmggAEKAgICAIDcCXCAAQQA2AkggACMAQcCH5AFqIAAoAoQBQQxsaiIBLwEENgKQASAAIAEvAQA2AowBIAAgAS8BAjYCgAEgACABLwEGNgJ8CyACC5MCAQN/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiAUUNACABKAIAIABHDQACQAJAIAEoAgQiA0E5aw45AQICAgICAgICAgICAQICAgECAgICAgICAgICAgICAgICAgECAgICAgICAgICAgECAgICAgICAgIBAAsgA0GaBUYNACADQSpHDQELIABBAjYCLCAAQQA2AgggAEIANwIUIAFBADYCFCABIAEoAgg2AhAgASgCGCICQQBIBEAgAUEAIAJrIgI2AhgLIAFBOUEqIAJBAkYbNgIEIAACfyACQQJGBEBBAEEAQQAQ3joMAQtBAEEAQQAQ1zoLNgIwIAFBfjYCKCABELY7QQAhAgsgAguFBQEMf0F+IQQCQCAARQ0AIAAoAiBFDQAgACgCJEUNACAAKAIcIgNFDQAgAygCACAARw0AAkACQCADKAIEIgVBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIAVBmgVGDQAgBUEqRw0BCyABRQ0AAkACQAJAAkAgAygCGCIGQQFrDgIABAELIAVBKkcNAyADKAJ0DQMgACAAKAIwIAEgAhDXOjYCMCADQQA2AhggAygCLCIEIAJNDQEgAiEEDAILIAMoAnQNAiADQQA2AhggAiADKAIsIgRJBEAgAiEEDAILIAYNACADKAJEIgQgAygCTEEBdEECayIFakEAOwEAIARBACAFENA+GiADQQA2ArQtIANBADYCXCADQQA2AmwgAygCLCEECyABIAIgBGtqIQELIAAoAgQhByAAIAQ2AgQgACgCACEIIAAgATYCACADEOg6IAMoAnQiAUEDTwRAA0AgAUECayECIAMoAkghASADKAI0IQkgAygCQCEKIAMoAkQhCyADKAJUIQwgAygCOCENIAMoAlghDiADKAJsIQQDQCADIAQgDWotAAIgASAOdHMgDHEiATYCSCAKIAQgCXFBAXRqIAsgAUEBdGoiBS8BADsBACAFIAQ7AQAgBEEBaiEEIAJBAWsiAg0ACyADQQI2AnQgAyAENgJsIAMQ6DogAygCdCIBQQJLDQALCyADIAE2ArQtIANCgICAgCA3AnRBACEEIANBADYCaCADQQI2AmAgAyADKAJsIAFqIgE2AlwgAyABNgJsIAAgBzYCBCAAIAg2AgAgAyAGNgIYCyAEC/0IAQx/IAAoAiwiB0GGAmshDCAAKAJ0IQQDQCAAKAI8IAQgACgCbCIIamshBiAMIAAoAixqIAhNBEAgACgCOCIBIAEgB2ogByAGaxDOPhogACAAKAJwIAdrNgJwIAAgACgCbCAHayIINgJsIAAgACgCXCAHazYCXCAIIAAoArQtSQRAIAAgCDYCtC0LIAAoAkwiBUEBayELIAAoAkQgBUEBdGohAiAAKAIsIQFBACEDIAVBA3EiCQRAA0AgAkECayICIAIvAQAiBCABayIKQQAgBCAKTxs7AQAgBUEBayEFIANBAWoiAyAJRw0ACwsgC0EDTwRAA0AgAkECayIDIAMvAQAiAyABayIEQQAgAyAETxs7AQAgAkEEayIDIAMvAQAiAyABayIEQQAgAyAETxs7AQAgAkEGayIDIAMvAQAiAyABayIEQQAgAyAETxs7AQAgAkEIayICIAIvAQAiAyABayIEQQAgAyAETxs7AQAgBUEEayIFDQALCyABQQFrIQsgACgCQCABQQF0aiECQQAhAyABIQUgAUEDcSIJBEADQCACQQJrIgIgAi8BACIEIAFrIgpBACAEIApPGzsBACAFQQFrIQUgA0EBaiIDIAlHDQALCyALQQNPBEADQCACQQJrIgMgAy8BACIDIAFrIgRBACADIARPGzsBACACQQRrIgMgAy8BACIDIAFrIgRBACADIARPGzsBACACQQZrIgMgAy8BACIDIAFrIgRBACADIARPGzsBACACQQhrIgIgAi8BACIDIAFrIgRBACADIARPGzsBACAFQQRrIgUNAAsLIAYgB2ohBgsCQCAAKAIAIgEoAgQiBUUNACAAKAJ0IQMgBSAGIAUgBkkbIgIEQCAAKAI4IQQgASAFIAJrNgIEIAQgCGogA2ogASgCACACEM4+IQUCQAJAAkAgASgCHCgCGEEBaw4CAAECCyABIAEoAjAgBSACENc6NgIwDAELIAEgASgCMCAFIAIQ3jo2AjALIAEgASgCACACajYCACABIAEoAgggAmo2AgggACgCdCEDCyAAIAIgA2oiBDYCdAJAIAAoArQtIgIgBGpBA0kNACAAIAAoAjgiCiAAKAJsIAJrIgFqIgUtAAAiAzYCSCAAIAAoAlQiBiAFLQABIAMgACgCWCIJdHNxIgU2AkgDQCACRQ0BIAAgASAKai0AAiAFIAl0cyAGcSIFNgJIIAAoAkAgACgCNCABcUEBdGogACgCRCAFQQF0aiIDLwEAOwEAIAMgATsBACAAIAJBAWsiAjYCtC0gAUEBaiEBIAIgBGpBAksNAAsLIARBhQJLDQAgACgCACgCBA0BCwsCQCAAKAI8IgUgACgCwC0iAU0NACAAAn8gACgCdCAAKAJsaiICIAFLBEAgACgCOCACakEAQYICIAUgAmsiASABQYICTxsiARDQPhogASACagwBCyACQYICaiICIAFNDQEgACgCOCABakEAIAIgAWsiAiAFIAFrIgEgASACSxsiARDQPhogACgCwC0gAWoLNgLALQsL5AEBBH9BfiEEAkAgAEUNACAAKAIgRQ0AIAAoAiRFDQAgACgCHCIDRQ0AIAMoAgAgAEcNAAJAAkAgAygCBCIAQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyAAQZoFRg0AIABBKkcNAQsgAygCdCIFIAMoAmwiBmoiACADKAIsIgQgACAESRshAAJAIAFFDQAgAEUNACABIAMoAjggBmogBWogAGsgABDOPhoLQQAhBCACRQ0AIAIgADYCAAsgBAumAQECf0F+IQMCQCAARQ0AIAAoAiBFDQAgACgCJEUNACAAKAIcIgJFDQAgAigCACAARw0AAkACQCACKAIEIgBBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIABBmgVGDQAgAEEqRw0BCyACKAIYQQJHDQAgAiABNgIcQQAhAwsgAwu0AQECf0F+IQQCQCAARQ0AIAAoAiBFDQAgACgCJEUNACAAKAIcIgNFDQAgAygCACAARw0AAkACQCADKAIEIgBBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIABBmgVGDQAgAEEqRw0BCyABBEAgASADKAIUNgIAC0EAIQQgAkUNACACIAMoArwtNgIACyAEC4QCAQJ/QX4hBAJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiA0UNACADKAIAIABHDQACQAJAIAMoAgQiAEE5aw45AQICAgICAgICAgICAQICAgECAgICAgICAgICAgICAgICAgECAgICAgICAgICAgECAgICAgICAgIBAAsgAEGaBUYNACAAQSpHDQELQXshBCABQRBLDQAgAygCmC0gAygCEEECakkNAANAIANBECADKAK8LSIEayIAIAEgACABSBsiACAEajYCvC0gAyADLwG4LSACQX8gAHRBf3NxIAR0cjsBuC0gAxC5OyACIAB1IQJBACEEIAEgAGsiAQ0ACwsgBAuWBwEIf0F+IQgCQCAARQ0AIAAoAiBFDQAgACgCJEUNACAAKAIcIgRFDQAgBCgCACAARw0AAkACQCAEKAIEIgdBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIAdBmgVGDQAgB0EqRw0BCyACQQRLDQBBBiABIAFBf0YbIgFBCUsNAAJAIAIgBCgCiAFGBEAjAEHAh+QBaiIIIAQoAoQBQQxsaigCCCAIIAFB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aw45AQICAgICAgICAgICAQICAgECAgICAgICAgICAgICAgICAgECAgICAgICAgICAgECAgICAgICAgIBAAsgBEGaBUYNACAEQSpHDQELIABFDQAgACABKQAANwAAIAAgASkAMDcAMCAAIAEpACgiBTcAKCAAIAEpABg3ABggACABKQAQNwAQIAAgASkACDcACCAAIAEpACAiBjcAIEF8IQMgBadBAUHELSAGpxECACIBRQ0AIAAgATYCHCABIAJBxC0Qzj4iASAANgIAIAEgACgCKCABKAIsQQIgACgCIBECADYCOCABIAAoAiggASgCLEECIAAoAiARAgA2AkAgASAAKAIoIAEoAkxBAiAAKAIgEQIANgJEIAEgACgCKCABKAKcLUEEIAAoAiARAgAiAzYCCAJAAkAgASgCOCIERQ0AIAEoAkBFDQAgASgCREUNACADDQELIAAQ5DoaQXwPCyAEIAIoAjggASgCLEEBdBDOPhogASgCQCACKAJAIAEoAixBAXQQzj4aIAEoAkQgAigCRCABKAJMQQF0EM4+GiABKAIIIAIoAgggASgCDBDOPhogAigCCCEDIAIoAhAhACABIAFB/BRqNgKwFiABIAFBiBNqNgKkFiABIAFBlAFqNgKYFiABIAEoAggiAiABKAKcLWo2ApgtIAEgAiAAIANrajYCEEEAIQMLIAMLogwBDX8CQANAAkACQCAAKAJ0QYUCTQRAIAAQ6DogACgCdCECAkAgAQ0AIAJBhgJPDQBBAA8LIAJFDQQgAkEDSQ0BCyAAIAAoAlQgACgCbCICIAAoAjhqLQACIAAoAkggACgCWHRzcSIDNgJIIAAoAkAgAiAAKAI0cUEBdGogACgCRCADQQF0aiIELwEAIgM7AQAgBCACOwEAIANFDQAgACgCLEGGAmsgAiADa0kNACAAIAAgAxD1OiICNgJgDAELIAAoAmAhAgsCQCACQQNPBEAgACAAKAKgLSIDQQFqNgKgLSADIAAoApgtaiAAKAJsIAAoAnBrIgM6AAAgACAAKAKgLSIEQQFqNgKgLSAEIAAoApgtaiADQQh2OgAAIAAgACgCoC0iBEEBajYCoC0gBCAAKAKYLWogAkEDayICOgAAI5kDIAJB/wFxai0AAEECdCAAakGYCWoiAiACLwEAQQFqOwEAIAAjmAMgA0EBa0H//wNxIgIgAkEHdkGAAmogAkGAAkkbai0AAEECdGpBiBNqIgIgAi8BAEEBajsBACAAIAAoAnQgACgCYCICayIDNgJ0IAAoAqQtIQYgACgCoC0hBwJAIAIgACgCgAFLDQAgA0EDSQ0AIAAgAkEBayIDNgJgIAAoAkghBCAAKAJsIQIgACgCNCEIIAAoAkAhCSAAKAJEIQogACgCVCELIAAoAjghDCAAKAJYIQ0DQCAAIAIiBUEBaiICNgJsIAAgBSAMai0AAyAEIA10cyALcSIENgJIIAkgAiAIcUEBdGogCiAEQQF0aiIOLwEAOwEAIA4gAjsBACAAIANBAWsiAzYCYCADDQALIAAgBUECaiICNgJsIAYgB0cNAwwCCyAAQQA2AmAgACAAKAJsIAJqIgI2AmwgACAAKAI4IAJqIgMtAAAiBDYCSCAAIAAoAlQgAy0AASAEIAAoAlh0c3E2AkggBiAHRw0CDAELIAAoAjggACgCbGotAAAhAiAAIAAoAqAtIgNBAWo2AqAtIAMgACgCmC1qQQA6AAAgACAAKAKgLSIDQQFqNgKgLSADIAAoApgtakEAOgAAIAAgACgCoC0iA0EBajYCoC0gAyAAKAKYLWogAjoAACAAIAJBAnRqQZQBaiICIAIvAQBBAWo7AQAgACAAKAJ0QQFrNgJ0IAAgACgCbEEBaiICNgJsIAAoAqAtIAAoAqQtRw0BC0EAIQMgACAAKAJcIgRBAE4EfyAAKAI4IARqBSADCyACIARrQQAQuzsgACAAKAJsNgJcIAAoAgAiAigCHCIDELk7AkAgAygCFCIEIAIoAhAiBSAEIAVJGyIERQ0AIAIoAgwgAygCECAEEM4+GiACIAIoAgwgBGo2AgwgAyADKAIQIARqNgIQIAIgAigCFCAEajYCFCACIAIoAhAgBGs2AhAgAyADKAIUIgIgBGs2AhQgAiAERw0AIAMgAygCCDYCEAsgACgCACgCEA0AC0EADwsgAEECIAAoAmwiAiACQQJPGzYCtC0gAUEERgRAQQAhAyAAIAAoAlwiBEEATgR/IAAoAjggBGoFIAMLIAIgBGtBARC7OyAAIAAoAmw2AlwgACgCACICKAIcIgMQuTsCQCADKAIUIgQgAigCECIFIAQgBUkbIgRFDQAgAigCDCADKAIQIAQQzj4aIAIgAigCDCAEajYCDCADIAMoAhAgBGo2AhAgAiACKAIUIARqNgIUIAIgAigCECAEazYCECADIAMoAhQiAiAEazYCFCACIARHDQAgAyADKAIINgIQC0EDQQIgACgCACgCEBsPCwJAIAAoAqAtRQ0AQQAhAyAAIAAoAlwiBEEATgR/IAAoAjggBGoFIAMLIAIgBGtBABC7OyAAIAAoAmw2AlwgACgCACICKAIcIgMQuTsCQCADKAIUIgQgAigCECIFIAQgBUkbIgRFDQAgAigCDCADKAIQIAQQzj4aIAIgAigCDCAEajYCDCADIAMoAhAgBGo2AhAgAiACKAIUIARqNgIUIAIgAigCECAEazYCECADIAMoAhQiAiAEazYCFCACIARHDQAgAyADKAIINgIQCyAAKAIAKAIQDQBBAA8LQQELoQQBEX8gACgCfCICIAJBAnYgACgCeCIFIAAoAowBSRshCSAAKAJsIgIgACgCLGtBhgJqIgNBACACIANPGyEMIAAoApABIgMgACgCdCIIIAMgCEkbIQ0gACgCOCIOIAJqIgZBggJqIQ8gBSAGaiICLQAAIQogAkEBay0AACELIAAoAjQhECAAKAJAIREDQAJAAkAgASAOaiICIAVqIgMtAAAgCkcNACADQQFrLQAAIAtHDQAgAi0AACAGLQAARw0AQQIhByACLQABIAYtAAFHDQACQAJAAkACQAJAAkACQANAIAYgB2oiAy0AASACLQADRgRAIAMtAAIgAi0ABEcNAiADLQADIAItAAVHDQMgAy0ABCACLQAGRw0EIAMtAAUgAi0AB0cNBSADLQAGIAItAAhHDQYgAy0AByACLQAJRw0HIAYgB0EIaiIDaiIELQAAIAItAApHDQggAkEIaiECIAdB+gFJIRIgAyEHIBINAQwICwsgA0EBaiEEDAYLIANBAmohBAwFCyADQQNqIQQMBAsgA0EEaiEEDAMLIANBBWohBAwCCyADQQZqIQQMAQsgA0EHaiEECyAEIA9rIgNBggJqIgIgBUwNACAAIAE2AnAgAiANTgRAIAIhBQwCCyACIAZqLQAAIQogAyAGai0AgQIhCyACIQULIAwgESABIBBxQQF0ai8BACIBTw0AIAlBAWsiCQ0BCwsgBSAIIAUgCEkbC/YPAQd/A0ACQAJAAkAgACgCdEGFAksNACAAEOg6IAAoAnQhAgJAIAENACACQYYCTw0AQQAPCyACRQ0CIAJBAksNACAAIAAoAmAiAjYCeCAAIAAoAnA2AmRBAiEDIABBAjYCYAwBC0ECIQMgACAAKAJUIAAoAmwiBCAAKAI4ai0AAiAAKAJIIAAoAlh0c3EiAjYCSCAAKAJAIAQgACgCNHFBAXRqIAAoAkQgAkEBdGoiAi8BACIFOwEAIAIgBDsBACAAIAAoAmAiAjYCeCAAIAAoAnA2AmQgAEECNgJgIAVFDQACQCACIAAoAoABTw0AIAAoAixBhgJrIAQgBWtJDQAgACAAIAUQ9ToiAzYCYCADQQVLDQAgACgCiAFBAUcEQCADQQNHDQFBAyEDIAAoAmwgACgCcGtBgSBJDQELQQIhAyAAQQI2AmALIAAoAnghAgsCQCACQQNJDQAgAiADSQ0AIAAgACgCoC0iA0EBajYCoC0gACgCdCEEIAMgACgCmC1qIAAoAmwiBSAAKAJkQX9zaiIDOgAAIAAgACgCoC0iBkEBajYCoC0gBiAAKAKYLWogA0EIdjoAACAAIAAoAqAtIgZBAWo2AqAtIAYgACgCmC1qIAJBA2siAjoAACOZAyACQf8BcWotAABBAnQgAGpBmAlqIgIgAi8BAEEBajsBACAAI5gDIANBAWtB//8DcSICIAJBB3ZBgAJqIAJBgAJJG2otAABBAnRqQYgTaiICIAIvAQBBAWo7AQAgACAAKAJ4IgJBAmsiAzYCeCAAIAAoAnQgAmtBAWo2AnQgBCAFakEDayEFIAAoAmwhAiAAKAKkLSEHIAAoAqAtIQgDQCAAIAIiBEEBaiICNgJsIAIgBU0EQCAAIAAoAlQgBCAAKAI4ai0AAyAAKAJIIAAoAlh0c3EiBjYCSCAAKAJAIAAoAjQgAnFBAXRqIAAoAkQgBkEBdGoiBi8BADsBACAGIAI7AQALIAAgA0EBayIDNgJ4IAMNAAsgAEECNgJgIABBADYCaCAAIARBAmoiAjYCbCAHIAhHDQJBACEDIAAgACgCXCIEQQBOBH8gACgCOCAEagUgAwsgAiAEa0EAELs7IAAgACgCbDYCXCAAKAIAIgIoAhwiAxC5OwJAIAMoAhQiBCACKAIQIgUgBCAFSRsiBEUNACACKAIMIAMoAhAgBBDOPhogAiACKAIMIARqNgIMIAMgAygCECAEajYCECACIAIoAhQgBGo2AhQgAiACKAIQIARrNgIQIAMgAygCFCICIARrNgIUIAIgBEcNACADIAMoAgg2AhALIAAoAgAoAhANAkEADwsgACgCaARAIAAoAmwgACgCOGpBAWstAAAhAiAAIAAoAqAtIgNBAWo2AqAtIAMgACgCmC1qQQA6AAAgACAAKAKgLSIDQQFqNgKgLSADIAAoApgtakEAOgAAIAAgACgCoC0iA0EBajYCoC0gAyAAKAKYLWogAjoAACAAIAJBAnRqQZQBaiICIAIvAQBBAWo7AQACQCAAKAKgLSAAKAKkLUcNAEEAIQMgACAAKAJcIgJBAE4EfyAAKAI4IAJqBSADCyAAKAJsIAJrQQAQuzsgACAAKAJsNgJcIAAoAgAiAigCHCIDELk7IAMoAhQiBCACKAIQIgUgBCAFSRsiBEUNACACKAIMIAMoAhAgBBDOPhogAiACKAIMIARqNgIMIAMgAygCECAEajYCECACIAIoAhQgBGo2AhQgAiACKAIQIARrNgIQIAMgAygCFCICIARrNgIUIAIgBEcNACADIAMoAgg2AhALIAAgACgCbEEBajYCbCAAIAAoAnRBAWs2AnQgACgCACgCEA0CQQAPBSAAQQE2AmggACAAKAJsQQFqNgJsIAAgACgCdEEBazYCdAwCCwALCyAAKAJoBEAgACgCbCAAKAI4akEBay0AACECIAAgACgCoC0iA0EBajYCoC0gAyAAKAKYLWpBADoAACAAIAAoAqAtIgNBAWo2AqAtIAMgACgCmC1qQQA6AAAgACAAKAKgLSIDQQFqNgKgLSADIAAoApgtaiACOgAAIAAgAkECdGpBlAFqIgIgAi8BAEEBajsBACAAQQA2AmgLIABBAiAAKAJsIgIgAkECTxs2ArQtIAFBBEYEQEEAIQMgACAAKAJcIgRBAE4EfyAAKAI4IARqBSADCyACIARrQQEQuzsgACAAKAJsNgJcIAAoAgAiAigCHCIDELk7AkAgAygCFCIEIAIoAhAiBSAEIAVJGyIERQ0AIAIoAgwgAygCECAEEM4+GiACIAIoAgwgBGo2AgwgAyADKAIQIARqNgIQIAIgAigCFCAEajYCFCACIAIoAhAgBGs2AhAgAyADKAIUIgIgBGs2AhQgAiAERw0AIAMgAygCCDYCEAtBA0ECIAAoAgAoAhAbDwsCQCAAKAKgLUUNAEEAIQMgACAAKAJcIgRBAE4EfyAAKAI4IARqBSADCyACIARrQQAQuzsgACAAKAJsNgJcIAAoAgAiAigCHCIDELk7AkAgAygCFCIEIAIoAhAiBSAEIAVJGyIERQ0AIAIoAgwgAygCECAEEM4+GiACIAIoAgwgBGo2AgwgAyADKAIQIARqNgIQIAIgAigCFCAEajYCFCACIAIoAhAgBGs2AhAgAyADKAIUIgIgBGs2AhQgAiAERw0AIAMgAygCCDYCEAsgACgCACgCEA0AQQAPC0EBCyIAIABFBEBBfg8LIAAoAhBBzzhGBEAgABCQOw8LIAAQnTsLCwAgAEF/IAEQ+ToLxwUCCH8BfiMBQSBrIgckAQJAIABFDQBBqAEQ40YiA0UNACADQQA2AmggA0KAgICAgIAINwIcIANC/////w83A0ggA0EANgIQIANBADYCLAJAAkAgAi0AACIERQ0AA0AgAiEGIATAIQICQCAEQTBrQf8BcUEJTQRAIAMgAkEwazYCSAwBCwJAAkACQAJAAkACQAJAAkACQAJAIAJBK2sOTgwKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCggKCgoKCgoKCgoKCgcKCQoKCgoKCgoKCgoKCgIKCgoDBQoGCgoKCgoKCgoKAAoKCgoBBAoLQc84IQUgA0HPODYCEAwJC0Gx8wEhBSADQbHzATYCEAwIC0EBIQUgA0EBNgIQDAcLQQEhCgwGC0EBIQkMBQsgA0EBNgJMDAQLIANBAjYCTAwDCyADQQM2AkwMAgsgA0EENgJMDAELQQEhCCADQQE2AiwLIAZBAWohAiAGLQABIgQNAAsCQCAFQc84RwRAIAUNAQwCCyAIDQEgA0EBNgIsCyADIAAQ/URBAWoiBhDjRiIENgIYIARFDQAgByAANgIQIAQgBiMAQbWkA2ogB0EQahDMRBpBACEGIAVBzzhHBEBBgARBgAggBUGx8wFGG0HBAUHBACAJG3IhBgsgAUEATgRAIAMgATYCFAwCCyAHQbYDNgIAIAMgACAGQYCAIkGAgAIgChtyIAcQ3EIiATYCFCABQX9HDQEgBBDkRgsgAxDkRkEAIQQMAQsCfwJAIAVBAUYEQCABQgBBAhCHQhogA0Gx8wE2AhAMAQsgBUHPOEcNACABQgBBARCHQiELIANCADcDQCADQQA2AgAgAyALQgAgC0J/Uhs3AzggA0EwagwBCyADQQA2AgAgA0HQAGoLQQA2AgAgA0EANgJwIANCADcDCCADQgA3A2AgAyEECyAHQSBqJAEgBAtSAQN/IwFBEGsiAiQBAkAgAEF/Rg0AQRMQ40YiA0UNACACIAA2AgAgA0ETIwBB2pkLaiACEMxEGiADIAAgARD5OiEEIAMQ5EYLIAJBEGokASAEC0gBAn9BfyECAkAgAEUNACAAKAIQIgNBsfMBRyADQc84R3ENACABQQBIDQAgACgCHA0AIABBAiABIAFBAk0bNgIgQQAhAgsgAgu1AQECf0F/IQECQCAARQ0AIAAoAhBBzzhHDQACQCAAKAJkQQVqDgYAAQEBAQABCyAAKAIUIAApAzhBABCHQkJ/UQ0AIABBADYCAEEAIQECfyAAKAIQQc84RgRAIABCADcDQCAAQTBqDAELIABB0ABqC0EANgIAIABBADYCYCAAKAJoIgIEQCAAKAJkQXxHBEAgAhDkRgsgAEEANgJoCyAAQgA3AwggAEEANgJkIABBADYCcAsgAQuZAwIBfgF/Qn8hAwJAIABFDQAgACgCECIEQbHzAUcgBEHPOEdxDQACQCAAKAJkQQVqDgYAAQEBAQABCyACQQFLDQACQCACRQRAIAEgACkDCH0hAQwBCyAAKAJgRQ0AIAApA1ggAXwhAQsgAEEANgJgAkAgBEHPOEYEQAJAIAAoAjBBAUcNACAAKQMIIAF8QgBTDQAgACgCFCABIAA1AgB9QQEQh0JCf1ENAyAAQQA2AmAgAEIANwNAIABBADYCACAAKAJoIgIEQCAAKAJkQXxHBEAgAhDkRgsgAEEANgJoCyAAQQA2AmQgAEEANgJwIAAgACkDCCABfCIDNwMIIAMPCyABQgBTBEAgACkDCCABfCIBQgBTDQMgABD8OkF/Rg0DIAAoAhBBzzhHDQILIAAgACgCACICIAGnIAIgASACrVQbIgJrNgIAIAAgACgCBCACajYCBCAAIAKtIgMgACkDCHw3AwggASADfSEBDAELIAFCAFMNAQsgAUIAUgRAIAAgATcDWCAAQQE2AmALIAApAwggAXwhAwsgAwvTAQEDfyMBQRBrIgMkASAAKAJoIgQEQCAAKAJkQXxHBEAgBBDkRgsgAEEANgJoCwJAAkAgAUEFag4GAQAAAAABAAsgAEEANgIACyAAIAE2AmQCQCABQXxGDQAgAkUNACAAIAAoAhgiBBD9RCACEP1EakEDahDjRiIBNgJoIAFFBEAgAEF8NgJkDAELIAQQ/UQhACACEP1EIQUgAyACNgIIIAMjACICQYatDmo2AgQgAyAENgIAIAEgACAFakEDaiACQceUA2ogAxDMRBoLIANBEGokAQsLACAAIAEgAhD9OgtFAgF+AX9CfyEBAkAgAEUNACAAKAIQIgJBsfMBRyACQc84R3ENACAAKQMIIQEgACgCYAR+IAApA1gFQgALIAF8IQELIAELVQICfgF/Qn8hAQJAIABFDQAgACgCECIDQbHzAUcgA0HPOEdxDQAgACgCFEIAQQEQh0IiAkJ/UQ0AIAAoAhBBzzhHBEAgAg8LIAIgADUCcH0hAQsgAQsgAQF/AkAgAEUNACAAKAIQQc84Rw0AIAAoAkQhAQsgAQtbAQJ/AkAgAEUNACAAKAIQIgNBsfMBRyADQc84R3ENACABBEAgASAAKAJkNgIACyMAIQIgACgCZEF8RgRAIAJB3A1qDwsgACgCaCIAIwBB6eIOaiAAGyECCyACC1IBAX8CQCAARQ0AIAAoAhAiAUGx8wFHBEAgAUHPOEcNASAAQgA3A0ALIAAoAmgiAQRAIAAoAmRBfEcEQCABEORGCyAAQQA2AmgLIABBADYCZAsLbwEBf0F/IQMCQCAARQ0AIAAoAhBBzzhHDQACQCAAKAJkQQVqDgYAAQEBAQABCyACQQBIBEAgAEF+IwBBmt4AahD+OkF/DwsCQCAAIAEgAhCGOyICDQAgACgCZEEFag4GAAEBAQEAAQsgAiEDCyADC+QDAgN/An4gAkUEQEEADwsCQCAAKAJgRQ0AIABBADYCYCAAKQNYIgZQDQADQAJAIAAoAgAiAwRAIAAgAyAGpyADIAYgA61TGyIEazYCACAAIAAoAgQgBGo2AgQgACAErSIHIAApAwh8NwMIIAYgB30hBgwBCyAAKAJABEAgACgCcEUNAwsgABCHO0F/Rw0AQQAPCyAGQgBSDQALCwNAAkACQCAAKAIAIgMEQCABIAAoAgQgAyACIAIgA0sbIgMQzj4aIAAgACgCBCADajYCBCAAIAAoAgAgA2s2AgAMAQsCQCAAKAJARQ0AIAAoAnANACAAQQE2AkQgBQ8LAkAgACgCMCIEBEAgAiAAKAIcQQF0Tw0BCyAAEIc7QX9HDQJBAA8LQQAhAyAEQQFGBEADQCAAKAIUIAEgA2pBgICAgAQgAiADayIEIARBgICAgARPGxDMQyIEQQBKBEAgAyAEaiIDIAJJDQEMAwsLIARBAE4EQCAAQQE2AkAMAgsgAEF/EPo7KAIAEPZEEP46QQAPCyAAIAE2AnggACACNgJ8IAAQiDtBf0YEQEEADwsgACgCACEDIABBADYCAAsgACAAKQMIIAOtfDcDCCADIAVqIQUgASADaiEBIAIgA2shAgsgAg0ACyAFC40CAQN/AkADQAJAAkACQAJAAkAgACgCMA4DAAECAwtBfyEBIAAQjTtBf0YNAyAAKAIwDQJBAA8LIABBADYCACAAKAIcQQF0IQIgACgCKCEDAkADQCAAKAIUIAEgA2pBgICAgAQgAiABayIBIAFBgICAgARPGxDMQyIBQQBKBEAgACAAKAIAIAFqIgE2AgAgASACSQ0BDAILCyABQQBIDQUgAEEBNgJACyAAIAAoAig2AgRBAA8LIAAgACgCKDYCeCAAIAAoAhxBAXQ2AnxBfyEBIAAQiDtBf0YNAQtBACEBIAAoAgANACAAKAJARQ0BIAAoAnANAQsLIAEPCyAAQX8Q+jsoAgAQ9kQQ/jpBfwvuAQEEfyAAQewAaiEDIAAoAnwhBAJ/A0ACQAJAIAAoAnANAEF/IAAQjztBf0YNAxogACgCcA0AIABBeyMAQd3CB2oQ/jogACgCfCEBDAELAkACQAJAAkAgA0EAEKg7IgJBBGoOBwECAAMDAwADCyAAQX4jAEGr0wBqEP46QX8PCyAAQXwjAEHcDWoQ/jpBfw8LIABBfSAAKAKEASIBIwBBvcIDaiABGxD+OkF/DwsgACgCfCEBIAJBAUYNACABDQELCyAAIAQgAWsiATYCACAAIAAoAnggAWs2AgRBACACQQFHDQAaIABBADYCMEEACwtvAgF/AX4CQCADRQ0AIAMoAhBBzzhHDQACQCADKAJkQQVqDgYAAQEBAQABCyABrSACrX4hBQJAIAFFDQAgBUIgiFANACADQX4jAEH9vQFqEP46QQAPCyAFpyICRQ0AIAMgACACEIY7IAFuIQQLIAQLlAEBAn8jAUEQayICJAFBfyEBAkAgAEUNACAAKAIQQc84Rw0AAkAgACgCZEEFag4GAAEBAQEAAQsgACgCACIBBEAgACABQQFrNgIAIAAgACkDCEIBfDcDCCAAIAAoAgQiAUEBajYCBCABLQAAIQEMAQsgACACQQ9qQQEQhjshACACLQAPQX8gABshAQsgAkEQaiQBIAEL1QMCA38CfiABRQRAQX8PCyABKAIQQc84RwRAQX8PC0F/IQICQAJAIAEoAmRBBWoOBgABAQEBAAELAkAgASgCYARAIAFBADYCYAJAIAEpA1giBVANAANAAkAgASgCACICBEAgASACIAWnIAIgBSACrVMbIgNrNgIAIAEgASgCBCADajYCBCABIAOtIgYgASkDCHw3AwggBSAGfSEFDAELIAEoAkAEQCABKAJwRQ0DC0F/IQIgARCHO0F/Rg0FCyAFQgBSDQALCyAAQQBODQFBfw8LIABBAE4NAEF/DwsCQCABKAIAIgJFBEAgAUEBNgIAIAEgASgCKCABKAIcQQF0akEBayICNgIEIAIgADoAACABQQA2AkQgASABKQMIQgF9NwMIDAELIAEoAhxBAXQiAyACRgRAIAFBfSMAQbf3AWoQ/jpBfw8LAkAgASgCBCIEIAEoAihHBEAgBCEDDAELIAMgBGohAyACQQBMDQAgAiAEaiECA0AgA0EBayIDIAJBAWsiAi0AADoAACACIAEoAihLDQALIAEoAgAhAgsgASADQQFrIgM2AgQgASACQQFqNgIAIAMgADoAACABQQA2AkQgASABKQMIQgF9NwMICyAAIQILIAILhwMCBX8CfgJAIABFDQAgAUUNACACQQBMDQAgACgCEEHPOEcNAAJAIAAoAmRBBWoOBgABAQEBAAELAkAgACgCYEUNACAAQQA2AmAgACkDWCIIUA0AA0ACQCAAKAIAIgMEQCAAIAMgCKcgAyAIIAOtUxsiBWs2AgAgACAAKAIEIAVqNgIEIAAgBa0iCSAAKQMIfDcDCCAIIAl9IQgMAQsgACgCQARAIAAoAnBFDQMLIAAQhztBf0cNAEEADwsgCEIAUg0ACwsgAkEBayICRQ0AIAAoAgAhBSABIQQDQAJAAkAgBQ0AIAAQhztBf0YNAyAAKAIAIgUNACAAQQE2AkQMAQsgBCAAKAIEIgQgBEEKIAUgAiACIAVLGyIDEJVCIgcgBGtBAWogAyAHGyIDEM4+IQQgACAAKAIAIANrIgU2AgAgACAAKAIEIANqNgIEIAAgACkDCCADrXw3AwggAyAEaiEEIAIgA2siAkUNACAHRQ0BCwsgASAERg0AIARBADoAACABIQYLIAYL8AIBBH8gAEHsAGohAgJAIAAoAhwNACAAIAAoAiAiARDjRiIDNgIkIAAgAUEBdBDjRiIENgIoIANBACAEG0UEQCAEEORGIAMQ5EYgAEF8IwBB3A1qEP46QX8PCyAAIAE2AhwgAEIANwJsIABBADYClAEgAEIANwKMASACQR8jAEGgtQtqQTgQpTtFDQAgACgCKBDkRiAAKAIkEORGIABBADYCHCAAQXwjAEHcDWoQ/jpBfw8LAkACQAJAIAAoAnAiAUEBSw0AQX8hASAAEI87QX9GDQIgACgCcCIBDgICAQALIAIoAgAiAy0AAEEfRw0AIAMtAAFBiwFHDQAgAhCjOxogAEKAgICAIDcCLEEADwsgACgCLEUEQCAAQQE2AkAgAEEANgJwIABBADYCAEEADwsgACAAKAIoIgI2AgQgAiAAKAJsIAEQzj4aIABCgYCAgBA3AiwgACgCcCECQQAhASAAQQA2AnAgACACNgIACyABCzIAIABFBEBBAA8LAkAgACgCEEHPOEcNACAAKAIwDQAgACgCAA0AIAAQjTsaCyAAKAIsC5YDAQd/QX8hAgJAAkACQCAAKAJkQQVqDgYAAQEBAQABC0EAIQIgACgCQA0AIAAoAnAiBQRAIAAoAmwhAiAAKAIkIQECQCAFQQdxIgdFBEAgBSEDDAELIAUhAwNAIAEgAi0AADoAACADQQFrIQMgAUEBaiEBIAJBAWohAiAGQQFqIgYgB0cNAAsLIAVBCE8EQANAIAEgAi0AADoAACABIAItAAE6AAEgASACLQACOgACIAEgAi0AAzoAAyABIAItAAQ6AAQgASACLQAFOgAFIAEgAi0ABjoABiABIAItAAc6AAcgAUEIaiEBIAJBCGohAiADQQhrIgMNAAsLIAAoAnAhAQsgACgCHCABayECIAAoAiQgAWohAwJAA0AgACgCFCADIARqQYCAgIAEIAIgBGsiASABQYCAgIAETxsQzEMiAUEASgRAIAEgBGoiBCACSQ0BDAILCyABQQBIDQIgAEEBNgJACyAAIAAoAiQ2AmwgACAAKAJwIARqNgJwQQAhAgsgAg8LIABBfxD6OygCABD2RBD+OkF/C3cBAn9BfiEBAkAgAEUNACAAKAIQQc84Rw0AIAAoAhwEQCAAQewAahCqOxogACgCKBDkRiAAKAIkEORGCyAAKAJkIQEgAEEAQQAQ/jogACgCGBDkRiAAKAIUEKY9IQIgABDkRkF/QXtBACABQXtGGyACGyEBCyABC0UBAX8CQCAARQ0AIAAoAhBBsfMBRw0AIAAoAmQNACACQQBIBEAgAEF9IwBB4d0AahD+OkEADwsgACABIAIQkjshAwsgAwujAgEEfwJAIAJFDQAgACgCHEUEQCAAEJM7QX9GDQELIAAoAmAEQCAAQQA2AmAgACAAKQNYEJQ7QX9GDQELIAIgACgCHEkEQCACIQQDQAJ/IAAoAnAiBQRAIAAoAiQhAyAAKAJsDAELIAAgACgCJCIDNgJsIAMLIQYgBSAGaiIFIAEgACgCHCADIAVraiIDIAQgAyAESRsiAxDOPhogACADIAAoAnBqNgJwIAAgACkDCCADrXw3AwggBCADayIERQRAIAIPCyABIANqIQFBACEDIABBABCVO0F/Rw0ACwwBCyAAKAJwBEAgAEEAEJU7QX9GDQELIAAgAjYCcCAAIAE2AmwgACAAKQMIIAKtfDcDCCACQQAgAEEAEJU7QX9HGyEDCyADC/QBAQJ/IAAgACgCICICQQF0EONGIgE2AiQgAUUEQCAAQXwjAEHcDWoQ/jpBfw8LIAAoAiwEQCAAIAI2AhxBAA8LIAAgAhDjRiICNgIoIAJFBEAgARDkRiAAQXwjAEHcDWoQ/jpBfw8LIABBADYClAEgAEIANwKMASAAQewAaiAAKAJIQQhBH0EIIAAoAkwjAEGgtQtqQTgQ4zoEQCAAKAIoEORGIAAoAiQQ5EYgAEF8IwBB3A1qEP46QX8PCyAAQQA2AmwgACAAKAIgIgE2AhwgACgCLEUEQCAAIAE2AnwgACAAKAIoIgE2AnggACABNgIEC0EAC9UBAgF/AX4CfyAAKAJwBEBBfyAAQQAQlTtBf0YNARoLIAFCAFIEQCAAKAIkQQAgAacgACgCHCICIAKtIAFVGyICENA+GiAAIAI2AnAgACAAKAIkNgJsIAAgAq0iAyAAKQMIfDcDCEF/IABBABCVO0F/Rg0BGkEAIAEgA30iAVANARoDQCAAIAAoAiQ2AmwgACABpyAAKAIcIgIgASACrVMbIgI2AnAgACACrSIDIAApAwh8NwMIQX8gAEEAEJU7QX9GDQIaIAEgA30iAUIAUg0ACwtBAAsLyQMBBn8CQCAAKAIcRQRAQX8hBCAAEJM7QX9GDQELIAAoAiwEQEEAIQQgACgCcCICRQ0BIAAoAmwhAwNAIAAoAhQgA0GAgICABCACIAJBgICAgARPGxDgRiIDQQBIBEAgAEF/EPo7KAIAEPZEEP46QX8PCyAAIAAoAnAgA2siAjYCcCAAIAAoAmwgA2oiAzYCbCACDQALDAELIABB7ABqIQUgACgCUARAIAAoAnBFBEBBAA8LIAUQ5ToaIABBADYCUAsgACgCfCEEIAFBBEchBwNAAkAgBARAIAFFDQEgByAGQQFGckUNAQsgACgCeCIDIAAoAgQiAksEQANAIAAoAhQgAkGAgICABCADIAJrIgMgA0GAgICABE4bEOBGIgJBAEgEQCAAQX8Q+jsoAgAQ9kQQ/jpBfw8LIAAgACgCBCACaiICNgIEIAAoAngiAyACSw0ACyAAKAJ8IQQLIAQNACAAIAAoAhwiBDYCfCAAIAAoAigiAjYCeCAAIAI2AgQLIAUgARDuOiIGQX5GBEAgAEF+IwBB0tMAahD+OkF/DwsgBCAAKAJ8IgJHIQMgAiEEIAMNAAtBACEEIAFBBEcNACAAQQE2AlALIAQLYwIBfwF+AkAgA0UNACADKAIQQbHzAUcNACADKAJkDQAgAa0gAq1+IQUCQCABRQ0AIAVCIIhQDQAgA0F+IwBB/b0BahD+OkEADwsgBaciAkUNACADIAAgAhCSOyABbiEECyAEC+kBAQV/IwFBEGsiAyQBQX8hAgJAIABFDQAgACgCEEGx8wFHDQAgACgCZA0AIAAoAmAEQCAAQQA2AmAgACAAKQNYEJQ7QX9GDQELAkAgACgCHCIFRQ0AAn8gACgCcCIEBEAgACgCJCECIAAoAmwMAQsgACAAKAIkIgI2AmwgAgshBiAEIAZqIAJrIgQgBU8NACACIARqIAE6AAAgACAAKAJwQQFqNgJwIAAgACkDCEIBfDcDCCABQf8BcSECDAELIAMgAToAD0F/IAFB/wFxIAAgA0EPakEBEJI7QQFHGyECCyADQRBqJAEgAgtWAQF/QX8hAgJAIABFDQAgACgCEEGx8wFHDQAgACgCZA0AIAEQ/UQiAkEASARAIABBfiMAQb/dAGoQ/jpBfw8LQX8gAiAAIAEgAhCSOyACSRshAgsgAgu7AgEDf0F+IQMCQCAARQ0AIAAoAhBBsfMBRw0AIAAoAmQNAAJAIAAoAhwNACAAEJM7QX9HDQAgACgCZA8LAkAgACgCYEUNACAAQQA2AmAgACAAKQNYEJQ7QX9HDQAgACgCZA8LAkAgACgCcCIEBEAgACgCbCEFDAELIAAgACgCJCIFNgJsC0EAIQMgBCAFaiIEIAAoAhxqQQFrQQA6AAAgBCAAKAIcIAEgAhCVRiICRQ0AIAIgACgCHCIBTw0AIAEgBGpBAWstAAANACAAIAAoAnAgAmoiAzYCcCAAIAApAwggAqx8NwMIIAEgA00EQCAAIAE2AnAgAEEAEJU7QX9GBEAgACgCZA8LIAAoAiQiBCAEIAAoAhxqIAMgAWsiAxDPPhogACADNgJwIAAgACgCJDYCbAsgAiEDCyADCygBAX8jAUEQayIDJAEgAyACNgIMIAAgASACEJk7IQIgA0EQaiQBIAILXAEBf0F+IQICQCAARQ0AIAAoAhBBsfMBRw0AIAFBBEsNACAAKAJkDQACQCAAKAJgBEAgAEEANgJgIAAgACkDWBCUO0F/Rg0BCyAAIAEQlTsaCyAAKAJkIQILIAILqgEBAX9BfiEDAkAgAEUNACAAKAIQQbHzAUcNACAAKAJkDQAgASAAKAJIRgRAQQAhAyAAKAJMIAJGDQELAkAgACgCYEUNACAAQQA2AmAgACAAKQNYEJQ7QX9HDQAgACgCZA8LIAAoAhwEQAJAIAAoAnBFDQAgAEEFEJU7QX9HDQAgACgCZA8LIABB7ABqIAEgAhDtOhoLIAAgAjYCTCAAIAE2AkhBACEDCyADC7cBAQJ/QX4hAQJAIABFDQAgACgCEEGx8wFHDQACf0EAIAAoAmBFDQAaIABBADYCYEEAIAAgACkDWBCUO0F/Rw0AGiAAKAJkCyEBIABBBBCVO0F/RgRAIAAoAmQhAQsgACgCHARAIAAoAixFBEAgAEHsAGoQ5DoaIAAoAigQ5EYLIAAoAiQQ5EYLIABBAEEAEP46IAAoAhgQ5EYgACgCFBCmPSECIAAQ5EZBfyABIAJBf0YbIQELIAELwgEBAX9BeiEFAkAgA0UNACAEQThHDQAgAy0AAEExRw0AQX4hBSABQRBrQXhJDQAgAEUNACACRQ0AIABBADYCGCAAKAIgIgNFBEAgAEEANgIoIAAj0wMiAzYCIAsgACgCJEUEQCAAI9IDNgIkCyAAKAIoQQFB0DcgAxECACIDRQRAQXwPCyAAIAM2AhwgAyACNgI4IANBASABdDYCLCADIAE2AiggA0GAgAI2AhggA0EBNgLENyADQgA3AjBBACEFCyAFC9IlARh/IwFBEGsiCyQBQX4hEgJAIABFDQAgACgCHCIGRQ0AIABBADYCGCAGQQA2AjAgBkK//gA3AgQgCyAAKAIAIgc2AgwgBwRAIAAoAgQhCQsgBkHcAGohGyAGQfQFaiEWIAZB9ABqIRMgBkHYAGohGSAGQfAAaiEXIAZBtApqIRUgBigCLCEOIAYoAjghD0EBIRpBv/4AIQVBACEHAkADQAJAQQEhCAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBUG//gBrDhMBEAIQEAAQEBAHEBAQEBAQEAgFEAsgB0EOTw0DIAlFBEAgAiALQQxqIAERAAAiCUUNDgsgCyALKAIMIgVBAWo2AgwgB0EIaiEIIAlBAWshCSAFLQAAIAd0IApqIQogB0EFTQ0CIAghBwwDCwJ/AkAgBigCCEUEQCAHQQNJDQEgBwwCCyAGQdD+ADYCBCAKIAdBB3F2IQogB0F4cSEHIAYoAgQhBQwPCyAJRQRAIAIgC0EMaiABEQAAIglFDQ4LIAsgCygCDCIIQQFqNgIMIAlBAWshCSAILQAAIAd0IApqIQogB0EIagshBSAGIApBAXE2AghBwf4AIQcCQAJAAkACQCAKQQF2QQNxQQFrDgMAAQIDCyAGQomAgIDQADcCWCAGIwAiB0GQipIBajYCUCAGIAdBkJqSAWo2AlRByP4AIQcMAgtBxP4AIQcMAQsgACMAQd6CB2o2AhhB0f4AIQcLIAYgBzYCBCAFQQNrIQcgCkEDdiEKIAYoAgQhBQwNCyAKIAdBB3F2IQoCQCAHQXhxIgdBH0sNACAJRQRAIAIgC0EMaiABEQAAIglFDQ0LIAsgCygCDCIFQQFqNgIMIAdBCGohCCAJQQFrIQkgBS0AACAHdCAKaiEKIAdBF0sEQCAIIQcMAQsgCUUEQCACIAtBDGogAREAACIJRQ0NCyALIAsoAgwiBUEBajYCDCAHQRBqIQwgCUEBayEJIAUtAAAgCHQgCmohCiAHQQ9LBEAgDCEHDAELIAlFBEAgAiALQQxqIAERAAAiCUUNDQsgCyALKAIMIgVBAWo2AgwgB0EYaiEIIAlBAWshCSAFLQAAIAx0IApqIQogBwRAIAghBwwBCyAJRQRAIAIgC0EMaiABEQAAIglFDQ0LIAsgCygCDCIFQQFqNgIMIAdBIGohByAJQQFrIQkgBS0AACAIdCAKaiEKCyAKQf//A3EiBSAKQX9zQRB2RwRAIAAjAEHNlgJqNgIYIAZB0f4ANgIEIAYoAgQhBQwNCyAGIAU2AkQgBQRAA0AgCUUEQCACIAtBDGogAREAACIJRQ0OCwJAIA4NACAGIAYoAiwiDjYCMCAEIAYoAjgiDyAOIAMRAgBFDQBBeyESDBALIA8gCygCDCAFIAkgBSAJSRsiByAOIAcgDkkbIgcQzj4hCiALIAsoAgwgB2o2AgwgBiAGKAJEIAdrIgU2AkQgByAKaiEPIA4gB2shDiAJIAdrIQkgBQ0ACwsgBkG//gA2AgRBACEKQQAhByAGKAIEIQUMDAsgCUUEQCACIAtBDGogAREAACIJRQ0LCyALIAsoAgwiBUEBajYCDCAHQRBqIQcgCUEBayEJIAUtAAAgCHQgCmohCgsgBiAKQR9xIgVBgQJqNgJkIAYgCkEFdkEfcSIIQQFqNgJoIAYgCkEKdkEPcUEEaiINNgJgIAdBDmshByAKQQ52IQogCEEeSSAFQR1NcUUEQCAAIwBBt4wCajYCGCAGQdH+ADYCBCAGKAIEIQUMCwtBACEFIAZBADYCbANAIAYCfyAHQQJLBEAgByEMIAUMAQsgCUUEQCACIAtBDGogAREAACIJRQ0MIAYoAmAhDSAGKAJsIQULIAsgCygCDCIIQQFqNgIMIAdBCGohDCAJQQFrIQkgCC0AACAHdCAKaiEKIAULIghBAWoiBTYCbCAGIwBB4ImSAWogCEEBdGovAQBBAXRqIApBB3E7AXQgDEEDayEHIApBA3YhCiAFIA1JDQALDAELQX0hEgwKCyAFQRJNBEBBACEMQQIgCGtBA3EiDQRAA0AgBiMAQeCJkgFqIAVBAXRqLwEAQQF0akEAOwF0IAVBAWohBSAMQQFqIgwgDUcNAAsLIAhBD2tBA08EQANAIBMjAEHgiZIBaiAFQQF0aiIILwEAQQF0akEAOwEAIBMgCC8BAkEBdGpBADsBACATIAgvAQRBAXRqQQA7AQAgEyAILwEGQQF0akEAOwEAIAVBBGoiBUETRw0ACwsgBkETNgJsCyAGQQc2AlggBiAVNgJQIAYgFTYCcEEAIBNBEyAXIBkgFhC1OwRAIAAjAEH2igFqNgIYIAZB0f4ANgIEIAYoAgQhBQwJCyAGQQA2AmwgBigCaEEAIAYoAmQiFGtHBEADQCAGKAJQIgggCkF/IAYoAlgiDHRBf3NxQQJ0aiIFLQABIg0gB0sEQANAIAlFBEAgAiALQQxqIAERAAAiCUUNDCAGKAJYIQwgBigCUCEICyALIAsoAgwiBUEBajYCDCAFLQAAIAd0IQUgCUEBayEJIAdBCGoiByAIIAUgCmoiCkF/IAx0QX9zcUECdGoiBS0AASINSQ0ACwsCQCAFLwECIghBD00EQCAGIAYoAmwiDEEBaiIFNgJsIAYgDEEBdGogCDsBdCAHIA1rIQcgCiANdiEKIAYoAmQiFCAGKAJoaiERDAELAn8CfwJAAkACQCAIQRBrDgIAAQILIA1BAmoiCCAHSwRAA0AgCUUEQCACIAtBDGogAREAACIJRQ0RCyALIAsoAgwiBUEBajYCDCAJQQFrIQkgBS0AACAHdCAKaiEKIAdBCGoiByAISQ0ACwsgByANayEHIAogDXYhBSAGKAJsIghFBEAgACMAQfS6AWo2AhggBkHR/gA2AgQgBSEKIAYoAgQhBQwQCyAHQQJrIQcgBUECdiEKIAVBA3FBA2ohDCAIQQF0IAZqLwFyDAMLIA1BA2oiCCAHSwRAA0AgCUUEQCACIAtBDGogAREAACIJRQ0QCyALIAsoAgwiBUEBajYCDCAJQQFrIQkgBS0AACAHdCAKaiEKIAdBCGoiByAISQ0ACwsgCiANdiIFQQN2IQogBUEHcUEDaiEMIAcgDWtBA2sMAQsgDUEHaiIIIAdLBEADQCAJRQRAIAIgC0EMaiABEQAAIglFDQ8LIAsgCygCDCIFQQFqNgIMIAlBAWshCSAFLQAAIAd0IApqIQogB0EIaiIHIAhJDQALCyAKIA12IgVBB3YhCiAFQf8AcUELaiEMIAcgDWtBB2sLIQdBAAshCCAGKAJkIhQgBigCaGoiESAGKAJsIgUgDGpJDQkgDEEBayEcQQAhDSAMQQNxIhAEQANAIAYgBUEBdGogCDsBdCAFQQFqIQUgDEEBayEMIA1BAWoiDSAQRw0ACwsgHEEDTwRAA0AgBiAFQQF0aiINIAg7AXYgDSAIOwF0IA0gCDsBeCANIAg7AXogBUEEaiEFIAxBBGsiDA0ACwsgBiAFNgJsCyAFIBFJDQALCyAGKAIEQdH+AEYNBSAGLwH0BEUEQCAAIwBBsNIFajYCGCAGQdH+ADYCBCAGKAIEIQUMCQsgBkEJNgJYIAYgFTYCUCAGIBU2AnBBASATIBQgFyAZIBYQtTsEQCAAIwBB2ooBajYCGCAGQdH+ADYCBCAGKAIEIQUMCQsgBkEGNgJcIAYgBigCcDYCVEECIBMgBigCZEEBdGogBigCaCAXIBsgFhC1OwRAIAAjAEGoiwFqNgIYIAZB0f4ANgIEIAYoAgQhBQwJCyAGQcj+ADYCBAsCQAJAIA5BgQJLIAlBBk9xRQRAIAYoAlAiCCAKQX8gBigCWCIMdEF/c3FBAnRqIg0tAAEiBSAHSwRAA0AgCUUEQCACIAtBDGogAREAACIJRQ0MIAYoAlghDCAGKAJQIQgLIAsgCygCDCIFQQFqNgIMIAUtAAAgB3QhBSAJQQFrIQkgB0EIaiIHIAggBSAKaiIKQX8gDHRBf3NxQQJ0aiINLQABIgVJDQALCyANLwECIRAgDS0AACIMQQFrQf8BcUEOTQ0BIAUhDQwCCyAAIA42AhAgACAPNgIMIAsoAgwhDyAAIAk2AgQgACAPNgIAIAYgBzYCQCAGIAo2AjwgBigCLCIJIAYoAjBLBEAgBiAJIA5rNgIwCyAAIAkQoTsgACgCECEOIAAoAgwhDyALIAAoAgA2AgwgBigCQCEHIAYoAjwhCiAAKAIEIQkgBigCBCEFDAkLIAcgBSAIIApBfyAFIAxqdEF/cyIUcSAFdiAQakECdGoiES0AASINakkEfwNAIAlFBEAgAiALQQxqIAERAAAiCUUNCiAGKAJQIQgLIAsgCygCDCIMQQFqNgIMIAwtAAAgB3QhDSAJQQFrIQkgB0EIaiIMIQcgBSAIIAogDWoiCiAUcSAFdiAQakECdGoiES0AASINaiAMSw0ACyAMBSAHCyAFayEHIAogBXYhCiARLQAAIQwgES8BAiEQCyAGIBBB//8DcSIQNgJEIAcgDWshByAKIA12IQogDEH/AXEiBQ0DIA4NAiAGIAYoAiwiDjYCMCAEIAYoAjgiDyAOIAMRAgBFDQFBeyEIQQAhGgsgGiEYIAghEgwHCyAGKAJEIRALIA8gEDoAACAGQcj+ADYCBCAOQQFrIQ4gD0EBaiEPIAYoAgQhBQwECyAFQSBxBEAgBkG//gA2AgQgBigCBCEFDAQLIAVBwABxBEAgACMAQYuJCGo2AhggBkHR/gA2AgQgBigCBCEFDAQLIAYgBUEPcSIINgJMIAgEQCAHIAhJBEADQCAJRQRAIAIgC0EMaiABEQAAIglFDQYgBigCTCEICyALIAsoAgwiBUEBajYCDCAJQQFrIQkgBS0AACAHdCAKaiEKIAdBCGoiByAISQ0ACyAGKAJEIRALIAYgECAKQX8gCHRBf3NxajYCRCAKIAh2IQogByAIayEHCyAGKAJUIgggCkF/IAYoAlwiDHRBf3NxQQJ0aiINLQABIgUgB0sEQANAIAlFBEAgAiALQQxqIAERAAAiCUUNBSAGKAJcIQwgBigCVCEICyALIAsoAgwiBUEBajYCDCAFLQAAIAd0IQUgCUEBayEJIAdBCGoiByAIIAUgCmoiCkF/IAx0QX9zcUECdGoiDS0AASIFSQ0ACwsgDS8BAiEQAkAgDS0AACIMQQ9LBEAgBSENDAELIAcgBSAIIApBfyAFIAxqdEF/cyIUcSAFdiAQakECdGoiES0AASINakkEfwNAIAlFBEAgAiALQQxqIAERAAAiCUUNBiAGKAJUIQgLIAsgCygCDCIMQQFqNgIMIAwtAAAgB3QhDSAJQQFrIQkgB0EIaiIMIQcgBSAIIAogDWoiCiAUcSAFdiAQakECdGoiES0AASINaiAMSw0ACyAMBSAHCyAFayEHIAogBXYhCiARLQAAIQwgES8BAiEQCyAHIA1rIQcgCiANdiEKIAxBwABxBEAgACMAQfKJCGo2AhggBkHR/gA2AgQgBigCBCEFDAQLIAYgDEEPcSIINgJMIAYgEEH//wNxIgU2AkggCARAIAcgCEkEQANAIAlFBEAgAiALQQxqIAERAAAiCUUNBiAGKAJMIQgLIAsgCygCDCIFQQFqNgIMIAlBAWshCSAFLQAAIAd0IApqIQogB0EIaiIHIAhJDQALIAYoAkghBQsgBiAFIApBfyAIdEF/c3FqIgU2AkggCiAIdiEKIAcgCGshBwsgBigCLCIIIA5BACAGKAIwIAhJG2sgBUkEQCAAIwBB1dwFajYCGCAGQdH+ADYCBCAGKAIEIQUMBAsDQAJAIA4NACAGIAYoAiwiDjYCMCAEIAYoAjgiDyAOIAMRAgBFDQBBeyESDAYLQQAhDCAGIAYoAkQiBSAOIAYoAiwgBigCSCINayIIQQAgCCAOSSIRG2siECAFIAUgEEsbIhBrNgJEIA8gCEEAIA1rIBEbaiEFIBBBAWshESAQIghBB3EiDQRAA0AgDyAFLQAAOgAAIAhBAWshCCAPQQFqIQ8gBUEBaiEFIAxBAWoiDCANRw0ACwsgEUEHTwRAA0AgDyAFLQAAOgAAIA8gBS0AAToAASAPIAUtAAI6AAIgDyAFLQADOgADIA8gBS0ABDoABCAPIAUtAAU6AAUgDyAFLQAGOgAGIA8gBS0ABzoAByAPQQhqIQ8gBUEIaiEFIAhBCGsiCA0ACwsgDiAQayEOIAYoAkQNAAsLIAYoAgQhBQwCCyAAIwBB9LoBajYCGCAGQdH+ADYCBCAGKAIEIQUMAQsLQQAhCSALQQA2AgxBeyESCyAOIAYoAiwiB0kEQEF7IBIgBCAGKAI4IAcgDmsgAxECABsgEiAYGyESCyALKAIMIQcgACAJNgIEIAAgBzYCAAsgC0EQaiQBIBILPQEDf0F+IQECQCAARQ0AIAAoAhwiAkUNACAAKAIkIgNFDQAgACgCKCACIAMRBQBBACEBIABBADYCHAsgAQvNEQEbfyAAKAIQIgIgACgCDCIDaiIFIAFBf3NqIRAgBSAAKAIcIgkoAjQiC0F/c2ogAWshFiALQQdxIREgCyAJKAIsIhdqIRggBUGBAmshEiADIAIgAWtqIRkgACgCACIKIAAoAgRqQQVrIRNBfyAJKAJcdEF/cyEaQX8gCSgCWHRBf3MhGyAJKAJUIRQgCSgCUCEVIAkoAkAhBSAJKAI8IQEgCSgCOCEOIAkoAjAhHANAIAVBDk0EQCAKLQAAIAV0IAFqIAotAAEgBUEIanRqIQEgBUEQaiEFIApBAmohCgsgBSAVIAEgG3FBAnRqIgItAAEiBGshBSABIAR2IQECQAJAAkACQAJAIAkCfyAAAn8CQANAIAItAAAiBEUEQCADIAItAAI6AAAgA0EBaiEDDAgLIARBEHEEQCACLwECIQcCfyAEQQ9xIgJFBEAgCiEGIAEMAQsCfyACIAVNBEAgCiEGIAUMAQsgCkEBaiEGIAotAAAgBXQgAWohASAFQQhqCyACayEFIAFBfyACdEF/c3EgB2ohByABIAJ2CyEEIAVBDk0EQCAGLQAAIAV0IARqIAYtAAEgBUEIanRqIQQgBUEQaiEFIAZBAmohBgsgBSAUIAQgGnFBAnRqIgItAAEiAWshBSAEIAF2IQEgAi0AACIEQRBxDQIDQAJAIwAhCCAEQcAAcQ0AIAUgFCACLwECQQJ0aiABQX8gBHRBf3NxQQJ0aiICLQABIgRrIQUgASAEdiEBIAItAAAiBEEQcUUNAQwECwsgBiEKIAhB8okIagwDCyAEQf8BcSIHQcAAcUUEQCAFIBUgAi8BAkECdGogAUF/IAd0QX9zcUECdGoiAi0AASIEayEFIAEgBHYhAQwBCwsjACEHQb/+ACAEQSBxDQIaIAdBi4kIagwBCyACLwECIQgCfyAEQQ9xIgIgBU0EQCAFIQQgBgwBCyAGLQAAIAV0IAFqIQEgBkEBaiACIAVBCGoiBE0NABogBi0AASAEdCABaiEBIAVBEGohBCAGQQJqCyEKIAFBfyACdEF/c3EhDCAEIAJrIQUgASACdiEBIAggDGoiDyADIBlrIgJNDQMgDyACayIGIBxNDQIjACECIAkoAsQ3RQ0CIAJB1dwFags2AhhB0f4ACzYCBAwECwJ/AkAgC0UEQCAOIBcgBmtqIgIgBiAHTw0CGiAMIBBqIAhqIANrIQ1BACEIIAYiBEEHcSIMBEADQCADIAItAAA6AAAgBEEBayEEIANBAWohAyACQQFqIQIgCEEBaiIIIAxHDQALCyANQQdJDQEDQCADIAItAAA6AAAgAyACLQABOgABIAMgAi0AAjoAAiADIAItAAM6AAMgAyACLQAEOgAEIAMgAi0ABToABSADIAItAAY6AAYgAyACLQAHOgAHIANBCGohAyACQQhqIQIgBEEIayIEDQALDAELIAYgC0sEQCAOIBggBmtqIgIgByAGIAtrIg1NDQIaIAwgFmogCGogA2shDEEAIQggDSIEQQdxIgYEQANAIAMgAi0AADoAACAEQQFrIQQgA0EBaiEDIAJBAWohAiAIQQFqIgggBkcNAAsLIAxBB08EQANAIAMgAi0AADoAACADIAItAAE6AAEgAyACLQACOgACIAMgAi0AAzoAAyADIAItAAQ6AAQgAyACLQAFOgAFIAMgAi0ABjoABiADIAItAAc6AAcgA0EIaiEDIAJBCGohAiAEQQhrIgQNAAsLIA4gCyAHIA1rIgdPDQIaQQAhCCALIQQgDiECIBEEQANAIAMgAi0AADoAACAEQQFrIQQgA0EBaiEDIAJBAWohAiAIQQFqIgggEUcNAAsLIAtBCE8EQANAIAMgAi0AADoAACADIAItAAE6AAEgAyACLQACOgACIAMgAi0AAzoAAyADIAItAAQ6AAQgAyACLQAFOgAFIAMgAi0ABjoABiADIAItAAc6AAcgA0EIaiEDIAJBCGohAiAEQQhrIgQNAAsLIAcgC2shByADIA9rDAILIA4gCyAGa2oiAiAGIAdPDQEaIAwgEGogCGogA2shDUEAIQggBiIEQQdxIgwEQANAIAMgAi0AADoAACAEQQFrIQQgA0EBaiEDIAJBAWohAiAIQQFqIgggDEcNAAsLIA1BB0kNAANAIAMgAi0AADoAACADIAItAAE6AAEgAyACLQACOgACIAMgAi0AAzoAAyADIAItAAQ6AAQgAyACLQAFOgAFIAMgAi0ABjoABiADIAItAAc6AAcgA0EIaiEDIAJBCGohAiAEQQhrIgQNAAsLIAcgBmshByADIA9rCyECAkAgB0EDSQ0AQQAhBCAHQQNrIgZBA25BAWpBA3EiCARAA0AgAyACLQAAOgAAIAMgAi0AAToAASADIAItAAI6AAIgB0EDayEHIANBA2ohAyACQQNqIQIgBEEBaiIEIAhHDQALCyAGQQlJDQADQCADIAItAAA6AAAgAyACLQABOgABIAMgAi0AAjoAAiADIAItAAM6AAMgAyACLQAEOgAEIAMgAi0ABToABSADIAItAAY6AAYgAyACLQAHOgAHIAMgAi0ACDoACCADIAItAAk6AAkgAyACLQAKOgAKIAMgAi0ACzoACyADQQxqIQMgAkEMaiECIAdBDGsiB0ECSw0ACwsgB0UNAiADIAItAAA6AAAgB0EBRw0BIANBAWohAwwCCyADIA9rIQgDQCADIgIgCCIELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgAkEDaiEDIARBA2ohCCAHQQNrIgdBAksNAAsgB0UNASACIAgtAAA6AAMgB0EBRgRAIAJBBGohAwwCCyACIAQtAAQ6AAQgAkEFaiEDDAELIAMgAi0AAToAASADQQJqIQMLIAogE08NACADIBJJDQELCyAAIAM2AgwgACAKIAVBA3ZrIgI2AgAgACASIANrQYECajYCECAAIBMgAmtBBWo2AgQgCSAFQQdxIgM2AkAgCSABQX8gA3RBf3NxNgI8C8QBAQN/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiAUUNACABKAIAIABHDQAgASgCBEG0/gBrQR9LDQBBACECIAFBADYCICAAQQA2AgggAEIANwIUIAEoAgwiAwRAIAAgA0EBcTYCMAsgAUIANwI8IAFBADYCJCABQYCAAjYCGCABQoCAgIBwNwIQIAFCtP4ANwIEIAFCgYCAgHA3AsQ3IAEgAUG0CmoiADYCcCABIAA2AlQgASAANgJQCyACC9IBAQN/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiAUUNACABKAIAIABHDQAgASgCBEG0/gBrQR9LDQBBACECIAFBADYCNCABQgA3AiwgAUEANgIgIABBADYCCCAAQgA3AhQgASgCDCIDBEAgACADQQFxNgIwCyABQgA3AjwgAUEANgIkIAFBgIACNgIYIAFCgICAgHA3AhAgAUK0/gA3AgQgAUKBgICAcDcCxDcgASABQbQKaiIANgJwIAEgADYCVCABIAA2AlALIAILlQMBBX9BfiEFAkAgAEUNACAAKAIgRQ0AIAAoAiQiBkUNACAAKAIcIgJFDQAgAigCACAARw0AIAIoAgRBtP4Aa0EfSw0AAn8gAUEASARAIAFBcUkNAkEAIAFrDAELIAFBBHZBBWohBCABQQ9xIAEgAUEwSRsLIgNBCGtBCE9BACADGw0AAkACQCACKAI4IgEEQCACKAIoIANHDQELIAIgAzYCKCACIAQ2AgwMAQsgACgCKCABIAYRBQAgAkEANgI4IAAoAiAhASACIAM2AiggAiAENgIMIAFFDQELIAAoAiRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNACABKAIEQbT+AGtBH0sNAEEAIQUgAUEANgI0IAFCADcCLCABQQA2AiAgAEEANgIIIABCADcCFCABKAIMIgIEQCAAIAJBAXE2AjALIAFCADcCPCABQQA2AiQgAUGAgAI2AhggAUKAgICAcDcCECABQrT+ADcCBCABQoGAgIBwNwLENyABIAFBtApqIgA2AnAgASAANgJUIAEgADYCUAsgBQvAAQEBf0F6IQQCQCACRQ0AIANBOEcNACACLQAAQTFHDQAgAEUEQEF+DwsgAEEANgIYIAAoAiAiAkUEQCAAQQA2AiggACPTAyICNgIgCyAAKAIkRQRAIAAj0gM2AiQLIAAoAihBAUHQNyACEQIAIgJFBEBBfA8LIAAgAjYCHEEAIQQgAkEANgI4IAIgADYCACACQbT+ADYCBCAAIAEQpDsiA0UNACAAKAIoIAIgACgCJBEFACAAQQA2AhwgAyEECyAEC8ABAQF/QXohAwJAIAFFDQAgAkE4Rw0AIAEtAABBMUcNACAARQRAQX4PCyAAQQA2AhggACgCICIBRQRAIABBADYCKCAAI9MDIgE2AiALIAAoAiRFBEAgACPSAzYCJAsgACgCKEEBQdA3IAERAgAiAUUEQEF8DwsgACABNgIcQQAhAyABQQA2AjggASAANgIAIAFBtP4ANgIEIABBDxCkOyICRQ0AIAAoAiggASAAKAIkEQUAIABBADYCHCACIQMLIAMLlQEBA39BfiEEAkAgAEUNACAAKAIgRQ0AIAAoAiRFDQAgACgCHCIDRQ0AIAMoAgAgAEcNACADKAIEQbT+AGtBH0sNAAJAIAFBAEgEQCADQgA3AjwMAQsgAUEQSw0BIAMoAkAiACABaiIFQSBLDQEgAyAFNgJAIAMgAygCPEF/IAF0QX9zIAJxIAB0ajYCPAtBACEECyAEC+VJASB/IwFBEGsiFCQBQX4hFwJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiBkUNACAGKAIAIABHDQAgBigCBCICQbT+AGtBH0sNACAAKAIMIg1FDQAgACgCACIFRQRAIAAoAgQNAQsgBkEEaiELIAJBv/4ARgRAIAtBwP4ANgIAQcD+ACECCyABQQVrIR8gBkHcAGohICAGQfQFaiEaIAZB9ABqIRsgBkHYAGohHSAGQfAAaiEcIAZBtApqIRkgBkEcaiESIAYoAkAhBCAAKAIEIh4hCCAGKAI8IQcgACgCECIPIRUCQAJAAkACQAJAA0BBfSEDQQEhCQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAkG0/gBrDh8HBgoNEDw9Pj8FFRYXGBkaBB0CJicBKQArHh8DQkhJSgsgBigCTCEMIAUhAyAIIQIMKQsgBigCTCEJDCYLIAYoAmwhAgwiCyAGKAIMIQIMPwsgBEEOTw0XIAhFDUAgBEEIaiECIAVBAWohCSAIQQFrIQMgBS0AACAEdCAHaiEHIARBBU0NFiAJIQUgAyEIIAIhBAwXCyAEQSBPDQ4gCEUNPyAFQQFqIQMgCEEBayECIAUtAAAgBHQgB2ohByAEQRdNDQ0gAyEFIAIhCAwOCyAEQRBPDQIgCEUNPiAEQQhqIQIgBUEBaiEJIAhBAWshAyAFLQAAIAR0IAdqIQcgBEEHTQ0BIAkhBSADIQggAiEEDAILIAYoAgwiAkUNGAJAIARBEE8NACAIRQ0+IARBCGohAyAFQQFqIQogCEEBayEJIAUtAAAgBHQgB2ohByAEQQdLBEAgCiEFIAkhCCADIQQMAQsgCUUEQCAKIQVBACEIIAMhBCAOIQMMQgsgBEEQaiEEIAhBAmshCCAFLQABIAN0IAdqIQcgBUECaiEFCwJAIAJBAnFFDQAgB0GflgJHDQAgBigCKEUEQCAGQQ82AigLQQAhByASQQBBAEEAEN46IgI2AgAgFEGflgI7AAwgEiACIBRBDGpBAhDeOjYCACALQbX+ADYCAEEAIQQgCygCACECDD0LIAYoAiQiAwRAIANBfzYCMAsCQCACQQFxBEAgB0EIdEGA/gNxIAdBCHZqQR9wRQ0BCyAAIwBB4tcFajYCGCALQdH+ADYCACALKAIAIQIMPQsgB0EPcUEIRwRAIAAjAEGxqghqNgIYIAtB0f4ANgIAIAsoAgAhAgw9CyAHQQR2IgpBD3EiAkEIaiEDIAJBB00gBigCKCIJBH8gCQUgBiADNgIoIAMLIANPcUUEQCAEQQRrIQQgACMAQea1Bmo2AhggC0HR/gA2AgAgCiEHIAsoAgAhAgw9C0EAIQQgBkEANgIUIAZBgAIgAnQ2AhggBkEAQQBBABDXOiICNgIcIAAgAjYCMCAGQb3+AEG//gAgB0GAwABxGzYCBEEAIQcgCygCACECDDwLIANFBEAgCSEFQQAhCCACIQQgDiEDDEALIARBEGohBCAIQQJrIQggBS0AASACdCAHaiEHIAVBAmohBQsgBiAHNgIUIAdB/wFxQQhHBEAgACMAQbGqCGo2AhggC0HR/gA2AgAgCygCACECDDsLIAdBgMADcQRAIAAjAEGPiwFqNgIYIAtB0f4ANgIAIAsoAgAhAgw7CyAGKAIkIgIEQCACIAdBCHZBAXE2AgALAkAgB0GABHFFDQAgBi0ADEEEcUUNACAUIAc7AAwgEiASKAIAIBRBDGpBAhDeOjYCAAsgC0G2/gA2AgBBACEEQQAhBwwBCyAEQR9LDQELIAhFDTkgBUEBaiEDIAhBAWshAiAFLQAAIAR0IAdqIQcgBEEXSwRAIAMhBSACIQgMAQsgBEEIaiEJIAJFBEAgAyEFQQAhCCAJIQQgDiEDDD0LIAVBAmohAyAIQQJrIQIgBS0AASAJdCAHaiEHIARBD0sEQCADIQUgAiEIDAELIARBEGohCSACRQRAIAMhBUEAIQggCSEEIA4hAww9CyAFQQNqIQMgCEEDayECIAUtAAIgCXQgB2ohByAEQQdLBEAgAyEFIAIhCAwBCyAEQRhqIQQgAkUEQCADIQVBACEIIA4hAww9CyAIQQRrIQggBS0AAyAEdCAHaiEHIAVBBGohBQsgBigCJCICBEAgAiAHNgIECwJAIAYtABVBAnFFDQAgBi0ADEEEcUUNACAUIAc2AAwgEiASKAIAIBRBDGpBBBDeOjYCAAsgC0G3/gA2AgBBACEEQQAhBwwBCyAEQQ9LDQELIAhFDTYgBUEBaiEDIAhBAWshAiAFLQAAIAR0IAdqIQcgBEEHSwRAIAMhBSACIQgMAQsgBEEIaiEEIAJFBEAgAyEFQQAhCCAOIQMMOgsgCEECayEIIAUtAAEgBHQgB2ohByAFQQJqIQULIAYoAiQiAgRAIAIgB0EIdjYCDCACIAdB/wFxNgIICwJAIAYtABVBAnFFDQAgBi0ADEEEcUUNACAUIAc7AAwgEiASKAIAIBRBDGpBAhDeOjYCAAsgBkG4/gA2AgRBACECQQAhBEEAIQcgBigCFCIDQYAIcQ0BDCoLIAYoAhQiA0GACHFFBEAgBCECDCoLIAchAiAEQQ9LDQELIAhFBEBBACEIIAIhByAOIQMMNwsgBUEBaiEKIAhBAWshCSAFLQAAIAR0IAJqIQcgBEEHSwRAIAohBSAJIQgMAQsgBEEIaiECIAlFBEAgCiEFQQAhCCACIQQgDiEDDDcLIAhBAmshCCAFLQABIAJ0IAdqIQcgBUECaiEFCyAGIAc2AkQgBigCJCICBEAgAiAHNgIUC0EAIQQCQCADQYAEcUUNACAGLQAMQQRxRQ0AIBQgBzsADCASIBIoAgAgFEEMakECEN46NgIAC0EAIQcMKAsgBEEIaiEJIAJFBEAgAyEFQQAhCCAJIQQgDiEDDDULIAVBAmohAyAIQQJrIQIgBS0AASAJdCAHaiEHIARBD0sEQCADIQUgAiEIDAELIARBEGohCSACRQRAIAMhBUEAIQggCSEEIA4hAww1CyAFQQNqIQMgCEEDayECIAUtAAIgCXQgB2ohByAEQQdLBEAgAyEFIAIhCAwBCyAEQRhqIQQgAkUEQCADIQVBACEIIA4hAww1CyAIQQRrIQggBS0AAyAEdCAHaiEHIAVBBGohBQsgEiAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZyciICNgIAIAAgAjYCMCALQb7+ADYCAEEAIQdBACEECyAGKAIQRQRAIAAgDzYCECAAIA02AgwgACAINgIEIAAgBTYCACAGIAQ2AkAgBiAHNgI8QQIhFww1CyASQQBBAEEAENc6IgI2AgAgACACNgIwIAtBv/4ANgIACyAfQQJJDSoLAn8CQCAGKAIIRQRAIARBA0kNASAEDAILIAtBzv4ANgIAIAcgBEEHcXYhByAEQXhxIQQgCygCACECDC4LIAhFDS4gCEEBayEIIAUtAAAgBHQgB2ohByAFQQFqIQUgBEEIagshAyAGIAdBAXE2AghBwf4AIQICQAJAAkACQAJAIAdBAXZBA3FBAWsOAwABAgMLIAZCiYCAgNAANwJYIAZBx/4ANgIEIAYjACICQcCbkgFqNgJQIAYgAkHAq5IBajYCVCABQQZHDQMgA0EDayEEIAdBA3YhByAOIQMMNAtBxP4AIQIMAQsgACMAQd6CB2o2AhhB0f4AIQILIAsgAjYCAAsgA0EDayEEIAdBA3YhByALKAIAIQIMLAsgByAEQQdxdiEHAkAgBEF4cSIEQR9LDQAgCEUNLSAEQQhqIQIgBUEBaiEJIAhBAWshAyAFLQAAIAR0IAdqIQcgBEEXSwRAIAkhBSADIQggAiEEDAELIANFBEAgCSEFQQAhCCACIQQgDiEDDDELIARBEGohAyAFQQJqIQogCEECayEJIAUtAAEgAnQgB2ohByAEQQ9LBEAgCiEFIAkhCCADIQQMAQsgCUUEQCAKIQVBACEIIAMhBCAOIQMMMQsgBEEYaiEJIAVBA2ohCiAIQQNrIQIgBS0AAiADdCAHaiEHIAQEQCAKIQUgAiEIIAkhBAwBCyACRQRAIAohBUEAIQggCSEEIA4hAwwxCyAEQSBqIQQgCEEEayEIIAUtAAMgCXQgB2ohByAFQQRqIQULIAdB//8DcSICIAdBf3NBEHZHBEAgACMAQc2WAmo2AhggC0HR/gA2AgAgCygCACECDCwLIAZBwv4ANgIEIAYgAjYCREEAIQdBACEEIAFBBkcNAAwoCyALQcP+ADYCAAsgBigCRCICBEAgAiAIIAIgCEkbIgIgDyACIA9JGyICRQ0nIA0gBSACEM4+IQ0gBiAGKAJEIAJrNgJEIAIgDWohDSAPIAJrIQ8gAiAFaiEFIAggAmshCCALKAIAIQIMKgsgC0G//gA2AgAgCygCACECDCkLIANFBEAgCSEFQQAhCCACIQQgDiEDDC0LIARBEGohBCAIQQJrIQggBS0AASACdCAHaiEHIAVBAmohBQsgBiAHQR9xIgJBgQJqNgJkIAYgB0EFdkEfcSIDQQFqNgJoIAYgB0EKdkEPcUEEaiIKNgJgIARBDmshBCAHQQ52IQcgA0EeSSACQR1NcUUEQCAAIwBBt4wCajYCGCALQdH+ADYCACALKAIAIQIMKAsgBkHF/gA2AgRBACECIAZBADYCbAwGCyAGKAJsIgIgBigCYCIKSQ0FDAYLIA9FDQ0gDSAGKAJEOgAAIAZByP4ANgIEIA9BAWshDyANQQFqIQ0gCygCACECDCULIAYoAgwiAkUEQEEAIQIMAwsCQCAEQR9LBEAgBSEJDAELIAhFDSYgBEEIaiEDIAVBAWohCSAIQQFrIQogBS0AACAEdCAHaiEHIARBF0sEQCAKIQggAyEEDAELIApFBEAgCSEFQQAhCCADIQQgDiEDDCoLIARBEGohCiAFQQJqIQkgCEECayEMIAUtAAEgA3QgB2ohByAEQQ9LBEAgDCEIIAohBAwBCyAMRQRAIAkhBUEAIQggCiEEIA4hAwwqCyAEQRhqIQwgBUEDaiEJIAhBA2shAyAFLQACIAp0IAdqIQcgBEEHSwRAIAMhCCAMIQQMAQsgA0UEQCAJIQVBACEIIAwhBCAOIQMMKgsgBEEgaiEEIAVBBGohCSAIQQRrIQggBS0AAyAMdCAHaiEHCyAAIBUgD2siBSAAKAIUajYCFCAGIAYoAiAgBWo2AiACQCACQQRxIgNFDQAgDyAVRg0AIA0gBWshAiAGKAIcIQMgBgJ/IAYoAhQEQCADIAIgBRDeOgwBCyADIAIgBRDXOgsiAjYCHCAAIAI2AjAgBigCDCICQQRxIQMLIANFDQEgBigCHCAHIAdBGHQgB0GA/gNxQQh0ciAHQQh2QYD+A3EgB0EYdnJyIAYoAhQbRg0BIAAjAEGQ2AVqNgIYIAtB0f4ANgIAIAkhBSAPIRUgCygCACECDCQLIAtBwP4ANgIADBcLIAkhBUEAIQdBACEEIA8hFQsgC0HP/gA2AgAMIAsDQCAEQQJLBH8gBAUgCEUNIyAIQQFrIQggBS0AACAEdCAHaiEHIAVBAWohBSAEQQhqCyEJIAYgAkEBaiIDNgJsIAYjAEGQm5IBaiACQQF0ai8BAEEBdGogB0EHcTsBdCAJQQNrIQQgB0EDdiEHIAogAyICRw0ACyAKIQILIAJBEk0EQCACIQNBACEJQQMgAmtBA3EiCgRAA0AgBiMAQZCbkgFqIANBAXRqLwEAQQF0akEAOwF0IANBAWohAyAJQQFqIgkgCkcNAAsLIAJBEGtBA08EQANAIAZB9ABqIgIjAEGQm5IBaiADQQF0aiIJLwEAQQF0akEAOwEAIAIgCS8BAkEBdGpBADsBACACIAkvAQRBAXRqQQA7AQAgAiAJLwEGQQF0akEAOwEAIANBBGoiA0ETRw0ACwsgBkETNgJsCyAGQQc2AlggBiAZNgJQIAYgGTYCcEEAIQJBACAbQRMgHCAdIBoQtTsiDgRAIAAjAEH2igFqNgIYIAtB0f4ANgIAIAsoAgAhAgwgCyAGQcb+ADYCBCAGQQA2AmxBACEOCyAGKAJkIiEgBigCaGoiGCACSwRAQX8gBigCWHRBf3MhFiAGKAJQIREDQCAEIQwgCCEJIAUhCgJAIBEgByAWcSITQQJ0ai0AASIQIARNBEAgBCEDDAELA0AgCUUNDCAKLQAAIAx0IRAgCkEBaiEKIAlBAWshCSAMQQhqIgMhDCADIBEgByAQaiIHIBZxIhNBAnRqLQABIhBJDQALIAohBSAJIQgLAkAgESATQQJ0ai8BAiIEQQ9NBEAgBiACQQFqIgk2AmwgBiACQQF0aiAEOwF0IAMgEGshBCAHIBB2IQcgCSECDAELAn8CfwJAAkACQCAEQRBrDgIAAQILIBBBAmoiBCADSwRAA0AgCEUNHCAIQQFrIQggBS0AACADdCAHaiEHIAVBAWohBSADQQhqIgMgBEkNAAsLIAMgEGshBCAHIBB2IQMgAkUEQCAAIwBB9LoBajYCGCALQdH+ADYCACADIQcgCygCACECDCYLIARBAmshBCADQQJ2IQcgA0EDcUEDaiEJIAJBAXQgBmovAXIMAwsgEEEDaiIEIANLBEADQCAIRQ0bIAhBAWshCCAFLQAAIAN0IAdqIQcgBUEBaiEFIANBCGoiAyAESQ0ACwsgAyAQa0EDayEEIAcgEHYiA0EDdiEHIANBB3FBA2oMAQsgEEEHaiIEIANLBEADQCAIRQ0aIAhBAWshCCAFLQAAIAN0IAdqIQcgBUEBaiEFIANBCGoiAyAESQ0ACwsgAyAQa0EHayEEIAcgEHYiA0EHdiEHIANB/wBxQQtqCyEJQQALIQMgAiAJaiAYSw0SIAlBAWshEEEAIQogCUEDcSIMBEADQCAGIAJBAXRqIAM7AXQgAkEBaiECIAlBAWshCSAKQQFqIgogDEcNAAsLIBBBA08EQANAIAYgAkEBdGoiCiADOwF2IAogAzsBdCAKIAM7AXggCiADOwF6IAJBBGohAiAJQQRrIgkNAAsLIAYgAjYCbAsgAiAYSQ0ACwsgBi8B9ARFBEAgACMAQbDSBWo2AhggC0HR/gA2AgAgCygCACECDB8LIAZBCTYCWCAGIBk2AlAgBiAZNgJwQQEgGyAhIBwgHSAaELU7Ig4EQCAAIwBB2ooBajYCGCALQdH+ADYCACALKAIAIQIMHwsgBkEGNgJcIAYgBigCcDYCVEECIBsgBigCZEEBdGogBigCaCAcICAgGhC1OyIOBEAgACMAQaiLAWo2AhggC0HR/gA2AgAgCygCACECDB8LIAtBx/4ANgIAQQAhDiABQQZHDQBBACEDDCILIAtByP4ANgIACwJAIAhBBkkNACAPQYICSQ0AIAAgDzYCECAAIA02AgwgACAINgIEIAAgBTYCACAGIAQ2AkAgBiAHNgI8IAAgFRChOyAGKAJAIQQgBigCPCEHIAAoAgQhCCAAKAIAIQUgACgCECEPIAAoAgwhDSAGKAIEQb/+AEcNESAGQX82Asg3IAsoAgAhAgwdCyAGQQA2Asg3IAQhCSAIIQIgBSEDAkAgBigCUCIQIAdBfyAGKAJYdEF/cyITcUECdGoiES0AASIMIARNBEAgBCEKDAELA0AgAkUNDiADLQAAIAl0IQwgA0EBaiEDIAJBAWshAiAJQQhqIgohCSAKIBAgByAMaiIHIBNxQQJ0aiIRLQABIgxJDQALCyARLwECIRMCQCARLQAAIglBAWtB/wFxQQ5LBEAgDCERQQAhDCADIQUgAiEIDAELIAIhCCADIQUCQCAKIgQgDCAQIAdBfyAJIAxqdEF/cyIYcSAMdiATakECdGoiFi0AASIRak8EQCAKIQkMAQsDQCAIRQ0OIAUtAAAgBHQhESAFQQFqIQUgCEEBayEIIARBCGoiCSEEIAwgECAHIBFqIgcgGHEgDHYgE2pBAnRqIhYtAAEiEWogCUsNAAsLIAkgDGshCiAHIAx2IQcgFi0AACEJIBYvAQIhEwsgBiATQf//A3E2AkQgBiAMIBFqNgLINyAKIBFrIQQgByARdiEHIAlB/wFxIgJFBEAgC0HN/gA2AgAgCygCACECDB0LIAJBIHEEQCAGQb/+ADYCBCAGQX82Asg3IAsoAgAhAgwdCyACQcAAcQRAIAAjAEGLiQhqNgIYIAtB0f4ANgIAIAsoAgAhAgwdCyAGQcn+ADYCBCAGIAJBD3EiCTYCTAsgBSEMIAghCgJAIAlFBEAgBigCRCEDDAELIAwhAwJAIAkgBCICTQRADAELA0AgCEUNDCAIQQFrIQggAy0AACACdCAHaiEHIANBAWoiBSEDIAJBCGoiAiAJSQ0ACwsgBiAGKALINyAJajYCyDcgBiAGKAJEIAdBfyAJdEF/c3FqIgM2AkQgAiAJayEEIAcgCXYhBwsgBkHK/gA2AgQgBiADNgLMNwsgBCEJIAghAiAFIQMCQCAGKAJUIhAgB0F/IAYoAlx0QX9zIhNxQQJ0aiIRLQABIgwgBE0EQCAEIQoMAQsDQCACRQ0JIAMtAAAgCXQhDCADQQFqIQMgAkEBayECIAlBCGoiCiEJIAogECAHIAxqIgcgE3FBAnRqIhEtAAEiDEkNAAsLIBEvAQIhEyAGAn8gES0AACIJQRBPBEAgDCERIAYoAsg3DAELIAIhCCADIQUCQCAKIgQgDCAQIAdBfyAJIAxqdEF/cyIYcSAMdiATakECdGoiFi0AASIRak8EQCAKIQkMAQsDQCAIRQ0JIAUtAAAgBHQhESAFQQFqIQUgCEEBayEIIARBCGoiCSEEIAwgECAHIBFqIgcgGHEgDHYgE2pBAnRqIhYtAAEiEWogCUsNAAsgBSEDIAghAgsgCSAMayEKIAcgDHYhByAWLQAAIQkgFi8BAiETIAYoAsg3IAxqCyARajYCyDcgCiARayEEIAcgEXYhByAJQcAAcQRAIAAjAEHyiQhqNgIYIAtB0f4ANgIAIAMhBSACIQggCygCACECDBsLIAZBy/4ANgIEIAYgCUEPcSIMNgJMIAYgE0H//wNxNgJICwJAIAxFBEAgAyEFIAIhCAwBCyAEIQkgAiEIIAMhCgJAIAQgDE8EQCADIQUMAQsDQCAIRQ0HIAhBAWshCCAKLQAAIAl0IAdqIQcgCkEBaiIFIQogCUEIaiIJIAxJDQALCyAGIAYoAsg3IAxqNgLINyAGIAYoAkggB0F/IAx0QX9zcWo2AkggCSAMayEEIAcgDHYhBwsgC0HM/gA2AgALIA8NAQtBACEPDBQLAn8gBigCSCICIBUgD2siA0sEQAJAIAIgA2siAyAGKAIwTQ0AIAYoAsQ3RQ0AIAAjAEHV3AVqNgIYIAtB0f4ANgIAIAsoAgAhAgwZCwJ/IAYoAjQiAiADSQRAIAYoAjggBigCLCADIAJrIgNragwBCyAGKAI4IAIgA2tqCyECIAMgBigCRCIJIAMgCUkbDAELIA0gAmshAiAGKAJEIgkLIQMgBiAJIAMgDyADIA9JGyIMazYCRCAMQQFrIRBBACEJIAxBB3EiCkUNCCAMIQMDQCANIAItAAA6AAAgA0EBayEDIA1BAWohDSACQQFqIQIgCUEBaiIJIApHDQALDAkLIAUgCGohBSAEIAhBA3RqIQQMFgsgAiADaiEFIAQgAkEDdGohBAwVCyACIANqIQUgCiACQQN0aiEEDBQLIAUgCGohBSAEIAhBA3RqIQQMEwsgCiAMaiEFIAQgCkEDdGohBAwSCyACIANqIQUgCiACQQN0aiEEDBELIAUgCGohBSAEIAhBA3RqIQQMEAsgACMAQfS6AWo2AhggC0HR/gA2AgAgCygCACECDA4LIAwhAwsgEEEHTwRAA0AgDSACLQAAOgAAIA0gAi0AAToAASANIAItAAI6AAIgDSACLQADOgADIA0gAi0ABDoABCANIAItAAU6AAUgDSACLQAGOgAGIA0gAi0ABzoAByANQQhqIQ0gAkEIaiECIANBCGsiAw0ACwsgDyAMayEPIAYoAkQNACALQcj+ADYCACALKAIAIQIMDAsgCygCACECDAsLQQAhCCADIQQgDiEDDA4LIAYoAiQiAwRAIANBADYCEAsgAiEECyALQbn+ADYCAAsgBigCFCIJQYAIcQRAIAYoAkQiAiAIIAIgCEkbIgMEQAJAIAYoAiQiCkUNACAKKAIQIgxFDQAgCigCGCIQIAooAhQgAmsiAk0NACACIAxqIAUgECACayADIAIgA2ogEEsbEM4+GiAGKAIUIQkLAkAgCUGABHFFDQAgBi0ADEEEcUUNACASIBIoAgAgBSADEN46NgIACyAGIAYoAkQgA2siAjYCRCAIIANrIQggAyAFaiEFCyACDQULIAZBuv4ANgIEIAZBADYCRAsCQCAGLQAVQQhxBEBBACECIAhFDQQDQCACIAVqLQAAIQMCQCAGKAIkIglFDQAgCSgCHCIKRQ0AIAYoAkQiDCAJKAIgTw0AIAYgDEEBajYCRCAKIAxqIAM6AAALIANB/wFxQQAgCCACQQFqIgJLGw0ACwJAIAYtABVBAnFFDQAgBi0ADEEEcUUNACASIBIoAgAgBSACEN46NgIACyACIAVqIQUgCCACayEIIANB/wFxRQ0BDAULIAYoAiQiAkUNACACQQA2AhwLIAZBu/4ANgIEIAZBADYCRAsCQCAGLQAVQRBxBEBBACECIAhFDQMDQCACIAVqLQAAIQMCQCAGKAIkIglFDQAgCSgCJCIKRQ0AIAYoAkQiDCAJKAIoTw0AIAYgDEEBajYCRCAKIAxqIAM6AAALIANB/wFxQQAgCCACQQFqIgJLGw0ACwJAIAYtABVBAnFFDQAgBi0ADEEEcUUNACASIBIoAgAgBSACEN46NgIACyACIAVqIQUgCCACayEIIANB/wFxRQ0BDAQLIAYoAiQiAkUNACACQQA2AiQLIAtBvP4ANgIACyAGKAIUIgNBgARxBEACQCAEQQ9LBEAgBSECDAELIAhFDQcgBEEIaiEKIAVBAWohAiAIQQFrIQkgBS0AACAEdCAHaiEHIARBB0sEQCAJIQggCiEEDAELIAlFBEAgAiEFQQAhCCAKIQQgDiEDDAsLIARBEGohBCAFQQJqIQIgCEECayEIIAUtAAEgCnQgB2ohBwsCQCAGLQAMQQRxRQ0AIAcgEi8BAEYNACAAIwBB/u0FajYCGCALQdH+ADYCACACIQUgCygCACECDAYLQQAhB0EAIQQgAiEFCyAGKAIkIgIEQCACQQE2AjAgAiADQQl2QQFxNgIsCyASQQBBAEEAEN46IgI2AgAgACACNgIwIAtBv/4ANgIAIAsoAgAhAgwEC0EAIQgLIA4hCQsgCSEDDAULIAJFDQIgBigCFEUNAgJAIARBH0sEQCAFIQMMAQsgCEUNAiAEQQhqIQogBUEBaiEDIAhBAWshCSAFLQAAIAR0IAdqIQcgBEEXSwRAIAkhCCAKIQQMAQsgCUUEQCADIQVBACEIIAohBCAOIQMMBgsgBEEQaiEMIAVBAmohAyAIQQJrIQkgBS0AASAKdCAHaiEHIARBD0sEQCAJIQggDCEEDAELIAlFBEAgAyEFQQAhCCAMIQQgDiEDDAYLIARBGGohCSAFQQNqIQMgCEEDayEKIAUtAAIgDHQgB2ohByAEQQdLBEAgCiEIIAkhBAwBCyAKRQRAIAMhBUEAIQggCSEEIA4hAwwGCyAEQSBqIQQgBUEEaiEDIAhBBGshCCAFLQADIAl0IAdqIQcLQQAhCQJAIAJBBHFFDQAgByAGKAIgRg0AIAAjAEH51wVqNgIYIAtB0f4ANgIAIAMhBSALKAIAIQIMAQsLIAMhBUEAIQQMAgtBACEIIA4hAwwCCyAHIQkLIAtB0P4ANgIAQQEhAyAJIQcLIAAgDzYCECAAIA02AgwgACAINgIEIAAgBTYCACAGIAQ2AkAgBiAHNgI8AkACfwJAIAYoAiwNACAIIA8gFUYNARogCCALKAIAIhdB0P4ASw0BGiABQQRHDQAgF0HN/gBNDQAgCAwBCyAAIA0gFSAPaxCpOw0BIAAoAhAhDyAAKAIECyEXIAAgACgCCCAeIBdrajYCCCAAIBUgD2siDSAAKAIUajYCFCAGIAYoAiAgDWo2AiACQCAGLQAMQQRxRQ0AIA8gFUYNACAAKAIMIA1rIQIgBigCHCEIIBICfyAGKAIUBEAgCCACIA0Q3joMAQsgCCACIA0Q1zoLIg02AgAgACANNgIwCyAAIAYoAkAgBigCCEEAR0EGdGogBigCBCIGQb/+AEZBB3RqQYACIAZBwv4ARkEIdCAGQcf+AEYbajYCLCADQXsgAxsiACAAIAMgDyAVRhsgAyAXIB5GGyABQQRGGyEXDAILIAtB0v4ANgIAC0F8IRcLIBRBEGokASAXC5UCAQN/AkAgACgCHCIDKAI4IgRFBEBBASEFIAMgACgCKEEBIAMoAih0QQEgACgCIBECACIENgI4IARFDQELIAMoAiwiAEUEQCADQgA3AjAgA0EBIAMoAih0IgA2AiwLIAAgAk0EQCAEIAEgAGsgABDOPhogA0EANgI0IAMgAygCLDYCMEEADwsgBCADKAI0IgVqIAEgAmsgACAFayIAIAIgACACSRsiBBDOPhogACACSQRAIAMoAjggASACIARrIgJrIAIQzj4aIAMgAjYCNCADIAMoAiw2AjBBAA8LQQAhBSADIAMoAjQgBGoiAkEAIAIgAygCLCIARxs2AjQgAygCMCICIABPDQAgAyACIARqNgIwCyAFC4IBAQN/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgNFDQAgACgCHCIBRQ0AIAEoAgAgAEcNACABKAIEQbT+AGtBH0sNACABKAI4IgIEQCAAKAIoIAIgAxEFACAAKAIkIQMgACgCHCEBCyAAKAIoIAEgAxEFAEEAIQIgAEEANgIcCyACC5oBAQJ/QX4hBAJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiA0UNACADKAIAIABHDQAgAygCBEG0/gBrQR9LDQACQCABRQ0AIAMoAjAiAEUNACABIAMoAjQiBCADKAI4aiAAIARrEM4+IAMoAjBqIAMoAjQiAGsgAygCOCAAEM4+GgtBACEEIAJFDQAgAiADKAIwNgIACyAEC6sBAQN/QX4hBAJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiA0UNACADKAIAIABHDQAgAygCBCIFQbT+AGtBH0sNAAJAAkAgAygCDARAIAVBvv4ARg0BDAMLIAVBvv4ARw0BC0F9IQRBAEEAQQAQ1zogASACENc6IAMoAhxHDQELIAAgASACaiACEKk7BEAgA0HS/gA2AgRBfA8LIANBATYCEEEAIQQLIAQLYgECf0F+IQMCQCAARQ0AIAAoAiBFDQAgACgCJEUNACAAKAIcIgJFDQAgAigCACAARw0AIAIoAgRBtP4Aa0EfSw0AIAItAAxBAnFFDQAgAiABNgIkQQAhAyABQQA2AjALIAMLswYBCX8jAUEQayEEQX4hAgJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiA0UNACADKAIAIABHDQAgAygCBCIBQbT+AGtBH0sNACAAKAIEIgVFBEBBeyECIAMoAkBBCEkNAQsCQCABQdP+AEYEQCADKAJsIQEMAQsgA0HT/gA2AgQgAyADKAI8IAMoAkAiAkEHcXQiATYCPAJAAkACQCACQQhPBEAgAkEIayICQQN2QQFqIgVBA3EhByACQRhPDQFBACECDAILQQAhASADQQA2AkAMAgsgBUH8////A3EhCUEAIQIDQCAEQQxqIAJqIAE6AAAgBEEMaiACQQFyaiABQQh2OgAAIARBDGogAkECcmogAUEQdjoAACACQQNyIgUgBEEMamogAUEYdjoAACACQQRqIQJBACEBIAhBBGoiCCAJRw0ACwsCQCAHRQRAQQAhAQwBCwNAIAIiBSAEQQxqaiABOgAAIAFBCHYhASACQQFqIQIgBkEBaiIGIAdHDQALCyADQQA2AkAgAyABNgI8QQAhAkEAIQEDQCABQQFqQQBBBCABayAEQQxqIAJqLQAAIgYbQf8BQQAgAUECTxsgBkYbIQEgAiAFTw0BIAJBAWohAiABQQRJDQALCyADIAE2AmwgACgCBCEFCyAAKAIAIQZBACECAkAgBUUNACABQQNLDQADQCABQQFqQQBBBCABayACIAZqLQAAIgQbQf8BQQAgAUECTxsgBEYbIQEgAkEBaiICIAVPDQEgAUEESQ0ACwsgAyABNgJsIAAgAiAGajYCACAAIAAoAgQgAms2AgQgACAAKAIIIAJqIgQ2AghBfSECIAFBBEcNAEEAIQEgAygCFCIFQX9HBEAgAygCDEF7cSEBCyADQQA2AjQgA0IANwIsIAMgATYCDCADQQA2AiAgAEEANgIYIAEEQCAAIAFBAXE2AjALIANCADcCPEEAIQIgA0EANgIkIANBgIACNgIYIANBADYCECADQQA2AgggA0KBgICAcDcCxDcgAyADQbQKaiIBNgJwIAMgATYCVCADIAE2AlAgACAENgIIIANBv/4ANgIEIAMgBTYCFAsgAgtcAQJ/QX4hAQJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiAkUNACACKAIAIABHDQAgAigCBCIAQbT+AGtBH0sNAEEAIQEgAEHB/gBHDQAgAigCQEUhAQsgAQv3AgEFf0F+IQMCQAJAIAFFDQAgASgCICIERQ0AIAEoAiRFDQAgASgCHCICRQ0AIAIoAgAgAUcNACAARQ0AIAIoAgRB1P4Aa0FgSQ0AQXwhAyABKAIoQQFB0DcgBBECACIFRQ0AIAIoAjhFBEBBACEEDAILIAEoAihBASACKAIodEEBIAEoAiARAgAiBA0BIAEoAiggBSABKAIkEQUACyADDwsgACABKQAANwAAIAAgASkAMDcAMCAAIAEpACg3ACggACABKQAgNwAgIAAgASkAGDcAGCAAIAEpABA3ABAgACABKQAINwAIIAUgAkHQNxDOPiIBIAA2AgACQCACKAJQIgUgAkG0CmoiA0kNACAFIAJBwDdqSw0AIAEgAUG0CmoiBiAFIANrajYCUCABIAYgAigCVCADa2o2AlQLIAEgASACKAJwIANrakG0Cmo2AnAgBARAIAQgAigCOEEBIAIoAih0EM4+GgsgASAENgI4IAAgATYCHEEAC1EBAX9BfiECAkAgAEUNACAAKAIgRQ0AIAAoAiRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNACABKAIEQbT+AGtBH0sNACABQQE2AsQ3QX0hAgsgAgt4AQJ/QX4hAwJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiAkUNACACKAIAIABHDQAgAigCBEG0/gBrQR9LDQAgAigCDCEAAkACQCACIAEEfyAADQFBAAUgAEF7cQs2AgwMAQsgAiAAQQRyNgIMC0EAIQMLIAMLkwEBA39BgIB8IQECQCAARQ0AIAAoAiBFDQAgACgCJEUNACAAKAIcIgJFDQAgAigCACAARw0AIAIoAgQiAEG0/gBrQR9LDQAgAigCyDdBEHQhA0EAIQECQAJAAkAgAEHD/gBrDgoAAgICAgICAgIBAgsgAigCRCEBDAELIAIoAsw3IAIoAkRrIQELIAEgA2ohAQsgAQtWAQJ/QX8hAgJAIABFDQAgACgCIEUNACAAKAIkRQ0AIAAoAhwiAUUNACABKAIAIABHDQAgASgCBEG0/gBrQR9LDQAgASgCcCABa0G0CmtBAnUhAgsgAguAEAEWfyMBQUBqIgZCADcDMCAGQgA3AzggBkIANwMgIAZCADcDKAJAAkACQAJAAkAgAgRAIAJBA3EhDCACQQRPBEAgAkF8cSEOA0AgBkEgaiABIAtBAXQiCmovAQBBAXRqIg0gDS8BAEEBajsBACAGQSBqIAEgCkECcmovAQBBAXRqIg0gDS8BAEEBajsBACAGQSBqIAEgCkEEcmovAQBBAXRqIg0gDS8BAEEBajsBACAGQSBqIAEgCkEGcmovAQBBAXRqIgogCi8BAEEBajsBACALQQRqIQsgB0EEaiIHIA5HDQALCyAMBEADQCAGQSBqIAEgC0EBdGovAQBBAXRqIgogCi8BAEEBajsBACALQQFqIQsgCEEBaiIIIAxHDQALCyAEKAIAIQtBDyEKIAYvAT4iDA0CDAELIAQoAgAhCwtBDiEKQQAhDCAGLwE8DQBBDSEKIAYvAToNAEEMIQogBi8BOA0AQQshCiAGLwE2DQBBCiEKIAYvATQNAEEJIQogBi8BMg0AQQghCiAGLwEwDQBBByEKIAYvAS4NAEEGIQogBi8BLA0AQQUhCiAGLwEqDQBBBCEKIAYvASgNAEEDIQogBi8BJg0AQQIhCiAGLwEkDQAgBi8BIkUEQCADIAMoAgAiBkEEajYCACAGQcACNgEAIAMgAygCACIGQQRqNgIAIAZBwAI2AQBBASEPDAMLQQAhDSALQQBHIQ5BASEKQQEhCwwBCyALIAogCiALSxshDkEBIQ1BASELA0AgBkEgaiALQQF0ai8BAA0BIAtBAWoiCyAKRw0ACyAKIQsLQX8hCCAGLwEiIgdBAksNASAGLwEkIhEgB0EBdGoiCUEESw0BIAYvASYiEyAJQQF0aiIJQQhLDQEgBi8BKCIQIAlBAXRqIglBEEoNAUEgIAYvASoiEiAJQQF0amsiCUEASA0BIAlBAXQgBi8BLCIPayIJQQBIDQEgCUEBdCAGLwEuIhlrIglBAEgNASAJQQF0IAYvATAiGmsiCUEASA0BIAlBAXQgBi8BMiIbayIJQQBIDQEgCUEBdCAGLwE0IhZrIglBAEgNASAJQQF0IAYvATYiF2siCUEASA0BIAlBAXQgBi8BOCIUayIJQQBIDQEgCUEBdCAGLwE6IhVrIglBAEgNASAJQQF0IAYvATwiGGsiCUEASA0BIAlBAXQiCSAMSQ0BIAkgDEdBACAARSANchsNASALIA5JIQlBACEIIAZBADsBAiAGIAc7AQQgBiAHIBFqIgc7AQYgBiAHIBNqIgc7AQggBiAHIBBqIgc7AQogBiAHIBJqIgc7AQwgBiAHIA9qIgc7AQ4gBiAHIBlqIgc7ARAgBiAHIBpqIgc7ARIgBiAHIBtqIgc7ARQgBiAHIBZqIgc7ARYgBiAHIBdqIgc7ARggBiAHIBRqIgc7ARogBiAHIBVqIgc7ARwgBiAHIBhqOwEeAkAgAkUNACACQQFxIREgAkEBRwRAIAJBfnEhAkEAIQcDQCABIAhBAXRqLwEAIg0EQCAGIA1BAXRqIg0gDS8BACINQQFqOwEAIAUgDUEBdGogCDsBAAsgASAIQQFyIg1BAXRqLwEAIgwEQCAGIAxBAXRqIgwgDC8BACIMQQFqOwEAIAUgDEEBdGogDTsBAAsgCEECaiEIIAdBAmoiByACRw0ACwsgEUUNACABIAhBAXRqLwEAIgdFDQAgBiAHQQF0aiIHIAcvAQAiB0EBajsBACAFIAdBAXRqIAg7AQALIA4gCyAJGyEPQRQhEkEAIRggBSEWIAUhF0EAIRUCQAJAAkAgAA4CAgABCyMAIQdBASEIIA9BCUsNAyAHQbCtkgFqIRcgB0HwrJIBaiEWQYECIRJBASEVDAELIwAiCEGwrpIBaiEXIAhB8K2SAWohFiAAQQJGIRhBACESIABBAkcEQAwBC0EBIQggD0EJSw0CC0EBIA90IhRBAWshGyADKAIAIRFBACETIA8hDEEAIRBBACENQX8hGgNAQQEgDHQhGQJAA0AgCyAQayEOAn9BACAFIBNBAXRqLwEAIgxBAWogEkkNABogDCASSQRAQQAhDEHgAAwBCyAWIAwgEmtBAXQiCGovAQAhDCAIIBdqLQAACyECIA0gEHYhAEF/IA50IQkgGSEIA0AgESAIIAlqIgggAGpBAnRqIgcgDDsBAiAHIA46AAEgByACOgAAIAgNAAtBASALQQFrdCEHA0AgByIIQQF2IQcgCCANcQ0ACyAGQSBqIAtBAXRqIgcgBy8BAEEBayIHOwEAIAhBAWsgDXEgCGpBACAIGyENIBNBAWohEyAHQf//A3FFBEAgCiALRg0CIAEgBSATQQF0ai8BAEEBdGovAQAhCwsgCyAPTQ0AIA0gG3EiByAaRg0AC0EBIAsgECAPIBAbIhBrIgx0IQ4gCiALSwRAIAogEGshAiALIQgCQANAIA4gBkEgaiAIQQF0ai8BAGsiCEEATA0BIAhBAXQhDiAMQQFqIgwgEGoiCCAKSQ0ACyACIQwLQQEgDHQhDgtBASEIIBUgDiAUaiIUQdQGS3ENAyAYIBRB0ARLcQ0DIAMoAgAiDiAHQQJ0aiIIIA86AAEgCCAMOgAAIAggESAZQQJ0aiIRIA5rQQJ2OwECIAchGgwBCwsgDQRAIBEgDUECdGoiBkEAOwECIAYgDjoAASAGQcAAOgAACyADIAMoAgAgFEECdGo2AgALIAQgDzYCAEEAIQgLIAgLcgEBfyAAQQA2ArwtIABBADsBuC0gAEG4FmojACIBQeCI5AFqNgIAIAAgAEH8FGo2ArAWIABBrBZqIAFBzIjkAWo2AgAgACAAQYgTajYCpBYgAEGgFmogAUG4iOQBajYCACAAIABBlAFqNgKYFiAAELc7C/AEAQN/IABBlAFqIQIDQCACIAFBAnQiA2pBADsBACACIANBBHJqQQA7AQAgAUECaiIBQZ4CRw0ACyAAQQA7AfwUIABBADsBiBMgAEHEFWpBADsBACAAQcAVakEAOwEAIABBvBVqQQA7AQAgAEG4FWpBADsBACAAQbQVakEAOwEAIABBsBVqQQA7AQAgAEGsFWpBADsBACAAQagVakEAOwEAIABBpBVqQQA7AQAgAEGgFWpBADsBACAAQZwVakEAOwEAIABBmBVqQQA7AQAgAEGUFWpBADsBACAAQZAVakEAOwEAIABBjBVqQQA7AQAgAEGIFWpBADsBACAAQYQVakEAOwEAIABBgBVqQQA7AQAgAEH8E2pBADsBACAAQfgTakEAOwEAIABB9BNqQQA7AQAgAEHwE2pBADsBACAAQewTakEAOwEAIABB6BNqQQA7AQAgAEHkE2pBADsBACAAQeATakEAOwEAIABB3BNqQQA7AQAgAEHYE2pBADsBACAAQdQTakEAOwEAIABB0BNqQQA7AQAgAEHME2pBADsBACAAQcgTakEAOwEAIABBxBNqQQA7AQAgAEHAE2pBADsBACAAQbwTakEAOwEAIABBuBNqQQA7AQAgAEG0E2pBADsBACAAQbATakEAOwEAIABBrBNqQQA7AQAgAEGoE2pBADsBACAAQaQTakEAOwEAIABBoBNqQQA7AQAgAEGcE2pBADsBACAAQZgTakEAOwEAIABBlBNqQQA7AQAgAEGQE2pBADsBACAAQYwTakEAOwEAIABCADcCrC0gAEGUCWpBATsBACAAQQA2AqgtIABBADYCoC0LwgMBAn8CQAJ/IAAoArwtIgRBDk4EQCAAIAAvAbgtIAMgBHRyIgQ7AbgtIAAgACgCFCIFQQFqNgIUIAUgACgCCGogBDoAACAAIAAoAhQiBEEBajYCFCAEIAAoAghqIABBuS1qLQAAOgAAIAAgA0H//wNxQRAgACgCvC0iA2t2IgU7AbgtIANBDWsMAQsgACAALwG4LSADIAR0ciIFOwG4LSAEQQNqCyIDQQlOBEAgACAAKAIUIgNBAWo2AhQgAyAAKAIIaiAFOgAAIAAgACgCFCIDQQFqNgIUIAMgACgCCGogAEG5LWotAAA6AAAMAQsgA0EATA0AIAAgACgCFCIDQQFqNgIUIAMgACgCCGogBToAAAsgAEEANgK8LSAAQQA7AbgtIAAgACgCFCIDQQFqNgIUIAMgACgCCGogAjoAACAAIAAoAhQiA0EBajYCFCADIAAoAghqIAJBCHY6AAAgACAAKAIUIgNBAWo2AhQgAyAAKAIIaiACQX9zIgM6AAAgACAAKAIUIgRBAWo2AhQgBCAAKAIIaiADQQh2OgAAIAIEQCAAKAIIIAAoAhRqIAEgAhDOPhoLIAAgACgCFCACajYCFAusAQEBfwJAIAACfyAAKAK8LSIBQRBGBEAgACAAKAIUIgFBAWo2AhQgASAAKAIIaiAALQC4LToAACAAIAAoAhQiAUEBajYCFCABIAAoAghqIABBuS1qLQAAOgAAIABBADsBuC1BAAwBCyABQQhIDQEgACAAKAIUIgFBAWo2AhQgASAAKAIIaiAALQC4LToAACAAIABBuS1qLQAAOwG4LSAAKAK8LUEIaws2ArwtCwuaAwECfyAAIAAvAbgtQQIgACgCvC0iAXRyIgI7AbgtIAACfyABQQ5OBEAgACAAKAIUIgFBAWo2AhQgASAAKAIIaiACOgAAIAAgACgCFCICQQFqNgIUIAIgACgCCGogAEG5LWotAAA6AAAgAEECQRAgACgCvC0iAWt2IgI7AbgtIAFBDWsMAQsgAUEDagsiATYCvC0gAAJ/IAFBCk4EQCAAIAAoAhQiAUEBajYCFCABIAAoAghqIAI6AAAgACAAKAIUIgJBAWo2AhQgAiAAKAIIaiAAQbktai0AADoAAEEAIQIgAEEAOwG4LSAAKAK8LUEJawwBCyABQQdqCyIBNgK8LQJAIAACfyABQRBGBEAgACAAKAIUIgFBAWo2AhQgASAAKAIIaiACOgAAIAAgACgCFCICQQFqNgIUIAIgACgCCGogAEG5LWotAAA6AAAgAEEAOwG4LUEADAELIAFBCEgNASAAIAAoAhQiAUEBajYCFCABIAAoAghqIAI6AAAgACAAQbktai0AADsBuC0gACgCvC1BCGsLNgK8LQsLrRMBC38CQAJAIAAoAoQBQQBKBEAgACgCACIGKAIsQQJGBEBB/4D/n38hBAJAA0ACQCAEQQFxRQ0AIAAgBUECdGovAZQBRQ0AQQAhBAwCCwJAIARBAnFFDQAgACAFQQJ0QQRyai8BlAFFDQBBACEEDAILIARBAnYhBCAFQQJqIgVBIEcNAAsCQCAALwG4AQ0AIAAvAbwBDQAgAC8ByAENAEEgIQUDQCAAIAVBAnQiBGovAZQBDQEgACAEQQRyai8BlAENASAAIARBCHJqLwGUAQ0BIAAgBEEMcmovAZQBDQFBACEEIAVBBGoiBUGAAkcNAAsMAQtBASEECyAGIAQ2AiwLIAAgAEGYFmoQvDsgACAAQaQWahC8OyAALwGWASEEIABBlAFqIg4gAEGcFmooAgAiCkECdGpB//8DOwEGIApBAE4EQEEHQYoBIAQbIQhBBEEDIAQbIQtBfyEMA0AgBCEFIA4gCSINQQFqIglBAnRqLwECIQQCQAJAIAdBAWoiBiAITg0AIAQgBUcNACAGIQcMAQsCQCAGIAtIBEAgACAFQQJ0akH8FGoiByAHLwEAIAZqOwEADAELIAUEQCAFIAxHBEAgACAFQQJ0akH8FGoiBiAGLwEAQQFqOwEACyAAIAAvAbwVQQFqOwG8FQwBCyAHQQlMBEAgACAALwHAFUEBajsBwBUMAQsgACAALwHEFUEBajsBxBULQQAhBwJ/IARFBEBBAyELQYoBDAELQQNBBCAEIAVGIgYbIQtBBkEHIAYbCyEIIAUhDAsgCiANRw0ACwsgAEGKE2ovAQAhBCAAQYgTaiIOIABBqBZqKAIAIgpBAnRqQf//AzsBBkEAIQcgCkEATgRAQQdBigEgBBshCEEEQQMgBBshC0F/IQxBACEJA0AgBCEFIA4gCSINQQFqIglBAnRqLwECIQQCQAJAIAdBAWoiBiAITg0AIAQgBUcNACAGIQcMAQsCQCAGIAtIBEAgACAFQQJ0akH8FGoiByAHLwEAIAZqOwEADAELIAUEQCAFIAxHBEAgACAFQQJ0akH8FGoiBiAGLwEAQQFqOwEACyAAIAAvAbwVQQFqOwG8FQwBCyAHQQlMBEAgACAALwHAFUEBajsBwBUMAQsgACAALwHEFUEBajsBxBULQQAhBwJ/IARFBEBBAyELQYoBDAELQQNBBCAEIAVGIgYbIQtBBkEHIAYbCyEIIAUhDAsgCiANRw0ACwsgACAAQbAWahC8OyAAIAAoAqgtAn9BEiAAQboVai8BAA0AGkERIABBghVqLwEADQAaQRAgAEG2FWovAQANABpBDyAAQYYVai8BAA0AGkEOIABBshVqLwEADQAaQQ0gAEGKFWovAQANABpBDCAAQa4Vai8BAA0AGkELIABBjhVqLwEADQAaQQogAEGqFWovAQANABpBCSAAQZIVai8BAA0AGkEIIABBphVqLwEADQAaQQcgAEGWFWovAQANABpBBiAAQaIVai8BAA0AGkEFIABBmhVqLwEADQAaQQQgAEGeFWovAQANABpBA0ECIABB/hRqLwEAGwsiCUEDbGoiBEERajYCqC0gACgCrC1BCmpBA3YiBSAEQRtqQQN2IgRNDQEgACgCiAFBBEYNAQwCCyACQQVqIQULIAUhBAsCQAJAIAFFDQAgAkEEaiAESw0AIAAgASACIAMQuDsMAQsgACgCvC0hBiAEIAVGBEAgA0ECaiEEIAACfyAGQQ5OBEAgACAALwG4LSAEIAZ0ciIFOwG4LSAAIAAoAhQiBkEBajYCFCAGIAAoAghqIAU6AAAgACAAKAIUIgVBAWo2AhQgBSAAKAIIaiAAQbktai0AADoAACAAIARB//8DcUEQIAAoArwtIgRrdjsBuC0gBEENawwBCyAAIAAvAbgtIAQgBnRyOwG4LSAGQQNqCzYCvC0gACMAIgRB8LSSAWogBEHwvZIBahC9OwwBCyADQQRqIQUgAAJ/IAZBDk4EQCAAIAAvAbgtIAUgBnRyIgQ7AbgtIAAgACgCFCIGQQFqNgIUIAYgACgCCGogBDoAACAAIAAoAhQiBEEBajYCFCAEIAAoAghqIABBuS1qLQAAOgAAIAVB//8DcUEQIAAoArwtIgRrdiEHIARBDWsMAQsgAC8BuC0gBSAGdHIhByAGQQNqCyIENgK8LSAAQZwWaigCACIKQYD+A2ohBiAAQagWaigCACEIAkAgBEEMTgRAIAAgByAGIAR0ciIEOwG4LSAAIAAoAhQiBUEBajYCFCAFIAAoAghqIAQ6AAAgACAAKAIUIgRBAWo2AhQgBCAAKAIIaiAAQbktai0AADoAACAGQf//A3FBECAAKAK8LSIFa3YhBCAFQQtrIQUMAQsgBEEFaiEFIAcgBiAEdHIhBAsgACAFNgK8LSAAAn8gBUEMTgRAIAAgBCAIIAV0ciIEOwG4LSAAIAAoAhQiBUEBajYCFCAFIAAoAghqIAQ6AAAgACAAKAIUIgRBAWo2AhQgBCAAKAIIaiAAQbktai0AADoAACAIQf//A3FBECAAKAK8LSIEa3YhByAEQQtrDAELIAQgCCAFdHIhByAFQQVqCyIGNgK8LSAJQf3/A2ohBQJAIAZBDU4EQCAAIAcgBSAGdHIiBDsBuC0gACAAKAIUIgZBAWo2AhQgBiAAKAIIaiAEOgAAIAAgACgCFCIEQQFqNgIUIAQgACgCCGogAEG5LWotAAA6AAAgBUH//wNxQRAgACgCvC0iBGt2IQYgBEEMayEEDAELIAZBBGohBCAHIAUgBnRyIQYLIAAgBDYCvC1BACEFIABBuS1qIQ0DQCAAIAYgACMAQcDBkgFqIAVqLQAAQQJ0akH+FGovAQAiByAEdHIiBjsBuC0gAAJ/IARBDk4EQCAAIAAoAhQiBEEBajYCFCAEIAAoAghqIAY6AAAgACAAKAIUIgRBAWo2AhQgBCAAKAIIaiANLQAAOgAAIAAgB0EQIAAoArwtIgRrdiIGOwG4LSAEQQ1rDAELIARBA2oLIgQ2ArwtIAUgCUchByAFQQFqIQUgBw0ACyAAIABBlAFqIgQgChC+OyAAIABBiBNqIgUgCBC+OyAAIAQgBRC9OwsgABC3OyADBEACQCAAKAK8LSIEQQlOBEAgACAAKAIUIgRBAWo2AhQgBCAAKAIIaiAALQC4LToAACAAIAAoAhQiBEEBajYCFCAEIAAoAghqIABBuS1qLQAAOgAADAELIARBAEwNACAAIAAoAhQiBEEBajYCFCAEIAAoAghqIAAtALgtOgAACyAAQQA2ArwtIABBADsBuC0LC6IVARV/IwFBIGshCiABKAIAIQkgASgCCCICKAIAIQUgAigCDCENIABCgICAgNDHADcC0ChBfyEQQQAhAgJAIA1BAEoEQANAAkAgCSACQQJ0aiIDLwEABEAgACAAKALQKEEBaiIDNgLQKCAAIANBAnRqQdwWaiACNgIAIAAgAmpB2ChqQQA6AAAgAiEQDAELIANBADsBAgsgAkEBaiICIA1HDQALIAAoAtAoIgJBAUoNAQsDQCAAIAJBAWoiAjYC0CggACACQQJ0akHcFmogEEEBaiIDQQAgEEECSCIEGyICNgIAIAkgAkECdCIGakEBOwEAIAAgAmpB2ChqQQA6AAAgACAAKAKoLUEBazYCqC0gBQRAIAAgACgCrC0gBSAGai8BAms2AqwtCyADIBAgBBshECAAKALQKCICQQJIDQALCyABIBA2AgQgAkEBdiECA0AgACACIghBAnRqQdwWaigCACELAkAgAkEBdCIDIAAoAtAoIgRKDQAgACALakHYKGohDiAJIAtBAnRqIQcgCCEFA0ACQCADIAROBEAgAyECDAELIAkgAEHcFmoiAiADQQFyIgRBAnRqKAIAIg9BAnRqLwEAIgYgCSACIANBAnRqKAIAIgxBAnRqLwEAIgJPBEAgAiAGRwRAIAMhAgwCCyADIQIgAEHYKGoiAyAPai0AACADIAxqLQAASw0BCyAEIQILIAcvAQAiBCAJIAAgAkECdGpB3BZqKAIAIgNBAnRqLwEAIgZJBEAgBSECDAILAkAgBCAGRw0AIA4tAAAgACADakHYKGotAABLDQAgBSECDAILIAAgBUECdGpB3BZqIAM2AgAgAiEFIAJBAXQiAyAAKALQKCIETA0ACwsgACACQQJ0akHcFmogCzYCACAIQQFrIQIgCEEBSg0ACyAAKALQKCEDA0AgDSEIIAAgA0EBayIENgLQKCAAKALgFiELIAAgACADQQJ0akHcFmooAgAiDTYC4BZBASECAkAgA0EDSA0AIAAgDWpB2ChqIQ5BAiEDIAkgDUECdGohB0EBIQUDQAJAIAMgBE4EQCADIQIMAQsgCSAAQdwWaiICIANBAXIiBEECdGooAgAiD0ECdGovAQAiBiAJIAIgA0ECdGooAgAiDEECdGovAQAiAk8EQCACIAZHBEAgAyECDAILIAMhAiAAQdgoaiIDIA9qLQAAIAMgDGotAABLDQELIAQhAgsgBy8BACIEIAkgACACQQJ0akHcFmooAgAiA0ECdGovAQAiBkkEQCAFIQIMAgsCQCAEIAZHDQAgDi0AACAAIANqQdgoai0AAEsNACAFIQIMAgsgACAFQQJ0akHcFmogAzYCACACIQUgAkEBdCIDIAAoAtAoIgRMDQALC0ECIQMgAEHcFmoiByACQQJ0aiANNgIAIAAgACgC1ChBAWsiBDYC1CggACgC4BYhAiAHIARBAnRqIAs2AgAgACAAKALUKEEBayIENgLUKCAHIARBAnRqIAI2AgAgCSAIQQJ0aiIPIAkgAkECdGoiBC8BACAJIAtBAnRqIgUvAQBqOwEAIABB2ChqIgwgCGoiDiALIAxqLQAAIgYgAiAMai0AACICIAIgBkkbQQFqOgAAIAQgCDsBAiAFIAg7AQIgACAINgLgFkEBIQVBASECAkAgACgC0CgiBEECSA0AA0ACfyADIAMgBE4NABogCSAHIANBAXIiBEECdGooAgAiC0ECdGovAQAiAiAJIAcgA0ECdGooAgAiDUECdGovAQAiBk8EQCADIAIgBkcNARogAyALIAxqLQAAIAwgDWotAABLDQEaCyAECyECIA8vAQAiBCAJIAAgAkECdGpB3BZqKAIAIgNBAnRqLwEAIgZJBEAgBSECDAILAkAgBCAGRw0AIA4tAAAgACADakHYKGotAABLDQAgBSECDAILIAAgBUECdGpB3BZqIAM2AgAgAiEFIAJBAXQiAyAAKALQKCIETA0ACwsgCEEBaiENIAAgAkECdGpB3BZqIAg2AgAgACgC0CgiA0EBSg0ACyAAIAAoAtQoQQFrIgI2AtQoIABB3BZqIgMgAkECdGogACgC4BY2AgAgASgCBCEEIAEoAggiAigCECEHIAIoAgghESACKAIEIRMgAigCACESIAEoAgAhCCAAQdQWaiIBQgA3AQAgAEHMFmoiFEIANwEAIABBxBZqIhVCADcBACAAQbwWaiIWQgA3AQBBACEPIAggAyAAKALUKEECdGooAgBBAnRqQQA7AQICQCAAKALUKCICQbsESg0AIAJBAWohAkEAIQwDQCAIIAAgAkECdGpB3BZqKAIAIgNBAnQiDWoiBSAHIAggBS8BAkECdGovAQIiBkEBaiAGIAdOIgYbIg47AQICQCADIARKDQAgACAOQQF0akG8FmoiCyALLwEAQQFqOwEAQQAhCyADIBFOBEAgEyADIBFrQQJ0aigCACELCyAAIAAoAqgtIAUvAQAiAyALIA5qbGo2AqgtIBJFDQAgACAAKAKsLSALIA0gEmovAQJqIANsajYCrC0LIAYgDGohDCACQQFqIgJBvQRHDQALIAxFDQAgACAHQQF0akG8FmohDgNAIAchAgNAIAAgAiIDQQFrIgJBAXRqQbwWaiIFLwEAIgZFDQALIAUgBkEBazsBACAAIANBAXRqQbwWaiICIAIvAQBBAmo7AQAgDiAOLwEAQQFrOwEAIAxBAkohAiAMQQJrIQwgAg0ACyAHRQ0AQb0EIQIDQCAAIAdBAXRqQbwWai8BACIFBEADQCAAIAJBAWsiAkECdGpB3BZqKAIAIgMgBEoNACAIIANBAnRqIgMvAQIiBiAHRwRAIAAgACgCqC0gAy8BACAHIAZrbGo2AqgtIAMgBzsBAgsgBUEBayIFDQALCyAHQQFrIgcNAAsLIAogFi8BAEEBdCICOwECIAogAiAAQb4Wai8BAGpBAXQiAjsBBCAKIAIgAEHAFmovAQBqQQF0IgI7AQYgCiACIABBwhZqLwEAakEBdCICOwEIIAogAiAVLwEAakEBdCICOwEKIAogAiAAQcYWai8BAGpBAXQiAjsBDCAKIAIgAEHIFmovAQBqQQF0IgI7AQ4gCiACIABByhZqLwEAakEBdCICOwEQIAogAiAULwEAakEBdCICOwESIAogAiAAQc4Wai8BAGpBAXQiAjsBFCAKIAIgAEHQFmovAQBqQQF0IgI7ARYgCiACIABB0hZqLwEAakEBdCICOwEYIAogAS8BACACakEBdCICOwEaIAogAEHWFmovAQAgAmpBAXQiAjsBHCAKIAIgAEHYFmovAQBqQQF0OwEeIBBBAE4EQANAIAkgD0ECdGoiCC8BAiIABEAgCiAAQQF0aiICIAIvAQAiAkEBajsBACAAQQNxIQZBACEDAkAgAEEESQRAQQAhAAwBCyAAQfz/A3EhB0EAIQBBACEFA0AgAkEDdkEBcSACQQJ2QQFxIAJBAnEgACACQQFxckECdHJyQQF0ciIEQQF0IQAgAkEEdiECIAVBBGoiBSAHRw0ACwsgBgRAA0AgACACQQFxciIEQQF0IQAgAkEBdiECIANBAWoiAyAGRw0ACwsgCCAEOwEACyAPIBBHIQIgD0EBaiEPIAINAAsLC40JAQp/AkAgACgCoC1FBEAgACgCvC0hAwwBCyAAQbktaiEJA0AgBEEDaiELIAAoApgtIARqIgMtAAIhBQJAIAACfyADLwAAIgdFBEAgASAFQQJ0aiIELwECIQMgACAALwG4LSAELwEAIgUgACgCvC0iBHRyIgc7AbgtQRAgA2sgBEgEQCAAIAAoAhQiBEEBajYCFCAEIAAoAghqIAc6AAAgACAAKAIUIgRBAWo2AhQgBCAAKAIIaiAJLQAAOgAAIAAgBUEQIAAoArwtIgRrdjsBuC0gAyAEakEQawwCCyADIARqDAELI5kDIAVqLQAAIgpBAnQiCCABaiIEQYYIai8BACEDIAAgAC8BuC0gBEGECGovAQAiDCAAKAK8LSIGdHIiBDsBuC0gAAJ/QRAgA2sgBkgEQCAAIAAoAhQiBkEBajYCFCAGIAAoAghqIAQ6AAAgACAAKAIUIgRBAWo2AhQgBCAAKAIIaiAJLQAAOgAAIAAgDEEQIAAoArwtIgZrdiIEOwG4LSADIAZqQRBrDAELIAMgBmoLIgM2ArwtIwAhBiAKQRxrQWxPBEAgBSMAQeDBkgFqIAhqKAIAayEFIAACf0EQIAZB8L6SAWogCGooAgAiBmsgA0gEQCAAIAQgBSADdHIiAzsBuC0gACAAKAIUIgRBAWo2AhQgBCAAKAIIaiADOgAAIAAgACgCFCIDQQFqNgIUIAMgACgCCGogCS0AADoAACAAIAVB//8DcUEQIAAoArwtIgNrdiIEOwG4LSADIAZqQRBrDAELIAAgBCAFIAN0ciIEOwG4LSADIAZqCyIDNgK8LQsgAiOYAyAHQQFrIgYgBkEHdkGAAmogB0GBAkkbai0AACIHQQJ0IgpqIggvAQIhBSAAIAQgCC8BACIIIAN0ciIEOwG4LSAAAn9BECAFayADSARAIAAgACgCFCIDQQFqNgIUIAMgACgCCGogBDoAACAAIAAoAhQiA0EBajYCFCADIAAoAghqIAktAAA6AAAgACAIQRAgACgCvC0iA2t2IgQ7AbgtIAMgBWpBEGsMAQsgAyAFagsiAzYCvC0jACEFIAdBBEkNASAGIwBB4MKSAWogCmooAgBrIQdBECAFQfC/kgFqIApqKAIAIgVrIANIBEAgACAEIAcgA3RyIgM7AbgtIAAgACgCFCIEQQFqNgIUIAQgACgCCGogAzoAACAAIAAoAhQiA0EBajYCFCADIAAoAghqIAktAAA6AAAgACAHQf//A3FBECAAKAK8LSIDa3Y7AbgtIAMgBWpBEGsMAQsgACAEIAcgA3RyOwG4LSADIAVqCyIDNgK8LQsgCyIEIAAoAqAtSQ0ACwsgAUGCCGovAQAhBCAAIAAvAbgtIAEvAYAIIgsgA3RyIgU7AbgtQRAgBGsgA0gEQCAAIAAoAhQiA0EBajYCFCADIAAoAghqIAU6AAAgACAAKAIUIgNBAWo2AhQgAyAAKAIIaiAAQbktai0AADoAACAAIAtBECAAKAK8LSIDa3Y7AbgtIAAgAyAEakEQazYCvC0PCyAAIAMgBGo2ArwtC8MLAQx/IAJBAE4EQEEEQQMgAS8BAiIKGyEGQQdBigEgChshAyAAQbktaiEIQX8hBwNAIAohCSABIAsiDEEBaiILQQJ0ai8BAiEKAkACQCAFQQFqIgQgA04NACAJIApHDQAgBCEFDAELAkAgBCAGSARAIAAgCUECdGoiBUH+FGohDSAFQfwUaiEOIAAoArwtIQUDQCANLwEAIQMgACAALwG4LSAOLwEAIgYgBXRyIgc7AbgtIAACf0EQIANrIAVIBEAgACAAKAIUIgVBAWo2AhQgBSAAKAIIaiAHOgAAIAAgACgCFCIFQQFqNgIUIAUgACgCCGogCC0AADoAACAAIAZBECAAKAK8LSIFa3Y7AbgtIAMgBWpBEGsMAQsgAyAFagsiBTYCvC0gBEEBayIEDQALDAELIAACfyAJBEACQCAHIAlGBEAgACgCvC0hAyAEIQUMAQsgACAJQQJ0aiIEQf4Uai8BACEDIAAgAC8BuC0gBEH8FGovAQAiBiAAKAK8LSIEdHIiBzsBuC0gAAJ/QRAgA2sgBEgEQCAAIAAoAhQiBEEBajYCFCAEIAAoAghqIAc6AAAgACAAKAIUIgRBAWo2AhQgBCAAKAIIaiAILQAAOgAAIAAgBkEQIAAoArwtIgRrdjsBuC0gAyAEakEQawwBCyADIARqCyIDNgK8LQsgAC8BuC0gAC8BvBUiByADdHIhBAJAQRAgAC8BvhUiBmsgA0gEQCAAIAQ7AbgtIAAgACgCFCIDQQFqNgIUIAMgACgCCGogBDoAACAAIAAoAhQiA0EBajYCFCADIAAoAghqIAgtAAA6AAAgBiAAKAK8LSIEakEQayEDIAdBECAEa3YhBAwBCyADIAZqIQMLIAAgAzYCvC0gBUH9/wNqIQUgA0EPTgRAIAAgBCAFIAN0ciIDOwG4LSAAIAAoAhQiBEEBajYCFCAEIAAoAghqIAM6AAAgACAAKAIUIgNBAWo2AhQgAyAAKAIIaiAILQAAOgAAIAAgBUH//wNxQRAgACgCvC0iBWt2OwG4LSAFQQ5rDAILIAAgBCAFIAN0cjsBuC0gA0ECagwBCyAALwG4LSEEIAAoArwtIQMgBUEJTARAIAQgAC8BwBUiByADdHIhBAJAQRAgAC8BwhUiBmsgA0gEQCAAIAQ7AbgtIAAgACgCFCIDQQFqNgIUIAMgACgCCGogBDoAACAAIAAoAhQiA0EBajYCFCADIAAoAghqIAgtAAA6AAAgBiAAKAK8LSIEakEQayEDIAdBECAEa3YhBAwBCyADIAZqIQMLIAAgAzYCvC0gBUH+/wNqIQUgA0EOTgRAIAAgBCAFIAN0ciIDOwG4LSAAIAAoAhQiBEEBajYCFCAEIAAoAghqIAM6AAAgACAAKAIUIgNBAWo2AhQgAyAAKAIIaiAILQAAOgAAIAAgBUH//wNxQRAgACgCvC0iBWt2OwG4LSAFQQ1rDAILIAAgBCAFIAN0cjsBuC0gA0EDagwBCyAEIAAvAcQVIgcgA3RyIQQCQEEQIAAvAcYVIgZrIANIBEAgACAEOwG4LSAAIAAoAhQiA0EBajYCFCADIAAoAghqIAQ6AAAgACAAKAIUIgNBAWo2AhQgAyAAKAIIaiAILQAAOgAAIAYgACgCvC0iBGpBEGshAyAHQRAgBGt2IQQMAQsgAyAGaiEDCyAAIAM2ArwtIAVB9v8DaiEFIANBCk4EQCAAIAQgBSADdHIiAzsBuC0gACAAKAIUIgRBAWo2AhQgBCAAKAIIaiADOgAAIAAgACgCFCIDQQFqNgIUIAMgACgCCGogCC0AADoAACAAIAVB//8DcUEQIAAoArwtIgVrdjsBuC0gBUEJawwBCyAAIAQgBSADdHI7AbgtIANBB2oLNgK8LQtBACEFAn8gCkUEQEGKASEDQQMMAQtBBkEHIAkgCkYiBBshA0EDQQQgBBsLIQYgCSEHCyACIAxHDQALCwvnAQEBfyAAIAAoAqAtIgNBAWo2AqAtIAMgACgCmC1qIAE6AAAgACAAKAKgLSIDQQFqNgKgLSADIAAoApgtaiABQQh2OgAAIAAgACgCoC0iA0EBajYCoC0gAyAAKAKYLWogAjoAACABBH8gACAAKAKwLUEBajYCsC0jmQMgAmotAABBAnQgAGpBmAlqIgIgAi8BAEEBajsBACAAI5gDIAFBAWsiAiACQQd2QYACaiABQYECSRtqLQAAQQJ0akGIE2oFIAAgAkECdGpBlAFqCyIBIAEvAQBBAWo7AQAgACgCoC0gACgCpC1GC8kCAQR/IwFBQGoiBCQBIAMoAgAhBgJAIAEoAgAiBUUEQEEBIQUgBEEHaiEADAELIAFBADYCAAsgBEEANgIwIARCADcCKCAEQQA2AgwgBCACNgIIAkAgBEEIaiMAQaC1C2pBOBCmOyIHDQAgBEEANgIYIAQgADYCFEEAIQIDQCACRQRAIAQgBTYCGEEAIQULIAQoAgxFBEAgBCAGNgIMQQAhBgsgBEEIakEAEKg7IgJFBEAgBCgCGCECDAELCyADIAMoAgAgBCgCDCAGams2AgAgBCgCHCEGAkAgBEEHaiAARwRAIAEgBjYCAAwBC0EBIAUgAkF7RhsgBSAGGyEFCyAEQQhqEKo7GkEAIQcCQAJAAkAgAkEFag4IAAEBAQEBAwIBC0F9IQcgBUEAIAQoAhhrRw0CCyACIQcMAQtBfSEHCyAEQUBrJAEgBwstAQF/IwFBEGsiBCQBIAQgAzYCDCAAIAEgAiAEQQxqEMA7IQMgBEEQaiQBIAMLCQAjAEGgtQtqCwUAQZUBCxEAI4ADQQIgAGtBAnRqKAIAC6UBAQF/IAAQ/URBAWoQ40YgABDyRCIAIwBBl/8JahCLRSIBBEAgAUEAOgAACyAAIwBBx4ELahCLRSIBBEAgAUEAOgAACyAAIwBBpJMKahCLRSIBBEAgAUEAOgAACyAAIwBBpusKahCLRSIBBEAgAUEAOgAACyAAIwBB/ccKahCLRSIBBEAgAUEAOgAACyAAEMk7IgFFBEAgABDIOyEBCyAAEORGIAELBwAgABDJOwsHACAAEMU7C+gCAQF/IxkhAQJAIAAjAEHGvgJqEO9ERQ0AIxghASAAIwBB074CahDvREUNACMXIQEgACMAQZgOahDvREUNACMWIQEgACMAQaIOahDvREUNACMVIQEgACMAQa8OahDvREUNACMUIQEgACMAQcfXA2oQ70RFDQAjEyEBIAAjAEGgMWoQ70RFDQAjEiEBIAAjAEHBMWoQ70RFDQAjESEBIAAjAEGtMWoQ70RFDQAjECEBIAAjAEHyOGoQ70RFDQAjDyEBIAAjAEHcOGoQ70RFDQAjDiEBIAAjAEG6IWoQ70RFDQAjDSEBIAAjAEHBwgFqEO9ERQ0AIwwhASAAIwBBr8IBahDvREUNACMLIQEgACMAQaohahDvREUNACMKIQEgACMAQeL/AWoQ70RFDQAjCSEBIAAjAEHNgglqEO9ERQ0AIwghASAAIwBB44IJahDvREUNAEEAIwcgACMAQbO+A2oQ70QbIQELIAELiRgBAX8jrwEhAQJAIAAjAEG69QZqEO9ERQ0AI64BIQEgACMAQZGOBGoQ70RFDQAjrQEhASAAIwBBi4QFahDvREUNACOsASEBIAAjAEHwigRqEO9ERQ0AI6sBIQEgACMAQfmGBGoQ70RFDQAjqgEhASAAIwBB1oYEahDvREUNACOpASEBIAAjAEHK9QZqEO9ERQ0AI6gBIQEgACMAQZPNA2oQ70RFDQAjpwEhASAAIwBBi9wEahDvREUNACOmASEBIAAjAEGe7AZqEO9ERQ0AI6UBIQEgACMAQYigCWoQ70RFDQAjpAEhASAAIwBB4uwGahDvREUNACOjASEBIAAjAEGIvQlqEO9ERQ0AI6IBIQEgACMAQZW9CWoQ70RFDQAjoQEhASAAIwBBqcQBahDvREUNACOgASEBIAAjAEHUlgRqEO9ERQ0AI58BIQEgACMAQYbNA2oQ70RFDQAjngEhASAAIwBB0KcGahDvREUNACOdASEBIAAjAEG+ugVqEO9ERQ0AI5wBIQEgACMAQaLNBWoQ70RFDQAjmwEhASAAIwBBzY4EahDvREUNACOaASEBIAAjAEH8+gpqEO9ERQ0AI5kBIQEgACMAQbf7CmoQ70RFDQAjmAEhASAAIwBB3voKahDvREUNACOXASEBIAAjAEGT+wpqEO9ERQ0AI5YBIQEgACMAQeqvBWoQ70RFDQAjlQEhASAAIwBBvo4EahDvREUNACOUASEBIAAjAEHBnAhqEO9ERQ0AI5MBIQEgACMAQf3/AWoQ70RFDQAjkgEhASAAIwBBmf0BahDvREUNACORASEBIAAjAEHarwVqEO9ERQ0AI5ABIQEgACMAQfH8AWoQ70RFDQAjjwEhASAAIwBBr44EahDvREUNACOOASEBIAAjAEGyrAJqEO9ERQ0AI40BIQEgACMAQfyfCWoQ70RFDQAjjAEhASAAIwBBvM0FahDvREUNACOLASEBIAAjAEHOqAZqEO9ERQ0AI4oBIQEgACMAQaCOBGoQ70RFDQAjiQEhASAAIwBB6M4HahDvREUNACOIASEBIAAjAEHUIWoQ70RFDQAjhwEhASAAIwBB1sIBahDvREUNACOGASEBIAAjAEHb2AFqEO9ERQ0AI4UBIQEgACMAQbjSB2oQ70RFDQAjhAEhASAAIwBB7yFqEO9ERQ0AI4MBIQEgACMAQcfsBWoQ70RFDQAjggEhASAAIwBBuewFahDvREUNACOBASEBIAAjAEG8hgRqEO9ERQ0AI4ABIQEgACMAQcf6CmoQ70RFDQAjfyEBIAAjAEG1nAhqEO9ERQ0AI34hASAAIwBB8P8BahDvREUNACN9IQEgACMAQampBGoQ70RFDQAjfCEBIAAjAEGH/QFqEO9ERQ0AI3shASAAIwBB3vwBahDvREUNACN6IQEgACMAQaSsAmoQ70RFDQAjeSEBIAAjAEHstQlqEO9ERQ0AI3ghASAAIwBB6agFahDvREUNACN3IQEgACMAQY2AAmoQ70RFDQAjdiEBIAAjAEH3gwVqEO9ERQ0AI3UhASAAIwBBkjFqEO9ERQ0AI3QhASAAIwBBvDJqEO9ERQ0AI3MhASAAIwBBt8UDahDvREUNACNyIQEgACMAQZgwahDvREUNACNxIQEgACMAQfkxahDvREUNACNwIQEgACMAQcMwahDvREUNACNvIQEgACMAQfAyahDvREUNACNuIQEgACMAQdP2BWoQ70RFDQAjbSEBIAAjAEGfMmoQ70RFDQAjbCEBIAAjAEHTMmoQ70RFDQAjayEBIAAjAEHA9gVqEO9ERQ0AI2ohASAAIwBBtLoBahDvREUNACNpIQEgACMAQY+LCGoQ70RFDQAjaCEBIAAjAEGTjgZqEO9ERQ0AI2chASAAIwBB4TVqEO9ERQ0AI2YhASAAIwBB1DFqEO9ERQ0AI2UhASAAIwBBhjZqEO9ERQ0AI2QhASAAIwBB4TJqEO9ERQ0AI2MhASAAIwBB4oMFahDvREUNACNiIQEgACMAQZU2ahDvREUNACNhIQEgACMAQZIzahDvREUNACNgIQEgACMAQakwahDvREUNACNfIQEgACMAQebcAGoQ70RFDQAjXiEBIAAjAEHCigRqEO9ERQ0AI10hASAAIwBBgfoIahDvREUNACNcIQEgACMAQemGBGoQ70RFDQAjWyEBIAAjAEHArwVqEO9ERQ0AI1ohASAAIwBBq4YEahDvREUNACNZIQEgACMAQYaOBGoQ70RFDQAjWCEBIAAjAEGu9QZqEO9ERQ0AI1chASAAIwBBn+gFahDvREUNACNWIQEgACMAQcyvBWoQ70RFDQAjVSEBIAAjAEH03gVqEO9ERQ0AI1QhASAAIwBBpIkBahDvREUNACNTIQEgACMAQZ6PAmoQ70RFDQAjUiEBIAAjAEHN6QNqEO9ERQ0AI1EhASAAIwBB3+oHahDvREUNACNQIQEgACMAQfXqB2oQ70RFDQAjTyEBIAAjAEGBvgNqEO9ERQ0AI04hASAAIwBB/BJqEO9ERQ0AI00hASAAIwBBoYsIahDvREUNACNMIQEgACMAQe6fCWoQ70RFDQAjSyEBIAAjAEHM7AZqEO9ERQ0AI0ohASAAIwBBrs0FahDvREUNACNJIQEgACMAQbbsBmoQ70RFDQAjSCEBIAAjAEHrrgRqEO9ERQ0AI0chASAAIwBBiuwGahDvREUNACNGIQEgACMAQe/6CmoQ70RFDQAjRSEBIAAjAEGapQZqEO9ERQ0AI0QhASAAIwBB9TVqEO9ERQ0AI0MhASAAIwBB4d0FahDvREUNACNCIQEgACMAQegxahDvREUNACNBIQEgACMAQaf7CmoQ70RFDQAjQCEBIAAjAEHpsgZqEO9ERQ0AIz8hASAAIwBBvzdqEO9ERQ0AIz4hASAAIwBBv98FahDvREUNACM9IQEgACMAQbw0ahDvREUNACM8IQEgACMAQcyyBmoQ70RFDQAjOyEBIAAjAEGgN2oQ70RFDQAjOiEBIAAjAEGz3wVqEO9ERQ0AIzkhASAAIwBBrzRqEO9ERQ0AIzghASAAIwBBr7IGahDvREUNACM3IQEgACMAQe42ahDvREUNACM2IQEgACMAQaffBWoQ70RFDQAjNSEBIAAjAEGiNGoQ70RFDQAjNCEBIAAjAEGSsgZqEO9ERQ0AIzMhASAAIwBBvDZqEO9ERQ0AIzIhASAAIwBBm98FahDvREUNACMxIQEgACMAQZU0ahDvREUNACMwIQEgACMAQY03ahDvREUNACMvIQEgACMAQds2ahDvREUNACMuIQEgACMAQak2ahDvREUNACMtIQEgACMAQYywBWoQ70RFDQAjLCEBIAAjAEH6rwVqEO9ERQ0AIyshASAAIwBB9bIGahDvREUNACMqIQEgACMAQcw3ahDvREUNACMpIQEgACMAQdiyBmoQ70RFDQAjKCEBIAAjAEGtN2oQ70RFDQAjJyEBIAAjAEG7sgZqEO9ERQ0AIyYhASAAIwBB+zZqEO9ERQ0AIyUhASAAIwBBnrIGahDvREUNACMkIQEgACMAQck2ahDvREUNACMjIQEgACMAQY3ZA2oQ70RFDQAjIiEBIAAjAEHUzABqEO9ERQ0AIxkhASAAIwBB2/4JahDvREUNACMYIQEgACMAQev+CWoQ70RFDQAjFyEBIAAjAEHC/QlqEO9ERQ0AIxYhASAAIwBBz/0JahDvREUNACMVIQEgACMAQd/9CWoQ70RFDQAjFCEBIAAjAEH+/glqEO9ERQ0AIxMhASAAIwBB7f0JahDvREUNACMSIQEgACMAQZT+CWoQ70RFDQAjESEBIAAjAEH9/QlqEO9ERQ0AIxAhASAAIwBBw/4JahDvREUNACMPIQEgACMAQar+CWoQ70RFDQAjDiEBIAAjAEHmkgpqEO9ERQ0AIw0hASAAIwBBkJMKahDvREUNACMMIQEgACMAQfuSCmoQ70RFDQAjCyEBIAAjAEHTkgpqEO9ERQ0AIwohASAAIwBB8McKahDvREUNACMJIQEgACMAQfTqCmoQ70RFDQAjCCEBIAAjAEGP6wpqEO9ERQ0AQQAjByAAIwBB2eoKahDvRBshAQsgAQsMABD6O0EMNgIAQX8LFwAgAARAIABCADcCACAAQgA3AggLQQALDAAQ+jtBPzYCAEF/CzUBAX8gAEEASARAQccADwsCQCAABEBBNCECIABBKkcNAQtBACECIAFFDQAgAUECNgIACyACCwwAEPo7QSw2AgBBAAsEAEEsCwwAEPo7QR02AgBBAAsMABD6O0ECNgIAQX8LDAAQ+jtBLTYCAEF/CwwAEPo7QTQ2AgBBfwsMABD6O0E0NgIAQX8LDAAQ+jtBNDYCAEEACwwAEPo7QTQ2AgBBfwsjACAABH9BHEE/QQMQqkUgAEkbBUEcCyEAEPo7IAA2AgBBfwsMABD6O0E0NgIAQX8LngEBBX8gAEUEQEFrDwsgACMAIgFB/50FaiICKQAANwAAIAAgAUH0nQVqIgMpAAA3AEEgACABQZy5C2oiBCgAADYAggEgACABQYq/C2oiBS8AADsAwwEgACABQea4C2oiASgAADYAhAIgACACKAAHNgAHIAAgAygABzYASCAAIAQoAAM2AIUBIAAgBS0AAjoAxQEgACABKAADNgCHAkEACyQAAn8gAEEqRwRAQbl/IAANARoLQUFBACABQSpHG0EAIAEbCwsSAEEqQbl/IABBKkYbQSogABsLBABBKgsEAEFeCxYAIABBAEwEQEFkDwsgAUEANgIAQQELHAECfyMAQaiJ5AFqIgEoAgAhAiABIAA2AgAgAgsuACABQQhqQQBBkAEQ0D4aIAFBBDYCGCABQgM3AxAgAUECNgIIIAFCATcDAEEACwQAQUELBABBQQsZACAAQQA2AgAgAUEANgIAIAJBADYCAEEACwQAQWULBABBUAsXACADBEAgA0J/NwMAIANCfzcDCAtBAAsSACABQn83AwAgAUJ/NwMIQQALBABBTgsEAEFMCwQAQUwLBABBTAsEAEFMCwQAQUwLBABBTAsIACAAEJEBAAu/AQMEfAF/AX4jAUEQayIHJAEgASsDCCEDIAdBDGogASsDAESkDboZ43uTwKAQ/j69IghCNIinQfcBazYCACAIQv////////8Hg0KAgICAgICA8P8AhL8hBCAHKAIMIQEgAxCyPSEFIAAgBCADEMJEoiABIAJqIgFBAm0iAkEUdEGAgMD/A2qtQiCGvyIDoiABIAJrQRR0QYCAwP8Daq1CIIa/IgaiOQMIIAAgBCAFoiADoiAGojkDACAHQRBqJAELpgECBH0BfyMBQRBrIgckASABKgIEIQMgB0EMaiABKgIAQ7zjIsOSEIk/vCIBQRd2QRNrNgIAIAFB////A3FBgICA+AdyviEEIAcoAgwhASADELM9IQUgACAEIAMQxkSUIAEgAmoiAUECbSICQRd0QYCAgPwDar4iA5QgASACa0EXdEGAgID8A2q+IgaUOAIEIAAgBCAFlCADlCAGlDgCACAHQRBqJAELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC08BAXwgACAAoiIAIAAgAKIiAaIgAERpUO7gQpP5PqJEJx4P6IfAVr+goiABREI6BeFTVaU/oiAARIFeDP3//9+/okQAAAAAAADwP6CgoLYL7AcCAX8GfiMBQfADayIFJAEgBUHgA2ogASACIAEgAhCzSCAFQdADaiAFKQPgAyIGIAUpA+gDIgdCgICAgICAgICQf0Kwy92+kvD71z8Qs0ggBUHAA2ogBSkD0AMgBSkD2ANCAEKi0eHmoJzD3L9/EINHIAVBsANqIAYgByAFKQPAAyAFKQPIAxCzSCAFQaADaiAFKQOwAyAFKQO4A0KAgICAgICAgPAAQsCRhMWrqPngPxCDRyAFQZADaiAGIAcgBSkDoAMgBSkDqAMQs0ggBUGAA2ogBSkDkAMgBSkDmANCgICAgICAgIBAQo6g7LH4hJrlv38Qg0cgBUHwAmogBiAHIAUpA4ADIAUpA4gDELNIIAVB4AJqIAUpA/ACIAUpA/gCQsLtrcba5M3TXULI9szz88+r6T8Qg0cgBUHQAmogBiAHIAUpA+ACIAUpA+gCELNIIAVBwAJqIAUpA9ACIAUpA9gCQvWb8t3E+OPRQkLJj7DU9PKk7b9/EINHIAVBsAJqIAYgByAFKQPAAiAFKQPIAhCzSCAFQaACaiAFKQOwAiAFKQO4AkKas6X14r7tqPsAQomb/vfY3YfxPxCDRyAFQZACaiAGIAcgBSkDoAIgBSkDqAIQs0ggBUGAAmogBSkDkAIgBSkDmAJCqtjytMjyu5dHQvWT3tvP/Mn0v38Qg0cgBUHwAWogBiAHIAUpA4ACIAUpA4gCELNIIAVB4AFqIAUpA/ABIAUpA/gBQr3ikv7/s4CNoH9CgbSAjaCD6Pc/EINHIAVB0AFqIAYgByAFKQPgASAFKQPoARCzSCAFQcABaiAFKQPQASAFKQPYAUKYuf21wa2wi+wAQsGtsIvsgtv6v38Qg0cgBUGwAWogBiAHIAUpA8ABIAUpA8gBELNIIAVBoAFqIAUpA7ABIAUpA7gBQsiq1arVqtWq1QBC1arVqtWqlf0/EINHIAVBkAFqIAYgByAFKQOgASAFKQOoARCzSCAFQfAAaiAGIAdCAEKAgICAgICA/z8Qs0ggBUHgAGpCAEKAgICAgIDA/z8gBSkDcCIIIAUpA3giCRDSSCAFQdAAakIAQoCAgICAgMD/PyAFKQNgIgogBSkDaCILENJIIAVBQGsgBSkDUCAFKQNYIAggCRDSSCAFQTBqIAEgAiADIAQQs0ggBUGAAWogBiAHIAUpA5ABIAUpA5gBELNIIAVBIGogBSkDgAEgBSkDiAEgBSkDMCAFKQM4ENJIIAVBEGogBSkDQCAFKQNIIAUpAyAgBSkDKBCDRyAFIAogCyAFKQMQIAUpAxgQg0cgACAFKQMINwMIIAAgBSkDADcDACAFQfADaiQBCwoAIwBBrInkAWoLEABBBEEBEKVDKAJgKAIAGwsKACMAQbCJ5AFqCwoAIwBBtInkAWoLeQEDfyMBQRBrIgAkAQJAIABBDGogAEEIahCSAQ0AI7QCIAAoAgxBAnRBBGoQ40YiATYCACABRQ0AIAAoAggQ40YiAQRAI7QCIgIoAgAgACgCDEECdGpBADYCACACKAIAIAEQkwFFDQELI7QCQQA2AgALIABBEGokAQsKACMAQYjo7QFqCygAIAFEAAAAAAAAwH+iIABEi90aFWYglsCgEP4+okQAAAAAAADAf6ILHAAgAUMAAAB6lCAAQ7zjIsOSEIk/lEMAAAB6lAsNACAAIAAoAgwRAQAaC9wCAQJ/IwFBIGsiAyQBAn8CQAJAIwBBv7gJaiABLAAAEO1ERQRAEPo7QRw2AgAMAQtBmAkQ40YiAg0BC0EADAELIAJBAEGQARDQPhogAUErEO1ERQRAIAJBCEEEIAEtAABB8gBGGzYCAAsCQCABLQAAQeEARwRAIAIoAgAhAQwBCyAAQQNBABCUASIBQYAIcUUEQCADIAFBgAhyrDcDECAAQQQgA0EQahCUARoLIAIgAigCAEGAAXIiATYCAAsgAkF/NgJQIAJBgAg2AjAgAiAANgI8IAIgAkGYAWo2AiwCQCABQQhxDQAgAyADQRhqrTcDACAAQZOoASADEJUBDQAgAkEKNgJQCyACIwIiAUG3JGo2AiggAiABQbgkajYCJCACIAFBuSRqNgIgIAIgAUG6JGo2AgwjAEGQ7+0Bai0AAUUEQCACQX82AkwLIAIQ20ILIQIgA0EgaiQBIAILDQAjAEHg4ZIBaigCAAtzAQF/QQIhASAAQSsQ7URFBEAgAC0AAEHyAEchAQsgAUGAAXIgASAAQfgAEO1EGyIBQYCAIHIgASAAQeUAEO1EGyIBIAFBwAByIAAtAAAiAEHyAEYbIgFBgARyIAEgAEH3AEYbIgFBgAhyIAEgAEHhAEYbC3kBAX8gAUEAQZABENA+GiABQZx/IABBgIAiQQAQlgEQqUUiADYCPCAAQQBOBH8gAUEJNgIAIAFBfzYCTCABIANBCGs2AjAgASACQQhqNgIsIAEjAiIEQbckajYCKCABIARBuSRqNgIgIAEgBEG6JGo2AgwgAQUgBAsLSAIBfgF/An8gAL0iAUI0iKdB/w9xIgJB/w9HBEBBBCACDQEaQQJBAyABQv///////////wCDUBsPCyABQv////////8Hg1ALCzsBAn8CfyAAvCIBQRd2Qf8BcSICQf8BRwRAQQQgAg0BGkEDQQIgAUH/////B3EbDwsgAUH///8DcUULC0QCAX4BfyABQv///////z+DIQICfyABQjCIp0H//wFxIgNB//8BRwRAQQQgAw0BGkECQQMgACAChFAbDwsgACAChFALC5EKAQF/IwFB4ARrIgMkASADQdAEaiABIAJChsPiz8GDyZeXf0LAmo2XwIWx9L9/ELNIIANBwARqIAMpA9AEIAMpA9gEQqHC5LGr24btjX9Csdjfndjki/k/EINHIANBsARqIAEgAiADKQPABCADKQPIBBCzSCADQaAEaiADKQOwBCADKQO4BEKc8vGKhI+Fopl/Qp276KyxwMj7v38Qg0cgA0GQBGogASACIAMpA6AEIAMpA6gEELNIIANBgARqIAMpA5AEIAMpA5gEQreY9Maa6qONVkKXq9r037mi/T8Qg0cgA0HwA2ogASACIAMpA4AEIAMpA4gEELNIIANB4ANqIAMpA/ADIAMpA/gDQpC34su2iZ2G2QBC74TclYXKwf6/fxCDRyADQdADaiABIAIgAykD4AMgAykD6AMQs0ggA0HAA2ogAykD0AMgAykD2ANC2bmfia+CmLQeQt2IgYnNt6H/PxCDRyADQbADaiABIAIgAykDwAMgAykDyAMQs0ggA0GgA2ogAykDsAMgAykDuANC3MfW497Bq7v6AEKC/JTEguXU/79/EINHIANBkANqIAEgAiADKQOgAyADKQOoAxCzSCADQYADaiADKQOQAyADKQOYA0Ke+rG69cbA2pF/Qs7O7dr58tX/PxCDRyADQfACaiABIAIgAykDgAMgAykDiAMQs0ggA0HgAmogAykD8AIgAykD+AJCwdy8gcvCjfUpQry4lsO85p3/v38Qg0cgA0HQAmogASACIAMpA+ACIAMp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ELNIIARBAWshBCADKQO4AiENIAMpA5gCIQsgAykDsAIhDCADKQOQAiEKDAELIA4gD0K4g9yozLHitIR/QtGFkar7w6T/PxDUR0EATA0AIANBgANqIAggCUIAQoCAgICAgMD/PxCDRyADQeACaiADKQOAAyIIIAMpA4gDIglCgICAgICA4LSEf0LRhZGq+8Pk/79/ELNIIANB0AJqIAAgASADKQPgAiADKQPoAhCDRyADQfACaiAIIAlC87OKkbiSkKU0QofugJeKs4zdPxCzSCAEQQFqIQQgAykD+AIhDSADKQPYAiELIAMpA/ACIQwgAykD0AIhCgsgA0GAAmogCiALIAwgDRDSSCACIAMpA4gCIgA3AwggAiADKQOAAiIBNwMAAkAgBiAAQjCIp0H//wFxa0E0SA0AIANB8AFqIAggCUKAgICAgICQpTRCh+6Al4qzjN0/ELNIIANB0AFqIAogCyADKQPwASIAIAMpA/gBIgEQ0kggA0HAAWogCiALIAMpA9ABIg4gAykD2AEiDxDSSCADQbABaiADKQPAASADKQPIASAAIAEQ0kggA0HgAWogCCAJQpGbp+yx6veCAUK6zM+pxODJuD8Qs0ggA0GgAWogAykD4AEgAykD6AEgAykDsAEgAykDuAEQ0kggA0GQAWogDiAPIAMpA6ABIgwgAykDqAEiDRDSSCACIAMpA5gBIgA3AwggAiADKQOQASIBNwMAIAYgAEIwiKdB//8BcWtB+ABIBEAgDiEKIA8hCwwBCyADQYABaiAIIAlCgICAgICA+IIBQrrMz6nE4Mm4PxCzSCADQeAAaiAOIA8gAykDgAEiACADKQOIASIBENJIIANB0ABqIA4gDyADKQNgIgogAykDaCILENJIIANBQGsgAykDUCADKQNYIAAgARDSSCADQfAAaiAIIAlCkMTs35zO4fu1f0Kuu5PjzriWlL9/ELNIIANBMGogAykDcCADKQN4IAMpA0AgAykDSBDSSCADQSBqIAogCyADKQMwIgwgAykDOCINENJIIAIgAykDKCIANwMIIAIgAykDICIBNwMACyADQRBqIAogCyABIAAQ0kggAyADKQMQIAMpAxggDCANENJIIAIgAykDCDcDGCACIAMpAwA3AxAMAQsgBkH//wFGBEAgA0GABGogACABIAAgARDSSCACIAMpA4gEIgA3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A/ADIAMpA/gDIAEgAhCzSCADQcADaiADKQPQAyADKQPYAyMAQYDikgFqIgQpAwAgBCkDCBDSSCADQbADaiADKQPAAyADKQPIAyABIAIQg0cgA0GgA2ogByAGIAMpA7ADIAMpA7gDENJIIAMpA6gDIQYgAykDoAMMAQsgAkIAUwRAIANB4AJqIAEgAkIAQoCAgICAgMD/PxCDRyADQdACaiADKQPgAiADKQPoAkIAQoCAgICAgID/PxCzSCADQYADaiADKQPQAiIHIAMpA9gCIgYQ00QgAykDiAMhAiADKQOAAyEBIANB8AJqIAcgBhCFPCADQcACaiADKQPwAiADKQP4AiABIAIQs0ggA0GwAmogAykDwAIgAykDyAIjACIEQYDikgFqIgUpAwAgBSkDCBDSSCADQaACaiABIAIgAykDsAIgAykDuAIQg0cgA0GQAmogBEHw4ZIBaiIEKQMAIAQpAwggAykDoAIgAykDqAIQ0kggA0GAAmogAykDkAIiAiADKQOYAiIBIAIgARCDRyADKQOIAiEGIAMpA4ACDAELIANB0AFqQgBCgICAgICAwP8/IAEgAhDSSCADQcABaiADKQPQASADKQPYAUIAQoCAgICAgID/PxCzSCADQfABaiADKQPAASIBIAMpA8gBIgcQ00QgA0GgAWpCACADKQP4ASICQgAgAhCzSCADQZABaiABIAcgAykDoAEgAykDqAEQ0kggA0GwAWogAykD8AEiBiACQgAgAhCDRyADQYABaiADKQOQASADKQOYASADKQOwASADKQO4ARDjRyADQeABaiABIAcQhTwgA0HwAGogAykD4AEgAykD6AEgBiACELNIIANB4ABqIAMpA3AgAykDeCADKQOAASADKQOIARCDRyADQdAAaiADKQNgIAMpA2hCACACEINHIANBQGsgAykDUCICIAMpA1giASACIAEQg0cgAykDSCEGIAMpA0ALNwMAIAAgBjcDCCADQYAEaiQBC34CAn8BfiMBQUBqIgEkASABQgA3AzggAUIANwMoIAEgAK03AzAgAUIANwMgIAFBGGoiAEIANwMAIAFBEGoiAkIANwMAIAFCADcDCCABQgA3AwBBACABQSBqIAEQn0QaIAAoAgAhACACKQMAIQMgAUFAayQBIAMgAEEAR618pwtBAQJ/IwFBEGsiAiQBAkAgAEED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KQNIIQYgAykDQAwBCyADQbACakIAIAFCACABELNIIANBoAJqIAcgCCADKQOwAiADKQO4AhDSSCADQdACaiAGIAFCACABEINHIANBkAJqIAMpA6ACIAMpA6gCIAMpA9ACIAMpA9gCEONHIANB4AJqIAYgASAGIAEQg0cgA0GAAmogAykDkAIiBiADKQOYAiIHIAYgBxCDRyADQdABaiMAIgRBgOKSAWoiBSkDACAFKQMIIAMpA4ACIAMpA4gCENJIIANBwAFqIAMpA+ACIAMpA+gCIAogCRCzSCADQbABaiADKQPAASADKQPIASADKQPQASADKQPYARDSSCADQfABaiAEQfDhkgFqIgQpAwAgBCkDCEIAQoCAgICAgID/PxCzSCADQcACakIAIAFCACABEINHIANB4AFqIAMpA/ABIgEgAykD+AEiBiADKQPAAiADKQPIAhDSSCADQaABaiADKQOwASADKQO4ASADKQPgASADKQPoARDSSCADQZABaiABIAYgAykDoAEgAykDqAEQ0kggAykDmAEhBiADKQOQAQshASAGQoCAgICAgICAgH+FIAYgAkIAUxshAgsgACABNwMAIAAgAjcDCCADQYAEaiQBCygBAX8jAUEQayIDJAEgAyACNgIMIAAgASACEPtFIQIgA0EQaiQBIAILiAQDA3wCfwF+IAC9IgZCIIinQf////8HcSIEQYCAwKAETwRAIABEGC1EVPsh+T8gAKYgAL1C////////////AINCgICAgICAgPj/AFYbDwsCQAJ/IARB///v/gNNBEBBfyAEQYCAgPIDTw0BGgwCCyAAmSEAIARB///L/wNNBEAgBEH//5f/A00EQCAAIACgRAAAAAAAAPC/oCAARAAAAAAAAABAoKMhAEEADAILIABEAAAAAAAA8L+gIABEAAAAAAAA8D+goyEAQQEMAQsgBEH//42ABE0EQCAARAAAAAAAAPi/oCAARAAAAAAAAPg/okQAAAAAAADwP6CjIQBBAgwBC0QAAAAAAADwvyAAoyEAQQMLIQUgACAAoiICIAKiIgEgASABIAEgAUQvbGosRLSiv6JEmv3eUi3erb+gokRtmnSv8rCzv6CiRHEWI/7Gcby/oKJExOuYmZmZyb+goiEDIAIgASABIAEgASABRBHaIuM6rZA/okTrDXYkS3upP6CiRFE90KBm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RAAAAAAAAOA/oiEBCyABmiABIAJCAFMbC3ICAX0CfyAAiyEBAkACfSAAvCICQf////8HcSIDQf////cDTQRAIANBgICA/AJJDQIgASABkiIAIAAgAZRDAACAPyABk5WSDAELIAFDAACAPyABk5UiASABkgsQ8UFDAAAAP5QhAQsgAYwgASACQQBIGwuCAwIDfwJ+IwFBoAFrIgMkASACQv///////////wCDIQYCQCADQRBqAn4gAkIwiKciBEH//wFxIgVB/QdNBEAgBUHHB0kNAiADQdAAaiABIAYgASAGEINHIANBQGsgAykDUCICIAMpA1giByABIAYQs0ggA0HgAGpCAEKAgICAgIDA/z8gASAGENJIIANBMGogAykDQCADKQNIIAMpA2AgAykDaBDjRyADQSBqIAIgByADKQMwIAMpAzgQg0cgAykDKCEGIAMpAyAMAQsgA0GQAWpCAEKAgICAgIDA/z8gASAGENJIIANBgAFqIAEgBiADKQOQASADKQOYARDjRyADQfAAaiADKQOAASIGIAMpA4gBIgEgBiABEINHIAMpA3ghBiADKQNwCyAGEPJBIAMgAykDECADKQMYQgBCgICAgICAgP8/ELNIIAMpAwghBiADKQMAIQELIAAgATcDACAAIAYgBkKAgICAgICAgIB/hSAEQYCAAkkbNwMIIANBoAFqJAELphQCBn8EfiMBQbADayIEJAECQCACQjCIpyIIQf//AXEiA0HxgAFPBEAgASACEIQ8RQ0BQtGFkar7w+T/P0LRhZGq+8Pk/79/IAhBgIACSRshAkK4g9yozLHitIR/IQEMAQsCfyACQiiIp0H/AXEgA0EIdHIiBUG/+/8BTQRAQX8gA0HG/wBPDQEaDAILIARBoANqIAEgAhCdPyAEKQOoAyECIAQpA6ADIQEgBUGv/v8BTQRAIAVB3/z/AU0EQCAEQYACaiABIAIgASACEINHIARB8AFqIAQpA4ACIAQpA4gCQgBCgICAgICAwP+/fxCDRyAEQZACaiABIAJCAEKAgICAgICAgMAAEINHIARB4AFqIAQpA/ABIAQpA/gBIAQpA5ACIAQpA5gCEONHIAQpA+gBIQIgBCkD4AEhAUEADAILIARBwAJqIAEgAkIAQoCAgICAgMD/v38Qg0cgBEGwAmogASACQgBCgICAgICAwP8/EINHIARBoAJqIAQpA8ACIAQpA8gCIAQpA7ACIAQpA7gCEONHIAQpA6gCIQIgBCkDoAIhAUEBDAELIAVBt4CAAk0EQCAEQYADaiABIAJCAEKAgICAgIDg/79/EINHIARB8AJqIAEgAkIAQoCAgICAgOD/PxCzSCAEQeACaiAEKQPwAiAEKQP4AkIAQoCAgICAgMD/PxCDRyAEQdACaiAEKQOAAyAEKQOIAyAEKQPgAiAEKQPoAhDjRyAEKQPYAiECIAQpA9ACIQFBAgwBCyAEQZADakIAQoCAgICAgMD/v38gASACEONHIAQpA5gDIQIgBCkDkAMhAUEDCyEGIARBsAFqIAEgAiABIAIQs0ggBEGgAWogBCkDsAEiCyAEKQO4ASIMIAsgDBCzSCAEKQOgASEJIAQpA6gBIQojAUHgAmsiAyQBIANB0AJqIAkgCkKgt6r11fHM5/0AQvzP3IDu6Ib8PxCzSCADQcACaiADKQPQAiADKQPYAkLbhN+u1+XzjGFC7qnO2I7z0/w/EINHIANBsAJqIAkgCiADKQPAAiADKQPIAhCzSCADQaACaiADKQOwAiADKQO4AkLi37vymsy91GRCm+yv34+P6Pw/EINHIANBkAJqIAkgCiADKQOgAiADKQOoAhCzSCADQYACaiADKQOQAiADKQOYAkK3prr6gpHO9r5/Qo2XsvDu//T8PxCDRyADQfABaiAJIAogAykDgAIgAykDiAIQs0ggA0HgAWogAykD8AEgAykD+AFCo9yhhbqEnaNyQu+Rj8ydiIL9PxCDRyADQdABaiAJIAogAykD4AEgAykD6AEQs0ggA0HAAWogAykD0AEgAykD2AFCqer3gN39gc3FAEL3sYnchO2L/T8Qg0cgA0GwAWogCSAKIAMpA8ABIAMpA8gBELNIIANBoAFqIAMpA7ABIAMpA7gBQpuXpaHQ243BrH9C7OzBrMiFmf0/EINHIANBkAFqIAkgCiADKQOgASADKQOoARCzSCADQYABaiADKQOQASADKQOYAUKM8MOPl/LegY5/QuK1qN6G5av9PxCDRyADQfAAaiAJIAogAykDgAEgAykDiAEQs0ggA0HgAGogAykDcCADKQN4Qvmpq8bTlPSrEEKRosSIkaLE/T8Qg0cgA0HQAGogCSAKIAMpA2AgAykDaBCzSCADQUBrIAMpA1AgAykDWEKW6/Wy27DQi90AQvSil7rRi939PxCDRyADQTBqIAkgCiADKQNAIAMpA0gQs0ggA0EgaiADKQMwIAMpAzhC4oblg8mkkskkQsmkksmkkon+PxCDRyADQRBqIAkgCiADKQMgIAMpAygQs0ggAyADKQMQIAMpAxhC0arVqtWq1arVAELVqtWq1arV/j8Qg0cgBEHQAWoiByADKQMINwMIIAcgAykDADcDACADQeACaiQBIARBkAFqIAsgDCAEKQPQASAEKQPYARCzSCMBQeACayIDJAEgA0HQAmogCSAKQqzy54aY2ZjnhX9C/+OB2pTblPu/fxCzSCADQcACaiADKQPQAiADKQPYAkLl+sOQmYnom7F/QuH1rduzx778v38Qg0cgA0GwAmogCSAKIAMpA8ACIAMpA8gCELNIIANBoAJqIAMpA7ACIAMpA7gCQtf6iM392P+3zQBC1JeEm5Wl4Py/fxCDRyADQZACaiAJIAogAykDoAIgAykDqAIQs0ggA0GAAmogAykDkAIgAykDmAJC78L0gYrN68X8AEL7o+iOzMLu/L9/EINHIANB8AFqIAkgCiADKQOAAiADKQOIAhCzSCADQeABaiADKQPwASADKQP4AULjjuXJmpvr/vkAQsOstfmBj/z8v38Qg0cgA0HQAWogCSAKIAMpA+ABIAMpA+gBELNIIANBwAFqIAMpA9ABIAMpA9gBQs6b4LTN0sCw0QBCluGDirnPhv2/fxCDRyADQbABaiAJIAogAykDwAEgAykDyAEQs0ggA0GgAWogAykDsAEgAykDuAFCy9Kn3pm1+fnYAELUqdej4fWR/b9/EINHIANBkAFqIAkgCiADKQOgASADKQOoARCzSCADQYABaiADKQOQASADKQOYAUKVu8vo8piXxfgAQrKsmIyGw6H9v38Qg0cgA0HwAGogCSAKIAMpA4ABIAMpA4gBELNIIANB4ABqIAMpA3AgAykDeEKwhpbgxP+hz4h/QuHDh4+evLj9v38Qg0cgA0HQAGogCSAKIAMpA2AgAykDaBCzSCADQUBrIAMpA1AgAykDWEKQzIqvl4PjiDtCsafsibvizv2/fxCDRyADQTBqIAkgCiADKQNAIAMpA0gQs0ggA0EgaiADKQMwIAMpAzhCo8a/lZy4nI5HQvG4nI7H4/H9v38Qg0cgA0EQaiAJIAogAykDICAD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IAAgA5ogAyABGzkDACACQTBqJAELdwICfwJ9IwFBIGsiAiQBIAEqAgQiBLwhAyABKgIAIQUgAiAEOAIUIAIgBTgCECACIAIpAhA3AwggAkEYaiACQQhqEO48IAIqAhwhBCAAIAIqAhgiBSAFjCADQQBOIgEbOAIEIAAgBIwgBCABGzgCACACQSBqJAEL6AECBH8DfiMBQeAAayICJAEgASkDECIGIAEpAxgiBxCgPCEDIAEpAwAhCCACQShqIgQgASkDCDcDACACQTBqIgEgBjcDACACQThqIgUgBzcDACACIAQpAwA3AwggAiABKQMANwMQIAIgBSkDADcDGCACIAg3AyAgAiACKQMgNwMAIAJBQGsgAhDyPCACKQNYIQYgAikDSCEHIAIpA1AhCCAAIAIpA0A3AxAgACAINwMAIAAgB0KAgICAgICAgIB/hSAHIAMbNwMYIAAgBiAGQoCAgICAgICAgH+FIAMbNwMIIAJB4ABqJAEL1wECAX8EfiMBQfAAayICJAEgASkDGCEDIAEpAwAhBCABKQMQIQUgAiABKQMIIgY3AzggAiADNwNIIAJBQGsgBTcDACACIAM3AyggAiAFNwMgIAIgBjcDGCACIAQ3AzAgAiAENwMQIAJB0ABqIAJBEGoQ/DwgAkK4g9yozLHitIR/QtGFkar7w+T/PyACKQNQIAIpA1gQ0kggAikDaCEDIAAgAikDYDcDECAAIANCgICAgICAgICAf4U3AxggACACKQMANwMAIAAgAikDCDcDCCACQfAAaiQBCwoAIAAgARDbQRoLDwAgACsDCCAAKwMAENI8Cw8AIAAqAgQgACoCABDTPAtHAgF/AX4jAUEQayICJAEgAiABKQMQIAEpAxggASkDACABKQMIENU8IAIpAwAhAyAAIAIpAwg3AwggACADNwMAIAJBEGokAQvOAQICfwJ8IwFB4ABrIgIkASACQcgAaiIDIAErAwAiBEQAAAAAAAAAwKIgASsDCCIFojkDACACIAMpAwA3AxggAkQAAAAAAADwPyAEIAWhIAQgBaCioTkDQCACIAIpA0A3AxAgAkHQAGogAkEQahDvPSACQShqIgEgBCACKwNYoDkDACACIAEpAwA3AwggAiACKwNQIAWhOQMgIAIgAikDIDcDACACQTBqIAIQoz0gAisDMCEEIAAgAisDODkDACAA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AikDoAEgAikDqAEQ40cgAikDmAIhBCACKQOQAiEFIAJBgAJqIAIpA2AgAikDaBD7QSACQRBqIAIpA4ACIAIpA4gCQgBCgICAgICAwP4/ELNIIAJBIGogBSAEENtIEPRHIAIgAikDECACKQMYENtIEPRHIAAgAikDKDcDCCAAIAIpAyA3AwAgACACKQMINwMYIAAgAikDADcDECACQbACaiQBCwQAIAMLBABBfwuDAgMCfAJ/AX4gAL0iBUIgiKdB/////wdxIgNBgIDA/wdPBEAgACAAoA8LQZPx/dQCIQQCQCADQf//P00EQEGT8f3LAiEEIABEAAAAAAAAUEOivSIFQiCIp0H/////B3EiA0UNAQsgBUKAgICAgICAgIB/gyADQQNuIARqrUIghoS/IgIgAqIgAiAAo6IiASABIAGioiABRNft5NQAsMI/okTZUee+y0Tov6CiIAEgAUTC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAKivUKAgICAfINCgICAgAh8vyIBIAAgASABoqMiACABoSABIAGgIACgo6IgAaAhAAsgAAuuAQIEfAN/IAC8IgZB/////wdxIgVBgICA/AdPBEAgACAAkg8LQfKzxNICIQcCQCAFQf///wNNBEAgBUUNAUHys8SyAiEHIABDAACAS5S8IgZB/////wdxIQULIAC7IgIgAqAiBCAFQQNuIAdqIAZBgICAgHhxcr67IgEgAaIgAaIiA6AgAaIgAyADIAKgoKMiASAEIAEgASABoqIiAaCiIAEgASACoKCjtiEACyAAC/cFBAR/An4EfAF9IwFBgAJrIgMkAQJAAkAgAkIwiKciBUH//wFxIgQEQCAEQf//AUcNASADQeABaiABIAIgASACEINHIAMpA+gBIQIgAykD4AEhAQwCCyADQfABaiABIAJCAEKAgICAgIDAu8AAELNIIAMpA/gBIghCMIinQf//AXEiBEUNASADKQPwASEBIARB+ABrIQQgCCECCyAFQYCAAnEhBiACQv///////z+DQoCAgICAgMD/P4QhBwJAAkACQCAEQf//AGsiBcFBA29BAmoOBQABAgABAgsgA0HAAWogASAHIAEgBxCDRyAEQYCAAWshBSADKQPIASEHIAMpA8ABIQEMAQsgA0HQAWogASAHQgBCgICAgICAwIDAABCzSCAEQYGAAWshBSADKQPYASEHIAMpA9ABIQELIAEgBxDbSCENIANBsAFqIAEgBxDaSCIKIAqgIgwgDbxB/////wdxQQNuQfKzxNICar67IgkgCaIgCaIiC6AgCaIgCyALIAqgoKMiCSAMIAkgCSAJoqIiCaCiIAkgCSAKoKCjRAAAAAAAACA9oBDwRyADQaABaiADKQOwASADKQO4AUIAQoCAgICAgMCdwAAQg0cgA0GQAWogAykDoAEgAykDqAFCAEKAgICAgIDAnUAQg0cgA0GAAWogAykDkAEiAiADKQOYASIIIAIgCBCzSCADQfAAaiABIAcgAykDgAEgAykDiAEQ40cgA0HQAGogAiAIIAIgCBCDRyADQeAAaiADKQNwIgEgAykDeCIHIAIgCBDSSCADQUBrIAMpA1AgAykDWCABIAcQg0cgA0EwaiADKQNgIAMpA2ggAykDQCADKQNIEONHIANBIGogAiAIIAMpAzAgAykDOBCzSCADQRBqIAMpAyAgAykDKCACIAgQg0cgAyADKQMQIAMpAxhCACAGIAXBQQNtQf//AGpyrUIwhhCzSCADKQMIIQIgAykDACEBCyAAIAE3AwAgACACNwMIIANBgAJqJAELagICfwF8IwFBMGsiAiQBIAErAwghBCACQRhqIgMgASsDADkDACACIAMpAwA3AwggAiAEmjkDECACIAIpAxA3AwAgAkEgaiACEIo9IAIrAyAhBCAAIAIrAyg5AwggACAEOQMAIAJBMGokAQtQAgF/AX0jAUEgayICJAEgASoCBCEDIAIgASoCADgCFCACIAOMOAIQIAIgAikCEDcDCCACQRhqIAJBCGoQiz0gACACKQIYNwIAIAJBIGokAQuNBQMEfAV/AX4jAUEwayIGJAEgASsDCCICvSILQiCIp0H/////B3EhByALpyEIAkACQCABKwMAIgO9IgtCIIinIglB/////wdxIgFB//+//wdLDQAgB0H//7//B0sNACAHIAhyRQRAIAMgAqIhAiADELQ9IQQMAgsgAUH//9eBBE0EQCADELQ9IAIQsj2iIQQgAxDHRCACEMJEoiECDAILIAFBwdyYhARNBEAgA5kQ/j5EAAAAAAAA4D+iIgUgAhCyPaIhBCAFIAMQrz0gAhDCRKIhAgwCCyABQan32oQETQRAIAZBGGoiASACOQMAIAYgASkDADcDCCAGIAOZOQMQIAYgBikDEDcDACAGQSBqIAZBfxDwOyAGKwMgIQQgBisDKEQAAAAAAADwPyADEK89oiECDAILIAIQsj0hBCADRAAAAAAAAOB/oiIDIAIQwkSiIQIgBCADIAOioiEEDAELAkAgASALpyIKcg0AIAdBgIDA/wdJDQBEAAAAAAAAAAAgAyACIAKhIgSiEK89IQIMAQsCQCAHIAhyDQAgAUGAgMD/B0kNACADIAOiIQQgCUH//z9xIApyRQRAIAJEAAAAAAAAAAAgAxCvPaIhAgwCC0QAAAAAAAAAACADIAOgIAKiEK89IQIMAQsCQCABQf//v/8HSw0AIAdBgIDA/wdJDQAgAyACIAKhIgSiIQIMAQsCQCABQYCAwP8HSQ0AIAlB//8/cSAKcg0AIAMgA6IhBCAHQYCAwP8HTwRAIAMgAiACoaIhAgwCCyAEIAIQsj2iIQQgAyACEMJEoiECDAELIAMgA6AgAiACoSIEoiECIAMgA6IgBKIhBAsgACACOQMIIAAgBDkDACAGQTBqJAELwwQCBH0DfyMBQSBrIgYkASABKgIEIgK8Qf////8HcSEHAkACQCABKgIAIgO8IghB/////wdxIgFB////+wdLDQAgB0H////7B0sNACAHRQRAIAMgApQhAiADELU9IQQMAgsgAUH//7+IBE0EQCADELU9IAIQsz2UIQQgAxDIRCACEMZElCECDAILIAFBl+TFlQRNBEAgA4sQiT9DAAAAP5QiBSACELM9lCEEIAUgAxCwPSACEMZElCECDAILIAFB5uOCmgRNBEAgBiACOAIUIAYgA4s4AhAgBiAGKQIQNwMIIAZBGGogBkEIakF/EPE7IAYqAhghBCAGKgIcQwAAgD8gAxCwPZQhAgwCCyACELM9IQQgA0MAAAB/lCIDIAIQxkSUIQIgBCADIAOUlCEEDAELAkAgAQ0AIAdBgICA/AdJDQBDAAAAACADIAIgApMiBJQQsD0hAgwBCwJAIAcNACABQYCAgPwHSQ0AIAMgA5QhBCAIQf///wNxRQRAIAJDAAAAACADELA9lCECDAILQwAAAAAgAyADkiAClBCwPSECDAELAkAgAUH////7B0sNACAHQYCAgPwHSQ0AIAMgAiACkyIElCECDAELIAMgA5QhBAJAIAFBgICA/AdJDQAgCEH///8DcQ0AIAdBgICA/AdPBEAgAyACIAKTlCECDAILIAQgAhCzPZQhBCADIAIQxkSUIQIMAQsgAyADkiACIAKTIgOUIQIgBCADlCEECyAAIAI4AgQgACAEOAIAIAZBIGokAQupAQICfwJ+IwFB0ABrIgIkASABKQMIIQQgASkDACEFIAJBOGoiAyABKQMQIAEpAxgQ2kg5AwAgAiADKQMANwMoIAIgBSAEENpIOQMwIAIgAikDMDcDICACQUBrIAJBIGoQij0gAiACKwNAEPBHIAJBEGogAisDSBDwRyAAIAIpAxg3AxggACACKQMQNwMQIAAgAikDCDcDCCAAIAIpAwA3AwAgAkHQAGokAQu2AQIBfwR+IwFB4ABrIgIkASABKQMYIQUgASkDECEEIAEpAwAhAyACIAEpAwgiBjcDOCACIAM3AzAgAiAGNwMYIAIgAzcDECACIAVCgICAgICAgICAf4UiAzcDKCACIAM3AwggAiAENwMgIAIgBDcDACACQUBrIAIQjD0gAikDSCEEIAIpA1ghAyACKQNAIQUgACACKQNQNwMQIAAgAzcDGCAAIAU3AwAgACAENwMIIAJB4ABqJAELBQAgAJsLBQAgAI0L+AICA38CfiMBQfAAayIDJAECQCABIAJCAEIAENNHRQ0AIAJCMIinIgRB//8BcSIFQe6AAUsNACAFQf7/AE0EQEKAgICAgIDA/z9CgICAgICAgICAfyAEQYCAAkkbIQJCACEBDAELIANB4ABqIAEgAkIAQoCAgICAgMC3wAAQg0cgA0HQAGogAykDYCADKQNoQgBCgICAgICAwLdAEINHIANBQGsgASACQgBCgICAgICAwLdAEINHIANBMGogAykDQCADKQNIQgBCgICAgICAwLfAABCDRyADQSBqIAMpA1AgAykDMCAEQYCAAkkiBBsgAykDWCADKQM4IAQbIAEgAhDSSCADQRBqIAMpAyAiBiADKQMoIgcgASACEINHIAYgB0IAQgAQ00chBCADKQMYIQIgAykDECEBIARBAE4NACADIAEgAkIAQoCAgICAgMD/PxCDRyADKQMIIQIgAykDACEBCyAAIAE3AwAgACACNwMIIANB8ABqJAELxgIDA3wEfwF+IwFBMGsiBSQBIAErAwAhAwJAIAErAwgiAr0iCUIgiKdB/////wdxIgEgCadyRQRAIAMQ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ACAHIAQgByAEENVHRQ0AIANB4AFqIAsgCSAKIAggDCANIA4gDxCySCADKQP4ASEEIAMpA+gBIQYgAykD8AEhByADKQPgASEFCyADIAY3A6gBIAMgBzcDsAEgAyAENwO4ASADIAY3AwggAyAHNwMQIAMgBDcDGCADIAU3A6ABIAMgBTcDACADQcABaiADEJM9IAMpA8gBIQUgAykD2AEhBiADKQPAASEEIAAgAykD0AE3AxAgACAGNwMYIAAgBDcDACAAIAU3AwggA0HAAmokAQtwAQJ8IAAgASsDACICvUL///////////8Ag0KAgICAgICA+P8AUiABKwMIIgO9Qv///////////wCDQoCAgICAgID4/wBScQR8IAMFRAAAAAAAAPB/IQJEAAAAAAAAAAAgAxCvPQs5AwggACACOQMAC1QBAn0gACABKgIAIgK8Qf////8HcUGAgID8B0cgASoCBCIDvEH/////B3FBgICA/AdHcQR9IAMFQwAAgH8hAkMAAAAAIAMQsD0LOAIEIAAgAjgCAAuWAQICfwR+IwFBEGsiAiQBIAEpAwAiBiABKQMIIgcQhDwhAyABKQMYIQQgASkDECEFAkAgA0EBRwRAIAUgBBCEPEEBRw0BC0IAIQYgAkIAQgAgBSAEELE9IAIpAwghBEKAgICAgIDA//8AIQcgAikDACEFCyAAIAU3AxAgACAGNwMAIAAgBDcDGCAAIAc3AwggAkEQaiQBCwcAIAArAwALBwAgACoCAAsWACAAIAEpAwg3AwggACABKQMANwMACykBAX8jAUEQayICJAEgAiABNgIAIABBwQQgAhDcQiEBIAJBEGokASABCxEAIAAgASMAQdDq7QFqENY9C+ICAQJ/IwFBoANrIgMkASAAIAEgAkEQEMQ9IQIgA0HDAmojACIEQbI5akEeEM4+GiACBH8gAyABLAACIgE6AMUCIwAiBEHw+5IBaiABIARqQd/7kgFqLQAAQQFxQSJsagUgBEHw+5IBagshBCADQeECaiIBQdUAQT8Q0D4aQQAhACADQQA6AJ8DAn9BACMAIANBwwJqIAFBARDEPSABRw0AGkEAIAEgA0HDAmpBHRCWQg0AGiADQf4CaiAEQSIQlkJFCyEEIwBB360LaiIBIANB8AFqIANBoAFqQQIQxT0gASADQdAAaiADQQQQxT0gAyAD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akEHEIJFRQRAIAEsAAoQhUFFDQEgAUEKaiADQagBakEKEJhFIQEgAygCqAEiBC0AAEEkRw0BQegHIQggAUHoB08EQCABIQggAUGAreIETw0CCyADIAg2AhAgA0EgaiMAQY6aDmogA0EQahDORBogBEEBaiEGC0EAIQEDQAJAAkACQAJAIAEgBmotAAAiBEEjTQRAIARFDQEgBEEKRw0DDAYLIARBJEcNAQsgASEEDAILIARBOkYNAwtBECEEIAFBAWoiAUEQRw0BCwsgA0GoAWoQ2T0gA0GoAWogACAFENo9IANBqAFqIAYgBBDaPSADQagBaiAAIAUQ2j0gA0GoAWogA0GAAWoQ2z0gA0GoAWoQ2T0gA0GoAWogACAFENo9IANBqAFqIAYgBBDaPSADQagBaiAFIANBgAFqENw9AkAgBQRAIAUhAQNAAkAgAUEBcQRAIANBqAFqIANBgAFqQSAQ2j0MAQsgA0GoAWogACAFENo9CyABQQFLIQcgAUEBdiEBIAcNAAsgA0GoAWogA0GAAWoQ2z0gA0GoAWoQ2T0gBUUNAUEAIQEDQCADQagBaiAAIAUQ2j0gAUEBaiIBIAVHDQALDAELIANBqAFqIANBgAFqENs9IANBqAFqENk9CyADQagBaiADQeAAahDbPSADQagBahDZPUEAIQEDQCADQagBaiAGIAQQ2j0gAUEBaiIBIAMtAIABQRBqSQ0ACyADQagBaiADQUBrENs9QQAhAQNAIANBqAFqENk9AkAgAUEBcSIABEAgA0GoAWogBSADQeAAahDcPQwBCyADQagBaiADQYABakEgENo9CyABQQNwBEAgA0GoAWogA0FAayAEENo9CyABQQdwBEAgA0GoAWogBSADQeAAahDcPQsCQCAABEAgA0GoAWogA0GAAWpBIBDaPQwBCyADQagBaiAFIANB4ABqENw9CyADQagBaiADQYABahDbPSABQQFqIgEgCEcNAAsgAyAGNgIIIAMgBDYCBCADIANBIGo2AgAgAiMAQaSaDmogAxDORCACaiEEQQAhAQNAIAQjAEGg2JMBaiABQQNsaiIFLQABIANBgAFqai0AAEEIdCAFLQAAIANBgAFqai0AAEEQdHIgBS0AAiADQYABamotAAByQQQQ3T0hBCABQQFqIgFBCkcNAAsgBCADLwGeAUEDEN09QQA6AAAg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A0AgA0GIAmogACAEEOM9IAFBAWoiASAERw0ACwwBCyADQYgCaiADQcABahDkPSADQYgCahDiPQsgA0GIAmogA0GAAWoQ5D0gA0GIAmoQ4j1BACEAA0AgA0GIAmogBiAFEOM9IABBAWoiACADLQDAAUEQakkNAAsgA0GIAmogA0FAaxDkPUEAIQADQCADQYgCahDiPQJAIABBAXEiAQRAIANBiAJqIAQgA0GAAWoQ5T0MAQsgA0GIAmogA0HAAWpBwAAQ4z0LIABBA3AEQCADQYgCaiADQUBrIAUQ4z0LIABBB3AEQCADQYgCaiAEIANBgAFqEOU9CwJAIAEEQCADQYgCaiADQcABakHAABDjPQwBCyADQYgCaiAEIANBgAFqEOU9CyADQYgCaiADQcABahDkPSAAQQFqIgAgCEcNAAsgAyAGNgIIIAMgBTYCBCADIANBIGo2AgAgAiMAQZmaDmogAxDORCACaiEBQQAhBANAIAEjAEHQ3JMBaiAEQQNsaiIALQABIANBwAFqai0AAEEIdCAALQAAIANBwAFqai0AAEEQdHIgAC0AAiADQcABamotAAByQQQQ5j0hASAEQQFqIgRBFUcNAAsgASADLQD/AUECEOY9QQA6AAAgAiEHCyADQdADaiQBIAcLigEAIABCiJLznf/M+YTqADcDCCAAQgA3AwAgAEFAa0L5wvibkaOz8NsANwMAIABC6/qG2r+19sEfNwM4IABCn9j52cKR2oKbfzcDMCAAQtGFmu/6z5SH0QA3AyggAELx7fT4paf9p6V/NwMgIABCq/DT9K/uvLc8NwMYIABCu86qptjQ67O7fzcDEAueAQIDfwF+IAAgACkDACIGIAKtfDcDACAGp0H/AHEiAwRAIABByABqIgUgA2ohBCACQYABIANrIgNJBEAgBCABIAIQzj4aDwsgBCABIAMQzj4aIAAgBRDnPSACIANrIQIgASADaiEBCyACQYABTwRAA0AgACABEOc9IAFBgAFqIQEgAkGAAWsiAkH/AEsNAAsLIABByABqIAEgAhDOPhoLyQICBH8CfiAAQcgAaiICIAAoAgBB/wBxIgRqQYABOgAAIARBAWohAyAEQfAATwRAIAIgA2pBACAEQf8AcxDQPhogACACEOc9QQAhAwsgAiADakEAQfgAIANrENA+GiAAIAApAwAiBkIDhiIHPADHASAAIAZCBYg8AMYBIAAgBkINiDwAxQEgACAGQhWIPADEASAAIAZCHYg8AMMBIAAgBkIliDwAwgEgACAGQi2IPADBASAAIAZCNYg8AMABIAAgBzcDACAAIAIQ5z0DQCABIAVBA3QiA2oiAiAAIANqIgQxAA88AAAgAiAEMwEOPAABIAIgBEEIaiIDKQMAQiiIPAACIAIgBDUCDDwAAyACIAMpAwBCGIg8AAQgAiADKQMAQhCIPAAFIAIgAykDAEIIiDwABiACIAMpAwA8AAcgBUEBaiIFQQhHDQALCy4AIAFBwQBPBEADQCAAIAJBwAAQ4z0gAUFAaiIBQcAASw0ACwsgACACIAEQ4z0LRwEBfyACQQBKBEADQCAAIwBBkOKTAWogAUE/cWotAAA6AAAgAUEGdiEBIABBAWohACACQQFLIQMgAkEBayECIAMNAAsLIAALtwQCEn4DfyMBQYAFayIWJAEDQCAWIBRBA3QiFWogASAVaikAACICQjiGIAJCgP4Dg0IohoQgAkKAgPwHg0IYhiACQoCAgPgPg0IIhoSEIAJCCIhCgICA+A+DIAJCGIhCgID8B4OEIAJCKIhCgP4DgyACQjiIhISENwMAIBRBAWoiFEEQRw0AC0EQIRUgFikDACECA0AgFiAVQQN0aiIUIBRBEGspAwAiA0IGiCADQRMQ6D2FIANBPRDoPYUgFEE4aykDAHwgAnwgFEH4AGspAwAiAkIHiCACQQEQ6D2FIAJBCBDoPYV8NwMAIBVBAWoiFUHQAEcNAAtBACEUIABBQGspAwAiDCEEIAApAzgiDSEGIAApAzAiDiELIAApAygiDyEHIAApAyAiECEIIAApAxgiESEFIAApAxAiEiECIAApAwgiEyEJA0AgByIDIAYiCiALIgaFgyAKhSAEfCADQQ4Q6D0gA0ESEOg9hSADQSkQ6D2FfCAUQQN0IhUjAEGQ3ZMBamopAwB8IBUgFmopAwB8IgQgCHwhByAEIAUiCCACIgUgCSIChIMgAiAFg4R8IAJBHBDoPSACQSIQ6D2FIAJBJxDoPYV8IQkgCiEEIAMhCyAUQQFqIhRB0ABHDQALIAAgCiAMfDcDQCAAIAYgDXw3AzggACADIA58NwMwIAAgByAPfDcDKCAAIAggEHw3AyAgACAFIBF8NwMYIAAgAiASfDcDECAAIAkgE3w3AwggFkGABWokAQsIACAAIAGtigtrAgJ/AXwjAUEwayICJAEgASsDCCEEIAJBGGoiAyABKwMAOQMAIAIgAykDADcDCCACIASaOQMQIAIgAikDEDcDACACQSBqIAIQ6z0gAisDICEEIAAgAisDKDkDACAAIASaOQMIIAJBMGokAQtfAgF/AX0jAUEgayICJAEgASoCBCEDIAIgASoCADgCFCACIAOMOAIQIAIgAikCEDcDCCACQRhqIAJBCGoQ7D0gAioCGCEDIAAgAioCHDgCACAAIAOMOAIEIAJBIGokAQvvBAMEfAV/AX4jAUEwayIGJAEgASsDCCICvSILQiCIp0H/////B3EhByALpyEIAkACQCABKwMAIgO9IgtCIIinIglB/////wdxIgFB//+//wdLDQAgB0H//7//B0sNACAHIAhyRQRAIAMQx0QhBAwCCyABQf//14EETQRAIAMQx0QgAhCyPaIhBCADELQ9IAIQwkSiIQIMAgsgAUHB3JiEBE0EQCADmRD+PkQAAAAAAADgP6IiBSADEK89IAIQsj2iIQQgBSACEMJEoiECDAILIAFBqffahARNBEAgBkEYaiIBIAI5AwAgBiABKQMANwMIIAYgA5k5AxAgBiAGKQMQNwMAIAZBIGogBkF/EPA7IAYrAyghAiAGKwMgRAAAAAAAAPA/IAMQrz2iIQQMAgsgA0QAAAAAAADgf6IiAyACELI9oiEEIAMgA6IgAhDCRKIhAgwBCwJAIAEgC6ciCnINACAHQYCAwP8HSQ0ARAAAAAAAAAAAIAMgAiACoSICohCvPSEEDAELAkACQCAHIAhyDQAgAUGAgMD/B0kNACAJQf//P3EgCnJFDQFEAAAAAAAAAAAgAhCvPSECDAELAkAgAUH//7//B0sNACAHQYCAwP8HSQ0AIAMgAiACoSIEoiECDAILAkAgAUGAgMD/B0kNACAJQf//P3EgCnINACAHQYCAwP8HTwRAIAMgAiACoaIhAiADIAOiIQQMAwsgAyACELI9oiEEIAIQwkREAAAAAAAA8H+iIQIMAgsgAyADoCACIAKhIgSiIQIgBCADIAOioiEEDAELIAMhBAsgACACOQMIIAAgBDkDACAGQTBqJAELqAQCBH0DfyMBQSBrIgYkASABKgIEIgK8Qf////8HcSEHAkACQCABKgIAIgO8IghB////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A0gQ8EcgACACKQMYNwMYIAAgAikDEDcDECAAIAIpAwg3AwggACACKQMANwMAIAJB0ABqJAELawICfwF8IwFBMGsiAiQBIAErAwghBCACQRhqIgMgASsDADkDACACIAMpAwA3AwggAiAEmjkDECACIAIpAxA3AwAgAkEgaiACEPQ9IAIrAyAhBCAAIAIrAyg5AwAgACAEmjkDCCACQTBqJAELXwIBfwF9IwFBIGsiAiQBIAEqAgQhAyACIAEqAgA4AhQgAiADjDgCECACIAIpAhA3AwggAkEYaiACQQhqEPU9IAIqAhghAyAAIAIqAhw4AgAgACADjDgCBCACQSBqJAELqwMDBHwBfgF/IAErAwghAiABKwMAIgO9IgZCIIinIgFB/////wdxIgdBgIDA/wdPBEAgBqcgAUH//z9xcgRAIAAgAzkDACAAIAJEAAAAAAAA8D8gAyACRAAAAAAAAAAAYRuiOQMIDwsgBkKAgICAgICAgEB8IQYgAEQAAAAAAAAAACACvUL///////////8Ag0KAgICAgICA+P8AUgR8IAIQwkQgAhCyPaIFIAILEK89OQMIIAAgBjcDAA8LIAK9QoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgACACIAKhIgI5AwggACACIAMgA0QAAAAAAAAAAGIbOQMADwsgB0GAgNiBBE8EQCADmZoQ/j4hBEQAAAAAAADwPyADEK89IQMgAhDCRCEFIAIQsj0hAiAAIAM5AwAgACAEIAQgAiAFRAAAAAAAABBAoqKiojkDCA8LIAIQsUUhBCADEMdEIgIgAqJEAAAAAAAA8D+gnyEDIAAgBCACIAIgBCAEokQAAAAAAADwP6AiBaKiRAAAAAAAAPA/oCIEozkDCCAAIAIgBSADoqIgBKM5AwAL3gICBH0BfyABKgIEIQIgASoCACIDvCIBQf////8HcSIGQYCAgPwHTwRAIAFB////A3EEQCAAIAM4AgAgACACQwAAgD8gAyACQwAAAABbG5Q4AgQPCyABQYCAgIAEayEBIABDAAAAACACvEH/////B3FBgICA/AdHBH0gAhDGRCACELM9lAUgAgsQsD04AgQgACABNgIADwsgArxBgICA/AdxQYCAgPwHRgRAIAAgAiACkyICOAIEIAAgAiADIAYbOAIADwsgBkGAgMCJBE8EQCADi4wQiT8hBEMAAIA/IAMQsD0hAyACEMZEIQUgAhCzPSECIAAgAzgCACAAIAQgBCACIAVDAACAQJSUlJQ4AgQPCyACELJFIQQgAxDIRCICIAKUQwAAgD+SkSEDIAAgBCACIAIgBCAElEMAAIA/kiIFlJRDAACAP5IiBJU4AgQgACACIAUgA5SUIASVOAIAC6kBAgJ/An4jAUHQAGsiAiQBIAEpAwghBCABKQMAIQUgAkE4aiIDIAEpAxAgASkDGBDaSDkDACACIAMpAwA3AyggAiAFIAQQ2kg5AzAgAiACKQMwNwMgIAJBQGsgAkEgahD0PSACIAIrA0AQ8EcgAkEQaiACKwNIEPBHIAAgAikDGDcDGCAAIAIpAxA3AxAgACACKQMINwMIIAAgAikDADcDACACQdAAaiQBC8IBAgF/BH4jAUHgAGsiAiQBIAEpAxghBSABKQMQIQQgASkDACEDIAIgASkDCCIGNwM4IAIgAzcDMCACIAY3AxggAiADNwMQIAIgBUKAgICAgICAgIB/hSIDNwMoIAIgAzcDCCACIAQ3AyAgAiAENwMAIAJBQGsgAhD2PSACKQNIIQQgAikDWCEDIAIpA1AhBSAAIAIpA0A3AxAgACAFNwMAIAAgAzcDCCAAIARCgICAgICAgICAf4U3AxggAkHgAGokAQsaACAARQRAIwBBqwRqDwsgACMAQasEahDyRAsVACAAEOlBIgBFBEBBAA8LIAAQxjwLMQEBfyMBQTBrIgIkASAAIAJBBGoQ2T4iAAR/IAAgARDHPAVBAAshACACQTBqJAEgAAucAwEHfyMBQRBrIgYkAQJAIABFDQAgAUUEQAJ/IAZBDGohAiMAQdTr7QFqKAIAIgEEQANAAkAgASgCDCAAEO9EDQAgASgCCEUNACACIAEoAgQ2AgAgASgCEAwDCyABKAIAIgENAAsLQQALIQMMAQsgAEGAAhCFRSIEQf8BTSABQYAgEIVFIgVBgCBJcUUEQBD6O0EcNgIADAELAkAjAEHU6+0BaigCACICBEADQCACKAIMIAAQ70RFBEAgAigCECABEO9ERQ0DCyACKAIAIgINAAsLIAQgBWpBFmpBARD6RiICRQ0BIwBB1OvtAWoiAygCACEIIAIgAkEUaiIHNgIMIAIgBTYCBCACIAg2AgAgAiAEIAdqQQFqNgIQIAcgACAEQQFqEM4+GiACKAIQIAEgBUEBahDOPhogAyADKAIAIAIQ/D0aCyACQQhqQQEQ/T0jAEHU6+0BaigCACIBBEADQAJAIAEoAgwgABDvRA0AIAEgAkYNACABQQhqQQAQ/T0LIAEoAgAiAQ0ACwsgAigCECEDCyAGQRBqJAEgAwsfACAAIAIgACgCACIAIAAgAUYiAhs2AgAgASAAIAIbCwkAIAAgATYCAAuMCQESfyMBQdAAayIIIQcgCCQBEKVDKAJgIQYQ+jsiESgCACESAkACQCABRQ0AIARBBUsNACAARQRAEMVFIQALIABBgAIQhUUiDEH/AUsNACMAQdTr7QFqKAIAIgVFDQADQAJAIAUoAgwgABDvREUEQCAFKAIIDQELIAUoAgAiBQ0BDAILCyAGIARBAnRqKAIAIg9FDQACQCMAQdjr7QFqKAIAIgYEQANAAkAgBigCFCAFRw0AIAYoAhggD0cNACAGKAIcIARGDQMLIAYoAgAiBg0ACwsgBSgCECETIAUoAgQhECAPQQhqIglBLiAJQcAAIAkQ/UQiBhCVQiIKIAYgCWogChsiFCAJayIKEJVCIQ0gCCAGIAprIgsjACIOQajjkwFqIARqLAAAIAwgEGpqIA0gCWsgCiANGyIMamoiBkEWakFwcWsiCCQBIAcgADYCOCAHIA5B4OKTAWogBEEMbGoiDTYCNCAHIBQ2AjAgByALNgIsIAcgCTYCKCAHIAw2AiQgByATNgIgIAggBkEHaiIQIA5BruOTAWogB0EgahDMRBogCCAHQcwAahCIPCIKRQRAIAdBGGohDiAHQRRqIRUgB0EQaiEWIAshBgNAIAYEf0EABSAJQd8AIAwQlUIiBkUNBCAGIAlrIQwgCwshBiAOIAA2AgAgFSANNgIAIBYgFDYCACAHIAY2AgwgByAJNgIIIAcgDDYCBCAHIBM2AgAgCCAQIwBBruOTAWogBxDMRBogCCAHQcwAahCIPCIKRQ0ACwtBIEEBEPpGIgZFBEAgCiAHKAJMEL1CGgwCCyAGIA82AhggBiAFNgIUIAYgBDYCHCAGIAo2AgQgBiAHKAJMIgU2AghBAiEEIAYCfyAKIAUjACIAQeniDmoQlTwiBUUEQCAAQcqhC2oMAQsCQANAIAUjAEHqoQtqQQ0QgkVFDQEgByAFQQoQ7UQiADYCSCMAIQggAEEBaiEFIAANAAsgCEHKoQtqDAELIAVBDWohAANAIAAiBUEBaiEAIAUsAAAQkEENAAsgBSMAQcOfC2pBCRCCRUUEQCAFQQlqIAdByABqQQoQmEUhBCAHKAJIIQULA38jAEHKoQtqIAUtAAAiAEUNARogAEE7RgR/A0AgBSIAQQFqIQUgACwAARCQQQ0ACyMAIghByqELaiAAQQhqIAUgCEHlnwtqQQcQgkUbBSAFQQFqIQUMAQsLCzYCDCAGIAQ2AhADQCAGIwBB2OvtAWoiACgCACIFNgIAIAAgBSAGEPw9IAVHDQALCyAGKAIEIAYoAgggARCVPCIFRQ0AAkAgAkUNACAGKAIQRQ0AIAYoAgwhBCMBQRBrIgskASALIAM2AgggC0EEaiAEQeQAEOtCLQAAIQAgCygCBCEEIAtBEGokAUF/IAQgAEE7RxsiACAGKAIQSw0BA0AgAEUNASAAQQFrIQAgBSAFIAYoAgggBigCBCAFa2oiCBCFRUEBaiIEaiEFIAQgCEkNAAsMAQsgESASNgIADAELIBEgEjYCACABIAIgA0EBRhshBQsgB0HQAGokASAFCw8AIAAgAUEAQQEgAhD+PQsPACAAIAEgAiADQQUQ/j0LDwAgACABQQBBAUEFEP49CwgAIAAgAX25C7ABAQJ/IwAhASAARQRAIAFB0twMag8LIwAhASAALQAARQRAIAFB0twMag8LIAAQ/UQhAQNAIAAgAUEBayIBai0AAEEvRwRAA0AjACECIAFFBEAgAkHS3AxqDwsgACABQQFrIgFqLQAAQS9HDQALA0AgASICRQRAIwBB388Lag8LIAAgAkEBayIBai0AAEEvRg0ACyAAIAJqQQA6AAAgAA8LIwAhAiABDQALIAJB388LagsdAQF/IAAgASACbSIDNgIAIAAgASACIANsazYCBAsHACAAEJM+CzYBA38QpUMiAS0AKiICQQJxBH8gASACQf0BcToAKiMAQfnoB2ogASgCaCIAIABBf0YbBSAACwvMAQEEfyMBQRBrIgQkASAEIAE2AgwjAUEQayIDJAEgAyABNgIMIwBB4OvtAWoiAigCACEBIAJBADYCACABBEADQCABKAIAIQIgARDkRiACIgENAAsLIAMgAygCDDYCCBClQyIBKAJoIgJBf0cEQCACEORGCyABQQRBAEEAIAAgAygCCBCVRiICIAJBBE0bQQFqIgUQ40YiAgR/IAIgBSAAIAMoAgwQlUYaIAIFQX8LNgJoIAEgAS0AKkECcjoAKiADQRBqJAEgBEEQaiQBC2oBAn8jAUEQayIDJAECQCAAQQFqQQJPBEAgABCTPg0BCyMAQYiK5AFqKAIMIQIgA0F/NgIMIABBACAAIAJHGyIAIAEgA0EMahCmASECIAMoAgwiAUF/Rg0AIAAgARCUPgsgA0EQaiQBIAILiAcBEn8jAUGQAWsiCyQBAkACQAJAIABB/wEQhUUiBQRAQX8hByACQQBMDQMgBUEBayIGIAUgACAGai0AAEEuRhsiCEH9AUsNAyAIDQEMAgsgAkEASg0BQX8hBwwCCwJ/QQAhBgNAAkAgBiIFIAhODQADQCAAIAVqLQAAQS5GDQEgBUEBaiIFIAhHDQALIAghBQtBACAFIAZrIgZBQGpBQUkNARogCiALaiAGOgAAIAVBAWohBiAKQQFqIQogBSAIRw0ACyAKCyITRQ0BAkAgA0UEQEEAIQUMAQsgAygCAEUEQCADIQUMAQsgA0EEaiEHIAMoAgQiBkUEQCAHIQUMAQsgACAIaiEUA0AgC0GMAWohFSADKAIAIQ8gFCEKIBMhBUEAIREjAUGAAmsiECQBQQAhCUEAIQwDQCAGLQAAIg1BwAFxIhZBwAFHBEACQCAWDQAgDUUEQCAJIQwMAQsgBiAPayINQf//AEoNACAQIAlBAXRqIA07AQAgCUEBaiEJIAYtAAAgBmpBAWohBgwCCwUgDyAGLQABIA1BCHRBgP4AcXJqIQYMAQsLAkAgDCIJRQ0AIAsgBUEBayIFai0AACIGIA8gECAJQQFrIgxBAXRqLgEAIglqLQAARw0AIA9BAWohDSAKIAZrIQoDQCAJIA1qIAogBhCWQg0BIBUgCTYCACARIAVBAEdqIAZqIREgBUUNASAMRQ0BIAsgBUEBayIFai0AACIGQX9zIApqIQogBiAPIBAgDEEBayIMQQF0ai4BACIJai0AAEYNAAsLIBBBgAJqJAECQCARIgUgDkwNACALKAKMASESIAUhDiAFIAhHDQAgCCEOIAchBQwCCyAHKAIEIQYgB0EEaiIFIQcgBg0ACwtBfyEHIAggDmsiBiAOQQFrIAhBAWtJakECaiACSw0BIAFBAWogACAGEM4+GkEAIQAgCCAORwRAQQAhBwNAIAAgAWogByALai0AACICOgAAIAdBAWohByAAIAJqQQFqIgAgBkkNAAsLIAAhAiAAIAFqIA4EfyABIABBAWoiAmogEjoAACASQQh2QUByBUEACzoAACACQQFqIQcgA0UNASAERQ0BIAJBAkgNASADKAIARQ0BA0AgBSIAQQRqIQUgACgCAA0ACyAEIAVNDQEgAEEANgIEIAAgATYCAAwBCyABQQA6AABBASEHCyALQZABaiQBIAcLrwIBCH9BfyEJAkAgASACRg0AIARBAEwNACABIABrIgpBAEwNACADQf4BIAQgBEH+AU4baiEMQX8hByADIQYgAiEEA0ACQCAELQAAIghBwABPBEAgBEEBaiIFIAFGDQMgBS0AACAIQT9xQQh0ciIFIApODQMgBCACa0ECaiAHIAdBAEgbIQcgACAFaiEEDAELAkAgCARAIAYgAyIFRwRAIAZBLjoAACAELQAAIQggBkEBaiEFCyAIIgYgASAEQQFqIgRrTg0EIAwgBWsgBkwNBCAIRQ0BA0AgBSAELQAAOgAAIAVBAWohBSAEQQFqIQQgBkEBayIGDQALDAELIAZBADoAACAEIAJrQQFqIAcgB0EASBshCQwDCyAFIQYLIAtBAmoiCyAKSA0AC0F/DwsgCQtgAQJ/AkAgACABTw0AIAAhAgNAIAItAAAiA0UEQCACIABrQQFqDwsgA0HAAU8EQCACQQFqIAFPDQIgAiAAa0ECag8LIAEgAmsgA0wNASACIANqQQFqIgIgAUkNAAsLQX8LKAEBfyMBQRBrIgMkASADIAI2AgwgACABIAIQ/EUhAiADQRBqJAEgAgsoACAAIwBBvonkAWoQmDxCBIZCgICAgICAgPg/hL9EAAAAAAAA8L+gCw0AIwBBuInkAWoQjT4LCgAgABCfARCpRQs8AQF/AkACQCAAIAFHBEADQCAAIAFBABCgASICQXZGDQAMAgsACyAAEKVGDQFBeCECCyACEKlFIQALIAALHAEBfwNAIAAgASACEKABIgNBdkYNAAsgAxCpRQs+AQF/QRgQ40YiAQRAIAEjAEGw7+0BaiAAIABBf0YbIgApAgA3AgAgASAAKQIQNwIQIAEgACkCCDcCCAsgAQthAQJ/IwFBEGsiAiQBIwBBiIrkAWohAQJ/A0ACQCABKAIIQX9HDQAgASgCDCAARw0AQQAMAgsgASgCACIBDQALIAIgADYCACMAQdevBGogAhCHPkEBCyEBIAJBEGokASABC1wBAX9BAUEQEPpGIgIgATYCCCACIAA2AgwgAARAIAAgAjYCAAsgAiMAQYSK5AFqIgAoAgA2AgQgACgCAARAIwBBhIrkAWooAgAgAjYCAAsjAEGEiuQBaiACNgIAC50BAQJ/IwFBEGsiAyQBAkAgAEUEQCMAQYiK5AFqKAIMIQIMAQsjAEGIiuQBaiECAkACQANAIAIoAghBf0YEQCACKAIMQRxqIAAQ70RFDQILIAIoAgAiAg0AC0EAIQIgACABEJY+IgBFDQEgABChAUUEQCAAEORGDAILIAAQlz4gACECDAELIAIoAgwhAgsgAygCDBoLIANBEGokASACCz0BAX8gAUEDcUUEQCMAQdDiCGpBABCHPkEADwtBASAAEP1EQR1qEPpGIgIgATYCBCACQRxqIAAQ8kQaIAILCQAgAEF/EJQ+C1wAIABFBEAgAiMAQYiK5AFqIAMRBQAPCyAAIAEQlj4iAUUEQCACIAQRAwAPC0EMEONGIgAgBDYCBCAAIAM2AgAgACACNgIIIAEjAiICQbwkaiACQb0kaiAAEKIBCxsAIAAQlz4gASgCCCAAIAEoAgARBQAgARDkRgsZACABKAIIIAEoAgQRAwAgABDkRiABEORGCyoAIAAgARCjASIBIwIiAEG+JGogAEG/JGoQmD4QowEiAEEBIAEQpAEgAAsQACAAQQAgARCkASAAEKUBCxAAIABBA0EAEKQBIAAQpQELHgAgAUEANgIMIAFCADcCBCABIwBBmLsEajYCAEEBC9IBAQJ/IwFBMGsiBCQBIAQgADkDCCAEQQ4gAUEBayABQRFrQXBJGzYCACAEQRBqIwBB7ZwIaiAEEM5EGiADIAQtABBBLUYiBTYCAAJAIARBEGogBXItAAAiA0HlAEYEQEEAIQEMAQtBACEBA0AjAEHw6+0BaiABaiADOgAAIAEgA0H/AXFBLkdqIQEgBUEBaiIFIARBEGpqLQAAIgNB5QBHDQALCyMAQfDr7QFqIgMgAWpBADoAACACIAQgBWpBEWoQ3zxBAWo2AgAgBEEwaiQBIAMLFAEBfyAALQAAIQIgACABOgAAIAILFAEBfyAALwEAIQIgACABOwEAIAILFAEBfyAAKAIAIQIgACABNgIAIAILFAEBfiAAKQMAIQIgACABNwMAIAILGAAgACACIAAtAAAiACAAIAFGGzoAACAACxgAIAAgAiAALwEAIgAgACABRhs7AQAgAAsYACAAIAIgACgCACIAIAAgAUYbNgIAIAALGAAgACACIAApAwAiAiABIAJRGzcDACACCwcAIAAtAAALBwAgAC8BAAsHACAAKQMACwsAIAAgAToAACABCwsAIAAgATsBACABCwsAIAAgATYCACABCwsAIAAgATgCACABCwsAIAAgATcDACABCwsAIAAgATkDACABCxMAIAAgAC0AACIAIAFyOgAAIAALEwAgACAALQAAIgAgAWo6AAAgAAsTACAAIAAvAQAiACABajsBACAACxMAIAAgACgCACIAIAFqNgIAIAALEwAgACABIAApAwAiAXw3AwAgAQsTACAAIAAtAAAiACABazoAACAACxMAIAAgAC8BACIAIAFrOwEAIAALEwAgACAAKAIAIgAgAWs2AgAgAAsVAQF+IAAgACkDACICIAF9NwMAIAILEwAgACAALQAAIgAgAXE6AAAgAAsTACAAIAAvAQAiACABcTsBACAACxMAIAAgACgCACIAIAFxNgIAIAALEwAgACABIAApAwAiAYM3AwAgAQsTACAAIAAvAQAiACABcjsBACAACxMAIAAgACgCACIAIAFyNgIAIAALEwAgACABIAApAwAiAYQ3AwAgAQsTACAAIAAtAAAiACABczoAACAACxMAIAAgAC8BACIAIAFzOwEAIAALEwAgACAAKAIAIgAgAXM2AgAgAAsTACAAIAEgACkDACIBhTcDACABCyQBAX8jAUEQayICJAEgAiABNgIMIAAgASMhEMY+IAJBEGokAQtVAQJ/IwFBEGsiAyQBIAMgATYCDCADIAE2AgggA0EAQQAgACABEJVGIgRBEGpBcHFrIgEkASABIARBAWogACADKAIMEJVGGiABIAIRAwAgA0EQaiQBCyQBAX8jAUEQayICJAEgAiABNgIMIAAgASMgEMY+IAJBEGokAQskAQF/IwFBEGsiAiQBIAIgATYCDCAAIAEjHxDGPiACQRBqJAELJAEBfyMBQRBrIgIkASACIAE2AgwgACABIx4Qxj4gAkEQaiQBCyQBAX8jAUEQayICJAEgAiABNgIMIAAgASMdEMY+IAJBEGokAQs7ACAAIAU2AhQgACACNgIQIAAgATYC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ARCpRQshASADQYABaiQBIAELvwEBBH8jAUHwC2siBCQBIAQgADkDCCAEQfgKIAEgAUH4Ck8bIgY2AgAgBEEQaiMAQYyzBmogBBDORBoCfwJ/IAQtABBBLUYiByAEQRBqciIFLQAAQTBGBEAgBUECaiMAQc/OC2oQikUMAQtBACAFIwBB0twMahDzRGsLIgUgBk4EQCADIAc2AgAgAkEBNgIAIwBBDiABIAFBDk8ba0HJxQtqDAELIAAgBiAFayACIAMQnz4LIQEgBEHwC2okASABCwoAIAAQuQEQqUULWAAgAL1C////////////AINCgICAgICAgPj/AFgEfCABvUL///////////8Ag0KAgICAgICA+P8AVgRAIAEPCyAAIAGhRAAAAAAAAAAAIAAgAWQbBSAACwtAACAAvEH/////B3FBgICA/AdNBH0gAbxB/////wdxQYCAgPwHSwRAIAEPCyAAIAGTQwAAAAAgACABXhsFIAALC3sBAn8jAUEQayIFJAECQCABIAIQhDxFDQAgAyAEEIQ8RQRAIAMhASAEIQIMAQsgBSABIAIgAyAEENJIIAEgAiADIAQQ1EchBiAFKQMIQgAgBkEASiIGGyECIAUpAwBCACAGGyEBCyAAIAE3AwAgACACNwMIIAVBEGokAQuLAQEDfyMBQYABayIBJAECQCAAIAFBEGoQ/T9BAEgNACAAQQNBABClP0GAgIABcQRAEPo7QQg2AgAMAQsgASgCHEGA4ANxQYCAAUcEQBD6O0E2NgIADAELQQFBmBAQ+kYiA0UNACABQQE2AgAgAEECIAEQpT8aIAMgADYCCCADIQILIAFBgAFqJAEgAgsLACAAQQA7AQBBAAsoAAJAIAAoAkxBAEgEQCAAKAIAIQAMAQsgACgCACEACyAAQQR2QQFxCygAAkAgACgCTEEASARAIAAoAgAhAAwBCyAAKAIAIQALIABBBXZBAXELEAAgAC8BABogAC8BABpBAAsPAEF/QQAgAEEWd0EDSxsLPAEBfyMBQSBrIgMkASADIAAQkEMgAyABIAIQ0jsaEPo7IgAoAgBBLEYEQCAAQQg2AgALIANBIGokAUF/C4ICAQN/IABFBEAjAEHskOQBaigCAAR/IwBB7JDkAWooAgAQsj8FQQALIQEjAEG8juQBaigCAARAIwBBvI7kAWooAgAQsj8g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C0IAQgAQ00dFDQAgBacgBkIwiKdBACAIa0ZzQQFxDQAgCUEQaiAMIAtCAEKAgICAgIDA//8AELNIIAlBIGogBSAGIAkpAxAgCSkDGBDLQiAJKQMoIQYgCSkDICEFCyAJIAUgBiAIEI1EIAkpAwAhBiAKIAkpAwg3AwggCiAGNwMAIAlB0ABqJAEgBykDuAEhBiAHKQOwASEFCyAAIAY3AwggACAFNwMAIAdBoANqJAELvgECAX8CfiMBQeAAayIFJAEgBUHQAGogASACIAMgBBCDRyAAIAUpA1giBjcDCCAAIAUpA1AiBzcDACAFQUBrIAcgBiABIAIQ0kggBUEwaiAHIAYgBSkDQCIGIAUpA0giBxDSSCAFQSBqIAEgAiAFKQMwIAUpAzgQ0kggBUEQaiADIAQgBiAHENJIIAUgBSkDECAFKQMYIAUpAyAgBSkDKBCDRyAAIAUpAwg3AxggACAFKQMANwMQIAVB4ABqJAELQwAgACAAIAGlIAG9Qv///////////wCDQoCAgICAgID4/wBWGyABIAC9Qv///////////wCDQoCAgICAgID4/wBYGwsvACAAIAAgAZcgAbxB/////wdxQYCAgPwHSxsgASAAvEH/////B3FBgICA/AdNGwuBAQEBfwJAIAEgAhCEPEUNACADIAQQhDxFBEAgASEDIAIhBAwBCyABIAIQoDwgAyAEEKA8RwRAIAQgAiABIAIQoDwiBRshBCADIAEgBRshAwwBCyAEIAIgASACIAMgBBDTR0EASCIFGyEEIAMgASAFGyEDCyAAIAM3AwAgACAENwMIC/MCAQJ/IAJBKxDtRCEEAkACQCMAQb+4CWogAiwAABDtREUEQBD6O0EcNgIADAELAkAgAA0AIAFBAE4NABD6O0EwNgIADAELQbAJIAFBsAlqIAAbEONGIgMNAQtBAA8LIANBAEGkARDQPhogA0F/NgJQIANBfzYCPCADIANBkAFqNgJUIANBgAg2AjAgAyADQawBajYCLCAARQRAIANBrAlqIgBBACABENA+GgsgAyABNgKYASADIAA2ApwBIAMgAiwAADYCoAEgBEUEQCADQQhBBCACLQAAQfIARhs2AgALAkACQCACLQAAIgJB4QBHBEAgAkHyAEcNASADIAE2ApQBDAILIAMgACABEIVFIgI2ApQBIAMgAjYCkAEM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AAsLIAdBgICAgHhxIAVBgICABGsgBEEXdHIgBUEBIARrdiAEQQBKG3K+C5YGAgR/A34jAUGAAWsiBSQBAkACQAJAIAMgBEIAQgAQ00dFDQAgAyAEEIQ8IQcgAkIwiKciCEH//wFxIgZB//8BRg0AIAcNAQsgBUEQaiABIAIgAyAEELNIIAUgBSkDECIEIAUpAxgiAyAEIAMQ40cgBSkDCCECIAUpAwAhBAwBCyABIAJC////////////AIMiCiADIARC////////////AIMiCRDTR0EATARAIAEgCiADIAkQ00cEQCABIQQMAgsgBUHwAGogASACQgBCABCzSCAFKQN4IQIgBSkDcCEEDAELIARCMIinQf//AXEhByAGBH4gAQUgBUHgAGogASAKQgBCgICAgICAwLvAABCzSCAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAELNIIAUpA1giCUIwiKdB+ABrIQcgBSkDUCEDCyAJQv///////z+DQoCAgICAgMAAhCELIApC////////P4NCgICAgICAwACEIQogBiAHSgRAA0ACfiAKIAt9IAMgBFatfSIJQgBZBEAgCSAEIAN9IgSEUARAIAVBIGogASACQgBCABCzSCAFKQMoIQIgBSkDICEEDAULIAlCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgBkEBayIGIAdKDQALIAchBgsCQCAKIAt9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABCzSCAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghAyAGQQFrIQYgBEIBhiEEIAMgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/ELNIIAUpA0ghAiAFKQNAIQQMAQsgCUL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQBC6kFAQp/IwFB0ABrIgYkASMAQb+BC2oQmkAhCSACQQFrIgdBA00EQCMAQdiK5AFqIAdBAnRqKAIAIQsLAkAgAEGA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IAAoAiQRAgAaIAAoAhRFDQELIABBADYCHCAAQgA3AxAgACABIAIgACgCKBEaAEIAUw0AIABCADcCBCAAIAAoAgBBb3E2AgBBAA8LQX8LIAAgACgCTEEASARAIAAgASACEPk/DwsgACABIAIQ+T8LDAAgACABrCACEPo/Cw4AIAAgASkDAEEAEPo/CyEAIABBAEgEQEF4EKlFDwsgACMAQeniDmogAUGAIBD+PwuIAQEBfwJ/AkACQAJAIABBAEgNACADQYAgRw0AIAEtAAANASAAIAIQlwEMAwsCQCAAQZx/RwRAIANFIAEtAAAiBEEvRnENASADQYACRw0CIARBL0cNAgwDCyADQYACRg0CIAMNAQsgASACELoBDAILIAAgASACIAMQtwEMAQsgASACELsBCxCpRQsKACAAELwBEKRGC3ACAn8BfiAAKAIoIQJBASEBAkAgAEIAIAAtAABBgAFxBH9BAUECIAAoAhQgACgCHEYbBSABCyACERoAIgNCAFMNACADIAAoAggiAQR/IABBBGoFIAAoAhwiAUUNASAAQRRqCygCACABa6x8IQMLIAMLGAAgACgCTEEASARAIAAQgEAPCyAAEIBACyMBAX4gABCBQCIBQoCAgIAIWQRAEPo7QT02AgBBfw8LIAGnC0IBAn8jAUEQayIBJAFBACABEN0+GiAAIAEpAwA3AwAgASgCCCECIABBADYBCiAAIAJBwIQ9bTsBCCABQRBqJAFBAAsMACAAIAEQvQEQqUULRQEBfyAAKAJEBEAgACgChAEiAQRAIAEgACgCgAE2AoABCwJ/IAAoAoABIgAEQCAAQYQBagwBCxClQ0HsAGoLIAE2AgALCzQBAX8gAEEANgKAASAAQQE2AkQgACABKAJsIgI2AoQBIAIEQCACIAA2AoABCyABIAA2AmwLjAEBBX8CQAJAEKVDIgQoAhgiBSAAKAJMIgJB/////3txRgRAQX8hAyAAKAJEIgJB/////wdGDQIgACACQQFqNgJEDAELIABBzABqIQFBfyEDAkAgAkEASARAIAFBADYCAAwBCyACDQILIAEgASgCACIBIAUgARs2AgAgAQ0BIAAgBBCGQAtBACEDCyADCygBAX8gACgCRCIBQQFGBEAgABCFQCAAQQA2AkQPCyAAIAFBAWs2AkQLDQAgAEEAIAFBABD5RQuHAQID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EMlACygBAn8gACgCACICBH8gAigCABDkRiAAKAIABSABCxDkRiAAQQA2AgALPAEBfyMBQRBrIgIkASACIAApAgA3AwAgAiABIAJBDGojAEHw7u0BahDLQBogAigCDCEAIAJBEGokASAAC64BAgJ/AX5BASEEIAICfwJAIAAoAgAiAiACEMxAIgUgAxDNQCICKAIADQAgAUUEQEEAIQRBAAwCCyACIAApAgAiBjcCACADKAIAIgAgACgCCEEBaiIBNgIIIAEgACgCBCIAIABBAnZrTQ0AIAFBAXQgAxDHQEUEQCADKAIAIgQgBCgCCEEBazYCCCACQQA2AgBBACEEQQAMAgsgBqcgBSADEM1ADAELIAILNgIAIAQLLwECfyAALQAAIgIEQANAIAFBH2wgAmohASAALQABIQIgAEEBaiEAIAINAAsLIAELbwEDfwJAIAIoAgAiAygCACADKAIEIAFxQQN0aiIFKAIAIgNFDQAgAyAAEO9ERQ0AQQEhAwNAIAIoAgAiBCgCACABIANqIgEgBCgCBHFBA3RqIgUoAgAiBEUNASADQQFqIQMgBCAAEO9EDQALCyAFC1UBAn8jAEHwlJQBaiEBAkAgAEEBayICRQ0AA0AgAS0AAEUNAQNAIAEiAEEBaiEBIAAtAAENAAsgAEECaiEBIAJBAWsiAg0ACwsgASABLQAARWoQhzwLBwAgABDQQAsjACAAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycgsHACAAENJACxIAIABBCHQgAEEIdnJB//8DcQu8AgMDfwN+AXwjAUEgayICJAEgAL1C////////////AIMiBSABvUL///////////8AgyIGIAUgBlQbIge/IQECQCAHQjSIpyIDQf8PRg0AIAUgBiAFIAZWGyIFvyEAAkAgB1ANACAFQjSIpyIEQf8PRg0AIAQgA2tBwQBOBEAgACABoCEBDAILAnwgBEH+C08EQCABRAAAAAAAADAUoiEBIABEAAAAAAAAMBSiIQBEAAAAAAAAsGsMAQtEAAAAAAAA8D8gA0G8BEsNABogAUQAAAAAAACwa6IhASAARAAAAAAAALBroiEARAAAAAAAADAUCyEIIAJBGGogAkEQaiAAENRAIAJBCGogAiABENRAIAggAisDACACKwMQoCACKwMIoCACKwMYoJ+iIQEMAQsgACEBCyACQSBqJAEgAQtFAQJ8IAAgAiACoiIEOQMAIAEgAiACRAAAAAIAAKBBoiIDIAIgA6GgIgOhIgIgAqIgAyADoCACoiADIAOiIAShoKA5AwAL2QECA38BfCAAvEH/////B3EiAiABvEH/////B3EiBCACIARJGyIDviEBIANBgICA/AdHBH0gAiAEIAIgBEsbIgK+IQACQAJAIAJB////+wdLDQAgA0UNACACIANrQYCAgOQASQ0BCyAAIAGSDwsCfSACQYCAgOwFTwRAIAFDAACAEpQhASAAQwAAgBKUIQBDAACAbAwBC0MAAIA/IANB////iwJLDQAaIAFDAACAbJQhASAAQwAAgGyUIQBDAACAEgsgALsiBSAFoiABuyIFIAWioLaRlAUgAQsLjQUCBX8CfiMBQeABayIFJAEgAkL///////////8AgyICIARC////////////AIMiBCACQjCIpyIHIARCMIinIghJIgYbIQogASADIAYbIQsgBCACIAYbIQIgAyABIAYbIQMCQCAHIAggByAISxsiCUH//wFGBEAgCiACIAsgChCEPEEBRiIGGyECIAsgAyAGGyEDDAELIAsgCkIAQgAQ00dFDQAgCSAHIAggBhsiBmtB8gBOBEAgBSADIAIgCyAKEINHIAUpAwghAiAFKQMAIQMMAQsCfiAJQcC+AU8EQCAFQfAAaiADIAJCAEKAgICAgIDA9xgQs0ggBUHgAGogCyAKQgBCgICAgICAwPcYELNIIAUpA2ghCiAFKQN4IQJCgICAgICAwIfnACEEIAUpA2AhCyAFKQNwIQNCAAwBCyAGQb7BAEsEQEKAgICAgIDA/z8hBEIADAELIAVBkAFqIAMgAkIAQoCAgICAgMCH5wAQs0ggBUGAAWogCyAKQgBCgICAgICAwIfnABCzSCAFKQOIASEKIAUpA5gBIQJCgICAgICAwPcYIQQgBSkDgAEhCyAFKQOQASEDQgALIQEgBUHQAWogBUHAAWogAyACENdAIAVBsAFqIAVBoAFqIAsgChDXQCAFQUBrIAUpA6ABIAUpA6gBIAUpA8ABIAUpA8gBEINHIAVBMGogBSkDQCAFKQNIIAUpA7ABIAUpA7gBEINHIAVBIGogBSkDMCAFKQM4IAUpA9ABIAUpA9gBEINHIAVB0ABqIAUpAyAgBSkDKBDT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AnRqIAE2AgBBACECCyACCyMAIAAoAgBB37femgFHBEAgAREMACAAQd+33poBNgIAC0EACwgAQQAQgAEACyABAnwQsgEiAiEBA0AgARCeRBCyASIBIAKhIABjDQALCwcAQV4QqUULEgAgACABIAIgAyAEEMEBEKlFCyQAIACeIgCZRAAAAAAAAOBDYwRAIACwDwtCgICAgICAgICAfwsgACAAkCIAi0MAAABfXQRAIACuDwtCgICAgICAgICAfwsuAQF/IwFBEGsiAiQBIAIgACABEIREIAIpAwAgAikDCBD+RyEBIAJBEGokASABCyYAIAAQhkQiAJlEAAAAAAAA4ENjBEAgALAPC0KAgICAgICAgIB/CyIAIAAQh0QiAItDAAAAX10EQCAArg8LQoCAgICAgICAgH8LLgEBfyMBQRBrIgIkASACIAAgARCIRCACKQMAIAIpAwgQ/kchASACQRBqJAEgAQsgACABBH8gASgCACABKAIEIAAQlTwFQQALIgEgACABGwuxAwEEfwJAIAEtAAANACMAQbPGCmoQmkAiAQRAIAEtAAANAQsjAEGQsJ0BaiAAQQxsahCaQCIBBEAgAS0AAA0BCyMAQbLZCmoQmkAiAQRAIAEtAAANAQsjAEHhpgtqIQELAkADQAJAIAEgAmotAAAiA0UNACADQS9GDQBBFyEDIAJBAWoiAkEXRw0BDAILCyACIQMLIwAhAgJAAkACQAJAIAEtAAAiBEEuRgRAIAJB4aYLaiEBDAELIwAhAiABIANqLQAABEAgAkHhpgtqIQEMAQsgBEHDAEcNAQsgAS0AAUUNAQsgASMAQeGmC2oQ70RFDQAgASMAQfLsCWoQ70QNAQsCQCAADQAjACECIAEtAAFBLkcNACACQciJ5AFqDwtBAA8LAkAjAEHU9O0BaigCACICBEADQCABIAJBCGoQ70RFDQIgAigCICICDQALC0EkEONGIgIEQCACIwAiBEHIieQBaikCADcCACACQQhqIgUgASADEM4+GiADIAVqQQA6AAAgAiAEQdT07QFqIgMoAgA2AiAgAyACNgIACyACIwBByInkAWogACACchshAgsgAgsKACMAQfCK5AFqCw8AIAAjAEHY9O0BahDZPgvgAQEBfyMBQdAAayIDJAEgA0EANgJIIAMgAjcDQCADQgA3AzggA0GBgAQ2AjAC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AkACQAJAAkAgA0ECaw4DAAECAwsCfyAELwAAIgBBCHQgAEEIdnIhACACLwAAIgJBCHQgAkEIdnIhAyABQQJrIgUEQCAEQQJqIQIDQCACQQJrIABB//8DcSADQf//A3FGDQIaIAItAAAgAEEIdHIhACACQQFqIQIgBUEBayIFDQALCyABIARqQQJrQQAgAEH//wNxIANB//8DcUYbCw8LAn8gBC0AAUEQdCAELQAAQRh0ciAELQACQQh0ciEAIAItAAFBEHQgAi0AAEEYdHIgAi0AAkEIdHIhAyABQQNrIgUEQCAEQQNqIQIDQCACQQNrIAAgA0YNAhogACACLQAAckEIdCEAIAJBAWohAiAFQQFrIgUNAAsLIAEgBGpBA2tBACAAIANGGwsPCwJ/IAQoAAAiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIhACACKAAAIgJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIQMgAUEEayIFBEAgBEEEaiECA0AgAkEEayAAIANGDQIaIAItAAAgAEEIdHIhACACQQFqIQIgBUEBayIFDQALCyABIARqQQRrQQAgACADRhsLDwsgBCEJIAEgBGohDSACIQdBACECIwFBoAhrIggkASAIQZgIakIANwMAIAhBkAhqQgA3AwAgCEIANwOICCAIQgA3A4AIAkACQAJAIAMiBEUEQEF/IQNBASEBDAELA0AgCCACIAdqLQAAIgFBAnRqIAJBAWoiADYCACAIQYAIaiABQQN2QRxxaiICIAIoAgBBASABdHI2AgAgACICIARHDQALQQEhAUF/IQMgBEEBSw0BC0F/IQZBASEADAELQQAhAEEBIQVBASECA0ACfyAHIAIgA2pqLQAAIgYgASAHai0AACILRgRAIAIgBUYEQCAAIAVqIQBBAQwCCyACQQFqDAELIAYgC0sEQCABIANrIQUgASEAQQEMAQsgACEDIABBAWohAEEBIQVBAQsiAiAAaiIBIARJDQALQQEhAEF/IQYgBEEBTQRAIAUhAQwBC0EAIQFBASEKQQEhAgNAAn8gByACIAZqai0AACILIAAgB2otAAAiDEYEQCACIApGBEAgASAKaiEBQQEMAgsgAkEBagwBCyALIAxJBEAgACAGayEKIAAhAUEBDAELIAEhBiABQQFqIQFBASEK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IAAoAgwgARCLRQvCAQICfgJ/IAC9IgJCNIinQf8PcSIEQf8HayEFAkAgBEGzCE8EQCABIAA5AwAgBUGACEYgAkL/////////B4NCAFJxDQEgAkKAgICAgICAgIB/g78PCyAEQf4HTQRAIAEgAkKAgICAgICAgIB/gzcDACAADwsgAiAFrSIDhkL/////////B4NQBEAgASAAOQMAIAJCgICAgICAgICAf4O/DwsgAUKAgICAgICAeCADhyACgyICNwMAIAAgAr+hIQALIAALoAEBA38gALwiAkEXdkH/AXEiA0H/AGshBAJAIANBlgFPBEAgASAAOAIAIAJB////A3FBACAEQYABRhsNASACQYCAgIB4cb4PCyADQf4ATQRAIAEgAkGAgICAeHE2AgAgAA8LIAIgBHRB////A3FFBEAgASAAOAIAIAJBgICAgHhxvg8LIAFBgICAfCAEdSACcSIDNgIAIAAgA76TIQALIAALtgMCA38CfiMBQdAAayIEJAECQCACQjCIpyIFQf//AXEiBkHvgAFPBEAgAyABNwMAIAMgAjcDCCABIAIQhDxFDQEgBUH//wFLrUI/hiECQgAhAQwBCyAGQf7/AE0EQCADQgA3AwAgAyAFQf//AUutQj+GNwMIDAELIARBQGsgASACIAJCgICAgICAgICAf4UgBUGAgAJJIgYbIgdCAEKAgICAgIDAt8AAEINHIARBMGogBCkDQCAEKQNIQgBCgICAgICAwLdAEINHIARBIGogBCkDMCAEKQM4IAEgBxDSSCAEKQMgIgcgBCkDKCIIQgBCABDTR0UEQCADIAE3AwAgAyACNwMIIAVB//8BS61CP4YhAkIAIQEMAQsgBEEQaiAHIAhCAEKAgICAgIDA/79/EINHIAcgCEIAQgAQ1EchBSAEIAQpAxAgByAFQQBKIgUbIgcgBCkDGCAIIAUbIgggCEKAgICAgICAgIB/hSAGGyIIIAEgAhCDRyADIAQpAwg3AwggAyAEKQMANwMAIAhCgICAgICAgICAf4UhAiAHIQELIAAgATcDACAAIAI3AwggBEHQAGokAQsTACAAIwBBvonkAWoQmDxCEIinCw0AIwBBuInkAWoQs0ILUQAjAUEQayIAJAECfyACQf////8HTwRAEPo7QTA2AgBBfwwBCyADQQJxBH8gACAEQQRqNgIMIAQoAgAFQQALGkFQEKlFCyECIABBEGokASACCw4AIAAgASACENM+EKlFC1wBA38jAUEgayICQRhqIgNBADYCACACQRBqIgRCADcDACACIAFBAXE2AhwgAkIANwMIIAAgAigCHDYCACAAIAMoAgA2AhQgACAEKQMANwIMIAAgAikDCDcCBEEACyAAAkAgACgCAA0AIABBBGoQuUINAEEADwsgAEEAELpCCxUAIAAgACgCACIAQQogABs2AgAgAAsSAEEEQQJBACEBQQAbQQAgARsLKgAgACgCAEUEQCAAQQRqELlCQQpxQQBHDwtBAUECQQAhAEEAG0EAIAAbCwcAQQAQqUULDAAgACABENE+EKlFCwsARAAAAAAAAPh/CwcAQwAAwH8LGQAgAEKAgICAgIDg//8ANwMIIABCADcDAAsTAEEAQQBBACAAIAEQoT1rEKlFCwUAIACeCwUAIACQCzUBAX8jAUEQayIDJAEgAyABIAIQhEQgAykDACECIAAgAykDCDcDCCAAIAI3AwAgA0EQaiQBC0gBAn9BEEGDgCBBABC0YiIDQQBIBEBBfw8LIANBAUESQQAgASACEMZCIgRFBEAgA0ECQRYgACABIAIQxkIhBAsgAxCYARogBAvoAQECfyMBQYBAaiIGJAEgBkEAQRQQ0D4aIAYgAzoAECAGIAE2AgggBkGBBjsBBiAGIAI7AQQgBkEUNgIAAkAgACAGQRRBABCvYiIDQQBIDQBBfyEDIAAgBkGAwABBwAAQrGIiAUEATA0AA0ACQCABQRBJDQAgASAGaiEHIAYhAQNAAkBBACECAkAgAS8BBEECaw4CBQEACyAFIAEgBBEAACICDQAgByABIAEoAgBBA2pBfHFqIgFrQQ9LDQEMAgsLIAIhAwwCCyAAIAZBgMAAQcAAEKxiIgFBAEoNAAsLIAZBgEBrJAEgAws7AQF/IAAjACIBQcz17QFqRyAAQQBHIAAgAUHU+5IBakdxIAAgAUHsieQBakdxIAAgAUG09e0BakdxcQvyAgEDfyMBQSBrIgQkAQJAAkADQEEBIAN0IABxIQUgBEEIaiADQQJ0agJ/AkAgAkUNACAFDQAgAiADQQJ0aigCAAwBCyADIAEjAEHp4g5qIAUbEOdBCyIFNgIAIAVBf0YNASADQQFqIgNBBkcNAAsgAhDHQkUEQCAEQQhqIwBB1PuSAWoiAkEYEJZCRQ0CIARBCGojAEHsieQBaiICQRgQlkJFDQIjAEHk9e0Bai0AAEUEQEEAIQMDQCMAIgVBtPXtAWogA0ECdGogAyAFQeniDmoQ50E2AgAgA0EBaiIDQQZHDQALIwAiA0Hk9e0BakEBOgAAIANBzPXtAWogA0G09e0BaigCADYCAAsgBEEIaiMAQbT17QFqIgJBGBCWQkUNAiAEQQhqIwBBzPXtAWoiAkEYEJZCRQ0CQRgQ40YiAkUNAQsgAiAEKQIINwIAIAIgBCkCGDcCECACIAQpAhA3AggMAQtBACECCyAEQSBqJAEgAgu1AQEEfiABvUL///////////8Ag0KBgICAgICA+P8AVCAAvUL///////////8Ag0KAgICAgICA+P8AWHFFBEAgACABoA8LAkAgAL0iAiABvSIDUQ0AIANC////////////AIMhBAJ+IAJC////////////AIMiBVAEQCAEUA0CIANCgICAgICAgICAf4NCAYQMAQsgAkIBfSACIAOFQgBZIAQgBVpxRQ0AGiACQgF8C78hAQsgAQuSAQEEfyABvEH/////B3FBgYCA/AdJIAC8Qf////8HcUGAgID8B01xRQRAIAAgAZIPCwJAIAC8IgIgAbwiA0YNACADQf////8HcSEEAn8gAkH/////B3EiBUUEQCAERQ0CIANBgICAgHhxQQFyDAELIAJBAWsgAiADc0EATiAEIAVPcUUNABogAkEBagu+IQELIAELjwIBAX8jAUEgayIFJAECQAJAIAEgAhCEPARAIAMgBBCEPA0BCyAFIAEgAiADIAQQg0cgBSkDCCEEIAUpAwAhAwwBCyABIAIgAyAEENNHRQ0AAn4gASACQgBCABDTR0UEQEIBIQMgAkL///////8/gyAEQoCAgICAgICAgH+DhAwBCyABIAIgAyAEENNHQQBOIAJCAFlHBEAgAiABQgF8IgNCAFINARogAkIBfAwBCyACIQQgAUIBfSEDIAJCAX0gBCABUBsLIgRCf4VCgICAgICAwP//AINCAFINACAFQRBqIAEgAiABIAIQg0cgBSkDGCEEIAUpAxAhAwsgACADNwMAIAAgBDcDCCAFQSBqJAELjAICAX8EfiMBQTBrIgMkAQJ8AkAgAL0iBUL///////////8Ag0KAgICAgICA+P8AWARAIAEg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DGoQ90MhASACQRBqJAEgAQtBAQF/IwFBIGsiBSQBIAVBCGogASACIAMgBCAFQRxqEPhDIAUpAwghBCAAIAUpAxA3AwggACAENwMAIAVBIGokAQshAQF/QZx/IABBABDOASIBQWFGBH8gABDPAQUgAQsQqUULhwUDBX8FfgF8IAJBADYCAAJAAkAgAb0iCUL///////////8Ag1ANACABvSEIIAC9IgpCNIinQf8PcSIDQf8PRg0AIAhC////////////AINCgYCAgICAgPj/AFQNAQsgACABoiIBIAGjDwsCQCAKQv///////////wCDUA0AIAlCNIinQf8PcSEEAn4gA0UEQEEAIQMgCkIMhiIIQgBZBEADQCADQQFrIQMgCEIBhiIIQgBZDQALCyAKQQEgA2uthgwBCyAKQv////////8Hg0KAgICAgICACIQLIQgCfiAERQRAQQAhBCAJQgyGIgtCAFkEQANAIARBAWshBCALQgGGIgtCAFkNAAsLIAlBASAEa62GDAELIAlC/////////weDQoCAgICAgIAIhAshDAJ+AkACQCADIAROBEAgAyAESgRAA0AgCCAMfSILIAggC0IAWSIFG0IBhiEIIAUgBnJBAXQhBiADQQFrIgMgBEoNAAsgBCEDCyAGIAggDH0iC0IAWSIHciEFIAsgCCAHGyIIUARAQUQhA0IAIQgMAwsgCEL/////////B1YNAQNAIANBAWshAyAIQoCAgICAgIAEVCEGIAhCAYYhCCAGDQALDAELIANBAWogBEcNAwsgA0EATA0AIAhCgICAgICAgAh9IAOtQjSGhAwBCyAIQQEgA2utiAshCCABmiABIAlCAFMbIQAgCL8hAQJAAkAgAyAERg0AIANBAWogBEcNASABIAGgIg0gAGQNACAAIA1iDQEgBUEBcUUNAQsgBUEBaiEFIAEgAKEhAQsgAkEAIAVB/////wdxIgNrIAMgCSAKhUIAUxs2AgAgAZogASAKQgBTGyEACyAAC+UEAgp/AX0gAkEANgIAAkACQCABvCIIQf////8HcUUNACABvCEEIAC8IglBF3ZB/wFxIgNB/wFGDQAgBEH/////B3FBgYCA/AdJDQELIAAgAZQiASABlQ8LAkAgCUH/////B3FFDQAgCEEXdkH/AXEhBQJ/IANFBEBBACEDIAlBCXQiBEEATgRAA0AgA0EBayEDIARBAXQiBEEATg0ACwsgCUEBIANrdAwBCyAJQf///wNxQYCAgARyCyEEAn8gBUUEQEEAIQUgCEEJdCIGQQBOBEADQCAFQQFrIQUgBkEBdCIGQQBODQALCyAIQQEgBWt0DAELIAhB////A3FBgICABHILIQcCfwJAAkACQAJAAkAgAyAFTgRAIAMgBUoNAUEAIQYMAgtBACEHIANBAWogBUYNAgwGC0EAIQYDQCAEIAdrIgogBCAKQQBOIgobQQF0IQQgBiAKckEBdCEGIANBAWsiAyAFSg0ACyAFIQMLIAYgBCAHayIKQQBOIgtyIQcgCiAEIAsbIgRFBEBBYiEDDAILIARB////A0sNAANAIANBAWshAyAEQYCAgAJJIQYgBEEBdCEEIAYNAAsLIANBAEoNASAEIQwLIAxBASADa3YMAQsgBEGAgIAEayADQRd0cgshBCABjCABIAhBAEgbIQAgBL4hAQJAAkAgAyAFRg0AIANBAWogBUcNASABIAGSIg0gAF4NACAAIA1cDQEgB0EBcUUNAQsgB0EBaiEHIAEgAJMhAQsgAkEAIAdB/////wdxIgNrIAMgCCAJc0EASBs2AgAgAYwgASAJQQBIGyEACyAAC4cHAgd/A34jAUHwAGsiBiQBIAVBADYCAAJAAkACQCADIAQiDUIAQgAQ00dFDQAgAyANEIQ8IQggAkIwiKciCkH//wFxIgdB//8BRg0AIAgNAQsgBkEQaiABIAIgAyANELNIIAYgBikDECIBIAYpAxgiAiABIAIQ40cgBikDCCECIAYpAwAhAQwBCyABIAJCAEIAENNHRQ0AIARCMIinIgtB//8BcSEJIAdFBEAgBkHgAGogASACQv///////z+DQgBCgICAgICAwLvAABCzSCAGKQNoIgJCMIinQfgAayEHIAYpA2AhAQsgCUUEQCAGQdAAaiADIARC////////P4NCAEKAgICAgIDAu8AAELNIIAYpA1giDUIwiKdB+ABrIQkLIAcgCUgEf0EABSANQv///////z+DQoCAgICAgMAAhCEPIAJC////////P4NCgICAgICAwACEIQ1BACEIAkAgByAJTARAIAEhAgwBCyABIQIDQAJ+IA0gD30gASACVq19Ig5CAFkEQCAIQQFyIQggDkIBhiACIAF9IgJCP4iEDAEL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IACaIAJCAFkbBSAACwuNAQIBfQJ/IAC8IgJBF3ZB/wFxIgNBlQFNBH0gA0H9AE0EQCAAQwAAAACUDwsCfSAAIACMIAJBAE4bIgBDAAAAS5JDAAAAy5IgAJMiAUMAAAA/XgRAIAAgAZJDAACAv5IMAQsgACABkiIAIAFDAAAAv19FDQAaIABDAACAP5ILIgAgAIwgAkEAThsFIAALC60DAgN/An4jAUGAAWsiAyQBAkAgAkIwiKciBUH//wFxIgRB7oABSw0AIARB/f8ATQRAIAMgASACQgBCABCzSCADKQMIIQIgAykDACEBDAELIANB8ABqIAEgAiACQoCAgICAgICAgH+FIAVBgIACSRsiAkIAQoCAgICAgMC3wAAQg0cgA0HgAGogAykDcCADKQN4QgBCgICAgICAwLdAEINHIANB0ABqIAMpA2AgAykDaCABIAIQ0kgCfiADKQNQIgYgAykDWCIHQgBCgICAgICAgP8/ENRHQQBKBEAgA0EgaiABIAIgBiAHEINHIANBEGogAykDICADKQMoQgBCgICAgICAwP+/fxCDRyADKQMYIQIgAykDEAwBCyADQUBrIAEgAiAGIAcQg0cgBiAHQgBCgICAgICAgP+/fxDTRyEEIAMpA0ghAiADKQNAIgEgBEEASg0AGiADQTBqIAEgAkIAQoCAgICAgMD/PxCDRyADKQM4IQIgAykDMAshASACIAJCgICAgICAgICAf4UgBUGAgAJJGyECCyAAIAE3AwAgACACNwMIIANBgAFqJAEL5AEBAX4CQCAAvUL///////////8Ag0KAgICAgICA+P8AVg0AIAG9IgJC////////////AINCgYCAgICAgPj/AFoNACACQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgAUQAAAAAAAAAAGQNASAAIAGaow8LIAEgAZ5iBEAgASABoSIBIAGjDwsgAUQAAAAAAL3vQGQEQCAAQej7AxCLRA8LIAFEAAAAAAC978BjBEAgAEGYhHwQi0QPCyAAAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLEItEDwsgACABogu2AQEBfwJAIAC8Qf////8HcUGAgID8B0sNACABvCICQf////8HcUGBgID8B08NACACQYCAgPwHcUGAgID8B0YEQCABQwAAAABeDQEgACABjJUP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AAsgBEGAAWokAQuKAwIDfwF8IwFBEGsiASQBAkAgALwiA0H/////B3EiAkHan6T6A00EQCACQYCAgMwDSQ0BIAC7EKI8IQAMAQsgAkHRp+2DBE0EQCAAuyEEIAJB45fbgARNBEAgA0EASARAIAREGC1EVPsh+T+gEPM7jCEADAMLIAREGC1EVPsh+b+gEPM7IQAMAgtEGC1EVPshCcBEGC1EVPshCUAgA0EAThsgBKCaEKI8IQAMAQsgAkHV44iHBE0EQCACQd/bv4UETQRAIAC7IQQgA0EASARAIARE0iEzf3zZEkCgEPM7IQAMAwsgBETSITN/fNkSwKAQ8zuMIQAMAgtEGC1EVPshGUBEGC1EVPshGcAgA0EASBsgALugEKI8IQAMAQsgAkGAgID8B08EQCAAIACTIQAMAQsCQAJAAkACQCAAIAFBCGoQnDxBA3EOAwABAgMLIAErAwgQojwhAAwDCyABKwMIEPM7IQAMAgsgASsDCJoQojwhAAwBCyABKwMIEPM7jCEACyABQRBqJAEgAAuZAQICfAF/RAAAAAAAAOA/IACmIQIgAJkhAQJAIAC9QoCAgIDw/////wCDQiCIpyIDQcHcmIQETQRAIAEQiz8hASADQf//v/8DTQRAIANBgIDA8gNJDQIgAiABIAGgIAEgAaIgAUQAAAAAAADwP6CjoaIPCyACIAEgASABRAAAAAAAAPA/oKOgog8LIAEgAiACoBD7OyEACyAAC4QBAgJ9AX9DAAAAPyAAmCECIACLIQECQCAAvEH/////B3EiA0GW5MWVBE0EQCABEIw/IQEgA0H////7A00EQCADQYCAgMwDSQ0CIAIgASABkiABIAGUIAFDAACAP5KVk5QPCyACIAEgASABQwAAgD+SlZKUDwsgASACIAKSEPw7IQALIAALNwEBfyMBQRBrIgMkASADIAEgAhDaSBDHRBDwRyAAIAMpAwg3AwggACADKQMANwMAIANBEGokAQuRAwICfwJ+IwFBgAFrIgMkAQJAIAJC////////////AIMiBUIwiKciBEH//wFGBEAgAyABIAIgASACENJIIAMpAwghAiADKQMAIQEMAQsgASAFQoCAgICAgICAgH9C0YWRqvvDpP8/ENNHQQBIBEAgBEHH/wBJDQEgA0EQaiABIAJCAEIAQQAQozwgAykDGCECIAMpAxAhAQwBCyABIAIgA0HgAGoQnTwhBCADKQN4IQIgAykDcCEBIAMpA2ghBSADKQNgIQYCQAJAAkACQCAEQQNxQQFrDgMBAgMACyADQSBqIAYgBSABIAJBARCjPCADKQMoIQIgAykDICEBDAMLIANBMGogBiAFIAEgAhD0OyADKQM4IQIgAykDMCEBDAILIANBQGsgBiAFIAEgAkEBEKM8IAMpA0hCgICAgICAgICAf4UhAiADKQNAIQEMAQsgA0HQAGogBiAFIAEgAhD0OyADKQNYQoCAgICAgICAgH+FIQIgAykDUCEBCyAAIAI3AwggACABNwMAIANBgAFqJAELOgECfyMBQRBrIgEkASABIACtNwMAIAFBADYCCCABIAEQwUIhACABKAIAIQIgAUEQaiQBIAJBACAAGwsqAQF/IwFBEGsiBCQBIAQgAzYCDCAAIAEgAiADEJVGIQMgBEEQaiQBIAMLPAECfyMBQRBrIgEkASABIAFBDGo2AgAgAEGFkgIgARD6QCEAIAEoAgwhAiABQRBqJAFBfyACIABBAEgbCygBAX8jAUEQayIDJAEgAyACNgIMIAAgASACEJlGIQIgA0EQaiQBIAILKAEBfyMBQRBrIgMkASADIAI2AgwgACABIAIQmkYhAiADQRBqJAEgAgsoAQF/IwFBEGsiAyQBIAMgAjYCDCAAIAEgAhCbRiECIANBEGokASACCwUAIACfCwUAIACRC5INAgZ/A34jAUHABWsiAyQBIANBsAVqIAEgAhDURAJAIAMpA7AFIglCMIgiCkL//wF9QoGAflgEQCAJQoCAgICAgMD//wBSIAlC////////////AINCAFJxRQRAIAMpA7gFUA0CCyAJQoCAgICAgMD//wBaBEAjAUEgayIEJAEgBEEQaiABIAIgASACENJIIAQgBCkDECICIAQpAxgiASACIAEQ40cgAyAEKQMINwMIIAMgBCkDADcDACAEQSBqJAEgAykDCCECIAMpAwAhAQwCCyADQdADaiABIAJCAEKAgICAgIDAt8AAELNIIANBsAVqIAMpA9ADIAMpA9gDENREIAMzAbYFQvAAfSEKCyADIAMpA7gFNwPIAyADIAMpA7AFNwPAAyADQaAFaiADQcADakEPENVEIAMgAykDoAVCgICAgICAgICAf4QiAjcDoAUgCkIBg6cEQCADIANBqAVqIgQpAwA3A7gDIAMgAykDoAU3A7ADIANBkAVqIANBsANqQQEQ1kQgBCADKQOYBTcDACADIAMpA5AFIgI3A6AFC0KAgICAgICAgEAgAkGAgICAfCACQiCIpyMAIgZBwI6eAWogAykDsAVCKoinQf8AcUEBdGovAQBBEHQiBBDXRCAEENdEayAEENdErUIhhiIBENhEIgIgARDYRH0iCSABENhEIQEgA0IANwOYAyADQZgFaiIFQgA3AwAgAyADQagFaiIHKQMANwOoAyADQoCAgICAgICAQCAJIAIQ2ERCAYYgAUIBhiICENhEfSACENhEQgGGIgI3A5AFIAMgAykDoAU3A6ADIAMgAjcDkAMgA0GABWogA0GgA2ogA0GQA2oQ2UQgAyADQYgFaiIEKQMANwOIAyADIAUpAwA3A/gCIAMgAykDgAU3A4ADIAMgAykDkAU3A/ACIANB8ARqIANBgANqIANB8AJqENlEIAMgBkHAkJ4BaiIGKQMINwPoAiADIAMpA/gENwPYAiADIAYpAwA3A+ACIAMgAykD8AQ3A9ACIANB4ARqIANB4AJqIANB0AJqENpEIAMgAykD6AQ3A8gCIAMgBCkDADcDuAIgAyADKQPgBDcDwAIgAyADKQOABTcDsAIgA0HQBGogA0HAAmogA0GwAmoQ2UQgBCADQdgEaiIGKQMAIgI3AwAgAyACNwOoAiADIAMpA9AEIgI3A4AFIAMgAjcDoAIgA0HABGoiBSADQaACaiIIKQMIIgFCBH03AwggBSAIKQMAIAFCBFStfTcDACADIAMpA8gENwOYAiADIAMpA8AENwOQAiADQYAFaiADQZACakENENZEIAMgBykDADcDiAIgAyADKQOgBTcDgAIgA0GgBGogA0GAAmpB4gAQ1UQgAyAEKQMAIgI3A/gBIAMgAjcD6AEgAyADKQOABSICNwPwASADIAI3A+ABIANBkARqIgUgA0HwAWoiBykDCCIBIANB4AFqIggpAwgiAhDdRCAFIAUpAwAgASAIKQMAfiACIAcpAwB+fHw3AwAgAyADKQOoBDcD2AEgAyADKQOYBDcDyAEgAyADKQOgBDcD0AEgAyADKQOQBDcDwAEgA0GwBGogA0HQAWogA0HAAWoQ2kQgAyAEKQMANwO4ASADIAMpA7gENwOoASADIAMpA4AFNwOwASADIAMpA7AENwOgASADQdAEaiADQbABaiADQaABahDaRCADIAQpAwA3A5gBIAMgAykDgAU3A5ABIANB8ANqIANBkAFqQgEQ20QgAyADKQP4AzcDiAEgAyAGKQMANwN4IAMgAykD8AM3A4ABIAMgAykD0AQ3A3AgA0GABGoiBiADQfAAaiIFKQMIIgEgA0GAAWoiBykDCHwiAjcDCCAGIAEgAlatIAUpAwAgBykDAHx8NwMAIAMgBCkDADcDaCADIAMpA4AFNwNgIAMpA4gEIQEgAykDgAQhAiADQYAEaiADQeAAaiADKQPQBCIJQj+IENtEIAQgAykDiAQiCzcDACADIAs3A0ggAyADKQOABCILNwOABSADIAs3A0AgA0HQAGogCkL//wB8QgGIIANBQGsQ3EQgA0IANwPoAyADQgA3AyggA0IANwPgAyADQgA3AyAgA0EwaiABIAKEQgBSrSACIAmFQjCIQoCAAoOEIANBIGoQ3EQgA0EQaiADKQNQIAMpA1ggAykDMCADKQM4EINHIAMpAxghAiADKQMQIQELIAAgAjcDCCAAIAE3AwAgA0HABWokAQsQACAAIAE3AwggACACNwMAC2wBAn4CQCACQcAATgRAIAEpAwghAyABQgA3AwggASADIAJBQGqthjcDAAwBCyABIAEpAwgiAyACrSIEhjcDCCABIAEpAwAgBIYgA0HAACACa62IhDcDAAsgACABKQMANwMAIAAgASkDCDcDCAtFAQN+IAEgASkDACIDIAKtIgSIIgU3AwAgAUEIaiIBIANBwAAgAmuthiABKQMAIASIhCIDNwMAIAAgAzcDCCAAIAU3AwALDQAgAa0gAK1+QiCIpwszAQF+IABCIIgiAiABQv////8Pg35CIIggAUIgiCIBIAJ+fCABIABC/////w+DfkIgiHwLhAECAX8CfiMBQUBqIgMkASADQTBqIAEpAwAiBCACKQMAIgUQ3UQgBCACKQMIENhEIQQgASkDCCAFENhEIQUgAyADKQM4NwMYIAMgAykDMDcDECADQSBqIANBEGogBBDbRCADIAMpAyg3AwggAyADKQMgNwMAIAAgAyAFENtEIANBQGskAQsvAQJ+IAAgASkDCCIDIAIpAwgiBH03AwggACABKQMAIAIpAwB9IAMgBFStfTcDAAsmAQF+IAAgASkDCCIDIAJ8IgI3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DAALAAsgAA0IIBVFDQNBASEHA0AgBCAHQQJ0aigCACIOBEAgAyAHQQN0aiAOIAIgBhCCRkEBIQ8gB0EBaiIHQQpHDQEMCgsLQQEhDyAHQQpPDQgDQCAEIAdBAnRqKAIADQEgB0EBaiIHQQpHDQALDAgLQRwhEgwFCyAWIQwgCSEKCyAKIBIgDWsiFCAKIBRKGyIKIAtB/////wdzSg0CQT0hEiARIAogC2oiCSAJIBFIGyIHIA5KDQMgAEEgIAcgCSAMEIRGIAAgECALEIBGIABBMCAHIAkgDEGAgARzEIRGIABBMCAKIBRBABCERiAAIA0gFBCARiAAQSAgByAJIAxBgMAAcxCERgwBCwtBACEPDAMLQT0hEgsQ+jsgEjYCAAtBfyEPCyAIQdAAaiQBIA8LGAAgAC0AAEEgcUUEQCABIAIgABCNQBoLC20BA38gACgCACwAABCFQUUEQEEADwsDQCAAKAIAIQNBfyEBIAJBzJmz5gBNBEBBfyADLAAAQTBrIgEgAkEKbCICaiABIAJB/////wdzShshAQsgACADQQFqNgIAIAEhAiADLAABEIVBDQALIAELtgQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAECBQMEBgcICQoLDA0ODxAREgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAg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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOEgABAgUDBAYHCAkKCwwNDg8QERILIAIgAigCACIBQQRqNgIAIAAgASgCADYCAAwRCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAMEAsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAAwOCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAMDQsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADAwLIAIgAigCACIBQQRqNgIAIAAgATIBADcDAAwLCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAMCgsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADAkLIAIgAigCACIBQQRqNgIAIAAgATEAADcDAAwICyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwAMBwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADAYLIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAAwFCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwAMBAsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADAMLIAIgAigCACIBQQRqNgIAIAAgATUCADcDAAwCCyACIAIoAgBBB2pBeHEiAUEIajYCACADIAErAwAQ8EcgACADKQMINwMIIAAgAykDADcDAAwBCyACIAIoAgBBB2pBeHEiAUEQajYCACABKQMAIQQgACABKQMINwMIIAAgBDcDAAsgA0EQaiQBC3EBBH8gACgCACIDKAIAQTBrIgJBCUsEQEEADwsDQEF/IQQgAUHMmbPmAE0EQEF/IAIgAUEKbCIBaiACIAFB/////wdzSxshBAsgAygCBCECIAQhASADQQRqIQMgAkEwayICQQpJDQALIAAgAzYCACAEC48SAhR/An4jAUHQAGsiByQBIAAoAkwaIABBARCLQBoCQCABKAIAIgRFDQAgB0EgaiEWA0ACQCAEEKdBBEADQCABIgRBBGohASAEKAIEEKdBDQALIBchGANAIBgiF0IBfCEYAn8CQCAAKAIEIgEgACgCCEYNACABLAAAQQBIDQAgACABQQFqNgIEIAEtAAAM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IQEjAEGQkuQBaigCACIARQRAIwBBkJLkAWojBSIANgIACwJAIAFBACAAIAFqIgEgAE0bDQAQzT4gAUkEQCABENoBRQ0BCyMAQZCS5AFqIAE2AgAgAA8LEPo7QTA2AgBBfwvKAQEBfyMAQZCS5AFqKAIAIgFFBEAjAEGQkuQBaiMFIgE2AgALIAACfwJAEM0+IAFJBEAgARDaAUUNAQsjAEGQkuQBaiABNgIAIAEMAQsQ+jtBMDYCACMAQZCS5AFqKAIAIQFBfwtrQQdqQXhxIQAgAUUEQCMAQZCS5AFqIwUiATYCAAsCQCAAQQAgACABaiIAIAFNGw0AEM0+IABJBEAgABDaAUUNAQsjAEGQkuQBaiAANgIAQX9BACABQX9GGw8LEPo7QTA2AgBBfwsxAgF/AX4gAEKAgICAgICAgIB/UQRAIwAiAUG8swlqEJFDAAsgACAAQj+HIgKFIAJ9CyoBAX8gAEGAgICAeEYEQCMAIgBBirIJahCRQwALIAAgAEEfdSIBcyABawtQAQF/IAEgAkKAgICAgICAgIB/hYRQBEAjACIAQdiwCWoQkUMACyAAQgAgAX0gASACQgBTIgMbNwMAIABCACACIAFCAFKtfH0gAiADGzcDCAuoBgIFfgN/AkAgAb0iBEL///////////8AgyICQoCAgICAgID4/wB9QoCAgICAgICIgH9WIAC9IgNC////////////AIMiBUKAgICAgICA+P8AfUKBgICAgICAiIB/WnFFBEAgBUKBgICAgICA+P8AWgRAIANCgICAgICAgASEvw8LIAJCgYCAgICAgPj/AFoEQCAEQoCAgICAgIAEhL8PCyAFQoCAgICAgID4/wBRBEBEAAAAAAAA+H8gACADIASFQoCAgICAgICAgH9RGw8LIAJCgICAgICAgPj/AFENASAFUARAIAJCAFINAiADIASDvw8LIAAhASACUA0BCyAEIAMgAiAFViIHGyICQv////////8HgyEFIAMgBCAHGyIEQjSIp0H/D3EhCCAEQv////////8HgyEDIAIgBIUhBiACQjSIp0H/D3EiBwR+IAUFQQwgAqdnQSBqIAVCIIinZyAFQoCAgIAQVBsiCWshByAFIAlBC2uthgtCA4YhBQJ+IAgEfiADBUEMIASnZ0EgaiADQiCIp2cgA0KAgICAEFQbIglrIQggAyAJQQtrrYYLQgOGQoCAgICAgIDAAIQiBCAHIAhGDQAaQgEgByAIayIIQT9LDQAaIARBwAAgCGuthkIAUq0gBCAIrYiECyEDIAJCgICAgICAgICAf4MhBCAFQoCAgICAgIDAAIQhAgJAAkAgBkIAUwRARAAAAAAAAAAAIQEgAiADUQ0DIAIgA30iAkL/////////P1YNASAHIAKnZ0EgaiACQiCIp2cgAkKAgICAEFQbQQhrIghrIQcgAiAIrYYhAgwCCyACIAN8IgJCgICAgICAgIABg1ANACADQgGDIAJCAYiEIQIgB0EBaiEHCyAHQf8PSA0AIARCgICAgICAgPj/AIS/DwtBACEIAkAgB0EASgRAIAchCAwBCyACIAdBP2qthkIAUq0gAkEBIAdrrYiEIQILIAKnQQdxIgdBBEutIAJCA4hC/////////weDIAitQjSGhCAEhHwhAwJAIAdBBEYEQCADQgGDIAN8IQMMAQsgB0UNAAsgA78hAQsgAQvmBAEIfwJAIAG8IgRB/////wdxIgNBgICA/AdrQYCAgIR4SyAAvCICQf////8HcSIFQYCAgPwHa0GBgICEeE9xRQRAIAVBgYCA/AdPBEAgAkGAgIACcr4PCyADQYGAgPwHTwRAIARBgICAAnK+DwsgBUGAgID8B0YEQEMAAMB/IAAgAiAEc0GAgICAeEYbDwsgA0GAgID8B0YNASAFRQRAIAMNAiACIARxvg8LIAAhASADRQ0BCyAEIAIgAyAFSyIDGyIFIAIgBCADGyIDcyEHIANB////A3EiAkEAIAJnIgRBCGsgA0EXdkH/AXEiAht0QQN0QYCAgCByIQYgBUH///8DcSIDQQAgA2ciCEEIayAFQRd2Qf8BcSIDG3RBA3QhCQJ/IAYgA0EJIAhrIAMbIgMgAkEJIARrIAIbIgJGDQAaQQEgAyACayICQR9LDQAaIAYgAnYgBkEgIAJrdEEAR3ILIQQgCUGAgIAgciECIAVBgICAgHhxIQUCQAJAIAdBAEgEQEMAAAAAIQEgAiAERg0DIAIgBGsiAkH///8fSw0BIAMgAmdBBWsiBGshAyACIAR0IQIMAgsgAiAEaiICQYCAgMAAcUUNACAEQQFxIAJBAXZyIQIgA0EBaiEDCyADQf8BSA0AIAVBgICA/Adyvg8LQQAhBAJAIANBAEoEQCADIQQMAQsgAkEBIANrdiACIANBH2p0QQBHciECCyACQQN2Qf///wNxIARBF3RyIAVyIQMgAyACQQdxIgJBBEtqIQMCQCACQQRGBEAgA0EBcSADaiEDDAELIAJFDQALIAO+IQELIAEL3AkCBH4EfyMBQfAAayIKJAEgBEL///////////8AgyEGAkACQCABUCIJIAJC////////////AIMiBUKAgICAgIDA//8AfUKAgICAgIDAgIB/VCAFUBtFBEAgA0IAUiAGQoCAgICAgMD//wB9IgdCgICAgICAwICAf1YgB0KAgICAgIDAgIB/URsNAQsgCSAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgBkKAgICAgIDA//8AVCAGQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAFQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiCRshBEIAIAEgCRshAwwCCyADIAZCgICAgICAwP//AIWEUA0BIAEgBYRQBEAgAyAGhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAGhEIAUg0AIAEhAyACIQQMAQsgAyABIAEgA1QgBSAGVCAFIAZRGyILGyEGIAQgAiALGyIHQv///////z+DIQUgAiAEIAsbIgJCMIinQf//AXEhDCAHQjCIp0H//wFxIglFBEAgCkHgAGogBiAFIAYgBSAFUCIJG3kgCUEGdK18pyIJQQ9rEIhHQRAgCWshCSAKKQNgIQYgCikDaCEFCyABIAMgCxshAyACQv///////z+DIQQgDEUEQCAKQdAAaiADIAQgAyAEIARQIgsbeSALQQZ0rXynIgtBD2sQiEdBECALayEMIAopA1ghBCAKKQNQIQMLIARCA4YgA0I9iIRCgICAgICAgASEIQEgBUIDhiAGQj2IhCEEIANCA4YhBSACIAeFIQMCQCAJIAxGDQAgCSAMayILQf8ASwRAQgAhAUIBIQUMAQsgCkFAayAFIAFBgAEgC2sQiEcgCkEwaiAFIAEgCxCmSCAKKQMwIAopA0AgCikDSIRCAFKthCEFIAopAzghAQsgBEKAgICAgICABIQhCCAGQgOGIQYCQCADQgBTBEBCACEDQgAhBCAFIAaFIAEgCIWEUA0CIAYgBX0hAiAIIAF9IAUgBlatfSIEQv////////8DVg0BIApBIGogAiAEIAIgBCAEUCILG3kgC0EGdK18p0EMayILEIhHIAkgC2shCSAKKQMoIQQgCikDICECDAELIAUgBnwiAiAFVK0gASAIfHwiBEKAgICAgICACINQDQAgBUIBgyAEQj+GIAJCAYiEhCECIAlBAWohCSAEQgGIIQQLIAdCgICAgICAgICAf4MhBSAJQf//AU4EQCAFQoCAgICAgMD//wCEIQRCACEDDAELQQAhCwJAIAlBAEoEQCAJIQsMAQsgCkEQaiACIAQgCUH/AGoQiEcgCiACIARBASAJaxCmSCAKKQMAIAopAxAgCikDGIRCAFKthCECIAopAwghBAsgBEI9hiACQgOIhCEDIARCA4hC////////P4MgC61CMIaEIAWEIQQgBCADIAKnQQdxIglBBEutfCIFIANUrXwhBAJAAkAgCUEERwRAIAUhAwwBCyAEIAVCAYMiASAFfCIDIAFUrXwhBAwBCyAJRQ0BCwsgACADNwMAIAAgBDcDCCAKQfAAaiQBC0ICAX4BfyAAIAF8IQICQCABQgBZBEAgACACVw0BIwAiA0GmrwlqEJFDAAsgACACVQ0AIwAiA0GmrwlqEJFDAAsgAgtAAQF/IAAgAWohAgJAIAFBAE4EQCAAIAJMDQEjACIAQfStCWoQkUMACyAAIAJKDQAjACIAQfStCWoQkUMACyACC24BAX4gASADfCIFIANUrSACIAR8fCEDAkAgBEIAWQRAIAEgBVggAiADVyACIANRGw0BIwAiAEHCrAlqEJFDAAsgASAFViACIANVIAIgA1EbDQAjACIAQcKsCWoQkUMACyAAIAU3AwAgACADNwMIC08BAn8gAKchAgJAAn4gAUEgcQRAIAIgAUEga3QhA0IADAELIAFFDQEgAEIgiKcgAXQgAkEgIAFrdnIhAyACIAF0rQsgA61CIIaEIQALIAALUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLVgECfyAAQiCIpyECAkACfyABQSBxBEAgAiABQSBrdSEDIAJBH3UMAQsgAUUNASACQSAgAWt0IACnIAF2ciEDIAIgAXULIQEgA60gAa1CIIaEIQALIAALVAEBfgJ+IANBwABxBEAgAiADQUBqrYchASACQj+HDAELIAIgA0UNABogAkHAACADa62GIAEgA60iBIiEIQEgAiAEhwshBCAAIAE3AwAgACAENwMIC0cBAX9BASECAkACQAJAAkACQCAAQQFrDggEAAMBAwMDAgMLIAFBAXENAgwDCyABQQNxDQEMAgsgAUEHcUUNAQtBACECCyACC9oCAQF/AkACQAJAAkACQCAAQQFrDggAAQQCBAQEAwQLAkACQAJAIANBAWsOBQEBAAACAAsgAiABLQAAOgAADwsgAiABLQAAOgAADwsgAiABLQAAOgAADwsgAUEBcQ0CAkACQAJAIANBAWsOBQEBAAACAAsgAiABLwEAOwEADwsgAiABLwEAOwEADwsgAiABLwEAOwEADwsgAUEDcQ0BAkACQAJAIANBAWsOBQEBAAACAAsgAiABKAIANgIADwsgAiABKAIANgIADwsgAiABKAIANgIADwsgAUEHcQ0AAkACQAJAIANBAWsOBQEBAAACAAsgAiABKQMANwMADwsgAiABKQMANwMADwsgAiABKQMANwMADwsjAEGw++4BaiABQRR2IAFBBHZzQf8HcUECdGohBANAIAQgBCgCACIDQQEgAxs2AgAgAw0ACyACIAEgABDOPhogBEEANgIAC6oBAQF/AkACQAJAAkACQCAAQQFrDggAAQQCBAQEAwQLIAEgAi0AADoAAA8LIAFBAXENAiABIAIvAQA7AQAPCyABQQNxDQEgASACKAIANgIADwsgAUEHcQ0AIAEgAikDADcDAA8LIwBBsPvuAWogAUEUdiABQQR2c0H/B3FBAnRqIQQDQCAEIAQoAgAiA0EBIAMbNgIAIAMNAAsgASACIAAQzj4aIARBADYCAAuHGQEBfgJ/AkACQAJAAkACQAJAIABBAWsOCAABBAIEBAQDBAsgAy0AACEAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQFrDgUBAQIDBAALIAVBAWsOBQUFBAQGBAsgBUEBaw4FBwcGBggGCyAFQQFrDgUJCQgICggLIAVBAWsOBQsLCgoMCgsgBUEBaw4FDQ0MDA4MCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDRMaIAIgBToAAAwSCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDRIaIAIgBToAAAwRCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDREaIAIgBToAAAwQCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDRAaIAIgBToAAAwPCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQ8aIAIgBToAAAwOCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQ4aIAIgBToAAAwNCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQ0aIAIgBToAAAwMCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQwaIAIgBToAAAwLCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQsaIAIgBToAAAwKCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQoaIAIgBToAAAwJCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQkaIAIgBToAAAwICyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQgaIAIgBToAAAwHCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQcaIAIgBToAAAwGCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQYaIAIgBToAAAwFCyABIAAgAS0AACIFIAUgAi0AAEYiAxs6AABBASADDQUaIAIgBToAAAwECyABQQFxDQIgAy8BACEAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQFrDgUBAQIDBAALIAVBAWsOBQUFBAQGBAsgBUEBaw4FBwcGBggGCyAFQQFrDgUJCQgICggLIAVBAWsOBQsLCgoMCgsgBUEBaw4FDQ0MDA4MCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDRIaIAIgBTsBAAwRCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDREaIAIgBTsBAAwQCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDRAaIAIgBTsBAAwPCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQ8aIAIgBTsBAAwOCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQ4aIAIgBTsBAAwNCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQ0aIAIgBTsBAAwMCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQwaIAIgBTsBAAwLCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQsaIAIgBTsBAAwKCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQoaIAIgBTsBAAwJCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQkaIAIgBTsBAAwICyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQgaIAIgBTsBAAwHCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQcaIAIgBTsBAAwGCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQYaIAIgBTsBAAwFCyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQUaIAIgBTsBAAwECyABIAAgAS8BACIFIAUgAi8BAEYiAxs7AQBBASADDQQaIAIgBTsBAAwDCyABQQNxDQEgAygCACEAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQFrDgUBAQIDBAALIAVBAWsOBQUFBAQGBAsgBUEBaw4FBwcGBggGCyAFQQFrDgUJCQgICggLIAVBAWsOBQsLCgoMCgsgBUEBaw4FDQ0MDA4MCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDREaIAIgBTYCAAwQCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDRAaIAIgBTYCAAwPCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQ8aIAIgBTYCAAwOCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQ4aIAIgBTYCAAwNCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQ0aIAIgBTYCAAwMCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQwaIAIgBTYCAAwLCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQsaIAIgBTYCAAwKCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQoaIAIgBTYCAAwJCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQkaIAIgBTYCAAwICyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQgaIAIgBTYCAAwHCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQcaIAIgBTYCAAwGCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQYaIAIgBTYCAAwFCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQUaIAIgBTYCAAwECyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQQaIAIgBTYCAAwDCyABIAAgASgCACIFIAUgAigCAEYiAxs2AgBBASADDQMaIAIgBTYCAAwCCyABQQdxDQAgAykDACEGAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQFrDgUBAQIDBAALIAVBAWsOBQUFBAQGBAsgBUEBaw4FBwcGBggGCyAFQQFrDgUJCQgICggLIAVBAWsOBQsLCgoMCgsgBUEBaw4FDQ0MDA4MCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDRAaIAIgBjcDAAwPCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQ8aIAIgBjcDAAwOCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQ4aIAIgBjcDAAwNCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQ0aIAIgBjcDAAwMCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQwaIAIgBjcDAAwLCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQsaIAIgBjcDAAwKCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQoaIAIgBjcDAAwJCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQkaIAIgBjcDAAwICyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQgaIAIgBjcDAAwHCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQcaIAIgBjcDAAwGCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQYaIAIgBjcDAAwFCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQUaIAIgBjcDAAwECyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQQaIAIgBjcDAAwDCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQMaIAIgBjcDAAwCCyABIAYgASkDACIGIAYgAikDAFEiBRs3AwBBASAFDQIaIAIgBjcDAAwBCyMAQbD77gFqIAFBFHYgAUEEdnNB/wdxQQJ0aiEFA0AgBSAFKAIAIgRBASAEGzYCACAEDQALIAEgAiAAEJZCRQRAIAEgAyAAEM4+GiAFQQA2AgBBAQ8LIAIgASAAEM4+GiAFQQA2AgALQQALC84FAgF/An4CQAJAAkACQAJAIABBAWsOCAABBAIEBAQDBAsgAi0AACEFAkACQAJAAkACQCAEQQFrDgUBAQIDBAALIAEtAAAhBCABIAU6AAAgAyAEOgAADwsgAS0AACEEIAEgBToAACADIAQ6AAAPCyABLQAAIQQgASAFOgAAIAMgBDoAAA8LIAEtAAAhBCABIAU6AAAgAyAEOgAADwsgAS0AACEEIAEgBToAACADIAQ6AAAPCyABQQFxDQIgAi8BACEFAkACQAJAAkACQCAEQQFrDgUBAQIDBAALIAEvAQAhBCABIAU7AQAgAyAEOwEADwsgAS8BACEEIAEgBTsBACADIAQ7AQAPCyABLwEAIQQgASAFOwEAIAMgBDsBAA8LIAEvAQAhBCABIAU7AQAgAyAEOwEADwsgAS8BACEEIAEgBTsBACADIAQ7AQAPCyABQQNxDQEgAigCACEFAkACQAJAAkACQCAEQQFrDgUBAQIDBAALIAEoAgAhBCABIAU2AgAgAyAENgIADwsgASgCACEEIAEgBTYCACADIAQ2AgAPCyABKAIAIQQgASAFNgIAIAMgBDYCAA8LIAEoAgAhBCABIAU2AgAgAyAENgIADwsgASgCACEEIAEgBTYCACADIAQ2AgAPCyABQQdxDQAgAikDACEHAkACQAJAAkACQCAEQQFrDgUBAQIDBAALIAEpAwAhBiABIAc3AwAgAyAGNwMADwsgASkDACEGIAEgBzcDACADIAY3AwAPCyABKQMAIQYgASAHNwMAIAMgBjcDAA8LIAEpAwAhBiABIAc3AwAgAyAGNwMADwsgASkDACEGIAEgBzcDACADIAY3AwAPCyMAQbD77gFqIAFBFHYgAUEEdnNB/wdxQQJ0aiEFA0AgBSAFKAIAIgRBASAEGzYCACAEDQALIAMgASAAEM4+GiABIAIgABDOPhogBUEANgIACwcAIAAtAAALBwAgAC8BAAsHACAAKAIACwcAIAApAwALXgIBfwJ+IwBBsPvuAWogAUEUdiABQQR2c0H/B3FBAnRqIQIDQCACIAIoAgAiA0EBIAMbNgIAIAMNAAsgASkDCCEEIAEpAwAhBSACQQA2AgAgACAENwMIIAAgBTcDAAsJACAAIAE6AAALCQAgACABOwEACwkAIAAgATYCAAsJACAAIAE3AwALTgEBfyMAQbD77gFqIABBFHYgAEEEdnNB/wdxQQJ0aiEDA0AgAyADKAIAIgRBASAEGzYCACAEDQALIAAgATcDACAAIAI3AwggA0EANgIACxYAIAAtAAAhAiAAIAE6AAAgAkH/AXELFwAgAC8BACECIAAgATsBACACQf//A3ELEgAgACgCACECIAAgATYCACACCxQBAX4gACkDACEDIAAgATcDACADC3ECAX8BfiMAQbD77gFqIAFBFHYgAUEEdnNB/wdxQQJ0aiEFA0AgBSAFKAIAIgRBASAEGzYCACAEDQALIAEpAwAhBiABIAI3AwAgAUEIaiIEKQMAIQIgBCADNwMAIAVBADYCACAAIAI3AwggACAGNwMAC7cFAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBAWsOBQEBAgMEAAsgBEEBaw4FBQUEBAYECyAEQQFrDgUHBwYGCAYLIARBAWsOBQkJCAgKCAsgBEEBaw4FCwsKCgwKCyAEQQFrDgUNDQwMDgwLIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBA0PDA4LIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNDQwOCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQwMDQsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAERQ0LDAwLIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNCgwLCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQkMCgsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAERQ0IDAkLIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNBwwICyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQYMBwsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAERQ0FDAYLIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNBAwFCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQMMBAsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAERQ0CDAMLIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNAQwCCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIAQNAQsgASADOgAAQQAhAAsgAAu3BQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADQQFrDgUBAQIDBAALIARBAWsOBQUFBAQGBAsgBEEBaw4FBwcGBggGCyAEQQFrDgUJCQgICggLIARBAWsOBQsLCgoMCgsgBEEBaw4FDQ0MDA4MCyAAIAIgAC8BACIDIAMgAS8BAEYiBBs7AQBBASEAIAQNDwwOCyAAIAIgAC8BACIDIAMgAS8BAEYiBBs7AQBBASEAIARFDQ0MDgsgACACIAAvAQAiAyADIAEvAQBGIgQbOwEAQQEhACAERQ0MDA0LIAAgAiAALwEAIgMgAyABLwEARiIEGzsBAEEBIQAgBEUNCwwMCyAAIAIgAC8BACIDIAMgAS8BAEYiBBs7AQBBASEAIARFDQoMCwsgACACIAAvAQAiAyADIAEvAQBGIgQbOwEAQQEhACAERQ0JDAoLIAAgAiAALwEAIgMgAyABLwEARiIEGzsBAEEBIQAgBEUNCAwJCyAAIAIgAC8BACIDIAMgAS8BAEYiBBs7AQBBASEAIARFDQcMCAsgACACIAAvAQAiAyADIAEvAQBGIgQbOwEAQQEhACAERQ0GDAcLIAAgAiAALwEAIgMgAyABLwEARiIEGzsBAEEBIQAgBEUNBQwGCyAAIAIgAC8BACIDIAMgAS8BAEYiBBs7AQBBASEAIARFDQQMBQsgACACIAAvAQAiAyADIAEvAQBGIgQbOwEAQQEhACAERQ0DDAQLIAAgAiAALwEAIgMgAyABLwEARiIEGzsBAEEBIQAgBEUNAgwDCyAAIAIgAC8BACIDIAMgAS8BAEYiBBs7AQBBASEAIARFDQEMAgsgACACIAAvAQAiAyADIAEvAQBGIgQbOwEAQQEhACAEDQELIAEgAzsBAEEAIQALIAALtwUAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgA0EBaw4FAQECAwQACyAEQQFrDgUFBQQEBgQLIARBAWsOBQcHBgYIBgsgBEEBaw4FCQkICAoICyAEQQFrDgULCwoKDAoLIARBAWsOBQ0NDAwODAsgACACIAAoAgAiAyADIAEoAgBGIgQbNgIAQQEhACAEDQ8MDgsgACACIAAoAgAiAyADIAEoAgBGIgQbNgIAQQEhACAERQ0NDA4LIAAgAiAAKAIAIgMgAyABKAIARiIEGzYCAEEBIQAgBEUNDAwNCyAAIAIgACgCACIDIAMgASgCAEYiBBs2AgBBASEAIARFDQsMDAsgACACIAAoAgAiAyADIAEoAgBGIgQbNgIAQQEhACAERQ0KDAsLIAAgAiAAKAIAIgMgAyABKAIARiIEGzYCAEEBIQAgBEUNCQwKCyAAIAIgACgCACIDIAMgASgCAEYiBBs2AgBBASEAIARFDQgMCQsgACACIAAoAgAiAyADIAEoAgBGIgQbNgIAQQEhACAERQ0HDAgLIAAgAiAAKAIAIgMgAyABKAIARiIEGzYCAEEBIQAgBEUNBgwHCyAAIAIgACgCACIDIAMgASgCAEYiBBs2AgBBASEAIARFDQUMBgsgACACIAAoAgAiAyADIAEoAgBGIgQbNgIAQQEhACAERQ0EDAULIAAgAiAAKAIAIgMgAyABKAIARiIEGzYCAEEBIQAgBEUNAwwECyAAIAIgACgCACIDIAMgASgCAEYiBBs2AgBBASEAIARFDQIMAwsgACACIAAoAgAiAyADIAEoAgBGIgQbNgIAQQEhACAERQ0BDAILIAAgAiAAKAIAIgMgAyABKAIARiIEGzYCAEEBIQAgBA0BCyABIAM2AgBBACEACyAAC7cFAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANBAWsOBQEBAgMEAAsgBEEBaw4FBQUEBAYECyAEQQFrDgUHBwYGCAYLIARBAWsOBQkJCAgKCAsgBEEBaw4FCwsKCgwKCyAEQQFrDgUNDQwMDgwLIAAgAiAAKQMAIgIgAiABKQMAUSIDGzcDAEEBIQAgAw0PDA4LIAAgAiAAKQMAIgIgAiABKQMAUSIDGzcDAEEBIQAgA0UNDQwOCyAAIAIgACkDACICIAIgASkDAFEiAxs3AwBBASEAIANFDQwMDQsgACACIAApAwAiAiACIAEpAwBRIgMbNwMAQQEhACADRQ0LDAwLIAAgAiAAKQMAIgIgAiABKQMAUSIDGzcDAEEBIQAgA0UNCgwLCyAAIAIgACkDACICIAIgASkDAFEiAxs3AwBBASEAIANFDQkMCgsgACACIAApAwAiAiACIAEpAwBRIgMbNwMAQQEhACADRQ0IDAkLIAAgAiAAKQMAIgIgAiABKQMAUSIDGzcDAEEBIQAgA0UNBwwICyAAIAIgACkDACICIAIgASkDAFEiAxs3AwBBASEAIANFDQYMBwsgACACIAApAwAiAiACIAEpAwBRIgMbNwMAQQEhACADRQ0FDAYLIAAgAiAAKQMAIgIgAiABKQMAUSIDGzcDAEEBIQAgA0UNBAwFCyAAIAIgACkDACICIAIgASkDAFEiAxs3AwBBASEAIANFDQMMBAsgACACIAApAwAiAiACIAEpAwBRIgMbNwMAQQEhACADRQ0CDAMLIAAgAiAAKQMAIgIgAiABKQMAUSIDGzcDAEEBIQAgA0UNAQwCCyAAIAIgACkDACICIAIgASkDAFEiAxs3AwBBASEAIAMNAQsgASACNwMAQQAhAAsgAAuFAQEDfiMAQbD77gFqIABBFHYgAEEEdnNB/wdxQQJ0aiEEA0AgBCAEKAIAIgVBASAFGzYCACAFDQALAkAgACkDACIGIAEpAwCFIAApAwgiByABKQMIhYQiCFAEQCAAIAI3AwAgACADNwMIDAELIAEgBjcDACABIAc3AwgLIARBADYCACAIUAt6AAJAAkACQAJAAkACQCACQQFrDgUBAQIDBAALIAAgAC0AACICIAFqOgAADAQLIAAgAC0AACICIAFqOgAADAMLIAAgAC0AACICIAFqOgAADAILIAAgAC0AACICIAFqOgAADAELIAAgAC0AACICIAFqOgAACyACQf8BcQt7AAJAAkACQAJAAkACQCACQQFrDgUBAQIDBAALIAAgAC8BACICIAFqOwEADAQLIAAgAC8BACICIAFqOwEADAMLIAAgAC8BACICIAFqOwEADAILIAAgAC8BACICIAFqOwEADAELIAAgAC8BACICIAFqOwEACyACQf//A3ELdwACQAJAAkACQAJAIAJBAWsOBQEBAgMEAAsgACAAKAIAIgIgAWo2AgAgAg8LIAAgACgCACICIAFqNgIAIAIPCyAAIAAoAgAiAiABajYCACACDwsgACAAKAIAIgIgAWo2AgAgAg8LIAAgACgCACICIAFqNgIAIAILdwACQAJAAkACQAJAIAJBAWsOBQEBAgMEAAsgACABIAApAwAiAXw3AwAgAQ8LIAAgASAAKQMAIgF8NwMAIAEPCyAAIAEgACkDACIBfDcDACABDwsgACABIAApAwAiAXw3AwAgAQ8LIAAgASAAKQMAIgF8NwMAIAELfAIBfwF+IwBBsPvuAWogAUEUdiABQQR2c0H/B3FBAnRqIQUDQCAFIAUoAgAiBEEBIAQbNgIAIAQNAAsgASABKQMAIgYgAnwiAjcDACABQQhqIgQgAiAGVK0gBCkDACICIAN8fDcDACAFQQA2AgAgACACNwMIIAAgBjcDAAt6AAJAAkACQAJAAkACQCACQQFrDgUBAQIDBAALIAAgAC0AACICIAFrOgAADAQLIAAgAC0AACICIAFrOgAADAMLIAAgAC0AACICIAFrOgAADAILIAAgAC0AACICIAFrOgAADAELIAAgAC0AACICIAFrOgAACyACQf8BcQt7AAJAAkACQAJAAkACQCACQQFrDgUBAQIDBAALIAAgAC8BACICIAFrOwEADAQLIAAgAC8BACICIAFrOwEADAMLIAAgAC8BACICIAFrOwEADAILIAAgAC8BACICIAFrOwEADAELIAAgAC8BACICIAFrOwEACyACQf//A3ELdwACQAJAAkACQAJAIAJBAWsOBQEBAgMEAAsgACAAKAIAIgIgAWs2AgAgAg8LIAAgACgCACICIAFrNgIAIAIPCyAAIAAoAgAiAiABazYCACACDwsgACAAKAIAIgIgAWs2AgAgAg8LIAAgACgCACICIAFrNgIAIAILeQEBfgJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAApAwAiAyABfTcDACADDwsgACAAKQMAIgMgAX03AwAgAw8LIAAgACkDACIDIAF9NwMAIAMPCyAAIAApAwAiAyABfTcDACADDwsgACAAKQMAIgMgAX03AwAgAwt6AgF/An4jAEGw++4BaiABQRR2IAFBBHZzQf8HcUECdGohBQNAIAUgBSgCACIEQQEgBBs2AgAgBA0ACyABIAEpAwAiBiACfTcDACABQQhqIgQgBCkDACIHIAN9IAIgBlatfTcDACAFQQA2AgAgACAHNwMIIAAgBjcDAAt3AAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAAtAAAiAiABcToAACACDwsgACAALQAAIgIgAXE6AAAgAg8LIAAgAC0AACICIAFxOgAAIAIPCyAAIAAtAAAiAiABcToAACACDwsgACAALQAAIgIgAXE6AAAgAgt3AAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAAvAQAiAiABcTsBACACDwsgACAALwEAIgIgAXE7AQAgAg8LIAAgAC8BACICIAFxOwEAIAIPCyAAIAAvAQAiAiABcTsBACACDwsgACAALwEAIgIgAXE7AQAgAgt3AAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAAoAgAiAiABcTYCACACDwsgACAAKAIAIgIgAXE2AgAgAg8LIAAgACgCACICIAFxNgIAIAIPCyAAIAAoAgAiAiABcTYCACACDwsgACAAKAIAIgIgAXE2AgAgAgt3AAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAEgACkDACIBgzcDACABDwsgACABIAApAwAiAYM3AwAgAQ8LIAAgASAAKQMAIgGDNwMAIAEPCyAAIAEgACkDACIBgzcDACABDwsgACABIAApAwAiAYM3AwAgAQtzAgF/AX4jAEGw++4BaiABQRR2IAFBBHZzQf8HcUECdGohBQNAIAUgBSgCACIEQQEgBBs2AgAgBA0ACyABIAEpAwAiBiACgzcDACABQQhqIgQgBCkDACICIAODNwMAIAVBADYCACAAIAI3AwggACAGNwMAC3oAAkACQAJAAkACQAJAIAJBAWsOBQEBAgMEAAsgACAALQAAIgIgAXI6AAAMBAsgACAALQAAIgIgAXI6AAAMAwsgACAALQAAIgIgAXI6AAAMAgsgACAALQAAIgIgAXI6AAAMAQsgACAALQAAIgIgAXI6AAALIAJB/wFxC3sAAkACQAJAAkACQAJAIAJBAWsOBQEBAgMEAAsgACAALwEAIgIgAXI7AQAMBAsgACAALwEAIgIgAXI7AQAMAwsgACAALwEAIgIgAXI7AQAMAgsgACAALwEAIgIgAXI7AQAMAQsgACAALwEAIgIgAXI7AQALIAJB//8DcQt3AAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAAoAgAiAiABcjYCACACDwsgACAAKAIAIgIgAXI2AgAgAg8LIAAgACgCACICIAFyNgIAIAIPCyAAIAAoAgAiAiABcjYCACACDwsgACAAKAIAIgIgAXI2AgAgAgt3AAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAEgACkDACIBhDcDACABDwsgACABIAApAwAiAYQ3AwAgAQ8LIAAgASAAKQMAIgGENwMAIAEPCyAAIAEgACkDACIBhDcDACABDwsgACABIAApAwAiAYQ3AwAgAQtzAgF/AX4jAEGw++4BaiABQRR2IAFBBHZzQf8HcUECdGohBQNAIAUgBSgCACIEQQEgBBs2AgAgBA0ACyABIAEpAwAiBiAChDcDACABQQhqIgQgBCkDACICIAOENwMAIAVBADYCACAAIAI3AwggACAGNwMAC3oAAkACQAJAAkACQAJAIAJBAWsOBQEBAgMEAAsgACAALQAAIgIgAXM6AAAMBAsgACAALQAAIgIgAXM6AAAMAwsgACAALQAAIgIgAXM6AAAMAgsgACAALQAAIgIgAXM6AAAMAQsgACAALQAAIgIgAXM6AAALIAJB/wFxC3sAAkACQAJAAkACQAJAIAJBAWsOBQEBAgMEAAsgACAALwEAIgIgAXM7AQAMBAsgACAALwEAIgIgAXM7AQAMAwsgACAALwEAIgIgAXM7AQAMAgsgACAALwEAIgIgAXM7AQAMAQsgACAALwEAIgIgAXM7AQALIAJB//8DcQt3AAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAAoAgAiAiABczYCACACDwsgACAAKAIAIgIgAXM2AgAgAg8LIAAgACgCACICIAFzNgIAIAIPCyAAIAAoAgAiAiABczYCACACDwsgACAAKAIAIgIgAXM2AgAgAgt3AAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAEgACkDACIBhTcDACABDwsgACABIAApAwAiAYU3AwAgAQ8LIAAgASAAKQMAIgGFNwMAIAEPCyAAIAEgACkDACIBhTcDACABDwsgACABIAApAwAiAYU3AwAgAQtzAgF/AX4jAEGw++4BaiABQRR2IAFBBHZzQf8HcUECdGohBQNAIAUgBSgCACIEQQEgBBs2AgAgBA0ACyABIAEpAwAiBiAChTcDACABQQhqIgQgBCkDACICIAOFNwMAIAVBADYCACAAIAI3AwggACAGNwMAC4YBAAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAAtAAAiAiABcUF/czoAACACDwsgACAALQAAIgIgAXFBf3M6AAAgAg8LIAAgAC0AACICIAFxQX9zOgAAIAIPCyAAIAAtAAAiAiABcUF/czoAACACDwsgACAALQAAIgIgAXFBf3M6AAAgAguGAQACQAJAAkACQAJAIAJBAWsOBQEBAgMEAAsgACAALwEAIgIgAXFBf3M7AQAgAg8LIAAgAC8BACICIAFxQX9zOwEAIAIPCyAAIAAvAQAiAiABcUF/czsBACACDwsgACAALwEAIgIgAXFBf3M7AQAgAg8LIAAgAC8BACICIAFxQX9zOwEAIAILhgEAAkACQAJAAkACQCACQQFrDgUBAQIDBAALIAAgACgCACICIAFxQX9zNgIAIAIPCyAAIAAoAgAiAiABcUF/czYCACACDwsgACAAKAIAIgIgAXFBf3M2AgAgAg8LIAAgACgCACICIAFxQX9zNgIAIAIPCyAAIAAoAgAiAiABcUF/czYCACACC4YBAAJAAkACQAJAAkAgAkEBaw4FAQECAwQACyAAIAEgACkDACIBg0J/hTcDACABDwsgACABIAApAwAiAYNCf4U3AwAgAQ8LIAAgASAAKQMAIgGDQn+FNwMAIAEPCyAAIAEgACkDACIBg0J/hTcDACABDwsgACABIAApAwAiAYNCf4U3AwAgAQt5AgF/AX4jAEGw++4BaiABQRR2IAFBBHZzQf8HcUECdGohBQNAIAUgBSgCACIEQQEgBBs2AgAgBA0ACyABIAEpAwAiBiACg0J/hTcDACABQQhqIgQgBCkDACICIAODQn+FNwMAIAVBADYCACAAIAI3AwggACAGNwMACwkAIABBADoAAAstAAJAAkACQCABQQNrDgMBAAIACyAAQQA6AAAPCyAAQQA6AAAPCyAAQQA6AAALFwEBfyAALQAAIQEgAEEBOgAAIAFBAXELdAACQAJAAkACQAJAAkAgAUEBaw4FAQECAwQACyAALQAAIQEgAEEBOgAADAQLIAAtAAAhASAAQQE6AAAMAwsgAC0AACEBIABBAToAAAwCCyAALQAAIQEgAEEBOgAADAELIAAtAAAhASAAQQE6AAALIAFBAXELVQAgAEI4hiAAQoD+A4NCKIaEIABCgID8B4NCGIYgAEKAgID4D4NCCIaEhCAAQgiIQoCAgPgPgyAAQhiIQoCA/AeDhCAAQiiIQoD+A4MgAEI4iISEhAsPACMAIgBBwKsJahCRQwALHQEBf0EAIACnIABCIIinIgEbIAFyZyABRUEFdGoLaQECfyAAIABBgIAESUEEdCIBQRBzdiIAQYD+A3FFQQN0IgIgAXIgACACQQhzdiIAQfABcUVBAnQiAXIgACABQQRzdiIAQQxxRUEBdCIBciAAIAFBAnN2IgBBAXZBfnJBAWpBAiAAa3FqCxkBAX8gAVAiAkEGdCAAQgAgAhsgAYR5p2oLQQECfwJ/QQAgAEIgiKciAiABQiCIpyIDSA0AGkECIAIgA0oNABpBACAApyICIAGnIgNJDQAaQQJBASACIANLGwsLLQACf0EAIAEgA1MNABpBAiABIANVDQAaQQAgACACVA0AGkECQQEgACACVhsLC4oBAgF/BH5BASECAkAgAL0iA0L///////////8AgyIFQoCAgICAgID4/wBWDQAgAb0iBEL///////////8AgyIGQoCAgICAgID4/wBWDQAgBSAGhFAEQEEADwsCQCADIASDQgBZBEBBfyECIAMgBFkNAQwCC0F/IQIgAyAEVQ0BCyADIARSIQILIAILggECBH4Bf0F/IQYCQCAAvSICQv///////////wCDIgRCgICAgICAgPj/AFYNACABvSIDQv///////////wCDIgVCgICAgICAgPj/AFYNACAEIAWEUARAQQAPCwJAIAIgA4NCAFkEQCACIANZDQEMAgsgAiADVQ0BCyACIANSIQYLIAYLOQAgAL1C////////////AINCgICAgICAgPj/AFYgAb1C////////////AINCgICAgICAgPj/AFZyC3QBBX9BASECAkAgALwiA0H/////B3EiBUGAgID8B0sNACABvCIEQf////8HcSIGQYCAgPwHSw0AIAUgBnJFBEBBAA8LAkAgAyAEcUEATgRAQX8hAiADIARODQEMAgtBfyECIAMgBEoNAQsgAyAERyECCyACC2wBBX9BfyEEAkAgALwiAkH/////B3EiBUGAgID8B0sNACABvCIDQf////8HcSIGQYCAgPwHSw0AIAUgBnJFBEBBAA8LAkAgAiADcUEATgRAIAIgA04NAQwCCyACIANKDQELIAIgA0chBAsgBAslACAAvEH/////B3FBgICA/AdLIAG8Qf////8HcUGAgID8B0tyC9sBAgF/An5BASEEAkAgAEIAUiABQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACACQgBSIANC////////////AIMiBkKAgICAgIDA//8AViAGQoCAgICAgMD//wBRGw0AIAAgAoQgBSAGhIRQBEBBAA8LIAEgA4NCAFkEQEF/IQQgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LQX8hBCAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQL0wECAX8CfkF/IQQCQCAAQgBSIAFC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBRGw0AIAJCAFIgA0L///////////8AgyIGQoCAgICAgMD//wBWIAZCgICAgICAwP//AFEbDQAgACAChCAFIAaEhFAEQEEADwsgASADg0IAWQRAIAAgAlQgASADUyABIANRGw0BIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQLYwAgAEIAUiABQv///////////wCDIgBCgICAgICAwP//AFYgAEKAgICAgIDA//8AURsgAkIAUiADQv///////////wCDIgJCgICAgICAwP//AFYgAkKAgICAgIDA//8AURtyCx0BAX9BACAAQiCIpyAApyIBGyABcmggAUVBBXRqC18BAn8gACAAQf//A3FFQQR0IgF2IgBB/wFxRUEDdCICIAFyIAAgAnYiAEEPcUVBAnQiAXIgACABdiIAQQNx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APA/RAAAAAAAAAAAIAtEAAAAAAAA8H9hGyAEpiIEIAGioUQAAAAAAAAAAKIhCCABIAOiIAQgAqKgRAAAAAAAAAAAoiEHCyAAIAg5AwggACAHOQMAC64HAgp+BH8gAb0iA0L/////////B4MhBCAAvSICQv////////8HgyEFIAIgA4VCgICAgICAgICAf4MhByADQjSIp0H/D3EhDAJ8AkAgAkI0iKdB/w9xIg9B/w9rQYJwTwRAIAxB/w9rQYFwSw0BCyACQv///////////wCDIgZCgYCAgICAgPj/AFoEQCACQoCAgICAgIAEhL8PCyADQv///////////wCDIghCgYCAgICAgPj/AFoEQCADQoCAgICAgIAEhL8PCyAGQoCAgICAgID4/wBRBEBEAAAAAAAA+H8gCEKAgICAgICA+P8AUQ0CGiAHQoCAgICAgID4/wCEvw8LIAhCgICAgICAgPj/AFEEQCAHvw8LIAZQBEBEAAAAAAAA+H8gB78gCFAbDwsgCFAEQCAHQoCAgICAgID4/wCEvw8LIAZC/////////wdYBEBBDCACp2dBIGogBUIgiKdnIAVCgICAgBBUGyIOayENIAUgDkELa62GIQULIAhC/////////wdWDQAgA6dnQSBqIARCIIinZyAEQoCAgIAQVBsiDiANakEMayENIAQgDkELa62GIQQLIA0gDyAMa2ohDAJ+QgBCAEIAQrPmk6gHIARCgICAgICAgAiEIgZCFYgiAn1C/////w+DIgMgAkL/////D4MiAn5CIIh9Qv////8PgyADfkIfiEL/////D4MiAyACfkIgiH1C/////w+DIAN+Qh+IQv////8PgyIDIAJ+QiCIfUL/////D4MgA35CH4hCAX1C/////w+DIgNCASACIAN+IAMgBEILhkKA8P//D4N+QiCIfH0iAkIgiH5CAYYgAkL/////D4MgA35CH4h8QuEBfSICQiCIIgQgBUKAgICAgICACIQiCUIBhiIDQv7///8PgyIIfiIKQiCIIAQgA0IgiCILfnwgAkL/////D4MiAiALfiIEQiCIfCAEQv////8PgyACIAh+QiCIfCAKQv7///8Pg3xCIIh8IgJC/////////w9YBEAgDEH+B2ohDCAFQjWGIAIgBn59DAELIAxB/wdqIQwgCSEDIAVCNIYgAkIBiCIC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ACAQQwAAgH9bGyABmCIBlJNDAACAf5QhDCABIAOUIAsgBJSSQwAAgH+UIQsMAQsgEUMAAIB/XSARQwAAgH9eckUNACAQQwAAgH9dIBBDAACAf15yRQ0AIA5DAACAf1wNACASQwAAAABeRQ0AIAJDAACAP0MAAAAAIA1DAACAf1sbIAOYIgOUQwAAgD9DAAAAACAPQwAAgH9bGyAEmCIEIAGUk0MAAAAAlCEMIAEgA5QgBCAClJJDAAAAAJQhCwsgACAMOAIEIAAgCzgCAAuIBQIJfwJ+IAG8IgNB////A3EhBiAAvCICQf///wNxIQUgAiADc0GAgICAeHEhByADQRd2Qf8BcSEIAn0CQCACQRd2Qf8BcSIJQf8Ba0GCfk8EQCAIQf8Ba0GBfksNAQsgAkH/////B3EiBEGBgID8B08EQCACQYCAgAJyvg8LIANB/////wdxIgJBgYCA/AdPBEAgA0GAgIACcr4PCyAEQYCAgPwHRgRAQwAAwH8gAkGAgID8B0YNAhogB0GAgID8B3K+DwsgAkGAgID8B0YEQCAHvg8LIARFBEAgB75DAADAfyACGw8LIAJFBEAgB0GAgID8B3K+DwtBCSAFZyIDa0EAIARBgICABEkiChshBCAFIANBCGtBACAKG3QhBSACQf///wNLDQAgBmciAiAEakEJayEEIAYgAkEIa3QhBgsgBCAJIAhraiEJAn9CAEIAQgBBs+aTqAcgBkGAgIAEciIIQQh0IgJrrSILIAKtIgx+QiCIfUL/////D4MgC35CH4hC/////w+DIgsgDH5CIIh9Qv////8PgyALfkIfiEL/////D4MiCyAMfkIgiH1C/////w+DIAt+Qh+IQvT///8PfEL/////D4MgBUGAgIAEciIEQQF0IgatfkIgiKciA0H///8HTQRAIAVBGHQgAyAIbGshBSAJQf4AagwBCyAFQRd0IANBAXYiAyAIbGshBSAEIQYgCUH/AGoLIgJB/wFOBEAgB0GAgID8B3K+DwsCfyACQQBKBEAgA0H///8DcSACQRd0ciECIAVBAXQMAQsgAkFoTARAIAe+DwsgBiACQRdqdCAIIANBASACa3YiAmxBAXRrCyACQQFxaiAISyACaiAHcr4LCzABAX8gAEEfdSICIABzIABBH3ZqIAFBH3UiACABcyABQR92am4gACACcyIBcyABawuuGAIFfwt+IwFBwAVrIgkkASAHIAcgBSAFIAZC////////////AIMiECAHIAhC////////////AIMiDhDTR0EASCIMGyAFIAYgBSAGENVHIgobIQ8CQAJ+IA4gDiAQIAwbIAobIg5CMIinIgxB//8BRgRAIA4gDiAOQoCAgICAgICAgH+EIA5CAFkbIA8gDiAPIA4Q1UcbIRMgDwwBC0KAgICAgIBAIRNCACAPIA5CAEIAENNHRQ0AGiAMBEAgCUGwBWogDEH//wBrEJVIIAkpA7gFIRMgCSkDsAUMAQsgCUGgBWogDyAOIA8gDiAOUCIMG3kgDEEGdK18pyIMQQ9rEIhHIAlBkAVqIAkvAa4FQf//AXEgDGtB8P8AaxCVSCAJKQOYBSETIAkpA5AFCyIWIBNC////////////AIMiGEIAQoCAgICAgMD//wAQ1UcgFiAYQgBCgICAgICAwP//ABDTR0VyBEBBACEMDAELQQAgFiATEP9HIgxrIQoCQCAFIAZCAEIAENNHRQ0AIAZCMIinQf//AXEiC0H//wFGDQAgBkL///////8/gyEOIAtFBEAgCUGABWogBSAOIAUgDiAOUCILG3kgC0EGdK18pyILQQ9rEIhHQRAgC2shCyAJKQOIBUL///////+/f4MhDiAJKQOABSEFCyAGQoCAgICAgICAgH+DIQYgCiALaiINQR91QYCAgIB4cyANIApBAEggCyANSnMbIgtB//8BTgRAIAlB4ARqQgAgBkKAgICAgICA//8AhCIFQgAgBRCDRyAJKQPoBCEGIAkpA+AEIQUMAQsgC0EATARAIAlB8ARqIAUgBiAOhEKAgICAgIDAAIRCAEGDgH8gCyALQYOAf0wbQf7/AGqtQjCGELNIIAkpA/gEIQYgCSkD8AQhBQwBCyALrUIwhiAGhCAOhCEGCyAHIAhCAEIAENNHRQ0AIAhCMIinQf//AXEiC0H//wFGDQAgCEL///////8/gyEOIAtFBEAgCUHQBGogByAOIAcgDiAOUCILG3kgC0EGdK18pyILQQ9rEIhHQRAgC2shCyAJKQPYBEL///////+/f4MhDiAJKQPQBCEHCyAIQoCAgICAgICAgH+DIQggCiALaiINQR91QYCAgIB4cyANIApBAEggCyANSnMbIgpB//8BTgRAIAlBsARqQgAgCEKAgICAgICA//8AhCIHQgAgBxCDRyAJKQO4BCEIIAkpA7AEIQcMAQsgCkEATARAIAlBwARqIAcgCCAOhEKAgICAgIDAAIRCAEGDgH8gCiAKQYOAf0wbQf7/AGqtQjCGELNIIAkpA8gEIQggCSkDwAQhBwwBCyAKrUIwhiAIhCAOhCEICyAJQaAEaiAHIAggByAIELNIIAlBkARqIAUgBiAFIAYQs0ggCUGABGogCSkDkAQgCSkDmAQgCSkDoAQgCSkDqAQQg0cgCUHwA2ogByAIIAMgBBCzSCAJQeADaiABIAIgBSAGELNIIAlB0ANqIAkpA+ADIAkpA+gDIAkpA/ADIAkpA/gDEINHIAlBwANqIAkpA9ADIAkpA9gDIAkpA4AEIhQgCSkDiAQiFRDjR0EAIAxrIQwCQCAJKQPAAyIQIAkpA8gDIg5CAEIAENNHRQ0AIA5CMIinQf//AXEiCkH//wFGDQAgDkL///////8/gyEPIApFBEAgCUGwA2ogECAPIBAgDyAPUCIKG3kgCkEGdK18pyIKQQ9rEIhHQRAgCmshCiAJKQOwAyEQIAkpA7gDQv///////79/gyEPCyAOQoCAgICAgICAgH+DIQ4gCiAMaiILQR91QYCAgIB4cyALIAxBAEggCiALSnMbIgpB//8BTgRAIAlBkANqQgAgDkKAgICAgICA//8AhCIOQgAgDhCDRyAJKQOYAyEOIAkpA5ADIRAMAQsgCkEATARAIAlBoANqIBAgDiAPhEKAgICAgIDAAIRCAEGDgH8gCiAKQYOAf0wbQf7/AGqtQjCGELNIIAkpA6gDIQ4gCSkDoAMhEAwBCyAKrUIwhiAOhCAPhCEOCyAJQYADaiAHIAggASACELNIIAlB8AJqIAMgBCAFIAYQs0ggCUHgAmogCSkD8AIgCSkD+AIgCSkDgAMgCSkDiAMQ0kggCUHQAmogCSkD4AIgCSkD6AIgFCAVEONHAkAgCSkD0AIiESAJKQPYAiIPQgBCABDTR0UNACAPQjCIp0H//wFxIgpB//8BRg0AIA9C////////P4MhEiAPQoCAgICAgICAgH+DIQ8gCkUEQCAJQcACaiARIBIgESASIBJQIgobeSAKQQZ0rXynIgpBD2sQiEcgCSkDyAJC////////v3+DIRIgCSkDwAIhEUEQIAprIQoLIAogDGoiC0EfdUGAgICAeHMgCyAMQQBIIAogC0pzGyIMQf//AU4EQCAJQaACakIAIA9CgICAgICAgP//AIQiD0IAIA8Qg0cgCSkDqAIhDyAJKQOgAiERDAELIAxBAEwEQCAJQbACaiARIA8gEoRCgICAgICAwACEQgBBg4B/IAwgDEGDgH9MG0H+/wBqrUIwhhCzSCAJKQO4AiEPIAkpA7ACIREMAQsgDK1CMIYgD4QgEoQhDwsCQCAQIA4gECAOENVHRQ0AIBEgDyARIA8Q1UdFDQACQCAUIBVCAEIAENNHDQAgASACIAEgAhDVRwRAIAMgBCADIAQQ1UcNAQsgCUGQAmpCACAGQoCAgICAgICAgH+DQoCAgICAgMD//wCEIgUgASACELNIIAlBgAJqQgAgBSADIAQQs0ggCSkDiAIhDyAJKQOYAiEOIAkpA4ACIREgCSkDkAIhEAwBCyADIARC////////////AIMiEkIAQoCAgICAgMD//wAQ00chDCAIQv///////////wCDIRUgBkL///////////8AgyEUAkAgASACQv///////////wCDIhdCAEKAgICAgIDA//8AENNHQQBHIAxBAEdxDQAgBSAUQgBCgICAgICAwP//ABDVRyAFIBRCAEKAgICAgIDA//8AENNHRXINACAHIBVCAEKAgICAgIDA//8AENVHIAcgFUIAQoCAgICAgMD//wAQ00dFcg0AIAlB8AFqQgAgBEKAgICAgICAgIB/g0IAQoCAgICAgMD/PyADIBJCAEKAgICAgIDA//8AENNHG4QiDiAHIAgQs0ggCUHQAWpCACACQoCAgICAgICAgH+DQgBCgICAgICAwP8/IAEgF0IAQoCAgICAgMD//wAQ00cbhCIPIAUgBhCzSCAJQcABaiAJKQPQASAJKQPYASAJKQPwASAJKQP4ARCDRyAJQbABaiAJKQPAASAJKQPIAUIAQoCAgICAgMD//wAQs0ggCUHgAWogByAIQgAgDxCzSCAJQaABakIAIA4gBSAGELNIIAlBkAFqIAkpA6ABIAkpA6gBIAkpA+ABIAkpA+gBENJIIAlBgAFqIAkpA5ABIAkpA5gBQgBCgICAgICAwP//ABCzSCAJKQOIASEPIAkpA7gBIQ4gCSkDgAEhESAJKQOwASEQDAELIAMgEkIAQoCAgICAgMD//wAQ1UcgAyASQgBCgICAgICAwP//ABDTR0VyDQAgASAXQgBCgICAgICAwP//ABDVRyABIBdCAEKAgICAgIDA//8AENNHRXINACAWIBhCAEKAgICAgIDA//8AENNHDQAgFiATQgBCABDUR0EATA0AIAlB8ABqQgAgCEKAgICAgICAgIB/g0IAQoCAgICAgMD/PyAHIBVCAEKAgICAgIDA//8AENNHG4QiByADIAQQs0ggCUHQAGogASACQgAgBkKAgICAgICAgIB/g0IAQoCAgICAgMD/PyAFIBRCAEKAgICAgIDA//8AENNHG4QiBRCzSCAJQUBrIAkpA1AgCSkDWCAJKQNwIAkpA3gQg0cgCUEwaiAJKQNAIAkpA0hCAEIAELNIIAlBIGpCACAHIAEgAhCzSCAJQeAAaiADIARCACAFELNIIAlBEGogCSkDYCAJKQNoIAkpAyAgCSkDKBDSSCAJIAkpAxAgCSkDGEIAQgAQs0ggCSkDCCEPIAkpAzghDiAJKQMAIREgCSkDMCEQCyAAIBE3AxAgACAQNwMAIAAgDzcDGCAAIA43AwggCUHABWokAQvADwIFfw9+IwFB0AJrIgUkASAEQv///////z+DIQsgAkL///////8/gyEPIAIgBIVCgICAgICAgICAf4MhDCAEQjCIp0H//wFxIQYCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAGQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgpCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEMDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQwgAyEBDAILIAEgCkKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEMDAMLIAxCgICAgICAwP//AIQhDEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAKhFAEQEKAgICAgIDg//8AIAwgAiADhFAbIQxCACEBDAILIAIgA4RQBEAgDEKAgICAgIDA//8AhCEMQgAhAQwCCyAKQv///////z9YBEAgBUHAAmogASAPIAEgDyAPUCIHG3kgB0EGdK18pyIHQQ9rEIhHQRAgB2shByAFKQPIAiEPIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAsgAyALIAtQIggbeSAIQQZ0rXynIghBD2sQiEcgByAIakEQayEHIAUpA7gCIQsgBSkDsAIhAwsgBUGgAmogC0KAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQtEggBUGQAmpCACAFKQOoAn1CACAEQgAQtEggBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQtEggBUHwAWogBEIAQgAgBSkDiAJ9QgAQtEggBUHgAWogBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQtEggBUHQAWogBEIAQgAgBSkD6AF9QgAQtEggBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQtEggBUGwAWogBEIAQgAgBSkDyAF9QgAQtEggBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSIEQgAQtEggBUGQAWogA0IPhkIAIARCABC0SCAFQfAAaiAEQgBCACAFKQOoASAFKQOgASILIAUpA5gBfCICIAtUrXwgAkIBVq18fUIAELRIIAVBgAFqQgEgAn1CACAEQgAQtEggByAJIAZraiEGAn4gBSkDcCINQgGGIg4gBSkDiAEiEEIBhiAFKQOAAUI/iIR8IgpC5+wAfSITQiCIIgIgD0KAgICAgIDAAIQiFUIBhiIXQiCIIgR+IhEgAUIBhiIUQiCIIgsgCiATVq0gCiAOVK0gBSkDeEIBhiANQj+IhCAQQj+IfHx8QgF9Ig1CIIgiCn58Ig4gEVStIA4gDUL/////D4MiDSABQj+IIhggD0IBhoRC/////w+DIg9+fCIQIA5UrXwgBCAKfnwgBCANfiIRIAogD358Ig4gEVStQiCGIA5CIIiEfCAQIA5CIIZ8Ig4gEFStfCAOIBNC/////w+DIhMgD34iESACIAt+fCIQIBFUrSAQIA0gFEL+////D4MiEX58IhYgEFStfHwiECAOVK18IBAgBCATfiIOIAogEX58IgQgAiAPfnwiCiALIA1+fCINQiCIIAogDVatIAQgDlStIAQgClatfHxCIIaEfCIEIBBUrXwgBCAWIAIgEX4iAiALIBN+fCILQiCIIAIgC1atQiCGhHwiAiAWVK0gAiANQiCGfCACVK18fCICIARUrXwiBEL/////////AFgEQCAXIBiEIRUgBUHQAGogAiAEIAMgEhC0SCABQjGGIAUpA1h9IAUpA1AiAUIAUq19IQogBkH+/wBqIQZCACABfQwBCyAFQeAAaiAEQj+GIAJCAYiEIgIgBEIBiCIEIAMgEhC0SCABQjCGIAUpA2h9IAUpA2AiC0IAUq19IQogBkH//wBqIQYgASEUQgAgC30LIQsgBkH//wFOBEAgDEKAgICAgIDA//8AhCEMQgAhAQwBCwJ+IAZBAEoEQCAKQgGGIAtCP4iEIQogBEL///////8/gyAGrUIwhoQhDSALQgGGDAELIAZBj39MBEBCACEBDAILIAVBQGsgAiAEQQEgBmsQpkggBUEwaiAUIBUgBkHwAGoQiEcgBUEgaiADIBIgBSkDQCICIAUpA0giDRC0SCAFKQM4IAUpAyhCAYYgBSkDICIBQj+IhH0gBSkDMCIEIAFCAYYiAVStfSEKIAQgAX0LIQQgBUEQaiADIBJCA0IAELRIIAUgAyASQgVCABC0SCANIAIgAkIBgyIBIAR8IgQgA1YgCiABIARWrXwiASASViABIBJRG618IgMgAlStfCICIAMgAkKAgICAgIDA//8AVCAEIAUpAxBWIAEgBSkDGCICViABIAJRG3GtfCICIANUrXwiAyACIANCgICAgICAwP//AFQgBCAFKQMAViABIAUpAwgiBFYgASAEURtxrXwiASACVK18IAyEIQwLIAAgATcDACAAIAw3AwggBUHQAmokAQuPAQIBfwJ+IwFBEGsiBSQBIAUgAkI/hyIGIAGFIgEgAkI/iHwiByABIAdWrSACIAaFfCAEQj+HIgIgA4UiAyAEQj+IfCIBIAEgA1StIAIgBIV8QQAQ4UggBSkDCCEDIAAgAiAGhSIEIAUpAwCFIgIgBH03AwAgACADIASFIAR9IAIgBFStfTcDCCAFQRBqJAELuQ0CA38LfiMBQbAEayIJJAEgCUGQBGogBSAGQv///////////wCDIAcgCEL///////////8AgxDQPyAJQaAEaiAJKQOQBCAJKQOYBBD4QQJAIAkpA6AEIhIgCSkDqAQiFUL///////////8AgyIWQgBCgICAgICAwP//ABDVRyASIBZCAEKAgICAgIDA//8A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AEENdEGAgID8B3IgAEGA+AFPDQAaQQAgAEUNABogACAAZyIAQQhrdEGAgIAEc0GAgICYBCAAQRd0a3ILcr4LBwAgABDxRwuVAQICfwF+An4gALwiAkH/////B3EiAUGAgIAEa0H////3B00EQCABrUIdhkKAgICAgICAgDh8DAELIAKtQh2GQoCAgICAgID4/wCEIAFBgICA/AdPDQAaQgAgAUUNABogAa0gAWciAUEVaq2GQoCAgICAgIAIhUGJByABa61CNIaECyEDIAMgAkGAgICAeHGtQiCGhL8LxwECA38CfiMBQRBrIgMkAQJ+IAG8IgRB/////wdxIgJBgICABGtB////9wdNBEAgAq1CGYZCgICAgICAgMA/fAwBCyACQYCAgPwHTwRAIAStQhmGQoCAgICAgMD//wCEDAELIAJFBEBCAAwBCyADIAKtQgAgAmciAkHRAGoQiEcgAykDACEFIAMpAwhCgICAgICAwACFQYn/ACACa61CMIaECyEGIAAgBTcDACAAIAYgBEGAgICAeHGtQiCGhDcDCCADQRBqJAELKQEBfyAApyIBRQRAIABCIIinIgFFBEBBAA8LIAFoQSFqDwsgAWhBAWoLDQAgAGhBAWpBACAAGwshACAAUARAIAFQBEBBAA8LIAF6p0HBAGoPCyAAeqdBAWoLIAAgAEQAAAAAAAAAAGMEQEIAIACaEIFIfQ8LIAAQgUgLZQICfwF+IAC9IgNCNIinQf8PcSICQf8HTwR/IAJBnwhrQV9NBEAgA0I/h6dB/////wdzDwsgA0L/////////B4NCgICAgICAgAiEQbMIIAJrrYinIgFBACABayADQgBZGwUgAQsL7wECAn8DfiMBQTBrIgIkASAAAn5CACABvSIFQjSIp0H/D3EiA0H/B0kNABogA0H/CGtB/35NBEAgBUI/hyIGQv///////////wCFIQQgBkJ/hQwBCyAFQj+HQgGEIQYgBUI/hyEEIAVC/////////weDQoCAgICAgIAIhCEFIANBsghNBEAgAiAGIAQgBUGzCCADa62IQgAQtEggAikDCCEEIAIpAwAMAQsgAkEgaiAFQgAgA0GzCGsQiEcgAkEQaiACKQMgIAIpAyggBiAEELRIIAIpAxghBCACKQMQCzcDACAAIAQ3AwggAkEwaiQBCxwAIABDAAAAAF0EQEIAIACMEIRIfQ8LIAAQhEgLcQEDfyAAvCIBQRd2Qf8BcSIDQf8ATwR/IANBnwFrQV9NBEAgAUEfdUH/////B3MPCyABQR91QQFyIQIgAUH///8DcUGAgIAEciEBIANBlQFNBEAgAUGWASADa3YgAmwPCyABIANBlgFrdCACbAUgAgsL7QECBH8CfiMBQTBrIgIkASAAAn5CACABvCIDQRd2Qf8BcSIEQf8ASQ0AGiAEQf8Ba0H/fk0EQCADQR91rCIGQv///////////wCFIQcgBkJ/hQwBCyADQR91QQFyIQUgA0H///8DcUGAgIAEciEDIARBlQFNBEAgAiADQZYBIARrdq1CACAFrCIGIAZCP4cQtEggAikDCCEHIAIpAwAMAQsgAkEgaiADrUIAIARBlgFrEIhHIAJBEGogAikDICACKQMoIAWsIgYgBkI/hxC0SCACKQMYIQcgAikDEAs3AwAgACAHNwMIIAJBMGokAQuGAQECfyMBQRBrIgIkAQJ+QgAgAUIwiKdB//8BcSIDQf//AEkNABogAUI/h0L///////////8AhSADQb+AAWtBv39NDQAaIAIgACABQv///////z+DQoCAgICAgMAAhEHvgAEgA2sQpkggAikDACIAQgAgAH0gAUIAWRsLIQAgAkEQaiQBIAALgQEBAn8jAUEQayIDJAECf0EAIAFCMIinQf//AXEiAkH//wBJDQAaIAFCP4enQf////8HcyACQZ+AAWtBX00NABogAyAAIAFC////////P4NCgICAgICAwACEQe+AASACaxCmSCADKAIAIgJBACACayABQgBZGwshAiADQRBqJAEgAguBAgICfwJ+IwFBQGoiAyQBIAACfkIAIAJCMIinQf//AXEiBEH//wBJDQAaIARB/4ABa0H/fk0EQCACQj+HIgJC////////////AIUhBSACQn+FDAELIAJCP4dCAYQhBiACQj+HIQUgAkL///////8/g0KAgICAgIDAAIQhAiAEQe6AAU0EQCADQRBqIAEgAkHvgAEgBGsQpkggAyADKQMQIAMpAxggBiAFELRIIAMpAwghBSADKQMADAELIANBMGogASACIARB74ABaxCIRyADQSBqIAMpAzAgAykDOCAGIAUQtEggAykDKCEFIAMpAyALNwMAIAAgBTcDCCADQUBrJAELjgEDAX4BfAF/IABEAAAAAAAAAABlBH4gAQUCfyAARAAAAAAAAPA9oiICRAAAAAAAAPBBYyACRAAAAAAAAAAAZnEEQCACqwwBC0EACyIDrUIghiEBIAECfyAAIAO4RAAAAAAAAPDBoqAiAEQAAAAAAADwQWMgAEQAAAAAAAAAAGZxBEAgAKsMAQtBAAuthAsLVwICfwF+AkAgAL0iA0IAUw0AIANCNIinQf8PcSICQf8HSQ0AQX8hASACQZ8Ia0FgSQ0AIANC/////////weDQoCAgICAgIAIhEGzCCACa62IpyEBCyABC6oBAgJ+An8jAUEQayIEJAECfkIAIAG9IgNCAFMNABpCACADQjSIp0H/D3EiBUH/B0kNABpCfyECQn8gBUH/CGtBgH9JDQAaIANC/////////weDQoCAgICAgIAIhCECIAVBsghNBEAgAkGzCCAFa62IIQJCAAwBCyAEIAJCACAFQbMIaxCIRyAEKQMAIQIgBCkDCAshAyAAIAI3AwAgACADNwMIIARBEGokAQuNAQMCfAF+AX8gAEMAAAAAXwR+IAMFAn8gALsiAkQAAAAAAADwPaIiAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiBK1CIIYhAyADAn8gAiAEuEQAAAAAAADwwaKgIgFEAAAAAAAA8EFjIAFEAAAAAAAAAABmcQRAIAGrDAELQQALrYQLC2EBA38CQCAAvCIDQQBIDQAgA0EXdkH/AXEiAkH/AEkNAEF/IQEgAkGfAWtBYEkNACADQf///wNxQYCAgARyIQEgAkGVAU0EQCABQZYBIAJrdg8LIAEgAkGWAWt0IQELIAELogECA38CfiMBQRBrIgMkAQJ+QgAgAbwiAkEASA0AGkIAIAJBF3ZB/wFxIgRB/wBJDQAaQn8hBUJ/IARB/wFrQYB/SQ0AGiACQf///wNxQYCAgARyIQIgBEGVAU0EQCACQZYBIARrdq0hBUIADAELIAMgAq1CACAEQZYBaxCIRyADKQMAIQUgAykDCAshBiAAIAU3AwAgACAGNwMIIANBEGokAQtwAgJ/AX4jAUEQayICJAECQCABQgBTDQAgAUIwiKdB//8BcSIDQf//AEkNAEJ/IQQgA0G/gAFrQUBJDQAgAiAAIAFC////////P4NCgICAgICAwACEQe+AASADaxCmSCACKQMAIQQLIAJBEGokASAEC24BA38jAUEQayICJAECQCABQgBTDQAgAUIwiKdB//8BcSIEQf//AEkNAEF/IQMgBEGfgAFrQWBJDQAgAiAAIAFC////////P4NCgICAgICAwACEQe+AASAEaxCmSCACKAIAIQMLIAJBEGokASADC7kBAgJ/An4jAUEgayIDJAECQCACQgBTDQAgAkIwiKdB//8BcSIEQf//AEkNAEJ/IQZCfyEFIARB/4ABa0GAf0kNACACQv///////z+DQoCAgICAgMAAhCECIARB7oABTQRAIAMgASACQe+AASAEaxCmSCADKQMIIQUgAykDACEGDAELIANBEGogASACIARB74ABaxCIRyADKQMYIQUgAykDECEGCyAAIAY3AwAgACAFNwMIIANBIGokAQtFAgF+An8CQCABpyIEQf//AXEiA0H//wBJDQAgBEGAgAJxDQBCfyECIANBwIABa0G/f0kNACAAQb6AASADa62IIQILIAILRQEDfwJAIAGnIgRB//8BcSIDQf//AEkNACAEQYCAAnENAEF/IQIgA0GggAFrQV9JDQAgAEIgiKdBnoABIANrdiECCyACC6MBAgN/An4jAUEgayIDJAECQCACpyIFQf//AXEiBEH//wBJDQAgBUGAgAJxDQBCfyEHQn8hBiAEQYCBAWtB/35JDQAgBEG/gAFPBEAgAyABQgAgBEG+gAFrEIhHIAMpAwghBiADKQMAIQcMAQsgA0EQaiABQgBBvoABIARrEKZIIAMpAxghBiADKQMQIQcLIAAgBzcDACAAIAY3AwggA0EgaiQBC2sCAn8BfiABpyIDQf//AXEiAkH//wBPBH4gAkG/gAFrQb9/TQRAQv///////////wBCgICAgICAgICAfyAAIAFCAEIAENRHQQBKGw8LIANBEHRBH3WsIgEgAEG+gAEgAmutiIUgAX0FIAQLC+8BAgN/AX4jAUEgayIDJAEgAAJ+QgAgAqciBUH//wFxIgRB//8ASQ0AGiAEQf+AAWtB/35NBEBC////////////AEKAgICAgICAgIB/IAEgAkIAQgAQ1EdBAEoiBBshBkJ/QgAgBBsMAQsgBUEQdEEfdSEFAn4gBEG/gAFPBEAgAyABQgAgBEG+gAFrEIhHIAMpAwghBiADKQMADAELIANBEGogAUIAQb6A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IQILIAIgASABp0ECdkEBca2EIgFCAXwiCSABVK18IgJCAkIDIAJCgICAgICAgASDUCIEGyIIhyEBIAUgBiAEGyEFIAJCAYYgCKdBP3OthiAJIAiIhAwBCyADQSBqIAEgAiAEQQ9rEIhHIAMpAyghASADKQMgCyECIAFC////////P4MgB0KAgICAgICAgIB/gyAFQf//AGqtQjCGhIQLIQcgACACNwMAIAAgBzcDCCADQTBqJAEL2gICBH8CfiMBQTBrIgMkAQJ+IAEgAoRQBEBCACECQgAMAQtB/wAgAkI/hyIHIAGFIgggB30iASACIAeFIAd9IAcgCFatfSICEMpHIgRrIQYCQAJAQYABIARrIgVB8gBOBEACQAJAAkAgBUHyAGsOAgACAQsgAkIBhiABQj+IhCECIAFCAYYhAQwBCyADQRBqIAEgAkENIARrEKZIIAMgASACIARB8wBqEIhHIAMpAxAgAykDACADKQMIhEIAUq2EIQEgAykDGCECCyABIAGnQQJ2QQFxrYQiAUIBfCIIQgKIIAIgASAIVq18IgFCPoaEIQIgAUKAgICAgICABINQDQEgAUICh0I/hiACQgGIhCECDAILIANBIGogASAHIARBD2sQiEcgAykDICECCyAGIQULIAVB//8AaiAHp0GAgAJxcq0LIQcgACACNwMAIAAgBzcDCCADQTBqJAELNQAgAEIgiEKAgICAgICAmMUAhL9EAAAQAAAAMMWgIABC/////w+DQoCAgICAgICYwwCEv6ALuwECA38BfiAAUARAQwAAAAAPCyAAeSIEpyIBQT9zIQICQCABQSdNBEACQAJAAkBBwAAgAWsiAUEZaw4CAAIBCyAAQgGGIQAMAQsgACAEhkL//////weDQgBSrSAAQiYgBH2IhCEACyAAQgKIQgGDIACEQgF8IgBCAkIDIABCgICAIINQIgMbiCEAIAIgASADGyECDAELIAAgBELY////D3yGIQALIACnQf///wNxIAJBF3RyQYCAgPwDar4LZQECfyMBQRBrIgIkASAAAn4gAVAEQEIAIQFCAAwBCyACIAFCACABeaciA0ExahCIRyACKQMIQoCAgICAgMAAhUG+gAEgA2utQjCGfCEBIAIpAwALNwMAIAAgATcDCCACQRBqJAELOAEBfgJ+IAFQBEBCACEBQgAMAQsgASAB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gIAEhL8PCyAHQoCAgICAgID4/wBRBEAgCFAEQEQAAAAAAAD4fw8LIAZCgICAgICAgPj/AIS/DwsgCEKAgICAgICA+P8AUQRAIAdQBEBEAAAAAAAA+H8PCyAGQoCAgICAgID4/wCEvw8LIAdQBEAgBr8PCyAIUARAIAa/DwsgB0L/////////B1gEQEEMIAOnZ0EgaiAEQiCIp2cgBEKAgICAEFQbIg5rIQwgBCAOQQtrrYYhBAsgCEL/////////B1YNACAMIAKnZ0EgaiAFQiCIp2cgBUKAgICAEFQbIg5rQQxqIQwgBSAOQQtrrYYhBQsgBUILhiIDQoDw//8PgyICIARCIIhCgIDAAIQiBX4iB0KA8P//D4MgAiAEQv////8PgyIEfiICQiCIfCADQiCIQoCAgIAIhCIIIAR+IgRC/////w+DfCIJQiCGIgogAkKA8P//D4OEIQMgCyANaiAMakH/B2shCwJAIAUgCH4gB0IgiHwgBEIgiHwgCUIgiHwiAkKAgICAgICACINCAFIEQCALQQFqIQsMAQsgAkIBhiAKQj+IhCECIANCAYYhAwsgC0H/D04EQCAGQoCAgICAgID4/wCEvw8LIAYCfiALQQBMBEBBASALayINQT9NBEAgAiALQT9qrSIEhiADIA2tIgWIhCADIASGQgBSrYQhAyACIAWIDAILIAa/DwsgAkL/////////B4MgC61CNIaECyIEhCECIANCgYCAgICAgICAf1oEQCACQgF8vw8LIAIgBEIBg3wgAiADQoCAgICAgICAgH9RG78LeAEFfyABpyICQf//A3EiAyAApyIEQf//A3EiBWwiBkEQdiADIARBEHYiBGxqIgNB//8DcSACQRB2IgIgBWxqIgVBEHQgBkH//wNxcq0gAUIgiCAAfiAAQiCIIAF+fEIghoQgAiAEbCADQRB2aiAFQRB2aq1CIIZ8C6kBAQR+IAJBADYCAAJAAkAgAEKAgICAgICAgIB/UQRAIAFCAVYNAQwCCyABQoCAgICAgICAgH9RBEAgAEIBVg0BDAILIABCP4ciAyAAhSADfSIEQgJTDQEgAUI/hyIFIAGFIAV9IgZCAlMNASADIAVRBEAgBEL///////////8AIAaAVg0BDAILIARCgICAgICAgICAfyAGgFgNAQsgAkEBNgIACyAAIAF+C5UBAQR/IAJBADYCAAJAAkAgAEGAgICAeEYEQCABQQFLDQEMAgsgAUGAgICAeEYEQCAAQQFLDQEMAgsgAEEfdSIDIABzIANrIgRBAkgNASABQR91IgUgAXMgBWsiBkECSA0BIAMgBUYEQCAEQf////8HIAZuSw0BDAILIARBgICAgHggBm5NDQELIAJBATYCAAsgACABbAvrAgIGfgF/IwFBMGsiDCQBIAVBADYCAAJAAkAgASACQoCAgICAgICAgH+FhFAEQCADQgFWIARCAFIgBFAbDQEMAgsgAyAEQoCAgICAgICAgH+FhFAEQCABQgFWIAJCAFIgAlAbDQEMAgsgAkI/hyIGIAGFIgcgBn0iCkICVCACIAaFIAZ9IAYgB1atfSIIQgBTIAhQGw0BIARCP4ciByADhSIJIAd9IgtCAlQgBCAHhSAHfSAHIAlWrX0iCUIAUyAJUBsNASAGIAeFIgYgBoRQBEAgDEEQakJ/Qv///////////wAgCyAJEONIIAogDCkDEFYgCCAMKQMYIgZWIAYgCFEbDQEMAgsgDEEgakIAQoCAgICAgICAgH8gCyAJEONIIAogDCkDIFggCCAMKQMoIgZYIAYgCFEbDQELIAVBATYCAAsgDCADIAQgASACELRIIAAgDCkDCDcDCCAAIAwpAwA3AwAgDEEwaiQBC74DAgh9A38gAiADlCIHIAEgBJQiCJIhBQJAIAEgA5QiCSACIASUIgqTIgYgBlsNACAFIAVbDQAgAYtDAACAf1siDSACi0MAAIB/WyIOciIPBEBDAAAAACAEmCAEIAQgBFwbIQRDAAAAACADmCADIAMgA1wbIQNDAACAP0MAAAAAIA4bIAKYIQJDAACAP0MAAAAAIA0bIAGYIQELAkAgBIsiC0MAAIB/XCADiyIMQwAAgH9ccUUEQEMAAAAAIAKYIAIgAiACXBshAkMAAAAAIAGYIAEgASABXBshAUMAAIA/QwAAAAAgC0MAAIB/WxsgBJghBEMAAIA/QwAAAAAgDEMAAIB/WxsgA5ghAwwBCyAPDQACQCAHi0MAAIB/Ww0AIAiLQwAAgH9bDQAgCYtDAACAf1sNACAKi0MAAIB/XA0CC0MAAAAAIASYIAQgBCAEXBshBEMAAAAAIAOYIAMgAyADXBshA0MAAAAAIAKYIAIgAiACXBshAkMAAAAAIAGYIAEgASABXBshAQsgASAElCADIAKUkkMAAIB/lCEFIAEgA5QgBCAClJNDAACAf5QhBgsgACAFOAIEIAAgBjgCAAunBAIJfwF+IAG8IgNB////A3EhCCAAvCICQf///wNxIQYgAiADc0GAgICAeHEhByADQRd2Qf8BcSEEAkAgAkEXdkH/AXEiCUH/AWtBgn5PBEAgBEH/AWtBgX5LDQELIAJB/////wdxIgVBgYCA/AdPBEAgAkGAgIACcr4PCyADQf////8HcSICQYGAgPwHTwRAIANBgICAAnK+DwsgBUGAgID8B0YEQCACRQRAQwAAwH8PCyAHQYCAgPwHcr4PCyACQYCAgPwHRgRAIAVFBEBDAADAfw8LIAdBgICA/Adyvg8LIAVFBEAgB74PCyACRQRAIAe+DwtBCSAGZyIDa0EAIAVBgICABEkiChshBSAGIANBCGtBACAKG3QhBiACQf///wNLDQAgBSAIZyICa0EJaiEFIAggAkEIa3QhCAsgCEEIdEGAgICAeHKtIAZBgICABHKtfiILpyEDIAQgCWogBWpB/wBrIQICQCALQiCIpyIEQYCAgARxBEAgAkEBaiECDAELIARBAXQgA0EfdnIhBCADQQF0IQMLIAJB/wFOBEAgB0GAgID8B3K+DwsCfyACQQBMBEBBASACayIGQR9NBEAgBCACQR9qIgJ0IAMgBnZyIAMgAnRBAEdyIQMgBCAGdgwCCyAHvg8LIARB////A3EgAkEXdHILIgQgB3IhAiADQYGAgIB4TwRAIAJBAWq+DwsgAiAEQQFxaiACIANBgICAgHhGG74LqwoCBX8OfiMBQeABayIJJAEgCUGwAWogASACIAUgBhCzSCAJQdABaiADIAQgByAIELNIIAlBkAFqIAEgAiAHIAgQs0ggCUHAAWogAyAEIAUgBhCzSCAJQaABaiAJKQOwASIUIAkpA7gBIhUgCSkD0AEiFiAJKQPYASIXENJIIAlBgAFqIAkpA8ABIhggCSkDyAEiGSAJKQOQASIaIAkpA5gBIhsQg0cgCSkDiAEhDiAJKQOAASEPAkAgCSkDoAEiESAJKQOoASISIBEgEhDVR0UNACAPIA4gDyAOENVHRQ0AIAMgBEL///////////8AgyIQQgBCgICAgICAwP//ABDTRyEKIAEgAkL///////////8AgyITQgBCgICAgICAwP//ABDTR0UgCkVyIgoEQCAEQoCAgICAgICAgH+DQgBCgICAgICAwP8/IAMgEEIAQoCAgICAgMD//wAQ00cbhCEEIAJCgICAgICAgICAf4NCAEKAgICAgIDA/z8gASATQgBCgICAgICAwP//ABDTRxuEIQIgCEKAgICAgICAgIB/gyAIIAcgCCAHIAgQ1UciCxshCCAGQoCAgICAgICAgH+DIAYgBSAGIAUgBhDVRyIMGyEGQgAgByALGyEHQgAgBSAMGyEFQgAhA0IAIQELIAZC////////////AIMhECAJQfAAagJ+AkAgByAIQv///////////wCDIhNCAEKAgICAgIDA//8AENNHBEAgBSAQQgBCgICAgICAwP//ABDTRw0BCyAIQoCAgICAgICAgH+DQgBCgICAgICAwP8/IAcgE0IAQoCAgICAgMD//wAQ00cbhCEIIAZCgICAgICAgICAf4NCAEKAgICAgIDA/z8gBSAQQgBCgICAgICAwP//ABDTRxuEIQYgBEKAgICAgICAgIB/gyAEIAMgBCADIAQQ1UciChshBCACQoCAgICAgICAgH+DIAIgASACIAEgAhDVRyILGyECQgAgAyAKGyEDQgAgASALGyEBQgAhBUIADAELIAcgCg0AGgJAIBggGUL///////////8Ag0IAQoCAgICAgMD//wAQ00dFDQAgGiAbQv///////////wCDQgBCgICAgICAwP//ABDTR0UNACAUIBVC////////////AINCAEKAgICAgIDA//8AENNHRQ0AIBYgF0L///////////8Ag0IAQoCAgICAgMD//wAQ00cNAgsgCEKAgICAgICAgIB/gyAIIAcgCCAHIAgQ1UciChshCCAGQoCAgICAgICAgH+DIAYgBSAGIAUgBhDVRyILGyEGIARCgICAgICAgICAf4MgBCADIAQgAyAEENVHIgwbIQQgAkKAgICAgICAgIB/gyACIAEgAiABIAIQ1UciDRshAkIAIAUgCxshBUIAIAMgDBshA0IAIAEgDRshAUIAIAcgChsLIg4gCCADIAQQs0ggCUHQAGogASACIAUgBhCzSCAJQUBrIAkpA1AgCSkDWCAJKQNwIAkpA3gQ0kggCUEwaiAJKQNAIAkpA0hCAEKAgICAgIDA//8AELNIIAlBIGogBSAGIAMgBBCzSCAJQeAAaiABIAIgDiAIELNIIAlBEGogCSkDYCAJKQNoIAkpAyAgCSkDKBCDRyAJIAkpAxAgCSkDGEIAQoCAgICAgMD//wAQs0ggCSkDCCEOIAkpAzghEiAJKQMAIQ8gCSkDMCERCyAAIA83AxAgACARNwMAIAAgDjcDGCAAIBI3AwggCUHgAWokAQvLCgIFfw9+IwFB4ABrIgUkASAEQv///////z+DIQ0gAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDEIgiCEQIARCMIinQf//AXEhBgJAAkAgAkIwiKdB//8BcSIIQf//AWtBgoB+TwRAIAZB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4QhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC////////P1gEQCAFQdAAaiABIAwgASAMIAxQIgcbeSAHQQZ0rXynIgdBD2sQiEdBECAHayEHIAUpA1giDEIgiCEQIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyANIAMgDSANUCIJG3kgCUEGdK18pyIJQQ9rEIhHIAcgCWtBEGohByAFKQNIIQ0gBSkDQCEDCyADQg+GIgtCgID+/w+DIgIgAUIgiCIEfiIRIAtCIIgiCyABQv////8PgyIBfnwiD0IghiISIAEgAn58Ig4gElStIAIgDEL/////D4MiDH4iFSAEIAt+fCISIA1CD4YiEyADQjGIhEL/////D4MiAyABfnwiDSAPIBFUrUIghiAPQiCIhHwiESACIBBCgIAEhCIPfiIWIAsgDH58IhAgE0IgiEKAgICACIQiAiABfnwiEyADIAR+fCIUQiCGfCIXfCEBIAYgCGogB2pB//8AayEGAkAgAiAEfiIYIAsgD358IgQgGFStIAQgAyAMfnwiCyAEVK18IAIgD358IAsgEiAVVK0gDSASVK18fCIEIAtUrXwgAyAPfiIDIAIgDH58IgIgA1StQiCGIAJCIIiEfCAEIAJCIIZ8IgIgBFStfCACIBMgFFatIBAgFlStIBAgE1atfHxCIIYgFEIgiIR8IgQgAlStfCAEIA0gEVatIBEgF1atfHwiAiAEVK18IgRCgICAgICAwACDQgBSBEAgBkEBaiEGDAELIA5CP4ghAyAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIA5CAYYhDiADIAFCAYaEIQELIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIIQf8ATQRAIAVBMGogDiABIAZB/wBqIgYQiEcgBUEgaiACIAQgBhCIRyAFQRBqIA4gASAIEKZIIAUgAiAEIAgQpkggBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhDiAFKQMoIAUpAxiEIQEgBSkDACECIAUpAwgMAgtCACEBDAILIARC////////P4MgBq1CMIaECyAKhCEKIA5QIAFCAFkgAUKAgICAgICAgIB/URtFBEAgCiACQgF8IgEgAlStfCEKDAELIA4gAUKAgICAgICAgIB/hYRCAFIEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAELdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMAC9oBAgF/BH4gAEKAgICAgICAgIB/UQRAIAFCAVgEQCABQj+GDwsjACICQZSgCWoQkUMACyABQoCAgICAgICAgH9RBEAgAEIBWARAIABCP4YPCyMAIgJBlKAJahCRQwALAkACQCAAQj+HIgMgAIUgA30iBEICUw0AIAFCP4ciBSABhSAFfSIGQgJTDQAgAyAFUQRAIARC////////////ACAGgFgNASMAIgJBlKAJahCRQwALIARCgICAgICA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JAELEgAjHCTqAyMbQQ9qQXBxJOsDCwwAIAAk6gMgASTrAwsIACMBI+sDawsFACPqAwsFACPrAwsEACMBCwYAIAAkAQsQACMBIABrQXBxIgAkASAACwoAIAAgAZoQgUcLCgAgACABjBCCRwtFAQF/IwFBEGsiBSQBIAUgASACIAMgBEKAgICAgICAgIB/hRCDRyAFKQMAIQQgACAFKQMINwMIIAAgBDcDACAFQRBqJAELQgIBfgF/IAAgAX0hAgJAIAFCAFkEQCAAIAJZDQEjACIDQf+vCWoQkUMACyAAIAJTDQAjACIDQf+vCWoQkUMACyACC0ABAX8gACABayECAkAgAUEATgRAIAAgAk4NASMAIgFBza4JahCRQwALIAAgAkgNACMAIgFBza4JahCRQwALIAILcAEBfiACIAR9IAEgA1StfSEFIAEgA30hAwJAIARCAFkEQCABIANaIAIgBVkgAiAFURsNASMAIgBBm60JahCRQwALIAEgA1QgAiAFUyACIAVRGw0AIwAiAEGbrQlqEJFDAAsgACADNwMAIAAgBTcDCAvcAgICfwV+AkAgAL0iBEL///////////8AgyIDQoCAgICAgICIP30gA0KAgICAgICA+MAAfVQEQCAEQiqIpyECIARC////////AIMiA0KBgICAgMAAWgRAIAJBgYABaiEBDAILIAJBgIABaiEBIANCgICAgIDAAFINASACQQFxIAFqIQEMAQsgA0KBgICAgICA+P8AWgRAIARCKoinQf8DcUGA/AFyIQEMAQtBgPgBIQEgA0L/////////98AAVg0AQQAhASADQjSIIgOnQb0HSQ0AIARC/////////weDQoCAgICAgIAIhCIFQvEHIAN9iCIGQiqIIgenIQEgBSADQs/4//8PfIZCAFKtIAZC////////AIOEIgNCgYCAgIDAAFoEQCABQQFqIQEMAQsgA0KAgICAgMAAUg0AIAenIgFBAXEgAWohAQsgASAEQjCIp0GAgAJxckH//wNxC9MCAgJ/BH4CQCAAvSIEQv///////////wCDIgNCgICAgICAgIg4fSADQoCAgICAgID4xwB9VARAIARCHYinIQIgBEL/////AYMiA0KBgICAAVoEQCACQYGAgIAEaiEBDAILIAJBgICAgARqIQEgA0KAgICAAVINASABIAJBAXFqIQEMAQsgA0KBgICAgICA+P8AWgRAIARCHYinQf///wFxQYCAgP4HciEBDAELQYCAgPwHIQEgA0L/////////98cAVg0AQQAhASADQjSIIgOnQc0GSQ0AIARC/////////weDQoCAgICAgIAIhCIFQoEHIAN9iCIGQh2IpyEBIAUgA0K/+f//D3yGQgBSrSAGQv////8Bg4QiA0KBgICAAVoEQCABQQFqIQEMAQsgA0KAgICAAVINACABQQFxIAFqIQELIAEgBEIgiKdBgICAgHhxcr4LnQIBBX8CQCAAvCIDQf////8HcSICQYCAgMQDayACQYCAgLwEa0kEQCADQQ12IgRB//8DcSECIANB/z9xIgVBgSBPBEAgAkH//wZrIQEMAgsgAkGAgAdrIQEgBUGAIEcNASABQf//A3EgBEEBcWohAQwBCyACQYGAgPwHTwRAIANBDXZB/wNxQYD8AXIhAQwBC0GA+AEhASACQf///7sESw0AQQAhASACQYCAgOgCSQ0AIANB////A3FBgICABHIiBUHxACACQRd2IgJrdiIEQQ12IQEgBEH/P3EgBSACQdEAa3RBAEdyIgJBgSBPBEAgAUEBaiEBDAELIAJBgCBHDQAgAUEBcSABaiEBCyABIANBEHZBgIACcXJB//8DcQsHACAAENhIC9MDAgJ+An8jAUEgayIEJAECQCABQv///////////wCDIgJCgICAgICAwIA8fSACQoCAgICAgMD/wwB9VARAIAFCBIYgAEI8iIQhAiAAQv//////////D4MiAEKBgICAgICAgAhaBEAgAkKBgICAgICAgMAAfCEDDAILIAJCgICAgICAgIBAfSEDIABCgICAgICAgIAIUg0BIAMgAkIBg3whAwwBCyAAUCACQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQMMAQtCgICAgICAgPj/ACEDIAJC////////v//DAFYNAEIAIQMgAkIwiKciBUGR9wBJDQAgBEEQaiAAIAFC////////P4NCgICAgICAwACEIgIgBUGB9wBrEIhHIAQgACACQYH4ACAFaxCmSCAEKQMIQgSGIAQpAwAiAkI8iIQhAyAEKQMQIAQpAxiEQgBSrSACQv//////////D4OEIgJCgYCAgICAgIAIWgRAIANCAXwhAwwBCyACQoCAgICAgICACFINACADQgGDIAN8IQMLIARBIGokASADIAFCgICAgICAgICAf4OEvwu2AwIBfgN/IwFBIGsiBCQBAkAgAUL///////////8AgyICQoCAgICAgMDAP30gAkKAgICAgIDAv8AAfVQEQCABQhmIpyEFIABQIAFC////D4MiAkKAgIAIVCACQoCAgAhRG0UEQCAFQYGAgIAEaiEDDAILIAVBgICAgARqIQMgACACQoCAgAiFhEIAUg0BIAMgBUEBcWohAwwBCyAAUCACQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIAFCGYinQf///wFxQYCAgP4HciEDDAELQYCAgPwHIQMgAkL///////+/v8AAVg0AQQAhAyACQjCIpyIFQZH+AEkNACAEQRBqIAAgAUL///////8/g0KAgICAgIDAAIQiAiAFQYH+AGsQiEcgBCAAIAJBgf8AIAVrEKZIIAQpAwgiAkIZiKchAyAEKQMAIAQpAxAgBCkDGIRCAFKthCIAUCACQv///w+DIgJCgICACFQgAkKAgIAIURtFBEAgA0EBaiEDDAELIAAgAkKAgIAIhYRCAFINACADQQFxIANqIQMLIARBIGokASADIAFCIIinQYCAgIB4cXK+C0EBAn8Cf0EAIABCIIinIgIgAUIgiKciA0kNABpBAiACIANLDQAaQQAgAKciAiABpyIDSQ0AGkECQQEgAiADSxsLCy0AAn9BACABIANUDQAaQQIgASADVg0AGkEAIAAgAlQNABpBAkEBIAAgAlYbCwuEAQIDfgF/IAF5pyAAeadrIgVBP00EfiAFQT9GBEAgAA8LIABBPyAFa62GIQIgACAFQQFqIgWtiCEAA0AgAEIBhiACQj+IhCIAIABCf4UgAXwiA0I/hyABg30hACACQgGGIASEIQIgA0I/iCIDIQQgBUEBayIFDQALIAMgAkIBhoQFIAILC9UFAgZ/An4gAUIgiCIJpyEDIAGnIQQgAKchBiAAQiCIIgqnIgVFBEAgA0UEQCAGIARuIQMgAgRAIAIgBiADIARsa603AwALIAOtDwsgAkUEQEIADwsgAiAAQv////8PgzcDAEIADwsCQAJ/AkACQAJAAkAgBEUEQCADRQRAQgAPCyAGRQRAIAUgA24hBCACBEAgAiAFIAMgBGxrrUIghjcDAAsgBK0PCyADIANBAWtxRQRAIAIEQCACIABC/////w+DIAlC/////w98IAqDQiCGhDcDAAsgBSADaHatDwsgA2cgBWdrIgNBH08EQCACDQJCAA8LIAVBHyADayIEdCAGIANBAWoiB3ZyIQggBiAEdCEEQQAhAyAFIAd2DAULIANFBEAgBCAEQQFrcUUEQCACBEAgAiAAIAFC/////w98g0L/////D4M3AwALIARBAUYNByAFIARoIgN2rUIghiAFQQF0IANBf3N0IAYgA3ZyrYQPC0EAIQMgBGcgBWdrQSFqIgdBIEYNAyAHQR9NBEAgBUEgIAdrIgR0IAYgB3ZyIQggBiAEdCEEIAUgB3YMBgsgBUHAACAHayIDdCAGIAdBIGsiCHZyIQQgBSAIdiEIIAYgA3QhA0EADAULIANnIAVnayIEQSBJDQEgAg0AQgAPCyACIAA3AwBCAA8LQQAhAyAEQQFqIgdBIEcNAQtBICEHIAUhCCAGIQRBAAwBCyAFQR8gBGsiBHQgBiAHdnIhCCAGIAR0IQQgBSAHdgshBkEAIQUDQCAIQQF0IARBH3ZyrSAGQQF0IAhBH3ZyrUIghoQiACAAQn+FIAF8IglCP4cgAYN9IgCnIQggAEIgiKchBiAEQQF0IANBH3ZyIQQgBSADQQF0ciEDIAlCP4giCachBSAHQQFrIgcNAAsgA61CAYYhASAErUIhhiEKIAIEQCACIAA3AwALIAEgCoQgCYQhAAsgAAsYACACIAAgACABEOJIIgAgAWxrNgIAIAALsgYCBn4DfyMBQRBrIgwkAQJAAkAgASADWiACIARaIAIgBFEbRQRAIAVFBEAMAgsgBSABNwMAIAUgAjcDCAwBCyAEUARAAn4gAiADVARAIAN5IghCAFIEQCACIAiGIAFCAYggCEJ/hYiEIQIgAyAIhiEDIAEgCIYhAQsgAiACIANCIIgiB4AiBCAHfn0hBiABQv////8PgyEKIAFCIIghASADQv////8PgyEJA0AgBEL/////D1ggBCAJfiAGQiCGIAGEWHFFBEAgBEIBfSEEIAYgB3wiBkKAgICAEFQNAQsLIAEgAkIghoQgAyAEfn0iAiACIAeAIgYgB359IQEDQCAGQv////8PWCAGIAl+IAFCIIYgCoRYcUUEQCAGQgF9IQYgASAHfCIBQoCAgIAQVA0BCwtCACEJIAJCIIYgCoQgAyAGfn0gCIgMAQsgAiACIAOAIgkgA359IQggA3kiC0IAUgRAIAggC4YgAULAACALfYiEIQggAyALhiEDIAEgC4YhAQsgCCAIIANCIIgiAoAiBCACfn0hBiABQv////8PgyEKIAFCIIghASADQv////8PgyEHA0AgBEL/////D1ggBCAHfiAGQiCGIAGEWHFFBEAgBEIBfSEEIAIgBnwiBkKAgICAEFQNAQsLIAEgCEIghoQgAyAEfn0iCCAIIAKAIgYgAn59IQEDQCAGQv////8PWCAGIAd+IAFCIIYgCoRYcUUEQCAGQgF9IQYgASACfCIBQoCAgIAQVA0BCwsgCEIghiAKhCADIAZ+fSALiAshASAGIARCIIZ8IQcgBUUNAiAFQgA3AwggBSABNwMADAILIAR5pyACeadrIg1BAE4EQCAMIAMgBCANEIhHIAwpAwghBCAMKQMAIQYDQCACIAYgAUJ/hXwgBlStIAQgAkJ/hXx8IgNCP4ciCSAEg30gASAGIAmDIglUrX0hAiAEQj+GIAZCAYiEIQYgB0IBhiADQj+IhCEHIAEgCX0hASANIg5BAWshDSAEQgGIIQQgDg0ACwsgBUUNACAFIAI3AwggBSABNwMAC0IAIQkLIAAgBzcDACAAIAk3AwggDEEQaiQBC34BBH8gAWcgAGdrIgNBH00EfyADQR9GBEAgAA8LIABBHyADa3QhAiAAIANBAWoiA3YhAANAIABBAXQgAkEfdnIiACAAQX9zIAFqIgRBH3UgAXFrIQAgAkEBdCAFciECIARBH3YiBCEFIANBAWsiAw0ACyAEIAJBAXRyBSACCws7AQF/IwFBEGsiBSQBIAUgASACIAMgBEEAEOFIIAUpAwAhBCAAIAUpAwg3AwggACAENwMAIAVBEGokAQt9AgF/A34gAXmnIAB5p2siAkE/SwRAIAAPCyACQT9HBEAgAEE/IAJrrYYhBCAAIAJBAWoiAq2IIQNCACEAA0AgA0IBhiAEQj+IhCIDIANCf4UgAXwiBUI/hyABg30hAyAEQgGGIACEIQQgBUI/iCEAIAJBAWsiAg0ACwsgAwt3AQR/IAFnIABnayICQR9LBEAgAA8LIAJBH0cEQCAAQR8gAmt0IQQgACACQQFqIgJ2IQNBACEAA0AgA0EBdCAEQR92ciIDIANBf3MgAWoiBUEfdSABcWshAyAEQQF0IAByIQQgBUEfdiEAIAJBAWsiAg0ACwsgAws+AQF/IwFBIGsiBSQBIAUgASACIAMgBCAFQRBqEOFIIAUpAxAhBCAAIAUpAxg3AwggACAENwMAIAVBIGokAQsWACAAIAEgAiABIABrEOhIQQF0EOlICxEAIABFBEBBAA8LQR8gAGdrC/UHAQZ/IwFBIGsiBCQBIAQgADYCHANAIAAhBgNAIAFBAWshCANAAkACQAJAAkACQAJAAkACQCABIAZrIgUOBgcHAAQBAgMLIAQgAUEBayIFNgIYIAIgBSAGEOtIRQ0GIARBHGogBEEYahDsSAwGCyAGIAZBAWogBkECaiABQQFrIAIQ7UgMBQsgBiAGQQFqIAZBAmogBkEDaiABQQFrIAIQ7kgMBAsgBUEeTARAIAYgASACEO9IDAQLIANFBEAgBiABIAEgAhDwSBoMBAsgBCAGIAVBAXZqIgc2AhQCfyAFQegHTwRAIAYgBiAFQQJ2IgVqIAcgBSAHaiAIIAIQ8UgMAQsgBiAHIAggAhDySAshByADQQFrIQMgBCAGNgIQIAQgCDYCDCACIAYgBCgCFBDrSEUEQANAIAQgBCgCDEEBayIFNgIMIAUgBCgCECIJRgRAIAQgCDYCDCAEIAlBAWo2AhAgAiAGIAgQ60ghByAEKAIQIQUgBw0FA0AgBSAEKAIMRg0HIAIgBiAFEOtIBEAgBEEQaiAEQQxqEOxIIAQgBCgCEEEBaiIFNgIQDAcFIAQgBCgCEEEBaiIFNgIQDAELAAsACyACIAUgBCgCFBDrSEUNAAsgBEEQaiAEQQxqEOxIIAdBAWohBwsgBCAEKAIQQQFqIgU2AhACQCAFIAQoAgxPDQADQCACIAUgBCgCFBDrSARAIAQgBCgCEEEBaiIFNgIQDAELA0AgBCAEKAIMQQFrIgU2AgwgAiAFIAQoAhQQ60hFDQALIAQoAhAiBSAEKAIMSw0BIARBEGogBEEMahDsSCAEKAIQIgUgBCgCFEYEQCAEIAQoAgw2AhQLIAdBAWohByAEIAVBAWoiBTYCEAwACwALAkAgBSAEKAIUIglGDQAgAiAJIAUQ60hFDQAgB0EBaiEHIARBEGogBEEUahDsSAsCQCAHDQAgBiAEKAIQIAIQ80ghBSAEKAIQQQFqIAEgAhDzSARAIAUNBSAEIAQoAhAiATYCGAwHCyAFRQ0AIAQoAhBBAWohAAwCCyAEKAIQIgUgAGsgASAFa0gEQCAAIAUgAiADEOlIIAQoAhBBAWohAAwCCyAFQQFqIAEgAiADEOlIIAQgBCgCECIBNgIYDAYLIAYgBkEBaiABQQFrIAIQ9EgMAgsgBCAANgIcDAQLIAUgBCgCDEYNAANAAkAgAiAGIAUQ60hFDQADQCAEIAQoAgxBAWsiBTYCDCACIAYgBRDrSA0ACyAEKAIQIgAgBCgCDEkEQCAEQRBqIARBDGoQ7EgMAQsgBCAANgIcIAAhBgwDCyAEIAQoAhBBAWoiBTYCEAwACwALCwsLIARBIGokAQsFACAAZwsNACABLAAAIAIsAABICw8AIAAoAgAgASgCABDxSQsvACAAIAIgBBDySSABIAMgBBDySSAAIAEgBBDySSACIAMgBBDySSABIAIgBBDySQs+ACAAIAEgBRDySSADIAQgBRDySSACIAMgBCAFEPNJIAEgBCAFEPJJIAAgAiADIAUQ80kgASACIAMgBRDzSQvHAQEDfyMBQRBrIgMkASAAIABBAWogAEECaiIFIAIQ9EggAEEDaiEEA0ACQCADIAQ2AgwgASAERg0AIAIgBCAFEOtIBEAgAyADQQxqKAIALQAAOgALIAMgBTYCBCADKAIMIQQDQAJAIAQgA0EEaigCAC0AADoAACAAIAMoAgQiBEYEQCAAIQQMAQsgAyAEQQFrIgU2AgQgAiADQQtqIAUQ60gNAQsLIAQgAy0ACzoAAAsgAygCDCIFQQFqIQQMAQsLIANBEGokAQsYACAAIAFGBEAgAg8LIAAgASACIAMQk0oLEQAgACABIAIgAyAEIAUQlEoLyQEBAn8jAUEQayIEJAEgBCABNgIIIAQgADYCDCAEIAI2AgQgAyABIAAQ60ghBSADIAIgARDrSCEBAn8CQCAFRQRAQQAgAUUNAhogBEEIaiAEQQRqEOxIQQEgAyAEKAIIIAAQ60hFDQIaIARBDGogBEEIahDsSAwBCyABBEAgBEEMaiAEQQRqEOxIQQEMAgsgBEEMaiAEQQhqEOxIQQEgAyACIAQoAggQ60hFDQEaIARBCGogBEEEahDsSAtBAgshASAEQRBqJAEgAQuKAwEEfyMBQSBrIgMkASADIAE2AhggAyAANgIcQQEhBQJAAkACQAJAAkACQCABIABrDgYFBQABAgMECyADIAFBAWsiATYCGCACIAEgABDrSEUNBCADQRxqIANBGGoQ7EgMBAsgACAAQQFqIAFBAWsgAhD0SAwDCyAAIABBAWogAEECaiABQQFrIAIQ7UgMAgsgACAAQQFqIABBAmogAEEDaiABQQFrIAIQ7kgMAQsgACAAQQFqIABBAmoiBCACEPRIIABBA2ohAANAIAMgADYCFCAAIAFGDQEgAiAAIAQQ60gEQCADIANBFGooAgAtAAA6ABMgAyAENgIMIAMoAhQhAANAAkAgACADQQxqKAIALQAAOgAAIAMoAgwiACADKAIcRg0AIAMgAEEBayIBNgIMIAIgA0ETaiABEOtIDQELCyAAIAMtABM6AAAgBkEBaiIGQQhGBEAgAygCGCADKAIUQQFqRiEFDAMLIAMoAhghAQsgAygCFCIEQQFqIQAMAAsACyADQSBqJAEgBQsWACABIAIgAxDySSAAIAEgAiADEPNJCxkAIAAgASACIAEgAGtBAnUQ6EhBAXQQ9kgL/gcBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUEEayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUECdSIHDgYHBwAEAQIDCyAEIAFBBGsiBTYCGCACIAUgBhD3SEUNBiAEQRxqIARBGGoQ+EgMBgsgBiAGQQRqIAZBCGogAUEEayACEPlIDAULIAYgBkEEaiAGQQhqIAZBDGogAUEEayACEPpIDAQLIAVB+wBMBEAgBiABIAIQ+0gMBAsgA0UEQCAGIAEgASACEPxIGgwECyAEIAYgB0EBdEF8cWoiCDYCFAJ/IAVBnR9PBEAgBiAGIAdBfHEiBWogCCAFIAhqIAkgAhD9SAwBCyAGIAggCSACEP5ICyEHIANBAWshAyAEIAY2AhAgBCAJNgIMIAIgBiAEKAIUEPdIRQRAA0AgBCAEKAIMQQRrIgU2AgwgBSAEKAIQIghGBEAgBCAJNgIMIAQgCEEEajYCECACIAYgCRD3SCEHIAQoAhAhBSAHDQUDQCAFIAQoAgxGDQcgAiAGIAUQ90gEQCAEQRBqIARBDGoQ+EggBCAEKAIQQQRqIgU2AhAMBwUgBCAEKAIQQQRqIgU2AhAMAQsACwALIAIgBSAEKAIUEPdIRQ0ACyAEQRBqIARBDGoQ+EggB0EBaiEHCyAEIAQoAhBBBGoiBTYCEAJAIAUgBCgCDE8NAANAIAIgBSAEKAIUEPdIBEAgBCAEKAIQQQRqIgU2AhAMAQsDQCAEIAQoAgxBBGsiBTYCDCACIAUgBCgCFBD3SEUNAAsgBCgCECIFIAQoAgxLDQEgBEEQaiAEQQxqEPhIIAQoAhAiBSAEKAIURgRAIAQgBCgCDDYCFAsgB0EBaiEHIAQgBUEEaiIFNgIQDAALAAsCQCAFIAQoAhQiCEYNACACIAggBRD3SEUNACAHQQFqIQcgBEEQaiAEQRRqEPhICwJAIAcNACAGIAQoAhAgAhD/SCEFIAQoAhBBBGogASACEP9IBEAgBQ0FIAQgBCgCECIBNgIYDAcLIAVFDQAgBCgCEEEEaiEADAILIAQoAhAiBSAAayABIAVrSARAIAAgBSACIAMQ9kggBCgCEEEEaiEADAILIAVBBGogASACIAMQ9kggBCAEKAIQIgE2AhgMBgsgBiAGQQRqIAFBBGsgAhCASQwCCyAEIAA2AhwMBAsgBSAEKAIMRg0AA0ACQCACIAYgBRD3SEUNAANAIAQgBCgCDEEEayIFNgIMIAIgBiAFEPdIDQALIAQoAhAiACAEKAIMSQRAIARBEGogBEEMahD4SAwBCyAEIAA2AhwgACEGDAMLIAQgBCgCEEEEaiIFNgIQDAALAAsLCwsgBEEgaiQBCw0AIAEoAgAgAigCAEgLDwAgACgCACABKAIAEPRJCy8AIAAgAiAEEPVJIAEgAyAEEPVJIAAgASAEEPVJIAIgAyAEEPVJIAEgAiAEEPVJCz4AIAAgASAFEPVJIAMgBCAFEPVJIAIgAyAEIAUQ9kkgASAEIAUQ9UkgACACIAMgBRD2SSABIAIgAyAFEPZJC8cBAQN/IwFBEGsiAyQBIAAgAEEEaiAAQQhqIgUgAhCASSAAQQxqIQQDQAJAIAMgBDYCDCABIARGDQAgAiAEIAUQ90gEQCADIANBDGooAgAoAgA2AgggAyAFNgIEIAMoAgwhBANAAkAgBCADQQRqKAIAKAIANgIAIAAgAygCBCIERgRAIAAhBAwBCyADIARBBGsiBTYCBCACIANBCGogBRD3SA0BCwsgBCADKAIINgIACyADKAIMIgVBBGohBAwBCwsgA0EQaiQBCxgAIAAgAUYEQCACDwsgACABIAIgAxCcSgsRACAAIAEgAiADIAQgBRCdSgvJAQECfyMBQRBrIgQkASAEIAE2AgggBCAANgIMIAQgAjYCBCADIAEgABD3SCEFIAMgAiABEPdIIQECfwJAIAVFBEBBACABRQ0CGiAEQQhqIARBBGoQ+EhBASADIAQoAgggABD3SEUNAhogBEEMaiAEQQhqEPhIDAELIAEEQCAEQQxqIARBBGoQ+EhBAQwCCyAEQQxqIARBCGoQ+EhBASADIAIgBCgCCBD3SEUNARogBEEIaiAEQQRqEPhIC0ECCyEBIARBEGokASABC4YDAQV/IwFBIGsiAyQBIAMgADYCHEEBIQYgAiEEAkACQAJAAkACQAJAIAEgAGtBAnUOBgUFAAECAwQLIAMgAUEEayICNgIYIAQgAiAAEPdIRQ0EIANBHGogA0EYahD4SAwECyAAIABBBGogAUEEayAEEIBJDAMLIAAgAEEEaiAAQQhqIAFBBGsgBBD5SAwCCyAAIABBBGogAEEIaiAAQQxqIAFBBGsgBBD6SAwBCyAAIABBBGogAEEIaiIFIAQQgEkgAEEMaiECA0AgAyACNgIUIAEgAkYNAQJAIAQgAiAFEPdIRQ0AIAMgA0EUaigCACgCADYCECADIAU2AgwgAygCFCECA0ACQCACIANBDGooAgAoAgA2AgAgACADKAIMIgJGBEAgACECDAELIAMgAkEEayIFNgIMIAQgA0EQaiAFEPdIDQELCyACIAMoAhA2AgAgB0EBaiIHQQhHDQAgAygCFEEEaiABRiEGDAILIAMoAhQiBUEEaiECDAALAAsgA0EgaiQBIAYLFgAgASACIAMQ9UkgACABIAIgAxD2SQsWACAAIAEgAiABIABrEOhIQQF0EIJJC/UHAQZ/IwFBIGsiBCQBIAQgADYCHANAIAAhBgNAIAFBAWshCANAAkACQAJAAkACQAJAAkACQCABIAZrIgUOBgcHAAQBAgMLIAQgAUEBayIFNgIYIAIgBSAGEOtIRQ0GIARBHGogBEEYahDsSAwGCyAGIAZBAWogBkECaiABQQFrIAIQ7UgMBQsgBiAGQQFqIAZBAmogBkEDaiABQQFrIAIQ7kgMBAsgBUEeTARAIAYgASACEO9IDAQLIANFBEAgBiABIAEgAhDwSBoMBAsgBCAGIAVBAXZqIgc2AhQCfyAFQegHTwRAIAYgBiAFQQJ2IgVqIAcgBSAHaiAIIAIQ8UgMAQsgBiAHIAggAhDySAshByADQQFrIQMgBCAGNgIQIAQgCDYCDCACIAYgBCgCFBDrSEUEQANAIAQgBCgCDEEBayIFNgIMIAUgBCgCECIJRgRAIAQgCDYCDCAEIAlBAWo2AhAgAiAGIAgQ60ghByAEKAIQIQUgBw0FA0AgBSAEKAIMRg0HIAIgBiAFEOtIBEAgBEEQaiAEQQxqEOxIIAQgBCgCEEEBaiIFNgIQDAcFIAQgBCgCEEEBaiIFNgIQDAELAAsACyACIAUgBCgCFBDrSEUNAAsgBEEQaiAEQQxqEOxIIAdBAWohBwsgBCAEKAIQQQFqIgU2AhACQCAFIAQoAgxPDQADQCACIAUgBCgCFBDrSARAIAQgBCgCEEEBaiIFNgIQDAELA0AgBCAEKAIMQQFrIgU2AgwgAiAFIAQoAhQQ60hFDQALIAQoAhAiBSAEKAIMSw0BIARBEGogBEEMahDsSCAEKAIQIgUgBCgCFEYEQCAEIAQoAgw2AhQLIAdBAWohByAEIAVBAWoiBTYCEAwACwALAkAgBSAEKAIUIglGDQAgAiAJIAUQ60hFDQAgB0EBaiEHIARBEGogBEEUahDsSAsCQCAHDQAgBiAEKAIQIAIQ80ghBSAEKAIQQQFqIAEgAhDzSARAIAUNBSAEIAQoAhAiATYCGAwHCyAFRQ0AIAQoAhBBAWohAAwCCyAEKAIQIgUgAGsgASAFa0gEQCAAIAUgAiADEIJJIAQoAhBBAWohAAwCCyAFQQFqIAEgAiADEIJJIAQgBCgCECIBNgIYDAYLIAYgBkEBaiABQQFrIAIQ9EgMAgsgBCAANgIcDAQLIAUgBCgCDEYNAANAAkAgAiAGIAUQ60hFDQADQCAEIAQoAgxBAWsiBTYCDCACIAYgBRDrSA0ACyAEKAIQIgAgBCgCDEkEQCAEQRBqIARBDGoQ7EgMAQsgBCAANgIcIAAhBgwDCyAEIAQoAhBBAWoiBTYCEAwACwALCwsLIARBIGokAQsWACAAIAEgAiABIABrEOhIQQF0EIRJC/UHAQZ/IwFBIGsiBCQBIAQgADYCHANAIAAhBgNAIAFBAWshCANAAkACQAJAAkACQAJAAkACQCABIAZrIgUOBgcHAAQBAgMLIAQgAUEBayIFNgIYIAIgBSAGEIVJRQ0GIARBHGogBEEYahDsSAwGCyAGIAZBAWogBkECaiABQQFrIAIQhkkMBQsgBiAGQQFqIAZBAmogBkEDaiABQQFrIAIQh0kMBAsgBUEeTARAIAYgASACEIhJDAQLIANFBEAgBiABIAEgAhCJSRoMBAsgBCAGIAVBAXZqIgc2AhQCfyAFQegHTwRAIAYgBiAFQQJ2IgVqIAcgBSAHaiAIIAIQikkMAQsgBiAHIAggAhCLSQshByADQQFrIQMgBCAGNgIQIAQgCDYCDCACIAYgBCgCFBCFSUUEQANAIAQgBCgCDEEBayIFNgIMIAUgBCgCECIJRgRAIAQgCDYCDCAEIAlBAWo2AhAgAiAGIAgQhUkhByAEKAIQIQUgBw0FA0AgBSAEKAIMRg0HIAIgBiAFEIVJBEAgBEEQaiAEQQxqEOxIIAQgBCgCEEEBaiIFNgIQDAcFIAQgBCgCEEEBaiIFNgIQDAELAAsACyACIAUgBCgCFBCFSUUNAAsgBEEQaiAEQQxqEOxIIAdBAWohBwsgBCAEKAIQQQFqIgU2AhACQCAFIAQoAgxPDQADQCACIAUgBCgCFBCFSQRAIAQgBCgCEEEBaiIFNgIQDAELA0AgBCAEKAIMQQFrIgU2AgwgAiAFIAQoAhQQhUlFDQALIAQoAhAiBSAEKAIMSw0BIARBEGogBEEMahDsSCAEKAIQIgUgBCgCFEYEQCAEIAQoAgw2AhQLIAdBAWohByAEIAVBAWoiBTYCEAwACwALAkAgBSAEKAIUIglGDQAgAiAJIAUQhUlFDQAgB0EBaiEHIARBEGogBEEUahDsSAsCQCAHDQAgBiAEKAIQIAIQjEkhBSAEKAIQQQFqIAEgAhCMSQRAIAUNBSAEIAQoAhAiATYCGAwHCyAFRQ0AIAQoAhBBAWohAAwCCyAEKAIQIgUgAGsgASAFa0gEQCAAIAUgAiADEIRJIAQoAhBBAWohAAwCCyAFQQFqIAEgAiADEIRJIAQgBCgCECIBNgIYDAYLIAYgBkEBaiABQQFrIAIQjUkMAgsgBCAANgIcDAQLIAUgBCgCDEYNAANAAkAgAiAGIAUQhUlFDQADQCAEIAQoAgxBAWsiBTYCDCACIAYgBRCFSQ0ACyAEKAIQIgAgBCgCDEkEQCAEQRBqIARBDGoQ7EgMAQsgBCAANgIcIAAhBgwDCyAEIAQoAhBBAWoiBTYCEAwACwALCwsLIARBIGokAQsNACABLQAAIAItAABJCy8AIAAgAiAEEPdJIAEgAyAEEPdJIAAgASAEEPdJIAIgAyAEEPdJIAEgAiAEEPdJCz4AIAAgASAFEPdJIAMgBCAFEPdJIAIgAyAEIAUQ+EkgASAEIAUQ90kgACACIAMgBRD4SSABIAIgAyAFEPhJC8cBAQN/IwFBEGsiAyQBIAAgAEEBaiAAQQJqIgUgAhCNSSAAQQNqIQQDQAJAIAMgBDYCDCABIARGDQAgAiAEIAUQhUkEQCADIANBDGooAgAtAAA6AAsgAyAFNgIEIAMoAgwhBANAAkAgBCADQQRqKAIALQAAOgAAIAAgAygCBCIERgRAIAAhBAwBCyADIARBAWsiBTYCBCACIANBC2ogBRCFSQ0BCwsgBCADLQALOgAACyADKAIMIgVBAWohBAwBCwsgA0EQaiQBCxgAIAAgAUYEQCACDwsgACABIAIgAxClSgsRACAAIAEgAiADIAQgBRCmSgvJAQECfyMBQRBrIgQkASAEIAE2AgggBCAANgIMIAQgAjYCBCADIAEgABCFSSEFIAMgAiABEIVJIQECfwJAIAVFBEBBACABRQ0CGiAEQQhqIARBBGoQ7EhBASADIAQoAgggABCFSUUNAhogBEEMaiAEQQhqEOxIDAELIAEEQCAEQQxqIARBBGoQ7EhBAQwCCyAEQQxqIARBCGoQ7EhBASADIAIgBCgCCBCFSUUNARogBEEIaiAEQQRqEOxIC0ECCyEBIARBEGokASABC4oDAQR/IwFBIGsiAyQBIAMgATYCGCADIAA2AhxBASEFAkACQAJAAkACQAJAIAEgAGsOBgUFAAECAwQLIAMgAUEBayIBNgIYIAIgASAAEIVJRQ0EIANBHGogA0EYahDsSAwECyAAIABBAWogAUEBayACEI1JDAMLIAAgAEEBaiAAQQJqIAFBAWsgAhCGSQwCCyAAIABBAWogAEECaiAAQQNqIAFBAWsgAhCHSQwBCyAAIABBAWogAEECaiIEIAIQjUkgAEEDaiEAA0AgAyAANgIUIAAgAUYNASACIAAgBBCFSQRAIAMgA0EUaigCAC0AADoAEyADIAQ2AgwgAygCFCEAA0ACQCAAIANBDGooAgAtAAA6AAAgAygCDCIAIAMoAhxGDQAgAyAAQQFrIgE2AgwgAiADQRNqIAEQhUkNAQsLIAAgAy0AEzoAACAGQQFqIgZBCEYEQCADKAIYIAMoAhRBAWpGIQUMAwsgAygCGCEBCyADKAIUIgRBAWohAAwACwALIANBIGokASAFCxYAIAEgAiADEPdJIAAgASACIAMQ+EkLGQAgACABIAIgASAAa0EBdRDoSEEBdBCPSQuBCAEGfyMBQSBrIgQkASAEIAA2AhwDQCAAIQYDQCABQQJrIQkDQAJAAkACQAJAAkACQAJAAkAgASAGayIFQQF1IgcOBgcHAAQBAgMLIAQgAUECayIFNgIYIAIgBSAGEJBJRQ0GIARBHGogBEEYahCRSQwGCyAGIAZBAmogBkEEaiABQQJrIAIQkkkMBQsgBiAGQQJqIAZBBGogBkEGaiABQQJrIAIQk0kMBAsgBUE9TARAIAYgASACEJRJDAQLIANFBEAgBiABIAEgAhCVSRoMBAsgBCAGIAdBfnFqIgg2AhQCfyAFQc8PTwRAIAYgBiAHQQF2Qf7///8HcSIFaiAIIAUgCGogCSACEJZJDAELIAYgCCAJIAIQl0kLIQcgA0EBayEDIAQgBjYCECAEIAk2AgwgAiAGIAQoAhQQkElFBEADQCAEIAQoAgxBAmsiBTYCDCAFIAQoAhAiCEYEQCAEIAk2AgwgBCAIQQJqNgIQIAIgBiAJEJBJIQcgBCgCECEFIAcNBQNAIAUgBCgCDEYNByACIAYgBRCQSQRAIARBEGogBEEMahCRSSAEIAQoAhBBAmoiBTYCEAwHBSAEIAQoAhBBAmoiBTYCEAwBCwALAAsgAiAFIAQoAhQQkElFDQALIARBEGogBEEMahCRSSAHQQFqIQcLIAQgBCgCEEECaiIFNgIQAkAgBSAEKAIMTw0AA0AgAiAFIAQoAhQQkEkEQCAEIAQoAhBBAmoiBTYCEAwBCwNAIAQgBCgCDEECayIFNgIMIAIgBSAEKAIUEJBJRQ0ACyAEKAIQIgUgBCgCDEsNASAEQRBqIARBDGoQkUkgBCgCECIFIAQoAhRGBEAgBCAEKAIMNgIUCyAHQQFqIQcgBCAFQQJqIgU2AhAMAAsACwJAIAUgBCgCFCIIRg0AIAIgCCAFEJBJRQ0AIAdBAWohByAEQRBqIARBFGoQkUkLAkAgBw0AIAYgBCgCECACEJhJIQUgBCgCEEECaiABIAIQmEkEQCAFDQUgBCAEKAIQIgE2AhgMBwsgBUUNACAEKAIQQQJqIQAMAgsgBCgCECIFIABrIAEgBWtIBEAgACAFIAIgAxCPSSAEKAIQQQJqIQAMAgsgBUECaiABIAIgAxCPSSAEIAQoAhAiATYCGAwGCyAGIAZBAmogAUECayACEJlJDAILIAQgADYCHAwECyAFIAQoAgxGDQADQAJAIAIgBiAFEJBJRQ0AA0AgBCAEKAIMQQJrIgU2AgwgAiAGIAUQkEkNAAsgBCgCECIAIAQoAgxJBEAgBEEQaiAEQQxqEJFJDAELIAQgADYCHCAAIQYMAwsgBCAEKAIQQQJqIgU2AhAMAAsACwsLCyAEQSBqJAELDQAgAS4BACACLgEASAsPACAAKAIAIAEoAgAQ+UkLLwAgACACIAQQ+kkgASADIAQQ+kkgACABIAQQ+kkgAiADIAQQ+kkgASACIAQQ+kkLPgAgACABIAUQ+kkgAyAEIAUQ+kkgAiADIAQgBRD7SSABIAQgBRD6SSAAIAIgAyAFEPtJIAEgAiADIAUQ+0kLxwEBA38jAUEQayIDJAEgACAAQQJqIABBBGoiBSACEJlJIABBBmohBANAAkAgAyAENgIMIAEgBEYNACACIAQgBRCQSQRAIAMgA0EMaigCAC8BADsBCiADIAU2AgQgAygCDCEEA0ACQCAEIANBBGooAgAvAQA7AQAgACADKAIEIgRGBEAgACEEDAELIAMgBEECayIFNgIEIAIgA0EKaiAFEJBJDQELCyAEIAMvAQo7AQALIAMoAgwiBUECaiEEDAELCyADQRBqJAELGAAgACABRgRAIAIPCyAAIAEgAiADEK5KCxEAIAAgASACIAMgBCAFEK9KC8kBAQJ/IwFBEGsiBCQBIAQgATYCCCAEIAA2AgwgBCACNgIEIAMgASAAEJBJIQUgAyACIAEQkEkhAQJ/AkAgBUUEQEEAIAFFDQIaIARBCGogBEEEahCRSUEBIAMgBCgCCCAAEJBJRQ0CGiAEQQxqIARBCGoQkUkMAQsgAQRAIARBDGogBEEEahCRSUEBDAILIARBDGogBEEIahCRSUEBIAMgAiAEKAIIEJBJRQ0BGiAEQQhqIARBBGoQkUkLQQILIQEgBEEQaiQBIAELhgMBBX8jAUEgayIDJAEgAyAANgIcQQEhBiACIQQCQAJAAkACQAJAAkAgASAAa0EBdQ4GBQUAAQIDBAsgAyABQQJrIgI2AhggBCACIAAQkElFDQQgA0EcaiADQRhqEJFJDAQLIAAgAEECaiABQQJrIAQQmUkMAwsgACAAQQJqIABBBGogAUECayAEEJJJDAILIAAgAEECaiAAQQRqIABBBmogAUECayAEEJNJDAELIAAgAEECaiAAQQRqIgUgBBCZSSAAQQZqIQIDQCADIAI2AhQgASACRg0BAkAgBCACIAUQkElFDQAgAyADQRRqKAIALwEAOwESIAMgBTYCDCADKAIUIQIDQAJAIAIgA0EMaigCAC8BADsBACAAIAMoAgwiAkYEQCAAIQIMAQsgAyACQQJrIgU2AgwgBCADQRJqIAUQkEkNAQsLIAIgAy8BEjsBACAHQQFqIgdBCEcNACADKAIUQQJqIAFGIQYMAgsgAygCFCIFQQJqIQIMAAsACyADQSBqJAEgBgsWACABIAIgAxD6SSAAIAEgAiADEPtJCxkAIAAgASACIAEgAGtBAXUQ6EhBAXQQm0kLgQgBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUECayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUEBdSIHDgYHBwAEAQIDCyAEIAFBAmsiBTYCGCACIAUgBhCcSUUNBiAEQRxqIARBGGoQkUkMBgsgBiAGQQJqIAZBBGogAUECayACEJ1JDAULIAYgBkECaiAGQQRqIAZBBmogAUECayACEJ5JDAQLIAVBPUwEQCAGIAEgAhCfSQwECyADRQRAIAYgASABIAIQoEkaDAQLIAQgBiAHQX5xaiIINgIUAn8gBUHPD08EQCAGIAYgB0EBdkH+////B3EiBWogCCAFIAhqIAkgAhChSQwBCyAGIAggCSACEKJJCyEHIANBAWshAyAEIAY2AhAgBCAJNgIMIAIgBiAEKAIUEJxJRQRAA0AgBCAEKAIMQQJrIgU2AgwgBSAEKAIQIghGBEAgBCAJNgIMIAQgCEECajYCECACIAYgCRCcSSEHIAQoAhAhBSAHDQUDQCAFIAQoAgxGDQcgAiAGIAUQnEkEQCAEQRBqIARBDGoQkUkgBCAEKAIQQQJqIgU2AhAMBwUgBCAEKAIQQQJqIgU2AhAMAQsACwALIAIgBSAEKAIUEJxJRQ0ACyAEQRBqIARBDGoQkUkgB0EBaiEHCyAEIAQoAhBBAmoiBTYCEAJAIAUgBCgCDE8NAANAIAIgBSAEKAIUEJxJBEAgBCAEKAIQQQJqIgU2AhAMAQsDQCAEIAQoAgxBAmsiBTYCDCACIAUgBCgCFBCcSUUNAAsgBCgCECIFIAQoAgxLDQEgBEEQaiAEQQxqEJFJIAQoAhAiBSAEKAIURgRAIAQgBCgCDDYCFAsgB0EBaiEHIAQgBUECaiIFNgIQDAALAAsCQCAFIAQoAhQiCEYNACACIAggBRCcSUUNACAHQQFqIQcgBEEQaiAEQRRqEJFJCwJAIAcNACAGIAQoAhAgAhCjSSEFIAQoAhBBAmogASACEKNJBEAgBQ0FIAQgBCgCECIBNgIYDAcLIAVFDQAgBCgCEEECaiEADAILIAQoAhAiBSAAayABIAVrSARAIAAgBSACIAMQm0kgBCgCEEECaiEADAILIAVBAmogASACIAMQm0kgBCAEKAIQIgE2AhgMBgsgBiAGQQJqIAFBAmsgAhCkSQwCCyAEIAA2AhwMBAsgBSAEKAIMRg0AA0ACQCACIAYgBRCcSUUNAANAIAQgBCgCDEECayIFNgIMIAIgBiAFEJxJDQALIAQoAhAiACAEKAIMSQRAIARBEGogBEEMahCRSQwBCyAEIAA2AhwgACEGDAMLIAQgBCgCEEECaiIFNgIQDAALAAsLCwsgBEEgaiQBCw0AIAEvAQAgAi8BAEkLLwAgACACIAQQ/EkgASADIAQQ/EkgACABIAQQ/EkgAiADIAQQ/EkgASACIAQQ/EkLPgAgACABIAUQ/EkgAyAEIAUQ/EkgAiADIAQgBRD9SSABIAQgBRD8SSAAIAIgAyAFEP1JIAEgAiADIAUQ/UkLxwEBA38jAUEQayIDJAEgACAAQQJqIABBBGoiBSACEKRJIABBBmohBANAAkAgAyAENgIMIAEgBEYNACACIAQgBRCcSQRAIAMgA0EMaigCAC8BADsBCiADIAU2AgQgAygCDCEEA0ACQCAEIANBBGooAgAvAQA7AQAgACADKAIEIgRGBEAgACEEDAELIAMgBEECayIFNgIEIAIgA0EKaiAFEJxJDQELCyAEIAMvAQo7AQALIAMoAgwiBUECaiEEDAELCyADQRBqJAELGAAgACABRgRAIAIPCyAAIAEgAiADELdKCxEAIAAgASACIAMgBCAFELhKC8kBAQJ/IwFBEGsiBCQBIAQgATYCCCAEIAA2AgwgBCACNgIEIAMgASAAEJxJIQUgAyACIAEQnEkhAQJ/AkAgBUUEQEEAIAFFDQIaIARBCGogBEEEahCRSUEBIAMgBCgCCCAAEJxJRQ0CGiAEQQxqIARBCGoQkUkMAQsgAQRAIARBDGogBEEEahCRSUEBDAILIARBDGogBEEIahCRSUEBIAMgAiAEKAIIEJxJRQ0BGiAEQQhqIARBBGoQkUkLQQILIQEgBEEQaiQBIAELhgMBBX8jAUEgayIDJAEgAyAANgIcQQEhBiACIQQCQAJAAkACQAJAAkAgASAAa0EBdQ4GBQUAAQIDBAsgAyABQQJrIgI2AhggBCACIAAQnElFDQQgA0EcaiADQRhqEJFJDAQLIAAgAEECaiABQQJrIAQQpEkMAwsgACAAQQJqIABBBGogAUECayAEEJ1JDAILIAAgAEECaiAAQQRqIABBBmogAUECayAEEJ5JDAELIAAgAEECaiAAQQRqIgUgBBCkSSAAQQZqIQIDQCADIAI2AhQgASACRg0BAkAgBCACIAUQnElFDQAgAyADQRRqKAIALwEAOwESIAMgBTYCDCADKAIUIQIDQAJAIAIgA0EMaigCAC8BADsBACAAIAMoAgwiAkYEQCAAIQIMAQsgAyACQQJrIgU2AgwgBCADQRJqIAUQnEkNAQsLIAIgAy8BEjsBACAHQQFqIgdBCEcNACADKAIUQQJqIAFGIQYMAgsgAygCFCIFQQJqIQIMAAsACyADQSBqJAEgBgsWACABIAIgAxD8SSAAIAEgAiADEP1JCxkAIAAgASACIAEgAGtBAnUQ6EhBAXQQpkkL/gcBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUEEayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUECdSIHDgYHBwAEAQIDCyAEIAFBBGsiBTYCGCACIAUgBhD3SEUNBiAEQRxqIARBGGoQ+EgMBgsgBiAGQQRqIAZBCGogAUEEayACEPlIDAULIAYgBkEEaiAGQQhqIAZBDGogAUEEayACEPpIDAQLIAVB+wBMBEAgBiABIAIQ+0gMBAsgA0UEQCAGIAEgASACEPxIGgwECyAEIAYgB0EBdEF8cWoiCDYCFAJ/IAVBnR9PBEAgBiAGIAdBfHEiBWogCCAFIAhqIAkgAhD9SAwBCyAGIAggCSACEP5ICyEHIANBAWshAyAEIAY2AhAgBCAJNgIMIAIgBiAEKAIUEPdIRQRAA0AgBCAEKAIMQQRrIgU2AgwgBSAEKAIQIghGBEAgBCAJNgIMIAQgCEEEajYCECACIAYgCRD3SCEHIAQoAhAhBSAHDQUDQCAFIAQoAgxGDQcgAiAGIAUQ90gEQCAEQRBqIARBDGoQ+EggBCAEKAIQQQRqIgU2AhAMBwUgBCAEKAIQQQRqIgU2AhAMAQsACwALIAIgBSAEKAIUEPdIRQ0ACyAEQRBqIARBDGoQ+EggB0EBaiEHCyAEIAQoAhBBBGoiBTYCEAJAIAUgBCgCDE8NAANAIAIgBSAEKAIUEPdIBEAgBCAEKAIQQQRqIgU2AhAMAQsDQCAEIAQoAgxBBGsiBTYCDCACIAUgBCgCFBD3SEUNAAsgBCgCECIFIAQoAgxLDQEgBEEQaiAEQQxqEPhIIAQoAhAiBSAEKAIURgRAIAQgBCgCDDYCFAsgB0EBaiEHIAQgBUEEaiIFNgIQDAALAAsCQCAFIAQoAhQiCEYNACACIAggBRD3SEUNACAHQQFqIQcgBEEQaiAEQRRqEPhICwJAIAcNACAGIAQoAhAgAhD/SCEFIAQoAhBBBGogASACEP9IBEAgBQ0FIAQgBCgCECIBNgIYDAcLIAVFDQAgBCgCEEEEaiEADAILIAQoAhAiBSAAayABIAVrSARAIAAgBSACIAMQpkkgBCgCEEEEaiEADAILIAVBBGogASACIAMQpkkgBCAEKAIQIgE2AhgMBgsgBiAGQQRqIAFBBGsgAhCASQwCCyAEIAA2AhwMBAsgBSAEKAIMRg0AA0ACQCACIAYgBRD3SEUNAANAIAQgBCgCDEEEayIFNgIMIAIgBiAFEPdIDQALIAQoAhAiACAEKAIMSQRAIARBEGogBEEMahD4SAwBCyAEIAA2AhwgACEGDAMLIAQgBCgCEEEEaiIFNgIQDAALAAsLCwsgBEEgaiQBCxkAIAAgASACIAEgAGtBAnUQ6EhBAXQQqEkL/gcBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUEEayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUECdSIHDgYHBwAEAQIDCyAEIAFBBGsiBTYCGCACIAUgBhCpSUUNBiAEQRxqIARBGGoQ+EgMBgsgBiAGQQRqIAZBCGogAUEEayACEKpJDAULIAYgBkEEaiAGQQhqIAZBDGogAUEEayACEKtJDAQLIAVB+wBMBEAgBiABIAIQrEkMBAsgA0UEQCAGIAEgASACEK1JGgwECyAEIAYgB0EBdEF8cWoiCDYCFAJ/IAVBnR9PBEAgBiAGIAdBfHEiBWogCCAFIAhqIAkgAhCuSQwBCyAGIAggCSACEK9JCyEHIANBAWshAyAEIAY2AhAgBCAJNgIMIAIgBiAEKAIUEKlJRQRAA0AgBCAEKAIMQQRrIgU2AgwgBSAEKAIQIghGBEAgBCAJNgIMIAQgCEEEajYCECACIAYgCRCpSSEHIAQoAhAhBSAHDQUDQCAFIAQoAgxGDQcgAiAGIAUQqUkEQCAEQRBqIARBDGoQ+EggBCAEKAIQQQRqIgU2AhAMBwUgBCAEKAIQQQRqIgU2AhAMAQsACwALIAIgBSAEKAIUEKlJRQ0ACyAEQRBqIARBDGoQ+EggB0EBaiEHCyAEIAQoAhBBBGoiBTYCEAJAIAUgBCgCDE8NAANAIAIgBSAEKAIUEKlJBEAgBCAEKAIQQQRqIgU2AhAMAQsDQCAEIAQoAgxBBGsiBTYCDCACIAUgBCgCFBCpSUUNAAsgBCgCECIFIAQoAgxLDQEgBEEQaiAEQQxqEPhIIAQoAhAiBSAEKAIURgRAIAQgBCgCDDYCFAsgB0EBaiEHIAQgBUEEaiIFNgIQDAALAAsCQCAFIAQoAhQiCEYNACACIAggBRCpSUUNACAHQQFqIQcgBEEQaiAEQRRqEPhICwJAIAcNACAGIAQoAhAgAhCwSSEFIAQoAhBBBGogASACELBJBEAgBQ0FIAQgBCgCECIBNgIYDAcLIAVFDQAgBCgCEEEEaiEADAILIAQoAhAiBSAAayABIAVrSARAIAAgBSACIAMQqEkgBCgCEEEEaiEADAILIAVBBGogASACIAMQqEkgBCAEKAIQIgE2AhgMBgsgBiAGQQRqIAFBBGsgAhCxSQwCCyAEIAA2AhwMBAsgBSAEKAIMRg0AA0ACQCACIAYgBRCpSUUNAANAIAQgBCgCDEEEayIFNgIMIAIgBiAFEKlJDQALIAQoAhAiACAEKAIMSQRAIARBEGogBEEMahD4SAwBCyAEIAA2AhwgACEGDAMLIAQgBCgCEEEEaiIFNgIQDAALAAsLCwsgBEEgaiQBCw0AIAEoAgAgAigCAEkLLwAgACACIAQQ/kkgASADIAQQ/kkgACABIAQQ/kkgAiADIAQQ/kkgASACIAQQ/kkLPgAgACABIAUQ/kkgAyAEIAUQ/kkgAiADIAQgBRD/SSABIAQgBRD+SSAAIAIgAyAFEP9JIAEgAiADIAUQ/0kLxwEBA38jAUEQayIDJAEgACAAQQRqIABBCGoiBSACELFJIABBDGohBANAAkAgAyAENgIMIAEgBEYNACACIAQgBRCpSQRAIAMgA0EMaigCACgCADYCCCADIAU2AgQgAygCDCEEA0ACQCAEIANBBGooAgAoAgA2AgAgACADKAIEIgRGBEAgACEEDAELIAMgBEEEayIFNgIEIAIgA0EIaiAFEKlJDQELCyAEIAMoAgg2AgALIAMoAgwiBUEEaiEEDAELCyADQRBqJAELGAAgACABRgRAIAIPCyAAIAEgAiADEMBKCxEAIAAgASACIAMgBCAFEMFKC8kBAQJ/IwFBEGsiBCQBIAQgATYCCCAEIAA2AgwgBCACNgIEIAMgASAAEKlJIQUgAyACIAEQqUkhAQJ/AkAgBUUEQEEAIAFFDQIaIARBCGogBEEEahD4SEEBIAMgBCgCCCAAEKlJRQ0CGiAEQQxqIARBCGoQ+EgMAQsgAQRAIARBDGogBEEEahD4SEEBDAILIARBDGogBEEIahD4SEEBIAMgAiAEKAIIEKlJRQ0BGiAEQQhqIARBBGoQ+EgLQQILIQEgBEEQaiQBIAELhgMBBX8jAUEgayIDJAEgAyAANgIcQQEhBiACIQQCQAJAAkACQAJAAkAgASAAa0ECdQ4GBQUAAQIDBAsgAyABQQRrIgI2AhggBCACIAAQqUlFDQQgA0EcaiADQRhqEPhIDAQLIAAgAEEEaiABQQRrIAQQsUkMAwsgACAAQQRqIABBCGogAUEEayAEEKpJDAILIAAgAEEEaiAAQQhqIABBDGogAUEEayAEEKtJDAELIAAgAEEEaiAAQQhqIgUgBBCxSSAAQQxqIQIDQCADIAI2AhQgASACRg0BAkAgBCACIAUQqUlFDQAgAyADQRRqKAIAKAIANgIQIAMgBTYCDCADKAIUIQIDQAJAIAIgA0EMaigCACgCADYCACAAIAMoAgwiAkYEQCAAIQIMAQsgAyACQQRrIgU2AgwgBCADQRBqIAUQqUkNAQsLIAIgAygCEDYCACAHQQFqIgdBCEcNACADKAIUQQRqIAFGIQYMAgsgAygCFCIFQQRqIQIMAAsACyADQSBqJAEgBgsWACABIAIgAxD+SSAAIAEgAiADEP9JCxkAIAAgASACIAEgAGtBAnUQ6EhBAXQQs0kL/gcBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUEEayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUECdSIHDgYHBwAEAQIDCyAEIAFBBGsiBTYCGCACIAUgBhD3SEUNBiAEQRxqIARBGGoQ+EgMBgsgBiAGQQRqIAZBCGogAUEEayACEPlIDAULIAYgBkEEaiAGQQhqIAZBDGogAUEEayACEPpIDAQLIAVB+wBMBEAgBiABIAIQ+0gMBAsgA0UEQCAGIAEgASACEPxIGgwECyAEIAYgB0EBdEF8cWoiCDYCFAJ/IAVBnR9PBEAgBiAGIAdBfHEiBWogCCAFIAhqIAkgAhD9SAwBCyAGIAggCSACEP5ICyEHIANBAWshAyAEIAY2AhAgBCAJNgIMIAIgBiAEKAIUEPdIRQRAA0AgBCAEKAIMQQRrIgU2AgwgBSAEKAIQIghGBEAgBCAJNgIMIAQgCEEEajYCECACIAYgCRD3SCEHIAQoAhAhBSAHDQUDQCAFIAQoAgxGDQcgAiAGIAUQ90gEQCAEQRBqIARBDGoQ+EggBCAEKAIQQQRqIgU2AhAMBwUgBCAEKAIQQQRqIgU2AhAMAQsACwALIAIgBSAEKAIUEPdIRQ0ACyAEQRBqIARBDGoQ+EggB0EBaiEHCyAEIAQoAhBBBGoiBTYCEAJAIAUgBCgCDE8NAANAIAIgBSAEKAIUEPdIBEAgBCAEKAIQQQRqIgU2AhAMAQsDQCAEIAQoAgxBBGsiBTYCDCACIAUgBCgCFBD3SEUNAAsgBCgCECIFIAQoAgxLDQEgBEEQaiAEQQxqEPhIIAQoAhAiBSAEKAIURgRAIAQgBCgCDDYCFAsgB0EBaiEHIAQgBUEEaiIFNgIQDAALAAsCQCAFIAQoAhQiCEYNACACIAggBRD3SEUNACAHQQFqIQcgBEEQaiAEQRRqEPhICwJAIAcNACAGIAQoAhAgAhD/SCEFIAQoAhBBBGogASACEP9IBEAgBQ0FIAQgBCgCECIBNgIYDAcLIAVFDQAgBCgCEEEEaiEADAILIAQoAhAiBSAAayABIAVrSARAIAAgBSACIAMQs0kgBCgCEEEEaiEADAILIAVBBGogASACIAMQs0kgBCAEKAIQIgE2AhgMBgsgBiAGQQRqIAFBBGsgAhCASQwCCyAEIAA2AhwMBAsgBSAEKAIMRg0AA0ACQCACIAYgBRD3SEUNAANAIAQgBCgCDEEEayIFNgIMIAIgBiAFEPdIDQALIAQoAhAiACAEKAIMSQRAIARBEGogBEEMahD4SAwBCyAEIAA2AhwgACEGDAMLIAQgBCgCEEEEaiIFNgIQDAALAAsLCwsgBEEgaiQBCxkAIAAgASACIAEgAGtBAnUQ6EhBAXQQtUkL/gcBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUEEayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUECdSIHDgYHBwAEAQIDCyAEIAFBBGsiBTYCGCACIAUgBhCpSUUNBiAEQRxqIARBGGoQ+EgMBgsgBiAGQQRqIAZBCGogAUEEayACEKpJDAULIAYgBkEEaiAGQQhqIAZBDGogAUEEayACEKtJDAQLIAVB+wBMBEAgBiABIAIQrEkMBAsgA0UEQCAGIAEgASACEK1JGgwECyAEIAYgB0EBdEF8cWoiCDYCFAJ/IAVBnR9PBEAgBiAGIAdBfHEiBWogCCAFIAhqIAkgAhCuSQwBCyAGIAggCSACEK9JCyEHIANBAWshAyAEIAY2AhAgBCAJNgIMIAIgBiAEKAIUEKlJRQRAA0AgBCAEKAIMQQRrIgU2AgwgBSAEKAIQIghGBEAgBCAJNgIMIAQgCEEEajYCECACIAYgCRCpSSEHIAQoAhAhBSAHDQUDQCAFIAQoAgxGDQcgAiAGIAUQqUkEQCAEQRBqIARBDGoQ+EggBCAEKAIQQQRqIgU2AhAMBwUgBCAEKAIQQQRqIgU2AhAMAQsACwALIAIgBSAEKAIUEKlJRQ0ACyAEQRBqIARBDGoQ+EggB0EBaiEHCyAEIAQoAhBBBGoiBTYCEAJAIAUgBCgCDE8NAANAIAIgBSAEKAIUEKlJBEAgBCAEKAIQQQRqIgU2AhAMAQsDQCAEIAQoAgxBBGsiBTYCDCACIAUgBCgCFBCpSUUNAAsgBCgCECIFIAQoAgxLDQEgBEEQaiAEQQxqEPhIIAQoAhAiBSAEKAIURgRAIAQgBCgCDDYCFAsgB0EBaiEHIAQgBUEEaiIFNgIQDAALAAsCQCAFIAQoAhQiCEYNACACIAggBRCpSUUNACAHQQFqIQcgBEEQaiAEQRRqEPhICwJAIAcNACAGIAQoAhAgAhCwSSEFIAQoAhBBBGogASACELBJBEAgBQ0FIAQgBCgCECIBNgIYDAcLIAVFDQAgBCgCEEEEaiEADAILIAQoAhAiBSAAayABIAVrSARAIAAgBSACIAMQtUkgBCgCEEEEaiEADAILIAVBBGogASACIAMQtUkgBCAEKAIQIgE2AhgMBgsgBiAGQQRqIAFBBGsgAhCxSQwCCyAEIAA2AhwMBAsgBSAEKAIMRg0AA0ACQCACIAYgBRCpSUUNAANAIAQgBCgCDEEEayIFNgIMIAIgBiAFEKlJDQALIAQoAhAiACAEKAIMSQRAIARBEGogBEEMahD4SAwBCyAEIAA2AhwgACEGDAMLIAQgBCgCEEEEaiIFNgIQDAALAAsLCwsgBEEgaiQBCxkAIAAgASACIAEgAGtBA3UQ6EhBAXQQt0kLgQgBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUEIayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUEDdSIHDgYHBwAEAQIDCyAEIAFBCGsiBTYCGCACIAUgBhC4SUUNBiAEQRxqIARBGGoQuUkMBgsgBiAGQQhqIAZBEGogAUEIayACELpJDAULIAYgBkEIaiAGQRBqIAZBGGogAUEIayACELtJDAQLIAVB9wFMBEAgBiABIAIQvEkMBAsgA0UEQCAGIAEgASACEL1JGgwECyAEIAYgB0ECdEF4cWoiCDYCFAJ/IAVBuT5PBEAgBiAGIAdBAXRBeHEiBWogCCAFIAhqIAkgAhC+SQwBCyAGIAggCSACEL9JCyEHIANBAWshAyAEIAY2AhAgBCAJNgIMIAIgBiAEKAIUELhJRQRAA0AgBCAEKAIMQQhrIgU2AgwgBSAEKAIQIghGBEAgBCAJNgIMIAQgCEEIajYCECACIAYgCRC4SSEHIAQoAhAhBSAHDQUDQCAFIAQoAgxGDQcgAiAGIAUQuEkEQCAEQRBqIARBDGoQuUkgBCAEKAIQQQhqIgU2AhAMBwUgBCAEKAIQQQhqIgU2AhAMAQsACwALIAIgBSAEKAIUELhJRQ0ACyAEQRBqIARBDGoQuUkgB0EBaiEHCyAEIAQoAhBBCGoiBTYCEAJAIAUgBCgCDE8NAANAIAIgBSAEKAIUELhJBEAgBCAEKAIQQQhqIgU2AhAMAQsDQCAEIAQoAgxBCGsiBTYCDCACIAUgBCgCFBC4SUUNAAsgBCgCECIFIAQoAgxLDQEgBEEQaiAEQQxqELlJIAQoAhAiBSAEKAIURgRAIAQgBCgCDDYCFAsgB0EBaiEHIAQgBUEIaiIFNgIQDAALAAsCQCAFIAQoAhQiCEYNACACIAggBRC4SUUNACAHQQFqIQcgBEEQaiAEQRRqELlJCwJAIAcNACAGIAQoAhAgAhDASSEFIAQoAhBBCGogASACEMBJBEAgBQ0FIAQgBCgCECIBNgIYDAcLIAVFDQAgBCgCEEEIaiEADAILIAQoAhAiBSAAayABIAVrSARAIAAgBSACIAMQt0kgBCgCEEEIaiEADAILIAVBCGogASACIAMQt0kgBCAEKAIQIgE2AhgMBgsgBiAGQQhqIAFBCGsgAhDBSQwCCyAEIAA2AhwMBAsgBSAEKAIMRg0AA0ACQCACIAYgBRC4SUUNAANAIAQgBCgCDEEIayIFNgIMIAIgBiAFELhJDQALIAQoAhAiACAEKAIMSQRAIARBEGogBEEMahC5SQwBCyAEIAA2AhwgACEGDAMLIAQgBCgCEEEIaiIFNgIQDAALAAsLCwsgBEEgaiQBCw0AIAEpAwAgAikDAFMLDwAgACgCACABKAIAEIBKCxAAIAAgASACIAMgBBCBShoLEgAgACABIAIgAyAEIAUQvkkaC8cBAQN/IwFBIGsiAyQBIAAgAEEIaiAAQRBqIgUgAhDBSSAAQRhqIQQDQAJAIAMgBDYCHCABIARGDQAgAiAEIAUQuEkEQCADIANBHGooAgApAwA3AxAgAyAFNgIMIAMoAhwhBANAAkAgBCADQQxqKAIAKQMANwMAIAAgAygCDCIERgRAIAAhBAwBCyADIARBCGsiBTYCDCACIANBEGogBRC4SQ0BCwsgBCADKQMQNwMACyADKAIcIgVBCGohBAwBCwsgA0EgaiQBCxgAIAAgAUYEQCACDwsgACABIAIgAxDJSgsRACAAIAEgAiADIAQgBRDKSgvJAQECfyMBQRBrIgQkASAEIAE2AgggBCAANgIMIAQgAjYCBCADIAEgABC4SSEFIAMgAiABELhJIQECfwJAIAVFBEBBACABRQ0CGiAEQQhqIARBBGoQuUlBASADIAQoAgggABC4SUUNAhogBEEMaiAEQQhqELlJDAELIAEEQCAEQQxqIARBBGoQuUlBAQwCCyAEQQxqIARBCGoQuUlBASADIAIgBCgCCBC4SUUNARogBEEIaiAEQQRqELlJC0ECCyEBIARBEGokASABC4YDAQV/IwFBIGsiAyQBIAMgADYCHEEBIQYgAiEEAkACQAJAAkACQAJAIAEgAGtBA3UOBgUFAAECAwQLIAMgAUEIayICNgIYIAQgAiAAELhJRQ0EIANBHGogA0EYahC5SQwECyAAIABBCGogAUEIayAEEMFJDAMLIAAgAEEIaiAAQRBqIAFBCGsgBBC6SQwCCyAAIABBCGogAEEQaiAAQRhqIAFBCGsgBBC7SQwBCyAAIABBCGogAEEQaiIFIAQQwUkgAEEYaiECA0AgAyACNgIUIAEgAkYNAQJAIAQgAiAFELhJRQ0AIAMgA0EUaigCACkDADcDCCADIAU2AgQgAygCFCECA0ACQCACIANBBGooAgApAwA3AwAgACADKAIEIgJGBEAgACECDAELIAMgAkEIayIFNgIEIAQgA0EIaiAFELhJDQELCyACIAMpAwg3AwAgB0EBaiIHQQhHDQAgAygCFEEIaiABRiEGDAILIAMoAhQiBUEIaiECDAALAAsgA0EgaiQBIAYLDgAgACABIAIgAxC/SRoLGQAgACABIAIgASAAa0EDdRDoSEEBdBDDSQuBCAEGfyMBQSBrIgQkASAEIAA2AhwDQCAAIQYDQCABQQhrIQkDQAJAAkACQAJAAkACQAJAAkAgASAGayIFQQN1IgcOBgcHAAQBAgMLIAQgAUEIayIFNgIYIAIgBSAGEMRJRQ0GIARBHGogBEEYahC5SQwGCyAGIAZBCGogBkEQaiABQQhrIAIQxUkMBQsgBiAGQQhqIAZBEGogBkEYaiABQQhrIAIQxkkMBAsgBUH3AUwEQCAGIAEgAhDHSQwECyADRQRAIAYgASABIAIQyEkaDAQLIAQgBiAHQQJ0QXhxaiIINgIUAn8gBUG5Pk8EQCAGIAYgB0EBdEF4cSIFaiAIIAUgCGogCSACEMlJDAELIAYgCCAJIAIQykkLIQcgA0EBayEDIAQgBjYCECAEIAk2AgwgAiAGIAQoAhQQxElFBEADQCAEIAQoAgxBCGsiBTYCDCAFIAQoAhAiCEYEQCAEIAk2AgwgBCAIQQhqNgIQIAIgBiAJEMRJIQcgBCgCECEFIAcNBQNAIAUgBCgCDEYNByACIAYgBRDESQRAIARBEGogBEEMahC5SSAEIAQoAhBBCGoiBTYCEAwHBSAEIAQoAhBBCGoiBTYCEAwBCwALAAsgAiAFIAQoAhQQxElFDQALIARBEGogBEEMahC5SSAHQQFqIQcLIAQgBCgCEEEIaiIFNgIQAkAgBSAEKAIMTw0AA0AgAiAFIAQoAhQQxEkEQCAEIAQoAhBBCGoiBTYCEAwBCwNAIAQgBCgCDEEIayIFNgIMIAIgBSAEKAIUEMRJRQ0ACyAEKAIQIgUgBCgCDEsNASAEQRBqIARBDGoQuUkgBCgCECIFIAQoAhRGBEAgBCAEKAIMNgIUCyAHQQFqIQcgBCAFQQhqIgU2AhAMAAsACwJAIAUgBCgCFCIIRg0AIAIgCCAFEMRJRQ0AIAdBAWohByAEQRBqIARBFGoQuUkLAkAgBw0AIAYgBCgCECACEMtJIQUgBCgCEEEIaiABIAIQy0kEQCAFDQUgBCAEKAIQIgE2AhgMBwsgBUUNACAEKAIQQQhqIQAMAgsgBCgCECIFIABrIAEgBWtIBEAgACAFIAIgAxDDSSAEKAIQQQhqIQAMAgsgBUEIaiABIAIgAxDDSSAEIAQoAhAiATYCGAwGCyAGIAZBCGogAUEIayACEMxJDAILIAQgADYCHAwECyAFIAQoAgxGDQADQAJAIAIgBiAFEMRJRQ0AA0AgBCAEKAIMQQhrIgU2AgwgAiAGIAUQxEkNAAsgBCgCECIAIAQoAgxJBEAgBEEQaiAEQQxqELlJDAELIAQgADYCHCAAIQYMAwsgBCAEKAIQQQhqIgU2AhAMAAsACwsLCyAEQSBqJAELDQAgASkDACACKQMAVAsQACAAIAEgAiADIAQQgkoaCxIAIAAgASACIAMgBCAFEMlJGgvHAQEDfyMBQSBrIgMkASAAIABBCGogAEEQaiIFIAIQzEkgAEEYaiEEA0ACQCADIAQ2AhwgASAERg0AIAIgBCAFEMRJBEAgAyADQRxqKAIAKQMANwMQIAMgBTYCDCADKAIcIQQDQAJAIAQgA0EMaigCACkDADcDACAAIAMoAgwiBEYEQCAAIQQMAQsgAyAEQQhrIgU2AgwgAiADQRBqIAUQxEkNAQsLIAQgAykDEDcDAAsgAygCHCIFQQhqIQQMAQsLIANBIGokAQsYACAAIAFGBEAgAg8LIAAgASACIAMQ0UoLEQAgACABIAIgAyAEIAUQ0koLyQEBAn8jAUEQayIEJAEgBCABNgIIIAQgADYCDCAEIAI2AgQgAyABIAAQxEkhBSADIAIgARDESSEBAn8CQCAFRQRAQQAgAUUNAhogBEEIaiAEQQRqELlJQQEgAyAEKAIIIAAQxElFDQIaIARBDGogBEEIahC5SQwBCyABBEAgBEEMaiAEQQRqELlJQQEMAgsgBEEMaiAEQQhqELlJQQEgAyACIAQoAggQxElFDQEaIARBCGogBEEEahC5SQtBAgshASAEQRBqJAEgAQuGAwEFfyMBQSBrIgMkASADIAA2AhxBASEGIAIhBAJAAkACQAJAAkACQCABIABrQQN1DgYFBQABAgMECyADIAFBCGsiAjYCGCAEIAIgABDESUUNBCADQRxqIANBGGoQuUkMBAsgACAAQQhqIAFBCGsgBBDMSQwDCyAAIABBCGogAEEQaiABQQhrIAQQxUkMAgsgACAAQQhqIABBEGogAEEYaiABQQhrIAQQxkkMAQsgACAAQQhqIABBEGoiBSAEEMxJIABBGGohAgNAIAMgAjYCFCABIAJGDQECQCAEIAIgBRDESUUNACADIANBFGooAgApAwA3AwggAyAFNgIEIAMoAhQhAgNAAkAgAiADQQRqKAIAKQMANwMAIAAgAygCBCICRgRAIAAhAgwBCyADIAJBCGsiBTYCBCAEIANBCGogBRDESQ0BCwsgAiADKQMINwMAIAdBAWoiB0EIRw0AIAMoAhRBCGogAUYhBgwCCyADKAIUIgVBCGohAgwACwALIANBIGokASAGCw4AIAAgASACIAMQykkaCxkAIAAgASACIAEgAGtBAnUQ6EhBAXQQzkkL/gcBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUEEayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUECdSIHDgYHBwAEAQIDCyAEIAFBBGsiBTYCGCACIAUgBhDPSUUNBiAEQRxqIARBGGoQ0EkMBgsgBiAGQQRqIAZBCGogAUEEayACENFJDAULIAYgBkEEaiAGQQhqIAZBDGogAUEEayACENJJDAQLIAVB+wBMBEAgBiABIAIQ00kMBAsgA0UEQCAGIAEgASACENRJGgwECyAEIAYgB0EBdEF8cWoiCDYCFAJ/IAVBnR9PBEAgBiAGIAdBfHEiBWogCCAFIAhqIAkgAhDVSQwBCyAGIAggCSACENZJCyEHIANBAWshAyAEIAY2AhAgBCAJNgIMIAIgBiAEKAIUEM9JRQRAA0AgBCAEKAIMQQRrIgU2AgwgBSAEKAIQIghGBEAgBCAJNgIMIAQgCEEEajYCECACIAYgCRDPSSEHIAQoAhAhBSAHDQUDQCAFIAQoAgxGDQcgAiAGIAUQz0kEQCAEQRBqIARBDGoQ0EkgBCAEKAIQQQRqIgU2AhAMBwUgBCAEKAIQQQRqIgU2AhAMAQsACwALIAIgBSAEKAIUEM9JRQ0ACyAEQRBqIARBDGoQ0EkgB0EBaiEHCyAEIAQoAhBBBGoiBTYCEAJAIAUgBCgCDE8NAANAIAIgBSAEKAIUEM9JBEAgBCAEKAIQQQRqIgU2AhAMAQsDQCAEIAQoAgxBBGsiBTYCDCACIAUgBCgCFBDPSUUNAAsgBCgCECIFIAQoAgxLDQEgBEEQaiAEQQxqENBJIAQoAhAiBSAEKAIURgRAIAQgBCgCDDYCFAsgB0EBaiEHIAQgBUEEaiIFNgIQDAALAAsCQCAFIAQoAhQiCEYNACACIAggBRDPSUUNACAHQQFqIQcgBEEQaiAEQRRqENBJCwJAIAcNACAGIAQoAhAgAhDXSSEFIAQoAhBBBGogASACENdJBEAgBQ0FIAQgBCgCECIBNgIYDAcLIAVFDQAgBCgCEEEEaiEADAILIAQoAhAiBSAAayABIAVrSARAIAAgBSACIAMQzkkgBCgCEEEEaiEADAILIAVBBGogASACIAMQzkkgBCAEKAIQIgE2AhgMBgsgBiAGQQRqIAFBBGsgAhDYSQwCCyAEIAA2AhwMBAsgBSAEKAIMRg0AA0ACQCACIAYgBRDPSUUNAANAIAQgBCgCDEEEayIFNgIMIAIgBiAFEM9JDQALIAQoAhAiACAEKAIMSQRAIARBEGogBEEMahDQSQwBCyAEIAA2AhwgACEGDAMLIAQgBCgCEEEEaiIFNgIQDAALAAsLCwsgBEEgaiQBCw0AIAEqAgAgAioCAF0LDwAgACgCACABKAIAEINKCy8AIAAgAiAEEIRKIAEgAyAEEIRKIAAgASAEEIRKIAIgAyAEEIRKIAEgAiAEEIRKCz4AIAAgASAFEIRKIAMgBCAFEIRKIAIgAyAEIAUQhUogASAEIAUQhEogACACIAMgBRCFSiABIAIgAyAFEIVKC8cBAQN/IwFBEGsiAyQBIAAgAEEEaiAAQQhqIgUgAhDYSSAAQQxqIQQDQAJAIAMgBDYCDCABIARGDQAgAiAEIAUQz0kEQCADIANBDGooAgAqAgA4AgggAyAFNgIEIAMoAgwhBANAAkAgBCADQQRqKAIAKgIAOAIAIAAgAygCBCIERgRAIAAhBAwBCyADIARBBGsiBTYCBCACIANBCGogBRDPSQ0BCwsgBCADKgIIOAIACyADKAIMIgVBBGohBAwBCwsgA0EQaiQBCxgAIAAgAUYEQCACDwsgACABIAIgAxDZSgsRACAAIAEgAiADIAQgBRDaSgvJAQECfyMBQRBrIgQkASAEIAE2AgggBCAANgIMIAQgAjYCBCADIAEgABDPSSEFIAMgAiABEM9JIQECfwJAIAVFBEBBACABRQ0CGiAEQQhqIARBBGoQ0ElBASADIAQoAgggABDPSUUNAhogBEEMaiAEQQhqENBJDAELIAEEQCAEQQxqIARBBGoQ0ElBAQwCCyAEQQxqIARBCGoQ0ElBASADIAIgBCgCCBDPSUUNARogBEEIaiAEQQRqENBJC0ECCyEBIARBEGokASABC4YDAQV/IwFBIGsiAyQBIAMgADYCHEEBIQYgAiEEAkACQAJAAkACQAJAIAEgAGtBAnUOBgUFAAECAwQLIAMgAUEEayICNgIYIAQgAiAAEM9JRQ0EIANBHGogA0EYahDQSQwECyAAIABBBGogAUEEayAEENhJDAMLIAAgAEEEaiAAQQhqIAFBBGsgBBDRSQwCCyAAIABBBGogAEEIaiAAQQxqIAFBBGsgBBDSSQwBCyAAIABBBGogAEEIaiIFIAQQ2EkgAEEMaiECA0AgAyACNgIUIAEgAkYNAQJAIAQgAiAFEM9JRQ0AIAMgA0EUaigCACoCADgCECADIAU2AgwgAygCFCECA0ACQCACIANBDGooAgAqAgA4AgAgACADKAIMIgJGBEAgACECDAELIAMgAkEEayIFNgIMIAQgA0EQaiAFEM9JDQELCyACIAMqAhA4AgAgB0EBaiIHQQhHDQAgAygCFEEEaiABRiEGDAILIAMoAhQiBUEEaiECDAALAAsgA0EgaiQBIAYLFgAgASACIAMQhEogACABIAIgAxCFSgsZACAAIAEgAiABIABrQQN1EOhIQQF0ENpJC4EIAQZ/IwFBIGsiBCQBIAQgADYCHANAIAAhBgNAIAFBCGshCQNAAkACQAJAAkACQAJAAkACQCABIAZrIgVBA3UiBw4GBwcABAECAwsgBCABQQhrIgU2AhggAiAFIAYQ20lFDQYgBEEcaiAEQRhqENxJDAYLIAYgBkEIaiAGQRBqIAFBCGsgAhDdSQwFCyAGIAZBCGogBkEQaiAGQRhqIAFBCGsgAhDeSQwECyAFQfcBTARAIAYgASACEN9JDAQLIANFBEAgBiABIAEgAhDgSRoMBAsgBCAGIAdBAnRBeHFqIgg2AhQCfyAFQbk+TwRAIAYgBiAHQQF0QXhxIgVqIAggBSAIaiAJIAIQ4UkMAQsgBiAIIAkgAhDiSQshByADQQFrIQMgBCAGNgIQIAQgCTYCDCACIAYgBCgCFBDbSUUEQANAIAQgBCgCDEEIayIFNgIMIAUgBCgCECIIRgRAIAQgCTYCDCAEIAhBCGo2AhAgAiAGIAkQ20khByAEKAIQIQUgBw0FA0AgBSAEKAIMRg0HIAIgBiAFENtJBEAgBEEQaiAEQQxqENxJIAQgBCgCEEEIaiIFNgIQDAcFIAQgBCgCEEEIaiIFNgIQDAELAAsACyACIAUgBCgCFBDbSUUNAAsgBEEQaiAEQQxqENxJIAdBAWohBwsgBCAEKAIQQQhqIgU2AhACQCAFIAQoAgxPDQADQCACIAUgBCgCFBDbSQRAIAQgBCgCEEEIaiIFNgIQDAELA0AgBCAEKAIMQQhrIgU2AgwgAiAFIAQoAhQQ20lFDQALIAQoAhAiBSAEKAIMSw0BIARBEGogBEEMahDcSSAEKAIQIgUgBCgCFEYEQCAEIAQoAgw2AhQLIAdBAWohByAEIAVBCGoiBTYCEAwACwALAkAgBSAEKAIUIghGDQAgAiAIIAUQ20lFDQAgB0EBaiEHIARBEGogBEEUahDcSQsCQCAHDQAgBiAEKAIQIAIQ40khBSAEKAIQQQhqIAEgAhDjSQRAIAUNBSAEIAQoAhAiATYCGAwHCyAFRQ0AIAQoAhBBCGohAAwCCyAEKAIQIgUgAGsgASAFa0gEQCAAIAUgAiADENpJIAQoAhBBCGohAAwCCyAFQQhqIAEgAiADENpJIAQgBCgCECIBNgIYDAYLIAYgBkEIaiABQQhrIAIQ5EkMAgsgBCAANgIcDAQLIAUgBCgCDEYNAANAAkAgAiAGIAUQ20lFDQADQCAEIAQoAgxBCGsiBTYCDCACIAYgBRDbSQ0ACyAEKAIQIgAgBCgCDEkEQCAEQRBqIARBDGoQ3EkMAQsgBCAANgIcIAAhBgwDCyAEIAQoAhBBCGoiBTYCEAwACwALCwsLIARBIGokAQsNACABKwMAIAIrAwBjCw8AIAAoAgAgASgCABCGSgsQACAAIAEgAiADIAQQh0oaCxIAIAAgASACIAMgBCAFEOFJGgvHAQEDfyMBQSBrIgMkASAAIABBCGogAEEQaiIFIAIQ5EkgAEEYaiEEA0ACQCADIAQ2AhwgASAERg0AIAIgBCAFENtJBEAgAyADQRxqKAIAKwMAOQMQIAMgBTYCDCADKAIcIQQDQAJAIAQgA0EMaigCACsDADkDACAAIAMoAgwiBEYEQCAAIQQMAQsgAyAEQQhrIgU2AgwgAiADQRBqIAUQ20kNAQsLIAQgAysDEDkDAAsgAygCHCIFQQhqIQQMAQsLIANBIGokAQsYACAAIAFGBEAgAg8LIAAgASACIAMQ4koLEQAgACABIAIgAyAEIAUQ40oLyQEBAn8jAUEQayIEJAEgBCABNgIIIAQgADYCDCAEIAI2AgQgAyABIAAQ20khBSADIAIgARDbSSEBAn8CQCAFRQRAQQAgAUUNAhogBEEIaiAEQQRqENxJQQEgAyAEKAIIIAAQ20lFDQIaIARBDGogBEEIahDcSQwBCyABBEAgBEEMaiAEQQRqENxJQQEMAgsgBEEMaiAEQQhqENxJQQEgAyACIAQoAggQ20lFDQEaIARBCGogBEEEahDcSQtBAgshASAEQRBqJAEgAQuGAwEFfyMBQSBrIgMkASADIAA2AhxBASEGIAIhBAJAAkACQAJAAkACQCABIABrQQN1DgYFBQABAgMECyADIAFBCGsiAjYCGCAEIAIgABDbSUUNBCADQRxqIANBGGoQ3EkMBAsgACAAQQhqIAFBCGsgBBDkSQwDCyAAIABBCGogAEEQaiABQQhrIAQQ3UkMAgsgACAAQQhqIABBEGogAEEYaiABQQhrIAQQ3kkMAQsgACAAQQhqIABBEGoiBSAEEORJIABBGGohAgNAIAMgAjYCFCABIAJGDQECQCAEIAIgBRDbSUUNACADIANBFGooAgArAwA5AwggAyAFNgIEIAMoAhQhAgNAAkAgAiADQQRqKAIAKwMAOQMAIAAgAygCBCICRgRAIAAhAgwBCyADIAJBCGsiBTYCBCAEIANBCGogBRDbSQ0BCwsgAiADKwMIOQMAIAdBAWoiB0EIRw0AIAMoAhRBCGogAUYhBgwCCyADKAIUIgVBCGohAgwACwALIANBIGokASAGCw4AIAAgASACIAMQ4kkaCxkAIAAgASACIAEgAGtBBHUQ6EhBAXQQ5kkLgggBBn8jAUEgayIEJAEgBCAANgIcA0AgACEGA0AgAUEQayEJA0ACQAJAAkACQAJAAkACQAJAIAEgBmsiBUEEdSIHDgYHBwAEAQIDCyAEIAFBEGsiBTYCGCACIAUgBhDnSUUNBiAEQRxqIARBGGoQ6EkMBgsgBiAGQRBqIAZBIGogAUEQayACEOlJDAULIAYgBkEQaiAGQSBqIAZBMGogAUEQayACEOpJDAQLIAVB7wNMBEAgBiABIAIQ60kMBAsgA0UEQCAGIAEgASACEOxJGgwECyAEIAYgB0EDdEFwcWoiCDYCFAJ/IAVB8fwATwRAIAYgBiAHQQJ0QXBxIgVqIAggBSAIaiAJIAIQ7UkMAQsgBiAIIAkgAhDuSQshByADQQFrIQMgBCAGNgIQIAQgCTYCDCACIAYgBCgCFBDnSUUEQANAIAQgBCgCDEEQayIFNgIMIAUgBCgCECIIRgRAIAQgCTYCDCAEIAhBEGo2AhAgAiAGIAkQ50khByAEKAIQIQUgBw0FA0AgBSAEKAIMRg0HIAIgBiAFEOdJBEAgBEEQaiAEQQxqEOhJIAQgBCgCEEEQaiIFNgIQDAcFIAQgBCgCEEEQaiIFNgIQDAELAAsACyACIAUgBCgCFBDnSUUNAAsgBEEQaiAEQQxqEOhJIAdBAWohBwsgBCAEKAIQQRBqIgU2AhACQCAFIAQoAgxPDQADQCACIAUgBCgCFBDnSQRAIAQgBCgCEEEQaiIFNgIQDAELA0AgBCAEKAIMQRBrIgU2AgwgAiAFIAQoAhQQ50lFDQALIAQoAhAiBSAEKAIMSw0BIARBEGogBEEMahDoSSAEKAIQIgUgBCgCFEYEQCAEIAQoAgw2AhQLIAdBAWohByAEIAVBEGoiBTYCEAwACwALAkAgBSAEKAIUIghGDQAgAiAIIAUQ50lFDQAgB0EBaiEHIARBEGogBEEUahDoSQsCQCAHDQAgBiAEKAIQIAIQ70khBSAEKAIQQRBqIAEgAhDvSQRAIAUNBSAEIAQoAhAiATYCGAwHCyAFRQ0AIAQoAhBBEGohAAwCCyAEKAIQIgUgAGsgASAFa0gEQCAAIAUgAiADEOZJIAQoAhBBEGohAAwCCyAFQRBqIAEgAiADEOZJIAQgBCgCECIBNgIYDAYLIAYgBkEQaiABQRBrIAIQ8EkMAgsgBCAANgIcDAQLIAUgBCgCDEYNAANAAkAgAiAGIAUQ50lFDQADQCAEIAQoAgxBEGsiBTYCDCACIAYgBRDnSQ0ACyAEKAIQIgAgBCgCDEkEQCAEQRBqIARBDGoQ6EkMAQsgBCAANgIcIAAhBgwDCyAEIAQoAhBBEGoiBTYCEAwACwALCwsLIARBIGokAQscACABKQMAIAEpAwggAikDACACKQMIENNHQQBICw8AIAAoAgAgASgCABCISgsQACAAIAEgAiADIAQQiUoaCxIAIAAgASACIAMgBCAFEO1JGgv3AQIDfwF+IwFBIGsiAyQBIAAgAEEQaiAAQSBqIgUgAhDwSSAAQTBqIQQDQAJAIAMgBDYCHCABIARGDQAgAiAEIAUQ50kEQCADQRxqKAIAIgQpAwAhBiADIAQpAwg3AxAgAyAGNwMIIAMgBTYCBCADKAIcIQQDQAJAIANBBGooAgAiBSkDACEGIAQgBSkDCDcDCCAEIAY3AwAgACADKAIEIgRGBEAgACEEDAELIAMgBEEQayIFNgIEIAIgA0EIaiAFEOdJDQELCyADKQMIIQYgBCADKQMQNwMIIAQgBjcDAAsgAygCHCIFQRBqIQQMAQsLIANBIGokAQsYACAAIAFGBEAgAg8LIAAgASACIAMQ6koLEQAgACABIAIgAyAEIAUQikoLyQEBAn8jAUEQayIEJAEgBCABNgIIIAQgADYCDCAEIAI2AgQgAyABIAAQ50khBSADIAIgARDnSSEBAn8CQCAFRQRAQQAgAUUNAhogBEEIaiAEQQRqEOhJQQEgAyAEKAIIIAAQ50lFDQIaIARBDGogBEEIahDoSQwBCyABBEAgBEEMaiAEQQRqEOhJQQEMAgsgBEEMaiAEQQhqEOhJQQEgAyACIAQoAggQ50lFDQEaIARBCGogBEEEahDoSQtBAgshASAEQRBqJAEgAQu2AwIFfwF+IwFBMGsiAyQBIAMgADYCLEEBIQYgAiEEAkACQAJAAkACQAJAIAEgAGtBBHUOBgUFAAECAwQLIAMgAUEQayICNgIoIAQgAiAAEOdJRQ0EIANBLGogA0EoahDoSQwECyAAIABBEGogAUEQayAEEPBJDAMLIAAgAEEQaiAAQSBqIAFBEGsgBBDpSQwCCyAAIABBEGogAEEgaiAAQTBqIAFBEGsgBBDqSQwBCyAAIABBEGogAEEgaiIFIAQQ8EkgAEEwaiECA0AgAyACNgIkIAEgAkYNAQJAIAQgAiAFEOdJRQ0AIANBJGooAgAiAikDACEIIAMgAikDCDcDGCADIAg3AxAgAyAFNgIMIAMoAiQhAgNAAkAgA0EMaigCACIFKQMAIQggAiAFKQMINwMIIAIgCDcDACAAIAMoAgwiAkYEQCAAIQIMAQsgAyACQRBrIgU2AgwgBCADQRBqIAUQ50kNAQsLIAMpAxAhCCACIAMpAxg3AwggAiAINwMAIAdBAWoiB0EIRw0AIAMoAiRBEGogAUYhBgwCCyADKAIkIgVBEGohAgwACwALIANBMGokASAGCw4AIAAgASACIAMQ7kkaCwkAIAAgARCLSgsvAQF/IAAgASACIAAgARDrSCICGy0AACEDIAEgASAAIAIbLQAAOgAAIAAgAzoAAAtoAQJ/IwFBEGsiBCQBIAQgAiAAIAMgAiAAEOtIIgUbLQAAOgAPIAIgACACIAUbLQAAOgAAIAAgACABIAMgBEEPaiABEOtIIgIbLQAAOgAAIAEgASAEQQ9qIAIbLQAAOgAAIARBEGokAQsJACAAIAEQjEoLLwEBfyAAIAEgAiAAIAEQ90giAhsoAgAhAyABIAEgACACGygCADYCACAAIAM2AgALaAECfyMBQRBrIgQkASAEIAIgACADIAIgABD3SCIFGygCADYCDCACIAAgAiAFGygCADYCACAAIAAgASADIARBDGogARD3SCICGygCADYCACABIAEgBEEMaiACGygCADYCACAEQRBqJAELLwEBfyAAIAEgAiAAIAEQhUkiAhstAAAhAyABIAEgACACGy0AADoAACAAIAM6AAALaAECfyMBQRBrIgQkASAEIAIgACADIAIgABCFSSIFGy0AADoADyACIAAgAiAFGy0AADoAACAAIAAgASADIARBD2ogARCFSSICGy0AADoAACABIAEgBEEPaiACGy0AADoAACAEQRBqJAELCQAgACABEI1KCy8BAX8gACABIAIgACABEJBJIgIbLwEAIQMgASABIAAgAhsvAQA7AQAgACADOwEAC2gBAn8jAUEQayIEJAEgBCACIAAgAyACIAAQkEkiBRsvAQA7AQ4gAiAAIAIgBRsvAQA7AQAgACAAIAEgAyAEQQ5qIAEQkEkiAhsvAQA7AQAgASABIARBDmogAhsvAQA7AQAgBEEQaiQBCy8BAX8gACABIAIgACABEJxJIgIbLwEAIQMgASABIAAgAhsvAQA7AQAgACADOwEAC2gBAn8jAUEQayIEJAEgBCACIAAgAyACIAAQnEkiBRsvAQA7AQ4gAiAAIAIgBRsvAQA7AQAgACAAIAEgAyAEQQ5qIAEQnEkiAhsvAQA7AQAgASABIARBDmogAhsvAQA7AQAgBEEQaiQBCy8BAX8gACABIAIgACABEKlJIgIbKAIAIQMgASABIAAgAhsoAgA2AgAgACADNgIAC2gBAn8jAUEQayIEJAEgBCACIAAgAyACIAAQqUkiBRsoAgA2AgwgAiAAIAIgBRsoAgA2AgAgACAAIAEgAyAEQQxqIAEQqUkiAhsoAgA2AgAgASABIARBDGogAhsoAgA2AgAgBEEQaiQBCwkAIAAgARCOSgurAQECfyMBQRBrIgUkASAFIAE2AgggBSAANgIMIAUgAjYCBCAFIAM2AgAgACABIAIgBBC/SSEGAkAgBCADIAIQuElFDQAgBUEEaiAFELlJIAQgBSgCBCABELhJRQRAIAZBAWohBgwBCyAFQQhqIAVBBGoQuUkgBCAFKAIIIAAQuElFBEAgBkECaiEGDAELIAZBA2ohBiAFQQxqIAVBCGoQuUkLIAVBEGokASAGC6sBAQJ/IwFBEGsiBSQBIAUgATYCCCAFIAA2AgwgBSACNgIEIAUgAzYCACAAIAEgAiAEEMpJIQYCQCAEIAMgAhDESUUNACAFQQRqIAUQuUkgBCAFKAIEIAEQxElFBEAgBkEBaiEGDAELIAVBCGogBUEEahC5SSAEIAUoAgggABDESUUEQCAGQQJqIQYMAQsgBkEDaiEGIAVBDGogBUEIahC5SQsgBUEQaiQBIAYLCQAgACABEI9KCy8BAX0gACABIAIgACABEM9JIgIbKgIAIQMgASABIAAgAhsqAgA4AgAgACADOAIAC2gBAn8jAUEQayIEJAEgBCACIAAgAyACIAAQz0kiBRsqAgA4AgwgAiAAIAIgBRsqAgA4AgAgACAAIAEgAyAEQQxqIAEQz0kiAhsqAgA4AgAgASABIARBDGogAhsqAgA4AgAgBEEQaiQBCwkAIAAgARCQSgurAQECfyMBQRBrIgUkASAFIAE2AgggBSAANgIMIAUgAjYCBCAFIAM2AgAgACABIAIgBBDiSSEGAkAgBCADIAIQ20lFDQAgBUEEaiAFENxJIAQgBSgCBCABENtJRQRAIAZBAWohBgwBCyAFQQhqIAVBBGoQ3EkgBCAFKAIIIAAQ20lFBEAgBkECaiEGDAELIAZBA2ohBiAFQQxqIAVBCGoQ3EkLIAVBEGokASAGCwkAIAAgARCRSgurAQECfyMBQRBrIgUkASAFIAE2AgggBSAANgIMIAUgAjYCBCAFIAM2AgAgACABIAIgBBDuSSEGAkAgBCADIAIQ50lFDQAgBUEEaiAFEOhJIAQgBSgCBCABEOdJRQRAIAZBAWohBgwBCyAFQQhqIAVBBGoQ6EkgBCAFKAIIIAAQ50lFBEAgBkECaiEGDAELIAZBA2ohBiAFQQxqIAVBCGoQ6EkLIAVBEGokASAGC98BAQJ/IwFBIGsiBiQBIAYgATYCGCAGIAA2AhwgBiACNgIUIAYgAzYCECAGIAQ2AgwgACABIAIgAyAFIgcQiUohBQJAIAcgBCADEOdJRQ0AIAZBEGogBkEMahDoSSAHIAYoAhAgAhDnSUUEQCAFQQFqIQUMAQsgBkEUaiAGQRBqEOhJIAcgBigCFCABEOdJRQRAIAVBAmohBQwBCyAGQRhqIAZBFGoQ6EkgByAGKAIYIAAQ50lFBEAgBUEDaiEFDAELIAVBBGohBSAGQRxqIAZBGGoQ6EkLIAZBIGokASAFCxwBAX8gAC0AACECIAAgAS0AADoAACABIAI6AAALHAEBfyAAKAIAIQIgACABKAIANgIAIAEgAjYCAAscAQF/IAAvAQAhAiAAIAEvAQA7AQAgASACOwEACxwBAX4gACkDACECIAAgASkDADcDACABIAI3AwALHAEBfSAAKgIAIQIgACABKgIAOAIAIAEgAjgCAAscAQF8IAArAwAhAiAAIAErAwA5AwAgASACOQMAC0QCAX8DfiABQQhqIgIpAwAhAyAAKQMAIQQgACABKQMANwMAIABBCGoiACkDACEFIAAgAzcDACACIAU3AwAgASAENwMACwQAIAELnAEBA38jAUEQayIEJAEgBCAANgIMIAAgAUYEfyACBSAAIAEgAxCVSiABIABrIQYgASEAA0ACQCAEIAA2AgggBCgCDCEFIAAgAkYNACADIAAgBRDrSARAIARBCGogBEEMahDsSCAEKAIMIgAgAyAGIAAQlkoLIAQoAghBAWohAAwBCwsgBSABIAMQl0ogBCgCCAshACAEQRBqJAEgAAvfAQECfyMBQSBrIgYkASAGIAE2AhggBiAANgIcIAYgAjYCFCAGIAM2AhAgBiAENgIMIAAgASACIAMgBSIHEJtKIQUCQCAHIAQgAxDrSEUNACAGQRBqIAZBDGoQ7EggByAGKAIQIAIQ60hFBEAgBUEBaiEFDAELIAZBFGogBkEQahDsSCAHIAYoAhQgARDrSEUEQCAFQQJqIQUMAQsgBkEYaiAGQRRqEOxIIAcgBigCGCAAEOtIRQRAIAVBA2ohBQwBCyAFQQRqIQUgBkEcaiAGQRhqEOxICyAGQSBqJAEgBQs/AQF/AkAgASAAayIDQQJIDQAgA0ECa0EBdiEBA0AgAUEASA0BIAAgAiADIAAgAWoQlkogAUEBayEBDAALAAsLuQIBBn8jAUEQayIEJAEgBCADNgIMAkAgAkECSA0AIAJBAmtBAXYiCSADIABrIgVIDQAgBCAAIAVBAXQiB0EBciIFaiIGNgIIAkAgB0ECaiIHIAJODQAgASAGIAZBAWoiCBDrSEUNACAEIAg2AgggCCEGIAchBQsgASAGIAMQ60gNACAEIARBDGooAgAtAAA6AAcCQANAIAQoAgwgBEEIaigCAC0AADoAACAEIAQoAggiAzYCDCAFIAlKDQEgBCAAIAVBAXQiBUEBciIGaiIDNgIIAkACQCAFQQJqIgUgAk4NACABIAMgA0EBahDrSCEHIAQoAgghAyAHRQ0AIAQgA0EBaiIDNgIIDAELIAYhBQsgASADIARBB2oQ60hFDQALIAQoAgwhAwsgAyAELQAHOgAACyAEQRBqJAELMQEBfyABIABrIQMDQCADQQFKBEAgACABIAIgAxCYSiADQQFrIQMgAUEBayEBDAELCwuPAQEBfyMBQRBrIgQkASAEIAA2AgwCQCADQQJJDQAgBEEMaigCAC0AACEAIAQoAgwgAiADEJlKIQMgBCABQQFrIgE2AgggASADRgRAIAMgADoAAAwBCyADIARBCGooAgAtAAA6AAAgBCgCCCAAOgAAIAQoAgwiACADQQFqIgMgAiADIABrEJpKCyAEQRBqJAELiwEBBX8jAUEQayIDJAEgAkECa0EBdiEHA0AgAyAAIARqQQFqIgY2AgwgBEEBdCIFQQFyIQQCQCAFQQJqIgUgAk4NACABIAYgBkEBahDrSEUNACADIAMoAgxBAWo2AgwgBSEECyAAIANBDGooAgAtAAA6AAAgAygCDCEAIAQgB0wNAAsgA0EQaiQBIAALtwEBAn8jAUEQayIEJAECQCADQQJIDQAgBCABQQFrIgE2AgwgBCAAIANBAmtBAXYiA2oiBTYCCCACIAUgARDrSEUNACAEIARBDGooAgAtAAA6AAcCQANAIAQoAgwgBEEIaigCAC0AADoAACAEIAQoAggiATYCDCADRQ0BIAQgACADQQFrQQF2IgNqIgE2AgggAiABIARBB2oQ60gNAAsgBCgCDCEBCyABIAQtAAc6AAALIARBEGokAQurAQECfyMBQRBrIgUkASAFIAE2AgggBSAANgIMIAUgAjYCBCAFIAM2AgAgACABIAIgBBDySCEGAkAgBCADIAIQ60hFDQAgBUEEaiAFEOxIIAQgBSgCBCABEOtIRQRAIAZBAWohBgwBCyAFQQhqIAVBBGoQ7EggBCAFKAIIIAAQ60hFBEAgBkECaiEGDAELIAZBA2ohBiAFQQxqIAVBCGoQ7EgLIAVBEGokASAGC58BAQN/IwFBEGsiBCQBIAQgADYCDCAAIAFGBH8gAgUgACABIAMQnkogASAAa0ECdSEGIAEhAANAAkAgBCAANgIIIAQoAgwhBSAAIAJGDQAgAyAAIAUQ90gEQCAEQQhqIARBDGoQ+EggBCgCDCIAIAMgBiAAEJ9KCyAEKAIIQQRqIQAMAQsLIAUgASADEKBKIAQoAggLIQAgBEEQaiQBIAAL3wEBAn8jAUEgayIGJAEgBiABNgIYIAYgADYCHCAGIAI2AhQgBiADNgIQIAYgBDYCDCAAIAEgAiADIAUiBxCkSiEFAkAgByAEIAMQ90hFDQAgBkEQaiAGQQxqEPhIIAcgBigCECACEPdIRQRAIAVBAWohBQwBCyAGQRRqIAZBEGoQ+EggByAGKAIUIAEQ90hFBEAgBUECaiEFDAELIAZBGGogBkEUahD4SCAHIAYoAhggABD3SEUEQCAFQQNqIQUMAQsgBUEEaiEFIAZBHGogBkEYahD4SAsgBkEgaiQBIAULRwEBfwJAIAEgAGsiAUEFSA0AIAFBAnUiA0ECa0EBdiEBA0AgAUEASA0BIAAgAiADIAAgAUECdGoQn0ogAUEBayEBDAALAAsLwgIBBn8jAUEQayIEJAEgBCADNgIMAkAgAkECSA0AIAJBAmtBAXYiCSADIABrIgVBAnVIDQAgBCAAIAVBAXUiB0EBaiIFQQJ0aiIGNgIIAkAgB0ECaiIHIAJODQAgASAGIAZBBGoiCBD3SEUNACAEIAg2AgggCCEGIAchBQsgASAGIAMQ90gNACAEIARBDGooAgAoAgA2AgQCQANAIAQoAgwgBEEIaigCACgCADYCACAEIAQoAggiAzYCDCAFIAlKDQEgBCAAIAVBAXQiBUEBciIGQQJ0aiIDNgIIAkACQCAFQQJqIgUgAk4NACABIAMgA0EEahD3SCEHIAQoAgghAyAHRQ0AIAQgA0EEaiIDNgIIDAELIAYhBQsgASADIARBBGoQ90hFDQALIAQoAgwhAwsgAyAEKAIENgIACyAEQRBqJAELNAEBfyABIABrQQJ1IQMDQCADQQFKBEAgACABIAIgAxChSiADQQFrIQMgAUEEayEBDAELCwuSAQEBfyMBQRBrIgQkASAEIAA2AgwCQCADQQJJDQAgBEEMaigCACgCACEAIAQoAgwgAiADEKJKIQMgBCABQQRrIgE2AgggASADRgRAIAMgADYCAAwBCyADIARBCGooAgAoAgA2AgAgBCgCCCAANgIAIAQoAgwiACADQQRqIgMgAiADIABrQQJ1EKNKCyAEQRBqJAELjgEBBX8jAUEQayIDJAEgAkECa0EBdiEHA0AgAyAEQQJ0IABqQQRqIgY2AgwgBEEBdCIFQQFyIQQCQCAFQQJqIgUgAk4NACABIAYgBkEEahD3SEUNACADIAMoAgxBBGo2AgwgBSEECyAAIANBDGooAgAoAgA2AgAgAygCDCEAIAQgB0wNAAsgA0EQaiQBIAALvQEBAn8jAUEQayIEJAECQCADQQJIDQAgBCABQQRrIgE2AgwgBCAAIANBAmtBAXYiA0ECdGoiBTYCCCACIAUgARD3SEUNACAEIARBDGooAgAoAgA2AgQCQANAIAQoAgwgBEEIaigCACgCADYCACAEIAQoAggiATYCDCADRQ0BIAQgACADQQFrQQF2IgNBAnRqIgE2AgggAiABIARBBGoQ90gNAAsgBCgCDCEBCyABIAQoAgQ2AgALIARBEGokAQurAQECfyMBQRBrIgUkASAFIAE2AgggBSAANgIMIAUgAjYCBCAFIAM2AgAgACABIAIgBBD+SCEGAkAgBCADIAIQ90hFDQAgBUEEaiAFEPhIIAQgBSgCBCABEPdIRQRAIAZBAWohBgwBCyAFQQhqIAVBBGoQ+EggBCAFKAIIIAAQ90hFBEAgBkECaiEGDAELIAZBA2ohBiAFQQxqIAVBCGoQ+EgLIAVBEGokASAGC5wBAQN/IwFBEGsiBCQBIAQgADYCDCAAIAFGBH8gAgUgACABIAMQp0ogASAAayEGIAEhAANAAkAgBCAANgIIIAQoAgwhBSAAIAJGDQAgAyAAIAUQhUkEQCAEQQhqIARBDGoQ7EggBCgCDCIAIAMgBiAAEKhKCyAEKAIIQQFqIQAMAQsLIAUgASADEKlKIAQoAggLIQAgBEEQaiQBIAAL3wEBAn8jAUEgayIGJAEgBiABNgIYIAYgADYCHCAGIAI2AhQgBiADNgIQIAYgBDYCDCAAIAEgAiADIAUiBxCtSiEFAkAgByAEIAMQhUlFDQAgBkEQaiAGQQxqEOxIIAcgBigCECACEIVJRQRAIAVBAWohBQwBCyAGQRRqIAZBEGoQ7EggByAGKAIUIAEQhUlFBEAgBUECaiEFDAELIAZBGGogBkEUahDsSCAHIAYoAhggABCFSUUEQCAFQQNqIQUMAQsgBUEEaiEFIAZBHGogBkEYahDsSAsgBkEgaiQBIAULPwEBfwJAIAEgAGsiA0ECSA0AIANBAmtBAXYhAQNAIAFBAEgNASAAIAIgAyAAIAFqEKhKIAFBAWshAQwACwALC7kCAQZ/IwFBEGsiBCQBIAQgAzYCDAJAIAJBAkgNACACQQJrQQF2IgkgAyAAayIFSA0AIAQgACAFQQF0IgdBAXIiBWoiBjYCCAJAIAdBAmoiByACTg0AIAEgBiAGQQFqIggQhUlFDQAgBCAINgIIIAghBiAHIQULIAEgBiADEIVJDQAgBCAEQQxqKAIALQAAOgAHAkADQCAEKAIMIARBCGooAgAtAAA6AAAgBCAEKAIIIgM2AgwgBSAJSg0BIAQgACAFQQF0IgVBAXIiBmoiAzYCCAJAAkAgBUECaiIFIAJODQAgASADIANBAWoQhUkhByAEKAIIIQMgB0UNACAEIANBAWoiAzYCCAwBCyAGIQULIAEgAyAEQQdqEIVJRQ0ACyAEKAIMIQMLIAMgBC0ABzoAAAsgBEEQaiQBCzEBAX8gASAAayEDA0AgA0EBSgRAIAAgASACIAMQqkogA0EBayEDIAFBAWshAQwBCwsLjwEBAX8jAUEQayIEJAEgBCAANgIMAkAgA0ECSQ0AIARBDGooAgAtAAAhACAEKAIMIAIgAxCrSiEDIAQgAUEBayIBNgIIIAEgA0YEQCADIAA6AAAMAQsgAyAEQQhqKAIALQAAOgAAIAQoAgggADoAACAEKAIMIgAgA0EBaiIDIAIgAyAAaxCsSgsgBEEQaiQBC4sBAQV/IwFBEGsiAyQBIAJBAmtBAXYhBwNAIAMgACAEakEBaiIGNgIMIARBAXQiBUEBciEEAkAgBUECaiIFIAJODQAgASAGIAZBAWoQhUlFDQAgAyADKAIMQQFqNgIMIAUhBAsgACADQQxqKAIALQAAOgAAIAMoAgwhACAEIAdMDQALIANBEGokASAAC7cBAQJ/IwFBEGsiBCQBAkAgA0ECSA0AIAQgAUEBayIBNgIMIAQgACADQQJrQQF2IgNqIgU2AgggAiAFIAEQhUlFDQAgBCAEQQxqKAIALQAAOgAHAkADQCAEKAIMIARBCGooAgAtAAA6AAAgBCAEKAIIIgE2AgwgA0UNASAEIAAgA0EBa0EBdiIDaiIBNgIIIAIgASAEQQdqEIVJDQALIAQoAgwhAQsgASAELQAHOgAACyAEQRBqJAELqwEBAn8jAUEQayIFJAEgBSABNgIIIAUgADYCDCAFIAI2AgQgBSADNgIAIAAgASACIAQQi0khBgJAIAQgAyACEIVJRQ0AIAVBBGogBRDsSCAEIAUoAgQgARCFSUUEQCAGQQFqIQYMAQsgBUEIaiAFQQRqEOxIIAQgBSgCCCAAEIVJRQRAIAZBAmohBgwBCyAGQQNqIQYgBUEMaiAFQQhqEOxICyAFQRBqJAEgBgufAQEDfyMBQRBrIgQkASAEIAA2AgwgACABRgR/IAIFIAAgASADELBKIAEgAGtBAXUhBiABIQADQAJAIAQgADYCCCAEKAIMIQUgACACRg0AIAMgACAFEJBJBEAgBEEIaiAEQQxqEJFJIAQoAgwiACADIAYgABCxSgsgBCgCCEECaiEADAELCyAFIAEgAxCySiAEKAIICyEAIARBEGokASAAC98BAQJ/IwFBIGsiBiQBIAYgATYCGCAGIAA2AhwgBiACNgIUIAYgAzYCECAGIAQ2AgwgACABIAIgAyAFIgcQtkohBQJAIAcgBCADEJBJRQ0AIAZBEGogBkEMahCRSSAHIAYoAhAgAhCQSUUEQCAFQQFqIQUMAQsgBkEUaiAGQRBqEJFJIAcgBigCFCABEJBJRQRAIAVBAmohBQwBCyAGQRhqIAZBFGoQkUkgByAGKAIYIAAQkElFBEAgBUEDaiEFDAELIAVBBGohBSAGQRxqIAZBGGoQkUkLIAZBIGokASAFC0cBAX8CQCABIABrIgFBA0gNACABQQF1IgNBAmtBAXYhAQNAIAFBAEgNASAAIAIgAyAAIAFBAXRqELFKIAFBAWshAQwACwALC70CAQZ/IwFBEGsiBCQBIAQgAzYCDAJAIAJBAkgNACACQQJrQQF2IgkgAyAAayIGQQF1SA0AIAQgACAGQQFqIgVBAXRqIgc2AggCQCAGQQJqIgYgAk4NACABIAcgB0ECaiIIEJBJRQ0AIAQgCDYCCCAIIQcgBiEFCyABIAcgAxCQSQ0AIAQgBEEMaigCAC8BADsBBgJAA0AgBCgCDCAEQQhqKAIALwEAOwEAIAQgBCgCCCIDNgIMIAUgCUoNASAEIAAgBUEBdCIFQQFyIgZBAXRqIgM2AggCQAJAIAVBAmoiBSACTg0AIAEgAyADQQJqEJBJIQcgBCgCCCEDIAdFDQAgBCADQQJqIgM2AggMAQsgBiEFCyABIAMgBEEGahCQSUUNAAsgBCgCDCEDCyADIAQvAQY7AQALIARBEGokAQs0AQF/IAEgAGtBAXUhAwNAIANBAUoEQCAAIAEgAiADELNKIANBAWshAyABQQJrIQEMAQsLC5IBAQF/IwFBEGsiBCQBIAQgADYCDAJAIANBAkkNACAEQQxqKAIALwEAIQAgBCgCDCACIAMQtEohAyAEIAFBAmsiATYCCCABIANGBEAgAyAAOwEADAELIAMgBEEIaigCAC8BADsBACAEKAIIIAA7AQAgBCgCDCIAIANBAmoiAyACIAMgAGtBAXUQtUoLIARBEGokAQuIAQEFfyMBQRBrIgMkASACQQJrQQF2IQcDQCADIAAgBEEBdCIEQQJqIgVqIgY2AgwgBEEBciEEAkAgAiAFTA0AIAEgBiAGQQJqEJBJRQ0AIAMgAygCDEECajYCDCAFIQQLIAAgA0EMaigCAC8BADsBACADKAIMIQAgBCAHTA0ACyADQRBqJAEgAAvFAQECfyMBQRBrIgQkAQJAIANBAkgNACAEIAFBAmsiATYCDCAEIAAgA0ECayIFQX5xaiIDNgIIIAIgAyABEJBJRQ0AIAVBAXYhAyAEIARBDGooAgAvAQA7AQYCQANAIAQoAgwgBEEIaigCAC8BADsBACAEIAQoAggiATYCDCADRQ0BIAQgACADQQFrIgNBfnFqIgE2AgggA0EBdiEDIAIgASAEQQZqEJBJDQALIAQoAgwhAQsgASAELwEGOwEACyAEQRBqJAELqwEBAn8jAUEQayIFJAEgBSABNgIIIAUgADYCDCAFIAI2AgQgBSADNgIAIAAgASACIAQQl0khBgJAIAQgAyACEJBJRQ0AIAVBBGogBRCRSSAEIAUoAgQgARCQSUUEQCAGQQFqIQYMAQsgBUEIaiAFQQRqEJFJIAQgBSgCCCAAEJBJRQRAIAZBAmohBgwBCyAGQQNqIQYgBUEMaiAFQQhqEJFJCyAFQRBqJAEgBgufAQEDfyMBQRBrIgQkASAEIAA2AgwgACABRgR/IAIFIAAgASADELlKIAEgAGtBAXUhBiABIQADQAJAIAQgADYCCCAEKAIMIQUgACACRg0AIAMgACAFEJxJBEAgBEEIaiAEQQxqEJFJIAQoAgwiACADIAYgABC6SgsgBCgCCEECaiEADAELCyAFIAEgAxC7SiAEKAIICyEAIARBEGokASAAC98BAQJ/IwFBIGsiBiQBIAYgATYCGCAGIAA2AhwgBiACNgIUIAYgAzYCECAGIAQ2AgwgACABIAIgAyAFIgcQv0ohBQJAIAcgBCADEJxJRQ0AIAZBEGogBkEMahCRSSAHIAYoAhAgAhCcSUUEQCAFQQFqIQUMAQsgBkEUaiAGQRBqEJFJIAcgBigCFCABEJxJRQRAIAVBAmohBQwBCyAGQRhqIAZBFGoQkUkgByAGKAIYIAAQnElFBEAgBUEDaiEFDAELIAVBBGohBSAGQRxqIAZBGGoQkUkLIAZBIGokASAFC0cBAX8CQCABIABrIgFBA0gNACABQQF1IgNBAmtBAXYhAQNAIAFBAEgNASAAIAIgAyAAIAFBAXRqELpKIAFBAWshAQwACwALC70CAQZ/IwFBEGsiBCQBIAQgAzYCDAJAIAJBAkgNACACQQJrQQF2IgkgAyAAayIGQQF1SA0AIAQgACAGQQFqIgVBAXRqIgc2AggCQCAGQQJqIgYgAk4NACABIAcgB0ECaiIIEJxJRQ0AIAQgCDYCCCAIIQcgBiEFCyABIAcgAxCcSQ0AIAQgBEEMaigCAC8BADsBBgJAA0AgBCgCDCAEQQhqKAIALwEAOwEAIAQgBCgCCCIDNgIMIAUgCUoNASAEIAAgBUEBdCIFQQFyIgZBAXRqIgM2AggCQAJAIAVBAmoiBSACTg0AIAEgAyADQQJqEJxJIQcgBCgCCCEDIAdFDQAgBCADQQJqIgM2AggMAQsgBiEFCyABIAMgBEEGahCcSUUNAAsgBCgCDCEDCyADIAQvAQY7AQALIARBEGokAQs0AQF/IAEgAGtBAXUhAwNAIANBAUoEQCAAIAEgAiADELxKIANBAWshAyABQQJrIQEMAQsLC5IBAQF/IwFBEGsiBCQBIAQgADYCDAJAIANBAkkNACAEQQxqKAIALwEAIQAgBCgCDCACIAMQvUohAyAEIAFBAmsiATYCCCABIANGBEAgAyAAOwEADAELIAMgBEEIaigCAC8BADsBACAEKAIIIAA7AQAgBCgCDCIAIANBAmoiAyACIAMgAGtBAXUQvkoLIARBEGokAQuIAQEFfyMBQRBrIgMkASACQQJrQQF2IQcDQCADIAAgBEEBdCIEQQJqIgVqIgY2AgwgBEEBciEEAkAgAiAFTA0AIAEgBiAGQQJqEJxJRQ0AIAMgAygCDEECajYCDCAFIQQLIAAgA0EMaigCAC8BADsBACADKAIMIQAgBCAHTA0ACyADQRBqJAEgAAvFAQECfyMBQRBrIgQkAQJAIANBAkgNACAEIAFBAmsiATYCDCAEIAAgA0ECayIFQX5xaiIDNgIIIAIgAyABEJxJRQ0AIAVBAXYhAyAEIARBDGooAgAvAQA7AQYCQANAIAQoAgwgBEEIaigCAC8BADsBACAEIAQoAggiATYCDCADRQ0BIAQgACADQQFrIgNBfnFqIgE2AgggA0EBdiEDIAIgASAEQQZqEJxJDQALIAQoAgwhAQsgASAELwEGOwEACyAEQRBqJAELqwEBAn8jAUEQayIFJAEgBSABNgIIIAUgADYCDCAFIAI2AgQgBSADNgIAIAAgASACIAQQokkhBgJAIAQgAyACEJxJRQ0AIAVBBGogBRCRSSAEIAUoAgQgARCcSUUEQCAGQQFqIQYMAQsgBUEIaiAFQQRqEJFJIAQgBSgCCCAAEJxJRQRAIAZBAmohBgwBCyAGQQNqIQYgBUEMaiAFQQhqEJFJCyAFQRBqJAEgBgufAQEDfyMBQRBrIgQkASAEIAA2AgwgACABRgR/IAIFIAAgASADEMJKIAEgAGtBAnUhBiABIQADQAJAIAQgADYCCCAEKAIMIQUgACACRg0AIAMgACAFEKlJBEAgBEEIaiAEQQxqEPhIIAQoAgwiACADIAYgABDDSgsgBCgCCEEEaiEADAELCyAFIAEgAxDESiAEKAIICyEAIARBEGokASAAC98BAQJ/IwFBIGsiBiQBIAYgATYCGCAGIAA2AhwgBiACNgIUIAYgAzYCECAGIAQ2AgwgACABIAIgAyAFIgcQyEohBQJAIAcgBCADEKlJRQ0AIAZBEGogBkEMahD4SCAHIAYoAhAgAhCpSUUEQCAFQQFqIQUMAQsgBkEUaiAGQRBqEPhIIAcgBigCFCABEKlJRQRAIAVBAmohBQwBCyAGQRhqIAZBFGoQ+EggByAGKAIYIAAQqUlFBEAgBUEDaiEFDAELIAVBBGohBSAGQRxqIAZBGGoQ+EgLIAZBIGokASAFC0cBAX8CQCABIABrIgFBBUgNACABQQJ1IgNBAmtBAXYhAQNAIAFBAEgNASAAIAIgAyAAIAFBAnRqEMNKIAFBAWshAQwACwALC8ICAQZ/IwFBEGsiBCQBIAQgAzYCDAJAIAJBAkgNACACQQJrQQF2IgkgAyAAayIFQQJ1SA0AIAQgACAFQQF1IgdBAWoiBUECdGoiBjYCCAJAIAdBAmoiByACTg0AIAEgBiAGQQRqIggQqUlFDQAgBCAINgIIIAghBiAHIQULIAEgBiADEKlJDQAgBCAEQQxqKAIAKAIANgIEAkADQCAEKAIMIARBCGooAgAoAgA2AgAgBCAEKAIIIgM2AgwgBSAJSg0BIAQgACAFQQF0IgVBAXIiBkECdGoiAzYCCAJAAkAgBUECaiIFIAJODQAgASADIANBBGoQqUkhByAEKAIIIQMgB0UNACAEIANBBGoiAzYCCAwBCyAGIQULIAEgAyAEQQRqEKlJRQ0ACyAEKAIMIQMLIAMgBCgCBDYCAAsgBEEQaiQBCzQBAX8gASAAa0ECdSEDA0AgA0EBSgRAIAAgASACIAMQxUogA0EBayEDIAFBBGshAQwBCwsLkgEBAX8jAUEQayIEJAEgBCAANgIMAkAgA0ECSQ0AIARBDGooAgAoAgAhACAEKAIMIAIgAxDGSiEDIAQgAUEEayIBNgIIIAEgA0YEQCADIAA2AgAMAQsgAyAEQQhqKAIAKAIANgIAIAQoAgggADYCACAEKAIMIgAgA0EEaiIDIAIgAyAAa0ECdRDHSgsgBEEQaiQBC44BAQV/IwFBEGsiAyQBIAJBAmtBAXYhBwNAIAMgBEECdCAAakEEaiIGNgIMIARBAXQiBUEBciEEAkAgBUECaiIFIAJODQAgASAGIAZBBGoQqUlFDQAgAyADKAIMQQRqNgIMIAUhBAsgACADQQxqKAIAKAIANgIAIAMoAgwhACAEIAdMDQALIANBEGokASAAC70BAQJ/IwFBEGsiBCQBAkAgA0ECSA0AIAQgAUEEayIBNgIMIAQgACADQQJrQQF2IgNBAnRqIgU2AgggAiAFIAEQqUlFDQAgBCAEQQxqKAIAKAIANgIEAkADQCAEKAIMIARBCGooAgAoAgA2AgAgBCAEKAIIIgE2AgwgA0UNASAEIAAgA0EBa0EBdiIDQQJ0aiIBNgIIIAIgASAEQQRqEKlJDQALIAQoAgwhAQsgASAEKAIENgIACyAEQRBqJAELqwEBAn8jAUEQayIFJAEgBSABNgIIIAUgADYCDCAFIAI2AgQgBSADNgIAIAAgASACIAQQr0khBgJAIAQgAyACEKlJRQ0AIAVBBGogBRD4SCAEIAUoAgQgARCpSUUEQCAGQQFqIQYMAQsgBUEIaiAFQQRqEPhIIAQgBSgCCCAAEKlJRQRAIAZBAmohBgwBCyAGQQNqIQYgBUEMaiAFQQhqEPhICyAFQRBqJAEgBgufAQEDfyMBQRBrIgQkASAEIAA2AgwgACABRgR/IAIFIAAgASADEMtKIAEgAGtBA3UhBiABIQADQAJAIAQgADYCCCAEKAIMIQUgACACRg0AIAMgACAFELhJBEAgBEEIaiAEQQxqELlJIAQoAgwiACADIAYgABDMSgsgBCgCCEEIaiEADAELCyAFIAEgAxDNSiAEKAIICyEAIARBEGokASAAC98BAQJ/IwFBIGsiBiQBIAYgATYCGCAGIAA2AhwgBiACNgIUIAYgAzYCECAGIAQ2AgwgACABIAIgAyAFIgcQgUohBQJAIAcgBCADELhJRQ0AIAZBEGogBkEMahC5SSAHIAYoAhAgAhC4SUUEQCAFQQFqIQUMAQsgBkEUaiAGQRBqELlJIAcgBigCFCABELhJRQRAIAVBAmohBQwBCyAGQRhqIAZBFGoQuUkgByAGKAIYIAAQuElFBEAgBUEDaiEFDAELIAVBBGohBSAGQRxqIAZBGGoQuUkLIAZBIGokASAFC0cBAX8CQCABIABrIgFBCUgNACABQQN1IgNBAmtBAXYhAQNAIAFBAEgNASAAIAIgAyAAIAFBA3RqEMxKIAFBAWshAQwACwALC78CAQZ/IwFBEGsiBCQBIAQgAzYCDAJAIAJBAkgNACACQQJrQQF2IgkgAyAAayIFQQN1SA0AIAQgACAFQQJ1IgdBAWoiBUEDdGoiBjYCCAJAIAdBAmoiByACTg0AIAEgBiAGQQhqIggQuElFDQAgBCAINgIIIAghBiAHIQULIAEgBiADELhJDQAgBCAEQQxqKAIAKQMANwMAAkADQCAEKAIMIARBCGooAgApAwA3AwAgBCAEKAIIIgM2AgwgBSAJSg0BIAQgACAFQQF0IgVBAXIiBkEDdGoiAzYCCAJAAkAgBUECaiIFIAJODQAgASADIANBCGoQuEkhByAEKAIIIQMgB0UNACAEIANBCGoiAzYCCAwBCyAGIQULIAEgAyAEELhJRQ0ACyAEKAIMIQMLIAMgBCkDADcDAAsgBEEQaiQBCzQBAX8gASAAa0EDdSEDA0AgA0EBSgRAIAAgASACIAMQzkogA0EBayEDIAFBCGshAQwBCwsLlAECAX8BfiMBQRBrIgQkASAEIAA2AgwCQCADQQJJDQAgBEEMaigCACkDACEFIAQoAgwgAiADEM9KIQMgBCABQQhrIgA2AgggACADRgRAIAMgBTcDAAwBCyADIARBCGooAgApAwA3AwAgBCgCCCAFNwMAIAQoAgwiACADQQhqIgMgAiADIABrQQN1ENBKCyAEQRBqJAELjgEBBX8jAUEQayIDJAEgAkECa0EBdiEHA0AgAyAEQQN0IABqQQhqIgY2AgwgBEEBdCIFQQFyIQQCQCAFQQJqIgUgAk4NACABIAYgBkEIahC4SUUNACADIAMoAgxBCGo2AgwgBSEECyAAIANBDGooAgApAwA3AwAgAygCDCEAIAQgB0wNAAsgA0EQaiQBIAALugEBAn8jAUEQayIEJAECQCADQQJIDQAgBCABQQhrIgE2AgwgBCAAIANBAmtBAXYiA0EDdGoiBTYCCCACIAUgARC4SUUNACAEIARBDGooAgApAwA3AwACQANAIAQoAgwgBEEIaigCACkDADcDACAEIAQoAggiATYCDCADRQ0BIAQgACADQQFrQQF2IgNBA3RqIgE2AgggAiABIAQQuEkNAAsgBCgCDCEBCyABIAQpAwA3AwALIARBEGokAQufAQEDfyMBQRBrIgQkASAEIAA2AgwgACABRgR/IAIFIAAgASADENNKIAEgAGtBA3UhBiABIQADQAJAIAQgADYCCCAEKAIMIQUgACACRg0AIAMgACAFEMRJBEAgBEEIaiAEQQxqELlJIAQoAgwiACADIAYgABDUSgsgBCgCCEEIaiEADAELCyAFIAEgAxDVSiAEKAIICyEAIARBEGokASAAC98BAQJ/IwFBIGsiBiQBIAYgATYCGCAGIAA2AhwgBiACNgIUIAYgAzYCECAGIAQ2AgwgACABIAIgAyAFIgcQgkohBQJAIAcgBCADEMRJRQ0AIAZBEGogBkEMahC5SSAHIAYoAhAgAhDESUUEQCAFQQFqIQUMAQsgBkEUaiAGQRBqELlJIAcgBigCFCABEMRJRQRAIAVBAmohBQwBCyAGQRhqIAZBFGoQuUkgByAGKAIYIAAQxElFBEAgBUEDaiEFDAELIAVBBGohBSAGQRxqIAZBGGoQuUkLIAZBIGokASAFC0cBAX8CQCABIABrIgFBCUgNACABQQN1IgNBAmtBAXYhAQNAIAFBAEgNASAAIAIgAyAAIAFBA3RqENRKIAFBAWshAQwACwALC78CAQZ/IwFBEGsiBCQBIAQgAzYCDAJAIAJBAkgNACACQQJrQQF2IgkgAyAAayIFQQN1SA0AIAQgACAFQQJ1IgdBAWoiBUEDdGoiBjYCCAJAIAdBAmoiByACTg0AIAEgBiAGQQhqIggQxElFDQAgBCAINgIIIAghBiAHIQULIAEgBiADEMRJDQAgBCAEQQxqKAIAKQMANwMAAkADQCAEKAIMIARBCGooAgApAwA3AwAgBCAEKAIIIgM2AgwgBSAJSg0BIAQgACAFQQF0IgVBAXIiBkEDdGoiAzYCCAJAAkAgBUECaiIFIAJODQAgASADIANBCGoQxEkhByAEKAIIIQMgB0UNACAEIANBCGoiAzYCCAwBCyAGIQULIAEgAyAEEMRJRQ0ACyAEKAIMIQMLIAMgBCkDADcDAAsgBEEQaiQBCzQBAX8gASAAa0EDdSEDA0AgA0EBSgRAIAAgASACIAMQ1kogA0EBayEDIAFBCGshAQwBCwsLlAECAX8BfiMBQRBrIgQkASAEIAA2AgwCQCADQQJJDQAgBEEMaigCACkDACEFIAQoAgwgAiADENdKIQMgBCABQQhrIgA2AgggACADRgRAIAMgBTcDAAwBCyADIARBCGooAgApAwA3AwAgBCgCCCAFNwMAIAQoAgwiACADQQhqIgMgAiADIABrQQN1ENhKCyAEQRBqJAELjgEBBX8jAUEQayIDJAEgAkECa0EBdiEHA0AgAyAEQQN0IABqQQhqIgY2AgwgBEEBdCIFQQFyIQQCQCAFQQJqIgUgAk4NACABIAYgBkEIahDESUUNACADIAMoAgxBCGo2AgwgBSEECyAAIANBDGooAgApAwA3AwAgAygCDCEAIAQgB0wNAAsgA0EQaiQBIAALugEBAn8jAUEQayIEJAECQCADQQJIDQAgBCABQQhrIgE2AgwgBCAAIANBAmtBAXYiA0EDdGoiBTYCCCACIAUgARDESUUNACAEIARBDGooAgApAwA3AwACQANAIAQoAgwgBEEIaigCACkDADcDACAEIAQoAggiATYCDCADRQ0BIAQgACADQQFrQQF2IgNBA3RqIgE2AgggAiABIAQQxEkNAAsgBCgCDCEBCyABIAQpAwA3AwALIARBEGokAQufAQEDfyMBQRBrIgQkASAEIAA2AgwgACABRgR/IAIFIAAgASADENtKIAEgAGtBAnUhBiABIQADQAJAIAQgADYCCCAEKAIMIQUgACACRg0AIAMgACAFEM9JBEAgBEEIaiAEQQxqENBJIAQoAgwiACADIAYgABDcSgsgBCgCCEEEaiEADAELCyAFIAEgAxDdSiAEKAIICyEAIARBEGokASAAC98BAQJ/IwFBIGsiBiQBIAYgATYCGCAGIAA2AhwgBiACNgIUIAYgAzYCECAGIAQ2AgwgACABIAIgAyAFIgcQ4UohBQJAIAcgBCADEM9JRQ0AIAZBEGogBkEMahDQSSAHIAYoAhAgAhDPSUUEQCAFQQFqIQUMAQsgBkEUaiAGQRBqENBJIAcgBigCFCABEM9JRQRAIAVBAmohBQwBCyAGQRhqIAZBFGoQ0EkgByAGKAIYIAAQz0lFBEAgBUEDaiEFDAELIAVBBGohBSAGQRxqIAZBGGoQ0EkLIAZBIGokASAFC0cBAX8CQCABIABrIgFBBUgNACABQQJ1IgNBAmtBAXYhAQNAIAFBAEgNASAAIAIgAyAAIAFBAnRqENxKIAFBAWshAQwACwALC8ICAQZ/IwFBEGsiBCQBIAQgAzYCDAJAIAJBAkgNACACQQJrQQF2IgkgAyAAayIFQQJ1SA0AIAQgACAFQQF1IgdBAWoiBUECdGoiBjYCCAJAIAdBAmoiByACTg0AIAEgBiAGQQRqIggQz0lFDQAgBCAINgIIIAghBiAHIQULIAEgBiADEM9JDQAgBCAEQQxqKAIAKgIAOAIEAkADQCAEKAIMIARBCGooAgAqAgA4AgAgBCAEKAIIIgM2AgwgBSAJSg0BIAQgACAFQQF0IgVBAXIiBkECdGoiAzYCCAJAAkAgBUECaiIFIAJODQAgASADIANBBGoQz0khByAEKAIIIQMgB0UNACAEIANBBGoiAzYCCAwBCyAGIQULIAEgAyAEQQRqEM9JRQ0ACyAEKAIMIQMLIAMgBCoCBDgCAAsgBEEQaiQBCzQBAX8gASAAa0ECdSEDA0AgA0EBSgRAIAAgASACIAMQ3kogA0EBayEDIAFBBGshAQwBCwsLlAECAX8BfSMBQRBrIgQkASAEIAA2AgwCQCADQQJJDQAgBEEMaigCACoCACEFIAQoAgwgAiADEN9KIQMgBCABQQRrIgA2AgggACADRgRAIAMgBTgCAAwBCyADIARBCGooAgAqAgA4AgAgBCgCCCAFOAIAIAQoAgwiACADQQRqIgMgAiADIABrQQJ1EOBKCyAEQRBqJAELjgEBBX8jAUEQayIDJAEgAkECa0EBdiEHA0AgAyAEQQJ0IABqQQRqIgY2AgwgBEEBdCIFQQFyIQQCQCAFQQJqIgUgAk4NACABIAYgBkEEahDPSUUNACADIAMoAgxBBGo2AgwgBSEECyAAIANBDGooAgAqAgA4AgAgAygCDCEAIAQgB0wNAAsgA0EQaiQBIAALvQEBAn8jAUEQayIEJAECQCADQQJIDQAgBCABQQRrIgE2AgwgBCAAIANBAmtBAXYiA0ECdGoiBTYCCCACIAUgARDPSUUNACAEIARBDGooAgAqAgA4AgQCQANAIAQoAgwgBEEIaigCACoCADgCACAEIAQoAggiATYCDCADRQ0BIAQgACADQQFrQQF2IgNBAnRqIgE2AgggAiABIARBBGoQz0kNAAsgBCgCDCEBCyABIAQqAgQ4AgALIARBEGokAQurAQECfyMBQRBrIgUkASAFIAE2AgggBSAANgIMIAUgAjYCBCAFIAM2AgAgACABIAIgBBDWSSEGAkAgBCADIAIQz0lFDQAgBUEEaiAFENBJIAQgBSgCBCABEM9JRQRAIAZBAWohBgwBCyAFQQhqIAVBBGoQ0EkgBCAFKAIIIAAQz0lFBEAgBkECaiEGDAELIAZBA2ohBiAFQQxqIAVBCGoQ0EkLIAVBEGokASAGC58BAQN/IwFBEGsiBCQBIAQgADYCDCAAIAFGBH8gAgUgACABIAMQ5EogASAAa0EDdSEGIAEhAANAAkAgBCAANgIIIAQoAgwhBSAAIAJGDQAgAyAAIAUQ20kEQCAEQQhqIARBDGoQ3EkgBCgCDCIAIAMgBiAAEOVKCyAEKAIIQQhqIQAMAQsLIAUgASADEOZKIAQoAggLIQAgBEEQaiQBIAAL3wEBAn8jAUEgayIGJAEgBiABNgIYIAYgADYCHCAGIAI2AhQgBiADNgIQIAYgBDYCDCAAIAEgAiADIAUiBxCHSiEFAkAgByAEIAMQ20lFDQAgBkEQaiAGQQxqENxJIAcgBigCECACENtJRQRAIAVBAWohBQwBCyAGQRRqIAZBEGoQ3EkgByAGKAIUIAEQ20lFBEAgBUECaiEFDAELIAZBGGogBkEUahDcSSAHIAYoAhggABDbSUUEQCAFQQNqIQUMAQsgBUEEaiEFIAZBHGogBkEYahDcSQsgBkEgaiQBIAULRwEBfwJAIAEgAGsiAUEJSA0AIAFBA3UiA0ECa0EBdiEBA0AgAUEASA0BIAAgAiADIAAgAUEDdGoQ5UogAUEBayEBDAALAAsLvwIBBn8jAUEQayIEJAEgBCADNgIMAkAgAkECSA0AIAJBAmtBAXYiCSADIABrIgVBA3VIDQAgBCAAIAVBAnUiB0EBaiIFQQN0aiIGNgIIAkAgB0ECaiIHIAJODQAgASAGIAZBCGoiCBDbSUUNACAEIAg2AgggCCEGIAchBQsgASAGIAMQ20kNACAEIARBDGooAgArAwA5AwACQANAIAQoAgwgBEEIaigCACsDADkDACAEIAQoAggiAzYCDCAFIAlKDQEgBCAAIAVBAXQiBUEBciIGQQN0aiIDNgIIAkACQCAFQQJqIgUgAk4NACABIAMgA0EIahDbSSEHIAQoAgghAyAHRQ0AIAQgA0EIaiIDNgIIDAELIAYhBQsgASADIAQQ20lFDQALIAQoAgwhAwsgAyAEKwMAOQMACyAEQRBqJAELNAEBfyABIABrQQN1IQMDQCADQQFKBEAgACABIAIgAxDnSiADQQFrIQMgAUEIayEBDAELCwuUAQIBfwF8IwFBEGsiBCQBIAQgADYCDAJAIANBAkkNACAEQQxqKAIAKwMAIQUgBCgCDCACIAMQ6EohAyAEIAFBCGsiADYCCCAAIANGBEAgAyAFOQMADAELIAMgBEEIaigCACsDADkDACAEKAIIIAU5AwAgBCgCDCIAIANBCGoiAyACIAMgAGtBA3UQ6UoLIARBEGokAQuOAQEFfyMBQRBrIgMkASACQQJrQQF2IQcDQCADIARBA3QgAGpBCGoiBjYCDCAEQQF0IgVBAXIhBAJAIAVBAmoiBSACTg0AIAEgBiAGQQhqENtJRQ0AIAMgAygCDEEIajYCDCAFIQQLIAAgA0EMaigCACsDADkDACADKAIMIQAgBCAHTA0ACyADQRBqJAEgAAu6AQECfyMBQRBrIgQkAQJAIANBAkgNACAEIAFBCGsiATYCDCAEIAAgA0ECa0EBdiIDQQN0aiIFNgIIIAIgBSABENtJRQ0AIAQgBEEMaigCACsDADkDAAJAA0AgBCgCDCAEQQhqKAIAKwMAOQMAIAQgBCgCCCIBNgIMIANFDQEgBCAAIANBAWtBAXYiA0EDdGoiATYCCCACIAEgBBDbSQ0ACyAEKAIMIQELIAEgBCsDADkDAAsgBEEQaiQBC58BAQN/IwFBEGsiBCQBIAQgADYCDCAAIAFGBH8gAgUgACABIAMQ60ogASAAa0EEdSEGIAEhAANAAkAgBCAANgIIIAQoAgwhBSAAIAJGDQAgAyAAIAUQ50kEQCAEQQhqIARBDGoQ6EkgBCgCDCIAIAMgBiAAEOxKCyAEKAIIQRBqIQAMAQsLIAUgASADEO1KIAQoAggLIQAgBEEQaiQBIAALRwEBfwJAIAEgAGsiAUERSA0AIAFBBHUiA0ECa0EBdiEBA0AgAUEASA0BIAAgAiADIAAgAUEEdGoQ7EogAUEBayEBDAALAAsL9AICBn8BfiMBQSBrIgQkASAEIAM2AhwCQCACQQJIDQAgAkECa0EBdiIJIAMgAGsiBUEEdUgNACAEIAAgBUEDdSIHQQFqIgVBBHRqIgY2AhgCQCAHQQJqIgcgAk4NACABIAYgBkEQaiIIEOdJRQ0AIAQgCDYCGCAIIQYgByEFCyABIAYgAxDnSQ0AIARBHGooAgAiAykDACEKIAQgAykDCDcDECAEIAo3AwgCQANAIARBGGooAgAiAykDACEKIAQoAhwiBiADKQMINwMIIAYgCjcDACAEIAQoAhgiAzYCHCAFIAlKDQEgBCAAIAVBAXQiBUEBciIGQQR0aiIDNgIYAkACQCAFQQJqIgUgAk4NACABIAMgA0EQahDnSSEHIAQoAhghAyAHRQ0AIAQgA0EQaiIDNgIYDAELIAYhBQsgASADIARBCGoQ50lFDQALIAQoAhwhAwsgBCkDCCEKIAMgBCkDEDcDCCADIAo3AwALIARBIGokAQs0AQF/IAEgAGtBBHUhAwNAIANBAUoEQCAAIAEgAiADEO5KIANBAWshAyABQRBrIQEMAQsLC70BAgF/A34jAUEQayIEJAEgBCAANgIMAkAgA0ECSQ0AIARBDGooAgAiACkDCCEFIAApAwAhBiAEKAIMIAIgAxDvSiEDIAQgAUEQayIANgIIIAAgA0YEQCADIAY3AwAgAyAFNwMIDAELIARBCGooAgAiACkDACEHIAMgACkDCDcDCCADIAc3AwAgBCgCCCIAIAU3AwggACAGNwMAIAQoAgwiACADQRBqIgMgAiADIABrQQR1EPBKCyAEQRBqJAELoAECBX8BfiMBQRBrIgMkASACQQJrQQF2IQcDQCADIAVBBHQgAGpBEGoiBjYCDCAFQQF0IgRBAXIhBQJAIARBAmoiBCACTg0AIAEgBiAGQRBqEOdJRQ0AIAMgAygCDEEQajYCDCAEIQULIANBDGooAgAiBCkDACEIIAAgBCkDCDcDCCAAIAg3AwAgAygCDCEAIAUgB0wNAAsgA0EQaiQBIAAL7wECAn8BfiMBQSBrIgQkAQJAIANBAkgNACAEIAFBEGsiATYCHCAEIAAgA0ECa0EBdiIDQQR0aiIFNgIYIAIgBSABEOdJRQ0AIARBHGooAgAiASkDACEGIAQgASkDCDcDECAEIAY3AwgCQANAIARBGGooAgAiASkDACEGIAQoAhwiBSABKQMINwMIIAUgBjcDACAEIAQoAhgiATYCHCADRQ0BIAQgACADQQFrQQF2IgNBBHRqIgE2AhggAiABIARBCGoQ50kNAAsgBCgCHCEBCyAEKQMIIQYgASAEKQMQNwMIIAEgBjcDAAsgBEEgaiQBCwkAIwBB+8sAagsZACAAEPNKIgBBCGpCAUEDEKdHGiAAEPRKCyMBAX8jACIBQYCc7wFqIAFB4JvvAWogABD2SkH/AXFBBnRqCwgAIAApAwAaCw0AIAAQ80pBCGopAwALXAECfyMBQRBrIgAkASOzASICQQA2AgAgACABNgIMI6cGIABBC2ogAEEMakEEENwBIQMgAigCACEBIAJBADYCACABQQFHBEAgAEEQaiQBIAMPC0EAEN0BGhDyYQALEwAgABDzSiIAIABBCGogARD4Sgv8AQEGfyAAQgFBBRCnRxojAUEgayIEJAEgBCACNwMYIAQgATYCECAEQRBqIQcgBEEPaiEIEP5KIQIjAUEgayIDJAEgAyACNwMYIAMQkkw3AxADQAJAIwFBEGsiBSQBIAUgByIBKAIAKQMANwMIIAVBCGogAUEIahCFSyEBIAVBEGokASABQQFzDQAgBkE/TQRAIAZBAWohBgwCCyADEJJMNwMAIAMgAyADQRBqEP9KNwMIIAMQ/ko3AwAgA0EYaiADEIBLBEAgA0EYaiADQQhqEIFLDQELIAggAykDCBCCS0UNAQsLIANBIGokASAEQSBqJAEgAEIBQQMQrEcaCwoAIAAQ80oQ9EoLDQAgABDzShogACkDAAsOACAAEPNKIAAgARD4SgujAQEBfyACIQADQCAAQQRPBEAgASgAAEGV08feBWwiA0EYdiADc0GV08feBWwgAkGV08feBWxzIQIgAEEEayEAIAFBBGohAQwBCwsCQAJAAkACQCAAQQFrDgMCAQADCyABLQACQRB0IAJzIQILIAEtAAFBCHQgAnMhAgsgAiABLQAAc0GV08feBWwhAgsgAkENdiACc0GV08feBWwiAEEPdiAAcwsHACAAKAAACzACAX8BfiMBQRBrIgAkASAAQgA3AwAgAEEIaiAAQQAQhEspAwAhASAAQRBqJAEgAQs4AgF/AX4jAUEQayICJAEgAiAAKQMANwMIIAIgASkDADcDACACQQhqIAIQhkshAyACQRBqJAEgAwsMACAAIAEQh0tBAXMLJAEBfyMBQRBrIgIkASACQQ9qIAAgARC4SSEBIAJBEGokASABC88BACMBQSBrIgAkASAAIAE3AxggAEGAATYCCAJAIABBGGogAEEQaiAAQQhqQQAQiEsQiUsEQCAAQQg2AgQgAEEQaiAAQQhqIABBBGpBABCIS0EAEIpLEItLDAELIABBwAA2AgggAEEYaiAAQRBqIABBCGpBABCISxCMSwRAIABBAjYCCCAAIABBGGogAEEIahCNSzcDECAAQRBqEItLDAELIABBBDYCCCAAQRhqIABBEGogAEEIakEAEIhLEIxLRQ0AEJBEGgsgAEEgaiQBQQALBABCAAsOACAAIAEpAwA3AwAgAAsNACAAKQMAIAEpAwBRC1cCAX8BfiMBQSBrIgIkASACIAApAwA3AwggAkEIaikDACEDIAIgASkDADcDACACIAMgAikDAH03AxAgAkEYaiACQRBqQQAQhEspAwAhAyACQSBqJAEgAwskAQF/IwFBEGsiAiQBIAJBD2ogACABEI9LIQEgAkEQaiQBIAELDgAgACABNAIANwMAIAALCQAgASAAEJBLCysAIwFBEGsiAiQBIAIgARCSSzcDCCAAIAJBCGopAwA3AwAgAkEQaiQBIAALNgEBfyMBQRBrIgEkASABIAAQkUsDQCABIAEQwUJBf0YEQBD6OygCAEEbRg0BCwsgAUEQaiQBCwkAIAEgABCTSwtJAgF/AX4jAUEgayICJAEgAiAAKQMANwMIIAIgAkEIaikDACABNAIAfzcDECACQRhqIAJBEGpBABCESykDACEDIAJBIGokASADCwYAEJBEGgsNACABKQMAIAIpAwBRCyQBAX8jAUEQayICJAEgAkEPaiAAIAEQlEshASACQRBqJAEgAQt3AQF/IwFBEGsiAiQBIAIgARCVSzcDCCAAAn8gAkEIaikDAEL///////////8AUgRAIAAgAkEIaikDADcDACACIAEgAkEIahCWSzcDACACKQMApwwBCyAAQv///////////wA3AwBB/5Pr3AMLNgIIIAJBEGokAQskAgF/AX4jAUEQayIBJAEgAUEPaiAAEJtLIQIgAUEQaiQBIAILJAEBfyMBQRBrIgIkASACQQ9qIAAgARCcSyEBIAJBEGokASABCzsBAn4jAUEQayIAJAEgAEEIaiABQQAQikspAwAhAyAAIAIpAwA3AwAgACkDACEEIABBEGokASADIARTCyQCAX8BfiMBQRBrIgEkASABQQ9qIAAQl0shAiABQRBqJAEgAgtQAgF/AX4jAUEgayICJAEgAiAAKQMANwMIIAIgAkEIaikDACACIAFBABCYSykDAH03AxAgAkEYaiACQRBqQQAQhEspAwAhAyACQSBqJAEgAws4AQF+IwFBEGsiACQBIAAgASkDAEKAlOvcA383AwAgAEEIaiAAQQAQhEspAwAhAiAAQRBqJAEgAgsrACMBQRBrIgIkASACIAEQmUs3AwggACACQQhqKQMANwMAIAJBEGokASAACyQCAX8BfiMBQRBrIgEkASABQQ9qIAAQmkshAiABQRBqJAEgAgs4AQF+IwFBEGsiACQBIAAgASkDAEKAlOvcA343AwAgAEEIaiAAQQAQhEspAwAhAiAAQRBqJAEgAgs2AQF+IwFBEGsiACQBIAAgASkDAELAhD1+NwMAIABBCGogAEEAEIRLKQMAIQIgAEEQaiQBIAILOwECfiMBQRBrIgAkASAAQQhqIAFBABCdSykDACEDIAAgAikDADcDACAAKQMAIQQgAEEQaiQBIAMgBFMLKwAjAUEQayICJAEgAiABEJ5LNwMIIAAgAkEIaikDADcDACACQRBqJAEgAAskAgF/AX4jAUEQayIBJAEgAUEPaiAAEJ9LIQIgAUEQaiQBIAILNQEBfiMBQRBrIgAkASAAIAEpAwBC6Ad+NwMAIABBCGogAEEAEIRLKQMAIQIgAEEQaiQBIAILTAEDfyOzASEBQQgQrFohAiABQQA2AgAjigogAiAAEN4BIQMgASgCACEAIAFBADYCACAAQQFHBEAgAw8LEN8BIQEgAhDkRiABEOABAAvFAQEGfyMBQRBrIgQkASAAIAE2AgAgAEEEahCiSyEFIAEoAgAhAiOzASIBQQA2AgAjpgZBfyACQQFqIgJBAXUiBkEGdCACQf///z9LG0HAABDeASEDIAEoAgAhByABQQA2AgAgB0EBRwRAIAJBAk8EQCADIAZBBnRqIQIgAyEBA0AgARCjS0FAayIBIAJHDQALCyAFIARBDGogAxCkSyIBEKVLGiABEKZLGiAEQRBqJAEgAA8LEN8BIQEgBRCmSxogARDgAQALVQEDfyMBQRBrIgEkASOzASICQQA2AgAjiQogACABQQ9qIAFBDmoQ3AEhAyACKAIAIQAgAkEANgIAIABBAUcEQCABQRBqJAEgAw8LQQAQ3QEaEPJhAAsfAQF/A0AgACABahCwSxogAUEBaiIBQcAARw0ACyAAC1wBAn8jAUEQayICJAEjswEiA0EANgIAIAIgATYCDCOICiAAIAJBDGogAkELahDcASEAIAMoAgAhASADQQA2AgAgAUEBRwRAIAJBEGokASAADwtBABDdARoQ8mEACw4AIAAgARC5PxCySyAACwsAIABBABCzSyAACwkAIAAgARCoSwujAgEJfyMBQRBrIgIkASAAQQRqIQYgAUECaiEHIAAoAgAoAgAhAyACQQ9qEKlLEKpLIAAoAgAoAgBBAWpBAXVwIQAgAUEBakH/AXEhCANAAkAgA0ECSQ0AIANBAXEhCiADQQFqQQF2IglBAWshBQNAIAIgAToADgJAAkACQCAAQQAgACAJRxsiACAFRw0AIApFDQAgBiAFEKtLIARqIAJBDmogB0H/AXFBBBCsSw0BDAILIAYgABCrSyAEaiACQQ5qIAhBBBCsSw0DIAItAA4gCEcNASAGIAAQq0sgBGogAkEOaiAHQf8BcUEEEKxLRQ0BIAAhBQsgBEEBaiEEIAVBAXYhACAJIQMMAwsgAEEBaiEADAALAAsLIAJBEGokASADQQJJC1gBBH8jAUEQayIBJAEjswEiAEEANgIAI4cKEOEBIQIgACgCACEDIABBADYCACADQQFHBEAgAUEMaiACELxLKAIAIQAgAUEQaiQBIAAPC0EAEN0BGhDyYQALFAAjAUEQayIAJAEgAEEQaiQBIAELDQAgACgCACABQQZ0agsPACAAIAEgAiADIAMQvUsLEgAgAARAIAAQrksaCyAAEORGCw0AIABBBGoQpksaIAALBwAgABC0SwsJACAAQQAQtUsLCQAgACABELlLCx4BAX8gACgCACECIAAgATYCACACBEAgACACELpLCwscACAAKAIAIQEgAEEANgIAIAEEQCAAIAEQuksLCwsAIABBADYCACAACwkAIAAgARC2SwsJACAAIAEQt0sLCQAgACABELhLCwsAIAAgAToAACAACw4AIAAgASgCADYCACAACw8AIAEEQCABQcAAEMdNCwsoAQJ/IwFBEGsiACQBIAAQpUM2AgwgAEEMaigCACEBIABBEGokASABCwsAIAAgATYCACAAC74FACAEEL5LIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADQQFrDgUBAQIDBAALIARBAWsOBQUFBAQGBAsgBEEBaw4FBwcGBggGCyAEQQFrDgUJCQgICggLIARBAWsOBQsLCgoMCgsgBEEBaw4FDQ0MDA4MCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIAQNDwwOCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQ0MDgsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAERQ0MDA0LIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNCwwMCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQoMCwsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAERQ0JDAoLIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNCAwJCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQcMCAsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAERQ0GDAcLIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNBQwGCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQQMBQsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAERQ0DDAQLIAAgAiAALQAAIgMgAyABLQAARiIEGzoAAEEBIQAgBEUNAgwDCyAAIAIgAC0AACIDIAMgAS0AAEYiBBs6AABBASEAIARFDQEMAgsgACACIAAtAAAiAyADIAEtAABGIgQbOgAAQQEhACAEDQELIAEgAzoAAEEAIQALIAALFABBAiAAIABBBEYbQQAgAEEDRxsLEQAgACABIAIgA0EAQQAQwEsLxQIBA38jAUEQayIGJAEgBiADOAIMIAYgBkEMaigCACIENgIIAkAgBEEATgR/IAQFIAEgAkYEQCAAQT02AgQgACABNgIADAILIAFBLToAACAGIARB/////wdxNgIIIAYgBkEIaioCADgCDCABQQFqIQEgBigCCAsiBUGAgID8B3FBgICA/AdGBEAjACEHAn8gBUH///8DcSIIRQRAIAdBmqYGaiEFQQMMAQsjACEHAkAgBEEATg0AIAhBgICAAkcNACAHQYSwDWohBUEIDAELIwAiBEG3oQVqIARBw5UNaiAFQYCAgAJxIgQbIQVBA0EJIAQbCyIEIAIgAWtKBEAgAEE9NgIEIAAgAjYCAAwCCyABIAUgBBDOPiEBIABBADYCBCAAIAEgBGo2AgAMAQsgACABIAIgBioCDEEAEMFLCyAGQRBqJAELPwEBfyOzASIFQQA2AgAjhgogACABIAIgAyAEEOIBIAUoAgAhBCAFQQA2AgAgBEEBRwRADwtBABDdARoQ8mEACxEAIAAgASACIANBAEEAEMNLC+ACAgN+AX8jAUEQayIFJAEgBSADOQMIIAUgBUEIaikDACIGNwMAAkAgBkIAWQR+IAYFIAEgAkYEQCAAQT02AgQgACABNgIADAILIAFBLToAACAFIAZC////////////AIM3AwAgBSAFKwMAOQMIIAFBAWohASAFKQMACyIHQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAjACEEAn8gB0L/////////B4MiCFAEQCAEQZqmBmohCUEDDAELIwAhBAJAIAZCAFkNACAIQoCAgICAgIAEUg0AIARBhLANaiEJQQgMAQsjACIEQcOVDWogBEG3oQVqIAdCgICAgICAgASDUCIEGyEJQQlBAyAEGwsiBCACIAFrSgRAIABBPTYCBCAAIAI2AgAMAgsgASAJIAQQzj4hASAAQQA2AgQgACABIARqNgIADAELIAAgASACIAUrAwhBABDESwsgBUEQaiQBCz8BAX8jswEiBUEANgIAI4UKIAAgASACIAMgBBDjASAFKAIAIQQgBUEANgIAIARBAUcEQA8LQQAQ3QEaEPJhAAsWACAAIAEgAiADIAQQ2khBAEEAEMNLCxEAIAAgASACIAMgBEEAEMdLC94CAQN/IwFBEGsiBiQBIAYgAzgCDCAGIAZBDGooAgAiBTYCCAJAIAVBAE4EfyAFBSABIAJGBEAgAEE9NgIEIAAgATYCAAwCCyABQS06AAAgBiAFQf////8HcTYCCCAGIAZBCGoqAgA4AgwgAUEBaiEBIAYoAggLIgdBgICA/AdxQYCAgPwHRgRAIwAhCAJ/IAdB////A3EiBEUEQCAIQZqmBmohB0EDDAELIwAhCAJAIAVBAE4NACAEQYCAgAJHDQAgCEGEsA1qIQdBCAwBCyMAIgVBt6EFaiAFQcOVDWogB0GAgIACcSIFGyEHQQNBCSAFGwsiBSACIAFrSgRAIABBPTYCBCAAIAI2AgAMAgsgASAHIAUQzj4hASAAQQA2AgQgACABIAVqNgIADAELIAYqAgwhAyAEQQRGBEAgACABIAIgAxDISwwBCyAAIAEgAiADIAQQwUsLIAZBEGokAQvpAgEGfyMBQRBrIggkASAIIAM4AgwCQAJAIAhBDGooAgAiBkUEQEE9IQcgAiABa0EESA0BIAFBsOCtgQM2AAAgAUEEaiECQQAhBwwBC0E9IQcgASACRgRAIAEhAgwBCyABQTBBMSAGQYCAgARJIgkbOgAAIAFBAWohBCAGQf///wNxIgUEQCACIARGDQEgAUEuOgABIAVBAXQhBSABQQJqIQRBGCEBA0AgAiAERg0CIAQj0AMgBSABQQRrIgF2ai0AADoAACAEQQFqIQQgBUF/IAF0QX9zcSIFDQALCyACIARrQQJIDQAgBEHwADoAACAEQS1BK0GCfyAGQRd2Qf8AayIBIAkbIgdBAEgiBhs6AAEjswEiBUEANgIAI88DIAAgBEECaiACQQAgB2sgASAGGxDkASAFKAIAIQQgBUEANgIAIARBAUcNAUEAEN0BGhDyYQALIAAgBzYCBCAAIAI2AgALIAhBEGokAQsRACAAIAEgAiADIARBABDKSwv5AgIDfgF/IwFBEGsiBSQBIAUgAzkDCCAFIAVBCGopAwAiBjcDAAJAIAZCAFkEfiAGBSABIAJGBEAgAEE9NgIEIAAgATYCAAwCCyABQS06AAAgBSAGQv///////////wCDNwMAIAUgBSsDADkDCCABQQFqIQEgBSkDAAsiB0KAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIwAhBAJ/IAdC/////////weDIghQBEAgBEGapgZqIQlBAwwBCyMAIQQCQCAGQgBZDQAgCEKAgICAgICABFINACAEQYSwDWohCUEIDAELIwAiBEHDlQ1qIARBt6EFaiAHQoCAgICAgIAEg1AiBBshCUEJQQMgBBsLIgQgAiABa0oEQCAAQT02AgQgACACNgIADAILIAEgCSAEEM4+IQEgAEEANgIEIAAgASAEajYCAAwBCyAFKwMIIQMgBEEERgRAIAAgASACIAMQy0sMAQsgACABIAIgAyAEEMRLCyAFQRBqJAEL7QICBX8CfiMBQRBrIgckASAHIAM5AwgCQAJAIAdBCGopAwAiCVAEQEE9IQUgAiABa0EESA0BIAFBsOCtgQM2AAAgAUEEaiECQQAhBQwBC0E9IQUgASACRgRAIAEhAgwBCyABQTFBMCAJQjSIpyIGGzoAACABQQFqIQQgCUL/////////B4MiCUIAUgRAIAIgBEYNASABQS46AAEgAUECaiEEQTQhAQNAIAIgBEYNAiAEI9ADIAkgAUEEayIBrSIKiKdqLQAAOgAAIARBAWohBCAJQn8gCoZCf4WDIglCAFINAAsLIAIgBGtBAkgNACAEQfAAOgAAIARBLUErIAZB/wdrIgVBgnggBhsiBkEASCIIGzoAASOzASIBQQA2AgAjzwMgACAEQQJqIAJBACAGayAFIAgbEOQBIAEoAgAhBCABQQA2AgAgBEEBRw0BQQAQ3QEaEPJhAAsgACAFNgIEIAAgAjYCAAsgB0EQaiQBCxYAIAAgASACIAMgBBDaSCAFQQAQyksLEQAgACABIAIgAyAEIAUQzksLkgMBA38jAUEQayIGJAEgBiADOAIMIAYgBkEMaigCACIHNgIIAkAgB0EATgR/IAcFIAEgAkYEQCAAQT02AgQgACABNgIADAILIAFBLToAACAGIAdB/////wdxNgIIIAYgBkEIaioCADgCDCABQQFqIQEgBigCCAsiCEGAgID8B3FBgICA/AdGBEAjACEFAn8gCEH///8DcSIERQRAIAVBmqYG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KAIUEO9LNgIIIAAgBEEMaiAEQQhqEPBLIARBIGokAQsLACAAIAEgAhDxSwtQAQJ/IwFBEGsiBCQBIAIgAWshBSABIAJHBEAgAyABIAUQzz4aCyAEIAEgBWo2AgwgBCADIAVqNgIIIAAgBEEMaiAEQQhqEPBLIARBEGokAQsJACAAIAEQ80sLCQAgACABEPRLCwwAIAAgASACEPJLGgsyAQF/IwFBEGsiAyQBIAMgATYCDCADIAI2AgggACADQQxqIANBCGoQ8ksaIANBEGokAQsYACAAIAEoAgA2AgAgACACKAIANgIEIAALCQAgACABEO9LCwoAIAAgASAAa2oLCQAgACABEPlLCxQAIAAoAgAgACgCBCAAKAIIEPpLCwgAIABB9QBqCzEAIAItAAAhAgNAAkAgACABRwR/IAAtAAAgAkcNASAABSABCw8LIABBAWohAAwACwALKQECfyMBQRBrIgIkASACQQ9qIAEgABD3SCEDIAJBEGokASABIAAgAxsLSgEBfyMBQRBrIgMkASADIAI2AgwDQAJAIAAgAUcEQCADQQxqIAAoAgAQ+0tFDQEgACEBCyADQRBqJAEgAQ8LIABBBGohAAwACwALCgAgACgCACABTQs7AQN/IABBEGohASAAKAIIIQIgACgCBCEDIAAoAgBBnAFOBEAgAyACIAEQ/ksPCyADIAIgASkDABD/SwsIACAAQYUGagsrAQF/IwFBEGsiAyQBIAAgASACIANBD2ogA0EOahCATCECIANBEGokASACC0oBAX8jAUEQayIDJAEgAyACNwMIA0ACQCAAIAFHBEAgA0EIaiAAKQMAEIFMRQ0BIAAhAQsgA0EQaiQBIAEPCyAAQQhqIQAMAAsAC2sBAX8jAUEQayIEJAEgACABEIJMIQEDQCABBEAgARCDTCEFIAQgADYCDCAEQQxqIAUQhEwgASAFQX9zaiAFIAMgBCgCDCACEIVMIgUbIQEgBCgCDEEIaiAAIAUbIQAMAQsLIARBEGokASAACwoAIAApAwAgAVgLCQAgACABEIZMCwcAIABBAXYLCQAgACABEIdMCwsAIAAgASACEMRJCwkAIAAgARCITAsJACAAIAEQiUwLCgAgASAAa0EDdQsSACAAIAAoAgAgAUEDdGo2AgALPgICfwF+I7MBIgBBADYCACMCQfYkahDmASECIAAoAgAhASAAQQA2AgAgAUEBRwRAIAIPC0EAEN0BGhDyYQALgAECAn8BfiMBQUBqIgAkAUEAIABBKGoQ3T4EQBD6OygCACMAQZH3CGoQp18ACyAAQRhqIABBKGpBABCESyEBIAAgACgCMEHoB202AgwgACABIABBEGogAEEMakEAEIhLEIxMNwMgIABBOGogAEEgahCNTCkDACECIABBQGskASACC1QCAX8BfiMBQSBrIgIkASACQQhqIABBABCKSykDACEDIAIgASkDADcDACACIAMgAikDAHw3AxAgAkEYaiACQRBqQQAQhEspAwAhAyACQSBqJAEgAwsOACAAIAEpAwA3AwAgAAtsAgJ/AX4jAUEQayIBJAEgACkDACEDI7MBIgJBADYCACABIAM3AwAj+gkgARDnASEDIAIoAgAhACACQQA2AgAgAEEBRwRAIAEgAzcDCCABQQhqKQMAIQMgAUEQaiQBIAMPC0EAEN0BGhDyYQALJAIBfwF+IwFBEGsiASQBIAFBD2ogABCQTCECIAFBEGokASACCzYBAX4jAUEQayIAJAEgACABKQMAQsCEPX83AwAgAEEIaiAAQQAQhEspAwAhAiAAQRBqJAEgAgt4AQR/IwFBIGsiASQBIAEgADcDECOzASECIAEgAUEQakEAEIRLIQMgAkEANgIAI/kJIAFBCGogA0EAENwBIQQgAigCACEDIAJBADYCACADQQFHBEAgAUEYaiAEEI1MKQMAIQAgAUEgaiQBIAAPC0EAEN0BGhDyYQALPgICfwF+I7MBIgBBADYCACMCQfkkahDmASECIAAoAgAhASAAQQA2AgAgAUEBRwRAIAIPC0EAEN0BGhDyYQALawIBfwF+IwFBMGsiACQBQQEgAEEYahDdPgRAEPo7KAIAIwBBtvcIahCnXwALIAAgAEEIaiAAQRhqQQAQhEsgACAAQSBqQQAQiEsQlEw3AxAgAEEoaiAAQRBqEI1MKQMAIQEgAEEwaiQBIAELVAIBfwF+IwFBIGsiAiQBIAJBCGogAEEAEJhLKQMAIQMgAiABKQMANwMAIAIgAyACKQMAfDcDECACQRhqIAJBEGpBABCESykDACEDIAJBIGokASADCzgBAX8jswEiAUEANgIAI/gJIAAQ5QEaIAEoAgAhACABQQA2AgAgAEEBRwRADwtBABDdARoQ8mEACzgBAX8jswEiAUEANgIAI6QEIAAQ5QEaIAEoAgAhACABQQA2AgAgAEEBRwRADwtBABDdARoQ8mEAC6ABAQF/IwAhAgJAAkACfyABLQAERQRAQT8hASACQZb6CGoMAQsgASgCACEBI7MBIgJBADYCACP3CSAAIAEQ3gEhASACKAIAIQAgAkEANgIAIABBAUYNAiMAIQIgAUUNASACQeLtCGoLIQAjswEiAkEANgIAI5UDIAEgABDoASACKAIAIQEgAkEANgIAIAFBAUYNAQALDwtBABDdARoQ8mEACwcAIAAtAAQLiwQBBH8jAUEwayIDJAEgAyACNwMoIwAhBAJAAkACfyABLQAERQRAQT8hASAEQcH6CGoMAQsgAyADQShqKQMANwMgIANCwdKDgIDgi7TZADcDGCOzASEEIANBCGogA0EYakEAEIRLIQUgBEEANgIAI/YJIANBIGogBRDeASEGIAQoAgAhBSAEQQA2AgAgBUEBRg0CIAYEQCADQsHSg4CA4Iu02QA3AxggAyADQQhqIANBGGpBABCESykDADcDIAsjswEiBEEANgIAI/UJIANBIGoQ5wEhAiAEKAIAIQUgBEEANgIAIAVBAUYNAiADIAI3AxgCQCADQRhqKQMAQv///////////wBSBEAgA0EYaikDACECI7MBIgRBADYCACADIAI3Awgj9AkgA0EgaiADQRhqEOkBIQIgBCgCACEFIARBADYCACAFQQFGDQQgAyACNwMAIAMgAykDAD4CEAwBCyADQf+T69wDNgIQIANC////////////ADcDCAsgASgCACEBI7MBIgRBADYCACPzCSAAIAEgA0EIahDcASEBIAQoAgAhBSAEQQA2AgAgBUEBRg0CIwAhBCABRQ0BIAFByQBGDQEgBEG97QhqCyEEI7MBIgNBADYCACOVAyABIAQQ6AEgAygCACEEIANBADYCACAEQQFGDQEACyADQTBqJAEPC0EAEN0BGhDyYQALCQAgASAAEIFLC20BBX8CQBCvXyIEEJxMRQRAI7MBIQJBBBCsWiEDIAJBADYCACPyCSADEOUBIQUgAigCACEGIAJBADYCACAGQQFGDQEgBCAFEJ1MCxCvXxCcTCAAIAEQn0wQxl8PCxDfASEBIAMQ5EYgARDgAQALCgAgACgCABDZQQsNACAAKAIAIAEQoEwaCwcAIAAQ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QQA2AgAjswIgBEEoaiAEQRxqIwBBhq0OahDrASAGKAIAIQcgBkEANgIAIAdBAUYNASOzASIGQQA2AgAjAkGcJWogBEEEaiACIAMQ6wEgBigCACEDIAZBADYCACADQQFGDQIjswEiA0EANgIAI8wDIARBNGogBEEoaiAEQQRqEOsBIAMoAgAhAiADQQA2AgAgAkEBRg0DIARBBGoQp10aIARBKGoQp10aIARBHGoQp10aIAUQp10aIAAoAgwiBUEARyAAKAIIIgBBAEdqDgMHCAkKCxDfASEADAULEN8BIQAMAwsQ3wEhAAwBCxDfASEAIARBBGoQp10aCyAEQShqEKddGgsgBEEcahCnXRoLIAUQp10aDAcLI7MBIgBBADYCACPnAiAEQTRqIAEQ6AEgACgCACEBIABBADYCACABQQFHDQQMBQsjswEiBUEANgIAI+YCIARBNGogACABEOsBIAUoAgAhACAFQQA2AgAgAEEBRg0EDAMLI7MBIgNBADYCACPlAiAEQTRqIAAgBSABEOQBIAMoAgAhACADQQA2AgAgAEEBRg0DDAILAAsgBSABKQIANwIAIARBQGskAQ8LAAsQ3wEhACAEQTRqEKddGgsgABDgAQALCgAgACgCAEEQagvwAgEEfyMBQYABayIEJAEgAEEAEIlNIgVBAToACCAEQfAAaiMAQfuzA2ogAyABEOZMIQcjswEhAyAEQegAahDnTCEAIANBADYCACPiCSAEQRBqIAEgAiAAEO8BIQEgAygCACEGIANBADYCAAJAAn8CQCAGQQFHBEAgABCLHARAI7MBIgNBADYCACMCQYwlaiAHIAAQ6AEgAygCACEGIANBADYCACAGQQFGDQILAkACQCAAEIscDQAgARCLHEUNACOzASIAQQA2AgAj4QkgBEEIahDwASAAKAIAIQMgAEEANgIAIANBAUYNASAFIARBCGoQ6UwaIARBCGoQ6kwaIAUoAgAgAjoAGCAFKAIAIQMjswEiAEEANgIAI50GIAMgARDoASAAKAIAIQMgAEEANgIAIANBAUYNAwsgARCNTRogBEGAAWokASAFDwsQ3wEMAgsQ3wEhBAwCCxDfAQshBCABEI1NGgsgBRDqTBogBBDgAQALCwAgAEIANwIAIAALvQEBA38jAUEQayIEJAEgAEEANgIAIABBBGogARCOTSEFIABB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AiABEKddGgsgAhDgAQALvAEBAn8jAUEgayICJAEgAC0AOSIDQQVNBEACQAJAQQEgA3QiA0EacUUEQCADQSRxDQEgAkEYaiAAIAEQqFsgAkEYaiwAACEADAILQQMhACABRQ0BIAEQ7UwMAQsgAkEYaiAALAA4Qf//AxClTSEDAkAgAUUNACACIAMpAwA3AxAgAkEQahCrTUUEQCACQQhqQSwQrE0gASACKQMINwIADAELIAEQ7UwLIAAtADghAAsgAkEgaiQBIADADwsACxIAIAAgAjYCBCAAIAE6AAAgAAsKACAALAAAQQBHCwoAIAAsAABBA0YLCgAgACwAAEECRgudAQECfyMBQSBrIgIkASAALQA5IgNBBU0EQAJ/QQEgA3RBE3EEQCACQRhqIAAgARCBWyACQRhqLAAADAELIAJBGGogACwAOEH//wMQpU0hAwJAIAFFDQAgAiADKQMANwMQIAJBEGoQq01FBEAgAkEIakEsEKxNIAEgAikDCDcCAAwBCyABEO1MCyAALQA4CyEAIAJBIGokASAAwA8LAAsHACAALAAACzUBAn8jAUEQayIBJAEgASAAKQIANwMIIAFBCGoQpk0EQCAALAAAQX9HIQILIAFBEGokASACCw0AIAAgARCbXxC3TRoLEAAgABDlTCIAQQA6AAggAAsVACAAIAEQ/UwiASACLQAAOgAIIAELpwEBBH8jAUEQayIDJAEgAyAAKAIENgIMIAEoAgQhBCOzASICQQA2AgAgAyAENgIII9gCIANBDGogA0EIahDeASEFIAIoAgAhBCACQQA2AgAgBEEBRwRAAkAgACgCACABKAIAIAUoAgAQuU0iAg0AQQAhAiAAKAIEIAEoAgRGDQBBf0EBIAAoAgQgASgCBEkbIQILIANBEGokASACDwtBABDdARoQ8mEACwcAIAAQ/UQLDAAgACABELtNGiAACy8AIAEQ4U0EQCAAIAEQyk0aIAAPCyAAEMtNBEAgAEEvEMxNGgsgACABEM1NGiAAC1oBA38jAUEQayIBJAEjswEiAkEANgIAI94JIAAgAUEPaiABQQ5qENwBIQAgAigCACEDIAJBADYCACADQQFHBEAgABDtTSABQRBqJAEgAA8LQQAQ3QEaEPJhAAsRACAAIAEoAgAgARDrTRDsTQsSACAAQRBqEPRNGiAAEPVNIAALGQBBAUECIAAoAgAtAAAiAEEDRhtBACAAGwsSACAAIAI2AgQgACABNgIAIAALCQAgACABELpNCxQAIAJFBEBBAA8LIAAgASACEJZCCykBAn8jAUEQayICJAEgAkEPaiABIAAQqUkhAyACQRBqJAEgASAAIAMbCwsAIAAgARC8TSAAC1cBAX8jAUEQayICJAEgABC9TQRAIAAgACgCACAAEL5NEL9NCyAAIAEoAgg2AgggACABKQIANwIAIAFBABDATSACQQA6AA8gASACQQ9qEMFNIAJBEGokAQsKACAALQALQQd2Cw4AIAAoAghB/////wdxCwsAIAAgASACEMJNCyEAIAAgAC0AC0GAAXEgAXI6AAsgACAALQALQf8AcToACwsMACAAIAEtAAA6AAALOQAjswEiAEEANgIAI9cCIAEgAkEBEOsBIAAoAgAhAiAAQQA2AgAgAkEBRwRADwtBABDdARoQ8mEACxkAIAIQxE0EQCAAIAEgAhDFTQ8LIAAQ5EYLBwAgAEEISwsJACAAIAIQx00LBwAgABDkRgsJACAAIAEQs1oLRwEBfyMBQRBrIgIkAQJAIAEQvU1FBEAgACABKAIINgIIIAAgASkCADcCAAwBCyAAIAEoAgAgASgCBBCwXQsgAkEQaiQBIAALBwAgABDhTQtVACAAIAFHBH8gABC9TUUEQCABEL1NRQRAIAAgASgCCDYCCCAAIAEpAgA3AgAgAA8LIAAgARDkTSABEOJNEMZdDwsgACABEORNIAEQ4k0QxV0FIAALCy0BAX8jAUEQayIBJAEgAUEIaiAAEOlaIAFBCGoQ/0whACABQRBqJAEgAEEBcwsLACAAIAEQx10gAAsJACAAIAEQ400LBAAgAAsEACAACwcAIABBC0kLCABB7////wcLBABBfwsEAEF/Cw0AIwBBw4AGahDVTQALVQEDfyOzASEBQQgQ62EhAiABQQA2AgAj3QkgAiAAEN4BIQMgASgCACEAIAFBADYCACAAQQFHBEAgAyOaBiObBhDxAQALEN8BIQEgAhDsYSABEOABAAsZACABIAIQ100hASAAIAI2AgQgACABNgIACwkAIAFBARDeTQsqAQF/QQohASAAQQtPBH8gAEEBahDZTSIAIABBAWsiACAAQQtGGwUgAQsLCgAgAEEPakFwcQsuACAAIAAoAghBgICAgHhxIAFB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIICwkAIAAgATYCBAscAQF/I9wJIQIgACABEJJdIgEgAkEIajYCACABCx4BAn8jmQYhACOYBiEBQQQQ62EQmmIgASAAEPEBAAsXACABEMRNBEAgACABEN9NDwsgABCsWgsJACAAIAEQr1oLBwAgABCsWgstAQF/IwFBEGsiASQBIAFBCGogABDdWyABQQhqEP9MIQAgAUEQaiQBIABBAXMLFQAgABC9TQRAIAAoAgQPCyAAEOVNCxEAIAAgARDkTSABEOJNELtdCxIAIAAQvU0EQCAAKAIADwsgAAsLACAALQALQf8AcQsJACAAIAEQ500LKQECfyMBQRBrIgIkASACQQ9qIAAgARCpSSEDIAJBEGokASABIAAgAxsLGwEBf0EKIQEgABC9TQR/IAAQvk1BAWsFIAELCxkAIAAQvU0EQCAAIAEQ200PCyAAIAEQwE0LBwAgABDtTQsNACAAKAIAIAAoAgRqCwwAIAAgASACEO5NGgsQACAAQgA3AgAgAEEANgIIC4sCAQR/IwFBEGsiBSQBIAAQ4k0hBCAAEOhNIQMCQCABIAIQ700iBkUNAAJAIAAgARDwTUUEQCAGIAMgBGtLBEAgACADIAQgBmogA2sgBCAEQQBBABCrXQsgABDkTSAEaiEDA0AgASACRg0CIAMgARDBTSABQQFqIQEgA0EBaiEDDAALAAsjswEhAyAFIAEgAiAAEPFNIgEQ5E0hAiABEOJNIQQgA0EANgIAI9sJIAAgAiAEENwBGiADKAIAIQIgA0EANgIAIAJBAUcEQCABEKddGgwCCxDfASEDIAEQp10aIAMQ4AEACyAFQQA6AA8gAyAFQQ9qEMFNIAAgBCAGahDpTQsgBUEQaiQBIAALCQAgACABEPJNCx4AIAAQ5E0gAU0EfyAAEORNIAAQ4k1qIAFPBUEACwsdACMBQRBrIgMkASAAIAEgAhDzTSADQRBqJAEgAAsHACABIABrC64BAQN/IwFBEGsiAyQBIAEgAhDvTSIFQe////8HTQRAAkAgBRDQTQRAIAAgBRDATSAAIQQMAQsgA0EIaiAAIAUQ2E1BAWoQ1k0gAygCDBogACADKAIIIgQQ/T0gACADKAIMENpNIAAgBRDbTQsDQCABIAJHBEAgBCABEMFNIARBAWohBCABQQFqIQEMAQsLIANBADoAByAEIANBB2oQwU0gA0EQaiQBDwsgABDUTQALNQIBfwF+IwFBEGsiASQBIAEQ9k0gASkDACECIAAgASkDCDcDCCAAIAI3AwAgAUEQaiQBIAALVQIBfwF+IwFBEGsiASQBIABBADsBKCAAQv//g4Dw/z83AyAgAEJ/NwMAIABCfzcDCCABEPdNIAEpAwAhAiAAIAEpAwg3AxggACACNwMQIAFBEGokAQtQAQJ/IwFBMGsiASQBIAEQ+E0gASABKQMINwMYIAEgASkDADcDECAAIAFBIGogAUEQakEAEPlNIgIpAwg3AwggACACKQMANwMAIAFBMGokAQtOAQJ/IwFBMGsiASQBIAEQ+k0gASABKQMINwMYIAEgASkDADcDECAAIAFBIGogAUEQahD7TSICKQMINwMIIAAgAikDADcDACABQTBqJAELEAAgAEIANwMIIABCADcDAAsYACAAIAEpAwA3AwAgACABKQMINwMIIAALUAECfyMBQTBrIgEkASABEPxNIAEgASkDCDcDGCABIAEpAwA3AxAgACABQSBqIAFBEGpBABD5TSICKQMINwMIIAAgAikDADcDACABQTBqJAELGAAgACABKQMANwMAIAAgASkDCDcDCCAACzMCAX8BfiMBQRBrIgEkASABEP1NIAEpAwAhAiAAIAEpAwg3AwggACACNwMAIAFBEGokAQszAgF/AX4jAUEQayIBJAEgARD+TSABKQMAIQIgACABKQMINwMIIAAgAjcDACABQRBqJAELMwIBfwF+IwFBEGsiASQBIAEQ/00gASkDACECIAAgASkDCDcDCCAAIAI3AwAgAUEQaiQBCxkAIABCgICAgICAgICAfzcDCCAAQgA3AwALBwAgABCzTQsmAQF/IABBBGoQgk4iAUF/RgRAIAAgACgCACgCCBEDAAsgAUF/RgsTACAAIAAoAgBBAWsiADYCACAACykBAX8jAUEQayICJAEgACABNgIEIAAgACABEIlONgIIIAJBEGokASAAC3YBA38jAUEQayIFJAEjlwYhBCAAQQAQik4iACAEQQhqNgIAIAAQhk4aI7MBIQQgABCGTiEGIARBADYCACPaCSAFQQ5qIAYgASACIAMQ8gEgBCgCACEDIARBADYCACADQQFHBEAgBUEQaiQBIAAPCxDfARDgAQALFAEB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AUEQayIDJAEgAyABNgIMIAMgAEEIaiABIAIQiE8QiU8hAQJAA0AgASgCACABKAIERg0BIAAQgk8hBCABKAIAIQUgA0EMaigCACEGI7MBIgJBADYCACPACSAEIAUgBhDrASACKAIAIQQgAkEANgIAIARBAUcEQCABIAEoAgBBBGo2AgAgA0EMahCKTxoMAQsLEN8BIQIgARCLTxogAhDgAQALIAEQi08aIANBEGokAQsKACABIAIQuUsaCxwAIAFBs+bMGUsEQBDdTQALIAFB0ABsQRAQ3k0LCwAgACABIAIQkk8LFgAgACABENNOIgFBBGogAhC8SxogAQsKACAAQQxqEI5PCxkAIAEgAhCUTyEBIAAgAjYCBCAAIAE2AgALFgAgACABELlLIgFBBGogAhCWTxogAQshAQF/IAAoAgAhAiAAIAE2AgAgAgRAIAAQl08gAhCYTwsLDAAgACAAKAIEEJlPC0wBAX8jAUEQayIEJAEgBEEIaiABIAIgAxCMTyAEIAEgBCgCCBDvSzYCBCAEIAMgBCgCDBDvSzYCACAAIARBBGogBBDwSyAEQRBqJAELCQAgACABEI1PCysBAX8gACABKAIANgIAIAEoAgAhAyAAIAE2AgggACADIAJBAnRqNgIEIAALEQAgACAAKAIAQQRqNgIAIAALEQAgACgCCCAAKAIANgIAIAALRAEBfyMBQRBrIgQkASADIAEgAiABayIDEM8+IQEgBCACNgIMIAQgASADajYCCCAAIARBDGogBEEIahDwSyAEQRBqJAELMwEBfyMBQRBrIgIkASACIAE2AgggAiAANgIMIAJBCGogAkEMahCQTyEBIAJBEGokASABCwoAIABBBGooAgALBwAgASgCAAsQACAAKAIAIAEoAgBrQQJ1CwcAQbPmzBkLEAAgAiAAIAEgAhCTTxDvSwsgACAAIAFHBEAgAiABIABrIgFrIgIgACABEM8+GgsgAgscACABQf////8DSwRAEN1NAAsgAUECdEEEEN5NCwgAQf////8DCw4AIAAgASkCADcCACAACwcAIABBBGoLEQAgACgCACABIAAoAgQQ2k4LCQAgACABEJpPC10BA38CQANAIAAoAgggAUYNASAAEIJPIQIgACAAKAIIQQRrIgQ2AggjswEiA0EANgIAI5QGIAIgBBDoASADKAIAIQIgA0EANgIAIAJBAUcNAAtBABDdARoQ8mEACwsxACAAIAEoAgA2AgAgAEEEaiABQQRqEPlMGiAAQRBqIAFBEGoQnE8aIAFBADYCACAACxsAIAAgARD5TCIAQRBqIAFBEGpBMBDOPhogAAs7AQF/AkAgABCeT0EBTQRAIAENASAAEJ5PRQ0BCyAAENlOIAAQn08oAgBBMxDaTiAAEKBPQQEhAgsgAgsKACAAEO1OQTNuCwoAIAAoAghBBGsLDwAgACAAKAIIQQRrEOlOCwgAEPQBQQBKCwUAEPQBCwwAIAAoAgAQ9QEgAAsVACAAIAEoAgAiATYCACABEPYBIAALLQEBfyABKAIAIgIgACgCAEcEQCACEPYBIAAoAgAQ9QEgACABKAIANgIACyAACxcAIAAjkwZBCGo2AgAgAEEEahCnTyAACw0AIAAQtEsQ9wE2AgALGAAgACOTBkEIajYCACAAQQRqEKNPGiAACw0AIAAQqE8aIAAQ5EYLgQEBA38jAUEQayIBJAEgAEEEaiIDIAFBDGpBABDTTiIAEKtPIQIgABCjTxoCQCACRQRAIAFBCGogAxCkTxojswEiAEEANgIAI5IGIAFBCGoQ8AEgACgCACECIABBADYCACACQQFHDQEQ3wEhACABQQhqEKNPGiAAEOABAAsQ8mELAAsNACAAKAIAIAEoAgBGCw4AIAAoAgAQ+AEQ8mEAC5cCAgR/AX4jAUEgayIFJAECQCADvCIGRQRAIARBAUYEQCACIAFrQQRMBEAgAEE9NgIEIAAgAjYCAAwDCyABIwBBy8ULaiIGKAAANgAAIAEgBi0ABDoABCAAQQA2AgQgACABQQVqNgIADAILIAEgAkYEQCAAQT02AgQgACABNgIADAILIAFBMDoAACAAQQA2AgQgACABQQFqNgIADAELIAZBF3YhByAGQf///wNxIQgCQCAEQQJHDQAgBkGAgIDcBEkNACAAIAEgAiAIQYCAgARyIAdBlgFrEK5PDAELIAVBGGogCCAHEK9PIAUgBSkDGCIJNwMQIAUgCTcDCCAAIAEgAiAFQQhqIAQgCCAHELBPCyAFQSBqJAELmAMBBX8jAUEgayIFJAEgBUIANwMYIAVCADcDECADIAR0IQcgBUEQaiAEQTdqQQV2IgZBAWsiCUECdGogBEEfcSIEQQlPBEAgBkECdCAFaiAHNgIIIANBICAEa3YhBwsgBzYCAAJAIAlFDQADQCAFQRBqIAlBAnRqIAdBgJTr3ANuIgQ2AgAgByAEQYCU69wDbGshBiAJIQQDQCAFQRBqIARBAWsiBEECdGoiAyAGrUIghiADKAIAIgathBCxT6ciAzYCACAGIANBgOyUo3xsaiEGIAQNAAsgBSAIQQJ0aiAGNgIAIAhBAWohCCAHQf+T69wDTQRAIAlBAWsiCUUNAgsgBUEQaiAJQQJ0aigCACEHDAALAAtBCiEEQT0hAyAFKAIQIgZB/5Pr3ANNBEAgBhCpTCEECyAAIAQgCEEJbGogAiABa0wEfyAEIAYgARCiTCABIARqIQIDfyAIQQBMBH9BAAUgBSAIQQFrIghBAnRqKAIAIAIQo0wgAkEJaiECDAELCwUgAws2AgQgACACNgIAIAVBIGokAQvsBQEKfyABQQBHIAJBAklyIgxBf3MgAUGAgIAEciABIAIbIgFBAnQiBWohCSABQQFxIQsgBUECciEGIAACfwJAAkACQAJAIAJBmAFrQel+IAIbIgJBAE4EQCAFIAIQrEwiCCAIELxMIAggAmsiCmpBOmoiARCyTyECIAYgCCABELJPIQcgCSAIIAEQsk8hASAIRQRADAILIAdBAWtBCm4gAUEKbk0EQCAFIAhBAWsiBCAEELxMIApqQTlqELJPQQpwIQQLIAhBCU0NAQwCC0EAIAJrIgEgARC+TCIDayEKIAIgA2ohCCAFIAogAyAKELxMa0E9aiIBELNPIQIgBiAKIAEQs08hByAJIAogARCzTyEBAkAgAwRAIAdBAWtBCm4gAUEKbk0EQCAFIApBAWoiBCADIAQQvExrQTxqELNPQQpwIQQLIANBAUsNAQsgByALayEHIAwgC0VxIQZBASEDDAQLQQAhBiADQR5LBEBBACEDDAMLIAUgA0EBaxC0TyEDDAILIAVBBXBFBEBBACEGIAUgCBC1TyEDDAILIAtFBEAgCSAIELVPIQYMAgsgByAGIAgQtU9rIQcLQQAhBgsgAw0AIAYNAEEAIQUDQCAHQQpuIgcgAUEKbiIDTUUEQCAFQQFqIQUgAiACQQpuIglBCmxrIQQgAyEBIAkhAgwBCwsgASACRiAEQf8BcUEES3IMAQtBACEFA0AgB0EKbiIHIAFBCm4iCU1FBEAgBkEAIAFrIAlBdmxGcSEGIAVBAWohBSADIARB/wFxRXEhAyACIAJBCm4iCkEKbGshBCAJIQEgCiECDAELCwJAIAZBAXFFDQADQCABIAFBCm4iB0EKbGsNASAFQQFqIQUgAyAEQf8BcUVxIQMgAiACQQpuIglBCmxrIQQgByEBIAkhAgwACwALIAsgBkEBc3IgASACRnEgA0F/cyAEQf8BcSIBQQVHciACciABQQRLcXILIAJqNgIAIAAgBSAIajYCBAu8BwEGfyMBQRBrIgskASADKAIEIgcgAygCACIDEKlMIglqIQgCQAJAAkACQAJAIAQOBAADAgEDC0F9QX0gCWsgCUEBRiIEGyAHSg0CIAdBBEEFIAQbTA0BDAILIAhBA2pBCUsNAQsCfyAHQQBOBEAgCCADQQFHDQEaIAgjvwkgB2otAABrDAELIAlBAWogCEEASg0AGkECIAdrCyIKIAIgAWtKBEAgAEE9NgIEIAAgAjYCAAwCCyAKIQQCQCAHQQBMDQAgB0EKTQRAIAtBDGogAxDBTBogCSEEI74JIAdBAnRqKAIAIAMgCygCDHZPDQELIAAgASACIAVBgICABHIgBkGWAWsQrk8MAgsgASAEaiECA0AgA0GQzgBJRQRAIAJBBGsiBCPwASIGIANBkM4AbiIFQfCxf2wgA2oiA0HkAG4iDEEBdGovAQA7AAAgAkECayAGIAMgDEHkAGxrQQF0ai8BADsAACAEIQIgBSEDDAELCwJAIANB5ABJBEAgAyEEDAELIAJBAmsiAiPwASADIANB//8DcUHkAG4iBEHkAGxrQf//A3FBAXRqLwEAOwAACwJAIARBCk8EQCACQQJrI/ABIARBAXRqLwEAOwAADAELIAJBAWsgBEEwajoAAAsCQCAHQQBKBEAgASAJakEwIAcQ0D4aDAELIAdFDQAgCEEASgRAIAEgAUEBaiAIEM8+IAhqQS46AAAMAQsgAUGw3AA7AAAgAUECakEwQQAgCGsQ0D4aCyAAQQA2AgQgACABIApqNgIADAELIAkgCUEBS2pBBGoiCiACIAFrTARAIAEgCWohB0EAIQIDQCADQZDOAElFBEAgByACayIEQQNrI/ABIgYgA0GQzgBuIgVB8LF/bCADaiIDQeQAbiIMQQF0ai8BADsAACAEQQFrIAYgAyAMQeQAbGtBAXRqLwEAOwAAIAJBBGohAiAFIQMMAQsLAkAgA0HkAEkEQCADIQIMAQsgAkF/cyAHaiPwASADIANB//8DcUHkAG4iAkHkAGxrQf//A3FBAXRqLwEAOwAACyABAn8gAkEKTwRAIAEj8AEgAkEBdGoiAy0AAToAAiADLQAADAELIAJBMGoLOgAAQQEhAyAJQQJPBH8gAUEuOgABIAlBAWoFIAMLIAFqIgNB5QA6AAAgA0EtQSsgCEEATCICGzoAASADI/ABQQEgCGsgCEEBayACG0EBdGovAQA7AAIgAEEANgIEIAAgASAKajYCAAwBCyAAQT02AgQgACACNgIACyALQRBqJAELFgAgAEIJiELTtO2E+oWuIhC2TEILiAsVACAAI70JIAFBA3RqKQMAIAIQtk8LFQAgACO8CSABQQN0aikDACACELZPCw4AQX8gAXRBf3MgAHFFCwoAIAAQt08gAU8LQwIBfgF/IACtIgMgAUL/////D4N+QiCIpyIAIAFCIIggA34iAadqIgQgAEkgAUIgiKdqQcAAIAJrdCAEIAJBIGt2cgsjAQF/A0AgACAAQQVuIgBBBWxrRQRAIAFBAWohAQwBCwsgAQsHACAAEJ5iCw0AIAAQnmIaIAAQ5EYLCQAjAEHytgVqCwkAIwBBi/YGagstACMAIQEgACACQQRLBH8gAUGhug5qBSMAQcSV5AFqIAJBAnRqKAIACxDyTBoLJgAjAEG0nPABai0AAEUEQCMAQbSc8AFqQQE6AAALIwBBzJTkAWoLhgEBA38jAUEQayICJAEgAkEEaiABEJ9fI7MBIgNBADYCACO7CSAAIAJBBGoQ3gEhACADKAIAIQQgA0EANgIAIARBAUcEQCORBiEDIAJBBGoQp10aIAAgA0EIajYCACAAIAEpAgA3AgggAkEQaiQBIAAPCxDfASEAIAJBBGoQp10aIAAQ4AEACwcAIAAQnGILDQAgABCcYhogABDkRgsPACAAIAAoAgAoAgQRAwALgwEBAn8jAUEQayIBJAEgAUEIaiAAQQxqEMNPIQICQCAAEMRPBEAjswEiAEEANgIAI5QDQQIQ8AEgACgCACEBIABBADYCACABQQFHDQEQ3wEhACACEMZPGiAAEOABAAsgACAAKAJUQQVyNgJUIABBJGoQlkwgAhDGTxogAUEQaiQBDwsACxcAIABBAToABCAAIAE2AgAgARCUWiAAC0IBAn8jAUEQayIBJAFBASECIAAtAFRBAXFFBEAgAEEIaiABQQxqQQAQ004iABDHTyECIAAQo08aCyABQRBqJAEgAgtvAQJ/IwFBEGsiASQBQRAQ62EhAiABQQhqIAAQyE8jswEiAEEANgIAIAEgASkCCDcDACOQBiACIAEQ3gEaIAAoAgAhASAAQQA2AgAgAUEBRwRAIAIjnwQjoAQQ8QEACxDfASEBIAIQ7GEgARDgAQALFAAgAC0ABARAIAAoAgAQlloLIAALDAAgACABEKtPQQFzCxYAEL1PGiAAIAEjAEHMlOQBahC3TRoL+QEBBX8jAUEQayIEJAEgBEEIaiAAQQxqEMNPIQUCQAJAIAAQxE8EQCOzASIAQQA2AgAjlANBAhDwASAAKAIAIQEgAEEANgIAIAFBAUcNAQwCCyAAIAAoAlRBAXI2AlQjswEiAUEANgIAI48GEOEBIQIgASgCACEDIAFBADYCACADQQFGDQEjswEiAUEANgIAI44GIAIQ5QEhAiABKAIAIQMgAUEANgIAIANBAUYNASOzASIBQQA2AgAjjQYgAiAAEOgBIAEoAgAhACABQQA2AgAgAEEBRg0BIAUQxk8aIARBEGokAQ8LAAsQ3wEhACAFEMZPGiAAEOABAAuOAQECfyMBQRBrIgIkASACQQhqIABBDGoQw08hAwJAIAAQxE8EQCOzASIAQQA2AgAjlANBAhDwASAAKAIAIQIgAEEANgIAIAJBAUcNARDfASEAIAMQxk8aIAAQ4AEACyAAQQhqIAEQpU8aIAAgACgCVEEEcjYCVCAAQSRqEJZMIAMQxk8aIAJBEGokAQ8LAAv3AQEEfyMBQRBrIgQkASAEQQhqIABBDGoQw08hBQJAAkAgABDETwRAI7MBIgBBADYCACOUA0ECEPABIAAoAgAhASAAQQA2AgAgAUEBRw0BDAILIABBCGogARClTxojswEiAUEANgIAI48GEOEBIQIgASgCACEDIAFBADYCACADQQFGDQEjswEiAUEANgIAI44GIAIQ5QEhAiABKAIAIQMgAUEANgIAIANBAUYNASOzASIBQQA2AgAjjQYgAiAAEOgBIAEoAgAhACABQQA2AgAgAEEBRg0BIAUQxk8aIARBEGokAQ8LAAsQ3wEhACAFEMZPGiAAEOABAAs+AQJ/IwFBEGsiASQBIAFBCGogAEEMahDDTyECIAAgACgCVEEEcjYCVCAAQSRqEJZMIAIQxk8aIAFBEGokAQvPAQEEfyMBQRBrIgIkASOzASEBIAJBCGogAEEMahDDTyEDIAFBADYCACOMBiAAIAMQ6AEgASgCACEEIAFBADYCAAJAAkAgBEEBRwRAIABBCGoiBCACQQRqQQAQ004iARDHTyEAIAEQo08aIAAEQCOzASEBIAIgBBCkTyEAIAFBADYCACOSBiAAEPABIAEoAgAhAiABQQA2AgAgAkEBRw0DEN8BIQEgABCjTxoMAgsgAxDGTxogAkEQaiQBDwsQ3wEhAQsgAxDGTxogARDgAQsAC1MBAX8CQCAAEM9PDQAgACgCVCICQQhxRQRAIABBJGohAgNAIAAQz08NAiACIAEQl0wMAAsACyAAIAJBd3E2AlQgARDQTyAAIAAoAgAoAgwRAwALCw0AIAAtAFRBBHFBAnYLJwAgAC0ABEUEQEE/IwBBjvsIahCnXwALIAAoAgAQllogAEEAOgAEC2cBA38jAUEQayIDJAEjswEhASADQQhqIABBDGoQw08hAiABQQA2AgAjjAYgACACEOgBIAEoAgAhACABQQA2AgAgAEEBRwRAIAIQxk8aIANBEGokAQ8LEN8BIQEgAhDGTxogARDgAQALCABBAxDFTwALEAAgACABNgIAIAEQ1E8gAAuDAQECfyMBQRBrIgEkASABQQxqIABBDGoQzEwhAgJAIAAtAFRBAnEEQCOzASIAQQA2AgAjlANBARDwASAAKAIAIQEgAEEANgIAIAFBAUcNARDfASEAIAIQzkwaIAAQ4AEACyAAENVPIAAgACgCVEECcjYCVCACEM5MGiABQRBqJAEPCwALCwAgAEEEahDoTxoLFgEBfyAAKAIAIgEEQCABEIFOGgsgAAtxAQN/IwFBEGsiAiQBIAJBDGogACgCABDYTyEDIAAoAgAhASAAQQA2AgAjswEiAEEANgIAI7oJIAEQ8AEgACgCACEBIABBADYCACABQQFHBEAgAxDZTxogAkEQaiQBDwsQ3wEhACADENlPGiAAEOABAAtcAQJ/IwFBEGsiAiQBI7MBIgNBADYCACACIAE2AgwjuQkgACACQQxqIAJBC2oQ3AEhACADKAIAIQEgA0EANgIAIAFBAUcEQCACQRBqJAEgAA8LQQAQ3QEaEPJhAAsLACAAQQAQ2k8gAAseAQF/IAAoAgAhAiAAIAE2AgAgAgRAIAAgAhDrTwsLEgAgAEHYABCsWhDcTzYCACAACz4BAX8jiwYhASAAQQAQj04iACABQQhqNgIAIABBCGoQtEsaIABBDGoQyUwaIABBJGoQ3U8aIABBADYCVCAACwsAIABBAEEwENA+C+QBAQR/IwFBMGsiASQBAkAgACgCACICBEACQCACEMRPDQAgACgCABDfT0ECSA0AIAAoAgAhBCABQRRqQQQQyE8jswEiAkEANgIAIAEgASkCFDcDCCOQBiABQRxqIAFBCGoQ3gEaIAIoAgAhAyACQQA2AgAgA0EBRg0CIAFBLGogAUEcahDgTyOzASICQQA2AgAjigYgBCABQSxqEOgBIAIoAgAhAyACQQA2AgAgA0EBRg0CIAFBLGoQo08aIAFBHGoQnGIaCyAAKAIAEIFOGgsgAUEwaiQBIAAPC0EAEN0BGhDyYQALDQAgAEEEaigCAEEBagt+AQF/I7MBIQJBEBDrYSABEOFPIQEgAkEANgIAIxogASOfBCOgBBDrASACKAIAIQEgAkEANgIAAkAgAUEBRgRAQQAQ3QEQ7AEaIAAQp08jswEiAkEANgIAIwMQ6gEgAigCACEBIAJBADYCACABQQFHDQFBABDdARoQ8mELAAsLJgEBfyORBiECIAAgARCTXSIAIAJBCGo2AgAgACABKQIINwIIIAALGwAgASgCACIBRQRAQQMQxU8ACyAAIAEQ008aCxgAIAAoAgAiAEUEQEEDEMVPAAsgABDCTwt1AQJ/IwFBEGsiAyQBAkAgACgCACICBEAjswEhACADQQxqIAEQpE8hASAAQQA2AgAjigYgAiABEOgBIAAoAgAhAiAAQQA2AgAgAkEBRw0BEN8BIQAgARCjTxogABDgAQALQQMQxU8ACyABEKNPGiADQRBqJAELGAAgACgCACIARQRAQQMQxU8ACyAAEMlPC3UBAn8jAUEQayIDJAECQCAAKAIAIgIEQCOzASEAIANBDGogARCkTyEBIABBADYCACO4CSACIAEQ6AEgACgCACECIABBADYCACACQQFHDQEQ3wEhACABEKNPGiAAEOABAAtBAxDFTwALIAEQo08aIANBEGokAQsvAQF/IAEoAgAiAgRAIAIQ1U8LIAAoAgAiAgRAIAIQgU4aCyAAIAEoAgA2AgAgAAsTACAAIAAoAgBBAWoiADYCACAACyoAIAAjiwZBCGo2AgAgAEEkahChTBogAEEMahCqWhogAEEIahCjTxogAAsKACAAEOlPEORGCwgAIAEQgU4aC70MAQZ/IwFBEGsiBCQBIAQgADYCDAJAIABB0wFNBEAjAEHgsqYBaiIAIABBwAFqIARBDGoQ7U8oAgAhAgwBCyAAEO5PIAQgACAAQdIBbiIGQdIBbCICazYCCCMAQaC0pgFqIgAgAEHAAWogBEEIahDtTyAAa0ECdSEFA0AjAEGgtKYBaiAFQQJ0aigCACACaiECQQUhAANAAkAgAEEvRgRAQdMBIQADQCACIABuIgEgAEkNBSACIAAgAWxGDQIgAiAAQQpqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQQxqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQRBqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQRJqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQRZqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQRxqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQR5qIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQSRqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQShqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQSpqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQS5qIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQTRqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQTpqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQTxqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQcIAaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEHGAGoiAW4iAyABSQ0FIAIgASADbEYNAiACIABByABqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQc4AaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEHSAGoiAW4iAyABSQ0FIAIgASADbEYNAiACIABB2ABqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQeAAaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEHkAGoiAW4iAyABSQ0FIAIgASADbEYNAiACIABB5gBqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQeoAaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEHsAGoiAW4iAyABSQ0FIAIgASADbEYNAiACIABB8ABqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQfgAaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEH+AGoiAW4iAyABSQ0FIAIgASADbEYNAiACIABBggFqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQYgBaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEGKAWoiAW4iAyABSQ0FIAIgASADbEYNAiACIABBjgFqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQZQBaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEGWAWoiAW4iAyABSQ0FIAIgASADbEYNAiACIABBnAFqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQaIBaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEGmAWoiAW4iAyABSQ0FIAIgASADbEYNAiACIABBqAFqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQawBaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEGyAWoiAW4iAyABSQ0FIAIgASADbEYNAiACIABBtAFqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQboBaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEG+AWoiAW4iAyABSQ0FIAIgASADbEYNAiACIABBwAFqIgFuIgMgAUkNBSACIAEgA2xGDQIgAiAAQcQBaiIBbiIDIAFJDQUgAiABIANsRg0CIAIgAEHGAWoiAW4iAyABSQ0FIAIgASADbEYNAiACIABB0AFqIgFuIgMgAUkNBSAAQdIBaiEAIAIgASADbEcNAAsMAQsgAiMAQeCypgFqIABBAnRqKAIAIgFuIgMgAUkNAyAAQQFqIQAgAiABIANsRw0BCwtBACAFQQFqIgAgAEEwRiIAGyEFIAAgBmoiBkHSAWwhAgwACwALIARBEGokASACCwsAIAAgASACEO9PCxQAIABBfE8EQCMAQdArahDwTwALCysBAX8jAUEQayIDJAEgACABIAIgA0EPaiADQQ5qEPFPIQIgA0EQaiQBIAILVQEDfyOzASEBQQgQ62EhAiABQQA2AgAjtwkgAiAAEN4BIQMgASgCACEAIAFBADYCACAAQQFHBEAgAyOIBiOJBhDxAQALEN8BIQEgAhDsYSABEOABAAtrAQF/IwFBEGsiBCQBIAAgARDyTyEBA0AgAQRAIAEQg0whBSAEIAA2AgwgBEEMaiAFEPNPIAEgBUF/c2ogBSADIAQoAgwgAhD0TyIFGyEBIAQoAgxBBGogACAFGyEADAELCyAEQRBqJAEgAAsJACAAIAEQ9U8LCQAgACABEPZPCwsAIAAgASACEKlJCwkAIAAgARD3TwsJACAAIAEQ+E8LCgAgASAAa0ECdQsSACAAIAAoAgAgAUECdGo2AgALHAEBfyO2CSECIAAgARCaXSIBIAJBCGo2AgAgAQsHACAAEOBSCw0AIAAQ4FIaIAAQ5EYLPwAgACABRwRAIABBABDVUiAAIAEQ5FIgACABKAJINgJIIAAgASgCTDYCTCAAQQIQ1VIgACABKAIUEP5PCyAACwcAIAAoAhQLCQAgACABEP9PCxMAIAAgATYCFCAAIAAoAhAQ3VILGAAgACOeBEEIajYCACAAQQRqEOtWGiAACw0AIAAQgFAaIAAQ5EYLLQAgACOeBEEIajYCACAAQQRqEOlWGiAAQgA3AhggAEIANwIQIABCADcCCCAAC1kAIAAjngRBCGo2AgAgAEEEaiABQQRqEOpWGiAAIAEoAgg2AgggACABKAIMNgIMIAAgASgCEDYCECAAIAEoAhQ2AhQgACABKAIYNgIYIAAgASgCHDYCHCAAC04AIABBBGogAUEEahDsVhogACABKAIINgIIIAAgASgCDDYCDCAAIAEoAhA2AhAgACABKAIUNgIUIAAgASgCGDYCGCAAIAEoAhw2AhwgAAtdACAAQQRqIAFBBGoQhlAgAEEIaiABQQhqEIxKIABBDGogAUEMahCMSiAAQRBqIAFBEGoQjEogAEEUaiABQRRqEIxKIABBGGogAUEYahCMSiAAQRxqIAFBHGoQjEoLNgECfyMBQRBrIgIkASACQQxqIAAQ6lYhAyAAIAEQ7FYaIAEgAxDsVhogAxDrVhogAkEQaiQBCwoAIABCfxCIUBoLEgAgACABNwMIIABCADcDACAACwoAIABCfxCIUBoLuQEBBH8jAUEQayIEJAEDQAJAIAIgBUwNAAJAIAAoAgwiAyAAKAIQIgZJBEAgBEH/////BzYCDCAEIAYgA2s2AgggBCACIAVrNgIEIARBDGogBEEIaiAEQQRqEPVLEPVLIQMgASAAKAIMIAMoAgAiAxCLUBogACADEIxQDAELIAAgACgCACgCKBEBACIDQX9GDQEgASADwDoAAEEBIQMLIAEgA2ohASADIAVqIQUMAQsLIARBEGokASAFCz4BAX8jswEiA0EANgIAI7UJIAEgAiAAENwBGiADKAIAIQIgA0EANgIAIAJBAUcEQCAADwtBABDdARoQ8mEACw8AIAAgACgCDCABajYCDAsFACAAwAsvACAAIAAoAgAoAiQRAQBBf0YEQEF/DwsgACAAKAIMIgBBAWo2AgwgACwAABCPUAsIACAAQf8BcQuzAQEEfyMBQRBrIgUkAQNAAkAgAiAETA0AIAAoAhgiAyAAKAIcIgZPBEAgACABLAAAEI9QIAAoAgAoAjQRAABBf0YNASAEQQFqIQQgAUEBaiEBDAIFIAUgBiADazYCDCAFIAIgBGs2AgggBUEMaiAFQQhqEPVLIQMgACgCGCABIAMoAgAiAxCLUBogACADIAAoAhhqNgIYIAMgBGohBCABIANqIQEMAgsACwsgBUEQaiQBIAQLDQAgAEEIahDgUhogAAsTACAAIAAoAgBBDGsoAgBqEJFQCwoAIAAQkVAQ5EYLEwAgACAAKAIAQQxrKAIAahCTUAvfAgEDfyMBQRBrIgQkASAAQQA6AAAgASABKAIAQQxrKAIAahCgUCEDIAEgASgCAEEMaygCAGohBQJAAkAgAwRAIAUoAkgEQCABIAEoAgBBDGsoAgBqKAJIEJhQGgsCQCACDQAgASABKAIAQQxrKAIAaigCBEGAIHFFDQAgBEEMaiABIAEoAgBBDGsoAgBqENdSI7MBIgNBADYCACOXAiAEQQxqEOUBIQIgAygCACEFIANBADYCACAFQQFGDQMgBEEMahDrVhogBEEIaiABEJpQIQMgBEEEahC0SyEFA0ACQCADIAUQm1ANACACQQEgAxCcUBCdUEUNACADEJ5QGgwBCwsgAyAFEJtQRQ0AIAEgASgCAEEMaygCAGpBBhCfUAsgACABIAEoAgBBDGsoAgBqEKBQOgAADAELIAVBBBCfUAsgBEEQaiQBIAAPCxDfASEBIARBDGoQ61YaIAEQ4AEACwcAIAAQoFALBwAgACgCSAvrAwEEfyMBQRBrIgMkASAAKAIAQQxrKAIAIQIjswEiAUEANgIAI+sBIAAgAmoQ5QEhBCABKAIAIQIgAUEANgIAAkACQAJAAkACQCACQQFHBEAgBEUNBCOzASIBQQA2AgAjnQIgA0EIaiAAEN4BGiABKAIAIQIgAUEANgIAIAJBAUYNAiADQQhqLQAARQ0BIAAoAgBBDGsoAgAhAiOzASIBQQA2AgAj6wEgACACahDlASEEIAEoAgAhAiABQQA2AgACQCACQQFGDQAjswEiAUEANgIAI50EIAQQ5QEhBCABKAIAIQIgAUEANgIAIAJBAUYNACAEQX9HDQIgACgCAEEMaygCACECI7MBIgFBADYCACOSAiAAIAJqQQEQ6AEgASgCACECIAFBADYCACACQQFHDQILQQAQ3QEhASADQQhqEO9QGgwDC0EAEN0BIQEMAgsgA0EIahDvUBoMAgtBABDdASEBCyABEOwBGiAAKAIAQQxrKAIAIQIjswEiAUEANgIAI+0BIAAgAmoQ8AEgASgCACECIAFBADYCACACQQFGDQEQ7gELIANBEGokASAADwsjswEhABDfASEDIABBADYCACMDEOoBIAAoAgAhASAAQQA2AgAgAUEBRwRAIAMQ4AEAC0EAEN0BGhDyYQALCgAgACOcBBCrUwtSAQJ/IAEoAgBBDGsoAgAhAiOzASIDQQA2AgAj6wEgASACahDlASECIAMoAgAhASADQQA2AgAgAUEBRwRAIAAgAjYCACAADwtBABDdARoQ8mEACwkAIAAgARCiUAsLACAAKAIAEKNQwAsnAQF/IAJBAE4EfyAAKAIIIAJB/wFxQQJ0aigCACABcUEARwUgAwsLDQAgACgCABCkUBogAAsJACAAIAEQpVALCAAgACgCEEULDwAgACAAKAIAKAIYEQEACxAAIAAQy1IgARDLUnNBAXMLKgEBfyAAKAIMIgEgACgCEEYEQCAAIAAoAgAoAiQRAQAPCyABLAAAEI9QCzQBAX8gACgCDCIBIAAoAhBGBEAgACAAKAIAKAIoEQEADwsgACABQQFqNgIMIAEsAAAQj1ALDwAgACAAKAIQIAFyEN1SC6QFAQR/IwFBEGsiBSQBIABBADYCBCAFQQ9qIABBARCVUBogBUEPai0AAARAAkAgAUUEQEEEIQIMAQsCQANAAkAgACgCAEEMaygCACEDI7MBIgJBADYCACPrASAAIANqEOUBIQQgAigCACEDIAJBADYCACADQQFGDQAjswEiAkEANgIAI5MDIAQQ5QEhAyACKAIAIQQgAkEANgIAIARBAUYNACADQX8Q2BAEQEECIQIMAwsjswEiAkEANgIAI4cGIAEgA8AQ3gEhBCACKAIAIQMgAkEANgIAIANBAUYNACAEQX8Q2BAEQEEAIQIMAwsgACAAKAIEQQFqNgIEIAAoAgBBDGsoAgAhAyOzASICQQA2AgAj6wEgACADahDlASEEIAIoAgAhAyACQQA2AgAgA0EBRg0AI7MBIgJBADYCACPWAiAEEOUBGiACKAIAIQMgAkEANgIAIANBAUcNAQsLQQAQ3QEQ7AEaIAAgACgCAEEMaygCAGpBAUEFIAAoAgQbIgIQqFAgACgCAEEMaygCACEEI7MBIgNBADYCACPvASAAIARqEOUBIQEgAygCACEEIANBADYCAAJAAkACQAJAIARBAUYNACABQQRxRQRAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj7wEgACAEahDlASEBIAMoAgAhBCADQQA2AgAgBEEBRg0BIAFBAXFFDQILI7MBIgBBADYCACMEEOoBIAAoAgAhAiAAQQA2AgAgAkEBRw0DCyOzASEAEN8BIQMgAEEANgIAIwMQ6gEgACgCACECIABBADYCACACQQFGDQEgAxDgAQALEO4BDAMLQQAQ3QEaEPJhCwALIAIgAkEEciAAKAIEGyECCyAAIAAoAgBBDGsoAgBqIAIQn1ALIAVBEGokASAACz0BAX8gACgCGCICIAAoAhxGBEAgACABEI9QIAAoAgAoAjQRAAAPCyAAIAJBAWo2AhggAiABOgAAIAEQj1ALFgAgACAAKAIYRSAAKAIQIAFycjYCEAsJACAAIAEQqlALoAQBBn8jAUEgayICJAEgAkEANgIcIAJBG2ogAEEAEJVQGgJAAkAgAkEbai0AAARAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj2AEgAkEUaiAAIARqEOgBIAMoAgAhBCADQQA2AgACQAJAAkAgBEEBRwRAI7MBIgNBADYCACOuAiACQRRqEOUBIQUgAygCACEEIANBADYCACAEQQFGDQEgAkEQaiAAEJpQIQMgAkEMahC0SyEEIAAoAgBBDGsoAgAhBiAEKAIAIQQgAygCACEHI7MBIgNBADYCACO0CSAFIAcgBCAAIAZqIAJBHGogARD5ARogAygCACEBIANBADYCACABQQFGDQEgAkEUahDrVhoMAwtBABDdASEDDAELQQAQ3QEhAyACQRRqEOtWGgsgAxDsARogAiACKAIcQQFyIgM2AhwgACAAKAIAQQxrKAIAaiADEKhQIAAoAgBBDGsoAgAhASOzASIDQQA2AgAj7wEgACABahDlASEEIAMoAgAhASADQQA2AgACQCABQQFHBEAgBEEBcUUNASOzASICQQA2AgAjBBDqASACKAIAIQAgAkEANgIAIABBAUcNBQsjswEhAhDfASEDIAJBADYCACMDEOoBIAIoAgAhACACQQA2AgAgAEEBRg0DIAMQ4AEACxDuAQsgACAAKAIAQQxrKAIAaiACKAIcEJ9QCyACQSBqJAEgAA8LQQAQ3QEaEPJhCwALCgAgACObBBCrUwsZACAAIAEgAiADIAQgBSAAKAIAKAIMEQoACwkAIAAgARCuUAvzBAEGfyMBQSBrIgIkASACQQA2AhwgAkEbaiAAQQAQlVAaAkACQCACLQAbBEAgACgCAEEMaygCACEEI7MBIgNBADYCACPYASACQRBqIAAgBGoQ6AEgAygCACEEIANBADYCAAJAAkACfwJAAkACQCAEQQFHBEAjswEiA0EANgIAI64CIAJBEGoQ5QEhBSADKAIAIQQgA0EANgIAIARBAUYNASACQQxqIAAQmlAhAyACQQhqELRLIQQgACgCAEEMaygCACEGIAQoAgAhBCADKAIAIQcjswEiA0EANgIAI5oEIAUgByAEIAAgBmogAkEcaiACQRRqEPkBGiADKAIAIQQgA0EANgIAIARBAUYNASACQRBqEOtWGiACKAIUQYCAfk4NAyACIAIoAhxBBHI2AhxBgIB+DAQLQQAQ3QEhAwwBC0EAEN0BIQMgAkEQahDrVhoLIAMQ7AEaIAIgAigCHEEBciIDNgIcIAAgACgCAEEMaygCAGogAxCoUCAAKAIAQQxrKAIAIQEjswEiA0EANgIAI+8BIAAgAWoQ5QEhBCADKAIAIQEgA0EANgIAIAFBAUcEQCAEQQFxRQ0DI7MBIgJBADYCACMEEOoBIAIoAgAhACACQQA2AgAgAEEBRw0HCyOzASECEN8BIQMgAkEANgIAIwMQ6gEgAigCACEAIAJBADYCACAAQQFGDQUgAxDgAQALIAIoAhRB//8BSgRAIAIgAigCHEEEcjYCHEH//wEMAQsgAigCFAshAyABIAM7AQAMAQsQ7gELIAAgACgCAEEMaygCAGogAigCHBCfUAsgAkEgaiQBIAAPC0EAEN0BGhDyYQsACxkAIAAgASACIAMgBCAFIAAoAgAoAhARCgALBgBBgIB+CwYAQf//AQsJACAAIAEQs1ALoAQBBn8jAUEgayICJAEgAkEANgIcIAJBG2ogAEEAEJVQGgJAAkAgAkEbai0AAARAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj2AEgAkEUaiAAIARqEOgBIAMoAgAhBCADQQA2AgACQAJAAkAgBEEBRwRAI7MBIgNBADYCACOuAiACQRRqEOUBIQUgAygCACEEIANBADYCACAEQQFGDQEgAkEQaiAAEJpQIQMgAkEMahC0SyEEIAAoAgBBDGsoAgAhBiAEKAIAIQQgAygCACEHI7MBIgNBADYCACOzCSAFIAcgBCAAIAZqIAJBHGogARD5ARogAygCACEBIANBADYCACABQQFGDQEgAkEUahDrVhoMAwtBABDdASEDDAELQQAQ3QEhAyACQRRqEOtWGgsgAxDsARogAiACKAIcQQFyIgM2AhwgACAAKAIAQQxrKAIAaiADEKhQIAAoAgBBDGsoAgAhASOzASIDQQA2AgAj7wEgACABahDlASEEIAMoAgAhASADQQA2AgACQCABQQFHBEAgBEEBcUUNASOzASICQQA2AgAjBBDqASACKAIAIQAgAkEANgIAIABBAUcNBQsjswEhAhDfASEDIAJBADYCACMDEOoBIAIoAgAhACACQQA2AgAgAEEBRg0DIAMQ4AEACxDuAQsgACAAKAIAQQxrKAIAaiACKAIcEJ9QCyACQSBqJAEgAA8LQQAQ3QEaEPJhCwALGQAgACABIAIgAyAEIAUgACgCACgCGBEKAAsJACAAIAEQtlAL+wQBBn8jAUEgayICJAEgAkEANgIcIAJBG2ogAEEAEJVQGgJAAkAgAi0AGwRAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj2AEgAkEQaiAAIARqEOgBIAMoAgAhBCADQQA2AgACQAJAAn8CQAJAAkAgBEEBRwRAI7MBIgNBADYCACOuAiACQRBqEOUBIQUgAygCACEEIANBADYCACAEQQFGDQEgAkEMaiAAEJpQIQMgAkEIahC0SyEEIAAoAgBBDGsoAgAhBiAEKAIAIQQgAygCACEHI7MBIgNBADYCACOaBCAFIAcgBCAAIAZqIAJBHGogAkEUahD5ARogAygCACEEIANBADYCACAEQQFGDQEgAkEQahDrVhogAigCFEGAgICAeE4NAyACIAIoAhxBBHI2AhxBgICAgHgMBAtBABDdASEDDAELQQAQ3QEhAyACQRBqEOtWGgsgAxDsARogAiACKAIcQQFyIgM2AhwgACAAKAIAQQxrKAIAaiADEKhQIAAoAgBBDGsoAgAhASOzASIDQQA2AgAj7wEgACABahDlASEEIAMoAgAhASADQQA2AgAgAUEBRwRAIARBAXFFDQMjswEiAkEANgIAIwQQ6gEgAigCACEAIAJBADYCACAAQQFHDQcLI7MBIQIQ3wEhAyACQQA2AgAjAxDqASACKAIAIQAgAkEANgIAIABBAUYNBSADEOABAAsgAigCFEH/////B0oEQCACIAIoAhxBBHI2AhxB/////wcMAQsgAigCFAshAyABIAM2AgAMAQsQ7gELIAAgACgCAEEMaygCAGogAigCHBCfUAsgAkEgaiQBIAAPC0EAEN0BGhDyYQsACwgAQYCAgIB4CwgAQf////8HCwkAIAAgARC6UAugBAEGfyMBQSBrIgIkASACQQA2AhwgAkEbaiAAQQAQlVAaAkACQCACQRtqLQAABEAgACgCAEEMaygCACEEI7MBIgNBADYCACPYASACQRRqIAAgBGoQ6AEgAygCACEEIANBADYCAAJAAkACQCAEQQFHBEAjswEiA0EANgIAI64CIAJBFGoQ5QEhBSADKAIAIQQgA0EANgIAIARBAUYNASACQRBqIAAQmlAhAyACQQxqELRLIQQgACgCAEEMaygCACEGIAQoAgAhBCADKAIAIQcjswEiA0EANgIAI7IJIAUgByAEIAAgBmogAkEcaiABEPkBGiADKAIAIQEgA0EANgIAIAFBAUYNASACQRRqEOtWGgwDC0EAEN0BIQMMAQtBABDdASEDIAJBFGoQ61YaCyADEOwBGiACIAIoAhxBAXIiAzYCHCAAIAAoAgBBDGsoAgBqIAMQqFAgACgCAEEMaygCACEBI7MBIgNBADYCACPvASAAIAFqEOUBIQQgAygCACEBIANBADYCAAJAIAFBAUcEQCAEQQFxRQ0BI7MBIgJBADYCACMEEOoBIAIoAgAhACACQQA2AgAgAEEBRw0FCyOzASECEN8BIQMgAkEANgIAIwMQ6gEgAigCACEAIAJBADYCACAAQQFGDQMgAxDgAQALEO4BCyAAIAAoAgBBDGsoAgBqIAIoAhwQn1ALIAJBIGokASAADwtBABDdARoQ8mELAAsZACAAIAEgAiADIAQgBSAAKAIAKAIcEQoACwkAIAAgARC9UAugBAEGfyMBQSBrIgIkASACQQA2AhwgAkEbaiAAQQAQlVAaAkACQCACQRtqLQAABEAgACgCAEEMaygCACEEI7MBIgNBADYCACPYASACQRRqIAAgBGoQ6AEgAygCACEEIANBADYCAAJAAkACQCAEQQFHBEAjswEiA0EANgIAI64CIAJBFGoQ5QEhBSADKAIAIQQgA0EANgIAIARBAUYNASACQRBqIAAQmlAhAyACQQxqELRLIQQgACgCAEEMaygCACEGIAQoAgAhBCADKAIAIQcjswEiA0EANgIAI5oEIAUgByAEIAAgBmogAkEcaiABEPkBGiADKAIAIQEgA0EANgIAIAFBAUYNASACQRRqEOtWGgwDC0EAEN0BIQMMAQtBABDdASEDIAJBFGoQ61YaCyADEOwBGiACIAIoAhxBAXIiAzYCHCAAIAAoAgBBDGsoAgBqIAMQqFAgACgCAEEMaygCACEBI7MBIgNBADYCACPvASAAIAFqEOUBIQQgAygCACEBIANBADYCAAJAIAFBAUcEQCAEQQFxRQ0BI7MBIgJBADYCACMEEOoBIAIoAgAhACACQQA2AgAgAEEBRw0FCyOzASECEN8BIQMgAkEANgIAIwMQ6gEgAigCACEAIAJBADYCACAAQQFGDQMgAxDgAQALEO4BCyAAIAAoAgBBDGsoAgBqIAIoAhwQn1ALIAJBIGokASAADwtBABDdARoQ8mELAAsJACAAIAEQv1ALoAQBBn8jAUEgayICJAEgAkEANgIcIAJBG2ogAEEAEJVQGgJAAkAgAkEbai0AAARAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj2AEgAkEUaiAAIARqEOgBIAMoAgAhBCADQQA2AgACQAJAAkAgBEEBRwRAI7MBIgNBADYCACOuAiACQRRqEOUBIQUgAygCACEEIANBADYCACAEQQFGDQEgAkEQaiAAEJpQIQMgAkEMahC0SyEEIAAoAgBBDGsoAgAhBiAEKAIAIQQgAygCACEHI7MBIgNBADYCACOxCSAFIAcgBCAAIAZqIAJBHGogARD5ARogAygCACEBIANBADYCACABQQFGDQEgAkEUahDrVhoMAwtBABDdASEDDAELQQAQ3QEhAyACQRRqEOtWGgsgAxDsARogAiACKAIcQQFyIgM2AhwgACAAKAIAQQxrKAIAaiADEKhQIAAoAgBBDGsoAgAhASOzASIDQQA2AgAj7wEgACABahDlASEEIAMoAgAhASADQQA2AgACQCABQQFHBEAgBEEBcUUNASOzASICQQA2AgAjBBDqASACKAIAIQAgAkEANgIAIABBAUcNBQsjswEhAhDfASEDIAJBADYCACMDEOoBIAIoAgAhACACQQA2AgAgAEEBRg0DIAMQ4AEACxDuAQsgACAAKAIAQQxrKAIAaiACKAIcEJ9QCyACQSBqJAEgAA8LQQAQ3QEaEPJhCwALGQAgACABIAIgAyAEIAUgACgCACgCIBEKAAsJACAAIAEQwlALoAQBBn8jAUEgayICJAEgAkEANgIcIAJBG2ogAEEAEJVQGgJAAkAgAkEbai0AAARAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj2AEgAkEUaiAAIARqEOgBIAMoAgAhBCADQQA2AgACQAJAAkAgBEEBRwRAI7MBIgNBADYCACOuAiACQRRqEOUBIQUgAygCACEEIANBADYCACAEQQFGDQEgAkEQaiAAEJpQIQMgAkEMahC0SyEEIAAoAgBBDGsoAgAhBiAEKAIAIQQgAygCACEHI7MBIgNBADYCACOwCSAFIAcgBCAAIAZqIAJBHGogARD5ARogAygCACEBIANBADYCACABQQFGDQEgAkEUahDrVhoMAwtBABDdASEDDAELQQAQ3QEhAyACQRRqEOtWGgsgAxDsARogAiACKAIcQQFyIgM2AhwgACAAKAIAQQxrKAIAaiADEKhQIAAoAgBBDGsoAgAhASOzASIDQQA2AgAj7wEgACABahDlASEEIAMoAgAhASADQQA2AgACQCABQQFHBEAgBEEBcUUNASOzASICQQA2AgAjBBDqASACKAIAIQAgAkEANgIAIABBAUcNBQsjswEhAhDfASEDIAJBADYCACMDEOoBIAIoAgAhACACQQA2AgAgAEEBRg0DIAMQ4AEACxDuAQsgACAAKAIAQQxrKAIAaiACKAIcEJ9QCyACQSBqJAEgAA8LQQAQ3QEaEPJhCwALGQAgACABIAIgAyAEIAUgACgCACgCFBEKAAsJACAAIAEQxVALoAQBBn8jAUEgayICJAEgAkEANgIcIAJBG2ogAEEAEJVQGgJAAkAgAkEbai0AAARAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj2AEgAkEUaiAAIARqEOgBIAMoAgAhBCADQQA2AgACQAJAAkAgBEEBRwRAI7MBIgNBADYCACOuAiACQRRqEOUBIQUgAygCACEEIANBADYCACAEQQFGDQEgAkEQaiAAEJpQIQMgAkEMahC0SyEEIAAoAgBBDGsoAgAhBiAEKAIAIQQgAygCACEHI7MBIgNBADYCACOvCSAFIAcgBCAAIAZqIAJBHGogARD5ARogAygCACEBIANBADYCACABQQFGDQEgAkEUahDrVhoMAwtBABDdASEDDAELQQAQ3QEhAyACQRRqEOtWGgsgAxDsARogAiACKAIcQQFyIgM2AhwgACAAKAIAQQxrKAIAaiADEKhQIAAoAgBBDGsoAgAhASOzASIDQQA2AgAj7wEgACABahDlASEEIAMoAgAhASADQQA2AgACQCABQQFHBEAgBEEBcUUNASOzASICQQA2AgAjBBDqASACKAIAIQAgAkEANgIAIABBAUcNBQsjswEhAhDfASEDIAJBADYCACMDEOoBIAIoAgAhACACQQA2AgAgAEEBRg0DIAMQ4AEACxDuAQsgACAAKAIAQQxrKAIAaiACKAIcEJ9QCyACQSBqJAEgAA8LQQAQ3QEaEPJhCwALGQAgACABIAIgAyAEIAUgACgCACgCJBEKAAsJACAAIAEQyFALoAQBBn8jAUEgayICJAEgAkEANgIcIAJBG2ogAEEAEJVQGgJAAkAgAkEbai0AAARAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj2AEgAkEUaiAAIARqEOgBIAMoAgAhBCADQQA2AgACQAJAAkAgBEEBRwRAI7MBIgNBADYCACOuAiACQRRqEOUBIQUgAygCACEEIANBADYCACAEQQFGDQEgAkEQaiAAEJpQIQMgAkEMahC0SyEEIAAoAgBBDGsoAgAhBiAEKAIAIQQgAygCACEHI7MBIgNBADYCACOuCSAFIAcgBCAAIAZqIAJBHGogARD5ARogAygCACEBIANBADYCACABQQFGDQEgAkEUahDrVhoMAwtBABDdASEDDAELQQAQ3QEhAyACQRRqEOtWGgsgAxDsARogAiACKAIcQQFyIgM2AhwgACAAKAIAQQxrKAIAaiADEKhQIAAoAgBBDGsoAgAhASOzASIDQQA2AgAj7wEgACABahDlASEEIAMoAgAhASADQQA2AgACQCABQQFHBEAgBEEBcUUNASOzASICQQA2AgAjBBDqASACKAIAIQAgAkEANgIAIABBAUcNBQsjswEhAhDfASEDIAJBADYCACMDEOoBIAIoAgAhACACQQA2AgAgAEEBRg0DIAMQ4AEACxDuAQsgACAAKAIAQQxrKAIAaiACKAIcEJ9QCyACQSBqJAEgAA8LQQAQ3QEaEPJhCwALGQAgACABIAIgAyAEIAUgACgCACgCKBEKAAsJACAAIAEQy1ALoAQBBn8jAUEgayICJAEgAkEANgIcIAJBG2ogAEEAEJVQGgJAAkAgAkEbai0AAARAIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj2AEgAkEUaiAAIARqEOgBIAMoAgAhBCADQQA2AgACQAJAAkAgBEEBRwRAI7MBIgNBADYCACOuAiACQRRqEOUBIQUgAygCACEEIANBADYCACAEQQFGDQEgAkEQaiAAEJpQIQMgAkEMahC0SyEEIAAoAgBBDGsoAgAhBiAEKAIAIQQgAygCACEHI7MBIgNBADYCACOtCSAFIAcgBCAAIAZqIAJBHGogARD5ARogAygCACEBIANBADYCACABQQFGDQEgAkEUahDrVhoMAwtBABDdASEDDAELQQAQ3QEhAyACQRRqEOtWGgsgAxDsARogAiACKAIcQQFyIgM2AhwgACAAKAIAQQxrKAIAaiADEKhQIAAoAgBBDGsoAgAhASOzASIDQQA2AgAj7wEgACABahDlASEEIAMoAgAhASADQQA2AgACQCABQQFHBEAgBEEBcUUNASOzASICQQA2AgAjBBDqASACKAIAIQAgAkEANgIAIABBAUcNBQsjswEhAhDfASEDIAJBADYCACMDEOoBIAIoAgAhACACQQA2AgAgAEEBRg0DIAMQ4AEACxDuAQsgACAAKAIAQQxrKAIAaiACKAIcEJ9QCyACQSBqJAEgAA8LQQAQ3QEaEPJhCwALGQAg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ABDfASECIABBADYCACMDEOoBIAAoAgAhBCAAQQA2AgAgBEEBRwRAIAIQ4AEAC0EAEN0BGhDyYQALFwAgACABIAIgAyAEIAAoAgAoAhARBgAL4gQBB38jAUEQayIEJAEjswEiAkEANgIAI50CIARBCGogABDeARogAigCACEDIAJBADYCAAJAAkACQCADQQFHBEACQCAEQQhqLQAARQ0AIAAoAgBBDGsoAgAhAyOzASICQQA2AgAj2AEgBEEEaiAAIANqEOgBIAIoAgAhAyACQQA2AgACQAJAAkAgA0EBRwRAI7MBIgJBADYCACO+AiAEQQRqEOUBIQUgAigCACEDIAJBADYCACADQQFGDQEgBEEEahDrVhogBCAAEJpQIQYgACgCAEEMaygCACEDI7MBIgJBADYCACO9AiAAIANqIgcQ5QEhCCACKAIAIQMgAkEANgIAIANBAUYNAiAGKAIAIQMjswEiAkEANgIAI6QJIAUgAyAHIAggARDzASEBIAIoAgAhAyACQQA2AgAgA0EBRg0CIAQgATYCBCAEQQRqEPRQRQ0EIAAoAgBBDGsoAgAhAyOzASICQQA2AgAjkgIgACADakEFEOgBIAIoAgAhAyACQQA2AgAgA0EBRw0EQQAQ3QEhAgwDC0EAEN0BIQIMAgtBABDdASECIARBBGoQ61YaDAELQQAQ3QEhAgsgBEEIahDvUBoMAgsgBEEIahDvUBoMAgtBABDdASECCyACEOwBGiAAKAIAQQxrKAIAIQMjswEiAkEANgIAI+0BIAAgA2oQ8AEgAigCACEDIAJBADYCACADQQFGDQEQ7gELIARBEGokASAADwsjswEhABDfASECIABBADYCACMDEOoBIAAoAgAhBCAAQQA2AgAgBEEBRwRAIAIQ4AEAC0EAEN0BGhDyYQALFwAgACABIAIgAyAEIAAoAgAoAhgRBgAL9AQBB38jAUEQayIEJAEjswEiAkEANgIAI50CIARBCGogABDeARogAigCACEDIAJBADYCAAJAAkACQCADQQFHBEACQCAEQQhqLQAARQ0AIAAgACgCAEEMaygCAGooAgQaIAAoAgBBDGsoAgAhAyOzASICQQA2AgAj2AEgBEEEaiAAIANqEOgBIAIoAgAhAyACQQA2AgACQAJAAkAgA0EBRwRAI7MBIgJBADYCACO+AiAEQQRqEOUBIQUgAigCACEDIAJBADYCACADQQFGDQEgBEEEahDrVhogBCAAEJpQIQYgACgCAEEMaygCACEDI7MBIgJBADYCACO9AiAAIANqIgcQ5QEhCCACKAIAIQMgAkEANgIAIANBAUYNAiAGKAIAIQMjswEiAkEANgIAI5cEIAUgAyAHIAggARDzASEBIAIoAgAhAyACQQA2AgAgA0EBRg0CIAQgATYCBCAEQQRqEPRQRQ0EIAAoAgBBDGsoAgAhAyOzASICQQA2AgAjkgIgACADakEFEOgBIAIoAgAhAyACQQA2AgAgA0EBRw0EQQAQ3QEhAgwDC0EAEN0BIQIMAgtBABDdASECIARBBGoQ61YaDAELQQAQ3QEhAgsgBEEIahDvUBoMAgsgBEEIahDvUBoMAgtBABDdASECCyACEOwBGiAAKAIAQQxrKAIAIQMjswEiAkEANgIAI+0BIAAgA2oQ8AEgAigCACEDIAJBADYCACADQQFGDQEQ7gELIARBEGokASAADwsjswEhABDfASECIABBADYCACMDEOoBIAAoAgAhBCAAQQA2AgAgBEEBRwRAIAIQ4AEAC0EAEN0BGhDyYQAL4gQBB38jAUEQayIEJAEjswEiAkEANgIAI50CIARBCGogABDeARogAigCACEDIAJBADYCAAJAAkACQCADQQFHBEACQCAEQQhqLQAARQ0AIAAoAgBBDGsoAgAhAyOzASICQQA2AgAj2AEgBEEEaiAAIANqEOgBIAIoAgAhAyACQQA2AgACQAJAAkAgA0EBRwRAI7MBIgJBADYCACO+AiAEQQRqEOUBIQUgAigCACEDIAJBADYCACADQQFGDQEgBEEEahDrVhogBCAAEJpQIQYgACgCAEEMaygCACEDI7MBIgJBADYCACO9AiAAIANqIgcQ5QEhCCACKAIAIQMgAkEANgIAIANBAUYNAiAGKAIAIQMjswEiAkEANgIAI5cEIAUgAyAHIAggARDzASEBIAIoAgAhAyACQQA2AgAgA0EBRg0CIAQgATYCBCAEQQRqEPRQRQ0EIAAoAgBBDGsoAgAhAyOzASICQQA2AgAjkgIgACADakEFEOgBIAIoAgAhAyACQQA2AgAgA0EBRw0EQQAQ3QEhAgwDC0EAEN0BIQIMAgtBABDdASECIARBBGoQ61YaDAELQQAQ3QEhAgsgBEEIahDvUBoMAgsgBEEIahDvUBoMAgtBABDdASECCyACEOwBGiAAKAIAQQxrKAIAIQMjswEiAkEANgIAI+0BIAAgA2oQ8AEgAigCACEDIAJBADYCACADQQFGDQEQ7gELIARBEGokASAADwsjswEhABDfASECIABBADYCACMDEOoBIAAoAgAhBCAAQQA2AgAgBEEBRwRAIAIQ4AEAC0EAEN0BGhDyYQAL4gQBB38jAUEQayIEJAEjswEiAkEANgIAI50CIARBCGogABDeARogAigCACEDIAJBADYCAAJAAkACQCADQQFHBEACQCAEQQhqLQAARQ0AIAAoAgBBDGsoAgAhAyOzASICQQA2AgAj2AEgBEEEaiAAIANqEOgBIAIoAgAhAyACQQA2AgACQAJAAkAgA0EBRwRAI7MBIgJBADYCACO+AiAEQQRqEOUBIQUgAigCACEDIAJBADYCACADQQFGDQEgBEEEahDrVhogBCAAEJpQIQYgACgCAEEMaygCACEDI7MBIgJBADYCACO9AiAAIANqIgcQ5QEhCCACKAIAIQMgAkEANgIAIANBAUYNAiAGKAIAIQMjswEiAkEANgIAI6MJIAUgAyAHIAggARD7ASEFIAIoAgAhAyACQQA2AgAgA0EBRg0CIAQgBTYCBCAEQQRqEPRQRQ0EIAAoAgBBDGsoAgAhAyOzASICQQA2AgAjkgIgACADakEFEOgBIAIoAgAhAyACQQA2AgAgA0EBRw0EQQAQ3QEhAgwDC0EAEN0BIQIMAgtBABDdASECIARBBGoQ61YaDAELQQAQ3QEhAgsgBEEIahDvUBoMAgsgBEEIahDvUBoMAgtBABDdASECCyACEOwBGiAAKAIAQQxrKAIAIQMjswEiAkEANgIAI+0BIAAgA2oQ8AEgAigCACEDIAJBADYCACADQQFGDQEQ7gELIARBEGokASAADwsjswEhABDfASECIABBADYCACMDEOoBIAAoAgAhBCAAQQA2AgAgBEEBRwRAIAIQ4AEAC0EAEN0BGhDyYQALFwAgACABIAIgAyAEIAAoAgAoAhQRLwAL4gQBB38jAUEQayIEJAEjswEiAkEANgIAI50CIARBCGogABDeARogAigCACEDIAJBADYCAAJAAkACQCADQQFHBEACQCAEQQhqLQAARQ0AIAAoAgBBDGsoAgAhAyOzASICQQA2AgAj2AEg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AgAjoAkgBSADIAcgCCABEPMBIQEgAigCACEDIAJBADYCACADQQFGDQIgBCABNgIEIARBBGoQ9FBFDQQgACgCAEEMaygCACEDI7MBIgJBADYCACOSAiAAIANqQQUQ6AEgAigCACEDIAJBADYCACADQQFHDQRBABDdASECDAMLQQAQ3QEhAgwCC0EAEN0BIQIgBEEEahDrVhoMAQtBABDdASECCyAEQQhqEO9QGgwCCyAEQQhqEO9QGgwCC0EAEN0BIQILIAIQ7AEaIAAoAgBBDGsoAgAhAyOzASICQQA2AgAj7QEgACADahDwASACKAIAIQMgAkEANgIAIANBAUYNARDuAQsgBEEQaiQBIAAPCyOzASEAEN8BIQIgAEEANgIAIwMQ6gEgACgCACEEIABBADYCACAEQQFHBEAgAhDgAQALQQAQ3QEaEPJhAAsXACAAIAEgAiADIAQgACgCACgCKBEGAAuLBgEHfyMBQSBrIgQkASOzASICQQA2AgAjnQIgBEEYaiAAEN4BGiACKAIAIQMgAkEANgIAAkACQAJAAkACQAJAAkACQAJ/AkAgA0EBRwRAIARBGGotAABFDQQgAQRAIARBFGogARC8SyEDIARBEGoQtEshCCAEQQxqIAAQmlAhAQJAA0ACQCOzASICQQA2AgAj6gEgAyAIEN4BIQYgAigCACEFIAJBADYCACAFQQFGDQAgBg0CI7MBIgJBADYCACP+ASADEOUBIQYgAigCACEFIAJBADYCACAFQQFGDQAjswEiAkEANgIAI5YEIAEgBhDeARogAigCACEFIAJBADYCACAFQQFGDQAgARD0UA0CI7MBIgJBADYCACOHAiADEOUBGiACKAIAIQUgAkEANgIAIAVBAUYNACAHQQFqIQcMAQsLQQAQ3QEMBAsgBw0FIAAoAgBBDGsoAgAhAyOzASICQQA2AgAjkgIgACADakEEEOgBIAIoAgAhAyACQQA2AgAgA0EBRg0CDAULIAAoAgBBDGsoAgAhAyOzASICQQA2AgAjkgIgACADakEBEOgBIAIoAgAhAyACQQA2AgAgA0EBRg0DDAQLQQAQ3QEhAgwGC0EAEN0BCxDsARogACgCAEEMaygCACEDI7MBIgJBADYCACOCBiAAIANqEPABIAIoAgAhAyACQQA2AgAgA0EBRg0CI7MBIgJBADYCACMDEOoBIAIoAgAhAyACQQA2AgAgA0EBRw0BC0EAEN0BIQIMAgsgBEEYahDvUBoMAwsjswEhA0EAEN0BIQIgA0EANgIAIwMQ6gEgAygCACEBIANBADYCACABQQFGDQQLIARBGGoQ71AaCyACEOwBGiAAKAIAQQxrKAIAIQMjswEiAkEANgIAI+0BIAAgA2oQ8AEgAigCACEDIAJBADYCACADQQFGDQEQ7gELIARBIGokASAADwsjswEhABDfASECIABBADYCACMDEOoBIAAoAgAhBCAAQQA2AgAgBEEBRg0AIAIQ4AEAC0EAEN0BGhDyYQALKQEBfwJAIAAoAgAiAkUNACACIAEQp1BBfxDYEEUNACAAQQA2AgALIAAL+AIBBH8jAUEQayIEJAEjswEiAkEANgIAI50CIARBCGogABDeARogAigCACEDIAJBADYCAAJAAkACQCADQQFHBEACQCAEQQhqLQAARQ0AI7MBIQIgBEEEaiAAEJpQIgUhAyACQQA2AgAjlgQgAyABEN4BGiACKAIAIQMgAkEANgIAIANBAUcEQCAFEPRQRQ0BIAAoAgBBDGsoAgAhAyOzASICQQA2AgAjkgIgACADakEBEOgBIAIoAgAhAyACQQA2AgAgA0EBRw0BC0EAEN0BIQIgBEEIahDvUBoMAgsgBEEIahDvUBoMAgtBABDdASECCyACEOwBGiAAKAIAQQxrKAIAIQMjswEiAkEANgIAI+0BIAAgA2oQ8AEgAigCACEDIAJBADYCACADQQFGDQEQ7gELIARBEGokASAADwsjswEhABDfASECIABBADYCACMDEOoBIAAoAgAhBCAAQQA2AgAgBEEBRwRAIAIQ4AEAC0EAEN0BGhDyYQALrgMBBH8jAUEQayIFJAEjswEiA0EANgIAI50CIAVBCGogABDeARogAygCACEEIANBADYCAAJAAkACQCAEQQFHBEAgBUEIai0AACEDAkAgAkUNACADRQ0AIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAj6wEgACAEahDlASEGIAMoAgAhBCADQQA2AgACQCAEQQFGDQAjswEiA0EANgIAI4EGIAYgASACENwBIQEgAygCACEEIANBADYCACAEQQFGDQAgASACRg0BIAAoAgBBDGsoAgAhBCOzASIDQQA2AgAjkgIgACAEakEBEOgBIAMoAgAhBCAD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KAIAEKVRCxMAIAAgASACIAAoAgAoAgwRAgALDQAgACgCABCmURogAAsQACAAEM1SIAEQzVJzQQFzCycBAX8gACgCDCIBIAAoAhBGBEAgACAAKAIAKAIkEQEADwsgASgCAAsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEBAA8LIAAgAUEEajYCDCABKAIAC/0DAQR/IwFBEGsiBCQBIABBADYCBCAEQQ9qIABBARCcURogBC0ADwRAAkAgAUUEQEEEIQIMAQsCQANAAkAgACgCAEEMaygCACAAaigCGCEDI7MBIgJBADYCACOSAyADEOUBIQMgAigCACEFIAJBADYCACAFQQFGDQAgA0F/ENgQBEBBAiECDAMLI7MBIgJBADYCACOABiABIAMQ3gEhBSACKAIAIQMgAkEANgIAIANBAUYNACAFQX8Q2BAEQEEAIQIMAwsgACAAKAIEQQFqNgIEIAAoAgBBDGsoAgAgAGooAhghAyOzASICQQA2AgAj1QIgAxDlARogAigCACEDIAJBADYCACADQQFHDQELC0EAEN0BEOwBGiAAIAAoAgBBDGsoAgBqQQFBBSAAKAIEGyICEKhQAkACQAJAIAAgACgCAEEMaygCAGooAhRBBHFFBEAgACAAKAIAQQxrKAIAaigCFEEBcUUNAQsjswEiAEEANgIAIwQQ6gEgACgCACECIABBADYCACACQQFHDQIjswEhABDfASEDIABBADYCACMDEOoBIAAoAgAhAiAAQQA2AgAgAkEBRg0BIAMQ4AEACxDuAQwDC0EAEN0BGhDyYQsACyACIAJBBHIgACgCBBshAgsgACAAKAIAQQxrKAIAaiACEJ9QCyAEQRBqJAEgAAs3AQF/IAAoAhgiAiAAKAIcRgRAIAAgASAAKAIAKAI0EQAADwsgACACQQRqNgIYIAIgATYCACABCwkAIAAgARCqUQvvAwEGfyMBQSBrIgIkASACQQA2AhwgAkEbaiAAQQAQnFEaAkACQCACLQAbBEAgACgCAEEMaygCACEEI7MBIgNBADYCACPYASACQRRqIAAgBGoQ6AEgAygCACEEIANBADYCAAJAAkACQCAEQQFHBEAjswEiA0EANgIAI6wCIAJBFGoQ5QEhBSADKAIAIQQgA0EANgIAIARBAUYNASACQRBqIAAQn1EhAyACQQxqELRL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IAAgAkEMajYCACADIAJBIGo2AgAgAEEANgIEI7MBIgJBADYCACPsBSADIAEQ6AEgAigCACEBIAJBADYCACABQQFHBEAgAA8LEN8BIQAgAxDgUhogABDgAQALoAEBA38jAUEQayIDJAEgABCUUSIAIAE2AiAgACP0CEEIajYCACADQQxqIAAQ7VEjswEiAUEANgIAI/MIIANBDGoQ5QEhBCABKAIAIQUgAUEANgIAIAVBAUcEQCADQQxqEOtWGiAAIAI2AiggACAENgIkIAAgBBCPUjoALCADQRBqJAEgAA8LEN8BIQEgA0EMahDrVhogABCSURogARDgAQALZQECfyOJBCECIABBBGoQ/1IhAyAAIAJBDGo2AgAgAyACQSBqNgIAI7MBIgJBADYCACPsBSADIAEQ6AEgAigCACEBIAJBADYCACABQQFHBEAgAA8LEN8BIQAgAxDgUhogABDgAQALGgEBfyPyCCEBIAAQilMiACABQQhqNgIAIAALFwAgACABEONSIABBADYCSCAAQX82AkwLEwAgACAAKAIEIgAgAXI2AgQgAAsaAQF/I/EIIQEgABCKUyIAIAFBCGo2AgAgAAsKACAAI4gEEKtTC7gBAQJ/I7MBIgFBADYCACPrBSPxBRDlARogASgCACECIAFBADYCAAJAIAJBAUYNACOzASIBQQA2AgAj6wUj8AUQ5QEaIAEoAgAhAiABQQA2AgAgAkEBRg0AI7MBIgFBADYCACPqBSPvBRDlARogASgCACECIAFBADYCACACQQFGDQAjswEiAUEANgIAI+oFI+4FEOUBGiABKAIAIQIgAUEANgIAIAJBAUYNACAADwtBABDdARoQ8mEACzABAX8jAEHRpPABai0AAEUEQCMAIgFB0KTwAWoQ8VIaIAFB0aTwAWpBAToAAAsgAAsOACMAQdCk8AFqEIFTGgsKACAAEIBQEORGCzsAIAAgARCOUiIBNgIkIAAgARChUDYCLCAAIAAoAiQQj1I6ADUgACgCLEEJTgRAIwBB2MAAahDnVAALCwkAIABBABCHUwuIAwIFfwF+IwFBIGsiAiQBAkAgAC0ANARAIAAoAjAhAyABRQ0BIABBADoANCAAQX82AjAMAQsgAkEBNgIYIAJBGGogAEEsahCjUigCACIEQQAgBEEAShshBQJAA0AgAyAFRwRAIAAoAiAQ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AkEANgIAIAFBAUYNBCAGIANBABC9TiIBIABqNgK0AQsjswEiAkEANgIAI/4BIAZB/AFqEOUBIQcgAigCACEAIAJBADYCACAAQQFGDQAjswEiAkEANgIAI+QCIAcgCCABIAZBtAFqIAZBCGogBiwA9wEgBkHEAWogBkEQaiAGQQxqIAkQ/wEhByACKAIAIQAgAkEANgIAIABBAUYNACAHDQQjswEiAkEANgIAI4cCIAZB/AFqEOUBGiACKAIAIQAgAkEANgIAIABBAUcNAQsLEN8BDAMLEN8BDAILEN8BDAELAkAgBkHEAWoQ4k1FDQAgBigCDCICIAZBEGprQZ8BSg0AIAYgAkEEajYCDCACIAYoAgg2AgALI7MBIgJBADYCACPmBSABIAYoArQBIAQgCBCAAiEKIAIoAgAhASACQQA2AgACQCABQQFGDQAgBSAKNwMAI7MBIgJBADYCACOBAiAGQcQBaiAGQRBqIAYoAgwgBBDkASACKAIAIQEgAkEANgIAIAFBAUYNACOzASICQQA2AgAj6gEgBkH8AWogBkH4AWoQ3gEhACACKAIAIQEgAkEANgIAIAFBAUYNACAABEAgBCAEKAIAQQJyNgIACyAGKAL8ASECIAMQp10aIAZBxAFqEKddGiAGQYACaiQBIAIPCxDfAQshAiADEKddGiAGQcQBahCnXRogAhDgAQALvgECAX4DfyMBQRBrIgUkAQJAAkACQCAAIAFHBEAQ+jsiBigCACEHIAZBADYCACAAIAVBDGogAxDTUxCdRSEEAkAgBigCACIABEAgBSgCDCABRw0BIABBxABGDQQMBQsgBiAHNgIAIAUoAgwgAUYNBAsgAkEENgIADAELIAJBBDYCAAtCACEEDAELIAJBBDYCACAEQgBVBEBC////////////ACEEDAELQoCAgICAgICAgH8hBAsgBUEQaiQBIAQLEQAgACABIAIgAyAEIAUQvFML2AYBBH8jAUGAAmsiBiQBIAYgAjYC+AEgBiABNgL8ASADELJTIQgjiwIhCSAGQcQBaiADIAZB9wFqELRTI7MBIQIgBkG4AWoQs00iAxDoTSEBIAJBADYCACPXASADIAEQ6AEgAigCACEBIAJBADYCAAJ/AkACQCABQQFHBEAgBiADQQAQvU4iATYCtAEgBiAGQRBqNgIMIAZBADYCCANAAkAj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BkcNACAHEOJNRQ0AIAEtAABFDQFBACEAIAkoAgAiCyAIa0GfAUoNAiAKKAIAIQAgCSALQQRqNgIAIAsgADYCAEEAIQAgCkEANgIADAILQX8hACALIAtBIGogDEEPahD4SyALayILQR9KDQEjiwIgC2otAAAhBQJAAkACQAJAIAtBfnFBFmsOAwECAAILIAMgBCgCACILRwRAIAtBAWstAABB3wBxIAItAABB/wBxRw0FCyAEIAtBAWo2AgAgCyAFOgAAQQAhAAwECyACQdAAOgAADAELIAVB3wBxIgAgAi0AAEcNACACIABBgAFyOgAAIAEtAABFDQAgAUEAOgAAIAcQ4k1FDQAgCSgCACIAIAhrQZ8BSg0AIAooAgAhASAJIABBBGo2AgAgACABNgIACyAEIAQoAgAiAEEBajYCACAAIAU6AABBACEAIAtBFUoNASAKIAooAgBBAWo2AgAMAQtBfyEACyAMQRBqJAEgAAuNAQIDfwJ9IwFBEGsiAyQBAkACQAJAIAAgAUcEQBD6OyIEKAIAIQUgBEEANgIAIAAgA0EMahD/WSEGIAQoAgAiAEUNASADKAIMIAFHDQIgBiEHIABBxABHDQMMAgsgAkEENgIADAILIAQgBTYCACADKAIMIAFGDQELIAJBBDYCACAHIQYLIANBEGokASAGCxEAIAAgASACIAMgBCAFEMxTC4EHAgJ/AXwjAUGAAmsiACQBIAAgAjYC+AEgACABNgL8ASAAQcABaiADIABB0AFqIABBzwFqIABBzgFqEMhTI7MBIQEgAEG0AWoQs00iAhDoTSEDIAFBADYCACPXASACIAMQ6AEgASgCACEDIAFBADYCAAJ/AkACQCADQQFHBEAgACACQQAQvU4iAzYCsAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABgNAAkAjswEiAUEANgIAI+oBIABB/AFqIABB+AFqEN4BIQcgASgCACEGIAFBADYCACAGQQFGDQAgBw0EIAAoArABIAIQ4k0gA2pGBEAjswEhASACEOJNIQYgAhDiTSEDIAFBADYCACPXASACIANBAXQQ6AEgASgCACEDIAFBADYCACADQQFGDQQjswEhASACEOhNIQMgAUEANgIAI9cBIAIgAxDoASABKAIAIQMgAUEANgIAIANBAUYNBCAAIAJBABC9TiIDIAZqNgKwAQsjswEiAUEANgIAI/4BIABB/AFqEOUBIQcgASgCACEGIAFBADYCACAGQQFGDQAjswEiAUEANgIAI4YEIAcgAEEHaiAAQQZqIAMgAEGwAWogACwAzwEgACwAzgEgAEHAAWogAEEQaiAAQQxqIABBCGogAEHQAWoQgQIhByABKAIAIQYgAUEANgIAIAZBAUYNACAHDQQjswEiAUEANgIAI4cCIABB/AFqEOUBGiABKAIAIQYgAUEANgIAIAZBAUcNAQsLEN8BDAMLEN8BDAILEN8BDAELAkAgAEHAAWoQ4k1FDQAgAC0AB0UNACAAKAIMIgEgAEEQamtBnwFKDQAgACABQQRqNgIMIAEgACgCCDYCAAsjswEiAUEANgIAI98FIAMgACgCsAEgBBCDAiEIIAEoAgAhAyABQQA2AgACQCADQQFGDQAgBSAIOQMAI7MBIgFBADYCACOBAiAAQcABaiAAQRBqIAAoAgwgBBDkASABKAIAIQMgAUEANgIAIANBAUYNACOzASIBQQA2AgAj6gEgAEH8AWogAEH4AWoQ3gEhBiABKAIAIQMgAUEANgIAIANBAUYNACAGBEAgBCAEKAIAQQJyNgIACyAAKAL8ASEBIAIQp10aIABBwAFqEKddGiAAQYACaiQBIAEPCxDfAQshASACEKddGiAAQcABahCnXRogARDgAQALjQECA38CfCMBQRBrIgMkAQJAAkACQCAAIAFHBEAQ+jsiBCgCACEFIARBADYCACAAIANBDGoQgFohBiAEKAIAIgBFDQEgAygCDCABRw0CIAYhByAAQcQARw0DDAILIAJBBDYCAAwCCyAEIAU2AgAgAygCDCABRg0BCyACQQQ2AgAgByEGCyADQRBqJAEgBgsRACAAIAEgAiADIAQgBRDPUwuSBwICfwF+IwFBkAJrIgAkASAAIAI2AogCIAAgATYCjAIgAEHQAWogAyAAQeABaiAAQd8BaiAAQd4BahDIUyOzASEBIABBxAFqELNNIgIQ6E0hAyABQQA2AgAj1wEgAiADEOgBIAEoAgAhAyABQQA2AgACfwJAAkAgA0EBRwRAIAAgAkEAEL1OIgM2AsABIAAgAEEgajYCHCAAQQA2AhggAEEBOgAXIABBxQA6ABYDQAJAI7MBIgFBADYCACPqASAAQYwCaiAAQYgCahDeASEHIAEoAgAhBiABQQA2AgAgBkEBRg0AIAcNBCAAKALAASACEOJNIANqRgRAI7MBIQEgAhDiTSEGIAIQ4k0hAyABQQA2AgAj1wEgAiADQQF0EOgBIAEoAgAhAyABQQA2AgAgA0EBRg0EI7MBIQEgAhDoTSEDIAFBADYCACPXASACIAMQ6AEgASgCACEDIAFBADYCACADQQFGDQQgACACQQAQvU4iAyAGajYCwAELI7MBIgFBADYCACP+ASAAQYwCahDlASEHIAEoAgAhBiABQQA2AgAgBkEBRg0AI7MBIgFBADYCACOGBCAHIABBF2ogAEEWaiADIABBwAFqIAAsAN8BIAAsAN4BIABB0AFqIABBIGogAEEcaiAAQRhqIABB4AFqEIECIQcgASgCACEGIAFBADYCACAGQQFGDQAgBw0EI7MBIgFBADYCACOHAiAAQYwCahDlARogASgCACEGIAFBADYCACAGQQFHDQELCxDfAQwDCxDfAQwCCxDfAQwBCwJAIABB0AFqEOJNRQ0AIAAtABdFDQAgACgCHCIBIABBIGprQZ8BSg0AIAAgAUEEajYCHCABIAAoAhg2AgALI7MBIgFBADYCACPeBSAAIAMgACgCwAEgBBDkASABKAIAIQMgAUEANgIAAkAgA0EBRg0AIAApAwghCCAFIAApAwA3AwAgBSAINwMII7MBIgFBADYCACOBAiAAQdABaiAAQSBqIAAoAhwgBBDkASABKAIAIQMgAUEANgIAIANBAUYNACOzASIBQQA2AgAj6gEgAEGMAmogAEGIAmoQ3gEhBiABKAIAIQMgAUEANgIAIANBAUYNACAGBEAgBCAEKAIAQQJyNgIACyAAKAKMAiEBIAIQp10aIABB0AFqEKddGiAAQZACaiQBIAEPCxDfAQshASACEKddGiAAQdABahCnXRogARDgAQALsgECA38EfiMBQSBrIgQkAQJAAkACQCABIAJHBEAQ+jsiBSgCACEGIAVBADYCACAEQQhqIAEgBEEcahCBWiAEKQMQIQcgBCkDCCEIIAUoAgAiAUUNASAEKAIcIAJHDQIgCCEJIAchCiABQcQARw0DDAILIANBBDYCAAwCCyAFIAY2AgAgBCgCHCACRg0BCyADQQQ2AgAgCSEIIAohBwsgACAINwMAIAAgBzcDCCAEQSBqJAEL+AcBA38jAUGAAmsiACQBIAAgAjYC+AEgACABNgL8ASOzASECIABBxAFqELNNIQggAkEANgIAI9gBIABBEGogAxDoASACKAIAIQEgAkEANgIAAkACfwJAAkACQAJAIAFBAUcEQCOzASICQQA2AgAjlwIgAEEQahDlASEDIAIoAgAhASACQQA2AgAgAUEBRg0BI7MBIgJBADYCACPjAiADI4sCIgEgAUEaaiAAQdABahDvARogAigCACEBIAJBADYCACABQQFGDQEgAEEQahDrVhojswEhASAAQbgBahCzTSICEOhNIQMgAUEANgIAI9cBIAIgAxDoASABKAIAIQMgAUEANgIAIANBAUYNAiAAIAJBABC9TiIDNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCOzASIBQQA2AgAj6gEgAEH8AWogAEH4AWoQ3gEhByABKAIAIQYgAUEANgIAIAZBAUYNACAHDQYgACgCtAEgAhDiTSADakYEQCOzASEBIAIQ4k0hBiACEOJNIQMgAUEANgIAI9cBIAIgA0EBdBDoASABKAIAIQMgAUEANgIAIANBAUYNBiOzASEBIAIQ6E0hAyABQQA2AgAj1wEgAiADEOgBIAEoAgAhAyABQQA2AgAgA0EBRg0GIAAgAkEAEL1OIgMgBmo2ArQBCyOzASIBQQA2AgAj/gEgAEH8AWoQ5QEhByABKAIAIQYgAUEANgIAIAZBAUYNACOzASIBQQA2AgAj5AIgB0EQIAMgAEG0AWogAEEIakEAIAggAEEQaiAAQQxqIABB0AFqEP8BIQcgASgCACEGIAFBADYCACAGQQFGDQAgBw0GI7MBIgFBADYCACOHAiAAQfwBahDlARogASgCACEGIAFBADYCACAGQQFHDQELCxDfAQwFCxDfASEBDAULEN8BIQEgAEEQahDrVhoMBAsQ3wEMAgsQ3wEMAQsjswEiAUEANgIAI9cBIAIgACgCtAEgA2sQ6AEgASgCACEDIAFBADYCAAJAIANBAUYNACOzASEBIAIQ5E0hBiABQQA2AgAjhQIQ4QEhByABKAIAIQMgAUEANgIAIANBAUYNACOzASIBQQA2AgAgACAFNgIAI90FIAYgByMAQfqvBGogABDvASEGIAEoAgAhAyABQQA2AgAgA0EBRg0AIAZBAUcEQCAEQQQ2AgALI7MBIgFBADYCACPqASAAQfwBaiAAQfgBahDeASEGIAEoAgAhAyABQQA2AgAgA0EBRg0AIAYEQCAEIAQoAgBBAnI2AgALIAAoAvwBIQEgAhCnXRogCBCnXRogAEGAAmokASABDwsQ3wELIQEgAhCnXRoLIAgQp10aIAEQ4AEACxUAIAAgASACIAMgACgCACgCIBEEAAtQAQJ/IwBB+KXwAWotAAAEQCMAQfSl8AFqKAIADwtB/////wcjACIAQbmBC2pBABDIQiEBIABB+KXwAWpBAToAACAAQfSl8AFqIAE2AgAgAQtHAQF/IwFBEGsiBCQBIAQgATYCDCAEIAM2AgggBEEEaiAEQQxqENVTIQMgACACIAQoAggQnEYhASADENZTGiAEQRBqJAEgAQsRACAAIAEoAgAQ9kU2AgAgAAtGAQJ/AkAgACgCACIBBEAjswEiAkEANgIAI+oIIAEQ5QEaIAIoAgAhASACQQA2AgAgAUEBRg0BCyAADwtBABDdARoQ8mEAC/sDAQJ/IwFBIGsiBiQBIAYgATYCHAJAAkAgAygCBEEBcUUEQCAGQX82AgAgACABIAIgAyAEIAYgACgCACgCEBEKACEBAkACQCAGKAIADgIDAAELIAVBAToAAAwDCyAFQQE6AAAgBEEENgIADAILIAYgAxDXUiOzASIBQQA2AgAjkQIgBhDlASEHIAEoAgAhACABQQA2AgACQAJAAkACQCAAQQFHBEAgBhDrVhogBiADENdSI7MBIgNBADYCACPAAyAGEOUBIQEgAygCACEAIANBADYCACAAQQFGDQEgBhDrVhojswEiA0EANgIAI+kIIAYgARDoASADKAIAIQAgA0EANgIAIABBAUYEQBDfASEBDAULI7MBIgNBADYCACPoCCAGQQxyIAEQ6AEgAygCACEBIANBADYCACABQQFGDQIjswEiAUEANgIAI+cIIAZBHGogAiAGIAZBGGoiAyAHIARBARD+ASEAIAEoAgAhBCABQQA2AgAgBEEBRg0DIAUgACAGRjoAACAGKAIcIQEDQCADQQxrEOVdIgMgBkcNAAsMBgsQ3wEhASAGEOtWGgwDCxDfASEBIAYQ61YaDAILEN8BIQEgBhDlXRoMAQsQ3wEhAQNAIANBDGsQ5V0iAyAGRw0ACwsgARDgAQALIAVBADoAAAsgBkEgaiQBIAELCgAgACOFBBCrUwvgBgENfyMBQYABayIJJAEgCSABNgJ8IAIgAxCsUyEKIAkj8QE2AgQgCUEIakEAIAlBBGoQrVMhDSAJQRBqIQsCQAJ/IApB5QBPBEAgChDjRiILRQRAI7MBIgFBADYCACP4ARDqASABKAIAIQcgAUEANgIAIAdBAUcNAxDfAQwCCyANIAsQ6VILIAshByACIQECQAJAA0AgASADRgRAA0ACQCOzASIBQQA2AgAj6QEgACAJQfwAahDeASEIIAEoAgAhByABQQA2AgAgB0EBRg0AIAggCkVyQQFGBEAjswEiAUEANgIAI+kBIAAgCUH8AGoQ3gEhCCABKAIAIQcgAUEANgIAIAdBAUYNBiAIRQ0FIAUgBSgCAEECcjYCAAwFCyOzASIBQQA2AgAj/QEgABDlASEOIAEoAgAhByABQQA2AgACQCAHQQFHBEAgBg0BI7MBIgFBADYCACO/AyAEIA4Q3gEhDiABKAIAIQcgAUEANgIAIAdBAUcNAQsQ3wEMBwsgEEEBaiEPQQAhESALIQcgAiEBA0AgASADRgRAIA8hECARRQ0DI7MBIgFBADYCACOGAiAAEOUBGiABKAIAIQcgAUEANgIAIAdBAUcEQCALIQcgAiEBIAogDGpBAkkNBANAIAEgA0YEQAwGBQJAIActAABBAkcNACABEOJNIA9GDQAgB0EAOgAAIAxBAWshDAsgB0EBaiEHIAFBDGohAQwBCwALAAsQ3wEMCAsCQCAHLQAAQQFHDQAgASAQENpTKAIAIQgCQCAGDQAjswEiEkEANgIAI78DIAQgCBDeASEIIBIoAgAhEyASQQA2AgAgE0EBRw0AEN8BDAkLAkAgCCAORgRAQQEhESABEOJNIA9HDQIgB0ECOgAAIAxBAWohDAwBCyAHQQA6AAALIApBAWshCgsgB0EBaiEHIAFBDGohAQwACwALCwUgB0ECQQEgARCvUyIIGzoAACAHQQFqIQcgAUEMaiEBIAggDGohDCAKIAhrIQoMAQsLEN8BDAILAkACQANAIAIgA0YNASALLQAAQQJHBEAgC0EBaiELIAJBDGohAgwBCwsgAiEDDAELIAUgBSgCAEEEcjYCAAsgDRDqUhogCUGAAWokASADDwsQ3wELIQEgDRDqUhogARDgAQsACw0AIAAQ5E0gAUECdGoLEQAgACABIAIgAyAEIAUQ3FML4gYBBH8jAUHQAmsiBiQBIAYgAjYCyAIgBiABNgLMAiADELJTIQggACADIAZB0AFqEN1TIQkgBkHEAWogAyAGQcQCahDeUyOzASECIAZBuAFqELNNIgMQ6E0hASACQQA2AgAj1wEgAyABEOgBIAIoAgAhASACQQA2AgACfwJAAkAgAUEBRwRAIAYgA0EAEL1OIgE2ArQBIAYgBkEQajYCDCAGQQA2AggDQAJAI7MBIgJBADYCACPpASAGQcwCaiAGQcgCahDeASEHIAIoAgAhACACQQA2AgAgAEEBRg0AIAcNBCAGKAK0ASADEOJNIAFqRgRAI7MBIQIgAxDiTSEAIAMQ4k0hASACQQA2AgAj1wEgAyABQQF0EOgBIAIoAgAhASACQQA2AgAgAUEBRg0EI7MBIQIgAxDoTSEBIAJBADYCACPXASADIAEQ6AEgAigCACEBIAJBADYCACABQQFGDQQgBiADQQAQvU4iASAAajYCtAELI7MBIgJBADYCACP9ASAGQcwCahDlASEHIAIoAgAhACACQQA2AgAgAEEBRg0AI7MBIgJBADYCACPiAiAHIAggASAGQbQBaiAGQQhqIAYoAsQCIAZBxAFqIAZBEGogBkEMaiAJEP8BIQcgAigCACEAIAJBADYCACAAQQFGDQAgBw0EI7MBIgJBADYCACOGAiAGQcwCahDlARogAigCACEAIAJBADYCACAAQQFHDQELCxDfAQwDCxDfAQwCCxDfAQwBCwJAIAZBxAFqEOJNRQ0AIAYoAgwiAiAGQRBqa0GfAUoNACAGIAJBBGo2AgwgAiAGKAIINgIACyOzASICQQA2AgAj6AUgASAGKAK0ASAEIAgQ7wEhACACKAIAIQEgAkEANgIAAkAgAUEBRg0AIAUgADYCACOzASICQQA2AgAjgQIgBkHEAWogBkEQaiAGKAIMIAQQ5AEgAigCACEBIAJBADYCACABQQFGDQAjswEiAkEANgIAI+kBIAZBzAJqIAZByAJqEN4BIQAgAigCACEBIAJBADYCACABQQFGDQAgAARAIAQgBCgCAEECcjYCAAsgBigCzAIhAiADEKddGiAGQcQBahCnXRogBkHQAmokASACDwsQ3wELIQIgAxCnXRogBkHEAWoQp10aIAIQ4AEACwsAIAAgASACEPdTC8QBAQR/IwFBEGsiAyQBIANBDGogARDXUiOzASIBQQA2AgAjwAMgA0EMahDlASEEIAEoAgAhBSABQQA2AgACQCAFQQFGDQAjswEiAUEANgIAI74DIAQQ5QEhBiABKAIAIQUgAUEANgIAIAVBAUYNACACIAY2AgAjswEiAUEANgIAI9wFIAAgBBDoASABKAIAIQQgAUEANgIAIARBAUYNACADQQxqEOtWGiADQRBqJAEPCxDfASEBIANBDGoQ61YaIAEQ4AEAC/UCAQJ/IwFBEGsiCiQBIAogADYCDAJAAkACQCADKAIAIAJHDQBBKyELIAAgCSgCYEcEQEEtIQsgCSgCZCAARw0BCyADIAJBAWo2AgAgAiALOgAADAELAkAgBhDiTUUNACAAIAVHDQBBACEAIAgoAgAiCSAHa0GfAUoNAiAEKAIAIQAgCCAJQQRqNgIAIAkgADYCAAwBC0F/IQAgCSAJQegAaiAKQQxqENZMIAlrIglB3ABKDQEgCUECdSEGAkACQAJAIAFBCGsOAwACAAELIAEgBkoNAQwDCyABQRBHDQAgCUHYAEgNACADKAIAIgkgAkYNAiAJIAJrQQJKDQIgCUEBay0AAEEwRw0CQQAhACAEQQA2AgAgAyAJQQFqNgIAIAkjiwIgBmotAAA6AAAMAgsgAyADKAIAIgBBAWo2AgAgACOLAiAGai0AADoAACAEIAQoAgBBAWo2AgBBACEADAELQQAhACAEQQA2AgALIApBEGokASAACxEAIAAgASACIAMgBCAFEOFTC+QGAgR/AX4jAUHQAmsiBiQBIAYgAjYCyAIgBiABNgLMAiADELJTIQggACADIAZB0AFqEN1TIQkgBkHEAWogAyAGQcQCahDeUyOzASECIAZBuAFqELNNIgMQ6E0hASACQQA2AgAj1wEgAyABEOgBIAIoAgAhASACQQA2AgACfwJAAkAgAUEBRwRAIAYgA0EAEL1OIgE2ArQBIAYgBkEQajYCDCAGQQA2AggDQAJAI7MBIgJBADYCACPpASAGQcwCaiAGQcgCahDeASEHIAIoAgAhACACQQA2AgAgAEEBRg0AIAcNBCAGKAK0ASADEOJNIAFqRgRAI7MBIQIgAxDiTSEAIAMQ4k0hASACQQA2AgAj1wEgAyABQQF0EOgBIAIoAgAhASACQQA2AgAgAUEBRg0EI7MBIQIgAxDoTSEBIAJBADYCACPXASADIAEQ6AEgAigCACEBIAJBADYCACABQQFGDQQgBiADQQAQvU4iASAAajYCtAELI7MBIgJBADYCACP9ASAGQcwCahDlASEHIAIoAgAhACACQQA2AgAgAEEBRg0AI7MBIgJBADYCACPiAiAHIAggASAGQbQBaiAGQQhqIAYoAsQCIAZBxAFqIAZBEGogBkEMaiAJEP8BIQcgAigCACEAIAJBADYCACAAQQFGDQAgBw0EI7MBIgJBADYCACOGAiAGQcwCahDlARogAigCACEAIAJBADYCACAAQQFHDQELCxDfAQwDCxDfAQwCCxDfAQwBCwJAIAZBxAFqEOJNRQ0AIAYoAgwiAiAGQRBqa0GfAUoNACAGIAJBBGo2AgwgAiAGKAIINgIACyOzASICQQA2AgAj5gUgASAGKAK0ASAEIAgQgAIhCiACKAIAIQEgAkEANgIAAkAgAUEBRg0AIAUgCjcDACOzASICQQA2AgAjgQIgBkHEAWogBkEQaiAGKAIMIAQQ5AEgAigCACEBIAJBADYCACABQQFGDQAjswEiAkEANgIAI+kBIAZBzAJqIAZByAJqEN4BIQAgAigCACEBIAJBADYCACABQQFGDQAgAARAIAQgBCgCAEECcjYCAAsgBigCzAIhAiADEKddGiAGQcQBahCnXRogBkHQAmokASACDwsQ3wELIQIgAxCnXRogBkHEAWoQp10aIAIQ4AEACxEAIAAgASACIAMgBCAFEONTC+IGAQR/IwFB0AJrIgYkASAGIAI2AsgCIAYgATYCzAIgAxCyUyEIIAAgAyAGQdABahDdUyEJIAZBxAFqIAMgBkHEAmoQ3lMjswEhAiAGQbgBahCzTSIDEOhNIQEgAkEANgIAI9cBIAMgARDoASACKAIAIQEgAkEANgIAAn8CQAJAIAFBAUcEQCAGIANBABC9TiIBNgK0ASAGIAZBEGo2AgwgBkEANgIIA0ACQCOzASICQQA2AgAj6QEgBkHMAmogBkHIAmoQ3gEhByACKAIAIQAgAkEANgIAIABBAUYNACAHDQQgBigCtAEgAxDiTSABakYEQCOzASECIAMQ4k0hACADEOJNIQEgAkEANgIAI9cBIAMgAUEBdBDoASACKAIAIQEgAkEANgIAIAFBAUYNBCOzASECIAMQ6E0hASACQQA2AgAj1wEgAyABEOgBIAIoAgAhASACQQA2AgAgAUEBRg0EIAYgA0EAEL1OIgEgAGo2ArQBCyOzASICQQA2AgAj/QEgBkHMAmoQ5QEhByACKAIAIQAgAkEANgIAIABBAUYNACOzASICQQA2AgAj4gIgByAIIAEgBkG0AWogBkEIaiAGKALEAiAGQcQBaiAGQRBqIAZBDGogCRD/ASEHIAIoAgAhACACQQA2AgAgAEEBRg0AIAcNBCOzASICQQA2AgAjhgIgBkHMAmoQ5QEaIAIoAgAhACACQQA2AgAgAEEBRw0BCwsQ3wEMAwsQ3wEMAgsQ3wEMAQsCQCAGQcQBahDiTUUNACAGKAIMIgIgBkEQamtBnwFKDQAgBiACQQRqNgIMIAIgBigCCDYCAAsjswEiAkEANgIAI+UFIAEgBigCtAEgBCAIEO8BIQAgAigCACEBIAJBADYCAAJAIAFBAUYNACAFIAA7AQAjswEiAkEANgIAI4ECIAZBxAFqIAZBEGogBigCDCAEEOQBIAIoAgAhASACQQA2AgAgAUEBRg0AI7MBIgJBADYCACPpASAGQcwCaiAGQcgCahDeASEAIAIoAgAhASACQQA2AgAgAUEBRg0AIAAEQCAEIAQoAgBBAnI2AgALIAYoAswCIQIgAxCnXRogBkHEAWoQp10aIAZB0AJqJAEgAg8LEN8BCyECIAMQp10aIAZBxAFqEKddGiACEOABAAsRACAAIAEgAiADIAQgBRDlUwviBgEEfyMBQdACayIGJAEgBiACNgLIAiAGIAE2AswCIAMQslMhCCAAIAMgBkHQAWoQ3VMhCSAGQcQBaiADIAZBxAJqEN5TI7MBIQIgBkG4AWoQs00iAxDoTSEBIAJBADYCACPXASADIAEQ6AEgAigCACEBIAJBADYCAAJ/AkACQCABQQFHBEAgBiADQQAQvU4iATYCtAEgBiAGQRBqNgIMIAZBADYCCANAAkAjswEiAkEANgIAI+kBIAZBzAJqIAZByAJqEN4BIQcgAigCACEAIAJBADYCACAAQQFGDQAgBw0EIAYoArQBIAMQ4k0gAWpGBEAjswEhAiADEOJNIQAgAxDiTSEBIAJBADYCACPXASADIAFBAXQQ6AEgAigCACEBIAJBADYCACABQQFGDQQjswEhAiADEOhNIQEgAkEANgIAI9cBIAMgARDoASACKAIAIQEgAkEANgIAIAFBAUYNBCAGIANBABC9TiIBIABqNgK0AQsjswEiAkEANgIAI/0BIAZBzAJqEOUBIQcgAigCACEAIAJBADYCACAAQQFGDQAjswEiAkEANgIAI+ICIAcgCCABIAZBtAFqIAZBCGogBigCxAIgBkHEAWogBkEQaiAGQQxqIAkQ/wEhByACKAIAIQAgAkEANgIAIABBAUYNACAHDQQjswEiAkEANgIAI4YCIAZBzAJqEOUBGiACKAIAIQAgAkEANgIAIABBAUcNAQsLEN8BDAMLEN8BDAILEN8BDAELAkAgBkHEAWoQ4k1FDQAgBigCDCICIAZBEGprQZ8BSg0AIAYgAkEEajYCDCACIAYoAgg2AgALI7MBIgJBADYCACPkBSABIAYoArQBIAQgCBDvASEAIAIoAgAhASACQQA2AgACQCABQQFGDQAgBSAANgIAI7MBIgJBADYCACOBAiAGQcQBaiAGQRBqIAYoAgwgBBDkASACKAIAIQEgAkEANgIAIAFBAUYNACOzASICQQA2AgAj6QEgBkHMAmogBkHIAmoQ3gEhACACKAIAIQEgAkEANgIAIAFBAUYNACAABEAgBCAEKAIAQQJyNgIACyAGKALMAiECIAMQp10aIAZBxAFqEKddGiAGQdACaiQBIAIPCxDfAQshAiADEKddGiAGQcQBahCnXRogAhDgAQALEQAgACABIAIgAyAEIAUQ51ML4gYBBH8jAUHQAmsiBiQBIAYgAjYCyAIgBiABNgLMAiADELJTIQggACADIAZB0AFqEN1TIQkgBkHEAWogAyAGQcQCahDeUyOzASECIAZBuAFqELNNIgMQ6E0hASACQQA2AgAj1wEgAyABEOgBIAIoAgAhASACQQA2AgACfwJAAkAgAUEBRwRAIAYgA0EAEL1OIgE2ArQBIAYgBkEQajYCDCAGQQA2AggDQAJAI7MBIgJBADYCACPpASAGQcwCaiAGQcgCahDeASEHIAIoAgAhACACQQA2AgAgAEEBRg0AIAcNBCAGKAK0ASADEOJNIAFqRgRAI7MBIQIgAxDiTSEAIAMQ4k0hASACQQA2AgAj1wEgAyABQQF0EOgBIAIoAgAhASACQQA2AgAgAUEBRg0EI7MBIQIgAxDoTSEBIAJBADYCACPXASADIAEQ6AEgAigCACEBIAJBADYCACABQQFGDQQgBiADQQAQvU4iASAAajYCtAELI7MBIgJBADYCACP9ASAGQcwCahDlASEHIAIoAgAhACACQQA2AgAgAEEBRg0AI7MBIgJBADYCACPiAiAHIAggASAGQbQBaiAGQQhqIAYoAsQCIAZBxAFqIAZBEGogBkEMaiAJEP8BIQcgAigCACEAIAJBADYCACAAQQFGDQAgBw0EI7MBIgJBADYCACOGAiAGQcwCahDlARogAigCACEAIAJBADYCACAAQQFHDQELCxDfAQwDCxDfAQwCCxDfAQwBCwJAIAZBxAFqEOJNRQ0AIAYoAgwiAiAGQRBqa0GfAUoNACAGIAJBBGo2AgwgAiAGKAIINgIACyOzASICQQA2AgAj4wUgASAGKAK0ASAEIAgQ7wEhACACKAIAIQEgAkEANgIAAkAgAUEBRg0AIAUgADYCACOzASICQQA2AgAjgQIgBkHEAWogBkEQaiAGKAIMIAQQ5AEgAigCACEBIAJBADYCACABQQFGDQAjswEiAkEANgIAI+kBIAZBzAJqIAZByAJqEN4BIQAgAigCACEBIAJBADYCACABQQFGDQAgAARAIAQgBCgCAEECcjYCAAsgBigCzAIhAiADEKddGiAGQcQBahCnXRogBkHQAmokASACDwsQ3wELIQIgAxCnXRogBkHEAWoQp10aIAIQ4AEACxEAIAAgASACIAMgBCAFEOlTC+QGAgR/AX4jAUHQAmsiBiQBIAYgAjYCyAIgBiABNgLMAiADELJTIQggACADIAZB0AFqEN1TIQkgBkHEAWogAyAGQcQCahDeUyOzASECIAZBuAFqELNNIgMQ6E0hASACQQA2AgAj1wEgAyABEOgBIAIoAgAhASACQQA2AgACfwJAAkAgAUEBRwRAIAYgA0EAEL1OIgE2ArQBIAYgBkEQajYCDCAGQQA2AggDQAJAI7MBIgJBADYCACPpASAGQcwCaiAGQcgCahDeASEHIAIoAgAhACACQQA2AgAgAEEBRg0AIAcNBCAGKAK0ASADEOJNIAFqRgRAI7MBIQIgAxDiTSEAIAMQ4k0hASACQQA2AgAj1wEgAyABQQF0EOgBIAIoAgAhASACQQA2AgAgAUEBRg0EI7MBIQIgAxDoTSEBIAJBADYCACPXASADIAEQ6AEgAigCACEBIAJBADYCACABQQFGDQQgBiADQQAQvU4iASAAajYCtAELI7MBIgJBADYCACP9ASAGQcwCahDlASEHIAIoAgAhACACQQA2AgAgAEEBRg0AI7MBIgJBADYCACPiAiAHIAggASAGQbQBaiAGQQhqIAYoAsQCIAZBxAFqIAZBEGogBkEMaiAJEP8BIQcgAigCACEAIAJBADYCACAAQQFGDQAgBw0EI7MBIgJBADYCACOGAiAGQcwCahDlARogAigCACEAIAJBADYCACAAQQFHDQELCxDfAQwDCxDfAQwCCxDfAQwBCwJAIAZBxAFqEOJNRQ0AIAYoAgwiAiAGQRBqa0GfAUoNACAGIAJBBGo2AgwgAiAGKAIINgIACyOzASICQQA2AgAj4gUgASAGKAK0ASAEIAgQgAIhCiACKAIAIQEgAkEANgIAAkAgAUEBRg0AIAUgCjcDACOzASICQQA2AgAjgQIgBkHEAWogBkEQaiAGKAIMIAQQ5AEgAigCACEBIAJBADYCACABQQFGDQAjswEiAkEANgIAI+kBIAZBzAJqIAZByAJqEN4BIQAgAigCACEBIAJBADYCACABQQFGDQAgAARAIAQgBCgCAEECcjYCAAsgBigCzAIhAiADEKddGiAGQcQBahCnXRogBkHQAmokASACDwsQ3wELIQIgAxCnXRogBkHEAWoQp10aIAIQ4AEACxEAIAAgASACIAMgBCAFEOtTC4EHAgJ/AX0jAUHwAmsiACQBIAAgAjYC6AIgACABNgLsAiAAQcwBaiADIABB4AFqIABB3AFqIABB2AFqEOxTI7MBIQEgAEHAAWoQs00iAhDoTSEDIAFBADYCACPXASACIAMQ6AEgASgCACEDIAFBADYCAAJ/AkACQCADQQFHBEAgACACQQAQvU4iAzYCvAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABgNAAkAjswEiAUEANgIAI+kBIABB7AJqIABB6AJqEN4BIQcgASgCACEGIAFBADYCACAGQQFGDQAgBw0EIAAoArwBIAIQ4k0gA2pGBEAjswEhASACEOJNIQYgAhDiTSEDIAFBADYCACPXASACIANBAXQQ6AEgASgCACEDIAFBADYCACADQQFGDQQjswEhASACEOhNIQMgAUEANgIAI9cBIAIgAxDoASABKAIAIQMgAUEANgIAIANBAUYNBCAAIAJBABC9TiIDIAZqNgK8AQsjswEiAUEANgIAI/0BIABB7AJqEOUBIQcgASgCACEG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IAFBDGoQyE0aCw0AIAAgAUEYahDITRoLDQAgACABQSRqEMhNGgsNACAAIAFBMGoQyE0aCwcAIAAoAjwLDAAgACABKAJANgAACwwAIAAgASgCRDYAAAsNACAAIAFBEGoQyE0aCw0AIAAgAUEcahD9VBoLRwEBfyMBQRBrIgIkAQJAIAEQvU1FBEAgACABKAIINgIIIAAgASkCADcCAAwBCyAAIAEoAgAgASgCBBDuXQsgAkEQaiQBIAALDQAgACABQShqEP1UGgsNACAAIAFBNGoQ/VQaCwcAIAAoAkALDAAgACABKAJINgAAC88GAQN/IwFBkAJrIgAkASAAIAI2AogCIAAgATYCjAIgACOyAjYCECOzASEBIABBmAFqIABBoAFqIABBEGoQjFQhByABQQA2AgAj2AEgAEGQAWogBBDoASABKAIAIQggAUEANgIAAkACQAJAAkACQAJAAn8CQAJAAkAgCEEBRwRAI7MBIgFBADYCACOXAiAAQZABahDlASEIIAEoAgAhCSABQQA2AgAgCUEBRg0BIABBADoAjwEgBCgCBCEEI7MBIgFBADYCACPVBSAAQYwCaiACIAMgAEGQAWogBCAFIABBjwFqIAggByAAQZQBaiAAQYQCahCGAiEEIAEoAgAhAiABQQA2AgAgAkEBRg0GIARFDQUjswEiAUEANgIAIAAjAEH1owtqIgIpAAA3A4ABIAAgAigABzYAhwEj4wIgCCAAQYABaiAAQYoBaiAAQfYAahDvARogASgCACECIAFBADYCACACQQFGDQIgACPxATYCBCAAQQhqQQAgAEEEahCMVCEEIABBEGogACgClAEgBygCAGtB4wBIDQQaIAQgACgClAEgBygCAGtBAmoQ40YQ6VIgBCgCAA0DI7MBIgFBADYCACP4ARDqASABKAIAIQIgAUEANgIAIAJBAUYNBwwKCxDfASEBDAgLEN8BIQEMBgsQ3wEhAQwFCyAEKAIACyECIAAtAI8BBEAgAkEtOgAAIAJBAWohAgsgBygCACEBA0AgACgClAEgAU0EQCACQQA6AAAgACAGNgIAIABBEGojAEH0sAZqIAAQ30RBAUcEQCOzASIBQQA2AgAj+wIjAEG0wANqEPABIAEoAgAhAiABQQA2AgAgAkEBRw0IDAULIAQQ6lIaBSACIABB9gBqIABB9gBqEIRVIAEQ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QCADQQxqIANBCGoQx08iAUUNACADQQNqIANBDGooAgAgA0EEaigCABCMWUUNACADQQxqELgCGiADQQRqELgCGgwBCwsgA0EQaiQBIAFBAXMLMgEBfyMBQRBrIgIkASACIAAoAgA2AgwgAkEMaiABELtVGiACKAIMIQAgAkEQaiQBIAALBwAgABCXTwsiACAAIAEQuT8Q6VIgARCXTygCACEBIAAQl08gATYCACAAC90GAQN/IwFB8ARrIgAkASAAIAI2AugEIAAgATYC7AQgACOyAjYCECOzASEBIABByAFqIABB0AFqIABBEGoQolQhByABQQA2AgAj2AEgAEHAAWogBBDoASABKAIAIQggAUEANgIAAkACQAJAAkACQAJAAn8CQAJAAkAgCEEBRwRAI7MBIgFBADYCACORAiAAQcABahDlASEIIAEoAgAhCSABQQA2AgAgCUEBRg0BIABBADoAvwEgBCgCBCEEI7MBIgFBADYCACPSBSAAQewEaiACIAMgAEHAAWogBCAFIABBvwFqIAggByAAQcQBaiAAQeAEahCGAiEEIAEoAgAhAiABQQA2AgAgAkEBRg0GIARFDQUjswEiAUEANgIAIAAjAEH1owtqIgIpAAA3A7ABIAAgAigABzYAtwEj1AIgCCAAQbABaiAAQboBaiAAQYABahDvARogASgCACECIAFBADYCACACQQFGDQIgACPxATYCBCAAQQhqQQAgAEEEahCMVCEEIABBEGogACgCxAEgBygCAGtBiQNIDQQaIAQgACgCxAEgBygCAGtBAnVBAmoQ40YQ6VIgBCgCAA0DI7MBIgFBADYCACP4ARDqASABKAIAIQIgAUEANgIAIAJBAUYNBwwKCxDfASEBDAgLEN8BIQEMBgsQ3wEhAQwFCyAEKAIACyECIAAtAL8BBEAgAkEtOgAAIAJBAWohAgsgBygCACEBA0AgACgCxAEgAU0EQCACQQA6AAAgACAGNgIAIABBEGojAEH0sAZqIAAQ30RBAUcEQCOzASIBQQA2AgAj+wIjAEG0wANqEPABIAEoAgAhAiABQQA2AgAgAkEBRw0IDAULIAQQ6lIaBSACIABBsAFqIABBgAFqIABBgAFqEJtVIAEQ1kwgAEGAAWprQQJ1ai0AADoAACACQQFqIQIgAUEEaiEBDAELCwsjswEiAUEANgIAI+kBIABB7ARqIABB6ARqEN4BIQQgASgCACECIAFBADYCACACQQFGDQAgBARAIAUgBSgCAEECcjYCAAsgACgC7AQhASAAQcABahDrVhogBxDqUhogAEHwBGokASABDwsQ3wEhAQwBCxDfASEBIAQQ6lIaCyAAQcABahDrVhoLIAcQ6lIaIAEQ4AEACwALoRoBCn8jAUGQBGsiCyQBIAsgCjYCiAQgCyABNgKMBAJ/AkACQAJAIAAgC0GMBGoQoFEEQCAFIAUoAgBBBHI2AgBBACEADAELIAsjsgI2AkggCyALQegAaiALQfAAaiALQcgAahCFVSIRKAIAIgo2AmQgCyAKQZADajYCYCALQcgAahCzTSETIAtBPGoQ8FQhDCALQTBqEPBUIQ4gC0EkahDwVCENI7MBIQogC0EYahDwVCESIApBADYCACPcCCACIAMgC0HcAGogC0HYAGogC0HUAGogEyAMIA4gDSALQRRqEIcCIAooAgAhASAKQQA2AgAgAUEBRwRAIAkgCCgCADYCACAEQYAEcSEUQQAhCgNAIAohDwJAAkACQAJAAkACfwJAIBBBBEYNACOzASIKQQA2AgAj6QEgACALQYwEahDeASEDIAooAgAhASAKQQA2AgAgAUEBRg0KIAMNAEEAIQMgDyEKAkACQAJAAkACQAJAIAtB3ABqIBBqLAAADgUBAAQDBQwLIBBBA0YNCiOzASIKQQA2AgAj/QEgABDlASEDIAooAgAhASAKQQA2AgAgAUEBRg0PI7MBIgpBADYCACPJAiAHQQEgAxDcASEDIAooAgAhASAKQQA2AgAgAUEBRg0PIAMEQCOzASIKQQA2AgAj0QUgC0EMaiAAQQAQ6wEgCigCACEBIApBADYCACABQQFHBEAgCygCDCEBI7MBIgpBADYCACP3ASASIAEQ6AEgCigCACEBIApBADYCACABQQFHDQMLEN8BDBILIAUgBSgCAEEEcjYCAEEADAYLIBBBA0YNCQsDQCOzASIKQQA2AgAj6QEgACALQYwEahDeASEDIAooAgAhASAKQQA2AgAgAUEBRg0PIAMNCSOzASIKQQA2AgAj/QEgABDlASEDIAooAgAhASAKQQA2AgAgAUEBRg0PI7MBIgpBADYCACPJAiAHQQEgAxDcASEDIAooAgAhASAKQQA2AgAgAUEBRg0PIANFDQkjswEi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NgIAIAJBAUYNAiMAQcCw8AFqQQEQ/1UaI7MBIgBBADYCACPVCCABIwBBwLDwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjAEHIsPABakEBEIBWGiOzASIAQQA2AgAj1AggASMAQciw8AFqEOgBIAAoAgAhAiAAQQA2AgAgAkEBRg0CI7MBIgBBADYCACMCQcEoahDqASAAKAIAIQIgAEEANgIAIAJBAUYNAiOzASIAQQA2AgAj0wggASMAQdCw8AFqEOgBIAAoAgAhAiAAQQA2AgAgAkEBRg0CIwBB4LDwAWpBARCBVhojswEiAEEANgIAI9IIIAEjAEHgsPABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiMAQeiw8AFqQQEQglYaI7MBIgBBADYCACPRCCABIwBB6LDwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjAEHwsPABakEBEINWGiOzASIAQQA2AgAj0AggASMAQfCw8AFqEOgBIAAoAgAhAiAAQQA2AgAgAkEBRg0CIwBB+LDwAWpBARCEVhojswEiAEEANgIAI88IIAEjAEH4sPABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiOzASIAQQA2AgAjAkHHKGoQ6gEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAI84IIAEjAEGAsfABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiOzASIAQQA2AgAjAkHJKGoQ6gEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAI80IIAEjAEGYsfABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiMAQbix8AFqQQEQhVYaI7MBIgBBADYCACPMCCABIwBBuLHwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjAEHAsfABakEBEIZWGiOzASIAQQA2AgAjywggASMAQcCx8AFqEOgBIAAoAgAhAiAAQQA2AgAgAkEBRg0CIwBByLHwAWpBARCHVhojswEiAEEANgIAI8oIIAEjAEHIsfABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiMAQdCx8AFqQQEQiFYaI7MBIgBBADYCACPJCCABIwBB0LHwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAIwJBzyhqEOoBIAAoAgAhAiAAQQA2AgAgAkEBRg0CI7MBIgBBADYCACPICCABIwBB2LHwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjAEHgsfABakEBEIpWGiOzASIAQQA2AgAjxwggASMAQeCx8AFqEOgBIAAoAgAhAiAAQQA2AgAgAkEBRg0CIwBB6LHwAWpBARCLVhojswEiAEEANgIAI8YIIAEjAEHosfABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiMAQfCx8AFqQQEQjFYaI7MBIgBBADYCACPFCCABIwBB8LHwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAIwJB1ChqEOoBIAAoAgAhAiAAQQA2AgAgAkEBRg0CI7MBIgBBADYCACPECCABIwBB+LHwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAIwJB1ihqEOoBIAAoAgAhAiAAQQA2AgAgAkEBRg0CI7MBIgBBADYCACPDCCABIwBBgLLwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAIwJB2ChqEOoBIAAoAgAhAiAAQQA2AgAgAkEBRg0CI7MBIgBBADYCACPCCCABIwBBiLLwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAIwJB2ihqEOoBIAAoAgAhAiAAQQA2AgAgAkEBRg0CI7MBIgBBADYCACPBCCABIwBBkLLwAWoQ6AEgACgCACECIABBADYCACACQQFGDQIjAEGYsvABakEBEJFWGiOzASIAQQA2AgAjwAggASMAQZiy8AFqEOgBIAAoAgAhAiAAQQA2AgAgAkEBRg0CIwBBqLLwAWpBARCSVhojswEiAEEANgIAI78IIAEjAEGosvABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiOzASIAQQA2AgAjAkHeKGoQ6gEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAI74IIAEjAEG4svABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiOzASIAQQA2AgAjAkHgKGoQ6gEgACgCACECIABBADYCACACQQFGDQIjswEiAEEANgIAI70IIAEjAEHIsvABahDoASAAKAIAIQIgAEEANgIAIAJBAUYNAiOzASIA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fyMBQRBrIgQkASABENVPIARBDGogARDfViEDAkAgAEEIaiIBEPhVIAJNBEAjswEiAEEANgIAI7YIIAEgAkEBahDoASAAKAIAIQUgAEEANgIAIAVBAUYNAQsgASACEJtWKAIABEAgASACEJtWKAIAEIFOGgsgAxC5PyEAIAEgAhCbViAANgIAIAMQ4VYgBEEQaiQBDwsQ3wEhAiADEOFWIAIQ4AEACxwBAX8jtQghAiAAIAEQxFUiASACQQhqNgIAIAELHAEBfyO0CCECIAAgARDEVSIBIAJBCGo2AgAgAQscAQF/I7MIIQIgACABEMRVIgEgAkEIajYCACABCxwBAX8juQUhAiAAIAEQxFUiASACQQhqNgIAIAELHAEBfyO4BSECIAAgARDEVSIBIAJBCGo2AgAgAQscAQF/I7cFIQIgACABEMRVIgEgAkEIajYCACABCxwBAX8jtgUhAiAAIAEQxFUiASACQQhqNgIAIAELHAEBfyO1BSECIAAgARDEVSIBIAJBCGo2AgAgAQscAQF/I7IIIQIgACABEMRVIgEgAkEIajYCACABCxwBAX8jsQghAiAAIAEQxFUiASACQQhqNgIAIAELHAEBfyOwCCECIAAgARDEVSIBIAJBCGo2AgAgAQscAQF/I68IIQIgACABEMRVIgEgAkEIajYCACABCxwBAX8jrgghAiAAIAEQxFUiASACQQhqNgIAIAELHAEBfyOtCCECIAAgARDEVSIBIAJBCGo2AgAgAQscAQF/I6wIIQIgACABEMRVIgEgAkEIajYCACABCxwBAX8jqwghAiAAIAEQxFUiASACQQhqNgIAIAELHAEBfyOqCCECIAAgARDEVSIBIAJBCGo2AgAgAQscAQF/I6kIIQIgACABEMRVIgEgAkEIajYCACABCxwBAX8jqAghAiAAIAEQxFUiASACQQhqNgIAIAELHAEBfyOnCCECIAAgARDEVSIBIAJBCGo2AgAgAQswAQF/I6YIIQIgACABEMRVIgFBCGoQy1khACABIAJBCGo2AgAgACACQThqNgIAIAELMAEBfyOlCCECIAAgARDEVSIBQQhqEMxZIQAgASACQQhqNgIAIAAgAkE4ajYCACABC1ABAX8jswEhAiAAIAEQxFUhASACQQA2AgAjtAUgAUEIahDlARogAigCACEAIAJBADYCACAAQQFHBEAgASOzBUEIajYCACABDwsQ3wEQ4AEAC1ABAX8jswEhAiAAIAEQxFUhASACQQA2AgAjtAUgAUEIahDlARogAigCACEAIAJBADYCACAAQQFHBEAgASOyBUEIajYCACABDwsQ3wEQ4AEACxwBAX8jpAghAiAAIAEQxFUiASACQQhqNgIAIAELHAEBfyOjCCECIAAgARDEVSIBIAJBCGo2AgAgAQs+AQF/IAAoAgAQrFkgACgCABogACgCACIBKAIABEAgARD5VSAAKAIAEKFZIAAoAgAiACgCACAAEKpZEK1ZCwuPHAEEfyPhAiEFIAAgAhDEVSIGIAVBCGo2AgAjswEiAkEANgIAI/oCIAZBCGpBHhDeASEAIAIoAgAhBSACQQA2AgACQAJAAkACQAJAAkAgBUEBRwRAI7MBIgJBADYCACO4AyAGQZgBaiABEN4BIQUgAigCACEBIAJBADYCACABQQFHBEBBACECI7MBIgFBADYCACOiCBDhASEEIAEoAgAhAyABQQA2AgAgA0EBRg0CIAQoAgAhAyOzASIBQQA2AgAjkQMgACADQQhqEN4BGiABKAIAIQMgAUEANgIAIANBAUYNAgNAAkAgABD4VSACTQRAI7MBIgJBADYCACPjAUEMEOUBIQEgAigCACEDIAJBADYCACADQQFHDQEMBQsgACACEJtWKAIABEAgACACEJtWKAIAENVPCyACQQFqIQIMAQsLI7MBIgJBADYCACOxBSABIAVBABDcARogAigCACEDIAJBADYCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgA0EBRwRAI7MBIgJBADYCACOwBSAGIAEQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQQwQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjrwUgASAFQQAQ3AEaIAIoAgAhAyACQQA2AgAgA0EBRg0BI7MBIgJBADYCACOuBSAGIAEQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQRQQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjrQUgASAFQQAQ3AEaIAIoAgAhAyACQQA2AgAgA0EBRg0CI7MBIgJBADYCACOsBSAGIAEQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQQwQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjqwUgASAFQQAQ3AEaIAIoAgAhAyACQQA2AgAgA0EBRg0DI7MBIgJBADYCACOqBSAGIAEQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQQgQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjqQUgASAFQQAQ3AEhBCACKAIAIQMgAkEANgIAIANBAUYNBCOzASICQQA2AgAjqAUgBiAEEOgBIAIoAgAhASACQQA2AgAgAUEBRg0XI7MBIgJBADYCACPjAUEMEOUBIQEgAigCACEDIAJBADYCACADQQFGDRcjswEiAkEANgIAI6cFIAEgBUEAENwBIQQgAigCACEDIAJBADYCACADQQFGDQUjswEiAkEANgIAI6YFIAYgBBDoASACKAIAIQEgAkEANgIAIAFBAUYNFyOzASICQQA2AgAj4wFBCBDlASEBIAIoAgAhAyACQQA2AgAgA0EBRg0XI7MBIgJBADYCACOlBSABIAVBABDcASEEIAIoAgAhAyACQQA2AgAgA0EBRg0GI7MBIgJBADYCACOkBSAGIAQQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQQgQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjowUgASAFQQAQ3AEhBCACKAIAIQMgAkEANgIAIANBAUYNByOzASICQQA2AgAjogUgBiAEEOgBIAIoAgAhASACQQA2AgAgAUEBRg0XI7MBIgJBADYCACPjAUEIEOUBIQEgAigCACEDIAJBADYCACADQQFGDRcjswEiAkEANgIAI6EFIAEgBUEAENwBIQQgAigCACEDIAJBADYCACADQQFGDQgjswEiAkEANgIAI6AFIAYgBBDoASACKAIAIQEgAkEANgIAIAFBAUYNFyOzASICQQA2AgAj4wFBCBDlASEBIAIoAgAhAyACQQA2AgAgA0EBRg0XI7MBIgJBADYCACOfBSABIAVBABDcASEEIAIoAgAhAyACQQA2AgAgA0EBRg0JI7MBIgJBADYCACOeBSAGIAQQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQRgQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjnQUgASAFQQAQ3AEaIAIoAgAhAyACQQA2AgAgA0EBRg0KI7MBIgJBADYCACOcBSAGIAEQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQRwQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjmwUgASAFQQAQ3AEaIAIoAgAhAyACQQA2AgAgA0EBRg0LI7MBIgJBADYCACOaBSAGIAEQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQcgAEOUBIQEgAigCACEDIAJBADYCACADQQFGDRcjswEiAkEANgIAI5kFIAEgBUEAENwBIQQgAigCACEDIAJBADYCACADQQFGDQwjswEiAkEANgIAI5gFIAYgBBDoASACKAIAIQEgAkEANgIAIAFBAUYNFyOzASICQQA2AgAj4wFByAAQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjlwUgASAFQQAQ3AEhBCACKAIAIQMgAkEANgIAIANBAUYNDSOzASICQQA2AgAjlgUgBiAEEOgBIAIoAgAhASACQQA2AgAgAUEBRg0XI7MBIgJBADYCACPjAUHMABDlASEBIAIoAgAhAyACQQA2AgAgA0EBRg0XI7MBIgJBADYCACOVBSABIAVBABDcASEEIAIoAgAhAyACQQA2AgAgA0EBRg0OI7MBIgJBADYCACOUBSAGIAQQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQcwAEOUBIQEgAigCACEDIAJBADYCACADQQFGDRcjswEiAkEANgIAI5MFIAEgBUEAENwBIQQgAigCACEDIAJBADYCACADQQFGDQ8jswEiAkEANgIAI5IFIAYgBBDoASACKAIAIQEgAkEANgIAIAFBAUYNFyOzASICQQA2AgAj4wFBoAQQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjkQUgASAFQQAQ3AEhBCACKAIAIQMgAkEANgIAIANBAUYNECOzASICQQA2AgAjkAUgBiAEEOgBIAIoAgAhASACQQA2AgAgAUEBRg0XI7MBIgJBADYCACPjAUGgBBDlASEBIAIoAgAhAyACQQA2AgAgA0EBRg0XI7MBIgJBADYCACOPBSABIAVBABDcASEEIAIoAgAhAyACQQA2AgAgA0EBRg0RI7MBIgJBADYCACOOBSAGIAQQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQQwQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNFyOzASICQQA2AgAjjQUgASAFQQAQ3AEhBCACKAIAIQMgAkEANgIAIANBAUYNEiOzASICQQA2AgAjjAUgBiAEEOgBIAIoAgAhASACQQA2AgAgAUEBRg0XI7MBIgJBADYCACPjAUEMEOUBIQEgAigCACEDIAJBADYCACADQQFGDRcjswEiAkEANgIAI4sFIAEgBUEAENwBIQQgAigCACEDIAJBADYCACADQQFGDRMjswEiAkEANgIAI4oFIAYgBBDoASACKAIAIQEgAkEANgIAIAFBAUYNFyOzASICQQA2AgAj4wFBCBDlASEDIAIoAgAhASACQQA2AgAgAUEBRg0XI7MBIgJBADYCACOJBSADIAVBABDcASEEIAIoAgAhASACQQA2AgAgAUEBRg0UI7MBIgJBADYCACOIBSAGIAQQ6AEgAigCACEBIAJBADYCACABQQFGDRcjswEiAkEANgIAI+MBQQgQ5QEhAyACKAIAIQEgAkEANgIAIAFBAUYNFyOzASECIAMgBUEAEKtWIQEgAkEANgIAI4cFIAYgARDoASACKAIAIQEgAkEANgIAIAFBAUYNFyAGDwtBABDdASECIAEQ5EYMFwtBABDdASECIAEQ5EYMFgtBABDdASECIAEQ5EYMFQtBABDdASECIAEQ5EYMFAtBABDdASECIAEQ5EYMEwtBABDdASECIAEQ5EYMEgtBABDdASECIAEQ5EYMEQtBABDdASECIAEQ5EYMEAtBABDdASECIAEQ5EYMDwtBABDdASECIAEQ5EYMDgtBABDdASECIAEQ5EYMDQtBABDdASECIAEQ5EYMDAtBABDdASECIAEQ5EYMCwtBABDdASECIAEQ5EYMCgtBABDdASECIAEQ5EYMCQtBABDdASECIAEQ5EYMCAtBABDdASECIAEQ5EYMBwtBABDdASECIAEQ5EYMBgtBABDdASECIAEQ5EYMBQtBABDdASECIAEQ5EYMBAtBABDdASECIAMQ5EYMAwsQ3wEhAwwDCxDfASEDDAMLQQAQ3QEhAgsgAhDsARpBACECA0AgABD4VSACTQRAI7MBIgJBADYCACMEEOoBIAIoAgAhASACQQA2AgAgAUEBRw0FI7MBIQIQ3wEhAyACQQA2AgAjAxDqASACKAIAIQEgAkEANgIAIAFBAUYNBCAFEKddGgwCCyAAIAIQm1YoAgAEQCAAIAIQm1YoAgAQgU4aCyACQQFqIQIMAAsACyAAEPFVGgsgAxDgAQALQQAQ3QEaEPJhCwALSAEBfyMAQYSm8AFqLQAABEAjAEGApvABaigCAA8LEKxWGiMAIgBBhKbwAWpBAToAACAAQYCm8AFqIABB/KXwAWoiADYCACAACxsAIAAgAUcEQCAAIAEoAgAgASgCBBCtVgsgAAsNACAAKAIAIAFBAnRqCyEBAX8joQghAyAAIAEQ5E0gAhCuViICIANBCGo2AgAgAgshAQF/I6AIIQMgACABEORNIAIQr1YiAiADQQhqNgIAIAILIQEBfyOfCCEDIAAgARDkTSACELBWIgIgA0EIajYCACACCyEBAX8jngghAyAAIAEQ5E0gAhCxViICIANBCGo2AgAgAgshAQF/I50IIQMgACABEORNIAIQslYiAiADQQhqNgIAIAILIQEBfyOcCCEDIAAgARDkTSACELNWIgIgA0EIajYCACACC5sBAQR/I4YFIQMgACACEIlWIgIgA0EIajYCACOzASEAIAJBDGoQs00hAyACQRhqELNNIQQgAkEkahCzTSEFIAJBMGoQs00hBiABEORNIQEgAEEANgIAI5sIIAIgARDoASAAKAIAIQEgAEEANgIAIAFBAUcEQCACDwsQ3wEhACAGEKddGiAFEKddGiAEEKddGiADEKddGiAAEOABAAubAQEEfyOFBSEDIAAgAhCKViICIANBCGo2AgAjswEhACACQQxqELNNIQMgAkEYahCzTSEEIAJBJGoQs00hBSACQTBqELNNIQYgARDkTSEBIABBADYCACOaCCACIAEQ6AEgACgCACEBIABBADYCACABQQFHBEAgAg8LEN8BIQAgBhCnXRogBRCnXRogBBCnXRogAxCnXRogABDgAQALmwEBBH8jhAUhAyAAIAIQi1YiAiADQQhqNgIAI7MBIQAgAkEQahCzTSEDIAJBHGoQ8FQhBCACQShqEPBUIQUgAkE0ahDwVCEGIAEQ5E0hASAAQQA2AgAjmQggAiABEOgBIAAoAgAhASAAQQA2AgAgAUEBRwRAIAIPCxDfASEAIAYQ5V0aIAUQ5V0aIAQQ5V0aIAMQp10aIAAQ4AEAC5sBAQR/I4MFIQMgACACEIxWIgIgA0EIajYCACOzASEAIAJBEGoQs00hAyACQRxqEPBUIQQgAkEoahDwVCEFIAJBNGoQ8FQhBiABEORNIQEgAEEANgIAI5gIIAIgARDoASAAKAIAIQEgAEEANgIAIAFBAUcEQCACDwsQ3wEhACAGEOVdGiAFEOVdGiAEEOVdGiADEKddGiAAEOABAAtfAQF/I7MBIQMgACACEJFWIQIgA0EANgIAI5cIIAJBDGogARDeARogAygCACEAIANBADYCACAAQQFHBEAgAiOWCCIDQdQAajYCCCACIANBCGo2AgAgAg8LEN8BEOABAAtfAQF/I7MBIQMgACACEJJWIQIgA0EANgIAI5UIIAJBDGogARDeARogAygCACEAIANBADYCACAAQQFHBEAgAiOUCCIDQdQAajYCCCACIANBCGo2AgAgAg8LEN8BEOABAAseAQF/I5MIIQMgACABIAIQulYiAiADQQhqNgIAIAILHgEBfyOSCCEDIAAgASACELtWIgIgA0EIajYCACACCxoAI5EIIQEgACACEJVWIgIgAUEIajYCACACCxoAI5AIIQEgACACEJZWIgIgAUEIajYCACACCysBAn8jAEHosvABakEBEMNVGiMAIgBB/KXwAWoiASAAQeiy8AFqNgIAIAELpgEBA38jAUEQayIDJAECQCABIAIQ9U8iBCAAEKpZTQRAIAMgAjYCDCABIAAQ+FUgBE8iBQR/IAIFIAMgATYCDCADQQxqIAAQ+FUQ9k8gAygCDAsgACgCABDqSyEBIAVFBEAgACADKAIMIAIgBCAAEPhVaxCwWQwCCyAAIAEQ5VYMAQsgABCxWSAAIAAgBBCyWRD0VSAAIAEgAiAEELBZCyADQRBqJAELGgAjuQUhASAAIAIQxFUiAiABQQhqNgIAIAILtwIBA38jAUEgayIEJAEj/gMhAyAAIAIQxFUiACADQQhqNgIAI7MBIgJBADYCACPIAkH/////ByABQQAQ3AEhAyACKAIAIQUgAkEANgIAAkAgBUEBRwRAIAAgAzYCCCADRQRAI7MBIgJBADYCACOPAiAEQQhqIAEQ3gEhAyACKAIAIQEgAkEANgIAAkACQAJAIAFBAUcEQCOzASICQQA2AgAjowIgBEEUaiMAQYOfDmogAxDrASACKAIAIQEgAkEANgIAIAFBAUYNASOzASICQQA2AgAjAkGiKWogBEEUahDwASACKAIAIQEgAkEANgIAIAFBAUYNAgALEN8BIQIMBQsQ3wEhAgwBCxDfASECIARBFGoQp10aCyADEKddGgwCCyAEQSBqJAEgAA8LEN8BIQILIAIQ4AEACxoAI7gFIQEgACACEMRVIgIgAUEIajYCACACCxoAI7cFIQEgACACEMRVIgIgAUEIajYCACACCxoAI7YFIQEgACACEMRVIgIgAUEIajYCACACCxoAI7UFIQEgACACEMRVIgIgAUEIajYCACACC58IAQh/IwFBIGsiBSQBAkAgBUEcaiABEJdYIgcQixxFBEAjswEiAEEANgIAI48CIAVBBGogARDeASECIAAoAgAhASAAQQA2AgACQAJAAkAgAUEBRwRAI7MBIgFBADYCACOjAiAFQRBqIwBBp6AOaiACEOsBIAEoAgAhACABQQA2AgAgAEEBRg0BI7MBIgFBADYCACMCQaIpaiAFQRBqEPABIAEoAgAhACABQQA2AgAgAEEBRg0CAAsQ3wEhAQwECxDfASEBDAELEN8BIQEgBUEQahCnXRoLIAIQp10aDAELIAcoAgAhASOzASICQQA2AgAj+QIgARDlASEBIAIoAgAhBCACQQA2AgACQCAEQQFGDQAgASgCFCEEIAcoAgAhAyOzASICQQA2AgAjAkGkKWogAEEIaiAEIAMQ3AEhAyACKAIAIQQgAkEANgIAIARBAUYNACADRQRAIABB/wA6AAgLIAEoAhghBCAHKAIAIQMjswEiAkEANgIAIwJBpClqIABBCWogBCADENwBIQMgAigCACEEIAJBADYCACAEQQFGDQAgA0UEQCAAQf8AOgAJCyABKAIcIQQjswEiAkEANgIAI5YCIABBDGogBBDeARogAigCACEEIAJBADYCACAEQQFGDQAgASgCECEDI7MBIgJBADYCACOWAiAAQRhqIgQgAxDeARogAigCACEDIAJBADYCACADQQFGDQAgACABLAApIgJB/wBGBH9BAAUgAgs2AjwCQCABLQAuRQRAI7MBIgJBADYCACOWAiAAQSRqIwBB8tkNahDeARogAigCACEDIAJBADYCACADQQFHDQEMAgsgASgCICEDI7MBIgJBADYCACOWAiAAQSRqIAMQ3gEaIAIoAgAhAyACQQA2AgAgA0EBRg0BCwJAIAEtAC9FBEAjswEiAkEANgIAI5YCIABBMGojAEHy2Q1qEN4BGiACKAIAIQMgAkEANgIAIANBAUYNAgwBCyABKAIkIQMjswEiAkEANgIAI5YCIABBMGogAxDeARogAigCACEDIAJBADYCACADQQFGDQELI7MBIgJBADYCACO4AyAFQRBqIAQQ3gEhAyACKAIAIQYgAkEANgIAAkAgBkEBRwRAIAEsAC4hBiABLAArIQggASwAKiEJI7MBIgJBADYCACMCQaYpaiAAQUBrIANBACAJIAggBhCJAiACKAIAIQYgAkEANgIAIAZBAUYNASABLAAvIQIgASwALSEGIAEsACwhCCOzASIBQQA2AgAjAkGmKWogAEHEAGogBEEAIAggBiACEIkCIAEoAgAhACABQQA2AgAgAEEBRg0BIAMQp10aIAcQm1gaIAVBIGokAQ8LEN8BIQEMAgsQ3wEhASADEKddGgwBCxDfASEBCyAHEJtYGiABEOABAAufCAEIfyMBQSBrIgUkAQJAIAVBHGogARCXWCIHEIscRQRAI7MBIgBBADYCACOPAiAFQQRqIAEQ3gEhAiAAKAIAIQEgAEEANgIAAkACQAJAIAFBAUcEQCOzASIBQQA2AgAjowIgBUEQaiMAQaegDmogAhDrASABKAIAIQAgAUEANgIAIABBAUYNASOzASIBQQA2AgAjAkGiKWogBUEQahDwASABKAIAIQAgAUEANgIAIABBAUYNAgALEN8BIQEMBAsQ3wEhAQwBCxDfASEBIAVBEGoQp10aCyACEKddGgwBCyAHKAIAIQEjswEiAkEANgIAI/kCIAEQ5QEhASACKAIAIQQgAkEANgIAAkAgBEEBRg0AIAEoAhQhBCAHKAIAIQMjswEiAkEANgIAIwJBpClqIABBCGogBCADENwBIQMgAigCACEEIAJBADYCACAEQQFGDQAgA0UEQCAAQf8AOgAICyABKAIYIQQgBygCACEDI7MBIgJBADYCACMCQaQpaiAAQQlqIAQgAxDcASEDIAIoAgAhBCACQQA2AgAgBEEBRg0AIANFBEAgAEH/ADoACQsgASgCHCEEI7MBIgJBADYCACOWAiAAQQxqIAQQ3gEaIAIoAgAhBCACQQA2AgAgBEEBRg0AIAEoAgwhAyOzASICQQA2AgAjlgIgAEEYaiIEIAMQ3gEaIAIoAgAhAyACQQA2AgAgA0EBRg0AIAAgASwAKCICQf8ARgR/QQAFIAILNgI8AkAgAS0ANEUEQCOzASICQQA2AgAjlgIgAEEkaiMAQfLZDWoQ3gEaIAIoAgAhAyACQQA2AgAgA0EBRw0BDAILIAEoAiAhAyOzASICQQA2AgAjlgIgAEEkaiADEN4BGiACKAIAIQMgAkEANgIAIANBAUYNAQsCQCABLQA1RQRAI7MBIgJBADYCACOWAiAAQTBqIwBB8tkNahDeARogAigCACEDIAJBADYCACADQQFGDQIMAQsgASgCJCEDI7MBIgJBADYCACOWAiAAQTBqIAMQ3gEaIAIoAgAhAyACQQA2AgAgA0EBRg0BCyOzASICQQA2AgAjuAMgBUEQaiAEEN4BIQMgAigCACEGIAJBADYCAAJAIAZBAUcEQCABLAA0IQYgASwAMSEIIAEsADAhCSOzASICQQA2AgAjAkGmKWogAEFAayADQQEgCSAIIAYQiQIgAigCACEGIAJBADYCACAGQQFGDQEgASwANSECIAEsADMhBiABLAAyIQgjswEiAUEANgIAIwJBpilqIABBxABqIARBASAIIAYgAhCJAiABKAIAIQAgAUEANgIAIABBAUYNASADEKddGiAHEJtYGiAFQSBqJAEPCxDfASEBDAILEN8BIQEgAxCnXRoMAQsQ3wEhAQsgBxCbWBogARDgAQALygsBCH8jAUGwA2siBCQBAkACQCAEQawDaiABEJdYIgcQixxFBEAjswEiAEEANgIAI48CIARBoANqIAEQ3gEhAiAAKAIAIQEgAEEANgIAAkACQAJAIAFBAUcEQCOzASIBQQA2AgAjowIgBEEQaiMAQaegDmogAhDrASABKAIAIQAgAUEANgIAIABBAUYNASOzASIBQQA2AgAjAkGiKWogBEEQahDwASABKAIAIQAgAUEANgIAIABBAUYNAgwGCxDfASEBDAQLEN8BIQEMAQsQ3wEhASAEQRBqEKddGgsgAhCnXRoMAQsgBygCACEBI7MBIgJBADYCACP5AiABEOUBIQEgAigCACEDIAJBADYCAAJAAkAgA0EBRg0AIAEoAhQhAyAHKAIAIQUjswEiAkEANgIAIwJBpylqIABBCGogAyAFENwBIQUgAigCACEDIAJBADYCACADQQFGDQAgBUUEQCAAQf////8HNgIICyABKAIYIQMgBygCACEFI7MBIgJBADYCACMCQacpaiAAQQxqIAMgBRDcASEFIAIoAgAhAyACQQA2AgAgA0EBRg0AIAVFBEAgAEH/////BzYCDAsgASgCHCEDI7MBIgJBADYCACOWAiAAQRBqIAMQ3gEaIAIoAgAhAyACQQA2AgAgA0EBRg0AIARCADcDCCAEIAEoAhA2AgQgBygCACEDI7MBIgJBADYCACP4AiAEQRBqIARBBGpB5AAgBEEIaiADEPMBIQMgAigCACEFIAJBADYCAAJAIAVBAUcEQCADQX9HDQEjswEiBEEANgIAI/sCIwBBw84IahDwASAEKAIAIQEgBEEANgIAIAFBAUcNBQsQ3wEhAQwDCyOzASICQQA2AgAj9wIgAEEcaiIFIARBEGogBEEQaiADQQJ0ahDcARogAigCACEDIAJBADYCACADQQFGDQEgACABLAApIgJB/wBGBH9BAAUgAgs2AkACQAJAAkACQCABLQAuRQRAI7MBIgJBADYCACO3AyAAQShqIwBBiMumAWoQ3gEaIAIoAgAhAyACQQA2AgAgA0EBRw0BDAYLIARCADcDCCAEIAEoAiA2AgQgBygCACEDI7MBIgJBADYCACP4AiAEQRBqIARBBGpB5AAgBEEIaiADEPMBIQMgAigCACEGIAJBADYCACAGQQFGDQUgA0F/Rg0BI7MBIgJBADYCACP3AiAAQShqIARBEGogBEEQaiADQQJ0ahDcARogAigCACEDIAJBADYCACADQQFGDQULIAEtAC9FBEAjswEiAkEANgIAI7cDIABBNGojAEGIy6YBahDeARogAigCACEDIAJBADYCACADQQFGDQUMAwsgBEIANwMIIAQgASgCJDYCBCAHKAIAIQMjswEiAkEANgIAI/gCIARBEGogBEEEakHkACAEQQhqIAMQ8wEhAyACKAIAIQYgAkEANgIAIAZBAUYNBCADQX9HDQELI7MBIgRBADYCACP7AiMAQcPOCGoQ8AEgBCgCACEBIARBADYCACABQQFHDQUMAwsjswEiAkEANgIAI/cCIABBNGogBEEQaiAEQRBqIANBAnRqENwBGiACKAIAIQMgAkEANgIAIANBAUYNAgsjswEiAkEANgIAI4IFIARBoANqIAUQ3gEhAyACKAIAIQYgAkEANgIAAkAgBkEBRwRAIAEsAC4hBiABLAArIQggASwAKiEJI7MBIgJBADYCACMCQawpaiAAQcQAaiADQQAgCSAIIAYQiQIgAigCACEGIAJBADYCACAGQQFGDQEgASwALyECIAEsAC0hBiABLAAsIQgjswEiAUEANgIAIwJBrClqIABByABqIAVBACAIIAYgAhCJAiABKAIAIQAgAUEANgIAIABBAUYNASADEOVdGiAHEJtYGiAEQbADaiQBDwsQ3wEhAQwDCxDfASEBIAMQ5V0aDAILEN8BIQEMAQsQ3wEhAQsgBxCbWBogARDgAQALAAvKCwEIfyMBQbADayIEJAECQAJAIARBrANqIAEQl1giBxCLHEUEQCOzASIAQQA2AgAjjwIgBEGgA2ogARDeASECIAAoAgAhASAAQQA2AgACQAJAAkAgAUEBRwRAI7MBIgFBADYCACOjAiAEQRBqIwBBp6AOaiACEOsBIAEoAgAhACABQQA2AgAgAEEBRg0BI7MBIgFBADYCACMCQaIpaiAEQRBqEPABIAEoAgAhACABQQA2AgAgAEEBRg0CDAYLEN8BIQEMBAsQ3wEhAQwBCxDfASEBIARBEGoQp10aCyACEKddGgwBCyAHKAIAIQEjswEiAkEANgIAI/kCIAEQ5QEhASACKAIAIQMgAkEANgIAAkACQCADQQFGDQAgASgCFCEDIAcoAgAhBSOzASICQQA2AgAjAkGnKWogAEEIaiADIAUQ3AEhBSACKAIAIQMgAkEANgIAIANBAUYNACAFRQRAIABB/////wc2AggLIAEoAhghAyAHKAIAIQUjswEiAkEANgIAIwJBpylqIABBDGogAyAFENwBIQUgAigCACEDIAJBADYCACADQQFGDQAgBUUEQCAAQf////8HNgIMCyABKAIcIQMjswEiAkEANgIAI5YCIABBEGogAxDeARogAigCACEDIAJBADYCACADQQFGDQAgBEIANwMIIAQgASgCDDYCBCAHKAIAIQMjswEiAkEANgIAI/gCIARBEGogBEEEakHkACAEQQhqIAMQ8wEh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ACOICCAFIAIQ6AEgACgCACEEIABBADYCACAEQQFGDQQjswEiAEEANgIAI4cIIAUgAhDoASAAKAIAIQQgAEEANgIAIARBAUYNBCOzASIAQQA2AgAjhgggBSACEOgBIAAoAgAhBCAAQQA2AgAgBEEBRg0EI7MBIgBBADYCACOFCCAFIAIQ6AEgACgCACEEIABBADYCACAEQQFGDQQjswEiAEEANgIAI4QIIAUgAhDoASAAKAIAIQQgAEEANgIAIARBAUYNBAsgA0EQcQRAI7MBIgBBADYCACODCCAFIAIQ6AEgACgCACEEIABBADYCACAEQQFGDQQjswEiAEEANgIAI4IIIAUgAhDoASAAKAIAIQQgAEEANgIAIARBAUYNBCOzASIAQQA2AgAjgQggBSACEOgBIAAoAgAhBCAAQQA2AgAgBEEBRg0EI7MBIgBBADYCACOACCAFIAIQ6AEgACgCACEEIABBADYCACAEQQFGDQQjswEiAEEANgIAI/8HIAUgAhDoASAAKAIAIQQgAEEANgIAIARBAUYNBCOzASIAQQA2AgAj/gcgBSACEOgBIAAoAgAhBCAAQQA2AgAgBEEBRg0EI7MBIgBBADYCACP9ByAFIAIQ6AEgACgCACEEIABBADYCACAEQQFGDQQjswEiAEEANgIAI/wHIAUgAhDoASAAKAIAIQQgAEEANgIAIARBAUYNBAsgA0ECcQRAI7MBIgBBADYCACP7ByAFIAIQ6AEgACgCACEEIABBADYCACAEQQFGDQQjswEiAEEANgIAI/oHIAUgAhDoASAAKAIAIQQgAEEANgIAIARBAUYNBCOzASIAQQA2AgAj+QcgBSACEOgBIAAoAgAhBCAAQQA2AgAgBEEBRg0EI7MBIgBBADYCACP4ByAFIAIQ6AEgACgCACEEIABBADYCACAEQQFGDQQjswEiAEEANgIAI/cHIAUgAhDoASAAKAIAIQQgAEEANgIAIARBAUYNBCOzASIAQQA2AgAj9gcgBSACEOgBIAAoAgAhBCAAQQA2AgAgBEEBRg0ECyADQQRxBEAjswEiAEEANgIAI/UHIAUgAhDoASAAKAIAIQQgAEEANgIAIARBAUYNBCOzASIAQQA2AgAj9AcgBSACEOgBIAAoAgAhBCAAQQA2AgAgBEEBRg0EI7MBIgBBADYCACPzByAFIAIQ6AEgACgC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QCAAEOJNIgIgARDiTUcNACAAEORNIQMgARDkTSEBIAAQvU1FBEADQCACRSEEIAJFDQIgAy0AACABLQAARw0CIAFBAWohASADQQFqIQMgAkEBayECDAALAAsgAyABIAIQuU1FIQQLIAQLQAECfyAAKAIAKAIAIgAoAgAgACgCCCICQQF1aiEBIAAoAgQhACABIAJBAXEEfyABKAIAIABqKAIABSAACxEDAAu3AgEDfyMBQSBrIgQkASP9AyEDIAAgAhD9VSIAIANBCGo2AgAjswEiAkEANgIAI8gCQf////8HIAFBABDcASEDIAIoAgAhBSACQQA2AgACQCAFQQFHBEAgACADNgIIIANFBEAjswEiAkEANgIAI48CIARBCGogARDeASEDIAIoAgAhASACQQA2AgACQAJAAkAgAUEBRwRAI7MBIgJBADYCACOjAiAEQRRqIwBB1aEOaiADEOsBIAIoAgAhASACQQA2AgAgAUEBRg0BI7MBIgJBADYCACMCQaIpaiAEQRRqEPABIAIoAgAhASACQQA2AgAgAUEBRg0CAAsQ3wEhAgwFCxDfASECDAELEN8BIQIgBEEUahCnXRoLIAMQp10aDAILIARBIGokASAADwsQ3wEhAgsgAhDgAQALVQEDfyOzASEBQQgQ62EhAiABQQA2AgAj5wcgAiAAEN4BIQMgASgCACEAIAFBADYCACAAQQFHBEAgAyPLAiODBBDxAQALEN8BIQEgAhDsYSABEOABAAv/AQEDfyMBQRBrIgQkASP9AyEDIAAgAhD9VSIAIANBCGo2AgAjswEhAiABEORNIQMgAkEANgIAI8gCQf////8HIANBABDcASEDIAIoAgAhBSACQQA2AgACQCAFQQFHBEAgACADNgIIIANFBEAjswEiAkEANgIAI7YDIARBBGojAEHVoQ5qIAEQ6wEgAigCACEDIAJBADYCAAJAIANBAUcEQCOzASICQQA2AgAjAkGiKWogBEEEahDwASACKAIAIQMgAkEANgIAIANBAUYNAQALEN8BIQIMAwsQ3wEhAiAEQQRqEKddGgwCCyAEQRBqJAEgAA8LEN8BIQILIAIQ4AEAC0sBAn8gACP9A0EIajYCACAAKAIIIQEjswEiAkEANgIAI9MCIAEQ8AEgAigCACEBIAJBADYCACABQQFHBEAgAA8LQQAQ3QEaEPJh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IARBAWohBCABQQFqIQEMAQsLIAILwQIBA38jAUEgayIEJAEj+wMhAyAAQQBBACACEJhXIgAgA0EIajYCACOzASICQQA2AgAjyAJB/////wcgAUEAENwBIQMgAigCACEFIAJBADYCAAJAIAVBAUcEQCAAIAM2AhAgA0UEQCOzASICQQA2AgAjjwIgBEEIaiABEN4BIQMgAigCACEBIAJBADYCAAJAAkACQCABQQFHBEAjswEiAkEANgIAI6MCIARBFGojAEHQog5qIAMQ6wEgAigCACEBIAJBADYCACABQQFGDQEjswEiAkEANgIAIwJBoilqIARBFGoQ8AEgAigCACEBIAJBADYCACABQQFGDQIACxDfASECDAULEN8BIQIMAQsQ3wEhAiAEQRRqEKddGgsgAxCnXRoMAgsgBEEgaiQBIAAPCxDfASECCyAAEJlXGiACEOABAAuJAgEDfyMBQRBrIgQkASP7AyEDIABBAEEAIAIQmFciACADQQhqNgIAI7MBIQIgARDkTSEDIAJBADYCACPIAkH/////ByADQQAQ3AEhAyACKAIAIQUgAkEANgIAAkAgBUEBRwRAIAAgAzYCECADRQRAI7MBIgJBADYCACO2AyAEQQRqIwBB0KIOaiABEOsBIAIoAgAhAyACQQA2AgACQCADQQFHBEAjswEiAkEANgIAIwJBoilqIARBBGoQ8AEgAigCACEDIAJBADYCACADQQFGDQEACxDfASECDAMLEN8BIQIgBEEEahCnXRoMAgsgBEEQaiQBIAAPCxDfASECCyAAEJlXGiACEOABAAsNACAAENBYGiAAEORGCxIAIAAoAhAaIAFB/wFxENdFwAsrAANAIAEgAkcEQCAAKAIQGiABIAEtAAAQ10U6AAAgAUEBaiEBDAELCyACCxIAIAAoAhAaIAFB/wFxENVFwAsrAANAIAEgAkcEQCAAKAIQGiABIAEtAAAQ1UU6AAAgAUEBaiEBDAELCyACC7cCAQN/IwFBIGsiBCQBI/oDIQMgACACEP9VIgAgA0EIajYCACOzASICQQA2AgAjyAJB/////wcgAUEAENwBIQMgAigCACEFIAJBADYCAAJAIAVBAUcEQCAAIAM2AgggA0UEQCOzASICQQA2AgAjjwIgBEEIaiABEN4BIQMgAigCACEBIAJBADYCAAJAAkACQCABQQFH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8wQhAyAAIAIQiVgiACADQQhqNgIAI7MBIQIgARDkTSEBIAJBADYCACPyBCAAIAEQ6AEgAigCACEBIAJBADYCACABQQFHBEAgAA8LEN8BIQIgABCLWBogAhDgAQALVwEBfyMBQRBrIgMkASABLQAABH8gA0IANwMIIANBBGogASABEP1EIANBCGogAhDDVyIBQX1NBEAgACADKAIENgIACyABQX5JBUEACyEBIANBEGokASABCwkAIAAgARC4XQtYAQF/I/EEIQMgACACEIpYIgIgA0EIajYCACOzASIAQQA2AgAj8AQgAiABEOgBIAAoAgAhASAAQQA2AgAgAUEBRwRAIAIPCxDfASEAIAIQjVgaIAAQ4AEAC/UDAQV/IwFBIGsiBCQBAkACQCABIwBBuYELahDvRARAIARBHGogARCXWCIFEIscRQRAI7MBIgBBADYCACOPAiAEQQRqIAEQ3gEhASAAKAIAIQIgAEEANgIAAkACQAJAIAJBAUcEQCOzASIAQQA2AgAjowIgBEEQaiMAQdKgDmogARDrASAAKAIAIQIgAEEANgIAIAJBAUYNASOzASIAQQA2AgAjAkGiKWogBEEQahDwASAAKAIAIQIgAEEANgIAIAJBAUYNAgALEN8BIQAMBgsQ3wEhAAwBCxDfASEAIARBEGoQp10aCyABEKddGgwDCyAFKAIAIQEjswEiAkEANgIAI/kCIAEQ5QEhASACKAIAIQMgAkEANgIAIANBAUYNASABKAIAIQMgBSgCACEGI7MBIgJBADYCACMCQacpaiAAQQhqIAMgBhDcARogAigCACEDIAJBADYCACADQQFGDQEgASgCBCEDIAUoAgAhBiOzASICQQA2AgAjAkGnKWogAEEMaiADIAYQ3AEaIAIoAgAhAyACQQA2AgAgA0EBRg0BIAEoAgghAiOzASIBQQA2AgAjlgIgAEEQaiACEN4BGiABKAIAIQAgAUEANgIAIABBAUYNASAFEJtYGgsgBEEgaiQBDwsQ3wEhAAsgBRCbWBogABDgAQALYQEBfyPxBCEDIAAgAhCKWCIAIANBCGo2AgAjswEhAiABEORNIQEgAkEANgIAI/AEIAAgARDoASACKAIAIQEgAkEANgIAIAFBAUcEQCAADwsQ3wEhAiAAEI1YGiACEOABAAvHAgEBfyMAQeym8AFqLQAABEAjAEHopvABaigCAA8LIwBByKnwAWotAABFBEAjAEHIqfABakEBOgAACyMAIgBBoKjwAWoiASAAQd0iahCaWBogAUEMaiAAQeQiahCaWBogAUEYaiAAQbwiahCaWBogAUEkaiAAQcQiahCaWBogAUEwaiAAQbMiahCaWBogAUE8aiAAQf4iahCaWBogAUHIAGogAEHOImoQmlgaIAFB1ABqIABBi7wEahCaWBogAUHgAGogAEHqkQVqEJpYGiABQewAaiAAQbDbBmoQmlgaIAFB+ABqIABB+4IJahCaWBogAUGEAWogAEHsOWoQmlgaIAFBkAFqIABB8d0FahCaWBogAUGcAWogAEHZuwFqEJpYGiMAIgBB7KbwAWpBAToAACAAQeim8AFqIABBoKjwAWoiADYCACAACyQAIwBByKnwAWohAANAIABBDGsQp10iACMAQaCo8AFqRw0ACwvdAgEBfyMAQfSm8AFqLQAABEAjAEHwpvABaigCAA8LIwBB+KrwAWotAABFBEAjAEH4qvABakEBOgAACyMAIgBB0KnwAWoiASAAQZzlpgFqEKZYGiABQQxqIABBuOWmAWoQplgaIAFBGGogAEHU5aYBahCmWBogAUEkaiAAQfTlpgFqEKZYGiABQTBqIABBnOamAWoQplgaIAFBPGogAEHA5qYBahCmWBogAUHIAGogAEHc5qYBahCmWBogAUHUAGogAEGA56YBahCmWBogAUHgAGogAEGQ56YBahCmWBogAUHsAGogAEGg56YBahCmWBogAUH4AGogAEGw56YBahCmWBogAUGEAWogAEHA56YBahCmWBogAUGQAWogAEHQ56YBahCmWBogAUGcAWogAEHg56YBahCmWBojACIAQfSm8AFqQQE6AAAgAEHwpvABaiAAQdCp8AFqIgA2AgAgAAskACMAQfiq8AFqIQADQCAAQQxrEOVdIgAjAEHQqfABakcNAAsLCQAgACABEOBYC/EDAQJ/IwBB/KbwAWotAAAEQCMAQfim8AFqKAIADwsjAEGgrfABai0AAEUEQCMAQaCt8AFqQQE6AAALIwAiAEGAq/ABaiIBIABB1w5qEJpYGiABQQxqIABBzg5qEJpYGiABQRhqIABBwe8FahCaWBogAUEkaiAAQf25BWoQmlgaIAFBMGogAEGFI2oiAhCaWBogAUE8aiAAQdiNB2oQmlgaIAFByABqIABBwBZqEJpYGiABQdQAaiAAQYHCAGoQmlgaIAFB4ABqIABBr5IEahCaWBogAUHsAGogAEG6jwRqEJpYGiABQfgAaiAAQaaSBGoQmlgaIAFBhAFqIABB0JIEahCaWBogAUGQAWogAEHgoQVqEJpYGiABQZwBaiAAQea3CWoQmlgaIAFBqAFqIABB4pcEahCaWBogAUG0AWogAEGtsANqEJpYGiABQcABaiACEJpYGiABQcwBaiAAQY+8BGoQmlgaIAFB2AFqIABB0bEFahCaWBogAUHkAWogAEGh8wVqEJpYGiABQfABaiAAQdOoBGoQmlgaIAFB/AFqIABBsrABahCaWBogAUGIAmogAEHRMGoQmlgaIAFBlAJqIABBtaQJahCaWBojACIAQfym8AFqQQE6AAAgAEH4pvABaiAAQYCr8AFqIgA2AgAgAAskACMAQaCt8AFqIQADQCAAQQxrEKddIgAjAEGAq/ABakcNAAsLjQQBAn8jAEGEp/ABai0AAARAIwBBgKfwAWooAgAPCyMAQdCv8AFqLQAARQRAIwBB0K/wAWpBAToAAAsjACIAQbCt8AFqIgEgAEHw56YBahCmWBogAUEMaiAAQZDopgFqEKZYGiABQRhqIABBtOimAWoQplgaIAFBJGogAEHM6KYBahCmWBogAUEwaiAAQeTopgFqIgIQplgaIAFBPGogAEH06KYBahCmWBogAUHIAGogAEGI6aYBahCmWBogAUHUAGogAEGc6aYBahCmWBogAUHgAGogAEG46aYBahCmWBogAUHsAGogAEHg6aYBahCmWBogAUH4AGogAEGA6qYBahCmWBogAUGEAWogAEGk6qYBahCmWBogAUGQAWogAEHI6qYBahCmWBogAUGcAWogAEHY6qYBahCmWBogAUGoAWogAEHo6qYBahCmWBogAUG0AWogAEH46qYBahCmWBogAUHAAWogAhCmWBogAUHMAWogAEGI66YBahCmWBogAUHYAWogAEGY66YBahCmWBogAUHkAWogAEGo66YBahCmWBogAUHwAWogAEG466YBahCmWBogAUH8AWogAEHI66YBahCmWBogAUGIAmogAEHY66YBahCmWBogAUGUAmogAEHo66YBahCmWBojACIAQYSn8AFqQQE6AAAgAEGAp/ABaiAAQbCt8AFqIgA2AgAgAAskACMAQdCv8AFqIQADQCAAQQxrEOVdIgAjAEGwrfABakcNAAsLhwEBAX8jAEGMp/ABai0AAARAIwBBiKfwAWooAgAPCyMAQfiv8AFqLQAARQRAIwBB+K/wAWpBAToAAAsjACIAQeCv8AFqIgEgAEGNwgpqEJpYGiABQQxqIABBu8AKahCaWBojACIAQYyn8AFqQQE6AAAgAEGIp/ABaiAAQeCv8AFqIgA2AgAgAAskACMAQfiv8AFqIQADQCAAQQxrEKddIgAjAEHgr/ABakcNAAsLiQEBAX8jAEGUp/ABai0AAARAIwBBkKfwAWooAgAPCyMAQZiw8AFqLQAARQRAIwBBmLDwAWpBAToAAAsjACIAQYCw8AFqIgEgAEH466YBahCmWBogAUEMaiAAQYTspgFqEKZYGiMAIgBBlKfwAWpBAToAACAAQZCn8AFqIABBgLDwAWoiADYCACAACyQAIwBBmLDwAWohAANAIABBDGsQ5V0iACMAQYCw8AFqRw0ACws6ACMAQaSn8AFqLQAARQRAIwAiAEGYp/ABaiAAQYwjahDyTBogAEGkp/ABakEBOgAACyMAQZin8AFqCw4AIwBBmKfwAWoQp10aCzwAIwBBtKfwAWotAABFBEAjACIAQain8AFqIABBvMmmAWoQkVgaIABBtKfwAWpBAToAAAsjAEGop/ABagsOACMAQain8AFqEOVdGgs7ACMAQcSn8AFqLQAARQRAIwAiAEG4p/ABaiAAQfiUCmoQ8kwaIABBxKfwAWpBAToAAAsjAEG4p/ABagsOACMAQbin8AFqEKddGgs8ACMAQdSn8AFqLQAARQRAIwAiAEHIp/ABaiAAQeDJpgFqEJFYGiAAQdSn8AFqQQE6AAALIwBByKfwAWoLDgAjAEHIp/ABahDlXRoLOwAjAEHkp/ABai0AAEUEQCMAIgBB2KfwAWogAEG+7AlqEPJMGiAAQeSn8AFqQQE6AAALIwBB2KfwAWoLDgAjAEHYp/ABahCnXRoLPAAjAEH0p/ABai0AAEUEQCMAIgBB6KfwAWogAEGEyqYBahCRWBogAEH0p/ABakEBOgAACyMAQein8AFqCw4AIwBB6KfwAWoQ5V0aCzsAIwBBhKjwAWotAABFBEAjACIAQfin8AFqIABB8a8EahDyTBogAEGEqPABakEBOgAACyMAQfin8AFqCw4AIwBB+KfwAWoQp10aCzwAIwBBlKjwAWotAABFBEAjACIAQYio8AFqIABB2MqmAWoQkVgaIABBlKjwAWpBAToAAAsjAEGIqPABagsOACMAQYio8AFqEOVdGgvHAQECfyMBQSBrIgIkASAAQf////8HIAFBABDIQiIDNgIAIANFBEAjswEhACACQQhqIAEQ8kwhASAAQQA2AgAjowIgAkEUaiMAQf6fDmogARDrASAAKAIAIQMgAEEANgIAAkACQCADQQFHBEAjswEiAEEANgIAIwJBoilqIAJBFGoQ8AEgACgCACEDIABBADYCACADQQFGDQEACxDfASEADAELEN8BIQAgAkEUahCnXRoLIAEQp10aIAAQ4AEACyACQSBqJAEgAAuKAQECfyMBQRBrIgIkASAAQf////8HIAEQ5E1BABDIQiIDNgIAAkAgA0UEQCACQQRqIwBB/p8OaiABEJxeI7MBIgBBADYCACMCQaIpaiACQQRqEPABIAAoAgAhASAAQQA2AgAgAUEBRw0BEN8BIQAgAkEEahCnXRogABDgAQALIAJBEGokASAADwsAC0ABAn8gACgCACEBI7MBIgJBADYCACPTAiABEPABIAIoAgAhASACQQA2AgAgAUEBRwRAIAAPC0EAEN0BGhDyYQALiREBC38jAUGgAWsiBSQBIAVBfzYClAEgBUKGgICAwC03AowBIAVCi4CAgJAUNwKEASAFQpeAgIDwAzcCfCAFQruAgIDwBjcCdCAFQgA3ApgBIAUgAjoADiAFQSU6AA0gBUEAOgAPIAFB5ANqIQsgAUHYA2ohDCABQcwDaiEIIAFBrAFqIQkgAUEEaiEKIAVBEGpB5AAgBUENaiAFQfQAaiABKAIAEIUCIAVBEGpqIQcgBSAFQRBqNgIIIAVBEGohBCAAELNNIQYgAkH4AEchDQNAAkACfwJAAkACQAJAAkAgBCAHRwRAIAQsAAAhAiOzASIEQQA2AgAjygIgA0EBIAIQ3AEhACAEKAIAIQIgBEEANgIAIAJBAUYNAiAABEAjswEiBEEANgIAI/QBIAZBIBDoASAEKAIAIQIgBEEANgIAIAJBAUYNAwNAIAUgBSgCCEEBaiIENgIIIAQgB0YNCSAELAAAIQIjswEiBEEANgIAI8oCIANBASACENwBIQAgBCgCACECIARBADYCACACQQFGDQMgAA0ACwwICyOzASIEQQA2AgAgBSAFKAIINgIEIAVBADYCACP5AyAFQQRqIAcgCiAJIAMgBUEAEP4BIQAgBCgCACECIARBADYCACACQQFGDQUgACAKayICQacBTARAI7MBIgRBADYCACP0ASAGQSUQ6AEgBCgCACEAIARBADYCACAAQQFGDQYjswEiBEEANgIAI/QBIAZBwQBB4QAgAkHUAEgbEOgBIAQoAgAhAiAEQQA2AgAgAkEBRg0GIAUgBSgCBDYCCAwICyOzASIEQQA2AgAgBSAFKAIINgIEI/kDIAVBBGogByAJIAggAyAFQQAQ/gEhACAEKAIAIQIgBEEANgIAIAJBAUYNBSAAIAlrIgRBDG0hACAEQZ8CTARAI7MBIgJBADYCACP0ASAGQSUQ6AEgAigCACEOIAJBADYCACAOQQFGDQYjswEiAkEANgIAI/QBIAZBwgBB4gAgBEGQAUgbEOgBIAIoAgAhBCACQQA2AgAgBEEBRg0GAkAgDQ0AIAEgAEEMbGpBrAFqQQAQvU4sAAAhAiOzASIEQQA2AgAjygIgA0HAACACENwBIQAgBCgCACECIARBADYCACACQQFGDQcgAEUNACAGEMRYQe0AOgAACyAFIAUoAgQ2AggMCAsCQCAIEOJNQQAgDBDiTWtGDQAjswEiBEEANgIAIAUgBSgCCDYCBCP5AyAFQQRqIAcgCCALIAMgBUEAEP4BIQAgBCgCACECIARBADYCACACQQFGDQYgACAIa0EXSg0AI7MBIgRBADYCACP0ASAGQSUQ6AEgBCgCACECIARBADYCACACQQFGDQYjswEiBEEANgIAI/QBIAZB8AAQ6AEgBCgCACECIARBADYCACACQQFGDQYgBSAFKAIENgIIDAgLIAUgBSgCCCIENgIEIAQsAAAhAiOzASIEQQA2AgAjygIgA0HAACACENwBIQAgBCgCACECIARBADYCACACQQFGDQUgAARAI7MBIgRBADYCACPTByAFQQhqIAcgBSADQQQQ8wEhAiAEKAIAIQAgBEEANgIAIABBAUYNBgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAJBBmsOBwIDAQEBBAUACwJAIAJBN2sOBwgBAQEJAQoACyACQRdGDQUgAkEfRg0GIAJB7AJGDQogAkGNEEYNCwsgBSgCBCEEA0AgBCAFKAIIRg0UIAQsAAAhAiOzASIEQQA2AgAj9AEgBiACEOgBIAQoAgAhAiAEQQA2AgAgAkEBRg0QIAUgBSgCBEEBaiIENgIEDAALAAsjswEiBEEANgIAI/QBIAZBJRDoASAEKAIAIQAgBEEANgIAQfcAIQIgAEEBRg0QDA8LI7MBIgRBADYCACP0ASAGQSUQ6AEgBCgCACEAIARBADYCAEH1ACECIABBAUYNDwwOCyOzASIEQQA2AgAj9AEgBkElEOgBIAQoAgAhACAEQQA2AgBByQAhAiAAQQFGDQ4MDQsjswEiBEEANgIAI/QBIAZBJRDoASAEKAIAIQAgBEEANgIAQe0AIQIgAEEBRg0NDAwLI7MBIgRBADYCACP0ASAGQSUQ6AEgBCgCACEAIARBADYCAEHIACECIABBAUYNDAwLCyOzASIEQQA2AgAj9AEgBkElEOgBIAQoAgAhACAEQQA2AgBB5AAhAiAAQQFGDQsMCgsjswEiBEEANgIAI/QBIAZBJRDoASAEKAIAIQAgBEEANgIAQc0AIQIgAEEBRg0KDAkLI7MBIgRBADYCACP0ASAGQSUQ6AEgBCgCACEAIARBADYCAEHTACECIABBAUYNCQwICyOzASIEQQA2AgAj9AEgBkElEOgBIAQoAgAhACAEQQA2AgBB+QAhAiAAQQFGDQgMBwsjswEiBEEANgIAI/QBIAZBJRDoASAEKAIAIQAgBEEANgIAQeoAIQIgAEEBRg0HDAYLI7MBIgRBADYCACP0ASAGQSUQ6AEgBCgCACEAIARBADYCAEHZACECIABBAUYNBgwFCyAFKAIILQAAIgRBJUYEQCOzASIEQQA2AgAj9AEgBkElEOgBIAQoAgAhAiAEQQA2AgAgAkEBRg0GI7MBIgRBADYCACP0ASAGQSUQ6AEgBCgCACECIARBADYCACACQQFGDQYgBSAFKAIIQQFqNgIIDAgLI7MBIgJBADYCACP0ASAGIATAEOgBIAIoAgAhBCACQQA2AgAgBEEBRg0FIAUgBSgCCEEBajYCCAwHCyAFQaABaiQBDwsQ3wEMBAsQ3wEMAwsQ3wEMAgsjswEiBEEANgIAI/QBIAYgAhDoASAEKAIAIQIgBEEANgIAIAJBAUcNAgsQ3wELIQQgBhCnXRogBBDgAQALIAUoAgghBAwACwALwwUBDn8jAUGAAWsiDSQBIAIgAxCsUyEJIA0j8QE2AgQgDUEIakEAIA1BBGoQrVMhDiANQRBqIQoCQAJAAkAgCUHlAE8EQCAJEONGIgpFBEAjswEiB0EANgIAI/gBEOoBIAcoAgAhCCAHQQA2AgAgCEEBRw0CEN8BIQcMBAsgDiAKEOlSCyAKIQggAiEHA0AgAyAHRgRAA0AgACgCACIHIAFGIghBASAJGwRAIAgEQCAFIAUoAgBBAnI2AgALDAULIActAAAhDwJAIAYNACOzASIHQQA2AgAjwgMgBCAPwBDeASEPIAcoAgAhCCAHQQA2AgAgCEEBRw0AEN8BIQcMBgsgEUEBaiEQQQAhEiAKIQggAiEHA0AgAyAHRgRAIBAhESASRQ0CIAAgACgCAEEBajYCACAKIQggAiEHIAkgC2pBAkkNAgNAIAMgB0YEQAwEBQJAIAgtAABBAkcNACAHEOJNIBBGDQAgCEEAOgAAIAtBAWshCwsgCEEBaiEIIAdBDGohBwwBCwALAAsCQCAILQAAQQFHDQAgByAREL1OLQAAIQwCQCAGDQAjswEiE0EANgIAI8IDIAQgDMAQ3gEhDCATKAIAIRQgE0EANgIAIBRBAUcNABDfASEHDAgLAkAgD0H/AXEgDEH/AXFGBEBBASESIAcQ4k0gEEcNAiAIQQI6AAAgC0EBaiELDAELIAhBADoAAAsgCUEBayEJCyAIQQFqIQggB0EMaiEHDAALAAsABSAIQQJBASAHEK9TIgwbOgAAIAhBAWohCCAHQQxqIQcgCyAMaiELIAkgDGshCQwBCwALAAsACwJAAkADQCACIANGDQEgCi0AAEECRwRAIApBAWohCiACQQxqIQIMAQsLIAIhAwwBCyAFIAUoAgBBBHI2AgALIA4Q6lIaIA1BgAFqJAEgAw8LIA4Q6lIaIAcQ4AEACxAAIAAQ5E0gABDiTWpBAWsLpQEBAn8CQCACAn9BBiABIAAoAgAiBUYNABpBBCADQcAAIAUsAAAiBRCdUEUNABogAyAFQQAQrVQhBgNAAkAgACAAKAIAQQFqIgU2AgAgBkEwayEGIAEgBUYNACAEQQJIDQAgA0HAACAFLAAAIgUQnVBFDQMgBEEBayEEIAMgBUEAEK1UIAZBCmxqIQYMAQsLIAEgBUcNAUECCyACKAIAcjYCAAsgBguPEgELfyMBQdAEayIEJAEgBEKGgICAwC03ArwEIARCi4CAgJAUNwK0BCAEQpeAgIDwAzcCrAQgBEK7gICA8AY3AqQEIARCADcCyAQgBEF/NgLEBCAEIAI6AL4DIARBJToAvQMgBEEAOgC/AyAEQcADakHkACAEQb0DaiAEQaQEaiABKAIAEIUCGiAEIARBIGo2AhwgBEIANwMQIAQgBEHAA2o2AgwCfwJAIARBIGogBEEMakHkACAEQRBqIAEoAgAQ5lQiBUF/RwRAIAFB5ANqIQsgAUHYA2ohDCABQcwDaiEIIAFBrAFqIQkgAUEEaiEKIARBIGogBUECdGohByAAEPBUIQYgAkH4AEchDQNAAkACQAJAIAcgBCgCHCICRwRAIAIoAgAhACOzASICQQA2AgAjyQIgA0EBIAAQ3AEhBSACKAIAIQAgAkEANgIAAkACQCAAQQFGDQAgBUUNASOzASICQQA2AgAj9wEgBkEgEOgBIAIoAgAhACACQQA2AgAgAEEBRg0AA0AgBCAEKAIcQQRqIgI2AhwgAiAHRg0HIAIoAgAhACOzASICQQA2AgAjyQIgA0EBIAAQ3AEhBSACKAIAIQAgAkEANgIAIABBAUYNBCAFDQALDAYLEN8BDAgLI7MBIgJBADYCACAEIAQoAhw2AgggBEEANgIEI/gDIARBCGogByAKIAkgAyAEQQRqQQAQ/gEhBSACKAIAIQAgAkEANgIAIABBAUYNBiAFIAprIgBBpwFMBEAjswEiAkEANgIAI/cBIAZBJRDoASACKAIAIQUgAkEANgIAIAVBAUYNByOzASICQQA2AgAj9wEgBkHBAEHhACAAQdQASBsQ6AEgAigCACEAIAJBADYCACAAQQFGDQcgBCAEKAIINgIcDAULI7MBIgJBADYCACAEIAQoAhw2Aggj+AMgBEEIaiAHIAkgCCADIARBBGpBABD+ASEFIAIoAgAhACACQQA2AgAgAEEBRg0GIAUgCWsiAkEMbSEFIAJBnwJMBEAjswEiAEEANgIAI/cBIAZBJRDoASAAKAIAIQ4gAEEANgIAIA5BAUYNByOzASIAQQA2AgAj9wEgBkHCAEHiACACQZABSBsQ6AEgACgCACECIABBADYCACACQQFGDQcCQCANDQAgASAFQQxsakGsAWpBABDaUygCACEAI7MBIgJBADYCACPJAiADQcAAIAAQ3AEhBSACKAIAIQAgAkEANgIAIABBAUYNCCAFRQ0AIAYQyFhB7QA2AgALIAQgBCgCCDYCHAwFCwJAIAgQ4k1BACAMEOJNa0YNACOzASICQQA2AgAgBCAEKAIcNgIII/gDIARBCGogByAIIAsgAyAEQQRqQQAQ/gEhBSACKAIAIQAgAkEANgIAIABBAUYNByAFIAhrQRdKDQAjswEiAkEANgIAI/cBIAZBJRDoASACKAIAIQAgAkEANgIAIABBAUYNByOzASICQQA2AgAj9wEgBkHwABDoASACKAIAIQAgAkEANgIAIABBAUYNByAEIAQoAgg2AhwMBQsgBCAEKAIcIgI2AgggAigCACEAI7MBIgJBADYCACPJAiADQcAAIAAQ3AEhBSACKAIAIQAgAkEANgIAIABBAUYNBiAFBEAjswEiAkEANgIAI9IHIARBHGogByAEQQRqIANBBBDzASEAIAIoAgAhBSACQQA2AgAgBUEBRg0HAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEEGaw4HAgMBAQEEBQALAkAgAEE3aw4HCAEBAQkBCgALIABBF0YNBSAAQR9GDQYgAEHsAkYNCiAAQY0QRg0LCyAEKAIIIQIDQCACIAQoAhxGDREgAigCACEAI7MBIgJBADYCACP3ASAGIAAQ6AEgAigCACEAIAJBADYCACAAQQFGDQ8gBCAEKAIIQQRqIgI2AggMAAsACyOzASICQQA2AgAj9wEgBkElEOgBIAIoAgAhBSACQQA2AgBB9wAhACAFQQFGDREMDgsjswEiAkEANgIAI/cBIAZBJRDoASACKAIAIQUgAkEANgIAQfUAIQAgBUEBRg0QDA0LI7MBIgJBADYCACP3ASAGQSUQ6AEgAigCACEFIAJBADYCAEHJACEAIAVBAUYNDwwMCyOzASICQQA2AgAj9wEgBkElEOgBIAIoAgAhBSACQQA2AgBB7QAhACAFQQFGDQ4MCwsjswEiAkEANgIAI/cBIAZBJRDoASACKAIAIQUgAkEANgIAQcgAIQAgBUEBRg0NDAoLI7MBIgJBADYCACP3ASAGQSUQ6AEgAigCACEFIAJBADYCAEHkACEAIAVBAUYNDAwJCyOzASICQQA2AgAj9wEgBkElEOgBIAIoAgAhBSACQQA2AgBBzQAhACAFQQFGDQsMCAsjswEiAkEANgIAI/cBIAZBJRDoASACKAIAIQUgAkEANgIAQdMAIQAgBUEBRg0KDAcLI7MBIgJBADYCACP3ASAGQSUQ6AEgAigCACEFIAJBADYCAEH5ACEAIAVBAUYNCQwGCyOzASICQQA2AgAj9wEgBkElEOgBIAIoAgAhBSACQQA2AgBB6gAhACAFQQFGDQgMBQsjswEiAkEANgIAI/cBIAZBJRDoASACKAIAIQUgAkEANgIAQdkAIQAgBUEBRg0HDAQLIAQoAhwoAgAhACOzASICQQA2AgAj0QcgAyAAQQAQ3AEhBSACKAIAIQAgAkEANgIAIABBAUYNBiAFQSVGBEAjswEiAkEANgIAI/cBIAZBJRDoASACKAIAIQAgAkEANgIAIABBAUYNByOzASICQQA2AgAj9wEgBkElEOgBIAIoAgAhACACQQA2AgAgAEEBRg0HIAQgBCgCHEEEajYCHAwFCyAEKAIcKAIAIQAjswEiAkEANgIAI/cBIAYgABDoASACKAIAIQAgAkEANgIAIABBAUYNBiAEIAQoAhxBBGo2AhwMBAsgBEHQBGokAQ8LEN8BDAULEN8BDAQLI7MBIgJBADYCACP3ASAGIAAQ6AEgAigCACEAIAJBADYCACAAQQFHDQALDAELIwBBw84IahDnVAALEN8BCyECIAYQ5V0aIAIQ4AEAC7kFAQ5/IwFBgAFrIg0kASACIAMQrFMhCSANI/EBNgIEIA1BCGpBACANQQRqEK1TIQ4gDUEQaiEKAkACQAJAIAlB5QBPBEAgCRDjRiIKRQRAI7MBIgdBADYCACP4ARDqASAHKAIAIQggB0EANgIAIAhBAUcNAhDfASEHDAQLIA4gChDpUgsgCiEIIAIhBwNAIAMgB0YEQANAIAAoAgAiByABRiIIQQEgCRsEQCAIBEAgBSAFKAIAQQJyNgIACwwFCyAHKAIAIQ8CQCAGDQAjswEiB0EANgIAI78DIAQgDxDeASEPIAcoAgAhCCAHQQA2AgAgCEEBRw0AEN8BIQcMBgsgEUEBaiEQQQAhEiAKIQggAiEHA0AgAyAHRgRAIBAhESASRQ0CIAAgACgCAEEEajYCACAKIQggAiEHIAkgC2pBAkkNAgNAIAMgB0YEQAwEBQJAIAgtAABBAkcNACAHEOJNIBBGDQAgCEEAOgAAIAtBAWshCwsgCEEBaiEIIAdBDGohBwwBCwALAAsCQCAILQAAQQFHDQAgByARENpTKAIAIQwCQCAGDQAjswEiE0EANgIAI78DIAQgDBDeASEMIBMoAgAhFCATQQA2AgAgFEEBRw0AEN8BIQcMCAsCQCAMIA9GBEBBASESIAcQ4k0gEEcNAiAIQQI6AAAgC0EBaiELDAELIAhBADoAAAsgCUEBayEJCyAIQQFqIQggB0EMaiEHDAALAAsABSAIQQJBASAHEK9TIgwbOgAAIAhBAWohCCAHQQxqIQcgCyAMaiELIAkgDGshCQwBCwALAAsACwJAAkADQCACIANGDQEgCi0AAEECRwRAIApBAWohCiACQQxqIQIMAQsLIAIhAwwBCyAFIAUoAgBBBHI2AgALIA4Q6lIaIA1BgAFqJAEgAw8LIA4Q6lIaIAcQ4AEACxMAIAAQ5E0gABDiTUECdGpBBGsLpQEBAn8CQCACAn9BBiABIAAoAgAiBUYNABpBBCADQcAAIAUoAgAiBRCiUUUNABogAyAFQQAQxlQhBgNAAkAgACAAKAIAQQRqIgU2AgAgBkEwayEGIAEgBUYNACAEQQJIDQAgA0HAACAFKAIAIgUQolFFDQMgBEEBayEEIAMgBUEAEMZUIAZBCmxqIQYMAQsLIAEgBUcNAUECCyACKAIAcjYCAAsgBgusBAEEfyMBQaABayICJAEgAkH0AGpBAEEsENA+GgNAIANBB0YEQAJAQQAhAwNAIANBDEYNASACIAM2AoQBIAJBEGpB5AAjACIEQZOCC2ogAkH0AGogACgCABCFAhogACADQQxsaiIFQawBaiACQRBqEJpYGiACQRBqQeQAIARBvLgJaiACQfQAaiAAKAIAEIUCGiAFQbwCaiACQRBqEJpYGiADQQFqIQMMAAsACwUgAiADNgKMASACQRBqQeQAIwAiBEGegwtqIAJB9ABqIAAoAgAQhQIaIAAgA0EMbGoiBUEEaiACQRBqEJpYGiACQRBqQeQAIARBxr8JaiACQfQAaiAAKAIAEIUCGiAFQdgAaiACQRBqEJpYGiADQQFqIQMMAQsLIAJBATYCfCACQRBqQeQAIwBB+q8EaiIDIAJB9ABqIAAoAgAQhQIaIABBzANqIAJBEGoQmlgaIAJBDTYCfCACQRBqQeQAIAMgAkH0AGogACgCABCFAhogAEHYA2ogAkEQahCaWBogAkEEaiAAQeMAIAEQwlggAEHkA2ogAkEEahC7TRogAkEEahCnXRogAkEEaiAAQfIAIAEQwlggAEHwA2ogAkEEahC7TRogAkEEahCnXRogAkEEaiAAQfgAIAEQwlggAEH8A2ogAkEEahC7TRogAkEEahCnXRogAkEEaiAAQdgAIAEQwlggAEGIBGogAkEEahC7TRogAkEEahCnXRogAkGgAWokAQuJCAEEfyMBQcAEayICJAEgAkGUBGpBAEEsENA+GiACQgA3AxgCQANAIANBB0YEQEEAIQMCQAJAAkADQAJAIANBDEYEQCACQQE2ApwEIAJBsANqQeQAIwBB+q8EaiACQZQEaiAAKAIAEIUCGiACQgA3AxggAiACQbADajYCFCACQSBqIAJBFGpB5AAgAkEYaiAAKAIAEOZUIgNBf0cNASMAQcPOCGoQ51QACyACIAM2AqQEIAJBsANqQeQAIwBBk4ILaiACQZQEaiAAKAIAEIUCGiACQgA3AxggAiACQbADajYCCCACQSBqIAJBCGpB5AAgAkEYaiAAKAIAEOZUIgRBAWpBAU0NAiAAIANBDGxqIgVBrAFqIAJBIGogAkEgaiAEQQJ0ahDMWBogAkGwA2pB5AAjAEG8uAlqIAJBlARqIAAoAgAQhQIaIAJCADcDGCACIAJBsANqNgIIIAJBIGogAkEIakHkACACQRhqIAAoAgAQ5lQiBEEBakEBTQ0DIAVBvAJqIAJBIGogAkEgaiAEQQJ0ahDMWBogA0EBaiEDDAELCyAAQcwDaiACQSBqIAJBIGogA0ECdGoQzFgaIAJBDTYCnAQgAkGwA2pB5AAjAEH6rwRqIAJBlARqIAAoAgAQhQIaIAJCADcDGCACIAJBsANqNgIUIAJBIGogAkEUakHkACACQRhqIAAoAgAQ5lQiA0F/Rg0CIABB2ANqIAJBIGogAkEgaiADQQJ0ahDMWBogAkEIaiAAQeMAIAEQxlggAEHkA2ogAkEIahCpVRogAkEIahDlXRogAkEIaiAAQfIAIAEQxlggAEHwA2ogAkEIahCpVRogAkEIahDlXRogAkEIaiAAQfgAIAEQxlggAEH8A2ogAkEIahCpVRogAkEIahDlXRogAkEIaiAAQdgAIAEQxlggAEGIBGogAkEIahCpVRogAkEIahDlXRogAkHABGokAQ8LIwBBw84IahDnVAALIwBBw84IahDnVAALIwBBw84IahDnVAALIAIgAzYCrAQgAkGwA2pB5AAjAEGegwtqIAJBlARqIAAoAgAQhQIaIAJCADcDGCACIAJBsANqNgIIIAJBIGogAkEIakHkACACQRhqIAAoAgAQ5lQiBEEBakEBSwRAIAAgA0EMbGoiBUEEaiACQSBqIAJBIGogBEECdGoQzFgaIAJBsANqQeQAIwBBxr8JaiACQZQEaiAAKAIAEIUCGiACQgA3AxggAiACQbADajYCCCACQSBqIAJBCGpB5AAgAkEYaiAAKAIAEOZUIgRBAWpBAU0NAiAFQdgAaiACQSBqIAJBIGogBEECdGoQzFgaIANBAWohAwwBCwsjAEHDzghqEOdUAAsjAEHDzghqEOdUAAv8AQEDfyMBQRBrIgQkASAAEKVVIQMCQAJAAkAgAyABIAIQ9U8iBUkEQCAAIAEQplUNASAAIAMgBSADayAAEOJNIgNBACADQQAQ6V0LIAAQ5E0hAwNAIAEgAkYNAiADIAEQpFUgAUEEaiEBIANBBGohAwwACwALI7MBIQMgBEEEaiABIAIgABCnVSIBEORNIQIgARDiTSEFIANBADYCACPQByAAIAIgBRDcARogAygCACECIANBADYCACACQQFHBEAgARDlXRoMAgsQ3wEhAyABEOVdGiADEOABAAsgBEEANgIEIAMgBEEEahCkVSAAIAUQ6U0LIARBEGokASAACwsAIAAgASACEPVdC/gCAQp/IwFBIGsiBiQBIAAgARC/WCICQawBaiEEIAJBBGoiByEAA0AgABCzTUEMaiIAIARHDQALIAJBzANqIQUgBCEAA0AgABCzTUEMaiIAIAVHDQALIAJB5ANqIQMgBSEAA0AgABCzTUEMaiIAIANHDQALI7MBIQAgAxCzTSEIIAJB8ANqELNNIQkgAkH8A2oQs00hCiACQYgEahCzTSELIABBADYCACPPByAGQQxqIAEQ3gEhAyAAKAIAIQEgAEEANgIAAkACQCABQQFHBEAjswEiAEEANgIAI4EFIAIgAxDoASAAKAIAIQEgAEEANgIAIAFBAUYNASADENBYGiAGQSBqJAEgAg8LEN8BIQEMAQsQ3wEhASADENBYGgsgCxCnXRogChCnXRogCRCnXRogCBCnXSEAA0AgAEEMaxCnXSIAIAVHDQALA0AgBUEMaxCnXSIFIARHDQALA0AgBEEMaxCnXSIEIAdHDQALIAIQwVgaIAEQ4AEACx4BAX8j7wQhAiAAIAFBARCiVyIBIAJBCGo2AgAgAQtOAQJ/IAAj+wNBCGo2AgAgACgCECEBI7MBIgJBADYCACPTAiABEPABIAIoAgAhASACQQA2AgAgAUEBRwRAIAAQmVcPC0EAEN0BGhDyYQALHgEBfyPvBCECIAAgAUEBEKNXIgEgAkEIajYCACABC/gCAQp/IwFBEGsiBiQBIAAgARC/WCICQawBaiEEIAJBBGoiByEAA0AgABDwVEEMaiIAIARHDQALIAJBzANqIQUgBCEAA0AgABDwVEEMaiIAIAVHDQALIAJB5ANqIQMgBSEAA0AgABDwVEEMaiIAIANHDQALI7MBIQAgAxDwVCEIIAJB8ANqEPBUIQkgAkH8A2oQ8FQhCiACQYgEahDwVCELIABBADYCACPOByAGQQRqIAEQ3gEhAyAAKAIAIQEgAEEANgIAAkACQCABQQFHBEAjswEiAEEANgIAI4AFIAIgAxDoASAAKAIAIQEgAEEANgIAIAFBAUYNASADENRYGiAGQRBqJAEgAg8LEN8BIQEMAQsQ3wEhASADENRYGgsgCxDlXRogChDlXRogCRDlXRogCBDlXSEAA0AgAEEMaxDlXSIAIAVHDQALA0AgBUEMaxDlXSIFIARHDQALA0AgBEEMaxDlXSIEIAdHDQALIAIQwVgaIAEQ4AEACx4BAX8j7gQhAiAAIAFBARCpVyIBIAJBCGo2AgAgAQtLAQJ/IAAj+gNBCGo2AgAgACgCCCEBI7MBIgJBADYCACPTAiABEPABIAIoAgAhASACQQA2AgAgAUEBRwRAIAAPC0EAEN0BGhDyYQALHgEBfyPuBCECIAAgAUEBEKpXIgEgAkEIajYCACABC80FAQJ/IABB/ANqIQADQAJAIAAQ4k0gAU0NACAAIAEQvU4tAABBJUYNACABQQFqIQEMAQsLAkACQAJAAkAgACABQQFqEL1OLAAAIgJB+QBHBEAgAkHkAEYNAiACQe0ARg0BIAJB2QBHDQMLIAFBAmohAQNAAkAgABDiTSABTQ0AIAAgARC9Ti0AAEElRg0AIAFBAWohAQwBCwsgABDiTSABRg0CIAAgAUEBahC9TiwAACICQeQARwRAIAJB7QBHDQMgAUECaiEBA0ACQCAAEOJNIAFNDQAgACABEL1OLQAAQSVGDQAgAUEBaiEBDAELCyAAEOJNIAFGDQNBAyECIAAgAUEBahC9Ti0AAEHkAEcNAwwECyABQQJqIQEDQAJAIAAQ4k0gAU0NACAAIAEQvU4tAABBJUYNACABQQFqIQEMAQsLIAAQ4k0gAUYNAkEEIQIgACABQQFqEL1OLQAAQe0ARw0CDAMLIAFBAmohAQNAAkAgABDiTSABTQ0AIAAgARC9Ti0AAEElRg0AIAFBAWohAQwBCwsgABDiTSABRg0BIAAgAUEBahC9Ti0AAEHkAEcNASABQQJqIQEDQAJAIAAQ4k0gAU0NACAAIAEQvU4tAABBJUYNACABQQFqIQEMAQsLIAAQ4k0gAUYNAUECIQIgACABQQFqIgEQvU4tAABB+QBGDQIgACABEL1OLQAAQdkARw0BDAILIAFBAmohAQNAAkAgABDiTSABTQ0AIAAgARC9Ti0AAEElRg0AIAFBAWohAQwBCwsgABDiTSABRg0AIAAgAUEBahC9Ti0AAEHtAEcNACABQQJqIQEDQAJAIAAQ4k0gAU0NACAAIAEQvU4tAABBJUYNACABQQFqIQEMAQsLIAAQ4k0gAUYNAEEBIQIgACABQQFqIgEQvU4tAABB+QBGDQEgACABEL1OLQAAQdkARg0BC0EAIQILIAILzQUBAn8gAEH8A2ohAANAAkAgABDiTSABTQ0AIAAgARDaUygCAEElRg0AIAFBAWohAQwBCwsCQAJAAkACQCAAIAFBAWoQ2lMoAgAiAkH5AEcEQCACQeQARg0CIAJB7QBGDQEgAkHZAEcNAwsgAUECaiEBA0ACQCAAEOJNIAFNDQAgACABENpTKAIAQSVGDQAgAUEBaiEBDAELCyAAEOJNIAFGDQIgACABQQFqENpTKAIAIgJB5ABHBEAgAkHtAEcNAyABQQJqIQEDQAJAIAAQ4k0gAU0NACAAIAEQ2lMoAgBBJUYNACABQQFqIQEMAQsLIAAQ4k0gAUYNA0EDIQIgACABQQFqENpTKAIAQeQARw0DDAQLIAFBAmohAQNAAkAgABDiTSABTQ0AIAAgARDaUygCAEElRg0AIAFBAWohAQwBCwsgABDiTSABRg0CQQQhAiAAIAFBAWoQ2lMoAgBB7QBHDQIMAwsgAUECaiEBA0ACQCAAEOJNIAFNDQAgACABENpTKAIAQSVGDQAgAUEBaiEBDAELCyAAEOJNIAFGDQEgACABQQFqENpTKAIAQeQARw0BIAFBAmohAQNAAkAgABDiTSABTQ0AIAAgARDaUygCAEElRg0AIAFBAWohAQwBCwsgABDiTSABRg0BQQIhAiAAIAFBAWoiARDaUygCAEH5AEYNAiAAIAEQ2lMoAgBB2QBHDQEMAgsgAUECaiEBA0ACQCAAEOJNIAFNDQAgACABENpTKAIAQSVGDQAgAUEBaiEBDAELCyAAEOJNIAFGDQAgACABQQFqENpTKAIAQe0ARw0AIAFBAmohAQNAAkAgABDiTSABTQ0AIAAgARDaUygCAEElRg0AIAFBAWohAQwBCwsgABDiTSABRg0AQQEhAiAAIAFBAWoiARDaUygCAEH5AEYNASAAIAEQ2lMoAgBB2QBGDQELQQAhAgsgAgvHAQECfyMBQSBrIgIkASAAQf////8HIAFBABDIQiIDNgIAIANFBEAjswEhACACQQhqIAEQ8kwhASAAQQA2AgAjowIgAkEUaiMAQdWfDmogARDrASAAKAIAIQMgAEEANgIAAkACQCADQQFHBEAjswEiAEEANgIAIwJBoilqIAJBFGoQ8AEgACgCACEDIABBADYCACADQQFGDQEACxDfASEADAELEN8BIQAgAkEUahCnXRoLIAEQp10aIAAQ4AEACyACQSBqJAEgAAuKAQECfyMBQRBrIgIkASAAQf////8HIAEQ5E1BABDIQiIDNgIAAkAgA0UEQCACQQRqIwBB1Z8OaiABEJxeI7MBIgBBADYCACMCQaIpaiACQQRqEPABIAAoAgAhASAAQQA2AgAgAUEBRw0BEN8BIQAgAkEEahCnXRogABDgAQALIAJBEGokASAADwsAC3gBBH8gACgCACEDI7MBIgFBADYCACOFAhDhASEEIAEoAgAhAiABQQA2AgACQCACQQFGDQAgAyAERwRAIAAoAgAhAiOzASIBQQA2AgAj0wIgAhDwASABKAIAIQIgAUEANgIAIAJBAUYNAQsgAA8LQQAQ3QEaEPJhAAvwBwECfyMBQSBrIgckASACBEAgARDiTUEERiEGCwJAAkACQAJAAkAgAw4CAAECCyAGBEAgARD5UyEDIAcgARD5UzYCHCADIAdBHGpBAxCWVSABEPpTENxYGgsCQAJAAkACQAJAIAUOBQABAgMEBgsgAEGD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XRogAEEkahCnXRogAEEYahCnXRogAEEMahCnXRogAAsKACAAEPxYEORGCzMAIAAjhQVBCGo2AgAgAEEwahCnXRogAEEkahCnXRogAEEYahCnXRogAEEMahCnXRogAAsKACAAEP5YEORGCzMAIAAjhAVBCGo2AgAgAEE0ahDlXRogAEEoahDlXRogAEEcahDlXRogAEEQahCnXRogAAsKACAAEIBZEORGCzMAIAAjgwVBCGo2AgAgAEE0ahDlXRogAEEoahDlXRogAEEcahDlXRogAEEQahCnXRogAAsKACAAEIJZEORGCxcAQf////8DIgAgAEH/////B0t2QRBrCwcAIABBAkkLKgEBf0EBIQEgAEECTwR/IABBAWoQh1kiACAAQQFrIgAgAEECRhsFIAELCwoAIABBA2pBfHELYQEBfyMBQRBrIgIkASACIAA2AgwCQCAAIAFGDQADQCACIAFBAWsiATYCCCAAIAFPDQEgAkEMaiACQQhqEOxIIAIgAigCDEEBaiIANgIMIAIoAgghAQwACwALIAJBEGokAQthAQF/IwFBEGsiAiQBIAIgADYCDAJAIAAgAUYNAANAIAIgAUEEayIBNgIIIAAgAU8NASACQQxqIAJBCGoQ+EggAiACKAIMQQRqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQBC1kBAX8jAUEQayIEJAEgBCABNgIIIAQgAzYCDANAIAEgAkcEQCAEQQxqIAEsAAAQiFEaIAQgAUEBaiIBNgIIDAELCyAAIARBCGogBEEMahDySxogBEEQaiQBC1kBAX8jAUEQayIEJAEgBCABNgIIIAQgAzYCDANAIAEgAkcEQCAEQQxqIAEoAgAQ5lEaIAQgAUEEaiIBNgIIDAELCyAAIARBCGogBEEMahDySxogBEEQaiQBCw0AIAEtAAAgAi0AAEYLDQAgASgCACACKAIARgsLACAAIAEgAhCQWQsJACAAIAEQkVkLOAEBfyMBQRBrIgMkASADIAEQk1k2AgwgAyACEJNZNgIIIAAgA0EMaiADQQhqEPJLGiADQRBqJAELCQAgACABEJdZCwcAIAAQk1kLJwEBfyMBQRBrIgEkASABIAA2AgwgAUEMahCVWSEAIAFBEGokASAACwcAIAAQlVkLCgAgACgCABCWWQsnAQF/IwFBEGsiASQBIAEgADYCDCAB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QQA2AgAgAkEBRw0DEN8BIQAgARDGTxogABDgAQALIAAgACgCSEEBajYCSAwBCyAAIAQ2AkwgAEEBNgJICyABEMZPGiADQRBqJAEPCwALJAEBfyAAIAFyRSECAkAgAEUNACABRQ0AIAAgARDYECECCyACC3kBBH8jAUEQayIBJAEQqUshAgJ/QQAgAUEIaiAAEKFaIgMtAARFDQAaQQAgACgCSAR/QQAgAiAAKAJMEKVaRQ0BGiAAKAJIBSAEC0F/Rg0AGiAAIAI2AkwgACAAKAJIQQFqNgJIQQELIQAgAxDGTxogAUEQaiQBIAALowEBBH8jAUEQayIDJAEjswEiAUEANgIAI8IHIANBCGogABDeASEEIAEoAgAhAiABQQA2AgACQCACQQFGDQAgACAAKAJIQQFrIgE2AkggAUUEQCAAQcwAahCoWiOzASIBQQA2AgAjwQcgBBDwASABKAIAIQIgAUEANgIAIAJBAUYNASAAQRhqEJVMCyAEEMZPGiADQRBqJAEPC0EAEN0BGhDyYQALCQAgAEEANgIAC48EAQJ/A0AgACgCAEEBRg0ACwJAAkAgACgCAEUEQAJAIABBARD9PSOzASIDQQA2AgAj9gIjAEGQuvABahDlARogAygCACEEIANBADYCAAJAIARBAUYNACOzASIDQQA2AgAgAiABEPABIAMoAgAhAiADQQA2AgAgAkEBRg0AI7MBIgNBADYCACP1AyMAQZC68AFqEOUBGiADKAIAIQIgA0EANgIAIAJBAUYNACAAQX82AgAjswEiA0EANgIAI/YCIwBBkLrwAWoQ5QEaIAMoAgAhAiADQQA2AgAgAkEBRg0AI7MBIgNBADYCACOkBCMAQai68AFqEOUBGiADKAIAIQIgA0EANgIAIAJBAUcNAQtBABDdARDsARojswEiA0EANgIAI/UDIwBBkLrwAWoQ5QEaIAMoAgAhAiADQQA2AgACQCACQQFGDQAgAEEAEP09I7MBIgNBADYCACP2AiMAQZC68AFqEOUBGiADKAIAIQAgA0EANgIAIABBAUYNACOzASIDQQA2AgAjpAQjAEGouvABahDlARogAygCACEAIANBADYCACAAQQFGDQAjswEiA0EANgIAIwQQ6gEgAygCACEAIANBADYCACAAQQFHDQQLI7MBIQMQ3wEhAiADQQA2AgAjAxDqASADKAIAIQAgA0EANgIAIABBAUYNAiACEOABAAsLDwtBABDdARoQ8mELAAs6AQJ/I7MBIgFBADYCACPAByAAEOUBGiABKAIAIQIgAUEANgIAIAJBAUcEQCAADwtBABDdARoQ8mEACx4BAn8jtQMhACOQAyEBQQQQ62EQmGIgASAAEPEBAAtNAQF/QQEgACAAQQFNGyEBAkADQCABEONGIgANASOuAygCACIABEAgABEMAAwBCwsjtQMhACOQAyEBQQQQ62EQmGIgASAAEPEBAAsgAAtvAQF/I7MBIgFBADYCACPjASAAEOUBIQAgASgCACECIAFBADYCAAJAIAJBAUYEQEEAEN0BEOwBGiOzASIBQQA2AgAjAxDqASABKAIAIQIgAUEANgIAQQAhACACQQFGDQELIAAPC0EAEN0BGhDyYQALbwEBfyOzASIBQQA2AgAjvwcgABDlASEAIAEoAgAhAiABQQA2AgACQCACQQFGBEBBABDdARDsARojswEiAUEANgIAIwMQ6gEgASgCACECIAFBADYCAEEAIQAgAkEBRg0BCyAADwtBABDdARoQ8mEAC1sBAX9BBCABIAFBBE0bIQJBASAAIABBAU0bIQACQANAIAIgABCwWiIBDQEjrgMoAgAiAQRAIAERDAAMAQsLI7UDIQEjkAMhAkEEEOthEJhiIAIgARDxAQALIAELMQEBfyMBQRBrIgIkASACQQA2AgwgAkEMaiAAIAEQ6kYaIAIoAgwhASACQRBqJAEgAQtvACOzASICQQA2AgAjvgcgACABEN4BIQEgAigCACEAIAJBADYCAAJAIABBAUYEQEEAEN0BEOwBGiOzASICQQA2AgAjAxDqASACKAIAIQAgAkEANgIAQQAhASAAQQFGDQELIAEPC0EAEN0BGhDyYQALbwAjswEiAkEANgIAI6YGIAAgARDeASEBIAIoAgAhACACQQA2AgACQCAAQQFGBEBBABDdARDsARojswEiAkEANgIAIwMQ6gEgAigCACEAIAJBADYCAEEAIQEgAEEBRg0BCyABDwtBABDdARoQ8mEACzUAI7MBIgFBADYCACO9ByAAEPABIAEoAgAhACABQQA2AgAgAEEBRwRADwtBABDdARoQ8mEACwkAIAAgARCzWgsJACAAIAIQs1oLCQAgACABEMdNC+gCAgR/An4jAUGAAWsiASQBI7MBIgJBADYCACO8B0EAIAFB4ABqEN4BIQQgAigCACEDIAJBADYCAAJAIANBAUYNACAEBEAQ+jsoAgAhAiOzASIBQQA2AgAjlQMgAiMAQZH3CGoQ6AEgASgCACECIAFBADYCACACQQFGDQEACyABQUBrIAFB4ABqQQAQuFohBCOzASECIAFBIGogAUHoAGpBABC5WiEDIAJBADYCACO7ByABQRBqIAMQ6AEgAigCACEDIAJBADYCACADQQFGDQAgASkDGCEFIAEpAxAhBiOzASICQQA2AgAgASAGNwMwIAEgBTcDOCO6ByABIAQgAUEwahDrASACKAIAIQMgAkEANgIAIANBAUYNACABKQMIIQUgASABKQMANwNQIAEgBTcDWCAAIAFB8ABqIAFB0ABqEPtNIgIpAwg3AwggACACKQMANwMAIAFBgAFqJAEPC0EAEN0BGhDyYQALHAEBfiAAIAEpAwAiAzcDACAAIANCP4c3AwggAAscAQF+IAAgATQCACIDNwMAIAAgA0I/hzcDCCAACz0CAX8BfiMBQSBrIgIkASACQQhqIAJBH2ogARC9WiACKQMIIQMgACACKQMQNwMIIAAgAzcDACACQSBqJAELpQECAX8EfiMBQeAAayIDJAEgA0EQaiADQTBqIAFBABC8WhDAPSADKQMYIQUgAykDECEEIAMgAikDCDcDKCADIAIpAwA3AyAgAyADQSBqEMA9IAMpAwghBiADIAQgAykDACIHfCIENwNAIAMgBCAHVK0gBSAGfHw3A0ggACADQdAAaiADQUBrQQAQ+U0iAikDCDcDCCAAIAIpAwA3AwAgA0HgAGokAQtWAQF+IwFBMGsiAiQBIAJBEGogARCJXCACIAIpAxg3AyggAiACKQMQNwMgIAIgAkEgahDAPSACKQMAIQMgACACKQMINwMIIAAgAzcDACACQTBqJAEgAAtQACMBQTBrIgEkASABIAIQwD0gASABKQMINwMYIAEgASkDADcDECAAIAFBIGogAUEQakEAEPlNIgIpAwg3AwggACACKQMANwMAIAFBMGokAQsbACAAI8sDQQhqNgIAIABBEGoQ6kwaIAAQnmILDQAgABC+WhogABDkRgumAgEFfyMBQSBrIgIkASACIAE2AhwgAiAAEI5PNgIYIAIgADYCCCACIAJBGGo2AgQgAiACQRxqNgIAIAJBDGohBCMBQTBrIgMkASACIgEoAgghBQJAAkACQAJAAkAgAigCACgCAA4DAwABAgsgASgCBCgCACEBIAMgBRDBWhDkTTYCFCADIAE2AhAgBCMAQf7nCWogA0EQahDCWgwDCyABKAIEKAIAIQEgBRDBWhDkTSEGIAMgBRDDWhDkTTYCKCADIAY2AiQgAyABNgIgIAQjAEGa6AlqIANBIGoQwloMAgsACyADIAEoAgQoAgA2AgAgBCMAQa6jA2ogAxDCWgsgA0EwaiQBIAAoAhBBGGogAkEMahC7TRogAkEMahCnXRogAkEgaiQBCwoAIABBEGooAgAL0gEBAn8jAUEQayIDJAEgABCzTSEEIAMgAjYCDCOzASIAQQA2AgAjAkGFLmogAyABIAIQ6wEgACgCACECIABBADYCAAJAIAJBAUYEQEEAEN0BEOwBGiOzASIDQQA2AgAjBBDqASADKAIAIQIgA0EANgIAIAJBAUYEQCOzASEDEN8BIQAgA0EANgIAIwMQ6gEgAygCACECIANBADYCACACQQFHDQJBABDdARoQ8mELAAsgBCADELtNGiADEKddGiADQRBqJAEPCyAEEKddGiAAEOABAAsNACAAQRBqKAIAQQxqC2kBA38jAUEQayIFJAEjswEhAyAFQQRqELNNIQQgA0EANgIAIwJBhi5qIAAgASAEIAIQ5AEgAygCACECIANBADYCACACQQFHBEAgBBCnXRogBUEQaiQBDwsQ3wEhAyAEEKddGiADEOABAAtyAQF/IwFBEGsiBCQBIAMEQCADEO1MCwJAIAEQ4U0EQCAAIAEQjk0aDAELIARBBGogAxDGWiACIARBBGoQsU0aIARBBGoQp10aAkAgA0UNACADEIscRQ0AIAAQs00aDAELIAAgAiABEIJNCyAEQRBqJAELwgIBBX8jAUEgayIDJAEgA0EQaiMAIgJBvOkFaiABQQBBABDIWiEGIAJB0twMakEEEOZCIQIjswEhASADQQxqIAJBAWoQrFoQhlsiBSgCACEEIAFBADYCACO5ByAEIAIQ3gEhBCABKAIAIQIgAUEANgIAAkACQCACQQFHBEACfyADQQhqIAQQ31YiASgCAEUEQCADEJBNI7MBIgJBADYCACMCQYguaiAAIAYgAyMAQaPxCGpBABDyASACKAIAIQQgAkEANgIAIARBAUcNAxDfAQwBCyABKAIAIQQjswEiAkEANgIAIAMgBDYCACP0AyAAIANBABDcARogAigCACEEIAJBADYCACAEQQFHDQIQ3wELIQMgARCoWgwCCxDfASEDDAELIAEQqFogBRCIWxogA0EgaiQBDwsgBRCIWxogAxDgAQAL3QIBBH8jAUFAaiIDJAEgA0E0ahCzTSEFI7MBIQQgA0EkaiMAQerKBWogAiABIAUQyFohBiAEQQA2AgAjAkGGLmogA0EYaiABIAUgAhDkASAEKAIAIQEgBEEANgIAAkACQCABQQFHBEAgA0EYahDkTUEAENJDIQQgAyPxATYCCAJ/IANBEGogBCADQQhqEIxUIgQoAgBFBEAgA0EIahCQTSOzASIBQQA2AgAjAkGKLmogACAGIANBCGoQ6wEgASgCACECIAFBADYCACACQQFHDQMQ3wEMAQsgBCgCACECI7MBIgFBADYCACADIAI2Aggj9AMgACADQQhqQQAQ3AEaIAEoAgAhAiABQQA2AgAgAkEBRw0CEN8BCyEBIAQQ6lIaIANBGGoQp10aDAILEN8BIQEMAQsgBBDqUhogA0EYahCnXRogBRCnXRogA0FAayQBDwsgBRCnXRogARDgAQALKgAgACAENgIMIAAgAzYCCCAAIAI2AgQgACABNgIAIAIEQCACEO1MCyAAC98CAQN/IwFBIGsiAyQBAkACQAJAIAEoAgQiBEUEQCADQQhqIwBBgqYOahDyTCEAIAEoAgAhBSOzASIEQQA2AgAjswIgA0EUaiAAIAUQ6wEgBCgCACEFIARBADYCACAFQQFHBEAgABCnXRoCQAJAAkACQCABKAIMIgBBAEcgASgCCCIBQQBHag4DAAECAwsjswEiAUEANgIAI+cCIANBFGogAhDoASABKAIAIQIgAUEANgIAIAJBAUcNBQwGCyOzASIAQQA2AgAj5gIgA0EUaiABIAIQ6wEgACgCACEBIABBADYCACABQQFGDQUMBAsjswEiBEEANgIAI+UCIANBFGogASAAIAIQ5AEgBCgCACEBIARBADYCACABQQFGDQQMAwsACxDfASEBIAAQp10aDAMLIAQgAikCADcCACAAEMtaIANBIGokAQ8LAAsQ3wEhASADQRRqEKddGgsgARDgAQALSQAjswEhAiAAELNNIQAgAkEANgIAI7gHIAAgARDoASAC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ASACQQhqIAEQrE0gACACKQMINwIAIAJBEGokASAACzwBAX8gACgCBCICIAAoAgAgASACKAIAKAIQEQIABH9BAQUgASgCBCICIAAgASgCACACKAIAKAIUEQIACwtQAQF/IwFBIGsiAyQBIANBEGojAEGJowdqIAIgACABEMhaIQIgABDkTSABEORNEPlDQX9GBEAgA0EIahCQTSACIANBCGoQ7EwLIANBIGokAQtNAQF/IwFBIGsiAyQBIANBEGojAEHavwdqIAIgAEEAEMhaIQIgABDkTSABEOJFQX9GBEAgA0EIahCQTSACIANBCGoQ7EwLIANBIGokAQupAQEBfyMBQeAAayIDJAEgA0HQAGojAEG6mwhqIAIgAUEAEMhaIQIgA0EIakEAQcgAENA+GgJAIAEQ5E0gA0EIahDjREF/RgRAIAMQkE0gAiADEOxMIABCfzcDECAAQn83AwggAEJ/NwMADAELIAMgA0EIajYCACADIAAgAzUCEBCnWyADIABBCGogAzUCFBCnWyADIABBEGogAzUCGBCnWwsgA0HgAGokAQsYACABQn8gACgCADUCBCACfiACUBs3AwALCwAgACABIAIQmlsLzgMBBX8jAUHgAGsiAiQBIAJB0ABqIwBBqOkFaiABQQBBABDIWiEGAkADQCADQQRHBEAgAiMAQbDQ5AFqIANBAnRqKAIAEJpAIgE2AkwgA0EBaiEDIAFFDQEMAgsLIAIjAEHVoQRqNgJMCyACQUBrIAJBzABqQQAQqlshASOzASEDIAJBOGoQ50whBCADQQA2AgAjAkG+LmogAkEwaiABIAQQ6wEgAygCACEFIANBADYCAAJAAn8gBUEBRwRAIAIgAikDMDcDKAJ/IAJBKGoQpk1FBEAjswEhAyABEORNIQUgA0EANgIAIAIgBTYCECMCQYguaiAAIAYgBCMAQfebDmogAkEQahDyASADKAIAIQQgA0EANgIAIARBAUcNBBDfAQwBCyACIAIpAzA3AyAgAkEgahCrTQRAAkAgAiACKQMwNwMYIAJBGGoQqE1FDQAgACABEPlMGgwFCwsgAkE2NgIUI7MBIQMgARDkTSEEIANBADYCACACIAQ2AgAjAkG/LmogACAGIAJBFGogAyACEPIBIAMoAgAhBCADQQA2AgAgBEEBRw0DEN8BCwwBCxDfAQshAyABEKddGiADEOABAAsgARCnXRogAkHgAGokAQtJACOzASECIAAQs00hACACQQA2AgAjoQcgACABEOgBIAIoAgAhASACQQA2AgAgAUEBRwRAIAAPCxDfASECIAAQp10aIAIQ4AEAC9MBACMBQRBrIgMkASADIAQ2AgwgA0EEaiACKAIAEKxNI7MBIgRBADYCACMCQbUuaiABIANBBGojAEHiC2ogAygCDBDkASAEKAIAIQIgBEEANgIAAkAgAkEBRgRAQQAQ3QEQ7AEaI7MBIgNBADYCACMEEOoBIAMoAgAhBCADQQA2AgAgBEEBRgRAI7MBIQMQ3wEhAiADQQA2AgAjAxDqASADKAIAIQQgA0EANgIAIARBAUcNAkEAEN0BGhDyYQsACyAAEMtaIANBEGokAQ8LIAIQ4AEAC4EJAQp/IwFBkAFrIgQkASAEQYABaiMAQdbKBWogAiABQQAQyFohCgJAAkACQAJAAkACQCABEK9TBEAjswEhAyAEQdQAaiMAQeniDmpBABCtWyEFIANBADYCACPzAyAAIAUgAhDrASADKAIAIQcgA0EANgIAIAdBAUYNASAFEKddGgwGCyAEQfQAahCzTSEII7MBIQMgBEHoAGoQs00hByABEOJNIQUgA0EANgIAI6AHIAcgBRDoASADKAIAIQUgA0EANgIAIAVBAUYNASAEQcwAaiABEIJbIAQgBCkCTDcDCCAEQdQAaiAEQQhqEK9bIARB1ABqELBbIgVBCGohCyAEQUBrELFbIQkCQAJAAkACQAJAAkACQAJAA0AgBS0AEEEBRg0CIARBHGogARDkTSALELJbELNbI7MBIgNBADYCACOfByAHIARBHGoQ3gEaIAMoAgAhBiADQQA2AgAgBkEBRg0HI7MBIQMgBEEQahDnTCEGIANBADYCACPjBCAEQThqIAcgBhDrASADKAIAIQwgA0EANgIAAkACQCAMQQFHBEAgBCAEKQM4NwMwIARBMGoQpk0NAiOzASIDQQA2AgAjAkGKLmogACAKIAYQ6wEgAygCACEFIANBADYCACAFQQFGDQEMEAsQ3wEhAwwKCxDfASEDDAkLIAQgBCkDODcDKCAEQShqEKtNBEAjswEiA0EANgIAI/MDIARBHGogByACEOsBIAMoAgAhBiADQQA2AgAgBkEBRw0CEN8BIQMMCQsgBEEcaiAFELVbI7MBIgNBADYCACOeByAJIARBHGoQ6AEgAygCACEGIANBADYCACAGQQFHBEAgBRCwWxoMAQsLEN8BIQMMBwsgCCAEQRxqELFNGiAEQRxqEKddGiAFLQAQQQFHDQELI7MBIgNBADYCACOdByAEQRBqIwBB6eIOakEAENwBIQUgAygCACEGIANBADYCACAGQQFGDQEjswEiA0EANgIAI/MDIARBHGogBSACEOsBIAMoAgAhBiADQQA2AgAgBkEBRg0CIAggBEEcahCxTRogBEEcahCnXRogBRCnXRoLIAIEQCACEO1MCyAJELdbRQ0CIAAgCBD5TBoMCQsQ3wEhAwwDCxDfASEDIAUQp10aDAILIAQgCRC4WzYCHANAI7MBIQMgCRC5WyEFIANBADYCACAEIAU2AjgjnAcgBEEcaiAEQThqEN4BIQYgAygCACEFIANBADYCAAJAIAVBAUcEQCAGDQEjswEiA0EANgIAI5sHIAAgCBDoASADKAIAIQUgA0EANgIAIAVBAUcNCRDfASEDDAQLEN8BIQMMAwsjswEhAyAEQRxqELxbIQUgA0EANgIAI/IDIAggBRDeARogAygCACEFIANBADYCACAFQQFHBEAgBEEcahC+WxoMAQsLEN8BIQMMAQsQ3wEhAwsgCRC/WxoMAgsQ3wEhAyAFEKddGgwCCxDfASEDCyAHEKddGiAIEKddGgsgAxDgAQALIAkQv1saIAcQp10aIAgQp10aCyAEQZABaiQBC0kAI7MBIQIgABCzTSEAIAJBADYCACOaByAAIAEQ6AEgAigCACEBIAJBADYCACABQQFHBEAgAA8LEN8BIQIgABCnXRogAhDgAQALCQAgACABELldCzMCAX8BfiMBQRBrIgIkASACIAEpAgAiAzcDACACIAM3AwggACACQQYQwVsaIAJBEGokAQunAgEEfwJAIAAoAgBBAWsiAQJ/AkACQAJAAkAgAC0AEEEBaw4GAwMAAAABAgsgACgCCAwDCyAAELJbQQFqDAILAAsgACgCAAsiA0EBayICRgRAIABBARCdXAwBCwJAAkACQAJAAkACQAJAIAAtABBBAWsOBgQEAwIBAAYLIAIgARCeXCIEBEAgASAERw0FIABBAyAAKAIAIAMQn1wMBwsgAEEEIAIgARCgXEEBaiADEJ9cDAYLIABBBCACIAEQoFxBAWogAxCf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KGogAkEgahDnWxoLIAJB0ABqJAELGQAgACABKQIANwIAIABBCGogAhD9TBogAAsLACAAIAEgAhC3XAsYACAAIAEpAgA3AgAgACACKQIANwIIIAALYAEBfyMBQRBrIgQkASAEIAM2AgwgAiABKAIESwRAIwBB9aQDahDIWQALIAEoAgAhAyAEIAEoAgQgAms2AgggACACIANqIARBDGogBEEIahC4TSgCABC3TRogBEEQaiQBCxMAIAAQo1koAgAgACgCAGtBDG0LdgEDfyMBQRBrIgEkASAAEKNZGiABQdWq1aoBNgIMI7MBIgBBADYCACABQf////8HNgIII9gCIAFBDGogAUEIahDeASECIAAoAgAhAyAAQQA2AgAgA0EBRwRAIAIoAgAhACABQRBqJAEgAA8LQQAQ3QEaEPJhAAt/AQJ/IwFBEGsiBCQBIARBADYCDCAAQQxqIARBDGogAxCBTxogAQR/IARBBGogABCCTyABELpcIAQoAgQhBSAEKAIIBUEACyEBIAAgBTYCACAAIAUgAkEMbGoiAzYCCCAAIAM2AgQgABCgTiAFIAFBDGxqNgIAIARBEGokASAAC6gBAQV/IwFBEGsiAiQBIAAQu1wgABCjWSEDIAJBCGogACgCBBC8SyEEIAJBBGogACgCABC8SyEFIAIgASgCBBC8SyEGIAIgAyAEKAIAIAUoAgAgBigCABC8XDYCDCABIAJBDGooAgA2AgQgACABQQRqEIxKIABBBGogAUEIahCMSiAAEKNZIAEQoE4QjEogASABKAIENgIAIAAgABDTWxC9XCACQRBqJAELIwAgABC+XCAAKAIABEAgABCCTyAAKAIAIAAQv1wQwFwLIAALLwACQCAAKAIEIAAQo1koAgBJBEAgACABIAIQ2lwMAQsgACABIAIQ21wLIAAQ0FsLGQEBfyAAENNbIQIgACABEOFcIAAgAhDiXAswAAJAIAEsAAAQ31sEQCAAEI9VDAELIAAQy01FDQAgAEEvEMxNGgsgACABEMBbIAALPgEBfyAAKAIAELtcIAAoAgAaIAAoAgAiASgCAARAIAEQ41wgACgCABCjWSAAKAIAIgAoAgAgABDpWxDAXAsLiAkBA38jAUHwAWsiAyQBIANB1AFqIAEQglsgAyADKQLUATcDaCADQdwBaiADQegAahDLWyADQbgBaiACEIJbIAMgAykCuAE3A2AgA0HAAWogA0HgAGoQy1sgAyADQcABajYCtAEgAyADQdwBajYCsAECQAJAAkACQAJAIANB3AFqEPNbRQ0AIANBwAFqEPNbRQ0AIANBqAFqIANB3AFqELVbIANBoAFqIANBwAFqELVbIAMgAykCqAE3A1ggAyADKQKgATcDUCADQdgAaiADQdAAahD0W0UNAQwCCyADQbABahD1Ww0BCyADQdwBahD2WwRAIANB3AFqENJbGgsgA0HAAWoQ9lsEQCADQcABahDSWxoLIANBsAFqEPVbRQ0BCyAAELNNGgwBCyADQZgBaiABEIJbIAMgAykCmAE3A0ggA0HcAWogA0HIAGoQy1sgA0GQAWogAhCCWyADIAMpApABNwNAIANBwAFqIANBQGsQy1sDQAJAIANB3AFqEMxbRQ0AIANBwAFqEMxbRQ0AIAMtAOwBIAMtANABRw0AIANBiAFqIANB3AFqELVbIANBgAFqIANBwAFqELVbIAMgAykCiAE3AzggAyADKQKAATcDMCADQThqIANBMGoQ/kxFDQAgA0HcAWoQ0lsaIANBwAFqENJbGgwBCwsCQCADQdwBahDMWw0AIANBwAFqEMxbDQAgACMAQdLcDGpBABDNWxoMAQsgAyADKALQATYCKCADIAMpAsgBNwMgIAMgAykCwAE3AxggA0EYaiEFIwFB8ABrIgEkAQNAIAUQzFsEQCABQegAaiAFELVbIAEgASkDaDcDYCABQdgAaiMAQYbLDGoQ/UwhAiABIAEpA2A3AzAgASACKQIANwMoAkAgAUEwaiABQShqEP5MBEAgBEEBayEEDAELIAEgASkDaDcDUCABQcgAaiMAQdLcDGoQ/UwhAiABIAEpA1A3AyAgASACKQIANwMYIAFBIGogAUEYahD0W0UNACABIAEpA2g3A0AgAUE4aiMAQeniDmoQ/UwhAiABIAEpA0A3AxAgASACKQIANwMIIAFBEGogAUEIahD0WyAEaiEECyAFENJbGgwBCwsgAUHwAGokASAEIgFBAEgEQCAAELNNGgwBCwJAIAENACADQdwBahD3W0UEQCADQfgAaiADQdwBahC1WyADQfAAaiMAQeniDmoQ/UwhAiADIAMpAng3AxAgAyACKQIANwMIIANBEGogA0EIahD+TEUNAQsgACMAQdLcDGpBABDNWxoMAQsgABCzTSEAAn8CQANAIAFFBEADQCADQdwBahDMW0UNBSADQbABaiADQdwBahC1WyOzASIBQQA2AgAj8gMgACADQbABahDeARogASgCACECIAFBADYCACACQQFGDQMgA0HcAWoQ0lsaDAALAAsjswEiAkEANgIAI40HIAAjAEGGywxqEN4BGiACKAIAIQQgAkEANgIAIAFBAWshASAEQQFHDQALEN8BDAELEN8BCyEDIAAQp10aIAMQ4AEACyADQfABaiQBCwoAIAAtABBBAkYLSQICfwF+IwFBEGsiAiQBQQEhAyAAKAIEIAEoAgRGBEAgAiABKQIAIgQ3AwAgAiAENwMIIAAgAhCvTUEARyEDCyACQRBqJAEgAwswAQF/An9BACAAKAIAIgEtABAgACgCBCIALQAQRg0AGkEBIAEQ9lsNABogABD2WwsLGAEBf0EBIQEgABDzWwR/IAEFIAAQ+FsLCwoAIAAtABBBBkYLCgAgAC0AEEEDRgsfACABEPNbBEAgACABELVbDwsgACMAQeniDmoQ/UwaCxkAA0AgAC0AEEECS0UEQCAAENJbGgwBCwsLfwEBfyMBQUBqIgEkASABQSRqIAAQglsgASABKQIkNwMQIAFBLGogAUEQahDLW0EAIQADQCABQSxqEMxbBEAgAUEYaiABQSxqELVbIAEgASkCGDcDCCAAIAFBI2ogAUEIahD8WxD9WyEAIAFBLGoQ0lsaDAELCyABQUBrJAEgAAtVAQJ/IAEoAgAhAiABKAIAIQMgASgCBCEBI7MBIgBBADYCACOMByACIAEgA2oQ3gEhAiAAKAIAIQEgAEEANgIAIAFBAUcEQCACDwtBABDdARoQ8mEACz0BAX8jAUEgayICJAEgAiABNgIYIAIgADYCFCACIAIpAhQ3AwggAkEfaiACQQhqEP5bIQEgAkEgaiQBIAELZQIBfgJ/IwFBEGsiACQBIAEpAgAhAiOzASIBQQA2AgAgACACNwMII6cGIABBB2ogAEEIakEIENwBIQMgASgCACEEIAFBADYCACAEQQFHBEAgAEEQaiQBIAMPC0EAEN0BGhDyYQALJwEBfyMBQRBrIgIkASACQQ9qIAAgASAAaxD8SiEAIAJBEGokASAAC2oBAX8jAUEwayICJAEgAkEUaiABEIJbIAIgAikCFDcDACACQRxqIAIQy1sgABCBXCIAIAE2AgwgACACLQAsOgAYIAAgAikCJDcCECACQQxqIAJBHGoQtVsgACACQQxqEIJcGiACQTBqJAELIAAgABCzTSIAQQA2AgwgAEEQahDlTBogAEEAOgAYIAALXgEDfyMBQRBrIgIkASOzASIDQQA2AgAjiwcgAkEEaiABEN4BIQEgAygCACEEIANBADYCACAEQQFHBEAgACABELtNGiABEKddGiACQRBqJAEgAA8LQQAQ3QEaEPJhAAsVACAAEIFcIgAgATYCDCAAQQY6ABgLhgECAn8BfiMBQUBqIgEkASABQSRqIAAoAgwQglsgASAAKQIQIgM3AxggAC0AGCECIAEgASkCJDcDCCABIAM3AwAgACABQSxqIAFBCGogASACEIVcENJbIgItABA6ABggACACKQIINwIQIAFBEGogAhC1WyAAIAFBEGoQglwaIAFBQGskASAACyUBAX4gACABKQIANwIAIAIpAgAhBCAAIAM6ABAgACAENwIIIAALhgECAn8BfiMBQUBqIgEkASABQSRqIAAoAgwQglsgASAAKQIQIgM3AxggAC0AGCECIAEgASkCJDcDCCABIAM3AwAgACABQSxqIAFBCGogASACEIVcELBbIgItABA6ABggACACKQIINwIQIAFBEGogAhC1WyAAIAFBEGoQglwaIAFBQGskASAAC8AEAgV/AX4jAUHQAWsiAiQBIAFBEGoiBhD1TSOzASEDIAJByAFqEOdMIQUgA0EANgIAIwJBjS5qIAJB0ABqIAEgAkHYAGogBRDkASADKAIAIQQgA0EANgIAAkAgBEEBRg0AIAIgAikDUDcDSAJAIAJByABqEKZNRQRAIAYQ9U0gACAFKQMANwIADAELIAIgAikDUDcDQAJAAkACQCACQUBrEKtNBEACQCACIAIpA1A3AzggAkE4ahCnTUUNACABIAJB0ABqKAIENgIwI7MBIQMgAkEwahDnTCEEIANBADYCACMCQY4uaiACQShqIAEgAkHYAGogBBDkASADKAIAIQQgA0EANgIAIARBAUcNAgwGCwsgAUEFOgA5IAEgAkHQAGosAAA6ADggASACQdAAaigCBDYCNAwBCyACIAIpAyg3A1AgASACQdAAaiwAADoAOCABIAJB0ABqKAIENgI0IAIgAikDUDcDICACQSBqEKZNRQ0BIAFB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ABD5TSIBKQMINwMIIAAgASkDADcDACADQeAAaiQBC7IBAgF/BH4jAUHgAGsiAyQBIAMgASkDCDcDOCADIAEpAwA3AzAgA0EQaiADQTBqEMA9IAMpAxghBSADKQMQIQQgAyACKQMINwMoIAMgAikDADcDICADIANBIGoQwD0gAykDCCEGIAMgBCADKQMAIgd8IgQ3A0AgAyAEIAdUrSAFIAZ8fDcDSCAAIANB0ABqIANBQGtBABD5TSIBKQMINwMIIAAgASkDADcDACADQeAAaiQBC6UBAgF/BH4jAUHgAGsiAyQBIAMgASkDCDcDOCADIAEpAwA3AzAgA0EQaiADQTBqEMA9IAMpAxghBSADKQMQIQQgAyADQSBqIAJBABC8WhDAPSADKQMIIQYgAyAEIAMpAwAiB3wiBDcDQCADIAQgB1StIAUgBnx8NwNIIAAgA0HQAGogA0FAa0EAEPlNIgEpAwg3AwggACABKQMANwMAIANB4ABqJAELrAECAX8DfiMBQeAAayIDJAEgAyABKQMINwM4IAMgASkDADcDMCADQRBqIANBMGoQwD0gAykDGCEFIAMpAxAhBCADIAIpAwg3AyggAyACKQMANwMgIAMgA0EgahDAPSADIAQgAykDACIGfTcDQCADIAUgAykDCH0gBCAGVK19NwNIIAAgA0HQAGogA0FAa0EAEPlNIgEpAwg3AwggACABKQMANwMAIANB4ABqJAELagAjAUFAaiIBJAEgAUEQaiACEMA9IAEgASkDECABKQMYQoCU69wDQgAQ5EcgASABKQMINwMoIAEgASkDADcDICAAIAFBMGogAUEgakEAEPlNIgIpAwg3AwggACACKQMANwMAIAFBQGskAQsLACAAKAIAEKc9GgsrAQF/IwFBEGsiAiQBIAAgAToAECAAIAJBCGoQ5UwpAwA3AgggAkEQaiQBC00BAn8CQCAARQ0AIAAgAUYNACAALAAAEN9bRQ0AQQFBfyAAIAFJGyEDIAAhAgNAIAEgAiADaiICRgRAIAEPCyACLAAAEN9bDQALCyACCzIBAX8jAUEQayIEJAEgACABOgAQIAAgBEEIaiACIAMgAmsQt00pAwA3AgggBEEQaiQBC00BAn8CQCAARQ0AIAAgAUYNACAALAAAEN9bDQBBAUF/IAAgAUkbIQMgACECA0AgASACIANqIgJG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BEAgAyADKAIEQQxqNgIEIAMQp1kaIARBEGokAQ8LEN8BIQAgAxCnWRogABDgAQALvAEBBX8jAUEgayIGJAEgABCjWSEFIAZBDGogACAAENNbQQFqEN5cIAAQ01sgBRDrWyIDKAIIIQcjswEiBEEANgIAI90EIAUgByABIAIQ5AEgBCgCACEFIARBADYCAAJAIAVBAUYNACADIAMoAghBDGo2AggjswEiBEEANgIAI+AEIAAgAxDoASAEKAIAIQAgBEEANgIAIABBAUYNACADEO1bGiAGQSBqJAEPCxDfASEAIAMQ7VsaIAAQ4AEACyQAIAAgATYCACAAIAEoAgQiATYCBCAAIAEgAkEMbGo2AgggAAsMACABIAIgAxDfXBoLXQECfyMBQRBrIgIkASACIAE2AgwgASAAEOpbIgNNBEAgABDpWyIBIANBAXZJBEAgAiABQQF0NgIIIAJBCGogAkEMahDmTSgCACEDCyACQRBqJAEgAw8LIAAQoFkACwsAIAAgASACEOBcCxgAIAAgASkCADcCACAAIAItAAA6AAggAAtgAQN/IAAoAgQhAgJAA0AgASACRg0BI7MBIQMgABCjWSEEIANBADYCACPeBCAEIAJBDGsiAhDoASADKAIAIQQgA0EANgIAIARBAUcNAAtBABDdARoQ8mEACyAAIAE2AgQLJgAgACgCABogACgCABogABDpWxogACgCABogACgCABogABDTWxoLDAAgACAAKAIAEOFcCxkBAX8DQCAAIgFBAWohACABLQAADQALIAELGgAgACACNgIEIAAgATYCACAAQfgAahCLXBoLDQAgABDkTSAAEOJNagsHACAAEOJNCxoBAX8gABD/TAR/IAEFIABBABDEWy0AAAvACwkAIwBBoOYBaguEAQEBfyMBQRBrIgIkAQJAIAEjAEGNqwVqEPZWBEAgAkEEaiMAQYioDmogARCcXiOzASEBIAJBBGoQ5E0hACABQQA2AgAjlQNBLCAAEOgBIAEoAgAhACABQQA2AgAgAEEBRw0BEN8BIQEgAkEEahCnXRogARDgAQALIAJBEGokASAADwsACzsBAX8jAUEQayIAJAEgAEEMakEEEIIBBEAQ+jsoAgAjAEHT7AhqEKdfAAsgACgCDCEBIABBEGokASABCwsARAAAAAAAAAAACwwAI/EDQQE2AgAgAAsU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TSgCABCvXSAFQRBqJAEgAwsTACAAEORNIAAQ4k0gASACEMBdC0cBAX8jAUEQayIEJAEgBCACOgAPQX8hAiABIANLBEAgACADaiABIANrIARBD2oQpl0iAyAAa0F/IAMbIQILIARBEGokASACC5IBAQJ/IwFBEGsiAyQBIAFB7////wdNBEACQCABENBNBEAgACABEMBNIAAhBAwBCyADQQhqIAAgARDYTUEBahDWTSADKAIMGiAAIAMoAggiBBD9PSAAIAMoAgwQ2k0gACABENtNCyAEIAEgAhCsXRogA0EAOgAHIAEgBGogA0EHahDBTSADQRBqJAEPCyAAENRNAAsQACAAIAEgAiACEP1EELJdCxUAIAAQ5E0gABDiTSABIAIgAxDEXQtIACAERQRAQX8PCyAAIANBAWogASABIANLG2ohA0F/IQECQANAIAAgA0YNASACIAQgA0EBayIDEKZdRQ0ACyADIABrIQELIAELdQECfyMBQRBrIgQkAQJAIAIgABC+TSIDSQRAIAAoAgAhAyAAIAIQ200gAyABIAIQi1AaIARBADoADyACIANqIARBD2oQwU0MAQsgACADQQFrIAIgA2tBAWogACgCBCIDQQAgAyACIAEQnl0LIARBEGokASAAC2MBAn8jAUEQayIDJAECQCACQQpNBEAgACACEMBNIAAgASACEItQGiADQQA6AA8gACACaiADQQ9qEMFNDAELIABBCiACQQprIAAQ5U0iBEEAIAQgAiABEJ5dCyADQRBqJAEgAAu4AQEDfyMBQRBrIgMkASADIAE6AA8CQAJAAn8gABC9TSIERQRAQQohAiAAEOVNDAELIAAQvk1BAWshAiAAKAIECyIBIAJGBEAgACACQQEgAiACQQBBABCrXSAAEORNGgwBCyAAEORNGiAEDQAgACECIAAgAUEBahDATQwBCyAAKAIAIQIgACABQQFqENtNCyABIAJqIgAgA0EPahDBTSADQQA6AA4gAEEBaiADQQ5qEMFNIANBEGokAQt6AQR/IwFBEGsiBSQBIAEEQCAAEOhNIQMgABDiTSIEIAFqIQYgASADIARrSwRAIAAgAyAGIANrIAQgBEEAQQAQq10LIAQgABDkTSIDaiABIAIQrF0aIAAgBhDpTSAFQQA6AA8gAyAGaiAFQQ9qEMFNCyAFQRBqJAEgAAsTACAA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EPo7IgQoAgA2AgggBEEANgIAIAEgA0EMahDARiEFIAQgA0EIahCMSiADKAIIQcQARgRAIAAQol4LIAEgAygCDEYEQCAAEONeCyACBEAgAiADKAIMIAFrQQJ1NgIACyADQRBqJAEgBQt0AgN/AXwjAUEQayIEJAEjswEhAiAEQQRqIwBBrakIahDyTCEDIAJBADYCACMCQYkvaiADIAAgARCDAiEFIAIoAgAhASACQQA2AgAgAUEBRwRAIAMQp10aIARBEGokASAFDwsQ3wEhAiADEKddGiACEOABAAuGAQICfwF8IwFBEGsiAyQBIANBADYCDCABEORNIQEgAxD6OyIEKAIANgIIIARBADYCACABIANBDGoQw0YhBSAEIANBCGoQjEogAygCCEHEAEYEQCAAEKJeCyABIAMoAgxGBEAgABDjXgsgAgRAIAIgAygCDCABa0ECdTYCAAsgA0EQaiQBIAULjgECA38CfiMBQSBrIgMkASOzASEEIANBFGojAEHVuQhqEPJMIQUgBEEANgIAIwJBii9qIAMgBSABIAIQ5AEgBCgCACECIARBADYCACACQQFHBEAgAykDCCEGIAMpAwAhByAFEKddGiAAIAY3AwggACAHNwMAIANBIGokAQ8LEN8BIQMgBRCnXRogAxDgAQALywECA38CfiMBQRBrIgUkASMBQSBrIgQkASAEQQA2AhwgAhDkTSECIAQQ+jsiBigCADYCGCAGQQA2AgAgBEEIaiACIARBHGoQxEYgBCkDECEHIAQpAwghCCAGIARBGGoQjEogBCgCGEHEAEYEQCABEKJeCyACIAQoAhxGBEAgARDjXgsgAwRAIAMgBCgCHCACa0ECdTYCAAsgBSAHNwMIIAUgCDcDACAEQSBqJAEgBSkDACEHIAAgBSkDCDcDCCAAIAc3AwAgBUEQaiQBCzgBAX8jAUEgayICJAEgAkEMaiACQRVqIAJBIGogARDDXiAAIAJBFWogAigCDBCfUxogAkEgaiQBCw0AIAAgASACIAMQ6V4LOAEBfyMBQTBrIgIkASACQQhqIAJBEGogAkEkaiABEMVeIAAgAkEQaiACKAIIEJ9TGiACQTBqJAELDQAgACABIAIgAxDrXgs4AQF/IwFBIGsiAiQBIAJBDGogAkEVaiACQSBqIAEQ2ksgACACQRVqIAIoAgwQn1MaIAJB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ACEAIAFBADYCACAAQQFHBEAgAyP2AyP3AxDxAQALEN8BIQEgAhDsYSABEOABAAtVAQN/I7MBIQFBCBDrYSECIAFBADYCACP5BiACIAAQ3gEhAyABKAIAIQAgAUEANgIAIABBAUcEQCADI9kEI9oEEPEBAAsQ3wEhASACEOxhIAEQ4AEACxwBAX8j+AYhAiAAIAEQj10iASACQQhqNgIAIAELHAEBfyPsBCECIAAgARCPXSIBIAJBCGo2AgAgAQszAAJAIAEgAkYNACADQQBODQAgAUEtOgAAIAFBAWohASADEOpeIQMLIAAgASACIAMQ20sLBwBBACAAawszAAJAIAEgAkYNACADQgBZDQAgAUEtOgAAIAFBAWohASADELlIIQMLIAAgASACIAMQ7F4LOAEBfyAAAn8gAiABayIEQRNMBEBBPSADEO1eIARKDQEaCyABIAMQ7l4hAkEACzYCBCAAIAI2AgALKQEBf0HAACAAQgGEEO9ea0HRCWxBDHUiASP3BiABQQN0aikDACAAWGoLCQAgACABEPBeCwYAIAB5pwtMAQF+IAFC/////w9YBEAgACABpxDeSw8LIAFCgMivoCVaBH8gASABQoDIr6AlgCICQoDIr6Alfn0hASAAIAKnEN5LBSAACyABEPFeCyMBAX4gACABQoDC1y+AIgKnEOBLIAEgAkKAwtcvfn2nEOZLC7oBAQN/IwFBEGsiAyQBIAEgAhDvTSIFIAAQhFlNBEACQCAFEIVZBEAgACAFEMBNIAAhBAwBCyADQQhqIAAgBRCGWUEBahCDTyADKAIMGiAAIAMoAggiBBD9PSAAIAMoAgwQ2k0gACAFENtNCwNAIAEgAkcEQCADIAEsAAA2AgggAUEBaiEBIAQgA0EIahCkVSAEQQRqIQQMAQsLIANBADYCCCAEIANBCGoQpFUgA0EQaiQBDwsgABDUTQALKQAgABCCUCIAQgA3AiggACABNgIkIABBBDYCICAAI48DQQhqNgIAIAALLwAgABCCUCIAIAI2AiwgACABNgIoIABChICAgICABDcCICAAI48DQQhqNgIAIAALUgACfyACRQRAIAEQ/UQMAQtB/////wcgAiACQf////8HTxsLIQIgA0UEQCAAIAEgASABIAJqEOpRDwsgACABIAEgAxDqUSAAIAMgAiADahDrUQszACAAEIJQ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I+wGIAAgAhDoASADKAIAIQAgA0EANgIAIABBAUYNACACEM5fGiAFQSBqJAEPCxDfASEAIAIQzl8aIAAQ4AEACy0BAX8jAUEQayICJAEgAiABNgIMIAAgAkEMahC+XyACKAIMENVPIAJBEGokAQsiACAAKAIEIAAQo1koAgBHBEAgACABEL9fDwsgACABEMBfC4EBAQR/IwFBEGsiAyQBIANBBGogAEEBEKVZIQIgABCjWSEEIAIoAgQhBSOzASIAQQA2AgAj1wQgBCAFIAEQ6wEgACgCACEBIABBADYCACABQQFHBEAgAiACKAIEQQRqNgIEIAIQp1kaIANBEGokAQ8LEN8BIQAgAhCnWRogABDgAQALugEBBX8jAUEgayIFJAEgABCjWSEEIAVBDGogACAAEPhVQQFqEORfIAAQ+FUgBBDlXyICKAIIIQYjswEiA0EANgIAI9cEIAQgBiABEOsBIAMoAgAhBCADQQA2AgACQCAEQQFGDQAgAiACKAIIQQRqNgIII7MBIgNBADYCACPrBiAAIAIQ6AEgAygCACEAIANBADYCACAAQQFGDQAgAhDnXxogBUEgaiQBDwsQ3wEhACACEOdfGiAAEOABAAsRACAAQRgQrFoQwl82AgAgAAsSACAAEMNfIgBBDGoQxF8aIAALZQEDfyMBQRBrIgEkASAAQgA3AgAjswEiAkEANgIAIAFBADYCDCPqBiAAQQhqIAFBDGogAUELahDcARogAigCACEDIAJBADYCACADQQFHBEAgAUEQaiQBIAAPC0EAEN0BGhDyYQALZQEDfyMBQRBrIgEkASAAQgA3AgAjswEiAkEANgIAIAFBADYCDCPpBiAAQQhqIAFBDGogAUELahDcARogAigCACEDIAJBADYCACADQQFHBEAgAUEQaiQBIAAPC0EAEN0BGhDyYQALGwEBfyAAKAIAIgEEQCABELNfGgsgARDkRiAACw4AIAAoAgAgASACELlfCwwAIAAoAgAgARC9XwsMACAAIAAoAgAQyV8LYAEDfyAAKAIEIQICQANAIAEgAkYNASOzASEDIAAQo1khBCADQQA2AgAj1gQgBCACQQhrIgIQ6AEgAygCACEEIANBADYCACAEQQFHDQALQQAQ3QEaEPJhAAsgACABNgIECwwAIAAgACgCABDLXwtgAQN/IAAoAgQhAgJAA0AgASACRg0BI7MBIQMgABCjWSEEIANBADYCACPVBCAEIAJBBGsiAhDoASADKAIAIQQgA0EANgIAIARBAUcNAAtBABDdARoQ8mEACyAAIAE2AgQLfwECfyMBQRBrIgQkASAEQQA2AgwgAEEMaiAEQQxqIAMQgU8aIAEEfyAEQQRqIAAQgk8gARDPXyAEKAIEIQUgBCgCCAVBAAshASAAIAU2AgAgACAFIAJBA3RqIgM2AgggACADNgIEIAAQoE4gBSABQQN0ajYCACAEQRBqJAEgAAuoAQEFfyMBQRBrIgIkASAAEKtcIAAQo1khAyACQQhqIAAoAgQQvEshBCACQQRqIAAoAgAQvEshBSACIAEoAgQQvEshBiACIAMgBCgCACAFKAIAIAYoAgAQ0F82AgwgASACQQxqKAIANgIEIAAgAUEEahCMSiAAQQRqIAFBCGoQjEogABCjWSABEKBOEIxKIAEgASgCBDYCACAAIAAQo1wQrFwgAkEQaiQBCysBAX8gABDRXyAAKAIABEAgABCCTxogACgCACEBIAAQrlwaIAEQ5EYLIAALGQAgASACENJfIQEgACACNgIEIAAgATYCAAuCAwEBfyMBQSBrIgQkASAEIAI2AhggBCABNgIcIAQgAzYCFCAEIAM2AhACQAJ/AkACQANAAkAjswEiA0EANgIAI+gGIARBHGogBEEYahDeASEBIAMoAgAhAiADQQA2AgAgAkEBRg0AIAFFDQIjswEhAyAEQRRqENZfIQIgBEEcahDUXyEBIANBADYCACPwAyAAIAIgARDrASADKAIAIQIgA0EANgIAIAJBAUYNACAEQRxqEMdbGiAEQRRqEMdbGgwBCwtBABDdARDsARojswEhAyAEQQRqIAAgBEEQaiAEQRRqENJMIQQgA0EANgIAI+cGIAQQ8AEgAygCACEEIANBADYCACAEQQFGDQEjswEiBEEANgIAIwQQ6gEgBCgCACEDIARBADYCACADQQFHDQMQ3wEMAgsgBCgCFCEDIARBIGokASADDwsQ3wELIQIjswEiBEEANgIAIwMQ6gEgBCgCACEDIARBADYCACADQQFHBEAgAhDgAQALQQAQ3QEaEPJhCwALDAAgACAAKAIEEOJfCwoAIAFBA3QQrFoLBwAgABDWXwsKACAAKAIAQQhrC04BA38jAUEQayIBJAEgACgCACEC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ACAAKAIEIAAoAgBrCzQBAn8CQCAAKAIAIgMgACgCBEYNACADLAAAIAFB/wFxRw0AQQEhAiAAIANBAWo2AgALIAILcAEBfyABKAIAIQMgAgRAIAFB7gAQhGAaCwJAIAEQg2BFDQAgASgCACICLAAAQTBrQQpPDQADQAJAIAEQg2BFDQAgAiwAAEEwa0EJSw0AIAEgAkEBaiICNgIADAELCyAAIAMgAhC3TRoPCyAAEOVMGgtLAQF/IwFBEGsiAyQBIABBmANqQRQQr2AhACADQQhqIAEQ/18hASACKAIAIQIgAyABKQIANwMAIAAgAyACELBgIQIgA0EQaiQBIAILkCQCCX8BfiMBQSBrIgQkASAEQQA2AhwCQAJAAkAgBAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQQAQgmAiAUHBAGsOOhghHhchJR8hISEAIRkhHRshHCAaJAAhISEhISEhISEhBQMEEhMRFAYJCiELDA8QISEABwgWAQINDhUhCwJAIAAgAEECQQEgAUHyAEYiARsgASAAIAEQgmBB1gBGGyIBEIJgQcsARiABaiIBEIJgQf8BcUHEAGsOAwAkJSQLIAAgAUEBahCCYEH/AXEiA0HvAGsiAUEJSw0iQQEgAXRBgQZxRQ0iDCQLIAAgACgCAEEBajYCACAAIwBB3r8IahCXYCECDCcLIAAgACgCAEEBajYCACAAIwBBt7wBahCXYCECDCYLIAAgACgCAEEBajYCACAAIwBBrLIFahCXYCECDCULIAAgACgCAEEBajYCACAAIwBBnJYEahCXYCECDCQLIAAgACgCAEEBajYCACAAIwBBlZYEahCXYCECDCMLIAAgACgCAEEBajYCACAAIwBBk5YEahCXYCECDCILIAAgACgCAEEBajYCACAAIwBBldAAahCXYCECDCELIAAgACgCAEEBajYCACAAIwBBjNAAahCXYCECDCALIAAgACgCAEEBajYCACAAIwBB8d8AahCXYCECDB8LIAAgACgCAEEBajYCACMBQRBrIgIkASAAQZgDakEQEK9gIQAgAiACQQhqIwBBmd8AahD/XykCADcDACAAIAIQt2AhACACQRBqJAEgACECDB4LIAAgACgCAEEBajYCACAAIwBBs/sFahCXYCECDB0LIAAgACgCAEEBajYCACAAIwBBgPsFahCXYCECDBwLIAAgACgCAEEBajYCACAAIwBB0foFahCXYCECDBsLIAAgACgCAEEBajYCACMBQRBrIgIkASAAQZgDakEQEK9gIQAgAiACQQhqIwBByPoFahD/XykCADcDACAAIAIQt2AhACACQRBqJAEgACECDBoLIAAgACgCAEEBajYCACAAIwBB76ULahCXYCECDBkLIAAgACgCAEEBajYCACMBQRBrIgIkASAAQZgDakEQEK9gIQAgAiACQQhqIwBB5qULahD/XykCADcDACAAIAIQt2AhACACQRBqJAEgACECDBgLIAAgACgCAEEBajYCACAAIwBB9LYBahCXYCECDBcLIAAgACgCAEEBajYCACMBQRBrIgIkASAAQZgDakEQEK9gIQAgAiACQQhqIwBBgccHahD/XykCADcDACAAIAIQt2AhACACQRBqJAEgACECDBYLIAAgACgCAEEBajYCACAAIwBB/MYHahCXYCECDBULIAAgACgCAEEBajYCACAAIwBB+KULahCXYCECDBQLIAAgACgCAEEBajYCACAAIwBBhcsMahCXYCECDBMLIAAgACgCAEEBajYCACAEQRRqIAAQmGAgBEEUahC3Ww0LIAQgACAEQRRqEJlgIgE2AhwMEAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQQEQgmAiAUHPAGsOKh0hISEhDQYhISEhISEhISEhIQohCwECAyEEByEhISEMHQ8hIQgNCQ4dHQALIAFBwgBrDgUFICAgBCALIAAgACgCAEECajYCACAAIwBB3a8LahCXYCECDB8LIAAgACgCAEECajYCACAAIwBBg6YLahCXYCECDB4LIAAgACgCAEECajYCACAAIwBB8rgLahCXYCECDB0LIAAgACgCAEECajYCACAAIwBBvacGahCXYCECDBwLIAAgACgCAEECajYCACAEQRRqIABBABCFYCAEIAAgBEEUahCZYDYCECAAQd8AEIRgRQ0bIABBmANqQQwQr2AhAiAEKAIQIQAgAkEdQQBBAUEBQQEQsWAiAiAANgIIIAIjAEHYguUBajYCAAwbCyAEIAFBwgBGOgAPIAAgACgCAEECajYCAAJAIABBABCC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ahD/XyEEIANBBGooAgAhAiABIAQpAgA3AwAgACABIAIQsGAhACABQRBqJAEgACEBDAQLIwFBEGsiASQBIABBmANqQRQQr2AhACABQQhqIwBBxaUOahD/XyEEIANBBGooAgAhAiABIAQpAgA3AwAgACABIAIQsGAhACABQRBqJAEgACEBDAMLAkACQAJAIABBARCCYCICQdIAaw4FAQUFBQACCyAAIAAoAgBBAmo2AgAgAyAAQQAQkGAiAjYCBCACRQ0EIwFBEGsiASQBIABBmANqQRQQr2AhACABQQhqIwBB/KQOahD/XyEEIANBBGooAgAhAiABIAQpAgA3AwAgACABIAIQsGAhACABQRBqJAEgACEBDAQLIAAgACgCAEECajYCACADIABBABCQYCICNgIEIAJFDQMgACADQQxqEKdgIQEgAEHfABCEYCECIAFFBEBBACEBIAJFDQQLIwFBEGsiASQBIABBmANqQRQQr2AhACABQQhqIwBB6p4OahD/XyEEIANBBGooAgAhAiABIAQpAgA3AwAgACABIAIQsGAhACABQRBqJAEgACEBDAMLIAJByQBHDQIgACAAKAIAQQJqNgIAIANBADYCBCAAIANBBGoQqGANAiADKAIERQ0CIwFBEGsiASQBIABBmANqQRQQr2AhACABQQhqIwBByacOahD/XyEEIANBBGooAgAhAiABIAQpAgA3AwAgACABIAIQsGAhACABQRBqJAEgACEBDAILIAAgACgCAEECajYCACAAEKZgDQEgABCmYA0BIAMgABCBYCIBNgIEIAFFDQAjAUEQayIBJAEgAEGYA2pBFBCvYCEAIAFBCGojAEGqpQ5qEP9fIQQgA0EEaigCACECIAEgBCkCADcDACAAIAEgAhCwYCEAIAFBEGokASAAIQEMAQtBACEBCyADQRBqJAEgAQvFBwEGfyMBQRBrIgUkAQJAAkAgAEEAEIJgIgJB2gBHBEAgAkH/AXFBzgBHDQEgASEDQQAhASMBQRBrIgQkAQJAIAAiAkHOABCEYEUNACACELtgIQAgAwRAIAMgADYCBAsCQAJAIAJBzwAQhGAEQEECIQAgAw0BDAILIAJB0gAQhGAhACADRQ0BCyADIAA6AAgLIARBADYCDCACQZQBaiEHQQAhAANAAkACQCAEAn8CQCACQcUAEIRgRQRAIAMEQCAD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ARCFYEEAIQIgAUGUAWoQt1sNASAAQcUAEIRgRQ0BIwFBEGsiAyQBIABBmANqQRQQr2AhACABKAKcASECIAMgASkClAEiBzcDACADIAc3AwggAEHIAEEAQQFBAUEBELFgIgAgAjYCCCAAIwBBiPLkAWo2AgAgACADKQIANwIMIANBEGokASAAIQIMAQtBACECCyABQbACaiQBIAILIQEBfyAAIABBHGo2AgggACAAQQxqIgE2AgQgACABNgIAC48BAQN/IwFBEGsiBSQBIwFBIGsiAyQBIwFBEGsiBCQBIAQgADYCDCAEIAE2AgggA0EYaiAEQQxqIARBCGoQ8ksaIARBEGokASADQRBqIAMoAhggAygCHCACEO1LIAMgAygCEDYCDCADIAMoAhQ2AgggBUEIaiADQQxqIANBCGoQ8EsgA0EgaiQBIAVBEGokAQshAQF/IAAgAEEsajYCCCAAIABBDGoiATYCBCAAIAE2AgALzgEBA38jAUEgayICJAEgAkEANgIcAkAgACACQRxqELZgDQAgAigCHCIDQQFrIAAQg2BPDQAgAkEUaiAAKAIAIgEgASADahC3TSEBIAAgACgCACADajYCACACIAJBDGojAEH9uApqEP9fKQIANwMAIAEgAhCOYARAIwFBEGsiASQBIABBmANqQRAQr2AhACABIAFBCGojAEHnqA1qEP9fKQIANwMAIAAgARC3YCEAIAFBEGokASAAIQEMAQsgACABEJlgIQELIAJBIGokASABC7YBAQJ/IAFBD2pBcHEiASAAKAKAICICKAIEaiIDQfgfTwRAIAFB+R9PBEAgAUEIahDjRiIBRQRAEPJhAAsgACgCgCAiACgCACECIAFBADYCBCABIAI2AgAgACABNgIAIAFBCGoPC0GAIBDjRiICRQRAEPJhAAsgACgCgCAhAyACQQA2AgQgAiADNgIAIAAgAjYCgCAgACgCgCAiAigCBCABaiEDCyACIAM2AgQgAiADaiABa0EIags3AQF+IABBFEEAQQFBAUEBELFgIgAjAEGc4OQBajYCACABKQIAIQMgACACNgIQIAAgAzcCCCAAC0kAIAAgAToABCAAIwBB3ODkAWo2AgAgACAALwAFQYDgA3EgAkE/cSADQQZ0QcABcXIgBEEDcUEIdHIgBUEDcUEKdHJyOwAFIAALPAIBfwF+IwFB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akEAQSoQ0D4aIAIgAikDYDcDECACIAIpA2g3AxggAiACQShqIAJBMGogAkEwakEqIwBBl8IKaiACQRBqEMxEIAJBMGpqELdNKQIANwMIIAEgAkEIahCzYBoLIAJB8ABqJAELYgECfyMBQSBrIgIkASACIAJBGGojACIDQcGhC2oQ/18pAgA3AwggASACQQhqELNgIQEgACgCCCABEPxfIAIgAkEQaiADQe6cDmoQ/18pAgA3AwAgASACELNgGiACQSBqJAELqgEBA38jAUEQayICJAEgAiABNgIMIAAoAgAiACABQQJ0akGMA2oiASABKAIAIgFBAWo2AgAgAiABNgIIIABBmANqQRAQr2AhASACQQxqKAIAIQMgAkEIaigCACEEIAFBH0EAQQFBAUEBELFgIgEgBDYCDCABIAM2AgggASMAQYDv5AFqNgIAIAIgATYCBCAAQcwCahDCYCgCACACQQRqEJNgIAJBEGokASABC3kCAn8BfiMBQTBrIgIkASACIAJBKGojACIDQbfpCGoQ/18pAgA3AxAgASACQRBqELNgIQEgAiAAKQIIIgQ3AwggAiAENwMgIAEgAkEIahCzYCEAIAIgAkEYaiADQeOZDmoQ/18pAgA3AwAgACACELNgGiACQTBqJAEL6QECA38CfiMBQSBrIgIkAQJAIAICfwJAAkACQCAAKAIIDgMAAQIECyACQRhqIwBB+IoKahD/XwwCCyACQRBqIwBBs78KahD/XwwBCyACQQhqIwBB1v8JahD/XwspAgA3AwAgASACELNgGgsgACgCDCIABEAgAEEBa60hBSMBQTBrIgAkASAAQTBqIQMDQCADQQFrIgMgBSAFQgqAIgZCCn59p0EwcjoAACAFQglWIQQgBiEFIAQNAAsgACAAQRBqIAMgAEEwahC3TSkCADcDCCABIABBCGoQs2AaIABBMGokAQsgAkEgaiQBCzEAIwFBEGsiACQBIAAgAEEIaiMAQb+nDmoQ/18pAgA3AwAgASAAELNgGiAAQRBqJAELDAAgACgCCCABEPxfC1UBAn8jAUEQayICJAEgACgCDCIDIAEgAygCACgCEBEFACAAKAIMIAEQymBFBEAgAiACQQhqIwBBlK8OahD/XykCADcDACABIAIQs2AaCyACQRBqJAELIAAgACgCCCABEPxfIAAoAgwiACABIAAo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IAIgAkEwaiMAQZOPC2oQ/18pAgA3AwggASACQQhqEJRhGgsgAiACQShqIwBBrJ8LahD/XykCADcDACABIAIQlGEaCyACQdAAaiQBC40BAgJ/AX4jAUEwayICJAEgACgCCCIDIAEgAygCACgCEBEFACACIAJBKGojACIDQbuiC2oQ/18pAgA3AxAgASACQRBqELNgIQEgAiAAKQIMIgQ3AwggAiAENwMgIAEgAkEIahCzYCEAIAIgAkEYaiADQcfoCWoQ/18pAgA3AwAgACACELNgGiACQTBqJAELVwAgAEGYA2pBFBCvYCEAIAEoAgAhASACLQAAIQIgAygCACEDIABBLUEAQQFBAUEBELFgIgAgAzYCECAAIAI6AAwgACABNgIIIAAjAEGg++QBajYCACAACxwAIAFB2wAQ6WAgAEEIaiABEPJgIAFB3QAQ7GALZQEBfyMBQSBrIgIkASAALQAMBEAgAiACQRhqIwBBI2oQ/18pAgA3AwggASACQQhqELNgGgsgAkEQaiAAKAIIIgAgACgCACgCGBEFACACIAIpAhA3AwAgASACELNgGiACQSBqJAELIAAgACgCDCABEPxfIAFBwAAQ/V8hASAAKAIIIAEQ/F8LEAAgACgCACAAKAIEQQJ0agsvAQF/IAAgARC4YSABKAIMIgIgAEEIaiIAKAIESQR/IAAgAhC5YSABEMpgBUEACwsiACABKAIQQX9GBEAgACgCDCEAIAFBADYCDCABIAA2AhALCxAAIAAoAgAgAUECdGooAgALLwEBfyAAIAEQuGEgASgCDCICIABBCGoiACgCBEkEfyAAIAIQuWEgARDNYAVBAAsLLwEBfyAAIAEQuGEgASgCDCICIABBCGoiACgCBEkEfyAAIAIQuWEgARDPYAVBAAsLOQECfyAAIAEQuGEgASgCDCIDIABBCGoiAigCBEkEfyACIAMQuWEiACABIAAoAgAoAgwRAAAFIAALCzYBAX8gACABELhhIAEoAgwiAiAAQQhqIgAoAgRJBEAgACACELlhIgAgASAAKAIAKAIQEQUACws2AQF/IAAgARC4YSABKAIMIgIgAEEIaiIAKAIESQRAIAAgAhC5YSIAIAEgACgCACgCFBEFAAsLsgEBA38jAUEwayICJAEgAkEoaiABQRRqQQAQ+GAhBCACIAJBIGojAEHCoQtqEP9fKQIANwMQI7MBIQMgASACQRBqELNgIQEgA0EANgIAIwJB3C9qIABBCGogARDoASADKAIAIQAgA0EANgIAIABBAUcEQCACIAJBGGojAEGsnwtqEP9fKQIANwMIIAEgAkEIahCzYBogBBD5YCACQTBqJAEPCxDfASECIAQQ+WAgAhDgAQALFgAgACgCCCABEPxfIAAoAgwgARD8XwtFAQF/IwFBEGsiAiQBIAIgAkEIaiMAQcGiC2oQ/18pAgA3AwAgAEEIaiABIAIQs2AiABDyYCAAQd0AEP1fGiACQRBqJAELBABBAQtlAQJ/IwFBEGsiAiQBAkAgACgCCCIDRQ0AIAMgASADKAIAKAIQEQUAIAAoAgggARDKYA0AIAIgAkEIaiMAQZSvDmoQ/18pAgA3AwAgASACELNgGgsgACgCDCABEPxfIAJBEGokAQu1AgECfyMBQdAAayICJAEgAUEoEOlgIABBEGogARDyYCABQSkQ7GAgACgCCCIDBEAgAyABIAMoAgAoAhQRBQALIAAoAhwiA0EBcQRAIAIgAkHIAGojAEG9wgBqEP9fKQIANwMgIAEgAkEgahCzYBogACgCHCEDCyADQQJxBH8gAiACQUBrIwBBvbwHahD/XykCADcDGCABIAJBGGoQs2AaIAAoAhwFIAMLQQRxBEAgAiACQThqIwBB0JABahD/XykCADcDECABIAJBEGoQs2AaCwJAIAICfwJAAkAgAC0AIEEBaw4CAAEDCyACQTBqIwBB/pkOahD/XwwBCyACQShqIwBB+pkOahD/XwspAgA3AwggASACQQhqELNgGgsgACgCGCIABEAgACABEPxfCyACQdAAaiQBC4MBAgJ/AX4jAUEwayICJAEgACgCCCABEPxfIAIgAkEoaiMAIgNB+twNahD/XykCADcDECABIAJBEGoQs2AhASACIAApAgwiBDcDCCACIAQ3AyAgASACQQhqELNgIQAgAiACQRhqIANB7twNahD/XykCADcDACAAIAIQs2AaIAJBMGokAQsaACAAQZgDakEQEK9gIAEoAgAgAigCABDVYQtOAQF/IwFBEGsiAiQBIAIgAkEIaiMAQbbXAGoQ/18pAgA3AwAgASACELNgIgFBKBDpYCAAKAIIIAFBE0EAEOtgIAFBKRDsYCACQRBqJAELSQEBfyMBQRBrIgIkASACIAJBCGojAEGdK2oQ/18pAgA3AwAgASACELNgIgFBKBDpYCAAQQhqIAEQ8mAgAUEpEOxgIAJBEGokAQtHAQF/IwFBEGsiAiQBIAAoAggiACABIAAoAgAoAhARBQAgAiACQQhqIwBBlK8OahD/XykCADcDACABIAIQs2AaIAJBEGokAQu6AgECfyMBQdAAayICJAEgAUEoEOlgIABBDGogARDyYCABQSkQ7GAgACgCCCIDIAEgAygCACgCFBEFACAAKAIUIgNBAXEEQCACIAJByABqIwBBvcIAahD/XykCADcDICABIAJBIGoQs2AaIAAoAhQhAwsgA0ECcQR/IAIgAkFAayMAQb28B2oQ/18pAgA3AxggASACQRhqELNgGiAAKAIUBSADC0EEcQRAIAIgAkE4aiMAQdCQAWoQ/18pAgA3AxAgASACQRBqELNgGgsCQCACAn8CQAJAIAAtABhBAWsOAgABAwsgAkEwaiMAQf6ZDmoQ/18MAQsgAkEoaiMAQfqZDmoQ/18LKQIANwMIIAEgAkEIahCzYBoLIAAoAhwEQCABQSAQ/V8hASAAKAIcIAEQ/F8LIAJB0ABqJAELgwECAn8BfiMBQTBrIgIkASAAKAIIIAEQ/F8gAiACQShqIwAiA0HCoQtqEP9fKQIANwMQIAEgAkEQahCzYCEBIAIgACkCDCIENwMIIAIgBDcDICABIAJBCGoQs2AhACACIAJBGGogA0GsnwtqEP9fKQIANwMAIAAgAhCzYBogAkEwaiQBC3ACAX8BfiMBQSBrIgIkASAAKAIIIAEQ/F8gAiACQRhqIwBBlK8OahD/XykCADcDCCABIAJBCGoQs2AhASACIAApAgwiAzcDACACIAM3AxAgASACELNgIQEgACgCFCIABEAgACABEPxfCyACQSBqJAELDAAgACgCDCABEMpgCwwAIAAoAgwgARDNYAsMACAAKAIMIAEQz2ALtQEBAn8gACgCDCICIAEgAigCACgCEBEFACMBQTBrIgIkASAAKAIIIgNBAXEEQCACIAJBKGojAEG9wgBqEP9fKQIANwMQIAEgAkEQahCzYBogACgCCCEDCyADQQJxBH8gAiACQSBqIwBBvbwHahD/XykCADcDCCABIAJBCGoQs2AaIAAoAggFIAMLQQRxBEAgAiACQRhqIwBB0JABahD/XykCADcDACABIAIQ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aiQBCwYAEIEBAAsNACAAQSBqEOlhEOdhCwcAIABBGGoLyAEBA38jAUEQayIDJAEgAyAANgIMIAAQ6WEoAgQiBSgCBCEAIANBADYCCCAAQQBBACADQQhqEPpfIQQCQAJAIAMoAggNACAERQ0AIAEgBDYCAAwBCyAEEORGIAEgABD9REEBahDjRiIENgIAIAQgABDyRBoLIAJBADYCACOxAiIAIAUgA0EMaiAAKAIAKAIQEQIABEAgAiADKAIMIgAgACgCACgCCBEBACIAEP1EQQFqEONGIgQ2AgAgBCAAEPJEGgsgA0EQaiQBCwcAIABBGGsLiAEBAn8jAUEwayIBJAEgACABQSxqIAFBKGoQ6GEgASgCLCEAAkAgASgCKCICBEAgASACNgIUIAEgADYCECABQSRqIwBBg6MDaiABQRBqEM88GiACEORGDAELIAEgADYCACABQSRqIwBBnKADaiABEM88GgsgABDkRiABKAIkIQAgAUEwaiQBIAALDQAgAEEYahDjRhDnYQsKACAAEOlhEORGC20BA38jAUEQayIBJAEgAUEIaiAAEO5hIgAoAgAtAAAEf0EABQJ/AkAgACgCBCICLQAAIgNBAUYiAEUEQCADQQJxDQEgAkECOgAACyAADAELIwBBkNsEakEAEPVfAAtBAXMLIQAgAUEQaiQBIAALGQAgACABEM5ZIgBBBGogAUEBahC8SxogAAsyAQF/IwFBEGsiASQBIAFBCGogABDuYSIAKAIAQQE6AAAgACgCBEEBOgAAIAFBEGokAQspAQF/IwFBEGsiASQBIAFBCGogABDuYUEEaigCAEEAOgAAIAFBEGokAQsIACPvAygCAAupAQECfyPuAygCACEBI7MBIgBBADYCACABEOoBIAAoAgAhASAAQQA2AgACQCABQQFHBEAjswEiAEEANgIAIwJBrTFqIwBB6uUIakEAEOgBIAAoAgAhASAAQQA2AgAgAUEBRw0BC0EAEN0BEOwBGiOzASIAQQA2AgAjAkGtMWojAEGWxwRqQQAQ6AEgACgCACEBIABBADYCACABQQFHDQBBABDdARoQ8mELAAsIACPuAygCAAsYACPvAygCABEMACMAQZLmCGpBABD1XwALCAAjrgMoAgAL6AEBA38CQCMAQczO8AFqLQAARQRAI7MBIgJBADYCACMCQa4xahDqASAC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AHtzaXNuc259AHslVX0AcyhPKXtzT30Ae3NPc05zTnNPc099AHtPT30AcyhPKXtzOm4sczpPfQB7Li4ufQBvcGVyYXRvcnx8AG9wZXJhdG9yfABUewB0aW1ldHoAaHoAXzAuLi4vOVp6AHB5cHJveHkAbWFwcGluZ3Byb3h5AF9zY3Byb3h5AE98JHBwOmNyZWF0ZV9wcm94eQBweW9kaWRlLmZmaS5Kc1Byb3h5AHB5b2RpZGUuSnNQcm94eQBFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhIEpzUHJveHkAX3BpY2tsZS5VbnBpY2tsZXJNZW1vUHJveHkAX3BpY2tsZS5QaWNrbGVyTWVtb1Byb3h5AEpzRG91YmxlUHJveHkAaXNhdHR5AGxvZ2luX3R0eQAvZGV2L3R0eQBwcm9wZXJ0eQBpc19lbXB0eQBwb3BpdGVtKCk6IGRpY3Rpb25hcnkgaXMgZW1wdHkAX19uZXdvYmpfXyBhcmdsaXN0IGlzIGVtcHR5AENlbGwgaXMgZW1wdHkAY2hhbm5lbCAlbGxkIGlzIGVtcHR5AGV4ZWN2ZTogYXJndiBmaXJzdCBlbGVtZW50IGNhbm5vdCBiZSBlbXB0eQBleGVjdigpIGFyZyAyIGZpcnN0IGVsZW1lbnQgY2Fubm90IGJlIGVtcHR5AGV4ZWN2ZTogYXJndiBtdXN0IG5vdCBiZSBlbXB0eQB0eXBlIE1STyBtdXN0IG5vdCBiZSBlbXB0eQBleGVjdigpIGFyZyAyIG11c3Qgbm90IGJlIGVtcHR5AF9xdWV1ZS5FbXB0eQBhbnRpZ3Jhdml0eQByZWZlcmVuY2UgdG8gYmluYXJ5IGVudGl0eQBhc3luY2hyb25vdXMgZW50aXR5AGluY29tcGxldGUgbWFya3VwIGluIHBhcmFtZXRlciBlbnRpdHkAZW50aXR5IGRlY2xhcmVkIGluIHBhcmFtZXRlciBlbnRpdHkAY2Fubm90IHN1c3BlbmQgaW4gZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0eQBYTUwgb3IgdGV4dCBkZWNsYXJhdGlvbiBub3QgYXQgc3RhcnQgb2YgZW50aXR5AHVuZGVmaW5lZCBlbnRpdHkAU2tpcHBlZEVudGl0eQB1c2VkZm9yc2VjdXJpdHkAZ2V0cHJpb3JpdHkAc2V2ZXJpdHkAdmFsdWUgdG8gYmUgdXNlZCBmb3IgaGFzaCBvZiBhIHBvc2l0aXZlIGluZmluaXR5AC1JbmZpbml0eQArSW5maW5pdHkAX2VudGVyX2J1ZmZlcmVkX2J1c3kAX29uY2VyZWdpc3RyeQBfcmVzZXRfcmVnaXN0cnkAX2V4dGVuc2lvbl9yZWdpc3RyeQBfaW52ZXJ0ZWRfcmVnaXN0cnkAX2xzcHJvZi5wcm9maWxlcl9zdWJlbnRyeQBfbHNwcm9mLnByb2ZpbGVyX2VudHJ5AHRvdGFsIHRpbWUgaW4gdGhpcyBlbnRyeQBzeW10YWJsZSBlbnRyeQB1bmtub3duIHN5bWJvbCB0YWJsZSBlbnRyeQBwb3NpeC5EaXJFbnRyeQB0YXJnZXRfaXNfZGlyZWN0b3J5AHVzZXJfc2l0ZV9kaXJlY3RvcnkAY3JlYXRlX2RpcmVjdG9yeQBwYXRoICIlcyIgaXMgbm90IGEgZGlyZWN0b3J5AFB5X05vVXNlclNpdGVEaXJlY3RvcnkAY29tbWVudF9mYWN0b3J5AGVsZW1lbnRfZmFjdG9yeQBkZWZhdWx0X2ZhY3RvcnkAcGlfZmFjdG9yeQBzaGFyZWRfbWVtb3J5AGdldF90cmFjZWRfbWVtb3J5AGdldF90cmFjZW1hbGxvY19tZW1vcnkAY2Fubm90IG1vZGlmeSByZWFkLW9ubHkgbWVtb3J5AGluc3VmZmljaWVudCBtZW1vcnkAaW52YWxpZCBpbmRleGluZyBvZiAwLWRpbSBtZW1vcnkAb3V0IG9mIG1lbW9yeQBjYW5ub3QgZGVsZXRlIG1lbW9yeQBfUHlFcnJfTm9NZW1vcnkAY2F0ZWdvcnkAZ2xJc1F1ZXJ5AGdsQmVnaW5RdWVyeQBnbEVuZFF1ZXJ5AGltcG9ydGxpYi5tYWNoaW5lcnkARmVicnVhcnkASmFudWFyeQBoZXJlZGl0YXJ5AGZpbmQgc3ltYm9sIGluIHNoYXJlZCBsaWJyYXJ5AGRsb3BlbihuYW1lLCBmbGFnPXtSVExEX0dMT0JBTHxSVExEX0xPQ0FMfSkgb3BlbiBhIHNoYXJlZCBsaWJyYXJ5AG5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5AGRsY2xvc2UgYSBsaWJyYXJ5AGludGVycHJldGVyIGhhcyBubyBtb2R1bGVzIGRpY3Rpb25hcnkAQ291bGRuJ3QgZ2V0IHRocmVhZC1zdGF0ZSBkaWN0aW9uYXJ5AG5vIGltcG9ydCBtb2R1bGUgZGljdGlvbmFyeQBJbnZhbGlkIGRpY3Rpb25hcnkAbmVlZCBkaWN0aW9uYXJ5AHNsb3Qgc3RhdGUgaXMgbm90IGEgZGljdGlvbmFyeQA8bW9kdWxlPi5fX2RpY3RfXyBpcyBub3QgYSBkaWN0aW9uYXJ5AGRlbGV0ZXMgYSBrZXkgZnJvbSBhIGRpY3Rpb25hcnkAa2V5d29yZCBsaXN0IG11c3QgYmUgYSBkaWN0aW9uYXJ5AGludGVybiBtdXN0IGJlIGEgZGljdGlvbmFyeQBvcHRpb25hbCAzcmQgYXJnIG11c3QgYmUgYSBkaWN0aW9uYXJ5AFdlYWtWYWx1ZURpY3Rpb25hcnkAIGltYWdpbmFyeQBiaW5hcnkAZ2xTaGFkZXJCaW5hcnkAcmVxdWlyZWQgZmllbGQgImZpbmFsYm9keSIgbWlzc2luZyBmcm9tIFRyeQByZXF1aXJlZCBmaWVsZCAiYm9keSIgbWlzc2luZyBmcm9tIFRyeQByZXF1aXJlZCBmaWVsZCAiaGFuZGxlcnMiIG1pc3NpbmcgZnJvbSBUcnkAcmVxdWlyZWQgZmllbGQgIm9yZWxzZSIgbWlzc2luZyBmcm9tIFRyeQBkZWVwY29weQB5KnxuOmZyb21fYnVmZmVyX2NvcHkAX1B5Q29uZmlnX0NvcHkAcnVucHkAfCRpTzp0b19weQBlcnJvciByZWFkaW5nIGZyb3plbiBnZXRwYXRoLnB5AHB0aHJlYWRfbXV0ZXhfZGVzdHJveQBPJjpjaGFubmVsX2Rlc3Ryb3kAcHRocmVhZF9jb25kX2Rlc3Ryb3kATzpkZXN0cm95AHRhYm5hbm55AEV0aW55AG1hbnkAJS41MDBzKCkgdGFrZXMgYSBkaWN0IGFzIHNlY29uZCBhcmcsIGlmIGFueQBfdGhyZWFkLl9sb2NhbGR1bW15AFRocmVhZC1sb2NhbCBkdW1teQBKdWx5AENhbid0IGNvbnZlcnQgJyUuMTAwcycgb2JqZWN0IHRvIHN0ciBpbXBsaWNpdGx5AGxpYmJ6aXAyIHdhcyBub3QgY29tcGlsZWQgY29ycmVjdGx5AGV4YWN0bHkAX2FwcGx5AG11bHRpcGx5AGYtc3RyaW5nOiBleHByZXNzaW9ucyBuZXN0ZWQgdG9vIGRlZXBseQB0b3JlYWRvbmx5AGtleXdvcmQtb25seQAnJS41MHMnIG9iamVjdCBhdHRyaWJ1dGUgJyVVJyBpcyByZWFkLW9ubHkAX1B5VGhyZWFkU3RhdGVfSW5pdCgpIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seQBmaW5hbGx5AHRoZSBzb2NrZXQgZmFtaWx5AHVua25vd24gYWRkcmVzcyBmYW1pbHkAdW5zdXBwb3J0ZWQgYWRkcmVzcyBmYW1pbHkAZ2V0c29ja2FkZHJsZW46IGJhZCBmYW1pbHkAJXMoKTogYmFkIGZhbWlseQBob3cgbWFueSB0aW1lcyB0aGlzIGlzIGNhbGxlZCByZWN1cnNpdmVseQBob3cgbWFueSB0aW1lcyBjYWxsZWQgcmVjdXJzaXZlbHkAaXkAc3RyYXRlZ3kAaGVhcGlmeQB1bmhleGxpZnkAbW9kaWZ5AE86Y21wX3RvX2tleQBmYWlsZWQgdG8gc2V0IGF1dG9UU1NrZXkAJzonIGV4cGVjdGVkIGFmdGVyIGRpY3Rpb25hcnkga2V5AGluY29tcGxldGUgZm9ybWF0IGtleQBtZW1vcnl2aWV3OiBpbnZhbGlkIHNsaWNlIGtleQBLZXkAVHJ5IGhhcyBuZWl0aGVyIGV4Y2VwdCBoYW5kbGVycyBub3IgZmluYWxib2R5AFRyeVN0YXIgaGFzIG5laXRoZXIgZXhjZXB0IGhhbmRsZXJzIG5vciBmaW5hbGJvZHkAYXNzaWdubWVudCBleHByZXNzaW9uIHdpdGhpbiBhIGNvbXByZWhlbnNpb24gY2Fubm90IGJlIHVzZWQgaW4gYSBjbGFzcyBib2R5AGNvcm91dGluZSBpcyBiZWluZyBhd2FpdGVkIGFscmVhZHkAX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5AF9QeU9iamVjdF9DaGVja0NvbnNpc3RlbmN5AF9QeVR5cGVfQ2hlY2tDb25zaXN0ZW5jeQBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kAZ2V0X2V2ZW50X2xvb3BfcG9saWN5AGl0ZXJ0b29scy5ncm91cGJ5AGluIHRocmVhZCBzdGFydGVkIGJ5AHdlYWsgb2JqZWN0IGhhcyBnb25lIGF3YXkAcG9wIGZyb20gZW1wdHkgYnl0ZWFycmF5AHN0ciwgYnl0ZXMgb3IgYnl0ZWFycmF5AGNhbm5vdCBjb252ZXJ0ICclLjIwMHMnIG9iamVjdCB0byBieXRlYXJyYXkAY2Fubm90IGFkZCBtb3JlIG9iamVjdHMgdG8gYnl0ZWFycmF5AHZhbHVlIG5vdCBmb3VuZCBpbiBieXRlYXJyYXkAQ3xPOmFycmF5AGFycmF5LmFycmF5AHBvcCBmcm9tIGVtcHR5IGFycmF5AGNhbiBvbmx5IGFwcGVuZCBhcnJheSAobm90ICIlLjIwMHMiKSB0byBhcnJheQBhcnJheS5pbmRleCh4KTogeCBub3QgaW4gYXJyYXkAYXJyYXkucmVtb3ZlKHgpOiB4IG5vdCBpbiBhcnJheQB0aGUgdHlwZWNvZGUgY2hhcmFjdGVyIHVzZWQgdG8gY3JlYXRlIHRoZSBhcnJheQBnbElzVmVydGV4QXJyYXkAZ2xCaW5kVmVydGV4QXJyYXkASnNBcnJheQBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheQBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5AF9jdHlwZXMuQXJyYXkAc2V0IGRpc3BsYXkAdG1feWRheQB0bV93ZGF5AFRodXJzZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFNhdHVyZGF5AHRvZGF5AFN1bmRheQBNb25kYXkAdG1fbWRheQBpc293ZWVrZGF5AEZyaWRheQBNYXkAVHkAJW0vJWQvJXkAgHgAY3R4AGNyY19ocXgAbWFpbGJveABueAAvZGV2L3B0bXgAcG9zaXgAaGFzc3VmZml4AHJlbW92ZXN1ZmZpeABfc3VmZml4AHJlbW92ZXByZWZpeABiYXNlX3ByZWZpeABjb25maWdfaW5pdF9weWNhY2hlX3ByZWZpeABiYXNlX2V4ZWNfcHJlZml4AG11c3Qgbm90IHVuZGVjbGFyZSBwcmVmaXgAdW5ib3VuZCBwcmVmaXgAcmFkaXgAZmFpbGVkIHRvIGNyZWF0ZSBpbml0IGludGVycHJldGVyIElEIG11dGV4ACBjb21wbGV4AHNobGV4AGNpcmN1bWZsZXgAZnJvbWhleABhMmJfaGV4AGIyYV9oZXgAbGFzdGluZGV4AHJpbmRleABncm91cGluZGV4AE98bm46aW5kZXgAT3xPJk8mOmluZGV4AGludmFsaWQgbW9kdWxlIGluZGV4AGludmFsaWQgaW5kZXgAQ3VycmVudEJ5dGVJbmRleABFcnJvckJ5dGVJbmRleABjb25uZWN0X2V4AGV0OmdldGhvc3RieW5hbWVfZXgAX3JlZHVjZV9leABpZHgAX3N1YngAaW52YWxpZCBzeW50YXgAZGVjaW1hbC5Db252ZXJzaW9uU3ludGF4AG1pbm1heABfdW5zYWZlX3NldGVtYXgAZl9uYW1lbWF4AGZpbmRtYXgAX2hlYXBpZnlfbWF4AF9oZWFwcG9wX21heABfaGVhcHJlcGxhY2VfbWF4AEVtYXgAfCRPTzptYXgAXHgAUHlTeXNfU2V0QXJndkV4AER4AAogICAgY29tYmluZWQgQ1JDczogc3RvcmVkID0gMHglMDh4LCBjb21wdXRlZCA9IDB4JTA4eABcVSUwOHgAXHUlMDR4AFx4JTAyeABQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0IHN0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4JTAyeAAgICAgICAgIGF0IHAtJWQ6IDB4JTAyeAAgICAgICAgIGF0IHRhaWwrJWQ6IDB4JTAyeAAgJTAyeAAtKyAgIDBYMHgAZmluYWxpemluZyAodHN0YXRlPTB4AC0wWCswWCAwWC0weCsweCAweABDdXJyZW50IHRocmVhZCAweABUaHJlYWQgMHgAVW5rbm93biBjb252ZXJzaW9uIHNwZWNpZmllciBceCV4ADB4JXgAJXg6JXg6JXg6JXg6JXg6JXg6JXg6JXgAX2NvZGVjc190dwBhc3luY19nZW5lcmF0b3JfYXRocm93AE98T086YXRocm93AE98T086dGhyb3cAd3JpdGVyb3cAaXBvdwB1dGNub3cAcGVuZGluZyBidWZmZXIgb3ZlcmZsb3cAX19uZXh0X3ByaW1lIG92ZXJmbG93AGRlY2ltYWwuT3ZlcmZsb3cAdW5waWNrbGluZyBzdGFjayB1bmRlcmZsb3cAZGVjaW1hbC5VbmRlcmZsb3cAY2Fubm90IHNldCB0aGUgcmVjdXJzaW9uIGxpbWl0IHRvICVpIGF0IHRoZSByZWN1cnNpb24gZGVwdGggJWk6IHRoZSBsaW1pdCBpcyB0b28gbG93AFBvdwBzdGFydF9uZXcAZGlhbGVjdF9uZXcAVW5rbm93biB0eXBlZCBhcnJheSB0eXBlICclcycuIFRoaXMgaXMgYSBwcm9ibGVtIHdpdGggUHlvZGlkZSwgcGxlYXNlIG9wZW4gYW4gaXNzdWUgYWJvdXQgaXQgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL3B5b2RpZGUvcHlvZGlkZS9pc3N1ZXMvbmV3AG9wZXJhdG9yIG5ldwB0b19tZW1vcnl2aWV3AEtleXNWaWV3AEl0ZW1zVmlldwBWYWx1ZXNWaWV3AGZldwBjcHl0aG9uLlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcATmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gX1B5VW5pY29kZV9OZXcAaW52YWxpZCBtYXhpbXVtIGNoYXJhY3RlciBwYXNzZWQgdG8gUHlVbmljb2RlX05ldwBOZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBQeVVuaWNvZGVfTmV3AHJhdwBsaW4ydWxhdwBsaW4yYWxhdwBEdwBnbEdldEZsb2F0dgBfY3N2AGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYAZ2xHZXRJbnRlZ2VydgBOb3YAbG9jYWxlY29udgBpbnYAZm52AHZlbnYAb3MucHV0ZW52AG9zLnVuc2V0ZW52AHB5dGhvbnBhdGhfZW52AGdsR2V0Qm9vbGVhbnYAZ2xHZXRRdWVyeWl2AGdsR2V0UXVlcnlPYmplY3R1aXYAZ2xHZXRRdWVyeU9iamVjdGl2AGdsR2V0VGV4UGFyYW1ldGVyaXYAZ2xUZXhQYXJhbWV0ZXJpdgBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2AGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYAZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgBnbEdldFNoYWRlcml2AGdsR2V0VW5pZm9ybWl2AGdsR2V0UHJvZ3JhbWl2AGlmbG9vcmRpdgBpdHJ1ZWRpdgBnbEdldFZlcnRleEF0dHJpYml2AG9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IE1hdE11bHQgfCBEaXYgfCBNb2QgfCBQb3cgfCBMU2hpZnQgfCBSU2hpZnQgfCBCaXRPciB8IEJpdFhvciB8IEJpdEFuZCB8IEZsb29yRGl2AGdsVW5pZm9ybTRpdgBnbFVuaWZvcm0zaXYAZ2xVbmlmb3JtMml2AGdsVW5pZm9ybTFpdgBvcmlnX2FyZ3YAY29uZmlnX3VwZGF0ZV9hcmd2AHBhcnNlX2FyZ3YAbm8gbWVtIGZvciBzeXMuYXJndgBjYW4ndCBhc3NpZ24gc3lzLmFyZ3YAY2FuJ3QgY29tcHV0ZSBwYXRoMCBmcm9tIGFyZ3YAX1B5X1ByZUluaXRpYWxpemVGcm9tUHlBcmd2AHxpOl9zaWdzZWd2AGdsR2V0VGV4UGFyYW1ldGVyZnYAZ2xUZXhQYXJhbWV0ZXJmdgBnbEdldFVuaWZvcm1mdgBnbEdldFZlcnRleEF0dHJpYmZ2AGdsVW5pZm9ybU1hdHJpeDRmdgBnbFVuaWZvcm00ZnYAZ2xWZXJ0ZXhBdHRyaWI0ZnYAZ2xVbmlmb3JtTWF0cml4M2Z2AGdsVW5pZm9ybTNmdgBnbFZlcnRleEF0dHJpYjNmdgBnbFVuaWZvcm1NYXRyaXgyZnYAZ2xVbmlmb3JtMmZ2AGdsVmVydGV4QXR0cmliMmZ2AGdsVW5pZm9ybTFmdgBnbFZlcnRleEF0dHJpYjFmdgB3cml0ZXYAc3RfcmRldgBvc3NhdWRpb2RldgBtYWtlZGV2AHN0X2RldgAtWCBkZXYAcmVhZHYAZXhlY3YAcmF0ZWN2AE8mfE86Y2hhbm5lbF9yZWN2AG58aTpyZWN2AG5lZ2F0aXZlIGJ1ZmZlcnNpemUgaW4gcmVjdgBEdgBnbEdldFF1ZXJ5T2JqZWN0dWk2NHYAZ2xHZXRRdWVyeU9iamVjdGk2NHYALXYAJyVjJyBmb3JtYXQgcmVxdWlyZXMgMCA8PSBudW1iZXIgPD0gJXp1ACQyYSQwMCRhYmNkZWZnaGlqa2xtbm9wcXJzdHV1AGEyYl91dQBiMmFfdXUAVGFzay0lbGx1ACVsdQBUaHUAdGF1AHN1bmF1AFx1AFR1AEx1AHVzaG9ydCBmb3JtYXQgcmVxdWlyZXMgMCA8PSBudW1iZXIgPD0gJXUAZGF5IG11c3QgYmUgaW4gWyV1LCAzNjVdLCBub3Q6ICV1AGRnZXR0ZXh0AGRjZ2V0dGV4dABpc3RleHQAaXRlcnRleHQAc2V0Y29udGV4dABnZXRjb250ZXh0AGxvY2FsY29udGV4dABjb3B5X2NvbnRleHQAZXhwcl9jb250ZXh0AGRlY2ltYWxfY29udGV4dABleHByZXNzaW9uIHdoaWNoIGNhbid0IGJlIGFzc2lnbmVkIHRvIGluICVzIGNvbnRleHQAZXhjZXB0aW9uIGNvbnRleHQATm90SW1wbGVtZW50ZWQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGEgYm9vbGVhbiBjb250ZXh0AG11bF9zaXplX3QoKTogb3ZlcmZsb3c6IGNoZWNrIHRoZSBjb250ZXh0AGFkZF9zaXplX3QoKTogb3ZlcmZsb3c6IGNoZWNrIHRoZSBjb250ZXh0AHN1Yl9zaXplX3QoKTogb3ZlcmZsb3c6IGNoZWNrIHRoZSBjb250ZXh0AG9wdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBjb250ZXh0AEdldElucHV0Q29udGV4dABEZWZhdWx0Q29udGV4dABkZWNpbWFsLkludmFsaWRDb250ZXh0AEV4dGVuZGVkQ29udGV4dABCYXNpY0NvbnRleHQAX2NvbnRleHR2YXJzLkNvbnRleHQAZGVjaW1hbC5Db250ZXh0ACVSIHdhcyBjcmVhdGVkIGluIGEgZGlmZmVyZW50IENvbnRleHQAZmluZHRleHQAYnVmZmVyX3RleHQAZXhjZXB0aW9uIHRleHQAYW5leHQAdGJfbmV4dABnYmtleHQAaXNvMjAyMl9qcF9leHQAY3A5NDlleHQAY3A5MzJleHQAY3A5NTBleHQAZ2IxODAzMGV4dABmaWxlaW5wdXQAbmVlZHNfaW5wdXQAYnVpbHRpbnMuaW5wdXQAZXJyb3IgYXQgc3RhcnQgYmVmb3JlIHJlYWRpbmcgYW55IGlucHV0AFJhbiBvdXQgb2YgaW5wdXQAaW5jb21wbGV0ZSBpbnB1dAB1bnN1cHBvcnRlZCBsb2NhbGUgZm9yIHN0YW5kYXJkIGlucHV0AGZhbm91dABzZXRkZWZhdWx0dGltZW91dABnZXRkZWZhdWx0dGltZW91dABzZXR0aW1lb3V0AGdldHRpbWVvdXQAdGhlIHNvY2tldCB0aW1lb3V0AGlucHV0KCk6IGxvc3Qgc3lzLnN0ZG91dAB0aW1lZCBvdXQAcmp1c3QAbGp1c3QAQXVndXN0AFB5X0luaXRpYWxpemUgbXVzdCBiZSBjYWxsZWQgZmlyc3QAYXQgbW9zdABob3N0AG5vdCBhIGNvbnN0AGZyYW1lIGRvZXMgbm90IGV4aXN0AGNhbm5vdCBjbG9zZSBleHBvcnRlZCBwb2ludGVycyBleGlzdAB0b2xpc3QAZnJvbWxpc3QAeHhzdWJ0eXBlLnNwYW1saXN0AGludGVybmFsIGVycm9yIGluIGNvbnRleHRfc2V0c3RhdHVzX2xpc3QAaW50ZXJuYWwgZXJyb3IgaW4gY29udGV4dF9zZXR0cmFwc19saXN0AGRlY29yYXRvcl9saXN0AHBvcCBmcm9tIGVtcHR5IGxpc3QATm9uZSBkaXNhbGxvd2VkIGluIHN0YXRlbWVudCBsaXN0AE5VTEwgb2JqZWN0IGluIG1hcnNoYWwgZGF0YSBmb3IgbGlzdABleGVjdmU6IGFyZ3YgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QAYXJndW1lbnQgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QAZXhlY3YoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdABjYW4gb25seSBjb25jYXRlbmF0ZSBsaXN0IChub3QgIiUuMjAwcyIpIHRvIGxpc3QATm9uZSBkaXNhbGxvd2VkIGluIGV4cHJlc3Npb24gbGlzdABsaXN0LnJlbW92ZSh4KTogeCBub3QgaW4gbGlzdAAlUiBpcyBub3QgaW4gbGlzdABhcmcgbXVzdCBiZSBsaXN0AENhbm5vdCBhZGQgbm90ZTogX19ub3Rlc19fIGlzIG5vdCBhIGxpc3QAZW52LmtleXMoKSBvciBlbnYudmFsdWVzKCkgaXMgbm90IGEgbGlzdAAnX2NoaWxkcmVuJyBpcyBub3QgYSBsaXN0AF9fc3ViY2xhc3Nlc19fKCkgbXVzdCByZXR1cm4gYSBsaXN0AF93YXJuaW5ncy5maWx0ZXJzIG11c3QgYmUgYSBsaXN0AGRpc3QAX1B5QXJndl9Bc1dzdHJMaXN0AFB5Q29uZmlnX1NldFdpZGVTdHJpbmdMaXN0AFNsaWNlIHN1YnNjcmlwdGluZyBpc24ndCBpbXBsZW1lbnRlZCBmb3IgSFRNTENvbGxlY3Rpb24gb3IgTm9kZUxpc3QAZmllbGQgJ2N0eCcgaXMgcmVxdWlyZWQgZm9yIExpc3QAcmVxdWlyZWQgZmllbGQgImN0eCIgbWlzc2luZyBmcm9tIExpc3QAcmVxdWlyZWQgZmllbGQgImVsdHMiIG1pc3NpbmcgZnJvbSBMaXN0AHVuaXR0ZXN0AGRvY3Rlc3QAgP+AASB/gYCADQr/fyCBIHRlc3QAcmVzdABpdGVydG9vbHMuemlwX2xvbmdlc3QAaGV4ZGlnZXN0AF9jb21wYXJlX2RpZ2VzdAB0bV9pc2RzdABlbGFwc2VkIHRpbWUgc2luY2UgYW4gYXJiaXRyYXJ5IHBvaW50IGluIHRoZSBwYXN0AGRlZmF1bHQgJ2V4Y2VwdDonIG11c3QgYmUgbGFzdABmYXN0AGF0IGxlYXN0AGNvbnN0X2Nhc3QAcmVpbnRlcnByZXRfY2FzdABzdGQ6OmJhZF9jYXN0AHN0YXRpY19jYXN0AGR5bmFtaWNfY2FzdABiYWQgYW55IGNhc3QAX2FzdABpc3FydABsaXN0IG1vZGlmaWVkIGR1cmluZyBzb3J0AGl8czpnZXRzZXJ2Ynlwb3J0AHNvY2tldC5nZXRzZXJ2Ynlwb3J0AGdsVmlld3BvcnQAX29zeF9zdXBwb3J0AF9haXhfc3VwcG9ydABzaGFyZWQgbWVtb3J5IHN1cHBvcnQAcGlja2xlIHN1cHBvcnQAcHRocmVhZCBzdXBwb3J0AHppcGltcG9ydABhYnNvbHV0ZV9pbXBvcnQAc2l0ZV9pbXBvcnQAcmVxdWlyZWQgZmllbGQgIm5hbWVzIiBtaXNzaW5nIGZyb20gSW1wb3J0AHVuZXhwZWN0ZWQgcGFyc2VyIHN0YXRlIC0gcGxlYXNlIHNlbmQgYSBidWcgcmVwb3J0AGRlY19oYXNoOiBpbnRlcm5hbCBlcnJvcjogcGxlYXNlIHJlcG9ydABsaWJtcGRlYzogaW50ZXJuYWwgZXJyb3IgaW4gX21wZF9iYXNlX25kaXZtb2Q6IHBsZWFzZSByZXBvcnQAVHJ1bmNhdGlvbiBvZiB2YWx1ZSB0byBzaG9ydABtYXJzaGFsIGRhdGEgdG9vIHNob3J0AFRydW5jYXRpb24gb2YgdmFsdWUgdG8gdW5zaWduZWQgc2hvcnQAUHl0aG9uIGludCB0b28gbGFyZ2UgZm9yIEMgdW5zaWduZWQgc2hvcnQAYWJvcnQAZnJvbXV0YzogdHouZHN0KCkgZ2F2ZSBpbmNvbnNpc3RlbnQgcmVzdWx0czsgY2Fubm90IGNvbnZlcnQAaW50IHRvbyBsb25nIHRvIGNvbnZlcnQAaGV4YWRlY2ltYWwgc3RyaW5nIHRvbyBsb25nIHRvIGNvbnZlcnQAaW50IHRvbyBiaWcgdG8gY29udmVydABpbnQgdG9vIGxhcmdlIHRvIGNvbnZlcnQAaW50IHN0cmluZyB0b28gbGFyZ2UgdG8gY29udmVydABsb2dpY2FsX2ludmVydABJbnZlcnQAYXNzZXJ0AGZpZWxkICd0ZXN0JyBpcyByZXF1aXJlZCBmb3IgQXNzZXJ0AHJlcXVpcmVkIGZpZWxkICJ0ZXN0IiBtaXNzaW5nIGZyb20gQXNzZXJ0AG5POmluc2VydABQeVdpZGVTdHJpbmdMaXN0X0luc2VydABhbGVydABtc3ZjcnQAY2JydABfc2lnYWJydABleGNlcHRpb24gc3RhcnQAX2NyeXB0AGludGVybmFsIGVycm9yOiBpbmZsYXRlIHN0cmVhbSBjb3JydXB0AGludGVybmFsIGVycm9yOiBkZWZsYXRlIHN0cmVhbSBjb3JydXB0AHNpZ2ludGVycnVwdABLZXlib2FyZEludGVycnVwdABnZXRvcHQAaWlpOnNldHNvY2tvcHQAaWlPIUk6c2V0c29ja29wdABpaXkqOnNldHNvY2tvcHQAaWl8aTpnZXRzb2Nrb3B0AGtlY2Nha29wdABzdWJzY3JpcHQAZmllbGQgJ2N0eCcgaXMgcmVxdWlyZWQgZm9yIFN1YnNjcmlwdABmaWVsZCAndmFsdWUnIGlzIHJlcXVpcmVkIGZvciBTdWJzY3JpcHQAZmllbGQgJ3NsaWNlJyBpcyByZXF1aXJlZCBmb3IgU3Vic2NyaXB0AHJlcXVpcmVkIGZpZWxkICJjdHgiIG1pc3NpbmcgZnJvbSBTdWJzY3JpcHQAcmVxdWlyZWQgZmllbGQgInZhbHVlIiBtaXNzaW5nIGZyb20gU3Vic2NyaXB0AHJlcXVpcmVkIGZpZWxkICJzbGljZSIgbWlzc2luZyBmcm9tIFN1YnNjcmlwdABDYWxsYmFjayBmb3IgaW50ZXJuYWwgdXNlIHRvIGFsbG93IGF3YWl0aW5nIGEgZnV0dXJlIGZyb20gamF2YXNjcmlwdABub2V4Y2VwdABfYWNjZXB0AHByb3QAaHlwb3QAY2hyb290AGlzX25vdAB3aGV0aGVyIHRoZSBvYmplY3Qgb3ducyB0aGUgbWVtb3J5IG9yIG5vdAB0eXBlICclLjEwMHMnIHBhcnRpY2lwYXRlcyBpbiBnYyBhbmQgaXMgYSBiYXNlIHR5cGUgYnV0IGhhcyBpbmFwcHJvcHJpYXRlIHRwX2ZyZWUgc2xvdABub24tc3RyaW5nIGZvdW5kIGluIGNvZGUgc2xvdABJc05vdAByZWNjYWxsY291bnQAY29fa3dvbmx5YXJnY291bnQAY29fcG9zb25seWFyZ2NvdW50AGNvX2FyZ2NvdW50AGdldHJlZmNvdW50AGdldHdlYWtyZWZjb3VudABQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MgY2FsbGVkIG9uIG9iamVjdCB3aXRoIGEgbm9uLXplcm8gcmVmY291bnQAX2dldHF1aWNrZW5lZGNvdW50AGNwdV9jb3VudABiaXRfY291bnQAZ2V0X2NvdW50AGhhcmRfbGlua19jb3VudABzaG93X3JlZl9jb3VudABnZXRfZnJlZXplX2NvdW50AGl0ZXJ0b29scy5jb3VudABfbWVtb3J5X3JlbGVhc2UoKTogbmVnYXRpdmUgZXhwb3J0IGNvdW50AG5lZ2F0aXZlIHNoaWZ0IGNvdW50AG5lZ2F0aXZlIGNvdW50AExPTkcgcGlja2xlIGhhcyBuZWdhdGl2ZSBieXRlIGNvdW50AHBwcmludABidWlsdGlucy5icmVha3BvaW50AG1vbl9kZWNpbWFsX3BvaW50AGlzZGlzam9pbnQAbGVuZ3RoX2hpbnQAcGFyc2VfaW50AGRpdmlkZV9pbnQAZ2xIaW50ACogd2FudHMgaW50AGJ5dGUgYXJyYXkgdG9vIGxvbmcgdG8gY29udmVydCB0byBpbnQAY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIGludABzdHJpbmcgbGVuZ3RoIGRvZXMgbm90IGZpdCBpbiBpbnQAcmVxdWVzdGVkIGxlbmd0aCBkb2VzIG5vdCBmaXQgaW4gaW50AGxhc3RpIGlzIG5vdCBhbiBpbnQAcmVxdWVzdCBkb2VzIG5vdCBmaXQgaW4gYW4gaW50AG1tYXAgaXRlbSB2YWx1ZSBtdXN0IGJlIGFuIGludABDb21wYXJpc29uIGJldHdlZW4gYnl0ZXMgYW5kIGludABjYW4ndCBjb252ZXJ0IG5lZ2F0aXZlIHZhbHVlIHRvIHVuc2lnbmVkIGludABQeXRob24gaW50IHRvbyBsYXJnZSB0byBjb252ZXJ0IHRvIEMgaW50AHdpZHRoICogbmNoYW5uZWxzIHRvbyBiaWcgZm9yIGEgQyBpbnQAY2FuIG9ubHkganVtcCBmcm9tIGEgJ2xpbmUnIHRyYWNlIGV2ZW50AHJvdW5kZWQgdmFsdWUgdG9vIGxhcmdlIHRvIHJlcHJlc2VudABtZW1vcnl2aWV3OiBjYW5ub3QgY2FzdCB0byB1bnNpZ25lZCBieXRlcyBpZiB0aGUgZm9ybWF0IGZsYWcgaXMgcHJlc2VudABjb25jdXJyZW50AGdldF9jdXJyZW50AHRocmVhZCBpcyBub3QgY3VycmVudAB0c3RhdGUgJXAgaXMgc3RpbGwgY3VycmVudABfUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50AGFmdGVyX2luX3BhcmVudABfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQAUHlPU19BZnRlckZvcmtfUGFyZW50AHNpZ24gZGlnaXRzIGV4cG9uZW50AEZMVF9SQURJWCAtLSByYWRpeCBvZiBleHBvbmVudABub24tZGVmYXVsdCBhcmd1bWVudCBmb2xsb3dzIGRlZmF1bHQgYXJndW1lbnQAcGFja19pbnRvIGV4cGVjdGVkIG9mZnNldCBhcmd1bWVudABtaXNzaW5nIGZvcm1hdCBhcmd1bWVudABiYWQgQlVJTERfQ09OU1RfS0VZX01BUCBrZXlzIGFyZ3VtZW50AGJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhbiBlcnJvcnMgYXJndW1lbnQARXhwZWN0ZWQgYSBKc1Byb3h5IGZvciB0aGUgcHlwcm94aWVzIGFyZ3VtZW50AEV4cGVjdGVkIGEgSnMgQXJyYXkgZm9yIHRoZSBweXByb3hpZXMgYXJndW1lbnQAcGFja19pbnRvIGV4cGVjdGVkIGJ1ZmZlciBhcmd1bWVudABzaXxJSTtnZXRuYW1laW5mbygpOiBpbGxlZ2FsIHNvY2thZGRyIGFyZ3VtZW50AGRlc2NyaXB0b3IgJyVWJyBvZiAnJS4xMDBzJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnQAdW5ib3VuZCBtZXRob2QgJVUgbmVlZHMgYW4gYXJndW1lbnQAcnVuKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQAaW50KCkgbWlzc2luZyBzdHJpbmcgYXJndW1lbnQAZXJyb3JzIHdpdGhvdXQgYSBzdHJpbmcgYXJndW1lbnQAZW5jb2Rpbmcgd2l0aG91dCBhIHN0cmluZyBhcmd1bWVudABiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZW5jb2RpbmcgYXJndW1lbnQAaWk7cmF0ZWN2KCk6IGlsbGVnYWwgc3RhdGUgYXJndW1lbnQAaU8hO3JhdGVjdigpOiBpbGxlZ2FsIHN0YXRlIGFyZ3VtZW50AGlpO2FkcGNtMmxpbigpOiBpbGxlZ2FsIHN0YXRlIGFyZ3VtZW50AGlpO2xpbjJhZHBjbSgpOiBpbGxlZ2FsIHN0YXRlIGFyZ3VtZW50AE9LO3NldHN0YXRlKCk6IGlsbGVnYWwgc3RhdGUgYXJndW1lbnQAU08hO3NldHN0YXRlKCk6IGlsbGVnYWwgc3RhdGUgYXJndW1lbnQAJS4yMDBzJXMgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50AHR5cGUgJ3BhcnRpYWwnIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudABwZXJzaXN0ZW50X2lkIG11c3QgYmUgYSBjYWxsYWJsZSB0YWtpbmcgb25lIGFyZ3VtZW50AHBlcnNpc3RlbnRfbG9hZCBtdXN0IGJlIGEgY2FsbGFibGUgdGFraW5nIG9uZSBhcmd1bWVudABiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYSBuZXdsaW5lIGFyZ3VtZW50AGlpaWlpaWlpaTtta3RpbWUoKTogaWxsZWdhbCB0aW1lIHR1cGxlIGFyZ3VtZW50AGlpaWlpaWlpaTtzdHJmdGltZSgpOiBpbGxlZ2FsIHRpbWUgdHVwbGUgYXJndW1lbnQAaWlpaWlpaWlpO2FzY3RpbWUoKTogaWxsZWdhbCB0aW1lIHR1cGxlIGFyZ3VtZW50AEV4cGVjdGVkIGEgSnNQcm94eSBmb3IgdGhlIGFyZ3VtZW50AGV4cGVjdGVkIGEgbWVzc2FnZSBhcmd1bWVudABhcmd1bWVudHMgY2Fubm90IGZvbGxvdyB2YXIta2V5d29yZCBhcmd1bWVudABwb3NpdGlvbmFsIGFyZ3VtZW50IGZvbGxvd3Mga2V5d29yZCBhcmd1bWVudAB6aXBfbG9uZ2VzdCgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQAZmlyc3QgbWFrZXRyYW5zIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgaWYgdGhlcmUgaXMgYSBzZWNvbmQgYXJndW1lbnQAaW52YWxpZCBhcmd1bWVudABPJk87aWxsZWdhbCBmdW5jX3NwZWMgYXJndW1lbnQAbmVnYXRpdmUgTE9OR19CSU5QVVQgYXJndW1lbnQAbmVnYXRpdmUgUFVUIGFyZ3VtZW50AFJhbmRvbSgpIHJlcXVpcmVzIDAgb3IgMSBhcmd1bWVudAB0aGUgZW50cnkncyBiYXNlIGZpbGVuYW1lLCByZWxhdGl2ZSB0byBzY2FuZGlyKCkgInBhdGgiIGFyZ3VtZW50AHVzZV9lbnZpcm9ubWVudABpZ25vcmVfZW52aXJvbm1lbnQAbXVsdGlwbGUgc3RhcnJlZCBleHByZXNzaW9ucyBpbiBhc3NpZ25tZW50ACclLjIwMHMnIG9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IGl0ZW0gYXNzaWdubWVudAB0b28gbWFueSBleHByZXNzaW9ucyBpbiBzdGFyLXVucGFja2luZyBhc3NpZ25tZW50ACclLjIwMHMnIG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgc2xpY2UgYXNzaWdubWVudAAnJXMnIGlzIGFuIGlsbGVnYWwgZXhwcmVzc2lvbiBmb3IgYXVnbWVudGVkIGFzc2lnbm1lbnQAaW52YWxpZCBub2RlIHR5cGUgKCVkKSBmb3IgYXVnbWVudGVkIGFzc2lnbm1lbnQAaW52YWxpZCBub2RlIHR5cGUgKCVkKSBmb3IgYW5ub3RhdGVkIGFzc2lnbm1lbnQAYWxpZ25tZW50AHR5cGVfY29tbWVudABiYXJlICogaGFzIGFzc29jaWF0ZWQgdHlwZSBjb21tZW50AENvbW1lbnQAd2l0aF9zdGF0ZW1lbnQAX19wcmVwYXJlX18oKSAtPiBkaWN0CnVzZWQgdG8gY3JlYXRlIHRoZSBuYW1lc3BhY2UgZm9yIHRoZSBjbGFzcyBzdGF0ZW1lbnQAbXVsdGlwbGUgc3RhdGVtZW50cyBmb3VuZCB3aGlsZSBjb21waWxpbmcgYSBzaW5nbGUgc3RhdGVtZW50AHVuZXhwZWN0ZWQgc3RhdGVtZW50AG1ha2VlbGVtZW50AGp1bmsgYWZ0ZXIgZG9jdW1lbnQgZWxlbWVudABTdGFydEVsZW1lbnQARW5kRWxlbWVudABPIU98TyE6U3ViRWxlbWVudABPfE8hOkVsZW1lbnQAeG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnQARG9uJ3Qga25vdyBob3cgdG8gdW5waWNrbGUgIiUuMjAwUiIgYXMgYW4gRWxlbWVudABjYW4ndCBpbml0aWFsaXplIG11dGV4IGZvciBjaGFubmVsIG1hbmFnZW1lbnQAaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50AGVxdWl2YWxlbnQAdW5leHBlY3RlZCB1bmluZGVudAB1bmV4cGVjdGVkIGluZGVudABnZXRfaWRlbnQAbm8gY3VycmVudCB0aHJlYWQgaWRlbnQAY2lyY3VtZmxleC1hY2NlbnQAZ3JhdmUtYWNjZW50AHBhcnNlX2NvbnN0YW50AHVuc3VwcG9ydGVkIGxhbmdpbmZvIGNvbnN0YW50AEludGVybmFsIGVycm9yOiBmYWlsZWQgdG8gZ2V0IHZhbHVlIG9mIGEgY29uc3RhbnQAaWRlbnRpZmllciBmaWVsZCBjYW4ndCByZXByZXNlbnQgJyVzJyBjb25zdGFudABmaWVsZCAndmFsdWUnIGlzIHJlcXVpcmVkIGZvciBDb25zdGFudAByZXF1aXJlZCBmaWVsZCAidmFsdWUiIG1pc3NpbmcgZnJvbSBDb25zdGFudABPdXQgb2YgcmFuZ2UgZmxvYXQgdmFsdWVzIGFyZSBub3QgSlNPTiBjb21wbGlhbnQAX0JpdEludAByZXF1aXJlZCBmaWVsZCAiY29sX29mZnNldCIgbWlzc2luZyBmcm9tIHN0bXQAcmVxdWlyZWQgZmllbGQgImxpbmVubyIgbWlzc2luZyBmcm9tIHN0bXQAaGFtdABzZXRfcmVzdWx0AG9zLnN0YXRfcmVzdWx0AG9zLnN0YXR2ZnNfcmVzdWx0AHBvc2l4LnRpbWVzX3Jlc3VsdABwb3NpeC51bmFtZV9yZXN1bHQAcG9zaXgud2FpdGlkX3Jlc3VsdABidWlsdGlucy5pbnB1dC9yZXN1bHQAVW5hYmxlIHRvIGdldCByZXN1bHQAR2V0UmVzdWx0AHNldGRlZmF1bHQAX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0AFNlZ21lbnRhdGlvbiBmYXVsdABNYXRNdWx0AGVsdABzYWx0AGF0ZXhpdABfZXhpdABhc3luYyBnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0AGNvcm91dGluZSBpZ25vcmVkIEdlbmVyYXRvckV4aXQAU3lzdGVtRXhpdABkb250X2luaGVyaXQAdGltZXVuaXQAY29tcGlsZS5jIGNvbXBpbGVyIHVuaXQAX2F0X2ZvcmtfcmVpbml0AF9QeUdJTFN0YXRlX1JlaW5pdABwdGhyZWFkX211dGV4X2luaXQAcHljb3JlX2ludGVycF9pbml0AF9jb25maWdfaW5pdABwdGhyZWFkX2NvbmRfaW5pdABfYWJjX2luaXQAUHlJbml0AF9QeUNvbnRleHRfSW5pdABfUHlBdEV4aXRfSW5pdABfUHlGYXVsdGhhbmRsZXJfSW5pdABfUHlJbXBvcnRaaXBfSW5pdABfUHlfSGFzaFJhbmRvbWl6YXRpb25fSW5pdABfUHlSdW50aW1lU3RhdGVfSW5pdABfUHlUaHJlYWRTdGF0ZV9Jbml0AF9QeUdJTFN0YXRlX0luaXQAX1B5R0NfSW5pdABzZXRyZWN1cnNpb25saW1pdABnZXRyZWN1cnNpb25saW1pdAB0cmFjZWJhY2tsaW1pdABuZXdfbGltaXQAZ2V0X3RyYWNlYmFja19saW1pdABmaWVsZF9zaXplX2xpbWl0AEV4Y2VlZHMgdGhlIGxpbWl0ICglZCBkaWdpdHMpIGZvciBpbnRlZ2VyIHN0cmluZyBjb252ZXJzaW9uOiB2YWx1ZSBoYXMgJXpkIGRpZ2l0czsgdXNlIHN5cy5zZXRfaW50X21heF9zdHJfZGlnaXRzKCkgdG8gaW5jcmVhc2UgdGhlIGxpbWl0AEV4Y2VlZHMgdGhlIGxpbWl0ICglZCBkaWdpdHMpIGZvciBpbnRlZ2VyIHN0cmluZyBjb252ZXJzaW9uOyB1c2Ugc3lzLnNldF9pbnRfbWF4X3N0cl9kaWdpdHMoKSB0byBpbmNyZWFzZSB0aGUgbGltaXQAbWF4c3BsaXQAcnNwbGl0AGZvcm1hdHRlcl9maWVsZF9uYW1lX3NwbGl0AHhkaWdpdABpc2RpZ2l0AGJpdHNfcGVyX2RpZ2l0AHNpemVvZl9kaWdpdABub24tYXNjaWkgZ3JvdXBlZCBkaWdpdABub3QgYSBkaWdpdABzaXplIGluIGJ5dGVzIG9mIHRoZSBDIHR5cGUgdXNlZCB0byByZXByZXNlbnQgYSBkaWdpdABfZ2l0AGZpbmRmaXQAdGltZWl0AHN5c19hdWRpdABPT1VpfE9PT086d2Fybl9leHBsaWNpdABwdXRfbm93YWl0AGdldF9ub3dhaXQAc2lnd2FpdABzaWd0aW1lZHdhaXQAcHRocmVhZF9jb25kX3RpbWVkd2FpdABjcl9hd2FpdABvcGVyYXRvciBjb19hd2FpdABhZ19hd2FpdABwdGhyZWFkX2NvbmRfd2FpdABmaWVsZCAndmFsdWUnIGlzIHJlcXVpcmVkIGZvciBBd2FpdAByZXF1aXJlZCBmaWVsZCAidmFsdWUiIG1pc3NpbmcgZnJvbSBBd2FpdABNZW1vcnkgY2Fubm90IGJlIHJlc2l6ZWQgYmVjYXVzZSB0aGlzIG9iamVjdCBkb2Vzbid0IG93biBpdABjb3B5cmlnaHQAaW5zb3J0X3JpZ2h0AGJpc2VjdF9yaWdodABkYXlsaWdodABlaWdodABndABpcnNoaWZ0AGlsc2hpZnQAUlNoaWZ0AExTaGlmdABwb3BsZWZ0AGV4dGVuZGxlZnQAYXBwZW5kbGVmdABpbnNvcnRfbGVmdABiaXNlY3RfbGVmdABPdXQgb2YgbWVtb3J5IGFuZCBQeUV4Y19NZW1vcnlFcnJvciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0AGlzc3VwZXJzZXQAZnJvemVuc2V0AHV0Y29mZnNldABlbmRfY29sX29mZnNldABub2RlX29mZnNldABlbmRfb2Zmc2V0AGludmFsaWQgc2xvdCBvZmZzZXQAZXhjZXB0aW9uIG9mZnNldABleGNlcHRpb24gZW5kIG9mZnNldABpbnZhbGlkIEdNVCBvZmZzZXQAZ2xQb2x5Z29uT2Zmc2V0AF93ZWFrcmVmc2V0AHJlc2V0AGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0AGlzc3Vic2V0AG1vZHVsZV9zZWFyY2hfcGF0aHNfc2V0AHBvcCBmcm9tIGFuIGVtcHR5IHNldABDYW5ub3QgdXNlICVSIGFzIGEga2V5IGZvciBhIEphdmFzY3JpcHQgc2V0ACUuMjAwcyBhdHRyaWJ1dGUgbm90IHNldABpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQATlVMTCBvYmplY3QgaW4gbWFyc2hhbCBkYXRhIGZvciBzZXQAbmVlZCB0byBlc2NhcGUsIGJ1dCBubyBlc2NhcGVjaGFyIHNldABlcnJvciByZXR1cm4gd2l0aG91dCBleGNlcHRpb24gc2V0ACVzIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXhjZXB0aW9uIHNldAAlUiByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQAbGluZXRlcm1pbmF0b3IgbXVzdCBiZSBzZXQAQUZfREVDbmV0AF9zb2NrZXQAX3NvY2tldC5zb2NrZXQAcmlnaHQtY3VybHktYnJhY2tldABsZWZ0LWN1cmx5LWJyYWNrZXQAcmlnaHQtc3F1YXJlLWJyYWNrZXQAbGVmdC1zcXVhcmUtYnJhY2tldABxdWlldABpbnZhbGlkIHBhdHRlcm4gdGFyZ2V0AEFubkFzc2lnbiB3aXRoIHNpbXBsZSBub24tTmFtZSB0YXJnZXQAY2Fubm90IHVzZSAnXycgYXMgYSB0YXJnZXQAZmdldABPfE86Z2V0AFdlYWtTZXQAcmVxdWlyZWQgZmllbGQgImVsdHMiIG1pc3NpbmcgZnJvbSBTZXQAUHlJbnRlcnByZXRlclN0YXRlX0dldABQeVRocmVhZFN0YXRlX0dldAAgaW4gSnNNZXRob2RfQ29uc3RydWN0AGtleXMtPmRrX3JlZmNudCA9PSAxIHx8IGtleXMgPT0gJmVtcHR5X2tleXNfc3RydWN0AF9zdHJ1Y3QuU3RydWN0AHxuOnByb2R1Y3QAaXRlcnRvb2xzLnByb2R1Y3QAb2N0AHB1bmN0ACByZXN0cmljdABtdWx0aXBsZSBiYXNlcyBoYXZlIGluc3RhbmNlIGxheS1vdXQgY29uZmxpY3QAd2hpbGUgc2V0dGluZyB6ZGljdABjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdABncm91cGRpY3QAeHhzdWJ0eXBlLnNwYW1kaWN0AGpzcHJveHlfdHlwZWRpY3QAaW50ZXJuYWwgZXJyb3IgaW4gY29udGV4dF9zZXRzdGF0dXNfZGljdABpbnRlcm5hbCBlcnJvciBpbiBjb250ZXh0X3NldHRyYXBzX2RpY3QAaW52YWxpZCBzaWduYWwgZGljdABhcmd1bWVudCBtdXN0IGJlIGEgc2lnbmFsIGRpY3QAaW52YWxpZCBvdmVycmlkZSBkaWN0AG9wdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBkaWN0AGlmIHlvdSBnaXZlIG9ubHkgb25lIGFyZ3VtZW50IHRvIG1ha2V0cmFucyBpdCBtdXN0IGJlIGEgZGljdABnbG9iYWxzIG11c3QgYmUgYSBkaWN0AFNpZ25hbERpY3QAU3RnRGljdABQeUltcG9ydF9HZXRNb2R1bGVEaWN0AGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0AHJlcXVpcmVkIGZpZWxkICJrZXlzIiBtaXNzaW5nIGZyb20gRGljdAByZXF1aXJlZCBmaWVsZCAidmFsdWVzIiBtaXNzaW5nIGZyb20gRGljdABfYmlzZWN0AGVuY29kaW5nIHNwZWNpZmllZCBpbiBYTUwgZGVjbGFyYXRpb24gaXMgaW5jb3JyZWN0AGluc3BlY3QAc29ja2V0LmNvbm5lY3QAY29sbGVjdABzZWxlY3QAZ2V0X2RpYWxlY3QAdW5yZWdpc3Rlcl9kaWFsZWN0AHVua25vd24gZGlhbGVjdABfY3N2LkRpYWxlY3QAc3ViamVjdAB0ZWVkYXRhb2JqZWN0AGl0ZXJ0b29scy5fdGVlX2RhdGFvYmplY3QAY3R5cGVzLmVycm9yX29iamVjdABnZXRfZnJvemVuX29iamVjdABvYmpjX29iamVjdABjYW5ub3QgaGFzaCB3cml0YWJsZSBtZW1vcnl2aWV3IG9iamVjdABvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0AGNhbm5vdCBleGl0IGNvbnRleHQ6IHRocmVhZCBzdGF0ZSByZWZlcmVuY2VzIGEgZGlmZmVyZW50IGNvbnRleHQgb2JqZWN0AF9fa3dkZWZhdWx0c19fIG11c3QgYmUgc2V0IHRvIGEgZGljdCBvYmplY3QAX19hbm5vdGF0aW9uc19fIG11c3QgYmUgc2V0IHRvIGEgZGljdCBvYmplY3QAYXJndW1lbnQgZm9yICdzJyBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0AGFyZ3VtZW50IGZvciAncCcgbXVzdCBiZSBhIGJ5dGVzIG9iamVjdABjYW5ub3QgdW5wYWNrIG5vbi1pdGVyYWJsZSAlLjIwMHMgb2JqZWN0AGNhbid0IGFwcGx5IHRoaXMgJXMgdG8gJXMgb2JqZWN0ACVzKCkgYXJnIDEgbXVzdCBiZSBhICVzIG9iamVjdABOVUxMIG9iamVjdCBpbiBtYXJzaGFsIGRhdGEgZm9yIG9iamVjdABub3QgYSBjdHlwZXMgdHlwZSBvciBvYmplY3QAb3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBQaWNrbGVCdWZmZXIgb2JqZWN0AGludmFsaWQgZXhjZXB0aW9uIG9iamVjdABDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGRlY29tcHJlc3Npb24gb2JqZWN0AHdoaWxlIGNvcHlpbmcgZGVjb21wcmVzc2lvbiBvYmplY3QAd2hpbGUgY3JlYXRpbmcgZGVjb21wcmVzc2lvbiBvYmplY3QAQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBjb21wcmVzc2lvbiBvYmplY3QAd2hpbGUgY29weWluZyBjb21wcmVzc2lvbiBvYmplY3QAd2hpbGUgY3JlYXRpbmcgY29tcHJlc3Npb24gb2JqZWN0ACB3aGlsZSBjYWxsaW5nIGEgUHl0aG9uIG9iamVjdABBIHByb3h5IHRvIG1ha2UgYSBKYXZhc2NyaXB0IG9iamVjdCBiZWhhdmUgbGlrZSBhIFB5dGhvbiBvYmplY3QAIHdoaWxlIHBpY2tsaW5nIGFuIG9iamVjdAAgd2hpbGUgZ2V0dGluZyB0aGUgc3RyIG9mIGFuIG9iamVjdAAgd2hpbGUgZ2V0dGluZyB0aGUgcmVwciBvZiBhbiBvYmplY3QAdW5pbml0aWFsaXplZCBUYXNrIG9iamVjdAB0aHJvdygpIHRoaXJkIGFyZ3VtZW50IG11c3QgYmUgYSB0cmFjZWJhY2sgb2JqZWN0AF9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QAX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0AGV4ZWN2ZTogZW52aXJvbm1lbnQgbXVzdCBiZSBhIG1hcHBpbmcgb2JqZWN0AHRoZSBiYXNlIG9iamVjdAB1bmluaXRpYWxpemVkIEZ1dHVyZSBvYmplY3QARXhwZWN0ZWQgYSB0eXBlIG9iamVjdABQeUNhcHN1bGVfU2V0Q29udGV4dCBjYWxsZWQgd2l0aCBpbnZhbGlkIFB5Q2Fwc3VsZSBvYmplY3QAUHlDYXBzdWxlX0dldENvbnRleHQgY2FsbGVkIHdpdGggaW52YWxpZCBQeUNhcHN1bGUgb2JqZWN0AFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yIGNhbGxlZCB3aXRoIGludmFsaWQgUHlDYXBzdWxlIG9iamVjdABQeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvciBjYWxsZWQgd2l0aCBpbnZhbGlkIFB5Q2Fwc3VsZSBvYmplY3QAUHlDYXBzdWxlX1NldFBvaW50ZXIgY2FsbGVkIHdpdGggaW52YWxpZCBQeUNhcHN1bGUgb2JqZWN0AFB5Q2Fwc3VsZV9HZXRQb2ludGVyIGNhbGxlZCB3aXRoIGludmFsaWQgUHlDYXBzdWxlIG9iamVjdABQeUNhcHN1bGVfU2V0TmFtZSBjYWxsZWQgd2l0aCBpbnZhbGlkIFB5Q2Fwc3VsZSBvYmplY3QAUHlDYXBzdWxlX0dldE5hbWUgY2FsbGVkIHdpdGggaW52YWxpZCBQeUNhcHN1bGUgb2JqZWN0AGZhaWxlZCB0byBjcmVhdGUgYSBtb2R1bGUgb2JqZWN0AF9fZGVmYXVsdHNfXyBtdXN0IGJlIHNldCB0byBhIHR1cGxlIG9iamVjdAB1bm1hcnNoYWxsYWJsZSBvYmplY3QAc2lnbmFsIGhhbmRsZXIgbXVzdCBiZSBzaWduYWwuU0lHX0lHTiwgc2lnbmFsLlNJR19ERkwsIG9yIGEgY2FsbGFibGUgb2JqZWN0AHJlYWQtb25seSBieXRlcy1saWtlIG9iamVjdAByZWFkLXdyaXRlIGJ5dGVzLWxpa2Ugb2JqZWN0AGV4cGVjdGVkIGEgd3JpdGFibGUgYnl0ZXMtbGlrZSBvYmplY3QAY2Fubm90IHVzZSBhIHN0cmluZyBwYXR0ZXJuIG9uIGEgYnl0ZXMtbGlrZSBvYmplY3QAY2Fubm90IHVzZSBhIGJ5dGVzIHBhdHRlcm4gb24gYSBzdHJpbmctbGlrZSBvYmplY3QAPGRlc2NyaXB0b3I+Ll9fb2JqY2xhc3NfXy5fX3F1YWxuYW1lX18gaXMgbm90IGEgdW5pY29kZSBvYmplY3QAPG1ldGhvZD4uX19jbGFzc19fLl9fcXVhbG5hbWVfXyBpcyBub3QgYSB1bmljb2RlIG9iamVjdAA8ZGVzY3JpcHRvcj4uX19uYW1lX18gaXMgbm90IGEgdW5pY29kZSBvYmplY3QAY2Fubm90IHVzZSBhIGNsb3N1cmUgd2l0aCB0aGlzIGNvZGUgb2JqZWN0AGZyb3plbiBvYmplY3QgJVIgaXMgbm90IGEgY29kZSBvYmplY3QAY2xvc3VyZSBjYW4gb25seSBiZSB1c2VkIHdoZW4gc291cmNlIGlzIGEgY29kZSBvYmplY3QAX19jb2RlX18gbXVzdCBiZSBzZXQgdG8gYSBjb2RlIG9iamVjdABhcmcgbXVzdCBiZSBhIHNlcXVlbmNlIG9iamVjdAB1bmluaXRpYWxpemVkIGNsYXNzbWV0aG9kIG9iamVjdAB1bmluaXRpYWxpemVkIHN0YXRpY21ldGhvZCBvYmplY3QAbGVuKCkgb2YgdW5zaXplZCBvYmplY3QASS9PIG9wZXJhdGlvbiBvbiB1bmluaXRpYWxpemVkIG9iamVjdABpbml0IGZ1bmN0aW9uIG9mICVzIHJldHVybmVkIHVuaW5pdGlhbGl6ZWQgb2JqZWN0AHRoZSB3cmFwcGVkIG9iamVjdAAgd2hpbGUgZW5jb2RpbmcgYSBKU09OIG9iamVjdABXZWFrcmVmIHByb3h5IHJlZmVyZW5jZWQgYSBub24taXRlcmF0b3IgJyUuMjAwcycgb2JqZWN0AGNhbm5vdCBwaWNrbGUgJyUuMjAwcycgb2JqZWN0AGRlc2NyaXB0b3IgJyVWJyBmb3IgJyUuMTAwcycgb2JqZWN0cyBkb2Vzbid0IGFwcGx5IHRvIGEgJyUuMTAwcycgb2JqZWN0AF9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBhIGNsYXNzLCBub3QgJyVzJyBvYmplY3QAZGVzY3JpcHRvciBmb3IgaW5kZXggJyV6ZCcgZm9yIHR1cGxlIHN1YmNsYXNzZXMgZG9lc24ndCBhcHBseSB0byAnJXMnIG9iamVjdABjYW5ub3QgY3JlYXRlIHdlYWsgcmVmZXJlbmNlIHRvICclcycgb2JqZWN0AGZyZWUgUHlMaXN0T2JqZWN0AGZyZWUgUHlEaWN0T2JqZWN0AGZyZWUgUHlGbG9hdE9iamVjdABfY3R5cGVzLkNUaHVua09iamVjdABDQXJnT2JqZWN0AGZyZWUgJWQtc2l6ZWQgUHlUdXBsZU9iamVjdABzdGFja19lZmZlY3QAZGVjaW1hbC5JbmV4YWN0AHRvX2ludGVncmFsX2V4YWN0AGludGVybmFsIGVycm9yIGluIFB5RGVjX1RvSW50ZWdyYWxFeGFjdABzdWJ0cmFjdABPY3QAbHN0YXQAZnN0YXQAcG9zaXhfc3RhdABweWV4cGF0AHJlcXVlc3RlZCBmZWF0dXJlIHJlcXVpcmVzIFhNTF9EVEQgc3VwcG9ydCBpbiBFeHBhdABjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0AHBhcnNlX2Zsb2F0AGFyZ3VtZW50IG11c3QgYmUgaW50IG9yIGZsb2F0AGludCB0b28gbGFyZ2UgdG8gY29udmVydCB0byBmbG9hdABjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gZmxvYXQAY2Fubm90IGNvbnZlcnQgc2lnbmFsaW5nIE5hTiB0byBmbG9hdABEQkxfTUFYIC0tIG1heGltdW0gcmVwcmVzZW50YWJsZSBmaW5pdGUgZmxvYXQAREJMX0VQU0lMT04gLS0gRGlmZmVyZW5jZSBiZXR3ZWVuIDEgYW5kIHRoZSBuZXh0IHJlcHJlc2VudGFibGUgZmxvYXQAZjthcnJheSBpdGVtIG11c3QgYmUgZmxvYXQAZDthcnJheSBpdGVtIG11c3QgYmUgZmxvYXQAREJMX01JTiAtLSBNaW5pbXVtIHBvc2l0aXZlIG5vcm1hbGl6ZWQgZmxvYXQAREJMX01JTl8xMF9FWFAgLS0gbWluaW11bSBpbnQgZSBzdWNoIHRoYXQgMTAqKmUgaXMgYSBub3JtYWxpemVkIGZsb2F0AERCTF9NSU5fRVhQIC0tIG1pbmltdW0gaW50IGUgc3VjaCB0aGF0IHJhZGl4KiooZS0xKSBpcyBhIG5vcm1hbGl6ZWQgZmxvYXQAcmVxdWlyZWQgYXJndW1lbnQgaXMgbm90IGEgZmxvYXQAaGV4YWRlY2ltYWwgdmFsdWUgdG9vIGxhcmdlIHRvIHJlcHJlc2VudCBhcyBhIGZsb2F0AGludGVnZXIgZGl2aXNpb24gcmVzdWx0IHRvbyBsYXJnZSBmb3IgYSBmbG9hdABEQkxfRElHIC0tIG1heGltdW0gbnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIHRoYXQgY2FuIGJlIGZhaXRoZnVsbHkgcmVwcmVzZW50ZWQgaW4gYSBmbG9hdABfRmxvYXQAZnJvbWlzb2Zvcm1hdAB8czppc29mb3JtYXQAfENzOmlzb2Zvcm1hdABpbnNhbmUgZmxvYXRfZm9ybWF0IG9yIGRvdWJsZV9mb3JtYXQAYmFkIGNoYXIgaW4gc3RydWN0IGZvcm1hdABCYWQgZGljdCBmb3JtYXQAZXhjZXNzICcpJyBpbiBnZXRhcmdzIGZvcm1hdABtaXNzaW5nICcpJyBpbiBnZXRhcmdzIGZvcm1hdABpbnQgdG9vIGxhcmdlIHRvIGZvcm1hdAB1bm1hdGNoZWQgcGFyZW4gaW4gZm9ybWF0AFVubWF0Y2hlZCBwYXJlbiBpbiBmb3JtYXQAZmxvYXQgdG9vIGxhcmdlIHRvIHBhY2sgd2l0aCBmIGZvcm1hdABpbmNvbXBsZXRlIGZvcm1hdABmbG9hdCB0b28gbGFyZ2UgdG8gcGFjayB3aXRoIGUgZm9ybWF0AGZsb2F0IHRvbyBsYXJnZSB0byBwYWNrIHdpdGggZCBmb3JtYXQAc3RyaW5nIC0+IHRpbWUgZnJvbSBhIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQAZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQAYXN5bmNoYXQAT3xuOnJlcGVhdABpdGVydG9vbHMucmVwZWF0AGludmFsaWQgYml0IGxlbmd0aCByZXBlYXQAaWNvbmNhdABzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0AGN0eXBlcy53c3RyaW5nX2F0AGN0eXBlcy5zdHJpbmdfYXQAU2F0AGNvbW1lcmNpYWwtYXQASW52YWxpZCBjb250cm9sIGNoYXJhY3RlciBhdABVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0AHN0ZDo6bnVsbHB0cl90AHdjaGFyX3QAaHVnZSBpbnRlZ2VyOiBudW1iZXIgb2YgYml0cyBvdmVyZmxvd3MgYSBQeV9zc2l6ZV90AFB5dGhvbiBpbnQgdG9vIGxhcmdlIHRvIGNvbnZlcnQgdG8gQyBzc2l6ZV90AGNhbid0IGNvbnZlcnQgbmVnYXRpdmUgdmFsdWUgdG8gc2l6ZV90AGludCBoYXMgdG9vIG1hbnkgYml0cyB0byBleHByZXNzIGluIGEgcGxhdGZvcm0gc2l6ZV90AHJlcXVlc3QgZG9lcyBub3QgZml0IGluIGEgc2l6ZV90AFB5dGhvbiBpbnQgdG9vIGxhcmdlIHRvIGNvbnZlcnQgdG8gQyBzaXplX3QAdGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90AHRpbWVzdGFtcCB0b28gbGFyZ2UgdG8gY29udmVydCB0byBDIF9QeVRpbWVfdABjaGFyOF90AGNoYXIxNl90AGNoYXIzMl90AFx0AFV0AFR0AFN0AEx0AEd0AGNvbG9yc3lzAHNraXBrZXlzAGZyb21rZXlzAG9ubHlfa2V5cwBzb3J0X2tleXMAb2RpY3Rfa2V5cwBvYmplY3Rfa2V5cwBELmtleXMoKSAtPiBhIHNldC1saWtlIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIEQncyBrZXlzAGFsd2F5cwB0b3VuaWNvZGUoKSBtYXkgb25seSBiZSBjYWxsZWQgb24gdW5pY29kZSB0eXBlIGFycmF5cwBmcm9tdW5pY29kZSgpIG1heSBvbmx5IGJlIGNhbGxlZCBvbiB1bmljb2RlIHR5cGUgYXJyYXlzAFNsaWNlIGFzc2lnbm1lbnQgaXNuJ3QgaW1wbGVtZW50ZWQgZm9yIHR5cGVkIGFycmF5cwBTbGljZSBzdWJzY3JpcHRpbmcgaXNuJ3QgaW1wbGVtZW50ZWQgZm9yIHR5cGVkIGFycmF5cwBnbEdlblZlcnRleEFycmF5cwBnbERlbGV0ZVZlcnRleEFycmF5cwBnbERyYXdBcnJheXMAZGF5cwB3cml0ZXJvd3MAbmFtZSBvZiB0aGUgYWxnb3JpdGhtIGZvciBoYXNoaW5nIG9mIHN0ciwgYnl0ZXMgYW5kIG1lbW9yeXZpZXdzAG1lbW9yeXZpZXc6IGNhc3RzIGFyZSByZXN0cmljdGVkIHRvIEMtY29udGlndW91cyB2aWV3cwBzaV9zdGF0dXMAX1B5RXJyX1NldEZyb21QeVN0YXR1cwAlcygpIGV4cGVjdHMgYW4gZXJyb3IgUHlTdGF0dXMAZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzAGZfY29udGlndW91cwBjX2NvbnRpZ3VvdXMAbWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgaXMgbm90IEMtY29udGlndW91cwBtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3QgY29udGlndW91cwBtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3QgRm9ydHJhbiBjb250aWd1b3VzAHVuZGVybHlpbmcgYnVmZmVyIGlzIG5vdCBDIGNvbnRpZ3VvdXMAbmV4dF9taW51cwBoeXBoZW4tbWludXMAYmFzZSBpcyBub3QgaW52ZXJ0aWJsZSBmb3IgdGhlIGdpdmVuIG1vZHVsdXMAbmV4dF9wbHVzAE11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBjcmVhdGUvcmVhZC93cml0ZS9hcHBlbmQgbW9kZSBhbmQgYXQgbW9zdCBvbmUgcGx1cwByZXZlcnNlLXNvbGlkdXMAaXNvNjQ2X3VzAGNvX2NvbnN0cwB3ZWFrbHktcmVmZXJlbmNlZCBvYmplY3Qgbm8gbG9uZ2VyIGV4aXN0cwBfb3ZlcnJpZGVfZnJvemVuX21vZHVsZXNfZm9yX3Rlc3RzAGZpeF9pbXBvcnRzAEJhc2UgY2xhc3MgZm9yIHdhcm5pbmdzIGFib3V0IHByb2JhYmxlIG1pc3Rha2VzIGluIG1vZHVsZSBpbXBvcnRzAG1vZHVsZSAlczogUHlNb2R1bGVfQ3JlYXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIG1fc2xvdHMAUHlTdGF0ZV9SZW1vdmVNb2R1bGUgY2FsbGVkIG9uIG1vZHVsZSB3aXRoIHNsb3RzAFB5U3RhdGVfQWRkTW9kdWxlIGNhbGxlZCBvbiBtb2R1bGUgd2l0aCBzbG90cwBtb2R1bGUgJXMgaGFzIG11bHRpcGxlIGNyZWF0ZSBzbG90cwB1dGltZTogJ25zJyBtdXN0IGJlIGEgdHVwbGUgb2YgdHdvIGludHMAX3NldGV2ZW50cwBhc3luY2lvLmV2ZW50cwBjZWxsX2NvbnRlbnRzAEEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoYXQga2luZCBvZiBkYXRhIHRoaXMgZWxlbWVudCByZXByZXNlbnRzAGdjLmdldF9yZWZlcmVudHMAQ29udGV4dCgpIGRvZXMgbm90IGFjY2VwdCBhbnkgYXJndW1lbnRzACUuMjAwcyVzIHRha2VzIG5vIGFyZ3VtZW50cwBFbGxpcHNpc1R5cGUgdGFrZXMgbm8gYXJndW1lbnRzAE5vbmVUeXBlIHRha2VzIG5vIGFyZ3VtZW50cwBOb3RJbXBsZW1lbnRlZFR5cGUgdGFrZXMgbm8gYXJndW1lbnRzAGNvcHkoKSB0YWtlcyBubyBhcmd1bWVudHMAZ2V0X25vd2FpdCgpIHRha2VzIG5vIGFyZ3VtZW50cwByZXNldCgpIHRha2VzIG5vIGFyZ3VtZW50cwBnZXRzdGF0cygpIHRha2VzIG5vIGFyZ3VtZW50cwAlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMAaXNfc3ltbGluaygpIHRha2VzIG5vIGFyZ3VtZW50cwBtYXRjaCgpIHRha2VzIG5vIGFyZ3VtZW50cwBzZWFyY2goKSB0YWtlcyBubyBhcmd1bWVudHMAX19jb3B5X18oKSB0YWtlcyBubyBhcmd1bWVudHMAX19yZWR1Y2VfXygpIHRha2VzIG5vIGFyZ3VtZW50cwBzdXBlcigpOiBubyBhcmd1bWVudHMAbGVuZ3RoIG9mIGt3b25seWFyZ3MgaXMgbm90IHRoZSBzYW1lIGFzIGt3X2RlZmF1bHRzIG9uIGFyZ3VtZW50cwBtb3JlIHBvc2l0aW9uYWwgZGVmYXVsdHMgdGhhbiBhcmdzIG9uIGFyZ3VtZW50cwByZXF1aXJlZCBmaWVsZCAia3dfZGVmYXVsdHMiIG1pc3NpbmcgZnJvbSBhcmd1bWVudHMAcmVxdWlyZWQgZmllbGQgImRlZmF1bHRzIiBtaXNzaW5nIGZyb20gYXJndW1lbnRzAHJlcXVpcmVkIGZpZWxkICJrd29ubHlhcmdzIiBtaXNzaW5nIGZyb20gYXJndW1lbnRzAHJlcXVpcmVkIGZpZWxkICJwb3Nvbmx5YXJncyIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cwByZXF1aXJlZCBmaWVsZCAiYXJncyIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cwAlLjIwMHMlcyB0YWtlcyBubyBwb3NpdGlvbmFsIGFyZ3VtZW50cwBmdW5jdGlvbiB0YWtlcyBubyBwb3NpdGlvbmFsIGFyZ3VtZW50cwAlLjIwMHMoKSB0YWtlcyBubyBwb3NpdGlvbmFsIGFyZ3VtZW50cwBDYW5ub3Qgc3BlY2lmeSBhIGRlZmF1bHQgZm9yICVzKCkgd2l0aCBtdWx0aXBsZSBwb3NpdGlvbmFsIGFyZ3VtZW50cwBFeGNlcHRpb24gaWdub3JlZCBvbiBidWlsZGluZyBzeXMudW5yYWlzYWJsZWhvb2sgYXJndW1lbnRzAF9fYnVpbGRfY2xhc3NfXzogbm90IGVub3VnaCBhcmd1bWVudHMAJXMuX19uZXdfXygpOiBub3QgZW5vdWdoIGFyZ3VtZW50cwByZXF1aXJlcyB0dXBsZSBvZiBhcmd1bWVudHMAY2Fubm90IGRlY29kZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzAGZ1bmN0aW9uIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzACVVIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzACUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzAHdyYXBwZXIgJXMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cwB0eXBlLl9faW5pdF9fKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMAaW52YWxpZCBhcmd1bWVudHMASW52YWxpZCBhcmd1bWVudHMAdHlwZSgpIHRha2VzIDEgb3IgMyBhcmd1bWVudHMAdHlwZS5fX2luaXRfXygpIHRha2VzIDEgb3IgMyBhcmd1bWVudHMAbWF0aC5sb2cgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cwBpbnNlcnRfY29tbWVudHMAX2NvdW50X2VsZW1lbnRzAGNhbm5vdCBkZWxldGUgYXJyYXkgZWxlbWVudHMAdHVwbGUgcmV0dXJuZWQgYnkgX19yZWR1Y2VfXyBtdXN0IGNvbnRhaW4gMiB0aHJvdWdoIDYgZWxlbWVudHMAZ2xEcmF3RWxlbWVudHMAc3JlX2NvbnN0YW50cwB0b28gbWFueSBjb25zdGFudHMAZXJyb3IgZ2V0dGluZyBnZXRwYXRoIHJlc3VsdHMAcmVhZGluZyBnZXRwYXRoIHJlc3VsdHMAa3dfZGVmYXVsdHMAZWx0cwBtYXhkaWdpdHMAbmRpZ2l0cwBjb25maWdfaW5pdF9pbnRfbWF4X3N0cl9kaWdpdHMAc2V0X2ludF9tYXhfc3RyX2RpZ2l0cwBnZXRfaW50X21heF9zdHJfZGlnaXRzAG1pbmltdW0gcG9zaXRpdmUgdmFsdWUgZm9yIGludF9tYXhfc3RyX2RpZ2l0cwAtWCBpbnRfbWF4X3N0cl9kaWdpdHMAZGVmYXVsdF9tYXhfc3RyX2RpZ2l0cwBpbnRfZnJhY19kaWdpdHMAY29lZmZpY2llbnQgbXVzdCBiZSBhIHR1cGxlIG9mIGRpZ2l0cwBEQkxfTUFOVF9ESUcgLS0gbWFudGlzc2EgZGlnaXRzAHdiaXRzAGdldHJhbmRiaXRzAF9jYXBhY2l0eV9iaXRzAGhhc2hfYml0cwBfcmF0ZV9iaXRzAHNlZWRfYml0cwBwcm90ZWN0aW9uIGJpdHMAc2l6ZSBvZiBhIGRpZ2l0IGluIGJpdHMAd2lkdGggb2YgdGhlIHR5cGUgdXNlZCBmb3IgaGFzaGluZywgaW4gYml0cwBtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciByZXF1aXJlcyBzdWJvZmZzZXRzAHNlY3JldHMAZXZlbnQgaGFuZGxpbmcgb25seSBzdXBwb3J0ZWQgZm9yIEVsZW1lbnRUcmVlLlRyZWVCdWlsZGVyIHRhcmdldHMAbGlzdF9kaWFsZWN0cwBnYy5nZXRfb2JqZWN0cwB0b28gbWFueSBvYmplY3RzAENhbm5vdCBjcmVhdGUgJyUuMjAwcyBvYmplY3RzAGNhbm5vdCBwaWNrbGUgJS4yMDBzIG9iamVjdHMAeSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBieXRlcy1saWtlIG9iamVjdHMAYm90aCBkZXN0aW5hdGlvbiBhbmQgc291cmNlIG11c3QgYmUgYnl0ZXMtbGlrZSBvYmplY3RzAHRoaXMgX19kaWN0X18gZGVzY3JpcHRvciBkb2VzIG5vdCBzdXBwb3J0ICclLjIwMHMnIG9iamVjdHMAX1B5RXhjX0luaXRHbG9iYWxPYmplY3RzAG1ldGF0eXBlIGZvciB0aGUgQXJyYXkgT2JqZWN0cwBtZXRhdHlwZSBmb3IgdGhlIFBvaW50ZXIgT2JqZWN0cwBtZXRhdHlwZSBmb3IgdGhlIFB5Q1NpbXBsZVR5cGUgT2JqZWN0cwBtZXRhdHlwZSBmb3IgdGhlIENEYXRhIE9iamVjdHMAZ2V0c3RhdHMAcHN0YXRzAF9kZWJ1Z21hbGxvY3N0YXRzAGdldF9zdGF0cwBnZXRfc3BlY2lhbGl6YXRpb25fc3RhdHMAbWFsbG9jX3N0YXRzAG1lbW9yeXZpZXc6IGNhbm5vdCBjYXN0IGJldHdlZW4gdHdvIG5vbi1ieXRlIGZvcm1hdHMAVHlwZWRBcnJheSBhbmQgbWVtb3J5YnVmZmVyIGhhdmUgaW5jb21wYXRpYmxlIGZvcm1hdHMAc3RyaW5nIC0+IGRhdGV0aW1lIGZyb20gYSBzdHJpbmcgaW4gbW9zdCBJU08gODYwMSBmb3JtYXRzAFBZX1NTSVpFX1RfQ0xFQU4gbWFjcm8gbXVzdCBiZSBkZWZpbmVkIGZvciAnIycgZm9ybWF0cwBzc3MAY3Jvc3MAZGVjb21wcmVzcwB6bGliLkRlY29tcHJlc3MAaXRlcnRvb2xzLmNvbXByZXNzAHpsaWIuQ29tcHJlc3MAaXBhZGRyZXNzAGZyb21fYWRkcmVzcwBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIG9yIGludGVnZXIgZnVuY3Rpb24gYWRkcmVzcwB3aWxkY2FyZCByZXNvbHZlZCB0byBtdWx0aXBsZSBhZGRyZXNzAF9wb3NpeHN1YnByb2Nlc3MAX2Jvb3RzdWJwcm9jZXNzAHJlYWwgdXNlciBJRCBvZiBzZW5kaW5nIHByb2Nlc3MAUHlfRXhpdFN0YXR1c0V4Y2VwdGlvbigpIG11c3Qgbm90IGJlIGNhbGxlZCBvbiBzdWNjZXNzAGJhZF92YXJpYW50X2FjY2VzcwBiYWRfb3B0aW9uYWxfYWNjZXNzAGludGVnZXIgdGltZSBvZiBsYXN0IGFjY2VzcwBOVUxMIHBvaW50ZXIgYWNjZXNzAGdldHBhc3MAc3Vycm9nYXRlcGFzcwBpc3N1YmNsYXNzAF9QeUVycl9TZXRPYmplY3Q6IGV4Y2VwdGlvbiAlUiBpcyBub3QgYSBCYXNlRXhjZXB0aW9uIHN1YmNsYXNzAF9QeUVycl9DaGFpbkV4Y2VwdGlvbnM6IGV4Y2VwdGlvbiAlUiBpcyBub3QgYSBCYXNlRXhjZXB0aW9uIHN1YmNsYXNzAG51bWJlcl9jbGFzcwBwaWNrbGUuZmluZF9jbGFzcwBQeUVycl9OZXdFeGNlcHRpb246IG5hbWUgbXVzdCBiZSBtb2R1bGUuY2xhc3MAYWJzdHJhY3QgY2xhc3MAdGhlIG9iamVjdCdzIGNsYXNzAGF0dGVtcHRpbmcgdG8gY3JlYXRlIFB5Q01ldGhvZCB3aXRoIGEgTUVUSF9NRVRIT0QgZmxhZyBidXQgbm8gY2xhc3MAYXJnc1swXSBmcm9tIF9fbmV3b2JqX18gYXJncyBoYXMgdGhlIHdyb25nIGNsYXNzAFVuaW9uIGJhc2UgY2xhc3MAZHVwbGljYXRlIGJhc2UgY2xhc3MAU3RydWN0dXJlIGJhc2UgY2xhc3MAJVIgaXMgbm90IGEgZ2VuZXJpYyBjbGFzcwBleGNlcHRpb25zIG11c3QgYmUgY2xhc3NlcyBkZXJpdmluZyBCYXNlRXhjZXB0aW9uIG9yIGluc3RhbmNlcyBvZiBzdWNoIGEgY2xhc3MAaXNzdWJjbGFzcygpIGFyZyAxIG11c3QgYmUgYSBjbGFzcwBmaWVsZCAnY2xzJyBpcyByZXF1aXJlZCBmb3IgTWF0Y2hDbGFzcwByZXF1aXJlZCBmaWVsZCAia3dkX2F0dHJzIiBtaXNzaW5nIGZyb20gTWF0Y2hDbGFzcwByZXF1aXJlZCBmaWVsZCAia3dkX3BhdHRlcm5zIiBtaXNzaW5nIGZyb20gTWF0Y2hDbGFzcwByZXF1aXJlZCBmaWVsZCAicGF0dGVybnMiIG1pc3NpbmcgZnJvbSBNYXRjaENsYXNzAHJlcXVpcmVkIGZpZWxkICJjbHMiIG1pc3NpbmcgZnJvbSBNYXRjaENsYXNzAF9Kc1Byb3h5TWV0YUNsYXNzAFBhc3MAaG91cnMAa3dkX2F0dHJzAHNlbGVjdG9ycwBjb21wcmVoZW5zaW9uIHdpdGggbm8gZ2VuZXJhdG9ycwBDb21wYXJlIHdpdGggbm8gY29tcGFyYXRvcnMAZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycwBzdHJpY3RfZXJyb3JzAHN0ZGlvX2Vycm9ycwBmaWxlc3lzdGVtX2Vycm9ycwBpZ25vcmVfZXJyb3JzAGJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzAHhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycwBuYW1lcmVwbGFjZV9lcnJvcnMAcHlleHBhdC5lcnJvcnMAaG93IHRvIHRyZWF0IGVycm9ycwBhIGZ1bmN0aW9uIHRvIGNoZWNrIGZvciBlcnJvcnMAZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIgaW4gZXJyb3JzAGNhbm5vdCBkZWNvZGUgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzAF9QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycwBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycwAnX2ZpZWxkc18nIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBwYWlycwAnX2ZpZWxkc18nIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiAobmFtZSwgQyB0eXBlKSBwYWlycwB0b28gbWFueSBpbml0aWFsaXplcnMAX2luc3RhbGxfZXh0ZXJuYWxfaW1wb3J0ZXJzAG1ldGF0eXBlIGZvciBDIGZ1bmN0aW9uIHBvaW50ZXJzAGZpbHRlcnMAX3h4c3ViaW50ZXJwcmV0ZXJzAHByZWV4ZWNfZm4gbm90IHN1cHBvcnRlZCB3aXRoaW4gc3ViaW50ZXJwcmV0ZXJzAHJlbWFpbmluZyBzdWJpbnRlcnByZXRlcnMAc3VicHJvY2VzcyBub3Qgc3VwcG9ydGVkIGZvciBpc29sYXRlZCBzdWJpbnRlcnByZXRlcnMAdGhyZWFkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGlzb2xhdGVkIHN1YmludGVycHJldGVycwBmb3JrIG5vdCBzdXBwb3J0ZWQgZm9yIGlzb2xhdGVkIHN1YmludGVycHJldGVycwBPJiRwOmNoYW5uZWxfbGlzdF9pbnRlcnByZXRlcnMAdGVzdC5zdXBwb3J0LmludGVycHJldGVycwBpbnZfY2RmIHVuZGVmaW5lZCBmb3IgdGhlc2UgcGFyYW1ldGVycwBDYW5ub3QgY29weSAlcyBjaGFyYWN0ZXJzIGludG8gYSBzdHJpbmcgb2YgJXMgY2hhcmFjdGVycwBoZWlnaHQgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzAHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgaW4gY2hhcmFjdGVycwB0eXBlIG5hbWUgbXVzdCBub3QgY29udGFpbiBudWxsIGNoYXJhY3RlcnMAYnl0ZXMgY2FuIG9ubHkgY29udGFpbiBBU0NJSSBsaXRlcmFsIGNoYXJhY3RlcnMAQ2Fubm90IHdyaXRlICV6aSBjaGFyYWN0ZXJzIGF0ICV6aSBpbiBhIHN0cmluZyBvZiAlemkgY2hhcmFjdGVycwBvdXQgb2Ygcm9vbSB0byBwdXNoIGNoYXJhY3RlcnMAc3RyaW5nIGFyZ3VtZW50IHNob3VsZCBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVycwBnYy5nZXRfcmVmZXJyZXJzAGluc3RhbGxfc2lnbmFsX2hhbmRsZXJzAFRyeSBoYXMgb3JlbHNlIGJ1dCBubyBleGNlcHQgaGFuZGxlcnMAVHJ5U3RhciBoYXMgb3JlbHNlIGJ1dCBubyBleGNlcHQgaGFuZGxlcnMAbWFya2VycwBfX3Nsb3RzX18gbXVzdCBiZSBpZGVudGlmaWVycwBjb25maWd1cmF0aW9uIG5hbWVzIG11c3QgYmUgc3RyaW5ncyBvciBpbnRlZ2VycwBrZXlzIGluIHRyYW5zbGF0ZSB0YWJsZSBtdXN0IGJlIHN0cmluZ3Mgb3IgaW50ZWdlcnMAbGVhZGluZyB6ZXJvcyBpbiBkZWNpbWFsIGludGVnZXIgbGl0ZXJhbHMgYXJlIG5vdCBwZXJtaXR0ZWQ7IHVzZSBhbiAwbyBwcmVmaXggZm9yIG9jdGFsIGludGVnZXJzAHBvdygpIDNyZCBhcmd1bWVudCBub3QgYWxsb3dlZCB1bmxlc3MgYWxsIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMAbWVtbyBrZXkgbXVzdCBiZSBpbnRlZ2VycwBhcnJheSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMAZWxlbWVudCBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMAbW1hcCBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMAbWVtb3J5dmlldy5jYXN0KCk6IGVsZW1lbnRzIG9mIHNoYXBlIG11c3QgYmUgaW50ZWdlcnMAZ2xHZW5SZW5kZXJidWZmZXJzAGdsRGVsZXRlUmVuZGVyYnVmZmVycwBnbEdlbkZyYW1lYnVmZmVycwBnbERlbGV0ZUZyYW1lYnVmZmVycwBjYW5ub3QgcmVzaXplIGFuIGFycmF5IHRoYXQgaXMgZXhwb3J0aW5nIGJ1ZmZlcnMAdyo7cmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIHNpbmdsZS1zZWdtZW50IHJlYWQtd3JpdGUgYnVmZmVycwBXcmFwcGVyIGZvciBwb3RlbnRpYWxseSBvdXQtb2YtYmFuZCBidWZmZXJzAG5vdCBlbm91Z2ggb3V0LW9mLWJhbmQgYnVmZmVycwBkZWFsbG9jYXRlZCBieXRlYXJyYXkgb2JqZWN0IGhhcyBleHBvcnRlZCBidWZmZXJzAGRlYWxsb2NhdGVkIEJ5dGVzSU8gb2JqZWN0IGhhcyBleHBvcnRlZCBidWZmZXJzAGdsRHJhd0J1ZmZlcnMAZ2xHZW5CdWZmZXJzAGdsRGVsZXRlQnVmZmVycwBnbEdldEF0dGFjaGVkU2hhZGVycwBudW1iZXJzAF9jb250ZXh0dmFycwBjb19jZWxsdmFycwBjb19mcmVldmFycwBvcHRpb25hbF92YXJzAFRva2VucyBjYW4gb25seSBiZSBjcmVhdGVkIGJ5IENvbnRleHRWYXJzAGdyb3VwcwBtYXBwaW5nIHBhdHRlcm4ga2V5cyBtYXkgb25seSBtYXRjaCBsaXRlcmFscyBhbmQgYXR0cmlidXRlIGxvb2t1cHMAcGF0dGVybnMgbWF5IG9ubHkgbWF0Y2ggbGl0ZXJhbHMgYW5kIGF0dHJpYnV0ZSBsb29rdXBzAG9wcwBtYXJzaGFsLmR1bXBzAGNsZWFyX3RyYXBzAGVuZHBvcwB0ZXJtaW9zAGFjb3MAcmV0dXJucwBrd2RfcGF0dGVybnMATWF0Y2hNYXBwaW5nIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Yga2V5cyBhcyBwYXR0ZXJucwBNYXRjaENsYXNzIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Yga2V5d29yZCBhdHRyaWJ1dGVzIGFzIHBhdHRlcm5zAGNhbid0IGNhcHR1cmUgbmFtZSAnXycgaW4gcGF0dGVybnMAcG9zaXRpb25hbCBwYXR0ZXJucyBmb2xsb3cga2V5d29yZCBwYXR0ZXJucwBNYXRjaE9yIHJlcXVpcmVzIGF0IGxlYXN0IDIgcGF0dGVybnMAaTpodG9ucwBfeG9wdGlvbnMAd2Fybm9wdGlvbnMAc3lzLl9jdXJyZW50X2V4Y2VwdGlvbnMAYXN5bmNpby5leGNlcHRpb25zAENvbW1vbiBiYXNlIGNsYXNzIGZvciBhbGwgZXhjZXB0aW9ucwBuZXN0ZWQgZXhjZXB0aW9ucwBfUHlUaHJlYWRfQ3VycmVudEV4Y2VwdGlvbnMAY29fcG9zaXRpb25zAF9oYXZlX2Z1bmN0aW9ucwBfY29sbGVjdGlvbnMAZnJhY3Rpb25zAGl0ZXJ0b29scy5wZXJtdXRhdGlvbnMAbm9uLWRpY3QgYW5ub3RhdGlvbnMAbm8gbG9jYWxzIGZvdW5kIHdoZW4gc2V0dGluZyB1cCBhbm5vdGF0aW9ucwBGTFRfUk9VTkRTIC0tIHJvdW5kaW5nIG1vZGUgdXNlZCBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zAGl0ZXJ0b29scy5jb21iaW5hdGlvbnMAcGVybWlzc2lvbnMAYm90aCBwb2ludHMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBkaW1lbnNpb25zAHNPbm5zAHN5I25ucwBjb2x1bW5zAF9zaXRlYnVpbHRpbnMAcHljb3JlX2luaXRfYnVpbHRpbnMAZl9idWlsdGlucwBmYWlsZWQgdG8gYWRkIGV4Y2VwdGlvbnMgdG8gYnVpbHRpbnMAUHlvZGlkZSBDIGJ1aWx0aW5zAGNvbnRhaW5zAG1ha2V0cmFucwByYWRpYW5zAHN0YXJ0X25zAHBlcmZfY291bnRlcl9ucwBjbG9ja19zZXR0aW1lX25zAGNsb2NrX2dldHRpbWVfbnMAc3RfbXRpbWVfbnMAc3RfY3RpbWVfbnMAc3RfYXRpbWVfbnMAcHJvY2Vzc190aW1lX25zAGVuZF9ucwBtb25vdG9uaWNfbnMAc3RhcnQtbnMAZW5kLW5zAHRoZSBudW1lcmF0b3Igb2YgYSByYXRpb25hbCBudW1iZXIgaW4gbG93ZXN0IHRlcm1zAHRoZSBkZW5vbWluYXRvciBvZiBhIHJhdGlvbmFsIG51bWJlciBpbiBsb3dlc3QgdGVybXMAb2RpY3RfaXRlbXMARC5pdGVtcygpIC0+IGEgc2V0LWxpa2Ugb2JqZWN0IHByb3ZpZGluZyBhIHZpZXcgb24gRCdzIGl0ZW1zAGluaXRfc3lzX3N0cmVhbXMAY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcwBpdGVydG9vbHMAcGlja2xldG9vbHMAX2Z1bmN0b29scwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBzdWJjYWxscwB0dXBsZSBvZiBhcmd1bWVudHMgdG8gZnV0dXJlIHBhcnRpYWwgY2FsbHMAZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyB0byBmdXR1cmUgcGFydGlhbCBjYWxscwBmdW5jdGlvbiBvYmplY3QgdG8gdXNlIGluIGZ1dHVyZSBwYXJ0aWFsIGNhbGxzAGRldGFpbHMgb2YgdGhlIGNhbGxzAGRpc3R1dGlscwBOb24tVVRGLTggY29kZSBzdGFydGluZyB3aXRoICdceCUuMngnIGluIGZpbGUgJVUgb24gbGluZSAlaSwgYnV0IG5vIGVuY29kaW5nIGRlY2xhcmVkOyBzZWUgaHR0cHM6Ly9wZXBzLnB5dGhvbi5vcmcvcGVwLTAyNjMvIGZvciBkZXRhaWxzAGdsUmVhZFBpeGVscwBjbHMAY2FwaXRhbHMAdW5pY29kZV9saXRlcmFscwBjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscwB2YWxpZF9zaWduYWxzAGNhbid0IGluaXRpYWxpemUgc2lnbmFscwBtYXRoLmZzdW0gcGFydGlhbHMAY29fbmxvY2FscwBmX2xvY2FscwBmX2dsb2JhbHMAbW9kdWxlX2dsb2JhbHMAJ19fbmFtZV9fJyBub3QgaW4gZ2xvYmFscwBfY3VycmVudF90YXNrcwBfYWxsX3Rhc2tzAGFzeW5jaW8uYmFzZV90YXNrcwBzZXRfYXN5bmNnZW5faG9va3MAZ2V0X2FzeW5jZ2VuX2hvb2tzAHVuYWJsZSB0byBnZXQgc3lzLnBhdGhfaG9va3MAY3B5dGhvbi5fUHlTeXNfQ2xlYXJBdWRpdEhvb2tzAGZvbGxvd19zeW1saW5rcwBudW1iZXIgb2YgaGFyZCBsaW5rcwB3ZWVrcwBjYW4ndCBkbyBub256ZXJvIGN1ci1yZWxhdGl2ZSBzZWVrcwBDYW4ndCBkbyBub256ZXJvIGN1ci1yZWxhdGl2ZSBzZWVrcwBjYW4ndCBkbyBub256ZXJvIGVuZC1yZWxhdGl2ZSBzZWVrcwBnZXRhbGxvY2F0ZWRibG9ja3MAc3RfYmxvY2tzAGZfYmxvY2tzAHRvbyBtYW55IHN0YXRpY2FsbHkgbmVzdGVkIGJsb2NrcwBGYWlsZWQgdG8gcmVpbml0aWFsaXplIHJ1bnRpbWUgbG9ja3MAaW5jb21wYXRpYmxlIHN0YWNrcwBfbmNhbGxiYWNrcwBfY2FsbGJhY2tzAE98JGlwT09POnRvX2pzAEludGVybmFsIGVycm9yIG9jY3VycmVkIGluIHB5dGhvbjJqcwBlbGxpcHNpcwBFbGxpcHNpcwByaWdodC1wYXJlbnRoZXNpcwBsZWZ0LXBhcmVudGhlc2lzAGYtc3RyaW5nOiB0b28gbWFueSBuZXN0ZWQgcGFyZW50aGVzaXMAaW5zZXJ0X3BpcwBuaXMAc2hpZnRfamlzAGNhcHR1cmVfdGhpcwBkaXMAVmFyaWFibGUgYW5ub3RhdGlvbnMgc3ludGF4IGlzAFZhcmlhYmxlIGFubm90YXRpb24gc3ludGF4IGlzAFRoZSAnQCcgb3BlcmF0b3IgaXMAUGF0dGVybiBtYXRjaGluZyBpcwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAG1vZHVsZV9zZWFyY2hfcGF0aHMAZmFpbGVkIHRvIGpvaW4gcGF0aHMAaTpudG9ocwBrd29ubHlhcmdzAHBvc29ubHlhcmdzAG5vbi1kaWN0IGtleXdvcmQgb25seSBkZWZhdWx0IGFyZ3MAbm9uLXR1cGxlIGRlZmF1bHQgYXJncwBKc01ldGhvZF9Db252ZXJ0QXJncwBfdGhyZWFkLl9FeGNlcHRIb29rQXJncwBfdGhyZWFkLmV4Y2VwdGhvb2sgYXJndW1lbnQgdHlwZSBtdXN0IGJlIEV4Y2VwdEhvb2tBcmdzAHN5cy51bnJhaXNhYmxlaG9vayBhcmd1bWVudCB0eXBlIG11c3QgYmUgVW5yYWlzYWJsZUhvb2tBcmdzAF9pbnZlcnRlZF9yZWdpc3RyeVslbGRdIGlzbid0IGEgMi10dXBsZSBvZiBzdHJpbmdzACVVKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzAHBlcnNpc3RlbnQgSURzIGluIHByb3RvY29sIDAgbXVzdCBiZSBBU0NJSSBzdHJpbmdzAHBhdGhjb25maWdfd2FybmluZ3MAY2FuJ3QgaW5pdGlhbGl6ZSB3YXJuaW5ncwBlbmNvZGluZ3MAX19waGVsbG9fXy5oYW0uZWdncwByZWdzAHNldGRsb3BlbmZsYWdzAGdldGRsb3BlbmZsYWdzAGFiaWZsYWdzAEludGVybmFsIGVycm9yIG9jY3VycmVkIGluIEpzUHJveHlfY29tcHV0ZV90eXBlZmxhZ3MAanNfZmxhZ3MAY2xlYXJfZmxhZ3MAY29fZmxhZ3MAX2pzX3R5cGVfZmxhZ3MAc3lzLmZsYWdzACVzKCkgbWV0aG9kOiBiYWQgY2FsbCBmbGFncwBjb21waWxlKCk6IHVucmVjb2duaXNlZCBmbGFncwBmc3RhdHZmcwBpZnMAZ2V0d2Vha3JlZnMAZHVtcF9yZWZzAGFyZ2RlZnMAX1B5VHlwZXNfSW5pdFNsb3REZWZzAGV4dGVuc2lvbl9zdWZmaXhlcwBuYW1lc3BhY2VfcHJlZml4ZXMAb2RpY3RfdmFsdWVzAG9iamVjdF92YWx1ZXMARGljdCBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGtleXMgYXMgdmFsdWVzAEQudmFsdWVzKCkgLT4gYW4gb2JqZWN0IHByb3ZpZGluZyBhIHZpZXcgb24gRCdzIHZhbHVlcwBlcnJvciBldmFsdWF0aW5nIGluaXRpYWwgdmFsdWVzAGZhY3RvcmlhbCgpIG5vdCBkZWZpbmVkIGZvciBuZWdhdGl2ZSB2YWx1ZXMAQm9vbE9wIHdpdGggbGVzcyB0aGFuIDIgdmFsdWVzAHRvYnl0ZXMAbmJ5dGVzAGZyb21ieXRlcwB0b19ieXRlcwBmcm9tX2J5dGVzAGluaXRpYWxfYnl0ZXMAdHJ5IHNlbmRpbmcgYXMgYnl0ZXMAc3RyaW5nIG9yIGJ5dGVzAGNhbm5vdCBjb252ZXJ0ICclLjIwMHMnIG9iamVjdCB0byBieXRlcwByZWFkKCkgZGlkbid0IHJldHVybiBieXRlcwByZWFkYWxsKCkgc2hvdWxkIHJldHVybiBieXRlcwByZWFkKCkgc2hvdWxkIHJldHVybiBieXRlcwBzdHJpbmcgdG9vIGxvbmcgZm9yIFB5dGhvbiBieXRlcwBzdHJ1Y3Qgc2l6ZSBpbiBieXRlcwB0b3RhbCBzaXplLCBpbiBieXRlcwBlbmNvZGVkIHN0cmluZyB3aXRob3V0IG51bGwgYnl0ZXMAc291cmNlIGNvZGUgc3RyaW5nIGNhbm5vdCBjb250YWluIG51bGwgYnl0ZXMAcmVhZCgpIGRpZG4ndCByZXR1cm4gZW5vdWdoIGJ5dGVzACUuMjAwcyBhdHRyaWJ1dGUgbXVzdCBiZSBieXRlcwB1bnBhY2sgcmVxdWlyZXMgYSBidWZmZXIgb2YgJXpkIGJ5dGVzAEZSQU1FIGxlbmd0aCBleGNlZWRzIHN5c3RlbSdzIG1heGltdW0gb2YgJXpkIGJ5dGVzAEJJTkJZVEVTIGV4Y2VlZHMgc3lzdGVtJ3MgbWF4aW11bSBzaXplIG9mICV6ZCBieXRlcwBCSU5TVFJJTkcgZXhjZWVkcyBzeXN0ZW0ncyBtYXhpbXVtIHNpemUgb2YgJXpkIGJ5dGVzAEJJTlVOSUNPREUgZXhjZWVkcyBzeXN0ZW0ncyBtYXhpbXVtIHNpemUgb2YgJXpkIGJ5dGVzAEJZVEVBUlJBWTggZXhjZWVkcyBzeXN0ZW0ncyBtYXhpbXVtIHNpemUgb2YgJXpkIGJ5dGVzAGl0ZXJhdGl2ZSB1bnBhY2tpbmcgcmVxdWlyZXMgYSBidWZmZXIgb2YgYSBtdWx0aXBsZSBvZiAlemQgYnl0ZXMAc2l6ZSBub3QgdmFsaWQ6ICV6ZCBieXRlcwBidWZmZXIgdG9vIHNtYWxsIGZvciByZXF1ZXN0ZWQgYnl0ZXMAbWF4aW11bSBrZXkgbGVuZ3RoIGlzICVkIGJ5dGVzAG1heGltdW0gc2FsdCBsZW5ndGggaXMgJWQgYnl0ZXMAbWF4aW11bSBwZXJzb24gbGVuZ3RoIGlzICVkIGJ5dGVzAGRpZ2VzdF9zaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAlZCBieXRlcwBtaW51dGVzAG9yZGVyZWRfYXR0cmlidXRlcwBzcGVjaWZpZWRfYXR0cmlidXRlcwBBIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXMAZmlsZSBtdXN0IGhhdmUgJ3JlYWQnIGFuZCAncmVhZGxpbmUnIGF0dHJpYnV0ZXMARXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcwBzb2NrYWRkciByZXNvbHZlZCB0byBtdWx0aXBsZSBhZGRyZXNzZXMAX19jbGFzc19fIGFzc2lnbm1lbnQgb25seSBzdXBwb3J0ZWQgZm9yIG11dGFibGUgdHlwZXMgb3IgTW9kdWxlVHlwZSBzdWJjbGFzc2VzAGRhdGFjbGFzc2VzAENhbiBvbmx5IHJlZ2lzdGVyIGNsYXNzZXMAX2N1cnNlcwBhbiBpbnQgdmFyaWFibGUgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMAdHJhaWxpbmcgY29tbWEgbm90IGFsbG93ZWQgd2l0aG91dCBzdXJyb3VuZGluZyBwYXJlbnRoZXNlcwB0b28gbWFueSBuZXN0ZWQgcGFyZW50aGVzZXMAY2FzZXMAbWV0YWNsYXNzIGNvbmZsaWN0OiB0aGUgbWV0YWNsYXNzIG9mIGEgZGVyaXZlZCBjbGFzcyBtdXN0IGJlIGEgKG5vbi1zdHJpY3QpIHN1YmNsYXNzIG9mIHRoZSBtZXRhY2xhc3NlcyBvZiBhbGwgaXRzIGJhc2VzAENhbm5vdCBjcmVhdGUgYSBjb25zaXN0ZW50IG1ldGhvZCByZXNvbHV0aW9uCm9yZGVyIChNUk8pIGZvciBiYXNlcwBnbEdlblRleHR1cmVzAGdsRGVsZXRlVGV4dHVyZXMAYXN5bmNpby5iYXNlX2Z1dHVyZXMAbWVtb3J5dmlldyBhc3NpZ25tZW50OiBsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCBzdHJ1Y3R1cmVzAG9sZCBzdHlsZSBnZXRhcmdzIGZvcm1hdCB1c2VzIG5ldyBmZWF0dXJlcwBpOmNsb2NrX2dldHJlcwB0eXBlX2lnbm9yZXMAcGFyYW1mbGFncyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIGFyZ3R5cGVzAGNhbm5vdCBjb25zdHJ1Y3QgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzczogbm8gYXJndHlwZXMAbWltZXR5cGVzAF9jdHlwZXMAcHljb3JlX2luaXRfdHlwZXMAZW5jb2RlciAlcyByZXR1cm5lZCBieXRlYXJyYXkgaW5zdGVhZCBvZiBieXRlczsgdXNlIGNvZGVjcy5lbmNvZGUoKSB0byBlbmNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzACclLjQwMHMnIGVuY29kZXIgcmV0dXJuZWQgJyUuNDAwcycgaW5zdGVhZCBvZiAnYnl0ZXMnOyB1c2UgY29kZWNzLmVuY29kZSgpIHRvIGVuY29kZSB0byBhcmJpdHJhcnkgdHlwZXMAJyUuNDAwcycgZW5jb2RlciByZXR1cm5lZCAnJS40MDBzJyBpbnN0ZWFkIG9mICdzdHInOyB1c2UgY29kZWNzLmVuY29kZSgpIHRvIGVuY29kZSB0byBhcmJpdHJhcnkgdHlwZXMAJyUuNDAwcycgZGVjb2RlciByZXR1cm5lZCAnJS40MDBzJyBpbnN0ZWFkIG9mICdzdHInOyB1c2UgY29kZWNzLmRlY29kZSgpIHRvIGRlY29kZSB0byBhcmJpdHJhcnkgdHlwZXMAY2FuJ3QgaW5pdCBjb250ZXh0IHR5cGVzAHNwZWNpZnkgdGhlIGFyZ3VtZW50IHR5cGVzAGV4cGVjdGVkIGEgZnVuY3Rpb24sIGV4Y2VwdGlvbiB0eXBlIG9yIHR1cGxlIG9mIGV4Y2VwdGlvbiB0eXBlcwBleHBlY3RlZCBvbmUgb3IgbW9yZSBleGNlcHRpb24gdHlwZXMAX2FyZ3R5cGVzXyBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgdHlwZXMAQ2FuJ3QgaW5pdGlhbGl6ZSB0eXBlcwBDYW4ndCBpbml0aWFsaXplIHVuaWNvZGUgdHlwZXMAYmFzZXMgbXVzdCBiZSB0eXBlcwBfUHlGbG9hdF9Jbml0VHlwZXMAX1B5Qnl0ZXNfSW5pdFR5cGVzAF9QeVR5cGVzX0luaXRUeXBlcwBfUHlFcnJfSW5pdFR5cGVzAF9QeUxvbmdfSW5pdFR5cGVzAF9QeVR1cGxlX0luaXRUeXBlcwBfUHlVbmljb2RlX0luaXRUeXBlcwB0aGlzIGNvbXBpbGVyIGRvZXMgbm90IGhhbmRsZSBGdW5jdGlvblR5cGVzAG5lc3RlZF9zY29wZXMAcGlwZXMAYXN5bmNpby5jb3JvdXRpbmVzAG5ld2xpbmVzAHNwbGl0bGluZXMAd3JpdGVsaW5lcwByZWFkbGluZXMAY29fbGluZXMAZl90cmFjZV9saW5lcwBjYW4ndCBzdWJ0cmFjdCBvZmZzZXQtbmFpdmUgYW5kIG9mZnNldC1hd2FyZSBkYXRldGltZXMAY2FuJ3QgY29tcGFyZSBvZmZzZXQtbmFpdmUgYW5kIG9mZnNldC1hd2FyZSBkYXRldGltZXMAY2FuJ3QgY29tcGFyZSBvZmZzZXQtbmFpdmUgYW5kIG9mZnNldC1hd2FyZSB0aW1lcwBzeXMuX2N1cnJlbnRfZnJhbWVzAG5vdCBhIHdob2xlIG51bWJlciBvZiBmcmFtZXMALVggdHJhY2VtYWxsb2M9TkZSQU1FOiBpbnZhbGlkIG51bWJlciBvZiBmcmFtZXMAUFlUSE9OVFJBQ0VNQUxMT0M6IGludmFsaWQgbnVtYmVyIG9mIGZyYW1lcwBjb192YXJuYW1lcwBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMAY29uZnN0cl9uYW1lcwBjb19uYW1lcwBzeXNjb25mX25hbWVzAHBhdGhjb25mX25hbWVzAGJ1aWx0aW5fbW9kdWxlX25hbWVzAF9mcm96ZW5fbW9kdWxlX25hbWVzAHN0ZGxpYl9tb2R1bGVfbmFtZXMAYWx0ZXJuYXRpdmUgcGF0dGVybnMgYmluZCBkaWZmZXJlbnQgbmFtZXMAcHJlZml4IG11c3Qgbm90IGJlIGJvdW5kIHRvIG9uZSBvZiB0aGUgcmVzZXJ2ZWQgbmFtZXNwYWNlIG5hbWVzAHVzZV9mcm96ZW5fbW9kdWxlcwB1bmFibGUgdG8gZ2V0IHN5cy5tb2R1bGVzAExvYWRlZCBtb2R1bGUgJVIgbm90IGZvdW5kIGluIHN5cy5tb2R1bGVzAGZhaWxlZCB0byBpbml0aWFsaXplIGRlZXAtZnJvemVuIG1vZHVsZXMAY29kZWMgc2VhcmNoIGZ1bmN0aW9ucyBtdXN0IHJldHVybiA0LXR1cGxlcwBpdGVtcyBtdXN0IHJldHVybiAyLXR1cGxlcwBkaWN0IGl0ZW1zIGl0ZXJhdG9yIG11c3QgcmV0dXJuIDItdHVwbGVzACdtZW1vJyB2YWx1ZXMgbXVzdCBiZSAyLWl0ZW0gdHVwbGVzAHBhcmFtZmxhZ3MgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIChpbnQgWyxzdHJpbmcgWyx2YWx1ZV1dKSB0dXBsZXMAZl9maWxlcwBjb2RlIG9iamVjdCBwYXNzZWQgdG8gZXZhbCgpIG1heSBub3QgY29udGFpbiBmcmVlIHZhcmlhYmxlcwBjcmVhdGVfcHlwcm94aWVzAGRlc3Ryb3lfcHJveGllcwBvYmplY3RfZW50cmllcwBjcmVhdGVfZGlyZWN0b3JpZXMAX3NldF9mYWN0b3JpZXMAZ2xHZW5RdWVyaWVzAGdsRGVsZXRlUXVlcmllcwBfcmVzZXRfY2FjaGVzAGNvZGVfZGVidWdfcmFuZ2VzAG1lc3NhZ2VzAGRlZ3JlZXMAaW5jbHVkZXMAZl90cmFjZV9vcGNvZGVzAHR5cGVjb2RlcwBtZW1vcnl2aWV3OiBjYW5ub3QgY2FzdCB2aWV3IHdpdGggemVyb3MgaW4gc2hhcGUgb3Igc3RyaWRlcwBwX2NzX3ByZWNlZGVzAG5fY3NfcHJlY2VkZXMAYXJndW1lbnRzIDEtMyBtdXN0IGJlIHNlcXVlbmNlcwBjYW5ub3QgcGlja2xlICclLjEwMHMnIGluc3RhbmNlcwBjYW5ub3QgY3JlYXRlICclcycgaW5zdGFuY2VzAC9ldGMvc2VydmljZXMAaW5kaWNlcwBfZ2V0X3RyYWNlcwBjbGVhcl90cmFjZXMAYnJhY2VzAG5hbWVzcGFjZXMAa2V5d29yZHMAdW5leHBlY3RlZCAlcyBqdW1waW5nIGJhY2t3YXJkcwByb3VuZHMAbWFkdmlzZSBzdGFydCBvdXQgb2YgYm91bmRzAGVuZCBpcyBvdXQgb2YgYm91bmRzAHBvc2l0aW9uICV6ZCBmcm9tIGVycm9yIGhhbmRsZXIgb3V0IG9mIGJvdW5kcwBtaWNyb3NlY29uZHMAdGltZSBvZiBsYXN0IGFjY2VzcyBpbiBuYW5vc2Vjb25kcwB0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIGluIG5hbm9zZWNvbmRzAHRpbWUgb2YgbGFzdCBjaGFuZ2UgaW4gbmFub3NlY29uZHMAbWlsbGlzZWNvbmRzAHRvdGFsX3NlY29uZHMAb2Zmc2V0IGZyb20gVVRDIGluIHNlY29uZHMAa2VlcGVuZHMAQ29tcGFyZSBoYXMgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIGNvbXBhcmF0b3JzIGFuZCBvcGVyYW5kcwBfZmllbGRzAEZvcm1hdCBzdHJpbmcgY29udGFpbnMgcG9zaXRpb25hbCBmaWVsZHMAZGF0ZSwgdGltZSAtPiBkYXRldGltZSB3aXRoIHNhbWUgZGF0ZSBhbmQgdGltZSBmaWVsZHMAIGluIGNvbGxlY3RfZXhjZXB0aW9uX2dyb3VwX2xlYWZfaWRzAGVmZmVjdGl2ZV9pZHMAbWFyc2hhbC5sb2FkcwBwdGhyZWFkcwBhbGxfdGhyZWFkcwBjb3VsZCBub3QgYWNxdWlyZSBsb2NrIGZvciAlcyBhdCBpbnRlcnByZXRlciBzaHV0ZG93biwgcG9zc2libHkgZHVlIHRvIGRhZW1vbiB0aHJlYWRzAHJlbWFpbmluZyB0aHJlYWRzAF9QeUV2YWxfUmVJbml0VGhyZWFkcwBfUHlSdW50aW1lU3RhdGVfUmVJbml0VGhyZWFkcwBjaGVja19oYXNoX2Jhc2VkX3B5Y3MAYmlnNWhrc2NzAF9weW9kaWRlLl9jb3JlX2RvY3MAX3J1bl9leGl0ZnVuY3MAX3N0YXRpc3RpY3MAX2NvZGVjcwAnJS40MDBzJyBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyB1c2UgJXMgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MAcHRocmVhZC1zdHVicwBxdW90ZXRhYnMAZXhwYW5kdGFicwBpc2FicwBmYWJzAGNvcHlfYWJzAHdhcwBmaWVsZCAnbmFtZScgaXMgcmVxdWlyZWQgZm9yIGFsaWFzAHJlcXVpcmVkIGZpZWxkICJjb2xfb2Zmc2V0IiBtaXNzaW5nIGZyb20gYWxpYXMAcmVxdWlyZWQgZmllbGQgImxpbmVubyIgbWlzc2luZyBmcm9tIGFsaWFzAHJlcXVpcmVkIGZpZWxkICJuYW1lIiBtaXNzaW5nIGZyb20gYWxpYXMAdHlwZXMuR2VuZXJpY0FsaWFzAGJpYXMAaGFzAFpzAFRzAFBzAE9zAE5zAElzAENzAE1hdGNoQXMAJXMlcyVzLCAlLjIwcywgJS45cwAgJS4yNTZzAC4vJS0uMjU1cwBfYmxha2UyLmJsYWtlMnMAZW5jb2RlcigpIG11c3QgcmV0dXJuIGEgc3RyaW5nLCBub3QgJS44MHMAZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgbm90ICUuODBzACUuODBzICglLjgwcykgJS44MHMAJS4yMDBzKCkgJS4yMDBzIG11c3QgYmUgJS41MHMsIG5vdCAlLjUwcwBhcmd1bWVudCBtdXN0IGJlIHN0ciwgbm90ICUuNTBzAG11c3QgYmUgcmVhbCBudW1iZXIsIG5vdCAlLjUwcwBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJS41MHMAVGV4dElPV3JhcHBlcigpIGFyZ3VtZW50ICdlcnJvcnMnIG11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAlLjUwcwBtdXN0IGJlICVkLWl0ZW0gc2VxdWVuY2UsIG5vdCAlLjUwcwBjYWxsYWJsZSBmaW5hbGl6ZXIgZXhwZWN0ZWQsIGdvdCAlLjUwcwBjYWxsYWJsZSBmaXJzdGl0ZXIgZXhwZWN0ZWQsIGdvdCAlLjUwcwAlcygpOiBBRl9JTkVUIGFkZHJlc3MgbXVzdCBiZSB0dXBsZSwgbm90ICUuNTAwcwBJbiBzdHJ1Y3RzZXFfcmVwcigpLCBtZW1iZXIgJXpkIG5hbWUgaXMgTlVMTCBmb3IgdHlwZSAlLjUwMHMAY2hhcmFjdGVyIG1hcHBpbmcgbXVzdCByZXR1cm4gaW50ZWdlciwgYnl0ZXMgb3IgTm9uZSwgbm90ICUuNDAwcwBleHBlY3RlZCAlcyBub2RlLCBnb3QgJS40MDBzAGNhbid0IGludGVybiAlLjQwMHMAZGVjb2RpbmcgZXJyb3I7IHVua25vd24gZXJyb3IgaGFuZGxpbmcgY29kZTogJS40MDBzACUuMjBzXyUuMjAwcwAlLjIwMHMuX19kaWN0X18gbXVzdCBiZSBhIGRpY3Rpb25hcnksIG5vdCAlLjIwMHMAJ21lbW8nIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIFVucGlja2xlck1lbW9Qcm94eSBvYmplY3Qgb3IgZGljdCwgbm90ICUuMjAwcwAnbWVtbycgYXR0cmlidXRlIG11c3QgYmUgYSBQaWNrbGVyTWVtb1Byb3h5IG9iamVjdCBvciBkaWN0LCBub3QgJS4yMDBzAGF0dHJpYiBtdXN0IGJlIGRpY3QsIG5vdCAlLjIwMHMAJXMga3dhcmdzIGFyZ3VtZW50IG11c3QgYmUgYSBkaWN0LCBub3QgJS4yMDBzAHRoaXJkIGl0ZW0gZnJvbSBORVdPQkpfRVggYXJndW1lbnQgdHVwbGUgbXVzdCBiZSBhIGRpY3QsIG5vdCAlLjIwMHMAY29weXJlZy5fZXh0ZW5zaW9uX3JlZ2lzdHJ5IHNob3VsZCBiZSBhIGRpY3QsIG5vdCAlLjIwMHMAY29weXJlZy5faW52ZXJ0ZWRfcmVnaXN0cnkgc2hvdWxkIGJlIGEgZGljdCwgbm90ICUuMjAwcwBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlIHNob3VsZCBiZSBhIGRpY3QsIG5vdCAlLjIwMHMAY29weXJlZy5fZXh0ZW5zaW9uX2NhY2hlIHNob3VsZCBiZSBhIGRpY3QsIG5vdCAlLjIwMHMAX2NvbXBhdF9waWNrbGUuUkVWRVJTRV9JTVBPUlRfTUFQUElORyBzaG91bGQgYmUgYSBkaWN0LCBub3QgJS4yMDBzAF9jb21wYXRfcGlja2xlLklNUE9SVF9NQVBQSU5HIHNob3VsZCBiZSBhIGRpY3QsIG5vdCAlLjIwMHMAX2NvbXBhdF9waWNrbGUuUkVWRVJTRV9OQU1FX01BUFBJTkcgc2hvdWxkIGJlIGEgZGljdCwgbm90ICUuMjAwcwBfY29tcGF0X3BpY2tsZS5OQU1FX01BUFBJTkcgc2hvdWxkIGJlIGEgZGljdCwgbm90ICUuMjAwcwBTdHJ1Y3QoKSBhcmd1bWVudCAxIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBub3QgJS4yMDBzAGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSB0eXBlIG9iamVjdCwgbm90ICUuMjAwcwBleHBlY3RlZCBzdHIsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIG9iamVjdCwgbm90ICUuMjAwcwBmaXJzdCBpdGVtIGZyb20gTkVXT0JKX0VYIGFyZ3VtZW50IHR1cGxlIG11c3QgYmUgYSBjbGFzcywgbm90ICUuMjAwcwBfY29tcGF0X3BpY2tsZS5SRVZFUlNFX0lNUE9SVF9NQVBQSU5HIHZhbHVlcyBzaG91bGQgYmUgc3RyaW5ncywgbm90ICUuMjAwcwBfY29tcGF0X3BpY2tsZS5JTVBPUlRfTUFQUElORyB2YWx1ZXMgc2hvdWxkIGJlIHN0cmluZ3MsIG5vdCAlLjIwMHMAZXhwZWN0ZWQgJS4yMDBzLl9fZnNwYXRoX18oKSB0byByZXR1cm4gc3RyIG9yIGJ5dGVzLCBub3QgJS4yMDBzAGZvdXJ0aCBhcmd1bWVudCBzaG91bGQgYmUgYnl0ZXMsIG5vdCAlLjIwMHMAX2NvbXBhdF9waWNrbGUuUkVWRVJTRV9OQU1FX01BUFBJTkcgdmFsdWVzIHNob3VsZCBiZSAyLXR1cGxlcywgbm90ICUuMjAwcwBfY29tcGF0X3BpY2tsZS5OQU1FX01BUFBJTkcgdmFsdWVzIHNob3VsZCBiZSAyLXR1cGxlcywgbm90ICUuMjAwcwBieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcwBsaXN0IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMAYnl0ZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzLCBub3QgJS4yMDBzAHR1cGxlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMAcmFuZ2UgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcwAlcyVzJXMgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzAF9fZm9ybWF0X18gbXVzdCByZXR1cm4gYSBzdHIsIG5vdCAlLjIwMHMAc2Vjb25kIGl0ZW0gb2Ygc3RhdGUgbXVzdCBiZSBhbiBpbnRlZ2VyLCBub3QgJS4yMDBzAHVpZCBzaG91bGQgYmUgaW50ZWdlciwgbm90ICUuMjAwcwBnaWQgc2hvdWxkIGJlIGludGVnZXIsIG5vdCAlLjIwMHMAIiVzIiBtdXN0IGJlIHN0cmluZywgbm90ICUuMjAwcwBzZXAgbXVzdCBiZSBOb25lIG9yIGEgc3RyaW5nLCBub3QgJS4yMDBzAGVuZCBtdXN0IGJlIE5vbmUgb3IgYSBzdHJpbmcsIG5vdCAlLjIwMHMAdW5pY29kZWRhdGEubm9ybWFsaXplKCkgbXVzdCByZXR1cm4gYSBzdHJpbmcsIG5vdCAlLjIwMHMARm9ybWF0IHNwZWNpZmllciBtdXN0IGJlIGEgc3RyaW5nLCBub3QgJS4yMDBzACUuMjAwcy5fX3ByZXBhcmVfXygpIG11c3QgcmV0dXJuIGEgbWFwcGluZywgbm90ICUuMjAwcwAlVSBhcmd1bWVudCBhZnRlciAqKiBtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcwAlLjIwMHMoKSBtdXN0IHJldHVybiBhIGRlcXVlLCBub3QgJS4yMDBzACVzIGNsYXNzIGFyZ3VtZW50IG11c3QgYmUgYSB0eXBlLCBub3QgJS4yMDBzAHN1cGVyKCkgYXJndW1lbnQgMSBtdXN0IGJlIGEgdHlwZSwgbm90ICUuMjAwcwAlLjIwMHMuX19zbG90bmFtZXNfXyBzaG91bGQgYmUgYSBsaXN0IG9yIE5vbmUsIG5vdCAlLjIwMHMAbWFrZV9lbmNvZGVyKCkgYXJndW1lbnQgMSBtdXN0IGJlIGRpY3Qgb3IgTm9uZSwgbm90ICUuMjAwcwBpbml0aWFsX3ZhbHVlIG11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAlLjIwMHMAbmV3bGluZSBtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJS4yMDBzAGFyZ3VtZW50IHNob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCAlLjIwMHMAIiVzIiBtdXN0IGJlIHN0cmluZyBvciBOb25lLCBub3QgJS4yMDBzACVzKGR0KSBhcmd1bWVudCBtdXN0IGJlIGEgZGF0ZXRpbWUgaW5zdGFuY2Ugb3IgTm9uZSwgbm90ICUuMjAwcwAlLjIwMHMuX19kaXZtb2RfXygpIG11c3QgcmV0dXJuIGEgMi10dXBsZSwgbm90ICUuMjAwcwAlcyBhcmdzIGFyZ3VtZW50IG11c3QgYmUgYSB0dXBsZSwgbm90ICUuMjAwcwBzZWNvbmQgaXRlbSBmcm9tIE5FV09CSl9FWCBhcmd1bWVudCB0dXBsZSBtdXN0IGJlIGEgdHVwbGUsIG5vdCAlLjIwMHMAJVUgYXJndW1lbnQgYWZ0ZXIgKiBtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgJS4yMDBzAFZhbHVlIGFmdGVyICogbXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcwBjb2RlY3MuZW5jb2RlIHNob3VsZCBiZSBhIGNhbGxhYmxlLCBub3QgJS4yMDBzAHBhdGggc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBub3QgJS4yMDBzAGl0ZXJhYmxlIGV4cGVjdGVkLCBub3QgJS4yMDBzAGZsb2F0IGFyZ3VtZW50IHJlcXVpcmVkLCBub3QgJS4yMDBzACUlJWMgZm9ybWF0OiAlcyBpcyByZXF1aXJlZCwgbm90ICUuMjAwcwAlJSVjIGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90ICUuMjAwcwAlJSVjIGZvcm1hdDogYSByZWFsIG51bWJlciBpcyByZXF1aXJlZCwgbm90ICUuMjAwcwBleHBlY3RlZCBzdHIgZm9yIGFyZ3VtZW50ICdldmVudCcsIG5vdCAlLjIwMHMAdGhpcmQgaXRlbSBvZiBzdGF0ZSBtdXN0IGJlIGFuIGludGVnZXIsIGdvdCAlLjIwMHMAJS4yMDBzLl9fc2V0c3RhdGVfXyBhcmd1bWVudCBzaG91bGQgYmUgNC10dXBsZSwgZ290ICUuMjAwcwAlLjIwMHMuX19zZXRzdGF0ZV9fIGFyZ3VtZW50IHNob3VsZCBiZSAzLXR1cGxlLCBnb3QgJS4yMDBzACUuMjAwcyBpcyBub3QgYSBzdWJ0eXBlIG9mICUuMjAwcwBUcnkgZmllbGQgImZpbmFsYm9keSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBUcnlTdGFyIGZpZWxkICJmaW5hbGJvZHkiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAVHJ5IGZpZWxkICJib2R5IiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAEFzeW5jRm9yIGZpZWxkICJib2R5IiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAEV4Y2VwdEhhbmRsZXIgZmllbGQgImJvZHkiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAVHJ5U3RhciBmaWVsZCAiYm9keSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBBc3luY1dpdGggZmllbGQgImJvZHkiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAQ2xhc3NEZWYgZmllbGQgImJvZHkiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAQXN5bmNGdW5jdGlvbkRlZiBmaWVsZCAiYm9keSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBJZiBmaWVsZCAiYm9keSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBJbnRlcmFjdGl2ZSBmaWVsZCAiYm9keSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBtYXRjaF9jYXNlIGZpZWxkICJib2R5IiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAE1vZHVsZSBmaWVsZCAiYm9keSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBXaGlsZSBmaWVsZCAiYm9keSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBDbGFzc0RlZiBmaWVsZCAiZGVjb3JhdG9yX2xpc3QiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAQXN5bmNGdW5jdGlvbkRlZiBmaWVsZCAiZGVjb3JhdG9yX2xpc3QiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMARGljdCBmaWVsZCAia2V5cyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBNYXRjaE1hcHBpbmcgZmllbGQgImtleXMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAYXJndW1lbnRzIGZpZWxkICJrd19kZWZhdWx0cyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBhcmd1bWVudHMgZmllbGQgImRlZmF1bHRzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAExpc3QgZmllbGQgImVsdHMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAU2V0IGZpZWxkICJlbHRzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAFR1cGxlIGZpZWxkICJlbHRzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAEFzc2lnbiBmaWVsZCAidGFyZ2V0cyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBEZWxldGUgZmllbGQgInRhcmdldHMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMATWF0Y2hDbGFzcyBmaWVsZCAia3dkX2F0dHJzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAEdlbmVyYXRvckV4cCBmaWVsZCAiZ2VuZXJhdG9ycyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBMaXN0Q29tcCBmaWVsZCAiZ2VuZXJhdG9ycyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBTZXRDb21wIGZpZWxkICJnZW5lcmF0b3JzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAERpY3RDb21wIGZpZWxkICJnZW5lcmF0b3JzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAENvbXBhcmUgZmllbGQgImNvbXBhcmF0b3JzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAFRyeSBmaWVsZCAiaGFuZGxlcnMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAVHJ5U3RhciBmaWVsZCAiaGFuZGxlcnMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAQ29tcGFyZSBmaWVsZCAib3BzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAE1hdGNoQ2xhc3MgZmllbGQgImt3ZF9wYXR0ZXJucyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBNYXRjaENsYXNzIGZpZWxkICJwYXR0ZXJucyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBNYXRjaE9yIGZpZWxkICJwYXR0ZXJucyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBNYXRjaE1hcHBpbmcgZmllbGQgInBhdHRlcm5zIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAE1hdGNoU2VxdWVuY2UgZmllbGQgInBhdHRlcm5zIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAEFzeW5jV2l0aCBmaWVsZCAiaXRlbXMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAYXJndW1lbnRzIGZpZWxkICJrd29ubHlhcmdzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAGFyZ3VtZW50cyBmaWVsZCAicG9zb25seWFyZ3MiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAYXJndW1lbnRzIGZpZWxkICJhcmdzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAENhbGwgZmllbGQgImFyZ3MiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAY29tcHJlaGVuc2lvbiBmaWVsZCAiaWZzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAERpY3QgZmllbGQgInZhbHVlcyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBKb2luZWRTdHIgZmllbGQgInZhbHVlcyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBCb29sT3AgZmllbGQgInZhbHVlcyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBNYXRjaCBmaWVsZCAiY2FzZXMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAQ2xhc3NEZWYgZmllbGQgImJhc2VzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAE1vZHVsZSBmaWVsZCAidHlwZV9pZ25vcmVzIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAEZ1bmN0aW9uVHlwZSBmaWVsZCAiYXJndHlwZXMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMASW1wb3J0IGZpZWxkICJuYW1lcyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBJbXBvcnRGcm9tIGZpZWxkICJuYW1lcyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBOb25sb2NhbCBmaWVsZCAibmFtZXMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAR2xvYmFsIGZpZWxkICJuYW1lcyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBDYWxsIGZpZWxkICJrZXl3b3JkcyIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBDbGFzc0RlZiBmaWVsZCAia2V5d29yZHMiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAVHJ5IGZpZWxkICJvcmVsc2UiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMAQXN5bmNGb3IgZmllbGQgIm9yZWxzZSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBUcnlTdGFyIGZpZWxkICJvcmVsc2UiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMASWYgZmllbGQgIm9yZWxzZSIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcwBXaGlsZSBmaWVsZCAib3JlbHNlIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzAGZvdXJ0aCBpdGVtIG9mIHN0YXRlIHNob3VsZCBiZSBhIGRpY3QsIGdvdCBhICUuMjAwcwB0aGlyZCBpdGVtIG9mIHN0YXRlIHNob3VsZCBiZSBhIGRpY3QsIGdvdCBhICUuMjAwcwBFcnJvciAlZCAlczogJS4yMDBzAGJhZCBmb3JtYXQgc3RyaW5nOiAlLjIwMHMAaW52YWxpZCBtb2RlOiAlLjIwMHMAZmlsZS5yZWFkKCkgcmV0dXJuZWQgbm90IGJ5dGVzIGJ1dCAlLjEwMHMAYXR0cmliIG11c3QgYmUgZGljdCwgbm90ICUuMTAwcwBleGVjKCkgZ2xvYmFscyBtdXN0IGJlIGEgZGljdCwgbm90ICUuMTAwcwB0dXBsZSBmb3Igc3RhcnRzd2l0aCBtdXN0IG9ubHkgY29udGFpbiBzdHIsIG5vdCAlLjEwMHMAdHVwbGUgZm9yIGVuZHN3aXRoIG11c3Qgb25seSBjb250YWluIHN0ciwgbm90ICUuMTAwcwBzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciBhIHR1cGxlIG9mIHN0ciwgbm90ICUuMTAwcwBlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgYSB0dXBsZSBvZiBzdHIsIG5vdCAlLjEwMHMAJXMgaW4gJVUuJXMgbXVzdCBiZSBzdHIsIG5vdCAlLjEwMHMAVGhlIGZpbGwgY2hhcmFjdGVyIG11c3QgYmUgYSB1bmljb2RlIGNoYXJhY3Rlciwgbm90ICUuMTAwcwBfX2xlbmd0aF9oaW50X18gbXVzdCBiZSBhbiBpbnRlZ2VyLCBub3QgJS4xMDBzAG1vZHVsZSBfX25hbWVfXyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgJS4xMDBzAG11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAlLjEwMHMAa2V5cyBtdXN0IGJlIHN0ciwgaW50LCBmbG9hdCwgYm9vbCBvciBOb25lLCBub3QgJS4xMDBzAGxvY2FscyBtdXN0IGJlIGEgbWFwcGluZyBvciBOb25lLCBub3QgJS4xMDBzAENvbW1lbnQgZmFjdG9yeSBtdXN0IGJlIGNhbGxhYmxlLCBub3QgJS4xMDBzAFBJIGZhY3RvcnkgbXVzdCBiZSBjYWxsYWJsZSwgbm90ICUuMTAwcwAnaW4gPHN0cmluZz4nIHJlcXVpcmVzIHN0cmluZyBhcyBsZWZ0IG9wZXJhbmQsIG5vdCAlLjEwMHMAaW50ZXJwcmV0ZXIgSUQgbXVzdCBiZSBhbiBpbnQsIGdvdCAlLjEwMHMAY2hhbm5lbCBJRCBtdXN0IGJlIGFuIGludCwgZ290ICUuMTAwcwAnYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBpdGVyYXRvciB3aXRoIF9fYW5leHRfXyBtZXRob2QsIGdvdCAlLjEwMHMAJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gb2JqZWN0IHdpdGggX19haXRlcl9fIG1ldGhvZCwgZ290ICUuMTAwcwBjYW4ndCBjb25jYXQgJS4xMDBzIHRvICUuMTAwcwBjYW4ndCBzZXQgYnl0ZWFycmF5IHNsaWNlIGZyb20gJS4xMDBzAGNhbid0IGV4dGVuZCBieXRlYXJyYXkgd2l0aCAlLjEwMHMAQ2FuJ3QgY29tcGFyZSAlLjEwMHMgYW5kICUuMTAwcwAnYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBvYmplY3QgZnJvbSBfX2FpdGVyX18gdGhhdCBkb2VzIG5vdCBpbXBsZW1lbnQgX19hbmV4dF9fOiAlLjEwMHMAJ2FzeW5jIGZvcicgcmVjZWl2ZWQgYW4gaW52YWxpZCBvYmplY3QgZnJvbSBfX2FuZXh0X186ICUuMTAwcwAnYXN5bmMgd2l0aCcgcmVjZWl2ZWQgYW4gb2JqZWN0IGZyb20gX19hZXhpdF9fIHRoYXQgZG9lcyBub3QgaW1wbGVtZW50IF9fYXdhaXRfXzogJS4xMDBzACdhc3luYyB3aXRoJyByZWNlaXZlZCBhbiBvYmplY3QgZnJvbSBfX2FlbnRlcl9fIHRoYXQgZG9lcyBub3QgaW1wbGVtZW50IF9fYXdhaXRfXzogJS4xMDBzAC1zACUuKnMAJSpzACUuNDAwcyBjb25zdHJ1Y3RvciB0YWtlcyBhdCBtb3N0ICV6ZCBwb3NpdGlvbmFsIGFyZ3VtZW50JXMAJyVVJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yICUuMjAwcyVzACclUycgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciAlLjIwMHMlcwAlcyVzJXMAbWVtb3J5dmlldyBoYXMgJXpkIGV4cG9ydGVkIGJ1ZmZlciVzACVzJXMlc2olcwBleHBhdDogQWNjb3VudGluZyglcCk6IERpcmVjdCAlMTBsbHUsIGluZGlyZWN0ICUxMGxsdSwgYW1wbGlmaWNhdGlvbiAlOC4yZiVzAG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkJXMATFBfJXMAJXM9JXMAJVMuJXMAaW52YWxpZCBub24tcHJpbnRhYmxlIGNoYXJhY3RlciBVKyVzACVzIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yIGEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcwB0eXBlIF9fcXVhbG5hbWVfXyBtdXN0IGJlIGEgc3RyLCBub3QgJXMAZm91cnRoIGVsZW1lbnQgb2YgdGhlIHR1cGxlIHJldHVybmVkIGJ5IF9fcmVkdWNlX18gbXVzdCBiZSBhbiBpdGVyYXRvciwgbm90ICVzAGZpZnRoIGVsZW1lbnQgb2YgdGhlIHR1cGxlIHJldHVybmVkIGJ5IF9fcmVkdWNlX18gbXVzdCBiZSBhbiBpdGVyYXRvciwgbm90ICVzAGV4Y2VwdGlvbnMgbXVzdCBiZSBjbGFzc2VzIG9yIGluc3RhbmNlcyBkZXJpdmluZyBmcm9tIEJhc2VFeGNlcHRpb24sIG5vdCAlcwBjYWxsaW5nICVSIHNob3VsZCBoYXZlIHJldHVybmVkIGFuIGluc3RhbmNlIG9mIEJhc2VFeGNlcHRpb24sIG5vdCAlcwBzaXh0aCBlbGVtZW50IG9mIHRoZSB0dXBsZSByZXR1cm5lZCBieSBfX3JlZHVjZV9fIG11c3QgYmUgYSBmdW5jdGlvbiwgbm90ICVzAG1hcHBpbmdwcm94eSgpIGFyZ3VtZW50IG11c3QgYmUgYSBtYXBwaW5nLCBub3QgJXMAJ291dCcgcGFyYW1ldGVyICVkIG11c3QgYmUgYSBwb2ludGVyIHR5cGUsIG5vdCAlcwBjYXN0KCkgYXJndW1lbnQgMiBtdXN0IGJlIGEgcG9pbnRlciB0eXBlLCBub3QgJXMAJyVzJyBtdXN0IGJlIGNhbGxhYmxlLCBub3QgJXMAc3RyLCBieXRlcyBvciBieXRlYXJyYXkgZXhwZWN0ZWQsIG5vdCAlcwBjYW4gb25seSBhc3NpZ24gdHVwbGUgdG8gJXMuX19iYXNlc19fLCBub3QgJXMAZXhwZWN0IGludCwgZ290ICVzAGV4cGVjdGVkIHN0ciwgZ290ICVzAGV4cGVjdGVkICVzIGluc3RhbmNlLCBnb3QgJXMAbWVtb3J5dmlldzogdW5zdXBwb3J0ZWQgZm9ybWF0ICVzAEZhaWxlZCB0byBkZWNvZGUgSmF2YXNjcmlwdCBUeXBlZEFycmF5IGFzICVzAEZpbGUgbm90IG9wZW4gZm9yICVzAGJhZCBtZW1iZXJkZXNjciB0eXBlIGZvciAlcwBjYW4ndCBjb21wYXJlICVzIHRvICVzAGV4cGVjdGVkICVzIGluc3RhbmNlIGluc3RlYWQgb2YgcG9pbnRlciB0byAlcwBjYW5ub3QgYXNzaWduIHRvICVzAGVtcHR5ICVzIG9uICVzACVzJXNlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcwBjYW5ub3QgdXNlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbnMgd2l0aCAlcwAlcy5fX25ld19fKCVzKTogJXMgaXMgbm90IGEgc3VidHlwZSBvZiAlcwBleHBlY3RlZCAlcyBpbnN0ZWFkIG9mICVzAGV4cGVjdGVkICVzIGluc3RhbmNlIGluc3RlYWQgb2YgJXMAY2Fubm90IGRlbGV0ZSAlcwBiaXQgZmllbGRzIG5vdCBhbGxvd2VkIGZvciB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggdW5jYXVnaHQgZXhjZXB0aW9uIG9mIHR5cGUgJXMATWlzc2VkIGF0dHJpYnV0ZSAnJVUnIG9mIHR5cGUgJXMAY2Fubm90IGRlY29kZSAlcwBpbnRlcm5hbCBlcnJvcjogY291bGQgbm90IGZpbmQgbWV0aG9kICVzAGFyZyA1IChjbG9zdXJlKSBleHBlY3RlZCBjZWxsLCBmb3VuZCAlcwBFeGNlcHRpb24gaWdub3JlZCAlcwBfX2Jvb2xfXyBzaG91bGQgcmV0dXJuIGJvb2wsIHJldHVybmVkICVzAEVycm9yICVkICVzAG1pc3NpbmcgY29uZmlnIGtleTogJXMAdW5zdXBwb3J0ZWQgdHlwZSBmb3IgdGltZWRlbHRhICVzIGNvbXBvbmVudDogJXMAZ290IGFuIGludmFsaWQgdHlwZSBpbiBDb25zdGFudDogJXMAdGVybWluYXRpbmcgd2l0aCB1bmNhdWdodCBleGNlcHRpb24gJXM6ICVzAGZpbGVzeXN0ZW0gZXJyb3I6ICVzAGVuY29kaW5nIHByb2JsZW06ICVzAHVua25vd24gZW5jb2Rpbmc6ICVzAGludmFsaWQgY29uZmlnIHZhbHVlOiAlcwBpbGxlZ2FsIG5ld2xpbmUgdmFsdWU6ICVzAGludmFsaWQgY29uZmlnIHR5cGU6ICVzACFzAHRtX2hvdXIAZm91cgBzZXRhdHRyAGdldGF0dHIAaGFzYXR0cgBkZWxhdHRyAHdzdHIAY29uZnN0cgBzdHJpbmdfdmlldzo6c3Vic3RyAGludGVybmFsIGVycm9yIGluIGRlY19zZXF1ZW5jZV9hc19zdHIAUmVwcmVzZW50IGEgUEVQIDYwNCB1bmlvbiB0eXBlCgpFLmcuIGZvciBpbnQgfCBzdHIAU1RBQ0tfR0xPQkFMIHJlcXVpcmVzIHN0cgAlcyBhcmcgbXVzdCBiZSBOb25lIG9yIHN0cgBjaGFyYWN0ZXIgbWFwcGluZyBtdXN0IHJldHVybiBpbnRlZ2VyLCBOb25lIG9yIHN0cgBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZSgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBQeUNvZGVjX0VuY29kZSgpIHRvIGVuY29kZSBmcm9tIHN0ciB0byBzdHIAUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoKSBpcyBkZXByZWNhdGVkOyB1c2UgUHlDb2RlY19EZWNvZGUoKSB0byBkZWNvZGUgZnJvbSBzdHIgdG8gc3RyAGNhbiBvbmx5IGNvbmNhdGVuYXRlIHN0ciAobm90ICIlLjIwMHMiKSB0byBzdHIAUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBQeUNvZGVjX0RlY29kZSgpIHRvIGRlY29kZSBmcm9tIHN0cgBBU1QgaWRlbnRpZmllciBtdXN0IGJlIG9mIHR5cGUgc3RyAEFTVCBzdHJpbmcgbXVzdCBiZSBvZiB0eXBlIHN0cgBmcm9taXNvZm9ybWF0OiBhcmd1bWVudCBtdXN0IGJlIHN0cgBmb3JtYXQgYXJnIG11c3QgYmUgc3RyAGNvbnRleHQgdmFyaWFibGUgbmFtZSBtdXN0IGJlIGEgc3RyAG51bGxwdHIAYmFkX3dlYWtfcHRyAHJlcXVpcmVkIGZpZWxkICJ2YWx1ZXMiIG1pc3NpbmcgZnJvbSBKb2luZWRTdHIATyY6UHlPYmpfRnJvbVB0cgBjdHlwZXMuUHlPYmpfRnJvbVB0cgBfY3R5cGVzLkNGdW5jUHRyAHNyAF9zdGRlcnIAaW5wdXQoKTogbG9zdCBzeXMuc3RkZXJyAHVuYWJsZSB0byBnZXQgc3lzLnN0ZGVycgBjYW4ndCBzZXQgcHJlbGltaW5hcnkgc3RkZXJyAF9QeVN5c19TZXRQcmVsaW1pbmFyeVN0ZGVycgBjb250ZXh0X2V4cHIAcmVxdWlyZWQgZmllbGQgImNvbF9vZmZzZXQiIG1pc3NpbmcgZnJvbSBleHByAHJlcXVpcmVkIGZpZWxkICJsaW5lbm8iIG1pc3NpbmcgZnJvbSBleHByAGZpZWxkICd0YXJnZXQnIGlzIHJlcXVpcmVkIGZvciBOYW1lZEV4cHIAZmllbGQgJ3ZhbHVlJyBpcyByZXF1aXJlZCBmb3IgTmFtZWRFeHByAHJlcXVpcmVkIGZpZWxkICJ0YXJnZXQiIG1pc3NpbmcgZnJvbSBOYW1lZEV4cHIAcmVxdWlyZWQgZmllbGQgInZhbHVlIiBtaXNzaW5nIGZyb20gTmFtZWRFeHByAGZpZWxkICd2YWx1ZScgaXMgcmVxdWlyZWQgZm9yIEV4cHIAcmVxdWlyZWQgZmllbGQgInZhbHVlIiBtaXNzaW5nIGZyb20gRXhwcgBpbnRlcm5hbCBlcnJvciBpbiBjb250ZXh0X3JlcHIAX3Rhc2tfcmVwcgBfZnV0dXJlX3JlcHIAX21vZHVsZV9yZXByAHN0cmluZyBpcyB0b28gbG9uZyB0byBnZW5lcmF0ZSByZXByAGJ5dGVhcnJheSBvYmplY3QgaXMgdG9vIGxhcmdlIHRvIG1ha2UgcmVwcgBieXRlcyBvYmplY3QgaXMgdG9vIGxhcmdlIHRvIG1ha2UgcmVwcgBBcHIAaXhvcgBsb2dpY2FsX3hvcgBnZXRzZXRfZGVzY3JpcHRvcgB3cmFwcGVyX2Rlc2NyaXB0b3IAbWVtYmVyX2Rlc2NyaXB0b3IAY2xhc3NtZXRob2RfZGVzY3JpcHRvcgBuZWdhdGl2ZSBmaWxlIGRlc2NyaXB0b3IAZmlsZS5maWxlbm8oKSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IAX2FycmF5X3JlY29uc3RydWN0b3IAdmVjdG9yAG9iamVjdCBhbHJlYWR5IHRyYWNrZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yAGZpbmRmYWN0b3IAZGljdF9yZXZlcnNla2V5aXRlcmF0b3IAZGljdF9rZXlpdGVyYXRvcgBhcnJheS5hcnJheWl0ZXJhdG9yAGZvcm1hdHRlcml0ZXJhdG9yAGRpY3RfcmV2ZXJzZWl0ZW1pdGVyYXRvcgBkaWN0X2l0ZW1pdGVyYXRvcgBkaWN0X3JldmVyc2V2YWx1ZWl0ZXJhdG9yAGRpY3RfdmFsdWVpdGVyYXRvcgBsaXN0X3JldmVyc2VpdGVyYXRvcgBmaWVsZG5hbWVpdGVyYXRvcgByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yAG1lbW9yeV9pdGVyYXRvcgBieXRlYXJyYXlfaXRlcmF0b3IAbGlzdF9pdGVyYXRvcgBfZWxlbWVudHRyZWUuX2VsZW1lbnRfaXRlcmF0b3IAc2V0X2l0ZXJhdG9yAG9kaWN0X2l0ZXJhdG9yAHBvc2l0aW9uc19pdGVyYXRvcgBieXRlc19pdGVyYXRvcgBnZW5lcmljX2FsaWFzX2l0ZXJhdG9yAHN0cl9pdGVyYXRvcgBfc3RydWN0LnVucGFja19pdGVyYXRvcgBzdHJfYXNjaWlfaXRlcmF0b3IAX2NvbGxlY3Rpb25zLl9kZXF1ZV9pdGVyYXRvcgBfY29sbGVjdGlvbnMuX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IAbGluZV9pdGVyYXRvcgB0dXBsZV9pdGVyYXRvcgBjYWxsYWJsZV9pdGVyYXRvcgBsb25ncmFuZ2VfaXRlcmF0b3IAJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhbiBpdGVyYXRvcgBELl9fcmV2ZXJzZWRfXygpIC0+IHJldmVyc2UgaXRlcmF0b3IAY2Fubm90IHJlLWVudGVyIHRoZSB0ZWUgaXRlcmF0b3IAJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhbiBhc3luYyBpdGVyYXRvcgBwb3NpeC5TY2FuZGlySXRlcmF0b3IAX29wZXJhdG9yAHVua25vd24gdW5hcnkgb3BlcmF0b3IAdW5rbm93biBiaW5hcnkgb3BlcmF0b3IAYXN5bmNfZ2VuZXJhdG9yAGNhbm5vdCAneWllbGQgZnJvbScgYSBjb3JvdXRpbmUgb2JqZWN0IGluIGEgbm9uLWNvcm91dGluZSBnZW5lcmF0b3IAcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGdlbmVyYXRvcgBjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEganVzdC1zdGFydGVkIGdlbmVyYXRvcgAncmV0dXJuJyB3aXRoIHZhbHVlIGluIGFzeW5jIGdlbmVyYXRvcgBUaGlzIGJvcnJvd2VkIHByb3h5IHdhcyBhdXRvbWF0aWNhbGx5IGRlc3Ryb3llZCBhdCB0aGUgZW5kIG9mIGFuIGFzeW5jIGdlbmVyYXRvcgBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYXN5bmMgZ2VuZXJhdG9yAGNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSBqdXN0LXN0YXJ0ZWQgYXN5bmMgZ2VuZXJhdG9yAFRoaXMgYm9ycm93ZWQgcHJveHkgd2FzIGF1dG9tYXRpY2FsbHkgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgYSBnZW5lcmF0b3IASnNHZW5lcmF0b3IAQXN5bmNHZW5lcmF0b3IAbnVtZXJhdG9yAGtleV9zZXBhcmF0b3IAaXRlbV9zZXBhcmF0b3IAbmFtZXNwYWNlX3NlcGFyYXRvcgBlbXB0eSBzZXBhcmF0b3IAbGluZXRlcm1pbmF0b3IAZGVub21pbmF0b3IAcHJlY29uZmlnX2luaXRfYWxsb2NhdG9yAFBZVEhPTk1BTExPQzogdW5rbm93biBhbGxvY2F0b3IAVW5rbm93biBQWVRIT05NQUxMT0MgYWxsb2NhdG9yAGdsU2Npc3NvcgBfYnoyLkJaMkRlY29tcHJlc3NvcgBfYnoyLkJaMkNvbXByZXNzb3IAZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yAGV4Y2VwdGlvbiBzdHJlcnJvcgBzb2NrZXQuZ2FpZXJyb3IAc29ja2V0LmhlcnJvcgBqc19lcnJvcgByZWdpc3Rlcl9lcnJvcgBzaWduYWwuaXRpbWVyX2Vycm9yAGxvb2t1cF9lcnJvcgB0cmlnZ2VyX2ZhdGFsX2Vycm9yAF9tYWtlX2NhbmNlbGxlZF9lcnJvcgBzdHJ1Y3QuZXJyb3IAYXVkaW9vcC5lcnJvcgB6bGliLmVycm9yAHVuc3BlY2lmaWVkIGlvc3RyZWFtX2NhdGVnb3J5IGVycm9yAHN5bnRheCBlcnJvcgBtb25leV9nZXQgZXJyb3IAQnVzIGVycm9yAGJ1ZmZlciBlcnJvcgAoJXMpIHVua25vd24gZXJyb3IAbWF0aCBkb21haW4gZXJyb3IAc3RyZWFtIGVycm9yAG1lbW9yeXZpZXc6IGludGVybmFsIGVycm9yAHVua25vd24gcGFyc2luZyBlcnJvcgBlbmNvZGluZyBlcnJvcgBkZWNvZGluZyBlcnJvcgB2YWx1ZSBlcnJvcgB1bmtub3duIHJ1bnRpbWUgZXJyb3IAZmlsZSBlcnJvcgBtYXRoIHJhbmdlIGVycm9yAHVuaWNvZGUgZXJyb3IAaW50ZXJuYWwgY29kZWMgZXJyb3IAY29tcHJlc3NlZCBkYXRhIGVycm9yAFVua25vd24gSS9PIGVycm9yAHVua25vd24gZGxvcGVuKCkgZXJyb3IAX3h4c3ViaW50ZXJwcmV0ZXJzLkNoYW5uZWxOb3RFbXB0eUVycm9yAF94eHN1YmludGVycHJldGVycy5DaGFubmVsRW1wdHlFcnJvcgBOb3RBRGlyZWN0b3J5RXJyb3IASXNBRGlyZWN0b3J5RXJyb3IATWVtb3J5RXJyb3IAS2V5RXJyb3IASW5kZXhFcnJvcgBTeW50YXhFcnJvcgBPdmVyZmxvd0Vycm9yAFRpbWVvdXRFcnJvcgB8JE9POkltcG9ydEVycm9yAGV4cGVjdGVkIGEgc3ViY2xhc3Mgb2YgSW1wb3J0RXJyb3IARmxvYXRpbmdQb2ludEVycm9yAGN0eXBlcy5Bcmd1bWVudEVycm9yAEVudmlyb25tZW50RXJyb3IAQ29ubmVjdGlvblJlc2V0RXJyb3IAZ2xHZXRFcnJvcgB4bWwucGFyc2Vycy5leHBhdC5FeHBhdEVycm9yAEZpbGVFeGlzdHNFcnJvcgBDaGlsZFByb2Nlc3NFcnJvcgBJdGltZXJFcnJvcgBCdWZmZXJFcnJvcgBQcm9jZXNzTG9va3VwRXJyb3IAQXNzZXJ0aW9uRXJyb3IAQ29ubmVjdGlvbkVycm9yAEluZGVudGF0aW9uRXJyb3IAUGVybWlzc2lvbkVycm9yAFJlY3Vyc2lvbkVycm9yAENvbnZlcnNpb25FcnJvcgBaZXJvRGl2aXNpb25FcnJvcgBTeXN0ZW1FcnJvcgBfeHhzdWJpbnRlcnByZXRlcnMuQ2hhbm5lbEVycm9yAFB5b2RpZGVJbnRlcm5hbEVycm9yAFVuYm91bmRMb2NhbEVycm9yAF9waWNrbGUuVW5waWNrbGluZ0Vycm9yAF9waWNrbGUuUGlja2xpbmdFcnJvcgBWYWx1ZUVycm9yAHwkT086QXR0cmlidXRlRXJyb3IASW52YWxpZFN0YXRlRXJyb3IAVW5pY29kZVRyYW5zbGF0ZUVycm9yAHhtbC5ldHJlZS5FbGVtZW50VHJlZS5QYXJzZUVycm9yAFR5cGVFcnJvcgBCcm9rZW5QaXBlRXJyb3IAUnVudGltZUVycm9yAHwkTzpOYW1lRXJyb3IAX3BpY2tsZS5QaWNrbGVFcnJvcgBVbmljb2RlRW5jb2RlRXJyb3IAVW5pY29kZUVycm9yAFVuaWNvZGVEZWNvZGVFcnJvcgBKU09ORGVjb2RlRXJyb3IAUmVmZXJlbmNlRXJyb3IAX3h4c3ViaW50ZXJwcmV0ZXJzLkNoYW5uZWxOb3RGb3VuZEVycm9yAE1vZHVsZU5vdEZvdW5kRXJyb3IARmlsZU5vdEZvdW5kRXJyb3IAQ29ubmVjdGlvbkFib3J0ZWRFcnJvcgBJbnRlcnJ1cHRlZEVycm9yAE5vdEltcGxlbWVudGVkRXJyb3IAQ29ubmVjdGlvblJlZnVzZWRFcnJvcgBfeHhzdWJpbnRlcnByZXRlcnMuQ2hhbm5lbENsb3NlZEVycm9yAENhbmNlbGxlZEVycm9yAF94eHN1YmludGVycHJldGVycy5SdW5GYWlsZWRFcnJvcgBBcml0aG1ldGljRXJyb3IAVGFiRXJyb3IAT1NFcnJvcgBCbG9ja2luZ0lPRXJyb3IARU9GRXJyb3IAX2Nzdi5FcnJvcgBiaW5hc2NpaS5FcnJvcgBsb2NhbGUuRXJyb3IAZmxvb3IAbWlub3IAZ2xDbGVhckNvbG9yAGdsQmxlbmRDb2xvcgBtYWpvcgBpb3IAZm9yAGxvZ2ljYWxfb3IAQml0WG9yAGZpZWxkICd0YXJnZXQnIGlzIHJlcXVpcmVkIGZvciBBc3luY0ZvcgBmaWVsZCAnaXRlcicgaXMgcmVxdWlyZWQgZm9yIEFzeW5jRm9yAHJlcXVpcmVkIGZpZWxkICJib2R5IiBtaXNzaW5nIGZyb20gQXN5bmNGb3IAcmVxdWlyZWQgZmllbGQgInRhcmdldCIgbWlzc2luZyBmcm9tIEFzeW5jRm9yAHJlcXVpcmVkIGZpZWxkICJpdGVyIiBtaXNzaW5nIGZyb20gQXN5bmNGb3IAcmVxdWlyZWQgZmllbGQgIm9yZWxzZSIgbWlzc2luZyBmcm9tIEFzeW5jRm9yAGZpZWxkICd0YXJnZXQnIGlzIHJlcXVpcmVkIGZvciBGb3IAZmllbGQgJ2l0ZXInIGlzIHJlcXVpcmVkIGZvciBGb3IAcmVxdWlyZWQgZmllbGQgImJvZHkiIG1pc3NpbmcgZnJvbSBGb3IAcmVxdWlyZWQgZmllbGQgInRhcmdldCIgbWlzc2luZyBmcm9tIEZvcgByZXF1aXJlZCBmaWVsZCAiaXRlciIgbWlzc2luZyBmcm9tIEZvcgByZXF1aXJlZCBmaWVsZCAib3JlbHNlIiBtaXNzaW5nIGZyb20gRm9yAF9jb2RlY3Nfa3IAZXVjX2tyAGlzbzIwMjJfa3IAb3MubGlzdGRpcgBpc2RpcgBvcy5zY2FuZGlyAG9zLnJtZGlyAG9zLm1rZGlyAGZjaGRpcgBvcy5jaGRpcgBwbGF0bGliZGlyAGlzX2RpcgBleGVjdXRhYmxlX2RpcgBfc3RkbGliX2RpcgBfX21hcF9qaXN4MDIxM19wYWlyAF9pby5CdWZmZXJlZFJXUGFpcgBjaHIAc3lzLnNldF9hc3luY2dlbl9ob29rX2ZpbmFsaXplcgAwLjAgdG8gYSBuZWdhdGl2ZSBvciBjb21wbGV4IHBvd2VyADAuMCBjYW5ub3QgYmUgcmFpc2VkIHRvIGEgbmVnYXRpdmUgcG93ZXIAaXNsb3dlcgBhc2NpaV90b2xvd2VyAHVuaWNvZGVfdG9sb3dlcgBzb2NrZXRzZXJ2ZXIAbmFtZXNlcnZlcgBvbiBjYWxsaW5nIF9jdHlwZXMuRGljdFJlbW92ZXIAcHJvcGVydHkgaGFzIG5vIHNldHRlcgBwcm9wZXJ0eSBvZiAlUiBvYmplY3QgaGFzIG5vIHNldHRlcgBwcm9wZXJ0eSAlUiBvZiAlUiBvYmplY3QgaGFzIG5vIHNldHRlcgBvcGVyYXRvci5hdHRyZ2V0dGVyAG9wZXJhdG9yLml0ZW1nZXR0ZXIAX2NvbGxlY3Rpb25zLl90dXBsZWdldHRlcgBwcm9wZXJ0eSBoYXMgbm8gZ2V0dGVyAHByb3BlcnR5IG9mICVSIG9iamVjdCBoYXMgbm8gZ2V0dGVyAHByb3BlcnR5ICVSIG9mICVSIG9iamVjdCBoYXMgbm8gZ2V0dGVyAGk6dW5yZWdpc3RlcgBfYWJjX3JlZ2lzdGVyAGl8T2lpOnJlZ2lzdGVyAEZhaWxlZCB0byByZXRyaWV2ZSBCdWlsdGluSW1wb3J0ZXIAZGVmYXVsdF9jb252ZXJ0ZXIAZGljdF9jb252ZXJ0ZXIAZmlsZSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0ZXIAcGVyZl9jb3VudGVyAGdsUXVlcnlDb3VudGVyAHN0ZGVycnByaW50ZXIAY2Fubm90IGJlIGNvbnZlcnRlZCB0byBwb2ludGVyAFB5Q2Fwc3VsZV9OZXcgY2FsbGVkIHdpdGggbnVsbCBwb2ludGVyAFB5Q2Fwc3VsZV9TZXRQb2ludGVyIGNhbGxlZCB3aXRoIG51bGwgcG9pbnRlcgBjb3VsZCBub3QgY29udmVydCB0aGUgX2hhbmRsZSBhdHRyaWJ1dGUgdG8gYSBwb2ludGVyAGdsVmVydGV4QXR0cmliUG9pbnRlcgBfY3R5cGVzLl9Qb2ludGVyAEZ1bmN0aW9uIFBvaW50ZXIAX3RraW50ZXIAY2VudGVyAGZpbHRlcgBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tfZmlyc3RpdGVyAF9jc3Yud3JpdGVyAHRva2VuaXplcml0ZXIAX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVdyaXRlcgBPfHM6U3RyZWFtV3JpdGVyAF9pby5CdWZmZXJlZFdyaXRlcgBFeHBlY3RpbmcgJzonIGRlbGltaXRlcgBFeHBlY3RpbmcgJywnIGRlbGltaXRlcgBmaW5kaXRlcgBfZnV0X3dhaXRlcgBuZXh0YWZ0ZXIAbmV3X2ludGVycHJldGVyAGluaXRfaW50ZXJwcmV0ZXIAcHljb3JlX2NyZWF0ZV9pbnRlcnByZXRlcgBfaXNvbGF0ZWRfaW50ZXJwcmV0ZXIAd2FybmluZ3NfZ2V0X3N0YXRlOiBjb3VsZCBub3QgaWRlbnRpZnkgY3VycmVudCBpbnRlcnByZXRlcgBubyBjdXJyZW50IGludGVycHJldGVyAGNhbm5vdCBkZXN0cm95IHRoZSBjdXJyZW50IGludGVycHJldGVyAENhbid0IGluaXRpYWxpemUgdGhyZWFkcyBmb3IgaW50ZXJwcmV0ZXIAbm90IG1haW4gaW50ZXJwcmV0ZXIAbWlzc2luZyBtYWluIGludGVycHJldGVyAGNhbid0IG1ha2UgbWFpbiBpbnRlcnByZXRlcgBzaWduYWwgb25seSB3b3JrcyBpbiBtYWluIHRocmVhZCBvZiB0aGUgbWFpbiBpbnRlcnByZXRlcgBzZXRfd2FrZXVwX2ZkIG9ubHkgd29ya3MgaW4gbWFpbiB0aHJlYWQgb2YgdGhlIG1haW4gaW50ZXJwcmV0ZXIATlVMTCBpbnRlcnByZXRlcgBQeV9FbmRJbnRlcnByZXRlcgBjYW5ub3QgYnVpbGQgcGFyYW1ldGVyAHJsY29tcGxldGVyAHByb3BlcnR5IGhhcyBubyBkZWxldGVyAHByb3BlcnR5IG9mICVSIG9iamVjdCBoYXMgbm8gZGVsZXRlcgBwcm9wZXJ0eSAlUiBvZiAlUiBvYmplY3QgaGFzIG5vIGRlbGV0ZXIAdW5leHBlY3RlZCBjaGFyYWN0ZXIgYWZ0ZXIgbGluZSBjb250aW51YXRpb24gY2hhcmFjdGVyAGZpbGwgY2hhcmFjdGVyIGlzIGJpZ2dlciB0aGFuIHRoZSBzdHJpbmcgbWF4aW11bSBjaGFyYWN0ZXIAaG9zdCBuYW1lIG11c3Qgbm90IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIAZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIAcGFydGlhbCBjaGFyYWN0ZXIAdW5leHBlY3RlZCBzcGVjaWFsIGNoYXJhY3RlcgB0b2tfYmFja3VwOiB3cm9uZyBjaGFyYWN0ZXIAVTthcnJheSBpdGVtIG11c3QgYmUgdW5pY29kZSBjaGFyYWN0ZXIAYSB1bmljb2RlIGNoYXJhY3RlcgBpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyAG5vdCBhIG51bWVyaWMgY2hhcmFjdGVyAGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcgBPfGlPaTpkdW1wX3RyYWNlYmFja19sYXRlcgAlcyBvbmx5IHN1cHBvcnRlZCBpbiBQeXRob24gMy4laSBhbmQgZ3JlYXRlcgBmLXN0cmluZzogc2VsZiBkb2N1bWVudGluZyBleHByZXNzaW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gUHl0aG9uIDMuOCBhbmQgZ3JlYXRlcgBVbmRlcnNjb3JlcyBpbiBudW1lcmljIGxpdGVyYWxzIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiBQeXRob24gMy42IGFuZCBncmVhdGVyAEZvcm1hdCBzdHJpbmdzIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiBQeXRob24gMy42IGFuZCBncmVhdGVyAF90b2tlbml6ZS5Ub2tlbml6ZXJJdGVyAF9hc3luY2lvLkZ1dHVyZUl0ZXIAd2ViYnJvd3NlcgBjaGlsZHJlbl91c2VyAHB5ZXhwYXQueG1scGFyc2VyAGNvbmZpZ3BhcnNlcgBmb3JtYXR0ZXJfcGFyc2VyAHhtbC5ldHJlZS5FbGVtZW50VHJlZS5YTUxQYXJzZXIAfE8hTzpzdXBlcgBpdGVydG9vbHMuX2dyb3VwZXIAaXN1cHBlcgB0b3VwcGVyAGNvcm91dGluZV93cmFwcGVyAGZ1bmN0b29scy5fbHJ1X2NhY2hlX3dyYXBwZXIAbWV0aG9kLXdyYXBwZXIAZnVuY3Rvb2xzLktleVdyYXBwZXIAVGFza1N0ZXBNZXRoV3JhcHBlcgA8X2lvLlRleHRJT1dyYXBwZXIAdXNlciBJRCBvZiBvd25lcgBncm91cCBJRCBvZiBvd25lcgBPOm1ha2Vfc2Nhbm5lcgBfc3JlLlNSRV9TY2FubmVyAF9qc29uLlNjYW5uZXIAJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIGNvbnRhaW5lcgBleHBlY3RlZCBpbnRlZ2VyIGZyb20gb3BlbmVyAGdldGl0aW1lcgBvcGVyYXRvci5tZXRob2RjYWxsZXIAX3BpY2tsZS5VbnBpY2tsZXIAX3BpY2tsZS5QaWNrbGVyAGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyAEZhc3QgcHJvZmlsZXIAV2hlbiBkZXN0cm95aW5nIF9sc3Byb2YgcHJvZmlsZXIAfE9kaWk6UHJvZmlsZXIAX2xzcHJvZi5Qcm9maWxlcgByZXF1aXJlZCBmaWVsZCAiY29sX29mZnNldCIgbWlzc2luZyBmcm9tIGV4Y2VwdGhhbmRsZXIAcmVxdWlyZWQgZmllbGQgImxpbmVubyIgbWlzc2luZyBmcm9tIGV4Y2VwdGhhbmRsZXIAZmFpbGVkIHRvIGVuYWJsZSBmYXVsdGhhbmRsZXIAZGVmYXVsdF9pbnRfaGFuZGxlcgBjYWxsX2V4Y2VwdGlvbl9oYW5kbGVyAGV4Y2VwdCBoYW5kbGVyAGRpc2FibGUoKTogZGlzYWJsZSB0aGUgZmF1bHQgaGFuZGxlcgBlbmFibGUoZmlsZT1zeXMuc3RkZXJyLCBhbGxfdGhyZWFkcz1UcnVlKTogZW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyAHVuc3VwcG9ydGVkIGVycm9yIGhhbmRsZXIAU2tpcHBlZEVudGl0eUhhbmRsZXIAcmVxdWlyZWQgZmllbGQgImJvZHkiIG1pc3NpbmcgZnJvbSBFeGNlcHRIYW5kbGVyAENvbW1lbnRIYW5kbGVyAFN0YXJ0RWxlbWVudEhhbmRsZXIARW5kRWxlbWVudEhhbmRsZXIARGVmYXVsdEhhbmRsZXIAUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcgBTdGFydENkYXRhU2VjdGlvbkhhbmRsZXIARW5kQ2RhdGFTZWN0aW9uSGFuZGxlcgBVbnBhcnNlZEVudGl0eURlY2xIYW5kbGVyAEF0dGxpc3REZWNsSGFuZGxlcgBFbGVtZW50RGVjbEhhbmRsZXIATm90YXRpb25EZWNsSGFuZGxlcgBYbWxEZWNsSGFuZGxlcgBTdGFydERvY3R5cGVEZWNsSGFuZGxlcgBFbmREb2N0eXBlRGVjbEhhbmRsZXIAU3RhcnROYW1lc3BhY2VEZWNsSGFuZGxlcgBFbmROYW1lc3BhY2VEZWNsSGFuZGxlcgBFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIATm90U3RhbmRhbG9uZUhhbmRsZXIAQ2hhcmFjdGVyRGF0YUhhbmRsZXIAaXNpZGVudGlmaWVyAGhhcmR3YXJlIGlkZW50aWZpZXIAWmVybyBwYWRkaW5nIGlzIG5vdCBhbGxvd2VkIGluIGNvbXBsZXggZm9ybWF0IHNwZWNpZmllcgAnPScgYWxpZ25tZW50IGZsYWcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgc3BlY2lmaWVyAHJlcGVhdCBjb3VudCBnaXZlbiB3aXRob3V0IGZvcm1hdCBzcGVjaWZpZXIAUHJlY2lzaW9uIG5vdCBhbGxvd2VkIGluIGludGVnZXIgZm9ybWF0IHNwZWNpZmllcgBOZWdhdGl2ZSB6ZXJvIGNvZXJjaW9uICh6KSBub3QgYWxsb3dlZCBpbiBpbnRlZ2VyIGZvcm1hdCBzcGVjaWZpZXIAJz0nIGFsaWdubWVudCBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllcgBTaWduIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyAFNwYWNlIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyAE5lZ2F0aXZlIHplcm8gY29lcmNpb24gKHopIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyAEFsdGVybmF0ZSBmb3JtICgjKSBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllcgBlbmQgb2Ygc3RyaW5nIHdoaWxlIGxvb2tpbmcgZm9yIGNvbnZlcnNpb24gc3BlY2lmaWVyAGV4cGVjdGVkICc6JyBhZnRlciBjb252ZXJzaW9uIHNwZWNpZmllcgBPbmx5ICcuJyBvciAnWycgbWF5IGZvbGxvdyAnXScgaW4gZm9ybWF0IGZpZWxkIHNwZWNpZmllcgBvdGhlcgAlczogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlcgAlczogY2Fubm90IHVzZSBmZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyAElucHV0IHNhbXBsZSBzaG91bGQgYmUgbG9uZ2VyAEZpcnN0IHNhbXBsZSBzaG91bGQgYmUgbG9uZ2VyAGlzX2ludGVnZXIAZmlsZW5vKCkgcmV0dXJuZWQgYSBub24taW50ZWdlcgBmdW5jdGlvbiBuYW1lIG11c3QgYmUgc3RyaW5nLCBieXRlcyBvYmplY3Qgb3IgaW50ZWdlcgBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyAGNhbm5vdCBjb252ZXJ0IGZsb2F0IGluZmluaXR5IHRvIGludGVnZXIAY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlcgBjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlcgBjYW5ub3QgY29udmVydCBmbG9hdCBOYU4gdG8gaW50ZWdlcgB0b28gbWFueSBkaWdpdHMgaW4gaW50ZWdlcgByZXF1aXJlZCBhcmd1bWVudCBpcyBub3QgYW4gaW50ZWdlcgBDYW4ndCBwaWNrbGUgJVI6IGV4dGVuc2lvbiBjb2RlICVSIGlzbid0IGFuIGludGVnZXIAJyUuMjAwcycgb2JqZWN0IGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyAF9faGFzaF9fIG1ldGhvZCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIAZXhwb25lbnQgbXVzdCBiZSBhbiBpbnRlZ2VyAHRoZSBfaGFuZGxlIGF0dHJpYnV0ZSBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYW4gaW50ZWdlcgBsaW1pdCBtdXN0IGJlIGFuIGludGVnZXIAbGluZW5vIG11c3QgYmUgYW4gaW50ZWdlcgBjbGFzcyBtdXN0IGRlZmluZSBfZmxhZ3NfIHdoaWNoIG11c3QgYmUgYW4gaW50ZWdlcgBvcHRpb25hbCBhcmcgbXVzdCBiZSBhbiBpbnRlZ2VyAGJ1ZmZlcl9zaXplIG11c3QgYmUgYW4gaW50ZWdlcgBUaGUgJ19sZW5ndGhfJyBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBpbnRlZ2VyAGFyZyAxIG11c3QgYmUgYW4gaW50ZWdlcgAiJXMiIG11c3QgYmUgYW4gaW50ZWdlcgBfX3JlZHVjZV9leF9fIGFyZ3VtZW50IHNob3VsZCBiZSBhbiBpbnRlZ2VyAGNvX2t3b25seWFyZ2NvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyAGNvX3Bvc29ubHlhcmdjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcgBjb19hcmdjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcgBjb19ubG9jYWxzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyAGNvX2ZsYWdzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyAGNvX2ZpcnN0bGluZW5vIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyAGNvX3N0YWNrc2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcgBuIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlcgBrIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlcgBfcGFja18gbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyAFBvaW50ZXIgaW5kaWNlcyBtdXN0IGJlIGludGVnZXIAbW1hcCBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcgBsO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyAGk7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIAaDthcnJheSBpdGVtIG11c3QgYmUgaW50ZWdlcgBiO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyAEw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIAY2Fubm90IGZpdCAnJS4yMDBzJyBpbnRvIGFuIGluZGV4LXNpemVkIGludGVnZXIAY2Fubm90IGZpdCAnJS4yMDBzJyBpbnRvIGFuIG9mZnNldC1zaXplZCBpbnRlZ2VyAGh0b25zOiBQeXRob24gaW50IHRvbyBsYXJnZSB0byBjb252ZXJ0IHRvIEMgMTYtYml0IHVuc2lnbmVkIGludGVnZXIAbnRvaHM6IFB5dGhvbiBpbnQgdG9vIGxhcmdlIHRvIGNvbnZlcnQgdG8gQyAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcgBodG9uczogY2FuJ3QgY29udmVydCBuZWdhdGl2ZSBQeXRob24gaW50IHRvIEMgMTYtYml0IHVuc2lnbmVkIGludGVnZXIAbnRvaHM6IGNhbid0IGNvbnZlcnQgbmVnYXRpdmUgUHl0aG9uIGludCB0byBDIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyAGRlY2ltYWwuQ29udGV4dE1hbmFnZXIAZ2V0YnVmZmVyAGdsSXNSZW5kZXJidWZmZXIAZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcgBnbEJpbmRSZW5kZXJidWZmZXIAZ2xJc0ZyYW1lYnVmZmVyAGdsQmluZEZyYW1lYnVmZmVyAG1hbmFnZWRidWZmZXIAcHl0aG9uMmpzX2J1ZmZlcgBPfG46ZnJvbV9idWZmZXIAd2Fybl9vbl9mdWxsX2J1ZmZlcgBjdHlwZXMuY2RhdGEvYnVmZmVyAG5vdCBlbm91Z2ggbWVtb3J5IGZvciBvdXRwdXQgYnVmZmVyAGNhbm5vdCBleHRyYWN0IHJhdyBidWZmZXIgZnJvbSBub24tY29udGlndW91cyBidWZmZXIAUGlja2xlQnVmZmVyIGNhbiBub3QgYmUgcGlja2xlZCB3aGVuIHBvaW50aW5nIHRvIGEgbm9uLWNvbnRpZ3VvdXMgYnVmZmVyAEFuIGludGVybmFsIGhlbHBlciBidWZmZXIAdG9rZW5pemVyIGJlZ2lubmluZyBvZiBidWZmZXIAb2Zmc2V0ICV6ZCBvdXQgb2YgcmFuZ2UgZm9yICV6ZC1ieXRlIGJ1ZmZlcgBzdHJpbmcgaXMgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlcgBuYnl0ZXMgaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlcgBKc0J1ZmZlcgBnbElzQnVmZmVyAE86UGlja2xlQnVmZmVyAHBpY2tsZS5QaWNrbGVCdWZmZXIAZ2xCaW5kQnVmZmVyAF9pby5fQnl0ZXNJT0J1ZmZlcgBieXRlb3JkZXIAaW5jcmVtZW50YWxlbmNvZGVyAE9PT09VVXBwcDptYWtlX2VuY29kZXIAX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlcgB8czpJbmNyZW1lbnRhbEVuY29kZXIAX2pzb24uRW5jb2RlcgBpbmNyZW1lbnRhbGRlY29kZXIAanNvbi5kZWNvZGVyAF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIAfHM6SW5jcmVtZW50YWxEZWNvZGVyAF9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyAG1vZHVsZWZpbmRlcgByZW1haW5kZXIAX1J1bm5pbmdMb29wSG9sZGVyAHhtbC5ldHJlZS5FbGVtZW50VHJlZS5UcmVlQnVpbGRlcgBTb3VyY2VsZXNzRmlsZUxvYWRlcgBTb3VyY2VGaWxlTG9hZGVyAGdsSXNTaGFkZXIAZ2xBdHRhY2hTaGFkZXIAZ2xEZXRhY2hTaGFkZXIAZ2xEZWxldGVTaGFkZXIAZ2xDcmVhdGVTaGFkZXIAZ2xDb21waWxlU2hhZGVyAF9jc3YucmVhZGVyAGhlYWRlcgBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtUmVhZGVyAE98czpTdHJlYW1SZWFkZXIAX2lvLkJ1ZmZlcmVkUmVhZGVyAE9jdG9iZXIAbXVsdGlwbGllciB1c2VkIGZvciB0aGUgaW1hZ2luYXJ5IHBhcnQgb2YgYSBjb21wbGV4IG51bWJlcgB0aGUgcmVhbCBwYXJ0IG9mIGEgY29tcGxleCBudW1iZXIAcmVmZXJlbmNlIHRvIGludmFsaWQgY2hhcmFjdGVyIG51bWJlcgBzaWduYWwgbnVtYmVyAGEgcmVhbCBudW1iZXIAJ3RpbWVvdXQnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyAE1pbm9yIHJlbGVhc2UgbnVtYmVyAE1ham9yIHJlbGVhc2UgbnVtYmVyAFNlcmlhbCByZWxlYXNlIG51bWJlcgBQYXRjaCByZWxlYXNlIG51bWJlcgBDdXJyZW50Q29sdW1uTnVtYmVyAEVycm9yQ29sdW1uTnVtYmVyAEN1cnJlbnRMaW5lTnVtYmVyAEVycm9yTGluZU51bWJlcgBOb3ZlbWJlcgBTZXB0ZW1iZXIAU3RydWN0dXJlL1VuaW9uIG1lbWJlcgBEZWNlbWJlcgBpbWdoZHIAc25kaGRyAGV0OmdldGhvc3RieWFkZHIAc29ja2V0LmdldGhvc3RieWFkZHIAX2Nhc3RfYWRkcgBfbWVtc2V0X2FkZHIAX3dzdHJpbmdfYXRfYWRkcgBfc3RyaW5nX2F0X2FkZHIAX21lbW1vdmVfYWRkcgBweWNsYnIAdmFyAHJlcXVpcmVkIGZpZWxkICJmaW5hbGJvZHkiIG1pc3NpbmcgZnJvbSBUcnlTdGFyAHJlcXVpcmVkIGZpZWxkICJib2R5IiBtaXNzaW5nIGZyb20gVHJ5U3RhcgByZXF1aXJlZCBmaWVsZCAiaGFuZGxlcnMiIG1pc3NpbmcgZnJvbSBUcnlTdGFyAHJlcXVpcmVkIGZpZWxkICJvcmVsc2UiIG1pc3NpbmcgZnJvbSBUcnlTdGFyAE1hdGNoU3RhcgBwb2xhcgBxdW90ZWNoYXIAZXNjYXBlY2hhcgAlYyByZXF1aXJlcyBpbnQgb3IgY2hhcgBUcnVuY2F0aW9uIG9mIHZhbHVlIHRvIGNoYXIASWxsZWdhbCBjaGFyAFRydW5jYXRpb24gb2YgdmFsdWUgdG8gdW5zaWduZWQgY2hhcgB0bV95ZWFyAHJlbWFpbmRlcl9uZWFyAGNhY2hlX2NsZWFyAGlvc19iYXNlOjpjbGVhcgBnbENsZWFyAGNweXRob24uUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyAGlpaTpmcm9taXNvY2FsZW5kYXIAT3wkTzpDb250ZXh0VmFyAF9jb250ZXh0dmFycy5Db250ZXh0VmFyACVSIHdhcyBjcmVhdGVkIGJ5IGEgZGlmZmVyZW50IENvbnRleHRWYXIATWFyAFxyAEJpdE9yAHJlcXVpcmVkIGZpZWxkICJwYXR0ZXJucyIgbWlzc2luZyBmcm9tIE1hdGNoT3IAYm9vbG9wID0gQW5kIHwgT3IASW52YWxpZCBkYXRhIHJlc3VsdCB0eXBlOiAlcgAhcgBFeHBlY3RlZCBpbnQgYXMgcgBfaGVhcHEAc3RydWN0c2VxAE5vdEVxAEBxAC1xAGZyZXhwAGxkZXhwAG1heF9leHAAbWluX2V4cABtYXhfMTBfZXhwAG1pbl8xMF9leHAAZmllbGQgJ2VsdCcgaXMgcmVxdWlyZWQgZm9yIEdlbmVyYXRvckV4cAByZXF1aXJlZCBmaWVsZCAiZWx0IiBtaXNzaW5nIGZyb20gR2VuZXJhdG9yRXhwAHJlcXVpcmVkIGZpZWxkICJnZW5lcmF0b3JzIiBtaXNzaW5nIGZyb20gR2VuZXJhdG9yRXhwAGZpZWxkICdib2R5JyBpcyByZXF1aXJlZCBmb3IgSWZFeHAAZmllbGQgJ3Rlc3QnIGlzIHJlcXVpcmVkIGZvciBJZkV4cABmaWVsZCAnb3JlbHNlJyBpcyByZXF1aXJlZCBmb3IgSWZFeHAAcmVxdWlyZWQgZmllbGQgImJvZHkiIG1pc3NpbmcgZnJvbSBJZkV4cAByZXF1aXJlZCBmaWVsZCAidGVzdCIgbWlzc2luZyBmcm9tIElmRXhwAHJlcXVpcmVkIGZpZWxkICJvcmVsc2UiIG1pc3NpbmcgZnJvbSBJZkV4cABjcHl0aG9uLnJ1bl9zdGFydHVwAGluZGV4Z3JvdXAAbGFzdGdyb3VwAHN1Ymdyb3VwACBpbiBwcmludF9leGNlcHRpb25fZ3JvdXAAbm8gc3VjaCBncm91cABkZXJpdmUgbXVzdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgQmFzZUV4Y2VwdGlvbkdyb3VwAGJ1aWx0aW5zLkV4Y2VwdGlvbkdyb3VwAENhbm5vdCBuZXN0IEJhc2VFeGNlcHRpb25zIGluIGFuIEV4Y2VwdGlvbkdyb3VwAHMjOmxvb2t1cAB0b2tfYmFja3VwAHRhc2tfd2FrZXVwAGR1cAB0c3RhdGUgbWl4LXVwAGh0dHAAc3AAaWk6dGNzZXRwZ3JwAHRjZ2V0cGdycABtaXNzaW5nIGludGVycABhMmJfcXAAYjJhX3FwAG1heHBwAGF2Z3BwAHppcGFwcAB1bmFyeW9wAGdlbmVyYXRvcl9zdG9wAGZ1bGwtc3RvcABpeSo6aW5ldF9udG9wAEV0b3AAaGVhcHBvcABjbXBvcABoZWFwcHVzaHBvcABfZ2V0X2V2ZW50X2xvb3AAZ2V0X2xvb3AAX3NldF9ydW5uaW5nX2xvb3AAX2dldF9ydW5uaW5nX2xvb3AAbm8gcnVubmluZyBldmVudCBsb29wAFRhc2sgJVIgZ290IEZ1dHVyZSAlUiBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBsb29wAGNhbid0IGp1bXAgaW50byB0aGUgYm9keSBvZiBhIGZvciBsb29wACdjb250aW51ZScgbm90IHByb3Blcmx5IGluIGxvb3AAJ2JyZWFrJyBvdXRzaWRlIGxvb3AAYXVkaW9vcABib29sb3AAY29kZW9wAGp1bXAAX2dldF9kdW1wAC90bXAAZmllbGQgJ2VsdCcgaXMgcmVxdWlyZWQgZm9yIExpc3RDb21wAHJlcXVpcmVkIGZpZWxkICJlbHQiIG1pc3NpbmcgZnJvbSBMaXN0Q29tcAByZXF1aXJlZCBmaWVsZCAiZ2VuZXJhdG9ycyIgbWlzc2luZyBmcm9tIExpc3RDb21wAGZpZWxkICdlbHQnIGlzIHJlcXVpcmVkIGZvciBTZXRDb21wAHJlcXVpcmVkIGZpZWxkICJlbHQiIG1pc3NpbmcgZnJvbSBTZXRDb21wAHJlcXVpcmVkIGZpZWxkICJnZW5lcmF0b3JzIiBtaXNzaW5nIGZyb20gU2V0Q29tcABmaWVsZCAna2V5JyBpcyByZXF1aXJlZCBmb3IgRGljdENvbXAAZmllbGQgJ3ZhbHVlJyBpcyByZXF1aXJlZCBmb3IgRGljdENvbXAAcmVxdWlyZWQgZmllbGQgImtleSIgbWlzc2luZyBmcm9tIERpY3RDb21wAHJlcXVpcmVkIGZpZWxkICJnZW5lcmF0b3JzIiBtaXNzaW5nIGZyb20gRGljdENvbXAAcmVxdWlyZWQgZmllbGQgInZhbHVlIiBtaXNzaW5nIGZyb20gRGljdENvbXAAX2ltcAB0ZW1wAF9fbWFwX2ppc3gwMjEzX2VtcABfX21hcF9qaXN4MDIxM18yX2VtcABfX21hcF9qaXN4MDIxM18xX2VtcABteWNtcABmaWxlY21wAGJpZzVoa3Njc19ub25ibXAAYmlnNWhrc2NzX2JtcABfX21hcF9qaXN4MDIxM19ibXAAX19tYXBfamlzeDAyMTNfMl9ibXAAX19tYXBfamlzeDAyMTNfMV9ibXAATzp1dGNmcm9tdGltZXN0YW1wAE98Tzpmcm9tdGltZXN0YW1wAGNsYW1wAHVscABfY29kZWNzX2pwAGV1Y19qcABpc28yMDIyX2pwAGd6aXAAfCRwOnppcAByc3RyaXAAbHN0cmlwAHJvdW5kdHJpcABlbnN1cmVwaXAAZnAAc3RlcABtb25fdGhvdXNhbmRzX3NlcABieXRlc19wZXJfc2VwAHN0cmluZ3ByZXAAc2xlZXAAYmFkIHZhbHVlKHMpIGluIGZkc190b19rZWVwAGN0eXBlcyBvYmplY3Qgc3RydWN0dXJlIHRvbyBkZWVwAFNlcAAvdWRwAC90Y3AAYnl0ZXN3YXAAdGV4dHdyYXAAdW53cmFwAGltcG9ydGxpYi5fYm9vdHN0cmFwAGl0ZXJ0b29scy5zdGFybWFwAGNoYXJtYXAAZ2xHZW5lcmF0ZU1pcG1hcABtbWFwLm1tYXAAfCRwOmFzX29iamVjdF9tYXAAZm9ybWF0X21hcABDYW4gb25seSBhc3NpZ24ga2V5cyBvZiB0eXBlIHN0cmluZyB0byBKYXZhU2NyaXB0IG9iamVjdCBtYXAAbWFpbGNhcABFbmNvZGluZ01hcABKc011dGFibGVNYXAAQ2Fubm90IHVzZSAlUiBhcyBhIGtleSBmb3IgYSBKYXZhc2NyaXB0IE1hcABacABUcABmaWVsZCAnb3AnIGlzIHJlcXVpcmVkIGZvciBVbmFyeU9wAGZpZWxkICdvcGVyYW5kJyBpcyByZXF1aXJlZCBmb3IgVW5hcnlPcAByZXF1aXJlZCBmaWVsZCAib3AiIG1pc3NpbmcgZnJvbSBVbmFyeU9wAHJlcXVpcmVkIGZpZWxkICJvcGVyYW5kIiBtaXNzaW5nIGZyb20gVW5hcnlPcABmaWVsZCAncmlnaHQnIGlzIHJlcXVpcmVkIGZvciBCaW5PcABmaWVsZCAnbGVmdCcgaXMgcmVxdWlyZWQgZm9yIEJpbk9wAGZpZWxkICdvcCcgaXMgcmVxdWlyZWQgZm9yIEJpbk9wAHJlcXVpcmVkIGZpZWxkICJyaWdodCIgbWlzc2luZyBmcm9tIEJpbk9wAHJlcXVpcmVkIGZpZWxkICJsZWZ0IiBtaXNzaW5nIGZyb20gQmluT3AAcmVxdWlyZWQgZmllbGQgIm9wIiBtaXNzaW5nIGZyb20gQmluT3AAZmllbGQgJ29wJyBpcyByZXF1aXJlZCBmb3IgQm9vbE9wAHJlcXVpcmVkIGZpZWxkICJ2YWx1ZXMiIG1pc3NpbmcgZnJvbSBCb29sT3AAcmVxdWlyZWQgZmllbGQgIm9wIiBtaXNzaW5nIGZyb20gQm9vbE9wAGdsU3RlbmNpbE9wAGxvZzFwAHRocmVhZC5sb2NhbC4lcABmYXN0IG1vZGU6IGNhbid0IHBpY2tsZSBjeWNsaWMgb2JqZWN0cyBpbmNsdWRpbmcgb2JqZWN0IHR5cGUgJS4yMDBzIGF0ICVwAEludmFsaWQgbGlicmFyeSBoYW5kbGUgJXAAJUk6JU06JVMgJXAAdHdvAGF1dG8Ab2JqY3Byb3RvAHJlYWRpbnRvAHcqfG5pOnJlY3ZfaW50bwBuZWdhdGl2ZSBidWZmZXJzaXplIGluIHJlY3ZfaW50bwB3KnxuaTpyZWN2ZnJvbV9pbnRvAG5lZ2F0aXZlIGJ1ZmZlcnNpemUgaW4gcmVjdmZyb21faW50bwBwYWNrX2ludG8AT3xuaTpyZWN2bXNnX2ludG8AeSppTzpzZW5kdG8AeSpPOnNlbmR0bwBzb2NrZXQuc2VuZHRvAGFzc2lnbl90bwBkaWN0aW9uYXJ5IHRoYXQgdGhpcyB2aWV3IHJlZmVycyB0bwBhc3NpZ24gdG8ALmNweXRob24tMzExLXdhc20zMi1lbXNjcmlwdGVuLnNvAC5hYmkzLnNvAGdldF9jb3JvAG1ybwBEaXZpc2lvbl9ieV96ZXJvAGlzX3plcm8AaW50ZWdlciBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVybwBpbnRlZ2VyIG1vZHVsbyBieSB6ZXJvAGNvbXBsZXggZGl2aXNpb24gYnkgemVybwBmbG9hdCBkaXZpc2lvbiBieSB6ZXJvAGZsb2F0IGZsb29yIGRpdmlzaW9uIGJ5IHplcm8AbGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8AYnVmZmVyX3NpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybwBzbGljZSBzdGVwIGNhbm5vdCBiZSB6ZXJvAHJhbmdlKCkgYXJnIDMgbXVzdCBub3QgYmUgemVybwBkZWNpbWFsLkRpdmlzaW9uQnlaZXJvAC1aZXJvACtaZXJvAG1pY3JvAGN0eXBlcy5zZXRfZXJybm8AY3R5cGVzLmdldF9lcnJubwBzaV9lcnJubwB0b21vbm8Ac3RfaW5vAHNpX3NpZ25vAGNvX2ZpcnN0bGluZW5vAGZfbGluZW5vAGVuZF9saW5lbm8AdGJfbGluZW5vAGV4Y2VwdGlvbiBsaW5lbm8AZXhjZXB0aW9uIGVuZCBsaW5lbm8AZmlsZW5vAGNsZWFyX21lbW8AdHVydGxlZGVtbwBjb21wbGV4IG1vZHVsbwBmbG9hdCBtb2R1bG8AX3B5aW8AYXNfaW50ZWdlcl9yYXRpbwBjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvAGNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvAGJ1ZmZlcmVkX3N0ZGlvAGNvbmZpZ3VyZV9jX3N0ZGlvAF9hc3luY2lvAF9pbwB3aG8AZGF0ZXRpbWUudHppbmZvAHNpZ3dhaXRpbmZvAE9PfGlpaWk6Z2V0YWRkcmluZm8Ac29ja2V0LmdldGFkZHJpbmZvAG5sX2xhbmdpbmZvAHNpZ25hbC5zdHJ1Y3Rfc2lnaW5mbwBfem9uZWluZm8AT2k6Z2V0bmFtZWluZm8Ac29ja2V0LmdldG5hbWVpbmZvAHN5cy5pbnRfaW5mbwBzeXMuZmxvYXRfaW5mbwBidWZmZXJfaW5mbwBzeXMudmVyc2lvbl9pbmZvAHN5cy5fZW1zY3JpcHRlbl9pbmZvAHM6Z2V0X2Nsb2NrX2luZm8Ac3lzLmhhc2hfaW5mbwBjYWNoZV9pbmZvAHN5cy50aHJlYWRfaW5mbwBleGNfaW5mbwBubyBhbGlnbm1lbnQgaW5mbwBfdHlwZV8gbXVzdCBoYXZlIHN0b3JhZ2UgaW5mbwB6b25laW5mby5ab25lSW5mbwB0b3N0ZXJlbwBTbwBQbwBObwBMbwBEbwBDbwBPIXxuADEgaWYgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0LCAwIGlmIG5vdCwgYW5kIC0xIGlmIHVua25vd24AZmNob3duAG9zLmNob3duAGdjOiAlemQgdW5jb2xsZWN0YWJsZSBvYmplY3RzIGF0IHNodXRkb3duAHJ1bgBjYW5ub3QgY2hhbmdlIHNldHRpbmcgb25jZSBwYXJzaW5nIGhhcyBiZWd1bgBTdW4ASnVuAHlwdG4AcF9zaWduX3Bvc24Abl9zaWduX3Bvc24AaXNuAGNhcnJpYWdlLXJldHVybgBKYXZhU2NyaXB0IGdlbmVyYXRvciBpZ25vcmVkIHJldHVybgBSZXR1cm4Aa3dkX2F0dHJzICglZCkgLyBrd2RfcGF0dGVybnMgKCVkKSBsZW5ndGggbWlzbWF0Y2ggaW4gY2xhc3MgcGF0dGVybgBtdWx0aXBsZSBhc3NpZ25tZW50cyB0byBuYW1lICVSIGluIHBhdHRlcm4AcmVxdWlyZWQgZmllbGQgImVuZF9jb2xfb2Zmc2V0IiBtaXNzaW5nIGZyb20gcGF0dGVybgByZXF1aXJlZCBmaWVsZCAiY29sX29mZnNldCIgbWlzc2luZyBmcm9tIHBhdHRlcm4AcmVxdWlyZWQgZmllbGQgImVuZF9saW5lbm8iIG1pc3NpbmcgZnJvbSBwYXR0ZXJuAHJlcXVpcmVkIGZpZWxkICJsaW5lbm8iIG1pc3NpbmcgZnJvbSBwYXR0ZXJuAHVuZXhwZWN0ZWQgY29uc3RhbnQgaW5zaWRlIG9mIGEgbGl0ZXJhbCBwYXR0ZXJuAGtleXMgKCVkKSAvIHBhdHRlcm5zICglZCkgbGVuZ3RoIG1pc21hdGNoIGluIG1hcHBpbmcgcGF0dGVybgBtdWx0aXBsZSBzdGFycmVkIGV4cHJlc3Npb25zIGluIHNlcXVlbmNlIHBhdHRlcm4AbXVsdGlwbGUgc3RhcnJlZCBuYW1lcyBpbiBzZXF1ZW5jZSBwYXR0ZXJuAHRvbyBtYW55IGV4cHJlc3Npb25zIGluIHN0YXItdW5wYWNraW5nIHNlcXVlbmNlIHBhdHRlcm4AdW5leHBlY3RlZCBwYXR0ZXJuAHJlLlBhdHRlcm4AaW50ZXJuAGNvZXJjZV9jX2xvY2FsZV93YXJuAF9kZWFsbG9jX3dhcm4AaXM6aW5ldF9wdG9uAGlsbGVnYWwgSVAgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIGluZXRfcHRvbgBmaWVsZCAndmFsdWUnIGlzIHJlcXVpcmVkIGZvciBNYXRjaFNpbmdsZXRvbgByZXF1aXJlZCBmaWVsZCAidmFsdWUiIG1pc3NpbmcgZnJvbSBNYXRjaFNpbmdsZXRvbgBzOmluZXRfYXRvbgBpbGxlZ2FsIElQIGFkZHJlc3Mgc3RyaW5nIHBhc3NlZCB0byBpbmV0X2F0b24AcGVyc29uAF9qc29uACBpbiBjb21wYXJpc29uAGV4Y2VwdGlvbiByZWFzb24AZW52aXJvbgBjYWxsX3Nvb24AX19tYXBfamlzeGNvbW1vbgBfX21hcF9nYmNvbW1vbgB0c3RhdGVfZGVsZXRlX2NvbW1vbgB6b25laW5mby5fY29tbW9uAHRtX21vbgBzZW1pY29sb24AZXBzaWxvbgByZXNvbHV0aW9uAEludmFsaWQgaW5pdGlhbGl6YXRpb24gb3B0aW9uAHNldF9leGNlcHRpb24AZm9ybWF0X2V4Y2VwdGlvbgBpbnRlcm5hbCBlcnJvciBpbiBmbGFnc19hc19leGNlcHRpb24Ac3RkOjpiYWRfZXhjZXB0aW9uAHN0ZDo6ZXhjZXB0aW9uAEZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbgBSdW5GYWlsZWRFcnJvcjogc2NyaXB0IHJhaXNlZCBhbiB1bmNhdWdodCBleGNlcHRpb24AUmFpc2Ugd2l0aCBjYXVzZSBidXQgbm8gZXhjZXB0aW9uAGNhbid0IGp1bXAgaW50byBhbiAnZXhjZXB0JyBibG9jayBhcyB0aGVyZSdzIG5vIGV4Y2VwdGlvbgB0ZXJtaW5hdGVfaGFuZGxlciB1bmV4cGVjdGVkbHkgdGhyZXcgYW4gZXhjZXB0aW9uAEl0ZW0gJWQgb2Ygc2Vjb25kIGFyZ3VtZW50IChleGNlcHRpb25zKSBpcyBub3QgYW4gZXhjZXB0aW9uAG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkIHdoaWxlIG5vcm1hbGl6aW5nIGFuIGV4Y2VwdGlvbgBleGVjdXRpb24gb2YgbW9kdWxlICVzIGZhaWxlZCB3aXRob3V0IHNldHRpbmcgYW4gZXhjZXB0aW9uAGNyZWF0aW9uIG9mIG1vZHVsZSAlcyBmYWlsZWQgd2l0aG91dCBzZXR0aW5nIGFuIGV4Y2VwdGlvbgAlcyByZXR1cm5lZCBOVUxMIHdpdGhvdXQgc2V0dGluZyBhbiBleGNlcHRpb24AJVIgcmV0dXJuZWQgTlVMTCB3aXRob3V0IHNldHRpbmcgYW4gZXhjZXB0aW9uAGluaXRpYWxpemF0aW9uIG9mICVzIGZhaWxlZCB3aXRob3V0IHJhaXNpbmcgYW4gZXhjZXB0aW9uAE9iamVjdCBjYXVzaW5nIHRoZSBleGNlcHRpb24AaW5pdGlhbGl6YXRpb24gb2YgJXMgcmFpc2VkIHVucmVwb3J0ZWQgZXhjZXB0aW9uAGV4ZWN1dGlvbiBvZiBtb2R1bGUgJXMgcmFpc2VkIHVucmVwb3J0ZWQgZXhjZXB0aW9uAGNyZWF0aW9uIG9mIG1vZHVsZSAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24AcHlvZGlkZS5mZmkuSnNFeGNlcHRpb24AZGVjaW1hbC5EZWNpbWFsRXhjZXB0aW9uAF9QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24AZXhjZXB0aW9ucyBtdXN0IGRlcml2ZSBmcm9tIEJhc2VFeGNlcHRpb24AZXhjZXB0aW9uIGNhdXNlcyBtdXN0IGRlcml2ZSBmcm9tIEJhc2VFeGNlcHRpb24AZXhjZXB0aW9uIGNvbnRleHQgbXVzdCBiZSBOb25lIG9yIGRlcml2ZSBmcm9tIEJhc2VFeGNlcHRpb24AZXhjZXB0aW9uIGNhdXNlIG11c3QgYmUgTm9uZSBvciBkZXJpdmUgZnJvbSBCYXNlRXhjZXB0aW9uAHJwYXJ0aXRpb24AZGVjb21wb3NpdGlvbgBjYW4ndCByZWNvbnN0cnVjdCBsb2dpY2FsIGZpbGUgcG9zaXRpb24AY2FuJ3QgcmVzdG9yZSBsb2dpY2FsIGZpbGUgcG9zaXRpb24AZHVwbGljYXRlIGFyZ3VtZW50ICclVScgaW4gZnVuY3Rpb24gZGVmaW5pdGlvbgBTaWduYWwgJWkgaWdub3JlZCBkdWUgdG8gcmFjZSBjb25kaXRpb24AQXJyYXkgZG9lcyBub3Qgc3VwcG9ydCBpdGVtIGRlbGV0aW9uACclLjIwMHMnIG9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IGl0ZW0gZGVsZXRpb24AUG9pbnRlciBkb2VzIG5vdCBzdXBwb3J0IGl0ZW0gZGVsZXRpb24AbW1hcCBvYmplY3QgZG9lc24ndCBzdXBwb3J0IGl0ZW0gZGVsZXRpb24AJyUuMjAwcycgb2JqZWN0IGRvZXNuJ3Qgc3VwcG9ydCBpdGVtIGRlbGV0aW9uAG1tYXAgZG9lc24ndCBzdXBwb3J0IGl0ZW0gZGVsZXRpb24AbW1hcCBvYmplY3QgZG9lc24ndCBzdXBwb3J0IHNsaWNlIGRlbGV0aW9uACclLjIwMHMnIG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgc2xpY2UgZGVsZXRpb24AbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgZHVyaW5nIGFzdCBjb25zdHJ1Y3Rpb24ASWxsZWdhbCBpbnN0cnVjdGlvbgBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24AY2FsbF9jZGVjbGZ1bmN0aW9uAHByaW50X2Z1bmN0aW9uAHVzZXJfZnVuY3Rpb24AY3R5cGVzLmNhbGxfZnVuY3Rpb24AYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb24gb3V0c2lkZSBvZiBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24AdGhpcyBmdW5jdGlvbgAlczolZDogYmFkIGFyZ3VtZW50IHRvIGludGVybmFsIGZ1bmN0aW9uAG9uIGNhbGxpbmcgY3R5cGVzIGNhbGxiYWNrIGZ1bmN0aW9uAG9uIGNvbnZlcnRpbmcgcmVzdWx0IG9mIGN0eXBlcyBjYWxsYmFjayBmdW5jdGlvbgBpbnZhbGlkIHJlc3VsdCB0eXBlIGZvciBjYWxsYmFjayBmdW5jdGlvbgB0eXBlICVzIGhhcyB0aGUgUHlfVFBGTEFHU19IQVZFX0dDIGZsYWcgYnV0IGhhcyBubyB0cmF2ZXJzZSBmdW5jdGlvbgAnYXdhaXQnIG91dHNpZGUgZnVuY3Rpb24AJ3JldHVybicgb3V0c2lkZSBmdW5jdGlvbgAneWllbGQnIG91dHNpZGUgZnVuY3Rpb24AZl9saW5lbm8gY2FuIG9ubHkgYmUgc2V0IGJ5IGEgdHJhY2UgZnVuY3Rpb24AJ2F3YWl0JyBvdXRzaWRlIGFzeW5jIGZ1bmN0aW9uACdhc3luYyBmb3InIG91dHNpZGUgYXN5bmMgZnVuY3Rpb24AJ2FzeW5jIHdpdGgnIG91dHNpZGUgYXN5bmMgZnVuY3Rpb24AJ3lpZWxkIGZyb20nIGluc2lkZSBhc3luYyBmdW5jdGlvbgBfX2J1aWxkX2NsYXNzX186IGZ1bmMgbXVzdCBiZSBhIGZ1bmN0aW9uAGludCwgaW50LCBpbnQgLT4gQ29uc3RydWN0IGEgZGF0ZSBmcm9tIHRoZSBJU08geWVhciwgd2VlayBudW1iZXIgYW5kIHdlZWtkYXkuCgpUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSBkYXRlLmlzb2NhbGVuZGFyKCkgZnVuY3Rpb24AaW50ZXJzZWN0aW9uAHVuY2xvc2VkIENEQVRBIHNlY3Rpb24AaW4gZ2FyYmFnZSBjb2xsZWN0aW9uAFN0YXJ0Q2RhdGFTZWN0aW9uAEVuZENkYXRhU2VjdGlvbgBfZGVmYXVsdGFjdGlvbgBoYXNoX3JhbmRvbWl6YXRpb24ASG9vayB0byBpbnRlcmNlcHQgZmluYWxpemF0aW9uAGNhbm5vdCByZWFkIGZpbGUgbGFyZ2VyIHRoYW4gMzJLQiBkdXJpbmcgaW5pdGlhbGl6YXRpb24AX19jeGFfZ3VhcmRfYWNxdWlyZSBkZXRlY3RlZCByZWN1cnNpdmUgaW5pdGlhbGl6YXRpb24AbW9kdWxlICVzOiBtX3NpemUgbWF5IG5vdCBiZSBuZWdhdGl2ZSBmb3IgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24AZ2xCbGVuZEVxdWF0aW9uAGlsbGVnYWwgdGFyZ2V0IGZvciBhbm5vdGF0aW9uACclcycgY2FuIG5vdCBiZSB1c2VkIHdpdGhpbiBhbiBhbm5vdGF0aW9uAG5hbWUgb2YgdGhlIGxvY2sgaW1wbGVtZW50YXRpb24AbmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uAF9fZGlyX18oKSAtPiBsaXN0CnNwZWNpYWxpemVkIGRpcigpIGltcGxlbWVudGF0aW9uAGluY29uc2lzdGVudCB1c2Ugb2YgdGFicyBhbmQgc3BhY2VzIGluIGluZGVudGF0aW9uAHRvbyBtYW55IGxldmVscyBvZiBpbmRlbnRhdGlvbgBtYXhpbXVtIHN0cmluZyBjb252ZXJzaW9uIGRpZ2l0cyBsaW1pdGF0aW9uAEVuY29kaW5nIGNoYW5nZWQgdHdpY2Ugd2hpbGUgcmVhZGluZyB0aGUgY29uZmlndXJhdGlvbgBIb29rIHRvIGludGVyY2VwdCBmaXJzdCBpdGVyYXRpb24AcmVkdWNlKCkgYXJnIDIgbXVzdCBzdXBwb3J0IGl0ZXJhdGlvbgBkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAGxpc3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24Ac2V0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAFNldCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBrZXl3b3JkcyBkaWN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAE9yZGVyZWREaWN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAHNlcXVlbmNlIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAF9fc2xvdHNuYW1lX18gY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AVHJ5IGZpZWxkICJmaW5hbGJvZHkiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAFRyeVN0YXIgZmllbGQgImZpbmFsYm9keSIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AVHJ5IGZpZWxkICJib2R5IiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBBc3luY0ZvciBmaWVsZCAiYm9keSIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24ARXhjZXB0SGFuZGxlciBmaWVsZCAiYm9keSIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AVHJ5U3RhciBmaWVsZCAiYm9keSIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AQXN5bmNXaXRoIGZpZWxkICJib2R5IiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBDbGFzc0RlZiBmaWVsZCAiYm9keSIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AQXN5bmNGdW5jdGlvbkRlZiBmaWVsZCAiYm9keSIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24ASWYgZmllbGQgImJvZHkiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAEludGVyYWN0aXZlIGZpZWxkICJib2R5IiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBtYXRjaF9jYXNlIGZpZWxkICJib2R5IiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBNb2R1bGUgZmllbGQgImJvZHkiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAFdoaWxlIGZpZWxkICJib2R5IiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBDbGFzc0RlZiBmaWVsZCAiZGVjb3JhdG9yX2xpc3QiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAEFzeW5jRnVuY3Rpb25EZWYgZmllbGQgImRlY29yYXRvcl9saXN0IiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBEaWN0IGZpZWxkICJrZXlzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBNYXRjaE1hcHBpbmcgZmllbGQgImtleXMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAGFyZ3VtZW50cyBmaWVsZCAia3dfZGVmYXVsdHMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAGFyZ3VtZW50cyBmaWVsZCAiZGVmYXVsdHMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAExpc3QgZmllbGQgImVsdHMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAFNldCBmaWVsZCAiZWx0cyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AVHVwbGUgZmllbGQgImVsdHMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAEFzc2lnbiBmaWVsZCAidGFyZ2V0cyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24ARGVsZXRlIGZpZWxkICJ0YXJnZXRzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBNYXRjaENsYXNzIGZpZWxkICJrd2RfYXR0cnMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAEdlbmVyYXRvckV4cCBmaWVsZCAiZ2VuZXJhdG9ycyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24ATGlzdENvbXAgZmllbGQgImdlbmVyYXRvcnMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAFNldENvbXAgZmllbGQgImdlbmVyYXRvcnMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAERpY3RDb21wIGZpZWxkICJnZW5lcmF0b3JzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBDb21wYXJlIGZpZWxkICJjb21wYXJhdG9ycyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AVHJ5IGZpZWxkICJoYW5kbGVycyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AVHJ5U3RhciBmaWVsZCAiaGFuZGxlcnMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAENvbXBhcmUgZmllbGQgIm9wcyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24ATWF0Y2hDbGFzcyBmaWVsZCAia3dkX3BhdHRlcm5zIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBNYXRjaENsYXNzIGZpZWxkICJwYXR0ZXJucyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24ATWF0Y2hPciBmaWVsZCAicGF0dGVybnMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAE1hdGNoTWFwcGluZyBmaWVsZCAicGF0dGVybnMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAE1hdGNoU2VxdWVuY2UgZmllbGQgInBhdHRlcm5zIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBBc3luY1dpdGggZmllbGQgIml0ZW1zIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBhcmd1bWVudHMgZmllbGQgImt3b25seWFyZ3MiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAGFyZ3VtZW50cyBmaWVsZCAicG9zb25seWFyZ3MiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAGFyZ3VtZW50cyBmaWVsZCAiYXJncyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AQ2FsbCBmaWVsZCAiYXJncyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AY29tcHJlaGVuc2lvbiBmaWVsZCAiaWZzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBEaWN0IGZpZWxkICJ2YWx1ZXMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAEpvaW5lZFN0ciBmaWVsZCAidmFsdWVzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBCb29sT3AgZmllbGQgInZhbHVlcyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24ATWF0Y2ggZmllbGQgImNhc2VzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBDbGFzc0RlZiBmaWVsZCAiYmFzZXMiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uAE1vZHVsZSBmaWVsZCAidHlwZV9pZ25vcmVzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBGdW5jdGlvblR5cGUgZmllbGQgImFyZ3R5cGVzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBJbXBvcnQgZmllbGQgIm5hbWVzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBJbXBvcnRGcm9tIGZpZWxkICJuYW1lcyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24ATm9ubG9jYWwgZmllbGQgIm5hbWVzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBHbG9iYWwgZmllbGQgIm5hbWVzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBDYWxsIGZpZWxkICJrZXl3b3JkcyIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AQ2xhc3NEZWYgZmllbGQgImtleXdvcmRzIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBUcnkgZmllbGQgIm9yZWxzZSIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AQXN5bmNGb3IgZmllbGQgIm9yZWxzZSIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24AVHJ5U3RhciBmaWVsZCAib3JlbHNlIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBJZiBmaWVsZCAib3JlbHNlIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBXaGlsZSBmaWVsZCAib3JlbHNlIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgBPcmRlcmVkRGljdCBtdXRhdGVkIGR1cmluZyBpdGVyYXRpb24AZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uAGRpY3Rpb25hcnkga2V5cyBjaGFuZ2VkIGR1cmluZyBpdGVyYXRpb24AYXJncyBjaGFuZ2VkIGR1cmluZyBpdGVyYXRpb24AYXN5bmMgZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uAGNvcm91dGluZSByYWlzZWQgU3RvcEl0ZXJhdGlvbgBhc3luYyBnZW5lcmF0b3IgcmFpc2VkIFN0b3BBc3luY0l0ZXJhdGlvbgBJRUVFX0ludmFsaWRfb3BlcmF0aW9uAFRhc2sgZG9lcyBub3Qgc3VwcG9ydCBzZXRfcmVzdWx0IG9wZXJhdGlvbgBUYXNrIGRvZXMgbm90IHN1cHBvcnQgc2V0X2V4Y2VwdGlvbiBvcGVyYXRpb24AYmFkIGFyZ3VtZW50IHR5cGUgZm9yIGJ1aWx0LWluIG9wZXJhdGlvbgBkZWNpbWFsLkZsb2F0T3BlcmF0aW9uAGRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgBVbnN1cHBvcnRlZE9wZXJhdGlvbgBpbnZhbGlkIGdlbmVyYXRpb24AbmFtZSAnJVUnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24AbmFtZSAnJVUnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBub25sb2NhbCBkZWNsYXJhdGlvbgBuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBnbG9iYWwgZGVjbGFyYXRpb24AbmFtZSAnJVUnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBnbG9iYWwgZGVjbGFyYXRpb24AUmV0dXJuIGJ1ZmZlciBpbnRlcmZhY2UgaW5mb3JtYXRpb24AbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgZHVyaW5nIGNvbXBpbGF0aW9uAGNvbXBsZXggZXhwb25lbnRpYXRpb24AY29uY3VycmVudCBwb2xsKCkgaW52b2NhdGlvbgBjYW4ndCBqdW1wIGludG8gYSByZS1yYWlzaW5nIGJsb2NrIGFzIHRoZXJlJ3Mgbm8gbG9jYXRpb24AZ2xHZXRVbmlmb3JtTG9jYXRpb24AZ2xHZXRBdHRyaWJMb2NhdGlvbgBnbEJpbmRBdHRyaWJMb2NhdGlvbgBpbnRlZ2VyIHRpbWUgb2YgbGFzdCBtb2RpZmljYXRpb24AY2Fubm90IHN3aXRjaCBmcm9tIGF1dG9tYXRpYyBmaWVsZCBudW1iZXJpbmcgdG8gbWFudWFsIGZpZWxkIHNwZWNpZmljYXRpb24AYXdhaXQgZXhwcmVzc2lvbgAneWllbGQnIGluc2lkZSBnZW5lcmF0b3IgZXhwcmVzc2lvbgBjb25kaXRpb25hbCBleHByZXNzaW9uAGYtc3RyaW5nIGV4cHJlc3Npb24AZXhwZWN0ZWQgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uAGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgdXNlZCBpbiBhIGNvbXByZWhlbnNpb24gaXRlcmFibGUgZXhwcmVzc2lvbgB5aWVsZCBleHByZXNzaW9uAHVuZXhwZWN0ZWQgZXhwcmVzc2lvbgBuYW1lZCBleHByZXNzaW9uAG9iamVjdCAlLjEwMHMgY2FuJ3QgYmUgdXNlZCBpbiAnYXdhaXQnIGV4cHJlc3Npb24Ab2JqZWN0ICVzIGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uAGV4cGVjdGVkICdlbHNlJyBhZnRlciAnaWYnIGV4cHJlc3Npb24AZmllbGQgJ2JvZHknIGlzIHJlcXVpcmVkIGZvciBFeHByZXNzaW9uAHJlcXVpcmVkIGZpZWxkICJib2R5IiBtaXNzaW5nIGZyb20gRXhwcmVzc2lvbgB3aGlsZSBmaW5pc2hpbmcgZGVjb21wcmVzc2lvbgBfY29tcHJlc3Npb24Ad2hpbGUgZmluaXNoaW5nIGNvbXByZXNzaW9uAGhleHZlcnNpb24AOiBubyBjb252ZXJzaW9uAGVtc2NyaXB0ZW5fdmVyc2lvbgBhcGlfdmVyc2lvbgBfZmVhdHVyZV92ZXJzaW9uAHVuaWRhdGFfdmVyc2lvbgBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24AaW5jb21wYXRpYmxlIHZlcnNpb24AJXM6IGJ1ZyBsaWtlbHkgY2F1c2VkIGJ5IGEgcmVmY291bnQgZXJyb3IgaW4gYSBDIGV4dGVuc2lvbgBCdWZmZXIgbXVzdCBiZSBzaW5nbGUgZGltZW5zaW9uACd5aWVsZCcgaW5zaWRlIGxpc3QgY29tcHJlaGVuc2lvbgAneWllbGQnIGluc2lkZSBzZXQgY29tcHJlaGVuc2lvbgBkaWN0IHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiBkaWN0IGNvbXByZWhlbnNpb24AJ3lpZWxkJyBpbnNpZGUgZGljdCBjb21wcmVoZW5zaW9uAGZpZWxkICd0YXJnZXQnIGlzIHJlcXVpcmVkIGZvciBjb21wcmVoZW5zaW9uAGZpZWxkICdpdGVyJyBpcyByZXF1aXJlZCBmb3IgY29tcHJlaGVuc2lvbgBpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbgByZXF1aXJlZCBmaWVsZCAidGFyZ2V0IiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbgByZXF1aXJlZCBmaWVsZCAiaWZzIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbgByZXF1aXJlZCBmaWVsZCAiaXRlciIgbWlzc2luZyBmcm9tIGNvbXByZWhlbnNpb24AcmVxdWlyZWQgZmllbGQgImlzX2FzeW5jIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbgBub24taW50ZWdlciBhcmd1bWVudHMgaW4gZGl2aXNpb24AaW50ZXJtZWRpYXRlIG92ZXJmbG93IGR1cmluZyBkaXZpc2lvbgBGb3JtYXQgc3BlY2lmaWVyIG1pc3NpbmcgcHJlY2lzaW9uAGlzc3ViY2xhc3MoKSBhcmcgMiBtdXN0IGJlIGEgY2xhc3MsIGEgdHVwbGUgb2YgY2xhc3Nlcywgb3IgYSB1bmlvbgBpc2luc3RhbmNlKCkgYXJnIDIgbXVzdCBiZSBhIHR5cGUsIGEgdHVwbGUgb2YgdHlwZXMsIG9yIGEgdW5pb24AX2N0eXBlcy5VbmlvbgBjcHl0aG9uAGpzMnB5dGhvbgBDUHl0aG9uAGZhaWxlZCB0byBnZXQgcmFuZG9tIG51bWJlcnMgdG8gaW5pdGlhbGl6ZSBQeXRob24AZmFpbCB0byByZWNvbmZpZ3VyZSBQeXRob24ATW9uAG5ubm4AJS4qcyUuMGQlcyVjJSVsbG4AZGVjaW1hbC5TaWduYWxEaWN0TWl4aW4AaXNfYnVpbHRpbgBjcmVhdGVfYnVpbHRpbgBleGVjX2J1aWx0aW4AYXNpbgBqb2luAF91bnNhZmVfc2V0ZW1pbgB0bV9taW4ARW1pbgB8JE9POm1pbgB1bGF3MmxpbgBhbGF3MmxpbgBsaW4ybGluAGFkcGNtMmxpbgBnZXRsb2dpbgBjcl9vcmlnaW4AY3B5dGhvbi5ydW5fc3RkaW4AaW5wdXQoKTogbG9zdCBzeXMuc3RkaW4AL3Vzci9sb2NhbC9iaW46L2JpbjovdXNyL2JpbgBiaW5kdGV4dGRvbWFpbgBpbnRlcnJ1cHRfbWFpbgBweWluaXRfbWFpbgBfaW5pdF9tYWluAGdldF9tYWluAF9ydW5fbW9kdWxlX2FzX21haW4AaW5pdF9pbnRlcnBfbWFpbgBpdGVydG9vbHMuY2hhaW4AX1B5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGVFeGNlcHRNYWluAFB5X0Zyb3plbk1haW4AY29weXNpZ24AYXNzaWduAGZpZWxkICd0YXJnZXQnIGlzIHJlcXVpcmVkIGZvciBBbm5Bc3NpZ24AZmllbGQgJ2Fubm90YXRpb24nIGlzIHJlcXVpcmVkIGZvciBBbm5Bc3NpZ24AcmVxdWlyZWQgZmllbGQgInRhcmdldCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbgByZXF1aXJlZCBmaWVsZCAiYW5ub3RhdGlvbiIgbWlzc2luZyBmcm9tIEFubkFzc2lnbgByZXF1aXJlZCBmaWVsZCAic2ltcGxlIiBtaXNzaW5nIGZyb20gQW5uQXNzaWduAGZpZWxkICd0YXJnZXQnIGlzIHJlcXVpcmVkIGZvciBBdWdBc3NpZ24AZmllbGQgJ29wJyBpcyByZXF1aXJlZCBmb3IgQXVnQXNzaWduAGZpZWxkICd2YWx1ZScgaXMgcmVxdWlyZWQgZm9yIEF1Z0Fzc2lnbgByZXF1aXJlZCBmaWVsZCAidGFyZ2V0IiBtaXNzaW5nIGZyb20gQXVnQXNzaWduAHJlcXVpcmVkIGZpZWxkICJvcCIgbWlzc2luZyBmcm9tIEF1Z0Fzc2lnbgByZXF1aXJlZCBmaWVsZCAidmFsdWUiIG1pc3NpbmcgZnJvbSBBdWdBc3NpZ24AZmllbGQgJ3ZhbHVlJyBpcyByZXF1aXJlZCBmb3IgQXNzaWduAHJlcXVpcmVkIGZpZWxkICJ0YXJnZXRzIiBtaXNzaW5nIGZyb20gQXNzaWduAHJlcXVpcmVkIGZpZWxkICJ2YWx1ZSIgbWlzc2luZyBmcm9tIEFzc2lnbgBjb3B5X3NpZ24AcG9zaXRpdmVfc2lnbgBuZWdhdGl2ZV9zaWduAHBlcmNlbnQtc2lnbgBwbHVzLXNpZ24AZXF1YWxzLXNpZ24AbnVtYmVyLXNpZ24AZG9sbGFyLXNpZ24AbGVzcy10aGFuLXNpZ24AZ3JlYXRlci10aGFuLXNpZ24AaW5pdF9mcm96ZW4AaXNfZnJvemVuAGZpbmRfZnJvemVuAHRoZSBfX21haW5fXyBtb2R1bGUgaXMgbm90IGZyb3plbgBNYXRjaEFzIG11c3Qgc3BlY2lmeSBhIHRhcmdldCBuYW1lIGlmIGEgcGF0dGVybiBpcyBnaXZlbgBwaWNrbGUgc3RyZWFtIHJlZmVycyB0byBvdXQtb2YtYmFuZCBkYXRhIGJ1dCBubyAqYnVmZmVycyogYXJndW1lbnQgd2FzIGdpdmVuACVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlemQlVSAlcyBnaXZlbgBfX3NldF9uYW1lX18oKSB0YWtlcyAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAlZCB3ZXJlIGdpdmVuAHNldmVuAGNoYXJhY3RlcnNfd3JpdHRlbgB8aTpsaXN0ZW4Ad2FzbTMyLWVtc2NyaXB0ZW4ARW1zY3JpcHRlbgBfY2hpbGRyZW4AdXNlciB0aW1lIG9mIGNoaWxkcmVuAHN5c3RlbSB0aW1lIG9mIGNoaWxkcmVuAE98aTpkbG9wZW4AY3R5cGVzLmRsb3BlbgBpbml0X3NldF9idWlsdGluc19vcGVuAGNhbid0IGluaXRpYWxpemUgaW8ub3BlbgBtYXhsZW4AUHlCdWZmZXJfVG9Db250aWd1b3VzOiBsZW4gIT0gdmlldy0+bGVuAF9pbnN0YW50aWF0ZV90b2tlbgBnZXRfY2FjaGVfdG9rZW4AaW52YWxpZCB0b2tlbgB1bmNsb3NlZCB0b2tlbgBCVUc6IGludGVybmFsIGRpcmVjdGl2ZSBib29ra2VlcGluZyBicm9rZW4APFRva2VuAF9jb250ZXh0dmFycy5Ub2tlbgB8T086dGhlbgBoeXBoZW4AZG4AX2NvZGVjc19jbgBzdWJuAGF0YW4Ac3BhbgBpc25hbgBpc19zbmFuAGlzX3FuYW4AYWxsb3dfbmFuAGlzX25hbgAtbmFuAHZhbHVlIHRvIGJlIHVzZWQgZm9yIGhhc2ggb2YgYSBuYW4ASUVFRSwgYmlnLWVuZGlhbgBJRUVFLCBsaXR0bGUtZW5kaWFuAEphbgBcbgBUbgB6T24Abm5PbgBObgBNbgBjbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4ARG4AQ24AQG4ATyhPbk5uKW4ATyhObiluAE8oTyluAE4oTyluAE8mczpkbHN5bQBjdHlwZXMuZGxzeW0Ac2FtZV9xdWFudHVtAGludGVybWVkaWF0ZSBvdmVyZmxvdyBpbiBmc3VtAC1pbmYgKyBpbmYgaW4gZnN1bQBpc2FsbnVtAHxpOnNpZ251bQBlbnVtAGxpbmVfbnVtAHVuc2lnbmVkIHNob3J0IGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtAHNpZ25lZCBzaG9ydCBpbnRlZ2VyIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtAHVuc2lnbmVkIGJ5dGUgaW50ZWdlciBpcyBncmVhdGVyIHRoYW4gbWF4aW11bQBzaWduZWQgY2hhciBpcyBncmVhdGVyIHRoYW4gbWF4aW11bQB1aWQgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0AZ2lkIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtAGZkIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtAHVuc2lnbmVkIHNob3J0IGlzIGxlc3MgdGhhbiBtaW5pbXVtAHNpZ25lZCBzaG9ydCBpbnRlZ2VyIGlzIGxlc3MgdGhhbiBtaW5pbXVtAHVuc2lnbmVkIGJ5dGUgaW50ZWdlciBpcyBsZXNzIHRoYW4gbWluaW11bQBzaWduZWQgY2hhciBpcyBsZXNzIHRoYW4gbWluaW11bQB1aWQgaXMgbGVzcyB0aGFuIG1pbmltdW0AZ2lkIGlzIGxlc3MgdGhhbiBtaW5pbXVtAGZkIGlzIGxlc3MgdGhhbiBtaW5pbXVtACVzJXMlcyB1bmF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtAF9yZWFkX251bGwoKTogcmVhZCBmcm9tIE5VTEwsIHJhaXNlIGEgU0lHU0VHViBvciBTSUdCVVMgc2lnbmFsIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0AY2FuJ3QgdW5wYWNrIElFRUUgNzU0IHNwZWNpYWwgdmFsdWUgb24gbm9uLUlFRUUgcGxhdGZvcm0AZ2xHZXRBY3RpdmVVbmlmb3JtAGludmFsaWQgbm9ybWFsaXphdGlvbiBmb3JtAHN0cnhmcm0AcGVybQBufGk6cmVjdmZyb20AbmVnYXRpdmUgYnVmZmVyc2l6ZSBpbiByZWN2ZnJvbQBnaV95aWVsZGZyb20AdW5wYWNrX2Zyb20AcmVxdWlyZWQgZmllbGQgIm5hbWVzIiBtaXNzaW5nIGZyb20gSW1wb3J0RnJvbQBmaWVsZCAndmFsdWUnIGlzIHJlcXVpcmVkIGZvciBZaWVsZEZyb20AcmVxdWlyZWQgZmllbGQgInZhbHVlIiBtaXNzaW5nIGZyb20gWWllbGRGcm9tAEZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbQBfcmFuZG9tAF9pby5CdWZmZXJlZFJhbmRvbQBfcmFuZG9tLlJhbmRvbQBuZGltAGludGVybmFsIG91dHB1dCBzaXplIG9mIGhhc2ggYWxnb3JpdGhtAHNlZWQgc2l6ZSBvZiBoYXNoIGFsZ29yaXRobQBjaGlsZHJlbl9zeXN0ZW0Ab3Muc3lzdGVtAHNldGl0ZW0AZ2V0aXRlbQBwb3BpdGVtAGRlbGl0ZW0AZmllbGQgJ2NvbnRleHRfZXhwcicgaXMgcmVxdWlyZWQgZm9yIHdpdGhpdGVtAHJlcXVpcmVkIGZpZWxkICJjb250ZXh0X2V4cHIiIG1pc3NpbmcgZnJvbSB3aXRoaXRlbQB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIG9uZSBhcnJheSBpdGVtAG9uIHJlbW92aW5nIHRoZSBsYXN0IGNvbXBpbGVyIHN0YWNrIGl0ZW0ASXRlbQBfY3R5cGVzIHB5bWVtAF9jdHlwZXMvY2ZpZWxkLmMgcHltZW0AX3Bvc2l4c2htZW0AZnVuY3Rvb2xzLl9scnVfbGlzdF9lbGVtAGdjOiAlemQgdW5jb2xsZWN0YWJsZSBvYmplY3RzIGF0IHNodXRkb3duOyB1c2UgZ2Muc2V0X2RlYnVnKGdjLkRFQlVHX1VOQ09MTEVDVEFCTEUpIHRvIGxpc3QgdGhlbQBsaW4yYWRwY20AbGNtAF9nZGJtAF9kYm0AZ2xJc1Byb2dyYW0AZ2xMaW5rUHJvZ3JhbQBnbERlbGV0ZVByb2dyYW0AZ2xDcmVhdGVQcm9ncmFtAGdsVmFsaWRhdGVQcm9ncmFtAGdsVXNlUHJvZ3JhbQBmcm9tX3BhcmFtAF9fcGhlbGxvX2FsaWFzX18uc3BhbQBfX3BoZWxsb19fLnNwYW0APF9fcGhlbGxvX18uaGFtAGJhc2ljX2lvc3RyZWFtAGJhc2ljX29zdHJlYW0AYmFzaWNfaXN0cmVhbQBpbmNvbXBsZXRlIG9yIHRydW5jYXRlZCBzdHJlYW0ASW52YWxpZCBkYXRhIHN0cmVhbQBTbQBMbQBzdG91bABpbWF0bXVsAGltdWwASnVsAGZjbnRsAF9zc2wAY250cmwAdmdldGFyZ3MxX2ltcGwAcmVwbABzdG9sAGFic190b2wAcmVsX3RvbABhdHRyaWJ1dGUgdmFsdWUgdHlwZSBtdXN0IGJlIGJvb2wAdGhlIHNvY2tldCBwcm90b2NvbAAnJS4yMDBzJyBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbAAnJS4yMDBzJyBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sAHpkaWN0IGFyZ3VtZW50IG11c3Qgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sAGN1cnJlbmN5X3N5bWJvbABpbnRfY3Vycl9zeW1ib2wAaHRvbmwAeG1sAGh0bWwAc3RvdWxsAF9yZWFkX251bGwAbG9jYWxlIGNvbnN0cnVjdGVkIHdpdGggbnVsbABzdG9sbABzZWxlY3QucG9sbABzdHJjb2xsAGluOmtpbGwAb3Mua2lsbAB6ZmlsbAB0ZWxsAHN1cGVyKCk6IGVtcHR5IF9fY2xhc3NfXyBjZWxsAHN1cGVyKCk6IGJhZCBfX2NsYXNzX18gY2VsbABPczppbl9kbGwAX2luc3RhbGwAY29kZTogY29fdmFybmFtZXMgaXMgdG9vIHNtYWxsAGNvbXBpbGVhbGwAZmluZGFsbAB5KnxpOnNlbmRhbGwAcmVhZGFsbAAnJS4yMDBzJyBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCB2ZWN0b3JjYWxsACBpbiBKc01ldGhvZF9WZWN0b3JjYWxsAHJhd19jYWxsAHN0ZDo6YmFkX2Z1bmN0aW9uX2NhbGwAdG90YWwgdGltZSBzcGVudCBpbiB0aGlzIGNhbGwAZnVuY3Rpb24gY2FsbABjYW4ndCBzcGVjaWZ5IGEgdGltZW91dCBmb3IgYSBub24tYmxvY2tpbmcgY2FsbAB0ZWxsaW5nIHBvc2l0aW9uIGRpc2FibGVkIGJ5IG5leHQoKSBjYWxsAGNoYW5uZWxfbGlzdF9hbGwAcmVtb3ZlX2FsbABfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsAGZpZWxkICdmdW5jJyBpcyByZXF1aXJlZCBmb3IgQ2FsbAByZXF1aXJlZCBmaWVsZCAiYXJncyIgbWlzc2luZyBmcm9tIENhbGwAcmVxdWlyZWQgZmllbGQgImtleXdvcmRzIiBtaXNzaW5nIGZyb20gQ2FsbAByZXF1aXJlZCBmaWVsZCAiZnVuYyIgbWlzc2luZyBmcm9tIENhbGwAc2h1dGlsAHBrZ3V0aWwAaW1wb3J0bGliLnV0aWwAQXByaWwAaW5pbABpbnxpaWlsAGRlc3Ryb3lfZ2lsAGRyb3BfZ2lsAGNyZWF0ZV9naWwAdGFrZV9naWwAY2VpbABnbENsZWFyU3RlbmNpbABmX2ZhdmFpbABmX2JhdmFpbAB1bmNvbnN1bWVkX3RhaWwAZW1haWwAbnRvaGwAc3RhY2tsZXZlbAByZWxlYXNlbGV2ZWwAX2N1cnJlbnRfaW5kZW50X2xldmVsAG9wdGltaXphdGlvbl9sZXZlbABtdWx0aXBsZSBlbGVtZW50cyBvbiB0b3AgbGV2ZWwAdW5pbmRlbnQgZG9lcyBub3QgbWF0Y2ggYW55IG91dGVyIGluZGVudGF0aW9uIGxldmVsAEJhZCBjb21wcmVzc2lvbiBsZXZlbABOZWdhdGl2ZSBJbXBvcnRGcm9tIGxldmVsAGltcG9ydCAqIG9ubHkgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwAbm9ubG9jYWwgZGVjbGFyYXRpb24gbm90IGFsbG93ZWQgYXQgbW9kdWxlIGxldmVsAG1lbUxldmVsAGNhbid0IGluaXRpYWxpemUgbXV0ZXggZm9yIG5ldyBjaGFubmVsAHRoZSAncmVjdicgZW5kIG9mIHRoZSBjaGFubmVsAHRoZSAnc2VuZCcgZW5kIG9mIHRoZSBjaGFubmVsAFJlY3ZDaGFubmVsAFNlbmRDaGFubmVsAF9zZXRfc2VudGluZWwAX2N1cnNlc19wYW5lbABweWV4cGF0Lm1vZGVsAGZkZWwAdW5jYW5jZWwAX211c3RfY2FuY2VsAGxhYmVsAGV4cHJfY29udGV4dCA9IExvYWQgfCBTdG9yZSB8IERlbABVbnBhcnNlZEVudGl0eURlY2wAQXR0bGlzdERlY2wARWxlbWVudERlY2wATm90YXRpb25EZWNsAFhtbERlY2wAU3RhcnREb2N0eXBlRGVjbABFbmREb2N0eXBlRGVjbABTdGFydE5hbWVzcGFjZURlY2wARW5kTmFtZXNwYWNlRGVjbABzZXRzd2l0Y2hpbnRlcnZhbABnZXRzd2l0Y2hpbnRlcnZhbABldmFsAGNvbXBhcmVfdG90YWwAb2N0YWwAdG9faW50ZWdyYWwAaW52YWxpZCBkaWdpdCAnJWMnIGluIGJpbmFyeSBsaXRlcmFsAGludmFsaWQgYmluYXJ5IGxpdGVyYWwAaW1hZ2luYXJ5IG51bWJlciByZXF1aXJlZCBpbiBjb21wbGV4IGxpdGVyYWwAcmVhbCBudW1iZXIgcmVxdWlyZWQgaW4gY29tcGxleCBsaXRlcmFsAGRpY3QgbGl0ZXJhbABpbnZhbGlkICVzIGxpdGVyYWwAaW52YWxpZCBkaWdpdCAnJWMnIGluIG9jdGFsIGxpdGVyYWwAaW52YWxpZCBvY3RhbCBsaXRlcmFsAGludmFsaWQgaGV4YWRlY2ltYWwgbGl0ZXJhbABpbnZhbGlkIGRlY2ltYWwgbGl0ZXJhbABzdHJpbmcgbGl0ZXJhbABpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbABpbml0X2ltcG9ydGxpYl9leHRlcm5hbABfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbABwb3NpdGlvbmFsAGJpZGlyZWN0aW9uYWwAUmF0aW9uYWwAX2ZpZWxkc18gaXMgZmluYWwAdG9vcmRpbmFsAGk6ZnJvbW9yZGluYWwAZ2V0c2lnbmFsAHN0cnNpZ25hbAByYWlzZV9zaWduYWwAY29tcGFyZV9zaWduYWwAcHRocmVhZF9jb25kX3NpZ25hbABlcnJubyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzaWduYWwAZXhpdCB2YWx1ZSBvciBzaWduYWwAVW5rbm93biBzaWduYWwAX3NpZ3NlZ3YocmVsZWFzZV9naWw9RmFsc2UpOiByYWlzZSBhIFNJR1NFR1Ygc2lnbmFsAF9zaWdhYnJ0KCk6IHJhaXNlIGEgU0lHQUJSVCBzaWduYWwAX3NpZ2ZwZSgpOiByYWlzZSBhIFNJR0ZQRSBzaWduYWwAaXNfc3Vibm9ybWFsAGRlY2ltYWwuU3Vibm9ybWFsAC1TdWJub3JtYWwAK1N1Ym5vcm1hbABpc19ub3JtYWwALU5vcm1hbAArTm9ybWFsAF9weWRlY2ltYWwAaXNkZWNpbWFsAGhleGFkZWNpbWFsAGNvcHlfZGVjaW1hbABjcmVhdGVfZGVjaW1hbABmb3JtYXQgc3BlY2lmaWNhdGlvbiBleGNlZWRzIGludGVybmFsIGxpbWl0cyBvZiBfZGVjaW1hbABub3QgYSBkZWNpbWFsAGRlY2ltYWwuRGVjaW1hbABhcmd1bWVudCBtdXN0IGJlIGEgRGVjaW1hbABmdW5jdG9vbHMucGFydGlhbABGcm96ZW4gbW9kdWxlcyBhcmUgZGlzYWJsZWQgYW5kIHRoZSBmcm96ZW4gb2JqZWN0IG5hbWVkICVSIGlzIG5vdCBlc3NlbnRpYWwAaW5pdGlhbABmYWN0b3JpYWwAc2VyaWFsAG9iamVjdCB0b28gZGVlcGx5IG5lc3RlZCB0byBtYXJzaGFsAHJlYWwAYW5ub3RhdGVkIG5hbWUgJyVVJyBjYW4ndCBiZSBub25sb2NhbABuYW1lICclVScgaXMgcGFyYW1ldGVyIGFuZCBub25sb2NhbAByZXF1aXJlZCBmaWVsZCAibmFtZXMiIG1pc3NpbmcgZnJvbSBOb25sb2NhbABfdGhyZWFkaW5nX2xvY2FsAF90aHJlYWQuX2xvY2FsAHdlYWtseV9jYW5vbmljYWwAaXNfY2Fub25pY2FsAGFubm90YXRlZCBuYW1lICclVScgY2FuJ3QgYmUgZ2xvYmFsAG5hbWUgJyVVJyBpcyBwYXJhbWV0ZXIgYW5kIGdsb2JhbABuYW1lICclVScgaXMgbm9ubG9jYWwgYW5kIGdsb2JhbABfUHlQYXRoQ29uZmlnX1VwZGF0ZUdsb2JhbAByZXF1aXJlZCBmaWVsZCAibmFtZXMiIG1pc3NpbmcgZnJvbSBHbG9iYWwAWmwAVWwATmwATGwAQGwATyhPTylsAE4oTilsAGFzdGVyaXNrAF91bnJlZ2lzdGVyX3Rhc2sAX3JlZ2lzdGVyX3Rhc2sAX2VudGVyX3Rhc2sAX2xlYXZlX3Rhc2sAdW1hc2sAcHRocmVhZF9zaWdtYXNrAF9hc3luY2lvLlRhc2sAZ2xDb2xvck1hc2sAZ2xTdGVuY2lsTWFzawBnbERlcHRoTWFzawBfZnJhbWV3b3JrAHJlZ2lzdGVyX2F0X2ZvcmsAb3MuZm9yawBmYWlsZWQgdG8gcmVpbml0aWFsaXplIGxvY2sgYXQgZm9yawBmYWlsZWQgcmVsZWFzaW5nIGltcG9ydCBsb2NrIGFmdGVyIGZvcmsAcXVlc3Rpb24tbWFyawBxdW90YXRpb24tbWFyawBleGNsYW1hdGlvbi1tYXJrAGxvc3Qgc3lzLmRpc3BsYXlob29rAF9leGNlcHRob29rAHN5cy5leGNlcHRob29rAGxvc3Qgc3lzLmJyZWFrcG9pbnRob29rAHN5cy5hZGRhdWRpdGhvb2sAY3B5dGhvbi5ydW5faW50ZXJhY3RpdmVob29rAEV4Y2VwdGlvbiBpZ25vcmVkIGluIHN5cy51bnJhaXNhYmxlaG9vawBzZXRvcGVuY29kZWhvb2sAb2JqZWN0X2hvb2sAb2JqZWN0X3BhaXJzX2hvb2sARXhjZXB0aW9uIGlnbm9yZWQgaW4gYXVkaXQgaG9vawBmYWlsZWQgdG8gY2hhbmdlIGV4aXN0aW5nIG9wZW5fY29kZSBob29rAGNodW5rAHVubGluawBzdF9ubGluawBjcmVhdGVfZGlyZWN0b3J5X3N5bWxpbmsAaXNfc3ltbGluawBjcmVhdGVfc3ltbGluawByZWFkX3N5bWxpbmsAb3Muc3ltbGluawByZWFkbGluawBjcmVhdGVfaGFyZF9saW5rAGJsYW5rAGtrAF9jb2RlY3NfaGsAd2VlawBsc2VlawBufGk6c2VlawBwZWVrAHVua25vd24gY2xvY2sAaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGxpbmUgJWQgY29tZXMgYWZ0ZXIgdGhlIGN1cnJlbnQgY29kZSBibG9jawBsaW5lICVkIGNvbWVzIGJlZm9yZSB0aGUgY3VycmVudCBjb2RlIGJsb2NrAGV4cGVjdGVkIGFuIGluZGVudGVkIGJsb2NrACdicmVhaycsICdjb250aW51ZScgYW5kICdyZXR1cm4nIGNhbm5vdCBhcHBlYXIgaW4gYW4gZXhjZXB0KiBibG9jawBleHBlY3RlZCAnZXhjZXB0JyBvciAnZmluYWxseScgYmxvY2sAYWxsb2NhdGVfbG9jawByZWxlYXNlX2xvY2sAYWNxdWlyZV9sb2NrAGxvY2tlZF9sb2NrAF90aHJlYWQubG9jawBmYWlsZWQgdG8gY3JlYXRlIGEgbmV3IGxvY2sAbm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrAENhbid0IHJlaW5pdGlhbGl6ZSBwZW5kaW5nIGNhbGxzIGxvY2sAY2Fubm90IGFsbG9jYXRlIGxvY2sAY2FuJ3QgYWxsb2NhdGUgbG9jawBVbmFibGUgdG8gYWxsb2NhdGUgbG9jawBjb3VsZG4ndCBhY3F1aXJlIGxvY2sAY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jawByZWxlYXNlIHVubG9ja2VkIGxvY2sAY2FuJ3QgYWxsb2NhdGUgcmVhZCBsb2NrAF9QeUltcG9ydF9SZUluaXRMb2NrAFB5RXZhbF9BY3F1aXJlTG9jawBfdGhyZWFkLlJMb2NrAGJhY2t0aWNrAF9hYmNfc3ViY2xhc3NjaGVjawBlcnJjaGVjawBfYWJjX2luc3RhbmNlY2hlY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAF90YXNrX3ByaW50X3N0YWNrAF90YXNrX2dldF9zdGFjawBleHRyYWN0X3N0YWNrAHBvcCBmcm9tIGVtcHR5IHN0YWNrAFB5T2JqZWN0X0dDX1RyYWNrAGl0ZXJfdW5wYWNrAG5lZWQgbW9yZSB0aGFuIDAgdmFsdWVzIHRvIHVucGFjawBuZWVkIG1vcmUgdGhhbiAxIHZhbHVlIHRvIHVucGFjawBidWZmZXJfY2FsbGJhY2sAcmVtb3ZlX2RvbmVfY2FsbGJhY2sAZnV0dXJlX2RvbmVfY2FsbGJhY2sAYWRkX2RvbmVfY2FsbGJhY2sAaW4gYXRleGl0IGNhbGxiYWNrAGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSAlLjIwMHMgaW4gZXJyb3IgY2FsbGJhY2sARnV0dXJlRG9uZUNhbGxiYWNrAGxhc3RfdHJhY2ViYWNrAF9nZXRfb2JqZWN0X3RyYWNlYmFjawB8T2k6ZHVtcF90cmFjZWJhY2sAd2l0aF90cmFjZWJhY2sAX2xvZ190cmFjZWJhY2sAX3NvdXJjZV90cmFjZWJhY2sAZXhjX3RyYWNlYmFjawBFeGNlcHRpb24gdHJhY2ViYWNrAEVycm9yIG9jY3VycmVkIHdoaWxlIGZvcm1hdHRpbmcgdHJhY2ViYWNrAHRocm93KCkgdGhpcmQgYXJndW1lbnQgbXVzdCBiZSBhIHRyYWNlYmFjawBmX2JhY2sAaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2sAZ2JrAGJyZWFrAEJyZWFrAHJlc2V0X3BlYWsAU2sAbmFuagBpbmZqAGRlY29tcHJlc3NvYmoAX29iagBPVXxpAFVPfGkAJXppAHV1aQBmX2xhc3RpAHRiX2xhc3RpAF9tc2kAT3NpAHF1b3ByaQBnbFRleFBhcmFtZXRlcmkARnJpAF93aW5hcGkAc3RvaQBObmkAJWxsaQAlbGkAaWlpaWlpaWlpAE9PT2lpaWlpaQBPT2lpaQBpc2FzY2lpAGJpbmFzY2lpAHVzX2FzY2lpAGVuY29kZV9iYXNlc3RyaW5nX2FzY2lpAGxlZ2FjeSBhc2NpaQBPT2lpAGhpAGNnaQBnbFBpeGVsU3RvcmVpAFBpAE9PT09pAE5pAGlJSWkAT0lJaQBAaQBnbFVuaWZvcm00aQBnbFVuaWZvcm0zaQBnbFVuaWZvcm0yaQBnbFVuaWZvcm0xaQAtaQBtb2R1bGUgJXMgaW5pdGlhbGl6ZWQgd2l0aCB1bmtub3duIHNsb3QgJWkAX2FyZ3R5cGVzXyBoYXMgdG9vIG1hbnkgYXJndW1lbnRzICglemkpLCBtYXhpbXVtIGlzICVpACVzOiBsaW5lICVpLCBjb2x1bW4gJWkAY2FuJ3QgcGlja2xlIGdsb2JhbCBpZGVudGlmaWVyICclUycgdXNpbmcgcGlja2xlIHByb3RvY29sICVpAGNhbid0IHBpY2tsZSBtb2R1bGUgaWRlbnRpZmllciAnJVMnIHVzaW5nIHBpY2tsZSBwcm90b2NvbCAlaQBwcm9jZXNzIHN0b3BwZWQgYnkgZGVsaXZlcnkgb2Ygc2lnbmFsICVpAG1vZHVsZSAlcyB1c2VzIHVua25vd24gc2xvdCBJRCAlaQBpbnZhbGlkIHdhaXQgc3RhdHVzOiAlaQBpaWl8aWlpaU8kaQBPIWkAdHJ1dGgASW50ZXJuYWwgZXJyb3Igb2NjdXJyZWQgaW4gcHl0aG9uMmpzX3dpdGhfZGVwdGgAc2V0X2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmdfZGVwdGgAZ2V0X2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmdfZGVwdGgAbm9kZV9kZXB0aAB1dGltZTogeW91IG1heSBzcGVjaWZ5IGVpdGhlciAndGltZXMnIG9yICducycgYnV0IG5vdCBib3RoAGRheSBpcyBvdXQgb2YgcmFuZ2UgZm9yIG1vbnRoAHN0YXJ0c3dpdGgAZW5kc3dpdGgAcmVxdWlyZWQgZmllbGQgImJvZHkiIG1pc3NpbmcgZnJvbSBBc3luY1dpdGgAcmVxdWlyZWQgZmllbGQgIml0ZW1zIiBtaXNzaW5nIGZyb20gQXN5bmNXaXRoAHJlcXVpcmVkIGZpZWxkICJib2R5IiBtaXNzaW5nIGZyb20gV2l0aAByZXF1aXJlZCBmaWVsZCAiaXRlbXMiIG1pc3NpbmcgZnJvbSBXaXRoAG1heF9sZW5ndGgAYmFkX2FycmF5X25ld19sZW5ndGgAYml0X2xlbmd0aABjb21wYWN0LT53c3RyX2xlbmd0aCA9PSBhc2NpaS0+bGVuZ3RoAGNvbXBhY3QtPnV0ZjhfbGVuZ3RoID09IGFzY2lpLT5sZW5ndGgAaW52YWxpZCBhbmNpbGxhcnkgZGF0YSBidWZmZXIgbGVuZ3RoAHRoZSBmaXJzdCB0d28gbWFrZXRyYW5zIGFyZ3VtZW50cyBtdXN0IGhhdmUgZXF1YWwgbGVuZ3RoAG1ha2V0cmFucyBhcmd1bWVudHMgbXVzdCBoYXZlIHNhbWUgbGVuZ3RoAG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgbGVuZ3RoAGNsYXNzbWV0aABzdGF0aWNtZXRoAGVhc3RfYXNpYW5fd2lkdGgAZ2xMaW5lV2lkdGgAem9uZWluZm8uX3R6cGF0aABwb3NpeHBhdGgAbnRwYXRoAHB5X3NldHBhdGgAZnNwYXRoAGNvbmZpZ19ydW5fZmlsZW5hbWVfYWJzcGF0aABqb2lucGF0aABfcGF0aF9ub3JtcGF0aAByZWFscGF0aABnZW5lcmljcGF0aAB0ZW1wX2RpcmVjdG9yeV9wYXRoAGN1cnJlbnRfcGF0aABzYWZlX3BhdGgAbWV0YV9wYXRoAG50dXJsMnBhdGgAdW5hYmxlIHRvIGdldCBzeXMucGF0aABjYW4ndCBwcmVwZW5kIHBhdGgwIHRvIHN5cy5wYXRoAGNhbid0IGFzc2lnbiBzeXMucGF0aABjYW4ndCBjcmVhdGUgc3lzLnBhdGgAb3MucGF0aABlcnJvciBldmFsdWF0aW5nIHBhdGgAJXM6IGNhbid0IHNwZWNpZnkgZGlyX2ZkIHdpdGhvdXQgbWF0Y2hpbmcgcGF0aABtb2R1bGUgcGF0aABmYWlsZWQgdG8gZGV0ZXJtaW5lIGF0dHJpYnV0ZXMgZm9yIHRoZSBzcGVjaWZpZWQgcGF0aABjbWF0aAB4bWwuZXRyZWUuRWxlbWVudFBhdGgAUHlfU2V0UGF0aABQeVN5c19TZXRQYXRoAF9QeV9TZXRQcm9ncmFtRnVsbFBhdGgAaGVhcHB1c2gAfG5uOmZsdXNoAGdsRmx1c2gAYWNvc2gAZ2xGaW5pc2gAZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0IGNhbm5vdCBpbmNsdWRlIGEgYmFja3NsYXNoAHNvdXJjZV9oYXNoAGVudHJ5LT5tZV9oYXNoID09IGhhc2gAZ3JhcGgAYXNpbmgAYXRhbmgAd3JpdGVfdGhyb3VnaABjYWxsIHN0YWNrIGlzIG5vdCBkZWVwIGVub3VnaABsaWJyYXJ5IHZlcnNpb24gbWlzbWF0Y2gAaGVhZGVyIGNyYyBtaXNtYXRjaABmbm1hdGNoAGZ1bGxtYXRjaABjYXRjaAByZS5NYXRjaABmaWVsZCAnc3ViamVjdCcgaXMgcmVxdWlyZWQgZm9yIE1hdGNoAHJlcXVpcmVkIGZpZWxkICJzdWJqZWN0IiBtaXNzaW5nIGZyb20gTWF0Y2gAcmVxdWlyZWQgZmllbGQgImNhc2VzIiBtaXNzaW5nIGZyb20gTWF0Y2gAX211bHRpYXJjaABzZWFyY2gATWFyY2gAYmVuY2gAd2hpY2gAZGV0YWNoACVkICVzcyAqICV6ZCBieXRlcyBlYWNoAEBoAC9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2luY2x1ZGUvcHl0aG9uMy4xMS9jcHl0aG9uL2J5dGVzb2JqZWN0LmgAL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvaW5jbHVkZS9weXRob24zLjExL2NweXRob24vdHVwbGVvYmplY3QuaAAvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9pbmNsdWRlL3B5dGhvbjMuMTEvY3B5dGhvbi91bmljb2Rlb2JqZWN0LmgAL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvaW5jbHVkZS9weXRob24zLjExL2NweXRob24vYWJzdHJhY3QuaAAuL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgAZ2V0bG9hZGF2ZwBzZXRfZGVidWcAZ2V0X2RlYnVnAHBhcnNlcl9kZWJ1ZwBtYWxsb2NfZGVidWcAQXVnAG58bmk6cmVjdm1zZwBPfE9pTzpzZW5kbXNnAHNvY2tldC5zZW5kbXNnAGVycl9tc2cAZXhjZXB0aW9uIG1zZwBfUHlFcnJfV3JpdGVVbnJhaXNhYmxlTXNnAGt3YXJnAHZhcmFyZwBfdmFybmFtZV9mcm9tX29wYXJnAGludmFsaWQgb3Bjb2RlIG9yIG9wYXJnAGJhZCBSQUlTRV9WQVJBUkdTIG9wYXJnAGZpZWxkICdhcmcnIGlzIHJlcXVpcmVkIGZvciBhcmcAcmVxdWlyZWQgZmllbGQgImNvbF9vZmZzZXQiIG1pc3NpbmcgZnJvbSBhcmcAcmVxdWlyZWQgZmllbGQgImxpbmVubyIgbWlzc2luZyBmcm9tIGFyZwByZXF1aXJlZCBmaWVsZCAiYXJnIiBtaXNzaW5nIGZyb20gYXJnAGJhZCB0emluZm8gc3RhdGUgYXJnAF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPbmVBcmcAaWk6a2lsbHBnAG9zLmtpbGxwZwBzeXNsb2cAT086bG9nAGdsR2V0U2hhZGVySW5mb0xvZwBnbEdldFByb2dyYW1JbmZvTG9nAHRyYW5zbGF0aW9uIHRhYmxlIG11c3QgYmUgMjU2IGNoYXJhY3RlcnMgbG9uZwBUaGUgZmlsbCBjaGFyYWN0ZXIgbXVzdCBiZSBleGFjdGx5IG9uZSBjaGFyYWN0ZXIgbG9uZwBpbnB1dDogaW5wdXQgdG9vIGxvbmcAcmVzdWx0IHRvbyBsb25nAGpvaW4oKSByZXN1bHQgaXMgdG9vIGxvbmcAcmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZwBuZXcgc3RyaW5nIGlzIHRvbyBsb25nAGJ5dGUgc3RyaW5nIGlzIHRvbyBsb25nAHJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nAHJlcGVhdGVkIHN0cmluZyBpcyB0b28gbG9uZwBwYWRkZWQgc3RyaW5nIGlzIHRvbyBsb25nAHN0cmluZyB0byBwYXJzZSBpcyB0b28gbG9uZwBieXRlIHN0cmluZyB0b28gbG9uZwB0b3RhbCBzdHJ1Y3Qgc2l6ZSB0b28gbG9uZwByZXBlYXRlZCBieXRlcyBhcmUgdG9vIGxvbmcAaW5wdXQgbGluZSB0b28gbG9uZwBuYW1lIHRvbyBsb25nAGNvbnRyb2wgbWVzc2FnZSB0b28gbG9uZwB1bnNpZ25lZCBsb25nIGxvbmcAUHl0aG9uIGludCB0b28gbGFyZ2UgdG8gY29udmVydCB0byBDIHVuc2lnbmVkIGxvbmcAUHl0aG9uIGludCB0b28gbGFyZ2UgdG8gY29udmVydCB0byBDIGxvbmcAaXNfZmluYWxpemluZwBwcmVpbml0aWFsaXppbmcAJyUuMjAwcycgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgaW5kZXhpbmcAYXN5bmMgZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nAHJlZ3VsYXIgZXhwcmVzc2lvbiBzY2FubmVyIGFscmVhZHkgZXhlY3V0aW5nAGNvcm91dGluZSBhbHJlYWR5IGV4ZWN1dGluZwB1bnN1cHBvcnRlZCBsb2NhbGUgc2V0dGluZwBub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmcAbm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBzdHJpbmcgZm9ybWF0dGluZwBxdW90aW5nAHdyaXRpbmcAbW9kdWxlIGZpbGVuYW1lIG1pc3NpbmcAcmVxdWlyZWQgYXJndW1lbnQgJyVTJyBtaXNzaW5nAF9tdWx0aXByb2Nlc3NpbmcAdW5leHBlY3RlZCBFT0Ygd2hpbGUgcGFyc2luZwBTZXRQYXJhbUVudGl0eVBhcnNpbmcAdGhyZWFkIHN0YXRlICVwIG11c3QgYmUgY3VycmVudCB3aGVuIHJlbGVhc2luZwBPbnxpOnNjYW5zdHJpbmcAZW5jb2RlX2Jhc2VzdHJpbmcAZ2V0X2NtZXRoX2RvY3N0cmluZwBfcHlvZGlkZS5kb2NzdHJpbmcAY29uZmlnX3NldF9ieXRlc19zdHJpbmcAfHM6dG9fc3RyaW5nAE9VfE86cnVuX3N0cmluZwB0b19zY2lfc3RyaW5nAHRvX2VuZ19zdHJpbmcAYmFzaWNfc3RyaW5nAG9iamVjdC5yZWFkbGluZSgpIHJldHVybmVkIG5vbi1zdHJpbmcAdW5rbm93biBleHByZXNzaW9uIGtpbmQgaW5zaWRlIGYtc3RyaW5nAGRvbWFpbiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZwBpbnZhbGlkIGhleGFkZWNpbWFsIGZsb2F0aW5nLXBvaW50IHN0cmluZwB0b28gbWFueSB0dXBsZSBuZXN0aW5nIGxldmVscyBpbiBhcmd1bWVudCBmb3JtYXQgc3RyaW5nAHN0cnVjdCBmb3JtYXQgc3RyaW5nAG5vdCBlbm91Z2ggYXJndW1lbnRzIGZvciBmb3JtYXQgc3RyaW5nAFRvbyBtYW55IGRlY2ltYWwgZGlnaXRzIGluIGZvcm1hdCBzdHJpbmcAVW5tYXRjaGVkIHJpZ2h0IHBhcmVuIGluIGZvcm1hdCBzdHJpbmcAVW5tYXRjaGVkIGxlZnQgcGFyZW4gaW4gZm9ybWF0IHN0cmluZwBFbXB0eSBhdHRyaWJ1dGUgaW4gZm9ybWF0IHN0cmluZwBTaW5nbGUgJ30nIGVuY291bnRlcmVkIGluIGZvcm1hdCBzdHJpbmcAU2luZ2xlICd7JyBlbmNvdW50ZXJlZCBpbiBmb3JtYXQgc3RyaW5nAE1pc3NpbmcgJ10nIGluIGZvcm1hdCBzdHJpbmcAaW52YWxpZCBmb3JtYXQgc3RyaW5nAHBhcnNlIHRoZSBhcmd1bWVudCBhcyBhIGZvcm1hdCBzdHJpbmcAaW52YWxpZCBsZW5ndGggb2YgcGFja2VkIElQIGFkZHJlc3Mgc3RyaW5nAGFyZyAzIChuYW1lKSBtdXN0IGJlIE5vbmUgb3Igc3RyaW5nACIlcyIgbXVzdCBiZSBhIDEtY2hhcmFjdGVyIHN0cmluZwAiZGVsaW1pdGVyIiBtdXN0IGJlIGEgMS1jaGFyYWN0ZXIgc3RyaW5nAHN0cmluZyB0b28gbG9uZyBmb3IgUHl0aG9uIHN0cmluZwBlbmNvZGVkIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nAGpvaW4oKSByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZwBUcmFpbGluZyBcIGluIHN0cmluZwBPZGQtbGVuZ3RoIHN0cmluZwBcIGF0IGVuZCBvZiBzdHJpbmcAZXhwZWN0ZWQgJ30nIGJlZm9yZSBlbmQgb2Ygc3RyaW5nAGYtc3RyaW5nOiB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAIHdoaWxlIGRlY29kaW5nIGEgSlNPTiBhcnJheSBmcm9tIGEgdW5pY29kZSBzdHJpbmcAIHdoaWxlIGRlY29kaW5nIGEgSlNPTiBvYmplY3QgZnJvbSBhIHVuaWNvZGUgc3RyaW5nAGNhbm5vdCBkZWNvZGUgc3RyaW5nAENvbXBhcmlzb24gYmV0d2VlbiBieXRlYXJyYXkgYW5kIHN0cmluZwBDb21wYXJpc29uIGJldHdlZW4gYnl0ZXMgYW5kIHN0cmluZwBmLXN0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZwBjb21wbGV4KCkgYXJnIGlzIGEgbWFsZm9ybWVkIHN0cmluZwBfX2J1aWxkX2NsYXNzX186IG5hbWUgaXMgbm90IGEgc3RyaW5nAGNvbXBsZXgoKSBjYW4ndCB0YWtlIHNlY29uZCBhcmcgaWYgZmlyc3QgaXMgYSBzdHJpbmcAdHpuYW1lLnJlcGxhY2UoKSBkaWQgbm90IHJldHVybiBhIHN0cmluZwBfX3NwZWNfXy5wYXJlbnQgbXVzdCBiZSBhIHN0cmluZwBlcnJvcnMgbXVzdCBiZSBhIHN0cmluZwBzcGVjLm5hbWUgbXVzdCBiZSBhIHN0cmluZwBkaWFsZWN0IG5hbWUgbXVzdCBiZSBhIHN0cmluZwBhdHRyaWJ1dGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nAG1vZHVsZSBuYW1lIG11c3QgYmUgYSBzdHJpbmcAbWV0aG9kIG5hbWUgbXVzdCBiZSBhIHN0cmluZwBwYWNrYWdlIG11c3QgYmUgYSBzdHJpbmcAX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZwAiJXMiIG11c3QgYmUgYSBzdHJpbmcAY29tcGxleCgpIHNlY29uZCBhcmcgY2FuJ3QgYmUgYSBzdHJpbmcAUHlDb25maWdfU2V0U3RyaW5nAGdsR2V0U3RyaW5nAEVycm9yU3RyaW5nAG51bGwgZmlsZSBmb3IgUHlGaWxlX1dyaXRlU3RyaW5nAGxpbmVfYnVmZmVyaW5nAGNhbm5vdCBzd2l0Y2ggZnJvbSBtYW51YWwgZmllbGQgc3BlY2lmaWNhdGlvbiB0byBhdXRvbWF0aWMgZmllbGQgbnVtYmVyaW5nAGNvdWxkIG5vdCByZWdpc3RlciBpbnQgZm9yIGNyb3NzLWludGVycHJldGVyIHNoYXJpbmcAY291bGQgbm90IHJlZ2lzdGVyIGJ5dGVzIGZvciBjcm9zcy1pbnRlcnByZXRlciBzaGFyaW5nAGNvdWxkIG5vdCByZWdpc3RlciBzdHIgZm9yIGNyb3NzLWludGVycHJldGVyIHNoYXJpbmcAY291bGQgbm90IHJlZ2lzdGVyIE5vbmUgZm9yIGNyb3NzLWludGVycHJldGVyIHNoYXJpbmcAX3R5cGluZwBtb25fZ3JvdXBpbmcAQ291bGRuJ3QgY3JlYXRlIGF1dG9UU1NrZXkgbWFwcGluZwAnJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgbWFwcGluZwAlLjIwMHMgaXMgbm90IGEgbWFwcGluZwBmb3JtYXQgcmVxdWlyZXMgYSBtYXBwaW5nAGxvY2FscyBtdXN0IGJlIGEgbWFwcGluZwByZXF1aXJlZCBmaWVsZCAia2V5cyIgbWlzc2luZyBmcm9tIE1hdGNoTWFwcGluZwByZXF1aXJlZCBmaWVsZCAicGF0dGVybnMiIG1pc3NpbmcgZnJvbSBNYXRjaE1hcHBpbmcATXV0YWJsZU1hcHBpbmcAYnl0ZXNfd2FybmluZwBTeW50YXhXYXJuaW5nAEltcG9ydFdhcm5pbmcAQnl0ZXNXYXJuaW5nAFVzZXJXYXJuaW5nAFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcARW5jb2RpbmdXYXJuaW5nAEZ1dHVyZVdhcm5pbmcAUnVudGltZVdhcm5pbmcAVW5pY29kZVdhcm5pbmcAUmVzb3VyY2VXYXJuaW5nAE86aXNfcnVubmluZwBjcl9ydW5uaW5nAGdpX3J1bm5pbmcAYWdfcnVubmluZwBhdGhyb3coKTogYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmcAYW5leHQoKTogYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmcAYWNsb3NlKCk6IGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nAGludGVycHJldGVyIGFscmVhZHkgcnVubmluZwBjb21iaW5pbmcAY2FuY2VsbGluZwBtZW1vcnkgd2FzIGV4aGF1c3RlZCB3aGlsZSBwcm9maWxpbmcAZXJyb3JfaGFuZGxpbmcAc2V0YmxvY2tpbmcAZ2V0YmxvY2tpbmcAc2V0X2Jsb2NraW5nAGdldF9ibG9ja2luZwBfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcAd3JpdGUgY291bGQgbm90IGNvbXBsZXRlIHdpdGhvdXQgYmxvY2tpbmcAcG9zaXRpb25hbCBhcmd1bWVudCBmb2xsb3dzIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nAGl0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZyBmb2xsb3dzIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nAHdoaWxlIGZsdXNoaW5nAFN0cmluZ3MgbXVzdCBiZSBlbmNvZGVkIGJlZm9yZSBoYXNoaW5nAGxvZ2dpbmcAZ2V0ZGVmYXVsdGVuY29kaW5nAGdldGVuY29kaW5nAGdldGZpbGVzeXN0ZW1lbmNvZGluZwB0ZXh0X2VuY29kaW5nAC1YIHdhcm5fZGVmYXVsdF9lbmNvZGluZwBpbml0X2ZzX2VuY29kaW5nAGNvbmZpZ19pbml0X3N0ZGlvX2VuY29kaW5nAGZpbGVzeXN0ZW1fZW5jb2RpbmcAbmF0aXZlX2VuY29kaW5nAGNvbmZpZ19nZXRfbG9jYWxlX2VuY29kaW5nAGRldmljZV9lbmNvZGluZwBmYWlsZWQgdG8gZ2V0IHRoZSBQeXRob24gY29kZWMgbmFtZSBvZiB0aGUgc3RkaW8gZW5jb2RpbmcAdW5rbm93biBlbmNvZGluZwBleGNlcHRpb24gZW5jb2RpbmcAc3RyaW5nIGFyZ3VtZW50IHdpdGhvdXQgYW4gZW5jb2RpbmcAZmFpbGVkIHRvIGdldCB0aGUgUHl0aG9uIGNvZGVjIG9mIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nAGlsbGVnYWwgZW5jb2RpbmcAbm8gY29kZWMgc2VhcmNoIGZ1bmN0aW9ucyByZWdpc3RlcmVkOiBjYW4ndCBmaW5kIGVuY29kaW5nAFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QoKSBpcyBkZXByZWNhdGVkOyB1c2UgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIHRvIGVuY29kZSBmcm9tIHN0ciB0byBieXRlcyBvciBQeUNvZGVjX0VuY29kZSgpIGZvciBnZW5lcmljIGVuY29kaW5nAFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcAUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZwBjYW5ub3QgZGVjb2RlIF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nAGRlY29kaW5nAHVuZXhwZWN0ZWQgZXJyb3Igd2hlbiByb3VuZGluZwBzaWdwZW5kaW5nAF9sb2dfZGVzdHJveV9wZW5kaW5nAGV2YWxfZnJhbWVfaGFuZGxlX3BlbmRpbmcASW5jb3JyZWN0IHBhZGRpbmcARXhjZXNzIGRhdGEgYWZ0ZXIgcGFkZGluZwB0aHJlYWRpbmcAaXNfdHJhY2luZwBjYWxsX3RyYWNpbmcAc3lzY29uZmlnAGdsb2JhbF9jb25maWcAcHJlX2NvbmZpZwBmYWlsZWQgdG8gdXBkYXRlIHRoZSBQeXRob24gY29uZmlnAFB5X0luaXRpYWxpemVGcm9tQ29uZmlnAG1hbnRfZGlnAHByZWNpc2lvbiB0b28gYmlnAHdpZHRoIHRvbyBiaWcAcHJlYyB0b28gYmlnAGNvcHlyZWcAd2lucmVnAG5lZwBjYWNoZV90YWcAbWlzbWF0Y2hlZCB0YWcAaW1hZwBtYXhfbWFnAG1pbl9tYWcAY29tcGFyZV90b3RhbF9tYWcAZl9mbGFnAHR5cGUgJXMgaGFzIHRoZSBQeV9UUEZMQUdTX01BTkFHRURfRElDVCBmbGFnIGJ1dCBub3QgUHlfVFBGTEFHU19IRUFQVFlQRSBmbGFnAGF0dGVtcHRpbmcgdG8gY3JlYXRlIFB5Q0Z1bmN0aW9uIHdpdGggY2xhc3MgYnV0IG5vIE1FVEhfTUVUSE9EIGZsYWcAUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnAFB5X1F1aWV0RmxhZwBQeV9JbnNwZWN0RmxhZwBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnAFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZwBQeV9Gcm96ZW5GbGFnAFB5X0RlYnVnRmxhZwBQeV9CeXRlc1dhcm5pbmdGbGFnAFB5X09wdGltaXplRmxhZwBQeV9JbnRlcmFjdGl2ZUZsYWcAUHlfTm9TaXRlRmxhZwBQeV9WZXJib3NlRmxhZwBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcAUHlfSXNvbGF0ZWRGbGFnACUuKmcAZ2xUZXhQYXJhbWV0ZXJmAHN0b2YAY3R5cGVzLmFkZHJlc3NvZgBfbHNwcm9mAE98TzpnZXRzaXplb2YAdHlwZW9mAF9fdXVpZG9mAGluIHRwX2NsZWFyIG9mAHN5c2NvbmYAZnBhdGhjb25mAC9ldGMvcmVzb2x2LmNvbmYAaXNpbmYAX19pbnZlcnRfXygkc2VsZiwgLykKLS0KCn5zZWxmAFN0cnVjdHVyZSBvciB1bmlvbiBjYW5ub3QgY29udGFpbiBpdHNlbGYAX19uZWdfXygkc2VsZiwgLykKLS0KCi1zZWxmAF9fcG9zX18oJHNlbGYsIC8pCi0tCgorc2VsZgBmcm9tdXRjOiBkdC50emluZm8gaXMgbm90IHNlbGYAaGFsZgBvcy5sb2NrZgBlbGlmAGdsQ2xlYXJEZXB0aGYAc21hbGwgc3RyaW5nIG9wdGltaXphdGlvbiBjdXRvZmYAdG1fZ210b2ZmAG1heGNoYXIgPD0gMHgxMGZmZmYAYnlyZWYAX3JlbW92ZV9kZWFkX3dlYWtyZWYAbm90IGEgd2Vha3JlZgB3c2dpcmVmAGdsRGVwdGhSYW5nZWYAbW9kdWxlZGVmADAxMjM0NTY3ODlhYmNkZWYAQ2Fubm90IGhhdmUgdHdvIHR5cGUgY29tbWVudHMgb24gZGVmAEV4dGVybmFsRW50aXR5UmVmAGZpZWxkICduYW1lJyBpcyByZXF1aXJlZCBmb3IgQ2xhc3NEZWYAcmVxdWlyZWQgZmllbGQgImJvZHkiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZgByZXF1aXJlZCBmaWVsZCAiZGVjb3JhdG9yX2xpc3QiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZgByZXF1aXJlZCBmaWVsZCAiYmFzZXMiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZgByZXF1aXJlZCBmaWVsZCAia2V5d29yZHMiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZgByZXF1aXJlZCBmaWVsZCAibmFtZSIgbWlzc2luZyBmcm9tIENsYXNzRGVmAGZpZWxkICdhcmdzJyBpcyByZXF1aXJlZCBmb3IgQXN5bmNGdW5jdGlvbkRlZgBmaWVsZCAnbmFtZScgaXMgcmVxdWlyZWQgZm9yIEFzeW5jRnVuY3Rpb25EZWYAcmVxdWlyZWQgZmllbGQgImJvZHkiIG1pc3NpbmcgZnJvbSBBc3luY0Z1bmN0aW9uRGVmAHJlcXVpcmVkIGZpZWxkICJkZWNvcmF0b3JfbGlzdCIgbWlzc2luZyBmcm9tIEFzeW5jRnVuY3Rpb25EZWYAcmVxdWlyZWQgZmllbGQgImFyZ3MiIG1pc3NpbmcgZnJvbSBBc3luY0Z1bmN0aW9uRGVmAHJlcXVpcmVkIGZpZWxkICJuYW1lIiBtaXNzaW5nIGZyb20gQXN5bmNGdW5jdGlvbkRlZgBmaWVsZCAnYXJncycgaXMgcmVxdWlyZWQgZm9yIEZ1bmN0aW9uRGVmAGZpZWxkICduYW1lJyBpcyByZXF1aXJlZCBmb3IgRnVuY3Rpb25EZWYAcmVxdWlyZWQgZmllbGQgImJvZHkiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZgByZXF1aXJlZCBmaWVsZCAiZGVjb3JhdG9yX2xpc3QiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZgByZXF1aXJlZCBmaWVsZCAiYXJncyIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmAHJlcXVpcmVkIGZpZWxkICJuYW1lIiBtaXNzaW5nIGZyb20gRnVuY3Rpb25EZWYAaW5pdGlhbGl6YXRpb24gb2YgJXMgZGlkIG5vdCByZXR1cm4gUHlNb2R1bGVEZWYAbW9kZgBfbm9ybWFsX2Rpc3RfaW52X2NkZgAlYWYAUGYAaW5kZXhPZgBjb3VudE9mACUuMExmACVMZgBmaWVsZCAndGVzdCcgaXMgcmVxdWlyZWQgZm9yIElmAHJlcXVpcmVkIGZpZWxkICJib2R5IiBtaXNzaW5nIGZyb20gSWYAcmVxdWlyZWQgZmllbGQgInRlc3QiIG1pc3NpbmcgZnJvbSBJZgByZXF1aXJlZCBmaWVsZCAib3JlbHNlIiBtaXNzaW5nIGZyb20gSWYAQ2YAQGYAZ2xVbmlmb3JtNGYAZ2xWZXJ0ZXhBdHRyaWI0ZgBnbFVuaWZvcm0zZgBnbFZlcnRleEF0dHJpYjNmAGdsVW5pZm9ybTJmAGdsVmVydGV4QXR0cmliMmYAZ2xVbmlmb3JtMWYAZ2xWZXJ0ZXhBdHRyaWIxZgAlKi4qZgAlLipmACVmAHN0YWNrIHRvIGRlZXAgdG8gYW5hbHl6ZQBzdGFjayBpcyB0b28gZGVlcCB0byBhbmFseXplAGludGVybmFsIGVycm9yIGluIGRlY19tcGRfcXF1YW50aXplAG1heHNpemUAZl9mcnNpemUAcXNpemUAbWVtb3J5dmlldzogbGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIGl0ZW1zaXplAHN0X2Jsa3NpemUAY29fc3RhY2tzaXplAGJ1ZnNpemUAT246cmVzaXplAGdldGNvZGVzaXplAGNhbGNzaXplAHRhYnNpemUAZl9ic2l6ZQBkaWdlc3Rfc2l6ZQBpbm5lcl9zaXplAGJ1ZmZlcl9zaXplAG9zLnRlcm1pbmFsX3NpemUAYmxvY2tfc2l6ZQB8bjpzdGFja19zaXplAGxlYWZfc2l6ZQBmaWxlX3NpemUAaW52YWxpZCB3aW5kb3cgc2l6ZQBpbmRleCBleGNlZWRzIEMgaW50ZWdlciBzaXplAGNvdW50IGV4Y2VlZHMgQyBpbnRlZ2VyIHNpemUAbWVtb3J5dmlldzogcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBidWZmZXIgc2l6ZQB0aGlzIHR5cGUgaGFzIG5vIHNpemUAZGVxdWUgYWxyZWFkeSBhdCBpdHMgbWF4aW11bSBzaXplAGJ5dGVzIGxlbmd0aCBub3QgYSBtdWx0aXBsZSBvZiBpdGVtIHNpemUAc3RyaW5nIGxlbmd0aCBub3QgYSBtdWx0aXBsZSBvZiBpdGVtIHNpemUAbW1hcCBzbGljZSBhc3NpZ25tZW50IGlzIHdyb25nIHNpemUAc3RhdGUgdmVjdG9yIGlzIHRoZSB3cm9uZyBzaXplAGludmFsaWQgYnVmZmVyaW5nIHNpemUAcmVhZGludG8oKSByZXR1cm5lZCBuZWdhdGl2ZSBzaXplAENhbiBvbmx5IGFzc2lnbiBzZXF1ZW5jZSBvZiBzYW1lIHNpemUAU2FtcGxlcyBzaG91bGQgYmUgc2FtZSBzaXplAG1tYXAgb2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiBmaWxlIHNpemUAbW1hcCBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIGZpbGUgc2l6ZQBfdG9rZW5pemUAb3B0aW1pemUAY2FwaXRhbGl6ZQBub3JtYWxpemUATmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUATmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQBOZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUAdW5mcmVlemUAb3MucmVtb3ZlAG5ubjptb3ZlAF9yZXNvbHZlAHNoZWx2ZQBfY29fY29kZV9hZGFwdGl2ZQBzd2l0Y2ggaW50ZXJ2YWwgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZQBidWZmZXIgc2l6ZSBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlAG1lbW9yeSBtYXBwZWQgb2Zmc2V0IG11c3QgYmUgcG9zaXRpdmUAbWVtb3J5IG1hcHBlZCBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZQBzaXplIG11c3QgYmUgcG9zaXRpdmUAdGltZW91dCB2YWx1ZSBtdXN0IGJlIHBvc2l0aXZlAGludGVyYWN0aXZlAHJlcXVpcmVkIGZpZWxkICJib2R5IiBtaXNzaW5nIGZyb20gSW50ZXJhY3RpdmUAaXNxcnQoKSBhcmd1bWVudCBtdXN0IGJlIG5vbm5lZ2F0aXZlAHRpbWVvdXQgbXVzdCBiZSBub24tbmVnYXRpdmUAbGVuZ3RoIGFyZ3VtZW50IG11c3QgYmUgbm9uLW5lZ2F0aXZlAG51bWJlciBvZiBiaXRzIG11c3QgYmUgbm9uLW5lZ2F0aXZlAHRvbGVyYW5jZXMgbXVzdCBiZSBub24tbmVnYXRpdmUAciBtdXN0IGJlIG5vbi1uZWdhdGl2ZQBsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZQBtYXhsZW4gbXVzdCBiZSBub24tbmVnYXRpdmUAbWF4X2xlbmd0aCBtdXN0IGJlIG5vbi1uZWdhdGl2ZQBzbGVlcCBsZW5ndGggbXVzdCBiZSBub24tbmVnYXRpdmUAYnVmc2l6ZSBtdXN0IGJlIG5vbi1uZWdhdGl2ZQBsZW5ndGglcyBvZiBvYmplY3QgaXMgbmVnYXRpdmUAaG93X21hbnkgY2Fubm90IGJlIG5lZ2F0aXZlAGlkeCBjYW5ub3QgYmUgbmVnYXRpdmUAcmVwZWF0IGFyZ3VtZW50IGNhbm5vdCBiZSBuZWdhdGl2ZQBvZmZzZXQgY2Fubm90IGJlIG5lZ2F0aXZlAGdlbmVyYXRpb24gcGFyYW1ldGVyIGNhbm5vdCBiZSBuZWdhdGl2ZQBwb3NpdGlvbiB2YWx1ZSBjYW5ub3QgYmUgbmVnYXRpdmUAY29kZToga3dvbmx5YXJnY291bnQgbXVzdCBub3QgYmUgbmVnYXRpdmUAY29kZTogcG9zb25seWFyZ2NvdW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlAGNvZGU6IGFyZ2NvdW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlAGNvZGU6IG5sb2NhbHMgbXVzdCBub3QgYmUgbmVnYXRpdmUAVGhlICdfbGVuZ3RoXycgYXR0cmlidXRlIG11c3Qgbm90IGJlIG5lZ2F0aXZlAGxlbmd0aCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlACBpbiBleGNlcHRpb25ncm91cF9zcGxpdF9yZWN1cnNpdmUAZGVyaXZlAGZpdmUAZXhlY3ZlAHdhdmUAX3JlbGVhc2Vfc2F2ZQB0cnVlAFRydWUAfE9POmRlcXVlAGNvbGxlY3Rpb25zLmRlcXVlAHBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlAGNhbiBvbmx5IGNvbmNhdGVuYXRlIGRlcXVlIChub3QgIiUuMjAwcyIpIHRvIGRlcXVlACVSIGlzIG5vdCBpbiBkZXF1ZQA8c3RkaW4+IGlzIGEgZGlyZWN0b3J5LCBjYW5ub3QgY29udGludWUAc3RtdCA9IEZ1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zLCBzdHJpbmc/IHR5cGVfY29tbWVudCkKICAgICB8IEFzeW5jRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywgc3RtdCogYm9keSwgZXhwciogZGVjb3JhdG9yX2xpc3QsIGV4cHI/IHJldHVybnMsIHN0cmluZz8gdHlwZV9jb21tZW50KQogICAgIHwgQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCBleHByKiBiYXNlcywga2V5d29yZCoga2V5d29yZHMsIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0KQogICAgIHwgUmV0dXJuKGV4cHI/IHZhbHVlKQogICAgIHwgRGVsZXRlKGV4cHIqIHRhcmdldHMpCiAgICAgfCBBc3NpZ24oZXhwciogdGFyZ2V0cywgZXhwciB2YWx1ZSwgc3RyaW5nPyB0eXBlX2NvbW1lbnQpCiAgICAgfCBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQogICAgIHwgQW5uQXNzaWduKGV4cHIgdGFyZ2V0LCBleHByIGFubm90YXRpb24sIGV4cHI/IHZhbHVlLCBpbnQgc2ltcGxlKQogICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSwgc3RyaW5nPyB0eXBlX2NvbW1lbnQpCiAgICAgfCBBc3luY0ZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UsIHN0cmluZz8gdHlwZV9jb21tZW50KQogICAgIHwgV2hpbGUoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCiAgICAgfCBJZihleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKICAgICB8IFdpdGgod2l0aGl0ZW0qIGl0ZW1zLCBzdG10KiBib2R5LCBzdHJpbmc/IHR5cGVfY29tbWVudCkKICAgICB8IEFzeW5jV2l0aCh3aXRoaXRlbSogaXRlbXMsIHN0bXQqIGJvZHksIHN0cmluZz8gdHlwZV9jb21tZW50KQogICAgIHwgTWF0Y2goZXhwciBzdWJqZWN0LCBtYXRjaF9jYXNlKiBjYXNlcykKICAgICB8IFJhaXNlKGV4cHI/IGV4YywgZXhwcj8gY2F1c2UpCiAgICAgfCBUcnkoc3RtdCogYm9keSwgZXhjZXB0aGFuZGxlciogaGFuZGxlcnMsIHN0bXQqIG9yZWxzZSwgc3RtdCogZmluYWxib2R5KQogICAgIHwgVHJ5U3RhcihzdG10KiBib2R5LCBleGNlcHRoYW5kbGVyKiBoYW5kbGVycywgc3RtdCogb3JlbHNlLCBzdG10KiBmaW5hbGJvZHkpCiAgICAgfCBBc3NlcnQoZXhwciB0ZXN0LCBleHByPyBtc2cpCiAgICAgfCBJbXBvcnQoYWxpYXMqIG5hbWVzKQogICAgIHwgSW1wb3J0RnJvbShpZGVudGlmaWVyPyBtb2R1bGUsIGFsaWFzKiBuYW1lcywgaW50PyBsZXZlbCkKICAgICB8IEdsb2JhbChpZGVudGlmaWVyKiBuYW1lcykKICAgICB8IE5vbmxvY2FsKGlkZW50aWZpZXIqIG5hbWVzKQogICAgIHwgRXhwcihleHByIHZhbHVlKQogICAgIHwgUGFzcwogICAgIHwgQnJlYWsKICAgICB8IENvbnRpbnVlAGdldHZhbHVlAGxhc3RfdmFsdWUAdG9faW50ZWdyYWxfdmFsdWUAaW5pdGlhbF92YWx1ZQBvbGRfdmFsdWUAYXN5bmNfZ2VuZXJhdG9yX3dyYXBwZWRfdmFsdWUAZXhjX3ZhbHVlAGNhbm5vdCB1c2UgYSBzdGFycmVkIGV4cHJlc3Npb24gaW4gYSBkaWN0aW9uYXJ5IHZhbHVlAGN1cnJlbnQgdmFsdWUAJXMgJ291dCcgcGFyYW1ldGVyIG11c3QgYmUgcGFzc2VkIGFzIGRlZmF1bHQgdmFsdWUAdmFyLXBvc2l0aW9uYWwgYXJndW1lbnQgY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZQB2YXIta2V5d29yZCBhcmd1bWVudCBjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlAFB5b2RpZGUgaW50ZXJuYWwgZXJyb3I6IG5vIGV4Y2VwdGlvbiB0eXBlIG9yIHZhbHVlAGdlbmVyYXRvciByZXR1cm4gdmFsdWUAaW52YWxpZCAtWCB1dGY4IG9wdGlvbiB2YWx1ZQBFeGNlcHRpb24gdmFsdWUAcmVkdWNlKCkgb2YgZW1wdHkgaXRlcmFibGUgd2l0aCBubyBpbml0aWFsIHZhbHVlAEV4cGVjdGluZyB2YWx1ZQBzdHJpbmcgdmFsdWUAY29tcGlsZSgpOiBpbnZhbGlkIG9wdGltaXplIHZhbHVlAHNpemUgbXVzdCBiZSAwIG9yIGEgcG9zaXRpdmUgdmFsdWUAaW5zdGFuY2UgZXhjZXB0aW9uIG1heSBub3QgaGF2ZSBhIHNlcGFyYXRlIHZhbHVlAGludmFsaWQgUFlUSE9OVVRGOCBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZQBVbmtub3duIHRpbWVzcGVjIHZhbHVlAGNhbm5vdCBhY2Nlc3MgbG9jYWwgdmFyaWFibGUgJyVzJyB3aGVyZSBpdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgdmFsdWUAQ2Fubm90IGhhc2ggYSBzaWduYWxpbmcgTmFOIHZhbHVlAGJhZCAicXVvdGluZyIgdmFsdWUAaW50ZXJuYWwgZXJyb3IgaW4gUHlEZWNfVG9JbnRlZ3JhbFZhbHVlAGZpZWxkICd2YWx1ZScgaXMgcmVxdWlyZWQgZm9yIE1hdGNoVmFsdWUAcmVxdWlyZWQgZmllbGQgInZhbHVlIiBtaXNzaW5nIGZyb20gTWF0Y2hWYWx1ZQBOVUxMIG9iamVjdCBwYXNzZWQgdG8gUHlfQnVpbGRWYWx1ZQBiYWQgZm9ybWF0IGNoYXIgcGFzc2VkIHRvIFB5X0J1aWxkVmFsdWUAZmllbGQgJ3ZhbHVlJyBpcyByZXF1aXJlZCBmb3IgRm9ybWF0dGVkVmFsdWUAcmVxdWlyZWQgZmllbGQgImNvbnZlcnNpb24iIG1pc3NpbmcgZnJvbSBGb3JtYXR0ZWRWYWx1ZQByZXF1aXJlZCBmaWVsZCAidmFsdWUiIG1pc3NpbmcgZnJvbSBGb3JtYXR0ZWRWYWx1ZQBfcXVldWUAX3F1ZXVlLlNpbXBsZVF1ZXVlAFR1ZQBiOndyaXRlX2J5dGUAcmVhZF9ieXRlAGludmFsaWQgc3RhcnQgYnl0ZQBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlAGVtYmVkZGVkIG51bGwgYnl0ZQAlYyByZXF1aXJlcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDI1Nikgb3IgYSBzaW5nbGUgYnl0ZQBiYWQgdHJhaWxpbmcgcGFkIGJ5dGUAYmFkIGxlYWRpbmcgcGFkIGJ5dGUAbWludXRlAGZhaWxlZCB0byBtYWtlIHBhdGggYWJzb2x1dGUAcmVhZG9ubHkgYXR0cmlidXRlAGNhbid0IGRlbGV0ZSB0Yl9uZXh0IGF0dHJpYnV0ZQBjYW4ndCBkZWxldGUgZWxlbWVudCBhdHRyaWJ1dGUAY2FuJ3Qgc2V0IGF0dHJpYnV0ZQBjYW4ndCBkZWxldGUgbnVtZXJpYy9jaGFyIGF0dHJpYnV0ZQByZWZlcmVuY2UgdG8gZXh0ZXJuYWwgZW50aXR5IGluIGF0dHJpYnV0ZQBjbGFzcyBtdXN0IGRlZmluZSBhICdfdHlwZV8nIHN0cmluZyBhdHRyaWJ1dGUAY2Fubm90IGRlbGV0ZSBhdHRyaWJ1dGUAQ2Fubm90IGRlbGV0ZSBhdHRyaWJ1dGUAY2FuJ3QgZGVsZXRlIGF0dHJpYnV0ZQBkdXBsaWNhdGUgYXR0cmlidXRlAHZhcnMoKSBhcmd1bWVudCBtdXN0IGhhdmUgX19kaWN0X18gYXR0cmlidXRlAGNhbid0IGRlbGV0ZSBfX2NsYXNzX18gYXR0cmlidXRlAGJ1aWx0aW4gdHlwZSAlLjIwMHMgaGFzIG5vIF9fbW9kdWxlX18gYXR0cmlidXRlAGZpbGUgbXVzdCBoYXZlIGEgJ3dyaXRlJyBhdHRyaWJ1dGUAYXJndW1lbnQgbXVzdCBoYXZlICdyZWFkJyBhdHRyaWJ1dGUAY2xhc3MgbXVzdCBkZWZpbmUgYSAnX2xlbmd0aF8nIGF0dHJpYnV0ZQBjbGFzcyBtdXN0IGRlZmluZSBhICdfdHlwZV8nIGF0dHJpYnV0ZQBmaWVsZCAnY3R4JyBpcyByZXF1aXJlZCBmb3IgQXR0cmlidXRlAGZpZWxkICdhdHRyJyBpcyByZXF1aXJlZCBmb3IgQXR0cmlidXRlAGZpZWxkICd2YWx1ZScgaXMgcmVxdWlyZWQgZm9yIEF0dHJpYnV0ZQByZXF1aXJlZCBmaWVsZCAiY3R4IiBtaXNzaW5nIGZyb20gQXR0cmlidXRlAHJlcXVpcmVkIGZpZWxkICJhdHRyIiBtaXNzaW5nIGZyb20gQXR0cmlidXRlAHJlcXVpcmVkIGZpZWxkICJ2YWx1ZSIgbWlzc2luZyBmcm9tIEF0dHJpYnV0ZQBkb3VibGVxdW90ZQBhZGRfbm90ZQBpbml0X2ltcG9ydF9zaXRlAG5vX3VzZXJfc2l0ZQBub19zaXRlAHB3cml0ZQB5Kjp3cml0ZQBfUHlDb25maWdfV3JpdGUAX1B5UHJlQ29uZmlnX1dyaXRlAGlzZmluaXRlAGlzX2luZmluaXRlAGlzX2Zpbml0ZQBiaW5hc2NpaS5JbmNvbXBsZXRlAGJ5dGVhcnJheV9nZXRidWZmZXI6IHZpZXc9PU5VTEwgYXJndW1lbnQgaXMgb2Jzb2xldGUAYnl0ZXNpb2J1Zl9nZXRidWZmZXI6IHZpZXc9PU5VTEwgYXJndW1lbnQgaXMgb2Jzb2xldGUAUHlCdWZmZXJfRmlsbEluZm86IHZpZXc9PU5VTEwgYXJndW1lbnQgaXMgb2Jzb2xldGUAYXJyYXlfYnVmZmVyX2dldGJ1Zjogdmlldz09TlVMTCBhcmd1bWVudCBpcyBvYnNvbGV0ZQBvcGVyYXRvciBkZWxldGUAUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQBfUHlUaHJlYWRTdGF0ZV9EZWxldGUAcmVxdWlyZWQgZmllbGQgInRhcmdldHMiIG1pc3NpbmcgZnJvbSBEZWxldGUAaTpzZXRzdGF0ZQA6Z2V0c3RhdGUAb3JwaGFuIHRzdGF0ZQBpbml0X3RocmVhZHN0YXRlAF9zdGF0ZQB1bmFibGUgdG8gZ2V0IHRoZSBpbnRlcnByZXRlciBzdGF0ZQBPaTtpbGxlZ2FsIGRlY29kZXIgc3RhdGUAT087aWxsZWdhbCBkZWNvZGVyIHN0YXRlAE9LO2lsbGVnYWwgZGVjb2RlciBzdGF0ZQBpbmNvbnNpc3RlbnQgc3RyZWFtIHN0YXRlAEluY29uc2lzdGVudCBzdHJlYW0gc3RhdGUAaW52YWxpZCBwYXJ0aWFsIHN0YXRlAG1vZHVsZSAlcyBpcyBub3QgYSBtb2R1bGUgb2JqZWN0LCBidXQgcmVxdWVzdHMgbW9kdWxlIHN0YXRlAGludmFsaWQgc3RhdGUAdW5hYmxlIHRvIGdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUAY2Fubm90IGdldCB0aHJlYWQgc3RhdGUAd3JvbmcgdGhyZWFkIHN0YXRlAG5vbi1OVUxMIG9sZCB0aHJlYWQgc3RhdGUAZmFpbGVkIHRvIHJlYWQgdGhyZWFkIHN0YXRlAHVuYWJsZSB0byBnZXQgdGhlIHRocmVhZCBoZWFkIHN0YXRlAGJhZCBzdGF0ZQBnZXRzdGF0ZSgpIC0+IHN0YXRlAGRlcXVlLnJvdGF0ZQBfUHlFeGNfSW5pdFN0YXRlAF9QeUdJTFN0YXRlX05vdGVUaHJlYWRTdGF0ZQBlbnVtZXJhdGUAZ2xTdGVuY2lsT3BTZXBhcmF0ZQBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZQBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUAZ2xTdGVuY2lsRnVuY1NlcGFyYXRlAGdsQmxlbmRGdW5jU2VwYXJhdGUAaXRlcnRvb2xzLmFjY3VtdWxhdGUAdHJhbnNsYXRlAHRlbXBsYXRlAGNvbmp1Z2F0ZQBpbGxlZ2FsIFVURi0xNiBzdXJyb2dhdGUAY29weV9uZWdhdGUAY2hhbm5lbF9jcmVhdGUAfCRpOmNyZWF0ZQBFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZQBfUHlTeXNfQ3JlYXRlAGludGVyc2VjdGlvbl91cGRhdGUAc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlAHxPOnVwZGF0ZQBkaWN0IG11dGF0ZWQgZHVyaW5nIHVwZGF0ZQBkYXRldGltZS5kYXRlAGFsbG9jYXRlAGZ0cnVuY2F0ZQBvcy50cnVuY2F0ZQBkYXRldGltZS5Jc29DYWxlbmRhckRhdGUAcGF1c2UAZXhjZXB0aW9uIGNhdXNlAHJldmVyc2UAdHlwZV90cmF2ZXJzZQBvcHRwYXJzZQBhcmdwYXJzZQBzcmVfcGFyc2UAUGFyc2UAaXNjbG9zZQBPJjpkbGNsb3NlAGFjbG9zZQBPJnwkcHBwOmNoYW5uZWxfY2xvc2UAdmVyYm9zZQBvcmVsc2UAaXRlcnRvb2xzLmZpbHRlcmZhbHNlAGRlYWxsb2NhdGluZyBUcnVlIG9yIEZhbHNlAF9sb2dfdHJhY2ViYWNrIGNhbiBvbmx5IGJlIHNldCB0byBGYWxzZQBfX2Jvb2xfXygkc2VsZiwgLykKLS0KClRydWUgaWYgc2VsZiBlbHNlIEZhbHNlACdzZW5kJyBhbmQgJ3JlY3YnIGNhbm5vdCBib3RoIGJlIEZhbHNlAGl0ZXJ0b29scy5wYWlyd2lzZQBpfG5uOm1hZHZpc2UAcG9zaXhfZmFkdmlzZQBKc1Byb21pc2UATm8gYWN0aXZlIGV4Y2VwdGlvbiB0byByZXJhaXNlAFJhaXNlAHBoYXNlAE8mfCRwcHA6Y2hhbm5lbF9yZWxlYXNlAG9wZXJhdGluZyBzeXN0ZW0gcmVsZWFzZQBQeUdJTFN0YXRlX1JlbGVhc2UAc3dhcGNhc2UAZmllbGQgJ3BhdHRlcm4nIGlzIHJlcXVpcmVkIGZvciBtYXRjaF9jYXNlAHJlcXVpcmVkIGZpZWxkICJib2R5IiBtaXNzaW5nIGZyb20gbWF0Y2hfY2FzZQByZXF1aXJlZCBmaWVsZCAicGF0dGVybiIgbWlzc2luZyBmcm9tIG1hdGNoX2Nhc2UAX21hcmt1cGJhc2UAaW50KCkgY2FuJ3QgY29udmVydCBub24tc3RyaW5nIHdpdGggZXhwbGljaXQgYmFzZQBTZXRCYXNlAEdldEJhc2UAX2lvLl9SYXdJT0Jhc2UAX2lvLl9UZXh0SU9CYXNlAF9pby5fQnVmZmVyZWRJT0Jhc2UAX2lvLl9JT0Jhc2UAZ2xJc1RleHR1cmUAZ2xBY3RpdmVUZXh0dXJlAGdsQmluZFRleHR1cmUAY3JlYXRlX2Z1dHVyZQBlbnN1cmVfZnV0dXJlAGF3YWl0IHdhc24ndCB1c2VkIHdpdGggZnV0dXJlAF9hc3luY2lvLkZ1dHVyZQBTdG9wSXRlcmF0aW9uIGludGVyYWN0cyBiYWRseSB3aXRoIGdlbmVyYXRvcnMgYW5kIGNhbm5vdCBiZSByYWlzZWQgaW50byBhIEZ1dHVyZQBfY3R5cGVzLlN0cnVjdHVyZQBjbG9zdXJlAHB5aW5pdF9tYWluX3JlY29uZmlndXJlAHB5aW5pdF9jb3JlX3JlY29uZmlndXJlAF9zcmUAKGtrKTpfYWNxdWlyZV9yZXN0b3JlAFN0b3JlAHR5cGVfaWdub3JlAGZpZWxkICd0YWcnIGlzIHJlcXVpcmVkIGZvciBUeXBlSWdub3JlAHJlcXVpcmVkIGZpZWxkICJsaW5lbm8iIG1pc3NpbmcgZnJvbSBUeXBlSWdub3JlAHJlcXVpcmVkIGZpZWxkICJ0YWciIG1pc3NpbmcgZnJvbSBUeXBlSWdub3JlAGJlZm9yZQB1bmRlcnNjb3JlAGFzeW5jb3JlAF9weW9kaWRlX2NvcmUAX1B5U3lzX0luaXRDb3JlAGhpd2lyZQB8aU86YWNxdWlyZQB3ZXJlAGNhbid0IHVzZSBNYXRjaFN0YXIgaGVyZQBjYW5ub3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlAGNhbid0IHVzZSBzdGFycmVkIGV4cHJlc3Npb24gaGVyZQBjYW5ub3QgdXNlIGRvdWJsZSBzdGFycmVkIGV4cHJlc3Npb24gaGVyZQBtZW1vcnl2aWV3OiBpbnRlcm5hbCBlcnJvciBpbiByaWNoY29tcGFyZQBmaWVsZCAnbGVmdCcgaXMgcmVxdWlyZWQgZm9yIENvbXBhcmUAcmVxdWlyZWQgZmllbGQgImxlZnQiIG1pc3NpbmcgZnJvbSBDb21wYXJlAHJlcXVpcmVkIGZpZWxkICJjb21wYXJhdG9ycyIgbWlzc2luZyBmcm9tIENvbXBhcmUAcmVxdWlyZWQgZmllbGQgIm9wcyIgbWlzc2luZyBmcm9tIENvbXBhcmUAQXN5bmMgd2l0aCBzdGF0ZW1lbnRzIGFyZQBQb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBhcmUAUGFyZW50aGVzaXplZCBjb250ZXh0IG1hbmFnZXJzIGFyZQBFeGNlcHRpb24gZ3JvdXBzIGFyZQBBc3luYyBmb3IgbG9vcHMgYXJlAEFzeW5jIGZ1bmN0aW9ucyBhcmUAQXNzaWdubWVudCBleHByZXNzaW9ucyBhcmUAQXdhaXQgZXhwcmVzc2lvbnMgYXJlAEFzeW5jIGNvbXByZWhlbnNpb25zIGFyZQByZXN0eXBlAGRlY2x0eXBlAGRvY3R5cGUAeHhzdWJ0eXBlAGxhc3RfdHlwZQBzZXRfdHlwZQBjYWNoZV9pbmZvX3R5cGUAZXhjX3R5cGUAZnVuY190eXBlAGRvbid0IGtub3cgaG93IHRvIGJ5dGVzd2FwIHRoaXMgYXJyYXkgdHlwZQBDYW4ndCBpbml0aWFsaXplIGludCB0eXBlAHNwZWNpZnkgdGhlIHJlc3VsdCB0eXBlAHRoZSBzb2NrZXQgdHlwZQBDYW4ndCBpbml0aWFsaXplIGZsb2F0IHR5cGUAZmFpbGVkIHRvIGluaXRpYWxpemUgVW5yYWlzYWJsZUhvb2tBcmdzIHR5cGUAQ2FuJ3QgaW5pdGlhbGl6ZSBieXRlcyB0eXBlAG11c3QgYmUgYSBjdHlwZXMgdHlwZQBDYW4ndCBpbml0aWFsaXplIGJ5dGVzIGl0ZXJhdG9yIHR5cGUAQ2FuJ3QgaW5pdGlhbGl6ZSB0dXBsZSBpdGVyYXRvciB0eXBlAFVua25vd24gZXJyb3IgdHlwZQBiYWQgbWVtYmVyZGVzY3IgdHlwZQBQeVR5cGVfR2V0TW9kdWxlOiBUeXBlICclcycgaXMgbm90IGEgaGVhcCB0eXBlAGNhbid0IGluaXQgaW50IGluZm8gdHlwZQBjYW4ndCBpbml0IGZsb2F0IGluZm8gdHlwZQBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBhbiBleGNlcHRpb24gdHlwZQBFeGNlcHRpb24gdHlwZQB1bmtub3duIHNlZWsgdHlwZQBpbnZhbGlkIGJsb2NrIHR5cGUAX2FiY19pbXBsIGlzIHNldCB0byBhIHdyb25nIHR5cGUAc3VwZXIodHlwZSwgb2JqKTogb2JqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb3Igc3VidHlwZSBvZiB0eXBlAHR5cGUgJyUuMTAwcycgaXMgbm90IGFuIGFjY2VwdGFibGUgYmFzZSB0eXBlACVzOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUAc3ltbGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlAENhbid0IGluaXRpYWxpemUgdHVwbGUgdHlwZQB1bmhhc2hhYmxlIHR5cGUAaW52YWxpZCB0eXBlAGNvZGVjIGlzIHVuZXhwZWN0ZWQgdHlwZQBhcmdzWzBdIGZyb20gX19uZXdvYmpfXyBhcmdzIGlzIG5vdCBhIHR5cGUAZGVzY3JpcHRvciAnJVYnIGZvciB0eXBlICclLjEwMHMnIG5lZWRzIGVpdGhlciBhbiBvYmplY3Qgb3IgYSB0eXBlAGZhaWxlZCB0byBpbml0aWFsaXplIGEgdHlwZQBjYWxsZWQgbWF0Y2ggcGF0dGVybiBtdXN0IGJlIGEgdHlwZQBfdHlwZV8gbXVzdCBiZSBhIHR5cGUAc2Vjb25kIGl0ZW0gaW4gX2ZpZWxkc18gdHVwbGUgKGluZGV4ICV6ZCkgbXVzdCBiZSBhIEMgdHlwZQA8ZHVtbXkga2V5PiB0eXBlAHdlYWtyZWYuQ2FsbGFibGVQcm94eVR5cGUAd2Vha3JlZi5Qcm94eVR5cGUAX2N0eXBlcy5QeUNBcnJheVR5cGUAU29ja2V0VHlwZQBfY3R5cGVzLlB5Q1N0cnVjdFR5cGUAX2N0eXBlcy5QeUNGdW5jUHRyVHlwZQBfY3R5cGVzLlB5Q1BvaW50ZXJUeXBlAFhNTFBhcnNlclR5cGUAZmllbGQgJ3JldHVybnMnIGlzIHJlcXVpcmVkIGZvciBGdW5jdGlvblR5cGUAcmVxdWlyZWQgZmllbGQgInJldHVybnMiIG1pc3NpbmcgZnJvbSBGdW5jdGlvblR5cGUAcmVxdWlyZWQgZmllbGQgImFyZ3R5cGVzIiBtaXNzaW5nIGZyb20gRnVuY3Rpb25UeXBlAF9jdHlwZXMuVW5pb25UeXBlAExvY2tUeXBlAFRyYWNlYmFja1R5cGUATm9uZVR5cGUAX2N0eXBlcy5QeUNTaW1wbGVUeXBlAHdlYWtyZWYuUmVmZXJlbmNlVHlwZQBOb3RJbXBsZW1lbnRlZFR5cGUAX2N0eXBlcy5TdHJ1Y3RQYXJhbV9UeXBlAFNIQTI1NlR5cGUATUQ1VHlwZQBTSEEzODRUeXBlAFNIQTIyNFR5cGUAU0hBMVR5cGUAY2Fubm90IGFjY2VzcyBmcmVlIHZhcmlhYmxlICclcycgd2hlcmUgaXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHZhbHVlIGluIGVuY2xvc2luZyBzY29wZQBwaXBlAF9zaWdmcGUAc2hhcGUAc3Vycm9nYXRlZXNjYXBlAHJhd3VuaWNvZGVlc2NhcGUASW52YWxpZCBcZXNjYXBlAG1hbGZvcm1lZCBcTiBjaGFyYWN0ZXIgZXNjYXBlAHN0cmluZyBpcyB0b28gbG9uZyB0byBlc2NhcGUAdHJ1bmNhdGVkIFx4WFggZXNjYXBlAEludmFsaWQgXHVYWFhYIGVzY2FwZQB0cnVuY2F0ZWQgXHVYWFhYIGVzY2FwZQB0cnVuY2F0ZWQgXFVYWFhYWFhYWCBlc2NhcGUASnVuZQBhbHR6b25lAHxPOmFzdGltZXpvbmUATyF8VTp0aW1lem9uZQBkYXRldGltZS50aW1lem9uZQB0bV96b25lAGRvY3VtZW50IGlzIG5vdCBzdGFuZGFsb25lAE5vdFN0YW5kYWxvbmUAZG9uZQBzeXMuc3RkZXJyIGlzIE5vbmUAY29weXJlZy5fc2xvdG5hbWVzIGRpZG4ndCByZXR1cm4gYSBsaXN0IG9yIE5vbmUAJ3JlZ2lzdHJ5JyBtdXN0IGJlIGEgZGljdCBvciBOb25lAHRpbWVvdXQgbXVzdCBiZSBhIGZsb2F0IG9yIE5vbmUAdXRpbWU6ICd0aW1lcycgbXVzdCBiZSBlaXRoZXIgYSB0dXBsZSBvZiB0d28gaW50cyBvciBOb25lAGFsbCBhcmd1bWVudHMgdG8gam9pbnBhdGgoKSBtdXN0IGJlIHN0ciBvciBOb25lAHRpbWVvdXQgbXVzdCBiZSBhbiBpbnRlZ2VyIG9yIE5vbmUAbWF4c2l6ZSBzaG91bGQgYmUgaW50ZWdlciBvciBOb25lAHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlLCBpbnRlZ2VyIG9yIE5vbmUAX190cmFjZWJhY2tfXyBtdXN0IGJlIGEgdHJhY2ViYWNrIG9yIE5vbmUAZ2V0YWRkcmluZm8oKSBhcmd1bWVudCAxIG11c3QgYmUgc3RyaW5nIG9yIE5vbmUAc3RhY2tfZWZmZWN0OiBqdW1wIG11c3QgYmUgRmFsc2UsIFRydWUgb3IgTm9uZQBwYXJhbWZsYWdzIG11c3QgYmUgYSB0dXBsZSBvciBOb25lAHN0YXRlIG11c3QgYmUgYSB0dXBsZSBvciBOb25lAGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgY2FsbGFibGUgb3IgTm9uZQBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBOb25lAHV0Y29mZnNldCgpIHJldHVybmVkICUuMjAwcywgZXhwZWN0ZWQgdGltZWRlbHRhIG9yIE5vbmUAb2JqZWN0IGJlaW5nIGF3YWl0ZWQgb24sIG9yIE5vbmUAb2JqZWN0IGJlaW5nIGl0ZXJhdGVkIGJ5IHlpZWxkIGZyb20sIG9yIE5vbmUAQSBzdHJpbmcgb2YgdGV4dCBkaXJlY3RseSBhZnRlciB0aGUgc3RhcnQgdGFnLCBvciBOb25lAEEgc3RyaW5nIG9mIHRleHQgZGlyZWN0bHkgYWZ0ZXIgdGhlIGVuZCB0YWcsIG9yIE5vbmUAcmVzdHlwZSBtdXN0IGJlIGEgdHlwZSwgYSBjYWxsYWJsZSwgb3IgTm9uZQBfcmVzdHlwZV8gbXVzdCBiZSBhIHR5cGUsIGEgY2FsbGFibGUsIG9yIE5vbmUAbmFtZXNwYWNlX3NlcGFyYXRvciBtdXN0IGJlIGF0IG1vc3Qgb25lIGNoYXJhY3Rlciwgb21pdHRlZCwgb3IgTm9uZQBkZWFsbG9jYXRpbmcgTm9uZQB0aGUgdHlwZSBvZiB0aGUgaW5zdGFuY2UgaW52b2tpbmcgc3VwZXIoKTsgbWF5IGJlIE5vbmUAaW5zdGFuY2UgbXVzdCBub3QgYmUgTm9uZQBNYXRjaFNpbmdsZXRvbiBjYW4gb25seSBjb250YWluIFRydWUsIEZhbHNlIGFuZCBOb25lAF9fZGljdF9fIHNsb3QgZGlzYWxsb3dlZDogd2UgYWxyZWFkeSBnb3Qgb25lAGlzY29yb3V0aW5lAHF1YWxpZmllZCBuYW1lIG9mIHRoZSBjb3JvdXRpbmUAY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhIGp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUAY2Fubm90IHJldXNlIGFscmVhZHkgYXdhaXRlZCBjb3JvdXRpbmUAX19hd2FpdF9fKCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUAbnVsbCBhcmd1bWVudCB0byBpbnRlcm5hbCByb3V0aW5lAG5pbmUAbmV3bGluZQBjb3JlX3JlYWRfcHJlY21kbGluZQBjb25maWdfcGFyc2VfY21kbGluZQBjYW4ndCByZS1lbnRlciByZWFkbGluZQBza2lwX3NvdXJjZV9maXJzdF9saW5lAGV4Y2VwdGlvbiBwcmludF9maWxlX2FuZF9saW5lAGxvdy1saW5lAHZlcnRpY2FsLWxpbmUAY2Fubm90IGZpbmQgYnl0ZWNvZGUgZm9yIHNwZWNpZmllZCBsaW5lAEVPRiB3aGVuIHJlYWRpbmcgYSBsaW5lAFRvbyBtdWNoIGRhdGEgZm9yIGJhc2U2NCBsaW5lAG1hY2hpbmUAaW50ZXJuYWwgZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uIGVuZ2luZQBPIU8hfE86Y29tYmluZQBob21lAFB5X1NldFB5dGhvbkhvbWUAb3MudXRpbWUAaU86Y2xvY2tfc2V0dGltZQBpOmNsb2NrX2dldHRpbWUAX3N0cnB0aW1lAFVVOnN0cnB0aW1lAHB5Y29yZV9pbml0X3J1bnRpbWUAfE86Z210aW1lAHN0X210aW1lAHRvdGFsdGltZQB8Tzpsb2NhbHRpbWUAbWt0aW1lAFU6c3RyZnRpbWUAVXxPOnN0cmZ0aW1lAF9zdHJwdGltZV9kYXRldGltZQBkYXRldGltZS5kYXRldGltZQBmcm9tdXRjOiBhcmd1bWVudCBtdXN0IGJlIGEgZGF0ZXRpbWUAaW5saW5ldGltZQBhc2N0aW1lAHN0X2N0aW1lAHxPOmN0aW1lAHN0X2F0aW1lAGltcG9ydF90aW1lAHRpbWUuc3RydWN0X3RpbWUAcHJvY2Vzc190aW1lAGxhc3Rfd3JpdGVfdGltZQBkYXRldGltZS50aW1lAHVzZXIgdGltZQBzeXN0ZW0gdGltZQBMZW5ndGhzIHNob3VsZCBiZSB0aGUgc2FtZQBzeXMuX2dldGZyYW1lAGNyX2ZyYW1lAGdpX2ZyYW1lAGFnX2ZyYW1lAHRiX2ZyYW1lAGNhbid0IGp1bXAgZnJvbSB0aGUgJ2NhbGwnIHRyYWNlIGV2ZW50IG9mIGEgbmV3IGZyYW1lAHN1cGVyKCk6IG5vIGN1cnJlbnQgZnJhbWUAY2Fubm90IGNsZWFyIGFuIGV4ZWN1dGluZyBmcmFtZQBldmFsIG11c3QgYmUgZ2l2ZW4gZ2xvYmFscyBhbmQgbG9jYWxzIHdoZW4gY2FsbGVkIHdpdGhvdXQgYSBmcmFtZQB0aHJlYWQgc3RpbGwgaGFzIGEgZnJhbWUAdHpuYW1lAHR0eW5hbWUAc3xzOmdldHNlcnZieW5hbWUAc29ja2V0LmdldHNlcnZieW5hbWUAZXQ6Z2V0aG9zdGJ5bmFtZQBzb2NrZXQuZ2V0aG9zdGJ5bmFtZQBzOmdldHByb3RvYnluYW1lAHVuYW1lAHNvY2tldC5nZXRob3N0bmFtZQBzeXNuYW1lAGFzbmFtZQBkaXJuYW1lAGdldHBlZXJuYW1lAGNvX3F1YWxuYW1lAGdldHNvY2tuYW1lAGJhc2VuYW1lAG9zLnJlbmFtZQBfZml4X2NvX2ZpbGVuYW1lAHJ1bl9maWxlbmFtZQBzZWNvbmQgZXhjZXB0aW9uIGZpbGVuYW1lAG5vZGVuYW1lAHNldF9uYW1lAGdldF9uYW1lAG9zX25hbWUAY29fbmFtZQBwcm9ncmFtX25hbWUAUHlDYXBzdWxlX0dldFBvaW50ZXIgY2FsbGVkIHdpdGggaW5jb3JyZWN0IG5hbWUARW1wdHkga2V5d29yZCBwYXJhbWV0ZXIgbmFtZQB1bmtub3duIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUAY2FsbGVkIGNvZGUgb2JqZWN0IG9yIGJ1aWx0LWluIGZ1bmN0aW9uIG5hbWUAdW5yZWNvZ25pemVkIGNvbmZpZ3VyYXRpb24gbmFtZQB1bmFibGUgdG8gZGV0ZXJtaW5lIGxvZ2luIG5hbWUAb3BlcmF0aW5nIHN5c3RlbSBuYW1lAG5vIHN1Y2ggbmFtZQBPdXQgb2YgbWVtb3J5IGludGVybmluZyBhbiBhdHRyaWJ1dGUgbmFtZQB1bmFibGUgdG8gZW5jb2RlIGFuZCBjb3B5IGV4Y2VwdGlvbiB0eXBlIG5hbWUAdW5hYmxlIHRvIGZvcm1hdCBleGNlcHRpb24gdHlwZSBuYW1lAG91dCBvZiBtZW1vcnkgY29weWluZyBleGNlcHRpb24gdHlwZSBuYW1lAGFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lAEVtcHR5IG1vZHVsZSBuYW1lAENhbm5vdCB1c2UgY2xvc2VmZD1GYWxzZSB3aXRoIGZpbGUgbmFtZQBpbGxlZ2FsIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUAcmVzZXJ2ZWQgcHJlZml4ICh4bWwpIG11c3Qgbm90IGJlIHVuZGVjbGFyZWQgb3IgYm91bmQgdG8gYW5vdGhlciBuYW1lc3BhY2UgbmFtZQBtZXRob2RjYWxsZXIgbmVlZHMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LCB0aGUgbWV0aG9kIG5hbWUAdW5leHBlY3RlZCAneycgaW4gZmllbGQgbmFtZQBzcGxpdCB0aGUgYXJndW1lbnQgYXMgYSBmaWVsZCBuYW1lAFB5X1NldFByb2dyYW1OYW1lAGZpZWxkICdjdHgnIGlzIHJlcXVpcmVkIGZvciBOYW1lAGZpZWxkICdpZCcgaXMgcmVxdWlyZWQgZm9yIE5hbWUAcmVxdWlyZWQgZmllbGQgImN0eCIgbWlzc2luZyBmcm9tIE5hbWUAcmVxdWlyZWQgZmllbGQgImlkIiBtaXNzaW5nIGZyb20gTmFtZQBmbG9hdF9yZXByX3N0eWxlAGN0eXBlcy5lcnJvcl9vYmplY3QgaXMgYW4gaW52YWxpZCBjYXBzdWxlAFB5Q2Fwc3VsZQBjcHl0aG9uLnJ1bl9tb2R1bGUAYWRkX21haW5fbW9kdWxlAGNhbid0IGluaXRpYWxpemUgc3lzIG1vZHVsZQBuYW1lbGVzcyBtb2R1bGUAbG9zdCBidWlsdGlucyBtb2R1bGUAY2FuJ3QgaW5pdGlhbGl6ZSBidWlsdGlucyBtb2R1bGUARmFpbGVkIHRvIHJldHJpZXZlIGJ1aWx0aW5zIG1vZHVsZQBzdHJpbmcgaGVscGVyIG1vZHVsZQBDIGltcGxlbWVudGF0aW9uIG9mIHRoZSB6b25laW5mbyBtb2R1bGUAaW5pdGlhbGl6YXRpb24gb2YgJXMgZGlkIG5vdCByZXR1cm4gYW4gZXh0ZW5zaW9uIG1vZHVsZQBQeVR5cGVfR2V0TW9kdWxlQnlEZWY6IE5vIHN1cGVyY2xhc3Mgb2YgJyVzJyBoYXMgdGhlIGdpdmVuIG1vZHVsZQBGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZQBQeVR5cGVfR2V0TW9kdWxlOiBUeXBlICclcycgaGFzIG5vIGFzc29jaWF0ZWQgbW9kdWxlAFB5TW9kdWxlX0FkZE9iamVjdFJlZigpIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBtb2R1bGUAY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZQBQeVN0YXRlX1JlbW92ZU1vZHVsZQBQeVN0YXRlX0FkZE1vZHVsZQByZXF1aXJlZCBmaWVsZCAiYm9keSIgbWlzc2luZyBmcm9tIE1vZHVsZQByZXF1aXJlZCBmaWVsZCAidHlwZV9pZ25vcmVzIiBtaXNzaW5nIGZyb20gTW9kdWxlAGxpdHRsZQB0dXJ0bGUAaXN0aXRsZQB1dGN0aW1ldHVwbGUAbmFtZWR0dXBsZQBhc190dXBsZQBfd2FybmluZ3MuZmlsdGVycyBpdGVtICV6ZCBpc24ndCBhIDUtdHVwbGUAYXNfaW50ZWdlcl9yYXRpbygpIG11c3QgcmV0dXJuIGEgMi10dXBsZQBfX2Jhc2VzX18gaXMgbm90IHR1cGxlAGNhbm5vdCBpbmRleCAlemQtZGltZW5zaW9uIHZpZXcgd2l0aCAlemQtZWxlbWVudCB0dXBsZQBSZXBsYWNlbWVudCBpbmRleCAlemQgb3V0IG9mIHJhbmdlIGZvciBwb3NpdGlvbmFsIGFyZ3MgdHVwbGUATlVMTCBvYmplY3QgaW4gbWFyc2hhbCBkYXRhIGZvciB0dXBsZQBzdGFycmVkIGFzc2lnbm1lbnQgdGFyZ2V0IG11c3QgYmUgaW4gYSBsaXN0IG9yIHR1cGxlAF9fcmVkdWNlX18gbXVzdCByZXR1cm4gYSBzdHJpbmcgb3IgdHVwbGUAYXJnIDQgKGRlZmF1bHRzKSBtdXN0IGJlIE5vbmUgb3IgdHVwbGUAYXJnIDUgKGNsb3N1cmUpIG11c3QgYmUgTm9uZSBvciB0dXBsZQBjYW4gb25seSBjb25jYXRlbmF0ZSB0dXBsZSAobm90ICIlLjIwMHMiKSB0byB0dXBsZQB0dXBsZS5pbmRleCh4KTogeCBub3QgaW4gdHVwbGUAYXJnIDUgKGNsb3N1cmUpIG11c3QgYmUgdHVwbGUAUHlBcmdfVW5wYWNrVHVwbGUoKSBhcmd1bWVudCBsaXN0IGlzIG5vdCBhIHR1cGxlAG5ldyBzdHlsZSBnZXRhcmdzIGZvcm1hdCBidXQgYXJndW1lbnQgaXMgbm90IGEgdHVwbGUAUHlfdHBfYmFzZXMgaXMgbm90IGEgdHVwbGUAc3RhdGUgaXMgbm90IGEgdHVwbGUAc2hhcGUgbXVzdCBiZSBhIGxpc3Qgb3IgYSB0dXBsZQBfX21yb19lbnRyaWVzX18gbXVzdCByZXR1cm4gYSB0dXBsZQBhcmd2IG11c3QgYmUgYSB0dXBsZQBhcmd1bWVudCBsaXN0IG11c3QgYmUgYSB0dXBsZQBzdGF0ZSBhcmd1bWVudCBtdXN0IGJlIGEgdHVwbGUAc3RhdGUgdmVjdG9yIG11c3QgYmUgYSB0dXBsZQAybmQgYXJnIG11c3QgYmUgYSB0dXBsZQBzZWNvbmQgaXRlbSBvZiB0aGUgdHVwbGUgcmV0dXJuZWQgYnkgX19yZWR1Y2VfXyBtdXN0IGJlIGEgdHVwbGUAZ2V0bmFtZWluZm8oKSBhcmd1bWVudCAxIG11c3QgYmUgYSB0dXBsZQBJUHY0IHNvY2thZGRyIG11c3QgYmUgMiB0dXBsZQBPbjtlbmNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIvYnl0ZXMsIGludCkgdHVwbGUAVW47dHJhbnNsYXRpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlAGVuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZQBVbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUARGVjaW1hbFR1cGxlAGZpZWxkICdjdHgnIGlzIHJlcXVpcmVkIGZvciBUdXBsZQByZXF1aXJlZCBmaWVsZCAiY3R4IiBtaXNzaW5nIGZyb20gVHVwbGUAcmVxdWlyZWQgZmllbGQgImVsdHMiIG1pc3NpbmcgZnJvbSBUdXBsZQBzaW1wbGUAZ2V0c2FtcGxlAC9kZXYvY29uc29sZQBfcGFyc2Vfd2hvbGUAX3VucGlja2xlAF9jb21wYXRfcGlja2xlACB2b2xhdGlsZQBweV9jb21waWxlAHNyZV9jb21waWxlAGl0ZXJ0b29scy5kcm9wd2hpbGUAaXRlcnRvb2xzLnRha2V3aGlsZQBmaWVsZCAndGVzdCcgaXMgcmVxdWlyZWQgZm9yIFdoaWxlAHJlcXVpcmVkIGZpZWxkICJib2R5IiBtaXNzaW5nIGZyb20gV2hpbGUAcmVxdWlyZWQgZmllbGQgInRlc3QiIG1pc3NpbmcgZnJvbSBXaGlsZQByZXF1aXJlZCBmaWVsZCAib3JlbHNlIiBtaXNzaW5nIGZyb20gV2hpbGUAZmluZF90emZpbGUAaXN4ZmlsZQBpc2ZpbGUAdGFyZmlsZQB0ZW1wZmlsZQB6aXBmaWxlAHRvZmlsZQBzeXMuc2V0cHJvZmlsZQBnZXRwcm9maWxlAGluIFB5RXZhbF9TZXRQcm9maWxlAGNQcm9maWxlAGZyb21maWxlAGNvcHlfZmlsZQBpc19maWxlAF9pbnRvX2ZpbGUAY3B5dGhvbi5ydW5fZmlsZQBmcm9tX2ZpbGUAcmVzaXplX2ZpbGUAY2Fubm90IG1tYXAgYW4gZW1wdHkgZmlsZQBkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiBkdW1wIHRoZSB0cmFjZWJhY2sgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLCBvciBvZiBhbGwgdGhyZWFkcyBpZiBhbGxfdGhyZWFkcyBpcyBUcnVlLCBpbnRvIGZpbGUAcmVnaXN0ZXIoc2lnbnVtLCBmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUsIGNoYWluPUZhbHNlKTogcmVnaXN0ZXIgYSBoYW5kbGVyIGZvciB0aGUgc2lnbmFsICdzaWdudW0nOiBkdW1wIHRoZSB0cmFjZWJhY2sgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLCBvciBvZiBhbGwgdGhyZWFkcyBpZiBhbGxfdGhyZWFkcyBpcyBUcnVlLCBpbnRvIGZpbGUAdW5leHBlY3RlZCBlbmQgb2YgZmlsZQBmcm9tIF9fZnV0dXJlX18gaW1wb3J0cyBtdXN0IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUARW5jb2Rpbmcgb2YgdGhlIGZpbGUAd3JpdGUgdG8gY2xvc2VkIGZpbGUASS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZQByZWFkaW50byBvZiBjbG9zZWQgZmlsZQBzZWVrIG9mIGNsb3NlZCBmaWxlAHBlZWsgb2YgY2xvc2VkIGZpbGUAZmx1c2ggb2YgY2xvc2VkIGZpbGUAdHJ1bmNhdGUgb2YgY2xvc2VkIGZpbGUAcmVhZGxpbmUgb2YgY2xvc2VkIGZpbGUAcmVhZCBvZiBjbG9zZWQgZmlsZQBCYWQgY29kZSBvYmplY3QgaW4gLnB5YyBmaWxlAEJhZCBtYWdpYyBudW1iZXIgaW4gLnB5YyBmaWxlAHdyaXRlb2JqZWN0IHdpdGggTlVMTCBmaWxlAFBhcnNlRmlsZQBzaW5nbGUAX2hhbmRsZQBjdHlwZXMuZGxzeW0vaGFuZGxlAGl0ZXJ0b29scy5jeWNsZQBhIF9fYmFzZXNfXyBpdGVtIGNhdXNlcyBhbiBpbmhlcml0YW5jZSBjeWNsZQBSZWZ1c2luZyB0byBjcmVhdGUgYW4gaW5oZXJpdGFuY2UgY3ljbGUAbG9uZyBkb3VibGUAcHlleHBhdCB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZQBkZWNpbWFsLkRpdmlzaW9uSW1wb3NzaWJsZQBhc3NpZ25tZW50IHRvIHlpZWxkIGV4cHJlc3Npb24gbm90IHBvc3NpYmxlAHVuYXJ5IG9wICVkIHNob3VsZCBub3QgYmUgcG9zc2libGUAJXMgb3AgJWQgc2hvdWxkIG5vdCBiZSBwb3NzaWJsZQBtb2R1bGUga2luZCAlZCBzaG91bGQgbm90IGJlIHBvc3NpYmxlACclLjIwMHMnIG9iamVjdCBpcyBub3QgcmV2ZXJzaWJsZQBpcyBub3QgcmV0cmlldmFibGUAcmVhbF9leGVjdXRhYmxlAF9iYXNlX2V4ZWN1dGFibGUAYWRqdXN0YWJsZQAnJS4yMDBzJyBvYmplY3QgaXMgbm90IHN1YnNjcmlwdGFibGUAdHlwZSAnJS4yMDBzJyBpcyBub3Qgc3Vic2NyaXB0YWJsZQBjb19leGNlcHRpb250YWJsZQBpc3ByaW50YWJsZQBEQkxfTUFYXzEwX0VYUCAtLSBtYXhpbXVtIGludCBlIHN1Y2ggdGhhdCAxMCoqZSBpcyByZXByZXNlbnRhYmxlAERCTF9NQVhfRVhQIC0tIG1heGltdW0gaW50IGUgc3VjaCB0aGF0IHJhZGl4KiooZS0xKSBpcyByZXByZXNlbnRhYmxlAF9zeW10YWJsZQBubyBzeW10YWJsZQBhdHRyaWJ1dGUgJyVWJyBvZiAnJS4xMDBzJyBvYmplY3RzIGlzIG5vdCB3cml0YWJsZQBtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3Qgd3JpdGFibGUAc2V0X2luaGVyaXRhYmxlAGdldF9pbmhlcml0YWJsZQBfY2hlY2tXcml0YWJsZQBhbmV4dF9hd2FpdGFibGUAY29fbGluZXRhYmxlAHVuY29sbGVjdGFibGUAZGlzcGF0Y2hfdGFibGUAKC0yKSA8PSBpeCAmJiBpeCA8PSB1c2FibGUAa2V5cy0+ZGtfdXNhYmxlICsga2V5cy0+ZGtfbmVudHJpZXMgPD0gdXNhYmxlADAgPD0ga2V5cy0+ZGtfbmVudHJpZXMgJiYga2V5cy0+ZGtfbmVudHJpZXMgPD0gdXNhYmxlADAgPD0ga2V5cy0+ZGtfdXNhYmxlICYmIGtleXMtPmRrX3VzYWJsZSA8PSB1c2FibGUAMCA8PSBtcC0+bWFfdXNlZCAmJiBtcC0+bWFfdXNlZCA8PSB1c2FibGUAZGlzYWJsZQBnbERpc2FibGUAZnJvbV9pdGVyYWJsZQBpdGVtcygpIHJldHVybmVkIG5vbi1pdGVyYWJsZQBfX2F3YWl0X18gcmV0dXJuZWQgYSBub24taXRlcmFibGUAJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZQBhcmd1bWVudCBvZiB0eXBlICclLjIwMHMnIGlzIG5vdCBpdGVyYWJsZQBjYW4gb25seSBqb2luIGFuIGl0ZXJhYmxlAGNhbiBvbmx5IGFzc2lnbiBhbiBpdGVyYWJsZQBzZW5kbXNnKCkgYXJndW1lbnQgMiBtdXN0IGJlIGFuIGl0ZXJhYmxlAHJlY3Ztc2dfaW50bygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZQBzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlAGFyZ3VtZW50IG11c3QgYmUgaXRlcmFibGUAJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhbiBhc3luYyBpdGVyYWJsZQBMb2FkIGF2ZXJhZ2VzIGFyZSB1bm9idGFpbmFibGUAfGlpOmVuYWJsZQB8T2k6ZW5hYmxlAGdsRW5hYmxlAF9QeUludGVycHJldGVyU3RhdGVfRW5hYmxlAGNyZWF0ZV9vbmNlX2NhbGxhYmxlACclLjIwMHMnIG9iamVjdCBpcyBub3QgY2FsbGFibGUAYXR0cmlidXRlIG9mIHR5cGUgJyUuMjAwcycgaXMgbm90IGNhbGxhYmxlAGl0ZXIodiwgdyk6IHYgbXVzdCBiZSBjYWxsYWJsZQB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBjYWxsYWJsZQBoYW5kbGVyIG11c3QgYmUgY2FsbGFibGUAZmlyc3QgYXJnIG11c3QgYmUgY2FsbGFibGUAdGhlIGVycmNoZWNrIGF0dHJpYnV0ZSBtdXN0IGJlIGNhbGxhYmxlAGZpcnN0IGl0ZW0gb2YgdGhlIHR1cGxlIHJldHVybmVkIGJ5IF9fcmVkdWNlX18gbXVzdCBiZSBjYWxsYWJsZQB3YXJuaW5ncy5fc2hvd3dhcm5tc2coKSBtdXN0IGJlIHNldCB0byBhIGNhbGxhYmxlAHRocmVhZC1sb2NhbCBzdG9yYWdlIGlzIG5vdCBhdmFpbGFibGUAdW5kZXJseWluZyBzdHJlYW0gaXMgbm90IHNlZWthYmxlAF9jaGVja1NlZWthYmxlAGNhbm5vdCBkZWNvZGUgUFlUSE9OSU9FTkNPRElORyBlbnZpcm9ubWVudCB2YXJpYWJsZQAlUiBpbiBfX3Nsb3RzX18gY29uZmxpY3RzIHdpdGggY2xhc3MgdmFyaWFibGUAd2lsZGNhcmQgbWFrZXMgcmVtYWluaW5nIHBhdHRlcm5zIHVucmVhY2hhYmxlAG5hbWUgY2FwdHVyZSAlUiBtYWtlcyByZW1haW5pbmcgcGF0dGVybnMgdW5yZWFjaGFibGUAY2FuJ3QganVtcCBpbnRvIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCBvciBjb2RlIG1heSBiZSB1bnJlYWNoYWJsZQBPOmlzX3NoYXJlYWJsZQAnJS4yMDBzJyBvYmplY3QgaXMgdW5zbGljZWFibGUAYXR0cmlidXRlICclVicgb2YgJyUuMTAwcycgb2JqZWN0cyBpcyBub3QgcmVhZGFibGUAX2NoZWNrUmVhZGFibGUAc2V0bG9jYWxlAGNvbmZpZ3VyZV9sb2NhbGUAY29lcmNlX2NfbG9jYWxlAGZhaWxlZCB0byBnZXQgTENfQ1RZUEUgbG9jYWxlAGZhaWxlZCB0byBMQ19DVFlQRSBsb2NhbGUAdXRmLTE2LWxlAHV0Zi0zMi1sZQBfYmxvY2tfaW52b2tlAHN0cmluZywgYnl0ZXMgb3Igb3MuUGF0aExpa2UAYXBvc3Ryb3BoZQBfY2xlYXJjYWNoZQBsaW5lY2FjaGUAT09wTzpscnVfY2FjaGUAcGF0aF9pbXBvcnRlcl9jYWNoZQBfX2NsZWFyX2NhY2hlAG5vX2NhY2hlAF9leHRlbnNpb25fY2FjaGUAX3dlYWtfY2FjaGUAX3BvaW50ZXJfdHlwZV9jYWNoZQBfY2xlYXJfdHlwZV9jYWNoZQBhcnJheSB0b28gbGFyZ2UAaXRlciBpbmRleCB0b28gbGFyZ2UAcmVwZWF0IGFyZ3VtZW50IHRvbyBsYXJnZQB0aW1lb3V0IGlzIHRvbyBsYXJnZQBub2RlX29mZnNldCBpcyB0b28gbGFyZ2UAbW1hcCBsZW5ndGggaXMgdG9vIGxhcmdlAGJ5dGUgc3RyaW5nIGlzIHRvbyBsYXJnZQB0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZQBUaGUgJ19sZW5ndGhfJyBhdHRyaWJ1dGUgaXMgdG9vIGxhcmdlAHBlbmRpbmcgYnVmZmVyIHRvbyBsYXJnZQBuZXcgcG9zaXRpb24gdG9vIGxhcmdlAHByZWNpc2lvbiB0b28gbGFyZ2UAYW5jaWxsYXJ5IGRhdGEgaXRlbSB0b28gbGFyZ2UAbWFkdmlzZSBsZW5ndGggdG9vIGxhcmdlAG5ldyBidWZmZXIgc2l6ZSB0b28gbGFyZ2UAYWJzb2x1dGUgdmFsdWUgdG9vIGxhcmdlAGNsb3NlcmFuZ2UAJVIgaXMgbm90IGluIHJhbmdlAFxVeHh4eHh4eHggb3V0IG9mIHJhbmdlAGJ5dGVhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UAYXJyYXkgYXNzaWdubWVudCBpbmRleCBvdXQgb2YgcmFuZ2UAbGlzdCBhc3NpZ25tZW50IGluZGV4IG91dCBvZiByYW5nZQB0dXBsZSBhc3NpZ25tZW50IGluZGV4IG91dCBvZiByYW5nZQBjaGlsZCBhc3NpZ25tZW50IGluZGV4IG91dCBvZiByYW5nZQByYW5nZSBvYmplY3QgaW5kZXggb3V0IG9mIHJhbmdlAHBvcCBpbmRleCBvdXQgb2YgcmFuZ2UAbW1hcCBpbmRleCBvdXQgb2YgcmFuZ2UAc3RyaW5nIGluZGV4IG91dCBvZiByYW5nZQBkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UAdHVwbGUgaW5kZXggb3V0IG9mIHJhbmdlAGNoaWxkIGluZGV4IG91dCBvZiByYW5nZQBJbmRleCBvdXQgb2YgcmFuZ2UAc291cmNlLCBkZXN0aW5hdGlvbiwgb3IgY291bnQgb3V0IG9mIHJhbmdlAElTTyBjYWxlbmRhciBjb21wb25lbnQgb3V0IG9mIHJhbmdlAG1rdGltZSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UAc3RyZXJyb3IoKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UAQ01TR19MRU4oKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UAQ01TR19TUEFDRSgpIGFyZ3VtZW50IG91dCBvZiByYW5nZQBmcmV4cCgpIHJlc3VsdCBvdXQgb2YgcmFuZ2UAeWVhciAlaSBpcyBvdXQgb2YgcmFuZ2UAQ2FuJ3QgcGlja2xlICVSOiBleHRlbnNpb24gY29kZSAlbGQgaXMgb3V0IG9mIHJhbmdlAGZsdXNoIHZhbHVlcyBvdXQgb2YgcmFuZ2UAc2Vjb25kcyBvdXQgb2YgcmFuZ2UAaG91ciBvdXQgb2YgcmFuZ2UAY2hhcmFjdGVyIG91dCBvZiByYW5nZQBzaWduYWwgbnVtYmVyIG91dCBvZiByYW5nZQBkYXkgb2YgeWVhciBvdXQgb2YgcmFuZ2UAbGluZW5vIG91dCBvZiByYW5nZQBnZXRzb2Nrb3B0IGJ1ZmxlbiBvdXQgb2YgcmFuZ2UAZGF5IG9mIHdlZWsgb3V0IG9mIHJhbmdlAHNlZWsgb3V0IG9mIHJhbmdlAGRheSBvZiBtb250aCBvdXQgb2YgcmFuZ2UAbmV3IHNpemUgb3V0IG9mIHJhbmdlAFRpbWVvdXQgdmFsdWUgb3V0IG9mIHJhbmdlAGRhdGUgdmFsdWUgb3V0IG9mIHJhbmdlAGRpdm1vZCgpIHJldHVybmVkIGEgdmFsdWUgb3V0IG9mIHJhbmdlAHdyaXRlIGJ5dGUgb3V0IG9mIHJhbmdlAHJlYWQgYnl0ZSBvdXQgb2YgcmFuZ2UAbWludXRlIG91dCBvZiByYW5nZQBkYXRhIG91dCBvZiByYW5nZQA6IG91dCBvZiByYW5nZQBsaW5lICVkLCBjb2x1bW4gJWQtJWQgaXMgbm90IGEgdmFsaWQgcmFuZ2UAaW50ZWdlciB0aW1lIG9mIGxhc3QgY2hhbmdlAF9jYW5jZWxfbWVzc2FnZQBEeW5hbWljIGxpbmtlciBmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBlcnJvciBtZXNzYWdlAEVycm9yIG1lc3NhZ2UAdW5hYmxlIHRvIGVuY29kZSBhbmQgY29weSBleGNlcHRpb24gbWVzc2FnZQB1bmFibGUgdG8gZm9ybWF0IGV4Y2VwdGlvbiBtZXNzYWdlAG91dCBvZiBtZW1vcnkgY29weWluZyBleGNlcHRpb24gbWVzc2FnZQB1bmFibGUgdG8gZ2V0IHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlAGdsUmVuZGVyYnVmZmVyU3RvcmFnZQBnbFNhbXBsZUNvdmVyYWdlAGlzX2Zyb3plbl9wYWNrYWdlAGF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgd2l0aCBubyBrbm93biBwYXJlbnQgcGFja2FnZQBhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgcGFja2FnZQBUcmFpbGluZyBnYXJiYWdlAGl0ZXJ0b29scy5fdGVlAF9lbGVtZW50dHJlZQB0aHJlZQBmX2ZmcmVlAGZfYmZyZWUAX1B5TWVtX0RlYnVnUmF3RnJlZQBfUHlNZW1fRGVidWdGcmVlAGlub2RlAGhhbXRfYXJyYXlfbm9kZQBsYXN0X25vZGUAaGFtdF9iaXRtYXBfbm9kZQBoYW10X2NvbGxpc2lvbl9ub2RlAGltcG9zc2libGUgbW9kdWxlIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ1RyeScgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnTGlzdCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnSW1wb3J0JyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdBc3NlcnQnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ1N1YnNjcmlwdCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnQ29uc3RhbnQnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ3N0bXQnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0F3YWl0JyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdTZXQnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0RpY3QnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ2FyZ3VtZW50cycgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnTWF0Y2hDbGFzcycgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnYWxpYXMnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ01hdGNoQXMnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0pvaW5lZFN0cicgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnZXhwcicgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnTmFtZWRFeHByJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdFeHByJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdBc3luY0Zvcicgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnRm9yJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdleGNlcHRoYW5kbGVyJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdFeGNlcHRIYW5kbGVyJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdUcnlTdGFyJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdNYXRjaFN0YXInIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ01hdGNoT3InIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0dlbmVyYXRvckV4cCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnSWZFeHAnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0xpc3RDb21wJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdTZXRDb21wJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdEaWN0Q29tcCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnVW5hcnlPcCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnQmluT3AnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0Jvb2xPcCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnUmV0dXJuJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdwYXR0ZXJuJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdNYXRjaFNpbmdsZXRvbicgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnRXhwcmVzc2lvbicgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnY29tcHJlaGVuc2lvbicgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnQW5uQXNzaWduJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdBdWdBc3NpZ24nIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0Fzc2lnbicgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnSW1wb3J0RnJvbScgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnWWllbGRGcm9tJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICd3aXRoaXRlbScgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnQ2FsbCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnTm9ubG9jYWwnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0dsb2JhbCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnQXN5bmNXaXRoJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdXaXRoJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdNYXRjaCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnYXJnJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdNYXRjaE1hcHBpbmcnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0NsYXNzRGVmJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdBc3luY0Z1bmN0aW9uRGVmJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdGdW5jdGlvbkRlZicgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnSWYnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0ludGVyYWN0aXZlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdNYXRjaFZhbHVlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdGb3JtYXR0ZWRWYWx1ZScgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnQXR0cmlidXRlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdEZWxldGUnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ1JhaXNlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdtYXRjaF9jYXNlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdUeXBlSWdub3JlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdDb21wYXJlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdGdW5jdGlvblR5cGUnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ05hbWUnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ01vZHVsZScgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnVHVwbGUnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ1doaWxlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdNYXRjaFNlcXVlbmNlJyBub2RlACB3aGlsZSB0cmF2ZXJzaW5nICdTbGljZScgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAna2V5d29yZCcgbm9kZQAgd2hpbGUgdHJhdmVyc2luZyAnWWllbGQnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ1N0YXJyZWQnIG5vZGUAIHdoaWxlIHRyYXZlcnNpbmcgJ0xhbWJkYScgbm9kZQBmaWxlbW9kZQBkZXZfbW9kZQBzdF9tb2RlAHN0cmljdF9tb2RlAGNoZWNrX2hhc2hfcHljc19tb2RlAHByZWNvbmZpZ19pbml0X3V0ZjhfbW9kZQB0aGUgZmQgJWkgbXVzdCBiZSBpbiBub24tYmxvY2tpbmcgbW9kZQBTdHJpbmcgZ2l2aW5nIHRoZSBmaWxlIG1vZGUAbXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCBtb2RlAHB1bnljb2RlAHdhaXRzdGF0dXNfdG9fZXhpdGNvZGUAZXJyb3Jjb2RlAF9vcGNvZGUAdW5rbm93biBvcGNvZGUAT246X2l0ZXJlbmNvZGUAcmVhZGJ1ZmZlcl9lbmNvZGUAY2hhcm1hcF9lbmNvZGUAYXNjaWlfZW5jb2RlAHJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUAdXRmXzE2X2xlX2VuY29kZQB1dGZfMzJfbGVfZW5jb2RlAHV0Zl8xNl9iZV9lbmNvZGUAdXRmXzMyX2JlX2VuY29kZQB1dGZfOF9lbmNvZGUAdXRmXzdfZW5jb2RlAHV0Zl8xNl9lbmNvZGUAdXRmXzMyX2VuY29kZQBsYXRpbl8xX2VuY29kZQBzdHJpbmcgaXMgdG9vIGxhcmdlIHRvIGVuY29kZQBtYXh1bmljb2RlAHRvdW5pY29kZQBmcm9tdW5pY29kZQBfcHl0aG9uMmpzX3VuaWNvZGUAJS4yMDBzIGF0dHJpYnV0ZSBtdXN0IGJlIHVuaWNvZGUAZG9udF93cml0ZV9ieXRlY29kZQB0eXBlY29kZQB1dGZfMTZfZXhfZGVjb2RlAHV0Zl8zMl9leF9kZWNvZGUAY2hhcm1hcF9kZWNvZGUAYXNjaWlfZGVjb2RlAHJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUAdXRmXzE2X2xlX2RlY29kZQB1dGZfMzJfbGVfZGVjb2RlAHV0Zl8xNl9iZV9kZWNvZGUAdXRmXzMyX2JlX2RlY29kZQB1dGZfOF9kZWNvZGUAdXRmXzdfZGVjb2RlAHV0Zl8xNl9kZWNvZGUAdXRmXzMyX2RlY29kZQBsYXRpbl8xX2RlY29kZQBjcl9jb2RlAGNvX2NvZGUAb3Blbl9jb2RlAHNpX2NvZGUAZ2lfY29kZQBhZ19jb2RlAGZfY29kZQBzdHJpbmcsIGJ5dGVzIG9yIGNvZGUAUE9TSVggZXhjZXB0aW9uIGNvZGUAc2lnbmFsIGNvZGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgdmFsaWQgdHlwZSBjb2RlAGNhbid0IGp1bXAgZnJvbSB1bnJlYWNoYWJsZSBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQBpbnZhbGlkIFNSRSBjb2RlAFB5X1VURjhNb2RlAEVycm9yQ29kZQB0aWxkZQBkaXZpZGUAX3B5b2RpZGUAc2F2ZV9yZWR1Y2UAcmVzb3VyY2UAZGVzdGluYXRpb24gaXMgdG9vIHNtYWxsIHRvIHJlY2VpdmUgZGF0YSBmcm9tIHNvdXJjZQBnbEdldFNoYWRlclNvdXJjZQBnbFNoYWRlclNvdXJjZQBmb3JjZQBPbjpzY2FuX29uY2UAKiBhcmd1bWVudCBtYXkgYXBwZWFyIG9ubHkgb25jZQAvIG1heSBhcHBlYXIgb25seSBvbmNlAEF0IG1vc3QgNDUgYnl0ZXMgYXQgb25jZQBjYW4ndCBoYXZlIHRleHQgYW5kIGJpbmFyeSBtb2RlIGF0IG9uY2UAJVIgaGFzIGFscmVhZHkgYmVlbiB1c2VkIG9uY2UAc2Vjb25kIGFyZ3VtZW50IChleGNlcHRpb25zKSBtdXN0IGJlIGEgbm9uLWVtcHR5IHNlcXVlbmNlACVzKCkgYXJnIGlzIGFuIGVtcHR5IHNlcXVlbmNlAG5vbi16ZXJvIHBhZGRpbmcgYml0cyBpbiBzaGlmdCBzZXF1ZW5jZQBwYXJ0aWFsIGNoYXJhY3RlciBpbiBzaGlmdCBzZXF1ZW5jZQB1bnRlcm1pbmF0ZWQgc2hpZnQgc2VxdWVuY2UAaW52YWxpZCBldmVudHMgc2VxdWVuY2UAc2VxdWVuY2UuaW5kZXgoeCk6IHggbm90IGluIHNlcXVlbmNlAGlsbGVnYWwgbXVsdGlieXRlIHNlcXVlbmNlAGluY29tcGxldGUgbXVsdGlieXRlIHNlcXVlbmNlAGlsbC1mb3JtZWQgc2VxdWVuY2UAJS4yMDBzIGlzIG5vdCBhIHNlcXVlbmNlAGNvbnN0cnVjdG9yIHJlcXVpcmVzIGEgc2VxdWVuY2UAX2l0ZXJlbmNvZGVfbGlzdCBuZWVkcyBhIHNlcXVlbmNlAGNhbm5vdCBjb252ZXJ0IGRpY3Rpb25hcnkgdXBkYXRlIHNlcXVlbmNlIGVsZW1lbnQgIyV6ZCB0byBhIHNlcXVlbmNlAGV2ZW50cyBtdXN0IGJlIGEgc2VxdWVuY2UAX2Fub255bW91c18gbXVzdCBiZSBhIHNlcXVlbmNlAF9maWVsZHNfIG11c3QgYmUgYSBzZXF1ZW5jZQB3cml0ZXYoKSBhcmcgMiBtdXN0IGJlIGEgc2VxdWVuY2UAcmVhZHYoKSBhcmcgMiBtdXN0IGJlIGEgc2VxdWVuY2UAc2Vjb25kIGFyZ3VtZW50IChleGNlcHRpb25zKSBtdXN0IGJlIGEgc2VxdWVuY2UAcmVxdWlyZWQgZmllbGQgInBhdHRlcm5zIiBtaXNzaW5nIGZyb20gTWF0Y2hTZXF1ZW5jZQBNdXRhYmxlU2VxdWVuY2UAc3ltbWV0cmljX2RpZmZlcmVuY2UAaWxsZWdhbCBwYXJhbWV0ZXIgZW50aXR5IHJlZmVyZW5jZQBlcnJvciBpbiBwcm9jZXNzaW5nIGV4dGVybmFsIGVudGl0eSByZWZlcmVuY2UAcmVjdXJzaXZlIGVudGl0eSByZWZlcmVuY2UAaXNpbnN0YW5jZQBzdHIoKSBvbiBhIGJ5dGVhcnJheSBpbnN0YW5jZQBzdHIoKSBvbiBhIGJ5dGVzIGluc3RhbmNlAGV4Y2VwdGVkIGN0eXBlcyBpbnN0YW5jZQBSZXNpemUgdGhlIG1lbW9yeSBidWZmZXIgb2YgYSBjdHlwZXMgaW5zdGFuY2UAaW5jb21wYXRpYmxlIHR5cGVzLCAlcyBpbnN0YW5jZSBpbnN0ZWFkIG9mICVzIGluc3RhbmNlAGJ5dGVzIG9yIGludGVnZXIgYWRkcmVzcyBleHBlY3RlZCBpbnN0ZWFkIG9mICVzIGluc3RhbmNlAHVuaWNvZGUgc3RyaW5nIG9yIGludGVnZXIgYWRkcmVzcyBleHBlY3RlZCBpbnN0ZWFkIG9mICVzIGluc3RhbmNlAGJ5dGVzIGV4cGVjdGVkIGluc3RlYWQgb2YgJXMgaW5zdGFuY2UAdW5pY29kZSBzdHJpbmcgZXhwZWN0ZWQgaW5zdGVhZCBvZiAlcyBpbnN0YW5jZQBjb2RlYyBtdXN0IHBhc3MgZXhjZXB0aW9uIGluc3RhbmNlAG5vdCBhIGN0eXBlIGluc3RhbmNlAG1vZHVsZSAlcyBzcGVjaWZpZXMgZXhlY3V0aW9uIHNsb3RzLCBidXQgZGlkIG5vdCBjcmVhdGUgYSBNb2R1bGVUeXBlIGluc3RhbmNlAGV4cGVjdGVkIENEYXRhIGluc3RhbmNlAG90aGVyIGFyZ3VtZW50IG11c3QgYmUgSyBpbnN0YW5jZQBub3QgYSBjaGFuY2UAZGV2aWNlAGl0ZXJ0b29scy5pc2xpY2UAY2FuIG9ubHkgYXNzaWduIGFycmF5IChub3QgIiUuMjAwcyIpIHRvIGFycmF5IHNsaWNlAG11c3QgYXNzaWduIGl0ZXJhYmxlIHRvIGV4dGVuZGVkIHNsaWNlAFNsaWNlAHN5cy5zZXR0cmFjZQBnZXR0cmFjZQBwZGIuc2V0X3RyYWNlAGZfdHJhY2UAdHJhY2VtYWxsb2NfcmVhbGxvYygpIGZhaWxlZCB0byBhbGxvY2F0ZSBhIHRyYWNlAHJpZ2h0LWJyYWNlAGxlZnQtYnJhY2UAaW4gUHlFdmFsX1NldFRyYWNlAGlzc3BhY2UAc2tpcGluaXRpYWxzcGFjZQBiYWNrc3BhY2UAbmFtZXNwYWNlAHR5cGVzLlNpbXBsZU5hbWVzcGFjZQBwX3NlcF9ieV9zcGFjZQBuX3NlcF9ieV9zcGFjZQBhbmNpbGxhcnkgZGF0YSBkb2VzIG5vdCBmaXQgaW4gY2FsY3VsYXRlZCBzcGFjZQBpbnBsYWNlAGhlYXByZXBsYWNlAGJhY2tzbGFzaHJlcGxhY2UAeG1sY2hhcnJlZnJlcGxhY2UAbmFtZXJlcGxhY2UAfGlpaTpyZXBsYWNlAHxpaWlpTyRpOnJlcGxhY2UAfGlpaWlpaWlPJGk6cmVwbGFjZQBnbEZyb250RmFjZQBnbEN1bGxGYWNlAF9iZQB1dGYtMTYtYmUAdXRmLTMyLWJlAFRlAFBlAE1lACUuKmUAdW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJhY3RlciAnJWMnICgweCV4KSBhdCBpbmRleCAlemQAJVUoKSByZXF1aXJlcyBhIGNvZGUgb2JqZWN0IHdpdGggJXpkIGZyZWUgdmFycywgbm90ICV6ZAAlVSByZXF1aXJlcyBjbG9zdXJlIG9mIGxlbmd0aCAlemQsIG5vdCAlemQAbXVzdCBiZSBzZXF1ZW5jZSBvZiBsZW5ndGggJWQsIG5vdCAlemQAbGVuZ3RoIG9mIHRoZSBORVdPQkpfRVggYXJndW1lbnQgdHVwbGUgbXVzdCBiZSBleGFjdGx5IDMsIG5vdCAlemQAX19nZXRuZXdhcmdzX2V4X18gc2hvdWxkIHJldHVybiBhIHR1cGxlIG9mIGxlbmd0aCAyLCBub3QgJXpkAEFycmF5IGxlbmd0aCBtdXN0IGJlID49IDAsIG5vdCAlemQAcmFuZ2UgZXhwZWN0ZWQgYXQgbW9zdCAzIGFyZ3VtZW50cywgZ290ICV6ZABleHBlY3RlZCBhdCBtb3N0IDEgYXJndW1lbnRzLCBnb3QgJXpkACUuMjAwcyBleHBlY3RlZCAlcyV6ZCBhcmd1bWVudCVzLCBnb3QgJXpkAGV4cGVjdGVkICVkIGFyZ3VtZW50JXMsIGdvdCAlemQAYXJndW1lbnQgJXpkAG5vdCBlbm91Z2ggZGF0YSB0byB1bnBhY2sgJXpkIGJ5dGVzIGF0IG9mZnNldCAlemQAbm8gc3BhY2UgdG8gcGFjayAlemQgYnl0ZXMgYXQgb2Zmc2V0ICV6ZABtaW5pbXVtIHNpemUgaXMgJXpkAHVucGFja2VkIHR1cGxlIHNob3VsZCBoYXZlICVzJXpkIGVsZW1lbnQlcywgYnV0IGhhcyAlemQAZnJvbSAlemQgdG8gJXpkAG5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gZnJvbWhleCgpIGFyZyBhdCBwb3NpdGlvbiAlemQAaW52YWxpZCBceCBlc2NhcGUgYXQgcG9zaXRpb24gJXpkAE5lZ2F0aXZlIHNlZWsgcG9zaXRpb24gJXpkACVzOiBsaW5lICV6ZCwgY29sdW1uICV6ZABjb2RlIG9iamVjdCByZXF1aXJlcyBhIGNsb3N1cmUgb2YgZXhhY3RseSBsZW5ndGggJXpkAGRpdm1vZCgpIHJldHVybmVkIGEgdHVwbGUgb2Ygc2l6ZSAlemQAYXR0ZW1wdCB0byBhc3NpZ24gYXJyYXkgb2Ygc2l6ZSAlemQgdG8gZXh0ZW5kZWQgc2xpY2Ugb2Ygc2l6ZSAlemQAYXR0ZW1wdCB0byBhc3NpZ24gYnl0ZXMgb2Ygc2l6ZSAlemQgdG8gZXh0ZW5kZWQgc2xpY2Ugb2Ygc2l6ZSAlemQAYXR0ZW1wdCB0byBhc3NpZ24gc2VxdWVuY2Ugb2Ygc2l6ZSAlemQgdG8gZXh0ZW5kZWQgc2xpY2Ugb2Ygc2l6ZSAlemQAbmVnYXRpdmUgc2VlayB2YWx1ZSAlemQAbmVnYXRpdmUgc2l6ZSB2YWx1ZSAlemQATmVnYXRpdmUgc2l6ZSB2YWx1ZSAlemQAVG9vICVzIGFyZ3VtZW50cyBmb3IgJVI7IGFjdHVhbCAlemQsIGV4cGVjdGVkICV6ZAAnJWMnIGZvcm1hdCByZXF1aXJlcyAlemQgPD0gbnVtYmVyIDw9ICV6ZABJbnZhbGlkIHRyYW5zaXRpb24gaW5kZXggZm91bmQgd2hpbGUgcmVhZGluZyBUWmlmOiAlemQAc3B3ZABnZXRjd2QAc3RkAGZpZWxkICd2YWx1ZScgaXMgcmVxdWlyZWQgZm9yIGtleXdvcmQAcmVxdWlyZWQgZmllbGQgImNvbF9vZmZzZXQiIG1pc3NpbmcgZnJvbSBrZXl3b3JkAHJlcXVpcmVkIGZpZWxkICJsaW5lbm8iIG1pc3NpbmcgZnJvbSBrZXl3b3JkAHJlcXVpcmVkIGZpZWxkICJ2YWx1ZSIgbWlzc2luZyBmcm9tIGtleXdvcmQAdGhpcmQAbmV4dF90b3dhcmQAZ3VhcmQAZGlzY2FyZABzbXRwZABzdG9kAHByb2QAZGl2bW9kAGltb2QAZmNobW9kAG9zLmNobW9kAGZtb2QAcGVyaW9kAGNsYXNzbWV0aG9kAGluc3RhbmNlbWV0aG9kAHN0YXRpY21ldGhvZABidWlsdGluX2Z1bmN0aW9uX29yX21ldGhvZABidWlsdGluX21ldGhvZAB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABpdGVtICV6ZCBpbiBfYXJndHlwZXNfIGhhcyBubyBmcm9tX3BhcmFtIG1ldGhvZAB0aGUgZnVuY3Rpb24gKG9yIG90aGVyIGNhbGxhYmxlKSBpbXBsZW1lbnRpbmcgYSBtZXRob2QAc2xpY2UgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIGhhdmUgYW4gX19pbmRleF9fIG1ldGhvZABzbGljZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3IgTm9uZSBvciBoYXZlIGFuIF9faW5kZXhfXyBtZXRob2QAb2JqZWN0ICUuNTBzIGRvZXMgbm90IGhhdmUgX19hbmV4dF9fIG1ldGhvZABvYmplY3QgJS41MHMgZG9lcyBub3QgaGF2ZSBfX2F3YWl0X18gbWV0aG9kAG9iamVjdCAlLjUwcyBkb2VzIG5vdCBoYXZlIF9fYWl0ZXJfXyBtZXRob2QAdHlwZSAlLjEwMHMgZG9lc24ndCBkZWZpbmUgX19yb3VuZF9fIG1ldGhvZAB0eXBlICUuMTAwcyBkb2Vzbid0IGRlZmluZSBfX3RydW5jX18gbWV0aG9kAFB5b2RpZGUgY2Fubm90IGdlbmVyYXRlIGEgcmVwciBmb3IgdGhpcyBKYXZhc2NyaXB0IG9iamVjdCBiZWNhdXNlIGl0IGhhcyBubyAndG9TdHJpbmcnIG1ldGhvZABhcmd1bWVudCAxIG11c3QgaGF2ZSBhICJ3cml0ZSIgbWV0aG9kAE1vZAB3aW5zb3VuZABpbnRlcm5hbCBlcnJvciBpbiBjb250ZXh0X3NldHJvdW5kAGRlZXBjb3B5IGhlbHBlciBub3QgZm91bmQAcG9ydC9wcm90byBub3QgZm91bmQAc2VydmljZS9wcm90byBub3QgZm91bmQAc3Vic2VjdGlvbiBub3QgZm91bmQAcHJvdG9jb2wgbm90IGZvdW5kAHN1cGVyKCk6IF9fY2xhc3NfXyBjZWxsIG5vdCBmb3VuZABzdWJzdHJpbmcgbm90IGZvdW5kAGNoYW5uZWwgJWxsZCBub3QgZm91bmQAX19pbXBvcnRfXyBub3QgZm91bmQAX19idWlsZF9jbGFzc19fIG5vdCBmb3VuZAAvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZABubyBlbGVtZW50IGZvdW5kAE5vbi1oZXhhZGVjaW1hbCBkaWdpdCBmb3VuZABzZXF1ZW5jZSBpdGVtICV6ZDogZXhwZWN0ZWQgYSBieXRlcy1saWtlIG9iamVjdCwgJS44MHMgZm91bmQAZGVjb2RpbmcgdG8gc3RyOiBuZWVkIGEgYnl0ZXMtbGlrZSBvYmplY3QsICUuODBzIGZvdW5kAHNlcGFyYXRvcjogZXhwZWN0ZWQgc3RyIGluc3RhbmNlLCAlLjgwcyBmb3VuZABzZXF1ZW5jZSBpdGVtICV6ZDogZXhwZWN0ZWQgc3RyIGluc3RhbmNlLCAlLjgwcyBmb3VuZABvcmQoKSBleHBlY3RlZCBzdHJpbmcgb2YgbGVuZ3RoIDEsIGJ1dCAlLjIwMHMgZm91bmQAZXhwZWN0ZWQgYnl0ZXMsICUuMjAwcyBmb3VuZABleHBlY3RlZCBQaWNrbGVCdWZmZXIsICUuMjAwcyBmb3VuZABleHBlY3RlZCBpbnQsICVzIGZvdW5kAGV4cGVjdGVkIGJ5dGVzLCAlcyBmb3VuZAAlczogTm8gX2NzdiBtb2R1bGUgc3RhdGUgZm91bmQAb3JkKCkgZXhwZWN0ZWQgYSBjaGFyYWN0ZXIsIGJ1dCBzdHJpbmcgb2YgbGVuZ3RoICV6ZCBmb3VuZAB1bmV4cGVjdGVkIE1BUksgZm91bmQAbm8gYmluZGluZyBmb3Igbm9ubG9jYWwgJyVVJyBmb3VuZAB0aGUgaW5zdGFuY2UgdG8gd2hpY2ggYSBtZXRob2QgaXMgYm91bmQAbWljcm9zZWNvbmQAbXV0ZXgrY29uZAB1bmV4cGVjdGVkIGNvbXBhcmlzb24ga2luZAB1bmtub3duIGV4cHJlc3Npb24ga2luZAB1bmtub3duIGYtdmFsdWUgY29udmVyc2lvbiBraW5kAGNhbiBvbmx5IGV4dGVuZCB3aXRoIGFycmF5IG9mIHNhbWUga2luZABpbnZhbGlkIGtpbmQAaXRlcmZpbmQAeSp8bm46cmZpbmQAeSp8bm46ZmluZABzb2NrZXQuYmluZABleHRlbmQAYXN5bmNfZ2VuZXJhdG9yX2FzZW5kAE8mTzpjaGFubmVsX3NlbmQAeSp8aTpzZW5kAGFwcGVuZABtb3ZlX3RvX2VuZABleGNlcHRpb24gZW5kAHN0cmVhbSBlbmQAYW1wZXJzYW5kAG9wZXJhbmQAX2V4cGFuZABEZWZhdWx0SGFuZGxlckV4cGFuZABjcHl0aG9uLnJ1bl9jb21tYW5kAGlhbmQAc2lfYmFuZABsb2dpY2FsX2FuZABCaXRBbmQAY21kAHJ0K3JsZABzdG9sZABpfGlpOnNldF90aHJlc2hvbGQAZ2V0X3RocmVzaG9sZABzdHJfZGlnaXRzX2NoZWNrX3RocmVzaG9sZAB1bmJvdW5kZWQgcmVhZCByZXR1cm5lZCBtb3JlIGJ5dGVzIHRoYW4gYSBQeXRob24gYnl0ZXMgb2JqZWN0IGNhbiBob2xkAGNhc2Vmb2xkAFJhdyBzdHJlYW0gcmV0dXJuZWQgaW52YWxpZCBwb3NpdGlvbiAlbGxkAGsgbXVzdCBub3QgZXhjZWVkICVsbGQAbWluKG4gLSBrLCBrKSBtdXN0IG5vdCBleGNlZWQgJWxsZAB1bnJlY29nbml6ZWQgaW50ZXJwcmV0ZXIgSUQgJWxsZABjaGFybWFwX2J1aWxkAF9pc19weXRob25fYnVpbGQAYWZ0ZXJfaW5fY2hpbGQAUHlPU19BZnRlckZvcmtfQ2hpbGQAc2NoZWRfeWllbGQAbnVtYmVyIG9mIGJpdHMgaW52YWxpZCBmb3IgYml0IGZpZWxkAG9mZnNldCBpbiBieXRlcyBvZiB0aGlzIGZpZWxkAHNpemUgaW4gYnl0ZXMgb2YgdGhpcyBmaWVsZABXcml0aW5nIG5lZ2F0aXZlIHZhbHVlIGludG8gdW5zaWduZWQgZmllbGQAdW5uYW1lZCBmaWVsZABZaWVsZABfY3R5cGVzLkNGaWVsZABsb2NrX2hlbGQAJS4yMDBzX0FycmF5XyVsZABNZW1vIHZhbHVlIG5vdCBmb3VuZCBhdCBpbmRleCAlbGQAdW5yZWdpc3RlcmVkIGV4dGVuc2lvbiBjb2RlICVsZABmYWN0b3JpYWwoKSBhcmd1bWVudCBzaG91bGQgbm90IGV4Y2VlZCAlbGQAX3V1aWQAc2V0dWlkAGdldHVpZABzZXRyZXVpZABzdF91aWQAc2lfdWlkAGlpaTp3YWl0aWQAc2V0c2lkAGk6Z2V0c2lkAGZfZnNpZABpaTp3YWl0cGlkAGdldHBpZABnZXRwcGlkAHNpX3BpZAB2b2lkAGN0ZXJtaWQAdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUgcGF0aCBpcyBpbnZhbGlkAEZyb3plbiBvYmplY3QgbmFtZWQgJVIgaXMgaW52YWxpZABfX2dldF9fKE5vbmUsIE5vbmUpIGlzIGludmFsaWQAbW1hcCBjbG9zZWQgb3IgaW52YWxpZABtYWR2aXNlIGxlbmd0aCBpbnZhbGlkAGFyZ3VtZW50IHR5cGUgaW52YWxpZABBU1Qgbm9kZSBjb2x1bW4gcmFuZ2UgKCVkLCAlZCkgZm9yIGxpbmUgcmFuZ2UgKCVkLCAlZCkgaXMgbm90IHZhbGlkAEFTVCBub2RlIGxpbmUgcmFuZ2UgKCVkLCAlZCkgaXMgbm90IHZhbGlkAFB5Q2Fwc3VsZV9JbXBvcnQgIiVzIiBpcyBub3QgdmFsaWQAc2V0Z2lkAGdldGdpZABpaTpzZXRwZ2lkAGk6Z2V0cGdpZABzZXRyZWdpZABzdF9naWQAc3RkOjpiYWRfdHlwZWlkAGNpZABwZXJzaXN0ZW50X2lkAGpzX2lkAF9jaGFubmVsX2lkAGhpd2lyZV9pZABidWlsdGlucy5pZABpbGxlZ2FsIGNoYXJhY3RlcihzKSBpbiBwdWJsaWMgaWQAY2xvc2VmZABkc3RfZGlyX2ZkAHNyY19kaXJfZmQAaXwkcDpzZXRfd2FrZXVwX2ZkAC9wcm9jL3NlbGYvZmQAJXM6IGNhbid0IHNwZWNpZnkgYm90aCBkaXJfZmQgYW5kIGZkAG11bHRpcGxlIGV4Y2VwdGlvbiB0eXBlcyBtdXN0IGJlIHBhcmVudGhlc2l6ZWQAR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkAEZ1bmN0aW9uIHBhcmFtZXRlcnMgY2Fubm90IGJlIHBhcmVudGhlc2l6ZWQATGFtYmRhIGV4cHJlc3Npb24gcGFyYW1ldGVycyBjYW5ub3QgYmUgcGFyZW50aGVzaXplZABTdHJpbmdzIHNob3VsZCBiZSBldmVuLXNpemVkAEV4aXN0aW5nIGV4cG9ydHMgb2YgZGF0YTogb2JqZWN0IGNhbm5vdCBiZSByZS1zaXplZABpc19maW5hbGl6ZWQAaXNfbm9ybWFsaXplZABwcmVpbml0aWFsaXplZABtYWluIGludGVycHJldGVyIGFscmVhZHkgaW5pdGlhbGl6ZWQAdGhyZWFkIHN0YXRlIGFscmVhZHkgaW5pdGlhbGl6ZWQAUHl0aG9uIGltcG9ydCBtYWNoaW5lcnkgbm90IGluaXRpYWxpemVkAGN0eXBlcyBzdGF0ZSBpcyBub3QgaW5pdGlhbGl6ZWQAaW50ZXJwcmV0ZXIgbm90IGluaXRpYWxpemVkAHJ1bnRpbWUgY29yZSBub3QgaW5pdGlhbGl6ZWQAY29yZSBpbml0aWFsaXplZABfbG9jYWxkdW1teV9kZXN0cm95ZWQAbmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQAY2F0Y2hpbmcgY2xhc3NlcyB0aGF0IGRvIG5vdCBpbmhlcml0IGZyb20gQmFzZUV4Y2VwdGlvbiBpcyBub3QgYWxsb3dlZABmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZABzdXJyb2dhdGVzIG5vdCBhbGxvd2VkAGYtc3RyaW5nOiBlbXB0eSBleHByZXNzaW9uIG5vdCBhbGxvd2VkAERpc2NvbnRpbnVvdXMgcGFkZGluZyBub3QgYWxsb3dlZABMZWFkaW5nIHBhZGRpbmcgbm90IGFsbG93ZWQAT25seSBiYXNlNjQgZGF0YSBpcyBhbGxvd2VkAEludGVybmFsIGxvY2sgY291bnQgb3ZlcmZsb3dlZABfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkACVzIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkAGFkanVzdGVkAG5lc3RlZABzb3J0ZWQAd2hlbmNlIHZhbHVlICVkIHVuc3VwcG9ydGVkAGNvbXBhcmluZyBzdHJpbmdzIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaXMgbm90IHN1cHBvcnRlZABkZWNvZGluZyBzdHIgaXMgbm90IHN1cHBvcnRlZABhdHRyaWJ1dGUgZGVsZXRpb24gaXMgbm90IHN1cHBvcnRlZABjb252ZXJzaW9uIGZyb20gJXMgdG8gRGVjaW1hbCBpcyBub3Qgc3VwcG9ydGVkAG1lbW9yeXZpZXc6IGZvcm1hdCAlcyBub3Qgc3VwcG9ydGVkAHNldHRpbmcgc3RhY2sgc2l6ZSBub3Qgc3VwcG9ydGVkAEluaXRpYWxpemF0aW9uIGFyZ3VtZW50cyBhcmUgbm90IHN1cHBvcnRlZABtdWx0aS1ieXRlIGVuY29kaW5ncyBhcmUgbm90IHN1cHBvcnRlZABsb2NhbGUgbm90IHN1cHBvcnRlZABwYXJhbWZsYWcgdmFsdWUgJWQgbm90IHN1cHBvcnRlZABfdHlwZV8gJyVzJyBub3Qgc3VwcG9ydGVkAHBhcnNpbmcgYWJvcnRlZABBYm9ydGVkAHRoZSBTVFJJTkcgb3Bjb2RlIGFyZ3VtZW50IG11c3QgYmUgcXVvdGVkAHNpbmdsZSBlbXB0eSBmaWVsZCByZWNvcmQgbXVzdCBiZSBxdW90ZWQAdGhlIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSBvciBpdHMgdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkAE5vdF9pbXBsZW1lbnRlZABtdWx0aS1kaW1lbnNpb25hbCBzbGljaW5nIGlzIG5vdCBpbXBsZW1lbnRlZABtdWx0aS1kaW1lbnNpb25hbCBzdWItdmlld3MgYXJlIG5vdCBpbXBsZW1lbnRlZABwYXJhbWZsYWcgJXUgbm90IHlldCBpbXBsZW1lbnRlZABfX3N1YmNsYXNzaG9va19fIG11c3QgcmV0dXJuIGVpdGhlciBGYWxzZSwgVHJ1ZSwgb3IgTm90SW1wbGVtZW50ZWQAZGVhbGxvY2F0aW5nIE5vdEltcGxlbWVudGVkAGNvcm91dGluZSAnJVMnIHdhcyBuZXZlciBhd2FpdGVkAHNpZ25hbCBrZXlzIGNhbm5vdCBiZSBkZWxldGVkAGNvbnRleHQgYXR0cmlidXRlcyBjYW5ub3QgYmUgZGVsZXRlZABhcmdzIG1heSBub3QgYmUgZGVsZXRlZABfX2NvbnRleHRfXyBtYXkgbm90IGJlIGRlbGV0ZWQAX190cmFjZWJhY2tfXyBtYXkgbm90IGJlIGRlbGV0ZWQAX19jYXVzZV9fIG1heSBub3QgYmUgZGVsZXRlZABzdXBlcigpOiBhcmdbMF0gZGVsZXRlZABDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSBsb2dpY2FsIGVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkAHRyYWNlYmFjayBsb29wIGRldGVjdGVkAENpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZABOVUxMIHN0Z2RpY3QgdW5leHBlY3RlZABFT0YgcmVhZCB3aGVyZSBub3QgZXhwZWN0ZWQAZGljdCBleHBlY3RlZABFT0YgcmVhZCB3aGVyZSBvYmplY3QgZXhwZWN0ZWQAbm8gcG9zaXRpb25hbCBhcmd1bWVudHMgZXhwZWN0ZWQAYW4gaW5zdGFuY2Ugb2YgQ29udGV4dCB3YXMgZXhwZWN0ZWQAYW4gaW5zdGFuY2Ugb2YgQ29udGV4dFZhciB3YXMgZXhwZWN0ZWQAYW4gaW5zdGFuY2Ugb2YgVG9rZW4gd2FzIGV4cGVjdGVkACVSIG5vdCBpbiBzeXMubW9kdWxlcyBhcyBleHBlY3RlZABvbmUgY2hhcmFjdGVyIGJ5dGVzLCBieXRlYXJyYXkgb3IgaW50ZWdlciBleHBlY3RlZABvbmUgY2hhcmFjdGVyIHVuaWNvZGUgc3RyaW5nIGV4cGVjdGVkAEludCBvciBTdHJpbmcgZXhwZWN0ZWQAdGhlIEJ1ZmZlcmVkUldQYWlyIG9iamVjdCBpcyBiZWluZyBnYXJiYWdlLWNvbGxlY3RlZABvbnJlamVjdGVkAF9maWx0ZXJzX211dGF0ZWQAb25seSBzaW5nbGUgdGFyZ2V0IChub3QgJXMpIGNhbiBiZSBhbm5vdGF0ZWQAb25seSBzaW5nbGUgdGFyZ2V0IChub3QgdHVwbGUpIGNhbiBiZSBhbm5vdGF0ZWQAJyUuMjAwcycgb2JqZWN0IGNhbid0IGJlIGNvbmNhdGVuYXRlZABpc29sYXRlZAAnJS4yMDBzJyBvYmplY3QgY2FuJ3QgYmUgcmVwZWF0ZWQAdHlwZSAnJS4xMDBzJyBpcyBub3QgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGJ1dCBpdHMgYmFzZSB0eXBlICclLjEwMHMnIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZABudW1iZXIgb2YgYmxvY2tzIGFsbG9jYXRlZABwaWNrbGUgZGF0YSB3YXMgdHJ1bmNhdGVkAC4uLiB0cnVuY2F0ZWQAYnVmZmVyX3VzZWQAQ2Fubm90IG1vZGlmeSBhIHN0cmluZyBjdXJyZW50bHkgdXNlZABsaW5lIGJ1ZmZlcmluZyAoYnVmZmVyaW5nPTEpIGlzbid0IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSwgdGhlIGRlZmF1bHQgYnVmZmVyIHNpemUgd2lsbCBiZSB1c2VkAHJldmVyc2VkAGVsYXBzZWQAY2hhbm5lbCBhbHJlYWR5IGNsb3NlZABUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZAAnJWMnIHdhcyBuZXZlciBjbG9zZWQAY2hhbm5lbCBjbG9zZWQAY2hhbm5lbCAlbGxkIGNsb3NlZABfY2hlY2tDbG9zZWQAYXNjaWlfaXNjYXNlZAB1bmljb2RlX2lzY2FzZWQAcHJpbWUgbnVtYmVyIGdpdmluZyB0aGUgbW9kdWx1cyBvbiB3aGljaCB0aGUgaGFzaCBmdW5jdGlvbiBpcyBiYXNlZABfUHlPU19JbnRlcnJ1cHRPY2N1cnJlZABzdGFycmVkAGZpZWxkICdjdHgnIGlzIHJlcXVpcmVkIGZvciBTdGFycmVkAGZpZWxkICd2YWx1ZScgaXMgcmVxdWlyZWQgZm9yIFN0YXJyZWQAcmVxdWlyZWQgZmllbGQgImN0eCIgbWlzc2luZyBmcm9tIFN0YXJyZWQAcmVxdWlyZWQgZmllbGQgInZhbHVlIiBtaXNzaW5nIGZyb20gU3RhcnJlZABtaXJyb3JlZABUdXBsZSBvciBzdHJ1Y3RfdGltZSBhcmd1bWVudCByZXF1aXJlZABmcm9tdXRjOiBub24tTm9uZSBkc3QoKSByZXN1bHQgcmVxdWlyZWQAZnJvbXV0Yzogbm9uLU5vbmUgdXRjb2Zmc2V0KCkgcmVzdWx0IHJlcXVpcmVkAGEgYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQAYW4gaW50ZWdlciBpcyByZXF1aXJlZABhIHN0cmljdGx5IHBvc2l0aXZlIGludGVnZXIgaXMgcmVxdWlyZWQAYSBzdWNjZXNzZnVsIHByaW9yIGNhbGwgdG8gZnVuY3Rpb24gWE1MX0dldEJ1ZmZlciBpcyByZXF1aXJlZABhIG51bWJlciBpcyByZXF1aXJlZABzbGljZSBzdG9wIGlzIHJlcXVpcmVkAGludmFsaWQgbW9kZSBmb3IgZGxvcGVuKCk6IEVpdGhlciBSVExEX0xBWlkgb3IgUlRMRF9OT1cgaXMgcmVxdWlyZWQAZGljdGlvbmFyeSB1cGRhdGUgc2VxdWVuY2UgZWxlbWVudCAjJXpkIGhhcyBsZW5ndGggJXpkOyAyIGlzIHJlcXVpcmVkAG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgQVBJIHJlcXVpcmVkAG9ubHkgY2xhc3NlcyBtYXkgYmUgcmVnaXN0ZXJlZABjYW5ub3QgZW50ZXIgY29udGV4dDogJVIgaXMgYWxyZWFkeSBlbnRlcmVkAGNhbm5vdCBleGl0IGNvbnRleHQ6ICVSIGhhcyBub3QgYmVlbiBlbnRlcmVkAHJlc2VydmVkIHByZWZpeCAoeG1sbnMpIG11c3Qgbm90IGJlIGRlY2xhcmVkIG9yIHVuZGVjbGFyZWQAc2hhcmVkAHR5cGVkAF9vdmVybGFwcGVkAGRlY2ltYWwuQ2xhbXBlZABfaXNfb3duZWQAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAHVuZXhwZWN0ZWRfaGFuZGxlciB1bmV4cGVjdGVkbHkgcmV0dXJuZWQAcmVhZCgpIHJldHVybmVkIHRvbyBtdWNoIGRhdGE6ICVpIGJ5dGVzIHJlcXVlc3RlZCwgJXpkIHJldHVybmVkAHJlYWQoKSByZXR1cm5lZCB0b28gbXVjaCBkYXRhOiAlemQgYnl0ZXMgcmVxdWVzdGVkLCAlemQgcmV0dXJuZWQAZGVjaW1hbC5EaXZpc2lvblVuZGVmaW5lZABmdXR1cmUgZmVhdHVyZSAlLjEwMHMgaXMgbm90IGRlZmluZWQAbmFtZSAnJS4yMDBzJyBpcyBub3QgZGVmaW5lZAAgaW4gcHJpbnRfY2hhaW5lZABjYW4ndCBjb252ZXJ0IG5lZ2F0aXZlIGludCB0byB1bnNpZ25lZABpc19zaWduZWQAY29kZTogY29fY29kZSBpcyBtYWxmb3JtZWQAdGV4dCBkZWNsYXJhdGlvbiBub3Qgd2VsbC1mb3JtZWQAWE1MIGRlY2xhcmF0aW9uIG5vdCB3ZWxsLWZvcm1lZAAndW5uYW1lZABvbmZ1bGZpbGxlZABjYW5jZWxsZWQAQ2Fubm90IGluc3RhbGwgYSBwcm9maWxlIGZ1bmN0aW9uIHdoaWxlIGFub3RoZXIgcHJvZmlsZSBmdW5jdGlvbiBpcyBiZWluZyBpbnN0YWxsZWQAQ2Fubm90IGluc3RhbGwgYSB0cmFjZSBmdW5jdGlvbiB3aGlsZSBhbm90aGVyIHRyYWNlIGZ1bmN0aW9uIGlzIGJlaW5nIGluc3RhbGxlZABJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLl9faW5pdF9fKCkgbm90IGNhbGxlZABYTUxQYXJzZXIuX19pbml0X18oKSB3YXNuJ3QgY2FsbGVkAGhvdyBtYW55IHRpbWVzIHRoaXMgaXMgY2FsbGVkAGhvdyBtYW55IHRpbWVzIHRoaXMgd2FzIGNhbGxlZABjdHlwZXMgb2JqZWN0cyBjb250YWluaW5nIHBvaW50ZXJzIGNhbm5vdCBiZSBwaWNrbGVkAGxvY2FsZSBxdWVyeSBmYWlsZWQAcmFuZG9tX2RldmljZSBnZXRlbnRyb3B5IGZhaWxlZABpbml0aWFsaXppbmcgemlwaW1wb3J0IGZhaWxlZABDb252ZXJzaW9uIGZyb20gcHl0aG9uIHRvIGphdmFzY3JpcHQgZmFpbGVkAGNvbmRpdGlvbl92YXJpYWJsZSB0aW1lZF93YWl0IGZhaWxlZABjb25kaXRpb25fdmFyaWFibGUgd2FpdCBmYWlsZWQAcmVjdXJzaXZlX211dGV4IGNvbnN0cnVjdG9yIGZhaWxlZABmZmlfcHJlcF9jaWZfdmFyIGZhaWxlZABleHRlcm5hbCBpbXBvcnRlciBzZXR1cCBmYWlsZWQAZXhhY3QgY29udmVyc2lvbiBmb3IgY29tcGFyaXNvbiBmYWlsZWQAQXNzZXJ0aW9uIGZhaWxlZABfX3RocmVhZF9zcGVjaWZpY19wdHIgY29uc3RydWN0aW9uIGZhaWxlZABpbnRlcnByZXRlciBjcmVhdGlvbiBmYWlsZWQAbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkAHRocmVhZDo6am9pbiBmYWlsZWQAcmVjdXJzaXZlX211dGV4IGxvY2sgZmFpbGVkAHRocmVhZDo6ZGV0YWNoIGZhaWxlZABkZWxldGlvbiBvZiBpbnRlcm5lZCBzdHJpbmcgZmFpbGVkAGZmaV9wcmVwX2NpZiBmYWlsZWQAWE1MX1BhcnNlckNyZWF0ZSBmYWlsZWQAZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkAGNhbGwgdG8gZ2V0Y3dkIGZhaWxlZAAlcyB3aXRoICclcycgY29kZWMgZmFpbGVkAENhbid0IHBpY2tsZSAlUjogYXR0cmlidXRlIGxvb2t1cCAlUyBvbiAlUyBmYWlsZWQAQ2FuJ3QgcGlja2xlICVSOiBpbXBvcnQgb2YgbW9kdWxlICVSIGZhaWxlZABQeU1VVEVYX0lOSVQoZ2lsLT5zd2l0Y2hfbXV0ZXgpIGZhaWxlZABQeU1VVEVYX0xPQ0soZ2lsLT5zd2l0Y2hfbXV0ZXgpIGZhaWxlZABQeU1VVEVYX1VOTE9DSyhnaWwtPnN3aXRjaF9tdXRleCkgZmFpbGVkAFB5TVVURVhfRklOSShnaWwtPnN3aXRjaF9tdXRleCkgZmFpbGVkAFB5TVVURVhfSU5JVChnaWwtPm11dGV4KSBmYWlsZWQAUHlNVVRFWF9MT0NLKGdpbC0+bXV0ZXgpIGZhaWxlZABQeU1VVEVYX1VOTE9DSyhnaWwtPm11dGV4KSBmYWlsZWQAUHlNVVRFWF9GSU5JKGdpbC0+bXV0ZXgpIGZhaWxlZABjb21waWxlciBzdGFja19lZmZlY3Qob3Bjb2RlPSVkLCBhcmc9JWkpIGZhaWxlZABQeUNPTkRfSU5JVChnaWwtPnN3aXRjaF9jb25kKSBmYWlsZWQAUHlDT05EX1dBSVQoZ2lsLT5zd2l0Y2hfY29uZCkgZmFpbGVkAFB5Q09ORF9TSUdOQUwoZ2lsLT5zd2l0Y2hfY29uZCkgZmFpbGVkAFB5Q09ORF9GSU5JKGdpbC0+c3dpdGNoX2NvbmQpIGZhaWxlZABQeUNPTkRfSU5JVChnaWwtPmNvbmQpIGZhaWxlZABQeUNPTkRfV0FJVChnaWwtPmNvbmQpIGZhaWxlZABQeUNPTkRfU0lHTkFMKGdpbC0+Y29uZCkgZmFpbGVkAFB5Q09ORF9GSU5JKGdpbC0+Y29uZCkgZmFpbGVkAGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIGZhaWxlZABjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQykgZmFpbGVkAHJhdyByZWFkaW50bygpIGZhaWxlZABfUHlfbm9ybWFsaXplX2VuY29kaW5nKCkgZmFpbGVkAEFzc2VydGlvbiAiJXMiIGZhaWxlZABfUHlPYmplY3RfQXNzZXJ0RmFpbGVkAHByaXZhdGUgaWRlbnRpZmllciB0b28gbGFyZ2UgdG8gYmUgbWFuZ2xlZABjYW4ndCB1c2UgQUZfSU5FVDYsIElQdjYgaXMgZGlzYWJsZWQAaXNlbmFibGVkAGlzX2VuYWJsZWQAaXNfZW5hYmxlZCgpLT5ib29sOiBjaGVjayBpZiB0aGUgaGFuZGxlciBpcyBlbmFibGVkAHF1b3RlY2hhciBtdXN0IGJlIHNldCBpZiBxdW90aW5nIGVuYWJsZWQAZ2xJc0VuYWJsZWQAdW5sb2NrZWQAY29uZGl0aW9uX3ZhcmlhYmxlOjp3YWl0OiBtdXRleCBub3QgbG9ja2VkAGNvbmRpdGlvbl92YXJpYWJsZTo6dGltZWQgd2FpdDogbXV0ZXggbm90IGxvY2tlZABkcm9wX2dpbDogR0lMIGlzIG5vdCBsb2NrZWQAdW5pcXVlX2xvY2s6OnVubG9jazogbm90IGxvY2tlZABpc190cmFja2VkACdlbmNvZGluZycgYXJndW1lbnQgbm90IHNwZWNpZmllZABzdGFja19lZmZlY3Q6IG9wY29kZSByZXF1aXJlcyBvcGFyZyBidXQgb3Bhcmcgd2FzIG5vdCBzcGVjaWZpZWQAc3RhY2tfZWZmZWN0OiBvcGNvZGUgZG9lcyBub3QgcGVybWl0IG9wYXJnIGJ1dCBvcGFyZyB3YXMgc3BlY2lmaWVkAEltbW9ydGFsIGludGVybmVkIHN0cmluZyBkaWVkAENvbXByZXNzb3IgaGFzIGJlZW4gZmx1c2hlZABwYXJzaW5nIGZpbmlzaGVkAGFkZHJlc3MgZmFtaWx5IG1pc21hdGNoZWQAc2NoZWQAdW5kZXJseWluZyBidWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQAcmF3IHN0cmVhbSBoYXMgYmVlbiBkZXRhY2hlZABsaW1pdCBvbiBpbnB1dCBhbXBsaWZpY2F0aW9uIGZhY3RvciAoZnJvbSBEVEQgYW5kIGVudGl0aWVzKSBicmVhY2hlZABFbmQgb2Ygc3RyZWFtIGFscmVhZHkgcmVhY2hlZAByZWN1cnNpdmVfdGltZWRfbXV0ZXggbG9jayBsaW1pdCByZWFjaGVkAG1heGltdW0gbnVtYmVyIG9mIHN5bWJvbGljIGxpbmtzIHJlYWNoZWQAY29uZmlnX2luaXRfaGFzaF9zZWVkAHVzZV9oYXNoX3NlZWQAZm9ybS1mZWVkAG1heGltdW0gc2l6ZSBvZiBhIGRlcXVlIG9yIE5vbmUgaWYgdW5ib3VuZGVkAGRlY2ltYWwuUm91bmRlZABjcl9zdXNwZW5kZWQAZ2lfc3VzcGVuZGVkAHBhcnNlciBub3Qgc3VzcGVuZGVkAHBhcnNlciBzdXNwZW5kZWQAZW5kX29mZnNldCBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gZW5kX2xpbmVubyBpcyBwcm92aWRlZABubyBpbnRlcnByZXRlciBwcm92aWRlZABYWFggdG8gYmUgcHJvdmlkZWQAbWF4aW11bSByZWN1cnNpb24gbGltaXQgZXhjZWVkZWQATWF4IHN0cmluZyByZWN1cnNpb24gZXhjZWVkZWQAbW9kdWxlICVwIGFscmVhZHkgYWRkZWQAdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBoYXMgYmVlbiB1bmxvYWRlZABnbERyYXdBcnJheXNJbnN0YW5jZWQAZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQAV2VkAGRkZABpYWRkAFVBZGQAZ2NkAHBlcnNpc3RlbnRfbG9hZABtYXJzaGFsLmxvYWQATG9hZABleHByZXNzaW9uIG11c3QgaGF2ZSAlcyBjb250ZXh0IGJ1dCBoYXMgJXMgaW5zdGVhZABQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSkgaXMgZGVwcmVjYXRlZDsgdXNlIFB5VW5pY29kZV9OZXcoKSBpbnN0ZWFkAFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplKSBpcyBkZXByZWNhdGVkOyB1c2UgUHlVbmljb2RlX05ldygpIGluc3RlYWQAc2lnbmFsICVpIGNhbm5vdCBiZSByZWdpc3RlcmVkLCB1c2UgZW5hYmxlKCkgaW5zdGVhZABQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwoKSBpcyBkZXByZWNhdGVkOyB1c2UgUHlVbmljb2RlX0ludGVybkluUGxhY2UoKSBpbnN0ZWFkACd8PScgaXMgbm90IHN1cHBvcnRlZCBieSAlczsgdXNlICd8JyBpbnN0ZWFkAHByZWFkAHN0YXJ0X25ld190aHJlYWQAZXhpdF90aHJlYWQAZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3RocmVhZABfZmF0YWxfZXJyb3JfY190aHJlYWQAY2FuJ3Qgc3RhcnQgbmV3IHRocmVhZABpbiBuZXcgdGhyZWFkAGNhbid0IG1ha2UgZmlyc3QgdGhyZWFkAG5vdCB0aGUgbGFzdCB0aHJlYWQAYXV0by1yZWxlYXNpbmcgdGhyZWFkLXN0YXRlLCBidXQgbm8gdGhyZWFkLXN0YXRlIGZvciB0aGlzIHRocmVhZAB1bmFibGUgdG8gc3RhcnQgd2F0Y2hkb2cgdGhyZWFkAGludGVycHJldGVyIGhhcyBtb3JlIHRoYW4gb25lIHRocmVhZAB1bmFibGUgdG8gc3RhcnQgdGhlIHRocmVhZABQeUV2YWxfU2F2ZVRocmVhZABQeUV2YWxfUmVsZWFzZVRocmVhZABQeUV2YWxfUmVzdG9yZVRocmVhZABQeUV2YWxfQWNxdWlyZVRocmVhZAB8TyY6cmVhZABJdCBpcyBub3QgcG9zc2libGUgdG8gc2V0IHRoZSBlbmNvZGluZyBvciBuZXdsaW5lIG9mIHN0cmVhbSBhZnRlciB0aGUgZmlyc3QgcmVhZABfUHlDb25maWdfUmVhZABfUHlQcmVDb25maWdfUmVhZABQZABOZABAZAAlYyUwMmQlcyUwMmQlcyUwMmQuJTA2ZAAlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQuJTA2ZABVVEMlYyUwMmQ6JTAyZDolMDJkLiUwNmQAJWQgZGF5JXMsICVkOiUwMmQ6JTAyZC4lMDZkACVzICVzICUyZCAlMDJkOiUwMmQ6JTAyZCAlMDRkACUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDNkACUrLjAyZAAlYyUwMmQlcyUwMmQlcyUwMmQAJWMlMDJkJXMlMDJkACUwNGQtJTAyZC0lMDJkJWMlMDJkACUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQAVVRDJWMlMDJkOiUwMmQAJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkAFVUQyVjJTAyZDolMDJkOiUwMmQAJWQgZGF5JXMsICVkOiUwMmQ6JTAyZAAlMDRkLSUwMmQtJTAyZAAtZAB6aXAoKSBhcmd1bWVudCAlZCBpcyBzaG9ydGVyIHRoYW4gYXJndW1lbnQlcyVkAHppcCgpIGFyZ3VtZW50ICVkIGlzIGxvbmdlciB0aGFuIGFyZ3VtZW50JXMlZAAlczAlc2UlZAAxZSVkAC0weCVzcCVjJWQAZGF5cz0lZAAlVSVzc2Vjb25kcz0lZAAlVSVzbWljcm9zZWNvbmRzPSVkAC9kZXYvcHRzLyVkACV4OiV4OiV4OiV4OiV4OiV4OiVkLiVkLiVkLiVkAEV4cGF0ICVkLiVkLiVkAHVua25vd24gYWRkcmVzcyBmYW1pbHkgJWQAaW5uZXJfc2l6ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgaXMgJWQAVW5rbm93biBlcnJvciAlZABEb24ndCBrbm93IGhvdyB0byBjb252ZXJ0IHBhcmFtZXRlciAlZABVbnJlY29nbml6ZWQgY29udmVyc2lvbiBjaGFyYWN0ZXIgJWQAaW5kZXggb3V0IG9mIGJvdW5kcyBvbiBkaW1lbnNpb24gJWQAbWF4ZGlnaXRzIG11c3QgYmUgMCBvciBsYXJnZXIgdGhhbiAlZAAsIGl0ZW0gJWQAZmZpX3ByZXBfY2lmIGZhaWxlZCB3aXRoICVkAGZmaV9wcmVwX2Nsb3N1cmUgZmFpbGVkIHdpdGggJWQAY2Fubm90IGFzc2lnbiBmcm9tIFR5cGVkQXJyYXkgb2YgbGVuZ3RoICVkIHRvIGJ1ZmZlciBvZiBsZW5ndGggJWQAY2Fubm90IGFzc2lnbiB0byBUeXBlZEFycmF5IG9mIGxlbmd0aCAlZCBmcm9tIGJ1ZmZlciBvZiBsZW5ndGggJWQAdW5rbm93biBjb21wcmVoZW5zaW9uIHR5cGUgJWQAZXhwZWN0ZWQgYW4gaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgJ3RyeScgc3RhdGVtZW50IG9uIGxpbmUgJWQAZXhwZWN0ZWQgYW4gaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgJ2ZpbmFsbHknIHN0YXRlbWVudCBvbiBsaW5lICVkAGV4cGVjdGVkIGFuIGluZGVudGVkIGJsb2NrIGFmdGVyICdleGNlcHQnIHN0YXRlbWVudCBvbiBsaW5lICVkAGV4cGVjdGVkIGFuIGluZGVudGVkIGJsb2NrIGFmdGVyICdmb3InIHN0YXRlbWVudCBvbiBsaW5lICVkAGV4cGVjdGVkIGFuIGluZGVudGVkIGJsb2NrIGFmdGVyICd3aXRoJyBzdGF0ZW1lbnQgb24gbGluZSAlZABleHBlY3RlZCBhbiBpbmRlbnRlZCBibG9jayBhZnRlciAnbWF0Y2gnIHN0YXRlbWVudCBvbiBsaW5lICVkAGV4cGVjdGVkIGFuIGluZGVudGVkIGJsb2NrIGFmdGVyICdlbGlmJyBzdGF0ZW1lbnQgb24gbGluZSAlZABleHBlY3RlZCBhbiBpbmRlbnRlZCBibG9jayBhZnRlciAnaWYnIHN0YXRlbWVudCBvbiBsaW5lICVkAGV4cGVjdGVkIGFuIGluZGVudGVkIGJsb2NrIGFmdGVyICdlbHNlJyBzdGF0ZW1lbnQgb24gbGluZSAlZABleHBlY3RlZCBhbiBpbmRlbnRlZCBibG9jayBhZnRlciAnY2FzZScgc3RhdGVtZW50IG9uIGxpbmUgJWQAZXhwZWN0ZWQgYW4gaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgJ3doaWxlJyBzdGF0ZW1lbnQgb24gbGluZSAlZABleHBlY3RlZCBhbiBpbmRlbnRlZCBibG9jayBhZnRlciAnZXhjZXB0Kicgc3RhdGVtZW50IG9uIGxpbmUgJWQAZXhwZWN0ZWQgYW4gaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgY2xhc3MgZGVmaW5pdGlvbiBvbiBsaW5lICVkAGV4cGVjdGVkIGFuIGluZGVudGVkIGJsb2NrIGFmdGVyIGZ1bmN0aW9uIGRlZmluaXRpb24gb24gbGluZSAlZABjbG9zaW5nIHBhcmVudGhlc2lzICclYycgZG9lcyBub3QgbWF0Y2ggb3BlbmluZyBwYXJlbnRoZXNpcyAnJWMnIG9uIGxpbmUgJWQAb3BlbmVyIHJldHVybmVkICVkACVzICVzJTNkICUuMmQ6JS4yZDolLjJkICVkACAlbiUqcyVuICVuJSpzJW4gJW4lKnMlbiAlbiUqcyVuICVkICVkAHNob3J0IGZvcm1hdCByZXF1aXJlcyAlZCA8PSBudW1iZXIgPD0gJWQAZGF5cz0lZDsgbXVzdCBoYXZlIG1hZ25pdHVkZSA8PSAlZABwaWNrbGUgcHJvdG9jb2wgbXVzdCBiZSA8PSAlZAB1bnN1cHBvcnRlZCBwaWNrbGUgcHJvdG9jb2w6ICVkAEludmFsaWQgd2VlazogJWQAWWVhciBpcyBvdXQgb2YgcmFuZ2U6ICVkAFVucmVjb2duaXplZCBlcnJvciBmcm9tIGxpYmJ6aXAyOiAlZAAucHljAGV4YwBmcm9tdXRjACVzLnV0YwBuZXRyYwBzcmMAeG1scnBjAGNvbmZpZ19pbml0X3RyYWNlbWFsbG9jAGNhbid0IGluaXRpYWxpemUgdHJhY2VtYWxsb2MAdHJhY2VtYWxsb2NfcmVhbGxvYwBkdW1teV9kZWFsbG9jAGJvb2xfZGVhbGxvYwBub25lX2RlYWxsb2MAdW5pY29kZV9kZWFsbG9jAG5vdGltcGxlbWVudGVkX2RlYWxsb2MAX1B5TWVtX0RlYnVnUmF3UmVhbGxvYwBfUHlNZW1fRGVidWdSZWFsbG9jAFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYwBzdGQ6OmJhZF9hbGxvYwBfUHlNZW1fRGVidWdNYWxsb2MAX1B5TWVtX0RlYnVnQ2FsbG9jAHB5ZG9jAGZzeW5jAGZkYXRhc3luYwBpc19hc3luYwB0cnVuYwBfaWRmdW5jAG1pc3NpbmcgbmV3X29iamVjdCBmdW5jAG1pc3NpbmcgJ2dldGRhdGEnIGZ1bmMAZ2xTdGVuY2lsRnVuYwBnbERlcHRoRnVuYwBnbEJsZW5kRnVuYwAvcm9vdC9yZXBvL2Vtc2RrL2Vtc2RrL3Vwc3RyZWFtL2Vtc2NyaXB0ZW4vc3lzdGVtL2xpYi9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvaW50X211bHZfaW1wbC5pbmMAbWMAbWV0aG9kIGNhbm5vdCBiZSBib3RoIGNsYXNzIGFuZCBzdGF0aWMAaXNzdWJjbGFzcygpIGFyZ3VtZW50IDIgY2Fubm90IGJlIGEgcGFyYW1ldGVyaXplZCBnZW5lcmljAGlzaW5zdGFuY2UoKSBhcmd1bWVudCAyIGNhbm5vdCBiZSBhIHBhcmFtZXRlcml6ZWQgZ2VuZXJpYwBpc251bWVyaWMAbW9ub3RvbmljAGNyZWF0ZV9keW5hbWljAGV4ZWNfZHluYW1pYwBnYwBlcmZjAGFpZmMAbm9leGVjAE9PcE8hT09paWlpaWlpaWlpaU9PT2lPcDpmb3JrX2V4ZWMAb3MuZXhlYwB0bV9zZWMAX3Vuc2FmZV9zZXRwcmVjAHRpbWVzcGVjAGZvcm1hdF9zcGVjAHVubWF0Y2hlZCAneycgaW4gZm9ybWF0IHNwZWMAZ2V0Y29kZWMAX211bHRpYnl0ZWNvZGVjAF9fY3JlYXRlX2NvZGVjAGNhbm5vdCBpbml0aWFsaXplIGZpbGVzeXN0ZW0gY29kZWMAX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUNvZGVjAERlYwBjYwBfcHlfYWJjAF9jb2xsZWN0aW9uc19hYmMAY29sbGVjdGlvbnMuYWJjAGhtYWMAU2MAUGMATWMAQ2MAQGMAdTAwNWMAc3JjL2NvcmUvanNwcm94eS5jAC4vTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb250ZXh0LmMAUHl0aG9uL2ltcG9ydC5jAE9iamVjdHMvbWVtb3J5b2JqZWN0LmMAT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwBPYmplY3RzL2xpc3RvYmplY3QuYwBPYmplY3RzL3NldG9iamVjdC5jAE9iamVjdHMvZGljdG9iamVjdC5jAE9iamVjdHMvY2xhc3NvYmplY3QuYwBPYmplY3RzL2J5dGVzb2JqZWN0LmMAT2JqZWN0cy9pdGVyb2JqZWN0LmMAT2JqZWN0cy9jZWxsb2JqZWN0LmMAT2JqZWN0cy9sb25nb2JqZWN0LmMAT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMAT2JqZWN0cy90eXBlb2JqZWN0LmMAT2JqZWN0cy9mcmFtZW9iamVjdC5jAE9iamVjdHMvbW9kdWxlb2JqZWN0LmMAT2JqZWN0cy90dXBsZW9iamVjdC5jAE9iamVjdHMvZmlsZW9iamVjdC5jAE9iamVjdHMvdW5pY29kZW9iamVjdC5jAE9iamVjdHMvY29kZW9iamVjdC5jAE9iamVjdHMvbWV0aG9kb2JqZWN0LmMAT2JqZWN0cy9mdW5jb2JqZWN0LmMAT2JqZWN0cy9vYmplY3QuYwAuL01vZHVsZXMvcHlleHBhdC5jAC4vTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMAc3JjL2NvcmUvcHl0aG9uMmpzLmMAUHl0aG9uL2dldGFyZ3MuYwBQYXJzZXIvc3RyaW5nX3BhcnNlci5jAE9iamVjdHMvc3RydWN0c2VxLmMAUHl0aG9uL2NldmFsLmMALi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jAFB5dGhvbi90cmFjZWJhY2suYwAuL01vZHVsZXMvYXJyYXltb2R1bGUuYwAuL01vZHVsZXMvX2FzeW5jaW9tb2R1bGUuYwBNb2R1bGVzL2djbW9kdWxlLmMALi9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYwAvcm9vdC9yZXBvL2Vtc2RrL2Vtc2RrL3Vwc3RyZWFtL2Vtc2NyaXB0ZW4vc3lzdGVtL2xpYi9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvY2xlYXJfY2FjaGUuYwBQeXRob24vcHlzdHJ0b2QuYwBfY3R5cGVzL2NhbGxwcm9jLmMAL3Jvb3QvcmVwby9lbXNkay9lbXNkay91cHN0cmVhbS9lbXNjcmlwdGVuL3N5c3RlbS9saWIvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2FkZHZ0aTMuYwAvcm9vdC9yZXBvL2Vtc2RrL2Vtc2RrL3Vwc3RyZWFtL2Vtc2NyaXB0ZW4vc3lzdGVtL2xpYi9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvc3VidnRpMy5jAC9yb290L3JlcG8vZW1zZGsvZW1zZGsvdXBzdHJlYW0vZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9hZGR2c2kzLmMAL3Jvb3QvcmVwby9lbXNkay9lbXNkay91cHN0cmVhbS9lbXNjcmlwdGVuL3N5c3RlbS9saWIvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL3N1YnZzaTMuYwAvcm9vdC9yZXBvL2Vtc2RrL2Vtc2RrL3Vwc3RyZWFtL2Vtc2NyaXB0ZW4vc3lzdGVtL2xpYi9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvYWRkdmRpMy5jAC9yb290L3JlcG8vZW1zZGsvZW1zZGsvdXBzdHJlYW0vZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9zdWJ2ZGkzLmMAL3Jvb3QvcmVwby9lbXNkay9lbXNkay91cHN0cmVhbS9lbXNjcmlwdGVuL3N5c3RlbS9saWIvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL2Fic3Z0aTIuYwAvcm9vdC9yZXBvL2Vtc2RrL2Vtc2RrL3Vwc3RyZWFtL2Vtc2NyaXB0ZW4vc3lzdGVtL2xpYi9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvbmVndnRpMi5jAC9yb290L3JlcG8vZW1zZGsvZW1zZGsvdXBzdHJlYW0vZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9hYnN2c2kyLmMAL3Jvb3QvcmVwby9lbXNkay9lbXNkay91cHN0cmVhbS9lbXNjcmlwdGVuL3N5c3RlbS9saWIvY29tcGlsZXItcnQvbGliL2J1aWx0aW5zL25lZ3ZzaTIuYwAvcm9vdC9yZXBvL2Vtc2RrL2Vtc2RrL3Vwc3RyZWFtL2Vtc2NyaXB0ZW4vc3lzdGVtL2xpYi9jb21waWxlci1ydC9saWIvYnVpbHRpbnMvYWJzdmRpMi5jAC9yb290L3JlcG8vZW1zZGsvZW1zZGsvdXBzdHJlYW0vZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2NvbXBpbGVyLXJ0L2xpYi9idWlsdGlucy9uZWd2ZGkyLmMAJSUlcyVzJXMlcyVzKi4qJWMlYwBVbmtub3duIGNvbnZlcnNpb24gc3BlY2lmaWVyICVjAHhiAHdiAGlzdWIAdW5hcnlvcCA9IEludmVydCB8IE5vdCB8IFVBZGQgfCBVU3ViAGNnaXRiAHJiAGdsb2IAY29tYgBhdHRyaWIAZ2xHZXRBY3RpdmVBdHRyaWIAemxpYgBjb250ZXh0bGliAHBsaXN0bGliAF9mcm96ZW5faW1wb3J0bGliAF9pbnN0YWxsX2ltcG9ydGxpYgBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBpbXBvcnRsaWIAdGVsbmV0bGliAHJlcHJsaWIAeGRybGliAG5udHBsaWIAc210cGxpYgBmdHBsaWIAcG9wbGliAGltYXBsaWIAdXJsbGliAHRvbWxsaWIAbXNpbGliAHBhdGhsaWIAX2hhc2hsaWIAZ3JhcGhsaWIAZGlmZmxpYgBpZGxlbGliAGxvZ2IAc2NhbGViAEZlYgBnZXRjd2RiAHBkYgBiZGIAY29fbG5vdGFiAHZlcnRpY2FsLXRhYgBqb2hhYgBVYgBAYgBfYmxha2UyLmJsYWtlMmIALWIAdytiAHIrYgBhK2IAJWIAcndhAGRhdGV0aW1lLnRpbWVkZWx0YQBsb2FkX3R6ZGF0YQB3aXRoZGF0YQB1bmljb2RlZGF0YQBjdHlwZXMuY2RhdGEAX3JlZ2lzdGVyX2J1aWx0aW5zX2Zvcl9jcm9zc2ludGVycHJldGVyX2RhdGEAdW51c2VkX2RhdGEAbG9hZF9kYXRhAHB5ZG9jX2RhdGEAX2FiYy5fYWJjX2RhdGEAX3BpY2tsZS5QZGF0YQB0b28gbXVjaCBhbmNpbGxhcnkgZGF0YQByZWNlaXZlZCBtYWxmb3JtZWQgb3IgaW1wcm9wZXJseS10cnVuY2F0ZWQgYW5jaWxsYXJ5IGRhdGEAaW52YWxpZCBpbnB1dCBkYXRhAHdoaWxlIHByZXBhcmluZyB0byBkZWNvbXByZXNzIGRhdGEAJVMgZG9lcyBub3Qgc3VwcG9ydCBjcm9zcy1pbnRlcnByZXRlciBkYXRhAFRocmVhZC1sb2NhbCBkYXRhAE91dCBvZiBtZW1vcnkgd2hpbGUgZGVjb21wcmVzc2luZyBkYXRhAE91dCBvZiBtZW1vcnkgd2hpbGUgY29tcHJlc3NpbmcgZGF0YQB1bmV4cGVjdGVkIGVuZCBvZiBkYXRhAHRydW5jYXRlZCBkYXRhAGFzY2lpLT53c3RyID09IGRhdGEAY29tcGFjdC0+dXRmOCA9PSBkYXRhAGFzY2lpLT53c3RyICE9IGRhdGEAY29tcGFjdC0+dXRmOCAhPSBkYXRhAENoYXJhY3RlckRhdGEAZ2xCdWZmZXJEYXRhAGdsQnVmZmVyU3ViRGF0YQBfY3R5cGVzLl9TaW1wbGVDRGF0YQBfY3R5cGVzLl9DRGF0YQB5KjppbmV0X250b2EAcGFja2VkIElQIHdyb25nIGxlbmd0aCBmb3IgaW5ldF9udG9hAGlkbmEAX2x6bWEAY29tbWEAbGdhbW1hAGZtYQBpc2FscGhhACdsYW1iZGEAZmllbGQgJ2JvZHknIGlzIHJlcXVpcmVkIGZvciBMYW1iZGEAZmllbGQgJ2FyZ3MnIGlzIHJlcXVpcmVkIGZvciBMYW1iZGEAcmVxdWlyZWQgZmllbGQgImJvZHkiIG1pc3NpbmcgZnJvbSBMYW1iZGEAcmVxdWlyZWQgZmllbGQgImFyZ3MiIG1pc3NpbmcgZnJvbSBMYW1iZGEATmEAJWEAIWEAYABmaW5hbGx5XwBub3RfAF9hYnN0cmFjdF8AX2Fub255bW91c18AaXNfAF9mbGFnc18AX3N3YXBwZWRieXRlc18AX2FyZ3R5cGVzXwAnJVUnIGlzIHNwZWNpZmllZCBpbiBfYW5vbnltb3VzXyBidXQgbm90IGluIF9maWVsZHNfAF91c2VfYnJva2VuX29sZF9jdHlwZXNfc3RydWN0dXJlX3NlbWFudGljc18Ab3JfAHdoaWxlIHByb2Nlc3NpbmcgX2FzX3BhcmFtZXRlcl8AaGFzIG5vIF9zdGdpbmZvXwBfY2hlY2tfcmV0dmFsXwBfcGFja18AX2xlbmd0aF8AX2JfYmFzZV8AX3Jlc3R5cGVfAENhbm5vdCBjcmVhdGUgaW5zdGFuY2U6IGhhcyBubyBfdHlwZV8AX2JfbmVlZHNmcmVlXwBhbmRfAF9fZGVlcGNvcHlfXwBfX2NvcHlfXwBfX2hlbGxvX29ubHlfXwBfX2NvbXBsZXhfXwBfX2luZGV4X18AaTpfX3JlZHVjZV9leF9fAF9fcnBvd19fAF9faXBvd19fAF9fcG93X18Ac3xzczpfX25ld19fAHxPT09PT09POl9fbmV3X18AYXJyYXkuX19uZXdfXwBzb2NrZXQuX19uZXdfXwBVTzpCYXNlRXhjZXB0aW9uR3JvdXAuX19uZXdfXwBtbWFwLl9fbmV3X18AZnVuY3Rpb24uX19uZXdfXwBVTyFPITp0eXBlLl9fbmV3X18AY29kZS5fX25ld19fAE8mfCRwcHBwOkNoYW5uZWxJRC5fX25ld19fACVzIGNsYXNzIGFyZ3VtZW50ICclLjIwMHMnIGRvZXNuJ3QgaGF2ZSBfX25ld19fAF9fcmZsb29yZGl2X18AX19pZmxvb3JkaXZfXwBfX2Zsb29yZGl2X18AX19ydHJ1ZWRpdl9fAF9faXRydWVkaXZfXwBfX3RydWVkaXZfXwBfX3N1cHByZXNzX2NvbnRleHRfXwBfX2NvbnRleHRfXwBfX2FuZXh0X18AUmVhZGVyLl9fbmV4dF9fAF9fc3Rkb3V0X18AX19hYm91dF9fAF9faW1wb3J0X18AX19pbnZlcnRfXwBfX2xlbmd0aF9oaW50X18AX19pbnRfXwBfX2x0X18AX19leGl0X18AX19waGVsbG9fXy5oYW0uX19pbml0X18AX19waGVsbG9fXy5fX2luaXRfXwBPJnwkcDpJbnRlcnByZXRlcklELl9faW5pdF9fAF9fYXdhaXRfXwBfX2d0X18AX19ycnNoaWZ0X18AX19pcnNoaWZ0X18AX19yc2hpZnRfXwBfX3Jsc2hpZnRfXwBfX2lsc2hpZnRfXwBfX2xzaGlmdF9fAF9fd2Vha2xpc3RvZmZzZXRfXwBfX2RpY3RvZmZzZXRfXwBfX3ZlY3RvcmNhbGxvZmZzZXRfXwBfX3dlYWtyZWZvZmZzZXRfXwBfX3NldF9fAF9fZ2V0X18AVGhpcyBvYmplY3QgaGFzIG5vIF9fZGljdF9fAG1vZHVsZSAnJXMnIGhhcyBubyBfX2RpY3RfXwBjYW5ub3QgZGVsZXRlIF9fZGljdF9fAF9fZmxvYXRfXwBfX2dldGZvcm1hdF9fAFU6X19mb3JtYXRfXwB1bnN1cHBvcnRlZCBmb3JtYXQgc3RyaW5nIHBhc3NlZCB0byAlLjIwMHMuX19mb3JtYXRfXwBUeXBlICUuMTAwcyBkb2Vzbid0IGRlZmluZSBfX2Zvcm1hdF9fAF9fa3dkZWZhdWx0c19fAF9fZGVmYXVsdHNfXwBfX3RoaXNjbGFzc19fAF9fb2JqY2xhc3NfXwAgaW4gX19pc3N1YmNsYXNzX18AX19pbml0X3N1YmNsYXNzX18AX19zZWxmX2NsYXNzX18AX19idWlsZF9jbGFzc19fAF9fY2xhc3NfXwBfX3BhcmFtZXRlcnNfXwBfX3Bvc19fAEZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYW5ub3RhdGlvbnNfXwBGYWlsZWQgdG8gdGVzdCBfX21haW5fXy5fX2J1aWx0aW5zX18ARmFpbGVkIHRvIGluaXRpYWxpemUgX19tYWluX18uX19idWlsdGluc19fAF9fY29udGFpbnNfXwBfX2dsb2JhbHNfXwBfX2dldG5ld2FyZ3NfXwBfX2dldGluaXRhcmdzX18AX19tYXRjaF9hcmdzX18AX190eXBpbmdfdW5wYWNrZWRfdHVwbGVfYXJnc19fAF9fYXJnc19fAF9fZmxhZ3NfXwBfX2J5dGVzX18AX19zdWJjbGFzc2VzX18AX19vcmlnX2Jhc2VzX18AX19iYXNlc19fAF9fbXJvX2VudHJpZXNfXwBfX2Fic3RyYWN0bWV0aG9kc19fAF9fYWJzX18AX19waGVsbG9fYWxpYXNfXwBfX2hlbGxvX2FsaWFzX18Ab2JqZWN0Ll9fc2V0YXR0cl9fAG9iamVjdC5fX2dldGF0dHJfXwBvYmplY3QuX19kZWxhdHRyX18AX19zdHJfXwBfX3N0ZGVycl9fAHJlZW50cmFudCBjYWxsIGluc2lkZSAlcy5fX3JlcHJfXwBfX3J4b3JfXwBfX2l4b3JfXwBfX3hvcl9fAF9fcm9yX18AX19mbG9vcl9fAF9faW9yX18AX19vcl9fAG9iamVjdCBkb2VzIG5vdCBwcm92aWRlIF9fZGlyX18AX19lbnRlcl9fAF9fYWl0ZXJfXwBfX2l0ZXJfXwBGYWlsZWQgdG8gdGVzdCBfX21haW5fXy5fX2xvYWRlcl9fAEZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fbG9hZGVyX18AX19lcV9fAF9fYXN5bmNpb19ydW5uaW5nX2V2ZW50X2xvb3BfXwBfX21yb19fADxfX3BoZWxsb19fAF9faGVsbG9fXwBfX2xpYm1wZGVjX3ZlcnNpb25fXwBfX3ZlcnNpb25fXwBfX29yaWdpbl9fAF9fc3RkaW5fXwBfX21haW5fXwBfX2xlbl9fAF9fc2V0aXRlbV9fAF9fY2xhc3NfZ2V0aXRlbV9fAF9fZ2V0aXRlbV9fAF9fZGVsaXRlbV9fAF9fY3R5cGVzX2Zyb21fb3V0cGFyYW1fXwBfX3JtYXRtdWxfXwBfX2ltYXRtdWxfXwBfX21hdG11bF9fAF9fcm11bF9fAF9faW11bF9fAF9fbXVsX18AX19ib29sX18AX19jYWxsX18AZnJvbS1pbXBvcnQtKiBvYmplY3QgaGFzIG5vIF9fZGljdF9fIGFuZCBubyBfX2FsbF9fAF9fY2VpbF9fAF9fZGVsX18AX19kaXNwbGF5aG9va19fAF9fZXhjZXB0aG9va19fAF9fYnJlYWtwb2ludGhvb2tfXwBfX3N1YmNsYXNzaG9va19fAF9faW50ZXJhY3RpdmVob29rX18AX191bnJhaXNhYmxlaG9va19fACBpbiBfX3N1YmNsYXNzY2hlY2tfXwAgaW4gX19pbnN0YW5jZWNoZWNrX18AX19jYWxsYmFja19fAF9fdHJhY2ViYWNrX18AX19mc3BhdGhfXwBjYW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXywgZmFsbGluZyBiYWNrIG9uIF9fbmFtZV9fIGFuZCBfX3BhdGhfXwBfX2hhc2hfXwBjYW5ub3QgYXNzaWduIHRvIF9fZGVidWdfXwBjYW5ub3QgZGVsZXRlIF9fZGVidWdfXwBfX21pc3NpbmdfXwBfX25lZ19fAFR5cGUgJS4xMDBzIGRvZXNuJ3QgZGVmaW5lIF9fc2l6ZW9mX18AX19zZWxmX18AVGhpcyBvYmplY3QgaGFzIG5vIF9fd2Vha3JlZl9fAF9faXRlbXNpemVfXwBfX2Jhc2ljc2l6ZV9fAF9fZ2V0YXR0cmlidXRlX18AX19kZWxldGVfXwBfX3NldHN0YXRlX18AX19nZXRzdGF0ZV9fAF9fY2F1c2VfXwBfX2Jhc2VfXwBfX2Z1dHVyZV9fAF9fdGV4dF9zaWduYXR1cmVfXwBfX2Nsb3N1cmVfXwBfX3ByZXBhcmVfXwBfX25lX18AX19xdWFsbmFtZV9fAF9fb3JpZ25hbWVfXwBfX3NldF9uYW1lX18AX19uYW1lX18AX19tb2R1bGVfXwBfX2ZpbGVfXwBfX2N0eXBlX2xlX18AX19sZV9fAF9fcGFja2FnZV9fAF9fZ2VfXwBfX2NvZGVfXwBfX3JlZHVjZV9fAF9fY3R5cGVfYmVfXwBfX3JkaXZtb2RfXwBfX2Rpdm1vZF9fAF9fcm1vZF9fAF9faW1vZF9fAF9fbW9kX18AX19pc2Fic3RyYWN0bWV0aG9kX18AX19yb3VuZF9fAF9fcmFuZF9fAF9faWFuZF9fAF9fYW5kX18AX19yZXZlcnNlZF9fAF9fd3JhcHBlZF9fAF9fdW5wYWNrZWRfXwBfX2NhY2hlZF9fAF9fcmFkZF9fAF9faWFkZF9fAF9fYWRkX18AX19hbGxvY19fAF9fZG9jX18AX190cnVuY19fAF9fZnVuY19fAF9fc3BlY19fAF9fcnN1Yl9fAF9faXN1Yl9fAF9fc3ViX18ARU5WX19fUFlWRU5WX0xBVU5DSEVSX18Ab3BlcmF0b3JeADw+PV4AeC5fX2dldGl0ZW1fXyh5KSA8PT0+IHhbeV0AY2hhcmFjdGVyIFUrJXggaXMgbm90IGluIHJhbmdlIFtVKzAwMDA7IFUrJXhdAHRoZSBudW1iZXIgb2YgZnJhbWVzIG11c3QgYmUgaW4gcmFuZ2UgWzE7ICVsdV0AW3Nzc3NdAChpaXkqKTpbc2VuZG1zZygpIGFuY2lsbGFyeSBkYXRhIGl0ZW1zXQBzaWduYWwgbnVtYmVyICVsZCBvdXQgb2YgcmFuZ2UgWzE7ICVpXQB2YWxpZCB2YWx1ZXMgZm9yIHNpZ25hbHMgYXJlOgogIFtJbnZhbGlkT3BlcmF0aW9uLCBGbG9hdE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sCiAgIE92ZXJmbG93LCBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgSW5leGFjdCwgUm91bmRlZCwKICAgQ2xhbXBlZF0Ac3VtKCkgY2FuJ3Qgc3VtIGJ5dGVhcnJheSBbdXNlIGInJy5qb2luKHNlcSkgaW5zdGVhZF0Ac3VtKCkgY2FuJ3Qgc3VtIGJ5dGVzIFt1c2UgYicnLmpvaW4oc2VxKSBpbnN0ZWFkXQBzdW0oKSBjYW4ndCBzdW0gc3RyaW5ncyBbdXNlICcnLmpvaW4oc2VxKSBpbnN0ZWFkXQBbXls6YWxudW06XV9dAFtbOmFsbnVtOl1fXQBbXls6ZGlnaXQ6XV0AW1s6ZGlnaXQ6XV0AW15bOnNwYWNlOl1dAFtbOnNwYWNlOl1dAG9wZXJhdG9yIG5ld1tdAG9wZXJhdG9yW10Ab3BlcmF0b3IgZGVsZXRlW10AdmFsaWQgcmFuZ2UgZm9yIEVtYXggaXMgWzAsIE1BWF9FTUFYXQB2YWxpZCB2YWx1ZXMgZm9yIHJvdW5kaW5nIGFyZToKICBbUk9VTkRfQ0VJTElORywgUk9VTkRfRkxPT1IsIFJPVU5EX1VQLCBST1VORF9ET1dOLAogICBST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0RPV04sIFJPVU5EX0hBTEZfRVZFTiwKICAgUk9VTkRfMDVVUF0AdmFsaWQgcmFuZ2UgZm9yIHByZWMgaXMgWzEsIE1BWF9QUkVDXQBtaW51dGVzLCByYW5nZSBbMCwgNTldAGRheSBvZiB5ZWFyLCByYW5nZSBbMSwgMzY2XQBEYXkgbXVzdCBiZSBpbiBbMCwgNl0AUFlUSE9OSEFTSFNFRUQgbXVzdCBiZSAicmFuZG9tIiBvciBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyA0Mjk0OTY3Mjk1XQBQeUJ5dGVzX0Zyb21Gb3JtYXRWKCk6ICVjIGZvcm1hdCBleHBlY3RzIGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDI1NV0AV2VlayBtdXN0IGJlIGluICgwLCA1XQBwdGhyZWFkX211dGV4X3VubG9ja1szXQBwdGhyZWFkX211dGV4X2xvY2tbM10AaG91cnMsIHJhbmdlIFswLCAyM10AbW9udGggb2YgeWVhciwgcmFuZ2UgWzEsIDEyXQBNb250aCBtdXN0IGJlIGluICgwLCAxMl0AcHRocmVhZF9tdXRleF90cnlsb2NrWzFdAHB0aHJlYWRfbXV0ZXhfdW5sb2NrWzFdAHB0aHJlYWRfbXV0ZXhfbG9ja1sxXQBkYXkgb2YgbW9udGgsIHJhbmdlIFsxLCAzMV0AdmFsaWQgcmFuZ2UgZm9yIHVuc2FmZSBwcmVjIGlzIFsxLCAxMDcwMDAwMDAwXQB2YWxpZCByYW5nZSBmb3IgdW5zYWZlIGVtYXggaXMgWzAsIDEwNzAwMDAwMDBdAHZhbGlkIHJhbmdlIGZvciBFbWluIGlzIFtNSU5fRU1JTiwgMF0AdmFsaWQgcmFuZ2UgZm9yIHVuc2FmZSBlbWluIGlzIFstMTA3MDAwMDAwMCwgMF0AWy4uXQBbLi4uXQBbQ2xhbmcgMTcuMC4wIChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QgZGY4MjM5NGU3YTJkMDY1MDY3MThjYWZhMzQ3YmY3ODI3Yzc5ZmM0ZildAGZpbGVzeXN0ZW0gZXJyb3I6ICVzIFsiJXMiXQBmaWxlc3lzdGVtIGVycm9yOiAlcyBbIiVzIl0gWyIlcyJdACUqW14KXSUqWwpdAFxcAHBpeGVsIHZlY3RvclsAUHpaAHNaAF9fX19aAFNJR1hGU1oAUlRMRF9MQVpZAElTX0RPVUJMRV9QUk9YWQBFTk9UVFkAT19OT0NUVFkAWE1MX0NUWVBFX0VNUFRZAEVOT1RFTVBUWQBYTUxfRVJST1JfVU5ERUZJTkVEX0VOVElUWQBYTUxfRVJST1JfQVNZTkNfRU5USVRZAEFGX1NFQ1VSSVRZAFNPX1BSSU9SSVRZAEFMTE9DQVRJT05HUkFOVUxBUklUWQBFQlVTWQBFVFhUQlNZAE9fRElSRUNUT1JZAFhNTF9FUlJPUl9OT19NRU1PUlkARUFJX01FTU9SWQBMQ19NT05FVEFSWQBBQ0NFU1NfQ09QWQBNSU5fRVRJTlkASU5BRERSX0FOWQBYTUxfQ1RZUEVfQU5ZAFpfSFVGRk1BTl9PTkxZAE9fV1JPTkxZAFNUX1JET05MWQBPX1JET05MWQBJUFY2X1Y2T05MWQBFQUlfRkFNSUxZAEVBSV9BRERSRkFNSUxZAFpfREVGQVVMVF9TVFJBVEVHWQBBRl9LRVkARU5PS0VZAEVBTFJFQURZAFNDX1hPUEVOX0xFR0FDWQBJU19BUlJBWQBJU19UWVBFREFSUkFZAFRDUF9OT0RFTEFZAE9fTkRFTEFZACVhICViICVkICVIOiVNOiVTICVZAFhYWFhYWABTX0lTVlRYAEFGX0lQWABBRl9QUFBPWABQT1NJWABTQ19YT1BFTl9VTklYAEVYRV9TVUZGSVgAWE1MX0VSUk9SX1VOREVDTEFSSU5HX1BSRUZJWABYTUxfRVJST1JfVU5CT1VORF9QUkVGSVgARVhFQ19QUkVGSVgAY2Fubm90IGRlY29kZSBQWVRIT05QWUNBQ0hFUFJFRklYAE5FV09CSl9FWABDSVJDVU1GTEVYAFhNTF9FUlJPUl9TWU5UQVgAU0NfSU9WX01BWABUSU1FT1VUX01BWABTQ19FWFBSX05FU1RfTUFYAFNDX0FURVhJVF9NQVgAU0NfVEhSRUFEX0tFWVNfTUFYAFNDX0NPTExfV0VJR0hUU19NQVgAU0NfUEFTU19NQVgAU0NfTkdST1VQU19NQVgAU0NfU0VNX05TRU1TX01BWABTQ19USFJFQURfVEhSRUFEU19NQVgAU0NfVElNRVJfTUFYAFNDX0RFTEFZVElNRVJfTUFYAENIQVJfTUFYAFNDX1JFX0RVUF9NQVgAVE1QX01BWABJUFBST1RPX01BWABTQ19BSU9fTElTVElPX01BWABTQ19NUV9QUklPX01BWABTQ19BSU9fTUFYAFNDX01RX09QRU5fTUFYAFNDX09QRU5fTUFYAFNDX0JDX0RJTV9NQVgAU0NfU1RSRUFNX01BWABQQ19MSU5LX01BWABQQ19TWU1MSU5LX01BWABQQ19QQVRIX01BWABTQ19BUkdfTUFYAFNDX0JDX1NUUklOR19NQVgAU0NfUlRTSUdfTUFYAFNDX0dFVFBXX1JfU0laRV9NQVgAU0NfR0VUR1JfUl9TSVpFX01BWABtZW1vcnl2aWV3LmNhc3QoKTogcHJvZHVjdChzaGFwZSkgPiBTU0laRV9NQVgAU0NfU0VNX1ZBTFVFX01BWABTQ19TSUdRVUVVRV9NQVgAU0NfQkNfQkFTRV9NQVgAU0NfTElORV9NQVgAU0NfVFRZX05BTUVfTUFYAFNDX0xPR0lOX05BTUVfTUFYAFBDX05BTUVfTUFYAFNDX1RaTkFNRV9NQVgAU0NfQkNfU0NBTEVfTUFYAFNDX0NISUxEX01BWABTQ19BSU9fUFJJT19ERUxUQV9NQVgAU0lHUlRNQVgATUFYX0VNQVgARUxJQk1BWAAlMDRYADolLjJYADxwcmVmaXg+L2xpYi9weXRob25YLlgAQ0pLIFVOSUZJRUQgSURFT0dSQVBILSVYAFJBUlJPVwBSVExEX05PVwBPX05PRk9MTE9XAEVBSV9PVkVSRkxPVwBFT1ZFUkZMT1cASVBQUk9UT19SQVcAU09DS19SQVcAQ0xPQ0tfTU9OT1RPTklDX1JBVwBOSV9NQVhTRVJWAE5JX05VTUVSSUNTRVJWAEFJX05VTUVSSUNTRVJWAFNDX1VJT19NQVhJT1YAVURQTElURV9SRUNWX0NTQ09WAFVEUExJVEVfU0VORF9DU0NPVgBTSUdTRUdWAFNDXzJfU1dfREVWAFNUX0RFVgBTQ18yX0ZPUlRfREVWAFNDXzJfQ19ERVYARVhERVYAU1RfTk9ERVYARU5PREVWAEVBRFYAUHlJbml0VQBfMC4uLi85WnpYN2lTSk5kMjFzVQBVVW5uVQBVT25uVQBcVQBZVQBTX0lSV1hVAFVVAElQVjZfUEFUSE1UVQBJUFY2X1JFQ1ZQQVRITVRVAFNPX0lOQ09NSU5HX0NQVQBTSUdYQ1BVAFNJR1RUT1UARVUAJVUuJVUAZHVwbGljYXRlIGJhc2UgY2xhc3MgJVUAQ2FuJ3QgaW5zdGFudGlhdGUgYWJzdHJhY3QgY2xhc3MgJXMgd2l0aCBhYnN0cmFjdCBtZXRob2QlcyAlVQAlVSBhbmQgJVUALCAlVSwgYW5kICVVACVVKCkgbWlzc2luZyAlaSByZXF1aXJlZCAlcyBhcmd1bWVudCVzOiAlVQBhdHRyaWJ1dGUgbmFtZSByZXBlYXRlZCBpbiBjbGFzcyBwYXR0ZXJuOiAlVQBjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVycyBpbiBwb3NpdGlvbiAlemQtJXpkOiAlVQAnJVUnIGNvZGVjIGNhbid0IGVuY29kZSBjaGFyYWN0ZXJzIGluIHBvc2l0aW9uICV6ZC0lemQ6ICVVACclVScgY29kZWMgY2FuJ3QgZGVjb2RlIGJ5dGVzIGluIHBvc2l0aW9uICV6ZC0lemQ6ICVVACclVScgY29kZWMgY2FuJ3QgZGVjb2RlIGJ5dGUgMHglMDJ4IGluIHBvc2l0aW9uICV6ZDogJVUAY2FuJ3QgdHJhbnNsYXRlIGNoYXJhY3RlciAnXFUlMDh4JyBpbiBwb3NpdGlvbiAlemQ6ICVVACclVScgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciAnXFUlMDh4JyBpbiBwb3NpdGlvbiAlemQ6ICVVAGNhbid0IHRyYW5zbGF0ZSBjaGFyYWN0ZXIgJ1x1JTA0eCcgaW4gcG9zaXRpb24gJXpkOiAlVQAnJVUnIGNvZGVjIGNhbid0IGVuY29kZSBjaGFyYWN0ZXIgJ1x1JTA0eCcgaW4gcG9zaXRpb24gJXpkOiAlVQBjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdceCUwMngnIGluIHBvc2l0aW9uICV6ZDogJVUAJyVVJyBjb2RlYyBjYW4ndCBlbmNvZGUgY2hhcmFjdGVyICdceCUwMngnIGluIHBvc2l0aW9uICV6ZDogJVUAa2V5d29yZCBhcmd1bWVudCByZXBlYXRlZDogJVUAKCVzKSAlVQBmcFQAZ2xJc1F1ZXJ5RVhUAGdsQmVnaW5RdWVyeUVYVABnbEVuZFF1ZXJ5RVhUAGdsR2V0UXVlcnlpdkVYVABnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUAGdsR2V0UXVlcnlPYmplY3RpdkVYVABnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQAZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQAZ2xHZW5RdWVyaWVzRVhUAGdsRGVsZXRlUXVlcmllc0VYVABnbFF1ZXJ5Q291bnRlckVYVABQWURFQlVHRVhUAFBDX01BWF9JTlBVVABFWF9OT0lOUFVUAFBPTExPVVQAVENQX1VTRVJfVElNRU9VVABFVElNRURPVVQAJFRUAEVMM1JTVABOSV9NQVhIT1NUAEVYX05PSE9TVABOSV9OVU1FUklDSE9TVABBSV9OVU1FUklDSE9TVABFRVhJU1QASVNfTk9ERV9MSVNUAEZfVEVTVABjb21waWxlKCkgbW9kZSAnZnVuY190eXBlJyByZXF1aXJlcyBmbGFnIFB5Q0ZfT05MWV9BU1QASU5BRERSX0JST0FEQ0FTVABTT19CUk9BRENBU1QAYXN0LkFTVABzdHJpbmcsIGJ5dGVzIG9yIEFTVABJUF9CSU5EX0FERFJFU1NfTk9fUE9SVABTX0lTUE9SVABFU09DS1ROT1NVUFBPUlQARVBST1RPTk9TVVBQT1JUAEVQRk5PU1VQUE9SVABFQUZOT1NVUFBPUlQAREVGX0lNUE9SVABTX0lGUE9SVABTSUdBQlJUAEVSRVNUQVJUAFNDX1hPUEVOX0NSWVBUAFhNTF9DUVVBTlRfT1BUAEVOT1BST1RPT1BUAFRDUF9ERUZFUl9BQ0NFUFQARURRVU9UAERFRl9BTk5PVABTSUdJT1QAU0ZfU05BUFNIT1QARURPVERPVABDVFlQRVNfTUFYX0FSR0NPVU5UAEVCRk9OVABTSUdDT05UAEVTUk1OVABQWVRIT05CUkVBS1BPSU5UAFNJR0lOVABJUF9UUkFOU1BBUkVOVABFTk9FTlQAWE1MX0VSUk9SX0lOVkFMSURfQVJHVU1FTlQAVFlQRV9DT01NRU5UAElQUFJPVE9fRlJBR01FTlQAWE1MX0VSUk9SX0pVTktfQUZURVJfRE9DX0VMRU1FTlQASU5ERU5UAERFREVOVABQRVJDRU5UAFRDUF9LRUVQQ05UAFRDUF9TWU5DTlQAR01UAEVSQV9EX1RfRk1UAEVSQV9UX0ZNVABFUkFfRF9GTVQAU19FTkZNVABTX0lGTVQAQUNDRVNTX0RFRkFVTFQARUJBRFNMVABFTDNITFQARUwySExUAFNJR1NUS0ZMVABTSUdRVUlUAFNDX1RIUkVBRF9QUklPX0lOSEVSSVQAT19UVFlfSU5JVABJUFY2X0hPUExJTUlUAElQVjZfUkVDVkhPUExJTUlUAGtleXMtPmRrX2tpbmQgPT0gRElDVF9LRVlTX1NQTElUAGtleXMtPmRrX2tpbmQgIT0gRElDVF9LRVlTX1NQTElUAEdMT0JBTF9FWFBMSUNJVABHTE9CQUxfSU1QTElDSVQATVNHX0RPTlRXQUlUAFdOT1dBSVQAUHlDRl9BTExPV19UT1BfTEVWRUxfQVdBSVQAU19JU1dIVABTX0lGV0hUAFJJR0hUU0hJRlQATEVGVFNISUZUAEhBU19TRVQARU5FVFJFU0VUAEVDT05OUkVTRVQAQ09ERVNFVABFTk9ORVQAQUZfRUNPTkVUAEFGX0lORVQAU09MX1NPQ0tFVABQRl9QQUNLRVQAQUZfUEFDS0VUAFNPQ0tfU0VRUEFDS0VUAEhBU19HRVQAb2RkIG51bWJlciBvZiBpdGVtcyBmb3IgRElDVABTQ19USFJFQURfUFJJT19QUk9URUNUAE9fRElSRUNUAFBZVEhPTklOU1BFQ1QAUHlVbmljb2RlX0lTX0NPTVBBQ1QAVENQX05PVFNFTlRfTE9XQVQAU09fUkNWTE9XQVQAU09fU05ETE9XQVQASEFWRV9MU1RBVABIQVZFX0ZTVEFUQVQASEFWRV9GVVRJTUVTQVQASEFWRV9NS0RJUkFUAEhBVkVfRkNIT1dOQVQASEFWRV9PUEVOQVQASEFWRV9VTkxJTktBVABIQVZFX1JFQURMSU5LQVQAT19DUkVBVABFWF9DQU5UQ1JFQVQATUFYUkVQRUFUAEhBVkVfUkVOQU1FQVQASEFWRV9GQ0hNT0RBVAAlYiAlZSAlVAAkVABFTk9TWVMAU0lHU1lTAFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19BTFdBWVMAV1MAV0VYSVRTVEFUVVMAU1RfU1lOQ0hST05PVVMATUFQX0FOT05ZTU9VUwBNSU5VUwBYTUxfQ1FVQU5UX1BMVVMAU0lHQlVTAElQX1JFQ1ZPUFRTAElQUFJPVE9fRFNUT1BUUwBJUFY2X0RTVE9QVFMASVBWNl9SRUNWRFNUT1BUUwBJUFY2X1JUSERSRFNUT1BUUwBJUF9SRVRPUFRTAElQX1JFQ1ZSRVRPUFRTAElQUFJPVE9fSE9QT1BUUwBJUFY2X0hPUE9QVFMASVBWNl9SRUNWSE9QT1BUUwBQeUNGX1RZUEVfQ09NTUVOVFMAWE1MX0VSUk9SX05PX0VMRU1FTlRTAEFMVF9ESUdJVFMAUFlUSE9OSU5UTUFYU1RSRElHSVRTAE1BWF9XQklUUwBQQ19GSUxFU0laRUJJVFMAU0NNX1JJR0hUUwBTQ19TSEFSRURfTUVNT1JZX09CSkVDVFMAREVCVUdfU1RBVFMAUFlUSE9OTUFMTE9DU1RBVFMARUlOUFJPR1JFU1MATEVTUwBQUklPX1BST0NFU1MAVFlQRV9DTEFTUwBERUZfRlJFRV9DTEFTUwBJUFY2X1RDTEFTUwBJUFY2X1JFQ1ZUQ0xBU1MARVVTRVJTAFNDX1RJTUVSUwBNQVhHUk9VUFMASVBWNl9NVUxUSUNBU1RfSE9QUwBJUFY2X1VOSUNBU1RfSE9QUwBJUF9NQVhfTUVNQkVSU0hJUFMASVBfVE9TAElQX1JFQ1ZUT1MAWE1MX05TAElQX09QVElPTlMAU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TAFNDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMAWE1MX0VSUk9SX1JFU0VSVkVEX1BSRUZJWF9YTUxOUwBIQVZFX0ZVVElNRU5TAF9TVFJVQ1RfVE1fSVRFTVMAb2RkIG51bWJlciBvZiBpdGVtcyBmb3IgU0VUSVRFTVMAU0NfUkVBTFRJTUVfU0lHTkFMUwBTQ01fQ1JFREVOVElBTFMARUxMSVBTSVMAY2Fubm90IGRlY29kZSBQWVRIT05XQVJOSU5HUwBFQUlfQkFERkxBR1MASEFWRV9GU1RBVFZGUwBFTk9CVUZTAEVST0ZTAEVUT09NQU5ZUkVGUwBQWVRIT05EVU1QUkVGUwBYTUxfQ09OVEVYVF9CWVRFUwBTQ19TRU1BUEhPUkVTAFhNTF9CTEFQX0FDVF9USFJFUwBnbElzVmVydGV4QXJyYXlPRVMAZ2xCaW5kVmVydGV4QXJyYXlPRVMAZ2xHZW5WZXJ0ZXhBcnJheXNPRVMAZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVMAU0NfTUFQUEVEX0ZJTEVTAFBZVEhPTk5PREVCVUdSQU5HRVMATENfTUVTU0FHRVMAU0NfUEhZU19QQUdFUwBTQ19BVlBIWVNfUEFHRVMAWl9UUkVFUwBIQVNfSU5DTFVERVMARUFDQ0VTAFNPTF9SRFMAUEZfUkRTAEFGX1JEUwBTQ19TQVZFRF9JRFMASEFWRV9USFJFQURTAFNDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMAU0NfVEhSRUFEUwBDUwBCUwBIQVNfSEFTAC1TACVIOiVNOiVTAENhbid0IHBpY2tsZSAlUjogaXQncyBub3QgdGhlIHNhbWUgb2JqZWN0IGFzICVTLiVTAFtFcnJubyAlU10gJVMAU0hVVF9XUgBTSUdQV1IAU0hVVF9SRFdSAE9fUkRXUgBQTV9TVFIAQU1fU1RSAENSTkNZU1RSAEVOT1NUUgBFSU5UUgBTX0lYVVNSAFNfSVdVU1IAU19JUlVTUgBFTk9TUgBTQ0hFRF9SUgBFWF9PU0VSUgBFWF9JT0VSUgBQT0xMRVJSAEVYX0RBVEFFUlIAWUVTRVhQUgBOT0VYUFIASVNfSVRFUkFUT1IASVNfQVNZTkNfSVRFUkFUT1IASVNfR0VORVJBVE9SAElTX0FTWU5DX0dFTkVSQVRPUgBJU19FUlJPUgBTT19FUlJPUgBJT19FUlJPUgBNRU1fRVJST1IAUEFSQU1fRVJST1IAQ09ORklHX0VSUk9SAFNFUVVFTkNFX0VSUk9SAERBVEFfRVJST1IARlVOQ0ZMQUdfVVNFX0xBU1RFUlJPUgBST1VORF9GTE9PUgBTX0lTRE9PUgBTX0lGRE9PUgBWRVJTSU9OX01JTk9SAFZFUlNJT05fTUFKT1IATVNHX0VPUgBFTk9URElSAFNfSVNESVIARUlTRElSAFRNUERJUgBURU1QRElSAEhBVkVfRkRPUEVORElSAEhBVkVfRkNIRElSAFNfSUZESVIAY2Fubm90IGRlY29kZSBQWVRIT05QTEFUTElCRElSAFNfSVNDSFIAU19JRkNIUgBQWVdJTlZFUgBYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfTkVWRVIAUE9JTlRFUgBHUkVBVEVSAFBSSU9fVVNFUgBFWF9OT1VTRVIAQU1QRVIAUFlUSE9ORkFVTFRIQU5ETEVSAEVORE1BUktFUgBTQ0hFRF9PVEhFUgBTT19MSU5HRVIASVNfQlVGRkVSAFhNTF9FUlJPUl9OT19CVUZGRVIAX1JBV19NQUdJQ19OVU1CRVIAQ01TR19OWFRIRFIAQ01TR19GSVJTVEhEUgBJUFY2X1JUSERSAElQVjZfUkVDVlJUSERSAFNDX1RIUkVBRF9BVFRSX1NUQUNLQUREUgBFQkFEUgBIQVZFX0NPTlRFWFRWQVIARE9VQkxFU1RBUgBSUEFSAExQQVIAWE1MX0VSUk9SX1BBUlRJQUxfQ0hBUgBSQURJWENIQVIATUFYWUVBUgBNSU5ZRUFSAFZCQVIAX19jbGFzc2NlbGxfXyBtdXN0IGJlIGEgbm9ubG9jYWwgY2VsbCwgbm90ICUuMjAwUgBfX2NsYXNzX18gc2V0IHRvICUuMjAwUiBkZWZpbmluZyAlLjIwMFIgYXMgJS4yMDBSAGludmFsaWQgbGl0ZXJhbCBmb3IgaW50KCkgd2l0aCBiYXNlICVkOiAlLjIwMFIALVIAJXMlUgAgbmFtZT0lUgAgbW9kZT0lUgAlVT0lUgAlVSwgJVM9JVIAY2FsbGluZyAlUiBzaG91bGQgaGF2ZSByZXR1cm5lZCBhbiBpbnN0YW5jZSBvZiBCYXNlRXhjZXB0aW9uLCBub3QgJVIAZXhwZWN0ZWQgc29tZSBzb3J0IG9mIGV4cHJfY29udGV4dCwgYnV0IGdvdCAlUgBleHBlY3RlZCBzb21lIHNvcnQgb2Ygc3RtdCwgYnV0IGdvdCAlUgBleHBlY3RlZCBzb21lIHNvcnQgb2YgZXhwciwgYnV0IGdvdCAlUgBleHBlY3RlZCBzb21lIHNvcnQgb2Ygb3BlcmF0b3IsIGJ1dCBnb3QgJVIAZXhwZWN0ZWQgc29tZSBzb3J0IG9mIGV4Y2VwdGhhbmRsZXIsIGJ1dCBnb3QgJVIAZXhwZWN0ZWQgc29tZSBzb3J0IG9mIHVuYXJ5b3AsIGJ1dCBnb3QgJVIAZXhwZWN0ZWQgc29tZSBzb3J0IG9mIGNtcG9wLCBidXQgZ290ICVSAGV4cGVjdGVkIHNvbWUgc29ydCBvZiBib29sb3AsIGJ1dCBnb3QgJVIAZXhwZWN0ZWQgc29tZSBzb3J0IG9mIHBhdHRlcm4sIGJ1dCBnb3QgJVIAZXhwZWN0ZWQgc29tZSBzb3J0IG9mIHR5cGVfaWdub3JlLCBidXQgZ290ICVSAGV4cGVjdGVkIHNvbWUgc29ydCBvZiBtb2QsIGJ1dCBnb3QgJVIAaW50ZXJwcmV0ZXIgSUQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnQsIGdvdCAlUgBjaGFubmVsIElEIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50LCBnb3QgJVIAZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgVG9rZW4sIGdvdCAlUgBhIENvbnRleHRWYXIga2V5IHdhcyBleHBlY3RlZCwgZ290ICVSAGEgY29yb3V0aW5lIHdhcyBleHBlY3RlZCwgZ290ICVSAENhbid0IHBpY2tsZSBsb2NhbCBvYmplY3QgJVIAdW5jbG9zZWQgc2NhbmRpciBpdGVyYXRvciAlUgBuZWdhdGl2ZSBzZWVrIHBvc2l0aW9uICVSAENhbid0IGdldCBhdHRyaWJ1dGUgJVIgb24gJVIAQ2FuJ3QgcGlja2xlIGxvY2FsIGF0dHJpYnV0ZSAlUiBvbiAlUgBJbnZhbGlkIERTVCBvZmZzZXQgaW4gJVIASW52YWxpZCBTVEQgb2Zmc2V0IGluICVSAEludmFsaWQgRFNUIGZvcm1hdCBpbiAlUgBJbnZhbGlkIFNURCBmb3JtYXQgaW4gJVIAeWllbGQgd2FzIHVzZWQgaW5zdGVhZCBvZiB5aWVsZCBmcm9tIGZvciBnZW5lcmF0b3IgaW4gdGFzayAlUiB3aXRoICVSAHlpZWxkIHdhcyB1c2VkIGluc3RlYWQgb2YgeWllbGQgZnJvbSBpbiB0YXNrICVSIHdpdGggJVIAbm8gbG9jYWxzIHdoZW4gZGVsZXRpbmcgJVIAbm8gbG9jYWxzIGZvdW5kIHdoZW4gc3RvcmluZyAlUgBubyBsb2NhbHMgd2hlbiBsb2FkaW5nICVSACVzKCkgZ290IG11bHRpcGxlIHN1Yi1wYXR0ZXJucyBmb3IgYXR0cmlidXRlICVSAHVuY2xvc2VkIGZpbGUgJVIAcmVlbnRyYW50IGNhbGwgaW5zaWRlICVSAGR1cGxpY2F0ZSB2YWx1ZXMgZm9yIGZpZWxkICVSAHVuY2xvc2VkICVSAE5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUgBFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICVSAF9zdGVwKCk6IGFscmVhZHkgZG9uZTogJVIgJVIAW0Vycm5vICVTXSAlUzogJVIgLT4gJVIAY2FuJ3QgcGlja2xlICclLjIwMHMnIG9iamVjdDogJVIAY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIGZsb2F0OiAlUgBfUHlTVF9HZXRTY29wZShuYW1lPSVSKSBmYWlsZWQ6IHVua25vd24gc2NvcGUgaW4gdW5pdCAlUyAoJVIpOyBzeW1ib2xzOiAlUjsgbG9jYWxzOiAlUjsgZ2xvYmFsczogJVIAY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvICVzOiAlUgBJbnZhbGlkIGlzb2Zvcm1hdCBzdHJpbmc6ICVSAE1pc3NpbmcgdHJhbnNpdGlvbiBydWxlcyBpbiBUWiBzdHJpbmc6ICVSAE1hbGZvcm1lZCB0cmFuc2l0aW9uIHJ1bGUgaW4gVFogc3RyaW5nOiAlUgBFeHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgZW5kIG9mIFRaIHN0cmluZzogJVIAVGFzayBjYW5ub3QgYXdhaXQgb24gaXRzZWxmOiAlUgBpbnZhbGlkIGludGVnZXIgdmFsdWU6ICVSAGlsbGVnYWwgbmV3bGluZSB2YWx1ZTogJVIAaW52YWxpZCBmaWxlOiAlUgBUYXNrIGdvdCBiYWQgeWllbGQ6ICVSAGNvbXBpbGVyX2xvb2t1cF9hcmcobmFtZT0lUikgd2l0aCByZWZ0eXBlPSVkIGZhaWxlZCBpbiAlUzsgZnJlZXZhcnMgb2YgY29kZSAlUzogJVIAW0Vycm5vICVTXSAlUzogJVIAJVUsICVSAFVucmVjb2duaXplZCBhY3Rpb24gKCVSKSBpbiB3YXJuaW5ncy5maWx0ZXJzOgogJVIARU5PVFVOSVEAWE1MX0NUWVBFX1NFUQBFSUxTRVEARURFU1RBRERSUkVRAEBRAHNQAEVYUABJUFBST1RPX1JTVlAAUk9VTkRfSEFMRl9VUABST1VORF9VUABQWVRIT05TVEFSVFVQAEVOT1RTVVAASVBQUk9UT19QVVAASU5BRERSX0FMTEhPU1RTX0dST1VQAElQVjZfSk9JTl9HUk9VUABJTkFERFJfTUFYX0xPQ0FMX0dST1VQAElQVjZfTEVBVkVfR1JPVVAASU5BRERSX1VOU1BFQ19HUk9VUABQT0xMSFVQAFNJR0hVUABQT0xMUkRIVVAAUk9VTkRfMDVVUABJUFBST1RPX1RQAFNJR1RTVFAASVBQUk9UT19FU1AAU19JWEdSUABTX0lXR1JQAFNfSVJHUlAAUFJJT19QR1JQAEVPUE5PVFNVUFAAU0lHU1RPUABKVU1QX0lGX1RSVUVfT1JfUE9QAEpVTVBfSUZfRkFMU0VfT1JfUE9QAElQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AASVBfTVVMVElDQVNUX0xPT1AASVBWNl9NVUxUSUNBU1RfTE9PUABFTE9PUABJUFY2X05FWFRIT1AARU1VTFRJSE9QAE1BRFZfRE9OVERVTVAAVUZfTk9EVU1QAE1BRFZfRE9EVU1QAFdDT1JFRFVNUABUTVAASVBQUk9UT19JR01QAFRFTVAASVBQUk9UT19JQ01QAFhNTF9CTEFQX01BWF9BTVAAVENQX1dJTkRPV19DTEFNUABMUABJUFBST1RPX0lQAFNPTF9JUABJUFBST1RPX0lQSVAASVBfRFJPUF9NRU1CRVJTSElQAElQX0FERF9NRU1CRVJTSElQAElQUFJPVE9fRUdQAFRIT1VTRVAAWE1MX0NRVUFOVF9SRVAASVBQUk9UT19VRFAAU09MX1VEUABJUFBST1RPX0lEUABJUFBST1RPX1RDUABTT0xfVENQAElQUFJPVE9fTVBUQ1AAU0lHVFJBUABJU19PQkpFQ1RfTUFQAEBQAC1QAE9PfE8AeU8AaXNpc3NzTwBPc3NzTwBpaWlzTwBPc08Abk8AaWlpaWlpaU8AT2lPAFlPAHNQelVaWE8AU19JUldYTwBFUFJPVE8ATFJPAFNDX05aRVJPAGl8T08AT09PT3xPTwBPT09zT08AaXNpc09PTwBpc2lPT09PAHxPT09PT09PTwB8T09PT09PT09PAHwkT09PT08ATk9PAC1PIG9yIC1PTwBGVU5DRkxBR19VU0VfRVJSTk8AT05PAFNUX0lOTwBFTk9BTk8AUkxPAF9pby5CeXRlc0lPAF9pby5TdHJpbmdJTwBfaW8uRmlsZUlPAFNDX0FTWU5DSFJPTk9VU19JTwBQQ19QUklPX0lPAFNDX1BSSU9SSVRJWkVEX0lPAFNDX1NZTkNIUk9OSVpFRF9JTwBQQ19TWU5DX0lPAFBDX0FTWU5DX0lPAEVOWElPAFNJR0lPAEVSRU1PVEVJTwBUQ1BfSU5GTwBJUFY2X1BLVElORk8ASVBWNl9SRUNWUEtUSU5GTwBTQ0hFRF9GSUZPAFNfSVNGSUZPAFNfSUZJRk8AWUVPAFdFTwBTT19SQ1ZUSU1FTwBTT19TTkRUSU1FTwBETwBDTwBjYW4ndCBoYXZlIHVuYnVmZmVyZWQgdGV4dCBJL08AYmxvY2tzaXplIGZvciBmaWxlc3lzdGVtIEkvTwBPKE9PKU8ATyhOTylPAE8oQ08pTwAoTylPAE8oT0NpTilPAE4oTilPAHwkTwBzck4Abk4Ac2lOAGlpTgBOT2lOAHNOYU4AX0dMT0JBTF9fTgBIQVZFX0ZDSE9XTgBST1VORF9IQUxGX0RPV04AUk9VTkRfRE9XTgBFU0hVVERPV04ARUhPU1RET1dOAEVORVRET1dOAFNDXzJfRk9SVF9SVU4ATUFEVl9IV1BPSVNPTgBPT04ATUFQX0FOT04AUENfTUFYX0NBTk9OAENPTE9OAFRDUF9DT05HRVNUSU9OAFRZUEVfRlVOQ1RJT04AU0NfTUVNT1JZX1BST1RFQ1RJT04AWE1MX0VSUk9SX1VOQ0xPU0VEX0NEQVRBX1NFQ1RJT04AWl9CRVNUX0NPTVBSRVNTSU9OAFpfREVGQVVMVF9DT01QUkVTU0lPTgBaX05PX0NPTVBSRVNTSU9OAFNDX1hPUEVOX1hDVV9WRVJTSU9OAEVYUEFUX1ZFUlNJT04AU0NfWE9QRU5fVkVSU0lPTgBaTElCX1JVTlRJTUVfVkVSU0lPTgBDU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OAFNDX1ZFUlNJT04AQ1NfR05VX0xJQkNfVkVSU0lPTgBaTElCX1ZFUlNJT04AU0NfMl9WRVJTSU9OAFNPTUFYQ09OTgBTT19BQ0NFUFRDT05OAEVOT1RDT05OAEVJU0NPTk4ATmlOTk5OTgBPKCgpbilOTgBPKClOTgBTQ19OUFJPQ0VTU09SU19PTkxOAFNJR1RUSU4AU0NfVEhSRUFEX1NUQUNLX01JTgBQQ19BTExPQ19TSVpFX01JTgBTSUdSVE1JTgBNSU5fRU1JTgBQT0xMSU4AU09fRE9NQUlOAEVBSV9BR0FJTgBFQUdBSU4AU0lHX0lHTgBQQ19SRUNfWEZFUl9BTElHTgBST1VORF9IQUxGX0VWRU4AVENQX0ZBU1RPUEVOAE1TR19GQVNUT1BFTgBuOkNNU0dfTEVOAFhNTF9FUlJPUl9JTlZBTElEX1RPS0VOAFhNTF9FUlJPUl9VTkNMT1NFRF9UT0tFTgBVRl9ISURERU4ATklfTk9GUUROAEVMSUJTQ04AQk4ATkFOAEVVQ0xFQU4AQE4AU0NfWE9QRU5fRU5IX0kxOE4ATyhPbilOAE8oKU4AJE4ASVBWNl9DSEVDS1NVTQBFTk9NRURJVU0ATlNNAFBPTExXUk5PUk0AUE9MTFJETk9STQBTSUdWVEFMUk0AU0lHQUxSTQBNU0dfQ09ORklSTQBTQ18yX0NIQVJfVEVSTQBTSUdURVJNAEVYX05PUEVSTQBFUEVSTQBFSURSTQBUX0ZNVF9BTVBNAEFGX05FVFJPTQBNQURWX1JBTkRPTQBQT1NJWF9GQURWX1JBTkRPTQBFRE9NAGVuY29kaW5nIHByb2JsZW06ICVzIHdpdGggQk9NAEVDT01NAExNAElQUFJPVE9fUElNAFNDX1hPUEVOX1NITQBFQUlfU1lTVEVNAFB5VHVwbGVfU0VUX0lURU0ARU5PTUVNAFNPQ0tfUkRNAFNPQ0tfREdSQU0ATklfREdSQU0AREVGX1BBUkFNAEVOT1ROQU0ARUlTTkFNAFNPQ0tfU1RSRUFNAGlpTABmTAAlTGFMAFRDUF9LRUVQSU5UVkwATlVMAElQX0RFRkFVTFRfTVVMVElDQVNUX1RUTABJUF9NVUxUSUNBU1RfVFRMAElQX1RUTABTQ19KT0JfQ09OVFJPTABFWF9QUk9UT0NPTABTT19QUk9UT0NPTABYTUxfRVJST1JfUkVTRVJWRURfUFJFRklYX1hNTABQeU9iamVjdCBpcyBOVUxMAEJ1ZmZlciBpcyBOVUxMAG1vZHVsZSBkZWZpbml0aW9uIGlzIE5VTEwAcHJlaW5pdGlhbGl6YXRpb24gY29uZmlnIGlzIE5VTEwAUHlNb2R1bGVfQWRkT2JqZWN0UmVmKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gcmFpc2VkIGlmIHZhbHVlIGlzIE5VTEwAZ2xvYmFscyBhbmQgbG9jYWxzIGNhbm5vdCBiZSBOVUxMAHRhZyBtYXkgbm90IGJlIE5VTEwAUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoKTogaW5mby0+YnVmIG11c3Qgbm90IGJlIE5VTEwAYXJnICE9IE5VTEwAZGF0YSAhPSBOVUxMAE9VVEJVRkZfRlVMTABFWEZVTEwAYmFuZCBldmVudCBmb3IgU0lHUE9MTABTSUdLSUxMAEVSRktJTEwAU0lHSUxMAENFTEwAUF9BTEwAQUlfQUxMAFFVT1RFX0FMTABMQ19BTEwAcmUuRE9UQUxMAE1TR19XQUlUQUxMAERFQlVHX1NBVkVBTEwAY2Fubm90IGNhbGN1bGF0ZSBwYXRoIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBHSUwAUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMAEVBRERSTk9UQVZBSUwARU5BVkFJTABFQUlfRkFJTABFWF9URU1QRkFJTABnbERyYXdCdWZmZXJzV0VCR0wAYmFycnlfYXNfRkxVRkwAU0lHX0RGTABERUZfTUVNX0xFVkVMAE9fRVhDTABJUF9IRFJJTkNMAFhNTF9FUlJPUl9URVhUX0RFQ0wAWE1MX0VSUk9SX1hNTF9ERUNMAEZVTkNGTEFHX0NERUNMAFBPTExOVkFMAEVJTlZBTABJVElNRVJfVklSVFVBTABDSVJDVU1GTEVYRVFVQUwATk9URVFVQUwAUEVSQ0VOVEVRVUFMAFJJR0hUU0hJRlRFUVVBTABMRUZUU0hJRlRFUVVBTABBVEVRVUFMAFBMVVNFUVVBTABMRVNTRVFVQUwAR1JFQVRFUkVRVUFMAEFNUEVSRVFVQUwARE9VQkxFU1RBUkVRVUFMAFZCQVJFUVVBTABFUUVRVUFMAENPTE9ORVFVQUwATUlORVFVQUwARE9VQkxFU0xBU0hFUVVBTABNU0dfTk9TSUdOQUwATUFEVl9OT1JNQUwAUE9TSVhfRkFEVl9OT1JNQUwAUVVPVEVfTUlOSU1BTABNQURWX1NFUVVFTlRJQUwAUE9TSVhfRkFEVl9TRVFVRU5USUFMAElUSU1FUl9SRUFMAERFRl9MT0NBTABSVExEX0xPQ0FMAERFRl9OT05MT0NBTABERUZfR0xPQkFMAFJUTERfR0xPQkFMAEBMAFNDT1BFX01BU0sAU0lHX1NFVE1BU0sAV0lUSF9ORVhUX0ZSQU1FV09SSwBTQ0hFRF9SRVNFVF9PTl9GT1JLAE1BRFZfRE9OVEZPUksATUFEVl9ET0ZPUksAVENQX0NPUksAU09fTUFSSwBjb3VsZCBub3QgZmluZCBNQVJLAEVYX09LAFdfT0sAUl9PSwBGX09LAE5OTksAU19JU0xOSwBTX0lGTE5LAEVOT0xJTksAU1RfTkxJTksAVUZfTk9VTkxJTksAU0ZfTk9VTkxJTksARU1MSU5LAEVERUFETEsARU5PVEJMSwBTX0lTQkxLAFNfSUZCTEsAQUZfQVBQTEVUQUxLAE1TR19QRUVLAFNDX0NMS19UQ0sARU5PVFNPQ0sAU19JU1NPQ0sAU19JRlNPQ0sARl9MT0NLAEZfVUxPQ0sARl9UTE9DSwBTQ19NRU1MT0NLAFNUX01BTkRMT0NLAEVERUFETE9DSwBaX0JMT0NLAFNJR19CTE9DSwBTSUdfVU5CTE9DSwBPX05PTkJMT0NLAFNPQ0tfTk9OQkxPQ0sARVdPVUxEQkxPQ0sARU5PTENLAE1BUF9TVEFDSwBUQ1BfUVVJQ0tBQ0sASU5BRERSX0xPT1BCQUNLAERFQlVHX0xFQUsATzpLAE5KAEpKAE5FV09CSgBVYTllbmFibGVfaWZJAFlJAFdJAEFGX05FVEJFVUkARlNJAEVOT0NTSQBYTUxfRVJST1JfUkVTRVJWRURfTkFNRVNQQUNFX1VSSQBQT0xMUFJJAExSSQBYTUxfRVJST1JfTUlTUExBQ0VEX1hNTF9QSQBGVU5DRkxBR19QWVRIT05BUEkAcHlleHBhdC5leHBhdF9DQVBJAHVuaWNvZGVkYXRhLl91Y25oYXNoX0NBUEkAZGF0ZXRpbWUuZGF0ZXRpbWVfQ0FQSQBfc29ja2V0LkNBUEkAU0VNSQBSTEkAUHlVbmljb2RlX0lTX0FTQ0lJAHJlLkFTQ0lJAFVTLUFTQ0lJAFBESQBDTE9DS19UQUkAQEkALUkAU19JWE9USABTX0lXT1RIAFNfSVJPVEgASEFTX0xFTkdUSABFTlZfUEFUSABDU19QQVRIAE9fUEFUSABWUEFUSABjYW5ub3QgZGVjb2RlIFBZVEhPTlBBVEgAUFlUSE9OU0FGRVBBVEgAWl9OT19GTFVTSABaX0ZVTExfRkxVU0gAWl9QQVJUSUFMX0ZMVVNIAFpfU1lOQ19GTFVTSABaX0ZJTklTSABBRl9BU0gARE9VQkxFU0xBU0gATkgATEgAICoqKiBPVUNIAEVVTkFUQ0gAWE1MX0VSUk9SX1RBR19NSVNNQVRDSABTQ0hFRF9CQVRDSABFU1JDSABPX1NFQVJDSABTSUdXSU5DSABFSE9TVFVOUkVBQ0gARU5FVFVOUkVBQ0gAWE1MX0VSUk9SX0FNUExJRklDQVRJT05fTElNSVRfQlJFQUNIAElQUFJPVE9fQUgAQEgAU19JUldYRwBFWFBBVF9FTlRJVFlfREVCVUcARVhQQVRfRU5UUk9QWV9ERUJVRwBTT19ERUJVRwBFWFBBVF9BQ0NPVU5USU5HX0RFQlVHAFBZVEhPTkRFQlVHAHJlLkRFQlVHAEVOT01TRwBQT0xMTVNHAEVCQURNU0cAU0lHVVJHAEVMTlJORwBFQ0hSTkcARU5BTUVUT09MT05HAElQUFJPVE9fUk9VVElORwBUb2tlbi5NSVNTSU5HAFNDX01FU1NBR0VfUEFTU0lORwBYTUxfRVJST1JfQ0FOVF9DSEFOR0VfRkVBVFVSRV9PTkNFX1BBUlNJTkcAUHlCeXRlc19BU19TVFJJTkcAUkVWRVJTRV9JTVBPUlRfTUFQUElORwBfX2FiY190cGZsYWdzX18gY2Fubm90IGJlIGJvdGggUHlfVFBGTEFHU19TRVFVRU5DRSBhbmQgUHlfVFBGTEFHU19NQVBQSU5HAFJFVkVSU0VfTkFNRV9NQVBQSU5HAFNDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HAFNDX1BSSU9SSVRZX1NDSEVEVUxJTkcAUk9VTkRfQ0VJTElORwBYTUxfRVJST1JfRVhURVJOQUxfRU5USVRZX0hBTkRMSU5HAFhNTF9FUlJPUl9JTkNPUlJFQ1RfRU5DT0RJTkcAWE1MX0VSUk9SX1VOS05PV05fRU5DT0RJTkcAUFlUSE9OV0FSTkRFRkFVTFRFTkNPRElORwBQWVRIT05JT0VOQ09ESU5HAFBFTkRJTkcATEFORwBXTk9IQU5HAExHAEVOT1BLRwBXU1RPUFNJRwBOU0lHAFdURVJNU0lHAEVYX0NPTkZJRwBBSV9BRERSQ09ORklHAFNDX1hCUzVfTFBCSUdfT0ZGQklHAFBPU0lYX1Y2X0lMUDMyX09GRjMyClBPU0lYX1Y2X0lMUDMyX09GRkJJRwBTQ19YQlM1X0lMUDMyX09GRkJJRwBFRkJJRwBFMkJJRwBFUkVNQ0hHAEdHAFRDUF9NQVhTRUcAU19JU1JFRwBTX0lGUkVHAElQVjZfRE9OVEZSQUcAXHhGAFBDX1BJUEVfQlVGAFBDX1NPQ0tfTUFYQlVGAFNPX1JDVkJVRgBTT19TTkRCVUYASVRJTUVSX1BST0YAU0lHUFJPRgBVTkVYUEVDVEVEX0VPRgBTQ19OUFJPQ0VTU09SU19DT05GAEhBVkVfRlBBVEhDT05GAElORgBJUF9NVUxUSUNBU1RfSUYASVBWNl9NVUxUSUNBU1RfSUYAXHhGRgBTQ09QRV9PRkYAbWF4Y2hhciA8PSAweEZGRkYAXHhFRgBYTUxfRVJST1JfQklOQVJZX0VOVElUWV9SRUYAWE1MX0VSUk9SX1BBUkFNX0VOVElUWV9SRUYAWE1MX0VSUk9SX0FUVFJJQlVURV9FWFRFUk5BTF9FTlRJVFlfUkVGAFhNTF9FUlJPUl9SRUNVUlNJVkVfRU5USVRZX1JFRgBYTUxfRVJST1JfQkFEX0NIQVJfUkVGAFB5X0lOQ1JFRgBQeV9ERUNSRUYAU0NfMl9MT0NBTEVERUYAMDEyMzQ1Njc4OUFCQ0RFRgBceERGAFBERgBFQkFERgBceENGAFx4QkYAXHhBRgBceDlGAFx4OEYAXHg3RgBceDFGAFx4RQB2RQBMdEUAR3RFAEJMQUtFMlNfTUFYX0tFWV9TSVpFAEJMQUtFMkJfTUFYX0tFWV9TSVpFAEJMQUtFMlNfTUFYX0RJR0VTVF9TSVpFAEJMQUtFMkJfTUFYX0RJR0VTVF9TSVpFAEJMQUtFMlNfU0FMVF9TSVpFAEJMQUtFMkJfU0FMVF9TSVpFAFB5VHVwbGVfR0VUX1NJWkUAUENfUkVDX01BWF9YRkVSX1NJWkUAUENfUkVDX0lOQ1JfWEZFUl9TSVpFAFBDX1JFQ19NSU5fWEZFUl9TSVpFAERFRkFVTFRfQlVGRkVSX1NJWkUAQkxBS0UyU19QRVJTT05fU0laRQBCTEFLRTJCX1BFUlNPTl9TSVpFAF9DSFVOS19TSVpFAERFRl9CVUZfU0laRQBTQ19QQUdFX1NJWkUAU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFAEVNU0dTSVpFAFNDX1BBR0VTSVpFAENPREVTSVpFAFBZVEhPTk9QVElNSVpFAFlFAFdFAE1BRFZfUkVNT1ZFAEFJX1BBU1NJVkUAU09fS0VFUEFMSVZFAEhBVkVfRkVYRUNWRQBVRl9PUEFRVUUATVNHX0VSUlFVRVVFAEFGX1JPVVRFAFNPX0RPTlRST1VURQBNU0dfRE9OVFJPVVRFAFhNTF9FUlJPUl9EVVBMSUNBVEVfQVRUUklCVVRFAEVSRU1PVEUAUFlUSE9OTk9VU0VSU0lURQBTVF9XUklURQBQUk9UX1dSSVRFAEFDQ0VTU19XUklURQBNQVBfREVOWVdSSVRFAFNfSVdSSVRFAElQUFJPVE9fVURQTElURQBSVExEX05PREVMRVRFAE1BUF9QUklWQVRFAFhNTF9FUlJPUl9VTkVYUEVDVEVEX1NUQVRFAE1BUF9QT1BVTEFURQByZS5URU1QTEFURQBMQ19DT0xMQVRFAEhBVkVfRlRSVU5DQVRFAEVBRERSSU5VU0UAUE9TSVhfRkFEVl9OT1JFVVNFAEFGX1JPU0UAQ0xPU0UAUFlUSE9OVkVSQk9TRQByZS5WRVJCT1NFAHJlLklHTk9SRUNBU0UAVFlQRV9JR05PUkUATVNHX01PUkUATFJFAElQUFJPVE9fR1JFAEVYX1NPRlRXQVJFAFhNTF9FUlJPUl9FTlRJVFlfREVDTEFSRURfSU5fUEUAWE1MX0VSUk9SX0lOQ09NUExFVEVfUEUAWE1MX0VSUk9SX1NVU1BFTkRfUEUAU09fVFlQRQBFUFJPVE9UWVBFAEVNRURJVU1UWVBFAEVBSV9TT0NLVFlQRQBMQ19DVFlQRQBTQ18yX1VQRQBFU1BJUEUARVNUUlBJUEUAQUZfV0FOUElQRQBTSUdQSVBFAEVQSVBFAFNJR0ZQRQBPRQBYTUxfQ1FVQU5UX05PTkUASU5BRERSX05PTkUASVBQUk9UT19OT05FAFFVT1RFX05PTkUAWE1MX0VSUk9SX05PVF9TVEFOREFMT05FAFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19VTkxFU1NfU1RBTkRBTE9ORQBORVdMSU5FAFNPX09PQklOTElORQByZS5NVUxUSUxJTkUATUFEVl9TT0ZUX09GRkxJTkUARU5WX1BZVEhPTkhPTUUATENfVElNRQBQWVRIT05QUk9GSUxFSU1QT1JUVElNRQBDTE9DS19CT09UVElNRQBTVF9NVElNRQBTQ19YT1BFTl9SRUFMVElNRQBDTE9DS19SRUFMVElNRQBFVElNRQBTVF9DVElNRQBTVF9BVElNRQBTVF9OT0RJUkFUSU1FAFNUX05PQVRJTUUAT19OT0FUSU1FAFNUX1JFTEFUSU1FAFhNTF9DVFlQRV9OQU1FAEVBSV9OT05BTUUAQUlfQ0FOT05OQU1FAExPR05BTUUAVFlQRV9NT0RVTEUAWl9STEUARVhfT1NGSUxFAGNhbm5vdCBkZWNvZGUgUFlUSE9ORFVNUFJFRlNGSUxFAE9fVE1QRklMRQBFTkZJTEUARU1GSUxFAE9fTEFSR0VGSUxFAGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFAGdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFAGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUAU0NIRURfSURMRQBUQ1BfS0VFUElETEUAVUZfSU1NVVRBQkxFAFNGX0lNTVVUQUJMRQBNQVBfRVhFQ1VUQUJMRQBFTlZfUFlUSE9ORVhFQ1VUQUJMRQBJU19BV0FJVEFCTEUAREVCVUdfQ09MTEVDVEFCTEUAREVCVUdfVU5DT0xMRUNUQUJMRQBQQ19WRElTQUJMRQBFTk9UUkVDT1ZFUkFCTEUASVNfSVRFUkFCTEUASVNfQVNZTkNfSVRFUkFCTEUASVNfQ0FMTEFCTEUARVhfVU5BVkFJTEFCTEUATUFEVl9NRVJHRUFCTEUATUFEVl9VTk1FUkdFQUJMRQBFU1RBTEUAUFlUSE9OQ09FUkNFQ0xPQ0FMRQByZS5MT0NBTEUAVVRGLTE2TEUAU0NfTUVNTE9DS19SQU5HRQBFUkFOR0UAQUZfQlJJREdFAEVYX1VTQUdFAE1BRFZfSFVHRVBBR0UATUFEVl9OT0hVR0VQQUdFAFx4RkUAXHhFRQBNQURWX0ZSRUUAREVGX0ZSRUUAXHhERQBTVF9NT0RFAFBZVEhPTkRFVk1PREUAU19JTU9ERQBPX0FDQ01PREUAcmUuVU5JQ09ERQBQWVRIT05ET05UV1JJVEVCWVRFQ09ERQBUSUxERQBFQkFERQBceENFAEVBSV9TRVJWSUNFAFNPX0JJTkRUT0RFVklDRQBYTUxfQ1RZUEVfQ0hPSUNFAFJCUkFDRQBMQlJBQ0UAbjpDTVNHX1NQQUNFAFx4QkUAVVRGLTE2QkUAXHhBRQBZQUUAV0FFAFx4OUUAXHg4RQBceDFFAGIxRQBiMEUALUUAUFdEAFVzZUZvcmVpZ25EVEQAWE1MX0VSUk9SX0ZFQVRVUkVfUkVRVUlSRVNfWE1MX0RURABTSFVUX1JEAFNPRlRfS0VZV09SRABOSV9OQU1FUkVRRABIQVZFX0ZDSE1PRABERUZfQk9VTkQAa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCB8fCBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EIHx8IGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQAa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORABTQ18yX0NfQklORABTVF9BUFBFTkQAT19BUFBFTkQAVUZfQVBQRU5EAFNGX0FQUEVORABQT0xMV1JCQU5EAFBPTExSREJBTkQARUNISUxEAFNJR0NITEQATkZLRABJbnRlcnByZXRlcklEAF94eHN1YmludGVycHJldGVycy5DaGFubmVsSUQAQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEAENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEAFNUX1VJRABTVF9OT1NVSUQAU19JU1VJRABQX1BJRABTVF9HSUQAU19JU0dJRABQX1BHSUQAWE1MX0VSUk9SX1BVQkxJQ0lEAHNlbmRpbmcgcHJvY2VzcyBJRABmYWlsZWQgdG8gZ2V0IGFuIGludGVycHJldGVyIElEAGZhaWxlZCB0byBnZXQgYSBjaGFubmVsIElEAFx4RkQATkZEAEVCQURGRABceEVEAFhNTF9DVFlQRV9NSVhFRABaX0ZJWEVEAElQUE9SVF9SRVNFUlZFRABJUFBPUlRfVVNFUlJFU0VSVkVEAFNGX0FSQ0hJVkVEAENMRF9DT05USU5VRUQAV0NPTlRJTlVFRABXSUZDT05USU5VRUQAWE1MX0VSUk9SX0FCT1JURUQARUNPTk5BQk9SVEVEAENMRF9FWElURUQAV0VYSVRFRABXSUZFWElURUQAUENfQ0hPV05fUkVTVFJJQ1RFRABFS0VZUkVKRUNURUQAREVGTEFURUQARUNPTk5SRUZVU0VEAFVGX0NPTVBSRVNTRUQARUtFWUVYUElSRUQAWl9GSUxURVJFRABQWVRIT05VTkJVRkZFUkVEAFNPX1BBU1NDUkVEAFNPX1BFRVJDUkVEAFNDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRABNQVBfU0hBUkVEAENMRF9TVE9QUEVEAFdTVE9QUEVEAFdJRlNUT1BQRUQAQ0xEX1RSQVBQRUQAQUlfVjRNQVBQRUQAQ0xEX0RVTVBFRABDTERfS0lMTEVEAENBTkNFTExFRABFQ0FOQ0VMRUQAV0lGU0lHTkFMRUQARUtFWVJFVk9LRUQAWE1MX0VSUk9SX0ZJTklTSEVEAFBZVEhPTkhBU0hTRUVEAFpfQkVTVF9TUEVFRABNQURWX0RPTlRORUVEAFBPU0lYX0ZBRFZfRE9OVE5FRUQATUFEVl9XSUxMTkVFRABQT1NJWF9GQURWX1dJTExORUVEAFhNTF9FUlJPUl9OT1RfU1VTUEVOREVEAFhNTF9FUlJPUl9TVVNQRU5ERUQAV1VOVFJBQ0VEAFx4REQAXHhDRAB1bmljb2RlZGF0YS5VQ0QAXHhCRABceEFEAFJUTERfTk9MT0FEAFBST1RfUkVBRABBQ0NFU1NfUkVBRABTX0lSRUFEAEVPV05FUkRFQUQARUxJQkJBRABceDlEAFx4OEQAZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRABnbENvcHlUZXhJbWFnZTJEAGdsVGV4SW1hZ2UyRABnbENvbXByZXNzZWRUZXhJbWFnZTJEAGdsQ29weVRleFN1YkltYWdlMkQAZ2xUZXhTdWJJbWFnZTJEAGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQAXHgxRABtZW1vcnl2aWV3OiBjYXN0IG11c3QgYmUgMUQgLT4gTkQgb3IgTkQgLT4gMUQARC5jb3B5KCkgLT4gYSBzaGFsbG93IGNvcHkgb2YgRABceEMAQUZfQVRNU1ZDAEFGX0FUTVBWQwBkYXRldGltZSAtPiB0aW1lZGVsdGEgc2hvd2luZyBvZmZzZXQgZnJvbSBVVEMsIG5lZ2F0aXZlIHZhbHVlcyBpbmRpY2F0aW5nIFdlc3Qgb2YgVVRDAEVCQURSUUMARU5PU1BDAGlsbGVnYWwgdmFsdWUgZm9yIE1QRF9NSU5BTExPQwBQWVRIT05NQUxMT0MAUFlUSE9OVFJBQ0VNQUxMT0MAT19TWU5DAE9fUlNZTkMARUwyTlNZTkMAU0NfRlNZTkMAT19EU1lOQwBPX0FTWU5DAFBDX05PX1RSVU5DAE1TR19UUlVOQwBST1VORF9UUlVOQwBNU0dfQ1RSVU5DAEFGX0xMQwBORktDAG1vZHVsZSBmdW5jdGlvbnMgY2Fubm90IHNldCBNRVRIX0NMQVNTIG9yIE1FVEhfU1RBVElDAGludmFsaWQgZGVjaW1hbCBwb2ludCBvciB1bnN1cHBvcnRlZCBjb21iaW5hdGlvbiBvZiBMQ19DVFlQRSBhbmQgTENfTlVNRVJJQwBRVU9URV9OT05OVU1FUklDAENMT0NLX01PTk9UT05JQwBEQVRBX0VSUk9SX01BR0lDAFx4RkMATkZDAFx4RUMAUFJPVF9FWEVDAE9fRVhFQwBTVF9OT0VYRUMARU5PRVhFQwBPX0NMT0VYRUMAU09DS19DTE9FWEVDAE1TR19DTVNHX0NMT0VYRUMAU19JRVhFQwBFTElCRVhFQwBTT19QQVNTU0VDAFNPX1BFRVJTRUMATUFYX1BSRUMAQUZfVU5TUEVDAFx4REMAXHhDQwBFTElCQUNDAFx4QkMAXHhBQwBceDlDAFx4OEMAXHgxQwBceEIATVNHVkVSQgBBUkIAUlNRQgBMU1FCAE1TR19PT0IATEIAXHhGQgBceEVCAFx4REIAXHhDQgBceEJCAFx4QUIAQEIAXHg5QgBceDhCAFx4MUIALUIAJUIAWUEAV0EAX1B5VW5pY29kZV9OT05DT01QQUNUX0RBVEEARUFJX05PREFUQQBFTk9EQVRBAEVSQQBBRl9TTkEAQ09NTUEAgHgyMi93SzUyWktHQQBceEZBAFx4RUEAXHhEQQBBRl9JUkRBAFx4Q0EAXHhCQQBceEFBAFx4OUEAXHg4QQBceDFBACVBAEAAZGlkIHlvdSBmb3JnZXQgcGFyZW50aGVzZXMgYXJvdW5kIHRoZSBjb21wcmVoZW5zaW9uIHRhcmdldD8AYXNzZXJ0aW9uIGlzIGFsd2F5cyB0cnVlLCBwZXJoYXBzIHJlbW92ZSBwYXJlbnRoZXNlcz8Ab3BlcmF0b3I/AGFyZ3Mgbm90IGEgdHVwbGU/AG5ldy1saW5lIGNoYXJhY3RlciBzZWVuIGluIHVucXVvdGVkIGZpZWxkIC0gZG8geW91IG5lZWQgdG8gb3BlbiB0aGUgZmlsZSBpbiB1bml2ZXJzYWwtbmV3bGluZSBtb2RlPwBpbnZhbGlkIHN5bnRheC4gUGVyaGFwcyB5b3UgZm9yZ290IGEgY29tbWE/ACUuMjAwcyBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzLCBub3QgJS4yMDBzOyBwZXJoYXBzIHlvdSBtaXNzZWQgYSBjb21tYT8AJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBzdWJzY3JpcHRhYmxlOyBwZXJoYXBzIHlvdSBtaXNzZWQgYSBjb21tYT8AJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBjYWxsYWJsZTsgcGVyaGFwcyB5b3UgbWlzc2VkIGEgY29tbWE/AF9fY2xhc3NfXyBub3Qgc2V0IGRlZmluaW5nICUuMjAwUiBhcyAlLjIwMFIuIFdhcyBfX2NsYXNzY2VsbF9fIHByb3BhZ2F0ZWQgdG8gdHlwZS5fX25ld19fPwBAPwA/Pz8ATWlzc2luZyBwYXJlbnRoZXNlcyBpbiBjYWxsIHRvICclVScuIERpZCB5b3UgbWVhbiAlVSguLi4pPwBjYW5ub3QgYXNzaWduIHRvICVzIGhlcmUuIE1heWJlIHlvdSBtZWFudCAnPT0nIGluc3RlYWQgb2YgJz0nPwBpbnZhbGlkIHN5bnRheC4gTWF5YmUgeW91IG1lYW50ICc9PScgb3IgJzo9JyBpbnN0ZWFkIG9mICc9Jz8AZXhwcmVzc2lvbiBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50LCBwZXJoYXBzIHlvdSBtZWFudCAiPT0iPwAiaXMiIHdpdGggYSBsaXRlcmFsLiBEaWQgeW91IG1lYW4gIj09Ij8AImlzIG5vdCIgd2l0aCBhIGxpdGVyYWwuIERpZCB5b3UgbWVhbiAiIT0iPwB1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUocykgZm9yICUuMTAwczogJyUuMTAwcycgYW5kICclLjEwMHMnLiBEaWQgeW91IG1lYW4gInByaW50KDxtZXNzYWdlPiwgZmlsZT08b3V0cHV0X3N0cmVhbT4pIj8APGNlbGwgYXQgJXA6IGVtcHR5PgBkZWFsbG9jYXRpbmcgPGR1bW15IGtleT4APG5hcnJvdz4APHN0ZG91dD4APGJyb2FkY2FzdD4APGZvbnQ+ADxtZXNzYWdlIG5vdCBzZXQ+ADxjb21wYXQ+ADxzbG90IHdyYXBwZXIgJyVWJyBvZiAnJXMnIG9iamVjdHM+ADxtZW1iZXIgJyVWJyBvZiAnJXMnIG9iamVjdHM+ADxhdHRyaWJ1dGUgJyVWJyBvZiAnJXMnIG9iamVjdHM+ADxtZXRob2QgJyVWJyBvZiAnJXMnIG9iamVjdHM+ADxtZXRhY2xhc3M+ADxsb2NhbHM+ADxfaW8uRmlsZUlPIGZkPSVkIG1vZGU9JyVzJyBjbG9zZWZkPSVzPgA8X2lvLkZpbGVJTyBuYW1lPSVSIG1vZGU9JyVzJyBjbG9zZWZkPSVzPgA8JXM+ADwlVS4lcz4APGJ1aWx0LWluIG1ldGhvZCAlUy4lcz4APGJ1aWx0LWluIGZ1bmN0aW9uICVzPgA8YnVpbHQtaW4gbWV0aG9kICVzPgA8c3RkZXJyPgBvcGVyYXRvcj4APHN1cGVyPgA8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPgAsIHN0ZDo6YWxsb2NhdG9yPGNoYXI+AGltcG9zc2libGU8YmFkIGZvcm1hdCBjaGFyPgA8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPgA8bWVtb3J5IGF0ICVwPgA8cmVsZWFzZWQgbWVtb3J5IGF0ICVwPgA8Y3BhcmFtIDB4JTAyeCBhdCAlcD4APCVzICVzIG9iamVjdCBvd25lcj0lbGQgY291bnQ9JWx1IGF0ICVwPgA8RWxlbWVudCBhdCAlcD4APGNlbGwgYXQgJXA6ICUuODBzIG9iamVjdCBhdCAlcD4APCVzIG9iamVjdCBhdCAlcD4APCVzICVzIG9iamVjdCBhdCAlcD4APGJ1aWx0LWluIG1ldGhvZCAlcyBvZiAlcyBvYmplY3QgYXQgJXA+ADxtZXRob2Qtd3JhcHBlciAnJXMnIG9mICVzIG9iamVjdCBhdCAlcD4APCVVLiVVIG9iamVjdCBhdCAlcD4APHN0ZHByaW50ZXIoZmQ9JWQpIG9iamVjdCBhdCAlcD4APGNsYXNzIGF0ICVwPgA8Y2Fwc3VsZSBvYmplY3QgJXMlcyVzIGF0ICVwPgA8d2Vha3Byb3h5IGF0ICVwIHRvICVzIGF0ICVwPgA8cmVmY250ICVsZCBhdCAlcD4APGluc3RhbmNlbWV0aG9kICVWIGF0ICVwPgA8ZnVuY3Rpb24gJVUgYXQgJXA+ADxhc3luY19nZW5lcmF0b3Igb2JqZWN0ICVTIGF0ICVwPgA8Z2VuZXJhdG9yIG9iamVjdCAlUyBhdCAlcD4APGNvcm91dGluZSBvYmplY3QgJVMgYXQgJXA+ADxFbGVtZW50ICVSIGF0ICVwPgA8d2Vha3JlZiBhdCAlcDsgdG8gJyVzJyBhdCAlcD4APGNwYXJhbSAnJWMnIGF0ICVwPgA8dW5rbm93bj4APGZyYWN0aW9uPgA8c3RkaW4+ADxzbWFsbD4APG5pbD4APGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4APGZpbmFsPgA8aW5pdGlhbD4APG1lZGlhbD4APHZlcnRpY2FsPgA8bm9CcmVhaz4APHN0cmluZz4APCVzIGNsb3NlZD1UcnVlPgA8c3F1YXJlPgA8dW5rbm93biBtb2R1bGUgbmFtZT4APGZhaWxlZCB0byBnZXQgdGhyZWFkIG5hbWU+ADxjaXJjbGU+ADx3aWRlPgA8RmllbGQgdHlwZT0lcywgb2ZzPSV6ZDolemQsIGJpdHM9JXpkPgA8RmllbGQgdHlwZT0lcywgb2ZzPSV6ZCwgc2l6ZT0lemQ+ADxpbnZhbGlkIGNvbXBhY3Qga2luZD4APGxlZ2FjeSBpbnZhbGlkIGtpbmQ+ADwlcyBjbG9zZWQ9RmFsc2UsIGFjY2Vzcz0lcywgbGVuZ3RoPSV6ZCwgcG9zPSV6ZCwgb2Zmc2V0PSVsZD4APGlzb2xhdGVkPgBjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPgA8YXNjaWkoc2VsZikgZmFpbGVkPgA6IDxleGNlcHRpb24gc3RyKCkgZmFpbGVkPgA8bm90ZSBzdHIoKSBmYWlsZWQ+ADxvYmplY3QgcmVwcigpIGZhaWxlZD4APF9fbm90ZXNfXyByZXByKCkgZmFpbGVkPgA8d2Vha3JlZiBhdCAlcDsgZGVhZD4APHNvY2tldCBvYmplY3QsIGZkPSVsZCwgZmFtaWx5PSVkLCB0eXBlPSVkLCBwcm90bz0lZD4APGZkOiVkPgA8Y29kZSBvYmplY3QgJVUgYXQgJXAsIGZpbGUgPz8/LCBsaW5lICVkPgA8c3ltdGFibGUgZW50cnkgJVUoJWxkKSwgbGluZSAlZD4APGNvZGUgb2JqZWN0ICVVIGF0ICVwLCBmaWxlICIlVSIsIGxpbmUgJWQ+ADxzdWI+ADxfaW8uRmlsZUlPIFtjbG9zZWRdPgA8Q09NTUVOVD4APE5fVE9LRU5TPgA8ZnJhbWUgYXQgJXAsIGZpbGUgJVIsIGxpbmUgJWQsIGNvZGUgJVM+ADwlcyBvYmplY3Q7IHNwYW49KCV6ZCwgJXpkKSwgbWF0Y2g9JS41MFI+ACVVIGVuY29kaW5nPSVSPgA8JXMgbmFtZT0lUj4APERpckVudHJ5ICVSPgA8Ym91bmQgbWV0aG9kICVWIG9mICVSPgA8RVJST1JUT0tFTj4APE5MPgA8TlVMTD4APHN1cGVyOiA8Y2xhc3MgJyVzJz4sIE5VTEw+ADxUb2tlbi5NSVNTSU5HPgA8RU5DT0RJTkc+ADxzdXBlcjogPGNsYXNzICclcyc+LCA8JXMgb2JqZWN0Pj4Ab3BlcmF0b3I+PgBvcGVyYXRvcjw9PgA8PgBvcGVyYXRvci0+ADxjcGFyYW0gJyVjJyAoJXApPgA8Y3BhcmFtICclYycgKCVsbGQpPgA8Y3BhcmFtICclYycgKCVsZCk+ADxjcGFyYW0gJyVjJyAoJWQpPgA8d2Vha3JlZiBhdCAlcDsgdG8gJyVzJyBhdCAlcCAoJVUpPgA8Y2xhc3NtZXRob2QoJVIpPgA8c3RhdGljbWV0aG9kKCVSKT4APGNwYXJhbSAnJWMnICglUik+ADxjcGFyYW0gJyVjJyAoJ1x4JTAyeCcpPgA8Y3BhcmFtICclYycgKCclYycpPgA8Y2xhc3MgJyVzJz4APGNsYXNzICclVS4lVSc+AG9wZXJhdG9yfD0AIGRlZmF1bHQ9AG5wbHVyYWxzPQByb3VuZHM9AG9wZXJhdG9yPQAgdmFyPQBwbHVyYWw9ADxDb250ZXh0VmFyIG5hbWU9AG9wZXJhdG9yXj0AQD0Ab3BlcmF0b3I+PQBvcGVyYXRvcj4+PQBvcGVyYXRvcj09AG9wZXJhdG9yPD0Ab3BlcmF0b3I8PD0Ab3BlcmF0b3IvPQAvLz0Ab3BlcmF0b3ItPQBvcGVyYXRvcis9AG9wZXJhdG9yKj0AKio9AG9wZXJhdG9yJj0Ab3BlcmF0b3IlPQBvcGVyYXRvciE9AG9wZXJhdG9yPAB0ZW1wbGF0ZTwAaWQ8AG9wZXJhdG9yPDwALjwAIjwAJiMlZDsAbiE9MTsAdGltZW91dDoAYXR0ZW1wdHM6AG5kb3RzOgBQbHVyYWwtRm9ybXM6ACVzOiVzOgBPU0Vycm9yOgBEZWJ1ZyBtZW1vcnkgYmxvY2sgYXQgYWRkcmVzcyBwPSVwOgAgICAgRGF0YSBhdCBwOgBbYWJpOgAgW2VuYWJsZV9pZjoASW50ZXJuYWwgUHlvZGlkZSBlcnJvciBVbnJhaXNlYWJsZSBlcnJvciBpbiBKc1Byb3h5X2RlYWxsb2M6AHN0ZDo6AFN1YnByb2Nlc3NFcnJvcjowOgBBQk1PTl85AFx4RjkAXHhFOQBceEQ5AFx4QzkAXHhCOQBceEE5AFx4OTkAbWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTkAXHg4OQAwMTIzNDU2Nzg5AG1pbnV0ZSBtdXN0IGJlIGluIDAuLjU5AHNlY29uZCBtdXN0IGJlIGluIDAuLjU5AF9fbWFwX2NwOTQ5AFx4MTkAYXJndW1lbnQgOQBjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5AFx4OABDLnV0ZjgALVggdXRmOABBQk1PTl84AFx4RjgAQ1BfVVRGOABQWVRIT05VVEY4AFx4RTgAXHhEOABceEM4AFx4QjgAXHhBOABceDk4AFx4ODgAYW5zaV94M180XzE5NjgAYW5zaV94My40XzE5NjgAdW5zaWduZWQgX19pbnQxMjgAX19mbG9hdDEyOABkZWNpbWFsMTI4AF9zaGEzLnNoYWtlXzEyOABtYXhjaGFyID49IDEyOABtYXhjaGFyIDwgMTI4AFx4MTgAYXJndW1lbnQgMTgAX19tYXBfamlzeDAyMDgAdXRmLTgAQy5VVEYtOABhcmd1bWVudCA4AFx4NwB1dGY3AEFCREFZXzcAQUJNT05fNwBceEY3AFx4RTcAXHhENwBceEM3AFx4QjcAXHhBNwBceDk3AFx4ODcAY3AzNjcAaWJtMzY3AGJ5dGUgZm9ybWF0IHJlcXVpcmVzIC0xMjggPD0gbnVtYmVyIDw9IDEyNwBceDE3AGFyZ3VtZW50IDE3AGFyZ3VtZW50IDcAUmV0dXJuIHRoZSBkYXkgb2YgdGhlIHdlZWsgcmVwcmVzZW50ZWQgYnkgdGhlIGRhdGUuCk1vbmRheSA9PSAxIC4uLiBTdW5kYXkgPT0gNwBceDYAaGFzX2lwdjYAaXNvX2lyXzYAQUJEQVlfNgBBQk1PTl82AElQUFJPVE9fSUNNUFY2AElQUFJPVE9fSVBWNgBBRl9JTkVUNgBceEY2AFx4RTYAXHhENgBceEM2AFx4QjYAXHhBNgBceDk2AFx4ODYAYW5zaV94My40XzE5ODYAX3NoYTI1NgBfc2hhMjU2LnNoYTI1NgBfc2hhMy5zaGFrZV8yNTYAX3NoYTMuc2hhM18yNTYAaW50KCkgYXJnIDIgbXVzdCBiZSA+PSAyIGFuZCA8PSAzNgBceDE2AHV0Zi0xNgBVVEYtMTYAYXJndW1lbnQgMTYAUHlOdW1iZXJfVG9CYXNlOiBiYXNlIG11c3QgYmUgMiwgOCwgMTAgb3IgMTYAUmV0dXJuIHRoZSBkYXkgb2YgdGhlIHdlZWsgcmVwcmVzZW50ZWQgYnkgdGhlIGRhdGUuCk1vbmRheSA9PSAwIC4uLiBTdW5kYXkgPT0gNgBceDUAX19tYXBfYmlnNQBfbWQ1AF9tZDUubWQ1AEFCREFZXzUAQUJNT05fNQBceEY1AFx4RTUAXHhENQBceEM1AFx4QjUAXHhBNQBceDk1AFx4ODUAU2VlIFBFUCA1ODUAMjU1LjI1NS4yNTUuMjU1AGRlcHRoIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyNTUAZmFub3V0IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUAbm9kZV9kZXB0aCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1AHVieXRlIGZvcm1hdCByZXF1aXJlcyAwIDw9IG51bWJlciA8PSAyNTUAbWF4Y2hhciA8PSAyNTUA/6MzNP///6MzNDUAQUZfWDI1AEFGX0FYMjUAXHgxNQBhcmd1bWVudCAxNQAwNDowMDowNQBidWZmZXJfY2FsbGJhY2sgbmVlZHMgcHJvdG9jb2wgPj0gNQBQaWNrbGVCdWZmZXIgY2FuIG9ubHkgcGlja2xlZCB3aXRoIHByb3RvY29sID49IDUAXHg0AEFCREFZXzQAQUJNT05fNABsZWdhY3kgVUNTNABTQ19YT1BFTl9YUEc0AFx4RjQAXHhFNABceEQ0AFx4QzQAXHhCNABceEE0AFx4OTQAXHg4NABfc2hhNTEyLnNoYTM4NABfc2hhMy5zaGEzXzM4NABkZWNpbWFsNjQAYTJiX2Jhc2U2NABiMmFfYmFzZTY0AFNDX1hCUzVfTFA2NF9PRkY2NAAtbTMyIC1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NABtZW1vcnl2aWV3OiBudW1iZXIgb2YgZGltZW5zaW9ucyBtdXN0IG5vdCBleGNlZWQgNjQAX3NoYTI1Ni5zaGEyMjQAX3NoYTMuc2hhM18yMjQAXHgxNABnbGliYyAyLjE0AHNoaWZ0X2ppc18yMDA0AGV1Y19qaXNfMjAwNABpc28yMDIyX2pwXzIwMDQAU2l6ZSBzaG91bGQgYmUgMSwgMiwgMyBvciA0AEludmFsaWQgYmFzZTY0LWVuY29kZWQgc3RyaW5nOiBudW1iZXIgb2YgZGF0YSBjaGFyYWN0ZXJzICglemQpIGNhbm5vdCBiZSAxIG1vcmUgdGhhbiBhIG11bHRpcGxlIG9mIDQAXHgzAGxpYjJ0bzMAX19hZGR2dGkzAF9fc3VidnRpMwBfX2FkZHZzaTMAX19zdWJ2c2kzAF9fYWRkdmRpMwBfX3N1YnZkaTMAX19tdWx2WGkzAF9zcWxpdGUzAHRpbnlfc2hhMwBpc28yMDIyX2pwXzMAQUJEQVlfMwBBQk1PTl8zAFNDX1hPUEVOX1hQRzMAXHhGMwBceEUzAFx4RDMAXHhDMwBceEIzAFx4QTMAXHg5MwB5ZWFyLCBmb3IgZXhhbXBsZSwgMTk5MwBceDgzAE1heSAgMyAyMDIzAGhvdXIgbXVzdCBiZSBpbiAwLi4yMwBceDEzAHNoaWZ0X2ppc3gwMjEzAGV1Y19qaXN4MDIxMwAnYXVkaW9vcCcgaXMgZGVwcmVjYXRlZCBhbmQgc2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjEzADEuMi4xMwBhcmd1bWVudCAxMwBhcmd1bWVudCAzAGFyZ3VtZW50IG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBsZW5ndGggMwBlcnJwaXBlX3dyaXRlIG11c3QgYmUgPj0gMwBfYnoyAFx4MgBwczIAZXhwMgBkdXAyAEludGVybmFsIGVycm9yIC0gSW52YWxpZCBzZXF1ZW5jZSBvZiBjb21tYW5kcyBzZW50IHRvIGxpYmJ6aXAyAEludGVybmFsIGVycm9yIC0gaW52YWxpZCBwYXJhbWV0ZXJzIHBhc3NlZCB0byBsaWJiemlwMgBhdGFuMgBfX2Fic3Z0aTIAX19uZWd2dGkyAF9fYWJzdnNpMgBfX25lZ3ZzaTIAX19hYnN2ZGkyAF9fbmVndmRpMgBsb2cyAGZpbGVuYW1lMgBfYmxha2UyAGZkMgBpc28yMDIyX2pwXzIAQUJEQVlfMgBBQk1PTl8yAGxlZ2FjeSBVQ1MyAFNJR1VTUjIAVENQX0xJTkdFUjIAU0NfWE9QRU5fWFBHMgBceEYyAFx4RTIAXHhEMgBceEMyAFx4QjIAXHhBMgBceDkyAFx4ODIAYWRsZXIzMgB3YXNtMzIALW0zMgBkZWNpbWFsMzIAY3JjMzIAU0NfWEJTNV9JTFAzMl9PRkYzMgBjcDkzMgAzLjEuMzIAdXRmLTMyAF9jb2RlY3NfaXNvMjAyMgBceDEyAEFCTU9OXzEyAF9zaGE1MTIAX3NoYTUxMi5zaGE1MTIAX3NoYTMuc2hhM181MTIAX19tYXBfZ2IyMzEyAF9fbWFwX2ppc3gwMjEyAG1vbnRoIG11c3QgYmUgaW4gMS4uMTIAYXJndW1lbnQgMTIAL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIAaXRlbXMoKSByZXR1cm5lZCBpdGVtIHdoaWNoIHNpemUgaXMgbm90IDIAYXJndW1lbnQgMgBkZXNjcmlwdG9yICclVicgbmVlZHMgYSB0eXBlLCBub3QgJyVzJywgYXMgYXJnIDIAZGVzY3JpcHRvciAnJVYnIGZvciB0eXBlICclLjEwMHMnIG5lZWRzIGEgdHlwZSwgbm90IGEgJyUuMTAwcycgYXMgYXJnIDIAXHgxAHBzMQByZWFkaW50bzEAbGVnYWN5IGxhdGluMQBleHBtMQByZWFkMQBfc2hhMQBfc2hhMS5zaGExAGlzbzIwMjJfanBfMQBBQkRBWV8xAEFCTU9OXzEAaXNvODg1OV8xAGlzb184ODU5XzEAU0lHVVNSMQBceEYxAFx4RTEAXHhEMQBceEMxAFx4QjEAXHhBMQBceDkxAGlzb182NDYuaXJ2XzE5OTEAXHg4MQBceDExAEFCTU9OXzExAGNweXRob24tMzExAGFyZ3VtZW50IDExAF9fbWFwX2tzeDEwMDEAMi41LjEAcHlleHBhdC5leHBhdF9DQVBJIDEuMQAxMjcuMC4wLjEAaXNvLWxhdGluLTEAaXNvODg1OS0xAGlzby04ODU5LTEASVNPLTg4NTktMQByZWFkIGxlbmd0aCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBvciAtMQBhc2NpaS0+aGFzaCA9PSAtMQBlbnRyeS0+bWVfaGFzaCAhPSAtMQAjMQBhcmd1bWVudCAxAGZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxAHNpZ24gbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggdGhlIHZhbHVlIDAgb3IgMQB2YWxpZCB2YWx1ZXMgZm9yIGNhcGl0YWxzIGFyZSAwIG9yIDEAdmFsaWQgdmFsdWVzIGZvciBjbGFtcCBhcmUgMCBvciAxAHJlY3Vyc2lvbiBsaW1pdCBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiAxAGNoYXIgZm9ybWF0IHJlcXVpcmVzIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAxAGEgYnl0ZSBzdHJpbmcgb2YgbGVuZ3RoIDEAY2xhc3MgbXVzdCBkZWZpbmUgYSAnX3R5cGVfJyBhdHRyaWJ1dGUgd2hpY2ggbXVzdCBiZSBhIHN0cmluZyBvZiBsZW5ndGggMQBzdHJpbmcga2V5cyBpbiB0cmFuc2xhdGUgdGFibGUgbXVzdCBiZSBvZiBsZW5ndGggMQBvcmRpbmFsIG11c3QgYmUgPj0gMQAjIG9mIGNoYW5uZWxzIHNob3VsZCBiZSA+PSAxAFB5X1JFRkNOVCgoKFB5T2JqZWN0KikoKG9wKSkpKSA+PSAxAFB5X1JFRkNOVCgoKFB5T2JqZWN0KikoKHR5cGUpKSkpID49IDEAYXNjaWktPnN0YXRlLnJlYWR5ID09IDEAbWVtb3J5dmlldyBzbGljZSBhc3NpZ25tZW50cyBhcmUgY3VycmVudGx5IHJlc3RyaWN0ZWQgdG8gbmRpbSA9IDEASVBWNl9SVEhEUl9UWVBFXzAAdWNkXzNfMl8wAFwwAFx4RjAAXHhFMABceEQwAFx4QzAAXHhCMABceEEwADowAFx4OTAAXHg4MAAxLjcwAGNwOTUwAGdiMTgwMzAAbXAtPm1hX3VzZWQgPD0gMzAAXHgxMABsb2cxMABBQk1PTl8xMAAxLjAuNiwgNi1TZXB0LTIwMTAAYXJndW1lbnQgMTAAbWF4Y2hhciA+PSAweDEwMABtYXhjaGFyID49IDB4MTAwMDAAMDAwMDAwMDAwMDAwMDAwADBlKzAwAGV4cGF0XzIuNS4wADMuMi4wADEuMS4wADE0LjAuMAAtMHgwLjBwKzAAJXMgZXhwZWN0ZWQgYXQgbGVhc3QgMSBhcmd1bWVudCwgZ290IDAAcmFuZ2UgZXhwZWN0ZWQgYXQgbGVhc3QgMSBhcmd1bWVudCwgZ290IDAAZGF5IG9mIHdlZWssIHJhbmdlIFswLCA2XSwgTW9uZGF5IGlzIDAAaW50KCkgYmFzZSBtdXN0IGJlID49IDIgYW5kIDw9IDM2LCBvciAwAHRpbWVvdXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMABjYW5ub3QgaXRlcmF0aXZlbHkgdW5wYWNrIHdpdGggYSBzdHJ1Y3Qgb2YgbGVuZ3RoIDAAcG93KCkgM3JkIGFyZ3VtZW50IGNhbm5vdCBiZSAwAHNhbXBsaW5nIHJhdGUgbm90ID4gMABtZW1vcnl2aWV3LmNhc3QoKTogZWxlbWVudHMgb2Ygc2hhcGUgbXVzdCBiZSBpbnRlZ2VycyA+IDAAX19sZW5ndGhfaGludF9fKCkgc2hvdWxkIHJldHVybiA+PSAwAF9fbGVuX18oKSBzaG91bGQgcmV0dXJuID49IDAAX19zaXplb2ZfXygpIHNob3VsZCByZXR1cm4gPj0gMABQeVdpZGVTdHJpbmdMaXN0X0luc2VydCBpbmRleCBtdXN0IGJlID49IDAAbiBtdXN0IGJlID49IDAAbGV2ZWwgbXVzdCBiZSA+PSAwAGRlcHRoIG11c3QgYmUgPj0gMAB3ZWlnaHRBIHNob3VsZCBiZSA+PSAxLCB3ZWlnaHRCIHNob3VsZCBiZSA+PSAwAGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAwAGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAwAGNvbXBhY3QtPndzdHJfbGVuZ3RoID09IDAAY29tcGFjdC0+dXRmOF9sZW5ndGggPT0gMABhc2NpaS0+bGVuZ3RoID09IDAAYXNjaWktPnN0YXRlLmludGVybmVkID09IDAAKGR1cGxpY2F0ZV9jaGVjayAmICgxPDxpbmRleCkpID09IDAAUHlVbmljb2RlX1JFQUQoKChpbnQpKGtpbmQpKSwgKChjb25zdCB2b2lkKikoZGF0YSkpLCAoYXNjaWktPmxlbmd0aCkpID09IDAAUHlEaWN0X0NvbnRhaW5zKHR5cGUtPnRwX2RpY3QsICYoX1B5UnVudGltZS5nbG9iYWxfb2JqZWN0cy5zaW5nbGV0b25zLnN0cmluZ3MuaWRlbnRpZmllcnMuX19fbmV3X18uX2FzY2lpLm9iX2Jhc2UpKSA9PSAwAEVYVCBzcGVjaWZpZXMgY29kZSA8PSAwAF9fd2Vha3JlZl9fIHNsb3QgZGlzYWxsb3dlZDogZWl0aGVyIHdlIGFscmVhZHkgZ290IG9uZSwgb3IgX19pdGVtc2l6ZV9fICE9IDAAc2xpY2Ugc3RhcnQgaXMgcmVxdWlyZWQgZm9yIHN0ZXAgPCAwAG9wZXJhdG9yLwAvZGV2L3NobS8AL3Byb2Mvc2VsZi9mZC8ALy8AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLwBhdCBsZWFzdCBvbmUgYXJndW1lbnQgbXVzdCBwcmVjZWRlIC8ALCAvAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBtaXNtYXRjaGVkIHsgYW5kIH0uAEZhaWxlZCB0byBjcmVhdGUgX3B5b2RpZGUgcHJveHkuAE91dCBvZiBtZW1vcnkuAE5hbWUgbm90IGZvdW5kIGdsb2JhbGx5LgBUaGUgYXNzb2NpYXRlZCBwcm9taXNlIGhhcyBiZWVuIGRlc3RydWN0ZWQgcHJpb3IgdG8gdGhlIGFzc29jaWF0ZWQgc3RhdGUgYmVjb21pbmcgcmVhZHkuAFdlYWsgcmVmIHByb3h5IHVzZWQgYWZ0ZXIgcmVmZXJlbnQgd2VudCBhd2F5LgBSZXR1cm4gYSBuYW1lZCB0dXBsZSBjb250YWluaW5nIElTTyB5ZWFyLCB3ZWVrIG51bWJlciwgYW5kIHdlZWtkYXkuAFJldHVybiBkYXRlIG9iamVjdCB3aXRoIHNhbWUgeWVhciwgbW9udGggYW5kIGRheS4AQmFzZSBjbGFzcyBmb3Igd2FybmluZ3MgYWJvdXQgZHViaW91cyBzeW50YXguAEludmFsaWQgc3ludGF4LgBObyBjb252ZXJzaW9uIGtub3duIGZvciB4LgBDYW5ub3QgcmVjb3ZlciBmcm9tIHN0YWNrIG92ZXJmbG93LgBfX2luZGV4X18oJHNlbGYsIC8pCi0tCgpSZXR1cm4gc2VsZiBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlciwgaWYgc2VsZiBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIGFuIGluZGV4IGludG8gYSBsaXN0LgBtbWFwIGNhbid0IHNwZWNpZnkgYm90aCBhY2Nlc3MgYW5kIGZsYWdzLCBwcm90LgBSZXR1cm5zIHNlbGYsIHRoZSBjb21wbGV4IGNvbmp1Z2F0ZSBvZiBhbnkgaW50LgBSZXF1ZXN0IHRoYXQgYSBnZW5lcmF0b3IgZXhpdC4ATWV0aG9kIG9yIGZ1bmN0aW9uIGhhc24ndCBiZWVuIGltcGxlbWVudGVkIHlldC4AUmV0dXJuIGZpeGVkIG9mZnNldC4AQ29ubmVjdGlvbiByZXNldC4AUmVzdWx0IGlzIG5vdCBzZXQuAEV4Y2VwdGlvbiBpcyBub3Qgc2V0LgBUaGUgc3RhdGUgb2YgdGhlIHByb21pc2UgaGFzIGFscmVhZHkgYmVlbiBzZXQuAFRoZSBkb2N0eXBlKCkgbWV0aG9kIG9mIFhNTFBhcnNlciBpcyBpZ25vcmVkLiAgRGVmaW5lIGRvY3R5cGUoKSBtZXRob2Qgb24gdGhlIFRyZWVCdWlsZGVyIHRhcmdldC4ARmFpbGVkIHRvIGFkZCAnX3B5b2RpZGVfY29yZScgbW9kdWxlIHRvIG1vZHVsZXMgZGljdC4Ad3JpdGFibGUgY29udGlndW91cyBidWZmZXIgcmVxdWVzdGVkIGZvciBhIG5vbi1jb250aWd1b3VzIG9iamVjdC4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QuAENyZWF0ZSBhIFpvbmVJbmZvIGZpbGUgZnJvbSBhIGZpbGUgb2JqZWN0LgBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgbWVtYmVycyBhbmQgbWV0aG9kcyBvbiB0aGUgb2JqZWN0LgBSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0LgBzdHIgLT4gQ29uc3RydWN0IGEgZGF0ZSBmcm9tIGEgc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdC4ATnVtYmVyIG9mIGRheXMuAEZpbGUgYWxyZWFkeSBleGlzdHMuAG1hcCgpIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gYXJndW1lbnRzLgAlUyAtIENvbnNpZGVyIGhleGFkZWNpbWFsIGZvciBodWdlIGludGVnZXIgbGl0ZXJhbHMgdG8gYXZvaWQgZGVjaW1hbCBjb252ZXJzaW9uIGxpbWl0cy4AQXJndW1lbnRzIG11c3QgYmUgaXRlcmF0b3JzLgBCYXNlIGNsYXNzIGZvciBsb29rdXAgZXJyb3JzLgBJbXBsZW1lbnRzIHRoZSAnc3RyaWN0JyBlcnJvciBoYW5kbGluZywgd2hpY2ggcmFpc2VzIGEgVW5pY29kZUVycm9yIG9uIGNvZGluZyBlcnJvcnMuAEJhc2UgY2xhc3MgZm9yIEkvTyByZWxhdGVkIGVycm9ycy4AQmFzZSBjbGFzcyBmb3IgYXJpdGhtZXRpYyBlcnJvcnMuAG1lbW8ga2V5IG11c3QgYmUgcG9zaXRpdmUgaW50ZWdlcnMuAEEgZGljdGlvbmFyeSBtYXBwaW5nIGdyb3VwIG5hbWVzIHRvIGdyb3VwIG51bWJlcnMuAENvbW1vbiBiYXNlIGNsYXNzIGZvciBhbGwgbm9uLWV4aXQgZXhjZXB0aW9ucy4AQ2Fubm90IHJlY292ZXIgZnJvbSBNZW1vcnlFcnJvcnMgd2hpbGUgbm9ybWFsaXppbmcgZXhjZXB0aW9ucy4AQSBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSB1bnJlbGF0ZWQgZXhjZXB0aW9ucy4AQ29uc3RhbnRzIHVzZWQgdG8gZGVzY3JpYmUgZXJyb3IgY29uZGl0aW9ucy4ATm90IGVub3VnaCBwZXJtaXNzaW9ucy4AQmFzZSBjbGFzcyBmb3Igd2FybmluZ3MgYWJvdXQgVW5pY29kZSByZWxhdGVkIHByb2JsZW1zLCBtb3N0bHkKcmVsYXRlZCB0byBjb252ZXJzaW9uIHByb2JsZW1zLgBUaGUgdGltZSB2YWx1ZSBhcyByZXR1cm5lZCBieSBnbXRpbWUoKSwgbG9jYWx0aW1lKCksIGFuZCBzdHJwdGltZSgpLCBhbmQKIGFjY2VwdGVkIGJ5IGFzY3RpbWUoKSwgbWt0aW1lKCkgYW5kIHN0cmZ0aW1lKCkuICBNYXkgYmUgY29uc2lkZXJlZCBhcyBhCiBzZXF1ZW5jZSBvZiA5IGludGVnZXJzLgoKIE5vdGUgdGhhdCBzZXZlcmFsIGZpZWxkcycgdmFsdWVzIGFyZSBub3QgdGhlIHNhbWUgYXMgdGhvc2UgZGVmaW5lZCBieQogdGhlIEMgbGFuZ3VhZ2Ugc3RhbmRhcmQgZm9yIHN0cnVjdCB0bS4gIEZvciBleGFtcGxlLCB0aGUgdmFsdWUgb2YgdGhlCiBmaWVsZCB0bV95ZWFyIGlzIHRoZSBhY3R1YWwgeWVhciwgbm90IHllYXIgLSAxOTAwLiAgU2VlIGluZGl2aWR1YWwKIGZpZWxkcycgZGVzY3JpcHRpb25zIGZvciBkZXRhaWxzLgBCYXNlIGNsYXNzIGZvciB3YXJuaW5ncyBhYm91dCBlbmNvZGluZ3MuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIGNoYXJhY3RlciByYW5nZSwgc3VjaCBhcyBbYi1hXSBpbiBtb3N0IGVuY29kaW5ncy4AVGhlIHJlZ2V4IG1hdGNoaW5nIGZsYWdzLgBJbXBsZW1lbnRzIHRoZSAnaWdub3JlJyBlcnJvciBoYW5kbGluZywgd2hpY2ggaWdub3JlcyBtYWxmb3JtZWQgZGF0YSBhbmQgY29udGludWVzLgBzZXAgbXVzdCBiZSBzdHIgb3IgYnl0ZXMuAEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgc3ViY2xhc3Nlcy4AQmFzZSBjbGFzcyBmb3Igd2FybmluZ3MgYWJvdXQgZGVwcmVjYXRlZCBmZWF0dXJlcy4AQSB3cmFwcGVyIG9iamVjdCBpbXBsZW1lbnRpbmcgX19hd2FpdF9fIGZvciBjb3JvdXRpbmVzLgBPcGVyYXRpb24gb25seSB3b3JrcyBvbiBkaXJlY3Rvcmllcy4AT3BlcmF0aW9uIGRvZXNuJ3Qgd29yayBvbiBkaXJlY3Rvcmllcy4AQmFzZSBjbGFzcyBmb3Igd2FybmluZyBjYXRlZ29yaWVzLgBNYXRjaENsYXNzIGNscyBmaWVsZCBjYW4gb25seSBjb250YWluIE5hbWUgb3IgQXR0cmlidXRlIG5vZGVzLgBNb2R1bGUgaW5kZXggb3V0IG9mIGJvdW5kcy4AUmV0dXJuIGRhdGUgd2l0aCBuZXcgc3BlY2lmaWVkIGZpZWxkcy4AUmV0dXJuIGRhdGV0aW1lIHdpdGggbmV3IHNwZWNpZmllZCBmaWVsZHMuAFJldHVybiB0aW1lIHdpdGggbmV3IHNwZWNpZmllZCBmaWVsZHMuAEltcHJvcGVyIG1peHR1cmUgb2Ygc3BhY2VzIGFuZCB0YWJzLgBUeXBlIHZhcmlhYmxlcyBpbiB0aGUgR2VuZXJpY0FsaWFzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBtb2R1bGUgJXMuAGNvdWxkbid0IGNvbnZlcnQgdGhlIG9iamVjdCB0byBzdHIuAEJhc2UgY2xhc3MgZm9yIHdhcm5pbmdzIGFib3V0IGJ5dGVzIGFuZCBidWZmZXIgcmVsYXRlZCBwcm9ibGVtcywgbW9zdGx5CnJlbGF0ZWQgdG8gY29udmVyc2lvbiBmcm9tIHN0ciBvciBjb21wYXJpbmcgdG8gc3RyLgBfX2FpdGVyX18oJHNlbGYsIC8pCi0tCgpSZXR1cm4gYW4gYXdhaXRhYmxlLCB0aGF0IHJlc29sdmVzIGluIGFzeW5jaHJvbm91cyBpdGVyYXRvci4Ab3BlcmF0b3IuAENoaWxkIHByb2Nlc3MgZXJyb3IuAEJ1ZmZlciBlcnJvci4AQ29ubmVjdGlvbiBlcnJvci4AVW5pY29kZSB0cmFuc2xhdGlvbiBlcnJvci4AVW5pY29kZSBlbmNvZGluZyBlcnJvci4AVW5pY29kZSBkZWNvZGluZyBlcnJvci4AVW5zcGVjaWZpZWQgcnVuLXRpbWUgZXJyb3IuAFVuaWNvZGUgcmVsYXRlZCBlcnJvci4AQmFzZSBjbGFzcyBmb3Igd2FybmluZ3MgYWJvdXQgZHViaW91cyBydW50aW1lIGJlaGF2aW9yLgBSZXF1ZXN0IHRvIGV4aXQgZnJvbSB0aGUgaW50ZXJwcmV0ZXIuAG1tYXAgaW52YWxpZCBhY2Nlc3MgcGFyYW1ldGVyLgBQcm9ncmFtIGludGVycnVwdGVkIGJ5IHVzZXIuAF9fZ2V0X18oJHNlbGYsIGluc3RhbmNlLCBvd25lcj1Ob25lLCAvKQotLQoKUmV0dXJuIGFuIGF0dHJpYnV0ZSBvZiBpbnN0YW5jZSwgd2hpY2ggaXMgb2YgdHlwZSBvd25lci4ASW1wbGVtZW50cyB0aGUgJ3JlcGxhY2UnIGVycm9yIGhhbmRsaW5nLCB3aGljaCByZXBsYWNlcyBtYWxmb3JtZWQgZGF0YSB3aXRoIGEgcmVwbGFjZW1lbnQgbWFya2VyLgBBbiBlbXB0eSByZWdleCBpcyBub3QgYWxsb3dlZCBpbiB0aGUgUE9TSVggZ3JhbW1hci4ARXhwZWN0ZWQgYW4gaW50IGFzIHNlY29uZCBhcmd1bWVudCB0byBsZGV4cC4AVGhlIGludGVnZXIgaW5kZXggb2YgdGhlIGxhc3QgbWF0Y2hlZCBjYXB0dXJpbmcgZ3JvdXAuAFRoZSBuYW1lIG9mIHRoZSBsYXN0IG1hdGNoZWQgY2FwdHVyaW5nIGdyb3VwLgB0aW1lc3RhbXBbLCB0el0gLT4gdHoncyBsb2NhbCB0aW1lIGZyb20gUE9TSVggdGltZXN0YW1wLgBDb25zdHJ1Y3QgYSBuYWl2ZSBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcC4AbW1hcCBjYW4ndCBtb2RpZnkgYSByZWFkb25seSBtZW1vcnkgbWFwLgBtbWFwIGNhbid0IHJlc2l6ZSBhIHJlYWRvbmx5IG9yIGNvcHktb24td3JpdGUgbWVtb3J5IG1hcC4AU2Vjb25kIGFyZ3VtZW50IHRvIGEgZGl2aXNpb24gb3IgbW9kdWxvIG9wZXJhdGlvbiB3YXMgemVyby4AVGhlIGluZGV4IGludG8gdGhlIHN0cmluZyBiZXlvbmQgd2hpY2ggdGhlIFJFIGVuZ2luZSB3aWxsIG5vdCBnby4AUmV0dXJuIHRpbWUgb2JqZWN0IHdpdGggc2FtZSB0aW1lIGFuZCB0emluZm8uAFRoZSBudW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyBpbiB0aGUgcGF0dGVybi4AQ2Fubm90IHJlY292ZXIgZnJvbSB0aGUgcmVjdXJzaXZlIG5vcm1hbGl6YXRpb24gb2YgYW4gZXhjZXB0aW9uLgBWYWx1ZSB3cmFwcGVkIGJ5IGEga2V5IGZ1bmN0aW9uLgBtZW1vcnkgbGVhayBpbiBjYWxsYmFjayBmdW5jdGlvbi4AX19jYWxsX18oJHNlbGYsIC8sICphcmdzLCAqKmt3YXJncykKLS0KCkNhbGwgc2VsZiBhcyBhIGZ1bmN0aW9uLgBJbXByb3BlciBpbmRlbnRhdGlvbi4AVG90YWwgc2Vjb25kcyBpbiB0aGUgZHVyYXRpb24uAF9fYW5leHRfXygkc2VsZiwgLykKLS0KClJldHVybiBhIHZhbHVlIG9yIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbi4AQ29uc3RhbnRzIHVzZWQgdG8gaW50ZXJwcmV0IGNvbnRlbnQgbW9kZWwgaW5mb3JtYXRpb24uAFR5cGUgImhlbHAiLCAiY29weXJpZ2h0IiwgImNyZWRpdHMiIG9yICJsaWNlbnNlIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgcmFuZ2UgaW4gYSB7fSBleHByZXNzaW9uLgBfX2F3YWl0X18oJHNlbGYsIC8pCi0tCgpSZXR1cm4gYW4gaXRlcmF0b3IgdG8gYmUgdXNlZCBpbiBhd2FpdCBleHByZXNzaW9uLgBUaGUgcGFyc2VyIGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIHJlZ3VsYXIgZXhwcmVzc2lvbi4AT25lIG9mICo/K3sgd2FzIG5vdCBwcmVjZWRlZCBieSBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi4ASW50ZXJuYWwgZXJyb3IgaW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlci4KClBsZWFzZSByZXBvcnQgdGhpcyB0byB0aGUgUHl0aG9uIG1haW50YWluZXIsIGFsb25nIHdpdGggdGhlIHRyYWNlYmFjaywKdGhlIFB5dGhvbiB2ZXJzaW9uLCBhbmQgdGhlIGhhcmR3YXJlL09TIHBsYXRmb3JtIGFuZCB2ZXJzaW9uLgBfX2NvbXBsZXhfXyByZXR1cm5lZCBub24tY29tcGxleCAodHlwZSAlLjIwMHMpLiAgVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGNvbXBsZXggaXMgZGVwcmVjYXRlZCwgYW5kIG1heSBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLgBfX2luZGV4X18gcmV0dXJuZWQgbm9uLWludCAodHlwZSAlLjIwMHMpLiAgVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGludCBpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uAF9faW50X18gcmV0dXJuZWQgbm9uLWludCAodHlwZSAlLjIwMHMpLiAgVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGludCBpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uACUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpLiAgVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGZsb2F0IGlzIGRlcHJlY2F0ZWQsIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4ARXhjZXB0aW9uIG9jY3VycmVkIGluIHByZWV4ZWNfZm4uAGVycm1hcCBpbnNlcnRpb24gcHJvYmxlbS4AQ2Fubm90IHBpY2tsZSBhIFpvbmVJbmZvIGZpbGUgZnJvbSBhIGZpbGUgc3RyZWFtLgBGdW5jdGlvbiBmb3Igc2VyaWFsaXphdGlvbiB3aXRoIHRoZSBwaWNrbGUgcHJvdG9jb2wuAFRoZSBjb21wbGV4aXR5IG9mIGFuIGF0dGVtcHRlZCBtYXRjaCBhZ2FpbnN0IGEgcmVndWxhciBleHByZXNzaW9uIGV4Y2VlZGVkIGEgcHJlLXNldCBsZXZlbC4AaW50IC0+IGRhdGUgY29ycmVzcG9uZGluZyB0byBhIHByb2xlcHRpYyBHcmVnb3JpYW4gb3JkaW5hbC4ASW50ZXJydXB0ZWQgYnkgc2lnbmFsLgBUaGUgZnV0dXJlIGhhcyBhbHJlYWR5IGJlZW4gcmV0cmlldmVkIGZyb20gdGhlIHByb21pc2Ugb3IgcGFja2FnZWRfdGFzay4ASS9PIG9wZXJhdGlvbiB3b3VsZCBibG9jay4AbWFsZm9ybWVkIGNvbnRyb2wgZmxvdyBncmFwaC4AVGhlIGluZGV4IGludG8gdGhlIHN0cmluZyBhdCB3aGljaCB0aGUgUkUgZW5naW5lIHN0YXJ0ZWQgbG9va2luZyBmb3IgYSBtYXRjaC4AZm9ybWF0IC0+IHN0cmZ0aW1lKCkgc3R5bGUgc3RyaW5nLgBSZXR1cm4gY3RpbWUoKSBzdHlsZSBzdHJpbmcuAGVuY29kaW5nIG5hbWUgbXVzdCBiZSBhIHN0cmluZy4AUHJpdmF0ZSBtZXRob2QgdXNlZCBpbiB1bnBpY2tsaW5nLgBfX3Jvcl9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiB2YWx1ZXxzZWxmLgBUcnVuY2F0aW5nIGFuIEludGVncmFsIHJldHVybnMgaXRzZWxmLgBGbG9vcmluZyBhbiBJbnRlZ3JhbCByZXR1cm5zIGl0c2VsZi4AQ2VpbGluZyBvZiBhbiBJbnRlZ3JhbCByZXR1cm5zIGl0c2VsZi4AX19yeG9yX18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHZhbHVlXnNlbGYuAF9fcm1hdG11bF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiB2YWx1ZUBzZWxmLgBfX3Jyc2hpZnRfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gdmFsdWU+PnNlbGYuAF9fcmxzaGlmdF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiB2YWx1ZTw8c2VsZi4AX19ydHJ1ZWRpdl9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiB2YWx1ZS9zZWxmLgBfX3JmbG9vcmRpdl9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiB2YWx1ZS8vc2VsZi4AX19yc3ViX18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHZhbHVlLXNlbGYuAF9fcmFkZF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiB2YWx1ZStzZWxmLgBfX3JtdWxfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gdmFsdWUqc2VsZi4AX19yYW5kX18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHZhbHVlJnNlbGYuAF9fcm1vZF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiB2YWx1ZSVzZWxmLgBfX2NvbnRhaW5zX18oJHNlbGYsIGtleSwgLykKLS0KClJldHVybiBrZXkgaW4gc2VsZi4AU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4ASW5kaWNlcyBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4AX19vcl9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmfHZhbHVlLgBfX3hvcl9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmXnZhbHVlLgBfX21hdG11bF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmQHZhbHVlLgBfX2d0X18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGY+dmFsdWUuAF9fcnNoaWZ0X18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGY+PnZhbHVlLgBfX2lvcl9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmfD12YWx1ZS4AX19peG9yX18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGZePXZhbHVlLgBfX2ltYXRtdWxfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZkA9dmFsdWUuAF9fZ2VfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZj49dmFsdWUuAF9faXJzaGlmdF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmPj49dmFsdWUuAF9fZXFfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZj09dmFsdWUuAF9fbGVfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZjw9dmFsdWUuAF9faWxzaGlmdF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmPDw9dmFsdWUuAF9faXRydWVkaXZfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZi89dmFsdWUuAF9faWZsb29yZGl2X18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGYvLz12YWx1ZS4AX19pc3ViX18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGYtPXZhbHVlLgBfX2lhZGRfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpJbXBsZW1lbnQgc2VsZis9dmFsdWUuAF9faWFkZF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmKz12YWx1ZS4AX19pbXVsX18oJHNlbGYsIHZhbHVlLCAvKQotLQoKSW1wbGVtZW50IHNlbGYqPXZhbHVlLgBfX2ltdWxfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZio9dmFsdWUuAF9faXBvd19fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmKio9dmFsdWUuAF9faWFuZF9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmJj12YWx1ZS4AX19pbW9kX18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGYlPXZhbHVlLgBfX25lX18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGYhPXZhbHVlLgBfX2x0X18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGY8dmFsdWUuAF9fbHNoaWZ0X18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHNlbGY8PHZhbHVlLgBfX3RydWVkaXZfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZi92YWx1ZS4AX19mbG9vcmRpdl9fKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBzZWxmLy92YWx1ZS4AX19zdWJfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZi12YWx1ZS4AX19hZGRfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZit2YWx1ZS4AX19tdWxfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZip2YWx1ZS4AX19hbmRfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZiZ2YWx1ZS4AX19tb2RfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gc2VsZiV2YWx1ZS4AX19zZXRfXygkc2VsZiwgaW5zdGFuY2UsIHZhbHVlLCAvKQotLQoKU2V0IGFuIGF0dHJpYnV0ZSBvZiBpbnN0YW5jZSB0byB2YWx1ZS4AX19zZXRpdGVtX18oJHNlbGYsIGtleSwgdmFsdWUsIC8pCi0tCgpTZXQgc2VsZltrZXldIHRvIHZhbHVlLgBMb2NhbCBuYW1lIHJlZmVyZW5jZWQgYnV0IG5vdCBib3VuZCB0byBhIHZhbHVlLgBzZXRfbWV0aG9kX2RvY3N0cmluZyBmYWlsZWQgZm9yIG1ldGhvZCAlcywgZG9jdW1lbnRhdGlvbiBzdHViICclLjUwcycgaGFzIG5vIHN1Y2ggYXR0cmlidXRlLgBPcGVyYXRpb24gbm90IHBlcm1pdHRlZCBvbiBhbiBvYmplY3Qgd2l0aG91dCBhbiBhc3NvY2lhdGVkIHN0YXRlLgBCYXNlIGNsYXNzIGZvciB3YXJuaW5ncyBhYm91dCBjb25zdHJ1Y3RzIHRoYXQgd2lsbCBjaGFuZ2Ugc2VtYW50aWNhbGx5CmluIHRoZSBmdXR1cmUuAEJhc2UgY2xhc3MgZm9yIHdhcm5pbmdzIGFib3V0IGZlYXR1cmVzIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZAppbiB0aGUgZnV0dXJlLgBfX25ld19fKHR5cGUsIC8sICphcmdzLCAqKmt3YXJncykKLS0KCkNyZWF0ZSBhbmQgcmV0dXJuIG5ldyBvYmplY3QuICBTZWUgaGVscCh0eXBlKSBmb3IgYWNjdXJhdGUgc2lnbmF0dXJlLgBfX25ld19fKCR0eXBlLCAqYXJncywgKiprd2FyZ3MpCi0tCgpDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBvYmplY3QuICBTZWUgaGVscCh0eXBlKSBmb3IgYWNjdXJhdGUgc2lnbmF0dXJlLgBfX2luaXRfXygkc2VsZiwgLywgKmFyZ3MsICoqa3dhcmdzKQotLQoKSW5pdGlhbGl6ZSBzZWxmLiAgU2VlIGhlbHAodHlwZShzZWxmKSkgZm9yIGFjY3VyYXRlIHNpZ25hdHVyZS4ASW5hcHByb3ByaWF0ZSBhcmd1bWVudCB0eXBlLgBGYXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBkYXRldGltZSB0eXBlLgBUeXBlIHZhcmlhYmxlcyBpbiB0aGUgdHlwZXMuVW5pb25UeXBlLgBCcm9rZW4gcGlwZS4AVGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGFuIGludmFsaWQgZXNjYXBlZCBjaGFyYWN0ZXIsIG9yIGEgdHJhaWxpbmcgZXNjYXBlLgBkYXRldGltZSAtPiBzdHJpbmcgbmFtZSBvZiB0aW1lIHpvbmUuAFJldHVybiB0aW1lIG9iamVjdCB3aXRoIHNhbWUgdGltZSBidXQgd2l0aCB0emluZm89Tm9uZS4AU3RlcCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgb3IgTm9uZS4ARC5nZXQoa1ssZF0pIC0+IERba10gaWYgayBpbiBELCBlbHNlIGQuICBkIGRlZmF1bHRzIHRvIE5vbmUuAFJldHVybiBOb25lLgBUaGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBjb252ZXJ0IHRoZSBleHByZXNzaW9uIGludG8gYSBmaW5pdGUgc3RhdGUgbWFjaGluZS4ARm9ybWF0cyBzZWxmIHdpdGggc3RyZnRpbWUuAFJldHJpZXZlIGEgdGltZWRlbHRhIHJlcHJlc2VudGluZyB0aGUgVVRDIG9mZnNldCBpbiBhIHpvbmUgYXQgdGhlIGdpdmVuIGRhdGV0aW1lLgBSZXRyaWV2ZSBhIHRpbWVkZWx0YSByZXByZXNlbnRpbmcgdGhlIGFtb3VudCBvZiBEU1QgYXBwbGllZCBpbiBhIHpvbmUgYXQgdGhlIGdpdmVuIGRhdGV0aW1lLgBSZXRyaWV2ZSBhIHN0cmluZyBjb250YWluaW5nIHRoZSBhYmJyZXZpYXRpb24gZm9yIHRoZSB0aW1lIHpvbmUgdGhhdCBhcHBsaWVzIGluIGEgem9uZSBhdCBhIGdpdmVuIGRhdGV0aW1lLgBHaXZlbiBhIGRhdGV0aW1lIHdpdGggbG9jYWwgdGltZSBpbiBVVEMsIHJldHJpZXZlIGFuIGFkanVzdGVkIGRhdGV0aW1lIGluIGxvY2FsIHRpbWUuAGRhdGV0aW1lIGluIFVUQyAtPiBkYXRldGltZSBpbiBsb2NhbCB0aW1lLgBSZXR1cm4gYSBuZXcgZGF0ZXRpbWUgcmVwcmVzZW50aW5nIFVUQyBkYXkgYW5kIHRpbWUuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIGNvbGxhdGluZyBlbGVtZW50IG5hbWUuAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBhbiBpbnZhbGlkIGNoYXJhY3RlciBjbGFzcyBuYW1lLgBtYXAgZGF0YSBtdXN0IGJlIGEgQ2Fwc3VsZS4AT3Bjb2RlIHN1cHBvcnQgbW9kdWxlLgBXZWFrLXJlZmVyZW5jZSBzdXBwb3J0IG1vZHVsZS4ASW1wb3J0IGNhbid0IGZpbmQgbW9kdWxlLCBvciBjYW4ndCBmaW5kIG5hbWUgaW4gbW9kdWxlLgBGYWlsZWQgdG8gY3JlYXRlIGNvcmUgbW9kdWxlLgBUaGUgc3BhbiBvZiBjYXB0dXJpbmcgZ3JvdXAgaXMgd3JvbmcsIHBsZWFzZSByZXBvcnQgYSBidWcgZm9yIHRoZSByZSBtb2R1bGUuAEZhaWxlZCB0byBpbXBvcnQgX3B5b2RpZGUgbW9kdWxlLgBSZWFkIGJleW9uZCBlbmQgb2YgZmlsZS4ASS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZS4ASW50ZXJwcmV0ZXJzIG1vZHVsZS1saXN0IG5vdCBhY2Nlc3NpYmxlLgBPYmplY3QgaXMgbm90IHdyaXRhYmxlLgBGaWxlIG9yIHN0cmVhbSBpcyBub3Qgd3JpdGFibGUuAFRoaXMgYm9ycm93ZWQgcHJveHkgd2FzIGF1dG9tYXRpY2FsbHkgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiBjYWxsLiBUcnkgdXNpbmcgY3JlYXRlX3Byb3h5IG9yIGNyZWF0ZV9vbmNlX2NhbGxhYmxlLgBUaGlzIGJvcnJvd2VkIHByb3h5IHdhcyBhdXRvbWF0aWNhbGx5IGRlc3Ryb3llZC4gVHJ5IHVzaW5nIGNyZWF0ZV9wcm94eSBvciBjcmVhdGVfb25jZV9jYWxsYWJsZS4ARmlsZSBvciBzdHJlYW0gaXMgbm90IHNlZWthYmxlLgBGaWxlIG9yIHN0cmVhbSBpcyBub3QgcmVhZGFibGUuAENsZWFyIHRoZSBab25lSW5mbyBjYWNoZS4AR2V0IGEgbmV3IGluc3RhbmNlIG9mIFpvbmVJbmZvLCBieXBhc3NpbmcgdGhlIGNhY2hlLgBTZXF1ZW5jZSBpbmRleCBvdXQgb2YgcmFuZ2UuAEJhc2UgY2xhc3MgZm9yIHdhcm5pbmdzIGFib3V0IHJlc291cmNlIHVzYWdlLgBkdW1wX3RyYWNlYmFja19sYXRlcih0aW1lb3V0LCByZXBlYXQ9RmFsc2UsIGZpbGU9c3lzLnN0ZGVycm4sIGV4aXQ9RmFsc2UpOgpkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW4gdGltZW91dCBzZWNvbmRzLApvciBlYWNoIHRpbWVvdXQgc2Vjb25kcyBpZiByZXBlYXQgaXMgVHJ1ZS4gSWYgZXhpdCBpcyBUcnVlLCBjYWxsIF9leGl0KDEpIHdoaWNoIGlzIG5vdCBzYWZlLgBjb3VsZG4ndCBjb252ZXJ0IHRoZSBvYmplY3QgdG8gdW5pY29kZS4AdGhpcmQgYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIG1hY2hpbmUgZm9ybWF0IGNvZGUuAEJhc2UgY2xhc3MgZm9yIHdhcm5pbmdzIGdlbmVyYXRlZCBieSB1c2VyIGNvZGUuAFRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5IHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY291bGQgbWF0Y2ggdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgc2VxdWVuY2UuAEltcGxlbWVudHMgdGhlICduYW1lcmVwbGFjZScgZXJyb3IgaGFuZGxpbmcsIHdoaWNoIHJlcGxhY2VzIGFuIHVuZW5jb2RhYmxlIGNoYXJhY3RlciB3aXRoIGEgXE57Li4ufSBlc2NhcGUgc2VxdWVuY2UuAEltcGxlbWVudHMgdGhlICdiYWNrc2xhc2hyZXBsYWNlJyBlcnJvciBoYW5kbGluZywgd2hpY2ggcmVwbGFjZXMgbWFsZm9ybWVkIGRhdGEgd2l0aCBhIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZS4ASW1wbGVtZW50cyB0aGUgJ3htbGNoYXJyZWZyZXBsYWNlJyBlcnJvciBoYW5kbGluZywgd2hpY2ggcmVwbGFjZXMgYW4gdW5lbmNvZGFibGUgY2hhcmFjdGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIFhNTCBjaGFyYWN0ZXIgcmVmZXJlbmNlLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgYW4gaW52YWxpZCBiYWNrIHJlZmVyZW5jZS4AX19kZWxldGVfXygkc2VsZiwgaW5zdGFuY2UsIC8pCi0tCgpEZWxldGUgYW4gYXR0cmlidXRlIG9mIGluc3RhbmNlLgBhcmd1bWVudCBtdXN0IGJlIGFuIGludCwgb3IgaGF2ZSBhIGZpbGVubygpIG1ldGhvZC4ATWFwcGluZyBrZXkgbm90IGZvdW5kLgBQcm9jZXNzIG5vdCBmb3VuZC4AQXR0cmlidXRlIG5vdCBmb3VuZC4ATW9kdWxlIG5vdCBmb3VuZC4ARmlsZSBub3QgZm91bmQuAE5vIHRpbWUgem9uZSBpbmZvcm1hdGlvbiBmb3VuZC4AVHlwZSBkb2VzIG5vdCBkZWZpbmUgdGhlIHRwX25hbWUgZmllbGQuAFR5cGUgc3BlYyBkb2VzIG5vdCBkZWZpbmUgdGhlIG5hbWUgZmllbGQuAEZ1dHVyZSBvYmplY3QgaXMgbm90IGluaXRpYWxpemVkLgBDYW5ub3QgZW50ZXIgaW50byB0YXNrICVSIHdoaWxlIGFub3RoZXIgdGFzayAlUiBpcyBiZWluZyBleGVjdXRlZC4AQW4gaW52YWxpZCByZWdleCBncmFtbWFyIGhhcyBiZWVuIHJlcXVlc3RlZC4AbW1hcCBjYW4ndCByZXNpemUgd2l0aCBleHRhbnQgYnVmZmVycyBleHBvcnRlZC4Abm8gc3VjaCBjb2RlYyBpcyBzdXBwb3J0ZWQuAENvbm5lY3Rpb24gYWJvcnRlZC4AUmVzdWx0IHRvbyBsYXJnZSB0byBiZSByZXByZXNlbnRlZC4ALVggaW50X21heF9zdHJfZGlnaXRzOiBpbnZhbGlkIGxpbWl0OyBtdXN0IGJlID49IDY0MCBvciAwIGZvciB1bmxpbWl0ZWQuAFBZVEhPTklOVE1BWFNUUkRJR0lUUzogaW52YWxpZCBsaW1pdDsgbXVzdCBiZSA+PSA2NDAgb3IgMCBmb3IgdW5saW1pdGVkLgBUaGUgZGVsZWdhdGlvbiBvZiBpbnQoKSB0byBfX3RydW5jX18gaXMgZGVwcmVjYXRlZC4AQ29ubmVjdGlvbiByZWZ1c2VkLgBUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4AQXQgbGVhc3Qgb25lIGFyZ3VtZW50IGlzIHJlcXVpcmVkLgBUaW1lb3V0IGV4cGlyZWQuAEZhaWxlZCB0byBlbmNvZGUgbGF0aW4xIHN0cmluZyB3aGVuIHVucGlja2xpbmcgYSBkYXRlIG9iamVjdC4gcGlja2xlLmxvYWQoZGF0YSwgZW5jb2Rpbmc9J2xhdGluMScpIGlzIGFzc3VtZWQuAEZhaWxlZCB0byBlbmNvZGUgbGF0aW4xIHN0cmluZyB3aGVuIHVucGlja2xpbmcgYSBkYXRldGltZSBvYmplY3QuIHBpY2tsZS5sb2FkKGRhdGEsIGVuY29kaW5nPSdsYXRpbjEnKSBpcyBhc3N1bWVkLgBGYWlsZWQgdG8gZW5jb2RlIGxhdGluMSBzdHJpbmcgd2hlbiB1bnBpY2tsaW5nIGEgdGltZSBvYmplY3QuIHBpY2tsZS5sb2FkKGRhdGEsIGVuY29kaW5nPSdsYXRpbjEnKSBpcyBhc3N1bWVkLgBUaGUgcGF0dGVybiBzdHJpbmcgZnJvbSB3aGljaCB0aGUgUkUgb2JqZWN0IHdhcyBjb21waWxlZC4AQXNzZXJ0aW9uIGZhaWxlZC4ARmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9uIGZhaWxlZC4AQSBsb2FkIHBlcnNpc3RlbnQgaWQgaW5zdHJ1Y3Rpb24gd2FzIGVuY291bnRlcmVkLApidXQgbm8gcGVyc2lzdGVudF9sb2FkIGZ1bmN0aW9uIHdhcyBzcGVjaWZpZWQuAFJlY3Vyc2lvbiBsaW1pdCBleGNlZWRlZC4AY2F0Y2hpbmcgRXhjZXB0aW9uR3JvdXAgd2l0aCBleGNlcHQqIGlzIG5vdCBhbGxvd2VkLiBVc2UgZXhjZXB0IGluc3RlYWQuAGdldGFyZ3M6IFRoZSAnJWMnIGZvcm1hdCBpcyBkZXByZWNhdGVkLiBVc2UgJ1UnIGluc3RlYWQuAGZhdGFsX2Vycm9yX2NfdGhyZWFkKCk6IGNhbGwgUHlfRmF0YWxFcnJvcigpIGluIGEgbmV3IEMgdGhyZWFkLgBQeXRob24gQyBBUEkgdmVyc2lvbiBtaXNtYXRjaCBmb3IgbW9kdWxlICUuMTAwczogVGhpcyBQeXRob24gaGFzIEFQSSB2ZXJzaW9uICVkLCBtb2R1bGUgJS4xMDBzIGhhcyB2ZXJzaW9uICVkLgBfX2dldGl0ZW1fXygkc2VsZiwga2V5LCAvKQotLQoKUmV0dXJuIHNlbGZba2V5XS4AX19kZWxpdGVtX18oJHNlbGYsIGtleSwgLykKLS0KCkRlbGV0ZSBzZWxmW2tleV0uAFRoZSBleHByZXNzaW9uIGNvbnRhaW5lZCBtaXNtYXRjaGVkIFsgYW5kIF0uAG9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIHN0cmljdGx5IGJldHdlZW4gLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCksIG5vdCAlUi4ATGVhdmluZyB0YXNrICVSIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IHRhc2sgJVIuAHNlcCBtdXN0IGJlIEFTQ0lJLgBSZXR1cm4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCwgWVlZWS1NTS1ERC4AZGF0ZXRpbWUgLT4gRFNUIG9mZnNldCBhcyB0aW1lZGVsdGEgcG9zaXRpdmUgZWFzdCBvZiBVVEMuADx1bmtub3duPi4AZ2V0bmFtZWluZm8oKTogZmxvd2luZm8gbXVzdCBiZSAwLTEwNDg1NzUuAGdldHNlcnZieXBvcnQ6IHBvcnQgbXVzdCBiZSAwLTY1NTM1LgAlcygpOiBwb3J0IG11c3QgYmUgMC02NTUzNS4AUmV0dXJuIHByb2xlcHRpYyBHcmVnb3JpYW4gb3JkaW5hbC4gIEphbnVhcnkgMSBvZiB5ZWFyIDEgaXMgZGF5IDEuAHNlcCBtdXN0IGJlIGxlbmd0aCAxLgBzaXplb2YuLi4AIC4uLgBOdW1iZXIgb2Ygc2Vjb25kcyAoPj0gMCBhbmQgbGVzcyB0aGFuIDEgZGF5KS4AX19uZXh0X18oJHNlbGYsIC8pCi0tCgpJbXBsZW1lbnQgbmV4dChzZWxmKS4AUmV0dXJuIHNlbGYudHppbmZvLmRzdChzZWxmKS4AUmV0dXJuIHNlbGYudHppbmZvLnV0Y29mZnNldChzZWxmKS4AX19zdHJfXygkc2VsZiwgLykKLS0KClJldHVybiBzdHIoc2VsZikuAF9fcmVwcl9fKCRzZWxmLCAvKQotLQoKUmV0dXJuIHJlcHIoc2VsZikuAF9faXRlcl9fKCRzZWxmLCAvKQotLQoKSW1wbGVtZW50IGl0ZXIoc2VsZikuAF9fbGVuX18oJHNlbGYsIC8pCi0tCgpSZXR1cm4gbGVuKHNlbGYpLgBfX2hhc2hfXygkc2VsZiwgLykKLS0KClJldHVybiBoYXNoKHNlbGYpLgBSZXR1cm4gc2VsZi50emluZm8udHpuYW1lKHNlbGYpLgBfX3JkaXZtb2RfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gZGl2bW9kKHZhbHVlLCBzZWxmKS4AX19kaXZtb2RfXygkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZXR1cm4gZGl2bW9kKHNlbGYsIHZhbHVlKS4AX19zZXRhdHRyX18oJHNlbGYsIG5hbWUsIHZhbHVlLCAvKQotLQoKSW1wbGVtZW50IHNldGF0dHIoc2VsZiwgbmFtZSwgdmFsdWUpLgBJbmFwcHJvcHJpYXRlIGFyZ3VtZW50IHZhbHVlIChvZiBjb3JyZWN0IHR5cGUpLgBfX2dldGF0dHJpYnV0ZV9fKCRzZWxmLCBuYW1lLCAvKQotLQoKUmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkuAF9fZGVsYXR0cl9fKCRzZWxmLCBuYW1lLCAvKQotLQoKSW1wbGVtZW50IGRlbGF0dHIoc2VsZiwgbmFtZSkuAF9fcnBvd19fKCRzZWxmLCB2YWx1ZSwgbW9kPU5vbmUsIC8pCi0tCgpSZXR1cm4gcG93KHZhbHVlLCBzZWxmLCBtb2QpLgBfX3Bvd19fKCRzZWxmLCB2YWx1ZSwgbW9kPU5vbmUsIC8pCi0tCgpSZXR1cm4gcG93KHNlbGYsIHZhbHVlLCBtb2QpLgBOdW1iZXIgb2YgbWljcm9zZWNvbmRzICg+PSAwIGFuZCBsZXNzIHRoYW4gMSBzZWNvbmQpLgBvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSBzdHJpY3RseSBiZXR3ZWVuIC10aW1lZGVsdGEoaG91cnM9MjQpIGFuZCB0aW1lZGVsdGEoaG91cnM9MjQpLgBzdHJpbmcsIGZvcm1hdCAtPiBuZXcgZGF0ZXRpbWUgcGFyc2VkIGZyb20gYSBzdHJpbmcgKGxpa2UgdGltZS5zdHJwdGltZSgpKS4AQ3VycmVudCBkYXRlIG9yIGRhdGV0aW1lOiAgc2FtZSBhcyBzZWxmLl9fY2xhc3NfXy5mcm9tdGltZXN0YW1wKHRpbWUudGltZSgpKS4AYXZhaWxfb3V0IGlzIG5vbi16ZXJvIGluIF9CbG9ja3NPdXRwdXRCdWZmZXJfR3JvdygpLgBFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLmdldChibG9jaz0wKS9nZXRfbm93YWl0KCkuAGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOgpjYW5jZWwgdGhlIHByZXZpb3VzIGNhbGwgdG8gZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4AVGhlIHN0cmluZyBwYXNzZWQgdG8gbWF0Y2goKSBvciBzZWFyY2goKS4AVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdpbGwgYmUgY2xvc2VkIGJ5IGNsb3NlKCkuAFJldHVybiB0aW1lIHR1cGxlLCBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4AUmV0dXJuIFVUQyB0aW1lIHR1cGxlLCBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4AU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX2FuZXh0X18oKS4AU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX25leHRfXygpLgBGYWN0b3J5IGZvciBkZWZhdWx0IHZhbHVlIGNhbGxlZCBieSBfX21pc3NpbmdfXygpLgBUaGUgZXhwcmVzc2lvbiBjb250YWluZWQgbWlzbWF0Y2hlZCAoIGFuZCApLgBpbnZhbGlkIGxvYWQga2V5LCAnXHglMDJ4Jy4AQ2Fubm90IHNwZWNpZnkgJyVjJyB3aXRoICdceCV4Jy4AY2xhc3MgbXVzdCBkZWZpbmUgYSAnX3R5cGVfJyBhdHRyaWJ1dGUgd2hpY2ggbXVzdCBiZQphIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5nIGNvbnRhaW5pbmcgb25lIG9mICclcycuAENhbm5vdCBzcGVjaWZ5ICclYycgd2l0aCAnJWMnLgBpbnZhbGlkIGxvYWQga2V5LCAnJWMnLgBUaGUgc3RyaW5nICclcycgaXMgYSBQeXRob24gcmVzZXJ2ZWQgd29yZC4gVG8gJXMgYW4gYXR0cmlidXRlIG9uIGEgSlMgb2JqZWN0IGNhbGxlZCAnJXMnIHVzZSAnJXNfJy4AQ2Fubm90IHNwZWNpZnkgYm90aCAnLCcgYW5kICdfJy4ASWYgbmFtZSBpcyBzcGVjaWZpZWQgd2hlbiB0aW1lem9uZSBpcyBjcmVhdGVkLCByZXR1cm5zIHRoZSBuYW1lLiAgT3RoZXJ3aXNlIHJldHVybnMgb2Zmc2V0IGFzICdVVEMoK3wtKUhIOk1NJy4AIC4Ab3BlcmF0b3ItAC1pbi0AQ0pLIFVOSUZJRUQgSURFT0dSQVBILQB1dGYtOC0AaXNvLWxhdGluLTEtAGlzby04ODU5LTEtAHMgMS0Ab3BlcmF0b3ItLQArLQBvcGVyYXRvciwAJXpkLAB3KwBvcGVyYXRvcisAeGIrAHJiKwBhYisAYSsAb3BlcmF0b3IrKwB3KgBvcGVyYXRvcioAbXVsdGlieXRlY29kZWMuX19tYXBfKgBvcGVyYXRvci0+KgA6OioAb3BlcmF0b3IuKgAqKgAlKgAvIG11c3QgYmUgYWhlYWQgb2YgKgBuYW1lZCBhcmd1bWVudHMgbXVzdCBmb2xsb3cgYmFyZSAqAGV4cGVjdGVkIGNvbW1hIGJldHdlZW4gLyBhbmQgKgAlcyh7JVV9KQBJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpAChzenopACh6eikAVHJ5KHN0bXQqIGJvZHksIGV4Y2VwdGhhbmRsZXIqIGhhbmRsZXJzLCBzdG10KiBvcmVsc2UsIHN0bXQqIGZpbmFsYm9keSkAVHJ5U3RhcihzdG10KiBib2R5LCBleGNlcHRoYW5kbGVyKiBoYW5kbGVycywgc3RtdCogb3JlbHNlLCBzdG10KiBmaW5hbGJvZHkpAEV4cHJlc3Npb24oZXhwciBib2R5KQBMYW1iZGEoYXJndW1lbnRzIGFyZ3MsIGV4cHIgYm9keSkASW50ZXJhY3RpdmUoc3RtdCogYm9keSkAZXhjZXB0aGFuZGxlciA9IEV4Y2VwdEhhbmRsZXIoZXhwcj8gdHlwZSwgaWRlbnRpZmllcj8gbmFtZSwgc3RtdCogYm9keSkAbWF0Y2hfY2FzZShwYXR0ZXJuIHBhdHRlcm4sIGV4cHI/IGd1YXJkLCBzdG10KiBib2R5KQBMaXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpAFR1cGxlKGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpAEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpAFN0YXJyZWQoZXhwciB2YWx1ZSwgZXhwcl9jb250ZXh0IGN0eCkAU3Vic2NyaXB0KGV4cHIgdmFsdWUsIGV4cHIgc2xpY2UsIGV4cHJfY29udGV4dCBjdHgpAE5hbWUoaWRlbnRpZmllciBpZCwgZXhwcl9jb250ZXh0IGN0eCkAUHlVbmljb2RlX0lTX1JFQURZKHgpAGNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHgleCkAY2xhc3NtZXRoKCphcmdzLCAqKmt3KQBzdGF0aWNtZXRoKCphcmdzLCAqKmt3KQBDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIGV4cHIqIGJhc2VzLCBrZXl3b3JkKiBrZXl3b3Jkcywgc3RtdCogYm9keSwgZXhwciogZGVjb3JhdG9yX2xpc3QpAE1hdGNoTWFwcGluZyhleHByKiBrZXlzLCBwYXR0ZXJuKiBwYXR0ZXJucywgaWRlbnRpZmllcj8gcmVzdCkAcGFydGlhbGx5IGluaXRpYWxpemVkIG1vZHVsZSAnJVUnIGhhcyBubyBhdHRyaWJ1dGUgJyVVJyAobW9zdCBsaWtlbHkgZHVlIHRvIGEgY2lyY3VsYXIgaW1wb3J0KQBjYW5ub3QgYWNjZXNzIHN1Ym1vZHVsZSAnJVUnIG9mIG1vZHVsZSAnJVUnIChtb3N0IGxpa2VseSBkdWUgdG8gYSBjaXJjdWxhciBpbXBvcnQpAE8maTtBRl9JTkVUIGFkZHJlc3MgbXVzdCBiZSBhIHBhaXIgKGhvc3QsIHBvcnQpAEFzeW5jV2l0aCh3aXRoaXRlbSogaXRlbXMsIHN0bXQqIGJvZHksIHN0cmluZz8gdHlwZV9jb21tZW50KQBBc3luY0Z1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zLCBzdHJpbmc/IHR5cGVfY29tbWVudCkAYXJnKGlkZW50aWZpZXIgYXJnLCBleHByPyBhbm5vdGF0aW9uLCBzdHJpbmc/IHR5cGVfY29tbWVudCkAQXNzaWduKGV4cHIqIHRhcmdldHMsIGV4cHIgdmFsdWUsIHN0cmluZz8gdHlwZV9jb21tZW50KQBBc3luY0ZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UsIHN0cmluZz8gdHlwZV9jb21tZW50KQBSdW50aW1lIChOb2RlLkpTIHZlcnNpb24sIGJyb3dzZXIgdXNlciBhZ2VudCkAQmluT3AoZXhwciBsZWZ0LCBvcGVyYXRvciBvcCwgZXhwciByaWdodCkAKG5vdCBzZXQpAGFyZ3VtZW50cyhhcmcqIHBvc29ubHlhcmdzLCBhcmcqIGFyZ3MsIGFyZz8gdmFyYXJnLCBhcmcqIGt3b25seWFyZ3MsIGV4cHIqIGt3X2RlZmF1bHRzLCBhcmc/IGt3YXJnLCBleHByKiBkZWZhdWx0cykAU2V0KGV4cHIqIGVsdHMpAERlbGV0ZShleHByKiB0YXJnZXRzKQAoc3MpAEdlbmVyYXRvckV4cChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykATGlzdENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpAFNldENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpAERpY3RDb21wKGV4cHIga2V5LCBleHByIHZhbHVlLCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQBDb21wYXJlKGV4cHIgbGVmdCwgY21wb3AqIG9wcywgZXhwciogY29tcGFyYXRvcnMpAHdpdGhpdGVtKGV4cHIgY29udGV4dF9leHByLCBleHByPyBvcHRpb25hbF92YXJzKQBtb2QgPSBNb2R1bGUoc3RtdCogYm9keSwgdHlwZV9pZ25vcmUqIHR5cGVfaWdub3JlcykKICAgIHwgSW50ZXJhY3RpdmUoc3RtdCogYm9keSkKICAgIHwgRXhwcmVzc2lvbihleHByIGJvZHkpCiAgICB8IEZ1bmN0aW9uVHlwZShleHByKiBhcmd0eXBlcywgZXhwciByZXR1cm5zKQBNYXRjaENsYXNzKGV4cHIgY2xzLCBwYXR0ZXJuKiBwYXR0ZXJucywgaWRlbnRpZmllcioga3dkX2F0dHJzLCBwYXR0ZXJuKiBrd2RfcGF0dGVybnMpAHBhdHRlcm4gPSBNYXRjaFZhbHVlKGV4cHIgdmFsdWUpCiAgICAgICAgfCBNYXRjaFNpbmdsZXRvbihjb25zdGFudCB2YWx1ZSkKICAgICAgICB8IE1hdGNoU2VxdWVuY2UocGF0dGVybiogcGF0dGVybnMpCiAgICAgICAgfCBNYXRjaE1hcHBpbmcoZXhwcioga2V5cywgcGF0dGVybiogcGF0dGVybnMsIGlkZW50aWZpZXI/IHJlc3QpCiAgICAgICAgfCBNYXRjaENsYXNzKGV4cHIgY2xzLCBwYXR0ZXJuKiBwYXR0ZXJucywgaWRlbnRpZmllcioga3dkX2F0dHJzLCBwYXR0ZXJuKiBrd2RfcGF0dGVybnMpCiAgICAgICAgfCBNYXRjaFN0YXIoaWRlbnRpZmllcj8gbmFtZSkKICAgICAgICB8IE1hdGNoQXMocGF0dGVybj8gcGF0dGVybiwgaWRlbnRpZmllcj8gbmFtZSkKICAgICAgICB8IE1hdGNoT3IocGF0dGVybiogcGF0dGVybnMpAE1hdGNoU2VxdWVuY2UocGF0dGVybiogcGF0dGVybnMpAGlubGluZSB0aW1lIChub3QgaW4gZnVydGhlciBzdWJjYWxscykAaW5saW5lIHRpbWUgaW4gdGhpcyBlbnRyeSAobm90IGluIHN1YmNhbGxzKQAoaXMpAEpvaW5lZFN0cihleHByKiB2YWx1ZXMpAERpY3QoZXhwcioga2V5cywgZXhwciogdmFsdWVzKQBCb29sT3AoYm9vbG9wIG9wLCBleHByKiB2YWx1ZXMpAEJ1ZmZlciBzaXplIHRvbyBzbWFsbCAoJXpkIGluc3RlYWQgb2YgYXQgbGVhc3QgJXpkIGJ5dGVzKQBNYXRjaChleHByIHN1YmplY3QsIG1hdGNoX2Nhc2UqIGNhc2VzKQBNb2R1bGUoc3RtdCogYm9keSwgdHlwZV9pZ25vcmUqIHR5cGVfaWdub3JlcykAUHlUdXBsZV9DaGVjayhrd25hbWVzKQBjb2RlOiBjb19ubG9jYWxzICE9IGxlbihjb192YXJuYW1lcykASW1wb3J0KGFsaWFzKiBuYW1lcykATm9ubG9jYWwoaWRlbnRpZmllciogbmFtZXMpAEdsb2JhbChpZGVudGlmaWVyKiBuYW1lcykAQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzKQBOKE9zKQAlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKQByZWFkKCkgZGlkIG5vdCByZXR1cm4gYSBieXRlcyBvYmplY3QgKHR5cGU9JS40MDBzKQBfX2NvbXBsZXhfXyByZXR1cm5lZCBub24tY29tcGxleCAodHlwZSAlLjIwMHMpAF9faW5kZXhfXyByZXR1cm5lZCBub24taW50ICh0eXBlICUuMjAwcykAX19pbnRfXyByZXR1cm5lZCBub24taW50ICh0eXBlICUuMjAwcykAX19ieXRlc19fIHJldHVybmVkIG5vbi1ieXRlcyAodHlwZSAlLjIwMHMpAF9fdHJ1bmNfXyByZXR1cm5lZCBub24tSW50ZWdyYWwgKHR5cGUgJS4yMDBzKQBfX3N0cl9fIHJldHVybmVkIG5vbi1zdHJpbmcgKHR5cGUgJS4yMDBzKQBfX3JlcHJfXyByZXR1cm5lZCBub24tc3RyaW5nICh0eXBlICUuMjAwcykAZGl2bW9kKCkgcmV0dXJuZWQgbm9uLXR1cGxlICh0eXBlICUuMjAwcykAJS4yMDBzLiVVKCkgcmV0dXJuZWQgYSBub24taXRlcmFibGUgKHR5cGUgJS4yMDBzKQBfY29tcGF0X3BpY2tsZS5SRVZFUlNFX05BTUVfTUFQUElORyB2YWx1ZXMgc2hvdWxkIGJlIHBhaXJzIG9mIHN0ciwgbm90ICglLjIwMHMsICUuMjAwcykAX2NvbXBhdF9waWNrbGUuTkFNRV9NQVBQSU5HIHZhbHVlcyBzaG91bGQgYmUgcGFpcnMgb2Ygc3RyLCBub3QgKCUuMjAwcywgJS4yMDBzKQBzdHJlYW0gZnVuY3Rpb24gcmV0dXJuZWQgYSBub24tYnl0ZXMgb2JqZWN0ICglLjEwMHMpAChzKQAgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJXpkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKQAlUyAoJXpkIHN1Yi1leGNlcHRpb24lcykAZHluYW1pYyBtb2R1bGUgZG9lcyBub3QgZGVmaW5lIG1vZHVsZSBleHBvcnQgZnVuY3Rpb24gKCVzXyVzKQBDb250ZXh0KHByZWM9JXpkLCByb3VuZGluZz0lcywgRW1pbj0lemQsIEVtYXg9JXpkLCBjYXBpdGFscz0lZCwgY2xhbXA9JWQsIGZsYWdzPSVzLCB0cmFwcz0lcykAaW52YWxpZCBjaGFyYWN0ZXIgJyVjJyAoVSslcykAJXMuX19uZXdfXyhYKTogWCBpcyBub3QgYSB0eXBlIG9iamVjdCAoJXMpAHN1cGVyKCk6IF9fY2xhc3NfXyBpcyBub3QgYSB0eXBlICglcykAX19tYXRjaF9hcmdzX18gZWxlbWVudHMgbXVzdCBiZSBzdHJpbmdzIChnb3QgJXMpACVzLl9fbWF0Y2hfYXJnc19fIG11c3QgYmUgYSB0dXBsZSAoZ290ICVzKQAodW5pY29kZSBjb252ZXJzaW9uIGVycm9yKQAoaW52YWxpZCB1c2Ugb2YgJ3cnIGZvcm1hdCBjaGFyYWN0ZXIpAGRlY29kZXIgbXVzdCByZXR1cm4gYSB0dXBsZSAob2JqZWN0LGludGVnZXIpAGVuY29kZXIgbXVzdCByZXR1cm4gYSB0dXBsZSAob2JqZWN0LCBpbnRlZ2VyKQBJbnZhbGlkIHZhbHVlIE5hTiAobm90IGEgbnVtYmVyKQBzaXplb2YoWE1MX0NoYXIpAHNpemVvZihYTUxfTENoYXIpAFB5Qnl0ZXNfQ2hlY2sob3ApAFB5VHVwbGVfQ2hlY2sob3ApAFB5VW5pY29kZV9DaGVjayhvcCkAIV9QeU9iamVjdF9Jc0ZyZWVkKG9wKQBQeVVuaWNvZGVfSVNfUkVBRFkob3ApAGV4cHIgPSBCb29sT3AoYm9vbG9wIG9wLCBleHByKiB2YWx1ZXMpCiAgICAgfCBOYW1lZEV4cHIoZXhwciB0YXJnZXQsIGV4cHIgdmFsdWUpCiAgICAgfCBCaW5PcChleHByIGxlZnQsIG9wZXJhdG9yIG9wLCBleHByIHJpZ2h0KQogICAgIHwgVW5hcnlPcCh1bmFyeW9wIG9wLCBleHByIG9wZXJhbmQpCiAgICAgfCBMYW1iZGEoYXJndW1lbnRzIGFyZ3MsIGV4cHIgYm9keSkKICAgICB8IElmRXhwKGV4cHIgdGVzdCwgZXhwciBib2R5LCBleHByIG9yZWxzZSkKICAgICB8IERpY3QoZXhwcioga2V5cywgZXhwciogdmFsdWVzKQogICAgIHwgU2V0KGV4cHIqIGVsdHMpCiAgICAgfCBMaXN0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKICAgICB8IFNldENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCiAgICAgfCBEaWN0Q29tcChleHByIGtleSwgZXhwciB2YWx1ZSwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKICAgICB8IEdlbmVyYXRvckV4cChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKICAgICB8IEF3YWl0KGV4cHIgdmFsdWUpCiAgICAgfCBZaWVsZChleHByPyB2YWx1ZSkKICAgICB8IFlpZWxkRnJvbShleHByIHZhbHVlKQogICAgIHwgQ29tcGFyZShleHByIGxlZnQsIGNtcG9wKiBvcHMsIGV4cHIqIGNvbXBhcmF0b3JzKQogICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzKQogICAgIHwgRm9ybWF0dGVkVmFsdWUoZXhwciB2YWx1ZSwgaW50IGNvbnZlcnNpb24sIGV4cHI/IGZvcm1hdF9zcGVjKQogICAgIHwgSm9pbmVkU3RyKGV4cHIqIHZhbHVlcykKICAgICB8IENvbnN0YW50KGNvbnN0YW50IHZhbHVlLCBzdHJpbmc/IGtpbmQpCiAgICAgfCBBdHRyaWJ1dGUoZXhwciB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHQgY3R4KQogICAgIHwgU3Vic2NyaXB0KGV4cHIgdmFsdWUsIGV4cHIgc2xpY2UsIGV4cHJfY29udGV4dCBjdHgpCiAgICAgfCBTdGFycmVkKGV4cHIgdmFsdWUsIGV4cHJfY29udGV4dCBjdHgpCiAgICAgfCBOYW1lKGlkZW50aWZpZXIgaWQsIGV4cHJfY29udGV4dCBjdHgpCiAgICAgfCBMaXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCiAgICAgfCBUdXBsZShleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQogICAgIHwgU2xpY2UoZXhwcj8gbG93ZXIsIGV4cHI/IHVwcGVyLCBleHByPyBzdGVwKQBkZWNsdHlwZShhdXRvKQBFbXNjcmlwdGVuIHZlcnNpb24gKG1ham9yLCBtaW5vciwgbWljcm8pACh1bmtub3duIHBhcnNlciBtYXJrZXIgY29tYmluYXRpb24pAGNhbm5vdCBpbXBvcnQgbmFtZSAlUiBmcm9tICVSICh1bmtub3duIGxvY2F0aW9uKQAoT25uTm5uKQAobm4pACUuNTAwcygpIHRha2VzIGFuIGF0IG1vc3QgJXpkLXNlcXVlbmNlICglemQtc2VxdWVuY2UgZ2l2ZW4pACUuNTAwcygpIHRha2VzIGFuIGF0IGxlYXN0ICV6ZC1zZXF1ZW5jZSAoJXpkLXNlcXVlbmNlIGdpdmVuKQAlLjUwMHMoKSB0YWtlcyBhICV6ZC1zZXF1ZW5jZSAoJXpkLXNlcXVlbmNlIGdpdmVuKQB1cGRhdGUoKSB0YWtlcyBhdCBtb3N0IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoJXpkIGdpdmVuKQAlVSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJXpkIGdpdmVuKQAlVSB0YWtlcyBubyBhcmd1bWVudHMgKCV6ZCBnaXZlbikAY2FsbCB0YWtlcyBleGFjdGx5ICVkIGFyZ3VtZW50cyAoJXpkIGdpdmVuKQBzZW5kdG8oKSB0YWtlcyAyIG9yIDMgYXJndW1lbnRzICglemQgZ2l2ZW4pACUuMjAwcyVzIHRha2VzIGF0IG1vc3QgJWQgJXNhcmd1bWVudCVzICglemQgZ2l2ZW4pACUuMjAwcyVzIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoJXpkIGdpdmVuKQAlLjE1MHMlcyB0YWtlcyAlcyAlZCBhcmd1bWVudCVzICglemQgZ2l2ZW4pAGVudW1lcmF0ZSgpIHRha2VzIGF0IG1vc3QgMiBhcmd1bWVudHMgKCVkIGdpdmVuKQB0aGlzIGZ1bmN0aW9uIHRha2VzIGF0IGxlYXN0ICVkIGFyZ3VtZW50JXMgKCVkIGdpdmVuKQB0aGlzIGZ1bmN0aW9uIHRha2VzICVkIGFyZ3VtZW50JXMgKCVkIGdpdmVuKQAlcygpIGFjY2VwdHMgJWQgcG9zaXRpb25hbCBzdWItcGF0dGVybiVzICglZCBnaXZlbikAcmVnaXN0ZXIoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQBub3Qgd2VsbC1mb3JtZWQgKGludmFsaWQgdG9rZW4pAG5hbihzbmFuKQBPKE9uKQAoTm4pAChDbikATygoKW4pAE8obikAKG51bGwpAEltcG9ydEZyb20oaWRlbnRpZmllcj8gbW9kdWxlLCBhbGlhcyogbmFtZXMsIGludD8gbGV2ZWwpAChOaWlpaSkAKGlpaSkATyhPaWlPaWkpAChpaSkAKGRpKQBPKCgpKShPaSkAKE5OTmkpAChpKQAoTk5PJk8maSkAKE8mTyZpKQBnZW5lcmF0aW9uIHBhcmFtZXRlciBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBnZW5lcmF0aW9ucyAoJWkpAGZpbGUgZGVzY3JpcHRvciBjYW5ub3QgYmUgYSBuZWdhdGl2ZSBpbnRlZ2VyICglaSkAQXNzZXJ0KGV4cHIgdGVzdCwgZXhwcj8gbXNnKQBiYWQgbWFyc2hhbCBkYXRhIChkaWdpdCBvdXQgb2YgcmFuZ2UgaW4gbG9uZykAZ2xvYmFscyBtdXN0IGJlIGEgcmVhbCBkaWN0OyB0cnkgZXZhbChleHByLCB7fSwgbWFwcGluZykAdHlwZV9pZ25vcmUgPSBUeXBlSWdub3JlKGludCBsaW5lbm8sIHN0cmluZyB0YWcpAChuZikAX19pbnRfXygkc2VsZiwgLykKLS0KCmludChzZWxmKQBfX2Zsb2F0X18oJHNlbGYsIC8pCi0tCgpmbG9hdChzZWxmKQBfX2Fic19fKCRzZWxmLCAvKQotLQoKYWJzKHNlbGYpAG9iamVjdC5fX2luaXRfXygpIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50ICh0aGUgaW5zdGFuY2UgdG8gaW5pdGlhbGl6ZSkAJS4yMDBzLl9faW5pdF9fKCkgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQgKHRoZSBpbnN0YW5jZSB0byBpbml0aWFsaXplKQAlcyglbGxkLCByZWN2PVRydWUpAG1heSBub3QgYmUgY2xvc2VkIGlmIG5vdCBlbXB0eSAodHJ5IGZvcmNlPVRydWUpACVzKCVsbGQsIHNlbmQ9VHJ1ZSkATWF0Y2hTaW5nbGV0b24oY29uc3RhbnQgdmFsdWUpAEF3YWl0KGV4cHIgdmFsdWUpAEV4cHIoZXhwciB2YWx1ZSkAWWllbGRGcm9tKGV4cHIgdmFsdWUpAE1hdGNoVmFsdWUoZXhwciB2YWx1ZSkATmFtZWRFeHByKGV4cHIgdGFyZ2V0LCBleHByIHZhbHVlKQBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQBrZXl3b3JkKGlkZW50aWZpZXI/IGFyZywgZXhwciB2YWx1ZSkAUmV0dXJuKGV4cHI/IHZhbHVlKQBZaWVsZChleHByPyB2YWx1ZSkAdGhlIG9iamVjdCB0aGlzIHBvaW50ZXIgcG9pbnRzIHRvIChyZWFkLXdyaXRlKQBzZXRzdGF0ZShzdGF0ZSkAX19yZWR1Y2VfZXhfXyhwcm90bykgLT4gKGNscywgc3RhdGUpAF9fcmVkdWNlX18oKSAtPiAoY2xzLCBzdGF0ZSkAb2JqZWN0Ll9fbmV3X18oKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAodGhlIHR5cGUgdG8gaW5zdGFudGlhdGUpAFJhaXNlKGV4cHI/IGV4YywgZXhwcj8gY2F1c2UpAElmRXhwKGV4cHIgdGVzdCwgZXhwciBib2R5LCBleHByIG9yZWxzZSkASWYoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpAFdoaWxlKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQAhX1B5T2JqZWN0X0lzRnJlZWQoKFB5T2JqZWN0ICopdHlwZSkAUHlfSVNfVFlQRSgoKFB5T2JqZWN0KikoKGtleSkpKSwgJlB5VW5pY29kZV9UeXBlKQBhbGlhcyhpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXI/IGFzbmFtZSkAdGhlIGVudHJ5J3MgZnVsbCBwYXRoIG5hbWU7IGVxdWl2YWxlbnQgdG8gb3MucGF0aC5qb2luKHNjYW5kaXJfcGF0aCwgZW50cnkubmFtZSkATWF0Y2hTdGFyKGlkZW50aWZpZXI/IG5hbWUpAE1hdGNoQXMocGF0dGVybj8gcGF0dGVybiwgaWRlbnRpZmllcj8gbmFtZSkAXE4gZXNjYXBlcyBub3Qgc3VwcG9ydGVkIChjYW4ndCBsb2FkIHVuaWNvZGVkYXRhIG1vZHVsZSkAQW5uQXNzaWduKGV4cHIgdGFyZ2V0LCBleHByIGFubm90YXRpb24sIGV4cHI/IHZhbHVlLCBpbnQgc2ltcGxlKQBiYWQgbWFyc2hhbCBkYXRhIChpbmRleCBsaXN0IHRvbyBsYXJnZSkAYmFkIG1hcnNoYWwgZGF0YSAobGlzdCBzaXplIG91dCBvZiByYW5nZSkAYmFkIG1hcnNoYWwgZGF0YSAoc2V0IHNpemUgb3V0IG9mIHJhbmdlKQBiYWQgbWFyc2hhbCBkYXRhIChieXRlcyBvYmplY3Qgc2l6ZSBvdXQgb2YgcmFuZ2UpAGJhZCBtYXJzaGFsIGRhdGEgKGxvbmcgc2l6ZSBvdXQgb2YgcmFuZ2UpAGJhZCBtYXJzaGFsIGRhdGEgKHN0cmluZyBzaXplIG91dCBvZiByYW5nZSkAYmFkIG1hcnNoYWwgZGF0YSAodHVwbGUgc2l6ZSBvdXQgb2YgcmFuZ2UpAGl0ZXJhdG9yIHNob3VsZCByZXR1cm4gc3RyaW5ncywgbm90ICUuMjAwcyAodGhlIGZpbGUgc2hvdWxkIGJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUpAHJlYWQgd291bGQgb3ZlcmZsb3cgKGludmFsaWQgYnl0ZWNvZGUpAGJhZCBtYXJzaGFsIGRhdGEgKHVua25vd24gdHlwZSBjb2RlKQBiYWQgbWFyc2hhbCBkYXRhIChpbnZhbGlkIHJlZmVyZW5jZSkASW52YWxpZCBmb3JtYXQgc3RyaW5nICh8IHNwZWNpZmllZCB0d2ljZSkASW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkAZGV2aWNlIHR5cGUgKGlmIGlub2RlIGRldmljZSkAKGFub255bW91cyBuYW1lc3BhY2UpACVzKCVSLCBtYXhsZW49JXpkKQAlcyglemQpAHBhY2tfaW50byBleHBlY3RlZCAlemQgaXRlbXMgZm9yIHBhY2tpbmcgKGdvdCAlemQpAHBhY2sgZXhwZWN0ZWQgJXpkIGl0ZW1zIGZvciBwYWNraW5nIChnb3QgJXpkKQBub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIGF0IGxlYXN0ICVkLCBnb3QgJXpkKQB1bnBhY2tfZnJvbSByZXF1aXJlcyBhIGJ1ZmZlciBvZiBhdCBsZWFzdCAlenUgYnl0ZXMgZm9yIHVucGFja2luZyAlemQgYnl0ZXMgYXQgb2Zmc2V0ICV6ZCAoYWN0dWFsIGJ1ZmZlciBzaXplIGlzICV6ZCkAcGFja19pbnRvIHJlcXVpcmVzIGEgYnVmZmVyIG9mIGF0IGxlYXN0ICV6dSBieXRlcyBmb3IgcGFja2luZyAlemQgYnl0ZXMgYXQgb2Zmc2V0ICV6ZCAoYWN0dWFsIGJ1ZmZlciBzaXplIGlzICV6ZCkAYnl0ZXMgdG9vIGxvbmcgKCV6ZCwgbWF4aW11bSBsZW5ndGggJXpkKQBlbmNvZGVkIHN0cmluZyB0b28gbG9uZyAoJXpkLCBtYXhpbXVtIGxlbmd0aCAlemQpAHJhdyByZWFkaW50bygpIHJldHVybmVkIGludmFsaWQgbGVuZ3RoICV6ZCAoc2hvdWxkIGhhdmUgYmVlbiBiZXR3ZWVuIDAgYW5kICV6ZCkAcmF3IHdyaXRlKCkgcmV0dXJuZWQgaW52YWxpZCBsZW5ndGggJXpkIChzaG91bGQgaGF2ZSBiZWVuIGJldHdlZW4gMCBhbmQgJXpkKQAlcyglUiwgJXpkKQAnJS4yMDBzJyBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCAobWlzc2VkIF9fYWV4aXRfXyBtZXRob2QpACclLjIwMHMnIG9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgKG1pc3NlZCBfX2V4aXRfXyBtZXRob2QpAENvbnN0YW50KGNvbnN0YW50IHZhbHVlLCBzdHJpbmc/IGtpbmQpAG5hbihpbmQpAFVuYXJ5T3AodW5hcnlvcCBvcCwgZXhwciBvcGVyYW5kKQAlcyglbGxkKQAoeWllbGQpAGZpZWxkIGxhcmdlciB0aGFuIGZpZWxkIGxpbWl0ICglbGQpACVTIChsaW5lICVsZCkAJVMgKCVVLCBsaW5lICVsZCkAbmFtZSBvZiBtYWNoaW5lIG9uIG5ldHdvcmsgKGltcGxlbWVudGF0aW9uLWRlZmluZWQpAGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3QgKGlmIGRlZmluZWQpAGRpY3Rpb25hcnkgZm9yIGluc3RhbmNlIHZhcmlhYmxlcyAoaWYgZGVmaW5lZCkAKGVuY29kaW5nIGZhaWxlZCkAKHVuc3BlY2lmaWVkKQAoZGQpAGNhbid0IHVzZSBOVUxMIGtleXMgaW4gTWF0Y2hNYXBwaW5nIChzZXQgJ3Jlc3QnIHBhcmFtZXRlciBpbnN0ZWFkKQAoZCkAc3ltdGFibGUgYW5hbHlzaXMgcmVjdXJzaW9uIGRlcHRoIG1pc21hdGNoIChiZWZvcmU9JWQsIGFmdGVyPSVkKQBBU1QgY29uc3RydWN0b3IgcmVjdXJzaW9uIGRlcHRoIG1pc21hdGNoIChiZWZvcmU9JWQsIGFmdGVyPSVkKQBBU1QgdmFsaWRhdG9yIHJlY3Vyc2lvbiBkZXB0aCBtaXNtYXRjaCAoYmVmb3JlPSVkLCBhZnRlcj0lZCkAQVNUIG9wdGltaXplciByZWN1cnNpb24gZGVwdGggbWlzbWF0Y2ggKGJlZm9yZT0lZCwgYWZ0ZXI9JWQpAGludmFsaWQgbWF0Y2ggcGF0dGVybiBub2RlIGluIEFTVCAoa2luZD0lZCkAJVUsIGZvbGQ9JWQpAE1vcmUga2V5d29yZCBs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TyhPTk8pAE8oTykATihPKQBPKCkoTykAKE9Pbk4pAChPbk4pAChOaWlpaWlOKQBOKE9OKQAoT05OKQAoTk5OTk4pAChOTk5OKQAoTk5OKQAoTyZOTk4pAE8oT24pKE5OKQAoTyhOcylOKQAoTygpTikAKE8oeSMpTikATihOKQAoaWlPJk4pAChidWZmZXIgaXMgTlVMTCkAKGJ1ZmZlcl9sZW4gaXMgTlVMTCkAdGhlIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIEdJTCBoZWxkLCBidXQgdGhlIEdJTCBpcyByZWxlYXNlZCAodGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZSBpcyBOVUxMKQBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKQBjbG9ja19nZXR0aW1lKENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCkAY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpAE8oT0IpAGNvdWxkIG5vdCBmaW5kIGlvIG1vZHVsZSBzdGF0ZSAoaW50ZXJwcmV0ZXIgc2h1dGRvd24/KQAoaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+KQBvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpAG9yZGluYWwgbm90IGluIHJhbmdlKDI1NikAJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpAGNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMjU2KQBjYW4gYXNzaWduIG9ubHkgYnl0ZXMsIGJ1ZmZlcnMsIG9yIGl0ZXJhYmxlcyBvZiBpbnRzIGluIHJhbmdlKDAsIDI1NikAYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpAG1tYXAgaXRlbSB2YWx1ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikAYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikAZmFsbGJhY2soNCkAaW52YWxpZCB3aGVuY2UgKCVpLCBzaG91bGQgYmUgMCwgMSBvciAyKQBJbnZhbGlkIHdoZW5jZSAoJWksIHNob3VsZCBiZSAwLCAxIG9yIDIpAHRvbyBtYW55IHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIDIpAGNvZGUgcG9pbnQgaW4gc3Vycm9nYXRlIGNvZGUgcG9pbnQgcmFuZ2UoMHhkODAwLCAweGUwMDApAGNvZGUgcG9pbnQgbm90IGluIHJhbmdlKDB4MTEwMDAwKQBjaGFyYWN0ZXIgYXJndW1lbnQgbm90IGluIHJhbmdlKDB4MTEwMDAwKQAlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKQBjaHIoKSBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKQB0eXBlLT50cF9uZXcgPT0gKCh2b2lkKikwKQBlbnRyeS0+bWVfdmFsdWUgPT0gKCh2b2lkKikwKQBkYXRhID09ICgodm9pZCopMCkAY29tcGFjdC0+dXRmOCA9PSAoKHZvaWQqKTApAHR5cGUtPnRwX2RpY3QgIT0gKCh2b2lkKikwKQBhc2NpaS0+d3N0ciAhPSAoKHZvaWQqKTApAGVudHJ5LT5tZV92YWx1ZSAhPSAoKHZvaWQqKTApAHR5cGUtPnRwX3RyYXZlcnNlICE9ICgodm9pZCopMCkAZGF0YSAhPSAoKHZvaWQqKTApAG1wLT5tYV92YWx1ZXMtPnZhbHVlc1tpbmRleF0gIT0gKCh2b2lkKikwKQAlcyguLi4pAGRpcmVjdG9yeV9pdGVyYXRvcjo6ZGlyZWN0b3J5X2l0ZXJhdG9yKC4uLikALCkAKCh5aSkpAChPKE9paU5paSkpAChPKGlpKSkAKChPbGxkZCkpAChPKG5PKSkAKE8oaU8pKQAoKE9sbGRkTykpAChPKE9PTykpAE8oKE9PTykpAChPKE9PKSkAKE8oTykpAE8oTyhOTikpACgoT0spKQBQeVR5cGVfSGFzRmVhdHVyZShQeV9UWVBFKCgoUHlPYmplY3QqKSgob3ApKSkpLCAoMVVMIDw8IDI5KSkAUHlUeXBlX0hhc0ZlYXR1cmUoUHlfVFlQRSgoKFB5T2JqZWN0KikoKG9wKSkpKSwgKDFVTCA8PCAyOCkpACEodHlwZS0+dHBfZmxhZ3MgJiAoMVVMIDw8IDEzKSkAUHlUeXBlX0NoZWNrKCgoUHlPYmplY3QqKSgodHlwZSkpKSkAKE8oKSkATygoKSkATigoKSkAZGVmbGF0ZVNldERpY3Rpb25hcnkoKQBjYW5ub3QgcmV1c2UgYWxyZWFkeSBhd2FpdGVkIGFjbG9zZSgpL2F0aHJvdygpACoqIG9yIHBvdygpAHN0ZDo6X19saWJjcHBfdGxzX2NyZWF0ZSgpIGZhaWxlZCBpbiBfX2N4YV90aHJlYWRfYXRleGl0KCkAdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBpbiBzZWxlY3QoKQBmaWxlZGVzY3JpcHRvciBvdXQgb2YgcmFuZ2UgaW4gc2VsZWN0KCkAdHlwZSgpIGRvZXNuJ3Qgc3VwcG9ydCBNUk8gZW50cnkgcmVzb2x1dGlvbjsgdXNlIHR5cGVzLm5ld19jbGFzcygpAG1tYXAgYXNzaWdubWVudCBtdXN0IGJlIGxlbmd0aC0xIGJ5dGVzKCkAdGltZXMoKQBhIHR6aW5mbyBzdWJjbGFzcyBtdXN0IGltcGxlbWVudCAlcygpAHVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSAlcygpAG9wZXJhdG9yKCkAdW5yZWdpc3RlcihzaWdudW0pOiB1bnJlZ2lzdGVyIHRoZSBoYW5kbGVyIG9mIHRoZSBzaWduYWwgJ3NpZ251bScgcmVnaXN0ZXJlZCBieSByZWdpc3RlcigpAHRoZSBjbGFzcyBpbnZva2luZyBzdXBlcigpAGNvZGVjcy5vcGVuKCkAb2JqZWN0IG9mIHR5cGUgJyUuMjAwcycgaGFzIG5vIGxlbigpAGNsb2NrKCkAUmVwZWF0ZWQgY2FsbCB0byBmbHVzaCgpAG5lZ2F0aXZlIGJ1ZmZlciBzaXplIGluIHJlY3Ztc2coKQAnJVMnIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgZW51bWVyYXRlKCkAY29kZWNzLmVuY29kZSgpAGNvZGVjcy5kZWNvZGUoKQBmbG9hdCBkaXZtb2QoKQBjYW5ub3QgcmV1c2UgYWxyZWFkeSBhd2FpdGVkIF9fYW5leHRfXygpL2FzZW5kKCkAJXMuX19uZXdfXyglcykgaXMgbm90IHNhZmUsIHVzZSAlcy5fX25ld19fKCkAVW5waWNrbGVyLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQgYnkgJXMuX19pbml0X18oKQBQaWNrbGVyLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQgYnkgJXMuX19pbml0X18oKQAlUy4lUygpAE8oKQBpdGVtIHNpemUgb3V0IG9mIHJhbmdlIGZvciBDTVNHX0xFTigpAHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3I6Om9wZXJhdG9yKysoKQBjYW4gb25seSBhc3NpZ24gbm9uLWVtcHR5IHR1cGxlIHRvICVzLl9fYmFzZXNfXywgbm90ICgpAG1ybygpIHJldHVybmVkIGJhc2Ugd2l0aCB1bnN1aXRhYmxlIGxheW91dCAoJyUuNTAwcycpAG1ybygpIHJldHVybmVkIGEgbm9uLWNsYXNzICgnJS41MDBzJykAbW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgKHJlbWFpbmluZyBmb3JtYXQ6JyVzJykARGVjaW1hbCgnJXMnKQAlcygnJWMnKQAoTk8mKQAoTyYpAChPJk8mTyZPJikAKHkjKQBjYW4gb25seSBleHRlbmQgYXJyYXkgd2l0aCBhcnJheSAobm90ICIlLjIwMHMiKQBiYWQgdmFsdWUgZm9yIG9wdGlvbiAtWCBmcm96ZW5fbW9kdWxlcyAoZXhwZWN0ZWQgIm9uIiBvciAib2ZmIikAaW50ZXJuYWwgb2JqZWN0cyB0cmVlIChORVZFUiBDSEFOR0UgVEhJUyBPQkpFQ1QhKQBOT1RBVElPTigAICgAZi1zdHJpbmc6IGV4cGVjdGluZyAnfScAY2Fubm90IGhhdmUgYm90aCAnZXhjZXB0JyBhbmQgJ2V4Y2VwdConIG9uIHRoZSBzYW1lICd0cnknAGFyZ3VtZW50ICdrZXknAGFyZ3VtZW50ICdncm91cGluZGV4JwBhcmd1bWVudCAnaW5wdXQnAGV4cGVjdGVkIHN0ciBmb3IgYXJndW1lbnQgJ2V2ZW50JwBhdWRpdCgpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAnZXZlbnQnAGFyZ3VtZW50ICdzYWx0JwBhcmd1bWVudCAnemRpY3QnAF9fZ2V0Zm9ybWF0X18oKSBhcmd1bWVudCAxIG11c3QgYmUgJ2RvdWJsZScgb3IgJ2Zsb2F0JwBhcmd1bWVudCAnZm9ybWF0JwBhcmd1bWVudCAnY29fY29uc3RzJwBhcmd1bWVudCAnZXJyb3JzJwBhcmd1bWVudCAnY29fY2VsbHZhcnMnAGFyZ3VtZW50ICdjb19mcmVldmFycycAYXJndW1lbnQgJ2dsb2JhbHMnAGFyZ3VtZW50ICdjb192YXJuYW1lcycAYXJndW1lbnQgJ2NvX25hbWVzJwBpbnZhbGlkIG9jdGFsIGVzY2FwZSBzZXF1ZW5jZSAnXCUuM3MnAG5hbWUgdHVwbGVzIG11c3QgY29udGFpbiBvbmx5IHN0cmluZ3MsIG5vdCAnJS41MDBzJwB1bmtub3duIGVycm9yIGhhbmRsZXIgbmFtZSAnJS40MDBzJwBkaXIoKTogZXhwZWN0ZWQga2V5cygpIG9mIGxvY2FscyB0byBiZSBhIGxpc3QsIG5vdCAnJS4yMDBzJwBkZWNvZGVyIHNob3VsZCByZXR1cm4gYSBzdHJpbmcgcmVzdWx0LCBub3QgJyUuMjAwcycAX3dhcm5pbmdzLm9uY2VyZWdpc3RyeSBtdXN0IGJlIGEgZGljdCwgbm90ICclLjIwMHMnAG1vZHVsZV9nbG9iYWxzIG11c3QgYmUgYSBkaWN0LCBub3QgJyUuMjAwcycAc2Vjb25kIGl0ZW0gb2YgdGhlIHR1cGxlIHJldHVybmVkIGJ5IF9fZ2V0bmV3YXJnc19leF9fIG11c3QgYmUgYSBkaWN0LCBub3QgJyUuMjAwcycAZW5jb2RlciBzaG91bGQgcmV0dXJuIGEgYnl0ZXMgb2JqZWN0LCBub3QgJyUuMjAwcycAaWxsZWdhbCBkZWNvZGVyIHN0YXRlOiB0aGUgZmlyc3QgaXRlbSBzaG91bGQgYmUgYSBieXRlcyBvYmplY3QsIG5vdCAnJS4yMDBzJwBwZWVrKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBieXRlcyBvYmplY3QsIG5vdCAnJS4yMDBzJwByZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMgb2JqZWN0LCBub3QgJyUuMjAwcycAdW5kZXJseWluZyByZWFkKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBieXRlcyBvYmplY3QsIG5vdCAnJS4yMDBzJwByZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgc3RyIG9iamVjdCwgbm90ICclLjIwMHMnAGFyZ3VtZW50IHNob3VsZCBiZSBpbnRlZ2VyIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0LCBub3QgJyUuMjAwcycAdW5kZXJseWluZyAlcygpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMtbGlrZSBvYmplY3QsIG5vdCAnJS4yMDBzJwBzdHJpbmcgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzLCBub3QgJyUuMjAwcycAX19zbG90c19fIGl0ZW1zIG11c3QgYmUgc3RyaW5ncywgbm90ICclLjIwMHMnAHNlcXVlbmNlIGluZGV4IG11c3QgYmUgaW50ZWdlciwgbm90ICclLjIwMHMnAGludCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIGEgYnl0ZXMtbGlrZSBvYmplY3Qgb3IgYSByZWFsIG51bWJlciwgbm90ICclLjIwMHMnAGZsb2F0KCkgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIHJlYWwgbnVtYmVyLCBub3QgJyUuMjAwcycAY29tcGxleCgpIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJwBjb21wbGV4KCkgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIsIG5vdCAnJS4yMDBzJwBhdHRyaWJ1dGUgbmFtZSBtdXN0IGJlIHN0cmluZywgbm90ICclLjIwMHMnAF93YXJuaW5ncy5kZWZhdWx0YWN0aW9uIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAnJS4yMDBzJwBhcmd1bWVudCBzaG91bGQgYmUgaW50ZWdlciBvciBOb25lLCBub3QgJyUuMjAwcycAX19pbml0X18oKSBzaG91bGQgcmV0dXJuIE5vbmUsIG5vdCAnJS4yMDBzJwBfX2dldG5ld2FyZ3NfZXhfXyBzaG91bGQgcmV0dXJuIGEgdHVwbGUsIG5vdCAnJS4yMDBzJwBfX2dldG5ld2FyZ3NfXyBzaG91bGQgcmV0dXJuIGEgdHVwbGUsIG5vdCAnJS4yMDBzJwBmaXJzdCBpdGVtIG9mIHRoZSB0dXBsZSByZXR1cm5lZCBieSBfX2dldG5ld2FyZ3NfZXhfXyBtdXN0IGJlIGEgdHVwbGUsIG5vdCAnJS4yMDBzJwBtZW1vcnl2aWV3OiBhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJyUuMjAwcycAdHppbmZvLiVzKCkgbXVzdCByZXR1cm4gTm9uZSBvciB0aW1lZGVsdGEsIG5vdCAnJS4yMDBzJwAncGF0aCcgbXVzdCBiZSAnc3RyJywgbm90ICclLjIwMHMnAGV4cGVjdGVkICdzdHInLCBub3QgJyUuMjAwcycAZXhwZWN0ZWQgc3RyaW5nIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0LCBnb3QgJyUuMjAwcycAdW5leHBlY3RlZCByZXR1cm4gdHlwZSBmcm9tIGFzX2ludGVnZXJfcmF0aW8oKTogZXhwZWN0ZWQgdHVwbGUsIGdvdCAnJS4yMDBzJwBDYW5ub3QgbmVzdCBCYXNlRXhjZXB0aW9ucyBpbiAnJS4yMDBzJwBjYW4ndCBtdWx0aXBseSBzZXF1ZW5jZSBieSBub24taW50IG9mIHR5cGUgJyUuMjAwcycAVW5rbm93biBmb3JtYXQgY29kZSAnXHgleCcgZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnAFVua25vd24gZm9ybWF0IGNvZGUgJyVjJyBmb3Igb2JqZWN0IG9mIHR5cGUgJyUuMjAwcycASW52YWxpZCBmb3JtYXQgc3BlY2lmaWVyICclVScgZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnAF9fZGljdF9fIG11c3QgYmUgc2V0IHRvIGEgZGljdGlvbmFyeSwgbm90IGEgJyUuMjAwcycAYmFkIG9wZXJhbmQgdHlwZSBmb3IgdW5hcnkgfjogJyUuMjAwcycAdmFsdWUgdG9vIGxhcmdlIHRvIGNvbnZlcnQgdG8gZmxvYXQ6ICclLjIwMHMnAGNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byBmbG9hdDogJyUuMjAwcycAdW5oYXNoYWJsZSB0eXBlOiAnJS4yMDBzJwBiYWQgb3BlcmFuZCB0eXBlIGZvciB1bmFyeSAtOiAnJS4yMDBzJwBiYWQgb3BlcmFuZCB0eXBlIGZvciB1bmFyeSArOiAnJS4yMDBzJwBiYWQgb3BlcmFuZCB0eXBlIGZvciBhYnMoKTogJyUuMjAwcycAYXJndW1lbnQgc2hvdWxkIGJlIGEgY29udGlndW91cyBidWZmZXIsIG5vdCAnJS4xMDBzJwBhcmd1bWVudCBzaG91bGQgYmUgYnl0ZXMsIGJ1ZmZlciBvciBBU0NJSSBzdHJpbmcsIG5vdCAnJS4xMDBzJwBhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJyUuMTAwcycAJSViIHJlcXVpcmVzIGEgYnl0ZXMtbGlrZSBvYmplY3QsIG9yIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgX19ieXRlc19fLCBub3QgJyUuMTAwcycAZXhwZWN0ZWQgdHVwbGUgZm9yIGNsb3N1cmUsIGdvdCAnJS4xMDBzJwBFcnJvciBjYWxsaW5nIF9fc2V0X25hbWVfXyBvbiAnJS4xMDBzJyBpbnN0YW5jZSAlUiBpbiAnJS4xMDBzJwB0eXBlX3RyYXZlcnNlKCkgY2FsbGVkIG9uIG5vbi1oZWFwIHR5cGUgJyUuMTAwcycAaXRlcigpIHJldHVybmVkIG5vbi1pdGVyYXRvciBvZiB0eXBlICclLjEwMHMnAF9fYXdhaXRfXygpIHJldHVybmVkIG5vbi1pdGVyYXRvciBvZiB0eXBlICclLjEwMHMnAGFpdGVyKCkgcmV0dXJuZWQgbm90IGFuIGFzeW5jIGl0ZXJhdG9yIG9mIHR5cGUgJyUuMTAwcycAQ2Fubm90IGV4dGVuZCBhbiBpbmNvbXBsZXRlIHR5cGUgJyUuMTAwcycAJyVzJyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICclLjEwMHMnIGFuZCAnJS4xMDBzJwB1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGVzKHMpIG9yIGNvbWJpbmF0aW9uIG9mIHR5cGVzOiAnJS4xMDBzJyBhbmQgJyUuMTAwcycAdW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMpIGZvciAlLjEwMHM6ICclLjEwMHMnIGFuZCAnJS4xMDBzJwBkZXNjcmlwdG9yICclVicgcmVxdWlyZXMgYSBzdWJ0eXBlIG9mICclLjEwMHMnIGJ1dCByZWNlaXZlZCAnJS4xMDBzJwBzdHIoKSBvciByZXByKCkgcmV0dXJuZWQgJyUuMTAwcycAZGVzY3JpcHRvciAnJVYnIHJlcXVpcmVzIGEgJyUuMTAwcycgb2JqZWN0IGJ1dCByZWNlaXZlZCBhICclLjEwMHMnAHVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZShzKSBmb3IgJS4xMDBzOiAnJS4xMDBzJywgJyUuMTAwcycsICclLjEwMHMnACVzKCkgcmVxdWlyZXMgYSBkaWN0IGFyZ3VtZW50LCBub3QgJyVzJwBjYXRlZ29yeSBtdXN0IGJlIGEgV2FybmluZyBzdWJjbGFzcywgbm90ICclcycAJXMuX19iYXNlc19fIG11c3QgYmUgdHVwbGUgb2YgY2xhc3Nlcywgbm90ICclcycAbm90ZSBtdXN0IGJlIGEgc3RyLCBub3QgJyVzJwB0emluZm8udHpuYW1lKCkgbXVzdCByZXR1cm4gTm9uZSBvciBhIHN0cmluZywgbm90ICclcycAYnlyZWYoKSBhcmd1bWVudCBtdXN0IGJlIGEgY3R5cGVzIGluc3RhbmNlLCBub3QgJyVzJwBjYW4gb25seSBhc3NpZ24gc3RyaW5nIHRvICVzLl9fcXVhbG5hbWVfXywgbm90ICclcycAY2FuIG9ubHkgYXNzaWduIHN0cmluZyB0byAlcy5fX25hbWVfXywgbm90ICclcycAZXhwZWN0ZWQgdHJhY2ViYWNrIG9iamVjdCwgZ290ICclcycAZXhwZWN0ZWQgdHJhY2ViYWNrIG9iamVjdCBvciBOb25lLCBnb3QgJyVzJwBpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgJyVzJwBzdHJpbmcgYXJndW1lbnQgZXhwZWN0ZWQsIGdvdCAnJXMnAHVua25vd24gZXZlbnQgJyVzJwBtZW1vcnl2aWV3OiBpbnZhbGlkIHZhbHVlIGZvciBmb3JtYXQgJyVzJwBtZW1vcnl2aWV3OiBpbnZhbGlkIHR5cGUgZm9yIGZvcm1hdCAnJXMnACVzIGFzc2lnbm1lbnQ6ICclcycgb2JqZWN0IGxheW91dCBkaWZmZXJzIGZyb20gJyVzJwAlcyBhc3NpZ25tZW50OiAnJXMnIGRlYWxsb2NhdG9yIGRpZmZlcnMgZnJvbSAnJXMnAG5vbmVtcHR5IF9fc2xvdHNfXyBub3Qgc3VwcG9ydGVkIGZvciBzdWJ0eXBlIG9mICclcycAJyUuMjAwcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVzJwB0emluZm8gYXJndW1lbnQgbXVzdCBiZSBOb25lIG9yIG9mIGEgdHppbmZvIHN1YmNsYXNzLCBub3QgdHlwZSAnJXMnAGNhbm5vdCBzZXQgJVIgYXR0cmlidXRlIG9mIGltbXV0YWJsZSB0eXBlICclcycAY2Fubm90IHNldCAnJXMnIGF0dHJpYnV0ZSBvZiBpbW11dGFibGUgdHlwZSAnJXMnAGNhbm5vdCBkZWxldGUgJyVzJyBhdHRyaWJ1dGUgb2YgaW1tdXRhYmxlIHR5cGUgJyVzJwBjYW5ub3Qgc2V0ICdfX2Fubm90YXRpb25zX18nIGF0dHJpYnV0ZSBvZiBpbW11dGFibGUgdHlwZSAnJXMnAHVuZGVmaW5lZCBjaGFyYWN0ZXIgbmFtZSAnJXMnAGV4cGVjdGVkICclcycAJXM6ICclcycAdW5rbm93biBtb2RlOiAnJXMnAGludmFsaWQgbW9kZTogJyVzJwBhcmd1bWVudCAnbmFtZXNwYWNlX3NlcGFyYXRvcicAYXJndW1lbnQgJ2J1ZmZlcicAYXJndW1lbnQgJ2J5dGVvcmRlcicAYXJndW1lbnQgJ29yZGVyJwBhcmd1bWVudCAnaW5kZXhncm91cCcAYXJndW1lbnQgJ3BlcnNvbicAJ2Jsb2NrLWxpdGVyYWwnACdhbHBoYScsICdiZXRhJywgJ2NhbmRpZGF0ZScsIG9yICdmaW5hbCcAJ3NlbmQnLCAncmVjdicsIG9yICdib3RoJwBhcmd1bWVudCAncGF0aCcAYXJndW1lbnQgJ2VuY29kaW5nJwBieXRlb3JkZXIgbXVzdCBiZSBlaXRoZXIgJ2xpdHRsZScgb3IgJ2JpZycAX19uZXdfXygpIGNhbGxlZCB3aXRoIG5vbi10eXBlICdzZWxmJwBjb21waWxlKCkgbW9kZSBtdXN0IGJlICdleGVjJywgJ2V2YWwnLCAnc2luZ2xlJyBvciAnZnVuY190eXBlJwBhcmd1bWVudCAnbmV3bGluZScAYXJndW1lbnQgJ3RiX2ZyYW1lJwBhcmd1bWVudCAnY29fcXVhbG5hbWUnAGFyZ3VtZW50ICdjb19maWxlbmFtZScAYXJndW1lbnQgJ2NvX25hbWUnAGFyZ3VtZW50ICduYW1lJwBzeW10YWJsZSgpIGFyZyAzIG11c3QgYmUgJ2V4ZWMnIG9yICdldmFsJyBvciAnc2luZ2xlJwBjb21waWxlKCkgbW9kZSBtdXN0IGJlICdleGVjJywgJ2V2YWwnIG9yICdzaW5nbGUnAGFyZ3VtZW50ICdjb19leGNlcHRpb250YWJsZScAYXJndW1lbnQgJ2NvX2xpbmV0YWJsZScAZW51bWVyYXRlKCkgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCAnaXRlcmFibGUnAGFyZ3VtZW50ICdtb2RlJwBhcmd1bWVudCAnY29fY29kZScAYXJndW1lbnQgJ2NvZGUnAGFyZ3VtZW50ICdzb3VyY2UnAG1lbW9yeXZpZXc6IGhhc2hpbmcgaXMgcmVzdHJpY3RlZCB0byBmb3JtYXRzICdCJywgJ2InIG9yICdjJwBTaWduIG5vdCBhbGxvd2VkIHdpdGggaW50ZWdlciBmb3JtYXQgc3BlY2lmaWVyICdjJwBBbHRlcm5hdGUgZm9ybSAoIykgbm90IGFsbG93ZWQgd2l0aCBpbnRlZ2VyIGZvcm1hdCBzcGVjaWZpZXIgJ2MnAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlICdcJWMnAGYtc3RyaW5nOiBjbG9zaW5nIHBhcmVudGhlc2lzICclYycgZG9lcyBub3QgbWF0Y2ggb3BlbmluZyBwYXJlbnRoZXNpcyAnJWMnACclYycgZXhwZWN0ZWQgYWZ0ZXIgJyVjJwBmLXN0cmluZzogZXhwcmVzc2lvbiByZXF1aXJlZCBiZWZvcmUgJyVjJwBjYW5ub3QgdXNlIGEgdW5pY29kZSBhcnJheSB0byBpbml0aWFsaXplIGFuIGFycmF5IHdpdGggdHlwZWNvZGUgJyVjJwBjYW5ub3QgdXNlIGEgc3RyIHRvIGluaXRpYWxpemUgYW4gYXJyYXkgd2l0aCB0eXBlY29kZSAnJWMnAGYtc3RyaW5nOiB1bm1hdGNoZWQgJyVjJwBiYWQgSUQ6IEFsbG9jYXRlZCB1c2luZyBBUEkgJyVjJywgdmVyaWZpZWQgdXNpbmcgQVBJICclYycAYXJndW1lbnQgJ2RhdGEnAGYtc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyOiBleHBlY3RlZCAncycsICdyJywgb3IgJ2EnAHR5cGUgb2JqZWN0ICclcycgaGFzIG5vIGF0dHJpYnV0ZSAnX19hbm5vdGF0aW9uc19fJwBcJwAlLjQwMHMgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJyVVJwBjb21wcmVoZW5zaW9uIGlubmVyIGxvb3AgY2Fubm90IHJlYmluZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gdGFyZ2V0ICclVScAJyUuNTBzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnACclLjEwMHMnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclVScAbW9kdWxlIGhhcyBubyBhdHRyaWJ1dGUgJyVVJwB0eXBlIG9iamVjdCAnJS41MHMnIGhhcyBubyBhdHRyaWJ1dGUgJyVVJwBtb2R1bGUgJyVVJyBoYXMgbm8gYXR0cmlidXRlICclVScAYXNzaWdubWVudCBleHByZXNzaW9uIGNhbm5vdCByZWJpbmQgY29tcHJlaGVuc2lvbiBpdGVyYXRpb24gdmFyaWFibGUgJyVVJwAlVSgpIGdvdCBzb21lIHBvc2l0aW9uYWwtb25seSBhcmd1bWVudHMgcGFzc2VkIGFzIGtleXdvcmQgYXJndW1lbnRzOiAnJVUnACVVKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJyVTJwAlVSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclUycAJVUoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICclUycAc3RyaW5nIGFyZ3VtZW50IGluIHRoZSB0aGlyZCBwb3NpdGlvbiBtdXN0IGJlICdGJywgJ24nIG9yICdOJwBvcmRlciBtdXN0IGJlICdDJywgJ0YnIG9yICdBJwBtZW1vcnl2aWV3OiBkZXN0aW5hdGlvbiBmb3JtYXQgbXVzdCBiZSBhIG5hdGl2ZSBzaW5nbGUgY2hhcmFjdGVyIGZvcm1hdCBwcmVmaXhlZCB3aXRoIGFuIG9wdGlvbmFsICdAJwB3aXRoIEJhcnJ5IGFzIEJERkwsIHVzZSAnPD4nIGluc3RlYWQgb2YgJyE9JwBleHByZXNzaW9uIGV4cGVjdGVkIGFmdGVyIGRpY3Rpb25hcnkga2V5IGFuZCAnOicAZXhwZWN0ZWQgJzonAG5vIGxvY2FscyBmb3VuZCBkdXJpbmcgJ2ltcG9ydCAqJwBmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgY2Fubm90IGluY2x1ZGUgJyMnADogX0xJQkNQUF9BU1NFUlQgJwAuIERpZCB5b3UgbWVhbjogJwBvcGVyYXRvciYAb3BlcmF0b3ImJgAgJiYAICYAb3BlcmF0b3IlACUlAHJvdW5kcz0ldSQAJDYkJXMlLipzJAAkNSQlcyUuKnMkACQ2JAAkNSQAJDEkAEVtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyICQAaXkjAE8hcyMAZXhwZWN0ZWQgYW4gRWxlbWVudCwgbm90ICIlLjIwMHMiAGV4cGVjdGVkIHNlcXVlbmNlLCBub3QgIiUuMjAwcyIAICgrJTZkIGJ5dGVzICVzfCVkLCB4bWxwYXJzZS5jOiVkKSAlKnMiAGF0IHJvb3QgIiVzIgBhdHRlbXB0aW5nIHJlY3Vyc2lvbiBpbnRvICIlcyIAY2Fubm90IGFjY2VzcyBwYXRoICIlcyIAUHlDYXBzdWxlX0ltcG9ydCBjb3VsZCBub3QgaW1wb3J0IG1vZHVsZSAiJXMiAElnbm9yaW5nIHVuaW1wb3J0YWJsZSAkUFlUSE9OQlJFQUtQT0lOVDogIiVzIgBcIgA+IgAgIEZpbGUgIgBvcGVyYXRvciEAVGFzayB3YXMgZGVzdHJveWVkIGJ1dCBpdCBpcyBwZW5kaW5nIQBQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQBEZWxldGVkIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQBPTyEATyZPIQBPIU8hACB8IAB7IAB0aHJvdyAAYXQgbW9zdCAAYXQgbGVhc3QgAG5vZXhjZXB0IAAgaXMgbm90IABhd2FpdCAAIGF0IG9mZnNldCAAIGlzIAAgICAgICAgIGRlcHRoICU2ZCBoYXMgACU0OHMgAG9wZXJhdG9yIAByZWZlcmVuY2UgdGVtcG9yYXJ5IGZvciAAY29kZWN2dF9ieW5hbWU8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6Y29kZWN2dF9ieW5hbWUgZmFpbGVkIHRvIGNvbnN0cnVjdCBmb3IgAHRpbWVfcHV0X2J5bmFtZSBmYWlsZWQgdG8gY29uc3RydWN0IGZvciAAdGltZV9nZXRfYnluYW1lIGZhaWxlZCB0byBjb25zdHJ1Y3QgZm9yIABtb25leXB1bmN0X2J5bmFtZSBmYWlsZWQgdG8gY29uc3RydWN0IGZvciAAbnVtcHVuY3RfYnluYW1lPHdjaGFyX3Q+OjpudW1wdW5jdF9ieW5hbWUgZmFpbGVkIHRvIGNvbnN0cnVjdCBmb3IgAG51bXB1bmN0X2J5bmFtZTxjaGFyPjo6bnVtcHVuY3RfYnluYW1lIGZhaWxlZCB0byBjb25zdHJ1Y3QgZm9yIABjb2xsYXRlX2J5bmFtZTxjaGFyPjo6Y29sbGF0ZV9ieW5hbWUgZmFpbGVkIHRvIGNvbnN0cnVjdCBmb3IgAGN0eXBlX2J5bmFtZTx3Y2hhcl90Pjo6Y3R5cGVfYnluYW1lIGZhaWxlZCB0byBjb25zdHJ1Y3QgZm9yIABjdHlwZV9ieW5hbWU8Y2hhcj46OmN0eXBlX2J5bmFtZSBmYWlsZWQgdG8gY29uc3RydWN0IGZvciAAY29sbGF0ZV9ieW5hbWU8d2NoYXJfdD46OmNvbGxhdGVfYnluYW1lKHNpemVfdCByZWZzKSBmYWlsZWQgdG8gY29uc3RydWN0IGZvciAAdGVtcGxhdGUgcGFyYW1ldGVyIG9iamVjdCBmb3IgAHR5cGVpbmZvIGZvciAAdGhyZWFkLWxvY2FsIHdyYXBwZXIgcm91dGluZSBmb3IgAHRocmVhZC1sb2NhbCBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciAAdHlwZWluZm8gbmFtZSBmb3IgAGNvbnN0cnVjdGlvbiB2dGFibGUgZm9yIABndWFyZCB2YXJpYWJsZSBmb3IgACBhc3luYyBmb3IgAFZUVCBmb3IgACBvciAAY292YXJpYW50IHJldHVybiB0aHVuayB0byAAbm9uLXZpcnR1YWwgdGh1bmsgdG8gACBub3QgaW4gAGludm9jYXRpb24gZnVuY3Rpb24gZm9yIGJsb2NrIGluIAAoeWllbGQgZnJvbSAACiAgICBbJWQ6IGh1ZmYrbXRmIABhbGlnbm9mIABzaXplb2YgACBpZiAAIGVsc2UgACAgICAgIHBhc3MgJWQ6IHNpemUgaXMgJWQsIGdycCB1c2VzIGFyZSAAICAgIFRoZSAlZCBwYWQgYnl0ZXMgYXQgdGFpbD0lcCBhcmUgACAgICBUaGUgJWQgcGFkIGJ5dGVzIGF0IHAtJWQgYXJlIAAiLCBsaW5lIAA+IHR5cGVuYW1lIABpbml0aWFsaXplciBmb3IgbW9kdWxlIAAgIEZpbGUgAGtleXdvcmQgACBhbmQgACh5aWVsZCAAdHlwZWlkIAByYW5kb20gZGV2aWNlIG5vdCBzdXBwb3J0ZWQgAHVuc2lnbmVkIABFeGNlcHRpb24gaW4gdGhyZWFkIAAlZCAAbGFtYmRhIAAgXiAAT1BFTiAASEFOR1VMIFNZTExBQkxFIAAgQCAAID8gAD4+PiAAID4+IAAgPiAAID49IAAgPT0gACA8PSAAIDo9IAAgIT0gACAgc3lzLiVzID0gACAgc3RkbGliIGRpciA9IAAgIHByb2dyYW0gbmFtZSA9IAAgIFBZVEhPTlBBVEggPSAAICBQWVRIT05IT01FID0gACA8PCAAIDwgADogb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50OiAAOiBvcHRpb24gZG9lcyBub3QgdGFrZSBhbiBhcmd1bWVudDogADogb3B0aW9uIGlzIGFtYmlndW91czogAApFeHRlbnNpb24gbW9kdWxlczogADwlZD4lcyAlbiVzJXMlLjBkJXM6IABGYXRhbCBQeXRob24gZXJyb3I6IAAlczolZDogZXJyb3I6IAA6IHVucmVjb2duaXplZCBvcHRpb246IABFeGNlcHRpb24gaWdub3JlZCBpbjogAEZhdGFsIFB5dGhvbiBlcnJvciBmcm9tIHVuZXhwZWN0ZWQgc2lnbnVtOiAAICh0b3RhbDogAGYtc3RyaW5nOiAAJXM6JWQ6IHdhcm5pbmc6IABQeXRob24gcnVudGltZSBzdGF0ZTogAGFyZ3VtZW50ICV6ZDogACVzOiVkOiAAClRPIEZJWDogAEhBTFQ6IABFUlJPUjogAElORk86IABXQVJOSU5HOiAAb2JqZWN0IHJlcHIgICAgIDogACAvLyAAIC8gACcgZmFpbGVkLiAAc2l6ZW9mLi4uIAAgLi4uIAAgLSAAJXMsIABUeXBlRXJyb3I6IHByaW50X2V4Y2VwdGlvbigpOiBFeGNlcHRpb24gZXhwZWN0ZWQgZm9yIHZhbHVlLCAAc2VsZWN0b3JzICVkLCAAY29kZSBsZW5ndGhzICVkLCAAICAgICAgYnl0ZXM6IG1hcHBpbmcgJWQsIAAgKyAAICoqIAAgKiAAKCVzKSAAJS4yMDBzKCkgACAmIAAgJSAAb3BlcmF0b3IiIiAAICAgICAgICAgIAAgICAgZmluYWwgY29tYmluZWQgQ1JDID0gMHglMDh4CiAgIAAJCg0MCyAAGwANAAwAdHogLT4gY29udmVydCB0byBsb2NhbCB0aW1lIGluIG5ldyB0aW1lem9uZSB0egoARmFpbGVkIGNoZWNraW5nIGlmIGFyZ3ZbMF0gaXMgYW4gaW1wb3J0IHBhdGggZW50cnkKACMgY2FuJ3QgaW1wb3J0IHppcGltcG9ydAoAWFhYIHJlYWRvYmplY3QgY2FsbGVkIHdpdGggZXhjZXB0aW9uIHNldAoAIyBjbGVhbnVwWzNdIHdpcGluZyBzeXMKAEFyZ3VtZW50IGV4cGVjdGVkIGZvciB0aGUgJWxzIG9wdGlvbnMKACMgY2xlYW51cFszXSB3aXBpbmcgYnVpbHRpbnMKAHVua25vd24gb3B0aW9uICVscwoAIyBjbGVhciBzeXMuYXVkaXQgaG9va3MKACU2ZCB1bnJlc29sdmVkIHN0cmluZ3MKAGltcG9ydCB0aW1lOiAlOWxkIHwgJTEwbGQgfCAlKnMlcwoAJXMlcyVzJXMlcyVzJXMlcwoAYW5kICV6ZCBtb3JlIGV4Y2VwdGlvbiVzCgAjIGNsZWFyIHN5cy4lcwoAIyByZXN0b3JlIHN5cy4lcwoAUHl0aG9uICVzCgBQeXRob24gJXMgb24gJXMKACVTOiBjYW4ndCBvcGVuIGZpbGUgJVI6IFtFcnJubyAlZF0gJXMKACMgICBjbGVhclsyXSAlcwoAIyAgIGNsZWFyWzFdICVzCgAlczogJXMKAG9iamVjdCB0eXBlIG5hbWU6ICVzCgAgICAgICAlcwoAUHl0aG9uICVzCiVzCgBsb3N0IHN5cy5zdGRlcnIKAFB5VGhyZWFkU3RhdGVfQ2xlYXI6IHdhcm5pbmc6IHRocmVhZCBzdGlsbCBoYXMgYSBnZW5lcmF0b3IKACMgY2FuJ3QgaW1wb3J0IHppcGltcG9ydC56aXBpbXBvcnRlcgoAb2JqZWN0IGFkZHJlc3MgIDogJXAKAG9iamVjdCB0eXBlICAgICA6ICVwCgBleHBlY3RlZCBsb25nIG9wdGlvbgoAQXJndW1lbnQgZXhwZWN0ZWQgZm9yIHRoZSAtJWMgb3B0aW9uCgBFcnJvciBzZXR0aW5nIExDX0NUWVBFLCBza2lwcGluZyBDIGxvY2FsZSBjb2VyY2lvbgoALUogaXMgcmVzZXJ2ZWQgZm9yIEp5dGhvbgoAaW1wb3J0IF9pbXAgIyBidWlsdGluCgBDb3VsZCBub3QgYWNjZXNzIHJ1bnB5Ll9ydW5fbW9kdWxlX2FzX21haW4KAENvdWxkIG5vdCBjcmVhdGUgYXJndW1lbnRzIGZvciBydW5weS5fcnVuX21vZHVsZV9hc19tYWluCgBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIgIyBmcm96ZW4KACAgICB0b28gcmVwZXRpdGl2ZTsgdXNpbmcgZmFsbGJhY2sgc29ydGluZyBhbGdvcml0aG0KACMgaW5zdGFsbGluZyB6aXBpbXBvcnQgaG9vawoAIyBpbnN0YWxsZWQgemlwaW1wb3J0IGhvb2sKACAgZW52aXJvbm1lbnQgPSAlaQoAICBzYWZlX3BhdGggPSAlaQoAICBpbXBvcnQgc2l0ZSA9ICVpCgAgIHVzZXIgc2l0ZSA9ICVpCgAgIGlzIGluIGJ1aWxkIHRyZWUgPSAlaQoAICBpc29sYXRlZCA9ICVpCgAgIEdhcmJhZ2UtY29sbGVjdGluZwoAc3lzLmV4Y2VwdGhvb2sgaXMgbWlzc2luZwoAICAgICAgJWQgd29yaywgJWQgYmxvY2ssIHJhdGlvICU1LjJmCgAlUzogJVIgaXMgYSBkaXJlY3RvcnksIGNhbm5vdCBjb250aW51ZQoAdW5zcGVjaWZpZWQgZnV0dXJlX2VycmMgdmFsdWUKACAgICAgICVkIGluIGJsb2NrLCAlZCBhZnRlciBNVEYgJiAxLTIgY29kaW5nLCAlZCsyIHN5bXMgaW4gdXNlCgBtcGRfc2V0bWluYWxsb2M6IGlnbm9yaW5nIHJlcXVlc3QgdG8gc2V0IE1QRF9NSU5BTExPQyBhIHNlY29uZCB0aW1lCgBQeVRocmVhZFN0YXRlX0NsZWFyOiB3YXJuaW5nOiB0aHJlYWQgc3RpbGwgaGFzIGEgZnJhbWUKAENvdWxkIG5vdCBpbXBvcnQgcnVucHkgbW9kdWxlCgBweXRob246IENhbid0IHJlb3BlbiAucHljIGZpbGUKAGltcG9ydCB0aW1lOiBzZWxmIFt1c10gfCBjdW11bGF0aXZlIHwgaW1wb3J0ZWQgcGFja2FnZQoAQ291bGQgbm90IGNvbnZlcnQgbW9kdWxlIG5hbWUgdG8gdW5pY29kZQoAUGFyc2luZyBhcmd1bWVudCAlemQKACAgRmlsZSAiJVMiLCBsaW5lICV6ZAoAZ2M6IG9iamVjdHMgaW4gZWFjaCBnZW5lcmF0aW9uOiVzCmdjOiBvYmplY3RzIGluIHBlcm1hbmVudCBnZW5lcmF0aW9uOiAlemQKACBmb3VuZAoAJWMlbGQKAG9iamVjdCByZWZjb3VudCA6ICVsZAoAICAgICV6dSBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZAoAZ2M6IGRvbmUsICV6ZCB1bnJlYWNoYWJsZSwgJXpkIHVuY29sbGVjdGFibGUsICUuNGZzIGVsYXBzZWQKACAgICAgICAgJWQgcG9pbnRlcnMsICVkIHNvcnRlZCwgJWQgc2Nhbm5lZAoAICAgICAgICBxc29ydCBbMHgleCwgMHgleF0gICBkb25lICVkICAgdGhpcyAlZAoAY29kZXMgJWQKACUuM3MgJS4zcyUzZCAlLjJkOiUuMmQ6JS4yZCAlZAoAICAgIGJsb2NrICVkOiBjcmMgPSAweCUwOHgsIGNvbWJpbmVkIENSQyA9IDB4JTA4eCwgc2l6ZSA9ICVkCgBYWFggbGluZW5vOiAlZCwgb3Bjb2RlOiAlZAoAJXMJJXMJJXMJJXMJJWQJJWQKAFVua25vd24gb3B0aW9uOiAtJWMKAHB5dGhvbjogZmFpbGVkIHRvIHNldCBfX21haW5fXy5fX2xvYWRlcl9fCgBGYWlsZWQgY2FsbGluZyBzeXMuX19pbnRlcmFjdGl2ZWhvb2tfXwoAIyBjbGVhciBidWlsdGlucy5fCgAgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVsZCBtb3JlIHRpbWVzXQoAICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCAlbGQgbW9yZSB0aW1lXQoAICBdCgAgIHN5cy5wYXRoID0gWwoARXhjZXB0aW9uIGlnbm9yZWQgaW4gbV9jbGVhciBvZiBtb2R1bGUlcyVWCgAjIGRlc3Ryb3kgJVUKACAgRmlsZSAiJVUiLCBsaW5lICVkLCBpbiAlVQoAIyBjbGVhbnVwWzJdIHJlbW92aW5nICVVCgAjIGNsZWFudXBbM10gd2lwaW5nICVVCgBDb3VsZCBub3Qgb3BlbiBQWVRIT05TVEFSVFVQCgBMCgAgQUJPUlRJTkcKAGdjOiAlcyA8JXMgJXA+CgAgIDxubyBQeXRob24gZnJhbWU+CgA8b2JqZWN0IGF0ICVwIGlzIGZyZWVkPgoACk9yaWdpbmFsIGV4Y2VwdGlvbiB3YXM6CgBQeXRob24gcGF0aCBjb25maWd1cmF0aW9uOgoARXJyb3IgaW4gc3lzLmV4Y2VwdGhvb2s6CgBQeW9kaWRlOiBJbnRlcm5hbCBlcnJvciBvY2N1cnJlZCB3aGlsZSBmb3JtYXR0aW5nIHRyYWNlYmFjazoKACdpbXBvcnQgd2FybmluZ3MnIGZhaWxlZDsgdHJhY2ViYWNrOgoAVW5hYmxlIHRvIGRlY29kZSB0aGUgY29tbWFuZCBmcm9tIHRoZSBjb21tYW5kIGxpbmU6CgB1bmV4cGVjdGVkIHJlc3VsdCBvZiBjcmVhdGUgYXJndW1lbnQgJXpkOgoARXhjZXB0aW9uIGlnbm9yZWQgd2hlbiB0cnlpbmcgdG8gd3JpdGUgdG8gdGhlIHNpZ25hbCB3YWtldXAgZmQ6CgBub3QgYWxsIEZPUkJJRERFTkJZVEUgKDB4JTAyeCk6CgBNZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKAFN0YWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKAEV4Y2VwdGlvbiBHcm91cCBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CgBJMDEKAEkwMAoAICAgIEJlY2F1c2UgbWVtb3J5IGlzIGNvcnJ1cHRlZCBhdCB0aGUgc3RhcnQsIHRoZSBjb3VudCBvZiBieXRlcyByZXF1ZXN0ZWQKICAgICAgIG1heSBiZSBib2d1cywgYW5kIGNoZWNraW5nIHRoZSB0cmFpbGluZyBwYWQgYnl0ZXMgbWF5IHNlZ2ZhdWx0LgoAVHJ5IGBweXRob24gLWgnIGZvciBtb3JlIGluZm9ybWF0aW9uLgoARk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuCgBQeXRob24gcnVudGltZSBpbml0aWFsaXplZCB3aXRoIExDX0NUWVBFPUMgKGEgbG9jYWxlIHdpdGggZGVmYXVsdCBBU0NJSSBlbmNvZGluZyksIHdoaWNoIG1heSBjYXVzZSBVbmljb2RlIGNvbXBhdGliaWxpdHkgcHJvYmxlbXMuIFVzaW5nIEMuVVRGLTgsIEMudXRmOCwgb3IgVVRGLTggKGlmIGF2YWlsYWJsZSkgYXMgYWx0ZXJuYXRpdmUgVW5pY29kZS1jb21wYXRpYmxlIGxvY2FsZXMgaXMgcmVjb21tZW5kZWQuCgBnYzogY29sbGVjdGluZyBnZW5lcmF0aW9uICVkLi4uCgAgICAgICAgIHJlY29uc3RydWN0aW5nIGJsb2NrIC4uLgoAICAgICAgICBidWNrZXQgc29ydGluZyAuLi4KACAgICAgICAgbWFpbiBzb3J0IGluaXRpYWxpc2UgLi4uCgAgIC4uLgoAW3NlcF0gLT4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCwgWVlZWS1NTS1ERFRbSEhbOk1NWzpTU1subW1tW3V1dV1dXV1dWytISDpNTV0uCnNlcCBpcyB1c2VkIHRvIHNlcGFyYXRlIHRoZSB5ZWFyIGZyb20gdGhlIHRpbWUsIGFuZCBkZWZhdWx0cyB0byAnVCcuClRoZSBvcHRpb25hbCBhcmd1bWVudCB0aW1lc3BlYyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHRlcm1zCm9mIHRoZSB0aW1lIHRvIGluY2x1ZGUuIFZhbGlkIG9wdGlvbnMgYXJlICdhdXRvJywgJ2hvdXJzJywgJ21pbnV0ZXMnLAonc2Vjb25kcycsICdtaWxsaXNlY29uZHMnIGFuZCAnbWljcm9zZWNvbmRzJy4KAFJldHVybiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCBbSEhbOk1NWzpTU1subW1tW3V1dV1dXV1dWytISDpNTV0uCgpUaGUgb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCB0ZXJtcwpvZiB0aGUgdGltZSB0byBpbmNsdWRlLiBWYWxpZCBvcHRpb25zIGFyZSAnYXV0bycsICdob3VycycsICdtaW51dGVzJywKJ3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJyBhbmQgJ21pY3Jvc2Vjb25kcycuCgArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgAlcystLS0tLS0tLS0tLS0tLS0tICV6ZCAtLS0tLS0tLS0tLS0tLS0tCgAlcystLS0tLS0tLS0tLS0tLS0tIC4uLiAtLS0tLS0tLS0tLS0tLS0tCgAgICAgJUEsCgBleHBhdDogRW50cm9weTogJXMgLS0+IDB4JTAqbHggKCVsdSBieXRlcykKAGV4cGF0OiBFbnRpdGllcyglcCk6IENvdW50ICU5ZCwgZGVwdGggJTJkLyUyZCAlKnMlcyVzOyAlcyBsZW5ndGggJWQgKHhtbHBhcnNlLmM6JWQpCgAuLi4gKG1heF9ncm91cF9kZXB0aCBpcyAlZCkKAGltcG9ydCAlVSAjIHByZXZpb3VzbHkgbG9hZGVkICglUikKACAgICAgIGluaXRpYWwgZ3JvdXAgJWQsIFslZCAuLiAlZF0sIGhhcyAlZCBzeW1zICglNC4xZiUlKQoALS1jaGVjay1oYXNoLWJhc2VkLXB5Y3MgbXVzdCBiZSBvbmUgb2YgJ2RlZmF1bHQnLCAnYWx3YXlzJywgb3IgJ25ldmVyJwoAIEFQSSAnJWMnCgAiCgBUaW1lb3V0ICglbHU6JTAybHU6JTAybHUpIQoAVGltZW91dCAoJWx1OiUwMmx1OiUwMmx1LiUwNnUpIQoADQoARW5hYmxlIHRyYWNlbWFsbG9jIHRvIGdldCB0aGUgbWVtb3J5IGJsb2NrIGFsbG9jYXRpb24gdHJhY2ViYWNrCgoACioqKiBBIHNwZWNpYWwgbm90ZSBhYm91dCBpbnRlcm5hbCBlcnJvciBudW1iZXIgMTAwNyAqKioKCkV4cGVyaWVuY2Ugc3VnZ2VzdHMgdGhhdCBhIGNvbW1vbiBjYXVzZSBvZiBpLmUuIDEwMDcKaXMgdW5yZWxpYWJsZSBtZW1vcnkgb3Igb3RoZXIgaGFyZHdhcmUuICBUaGUgMTAwNyBhc3NlcnRpb24KanVzdCBoYXBwZW5zIHRvIGNyb3NzLWNoZWNrIHRoZSByZXN1bHRzIG9mIGh1Z2UgbnVtYmVycyBvZgptZW1vcnkgcmVhZHMvd3JpdGVzLCBhbmQgc28gYWN0cyAodW5pbnRlbmRlZGx5KSBhcyBhIHN0cmVzcwp0ZXN0IG9mIHlvdXIgbWVtb3J5IHN5c3RlbS4KCkkgc3VnZ2VzdCB0aGUgZm9sbG93aW5nOiB0cnkgY29tcHJlc3NpbmcgdGhlIGZpbGUgYWdhaW4sCnBvc3NpYmx5IG1vbml0b3JpbmcgcHJvZ3Jlc3MgaW4gZGV0YWlsIHdpdGggdGhlIC12diBmbGFnLgoKKiBJZiB0aGUgZXJyb3IgY2Fubm90IGJlIHJlcHJvZHVjZWQsIGFuZC9vciBoYXBwZW5zIGF0IGRpZmZlcmVudAogIHBvaW50cyBpbiBjb21wcmVzc2lvbiwgeW91IG1heSBoYXZlIGEgZmxha3kgbWVtb3J5IHN5c3RlbS4KICBUcnkgYSBtZW1vcnktdGVzdCBwcm9ncmFtLiAgSSBoYXZlIHVzZWQgTWVtdGVzdDg2CiAgKHd3dy5tZW10ZXN0ODYuY29tKS4gIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgaXQgaXMgZnJlZSAoR1BMZCkuCiAgTWVtdGVzdDg2IHRlc3RzIG1lbW9yeSBtdWNoIG1vcmUgdGhvcm91Z2x5IHRoYW4geW91ciBCSU9TcwogIHBvd2VyLW9uIHRlc3QsIGFuZCBtYXkgZmluZCBmYWlsdXJlcyB0aGF0IHRoZSBCSU9TIGRvZXNuJ3QuCgoqIElmIHRoZSBlcnJvciBjYW4gYmUgcmVwZWF0YWJseSByZXByb2R1Y2VkLCB0aGlzIGlzIGEgYnVnIGluCiAgYnppcDIsIGFuZCBJIHdvdWxkIHZlcnkgbXVjaCBsaWtlIHRvIGhlYXIgYWJvdXQgaXQuICBQbGVhc2UKICBsZXQgbWUga25vdywgYW5kLCBpZGVhbGx5LCBzYXZlIGEgY29weSBvZiB0aGUgZmlsZSBjYXVzaW5nIHRoZQogIHByb2JsZW0gLS0gd2l0aG91dCB3aGljaCBJIHdpbGwgYmUgdW5hYmxlIHRvIGludmVzdGlnYXRlIGl0LgoKAAoKYnppcDIvbGliYnppcDI6IGludGVybmFsIGVycm9yIG51bWJlciAlZC4KVGhpcyBpcyBhIGJ1ZyBpbiBiemlwMi9saWJiemlwMiwgJXMuClBsZWFzZSByZXBvcnQgaXQgdG8gbWUgYXQ6IGpzZXdhcmRAYnppcC5vcmcuICBJZiB0aGlzIGhhcHBlbmVkCndoZW4geW91IHdlcmUgdXNpbmcgc29tZSBwcm9ncmFtIHdoaWNoIHVzZXMgbGliYnppcDIgYXMgYQpjb21wb25lbnQsIHlvdSBzaG91bGQgYWxzbyByZXBvcnQgdGhpcyBidWcgdG8gdGhlIGF1dGhvcihzKQpvZiB0aGF0IHByb2dyYW0uICBQbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcmVwb3J0IHRoaXMgYnVnOwp0aW1lbHkgYW5kIGFjY3VyYXRlIGJ1ZyByZXBvcnRzIGV2ZW50dWFsbHkgbGVhZCB0byBoaWdoZXIKcXVhbGl0eSBzb2Z0d2FyZS4gIFRoYW5rcy4gIEp1bGlhbiBTZXdhcmQsIDEwIERlY2VtYmVyIDIwMDcuCgoAKQotLQoKAAkABwABAgMDBAQEBAUFBgYGAAQAAwMAAAACAAAABAAAAAYAAAAIAAAACgAAACEAAAAdAAAAHAAAAAAAAABib29sKHgpIC0+IGJvb2wKClJldHVybnMgVHJ1ZSB3aGVuIHRoZSBhcmd1bWVudCB4IGlzIHRydWUsIEZhbHNlIG90aGVyd2lzZS4KVGhlIGJ1aWx0aW5zIFRydWUgYW5kIEZhbHNlIGFyZSB0aGUgb25seSB0d28gaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyBib29sLgpUaGUgY2xhc3MgYm9vbCBpcyBhIHN1YmNsYXNzIG9mIHRoZSBjbGFzcyBpbnQsIGFuZCBjYW5ub3QgYmUgc3ViY2xhc3NlZC4AAEIuaXNzcGFjZSgpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIEIgYXJlIHdoaXRlc3BhY2UKYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gQiwgRmFsc2Ugb3RoZXJ3aXNlLgAAAAAAAAAAAAAAAAAAAEIuaXNhbHBoYSgpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIEIgYXJlIGFscGhhYmV0aWMKYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gQiwgRmFsc2Ugb3RoZXJ3aXNlLgAAAAAAAAAAAAAAAAAAAEIuaXNhbG51bSgpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIEIgYXJlIGFscGhhbnVtZXJpYwphbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBCLCBGYWxzZSBvdGhlcndpc2UuAAAAAAAAAAAAAAAAAEIuaXNhc2NpaSgpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIEIgaXMgZW1wdHkgb3IgYWxsIGNoYXJhY3RlcnMgaW4gQiBhcmUgQVNDSUksCkZhbHNlIG90aGVyd2lzZS4AAAAAAAAAAAAAAAAAAABCLmlzZGlnaXQoKSAtPiBib29sCgpSZXR1cm4gVHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiBCIGFyZSBkaWdpdHMKYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gQiwgRmFsc2Ugb3RoZXJ3aXNlLgAAAEIuaXNsb3dlcigpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIGluIEIgYXJlIGxvd2VyY2FzZSBhbmQgdGhlcmUgaXMKYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciBpbiBCLCBGYWxzZSBvdGhlcndpc2UuAAAAAEIuaXN1cHBlcigpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIGluIEIgYXJlIHVwcGVyY2FzZSBhbmQgdGhlcmUgaXMKYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciBpbiBCLCBGYWxzZSBvdGhlcndpc2UuAAAAAEIuaXN0aXRsZSgpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIEIgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lCmNoYXJhY3RlciBpbiBCLCBpLmUuIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5IGZvbGxvdyB1bmNhc2VkCmNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy4gUmV0dXJuIEZhbHNlCm90aGVyd2lzZS4AAAAAAAAAAAAAAEIubG93ZXIoKSAtPiBjb3B5IG9mIEIKClJldHVybiBhIGNvcHkgb2YgQiB3aXRoIGFsbCBBU0NJSSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuAAAAAEIudXBwZXIoKSAtPiBjb3B5IG9mIEIKClJldHVybiBhIGNvcHkgb2YgQiB3aXRoIGFsbCBBU0NJSSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuAAAAAEIudGl0bGUoKSAtPiBjb3B5IG9mIEIKClJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiBCLCBpLmUuIEFTQ0lJIHdvcmRzIHN0YXJ0IHdpdGggdXBwZXJjYXNlCmNoYXJhY3RlcnMsIGFsbCByZW1haW5pbmcgY2FzZWQgY2hhcmFjdGVycyBoYXZlIGxvd2VyY2FzZS4AAAAAAABCLmNhcGl0YWxpemUoKSAtPiBjb3B5IG9mIEIKClJldHVybiBhIGNvcHkgb2YgQiB3aXRoIG9ubHkgaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZCAoQVNDSUkpCmFuZCB0aGUgcmVzdCBsb3dlci1jYXNlZC4AAAAAAEIuc3dhcGNhc2UoKSAtPiBjb3B5IG9mIEIKClJldHVybiBhIGNvcHkgb2YgQiB3aXRoIHVwcGVyY2FzZSBBU0NJSSBjaGFyYWN0ZXJzIGNvbnZlcnRlZAp0byBsb3dlcmNhc2UgQVNDSUkgYW5kIHZpY2UgdmVyc2EuAAAAAAAAQi5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludAoKUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCwKc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsCmFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4KClJldHVybiAtMSBvbiBmYWlsdXJlLgAAQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnQKClJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsCnN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbAphcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uCgpSYWlzZXMgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4AAABCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludAoKUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsCnN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbAphcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uCgpSZXR1cm4gLTEgb24gZmFpbHVyZS4AAAAAAAAAAAAAAAAAAAAAQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50CgpSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCwKc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsCmFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4KClJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuAABCLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludAoKUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb24gc3ViIGluCmJ5dGVzIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZAphcyBpbiBzbGljZSBub3RhdGlvbi4AAAAAAAAAAAAAQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIEIgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIEZhbHNlIG90aGVyd2lzZS4KV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLgpXaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLgpwcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuAAAAAABCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIEIgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBGYWxzZSBvdGhlcndpc2UuCldpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi4KV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi4Kc3VmZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LgAAAAAAAAAAAGJ5dGVhcnJheShpdGVyYWJsZV9vZl9pbnRzKSAtPiBieXRlYXJyYXkKYnl0ZWFycmF5KHN0cmluZywgZW5jb2RpbmdbLCBlcnJvcnNdKSAtPiBieXRlYXJyYXkKYnl0ZWFycmF5KGJ5dGVzX29yX2J1ZmZlcikgLT4gbXV0YWJsZSBjb3B5IG9mIGJ5dGVzX29yX2J1ZmZlcgpieXRlYXJyYXkoaW50KSAtPiBieXRlcyBhcnJheSBvZiBzaXplIGdpdmVuIGJ5IHRoZSBwYXJhbWV0ZXIgaW5pdGlhbGl6ZWQgd2l0aCBudWxsIGJ5dGVzCmJ5dGVhcnJheSgpIC0+IGVtcHR5IGJ5dGVzIGFycmF5CgpDb25zdHJ1Y3QgYSBtdXRhYmxlIGJ5dGVhcnJheSBvYmplY3QgZnJvbToKICAtIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGludGVnZXJzIGluIHJhbmdlKDI1NikKICAtIGEgdGV4dCBzdHJpbmcgZW5jb2RlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nCiAgLSBhIGJ5dGVzIG9yIGEgYnVmZmVyIG9iamVjdAogIC0gYW55IG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlIGJ1ZmZlciBBUEkuCiAgLSBhbiBpbnRlZ2VyAAAAAAAAAAAAAAAAAAAAAEIuX19hbGxvY19fKCkgLT4gaW50CgpSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSBhbGxvY2F0ZWQuAAAAAAAAAAAAAAAAX19yZWR1Y2VfXygkc2VsZiwgLykKLS0KClJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuAF9fcmVkdWNlX2V4X18oJHNlbGYsIHByb3RvPTAsIC8pCi0tCgpSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgAAAAAAX19zaXplb2ZfXygkc2VsZiwgLykKLS0KClJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ5dGVhcnJheSBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcy4AAAAAAAAAAAAAYXBwZW5kKCRzZWxmLCBpdGVtLCAvKQotLQoKQXBwZW5kIGEgc2luZ2xlIGl0ZW0gdG8gdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5LgoKICBpdGVtCiAgICBUaGUgaXRlbSB0byBiZSBhcHBlbmRlZC4AAAAAAAAAAAAAAAAAAABjZW50ZXIoJHNlbGYsIHdpZHRoLCBmaWxsY2hhcj1iJyAnLCAvKQotLQoKUmV0dXJuIGEgY2VudGVyZWQgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4KClBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyLgAAAAAAAABjbGVhcigkc2VsZiwgLykKLS0KClJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgYnl0ZWFycmF5LgAAAAAAAAAAY29weSgkc2VsZiwgLykKLS0KClJldHVybiBhIGNvcHkgb2YgQi4AAAAAAAAAAAAAZGVjb2RlKCRzZWxmLCAvLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCi0tCgpEZWNvZGUgdGhlIGJ5dGVhcnJheSB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuCgogIGVuY29kaW5nCiAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVhcnJheS4KICBlcnJvcnMKICAgIFRoZSBlcnJvciBoYW5kbGluZyBzY2hlbWUgdG8gdXNlIGZvciB0aGUgaGFuZGxpbmcgb2YgZGVjb2RpbmcgZXJyb3JzLgogICAgVGhlIGRlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGRlY29kaW5nIGVycm9ycyByYWlzZSBhCiAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJwogICAgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQKICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4AAAAAAAAAAAAAAAAAAAAAZXhwYW5kdGFicygkc2VsZiwgLywgdGFic2l6ZT04KQotLQoKUmV0dXJuIGEgY29weSB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIGV4cGFuZGVkIHVzaW5nIHNwYWNlcy4KCklmIHRhYnNpemUgaXMgbm90IGdpdmVuLCBhIHRhYiBzaXplIG9mIDggY2hhcmFjdGVycyBpcyBhc3N1bWVkLgAAAAAAAAAAAABleHRlbmQoJHNlbGYsIGl0ZXJhYmxlX29mX2ludHMsIC8pCi0tCgpBcHBlbmQgYWxsIHRoZSBpdGVtcyBmcm9tIHRoZSBpdGVyYXRvciBvciBzZXF1ZW5jZSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuCgogIGl0ZXJhYmxlX29mX2ludHMKICAgIFRoZSBpdGVyYWJsZSBvZiBpdGVtcyB0byBhcHBlbmQuAGZyb21oZXgoJHR5cGUsIHN0cmluZywgLykKLS0KCkNyZWF0ZSBhIGJ5dGVhcnJheSBvYmplY3QgZnJvbSBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBudW1iZXJzLgoKU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLgpFeGFtcGxlOiBieXRlYXJyYXkuZnJvbWhleCgnQjkgMDFFRicpIC0+IGJ5dGVhcnJheShiJ1xceGI5XFx4MDFcXHhlZicpAABoZXgoJHNlbGYsIC8sIHNlcD08dW5yZXByZXNlbnRhYmxlPiwgYnl0ZXNfcGVyX3NlcD0xKQotLQoKQ3JlYXRlIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMgZnJvbSBhIGJ5dGVhcnJheSBvYmplY3QuCgogIHNlcAogICAgQW4gb3B0aW9uYWwgc2luZ2xlIGNoYXJhY3RlciBvciBieXRlIHRvIHNlcGFyYXRlIGhleCBieXRlcy4KICBieXRlc19wZXJfc2VwCiAgICBIb3cgbWFueSBieXRlcyBiZXR3ZWVuIHNlcGFyYXRvcnMuICBQb3NpdGl2ZSB2YWx1ZXMgY291bnQgZnJvbSB0aGUKICAgIHJpZ2h0LCBuZWdhdGl2ZSB2YWx1ZXMgY291bnQgZnJvbSB0aGUgbGVmdC4KCkV4YW1wbGU6Cj4+PiB2YWx1ZSA9IGJ5dGVhcnJheShbMHhiOSwgMHgwMSwgMHhlZl0pCj4+PiB2YWx1ZS5oZXgoKQonYjkwMWVmJwo+Pj4gdmFsdWUuaGV4KCc6JykKJ2I5OjAxOmVmJwo+Pj4gdmFsdWUuaGV4KCc6JywgMikKJ2I5OjAxZWYnCj4+PiB2YWx1ZS5oZXgoJzonLCAtMikKJ2I5MDE6ZWYnAAAAAAAAAAAAAAAAAGluc2VydCgkc2VsZiwgaW5kZXgsIGl0ZW0sIC8pCi0tCgpJbnNlcnQgYSBzaW5nbGUgaXRlbSBpbnRvIHRoZSBieXRlYXJyYXkgYmVmb3JlIHRoZSBnaXZlbiBpbmRleC4KCiAgaW5kZXgKICAgIFRoZSBpbmRleCB3aGVyZSB0aGUgdmFsdWUgaXMgdG8gYmUgaW5zZXJ0ZWQuCiAgaXRlbQogICAgVGhlIGl0ZW0gdG8gYmUgaW5zZXJ0ZWQuAGpvaW4oJHNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzLCAvKQotLQoKQ29uY2F0ZW5hdGUgYW55IG51bWJlciBvZiBieXRlcy9ieXRlYXJyYXkgb2JqZWN0cy4KClRoZSBieXRlYXJyYXkgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci4KClRoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgYSBuZXcgYnl0ZWFycmF5IG9iamVjdC4AAAAAAAAAAAAAAAAAbGp1c3QoJHNlbGYsIHdpZHRoLCBmaWxsY2hhcj1iJyAnLCAvKQotLQoKUmV0dXJuIGEgbGVmdC1qdXN0aWZpZWQgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4KClBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyLgAAbHN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKQotLQoKU3RyaXAgbGVhZGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgoKSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBBU0NJSSB3aGl0ZXNwYWNlLgAAAAAAAAAAAAAAAG1ha2V0cmFucyhmcm0sIHRvLCAvKQotLQoKUmV0dXJuIGEgdHJhbnNsYXRpb24gdGFibGUgdXNlYWJsZSBmb3IgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSB0cmFuc2xhdGUgbWV0aG9kLgoKVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0CnRoZSBzYW1lIHBvc2l0aW9uIGluIHRvLgoKVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4AAAAAcGFydGl0aW9uKCRzZWxmLCBzZXAsIC8pCi0tCgpQYXJ0aXRpb24gdGhlIGJ5dGVhcnJheSBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCgpUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZWFycmF5LiBJZiB0aGUgc2VwYXJhdG9yIGlzCmZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUKc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0IGFzIG5ldyBieXRlYXJyYXkgb2JqZWN0cy4KCklmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBjb3B5IG9mIHRoZQpvcmlnaW5hbCBieXRlYXJyYXkgb2JqZWN0IGFuZCB0d28gZW1wdHkgYnl0ZWFycmF5IG9iamVjdHMuAHBvcCgkc2VsZiwgaW5kZXg9LTEsIC8pCi0tCgpSZW1vdmUgYW5kIHJldHVybiBhIHNpbmdsZSBpdGVtIGZyb20gQi4KCiAgaW5kZXgKICAgIFRoZSBpbmRleCBmcm9tIHdoZXJlIHRvIHJlbW92ZSB0aGUgaXRlbS4KICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVtb3ZlIHRoZSBsYXN0IGl0ZW0uCgpJZiBubyBpbmRleCBhcmd1bWVudCBpcyBnaXZlbiwgd2lsbCBwb3AgdGhlIGxhc3QgaXRlbS4AAAAAAAAAAHJlbW92ZSgkc2VsZiwgdmFsdWUsIC8pCi0tCgpSZW1vdmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSB2YWx1ZSBpbiB0aGUgYnl0ZWFycmF5LgoKICB2YWx1ZQogICAgVGhlIHZhbHVlIHRvIHJlbW92ZS4AAAAAAAAAAAAAcmVwbGFjZSgkc2VsZiwgb2xkLCBuZXcsIGNvdW50PS0xLCAvKQotLQoKUmV0dXJuIGEgY29weSB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgb2xkIHJlcGxhY2VkIGJ5IG5ldy4KCiAgY291bnQKICAgIE1heGltdW0gbnVtYmVyIG9mIG9jY3VycmVuY2VzIHRvIHJlcGxhY2UuCiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlcGxhY2UgYWxsIG9jY3VycmVuY2VzLgoKSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmUKcmVwbGFjZWQuAAAAAAAAAAByZW1vdmVwcmVmaXgoJHNlbGYsIHByZWZpeCwgLykKLS0KClJldHVybiBhIGJ5dGVhcnJheSB3aXRoIHRoZSBnaXZlbiBwcmVmaXggc3RyaW5nIHJlbW92ZWQgaWYgcHJlc2VudC4KCklmIHRoZSBieXRlYXJyYXkgc3RhcnRzIHdpdGggdGhlIHByZWZpeCBzdHJpbmcsIHJldHVybgpieXRlYXJyYXlbbGVuKHByZWZpeCk6XS4gIE90aGVyd2lzZSwgcmV0dXJuIGEgY29weSBvZiB0aGUgb3JpZ2luYWwKYnl0ZWFycmF5LgAAAAByZW1vdmVzdWZmaXgoJHNlbGYsIHN1ZmZpeCwgLykKLS0KClJldHVybiBhIGJ5dGVhcnJheSB3aXRoIHRoZSBnaXZlbiBzdWZmaXggc3RyaW5nIHJlbW92ZWQgaWYgcHJlc2VudC4KCklmIHRoZSBieXRlYXJyYXkgZW5kcyB3aXRoIHRoZSBzdWZmaXggc3RyaW5nIGFuZCB0aGF0IHN1ZmZpeCBpcyBub3QKZW1wdHksIHJldHVybiBieXRlYXJyYXlbOi1sZW4oc3VmZml4KV0uICBPdGhlcndpc2UsIHJldHVybiBhIGNvcHkgb2YKdGhlIG9yaWdpbmFsIGJ5dGVhcnJheS4AAAAAAAAAAHJldmVyc2UoJHNlbGYsIC8pCi0tCgpSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdmFsdWVzIGluIEIgaW4gcGxhY2UuAAAAAAAAAAAAAAAAcmp1c3QoJHNlbGYsIHdpZHRoLCBmaWxsY2hhcj1iJyAnLCAvKQotLQoKUmV0dXJuIGEgcmlnaHQtanVzdGlmaWVkIHN0cmluZyBvZiBsZW5ndGggd2lkdGguCgpQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3Rlci4AcnBhcnRpdGlvbigkc2VsZiwgc2VwLCAvKQotLQoKUGFydGl0aW9uIHRoZSBieXRlYXJyYXkgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgoKVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVhcnJheSwgc3RhcnRpbmcgYXQgdGhlIGVuZC4KSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlCnNlcGFyYXRvciwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdCBhcyBuZXcgYnl0ZWFycmF5Cm9iamVjdHMuCgpJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgYnl0ZWFycmF5Cm9iamVjdHMgYW5kIHRoZSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBieXRlYXJyYXkgb2JqZWN0LgAAAAAAAAAAAAAAcnNwbGl0KCRzZWxmLCAvLCBzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpCi0tCgpSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KCiAgc2VwCiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZWFycmF5LgogICAgTm9uZSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVycwogICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuCiAgbWF4c3BsaXQKICAgIE1heGltdW0gbnVtYmVyIG9mIHNwbGl0cyB0byBkby4KICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuCgpTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LgAAAAAAAAAAAHJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLykKLS0KClN0cmlwIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCgpJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgAAAAAAAAAAAABzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKQotLQoKUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVhcnJheSwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuCgogIHNlcAogICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVhcnJheS4KICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMKICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLgogIG1heHNwbGl0CiAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uCiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LgAAAAAAAAAAAAAAAHNwbGl0bGluZXMoJHNlbGYsIC8sIGtlZXBlbmRzPUZhbHNlKQotLQoKUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIGJ5dGVhcnJheSwgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLgoKTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3QgdW5sZXNzIGtlZXBlbmRzIGlzIGdpdmVuIGFuZAp0cnVlLgAAAAAAAABzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLykKLS0KClN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCgpJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgAAAHRyYW5zbGF0ZSgkc2VsZiwgdGFibGUsIC8sIGRlbGV0ZT1iJycpCi0tCgpSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KCiAgdGFibGUKICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCgpBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC4KVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuAHpmaWxsKCRzZWxmLCB3aWR0aCwgLykKLS0KClBhZCBhIG51bWVyaWMgc3RyaW5nIHdpdGggemVyb3Mgb24gdGhlIGxlZnQsIHRvIGZpbGwgYSBmaWVsZCBvZiB0aGUgZ2l2ZW4gd2lkdGguCgpUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIG5ldmVyIHRydW5jYXRlZC4AAAAAAAAAAAAAAABQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4AAAAAAAAAAAAAU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLgAAAAAAAAAAAAAAYnl0ZXMoaXRlcmFibGVfb2ZfaW50cykgLT4gYnl0ZXMKYnl0ZXMoc3RyaW5nLCBlbmNvZGluZ1ssIGVycm9yc10pIC0+IGJ5dGVzCmJ5dGVzKGJ5dGVzX29yX2J1ZmZlcikgLT4gaW1tdXRhYmxlIGNvcHkgb2YgYnl0ZXNfb3JfYnVmZmVyCmJ5dGVzKGludCkgLT4gYnl0ZXMgb2JqZWN0IG9mIHNpemUgZ2l2ZW4gYnkgdGhlIHBhcmFtZXRlciBpbml0aWFsaXplZCB3aXRoIG51bGwgYnl0ZXMKYnl0ZXMoKSAtPiBlbXB0eSBieXRlcyBvYmplY3QKCkNvbnN0cnVjdCBhbiBpbW11dGFibGUgYXJyYXkgb2YgYnl0ZXMgZnJvbToKICAtIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGludGVnZXJzIGluIHJhbmdlKDI1NikKICAtIGEgdGV4dCBzdHJpbmcgZW5jb2RlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nCiAgLSBhbnkgb2JqZWN0IGltcGxlbWVudGluZyB0aGUgYnVmZmVyIEFQSS4KICAtIGFuIGludGVnZXIAAAAAAABfX2J5dGVzX18oJHNlbGYsIC8pCi0tCgpDb252ZXJ0IHRoaXMgdmFsdWUgdG8gZXhhY3QgdHlwZSBieXRlcy4AY2VudGVyKCRzZWxmLCB3aWR0aCwgZmlsbGNoYXI9YicgJywgLykKLS0KClJldHVybiBhIGNlbnRlcmVkIHN0cmluZyBvZiBsZW5ndGggd2lkdGguCgpQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3Rlci4AAAAAAAAAZGVjb2RlKCRzZWxmLCAvLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCi0tCgpEZWNvZGUgdGhlIGJ5dGVzIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4KCiAgZW5jb2RpbmcKICAgIFRoZSBlbmNvZGluZyB3aXRoIHdoaWNoIHRvIGRlY29kZSB0aGUgYnl0ZXMuCiAgZXJyb3JzCiAgICBUaGUgZXJyb3IgaGFuZGxpbmcgc2NoZW1lIHRvIHVzZSBmb3IgdGhlIGhhbmRsaW5nIG9mIGRlY29kaW5nIGVycm9ycy4KICAgIFRoZSBkZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYQogICAgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZScKICAgIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0CiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuAAAAAAAAAABleHBhbmR0YWJzKCRzZWxmLCAvLCB0YWJzaXplPTgpCi0tCgpSZXR1cm4gYSBjb3B5IHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgZXhwYW5kZWQgdXNpbmcgc3BhY2VzLgoKSWYgdGFic2l6ZSBpcyBub3QgZ2l2ZW4sIGEgdGFiIHNpemUgb2YgOCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuAAAAAAAAAAAAAGZyb21oZXgoJHR5cGUsIHN0cmluZywgLykKLS0KCkNyZWF0ZSBhIGJ5dGVzIG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuCgpTcGFjZXMgYmV0d2VlbiB0d28gbnVtYmVycyBhcmUgYWNjZXB0ZWQuCkV4YW1wbGU6IGJ5dGVzLmZyb21oZXgoJ0I5IDAxRUYnKSAtPiBiJ1xceGI5XFx4MDFcXHhlZicuAAAAAGhleCgkc2VsZiwgLywgc2VwPTx1bnJlcHJlc2VudGFibGU+LCBieXRlc19wZXJfc2VwPTEpCi0tCgpDcmVhdGUgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycyBmcm9tIGEgYnl0ZXMgb2JqZWN0LgoKICBzZXAKICAgIEFuIG9wdGlvbmFsIHNpbmdsZSBjaGFyYWN0ZXIgb3IgYnl0ZSB0byBzZXBhcmF0ZSBoZXggYnl0ZXMuCiAgYnl0ZXNfcGVyX3NlcAogICAgSG93IG1hbnkgYnl0ZXMgYmV0d2VlbiBzZXBhcmF0b3JzLiAgUG9zaXRpdmUgdmFsdWVzIGNvdW50IGZyb20gdGhlCiAgICByaWdodCwgbmVnYXRpdmUgdmFsdWVzIGNvdW50IGZyb20gdGhlIGxlZnQuCgpFeGFtcGxlOgo+Pj4gdmFsdWUgPSBiJ1x4YjlceDAxXHhlZicKPj4+IHZhbHVlLmhleCgpCidiOTAxZWYnCj4+PiB2YWx1ZS5oZXgoJzonKQonYjk6MDE6ZWYnCj4+PiB2YWx1ZS5oZXgoJzonLCAyKQonYjk6MDFlZicKPj4+IHZhbHVlLmhleCgnOicsIC0yKQonYjkwMTplZicAAAAAAAAAAAAAAAAAAABqb2luKCRzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcywgLykKLS0KCkNvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMgb2JqZWN0cy4KClRoZSBieXRlcyB3aG9zZSBtZXRob2QgaXMgY2FsbGVkIGlzIGluc2VydGVkIGluIGJldHdlZW4gZWFjaCBwYWlyLgoKVGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIG5ldyBieXRlcyBvYmplY3QuCgpFeGFtcGxlOiBiJy4nLmpvaW4oW2InYWInLCBiJ3BxJywgYidycyddKSAtPiBiJ2FiLnBxLnJzJy4AAAAAbGp1c3QoJHNlbGYsIHdpZHRoLCBmaWxsY2hhcj1iJyAnLCAvKQotLQoKUmV0dXJuIGEgbGVmdC1qdXN0aWZpZWQgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4KClBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyLgAAbHN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKQotLQoKU3RyaXAgbGVhZGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgoKSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyAgQVNDSUkgd2hpdGVzcGFjZS4AAAAAAAAAAAAAAG1ha2V0cmFucyhmcm0sIHRvLCAvKQotLQoKUmV0dXJuIGEgdHJhbnNsYXRpb24gdGFibGUgdXNlYWJsZSBmb3IgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSB0cmFuc2xhdGUgbWV0aG9kLgoKVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0CnRoZSBzYW1lIHBvc2l0aW9uIGluIHRvLgoKVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4AAAAAcGFydGl0aW9uKCRzZWxmLCBzZXAsIC8pCi0tCgpQYXJ0aXRpb24gdGhlIGJ5dGVzIGludG8gdGhyZWUgcGFydHMgdXNpbmcgdGhlIGdpdmVuIHNlcGFyYXRvci4KClRoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlcy4gSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCwKcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvcgppdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC4KCklmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBvcmlnaW5hbCBieXRlcwpvYmplY3QgYW5kIHR3byBlbXB0eSBieXRlcyBvYmplY3RzLgAAAAAAAHJlcGxhY2UoJHNlbGYsIG9sZCwgbmV3LCBjb3VudD0tMSwgLykKLS0KClJldHVybiBhIGNvcHkgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIG9sZCByZXBsYWNlZCBieSBuZXcuCgogIGNvdW50CiAgICBNYXhpbXVtIG51bWJlciBvZiBvY2N1cnJlbmNlcyB0byByZXBsYWNlLgogICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy4KCklmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBjb3VudCBpcyBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlCnJlcGxhY2VkLgAAAAAAAAAAcmVtb3ZlcHJlZml4KCRzZWxmLCBwcmVmaXgsIC8pCi0tCgpSZXR1cm4gYSBieXRlcyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4IHN0cmluZyByZW1vdmVkIGlmIHByZXNlbnQuCgpJZiB0aGUgYnl0ZXMgc3RhcnRzIHdpdGggdGhlIHByZWZpeCBzdHJpbmcsIHJldHVybiBieXRlc1tsZW4ocHJlZml4KTpdLgpPdGhlcndpc2UsIHJldHVybiBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGJ5dGVzLgAAAAAAAAAAAAAAAAAAcmVtb3Zlc3VmZml4KCRzZWxmLCBzdWZmaXgsIC8pCi0tCgpSZXR1cm4gYSBieXRlcyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4IHN0cmluZyByZW1vdmVkIGlmIHByZXNlbnQuCgpJZiB0aGUgYnl0ZXMgZW5kcyB3aXRoIHRoZSBzdWZmaXggc3RyaW5nIGFuZCB0aGF0IHN1ZmZpeCBpcyBub3QgZW1wdHksCnJldHVybiBieXRlc1s6LWxlbihwcmVmaXgpXS4gIE90aGVyd2lzZSwgcmV0dXJuIGEgY29weSBvZiB0aGUgb3JpZ2luYWwKYnl0ZXMuAHJqdXN0KCRzZWxmLCB3aWR0aCwgZmlsbGNoYXI9YicgJywgLykKLS0KClJldHVybiBhIHJpZ2h0LWp1c3RpZmllZCBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLgoKUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIuAHJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLykKLS0KClBhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgoKVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVzLCBzdGFydGluZyBhdCB0aGUgZW5kLiBJZgp0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUKc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LgoKSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IGJ5dGVzCm9iamVjdHMgYW5kIHRoZSBvcmlnaW5hbCBieXRlcyBvYmplY3QuAAAAAAAAAAAAAAAAAAAAAHJzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKQotLQoKUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVzLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KCiAgc2VwCiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZXMuCiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCiAgICAoc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS4KICBtYXhzcGxpdAogICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLgogICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4KClNwbGl0dGluZyBpcyBkb25lIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJ5dGVzIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4AAAAAAHJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLykKLS0KClN0cmlwIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCgpJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgAAAAAAAAAAAABzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKQotLQoKUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVzLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KCiAgc2VwCiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZXMuCiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCiAgICAoc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS4KICBtYXhzcGxpdAogICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLgogICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4AAAAAc3BsaXRsaW5lcygkc2VsZiwgLywga2VlcGVuZHM9RmFsc2UpCi0tCgpSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgYnl0ZXMsIGJyZWFraW5nIGF0IGxpbmUgYm91bmRhcmllcy4KCkxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmQKdHJ1ZS4AAAAAAAAAAAAAAHN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKQotLQoKU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KCklmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuAAAAdHJhbnNsYXRlKCRzZWxmLCB0YWJsZSwgLywgZGVsZXRlPWInJykKLS0KClJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgoKICB0YWJsZQogICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KCkFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgpUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4AemZpbGwoJHNlbGYsIHdpZHRoLCAvKQotLQoKUGFkIGEgbnVtZXJpYyBzdHJpbmcgd2l0aCB6ZXJvcyBvbiB0aGUgbGVmdCwgdG8gZmlsbCBhIGZpZWxkIG9mIHRoZSBnaXZlbiB3aWR0aC4KClRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgbmV2ZXIgdHJ1bmNhdGVkLgAAAAAAAAAAAAAAAFByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLgAAAAAAAAAAAABSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgAAAAAAAAAAAABTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuAAAAAAAAAAAAAABDYXBzdWxlIG9iamVjdHMgbGV0IHlvdSB3cmFwIGEgQyAidm9pZCAqIiBwb2ludGVyIGluIGEgUHl0aG9uCm9iamVjdC4gIFRoZXkncmUgYSB3YXkgb2YgcGFzc2luZyBkYXRhIHRocm91Z2ggdGhlIFB5dGhvbiBpbnRlcnByZXRlcgp3aXRob3V0IGNyZWF0aW5nIHlvdXIgb3duIGN1c3RvbSB0eXBlLgoKQ2Fwc3VsZXMgYXJlIHVzZWQgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiBleHRlbnNpb24gbW9kdWxlcy4KVGhleSBwcm92aWRlIGEgd2F5IGZvciBhbiBleHRlbnNpb24gbW9kdWxlIHRvIGV4cG9ydCBhIEMgaW50ZXJmYWNlCnRvIG90aGVyIGV4dGVuc2lvbiBtb2R1bGVzLCBzbyB0aGF0IGV4dGVuc2lvbiBtb2R1bGVzIGNhbiB1c2UgdGhlClB5dGhvbiBpbXBvcnQgbWVjaGFuaXNtIHRvIGxpbmsgdG8gb25lIGFub3RoZXIuCgAAAAAAAAAAAAAAAAAAAABjZWxsKFtjb250ZW50c10pCi0tCgpDcmVhdGUgYSBuZXcgY2VsbCBvYmplY3QuCgogIGNvbnRlbnRzCiAgICB0aGUgY29udGVudHMgb2YgdGhlIGNlbGwuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBjZWxsIHdpbGwgYmUgZW1wdHksCiAgICBhbmQgCiBmdXJ0aGVyIGF0dGVtcHRzIHRvIGFjY2VzcyBpdHMgY2VsbF9jb250ZW50cyBhdHRyaWJ1dGUgd2lsbAogICAgcmFpc2UgYSBWYWx1ZUVycm9yLgAAAAAAAAAAAAAAAAAAAABtZXRob2QoZnVuY3Rpb24sIGluc3RhbmNlLCAvKQotLQoKQ3JlYXRlIGEgYm91bmQgaW5zdGFuY2UgbWV0aG9kIG9iamVjdC4AAAAAAAAAAGluc3RhbmNlbWV0aG9kKGZ1bmN0aW9uLCAvKQotLQoKQmluZCBhIGZ1bmN0aW9uIHRvIGEgY2xhc3MuAAAAAABfX3JlZHVjZV9fKCRzZWxmLCAvKQotLQoKAJcASgCCAeoAAAAAAAAAAAAAAAAAAABjb2RlKGFyZ2NvdW50LCBwb3Nvbmx5YXJnY291bnQsIGt3b25seWFyZ2NvdW50LCBubG9jYWxzLCBzdGFja3NpemUsCiAgICAgZmxhZ3MsIGNvZGVzdHJpbmcsIGNvbnN0YW50cywgbmFtZXMsIHZhcm5hbWVzLCBmaWxlbmFtZSwgbmFtZSwKICAgICBxdWFsbmFtZSwgZmlyc3RsaW5lbm8sIGxpbmV0YWJsZSwgZXhjZXB0aW9udGFibGUsIGZyZWV2YXJzPSgpLAogICAgIGNlbGx2YXJzPSgpLCAvKQotLQoKQ3JlYXRlIGEgY29kZSBvYmplY3QuICBOb3QgZm9yIHRoZSBmYWludCBvZiBoZWFydC4AAAAAAAAAAAByZXBsYWNlKCRzZWxmLCAvLCAqLCBjb19hcmdjb3VudD0tMSwgY29fcG9zb25seWFyZ2NvdW50PS0xLAogICAgICAgIGNvX2t3b25seWFyZ2NvdW50PS0xLCBjb19ubG9jYWxzPS0xLCBjb19zdGFja3NpemU9LTEsCiAgICAgICAgY29fZmxhZ3M9LTEsIGNvX2ZpcnN0bGluZW5vPS0xLCBjb19jb2RlPU5vbmUsIGNvX2NvbnN0cz1Ob25lLAogICAgICAgIGNvX25hbWVzPU5vbmUsIGNvX3Zhcm5hbWVzPU5vbmUsIGNvX2ZyZWV2YXJzPU5vbmUsCiAgICAgICAgY29fY2VsbHZhcnM9Tm9uZSwgY29fZmlsZW5hbWU9Tm9uZSwgY29fbmFtZT1Ob25lLAogICAgICAgIGNvX3F1YWxuYW1lPU5vbmUsIGNvX2xpbmV0YWJsZT1Ob25lLCBjb19leGNlcHRpb250YWJsZT1Ob25lKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgY29kZSBvYmplY3Qgd2l0aCBuZXcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGZpZWxkcy4AAAAAAAAAAF92YXJuYW1lX2Zyb21fb3BhcmcoJHNlbGYsIC8sIG9wYXJnKQotLQoKKGludGVybmFsLW9ubHkpIFJldHVybiB0aGUgbG9jYWwgdmFyaWFibGUgbmFtZSBmb3IgdGhlIGdpdmVuIG9wYXJnLgoKV0FSTklORzogdGhpcyBtZXRob2QgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5IGFuZCBtYXkgY2hhbmdlIG9yIGdvIGF3YXkuAAAAAAAAAAAAAGNvbXBsZXgocmVhbD0wLCBpbWFnPTApCi0tCgpDcmVhdGUgYSBjb21wbGV4IG51bWJlciBmcm9tIGEgcmVhbCBwYXJ0IGFuZCBhbiBvcHRpb25hbCBpbWFnaW5hcnkgcGFydC4KClRoaXMgaXMgZXF1aXZhbGVudCB0byAocmVhbCArIGltYWcqMWopIHdoZXJlIGltYWcgZGVmYXVsdHMgdG8gMC4AAAAAAAAAAAAAY29uanVnYXRlKCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSBjb21wbGV4IGNvbmp1Z2F0ZSBvZiBpdHMgYXJndW1lbnQuICgzLTRqKS5jb25qdWdhdGUoKSA9PSAzKzRqLgAAAAAAAAAAAAAAAAAAAF9fY29tcGxleF9fKCRzZWxmLCAvKQotLQoKQ29udmVydCB0aGlzIHZhbHVlIHRvIGV4YWN0IHR5cGUgY29tcGxleC4AAAAAAAAAAAAAAAAAX19nZXRuZXdhcmdzX18oJHNlbGYsIC8pCi0tCgoAAABfX2Zvcm1hdF9fKCRzZWxmLCBmb3JtYXRfc3BlYywgLykKLS0KCkNvbnZlcnQgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGZvcm1hdF9zcGVjLgAAAAAAAAAAAAAAAABwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkKLS0KClByb3BlcnR5IGF0dHJpYnV0ZS4KCiAgZmdldAogICAgZnVuY3Rpb24gdG8gYmUgdXNlZCBmb3IgZ2V0dGluZyBhbiBhdHRyaWJ1dGUgdmFsdWUKICBmc2V0CiAgICBmdW5jdGlvbiB0byBiZSB1c2VkIGZvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZSB2YWx1ZQogIGZkZWwKICAgIGZ1bmN0aW9uIHRvIGJlIHVzZWQgZm9yIGRlbCdpbmcgYW4gYXR0cmlidXRlCiAgZG9jCiAgICBkb2NzdHJpbmcKClR5cGljYWwgdXNlIGlzIHRvIGRlZmluZSBhIG1hbmFnZWQgYXR0cmlidXRlIHg6CgpjbGFzcyBDKG9iamVjdCk6CiAgICBkZWYgZ2V0eChzZWxmKTogcmV0dXJuIHNlbGYuX3gKICAgIGRlZiBzZXR4KHNlbGYsIHZhbHVlKTogc2VsZi5feCA9IHZhbHVlCiAgICBkZWYgZGVseChzZWxmKTogZGVsIHNlbGYuX3gKICAgIHggPSBwcm9wZXJ0eShnZXR4LCBzZXR4LCBkZWx4LCAiSSdtIHRoZSAneCcgcHJvcGVydHkuIikKCkRlY29yYXRvcnMgbWFrZSBkZWZpbmluZyBuZXcgcHJvcGVydGllcyBvciBtb2RpZnlpbmcgZXhpc3Rpbmcgb25lcyBlYXN5OgoKY2xhc3MgQyhvYmplY3QpOgogICAgQHByb3BlcnR5CiAgICBkZWYgeChzZWxmKToKICAgICAgICAiSSBhbSB0aGUgJ3gnIHByb3BlcnR5LiIKICAgICAgICByZXR1cm4gc2VsZi5feAogICAgQHguc2V0dGVyCiAgICBkZWYgeChzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5feCA9IHZhbHVlCiAgICBAeC5kZWxldGVyCiAgICBkZWYgeChzZWxmKToKICAgICAgICBkZWwgc2VsZi5feAAAAAAAAAAAAABEZXNjcmlwdG9yIHRvIG9idGFpbiBhIGNvcHkgb2YgdGhlIHByb3BlcnR5IHdpdGggYSBkaWZmZXJlbnQgZ2V0dGVyLgAAAAAAAAAAAAAAAERlc2NyaXB0b3IgdG8gb2J0YWluIGEgY29weSBvZiB0aGUgcHJvcGVydHkgd2l0aCBhIGRpZmZlcmVudCBzZXR0ZXIuAAAAAAAAAAAAAAAARGVzY3JpcHRvciB0byBvYnRhaW4gYSBjb3B5IG9mIHRoZSBwcm9wZXJ0eSB3aXRoIGEgZGlmZmVyZW50IGRlbGV0ZXIuAAAAAAAAAAAAAABNZXRob2QgdG8gc2V0IG5hbWUgb2YgYSBwcm9wZXJ0eS4AAAAAAAAAAAAAAAAAAABlbnVtZXJhdGUoaXRlcmFibGUsIHN0YXJ0PTApCi0tCgpSZXR1cm4gYW4gZW51bWVyYXRlIG9iamVjdC4KCiAgaXRlcmFibGUKICAgIGFuIG9iamVjdCBzdXBwb3J0aW5nIGl0ZXJhdGlvbgoKVGhlIGVudW1lcmF0ZSBvYmplY3QgeWllbGRzIHBhaXJzIGNvbnRhaW5pbmcgYSBjb3VudCAoZnJvbSBzdGFydCwgd2hpY2gKZGVmYXVsdHMgdG8gemVybykgYW5kIGEgdmFsdWUgeWllbGRlZCBieSB0aGUgaXRlcmFibGUgYXJndW1lbnQuCgplbnVtZXJhdGUgaXMgdXNlZnVsIGZvciBvYnRhaW5pbmcgYW4gaW5kZXhlZCBsaXN0OgogICAgKDAsIHNlcVswXSksICgxLCBzZXFbMV0pLCAoMiwgc2VxWzJdKSwgLi4uAAAAAAAAAAAAcmV2ZXJzZWQoc2VxdWVuY2UsIC8pCi0tCgpSZXR1cm4gYSByZXZlcnNlIGl0ZXJhdG9yIG92ZXIgdGhlIHZhbHVlcyBvZiB0aGUgZ2l2ZW4gc2VxdWVuY2UuAAAAAAAAUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4AAAAAAAAAAAAAUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuAAAAAAAAAAAAAFNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4AAAAAAAAAAAAAAEV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0YikgLS0KICAgIHNldCBzZWxmLl9fdHJhY2ViYWNrX18gdG8gdGIgYW5kIHJldHVybiBzZWxmLgAAAAAAAAAAAAAAAAAAAEV4Y2VwdGlvbi5hZGRfbm90ZShub3RlKSAtLQogICAgYWRkIGEgbm90ZSB0byB0aGUgZXhjZXB0aW9uAAAAAABSZXByZXNlbnQgYSBQRVAgNTg1IGdlbmVyaWMgdHlwZQoKRS5nLiBmb3IgdCA9IGxpc3RbaW50XSwgdC5fX29yaWdpbl9fIGlzIGxpc3QgYW5kIHQuX19hcmdzX18gaXMgKGludCwpLgAAAAAAAAAAc2VuZChhcmcpIC0+IHNlbmQgJ2FyZycgaW50byBnZW5lcmF0b3IsCnJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4AAAAAAAAAdGhyb3codmFsdWUpCnRocm93KHR5cGVbLHZhbHVlWyx0Yl1dKQoKUmFpc2UgZXhjZXB0aW9uIGluIGdlbmVyYXRvciwgcmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZQpTdG9wSXRlcmF0aW9uLgAAAAAAAAAAAABjbG9zZSgpIC0+IHJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGdlbmVyYXRvci4AAAAAAAAAAAAAAAAAAAAAZ2VuLl9fc2l6ZW9mX18oKSAtPiBzaXplIG9mIGdlbiBpbiBtZW1vcnksIGluIGJ5dGVzAAAAAAAAAAAAAAAAAHNlbmQoYXJnKSAtPiBzZW5kICdhcmcnIGludG8gY29yb3V0aW5lLApyZXR1cm4gbmV4dCBpdGVyYXRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLgAAAAAAAHRocm93KHZhbHVlKQp0aHJvdyh0eXBlWyx2YWx1ZVssdHJhY2ViYWNrXV0pCgpSYWlzZSBleGNlcHRpb24gaW4gY29yb3V0aW5lLCByZXR1cm4gbmV4dCBpdGVyYXRlZCB2YWx1ZSBvciByYWlzZQpTdG9wSXRlcmF0aW9uLgAAY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBjb3JvdXRpbmUuAAAAAAAAAAAAAAAAAAAAAGFzZW5kKHYpIC0+IHNlbmQgJ3YnIGluIGdlbmVyYXRvci4AAAAAAAAAAAAAAAAAAGF0aHJvdyh0eXBbLHZhbFssdGJdXSkgLT4gcmFpc2UgZXhjZXB0aW9uIGluIGdlbmVyYXRvci4AAAAAAAAAAABhY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuAAAAAAAAAAAAAAAAAAAAZmxvYXQoeD0wLCAvKQotLQoKQ29udmVydCBhIHN0cmluZyBvciBudW1iZXIgdG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIGlmIHBvc3NpYmxlLgAAAAAAAAAAAAAAY29uanVnYXRlKCRzZWxmLCAvKQotLQoKUmV0dXJuIHNlbGYsIHRoZSBjb21wbGV4IGNvbmp1Z2F0ZSBvZiBhbnkgZmxvYXQuAAAAAAAAAABfX3RydW5jX18oJHNlbGYsIC8pCi0tCgpSZXR1cm4gdGhlIEludGVncmFsIGNsb3Nlc3QgdG8geCBiZXR3ZWVuIDAgYW5kIHguAAAAAAAAAF9fZmxvb3JfXygkc2VsZiwgLykKLS0KClJldHVybiB0aGUgZmxvb3IgYXMgYW4gSW50ZWdyYWwuAAAAAAAAAABfX2NlaWxfXygkc2VsZiwgLykKLS0KClJldHVybiB0aGUgY2VpbGluZyBhcyBhbiBJbnRlZ3JhbC4AAAAAAAAAX19yb3VuZF9fKCRzZWxmLCBuZGlnaXRzPU5vbmUsIC8pCi0tCgpSZXR1cm4gdGhlIEludGVncmFsIGNsb3Nlc3QgdG8geCwgcm91bmRpbmcgaGFsZiB0b3dhcmQgZXZlbi4KCldoZW4gYW4gYXJndW1lbnQgaXMgcGFzc2VkLCB3b3JrIGxpa2UgYnVpbHQtaW4gcm91bmQoeCwgbmRpZ2l0cykuAAAAAAAAAAAAAABhc19pbnRlZ2VyX3JhdGlvKCRzZWxmLCAvKQotLQoKUmV0dXJuIGludGVnZXIgcmF0aW8uCgpSZXR1cm4gYSBwYWlyIG9mIGludGVnZXJzLCB3aG9zZSByYXRpbyBpcyBleGFjdGx5IGVxdWFsIHRvIHRoZSBvcmlnaW5hbCBmbG9hdAphbmQgd2l0aCBhIHBvc2l0aXZlIGRlbm9taW5hdG9yLgoKUmFpc2UgT3ZlcmZsb3dFcnJvciBvbiBpbmZpbml0aWVzIGFuZCBhIFZhbHVlRXJyb3Igb24gTmFOcy4KCj4+PiAoMTAuMCkuYXNfaW50ZWdlcl9yYXRpbygpCigxMCwgMSkKPj4+ICgwLjApLmFzX2ludGVnZXJfcmF0aW8oKQooMCwgMSkKPj4+ICgtLjI1KS5hc19pbnRlZ2VyX3JhdGlvKCkKKC0xLCA0KQAAAAAAAAAAAAAAAAAAZnJvbWhleCgkdHlwZSwgc3RyaW5nLCAvKQotLQoKQ3JlYXRlIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGZyb20gYSBoZXhhZGVjaW1hbCBzdHJpbmcuCgo+Pj4gZmxvYXQuZnJvbWhleCgnMHgxLmZmZmZwMTAnKQoyMDQ3Ljk4NDM3NQo+Pj4gZmxvYXQuZnJvbWhleCgnLTB4MXAtMTA3NCcpCi01ZS0zMjQAAABoZXgoJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4KCj4+PiAoLTAuMSkuaGV4KCkKJy0weDEuOTk5OTk5OTk5OTk5YXAtNCcKPj4+IDMuMTQxNTkuaGV4KCkKJzB4MS45MjFmOWYwMWI4NjZlcCsxJwAAAAAAAAAAAAAAAGlzX2ludGVnZXIoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgZmxvYXQgaXMgYW4gaW50ZWdlci4AAAAAAAAAAAAAAAAAAAAAX19nZXRuZXdhcmdzX18oJHNlbGYsIC8pCi0tCgoAAABfX2dldGZvcm1hdF9fKCR0eXBlLCB0eXBlc3RyLCAvKQotLQoKWW91IHByb2JhYmx5IGRvbid0IHdhbnQgdG8gdXNlIHRoaXMgZnVuY3Rpb24uCgogIHR5cGVzdHIKICAgIE11c3QgYmUgJ2RvdWJsZScgb3IgJ2Zsb2F0Jy4KCkl0IGV4aXN0cyBtYWlubHkgdG8gYmUgdXNlZCBpbiBQeXRob24ncyB0ZXN0IHN1aXRlLgoKVGhpcyBmdW5jdGlvbiByZXR1cm5zIHdoaWNoZXZlciBvZiAndW5rbm93bicsICdJRUVFLCBiaWctZW5kaWFuJyBvciAnSUVFRSwKbGl0dGxlLWVuZGlhbicgYmVzdCBkZXNjcmliZXMgdGhlIGZvcm1hdCBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzIHVzZWQgYnkgdGhlCkMgdHlwZSBuYW1lZCBieSB0eXBlc3RyLgAAAAAAAAAAAF9fZm9ybWF0X18oJHNlbGYsIGZvcm1hdF9zcGVjLCAvKQotLQoKRm9ybWF0cyB0aGUgZmxvYXQgYWNjb3JkaW5nIHRvIGZvcm1hdF9zcGVjLgAAAAAAAAAAAAAAAAAAAHN5cy5mbG9hdF9pbmZvCgpBIG5hbWVkIHR1cGxlIGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZsb2F0IHR5cGUuIEl0IGNvbnRhaW5zIGxvdyBsZXZlbAppbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJlY2lzaW9uIGFuZCBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gUGxlYXNlIHN0dWR5CnlvdXIgc3lzdGVtJ3MgOmZpbGU6YGZsb2F0LmhgIGZvciBtb3JlIGluZm9ybWF0aW9uLgAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAA/////////////////////////////////////woAAAALAAAADAAAAA0AAAAOAAAADwAAAP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////CgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAAAAAAAAAAABGLmNsZWFyKCk6IGNsZWFyIG1vc3QgcmVmZXJlbmNlcyBoZWxkIGJ5IHRoZSBmcmFtZQAAAAAAAAAAAAAAAAAARi5fX3NpemVvZl9fKCkgLT4gc2l6ZSBvZiBGIGluIG1lbW9yeSwgaW4gYnl0ZXMAZnVuY3Rpb24oY29kZSwgZ2xvYmFscywgbmFtZT1Ob25lLCBhcmdkZWZzPU5vbmUsIGNsb3N1cmU9Tm9uZSkKLS0KCkNyZWF0ZSBhIGZ1bmN0aW9uIG9iamVjdC4KCiAgY29kZQogICAgYSBjb2RlIG9iamVjdAogIGdsb2JhbHMKICAgIHRoZSBnbG9iYWxzIGRpY3Rpb25hcnkKICBuYW1lCiAgICBhIHN0cmluZyB0aGF0IG92ZXJyaWRlcyB0aGUgbmFtZSBmcm9tIHRoZSBjb2RlIG9iamVjdAogIGFyZ2RlZnMKICAgIGEgdHVwbGUgdGhhdCBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzCiAgY2xvc3VyZQogICAgYSB0dXBsZSB0aGF0IHN1cHBsaWVzIHRoZSBiaW5kaW5ncyBmb3IgZnJlZSB2YXJpYWJsZXMAAAAAAAAAAAAAAAAAAABjbGFzc21ldGhvZChmdW5jdGlvbikgLT4gbWV0aG9kCgpDb252ZXJ0IGEgZnVuY3Rpb24gdG8gYmUgYSBjbGFzcyBtZXRob2QuCgpBIGNsYXNzIG1ldGhvZCByZWNlaXZlcyB0aGUgY2xhc3MgYXMgaW1wbGljaXQgZmlyc3QgYXJndW1lbnQsCmp1c3QgbGlrZSBhbiBpbnN0YW5jZSBtZXRob2QgcmVjZWl2ZXMgdGhlIGluc3RhbmNlLgpUbyBkZWNsYXJlIGEgY2xhc3MgbWV0aG9kLCB1c2UgdGhpcyBpZGlvbToKCiAgY2xhc3MgQzoKICAgICAgQGNsYXNzbWV0aG9kCiAgICAgIGRlZiBmKGNscywgYXJnMSwgYXJnMiwgLi4uKToKICAgICAgICAgIC4uLgoKSXQgY2FuIGJlIGNhbGxlZCBlaXRoZXIgb24gdGhlIGNsYXNzIChlLmcuIEMuZigpKSBvciBvbiBhbiBpbnN0YW5jZQooZS5nLiBDKCkuZigpKS4gIFRoZSBpbnN0YW5jZSBpcyBpZ25vcmVkIGV4Y2VwdCBmb3IgaXRzIGNsYXNzLgpJZiBhIGNsYXNzIG1ldGhvZCBpcyBjYWxsZWQgZm9yIGEgZGVyaXZlZCBjbGFzcywgdGhlIGRlcml2ZWQgY2xhc3MKb2JqZWN0IGlzIHBhc3NlZCBhcyB0aGUgaW1wbGllZCBmaXJzdCBhcmd1bWVudC4KCkNsYXNzIG1ldGhvZHMgYXJlIGRpZmZlcmVudCB0aGFuIEMrKyBvciBKYXZhIHN0YXRpYyBtZXRob2RzLgpJZiB5b3Ugd2FudCB0aG9zZSwgc2VlIHRoZSBzdGF0aWNtZXRob2QgYnVpbHRpbi4AAABzdGF0aWNtZXRob2QoZnVuY3Rpb24pIC0+IG1ldGhvZAoKQ29udmVydCBhIGZ1bmN0aW9uIHRvIGJlIGEgc3RhdGljIG1ldGhvZC4KCkEgc3RhdGljIG1ldGhvZCBkb2VzIG5vdCByZWNlaXZlIGFuIGltcGxpY2l0IGZpcnN0IGFyZ3VtZW50LgpUbyBkZWNsYXJlIGEgc3RhdGljIG1ldGhvZCwgdXNlIHRoaXMgaWRpb206CgogICAgIGNsYXNzIEM6CiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGYoYXJnMSwgYXJnMiwgLi4uKToKICAgICAgICAgICAgIC4uLgoKSXQgY2FuIGJlIGNhbGxlZCBlaXRoZXIgb24gdGhlIGNsYXNzIChlLmcuIEMuZigpKSBvciBvbiBhbiBpbnN0YW5jZQooZS5nLiBDKCkuZigpKS4gQm90aCB0aGUgY2xhc3MgYW5kIHRoZSBpbnN0YW5jZSBhcmUgaWdub3JlZCwgYW5kCm5laXRoZXIgaXMgcGFzc2VkIGltcGxpY2l0bHkgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBtZXRob2QuCgpTdGF0aWMgbWV0aG9kcyBpbiBQeXRob24gYXJlIHNpbWlsYXIgdG8gdGhvc2UgZm91bmQgaW4gSmF2YSBvciBDKysuCkZvciBhIG1vcmUgYWR2YW5jZWQgY29uY2VwdCwgc2VlIHRoZSBjbGFzc21ldGhvZCBidWlsdGluLgAAAAAAAAAAAAAAAEEgaW50ZXJwcmV0ZXIgSUQgaWRlbnRpZmllcyBhIGludGVycHJldGVyIGFuZCBtYXkgYmUgdXNlZCBhcyBhbiBpbnQuAAAAAAAAAAAAAAAAUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuAAAAAAAAAAAAAFJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuAAAAAAAAAAAAAFNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4AAAAAAAAAAAAAAHNlbmQoYXJnKSAtPiBzZW5kICdhcmcnIGludG8gdGhlIHdyYXBwZWQgaXRlcmF0b3IsCnJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4AAAAAAAAAAAAAAAB0aHJvdyh0eXBbLHZhbFssdGJdXSkgLT4gcmFpc2UgZXhjZXB0aW9uIGluIHRoZSB3cmFwcGVkIGl0ZXJhdG9yLApyZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uAAAAAAAAAAAAAAAAAGNsb3NlKCkgLT4gcmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgZ2VuZXJhdG9yLgAAAAAAAAAAAAAAAAAAAABsaXN0KGl0ZXJhYmxlPSgpLCAvKQotLQoKQnVpbHQtaW4gbXV0YWJsZSBzZXF1ZW5jZS4KCklmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSBsaXN0LgpUaGUgYXJndW1lbnQgbXVzdCBiZSBhbiBpdGVyYWJsZSBpZiBzcGVjaWZpZWQuAAAAAAAAAAAAAF9fcmV2ZXJzZWRfXygkc2VsZiwgLykKLS0KClJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgbGlzdC4AAAAAAAAAAAAAAAAAX19zaXplb2ZfXygkc2VsZiwgLykKLS0KClJldHVybiB0aGUgc2l6ZSBvZiB0aGUgbGlzdCBpbiBtZW1vcnksIGluIGJ5dGVzLgAAAAAAAABjbGVhcigkc2VsZiwgLykKLS0KClJlbW92ZSBhbGwgaXRlbXMgZnJvbSBsaXN0LgBjb3B5KCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBsaXN0LgAAAAAAAAAAAAAAYXBwZW5kKCRzZWxmLCBvYmplY3QsIC8pCi0tCgpBcHBlbmQgb2JqZWN0IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuAAAAAAAAAAAAAAAAAABpbnNlcnQoJHNlbGYsIGluZGV4LCBvYmplY3QsIC8pCi0tCgpJbnNlcnQgb2JqZWN0IGJlZm9yZSBpbmRleC4AZXh0ZW5kKCRzZWxmLCBpdGVyYWJsZSwgLykKLS0KCkV4dGVuZCBsaXN0IGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZS4AAAAAAAAAAAAAAAAAcG9wKCRzZWxmLCBpbmRleD0tMSwgLykKLS0KClJlbW92ZSBhbmQgcmV0dXJuIGl0ZW0gYXQgaW5kZXggKGRlZmF1bHQgbGFzdCkuCgpSYWlzZXMgSW5kZXhFcnJvciBpZiBsaXN0IGlzIGVtcHR5IG9yIGluZGV4IGlzIG91dCBvZiByYW5nZS4AAAAAAAAAcmVtb3ZlKCRzZWxmLCB2YWx1ZSwgLykKLS0KClJlbW92ZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHZhbHVlLgoKUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LgAAAGluZGV4KCRzZWxmLCB2YWx1ZSwgc3RhcnQ9MCwgc3RvcD1zeXMubWF4c2l6ZSwgLykKLS0KClJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZS4KClJhaXNlcyBWYWx1ZUVycm9yIGlmIHRoZSB2YWx1ZSBpcyBub3QgcHJlc2VudC4AAAAAAAAAAAAAAAAAAGNvdW50KCRzZWxmLCB2YWx1ZSwgLykKLS0KClJldHVybiBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgdmFsdWUuAAAAAAAAAAAAAAAAAAAAcmV2ZXJzZSgkc2VsZiwgLykKLS0KClJldmVyc2UgKklOIFBMQUNFKi4AAAAAAAAAc29ydCgkc2VsZiwgLywgKiwga2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpCi0tCgpTb3J0IHRoZSBsaXN0IGluIGFzY2VuZGluZyBvcmRlciBhbmQgcmV0dXJuIE5vbmUuCgpUaGUgc29ydCBpcyBpbi1wbGFjZSAoaS5lLiB0aGUgbGlzdCBpdHNlbGYgaXMgbW9kaWZpZWQpIGFuZCBzdGFibGUgKGkuZS4gdGhlCm9yZGVyIG9mIHR3byBlcXVhbCBlbGVtZW50cyBpcyBtYWludGFpbmVkKS4KCklmIGEga2V5IGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCBvbmNlIHRvIGVhY2ggbGlzdCBpdGVtIGFuZCBzb3J0IHRoZW0sCmFzY2VuZGluZyBvciBkZXNjZW5kaW5nLCBhY2NvcmRpbmcgdG8gdGhlaXIgZnVuY3Rpb24gdmFsdWVzLgoKVGhlIHJldmVyc2UgZmxhZyBjYW4gYmUgc2V0IHRvIHNvcnQgaW4gZGVzY2VuZGluZyBvcmRlci4AAABQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4AAAAAAAAAAAAAUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4AAAAAAAAAAAAAU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLgAAAAAAAAAAAAAAAAAAAP/////+////AQAAAAAAAAD/////AgAAAAEAAABpbnQoW3hdKSAtPiBpbnRlZ2VyCmludCh4LCBiYXNlPTEwKSAtPiBpbnRlZ2VyCgpDb252ZXJ0IGEgbnVtYmVyIG9yIHN0cmluZyB0byBhbiBpbnRlZ2VyLCBvciByZXR1cm4gMCBpZiBubyBhcmd1bWVudHMKYXJlIGdpdmVuLiAgSWYgeCBpcyBhIG51bWJlciwgcmV0dXJuIHguX19pbnRfXygpLiAgRm9yIGZsb2F0aW5nIHBvaW50Cm51bWJlcnMsIHRoaXMgdHJ1bmNhdGVzIHRvd2FyZHMgemVyby4KCklmIHggaXMgbm90IGEgbnVtYmVyIG9yIGlmIGJhc2UgaXMgZ2l2ZW4sIHRoZW4geCBtdXN0IGJlIGEgc3RyaW5nLApieXRlcywgb3IgYnl0ZWFycmF5IGluc3RhbmNlIHJlcHJlc2VudGluZyBhbiBpbnRlZ2VyIGxpdGVyYWwgaW4gdGhlCmdpdmVuIGJhc2UuICBUaGUgbGl0ZXJhbCBjYW4gYmUgcHJlY2VkZWQgYnkgJysnIG9yICctJyBhbmQgYmUgc3Vycm91bmRlZApieSB3aGl0ZXNwYWNlLiAgVGhlIGJhc2UgZGVmYXVsdHMgdG8gMTAuICBWYWxpZCBiYXNlcyBhcmUgMCBhbmQgMi0zNi4KQmFzZSAwIG1lYW5zIHRvIGludGVycHJldCB0aGUgYmFzZSBmcm9tIHRoZSBzdHJpbmcgYXMgYW4gaW50ZWdlciBsaXRlcmFsLgo+Pj4gaW50KCcwYjEwMCcsIGJhc2U9MCkKNAAAAGJpdF9sZW5ndGgoJHNlbGYsIC8pCi0tCgpOdW1iZXIgb2YgYml0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHNlbGYgaW4gYmluYXJ5LgoKPj4+IGJpbigzNykKJzBiMTAwMTAxJwo+Pj4gKDM3KS5iaXRfbGVuZ3RoKCkKNgAAYml0X2NvdW50KCRzZWxmLCAvKQotLQoKTnVtYmVyIG9mIG9uZXMgaW4gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWJzb2x1dGUgdmFsdWUgb2Ygc2VsZi4KCkFsc28ga25vd24gYXMgdGhlIHBvcHVsYXRpb24gY291bnQuCgo+Pj4gYmluKDEzKQonMGIxMTAxJwo+Pj4gKDEzKS5iaXRfY291bnQoKQozAAAAAAAAAAAAAAAAdG9fYnl0ZXMoJHNlbGYsIC8sIGxlbmd0aD0xLCBieXRlb3JkZXI9J2JpZycsICosIHNpZ25lZD1GYWxzZSkKLS0KClJldHVybiBhbiBhcnJheSBvZiBieXRlcyByZXByZXNlbnRpbmcgYW4gaW50ZWdlci4KCiAgbGVuZ3RoCiAgICBMZW5ndGggb2YgYnl0ZXMgb2JqZWN0IHRvIHVzZS4gIEFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGlmIHRoZQogICAgaW50ZWdlciBpcyBub3QgcmVwcmVzZW50YWJsZSB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2YgYnl0ZXMuICBEZWZhdWx0CiAgICBpcyBsZW5ndGggMS4KICBieXRlb3JkZXIKICAgIFRoZSBieXRlIG9yZGVyIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyLiAgSWYgYnl0ZW9yZGVyIGlzICdiaWcnLAogICAgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBieXRlIGFycmF5LiAgSWYKICAgIGJ5dGVvcmRlciBpcyAnbGl0dGxlJywgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyBhdCB0aGUgZW5kIG9mIHRoZQogICAgYnl0ZSBhcnJheS4gIFRvIHJlcXVlc3QgdGhlIG5hdGl2ZSBieXRlIG9yZGVyIG9mIHRoZSBob3N0IHN5c3RlbSwgdXNlCiAgICBgc3lzLmJ5dGVvcmRlcicgYXMgdGhlIGJ5dGUgb3JkZXIgdmFsdWUuICBEZWZhdWx0IGlzIHRvIHVzZSAnYmlnJy4KICBzaWduZWQKICAgIERldGVybWluZXMgd2hldGhlciB0d28ncyBjb21wbGVtZW50IGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyLgogICAgSWYgc2lnbmVkIGlzIEZhbHNlIGFuZCBhIG5lZ2F0aXZlIGludGVnZXIgaXMgZ2l2ZW4sIGFuIE92ZXJmbG93RXJyb3IKICAgIGlzIHJhaXNlZC4AAAAAAAAAAAAAAABmcm9tX2J5dGVzKCR0eXBlLCAvLCBieXRlcywgYnl0ZW9yZGVyPSdiaWcnLCAqLCBzaWduZWQ9RmFsc2UpCi0tCgpSZXR1cm4gdGhlIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGFycmF5IG9mIGJ5dGVzLgoKICBieXRlcwogICAgSG9sZHMgdGhlIGFycmF5IG9mIGJ5dGVzIHRvIGNvbnZlcnQuICBUaGUgYXJndW1lbnQgbXVzdCBlaXRoZXIKICAgIHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCBvciBiZSBhbiBpdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIGJ5dGVzLgogICAgQnl0ZXMgYW5kIGJ5dGVhcnJheSBhcmUgZXhhbXBsZXMgb2YgYnVpbHQtaW4gb2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlCiAgICBidWZmZXIgcHJvdG9jb2wuCiAgYnl0ZW9yZGVyCiAgICBUaGUgYnl0ZSBvcmRlciB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW50ZWdlci4gIElmIGJ5dGVvcmRlciBpcyAnYmlnJywKICAgIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYnl0ZSBhcnJheS4gIElmCiAgICBieXRlb3JkZXIgaXMgJ2xpdHRsZScsIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgaXMgYXQgdGhlIGVuZCBvZiB0aGUKICAgIGJ5dGUgYXJyYXkuICBUbyByZXF1ZXN0IHRoZSBuYXRpdmUgYnl0ZSBvcmRlciBvZiB0aGUgaG9zdCBzeXN0ZW0sIHVzZQogICAgYHN5cy5ieXRlb3JkZXInIGFzIHRoZSBieXRlIG9yZGVyIHZhbHVlLiAgRGVmYXVsdCBpcyB0byB1c2UgJ2JpZycuCiAgc2lnbmVkCiAgICBJbmRpY2F0ZXMgd2hldGhlciB0d28ncyBjb21wbGVtZW50IGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyLgAAYXNfaW50ZWdlcl9yYXRpbygkc2VsZiwgLykKLS0KClJldHVybiBpbnRlZ2VyIHJhdGlvLgoKUmV0dXJuIGEgcGFpciBvZiBpbnRlZ2Vycywgd2hvc2UgcmF0aW8gaXMgZXhhY3RseSBlcXVhbCB0byB0aGUgb3JpZ2luYWwgaW50CmFuZCB3aXRoIGEgcG9zaXRpdmUgZGVub21pbmF0b3IuCgo+Pj4gKDEwKS5hc19pbnRlZ2VyX3JhdGlvKCkKKDEwLCAxKQo+Pj4gKC0xMCkuYXNfaW50ZWdlcl9yYXRpbygpCigtMTAsIDEpCj4+PiAoMCkuYXNfaW50ZWdlcl9yYXRpbygpCigwLCAxKQBfX3JvdW5kX18oJHNlbGYsIG5kaWdpdHM9PHVucmVwcmVzZW50YWJsZT4sIC8pCi0tCgpSb3VuZGluZyBhbiBJbnRlZ3JhbCByZXR1cm5zIGl0c2VsZi4KClJvdW5kaW5nIHdpdGggYW4gbmRpZ2l0cyBhcmd1bWVudCBhbHNvIHJldHVybnMgYW4gaW50ZWdlci4AAAAAAAAAAAAAAAAAX19nZXRuZXdhcmdzX18oJHNlbGYsIC8pCi0tCgoAAABfX2Zvcm1hdF9fKCRzZWxmLCBmb3JtYXRfc3BlYywgLykKLS0KCgAAAAAAAAAAAABfX3NpemVvZl9fKCRzZWxmLCAvKQotLQoKUmV0dXJucyBzaXplIGluIG1lbW9yeSwgaW4gYnl0ZXMuAAAAAAAAc3lzLmludF9pbmZvCgpBIG5hbWVkIHR1cGxlIHRoYXQgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgUHl0aG9uJ3MKaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMuICBUaGUgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgAAAAAAAAAAAAAAZGljdCgpIC0+IG5ldyBlbXB0eSBkaWN0aW9uYXJ5CmRpY3QobWFwcGluZykgLT4gbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhIG1hcHBpbmcgb2JqZWN0J3MKICAgIChrZXksIHZhbHVlKSBwYWlycwpkaWN0KGl0ZXJhYmxlKSAtPiBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBhcyBpZiB2aWE6CiAgICBkID0ge30KICAgIGZvciBrLCB2IGluIGl0ZXJhYmxlOgogICAgICAgIGRba10gPSB2CmRpY3QoKiprd2FyZ3MpIC0+IG5ldyBkaWN0aW9uYXJ5IGluaXRpYWxpemVkIHdpdGggdGhlIG5hbWU9dmFsdWUgcGFpcnMKICAgIGluIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGxpc3QuICBGb3IgZXhhbXBsZTogIGRpY3Qob25lPTEsIHR3bz0yKQAAAAAAAAAAAAAAAAAAX19jb250YWluc19fKCRzZWxmLCBrZXksIC8pCi0tCgpUcnVlIGlmIHRoZSBkaWN0aW9uYXJ5IGhhcyB0aGUgc3BlY2lmaWVkIGtleSwgZWxzZSBGYWxzZS4AAAAAAAAAeC5fX2dldGl0ZW1fXyh5KSA8PT0+IHhbeV0AAAAAAABELl9fc2l6ZW9mX18oKSAtPiBzaXplIG9mIEQgaW4gbWVtb3J5LCBpbiBieXRlcwBnZXQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKQotLQoKUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIGtleSBpcyBpbiB0aGUgZGljdGlvbmFyeSwgZWxzZSBkZWZhdWx0LgAAAAAAAAAAc2V0ZGVmYXVsdCgkc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUsIC8pCi0tCgpJbnNlcnQga2V5IHdpdGggYSB2YWx1ZSBvZiBkZWZhdWx0IGlmIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuCgpSZXR1cm4gdGhlIHZhbHVlIGZvciBrZXkgaWYga2V5IGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlIGRlZmF1bHQuAAAAAAAAAAAAAAAAcG9wKCRzZWxmLCBrZXksIGRlZmF1bHQ9PHVucmVwcmVzZW50YWJsZT4sIC8pCi0tCgpELnBvcChrWyxkXSkgLT4gdiwgcmVtb3ZlIHNwZWNpZmllZCBrZXkgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZS4KCklmIHRoZSBrZXkgaXMgbm90IGZvdW5kLCByZXR1cm4gdGhlIGRlZmF1bHQgaWYgZ2l2ZW47IG90aGVyd2lzZSwKcmFpc2UgYSBLZXlFcnJvci4AAAAAAAAAAAAAAAAAAABwb3BpdGVtKCRzZWxmLCAvKQotLQoKUmVtb3ZlIGFuZCByZXR1cm4gYSAoa2V5LCB2YWx1ZSkgcGFpciBhcyBhIDItdHVwbGUuCgpQYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KSBvcmRlci4KUmFpc2VzIEtleUVycm9yIGlmIHRoZSBkaWN0IGlzIGVtcHR5LgAAAAAAAAAAAEQua2V5cygpIC0+IGEgc2V0LWxpa2Ugb2JqZWN0IHByb3ZpZGluZyBhIHZpZXcgb24gRCdzIGtleXMAAAAAAABELml0ZW1zKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3MgaXRlbXMAAAAARC52YWx1ZXMoKSAtPiBhbiBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3MgdmFsdWVzAAAAAAAAAAAAAEQudXBkYXRlKFtFLCBdKipGKSAtPiBOb25lLiAgVXBkYXRlIEQgZnJvbSBkaWN0L2l0ZXJhYmxlIEUgYW5kIEYuCklmIEUgaXMgcHJlc2VudCBhbmQgaGFzIGEgLmtleXMoKSBtZXRob2QsIHRoZW4gZG9lczogIGZvciBrIGluIEU6IERba10gPSBFW2tdCklmIEUgaXMgcHJlc2VudCBhbmQgbGFja3MgYSAua2V5cygpIG1ldGhvZCwgdGhlbiBkb2VzOiAgZm9yIGssIHYgaW4gRTogRFtrXSA9IHYKSW4gZWl0aGVyIGNhc2UsIHRoaXMgaXMgZm9sbG93ZWQgYnk6IGZvciBrIGluIEY6ICBEW2tdID0gRltrXQAAAGZyb21rZXlzKCR0eXBlLCBpdGVyYWJsZSwgdmFsdWU9Tm9uZSwgLykKLS0KCkNyZWF0ZSBhIG5ldyBkaWN0aW9uYXJ5IHdpdGgga2V5cyBmcm9tIGl0ZXJhYmxlIGFuZCB2YWx1ZXMgc2V0IHRvIHZhbHVlLgAAAAAAAAAAAAAARC5jbGVhcigpIC0+IE5vbmUuICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gRC4AAAAARC5jb3B5KCkgLT4gYSBzaGFsbG93IGNvcHkgb2YgRABfX3JldmVyc2VkX18oJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSByZXZlcnNlIGl0ZXJhdG9yIG92ZXIgdGhlIGRpY3Qga2V5cy4AAAAAAAAAAFByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLgAAAAAAAAAAAABSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgAAAAAAAAAAAABSZXR1cm4gVHJ1ZSBpZiB0aGUgdmlldyBhbmQgdGhlIGdpdmVuIGl0ZXJhYmxlIGhhdmUgYSBudWxsIGludGVyc2VjdGlvbi4AAAAAAAAAAFJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgZGljdCBrZXlzLgAAAFJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgZGljdCBpdGVtcy4AAFJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgZGljdCB2YWx1ZXMuAERpY3Rpb25hcnkgdGhhdCByZW1lbWJlcnMgaW5zZXJ0aW9uIG9yZGVyAAAAAAAAAGZyb21rZXlzKCR0eXBlLCAvLCBpdGVyYWJsZSwgdmFsdWU9Tm9uZSkKLS0KCkNyZWF0ZSBhIG5ldyBvcmRlcmVkIGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gaXRlcmFibGUgYW5kIHZhbHVlcyBzZXQgdG8gdmFsdWUuAAAAUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZwAAAAAAAAAAAAAAc2V0ZGVmYXVsdCgkc2VsZiwgLywga2V5LCBkZWZhdWx0PU5vbmUpCi0tCgpJbnNlcnQga2V5IHdpdGggYSB2YWx1ZSBvZiBkZWZhdWx0IGlmIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuCgpSZXR1cm4gdGhlIHZhbHVlIGZvciBrZXkgaWYga2V5IGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlIGRlZmF1bHQuAAAAAAAAAAAAAAAAcG9wKCRzZWxmLCAvLCBrZXksIGRlZmF1bHQ9PHVucmVwcmVzZW50YWJsZT4pCi0tCgpvZC5wb3Aoa2V5WyxkZWZhdWx0XSkgLT4gdiwgcmVtb3ZlIHNwZWNpZmllZCBrZXkgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZS4KCklmIHRoZSBrZXkgaXMgbm90IGZvdW5kLCByZXR1cm4gdGhlIGRlZmF1bHQgaWYgZ2l2ZW47IG90aGVyd2lzZSwKcmFpc2UgYSBLZXlFcnJvci4AAAAAAABwb3BpdGVtKCRzZWxmLCAvLCBsYXN0PVRydWUpCi0tCgpSZW1vdmUgYW5kIHJldHVybiBhIChrZXksIHZhbHVlKSBwYWlyIGZyb20gdGhlIGRpY3Rpb25hcnkuCgpQYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiBsYXN0IGlzIHRydWUgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4AAAAAAAAAAAAAAG9kLmNsZWFyKCkgLT4gTm9uZS4gIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSBvZC4AAG9kLmNvcHkoKSAtPiBhIHNoYWxsb3cgY29weSBvZiBvZAAAAAAAAAAAAAAAAAAAAG9kLl9fcmV2ZXJzZWRfXygpIDw9PT4gcmV2ZXJzZWQob2QpAAAAAAAAAAAAAAAAAG1vdmVfdG9fZW5kKCRzZWxmLCAvLCBrZXksIGxhc3Q9VHJ1ZSkKLS0KCk1vdmUgYW4gZXhpc3RpbmcgZWxlbWVudCB0byB0aGUgZW5kIChvciBiZWdpbm5pbmcgaWYgbGFzdCBpcyBmYWxzZSkuCgpSYWlzZSBLZXlFcnJvciBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBleGlzdC4AAABSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nAAAAAAAAAAAAAABtZW1vcnl2aWV3KG9iamVjdCkKLS0KCkNyZWF0ZSBhIG5ldyBtZW1vcnl2aWV3IG9iamVjdCB3aGljaCByZWZlcmVuY2VzIHRoZSBnaXZlbiBvYmplY3QuAAAAAAAAAAByZWxlYXNlKCRzZWxmLCAvKQotLQoKUmVsZWFzZSB0aGUgdW5kZXJseWluZyBidWZmZXIgZXhwb3NlZCBieSB0aGUgbWVtb3J5dmlldyBvYmplY3QuAAAAAAAAAAAAAAB0b2J5dGVzKCRzZWxmLCAvLCBvcmRlcj0nQycpCi0tCgpSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGUgc3RyaW5nLgoKT3JkZXIgY2FuIGJlIHsnQycsICdGJywgJ0EnfS4gV2hlbiBvcmRlciBpcyAnQycgb3IgJ0YnLCB0aGUgZGF0YSBvZiB0aGUKb3JpZ2luYWwgYXJyYXkgaXMgY29udmVydGVkIHRvIEMgb3IgRm9ydHJhbiBvcmRlci4gRm9yIGNvbnRpZ3VvdXMgdmlld3MsCidBJyByZXR1cm5zIGFuIGV4YWN0IGNvcHkgb2YgdGhlIHBoeXNpY2FsIG1lbW9yeS4gSW4gcGFydGljdWxhciwgaW4tbWVtb3J5CkZvcnRyYW4gb3JkZXIgaXMgcHJlc2VydmVkLiBGb3Igbm9uLWNvbnRpZ3VvdXMgdmlld3MsIHRoZSBkYXRhIGlzIGNvbnZlcnRlZAp0byBDIGZpcnN0LiBvcmRlcj1Ob25lIGlzIHRoZSBzYW1lIGFzIG9yZGVyPSdDJy4AAAAAAABoZXgoJHNlbGYsIC8sIHNlcD08dW5yZXByZXNlbnRhYmxlPiwgYnl0ZXNfcGVyX3NlcD0xKQotLQoKUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBzdHIgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy4KCiAgc2VwCiAgICBBbiBvcHRpb25hbCBzaW5nbGUgY2hhcmFjdGVyIG9yIGJ5dGUgdG8gc2VwYXJhdGUgaGV4IGJ5dGVzLgogIGJ5dGVzX3Blcl9zZXAKICAgIEhvdyBtYW55IGJ5dGVzIGJldHdlZW4gc2VwYXJhdG9ycy4gIFBvc2l0aXZlIHZhbHVlcyBjb3VudCBmcm9tIHRoZQogICAgcmlnaHQsIG5lZ2F0aXZlIHZhbHVlcyBjb3VudCBmcm9tIHRoZSBsZWZ0LgoKRXhhbXBsZToKPj4+IHZhbHVlID0gbWVtb3J5dmlldyhiJ1x4YjlceDAxXHhlZicpCj4+PiB2YWx1ZS5oZXgoKQonYjkwMWVmJwo+Pj4gdmFsdWUuaGV4KCc6JykKJ2I5OjAxOmVmJwo+Pj4gdmFsdWUuaGV4KCc6JywgMikKJ2I5OjAxZWYnCj4+PiB2YWx1ZS5oZXgoJzonLCAtMikKJ2I5MDE6ZWYnAAAAAAAAAAAAAAAAAAAAAHRvbGlzdCgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgbGlzdCBvZiBlbGVtZW50cy4AAAAAAAAAY2FzdCgkc2VsZiwgLywgZm9ybWF0LCBzaGFwZT08dW5yZXByZXNlbnRhYmxlPikKLS0KCkNhc3QgYSBtZW1vcnl2aWV3IHRvIGEgbmV3IGZvcm1hdCBvciBzaGFwZS4AdG9yZWFkb25seSgkc2VsZiwgLykKLS0KClJldHVybiBhIHJlYWRvbmx5IHZlcnNpb24gb2YgdGhlIG1lbW9yeXZpZXcuAAAAAAAAAAAAAABUaGUgdW5kZXJseWluZyBvYmplY3Qgb2YgdGhlIG1lbW9yeXZpZXcuAAAAAAAAAABUaGUgYW1vdW50IG9mIHNwYWNlIGluIGJ5dGVzIHRoYXQgdGhlIGFycmF5IHdvdWxkIHVzZSBpbgogYSBjb250aWd1b3VzIHJlcHJlc2VudGF0aW9uLgAAAAAAAAAAAABBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgcmVhZCBvbmx5LgAAAAAAAAAAAAAAAAAAVGhlIHNpemUgaW4gYnl0ZXMgb2YgZWFjaCBlbGVtZW50IG9mIHRoZSBtZW1vcnl2aWV3LgAAAAAAAAAAAAAAAEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCAoaW4gc3RydWN0IG1vZHVsZSBzdHlsZSkKIGZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIHZpZXcuAAAAAAAAAAAAAEFuIGludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaW1lbnNpb25zIG9mIGEgbXVsdGktZGltZW5zaW9uYWwKIGFycmF5IHRoZSBtZW1vcnkgcmVwcmVzZW50cy4AAEEgdHVwbGUgb2YgbmRpbSBpbnRlZ2VycyBnaXZpbmcgdGhlIHNoYXBlIG9mIHRoZSBtZW1vcnkKIGFzIGFuIE4tZGltZW5zaW9uYWwgYXJyYXkuAAAAAAAAAAAAAAAAAEEgdHVwbGUgb2YgbmRpbSBpbnRlZ2VycyBnaXZpbmcgdGhlIHNpemUgaW4gYnl0ZXMgdG8gYWNjZXNzCiBlYWNoIGVsZW1lbnQgZm9yIGVhY2ggZGltZW5zaW9uIG9mIHRoZSBhcnJheS4AAAAAAABBIHR1cGxlIG9mIGludGVnZXJzIHVzZWQgaW50ZXJuYWxseSBmb3IgUElMLXN0eWxlIGFycmF5cy4AAAAAAAAAQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEMgY29udGlndW91cy4AAAAAAAAAAAAAAEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBGb3J0cmFuIGNvbnRpZ3VvdXMuAAAAAABBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4AAAAAAAAAAAAAAAAAbW9kdWxlKG5hbWUsIGRvYz1Ob25lKQotLQoKQ3JlYXRlIGEgbW9kdWxlIG9iamVjdC4KClRoZSBuYW1lIG11c3QgYmUgYSBzdHJpbmc7IHRoZSBvcHRpb25hbCBkb2MgYXJndW1lbnQgY2FuIGhhdmUgYW55IHR5cGUuAAAAAABBIHNpbXBsZSBhdHRyaWJ1dGUtYmFzZWQgbmFtZXNwYWNlLgoKU2ltcGxlTmFtZXNwYWNlKCoqa3dhcmdzKQAAUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZwAAAAAAAAAAAAAAcmF3KCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgbWVtb3J5dmlldyBvZiB0aGUgcmF3IG1lbW9yeSB1bmRlcmx5aW5nIHRoaXMgYnVmZmVyLgpXaWxsIHJhaXNlIEJ1ZmZlckVycm9yIGlzIHRoZSBidWZmZXIgaXNuJ3QgY29udGlndW91cy4AAAAAAAAAAAAAcmVsZWFzZSgkc2VsZiwgLykKLS0KClJlbGVhc2UgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGV4cG9zZWQgYnkgdGhlIFBpY2tsZUJ1ZmZlciBvYmplY3QuAAAAAAAAAAAAcmFuZ2Uoc3RvcCkgLT4gcmFuZ2Ugb2JqZWN0CnJhbmdlKHN0YXJ0LCBzdG9wWywgc3RlcF0pIC0+IHJhbmdlIG9iamVjdAoKUmV0dXJuIGFuIG9iamVjdCB0aGF0IHByb2R1Y2VzIGEgc2VxdWVuY2Ugb2YgaW50ZWdlcnMgZnJvbSBzdGFydCAoaW5jbHVzaXZlKQp0byBzdG9wIChleGNsdXNpdmUpIGJ5IHN0ZXAuICByYW5nZShpLCBqKSBwcm9kdWNlcyBpLCBpKzEsIGkrMiwgLi4uLCBqLTEuCnN0YXJ0IGRlZmF1bHRzIHRvIDAsIGFuZCBzdG9wIGlzIG9taXR0ZWQhICByYW5nZSg0KSBwcm9kdWNlcyAwLCAxLCAyLCAzLgpUaGVzZSBhcmUgZXhhY3RseSB0aGUgdmFsaWQgaW5kaWNlcyBmb3IgYSBsaXN0IG9mIDQgZWxlbWVudHMuCldoZW4gc3RlcCBpcyBnaXZlbiwgaXQgc3BlY2lmaWVzIHRoZSBpbmNyZW1lbnQgKG9yIGRlY3JlbWVudCkuAAAAAAAAAAAAAAAAUmV0dXJuIGEgcmV2ZXJzZSBpdGVyYXRvci4AAAAAAAByYW5nZW9iamVjdC5jb3VudCh2YWx1ZSkgLT4gaW50ZWdlciAtLSByZXR1cm4gbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHZhbHVlAAAAAHJhbmdlb2JqZWN0LmluZGV4KHZhbHVlKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBpbmRleCBvZiB2YWx1ZS4KUmFpc2UgVmFsdWVFcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuAAAAAABQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4AAAAAAAAAAAAAUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4AAAAAAAAAAAAAU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLgAAAAAAAAAAAAAAc2V0KCkgLT4gbmV3IGVtcHR5IHNldCBvYmplY3QKc2V0KGl0ZXJhYmxlKSAtPiBuZXcgc2V0IG9iamVjdAoKQnVpbGQgYW4gdW5vcmRlcmVkIGNvbGxlY3Rpb24gb2YgdW5pcXVlIGVsZW1lbnRzLgAAAAAAAAAAAAAAAAAAAABmcm96ZW5zZXQoKSAtPiBlbXB0eSBmcm96ZW5zZXQgb2JqZWN0CmZyb3plbnNldChpdGVyYWJsZSkgLT4gZnJvemVuc2V0IG9iamVjdAoKQnVpbGQgYW4gaW1tdXRhYmxlIHVub3JkZXJlZCBjb2xsZWN0aW9uIG9mIHVuaXF1ZSBlbGVtZW50cy4AAAAAAABQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4AAAAAAAAAAAAAUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4AAAAAAAAAAAAAQWRkIGFuIGVsZW1lbnQgdG8gYSBzZXQuCgpUaGlzIGhhcyBubyBlZmZlY3QgaWYgdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBwcmVzZW50LgBSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhpcyBzZXQuAAAAAAAAAAAAAAAAAAB4Ll9fY29udGFpbnNfXyh5KSA8PT0+IHkgaW4geC4AAFJldHVybiBhIHNoYWxsb3cgY29weSBvZiBhIHNldC4AUmVtb3ZlIGFuIGVsZW1lbnQgZnJvbSBhIHNldCBpZiBpdCBpcyBhIG1lbWJlci4KClVubGlrZSBzZXQucmVtb3ZlKCksIHRoZSBkaXNjYXJkKCkgbWV0aG9kIGRvZXMgbm90IHJhaXNlCmFuIGV4Y2VwdGlvbiB3aGVuIGFuIGVsZW1lbnQgaXMgbWlzc2luZyBmcm9tIHRoZSBzZXQuAFJldHVybiB0aGUgZGlmZmVyZW5jZSBvZiB0d28gb3IgbW9yZSBzZXRzIGFzIGEgbmV3IHNldC4KCihpLmUuIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBpbiB0aGlzIHNldCBidXQgbm90IHRoZSBvdGhlcnMuKQAAAAAAAAAAAAAAUmVtb3ZlIGFsbCBlbGVtZW50cyBvZiBhbm90aGVyIHNldCBmcm9tIHRoaXMgc2V0LgAAAAAAAAAAAAAAAAAAAFJldHVybiB0aGUgaW50ZXJzZWN0aW9uIG9mIHR3byBzZXRzIGFzIGEgbmV3IHNldC4KCihpLmUuIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBpbiBib3RoIHNldHMuKQAAAFVwZGF0ZSBhIHNldCB3aXRoIHRoZSBpbnRlcnNlY3Rpb24gb2YgaXRzZWxmIGFuZCBhbm90aGVyLgAAAAAAAABSZXR1cm4gVHJ1ZSBpZiB0d28gc2V0cyBoYXZlIGEgbnVsbCBpbnRlcnNlY3Rpb24uAAAAAAAAAAAAAAAAAAAAUmVwb3J0IHdoZXRoZXIgYW5vdGhlciBzZXQgY29udGFpbnMgdGhpcyBzZXQuAAAAUmVwb3J0IHdoZXRoZXIgdGhpcyBzZXQgY29udGFpbnMgYW5vdGhlciBzZXQuAAAAUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5IHNldCBlbGVtZW50LgpSYWlzZXMgS2V5RXJyb3IgaWYgdGhlIHNldCBpcyBlbXB0eS4AAAAAAAAAAAAAAAAAAAAAUmVtb3ZlIGFuIGVsZW1lbnQgZnJvbSBhIHNldDsgaXQgbXVzdCBiZSBhIG1lbWJlci4KCklmIHRoZSBlbGVtZW50IGlzIG5vdCBhIG1lbWJlciwgcmFpc2UgYSBLZXlFcnJvci4AAAAAAAAAAAAAAFMuX19zaXplb2ZfXygpIC0+IHNpemUgb2YgUyBpbiBtZW1vcnksIGluIGJ5dGVzAFJldHVybiB0aGUgc3ltbWV0cmljIGRpZmZlcmVuY2Ugb2YgdHdvIHNldHMgYXMgYSBuZXcgc2V0LgoKKGkuZS4gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIGluIGV4YWN0bHkgb25lIG9mIHRoZSBzZXRzLikAAAAAAAAAAAAAAAAAVXBkYXRlIGEgc2V0IHdpdGggdGhlIHN5bW1ldHJpYyBkaWZmZXJlbmNlIG9mIGl0c2VsZiBhbmQgYW5vdGhlci4AAAAAAAAAAAAAAAAAAABSZXR1cm4gdGhlIHVuaW9uIG9mIHNldHMgYXMgYSBuZXcgc2V0LgoKKGkuZS4gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIGluIGVpdGhlciBzZXQuKQAAAAAAAAAAAAAAAABVcGRhdGUgYSBzZXQgd2l0aCB0aGUgdW5pb24gb2YgaXRzZWxmIGFuZCBvdGhlcnMuAAAAAAAAAAAAAAAAAAAAc2xpY2Uoc3RvcCkKc2xpY2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSkKCkNyZWF0ZSBhIHNsaWNlIG9iamVjdC4gIFRoaXMgaXMgdXNlZCBmb3IgZXh0ZW5kZWQgc2xpY2luZyAoZS5nLiBhWzA6MTA6Ml0pLgAAAAAAAAAAAAAAAABTLmluZGljZXMobGVuKSAtPiAoc3RhcnQsIHN0b3AsIHN0cmlkZSkKCkFzc3VtaW5nIGEgc2VxdWVuY2Ugb2YgbGVuZ3RoIGxlbiwgY2FsY3VsYXRlIHRoZSBzdGFydCBhbmQgc3RvcAppbmRpY2VzLCBhbmQgdGhlIHN0cmlkZSBsZW5ndGggb2YgdGhlIGV4dGVuZGVkIHNsaWNlIGRlc2NyaWJlZCBieQpTLiBPdXQgb2YgYm91bmRzIGluZGljZXMgYXJlIGNsaXBwZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZQpoYW5kbGluZyBvZiBub3JtYWwgc2xpY2VzLgAAAAAAAFJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuAAAAAAAAAAAAAG5fc2VxdWVuY2VfZmllbGRzAG5fZmllbGRzAAAAAAAAbl91bm5hbWVkX2ZpZWxkcwBfX21hdGNoX2FyZ3NfXwB0dXBsZShpdGVyYWJsZT0oKSwgLykKLS0KCkJ1aWx0LWluIGltbXV0YWJsZSBzZXF1ZW5jZS4KCklmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgcmV0dXJucyBhbiBlbXB0eSB0dXBsZS4KSWYgaXRlcmFibGUgaXMgc3BlY2lmaWVkIHRoZSB0dXBsZSBpcyBpbml0aWFsaXplZCBmcm9tIGl0ZXJhYmxlJ3MgaXRlbXMuCgpJZiB0aGUgYXJndW1lbnQgaXMgYSB0dXBsZSwgdGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgc2FtZSBvYmplY3QuAAAAAAAAAAAAAAAAAF9fZ2V0bmV3YXJnc19fKCRzZWxmLCAvKQotLQoKAAAAaW5kZXgoJHNlbGYsIHZhbHVlLCBzdGFydD0wLCBzdG9wPXN5cy5tYXhzaXplLCAvKQotLQoKUmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLgoKUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LgAAAAAAAAAAAAAAAAAAY291bnQoJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB2YWx1ZS4AAAAAAAAAAAAAAAAAAABQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4AAAAAAAAAAAAAUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4AAAAAAAAAAAAAU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLgAAAAAAAAAAAAAAAAAAAAAAUAAEAFAACAA4AAAAOAAEADgAIAAwAAAAMAA0ADAAJAAwABAAMABIADAAdAAwAIQAMABMADAAaAAwAHwAMABgADAAVAAwAHAAMABcADAAWAAwAGQAMABQADAAgAAwAGwAMABAADAAKAAwACwAMAAIADAAGAAwADwAMAAcADAAFAAwAAwAMAAwADAABAAwAHgAMAA4ADAAFAA0AAQANAAcADQAIAA0ACQANAAMADQAAAA0AAgANAD//5gA//+AAP//qAD//0AA//9gAP//GAD//7wA//+IAP//jAD//1gA//8gAP//SAD//zwA//+UAP//pAD//2wA//9wAP//dAD//5wA//8sAP//ZAD//yQA//9MAP//RAD//1wA//94AP//fAD//6AAiAAwAIwAMAAAACgABAAoAAgAKAD//8QADAAoAAAAAAAAAAAAdHlwZShvYmplY3QpIC0+IHRoZSBvYmplY3QncyB0eXBlCnR5cGUobmFtZSwgYmFzZXMsIGRpY3QsICoqa3dkcykgLT4gYSBuZXcgdHlwZQBvYmplY3QoKQotLQoKVGhlIGJhc2UgY2xhc3Mgb2YgdGhlIGNsYXNzIGhpZXJhcmNoeS4KCldoZW4gY2FsbGVkLCBpdCBhY2NlcHRzIG5vIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBhIG5ldyBmZWF0dXJlbGVzcwppbnN0YW5jZSB0aGF0IGhhcyBubyBpbnN0YW5jZSBhdHRyaWJ1dGVzIGFuZCBjYW5ub3QgYmUgZ2l2ZW4gYW55LgoAAAAAAABzdXBlcigpIC0+IHNhbWUgYXMgc3VwZXIoX19jbGFzc19fLCA8Zmlyc3QgYXJndW1lbnQ+KQpzdXBlcih0eXBlKSAtPiB1bmJvdW5kIHN1cGVyIG9iamVjdApzdXBlcih0eXBlLCBvYmopIC0+IGJvdW5kIHN1cGVyIG9iamVjdDsgcmVxdWlyZXMgaXNpbnN0YW5jZShvYmosIHR5cGUpCnN1cGVyKHR5cGUsIHR5cGUyKSAtPiBib3VuZCBzdXBlciBvYmplY3Q7IHJlcXVpcmVzIGlzc3ViY2xhc3ModHlwZTIsIHR5cGUpClR5cGljYWwgdXNlIHRvIGNhbGwgYSBjb29wZXJhdGl2ZSBzdXBlcmNsYXNzIG1ldGhvZDoKY2xhc3MgQyhCKToKICAgIGRlZiBtZXRoKHNlbGYsIGFyZyk6CiAgICAgICAgc3VwZXIoKS5tZXRoKGFyZykKVGhpcyB3b3JrcyBmb3IgY2xhc3MgbWV0aG9kcyB0b286CmNsYXNzIEMoQik6CiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBjbWV0aChjbHMsIGFyZyk6CiAgICAgICAgc3VwZXIoKS5jbWV0aChhcmcpCgAAAAAAAAAAAAAAAABtcm8oJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSB0eXBlJ3MgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIuAAAAAAAAX19zdWJjbGFzc2VzX18oJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSBsaXN0IG9mIGltbWVkaWF0ZSBzdWJjbGFzc2VzLgAAAAAAAAAAAAAAAABfX2luc3RhbmNlY2hlY2tfXygkc2VsZiwgaW5zdGFuY2UsIC8pCi0tCgpDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2UuAAAAAF9fc3ViY2xhc3NjaGVja19fKCRzZWxmLCBzdWJjbGFzcywgLykKLS0KCkNoZWNrIGlmIGEgY2xhc3MgaXMgYSBzdWJjbGFzcy4AAAAAAAAAX19kaXJfXygkc2VsZiwgLykKLS0KClNwZWNpYWxpemVkIF9fZGlyX18gaW1wbGVtZW50YXRpb24gZm9yIHR5cGVzLgAAAAAAAAAAAAAAAABfX3NpemVvZl9fKCRzZWxmLCAvKQotLQoKUmV0dXJuIG1lbW9yeSBjb25zdW1wdGlvbiBvZiB0aGUgdHlwZSBvYmplY3QuAAAAAAAAAAAAAF9fcmVkdWNlX2V4X18oJHNlbGYsIHByb3RvY29sLCAvKQotLQoKSGVscGVyIGZvciBwaWNrbGUuAAAAAAAAAABfX3JlZHVjZV9fKCRzZWxmLCAvKQotLQoKSGVscGVyIGZvciBwaWNrbGUuAAAAAABfX2dldHN0YXRlX18oJHNlbGYsIC8pCi0tCgpIZWxwZXIgZm9yIHBpY2tsZS4AAABBYnN0cmFjdCBjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGlzIHRvIGN1c3RvbWl6ZSBpc3N1YmNsYXNzKCkuCgpUaGlzIGlzIGludm9rZWQgZWFybHkgb24gYnkgYWJjLkFCQ01ldGEuX19zdWJjbGFzc2NoZWNrX18oKS4KSXQgc2hvdWxkIHJldHVybiBUcnVlLCBGYWxzZSBvciBOb3RJbXBsZW1lbnRlZC4gIElmIGl0IHJldHVybnMKTm90SW1wbGVtZW50ZWQsIHRoZSBub3JtYWwgYWxnb3JpdGhtIGlzIHVzZWQuICBPdGhlcndpc2UsIGl0Cm92ZXJyaWRlcyB0aGUgbm9ybWFsIGFsZ29yaXRobSAoYW5kIHRoZSBvdXRjb21lIGlzIGNhY2hlZCkuCgAAAAAAAAAAAAAAAFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgY2xhc3MgaXMgc3ViY2xhc3NlZC4KClRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy4gSXQgbWF5IGJlCm92ZXJyaWRkZW4gdG8gZXh0ZW5kIHN1YmNsYXNzZXMuCgAAAAAAAAAAAF9fZm9ybWF0X18oJHNlbGYsIGZvcm1hdF9zcGVjLCAvKQotLQoKRGVmYXVsdCBvYmplY3QgZm9ybWF0dGVyLgBfX3NpemVvZl9fKCRzZWxmLCAvKQotLQoKU2l6ZSBvZiBvYmplY3QgaW4gbWVtb3J5LCBpbiBi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ZGVFbmNvZGVFcnJvcnMuAAByZXBsYWNlKCRzZWxmLCBvbGQsIG5ldywgY291bnQ9LTEsIC8pCi0tCgpSZXR1cm4gYSBjb3B5IHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBvbGQgcmVwbGFjZWQgYnkgbmV3LgoKICBjb3VudAogICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS4KICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMuCgpJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXMgZ2l2ZW4sIG9ubHkgdGhlIGZpcnN0IGNvdW50IG9jY3VycmVuY2VzIGFyZQpyZXBsYWNlZC4AAAAAAAAAAHNwbGl0KCRzZWxmLCAvLCBzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpCi0tCgpSZXR1cm4gYSBsaXN0IG9mIHRoZSBzdWJzdHJpbmdzIGluIHRoZSBzdHJpbmcsIHVzaW5nIHNlcCBhcyB0aGUgc2VwYXJhdG9yIHN0cmluZy4KCiAgc2VwCiAgICBUaGUgc2VwYXJhdG9yIHVzZWQgdG8gc3BsaXQgdGhlIHN0cmluZy4KCiAgICBXaGVuIHNldCB0byBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSksIHdpbGwgc3BsaXQgb24gYW55IHdoaXRlc3BhY2UKICAgIGNoYXJhY3RlciAoaW5jbHVkaW5nIFxcbiBcXHIgXFx0IFxcZiBhbmQgc3BhY2VzKSBhbmQgd2lsbCBkaXNjYXJkCiAgICBlbXB0eSBzdHJpbmdzIGZyb20gdGhlIHJlc3VsdC4KICBtYXhzcGxpdAogICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIChzdGFydGluZyBmcm9tIHRoZSBsZWZ0KS4KICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuCgpOb3RlLCBzdHIuc3BsaXQoKSBpcyBtYWlubHkgdXNlZnVsIGZvciBkYXRhIHRoYXQgaGFzIGJlZW4gaW50ZW50aW9uYWxseQpkZWxpbWl0ZWQuICBXaXRoIG5hdHVyYWwgdGV4dCB0aGF0IGluY2x1ZGVzIHB1bmN0dWF0aW9uLCBjb25zaWRlciB1c2luZwp0aGUgcmVndWxhciBleHByZXNzaW9uIG1vZHVsZS4AAAByc3BsaXQoJHNlbGYsIC8sIHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkKLS0KClJldHVybiBhIGxpc3Qgb2YgdGhlIHN1YnN0cmluZ3MgaW4gdGhlIHN0cmluZywgdXNpbmcgc2VwIGFzIHRoZSBzZXBhcmF0b3Igc3RyaW5nLgoKICBzZXAKICAgIFRoZSBzZXBhcmF0b3IgdXNlZCB0byBzcGxpdCB0aGUgc3RyaW5nLgoKICAgIFdoZW4gc2V0IHRvIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSwgd2lsbCBzcGxpdCBvbiBhbnkgd2hpdGVzcGFjZQogICAgY2hhcmFjdGVyIChpbmNsdWRpbmcgXFxuIFxcciBcXHQgXFxmIGFuZCBzcGFjZXMpIGFuZCB3aWxsIGRpc2NhcmQKICAgIGVtcHR5IHN0cmluZ3MgZnJvbSB0aGUgcmVzdWx0LgogIG1heHNwbGl0CiAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgKHN0YXJ0aW5nIGZyb20gdGhlIGxlZnQpLgogICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4KClNwbGl0dGluZyBzdGFydHMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFuZCB3b3JrcyB0byB0aGUgZnJvbnQuAAAAAAAAAAAAAAAAAAAAam9pbigkc2VsZiwgaXRlcmFibGUsIC8pCi0tCgpDb25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIHN0cmluZ3MuCgpUaGUgc3RyaW5nIHdob3NlIG1ldGhvZCBpcyBjYWxsZWQgaXMgaW5zZXJ0ZWQgaW4gYmV0d2VlbiBlYWNoIGdpdmVuIHN0cmluZy4KVGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIG5ldyBzdHJpbmcuCgpFeGFtcGxlOiAnLicuam9pbihbJ2FiJywgJ3BxJywgJ3JzJ10pIC0+ICdhYi5wcS5ycycAAAAAAAAAY2FwaXRhbGl6ZSgkc2VsZiwgLykKLS0KClJldHVybiBhIGNhcGl0YWxpemVkIHZlcnNpb24gb2YgdGhlIHN0cmluZy4KCk1vcmUgc3BlY2lmaWNhbGx5LCBtYWtlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaGF2ZSB1cHBlciBjYXNlIGFuZCB0aGUgcmVzdCBsb3dlcgpjYXNlLgAAAAAAAGNhc2Vmb2xkKCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHN1aXRhYmxlIGZvciBjYXNlbGVzcyBjb21wYXJpc29ucy4AAAAAAAAAAHRpdGxlKCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2ggd29yZCBpcyB0aXRsZWNhc2VkLgoKTW9yZSBzcGVjaWZpY2FsbHksIHdvcmRzIHN0YXJ0IHdpdGggdXBwZXJjYXNlZCBjaGFyYWN0ZXJzIGFuZCBhbGwgcmVtYWluaW5nCmNhc2VkIGNoYXJhY3RlcnMgaGF2ZSBsb3dlciBjYXNlLgAAAAAAAAAAAAAAAAAAAABjZW50ZXIoJHNlbGYsIHdpZHRoLCBmaWxsY2hhcj0nICcsIC8pCi0tCgpSZXR1cm4gYSBjZW50ZXJlZCBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLgoKUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuAAAAUy5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnQKClJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgc3ViIGluCnN0cmluZyBTW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUKaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uAAAAAAAAAAAAAGV4cGFuZHRhYnMoJHNlbGYsIC8sIHRhYnNpemU9OCkKLS0KClJldHVybiBhIGNvcHkgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSBleHBhbmRlZCB1c2luZyBzcGFjZXMuCgpJZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4AAAAAAAAAAAAAUy5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludAoKUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gUyB3aGVyZSBzdWJzdHJpbmcgc3ViIGlzIGZvdW5kLApzdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gU1tzdGFydDplbmRdLiAgT3B0aW9uYWwKYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLgoKUmV0dXJuIC0xIG9uIGZhaWx1cmUuAAAAcGFydGl0aW9uKCRzZWxmLCBzZXAsIC8pCi0tCgpQYXJ0aXRpb24gdGhlIHN0cmluZyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCgpUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIGluIHRoZSBzdHJpbmcuICBJZiB0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLApyZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yCml0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LgoKSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIHN0cmluZwphbmQgdHdvIGVtcHR5IHN0cmluZ3MuAAAAUy5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnQKClJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIFMgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCwKc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIFNbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsCmFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4KClJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuAAAAAABsanVzdCgkc2VsZiwgd2lkdGgsIGZpbGxjaGFyPScgJywgLykKLS0KClJldHVybiBhIGxlZnQtanVzdGlmaWVkIHN0cmluZyBvZiBsZW5ndGggd2lkdGguCgpQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4AAAAAAAAAAAAAAAAAAGxvd2VyKCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuAAAAAAAAAAAAbHN0cmlwKCRzZWxmLCBjaGFycz1Ob25lLCAvKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuCgpJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuAAAAAAAAAAAAAAAAAABTLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludAoKUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIFMgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCwKc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIFNbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsCmFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4KClJldHVybiAtMSBvbiBmYWlsdXJlLgBTLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnQKClJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBTIHdoZXJlIHN1YnN0cmluZyBzdWIgaXMgZm91bmQsCnN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBTW3N0YXJ0OmVuZF0uICBPcHRpb25hbAphcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uCgpSYWlzZXMgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLgAAAHJqdXN0KCRzZWxmLCB3aWR0aCwgZmlsbGNoYXI9JyAnLCAvKQotLQoKUmV0dXJuIGEgcmlnaHQtanVzdGlmaWVkIHN0cmluZyBvZiBsZW5ndGggd2lkdGguCgpQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4AAAAAAAAAAAAAAAAAcnN0cmlwKCRzZWxmLCBjaGFycz1Ob25lLCAvKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmVkLgoKSWYgY2hhcnMgaXMgZ2l2ZW4gYW5kIG5vdCBOb25lLCByZW1vdmUgY2hhcmFjdGVycyBpbiBjaGFycyBpbnN0ZWFkLgAAAAAAAAAAAAAAAABycGFydGl0aW9uKCRzZWxmLCBzZXAsIC8pCi0tCgpQYXJ0aXRpb24gdGhlIHN0cmluZyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCgpUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIGluIHRoZSBzdHJpbmcsIHN0YXJ0aW5nIGF0IHRoZSBlbmQuIElmCnRoZSBzZXBhcmF0b3IgaXMgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZQpzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuCgpJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncwphbmQgdGhlIG9yaWdpbmFsIHN0cmluZy4AAAAAAAAAAAAAAAAAAHNwbGl0bGluZXMoJHNlbGYsIC8sIGtlZXBlbmRzPUZhbHNlKQotLQoKUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLgoKTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3QgdW5sZXNzIGtlZXBlbmRzIGlzIGdpdmVuIGFuZAp0cnVlLgAAAAAAAAAAAABzdHJpcCgkc2VsZiwgY2hhcnM9Tm9uZSwgLykKLS0KClJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC4KCklmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4AAHN3YXBjYXNlKCRzZWxmLCAvKQotLQoKQ29udmVydCB1cHBlcmNhc2UgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIHRvIHVwcGVyY2FzZS4AAAAAAAAAAAB0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvKQotLQoKUmVwbGFjZSBlYWNoIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIHVzaW5nIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KCiAgdGFibGUKICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgbWFwcGluZyBvZiBVbmljb2RlIG9yZGluYWxzIHRvCiAgICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzLCBvciBOb25lLgoKVGhlIHRhYmxlIG11c3QgaW1wbGVtZW50IGxvb2t1cC9pbmRleGluZyB2aWEgX19nZXRpdGVtX18sIGZvciBpbnN0YW5jZSBhCmRpY3Rpb25hcnkgb3IgbGlzdC4gIElmIHRoaXMgb3BlcmF0aW9uIHJhaXNlcyBMb29rdXBFcnJvciwgdGhlIGNoYXJhY3RlciBpcwpsZWZ0IHVudG91Y2hlZC4gIENoYXJhY3RlcnMgbWFwcGVkIHRvIE5vbmUgYXJlIGRlbGV0ZWQuAAAAAAB1cHBlcigkc2VsZiwgLykKLS0KClJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLgAAAAAAAAAAAFMuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sCgpSZXR1cm4gVHJ1ZSBpZiBTIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuCldpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgUyBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi4KV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIFMgYXQgdGhhdCBwb3NpdGlvbi4KcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2Ygc3RyaW5ncyB0byB0cnkuAAAAUy5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sCgpSZXR1cm4gVHJ1ZSBpZiBTIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLgpXaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IFMgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uCldpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBTIGF0IHRoYXQgcG9zaXRpb24uCnN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN0cmluZ3MgdG8gdHJ5LgAAAAAAAAByZW1vdmVwcmVmaXgoJHNlbGYsIHByZWZpeCwgLykKLS0KClJldHVybiBhIHN0ciB3aXRoIHRoZSBnaXZlbiBwcmVmaXggc3RyaW5nIHJlbW92ZWQgaWYgcHJlc2VudC4KCklmIHRoZSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHByZWZpeCBzdHJpbmcsIHJldHVybiBzdHJpbmdbbGVuKHByZWZpeCk6XS4KT3RoZXJ3aXNlLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcuAAAAAHJlbW92ZXN1ZmZpeCgkc2VsZiwgc3VmZml4LCAvKQotLQoKUmV0dXJuIGEgc3RyIHdpdGggdGhlIGdpdmVuIHN1ZmZpeCBzdHJpbmcgcmVtb3ZlZCBpZiBwcmVzZW50LgoKSWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHN1ZmZpeCBzdHJpbmcgYW5kIHRoYXQgc3VmZml4IGlzIG5vdCBlbXB0eSwKcmV0dXJuIHN0cmluZ1s6LWxlbihzdWZmaXgpXS4gT3RoZXJ3aXNlLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBvcmlnaW5hbApzdHJpbmcuAAAAAAAAAABpc2FzY2lpKCRzZWxmLCAvKQotLQoKUmV0dXJuIFRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgQVNDSUksIEZhbHNlIG90aGVyd2lzZS4KCkFTQ0lJIGNoYXJhY3RlcnMgaGF2ZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrMDA3Ri4KRW1wdHkgc3RyaW5nIGlzIEFTQ0lJIHRvby4AAAAAAAAAAABpc2xvd2VyKCRzZWxmLCAvKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIHN0cmluZyBpcyBhIGxvd2VyY2FzZSBzdHJpbmcsIEZhbHNlIG90aGVyd2lzZS4KCkEgc3RyaW5nIGlzIGxvd2VyY2FzZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2UgYW5kCnRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4AAAAAAGlzdXBwZXIoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGFuIHVwcGVyY2FzZSBzdHJpbmcsIEZhbHNlIG90aGVyd2lzZS4KCkEgc3RyaW5nIGlzIHVwcGVyY2FzZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2UgYW5kCnRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4AAAAAaXN0aXRsZSgkc2VsZiwgLykKLS0KClJldHVybiBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZS1jYXNlZCBzdHJpbmcsIEZhbHNlIG90aGVyd2lzZS4KCkluIGEgdGl0bGUtY2FzZWQgc3RyaW5nLCB1cHBlci0gYW5kIHRpdGxlLWNhc2UgY2hhcmFjdGVycyBtYXkgb25seQpmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuAAAAAAAAAAAAAAAAAAAAaXNzcGFjZSgkc2VsZiwgLykKLS0KClJldHVybiBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB3aGl0ZXNwYWNlIHN0cmluZywgRmFsc2Ugb3RoZXJ3aXNlLgoKQSBzdHJpbmcgaXMgd2hpdGVzcGFjZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSB3aGl0ZXNwYWNlIGFuZCB0aGVyZQppcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuAAAAAAAAAAAAAAAAAABpc2RlY2ltYWwoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgZGVjaW1hbCBzdHJpbmcsIEZhbHNlIG90aGVyd2lzZS4KCkEgc3RyaW5nIGlzIGEgZGVjaW1hbCBzdHJpbmcgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBhbmQKdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLgAAAAAAAAAAAAAAAGlzZGlnaXQoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgZGlnaXQgc3RyaW5nLCBGYWxzZSBvdGhlcndpc2UuCgpBIHN0cmluZyBpcyBhIGRpZ2l0IHN0cmluZyBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlCmlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4AAABpc251bWVyaWMoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgbnVtZXJpYyBzdHJpbmcsIEZhbHNlIG90aGVyd2lzZS4KCkEgc3RyaW5nIGlzIG51bWVyaWMgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBhbmQgdGhlcmUgaXMgYXQKbGVhc3Qgb25lIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLgAAAAAAaXNhbHBoYSgkc2VsZiwgLykKLS0KClJldHVybiBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYW4gYWxwaGFiZXRpYyBzdHJpbmcsIEZhbHNlIG90aGVyd2lzZS4KCkEgc3RyaW5nIGlzIGFscGhhYmV0aWMgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmQgdGhlcmUKaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLgAAAAAAAAAAAAAAAABpc2FsbnVtKCRzZWxmLCAvKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIHN0cmluZyBpcyBhbiBhbHBoYS1udW1lcmljIHN0cmluZywgRmFsc2Ugb3RoZXJ3aXNlLgoKQSBzdHJpbmcgaXMgYWxwaGEtbnVtZXJpYyBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYS1udW1lcmljIGFuZAp0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuAAAAAGlzaWRlbnRpZmllcigkc2VsZiwgLykKLS0KClJldHVybiBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBQeXRob24gaWRlbnRpZmllciwgRmFsc2Ugb3RoZXJ3aXNlLgoKQ2FsbCBrZXl3b3JkLmlza2V5d29yZChzKSB0byB0ZXN0IHdoZXRoZXIgc3RyaW5nIHMgaXMgYSByZXNlcnZlZCBpZGVudGlmaWVyLApzdWNoIGFzICJkZWYiIG9yICJjbGFzcyIuAAAAAABpc3ByaW50YWJsZSgkc2VsZiwgLykKLS0KClJldHVybiBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgcHJpbnRhYmxlLCBGYWxzZSBvdGhlcndpc2UuCgpBIHN0cmluZyBpcyBwcmludGFibGUgaWYgYWxsIG9mIGl0cyBjaGFyYWN0ZXJzIGFyZSBjb25zaWRlcmVkIHByaW50YWJsZSBpbgpyZXByKCkgb3IgaWYgaXQgaXMgZW1wdHkuAAAAAAAAAAB6ZmlsbCgkc2VsZiwgd2lkdGgsIC8pCi0tCgpQYWQgYSBudW1lcmljIHN0cmluZyB3aXRoIHplcm9zIG9uIHRoZSBsZWZ0LCB0byBmaWxsIGEgZmllbGQgb2YgdGhlIGdpdmVuIHdpZHRoLgoKVGhlIHN0cmluZyBpcyBuZXZlciB0cnVuY2F0ZWQuAAAAAABTLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpIC0+IHN0cgoKUmV0dXJuIGEgZm9ybWF0dGVkIHZlcnNpb24gb2YgUywgdXNpbmcgc3Vic3RpdHV0aW9ucyBmcm9tIGFyZ3MgYW5kIGt3YXJncy4KVGhlIHN1YnN0aXR1dGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgYnJhY2VzICgneycgYW5kICd9JykuAAAAAAAAAAAAAFMuZm9ybWF0X21hcChtYXBwaW5nKSAtPiBzdHIKClJldHVybiBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIFMsIHVzaW5nIHN1YnN0aXR1dGlvbnMgZnJvbSBtYXBwaW5nLgpUaGUgc3Vic3RpdHV0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBicmFjZXMgKCd7JyBhbmQgJ30nKS4AAAAAAABfX2Zvcm1hdF9fKCRzZWxmLCBmb3JtYXRfc3BlYywgLykKLS0KClJldHVybiBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgZGVzY3JpYmVkIGJ5IGZvcm1hdF9zcGVjLgAAAAAAbWFrZXRyYW5zKHgsIHk9PHVucmVwcmVzZW50YWJsZT4sIHo9PHVucmVwcmVzZW50YWJsZT4sIC8pCi0tCgpSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yIHN0ci50cmFuc2xhdGUoKS4KCklmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nIFVuaWNvZGUKb3JkaW5hbHMgKGludGVnZXJz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AB8qAAAAAAknHCoAAAAAAAAcKgAAAAAJJx4qAAAAAAAAHioAAAAACScu////AAAAAC7///8AAAknMv///wAAAAAy////AAAJJzP///8AAAAAM////wAACSc2////AAAAADb///8AAAknNf///wAAAAA1////AAAJJ0+lAAAAAAAAT6UAAAAACSdLpQAAAAAAAEulAAAAAAknMf///wAAAAAx////AAAJJyilAAAAAAAAKKUAAAAACSdEpQAAAAAAAESlAAAAAAknL////wAAAAAv////AAAJJy3///8AAAAALf///wAACSf3KQAAAAAAAPcpAAAAAAknQaUAAAAAAABBpQAAAAAJJ/0pAAAAAAAA/SkAAAAACScr////AAAAACv///8AAAknKv///wAAAAAq////AAAJJ+cpAAAAAAAA5ykAAAAACScm////AAAAACb///8AAAknQ6UAAAAAAABDpQAAAAAJJyqlAAAAAAAAKqUAAAAACSe7////AAAAALv///8AAAknJ////wAAAAAn////AAAJJ7n///8AAAAAuf///wAACScl////AAAAACX///8AAAknFaUAAAAAAAAVpQAAAAAJJxKlAAAAAAAAEqUAAAAACScAAAAAAAAAAAAAAAAAAAk3AAAAAAAAAAAAAAAAAAABFxwAAAEaABABHAAAAQAACHYAAAAAAAAAAAAAAAAAAAk0AAAAAHQAAAAAAAAAAACBJwAAAAAmAAAAAAAAAAAAgScAAAAAJQAAAAAAAAAAAIEnAAAAAEAAAAAAAAAAAACBJwAAAAA/AAAAAAAAAAAAgSchAAADHQAwASEAAAMAAAln2v///wAAAADa////AAAJJ9v///8AAAAA2////wAACScoAAADJAAwASgAAAMAAAlnLQAAASsAEAEtAAABAAAJZ8D///8AAAAAwP///wAACSfB////AAAAAMH///8AAAknAAAAAAgAAAAAAAAAAACBJzAAAAEuABABMAAAAQAACWczAAABMQAQATMAAAEAAAlnAAAAAAAAAAAAAAAAAACBJzYAAAE0ABABNgAAAQAACWc5AAABNwAQATkAAAEAAAln+P///wAAAAD4////AAAJJzwAAAE6ABABPAAAAQAACWc/AAABPQAQAT8AAAEAAAlnBwAAAAAAAAAHAAAAAAAJJ4z///8AAAAAjP//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ATACAAEAAAlnNAIAAjECIAE2AgABAAAJZzoCAAI3AiABPAIAAQAACWdAAgACPQIgAUICAAEAAAlnRgIAAkMCIAFIAgABAABBZ0wCAAJJAiABTgIAAQAAQWdSAgACTwIgAVQCAAEAAEFnWAIAAlUCIAFaAgABAABBZ14CAAJbAiABYAIAAQAAQWdkAgACYQIgAWYCAAEAAEFnagIAAmcCIAFsAgABAABBZ3ACAAJtAiABcgIAAQAAQWd2AgACcwIgAXgCAAEAAAlnfAIAAnkCIAF+AgABAAAJZ4ICAAJ/AiABhAIAAQAACWeIAgAChQIgAYoCAAEAAAlnjgIAAosCIAGQAgABAAAJZ5QCAAKRAiABlgIAAQAACWeaAgAClwIgAZwCAAEAAAlnoAIAAp0CIAGiAgABAAAJZ6YCAAKjAiABqAIAAQAAQWesAgACqQIgAa4CAAEAAEFnsgIAAq8CIAG0AgABAABBZ7gCAAK1AiABugIAAQAAQWe+AgACuwIgAcACAAEAAEFnxAIAAsECIAHGAgABAABBZ8oCAALHAiABzAIAAQAAQWfQAgACzQIgAdICAAEAAEFn1gIAAtMCIAHYAgACAAAJZ90CAALaAiAB3wIAAQAACWfjAgAC4AIgAeUCAAIAAAln6gIAAucCIAHqAgACAAAJZ/ACAAPsAjAB8wIAAwAACWcAAAAAtv///wAAAAAAAIEn+QIAAvYCIAH7AgABAABBZ/4CAAH8AhAB/gIAAQAACWcCAwAC/wIgAQQDAAIAAAlnCQMAAgYDIAELAwABAAAJZw8DAAIMAyABEQMAAgAACWcWAwACEwMgARYDAAIAAAlnHAMAAxgDMAEfAwADAAAJZwAAAACq////AAAAAAAAgSclAwACIgMgAScDAAEAAEFnLAMAAygDMAEsAwADAAAJZzMDAAMvAzABMwMAAwAACWc5AwACNgMgATkDAAIAAAlnPwMAAzsDMAE/AwADAAAJZwAAAACc////AAAAAAAAgSdGAwADQgMwAUYDAAMAAAlnTQMAA0kDMAFNAwADAAAJZ1MDAAJQAyABUwMAAgAACWdYAwACVQMgAVgDAAIAAAlnXgMAA1oDMAFeAwADAAAJZwAAAACQ////AAAAAAAAgSdkAwACYQMgAWYDAAIAAAlnawMAAmgDIAFtAwABAAAJZ3EDAAJuAyABcwMAAgAACWd4AwACdQMgAXgDAAIAAAlnfgMAA3oDMAGBAwADAAAJZwAAAACA////AAAAAAAAgScAAAAAgv///wAAAAAAAIEnhwMAAoQDIAGJAwABAABBZwAAAAAAAAAAAAAAAAAABAwAAAAAAAAAAAAAAAAABAQMAAAAAAAAAAAAAAAAAAUEDAAAAAAAAAAAAAAAAAAGBAwAAAAAAAAAAAAAAAAABwQMAAAAAAAAAAAAAAAAAAgEDAAAAAAAAAAAAAAAAAAJBAwAAAAAAAAAAAAAAAAAAAAHAAAAAKPi//8AAAAAAACBJwAAAABB3///AAAAAAAAgScAAAAAut///wAAAAAAAIEnAAAAABwAAAAAAAAAAACBJ+T///8AAAAA5P///wAACScAAAAAEAAAAAAAAAAAAIAv8P///wAAAADw////AAAILwAAAAAaAAAAAAAAAAAAgCTm////AAAAAOb///8AAAgkAAAAAAnW//8AAAAAAACBJwAAAAAa8f//AAAAAAAAgScAAAAAGdb//wAAAAAAAIEn1dX//wAAAADV1f//AAAJJ9jV//8AAAAA2NX//wAACScAAAAA5NX//wAAAAAAAIEnAAAAAAPW//8AAAAAAACBJwAAAADh1f//AAAAAAAAgScAAAAA4tX//wAAAAAAAIEnAAAAAMHV//8AAAAAAACBJ6Dj//8AAAAAoOP//wAACScAAAAAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAABDwAAAAD8df//AAAAAAAAgScAAAAA2Fr//wAAAAAAAIEnMAAAAAAAAAAwAAAAAAAJJwAAAAC8Wv//AAAAAAAAgScAAAAAsVr//wAAAAAAAIEnAAAAALVa//8AAAAAAACBJwAAAAC/Wv//AAAAAAAAgScAAAAA7lr//wAAAAAAAIEnAAAAANZa//8AAAAAAACBJwAAAADrWv//AAAAAAAAgScAAAAAoAMAAAAAAAAAAIEnAAAAAND///8AAAAAAACBJwAAAAC9Wv//AAAAAAAAgScAAAAAyHX//wAAAAAAAIEnYPz//wAAAABg/P//AAAJJ4wDAAGKAxABjAMAAQAACWePAwABjQMQAY8DAAEAAAlnkgMAAZADEAGSAwABAAAJZ5UDAAGTAxABlQMAAQAACWeYAwABlgMQAZgDAAEAAAlnmwMAAZkDEAGbAwABAAAJZ54DAAGcAxABngMAAQAACWehAwABnwMQAaEDAAEAAAlnpAMAAaIDEAGkAwABAAAJZ6cDAAGlAxABpwMAAQAACWeqAwABqAMQAaoDAAEAAAlnrQMAAasDEAGtAwABAAAJZ7ADAAGuAxABsAMAAQAACWezAwABsQMQAbMDAAEAAAlntgMAAbQDEAG2AwABAAAJZ7kDAAG3AxABuQMAAQAACWe8AwABugMQAbwDAAEAAAlnvwMAAb0DEAG/AwABAAAJZ8IDAAHAAxABwgMAAQAACWfFAwABwwMQAcUDAAEAAAlnyAMAAcYDEAHIAwABAAAJZ8sDAAHJAxABywMAAQAACWfOAwABzAMQAc4DAAEAAAln0QMAAc8DEAHRAwABAAAJZ9QDAAHSAxAB1AMAAQAACWfXAwAB1QMQAdcDAAEAAAln2gMAAdgDEAHaAwABAAAJZ90DAAHbAxAB3QMAAQAACWfgAwAB3gMQAeADAAEAAAln4wMAAeEDEAHjAwABAAAJZ+YDAAHkAxAB5gMAAQAACWfpAwAB5wMQAekDAAEAAAln7AMAAeoDEAHsAwABAAAJZ+8DAAHtAxAB7wMAAQAACWfyAwAB8AMQAfIDAAEAAAln9QMAAfMDEAH1AwABAAAJZ/gDAAH2AxAB+AMAAQAACWf7AwAB+QMQAfsDAAEAAAln/gMAAfwDEAH+AwABAAAJZwEEAAH/AxABAQQAAQAACWcEBAABAgQQAQQEAAEAAAlnBwQAAQUEEAEHBAABAAAJZwoEAAEIBBABCgQAAQAACWcNBAABCwQQAQ0EAAEAAAlnEAQAAQ4EEAEQBAABAAAJZxMEAAERBBABEwQAAQAACWcWBAABFAQQARYEAAEAAAlnGQQAARcEEAEZBAABAAAJZxwEAAEaBBABHAQAAQAACWcfBAABHQQQAR8EAAEAAAlnIgQAASAEEAEiBAABAAAJZyUEAAEjBBABJQQAAQAACWcoBAABJgQQASgEAAEAAAlnKwQAASkEEAErBAABAAAJZy4EAAEsBBABLgQAAQAACWcxBAABLwQQATEEAAEAAAlnNAQAATIEEAE0BAABAAAJZzcEAAE1BBABNwQAAQAACWc6BAABOAQQAToEAAEAAAlnPQQAATsEEAE9BAABAAAJZ0AEAAE+BBABQAQAAQAACWdDBAABQQQQAUMEAAEAAAlnRgQAAUQEEAFGBAABAAAJZ0kEAAFHBBABSQQAAQAACWdMBAABSgQQAUwEAAEAAAlnTwQAAU0EEAFPBAABAAAJZ1IEAAFQBBABUgQAAQAACWdVBAABUwQQAVUEAAEAAAlnWAQAAVYEEAFYBAABAAAJZ1sEAAFZBBABWwQAAQAACWdeBAABXAQQAV4EAAEAAAlnYQQAAV8EEAFhBAABAAAJZ2QEAAFiBBABZAQAAQAACWdnBAABZQQQAWcEAAEAAAlnagQAAWgEEAFqBAABAAAJZ20EAAFrBBABbQQAAQAACWdwBAABbgQQAXAEAAEAAAlncwQAAXEEEAFzBAABAAAJZ3YEAAF0BBABdgQAAQAACWd5BAABdwQQAXkEAAEAAAlnfQQAAnoEIAF/BAACAAAJZ4QEAAKBBCABhgQAAgAACWeLBAACiAQgAY0EAAIAAAlnkwQAA48EMAGWBAADAAAJZ50EAAOZBDABoAQAAwAACWemBAACowQgAagEAAIAAAlnrQQAAqoEIAGvBAACAAAJZ7QEAAKxBCABtgQAAgAACWe7BAACuAQgAb0EAAIAAAlnwgQAAr8EIAHEBAACAAAJZ8kEAALGBCABywQAAgAACWfQBAACzQQgAdIEAAIAAAlnAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAARYAAAAAKAAAAAAAAAAAAIEn2P///wAAAADY////AAAJJwAAAAAnAAAAAAAAAAAAgSfZ////AAAAANn///8AAAknAAAAACIAAAAAAAAAAACBJ97///8AAAAA3v///wAACScAAAAAAAAAAAAAAAAAAIAktQAAALwDAACcAwAA3wAAAHMAAABzAAAAUwAAAFMAAABTAAAAcwAAAGkAAAAHAwAAMAEAAEkBAAC8AgAAbgAAALwCAABOAAAAfwEAAHMAAABTAAAA8AEAAGoAAAAMAwAASgAAAAwDAABFAwAAuQMAAJkDAACQAwAAuQMAAAgDAAABAwAAmQMAAAgDAAABAwAAsAMAAMUDAAAIAwAAAQMAAKUDAAAIAwAAAQMAAMIDAADDAwAAowMAANADAACyAwAAkgMAANEDAAC4AwAAmAMAANUDAADGAwAApgMAANYDAADAAwAAoAMAAPADAAC6AwAAmgMAAPEDAADBAwAAoQMAAPUDAAC1AwAAlQMAAIcFAABlBQAAggUAADUFAABSBQAANQUAAIIFAABwqwAAoBMAAKATAABxqwAAoRMAAKETAAByqwAAohMAAKITAABzqwAAoxMAAKMTAAB0qwAApBMAAKQTAAB1qwAApRMAAKUTAAB2qwAAphMAAKYTAAB3qwAApxMAAKcTAAB4qwAAqBMAAKgTAAB5qwAAqRMAAKkTAAB6qwAAqhMAAKoTAAB7qwAAqxMAAKsTAAB8qwAArBMAAKwTAAB9qwAArRMAAK0TAAB+qwAArhMAAK4TAAB/qwAArxMAAK8TAACAqwAAsBMAALATAACBqwAAsRMAALETAACCqwAAshMAALITAACDqwAAsxMAALMTAACEqwAAtBMAALQTAACFqwAAtRMAALUTAACGqwAAthMAALYTAACHqwAAtxMAALcTAACIqwAAuBMAALgTAACJqwAAuRMAALkTAACKqwAAuhMAALoTAACLqwAAuxMAALsTAACMqwAAvBMAALwTAACNqwAAvRMAAL0TAACOqwAAvhMAAL4TAACPqwAAvxMAAL8TAACQqwAAwBMAAMATAACRqwAAwRMAAMETAACSqwAAwhMAAMITAACTqwAAwxMAAMMTAACUqwAAxBMAAMQTAACVqwAAxRMAAMUTAACWqwAAxhMAAMYTAACXqwAAxxMAAMcTAACYqwAAyBMAAMgTAACZqwAAyRMAAMkTAACaqwAAyhMAAMoTAACbqwAAyxMAAMsTAACcqwAAzBMAAMwTAACdqwAAzRMAAM0TAACeqwAAzhMAAM4TAACfqwAAzxMAAM8TAACgqwAA0BMAANATAAChqwAA0RMAANETAACiqwAA0hMAANITAACjqwAA0xMAANMTAACkqwAA1BMAANQTAAClqwAA1RMAANUTAACmqwAA1hMAANYTAACnqwAA1xMAANcTAACoqwAA2BMAANgTAACpqwAA2RMAANkTAACqqwAA2hMAANoTAACrqwAA2xMAANsTAACsqwAA3BMAANwTAACtqwAA3RMAAN0TAACuqwAA3hMAAN4TAACvqwAA3xMAAN8TAACwqwAA4BMAAOATAACxqwAA4RMAAOETAACyqwAA4hMAAOITAACzqwAA4xMAAOMTAAC0qwAA5BMAAOQTAAC1qwAA5RMAAOUTAAC2qwAA5hMAAOYTAAC3qwAA5xMAAOcTAAC4qwAA6BMAAOgTAAC5qwAA6RMAAOkTAAC6qwAA6hMAAOoTAAC7qwAA6xMAAOsTAAC8qwAA7BMAAOwTAAC9qwAA7RMAAO0TAAC+qwAA7hMAAO4TAAC/qwAA7xMAAO8TAAD4EwAA8BMAAPATAAD5EwAA8RMAAPETAAD6EwAA8hMAAPITAAD7EwAA8xMAAPMTAAD8EwAA9BMAAPQTAAD9EwAA9RMAAPUTAAD4EwAA8BMAAPATAAD5EwAA8RMAAPETAAD6EwAA8hMAAPITAAD7EwAA8xMAAPMTAAD8EwAA9BMAAPQTAAD9EwAA9RMAAPUTAACAHAAAMgQAABIEAACBHAAANAQAABQEAACCHAAAPgQAAB4EAACDHAAAQQQAACEEAACEHAAAQgQAACIEAACFHAAAQgQAACIEAACGHAAASgQAACoEAACHHAAAYwQAAGIEAACIHAAAS6YAAEqmAACWHgAAaAAAADEDAABIAAAAMQMAAJceAAB0AAAACAMAAFQAAAAIAwAAmB4AAHcAAAAKAwAAVwAAAAoDAACZHgAAeQAAAAoDAABZAAAACgMAAJoeAABhAAAAvgIAAEEAAAC+AgAAmx4AAGEeAABgHgAA3wAAAHMAAABzAAAAnh4AAFAfAADFAwAAEwMAAKUDAAATAwAAUh8AAMUDAAATAwAAAAMAAKUDAAATAwAAAAMAAFQfAADFAwAAEwMAAAEDAAClAwAAEwMAAAEDAABWHwAAxQMAABMDAABCAwAApQMAABMDAABCAwAAgB8AAAAfAAC5AwAACB8AAJkDAACIHwAAgR8AAAEfAAC5AwAACR8AAJkDAACJHwAAgh8AAAIfAAC5AwAACh8AAJkDAACKHwAAgx8AAAMfAAC5AwAACx8AAJkDAACLHwAAhB8AAAQfAAC5AwAADB8AAJkDAACMHwAAhR8AAAUfAAC5AwAADR8AAJkDAACNHwAAhh8AAAYfAAC5AwAADh8AAJkDAACOHwAAhx8AAAcfAAC5AwAADx8AAJkDAACPHwAAgB8AAAAfAAC5AwAACB8AAJkDAACIHwAAgR8AAAEfAAC5AwAACR8AAJkDAACJHwAAgh8AAAIfAAC5AwAACh8AAJkDAACKHwAAgx8AAAMfAAC5AwAACx8AAJkDAACLHwAAhB8AAAQfAAC5AwAADB8AAJkDAACMHwAAhR8AAAUfAAC5AwAADR8AAJkDAACNHwAAhh8AAAYfAAC5AwAADh8AAJkDAACOHwAAhx8AAAcfAAC5AwAADx8AAJkDAACPHwAAkB8AACAfAAC5AwAAKB8AAJkDAACYHwAAkR8AACEfAAC5AwAAKR8AAJkDAACZHwAAkh8AACIfAAC5AwAAKh8AAJkDAACaHwAAkx8AACMfAAC5AwAAKx8AAJkDAACbHwAAlB8AACQfAAC5AwAALB8AAJkDAACcHwAAlR8AACUfAAC5AwAALR8AAJkDAACdHwAAlh8AACYfAAC5AwAALh8AAJkDAACeHwAAlx8AACcfAAC5AwAALx8AAJkDAACfHwAAkB8AACAfAAC5AwAAKB8AAJkDAACYHwAAkR8AACEfAAC5AwAAKR8AAJkDAACZHwAAkh8AACIfAAC5AwAAKh8AAJkDAACaHwAAkx8AACMfAAC5AwAAKx8AAJkDAACbHwAAlB8AACQfAAC5AwAALB8AAJkDAACcHwAAlR8AACUfAAC5AwAALR8AAJkDAACdHwAAlh8AACYfAAC5AwAALh8AAJkDAACeHwAAlx8AACcfAAC5AwAALx8AAJkDAACfHwAAoB8AAGAfAAC5AwAAaB8AAJkDAACoHwAAoR8AAGEfAAC5AwAAaR8AAJkDAACpHwAAoh8AAGIfAAC5AwAAah8AAJkDAACqHwAAox8AAGMfAAC5AwAAax8AAJkDAACrHwAApB8AAGQfAAC5AwAAbB8AAJkDAACsHwAApR8AAGUfAAC5AwAAbR8AAJkDAACtHwAAph8AAGYfAAC5AwAAbh8AAJkDAACuHwAApx8AAGcfAAC5AwAAbx8AAJkDAACvHwAAoB8AAGAfAAC5AwAAaB8AAJkDAACoHwAAoR8AAGEfAAC5AwAAaR8AAJkDAACpHwAAoh8AAGIfAAC5AwAAah8AAJkDAACqHwAAox8AAGMfAAC5AwAAax8AAJkDAACrHwAApB8AAGQfAAC5AwAAbB8AAJkDAACsHwAApR8AAGUfAAC5AwAAbR8AAJkDAACtHwAAph8AAGYfAAC5AwAAbh8AAJkDAACuHwAApx8AAGcfAAC5AwAAbx8AAJkDAACvHwAAsh8AAHAfAAC5AwAAuh8AAJkDAAC6HwAARQMAALMfAACxAwAAuQMAAJEDAACZAwAAvB8AALQfAACsAwAAuQMAAIYDAACZAwAAhgMAAEUDAAC2HwAAsQMAAEIDAACRAwAAQgMAALcfAACxAwAAQgMAALkDAACRAwAAQgMAAJkDAACRAwAAQgMAAEUDAACzHwAAsQMAALkDAACRAwAAmQMAALwfAAC+HwAAuQMAAJkDAADCHwAAdB8AALkDAADKHwAAmQMAAMofAABFAwAAwx8AALcDAAC5AwAAlwMAAJkDAADMHwAAxB8AAK4DAAC5AwAAiQMAAJkDAACJAwAARQMAAMYfAAC3AwAAQgMAAJcDAABCAwAAxx8AALcDAABCAwAAuQMAAJcDAABCAwAAmQMAAJcDAABCAwAARQMAAMMfAAC3AwAAuQMAAJcDAACZAwAAzB8AANIfAAC5AwAACAMAAAADAACZAwAACAMAAAADAADTHwAAuQMAAAgDAAABAwAAmQMAAAgDAAABAwAA1h8AALkDAABCAwAAmQMAAEIDAADXHwAAuQMAAAgDAABCAwAAmQMAAAgDAABCAwAA4h8AAMUDAAAIAwAAAAMAAKUDAAAIAwAAAAMAAOMfAADFAwAACAMAAAEDAAClAwAACAMAAAEDAADkHwAAwQMAABMDAAChAwAAEwMAAOYfAADFAwAAQgMAAKUDAABCAwAA5x8AAMUDAAAIAwAAQgMAAKUDAAAIAwAAQgMAAPIfAAB8HwAAuQMAAPofAACZAwAA+h8AAEUDAADzHwAAyQMAALkDAACpAwAAmQMAAPwfAAD0HwAAzgMAALkDAACPAwAAmQMAAI8DAABFAwAA9h8AAMkDAABCAwAAqQMAAEIDAAD3HwAAyQMAAEIDAAC5AwAAqQMAAEIDAACZAwAAqQMAAEIDAABFAwAA8x8AAMkDAAC5AwAAqQMAAJkDAAD8HwAAcKsAAKATAACgEwAAcasAAKETAAChEwAAcqsAAKITAACiEwAAc6sAAKMTAACjEwAAdKsAAKQTAACkEwAAdasAAKUTAAClEwAAdqsAAKYTAACmEwAAd6sAAKcTAACnEwAAeKsAAKgTAACoEwAAeasAAKkTAACpEwAAeqsAAKoTAACqEwAAe6sAAKsTAACrEwAAfKsAAKwTAACsEwAAfasAAK0TAACtEwAAfqsAAK4TAACuEwAAf6sAAK8TAACvEwAAgKsAALATAACwEwAAgasAALETAACxEwAAgqsAALITAACyEwAAg6sAALMTAACzEwAAhKsAALQTAAC0EwAAhasAALUTAAC1EwAAhqsAALYTAAC2EwAAh6sAALcTAAC3EwAAiKsAALgTAAC4EwAAiasAALkTAAC5EwAAiqsAALoTAAC6EwAAi6sAALsTAAC7EwAAjKsAALwTAAC8EwAAjasAAL0TAAC9EwAAjqsAAL4TAAC+EwAAj6sAAL8TAAC/EwAAkKsAAMATAADAEwAAkasAAMETAADBEwAAkqsAAMITAADCEwAAk6sAAMMTAADDEwAAlKsAAMQTAADEEwAAlasAAMUTAADFEwAAlqsAAMYTAADGEwAAl6sAAMcTAADHEwAAmKsAAMgTAADIEwAAmasAAMkTAADJEwAAmqsAAMoTAADKEwAAm6sAAMsTAADLEwAAnKsAAMwTAADMEwAAnasAAM0TAADNEwAAnqsAAM4TAADOEwAAn6sAAM8TAADPEwAAoKsAANATAADQEwAAoasAANETAADREwAAoqsAANITAADSEwAAo6sAANMTAADTEwAApKsAANQTAADUEwAApasAANUTAADVEwAApqsAANYTAADWEwAAp6sAANcTAADXEwAAqKsAANgTAADYEwAAqasAANkTAADZEwAAqqsAANoTAADaEwAAq6sAANsTAADbEwAArKsAANwTAADcEwAArasAAN0TAADdEwAArqsAAN4TAADeEwAAr6sAAN8TAADfEwAAsKsAAOATAADgEwAAsasAAOETAADhEwAAsqsAAOITAADiEwAAs6sAAOMTAADjEwAAtKsAAOQTAADkEwAAtasAAOUTAADlEwAAtqsAAOYTAADmEwAAt6sAAOcTAADnEwAAuKsAAOgTAADoEwAAuasAAOkTAADpEwAAuqsAAOoTAADqEwAAu6sAAOsTAADrEwAAvKsAAOwTAADsEwAAvasAAO0TAADtEwAAvqsAAO4TAADuEwAAv6sAAO8TAADvEwAAAPsAAGYAAABmAAAARgAAAEYAAABGAAAAZgAAAAH7AABmAAAAaQAAAEYAAABJAAAARgAAAGkAAAAC+wAAZgAAAGwAAABGAAAATAAAAEYAAABsAAAAA/sAAGYAAABmAAAAaQAAAEYAAABGAAAASQAAAEYAAABmAAAAaQAAAAT7AABmAAAAZgAAAGwAAABGAAAARgAAAEwAAABGAAAAZgAAAGwAAAAF+wAAcwAAAHQAAABTAAAAVAAAAFMAAAB0AAAABvsAAHMAAAB0AAAAUwAAAFQAAABTAAAAdAAAABP7AAB0BQAAdgUAAEQFAABGBQAARAUAAHYFAAAU+wAAdAUAAGUFAABEBQAANQUAAEQFAABlBQAAFfsAAHQFAABrBQAARAUAADsFAABEBQAAawUAABb7AAB+BQAAdgUAAE4FAABGBQAATgUAAHYFAAAX+wAAdAUAAG0FAABEBQAAPQUAAEQFAABtBQAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACIAIwAkACUAJgAnACIAIgAiACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQABAAEAAQQBCAEAAQABAAEAAQwBEAEAAQABAAEAAQABAAEUARgBHAEgASQBKAEsATABAAE0ATgBPAFAAUQBSAFMAQABAAFQAVQAiACIAIgAiACIAIgBWACIAIgAiACIAIgBXACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiAFgAWQBaAFsAIgAiACIAXAAiACIAIgBdAF4AIgAiACIAIgAiAF8AIgAiACIAYAAiACIAIgAiACIAIgAiACIAIgAiAGEAYgBjACIAIgAiACIAIgAiAGQAZQAiACIAIgAiACIAIgAiACIAZgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAZwAiACIAIgAiACIAIgAiACIAaAAiACIAIgAiAGQAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiAGcAIgAiACIAIgAiACIAaQAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiAGoAawAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAbABtACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiAG4AIgAiACIAIgAiACIAIgAiAG8AIgAiAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7ACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiAHwAfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfgB/AIAAgQCCAIMAhAAiAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWACIAIgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAI8ApAClAKYApwCoAKkAqgCrAKwArQCuAI8ArwCwAI8AsQCyALMAtACPALUAtgC3ALgAuQC6AI8AjwC7ALwAvQC+AI8AvwCPAMAAIgAiACIAIgAiACIAIgDBAMIAIgDDAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwDEACIAIgAiACIAIgAiACIAIgDFAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AIgAiACIAIgDGAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AIgAiACIAIgDHAMgAyQDKAI8AjwCPAI8AywDMAM0AzgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAzwAiACIAIgAiACIAIgAiACIAIgDQANEAjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPANIAIgAiANMAIgAiANQAjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8A1QDWAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPANcA2ABAANkA2gDbANwA3QDeAI8A3wDgAOEA4gDjAOQA5QDmAEAAQABAAEAA5wDoAI8AjwCPAI8AjwCPAI8AjwDpAI8A6gCPAOsAjwCPAOwAjwCPAI8AjwCPAI8AjwCPAI8A7QAiAO4A7wCPAI8AjwCPAI8A8ADxAPIAjwDzAPQAjwCPAPUA9gD3APgA+QCPAEAA+gBAAEAAQABAAEAA+wD8AP0A/gD/AEAAQAAAAQEBQAACAY8AjwCPAI8AjwCPAI8AjwADAQQBBQEiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgBWAAYBIgAHAQgBIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIACQEiACIAIgAiACIAIgAiACIAIgAiACIACgEiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiAAsBIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiAAwBIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgANASIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAOASIADwEiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAEAEiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgARAY8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPACIACQEiACIAEgGPAI8AjwCPAI8AjwCPAI8AjwCPAI8AIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiABMBjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwAUAY8AFQEWAY8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AjwCPAI8AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQAXAX0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AFwEBAAEAAQABAAEAAQABAAEAAQACAAMAAwADAAMAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAMAAwADAAIABAAFAAUABQAFAAUABQAGAAUABQAFAAUABQAFAAYABQAHAAgACQAKAAsADAANAA4ADwAQAAYABQAFAAUABQAFAAUAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARAAUABQAFAAYAEgAGABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwAFAAUABQAFAAEAAQABAAEAAQABAAMAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAIABQAFAAUABQAFAAUABQAGAAUAFAAFAAUAFQAFAAYABQAFABYAFwAGABgABQAZAAYAGgAUAAUAGwAbABsABQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEABQARABEAEQARABEAEQARABwAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATAAUAEwATABMAEwATABMAEwAdAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfACAAIQAeAB8AHgAfAB4AHwAUAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AIgAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfACMAHgAfAB4AHwAeAB8AJAAlACYAHgAfAB4AHwAnAB4AHwAoACgAHgAfABQAKQAqACsAHgAfACgALAAtAC4ALwAeAB8AMAAUAC4AMQAyADMAHgAfAB4AHwAeAB8ANAAeAB8ANAAUABQAHgAfADQAHgAfADUANQAeAB8AHgAfADYAHgAfABQANwAeAB8AFAA4ADcANwA3ADcAOQA6ADsAOQA6ADsAOQA6ADsAHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwA8AB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAD0AOQA6ADsAHgAfAD4APwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAEAAFAAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAUABQAFAAUABQAFABBAB4AHwBCAEMARABEAB4AHwBFAEYARwAeAB8AHgAfAB4AHwAeAB8AHgAfAEgASQBKAEsATAAUAE0ATQAUAE4AFABPAFAAFAAUABQATQBRABQAUgAUAFMAVAAUAFUAVgBUAFcAWAAUABQAVgAUAFkAWgAUABQAWwAUABQAFAAUABQAFAAUAFwAFAAUAF0AFABeAF0AFAAUABQAXwBdAGAAYQBhAGIAFAAUABQAFAAUAGMAFAA3ABQAFAAUABQAFAAUABQAFABkAGUAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAGYAZgBmAGYAZgBmAGYAZgBmAGcAZwBnAGcAZwBnAGcAZgBmAAYABgAGAAYAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAGYAZgBmAGYAZgAGAAYABgAGAAYABgAGAGcABgBnAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQBoABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZAB4AHwAeAB8AZwAGAB4AHwAAAAAAaQAyADIAMgAFAGoAAAAAAAAAAAAGAAYAawAZAGwAbABsAAAAbQAAAG4AbgBvABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQAAABEAEQARABEAEQARABEAEQARAHAAcQBxAHEAcgATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAcwATABMAEwATABMAEwATABMAEwB0AHUAdQB2AHcAeAB5AHkAeQB6AHsAfAAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwB9AH4AfwCAAIEAggAFAB4AHwCDAB4AHwAUAEAAQABAAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAhACEAIQAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwCFAIUAhQCFAIUAhQCFAIUAhQCFAIUAhQCFAIUAhQCFAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8ABQAZABkAGQAZABkABgAGAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAIYAHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAIcAHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AAACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAAAAAAGcABQAFAAUABQAFAAYAFACJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAigAUAAUABQAAAAAABQAFAAUAAAAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAFABkABQAZABkABQAZABkABQAZAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAADcANwA3ADcABQAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVABUAFQAVABUAFQAFAAUABQAFAAUABQAFAAUABQAFABkAGQAZABkAGQAZABkAGQAZABkAGQAFABUABQAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AGcANwA3ADcANwA3ADcANwA3ADcANwAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAHAAgACQAKAAsADAANAA4ADwAQAAUABQAFAAUANwA3ABkANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcABQA3ABkAGQAZABkAGQAZABkAFQAFABkAGQAZABkAGQAZAGcAZwAZABkABQAZABkAGQAZADcANwAHAAgACQAKAAsADAANAA4ADwAQADcANwA3AAUABQA3AAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAABUANwAZADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAZABkAGQAZABkAGQAZABkAGQAZADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcACAAJAAoACwAMAA0ADgAPABAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAZABkAGQAZABkAGQAZABkAZwBnAAUABQAFAAUAZwAAAAAAGQAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkAGQAZAGcAGQAZABkAGQAZABkAGQAZABkAZwAZABkAGQBnABkAGQAZABkAGQAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZAAAAAAAFAAAANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAGADcANwA3ADcANwA3AAAAFQAVAAAAAAAAAAAAAAAAABkAGQAZABkAGQAZABkAGQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAZwAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAVABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQASADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAEgAZADcAEgASABIAGQAZABkAGQAZABkAGQAZABIAEgASABIAGQASABIANwAZABkAGQAZABkAGQAZADcANwA3ADcANwA3ADcANwA3ADcAGQAZAAUABQAHAAgACQAKAAsADAANAA4ADwAQAAUAZwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABIAEgAAADcANwA3ADcANwA3ADcANwAAAAAANwA3AAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwAAADcAAAAAAAAANwA3ADcANwAAAAAAGQA3ABIAEgASABkAGQAZABkAAAAAABIAEgAAAAAAEgASABkANwAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAADcANwAAADcANwA3ABkAGQAAAAAABwAIAAkACgALAAwADQAOAA8AEAA3ADcABQAFABsAGwAbABsAGwAbAAUABQA3AAUAGQAAAAAAGQAZABIAAAA3ADcANwA3ADcANwAAAAAAAAAAADcANwAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAADcANwA3ADcANwA3ADcAAAA3ADcAAAA3ADcAAAA3ADcAAAAAABkAAAASABIAEgAZABkAAAAAAAAAAAAZABkAAAAAABkAGQAZAAAAAAAAABkAAAAAAAAAAAAAAAAAAAA3ADcANwA3AAAANwAAAAAAAAAAAAAAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAGQAZADcANwA3ABkABQAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQASAAAANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3AAAANwA3AAAANwA3ADcANwA3AAAAAAAZADcAEgASABIAGQAZABkAGQAZAAAAGQAZABIAAAASABIAGQAAAAAANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcAGQAZAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAUABQAAAAAAAAAAAAAAAAAAADcAGQAZABkAGQAZABkAAAAZABIAEgAAADcANwA3ADcANwA3ADcANwAAAAAANwA3AAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwAAADcANwAAADcANwA3ADcANwAAAAAAGQA3ABIAGQASABkAGQAZABkAAAAAABIAEgAAAAAAEgASABkAAAAAAAAAAAAAAAAAAAAZABkAEgAAAAAAAAAAADcANwAAADcANwA3ABkAGQAAAAAABwAIAAkACgALAAwADQAOAA8AEAAFADcAGwAbABsAGwAbABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAZADcAAAA3ADcANwA3ADcANwAAAAAAAAA3ADcANwAAADcANwA3ADcAAAAAAAAANwA3AAAANwAAADcANwAAAAAAAAA3ADcAAAAAAAAANwA3ADcAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAASABIAGQASABIAAAAAAAAAEgASABIAAAASABIAEgAZAAAAAAA3AAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAGwAbABsABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAZABIAEgASABkANwA3ADcANwA3ADcANwA3AAAANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAZADcAGQAZABkAEgASABIAEgAAABkAGQAZAAAAGQAZABkAGQAAAAAAAAAAAAAAAAAAABkAGQAAADcANwA3AAAAAAA3AAAAAAA3ADcAGQAZAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAAAAAAAAAAAAAAAAAAABQAbABsAGwAbABsAGwAbAAUANwAZABIAEgAFADcANwA3ADcANwA3ADcANwAAADcANwA3AAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwA3ADcANwAAADcANwA3ADcANwAAAAAAGQA3ABIAGQASABIAEgASABIAAAAZABIAEgAAABIAEgAZABkAAAAAAAAAAAAAAAAAAAASABIAAAAAAAAAAAAAAAAANwA3AAAANwA3ABkAGQAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAADcANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQASABIANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkANwASABIAEgAZABkAGQAZAAAAEgASABIAAAASABIAEgAZADcABQAAAAAAAAAAADcANwA3ABIAGwAbABsAGwAbABsAGwA3ADcANwAZABkAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAGwAbABsAGwAbABsAGwAbABsABQA3ADcANwA3ADcANwAAABkAEgASAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwAAADcAAAAAADcANwA3ADcANwA3ADcAAAAAAAAAGQAAAAAAAAAAABIAEgASABkAGQAZAAAAGQAAABIAEgASABIAEgASABIAEgAAAAAAAAAAAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAAAAAASABIABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZADcAiwAZABkAGQAZABkAGQAZAAAAAAAAAAAABQA3ADcANwA3ADcANwBnABkAGQAZABkAGQAZABkAGQAFAAcACAAJAAoACwAMAA0ADgAPABAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3AAAANwAAADcANwA3ADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwAAADcANwA3ADcANwA3ADcANwA3ADcAGQA3AIsAGQAZABkAGQAZABkAGQAZABkANwAAAAAANwA3ADcANwA3AAAAZwAAABkAGQAZABkAGQAZAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAAAAAA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3AAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAZABkABQAFAAUABQAFAAUABwAIAAkACgALAAwADQAOAA8AEAAbABsAGwAbABsAGwAbABsAGwAbAAUAGQAFABkABQAZAAUABQAFAAUAEgASADcANwA3ADcANwA3ADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABIAGQAZABkAGQAZAAUAGQAZADcANwA3ADcANwAZABkAGQAZABkAGQAZABkAGQAZABkAAAAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAAAAUABQAFAAUABQAFAAUABQAZAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAEgASABkAGQAZABkAEgAZABkAGQAZABkAGQASABkAGQASABIAGQAZADcABwAIAAkACgALAAwADQAOAA8AEAAFAAUABQAFAAUABQA3ADcANwA3ADcANwASABIAGQAZADcANwA3ADcAGQAZABkANwASABIAEgA3ADcAEgASABIAEgASABIAEgA3ADcANwAZABkAGQAZADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQASABIAGQAZABIAEgASABIAEgASABkANwASAAcACAAJAAoACwAMAA0ADgAPABAAEgASABIAGQAFAAUAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAAAAjAAAAAAAAAAAAAAAjAAAAAAAjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQAFAGcAjQCNAI0ANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3AAAAAAA3ADcANwA3ADcANwA3AAAANwAAADcANwA3ADcAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAADcANwA3ADcAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcANwAAAAAANwA3ADcANwA3ADcANwAAADcAAAA3ADcANwA3AAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcANwAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAGQAZABkABQAFAAUABQAFAAUABQAFAAUAjgCPAJAAkQCSAJMAlACVAJYAGwAbABsAGwAbABsAGwAbABsAGwAbAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAACXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwAAAAAAO0A7gDvAPAA8QDyAAAAAAAFADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAIANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAUABQAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAFAAUABQDzAPMA8wA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkAGQASAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAZABIABQAFAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcAAAAZABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkAEgAZABkAGQAZABkAGQAZABIAEgASABIAEgASABIAEgAZABIAEgAZABkAGQAZABkAGQAZABkAGQAZABkABQAFAAUAZwAFAAUABQAFADcAGQAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAAbABsAGwAbABsAGwAbABsAGwAbAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAZABkAGQAVABkABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAZwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcA9AD0ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQA3AAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAABkAGQAZABIAEgASABIAGQAZABIAEgASAAAAAAAAAAAAEgASABkAEgASABIAEgASABIAGQAZABkAAAAAAAAAAAAFAAAAAAAAAAUABQAHAAgACQAKAAsADAANAA4ADwAQADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAI4AAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAZABIAEgAZAAAAAAAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABIAGQASABkAGQAZABkAGQAZABkAAAAZABIAGQASABIAGQAZABkAGQAZABkAGQAZABIAEgASABIAEgASABkAGQAZABkAGQAZABkAGQAZABkAAAAAABkABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAZwAFAAUABQAFAAUABQAAAAAAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZAAYAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQAZABkAEgA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQASABkAGQAZABkAGQASABkAEgASABIAEgASABkAEgASADcANwA3ADcANwA3ADcANwAAAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAZABkAGQAZABkAGQAZABkAGQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAZABkAEgA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwASABkAGQAZABkAEgASABkAGQASABkAGQAZADcANwAHAAgACQAKAAsADAANAA4ADwAQADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABIAGQAZABIAEgASABkAEgAZABkAGQASABIAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAEgASABIAEgASABIAEgASABkAGQAZABkAGQAZABkAGQASABIAGQAZAAAAAAAAAAUABQAFAAUABQAHAAgACQAKAAsADAANAA4ADwAQAAAAAAAAADcANwA3AAcACAAJAAoACwAMAA0ADgAPABAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAZwBnAGcAZwBnAGcABQAFAPUA9gD3APgA+QD6APsA/AD9AAAAAAAAAAAAAAAAAAAA/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gD+AP4A/gAAAAAA/gD+AP4ABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAZABkAGQAFABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAEgAZABkAGQAZABkAGQAZADcANwA3ADcAGQA3ADcANwA3ADcANwAZADcANwASABkAGQA3AAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFABmAP8AFAAUABQAAAEUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEBFAAUABQAFAAUABQAFAAUABQAFAAUABQAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAAIBAwEEAQUBBgEHARQAFAAIARQAHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8ACQEJAQkBCQEJAQkBCQEJAQoBCgEKAQoBCgEKAQoBCgEJAQkBCQEJAQkBCQEAAAAACgEKAQoBCgEKAQoBAAAAAAkBCQEJAQkBCQEJAQkBCQEKAQoBCgEKAQoBCgEKAQoBCQEJAQkBCQEJAQkBCQEJAQoBCgEKAQoBCgEKAQoBCgEJAQkBCQEJAQkBCQEAAAAACgEKAQoBCgEKAQoBAAAAAAsBCQEMAQkBDQEJAQ4BCQEAAAoBAAAKAQAACgEAAAoBCQEJAQkBCQEJAQkBCQEJAQoBCgEKAQoBCgEKAQoBCgEPAQ8BEAEQARABEAERAREBEgESARMBEwEUARQBAAAAABUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAQkBCQFFAUYBRwEAAEgBSQEKAQoBSgFKAUsBBgBMAQYABgAGAE0BTgFPAQAAUAFRAVIBUgFSAVIBUwEGAAYABgAJAQkBVAFVAQAAAABWAVcBCgEKAVgBWAEAAAYABgAGAAkBCQFZAVoBWwF/AFwBXQEKAQoBXgFeAYMABgAGAAYAAAAAAF8BYAFhAQAAYgFjAWQBZAFlAWUBZgEGAAYAAAACAAIAAgACAAIAAgACAAIAAgACAAIAFQAVABUAFQAVAAUABQAFAAUABQAFAAUABQAGAAYABQAFAAUABQAFAAUABQAFAAUABQAGAAUABQAGAAMAAwAVABUAFQAVABUAAgAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQASABIABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQASAAUABQAFAAUABQAFAAUABQAFAAUAAgAVABUAFQAVABUAAAAVABUAFQAVABUAFQAVABUAFQAVAGcBZgAAAAAAaAFpAWoBawFsAW0BBQAFAAUABQAFAGYAZwEaABYAFwBoAWkBagFrAWwBbQEFAAUABQAFAAUAAABmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkABgAGAAYABgAZAAYABgAGABkAGQAZABkAGQAZABkAGQAZABkAGQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQB5AAUABQAFAAUAeQAFAAUAFAB5AHkAeQAUABQAeQB5AHkAFAAFAHkABQAFAG4BeQB5AHkAeQB5AAUABQAFAAUABQAFAHkABQBvAQUAeQAFAHABcQF5AHkAbgEUAHkAeQByAXkAFAA3ADcANwA3ABQABQAFABQAFAB5AHkABQAFAAUABQAFAHkAFAAUABQAFAAFAAUABQAFAHMBBQAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAHQBdAF0AXQBdAF0AXQBdAF0AXQBdAF0AXQBdAF0AXQBdQF1AXUBdQF1AXUBdQF1AXUBdQF1AXUBdQF1AXUBdQHzAPMA8wAeAB8A8wDzAPMA8wAbAAUABQAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAFgAXAGgBaQFqAWsBbAFtARsAGwAbABsAGwAbABsAGwAbABsAGwAaABYAFwBoAWkBagFrAWwBbQEbABsAGwAbABsAGwAbABsAGwAbABsAGgAWABcAaAFpAWoBawFsAW0BGwAbABsAGwAbABsAGwAbABsAGwAbAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQB2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdgF2AXYBdwF3AXcBdwF3AXcBdwF3AXcBdwF3AXcBdwF3AXcBdwF3AXcBdwF3AXcBdwF3AXcBdwF3AWcBGwAbABsAGwAbABsAGwAbABsAGwAaABYAFwBoAWkBagFrAWwBbQEbAGcBBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAaABYAFwBoAWkBagFrAWwBbQEbABoAFgAXAGgBaQFqAWsBbAFtARsAGgAWABcAaAFpAWoBawFsAW0BGwAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAB4AHwB4AXkBegF7AXwBHgAfAB4AHwAeAB8AfQF+AX8BgAEUAB4AHwAUAB4AHwAUABQAFAAUABQAZgBmAIEBgQEeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfABQABQAFAAUABQAFAAUAHgAfAB4AHwAZABkAGQAeAB8AAAAAAAAAAAAAAAUABQAFAAUAGwAFAAUAggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAYIBggGCAQAAggEAAAAAAAAAAAAAggEAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAZwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwAAADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwAAADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwAAABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAgwEFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAACAAUABQAFAAUAZwA3APMABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQDzAPMA8wDzAPMA8wDzAPMA8wAZABkAGQAZABIAEgAFAGcAZwBnAGcAZwAFAAUA8wDzAPMAZwA3AAUABQAFAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAZABkABgAGAGcAZwA3AAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcABQBnAGcAZwA3AAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAUABQAbABsAGwAbAAUABQAFAAUABQAFAAUABQAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAABsAGwAbABsAGwAbABsAGwAbABsABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAGwAbABsAGwAbABsAGwAbAAUAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFABsAGwAbABsAGwAbABsAGwAbABsABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAIQBNwA3AIQBNwA3ADcAhAE3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcAhAE3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEAYQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwCEATcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3AIQBhAGEATcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBhAGEAYQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwCEAYQBhAE3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AGcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwBnAGcAZwBnAGcAZwAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcAZwAFAAUABQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAcACAAJAAoACwAMAA0ADgAPABAANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfADcAGQAGAAYABgAFABkAGQAZABkAGQAZABkAGQAZABkABQBnAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AZgBmABkAGQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3APMA8wDzAPMA8wDzAPMA8wDzAPMAGQAZAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAZwBnAGcAZwBnAGcAZwBnAGcABgAGAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAUABQAHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAGYAFAAUABQAFAAUABQAFAAUAB4AHwAeAB8AhQEeAB8AHgAfAB4AHwAeAB8AHgAfAGcABgAGAB4AHwCGARQANwAeAB8AHgAfAIcBFAAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AiAGJAYoBiwGIARQAjAGNAY4BjwEeAB8AHgAfAB4AHwAeAB8AHgAfAB4AHwAeAB8AHgAfAJABkQGSAR4AHwAeAB8AAAAAAAAAAAAAAB4AHwAAABQAAAAUAB4AHwAeAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZwBnAGcAHgAfADcAZgBmABQANwA3ADcANwA3ADcANwAZADcANwA3ABkANwA3ADcANwAZADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwASABIAGQAZABIABQAFAAUABQAZAAAAAAAAABsAGwAbABsAGwAbAAUABQAFAAUAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAASABIANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAGQAZAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQA3ADcANwA3ADcANwAFAAUABQA3AAUANwA3ABkABwAIAAkACgALAAwADQAOAA8AEAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZABkAGQAZABkAGQAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZABkAGQAZABkAGQAZABkAGQASABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAABkAGQAZABIANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAEgASABkAGQAZABkAEgASABkAGQASABIAEgAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAZwAHAAgACQAKAAsADAANAA4ADwAQAAAAAAAAAAAABQAFADcANwA3ADcANwAZAGcANwA3ADcANwA3ADcANwA3ADcABwAIAAkACgALAAwADQAOAA8AEAA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAZABkAGQAZABkAEgASABkAGQASABIAGQAZAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ABkANwA3ADcANwA3ADcANwA3ABkAEgAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAABQAFAAUABQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AGcANwA3ADcANwA3ADcABQAFAAUANwASABkAEgA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQA3ABkAGQAZADcANwAZABkANwA3ADcANwA3ABkAGQA3ABkANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcAZwAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ABIAGQAZABIAEgAFAAUANwBnAGcAEgAZAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcAAAAAADcANwA3ADcANwA3AAAAAAA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFACTARQAFAAUABQAFAAUABQABgBmAGYAZgBmABQAFAAUABQAFAAUABQAFAAUAGcABgAGAAAAAAAAAAAAlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwASABIAGQASABIAGQASABIABQASABkAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3AIQBNwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AHlAeYB5wHoAekB6gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADrAewB7QHuAe8BAAAAAAAAAAAAADcAGQA3ADcANwA3ADcANwA3ADcANwA3AAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAADcANwA3ADcANwAAADcAAAA3ADcAAAA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3APAB8AHwAfAB8AHwATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwDwAfABBQAFAAUABQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZAAUABQAFAAYABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAFAAUABQASABIABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAEgASABIABQAFAAYAAAAFAAYABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAPABNwDwATcA8AEAAPABNwDwATcA8AE3APABNwDwATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAVAAAABQAFAAUABQAFAAUABgAFAAUABQAFAAUABQAGAAUABwAIAAkACgALAAwADQAOAA8AEAAGAAUABQAFAAUABQAFABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQAFAAUABQAGABIABgATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMABQAFAAUABQAFAAUABQAFAAUABQAFADcANwA3ADcANwA3ADcANwA3ADcAZwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwDxAfEBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAA3ADcANwA3ADcANwAAAAAANwA3ADcANwA3ADcAAAAAADcANwA3ADcANwA3AAAAAAA3ADcANwAAAAAAAAAFAAUABQAGAAUABQAFAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAABUAFQAVAAUABQAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3AAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wAbABsAGwAbAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAbABsABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABsAGwAbABsAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3APMANwA3ADcANwA3ADcANwA3APMAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkAGQAZABkAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAABQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAADcANwA3ADcANwA3ADcANwAFAPMA8wDzAPMA8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAAAAAAAAAAAAAAAAA8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIB8gHyAfIBAAAAAAAAAADzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wHzAfMB8wEAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUA9AH0AfQB9AH0AfQB9AH0AfQB9AH0AQAA9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQB9AH0AfQBAAD0AfQB9AH0AfQB9AH0AQAA9AH0AQAA9QH1AfUB9QH1AfUB9QH1AfUB9QH1AQAA9QH1AfUB9QH1AfUB9QH1AfUB9QH1AfUB9QH1AfUBAAD1AfUB9QH1AfUB9QH1AQAA9QH1AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYAZwBnAGYAZgBmAAAAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAZgBmAGYAAABmAGYAZgBmAGYAZgBmAGYAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwAAAAAANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAADcANwAAAAAAAAA3AAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAFABsAGwAbABsAGwAbABsAGwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcABQAFABsAGwAbABsAGwAbABsANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAGwAbABsAGwAbABsAGwAbABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAADcANwAAAAAAAAAAAAAAGwAbABsAGwAbADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGwAbABsAGwAbABsAAAAAAAAABQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAbABsANwA3ABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAAAAAABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsANwAZABkAGQAAABkAGQAAAAAAAAAAAAAAGQAZABkAGQA3ADcANwA3AAAANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAABkAGQAZAAAAAAAAAAAAGQAaABYAFwBoARsAGwAbABsAGwAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABsAGwAFADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAbABsAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3AAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkAAAAAAAAAAAAbABsAGwAbABsABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAFAAUABQAFAAUABQAFADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAABsAGwAbABsAGwAbABsAGwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAbABsAGwAbABsAGwAbABsANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAGwAbABsAGwAbABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQBtAG0AbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAAAAAAAAAAAAAAAAAAAGwAbABsAGwAbABsANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAZABkAGQAAAAAAAAAAAAAAAAAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAFgAXAGgBaQFqAWsBbAFtARsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAABkAGQAFAAAAAAA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABsAGwAbABsAGwAbABsAGwAbABsANwAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkAGQAZABkAGQAZABkAGQAZABkAGwAbABsAGwAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkAGQAZAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABsAGwAbABsAGwAbABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAAAASABkAEgA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkABQAFAAUABQAFAAUABQAAAAAAAAAAABoAFgAXAGgBaQFqAWsBbAFtARsAGwAbABsAGwAbABsAGwAbABsAGwAHAAgACQAKAAsADAANAA4ADwAQABkANwA3ABkAGQA3AAAAAAAAAAAAAAAAAAAAAAAAABkAGQAZABIANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAEgASABIAGQAZABkAGQASABIAGQAZAAUABQAVAAUABQAFAAUAGQAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAAAAAAAAAAAAAAAABkAGQAZADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZABkAGQASABkAGQAZABkAGQAZABkAGQAAAAcACAAJAAoACwAMAA0ADgAPABAABQAFAAUABQA3ABIAEgA3AAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAFAAUANwAAAAAAAAAAAAAAAAAAAAAAAAAZABkAEgA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwASABIAEgAZABkAGQAZABkAGQAZABkAGQASABIANwA3ADcANwAFAAUABQAFABkAGQAZABkABQASABkABwAIAAkACgALAAwADQAOAA8AEAA3AAUANwAFAAUABQAAABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABIAEgASABkAGQAZABIAEgAZABIAGQAZAAUABQAFAAUABQAFABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcAAAA3AAAANwA3ADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwA3ADcANwAFAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABIAEgASABkAGQAZABkAGQAZABkAGQAAAAAAAAAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAAZABkAEgASAAAANwA3ADcANwA3ADcANwA3AAAAAAA3ADcAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3AAAANwA3AAAANwA3ADcANwA3AAAAGQAZADcAEgASABkAEgASABIAEgAAAAAAEgASAAAAAAASABIAEgAAAAAANwAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAA3ADcANwA3ADcAEgASAAAAAAAZABkAGQAZABkAGQAZAAAAAAAAABkAGQAZABkAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABIAEgASABkAGQAZABkAGQAZABkAGQASABIAGQAZABkAEgAZADcANwA3ADcABQAFAAUABQAFAAcACAAJAAoACwAMAA0ADgAPABAABQAFAAAABQAZADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABIAEgASABkAGQAZABkAGQAZABIAGQASABIAEgASABkAGQASABkAGQA3ADcABQA3AAAAAAAAAAAAAAAAAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAEgASABIAGQAZABkAGQAAAAAAEgASABIAEgAZABkAEgAZABkABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFADcANwA3ADcAGQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAEgASABIAGQAZABkAGQAZABkAGQAZABIAEgAZABIAGQAZAAUABQAFADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQASABkAEgASABkAGQAZABkAGQAZABIAGQA3AAUAAAAAAAAAAAAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAGQAZABkAEgASABkAGQAZABkAEgAZABkAGQAZABkAAAAAAAAAAAAHAAgACQAKAAsADAANAA4ADwAQABsAGwAFAAUABQAFADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABIAEgASABkAGQAZABkAGQAZABkAGQAZABIAGQAZAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATAAcACAAJAAoACwAMAA0ADgAPABAAGwAbABsAGwAbABsAGwAbABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3AAAAAAA3AAAAAAA3ADcANwA3ADcANwA3ADcAAAA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwASABIAEgASABIAEgAAABIAEgAAAAAAGQAZABIAGQA3ABIANwASABkABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAEgASABIAGQAZABkAGQAAAAAAGQAZABIAEgASABIAGQA3AAUANwASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcAGQAZABkAGQAZABkAGQAZABkAGQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZABkAGQAZABIANwAZABkAGQAZAAUABQAFAAUABQAFAAUABQAZAAAAAAAAAAAAAAAAAAAAAAA3ABkAGQAZABkAGQAZABIAEgAZABkAGQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAEgAZABkABQAFAAUANwAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABIAGQAZABkAGQAZABkAGQAAABkAGQAZABkAGQAZABIAGQA3AAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAAAAAAAAAFAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAAAASABkAGQAZABkAGQAZABkAEgAZABkAEgAZABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3AAAANwA3AAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZABkAGQAZAAAAAAAAABkAAAAZABkAAAAZABkAGQAZABkAGQAZADcAGQAAAAAAAAAAAAAAAAAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwAAADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwASABIAEgASABIAAAAZABkAAAASABIAGQASABkANwAAAAAAAAAAAAAAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAZABIAEgAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAABUAFQAVABUAFQAVABUAFQAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAUABQA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAGQAZABkAGQAZAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAZABkAGQAZABkAGQAZAAUABQAFAAUABQAFAAUABQAFAGcAZwBnAGcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAIAAkACgALAAwADQAOAA8AEAAAABsAGwAbABsAGwAbABsAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAZADcAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgASABIAEgAAAAAAAAAAAAAAAAAAABkAGQAZABkAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcAZwAFAGcAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcAZwBnAGcAAABnAGcAZwBnAGcAZwBnAAAAZwBnAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAFABkAGQAFABUAFQAVABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAAAAAABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQASABIAGQAZABkABQAFAAUAEgASABIAEgASABIAFQAVABUAFQAVABUAFQAVABkAGQAZABkAGQAZABkAGQAFAAUAGQAZABkAGQAZABkAGQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAZABkAGQAZAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAGQAZABkABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAAAAAAAAAAAAAAAAAAAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5ABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAeQAAAHkAeQAAAAAAeQAAAAAAeQB5AAAAAAB5AHkAeQB5AAAAeQB5AHkAeQB5AHkAeQB5ABQAFAAUABQAAAAUAAAAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAUABQAFAAUABQAFAB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAHkAeQAAAHkAeQB5AHkAAAAAAHkAeQB5AHkAeQB5AHkAeQAAAHkAeQB5AHkAeQB5AHkAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAeQB5AAAAeQB5AHkAeQAAAHkAeQB5AHkAeQAAAHkAAAAAAAAAeQB5AHkAeQB5AHkAeQAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5ABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5ABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkABQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAUAFAAUABQAFAAUABQAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQAFABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABQAUABQAFAAUABQAFAB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AAUAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFABQAFAAUABQAFAAUAHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkABQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAUAFAAUABQAFAAUABQAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQB5AHkAeQAFABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABQAUABQAFAAUABQAFAB5ABQAAAAAAAcACAAJAAoACwAMAA0ADgAPABAABwAIAAkACgALAAwADQAOAA8AEAAHAAgACQAKAAsADAANAA4ADwAQAAcACAAJAAoACwAMAA0ADgAPABAABwAIAAkACgALAAwADQAOAA8AEAAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZAAUABQAFAAUAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZAAUABQAFAAUABQAFAAUABQAZAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAZAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAZABkAGQAZAAAAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQANwAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZABkAGQAZABkAGQAZAAAAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZAAAAAAAZABkAGQAZABkAGQAZAAAAGQAZAAAAGQAZABkAGQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAGQAZABkAGQAZABkAGQBnAGcAZwBnAGcAZwBnAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAAAAAAAAAAANwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ABkAGQAZABkABwAIAAkACgALAAwADQAOAA8AEAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3AAAANwA3ADcANwAAADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAABsAGwAbABsAGwAbABsAGwAbABkAGQAZABkAGQAZABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPYB9gH2AfYB9gH2AfYB9gH2AfYB9gH2AfYB9gH2AfYB9gH2AfYB9gH2AfYB9gH2AfYB9gH2AfYB9gH2AfYB9gH2AfYB9wH3AfcB9wH3AfcB9wH3AfcB9wH3AfcB9wH3AfcB9wH3AfcB9wH3AfcB9wH3AfcB9wH3AfcB9wH3AfcB9wH3AfcB9wEZABkAGQAZABkAGQAZAGcAAAAAAAAAAAAHAAgACQAKAAsADAANAA4ADwAQAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAUAGwAbABsABQAbABsAGwAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABQAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3AAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAA3ADcAAAA3AAAAAAA3AAAANwA3ADcANwA3ADcANwA3ADcANwAAADcANwA3ADcAAAA3AAAANwAAAAAAAAAAAAAAAAA3AAAAAAAAAAAANwAAADcAAAA3AAAANwA3ADcAAAA3ADcAAAA3AAAAAAA3AAAANwAAADcAAAA3AAAANwAAADcANwAAADcAAAAAADcANwA3ADcAAAA3ADcANwA3ADcANwA3AAAANwA3ADcANwAAADcANwA3ADcAAAA3AAAANwA3ADcANwA3ADcANwA3ADcANwAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAANwA3ADcAAAA3ADcANwA3ADcAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAZwFnARoAFgAXAGgBaQFqAWsBbAFtARsAGwAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUA+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AQUABQAFAAUABQAFAPgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AEFAAUABQAFAAUABQD4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgB+AH4AfgBBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABgAGAAYABgAGAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAFAAUABQAFAAUAAAAAAAAABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcACAAJAAoACwAMAA0ADgAPABAAAAAAAAAAAAAAAAAANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAhAE3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AIQBNwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwCEATcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3ADcANwA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAFQAVABUAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAGQAZABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAX3dhcm5pbmdzIHByb3ZpZGVzIGJhc2ljIHdhcm5pbmcgZmlsdGVyaW5nIHN1cHBvcnQuCkl0IGlzIGEgaGVscGVyIG1vZHVsZSB0byBzcGVlZCB1cCBpbnRlcnByZXRlciBzdGFydC11cC4AAAAAAHdhcm4oJG1vZHVsZSwgLywgbWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSkKLS0KCklzc3VlIGEgd2FybmluZywgb3IgbWF5YmUgaWdub3JlIGl0IG9yIHJhaXNlIGFuIGV4Y2VwdGlvbi4AAAAAAAAAAAAAAAAAAExvdy1sZXZlbCBpbnRlcmZhY2UgdG8gd2FybmluZ3MgZnVuY3Rpb25hbGl0eS4AAAwAAAAEAAAADAAAAAwAAABmaWx0ZXIoZnVuY3Rpb24gb3IgTm9uZSwgaXRlcmFibGUpIC0tPiBmaWx0ZXIgb2JqZWN0CgpSZXR1cm4gYW4gaXRlcmF0b3IgeWllbGRpbmcgdGhvc2UgaXRlbXMgb2YgaXRlcmFibGUgZm9yIHdoaWNoIGZ1bmN0aW9uKGl0ZW0pCmlzIHRydWUuIElmIGZ1bmN0aW9uIGlzIE5vbmUsIHJldHVybiB0aGUgaXRlbXMgdGhhdCBhcmUgdHJ1ZS4AAAAAAAAAAAAAAAAAAAAAbWFwKGZ1bmMsICppdGVyYWJsZXMpIC0tPiBtYXAgb2JqZWN0CgpNYWtlIGFuIGl0ZXJhdG9yIHRoYXQgY29tcHV0ZXMgdGhlIGZ1bmN0aW9uIHVzaW5nIGFyZ3VtZW50cyBmcm9tCmVhY2ggb2YgdGhlIGl0ZXJhYmxlcy4gIFN0b3BzIHdoZW4gdGhlIHNob3J0ZXN0IGl0ZXJhYmxlIGlzIGV4aGF1c3RlZC4AAAB6aXAoKml0ZXJhYmxlcywgc3RyaWN0PUZhbHNlKSAtLT4gWWllbGQgdHVwbGVzIHVudGlsIGFuIGlucHV0IGlzIGV4aGF1c3RlZC4KCiAgID4+PiBsaXN0KHppcCgnYWJjZGVmZycsIHJhbmdlKDMpLCByYW5nZSg0KSkpCiAgIFsoJ2EnLCAwLCAwKSwgKCdiJywgMSwgMSksICgnYycsIDIsIDIpXQoKVGhlIHppcCBvYmplY3QgeWllbGRzIG4tbGVuZ3RoIHR1cGxlcywgd2hlcmUgbiBpcyB0aGUgbnVtYmVyIG9mIGl0ZXJhYmxlcwpwYXNzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudHMgdG8gemlwKCkuICBUaGUgaS10aCBlbGVtZW50IGluIGV2ZXJ5IHR1cGxlCmNvbWVzIGZyb20gdGhlIGktdGggaXRlcmFibGUgYXJndW1lbnQgdG8gemlwKCkuICBUaGlzIGNvbnRpbnVlcyB1bnRpbCB0aGUKc2hvcnRlc3QgYXJndW1lbnQgaXMgZXhoYXVzdGVkLgoKSWYgc3RyaWN0IGlzIHRydWUgYW5kIG9uZSBvZiB0aGUgYXJndW1lbnRzIGlzIGV4aGF1c3RlZCBiZWZvcmUgdGhlIG90aGVycywKcmFpc2UgYSBWYWx1ZUVycm9yLgAAAAAAAAAAAABSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgAAAAAAAAAAAABTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuAAAAAAAAAAAAAABCdWlsdC1pbiBmdW5jdGlvbnMsIGV4Y2VwdGlvbnMsIGFuZCBvdGhlciBvYmplY3RzLgoKTm90ZXdvcnRoeTogTm9uZSBpcyB0aGUgYG5pbCcgb2JqZWN0OyBFbGxpcHNpcyByZXByZXNlbnRzIGAuLi4nIGluIHNsaWNlcy4AAF9fYnVpbGRfY2xhc3NfXyhmdW5jLCBuYW1lLCAvLCAqYmFzZXMsIFttZXRhY2xhc3NdLCAqKmt3ZHMpIC0+IGNsYXNzCgpJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0aGUgY2xhc3Mgc3RhdGVtZW50LgAAAAAAX19pbXBvcnRfXygkbW9kdWxlLCAvLCBuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwKICAgICAgICAgICBsZXZlbD0wKQotLQoKSW1wb3J0IGEgbW9kdWxlLgoKQmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG1lYW50IGZvciB1c2UgYnkgdGhlIFB5dGhvbgppbnRlcnByZXRlciBhbmQgbm90IGZvciBnZW5lcmFsIHVzZSwgaXQgaXMgYmV0dGVyIHRvIHVzZQppbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIHRvIHByb2dyYW1tYXRpY2FsbHkgaW1wb3J0IGEgbW9kdWxlLgoKVGhlIGdsb2JhbHMgYXJndW1lbnQgaXMgb25seSB1c2VkIHRvIGRldGVybWluZSB0aGUgY29udGV4dDsKdGhleSBhcmUgbm90IG1vZGlmaWVkLiAgVGhlIGxvY2FscyBhcmd1bWVudCBpcyB1bnVzZWQuICBUaGUgZnJvbWxpc3QKc2hvdWxkIGJlIGEgbGlzdCBvZiBuYW1lcyB0byBlbXVsYXRlIGBgZnJvbSBuYW1lIGltcG9ydCAuLi5gYCwgb3IgYW4KZW1wdHkgbGlzdCB0byBlbXVsYXRlIGBgaW1wb3J0IG5hbWVgYC4KV2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2UsIG5vdGUgdGhhdCBfX2ltcG9ydF9fKCdBLkInLCAuLi4pCnJldHVybnMgcGFja2FnZSBBIHdoZW4gZnJvbWxpc3QgaXMgZW1wdHksIGJ1dCBpdHMgc3VibW9kdWxlIEIgd2hlbgpmcm9tbGlzdCBpcyBub3QgZW1wdHkuICBUaGUgbGV2ZWwgYXJndW1lbnQgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0bwpwZXJmb3JtIGFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHM6IDAgaXMgYWJzb2x1dGUsIHdoaWxlIGEgcG9zaXRpdmUgbnVtYmVyCmlzIHRoZSBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb2R1bGUuAAAAAABhYnMoJG1vZHVsZSwgeCwgLykKLS0KClJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LgAAAAAAAAAAAAAAAAAAAGFsbCgkbW9kdWxlLCBpdGVyYWJsZSwgLykKLS0KClJldHVybiBUcnVlIGlmIGJvb2woeCkgaXMgVHJ1ZSBmb3IgYWxsIHZhbHVlcyB4IGluIHRoZSBpdGVyYWJsZS4KCklmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIFRydWUuAAAAAAAAAAAAAGFueSgkbW9kdWxlLCBpdGVyYWJsZSwgLykKLS0KClJldHVybiBUcnVlIGlmIGJvb2woeCkgaXMgVHJ1ZSBmb3IgYW55IHggaW4gdGhlIGl0ZXJhYmxlLgoKSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gRmFsc2UuAAAAAAAAAAAAAAAAAAAAAGFzY2lpKCRtb2R1bGUsIG9iaiwgLykKLS0KClJldHVybiBhbiBBU0NJSS1vbmx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4KCkFzIHJlcHIoKSwgcmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBwcmludGFibGUgcmVwcmVzZW50YXRpb24gb2YgYW4Kb2JqZWN0LCBidXQgZXNjYXBlIHRoZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5CnJlcHIoKSB1c2luZyBcXHgsIFxcdSBvciBcXFUgZXNjYXBlcy4gVGhpcyBnZW5lcmF0ZXMgYSBzdHJpbmcgc2ltaWxhcgp0byB0aGF0IHJldHVybmVkIGJ5IHJlcHIoKSBpbiBQeXRob24gMi4AAAAAAAAAAGJpbigkbW9kdWxlLCBudW1iZXIsIC8pCi0tCgpSZXR1cm4gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLgoKICAgPj4+IGJpbigyNzk2MjAyKQogICAnMGIxMDEwMTAxMDEwMTAxMDEwMTAxMDEwJwAAYnJlYWtwb2ludCgqYXJncywgKiprd3MpCgpDYWxsIHN5cy5icmVha3BvaW50aG9vaygqYXJncywgKiprd3MpLiAgc3lzLmJyZWFrcG9pbnRob29rKCkgbXVzdCBhY2NlcHQKd2hhdGV2ZXIgYXJndW1lbnRzIGFyZSBwYXNzZWQuCgpCeSBkZWZhdWx0LCB0aGlzIGRyb3BzIHlvdSBpbnRvIHRoZSBwZGIgZGVidWdnZXIuAAAAAAAAAAAAAAAAY2FsbGFibGUoJG1vZHVsZSwgb2JqLCAvKQotLQoKUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBjYWxsYWJsZSAoaS5lLiwgc29tZSBraW5kIG9mIGZ1bmN0aW9uKS4KCk5vdGUgdGhhdCBjbGFzc2VzIGFyZSBjYWxsYWJsZSwgYXMgYXJlIGluc3RhbmNlcyBvZiBjbGFzc2VzIHdpdGggYQpfX2NhbGxfXygpIG1ldGhvZC4AAAAAAAAAY2hyKCRtb2R1bGUsIGksIC8pCi0tCgpSZXR1cm4gYSBVbmljb2RlIHN0cmluZyBvZiBvbmUgY2hhcmFjdGVyIHdpdGggb3JkaW5hbCBpOyAwIDw9IGkgPD0gMHgxMGZmZmYuAAAAAAAAAAAAAAAAAGNvbXBpbGUoJG1vZHVsZSwgLywgc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3M9MCwKICAgICAgICBkb250X2luaGVyaXQ9RmFsc2UsIG9wdGltaXplPS0xLCAqLCBfZmVhdHVyZV92ZXJzaW9uPS0xKQotLQoKQ29tcGlsZSBzb3VyY2UgaW50byBhIGNvZGUgb2JqZWN0IHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IGV4ZWMoKSBvciBldmFsKCkuCgpUaGUgc291cmNlIGNvZGUgbWF5IHJlcHJlc2VudCBhIFB5dGhvbiBtb2R1bGUsIHN0YXRlbWVudCBvciBleHByZXNzaW9uLgpUaGUgZmlsZW5hbWUgd2lsbCBiZSB1c2VkIGZvciBydW4tdGltZSBlcnJvciBtZXNzYWdlcy4KVGhlIG1vZGUgbXVzdCBiZSAnZXhlYycgdG8gY29tcGlsZSBhIG1vZHVsZSwgJ3NpbmdsZScgdG8gY29tcGlsZSBhCnNpbmdsZSAoaW50ZXJhY3RpdmUpIHN0YXRlbWVudCwgb3IgJ2V2YWwnIHRvIGNvbXBpbGUgYW4gZXhwcmVzc2lvbi4KVGhlIGZsYWdzIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBjb250cm9scyB3aGljaCBmdXR1cmUgc3RhdGVtZW50cyBpbmZsdWVuY2UKdGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBjb2RlLgpUaGUgZG9udF9pbmhlcml0IGFyZ3VtZW50LCBpZiB0cnVlLCBzdG9wcyB0aGUgY29tcGlsYXRpb24gaW5oZXJpdGluZwp0aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmcKY29tcGlsZTsgaWYgYWJzZW50IG9yIGZhbHNlIHRoZXNlIHN0YXRlbWVudHMgZG8gaW5mbHVlbmNlIHRoZSBjb21waWxhdGlvbiwKaW4gYWRkaXRpb24gdG8gYW55IGZlYXR1cmVzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgAAAAAAAABkZWxhdHRyKCRtb2R1bGUsIG9iaiwgbmFtZSwgLykKLS0KCkRlbGV0ZXMgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBvYmplY3QuCgpkZWxhdHRyKHgsICd5JykgaXMgZXF1aXZhbGVudCB0byBgYGRlbCB4LnlgYAAAAAAAAAAAAAAAAABkaXIoW29iamVjdF0pIC0+IGxpc3Qgb2Ygc3RyaW5ncwoKSWYgY2FsbGVkIHdpdGhvdXQgYW4gYXJndW1lbnQsIHJldHVybiB0aGUgbmFtZXMgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCkVsc2UsIHJldHVybiBhbiBhbHBoYWJldGl6ZWQgbGlzdCBvZiBuYW1lcyBjb21wcmlzaW5nIChzb21lIG9mKSB0aGUgYXR0cmlidXRlcwpvZiB0aGUgZ2l2ZW4gb2JqZWN0LCBhbmQgb2YgYXR0cmlidXRlcyByZWFjaGFibGUgZnJvbSBpdC4KSWYgdGhlIG9iamVjdCBzdXBwbGllcyBhIG1ldGhvZCBuYW1lZCBfX2Rpcl9fLCBpdCB3aWxsIGJlIHVzZWQ7IG90aGVyd2lzZQp0aGUgZGVmYXVsdCBkaXIoKSBsb2dpYyBpcyB1c2VkIGFuZCByZXR1cm5zOgogIGZvciBhIG1vZHVsZSBvYmplY3Q6IHRoZSBtb2R1bGUncyBhdHRyaWJ1dGVzLgogIGZvciBhIGNsYXNzIG9iamVjdDogIGl0cyBhdHRyaWJ1dGVzLCBhbmQgcmVjdXJzaXZlbHkgdGhlIGF0dHJpYnV0ZXMKICAgIG9mIGl0cyBiYXNlcy4KICBmb3IgYW55IG90aGVyIG9iamVjdDogaXRzIGF0dHJpYnV0ZXMsIGl0cyBjbGFzcydzIGF0dHJpYnV0ZXMsIGFuZAogICAgcmVjdXJzaXZlbHkgdGhlIGF0dHJpYnV0ZXMgb2YgaXRzIGNsYXNzJ3MgYmFzZSBjbGFzc2VzLgBkaXZtb2QoJG1vZHVsZSwgeCwgeSwgLykKLS0KClJldHVybiB0aGUgdHVwbGUgKHgvL3ksIHgleSkuICBJbnZhcmlhbnQ6IGRpdip5ICsgbW9kID09IHguAAAAAAAAAABldmFsKCRtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgLykKLS0KCkV2YWx1YXRlIHRoZSBnaXZlbiBzb3VyY2UgaW4gdGhlIGNvbnRleHQgb2YgZ2xvYmFscyBhbmQgbG9jYWxzLgoKVGhlIHNvdXJjZSBtYXkgYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgUHl0aG9uIGV4cHJlc3Npb24Kb3IgYSBjb2RlIG9iamVjdCBhcyByZXR1cm5lZCBieSBjb21waWxlKCkuClRoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLApkZWZhdWx0aW5nIHRvIHRoZSBjdXJyZW50IGdsb2JhbHMgYW5kIGxvY2Fscy4KSWYgb25seSBnbG9iYWxzIGlzIGdpdmVuLCBsb2NhbHMgZGVmYXVsdHMgdG8gaXQuAABleGVjKCRtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgLywgKiwgY2xvc3VyZT1Ob25lKQotLQoKRXhlY3V0ZSB0aGUgZ2l2ZW4gc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy4KClRoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBvbmUgb3IgbW9yZSBQeXRob24gc3RhdGVtZW50cwpvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS4KVGhlIGdsb2JhbHMgbXVzdCBiZSBhIGRpY3Rpb25hcnkgYW5kIGxvY2FscyBjYW4gYmUgYW55IG1hcHBpbmcsCmRlZmF1bHRpbmcgdG8gdGhlIGN1cnJlbnQgZ2xvYmFscyBhbmQgbG9jYWxzLgpJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4KVGhlIGNsb3N1cmUgbXVzdCBiZSBhIHR1cGxlIG9mIGNlbGx2YXJzLCBhbmQgY2FuIG9ubHkgYmUgdXNlZAp3aGVuIHNvdXJjZSBpcyBhIGNvZGUgb2JqZWN0IHJlcXVpcmluZyBleGFjdGx5IHRoYXQgbWFueSBjZWxsdmFycy4AAAAAAAAAZm9ybWF0KCRtb2R1bGUsIHZhbHVlLCBmb3JtYXRfc3BlYz0nJywgLykKLS0KClJldHVybiB2YWx1ZS5fX2Zvcm1hdF9fKGZvcm1hdF9zcGVjKQoKZm9ybWF0X3NwZWMgZGVmYXVsdHMgdG8gdGhlIGVtcHR5IHN0cmluZy4KU2VlIHRoZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlIHNlY3Rpb24gb2YgaGVscCgnRk9STUFUVElORycpIGZvcgpkZXRhaWxzLgAAAAAAAAAAAAAAAABnZXRhdHRyKG9iamVjdCwgbmFtZVssIGRlZmF1bHRdKSAtPiB2YWx1ZQoKR2V0IGEgbmFtZWQgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0OyBnZXRhdHRyKHgsICd5JykgaXMgZXF1aXZhbGVudCB0byB4LnkuCldoZW4gYSBkZWZhdWx0IGFyZ3VtZW50IGlzIGdpdmVuLCBpdCBpcyByZXR1cm5lZCB3aGVuIHRoZSBhdHRyaWJ1dGUgZG9lc24ndApleGlzdDsgd2l0aG91dCBpdCwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiB0aGF0IGNhc2UuAAAAAAAAZ2xvYmFscygkbW9kdWxlLCAvKQotLQoKUmV0dXJuIHRoZSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBnbG9iYWwgdmFyaWFibGVzLgoKTk9URTogVXBkYXRlcyB0byB0aGlzIGRpY3Rpb25hcnkgKndpbGwqIGFmZmVjdCBuYW1lIGxvb2t1cHMgaW4gdGhlIGN1cnJlbnQKZ2xvYmFsIHNjb3BlIGFuZCB2aWNlLXZlcnNhLgAAAAAAAAAAAGhhc2F0dHIoJG1vZHVsZSwgb2JqLCBuYW1lLCAvKQotLQoKUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuCgpUaGlzIGlzIGRvbmUgYnkgY2FsbGluZyBnZXRhdHRyKG9iaiwgbmFtZSkgYW5kIGNhdGNoaW5nIEF0dHJpYnV0ZUVycm9yLgAAAAAAaGFzaCgkbW9kdWxlLCBvYmosIC8pCi0tCgpSZXR1cm4gdGhlIGhhc2ggdmFsdWUgZm9yIHRoZSBnaXZlbiBvYmplY3QuCgpUd28gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbXVzdCBhbHNvIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZSwgYnV0IHRoZQpyZXZlcnNlIGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlLgAAAAAAAAAAAAAAAAAAaGV4KCRtb2R1bGUsIG51bWJlciwgLykKLS0KClJldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci4KCiAgID4+PiBoZXgoMTI2NDg0MzApCiAgICcweGMwZmZlZScAAAAAAAAAAAAAAABpZCgkbW9kdWxlLCBvYmosIC8pCi0tCgpSZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4KClRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgYW1vbmcgc2ltdWx0YW5lb3VzbHkgZXhpc3Rpbmcgb2JqZWN0cy4KKENQeXRob24gdXNlcyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKQAAAGlucHV0KCRtb2R1bGUsIHByb21wdD0nJywgLykKLS0KClJlYWQgYSBzdHJpbmcgZnJvbSBzdGFuZGFyZCBpbnB1dC4gIFRoZSB0cmFpbGluZyBuZXdsaW5lIGlzIHN0cmlwcGVkLgoKVGhlIHByb21wdCBzdHJpbmcsIGlmIGdpdmVuLCBpcyBwcmludGVkIHRvIHN0YW5kYXJkIG91dHB1dCB3aXRob3V0IGEKdHJhaWxpbmcgbmV3bGluZSBiZWZvcmUgcmVhZGluZyBpbnB1dC4KCklmIHRoZSB1c2VyIGhpdHMgRU9GICgqbml4OiBDdHJsLUQsIFdpbmRvd3M6IEN0cmwtWitSZXR1cm4pLCByYWlzZSBFT0ZFcnJvci4KT24gKm5peCBzeXN0ZW1zLCByZWFkbGluZSBpcyB1c2VkIGlmIGF2YWlsYWJsZS4AAAAAAAAAAAAAAAAAAABpc2luc3RhbmNlKCRtb2R1bGUsIG9iaiwgY2xhc3Nfb3JfdHVwbGUsIC8pCi0tCgpSZXR1cm4gd2hldGhlciBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBvciBvZiBhIHN1YmNsYXNzIHRoZXJlb2YuCgpBIHR1cGxlLCBhcyBpbiBgYGlzaW5zdGFuY2UoeCwgKEEsIEIsIC4uLikpYGAsIG1heSBiZSBnaXZlbiBhcyB0aGUgdGFyZ2V0IHRvCmNoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzaW5zdGFuY2UoeCwgQSkgb3IgaXNpbnN0YW5jZSh4LCBCKQpvciAuLi5gYCBldGMuAAAAAAAAAAAAAAAAaXNzdWJjbGFzcygkbW9kdWxlLCBjbHMsIGNsYXNzX29yX3R1cGxlLCAvKQotLQoKUmV0dXJuIHdoZXRoZXIgJ2NscycgaXMgZGVyaXZlZCBmcm9tIGFub3RoZXIgY2xhc3Mgb3IgaXMgdGhlIHNhbWUgY2xhc3MuCgpBIHR1cGxlLCBhcyBpbiBgYGlzc3ViY2xhc3MoeCwgKEEsIEIsIC4uLikpYGAsIG1heSBiZSBnaXZlbiBhcyB0aGUgdGFyZ2V0IHRvCmNoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzc3ViY2xhc3MoeCwgQSkgb3IgaXNzdWJjbGFzcyh4LCBCKQpvciAuLi5gYC4AAAAAaXRlcihpdGVyYWJsZSkgLT4gaXRlcmF0b3IKaXRlcihjYWxsYWJsZSwgc2VudGluZWwpIC0+IGl0ZXJhdG9yCgpHZXQgYW4gaXRlcmF0b3IgZnJvbSBhbiBvYmplY3QuICBJbiB0aGUgZmlyc3QgZm9ybSwgdGhlIGFyZ3VtZW50IG11c3QKc3VwcGx5IGl0cyBvd24gaXRlcmF0b3IsIG9yIGJlIGEgc2VxdWVuY2UuCkluIHRoZSBzZWNvbmQgZm9ybSwgdGhlIGNhbGxhYmxlIGlzIGNhbGxlZCB1bnRpbCBpdCByZXR1cm5zIHRoZSBzZW50aW5lbC4AAAAAAGFpdGVyKCRtb2R1bGUsIGFzeW5jX2l0ZXJhYmxlLCAvKQotLQoKUmV0dXJuIGFuIEFzeW5jSXRlcmF0b3IgZm9yIGFuIEFzeW5jSXRlcmFibGUgb2JqZWN0LgAAAAAAAGxlbigkbW9kdWxlLCBvYmosIC8pCi0tCgpSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIGNvbnRhaW5lci4AAAAAAAAAAAAAAAAAbG9jYWxzKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuCgpOT1RFOiBXaGV0aGVyIG9yIG5vdCB1cGRhdGVzIHRvIHRoaXMgZGljdGlvbmFyeSB3aWxsIGFmZmVjdCBuYW1lIGxvb2t1cHMgaW4KdGhlIGxvY2FsIHNjb3BlIGFuZCB2aWNlLXZlcnNhIGlzICppbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQqIGFuZCBub3QKY292ZXJlZCBieSBhbnkgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZ3VhcmFudGVlcy4AbWF4KGl0ZXJhYmxlLCAqWywgZGVmYXVsdD1vYmosIGtleT1mdW5jXSkgLT4gdmFsdWUKbWF4KGFyZzEsIGFyZzIsICphcmdzLCAqWywga2V5PWZ1bmNdKSAtPiB2YWx1ZQoKV2l0aCBhIHNpbmdsZSBpdGVyYWJsZSBhcmd1bWVudCwgcmV0dXJuIGl0cyBiaWdnZXN0IGl0ZW0uIFRoZQpkZWZhdWx0IGtleXdvcmQtb25seSBhcmd1bWVudCBzcGVjaWZpZXMgYW4gb2JqZWN0IHRvIHJldHVybiBpZgp0aGUgcHJvdmlkZWQgaXRlcmFibGUgaXMgZW1wdHkuCldpdGggdHdvIG9yIG1vcmUgYXJndW1lbnRzLCByZXR1cm4gdGhlIGxhcmdlc3QgYXJndW1lbnQuAAAAAAAAAABtaW4oaXRlcmFibGUsICpbLCBkZWZhdWx0PW9iaiwga2V5PWZ1bmNdKSAtPiB2YWx1ZQptaW4oYXJnMSwgYXJnMiwgKmFyZ3MsICpbLCBrZXk9ZnVuY10pIC0+IHZhbHVlCgpXaXRoIGEgc2luZ2xlIGl0ZXJhYmxlIGFyZ3VtZW50LCByZXR1cm4gaXRzIHNtYWxsZXN0IGl0ZW0uIFRoZQpkZWZhdWx0IGtleXdvcmQtb25seSBhcmd1bWVudCBzcGVjaWZpZXMgYW4gb2JqZWN0IHRvIHJldHVybiBpZgp0aGUgcHJvdmlkZWQgaXRlcmFibGUgaXMgZW1wdHkuCldpdGggdHdvIG9yIG1vcmUgYXJndW1lbnRzLCByZXR1cm4gdGhlIHNtYWxsZXN0IGFyZ3VtZW50LgAAAAAAAG5leHQoaXRlcmF0b3JbLCBkZWZhdWx0XSkKClJldHVybiB0aGUgbmV4dCBpdGVtIGZyb20gdGhlIGl0ZXJhdG9yLiBJZiBkZWZhdWx0IGlzIGdpdmVuIGFuZCB0aGUgaXRlcmF0b3IKaXMgZXhoYXVzdGVkLCBpdCBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIHJhaXNpbmcgU3RvcEl0ZXJhdGlvbi4AAAAAAAAAAAAAYW5leHQoJG1vZHVsZSwgYWl0ZXJhdG9yLCBkZWZhdWx0PTx1bnJlcHJlc2VudGFibGU+LCAvKQotLQoKYXN5bmMgYW5leHQoYWl0ZXJhdG9yWywgZGVmYXVsdF0pCgpSZXR1cm4gdGhlIG5leHQgaXRlbSBmcm9tIHRoZSBhc3luYyBpdGVyYXRvci4gIElmIGRlZmF1bHQgaXMgZ2l2ZW4gYW5kIHRoZSBhc3luYwppdGVyYXRvciBpcyBleGhhdXN0ZWQsIGl0IGlzIHJldHVybmVkIGluc3RlYWQgb2YgcmFpc2luZyBTdG9wQXN5bmNJdGVyYXRpb24uAAAAAG9jdCgkbW9kdWxlLCBudW1iZXIsIC8pCi0tCgpSZXR1cm4gdGhlIG9jdGFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIuCgogICA+Pj4gb2N0KDM0MjM5MSkKICAgJzBvMTIzNDU2NycAAABvcmQoJG1vZHVsZSwgYywgLykKLS0KClJldHVybiB0aGUgVW5pY29kZSBjb2RlIHBvaW50IGZvciBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nLgAAAAAAAAAAAAAAAAAAAABwb3coJG1vZHVsZSwgLywgYmFzZSwgZXhwLCBtb2Q9Tm9uZSkKLS0KCkVxdWl2YWxlbnQgdG8gYmFzZSoqZXhwIHdpdGggMiBhcmd1bWVudHMgb3IgYmFzZSoqZXhwICUgbW9kIHdpdGggMyBhcmd1bWVudHMKClNvbWUgdHlwZXMsIHN1Y2ggYXMgaW50cywgYXJlIGFibGUgdG8gdXNlIGEgbW9yZSBlZmZpY2llbnQgYWxnb3JpdGhtIHdoZW4KaW52b2tlZCB1c2luZyB0aGUgdGhyZWUgYXJndW1lbnQgZm9ybS4AAAAAAAAAAABwcmludCgkbW9kdWxlLCAvLCAqYXJncywgc2VwPScgJywgZW5kPSdcbicsIGZpbGU9Tm9uZSwgZmx1c2g9RmFsc2UpCi0tCgpQcmludHMgdGhlIHZhbHVlcyB0byBhIHN0cmVhbSwgb3IgdG8gc3lzLnN0ZG91dCBieSBkZWZhdWx0LgoKICBzZXAKICAgIHN0cmluZyBpbnNlcnRlZCBiZXR3ZWVuIHZhbHVlcywgZGVmYXVsdCBhIHNwYWNlLgogIGVuZAogICAgc3RyaW5nIGFwcGVuZGVkIGFmdGVyIHRoZSBsYXN0IHZhbHVlLCBkZWZhdWx0IGEgbmV3bGluZS4KICBmaWxlCiAgICBhIGZpbGUtbGlrZSBvYmplY3QgKHN0cmVhbSk7IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHN5cy5zdGRvdXQuCiAgZmx1c2gKICAgIHdoZXRoZXIgdG8gZm9yY2libHkgZmx1c2ggdGhlIHN0cmVhbS4AAAAAAAAAAAAAAAAAAAAAcmVwcigkbW9kdWxlLCBvYmosIC8pCi0tCgpSZXR1cm4gdGhlIGNhbm9uaWNhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KCkZvciBtYW55IG9iamVjdCB0eXBlcywgaW5jbHVkaW5nIG1vc3QgYnVpbHRpbnMsIGV2YWwocmVwcihvYmopKSA9PSBvYmouAAAAAHJvdW5kKCRtb2R1bGUsIC8sIG51bWJlciwgbmRpZ2l0cz1Ob25lKQotLQoKUm91bmQgYSBudW1iZXIgdG8gYSBnaXZlbiBwcmVjaXNpb24gaW4gZGVjaW1hbCBkaWdpdHMuCgpUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIGludGVnZXIgaWYgbmRpZ2l0cyBpcyBvbWl0dGVkIG9yIE5vbmUuICBPdGhlcndpc2UKdGhlIHJldHVybiB2YWx1ZSBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgbnVtYmVyLiAgbmRpZ2l0cyBtYXkgYmUgbmVnYXRpdmUuAAAAAAAAAABzZXRhdHRyKCRtb2R1bGUsIG9iaiwgbmFtZSwgdmFsdWUsIC8pCi0tCgpTZXRzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgb24gdGhlIGdpdmVuIG9iamVjdCB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLgoKc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG8gYGB4LnkgPSB2YGAAc29ydGVkKCRtb2R1bGUsIGl0ZXJhYmxlLCAvLCAqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkKLS0KClJldHVybiBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgYWxsIGl0ZW1zIGZyb20gdGhlIGl0ZXJhYmxlIGluIGFzY2VuZGluZyBvcmRlci4KCkEgY3VzdG9tIGtleSBmdW5jdGlvbiBjYW4gYmUgc3VwcGxpZWQgdG8gY3VzdG9taXplIHRoZSBzb3J0IG9yZGVyLCBhbmQgdGhlCnJldmVyc2UgZmxhZyBjYW4gYmUgc2V0IHRvIHJlcXVlc3QgdGhlIHJlc3VsdCBpbiBkZXNjZW5kaW5nIG9yZGVyLgAAAAAAAAAAc3VtKCRtb2R1bGUsIGl0ZXJhYmxlLCAvLCBzdGFydD0wKQotLQoKUmV0dXJuIHRoZSBzdW0gb2YgYSAnc3RhcnQnIHZhbHVlIChkZWZhdWx0OiAwKSBwbHVzIGFuIGl0ZXJhYmxlIG9mIG51bWJlcnMKCldoZW4gdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gdGhlIHN0YXJ0IHZhbHVlLgpUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHNwZWNpZmljYWxseSBmb3IgdXNlIHdpdGggbnVtZXJpYyB2YWx1ZXMgYW5kIG1heQpyZWplY3Qgbm9uLW51bWVyaWMgdHlwZXMuAAAAAAB2YXJzKFtvYmplY3RdKSAtPiBkaWN0aW9uYXJ5CgpXaXRob3V0IGFyZ3VtZW50cywgZXF1aXZhbGVudCB0byBsb2NhbHMoKS4KV2l0aCBhbiBhcmd1bWVudCwgZXF1aXZhbGVudCB0byBvYmplY3QuX19kaWN0X18uAAAAAAAAAAEBAAACAQAAAAEAAFkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAQAAAAAAAAAAAAABAIAAAAAAAAAAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECenp6enp6CQoLDHp6D3oZGRkZGaurqxlra2trHh8gIZAjJCWMampqampkfHx0dDEyMzQ1NnSgoKCgPD2goKampqZERUZHpqZKS6ampqamplJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3CmcnN0dXZ3eKZ6e3x9fqaAgYKDhIWGh4iJiouMpo6mkJGSk5SVl5eYX1+bnJ1fX6B9oqOkpaZ9PDw8q6ytrq+wXFxcXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAD/////////////////////AAAAAAAAAAAAAAAgAMANCEMQAAAA4AEAAAAAAAAAAAAPAAAADAAAAAoAAAALAAAAZ2V0KCRzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSwgLykKLS0KClJldHVybiB0aGUgdmFsdWUgZm9yIGBrZXlgIGlmIGBrZXlgIGhhcyB0aGUgdmFsdWUgaW4gdGhlIGNvbnRleHQgb2JqZWN0LgoKSWYgYGtleWAgZG9lcyBub3QgZXhpc3QsIHJldHVybiBgZGVmYXVsdGAuIElmIGBkZWZhdWx0YCBpcyBub3QgZ2l2ZW4sCnJldHVybiBOb25lLgAAAAAAAAAAAAAAAAAAAGl0ZW1zKCRzZWxmLCAvKQotLQoKUmV0dXJuIGFsbCB2YXJpYWJsZXMgYW5kIHRoZWlyIHZhbHVlcyBpbiB0aGUgY29udGV4dCBvYmplY3QuCgpUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbGlzdCBvZiAyLXR1cGxlcyAodmFyaWFibGUsIHZhbHVlKS4AAAAAAAAAAAAAAAAAAABrZXlzKCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgbGlzdCBvZiBhbGwgdmFyaWFibGVzIGluIHRoZSBjb250ZXh0IG9iamVjdC4AAAAAAAAAAHZhbHVlcygkc2VsZiwgLykKLS0KClJldHVybiBhIGxpc3Qgb2YgYWxsIHZhcmlhYmxlcycgdmFsdWVzIGluIHRoZSBjb250ZXh0IG9iamVjdC4AAAAAAAAAAAAAAAAAAGNvcHkoJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGNvbnRleHQgb2JqZWN0LgBnZXQoJHNlbGYsIGRlZmF1bHQ9PHVucmVwcmVzZW50YWJsZT4sIC8pCi0tCgpSZXR1cm4gYSB2YWx1ZSBmb3IgdGhlIGNvbnRleHQgdmFyaWFibGUgZm9yIHRoZSBjdXJyZW50IGNvbnRleHQuCgpJZiB0aGVyZSBpcyBubyB2YWx1ZSBmb3IgdGhlIHZhcmlhYmxlIGluIHRoZSBjdXJyZW50IGNvbnRleHQsIHRoZSBtZXRob2Qgd2lsbDoKICogcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdCBhcmd1bWVudCBvZiB0aGUgbWV0aG9kLCBpZiBwcm92aWRlZDsgb3IKICogcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgY29udGV4dCB2YXJpYWJsZSwgaWYgaXQgd2FzIGNyZWF0ZWQKICAgd2l0aCBvbmU7IG9yCiAqIHJhaXNlIGEgTG9va3VwRXJyb3IuAAAAAAAAAABzZXQoJHNlbGYsIHZhbHVlLCAvKQotLQoKQ2FsbCB0byBzZXQgYSBuZXcgdmFsdWUgZm9yIHRoZSBjb250ZXh0IHZhcmlhYmxlIGluIHRoZSBjdXJyZW50IGNvbnRleHQuCgpUaGUgcmVxdWlyZWQgdmFsdWUgYXJndW1lbnQgaXMgdGhlIG5ldyB2YWx1ZSBmb3IgdGhlIGNvbnRleHQgdmFyaWFibGUuCgpSZXR1cm5zIGEgVG9rZW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzdG9yZSB0aGUgdmFyaWFibGUgdG8gaXRzIHByZXZpb3VzCnZhbHVlIHZpYSB0aGUgYENvbnRleHRWYXIucmVzZXQoKWAgbWV0aG9kLgAAAAAAAAAAAAAAcmVzZXQoJHNlbGYsIHRva2VuLCAvKQotLQoKUmVzZXQgdGhlIGNvbnRleHQgdmFyaWFibGUuCgpUaGUgdmFyaWFibGUgaXMgcmVzZXQgdG8gdGhlIHZhbHVlIGl0IGhhZCBiZWZvcmUgdGhlIGBDb250ZXh0VmFyLnNldCgpYCB0aGF0CmNyZWF0ZWQgdGhlIHRva2VuIHdhcyB1c2VkLgAAAAAAAAAAAAAAAAAAAABVbnJhaXNhYmxlSG9va0FyZ3MKClR5cGUgdXNlZCB0byBwYXNzIGFyZ3VtZW50cyB0byBzeXMudW5yYWlzYWJsZWhvb2suAAAAAAAAAAAAAENvcHlyaWdodCAoYykgMjAwMS0yMDIzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgpBbGwgUmlnaHRzIFJlc2VydmVkLgoKQ29weXJpZ2h0IChjKSAyMDAwIEJlT3Blbi5jb20uCkFsbCBSaWdodHMgUmVzZXJ2ZWQuCgpDb3B5cmlnaHQgKGMpIDE5OTUtMjAwMSBDb3Jwb3JhdGlvbiBmb3IgTmF0aW9uYWwgUmVzZWFyY2ggSW5pdGlhdGl2ZXMuCkFsbCBSaWdodHMgUmVzZXJ2ZWQuCgpDb3B5cmlnaHQgKGMpIDE5OTEtMTk5NSBTdGljaHRpbmcgTWF0aGVtYXRpc2NoIENlbnRydW0sIEFtc3RlcmRhbS4KQWxsIFJpZ2h0cyBSZXNlcnZlZC4A8AILAwAAAAAAAAAAKEV4dHJlbWVseSkgbG93LWxldmVsIGltcG9ydCBtYWNoaW5lcnkgYml0cyBhcyB1c2VkIGJ5IGltcG9ydGxpYiBhbmQgaW1wLgAAAAAAAABleHRlbnNpb25fc3VmZml4ZXMoJG1vZHVsZSwgLykKLS0KClJldHVybnMgdGhlIGxpc3Qgb2YgZmlsZSBzdWZmaXhlcyB1c2VkIHRvIGlkZW50aWZ5IGV4dGVuc2lvbiBtb2R1bGVzLgAAAAAAAAAAbG9ja19oZWxkKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgaW1wb3J0IGxvY2sgaXMgY3VycmVudGx5IGhlbGQsIGVsc2UgRmFsc2UuCgpPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCByZXR1cm4gRmFsc2UuAAAAAAAAAAAAAAAAYWNxdWlyZV9sb2NrKCRtb2R1bGUsIC8pCi0tCgpBY3F1aXJlcyB0aGUgaW50ZXJwcmV0ZXIncyBpbXBvcnQgbG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgoKVGhpcyBsb2NrIHNob3VsZCBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuIGltcG9ydGluZwptb2R1bGVzLiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4AcmVsZWFzZV9sb2NrKCRtb2R1bGUsIC8pCi0tCgpSZWxlYXNlIHRoZSBpbnRlcnByZXRlcidzIGltcG9ydCBsb2NrLgoKT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuAABmaW5kX2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvLCAqLCB3aXRoZGF0YT1GYWxzZSkKLS0KClJldHVybiBpbmZvIGFib3V0IHRoZSBjb3JyZXNwb25kaW5nIGZyb3plbiBtb2R1bGUgKGlmIHRoZXJlIGlzIG9uZSkgb3IgTm9uZS4KClRoZSByZXR1cm5lZCBpbmZvIChhIDItdHVwbGUpOgoKICogZGF0YSAgICAgICAgIHRoZSByYXcgbWFyc2hhbGxlZCBieXRlcwogKiBpc19wYWNrYWdlICAgd2hldGhlciBvciBub3QgaXQgaXMgYSBwYWNrYWdlCiAqIG9yaWduYW1lICAgICB0aGUgb3JpZ2luYWxseSBmcm96ZW4gbW9kdWxlJ3MgbmFtZSwgb3IgTm9uZSBpZiBub3QKICAgICAgICAgICAgICAgIGEgc3RkbGliIG1vZHVsZSAodGhpcyB3aWxsIHVzdWFsbHkgYmUgdGhlIHNhbWUgYXMKICAgICAgICAgICAgICAgIHRoZSBtb2R1bGUncyBjdXJyZW50IG5hbWUpAAAAAABnZXRfZnJvemVuX29iamVjdCgkbW9kdWxlLCBuYW1lLCBkYXRhPU5vbmUsIC8pCi0tCgpDcmVhdGUgYSBjb2RlIG9iamVjdCBmb3IgYSBmcm96ZW4gbW9kdWxlLgAAAABpc19mcm96ZW5fcGFja2FnZSgkbW9kdWxlLCBuYW1lLCAvKQotLQoKUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBpcyBvZiBhIGZyb3plbiBwYWNrYWdlLgBjcmVhdGVfYnVpbHRpbigkbW9kdWxlLCBzcGVjLCAvKQotLQoKQ3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUuAAAAAAAAAAAAAAAAAAAAAGluaXRfZnJvemVuKCRtb2R1bGUsIG5hbWUsIC8pCi0tCgpJbml0aWFsaXplcyBhIGZyb3plbiBtb2R1bGUuAABpc19idWlsdGluKCRtb2R1bGUsIG5hbWUsIC8pCi0tCgpSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgYnVpbHQtaW4gbW9kdWxlLgAAAAAAAAAAAAAAAAAAaXNfZnJvemVuKCRtb2R1bGUsIG5hbWUsIC8pCi0tCgpSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgZnJvemVuIG1vZHVsZS4AX2Zyb3plbl9tb2R1bGVfbmFtZXMoJG1vZHVsZSwgLykKLS0KClJldHVybnMgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZyb3plbiBtb2R1bGVzLgAAAAAAAAAAAAAAAAAAX292ZXJyaWRlX2Zyb3plbl9tb2R1bGVzX2Zvcl90ZXN0cygkbW9kdWxlLCBvdmVycmlkZSwgLykKLS0KCihpbnRlcm5hbC1vbmx5KSBPdmVycmlkZSBQeUNvbmZpZy51c2VfZnJvemVuX21vZHVsZXMuCgooLTE6ICJvZmYiLCAxOiAib24iLCAwOiBubyBvdmVycmlkZSkKU2VlIGZyb3plbl9tb2R1bGVzKCkgaW4gTGliL3Rlc3Qvc3VwcG9ydC9pbXBvcnRfaGVscGVyLnB5LgAAAAAAAAAAAAAAAABjcmVhdGVfZHluYW1pYygkbW9kdWxlLCBzcGVjLCBmaWxlPTx1bnJlcHJlc2VudGFibGU+LCAvKQotLQoKQ3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUuAAAAAAAAAABleGVjX2R5bmFtaWMoJG1vZHVsZSwgbW9kLCAvKQotLQoKSW5pdGlhbGl6ZSBhbiBleHRlbnNpb24gbW9kdWxlLgAAAAAAAAAAAAAAAAAAAGV4ZWNfYnVpbHRpbigkbW9kdWxlLCBtb2QsIC8pCi0tCgpJbml0aWFsaXplIGEgYnVpbHQtaW4gbW9kdWxlLgBfZml4X2NvX2ZpbGVuYW1lKCRtb2R1bGUsIGNvZGUsIHBhdGgsIC8pCi0tCgpDaGFuZ2VzIGNvZGUuY29fZmlsZW5hbWUgdG8gc3BlY2lmeSB0aGUgcGFzc2VkLWluIGZpbGUgcGF0aC4KCiAgY29kZQogICAgQ29kZSBvYmplY3QgdG8gY2hhbmdlLgogIHBhdGgKICAgIEZpbGUgcGF0aCB0byB1c2UuAAAAAAAAAHNvdXJjZV9oYXNoKCRtb2R1bGUsIC8sIGtleSwgc291cmNlKQotLQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAZgAAAHIAAABvAAAAegAAAGUAAABuAAAAXwAAAG0AAABvAAAAZAAAAHUAAABsAAAAZQAAAHMAAAAAAAAAbwAAAG4AAAAAAAAAbwAAAGYAAABmAAAAAAAAAGEAAABsAAAAdwAAAGEAAAB5AAAAcwAAAAAAAABuAAAAZQAAAHYAAABlAAAAcgAAAAAAAABkAAAAZQAAAGYAAABhAAAAdQAAAGwAAAB0AAAAAAAAAC0AAAAAAAAAAAAAAAAAAAAAAAAAdXNhZ2U6ICVscyBbb3B0aW9uXSAuLi4gWy1jIGNtZCB8IC1tIG1vZCB8IGZpbGUgfCAtXSBbYXJnXSAuLi4KAE9wdGlvbnMgKGFuZCBjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyk6Ci1iICAgICA6IGlzc3VlIHdhcm5pbmdzIGFib3V0IHN0cihieXRlc19pbnN0YW5jZSksIHN0cihieXRlYXJyYXlfaW5zdGFuY2UpCiAgICAgICAgIGFuZCBjb21wYXJpbmcgYnl0ZXMvYnl0ZWFycmF5IHdpdGggc3RyLiAoLWJiOiBpc3N1ZSBlcnJvcnMpCi1CICAgICA6IGRvbid0IHdyaXRlIC5weWMgZmlsZXMgb24gaW1wb3J0OyBhbHNvIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFPXgKLWMgY21kIDogcHJvZ3JhbSBwYXNzZWQgaW4gYXMgc3RyaW5nICh0ZXJtaW5hdGVzIG9wdGlvbiBsaXN0KQotZCAgICAgOiB0dXJuIG9uIHBhcnNlciBkZWJ1Z2dpbmcgb3V0cHV0IChmb3IgZXhwZXJ0cyBvbmx5LCBvbmx5IHdvcmtzIG9uCiAgICAgICAgIGRlYnVnIGJ1aWxkcyk7IGFsc28gUFlUSE9OREVCVUc9eAotRSAgICAgOiBpZ25vcmUgUFlUSE9OKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKHN1Y2ggYXMgUFlUSE9OUEFUSCkKLWggICAgIDogcHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQgKGFsc28gLT8gb3IgLS1oZWxwKQotaSAgICAgOiBpbnNwZWN0IGludGVyYWN0aXZlbHkgYWZ0ZXIgcnVubmluZyBzY3JpcHQ7IGZvcmNlcyBhIHByb21wdCBldmVuCiAgICAgICAgIGlmIHN0ZGluIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIHRlcm1pbmFsOyBhbHNvIFBZVEhPTklOU1BFQ1Q9eAotSSAgICAgOiBpc29sYXRlIFB5dGhvbiBmcm9tIHRoZSB1c2VyJ3MgZW52aXJvbm1lbnQgKGltcGxpZXMgLUUgYW5kIC1zKQotbSBtb2QgOiBydW4gbGlicmFyeSBtb2R1bGUgYXMgYSBzY3JpcHQgKHRlcm1pbmF0ZXMgb3B0aW9uIGxpc3QpCi1PICAgICA6IHJlbW92ZSBhc3NlcnQgYW5kIF9fZGVidWdfXy1kZXBlbmRlbnQgc3RhdGVtZW50czsgYWRkIC5vcHQtMSBiZWZvcmUKICAgICAgICAgLnB5YyBleHRlbnNpb247IGFsc28gUFlUSE9OT1BUSU1JWkU9eAotT08gICAgOiBkbyAtTyBjaGFuZ2VzIGFuZCBhbHNvIGRpc2NhcmQgZG9jc3RyaW5nczsgYWRkIC5vcHQtMiBiZWZvcmUKICAgICAgICAgLnB5YyBleHRlbnNpb24KLVAgICAgIDogZG9uJ3QgcHJlcGVuZCBhIHBvdGVudGlhbGx5IHVuc2FmZSBwYXRoIHRvIHN5cy5wYXRoCi1xICAgICA6IGRvbid0IHByaW50IHZlcnNpb24gYW5kIGNvcHlyaWdodCBtZXNzYWdlcyBvbiBpbnRlcmFjdGl2ZSBzdGFydHVwCi1zICAgICA6IGRvbid0IGFkZCB1c2VyIHNpdGUgZGlyZWN0b3J5IHRvIHN5cy5wYXRoOyBhbHNvIFBZVEhPTk5PVVNFUlNJVEUKLVMgICAgIDogZG9uJ3QgaW1wbHkgJ2ltcG9ydCBzaXRlJyBvbiBpbml0aWFsaXphdGlvbgotdSAgICAgOiBmb3JjZSB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIgc3RyZWFtcyB0byBiZSB1bmJ1ZmZlcmVkOwogICAgICAgICB0aGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHN0ZGluOyBhbHNvIFBZVEhPTlVOQlVGRkVSRUQ9eAotdiAgICAgOiB2ZXJib3NlICh0cmFjZSBpbXBvcnQgc3RhdGVtZW50cyk7IGFsc28gUFlUSE9OVkVSQk9TRT14CiAgICAgICAgIGNhbiBiZSBzdXBwbGllZCBtdWx0aXBsZSB0aW1lcyB0byBpbmNyZWFzZSB2ZXJib3NpdHkKLVYgICAgIDogcHJpbnQgdGhlIFB5dGhvbiB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdCAoYWxzbyAtLXZlcnNpb24pCiAgICAgICAgIHdoZW4gZ2l2ZW4gdHdpY2UsIHByaW50IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkCi1XIGFyZyA6IHdhcm5pbmcgY29udHJvbDsgYXJnIGlzIGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lbm8KICAgICAgICAgYWxzbyBQWVRIT05XQVJOSU5HUz1hcmcKLXggICAgIDogc2tpcCBmaXJzdCBsaW5lIG9mIHNvdXJjZSwgYWxsb3dpbmcgdXNlIG9mIG5vbi1Vbml4IGZvcm1zIG9mICMhY21kCi1YIG9wdCA6IHNldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBvcHRpb24KLS1jaGVjay1oYXNoLWJhc2VkLXB5Y3MgYWx3YXlzfGRlZmF1bHR8bmV2ZXI6CiAgICAgICAgIGNvbnRyb2wgaG93IFB5dGhvbiBpbnZhbGlkYXRlcyBoYXNoLWJhc2VkIC5weWMgZmlsZXMKLS1oZWxwLWVudiAgICAgIDogcHJpbnQgaGVscCBhYm91dCBQeXRob24gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCBleGl0Ci0taGVscC14b3B0aW9ucyA6IHByaW50IGhlbHAgYWJvdXQgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgLVggb3B0aW9ucyBhbmQgZXhpdAotLWhlbHAtYWxsICAgICAgOiBwcmludCBjb21wbGV0ZSBoZWxwIGluZm9ybWF0aW9uIGFuZCBleGl0CkFyZ3VtZW50czoKZmlsZSAgIDogcHJvZ3JhbSByZWFkIGZyb20gc2NyaXB0IGZpbGUKLSAgICAgIDogcHJvZ3JhbSByZWFkIGZyb20gc3RkaW4gKGRlZmF1bHQ7IGludGVyYWN0aXZlIG1vZGUgaWYgYSB0dHkpCmFyZyAuLi46IGFyZ3VtZW50cyBwYXNzZWQgdG8gcHJvZ3JhbSBpbiBzeXMuYXJndlsxOl0KAAAAAAAAAAAAAAAAAABFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBjaGFuZ2UgYmVoYXZpb3I6ClBZVEhPTlNUQVJUVVA6IGZpbGUgZXhlY3V0ZWQgb24gaW50ZXJhY3RpdmUgc3RhcnR1cCAobm8gZGVmYXVsdCkKUFlUSE9OUEFUSCAgIDogJyVsYyctc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgcHJlZml4ZWQgdG8gdGhlCiAgICAgICAgICAgICAgIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoLiAgVGhlIHJlc3VsdCBpcyBzeXMucGF0aC4KUFlUSE9OU0FGRVBBVEg6IGRvbid0IHByZXBlbmQgYSBwb3RlbnRpYWxseSB1bnNhZmUgcGF0aCB0byBzeXMucGF0aC4KUFlUSE9OSE9NRSAgIDogYWx0ZXJuYXRlIDxwcmVmaXg+IGRpcmVjdG9yeSAob3IgPHByZWZpeD4lbGM8ZXhlY19wcmVmaXg+KS4KICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoIHVzZXMgJXMuClBZVEhPTlBMQVRMSUJESVIgOiBvdmVycmlkZSBzeXMucGxhdGxpYmRpci4KUFlUSE9OQ0FTRU9LIDogaWdub3JlIGNhc2UgaW4gJ2ltcG9ydCcgc3RhdGVtZW50cyAoV2luZG93cykuClBZVEhPTlVURjg6IGlmIHNldCB0byAxLCBlbmFibGUgdGhlIFVURi04IG1vZGUuClBZVEhPTklPRU5DT0RJTkc6IEVuY29kaW5nWzplcnJvcnNdIHVzZWQgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIuClBZVEhPTkZBVUxUSEFORExFUjogZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMuClBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgYSByYW5kb20gdmFsdWUgaXMgdXNlZAogICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyIGFuZCBieXRlcyBvYmplY3RzLiAgSXQgY2FuIGFsc28gYmUgc2V0IHRvIGFuCiAgIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdIHRvIGdldCBoYXNoIHZhbHVlcyB3aXRoIGEKICAgcHJlZGljdGFibGUgc2VlZC4KUFlUSE9OSU5UTUFYU1RSRElHSVRTOiBsaW1pdHMgdGhlIG1heGltdW0gZGlnaXQgY2hhcmFjdGVycyBpbiBhbiBpbnQgdmFsdWUKICAgd2hlbiBjb252ZXJ0aW5nIGZyb20gYSBzdHJpbmcgYW5kIHdoZW4gY29udmVydGluZyBhbiBpbnQgYmFjayB0byBhIHN0ci4KICAgQSB2YWx1ZSBvZiAwIGRpc2FibGVzIHRoZSBsaW1pdC4gIENvbnZlcnNpb25zIHRvIG9yIGZyb20gYmFzZXMgMiwgNCwgOCwKICAgMTYsIGFuZCAzMiBhcmUgbmV2ZXIgbGltaXRlZC4KUFlUSE9OTUFMTE9DOiBzZXQgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcwogICBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMuIFVzZSBQWVRIT05NQUxMT0M9ZGVidWcgdG8gaW5zdGFsbCBkZWJ1ZwogICBob29rcy4KUFlUSE9OQ09FUkNFQ0xPQ0FMRTogaWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gMCwgaXQgZGlzYWJsZXMgdGhlIGxvY2FsZQogICBjb2VyY2lvbiBiZWhhdmlvci4gVXNlIFBZVEhPTkNPRVJDRUNMT0NBTEU9d2FybiB0byByZXF1ZXN0IGRpc3BsYXkgb2YKICAgbG9jYWxlIGNvZXJjaW9uIGFuZCBsb2NhbGUgY29tcGF0aWJpbGl0eSB3YXJuaW5ncyBvbiBzdGRlcnIuClBZVEhPTkJSRUFLUE9JTlQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIDAsIGl0IGRpc2FibGVzIHRoZSBkZWZhdWx0CiAgIGRlYnVnZ2VyLiBJdCBjYW4gYmUgc2V0IHRvIHRoZSBjYWxsYWJsZSBvZiB5b3VyIGRlYnVnZ2VyIG9mIGNob2ljZS4KUFlUSE9OREVWTU9ERTogZW5hYmxlIHRoZSBkZXZlbG9wbWVudCBtb2RlLgpQWVRIT05QWUNBQ0hFUFJFRklYOiByb290IGRpcmVjdG9yeSBmb3IgYnl0ZWNvZGUgY2FjaGUgKHB5YykgZmlsZXMuClBZVEhPTldBUk5ERUZBVUxURU5DT0RJTkc6IGVuYWJsZSBvcHQtaW4gRW5jb2RpbmdXYXJuaW5nIGZvciAnZW5jb2Rpbmc9Tm9uZScuClBZVEhPTk5PREVCVUdSQU5HRVM6IElmIHRoaXMgdmFyaWFibGUgaXMgc2V0LCBpdCBkaXNhYmxlcyB0aGUgaW5jbHVzaW9uIG9mIHRoZSAKICAgdGFibGVzIG1hcHBpbmcgZXh0cmEgbG9jYXRpb24gaW5mb3JtYXRpb24gKGVuZCBsaW5lLCBzdGFydCBjb2x1bW4gb2Zmc2V0IAogICBhbmQgZW5kIGNvbHVtbiBvZmZzZXQpIHRvIGV2ZXJ5IGluc3RydWN0aW9uIGluIGNvZGUgb2JqZWN0cy4gVGhpcyBpcyB1c2VmdWwgCiAgIHdoZW4gc21hbGxlciBjb2RlIG9iamVjdHMgYW5kIHB5YyBmaWxlcyBhcmUgZGVzaXJlZCBhcyB3ZWxsIGFzIHN1cHByZXNzaW5nIHRoZSAKICAgZXh0cmEgdmlzdWFsIGxvY2F0aW9uIGluZGljYXRvcnMgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgZGlzcGxheXMgdHJhY2ViYWNrcy4KVGhlc2UgdmFyaWFibGVzIGhhdmUgZXF1aXZhbGVudCBjb21tYW5kLWxpbmUgcGFyYW1ldGVycyAoc2VlIC0taGVscCBmb3IgZGV0YWlscyk6ClBZVEhPTkRFQlVHICAgICAgICAgICAgIDogZW5hYmxlIHBhcnNlciBkZWJ1ZyBtb2RlICgtZCkKUFlUSE9ORE9OVFdSSVRFQllURUNPREUgOiBkb24ndCB3cml0ZSAucHljIGZpbGVzICgtQikKUFlUSE9OSU5TUEVDVCAgICAgICAgICAgOiBpbnNwZWN0IGludGVyYWN0aXZlbHkgYWZ0ZXIgcnVubmluZyBzY3JpcHQgKC1pKQpQWVRIT05JTlRNQVhTVFJESUdJVFMgICA6IGxpbWl0IG1heCBkaWdpdCBjaGFyYWN0ZXJzIGluIGFuIGludCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICgtWCBpbnRfbWF4X3N0cl9kaWdpdHM9bnVtYmVyKQpQWVRIT05OT1VTRVJTSVRFICAgICAgICA6IGRpc2FibGUgdXNlciBzaXRlIGRpcmVjdG9yeSAoLXMpClBZVEhPTk9QVElNSVpFICAgICAgICAgIDogZW5hYmxlIGxldmVsIDEgb3B0aW1pemF0aW9ucyAoLU8pClBZVEhPTlVOQlVGRkVSRUQgICAgICAgIDogZGlzYWJsZSBzdGRvdXQvc3RkZXJyIGJ1ZmZlcmluZyAoLXUpClBZVEhPTlZFUkJPU0UgICAgICAgICAgIDogdHJhY2UgaW1wb3J0IHN0YXRlbWVudHMgKC12KQpQWVRIT05XQVJOSU5HUz1hcmcgICAgICA6IHdhcm5pbmcgY29udHJvbCAoLVcgYXJnKQoAAAAAAAAAAAAAAFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgoKLVggZmF1bHRoYW5kbGVyOiBlbmFibGUgZmF1bHRoYW5kbGVyCgotWCBzaG93cmVmY291bnQ6IG91dHB1dCB0aGUgdG90YWwgcmVmZXJlbmNlIGNvdW50IGFuZCBudW1iZXIgb2YgdXNlZAogICAgbWVtb3J5IGJsb2NrcyB3aGVuIHRoZSBwcm9ncmFtIGZpbmlzaGVzIG9yIGFmdGVyIGVhY2ggc3RhdGVtZW50IGluIHRoZQogICAgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuIFRoaXMgb25seSB3b3JrcyBvbiBkZWJ1ZyBidWlsZHMKCi1YIHRyYWNlbWFsbG9jOiBzdGFydCB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgdXNpbmcgdGhlCiAgICB0cmFjZW1hbGxvYyBtb2R1bGUuIEJ5IGRlZmF1bHQsIG9ubHkgdGhlIG1vc3QgcmVjZW50IGZyYW1lIGlzIHN0b3JlZCBpbiBhCiAgICB0cmFjZWJhY2sgb2YgYSB0cmFjZS4gVXNlIC1YIHRyYWNlbWFsbG9jPU5GUkFNRSB0byBzdGFydCB0cmFjaW5nIHdpdGggYQogICAgdHJhY2ViYWNrIGxpbWl0IG9mIE5GUkFNRSBmcmFtZXMKCi1YIGltcG9ydHRpbWU6IHNob3cgaG93IGxvbmcgZWFjaCBpbXBvcnQgdGFrZXMuIEl0IHNob3dzIG1vZHVsZSBuYW1lLAogICAgY3VtdWxhdGl2ZSB0aW1lIChpbmNsdWRpbmcgbmVzdGVkIGltcG9ydHMpIGFuZCBzZWxmIHRpbWUgKGV4Y2x1ZGluZwogICAgbmVzdGVkIGltcG9ydHMpLiBOb3RlIHRoYXQgaXRzIG91dHB1dCBtYXkgYmUgYnJva2VuIGluIG11bHRpLXRocmVhZGVkCiAgICBhcHBsaWNhdGlvbi4gVHlwaWNhbCB1c2FnZSBpcyBweXRob24zIC1YIGltcG9ydHRpbWUgLWMgJ2ltcG9ydCBhc3luY2lvJwoKLVggZGV2OiBlbmFibGUgQ1B5dGhvbidzICJkZXZlbG9wbWVudCBtb2RlIiwgaW50cm9kdWNpbmcgYWRkaXRpb25hbCBydW50aW1lCiAgICBjaGVja3Mgd2hpY2ggYXJlIHRvbyBleHBlbnNpdmUgdG8gYmUgZW5hYmxlZCBieSBkZWZhdWx0LiBFZmZlY3Qgb2YgdGhlCiAgICBkZXZlbG9wZXIgbW9kZToKICAgICAgICogQWRkIGRlZmF1bHQgd2FybmluZyBmaWx0ZXIsIGFzIC1XIGRlZmF1bHQKICAgICAgICogSW5zdGFsbCBkZWJ1ZyBob29rcyBvbiBtZW1vcnkgYWxsb2NhdG9yczogc2VlIHRoZSBQeU1lbV9TZXR1cERlYnVnSG9va3MoKQogICAgICAgICBDIGZ1bmN0aW9uCiAgICAgICAqIEVuYWJsZSB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSB0byBkdW1wIHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGEgY3Jhc2gKICAgICAgICogRW5hYmxlIGFzeW5jaW8gZGVidWcgbW9kZQogICAgICAgKiBTZXQgdGhlIGRldl9tb2RlIGF0dHJpYnV0ZSBvZiBzeXMuZmxhZ3MgdG8gVHJ1ZQogICAgICAgKiBpby5JT0Jhc2UgZGVzdHJ1Y3RvciBsb2dzIGNsb3NlKCkgZXhjZXB0aW9ucwoKLVggdXRmODogZW5hYmxlIFVURi04IG1vZGUgZm9yIG9wZXJhdGluZyBzeXN0ZW0gaW50ZXJmYWNlcywgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdAogICAgbG9jYWxlLWF3YXJlIG1vZGUuIC1YIHV0Zjg9MCBleHBsaWNpdGx5IGRpc2FibGVzIFVURi04IG1vZGUgKGV2ZW4gd2hlbiBpdCB3b3VsZAogICAgb3RoZXJ3aXNlIGFjdGl2YXRlIGF1dG9tYXRpY2FsbHkpCgotWCBweWNhY2hlX3ByZWZpeD1QQVRIOiBlbmFibGUgd3JpdGluZyAucHljIGZpbGVzIHRvIGEgcGFyYWxsZWwgdHJlZSByb290ZWQgYXQgdGhlCiAgICBnaXZlbiBkaXJlY3RvcnkgaW5zdGVhZCBvZiB0byB0aGUgY29kZSB0cmVlCgotWCB3YXJuX2RlZmF1bHRfZW5jb2Rpbmc6IGVuYWJsZSBvcHQtaW4gRW5jb2RpbmdXYXJuaW5nIGZvciAnZW5jb2Rpbmc9Tm9uZScKCi1YIG5vX2RlYnVnX3JhbmdlczogZGlzYWJsZSB0aGUgaW5jbHVzaW9uIG9mIHRoZSB0YWJsZXMgbWFwcGluZyBleHRyYSBsb2NhdGlvbiAKICAgaW5mb3JtYXRpb24gKGVuZCBsaW5lLCBzdGFydCBjb2x1bW4gb2Zmc2V0IGFuZCBlbmQgY29sdW1uIG9mZnNldCkgdG8gZXZlcnkgCiAgIGluc3RydWN0aW9uIGluIGNvZGUgb2JqZWN0cy4gVGhpcyBpcyB1c2VmdWwgd2hlbiBzbWFsbGVyIGNvZGUgb2JqZWN0cyBhbmQgcHljIAogICBmaWxlcyBhcmUgZGVzaXJlZCBhcyB3ZWxsIGFzIHN1cHByZXNzaW5nIHRoZSBleHRyYSB2aXN1YWwgbG9jYXRpb24gaW5kaWNhdG9ycyAKICAgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgZGlzcGxheXMgdHJhY2ViYWNrcy4KCi1YIGZyb3plbl9tb2R1bGVzPVtvbnxvZmZdOiB3aGV0aGVyIG9yIG5vdCBmcm96ZW4gbW9kdWxlcyBzaG91bGQgYmUgdXNlZC4KICAgVGhlIGRlZmF1bHQgaXMgIm9uIiAob3IgIm9mZiIgaWYgeW91IGFyZSBydW5uaW5nIGEgbG9jYWwgYnVpbGQpLgoKLVggaW50X21heF9zdHJfZGlnaXRzPW51bWJlcjogbGltaXQgdGhlIHNpemUgb2YgaW50PC0+c3RyIGNvbnZlcnNpb25zLgogICAgVGhpcyBoZWxwcyBhdm9pZCBkZW5pYWwgb2Ygc2VydmljZSBhdHRhY2tzIHdoZW4gcGFyc2luZyB1bnRydXN0ZWQgZGF0YS4KICAgIFRoZSBkZWZhdWx0IGlzIHN5cy5pbnRfaW5mby5kZWZhdWx0X21heF9zdHJfZGlnaXRzLiAgMCBkaXNhYmxlcy4ALQAAAGMAAAAAAAAALQAAAG0AAAAAAAAALAAAAAAAAABlAAAAcgAAAHIAAABvAAAAcgAAADoAAAA6AAAAQgAAAHkAAAB0AAAAZQAAAHMAAABXAAAAYQAAAHIAAABuAAAAaQAAAG4AAABnAAAAAAAAAGQAAABlAAAAZgAAAGEAAAB1AAAAbAAAAHQAAAA6AAAAOgAAAEIAAAB5AAAAdAAAAGUAAABzAAAAVwAAAGEAAAByAAAAbgAAAGkAAABuAAAAZwAAAAAAAABzAAAAaAAAAG8AAAB3AAAAcgAAAGUAAABmAAAAYwAAAG8AAAB1AAAAbgAAAHQAAAAAAAAAZgAAAGEAAAB1AAAAbAAAAHQAAABoAAAAYQAAAG4AAABkAAAAbAAAAGUAAAByAAAAAAAAAGkAAABtAAAAcAAAAG8AAAByAAAAdAAAAHQAAABpAAAAbQAAAGUAAAAAAAAAbgAAAG8AAABfAAAAZAAAAGUAAABiAAAAdQAAAGcAAABfAAAAcgAAAGEAAABuAAAAZwAAAGUAAABzAAAAAAAAAHQAAAByAAAAYQAAAGMAAABlAAAAbQAAAGEAAABsAAAAbAAAAG8AAABjAAAAAAAAAGkAAABuAAAAdAAAAF8AAABtAAAAYQAAAHgAAABfAAAAcwAAAHQAAAByAAAAXwAAAGQAAABpAAAAZwAAAGkAAAB0AAAAcwAAAAAAAABwAAAAeQAAAGMAAABhAAAAYwAAAGgAAABlAAAAXwAAAHAAAAByAAAAZQAAAGYAAABpAAAAeAAAAAAAAABzAAAAdQAAAHIAAAByAAAAbwAAAGcAAABhAAAAdAAAAGUAAABlAAAAcwAAAGMAAABhAAAAcAAAAGUAAAAAAAAAdQAAAHQAAABmAAAALQAAADgAAAAAAAAAYQAAAHMAAABjAAAAaQAAAGkAAAAAAAAAcwAAAHQAAAByAAAAaQAAAGMAAAB0AAAAAAAAAAAAAAAAAAAAVGhpcyBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIHRoYXQgY2FuIHJlYWQgYW5kIHdyaXRlIFB5dGhvbiB2YWx1ZXMgaW4KYSBiaW5hcnkgZm9ybWF0LiBUaGUgZm9ybWF0IGlzIHNwZWNpZmljIHRvIFB5dGhvbiwgYnV0IGluZGVwZW5kZW50IG9mCm1hY2hpbmUgYXJjaGl0ZWN0dXJlIGlzc3Vlcy4KCk5vdCBhbGwgUHl0aG9uIG9iamVjdCB0eXBlcyBhcmUgc3VwcG9ydGVkOyBpbiBnZW5lcmFsLCBvbmx5IG9iamVjdHMKd2hvc2UgdmFsdWUgaXMgaW5kZXBlbmRlbnQgZnJvbSBhIHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBQeXRob24gY2FuIGJlCndyaXR0ZW4gYW5kIHJlYWQgYnkgdGhpcyBtb2R1bGUuIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIHN1cHBvcnRlZDoKTm9uZSwgaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIHN0cmluZ3MsIGJ5dGVzLCBieXRlYXJyYXlzLAp0dXBsZXMsIGxpc3RzLCBzZXRzLCBkaWN0aW9uYXJpZXMsIGFuZCBjb2RlIG9iamVjdHMsIHdoZXJlIGl0CnNob3VsZCBiZSB1bmRlcnN0b29kIHRoYXQgdHVwbGVzLCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzIGFyZSBvbmx5CnN1cHBvcnRlZCBhcyBsb25nIGFzIHRoZSB2YWx1ZXMgY29udGFpbmVkIHRoZXJlaW4gYXJlIHRoZW1zZWx2ZXMKc3VwcG9ydGVkOyBhbmQgcmVjdXJzaXZlIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMgc2hvdWxkIG5vdCBiZSB3cml0dGVuCih0aGV5IHdpbGwgY2F1c2UgaW5maW5pdGUgbG9vcHMpLgoKVmFyaWFibGVzOgoKdmVyc2lvbiAtLSBpbmRpY2F0ZXMgdGhlIGZvcm1hdCB0aGF0IHRoZSBtb2R1bGUgdXNlcy4gVmVyc2lvbiAwIGlzIHRoZQogICAgaGlzdG9yaWNhbCBmb3JtYXQsIHZlcnNpb24gMSBzaGFyZXMgaW50ZXJuZWQgc3RyaW5ncyBhbmQgdmVyc2lvbiAyCiAgICB1c2VzIGEgYmluYXJ5IGZvcm1hdCBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4KICAgIFZlcnNpb24gMyBzaGFyZXMgY29tbW9uIG9iamVjdCByZWZlcmVuY2VzIChOZXcgaW4gdmVyc2lvbiAzLjQpLgoKRnVuY3Rpb25zOgoKZHVtcCgpIC0tIHdyaXRlIHZhbHVlIHRvIGEgZmlsZQpsb2FkKCkgLS0gcmVhZCB2YWx1ZSBmcm9tIGEgZmlsZQpkdW1wcygpIC0tIG1hcnNoYWwgdmFsdWUgYXMgYSBieXRlcyBvYmplY3QKbG9hZHMoKSAtLSByZWFkIHZhbHVlIGZyb20gYSBieXRlcy1saWtlIG9iamVjdAAAAAAAAAAAAAAAZHVtcCgkbW9kdWxlLCB2YWx1ZSwgZmlsZSwgdmVyc2lvbj12ZXJzaW9uLCAvKQotLQoKV3JpdGUgdGhlIHZhbHVlIG9uIHRoZSBvcGVuIGZpbGUuCgogIHZhbHVlCiAgICBNdXN0IGJlIGEgc3VwcG9ydGVkIHR5cGUuCiAgZmlsZQogICAgTXVzdCBiZSBhIHdyaXRlYWJsZSBiaW5hcnkgZmlsZS4KICB2ZXJzaW9uCiAgICBJbmRpY2F0ZXMgdGhlIGRhdGEgZm9ybWF0IHRoYXQgZHVtcCBzaG91bGQgdXNlLgoKSWYgdGhlIHZhbHVlIGhhcyAob3IgY29udGFpbnMgYW4gb2JqZWN0IHRoYXQgaGFzKSBhbiB1bnN1cHBvcnRlZCB0eXBlLCBhClZhbHVlRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZCAtIGJ1dCBnYXJiYWdlIGRhdGEgd2lsbCBhbHNvIGJlIHdyaXR0ZW4KdG8gdGhlIGZpbGUuIFRoZSBvYmplY3Qgd2lsbCBub3QgYmUgcHJvcGVybHkgcmVhZCBiYWNrIGJ5IGxvYWQoKS4AAAAAAAAAAGxvYWQoJG1vZHVsZSwgZmlsZSwgLykKLS0KClJlYWQgb25lIHZhbHVlIGZyb20gdGhlIG9wZW4gZmlsZSBhbmQgcmV0dXJuIGl0LgoKICBmaWxlCiAgICBNdXN0IGJlIHJlYWRhYmxlIGJpbmFyeSBmaWxlLgoKSWYgbm8gdmFsaWQgdmFsdWUgaXMgcmVhZCAoZS5nLiBiZWNhdXNlIHRoZSBkYXRhIGhhcyBhIGRpZmZlcmVudCBQeXRob24KdmVyc2lvbidzIGluY29tcGF0aWJsZSBtYXJzaGFsIGZvcm1hdCksIHJhaXNlIEVPRkVycm9yLCBWYWx1ZUVycm9yIG9yClR5cGVFcnJvci4KCk5vdGU6IElmIGFuIG9iamVjdCBjb250YWluaW5nIGFuIHVuc3VwcG9ydGVkIHR5cGUgd2FzIG1hcnNoYWxsZWQgd2l0aApkdW1wKCksIGxvYWQoKSB3aWxsIHN1YnN0aXR1dGUgTm9uZSBmb3IgdGhlIHVubWFyc2hhbGxhYmxlIHR5cGUuAAAAAAAAAAAAZHVtcHMoJG1vZHVsZSwgdmFsdWUsIHZlcnNpb249dmVyc2lvbiwgLykKLS0KClJldHVybiB0aGUgYnl0ZXMgb2JqZWN0IHRoYXQgd291bGQgYmUgd3JpdHRlbiB0byBhIGZpbGUgYnkgZHVtcCh2YWx1ZSwgZmlsZSkuCgogIHZhbHVlCiAgICBNdXN0IGJlIGEgc3VwcG9ydGVkIHR5cGUuCiAgdmVyc2lvbgogICAgSW5kaWNhdGVzIHRoZSBkYXRhIGZvcm1hdCB0aGF0IGR1bXBzIHNob3VsZCB1c2UuCgpSYWlzZSBhIFZhbHVlRXJyb3IgZXhjZXB0aW9uIGlmIHZhbHVlIGhhcyAob3IgY29udGFpbnMgYW4gb2JqZWN0IHRoYXQgaGFzKSBhbgp1bnN1cHBvcnRlZCB0eXBlLgAAAAAAAAAAAAAAAAAAbG9hZHMoJG1vZHVsZSwgYnl0ZXMsIC8pCi0tCgpDb252ZXJ0IHRoZSBieXRlcy1saWtlIG9iamVjdCB0byBhIHZhbHVlLgoKSWYgbm8gdmFsaWQgdmFsdWUgaXMgZm91bmQsIHJhaXNlIEVPRkVycm9yLCBWYWx1ZUVycm9yIG9yIFR5cGVFcnJvci4gIEV4dHJhCmJ5dGVzIGluIHRoZSBpbnB1dCBhcmUgaWdub3JlZC4AAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAFAAAABAAAAANAAAADAAAAAsAAAAKAAAACgAAAAkAAAAJAAAACAAAAAgAAAAIAAAACAAAAAgAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////f1VVVVX///8/MzMzM6qqqiokSZIk////HxzHcRyZmZkZdNFFF1VVVRUTO7ETkiRJEhERERH///8PDw8PD47jOA5eQ3kNzMzMDAzDMAy66KILLGQhC6qqqgqjcD0KiZ3YCV5CewlJkiQJsNzTCIiIiAiEEEII////B3zwwQeHh4cHB3VQB8dxHAcAAAAALQAAAG0AAAAAAAAALQAAAGMAAAAAAAAAZAAAAGUAAAB2AAAAAAAAAHcAAABhAAAAcgAAAG4AAABfAAAAZAAAAGUAAABmAAAAYQAAAHUAAABsAAAAdAAAAF8AAABlAAAAbgAAAGMAAABvAAAAZAAAAGkAAABuAAAAZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAHUAAAB0AAAAZgAAADgAAAAAAAAAMQAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWnt8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v9QeXRob24gZGV0ZWN0ZWQgTENfQ1RZUEU9QzogTENfQ1RZUEUgY29lcmNlZCB0byAlLjIwcyAoc2V0IGFub3RoZXIgbG9jYWxlIG9yIFBZVEhPTkNPRVJDRUNMT0NBTEU9MCB0byBkaXNhYmxlIHRoaXMgbG9jYWxlIGNvZXJjaW9uIGJlaGF2aW9yKS4KAABiAAAAYQAAAGMAAABrAAAAcwAAAGwAAABhAAAAcwAAAGgAAAByAAAAZQAAAHAAAABsAAAAYQAAAGMAAABlAAAAAAAAAAAAAAAAAAAAAAAAAFRoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246CgAAAAAAAAAAAAAARHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgoAAAAAAAAAAAAAAAABAAAAAwAAAAIAAAAFAAAABAAAAAYAAAABAAAAAwAAAAIAAAAAAAAAAAAAAAAAAABUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gc29tZSBvYmplY3RzIHVzZWQgb3IgbWFpbnRhaW5lZCBieSB0aGUKaW50ZXJwcmV0ZXIgYW5kIHRvIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHN0cm9uZ2x5IHdpdGggdGhlIGludGVycHJldGVyLgoKRHluYW1pYyBvYmplY3RzOgoKYXJndiAtLSBjb21tYW5kIGxpbmUgYXJndW1lbnRzOyBhcmd2WzBdIGlzIHRoZSBzY3JpcHQgcGF0aG5hbWUgaWYga25vd24KcGF0aCAtLSBtb2R1bGUgc2VhcmNoIHBhdGg7IHBhdGhbMF0gaXMgdGhlIHNjcmlwdCBkaXJlY3RvcnksIGVsc2UgJycKbW9kdWxlcyAtLSBkaWN0aW9uYXJ5IG9mIGxvYWRlZCBtb2R1bGVzCgpkaXNwbGF5aG9vayAtLSBjYWxsZWQgdG8gc2hvdyByZXN1bHRzIGluIGFuIGludGVyYWN0aXZlIHNlc3Npb24KZXhjZXB0aG9vayAtLSBjYWxsZWQgdG8gaGFuZGxlIGFueSB1bmNhdWdodCBleGNlcHRpb24gb3RoZXIgdGhhbiBTeXN0ZW1FeGl0CiAgVG8gY3VzdG9taXplIHByaW50aW5nIGluIGFuIGludGVyYWN0aXZlIHNlc3Npb24gb3IgdG8gaW5zdGFsbCBhIGN1c3RvbQogIHRvcC1sZXZlbCBleGNlcHRpb24gaGFuZGxlciwgYXNzaWduIG90aGVyIGZ1bmN0aW9ucyB0byByZXBsYWNlIHRoZXNlLgoKc3RkaW4gLS0gc3RhbmRhcmQgaW5wdXQgZmlsZSBvYmplY3Q7IHVzZWQgYnkgaW5wdXQoKQpzdGRvdXQgLS0gc3RhbmRhcmQgb3V0cHV0IGZpbGUgb2JqZWN0OyB1c2VkIGJ5IHByaW50KCkKc3RkZXJyIC0tIHN0YW5kYXJkIGVycm9yIG9iamVjdDsgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMKICBCeSBhc3NpZ25pbmcgb3RoZXIgZmlsZSBvYmplY3RzIChvciBvYmplY3RzIHRoYXQgYmVoYXZlIGxpa2UgZmlsZXMpCiAgdG8gdGhlc2UsIGl0IGlzIHBvc3NpYmxlIHRvIHJlZGlyZWN0IGFsbCBvZiB0aGUgaW50ZXJwcmV0ZXIncyBJL08uCgpsYXN0X3R5cGUgLS0gdHlwZSBvZiBsYXN0IHVuY2F1Z2h0IGV4Y2VwdGlvbgpsYXN0X3ZhbHVlIC0tIHZhbHVlIG9mIGxhc3QgdW5jYXVnaHQgZXhjZXB0aW9uCmxhc3RfdHJhY2ViYWNrIC0tIHRyYWNlYmFjayBvZiBsYXN0IHVuY2F1Z2h0IGV4Y2VwdGlvbgogIFRoZXNlIHRocmVlIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBhbiBpbnRlcmFjdGl2ZSBzZXNzaW9uIGFmdGVyIGEKICB0cmFjZWJhY2sgaGFzIGJlZW4gcHJpbnRlZC4KClN0YXRpYyBvYmplY3RzOgoKYnVpbHRpbl9tb2R1bGVfbmFtZXMgLS0gdHVwbGUgb2YgbW9kdWxlIG5hbWVzIGJ1aWx0IGludG8gdGhpcyBpbnRlcnByZXRlcgpjb3B5cmlnaHQgLS0gY29weXJpZ2h0IG5vdGljZSBwZXJ0YWluaW5nIHRvIHRoaXMgaW50ZXJwcmV0ZXIKZXhlY19wcmVmaXggLS0gcHJlZml4IHVzZWQgdG8gZmluZCB0aGUgbWFjaGluZS1zcGVjaWZpYyBQeXRob24gbGlicmFyeQpleGVjdXRhYmxlIC0tIGFic29sdXRlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgYmluYXJ5IG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKZmxvYXRfaW5mbyAtLSBhIG5hbWVkIHR1cGxlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZsb2F0IGltcGxlbWVudGF0aW9uLgpmbG9hdF9yZXByX3N0eWxlIC0tIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBzdHlsZSBvZiByZXByKCkgb3V0cHV0IGZvciBmbG9hdHMKaGFzaF9pbmZvIC0tIGEgbmFtZWQgdHVwbGUgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaGFzaCBhbGdvcml0aG0uCmhleHZlcnNpb24gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBlbmNvZGVkIGFzIGEgc2luZ2xlIGludGVnZXIKaW1wbGVtZW50YXRpb24gLS0gUHl0aG9uIGltcGxlbWVudGF0aW9uIGluZm9ybWF0aW9uLgppbnRfaW5mbyAtLSBhIG5hbWVkIHR1cGxlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGludCBpbXBsZW1lbnRhdGlvbi4KbWF4c2l6ZSAtLSB0aGUgbGFyZ2VzdCBzdXBwb3J0ZWQgbGVuZ3RoIG9mIGNvbnRhaW5lcnMuCm1heHVuaWNvZGUgLS0gdGhlIHZhbHVlIG9mIHRoZSBsYXJnZXN0IFVuaWNvZGUgY29kZSBwb2ludApwbGF0Zm9ybSAtLSBwbGF0Zm9ybSBpZGVudGlmaWVyCnByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBQeXRob24gbGlicmFyeQp0aHJlYWRfaW5mbyAtLSBhIG5hbWVkIHR1cGxlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4KdmVyc2lvbiAtLSB0aGUgdmVyc2lvbiBvZiB0aGlzIGludGVycHJldGVyIGFzIGEgc3RyaW5nCnZlcnNpb25faW5mbyAtLSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFzIGEgbmFtZWQgdHVwbGUKX19zdGRpbl9fIC0tIHRoZSBvcmlnaW5hbCBzdGRpbjsgZG9uJ3QgdG91Y2ghCl9fc3Rkb3V0X18gLS0gdGhlIG9yaWdpbmFsIHN0ZG91dDsgZG9uJ3QgdG91Y2ghCl9fc3RkZXJyX18gLS0gdGhlIG9yaWdpbmFsIHN0ZGVycjsgZG9uJ3QgdG91Y2ghCl9fZGlzcGxheWhvb2tfXyAtLSB0aGUgb3JpZ2luYWwgZGlzcGxheWhvb2s7IGRvbid0IHRvdWNoIQpfX2V4Y2VwdGhvb2tfXyAtLSB0aGUgb3JpZ2luYWwgZXhjZXB0aG9vazsgZG9uJ3QgdG91Y2ghCgpGdW5jdGlvbnM6CgpkaXNwbGF5aG9vaygpIC0tIHByaW50IGFuIG9iamVjdCB0byB0aGUgc2NyZWVuLCBhbmQgc2F2ZSBpdCBpbiBidWlsdGlucy5fCmV4Y2VwdGhvb2soKSAtLSBwcmludCBhbiBleGNlcHRpb24gYW5kIGl0cyB0cmFjZWJhY2sgdG8gc3lzLnN0ZGVycgpleGNlcHRpb24oKSAtLSByZXR1cm4gdGhlIGN1cnJlbnQgdGhyZWFkJ3MgYWN0aXZlIGV4Y2VwdGlvbgpleGNfaW5mbygpIC0tIHJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB0aHJlYWQncyBhY3RpdmUgZXhjZXB0aW9uCmV4aXQoKSAtLSBleGl0IHRoZSBpbnRlcnByZXRlciBieSByYWlzaW5nIFN5c3RlbUV4aXQKZ2V0ZGxvcGVuZmxhZ3MoKSAtLSByZXR1cm5zIGZsYWdzIHRvIGJlIHVzZWQgZm9yIGRsb3BlbigpIGNhbGxzCmdldHByb2ZpbGUoKSAtLSBnZXQgdGhlIGdsb2JhbCBwcm9maWxpbmcgZnVuY3Rpb24KZ2V0cmVmY291bnQoKSAtLSByZXR1cm4gdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYW4gb2JqZWN0IChwbHVzIG9uZSA6LSkKZ2V0cmVjdXJzaW9ubGltaXQoKSAtLSByZXR1cm4gdGhlIG1heCByZWN1cnNpb24gZGVwdGggZm9yIHRoZSBpbnRlcnByZXRlcgpnZXRzaXplb2YoKSAtLSByZXR1cm4gdGhlIHNpemUgb2YgYW4gb2JqZWN0IGluIGJ5dGVzCmdldHRyYWNlKCkgLS0gZ2V0IHRoZSBnbG9iYWwgZGVidWcgdHJhY2luZyBmdW5jdGlvbgpzZXRkbG9wZW5mbGFncygpIC0tIHNldCB0aGUgZmxhZ3MgdG8gYmUgdXNlZCBmb3IgZGxvcGVuKCkgY2FsbHMKc2V0cHJvZmlsZSgpIC0tIHNldCB0aGUgZ2xvYmFsIHByb2ZpbGluZyBmdW5jdGlvbgpzZXRyZWN1cnNpb25saW1pdCgpIC0tIHNldCB0aGUgbWF4IHJlY3Vyc2lvbiBkZXB0aCBmb3IgdGhlIGludGVycHJldGVyCnNldHRyYWNlKCkgLS0gc2V0IHRoZSBnbG9iYWwgZGVidWcgdHJhY2luZyBmdW5jdGlvbgoAAAAAAAAAAAAAAGFkZGF1ZGl0aG9vaygkbW9kdWxlLCAvLCBob29rKQotLQoKQWRkcyBhIG5ldyBhdWRpdCBob29rIGNhbGxiYWNrLgAAAAAAAAAAAAAAAAAAYXVkaXQoZXZlbnQsICphcmdzKQoKUGFzc2VzIHRoZSBldmVudCB0byBhbnkgYXVkaXQgaG9va3MgdGhhdCBhcmUgYXR0YWNoZWQuAAAAAABicmVha3BvaW50aG9vaygqYXJncywgKiprd3MpCgpUaGlzIGhvb2sgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGJ1aWx0LWluIGJyZWFrcG9pbnQoKS4KAAAAAAAAAAAAAABfY2xlYXJfdHlwZV9jYWNoZSgkbW9kdWxlLCAvKQotLQoKQ2xlYXIgdGhlIGludGVybmFsIHR5cGUgbG9va3VwIGNhY2hlLgAAAAAAAAAAAF9jdXJyZW50X2ZyYW1lcygkbW9kdWxlLCAvKQotLQoKUmV0dXJuIGEgZGljdCBtYXBwaW5nIGVhY2ggdGhyZWFkJ3MgdGhyZWFkIGlkIHRvIGl0cyBjdXJyZW50IHN0YWNrIGZyYW1lLgoKVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBmb3Igc3BlY2lhbGl6ZWQgcHVycG9zZXMgb25seS4AAAAAAAAAAAAAX2N1cnJlbnRfZXhjZXB0aW9ucygkbW9kdWxlLCAvKQotLQoKUmV0dXJuIGEgZGljdCBtYXBwaW5nIGVhY2ggdGhyZWFkJ3MgaWRlbnRpZmllciB0byBpdHMgY3VycmVudCByYWlzZWQgZXhjZXB0aW9uLgoKVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBmb3Igc3BlY2lhbGl6ZWQgcHVycG9zZXMgb25seS4AAAAAAAAAAAAAAAAAAAAAZGlzcGxheWhvb2soJG1vZHVsZSwgb2JqZWN0LCAvKQotLQoKUHJpbnQgYW4gb2JqZWN0IHRvIHN5cy5zdGRvdXQgYW5kIGFsc28gc2F2ZSBpdCBpbiBidWlsdGlucy5fAAAAAAAAAAAAAAAAAAAAAGV4Y2VwdGlvbigkbW9kdWxlLCAvKQotLQoKUmV0dXJuIHRoZSBjdXJyZW50IGV4Y2VwdGlvbi4KClJldHVybiB0aGUgbW9zdCByZWNlbnQgZXhjZXB0aW9uIGNhdWdodCBieSBhbiBleGNlcHQgY2xhdXNlCmluIHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lIG9yIGluIGFuIG9sZGVyIHN0YWNrIGZyYW1lLCBvciBOb25lCmlmIG5vIHN1Y2ggZXhjZXB0aW9uIGV4aXN0cy4AAAAAAAAAAAAAAAAAAAAAZXhjX2luZm8oJG1vZHVsZSwgLykKLS0KClJldHVybiBjdXJyZW50IGV4Y2VwdGlvbiBpbmZvcm1hdGlvbjogKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spLgoKUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb3N0IHJlY2VudCBleGNlcHRpb24gY2F1Z2h0IGJ5IGFuIGV4Y2VwdApjbGF1c2UgaW4gdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUgb3IgaW4gYW4gb2xkZXIgc3RhY2sgZnJhbWUuAABleGNlcHRob29rKCRtb2R1bGUsIGV4Y3R5cGUsIHZhbHVlLCB0cmFjZWJhY2ssIC8pCi0tCgpIYW5kbGUgYW4gZXhjZXB0aW9uIGJ5IGRpc3BsYXlpbmcgaXQgd2l0aCBhIHRyYWNlYmFjayBvbiBzeXMuc3RkZXJyLgAAAAAAAGV4aXQoJG1vZHVsZSwgc3RhdHVzPU5vbmUsIC8pCi0tCgpFeGl0IHRoZSBpbnRlcnByZXRlciBieSByYWlzaW5nIFN5c3RlbUV4aXQoc3RhdHVzKS4KCklmIHRoZSBzdGF0dXMgaXMgb21pdHRlZCBvciBOb25lLCBpdCBkZWZhdWx0cyB0byB6ZXJvIChpLmUuLCBzdWNjZXNzKS4KSWYgdGhlIHN0YXR1cyBpcyBhbiBpbnRlZ2VyLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHN5c3RlbSBleGl0IHN0YXR1cy4KSWYgaXQgaXMgYW5vdGhlciBraW5kIG9mIG9iamVjdCwgaXQgd2lsbCBiZSBwcmludGVkIGFuZCB0aGUgc3lzdGVtCmV4aXQgc3RhdHVzIHdpbGwgYmUgb25lIChpLmUuLCBmYWlsdXJlKS4AAAAAAAAAAAAAAAAAAABnZXRkZWZhdWx0ZW5jb2RpbmcoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0IGVuY29kaW5nIHVzZWQgYnkgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24uAAAAAAAAZ2V0ZGxvcGVuZmxhZ3MoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZmxhZ3MgdGhhdCBhcmUgdXNlZCBmb3IgZGxvcGVuIGNhbGxzLgoKVGhlIGZsYWcgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZSBvcyBtb2R1bGUuAAAAAAAAAAAAAGdldGFsbG9jYXRlZGJsb2NrcygkbW9kdWxlLCAvKQotLQoKUmV0dXJuIHRoZSBudW1iZXIgb2YgbWVtb3J5IGJsb2NrcyBjdXJyZW50bHkgYWxsb2NhdGVkLgAAAAAAAGdldGZpbGVzeXN0ZW1lbmNvZGluZygkbW9kdWxlLCAvKQotLQoKUmV0dXJuIHRoZSBlbmNvZGluZyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZSBmaWxlbmFtZXMgdG8gT1MgZmlsZW5hbWVzLgAAAABnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gdGhlIGVycm9yIG1vZGUgdXNlZCBVbmljb2RlIHRvIE9TIGZpbGVuYW1lIGNvbnZlcnNpb24uAAAAAAAAAAAAX2dldHF1aWNrZW5lZGNvdW50KCRtb2R1bGUsIC8pCi0tCgoAAAAAAAAAAAAAAAAAZ2V0cmVmY291bnQoJG1vZHVsZSwgb2JqZWN0LCAvKQotLQoKUmV0dXJuIHRoZSByZWZlcmVuY2UgY291bnQgb2Ygb2JqZWN0LgoKVGhlIGNvdW50IHJldHVybmVkIGlzIGdlbmVyYWxseSBvbmUgaGlnaGVyIHRoYW4geW91IG1pZ2h0IGV4cGVjdCwKYmVjYXVzZSBpdCBpbmNsdWRlcyB0aGUgKHRlbXBvcmFyeSkgcmVmZXJlbmNlIGFzIGFuIGFyZ3VtZW50IHRvCmdldHJlZmNvdW50KCkuAAAAAABnZXRyZWN1cnNpb25saW1pdCgkbW9kdWxlLCAvKQotLQoKUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSByZWN1cnNpb24gbGltaXQuCgpUaGUgcmVjdXJzaW9uIGxpbWl0IGlzIHRoZSBtYXhpbXVtIGRlcHRoIG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKc3RhY2suICBUaGlzIGxpbWl0IHByZXZlbnRzIGluZmluaXRlIHJlY3Vyc2lvbiBmcm9tIGNhdXNpbmcgYW4gb3ZlcmZsb3cKb2YgdGhlIEMgc3RhY2sgYW5kIGNyYXNoaW5nIFB5dGhvbi4AAAAAAAAAAAAAAAAAAGdldHNpemVvZihvYmplY3QgWywgZGVmYXVsdF0pIC0+IGludAoKUmV0dXJuIHRoZSBzaXplIG9mIG9iamVjdCBpbiBieXRlcy4AAAAAAAAAX2dldGZyYW1lKCRtb2R1bGUsIGRlcHRoPTAsIC8pCi0tCgpSZXR1cm4gYSBmcmFtZSBvYmplY3QgZnJvbSB0aGUgY2FsbCBzdGFjay4KCklmIG9wdGlvbmFsIGludGVnZXIgZGVwdGggaXMgZ2l2ZW4sIHJldHVybiB0aGUgZnJhbWUgb2JqZWN0IHRoYXQgbWFueQpjYWxscyBiZWxvdyB0aGUgdG9wIG9mIHRoZSBzdGFjay4gIElmIHRoYXQgaXMgZGVlcGVyIHRoYW4gdGhlIGNhbGwKc3RhY2ssIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiAgVGhlIGRlZmF1bHQgZm9yIGRlcHRoIGlzIHplcm8sIHJldHVybmluZwp0aGUgZnJhbWUgYXQgdGhlIHRvcCBvZiB0aGUgY2FsbCBzdGFjay4KClRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgZm9yIGludGVybmFsIGFuZCBzcGVjaWFsaXplZCBwdXJwb3Nlcwpvbmx5LgAAAAAAAAAAAAAAAAAAAABpbnRlcm4oJG1vZHVsZSwgc3RyaW5nLCAvKQotLQoKYGBJbnRlcm4nJyB0aGUgZ2l2ZW4gc3RyaW5nLgoKVGhpcyBlbnRlcnMgdGhlIHN0cmluZyBpbiB0aGUgKGdsb2JhbCkgdGFibGUgb2YgaW50ZXJuZWQgc3RyaW5ncyB3aG9zZQpwdXJwb3NlIGlzIHRvIHNwZWVkIHVwIGRpY3Rpb25hcnkgbG9va3Vwcy4gUmV0dXJuIHRoZSBzdHJpbmcgaXRzZWxmIG9yCnRoZSBwcmV2aW91c2x5IGludGVybmVkIHN0cmluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS4AAAAAAAAAAAAAAGlzX2ZpbmFsaXppbmcoJG1vZHVsZSwgLykKLS0KClJldHVybiBUcnVlIGlmIFB5dGhvbiBpcyBleGl0aW5nLgBzZXRzd2l0Y2hpbnRlcnZhbCgkbW9kdWxlLCBpbnRlcnZhbCwgLykKLS0KClNldCB0aGUgaWRlYWwgdGhyZWFkIHN3aXRjaGluZyBkZWxheSBpbnNpZGUgdGhlIFB5dGhvbiBpbnRlcnByZXRlci4KClRoZSBhY3R1YWwgZnJlcXVlbmN5IG9mIHN3aXRjaGluZyB0aHJlYWRzIGNhbiBiZSBsb3dlciBpZiB0aGUKaW50ZXJwcmV0ZXIgZXhlY3V0ZXMgbG9uZyBzZXF1ZW5jZXMgb2YgdW5pbnRlcnJ1cHRpYmxlIGNvZGUKKHRoaXMgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgYW5kIHdvcmtsb2FkLWRlcGVuZGVudCkuCgpUaGUgcGFyYW1ldGVyIG11c3QgcmVwcmVzZW50IHRoZSBkZXNpcmVkIHN3aXRjaGluZyBkZWxheSBpbiBzZWNvbmRzCkEgdHlwaWNhbCB2YWx1ZSBpcyAwLjAwNSAoNSBtaWxsaXNlY29uZHMpLgAAAAAAAAAAAAAAAGdldHN3aXRjaGludGVydmFsKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gdGhlIGN1cnJlbnQgdGhyZWFkIHN3aXRjaCBpbnRlcnZhbDsgc2VlIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgpLgAAAAAAAABzZXRkbG9wZW5mbGFncygkbW9kdWxlLCBmbGFncywgLykKLS0KClNldCB0aGUgZmxhZ3MgdXNlZCBieSB0aGUgaW50ZXJwcmV0ZXIgZm9yIGRsb3BlbiBjYWxscy4KClRoaXMgaXMgdXNlZCwgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIGludGVycHJldGVyIGxvYWRzIGV4dGVuc2lvbgptb2R1bGVzLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgd2lsbCBlbmFibGUgYSBsYXp5IHJlc29sdmluZyBvZgpzeW1ib2xzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlLCBpZiBjYWxsZWQgYXMgc3lzLnNldGRsb3BlbmZsYWdzKDApLgpUbyBzaGFyZSBzeW1ib2xzIGFjcm9zcyBleHRlbnNpb24gbW9kdWxlcywgY2FsbCBhcwpzeXMuc2V0ZGxvcGVuZmxhZ3Mob3MuUlRMRF9HTE9CQUwpLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZSBmbGFnCm1vZHVsZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBvcyBtb2R1bGUgKFJUTERfeHh4IGNvbnN0YW50cywgZS5nLgpvcy5SVExEX0xBWlkpLgAAAAAAAAAAc2V0cHJvZmlsZShmdW5jdGlvbikKClNldCB0aGUgcHJvZmlsaW5nIGZ1bmN0aW9uLiAgSXQgd2lsbCBiZSBjYWxsZWQgb24gZWFjaCBmdW5jdGlvbiBjYWxsCmFuZCByZXR1cm4uICBTZWUgdGhlIHByb2ZpbGVyIGNoYXB0ZXIgaW4gdGhlIGxpYnJhcnkgbWFudWFsLgAAAAAAAAAAAGdldHByb2ZpbGUoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgcHJvZmlsaW5nIGZ1bmN0aW9uIHNldCB3aXRoIHN5cy5zZXRwcm9maWxlLgoKU2VlIHRoZSBwcm9maWxlciBjaGFwdGVyIGluIHRoZSBsaWJyYXJ5IG1hbnVhbC4AAAAAAAAAAAAAAAAAAHNldHJlY3Vyc2lvbmxpbWl0KCRtb2R1bGUsIGxpbWl0LCAvKQotLQoKU2V0IHRoZSBtYXhpbXVtIGRlcHRoIG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgc3RhY2sgdG8gbi4KClRoaXMgbGltaXQgcHJldmVudHMgaW5maW5pdGUgcmVjdXJzaW9uIGZyb20gY2F1c2luZyBhbiBvdmVyZmxvdyBvZiB0aGUgQwpzdGFjayBhbmQgY3Jhc2hpbmcgUHl0aG9uLiAgVGhlIGhpZ2hlc3QgcG9zc2libGUgbGltaXQgaXMgcGxhdGZvcm0tCmRlcGVuZGVudC4AAABzZXR0cmFjZShmdW5jdGlvbikKClNldCB0aGUgZ2xvYmFsIGRlYnVnIHRyYWNpbmcgZnVuY3Rpb24uICBJdCB3aWxsIGJlIGNhbGxlZCBvbiBlYWNoCmZ1bmN0aW9uIGNhbGwuICBTZWUgdGhlIGRlYnVnZ2VyIGNoYXB0ZXIgaW4gdGhlIGxpYnJhcnkgbWFudWFsLgAAAAAAAAAAAAAAZ2V0dHJhY2UoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgZ2xvYmFsIGRlYnVnIHRyYWNpbmcgZnVuY3Rpb24gc2V0IHdpdGggc3lzLnNldHRyYWNlLgoKU2VlIHRoZSBkZWJ1Z2dlciBjaGFwdGVyIGluIHRoZSBsaWJyYXJ5IG1hbnVhbC4AAAAAAAAAY2FsbF90cmFjaW5nKCRtb2R1bGUsIGZ1bmMsIGFyZ3MsIC8pCi0tCgpDYWxsIGZ1bmMoKmFyZ3MpLCB3aGlsZSB0cmFjaW5nIGlzIGVuYWJsZWQuCgpUaGUgdHJhY2luZyBzdGF0ZSBpcyBzYXZlZCwgYW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMuICBUaGlzIGlzIGludGVuZGVkCnRvIGJlIGNhbGxlZCBmcm9tIGEgZGVidWdnZXIgZnJvbSBhIGNoZWNrcG9pbnQsIHRvIHJlY3Vyc2l2ZWx5IGRlYnVnCnNvbWUgb3RoZXIgY29kZS4AAAAAAAAAAAAAAAAAAF9kZWJ1Z21hbGxvY3N0YXRzKCRtb2R1bGUsIC8pCi0tCgpQcmludCBzdW1tYXJ5IGluZm8gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZiBweW1hbGxvYydzIHN0cnVjdHVyZXMuCgpJbiBQeV9ERUJVRyBtb2RlLCBhbHNvIHBlcmZvcm0gc29tZSBleHBlbnNpdmUgaW50ZXJuYWwgY29uc2lzdGVuY3kKY2hlY2tzLgAAAAAAAAAAAAAAAHNldF9jb3JvdXRpbmVfb3JpZ2luX3RyYWNraW5nX2RlcHRoKCRtb2R1bGUsIC8sIGRlcHRoKQotLQoKRW5hYmxlIG9yIGRpc2FibGUgb3JpZ2luIHRyYWNraW5nIGZvciBjb3JvdXRpbmUgb2JqZWN0cyBpbiB0aGlzIHRocmVhZC4KCkNvcm91dGluZSBvYmplY3RzIHdpbGwgdHJhY2sgJ2RlcHRoJyBmcmFtZXMgb2YgdHJhY2ViYWNrIGluZm9ybWF0aW9uCmFib3V0IHdoZXJlIHRoZXkgY2FtZSBmcm9tLCBhdmFpbGFibGUgaW4gdGhlaXIgY3Jfb3JpZ2luIGF0dHJpYnV0ZS4KClNldCBhIGRlcHRoIG9mIDAgdG8gZGlzYWJsZS4AAAAAAABnZXRfY29yb3V0aW5lX29yaWdpbl90cmFja2luZ19kZXB0aCgkbW9kdWxlLCAvKQotLQoKQ2hlY2sgc3RhdHVzIG9mIG9yaWdpbiB0cmFja2luZyBmb3IgY29yb3V0aW5lIG9iamVjdHMgaW4gdGhpcyB0aHJlYWQuAAAAAAAAAHNldF9hc3luY2dlbl9ob29rcygqIFssIGZpcnN0aXRlcl0gWywgZmluYWxpemVyXSkKClNldCBhIGZpbmFsaXplciBmb3IgYXN5bmMgZ2VuZXJhdG9ycyBvYmplY3RzLgAAAAAAAAAAAAAAAAAAAABnZXRfYXN5bmNnZW5faG9va3MoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgaW5zdGFsbGVkIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzIGhvb2tzLgoKVGhpcyByZXR1cm5zIGEgbmFtZWR0dXBsZSBvZiB0aGUgZm9ybSAoZmlyc3RpdGVyLCBmaW5hbGl6ZXIpLgAAAAAAAAAAAAAAdW5yYWlzYWJsZWhvb2soJG1vZHVsZSwgdW5yYWlzYWJsZSwgLykKLS0KCkhhbmRsZSBhbiB1bnJhaXNhYmxlIGV4Y2VwdGlvbi4KClRoZSB1bnJhaXNhYmxlIGFyZ3VtZW50IGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CgoqIGV4Y190eXBlOiBFeGNlcHRpb24gdHlwZS4KKiBleGNfdmFsdWU6IEV4Y2VwdGlvbiB2YWx1ZSwgY2FuIGJlIE5vbmUuCiogZXhjX3RyYWNlYmFjazogRXhjZXB0aW9uIHRyYWNlYmFjaywgY2FuIGJlIE5vbmUuCiogZXJyX21zZzogRXJyb3IgbWVzc2FnZSwgY2FuIGJlIE5vbmUuCiogb2JqZWN0OiBPYmplY3QgY2F1c2luZyB0aGUgZXhjZXB0aW9uLCBjYW4gYmUgTm9uZS4AAAAAAAAAAGdldF9pbnRfbWF4X3N0cl9kaWdpdHMoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgbWF4aW11bSBzdHJpbmcgZGlnaXRzIGxpbWl0IGZvciBub24tYmluYXJ5IGludDwtPnN0ciBjb252ZXJzaW9ucy4AAAAAAAAAAAAAAAAAc2V0X2ludF9tYXhfc3RyX2RpZ2l0cygkbW9kdWxlLCAvLCBtYXhkaWdpdHMpCi0tCgpTZXQgdGhlIG1heGltdW0gc3RyaW5nIGRpZ2l0cyBsaW1pdCBmb3Igbm9uLWJpbmFyeSBpbnQ8LT5zdHIgY29udmVyc2lvbnMuAAAAAABoYXNoX2luZm8KCkEgbmFtZWQgdHVwbGUgcHJvdmlkaW5nIHBhcmFtZXRlcnMgdXNlZCBmb3IgY29tcHV0aW5nCmhhc2hlcy4gVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4AAAAAAAAAAAAAc3lzLnZlcnNpb25faW5mbwoKVmVyc2lvbiBpbmZvcm1hdGlvbiBhcyBhIG5hbWVkIHR1cGxlLgAAAAAAAAAAAHN5cy5mbGFncwoKRmxhZ3MgcHJvdmlkZWQgdGhyb3VnaCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9yIGVudmlyb25tZW50IHZhcnMuAAAAYXN5bmNnZW5faG9va3MKCkEgbmFtZWQgdHVwbGUgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGFzeW5jaHJvbm91cwpnZW5lcmF0b3JzIGhvb2tzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4AAAAAAAAAAABzeXMuX2Vtc2NyaXB0ZW5faW5mbwoKV2ViQXNzZW1ibHkgRW1zY3JpcHRlbiBwbGF0Zm9ybSBpbmZvcm1hdGlvbi4AAAAAAAAAAAAAAAAAAHN5cy50aHJlYWRfaW5mbwoKQSBuYW1lZCB0dXBsZSBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uAAAAAAAAAAAAAAAAAFRyYWNlYmFja1R5cGUodGJfbmV4dCwgdGJfZnJhbWUsIHRiX2xhc3RpLCB0Yl9saW5lbm8pCi0tCgpDcmVhdGUgYSBuZXcgdHJhY2ViYWNrIG9iamVjdC4AAAAAAAAAAC0AAAAtAAAAAAAAAC0AAAAtAAAAaAAAAGUAAABsAAAAcAAAAAAAAAAtAAAALQAAAHYAAABlAAAAcgAAAHMAAABpAAAAbwAAAG4AAAAAAAAAYgAAAEIAAABjAAAAOgAAAGQAAABFAAAAaAAAAGkAAABJAAAASgAAAG0AAAA6AAAATwAAAFAAAABxAAAAUgAAAHMAAABTAAAAdAAAAHUAAAB2AAAAVgAAAFcAAAA6AAAAeAAAAFgAAAA6AAAAPwAAAAAAAABjAAAAaAAAAGUAAABjAAAAawAAAC0AAABoAAAAYQAAAHMAAABoAAAALQAAAGIAAABhAAAAcwAAAGUAAABkAAAALQAAAHAAAAB5AAAAYwAAAHMAAAAAAAAAaAAAAGUAAABsAAAAcAAAAC0AAABhAAAAbAAAAGwAAAAAAAAAaAAAAGUAAABsAAAAcAAAAC0AAABlAAAAbgAAAHYAAAAAAAAAaAAAAGUAAABsAAAAcAAAAC0AAAB4AAAAbwAAAHAAAAB0AAAAaQAAAG8AAABuAAAAcwAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAkQAAAAAAAAFlAAAAAAABAj0AAAAAAAIjDQAAAAAAAavhAAAAAAICELkEAAAAA0BJjQQAAAACE15dBAAAAAGXNzUEAAAAgX6ACQgAAAOh2SDdCAAAAopQabUIAAEDlnDCiQgAAkB7EvNZCAAA0JvVrDEMAgOA3ecNBQwCg2IVXNHZDAMhOZ23Bq0MAPZFg5FjhQ0CMtXgdrxVEUO/i1uQaS0SS1U0Gz/CARAAAAAAAAAAAAIDgN3nDQUMXbgW1tbiTRvX5P+kDTzhNMh0w+Uh3glo8v3N/3U8VdQAAAAAAAAAAvInYl7LSnDwzp6jVI/ZJOT2n9ET9D6UynZeMzwi6WyVDb6xkKAZoEQUAAAAZAAAAfQAAAH8AAAB1AAAAdAAAAGYAAAAtAAAAOAAAAAAAAAAuAAAAAAAAAF8AAABfAAAAbQAAAGEAAABpAAAAbgAAAF8AAABfAAAAAAAAAAAAAABUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGZvciByZWZlcmVuY2UgY3ljbGVzLgoKZW5hYmxlKCkgLS0gRW5hYmxlIGF1dG9tYXRpYyBnYXJiYWdlIGNvbGxlY3Rpb24uCmRpc2FibGUoKSAtLSBEaXNhYmxlIGF1dG9tYXRpYyBnYXJiYWdlIGNvbGxlY3Rpb24uCmlzZW5hYmxlZCgpIC0tIFJldHVybnMgdHJ1ZSBpZiBhdXRvbWF0aWMgY29sbGVjdGlvbiBpcyBlbmFibGVkLgpjb2xsZWN0KCkgLS0gRG8gYSBmdWxsIGNvbGxlY3Rpb24gcmlnaHQgbm93LgpnZXRfY291bnQoKSAtLSBSZXR1cm4gdGhlIGN1cnJlbnQgY29sbGVjdGlvbiBjb3VudHMuCmdldF9zdGF0cygpIC0tIFJldHVybiBsaXN0IG9mIGRpY3Rpb25hcmllcyBjb250YWluaW5nIHBlci1nZW5lcmF0aW9uIHN0YXRzLgpzZXRfZGVidWcoKSAtLSBTZXQgZGVidWdnaW5nIGZsYWdzLgpnZXRfZGVidWcoKSAtLSBHZXQgZGVidWdnaW5nIGZsYWdzLgpzZXRfdGhyZXNob2xkKCkgLS0gU2V0IHRoZSBjb2xsZWN0aW9uIHRocmVzaG9sZHMuCmdldF90aHJlc2hvbGQoKSAtLSBSZXR1cm4gdGhlIGN1cnJlbnQgdGhlIGNvbGxlY3Rpb24gdGhyZXNob2xkcy4KZ2V0X29iamVjdHMoKSAtLSBSZXR1cm4gYSBsaXN0IG9mIGFsbCBvYmplY3RzIHRyYWNrZWQgYnkgdGhlIGNvbGxlY3Rvci4KaXNfdHJhY2tlZCgpIC0tIFJldHVybnMgdHJ1ZSBpZiBhIGdpdmVuIG9iamVjdCBpcyB0cmFja2VkLgppc19maW5hbGl6ZWQoKSAtLSBSZXR1cm5zIHRydWUgaWYgYSBnaXZlbiBvYmplY3QgaGFzIGJlZW4gYWxyZWFkeSBmaW5hbGl6ZWQuCmdldF9yZWZlcnJlcnMoKSAtLSBSZXR1cm4gdGhlIGxpc3Qgb2Ygb2JqZWN0cyB0aGF0IHJlZmVyIHRvIGFuIG9iamVjdC4KZ2V0X3JlZmVyZW50cygpIC0tIFJldHVybiB0aGUgbGlzdCBvZiBvYmplY3RzIHRoYXQgYW4gb2JqZWN0IHJlZmVycyB0by4KZnJlZXplKCkgLS0gRnJlZXplIGFsbCB0cmFja2VkIG9iamVjdHMgYW5kIGlnbm9yZSB0aGVtIGZvciBmdXR1cmUgY29sbGVjdGlvbnMuCnVuZnJlZXplKCkgLS0gVW5mcmVlemUgYWxsIG9iamVjdHMgaW4gdGhlIHBlcm1hbmVudCBnZW5lcmF0aW9uLgpnZXRfZnJlZXplX2NvdW50KCkgLS0gUmV0dXJuIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBpbiB0aGUgcGVybWFuZW50IGdlbmVyYXRpb24uCgAAAAAAAAAAAGVuYWJsZSgkbW9kdWxlLCAvKQotLQoKRW5hYmxlIGF1dG9tYXRpYyBnYXJiYWdlIGNvbGxlY3Rpb24uAAAAAABkaXNhYmxlKCRtb2R1bGUsIC8pCi0tCgpEaXNhYmxlIGF1dG9tYXRpYyBnYXJiYWdlIGNvbGxlY3Rpb24uAAAAaXNlbmFibGVkKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm5zIHRydWUgaWYgYXV0b21hdGljIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBlbmFibGVkLgAAAAAAAAAAAAAAAAAAc2V0X2RlYnVnKCRtb2R1bGUsIGZsYWdzLCAvKQotLQoKU2V0IHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gZGVidWdnaW5nIGZsYWdzLgoKICBmbGFncwogICAgQW4gaW50ZWdlciB0aGF0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgYml0cyB0dXJuZWQgb246CiAgICAgIERFQlVHX1NUQVRTIC0gUHJpbnQgc3RhdGlzdGljcyBkdXJpbmcgY29sbGVjdGlvbi4KICAgICAgREVCVUdfQ09MTEVDVEFCTEUgLSBQcmludCBjb2xsZWN0YWJsZSBvYmplY3RzIGZvdW5kLgogICAgICBERUJVR19VTkNPTExFQ1RBQkxFIC0gUHJpbnQgdW5yZWFjaGFibGUgYnV0IHVuY29sbGVjdGFibGUgb2JqZWN0cwogICAgICAgIGZvdW5kLgogICAgICBERUJVR19TQVZFQUxMIC0gU2F2ZSBvYmplY3RzIHRvIGdjLmdhcmJhZ2UgcmF0aGVyIHRoYW4gZnJlZWluZyB0aGVtLgogICAgICBERUJVR19MRUFLIC0gRGVidWcgbGVha2luZyBwcm9ncmFtcyAoZXZlcnl0aGluZyBidXQgU1RBVFMpLgoKRGVidWdnaW5nIGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gdG8gc3lzLnN0ZGVyci4AAAAAAAAAAGdldF9kZWJ1ZygkbW9kdWxlLCAvKQotLQoKR2V0IHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gZGVidWdnaW5nIGZsYWdzLgAAAAAAAAAAAAAAZ2V0X2NvdW50KCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gYSB0aHJlZS10dXBsZSBvZiB0aGUgY3VycmVudCBjb2xsZWN0aW9uIGNvdW50cy4AAAAAAAAAAAAAAAAAAAAAc2V0X3RocmVzaG9sZCh0aHJlc2hvbGQwLCBbdGhyZXNob2xkMSwgdGhyZXNob2xkMl0pIC0+IE5vbmUKClNldHMgdGhlIGNvbGxlY3Rpb24gdGhyZXNob2xkcy4gIFNldHRpbmcgdGhyZXNob2xkMCB0byB6ZXJvIGRpc2FibGVzCmNvbGxlY3Rpb24uCgAAZ2V0X3RocmVzaG9sZCgkbW9kdWxlLCAvKQotLQoKUmV0dXJuIHRoZSBjdXJyZW50IGNvbGxlY3Rpb24gdGhyZXNob2xkcy4AAAAAAAAAAABjb2xsZWN0KCRtb2R1bGUsIC8sIGdlbmVyYXRpb249MikKLS0KClJ1biB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCgpXaXRoIG5vIGFyZ3VtZW50cywgcnVuIGEgZnVsbCBjb2xsZWN0aW9uLiAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50Cm1heSBiZSBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgd2hpY2ggZ2VuZXJhdGlvbiB0byBjb2xsZWN0LiAgQSBWYWx1ZUVycm9yCmlzIHJhaXNlZCBpZiB0aGUgZ2VuZXJhdGlvbiBudW1iZXIgaXMgaW52YWxpZC4KClRoZSBudW1iZXIgb2YgdW5yZWFjaGFibGUgb2JqZWN0cyBpcyByZXR1cm5lZC4AAAAAAAAAZ2V0X29iamVjdHMoJG1vZHVsZSwgLywgZ2VuZXJhdGlvbj1Ob25lKQotLQoKUmV0dXJuIGEgbGlzdCBvZiBvYmplY3RzIHRyYWNrZWQgYnkgdGhlIGNvbGxlY3RvciAoZXhjbHVkaW5nIHRoZSBsaXN0IHJldHVybmVkKS4KCiAgZ2VuZXJhdGlvbgogICAgR2VuZXJhdGlvbiB0byBleHRyYWN0IHRoZSBvYmplY3RzIGZyb20uCgpJZiBnZW5lcmF0aW9uIGlzIG5vdCBOb25lLCByZXR1cm4gb25seSB0aGUgb2JqZWN0cyB0cmFja2VkIGJ5IHRoZSBjb2xsZWN0b3IKdGhhdCBhcmUgaW4gdGhhdCBnZW5lcmF0aW9uLgAAAAAAAAAAAAAAAAAAAGdldF9zdGF0cygkbW9kdWxlLCAvKQotLQoKUmV0dXJuIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgY29udGFpbmluZyBwZXItZ2VuZXJhdGlvbiBzdGF0aXN0aWNzLgAAAGlzX3RyYWNrZWQoJG1vZHVsZSwgb2JqLCAvKQotLQoKUmV0dXJucyB0cnVlIGlmIHRoZSBvYmplY3QgaXMgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCgpTaW1wbGUgYXRvbWljIG9iamVjdHMgd2lsbCByZXR1cm4gZmFsc2UuAAAAAAAAAGlzX2ZpbmFsaXplZCgkbW9kdWxlLCBvYmosIC8pCi0tCgpSZXR1cm5zIHRydWUgaWYgdGhlIG9iamVjdCBoYXMgYmVlbiBhbHJlYWR5IGZpbmFsaXplZCBieSB0aGUgR0MuAAAAAAAAAAAAAAAAAABnZXRfcmVmZXJyZXJzKCpvYmpzKSAtPiBsaXN0ClJldHVybiB0aGUgbGlzdCBvZiBvYmplY3RzIHRoYXQgZGlyZWN0bHkgcmVmZXIgdG8gYW55IG9mIG9ianMuAAAAAABnZXRfcmVmZXJlbnRzKCpvYmpzKSAtPiBsaXN0ClJldHVybiB0aGUgbGlzdCBvZiBvYmplY3RzIHRoYXQgYXJlIGRpcmVjdGx5IHJlZmVycmVkIHRvIGJ5IG9ianMuAABmcmVlemUoJG1vZHVsZSwgLykKLS0KCkZyZWV6ZSBhbGwgY3VycmVudCB0cmFja2VkIG9iamVjdHMgYW5kIGlnbm9yZSB0aGVtIGZvciBmdXR1cmUgY29sbGVjdGlvbnMuCgpUaGlzIGNhbiBiZSB1c2VkIGJlZm9yZSBhIFBPU0lYIGZvcmsoKSBjYWxsIHRvIG1ha2UgdGhlIGdjIGNvcHktb24td3JpdGUgZnJpZW5kbHkuCk5vdGU6IGNvbGxlY3Rpb24gYmVmb3JlIGEgUE9TSVggZm9yaygpIGNhbGwgbWF5IGZyZWUgcGFnZXMgZm9yIGZ1dHVyZSBhbGxvY2F0aW9uCndoaWNoIGNhbiBjYXVzZSBjb3B5LW9uLXdyaXRlLgAAAAAAAAAAAAAAdW5mcmVlemUoJG1vZHVsZSwgLykKLS0KClVuZnJlZXplIGFsbCBvYmplY3RzIGluIHRoZSBwZXJtYW5lbnQgZ2VuZXJhdGlvbi4KClB1dCBhbGwgb2JqZWN0cyBpbiB0aGUgcGVybWFuZW50IGdlbmVyYXRpb24gYmFjayBpbnRvIG9sZGVzdCBnZW5lcmF0aW9uLgAAAAAAAAAAAAAAAGdldF9mcmVlemVfY291bnQoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgbnVtYmVyIG9mIG9iamVjdHMgaW4gdGhlIHBlcm1hbmVudCBnZW5lcmF0aW9uLgAAAAAAAENvbnZlcnQgYSBQeXRob24gb2JqZWN0IGludG8gYSBmdW5jdGlvbiBjYWxsIHBhcmFtZXRlci4AAAAAAAAAAABDLmZyb21fYWRkcmVzcyhpbnRlZ2VyKSAtPiBDIGluc3RhbmNlCmFjY2VzcyBhIEMgaW5zdGFuY2UgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzAAAAAAAAAAAAAAAAAABDLmZyb21fYnVmZmVyKG9iamVjdCwgb2Zmc2V0PTApIC0+IEMgaW5zdGFuY2UKY3JlYXRlIGEgQyBpbnN0YW5jZSBmcm9tIGEgd3JpdGVhYmxlIGJ1ZmZlcgAAAAAAAABDLmZyb21fYnVmZmVyX2NvcHkob2JqZWN0LCBvZmZzZXQ9MCkgLT4gQyBpbnN0YW5jZQpjcmVhdGUgYSBDIGluc3RhbmNlIGZyb20gYSByZWFkYWJsZSBidWZmZXIAAABDLmluX2RsbChkbGwsIG5hbWUpIC0+IEMgaW5zdGFuY2UKYWNjZXNzIGEgQyBpbnN0YW5jZSBpbiBhIGRsbAAAY2JCaEhpSWxMZGZ1elpxUVBYT3Y/ZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ3JlYXRlIGFuZCBtYW5pcHVsYXRlIEMgY29tcGF0aWJsZSBkYXRhIHR5cGVzIGluIFB5dGhvbi4AAAAAAAAAAGFsaWdubWVudChDIHR5cGUpIC0+IGludGVnZXIKYWxpZ25tZW50KEMgaW5zdGFuY2UpIC0+IGludGVnZXIKUmV0dXJuIHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIGEgQyBpbnN0YW5jZQBzaXplb2YoQyB0eXBlKSAtPiBpbnRlZ2VyCnNpemVvZihDIGluc3RhbmNlKSAtPiBpbnRlZ2VyClJldHVybiB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhIEMgaW5zdGFuY2UAAAAAAAAAAAAAAAAAAAAAYnlyZWYoQyBpbnN0YW5jZVssIG9mZnNldD0wXSkgLT4gYnlyZWYtb2JqZWN0ClJldHVybiBhIHBvaW50ZXIgbG9va2FsaWtlIHRvIGEgQyBpbnN0YW5jZSwgb25seSB1c2FibGUKYXMgZnVuY3Rpb24gYXJndW1lbnQAAAAAAABhZGRyZXNzb2YoQyBpbnN0YW5jZSkgLT4gaW50ZWdlcgpSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIEMgaW5zdGFuY2UgaW50ZXJuYWwgYnVmZmVyAAAAAAAAAAAAAABBIFBPU0lYIGhlbHBlciBmb3IgdGhlIHN1YnByb2Nlc3MgbW9kdWxlLgAAAAAAAABmb3JrX2V4ZWMoYXJncywgZXhlY3V0YWJsZV9saXN0LCBjbG9zZV9mZHMsIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLCBjMnByZWFkLCBjMnB3cml0ZSwKICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLCBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUsCiAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIGNhbGxfc2V0c2lkLCBwZ2lkX3RvX3NldCwKICAgICAgICAgIGdpZCwgZ3JvdXBzX2xpc3QsIHVpZCwKICAgICAgICAgIHByZWV4ZWNfZm4pCgpGb3JrcyBhIGNoaWxkIHByb2Nlc3MsIGNsb3NlcyBwYXJlbnQgZmlsZSBkZXNjcmlwdG9ycyBhcyBhcHByb3ByaWF0ZSBpbiB0aGUKY2hpbGQgYW5kIGR1cHMgdGhlIGZldyB0aGF0IGFyZSBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgZXhlYygpIGluIHRoZSBjaGlsZApwcm9jZXNzLgoKSWYgY2xvc2VfZmRzIGlzIHRydWUsIGNsb3NlIGZpbGUgZGVzY3JpcHRvcnMgMyBhbmQgaGlnaGVyLCBleGNlcHQgdGhvc2UgbGlzdGVkCmluIHRoZSBzb3J0ZWQgdHVwbGUgcGFzc19mZHMuCgpUaGUgcHJlZXhlY19mbiwgaWYgc3VwcGxpZWQsIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGJlZm9yZSBjbG9zaW5nIGZpbGUKZGVzY3JpcHRvcnMgYW5kIGV4ZWMuCldBUk5JTkc6IHByZWV4ZWNfZm4gaXMgTk9UIFNBRkUgaWYgeW91ciBhcHBsaWNhdGlvbiB1c2VzIHRocmVhZHMuCiAgICAgICAgIEl0IG1heSB0cmlnZ2VyIGluZnJlcXVlbnQsIGRpZmZpY3VsdCB0byBkZWJ1ZyBkZWFkbG9ja3MuCgpJZiBhbiBlcnJvciBvY2N1cnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MgYmVmb3JlIHRoZSBleGVjLCBpdCBpcwpzZXJpYWxpemVkIGFuZCB3cml0dGVuIHRvIHRoZSBlcnJwaXBlX3dyaXRlIGZkIHBlciBzdWJwcm9jZXNzLnB5LgoKUmV0dXJuczogdGhlIGNoaWxkIHByb2Nlc3MncyBQSUQuCgpSYWlzZXM6IE9ubHkgb24gYW4gZXJyb3IgaW4gdGhlIHBhcmVudCBwcm9jZXNzLgoAAAAAAAAAAAAAAAAAAABCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWw9OSwgLykKLS0KCkNyZWF0ZSBhIGNvbXByZXNzb3Igb2JqZWN0IGZvciBjb21wcmVzc2luZyBkYXRhIGluY3JlbWVudGFsbHkuCgogIGNvbXByZXNzbGV2ZWwKICAgIENvbXByZXNzaW9uIGxldmVsLCBhcyBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuCgpGb3Igb25lLXNob3QgY29tcHJlc3Npb24sIHVzZSB0aGUgY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLgAAAAAAAABjb21wcmVzcygkc2VsZiwgZGF0YSwgLykKLS0KClByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuCgpSZXR1cm5zIGEgY2h1bmsgb2YgY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLgoKV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YSB0byB0aGUgY29tcHJlc3NvciwgY2FsbCB0aGUKZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLgAAAAAAZmx1c2goJHNlbGYsIC8pCi0tCgpGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuCgpSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdCBpbiBpbnRlcm5hbCBidWZmZXJzLgoKVGhlIGNvbXByZXNzb3Igb2JqZWN0IG1heSBub3QgYmUgdXNlZCBhZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQuAAAAgAAAAAABAAAABAAAABAAAABAAAAAgAAAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAAEAAAABAAAAAgAAAAIAAAAEAAAAAAAAAAAAAAAAFVuYWJsZSB0byBhbGxvY2F0ZSBvdXRwdXQgYnVmZmVyLgAAAAAAAAAAAAAAAAAAAEJaMkRlY29tcHJlc3NvcigpCi0tCgpDcmVhdGUgYSBkZWNvbXByZXNzb3Igb2JqZWN0IGZvciBkZWNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS4KCkZvciBvbmUtc2hvdCBkZWNvbXByZXNzaW9uLCB1c2UgdGhlIGRlY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLgAAAABkZWNvbXByZXNzKCRzZWxmLCAvLCBkYXRhLCBtYXhfbGVuZ3RoPS0xKQotLQoKRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4KCklmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKiBieXRlcyBvZgpkZWNvbXByZXNzZWQgZGF0YS4gSWYgdGhpcyBsaW1pdCBpcyByZWFjaGVkIGFuZCBmdXJ0aGVyIG91dHB1dCBjYW4gYmUKcHJvZHVjZWQsICpzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHQKY2FsbCB0byAqZGVjb21wcmVzcygpKiBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYicnIHRvIG9idGFpbiBtb3JlIG9mIHRoZSBvdXRwdXQuCgpJZiBhbGwgb2YgdGhlIGlucHV0IGRhdGEgd2FzIGRlY29tcHJlc3NlZCBhbmQgcmV0dXJuZWQgKGVpdGhlciBiZWNhdXNlIHRoaXMKd2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksCipzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLgoKQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZCByYWlzZXMgYW4KRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4KdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4AAAAAAAAAAAAAAAAAVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4AAAAAAAAAAAAAAAAAAERhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uAAAAAAAAAAAAAAAAAABUcnVlIGlmIG1vcmUgaW5wdXQgaXMgbmVlZGVkIGJlZm9yZSBtb3JlIGRlY29tcHJlc3NlZCBkYXRhIGNhbiBiZSBwcm9kdWNlZC4AAAAAAFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgYWxsb3cgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gdXNpbmcgdGhlCnpsaWIgbGlicmFyeSwgd2hpY2ggaXMgYmFzZWQgb24gR05VIHppcC4KCmFkbGVyMzIoc3RyaW5nWywgc3RhcnRdKSAtLSBDb21wdXRlIGFuIEFkbGVyLTMyIGNoZWNrc3VtLgpjb21wcmVzcyhkYXRhWywgbGV2ZWxdKSAtLSBDb21wcmVzcyBkYXRhLCB3aXRoIGNvbXByZXNzaW9uIGxldmVsIDAtOSBvciAtMS4KY29tcHJlc3NvYmooW2xldmVsWywgLi4uXV0pIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LgpjcmMzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYSBDUkMtMzIgY2hlY2tzdW0uCmRlY29tcHJlc3Moc3RyaW5nLFt3Yml0c10sW2J1ZnNpemVdKSAtLSBEZWNvbXByZXNzZXMgYSBjb21wcmVzc2VkIHN0cmluZy4KZGVjb21wcmVzc29iaihbd2JpdHNbLCB6ZGljdF1dKSAtLSBSZXR1cm4gYSBkZWNvbXByZXNzb3Igb2JqZWN0LgoKJ3diaXRzJyBpcyB3aW5kb3cgYnVmZmVyIHNpemUgYW5kIGNvbnRhaW5lciBmb3JtYXQuCkNvbXByZXNzb3Igb2JqZWN0cyBzdXBwb3J0IGNvbXByZXNzKCkgYW5kIGZsdXNoKCkgbWV0aG9kczsgZGVjb21wcmVzc29yCm9iamVjdHMgc3VwcG9ydCBkZWNvbXByZXNzKCkgYW5kIGZsdXNoKCkuAAAAAGFkbGVyMzIoJG1vZHVsZSwgZGF0YSwgdmFsdWU9MSwgLykKLS0KCkNvbXB1dGUgYW4gQWRsZXItMzIgY2hlY2tzdW0gb2YgZGF0YS4KCiAgdmFsdWUKICAgIFN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBjaGVja3N1bS4KClRoZSByZXR1cm5lZCBjaGVja3N1bSBpcyBhbiBpbnRlZ2VyLgBjb21wcmVzcygkbW9kdWxlLCBkYXRhLCAvLCBsZXZlbD1aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHdiaXRzPU1BWF9XQklUUykKLS0KClJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuCgogIGRhdGEKICAgIEJpbmFyeSBkYXRhIHRvIGJlIGNvbXByZXNzZWQuCiAgbGV2ZWwKICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkgb3IgLTEuCiAgd2JpdHMKICAgIFRoZSB3aW5kb3cgYnVmZmVyIHNpemUgYW5kIGNvbnRhaW5lciBmb3JtYXQuAGNvbXByZXNzb2JqKCRtb2R1bGUsIC8sIGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTiwgbWV0aG9kPURFRkxBVEVELAogICAgICAgICAgICB3Yml0cz1NQVhfV0JJVFMsIG1lbUxldmVsPURFRl9NRU1fTEVWRUwsCiAgICAgICAgICAgIHN0cmF0ZWd5PVpfREVGQVVMVF9TVFJBVEVHWSwgemRpY3Q9Tm9uZSkKLS0KClJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LgoKICBsZXZlbAogICAgVGhlIGNvbXByZXNzaW9uIGxldmVsIChhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAwLTkgb3IgLTE7IGRlZmF1bHQgaXMKICAgIGN1cnJlbnRseSBlcXVpdmFsZW50IHRvIDYpLiAgSGlnaGVyIGNvbXByZXNzaW9uIGxldmVscyBhcmUgc2xvd2VyLAogICAgYnV0IHByb2R1Y2Ugc21hbGxlciByZXN1bHRzLgogIG1ldGhvZAogICAgVGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gIElmIGdpdmVuLCB0aGlzIG11c3QgYmUgREVGTEFURUQuCiAgd2JpdHMKICAgICs5IHRvICsxNTogVGhlIGJhc2UtdHdvIGxvZ2FyaXRobSBvZiB0aGUgd2luZG93IHNpemUuICBJbmNsdWRlIGEgemxpYgogICAgICAgIGNvbnRhaW5lci4KICAgIC05IHRvIC0xNTogR2VuZXJhdGUgYSByYXcgc3RyZWFtLgogICAgKzI1IHRvICszMTogSW5jbHVkZSBhIGd6aXAgY29udGFpbmVyLgogIG1lbUxldmVsCiAgICBDb250cm9scyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGZvciBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4KICAgIFZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDEgdG8gOS4gIEhpZ2hlciB2YWx1ZXMgcmVzdWx0IGluIGhpZ2hlciBtZW1vcnkKICAgIHVzYWdlLCBmYXN0ZXIgY29tcHJlc3Npb24sIGFuZCBzbWFsbGVyIG91dHB1dC4KICBzdHJhdGVneQogICAgVXNlZCB0byB0dW5lIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uICBQb3NzaWJsZSB2YWx1ZXMgYXJlCiAgICBaX0RFRkFVTFRfU1RSQVRFR1ksIFpfRklMVEVSRUQsIGFuZCBaX0hVRkZNQU5fT05MWS4KICB6ZGljdAogICAgVGhlIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyeSAtIGEgc2VxdWVuY2Ugb2YgYnl0ZXMKICAgIGNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGxpa2VseSB0byBvY2N1ciBpbiB0aGUgaW5wdXQgZGF0YS4AAAAAY3JjMzIoJG1vZHVsZSwgZGF0YSwgdmFsdWU9MCwgLykKLS0KCkNvbXB1dGUgYSBDUkMtMzIgY2hlY2tzdW0gb2YgZGF0YS4KCiAgdmFsdWUKICAgIFN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBjaGVja3N1bS4KClRoZSByZXR1cm5lZCBjaGVja3N1bSBpcyBhbiBpbnRlZ2VyLgAAAAAAAGRlY29tcHJlc3MoJG1vZHVsZSwgZGF0YSwgLywgd2JpdHM9TUFYX1dCSVRTLCBidWZzaXplPURFRl9CVUZfU0laRSkKLS0KClJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEuCgogIGRhdGEKICAgIENvbXByZXNzZWQgZGF0YS4KICB3Yml0cwogICAgVGhlIHdpbmRvdyBidWZmZXIgc2l6ZSBhbmQgY29udGFpbmVyIGZvcm1hdC4KICBidWZzaXplCiAgICBUaGUgaW5pdGlhbCBvdXRwdXQgYnVmZmVyIHNpemUuAAAAAAAAAAAAAAAAZGVjb21wcmVzc29iaigkbW9kdWxlLCAvLCB3Yml0cz1NQVhfV0JJVFMsIHpkaWN0PWInJykKLS0KClJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuCgogIHdiaXRzCiAgICBUaGUgd2luZG93IGJ1ZmZlciBzaXplIGFuZCBjb250YWluZXIgZm9ybWF0LgogIHpkaWN0CiAgICBUaGUgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5LiAgVGhpcyBtdXN0IGJlIHRoZSBzYW1lCiAgICBkaWN0aW9uYXJ5IGFzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdCBwcm9kdWNlZCB0aGUgaW5wdXQgZGF0YS4AAAAAAAAAAAAAAAAAAACAAAAAAAEAAAAEAAAAEAAAAEAAAACAAAAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAQAAAAEAAAACAAAAAgAAAAQAAAAAAAAAAAAAAAAVW5hYmxlIHRvIGFsbG9jYXRlIG91dHB1dCBidWZmZXIuAAAAAAAAAAAAAAAAAAAAY29tcHJlc3MoJHNlbGYsIGRhdGEsIC8pCi0tCgpSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLgoKICBkYXRhCiAgICBCaW5hcnkgZGF0YSB0byBiZSBjb21wcmVzc2VkLgoKQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBzb21lIG9mIHRoZSBpbnB1dCBkYXRhIG1heSBzdGlsbApiZSBzdG9yZWQgaW4gaW50ZXJuYWwgYnVmZmVycyBmb3IgbGF0ZXIgcHJvY2Vzc2luZy4KQ2FsbCB0aGUgZmx1c2goKSBtZXRob2QgdG8gY2xlYXIgdGhlc2UgYnVmZmVycy4AAAAAZmx1c2goJHNlbGYsIG1vZGU9emxpYi5aX0ZJTklTSCwgLykKLS0KClJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGFueSByZW1haW5pbmcgY29tcHJlc3NlZCBkYXRhLgoKICBtb2RlCiAgICBPbmUgb2YgdGhlIGNvbnN0YW50cyBaX1NZTkNfRkxVU0gsIFpfRlVMTF9GTFVTSCwgWl9GSU5JU0guCiAgICBJZiBtb2RlID09IFpfRklOSVNILCB0aGUgY29tcHJlc3NvciBvYmplY3QgY2FuIG5vIGxvbmdlciBiZQogICAgdXNlZCBhZnRlciBjYWxsaW5nIHRoZSBmbHVzaCgpIG1ldGhvZC4gIE90aGVyd2lzZSwgbW9yZSBkYXRhCiAgICBjYW4gc3RpbGwgYmUgY29tcHJlc3NlZC4AAAAAY29weSgkc2VsZiwgLykKLS0KClJldHVybiBhIGNvcHkgb2YgdGhlIGNvbXByZXNzaW9uIG9iamVjdC4AAAAAAF9fY29weV9fKCRzZWxmLCAvKQotLQoKAAAAAAAAAAAAX19kZWVwY29weV9fKCRzZWxmLCBtZW1vLCAvKQotLQoKAAAAAAAAAAAAAAAAAAAAZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgLywgbWF4X2xlbmd0aD0wKQotLQoKUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBkYXRhLgoKICBkYXRhCiAgICBUaGUgYmluYXJ5IGRhdGEgdG8gZGVjb21wcmVzcy4KICBtYXhfbGVuZ3RoCiAgICBUaGUgbWF4aW11bSBhbGxvd2FibGUgbGVuZ3RoIG9mIHRoZSBkZWNvbXByZXNzZWQgZGF0YS4KICAgIFVuY29uc3VtZWQgaW5wdXQgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbgogICAgdGhlIHVuY29uc3VtZWRfdGFpbCBhdHRyaWJ1dGUuCgpBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHNvbWUgb2YgdGhlIGlucHV0IGRhdGEgbWF5IHN0aWxsIGJlIHN0b3JlZCBpbgppbnRlcm5hbCBidWZmZXJzIGZvciBsYXRlciBwcm9jZXNzaW5nLgpDYWxsIHRoZSBmbHVzaCgpIG1ldGhvZCB0byBjbGVhciB0aGVzZSBidWZmZXJzLgAAAAAAAAAAZmx1c2goJHNlbGYsIGxlbmd0aD16bGliLkRFRl9CVUZfU0laRSwgLykKLS0KClJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGFueSByZW1haW5pbmcgZGVjb21wcmVzc2VkIGRhdGEuCgogIGxlbmd0aAogICAgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlci4AAAAAAAAAAAAAAABjb3B5KCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgZGVjb21wcmVzc2lvbiBvYmplY3QuAAAAX19jb3B5X18oJHNlbGYsIC8pCi0tCgoAAAAAAAAAAABfX2RlZXBjb3B5X18oJHNlbGYsIG1lbW8sIC8pCi0tCgoAAAAAAAAAAAAAAAAAAABBIGNoYW5uZWwgSUQgaWRlbnRpZmllcyBhIGNoYW5uZWwgYW5kIG1heSBiZSB1c2VkIGFzIGFuIGludC4AAAAAVGhpcyBtb2R1bGUgcHJvdmlkZXMgcHJpbWl0aXZlIG9wZXJhdGlvbnMgdG8gbWFuYWdlIFB5dGhvbiBpbnRlcnByZXRlcnMuClRoZSAnaW50ZXJwcmV0ZXJzJyBtb2R1bGUgcHJvdmlkZXMgYSBtb3JlIGNvbnZlbmllbnQgaW50ZXJmYWNlLgAAAAAAAAAAY3JlYXRlKCkgLT4gSUQKCkNyZWF0ZSBhIG5ldyBpbnRlcnByZXRlciBhbmQgcmV0dXJuIGEgdW5pcXVlIGdlbmVyYXRlZCBJRC4AAAAAAABkZXN0cm95KGlkKQoKRGVzdHJveSB0aGUgaWRlbnRpZmllZCBpbnRlcnByZXRlci4KCkF0dGVtcHRpbmcgdG8gZGVzdHJveSB0aGUgY3VycmVudCBpbnRlcnByZXRlciByZXN1bHRzIGluIGEgUnVudGltZUVycm9yLgpTbyBkb2VzIGFuIHVucmVjb2duaXplZCBJRC4AAAAAAAAAAAAAbGlzdF9hbGwoKSAtPiBbSURdCgpSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIElEIG9mIGV2ZXJ5IGV4aXN0aW5nIGludGVycHJldGVyLgAAAAAAAAAAAAAAAAAAZ2V0X2N1cnJlbnQoKSAtPiBJRAoKUmV0dXJuIHRoZSBJRCBvZiBjdXJyZW50IGludGVycHJldGVyLgAAAAAAAGdldF9tYWluKCkgLT4gSUQKClJldHVybiB0aGUgSUQgb2YgbWFpbiBpbnRlcnByZXRlci4AAAAAAAAAAAAAAABpc19ydW5uaW5nKGlkKSAtPiBib29sCgpSZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGlkZW50aWZpZWQgaW50ZXJwcmV0ZXIgaXMgcnVubmluZy4AAAAAAAAAAAAAAABydW5fc3RyaW5nKGlkLCBzY3JpcHQsIHNoYXJlZCkKCkV4ZWN1dGUgdGhlIHByb3ZpZGVkIHN0cmluZyBpbiB0aGUgaWRlbnRpZmllZCBpbnRlcnByZXRlci4KClNlZSBQeVJ1bl9TaW1wbGVTdHJpbmdzLgAAAAAAAAAAAAAAAGlzX3NoYXJlYWJsZShvYmopIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIHRoZSBvYmplY3QncyBkYXRhIG1heSBiZSBzaGFyZWQgYmV0d2VlbiBpbnRlcnByZXRlcnMgYW5kCkZhbHNlIG90aGVyd2lzZS4AAAAAAAAAAAAAAAAAY2hhbm5lbF9jcmVhdGUoKSAtPiBjaWQKCkNyZWF0ZSBhIG5ldyBjcm9zcy1pbnRlcnByZXRlciBjaGFubmVsIGFuZCByZXR1cm4gYSB1bmlxdWUgZ2VuZXJhdGVkIElELgAAAAAAAAAAAAAAAAAAAGNoYW5uZWxfZGVzdHJveShjaWQpCgpDbG9zZSBhbmQgZmluYWxpemUgdGhlIGNoYW5uZWwuICBBZnRlcndhcmQgYXR0ZW1wdHMgdG8gdXNlIHRoZSBjaGFubmVsCndpbGwgYmVoYXZlIGFzIHRob3VnaCBpdCBuZXZlciBleGlzdGVkLgAAAAAAAAAAAAAAAGNoYW5uZWxfbGlzdF9hbGwoKSAtPiBbY2lkXQoKUmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBJRHMgZm9yIGFjdGl2ZSBjaGFubmVscy4AAAAAY2hhbm5lbF9saXN0X2ludGVycHJldGVycyhjaWQsICosIHNlbmQpIC0+IFtpZF0KClJldHVybiB0aGUgbGlzdCBvZiBhbGwgaW50ZXJwcmV0ZXIgSURzIGFzc29jaWF0ZWQgd2l0aCBhbiBlbmQgb2YgdGhlIGNoYW5uZWwuCgpUaGUgJ3NlbmQnIGFyZ3VtZW50IHNob3VsZCBiZSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIHVzZSB0aGUgc2VuZCBvcgpyZWNlaXZlIGVuZC4AAAAAAABjaGFubmVsX3NlbmQoY2lkLCBvYmopCgpBZGQgdGhlIG9iamVjdCdzIGRhdGEgdG8gdGhlIGNoYW5uZWwncyBxdWV1ZS4AAAAAAAAAAAAAAGNoYW5uZWxfcmVjdihjaWQsIFtkZWZhdWx0XSkgLT4gb2JqCgpSZXR1cm4gYSBuZXcgb2JqZWN0IGZyb20gdGhlIGRhdGEgYXQgdGhlIGZyb250IG9mIHRoZSBjaGFubmVsJ3MgcXVldWUuCgpJZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlY2VpdmUgdGhlbiByYWlzZSBDaGFubmVsRW1wdHlFcnJvciwgdW5sZXNzCmEgZGVmYXVsdCB2YWx1ZSBpcyBwcm92aWRlZC4gIEluIHRoYXQgY2FzZSByZXR1cm4gaXQuAAAAAAAAAAAAAGNoYW5uZWxfY2xvc2UoY2lkLCAqLCBzZW5kPU5vbmUsIHJlY3Y9Tm9uZSwgZm9yY2U9RmFsc2UpCgpDbG9zZSB0aGUgY2hhbm5lbCBmb3IgYWxsIGludGVycHJldGVycy4KCklmIHRoZSBjaGFubmVsIGlzIGVtcHR5IHRoZW4gdGhlIGtleXdvcmQgYXJncyBhcmUgaWdub3JlZCBhbmQgYm90aAplbmRzIGFyZSBpbW1lZGlhdGVseSBjbG9zZWQuICBPdGhlcndpc2UsIGlmICdmb3JjZScgaXMgVHJ1ZSB0aGVuCmFsbCBxdWV1ZWQgaXRlbXMgYXJlIHJlbGVhc2VkIGFuZCBib3RoIGVuZHMgYXJlIGltbWVkaWF0ZWx5CmNsb3NlZC4KCklmIHRoZSBjaGFubmVsIGlzIG5vdCBlbXB0eSAqYW5kKiAnZm9yY2UnIGlzIEZhbHNlIHRoZW4gZm9sbG93aW5nCmhhcHBlbnM6CgogKiByZWN2IGlzIFRydWUgKHJlZ2FyZGxlc3Mgb2Ygc2VuZCk6CiAgIC0gcmFpc2UgQ2hhbm5lbE5vdEVtcHR5RXJyb3IKICogcmVjdiBpcyBOb25lIGFuZCBzZW5kIGlzIE5vbmU6CiAgIC0gcmFpc2UgQ2hhbm5lbE5vdEVtcHR5RXJyb3IKICogc2VuZCBpcyBUcnVlIGFuZCByZWN2IGlzIG5vdCBUcnVlOgogICAtIGZ1bGx5IGNsb3NlIHRoZSAnc2VuZCcgZW5kCiAgIC0gY2xvc2UgdGhlICdyZWN2JyBlbmQgdG8gaW50ZXJwcmV0ZXJzIG5vdCBhbHJlYWR5IHJlY2VpdmluZwogICAtIGZ1bGx5IGNsb3NlIGl0IG9uY2UgZW1wdHkKCkNsb3NpbmcgYW4gYWxyZWFkeSBjbG9zZWQgY2hhbm5lbCByZXN1bHRzIGluIGEgQ2hhbm5lbENsb3NlZEVycm9yLgoKT25jZSB0aGUgY2hhbm5lbCdzIElEIGhhcyBubyBtb3JlIHJlZiBjb3VudHMgaW4gYW55IGludGVycHJldGVyCnRoZSBjaGFubmVsIHdpbGwgYmUgZGVzdHJveWVkLgAAAAAAAAAAY2hhbm5lbF9yZWxlYXNlKGNpZCwgKiwgc2VuZD1Ob25lLCByZWN2PU5vbmUsIGZvcmNlPVRydWUpCgpDbG9zZSB0aGUgY2hhbm5lbCBmb3IgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIuICAnc2VuZCcgYW5kICdyZWN2JwooYm9vbCkgbWF5IGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGVuZHMgdG8gY2xvc2UuICBCeSBkZWZhdWx0IGJvdGgKZW5kcyBhcmUgY2xvc2VkLiAgQ2xvc2luZyBhbiBhbHJlYWR5IGNsb3NlZCBlbmQgaXMgYSBub29wLgAAAAAAAFRoaXMgbW9kdWxlIGRlZmluZXMgYW4gb2JqZWN0IHR5cGUgd2hpY2ggY2FuIGVmZmljaWVudGx5IHJlcHJlc2VudAphbiBhcnJheSBvZiBiYXNpYyB2YWx1ZXM6IGNoYXJhY3RlcnMsIGludGVnZXJzLCBmbG9hdGluZyBwb2ludApudW1iZXJzLiAgQXJyYXlzIGFyZSBzZXF1ZW5jZSB0eXBlcyBhbmQgYmVoYXZlIHZlcnkgbXVjaCBsaWtlIGxpc3RzLApleGNlcHQgdGhhdCB0aGUgdHlwZSBvZiBvYmplY3RzIHN0b3JlZCBpbiB0aGVtIGlzIGNvbnN0cmFpbmVkLgoAAAAAAAAAAAAAX2FycmF5X3JlY29uc3RydWN0b3IoJG1vZHVsZSwgYXJyYXl0eXBlLCB0eXBlY29kZSwgbWZvcm1hdF9jb2RlLCBpdGVtcywKICAgICAgICAgICAgICAgICAgICAgLykKLS0KCkludGVybmFsLiBVc2VkIGZvciBwaWNrbGluZyBzdXBwb3J0LgAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAgAAAAEAAAAAAAAAAgAAAAEAAAABAAAABAAAAAAAAAAAAAAABAAAAAAAAAABAAAABAAAAAEAAAAAAAAABAAAAAEAAAABAAAACAAAAAAAAAAAAAAACAAAAAAAAAABAAAACAAAAAEAAAAAAAAACAAAAAEAAAABAAAABAAAAAAAAAAAAAAABAAAAAAAAAABAAAACAAAAAAAAAAAAAAACAAAAAAAAAABAAAABAAAAAAAAAAAAAAABAAAAAAAAAABAAAACAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAABhcnJheSh0eXBlY29kZSBbLCBpbml0aWFsaXplcl0pIC0+IGFycmF5CgpSZXR1cm4gYSBuZXcgYXJyYXkgd2hvc2UgaXRlbXMgYXJlIHJlc3RyaWN0ZWQgYnkgdHlwZWNvZGUsIGFuZAppbml0aWFsaXplZCBmcm9tIHRoZSBvcHRpb25hbCBpbml0aWFsaXplciB2YWx1ZSwgd2hpY2ggbXVzdCBiZSBhIGxpc3QsCnN0cmluZyBvciBpdGVyYWJsZSBvdmVyIGVsZW1lbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgoKQXJyYXlzIHJlcHJlc2VudCBiYXNpYyB2YWx1ZXMgYW5kIGJlaGF2ZSB2ZXJ5IG11Y2ggbGlrZSBsaXN0cywgZXhjZXB0CnRoZSB0eXBlIG9mIG9iamVjdHMgc3RvcmVkIGluIHRoZW0gaXMgY29uc3RyYWluZWQuIFRoZSB0eXBlIGlzIHNwZWNpZmllZAphdCBvYmplY3QgY3JlYXRpb24gdGltZSBieSB1c2luZyBhIHR5cGUgY29kZSwgd2hpY2ggaXMgYSBzaW5nbGUgY2hhcmFjdGVyLgpUaGUgZm9sbG93aW5nIHR5cGUgY29kZXMgYXJlIGRlZmluZWQ6CgogICAgVHlwZSBjb2RlICAgQyBUeXBlICAgICAgICAgICAgIE1pbmltdW0gc2l6ZSBpbiBieXRlcwogICAgJ2InICAgICAgICAgc2lnbmVkIGludGVnZXIgICAgIDEKICAgICdCJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICAxCiAgICAndScgICAgICAgICBVbmljb2RlIGNoYXJhY3RlciAgMiAoc2VlIG5vdGUpCiAgICAnaCcgICAgICAgICBzaWduZWQgaW50ZWdlciAgICAgMgogICAgJ0gnICAgICAgICAgdW5zaWduZWQgaW50ZWdlciAgIDIKICAgICdpJyAgICAgICAgIHNpZ25lZCBpbnRlZ2VyICAgICAyCiAgICAnSScgICAgICAgICB1bnNpZ25lZCBpbnRlZ2VyICAgMgogICAgJ2wnICAgICAgICAgc2lnbmVkIGludGVnZXIgICAgIDQKICAgICdMJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICA0CiAgICAncScgICAgICAgICBzaWduZWQgaW50ZWdlciAgICAgOCAoc2VlIG5vdGUpCiAgICAnUScgICAgICAgICB1bnNpZ25lZCBpbnRlZ2VyICAgOCAoc2VlIG5vdGUpCiAgICAnZicgICAgICAgICBmbG9hdGluZyBwb2ludCAgICAgNAogICAgJ2QnICAgICAgICAgZmxvYXRpbmcgcG9pbnQgICAgIDgKCk5PVEU6IFRoZSAndScgdHlwZWNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3MgdW5pY29kZSBjaGFyYWN0ZXIuIE9uCm5hcnJvdyBidWlsZHMgdGhpcyBpcyAyLWJ5dGVzIG9uIHdpZGUgYnVpbGRzIHRoaXMgaXMgNC1ieXRlcy4KCk5PVEU6IFRoZSAncScgYW5kICdRJyB0eXBlIGNvZGVzIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGUgcGxhdGZvcm0KQyBjb21waWxlciB1c2VkIHRvIGJ1aWxkIFB5dGhvbiBzdXBwb3J0cyAnbG9uZyBsb25nJywgb3IsIG9uIFdpbmRvd3MsCidfX2ludDY0Jy4KCk1ldGhvZHM6CgphcHBlbmQoKSAtLSBhcHBlbmQgYSBuZXcgaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheQpidWZmZXJfaW5mbygpIC0tIHJldHVybiBpbmZvcm1hdGlvbiBnaXZpbmcgdGhlIGN1cnJlbnQgbWVtb3J5IGluZm8KYnl0ZXN3YXAoKSAtLSBieXRlc3dhcCBhbGwgdGhlIGl0ZW1zIG9mIHRoZSBhcnJheQpjb3VudCgpIC0tIHJldHVybiBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgYW4gb2JqZWN0CmV4dGVuZCgpIC0tIGV4dGVuZCBhcnJheSBieSBhcHBlbmRpbmcgbXVsdGlwbGUgZWxlbWVudHMgZnJvbSBhbiBpdGVyYWJsZQpmcm9tZmlsZSgpIC0tIHJlYWQgaXRlbXMgZnJvbSBhIGZpbGUgb2JqZWN0CmZyb21saXN0KCkgLS0gYXBwZW5kIGl0ZW1zIGZyb20gdGhlIGxpc3QKZnJvbWJ5dGVzKCkgLS0gYXBwZW5kIGl0ZW1zIGZyb20gdGhlIHN0cmluZwppbmRleCgpIC0tIHJldHVybiBpbmRleCBvZiBmaXJzdCBvY2N1cnJlbmNlIG9mIGFuIG9iamVjdAppbnNlcnQoKSAtLSBpbnNlcnQgYSBuZXcgaXRlbSBpbnRvIHRoZSBhcnJheSBhdCBhIHByb3ZpZGVkIHBvc2l0aW9uCnBvcCgpIC0tIHJlbW92ZSBhbmQgcmV0dXJuIGl0ZW0gKGRlZmF1bHQgbGFzdCkKcmVtb3ZlKCkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW4gb2JqZWN0CnJldmVyc2UoKSAtLSByZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5CnRvZmlsZSgpIC0tIHdyaXRlIGFsbCBpdGVtcyB0byBhIGZpbGUgb2JqZWN0CnRvbGlzdCgpIC0tIHJldHVybiB0aGUgYXJyYXkgY29udmVydGVkIHRvIGFuIG9yZGluYXJ5IGxpc3QKdG9ieXRlcygpIC0tIHJldHVybiB0aGUgYXJyYXkgY29udmVydGVkIHRvIGEgc3RyaW5nCgpBdHRyaWJ1dGVzOgoKdHlwZWNvZGUgLS0gdGhlIHR5cGVjb2RlIGNoYXJhY3RlciB1c2VkIHRvIGNyZWF0ZSB0aGUgYXJyYXkKaXRlbXNpemUgLS0gdGhlIGxlbmd0aCBpbiBieXRlcyBvZiBvbmUgYXJyYXkgaXRlbQoAAAAAAAAAAAAAAABhcHBlbmQoJHNlbGYsIHYsIC8pCi0tCgpBcHBlbmQgbmV3IHZhbHVlIHYgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuAAAAAAAAAAAAAAAAAGJ1ZmZlcl9pbmZvKCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgdHVwbGUgKGFkZHJlc3MsIGxlbmd0aCkgZ2l2aW5nIHRoZSBjdXJyZW50IG1lbW9yeSBhZGRyZXNzIGFuZCB0aGUgbGVuZ3RoIGluIGl0ZW1zIG9mIHRoZSBidWZmZXIgdXNlZCB0byBob2xkIGFycmF5J3MgY29udGVudHMuCgpUaGUgbGVuZ3RoIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBpdGVtc2l6ZSBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlCnRoZSBidWZmZXIgbGVuZ3RoIGluIGJ5dGVzLgAAAAAAAAAAAAAAYnl0ZXN3YXAoJHNlbGYsIC8pCi0tCgpCeXRlc3dhcCBhbGwgaXRlbXMgb2YgdGhlIGFycmF5LgoKSWYgdGhlIGl0ZW1zIGluIHRoZSBhcnJheSBhcmUgbm90IDEsIDIsIDQsIG9yIDggYnl0ZXMgaW4gc2l6ZSwgUnVudGltZUVycm9yIGlzCnJhaXNlZC4AX19jb3B5X18oJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4AAAAAAAAAAAAAAAAAAGNvdW50KCRzZWxmLCB2LCAvKQotLQoKUmV0dXJuIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB2IGluIHRoZSBhcnJheS4AAAAAAAAAAAAAX19kZWVwY29weV9fKCRzZWxmLCB1bnVzZWQsIC8pCi0tCgpSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4AAGV4dGVuZCgkc2VsZiwgYmIsIC8pCi0tCgpBcHBlbmQgaXRlbXMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuAABmcm9tZmlsZSgkc2VsZiwgZiwgbiwgLykKLS0KClJlYWQgbiBvYmplY3RzIGZyb20gdGhlIGZpbGUgb2JqZWN0IGYgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LgAAAAAAZnJvbWxpc3QoJHNlbGYsIGxpc3QsIC8pCi0tCgpBcHBlbmQgaXRlbXMgdG8gYXJyYXkgZnJvbSBsaXN0LgAAAGZyb21ieXRlcygkc2VsZiwgYnVmZmVyLCAvKQotLQoKQXBwZW5kcyBpdGVtcyBmcm9tIHRoZSBzdHJpbmcsIGludGVycHJldGluZyBpdCBhcyBhbiBhcnJheSBvZiBtYWNoaW5lIHZhbHVlcywgYXMgaWYgaXQgaGFkIGJlZW4gcmVhZCBmcm9tIGEgZmlsZSB1c2luZyB0aGUgZnJvbWZpbGUoKSBtZXRob2QuAAAAZnJvbXVuaWNvZGUoJHNlbGYsIHVzdHIsIC8pCi0tCgpFeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuCgpUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsgb3RoZXJ3aXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuClVzZSBhcnJheS5mcm9tYnl0ZXModXN0ci5lbmNvZGUoLi4uKSkgdG8gYXBwZW5kIFVuaWNvZGUgZGF0YSB0byBhbiBhcnJheSBvZgpzb21lIG90aGVyIHR5cGUuAAAAAAAAAAAAAAAAAABpbmRleCgkc2VsZiwgdiwgc3RhcnQ9MCwgc3RvcD1zeXMubWF4c2l6ZSwgLykKLS0KClJldHVybiBpbmRleCBvZiBmaXJzdCBvY2N1cnJlbmNlIG9mIHYgaW4gdGhlIGFycmF5LgoKUmFpc2UgVmFsdWVFcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuAAAAAAAAAAAAAAAAaW5zZXJ0KCRzZWxmLCBpLCB2LCAvKQotLQoKSW5zZXJ0IGEgbmV3IGl0ZW0gdiBpbnRvIHRoZSBhcnJheSBiZWZvcmUgcG9zaXRpb24gaS4AAAAAAAAAAAAAAAAAAAAAcG9wKCRzZWxmLCBpPS0xLCAvKQotLQoKUmV0dXJuIHRoZSBpLXRoIGVsZW1lbnQgYW5kIGRlbGV0ZSBpdCBmcm9tIHRoZSBhcnJheS4KCmkgZGVmYXVsdHMgdG8gLTEuAAAAAAAAAAAAAAAAAAAAAF9fcmVkdWNlX2V4X18oJHNlbGYsIHZhbHVlLCAvKQotLQoKUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4AAAAAAAAAcmVtb3ZlKCRzZWxmLCB2LCAvKQotLQoKUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHYgaW4gdGhlIGFycmF5LgAAAAAAAAAAAAByZXZlcnNlKCRzZWxmLCAvKQotLQoKUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIGluIHRoZSBhcnJheS4AAAAAAAAAAAAAAAAAAHRvZmlsZSgkc2VsZiwgZiwgLykKLS0KCldyaXRlIGFsbCBpdGVtcyAoYXMgbWFjaGluZSB2YWx1ZXMpIHRvIHRoZSBmaWxlIG9iamVjdCBmLgAAAAAAAAAAAAAAAAAAAHRvbGlzdCgkc2VsZiwgLykKLS0KCkNvbnZlcnQgYXJyYXkgdG8gYW4gb3JkaW5hcnkgbGlzdCB3aXRoIHRoZSBzYW1lIGl0ZW1zLgAAAAAAdG9ieXRlcygkc2VsZiwgLykKLS0KCkNvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzIHJlcHJlc2VudGF0aW9uLgAAAAAAAHRvdW5pY29kZSgkc2VsZiwgLykKLS0KCkV4dGVuZHMgdGhpcyBhcnJheSB3aXRoIGRhdGEgZnJvbSB0aGUgdW5pY29kZSBzdHJpbmcgdXN0ci4KCkNvbnZlcnQgdGhlIGFycmF5IHRvIGEgdW5pY29kZSBzdHJpbmcuICBUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsKb3RoZXJ3aXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuICBVc2UgYXJyYXkudG9ieXRlcygpLmRlY29kZSgpIHRvIG9idGFpbiBhCnVuaWNvZGUgc3RyaW5nIGZyb20gYW4gYXJyYXkgb2Ygc29tZSBvdGhlciB0eXBlLgAAAAAAAAAAAAAAAAAAAABfX3NpemVvZl9fKCRzZWxmLCAvKQotLQoKU2l6ZSBvZiB0aGUgYXJyYXkgaW4gbWVtb3J5LCBpbiBieXRlcy4AX19yZWR1Y2VfXygkc2VsZiwgLykKLS0KClJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuAF9fc2V0c3RhdGVfXygkc2VsZiwgc3RhdGUsIC8pCi0tCgpTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuAAAAAAAAAAAAQWNjZWxlcmF0b3IgbW9kdWxlIGZvciBhc3luY2lvAABnZXRfZXZlbnRfbG9vcCgkbW9kdWxlLCAvKQotLQoKUmV0dXJuIGFuIGFzeW5jaW8gZXZlbnQgbG9vcC4KCldoZW4gY2FsbGVkIGZyb20gYSBjb3JvdXRpbmUgb3IgYSBjYWxsYmFjayAoZS5nLiBzY2hlZHVsZWQgd2l0aApjYWxsX3Nvb24gb3Igc2ltaWxhciBBUEkpLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiB0aGUKcnVubmluZyBldmVudCBsb29wLgoKSWYgdGhlcmUgaXMgbm8gcnVubmluZyBldmVudCBsb29wIHNldCwgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCnRoZSByZXN1bHQgb2YgYGdldF9ldmVudF9sb29wX3BvbGljeSgpLmdldF9ldmVudF9sb29wKClgIGNhbGwuAAAAAAAAAAAAAAAAAAAAX2dldF9ldmVudF9sb29wKCRtb2R1bGUsIC8sIHN0YWNrbGV2ZWw9MykKLS0KCgAAZ2V0X3J1bm5pbmdfbG9vcCgkbW9kdWxlLCAvKQotLQoKUmV0dXJuIHRoZSBydW5uaW5nIGV2ZW50IGxvb3AuICBSYWlzZSBhIFJ1bnRpbWVFcnJvciBpZiB0aGVyZSBpcyBub25lLgoKVGhpcyBmdW5jdGlvbiBpcyB0aHJlYWQtc3BlY2lmaWMuAAAAAAAAX2dldF9ydW5uaW5nX2xvb3AoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgcnVubmluZyBldmVudCBsb29wIG9yIE5vbmUuCgpUaGlzIGlzIGEgbG93LWxldmVsIGZ1bmN0aW9uIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgZXZlbnQgbG9vcHMuClRoaXMgZnVuY3Rpb24gaXMgdGhyZWFkLXNwZWNpZmljLgAAAABfc2V0X3J1bm5pbmdfbG9vcCgkbW9kdWxlLCBsb29wLCAvKQotLQoKU2V0IHRoZSBydW5uaW5nIGV2ZW50IGxvb3AuCgpUaGlzIGlzIGEgbG93LWxldmVsIGZ1bmN0aW9uIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgZXZlbnQgbG9vcHMuClRoaXMgZnVuY3Rpb24gaXMgdGhyZWFkLXNwZWNpZmljLgAAAAAAAAAAAF9yZWdpc3Rlcl90YXNrKCRtb2R1bGUsIC8sIHRhc2spCi0tCgpSZWdpc3RlciBhIG5ldyB0YXNrIGluIGFzeW5jaW8gYXMgZXhlY3V0ZWQgYnkgbG9vcC4KClJldHVybnMgTm9uZS4AAAAAAAAAAABfdW5yZWdpc3Rlcl90YXNrKCRtb2R1bGUsIC8sIHRhc2spCi0tCgpVbnJlZ2lzdGVyIGEgdGFzay4KClJldHVybnMgTm9uZS4AAAAAAAAAAF9lbnRlcl90YXNrKCRtb2R1bGUsIC8sIGxvb3AsIHRhc2spCi0tCgpFbnRlciBpbnRvIHRhc2sgZXhlY3V0aW9uIG9yIHJlc3VtZSBzdXNwZW5kZWQgdGFzay4KClRhc2sgYmVsb25ncyB0byBsb29wLgoKUmV0dXJucyBOb25lLgAAAAAAAAAAAAAAAAAAAF9sZWF2ZV90YXNrKCRtb2R1bGUsIC8sIGxvb3AsIHRhc2spCi0tCgpMZWF2ZSB0YXNrIGV4ZWN1dGlvbiBvciBzdXNwZW5kIGEgdGFzay4KClRhc2sgYmVsb25ncyB0byBsb29wLgoKUmV0dXJucyBOb25lLgAAAAAAAAAAAAAARnV0dXJlKCosIGxvb3A9Tm9uZSkKLS0KClRoaXMgY2xhc3MgaXMgKmFsbW9zdCogY29tcGF0aWJsZSB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuCgogICAgRGlmZmVyZW5jZXM6CgogICAgLSByZXN1bHQoKSBhbmQgZXhjZXB0aW9uKCkgZG8gbm90IHRha2UgYSB0aW1lb3V0IGFyZ3VtZW50IGFuZAogICAgICByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgZnV0dXJlIGlzbid0IGRvbmUgeWV0LgoKICAgIC0gQ2FsbGJhY2tzIHJlZ2lzdGVyZWQgd2l0aCBhZGRfZG9uZV9jYWxsYmFjaygpIGFyZSBhbHdheXMgY2FsbGVkCiAgICAgIHZpYSB0aGUgZXZlbnQgbG9vcCdzIGNhbGxfc29vbl90aHJlYWRzYWZlKCkuCgogICAgLSBUaGlzIGNsYXNzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHdhaXQoKSBhbmQgYXNfY29tcGxldGVkKCkKICAgICAgbWV0aG9kcyBpbiB0aGUgY29uY3VycmVudC5mdXR1cmVzIHBhY2thZ2UuAAAAAAAAcmVzdWx0KCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSByZXN1bHQgdGhpcyBmdXR1cmUgcmVwcmVzZW50cy4KCklmIHRoZSBmdXR1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCByYWlzZXMgQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGUKZnV0dXJlJ3MgcmVzdWx0IGlzbid0IHlldCBhdmFpbGFibGUsIHJhaXNlcyBJbnZhbGlkU3RhdGVFcnJvci4gIElmCnRoZSBmdXR1cmUgaXMgZG9uZSBhbmQgaGFzIGFuIGV4Y2VwdGlvbiBzZXQsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZC4AAAAAAABleGNlcHRpb24oJHNlbGYsIC8pCi0tCgpSZXR1cm4gdGhlIGV4Y2VwdGlvbiB0aGF0IHdhcyBzZXQgb24gdGhpcyBmdXR1cmUuCgpUaGUgZXhjZXB0aW9uIChvciBOb25lIGlmIG5vIGV4Y2VwdGlvbiB3YXMgc2V0KSBpcyByZXR1cm5lZCBvbmx5IGlmCnRoZSBmdXR1cmUgaXMgZG9uZS4gIElmIHRoZSBmdXR1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCByYWlzZXMKQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGUgZnV0dXJlIGlzbid0IGRvbmUgeWV0LCByYWlzZXMKSW52YWxpZFN0YXRlRXJyb3IuAAAAAAAAAAAAAABzZXRfcmVzdWx0KCRzZWxmLCByZXN1bHQsIC8pCi0tCgpNYXJrIHRoZSBmdXR1cmUgZG9uZSBhbmQgc2V0IGl0cyByZXN1bHQuCgpJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzCkludmFsaWRTdGF0ZUVycm9yLgAAc2V0X2V4Y2VwdGlvbigkc2VsZiwgZXhjZXB0aW9uLCAvKQotLQoKTWFyayB0aGUgZnV0dXJlIGRvbmUgYW5kIHNldCBhbiBleGNlcHRpb24uCgpJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzCkludmFsaWRTdGF0ZUVycm9yLgAAAAAAAAAAAABhZGRfZG9uZV9jYWxsYmFjaygkc2VsZiwgZm4sIC8sICosIGNvbnRleHQ9PHVucmVwcmVzZW50YWJsZT4pCi0tCgpBZGQgYSBjYWxsYmFjayB0byBiZSBydW4gd2hlbiB0aGUgZnV0dXJlIGJlY29tZXMgZG9uZS4KClRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAtIHRoZSBmdXR1cmUgb2JqZWN0LiBJZgp0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgaXMgY2FsbGVkLCB0aGUgY2FsbGJhY2sgaXMKc2NoZWR1bGVkIHdpdGggY2FsbF9zb29uLgAAAAAAAAByZW1vdmVfZG9uZV9jYWxsYmFjaygkc2VsZiwgZm4sIC8pCi0tCgpSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhIGNhbGxiYWNrIGZyb20gdGhlICJjYWxsIHdoZW4gZG9uZSIgbGlzdC4KClJldHVybnMgdGhlIG51bWJlciBvZiBjYWxsYmFja3MgcmVtb3ZlZC4AAAAAAAAAAAAAAAAAY2FuY2VsKCRzZWxmLCAvLCBtc2c9Tm9uZSkKLS0KCkNhbmNlbCB0aGUgZnV0dXJlIGFuZCBzY2hlZHVsZSBjYWxsYmFja3MuCgpJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSBvciBjYW5jZWxsZWQsIHJldHVybiBGYWxzZS4gIE90aGVyd2lzZSwKY2hhbmdlIHRoZSBmdXR1cmUncyBzdGF0ZSB0byBjYW5jZWxsZWQsIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kCnJldHVybiBUcnVlLgBjYW5jZWxsZWQoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIHdhcyBjYW5jZWxsZWQuAAAAAAAAAAAAAAAAAAAAAGRvbmUoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIGlzIGRvbmUuCgpEb25lIG1lYW5zIGVpdGhlciB0aGF0IGEgcmVzdWx0IC8gZXhjZXB0aW9uIGFyZSBhdmFpbGFibGUsIG9yIHRoYXQgdGhlCmZ1dHVyZSB3YXMgY2FuY2VsbGVkLgAAAAAAAAAAAAAAAABnZXRfbG9vcCgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgZXZlbnQgbG9vcCB0aGUgRnV0dXJlIGlzIGJvdW5kIHRvLgAAAAAAAAAAAAAAAF9tYWtlX2NhbmNlbGxlZF9lcnJvcigkc2VsZiwgLykKLS0KCkNyZWF0ZSB0aGUgQ2FuY2VsbGVkRXJyb3IgdG8gcmFpc2UgaWYgdGhlIEZ1dHVyZSBpcyBjYW5jZWxsZWQuCgpUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlIHdoZW4gaGFuZGxpbmcgYSBjYW5jZWxsYXRpb24gc2luY2UKaXQgZXJhc2VzIHRoZSBjb250ZXh0IGV4Y2VwdGlvbiB2YWx1ZS4AAABUYXNrKGNvcm8sICosIGxvb3A9Tm9uZSwgbmFtZT1Ob25lLCBjb250ZXh0PU5vbmUpCi0tCgpBIGNvcm91dGluZSB3cmFwcGVkIGluIGEgRnV0dXJlLgAAAAAAAAAAAABzZXRfcmVzdWx0KCRzZWxmLCByZXN1bHQsIC8pCi0tCgoAAAAAAAAAAAAAAAAAAABzZXRfZXhjZXB0aW9uKCRzZWxmLCBleGNlcHRpb24sIC8pCi0tCgoAAAAAAAAAAABjYW5jZWwoJHNlbGYsIC8sIG1zZz1Ob25lKQotLQoKUmVxdWVzdCB0aGF0IHRoaXMgdGFzayBjYW5jZWwgaXRzZWxmLgoKVGhpcyBhcnJhbmdlcyBmb3IgYSBDYW5jZWxsZWRFcnJvciB0byBiZSB0aHJvd24gaW50byB0aGUKd3JhcHBlZCBjb3JvdXRpbmUgb24gdGhlIG5leHQgY3ljbGUgdGhyb3VnaCB0aGUgZXZlbnQgbG9vcC4KVGhlIGNvcm91dGluZSB0aGVuIGhhcyBhIGNoYW5jZSB0byBjbGVhbiB1cCBvciBldmVuIGRlbnkKdGhlIHJlcXVlc3QgdXNpbmcgdHJ5L2V4Y2VwdC9maW5hbGx5LgoKVW5saWtlIEZ1dHVyZS5jYW5jZWwsIHRoaXMgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlCnRhc2sgd2lsbCBiZSBjYW5jZWxsZWQ6IHRoZSBleGNlcHRpb24gbWlnaHQgYmUgY2F1Z2h0IGFuZAphY3RlZCB1cG9uLCBkZWxheWluZyBjYW5jZWxsYXRpb24gb2YgdGhlIHRhc2sgb3IgcHJldmVudGluZwpjYW5jZWxsYXRpb24gY29tcGxldGVseS4gIFRoZSB0YXNrIG1heSBhbHNvIHJldHVybiBhIHZhbHVlIG9yCnJhaXNlIGEgZGlmZmVyZW50IGV4Y2VwdGlvbi4KCkltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgVGFzay5jYW5jZWxsZWQoKSB3aWxsCm5vdCByZXR1cm4gVHJ1ZSAodW5sZXNzIHRoZSB0YXNrIHdhcyBhbHJlYWR5IGNhbmNlbGxlZCkuICBBCnRhc2sgd2lsbCBiZSBtYXJrZWQgYXMgY2FuY2VsbGVkIHdoZW4gdGhlIHdyYXBwZWQgY29yb3V0aW5lCnRlcm1pbmF0ZXMgd2l0aCBhIENhbmNlbGxlZEVycm9yIGV4Y2VwdGlvbiAoZXZlbiBpZiBjYW5jZWwoKQp3YXMgbm90IGNhbGxlZCkuCgpUaGlzIGFsc28gaW5jcmVhc2VzIHRoZSB0YXNrJ3MgY291bnQgb2YgY2FuY2VsbGF0aW9uIHJlcXVlc3RzLgAAAAAAAAAAY2FuY2VsbGluZygkc2VsZiwgLykKLS0KClJldHVybiB0aGUgY291bnQgb2YgdGhlIHRhc2sncyBjYW5jZWxsYXRpb24gcmVxdWVzdHMuCgpUaGlzIGNvdW50IGlzIGluY3JlbWVudGVkIHdoZW4gLmNhbmNlbCgpIGlzIGNhbGxlZAphbmQgbWF5IGJlIGRlY3JlbWVudGVkIHVzaW5nIC51bmNhbmNlbCgpLgAAAAB1bmNhbmNlbCgkc2VsZiwgLykKLS0KCkRlY3JlbWVudCB0aGUgdGFzaydzIGNvdW50IG9mIGNhbmNlbGxhdGlvbiByZXF1ZXN0cy4KClRoaXMgc2hvdWxkIGJlIHVzZWQgYnkgdGFza3MgdGhhdCBjYXRjaCBDYW5jZWxsZWRFcnJvcgphbmQgd2lzaCB0byBjb250aW51ZSBpbmRlZmluaXRlbHkgdW50aWwgdGhleSBhcmUgY2FuY2VsbGVkIGFnYWluLgoKUmV0dXJucyB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBjYW5jZWxsYXRpb24gcmVxdWVzdHMuAAAAZ2V0X3N0YWNrKCRzZWxmLCAvLCAqLCBsaW1pdD1Ob25lKQotLQoKUmV0dXJuIHRoZSBsaXN0IG9mIHN0YWNrIGZyYW1lcyBmb3IgdGhpcyB0YXNrJ3MgY29yb3V0aW5lLgoKSWYgdGhlIGNvcm91dGluZSBpcyBub3QgZG9uZSwgdGhpcyByZXR1cm5zIHRoZSBzdGFjayB3aGVyZSBpdCBpcwpzdXNwZW5kZWQuICBJZiB0aGUgY29yb3V0aW5lIGhhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IG9yIHdhcwpjYW5jZWxsZWQsIHRoaXMgcmV0dXJucyBhbiBlbXB0eSBsaXN0LiAgSWYgdGhlIGNvcm91dGluZSB3YXMKdGVybWluYXRlZCBieSBhbiBleGNlcHRpb24sIHRoaXMgcmV0dXJucyB0aGUgbGlzdCBvZiB0cmFjZWJhY2sKZnJhbWVzLgoKVGhlIGZyYW1lcyBhcmUgYWx3YXlzIG9yZGVyZWQgZnJvbSBvbGRlc3QgdG8gbmV3ZXN0LgoKVGhlIG9wdGlvbmFsIGxpbWl0IGdpdmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgdG8KcmV0dXJuOyBieSBkZWZhdWx0IGFsbCBhdmFpbGFibGUgZnJhbWVzIGFyZSByZXR1cm5lZC4gIEl0cwptZWFuaW5nIGRpZmZlcnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYSBzdGFjayBvciBhIHRyYWNlYmFjayBpcwpyZXR1cm5lZDogdGhlIG5ld2VzdCBmcmFtZXMgb2YgYSBzdGFjayBhcmUgcmV0dXJuZWQsIGJ1dCB0aGUKb2xkZXN0IGZyYW1lcyBvZiBhIHRyYWNlYmFjayBhcmUgcmV0dXJuZWQuICAoVGhpcyBtYXRjaGVzIHRoZQpiZWhhdmlvciBvZiB0aGUgdHJhY2ViYWNrIG1vZHVsZS4pCgpGb3IgcmVhc29ucyBiZXlvbmQgb3VyIGNvbnRyb2wsIG9ubHkgb25lIHN0YWNrIGZyYW1lIGlzCnJldHVybmVkIGZvciBhIHN1c3BlbmRlZCBjb3JvdXRpbmUuAAAAAABwcmludF9zdGFjaygkc2VsZiwgLywgKiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKQotLQoKUHJpbnQgdGhlIHN0YWNrIG9yIHRyYWNlYmFjayBmb3IgdGhpcyB0YXNrJ3MgY29yb3V0aW5lLgoKVGhpcyBwcm9kdWNlcyBvdXRwdXQgc2ltaWxhciB0byB0aGF0IG9mIHRoZSB0cmFjZWJhY2sgbW9kdWxlLApmb3IgdGhlIGZyYW1lcyByZXRyaWV2ZWQgYnkgZ2V0X3N0YWNrKCkuICBUaGUgbGltaXQgYXJndW1lbnQKaXMgcGFzc2VkIHRvIGdldF9zdGFjaygpLiAgVGhlIGZpbGUgYXJndW1lbnQgaXMgYW4gSS9PIHN0cmVhbQp0byB3aGljaCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW47IGJ5IGRlZmF1bHQgb3V0cHV0IGlzIHdyaXR0ZW4KdG8gc3lzLnN0ZGVyci4AAAAAAAAAAAAAAAAAAABfbWFrZV9jYW5jZWxsZWRfZXJyb3IoJHNlbGYsIC8pCi0tCgpDcmVhdGUgdGhlIENhbmNlbGxlZEVycm9yIHRvIHJhaXNlIGlmIHRoZSBUYXNrIGlzIGNhbmNlbGxlZC4KClRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2Ugd2hlbiBoYW5kbGluZyBhIGNhbmNlbGxhdGlvbiBzaW5jZQppdCBlcmFzZXMgdGhlIGNvbnRleHQgZXhjZXB0aW9uIHZhbHVlLgAAAAAAZ2V0X25hbWUoJHNlbGYsIC8pCi0tCgoAAAAAAAAAAABzZXRfbmFtZSgkc2VsZiwgdmFsdWUsIC8pCi0tCgoAAGdldF9jb3JvKCRzZWxmLCAvKQotLQoKAAAAAAAAAAAAQmlzZWN0aW9uIGFsZ29yaXRobXMuCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBtYWludGFpbmluZyBhIGxpc3QgaW4gc29ydGVkIG9yZGVyIHdpdGhvdXQKaGF2aW5nIHRvIHNvcnQgdGhlIGxpc3QgYWZ0ZXIgZWFjaCBpbnNlcnRpb24uIEZvciBsb25nIGxpc3RzIG9mIGl0ZW1zIHdpdGgKZXhwZW5zaXZlIGNvbXBhcmlzb24gb3BlcmF0aW9ucywgdGhpcyBjYW4gYmUgYW4gaW1wcm92ZW1lbnQgb3ZlciB0aGUgbW9yZQpjb21tb24gYXBwcm9hY2guCgAAAAAAAABiaXNlY3RfcmlnaHQoJG1vZHVsZSwgLywgYSwgeCwgbG89MCwgaGk9Tm9uZSwgKiwga2V5PU5vbmUpCi0tCgpSZXR1cm4gdGhlIGluZGV4IHdoZXJlIHRvIGluc2VydCBpdGVtIHggaW4gbGlzdCBhLCBhc3N1bWluZyBhIGlzIHNvcnRlZC4KClRoZSByZXR1cm4gdmFsdWUgaSBpcyBzdWNoIHRoYXQgYWxsIGUgaW4gYVs6aV0gaGF2ZSBlIDw9IHgsIGFuZCBhbGwgZSBpbgphW2k6XSBoYXZlIGUgPiB4LiAgU28gaWYgeCBhbHJlYWR5IGFwcGVhcnMgaW4gdGhlIGxpc3QsIGEuaW5zZXJ0KGksIHgpIHdpbGwKaW5zZXJ0IGp1c3QgYWZ0ZXIgdGhlIHJpZ2h0bW9zdCB4IGFscmVhZHkgdGhlcmUuCgpPcHRpb25hbCBhcmdzIGxvIChkZWZhdWx0IDApIGFuZCBoaSAoZGVmYXVsdCBsZW4oYSkpIGJvdW5kIHRoZQpzbGljZSBvZiBhIHRvIGJlIHNlYXJjaGVkLgAAAAAAAABpbnNvcnRfcmlnaHQoJG1vZHVsZSwgLywgYSwgeCwgbG89MCwgaGk9Tm9uZSwgKiwga2V5PU5vbmUpCi0tCgpJbnNlcnQgaXRlbSB4IGluIGxpc3QgYSwgYW5kIGtlZXAgaXQgc29ydGVkIGFzc3VtaW5nIGEgaXMgc29ydGVkLgoKSWYgeCBpcyBhbHJlYWR5IGluIGEsIGluc2VydCBpdCB0byB0aGUgcmlnaHQgb2YgdGhlIHJpZ2h0bW9zdCB4LgoKT3B0aW9uYWwgYXJncyBsbyAoZGVmYXVsdCAwKSBhbmQgaGkgKGRlZmF1bHQgbGVuKGEpKSBib3VuZCB0aGUKc2xpY2Ugb2YgYSB0byBiZSBzZWFyY2hlZC4AAABiaXNlY3RfbGVmdCgkbW9kdWxlLCAvLCBhLCB4LCBsbz0wLCBoaT1Ob25lLCAqLCBrZXk9Tm9uZSkKLS0KClJldHVybiB0aGUgaW5kZXggd2hlcmUgdG8gaW5zZXJ0IGl0ZW0geCBpbiBsaXN0IGEsIGFzc3VtaW5nIGEgaXMgc29ydGVkLgoKVGhlIHJldHVybiB2YWx1ZSBpIGlzIHN1Y2ggdGhhdCBhbGwgZSBpbiBhWzppXSBoYXZlIGUgPCB4LCBhbmQgYWxsIGUgaW4KYVtpOl0gaGF2ZSBlID49IHguICBTbyBpZiB4IGFscmVhZHkgYXBwZWFycyBpbiB0aGUgbGlzdCwgYS5pbnNlcnQoaSwgeCkgd2lsbAppbnNlcnQganVzdCBiZWZvcmUgdGhlIGxlZnRtb3N0IHggYWxyZWFkeSB0aGVyZS4KCk9wdGlvbmFsIGFyZ3MgbG8gKGRlZmF1bHQgMCkgYW5kIGhpIChkZWZhdWx0IGxlbihhKSkgYm91bmQgdGhlCnNsaWNlIG9mIGEgdG8gYmUgc2VhcmNoZWQuAAAAAAAAAABpbnNvcnRfbGVmdCgkbW9kdWxlLCAvLCBhLCB4LCBsbz0wLCBoaT1Ob25lLCAqLCBrZXk9Tm9uZSkKLS0KCkluc2VydCBpdGVtIHggaW4gbGlzdCBhLCBhbmQga2VlcCBpdCBzb3J0ZWQgYXNzdW1pbmcgYSBpcyBzb3J0ZWQuCgpJZiB4IGlzIGFscmVhZHkgaW4gYSwgaW5zZXJ0IGl0IHRvIHRoZSBsZWZ0IG9mIHRoZSBsZWZ0bW9zdCB4LgoKT3B0aW9uYWwgYXJncyBsbyAoZGVmYXVsdCAwKSBhbmQgaGkgKGRlZmF1bHQgbGVuKGEpKSBib3VuZCB0aGUKc2xpY2Ugb2YgYSB0byBiZSBzZWFyY2hlZC4AAAAAAABDb250ZXh0IFZhcmlhYmxlcwAAAAAAAAAAAAAAAAAAAGNvcHlfY29udGV4dCgkbW9kdWxlLCAvKQotLQoKAAAAQ1NWIGRpYWxlY3QKClRoZSBEaWFsZWN0IHR5cGUgcmVjb3JkcyBDU1YgcGFyc2luZyBhbmQgZ2VuZXJhdGlvbiBvcHRpb25zLgoAAAAAAAByYWlzZXMgYW4gZXhjZXB0aW9uIHRvIGF2b2lkIHBpY2tsaW5nAAAAAAAAAAAAAABDU1YgcmVhZGVyCgpSZWFkZXIgb2JqZWN0cyBhcmUgcmVzcG9uc2libGUgZm9yIHJlYWRpbmcgYW5kIHBhcnNpbmcgdGFidWxhciBkYXRhCmluIENTViBmb3JtYXQuCgBDU1Ygd3JpdGVyCgpXcml0ZXIgb2JqZWN0cyBhcmUgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGFidWxhciBkYXRhCmluIENTViBmb3JtYXQgZnJvbSBzZXF1ZW5jZSBpbnB1dC4KAAAAAAAAd3JpdGVyb3coaXRlcmFibGUpCgpDb25zdHJ1Y3QgYW5kIHdyaXRlIGEgQ1NWIHJlY29yZCBmcm9tIGFuIGl0ZXJhYmxlIG9mIGZpZWxkcy4gIE5vbi1zdHJpbmcKZWxlbWVudHMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5nLgAAAAAAAAAAAAAAAAAAd3JpdGVyb3dzKGl0ZXJhYmxlIG9mIGl0ZXJhYmxlcykKCkNvbnN0cnVjdCBhbmQgd3JpdGUgYSBzZXJpZXMgb2YgaXRlcmFibGVzIHRvIGEgY3N2IGZpbGUuICBOb24tc3RyaW5nCmVsZW1lbnRzIHdpbGwgYmUgY29udmVydGVkIHRvIHN0cmluZy4AAAAAQ1NWIHBhcnNpbmcgYW5kIHdyaXRpbmcuCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIHRoYXQgYXNzaXN0IGluIHRoZSByZWFkaW5nIGFuZCB3cml0aW5nCm9mIENvbW1hIFNlcGFyYXRlZCBWYWx1ZSAoQ1NWKSBmaWxlcywgYW5kIGltcGxlbWVudHMgdGhlIGludGVyZmFjZQpkZXNjcmliZWQgYnkgUEVQIDMwNS4gIEFsdGhvdWdoIG1hbnkgQ1NWIGZpbGVzIGFyZSBzaW1wbGUgdG8gcGFyc2UsCnRoZSBmb3JtYXQgaXMgbm90IGZvcm1hbGx5IGRlZmluZWQgYnkgYSBzdGFibGUgc3BlY2lmaWNhdGlvbiBhbmQKaXMgc3VidGxlIGVub3VnaCB0aGF0IHBhcnNpbmcgbGluZXMgb2YgYSBDU1YgZmlsZSB3aXRoIHNvbWV0aGluZwpsaWtlIGxpbmUuc3BsaXQoIiwiKSBpcyBib3VuZCB0byBmYWlsLiAgVGhlIG1vZHVsZSBzdXBwb3J0cyB0aHJlZQpiYXNpYyBBUElzOiByZWFkaW5nLCB3cml0aW5nLCBhbmQgcmVnaXN0cmF0aW9uIG9mIGRpYWxlY3RzLgoKCkRJQUxFQ1QgUkVHSVNUUkFUSU9OOgoKUmVhZGVycyBhbmQgd3JpdGVycyBzdXBwb3J0IGEgZGlhbGVjdCBhcmd1bWVudCwgd2hpY2ggaXMgYSBjb252ZW5pZW50CmhhbmRsZSBvbiBhIGdyb3VwIG9mIHNldHRpbmdzLiAgV2hlbiB0aGUgZGlhbGVjdCBhcmd1bWVudCBpcyBhIHN0cmluZywKaXQgaWRlbnRpZmllcyBvbmUgb2YgdGhlIGRpYWxlY3RzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3aXRoIHRoZSBtb2R1bGUuCklmIGl0IGlzIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBhcmd1bWVudCBhcmUgdXNlZCBhcwp0aGUgc2V0dGluZ3MgZm9yIHRoZSByZWFkZXIgb3Igd3JpdGVyOgoKICAgIGNsYXNzIGV4Y2VsOgogICAgICAgIGRlbGltaXRlciA9ICcsJwogICAgICAgIHF1b3RlY2hhciA9ICciJwogICAgICAgIGVzY2FwZWNoYXIgPSBOb25lCiAgICAgICAgZG91YmxlcXVvdGUgPSBUcnVlCiAgICAgICAgc2tpcGluaXRpYWxzcGFjZSA9IEZhbHNlCiAgICAgICAgbGluZXRlcm1pbmF0b3IgPSAnXHJcbicKICAgICAgICBxdW90aW5nID0gUVVPVEVfTUlOSU1BTAoKU0VUVElOR1M6CgogICAgKiBxdW90ZWNoYXIgLSBzcGVjaWZpZXMgYSBvbmUtY2hhcmFjdGVyIHN0cmluZyB0byB1c2UgYXMgdGhlCiAgICAgICAgcXVvdGluZyBjaGFyYWN0ZXIuICBJdCBkZWZhdWx0cyB0byAnIicuCiAgICAqIGRlbGltaXRlciAtIHNwZWNpZmllcyBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nIHRvIHVzZSBhcyB0aGUKICAgICAgICBmaWVsZCBzZXBhcmF0b3IuICBJdCBkZWZhdWx0cyB0byAnLCcuCiAgICAqIHNraXBpbml0aWFsc3BhY2UgLSBzcGVjaWZpZXMgaG93IHRvIGludGVycHJldCBzcGFjZXMgd2hpY2gKICAgICAgICBpbW1lZGlhdGVseSBmb2xsb3cgYSBkZWxpbWl0ZXIuICBJdCBkZWZhdWx0cyB0byBGYWxzZSwgd2hpY2gKICAgICAgICBtZWFucyB0aGF0IHNwYWNlcyBpbW1lZGlhdGVseSBmb2xsb3dpbmcgYSBkZWxpbWl0ZXIgaXMgcGFydAogICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgZmllbGQuCiAgICAqIGxpbmV0ZXJtaW5hdG9yIC0gIHNwZWNpZmllcyB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNoIHNob3VsZAogICAgICAgIHRlcm1pbmF0ZSByb3dzLgogICAgKiBxdW90aW5nIC0gY29udHJvbHMgd2hlbiBxdW90ZXMgc2hvdWxkIGJlIGdlbmVyYXRlZCBieSB0aGUgd3JpdGVyLgogICAgICAgIEl0IGNhbiB0YWtlIG9uIGFueSBvZiB0aGUgZm9sbG93aW5nIG1vZHVsZSBjb25zdGFudHM6CgogICAgICAgIGNzdi5RVU9URV9NSU5JTUFMIG1lYW5zIG9ubHkgd2hlbiByZXF1aXJlZCwgZm9yIGV4YW1wbGUsIHdoZW4gYQogICAgICAgICAgICBmaWVsZCBjb250YWlucyBlaXRoZXIgdGhlIHF1b3RlY2hhciBvciB0aGUgZGVsaW1pdGVyCiAgICAgICAgY3N2LlFVT1RFX0FMTCBtZWFucyB0aGF0IHF1b3RlcyBhcmUgYWx3YXlzIHBsYWNlZCBhcm91bmQgZmllbGRzLgogICAgICAgIGNzdi5RVU9URV9OT05OVU1FUklDIG1lYW5zIHRoYXQgcXVvdGVzIGFyZSBhbHdheXMgcGxhY2VkIGFyb3VuZAogICAgICAgICAgICBmaWVsZHMgd2hpY2ggZG8gbm90IHBhcnNlIGFzIGludGVnZXJzIG9yIGZsb2F0aW5nIHBvaW50CiAgICAgICAgICAgIG51bWJlcnMuCiAgICAgICAgY3N2LlFVT1RFX05PTkUgbWVhbnMgdGhhdCBxdW90ZXMgYXJlIG5ldmVyIHBsYWNlZCBhcm91bmQgZmllbGRzLgogICAgKiBlc2NhcGVjaGFyIC0gc3BlY2lmaWVzIGEgb25lLWNoYXJhY3RlciBzdHJpbmcgdXNlZCB0byBlc2NhcGUKICAgICAgICB0aGUgZGVsaW1pdGVyIHdoZW4gcXVvdGluZyBpcyBzZXQgdG8gUVVPVEVfTk9ORS4KICAgICogZG91YmxlcXVvdGUgLSBjb250cm9scyB0aGUgaGFuZGxpbmcgb2YgcXVvdGVzIGluc2lkZSBmaWVsZHMuICBXaGVuCiAgICAgICAgVHJ1ZSwgdHdvIGNvbnNlY3V0aXZlIHF1b3RlcyBhcmUgaW50ZXJwcmV0ZWQgYXMgb25lIGR1cmluZyByZWFkLAogICAgICAgIGFuZCB3aGVuIHdyaXRpbmcsIGVhY2ggcXVvdGUgY2hhcmFjdGVyIGVtYmVkZGVkIGluIHRoZSBkYXRhIGlzCiAgICAgICAgd3JpdHRlbiBhcyB0d28gcXVvdGVzCgAAAAAAAAAAAAAgICAgY3N2X3JlYWRlciA9IHJlYWRlcihpdGVyYWJsZSBbLCBkaWFsZWN0PSdleGNlbCddCiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25hbCBrZXl3b3JkIGFyZ3NdKQogICAgZm9yIHJvdyBpbiBjc3ZfcmVhZGVyOgogICAgICAgIHByb2Nlc3Mocm93KQoKVGhlICJpdGVyYWJsZSIgYXJndW1lbnQgY2FuIGJlIGFueSBvYmplY3QgdGhhdCByZXR1cm5zIGEgbGluZQpvZiBpbnB1dCBmb3IgZWFjaCBpdGVyYXRpb24sIHN1Y2ggYXMgYSBmaWxlIG9iamVjdCBvciBhIGxpc3QuICBUaGUKb3B0aW9uYWwgImRpYWxlY3QiIHBhcmFtZXRlciBpcyBkaXNjdXNzZWQgYmVsb3cuICBUaGUgZnVuY3Rpb24KYWxzbyBhY2NlcHRzIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHdoaWNoIG92ZXJyaWRlIHNldHRpbmdzCnByb3ZpZGVkIGJ5IHRoZSBkaWFsZWN0LgoKVGhlIHJldHVybmVkIG9iamVjdCBpcyBhbiBpdGVyYXRvci4gIEVhY2ggaXRlcmF0aW9uIHJldHVybnMgYSByb3cKb2YgdGhlIENTViBmaWxlICh3aGljaCBjYW4gc3BhbiBtdWx0aXBsZSBpbnB1dCBsaW5lcykuCgAAAAAAACAgICBjc3Zfd3JpdGVyID0gY3N2LndyaXRlcihmaWxlb2JqIFssIGRpYWxlY3Q9J2V4Y2VsJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25hbCBrZXl3b3JkIGFyZ3NdKQogICAgZm9yIHJvdyBpbiBzZXF1ZW5jZToKICAgICAgICBjc3Zfd3JpdGVyLndyaXRlcm93KHJvdykKCiAgICBbb3JdCgogICAgY3N2X3dyaXRlciA9IGNzdi53cml0ZXIoZmlsZW9iaiBbLCBkaWFsZWN0PSdleGNlbCddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uYWwga2V5d29yZCBhcmdzXSkKICAgIGNzdl93cml0ZXIud3JpdGVyb3dzKHJvd3MpCgpUaGUgImZpbGVvYmoiIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlIGZpbGUgQVBJLgoAAAAAAAAAAAAAAABDcmVhdGUgYSBtYXBwaW5nIGZyb20gYSBzdHJpbmcgbmFtZSB0byBhIGRpYWxlY3QgY2xhc3MuCiAgICBkaWFsZWN0ID0gY3N2LnJlZ2lzdGVyX2RpYWxlY3QobmFtZVssIGRpYWxlY3RbLCAqKmZtdHBhcmFtc11dKQAAAAAAAGxpc3RfZGlhbGVjdHMoJG1vZHVsZSwgLykKLS0KClJldHVybiBhIGxpc3Qgb2YgYWxsIGtub3duIGRpYWxlY3QgbmFtZXMuCgogICAgbmFtZXMgPSBjc3YubGlzdF9kaWFsZWN0cygpAAAAAAAAAAB1bnJlZ2lzdGVyX2RpYWxlY3QoJG1vZHVsZSwgLywgbmFtZSkKLS0KCkRlbGV0ZSB0aGUgbmFtZS9kaWFsZWN0IG1hcHBpbmcgYXNzb2NpYXRlZCB3aXRoIGEgc3RyaW5nIG5hbWUuCgogICAgY3N2LnVucmVnaXN0ZXJfZGlhbGVjdChuYW1lKQAAAAAAAABnZXRfZGlhbGVjdCgkbW9kdWxlLCAvLCBuYW1lKQotLQoKUmV0dXJuIHRoZSBkaWFsZWN0IGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBuYW1lLgoKICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkAAAAAAAAAAGZpZWxkX3NpemVfbGltaXQoJG1vZHVsZSwgLywgbmV3X2xpbWl0PTx1bnJlcHJlc2VudGFibGU+KQotLQoKU2V0cyBhbiB1cHBlciBsaW1pdCBvbiBwYXJzZWQgZmllbGRzLgoKICAgIGNzdi5maWVsZF9zaXplX2xpbWl0KFtsaW1pdF0pCgpSZXR1cm5zIG9sZCBsaW1pdC4gSWYgbGltaXQgaXMgbm90IGdpdmVuLCBubyBuZXcgbGltaXQgaXMgc2V0IGFuZAp0aGUgb2xkIGxpbWl0IGlzIHJldHVybmVkAAAAAAAAAAAAAAAAAEhlYXAgcXVldWUgYWxnb3JpdGhtIChhLmsuYS4gcHJpb3JpdHkgcXVldWUpLgoKSGVhcHMgYXJlIGFycmF5cyBmb3Igd2hpY2ggYVtrXSA8PSBhWzIqaysxXSBhbmQgYVtrXSA8PSBhWzIqaysyXSBmb3IKYWxsIGssIGNvdW50aW5nIGVsZW1lbnRzIGZyb20gMC4gIEZvciB0aGUgc2FrZSBvZiBjb21wYXJpc29uLApub24tZXhpc3RpbmcgZWxlbWVudHMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW5maW5pdGUuICBUaGUgaW50ZXJlc3RpbmcKcHJvcGVydHkgb2YgYSBoZWFwIGlzIHRoYXQgYVswXSBpcyBhbHdheXMgaXRzIHNtYWxsZXN0IGVsZW1lbnQuCgpVc2FnZToKCmhlYXAgPSBbXSAgICAgICAgICAgICMgY3JlYXRlcyBhbiBlbXB0eSBoZWFwCmhlYXBwdXNoKGhlYXAsIGl0ZW0pICMgcHVzaGVzIGEgbmV3IGl0ZW0gb24gdGhlIGhlYXAKaXRlbSA9IGhlYXBwb3AoaGVhcCkgIyBwb3BzIHRoZSBzbWFsbGVzdCBpdGVtIGZyb20gdGhlIGhlYXAKaXRlbSA9IGhlYXBbMF0gICAgICAgIyBzbWFsbGVzdCBpdGVtIG9uIHRoZSBoZWFwIHdpdGhvdXQgcG9wcGluZyBpdApoZWFwaWZ5KHgpICAgICAgICAgICAjIHRyYW5zZm9ybXMgbGlzdCBpbnRvIGEgaGVhcCwgaW4tcGxhY2UsIGluIGxpbmVhciB0aW1lCml0ZW0gPSBoZWFwcmVwbGFjZShoZWFwLCBpdGVtKSAjIHBvcHMgYW5kIHJldHVybnMgc21hbGxlc3QgaXRlbSwgYW5kIGFkZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbmV3IGl0ZW07IHRoZSBoZWFwIHNpemUgaXMgdW5jaGFuZ2VkCgpPdXIgQVBJIGRpZmZlcnMgZnJvbSB0ZXh0Ym9vayBoZWFwIGFsZ29yaXRobXMgYXMgZm9sbG93czoKCi0gV2UgdXNlIDAtYmFzZWQgaW5kZXhpbmcuICBUaGlzIG1ha2VzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUKICBpbmRleCBmb3IgYSBub2RlIGFuZCB0aGUgaW5kZXhlcyBmb3IgaXRzIGNoaWxkcmVuIHNsaWdodGx5IGxlc3MKICBvYnZpb3VzLCBidXQgaXMgbW9yZSBzdWl0YWJsZSBzaW5jZSBQeXRob24gdXNlcyAwLWJhc2VkIGluZGV4aW5nLgoKLSBPdXIgaGVhcHBvcCgpIG1ldGhvZCByZXR1cm5zIHRoZSBzbWFsbGVzdCBpdGVtLCBub3QgdGhlIGxhcmdlc3QuCgpUaGVzZSB0d28gbWFrZSBpdCBwb3NzaWJsZSB0byB2aWV3IHRoZSBoZWFwIGFzIGEgcmVndWxhciBQeXRob24gbGlzdAp3aXRob3V0IHN1cnByaXNlczogaGVhcFswXSBpcyB0aGUgc21hbGxlc3QgaXRlbSwgYW5kIGhlYXAuc29ydCgpCm1haW50YWlucyB0aGUgaGVhcCBpbnZhcmlhbnQhCgBoZWFwcHVzaCgkbW9kdWxlLCBoZWFwLCBpdGVtLCAvKQotLQoKUHVzaCBpdGVtIG9udG8gaGVhcCwgbWFpbnRhaW5pbmcgdGhlIGhlYXAgaW52YXJpYW50LgAAAAAAAABoZWFwcHVzaHBvcCgkbW9kdWxlLCBoZWFwLCBpdGVtLCAvKQotLQoKUHVzaCBpdGVtIG9uIHRoZSBoZWFwLCB0aGVuIHBvcCBhbmQgcmV0dXJuIHRoZSBzbWFsbGVzdCBpdGVtIGZyb20gdGhlIGhlYXAuCgpUaGUgY29tYmluZWQgYWN0aW9uIHJ1bnMgbW9yZSBlZmZpY2llbnRseSB0aGFuIGhlYXBwdXNoKCkgZm9sbG93ZWQgYnkKYSBzZXBhcmF0ZSBjYWxsIHRvIGhlYXBwb3AoKS4AAAAAAAAAAGhlYXBwb3AoJG1vZHVsZSwgaGVhcCwgLykKLS0KClBvcCB0aGUgc21hbGxlc3QgaXRlbSBvZmYgdGhlIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC4AAAAAAAAAAAAAAAAAAABoZWFwcmVwbGFjZSgkbW9kdWxlLCBoZWFwLCBpdGVtLCAvKQotLQoKUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLgoKVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGhlYXBwb3AoKSBmb2xsb3dlZCBieSBoZWFwcHVzaCgpLCBhbmQgY2FuIGJlCm1vcmUgYXBwcm9wcmlhdGUgd2hlbiB1c2luZyBhIGZpeGVkLXNpemUgaGVhcC4gIE5vdGUgdGhhdCB0aGUgdmFsdWUKcmV0dXJuZWQgbWF5IGJlIGxhcmdlciB0aGFuIGl0ZW0hICBUaGF0IGNvbnN0cmFpbnMgcmVhc29uYWJsZSB1c2VzIG9mCnRoaXMgcm91dGluZSB1bmxlc3Mgd3JpdHRlbiBhcyBwYXJ0IG9mIGEgY29uZGl0aW9uYWwgcmVwbGFjZW1lbnQ6CgogICAgaWYgaXRlbSA+IGhlYXBbMF06CiAgICAgICAgaXRlbSA9IGhlYXByZXBsYWNlKGhlYXAsIGl0ZW0pAAAAaGVhcGlmeSgkbW9kdWxlLCBoZWFwLCAvKQotLQoKVHJhbnNmb3JtIGxpc3QgaW50byBhIGhlYXAsIGluLXBsYWNlLCBpbiBPKGxlbihoZWFwKSkgdGltZS4AAAAAAAAAX2hlYXBwb3BfbWF4KCRtb2R1bGUsIGhlYXAsIC8pCi0tCgpNYXhoZWFwIHZhcmlhbnQgb2YgaGVhcHBvcC4AAF9oZWFwaWZ5X21heCgkbW9kdWxlLCBoZWFwLCAvKQotLQoKTWF4aGVhcCB2YXJpYW50IG9mIGhlYXBpZnkuAABfaGVhcHJlcGxhY2VfbWF4KCRtb2R1bGUsIGhlYXAsIGl0ZW0sIC8pCi0tCgpNYXhoZWFwIHZhcmlhbnQgb2YgaGVhcHJlcGxhY2UuAAAAAEhlYXAgcXVldWVzCgpbZXhwbGFuYXRpb24gYnkgRnJhbsOnb2lzIFBpbmFyZF0KCkhlYXBzIGFyZSBhcnJheXMgZm9yIHdoaWNoIGFba10gPD0gYVsyKmsrMV0gYW5kIGFba10gPD0gYVsyKmsrMl0gZm9yCmFsbCBrLCBjb3VudGluZyBlbGVtZW50cyBmcm9tIDAuICBGb3IgdGhlIHNha2Ugb2YgY29tcGFyaXNvbiwKbm9uLWV4aXN0aW5nIGVsZW1lbnRzIGFyZSBjb25zaWRlcmVkIHRvIGJlIGluZmluaXRlLiAgVGhlIGludGVyZXN0aW5nCnByb3BlcnR5IG9mIGEgaGVhcCBpcyB0aGF0IGFbMF0gaXMgYWx3YXlzIGl0cyBzbWFsbGVzdCBlbGVtZW50LgoKVGhlIHN0cmFuZ2UgaW52YXJpYW50IGFib3ZlIGlzIG1lYW50IHRvIGJlIGFuIGVmZmljaWVudCBtZW1vcnkKcmVwcmVzZW50YXRpb24gZm9yIGEgdG91cm5hbWVudC4gIFRoZSBudW1iZXJzIGJlbG93IGFyZSBgaycsIG5vdCBhW2tdOgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCgogICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoKICAgICAgICAgIDMgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgIDUgICAgICAgICAgICAgICA2CgogICAgICA3ICAgICAgIDggICAgICAgOSAgICAgICAxMCAgICAgIDExICAgICAgMTIgICAgICAxMyAgICAgIDE0CgogICAgMTUgMTYgICAxNyAxOCAgIDE5IDIwICAgMjEgMjIgICAyMyAyNCAgIDI1IDI2ICAgMjcgMjggICAyOSAzMAoKCkluIHRoZSB0cmVlIGFib3ZlLCBlYWNoIGNlbGwgYGsnIGlzIHRvcHBpbmcgYDIqaysxJyBhbmQgYDIqaysyJy4gIEluCmEgdXN1YWwgYmluYXJ5IHRvdXJuYW1lbnQgd2Ugc2VlIGluIHNwb3J0cywgZWFjaCBjZWxsIGlzIHRoZSB3aW5uZXIKb3ZlciB0aGUgdHdvIGNlbGxzIGl0IHRvcHMsIGFuZCB3ZSBjYW4gdHJhY2UgdGhlIHdpbm5lciBkb3duIHRoZSB0cmVlCnRvIHNlZSBhbGwgb3Bwb25lbnRzIHMvaGUgaGFkLiAgSG93ZXZlciwgaW4gbWFueSBjb21wdXRlciBhcHBsaWNhdGlvbnMKb2Ygc3VjaCB0b3VybmFtZW50cywgd2UgZG8gbm90IG5lZWQgdG8gdHJhY2UgdGhlIGhpc3Rvcnkgb2YgYSB3aW5uZXIuClRvIGJlIG1vcmUgbWVtb3J5IGVmZmljaWVudCwgd2hlbiBhIHdpbm5lciBpcyBwcm9tb3RlZCwgd2UgdHJ5IHRvCnJlcGxhY2UgaXQgYnkgc29tZXRoaW5nIGVsc2UgYXQgYSBsb3dlciBsZXZlbCwgYW5kIHRoZSBydWxlIGJlY29tZXMKdGhhdCBhIGNlbGwgYW5kIHRoZSB0d28gY2VsbHMgaXQgdG9wcyBjb250YWluIHRocmVlIGRpZmZlcmVudCBpdGVtcywKYnV0IHRoZSB0b3AgY2VsbCAid2lucyIgb3ZlciB0aGUgdHdvIHRvcHBlZCBjZWxscy4KCklmIHRoaXMgaGVhcCBpbnZhcmlhbnQgaXMgcHJvdGVjdGVkIGF0IGFsbCB0aW1lLCBpbmRleCAwIGlzIGNsZWFybHkKdGhlIG92ZXJhbGwgd2lubmVyLiAgVGhlIHNpbXBsZXN0IGFsZ29yaXRobWljIHdheSB0byByZW1vdmUgaXQgYW5kCmZpbmQgdGhlICJuZXh0IiB3aW5uZXIgaXMgdG8gbW92ZSBzb21lIGxvc2VyIChsZXQncyBzYXkgY2VsbCAzMCBpbiB0aGUKZGlhZ3JhbSBhYm92ZSkgaW50byB0aGUgMCBwb3NpdGlvbiwgYW5kIHRoZW4gcGVyY29sYXRlIHRoaXMgbmV3IDAgZG93bgp0aGUgdHJlZSwgZXhjaGFuZ2luZyB2YWx1ZXMsIHVudGlsIHRoZSBpbnZhcmlhbnQgaXMgcmUtZXN0YWJsaXNoZWQuClRoaXMgaXMgY2xlYXJseSBsb2dhcml0aG1pYyBvbiB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB0cmVlLgpCeSBpdGVyYXRpbmcgb3ZlciBhbGwgaXRlbXMsIHlvdSBnZXQgYW4gTyhuIGxuIG4pIHNvcnQuCgpBIG5pY2UgZmVhdHVyZSBvZiB0aGlzIHNvcnQgaXMgdGhhdCB5b3UgY2FuIGVmZmljaWVudGx5IGluc2VydCBuZXcKaXRlbXMgd2hpbGUgdGhlIHNvcnQgaXMgZ29pbmcgb24sIHByb3ZpZGVkIHRoYXQgdGhlIGluc2VydGVkIGl0ZW1zIGFyZQpub3QgImJldHRlciIgdGhhbiB0aGUgbGFzdCAwJ3RoIGVsZW1lbnQgeW91IGV4dHJhY3RlZC4gIFRoaXMgaXMKZXNwZWNpYWxseSB1c2VmdWwgaW4gc2ltdWxhdGlvbiBjb250ZXh0cywgd2hlcmUgdGhlIHRyZWUgaG9sZHMgYWxsCmluY29taW5nIGV2ZW50cywgYW5kIHRoZSAid2luIiBjb25kaXRpb24gbWVhbnMgdGhlIHNtYWxsZXN0IHNjaGVkdWxlZAp0aW1lLiAgV2hlbiBhbiBldmVudCBzY2hlZHVsZSBvdGhlciBldmVudHMgZm9yIGV4ZWN1dGlvbiwgdGhleSBhcmUKc2NoZWR1bGVkIGludG8gdGhlIGZ1dHVyZSwgc28gdGhleSBjYW4gZWFzaWx5IGdvIGludG8gdGhlIGhlYXAuICBTbywgYQpoZWFwIGlzIGEgZ29vZCBzdHJ1Y3R1cmUgZm9yIGltcGxlbWVudGluZyBzY2hlZHVsZXJzICh0aGlzIGlzIHdoYXQgSQp1c2VkIGZvciBteSBNSURJIHNlcXVlbmNlciA6LSkuCgpWYXJpb3VzIHN0cnVjdHVyZXMgZm9yIGltcGxlbWVudGluZyBzY2hlZHVsZXJzIGhhdmUgYmVlbiBleHRlbnNpdmVseQpzdHVkaWVkLCBhbmQgaGVhcHMgYXJlIGdvb2QgZm9yIHRoaXMsIGFzIHRoZXkgYXJlIHJlYXNvbmFibHkgc3BlZWR5LAp0aGUgc3BlZWQgaXMgYWxtb3N0IGNvbnN0YW50LCBhbmQgdGhlIHdvcnN0IGNhc2UgaXMgbm90IG11Y2ggZGlmZmVyZW50CnRoYW4gdGhlIGF2ZXJhZ2UgY2FzZS4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBvdGhlciByZXByZXNlbnRhdGlvbnMgd2hpY2gKYXJlIG1vcmUgZWZmaWNpZW50IG92ZXJhbGwsIHlldCB0aGUgd29yc3QgY2FzZXMgbWlnaHQgYmUgdGVycmlibGUuCgpIZWFwcyBhcmUgYWxzbyB2ZXJ5IHVzZWZ1bCBpbiBiaWcgZGlzayBzb3J0cy4gIFlvdSBtb3N0IHByb2JhYmx5IGFsbAprbm93IHRoYXQgYSBiaWcgc29ydCBpbXBsaWVzIHByb2R1Y2luZyAicnVucyIgKHdoaWNoIGFyZSBwcmUtc29ydGVkCnNlcXVlbmNlcywgd2hpY2ggc2l6ZSBpcyB1c3VhbGx5IHJlbGF0ZWQgdG8gdGhlIGFtb3VudCBvZiBDUFUgbWVtb3J5KSwKZm9sbG93ZWQgYnkgYSBtZXJnaW5nIHBhc3NlcyBmb3IgdGhlc2UgcnVucywgd2hpY2ggbWVyZ2luZyBpcyBvZnRlbgp2ZXJ5IGNsZXZlcmx5IG9yZ2FuaXNlZFsxXS4gIEl0IGlzIHZlcnkgaW1wb3J0YW50IHRoYXQgdGhlIGluaXRpYWwKc29ydCBwcm9kdWNlcyB0aGUgbG9uZ2VzdCBydW5zIHBvc3NpYmxlLiAgVG91cm5hbWVudHMgYXJlIGEgZ29vZCB3YXkKdG8gdGhhdC4gIElmLCB1c2luZyBhbGwgdGhlIG1lbW9yeSBhdmFpbGFibGUgdG8gaG9sZCBhIHRvdXJuYW1lbnQsIHlvdQpyZXBsYWNlIGFuZCBwZXJjb2xhdGUgaXRlbXMgdGhhdCBoYXBwZW4gdG8gZml0IHRoZSBjdXJyZW50IHJ1biwgeW91J2xsCnByb2R1Y2UgcnVucyB3aGljaCBhcmUgdHdpY2UgdGhlIHNpemUgb2YgdGhlIG1lbW9yeSBmb3IgcmFuZG9tIGlucHV0LAphbmQgbXVjaCBiZXR0ZXIgZm9yIGlucHV0IGZ1enppbHkgb3JkZXJlZC4KCk1vcmVvdmVyLCBpZiB5b3Ugb3V0cHV0IHRoZSAwJ3RoIGl0ZW0gb24gZGlzayBhbmQgZ2V0IGFuIGlucHV0IHdoaWNoCm1heSBub3QgZml0IGluIHRoZSBjdXJyZW50IHRvdXJuYW1lbnQgKGJlY2F1c2UgdGhlIHZhbHVlICJ3aW5zIiBvdmVyCnRoZSBsYXN0IG91dHB1dCB2YWx1ZSksIGl0IGNhbm5vdCBmaXQgaW4gdGhlIGhlYXAsIHNvIHRoZSBzaXplIG9mIHRoZQpoZWFwIGRlY3JlYXNlcy4gIFRoZSBmcmVlZCBtZW1vcnkgY291bGQgYmUgY2xldmVybHkgcmV1c2VkIGltbWVkaWF0ZWx5CmZvciBwcm9ncmVzc2l2ZWx5IGJ1aWxkaW5nIGEgc2Vjb25kIGhlYXAsIHdoaWNoIGdyb3dzIGF0IGV4YWN0bHkgdGhlCnNhbWUgcmF0ZSB0aGUgZmlyc3QgaGVhcCBpcyBtZWx0aW5nLiAgV2hlbiB0aGUgZmlyc3QgaGVhcCBjb21wbGV0ZWx5CnZhbmlzaGVzLCB5b3Ugc3dpdGNoIGhlYXBzIGFuZCBzdGFydCBhIG5ldyBydW4uICBDbGV2ZXIgYW5kIHF1aXRlCmVmZmVjdGl2ZSEKCkluIGEgd29yZCwgaGVhcHMgYXJlIHVzZWZ1bCBtZW1vcnkgc3RydWN0dXJlcyB0byBrbm93LiAgSSB1c2UgdGhlbSBpbgphIGZldyBhcHBsaWNhdGlvbnMsIGFuZCBJIHRoaW5rIGl0IGlzIGdvb2QgdG8ga2VlcCBhIGBoZWFwJyBtb2R1bGUKYXJvdW5kLiA6LSkKCi0tLS0tLS0tLS0tLS0tLS0tLS0tClsxXSBUaGUgZGlzayBiYWxhbmNpbmcgYWxnb3JpdGhtcyB3aGljaCBhcmUgY3VycmVudCwgbm93YWRheXMsIGFyZQptb3JlIGFubm95aW5nIHRoYW4gY2xldmVyLCBhbmQgdGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZSBzZWVraW5nCmNhcGFiaWxpdGllcyBvZiB0aGUgZGlza3MuICBPbiBkZXZpY2VzIHdoaWNoIGNhbm5vdCBzZWVrLCBsaWtlIGJpZwp0YXBlIGRyaXZlcywgdGhlIHN0b3J5IHdhcyBxdWl0ZSBkaWZmZXJlbnQsIGFuZCBvbmUgaGFkIHRvIGJlIHZlcnkKY2xldmVyIHRvIGVuc3VyZSAoZmFyIGluIGFkdmFuY2UpIHRoYXQgZWFjaCB0YXBlIG1vdmVtZW50IHdpbGwgYmUgdGhlCm1vc3QgZWZmZWN0aXZlIHBvc3NpYmxlICh0aGF0IGlzLCB3aWxsIGJlc3QgcGFydGljaXBhdGUgYXQKInByb2dyZXNzaW5nIiB0aGUgbWVyZ2UpLiAgU29tZSB0YXBlcyB3ZXJlIGV2ZW4gYWJsZSB0byByZWFkCmJhY2t3YXJkcywgYW5kIHRoaXMgd2FzIGFsc28gdXNlZCB0byBhdm9pZCB0aGUgcmV3aW5kaW5nIHRpbWUuCkJlbGlldmUgbWUsIHJlYWwgZ29vZCB0YXBlIHNvcnRzIHdlcmUgcXVpdGUgc3BlY3RhY3VsYXIgdG8gd2F0Y2ghCkZyb20gYWxsIHRpbWVzLCBzb3J0aW5nIGhhcyBhbHdheXMgYmVlbiBhIEdyZWF0IEFydCEgOi0pCgBqc29uIHNwZWVkdXBzCgAAZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkoc3RyaW5nKSAtPiBzdHJpbmcKClJldHVybiBhbiBBU0NJSS1vbmx5IEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gc3RyaW5nAAAAAAAAAAAAAGVuY29kZV9iYXNlc3RyaW5nKHN0cmluZykgLT4gc3RyaW5nCgpSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIHN0cmluZwAAAAAAAAAAAAAAAHNjYW5zdHJpbmcoc3RyaW5nLCBlbmQsIHN0cmljdD1UcnVlKSAtPiAoc3RyaW5nLCBlbmQpCgpTY2FuIHRoZSBzdHJpbmcgcyBmb3IgYSBKU09OIHN0cmluZy4gRW5kIGlzIHRoZSBpbmRleCBvZiB0aGUKY2hhcmFjdGVyIGluIHMgYWZ0ZXIgdGhlIHF1b3RlIHRoYXQgc3RhcnRlZCB0aGUgSlNPTiBzdHJpbmcuClVuZXNjYXBlcyBhbGwgdmFsaWQgSlNPTiBzdHJpbmcgZXNjYXBlIHNlcXVlbmNlcyBhbmQgcmFpc2VzIFZhbHVlRXJyb3IKb24gYXR0ZW1wdCB0byBkZWNvZGUgYW4gaW52YWxpZCBzdHJpbmcuIElmIHN0cmljdCBpcyBGYWxzZSB0aGVuIGxpdGVyYWwKY29udHJvbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGluIHRoZSBzdHJpbmcuCgpSZXR1cm5zIGEgdHVwbGUgb2YgdGhlIGRlY29kZWQgc3RyaW5nIGFuZCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpbiBzCmFmdGVyIHRoZSBlbmQgcXVvdGUuAAAASlNPTiBzY2FubmVyIG9iamVjdAAAAAAAAAAAAAAAAABfaXRlcmVuY29kZShvYmosIF9jdXJyZW50X2luZGVudF9sZXZlbCkgLT4gaXRlcmFibGUA0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///9D////J////yf///8n////J////yf///8n////Q////0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///9D////Q////0P///6n///+p////qf///6n///+p////qf///1Byb2ZpbGVyKHRpbWVyPU5vbmUsIHRpbWV1bml0PU5vbmUsIHN1YmNhbGxzPVRydWUsIGJ1aWx0aW5zPVRydWUpCgogICAgQnVpbGRzIGEgcHJvZmlsZXIgb2JqZWN0IHVzaW5nIHRoZSBzcGVjaWZpZWQgdGltZXIgZnVuY3Rpb24uCiAgICBUaGUgZGVmYXVsdCB0aW1lciBpcyBhIGZhc3QgYnVpbHQtaW4gb25lIGJhc2VkIG9uIHJlYWwgdGltZS4KICAgIEZvciBjdXN0b20gdGltZXIgZnVuY3Rpb25zIHJldHVybmluZyBpbnRlZ2VycywgdGltZXVuaXQgY2FuCiAgICBiZSBhIGZsb2F0IHNwZWNpZnlpbmcgYSBzY2FsZSAoaS5lLiBob3cgbG9uZyBlYWNoIGludGVnZXIgdW5pdAogICAgaXMsIGluIHNlY29uZHMpLgoAAABnZXRzdGF0cygkc2VsZiwgLykKLS0KCmxpc3Qgb2YgcHJvZmlsZXJfZW50cnkgb2JqZWN0cy4KCmdldHN0YXRzKCkgLT4gbGlzdCBvZiBwcm9maWxlcl9lbnRyeSBvYmplY3RzCgpSZXR1cm4gYWxsIGluZm9ybWF0aW9uIGNvbGxlY3RlZCBieSB0aGUgcHJvZmlsZXIuCkVhY2ggcHJvZmlsZXJfZW50cnkgaXMgYSB0dXBsZS1saWtlIG9iamVjdCB3aXRoIHRoZQpmb2xsb3dpbmcgYXR0cmlidXRlczoKCiAgICBjb2RlICAgICAgICAgIGNvZGUgb2JqZWN0CiAgICBjYWxsY291bnQgICAgIGhvdyBtYW55IHRpbWVzIHRoaXMgd2FzIGNhbGxlZAogICAgcmVjY2FsbGNvdW50ICBob3cgbWFueSB0aW1lcyBjYWxsZWQgcmVjdXJzaXZlbHkKICAgIHRvdGFsdGltZSAgICAgdG90YWwgdGltZSBpbiB0aGlzIGVudHJ5CiAgICBpbmxpbmV0aW1lICAgIGlubGluZSB0aW1lIGluIHRoaXMgZW50cnkgKG5vdCBpbiBzdWJjYWxscykKICAgIGNhbGxzICAgICAgICAgZGV0YWlscyBvZiB0aGUgY2FsbHMKClRoZSBjYWxscyBhdHRyaWJ1dGUgaXMgZWl0aGVyIE5vbmUgb3IgYSBsaXN0IG9mCnByb2ZpbGVyX3N1YmVudHJ5IG9iamVjdHM6CgogICAgY29kZSAgICAgICAgICBjYWxsZWQgY29kZSBvYmplY3QKICAgIGNhbGxjb3VudCAgICAgaG93IG1hbnkgdGltZXMgdGhpcyBpcyBjYWxsZWQKICAgIHJlY2NhbGxjb3VudCAgaG93IG1hbnkgdGltZXMgdGhpcyBpcyBjYWxsZWQgcmVjdXJzaXZlbHkKICAgIHRvdGFsdGltZSAgICAgdG90YWwgdGltZSBzcGVudCBpbiB0aGlzIGNhbGwKICAgIGlubGluZXRpbWUgICAgaW5saW5lIHRpbWUgKG5vdCBpbiBmdXJ0aGVyIHN1YmNhbGxzKQAAAAAAZW5hYmxlKHN1YmNhbGxzPVRydWUsIGJ1aWx0aW5zPVRydWUpCgpTdGFydCBjb2xsZWN0aW5nIHByb2ZpbGluZyBpbmZvcm1hdGlvbi4KSWYgJ3N1YmNhbGxzJyBpcyBUcnVlLCBhbHNvIHJlY29yZHMgZm9yIGVhY2ggZnVuY3Rpb24Kc3RhdGlzdGljcyBzZXBhcmF0ZWQgYWNjb3JkaW5nIHRvIGl0cyBjdXJyZW50IGNhbGxlci4KSWYgJ2J1aWx0aW5zJyBpcyBUcnVlLCByZWNvcmRzIHRoZSB0aW1lIHNwZW50IGluCmJ1aWx0LWluIGZ1bmN0aW9ucyBzZXBhcmF0ZWx5IGZyb20gdGhlaXIgY2FsbGVyLgoAAAAAZGlzYWJsZSgpCgpTdG9wIGNvbGxlY3RpbmcgcHJvZmlsaW5nIGluZm9ybWF0aW9uLgoAAAAAAAAAAAAAAAAAAGNsZWFyKCkKCkNsZWFyIGFsbCBwcm9maWxpbmcgaW5mb3JtYXRpb24gY29sbGVjdGVkIHNvIGZhci4KAAAAAABzdGFja19lZmZlY3QoJG1vZHVsZSwgb3Bjb2RlLCBvcGFyZz1Ob25lLCAvLCAqLCBqdW1wPU5vbmUpCi0tCgpDb21wdXRlIHRoZSBzdGFjayBlZmZlY3Qgb2YgdGhlIG9wY29kZS4AAAAAAAAAAAAAZ2V0X3NwZWNpYWxpemF0aW9uX3N0YXRzKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gdGhlIHNwZWNpYWxpemF0aW9uIHN0YXRzAAAAAAAAAABPcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFB5dGhvbiBwaWNrbGUgbW9kdWxlLgAAAAAAAAAAZHVtcCgkbW9kdWxlLCAvLCBvYmosIGZpbGUsIHByb3RvY29sPU5vbmUsICosIGZpeF9pbXBvcnRzPVRydWUsCiAgICAgYnVmZmVyX2NhbGxiYWNrPU5vbmUpCi0tCgpXcml0ZSBhIHBpY2tsZWQgcmVwcmVzZW50YXRpb24gb2Ygb2JqIHRvIHRoZSBvcGVuIGZpbGUgb2JqZWN0IGZpbGUuCgpUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBQaWNrbGVyKGZpbGUsIHByb3RvY29sKS5kdW1wKG9iailgYCwgYnV0IG1heQpiZSBtb3JlIGVmZmljaWVudC4KClRoZSBvcHRpb25hbCAqcHJvdG9jb2wqIGFyZ3VtZW50IHRlbGxzIHRoZSBwaWNrbGVyIHRvIHVzZSB0aGUgZ2l2ZW4KcHJvdG9jb2w7IHN1cHBvcnRlZCBwcm90b2NvbHMgYXJlIDAsIDEsIDIsIDMsIDQgYW5kIDUuICBUaGUgZGVmYXVsdApwcm90b2NvbCBpcyA0LiBJdCB3YXMgaW50cm9kdWNlZCBpbiBQeXRob24gMy40LCBhbmQgaXMgaW5jb21wYXRpYmxlCndpdGggcHJldmlvdXMgdmVyc2lvbnMuCgpTcGVjaWZ5aW5nIGEgbmVnYXRpdmUgcHJvdG9jb2wgdmVyc2lvbiBzZWxlY3RzIHRoZSBoaWdoZXN0IHByb3RvY29sCnZlcnNpb24gc3VwcG9ydGVkLiAgVGhlIGhpZ2hlciB0aGUgcHJvdG9jb2wgdXNlZCwgdGhlIG1vcmUgcmVjZW50IHRoZQp2ZXJzaW9uIG9mIFB5dGhvbiBuZWVkZWQgdG8gcmVhZCB0aGUgcGlja2xlIHByb2R1Y2VkLgoKVGhlICpmaWxlKiBhcmd1bWVudCBtdXN0IGhhdmUgYSB3cml0ZSgpIG1ldGhvZCB0aGF0IGFjY2VwdHMgYSBzaW5nbGUKYnl0ZXMgYXJndW1lbnQuICBJdCBjYW4gdGh1cyBiZSBhIGZpbGUgb2JqZWN0IG9wZW5lZCBmb3IgYmluYXJ5CndyaXRpbmcsIGFuIGlvLkJ5dGVzSU8gaW5zdGFuY2UsIG9yIGFueSBvdGhlciBjdXN0b20gb2JqZWN0IHRoYXQgbWVldHMKdGhpcyBpbnRlcmZhY2UuCgpJZiAqZml4X2ltcG9ydHMqIGlzIFRydWUgYW5kIHByb3RvY29sIGlzIGxlc3MgdGhhbiAzLCBwaWNrbGUgd2lsbCB0cnkKdG8gbWFwIHRoZSBuZXcgUHl0aG9uIDMgbmFtZXMgdG8gdGhlIG9sZCBtb2R1bGUgbmFtZXMgdXNlZCBpbiBQeXRob24KMiwgc28gdGhhdCB0aGUgcGlja2xlIGRhdGEgc3RyZWFtIGlzIHJlYWRhYmxlIHdpdGggUHl0aG9uIDIuCgpJZiAqYnVmZmVyX2NhbGxiYWNrKiBpcyBOb25lICh0aGUgZGVmYXVsdCksIGJ1ZmZlciB2aWV3cyBhcmUgc2VyaWFsaXplZAppbnRvICpmaWxlKiBhcyBwYXJ0IG9mIHRoZSBwaWNrbGUgc3RyZWFtLiAgSXQgaXMgYW4gZXJyb3IgaWYKKmJ1ZmZlcl9jYWxsYmFjayogaXMgbm90IE5vbmUgYW5kICpwcm90b2NvbCogaXMgTm9uZSBvciBzbWFsbGVyIHRoYW4gNS4AAAAAAAAAAAAAAGR1bXBzKCRtb2R1bGUsIC8sIG9iaiwgcHJvdG9jb2w9Tm9uZSwgKiwgZml4X2ltcG9ydHM9VHJ1ZSwKICAgICAgYnVmZmVyX2NhbGxiYWNrPU5vbmUpCi0tCgpSZXR1cm4gdGhlIHBpY2tsZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdCBhcyBhIGJ5dGVzIG9iamVjdC4KClRoZSBvcHRpb25hbCAqcHJvdG9jb2wqIGFyZ3VtZW50IHRlbGxzIHRoZSBwaWNrbGVyIHRvIHVzZSB0aGUgZ2l2ZW4KcHJvdG9jb2w7IHN1cHBvcnRlZCBwcm90b2NvbHMgYXJlIDAsIDEsIDIsIDMsIDQgYW5kIDUuICBUaGUgZGVmYXVsdApwcm90b2NvbCBpcyA0LiBJdCB3YXMgaW50cm9kdWNlZCBpbiBQeXRob24gMy40LCBhbmQgaXMgaW5jb21wYXRpYmxlCndpdGggcHJldmlvdXMgdmVyc2lvbnMuCgpTcGVjaWZ5aW5nIGEgbmVnYXRpdmUgcHJvdG9jb2wgdmVyc2lvbiBzZWxlY3RzIHRoZSBoaWdoZXN0IHByb3RvY29sCnZlcnNpb24gc3VwcG9ydGVkLiAgVGhlIGhpZ2hlciB0aGUgcHJvdG9jb2wgdXNlZCwgdGhlIG1vcmUgcmVjZW50IHRoZQp2ZXJzaW9uIG9mIFB5dGhvbiBuZWVkZWQgdG8gcmVhZCB0aGUgcGlja2xlIHByb2R1Y2VkLgoKSWYgKmZpeF9pbXBvcnRzKiBpcyBUcnVlIGFuZCAqcHJvdG9jb2wqIGlzIGxlc3MgdGhhbiAzLCBwaWNrbGUgd2lsbAp0cnkgdG8gbWFwIHRoZSBuZXcgUHl0aG9uIDMgbmFtZXMgdG8gdGhlIG9sZCBtb2R1bGUgbmFtZXMgdXNlZCBpbgpQeXRob24gMiwgc28gdGhhdCB0aGUgcGlja2xlIGRhdGEgc3RyZWFtIGlzIHJlYWRhYmxlIHdpdGggUHl0aG9uIDIuCgpJZiAqYnVmZmVyX2NhbGxiYWNrKiBpcyBOb25lICh0aGUgZGVmYXVsdCksIGJ1ZmZlciB2aWV3cyBhcmUgc2VyaWFsaXplZAppbnRvICpmaWxlKiBhcyBwYXJ0IG9mIHRoZSBwaWNrbGUgc3RyZWFtLiAgSXQgaXMgYW4gZXJyb3IgaWYKKmJ1ZmZlcl9jYWxsYmFjayogaXMgbm90IE5vbmUgYW5kICpwcm90b2NvbCogaXMgTm9uZSBvciBzbWFsbGVyIHRoYW4gNS4AAAAAbG9hZCgkbW9kdWxlLCAvLCBmaWxlLCAqLCBmaXhfaW1wb3J0cz1UcnVlLCBlbmNvZGluZz0nQVNDSUknLAogICAgIGVycm9ycz0nc3RyaWN0JywgYnVmZmVycz0oKSkKLS0KClJlYWQgYW5kIHJldHVybiBhbiBvYmplY3QgZnJvbSB0aGUgcGlja2xlIGRhdGEgc3RvcmVkIGluIGEgZmlsZS4KClRoaXMgaXMgZXF1aXZhbGVudCB0byBgYFVucGlja2xlcihmaWxlKS5sb2FkKClgYCwgYnV0IG1heSBiZSBtb3JlCmVmZmljaWVudC4KClRoZSBwcm90b2NvbCB2ZXJzaW9uIG9mIHRoZSBwaWNrbGUgaXMgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSwgc28gbm8KcHJvdG9jb2wgYXJndW1lbnQgaXMgbmVlZGVkLiAgQnl0ZXMgcGFzdCB0aGUgcGlja2xlZCBvYmplY3QncwpyZXByZXNlbnRhdGlvbiBhcmUgaWdub3JlZC4KClRoZSBhcmd1bWVudCAqZmlsZSogbXVzdCBoYXZlIHR3byBtZXRob2RzLCBhIHJlYWQoKSBtZXRob2QgdGhhdCB0YWtlcwphbiBpbnRlZ2VyIGFyZ3VtZW50LCBhbmQgYSByZWFkbGluZSgpIG1ldGhvZCB0aGF0IHJlcXVpcmVzIG5vCmFyZ3VtZW50cy4gIEJvdGggbWV0aG9kcyBzaG91bGQgcmV0dXJuIGJ5dGVzLiAgVGh1cyAqZmlsZSogY2FuIGJlIGEKYmluYXJ5IGZpbGUgb2JqZWN0IG9wZW5lZCBmb3IgcmVhZGluZywgYW4gaW8uQnl0ZXNJTyBvYmplY3QsIG9yIGFueQpvdGhlciBjdXN0b20gb2JqZWN0IHRoYXQgbWVldHMgdGhpcyBpbnRlcmZhY2UuCgpPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgKmZpeF9pbXBvcnRzKiwgKmVuY29kaW5nKiBhbmQgKmVycm9ycyosCndoaWNoIGFyZSB1c2VkIHRvIGNvbnRyb2wgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBwaWNrbGUgc3RyZWFtCmdlbmVyYXRlZCBieSBQeXRob24gMi4gIElmICpmaXhfaW1wb3J0cyogaXMgVHJ1ZSwgcGlja2xlIHdpbGwgdHJ5IHRvCm1hcCB0aGUgb2xkIFB5dGhvbiAyIG5hbWVzIHRvIHRoZSBuZXcgbmFtZXMgdXNlZCBpbiBQeXRob24gMy4gIFRoZQoqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB0ZWxsIHBpY2tsZSBob3cgdG8gZGVjb2RlIDgtYml0IHN0cmluZwppbnN0YW5jZXMgcGlja2xlZCBieSBQeXRob24gMjsgdGhlc2UgZGVmYXVsdCB0byAnQVNDSUknIGFuZCAnc3RyaWN0JywKcmVzcGVjdGl2ZWx5LiAgVGhlICplbmNvZGluZyogY2FuIGJlICdieXRlcycgdG8gcmVhZCB0aGVzZSA4LWJpdApzdHJpbmcgaW5zdGFuY2VzIGFzIGJ5dGVzIG9iamVjdHMuAAAAAAAAAABsb2FkcygkbW9kdWxlLCBkYXRhLCAvLCAqLCBmaXhfaW1wb3J0cz1UcnVlLCBlbmNvZGluZz0nQVNDSUknLAogICAgICBlcnJvcnM9J3N0cmljdCcsIGJ1ZmZlcnM9KCkpCi0tCgpSZWFkIGFuZCByZXR1cm4gYW4gb2JqZWN0IGZyb20gdGhlIGdpdmVuIHBpY2tsZSBkYXRhLgoKVGhlIHByb3RvY29sIHZlcnNpb24gb2YgdGhlIHBpY2tsZSBpcyBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5LCBzbyBubwpwcm90b2NvbCBhcmd1bWVudCBpcyBuZWVkZWQuICBCeXRlcyBwYXN0IHRoZSBwaWNrbGVkIG9iamVjdCdzCnJlcHJlc2VudGF0aW9uIGFyZSBpZ25vcmVkLgoKT3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgYXJlICpmaXhfaW1wb3J0cyosICplbmNvZGluZyogYW5kICplcnJvcnMqLAp3aGljaCBhcmUgdXNlZCB0byBjb250cm9sIGNvbXBhdGliaWxpdHkgc3VwcG9ydCBmb3IgcGlja2xlIHN0cmVhbQpnZW5lcmF0ZWQgYnkgUHl0aG9uIDIuICBJZiAqZml4X2ltcG9ydHMqIGlzIFRydWUsIHBpY2tsZSB3aWxsIHRyeSB0bwptYXAgdGhlIG9sZCBQeXRob24gMiBuYW1lcyB0byB0aGUgbmV3IG5hbWVzIHVzZWQgaW4gUHl0aG9uIDMuICBUaGUKKmVuY29kaW5nKiBhbmQgKmVycm9ycyogdGVsbCBwaWNrbGUgaG93IHRvIGRlY29kZSA4LWJpdCBzdHJpbmcKaW5zdGFuY2VzIHBpY2tsZWQgYnkgUHl0aG9uIDI7IHRoZXNlIGRlZmF1bHQgdG8gJ0FTQ0lJJyBhbmQgJ3N0cmljdCcsCnJlc3BlY3RpdmVseS4gIFRoZSAqZW5jb2RpbmcqIGNhbiBiZSAnYnl0ZXMnIHRvIHJlYWQgdGhlc2UgOC1iaXQKc3RyaW5nIGluc3RhbmNlcyBhcyBieXRlcyBvYmplY3RzLgAAAAAAAAAAAAAAY2xlYXIoJHNlbGYsIC8pCi0tCgpSZW1vdmUgYWxsIGl0ZW1zIGZyb20gbWVtby4AY29weSgkc2VsZiwgLykKLS0KCkNvcHkgdGhlIG1lbW8gdG8gYSBuZXcgb2JqZWN0LgAAAAAAAAAAAAAAAAAAAF9fcmVkdWNlX18oJHNlbGYsIC8pCi0tCgpJbXBsZW1lbnQgcGlja2xlIHN1cHBvcnQuAAAAAAAAAAAAAAAAAABjbGVhcigkc2VsZiwgLykKLS0KClJlbW92ZSBhbGwgaXRlbXMgZnJvbSBtZW1vLgBjb3B5KCRzZWxmLCAvKQotLQoKQ29weSB0aGUgbWVtbyB0byBhIG5ldyBvYmplY3QuAAAAAAAAAAAAAAAAAAAAX19yZWR1Y2VfXygkc2VsZiwgLykKLS0KCkltcGxlbWVudCBwaWNrbGluZyBzdXBwb3J0LgAAAAAAAAAAAAAAAFBpY2tsZXIoZmlsZSwgcHJvdG9jb2w9Tm9uZSwgZml4X2ltcG9ydHM9VHJ1ZSwgYnVmZmVyX2NhbGxiYWNrPU5vbmUpCi0tCgpUaGlzIHRha2VzIGEgYmluYXJ5IGZpbGUgZm9yIHdyaXRpbmcgYSBwaWNrbGUgZGF0YSBzdHJlYW0uCgpUaGUgb3B0aW9uYWwgKnByb3RvY29sKiBhcmd1bWVudCB0ZWxscyB0aGUgcGlja2xlciB0byB1c2UgdGhlIGdpdmVuCnByb3RvY29sOyBzdXBwb3J0ZWQgcHJvdG9jb2xzIGFyZSAwLCAxLCAyLCAzLCA0IGFuZCA1LiAgVGhlIGRlZmF1bHQKcHJvdG9jb2wgaXMgNC4gSXQgd2FzIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuNCwgYW5kIGlzIGluY29tcGF0aWJsZQp3aXRoIHByZXZpb3VzIHZlcnNpb25zLgoKU3BlY2lmeWluZyBhIG5lZ2F0aXZlIHByb3RvY29sIHZlcnNpb24gc2VsZWN0cyB0aGUgaGlnaGVzdCBwcm90b2NvbAp2ZXJzaW9uIHN1cHBvcnRlZC4gIFRoZSBoaWdoZXIgdGhlIHByb3RvY29sIHVzZWQsIHRoZSBtb3JlIHJlY2VudCB0aGUKdmVyc2lvbiBvZiBQeXRob24gbmVlZGVkIHRvIHJlYWQgdGhlIHBpY2tsZSBwcm9kdWNlZC4KClRoZSAqZmlsZSogYXJndW1lbnQgbXVzdCBoYXZlIGEgd3JpdGUoKSBtZXRob2QgdGhhdCBhY2NlcHRzIGEgc2luZ2xlCmJ5dGVzIGFyZ3VtZW50LiBJdCBjYW4gdGh1cyBiZSBhIGZpbGUgb2JqZWN0IG9wZW5lZCBmb3IgYmluYXJ5CndyaXRpbmcsIGFuIGlvLkJ5dGVzSU8gaW5zdGFuY2UsIG9yIGFueSBvdGhlciBjdXN0b20gb2JqZWN0IHRoYXQgbWVldHMKdGhpcyBpbnRlcmZhY2UuCgpJZiAqZml4X2ltcG9ydHMqIGlzIFRydWUgYW5kIHByb3RvY29sIGlzIGxlc3MgdGhhbiAzLCBwaWNrbGUgd2lsbCB0cnkKdG8gbWFwIHRoZSBuZXcgUHl0aG9uIDMgbmFtZXMgdG8gdGhlIG9sZCBtb2R1bGUgbmFtZXMgdXNlZCBpbiBQeXRob24KMiwgc28gdGhhdCB0aGUgcGlja2xlIGRhdGEgc3RyZWFtIGlzIHJlYWRhYmxlIHdpdGggUHl0aG9uIDIuCgpJZiAqYnVmZmVyX2NhbGxiYWNrKiBpcyBOb25lICh0aGUgZGVmYXVsdCksIGJ1ZmZlciB2aWV3cyBhcmUKc2VyaWFsaXplZCBpbnRvICpmaWxlKiBhcyBwYXJ0IG9mIHRoZSBwaWNrbGUgc3RyZWFtLgoKSWYgKmJ1ZmZlcl9jYWxsYmFjayogaXMgbm90IE5vbmUsIHRoZW4gaXQgY2FuIGJlIGNhbGxlZCBhbnkgbnVtYmVyCm9mIHRpbWVzIHdpdGggYSBidWZmZXIgdmlldy4gIElmIHRoZSBjYWxsYmFjayByZXR1cm5zIGEgZmFsc2UgdmFsdWUKKHN1Y2ggYXMgTm9uZSksIHRoZSBnaXZlbiBidWZmZXIgaXMgb3V0LW9mLWJhbmQ7IG90aGVyd2lzZSB0aGUKYnVmZmVyIGlzIHNlcmlhbGl6ZWQgaW4tYmFuZCwgaS5lLiBpbnNpZGUgdGhlIHBpY2tsZSBzdHJlYW0uCgpJdCBpcyBhbiBlcnJvciBpZiAqYnVmZmVyX2NhbGxiYWNrKiBpcyBub3QgTm9uZSBhbmQgKnByb3RvY29sKgppcyBOb25lIG9yIHNtYWxsZXIgdGhhbiA1LgAAAAAAAAAAAAAAAAAAAABkdW1wKCRzZWxmLCBvYmosIC8pCi0tCgpXcml0ZSBhIHBpY2tsZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIG9iamVjdCB0byB0aGUgb3BlbiBmaWxlLgAAAABjbGVhcl9tZW1vKCRzZWxmLCAvKQotLQoKQ2xlYXJzIHRoZSBwaWNrbGVyJ3MgIm1lbW8iLgoKVGhlIG1lbW8gaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgcmVtZW1iZXJzIHdoaWNoIG9iamVjdHMgdGhlCnBpY2tsZXIgaGFzIGFscmVhZHkgc2Vlbiwgc28gdGhhdCBzaGFyZWQgb3IgcmVjdXJzaXZlIG9iamVjdHMgYXJlCnBpY2tsZWQgYnkgcmVmZXJlbmNlIGFuZCBub3QgYnkgdmFsdWUuICBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgd2hlbgpyZS11c2luZyBwaWNrbGVycy4AAF9fc2l6ZW9mX18oJHNlbGYsIC8pCi0tCgpSZXR1cm5zIHNpemUgaW4gbWVtb3J5LCBpbiBieXRlcy4AAAAAAABVbnBpY2tsZXIoZmlsZSwgKiwgZml4X2ltcG9ydHM9VHJ1ZSwgZW5jb2Rpbmc9J0FTQ0lJJywgZXJyb3JzPSdzdHJpY3QnLAogICAgICAgICAgYnVmZmVycz0oKSkKLS0KClRoaXMgdGFrZXMgYSBiaW5hcnkgZmlsZSBmb3IgcmVhZGluZyBhIHBpY2tsZSBkYXRhIHN0cmVhbS4KClRoZSBwcm90b2NvbCB2ZXJzaW9uIG9mIHRoZSBwaWNrbGUgaXMgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSwgc28gbm8KcHJvdG9jb2wgYXJndW1lbnQgaXMgbmVlZGVkLiAgQnl0ZXMgcGFzdCB0aGUgcGlja2xlZCBvYmplY3QncwpyZXByZXNlbnRhdGlvbiBhcmUgaWdub3JlZC4KClRoZSBhcmd1bWVudCAqZmlsZSogbXVzdCBoYXZlIHR3byBtZXRob2RzLCBhIHJlYWQoKSBtZXRob2QgdGhhdCB0YWtlcwphbiBpbnRlZ2VyIGFyZ3VtZW50LCBhbmQgYSByZWFkbGluZSgpIG1ldGhvZCB0aGF0IHJlcXVpcmVzIG5vCmFyZ3VtZW50cy4gIEJvdGggbWV0aG9kcyBzaG91bGQgcmV0dXJuIGJ5dGVzLiAgVGh1cyAqZmlsZSogY2FuIGJlIGEKYmluYXJ5IGZpbGUgb2JqZWN0IG9wZW5lZCBmb3IgcmVhZGluZywgYW4gaW8uQnl0ZXNJTyBvYmplY3QsIG9yIGFueQpvdGhlciBjdXN0b20gb2JqZWN0IHRoYXQgbWVldHMgdGhpcyBpbnRlcmZhY2UuCgpPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgKmZpeF9pbXBvcnRzKiwgKmVuY29kaW5nKiBhbmQgKmVycm9ycyosCndoaWNoIGFyZSB1c2VkIHRvIGNvbnRyb2wgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBwaWNrbGUgc3RyZWFtCmdlbmVyYXRlZCBieSBQeXRob24gMi4gIElmICpmaXhfaW1wb3J0cyogaXMgVHJ1ZSwgcGlja2xlIHdpbGwgdHJ5IHRvCm1hcCB0aGUgb2xkIFB5dGhvbiAyIG5hbWVzIHRvIHRoZSBuZXcgbmFtZXMgdXNlZCBpbiBQeXRob24gMy4gIFRoZQoqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB0ZWxsIHBpY2tsZSBob3cgdG8gZGVjb2RlIDgtYml0IHN0cmluZwppbnN0YW5jZXMgcGlja2xlZCBieSBQeXRob24gMjsgdGhlc2UgZGVmYXVsdCB0byAnQVNDSUknIGFuZCAnc3RyaWN0JywKcmVzcGVjdGl2ZWx5LiAgVGhlICplbmNvZGluZyogY2FuIGJlICdieXRlcycgdG8gcmVhZCB0aGVzZSA4LWJpdApzdHJpbmcgaW5zdGFuY2VzIGFzIGJ5dGVzIG9iamVjdHMuAAAAAAAAAAAAAAAAAABsb2FkKCRzZWxmLCAvKQotLQoKTG9hZCBhIHBpY2tsZS4KClJlYWQgYSBwaWNrbGVkIG9iamVjdCByZXByZXNlbnRhdGlvbiBmcm9tIHRoZSBvcGVuIGZpbGUgb2JqZWN0IGdpdmVuCmluIHRoZSBjb25zdHJ1Y3RvciwgYW5kIHJldHVybiB0aGUgcmVjb25zdGl0dXRlZCBvYmplY3QgaGllcmFyY2h5CnNwZWNpZmllZCB0aGVyZWluLgAAAABmaW5kX2NsYXNzKCRzZWxmLCBtb2R1bGVfbmFtZSwgZ2xvYmFsX25hbWUsIC8pCi0tCgpSZXR1cm4gYW4gb2JqZWN0IGZyb20gYSBzcGVjaWZpZWQgbW9kdWxlLgoKSWYgbmVjZXNzYXJ5LCB0aGUgbW9kdWxlIHdpbGwgYmUgaW1wb3J0ZWQuIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlCnRoaXMgbWV0aG9kIChlLmcuIHRvIHJlc3RyaWN0IHVucGlja2xpbmcgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgYW5kCmZ1bmN0aW9ucykuCgpUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgYSBjbGFzcyBvciBhIGZ1bmN0aW9uIG9iamVjdCBpcwpuZWVkZWQuICBCb3RoIGFyZ3VtZW50cyBwYXNzZWQgYXJlIHN0ciBvYmplY3RzLgAAX19zaXplb2ZfXygkc2VsZiwgLykKLS0KClJldHVybnMgc2l6ZSBpbiBtZW1vcnksIGluIGJ5dGVzLgAAAAAAAEMgaW1wbGVtZW50YXRpb24gb2YgdGhlIFB5dGhvbiBxdWV1ZSBtb2R1bGUuClRoaXMgbW9kdWxlIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgcGxlYXNlIGRvIG5vdCB1c2UgaXQgZGlyZWN0bHkuAAAAAAAAAAAAAAAAU2ltcGxlUXVldWUoKQotLQoKU2ltcGxlLCB1bmJvdW5kZWQsIHJlZW50cmFudCBGSUZPIHF1ZXVlLgAAAAAAAGVtcHR5KCRzZWxmLCAvKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgAAAAAAAAAAAGdldCgkc2VsZiwgLywgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKQotLQoKUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS4KCklmIG9wdGlvbmFsIGFyZ3MgJ2Jsb2NrJyBpcyB0cnVlIGFuZCAndGltZW91dCcgaXMgTm9uZSAodGhlIGRlZmF1bHQpLApibG9jayBpZiBuZWNlc3NhcnkgdW50aWwgYW4gaXRlbSBpcyBhdmFpbGFibGUuIElmICd0aW1lb3V0JyBpcwphIG5vbi1uZWdhdGl2ZSBudW1iZXIsIGl0IGJsb2NrcyBhdCBtb3N0ICd0aW1lb3V0JyBzZWNvbmRzIGFuZCByYWlzZXMKdGhlIEVtcHR5IGV4Y2VwdGlvbiBpZiBubyBpdGVtIHdhcyBhdmFpbGFibGUgd2l0aGluIHRoYXQgdGltZS4KT3RoZXJ3aXNlICgnYmxvY2snIGlzIGZhbHNlKSwgcmV0dXJuIGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5CmF2YWlsYWJsZSwgZWxzZSByYWlzZSB0aGUgRW1wdHkgZXhjZXB0aW9uICgndGltZW91dCcgaXMgaWdub3JlZAppbiB0aGF0IGNhc2UpLgAAAAAAAAAAAAAAAAAAZ2V0X25vd2FpdCgkc2VsZiwgLykKLS0KClJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KCk9ubHkgZ2V0IGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gT3RoZXJ3aXNlCnJhaXNlIHRoZSBFbXB0eSBleGNlcHRpb24uAAAAAABwdXQoJHNlbGYsIC8sIGl0ZW0sIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSkKLS0KClB1dCB0aGUgaXRlbSBvbiB0aGUgcXVldWUuCgpUaGUgb3B0aW9uYWwgJ2Jsb2NrJyBhbmQgJ3RpbWVvdXQnIGFyZ3VtZW50cyBhcmUgaWdub3JlZCwgYXMgdGhpcyBtZXRob2QKbmV2ZXIgYmxvY2tzLiAgVGhleSBhcmUgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUXVldWUgY2xhc3MuAHB1dF9ub3dhaXQoJHNlbGYsIC8sIGl0ZW0pCi0tCgpQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgoKVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYHB1dChpdGVtKWAgYW5kIGlzIG9ubHkgcHJvdmlkZWQKZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUXVldWUgY2xhc3MuAAAAAAAAAAAAAAAAAHFzaXplKCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSBhcHByb3hpbWF0ZSBzaXplIG9mIHRoZSBxdWV1ZSAobm90IHJlbGlhYmxlISkuAAAATW9kdWxlIGltcGxlbWVudHMgdGhlIE1lcnNlbm5lIFR3aXN0ZXIgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuAFJhbmRvbSgpIC0+IGNyZWF0ZSBhIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHdpdGggaXRzIG93biBpbnRlcm5hbCBzdGF0ZS4AAAAAAAAAcmFuZG9tKCRzZWxmLCAvKQotLQoKcmFuZG9tKCkgLT4geCBpbiB0aGUgaW50ZXJ2YWwgWzAsIDEpLgAAAAAAAHNlZWQoJHNlbGYsIG49Tm9uZSwgLykKLS0KCnNlZWQoW25dKSAtPiBOb25lLgoKRGVmYXVsdHMgdG8gdXNlIHVyYW5kb20gYW5kIGZhbGxzIGJhY2sgdG8gYSBjb21iaW5hdGlvbgpvZiB0aGUgY3VycmVudCB0aW1lIGFuZCB0aGUgcHJvY2VzcyBpZGVudGlmaWVyLgAAAAAAAAAAAABnZXRzdGF0ZSgkc2VsZiwgLykKLS0KCmdldHN0YXRlKCkgLT4gdHVwbGUgY29udGFpbmluZyB0aGUgY3VycmVudCBzdGF0ZS4AAAAAAAAAAHNldHN0YXRlKCRzZWxmLCBzdGF0ZSwgLykKLS0KCnNldHN0YXRlKHN0YXRlKSAtPiBOb25lLiAgUmVzdG9yZXMgZ2VuZXJhdG9yIHN0YXRlLgAAAAAAAAAAAAAAAAAAAGdldHJhbmRiaXRzKCRzZWxmLCBrLCAvKQotLQoKZ2V0cmFuZGJpdHMoaykgLT4geC4gIEdlbmVyYXRlcyBhbiBpbnQgd2l0aCBrIHJhbmRvbSBiaXRzLgAAAAAA37AImUZ1bmN0aW9ucyB0byBjb252ZXJ0IGJldHdlZW4gUHl0aG9uIHZhbHVlcyBhbmQgQyBzdHJ1Y3RzLgpQeXRob24gYnl0ZXMgb2JqZWN0cyBhcmUgdXNlZCB0byBob2xkIHRoZSBkYXRhIHJlcHJlc2VudGluZyB0aGUgQyBzdHJ1Y3QKYW5kIGFsc28gYXMgZm9ybWF0IHN0cmluZ3MgKGV4cGxhaW5lZCBiZWxvdykgdG8gZGVzY3JpYmUgdGhlIGxheW91dCBvZiBkYXRhCmluIHRoZSBDIHN0cnVjdC4KClRoZSBvcHRpb25hbCBmaXJzdCBmb3JtYXQgY2hhciBpbmRpY2F0ZXMgYnl0ZSBvcmRlciwgc2l6ZSBhbmQgYWxpZ25tZW50OgogIEA6IG5hdGl2ZSBvcmRlciwgc2l6ZSAmIGFsaWdubWVudCAoZGVmYXVsdCkKICA9OiBuYXRpdmUgb3JkZXIsIHN0ZC4gc2l6ZSAmIGFsaWdubWVudAogIDw6IGxpdHRsZS1lbmRpYW4sIHN0ZC4gc2l6ZSAmIGFsaWdubWVudAogID46IGJpZy1lbmRpYW4sIHN0ZC4gc2l6ZSAmIGFsaWdubWVudAogICE6IHNhbWUgYXMgPgoKVGhlIHJlbWFpbmluZyBjaGFycyBpbmRpY2F0ZSB0eXBlcyBvZiBhcmdzIGFuZCBtdXN0IG1hdGNoIGV4YWN0bHk7CnRoZXNlIGNhbiBiZSBwcmVjZWRlZCBieSBhIGRlY2ltYWwgcmVwZWF0IGNvdW50OgogIHg6IHBhZCBieXRlIChubyBkYXRhKTsgYzpjaGFyOyBiOnNpZ25lZCBieXRlOyBCOnVuc2lnbmVkIGJ5dGU7CiAgPzogX0Jvb2wgKHJlcXVpcmVzIEM5OTsgaWYgbm90IGF2YWlsYWJsZSwgY2hhciBpcyB1c2VkIGluc3RlYWQpCiAgaDpzaG9ydDsgSDp1bnNpZ25lZCBzaG9ydDsgaTppbnQ7IEk6dW5zaWduZWQgaW50OwogIGw6bG9uZzsgTDp1bnNpZ25lZCBsb25nOyBmOmZsb2F0OyBkOmRvdWJsZTsgZTpoYWxmLWZsb2F0LgpTcGVjaWFsIGNhc2VzIChwcmVjZWRpbmcgZGVjaW1hbCBjb3VudCBpbmRpY2F0ZXMgbGVuZ3RoKToKICBzOnN0cmluZyAoYXJyYXkgb2YgY2hhcik7IHA6IHBhc2NhbCBzdHJpbmcgKHdpdGggY291bnQgYnl0ZSkuClNwZWNpYWwgY2FzZXMgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOgogIG46c3NpemVfdDsgTjpzaXplX3Q7CiAgUDphbiBpbnRlZ2VyIHR5cGUgdGhhdCBpcyB3aWRlIGVub3VnaCB0byBob2xkIGEgcG9pbnRlci4KU3BlY2lhbCBjYXNlIChub3QgaW4gbmF0aXZlIG1vZGUgdW5sZXNzICdsb25nIGxvbmcnIGluIHBsYXRmb3JtIEMpOgogIHE6bG9uZyBsb25nOyBROnVuc2lnbmVkIGxvbmcgbG9uZwpXaGl0ZXNwYWNlIGJldHdlZW4gZm9ybWF0cyBpcyBpZ25vcmVkLgoKVGhlIHZhcmlhYmxlIHN0cnVjdC5lcnJvciBpcyBhbiBleGNlcHRpb24gcmFpc2VkIG9uIGVycm9ycy4KAAAAAAAAAAAAAAAAAABfY2xlYXJjYWNoZSgkbW9kdWxlLCAvKQotLQoKQ2xlYXIgdGhlIGludGVybmFsIGNhY2hlLgAAAAAAAAAAAAAAY2FsY3NpemUoJG1vZHVsZSwgZm9ybWF0LCAvKQotLQoKUmV0dXJuIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHN0cnVjdCBkZXNjcmliZWQgYnkgdGhlIGZvcm1hdCBzdHJpbmcuAAAAAAAAAAAAAAAAAGl0ZXJfdW5wYWNrKCRtb2R1bGUsIGZvcm1hdCwgYnVmZmVyLCAvKQotLQoKUmV0dXJuIGFuIGl0ZXJhdG9yIHlpZWxkaW5nIHR1cGxlcyB1bnBhY2tlZCBmcm9tIHRoZSBnaXZlbiBieXRlcy4KClRoZSBieXRlcyBhcmUgdW5wYWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtYXQgc3RyaW5nLCBsaWtlCmEgcmVwZWF0ZWQgaW52b2NhdGlvbiBvZiB1bnBhY2tfZnJvbSgpLgoKUmVxdWlyZXMgdGhhdCB0aGUgYnl0ZXMgbGVuZ3RoIGJlIGEgbXVsdGlwbGUgb2YgdGhlIGZvcm1hdCBzdHJ1Y3Qgc2l6ZS4AAAAAAHBhY2soZm9ybWF0LCB2MSwgdjIsIC4uLikgLT4gYnl0ZXMKClJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB2YWx1ZXMgdjEsIHYyLCAuLi4gcGFja2VkIGFjY29yZGluZwp0byB0aGUgZm9ybWF0IHN0cmluZy4gIFNlZSBoZWxwKHN0cnVjdCkgZm9yIG1vcmUgb24gZm9ybWF0IHN0cmluZ3MuAAAAAAAAAAAAAAAAAAAAAHBhY2tfaW50byhmb3JtYXQsIGJ1ZmZlciwgb2Zmc2V0LCB2MSwgdjIsIC4uLikKClBhY2sgdGhlIHZhbHVlcyB2MSwgdjIsIC4uLiBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdCBzdHJpbmcgYW5kIHdyaXRlCnRoZSBwYWNrZWQgYnl0ZXMgaW50byB0aGUgd3JpdGFibGUgYnVmZmVyIGJ1ZiBzdGFydGluZyBhdCBvZmZzZXQuICBOb3RlCnRoYXQgdGhlIG9mZnNldCBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50LiAgU2VlIGhlbHAoc3RydWN0KSBmb3IgbW9yZQpvbiBmb3JtYXQgc3RyaW5ncy4AAAAAAAAAAAAAAAAAAHVucGFjaygkbW9kdWxlLCBmb3JtYXQsIGJ1ZmZlciwgLykKLS0KClJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgdmFsdWVzIHVucGFja2VkIGFjY29yZGluZyB0byB0aGUgZm9ybWF0IHN0cmluZy4KClRoZSBidWZmZXIncyBzaXplIGluIGJ5dGVzIG11c3QgYmUgY2FsY3NpemUoZm9ybWF0KS4KClNlZSBoZWxwKHN0cnVjdCkgZm9yIG1vcmUgb24gZm9ybWF0IHN0cmluZ3MuAAAAAAAAAAAAAAAAdW5wYWNrX2Zyb20oJG1vZHVsZSwgZm9ybWF0LCAvLCBidWZmZXIsIG9mZnNldD0wKQotLQoKUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyB2YWx1ZXMgdW5wYWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtYXQgc3RyaW5nLgoKVGhlIGJ1ZmZlcidzIHNpemUsIG1pbnVzIG9mZnNldCwgbXVzdCBiZSBhdCBsZWFzdCBjYWxjc2l6ZShmb3JtYXQpLgoKU2VlIGhlbHAoc3RydWN0KSBmb3IgbW9yZSBvbiBmb3JtYXQgc3RyaW5ncy4AAAAAAAAAAAAAAAAAAFN0cnVjdChmbXQpIC0tPiBjb21waWxlZCBzdHJ1Y3Qgb2JqZWN0CgoAAAAAAAAAAGl0ZXJfdW5wYWNrKCRzZWxmLCBidWZmZXIsIC8pCi0tCgpSZXR1cm4gYW4gaXRlcmF0b3IgeWllbGRpbmcgdHVwbGVzLgoKVHVwbGVzIGFyZSB1bnBhY2tlZCBmcm9tIHRoZSBnaXZlbiBieXRlcyBzb3VyY2UsIGxpa2UgYSByZXBlYXRlZAppbnZvY2F0aW9uIG9mIHVucGFja19mcm9tKCkuCgpSZXF1aXJlcyB0aGF0IHRoZSBieXRlcyBsZW5ndGggYmUgYSBtdWx0aXBsZSBvZiB0aGUgc3RydWN0IHNpemUuAAAAAAAAAAAAAFMucGFjayh2MSwgdjIsIC4uLikgLT4gYnl0ZXMKClJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHZhbHVlcyB2MSwgdjIsIC4uLiBwYWNrZWQgYWNjb3JkaW5nCnRvIHRoZSBmb3JtYXQgc3RyaW5nIFMuZm9ybWF0LiAgU2VlIGhlbHAoc3RydWN0KSBmb3IgbW9yZSBvbiBmb3JtYXQKc3RyaW5ncy4AUy5wYWNrX2ludG8oYnVmZmVyLCBvZmZzZXQsIHYxLCB2MiwgLi4uKQoKUGFjayB0aGUgdmFsdWVzIHYxLCB2MiwgLi4uIGFjY29yZGluZyB0byB0aGUgZm9ybWF0IHN0cmluZyBTLmZvcm1hdAphbmQgd3JpdGUgdGhlIHBhY2tlZCBieXRlcyBpbnRvIHRoZSB3cml0YWJsZSBidWZmZXIgYnVmIHN0YXJ0aW5nIGF0Cm9mZnNldC4gIE5vdGUgdGhhdCB0aGUgb2Zmc2V0IGlzIGEgcmVxdWlyZWQgYXJndW1lbnQuICBTZWUKaGVscChzdHJ1Y3QpIGZvciBtb3JlIG9uIGZvcm1hdCBzdHJpbmdzLgAAAAAAAAAAAAAAdW5wYWNrKCRzZWxmLCBidWZmZXIsIC8pCi0tCgpSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHVucGFja2VkIHZhbHVlcy4KClVucGFjayBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdCBzdHJpbmcgU3RydWN0LmZvcm1hdC4gVGhlIGJ1ZmZlcidzIHNpemUKaW4gYnl0ZXMgbXVzdCBiZSBTdHJ1Y3Quc2l6ZS4KClNlZSBoZWxwKHN0cnVjdCkgZm9yIG1vcmUgb24gZm9ybWF0IHN0cmluZ3MuAAAAAAB1bnBhY2tfZnJvbSgkc2VsZiwgLywgYnVmZmVyLCBvZmZzZXQ9MCkKLS0KClJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgdW5wYWNrZWQgdmFsdWVzLgoKVmFsdWVzIGFyZSB1bnBhY2tlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdCBzdHJpbmcgU3RydWN0LmZvcm1hdC4KClRoZSBidWZmZXIncyBzaXplIGluIGJ5dGVzLCBzdGFydGluZyBhdCBwb3NpdGlvbiBvZmZzZXQsIG11c3QgYmUKYXQgbGVhc3QgU3RydWN0LnNpemUuCgpTZWUgaGVscChzdHJ1Y3QpIGZvciBtb3JlIG9uIGZvcm1hdCBzdHJpbmdzLgBTLl9fc2l6ZW9mX18oKSAtPiBzaXplIG9mIFMgaW4gbWVtb3J5LCBpbiBieXRlcwBBY2NlbGVyYXRvcnMgZm9yIHRoZSB0eXBpbmcgbW9kdWxlLgoAAAAAAAAAAAAAAABfaWRmdW5jKCRtb2R1bGUsIHgsIC8pCi0tCgoAAAAAAP////8fAAAAHAAAAB8AAAAeAAAAHwAAAB4AAAAfAAAAHwAAAB4AAAAfAAAAHgAAAB8AAAAAAAAAAAAAAAAAAAD/////AAAAAB8AAAA7AAAAWgAAAHgAAACXAAAAtQAAANQAAADzAAAAEQEAADABAABOAQAAAAAAAAAAAAAAAAAAbWF4KCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgLykKLS0KClJldHVybiB0aGUgbWF4aW11bSBvZiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYWxsIHNhbXBsZXMgaW4gYSBmcmFnbWVudC4AAAAAAG1pbm1heCgkbW9kdWxlLCBmcmFnbWVudCwgd2lkdGgsIC8pCi0tCgpSZXR1cm4gdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIG9mIGFsbCBzYW1wbGVzIGluIHRoZSBzb3VuZCBmcmFnbWVudC4AAAAAAAAAAAAAAAAAYXZnKCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgLykKLS0KClJldHVybiB0aGUgYXZlcmFnZSBvdmVyIGFsbCBzYW1wbGVzIGluIHRoZSBmcmFnbWVudC4AAAAAAAAAbWF4cHAoJG1vZHVsZSwgZnJhZ21lbnQsIHdpZHRoLCAvKQotLQoKUmV0dXJuIHRoZSBtYXhpbXVtIHBlYWstcGVhayB2YWx1ZSBpbiB0aGUgc291bmQgZnJhZ21lbnQuAAAAAAAAAAAAAAAAAAAAAGF2Z3BwKCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgLykKLS0KClJldHVybiB0aGUgYXZlcmFnZSBwZWFrLXBlYWsgdmFsdWUgb3ZlciBhbGwgc2FtcGxlcyBpbiB0aGUgZnJhZ21lbnQuAAAAAABybXMoJG1vZHVsZSwgZnJhZ21lbnQsIHdpZHRoLCAvKQotLQoKUmV0dXJuIHRoZSByb290LW1lYW4tc3F1YXJlIG9mIHRoZSBmcmFnbWVudCwgaS5lLiBzcXJ0KHN1bShTX2leMikvbikuAAAAAAAAZmluZGZpdCgkbW9kdWxlLCBmcmFnbWVudCwgcmVmZXJlbmNlLCAvKQotLQoKVHJ5IHRvIG1hdGNoIHJlZmVyZW5jZSBhcyB3ZWxsIGFzIHBvc3NpYmxlIHRvIGEgcG9ydGlvbiBvZiBmcmFnbWVudC4AAAAAAAAAAAAAAAAAAABmaW5kbWF4KCRtb2R1bGUsIGZyYWdtZW50LCBsZW5ndGgsIC8pCi0tCgpTZWFyY2ggZnJhZ21lbnQgZm9yIGEgc2xpY2Ugb2Ygc3BlY2lmaWVkIG51bWJlciBvZiBzYW1wbGVzIHdpdGggbWF4aW11bSBlbmVyZ3kuAAAAAAAAAGZpbmRmYWN0b3IoJG1vZHVsZSwgZnJhZ21lbnQsIHJlZmVyZW5jZSwgLykKLS0KClJldHVybiBhIGZhY3RvciBGIHN1Y2ggdGhhdCBybXMoYWRkKGZyYWdtZW50LCBtdWwocmVmZXJlbmNlLCAtRikpKSBpcyBtaW5pbWFsLgAAY3Jvc3MoJG1vZHVsZSwgZnJhZ21lbnQsIHdpZHRoLCAvKQotLQoKUmV0dXJuIHRoZSBudW1iZXIgb2YgemVybyBjcm9zc2luZ3MgaW4gdGhlIGZyYWdtZW50IHBhc3NlZCBhcyBhbiBhcmd1bWVudC4AAAAAAAAAAAAAAAAAAABtdWwoJG1vZHVsZSwgZnJhZ21lbnQsIHdpZHRoLCBmYWN0b3IsIC8pCi0tCgpSZXR1cm4gYSBmcmFnbWVudCB0aGF0IGhhcyBhbGwgc2FtcGxlcyBpbiB0aGUgb3JpZ2luYWwgZnJhZ21lbnQgbXVsdGlwbGllZCBieSB0aGUgZmxvYXRpbmctcG9pbnQgdmFsdWUgZmFjdG9yLgAAAAAAYWRkKCRtb2R1bGUsIGZyYWdtZW50MSwgZnJhZ21lbnQyLCB3aWR0aCwgLykKLS0KClJldHVybiBhIGZyYWdtZW50IHdoaWNoIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgdHdvIHNhbXBsZXMgcGFzc2VkIGFzIHBhcmFtZXRlcnMuAAAAAAAAAAAAAAAAAAAAYmlhcygkbW9kdWxlLCBmcmFnbWVudCwgd2lkdGgsIGJpYXMsIC8pCi0tCgpSZXR1cm4gYSBmcmFnbWVudCB0aGF0IGlzIHRoZSBvcmlnaW5hbCBmcmFnbWVudCB3aXRoIGEgYmlhcyBhZGRlZCB0byBlYWNoIHNhbXBsZS4AAAB1bGF3MmxpbigkbW9kdWxlLCBmcmFnbWVudCwgd2lkdGgsIC8pCi0tCgpDb252ZXJ0IHNvdW5kIGZyYWdtZW50cyBpbiB1LUxBVyBlbmNvZGluZyB0byBsaW5lYXJseSBlbmNvZGVkIHNvdW5kIGZyYWdtZW50cy4AAAAAAAAAAGxpbjJ1bGF3KCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgLykKLS0KCkNvbnZlcnQgc2FtcGxlcyBpbiB0aGUgYXVkaW8gZnJhZ21lbnQgdG8gdS1MQVcgZW5jb2RpbmcuAAAAAAAAAAAAAAAAAABhbGF3MmxpbigkbW9kdWxlLCBmcmFnbWVudCwgd2lkdGgsIC8pCi0tCgpDb252ZXJ0IHNvdW5kIGZyYWdtZW50cyBpbiBhLUxBVyBlbmNvZGluZyB0byBsaW5lYXJseSBlbmNvZGVkIHNvdW5kIGZyYWdtZW50cy4AAAAAAAAAAGxpbjJhbGF3KCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgLykKLS0KCkNvbnZlcnQgc2FtcGxlcyBpbiB0aGUgYXVkaW8gZnJhZ21lbnQgdG8gYS1MQVcgZW5jb2RpbmcuAAAAAAAAAAAAAAAAAABsaW4ybGluKCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgbmV3d2lkdGgsIC8pCi0tCgpDb252ZXJ0IHNhbXBsZXMgYmV0d2VlbiAxLSwgMi0sIDMtIGFuZCA0LWJ5dGUgZm9ybWF0cy4AAAAAAAAAYWRwY20ybGluKCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgc3RhdGUsIC8pCi0tCgpEZWNvZGUgYW4gSW50ZWwvRFZJIEFEUENNIGNvZGVkIGZyYWdtZW50IHRvIGEgbGluZWFyIGZyYWdtZW50LgAAAAAAAAAAAAAAAAAAAABsaW4yYWRwY20oJG1vZHVsZSwgZnJhZ21lbnQsIHdpZHRoLCBzdGF0ZSwgLykKLS0KCkNvbnZlcnQgc2FtcGxlcyB0byA0IGJpdCBJbnRlbC9EVkkgQURQQ00gZW5jb2RpbmcuAAAAAAAAAAAAAAAAdG9tb25vKCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgbGZhY3RvciwgcmZhY3RvciwgLykKLS0KCkNvbnZlcnQgYSBzdGVyZW8gZnJhZ21lbnQgdG8gYSBtb25vIGZyYWdtZW50LgAAAAAAAAAAAHRvc3RlcmVvKCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwgbGZhY3RvciwgcmZhY3RvciwgLykKLS0KCkdlbmVyYXRlIGEgc3RlcmVvIGZyYWdtZW50IGZyb20gYSBtb25vIGZyYWdtZW50LgAAAABnZXRzYW1wbGUoJG1vZHVsZSwgZnJhZ21lbnQsIHdpZHRoLCBpbmRleCwgLykKLS0KClJldHVybiB0aGUgdmFsdWUgb2Ygc2FtcGxlIGluZGV4IGZyb20gdGhlIGZyYWdtZW50LgAAAAAAAAAAAAAAcmV2ZXJzZSgkbW9kdWxlLCBmcmFnbWVudCwgd2lkdGgsIC8pCi0tCgpSZXZlcnNlIHRoZSBzYW1wbGVzIGluIGEgZnJhZ21lbnQgYW5kIHJldHVybnMgdGhlIG1vZGlmaWVkIGZyYWdtZW50LgAAAGJ5dGVzd2FwKCRtb2R1bGUsIGZyYWdtZW50LCB3aWR0aCwg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LCAvKQotLQoKUmV0dXJuIHRoZSBjZWlsaW5nIG9mIHggYXMgYW4gSW50ZWdyYWwuCgpUaGlzIGlzIHRoZSBzbWFsbGVzdCBpbnRlZ2VyID49IHguAAAAAAAAAAAAAAAAAGNvcHlzaWduKCRtb2R1bGUsIHgsIHksIC8pCi0tCgpSZXR1cm4gYSBmbG9hdCB3aXRoIHRoZSBtYWduaXR1ZGUgKGFic29sdXRlIHZhbHVlKSBvZiB4IGJ1dCB0aGUgc2lnbiBvZiB5LgoKT24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBzaWduZWQgemVyb3MsIGNvcHlzaWduKDEuMCwgLTAuMCkKcmV0dXJucyAtMS4wLgoAAAAAAAAAAAAAAGNvcygkbW9kdWxlLCB4LCAvKQotLQoKUmV0dXJuIHRoZSBjb3NpbmUgb2YgeCAobWVhc3VyZWQgaW4gcmFkaWFucykuAAAAAAAAAAAAAAAAY29zaCgkbW9kdWxlLCB4LCAvKQotLQoKUmV0dXJuIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB4LgAAAAAAAGRlZ3JlZXMoJG1vZHVsZSwgeCwgLykKLS0KCkNvbnZlcnQgYW5nbGUgeCBmcm9tIHJhZGlhbnMgdG8gZGVncmVlcy4AAAAAAAAAAAAAAAAAZGlzdCgkbW9kdWxlLCBwLCBxLCAvKQotLQoKUmV0dXJuIHRoZSBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gcG9pbnRzIHAgYW5kIHEuCgpUaGUgcG9pbnRzIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgc2VxdWVuY2VzIChvciBpdGVyYWJsZXMpIG9mCmNvb3JkaW5hdGVzLiAgQm90aCBpbnB1dHMgbXVzdCBoYXZlIHRoZSBzYW1lIGRpbWVuc2lvbi4KClJvdWdobHkgZXF1aXZhbGVudCB0bzoKICAgIHNxcnQoc3VtKChweCAtIHF4KSAqKiAyLjAgZm9yIHB4LCBxeCBpbiB6aXAocCwgcSkpKQAAAAAAZXJmKCRtb2R1bGUsIHgsIC8pCi0tCgpFcnJvciBmdW5jdGlvbiBhdCB4LgAAAAAAZXJmYygkbW9kdWxlLCB4LCAvKQotLQoKQ29tcGxlbWVudGFyeSBlcnJvciBmdW5jdGlvbiBhdCB4LgAAAAAAAGV4cCgkbW9kdWxlLCB4LCAvKQotLQoKUmV0dXJuIGUgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiB4LgAAAAAAAABleHAyKCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gMiByYWlzZWQgdG8gdGhlIHBvd2VyIG9mIHguAAAAAAAAZXhwbTEoJG1vZHVsZSwgeCwgLykKLS0KClJldHVybiBleHAoeCktMS4KClRoaXMgZnVuY3Rpb24gYXZvaWRzIHRoZSBsb3NzIG9mIHByZWNpc2lvbiBpbnZvbHZlZCBpbiB0aGUgZGlyZWN0IGV2YWx1YXRpb24gb2YgZXhwKHgpLTEgZm9yIHNtYWxsIHguAAAAAAAAAAAAAAAAAAAAAGZhYnMoJG1vZHVsZSwgeCwgLykKLS0KClJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGZsb2F0IHguAAAAAAAAAAAAAAAAAAAAZmFjdG9yaWFsKCRtb2R1bGUsIG4sIC8pCi0tCgpGaW5kIG4hLgoKUmFpc2UgYSBWYWx1ZUVycm9yIGlmIHggaXMgbmVnYXRpdmUgb3Igbm9uLWludGVncmFsLgAAAAAAZmxvb3IoJG1vZHVsZSwgeCwgLykKLS0KClJldHVybiB0aGUgZmxvb3Igb2YgeCBhcyBhbiBJbnRlZ3JhbC4KClRoaXMgaXMgdGhlIGxhcmdlc3QgaW50ZWdlciA8PSB4LgAAAAAAAAAAAAAAAAAAAGZtb2QoJG1vZHVsZSwgeCwgeSwgLykKLS0KClJldHVybiBmbW9kKHgsIHkpLCBhY2NvcmRpbmcgdG8gcGxhdGZvcm0gQy4KCnggJSB5IG1heSBkaWZmZXIuAAAAAAAAAGZyZXhwKCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gdGhlIG1hbnRpc3NhIGFuZCBleHBvbmVudCBvZiB4LCBhcyBwYWlyIChtLCBlKS4KCm0gaXMgYSBmbG9hdCBhbmQgZSBpcyBhbiBpbnQsIHN1Y2ggdGhhdCB4ID0gbSAqIDIuKiplLgpJZiB4IGlzIDAsIG0gYW5kIGUgYXJlIGJvdGggMC4gIEVsc2UgMC41IDw9IGFicyhtKSA8IDEuMC4AAAAAAAAAAAAAAAAAAABmc3VtKCRtb2R1bGUsIHNlcSwgLykKLS0KClJldHVybiBhbiBhY2N1cmF0ZSBmbG9hdGluZyBwb2ludCBzdW0gb2YgdmFsdWVzIGluIHRoZSBpdGVyYWJsZSBzZXEuCgpBc3N1bWVzIElFRUUtNzU0IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMuAAAAAABnYW1tYSgkbW9kdWxlLCB4LCAvKQotLQoKR2FtbWEgZnVuY3Rpb24gYXQgeC4AAABnY2QoJG1vZHVsZSwgKmludGVnZXJzKQotLQoKR3JlYXRlc3QgQ29tbW9uIERpdmlzb3IuAAAAAAAAAAAAAAAAaHlwb3QoKmNvb3JkaW5hdGVzKSAtPiB2YWx1ZQoKTXVsdGlkaW1lbnNpb25hbCBFdWNsaWRlYW4gZGlzdGFuY2UgZnJvbSB0aGUgb3JpZ2luIHRvIGEgcG9pbnQuCgpSb3VnaGx5IGVxdWl2YWxlbnQgdG86CiAgICBzcXJ0KHN1bSh4KioyIGZvciB4IGluIGNvb3JkaW5hdGVzKSkKCkZvciBhIHR3byBkaW1lbnNpb25hbCBwb2ludCAoeCwgeSksIGdpdmVzIHRoZSBoeXBvdGVudXNlCnVzaW5nIHRoZSBQeXRoYWdvcmVhbiB0aGVvcmVtOiAgc3FydCh4KnggKyB5KnkpLgoKRm9yIGV4YW1wbGUsIHRoZSBoeXBvdGVudXNlIG9mIGEgMy80LzUgcmlnaHQgdHJpYW5nbGUgaXM6CgogICAgPj4+IGh5cG90KDMuMCwgNC4wKQogICAgNS4wCgAAAAAAAAAAAABpc2Nsb3NlKCRtb2R1bGUsIC8sIGEsIGIsICosIHJlbF90b2w9MWUtMDksIGFic190b2w9MC4wKQotLQoKRGV0ZXJtaW5lIHdoZXRoZXIgdHdvIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXJlIGNsb3NlIGluIHZhbHVlLgoKICByZWxfdG9sCiAgICBtYXhpbXVtIGRpZmZlcmVuY2UgZm9yIGJlaW5nIGNvbnNpZGVyZWQgImNsb3NlIiwgcmVsYXRpdmUgdG8gdGhlCiAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlcwogIGFic190b2wKICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCAiY2xvc2UiLCByZWdhcmRsZXNzIG9mIHRoZQogICAgbWFnbml0dWRlIG9mIHRoZSBpbnB1dCB2YWx1ZXMKClJldHVybiBUcnVlIGlmIGEgaXMgY2xvc2UgaW4gdmFsdWUgdG8gYiwgYW5kIEZhbHNlIG90aGVyd2lzZS4KCkZvciB0aGUgdmFsdWVzIHRvIGJlIGNvbnNpZGVyZWQgY2xvc2UsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbQptdXN0IGJlIHNtYWxsZXIgdGhhbiBhdCBsZWFzdCBvbmUgb2YgdGhlIHRvbGVyYW5jZXMuCgotaW5mLCBpbmYgYW5kIE5hTiBiZWhhdmUgc2ltaWxhcmx5IHRvIHRoZSBJRUVFIDc1NCBTdGFuZGFyZC4gIFRoYXQKaXMsIE5hTiBpcyBub3QgY2xvc2UgdG8gYW55dGhpbmcsIGV2ZW4gaXRzZWxmLiAgaW5mIGFuZCAtaW5mIGFyZQpvbmx5IGNsb3NlIHRvIHRoZW1zZWx2ZXMuAAAAAAAAAGlzZmluaXRlKCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB4IGlzIG5laXRoZXIgYW4gaW5maW5pdHkgbm9yIGEgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLgAAAAAAAAAAAAAAAABpc2luZigkbW9kdWxlLCB4LCAvKQotLQoKUmV0dXJuIFRydWUgaWYgeCBpcyBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGluZmluaXR5LCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLgAAAAAAAAAAAAAAAAAAaXNuYW4oJG1vZHVsZSwgeCwgLykKLS0KClJldHVybiBUcnVlIGlmIHggaXMgYSBOYU4gKG5vdCBhIG51bWJlciksIGFuZCBGYWxzZSBvdGhlcndpc2UuAAAAAAAAAAAAaXNxcnQoJG1vZHVsZSwgbiwgLykKLS0KClJldHVybiB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgaW5wdXQuAAAAAAAAAAAAAAAAAAAAbGNtKCRtb2R1bGUsICppbnRlZ2VycykKLS0KCkxlYXN0IENvbW1vbiBNdWx0aXBsZS4AAAAAAAAAAAAAAAAAAGxkZXhwKCRtb2R1bGUsIHgsIGksIC8pCi0tCgpSZXR1cm4geCAqICgyKippKS4KClRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIGludmVyc2Ugb2YgZnJleHAoKS4AAAAAAGxnYW1tYSgkbW9kdWxlLCB4LCAvKQotLQoKTmF0dXJhbCBsb2dhcml0aG0gb2YgYWJzb2x1dGUgdmFsdWUgb2YgR2FtbWEgZnVuY3Rpb24gYXQgeC4AAAAAAAAAAAAAAGxvZyh4LCBbYmFzZT1tYXRoLmVdKQpSZXR1cm4gdGhlIGxvZ2FyaXRobSBvZiB4IHRvIHRoZSBnaXZlbiBiYXNlLgoKSWYgdGhlIGJhc2Ugbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gKGJhc2UgZSkgb2YgeC4AAAAAAGxvZzFwKCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gdGhlIG5hdHVyYWwgbG9nYXJpdGhtIG9mIDEreCAoYmFzZSBlKS4KClRoZSByZXN1bHQgaXMgY29tcHV0ZWQgaW4gYSB3YXkgd2hpY2ggaXMgYWNjdXJhdGUgZm9yIHggbmVhciB6ZXJvLgAAAAAAAGxvZzEwKCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHguAAAAAABsb2cyKCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gdGhlIGJhc2UgMiBsb2dhcml0aG0gb2YgeC4AAAAAAAAAbW9kZigkbW9kdWxlLCB4LCAvKQotLQoKUmV0dXJuIHRoZSBmcmFjdGlvbmFsIGFuZCBpbnRlZ2VyIHBhcnRzIG9mIHguCgpCb3RoIHJlc3VsdHMgY2FycnkgdGhlIHNpZ24gb2YgeCBhbmQgYXJlIGZsb2F0cy4AAAAAAAAAAABwb3coJG1vZHVsZSwgeCwgeSwgLykKLS0KClJldHVybiB4Kip5ICh4IHRvIHRoZSBwb3dlciBvZiB5KS4AAAAAcmFkaWFucygkbW9kdWxlLCB4LCAvKQotLQoKQ29udmVydCBhbmdsZSB4IGZyb20gZGVncmVlcyB0byByYWRpYW5zLgAAAAAAAAAAAAAAAAByZW1haW5kZXIoJG1vZHVsZSwgeCwgeSwgLykKLS0KCkRpZmZlcmVuY2UgYmV0d2VlbiB4IGFuZCB0aGUgY2xvc2VzdCBpbnRlZ2VyIG11bHRpcGxlIG9mIHkuCgpSZXR1cm4geCAtIG4qeSB3aGVyZSBuKnkgaXMgdGhlIGNsb3Nlc3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LgpJbiB0aGUgY2FzZSB3aGVyZSB4IGlzIGV4YWN0bHkgaGFsZndheSBiZXR3ZWVuIHR3byBtdWx0aXBsZXMgb2YKeSwgdGhlIG5lYXJlc3QgZXZlbiB2YWx1ZSBvZiBuIGlzIHVzZWQuIFRoZSByZXN1bHQgaXMgYWx3YXlzIGV4YWN0LgBzaW4oJG1vZHVsZSwgeCwgLykKLS0KClJldHVybiB0aGUgc2luZSBvZiB4IChtZWFzdXJlZCBpbiByYWRpYW5zKS4AAAAAAAAAAAAAAAAAAHNpbmgoJG1vZHVsZSwgeCwgLykKLS0KClJldHVybiB0aGUgaHlwZXJib2xpYyBzaW5lIG9mIHguAAAAAAAAAABzcXJ0KCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHguAAAAAAAAAAAAAAAAdGFuKCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gdGhlIHRhbmdlbnQgb2YgeCAobWVhc3VyZWQgaW4gcmFkaWFucykuAAAAAAAAAAAAAAB0YW5oKCRtb2R1bGUsIHgsIC8pCi0tCgpSZXR1cm4gdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiB4LgAAAAAAdHJ1bmMoJG1vZHVsZSwgeCwgLykKLS0KClRydW5jYXRlcyB0aGUgUmVhbCB4IHRvIHRoZSBuZWFyZXN0IEludGVncmFsIHRvd2FyZCAwLgoKVXNlcyB0aGUgX190cnVuY19fIG1hZ2ljIG1ldGhvZC4AAAAAAAAAAAAAAAAAAABwcm9kKCRtb2R1bGUsIGl0ZXJhYmxlLCAvLCAqLCBzdGFydD0xKQotLQoKQ2FsY3VsYXRlIHRoZSBwcm9kdWN0IG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIGlucHV0IGl0ZXJhYmxlLgoKVGhlIGRlZmF1bHQgc3RhcnQgdmFsdWUgZm9yIHRoZSBwcm9kdWN0IGlzIDEuCgpXaGVuIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIHRoZSBzdGFydCB2YWx1ZS4gIFRoaXMgZnVuY3Rpb24gaXMKaW50ZW5kZWQgc3BlY2lmaWNhbGx5IGZvciB1c2Ugd2l0aCBudW1lcmljIHZhbHVlcyBhbmQgbWF5IHJlamVjdApub24tbnVtZXJpYyB0eXBlcy4AAAAAAAAAAAAAAHBlcm0oJG1vZHVsZSwgbiwgaz1Ob25lLCAvKQotLQoKTnVtYmVyIG9mIHdheXMgdG8gY2hvb3NlIGsgaXRlbXMgZnJvbSBuIGl0ZW1zIHdpdGhvdXQgcmVwZXRpdGlvbiBhbmQgd2l0aCBvcmRlci4KCkV2YWx1YXRlcyB0byBuISAvIChuIC0gaykhIHdoZW4gayA8PSBuIGFuZCBldmFsdWF0ZXMKdG8gemVybyB3aGVuIGsgPiBuLgoKSWYgayBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIE5vbmUsIHRoZW4gayBkZWZhdWx0cyB0byBuCmFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucyBuIS4KClJhaXNlcyBUeXBlRXJyb3IgaWYgZWl0aGVyIG9mIHRoZSBhcmd1bWVudHMgYXJlIG5vdCBpbnRlZ2Vycy4KUmFpc2VzIFZhbHVlRXJyb3IgaWYgZWl0aGVyIG9mIHRoZSBhcmd1bWVudHMgYXJlIG5lZ2F0aXZlLgAAAAAAAABjb21iKCRtb2R1bGUsIG4sIGssIC8pCi0tCgpOdW1iZXIgb2Ygd2F5cyB0byBjaG9vc2UgayBpdGVtcyBmcm9tIG4gaXRlbXMgd2l0aG91dCByZXBldGl0aW9uIGFuZCB3aXRob3V0IG9yZGVyLgoKRXZhbHVhdGVzIHRvIG4hIC8gKGshICogKG4gLSBrKSEpIHdoZW4gayA8PSBuIGFuZCBldmFsdWF0ZXMKdG8gemVybyB3aGVuIGsgPiBuLgoKQWxzbyBjYWxsZWQgdGhlIGJpbm9taWFsIGNvZWZmaWNpZW50IGJlY2F1c2UgaXQgaXMgZXF1aXZhbGVudAp0byB0aGUgY29lZmZpY2llbnQgb2Ygay10aCB0ZXJtIGluIHBvbHlub21pYWwgZXhwYW5zaW9uIG9mIHRoZQpleHByZXNzaW9uICgx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ZXNzIG9mIHRoZQogICAgbWFnbml0dWRlIG9mIHRoZSBpbnB1dCB2YWx1ZXMKClJldHVybiBUcnVlIGlmIGEgaXMgY2xvc2UgaW4gdmFsdWUgdG8gYiwgYW5kIEZhbHNlIG90aGVyd2lzZS4KCkZvciB0aGUgdmFsdWVzIHRvIGJlIGNvbnNpZGVyZWQgY2xvc2UsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbSBtdXN0IGJlCnNtYWxsZXIgdGhhbiBhdCBsZWFzdCBvbmUgb2YgdGhlIHRvbGVyYW5jZXMuCgotaW5mLCBpbmYgYW5kIE5hTiBiZWhhdmUgc2ltaWxhcmx5IHRvIHRoZSBJRUVFIDc1NCBTdGFuZGFyZC4gVGhhdCBpcywgTmFOIGlzCm5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLgAAAAAAAAAAAAAAAAAAAABpc2Zpbml0ZSgkbW9kdWxlLCB6LCAvKQotLQoKUmV0dXJuIFRydWUgaWYgYm90aCB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIHogYXJlIGZpbml0ZSwgZWxzZSBGYWxzZS4AAAAAAAAAaXNpbmYoJG1vZHVsZSwgeiwgLykKLS0KCkNoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IGlzIGluZmluaXRlLgBpc25hbigkbW9kdWxlLCB6LCAvKQotLQoKQ2hlY2tzIGlmIHRoZSByZWFsIG9yIGltYWdpbmFyeSBwYXJ0IG9mIHogbm90IGEgbnVtYmVyIChOYU4pLgAAAAAAAAAAAABsb2coJG1vZHVsZSwgeiwgYmFzZT08dW5yZXByZXNlbnRhYmxlPiwgLykKLS0KCmxvZyh6WywgYmFzZV0pIC0+IHRoZSBsb2dhcml0aG0gb2YgeiB0byB0aGUgZ2l2ZW4gYmFzZS4KCklmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHouAGxvZzEwKCRtb2R1bGUsIHosIC8pCi0tCgpSZXR1cm4gdGhlIGJhc2UtMTAgbG9nYXJpdGhtIG9mIHouAAAAAABwaGFzZSgkbW9kdWxlLCB6LCAvKQotLQoKUmV0dXJuIGFyZ3VtZW50LCBhbHNvIGtub3duIGFzIHRoZSBwaGFzZSBhbmdsZSwgb2YgYSBjb21wbGV4LgAAAAAAAAAAAABwb2xhcigkbW9kdWxlLCB6LCAvKQotLQoKQ29udmVydCBhIGNvbXBsZXggZnJvbSByZWN0YW5ndWxhciBjb29yZGluYXRlcyB0byBwb2xhciBjb29yZGluYXRlcy4KCnIgaXMgdGhlIGRpc3RhbmNlIGZyb20gMCBhbmQgcGhpIHRoZSBwaGFzZSBhbmdsZS4AAAAAAAAAAAAAAAAAAAAAcmVjdCgkbW9kdWxlLCByLCBwaGksIC8pCi0tCgpDb252ZXJ0IGZyb20gcG9sYXIgY29vcmRpbmF0ZXMgdG8gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMuAAAAAAAAAAAAc2luKCRtb2R1bGUsIHosIC8pCi0tCgpSZXR1cm4gdGhlIHNpbmUgb2Ygei4AAAAAc2luaCgkbW9kdWxlLCB6LCAvKQotLQoKUmV0dXJuIHRoZSBoeXBlcmJvbGljIHNpbmUgb2Ygei4AAAAAAAAAAHNxcnQoJG1vZHVsZSwgeiwgLykKLS0KClJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygei4AAAAAAAAAAAAAAAB0YW4oJG1vZHVsZSwgeiwgLykKLS0KClJldHVybiB0aGUgdGFuZ2VudCBvZiB6LgB0YW5oKCRtb2R1bGUsIHosIC8pCi0tCgpSZXR1cm4gdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiB6LgAAAAAAQWNjZWxlcmF0b3JzIGZvciB0aGUgc3RhdGlzdGljcyBtb2R1bGUuCgAAAAAAAAAAX25vcm1hbF9kaXN0X2ludl9jZGYoJG1vZHVsZSwgcCwgbXUsIHNpZ21hLCAvKQotLQoKAAAAAAAAAAAAAAAAAFRoZSByZXN1bHQgb2YgZGF0ZS5pc29jYWxlbmRhcigpIG9yIGRhdGV0aW1lLmlzb2NhbGVuZGFyKCkKClRoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZgogICgoeWVhciwgd2Vlaywgd2Vla2RheSkKb3IgdmlhIHRoZSBvYmplY3QgYXR0cmlidXRlcyBhcyBuYW1lZCBpbiB0aGUgYWJvdmUgdHVwbGUuAEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHRpbWUgem9uZSBpbmZvIG9iamVjdHMuAAAAAAAfAAAAHAAAAB8AAAAeAAAAHwAAAB4AAAAfAAAAHwAAAB4AAAAfAAAAHgAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAA7AAAAWgAAAHgAAACXAAAAtQAAANQAAADzAAAAEQEAADABAABOAQAAAAAAAAAAAAAAAAAARml4ZWQgb2Zmc2V0IGZyb20gVVRDIGltcGxlbWVudGF0aW9uIG9mIHR6aW5mby4AZGF0ZSh5ZWFyLCBtb250aCwgZGF5KSAtLT4gZGF0ZSBvYmplY3QAAAAAAAAAAAAAZnJvbXRpbWVzdGFtcCgkdHlwZSwgdGltZXN0YW1wLCAvKQotLQoKQ3JlYXRlIGEgZGF0ZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wLgoKVGhlIHRpbWVzdGFtcCBpcyBhIG51bWJlciwgZS5nLiBjcmVhdGVkIHZpYSB0aW1lLnRpbWUoKSwgdGhhdCBpcyBpbnRlcnByZXRlZAphcyBsb2NhbCB0aW1lLgAAAAAAAABkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5WywgaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWyx0emluZm9dXV1dXSkKClRoZSB5ZWFyLCBtb250aCBhbmQgZGF5IGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQuIHR6aW5mbyBtYXkgYmUgTm9uZSwgb3IgYW4KaW5zdGFuY2Ugb2YgYSB0emluZm8gc3ViY2xhc3MuIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRzLgoAAG5vdygkdHlwZSwgLywgdHo9Tm9uZSkKLS0KClJldHVybnMgbmV3IGRhdGV0aW1lIG9iamVjdCByZXByZXNlbnRpbmcgY3VycmVudCB0aW1lIGxvY2FsIHRvIHR6LgoKICB0egogICAgVGltZXpvbmUgb2JqZWN0LgoKSWYgbm8gdHogaXMgc3BlY2lmaWVkLCB1c2VzIGxvY2FsIHRpbWV6b25lLgAAAAAAAAAAAAAAoIYBABAnAADoAwAAZAAAAAoAAAAAAAAAAAAAAAAAAAB0aW1lKFtob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLCB0emluZm9dXV1dXSkgLS0+IGEgdGltZSBvYmplY3QKCkFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuIGluc3RhbmNlIG9mCmEgdHppbmZvIHN1YmNsYXNzLiBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50cy4KAAAAAAAAAAAARGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRldGltZSB2YWx1ZXMuCgp0aW1lZGVsdGEoZGF5cz0wLCBzZWNvbmRzPTAsIG1pY3Jvc2Vjb25kcz0wLCBtaWxsaXNlY29uZHM9MCwgbWludXRlcz0wLCBob3Vycz0wLCB3ZWVrcz0wKQoKQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwgYW5kIGRlZmF1bHQgdG8gMC4KQXJndW1lbnRzIG1heSBiZSBpbnRlZ2VycyBvciBmbG9hdHMsIGFuZCBtYXkgYmUgcG9zaXRpdmUgb3IgbmVnYXRpdmUuAAAAAAAAAAAAAERlY2ltYWwodmFsdWU9IjAiLCBjb250ZXh0PU5vbmUpCi0tCgpDb25zdHJ1Y3QgYSBuZXcgRGVjaW1hbCBvYmplY3QuICd2YWx1ZScgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsCm9yIGFub3RoZXIgRGVjaW1hbCBvYmplY3QuIElmIG5vIHZhbHVlIGlzIGdpdmVuLCByZXR1cm4gRGVjaW1hbCgnMCcpLiBUaGUKY29udGV4dCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbnZlcnNpb24gYW5kIGlzIG9ubHkgcGFzc2VkIHRvIGRldGVybWluZSBpZgp0aGUgSW52YWxpZE9wZXJhdGlvbiB0cmFwIGlzIGFjdGl2ZS4KCgAAAAAAAABleHAoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSkKLS0KClJldHVybiB0aGUgdmFsdWUgb2YgdGhlIChuYXR1cmFsKSBleHBvbmVudGlhbCBmdW5jdGlvbiBlKip4IGF0IHRoZSBnaXZlbgpudW1iZXIuICBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlIGFuZCB0aGUgcmVzdWx0CmlzIGNvcnJlY3RseSByb3VuZGVkLgoKAAAAAAAAbG4oJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSkKLS0KClJldHVybiB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuIFRoZSBmdW5jdGlvbiBhbHdheXMKdXNlcyB0aGUgUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQuCgoAAABsb2cxMCgkc2VsZiwgLywgY29udGV4dD1Ob25lKQotLQoKUmV0dXJuIHRoZSBiYXNlIHRlbiBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuIFRoZSBmdW5jdGlvbiBhbHdheXMgdXNlcyB0aGUKUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQuCgoAAAAAAAAAAG5leHRfbWludXMoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSkKLS0KClJldHVybiB0aGUgbGFyZ2VzdCBudW1iZXIgcmVwcmVzZW50YWJsZSBpbiB0aGUgZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlCmN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZQpnaXZlbiBvcGVyYW5kLgoKAAAAAAAAAABuZXh0X3BsdXMoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSkKLS0KClJldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlIGdpdmVuIGNvbnRleHQgKG9yIGluIHRoZQpjdXJyZW50IGRlZmF1bHQgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIGdpdmVuKSB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZQpnaXZlbiBvcGVyYW5kLgoKAAAAAAAAAAAAbm9ybWFsaXplKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpCi0tCgpOb3JtYWxpemUgdGhlIG51bWJlciBieSBzdHJpcHBpbmcgdGhlIHJpZ2h0bW9zdCB0cmFpbGluZyB6ZXJvcyBhbmQKY29udmVydGluZyBhbnkgcmVzdWx0IGVxdWFsIHRvIERlY2ltYWwoJzAnKSB0byBEZWNpbWFsKCcwZTAnKS4gIFVzZWQKZm9yIHByb2R1Y2luZyBjYW5vbmljYWwgdmFsdWVzIGZvciBtZW1iZXJzIG9mIGFuIGVxdWl2YWxlbmNlIGNsYXNzLgpGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMzIuMTAwJykgYW5kIERlY2ltYWwoJzAuMzIxMDAwZSsyJykgYm90aCBub3JtYWxpemUKdG8gdGhlIGVxdWl2YWxlbnQgdmFsdWUgRGVjaW1hbCgnMzIuMScpLgoKAAAAAAAAAAAAAAB0b19pbnRlZ3JhbCgkc2VsZiwgLywgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKQotLQoKSWRlbnRpY2FsIHRvIHRoZSB0b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gIFRoZSB0b19pbnRlZ3JhbCgpIG5hbWUgaGFzIGJlZW4Ka2VwdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zLgoKAAAAAAAAAAAAAAAAAAB0b19pbnRlZ3JhbF9leGFjdCgkc2VsZiwgLywgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKQotLQoKUm91bmQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZCBhcyBhcHByb3ByaWF0ZSBpZgpyb3VuZGluZyBvY2N1cnMuICBUaGUgcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIKaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGVuIHRoZQpyb3VuZGluZyBtb2RlIG9mIHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dCBpcyB1c2VkLgoKAAAAAAAAdG9faW50ZWdyYWxfdmFsdWUoJHNlbGYsIC8sIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkKLS0KClJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgd2l0aG91dCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkLiAgVGhlCnJvdW5kaW5nIG1vZGUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcm91bmRpbmcgcGFyYW1ldGVyIGlmIGdpdmVuLCBlbHNlIGJ5CnRoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZQpvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC4KCgBzcXJ0KCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpCi0tCgpSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHRoZSBhcmd1bWVudCB0byBmdWxsIHByZWNpc2lvbi4gVGhlIHJlc3VsdCBpcwpjb3JyZWN0bHkgcm91bmRlZCB1c2luZyB0aGUgUk9VTkRfSEFMRl9FVkVOIHJvdW5kaW5nIG1vZGUuCgoAAAAAAAAAAAAAAGNvbXBhcmUoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpCi0tCgpDb21wYXJlIHNlbGYgdG8gb3RoZXIuICBSZXR1cm4gYSBkZWNpbWFsIHZhbHVlOgoKICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJykKICAgIGEgPCBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnLTEnKQogICAgYSA9PSBiICAgICAgICAgID09PiBEZWNpbWFsKCcwJykKICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpCgoAAAAAAAAAAAAAAABjb21wYXJlX3NpZ25hbCgkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSkKLS0KCklkZW50aWNhbCB0byBjb21wYXJlLCBleGNlcHQgdGhhdCBhbGwgTmFOcyBzaWduYWwuCgoAAAAAAAAAAAAAbWF4KCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKQotLQoKTWF4aW11bSBvZiBzZWxmIGFuZCBvdGhlci4gIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMKbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC4KCgAAAG1heF9tYWcoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpCi0tCgpTaW1pbGFyIHRvIHRoZSBtYXgoKSBtZXRob2QsIGJ1dCB0aGUgY29tcGFyaXNvbiBpcyBkb25lIHVzaW5nIHRoZSBhYnNvbHV0ZQp2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLgoKAG1pbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSkKLS0KCk1pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMKbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC4KCgAAAABtaW5fbWFnKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKQotLQoKU2ltaWxhciB0byB0aGUgbWluKCkgbWV0aG9kLCBidXQgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGUKdmFsdWVzIG9mIHRoZSBvcGVyYW5kcy4KCgBuZXh0X3Rvd2FyZCgkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSkKLS0KCklmIHRoZSB0d28gb3BlcmFuZHMgYXJlIHVuZXF1YWwsIHJldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8gdGhlIGZpcnN0Cm9wZXJhbmQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuICBJZiBib3RoIG9wZXJhbmRzIGFyZQpudW1lcmljYWxseSBlcXVhbCwgcmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoIHRoZSBzaWduIHNldAp0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuCgoAAAAAAAAAAHF1YW50aXplKCRzZWxmLCAvLCBleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkKLS0KClJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIHJvdW5kaW5nIGFuZCBoYXZpbmcgdGhlCmV4cG9uZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4KCiAgICA+Pj4gRGVjaW1hbCgnMS40MTQyMTM1NicpLnF1YW50aXplKERlY2ltYWwoJzEuMDAwJykpCiAgICBEZWNpbWFsKCcxLjQxNCcpCgpVbmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgaWYgdGhlIGxlbmd0aCBvZiB0aGUgY29lZmZpY2llbnQgYWZ0ZXIgdGhlIHF1YW50aXplCm9wZXJhdGlvbiB3b3VsZCBiZSBncmVhdGVyIHRoYW4gcHJlY2lzaW9uLCB0aGVuIGFuIEludmFsaWRPcGVyYXRpb24gaXMgc2lnbmFsZWQuClRoaXMgZ3VhcmFudGVlcyB0aGF0LCB1bmxlc3MgdGhlcmUgaXMgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgcXVhbnRpemVkIGV4cG9uZW50CmlzIGFsd2F5cyBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQuCgpBbHNvIHVubGlrZSBvdGhlciBvcGVyYXRpb25zLCBxdWFudGl6ZSBuZXZlciBzaWduYWxzIFVuZGVyZmxvdywgZXZlbiBpZiB0aGUKcmVzdWx0IGlzIHN1Ym5vcm1hbCBhbmQgaW5leGFjdC4KCklmIHRoZSBleHBvbmVudCBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgbGFyZ2VyIHRoYW4gdGhhdCBvZiB0aGUgZmlyc3QsIHRoZW4Kcm91bmRpbmcgbWF5IGJlIG5lY2Vzc2FyeS4gSW4gdGhpcyBjYXNlLCB0aGUgcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZQpyb3VuZGluZyBhcmd1bWVudCBpZiBnaXZlbiwgZWxzZSBieSB0aGUgZ2l2ZW4gY29udGV4dCBhcmd1bWVudDsgaWYgbmVpdGhlcgphcmd1bWVudCBpcyBnaXZlbiwgdGhlIHJvdW5kaW5nIG1vZGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgY29udGV4dCBpcyB1c2VkLgoKAAAAAAAAAHJlbWFpbmRlcl9uZWFyKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKQotLQoKUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBkaXZpZGluZyBzZWxmIGJ5IG90aGVyLiAgVGhpcyBkaWZmZXJzIGZyb20Kc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlIHJlbWFpbmRlciBpcyBjaG9zZW4gc28gYXMgdG8gbWluaW1pemUKaXRzIGFic29sdXRlIHZhbHVlLiBNb3JlIHByZWNpc2VseSwgdGhlIHJldHVybiB2YWx1ZSBpcyBzZWxmIC0gbiAqIG90aGVyCndoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0byB0aGUgZXhhY3QgdmFsdWUgb2Ygc2VsZiAvIG90aGVyLCBhbmQKaWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmUgaXMgY2hvc2VuLgoKSWYgdGhlIHJlc3VsdCBpcyB6ZXJvIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUgc2lnbiBvZiBzZWxmLgoKAAAAAAAAAAAAAAAAAAAAAGZtYSgkc2VsZiwgLywgb3RoZXIsIHRoaXJkLCBjb250ZXh0PU5vbmUpCi0tCgpGdXNlZCBtdWx0aXBseS1hZGQuICBSZXR1cm4gc2VsZipvdGhlcit0aGlyZCB3aXRoIG5vIHJvdW5kaW5nIG9mIHRoZQppbnRlcm1lZGlhdGUgcHJvZHVjdCBzZWxmKm90aGVyLgoKICAgID4+PiBEZWNpbWFsKDIpLmZtYSgzLCA1KQogICAgRGVjaW1hbCgnMTEnKQoKCgAAAAAAAAAAAABpc19jYW5vbmljYWwoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgY2Fub25pY2FsIGFuZCBGYWxzZSBvdGhlcndpc2UuICBDdXJyZW50bHksCmEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMgY2Fub25pY2FsLCBzbyB0aGlzIG9wZXJhdGlvbiBhbHdheXMgcmV0dXJucwpUcnVlLgoKAAAAAAAAAAAAAABpc19maW5pdGUoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBmaW5pdGUgbnVtYmVyLCBhbmQgRmFsc2UgaWYgdGhlIGFyZ3VtZW50CmlzIGluZmluaXRlIG9yIGEgTmFOLgoKAAAAAAAAAGlzX2luZmluaXRlKCRzZWxmLCAvKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSBhbmQKRmFsc2Ugb3RoZXJ3aXNlLgoKAAAAAAAAAAAAAAAAaXNfbmFuKCRzZWxmLCAvKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgKHF1aWV0IG9yIHNpZ25hbGluZykgTmFOIGFuZCBGYWxzZQpvdGhlcndpc2UuCgoAAAAAAAAAAAAAAGlzX3FuYW4oJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBxdWlldCBOYU4sIGFuZCBGYWxzZSBvdGhlcndpc2UuCgoAAAAAAAAAAGlzX3NuYW4oJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBzaWduYWxpbmcgTmFOIGFuZCBGYWxzZSBvdGhlcndpc2UuCgoAAAAAAGlzX3NpZ25lZCgkc2VsZiwgLykKLS0KClJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBoYXMgYSBuZWdhdGl2ZSBzaWduIGFuZCBGYWxzZSBvdGhlcndpc2UuCk5vdGUgdGhhdCBib3RoIHplcm9zIGFuZCBOYU5zIGNhbiBjYXJyeSBzaWducy4KCgAAAGlzX3plcm8oJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHplcm8gYW5kIEZhbHNlCm90aGVyd2lzZS4KCgAAAAAAAABpc19ub3JtYWwoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSkKLS0KClJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIG5vcm1hbCBmaW5pdGUgbm9uLXplcm8gbnVtYmVyIHdpdGggYW4KYWRqdXN0ZWQgZXhwb25lbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIEVtaW4uIFJldHVybiBGYWxzZSBpZiB0aGUKYXJndW1lbnQgaXMgemVybywgc3Vibm9ybWFsLCBpbmZpbml0ZSBvciBhIE5hTi4KCgAAAAAAAAAAAAAAAABpc19zdWJub3JtYWwoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSkKLS0KClJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZCBGYWxzZSBvdGhlcndpc2UuIEEgbnVtYmVyIGlzCnN1Ym5vcm1hbCBpZiBpdCBpcyBub24temVybywgZmluaXRlLCBhbmQgaGFzIGFuIGFkanVzdGVkIGV4cG9uZW50IGxlc3MKdGhhbiBFbWluLgoKAAAAAAAAAAAAYWRqdXN0ZWQoJHNlbGYsIC8pCi0tCgpSZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHRoZSBudW1iZXIuICBEZWZpbmVkIGFzIGV4cCArIGRpZ2l0cyAtIDEuCgoAAAAAAAAAAAAAAAAAAGNhbm9uaWNhbCgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgY2Fub25pY2FsIGVuY29kaW5nIG9mIHRoZSBhcmd1bWVudC4gIEN1cnJlbnRseSwgdGhlIGVuY29kaW5nCm9mIGEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMgY2Fub25pY2FsLCBzbyB0aGlzIG9wZXJhdGlvbiByZXR1cm5zIGl0cwphcmd1bWVudCB1bmNoYW5nZWQuCgoAAGNvbmp1Z2F0ZSgkc2VsZiwgLykKLS0KClJldHVybiBzZWxmLgoKAAAAAAAAAAAAAHJhZGl4KCRzZWxmLCAvKQotLQoKUmV0dXJuIERlY2ltYWwoMTApLCB0aGUgcmFkaXggKGJhc2UpIGluIHdoaWNoIHRoZSBEZWNpbWFsIGNsYXNzIGRvZXMKYWxsIGl0cyBhcml0aG1ldGljLiBJbmNsdWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uLgoKAAAAAAAAAAAAAAAAAAAAY29weV9hYnMoJHNlbGYsIC8pCi0tCgpSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkKY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkIGFuZCBubyByb3VuZGluZyBpcyBwZXJmb3JtZWQuCgoAAABjb3B5X25lZ2F0ZSgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgbmVnYXRpb24gb2YgdGhlIGFyZ3VtZW50LiAgVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSBjb250ZXh0CmFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQgYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4KCgAAAAAAAGxvZ2IoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSkKLS0KCkZvciBhIG5vbi16ZXJvIG51bWJlciwgcmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiB0aGUgb3BlcmFuZCBhcyBhCkRlY2ltYWwgaW5zdGFuY2UuICBJZiB0aGUgb3BlcmFuZCBpcyBhIHplcm8sIHRoZW4gRGVjaW1hbCgnLUluZmluaXR5JykgaXMKcmV0dXJuZWQgYW5kIHRoZSBEaXZpc2lvbkJ5WmVybyBjb25kaXRpb24gaXMgcmFpc2VkLiBJZiB0aGUgb3BlcmFuZCBpcwphbiBpbmZpbml0eSB0aGVuIERlY2ltYWwoJ0luZmluaXR5JykgaXMgcmV0dXJuZWQuCgoAAABsb2dpY2FsX2ludmVydCgkc2VsZiwgLywgY29udGV4dD1Ob25lKQotLQoKUmV0dXJuIHRoZSBkaWdpdC13aXNlIGludmVyc2lvbiBvZiB0aGUgKGxvZ2ljYWwpIG9wZXJhbmQuCgoAAAAAAAAAAAAAbnVtYmVyX2NsYXNzKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpCi0tCgpSZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgY2xhc3Mgb2YgdGhlIG9wZXJhbmQuICBUaGUgcmV0dXJuZWQgdmFsdWUKaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGVuIHN0cmluZ3M6CgogICAgKiAnLUluZmluaXR5JywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlIGluZmluaXR5LgogICAgKiAnLU5vcm1hbCcsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIG5lZ2F0aXZlIG5vcm1hbCBudW1iZXIuCiAgICAqICctU3Vibm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlIGFuZCBzdWJub3JtYWwuCiAgICAqICctWmVybycsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIG5lZ2F0aXZlIHplcm8uCiAgICAqICcrWmVybycsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHBvc2l0aXZlIHplcm8uCiAgICAqICcrU3Vibm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIHBvc2l0aXZlIGFuZCBzdWJub3JtYWwuCiAgICAqICcrTm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcG9zaXRpdmUgbm9ybWFsIG51bWJlci4KICAgICogJytJbmZpbml0eScsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBwb3NpdGl2ZSBpbmZpbml0eS4KICAgICogJ05hTicsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiAoTm90IGEgTnVtYmVyKS4KICAgICogJ3NOYU4nLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBzaWduYWxpbmcgTmFOLgoKCgAAAAAAAAAAAAAAAAAAdG9fZW5nX3N0cmluZygkc2VsZiwgLywgY29udGV4dD1Ob25lKQotLQoKQ29udmVydCB0byBhbiBlbmdpbmVlcmluZy10eXBlIHN0cmluZy4gIEVuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudAp3aGljaCBpcyBhIG11bHRpcGxlIG9mIDMsIHNvIHRoZXJlIGFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsCnBsYWNlLiBGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMTIzRSsxJykgaXMgY29udmVydGVkIHRvIERlY2ltYWwoJzEuMjNFKzMnKS4KClRoZSB2YWx1ZSBvZiBjb250ZXh0LmNhcGl0YWxzIGRldGVybWluZXMgd2hldGhlciB0aGUgZXhwb25lbnQgc2lnbiBpcyBsb3dlcgpvciB1cHBlciBjYXNlLiBPdGhlcndpc2UsIHRoZSBjb250ZXh0IGRvZXMgbm90IGFmZmVjdCB0aGUgb3BlcmF0aW9uLgoKAABjb21wYXJlX3RvdGFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKQotLQoKQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4KdGhlaXIgbnVtZXJpY2FsIHZhbHVlLiAgU2ltaWxhciB0byB0aGUgY29tcGFyZSgpIG1ldGhvZCwgYnV0IHRoZSByZXN1bHQKZ2l2ZXMgYSB0b3RhbCBvcmRlcmluZyBvbiBEZWNpbWFsIGluc3RhbmNlcy4gIFR3byBEZWNpbWFsIGluc3RhbmNlcyB3aXRoCnRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYnV0IGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnMgY29tcGFyZSB1bmVxdWFsCmluIHRoaXMgb3JkZXJpbmc6CgogICAgPj4+IERlY2ltYWwoJzEyLjAnKS5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyJykpCiAgICBEZWNpbWFsKCctMScpCgpRdWlldCBhbmQgc2lnbmFsaW5nIE5hTnMgYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlIHRvdGFsIG9yZGVyaW5nLiBUaGUgcmVzdWx0Cm9mIHRoaXMgZnVuY3Rpb24gaXMgRGVjaW1hbCgnMCcpIGlmIGJvdGggb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiwKRGVjaW1hbCgnLTEnKSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBsb3dlciBpbiB0aGUgdG90YWwgb3JkZXIgdGhhbiB0aGUgc2Vjb25kLAphbmQgRGVjaW1hbCgnMScpIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGhpZ2hlciBpbiB0aGUgdG90YWwgb3JkZXIgdGhhbiB0aGUKc2Vjb25kIG9wZXJhbmQuIFNlZSB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBvZiB0aGUgdG90YWwgb3JkZXIuCgpUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZAphbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLiBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlCkludmFsaWRPcGVyYXRpb24gaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS4KCgAAY29tcGFyZV90b3RhbF9tYWcoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpCi0tCgpDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiByYXRoZXIgdGhhbiB0aGVpcgp2YWx1ZSBhcyBpbiBjb21wYXJlX3RvdGFsKCksIGJ1dCBpZ25vcmluZyB0aGUgc2lnbiBvZiBlYWNoIG9wZXJhbmQuCgp4LmNvbXBhcmVfdG90YWxfbWFnKHkpIGlzIGVxdWl2YWxlbnQgdG8geC5jb3B5X2FicygpLmNvbXBhcmVfdG90YWwoeS5jb3B5X2FicygpKS4KClRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkCmFuZCBubyByb3VuZGluZyBpcyBwZXJmb3JtZWQuIEFzIGFuIGV4Y2VwdGlvbiwgdGhlIEMgdmVyc2lvbiBtYXkgcmFpc2UKSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LgoKAGNvcHlfc2lnbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSkKLS0KClJldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlCnNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLiBGb3IgZXhhbXBsZToKCiAgICA+Pj4gRGVjaW1hbCgnMi4zJykuY29weV9zaWduKERlY2ltYWwoJy0xLjUnKSkKICAgIERlY2ltYWwoJy0yLjMnKQoKVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQKYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZQpJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuCgoAAAAAAAAAAAAAAAAAAAAAc2FtZV9xdWFudHVtKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKQotLQoKVGVzdCB3aGV0aGVyIHNlbGYgYW5kIG90aGVyIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQgb3Igd2hldGhlciBib3RoIGFyZSBOYU4uCgpUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZAphbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLiBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlCkludmFsaWRPcGVyYXRpb24gaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS4KCgAAAAAAAAAAAAAAAGxvZ2ljYWxfYW5kKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKQotLQoKUmV0dXJuIHRoZSBkaWdpdC13aXNlICdhbmQnIG9mIHRoZSB0d28gKGxvZ2ljYWwpIG9wZXJhbmRzLgoKAAAAAABsb2dpY2FsX29yKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKQotLQoKUmV0dXJuIHRoZSBkaWdpdC13aXNlICdvcicgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuCgoAAAAAAAAAbG9naWNhbF94b3IoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpCi0tCgpSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgJ2V4Y2x1c2l2ZSBvcicgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuCgoAAAAAAAAAAAAAAAByb3RhdGUoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpCi0tCgpSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudApzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBvcGVyYW5kLiAgVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmUgYW4gaW50ZWdlciBpbgp0aGUgcmFuZ2UgLXByZWNpc2lvbiB0aHJvdWdoIHByZWNpc2lvbi4gVGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQKb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byByb3RhdGUuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcwpwb3NpdGl2ZSB0aGVuIHJvdGF0aW9uIGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2Ugcm90YXRpb24gaXMgdG8gdGhlIHJpZ2h0LgpUaGUgY29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgaXMgcGFkZGVkIG9uIHRoZSBsZWZ0IHdpdGggemVyb3MgdG8KbGVuZ3RoIHByZWNpc2lvbiBpZiBuZWNlc3NhcnkuIFRoZSBzaWduIGFuZCBleHBvbmVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUKdW5jaGFuZ2VkLgoKAABzY2FsZWIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpCi0tCgpSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgZXhwb25lbnQgYWRqdXN0ZWQgdGhlIHNlY29uZC4gIEVxdWl2YWxlbnRseSwKcmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIG11bHRpcGxpZWQgYnkgMTAqKm90aGVyLiBUaGUgc2Vjb25kIG9wZXJhbmQgbXVzdCBiZQphbiBpbnRlZ2VyLgoKAAAAAAAAAAAAAAAAAHNoaWZ0KCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKQotLQoKUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQKc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIgaW4KdGhlIHJhbmdlIC1wcmVjaXNpb24gdGhyb3VnaCBwcmVjaXNpb24uIFRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kCm9wZXJhbmQgZ2l2ZXMgdGhlIG51bWJlciBvZiBwbGFjZXMgdG8gc2hpZnQuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcwpwb3NpdGl2ZSwgdGhlbiB0aGUgc2hpZnQgaXMgdG8gdGhlIGxlZnQ7IG90aGVyd2lzZSB0aGUgc2hpZnQgaXMgdG8gdGhlCnJpZ2h0LiBEaWdpdHMgc2hpZnRlZCBpbnRvIHRoZSBjb2VmZmljaWVudCBhcmUgemVyb3MuIFRoZSBzaWduIGFuZCBleHBvbmVudApvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUgdW5jaGFuZ2VkLgoKAAAAAAAAAAAAAGZyb21fZmxvYXQoJHR5cGUsIGYsIC8pCi0tCgpDbGFzcyBtZXRob2QgdGhhdCBjb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuClNpbmNlIDAuMSBpcyBub3QgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCwKRGVjaW1hbC5mcm9tX2Zsb2F0KDAuMSkgaXMgbm90IHRoZSBzYW1lIGFzIERlY2ltYWwoJzAuMScpLgoKICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQogICAgRGVjaW1hbCgnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JykKICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKQogICAgRGVjaW1hbCgnTmFOJykKICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKQogICAgRGVjaW1hbCgnSW5maW5pdHknKQogICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKQogICAgRGVjaW1hbCgnLUluZmluaXR5JykKCgoAAAAAAAAAAAAAAGFzX3R1cGxlKCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgdHVwbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci4KCgAAAAAAAAAAAAAAYXNfaW50ZWdlcl9yYXRpbygkc2VsZiwgLykKLS0KCkRlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIC0+IChpbnQsIGludCkKClJldHVybiBhIHBhaXIgb2YgaW50ZWdlcnMsIHdob3NlIHJhdGlvIGlzIGV4YWN0bHkgZXF1YWwgdG8gdGhlIG9yaWdpbmFsCkRlY2ltYWwgYW5kIHdpdGggYSBwb3NpdGl2ZSBkZW5vbWluYXRvci4gVGhlIHJhdGlvIGlzIGluIGxvd2VzdCB0ZXJtcy4KUmFpc2UgT3ZlcmZsb3dFcnJvciBvbiBpbmZpbml0aWVzIGFuZCBhIFZhbHVlRXJyb3Igb24gTmFOcy4KCgAAAAAAAAAAAAAAQ29udGV4dChwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsIEVtaW49Tm9uZSwgRW1heD1Ob25lLCBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLCB0cmFwcz1Ob25lKQotLQoKVGhlIGNvbnRleHQgYWZmZWN0cyBhbG1vc3QgYWxsIG9wZXJhdGlvbnMgYW5kIGNvbnRyb2xzIHJvdW5kaW5nLApPdmVyL1VuZGVyZmxvdywgcmFpc2luZyBvZiBleGNl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ZXJvLCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSBvcmlnaW5hbCBkaXZpZGVuZC4KCgByZW1haW5kZXJfbmVhcigkc2VsZiwgeCwgeSwgLykKLS0KClJldHVybiB4IC0geSAqIG4sIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGUgZXhhY3QgdmFsdWUgb2YgeCAvIHkKKGlmIHRoZSByZXN1bHQgaXMgMCB0aGVuIGl0cyBzaWduIHdpbGwgYmUgdGhlIHNpZ24gb2YgeCkuCgoAAAAAAAAAAHN1YnRyYWN0KCRzZWxmLCB4LCB5LCAvKQotLQoKUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS4KCgAAAAAAAAAAAAAAcG93ZXIoJHNlbGYsIC8sIGEsIGIsIG1vZHVsbz1Ob25lKQotLQoKQ29tcHV0ZSBhKipiLiBJZiAnYScgaXMgbmVnYXRpdmUsIHRoZW4gJ2InIG11c3QgYmUgaW50ZWdyYWwuIFRoZSByZXN1bHQKd2lsbCBiZSBpbmV4YWN0IHVubGVzcyAnYScgaXMgaW50ZWdyYWwgYW5kIHRoZSByZXN1bHQgaXMgZmluaXRlIGFuZCBjYW4KYmUgZXhwcmVzc2VkIGV4YWN0bHkgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLiAgSW4gdGhlIFB5dGhvbiB2ZXJzaW9uIHRoZQpyZXN1bHQgaXMgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLCBpbiB0aGUgQyB2ZXJzaW9uIHRoZSByZXN1bHQgaXMgYWxtb3N0CmFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZC4KCklmIG1vZHVsbyBpcyBnaXZlbiwgY29tcHV0ZSAoYSoqYikgJSBtb2R1bG8uIFRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zCmhvbGQ6CgogICAgKiBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWwKICAgICogJ2InIG11c3QgYmUgbm9ubmVnYXRpdmUKICAgICogYXQgbGVhc3Qgb25lIG9mICdhJyBvciAnYicgbXVzdCBiZSBub256ZXJvCiAgICAqIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIGxlc3MgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZQoKCgAAAAAAAAAAAAAAAGZtYSgkc2VsZiwgeCwgeSwgeiwgLykKLS0KClJldHVybiB4IG11bHRpcGxpZWQgYnkgeSwgcGx1cyB6LgoKAABFdGlueSgkc2VsZiwgLykKLS0KClJldHVybiBhIHZhbHVlIGVxdWFsIHRvIEVtaW4gLSBwcmVjICsgMSwgd2hpY2ggaXMgdGhlIG1pbmltdW0gZXhwb25lbnQgdmFsdWUKZm9yIHN1Ym5vcm1hbCByZXN1bHRzLiAgV2hlbiB1bmRlcmZsb3cgb2NjdXJzLCB0aGUgZXhwb25lbnQgaXMgc2V0IHRvIEV0aW55LgoKAEV0b3AoJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBFbWF4IC0gcHJlYyArIDEuICBUaGlzIGlzIHRoZSBtYXhpbXVtIGV4cG9uZW50CmlmIHRoZSBfY2xhbXAgZmllbGQgb2YgdGhlIGNvbnRleHQgaXMgc2V0IHRvIDEgKElFRUUgY2xhbXAgbW9kZSkuICBFdG9wKCkKbXVzdCBub3QgYmUgbmVnYXRpdmUuCgoAAAAAAHJhZGl4KCRzZWxmLCAvKQotLQoKUmV0dXJuIDEwLgoKAAAAAAAAAAAAAAAAAAAAAGlzX2Nhbm9uaWNhbCgkc2VsZiwgeCwgLykKLS0KClJldHVybiBUcnVlIGlmIHggaXMgY2Fub25pY2FsLCBGYWxzZSBvdGhlcndpc2UuCgoAaXNfZmluaXRlKCRzZWxmLCB4LCAvKQotLQoKUmV0dXJuIFRydWUgaWYgeCBpcyBmaW5pdGUsIEZhbHNlIG90aGVyd2lzZS4KCgAAAAAAAABpc19pbmZpbml0ZSgkc2VsZiwgeCwgLykKLS0KClJldHVybiBUcnVlIGlmIHggaXMgaW5maW5pdGUsIEZhbHNlIG90aGVyd2lzZS4KCgAAAGlzX25hbigkc2VsZiwgeCwgLykKLS0KClJldHVybiBUcnVlIGlmIHggaXMgYSBxTmFOIG9yIHNOYU4sIEZhbHNlIG90aGVyd2lzZS4KCgAAaXNfbm9ybWFsKCRzZWxmLCB4LCAvKQotLQoKUmV0dXJuIFRydWUgaWYgeCBpcyBhIG5vcm1hbCBudW1iZXIsIEZhbHNlIG90aGVyd2lzZS4KCgAAAAAAAAAAAAAAAAAAaXNfcW5hbigkc2VsZiwgeCwgLykKLS0KClJldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS4KCgAAAABpc19zaWduZWQoJHNlbGYsIHgsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB4IGlzIG5lZ2F0aXZlLCBGYWxzZSBvdGhlcndpc2UuCgoAAAAAAGlzX3NuYW4oJHNlbGYsIHgsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgc2lnbmFsaW5nIE5hTiwgRmFsc2Ugb3RoZXJ3aXNlLgoKAAAAAAAAAAAAAAAAAAAAAGlzX3N1Ym5vcm1hbCgkc2VsZiwgeCwgLykKLS0KClJldHVybiBUcnVlIGlmIHggaXMgc3Vibm9ybWFsLCBGYWxzZSBvdGhlcndpc2UuCgoAaXNfemVybygkc2VsZiwgeCwgLykKLS0KClJldHVybiBUcnVlIGlmIHggaXMgYSB6ZXJvLCBGYWxzZSBvdGhlcndpc2UuCgoAAAAAAAAAAABjYW5vbmljYWwoJHNlbGYsIHgsIC8pCi0tCgpSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgeC4KCgAAAAAAAAAAY29weV9hYnMoJHNlbGYsIHgsIC8pCi0tCgpSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBzZXQgdG8gMC4KCgAAAAAAAAAAAABjb3B5X2RlY2ltYWwoJHNlbGYsIHgsIC8pCi0tCgpSZXR1cm4gYSBjb3B5IG9mIERlY2ltYWwgeC4KCgAAAAAAY29weV9uZWdhdGUoJHNlbGYsIHgsIC8pCi0tCgpSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC4KCgAAAAAAAABsb2diKCRzZWxmLCB4LCAvKQotLQoKUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELgoKAAAAAAAAAAAAAAAAAABsb2dpY2FsX2ludmVydCgkc2VsZiwgeCwgLykKLS0KCkludmVydCBhbGwgZGlnaXRzIG9mIHguCgoAAAAAAAAAbnVtYmVyX2NsYXNzKCRzZWxmLCB4LCAvKQotLQoKUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguCgoAAAAAAAAAAAB0b19zY2lfc3RyaW5nKCRzZWxmLCB4LCAvKQotLQoKQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZyB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uLgoKAAAAAAAAAAB0b19lbmdfc3RyaW5nKCRzZWxmLCB4LCAvKQotLQoKQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgZW5naW5lZXJpbmcgbm90YXRpb24uCgoAAAAAAABjb21wYXJlX3RvdGFsKCRzZWxmLCB4LCB5LCAvKQotLQoKQ29tcGFyZSB4IGFuZCB5IHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uLgoKAAAAAAAAAABjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgeCwgeSwgLykKLS0KCkNvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiwgaWdub3Jpbmcgc2lnbi4KCgAAAAAAY29weV9zaWduKCRzZWxmLCB4LCB5LCAvKQotLQoKQ29weSB0aGUgc2lnbiBmcm9tIHkgdG8geC4KCgAAAAAAAGxvZ2ljYWxfYW5kKCRzZWxmLCB4LCB5LCAvKQotLQoKRGlnaXQtd2lzZSBhbmQgb2YgeCBhbmQgeS4KCgAAAABsb2dpY2FsX29yKCRzZWxmLCB4LCB5LCAvKQotLQoKRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LgoKAAAAAAAAbG9naWNhbF94b3IoJHNlbGYsIHgsIHksIC8pCi0tCgpEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LgoKAAAAAHJvdGF0ZSgkc2VsZiwgeCwgeSwgLykKLS0KClJldHVybiBhIGNvcHkgb2YgeCwgcm90YXRlZCBieSB5IHBsYWNlcy4KCgAAAAAAAAAAAAAAc2FtZV9xdWFudHVtKCRzZWxmLCB4LCB5LCAvKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIHR3byBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lIGV4cG9uZW50LgoKAAAAAAAAc2NhbGViKCRzZWxmLCB4LCB5LCAvKQotLQoKUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlIHRvIGl0cyBleHAuCgoAc2hpZnQoJHNlbGYsIHgsIHksIC8pCi0tCgpSZXR1cm4gYSBjb3B5IG9mIHgsIHNoaWZ0ZWQgYnkgeSBwbGFjZXMuCgoAAAAAAAAAAAAAAABjbGVhcl9mbGFncygkc2VsZiwgLykKLS0KClJlc2V0IGFsbCBmbGFncyB0byBGYWxzZS4KCgAAAAAAAAAAAAAAY2xlYXJfdHJhcHMoJHNlbGYsIC8pCi0tCgpTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLgoKAAAAAAAAAAAAAAAAAGNvcHkoJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSBkdXBsaWNhdGUgb2YgdGhlIGNvbnRleHQgd2l0aCBhbGwgZmxhZ3MgY2xlYXJlZC4KCgAAY3JlYXRlX2RlY2ltYWwoJHNlbGYsIG51bT0iMCIsIC8pCi0tCgpDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIG51bSwgdXNpbmcgc2VsZiBhcyB0aGUgY29udGV4dC4gVW5saWtlIHRoZQpEZWNpbWFsIGNvbnN0cnVjdG9yLCB0aGlzIGZ1bmN0aW9uIG9ic2VydmVzIHRoZSBjb250ZXh0IGxpbWl0cy4KCgAAAAAAAAAAAAAAY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgkc2VsZiwgZiwgLykKLS0KCkNyZWF0ZSBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGZyb20gZmxvYXQgZi4gIFVubGlrZSB0aGUgRGVjaW1hbC5mcm9tX2Zsb2F0KCkKY2xhc3MgbWV0aG9kLCB0aGlzIGZ1bmN0aW9uIG9ic2VydmVzIHRoZSBjb250ZXh0IGxpbWl0cy4KCgAAHAAAAD9CDwDBvfD/vgsAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAABDIGRlY2ltYWwgYXJpdGhtZXRpYyBtb2R1bGUAAAAAAGdldGNvbnRleHQoJG1vZHVsZSwgLykKLS0KCkdldCB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQuCgoAAABzZXRjb250ZXh0KCRtb2R1bGUsIGNvbnRleHQsIC8pCi0tCgpTZXQgYSBuZXcgZGVmYXVsdCBjb250ZXh0LgoKAAAAAAAAAAAAAAAAAAAAAGxvY2FsY29udGV4dCgkbW9kdWxlLCAvLCBjdHg9Tm9uZSwgKiprd2FyZ3MpCi0tCgpSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB3aWxsIHNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHRvIGEgY29weSBvZiBjdHgKb24gZW50cnkgdG8gdGhlIHdpdGgtc3RhdGVtZW50IGFuZCByZXN0b3JlIHRoZSBwcmV2aW91cyBkZWZhdWx0IGNvbnRleHQgd2hlbgpleGl0aW5nIHRoZSB3aXRoLXN0YXRlbWVudC4gSWYgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQsIGEgY29weSBvZiB0aGUgY3VycmVudApkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC4KCgAAAAAAAAAAAAAAAAAAQ29udmVyc2lvbiBiZXR3ZWVuIGJpbmFyeSBkYXRhIGFuZCBBU0NJSQAAAAAAAAAAYTJiX3V1KCRtb2R1bGUsIGRhdGEsIC8pCi0tCgpEZWNvZGUgYSBsaW5lIG9mIHV1ZW5jb2RlZCBkYXRhLgAAAGIyYV91dSgkbW9kdWxlLCBkYXRhLCAvLCAqLCBiYWNrdGljaz1GYWxzZSkKLS0KClV1ZW5jb2RlIGxpbmUgb2YgZGF0YS4AAAAAAAAAAAAAYTJiX2Jhc2U2NCgkbW9kdWxlLCBkYXRhLCAvLCAqLCBzdHJpY3RfbW9kZT1GYWxzZSkKLS0KCkRlY29kZSBhIGxpbmUgb2YgYmFzZTY0IGRhdGEuCgogIHN0cmljdF9tb2RlCiAgICBXaGVuIHNldCB0byBUcnVlLCBieXRlcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgYmFzZTY0IHN0YW5kYXJkIGFyZSBub3QgYWxsb3dlZC4KICAgIFRoZSBzYW1lIGFwcGxpZXMgdG8gZXhjZXNzIGRhdGEgYWZ0ZXIgcGFkZGluZyAoPSAvID09KS4AAAAAAAAAAAAAAGIyYV9iYXNlNjQoJG1vZHVsZSwgZGF0YSwgLywgKiwgbmV3bGluZT1UcnVlKQotLQoKQmFzZTY0LWNvZGUgbGluZSBvZiBkYXRhLgAAAAAAYTJiX2hleCgkbW9kdWxlLCBoZXhzdHIsIC8pCi0tCgpCaW5hcnkgZGF0YSBvZiBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbi4KCmhleHN0ciBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgaGV4IGRpZ2l0cyAodXBwZXIgb3IgbG93ZXIgY2FzZSkuClRoaXMgZnVuY3Rpb24gaXMgYWxzbyBhdmFpbGFibGUgYXMgInVuaGV4bGlmeSgpIi4AAAAAAAAAAAAAAGIyYV9oZXgoJG1vZHVsZSwgLywgZGF0YSwgc2VwPTx1bnJlcHJlc2VudGFibGU+LCBieXRlc19wZXJfc2VwPTEpCi0tCgpIZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBiaW5hcnkgZGF0YS4KCiAgc2VwCiAgICBBbiBvcHRpb25hbCBzaW5nbGUgY2hhcmFjdGVyIG9yIGJ5dGUgdG8gc2VwYXJhdGUgaGV4IGJ5dGVzLgogIGJ5dGVzX3Blcl9zZXAKICAgIEhvdyBtYW55IGJ5dGVzIGJldHdlZW4gc2VwYXJhdG9ycy4gIFBvc2l0aXZlIHZhbHVlcyBjb3VudCBmcm9tIHRoZQogICAgcmlnaHQsIG5lZ2F0aXZlIHZhbHVlcyBjb3VudCBmcm9tIHRoZSBsZWZ0LgoKVGhlIHJldHVybiB2YWx1ZSBpcyBhIGJ5dGVzIG9iamVjdC4gIFRoaXMgZnVuY3Rpb24gaXMgYWxzbwphdmFpbGFibGUgYXMgImhleGxpZnkoKSIuCgpFeGFtcGxlOgo+Pj4gYmluYXNjaWkuYjJhX2hleChiJ1x4YjlceDAxXHhlZicpCmInYjkwMWVmJwo+Pj4gYmluYXNjaWkuaGV4bGlmeShiJ1x4YjlceDAxXHhlZicsICc6JykKYidiOTowMTplZicKPj4+IGJpbmFzY2lpLmIyYV9oZXgoYidceGI5XHgwMVx4ZWYnLCBiJ18nLCAyKQpiJ2I5XzAxZWYnAGhleGxpZnkoJG1vZHVsZSwgLywgZGF0YSwgc2VwPTx1bnJlcHJlc2VudGFibGU+LCBieXRlc19wZXJfc2VwPTEpCi0tCgpIZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBiaW5hcnkgZGF0YS4KCiAgc2VwCiAgICBBbiBvcHRpb25hbCBzaW5nbGUgY2hhcmFjdGVyIG9yIGJ5dGUgdG8gc2VwYXJhdGUgaGV4IGJ5dGVzLgogIGJ5dGVzX3Blcl9zZXAKICAgIEhvdyBtYW55IGJ5dGVzIGJldHdlZW4gc2VwYXJhdG9ycy4gIFBvc2l0aXZlIHZhbHVlcyBjb3VudCBmcm9tIHRoZQogICAgcmlnaHQsIG5lZ2F0aXZlIHZhbHVlcyBjb3VudCBmcm9tIHRoZSBsZWZ0LgoKVGhlIHJldHVybiB2YWx1ZSBpcyBhIGJ5dGVzIG9iamVjdC4gIFRoaXMgZnVuY3Rpb24gaXMgYWxzbwphdmFpbGFibGUgYXMgImIyYV9oZXgoKSIuAAAAAAAAAAAAAAAAdW5oZXhsaWZ5KCRtb2R1bGUsIGhleHN0ciwgLykKLS0KCkJpbmFyeSBkYXRhIG9mIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uLgoKaGV4c3RyIG11c3QgY29udGFpbiBhbiBldmVuIG51bWJlciBvZiBoZXggZGlnaXRzICh1cHBlciBvciBsb3dlciBjYXNlKS4AAAAAAAAAAAAAAGNyY19ocXgoJG1vZHVsZSwgZGF0YSwgY3JjLCAvKQotLQoKQ29tcHV0ZSBDUkMtQ0NJVFQgaW5jcmVtZW50YWxseS4AAAAAAAAAAAAAAAAAY3JjMzIoJG1vZHVsZSwgZGF0YSwgY3JjPTAsIC8pCi0tCgpDb21wdXRlIENSQy0zMiBpbmNyZW1lbnRhbGx5LgAAAAAAAAAAAAAAAAAAAABhMmJfcXAoJG1vZHVsZSwgLywgZGF0YSwgaGVhZGVyPUZhbHNlKQotLQoKRGVjb2RlIGEgc3RyaW5nIG9mIHFwLWVuY29kZWQgZGF0YS4AAGIyYV9xcCgkbW9kdWxlLCAvLCBkYXRhLCBxdW90ZXRhYnM9RmFsc2UsIGlzdGV4dD1UcnVlLCBoZWFkZXI9RmFsc2UpCi0tCgpFbmNvZGUgYSBzdHJpbmcgdXNpbmcgcXVvdGVkLXByaW50YWJsZSBlbmNvZGluZy4KCk9uIGVuY29kaW5nLCB3aGVuIGlzdGV4dCBpcyBzZXQsIG5ld2xpbmVzIGFyZSBub3QgZW5jb2RlZCwgYW5kIHdoaXRlCnNwYWNlIGF0IGVuZCBvZiBsaW5lcyBpcy4gIFdoZW4gaXN0ZXh0IGlzIG5vdCBzZXQsIFxyIGFuZCBcbiAoQ1IvTEYpCmFyZSBib3RoIGVuY29kZWQuICBXaGVuIHF1b3RldGFicyBpcyBzZXQsIHNwYWNlIGFuZCB0YWJzIGFyZSBlbmNvZGVkLgAAAAAAAP////////////////////////////////////////////////////////8+////PzQ1Njc4OTo7PD3///8A////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvAAAAAAAAAAAAAAAAAAAAAAAAIRBCIGMwhEClUMZg53AIgSmRSqFrsYzBrdHO4e/xMRIQAnMyUiK1UpRC93LWYjmTGIN7s1qjvdOcw//z3uNiJEM0IAQBFOZkx3SkRIVUaqVLtSiFCZXu5c/1rMWN1VM2ciYRFjAG13b2ZpVWtEZbt3qnGZc4h9/3/ued17zHxEjlWIZop3hACGEYAigjOMzJ7dmO6a/5SIlpmQqpK7n1WtRKt3qWanEaUAozOhIq/dvcy7/7nut5m1iLO7saq6Zsh3zkTMVcIiwDPGAMQRyu7Y/97M3N3SqtC71ojUmdl362btVe9E4TPjIuUR5wDp//vu/d3/zPG786r1mfeI+IkamByrHroQzRLcFO8W/hgBChAMIw4yAEUCVARnBnYLmDmJP7o9qzPcMc03/jXvOxApAS8yLSMjVCFFJ3YlZy6rXLpaiViYVu9U/lLNUNxeI0wySgFIEEZnRHZCRUBUTbp/q3mYe4l1/nfvcdxzzX0ybyNpEGsBZXZnZ2FUY0VkzZbckO+S/pyJnpiYq5q6lEWGVIBngnaMAY4QiCOKMofctc2z/rHvv5i9ibu6uau3VKVFo3ahZ68QrQGrMqkjou/Q/tbN1Nzaq9i63oncmNJnwHbGRcRUyiPIMs4BzBDB/vPv9dz3zfm6+6v9mP+J8XbjZ+VU50XpMusj7RDvAebWQ1KCRtb2R1bGUsIC8sIHN0cmluZz1iJycsICosIHVzZWRmb3JzZWN1cml0eT1UcnVlKQotLQoKUmV0dXJuIGEgbmV3IE1ENSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgAAAABjb3B5KCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuAAAAAAAAAAAAAAAAZGlnZXN0KCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBieXRlcyBvYmplY3QuAGhleGRpZ2VzdCgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4AAAAAAAAAAAAAAAAAAHVwZGF0ZSgkc2VsZiwgb2JqLCAvKQotLQoKVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuAAAAAAAAAAAAAAAAAHNoYTEoJG1vZHVsZSwgLywgc3RyaW5nPWInJywgKiwgdXNlZGZvcnNlY3VyaXR5PVRydWUpCi0tCgpSZXR1cm4gYSBuZXcgU0hBMSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgAAY29weSgkc2VsZiwgLykKLS0KClJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgAAAAAAAAAAAAAAAGRpZ2VzdCgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgYnl0ZXMgb2JqZWN0LgBoZXhkaWdlc3QoJHNlbGYsIC8pCi0tCgpSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuAAAAAAAAAAAAAAAAAAB1cGRhdGUoJHNlbGYsIG9iaiwgLykKLS0KClVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgAAAAAAAAAAAAAAAABzaGEyNTYoJG1vZHVsZSwgLywgc3RyaW5nPWInJywgKiwgdXNlZGZvcnNlY3VyaXR5PVRydWUpCi0tCgpSZXR1cm4gYSBuZXcgU0hBLTI1NiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgAAAAAAAAAAAAAAAABzaGEyMjQoJG1vZHVsZSwgLywgc3RyaW5nPWInJywgKiwgdXNlZGZvcnNlY3VyaXR5PVRydWUpCi0tCgpSZXR1cm4gYSBuZXcgU0hBLTIyNCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgAAAAAAAAAAAAAAAABjb3B5KCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuAAAAAAAAAAAAAAAAZGlnZXN0KCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBieXRlcyBvYmplY3QuAGhleGRpZ2VzdCgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4AAAAAAAAAAAAAAAAAAHVwZGF0ZSgkc2VsZiwgb2JqLCAvKQotLQoKVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuAAAAAAAAAAAAAAAAAHNoYTUxMigkbW9kdWxlLCAvLCBzdHJpbmc9YicnLCAqLCB1c2VkZm9yc2VjdXJpdHk9VHJ1ZSkKLS0KClJldHVybiBhIG5ldyBTSEEtNTEyIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuAAAAAAAAAAAAAAAAAHNoYTM4NCgkbW9kdWxlLCAvLCBzdHJpbmc9YicnLCAqLCB1c2VkZm9yc2VjdXJpdHk9VHJ1ZSkKLS0KClJldHVybiBhIG5ldyBTSEEtMzg0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuAAAAAAAAAAAAAAAAAGNvcHkoJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4AAAAAAAAAAAAAAABkaWdlc3QoJHNlbGYsIC8pCi0tCgpSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIGJ5dGVzIG9iamVjdC4AaGV4ZGlnZXN0KCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgAAAAAAAAAAAAAAAAAAdXBkYXRlKCRzZWxmLCBvYmosIC8pCi0tCgpVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4AAAAAAAAAAAAAAAAAc2hhM18yMjQoW2RhdGFdLCAqLCB1c2VkZm9yc2VjdXJpdHk9VHJ1ZSkgLT4gU0hBMyBvYmplY3QKClJldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4AAAAAAABjb3B5KCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuAAAAAAAAAAAAAAAAZGlnZXN0KCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBieXRlcyBvYmplY3QuAGhleGRpZ2VzdCgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4AAAAAAAAAAAAAAAAAAHVwZGF0ZSgkc2VsZiwgZGF0YSwgLykKLS0KClVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgYnl0ZXMtbGlrZSBvYmplY3QuAAEAAAAAAAAAgoAAAAAAAACKgAAAAAAAgACAAIAAAACAi4AAAAAAAAABAACAAAAAAIGAAIAAAACACYAAAAAAAICKAAAAAAAAAIgAAAAAAAAACYAAgAAAAAAKAACAAAAAAIuAAIAAAAAAiwAAAAAAAICJgAAAAAAAgAOAAAAAAACAAoAAAAAAAICAAAAAAAAAgAqAAAAAAAAACgAAgAAAAICBgACAAAAAgICAAAAAAACAAQAAgAAAAAAIgACAAAAAgAEAAAADAAAABgAAAAoAAAAPAAAAFQAAABwAAAAkAAAALQAAADcAAAACAAAADgAAABsAAAApAAAAOAAAAAgAAAAZAAAAKwAAAD4AAAASAAAAJwAAAD0AAAAUAAAALAAAAAoAAAAHAAAACwAAABEAAAASAAAAAwAAAAUAAAAQAAAACAAAABUAAAAYAAAABAAAAA8AAAAXAAAAEwAAAA0AAAAMAAAAAgAAABQAAAAOAAAAFgAAAAkAAAAGAAAAAQAAAHNoYTNfMjU2KFtkYXRhXSwgKiwgdXNlZGZvcnNlY3VyaXR5PVRydWUpIC0+IFNIQTMgb2JqZWN0CgpSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgMzIgYnl0ZXMuAAAAAAAAc2hhM18zODQoW2RhdGFdLCAqLCB1c2VkZm9yc2VjdXJpdHk9VHJ1ZSkgLT4gU0hBMyBvYmplY3QKClJldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA0OCBieXRlcy4AAAAAAABzaGEzXzUxMihbZGF0YV0sICosIHVzZWRmb3JzZWN1cml0eT1UcnVlKSAtPiBTSEEzIG9iamVjdAoKUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDY0IGJ5dGVzLgAAAAAAAHNoYWtlXzEyOChbZGF0YV0sICosIHVzZWRmb3JzZWN1cml0eT1UcnVlKSAtPiBTSEFLRSBvYmplY3QKClJldHVybiBhIG5ldyBTSEFLRSBoYXNoIG9iamVjdC4AAAAAAGRpZ2VzdCgkc2VsZiwgbGVuZ3RoLCAvKQotLQoKUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBieXRlcyBvYmplY3QuAAAAAAAAAAAAaGV4ZGlnZXN0KCRzZWxmLCBsZW5ndGgsIC8pCi0tCgpSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuAAAAAAAAc2hha2VfMjU2KFtkYXRhXSwgKiwgdXNlZGZvcnNlY3VyaXR5PVRydWUpIC0+IFNIQUtFIG9iamVjdAoKUmV0dXJuIGEgbmV3IFNIQUtFIGhhc2ggb2JqZWN0LgAAAAAAX2JsYWtlMmIgcHJvdmlkZXMgQkxBS0UyYiBmb3IgaGFzaGxpYgoAAAAAAAAAAAAACMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gW2JsYWtlMmIoZGF0YT1iJycsIC8sICosIGRpZ2VzdF9zaXplPV9ibGFrZTIuYmxha2UyYi5NQVhfRElHRVNUX1NJWkUsCiAgICAgICAga2V5PWInJywgc2FsdD1iJycsIHBlcnNvbj1iJycsIGZhbm91dD0xLCBkZXB0aD0xLCBsZWFmX3NpemU9MCwKICAgICAgICBub2RlX29mZnNldD0wLCBub2RlX2RlcHRoPTAsIGlubmVyX3NpemU9MCwgbGFzdF9ub2RlPUZhbHNlLAogICAgICAgIHVzZWRmb3JzZWN1cml0eT1UcnVlKQotLQoKUmV0dXJuIGEgbmV3IEJMQUtFMmIgaGFzaCBvYmplY3QuAAAAAAAAAAAAAAAAAGNvcHkoJHNlbGYsIC8pCi0tCgpSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4AAAAAAAAAAAAAAABkaWdlc3QoJHNlbGYsIC8pCi0tCgpSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIGJ5dGVzIG9iamVjdC4AaGV4ZGlnZXN0KCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgAAAAAAAAAAAAAAAAAAdXBkYXRlKCRzZWxmLCBkYXRhLCAvKQotLQoKVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBieXRlcy1saWtlIG9iamVjdC4AZ+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FtibGFrZTJzKGRhdGE9YicnLCAvLCAqLCBkaWdlc3Rfc2l6ZT1fYmxha2UyLmJsYWtlMnMuTUFYX0RJR0VTVF9TSVpFLAogICAgICAgIGtleT1iJycsIHNhbHQ9YicnLCBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsCiAgICAgICAgbm9kZV9vZmZzZXQ9MCwgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSwKICAgICAgICB1c2VkZm9yc2VjdXJpdHk9VHJ1ZSkKLS0KClJldHVybiBhIG5ldyBCTEFLRTJzIGhhc2ggb2JqZWN0LgAAAAAAAAAAAAAAAABjb3B5KCRzZWxmLCAvKQotLQoKUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuAAAAAAAAAAAAAAAAZGlnZXN0KCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBieXRlcyBvYmplY3QuAGhleGRpZ2VzdCgkc2VsZiwgLykKLS0KClJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4AAAAAAAAAAAAAAAAAAHVwZGF0ZSgkc2VsZiwgZGF0YSwgLykKLS0KClVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgYnl0ZXMtbGlrZSBvYmplY3QuAFB5dGhvbiB3cmFwcGVyIGZvciBFeHBhdCBwYXJzZXIuAAAAAAAAAAAAAAAAAAAAAFBhcnNlckNyZWF0ZSgkbW9kdWxlLCAvLCBlbmNvZGluZz1Ob25lLCBuYW1lc3BhY2Vfc2VwYXJhdG9yPU5vbmUsCiAgICAgICAgICAgICBpbnRlcm49PHVucmVwcmVzZW50YWJsZT4pCi0tCgpSZXR1cm4gYSBuZXcgWE1MIHBhcnNlciBvYmplY3QuAAAAAEVycm9yU3RyaW5nKCRtb2R1bGUsIGNvZGUsIC8pCi0tCgpSZXR1cm5zIHN0cmluZyBlcnJvciBmb3IgZ2l2ZW4gbnVtYmVyLgBYTUwgcGFyc2VyAAAAAAAAAAAAAAAAAFBhcnNlKCRzZWxmLCBkYXRhLCBpc2ZpbmFsPUZhbHNlLCAvKQotLQoKUGFyc2UgWE1MIGRhdGEuCgpgaXNmaW5hbCcgc2hvdWxkIGJlIHRydWUgYXQgZW5kIG9mIGlucHV0LgAAAAAAAAAAAAAAAABQYXJzZUZpbGUoJHNlbGYsIGZpbGUsIC8pCi0tCgpQYXJzZSBYTUwgZGF0YSBmcm9tIGZpbGUtbGlrZSBvYmplY3QuAAAAAAAAAAAAAAAAAFNldEJhc2UoJHNlbGYsIGJhc2UsIC8pCi0tCgpTZXQgdGhlIGJhc2UgVVJMIGZvciB0aGUgcGFyc2VyLgAAAABHZXRCYXNlKCRzZWxmLCAvKQotLQoKUmV0dXJuIGJhc2UgVVJMIHN0cmluZyBmb3IgdGhlIHBhcnNlci4AAAAAR2V0SW5wdXRDb250ZXh0KCRzZWxmLCAvKQotLQoKUmV0dXJuIHRoZSB1bnRyYW5zbGF0ZWQgdGV4dCBvZiB0aGUgaW5wdXQgdGhhdCBjYXVzZWQgdGhlIGN1cnJlbnQgZXZlbnQuCgpJZiB0aGUgZXZlbnQgd2FzIGdlbmVyYXRlZCBieSBhIGxhcmdlIGFtb3VudCBvZiB0ZXh0IChzdWNoIGFzIGEgc3RhcnQgdGFnCmZvciBhbiBlbGVtZW50IHdpdGggbWFueSBhdHRyaWJ1dGVzKSwgbm90IGFsbCBvZiB0aGUgdGV4dCBtYXkgYmUgYXZhaWxhYmxlLgAAAEV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlKCRzZWxmLCBjb250ZXh0LCBlbmNvZGluZz08dW5yZXByZXNlbnRhYmxlPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLykKLS0KCkNyZWF0ZSBhIHBhcnNlciBmb3IgcGFyc2luZyBhbiBleHRlcm5hbCBlbnRpdHkgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyLgAAAAAAAAAAU2V0UGFyYW1FbnRpdHlQYXJzaW5nKCRzZWxmLCBmbGFnLCAvKQotLQoKQ29udHJvbHMgcGFyc2luZyBvZiBwYXJhbWV0ZXIgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZXh0ZXJuYWwgRFREIHN1YnNldCkuCgpQb3NzaWJsZSBmbGFnIHZhbHVlcyBhcmUgWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX05FVkVSLApYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfVU5MRVNTX1NUQU5EQUxPTkUgYW5kClhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19BTFdBWVMuIFJldHVybnMgdHJ1ZSBpZiBzZXR0aW5nIHRoZSBmbGFnCndhcyBzdWNjZXNzZnVsLgAAAAAAAAAAAAAAAAAAAABVc2VGb3JlaWduRFREKCRzZWxmLCBmbGFnPVRydWUsIC8pCi0tCgpBbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIHByb3ZpZGUgYW4gYXJ0aWZpY2lhbCBleHRlcm5hbCBzdWJzZXQgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgaW5zdGFuY2UuCgpUaGlzIHJlYWRpbHkgYWxsb3dzIHRoZSB1c2Ugb2YgYSAnZGVmYXVsdCcgZG9jdW1lbnQgdHlwZSBjb250cm9sbGVkIGJ5IHRoZQphcHBsaWNhdGlvbiwgd2hpbGUgc3RpbGwgZ2V0dGluZyB0aGUgYWR2YW50YWdlIG9mIHByb3ZpZGluZyBkb2N1bWVudCB0eXBlCmluZm9ybWF0aW9uIHRvIHRoZSBwYXJzZXIuICdmbGFnJyBkZWZhdWx0cyB0byBUcnVlIGlmIG5vdCBwcm92aWRlZC4AAAAAAABfc2V0X2ZhY3RvcmllcygkbW9kdWxlLCBjb21tZW50X2ZhY3RvcnksIHBpX2ZhY3RvcnksIC8pCi0tCgpDaGFuZ2UgdGhlIGZhY3RvcmllcyB1c2VkIHRvIGNyZWF0ZSBjb21tZW50cyBhbmQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCgpGb3IgaW50ZXJuYWwgdXNlIG9ubHkuAAAAZGF0YSgkc2VsZiwgZGF0YSwgLykKLS0KCgAAAAAAAABzdGFydCgkc2VsZiwgdGFnLCBhdHRycywgLykKLS0KCgAAAAAAAAAAAAAAAAAAAABlbmQoJHNlbGYsIHRhZywgLykKLS0KCgAAAAAAAAAAAGNvbW1lbnQoJHNlbGYsIHRleHQsIC8pCi0tCgoAAAAAcGkoJHNlbGYsIHRhcmdldCwgdGV4dD1Ob25lLCAvKQotLQoKAAAAAAAAAAAAAAAAY2xvc2UoJHNlbGYsIC8pCi0tCgoAAAAAAAAAAAAAAABjbGVhcigkc2VsZiwgLykKLS0KCgAAAAAAAAAAAAAAAGdldCgkc2VsZiwgLywga2V5LCBkZWZhdWx0PU5vbmUpCi0tCgoAAAAAAAAAAAAAAHNldCgkc2VsZiwga2V5LCB2YWx1ZSwgLykKLS0KCgAAZmluZCgkc2VsZiwgLywgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKQotLQoKAAAAAAAAZmluZHRleHQoJHNlbGYsIC8sIHBhdGgsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKQotLQoKAAAAAGZpbmRhbGwoJHNlbGYsIC8sIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSkKLS0KCgAAAGFwcGVuZCgkc2VsZiwgc3ViZWxlbWVudCwgLykKLS0KCgAAAAAAAAAAAAAAAAAAAGV4dGVuZCgkc2VsZiwgZWxlbWVudHMsIC8pCi0tCgoAaW5zZXJ0KCRzZWxmLCBpbmRleCwgc3ViZWxlbWVudCwgLykKLS0KCgAAAAAAAAAAcmVtb3ZlKCRzZWxmLCBzdWJlbGVtZW50LCAvKQotLQoKAAAAAAAAAAAAAAAAAAAAaXRlcigkc2VsZiwgLywgdGFnPU5vbmUpCi0tCgoAAABpdGVydGV4dCgkc2VsZiwgLykKLS0KCgAAAAAAAAAAAGl0ZXJmaW5kKCRzZWxmLCAvLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpCi0tCgoAAGl0ZW1zKCRzZWxmLCAvKQotLQoKAAAAAAAAAAAAAAAAa2V5cygkc2VsZiwgLykKLS0KCgAAAAAAAAAAAAAAAABtYWtlZWxlbWVudCgkc2VsZiwgdGFnLCBhdHRyaWIsIC8pCi0tCgoAAAAAAAAAAABfX2NvcHlfXygkc2VsZiwgLykKLS0KCgAAAAAAAAAAAF9fZGVlcGNvcHlfXygkc2VsZiwgbWVtbywgLykKLS0KCgAAAAAAAAAAAAAAAAAAAF9fc2l6ZW9mX18oJHNlbGYsIC8pCi0tCgoAAAAAAAAAX19nZXRzdGF0ZV9fKCRzZWxmLCAvKQotLQoKAAAAAABfX3NldHN0YXRlX18oJHNlbGYsIHN0YXRlLCAvKQotLQoKAAAAAAAAAAAAAAAAAABmZWVkKCRzZWxmLCBkYXRhLCAvKQotLQoKAAAAAAAAAGNsb3NlKCRzZWxmLCAvKQotLQoKAAAAAAAAAAAAAAAAX3BhcnNlX3dob2xlKCRzZWxmLCBmaWxlLCAvKQotLQoKAAAAAAAAAAAAAAAAAAAAX3NldGV2ZW50cygkc2VsZiwgZXZlbnRzX3F1ZXVlLCBldmVudHNfdG9fcmVwb3J0PU5vbmUsIC8pCi0tCgoAAHVuZGVmaW5lZCBlbnRpdHkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaCH/////bCEnIf//////////////////YyFAIf////////////+kof//////////////////////////////////////////////////////////////////////////////////QSH/////////////////////JCgiKP///////////////ygoJig6KP//LCgqKP//////////MCguKP///////0Ih//80KDIo//85KCEo/////////////////////////////////////////////yUo//////////////////8nKP///////////////////////////////////////yko////////////////////////////////////////////////////////////////vaj///////++qP//////////LSj/////////////////////////////////////////////////////////////////////////////MSj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Iyj//yso//8vKP//Myj//zUo//82KP//Nyj//zgou6j////////////////////////////////////////AqP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8mIf//JSFAqEGo//////////////////////////////////9CqCEmIiYjJiQmJSYmJicmKCYpJiomKyYsJi0mLiYvJjAmMSb//zImMyY0JjUmNiY3Jjgm//////////////////9BJkImQyZEJkUmRiZHJkgmSSZKJksmTCZNJk4mTyZQJlEm//9SJlMmVCZVJlYmVyZYJicn/////////////////////////////////////yEnIicjJyQnJScmJygnKScqJysnLCctJy4nLycwJzEnMiczJzQnNSc2JzcnOCc5JzonOyc8Jz0nPic/J0AnQSdRJ1InUydUJ1UnVidYJ1knWidbJ1wnXSdeJ18nYCdhJ2InYydkJ2UnZidnJ2gnaSdqJ2snbCdtJ24nbydwJ3En//9XJ1yp/////0OoqqEqISwh//8uIS8h/////zAhMSH//////////////////0WoLSH///////////////////////9rIf//ZCFlIf//Rqj/////////////eSFmIf//R6j///////9IqP///////////////////////////////20h//////////////////////////9Zqf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xInIicyJ0InUidiJ3IngieSJ6InsifCL//////////6GioqKjoqSipaKmoqeiqKKpoqqi//////////////////////////////////////////////////////////97IXwheiF9If////9JqEqoS6hMqEoh////////////////RyH//0Yh////////Taj//////////0wh/////1ghXiFOqE8h/////0+o//9OIf//RCFFIUkhSCFSIf////9TIf////////////9gIV8hQyFLIf////////////9XIf//////////////////////////ViH///////9VIf////////////9QqP//////////////////////////////////WSFUIf////9cIV0hUahSqP///////////////1ohWyH//////////////////////////////////////////////////////////////////////////////////////////////////5Ko////////USH/////////////////////////////TSH//////////////////////////////////////////////////////////////////1OoUCFZIloiWyJcIl0iXiJfImAiYSJiIv//////////////////////////RSJGIkciSCJJIkoiSyJMIk0iTiJPIlAiUSJSIlMiVCJVIlYiVyJYIjEiMiIzIjQiNSI2IjciOCI5IjoiOyI8Ij0iPiI/IkAiQSJCIkMiRCIkKSUpJiknKSgpKSkqKSspLCktKS4pLykwKTEpMikzKTQpNSk2KTcpOCk5KTopOyk8KT0pPik/KUApQSlCKUMpRClFKUYpRylIKUkpSilLKUwpTSlOKU8pUClRKVIpUylUKVUpVilXKVgpWSlaKVspXCldKV4pXylgKWEpYiljKWQpZSlmKWcpaClpKWopaylsKW0pbilvKf//////////VKhVqFaoV6hYqFmoWqhbqFyoXaheqF+oYKhhqGKoY6hkqGWoZqhnqGioaahqqGuobKhtqG6ob6hwqHGocqhzqHSodah2qHeo//////////////////////////////////94qHmoeqh7qHyofah+qICogaiCqIOohKiFqIaoh6j///////+IqImoiqj//////////////////////////3YhdSH//////////////////////////////////////////3ghdyH/////////////////////i6iMqP////////////////////90IXMh////////cCH/////ciFxIf///////////////////////////////////////////////42ojqiPqJCobyFuIf////+RqP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2Ih//9hISEhIiEjISgh//8pIWWplqk0ITUhNiE3ITghOSE6ITshPiE/IZOofiEyITMhPCE9If////////////+UqJWo/////0CpQalCqUOpRKlFqUapR6lIqf////////////////////////////////////////////////////////////8hJCIkIyQkJCUkJiQnJCgkKSQqJCskLCQtJC4kLyQwJDEkMiQzJDQkNSQ2JDckOCQ5JDokOyQ8JD0kPiQ/JEAkQSRCJEMkRCRFJEYkRyRIJEkkSiRLJEwkTSROJE8kUCRRJFIkUyRUJFUkViRXJFgkWSRaJFskXCRdJF4kXyRgJGEkYiRjJGQkZSRmJGckaCRpJGokayRsJG0kbiRvJHAkcSRyJHMk//////////////////9hqWKpZqlnqf////8hJSIlIyUkJSUlJiUnJSglKSUqJSslLCUtJS4lLyUwJTElMiUzJTQlNSU2JTclOCU5JTolOyU8JT0lPiU/JUAlQSVCJUMlRCVFJUYlRyVIJUklSiVLJUwlTSVOJU8lUCVRJVIlUyVUJVUlViVXJVglWSVaJVslXCVdJV4lXyVgJWElYiVjJWQlZSVmJWclaCVpJWolayVsJW0lbiVvJXAlcSVyJXMldCV1JXYl//////////8kIWCpY6lkqUUoRihHKEgoSShKKEsoTChNKE4oTyhQKFEoUihTKFQoVShWKFcoWChZKFooWyhcKF0oXihfKGAoYShiKGMoZChlKGYoZyhoKGkoZSJmImciaCJpImoiayJsIm0ibiL//////////////////1qp/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0mpSqlLqf///////////////////////////////0ypTalOqf////9Pqf//////////////////////////////////////////////////////////////////////////////////////////UKn///////////////////////9Rqf////9SqVOp/////1SpO1IhNkCBX0ZBgUKBQ4FyTUlVfUhPSUJPIlg7MmtTRIEkWHMzRYEoV1JHJ1hASkaBcEd7MTVSVDQrNj9LKVhHgUiBSYEqNkqBPUFPUUuBJUktWEyBdjg+UVxjUFZNgU6BYTdPgS40UIFZQVGBPFhSgWhNJDUqTndWU4F2QFk+L1hUgVWBVoFLRFeBQz5YgTFYNENlUlmBLlZaTidVdTomN1ZAWoE5RlJFR0dbgVQ5XIFLM1JSXYFegT9YRT5yRjJSME9nT1+BYIFhgWKBaUpjgWSBQFhlgWaBZ4FogWmBaoFyQlJCa4FpSGyBbYFugW+BcIFxgXKBc4F0gXWBLEd2gXeBeIF5gXqBe4F8gUtBfYFoU3lVfoFCSn42IVhaU3c/gIFGVCU7QVhlTi4+gYGCgShYg4FHUSlQhIGFgYaBPVhvWXZNOj+HgTs9JTpgUnoyYDo2RIiBbU8pPiRNQUGJgYqBi4FXR3FZjIF0WY2BjoGPgZCBS0hpWJGBkoGTgVpSMkpKSGxYalhGWHY9TUZwM5SBa1hxPWk9lYFUSFM0loGXgVhCmIFWMlBXS0p7S0xVNjhJT5mBmoGbgVpZcFgqR5yBblidgXo0bkFUUp6Bn4FtWKCBR1JvWEdDoYGigaOBdlGkgVlWclilgXVYfjxbPKaBp4GogU5IqYFdN6qBQjergXNGrIGtga6Br4GwgbGBsoF4WEFSs4G0gWlOPzx8NyU3XVC1gbaBt4G4gbmBWlZFU287YTtxWLqBu4EhSTBOKzS8gXNYvYFLSXZYV0J3WL6Bv4ExTnlYwIHBgcKBLjJAOcOBI1nEgWkwxYFmQcaBbEnHgUVLyIFGSyRZyYHKgcuBzIHNgWg1zoHPgSs10IHRgdKB04HUgdWBO05NNSFXdFdTU9aBZUzXgU462IEiWVxZYFN9WHA3d1d+WHpYIVljRNmB2oE2U3RYXVnbgXtY3IFlRd2B3oFQQN+B4IFwUVsw4YHigVE8JlnjgSVZ5IHlgeaB54EsWS5Z6IErWTlK6YHqgeuBKVk2VuyB7YHugV4zKFnvgX1A8IFMSvGBKlnygSdZ84H0gTBZ9YH2gTE294H4gfmBKTn6gUBS+4H8gUBP/YH+gUJCQIJEPWxVYDJIR2s/LVlBgi9ZQoJqTm46Q4JEgkWCRoJHglZHSIJJgkqCS4JMgk2CToJPglCCYzFRglKCU4JZNG02NFlUglWCVoJXgiE/WIJZglqCXllOR35AOFlbglyCXYJegl+CV0t9N2CCNVlhgjdZIzFhUzlZYoJFUGOCNllkgmWCMVlmgjJZKUEzWWeCaIJzPF5QKThpgmM+aoI9WWuCbIJtgm6COllvgjMwcIJxgnKCQllzgnSCdYJ2gneCeIJ5gnqCe4J8gn2CfoKAgkRZNjGBgj9ZgoKDgjk1hIJzPoWChoKHgkhMcjpQUoiCQ1mJgoqCaD2LgiszjIKNgo6CRVlrPo+CRlk7WV9EkII+WUFZQFmRgpKCk4KUgpWCloKXgpiCmYKagpuCLlWcgjVWnYJjR56Cn4KggqGCSFmigqOCpIJZPEpZpYKmgqeCPFmogktZK0apgqqCq4Ksgq2CSVmugq+CsIKxgnZXsoIjTbOCtIK1graCt4K4grmCuoIhPbuCvIK9gr6Cv4LAgkxZwYLCgsOCxILFgsaCx4LIgsmCPEU1TcqCy4LMgk1ZzYLOgkdZJTN+P8+C0ILRgtKCNTjTgtSCfEDVgtaC14LYgngw2YLagtuC3ILdgt6C34LgguGC4oLjguSC5YLmgueC6ILpguqC64Lsgu2CdjTugk5Z74JPWSI0UFnwgvGCXzTygvOC9IL1gvaCQTD3gviC+YL6gvuC/IL9glFZNUn+gkCDQYNCg0ODRINFg0aDR4NIg0mDSoNLg0yDTYNOg0+DUINRg3FPUoNTg1SDVYNWg1eDUllYg1mDWoNFQVuDXINdg16DX4Ngg2GDYoNjg2SDZYNWWS5JZoNng2iDaYNVWVRZV1lqg2uDbINtg1tLboMpPW+DcINxg3KDc4MnRnSDdYN2g3eDeIN5g3qDe4N8g32DU1lYWX6DgIOBg1lZgoODg4SDhYOGg4eDZUiIg4mDioOLg4yDjYOOg4+DkIORg5KDk4OUg5WDXECWg5eDmIOZg5qDm4Ocg52DnoOfg6CDoYOig6ODpIOlg6aDp4Oog6mDqoOrg6yDrYOug6+DsIOxg7KDeTYjWEpUs4MqVFZQZDNXVbSDSE9iObWDSz+2g2JDt4O4g7mDUja6g7uDQ01uWXBZvIO9g76DMzW/gzU2wIPBg8KDw4PEgyQ+xYPGg2tIx4PIgytIyYPKg0swKzl5QWJZy4M8QDI5zINYOUtQeDFkRl8+ZDVIV82DeFFmPF5KzoPPgz08ZllnWNCD0YNaRNKD04NUOD1I1IPVg2EyWVTWg9eD2IPZgzBD2oPbg2FDIlpfSNyDNFDdg3w+KUXeg9+D4INaOeGDI1rigylUJFrjg+SD5YPmg+eDe1ksNuiD6YNrN3kxfFllM3Y+6oN2PzFSZEDrg+yD7YMzNn5ZfVnug++DOz7wg/GD8oNgRvODPFchWvSDOUH1g3I1aEH2g/eDdTz4g1U0+YP6g/uD/IP9g/6DQIRBhEKEXUFDhH1ERIRFhDg8MjdGhEeEbzdIhEmESoRLhEyETYRsWU6EPkZPhC0/SztQhFGESjVShElbV1BThDlNPDB2M3c7SlsvOlSEZFQ2NXM1VlhQSFWEVoRWN1BHV1hXhC8/WIRZhDtbWFhahFuETFAuO1yEXYRehD5rUEF1QXJUVTg0NF+EdTNghGGEPklihGOEZIRQRWWEZoRnhFlFe0BohHAxaYRZWE45aoQ9NWuEbIRaWG2EboRGViJLL0gySUw0TD9vhHQ5cIRbWFxYZzZBPGpMcYRyhHOEdIR1hHaEd093hF1YMEd4hHmEUDkjPXqEe4ReTHyESkZ9hH6EgISBhIKEYFiDhF5YhISFhF9YhoSHhIiEfjCJhGc+ioQjSnQ8i4SMhI2EjoQxOI+EkIRuOJGEkoSThJSElYSWhJeEmISZhJqEYlibhEs9nIRkWGNYnYSehJ+EoIShhHxFooSjhKSEpYSmhKeEqIRlWKmEqoRmWKuErISthK6Er4SwhLGEJkGyhDBIbDAmOVM8cU49W1NBs4S0hLWEtoQvNnpWLEVZPT5bP1u3hLiEuYR4QCI+TUC6hLuEvIS9hL6Ev4TAhMGEwoTDhEBbRkrEhMWExoQqMseEyITJhEJTyoRjQ8uEK1HMhM2EzoTPhEJb0IRVQNGE0oTThENb1IQxP9WE1oTXhNiE2YTahDxE24TchN2E3oRaR9+E4IThhOKE44TkhOWE5oTnhOiE6YREW+qE64TshO2E7oTvhPCE8YRoWVdJ8oTzhPSENDlwTkhU9YT2hPeE+IR8MFI0+YRZUPqE+4T8hP2EaVn+hEtea1lAhUGFQoVDhTBYLzsxMUSFVzNOWEWFRoVRVEeFSIUzPW8/SYU7T0qFS4VQWEyFTYVOhUs3T4VQhVGFUVhShVOFVIVVhVaFV4VYhVmFWoVbhSVGeEc9UlyFXYVSWGREXoUuSl+FJ0dghSZYYYV9SWdOXDtrMGKFY4VkhSo7LVBlhTAxZFc/V2aFJTV0Qk9EZ4VohSkyaYU3MmqFZTEyXzxVKD8sQlVYMUJrhVRYVE5shWBabYVATm6Fb4U0WC5DIVMjTnCFNDw0SFFCcYVtPjZQcoVhWnOFdIV1hXaFZEd3hXiFJzN5hXI2fEx6QHqFe4V3QHyFOVFhUUdYfYV+hYCFgYWChYOFhIVeMoWFhoVlQIeFcTqIhYmFSFiKhS1Ui4WMhWFPSViNhUpYQ0+OhXgzRz6PhZCFkYWShUtYk4WUhZWFloWXhZiFmYVMW5qFm4WchZ2FJUiehZ+FoIVYT6GFfkhOMqKFo4WkhaWFpoVWU2YyMDxRUytLNDenhaiFqYUiN6qFq4VlSqyFIUhcSmQxcFCthVFFroWvhbCFRVt+NbGFsoVaP0U5ZD5tQbOFNl81XztWUD1ZVUgwIzZJPyhMM183SlJTtIVPWDZSRTo+Sz5MtYU3X3A1NF+2hbeFuIV1U7mFVDN3OLqFOl+7hU86Kjx1NbyFLE17Q3M6dEBCTXJPOF9FT72FQEI5X3BCvoW/hcCFfT7BhV9BTE13Uk03QV/ChURfw4XEhXE3STBWNlQ3xYUsOn1MVD8xS3RGxoUoVkVfx4ViTjMzyIXJhXxONTTKhUdOcDrLhWFOzIU9Uc2FzoVAX8+F0IV0NNGFSjPShWY4O1/ThdSF1YXWhUVE14U8Xz1fPl87RT9fQl8xVENf2IU6R1hO2YXahduF3IXdhVhE3oVKX9+FT1/ghVxW4YXiheOF5IXlheaF54XohUlfWl82TumFRzpOX0hfXkXqheuFa0l0OnxD7IXthVc+7oVGX++FTV/whVhF8YXyhfOF9IUmVU069YVMPj1TQDj2hWRW94VHXz45Jz/4hfmFfEFLX0xf+oVQX/uF/IX9hf6FQIZbX2VfQYZXX1ZfSVdjX2Rfa2UnUlJfQoYpP0OGW1REhkg/VF9FhkaGR4ZMT0iGSYZdX0qGSlFLhl5fJzA3RlNfTIZlOk2GXzZbTX45VVROhk+GX19sTyUwZ19RX0ZRVV9YX1lfXF9Qhik7UYZgX2FfUoZiX2ZfaF80U1OGVIZVhlaGV4ZnODZFal9aSShBRERYhlmGXj94T1qGW4ZchlxVbl9dhl6GX4ZghmGGYoY4MmOGXzpsX2SGQVtlhmRRZoZnhmiGaYZ0Sz00aoYmMGuGbIZthm6Gb4ZxX0ZMcl9whnGGbV9yhnOGdIZ1hnaGd4ZpX3iGeYZ6hnuGa198hm9fcF89O32GfoZzX4CGgYZ0X4KGIzuDhltKKE4nYCozhIYmYIWGhoaHhiFgiIaJhoqGi4Z+X4yGWU18X42Gel+OhlA/RFePhkxJkIaRhnhfITCShpOGlIaVhpaGfV+XhpiGmYaahntfImCbhpyGnYaehp+GKGCghqGGooajhkg3pIalhiFGNkkyQHVfpoanhj5FqIZEWHlfdkSphqqGq4ashq2GroYjYCRgJWAlUK+GsIY0YGRMsYYxYLKGJj8vYDlOK2BGSbOGtIYuQC5gbTowOilgtYa2hreGdl+4hjNguYa6hjhgu4a8hr2GLTQ5YL6Gv4YyT0g6wIYwYMGGwobDhsSGxYbGhseGelDIhsmGyobLhsyGzYbOhs+G0IYsYNGGe1TShndf04ZnRdSGLWDVhndT1oY2YDdg14bYhtmG2obbhkRgYVDcht2G3oY8YN+G4IZJYEpg4YbihuOGPmAqYCRJQWDkhjJg5YbmhueG6IbphkhKQ2DqhjVg64ZLTuyGQ0tNYEZgQmDthktg7oY6YD9gQGDvhvCGRWDxhvKGR2BIYPOGTGD0hjtg9Yb2hveG+Ib5hlRLVWD6hlZgUmD7hvyG/Yb+hkCHQYdQYE48QodDh1FgRIdCOEVYRYdGh0eHSIdJh0qHS4dMh2pQTYdOh29CT4dQh09gPWBRh1KHU4dUYFNgVIdVh1dgVodXh1iHWYdcYFhgWodbh1yHdlYwM12HbFdehztLX4dgh1pgYYd7TmKHY4dkh1k6ZYdmh2eHaIdph2qHa4dsh22Hbodvh3CHYWBdYC1ScYdyh3OHdId1h2Jgdod3h1tgWWBfYHiHeYdgYHqHe4d8h32HfodeYICHZGCBh4KHg4d3RixYa1RmYElKhIeFh4aHh4dlYIiHiYeKh4uHQTiMh42HjoePh2dgaGCQh5GHkoeTh5SHlYeWh5eHaWBjYJiHmYeah5uHnIedh56HPzpnTJ+HoIehh2pgooejh6SHpYemh6eHqIeph6qHq4esh62Hroevh7CHeU+xh7KHs4e0h7WHtoe3h7iHuYe6h7uHa2C8h72Hvoe/h8CHwYfCh0JIw4fEh8WHxodAPceHyIfJh8qHy4fMh82HzofPh9CH0YfSh9OHUkTUh9WH1ofXh9iH2Yfah9uH3IdsYN2H3odtYN+H4Id0R0RL4YduYFg7NlhyUm9gRU3ih1o244fkh+WH5ofnh+iHcWDphzBU6ofrhydAUTTsh+2HJ05wYO6H74fwh3JgTDnxh/KHejk8TXNg84f0h/WHVEZ0YPaHMlT3hyZIdmB1YPiH+Yf6h/uH/If9h/6HQIhBiEKIQ4hEiEWIRohHiEiISYh3YEqIS4hBTUyITYhOiCVKT4hQiFGIUohaVFdbWVtTiFhbZzlcW11bWDVUiFWIWltWiFeIWIhZiFqIW1shM19bW4hciHg7XYg3Vl6IYFtfiGCIYYhiiHk+Y4hkiDs3ZYhQWy5MMj81O3hXUz9miGeIaIhpiGqIaT9riGyIYTwzTF5bUzBrTlg3OVdCRm2IbogkQG+IOUxwiGdbYVs6RmNbcYhoW3KId0VziHSIdYhqW3aId4hpW0A/eIh5iHqIZltlW3uIfIh9iH6IgIg5NCxAIkJiW2RbgYiCiIOIhIhNUG1bhYiGiIeIiIiJiF1AcluKiIuIjIiNiI6Ij4iQiGI2kYiSiJOIlIhzW1JbODkrVGxblYhRP3BblohRW5eIZjWYiGtbZT+ZiJqIm4huW5yIcVudiJ6In4h5W6CIoYiiiKOIpIiliKaIp4ioiCE5IzCpiKqIq4isiK2IroiviHFCsIixiEczb1uyiLOIeFu0iFJGdFu1iLaIdVt3W3Zbt4i4iH5buYhyUzoyuoi7iLyIfVu9iL6Iv4jAiMGIwojDiMSIJFzFiHtbxojHiMiIyYh6W8qIy4jMiHxbYEV5O82IzogjXM+I0IglXNGIQ0zSiNOI1IhRNkBd1YjWiNeIIVzYiCJc2YjaiNuINUfciN2I3ohpNt+I4IjhiCdc4ojjiOSI5YgmXOaIKVwkMeeI6IhMNemI6ojriOyI7YgwP+6I74jwiPGI8ohfUfOI9Ij1iPaIQjb3iPiI+Yj6iPuI/Ij9iP6IQIlBiUKJQ4lEiUWJKFxGiUeJSIlJiUqJS4lMiXpLc2tNiU6JT4lcS1CJUYl+S1KJU4lUiUFMVYlWiVeJWIlZiXtIWolbiVyJXYleiV+JKlxgiWGJYoljiWSJbkwrXGWJZolniWiJaYlqiWuJbIltiW6Jb4lwiXGJcolziXSJdYlTW3aJL1wsXHeJMz54iXtKeYl6iXuJLVx8iX2JfomAiYGJgomDiYSJSkk5RIWJhomHiYiJiYk9Ry5ciomLiYyJdlRmUI2JjomPiZCJkYmSiZOJlIkrRFU2lYmWiZeJmImZiZqJm4mciZ2JnomfiaCJoYmiiaOJpImliaaJVFuniaiJqYmqiVoxq4msia2JVVuuia+JsImxibKJs4m0ibWJtom3ibiJVlu5ibqJu4k+OryJvYm+ib+JwInBicKJw4nEicWJxonHiciJyYlASMqJy4nMic2JzonPiT9KSUjQiTNX0Yl5SdKJ04lHP9SJ1Yl4OtaJ14k8UtiJ2YnaiduJ3Indid6J34k6YuCJJjThieKJODHjieSJ5YnmieeJNDjoiURP6YnqieuJ7IlnWSZPYk3tie6JbVlgNu+JOVLwifGJOznyifOJ9In1iTliN2L2iXM094lsTCtMcjf4iTJYa1E7OvmJJ0r6ifuJN038if2JRFJkP1A8YTb+iUVeQIpBikKKQ4pGXjxbRIpZUUWKRopmRk5EbjdHilw3SIpJinw/YFdKinVGS4pMijwxSF4xPVdMSl5NikleTopPilCKUYpSimw1U4pdSVSKVYpCMFaKV4pYilmKWopbilyKXYpeil+KYIphimKKLkUrRWOKTERkimk8fUtlimaKZ4pDOmiKaYpqinllZ0h6ZX1Na4oxVz44aEJsilFIbYpuintlb4pwinGKcopKNks8c4p0in1RIWZ1im5Ddop3iniKeYokZnqKe4p8in2KfmUlZldNfoqAikE3fGV9ZSNmgYqCil1EKGaDioSKJ2aFioaKh4qIiomKiopDQ4uKXkaMio2KKmaOio+KkIqRipKKk4qUijdElYqWipeKImY8SpiKmYqaipuKYz1DOSZmVVAvTpyKnYopZjBmnoomUp+KKj0tZqCKoYqiiqOKpIovZqWKUUCmiqeKTFKoiqmKqoonPKuKrIqtiq6Kr4qwirGKsoqzirSKtYq2ijFmt4p2UriKuYq6iktXu4p+TbyKXk0mQitmLGY/PS5mM2a9ir6KMma/isCKwYrCijZmw4o4ZsSKxYrGiseKb0TIismKyopIRMuKzIpqPm9JzYrOijdmz4pwNtCK0YrSimRD04rUitWK1orXitiK2YppUzRm2oo1ZtuKIkjcit2K3orfiuCKPWbhiuKK44o5ZuSK5YrmiueK6IpFRumK6opxTTtm64rsiu2K7orvivCK8YryivOK9Io8ZvWK9or3iviKaTv5ivqK+4r8iv2K/opAiz5mQYtCi0OLRIs6ZkWLRos3QEeLSItJi0qLS4tMi02LTotPiyRTP2Z0SUNmUItRi0RmUotTi1SLVYt2UFaLV4tYi1mLWotbi1yLXYtei1+LYIthi2KLY4tki2WLZotniz1DaItpi2qLa4tsi22LbotEQ0Jmb4twi3GLcotzi3SLdYt2i3eLeIt5i3qLe4t8i0FmfYt+i4CLgYuCi4OLhItHZjFPhYt0a4aLh4tKZoiLiYuKi4uLjItFZo2LjotePClJj4uQi5GLkouTi5SLNTyVi5aLU0+Xi5iLmYuai5uLSGaci0lmnYtOZp6LUGafi6CLoYtRZqKLo4uki0tmVTWli0xmpouni09mqIupi1tEqotGZquLrIuti66Lr4tNZrCLsYuyi7OLtIu1i7aLt4u4i7mLuou7i7yLvYu+i7+LwIvBi8KLw4vEi8WLxotSZseLyIvJi8qLy4vMi82LzovPi9CL0YvSi1RmU2bTi9SL1YvWi9eL2IvZi9qL24vci92L3ovfi+CL4Yvii+OL5Ivli+aL54voi+mL6ovri+yLVWbti3hZ7ovvi1Zm8Ivxi/KL84v0i/WL9ov3i1dm+Iv5i/qL+4v8i/2L/otAjEGMQoxDjESMRYxGjEeMU1ddZkiMXmZXP1BUSYxWV2Y0b0taZkNYTlciUEqMT0NLjEyMX2Y+PEI5W2YnUU2MTowiOk9CT4wrWFCMUYxSjGtKbmVTjFxmVIx1N1WMVoxXjFiMZkhZjFqMdURbjFyMMmV+RF2MfEszZSxVXoxuU1hKMjBfjE5Lak1gjGGMajpijGOMZIw1ZWWMNGVmjFpXWTlmVig2cE1LUiYxNUpnjGgzc0lNP3tQUko2ZUI7aIxpjGqMXE8sOWuMbIxtjG6MV1RvjHCMJjpnUXxPUjxxjDdlXUhyjHOMdIxtP3YxXkt1jHaMRTx3jEQ8elJcQ1w/eIx5jHqMe4w7OHyMfYx+jEJDgIwuOiJUgYyCjIOMhIyFjIaMh4yIjImMXkcvRGwyioxROYuMjIw7ZUhBjYyOjC9Vj4yQjJGMkoyTjDxllIw+ZZWMloyXjJiMmYyajJuMZzRUNkJLMFE8NZyMnYxZSp6MYjefjKCMZEmhjCs9ooyjjD5OcFekjKWMpoynjCFQqIxZSamMqox7NlhmYjyrjD4zrIxQSa2MWWYiM66Mr4ywjLGMTF6yjEhTTV6zjCJStIy1jLaMt4xOXriMuYy6jLuMTT68jL2MT16+jL+MwIwsSnxSXzNqZWFEIT4yTnJEVj4oRmMywYzCjFM+w4zEjHxHa0xsPV1OxYzGjDpKQUZsZTxQx4zIjMmMOVXKjMuMzIxtZc2MzozPjNCMdErRjEBNRULSjG9l04xEQnBl1IzVjNaM14zYjNmM2ox4ZU1N24w9SdyM3YzejN+M4IzhjOKMWVIoYeOM5IzljOaMbFPnjGpLcUbojOmM6ozrjOyMLGHtjO6M74wnYSlh8IzxjCphL2HyjPOMbTL0jCthWjgtYS5hMGE6NTFh9Yz2jPeM+Iz5jDNhOGH6jPuM/Iz9jP6MUlFAjTZhNWFrQUGNQo1DjTdhRI1AVEWNMmFGjTphNjBHjUiNSY1KjTRhS415P0yNOWFNjU6NO2FPjVCNUY1SjVONVI0+YVWNVo1XjViNWY1ajTxhW41cjV2NXo1fjWCNRVZhjWKNY41kjWWNZo1njT9PaI1pjT1hP2FNQmqNazZrjXhTbI1tjU1Hbo1vjWU3cI1xjXKNc410jXWNdo13jXiNeY1+PnqNe418jX2Nfo2AjUBhQWGBjYKNR2FnM4ONhI2FjYaNh42IjWlGiY2KjYuNjI2NjV40jo1CUY+NkI2RjZKNSGGTjZSNRmGVjZaNl42YjZmNRWGajUNhQmGbjUAxnI2djZ6NOFVEYZ+NoI2hjaKNo41LYaSNpY2mjaeNqI2pjaqNq41MYUphrI2tja6Nr42wjbGNso2zjXpvtI21jVNhUmE2R7aNt424jbmNuo27jbyNvY2+jb+NwI1JYcGNwo1OYcONUGHEjcWNxo3HjciNyY3KjcuNzI3Njc6NVGHPjVFhTWHQjdGNT2HSjdON1I3VjVVh1o3XjdiN2Y3ajduN3I3djd6N343gjeGN4o1WYeON5I3ljeaN543ojemN6o3rjeyN7Y3uje+N8I3xjfKN8430jfWN9o33jfiNV2H5jfqN+41YYfyN/Y3+jUCOQY5CjkOORI5FjkaOR45IjkmOSo5LjkyOTY5Ojk+OUI5RjlKOU45UjlWOWmFWjleOWI5ZjlqOW45cjl2OXo5fjmCOYY5ijlthY45kjmWOZo5njmiOaY4hTmqOa45sjm2Obo5vjnCOcY5yjnOOdI51jnaOXWd3jig0XVZ4jnmOMlEyM3qOe44kOXNXSUdePi45fI5XTn2Ofo5uMk9bgI46PFFSSEtNMIGOgo5vT4OOhI6FjoaOh45jWW09iI6JjlIxUEo8MoqOJ0srN4uOJkqMjo2Ojo4jT4+OkI54YEpVe2CRjpKOemBBRXtMk44xQXlgY1YvMkRWWzWUjpWOlo6XjpiOmY6ajpuOeDQhVpyOnY6ejp+OoI4vT28woY6ijnxgo46kjqWOpo6njiFhIzOojqmOfWB+YDFDqo6rjqyOrY5dQ66OImF5N6+OsI6xjrKOs460jk87tY62jreOuI65jrqOu44jYTtEvI69jr6Ov47AjiRhwY7CjiVhw47EjiZhMTTFjsaOx47IjsmOyo7LjsyOzY7Ojs+O0I7RjtKO045JOD1GakTUjiIy1Y5SUNaOW2dDO1dTRFPXjmM5T2LYjtmO2o4vV9uObEdTMdyO3Y4yNFFi3o7fjuCOclAuQlBi4Y5iPyZTVzVSYmo14o5tQ304444uOOSOU0VPN1Ri5Y7mjueO6I5TYkg2eVfpjuqO647sju2OJU3uju+O8I7xjvKOWGLzjlZifEo1PzlTVWL0jvWO9o73jldi+I75jvqO+478jv2O/o5Aj0GPQo8uQUhAQ49Ej0WPRo9Hj0iPW2JaYipASY9Kj05BS49Mj02PTo9cYk+PUI9Rj1KPU49Uj1WPVo9Xj1iPWY9aj11iW49eYlyPXY9ej1+PYI9hj2KPY49kj0hbZY9TUSJNZo9njyg9aI9pj2qPQ14lWCo/TVtsUnpGKkVrj2yPbY9EXm6PVzEuX2+PcI9xjz1Kco8xX3OPLTl0j31SdY8lOGs6do93j1ozeI95j3qPXDVFVXuPfI99j36PVkNSTyE7gI9zZXJlgY+Cj3Rlg49kTYSPdUiFj4aPh4+Ij4mPio+Ljy81P0eMj3ZljY+Oj4+PMGyQj5GPko+Tj5SPlY+Wj5ePmI+Zj5qPm4+cj52Pno9mZZ+PaTkxNaCPPEJoZWdlaWWhj6KPo4+kj01SpY+mj6ePamFOUKiPLk2pj2VRqo+rj0oyazGsj3IxbUWtj66PQ1UwU6+PXGGwj7GPso9dYbOPW1K0jzkzSzG1j7aPt495TXdVXmG4jzY+fTS5j19hXDpgYTI7SUJhYbqPu4+8j2xQvY89Tb6Pv49iYcCPQzVHRWNhwY/Cj2Rhw4/Ej8WPxo95U8ePyI/Jj8qPy4/Mj2VhzY8tUc6Pz49mYSJO0I/Rj9KP04/Uj9WPZ2HWj0I114/Yj9mP2o9oYVU724/cj92P3o/fj0RQYGJYMWRS4I/hj2Fi4o/jj0k8TEjkj2Nifmx9bC9f5Y/mj+ePYmI+VnxNJkPoj+mP6o9DY+uP7I9SVmdi7Y/uj2hi74/wj0dT8Y/yj2xibD/zj21iZWL0j/WPQDP2j/eP+I9uRPmP+o9uYvuP/I9DUP2PdjppYl43MzssTEtLZGJmYmpia2L+j0CQQZB3YkKQQ5B0YnVUc2JEkEWQLUVGkHpVQkVAMkeQSJBvYkmQcmIvQTxLSpBLkCE1eWJMkE2QTpAxPHFiVFA5VHViVjl2Yk+QUJBRkFNHUpBTkFSQVZBWkHBiV5BYkFmQWpBbkFxXIW1ckF2QeGJekCVtfmJRSl+QYJBhkGKQY5BkkGWQNUFmkFA7Z5BokFY/aZBjOmqQa5AhS2yQbZBukCZtI21vkHCQIm1xkHKQc5B0kFY7J210UHWQdpAkbV46dzYhYzI2cUwnOXeQIk8hR3iQeZBSP3qQe5BxNnyQemJ7Yn1ifGJVRCJjfZBBU36QgJCBkCdjREeCkIOQhJCFkCRPhpCHkCljNzqIkImQipCLkChjjJBaO42QI2OOkI+QkJAkYypjkZAmY5KQck5GU5OQlJA8O5WQlpBDVJeQekSYkJmQKG18UCVjmpB1Q5uQLWMvMZyQMmOdkJ6Qn5BCPKCQoZAsYz81opCjkKSQpZCmkKeQqJCpkGlHMGOqkKuQrJAqPm9NrZCukK+QsJCxkHM7spCzkLSQaEy1kLaQL2O3kDFjuJAnTy5juZApTl07upC7kLyQvZC+kGs1ZT5SMk0zv5A5MStjUTIsNV85aDbAkMGQa083Y8KQTDvDkMSQR0hKUMWQxpDHkMiQyZA4Y24zypDLkMyQzZApbc6QelNkU8+Q0JDRkCptOWNiUtKQ05DUkNWQ1pA1Y9eQ2JDZkNqQXlPbkNyQ3ZDekFA4M2PfkOCQNmNfN+GQNGMiQOKQ45DkkDpj5ZDmkOeQ6JDpkOqQ65DskO2Q7pDvkPCQ8ZDykPOQ9JD1kPaQ95A4VPiQ+ZD6kPuQ/JD9kP6QQJFINEGRO2NCkUU7Q5F3SUSRRZFlSUaRR5FIkT1ESZFKkUuRTJFNkU6RT5ErbVCRUZFSkVORfUJUkVWRVpFXkVs7Lj9YkVmRWpFbkVyRXZFekT9OX5FgkWGRYpE8Y2ORNj9kkWWRZpFnkWiRaZFqkWuRbJFtkW6Rb5FwkXGRcpFzkXSRdZF2kW8xd5F4kXdUeZF6kXuRfJF9kT5jfpGAkYGRgpGDkYSRhZGGkS1th5GIkYmRipGLkYyRjZGOkY+RP2MpOixtkJGRkT1jkpGTkZSRlZGWkZeRmJGZkZqRm5FAY5yRnZGekZ+RoJGhkTY6opGjkaSRLjalkaaRp5GokamROFCqkUMwLm2rkayRrZGuka+RL21BQLCRQWOxkbKRs5G0kbWRtpG3kbiRuZG6kbuRvJG9kb6Rv5HAkcGRM0XCkcORxJHFkcaRx5HIkcmRypHLkcyRzZHOkc+RQmPQkdGR0pHTkdSR1ZHWkdeR2JEyXNmR2pHbkdyR3ZHekTBt35FqOOCRbE4namdQeUpWSDdPSTNSTmQ94ZHikV5jcjsoaj1V45FdRilq5JHlkeaRKmrnkSxqK2rokS5qLWrpkeqR65HskVg97ZEvau6RPkLvkfCR8ZHykUE0dzTzkfSRJzv1kfaR95H4kfmRZmxlbD83eUtiMfqRZ2z7kfyR/ZFISWhsaWz+kVZKUF5FMnpUQJJBkktGRzByNFNIQpJDkkSSUE1FkkaSOD9HkkiSSZJKkkuSTJJNkls/TpJPkiRHNFZQkilAUV4oSW9RJEVnMDYzRUhRklKSYjBTklSSdjdVklaSekVXkliSczZZklJVUDM8PFqSW5Jcki0zXZJekl+SYJJxPlEwYZJikmOSZJJlkmaSVlJjSiVXZ5I2TTY2OT9bVWiSJzhXRWmSapJrklJeWT9VQkBHbJIkOygxbZJukmpFb5JwkntFJ0xxknKSc5J0kicxdZJ2kneSVjV4knmSepIoRHuSU146UWkzfJJyQ32SfpJ3N4CSdFYjNXAyNERpRC1AVF6BkmgwREVgQYKSVTmDklw+WE1OMISST01WXlA+PldVXlBVXTCFkoaSYkSHkoiSI0JwPImSNVM5QCFFJjJxVIqSi5IoQENKV158VYySMDmNki1IKUuOkllePT+PkpCSkZKSkjRGJ1cwSkNEk5JWM1I5lJKVkpaSl5I4VnxqNDCYkpmSmpKbkmY/nJKdknRMnpKfkqCSoZJaTaKSo5Kkkj9WTkKlkk5OIkwuUFNEMjVYXnVVNzxTO6aSp5IkMKiSMkVsNKmSqpKrknFVrJKtkn1qrpKvkrCSsZKykrOSWl4mTbSStZJsTbaSt5K4krmSZk5cXrqSMU0mQLuSvJI9V72SW15GMDQ6U0lzRGg+vpK/ksCSwZI2MsKSw5LEksWSxpLHksiSyZJMQHBLypJxPDs7NzXLksySzZJ1Rc6SZl7PktCS0ZJjXl0+0pLTkl9e1JLVktaS15I3NF092JLZkmBebUTaktuS3JLdkkZP3pJgNd+S4JLhkuKSXjZaSnQ1ZV7jkkZV5JJhXk1MfkblkkVF5pLnkuiSNFLpknI+6pLrkuyS7ZLuku+S8JJTQvGSPUw4M/KSUz3zklg/Rk1aUWs09JJkXl1eZ171kn5q9pL3kjBCYl74kvmSQFYnNfqSdDL7kmhe/JJyXv2S/pJAk0GTQpNtXkOTcV5Ek0WTYEhGk0eTSJNhV29eaENhTEmTZTJKk0uTTJM+Uk2TTpNPk1CTUZNSk1OTbl5Uk2teVU5Vkyc0VpNXk1iTWZNakys/Pj5bk1yTUj1dk16TX5Ngk2leYZMuVGKTXl5jk2peZJNlk2aTZ5M/QGiTbF5zMmk4J0Jpk2qTQT1rk2yTbZNuk2+TdV54XnCTcZMrMiQ0cpNzk2o0Jkl0k3WTdpN3k3iTeZN2XlFLepNjOHuTd156XnyTfZN+k4CTeV6Bk4KTg5NCTISTYTBuNIWThpOHk4iTiZOKkzpli5OMk42TjpOPky9QkJORk2sykpMha5OTdF6Uk5WTY0lzXlowIVJ3MZaTL0yXk5iTmZOak5uTnJOdk3BenpMkS5+ToJOhkypVopOjk6STpZOmk3tep5Ook6mTqpOrk6yTrZOuk100r5MmRLCTsZOyk31es5O0k7WTtpO3k7iTuZO6k7uTvJN+QyFEIV+9k76Tv5PAk8GTwpPDk0xBxJN8Xm8+xZMyRsaTx5PIk8mTypPLk8yTzZPOk0UzdkjPk9CTOkt+XtGT0pMkX9OT1JPVk9aTMlfXk9iT2ZPak9uTNzPck92T3pPfk0NB4JPhk0tHJTJpNOKTK1fjk+ST5ZPmk2xE55MiXyNf6JMlX+mTMzrqk+uT7JMmX+2TXkDuk++TQ0nwk/GT8pPzk/ST9ZP2k1kyZkf3kydf+JNcR/mT+pP7k/yTKF8ia/2T/pNAlEGUQpRTS0OURJRFlCpfRpQpX0eUQTJIlEmUSpRLlEyUTZROlE+UUJRRlFKUU5RUlFWUVpRXlFiUWZRalFuUXJRdlF6UX5RglEpFYZRilGOUZJRllGaUZ5RolCtfaZRqlGuUbJRtlG6Ub5RwlFxUcZRylHOUdJR1lEFIdpR3lHiUeZR6lHuUfJR9lH6UgJSBlIKULF+DlISUhZSGlIeUcD6IlImULV8nVoqUi5SMlI2UN2o2a1VKjpR8WEQ4j5QlOZCUkZRFN35VkpSTlJSUlZSWlEo5l5SYlCdQTXSZlJqUUDWblJyUdEOdlEg+npSflKCUN2s9MKGUopRMPaOUMkGklFYxKDOllKaUp5RSOCJJqJSplFg2qpSrlKyUrZQ4azQ+rpSvlLCUfUqxlENHspR7VbOUtJRzN7WUtpS3lLiUuZS6lLuUvJS9lL6Uv5TAlMGUwpTDlEROxJTFlMaUK1VzMceUyJTJlDNsXzDKlDVsy5TMlM2UNzbOlE9Bz5R6dTFQ0JTRlGVV0pRTTtOU1JRvPWIz1ZQrONaUNlXXlD1t2JRPNtmUOUtCUNqU25TclN2U3pTflOCU4ZQ9N+KU45Q2bClK5JTllOaUVEXnlDlsOGxDQjds6JTplOqU65R9UDps7JQ7bGVX7ZTulDxs75TwlPGUPWxsRvKU85T0lPWU9pT3lPiU+ZReTvqUSDz7lPyUVUgpNUk+PFZnVP2U/pQuUXFQOGo5ajpqNTpAlUGVQpVDlTFKdT9ElUWVek1GlUeVSJVJlUqVQGpLlTowPmpMlU2VJUBOlU+VUJU7alGVfTJSlXdDaDtTlVSVVZVXUnROP2pWlVeVWJU8almVWpVblUNqXJVHUDNTXZVelV+VYJU6NGGVQUNyV2KVY5VklWWVUVVmlUdKZ5VFamiVaZVEakdqRmpqlWuVbJVtlW6VZ1ZvlVRPcJVxlUtqcpVOO3OVdJV1lXaVd5V4lXmVej1OSXqVe5VManyVfZU5SX5PSmpOVE1qT2p+lYCVbU2BlYKVg5WElUlqhZVOaoaVh5VuToiVXjuJlT8zipWLlYyVjZWOlVVGMD56To+VkJWRlWdHkpUnPlBqk5WUlUdWlZWWlZeVQEGYlZmVmpVdVJuVUWqclZ2VPk+elZ+VoJWhlVJqopWjlaSVpZVuSqaVp5WolamVL0U1MKqVq5Wsla2VrpVUaq+VsJWxlbKVs5W0lbWVtpW3lVNqX3S4lbmVupW7lbyVOkS9lb6Vv5XAlcGVKTHClcOVxJXFlV9lxpXHlciVyZVVasqVy5XMlc2VzpXPldCV0ZXSldOV1JXVldaV15XYldmV2pXbldyV3ZXeld+V4JXhleKV45VvSuSVVmpXalhG5ZXmleeV6JXpleqV65XslVhq7ZXulVlq75XwlfGV8pXzlfSVO1T1lXpHN1J8OPaV95VCaviVXDL5lfqVfEL7lXhUZkxuV/yV/ZX+lUCWQZZClkOWQlRQU0Nrc0VEln43RZZGllRrR5ZIlkmWN0tea0qWSkBLlkyWTZZ7TU6WLzNPllpGUJZRllKWU5ZUllWWfGtWlj5EV5Y0TilEPjF9VFiWdUpZlmxWWpZbllNGZDZcll2WXpZflno7YJZhlmBQYpZjljFJZJZTVChIZZZmlks4Z5Y+aDxJaJZpljtoapZuQFNQRDJlNGuWPGhslm2WSFVulm+WcJZxlnKWRTZzlj1oeEpcOHVMdJZ1lnaWNEB3lniWblE/aEJoeZZ6ljw6e5YtMVw9fJY9akNofZZGaH6WS2iAloGWgpaDlkxohJZJS2UwhZYrPIaWh5Y5OYiWiZZBaIqWd02LlkpojJaNlo6Wj5Z2TpCWkZaSlpOWbVWUllZBRGiVljZDlpZ7OSZWSGiXlpiWmZZgSmZUmpZAaJuWRWhHaJyWOUdjN52WSWiell0/UmiflqCWV2ihllVoXDxPPFtoopajlqSWpZamlqeWqJapll5oqpZaaHoxq5aslq2WrpavlrCWsZaylrOWtJZYMDNETDhiRj5IYUi1lraWt5ZPaFRoVmi4lnE5WGh1V7mWe0S6llxou5a8lmkyvZa+lr+WUWjAlsGWbTzClsOWQj9NaHlWxJZ4QXEyxZbGlseWyJbJlsqWy5bMll9ozZZBSllozpbPltCW0ZYkVdKWajE7VU5oUGgwNlNo05ZdaDhA1JZ3StWWKEvWlteWXEZ1QNiW2ZbaltuW3JZpaN2W3pbfliNQ4JbhluKW45bkluWW5pZyaGpW55bolumW6pbrluyW7ZZgaGFo7pbvlvCWeVFLOnk48ZbylnE4VFRvaPOWbmhsaHA5UkxmaCZOcj/0ljgwcWhwaPWWQFf2lmRo95YpTSNJ+JY4O1s9amj5lvqW+5b8lv2W/pZAl0GXQpdDl2JoY2hlaDU1Z2hFR2tobWgwPS5XRJd4aEWXRpdHl0iXSZdKl0uXTJd1aE2XME12aE6XT5dQl1GXUpdTl1SXVZdWlzpBV5doaFiXN0NwMFmXWpdbl1yXXZdel1+XYJd0aGGXYpdjl3doZJdll2aXIzlnl2iXaZdql2uXbJdtl26Xb5dwl1JJcZdyl3OXTkNgTmZAdJd1l3aXd5dzS3iXXUw1UHmXepdhSnuXc2h8l32XfpeAl4GXgpeDl4SXhZeGl2w8h5d5aIiXiZeKl4uXjJeNl15DjpdlRo+XdzmQl5GXkpeTl3QwlJeVl1hXlpeXlyw8mJdvRZmXmpebl5yXnZdETJ6Xn5cmaaCXoZeil6OXpJell6aXp5eol6mXLUmqlyJpYkCrl6yXrZdDP66Xr5ewl35oVzmxl3tospezl7SXtZckabaXt5e4l05SuZe6l7uXvJe9lyNpvpcyVjVXv5cnacCXNz3Bl8KXw5fEl8WXxpfHl8iXyZfKl8uXzJd8aH1ozZfOl8+XIWnQl9GX0pfTl9SX1ZfWl9eXVk3Yl9mXLFLal9uX3Jcyad2X3pffl+CXKWnhl+KX45cqNOSXOzTll+aXK2nnl+iX6Zfql+uX7Jftl+6X75fwl/GX8pfzl/SX9Zf2l/eXKFD4l/mXJWn6l/uXfjP8l/2XLGljQP6XKmlAmEGYOWlCmEOYOGlEmEWYRphHmC5pSJhJmHpoSphLmChpTJhNmE6YT5hQmCw/MWk6aVGYUpglQlOYVJhVmC9pVphFOFeYLWlYmFxTNGk1aTdpWZhamFuYR2lcmF2YXphfmGCYYZhGQEVpYphjmDBpZJhlmDtpcTBmmGeYaJhpmGqYa5hsmG2YbphvmDxpJVVwmHGYPmlymD9pc5h0mHWYQWl2mHeYcUF4mHmYNkh6mHuYfJg9aX2YfpiAmIGYgphCaYOYhJiFmIaYh5iImImYiphDaYuYM2mMmDZpjZgxO46Yj5iQmEBpkZiSmJOYlJiVmJaYdzyXmJiYmZhEaUZpmpibmJyYnZiemJ+YoJihmKKYo5ikmKWYSmmmmKeYqJipmE5pqpirmKyYrZiumK+YsJixmLKYs5hbMrSYSGm1mLaYt5i4mLmYupi7mLyYvZi+mC43v5jAmMGYwpjDmMSYxZjGmMeYyJjJmMqYS2lMacuYzJjNmM6Yz5jQmEFV0ZgjRNKY05jUmNWY1pjXmFhp2JhhOtmY2pjbmNyYSWndmCNT3pjfmOCYVGnhmOKY45jkmOWY5pjnmFdpUGnomOmY6pjrmOyYT2ntmO6YQUfvmPCY8ZjymPOY9Jj1mPaYUmn3mPiY+Zj6mPuY/Jj9mFlpSDP+mFNpQJlBmUKZQ5lEmXBPRZlGmUeZTWlImUmZSplLmUyZTZlOmU+ZUJlRmVKZdzNTmVSZVZlWmVeZWJlZmVZpWplbmVppXJldmV6ZNExfmWCZYZktT2KZY5lkmWWZZplnmWiZaZlqmVVpa5lcaVtpbJltmW6Zb5lwmV5pcZlymXOZdJl1mXaZd5l4mVFpeZl6mXuZfJl9mX6ZgJmBmV1pgplfaUpDg5mEmYWZhpmHmYiZiZmKmYuZjJmNmY6Zj5mQmZGZkpmTmZSZlZmWmZeZmJmZmZqZm5mcmZ2ZnpmfmaCZoZmimaOZpJmlmaaZp5momamZqpmrmayZrZmuma+ZsJmxmbKZs5m0mbWZtpm3mbiZuZm6mbuZvJm9mb6Zv5nAmcGZwpnDmcSZxZnGmceZyJnJmcqZy5nMmc2ZzpnPmdCZ0ZnSmdOZ1JnVmdaZ15nYmdmZ2pnbmdyZ3Znemd+Z4JnhmeKZ45nkmeWZ5pnnmeiZ6ZnqmeuZ7Jntme6Z75nwmfGZ8pnzmfSZ9Zk3R040NjtAUCNs9pn3mTdF+Jn5mfqZ+5n8mf2Z/plAmkGaQpp7U0OaRJpFmkaaJGxHmiVsW0ZImkmaSppuP0uaTJpNmk6aJmxPmlCaJ2wqUFGaOEdSmlOaaDhUmlWaVppXmliaWZpamluaXJpdml6aX5oobGCaYZpimmOaZJplmmaaZ5o5Vn1VSzQ9MmROZ0ZommmaYU1qmmuabJptmm6ab5pwmnGacppzmnSadZp2mneadTR4mkBLXzx5mnqae5p8mmJpY2lqUWVpfZp5NGRpfpozUWJKUDKAmmhpgZqCmoOahJpmaWdphZqGmjNWh5qImomaaWlqaYqai5qMmo2ajppraY+akJqRmpKak5qUmpWalppsaZeamJqZmpqam5qcmp2anpovbDlFTjafmnNSoJqhmqKao5qkmqWapppuNaeaWTsxbKiaqZpjUqqaq5qsmq2arppjTq+aOESwmj9DsZqymj42OVhIMU8xUTF+RbOaUDG0mitDtZq2mreauJq5mjFVupq7mryavZq+mr+awJrBmiRrQTrCmsOaxJo6TMWaxprHmiVryJona8mayprLmihrzJrNms6aJmvPmtCa0ZrSmtOa1JrVmilrK2sqa9aa15rYmtma2posa9uaT0o1WHFD3JolQ3hGLWtKRN2aLmsvazBrVTfemt+a4Jp6N+GaMWtiR+KaM2vjmiQ6dVExMDJrNGvkmuWa5poqNUhCaEfnmjVr6JouS19j6ZrqmkBT65rsmu2a7ppbWe+a8JohTS1Wc0fxmvKa85pgWWM79Jo6OmJj9Zr2mvea+Jr5mitP+pr7mvyaYGNHSf2aOTr+mkCbQZs0UWFjakgvOS09WDNbTkKbQ5tATESbRZtGm2hjaWN0TUebSJtJm0qbS5stTEybMzxNm2pjTptrY0+bUJtaUFGbUptTm3tGWjdUm1WbX0dKUlZOVptkY2xjV5tySUEzWJtZm2djWptbm2NGZWNcm12bM21mY16bX5tgm2GbM0lim2ZFY5tkm2WbNTlmmztDZ5tjYz1FJEFZQlcyaJttYyY7LURpm3BjWj5qm2ube2N1Y1M6bJttm26bb5tQN01TcJtOVlNVQTk0VVhRcZtym3ObdJs5UHZHdZt2m3ebKkg0MnibWkN5m3qbe5tuY3ybfZt8Y29jKDd3Y3RjfpuAm4GbOjeCm4ObIkWEm3ZjXUUoMnxGhZtgRIabh5siV4ibYUB5Y4mbipt6Y31jKUxzY4ubPlOMm0MxNG1xY3JjjZt4YzpQQ0ZzVH5jjpuPm2A9kJuRmydkkpuTmyZklJuVm5abc1EjZJebKWSYm5mbmpt3SJubnJudm56bNE+fmyhkLmRlQqCboZs0NqKbo5ukm6Wbppunm3I9qJsiZKmbqptpOipkq5usmyxkrZuum302XlYyZK+bLWSwm7GbspshZLObbjtdTSJHSUW0m7Wbd0G2myRkt5szRyw9PT0lZLibR1diMrmbK2RDPC9kuptrOzBkKEUxZLubvJu9m76bY1UjP7+bOmTAmzdkwZs7ZMKbw5s9ZMSbxZtWRsabx5tGOktAyJvJm8qbITg0ZMubzJvNm86bIVTPm9CbIzp+PdGb0pvTmzxk1JvVm9ab15vYmz9N2Zvam3lE25vcm3tPZkndm96bP1Pfm1FP4JvhmzNk4ps4ZDlkaUzjm+Sb5Zvmm+ebTkzom1RANWQwQTZkUE7pm0E7UzXqm3NIJz1HVSxJIjhKZOub7JtMZERR7ZvumzpS75vwmy068Zvym1Q685v0m/Wb9pv3m/ibQ2RtNfmb+pv7m01XQGR9Tz9k/Jv9m/6bXEFKTECcQZxCnEOcZ0pEnEWcRpxHnFdESJxUTEhkSZxKnEucR2RBZEycRGQtNU2cTpxZU0+cRmRQnFGcUpxTnHlSYzRUnDQ7VZxWnG5JV5w+NFicWZxanGw7W5xNUVycbUw1bV2cXpxfnGCcYZxinGOcZJxlR2WcZpxnnGicKFRpnEtkVVdCZGqcJT1FZGucbJxmU22cSWR4SW6cb5w+ZHCccZxlU3Kcc5x+R0k2dJx8VDMyV2R1nHacd5xCTnicTWR5nDxOepxbOHucfJxWZH2cSj9+nICcgZxOU4KcbEODnISchZyGnIeciJyJnIqcSEVYZIucjJyNnI6cj5yQnJGckpxETU9kk5yUnJWclpxUZFVkl5x+OpicZk+ZnJqcP1WbnJycnZxSZJ6cn5ygnKGcopyjnKScpZymnKecqJxQZKmcqpxOZKucrJytnK6cr5ywnLGcspyznLSctZy2nLecuJy5nGVNKkq6nLucvJwjQL2cJj1TZL6cv5xIOMCcwZzCnMOcxJxnZDRUxZzGnMecyJzJnMqcy5xbZMyczZzOnG9Bz5zQnGlk0ZzSnGdS05zUnF9k1ZxgZNac15wqT9ic2ZzanNucXUvcnFpkUWTdnGVk3pxcSGNk35zgnGdEYmThnGFk4pzjnOScfDNoZOWc5pznnOicYTXpnOqc65xMV+yc7ZzunGZk75wsO/CcUldPTHhr8ZxkZPKc85x2OfSc9Zz2nE1WWWRcZHpCXmT3nEtCREBQQvicdTEyTPmc+pz7nPyc/Zz+nECdQZ1CnUOdTjVEnUWdRp1HnW9kSJ1JnUqdS51MnU2dTp1PnS9GUJ1RnVKdYUZTnVSddWRVnVadV51YnVmdKUJanVudXJ1sQF1RbmRdnV6dX51gnWGdYp1jnWSdZZ1mnS5EZ51onWmdbWRqnWudbJ1tnXZkdGR+Qm6dXWRvnXBkcJ1+SnGdRFVynXOdcWR0nXWddp13nXideZ16nXpRe518nX2dfp2AnYGdgp1rZGxkg52EnYWdcmSGnStOh52InYmdip2LnYydjZ2OnY+dkJ1LRZGdkp2TnTFHlJ06QpWdlp2XnWpkmJ2ZnZqdSkGbnZydnZ2enZ+doJ02TDEzoZ2inaOde2SknXNkpZ2mnaedemSonX1kqZ18ZKqdq52sna2drp2vnbCdTjOxnbKds506M3dktJ21nXlkeGRsRbadt524nbmdup27nbydvZ2+nb+dwJ3BncKdPUDDncSdxZ3GnWhUx53Incmdyp3LnSJlzJ3Nnc6dz53QndGd0p3TndSd1Z3WnUQw153YnSRl2Z3anSNl253cnd2d3p3fneCdJDzhnSVl4p3jneSd5Z3mneedIWXonemd6p3rneyd7Z3unX5kdDHvnfCd8Z3ynfOd9J31nfad9534nfmdKGX6nSllJmX7nfyd/Z3+nUCeQZ5CnkOeRJ5FnkaeR54nZSplSJ5JnkqeS55Mnk2eTp5PnlCeUZ5SnlOeVJ5VnlaeV55YnlmeWp5bnlyeXZ5enl+eYJ5hnmKeY55knmWeZp5nnmieWUZpnmqea55snm2ebp5vnnCeK2UtZXGecp5znnSedZ52nneeLGV4nnmeep57nnyefZ5+noCegZ6CnoOehJ6Fnoaeh56InomeL2WKnouejJ4uZY2ejp6PnpCekZ6SnpOelJ6Vnpael56Ynpmemp6bnpyenZ6enmA5n56gnjBloZ6inqOepJ6lnqaep56onqmeqp6rnqyerZ6unjFlr56wnrGesp6znrSetZ62nreeuJ65nrqecDthbHBDu55GNVI7vJ69nr6ev55pQW5UwJ5EPsGewp7DnkZXxJ5WVFMyPmzFnsaex57InkFqyZ7KnsueL0I2NMyezZ7OnldRz57QntGeNDPSnjJIOz9AbNOe1J5LVtWe1p4/bEFs157Yntme2p7bntye3Z7ent+e4J7hnuKe455FbGY+P0xaRTw+5J5GbOWefjHmnuee6J5EbChVYzXpnkJsNkFjM+qe655DbDhLQ0B+TOye7Z7unu+eUkHwnkhs8Z7ynvOe9J71nvae9574nvme+p77nvye/Z5mOlNA/p5yVkCfQZ9Cn0xRQ59En0WfRp8+P0efMzdVSUdsYjtIn0xMfT1ISEmfKU9Kn0ufTJ9Nn06fT59Qn2lNUZ9rRVKfU59Un2k3VZ9Wn1efWJ9Zn1qfW59cn12fXp9fn0lRODpgn2GfYp9jn2SfSWxln2afSmxnn0A7S2xon2JsOjFZN2mfap9rn2yfbZ9un2+fcJ9xn3Kfc585PXSfdZ92n3efeJ95n3qfe59MbGZRTWx8n32ffp+AnztIgZ+Cn4OfhJ+Fn4afh5+In4mfip+Ln4yfjZ+On1Fsj5+Qn5Gfkp9TbJOfTTuUn2U8lZ+Wn5efmJ+Zn5qfm5+cn52fnp+fn6CfoZ9PbKKfN0mjn6SfpZ+mn6efOkOon2NsVVVQbKmfqp+rn6yfrZ9zVq6fr5+wn1JsTmyxn7Kfs5+0n1RstZ9VbLaft58/SbifuZ+6n7ufvJ+9nyhPvp+/n8CfwZ/Cn1xQw5/En8Wfxp8sUcefyJ/Jn8qfW0jLn8yfzZ9WbHVOzp/Pn9Cf0Z/Sn2xKWmzTn9Sf1Z/Wn9ef2J/Zn1ls2p/bn9yfPjDdn96f35/gn+Gf4p9XbOOfWGzkn+Wf5p9kbOef6J/pn+qf65/sn+2f7p/vnzxI8J/xn/Kf85/0n/Wf9p/3n/if+Z9HQfqf+5/8n/2f/p9cbGBRQKBBoEKgQ6BEoEWgRqBHoEigSaBbbEqgS6BMoE2gb1ROoF1sT6BQoFGgUqBToFSgRltVoFagV6BYoFmgWqBboFygXaBeoF5sX6BgoGGgYqBjoGSgZaBmoGegaKBpoGqgLDFroGygbaBuoG+gcKBxoHKgc6B0oHWgdqB3oHigeaB6oHugfKB9oH6ggKCBoF9sgqCDoISghaCGoIegiKCJoIqgi6BgbIygJleNoEBFjqCPoJCgPGsuMJGgkqCToHQ+ODgvUlYweTWUoDNYlaAsS5agXWOXoJigmaCaoJugnKCdoCxGZjCeoJ+goKBGRTlroaCioKOgpKA6a6WgpqCnoDtrqKCpoEBRqqAjRaugcmqsoDJEraA1RE5ArqCvoLCgc2pBRLGgb06yoLOgtKC1oHBqdGq2oLegfEm4oLmgI0e6oLugvKBYTH5OvaC+oL+gdWp2aixPZ0DAoMGgd2rCoMOgxKDFoMagPzZ4asegeWrIoHpqyaDKoHtqy6DMoM2gzqDPoNCg0aDSoNOg1KDVoNagcWrXoNig2aDaoNug3KDdoN6g36DgoOGg4qAuSGth46A4N2xh5KDloOagbWHnoDRXbmFvYUxT6KDpoOqg66DsoO2g7qBxYXE/cGFSNe+g8KDxoDcx8qDzoPSg9aBzYXJh9qB8OvegdGH4oPmg+qD7oDc5/KBRPv2g/qBAqkGqfERCql06Rj1DqkSqRapGqkeqSKp1YXdhSapKqkA2QU8oSnZheFV8U3hhfGF5YUuqTKp6YWpATap+YSFiR0BOqk+qUKpRqnthUqp9YVOqVKpVqlaqV6pYqiViWapaqluqVEFcql2qXqpfqiNiYKooYn4yImJhqmKqY6pNQ0IyJ2ImYmSqZaokYiliZqpnqitiaKppqmqqSVBtVihDLGJrqldPbKptqi5ibqpvqm86cKpxqmBpLWIqYnKqc6p0qnWqKzszVHaqd6p4qnmqeqp7qnyqfap+qoCqgaqCqoOqMGKEqoWqL2KGqmFph6qIqomqiqoxYouqjKqNqo6qj6qQqpGqkqoyYpOqlKqVqpaql6qYqpmqmqqbqpyqnaozYiFMnqo0Yp+qoKpAq0GrQqtDq0SrRatGq0erSKtJq0qrS6s1YkyrTatOq0+rUKt+UFGrUqtKQlOrcVNUq3VNVatWq2BnV6tYq2FnWataq1urXKtBPl2rXqtfq2CrakJhq2KrY6tkZ2SrZatjZ2arZ6toq2mraqtrq2ZNbKs1Q22rbqtiZzc7Vk9vq2FBaWdwq3GrcqtoZ3OrdKt0ZyMydat2q3ereKtqZ3mrZmd6q3urfKt9q36rbGdrZzpJgKuBq2RVgqtlZyk3Z2eDq4SrhauGq4eriKuJq25niquLq4yrjatzZ46raVaPq5CrkauSq21nk6tyZ5SrcWeVq5arl6tgMJirmauaq5urdWecq52rnqufq6CrQKxBrEKsQ6xErEWsRqxHrEisSaxKrHJHS6xFQG1ATKxNrHBBcGdOrE+sUKxRrHZndktSrFOsVKxVrFasV6xYrFmsWqwiaCFoW6xcrF2sXqxfrGCsQVdhrGKsemd5Z2Ose2dkrHdnZax+Z2asfWdnrHxnaKxprFVBWUd9RUNFaqxrrGysbaxurG1Hb6xwrHGscqwjaHOsdKx1rHasd6x4rHmseqx7rHysfax+rICsgayCrIOshKyFrIasJmiHrCVoiKwnaHc6eGckaImscEgqSYqsi6yMrI2sjqyPrJCskaySrJOslKyVrJasKWiXrJisZTmZrJqsm6ycrJ2sflEoaJ6sn6ygrECtQa1CrSpoQ60taC5oRK0nQUWtRq1HrS9oSK1JrUqtMGhLrUytLGhNrTRoTq1PrVCtUa1SrVOtVK1VrVatV61YrStoWa0xaFqtW61crV2tXq1frWCtYa01aDJoM2hirWOtZK1lrWatZ61orWmtaq1rrWytba1urW+tcK1xrTdocq1zrXStda12rXeteK15rXqte618rX2tfq2ArYGtgq2DrYStha2GrYetiK2JrTZoiq2LrYytja2OrY+tkK2RrZKtTzmTrSxwlK0tcJWtMEZqMD9Ilq1fTZetmK2ZrZqtm62crZ2tTU4xap6tn62grUCuMmpBrj9GSTRCrkOuRK5FrkauR65IrjNqSa5KrkuuTK5nVU2uTq5PrlCuUa5SrlOuVK55XVWuNGpWrjVqV642aliuWa5arluuSjgwX3VJXK5wTF2uXq56SV+uYK5hrmKuY657SWSuZa5DUyZLZq4mOC5wQjFnrjhlb0xJU1c8aklormc1aa5QRGk1aq4ubi07a65srl5nba4vbm6ub65wrnGuKTNyrnOuMm50rnWuMW5nPXauMG43TneueK55rnquT0V7rnyufa5+rnRBTlszbnNQgK6BroKug66EroWuhq6HrlRCaEaIromuiq4sN4uujK6Nro6uj66QrpGuNG6Srmszk66UrpWuezs1bpaul66Yrpmumq5cZ5uunK6drjZunq6fri49oK5Ar0GvQq9icUOvRK9Fr2hKRq9JUlpwR69bcEivXHBGQUmvbThOPkqvS69ecEyvMUVdcHFRTa9gcEwwaj1Or0+vUK9Rr1KvX1JfcFOvLzRoN2ZwZXAjRmFwYnBDNFSvVa9jcG5VVq9Xr1tMUj4yPFivWa9ar2hwZ3BkcCEyW68iVjhTNz4sSFyvXa9qcF6vX69gr2Gvd1Fir0xWWzppcGOvOzZkr2WvNE1mr2evJkZor2mvaq8hQWtwbnBrr21wcHBscGyvPjtvcG2vbq9vr3CvNUxycHGvcq9VM3OvdK91r3avVDF3r3ivc3B5r3qvdHB2cGE0e69xcHyvd3B9r36vgK+Br3pwgq94cIOvhK+Fr3Vwhq+Hr4ivia99cIqveXB8cH5wi68hcYyvja+Or0FOJHGPryNxkK92QXtwXUqRr5KvcTRxMTFMk68mcZSvla8ncZavl68scU5VKXGYr5mvM0iar5uvnK8icZ2vK3EocSVxnq+frypxoK9AsEGwQrBDsESwRbBGsCkwLXFHsEiwSbBKsEuwTLAvcU2wMXFOsE+wULBRsFKwMHFTsC5xVLBVsFawV7AiUViwWbBasFuwXLBdsF6wMnFfsGCwYbAzcWKwY7BksGWwZrBnsGiwabBvOWqwa7BHNWywVzBZMG2wbrBvsG1UcLBENXGwVD1KOydwcrBzsF44dLB1sChwdrB3sCgweLApcHmwerBuTXuwfLAqcH2wfrCAsIGwgrCDsISwhbCGsIewK3CIsImwirCLsIywjbCOsI+wkLAkRpGwkrBlVmRxk7BlcZSwlbCWsJewmLCZsJqwm7CcsJ2wc0OesJ+wW1OgsECxUVZoRUGxL1NCsWZSQ7FEsUFuOzA1VU5RYDxQOkWxeD9GsUc4QTVMRUexSLEiSkmxSrFLsUtDTLFNsU6xT7FQsUJuUbFSsVOxVLFVsVaxV7FYsT9EIjZZsWxtJENasTFWW7FcsV2xYE9vbV6xX7FORWCxXDZhsWKxIUpjsWSxbW1lsWaxcG1xbTxDZ7E0P2ixbm1psWqxa7FssW2xbrFvsXCxcbFysXOxdG1ybXSxdbF2sXexZlVfQ3ixc215sXqxe7F2bXyxI1UjUX2xfrGAsXVtgbFQQ4Kxg7GEsYWxhrF3bXQ/bD54bYexd0yIsVtRibGKsYuxRVd2VYyxfG2NsY6xj7F7bZCxkbGSsZOxlLGVsZaxl7F5bXptmLGZsZqxm7GcsZ2xnrGfsX1tJj6gsUCyQbJCskOyL0shbj02RLIibkBERbJ+bUayR7JePUcySLJJskqyS7JMsk2yTrJPslCyUbJSslOyQzZUslWyVrIlbjpYI24mbleyWLJZsmlDcjNasluyXLJdsl6yX7InbiRuOU9gsmGyKG53QmKyY7JksmWyZrJnsmiyabJqsmuybLJtsiluKm5usiteb7JwsjNGcbJGR3KydVZJNXOyMkt0snWydrIrbneyeLIrTXmyLG56snuyfLJ9sn6yMFWAsi1ugbJEdoKyg7KEsoWyhrKHsoiyibKKsouyjLKNso6yR1uPspCykbKSspOylLKVspayl7IjNJiymbKasixDZnGbspyynbKesp+yOEpTUqCyKlZAs3JvQbNYPkKzQz1zb0w2KzBDs0SzRbNGsy9KR7NIszZtSbM3bUqzS7NMs02zeU4vN3M/OG1rQjBJTrNPs1CzUbNSs1OzOW1Us1WzdkYzP1azV7NYszxteEVZs1BRWrMpVzptO21bs2JRXLM/bUBtXbNEbV6zX7Ngs0htYbNGbU5taFVis0ltY7Nks0dtPm1ls2azaUVns2izabNGRmqza7NpSVJUQW1CbUNtRW1ss3lAbbMhNG6zb7Nws3GzaDlys1Btc7N0s3WzdrNRbXezSm14s09tebN4Tnqze7M2S0xtTW18s32zfrOAs4GzdU+Cs4OzhLOFs4azh7OIs4mzirOLs4yzjbNSbXJBMlNLbTdIjrOPs5CzkbOSs5OzlLOVs288lrOXs5izmbNwRZqzm7Ocs52znrOfs6CzQLRBtEK0Vm1DtG81RLRFtDVCLTBpS0a0R7QuMUi0VG1JtEq0S7RrTWI1TLRVbVNtV21NtE60ejVPtFhtULRZbVG0XG1StEwxU7RUtFW0VrRXtFi0WbRatHZFbjxabTxMajJbtFy0XbRetFttX7RgtGG0YrRrRGO0ZLRFNGW0ZrRntHUwaLRptGq0X21aQGg0a7RstG20brRNRW+0cLRxtF1tRD9ytHO0dLRebXW0drR3tHi0ebR6tHu0fLR9tH60gLSBtIK0g7QlRIS0hbSGtGBth7SItIm0irSLtGFtjLRjbY20jrRXQY+0kLRHO5G0krSTtJS0lbSWtDg9l7SYtJm0Ym2atJu0nLSdtJ60n7SgtEC1QbVCtUO1RLVFtWRtRrVHtUi1SbVKtUu1TLVNtU61T7VmbVC1UbVStVO1VLVlbVW1VrVXtVi1WbVatVu1XLVdtV61X7VgtWG1YrVjtWdtZLVltWa1Z7VotT5KamxxQGm1Z0lqtWtsbkZrtWy1bbVutWxsb7VtRm1scLVxtXK1c7V0tXW1drV3tXi1cGx5tXq1ZldzbHu1fLVxbG5sb2wjV3FJbkt0bH21cmx+tYC1aU+BtXZsMUaCtYO1hLWFtUA8hrV1bIe1iLWJtYq1i7WMtY21OzV2O461d2yPtZC1kbWStZO1d1l7PZS1lbU7QnhslrWXtZi1mbV5bJq1m7WctZ21IzietZ+1oLVAtkG2QrZDtkS2RbZGtnpsR7ZItkm2SrZLtky2TbZOtk+2ULZRtlK2e2xTtlS2VbZWtle2WLZZtlq2W7Zctl22fGxetl+2YLZhtmK2bVMuWGtAY7ZdR0w6ZLZjUD1LZbY6TWa2Z7ZROGi2abZ8MWq2b0drtlZWbLZttm62Rj9rQ2+2cLZ1b3G2crZYQ3O2dLZ1tna2d7Z4tmJXebZ6tnu2d29TM3y2WEdtUX22SFZ+tnhvgLZ2b4G2fTtGM4K2g7aEtoW2hraHtoi2VT2Jtoq2RlKLtmA7jLaNtiFPjrZ8b3tvj7aQtnlvkbaStpO2lLZMM5W2VEkwS5a2l7aYtpm2mrZ+b5u2nLZeMJ22nrZJVp+2oLZAt31vQbdtM0K3Q7dVdkS3RbdGt0e3SLdJt0q3S7dMt023TrdPt1C3UbdSt0hOU7dUt1W3InBWtyFwV7c+NVo8fDtYt2U4Wbdat1u3XLddt163QkRft2C3Ybdit2O3ZLdlt2a3Z7dotyNwabdqt2u3bLdtt2tLbrdvt3C3cbdyt3O3dLd1t3a3d7d4t3m3erd7t3y3fbd+t4C3gbeCt4O3hLeFt4a3JnCHt4i3ibcoUYq3Pz5uRzZxN3FVP4u3jLeNt463KTQ4cTtNj7dURy1VkLc5cZG3OnGSt5O3lLeVt09HlreXt5i3JFJPVpm3mrc7cVE9MDQ9Ppu3nLedt1w0UU6et18/PXGft6C3QLhBuHo/PHFCuD9xQ7hEuEW4PnFAcUa4R7hIuEm4SrhBcUu4TLhNuE64T7hQuFG4UrhTuFS4Vbh+QVa4V7hYuFm4WrhbuFy4XbheuF+4YLgiQWG4YrhjuGS4ZbhmuGe4aLhpuGq4ekpruGy4PlVtuG64b7hwuDo+OT5CVXG4crgiP3O4L001cXS4dbh2uHe4eLh5uF89erhLNnu4fLh9uH64gLiBuIK4g7iEuHFWQ3OFuIa4RHOHuE04iLiJuIq4RnNHc4u4SjCMuEVzjbhJc3FLjriPuJC4S3ORuCZQkriTuEoxSHOUuJW4lrhPc5e4UTWYuJm4V3OauFJzm7icuJ24VHNTc3s3nrg/MZ+4TnNKc1o1oLhQc0C5QblRc0K5VXNDuUS5RblGuU1zR7ljPEi5fUFJuVZzSrlLuUy5TblOuU+5WnNQuUxzUblINVK5bj1cc1O5VLkkN3A/flYyTVW5cDRWuV8yV7lYc1i5WXM4SVm5XXNauVu5XnNcuWFzXbleuV+5YLlhuWK5Y7lkuWW5ZrlnuV9zaLlpuWNzYnNquWu5W3NsuWo/bblvM265YHNvuXC5KUdxuXI8crlzuXS5dblrc3a5d7l4uXm5erl7uXy5Pzl9uX65ZHOAuYG5grktMn47g7ljS4S5hbmGuYe5bXNpc4i5ibmKuVw5bnOLuYy5jbllc2ZzanNhQmxzb3Noc308jrmPuZC5ZE+RuZK5cHOTuZS5lblnc5a5l7mYuZm5mrmbuZy5nblyc565n7mguUC6LVcqRkG6QrpDukS6c3NFuka6R7pIunFzSbooQkq6S7pMuk26TrpdOHVzT7pQunRzUbpSulO6WzRUulW6Vrp2c3dzV7pYulm6eHNaulu6XLo6QF26XrppQF+6YLphumK6Y7pxRWS6Zbpmume6e3Nounpzabpqumu6bLptum66b7pwulg0cbpyunO6fnN5c3S6dbp8c3a6d7p4unm6erp7un1zfLp9un66gLqBuoK6g7qEuiF0hbqGuoe6iLqJuoq6I3RJO4u6jLoidI26jrqPupC6kbqSupO6lLqVupa6l7qYupm6JHSaupu6nLqdup66n7o+MiZ0JXSgukC7QbtCu0O7RLtFu0a7R7tIu0m7LjxKu0u7TLtNu067T7tQu1G7UrtTu1S7VbtWu1e7WLtZu1q7W7tcu127Xrtfu2C7Ybtiu2O7ZLtlu2a7Z7tou2m7artru2y7bbtuu1dDYVlvu3C7cbtyu3O7dLtgQEx0UVd1u3a7d7t4u3m7ert7u3y7fbt+u4C7WzeBu4K7g7uEu4W7hruHu050I0GIu4m7SUaKu1Y0M1WLu4y7jbtQdE90UXRaS467j7tSdJC7QVRgVpG7kruTu5S7YDeVu5a7l7s4QZi7mbs7QVN0LD6au5u7nLudu567YjSfu6C7VHRVdCs+QLxBvFZ0QrxDvES8W3RFvFd0WnRGvH06R7xYdFl0SLxJvEq8S7xMvE28TrxiOEdMXHRPvFoyULxRvFNDUrxTvGNUNz9UvFW8VrxXvFi8WbxavF10W7xcvF28XrxfvGC8NEVhvGK8Y7xkvGW8ZrxnvGi8aXRpvGq8NU9rvGy8bbxuvG+8cLxxvHK8c7x0vHW8drx3vHi8SU55vHq8e7x8vH28fryAvIG8gryDvIS8hbyGvIe8iLyJvIq8i7yMvI28jrxYS4+8d0uQvJG8kryTvHQ9lLyVvJa8T1eXvJi8mbxbQJq8m7ycvJ28nryfvKC8QL1BvUK9Q71EvUW9Rr1HvUi9Sb1KvUu9TL1NvU69T71QvVG9Ur1TvVS9Vb1WvVe9WL1ZvVq9W71cvV29Xr1fvWC9Yb1ivWO9ZL1lvWa9Z71ovWm9ar1rvWy9bb1uvW+9cL1xvXK9c710vXW9dr11UHe9eL15vXq9e718vX29fr1qdIC9gb2CvYO9hL2FvYa9h72IvYm9ir2LvYy9jb2OvY+9kL2RvZK9k72UvZW9lr2XvZi9mb2avZu9nL2dvZ69n72gvUC+Qb5CvkO+RL5Fvka+R75Ivkm+Sr5Lvky+a3RNvk6+T75QvlG+Ur5Tvmx0VL5Vvla+V75Yvlm+Wr5bvly+Xb5evl++YL5hvmK+Y75kvmW+Zr5nvmi+ab5qvmu+bL5tvm6+b75wvnG+cr5zvnS+db52vne+eL55vnq+e758vn2+fr6AvoG+gr6DvoS+hb6Gvoe+iL6Jvoq+i76Mvo2+jr6PvpC+kb6SvpO+lL6Vvpa+l76Yvpm+mr6bvpy+nb6evp++oL5Av0G/Qr9Dv0S/Rb9Gv0e/SL9Jv0q/S79Mv02/Tr9Pv1C/Ub9Sv1O/VL9Vv1a/V79Yv1m/Wr9bv1y/Xb9ev1+/YL9hv2K/Y79kv2W/Zr9nv2i/ab9qv2u/bL9tv26/b79wv3G/cr9zv3S/db92v3e/eL95v3q/e798v32/fr+Av2N3gb+Cv4O/hL+FvzE3hr+Hv4i/ib+Kv210i7+Mv42/jr+Pv5C/kb+Sv5O/lL+Vv5a/l7+Yv5m/mr+bv5y/nb+ev5+/oL9AwEHAQsBDwETARcBGwEfASMBJwErAS8BMwE3ATsBPwFDAUcBSwFPAVMBVwFbAV8BYwFnAWsBbwFzAXcBewF/AYMBhwGLAY8BrV2TAZcBmwGfAaMBpwGrAa8BswG3AbsBvwHDAccBywHPAdMB1wHbAd8B4wHnAesB7wG50fMB9wH7AeWZAPnpmbDp7ZktPfGY8VDY8fWZ+Zk08UkgzTiFngMA/NCJnNElZOElEgcBdV1pCVzc9VkZORDeCwIPAJkUjZ19PJGclZyZnN0FpV3BJOE8vVlVWJ2dtMChnKWdcSW9SLT4qZ3MwXkhhPStnRkiEwCxnZjt4OCRRLWdnQng+Sj0zTS5nL2duPmVQhcBnS1BMTDwwZyg8d1AxZ4bAeFAyZzNnQjQ0ZzVnfkksTmBDN2dBMXEzh8A4ZzlnW1dAVTpnTEI6VztnPGc9Z2o8ZUNCQD5nP2cpPIjAQGdBZzZnUDZCZ4nAQ2dEZzo7XjVGQmAxRWc1VEZnPzhIZ0dnbDeKwElneDJKZ0tnTGdNZ05nT2dQZydTdUtRZ1JnU2dUZ0lJVWdWZ1dnWGdZZ0k9Wmc+c4vAVziMwDFIjcCOwI/AkMCRwJLAk8A/c5TAQHNBc5XAlsCXwJjAmcCawJvAnMCdwJ7AXjl4TZ/AoMBoWDE6QMFeQjduQcEjN0LBQ8FEwUXBOW5GwThuVTBHwUjBScFKwUvBO25WVW9XTMFNwU7BQ1ZPwVDBPW5wSlHBPG5SwVPBVMFVwT5uVsFXwVjBWcFAblrBW8E/blzBXcFewV/BYMFhwWLBY8FyUWTBPEdlwUBDZsFnwWjBacFqwWE4a8FswW3BbsFvwWdBcMFxwUZ0X1BHdHLBW09zwXTBOkh1wXbBSHR3wXjBecF6wXvBfMF9wUl0SnR+wUt0gMGBwYLBg8GEwXpZfjiFwYbBcWVwU4fBYHSIwUxOicGKwYvBYTOMwY3BjsGPwTRxkMFuUpHBYXSSwZPBlMGVwZbBaE9idJfBmMFMR5nBmsGbwZzBncGewVQ1ZDRkdJ/BoMFAwmN0ZXRBwkLCZnRDwkTCRcJGwmd0R8IyOj8wSMJodEnCSsJLwkzCTcJOwk/CLTdtUlDCUcJSwitST0BTwjw/I2tfVUhqVMJVwlbCV8JzcXg2I0tYwlnCTURawmdxW8JocXs4aXFEOkVUUjBcwl3CanFewl/CYMJrcWHCbHFiwmPCbXFucW9xcXFwcVVFZMJlwmbCZ8JowmnCcnFqwno2a8J0cS5SR15KS2zCbcJcM27CIjVvwiI5cMJxwnREdXFywnPCdnF0wnXCdsJEQXtBMFZ3cXfCeMJ5wnrCeHF7wipBfMJ9wn7COEaAwls+gcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwnlxTzSPwpDCkcKSwpPClMJ6cZXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwkDDMm0xbUHDQsNgS15SQ8NBS1hVRMNiSEXDX0AhPEbDR8NIw0nDSsNLw0FrTMNNwyRQTsNiVk/DRzZYOEBrTjhQwz9rJjNJOStWUcN0N0o3UsNTw1TDZzw+N0ZrVcNHazkwTz9Ww0VrfVNXw0hrWMNZw0lrWsNbw043XMNCa0RrdklXVk1VMlBPazhOUGtdwyg1XsNfw2DDYcNiwzMxUmslTGPDZMNlw2bDZ8Now2nDVkVTa2rDUWtfRU5rJEpVa3swa8Nsw3o6bcNuwzdYY3Fvw0prS2tMa01rVmtAZllrcMNoP0hSV2tca2w4WGtxwzo9csNYUHPDNzB0w11rXER1w3bDd8N4wyxWecN6w3vDYDR8w33DdkI5PH7DgMNaa1trYFRqRlREX2snRXVZgcMxMoLDZGuDw0U9hMOFw4bDYmuHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw2NrlMOVwyw4lsNRTWVrl8OYw5nDYWuawzNBm8Ocw53DnsOfwyJGoMNAxEHEQsRDxETERcRzTEbEZmtHxDBAOFJna0jEScRKxC84LThLxGhrO0dzTUzETcROxGpra2tPxFDEUcRSxFPEbWtUxFXEVsRXxEhQWMRya1nEbmtaxFvEXMRxa3lIXcR8UWxrXsRfxGlrYMRhxGLEY8Q5OFlPZURva3BrWkxITXIwZMR2a2XEZsRnxGjEacR1a2rEMjJrxGzEbcRuxGA4b8R3a3DEccRyxHPEdMR1xGwxdsR3xEVMJEQlT3jEecR6xHvEfMR5a33EfsQibIDEckWBxHprgsSDxITEhcSGxIfEiMSJxEVJisSLxIzEjcSOxI/EX2J+a5DEkcSSxJPETk0hbFsxN1OUxJXEXFKWxJfEmMR9a5nEe2uaxJvEnMSdxJ7En8SgxEDFQcVCxUPFRMVFxUbFR8VIxUnFSsVLxUzFTcVOxTwzT8VQxVHFMGpSxVPFVFdUxSt0dDNVxVbFV8VYxVnFQVZCVlrFW8VcxV3FXsVfxWlVSj5gxSd0YcUoUih0KXRixSp0Sz5fU2PFZMVlxWbFZ8VgSWFJaMVpxUJzasVmSmvFckxsxW3FbsVvxXDFccU2YjRLcsVoTltWc8UtdC50L3R0xXXFdsV3xTJ0eMU9OjN0YzAwdHnFMXQiPVUyesU2dDd0ZjYwMk9PNHQsNHvFNXR8xX3FOHR+xYDFgcWCxYPFOXSExYXFJ02GxTp0h8U7dIjFicWKxTx0i8WMxY3FjsWPxZDFkcWSxVJLk8U9dJTFlcWWxZfFPnSYxZnFmsWbxZzFncWexZ/FP3SgxUDGQcZCxkPGXnQ8QWg8RMYrSV5RdWVFxkbGR8ZIxjNcVVJJxkrGNFwsMDVcS8ZMxlo9TcY5XE7GT8ZQxkJYUcY3XHNTUsZWSTpcNlxTxjtcIkNUxlXGVsZXxjxcRVw9XFjGWcZfTiVWWsZPXFvGTVxcxl3GUlxmPStCXsY4XEtcTlw+XFI3RTBHXD5QQVwoO1/GPDdMXGDGYcZGXD9cW0dixmPGZMY/UUBcZcZmxkpcZ8ZoxlBcacZqxi1OQlxrxkNcSFxJXFQyUVxVS2zGN1RbXF9cJkxmXG3GZ0NcXG7Gb8ZBP1lccMZ6MDY5ZVxTXHHGRFxWXHRIYD9yxnPGdMZ1xjtJdsZ3xnjGPTF5xiJTesZ7xlpcfMZ9xlVcfsY7RoDGXlyBxoLGg8aExoXGQlcvQzY3UUcpQ2JcWFxrXFRchsaHxl1ciMYlPldcicZgXIrGi8ZjXGRcjMZ4XI3GjsZhXCJdZ1yPxpDGkcaSxpPGlMaVxpbGl8aYxms8RDSZxprGI0NnMnpcm8ZyXJzGb1ydxnxcblxwUmgynsZXSGNIe1yfxm1coMZAx0HHd1xCx0PHdVxEx0XHIz50XEbHXTJHx0jHScdKx0vHc1x2PGhcRDtMx3NATcdOx0/HUMdRx1Q8aVxqXFLHcVx2XHlcNDVTx1lIZzt+XH1cK1MhXSNdJV1xUiRdJl0nXSlSVMdVx1bHV8dYx1nHWsdJOildW8dcxzZdMV00XV3HXsdfx2DHYcdix2PHMF1ORmTHZcdyQGbHZ8dox2nHL0lqx2vHbMdsXC5dbcdux2/HcMc3XXHHcsdwXC9dc8c4XXTHLF11x3bHd8d4x3nHesd7xzldM10tXSpEfMd9x37HgMcoXTNAK0EqXStdgccyXXE7NV0oUzpdgsc7XSdDg8eEx1JdPF2Fx4bHh8dRXYjHPTmJx4rHVT6Lx3o+jMeNx0o6jsePx5DHkcdKXZLHRV2Txz9dlMeVx5bHSzJDXZfHS10kMlVdmMeZx5rHPl2bx5zHncdQRlBdnsefx6DHQMhByFRdYkFGN0LIQ8hEyEXIRshOXU9dR8hIyEnIRF1KyEvITMg9XU3ITV1RTE7ISV1PyFDIUchSyEJdSEM8Ri5OTF1TyEhdVMhVyFbIV8hYyFnIQV1ayFvIXMhGXVxCXcheyF/IYMhhyGLIKVMqU1NddE94SGPIZMhlyGbIZ8hoyGnIashmXWvIbMhtyG7Ib8hwyEddcchyyHPIYF1kQnTIdch2yHfIeMh5yHrIe8hhXXzIfch+yIDIgciCyIPIhMiFyIbIV12HyIjIiciKyIvIeFaMyFldWF1wOFZdjciOyI/IkMhPRpHILTaSyJPIlMiVyJbIYl2XyHk6YVRnXZjImciayFA0m8haXZzIez9jXZ3IX12eyF1dn8igyEDJQclCyUPJRMlZNUXJRslHyUjJW11cXV5dSckvPWRdSsllXUvJTMlNyU7JT8lQyVHJUsl1XVPJSUNUyVXJYktWyVfJWMlZyXJdWslbyVzJXcleyV/JYMlhyWLJY8lkyWXJZslhWGfJaMlRRmnJdF1qyWvJbMl0VXNdcF1tyW7JbF1vyW9dcMloXXHJcsluUHPJdMl1yXbJWEhuXXfJeMlpXXnJeslqXXJLe8ltXXzJfclNMX7JgMmByYLJg8mEyTZAhck7PHFdhsmHyXddiMl2XWtdicmKyYvJjMmNyW5FjsmPyZDJe12RyZLJk8mUyZXJlsmXyZjJmcmayZvJJF6cyZ3JI16eyZ/JoMlAykHKQspDykTKRcpGykfKSMp4XUnKSspLykzKb0NNyntCTspPylDKYVVRylLKNU5TylTKVcpWyn1dV8pMMljKWcpaylvKXMpdyl7KX8pgymhEX0phymLKY8pkymXKZspnymjKacpqyj5Hel18XX5dIl4qME4xa8psym3KbspvyixecMpxynLKc8omXjY9b0h0ynXKdsp3ynjKecp6ynvKfMp9yn7KIV6AyoHKJV6CyoPKhMqFyilehsqHyojKicqKyihei8qMyo3KJ16Oyo/KkMqRypLKk8qUypXKlsotXpfKTFSYypnKmsqbyjNeKl4uXpzKncpZQJ7Kn8qgykDLQcshMTZeQssxXkPLRMtFy0bLR8tIy0nLMl5Ky0vLTMtNy07LT8tQy1HLUstTy1TLJlE1XlXLVstXy1jLWctay1vLL15cy13LXsswXl/LPVBgy2HLYss0Xm1KOV5jy2TLZctmy2fLaMs4XmnLN15qy2vLbMtty27Lb8twyztecctyy3PLdMt1y3bLd8tlPXjLect6y3vLfMtYMmpDfct+yzpegMs6RYHLgsuDy4TLhcuGyzxeh8uIy4nLisuLy4zLjctZTI7Lj8uQy5HLKjeSy5PLlMuVy5bLl8uYy5nLmsuby5zLncuey5/LoMtAzEHMZVRCzEPMRMw9XkXMRsxHzEjMScw/XkrMS8xMzE3MTsxPzFDMUcxSzFPMVMwiRFXMVsxXzFjMQV5ZzFrMW8xczF3MXsxfzGDMYcxizGPMZMxlzGbMZ8xozD5eacxAXmrMa8xszG3MbsxvzHDMccxyzHPMdMx1zHbMd8w6VXjMecx6zEJee8x8zH3MfsyAzIHMgsyDzITMhcyGzIfMiMyJzIrMi8wuciI7MkIwRUdCjMyNzC9yjsyPzJDMkcySzGlQk8yUzJXMXVOWzJfMmMw9a5nMmsybzJzMncyezJ/MoMxmMzByQM0xckHNQs0tSkPNRM1FzUbNR81IzUnNZzozcjVyNHJkSzpPMnI0Sk9SbEJKzUvNTM1NzU7NT81QzUNOOHJ2MDdyUc1SzVPNVM1VzT5yVs1PMlfNWM1ZzVrNW81czUFROnJdzV7NX81gzWHNPHJpVGLNY807cjZyP3I9cmTNOXJlzWbNR3JEckZyZ81ozUpyQnJAcmnNas1rzUVybM1tzW7Nb81wzXtWcc1yzXPNQXJ0zXlHX0l1zUhyRjkwNXbNd81DcklyUHJWcnjNec1XO3rNe818zVVyXE19zWtWfs2AzVJyVHKBzYLNg82EzXI4hc2GzYfNiM1LconNis2LzU5yeUKMzV1VTHJNck9yU3KNzY7Nj81ZcjxTkM2RzZLNk81qNpTNcUqVzWQ3V3KWzZfNmM1YclpyXXJbcpnNms1ccpvNnM2dzZ7NUVFRcp/NSU2gzU9OKVZAzmNyQc5bQ0LOYHJDzkTOL0Bscl5yRc5hckbOR85IzmhySc5KzkvOTM5ick3OTs5nck/OUM5mclHOUs5pclPOVM5Vzl9yVs5XzmRyanJYzlnOWs5bzlzOXc5ezixTZXJ1Ml/OYM5ycmHOK1BizmPOZM5lznVyZs5nzmjOSDtpznlyas5rzmzObc5uzm/OcHJwznHOdnJ4cnpycs5zznTOdc52znfOeM55znNyes5xcnvOfM59zns6fs57NYDOgc6CzoPOb3J3cm1ybnKEzoXOhs5rciZzh84jc4jOic4ic4rOi850cozOWkiNzo7Oj86QzpHOe3KSzpPOlM4lc5XOls6XzpjOmc6azpvOeEOczp3Ons6fzqDOQM9Bz0LPfXJDz0TPJ3MpcyRzRc98ckbPR89IzytzSc8qc0rPS89Mz03PXUJOz0/PLnNQz1HPMHNSz1PPVM9Vz1bPIXNXz1jPWc8xcyxzWs9bz1zPXc9ezy9zfnItc1/PYM9hz2LPY89kz2XPMnNmz2fPaM9pzzRzas9rz2zPbc8oc27Pb89wz3HPM3Nyz3PPdM81c3XPds93z3jPec96z3vPfM99z37PN1CAz4HPgs+DzzhzhM+Fz4bPh895WYjPic+Kz4vPjM+Nzzlzjs+Pz5DPkc+Sz5PPlM+Vzzdzls9kSDZzl8+Yz5nPms86c5vPnM+dz57Pn887c0A0oM9A0EHQQtBD0ETQRdBG0EfQSNBJ0ErQS9BM0E3QQ25O0E/QUNBR0FLQU9A8c1TQVdA9c1bQV9BY0CpRWdBa0FvQLHRGUFzQXdBe0F/QYNBh0FBQXFFi0GPQZNBl0GbQZ9BOT2jQadBWPWrQQ1Fr0GzQbdBu0G/QcNBx0GI6aWFCUkJxOTJy0HPQbTFDcXTQQElEM3XQcll20CVLd9BEcXjQedB60HvQVFZ80H3QftCA0IHQRXFAdEZxgtAsVEdxg9BAMEF0hNCF0EJ0htCH0Hw0iNBbRYnQitCL0IzQO0yN0I7Qj9BkUJDQkdCS0JPQlNBgTZXQltCX0JjQmdBIcZrQc1mb0JzQndCe0J/QoNA7MUDRLk9B0ULRQ9EkOETRRdFG0UfRSNFKcUnRStFL0UzRS3FN0U7RT9FQ0UMyUUFR0VLRMFdJcVPRVNFMcVXRVtFX0VjRTnFZ0VrRW9F2WVzRYVIjVF3RXtFDdDlIX9Fg0WHRYtFj0UR0ZNFl0U1xT3FjP1BxZtFn0VRxaNFp0WrRa9Fs0W3RbtFWcVFxb9FRSWFFcNFx0XLRY0J8OXPRdNFTcXXRVXF20XfReNFTOXnRetF70XzRfdF+0YDRW3GB0YLRg9GE0YXRVjqG0X0wWXGH0YjRidGK0YvRWHFScVpxjNGN0Y7Rj9GQ0VdxkdGS0ZPRbEiU0ZXRltGX0UpNXXGY0ZnRmtGb0T1lnNGd0Z7RXHGf0V5xoNFA0kHSQtJD0kTSRdJG0kfSSNJfcUnSStJlT0vSTNJN0k7ST9JQ0lHSUtJT0lTSVdJW0lfSWNJZ0lrSW9Jc0l3SXtJf0mDSYdJi0mPSRXRzPWTSZdJm0mfSaNJp0mBxatJr0mzSbdJu0m/ScNJx0nLSc9J00nXSdtJ30njSedJ60nvSfNJ90mFxftKA0oHSd06C0ipSg9J7cYTShdIyOIbSh9KI0onSitKL0ozSjdKO0o/SkNKR0pLSk9KU0pXSltKX0pjSmdKa0pvSnNKd0p7Sn9Kg0kDTQdNC00PTRNNF00bTR9NI00nTStNL00zTTdNO00/TUNNR01LTU9NU01XTVtNX01jTWdNa01vTXNNd017TezxbOV/TZjlZQ1NKaGpAQHU+aWpqamtqYNNsam1qbmpvakc9YdNi02PTe3Vk02XTZtN9dWfTfnVo03x1adNq02vTbNNiPW3TIXYlNG7Tb9Nw03HTInZy03PTdNMjdnXTdtN30zJseNN503rTe9N8033TftOA04HTgtOD04TTVFGF04bTh9OI04nTitNqWYvTjNON047Tj9OQ05HTktOT05TTldOW05fTmNOZ05rTm9Oc053TntOf06DTQNRB1ELUQ9RE1EXURtRH1EjUSdRK1EvUTNRN1E7UT9RQ1FHUUtRT1FTUVdRW1FfUWNRZ1FrUW9Rc1F3UXtRf1CR2YNRh1GLUY9Rk1GXUZtRn1GjUOm5p1GrUa9Rs1G3UbtRv1HDUcdRy1HPUdNR11HbUd9R41HnUetR71HzUfdR+1IDUgdSC1IPUhNSF1IbUh9SI1InUitSL1IzUjdSO1I/UkNSR1JLUk9SU1JXUltSX1JjUmdQyVZrUm9Sc1J3UntSf1KDUQNVB1ULVQ9VE1UXVRtVH1X5TXExI1UnVStVL1UzVTdVO1U/VREpQ1VHVUtVT1VTVVdVW1VfVWNVZ1VrVW9Vc1V3VXtVf1WDVYdVi1WPVZNVl1WbVZ9Vo1WnVatVr1WzVbdVu1W/VcNVx1XLVc9V01XXVdtV31XjVedV61XvVfNV91X7VgNWB1YLVg9WE1YXVhtWH1YjVidWK1YvVjNWN1Y7Vj9WQ1ZHVktWT1ZTVldWW1ZfVmNWZ1ZrVm9Wc1Z3VntWf1aDVQNZB1kLWQ9ZE1kXWRtZH1kjWSdZK1kvWTNZN1k7WT9ZQ1lHWUtZT1lTWVdZW1lfWWNZZ1lrWW9Zc1l3WXtZf1mDWYdZi1kBlY9Zk1mXWZtZn1mjWadZq1mvWbNZt1m7Wb9Zw1nHWctZz1nTWddZ21nfWeNZ51nrWe9Z81n3WftaA1oHWJXaC1oPWhNaF1obWh9aI1onWitaL1ozWjdaO1o/WkNaR1pLWk9aU1pXWltaX1pjWmdaa1pvWnNad1p7Wn9ag1kDXQddC10PXRNdF10bXR9dI10nXStdL10zXTddO10/XUNdR11LXU9dU11XXVtdX11jXWdda11vXXNdd117XX9cvPmDXYddi12PXZNcpRmXXZtdn12jXaddq12vXbNdt127Xb9dw13HXctdz13TXddd213fXeNd513rXe9d8133XfteA14HXgteD14TXhdeG14fXiNeJ14rXi9eM143XjteP15DXkdeS15PXlNeV15bXl9eY1yVaRjwpNjw4T0glPCZaJ1pWTENIKFp9RpnXNVFpUjZRRzya1zI9ZDspWipaSFErWm1QbzZbQpvXT0ttN2hJQzd3PiRWLFotWkBGZ1c2SpzXKVVfS29VLlpfVko0MFovWp3Xa1IxWjJaM1pUSjRaK0o1WjZaTzNvVjdaMDsuNThaOVpuOS9RaFI6WkM4ak9vMjtaPFqe12s9XE5vUz1ac04+WlVTZTs/WjVLUEtAWmtHblZBWjVFQTZCWkw3Tj9DWkRaLUtFWnc1RlpCQTtXR1o4TJ/XalIxREhafTVRO0laM1BKWktaPU5MWk1aTlp3MlFaT1poUVBaVUNSWqDXU1pUWlVaO1AlUnkwVlorR1dadz0hQ1haWVp9QzdMWlpbWj5AV0ZcWl1aNEdeWl9aSDlA2EHYQthD2ETYRdhG2EfYSNhtO0nYSthL2EzYOTZ4dE3YeXRO2E/YY01Q2FHYUthT2FTYVdhW2FfYOXVY2FnYWthb2GBrXNhd2F7YX9hg2GHYc08/O2LYY9hk2GXYZthn2GjYQDolVGnYathr2GzYbdhu2G/YWWFw2HHYcthz2HR1KjFyMnTYddh22HfYeNh52HrYdXV72HzYd3V92H7YgNhROnZ1gdgyQ4LYg9iE2IXYhtiH2IjYeXWJ2IrYi9h4dYzYjdiO2I/YkNiR2JLYk9iU2JXYltiX2JjYmdia2JvYnNid2J7Yn9ig2EDZQdlC2UPZRNlF2UbZR9lI2UnZStlL2UzZTdlO2U/ZUNlR2VLZU9lU2VXZVtlX2VjZWdla2VvZXNld2V7ZX9lg2WHZYtlj2WTZZdlm2WfZaNlp2WrZa9ls2W3Zbtlv2XDZcdly2XPZdNl12XbZd9l42XnZetl72XzZfdl+2YDZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLZk9mU2ZXZltmX2ZjZmdma2ZvZnNmd2Z7Zn9mg2UDaQdpC2kPaRNpF2kbaR9pI2knaStpL2kzaTdpO2jQxalU6OE/aMTlGMnBUTU9cMEtVdTtKVjc3MEw2RmExOjl8VmE5ITd6PFpqW2p5THM5XGp7NDNDUTdYOl1qdFRealY8Xztfal5BOEJfVEpXYGphamRqYmpjal5JMzhENmVqakpNSU00UNpR2lliYkVmajVAUto4V2dqLFd8SFNYTVheVFPaeVRESS5TUzhgM1TaYkl2dFXaVtpX2lU6WNp3dFnaWtpfV1vaXNpxdDA4VFVPOHBGXdpe2l/aYNph2mLaY9pk2mXaQzNm2mfacnQsM2jaadpq2mvaPVR3R2zabdpu2m/acNp0dHHactpzdHPadNp12nbad9p42nnaetp72nzaS0x92n7agNokSIHagtqD2oTahdqG2ofaiNqJ2orai9qM2o3adXSO2mNXP0VAdY/akNo7dZHaQ3WS2kJ1k9o6VkF1lNqV2pbaPlREdZfaTHWY2pnamtqb2k8weDWc2kl1SnWd2lxFntqf2qDaQNtFdUZ1QdtC20d1S3VD22A+SHV6OETbRdtG21B1U3VH20jbSdtnP0rbcjk8dU11S9tM2zdCTdtO20/beExQ23k8UdtOdU91UXVlNlJ1UttVdVPbVNtV21bbV9tY21nbPXVa21vbXNtUdTtTXdtsM17bX9skTGDbYdti22PbVnVk22XbZttn22jbadtq22vbV3VhPlh1bNtt219MW3Vu22/bcNtx23LbSDJZV3PbWXV021p1XHV122J1dtt323jbYHV523rbe9tfdV11fNt922F1ftuA2151ZHVldYHbY0yC24PbP2U4NWN1aHUjTITbhduG24fbiNtmdWd1iduK24vbjNuN247bPnWP25DbkduS25PblNuV25bbl9uY25nbmttEMZvbnNs/dZ3bnttFNWQyn9tsdWl1oNtXNkDcbXVB3Gp1QtxD3ETcRdxG3Gt1R9xI3Fo0SdxqVErcS9xM3G51Tdx5M07cT9xQ3FHcUtxT3FTcb3VxdVXcVtxX3HB1WNxZ3FrcW9xc3F3cXtxydV/cc3Vg3GHcYtxj3GTcZdxm3GfcaNxp3Grca9xtSSo5bNxt3HtHbtxv3GM2cNxx3HLcc9x03HXcdtxJTHfceNx53Hrce9x83H3cftyA3IHcgtyD3ITchdyG3IfciNyJ3IrcJmqL3IzcjdyO3I/ckNyR3JLck9yU3JXcltyX3Jjcmdya3JvcnNyd3J7cn9yg3EDdQd1C3UPdRN1F3UbdR91I3UndSt1L3UzdTd1O3U/dUN1R3VLdU91U3VXdVt1X3VjdWd1a3VvdXN1d3V7dX91g3WHdYt1j3WTdZd1m3WfdaN1p3Wrda91s3W3dbt1v3XDdcd1y3XPddN113Xbdd9143Xndet173Xzdfd1+3YDdgd2C3YPdhN2F3Ybdh92I3Yndit2L3Yzdjd2O3Y/dkN2R3ZLdk92U3ZXdlt2X3Zjdmd2a3ZvdnN2d3Z7dn92g3UDeQd5C3kPeRN5F3kbeR95I3kneSt5L3kzeTd5O3k/eUN5R3lLeU95U3lXeVt5X3ljeWd5a3lveXN5d3l7eX95g3jUzflRsOXlQYd5taSpXbmlWQm1IZDpvaXBpcWlhVnJpc2l1aXRpdml3aWFHeGlYVHlpTj1i3nppe2lPPXxpKDg+QX1pMjFUO3U5fmlj3iFqImojang3LTxk3mRKTmAvVD1PN1Ukal5VJWpBUDw5Zd5HNFkxZt5n3mjeMUBp3mrea95s3mYxZzFt3mgxbt5v3nDecd49M2hIct5z3nTedd5BZXbed95fMXjeed563klBbzR73nzeKEdYU33eeUY4UX7efTl1QoDegd6C3oPehN4tU4XeS1R8PYbeQmU1N0Nlh96I3jk7YlWJ3ng9NlQlTixBWTOK3ovedkyM3kZlRGVIZY3eSmVHZU81SEaO3nw1RWWP3nZKkN6R3kllkt6T3pTeVENFMSM8ld6W3pfeN1eY3pneS01NS0pKU0xMZUtlZkSa3pveIVE3UU1lnN5QZZ3eOE1wVk9lXTWe3j5Nn95RZTo2oN5A3yhNZDlB30VKUTNZS2xUUmVqN0LfQ99E305lRd9G30ffSN9J30rfVWV+NFZlS99M303fTt9P31NlVGVQ311SUd9S319CRjFT32JTVN9V3102bEtW31dlV99Y33ZTWd9a31vfXN9d32kxXt90NlplWGVZZUA1X99g32HfRVJcZWLfY99eZWTfZd9m32ffaN9p311lMkdq3yNSa99s31tlbd9u32/fcN9iVFpVcd9y33PfdN9132BlcVd233ffeN9533rfe99832Flfd9cMXtRft9iZWRlgN+B34Lfg99jZYTfhd9lZYbfh9+I34nfit9YUovfSzWM319njd91Wo7feFqP33ZakN93WpHfkt+T33paT1BHRJTfld9uMJbfl9+Y3zBQmd95WprfSlMqOiJbcUeb33xae1pbSX1anN8hW15XflpaQZ3fnt8lW5/foN90U0DgQeAnWyRbQuAoW0PgROA8PUXgRuBH4ElAI1smWyNWSOApW0ngSuBL4C1bTOBN4E7gLlssW0I6T+BQ4FHgJD8rW1LgU+BU4CpbR1Q/MlXgVuAvW1fgeTlY4DBbWeBa4FvgXOA7M13gXuBf4CY1YOBh4GLgY+A8NjFbZOBl4GbgdTZn4DJbaOBp4Grga+Bs4G3gbuBv4HDgceBy4HPgdOB14Hbgd+B44HngeuB74EkxfOB94H7ggOA0W4HgguCD4DNbNVuE4IXghuCH4IjgieCK4IvgjOCN4I7gN1uP4DZbkOCR4JLgk+CU4JXgluA4W5fgmOCZ4Jrgm+Cc4J3gnuCf4DlboOBA4TpbQeFC4U9TenR1R0NXZEV8dH10e3RD4UY+ROFF4UbhR+FvUEjhSeFTN0rhS+FNVCpMTOFN4SJ1IXUoOn50VktO4U/hUOEkdVJAUeFqM1LhKk0ldSN1ND0odVPhKXVNPThDYT9hSyp1VOFV4VbhJnUndXBEV+FY4VnhWuFb4Sx1XOE8NF3hbVde4Vc0K3UudV/hYOEtdS91UVBh4WLhY+Fk4WXhZuFn4VFDKUho4WnhauFr4WzhbeEwdTF1buFv4XDhceFy4XPhMnV04XXhM3U0dTV1duF34XjheeE3dTZ1euF74XzhfeE4dX7hgOGB4YLhg+GE4YXhhuGH4YjhieGK4Ukyi+FUU01KjOFvQFhWMFI/QY3hcD2O4Y/hkOGR4ZLhk+GU4ZXhluGX4So4mOGZ4Zrhm+Gc4Z3hnuGf4aDhQOJB4kLiQ+JE4kXiRuJH4kjiSeJK4kviTOJN4k7iT+JQ4lHiUuJT4lTiVeJW4lfiWOJZ4lriW+Jc4l3iXuJf4mDiYeJi4mPiZOJl4mbiZ+Jo4mniauJr4mzibeJu4m/icOJx4nLic+J04nXiduJ34njieeJ64nvifOJ94n7igOKB4oLig+KE4oXihuKH4ojiieKK4ovijOKN4o7ij+KQ4pHikuKT4pTileKW4pfimOKZ4prim+Kc4p3inuKf4qDiQONB40LjQ+NE40XjRuNH40jjSeNK40vjTONN407jT+NQ41HjUuNT41TjVeNW41fjWONZ41rjW+Nc413jXuNf42DjYeNi42PjZONl42bjZ+No42njauNr42zjbeN4PG7jb+Nw43HjcuNz43TjdeN243fjeON543rje+N8433jfuOA44HjguOD44TjheOG44fjRnaI44njiuOL44zjjeOO44/jkOOR45Ljk+OU45XjluOX45jjmeOa45vjnOOd457jn+Og40DkQeRC5EPkRORF5Ed2RuRH5EjkSeRK5EvkTORN5E7kT+RQ5FHkUuRT5FTkVeRW5FfkWORZ5FrkW+Rc5F3kXuRIdl/kYORh5GLkY+Rk5GXkZuRn5GjkaeRq5GvkbORt5G7kb+Rw5HHkcuRz5HTkdeR25HfkeOR55Hrke+R85H3kfuSA5IHkguSD5ITkheSG5IfkiOSJ5Irki+SM5I3kjuSP5JDkkeSS5JPklOSV5Jbkl+SY5JnkmuSb5JzkneSe5J/koORA5UHlQuVD5UTlReVG5UflSOVJ5UrlS+VM5U3lTuVP5VDlUeVS5VPlVOVV5VblV+VY5VnlWuVb5VzlXeVe5V/lYOVh5WLlY+Vk5WXlZuVn5WjlaeVq5WvlbOVt5W7lb+Vw5XHlcuVz5Ul2dOV15Xbld+V45XnleuV75XzlfeV+5YDlgeWC5YPlhOWF5Yblh+WI5YnliuWL5YzljeWO5Y/lkOWR5ZLlk+WU5ZXlluWX5ZjlmeWa5ZvlnOWd5Z7ln+VKdqDlQOZB5kLmQ+ZE5kXmRuZH5kjmSeZK5kvmTOZN5k7mT+ZQ5lHmUuZT5lTmVeZW5lfmWOZZ5lrmW+Zc5l3mXuZf5mDmYeZi5kx2Y+Zk5mXmZuZn5mjmaeZq5mvmbOZt5m7mb+Zw5nHmcuZz5nTmdeZ25nfmeOZ55nrme+Z85n3mfuaA5oHmguaD5oTmheaG5ofmiOaJ5ormi+aM5o3mjuaP5pDmkeaS5pPmlOaV5pbml+aY5pnmmuab5pzmneZLdp7mn+ag5kDnQedC50PnROdF50bnR+dpd0jnSedK50vnTOdN507nT+dQ51HnUudT51TnVedW51fnWOdZ51rnW+dc513nXudf52DnYedi52PnZOdl52bnZ+do52nnaudr52znbedu52/ncOdx53Lnc+d053Xndud353jneed653vnfOd9537ngOeB54Lng+eE54XnhueH54jnieeK54vnjOeN547nj+eQ55HnkueT55TnleeW55fnmOeZ55rnm+ec553nnuef56DnQOhB6ELoQ+hE6EXoRuhH6EjoSehK6EvoTOhN6E7oTXZP6FDoUehS6FPoVOhV6FboV+hY6FnoWuhb6FzoXehe6F/oYOhh6GLoY+hk6GXoZuhn6Gjoaehq6GvobOht6G7ob+hw6HHocuhz6HTodeh26HfoeOh56HroTnZ76Hzofeh+6IDogeiC6IPohOiF6Iboh+iI6InoiuiL6IzojeiO6I/okOiR6JLok+iU6ERuRW5GbmtVJDZIbkduSW5KbiVHS25MbpXoMDd2NU1uT26W6E5ul+hGOFBuUW5Sbls2LjNTVkZENTFWOFNuVG4/VFVHez5ZTjM5Vm5VblhuV24lRVluWm4uR1tuL0dcbicyXW5ebl9uYG5hbmpXYm5jblg8ZG5LU3pMLDJlQWVuJkctQ5joZm5nbmhuaW5qbmtubG6Z6G1ubm5vbprom+hwbnFucm50bnNunOh1bi1NQUJ2bndueG4hVXluM096bntuneh8bn1uIW9+biJvdTh6QyNvJG9CPT9SeTIlbyZvJ294UihvfVYpb0xGnugqbytvNEEsb3pPeEsuby1vejN4OS9vMG9iUDFvMm9mNz9QM280bzVvcUhgTDZvN284bzlvOm9gVTtvbTQqQzxvn+g9bz5vP2+g6H1OQG9gQjg0Nld1PUDpR09Db0FvQm9Ebyc2fDxiPkxDRW9Gb0HpR29Pb0hvSW9Kb0JHcW9NNktvQulMb01vRjY+Q05vQ+lQb1FvUm9yVUTpU293REXpVG94RFVvVm9kOHcwV29Yb1lvRulab1tvXG9db0fpXm81PmFvX29gb0jpYm9jb01BZG9lb2ZvZ29ob2lvam9rb2xvWEBJ6W1vLUFub29vcG9K6UvpYk9M6U3pTulP6VDpUelS6VPpJDNU6VXpVulX6VjpWela6VvpXOld6V7pX+lg6WHpYulj6WTpZelm6WfpaOlp6Wrpa+ls6W3pbulv6XDpcely6XPpdOl16Xbpd+l46Xnpeul76Xzpfel+6YDpgemC6YPphOmF6Ybph+mI6YnpiumL6YzpjemO6Y/pkOmR6ZLpk+mU6ZXplumX6Zjpmema6ZvpnOmd6Z7pn+mg6UDqQepC6kPqROpF6kbqR+pI6knqSupL6kzqTepO6k/qUOpR6lLqU+pU6lXqVupX6ljqWepa6lvqRUNFY0FJRmNc6lUxSk4zNHJIR2NQT0hjZDxJY0pjRkMiVVZEazlFTktjdkNMY13qJzdzOFI6TWNOY0RUT2Ne6lBjS1FRY1JjU2NUY1ZRVWN7MjtAVmNf6itAV2NYY1ljYOpaY1tjYeo3OGJaYupTNmPqZFpjWmTqZepm6mfqaOpp6mrqZlpr6mzqbepuSG7qb+plWkA3dFF1UnNVVz1w6nHqcupz6mhXaFpnWnTqIjBTTXXqaVp26j04Sjw9QiRCQjNqWnfqKkIwRDU9eOp56l5Peup76nzqa1pCSX3qfuqA6oHqgupdMYPqhOqF6mxahuo4NjpUh+p9M4jqieptWklUVU9jRYrqblqL6ozqjeqO6o/qb1qQ6nBaakFVTF1PkeqS6pPqlOqV6pbql+qY6pnqmuqb6pzqnepnUyFCnupxWp/qoOplS0DrclpB62ZLflJC60PrROt0OEXrRutzWi8wNk9H60jrT1VJ60rrS+tM603rTutP61DrUetS621LU+tU61XrVutX61jrWeta63RaW+tc60RjXete6yVBX+tg6z92Yeti60B2QXZRRGPrOEhjUWTrZetbUEVRLzxNOWbrdG9n62jrRjQ6U0J2ezNp62rrQ3Zr62zrcTVt627rb+tw63Hrcutz63Trdet260V2d+t463nreut763zrfetqUyd2KVF+64DrgeuC6yl2g+uE64XrKHaG64frY0FXQIjrIjGJ64rri+uM621OjetoUCt2juuP63ZPkOsqdnBVLHY5Q5HrkuuT63Q7LnYtdpTrleuW615El+uY61hBmeua65vrnOud6ypLnus8T5/roOtA7EHsQuxD7ETsRexG7EfsSOwvdknsSuwwdkvsTOwxdk3sNkJO7E/sUOxR7FLsVDB5RVPsVOxV7FbsMnZX7FjsWexa7FvsXOxd7F7sX+xg7GHsYuxj7GTsZexm7GfsaOxp7GBHJnZq7GvsOD5s7G3sMj5u7GU1b+xw7Ec3cew/P1JDZkNy7HPsTFh07HXsduxvOHfseOx57Hrse+x87H3sfuyA7Hk9JVGB7FAwguyD7ITsheyG7DB3h+yI7InsiuyL7IzsjeyO7DF3j+yQ7JHskuyT7CxQlOwwMJXsluyX7DJ3M3eY7DR3meya7JvsSkec7J3snuyf7KDsQO1B7U8+Qu1D7Td3RO1F7UbtR+1I7UntSu02d0vtXjFM7TV3Te1O7Th3T+05d1DtUe1S7VPtVO1V7VbtV+1Y7VntWu1b7VztXe1e7V/tYO1h7WLtY+1k7WXtZu1n7Wjtae1q7WvtbO1t7W7tb+1w7XHtcu1z7XTtde127XfteO157Xrte+187X3tfu2A7YHtJE5NSILtKzo4aDloOmhCPoPthO2F7Ybth+10UojtT1RYSYntiu2L7Yztje2O7Y/tkO2R7ZLtk+2U7ZXtlu2X7Zjtme2a7ZvtnO2d7Z7tn+2g7UDuQe5C7kPuRO5F7kbuR+5I7knuSu5L7kzuTe5O7k/uUO5R7lLuU+5U7lXuVu5X7ljuWe5a7lvuXO5d7l7uX+5g7mHuYu5j7mTuZe5m7mfuaO5p7mrua+5s7m3ubu5v7nDuce5y7nPudO517nbud+547nnueu577nzufe5+7oDuge6C7oPuhO6F7obuh+6I7onuiu6L7ozuje6O7o/ukO6R7pLuk+6U7pXulu6X7pjume6a7pvunO6d7p7un+6g7kDvQe9C70PvRO9F7zNSJTZqR3xxbk8zS2tQb2dnTUs5WTZ9cWQwTEt+cSRULUJsQURGMT4hclU8Ru8iciNyR+8kckNSNUZI70dNJXJJ7zFTRT9iTErvJnInclVRbjYocilyXzUqcityS+98MixyLXInSEzvTe9O70/vUO9R71LvU+9U71XvVu9X71jvWe9a71vvXO9d717vX+9g72HvYu9j72TvZe9m72fvaO9p72rva+9s723vbu9v73Dvce9nN3Lvc+8pbCpsK2x07yxsde927y5GLWwubHfveO9570k3M0p673vvfO99737vgO+B7zhiT3eC74PvhO+F74bvh++I74nviu+L74zvje+O74/vkO+R75Lvk++U75Xvlu+X75jvme+a75vvnO+d757vn++g70DwQfBC8EPwRPBQd0XwRvBNMkfwSPBJ8ErwS/BM8E3wTvBP8FDwUfBS8FPwVPBV8FbwV/BY8FnwWvBb8FzwXfBe8F/wYPBh8GLwY/BRd2TwZfBm8GfwaPBp8Grwa/Bs8G3wbvBv8HDwcfBy8HPwdPB18Hbwd/B48HnwevB78HzwffB+8IDwgfCC8IPwhPCF8Ibwh/CI8InwU3dSd4rwi/CM8I3wjvCP8JDwkfCS8JPwlPCV8JbwO2KX8CI8mPA8Yj1iPmI/YkBiQWI5N3tSJD1OSiUxR0uZ8EJifDZESENimvCb8Eg9nPB9MURinfB2NkViWUSe8J/wRmJaT105R2IhQKDwSGJ2MkDxSWJB8XNBSmJLYnhCTGJNYk5iV0o4WGVZY09C8UPxRPFF8UbxR/FI8UnxSvFL8UzxJXBN8U7xMFxP8VDxUfFS8VPxVPFV8VbxV/FY8VnxWvFb8VzxXfFe8V/xYPFh8WLxY/Fk8WXxZvFn8WjxafFq8WvxbPFt8W7xb/Fw8XHxcvFz8XTxdfF28XfxePF58Xrxe/F88X3xfvGA8YHxgvGD8YTxhfGG8YfxiPGJ8Yrxi/GM8Y3xjvGP8ZDxkfGS8ZPxlPGV8Zbxl/GY8ZnxmvGb8ZzxnfGe8Z/xoPFA8kHyQvJD8kTyRfJG8kfySPJJ8kryS/JM8k3yTvJP8lDyUfJS8lPyVPJV8lbyV/JY8lnyWvJb8lzyXfJe8l/yYPJh8mLyY/Jk8mXyZvJn8mjyafJq8mvybPJt8m7yb/Jw8nHycvJz8nTydfJ28nfyePJ58nrye/J88n3yfvKA8oHygvKD8oTyhfKG8ofyiPKJ8oryi/KM8o3yjvKP8pDykfKS8pPylPKV8pbyl/KY8pnymvKb8pzynfKe8p/yoPJA80HzQvND80TzRfNG80fzSPNJ80rzS/NM803zTvNP81DzUfNtQiZUVE0xUVszfUdS8zUyP0JgZjtKYWZiZlQ+Y2YkV1VNZWZdPGRmZmZnZm5CU/M+PWhmZkInOmlmVPNqZlIzaVFV81bzJT9rZm9GbGZtZlfzWPNuZi1Gb2ZZ8ydJcGZxZnJmOWVzZnRmYkJ1ZnZmaFZ3ZlrzeGZHOVvzXPNd817zX/Ng82HzO3c6d2LzY/Nk82XzPnc8dyE6ZvM/d2fzQHdo82nzavNCd0F3RHdr82zzQ3dt827zb/Nw83HzRXdGd3Lzc/N083XzR3d282hLd/N483nzevNfOHvzfPN9837zgPOB81R3gvNVd4PzhPOF84bzVneH84jzifOK81h3i/Nad4zzV3eN847zj/OQ85HzkvOT85TzlfNbd5bzWXeX85jzmfOa85vznPOd81dXnvOf86DzQPRcd0H0QvRD9ET0RfRG9F13R/RI9En0XndK9Ev0TPRN9E70T/RQ9FH0UvRT9FT0X3dV9Fb0V/Rgd1j0WfRa9Fv0XPRd9F70X/Rg9GH0YvRLW2P0ZPQqWGX0ZvRn9Gj0afRq9Gv0bPR3ZW05bfRu9G/0cPR9P2o7SXdHRkh3cfRKd0x3S3dy9HP0dPRNd3X0Ok529E53d/R49CdEefR69Hv0fPR99H70gPSB9IL0g/SE9IX0hvSH9Ij0ifSK9Iv0jPSN9I70j/SQ9JH0kvST9JT0lfSW9Jf0mPSZ9Jr0m/Sc9J30nvSf9KD0QPVB9UL1Q/VE9UX1RvVH9Uj1SfVK9Uv1TPVN9U71T/VQ9VH1UvVT9VT1VfVW9Vf1WPVZ9Vr1W/Vc9V31XvVf9WD1YfVi9WP1ZPVl9Wb1Z/Vo9Wn1avVr9Wz1bfVu9W/1cPVx9XL1c/V09XX1dvV39Xj1efV69Xv1fPV99X71gPWB9YL1g/WE9YX1hvWH9Yj1ifWK9Yv1jPWN9Y71j/WQ9ZH1kvWT9ZT1lfWW9Zf1mPWZ9Zr1m/Wc9Z31nvWf9aD1QPZB9kL2Q/ZE9kX2RvZH9kj2SfZK9kv2TPZN9k72T/ZQ9lH2UvZT9lT2VfZW9lf2WPZZ9lr2W/Zc9l32XvZf9mD2YfZi9mP2ZPZl9mb2Z/Zo9mn2avZr9mz2bfZu9m/2cPZx9nL2c/Z09nX2dvZ39nj2efZ69nv2fPZ99n72gPaB9oL2g/aE9oX2hvaH9oj2ifaK9ov2jPaN9o72j/aQ9pH2kvaT9pT2lfaW9pf2mPaZ9pr2m/ac9p32nvaf9qD2QPdB90L3Q/dE90X3RvdH90j3SfdK90v3TPdN9073T/dQ91H3UvdT91T3VfdW91f3WPdZ91r3W/dc9133Xvdf92D3Yfdi92P3ZPdl92b3Z/do92n3avdr92z3bfdu92/3cPdx93L3c/d093X3dvd393j3efd693v3fPd99373gPdjU4H3gvdPdoP3M0JQdoT3hfdRdlJ2U3ZUdob3h/dWdoj3KzFXdon3WHZZdlp2ivdbdlx2i/eM9433jvdddl52Sk+P9192YHZhdmJ2Y3ZkdnBAZXZmdmd2aHZpdpD3anaR92t2bHaS9212bnZvdnB2cXZydnN2dHYoPpP3dXZ2dnd2eHaU95X3lveX95j3ekh5dnp2e3Z8dpn3mvd9dn52IXcidyN3JHcld5v3nPcmdyd3KHduMSl3Kncrd533nvcsdy13W0Eud5/3oPcvd0D4QfhC+EP4RPhF+Eb4R/hI+En4SvhL+Ez4TfhO+E/4UPhR+FL4U/hU+FX4VvhX+Fj4Wfha+Fv4XPhd+F74X/hg+GH4Yvhj+GT4Zfhm+Gf4aPhp+Gr4a/hs+G34bvhv+HD4cfhy+HP4dPh1+Hb4d/h4+Hn4evh7+Hz4ffh++ID4gfiC+IP4hPiF+Ib4h/iI+In4iviL+Iz4jfiO+I/4kPiR+JL4k/iU+JX4lviX+Jj4mfia+Jv4nPid+J74n/ig+ED5QflC+UP5RPlF+Ub5R/lI+Un5SvlL+Uz5TflO+U/5UPlR+VL5U/lU+VX5VvlX+Vj5Wfla+Vv5XPld+V75X/lg+WH5Yvlj+WT5Zflm+Wf5aPlp+Wr5a/ls+W35bvlv+XD5cfly+XP5dPl1+Xb5d/l4+Xn5evl7+Xz5ffl++YD5gfmC+YP5hPmF+Yb5h/mI+Yn5ivmL+Yz5jfmO+Y/5kPmR+ZL5k/mU+ZX5lvmX+Zj5mfma+Zv5nPmd+Z75n/mg+UD6QfpC+kP6RPpF+kb6R/pI+kn6SvpL+kz6TfpO+k/6UPpR+lL6U/pU+lX6VvpX+lj6Wfpa+lv6XPpd+l76X/pg+mH6Yvpj+mT6Zfpm+mf6aPpp+mr6a/ps+m36bvpv+nD6cfpy+nP6dPp1+nb6d/p4+nn6evp7+nz6ffp++oD6gfqC+oP6hPqF+ob6h/qI+on6ivqL+oz6jfqO+o/6kPqR+pL6k/qU+pX6lvqX+pj6mfqa+pv6nPqd+p76n/qg+kD7QftC+0P7RPtF+0b7R/tI+0n7SvtL+0z7TftO+0/7UPtR+1L7U/tU+1X7VvtX+1j7Wfta+1v7cUQvcCY8MHB5Q1z7OEU7UV37MXAycDNwNHA1cDxRXvtsUV/7N3A2cCdUYPtSTThwOnA5cDtwPHBh+2L7azg9cGg6Y/s+cD9waT5AcGw2QXBCcENwRHA1SEVwRnBk+0dwdEVl+0hwZvtn+2j7SXBp+0pwPXdq+0twTHBNcGv7TnBs+237bvtv+09wVzpw+1BwUXBScFNwVHBVcFZwWHBx+3L7JVNXcHP7WXB0+3X7dvt3+3j7eft6+3v7fPt9+zp1OUJ++4D7ZHeB+4L7g/uE+2V3ZneF+4b7Z3eH+4j7ifuK+4v7jPtodzRCjfuO+4/7kPuR+5L7k/uU+5X7aneW+2t3l/uY+5n7mvub+5z7c0Kd+577n/ug+0D8QfxC/EP8RPxF/Eb8R/xI/HB0SfxK/Ev8b3RM/E38aUJO/GF3YndP/FD8UfxS/FP8RjtU/FX8VvxX/GRZWPxZ/Fr8ckpoQCRwW/xaOlz8XfwtR178X/xg/CxEYfxi/Gx3bXdud2P8cHdvd2T8cXdl/Gb8dHdn/HN3aPxyd3V3afxq/Gv8bPx2d238bvxv/HD8cfxy/HP8dPx1/GltdvxqbWttd/w8dnj8efx6/Hv8fPx9/H78gPyB/IL8g/yE/D12hfw+diY2hvw+WIf8iPxEOYn8ivyL/DtYjPwxXI38jvyP/JD8kfyS/HNKk/x3d5T8lfyW/Jf8mPyZ/Jr8m/yc/Hh3nfye/Hl3n/yg/ED9Qf1C/UP9RP17d0X9endG/UcxR/18d313SP1J/Ur9S/1M/X53Tf1O/U/9UP1R/VL9U/1U/VX9Vv1X/WtGNGxY/Vn9Wv1b/Vz9Xf1e/V/9YP1h/WL9Y/1k/WX9Zv1n/Wj9af1q/Wv9bP1t/W79b/1w/XH9cv1z/XT9df12/Xf9eP15/Xr9e/18/X39fv2A/YH9gv2D/YT9hf1dMzN2hv2H/TR2ZEE1djZ2N3Y4djl2OnYjSDt2iP2J/Yr9i/2M/Y39jv2P/ZD9kf2S/ZP9ekEoOWhtlP2V/Zb9ajlfWZf9mP2Z/Zr9m/2c/f//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nf3///////////////////////////////////////////////////////////////////////+e/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5/9////////////////////////oP1A/kH+Qv5D/v//RP7//0X+Rv7///////9H/v///////////////0j+Sf5K/v//S/5M/v////9N/k7+T/5VqfKm///0pvWm4KbhpvCm8abipuOm7qbvpuam56bkpuWm6Kbppuqm66b//////////2ipaalqqWupbKltqW6pb6lwqXGp//9yqXOpdKl1qf//dql3qXipeal6qXupfKl9qX6pgKmBqYKpg6mEqf//hamGqYepiKkhIyIjIyNnISUjJiMnIygjKSMqIysjLCMtIy4jLyMwIzEjMiMzIzQjNSM2IzcjOCM5IzojOyM8Iz0jPiM/I0AjQSNCI0MjRCNFI0YjRyNII0kjSiNLI0wjTSNOI08jUCNRI1IjUyNUI1UjViNXI1gjWSNaI1sjXCNdI14jXyNgI2EjYiNjI2QjZSNmI2cjaCNpI2ojayNsI20jbiNvI3AjcSNyI3MjdCN1I3YjdyN4I3kjeiN7I3wjfSMrIf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////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kRR7fF+neNaEPYXVa9lr1msBXode+XXtlV1lCl/FX5+PwVjCgX+QW5atl7mPFn8sjUFiv0/YU15TqI+pj6uPTZAHaGpfmIFoiNaci2ErUip2bF+MZdJv6G6+W0hkdVGwUcRnGU7JeXyZs3DFdXZeu3Pgg61k6GK1lOJsWlPDUg9kwpSUey9PG142ghaBioEkbspsc5pVY1xT+lRliOBXDU4DXmVrP3zokBZg5mQcc8GIUGdNYiKNbHcpjseRaV/cgyGFEJnCU5WGi2vtYOhgf3DNgjGC006nbM+FzWTZfP1p+WZJg5VTVnunT4xRS21CXG2O0mPJUyyDNoPlZ7R4PWTfW5Rc7l3ni8Zi9Gd6jABkumNJh4uZF4wgf/KUp04QlqSYDGYWczpXHVw4Xn+Vf1CggIJTXmVFdTFVIVCFjYRinpQdZzJWbm/iXTVUknBmj29ipGSjY3tfiG/0kOOBsI8YXGhm8V+JbEiWgY1siJFk8HnOV1lqEGJIVFhOC3rpYIRv2ot/Yh6Qi5rkeQNU9HUBYxlTYGzfjxtfcJo7gH+fiE86XGSNxX+lZb1wRVGyUWuGB12gW71ibJF0dQyOIHoBYXl7x074foV3EU7tgR1S+lFxaqhTh44Elc+WwW5kllppQHioUNd3EGTmiQRZ42PdXX96PWkgTzmCmFUyTq51l3piXope75UbUjlUinB2YySVglclZj9ph5EHVfNtr34iiDNi8H61dSiDwXjMlp6PSGH3dM2LZGs6UlCNIWtqgHGE8VYGU85OG07RUZd8i5EHfMNPf47he5x6Z2QUXaxQBoEBdrl87G3gf1FnWFv4W8t4rmQTZKpjK2MZlS1kvo9Ueyl2U2InWUZUeWujUDRiJl6Ga+NON42LiIVfLpAgYD2AxWI5TlVT+JC4Y8aA5mUubEZP7mDhbd6LOV/LhlNfIWNaUWGDY2gAUmNjSI4SUJtcd3n8WzBSO3q8YFOQ13a3X5dfhHZsjm9we3ZJe6p381GTkCRYTk/0buqPTGUbe8RypG3ff+FatWKVXjBXgoQsex1eH18SkBR/oJiCY8dumHi5cHhRW5erVzV1Q084dZde5mBgWcBtv2uJePxT1ZbLUQFSiWMKVJOUA4zMjTlyn3h2h+2PDYzgUwFO73buU4mUdpgOny2VmluiiyJOHE6sUWOEwmGoUgtol09rYLtRHm1cUZZil2VhlkaMF5DYdf2QY3fSa4py7HL7izVYeXdMjVxnQJWagKZeIW6SWe967Xc7lbVrrWUOfwZYUVEflvlbqVgoVHKOZmV/mORWnZT+dkGQh2PGVBpZOlmbV7KONWf6jTWCQVLwYBVY/oboXEWexE+dmLmLJVp2YIRTfGJPkAKRf5lpYAyAP1EzgBRcdZkxbYxOMI3RU1p/T3sQT09OAJbVbNBz6YUGXmp1+38Kav53kpRBfuFR5nDNU9SPA4Mpja9ybZnbbEpXs4K5ZaqAP2IylqhZ/06/i7p+PmXyg16XYVXemKWAKlP9iyBUuoCfXrhsOY2sglqRKVQbbAZSt35fVxpxfmyJfEtZ/U7/XyRhqnwwTgFcq2cCh/BcC5XOmK91/XAikK9RHX+9i0lZ5FFbTyZUK1l3ZaSAdVt2YsJikI9FXh9sJnsPT9hPDWdubaptj3mxiBdfK3WaYoWP70/ckadlL4FRgZxeUIF0jW9SholLjQ1ZhVDYThyWNnJ5gR+NzFuji0SWh1kaf5BUdlYOVuWLOWWCaZmU1naJbnJeGHVGZ9Fn/3qdgHaNH2HGeWJlY42IURpSopQ4f5uAsn6XXC9uYGfZe4t22JqPgZR/1XweZFCVP3pKVOVUTGsBZAhiPZ7zgJl1clJpl1uEPGjkhgGWlJbslCpOBFTZfjlo340VgPRmml65f8JXP4CXaOVdO2WfUm1gmp+bT6yObFGrWxNf6V1ebPFiIY1xUamU/lKfbN+C13KiV4RnLY0fWZyPx4OVVI17ME+9bGRb0VkTn+RTyoaomjeMoYBFZX6Y+lbHli5S3HRQUuFbAmMCiVZO0GIqYPpoc1GYW6BRwomhe4aZUH/vYExwL41JUX9eG5BwdMSJLVdFeFJfn5/6lWiPPJvhi3h2QmjcZ+qNNY09UoqP2m7NaAWV7ZD9Vpxn+YjHj8hUuJppW3dtJmylTrNbh5pjkahhr5DplytUtW3SW/1RilVVf/B/vGRNY/FlvmGNYApxV2xJbC9ZbWcqgtVYjlZqjOtr3ZB9WReA91NpbXVUnVV3g8+DOGi+eYxUVU8IVNJ2iYwClrNsuG1rjRCJZJ46jT9W0Z7VdYhf4HJoYPxUqE4qamGIUmBwj8RU2HB5hj+eKm2PWxhfon6JVa9PNHM8VJpTGVAOVHxUTk79X1p09lhrhOGAdIfQcsp8Vm4nX06GLFWkYpJOqmw3YrGC11ROUz5z0W47dRJSFlPdi9Bpil8AYO5tT1cia69zU2jYjxN/YmOjYCRV6nVijBVxo22mW3teUoNMYcSe+nhXhyd8h3bwUfZgTHFDZkxeTWAOjHBwJWOJj71fYmDUht5WwWuUYGdhSVPgYGZmP439eRpP6XBHbLOL8ovYfmSDD2ZaWkKbUW33bUGMO20ZT2twt4MWYtFgDZcnjXh5+1E+V/pXOmd4dT1673mVe4yAZZn5j8BvpYshnuxZ6X4JfwlUgWfYaJGPTXzGlspTJWC+dXJsc1PJWqd+JGPgUQqB8V3fhIBigFFjWw5PbXlCUrhgTm3EW8JboYuwi+JlzF9FlpNZ536qfglWt2c5WXNPtlugUlqDipg+jTJ1vpRHUDx69062Z36awVp8a9F2WlcWXDp79JVOcXxRqYBwgnhZBH8ng8Bo7GexeHd442JhY4B77U9qUs9RUIPbaXSS9Y0xjcGJLpWte/ZOZVAwglFSb5kQboVup236XvVQ3FkGXEZtX2yGdYuEaGhWWbKLIFNxkU2WSYUSaQF5JnH2gKROypBHbYSaB1q8VgVk8JTrd6VPGoHhctKJepk0f95+f1JZZXWRf4+Dj+tTlnrtY6Vjhnb4eVeINpYqYqtSgoJUaHBnd2Nrd+16AW3TfuOJ0FkSYsmFpYJMdR9Qy06ldeuLSlz+XUt7pGXRkcpOJW1fiSd9JpXFTiiM249zl0tmgXnRj+xweG09XLJSRoNiUQ6DW3d2ZricrE7KYL58s3zPfpVOZotvZoiYWZeDWGxlXJWEX8l1Vpffet56wFGvcJh66mN2eqB+lnPtl0VOeHBdTlKRqVNRZedl/IEFgo5UMVyadaCX2GLZcr11RVx5msqDQFyAVOl3Pk6ubFqA0mJuY+hdd1HdjR6OL5XxT+VT52CscGdSUGNDnh9aJlA3d3dT4n6FZCtliWKYYxRQNXLJibNRwIvdfkdXzIOnlJtRG1T7XMpP43pabeGQj5qAVZZUYVOvVABf6WN3ae9RaGEKUipY2FJOVw14C3e3Xndh4HxbYpdiok6VcAOA92LkcGCXd1fbgu9n9WjVeJeY0XnzWLNU71M0bktRO1KiW/6Lr4BDVaZXc2BRVy1UenpQYFRbp2OgYuNTY2LHW69n7VSfeuaCd5GTXuSIOFmuVw5j6I3vgFdXd3upT+tfvVs+ayFTUHvCckZo/3c2d/dltVGPTtR2v1ylenWETllBm4BQiJknYYNuZFcGZkZj8FbsYmli014UloNXyWKHVSGHSoGjj2ZVsYNlZ1aN3YRqWg9o5mLuexGWcFGcbzCM/WPIidJhBn/CcOVuBXSUafxyyl7OkBdnam1eY7NSYnIBgGxP5VlqkdlwnW3SUlBO95ZtlX6FyngvfSFRklfCZIuAe3zqbPFoXmm3UZhTqGiBcs6e8Xv4crt5E28GdE5nzJGknDx5iYNUgw9UF2g9TolTsVI+eIZTKVKIUItP0E/idct6knylbLaWm1KDdOlU6U9UgLKD3o9wlcleHGCfbRheW2U4gf6US2C8cMN+rnzJUYFosXxvgiROho/PkX5mrk4FjKlkSoDaUJd1znHlW72PZm+GToJkY5XWXpllF1LCiMhwo1IOczN0l2f3eBaXNE67kN6cy23bUUGNHVTOYrJz8YP2loSfw5Q2T5p/zFF1cHWWrVyGmOZT5E6cbgl0tGlreI+ZWXUYUiR2QW3zZ21RmZ9LgJlUPHu/eoaWhFfiYkeWfGkEWgJk03sPb0uWpoJiU4WYkF6JcLNjZFNPhoGck56MeDKX741CjX+eXm+EeVVfRpYuYnSaFVTdlKNPxWVlXGFcFX9Rhi9si1+Hc+Ru/37mXBtjalvmbnVTcU6gY2V1oWJujyZP0U6mbLZ+uosdhLqHV387kCOVqXuhmviIPYQbbYaa3H6IWbuem3MBeIKGbJqCmhtWF1TLV3BOpp5WU8iPCYGSd5KZ7obhbhOF/GZiYStvKYySgiuD8nYTbNlfvYMrcwWDGpXba9t3xpRvUwKDklE9XoyMOI1ITqtzmmeFaHaRCZdkcaFsCXeSWkGVz2uOfydm0Fu5WZpa6JX3lexODISZhKxq33YwlRtzpmhfWy93mpFhl9x8948cjCVfc3zYecWJzGwch8ZbQl7JaCB39X6VUU1RyVIpWgV/YpfXgs9jhHfQhdJ5Om6ZXplZEYVtcBFsv2K/dk9lr2D9lQ5mn4cjnu2UDVR9VCyMeGR5ZBGGIWqcgeh4aWRUm7liK2erg6hY2J6rbCBv3ltMlguMX3LQZ8diYXKpTsZZzWuTWK5mVV7fUlVhKGfudmZ3Z3JGev9i6lRQVKCUo5AcWrN+FmxDTnZZEIBIWVdTN3W+lspWIGMRgXxg+ZXWbWJUgZmFUela/YCuWROXKlDlbDxc32JgTz9Te4EGkLpuK4XIYnRevni1ZHtj9V8YWn+RH54/XE9jQoB9W25VSpVNlYVtqGDgZ95y3VGBW+di3mxbcm1irpS9fhOBU22cUQRfdFmqUhJgc1mWZlCGn3UqY+Zh73z6i+ZUJ2slnrRr1YVVVHZQpGxqVbSNLHIVXhVgNnTNYpJjTHKYX0NuPm0AZVhv2HbQePx2VHUkUttTU06eXsFlKoDWgJtihlQoUq5wjYjRjeFseFTagPlX9IhUjWqWTZFpT5tst1XGdjB4qGL5cI5vbV/shNpofHj3e6iBC2dPnmdjsHhvVxJ4OZd5YqtiiFI1dNdrZFU+gbJ1rnY5U951+1BBXGyLx3tPUEdyl5rYmAJv4nRoeYdkpXf8YpGYK43BVFiAUk5qV/mCDYRzXu1R9nTEi09cYVf8bIeYRlo0eESb64+VfFZSUWL6lMZOhoNhhOmDsoTUVzRnA1duZmZtMYzdZhFwH2c6axZoGmK7WQNOxFEGb9Jnj2x2UctoR1lna2Z1Dl0QgVCf12VIeUF5kZp3jYJcXk4BTy9UUVkMeGhWFGzEjwNffWzjbKuLkGNwYD1tdXJmYo6UxZRDU8GPfnvfTiaMfk7UnrGUs5RNUlxvY5BFbTSMEVhMXSBrSWuqZ1tUVIGMf5lYN4U6X6JiR2o5lXJlhGBlaKd3VE6oT+ddmJesZNh/7VzPT416B1IEgxROL2CDeqaUtU+yTuZ5NHTkUrmC0mS9ed1bgWxSl3uPImw+UH9TBW7OZHRmMGzFYHeY94uGXjx0d3rLeRhOsZADdEJs2lZLkcVsi406U8aG8mavjkhccZogbtZTNlqLn6ONu1MIV6eYQ2ebkclsaFHKdfNirHI4Up1SOn+UcDh2dFNKnrdpbnjAltmIpH82ccNxiVHTZ+R05FgYZbdWqYt2mXBi1X75YO1w7FjBTrpOzV/nl/tOpIsDUopZq35UYs1O5WUOYjiDyYRjg42HlHG2brlb0n6XUclj1GeJgDmDFYgSUXpbglmxj3NOXWxlUSWJb48ulkqFXnQQlfCVpm3lgjFfkmQSbSiEboHDnF5YW40JTsFTHk9jZVFo01UnThRkmpprYsJaX3Rygqlt7mjnUI6DAnhAZzlSmWyxfrtQZVVecVt7UmbKc+uCSWdxXCBSfXFriOqVVZbFZGGNs4GEVVVsR2Iuf5JYJE9GVU+NTGYKThpc84iiaE5jDXrncI2C+lL2lxFc6FS1kM1+YllKjceGDIINgmaNRGQEXFFhiW0+eb6LN3gzdXtUOE+rjvFtIFrFfl55iGyhW3ZaGnW+gE5hF27wWB91JXVyckdT834Bd9t2aVLcgCNXCF4xWe5yvWV/bteLOFxxhkFT83f+YvZlwE7fmICGnlvGi/JT4nd/T05cdprLWQ9fOnnrWBZO/2eLTu1ik4odkL9SL2bcVWxWApDVTo1PypFwmQ9sAl5DYKRbxonVizZlS2KWmYhb/1uIYy5V11Mmdn1RLIWiZ7NoimuSYpOP1FMSgtFtj3VmTk6NcFufca+FkWbZZnJ/AIfNniCfXlwvZ/CPEWhfZw1i1nqFWLZecGUxb1VgN1INgFRkcIgpdQVeE2j0YhyXzFM9cgGMNGxhdw56LlSsd3qYHIL0i1V4FGfBcK9llWQ2Vh1gwXn4Ux1Oe2uGgPpb41XbVjpPPE9ymfNdfmc4gAJggpgBkItbvIv1ixxkWILeZP1Vz4JlkddPIH0fkJ9881BRWK9uv1vJi4OAeJGchJd7fYaLlo+W5X7Tmo54gVxXekKQp5ZfeVlbX2MLe9GErWgGVSl/EHQifQGVQGJMWNZOg1t5WVRYbXMeY0uOD47OgNSCrGLwU/BsXpEqWQFgcGxNV0pkKo0rduluW1eAavB1bW8tjAiMZlfva5KIs3iiY/lTrXBkbFhYKmQCWOBom4EQVdZ8GFC6jsxtn43rcI9jm23UbuZ+BIRDaAOQ2G12lqiLV1l5cuSFfoG8dYqKr2hUUiKOEZXQY5iYRI58VVNP/2aPVtVglW1DUklcKVn7bWtYMHUcdWxgFIJGgRFjYWfijzp38400jcGUFl6FUyxUw3BAbPdeXFCtTq1eOmNHghqQUGhukbN3DFTclGRf5Xp2aEVjUnvfftt1d1CVYjRZD5D4UcN5gXr+VpJfFJCCbWBcH1cQVFRRTW7iVqhjk5h/gRWHKokAkB5Ub1zAgdZiWGIxgTWeQJZumnyaLWmlWdNiPlUWY8dU2YY8bQNa5nSciGprFllMjC9ffm6pc32YOE73cIxbl3g9Y1pmlnbLYJtbSVoHTlWBamyLc6FOiWdRf4Bf+mUbZ9hfhFkBWs1drl9xU+aX3Y9FaPRWL1XfYDpOTW/0fseCDoTUWR9PKk8+XKx+KmcahXNUT3XDgIJVT5tNTy1uE4wJXHBha1MfdiluioaHZfuVuX47VDN6Cn3uleFVwX/udB1jF4ehbZ16EWKhZWdT4WODbOtdXFSolExOYWzsi0tc4GWcgqdoPlQ0VMtrZmuUTkJjSFMegg1Prk9eVwpi/pZkZmly/1KhUp9g74sUZplxkGd/iVJ4/XdwZjtWOFQhlXpyAHpvYAxeiWCdgRVZ3GCEce9wqm5QbIByhGqtiC1eYE6zWpxV45QXbft8mZYPYsZ+jnd+hiNTHpeWj4dm4VygT+1yC06mUw9ZE1SAYyiVSFHZTpycpH64VCSNVIg3gvKVjm0mX8xaPmZplrBzLnO/U3qBhZmhf6pbd5ZQlr9++HaiU3aVmZmxe0SJWG5hTtR/ZXnmi/NgzVSrTnmY911has9QEVRhjCeEXXgEl0pS7lSjVgCViG21W8ZtU2YPXF1bIWiWgHhVEXtIZVRpm05Ha06Hi5dPUx9jOmSqkJxlwYAQjJlRsGh4U/mHyGHEbPtsIoxRXKqFr4IMlSNrm4+wZftfw1/hT0WIH2ZlgSlz+mB0URFSi1diX6KQTIiSkXheT2cnYNNZRFH2UfiACFN5bMSWinERT+5Pnn89Z8VVCJXAeZaI436fWAxiAJdahhhWe5iQX7iLxIRXkdlT7WWPXlx1ZGBufX9a6n7tfmmPp1WjW6xgy2WEcwmQY3Ypd9p+dJebhWZbdHrqlkCIy1KPcapf7GXii/tbb5rhXYlrW2yti6+LCpDFj4tTvGImni2eQFQrTr2CWXKchhZdWYivbcWW0VSaTraLCXG9VAmW33D5bdB2JU4UeBKHqVz2XgCKnJgOlo5wv2xEWaljPHdNiBRvc4IwWNVxjFMaeMGWAVVmXzBxtFsajIyag2suWS+e53loZ2xib0+hdYp/C20zlids8E7SdXtRN2g+b4CQcIGWWXZ0R2QnXGWQkXojjNpZrFQAgm+DgYkAgDBpTlY2gDdyzpG2UV9OdZiWYxpO9lPzZkuBHFmybQBO+Vg7U9Zj8ZSdTwpPY4iQmDdZV5D7eepO8ICRdYJsnFvoWV1fBWmBhhpQ8l1ZTuN35U56gpFiE2aRkHlcv055X8aBOJCEgKt1pk7UiA9hxWvGX0lOynaibuOLrosKjNGLAl/8f8x/zn41g2uD4Fa3a/OXNJb7WR9U9pTrbcVbbpk5XBVfkJZwU/GCMWp0WnCelF4of7mDJIQlhGeDR4fOj2KNyHZxX5aYbHggZt9U5WJjT8OByHW4Xs2WCo75ho9U82yMbThsf2DHUih1fV4YT6Bg518kXDF1rpDAlLlyuWw4bkmRCWfLU/NTUU/JkfGLyFN8XsKP5G2OTsJ2hmlehhphBoJZT95PPpB8nAlhHW4UboWWiE4xWuiWDk5/XLl5h1vti71/iXPfV4uCwZABVEeQu1XqXKFfCGEya/FysoCJinRt01vViISYa4xtmjOeCm6kUUNRo1eBiJ9T9GOVj+1WWFQGVz9zkG4Yf9yP0YI/YShgYpbwZqZ+io3DjaWUs1ykfAhnpmAFlhiAkU7nkABTaJZBUdCPdIVdkVVm9ZdVWx1TOHhCZz1oyVR+cLBbfY+NUShXsVQSZYJmXo1DjQ+BbIRtkN98/1H7haNn6WWhb6SGgY5qViCQgnZ2cOVxI43pYhlS/Ww8jQ5gnliOYf5mYI1OYrNVI24tZ2eP4ZT4lSh3BWioaYtUTU64cMiLWGSLZYVbhHo6UOhbu3fha3mKmHy+bM92qWWXjy1dVVw4hghoYFMYYtl6W279fh9q4HpwXzNvIF+MY6htVmcIThBeJo3XTsCANHaclttiLWZ+YrxsdY1ncWl/RlGHgOxTbpCYYvJU8IaZjwWAF5UXhdmPWW3Nc59lH3cEdSd4+4EejYiUpk+VZ7l1yosHly9jR5U1lriEI2NBd4Ff8HKJThRgdGXvYmNrP2UnXsd10ZDBi52CnWcvZTFUGIfld6KAAoFBbEtOx35MgPR2DWmWa2diPFCET0BXB2Nia76N6lPoZbh+118aY7dj84H0gW5/HF7ZXDZSembpeRp6KI2ZcNR13m67bJJ6LU7FduBfn5R3iMh+zXm/gM2R8k4XTx+CaFTeXTJtzIulfHSPmIAaXpJUsXaZWzxmpJrgcypo24YxZypz+IvbixCQ+XrbcG5xxGKpdzFWO05XhPFnqVLAhi6N+JRRe09P6GxdeXuak2Iqcv1iE04WeGyPsGRajcZ7aWiEXsWIhlmeZO5YtnIOaSWV/Y9YjWBXAH8GjMZRSWPZYlNTTGgidAGDTJFEVUB3fHBKbXlRqFREjf9Zy27EbVxbK33UTn18025QW+qBDW5XWwOb1Wgqjpdb/H47YLV+uZBwjU9ZzWPfebONUlPPZVZ5xYs7lsR+u5SCfjRWiZEAZ2p/Clx1kChm5l1QT95nWlBcT1BXp16NTgxOQFEQTv9eRVMVTphOHk4ym2xbaVYoTrp5P04VU0dOLVk7cm5TEGzfVuSAl5nTa353F582Tp9OEJ9cTmlOk06IgltbbFUPVsROjVOdU6NTpVOuU2WXXY0aU/VTJlMuUz5TXI1mU2NTAlIIUg5SLVIzUj9SQFJMUl5SYVJcUq+EfVKCUoFSkFKTUoJRVH+7TsNOyU7CTuhO4U7rTt5OG0/zTiJPZE/1TiVPJ08JTytPXk9nTzhlWk9dT19PV08yTz1Pdk90T5FPiU+DT49Pfk97T6pPfE+sT5RP5k/oT+pPxU/aT+NP3E/RT99P+E8pUExQ808sUA9QLlAtUP5PHFAMUCVQKFB+UENQVVBIUE5QbFB7UKVQp1CpULpQ1lAGUe1Q7FDmUO5QB1ELUd1OPWxYT2VPzk+gn0ZsdHxuUf1dyZ6YmYFRFFn5Ug1TB4oQU+tRGVlVUaBOVlGzTm6IpIi1ThSB0oiAeTRbA4i4f6tRsVG9UbxRx1GWUaJRpVGgi6aLp4uqi7SLtYu3i8KLw4vLi8+LzovSi9OL1IvWi9iL2Yvci9+L4Ivki+iL6Yvui/CL84v2i/mL/Iv/iwCMAowEjAeMDIwPjBGMEowUjBWMFowZjBuMGIwdjB+MIIwhjCWMJ4wqjCuMLowvjDKMM4w1jDaMaVN6Ux2WIpYhljGWKpY9ljyWQpZJllSWX5ZnlmyWcpZ0loiWjZaXlrCWl5CbkJ2QmZCskKGQtJCzkLaQupC4kLCQz5DFkL6Q0JDEkMeQ05DmkOKQ3JDXkNuQ65DvkP6QBJEikR6RI5ExkS+ROZFDkUaRDVJCWaJSrFKtUr5S/1TQUtZS8FLfU+5xzXf0XvVR/FEvm7ZTAV9ade9dTFepV6FXfli8WMVY0VgpVyxXKlczVzlXLlcvV1xXO1dCV2lXhVdrV4ZXfFd7V2hXbVd2V3NXrVekV4xXslfPV6dXtFeTV6BX1VfYV9pX2VfSV7hX9FfvV/hX5FfdVwtYDVj9V+1XAFgeWBlYRFggWGVYbFiBWIlYmliAWKiZGZ//YXmCfYJ/go+CioKogoSCjoKRgpeCmYKrgriCvoKwgsiCyoLjgpiCt4KugsuCzILBgqmCtIKhgqqCn4LEgs6CpILhggmD94Lkgg+DB4PcgvSC0oLYggyD+4LTghGDGoMGgxSDFYPggtWCHINRg1uDXIMIg5KDPIM0gzGDm4Negy+DT4NHg0ODX4NAgxeDYIMtgzqDM4Nmg2WDaIMbg2mDbINqg22DboOwg3iDs4O0g6CDqoOTg5yDhYN8g7aDqYN9g7iDe4OYg56DqIO6g7yDwYMBhOWD2IMHWBiEC4Tdg/2D1oMchDiEEYQGhNSD34MPhAOE+IP5g+qDxYPAgyaE8IPhg1yEUYRahFmEc4SHhIiEeoSJhHiEPIRGhGmEdoSMhI6EMYRthMGEzYTQhOaEvYTThMqEv4S6hOCEoYS5hLSEl4TlhOOEDIUNdTiF8IQ5hR+FOoVWhTuF/4T8hFmFSIVohWSFXoV6haJ3Q4VyhXuFpIWohYeFj4V5ha6FnIWFhbmFt4WwhdOFwYXchf+FJ4YFhimGFoY8hv5eCF88WUFZN4BVWVpZWFkPUyJcJVwsXDRcTGJqYp9iu2LKYtpi12LuYiJj9mI5Y0tjQ2OtY/ZjcWN6Y45jtGNtY6xjimNpY65jvGPyY/hj4GP/Y8Rj3mPOY1JkxmO+Y0VkQWQLZBtkIGQMZCZkIWReZIRkbWSWZHpkt2S4ZJlkumTAZNBk12TkZOJkCWUlZS5lC1/SXxl1EV9fU/FT/VPpU+hT+1MSVBZUBlRLVFJUU1RUVFZUQ1QhVFdUWVQjVDJUglSUVHdUcVRkVJpUm1SEVHZUZlSdVNBUrVTCVLRU0lSnVKZU01TUVHJUo1TVVLtUv1TMVNlU2lTcVKlUqlSkVN1Uz1TeVBtV51QgVf1UFFXzVCJVI1UPVRFVJ1UqVWdVj1W1VUlVbVVBVVVVP1VQVTxVN1VWVXVVdlV3VTNVMFVcVYtV0lWDVbFVuVWIVYFVn1V+VdZVkVV7Vd9VvVW+VZRVmVXqVfdVyVUfVtFV61XsVdRV5lXdVcRV71XlVfJV81XMVc1V6FX1VeRVlI8eVghWDFYBViRWI1b+VQBWJ1YtVlhWOVZXVixWTVZiVllWXFZMVlRWhlZkVnFWa1Z7VnxWhVaTVq9W1FbXVt1W4Vb1VutW+Vb/VgRXClcJVxxXD14ZXhReEV4xXjtePF43XkReVF5bXl5eYV6MXHpcjVyQXJZciFyYXJlckVyaXJxctVyiXL1crFyrXLFco1zBXLdcxFzSXORcy1zlXAJdA10nXSZdLl0kXR5dBl0bXVhdPl00XT1dbF1bXW9dXV1rXUtdSl1pXXRdgl2ZXZ1dc4y3XcVdc193X4Jfh1+JX4xflV+ZX5xfqF+tX7VfvF9iiGFfrXKwcrRyt3K4csNywXLOcs1y0nLocu9y6XLycvRy93IBc/NyA3P6cvtyF3MTcyFzCnMecx1zFXMiczlzJXMsczhzMXNQc01zV3Ngc2xzb3N+cxuCJVnnmCRZAlljmWeZaJlpmWqZa5lsmXSZd5l9mYCZhJmHmYqZjZmQmZGZk5mUmZWZgF6RXotell6lXqBeuV61Xr5es15TjdJe0V7bXuhe6l66gcRfyV/WX89fA2DuXwRg4V/kX/5fBWAGYOpf7V/4XxlgNWAmYBtgD2ANYClgK2AKYD9gIWB4YHlge2B6YEJgamB9YJZgmmCtYJ1gg2CSYIxgm2DsYLtgsWDdYNhgxmDaYLRgIGEmYRVhI2H0YABhDmErYUphdWGsYZRhp2G3YdRh9WHdX7OW6ZXrlfGV85X1lfaV/JX+lQOWBJYGlgiWCpYLlgyWDZYPlhKWFZYWlheWGZYalixOP3IVYjVsVGxcbEpso2yFbJBslGyMbGhsaWx0bHZshmypbNBs1GytbPds+GzxbNdssmzgbNZs+mzrbO5ssWzTbO9s/mw5bSdtDG1DbUhtB20EbRltDm0rbU1tLm01bRptT21SbVRtM22RbW9tnm2gbV5tk22UbVxtYG18bWNtGm7HbcVt3m0Obr9t4G0RbuZt3W3ZbRZuq20Mbq5tK25ubk5ua26ybl9uhm5TblRuMm4lbkRu326xbphu4G4tb+JupW6nbr1uu263btdutG7Pbo9uwm6fbmJvRm9HbyRvFW/5bi9vNm9Lb3RvKm8JbylviW+Nb4xveG9yb3xvem/Rb8lvp2+5b7Zvwm/hb+5v3m/gb+9vGnAjcBtwOXA1cE9wXnCAW4RblVuTW6VbuFsvdZ6aNGTkW+5bMInwW0eOB4u2j9OP1Y/lj+6P5I/pj+aP84/ojwWQBJALkCaQEZANkBaQIZA1kDaQLZAvkESQUZBSkFCQaJBYkGKQW5C5ZnSQfZCCkIiQg5CLkFBfV19WX1hfO1yrVFBcWVxxW2NcZly8fypfKV8tX3SCPF87m25cgVmDWY1ZqVmqWaNZl1nKWatZnlmkWdJZslmvWddZvlkFWgZa3VkIWuNZ2Fn5WQxaCVoyWjRaEVojWhNaQFpnWkpaVVo8WmJadVrsgKpam1p3WnpavlrrWrJa0lrUWrha4FrjWvFa1lrmWtha3FoJWxdbFlsyWzdbQFsVXBxcWltlW3NbUVtTW2JbdZp3mniaepp/mn2agJqBmoWaiJqKmpCakpqTmpaamJqbmpyanZqfmqCaopqjmqWap5qffqF+o36lfqh+qX6tfrB+vn7AfsF+wn7Jfst+zH7QftR+137bfuB+4X7ofut+7n7vfvF+8n4Nf/Z++n77fv5+AX8CfwN/B38Ifwt/DH8PfxF/En8Xfxl/HH8bfx9/IX8ifyN/JH8lfyZ/J38qfyt/LH8tfy9/MH8xfzJ/M381f3pef3XbXT51lZCOc5FzrnOic59zz3PCc9Fzt3Ozc8BzyXPIc+Vz2XN8mAp06XPnc95zunPycw90KnRbdCZ0JXQodDB0LnQsdBt0GnRBdFx0V3RVdFl0d3RtdH50nHSOdIB0gXSHdIt0nnSodKl0kHSndNJ0unTql+uX7JdMZ1NnXmdIZ2lnpWeHZ2pnc2eYZ6dndWeoZ55nrWeLZ3dnfGfwZwlo2GcKaOlnsGcMaNlntWfaZ7Nn3WcAaMNnuGfiZw5owWf9ZzJoM2hgaGFoTmhiaERoZGiDaB1oVWhmaEFoZ2hAaD5oSmhJaClotWiPaHRod2iTaGtowmhuafxoH2kgafloJGnwaAtpAWlXaeNoEGlxaTlpYGlCaV1phGlraYBpmGl4aTRpzGmHaYhpzmmJaWZpY2l5aZtpp2m7aatprWnUabFpwWnKad9plWngaY1p/2kvau1pF2oYamVq8mlEaj5qoGpQaltqNWqOanlqPWooalhqfGqRapBqqWqXaqtqN3NSc4FrgmuHa4RrkmuTa41rmmuba6Frqmtrj22PcY9yj3OPdY92j3iPd495j3qPfI9+j4GPgo+Ej4ePi4+Nj46Pj4+Yj5qPzo4LYhdiG2IfYiJiIWIlYiRiLGLnge909HT/dA91EXUTdTRl7mXvZfBlCmYZZnJnA2YVZgBmhXD3Zh1mNGYxZjZmNWYGgF9mVGZBZk9mVmZhZldmd2aEZoxmp2adZr5m22bcZuZm6WYyjTONNo07jT2NQI1FjUaNSI1JjUeNTY1VjVmNx4nKicuJzInOic+J0InRiW5yn3JdcmZyb3J+cn9yhHKLco1yj3KScghjMmOwYz9k2GQEgOpr82v9a/Vr+WsFbAdsBmwNbBVsGGwZbBpsIWwpbCRsKmwybDVlVWVrZU1yUnJWcjByYoYWUp+AnICTgLyACme9gLGAq4CtgLSAt4DngOiA6YDqgNuAwoDEgNmAzYDXgBBn3YDrgPGA9IDtgA2BDoHygPyAFWcSgVqMNoEegSyBGIEygUiBTIFTgXSBWYFagXGBYIFpgXyBfYFtgWeBTVi1WoiBgoGRgdVuo4GqgcyBJmfKgbuBwYGmgSRrN2s5a0NrRmtZa9GY0pjTmNWY2ZjamLNrQF/Ca/OJkGVRn5NlvGXGZcRlw2XMZc5l0mXWZYBwnHCWcJ1wu3DAcLdwq3CxcOhwynAQcRNxFnEvcTFxc3FccWhxRXFycUpxeHF6cZhxs3G1cahxoHHgcdRx53H5cR1yKHJscBhxZnG5cT5iPWJDYkhiSWI7eUB5RnlJeVt5XHlTeVp5YnlXeWB5b3lneXp5hXmKeZp5p3mzedFf0F88YF1gWmBnYEFgWWBjYKtgBmENYV1hqWGdYcth0WEGYoCAf4CTbPZs/G32d/h3AHgJeBd4GHgReKtlLXgceB14OXg6eDt4H3g8eCV4LHgjeCl4TnhteFZ4V3gmeFB4R3hMeGp4m3iTeJp4h3iceKF4o3iyeLl4pXjUeNl4yXjsePJ4BXn0eBN5JHkeeTR5m5/5nvue/J7xdgR3DXf5dgd3CHcadyJ3GXctdyZ3NXc4d1B3UXdHd0N3Wndod2J3ZXd/d413fXeAd4x3kXefd6B3sHe1d713OnVAdU51S3VIdVt1cnV5dYN1WH9hf19/SIpof3R/cX95f4F/fn/NduV2MoiFlIaUh5SLlIqUjJSNlI+UkJSUlJeUlZSalJuUnJSjlKSUq5SqlK2UrJSvlLCUspS0lLaUt5S4lLmUupS8lL2Uv5TElMiUyZTKlMuUzJTNlM6U0JTRlNKU1ZTWlNeU2ZTYlNuU3pTflOCU4pTklOWU55TolOqU6ZTrlO6U75TzlPSU9ZT3lPmU/JT9lP+UA5UClQaVB5UJlQqVDZUOlQ+VEpUTlRSVFZUWlRiVG5UdlR6VH5UilSqVK5UplSyVMZUylTSVNpU3lTiVPJU+lT+VQpU1lUSVRZVGlUmVTJVOlU+VUpVTlVSVVpVXlViVWZVblV6VX5VdlWGVYpVklWWVZpVnlWiVaZVqlWuVbJVvlXGVcpVzlTqV53fsd8mW1XnteeN563kGekddA3oCeh56FHo5ejd6UXrPnqWZcHqIdo52k3aZdqR23nTgdCx1IJ4iniieKZ4qniueLJ4ynjGeNp44njeeOZ46nj6eQZ5CnkSeRp5HnkieSZ5LnkyeTp5RnlWeV55anlueXJ5enmOeZp5nnmieaZ5qnmuebJ5xnm2ec56SdZR1lnWgdZ11rHWjdbN1tHW4dcR1sXWwdcN1wnXWdc1143XodeZ15HXrded1A3bxdfx1/3UQdgB2BXYMdhd2CnYldhh2FXYZdht2PHYidiB2QHYtdjB2P3Y1dkN2PnYzdk12XnZUdlx2VnZrdm92yn/menh6eXqAeoZ6iHqVeqZ6oHqseqh6rXqzemSIaYhyiH2If4iCiKKIxoi3iLyIyYjiiM6I44jliPGIGon8iOiI/ojwiCGJGYkTiRuJCok0iSuJNolBiWaJe4mLdeWAsna0dtx3EoAUgBaAHIAggCKAJYAmgCeAKYAogDGAC4A1gEOARoBNgFKAaYBxgIOJeJiAmIOYiZiMmI2Yj5iUmJqYm5iemJ+YoZiimKWYpphNhlSGbIZuhn+GeoZ8hnuGqIaNhouGrIadhqeGo4aqhpOGqYa2hsSGtYbOhrCGuoaxhq+GyYbPhrSG6YbxhvKG7YbzhtCGE4fehvSG34bYhtGGA4cHh/iGCIcKhw2HCYcjhzuHHoclhy6HGoc+h0iHNIcxhymHN4c/h4KHIod9h36He4dgh3CHTIduh4uHU4djh3yHZIdZh2WHk4evh6iH0ofGh4iHhYeth5eHg4erh+WHrIe1h7OHy4fTh72H0YfAh8qH24fqh+CH7ocWiBOI/ocKiBuIIYg5iDyINn9Cf0R/RX8Qgvp6/XoIewN7BHsVewp7K3sPe0d7OHsqexl7LnsxeyB7JXskezN7Pnsee1h7WntFe3V7THtde2B7bnt7e2J7cntxe5B7pnune7h7rHude6h7hXuqe5x7onure7R70XvBe8x73Xvae+V75nvqewx8/nv8ew98FnwLfB98KnwmfDh8QXxAfP6BAYICggSC7IFEiCGCIoIjgi2CL4IogiuCOII7gjOCNII+gkSCSYJLgk+CWoJfgmiCfoiFiIiI2IjfiF6JnX+ff6d/r3+wf7J/fHxJZZF8nXycfJ58onyyfLx8vXzBfMd8zHzNfMh8xXzXfOh8boKoZr9/zn/Vf+V/4X/mf+l/7n/zf/h8d32mfa59R36bfrietJ5zjYSNlI2RjbGNZ41tjUeMSYxKkVCRTpFPkWSRYpFhkXCRaZFvkX2RfpFykXSReZGMkYWRkJGNkZGRopGjkaqRrZGuka+RtZG0kbqRVYx+nriN640FjlmOaY61jb+NvI26jcSN1o3XjdqN3o3Ojc+N243GjeyN9434jeON+Y37jeSNCY79jRSOHY4fjiyOLo4jji+OOo5AjjmONY49jjGOSY5BjkKOUY5SjkqOcI52jnyOb450joWOj46UjpCOnI6ejniMgoyKjIWMmIyUjJtl1oneidqJ3InlieuJ74k+iiaLU5fplvOW75YGlwGXCJcPlw6XKpctlzCXPpeAn4OfhZ+Gn4efiJ+Jn4qfjJ/+ngufDZ+5lryWvZbOltKWv3fglo6SrpLIkj6TapPKk4+TPpRrlH+cgpyFnIach5yInCN6i5yOnJCckZySnJSclZyanJucnpyfnKCcoZyinKOcpZymnKecqJypnKucrZyunLCcsZyynLOctJy1nLact5y6nLucvJy9nMScxZzGnMecypzLnMyczZzOnM+c0JzTnNSc1ZzXnNic2ZzcnN2c35zinHyXhZeRl5KXlJevl6uXo5eyl7SXsZqwmreaWJ62mrqavJrBmsCaxZrCmsuazJrRmkWbQ5tHm0mbSJtNm1Gb6JgNmS6ZVZlUmd+a4Zrmmu+a65r7mu2a+ZoImw+bE5sfmyObvZ6+njt+gp6Hnoiei56SntaTnZ6fntue3J7dnuCe357inume557lnuqe754inyyfL585nzefPZ8+n0SfAAAAAAAAAAAAAAAAAk4ETgVOBk4PThJOF04fTiBOIU4jTiZOKU4uTi9OMU4zTjVON048TkBOQU5CTkRORk5KTlFOVU5XTlpOW05iTmNOZE5lTmdOaE5qTmtObE5tTm5Ob05yTnROdU52TndOeE55TnpOe058Tn1Of06AToFOgk6DToROhU6HTopO/v+QTpZOl06ZTpxOnU6eTqNOqk6vTrBOsU60TrZOt064TrlOvE69Tr5OyE7MTs9O0E7STtpO207cTuBO4k7mTudO6U7tTu5O707xTvRO+E75TvpO/E7+TgBPAk8DTwRPBU8GTwdPCE8LTwxPEk8TTxRPFU8WTxxPHU8hTyNPKE8pTyxPLU8uTzFPM081TzdPOU87Tz5PP09AT0FPQk9ET0VPR09IT0lPSk9LT0xPUk9UT1ZPYU9iT2ZPaE9qT2tPbU9uT3FPck91T3dPeE95T3pPfU+AT4FPgk+FT4ZPh0+KT4xPjk+QT5JPk0+VT5ZPmE+ZT5pPnE+eT59PoU+iT6RPq0+tT7BPsU+yT7NPtE+2T7dPuE+5T7pPu0+8T71Pvk/AT8FPwk/GT8dPyE/JT8tPzE/NT9JP00/UT9VP1k/ZT9tP4E/iT+RP5U/nT+tP7E/wT/JP9E/1T/ZP90/5T/tP/E/9T/9PAFABUAJQA1AEUAVQBlAHUAhQCVAKUP7/C1AOUBBQEVATUBVQFlAXUBtQHVAeUCBQIlAjUCRQJ1ArUC9QMFAxUDJQM1A0UDVQNlA3UDhQOVA7UD1QP1BAUEFQQlBEUEVQRlBJUEpQS1BNUFBQUVBSUFNQVFBWUFdQWFBZUFtQXVBeUF9QYFBhUGJQY1BkUGZQZ1BoUGlQalBrUG1QblBvUHBQcVByUHNQdFB1UHhQeVB6UHxQfVCBUIJQg1CEUIZQh1CJUIpQi1CMUI5Qj1CQUJFQklCTUJRQlVCWUJdQmFCZUJpQm1CcUJ1QnlCfUKBQoVCiUKRQplCqUKtQrVCuUK9QsFCxULNQtFC1ULZQt1C4ULlQvFC9UL5Qv1DAUMFQwlDDUMRQxVDGUMdQyFDJUMpQy1DMUM1QzlDQUNFQ0lDTUNRQ1VDXUNhQ2VDbUNxQ3VDeUN9Q4FDhUOJQ41DkUOVQ6FDpUOpQ61DvUPBQ8VDyUPRQ9lD3UPhQ+VD6UPxQ/VD+UP9QAFEBUQJRA1EEUQVRCFH+/wlRClEMUQ1RDlEPURBREVETURRRFVEWURdRGFEZURpRG1EcUR1RHlEfUSBRIlEjUSRRJVEmUSdRKFEpUSpRK1EsUS1RLlEvUTBRMVEyUTNRNFE1UTZRN1E4UTlROlE7UTxRPVE+UUJRR1FKUUxRTlFPUVBRUlFTUVdRWFFZUVtRXVFeUV9RYFFhUWNRZFFmUWdRaVFqUW9RclF6UX5Rf1GDUYRRhlGHUYpRi1GOUY9RkFGRUZNRlFGYUZpRnVGeUZ9RoVGjUaZRp1GoUalRqlGtUa5RtFG4UblRulG+Ub9RwVHCUcNRxVHIUcpRzVHOUdBR0lHTUdRR1VHWUddR2FHZUdpR3FHeUd9R4lHjUeVR5lHnUehR6VHqUexR7lHxUfJR9FH3Uf5RBFIFUglSC1IMUg9SEFITUhRSFVIcUh5SH1IhUiJSI1IlUiZSJ1IqUixSL1IxUjJSNFI1UjxSPlJEUkVSRlJHUkhSSVJLUk5ST1JSUlNSVVJXUlhS/v9ZUlpSW1JdUl9SYFJiUmNSZFJmUmhSa1JsUm1SblJwUnFSc1J0UnVSdlJ3UnhSeVJ6UntSfFJ+UoBSg1KEUoVShlKHUolSilKLUoxSjVKOUo9SkVKSUpRSlVKWUpdSmFKZUppSnFKkUqVSplKnUq5Sr1KwUrRStVK2UrdSuFK5UrpSu1K8Ur1SwFLBUsJSxFLFUsZSyFLKUsxSzVLOUs9S0VLTUtRS1VLXUtlS2lLbUtxS3VLeUuBS4VLiUuNS5VLmUudS6FLpUupS61LsUu1S7lLvUvFS8lLzUvRS9VL2UvdS+FL7UvxS/VIBUwJTA1MEUwdTCVMKUwtTDFMOUxFTElMTUxRTGFMbUxxTHlMfUyJTJFMlUydTKFMpUytTLFMtUy9TMFMxUzJTM1M0UzVTNlM3UzhTPFM9U0BTQlNEU0ZTS1NMU01TUFNUU1hTWVNbU11TZVNoU2pTbFNtU3JTdlN5U3tTfFN9U35TgFOBU4NTh1OIU4pTjlOPU/7/kFORU5JTk1OUU5ZTl1OZU5tTnFOeU6BToVOkU6dTqlOrU6xTrVOvU7BTsVOyU7NTtFO1U7dTuFO5U7pTvFO9U75TwFPDU8RTxVPGU8dTzlPPU9BT0lPTU9VT2lPcU91T3lPhU+JT51P0U/pT/lP/UwBUAlQFVAdUC1QUVBhUGVQaVBxUIlQkVCVUKlQwVDNUNlQ3VDpUPVQ/VEFUQlREVEVUR1RJVExUTVROVE9UUVRaVF1UXlRfVGBUYVRjVGVUZ1RpVGpUa1RsVG1UblRvVHBUdFR5VHpUflR/VIFUg1SFVIdUiFSJVIpUjVSRVJNUl1SYVJxUnlSfVKBUoVSiVKVUrlSwVLJUtVS2VLdUuVS6VLxUvlTDVMVUylTLVNZU2FTbVOBU4VTiVONU5FTrVOxU71TwVPFU9FT1VPZU91T4VPlU+1T+VABVAlUDVQRVBVUIVQpVC1UMVQ1VDlUSVRNVFVUWVRdVGFUZVRpVHFUdVR5VH1UhVSVVJlX+/yhVKVUrVS1VMlU0VTVVNlU4VTlVOlU7VT1VQFVCVUVVR1VIVUtVTFVNVU5VT1VRVVJVU1VUVVdVWFVZVVpVW1VdVV5VX1VgVWJVY1VoVWlVa1VvVXBVcVVyVXNVdFV5VXpVfVV/VYVVhlWMVY1VjlWQVZJVk1WVVZZVl1WaVZtVnlWgVaFVolWjVaRVpVWmVahVqVWqVatVrFWtVa5Vr1WwVbJVtFW2VbhVulW8Vb9VwFXBVcJVw1XGVcdVyFXKVctVzlXPVdBV1VXXVdhV2VXaVdtV3lXgVeJV51XpVe1V7lXwVfFV9FX2VfhV+VX6VftV/FX/VQJWA1YEVgVWBlYHVgpWC1YNVhBWEVYSVhNWFFYVVhZWF1YZVhpWHFYdViBWIVYiViVWJlYoVilWKlYrVi5WL1YwVjNWNVY3VjhWOlY8Vj1WPlZAVkFWQlZDVkRWRVZGVkdWSFZJVkpWS1ZPVlBWUVZSVlNWVVZWVlpWW1ZdVl5WX1ZgVmFW/v9jVmVWZlZnVm1WblZvVnBWclZzVnRWdVZ3VnhWeVZ6Vn1WflZ/VoBWgVaCVoNWhFaHVohWiVaKVotWjFaNVpBWkVaSVpRWlVaWVpdWmFaZVppWm1acVp1WnlafVqBWoVaiVqRWpVamVqdWqFapVqpWq1asVq1WrlawVrFWslazVrRWtVa2VrhWuVa6VrtWvVa+Vr9WwFbBVsJWw1bEVsVWxlbHVshWyVbLVsxWzVbOVs9W0FbRVtJW01bVVtZW2FbZVtxW41blVuZW51boVulW6lbsVu5W71byVvNW9lb3VvhW+1b8VgBXAVcCVwVXB1cLVwxXDVcOVw9XEFcRVxJXE1cUVxVXFlcXVxhXGVcaVxtXHVceVyBXIVciVyRXJVcmVydXK1cxVzJXNFc1VzZXN1c4VzxXPVc/V0FXQ1dEV0VXRldIV0lXS1dSV1NXVFdVV1ZXWFdZV2JXY1dlV2dXbFduV3BXcVdyV3RXdVd4V3lXeld9V35Xf1eAV/7/gVeHV4hXiVeKV41XjlePV5BXkVeUV5VXlleXV5hXmVeaV5xXnVeeV59XpVeoV6pXrFevV7BXsVezV7VXtle3V7lXule7V7xXvVe+V79XwFfBV8RXxVfGV8dXyFfJV8pXzFfNV9BX0VfTV9ZX11fbV9xX3lfhV+JX41flV+ZX51foV+lX6lfrV+xX7lfwV/FX8lfzV/VX9lf3V/tX/Ff+V/9XAVgDWARYBVgIWAlYClgMWA5YD1gQWBJYE1gUWBZYF1gYWBpYG1gcWB1YH1giWCNYJVgmWCdYKFgpWCtYLFgtWC5YL1gxWDJYM1g0WDZYN1g4WDlYOlg7WDxYPVg+WD9YQFhBWEJYQ1hFWEZYR1hIWElYSlhLWE5YT1hQWFJYU1hVWFZYV1hZWFpYW1hcWF1YX1hgWGFYYlhjWGRYZlhnWGhYaVhqWG1YblhvWHBYcVhyWHNYdFh1WHZYd1h4WHlYelh7WHxYfVh/WIJYhFiGWIdYiFiKWItYjFj+/41YjliPWJBYkViUWJVYlliXWJhYm1icWJ1YoFihWKJYo1ikWKVYplinWKpYq1isWK1YrlivWLBYsViyWLNYtFi1WLZYt1i4WLlYuli7WL1Yvli/WMBYwljDWMRYxljHWMhYyVjKWMtYzFjNWM5Yz1jQWNJY01jUWNZY11jYWNlY2ljbWNxY3VjeWN9Y4FjhWOJY41jlWOZY51joWOlY6ljtWO9Y8VjyWPRY9Vj3WPhY+lj7WPxY/Vj+WP9YAFkBWQNZBVkGWQhZCVkKWQtZDFkOWRBZEVkSWRNZF1kYWRtZHVkeWSBZIVkiWSNZJlkoWSxZMFkyWTNZNVk2WTtZPVk+WT9ZQFlDWUVZRllKWUxZTVlQWVJZU1lZWVtZXFldWV5ZX1lhWWNZZFlmWWdZaFlpWWpZa1lsWW1ZbllvWXBZcVlyWXVZd1l6WXtZfFl+WX9ZgFmFWYlZi1mMWY5Zj1mQWZFZlFmVWZhZmlmbWZxZnVmfWaBZoVmiWaZZ/v+nWaxZrVmwWbFZs1m0WbVZtlm3WbhZulm8Wb1Zv1nAWcFZwlnDWcRZxVnHWchZyVnMWc1ZzlnPWdVZ1lnZWdtZ3lnfWeBZ4VniWeRZ5lnnWelZ6lnrWe1Z7lnvWfBZ8VnyWfNZ9Fn1WfZZ91n4WfpZ/Fn9Wf5ZAFoCWgpaC1oNWg5aD1oQWhJaFFoVWhZaF1oZWhpaG1odWh5aIVoiWiRaJlonWihaKlorWixaLVouWi9aMFozWjVaN1o4WjlaOlo7Wj1aPlo/WkFaQlpDWkRaRVpHWkhaS1pMWk1aTlpPWlBaUVpSWlNaVFpWWldaWFpZWltaXFpdWl5aX1pgWmFaY1pkWmVaZlpoWmlaa1psWm1ablpvWnBacVpyWnNaeFp5WntafFp9Wn5agFqBWoJag1qEWoVahlqHWohaiVqKWotajFqNWo5aj1qQWpFak1qUWpVallqXWphamVqcWp1anlqfWqBaoVqiWqNapFqlWqZap1qoWqlaq1qsWv7/rVquWq9asFqxWrRatlq3Wrlaulq7WrxavVq/WsBaw1rEWsVaxlrHWshaylrLWs1azlrPWtBa0VrTWtVa11rZWtpa21rdWt5a31riWuRa5VrnWuha6lrsWu1a7lrvWvBa8lrzWvRa9Vr2Wvda+Fr5Wvpa+1r8Wv1a/lr/WgBbAVsCWwNbBFsFWwZbB1sIWwpbC1sMWw1bDlsPWxBbEVsSWxNbFFsVWxhbGVsaWxtbHFsdWx5bH1sgWyFbIlsjWyRbJVsmWydbKFspWypbK1ssWy1bLlsvWzBbMVszWzVbNls4WzlbOls7WzxbPVs+Wz9bQVtCW0NbRFtFW0ZbR1tIW0lbSltLW0xbTVtOW09bUltWW15bYFthW2dbaFtrW21bbltvW3JbdFt2W3dbeFt5W3tbfFt+W39bgluGW4pbjVuOW5BbkVuSW5RbllufW6dbqFupW6xbrVuuW69bsVuyW7dbulu7W7xbwFvBW8NbyFvJW8pby1vNW85bz1v+/9Fb1FvVW9Zb11vYW9lb2lvbW9xb4FviW+Nb5lvnW+lb6lvrW+xb7VvvW/Fb8lvzW/Rb9Vv2W/db/Vv+WwBcAlwDXAVcB1wIXAtcDFwNXA5cEFwSXBNcF1wZXBtcHlwfXCBcIVwjXCZcKFwpXCpcK1wtXC5cL1wwXDJcM1w1XDZcN1xDXERcRlxHXExcTVxSXFNcVFxWXFdcWFxaXFtcXFxdXF9cYlxkXGdcaFxpXGpca1xsXG1ccFxyXHNcdFx1XHZcd1x4XHtcfFx9XH5cgFyDXIRchVyGXIdciVyKXItcjlyPXJJck1yVXJ1cnlyfXKBcoVykXKVcplynXKhcqlyuXK9csFyyXLRctly5XLpcu1y8XL5cwFzCXMNcxVzGXMdcyFzJXMpczFzNXM5cz1zQXNFc01zUXNVc1lzXXNhc2lzbXNxc3VzeXN9c4FziXONc51zpXOtc7FzuXO9c8VzyXPNc9Fz1XPZc91z4XPlc+lz8XP1c/lz/XABd/v8BXQRdBV0IXQldCl0LXQxdDV0PXRBdEV0SXRNdFV0XXRhdGV0aXRxdHV0fXSBdIV0iXSNdJV0oXSpdK10sXS9dMF0xXTJdM101XTZdN104XTldOl07XTxdP11AXUFdQl1DXURdRV1GXUhdSV1NXU5dT11QXVFdUl1TXVRdVV1WXVddWV1aXVxdXl1fXWBdYV1iXWNdZF1lXWZdZ11oXWpdbV1uXXBdcV1yXXNddV12XXddeF15XXpde118XX1dfl1/XYBdgV2DXYRdhV2GXYddiF2JXYpdi12MXY1djl2PXZBdkV2SXZNdlF2VXZZdl12YXZpdm12cXZ5dn12gXaFdol2jXaRdpV2mXaddqF2pXapdq12sXa1drl2vXbBdsV2yXbNdtF21XbZduF25Xbpdu128Xb1dvl2/XcBdwV3CXcNdxF3GXcddyF3JXcpdy13MXc5dz13QXdFd0l3TXdRd1V3WXddd2F3ZXdpd3F3fXeBd413kXepd7F3tXf7/8F31XfZd+F35Xfpd+138Xf9dAF4EXgdeCV4KXgteDV4OXhJeE14XXh5eH14gXiFeIl4jXiReJV4oXileKl4rXixeL14wXjJeM140XjVeNl45XjpePl4/XkBeQV5DXkZeR15IXkleSl5LXk1eTl5PXlBeUV5SXlNeVl5XXlheWV5aXlxeXV5fXmBeY15kXmVeZl5nXmheaV5qXmtebF5tXm5eb15wXnFedV53Xnlefl6BXoJeg16FXoheiV6MXo1ejl6SXphem16dXqFeol6jXqReqF6pXqpeq16sXq5er16wXrFesl60Xrpeu168Xr1ev17AXsFewl7DXsRexV7GXsdeyF7LXsxezV7OXs9e0F7UXtVe117YXtle2l7cXt1e3l7fXuBe4V7iXuNe5F7lXuZe517pXute7F7tXu5e717wXvFe8l7zXvVe+F75Xvte/F79XgVfBl8HXwlfDF8NXw5fEF8SXxRfFl8ZXxpfHF8dXx5fIV8iXyNfJF/+/yhfK18sXy5fMF8yXzNfNF81XzZfN184XztfPV8+Xz9fQV9CX0NfRF9FX0ZfR19IX0lfSl9LX0xfTV9OX09fUV9UX1lfWl9bX1xfXl9fX2BfY19lX2dfaF9rX25fb19yX3RfdV92X3hfel99X35ff1+DX4ZfjV+OX49fkV+TX5Rfll+aX5tfnV+eX59foF+iX6NfpF+lX6Zfp1+pX6tfrF+vX7BfsV+yX7NftF+2X7hfuV+6X7tfvl+/X8BfwV/CX8dfyF/KX8tfzl/TX9Rf1V/aX9tf3F/eX99f4l/jX+Vf5l/oX+lf7F/vX/Bf8l/zX/Rf9l/3X/lf+l/8XwdgCGAJYAtgDGAQYBFgE2AXYBhgGmAeYB9gImAjYCRgLGAtYC5gMGAxYDJgM2A0YDZgN2A4YDlgOmA9YD5gQGBEYEVgRmBHYEhgSWBKYExgTmBPYFFgU2BUYFZgV2BYYFtgXGBeYF9gYGBhYGVgZmBuYHFgcmB0YHVgd2B+YIBg/v+BYIJghWCGYIdgiGCKYItgjmCPYJBgkWCTYJVgl2CYYJlgnGCeYKFgomCkYKVgp2CpYKpgrmCwYLNgtWC2YLdguWC6YL1gvmC/YMBgwWDCYMNgxGDHYMhgyWDMYM1gzmDPYNBg0mDTYNRg1mDXYNlg22DeYOFg4mDjYORg5WDqYPFg8mD1YPdg+GD7YPxg/WD+YP9gAmEDYQRhBWEHYQphC2EMYRBhEWESYRNhFGEWYRdhGGEZYRthHGEdYR5hIWEiYSVhKGEpYSphLGEtYS5hL2EwYTFhMmEzYTRhNWE2YTdhOGE5YTphO2E8YT1hPmFAYUFhQmFDYURhRWFGYUdhSWFLYU1hT2FQYVJhU2FUYVZhV2FYYVlhWmFbYVxhXmFfYWBhYWFjYWRhZWFmYWlhamFrYWxhbWFuYW9hcWFyYXNhdGF2YXhheWF6YXthfGF9YX5hf2GAYYFhgmGDYYRhhWGGYYdhiGGJYYphjGGNYY9hkGGRYZJhk2GVYf7/lmGXYZhhmWGaYZthnGGeYZ9hoGGhYaJho2GkYaVhpmGqYathrWGuYa9hsGGxYbJhs2G0YbVhtmG4YblhumG7YbxhvWG/YcBhwWHDYcRhxWHGYcdhyWHMYc1hzmHPYdBh02HVYdZh12HYYdlh2mHbYdxh3WHeYd9h4GHhYeJh42HkYeVh52HoYelh6mHrYexh7WHuYe9h8GHxYfJh82H0YfZh92H4Yflh+mH7Yfxh/WH+YQBiAWICYgNiBGIFYgdiCWITYhRiGWIcYh1iHmIgYiNiJmInYihiKWIrYi1iL2IwYjFiMmI1YjZiOGI5YjpiO2I8YkJiRGJFYkZiSmJPYlBiVWJWYldiWWJaYlxiXWJeYl9iYGJhYmJiZGJlYmhicWJyYnRidWJ3YnhiemJ7Yn1igWKCYoNihWKGYodiiGKLYoxijWKOYo9ikGKUYplinGKdYp5io2KmYqdiqWKqYq1irmKvYrBismKzYrRitmK3YrhiumK+YsBiwWL+/8Niy2LPYtFi1WLdYt5i4GLhYuRi6mLrYvBi8mL1Yvhi+WL6YvtiAGMDYwRjBWMGYwpjC2MMYw1jD2MQYxJjE2MUYxVjF2MYYxljHGMmYydjKWMsYy1jLmMwYzFjM2M0YzVjNmM3YzhjO2M8Yz5jP2NAY0FjRGNHY0hjSmNRY1JjU2NUY1ZjV2NYY1ljWmNbY1xjXWNgY2RjZWNmY2hjamNrY2xjb2NwY3Jjc2N0Y3VjeGN5Y3xjfWN+Y39jgWODY4RjhWOGY4tjjWORY5NjlGOVY5djmWOaY5tjnGOdY55jn2OhY6RjpmOrY69jsWOyY7VjtmO5Y7tjvWO/Y8BjwWPCY8NjxWPHY8hjymPLY8xj0WPTY9Rj1WPXY9hj2WPaY9tj3GPdY99j4mPkY+Vj5mPnY+hj62PsY+5j72PwY/Fj82P1Y/dj+WP6Y/tj/GP+YwNkBGQGZAdkCGQJZApkDWQOZBFkEmQVZBZkF2QYZBlkGmQdZB9kImQjZCRk/v8lZCdkKGQpZCtkLmQvZDBkMWQyZDNkNWQ2ZDdkOGQ5ZDtkPGQ+ZEBkQmRDZElkS2RMZE1kTmRPZFBkUWRTZFVkVmRXZFlkWmRbZFxkXWRfZGBkYWRiZGNkZGRlZGZkaGRqZGtkbGRuZG9kcGRxZHJkc2R0ZHVkdmR3ZHtkfGR9ZH5kf2SAZIFkg2SGZIhkiWSKZItkjGSNZI5kj2SQZJNklGSXZJhkmmSbZJxknWSfZKBkoWSiZKNkpWSmZKdkqGSqZKtkr2SxZLJks2S0ZLZkuWS7ZL1kvmS/ZMFkw2TEZMZkx2TIZMlkymTLZMxkz2TRZNNk1GTVZNZk2WTaZNtk3GTdZN9k4GThZONk5WTnZOhk6WTqZOtk7GTtZO5k72TwZPFk8mTzZPRk9WT2ZPdk+GT5ZPpk+2T8ZP1k/mT/ZAFlAmUDZQRlBWUGZQdlCGUKZQtlDGUNZQ5lD2UQZRFlE2UUZRVlFmUXZRllGmUbZRxlHWUeZR9lIGUhZf7/ImUjZSRlJmUnZShlKWUqZSxlLWUwZTFlMmUzZTdlOmU8ZT1lQGVBZUJlQ2VEZUZlR2VKZUtlTWVOZVBlUmVTZVRlV2VYZVplXGVfZWBlYWVkZWVlZ2VoZWllamVtZW5lb2VxZXNldWV2ZXhleWV6ZXtlfGV9ZX5lf2WAZYFlgmWDZYRlhWWGZYhliWWKZY1ljmWPZZJllGWVZZZlmGWaZZ1lnmWgZaJlo2WmZahlqmWsZa5lsWWyZbNltGW1ZbZlt2W4Zbplu2W+Zb9lwGXCZcdlyGXJZcplzWXQZdFl02XUZdVl2GXZZdpl22XcZd1l3mXfZeFl42XkZepl62XyZfNl9GX1Zfhl+WX7Zfxl/WX+Zf9lAWYEZgVmB2YIZglmC2YNZhBmEWYSZhZmF2YYZhpmG2YcZh5mIWYiZiNmJGYmZilmKmYrZixmLmYwZjJmM2Y3ZjhmOWY6ZjtmPWY/ZkBmQmZEZkVmRmZHZkhmSWZKZk1mTmZQZlFmWGb+/1lmW2ZcZl1mXmZgZmJmY2ZlZmdmaWZqZmtmbGZtZnFmcmZzZnVmeGZ5ZntmfGZ9Zn9mgGaBZoNmhWaGZohmiWaKZotmjWaOZo9mkGaSZpNmlGaVZphmmWaaZptmnGaeZp9moGahZqJmo2akZqVmpmapZqpmq2asZq1mr2awZrFmsmazZrVmtma3Zrhmuma7ZrxmvWa/ZsBmwWbCZsNmxGbFZsZmx2bIZslmymbLZsxmzWbOZs9m0GbRZtJm02bUZtVm1mbXZthm2mbeZt9m4GbhZuJm42bkZuVm52boZupm62bsZu1m7mbvZvFm9Wb2Zvhm+mb7Zv1mAWcCZwNnBGcFZwZnB2cMZw5nD2cRZxJnE2cWZxhnGWcaZxxnHmcgZyFnImcjZyRnJWcnZylnLmcwZzJnM2c2ZzdnOGc5ZztnPGc+Zz9nQWdEZ0VnR2dKZ0tnTWdSZ1RnVWdXZ1hnWWdaZ1tnXWdiZ2NnZGdmZ2dna2dsZ25ncWd0Z3Zn/v94Z3lnemd7Z31ngGeCZ4NnhWeGZ4hnimeMZ41njmePZ5FnkmeTZ5RnlmeZZ5tnn2egZ6FnpGemZ6lnrGeuZ7Fnsme0Z7lnume7Z7xnvWe+Z79nwGfCZ8VnxmfHZ8hnyWfKZ8tnzGfNZ85n1WfWZ9dn22ffZ+Fn42fkZ+Zn52foZ+pn62ftZ+5n8mf1Z/Zn92f4Z/ln+mf7Z/xn/mcBaAJoA2gEaAZoDWgQaBJoFGgVaBhoGWgaaBtoHGgeaB9oIGgiaCNoJGglaCZoJ2goaCtoLGgtaC5oL2gwaDFoNGg1aDZoOmg7aD9oR2hLaE1oT2hSaFZoV2hYaFloWmhbaFxoXWheaF9oamhsaG1obmhvaHBocWhyaHNodWh4aHloemh7aHxofWh+aH9ogGiCaIRoh2iIaIloimiLaIxojWiOaJBokWiSaJRolWiWaJhomWiaaJtonGidaJ5on2igaKFoo2ikaKVoqWiqaKtorGiuaLFosmi0aLZot2i4aP7/uWi6aLtovGi9aL5ov2jBaMNoxGjFaMZox2jIaMpozGjOaM9o0GjRaNNo1GjWaNdo2WjbaNxo3WjeaN9o4WjiaORo5WjmaOdo6GjpaOpo62jsaO1o72jyaPNo9Gj2aPdo+Gj7aP1o/mj/aABpAmkDaQRpBmkHaQhpCWkKaQxpD2kRaRNpFGkVaRZpF2kYaRlpGmkbaRxpHWkeaSFpImkjaSVpJmknaShpKWkqaStpLGkuaS9pMWkyaTNpNWk2aTdpOGk6aTtpPGk+aUBpQWlDaURpRWlGaUdpSGlJaUppS2lMaU1pTmlPaVBpUWlSaVNpVWlWaVhpWWlbaVxpX2lhaWJpZGllaWdpaGlpaWppbGltaW9pcGlyaXNpdGl1aXZpeml7aX1pfml/aYFpg2mFaYppi2mMaY5pj2mQaZFpkmmTaZZpl2mZaZppnWmeaZ9poGmhaaJpo2mkaaVppmmpaapprGmuaa9psGmyabNptWm2abhpuWm6abxpvWn+/75pv2nAacJpw2nEacVpxmnHachpyWnLac1pz2nRadJp02nVadZp12nYadlp2mncad1p3mnhaeJp42nkaeVp5mnnaehp6Wnqaetp7Gnuae9p8GnxafNp9Gn1afZp92n4aflp+mn7afxp/mkAagFqAmoDagRqBWoGagdqCGoJagtqDGoNag5qD2oQahFqEmoTahRqFWoWahlqGmobahxqHWoeaiBqImojaiRqJWomaidqKWoraixqLWouajBqMmozajRqNmo3ajhqOWo6ajtqPGo/akBqQWpCakNqRWpGakhqSWpKaktqTGpNak5qT2pRalJqU2pUalVqVmpXalpqXGpdal5qX2pgamJqY2pkamZqZ2poamlqampramxqbWpuam9qcGpyanNqdGp1anZqd2p4anpqe2p9an5qf2qBaoJqg2qFaoZqh2qIaolqimqLaoxqjWqPapJqk2qUapVqlmqYaplqmmqbapxqnWqeap9qoWqiaqNqpGqlaqZq/v+naqhqqmqtaq5qr2qwarFqsmqzarRqtWq2ardquGq5arpqu2q8ar1qvmq/asBqwWrCasNqxGrFasZqx2rIaslqymrLasxqzWrOas9q0GrRatJq02rUatVq1mrXathq2Wraattq3Grdat5q32rgauFq4mrjauRq5Wrmaudq6Grpaupq62rsau1q7mrvavBq8WryavNq9Gr1avZq92r4avlq+mr7avxq/Wr+av9qAGsBawJrA2sEawVrBmsHawhrCWsKawtrDGsNaw5rD2sQaxFrEmsTaxRrFWsWaxdrGGsZaxprG2scax1rHmsfayVrJmsoaylrKmsrayxrLWsuay9rMGsxazNrNGs1azZrOGs7azxrPWs/a0BrQWtCa0RrRWtIa0prS2tNa05rT2tQa1FrUmtTa1RrVWtWa1drWGtaa1trXGtda15rX2tga2FraGtpa2trbGtta25rb2twa3Frcmtza3RrdWt2a3dreGt6a31rfmt/a4BrhWuIa/7/jGuOa49rkGuRa5RrlWuXa5hrmWuca51rnmufa6Bromuja6RrpWuma6drqGupa6trrGuta65rr2uwa7Frsmu2a7hruWu6a7trvGu9a75rwGvDa8RrxmvHa8hryWvKa8xrzmvQa9Fr2Gvaa9xr3Wvea99r4Gvia+Nr5Gvla+Zr52voa+lr7Gvta+5r8Gvxa/Jr9Gv2a/dr+Gv6a/tr/Gv+a/9rAGwBbAJsA2wEbAhsCWwKbAtsDGwObBJsF2wcbB1sHmwgbCNsJWwrbCxsLWwxbDNsNmw3bDlsOmw7bDxsPmw/bENsRGxFbEhsS2xMbE1sTmxPbFFsUmxTbFZsWGxZbFpsYmxjbGVsZmxnbGtsbGxtbG5sb2xxbHNsdWx3bHhsemx7bHxsf2yAbIRsh2yKbItsjWyObJFskmyVbJZsl2yYbJpsnGydbJ5soGyibKhsrGyvbLBstGy1bLZst2y6bMBswWzCbMNsxmzHbMhsy2zNbM5sz2zRbNJs2Gz+/9ls2mzcbN1s32zkbOZs52zpbOxs7WzybPRs+Wz/bABtAm0DbQVtBm0IbQltCm0NbQ9tEG0RbRNtFG0VbRZtGG0cbR1tH20gbSFtIm0jbSRtJm0obSltLG0tbS9tMG00bTZtN204bTptP21AbUJtRG1JbUxtUG1VbVZtV21YbVttXW1fbWFtYm1kbWVtZ21obWttbG1tbXBtcW1ybXNtdW12bXltem17bX1tfm1/bYBtgW2DbYRthm2HbYpti22NbY9tkG2SbZZtl22YbZltmm2cbaJtpW2sba1tsG2xbbNttG22bbdtuW26bbttvG29bb5twW3CbcNtyG3JbcptzW3Obc9t0G3SbdNt1G3Vbddt2m3bbdxt323ibeNt5W3nbeht6W3qbe1t723wbfJt9G31bfZt+G36bf1t/m3/bQBuAW4CbgNuBG4GbgduCG4JbgtuD24SbhNuFW4YbhluG24cbh5uH24ibiZuJ24obipuLG4ubjBuMW4zbjVu/v82bjduOW47bjxuPW4+bj9uQG5BbkJuRW5GbkduSG5JbkpuS25Mbk9uUG5RblJuVW5XblluWm5cbl1uXm5gbmFuYm5jbmRuZW5mbmduaG5pbmpubG5tbm9ucG5xbnJuc250bnVudm53bnhueW56bntufG59boBugW6CboRuh26Ibopui26Mbo1ujm6RbpJuk26UbpVulm6Xbplumm6bbp1unm6gbqFuo26kbqZuqG6pbqturG6tbq5usG6zbrVuuG65brxuvm6/bsBuw27EbsVuxm7Ibsluym7Mbs1uzm7QbtJu1m7Ybtlu227cbt1u427nbupu627sbu1u7m7vbvBu8W7ybvNu9W72bvdu+G76bvtu/G79bv5u/24AbwFvA28EbwVvB28IbwpvC28Mbw1vDm8QbxFvEm8WbxdvGG8ZbxpvG28cbx1vHm8fbyFvIm8jbyVvJm8nbyhvLG8ubzBvMm80bzVvN284bzlvOm87bzxvPW8/b0BvQW9Cb/7/Q29Eb0VvSG9Jb0pvTG9Ob09vUG9Rb1JvU29Ub1VvVm9Xb1lvWm9bb11vX29gb2FvY29kb2VvZ29ob2lvam9rb2xvb29wb3Fvc291b3Zvd295b3tvfW9+b39vgG+Bb4Jvg2+Fb4Zvh2+Kb4tvj2+Qb5Fvkm+Tb5RvlW+Wb5dvmG+Zb5pvm2+db55vn2+gb6Jvo2+kb6Vvpm+ob6lvqm+rb6xvrW+ub69vsG+xb7JvtG+1b7dvuG+6b7tvvG+9b75vv2/Bb8NvxG/Fb8Zvx2/Ib8pvy2/Mb81vzm/Pb9Bv02/Ub9Vv1m/Xb9hv2W/ab9tv3G/db99v4m/jb+Rv5W/mb+dv6G/pb+pv62/sb+1v8G/xb/Jv82/0b/Vv9m/3b/hv+W/6b/tv/G/9b/5v/28AcAFwAnADcARwBXAGcAdwCHAJcApwC3AMcA1wDnAPcBBwEnATcBRwFXAWcBdwGHAZcBxwHXAecB9wIHAhcCJwJHAlcCZwJ3AocClwKnD+/ytwLHAtcC5wL3AwcDFwMnAzcDRwNnA3cDhwOnA7cDxwPXA+cD9wQHBBcEJwQ3BEcEVwRnBHcEhwSXBKcEtwTXBOcFBwUXBScFNwVHBVcFZwV3BYcFlwWnBbcFxwXXBfcGBwYXBicGNwZHBlcGZwZ3BocGlwanBucHFwcnBzcHRwd3B5cHpwe3B9cIFwgnCDcIRwhnCHcIhwi3CMcI1wj3CQcJFwk3CXcJhwmnCbcJ5wn3CgcKFwonCjcKRwpXCmcKdwqHCpcKpwsHCycLRwtXC2cLpwvnC/cMRwxXDGcMdwyXDLcMxwzXDOcM9w0HDRcNJw03DUcNVw1nDXcNpw3HDdcN5w4HDhcOJw43DlcOpw7nDwcPFw8nDzcPRw9XD2cPhw+nD7cPxw/nD/cABxAXECcQNxBHEFcQZxB3EIcQtxDHENcQ5xD3ERcRJxFHEXcRtxHHEdcR5xH3EgcSFxInEjcSRxJXEncShxKXEqcStxLHEtcS5xMnEzcTRx/v81cTdxOHE5cTpxO3E8cT1xPnE/cUBxQXFCcUNxRHFGcUdxSHFJcUtxTXFPcVBxUXFScVNxVHFVcVZxV3FYcVlxWnFbcV1xX3FgcWFxYnFjcWVxaXFqcWtxbHFtcW9xcHFxcXRxdXF2cXdxeXF7cXxxfnF/cYBxgXGCcYNxhXGGcYdxiHGJcYtxjHGNcY5xkHGRcZJxk3GVcZZxl3GacZtxnHGdcZ5xoXGicaNxpHGlcaZxp3Gpcapxq3Gtca5xr3GwcbFxsnG0cbZxt3G4cbpxu3G8cb1xvnG/ccBxwXHCccRxxXHGccdxyHHJccpxy3HMcc1xz3HQcdFx0nHTcdZx13HYcdlx2nHbcdxx3XHecd9x4XHiceNx5HHmcehx6XHqcetx7HHtce9x8HHxcfJx83H0cfVx9nH3cfhx+nH7cfxx/XH+cf9xAHIBcgJyA3IEcgVyB3IIcglyCnILcgxyDXIOcg9yEHIRchJyE3IUchVyFnIXchhyGXIacv7/G3Icch5yH3IgciFyInIjciRyJXImcidyKXIrci1yLnIvcjJyM3I0cjpyPHI+ckByQXJCckNyRHJFckZySXJKcktyTnJPclByUXJTclRyVXJXclhyWnJccl5yYHJjcmRyZXJocmpya3Jscm1ycHJxcnNydHJ2cndyeHJ7cnxyfXKCcoNyhXKGcodyiHKJcoxyjnKQcpFyk3KUcpVylnKXcphymXKacptynHKdcp5yoHKhcqJyo3KkcqVypnKncqhyqXKqcqtyrnKxcrJys3K1crpyu3K8cr1yvnK/csByxXLGcsdyyXLKcstyzHLPctFy03LUctVy1nLYctpy23K3AP7//v/+//7//v8UIHAhcSFyIXMhdCF1IXYhdyF4IXkhNf42/jn+Ov4//kD+Pf4+/kH+Qv5D/kT+/v/+/zv+PP43/jj+Mf7+/zP+NP7KAssC2QITIBUgJSA1IAUhCSGWIZchmCGZIRUiHyIjIlIiZiJnIr8iUCVRJVIlUyVUJVUlViVXJVglWSVaJVslXCVdJV4lXyVgJWElYiVjJWQlZSVmJWclaCVpJWolayVsJW0lbiVvJXAlcSVyJXMlgSWCJYMlhCWFJYYlhyX+/4gliSWKJYsljCWNJY4ljyWTJZQllSW8Jb0l4iXjJeQl5SUJJpUiEjAdMB4w/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9RAv7/RAFIAf7/YQIhMCIwIzAkMCUwJjAnMCgwKTCjMo4zjzOcM50znjOhM8QzzjPRM9Iz1TMw/uL/5P/+/yEhMTL+/xAg/v/+//7//DCbMJww/TD+MAYwnTCeMEn+Sv5L/kz+Tf5O/k/+UP5R/lL+VP5V/lb+V/5Z/lr+W/5c/l3+Xv5f/mD+Yf7+/2L+Y/5k/mX+Zv5o/mn+av5r/v7//v/+//7//v/+//7//v/+//7//v/+//7/BzDcct1y33LicuNy5HLlcuZy53Lqcuty9XL2cvly/XL+cv9yAHMCcwRzBXMGcwdzCHMJcwtzDHMNcw9zEHMRcxJzFHMYcxlzGnMfcyBzI3MkcyZzJ3Mocy1zL3MwczJzM3M1czZzOnM7czxzPXNAc0FzQnNDc0RzRXNGc0dzSHP+/0lzSnNLc0xzTnNPc1FzU3NUc1VzVnNYc1lzWnNbc1xzXXNec19zYXNic2NzZHNlc2ZzZ3Noc2lzanNrc25zcHNxc3Jzc3N0c3VzdnN3c3hzeXN6c3tzfHN9c39zgHOBc4Jzg3OFc4ZziHOKc4xzjXOPc5BzknOTc5RzlXOXc5hzmXOac5xznXOec6BzoXOjc6RzpXOmc6dzqHOqc6xzrXOxc7RztXO2c7hzuXO8c71zvnO/c8Fzw3PEc8VzxnPHc/7/y3PMc85z0nPTc9Rz1XPWc9dz2HPac9tz3HPdc99z4XPic+Nz5HPmc+hz6nPrc+xz7nPvc/Bz8XPzc/Rz9XP2c/dz+HP5c/pz+3P8c/1z/nP/cwB0AXQCdAR0B3QIdAt0DHQNdA50EXQSdBN0FHQVdBZ0F3QYdBl0HHQddB50H3QgdCF0I3QkdCd0KXQrdC10L3QxdDJ0N3Q4dDl0OnQ7dD10PnQ/dEB0QnRDdER0RXRGdEd0SHRJdEp0S3RMdE10/v9OdE90UHRRdFJ0U3RUdFZ0WHRddGB0YXRidGN0ZHRldGZ0Z3RodGl0anRrdGx0bnRvdHF0cnRzdHR0dXR4dHl0enR7dHx0fXR/dIJ0hHSFdIZ0iHSJdIp0jHSNdI90kXSSdJN0lHSVdJZ0l3SYdJl0mnSbdJ10n3SgdKF0onSjdKR0pXSmdKp0q3SsdK10rnSvdLB0sXSydLN0tHS1dLZ0t3S4dLl0u3S8dL10vnS/dMB0wXTCdMN0xHTFdMZ0x3T+/8h0yXTKdMt0zHTNdM50z3TQdNF003TUdNV01nTXdNh02XTadNt03XTfdOF05XTndOh06XTqdOt07HTtdPB08XTydPN09XT4dPl0+nT7dPx0/XT+dAB1AXUCdQN1BXUGdQd1CHUJdQp1C3UMdQ51EHUSdRR1FXUWdRd1G3UddR51IHUhdSJ1I3UkdSZ1J3UqdS51NHU2dTl1PHU9dT91QXVCdUN1RHVGdUd1SXVKdU11UHVRdVJ1U3VVdVZ1V3VYdf7/XXVedV91YHVhdWJ1Y3VkdWd1aHVpdWt1bHVtdW51b3VwdXF1c3V1dXZ1d3V6dXt1fHV9dX51gHWBdYJ1hHWFdYd1iHWJdYp1jHWNdY51kHWTdZV1mHWbdZx1nnWidaZ1p3Wodal1qnWtdbZ1t3W6dbt1v3XAdcF1xnXLdcx1znXPddB10XXTddd12XXaddx13XXfdeB14XXldel17HXtde5173XydfN19XX2dfd1+HX6dft1/XX+dQJ2BHYGdgd2/v8Idgl2C3YNdg52D3YRdhJ2E3YUdhZ2GnYcdh12HnYhdiN2J3Yodix2LnYvdjF2MnY2djd2OXY6djt2PXZBdkJ2RHZFdkZ2R3ZIdkl2SnZLdk52T3ZQdlF2UnZTdlV2V3ZYdll2WnZbdl12X3ZgdmF2YnZkdmV2ZnZndmh2aXZqdmx2bXZudnB2cXZydnN2dHZ1dnZ2d3Z5dnp2fHZ/doB2gXaDdoV2iXaKdox2jXaPdpB2knaUdpV2l3aYdpp2m3b+/5x2nXaedp92oHahdqJ2o3aldqZ2p3aodql2qnardqx2rXavdrB2s3a1drZ2t3a4drl2una7drx2vXa+dsB2wXbDdsR2x3bJdst2zHbTdtV22Xbadtx23XbeduB24XbiduN25Hbmdud26Hbpdup263bsdu128HbzdvV29nb3dvp2+3b9dv92AHcCdwN3BXcGdwp3DHcOdw93EHcRdxJ3E3cUdxV3FncXdxh3G3ccdx13HnchdyN3JHcldyd3Kncrd/7/LHcudzB3MXcydzN3NHc5dzt3PXc+dz93QndEd0V3RndId0l3SndLd0x3TXdOd093UndTd1R3VXdWd1d3WHdZd1x3XXded193YHdkd2d3aXdqd213bndvd3B3cXdyd3N3dHd1d3Z3d3d4d3p3e3d8d4F3gneDd4Z3h3eId4l3ineLd493kHeTd5R3lXeWd5d3mHeZd5p3m3ecd513nnehd6N3pHemd6h3q3etd653r3exd7J3tHe2d7d3uHe5d7p3/v+8d753wHfBd8J3w3fEd8V3xnfHd8h3yXfKd8t3zHfOd8930HfRd9J303fUd9V31nfYd9l32nfdd95333fgd+F35Hfmd+h36nfvd/B38Xfyd/R39Xf3d/l3+nf7d/x3A3gEeAV4BngHeAh4CngLeA54D3gQeBN4FXgZeBt4HnggeCF4IngkeCh4KngreC54L3gxeDJ4M3g1eDZ4PXg/eEF4QnhDeER4RnhIeEl4SnhLeE14T3hReFN4VHhYeFl4Wnj+/1t4XHheeF94YHhheGJ4Y3hkeGV4ZnhneGh4aXhveHB4cXhyeHN4dHh1eHZ4eHh5eHp4e3h9eH54f3iAeIF4gniDeIR4hXiGeIh4iniLeI94kHiSeJR4lXiWeJl4nXieeKB4onikeKZ4qHipeKp4q3iseK14rniveLV4tni3eLh4uni7eLx4vXi/eMB4wnjDeMR4xnjHeMh4zHjNeM54z3jReNJ403jWeNd42HjaeNt43HjdeN5433jgeOF44njjeP7/5HjleOZ453jpeOp463jteO5473jwePF483j1ePZ4+Hj5ePt4/Hj9eP54/3gAeQJ5A3kEeQZ5B3kIeQl5CnkLeQx5DXkOeQ95EHkReRJ5FHkVeRZ5F3kYeRl5GnkbeRx5HXkfeSB5IXkieSN5JXkmeSd5KHkpeSp5K3kseS15LnkveTB5MXkyeTN5NXk2eTd5OHk5eT15P3lCeUN5RHlFeUd5SnlLeUx5TXlOeU95UHlReVJ5VHlVeVh5WXlheWN5/v9keWZ5aXlqeWt5bHlueXB5cXlyeXN5dHl1eXZ5eXl7eXx5fXl+eX95gnmDeYZ5h3mIeYl5i3mMeY15jnmQeZF5knmTeZR5lXmWeZd5mHmZeZt5nHmdeZ55n3mgeaF5onmjeaR5pXmmeah5qXmqeat5rHmtea55r3mwebF5snm0ebV5tnm3ebh5vHm/ecJ5xHnFecd5yHnKecx5znnPedB503nUedZ513nZedp523nced153nngeeF54nnleeh56nn+/+x57nnxefJ583n0efV59nn3efl5+nn8ef55/3kBegR6BXoHegh6CXoKegx6D3oQehF6EnoTehV6FnoYehl6G3oceh16H3oheiJ6JHoleiZ6J3ooeil6Knoreix6LXouei96MHoxejJ6NHo1ejZ6OHo6ej56QHpBekJ6Q3pEekV6R3pIekl6SnpLekx6TXpOek96UHpSelN6VHpVelZ6WHpZelp6W3pcel16XnpfemB6YXpiemN6ZHplemZ6Z3poev7/aXpqemt6bHptem56b3pxenJ6c3p1ent6fHp9en56gnqFeod6iXqKeot6jHqOeo96kHqTepR6mXqaept6nnqheqJ6o3qkeqd6qXqqeqt6rnqverB6sXqyerR6tXq2erd6uHq5erp6u3q8er16vnrAesF6wnrDesR6xXrGesd6yHrJesp6zHrNes56z3rQetF60nrTetR61XrXeth62nrbetx63XrheuJ65Hrneuh66Xrqeut67HruevB68XryevN6/v/0evV69nr3evh6+3r8ev56AHsBewJ7BXsHewl7DHsNew57EHsSexN7FnsXexh7Gnscex17H3sheyJ7I3sneyl7LXsvezB7Mns0ezV7Nns3ezl7O3s9ez97QHtBe0J7Q3tEe0Z7SHtKe017TntTe1V7V3tZe1x7Xntfe2F7Y3tke2V7Zntne2h7aXtqe2t7bHtte297cHtze3R7dnt4e3p7fHt9e397gXuCe4N7hHuGe4d7iHuJe4p7i3uMe457j3v+/5F7knuTe5Z7mHuZe5p7m3uee597oHuje6R7pXuue697sHuye7N7tXu2e7d7uXu6e7t7vHu9e757v3vAe8J7w3vEe8V7yHvJe8p7y3vNe857z3vQe9J71HvVe9Z713vYe9t73Hvee9974Hvie+N75Hvne+h76Xvre+x77Xvve/B78nvze/R79Xv2e/h7+Xv6e/t7/Xv/ewB8AXwCfAN8BHwFfAZ8CHwJfAp8DXwOfBB8EXwSfBN8FHwVfBd8GHwZfP7/GnwbfBx8HXwefCB8IXwifCN8JHwlfCh8KXwrfCx8LXwufC98MHwxfDJ8M3w0fDV8Nnw3fDl8Onw7fDx8PXw+fEJ8Q3xEfEV8RnxHfEh8SXxKfEt8THxOfE98UHxRfFJ8U3xUfFV8VnxXfFh8WXxafFt8XHxdfF58X3xgfGF8YnxjfGR8ZXxmfGd8aHxpfGp8a3xsfG18bnxvfHB8cXxyfHV8dnx3fHh8eXx6fH58f3yAfIF8gnyDfIR8hXyGfId8/v+IfIp8i3yMfI18jnyPfJB8k3yUfJZ8mXyafJt8oHyhfKN8pnynfKh8qXyrfKx8rXyvfLB8tHy1fLZ8t3y4fLp8u3y/fMB8wnzDfMR8xnzJfMt8znzPfNB80XzSfNN81HzYfNp823zdfN584XzifON85HzlfOZ853zpfOp863zsfO187nzwfPF88nzzfPR89Xz2fPd8+Xz6fPx8/Xz+fP98AH0BfQJ9A30EfQV9Bn0HfQh9CX0LfQx9DX0OfQ99EH3+/xF9En0TfRR9FX0WfRd9GH0ZfRp9G30cfR19Hn0ffSF9I30kfSV9Jn0ofSl9Kn0sfS19Ln0wfTF9Mn0zfTR9NX02fTd9OH05fTp9O308fT19Pn0/fUB9QX1CfUN9RH1FfUZ9R31IfUl9Sn1LfUx9TX1OfU99UH1RfVJ9U31UfVV9Vn1XfVh9WX1afVt9XH1dfV59X31gfWF9Yn1jfWR9ZX1mfWd9aH1pfWp9a31sfW19b31wfXF9cn1zfXR9dX12ff7/eH15fXp9e318fX19fn1/fYB9gX2CfYN9hH2FfYZ9h32IfYl9in2LfYx9jX2OfY99kH2RfZJ9k32UfZV9ln2XfZh9mX2afZt9nH2dfZ59n32gfaF9on2jfaR9pX2nfah9qX2qfat9rH2tfa99sH2xfbJ9s320fbV9tn23fbh9uX26fbt9vH29fb59v33AfcF9wn3DfcR9xX3Gfcd9yH3Jfcp9y33Mfc19zn3PfdB90X3SfdN91H3VfdZ9133Yfdl9/v/afdt93H3dfd59333gfeF94n3jfeR95X3mfed96H3pfep9633sfe197n3vffB98X3yffN99H31ffZ99334ffl9+n37ffx9/X3+ff99AH4BfgJ+A34EfgV+Bn4Hfgh+CX4Kfgt+DH4Nfg5+D34QfhF+En4TfhR+FX4Wfhd+GH4Zfhp+G34cfh1+Hn4ffiB+IX4ifiN+JH4lfiZ+J34ofil+Kn4rfix+LX4ufi9+MH4xfjJ+M340fjV+Nn43fjh+OX7+/zp+PH49fj5+P35AfkJ+Q35EfkV+Rn5Ifkl+Sn5Lfkx+TX5Ofk9+UH5RflJ+U35UflV+Vn5Xflh+WX5aflt+XH5dfl5+X35gfmF+Yn5jfmR+ZX5mfmd+aH5pfmp+a35sfm1+bn5vfnB+cX5yfnN+dH51fnZ+d354fnl+en57fnx+fX5+fn9+gH6BfoN+hH6FfoZ+h36Ifol+in6Lfox+jX6Ofo9+kH6RfpJ+k36UfpV+ln6Xfph+mX6afpx+nX6efv7/rn60frt+vH7WfuR+7H75fgp/EH8efzd/OX87fzx/PX8+fz9/QH9Bf0N/Rn9Hf0h/SX9Kf0t/TH9Nf05/T39Sf1N/Vn9Zf1t/XH9df15/YH9jf2R/ZX9mf2d/a39sf21/b39wf3N/dX92f3d/eH96f3t/fH99f39/gH+Cf4N/hH+Ff4Z/h3+If4l/i3+Nf49/kH+Rf5J/k3+Vf5Z/l3+Yf5l/m3+cf6B/on+jf6V/pn+of6l/qn+rf6x/rX+uf7F//v+zf7R/tX+2f7d/un+7f75/wH/Cf8N/xH/Gf8d/yH/Jf8t/zX/Pf9B/0X/Sf9N/1n/Xf9l/2n/bf9x/3X/ef+J/43/kf+d/6H/qf+t/7H/tf+9/8n/0f/V/9n/3f/h/+X/6f/1//n//fwKAB4AIgAmACoAOgA+AEYATgBqAG4AdgB6AH4AhgCOAJIArgCyALYAugC+AMIAygDSAOYA6gDyAPoBAgEGARIBFgEeASIBJgE6AT4BQgFGAU4BVgFaAV4D+/1mAW4BcgF2AXoBfgGCAYYBigGOAZIBlgGaAZ4BogGuAbIBtgG6Ab4BwgHKAc4B0gHWAdoB3gHiAeYB6gHuAfIB9gH6AgYCCgIWAiICKgI2AjoCPgJCAkYCSgJSAlYCXgJmAnoCjgKaAp4CogKyAsICzgLWAtoC4gLmAu4DFgMeAyIDJgMqAy4DPgNCA0YDSgNOA1IDVgNiA34DggOKA44DmgO6A9YD3gPmA+4D+gP+AAIEBgQOBBIEFgQeBCIELgf7/DIEVgReBGYEbgRyBHYEfgSCBIYEigSOBJIElgSaBJ4EogSmBKoErgS2BLoEwgTOBNIE1gTeBOYE6gTuBPIE9gT+BQIFBgUKBQ4FEgUWBR4FJgU2BToFPgVKBVoFXgViBW4FcgV2BXoFfgWGBYoFjgWSBZoFogWqBa4FsgW+BcoFzgXWBdoF3gXiBgYGDgYSBhYGGgYeBiYGLgYyBjYGOgZCBkoGTgZSBlYGWgZeBmYGagZ6Bn4GggaGBooGkgaWB/v+ngamBq4Gsga2BroGvgbCBsYGygbSBtYG2gbeBuIG5gbyBvYG+gb+BxIHFgceByIHJgcuBzYHOgc+B0IHRgdKB04HUgdWB1oHXgdiB2YHagduB3IHdgd6B34HggeGB4oHkgeWB5oHogemB64Huge+B8IHxgfKB9YH2gfeB+IH5gfqB/YH/gQOCB4IIggmCCoILgg6CD4IRghOCFYIWgheCGIIZghqCHYIggiSCJYImgieCKYIugjKCOoI8gj2CP4L+/0CCQYJCgkOCRYJGgkiCSoJMgk2CToJQglGCUoJTglSCVYJWgleCWYJbglyCXYJegmCCYYJigmOCZIJlgmaCZ4JpgmqCa4Jsgm2CcYJ1gnaCd4J4gnuCfIKAgoGCg4KFgoaCh4KJgoyCkIKTgpSClYKWgpqCm4KegqCCooKjgqeCsoK1graCuoK7gryCv4LAgsKCw4LFgsaCyYLQgtaC2YLagt2C4oLnguiC6YLqguyC7YLugvCC8oLzgvWC9oL4gv7/+oL8gv2C/oL/ggCDCoMLgw2DEIMSgxODFoMYgxmDHYMegx+DIIMhgyKDI4MkgyWDJoMpgyqDLoMwgzKDN4M7gz2DPoM/g0GDQoNEg0WDSINKg0uDTINNg06DU4NVg1aDV4NYg1mDXYNig3CDcYNyg3ODdIN1g3aDeYN6g36Df4OAg4GDgoODg4SDh4OIg4qDi4OMg42Dj4OQg5GDlIOVg5aDl4OZg5qDnYOfg6GDooOjg6SDpYOmg6eDrIOtg66D/v+vg7WDu4O+g7+DwoPDg8SDxoPIg8mDy4PNg86D0IPRg9KD04PVg9eD2YPag9uD3oPig+OD5IPmg+eD6IPrg+yD7YPug++D84P0g/WD9oP3g/qD+4P8g/6D/4MAhAKEBYQHhAiECYQKhBCEEoQThBSEFYQWhBeEGYQahBuEHoQfhCCEIYQihCOEKYQqhCuELIQthC6EL4QwhDKEM4Q0hDWENoQ3hDmEOoQ7hD6EP4RAhEGEQoRDhESERYRHhEiESYT+/0qES4RMhE2EToRPhFCEUoRThFSEVYRWhFiEXYRehF+EYIRihGSEZYRmhGeEaIRqhG6Eb4RwhHKEdIR3hHmEe4R8hH2EfoR/hICEgYSDhISEhYSGhIqEjYSPhJCEkYSShJOElISVhJaEmISahJuEnYSehJ+EoISihKOEpISlhKaEp4SohKmEqoSrhKyErYSuhLCEsYSzhLWEtoS3hLuEvIS+hMCEwoTDhMWExoTHhMiEy4TMhM6Ez4TShNSE1YTXhP7/2ITZhNqE24TchN6E4YTihOSE54TohOmE6oTrhO2E7oTvhPGE8oTzhPSE9YT2hPeE+IT5hPqE+4T9hP6EAIUBhQKFA4UEhQWFBoUHhQiFCYUKhQuFDYUOhQ+FEIUShRSFFYUWhRiFGYUbhRyFHYUehSCFIoUjhSSFJYUmhSeFKIUphSqFLYUuhS+FMIUxhTKFM4U0hTWFNoU+hT+FQIVBhUKFRIVFhUaFR4VLhUyFTYVOhU+FUIVRhVKFU4VUhVWF/v9XhViFWoVbhVyFXYVfhWCFYYVihWOFZYVmhWeFaYVqhWuFbIVthW6Fb4VwhXGFc4V1hXaFd4V4hXyFfYV/hYCFgYWChYOFhoWIhYmFioWLhYyFjYWOhZCFkYWShZOFlIWVhZaFl4WYhZmFmoWdhZ6Fn4WghaGFooWjhaWFpoWnhamFq4Wsha2FsYWyhbOFtIW1hbaFuIW6hbuFvIW9hb6Fv4XAhcKFw4XEhcWFxoXHhciFyoXLhcyFzYXOhdGF0oX+/9SF1oXXhdiF2YXahduF3YXehd+F4IXhheKF44XlheaF54XoheqF64Xshe2F7oXvhfCF8YXyhfOF9IX1hfaF94X4hfmF+oX8hf2F/oUAhgGGAoYDhgSGBoYHhgiGCYYKhguGDIYNhg6GD4YQhhKGE4YUhhWGF4YYhhmGGoYbhhyGHYYehh+GIIYhhiKGI4YkhiWGJoYohiqGK4Yshi2GLoYvhjCGMYYyhjOGNIY1hjaGN4Y5hjqGO4Y9hj6GP4ZAhv7/QYZChkOGRIZFhkaGR4ZIhkmGSoZLhkyGUoZThlWGVoZXhliGWYZbhlyGXYZfhmCGYYZjhmSGZYZmhmeGaIZphmqGbYZvhnCGcoZzhnSGdYZ2hneGeIaDhoSGhYaGhoeGiIaJho6Gj4aQhpGGkoaUhpaGl4aYhpmGmoabhp6Gn4aghqGGooalhqaGq4athq6GsoazhreGuIa5hruGvIa9hr6Gv4bBhsKGw4bFhsiGzIbNhtKG04bVhtaG14bahtyG/v/dhuCG4YbihuOG5YbmhueG6IbqhuuG7IbvhvWG9ob3hvqG+4b8hv2G/4YBhwSHBYcGhwuHDIcOhw+HEIcRhxSHFocZhxuHHYcfhyCHJIcmhyeHKIcqhyuHLIcthy+HMIcyhzOHNYc2hziHOYc6hzyHPYdAh0GHQodDh0SHRYdGh0qHS4dNh0+HUIdRh1KHVIdVh1aHWIdah1uHXIddh16HX4dhh2KHZodnh2iHaYdqh2uHbIdth2+HcYdyh3OHdYf+/3eHeId5h3qHf4eAh4GHhIeGh4eHiYeKh4yHjoePh5CHkYeSh5SHlYeWh5iHmYeah5uHnIedh56HoIehh6KHo4ekh6WHpoenh6mHqoeuh7CHsYeyh7SHtoe3h7iHuYe7h7yHvoe/h8GHwofDh8SHxYfHh8iHyYfMh82HzofPh9CH1IfVh9aH14fYh9mH2ofch92H3offh+GH4ofjh+SH5ofnh+iH6Yfrh+yH7Yfvh/CH8Yfyh/OH9If1h/aH94f4h/7/+of7h/yH/Yf/hwCIAYgCiASIBYgGiAeICIgJiAuIDIgNiA6ID4gQiBGIEogUiBeIGIgZiBqIHIgdiB6IH4ggiCOIJIgliCaIJ4goiCmIKogriCyILYguiC+IMIgxiDOINIg1iDaIN4g4iDqIO4g9iD6IP4hBiEKIQ4hGiEeISIhJiEqIS4hOiE+IUIhRiFKIU4hViFaIWIhaiFuIXIhdiF6IX4hgiGaIZ4hqiG2Ib4hxiHOIdIh1iHaIeIh5iHqI/v97iHyIgIiDiIaIh4iJiIqIjIiOiI+IkIiRiJOIlIiViJeImIiZiJqIm4idiJ6In4igiKGIo4iliKaIp4ioiKmIqoisiK6Ir4iwiLKIs4i0iLWItoi4iLmIuoi7iL2Ivoi/iMCIw4jEiMeIyIjKiMuIzIjNiM+I0IjRiNOI1ojXiNqI24jciN2I3ojgiOGI5ojniOmI6ojriOyI7YjuiO+I8oj1iPaI94j6iPuI/Yj/iACJAYkDiQSJBYkGiQeJCIn+/wmJC4kMiQ2JDokPiRGJFIkViRaJF4kYiRyJHYkeiR+JIIkiiSOJJIkmiSeJKIkpiSyJLYkuiS+JMYkyiTOJNYk3iTiJOYk6iTuJPIk9iT6JP4lAiUKJQ4lFiUaJR4lIiUmJSolLiUyJTYlOiU+JUIlRiVKJU4lUiVWJVolXiViJWYlaiVuJXIldiWCJYYliiWOJZIlliWeJaIlpiWqJa4lsiW2JbolviXCJcYlyiXOJdIl1iXaJd4l4iXmJeol8if7/fYl+iYCJgomEiYWJh4mIiYmJiomLiYyJjYmOiY+JkImRiZKJk4mUiZWJlomXiZiJmYmaiZuJnImdiZ6Jn4mgiaGJoomjiaSJpYmmiaeJqImpiaqJq4msia2JromvibCJsYmyibOJtIm1ibaJt4m4ibmJuom7ibyJvYm+ib+JwInDic2J04nUidWJ14nYidmJ24ndid+J4InhieKJ5InnieiJ6YnqieyJ7YnuifCJ8YnyifSJ9Yn2ifeJ+In5ifqJ/v/7ifyJ/Yn+if+JAYoCigOKBIoFigaKCIoJigqKC4oMig2KDooPihCKEYoSihOKFIoVihaKF4oYihmKGoobihyKHYoeih+KIIohiiKKI4okiiWKJooniiiKKYoqiiuKLIotii6KL4owijGKMoozijSKNYo2ijeKOIo5ijqKO4o8ij2KP4pAikGKQopDikSKRYpGikeKSYpKikuKTIpNik6KT4pQilGKUopTilSKVYpWileKWIpZilqKW4pcil2KXor+/1+KYIphimKKY4pkimWKZopnimiKaYpqimuKbIptim6Kb4pwinGKcopzinSKdYp2ineKeIp6inuKfIp9in6Kf4qAioGKgoqDioSKhYqGioeKiIqLioyKjYqOio+KkIqRipKKlIqVipaKl4qYipmKmoqbipyKnYqeip+KoIqhiqKKo4qkiqWKpoqniqiKqYqqiquKrIqtiq6Kr4qwirGKsoqzirSKtYq2ireKuIq5irqKu4q8ir2Kvoq/isCKwYrCiv7/w4rEisWKxorHisiKyYrKisuKzIrNis6Kz4rQitGK0orTitSK1YrWiteK2IrZitqK24rcit2K3orfiuCK4YriiuOK5IrliuaK54roiumK6orriuyK7Yruiu+K8IrxivKK84r0ivWK9or3iviK+Yr6ivuK/Ir9iv6K/4oAiwGLAosDiwSLBYsGiwiLCYsKiwuLDIsNiw6LD4sQixGLEosTixSLFYsWixeLGIsZixqLG4scix2LHosfiyCLIYsiiyOL/v8kiyWLJ4soiymLKosriyyLLYsuiy+LMIsxizKLM4s0izWLNos3iziLOYs6izuLPIs9iz6LP4tAi0GLQotDi0SLRYtGi0eLSItJi0qLS4tMi02LTotPi1CLUYtSi1OLVItVi1aLV4tYi1mLWotbi1yLXYtei1+LYIthi2KLY4tki2WLZ4toi2mLaotri22Lbotvi3CLcYtyi3OLdIt1i3aLd4t4i3mLeot7i3yLfYt+i3+LgIuBi4KLg4uEi4WLhov+/4eLiIuJi4qLi4uMi42LjouPi5CLkYuSi5OLlIuVi5aLl4uYi5mLmoubi5yLnYuei5+LrIuxi7uLx4vQi+qLCYwejDiMOYw6jDuMPIw9jD6MP4xAjEKMQ4xEjEWMSIxKjEuMTYxOjE+MUIxRjFKMU4xUjFaMV4xYjFmMW4xcjF2MXoxfjGCMY4xkjGWMZoxnjGiMaYxsjG2MboxvjHCMcYxyjHSMdYx2jHeMe4x8jH2Mfox/jICMgYyDjISMhoyHjP7/iIyLjI2MjoyPjJCMkYySjJOMlYyWjJeMmYyajJuMnIydjJ6Mn4ygjKGMooyjjKSMpYymjKeMqIypjKqMq4ysjK2MroyvjLCMsYyyjLOMtIy1jLaMt4y4jLmMuoy7jLyMvYy+jL+MwIzBjMKMw4zEjMWMxozHjMiMyYzKjMuMzIzNjM6Mz4zQjNGM0ozTjNSM1YzWjNeM2IzZjNqM24zcjN2M3ozfjOCM4YzijOOM5IzljOaM54zojOmM6ozrjOyM/v/tjO6M74zwjPGM8ozzjPSM9Yz2jPeM+Iz5jPqM+4z8jP2M/oz/jACNAY0CjQONBI0FjQaNB40IjQmNCo0LjQyNDY0OjQ+NEI0RjRKNE40UjRWNFo0XjRiNGY0ajRuNHI0gjVGNUo1XjV+NZY1ojWmNao1sjW6Nb41xjXKNeI15jXqNe418jX2Nfo1/jYCNgo2DjYaNh42IjYmNjI2NjY6Nj42QjZKNk42VjZaNl42YjZmNmo2bjZyNnY2ejaCNoY3+/6KNpI2ljaaNp42ojamNqo2rjayNrY2uja+NsI2yjbaNt425jbuNvY3AjcGNwo3FjceNyI3JjcqNzY3QjdKN043UjdWN2I3ZjdyN4I3hjeKN5Y3mjeeN6Y3tje6N8I3xjfKN9I32jfyN/o3/jQCOAY4CjgOOBI4GjgeOCI4Ljg2ODo4QjhGOEo4TjhWOFo4XjhiOGY4ajhuOHI4gjiGOJI4ljiaOJ44ojiuOLY4wjjKOM440jjaON444jjuOPI4+jv7/P45DjkWORo5Mjk2OTo5PjlCOU45UjlWOVo5XjliOWo5bjlyOXY5ejl+OYI5hjmKOY45kjmWOZ45ojmqOa45ujnGOc451jneOeI55jnqOe459jn6OgI6CjoOOhI6GjoiOiY6KjouOjI6Njo6OkY6SjpOOlY6WjpeOmI6ZjpqOm46djp+OoI6hjqKOo46kjqWOpo6njqiOqY6qjq2Oro6wjrGOs460jrWOto63jriOuY67jryOvY6+jr+OwI7BjsKO/v/DjsSOxY7GjseOyI7JjsqOy47Mjs2Oz47QjtGO0o7TjtSO1Y7WjteO2I7ZjtqO247cjt2O3o7fjuCO4Y7ijuOO5I7ljuaO547ojumO6o7rjuyO7Y7uju+O8I7xjvKO8470jvWO9o73jviO+Y76jvuO/I79jv6O/44AjwGPAo8DjwSPBY8GjwePCI8JjwqPC48Mjw2PDo8PjxCPEY8SjxOPFI8VjxaPF48YjxmPGo8bjxyPHY8ejx+PII8hjyKPI4/+/ySPJY8mjyePKI8pjyqPK48sjy2PLo8vjzCPMY8yjzOPNI81jzaPN484jzmPOo87jzyPPY8+jz+PQI9Bj0KPQ49Ej0WPRo9Hj0iPSY9Kj0uPTI9Nj06PT49Qj1GPUo9Tj1SPVY9Wj1ePWI9Zj1qPW49cj12PXo9fj2CPYY9ij2OPZI9lj2qPgI+Mj5KPnY+gj6GPoo+kj6WPpo+nj6qPrI+tj66Pr4+yj7OPtI+1j7ePuI+6j7uPvI+/j8CPw4/Gj/7/yY/Kj8uPzI/Nj8+P0o/Wj9eP2o/gj+GP44/nj+yP74/xj/KP9I/1j/aP+o/7j/yP/o//jweQCJAMkA6QE5AVkBiQGZAckCOQJJAlkCeQKJApkCqQK5AskDCQMZAykDOQNJA3kDmQOpA9kD+QQJBDkEWQRpBIkEmQSpBLkEyQTpBUkFWQVpBZkFqQXJBdkF6QX5BgkGGQZJBmkGeQaZBqkGuQbJBvkHCQcZBykHOQdpB3kHiQeZB6kHuQfJB+kIGQ/v+EkIWQhpCHkImQipCMkI2QjpCPkJCQkpCUkJaQmJCakJyQnpCfkKCQpJClkKeQqJCpkKuQrZCykLeQvJC9kL+QwJDCkMOQxpDIkMmQy5DMkM2Q0pDUkNWQ1pDYkNmQ2pDekN+Q4JDjkOSQ5ZDpkOqQ7JDukPCQ8ZDykPOQ9ZD2kPeQ+ZD6kPuQ/JD/kACRAZEDkQWRBpEHkQiRCZEKkQuRDJENkQ6RD5EQkRGREpETkRSRFZEWkReRGJEakRuRHJH+/x2RH5EgkSGRJJElkSaRJ5EokSmRKpErkSyRLZEukTCRMpEzkTSRNZE2kTeROJE6kTuRPJE9kT6RP5FAkUGRQpFEkUWRR5FIkVGRU5FUkVWRVpFYkVmRW5FckV+RYJFmkWeRaJFrkW2Rc5F6kXuRfJGAkYGRgpGDkYSRhpGIkYqRjpGPkZORlJGVkZaRl5GYkZmRnJGdkZ6Rn5GgkaGRpJGlkaaRp5GokamRq5GskbCRsZGykbORtpG3kbiRuZG7kf7/vJG9kb6Rv5HAkcGRwpHDkcSRxZHGkciRy5HQkdKR05HUkdWR1pHXkdiR2ZHakduR3ZHekd+R4JHhkeKR45HkkeWR5pHnkeiR6ZHqkeuR7JHtke6R75HwkfGR8pHzkfSR9ZH2kfeR+JH5kfqR+5H8kf2R/pH/kQCSAZICkgOSBJIFkgaSB5IIkgmSCpILkgySDZIOkg+SEJIRkhKSE5IUkhWSFpIXkhiSGZIakhuSHJIdkh6SH5IgkiGSIpIjkiSS/v8lkiaSJ5IokimSKpIrkiySLZIuki+SMJIxkjKSM5I0kjWSNpI3kjiSOZI6kjuSPJI9kj6SP5JAkkGSQpJDkkSSRZJGkkeSSJJJkkqSS5JMkk2STpJPklCSUZJSklOSVJJVklaSV5JYklmSWpJbklySXZJekl+SYJJhkmKSY5JkkmWSZpJnkmiSaZJqkmuSbJJtkm6Sb5JwknGScpJzknWSdpJ3kniSeZJ6knuSfJJ9kn6Sf5KAkoGSgpKDkoSShZL+/4aSh5KIkomSipKLkoySjZKPkpCSkZKSkpOSlJKVkpaSl5KYkpmSmpKbkpySnZKekp+SoJKhkqKSo5KkkqWSppKnkqiSqZKqkquSrJKtkq+SsJKxkrKSs5K0krWStpK3kriSuZK6kruSvJK9kr6Sv5LAksGSwpLDksSSxZLGkseSyZLKksuSzJLNks6Sz5LQktGS0pLTktSS1ZLWkteS2JLZktqS25Lckt2S3pLfkuCS4ZLikuOS5JLlkuaS55Lokv7/6ZLqkuuS7JLtku6S75LwkvGS8pLzkvSS9ZL2kveS+JL5kvqS+5L8kv2S/pL/kgCTAZMCkwOTBJMFkwaTB5MIkwmTCpMLkwyTDZMOkw+TEJMRkxKTE5MUkxWTFpMXkxiTGZMakxuTHJMdkx6TH5MgkyGTIpMjkySTJZMmkyeTKJMpkyqTK5Msky2TLpMvkzCTMZMykzOTNJM1kzaTN5M4kzmTOpM7kzyTPZM/k0CTQZNCk0OTRJNFk0aTR5NIk0mT/v9Kk0uTTJNNk06TT5NQk1GTUpNTk1STVZNWk1eTWJNZk1qTW5Nck12TXpNfk2CTYZNik2OTZJNlk2aTZ5Nok2mTa5Nsk22TbpNvk3CTcZNyk3OTdJN1k3aTd5N4k3mTepN7k3yTfZN+k3+TgJOBk4KTg5OEk4WThpOHk4iTiZOKk4uTjJONk46TkJORk5KTk5OUk5WTlpOXk5iTmZOak5uTnJOdk56Tn5Ogk6GTopOjk6STpZOmk6eTqJOpk6qTq5P+/6yTrZOuk6+TsJOxk7KTs5O0k7WTtpO3k7iTuZO6k7uTvJO9k76Tv5PAk8GTwpPDk8STxZPGk8eTyJPJk8uTzJPNk86Tz5PQk9GT0pPTk9ST1ZPXk9iT2ZPak9uT3JPdk96T35Pgk+GT4pPjk+ST5ZPmk+eT6JPpk+qT65Psk+2T7pPvk/CT8ZPyk/OT9JP1k/aT95P4k/mT+pP7k/yT/ZP+k/+TAJQBlAKUA5QElAWUBpQHlAiUCZQKlAuUDJQNlP7/DpQPlBCUEZQSlBOUFJQVlBaUF5QYlBmUGpQblByUHZQelB+UIJQhlCKUI5QklCWUJpQnlCiUKZQqlCuULJQtlC6UL5QwlDGUMpQzlDSUNZQ2lDeUOJQ5lDqUO5Q8lD2UP5RAlEGUQpRDlESURZRGlEeUSJRJlEqUS5RMlE2UTpRPlFCUUZRSlFOUVJRVlFaUV5RYlFmUWpRblFyUXZRelF+UYJRhlGKUY5RklGWUZpRnlGiUaZRqlGyUbZRulG+U/v9wlHGUcpRzlHSUdZR2lHeUeJR5lHqUe5R8lH2UfpR/lICUgZSClIOUhJSRlJaUmJTHlM+U05TUlNqU5pT7lByVIJUnlTOVPZVDlUiVS5VVlVqVYJVulXSVdZV3lXiVeZV6lXuVfJV9lX6VgJWBlYKVg5WElYWVhpWHlYiViZWKlYuVjJWNlY6Vj5WQlZGVkpWTlZSVlZWWlZeVmJWZlZqVm5WclZ2VnpWflaCVoZWilaOVpJWllaaVp5WolamVqpX+/6uVrJWtla6Vr5WwlbGVspWzlbSVtZW2lbeVuJW5lbqVu5W8lb2VvpW/lcCVwZXClcOVxJXFlcaVx5XIlcmVypXLlcyVzZXOlc+V0JXRldKV05XUldWV1pXXldiV2ZXalduV3JXdld6V35XgleGV4pXjleSV5ZXmleeV7JX/lQeWE5YYlhuWHpYgliOWJJYlliaWJ5YolimWK5Ysli2WL5YwljeWOJY5ljqWPpZBlkOWSpZOlk+WUZZSllOWVpZXlv7/WJZZllqWXJZdll6WYJZjlmWWZpZrlm2WbpZvlnCWcZZzlniWeZZ6lnuWfJZ9ln6Wf5aAloGWgpaDloSWh5aJloqWjJaOlpGWkpaTlpWWlpaalpuWnZaelp+WoJahlqKWo5aklqWWppaolqmWqparlqyWrZaulq+WsZaylrSWtZa3lriWupa7lr+WwpbDlsiWypbLltCW0ZbTltSW1pbXltiW2ZbaltuW3Jbdlt6W35bhluKW45bkluWW5pbnluuW/v/slu2W7pbwlvGW8pb0lvWW+Jb6lvuW/Jb9lv+WApcDlwWXCpcLlwyXEJcRlxKXFJcVlxeXGJcZlxqXG5cdlx+XIJchlyKXI5cklyWXJpcnlyiXKZcrlyyXLpcvlzGXM5c0lzWXNpc3lzqXO5c8lz2XP5dAl0GXQpdDl0SXRZdGl0eXSJdJl0qXS5dMl02XTpdPl1CXUZdUl1WXV5dYl1qXXJddl1+XY5dkl2aXZ5dol2qXa5dsl22Xbpdvl3CXcZf+/3KXdZd3l3iXeZd6l3uXfZd+l3+XgJeBl4KXg5eEl4aXh5eIl4mXipeMl46Xj5eQl5OXlZeWl5eXmZeal5uXnJedl56Xn5ehl6KXpJell6aXp5eol6mXqpesl66XsJexl7OXtZe2l7eXuJe5l7qXu5e8l72Xvpe/l8CXwZfCl8OXxJfFl8aXx5fIl8mXypfLl8yXzZfOl8+X0JfRl9KX05fUl9WX1pfXl9iX2Zfal9uX3Jfdl96X35fgl+GX4pfjl/7/5Jfll+iX7pfvl/CX8Zfyl/SX95f4l/mX+pf7l/yX/Zf+l/+XAJgBmAKYA5gEmAWYBpgHmAiYCZgKmAuYDJgNmA6YD5gQmBGYEpgTmBSYFZgWmBeYGJgZmBqYG5gcmB2YHpgfmCCYIZgimCOYJJglmCaYJ5gomCmYKpgrmCyYLZgumC+YMJgxmDKYM5g0mDWYNpg3mDiYOZg6mDuYPJg9mD6YP5hAmEGYQphDmESYRZhGmEeYSJhJmEqYS5hMmE2Y/v9OmE+YUJhRmFKYU5hUmFWYVphXmFiYWZhamFuYXJhdmF6YX5hgmGGYYphjmGSYZZhmmGeYaJhpmGqYa5hsmG2YbphvmHCYcZhymHOYdJiLmI6YkpiVmJmYo5iomKmYqpirmKyYrZiumK+YsJixmLKYs5i0mLWYtpi3mLiYuZi6mLuYvJi9mL6Yv5jAmMGYwpjDmMSYxZjGmMeYyJjJmMqYy5jMmM2Yz5jQmNSY1pjXmNuY3JjdmOCY4ZjimOOY5Jj+/+WY5pjpmOqY65jsmO2Y7pjvmPCY8ZjymPOY9Jj1mPaY95j4mPmY+pj7mPyY/Zj+mP+YAJkBmQKZA5kEmQWZBpkHmQiZCZkKmQuZDJkOmQ+ZEZkSmROZFJkVmRaZF5kYmRmZGpkbmRyZHZkemR+ZIJkhmSKZI5kkmSWZJpknmSiZKZkqmSuZLJktmS+ZMJkxmTKZM5k0mTWZNpk3mTiZOZk6mTuZPJk9mT6ZP5lAmUGZQplDmUSZRZlGmUeZSJlJmf7/SplLmUyZTZlOmU+ZUJlRmVKZU5lWmVeZWJlZmVqZW5lcmV2ZXplfmWCZYZlimWSZZplzmXiZeZl7mX6ZgpmDmYmZjJmOmZqZm5mcmZ2ZnpmfmaCZoZmimaOZpJmmmaeZqZmqmauZrJmtma6Zr5mwmbGZspmzmbSZtZm2mbeZuJm5mbqZu5m8mb2Zvpm/mcCZwZnCmcOZxJnFmcaZx5nImcmZypnLmcyZzZnOmc+Z0JnRmdKZ05nUmdWZ1pnXmdiZ/v/ZmdqZ25ncmd2Z3pnfmeCZ4ZnimeOZ5JnlmeaZ55nomemZ6pnrmeyZ7Znume+Z8JnxmfKZ85n0mfWZ9pn3mfiZ+Zn6mfuZ/Jn9mf6Z/5kAmgGaApoDmgSaBZoGmgeaCJoJmgqaC5oMmg2aDpoPmhCaEZoSmhOaFJoVmhaaF5oYmhmaGpobmhyaHZoemh+aIJohmiKaI5okmiWaJponmiiaKZoqmiuaLJotmi6aL5owmjGaMpozmjSaNZo2mjeaOJr+/zmaOpo7mjyaPZo+mj+aQJpBmkKaQ5pEmkWaRppHmkiaSZpKmkuaTJpNmk6aT5pQmlGaUppTmlSaVZpWmleaWJpZmlqaW5pcml2aXppfmmCaYZpimmOaZJplmmaaZ5pommmaapprmnKag5qJmo2ajpqUmpWamZqmmqmaqpqrmqyarZqumq+aspqzmrSatZq5mruavZq+mr+aw5rEmsaax5rImsmayprNms6az5rQmtKa1JrVmtaa15rZmtqa25rcmv7/3ZremuCa4prjmuSa5Zrnmuia6Zrqmuya7prwmvGa8przmvSa9Zr2mvea+Jr6mvya/Zr+mv+aAJsBmwKbBJsFmwabB5sJmwqbC5sMmw2bDpsQmxGbEpsUmxWbFpsXmxibGZsamxubHJsdmx6bIJshmyKbJJslmyabJ5somymbKpsrmyybLZsumzCbMZszmzSbNZs2mzebOJs5mzqbPZs+mz+bQJtGm0qbS5tMm06bUJtSm1ObVZtWm1ebWJtZm1qb/v9bm1ybXZtem1+bYJthm2KbY5tkm2WbZptnm2ibaZtqm2ubbJttm26bb5twm3Gbcptzm3SbdZt2m3ebeJt5m3qbe5t8m32bfpt/m4CbgZuCm4ObhJuFm4abh5uIm4mbipuLm4ybjZuOm4+bkJuRm5Kbk5uUm5WblpuXm5ibmZuam5ubnJudm56bn5ugm6Gbopujm6SbpZumm6ebqJupm6qbq5usm62brpuvm7CbsZuym7ObtJu1m7abt5u4m7mbupv+/7ubvJu9m76bv5vAm8GbwpvDm8SbxZvGm8ebyJvJm8qby5vMm82bzpvPm9Cb0ZvSm9Ob1JvVm9ab15vYm9mb2pvbm9yb3Zvem9+b4Jvhm+Kb45vkm+Wb5pvnm+ib6Zvqm+ub7Jvtm+6b75vwm/Gb8pvzm/Sb9Zv2m/eb+Jv5m/qb+5v8m/2b/pv/mwCcAZwCnAOcBJwFnAacB5wInAmcCpwLnAycDZwOnA+cEJwRnBKcE5wUnBWcFpwXnBicGZwanP7/G5wcnB2cHpwfnCCcIZwinCOcJJwlnCacJ5wonCmcKpwrnCycLZwunC+cMJwxnDKcM5w0nDWcNpw3nDicOZw6nDucPJw9nD6cP5xAnEGcQpxDnEScRZxGnEecSJxJnEqcS5xMnE2cTpxPnFCcUZxSnFOcVJxVnFacV5xYnFmcWpxbnFycXZxenF+cYJxhnGKcY5xknGWcZpxnnGicaZxqnGucbJxtnG6cb5xwnHGccpxznHScdZx2nHeceJx5nHqc/v97nH2cfpyAnIOchJyJnIqcjJyPnJOclpyXnJicmZydnKqcrJyvnLmcvpy/nMCcwZzCnMicyZzRnNKc2pzbnOCc4ZzjnOSc5ZzmnOec6JzpnOqc65zsnO2c7pzvnPCc8ZzynPOc9Jz1nPac95z4nPmc+pz7nPyc/Zz+nP+cAJ0BnQKdA50EnQWdBp0HnQidCZ0KnQudDJ0NnQ6dD50QnRGdEp0TnRSdFZ0WnRedGJ0ZnRqdG50cnR2dHp0fnSCdIZ3+/yKdI50knSWdJp0nnSidKZ0qnSudLJ0tnS6dL50wnTGdMp0znTSdNZ02nTedOJ05nTqdO508nT2dPp0/nUCdQZ1CnUOdRJ1FnUadR51InUmdSp1LnUydTZ1OnU+dUJ1RnVKdU51UnVWdVp1XnVidWZ1anVudXJ1dnV6dX51gnWGdYp1jnWSdZZ1mnWedaJ1pnWqda51snW2dbp1vnXCdcZ1ynXOddJ11nXadd514nXmdep17nXydfZ1+nX+dgJ2Bnf7/gp2DnYSdhZ2GnYediJ2JnYqdi52MnY2djp2PnZCdkZ2SnZOdlJ2VnZadl52YnZmdmp2bnZydnZ2enZ+doJ2hnaKdo52knaWdpp2nnaidqZ2qnaudrJ2tna6dr52wnbGdsp2znbSdtZ22nbeduJ25nbqdu528nb2dvp2/ncCdwZ3CncOdxJ3Fncadx53Incmdyp3LncydzZ3Onc+d0J3RndKd053UndWd1p3Xndid2Z3andud3J3dnd6d353gneGd/v/ineOd5J3lnead553onemd6p3rneyd7Z3une+d8J3xnfKd8530nfWd9p33nfid+Z36nfud/J39nf6d/50AngGeAp4DngSeBZ4GngeeCJ4JngqeC54Mng2eDp4PnhCeEZ4SnhOeFJ4VnhaeF54YnhmeGp4bnhyeHZ4eniSeJ54unjCeNJ47njyeQJ5NnlCeUp5TnlSeVp5Znl2eX55gnmGeYp5lnm6eb55ynnSedZ52nneeeJ55nnqee558nn2egJ7+/4Geg56EnoWehp6JnoqejJ6Nno6ej56QnpGelJ6Vnpael56Ynpmemp6bnpyenp6gnqGeop6jnqSepZ6nnqieqZ6qnquerJ6tnq6er56wnrGesp6znrWetp63nrmeup68nr+ewJ7BnsKew57Fnsaex57Insqey57MntCe0p7TntWe1p7Xntme2p7enuGe457knuae6J7rnuye7Z7unvCe8Z7ynvOe9J71nvae9574nvqe/Z7/ngCfAZ8CnwOfBJ8Fn/7/Bp8HnwifCZ8KnwyfD58RnxKfFJ8VnxafGJ8anxufHJ8dnx6fH58hnyOfJJ8lnyafJ58onymfKp8rny2fLp8wnzGfMp8znzSfNZ82nzifOp88nz+fQJ9Bn0KfQ59Fn0afR59In0mfSp9Ln0yfTZ9On0+fUp9Tn1SfVZ9Wn1efWJ9Zn1qfW59cn12fXp9fn2CfYZ9in2OfZJ9ln2afZ59on2mfap9rn2yfbZ9un2+fcJ9xn3Kfc590n3Wfdp93n3if/v95n3qfe598n32ffp+Bn4KfjZ+On4+fkJ+Rn5Kfk5+Un5Wflp+Xn5ifnJ+dn56foZ+in6OfpJ+lnyz5efmV+ef58fkM+g36DvoP+hH6E/oU+hj6H/og+iH6I/ok+if6KPop+gAAAAAAAAAAAACAAAAAowAAAAAAAAClAAAApgAAACQAAACpAAAArwAAACYAAACyAAAAtgAAAC0AAAC4AAAA1gAAADIAAADYAAAA3wAAAFEAAADiAAAA5wAAAFkAAADrAAAA6wAAAF8AAADuAAAA8QAAAGAAAAD0AAAA9gAAAGQAAAD4AAAA+AAAAGcAAAD7AAAA+wAAAGgAAAD9AAAAAAEAAGkAAAACAQAAEgEAAG0AAAAUAQAAGgEAAH4AAAAcAQAAKgEAAIUAAAAsAQAAQwEAAJQAAABFAQAARwEAAKwAAABJAQAATAEAAK8AAABOAQAAagEAALMAAABsAQAAzQEAANAAAADPAQAAzwEAADIBAADRAQAA0QEAADMBAADTAQAA0wEAADQBAADVAQAA1QEAADUBAADXAQAA1wEAADYBAADZAQAA2QEAADcBAADbAQAA2wEAADgBAADdAQAA+AEAADkBAAD6AQAAUAIAAFUBAABSAgAAYAIAAKwBAABiAgAAxgIAALsBAADIAgAAyAIAACACAADMAgAA2AIAACECAADaAgAAkAMAAC4CAACiAwAAogMAAOUCAACqAwAAsAMAAOYCAADCAwAAwgMAAO0CAADKAwAAAAQAAO4CAAACBAAADwQAACUDAABQBAAAUAQAADMDAABSBAAADyAAADQDAAARIAAAEiAAAPIeAAAXIAAAFyAAAPQeAAAaIAAAGyAAAPUeAAAeIAAAJCAAAPceAAAnIAAALyAAAP4eAAAxIAAAMSAAAAcfAAA0IAAANCAAAAgfAAA2IAAAOiAAAAkfAAA8IAAAqyAAAA4fAACtIAAAAiEAAH4fAAAEIQAABCEAANQfAAAGIQAACCEAANUfAAAKIQAAFSEAANgfAAAXIQAAICEAAOQfAAAiIQAAXyEAAO4fAABsIQAAbyEAACwgAAB6IQAAjyEAADAgAACUIQAAlSEAAEYgAACaIQAAByIAAEggAAAJIgAADiIAALYgAAAQIgAAECIAALwgAAASIgAAFCIAAL0gAAAWIgAAGSIAAMAgAAAbIgAAHCIAAMQgAAAhIgAAIiIAAMYgAAAkIgAAJCIAAMggAAAmIgAAJiIAAMkgAAAsIgAALSIAAMogAAAvIgAAMyIAAMwgAAA4IgAAPCIAANEgAAA+IgAARyIAANYgAABJIgAASyIAAOAgAABNIgAAUSIAAOMgAABTIgAAXyIAAOggAABiIgAAYyIAAPUgAABoIgAAbSIAAPcgAABwIgAAlCIAAP0gAACWIgAAmCIAACIhAACaIgAApCIAACUhAACmIgAAviIAADAhAADAIgAAESMAAEkhAAATIwAAXyQAAJshAABqJAAAcyQAAOgiAACcJAAA/yQAAPIiAABMJQAATyUAAFYjAAB0JQAAgCUAAFojAACQJQAAkiUAAGcjAACWJQAAnyUAAGojAACiJQAAsSUAAHQjAAC0JQAAuyUAAIQjAAC+JQAAxSUAAIwjAADIJQAAyiUAAJQjAADMJQAAzSUAAJcjAADQJQAA4SUAAJkjAADmJQAABCYAAKsjAAAHJgAACCYAAMojAAAKJgAAPyYAAMwjAABBJgAAQSYAAAIkAABDJgAAgC4AAAMkAACCLgAAgy4AAEEsAACFLgAAhy4AAEMsAACJLgAAii4AAEYsAACNLgAAli4AAEgsAACYLgAApi4AAFIsAACoLgAAqS4AAGEsAACrLgAArS4AAGMsAACvLgAAsi4AAGYsAAC0LgAAtS4AAGosAAC4LgAAui4AAGwsAAC8LgAAyS4AAG8sAADLLgAA7y8AAH0sAAD8LwAA/y8AAKItAAAEMAAABDAAAKYtAAAYMAAAHDAAAKctAAAfMAAAIDAAAKwtAAAqMAAAPTAAAK4tAAA/MAAAQDAAAMItAACUMAAAmjAAAMQtAACfMAAAoDAAAMstAAD3MAAA+zAAAM0tAAD/MAAABDEAANItAAAqMQAAHzIAANgtAAAqMgAAMDIAAM4uAAAyMgAAojIAANUuAACkMgAAjTMAAEYvAACQMwAAmzMAADAwAACfMwAAoDMAADwwAACiMwAAwzMAAD4wAADFMwAAzTMAAGAwAADPMwAA0DMAAGkwAADTMwAA1DMAAGswAADWMwAARjQAAG0wAABINAAAcjQAAN4wAAB0NAAAnTUAAAkxAACfNQAADTYAADMyAAAPNgAAGTYAAKIyAAAbNgAAFzkAAK0yAAAZOQAAbTkAAKo1AABvOQAAzjkAAP81AADROQAA3jkAAF82AADgOQAAcjoAAG02AAB0OgAATTsAAAA3AABPOwAAbTwAANo3AABvPAAA3zwAAPk4AADhPAAAVUAAAGo5AABXQAAAXkEAAN88AABgQQAANkMAAOc9AAA4QwAAq0MAAL4/AACtQwAAsEMAADJAAACyQwAA3EMAADZAAADeQwAA1UQAAGFAAADXRAAAS0YAAFlBAABNRgAAYEYAAM5CAABiRgAAIkcAAOJCAAAkRwAAKEcAAKNDAAAqRwAAe0cAAKhDAAB9RwAAjEcAAPpDAACORwAARkkAAApEAABISQAAeUkAAMNFAAB7SQAAfEkAAPVFAAB+SQAAgUkAAPdFAACESQAAhEkAAPtFAACHSQAAmkkAAPxFAACcSQAAnkkAABBGAACgSQAAtUkAABNGAAC4SQAAdkwAAClGAAB4TAAAnkwAAOhIAACkTAAAEk0AAA9JAAAaTQAArU0AAH5JAACvTQAA/00AABJKAACmnwAA/9cAAGNKAABs5wAAbOcAAL2CAADI5wAAyOcAAL6CAADn5wAA8+cAAL+CAAAV6AAAFegAAMyCAAAZ6AAAHegAAM2CAAAf6AAAJegAANKCAAAn6AAAKugAANmCAAAt6AAAMOgAAN2CAAAz6AAAOugAAOGCAAA86AAAQugAAOmCAABE6AAAU+gAAPCCAABW6AAAY+gAAACDAABl6AAAK/kAAA6DAAAt+QAAePkAANWTAAB6+QAAlPkAACGUAACW+QAA5vkAADyUAADo+QAA8PkAAI2UAADy+QAAC/oAAJaUAAAQ+gAAEPoAALCUAAAS+gAAEvoAALGUAAAV+gAAF/oAALKUAAAZ+gAAHvoAALWUAAAi+gAAIvoAALuUAAAl+gAAJvoAALyUAAAq+gAAL/4AAL6UAAAy/gAAMv4AAMSYAABF/gAASP4AAMWYAABT/gAAU/4AAMmYAABY/gAAWP4AAMqYAABn/gAAZ/4AAMuYAABs/gAAAP8AAMyYAABf/wAA3/8AAGGZAADm/wAA//8AAOKZAAAAAAAAAAAAAPyZAAAAAAAAAAAAAAAAAAC/qOOiUP7/////VP7///////9X/v////9Y/l3+//////////////////////////9e/v///////////////////////////////////////2v+/////27+////////cf7//////////3P+/////3T+df7///////95/v////////////////////////////////////+E/oqpi6mMqY2pjqmPqZCpkamSqZOplKmVqYmpVv7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////1X+Wv5c/v////////////////////////////9b/mD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9f/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2L+Zf7/////////////////////////////////////Y/5k/mj+af7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////av5v/nD+cv7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////eP7//////////3f+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////96/nv+ff7/////////////////////////////////////////////////////fP6A/v////////////+B/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gv7//////////////////////////////////////////4P+hf7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////hv7/////h/7//////////4j+if7//4r+i/7/////////////////////////////////////////////////////jf7///////+M/v//////////////////////////////////////////////////////////j/6O/pb+////////////////////////////////////////////////////////////////////////////////////////////////////////k/6U/pX+l/6S/pj+mf6a/pv+nP6d/p7+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+f/qGqoqqjqqSqpaqmqqeqqKqpqqqqq6qsqq2qrqqvqrCqsaqyqrOqtKq1qraqt6q4qrmquqq7qryqvaq+qr+qwKrBqsKqw6rEqsWqxqrHqsiqyarKqsuqzKrNqs6qz6rQqtGq0qrTqtSq1arWqteq2KrZqtqq26rcqt2q3qrfquCq4ariquOq5Krlquaq56roqumq6qrrquyq7aruqu+q8KrxqvKq86r0qvWq9qr3qviq+ar6qvuq/Kr9qv6qoauiq6OrpKulq6arp6uoq6mrqqurq6yrrauuq6+rsKuxq7Krs6u0q7Wrtqu3q7iruau6q7urvKu9q76rv6vAq8GrwqvDq8SrxavGq8eryKvJq8qry6vMq82rzqvPq9Cr0avSq9Or1KvVq9ar16vYq9mr2qvbq9yr3aveq9+r4Kvhq+Kr46vkq+Wr5qvnq+ir6avqq+ur7Kvtq+6r76vwq/Gr8qvzq/Sr9av2q/er+Kv5q/qr+6v8q/2r/quhrKKso6ykrKWspqynrKisqayqrKusrKytrK6sr6ywrLGssqyzrLSstay2rLesuKy5rLqsu6y8rL2svqy/rMCswazCrMOsxKzFrMasx6zIrMmsyqzLrMyszazOrM+s0KzRrNKs06zUrNWs1qzXrNis2azarNus3KzdrN6s36zgrOGs4qzjrOSs5azmrOes6KzprOqs66zsrO2s7qzvrPCs8azyrPOs9Kz1rPas96z4rPms+qz7rPys/az+rKGtoq2jraStpa2mraetqK2praqtq62sra2trq2vrbCtsa2yrbOttK21rbatt624rbmtuq27rbytva2+rb+twK3BrcKtw63ErcWtxq3Hrcitya3KrcutzK3Nrc6tz63QrdGt0q3TrdSt1a3Wrdet2K3Zrdqt263crd2t3q3freCt4a3ireOt5K3lreat563oremt6q3rreyt7a3ure+t8K3xrfKt8630rfWt9q33rfit+a36rfut/K39rf6toa6irqOupK6lrqaup66orqmuqq6rrqyura6urq+usK6xrrKus660rrWutq63rriuua66rruuvK69rr6uv67ArsGuwq7DrsSuxa7GrseuyK7Jrsquy67Mrs2uzq7PrtCu0a7SrtOu1K7Vrtau167Yrtmu2q7brtyu3a7ert+u4K7hruKu467kruWu5q7nruiu6a7qruuu7K7tru6u767wrvGu8q7zrvSu9a72rveu+K75rvqu+678rv2u/q6hr6Kvo6+kr6Wvpq+nr6ivqa+qr6uvrK+tr66vr6+wr7Gvsq+zr7Svta+2r7evuK+5r7qvu6+8r72vvq+/r8Cvwa/Cr8OvxK/Fr8avx6/Ir8mvyq/Lr8yvza/Or8+v0K/Rr9Kv06/Ur9Wv1q/Xr9iv2a/ar9uv3K/dr96v36/gr+Gv4q/jr+Sv5a/mr+ev6K/pr+qv66/sr+2v7q/vr/Cv8a/yr/Ov9K/1r/av96/4r/mv+q/7r/yv/a/+r6H4ovij+KT4pfim+Kf4qPip+Kr4q/is+K34rviv+LD4sfiy+LP4tPi1+Lb4t/i4+Ln4uvi7+Lz4vfi++L/4wPjB+ML4w/jE+MX4xvjH+Mj4yfjK+Mv4zPjN+M74z/jQ+NH40vjT+NT41fjW+Nf42PjZ+Nr42/jc+N343vjf+OD44fji+OP45Pjl+Ob45/jo+On46vjr+Oz47fju+O/48Pjx+PL48/j0+PX49vj3+Pj4+fj6+Pv4/Pj9+P74ofmi+aP5pPml+ab5p/mo+an5qvmr+az5rfmu+a/5sPmx+bL5s/m0+bX5tvm3+bj5ufm6+bv5vPm9+b75v/nA+cH5wvnD+cT5xfnG+cf5yPnJ+cr5y/nM+c35zvnP+dD50fnS+dP51PnV+db51/nY+dn52vnb+dz53fne+d/54Pnh+eL54/nk+eX55vnn+ej56fnq+ev57Pnt+e757/nw+fH58vnz+fT59fn2+ff5+Pn5+fr5+/n8+f35/vmh+qL6o/qk+qX6pvqn+qj6qfqq+qv6rPqt+q76r/qw+rH6svqz+rT6tfq2+rf6uPq5+rr6u/q8+r36vvq/+sD6wfrC+sP6xPrF+sb6x/rI+sn6yvrL+sz6zfrO+s/60PrR+tL60/rU+tX61vrX+tj62fra+tv63Prd+t763/rg+uH64vrj+uT65frm+uf66Prp+ur66/rs+u367vrv+vD68fry+vP69Pr1+vb69/r4+vn6+vr7+vz6/fr++qH7ovuj+6T7pfum+6f7qPup+6r7q/us+637rvuv+7D7sfuy+7P7tPu1+7b7t/u4+7n7uvu7+7z7vfu++7/7wPvB+8L7w/vE+8X7xvvH+8j7yfvK+8v7zPvN+877z/vQ+9H70vvT+9T71fvW+9f72PvZ+9r72/vc+9373vvf++D74fvi++P75Pvl++b75/vo++n76vvr++z77fvu++/78Pvx+/L78/v0+/X79vv3+/j7+fv6+/v7/Pv9+/77ofyi/KP8pPyl/Kb8p/yo/Kn8qvyr/Kz8rfyu/K/8sPyx/LL8s/y0/LX8tvy3/Lj8ufy6/Lv8vPy9/L78v/zA/MH8wvzD/MT8xfzG/Mf8yPzJ/Mr8y/zM/M38zvzP/ND80fzS/NP81PzV/Nb81/zY/Nn82vzb/Nz83fze/N/84Pzh/OL84/zk/OX85vzn/Oj86fzq/Ov87Pzt/O787/zw/PH88vzz/PT89fz2/Pf8+Pz5/Pr8+/z8/P38/vyh/aL9o/2k/aX9pv2n/aj9qf2q/av9rP2t/a79r/2w/bH9sv2z/bT9tf22/bf9uP25/br9u/28/b39vv2//cD9wf3C/cP9xP3F/cb9x/3I/cn9yv3L/cz9zf3O/c/90P3R/dL90/3U/dX91v3X/dj92f3a/dv93P3d/d793/3g/eH94v3j/eT95f3m/ef96P3p/er96/3s/e397v3v/fD98f3y/fP99P31/fb99/34/fn9+v37/fz9/f3+/aH+ov6j/qT+pf6m/qf+qP6p/qr+q/6s/q3+rv6v/rD+sf6y/rP+tP61/rb+t/64/rn+uv67/rz+vf6+/r/+wP7B/sL+w/7E/sX+xv7H/sj+yf7K/sv+zP7N/s7+z/7Q/tH+0v7T/tT+1f7W/tf+2P7Z/tr+2/7c/t3+3v7f/uD+4f7i/uP+5P7l/ub+5/7o/un+6v7r/uz+7f7u/u/+8P7x/vL+8/70/vX+9v73/vj++f76/vv+/P79/v7+QKFBoUKhQ6FEoUWhRqFHoUihSaFKoUuhTKFNoU6hT6FQoVGhUqFToVShVaFWoVehWKFZoVqhW6FcoV2hXqFfoWChYaFioWOhZKFloWahZ6FooWmhaqFroWyhbaFuoW+hcKFxoXKhc6F0oXWhdqF3oXiheaF6oXuhfKF9oX6hgKGBoYKhg6GEoYWhhqGHoYihiaGKoYuhjKGNoY6hj6GQoZGhkqGToZShlaGWoZehmKGZoZqhm6GcoZ2hnqGfoaChQKJBokKiQ6JEokWiRqJHokiiSaJKokuiTKJNok6iT6JQolGiUqJTolSiVaJWoleiWKJZolqiW6Jcol2iXqJfomCiYaJiomOiZKJlomaiZ6JoommiaqJromyibaJuom+icKJxonKic6J0onWidqJ3oniieaJ6onuifKJ9on6igKKBooKig6KEooWihqKHooiiiaKKoouijKKNoo6ij6KQopGikqKTopSilaKWopeimKKZopqim6Kcop2inqKfoqCiQKNBo0KjQ6NEo0WjRqNHo0ijSaNKo0ujTKNNo06jT6NQo1GjUqNTo1SjVaNWo1ejWKNZo1qjW6Nco12jXqNfo2CjYaNio2OjZKNlo2ajZ6Noo2mjaqNro2yjbaNuo2+jcKNxo3Kjc6N0o3WjdqN3o3ijeaN6o3ujfKN9o36jgKOBo4Kjg6OEo4WjhqOHo4ijiaOKo4ujjKONo46jj6OQo5GjkqOTo5SjlaOWo5ejmKOZo5qjm6Oco52jnqOfo6CjQKRBpEKkQ6REpEWkRqRHpEikSaRKpEukTKRNpE6kT6RQpFGkUqRTpFSkVaRWpFekWKRZpFqkW6RcpF2kXqRfpGCkYaRipGOkZKRlpGakZ6RopGmkaqRrpGykbaRupG+kcKRxpHKkc6R0pHWkdqR3pHikeaR6pHukfKR9pH6kgKSBpIKkg6SEpIWkhqSHpIikiaSKpIukjKSNpI6kj6SQpJGkkqSTpJSklaSWpJekmKSZpJqkm6ScpJ2knqSfpKCkQKVBpUKlQ6VEpUWlRqVHpUilSaVKpUulTKVNpU6lT6VQpVGlUqVTpVSlVaVWpVelWKVZpVqlW6VcpV2lXqVfpWClYaVipWOlZKVlpWalZ6VopWmlaqVrpWylbaVupW+lcKVxpXKlc6V0pXWldqV3pXileaV6pXulfKV9pX6lgKWBpYKlg6WEpYWlhqWHpYiliaWKpYuljKWNpY6lj6WQpZGlkqWTpZSllaWWpZelmKWZpZqlm6WcpZ2lnqWfpaClQKZBpkKmQ6ZEpkWmRqZHpkimSaZKpkumTKZNpk6mT6ZQplGmUqZTplSmVaZWplemWKZZplqmW6Zcpl2mXqZfpmCmYaZipmOmZKZlpmamZ6ZopmmmaqZrpmymbaZupm+mcKZxpnKmc6Z0pnWmdqZ3pnimeaZ6pnumfKZ9pn6mgKaBpoKmg6aEpoWmhqaHpoimiaaKpoumjKaNpo6mj6aQppGmkqaTppSmlaaWppemmKaZppqmm6acpp2mnqafpqCmQKdBp0KnQ6dEp0WnRqdHp0inSadKp0unTKdNp06nT6dQp1GnUqdTp1SnVadWp1enWKdZp1qnW6dcp12nXqdfp2CnYadip2OnZKdlp2anZ6dop2mnaqdrp2ynbadup2+ncKdxp3Knc6d0p3Wndqd3p3inead6p3unfKd9p36ngKeBp4Kng6eEp4WnhqeHp4iniaeKp4unjKeNp46nj6eQp5GnkqeTp5SnlaeWp5enmKeZp5qnm6ecp52nnqefp6Cnq6Ksoq2irqKvorCi///kou+i8KL9ov6i9KT1pPak96T4pPmk+qT7pPyk/aT+pPel+KX5pfql+6X8pf2l/qW5prqmu6a8pr2mvqa/psCm2abaptum3Kbdpt6m36bspu2m86b2pvem+Kb5pvqm+6b8pv2m/qbCp8OnxKfFp8anx6fIp8mnyqfLp8ynzafOp8+n0Kfyp/On9Kf1p/an96f4p/mn+qf7p/yn/af+p5aol6iYqJmomqibqJyonaieqJ+ooKi8qP//wajCqMOoxKjqqOuo7KjtqO6o76jwqPGo8qjzqPSo9aj2qPeo+Kj5qPqo+6j8qP2o/qhYqVupXaleqV+p//////////////////////////////////+XqZipmamaqZupnKmdqZ6pn6mgqaGpoqmjqfCp8anyqfOp9Kn1qfap96n4qfmp+qn7qfyp/an+qfrX+9f81/3X/tf//1H+Uv5T/v////////////9Z/v//////////////////Yf7//////////2b+Z/7//////////2z+bf7/////////////////////dv7//////////////////37+//////////////////////////////////////////+Q/pH+/////////////////////////////////////6D+AAAAAAAAAAAAAMbkx+TI5MnkyuTL5MzkzeTO5M/k0OTR5NLk0+TU5NXk1uTX5Njk2eTa5Nvk3OTd5N7k3+Tg5OHk4uTj5OTk5eTm5Ofk6OTp5Ork6+Ts5O3k7uTv5PDk8eTy5PPk9OT15Pbk9+T45Pnk+uT75Pzk/eT+5P/kAOUB5QLlA+UE5f7/BeUG5QflCOUJ5QrlC+UM5Q3lDuUP5RDlEeUS5RPlFOUV5RblF+UY5RnlGuUb5RzlHeUe5R/lIOUh5SLlI+Uk5SXlJuUn5SjlKeUq5SvlLOUt5S7lL+Uw5THlMuUz5TTlNeU25TflOOU55TrlO+U85T3lPuU/5UDlQeVC5UPlROVF5UblR+VI5UnlSuVL5UzlTeVO5U/lUOVR5VLlU+VU5VXlVuVX5VjlWeVa5VvlXOVd5V7lX+Vg5WHlYuVj5WTl/v9l5WblZ+Vo5WnlauVr5WzlbeVu5W/lcOVx5XLlc+V05XXlduV35XjleeV65XvlfOV95X7lf+WA5YHlguWD5YTlheX+//7//v/+//7//v/+//7//v/+/2bnZ+do52nnaudr5/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+sIG3n/v/+//7//v/+//7//v/+//7//v9u52/n/v/+//7//v/+//7//v/+//7//v/+//7/cOdx54blh+WI5YnliuWL5YzljeWO5Y/lkOWR5ZLlk+WU5ZXlluWX5ZjlmeWa5ZvlnOWd5Z7ln+Wg5aHlouWj5aTlpeWm5aflqOWp5arlq+Ws5a3lruWv5bDlseWy5bPltOW15bblt+W45bnluuW75bzlveW+5b/lwOXB5cLlw+XE5f7/xeXG5cflyOXJ5crly+XM5c3lzuXP5dDl0eXS5dPl1OXV5dbl1+XY5dnl2uXb5dzl3eXe5d/l4OXh5eLl4+Xk5eXl5uXn5ejl6eXq5evl7OXt5e7l7+Xw5fHl8uXz5fTl9eX25ffl+OX55frl++X85f3l/uX/5QDmAeYC5gPmBOYF5gbmB+YI5gnmCuYL5gzmDeYO5g/mEOYR5hLmE+YU5hXmFuYX5hjmGeYa5hvmHOYd5h7mH+Yg5iHmIuYj5iTm/v8l5ibmJ+Yo5inmKuYr5izmLeYu5i/mMOYx5jLmM+Y05jXmNuY35jjmOeY65jvmPOY95j7mP+ZA5kHmQuZD5kTmReb+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/cudz53Tnded253fneOd553rne+d850bmR+ZI5knmSuZL5kzmTeZO5k/mUOZR5lLmU+ZU5lXmVuZX5ljmWeZa5lvmXOZd5l7mX+Zg5mHmYuZj5mTmZeZm5mfmaOZp5mrma+Zs5m3mbuZv5nDmceZy5nPmdOZ15nbmd+Z45nnmeuZ75nzmfeZ+5n/mgOaB5oLmg+aE5v7/heaG5ofmiOaJ5ormi+aM5o3mjuaP5pDmkeaS5pPmlOaV5pbml+aY5pnmmuab5pzmneae5p/moOah5qLmo+ak5qXm/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/33nfud/54DngeeC54PnhOem5qfmqOap5qrmq+as5q3mruav5rDmseay5rPmtOa15rbmt+a45rnmuua75rzmvea+5r/mwObB5sLmw+bE5sXmxubH5sjmyebK5svmzObN5s7mz+bQ5tHm0ubT5tTm1ebW5tfm2ObZ5trm2+bc5t3m3ubf5uDm4ebi5uPm5Ob+/+Xm5ubn5ujm6ebq5uvm7Obt5u7m7+bw5vHm8ubz5vTm9eb25vfm+Ob55vrm++b85v3m/ub/5gDnAecC5wPnBOcF5/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/4XnhueH54jnieeK54vnjOf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+N547nj+eQ55HnkueT5/7//v/+//7//v/+//7//v/+//7//v/+/5Tnlef+//7//v/+//7/luf+//7/l+eY55nnmueb55znneee55/nBucH5wjnCecK5wvnDOcN5w7nD+cQ5xHnEucT5xTnFecW5xfnGOcZ5xrnG+cc5x3nHucf5yDnIeci5yPnJOcl5ybnJ+co5ynnKucr5yznLecu5y/nMOcx5zLnM+c05zXnNuc35zjnOec65zvnPOc95z7nP+dA50HnQudD50Tn/v9F50bnR+dI50nnSudL50znTedO50/nUOdR51LnU+dU51XnVudX51jnWeda51vnXOdd517nX+dg52HnYudj52TnZef+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+g56Hnouej56Tnpeem56fnqOep56rnq+es563nruf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+v57Dnseey57PntOe157bnt+e457nnuue757znvee+57/nwOfB58Lnw+fE58Xnxuf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/H5/7//v/5Af7/yefK58vnzOf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/83nzufP59Dn0efS59Pn1OfV59bn1+fY59nn2ufb59zn3efe59/n4Ofh5+Ln/v/+/+Pn/v/k5+Xn5uf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/PjDwL/Ev8i/zL/Qv9S/2L/cv+C/5L/ov+y/+//Tn9ef25/fn+Of55/rn++f85/3n/uf/5wDo/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v8B6ALoA+gE6AXoBugH6AjoCegK6AvoDOgN6A7oD+gA4AHgAuAD4ATgBeAG4AfgCOAJ4ArgC+AM4A3gDuAP4BDgEeAS4BPgFOAV4BbgF+AY4BngGuAb4BzgHeAe4B/gIOAh4CLgI+Ak4CXgJuAn4CjgKeAq4CvgLOAt4C7gL+Aw4DHgMuAz4DTgNeA24DfgOOA54DrgO+A84D3gPuA/4EDgQeBC4EPgROBF4EbgR+BI4EngSuBL4EzgTeBO4E/gUOBR4FLgU+BU4FXgVuBX4FjgWeBa4FvgXOBd4F7gX+Bg4GHgYuBj4GTgZeBm4GfgaOBp4Grga+Bs4G3gbuBv4HDgceBy4HPgdOB14Hbgd+B44HngeuB74HzgfeB+4H/ggOCB4ILgg+CE4IXghuCH4IjgieCK4IvgjOCN4I7gj+CQ4JHgkuCT4JTgleCW4JfgmOCZ4Jrgm+Cc4J3gnuCf4KDgoeCi4KPgpOCl4Kbgp+Co4KngquCr4KzgreCu4K/gsOCx4LLgs+C04LXgtuC34LjgueC64LvgvOC94L7gv+DA4MHgwuDD4MTgxeDG4MfgyODJ4Mrgy+DM4M3gzuDP4NDg0eDS4NPg1ODV4Nbg1+DY4Nng2uDb4Nzg3eDe4N/g4ODh4OLg4+Dk4OXg5uDn4Ojg6eDq4Ovg7ODt4O7g7+Dw4PHg8uDz4PTg9eD24Pfg+OD54Prg++D84P3g/uD/4ADhAeEC4QPhBOEF4QbhB+EI4QnhCuEL4QzhDeEO4Q/hEOER4RLhE+EU4RXhFuEX4RjhGeEa4RvhHOEd4R7hH+Eg4SHhIuEj4SThJeEm4SfhKOEp4SrhK+Es4S3hLuEv4TDhMeEy4TPhNOE14TbhN+E44TnhOuE74TzhPeE+4T/hQOFB4ULhQ+FE4UXhRuFH4UjhSeFK4UvhTOFN4U7hT+FQ4VHhUuFT4VThVeFW4VfhWOFZ4VrhW+Fc4V3hXuFf4WDhYeFi4WPhZOFl4WbhZ+Fo4WnhauFr4WzhbeFu4W/hcOFx4XLhc+F04XXhduF34XjheeF64XvhfOF94X7hf+GA4YHhguGD4YThheGG4YfhiOGJ4Yrhi+GM4Y3hjuGP4ZDhkeGS4ZPhlOGV4Zbhl+GY4ZnhmuGb4ZzhneGe4Z/hoOGh4aLho+Gk4aXhpuGn4ajhqeGq4avhrOGt4a7hr+Gw4bHhsuGz4bThteG24bfhuOG54brhu+G84b3hvuG/4cDhweHC4cPhxOHF4cbhx+HI4cnhyuHL4czhzeHO4c/h0OHR4dLh0+HU4dXh1uHX4djh2eHa4dvh3OHd4d7h3+Hg4eHh4uHj4eTh5eHm4efh6OHp4erh6+Hs4e3h7uHv4fDh8eHy4fPh9OH14fbh9+H44fnh+uH74fzh/eH+4f/hAOIB4gLiA+IE4gXiBuIH4gjiCeIK4gviDOIN4g7iD+IQ4hHiEuIT4hTiFeIW4hfiGOIZ4hriG+Ic4h3iHuIf4iDiIeIi4iPiJOIl4ibiJ+Io4iniKuIr4iziLeIu4i/iMOIx4jLiM+IQ6BHoEugT6BToNOI14jbiN+I44jniOuI74jziPeI+4j/iQOJB4kLiQ+JE4kXiRuJH4kjiSeJK4kviTOJN4k7iT+JQ4lHiUuJT4lTiVeJW4lfiWOJZ4lriW+Jc4l3iXuJf4mDiYeJi4mPiZOJl4mbiZ+Jo4mniauJr4mzibeJu4m/icOJx4nLic+J04nXiduJ34njieeJ64nvifOJ94n7if+KA4oHiguKD4oTiheKG4ofiiOKJ4orii+KM4o3ijuKP4pDikeKS4pPilOKV4pbil+KY4pnimuKb4pzineKe4p/ioOKh4qLio+Kk4qXipuKn4qjiqeKq4qvirOKt4q7ir+Kw4rHisuKz4rTiteK24rfiuOK54rriu+K84r3ivuK/4sDiweLC4sPixOLF4sbix+LI4sniyuLL4szizeLO4s/i0OLR4tLi0+LU4tXi1uLX4tji2eLa4tvi3OLd4t7i3+Lg4uHi4uLj4uTi5eLm4ufi6OLp4uri6+Ls4u3i7uLv4vDi8eLy4vPi9OL14vbi9+L44vni+uL74vzi/eL+4v/iAOMB4wLjA+ME4wXjBuMH4wjjCeMK4wvjDOMN4w7jD+MQ4xHjEuMT4xTjFeMW4xfjGOMZ4xrjG+Mc4x3jHuMf4yDjIeMi4yPjJOMl4ybjJ+Mo4ynjKuMr4yzjLeMu4y/jMOMx4zLjM+M04zXjNuM34zjjOeM64zvjPOM94z7jP+NA40HjQuND40TjReNG40fjSONJ40rjS+NM403jTuNP41DjUeNS41PjVONV41bjV+NY41njWuNb41zjXeNe41/jYONh42LjY+Nk42XjZuNn42jjaeNq42vjbONt427jb+Nw43HjcuNz43TjdeN243fjeON543rje+N8433jfuN/44DjgeOC44PjhOOF44bjh+OI44njiuOL44zjjeOO44/jkOOR45Ljk+OU45XjluOX45jjmeOa45vjnOOd457jn+Og46HjouOj46TjpeOm46fjqOOp46rjq+Os463jruOv47DjseOy47PjtOO147bjt+O447njuuO747zjveO+47/jwOPB48Ljw+PE48XjxuPH48jjyePK48vjzOPN487jz+PQ49Hj0uPT49Tj1ePW49fj2OPZ49rj2+Pc493j3uPf4+Dj4ePi4+Pj5OPl4+bj5+Po4+nj6uPr4+zj7ePu4+/j8OPx4/Lj8+P04/Xj9uP34/jj+eP64/vj/OP94/7j/+MA5AHkAuQD5ATkBeQG5AfkCOQJ5ArkC+QM5A3kDuQP5BDkEeQS5BPkFOQV5BbkF+QY5BnkGuQb5BzkHeQe5B/kIOQh5CLkI+Qk5CXkJuQn5CjkKeQq5CvkLOQt5C7kL+Qw5DHkMuQz5DTkNeQ25DfkOOQ55DrkO+Q85D3kPuQ/5EDkQeRC5EPkRORF5EbkR+RI5EnkSuRL5EzkTeRO5E/kUORR5FLkU+RU5FXkVuRX5FjkWeRa5FvkXORd5F7kX+Rg5GHkYuRj5GTkZeRm5GfkgS4W6BfoGOiELnM0RzSILosuHuieNRo2DjaMLpcubjkYOSbozznfOXM60Dkr6CzoTjtuPOA8py4x6DLoqi5WQF9Bri43Q7Muti63LjvosUOsQ7su3UPWRGFGTEZD6P7/I0cpR3xHjUfKLkdJekl9SYJJg0mFSYZJn0mbSbdJtklU6FXoo0yfTKBMoUx3TKJME00UTRVNFk0XTRhNGU2uTWToaORp5Grka+Rs5G3kbuRv5HDkceRy5HPkdOR15Hbkd+R45HnkeuR75HzkfeR+5H/kgOSB5ILkg+SE5IXkhuSH5IjkieSK5IvkjOSN5I7kj+SQ5JHkkuST5JTkleSW5JfkmOSZ5Jrkm+Sc5J3knuSf5KDkoeSi5KPkpOSl5Kbkp+So5KnkquSr5KzkreSu5K/ksOSx5LLks+S05LXktuS35LjkueS65LvkvOS95L7kv+TA5MHkwuTD5MTkxeRiiGSIo4iliAAAAAAAANjG/////////////////////////////////////////////////////////////1mIV4j///////////////9diFuI/v///////////////////2GIX4j///////////////////////////////9qiGiI////////////////b4htiP7///9ziHGI//////////93iHWI///////////7yHuIeYj//6KIVohniP//////////////////////////////////////////WohsiP///////////////1yIboj///////////////////////////////////////9wiP///////////////////////////////////////////////////////////////////////////////////MheiHSI//////////////rI/////////////////////////////////////////////////////////////3iI//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9YiGmI//9yiGCIdoj//3qI//98iP//fYj//36I//+hiPbIa4j/////+Mj////////////////3yP////////////+oiP/////////////////////+yP//////////////////////////+cj///////////////////////////////////XI/////////////////cj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2cb5x//////////////////////////////////////zx/TH9cf2x/fH+Mf6x/vH/Mf9x/7HQMhByELIQ8hEyEXIRshHyEjISchKyEvITMhNyE7IT8hQyFHIUshTyFTIVchWyFfIWMhZyFrIXMhdyF7IX8hgyGHIYshjyGTIZchmyGfIaMhpyGrIa8hsyG3IbshvyHDIcchyyHPIdMh1yP//W8hjiKSIZYimiNLI///////////////////////////TyP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7XGtsa3xrjGuca6xrvGvMa9xr7G/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3fIeMj///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////92yKmIqoihxqLGo8akxqXGpsanxqjGqcaqxv//////////////////////////q8asxq3GrsavxrDGscayxrPGtMb5+fj55vnv+d356Pnx+d/57Pn1+eP57vn3+eX56fny+eD56/n0+eL55/nw+d757fn2+eT56vnz+eH5+vn7+f35/PnmxtbI////////18j//9jI2cjayP//28j//9zI3cj//////////////////97I////////////////38jgyP//////////////////4cj//+LI/////+PI///kyP//5cj//////////////////+bI/////////////+fI///oyP//////////////////6cj////////qyP//68jsyP//7cj////////////////uyO/I////////////////8Mj///////////HIzcbgxuHG4sb////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nxujG6cbqxuvG7Mbtxu7G78bwxvHG8sbzxvTG9cb2xvfG+Mb5xvrG+8b8xv3G/sZAx0HHQsdDx0THRcdGx0fHSMdJx0rHS8dMx03HTsdPx1DHUcdSx1PHVMdVx1bHV8dYx1nHWsdbx1zHXcdex1/HYMdhx2LHY8dkx2XHZsdnx2jHacdqx2vHbMdtx27Hb8dwx3HHcsdzx3THdcd2x3fHeMd5x3rH///////////////////UyNXI3Mbdxv////97x3zHfcd+x6HHosejx6THpcemx6fHqMepx6rHq8esx63Hrsevx7DHsceyx7PHtMe1x7bHt8e4x7nHuse7x7zHvce+x7/HwMfBx8LHw8fEx8XHxsfHx8jHycfKx8vHzMfNx87Hz8fQx9HH0sfTx9TH1cfWx9fH2MfZx9rH28fcx93H3sffx+DH4cfix+PH5Mflx+bH58fox+nH6sfrx+zH7cfux+/H8Mfxx/LH/////////////+PG2sbbxkCIQYhCiEOIRIhGiEmISohNiE+IUIhRiFKIVIhViHnI0ch3kv//////////////////////////35b////////////////////////0jP//1Yn/////////////////////////////////////////////////////////////zZP/////////////////////////////////////35v///////////////9o+v/////aiVmP/////////////////////////////////////////////////////9uJ/////12P/////////////////////////////////////9yJ////////////////////////95b////////////////////////////////aiv//////////3Iv////////////////bl///////////////////////////////////////////////////////////U57//////////6qd///////////////////////////////////////////////////////////qm26K///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ii////////////////////////////////////////////////+iJ///qif////////////9LjP//////////////////cPv/////////////////////////////7Yn/////3ZT//+6J//////////+0ntOK/////////////////////////////9uS////////////////////////////////////////////////25T5if////////////////////96+/////////uJ///////////////////8nv/////////////////////////////////////////////8if//v4n////////+if//5on/////Rp3////////unf///////36g////////aKD//////////+mY//9oi////////////////////////////////////////////////////Y2+i9mf///////////////////riv/////Xn2qL/////////////////////////////////////1yc//+xi/////////////////////9e+///cIf///////////////////Od///////////////////QoP///////2b8///////////pkv/////////////////////smquPSPr//////////0WO//////////////////////////////////////////9vnP//XI3////////////////////////////////////////////////////////////////env///////////////++J////////////////////////////////////////////////////////////////6Zb//////////////////////////7ue///////////elP//uJ7///////+6l2X7////////1pX///////+7nP/////al///////////RY///337WJFk/v//VphNm///////////////////////////W5PHlf//55f///////////////9Zk/////////WRuJf/////ov22+//////////////////////////////////////6kleT//+mi///////////ufv//7CX/////8T9/////////////////////////////////////6Gc//////////////KR+ZH///GP////////////////RZdTmP////94/v//wftRkv///////////////62d/////////////2z9/////2v6////////////////////////////////////////////////////////////////////////////////wpv///////////////////////////////97mv///////////////////////////////////////////////////////////////////////////////////////////////////////2CL/////////////////////0uT////////////////////////////////////////////////////////////////vZr//////////7eR/////////////////////////////////////////////////////////////0uN////////////////////////////////////////////////////////////////////////tJX/////////////xf7/////8J5kjf///////////////////////2mS////////////////Z43////////////////////////////////q+//////////////////////v+///aI3////////////////////////////////////////////////////////////////////////////////////////////////////////////////rk////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0L8//////////////////////////////////////////////////////////////////////////////////////////9mkf/////////////////////N+v//////////3ZP/////Uo3//////////////////////////////////////////////////////////////////////////////////////////////////8yLbY3/////////////////////////////bo3///////////////////////////////////////////////+olv//////////////////////////pvz///////////////////////////////9vjf//////////////////////////////////cI3///////////////////////////////////////////////////////9k/P/////////////////////////////////////////////////////zjP//////////////////YJD/////////////////////dI3Dl///////////////////0Ir///////////////90kv//vpv/////////////yJz/////upz//////////////////////////////////////////////////3iN/////////////////////////////////////////////////////////////////////////////////////////////7me/////////////1qV/////7SR////////////////SIr/////////////////////////////fY3/////fYr/////wopK/f//oY3/////0Yr//////////////////////////////////////////7T8R4v//////////////////////////////////////////6ST2p7///////////////////////9Riv//////////////////////////////////////////////////////////po3////////////////Fnv//////////xPz//////////3ig//+1lP//////////////////wvxriv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+rjf//////////////////////////////////////////////////6Pr/////////////////////////////////////////////rY3/////////////////////////////////////////////////////////////////////////////////////Sfz//8GT////////////////////////////////////////b5D//7CN/////////////////////36U+pD//////////////////////////3mU/////////////////////7KN/////////////////////+78//////////////////////////////////97mf////////////////////+0jf///////////////////////////////////////////////////////7eN//////////////////+zkf//////////////////////////////////////////u426jf////////////////////+8jUSQ////////TP3/////////////////////////////////////////////////////S4fkk//////gk///////////////////U/3/////////////////////////////////////////////////////////////////////w43//7ib////////8Pv//+mT////////////////////////////////////////////////9pP/////////////xY3/////////////////////////////////////yo3/////////////zI1d/bWTYf3////////4nP///////1KS/////+ig/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Wc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Voz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Wjf//wJf////////eoP//////////0pf/////////////pfr/////////////////////////////////////o/3////////bjeqMr47///////////////////////+1kf////////////////////////////////////////////////////9J/f/////////////////////R/f//////////////////////////643/////////////xpf//879//////yQ//////////////////////////////////9Z/P/////Wlv///////////////8WX743//////////9eX//////////////CN//////////////////+mlv//////////////////v/v/////34z///ON//////////9JlP//9Y3//////////////////////////////////////////////////3KY//////////////////9rjv////////////////36//////////////////////////9Qj////////////////8ydZfz//0SM/////26ZoZT/////////////Y4///////////////////9qg/////////////////////////////1OS6f3/////tZ3//////////////////3mYaof/////XZ3//////////2ONaZZwn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2r8/////8eK///////////Xif///////////////////////////////03+////////////////////////////////////////////////////////////////////////////////3Z7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7/ryYzPr/////sJX///////9klP///////////////2+T////////////////uZT/////7JX//////////+6R/////8OY///2lf////////2PxZj//////////2aXbv7/////3ZeqjP/////Skv////9hl8uY///////////wlf//XZf//+OR///////////MmP////9plM2Y/////////////86Y///8lf////+jlGKW////////tv7//2OUR43////////////////QmP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////RmP//////////dZTg+v///////////////////////3KU////////////////////////////////////////////////////////////////1pj///////////////////////////////////////////////////////////CK/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9mY//////////////////9ajf/////////////////////////////////////bmP//////////3Zj/////////////////////qJj//////////////////22K//////////////////////////////uKrorJ+///////////XYz//////////////////////////////////////////////////+SY////////////////////////////////////////////////////////////////////////5pj/////////////////////////////6Jj//////////////////////////////////02K////////V5L//////////////////////////9+V/////6yg///////////rmP//////////7Jj//8OM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Jj///////////////////////////////////////////////+4iv///////+ee/////////////////////7yU////////////////////////////////////////0fz////////////////GnP///////////////////////////////////////////////////////////////0qN//9+nkSN/pjo/f//////////QJn//////////8mU/////////////////////////////////////////////////////////////////////////////////////////////9OU//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Gmf//////////wJD//9GU//////////////////////////////////9Ojf////9zlf//////////////////////////////////////////wpP///////////////////////////////////////////////////////////////////////////////////////9Imf////////////////////////////////////////////9Lmf////////////9Vjv//////////Tpn//////////////////////////////o7/////////////////////////////////////////////X43//1mO////////////////////////7JTvlP////////////////////////////////////////////9gjP//////////////////////////////////////////////////////////////////////////dI///////////////////////////////////////////////////////////////////////////////////1WZ////////////////////////RJX/////////////////////////////y4z///////9Wmf////////////////////////////////////////////9Zmf//////////////////W5n//////////////////////////////////8SM////////////////////////////////////////////////Rfr///////+3kP////9Dl///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zZX////////////////Jl1D9uY7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Glf//////////////////////////////////////////////////////////////////////////////////////////////////////////Z5n/////44z//////////////////////////////////////////////////////////////////////////////////7mK/////////////////I3/////////////////////////////////////////////////////////////dor/////////////UZ3//////////////////////////////////3OZ/////0CH//9PnXqZZJX//////////////////////////////////////////6GZ/////////////////////////////////////////////6WZ//////////////////+nmf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7Y7/////////////////////////////////////////////////////rZn//37I//////////////////////////////////9ulHCP///Q+v//////////////////////////////////s5n///////////////9ToP////////////9ejf////9clv/////gjP//ev3//////////////////////pf/////////////////////////////////////vZJdjf2X//////////9kj///////////9/xilc2XZJ7//////////////////0ySyY68mf//////////pZ3//1SP//////////////////////////98j///////////VY3//6KO////////////////////////eo////////////////+ul///////////yJb/////5Iz//////////8OZ///WkP//vpz///////92j///////////////////////////////////cJRL+//////K/f/////vjP///////8eO//////////9Ujfmg//////////////////+pj/////9Rjf///////////////////////8eZRIf////////////////////////////////XkP////////////////////////////////////////////////////////////////////////////////////9Dh////////////////////////////////0eH/////////////////////////////////////////////////////////////////////////////////////////////////////1iH/////////////////////////////////////9+eWY1Ch//////Omf////////////////////+6j//////////////rj///z5n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8KP////////////////////////////////////////////////////////////////////////////////yZL/////////////3Jf/////////////////////////////////////////////////////////////////////////////////////XYf//////////////////////////////////////////////////////////////////0WN//////////////////////////////////////////////////+zlXmc////////////////////////////////////////////////////////////////////////////////////////////////spX//0yN24///////////+Ob/////////////////////////////////////////////////////////////////////////////0yH//////////////////////////////////9Nh////////////////////////3qeV4f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7pv////////////////////////////////////////////////////////////////////////emf//////////////////////////////////+vr//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1KK/////////////////////////////////////////////////////////////+GZ////////////////Z4q1i///////////////////////////rIr//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+mZ///////////////////////////////////////////////////////////////////////////////////////////////////K+///////////////////////////////////////////////////3pf/////////////////////////////////////////////////////////////////////////////////////////////////////////////0ZX/////////////////////////////////////////////9ZlK/P///////////////////////////////////////////////////////////////////////////////////////6mb////////////////////////////////3Pv///////////////////////////////////////9W/v////////////+knv///////////////0md25X//////////////////////////8WJ////////////////////////////////+Jn///////////////9klv//////////VZD/////1Jb//////////////////3yX////////////////TZb//+GX////////////////SJr/////////////////////////////SZr//33+/////////////////////////////////////////////6qQ//////////9Qmv//////////////////R5P//////////////////////////////////////////////////////////9iO/////////////////////////////////////////////////////////////8mQ/////////////1Wa//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8kP////////////9Ymv//uIvVkP//////////////////////////////////QZb///////////////9amv//////////////////////////////////////////XJr////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Cl///////////////////////////////////XIf///////////////////////////////////////+7iv///////6qb////////////////////////////////////////////////////////////////9ZD///////////////////////////////////////////////9gmv////////////////////////////////////////////////////////////////////9FkViM/////////////////////2Oa////////////////SYz/////////////////////////////tov//////////////////////////8/8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9rlm6a//9Pkf////////////////////9Gl//////moP///////////////////////////////////////9eS//91lv/////Uk/////+7kXmW/////////////3Ca//////////////////////////////////////////////////////////////////////////////////94ls2R//9KnG+g/////2qg////////////////X5H/////////////////////////////////////////////////////////////////////////////////////////////QYf/////////////////////pZ//////uon//0+H////////////////Tof///////////////////////////////////////9Vh////////82e/////////////////////////////////////////////3ma////////////////////////8oz///////9Xjf//zp3////////SjP///////1mH////////////////////////////////////////////////////////////////////////////////c53///////////////////////+5lv//vJb////////////////RnP///////////////////////////////////////////////////////7eJ///////////////////////////////////////////////////unkmH//////////////////////////9D+1uH///Jnv///////////////9P7/////////////////////////////////////////////////////////////////////////////////////////////66R/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1iNRof/////////////////////////////////////////////Vo3//////////////////3id//////////////////////////97nbOe////////////////////////////////////////////////////////sp7//9ad//////////9Pmf/////Oif///////8CL///En///1Iv/////coz///////////////+/xvmL/////////////0aJ///Axv///////////////////////+X6//////////////////////////////////////////97yMaL/////////////////////////////////////1ec///////////////////////////////////7mv//////////////////0InPif///////8HG///Rif//4on/////////////////////////////////////fpL//7qd/////////////8LG/////2+M///////////////////////////////////////////////////4+////////8eLa5L/////0on/////////////////////////////////////z5////////////////////////////////////////////////////////////////////////+pndOJ/////+KZ////////////////////////Z5Kkkv//////////////////////////////////////////////////c4z/////Ton//////////////////////////////////0+JeJL/////////////////////tpH//////////9SJ///Sn/////////////////////+nkv////+ilf////////////9ukv/////////////////////////////////////////////////////////////////////////////////////////////////////qlv////////////////////////////////////////////////////////////9vkv////////////////////////////////////////////////////////////+jkv////////////9Qif////9X+v//////////Zpj////////4jP/////////////////////Wif//////////////////////////spj///////+rkv/////////////////////////////////////////////////////////////elqyS//////////////////////////9wjP//bp/////////////////yjv///////2yf2In//////////1n6//////////////////////////////////////////////////////////////////////////////////////////////////+okv////////////9jkf///////////////0CM/////////////////////////////////////////////////////////////////////3Of//+tkv//////////////////////////////////6Zv/////////////qZL/////////////////////////////////////////////////////qpL////////////////Zif//////////////////Vv3///////////////////////////////////////////////////////+on////////////////////////////////////////////////////////3GM//////////////////////////////////////////+hkv/////jkP////////////////////+moP////////////+rlP//cvz////////////////////////////////////////////////El///////////////////rpJn+v////////////////////////////+ikmn6//////////////////////////////////////////////////////////////////////////9okv///////////////////////////////////////////////////////////////////////////////////////////////////////////////1GJ////////////////////////b/r///////////////////////9x+v///////////////////////1KJ//////////9alP/////////////////////Dxv///////92J//+iyP//////////////////////////////////xMb///////9Snv//U4n//////////////////////////1WeupL/////xcb/////W4z///////99+qj6aJpH+v////9++v//////////////////////////u5L///////+2/f//ovr/////////////o/r//6T6tJum+v//////////////////34n////////b/f////+p+v//VIn/////////////////////q/r///////////////96/P//////////////////4In//0+ffcj/////4Yn/////////////sPr//////////////////////////////////////////////////82f56D/////////////sfqmif////////////////////////////////qe//////////////////+y+v////////////////////////////////////////////////////////////////////+0+v//xJL///////////////9vn///////////////////sIv//////////////////////////6yf/////////////+OJ////////////////////////////////////////////////////////05vkif///////7X6/////////////9Wf////////////////VYn/////xZL///////9Wif///////////////////////////////7P6////////tvr/////////////////////////////t/r////////////////cnv///////8T7cZ//////////////////////////////////////uvrHkv/////////////////////////////////////////////////////////////Gxkya//////////////////////////////////////////////////////////////////////////////////////////9ojP/////lif//////////fZ//////////////qaDE+v//////////x8b/////V4n///////////////+q+v////////////////////////////9Yif/////////////////////////////////////ji///YYv///////////Ga/////7ee///Ixv///////9H6////////////////0vr/////////////////////up7U+v/////////////////////////////////////////////////////Z+v///////////////////////////////9v6///gnP////////f7///6++eJeqDc+v/////d+v//6Yn/////////////ycb//////////////////////////+L664n/////4/r////////////////IkP///////9qSWYn1nP////////////9aief6op//////////////6vr////////////////////////////////////////////////////////t+q2P////////////////Wfvv+u+W///snf///////8qd////////////////bf3//+yJ/////////////////////////////0T7/////+Kd//91jP//////////////////////////////////////////////////////////wJ7//1ae////////////////////////////////////////////////////////////////////////eZ/Hmv/////0+v////////////////////////////////////////////////////////////+hmP////////////////////////j6////////8IlHnv/////3nf//////////05///8qa///////////xifn6//////////////////////////////////9ajv//8on///////////OJ/////////////////////////////////////////////12SUYvgkv/////0if///////////////////////9Sf/////////////////////3mK//////////////////////////////WJp5f//////////////////////////7qT/////////////1ie///////////2if////////////9Xnv//////////94n//0GK//////iJ//////H6///////////////////////////////////////////////////6if//////////////////Qvv//7/6////////////////////////o/v////////////////////////3+v////////////////////////////9Onv//3JT/////////////2pX4nWqf/////////////7eK////////////////////////////////Rvv///////////////////////9Giv///////////////////////////////////////////////////////////////0f7////////////////SJH////////ekv//////////U4v2nf//2pv//////////36d/////////////////////////////////////////////////////////Ynkmf////////////9Dnv/////////////////////////////pnf//Uo/////////1nfCd////////55n/////////////vYvvnf////////////////////////////+3n////////////////////////////////9Cd///rn6mNz53hmP//5Z3//////////////////8id////////////////////////T/v/////////////////////////////653///////////////////////9U+///Vfuimv//1or//1+a//////////////////////We////////t4/////////////////////////////////////////////////////////////////Smmqe6J7///////////////////////////////+/i8KRYp3///////////////9gkv////////////////////////////9eksGR///Fiv////+jl///////////////////////////bIv//36N//////////////////9UnP////////////+9nf//////////////////////////////////////////////////////////xZz/////////////////////////////W4n//////////////////////////1z7//9b+///V/v///////////////////////9lh///x5ha+//////////////////////////////////////////////////////unP//////////////////4pL/////////////////////////////////////////////////////p5T//////////////////////////8yM///Um/////9k+3b7/////2D7///////////////////////////////////lmf/////Cmv////////uR////////c6D//////////////////3Kf////////////////////////////////////////////////zJ////////+lmOiS/////////////////////7yb///zlv/////nkv////9n/P////////////////////////////99i///////////9Jv/////////////957/////wZ7///////////////////////9vmf////////////////GW/////0GO/////////////0qV////////5pf/////////////////////////////////////9Zb/////////////5pJCn///////////////////Z/v/////////////////////qZn/////////////////////////////////////5vpp+//////////////////////////////////////ll////////////////////////////////////////32W////////bPv//////////////////////////////////////////////////6KZ/////////////7ua////////ZZr/////TpT/////////////////////////////////////////////////////bvv/////35n////////////////////////jmP////9Ukv////////////97lq+K////////////////////////////////////////////////////////////////////////////////d4z///////////////+vi72e////////////////////////////////5p7/////b/v/////////////4Y7//////////32bfpz//////////9n5////////////////////////////////////////6pL//////////3iM/////////////////////////////3L7////////cfv///////////////////////////////////////9cif//8Jjylv//////////////////dPvBi///XYneif//Xon/////ysb///////////////9C/v////////////////////////////9oh///e/v///////////////////////////////////////////////9fif//YIn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Nm////////////////////////////////////////9Od//////////////////////////////////////////////////9MmP//////////////////////////Upf/////////////w5X//////////7ab////////////////////////////////uZr///////+zl////////////////3Sf8ZL////////////////6jP//////////35f//////////6b7////////////////////////////////////////q/v/////////////////////////////////////////////d5j///////9UmMWV//////////////////9VnbL7fpX/////////////////////Qpf//+aU///////////1kv//////////////////xYz////////////////9kv////+i+/////9RnP/////plFyY8JL//////////////////////////////////////////0yU//////////////////9rkf////////////////////////////////////94i///////////4pT//////////////////0+Y//+1+///////////cZL/////ZZP/////W5j/////UJj//////////////////7yX///////////zkv////9Ak02Y////////cpX//+/9/////////////////////8H9//////////+6+//////rkv///////////////3P8t5f/////b4f///////////////+0+/////////////////////////////////////////////////////////////+nkP//////////////////////////QZf0kv//cof//7z7//////////////////////////////////////////93lf/////////////////////////////inv//eI///////////////////9z5////////cpa1nv///////0uW////////rIz////////////////////////6oP////////////////////////////91lf///////////////////////////////////////////////////////9qQ/////2eT//+k/v///////9+Q//////////9Uk///////////////////////////////////////////////////////////YYn//7SL///////////Anf///////////////0iO///F+//////////////H+////////8vG//95+v//////////////////////////////////Z57/////////////2Yz////////////////S+2KJY4n//////////////////////////338////////////////////////////////c4f/////////////////////////////a5//////////////////////////////////////////////zPv//67+////////bYf/////////////////////////////////////////////////////////////0fv/////////////////////////////dfvU+///////////////////////////////////1vvY+///////////////////XYv//0yT///imv/////Ji///////////////////////////////////////////////////////////////////////////////////////////////////2/vJn/////////////////////9En///////////////////////////7Zj//////////////////////////////////////////////////////////////////+mM////////////////////////////////3fv///////////////////////////////////////////////////KNZIn///L9//9Nk////////////////////////////////////////////////////////////////////////+f7////////////////8qBomP////////////////////////////////////9Yn////////+aM////////////////////////////////////////c43////////e+//////////////f+/////////////9IjP///////////////3SH4/v//////////6iN/////+T7//////////////////////////////////////////////////91nP////94mP////////////////////////////////////9gjf//////////////////5fv//2GN//////////////////////////////////9ijaGg////////QJz/////////////////////////////////////////////////////rZj////////qnv///////+yM/////9SM////////////////////////65z/////////////4Pv/////UZ////////////////////////////////////////////////////////9ljf////////////////Gc//////////////////////////9Y/P////9mjf//////////////////VJb////////////////////////////////////////////////////////o+////////8zG///////////////////////////////////////////////////////////////////On/z7///kmv///////////////3Wf////////////////////////////////////////////////////////////////////////8fv//////////////////////////////////////////////////2mN/////////////0+T////////////////////////////////////////////////////////TpP////////////////////////////////////////////////////////////////////////0+///////////zsb////////D+/////9lif////////////////////////////96jP///////////////3uM/////////////////////////////////////////////////////////////////////////////////////////////2qN////////////////////////////////////////U5P/////+53//////////////////////////////////////////////////////////////////////////////////////////////fv///////9ZkED8//9B/EP8YZNG/GKT//////////////////////////////////////////////////////////9rjf////////////////////////////////////////////////////9M/P6M/////////////////////////////////////////////7iV/////9DGyov//////////////////////////3qY///////////Rxv//Ufz/////////////////////////////////////VPz/////////////////////r/r//////////////////2yN/////////////////////////////////////////////////////////////////////////////////////2H6/////1f8////////////////////////cJv/////////////////////UaD//////////////////3yM///Li///////////////////////////////////////////////////////////bpP////////V/Kn8//////////////////////////////////9h/P///////////////////////2aJ/////////////////////////////////////8v6///////////////////a+f//////////////////////////////////////////////////////////////////////////////////////////epP//+Cg////////////////a5P//////////////////////////////////////////////////////////////////////////////////2v8/////////////9yg/////2iU/////////////////////////////238/////////////////////////////////////////////////////////////////////////////////////////////3GN////////////////ZP3//////////7qZ////////0JphmuWg//////////////////////////////////////////////////9boKyW//////////9Al/////////////////////////////////Ge/////////////////////02M//////////////////////////////////9+n////////////////////////////////3KN//////////92/P//////////////////////////////////qZb/////////////////////bqD/////qvz////////N+////////3T8//////////////////////////90oP//////////////////////////////////caD///////95/P////////////98/P//////////////////////////////////UJz/////eZN4k//////doP////////////////////////////////////////////////////////////////////91jf//do3///////////////90k/////////////////////////////////////93jaX8/////6L8////////////////w5D//////////////////3mgeY3///////////////////////////yL//92oP///////////////////////////////////////////////82L////////////////////////////////////////////////////////////////////////Wp////////////////////////////////////////////////////////////////////Sf/////7qf//////////////////////////96jf///////////////////////////////0We////////////////sJP//3Wg//////////////////////////////////////////////////////////////////////////9Gm///rvz///////////////////////////////////////+w/P///////////////////////1H6/////////////3uNfI3////////////////////////////////////////////////////////Wnv////+sk////////1uf//+pk/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////98oP//////////////////svz////////////////////////////////Biv////////////+0n/////////////////////////////+s/P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0ye///////////////////Fj////////////////////////////////////////62T////////////////////////////////w53///////+ijf///////0qd/////////////////////////////////////////////7b8/////6ONS57//02epI3////////////////////////////////////////////////////////////////////////////////////////////////////////////////9iv////////////+1/P//w/yyk////////////////////////////////////////////////////////////////////////////////6WN//////////////////////////////////////////////////////////+hk///////////////////////////xor//////////////////////////////////////////1uK////////TYn/////////////////////////////////////////////////////////////////////////////1P7//////////3iK//+rk////////////////////////6eN////////////////////////////////////////////////RZ////////////////////////9Wiv///////7/8////////wPz//+aO/////6SKQ4n////////////////zk////////////////////////////////6v8op7//////////////////////////////////////////8ed////////0sbOi//////////////////////////////////////////////////////////////F/P/////////////////////////////////////////////L/P////////////////////////////+zk///yvz/////////////////////////////////////////////////////////////yfysjf//xvtnif//foz/////////////////////////////////////////////////////////////////////////////////////////////////////////////zfz/////////////////////85z////////////////////////////////////////////////Q/P////+7lf/////////////////////////////T/P/////U/P///////////////////////////////////////////////////////////////////////66N1/z/////////////25P//////////2P+////////////////////////////////1ZP//////////////////////////////////////////////////9r8////////cZv/////3fz//2SH/////////////6+N////////8vr/////////////////////////////2JP////////f/P///////9OT///////////////////h/P///////////////////////3aO//////////////////9i/P/////////////////////Rk////////7GN//////////////////9ZmP///////////////////////1L7/////////////////////1P7/////////////037/////7+c/////////////////////3Kb//////////////////////////////////9Q+76T////////////////////////////////////////////////////////////////24z////////////////////////xnev8////////////////////////u6D//36b//////////////////+zjf////9SjP//////////6Jr////////////////cjv//////////////////////////////////////////+Zz//////////////////////////////////1D6///////////////////////////////////////////////////////////////////////////nmPP8///////////y/P///////8qM/////3WH/////////////////////////////////////////////////////////////////////////////////////+WT//////////////////////////////////////////9Zmv///////7WN//////////////////9N/f//////////Xv3//////////////////////////////////32P//////////////////////////////////////////////////////////9Hlfb8////////////////////////////////////////////////////////////////////////////////////////UJL//////////2iJto37/H2g/Jhpif////////////////////9P/v////9Wkv//////////////////////////yfr/////6JP////////4/P//////////////////////////////////////////////////45yp/f///////////////0T8/////////////////////0CW/////7iN//////////////////////////9Km7mP/////////////////vz//////////////////2qJ////////////////////////////////////////////////////////////////////////////////uY3///////9+kf////////////////////////////////////////ST//////////////////////////////////98+////////////////////////////////////////+eT/////++X////////Sv7/////////////Rf3//6WW///////////g/kj9R/3y/mr+/////////////72N/////////////////////////////////////6Gbooy3mvyO//////////////////////////////////////////+hn////////////////////////1H9//////////////////+t+v//////////vo3/////pIn/////////////////////////////////////2Zr/////////////////////////////Tv3/////wI3/////8Jf//////////////////////////7STRP3///////////////////////////////+nn///////////wo3//////////7aZ//////////////////////////////////9S/f///////////////8GN/////0aO////////////////////////////////////////0aD//////////////////////////////////8qf///////////////////////////////////////////Pkv////////ScxI3//////////////////////////0H9//////////////////9Mm////////////////////////////////////////1f97/zenP//////////////////Qv1smP//////////////////////////////////+Zf//1iV/////////////////////////////////////16Ye/7NlP/////////////uk////////////////////////////////////////6OM//9a/f////////////////WT/////////////++T6o7///////9bj/////////////////////////////9ejP//xo3/////////////////////////////yI3/////x43/////////////95P//////////////////8mN///////////////////y+///////////cJb////////////////////////Ljf///////1z9////////////////////////ZY/////////Njf////////////+onfmU/////86N/////////////////////+qT////////////////////////X/3wk7af////////////////////////z43///////9jl//////////////////////////////////////////////////////////////////////////////QjfGT/////////////////////////////////////////////////////////////2L9/////////////////////////////////////////////////////////////2X9///////////////////////////////////////////////////////////////////////////bn///////////+JP/////////////////////////////////////////////////////////////94v//////////2b9/////////////8+L////////////////0Y3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Sjf////////////////////////////////////////////////////////////////////9x/f//////////b/3/////////////////////043////////////////////////////////////////nn72Q/////////////////////////////////////////////////////9Cf////////0Iv//3L9//+unNGL/////9uK/////////////////////////////+T6/////////////////////////////////////86V//92/f//////////////////////////////////////////////////Yvv////////////////Ujf///////3j9/////////////+OO//////////////////////////////////////////////////////////////////////////////////92kP/////GmP//////////////////1Y3//////////9GX/////7ae////////////////////////////////////////////////////////////////x/r/////QqD//////////////////////////////////////////3OY///////////////////////////8n/////////////////////////////////////////////////////+ljNeN//////uS2I3/////////////////////////////////////////////////////////////////////////////T5T//9mN////////////////////////////////////////////////////////////////////////////////////////////////////////a4n/////////////////////zpf////////z+q79/////////////////////////////////////////////////////6/7t5L/////////////////////////////////////2o3//////////////////////////////////1qc////////////////rf3//////////////////////////////////9yNRJT/////////////////////////////3Y3//////////////////9ag/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0GM1Zf//0qU/////////////02U///////////Ll//////////////ejf/////fjf//////////////////////////////////////////4I35/v///////////////////////////////////////////////////////////////////////////////////////////////8D9+fz////////////////djP//fvv//////////////////////////////////////////////////////////////////////////7OS/////////////6/9////////////////////////4Y3//////////9OV/////////////////////////////////////8GJ/////////////////////////////////////////////////////////////////////2j9/////7ec/////+ON/////////////////////////////////////////////////////////////////////////////8D65Y1k+v//R4n//////////+SN/////////////+eN6I3//////////////////////////////////////////8f9sP3///////////////9FlNaX////////////////////////xvxEmP///////////////////////////////+mN////////////////////////////////////////6o3/////////////////////UP7////////////////M/f////////////////////////////////////////////+nnf/////////////N/f/////////////////////////////////////////////////////////////P/f//////////0pX//////////////////+2N/////////////////////7r8////////////////////////////////////////////////xf3//9L9////////////////////////////////////////////////////////3Jz/////////////z5X/////7o3/////////////////////////////////////////////////////1P3/////////////7Jbrlv///////////////////////////////////////////////////////////////////////7aQ///D/auY/////////////////////////////////////////////////////////////////////+6W///////////////////////////////////0jf///////////////////////////////////////////////////////////////////////////////+D9//9njP/////2jf////////eN///////////////////6j///////////////////////////0Jf//////////9KL//////iN/////////////9mQ//9HjP//8Pr//////////+H9+Y3//+P9///////////////////6jf//Y/v///////+mkP//////////////////////////////////////////cJn/////65H//3CXb5ji/f/////////////////////////////////////////////ymP///Jpsif39/////16Z////////vZX//////////////////+T9////////5pH//////////+X95v3/////////////////////5/3/////////////////////////////////////////////VJT///////+4mf/////////////////////pl0aT/////////////////////////////////////////////////////////////2OY/////////////////////////////7yV///t/ff9////////////////cJj2lqmO/////////////1GU/////0OO//9ai///////////7v3///////////D9///////////0/f//9Zv/////////////7oz//////////////////////////////////////////////////36X/////////////9Wb///Dmv//yJfboNCR/////+Sf///dj///6ZH////////////////////////gmP///////8qS//9XmP////9RjP//////////6/3//0mb////////////////////////dp2vnv///////////////////////8yc////////////////6v3/////8Y3/////+/3//////////////////////////////////////////////////////////1OO/////////////////////////////8/6///////////////////////////////////5lv///////////////////////7+YSZ6njP/////////////////////Km////////////v3ckv////////////9B/syR4pH///////////////////////////////9E/l+H/////////////9OL/////0f+/////////////////////////////////////////////0j+////////////////////////////////////////VZT//////////0v+//9M/v//////////v43///////////////////////94nv///////////////////////////////////////////////////////////////////////1H+//////////9WlP//////////////////YZ3//////////1eU//////////////////////////9mmf//////////////////////////////////1Yv//////////2mg/////////////////////////////////////////////////////////////////////7SY/////////////////////////////////////////////////////0mgTKD//2We/////////////////////////////7WY/////////////////////////////////////////////////////////////1j+//91mVP+ZaD//1n+////////////////////////t5i4mP//////////////////upj///////////////+7mP///////////////7yf////////////////////////////////////////////////////////////////////////////////////////SqD/////x57/////////////////////////////////////////////////////////////qYz/////rpj/////////////////////1pL////////h+v//1JH/////////////////////3vr/////W/7///////////////////////////////////////9TjP////////////////////////////////////9e/v//////////1/ta/sWU///////////K+v/////////////////////////////BmFyX//90/v//c5f/////////////////////Rvr///////9kl////////2j+//9Olv//ZZdajP////////////////////////////////////+hifqV///Ukmn+//9F+///yJj/////75D//8mYypj/////////////////////////////////////////////////////////////bZS3lGz+/////2uU/////////////////JL//+uV//9z/m6XX/7///////////////////////+9/f/////Vkv///////////////7n+/////3H+eIf///////+7+/////96lP/////7lXf+//////////////////95/v//df7///////9dlP//////////////////fP7///////////////////////9Ek6aO/////////////////////////////9OS//+4lP//eYf///////////////9x/P///////////////////////////////////////16X//////////+tjP////////////////////////////////////+n/v///////2qU////////45P/////z5j//////////////////////////////////////////////////9mg/////////////////////7+gTaC4oP/////////////OoLeg/////////////////////6n+///////////////////////////Dif//////////q/7////////////////////////////////////////////////////////0nW2J/////////////3uc////////////////0pj///////+pn////////7L+/////7H+////////2Zf//8Sg//92lP//////////////////////////eJn///////////////+z/v/////////////TmLT+////////1Jj//////////////////7mf/////////////////////3GU////////////////////////1Zi4/v///////9TG/////////////////////////////7r+////////////////////////////////////////////////XJ7/////u/7/////////////////////////////////////RKD//////////9eY///////////////////////////////////////////////////YmLz+///////////+n////////////////////////////////////////////////////////////////////////////////////////////////73+/////////////////////////////////////92d///////////hnv///////////////////////////////9qY352//v//vv7/////657/////////////////////////////////////////////WZ5coP//////////////////wP7///////93lNyY///B/v///////96Y////////////////////////////////////////////////////////w/7//////////////////////////////////////////8j+////////yf7/////////////////////////////////////////////yv7/////////////////////////////////////////////////////y/7////////////////////////Cn/////9rjMSY//+wlLGU/////////////////////////////////////9H+/////////////8Gg///S/v//////////zaD/////////////////////////////////////////////////////0/7/////5Zj/////////////////////////////////////////////////////1v7//////////////////////////////////////////////////////////////////+SR///////////Hj66U//9PirKU/////////////////////////////////////////////////////////////9SP///////////qmP//////////////////////////////////////////////////////////2P7////////////////////////gnf//////////7pj//////////8SV///o/P/////////////vmP////////////////////////////////////////////9ujP/////////////////////Y+v//////////////////////////////////3P7///////////////////////+uoEyd////////////////////////////////////////8Zj////////zmP//wZT/////////////////////////////////////////////////////////////////////9Zj/////T/rilv//////////UJT//6KW//////aY////////5Zb/////////////95j//0ag45b/////////////////////////////////////////////+Jj//////////////////////////////////////////////////+Se////////////////1vn////////////////DlP//////////wpT////////////////////////////////////////////////////////////////////////////////////////h/v//6f7//////////+SW//+siduW///////////////////////////////////i/v//////////////////////////xJTj/v///////+f++5//////////////////////////////WYz////////////////////////Jk///6JRW+////////8WQqKD////////////////////////////////////////////////////////////////////////////////////////////////////////l/v////////2Y+5jo/v//v47//////////9iL9/7///////////////////////////////////////////////////////////////////////9oj8aU/////////////////////+qd/////////////////////////////////////2n8////////////////////////////////2pz///P+/////3Kc//////D+yYn///////////////////////9Bmf//////////////////Qpn////////1/v//15H/////////////zJT////////4/v////////////////////////////////////////////////////////////////////+ol////P7////////ejP//v/3///////////////////7+///////////////////////////////////Rlv/////////////////////////////////////VlP/////QlESZ/////////////////////////////////////////////////////////////////////////////////////////////2OM/////7Og////////////////////////////////z5T////////6n///////////5ZH//2qc////////SY7///////////////////////////////////////////////////////////////////////9Mjv////////////////////////////////////////////////////////////9Njv////////////9zmv//////////////////////////////////R5n//7GM//////////////////////////////////////////////////////////////////////////9Qjv//////////////////////////T45Jmf////////////9RjlKO//////////+ymqWJ/////////////0yZ////////+J////////////////9Wjk2ZypFXjv//////////4ZT//////////0eQ///Yj1iO///////////////////////////////////////////////////rlFyOU5X//////////////////+Wf//////////////////////////9Wn///////////////////T5X//16O////////////////////////////////////////apn/////////////////////ZJzZnP////////////////////////////////////////////9djv///////////////////////////////1CZ////////////////////////UZn/////Yo7/////////////////////////////Upn//////////////////////////////////////////////////////////2iO////////////////////////////////////////YY5Zn/////////////////////////////////////+zi///////////////////////////////////////////////////////////////////////////XZ9mjv///////////////////////////////////////////////////////////////////////7KM//////////////////////////////////9ujv//ZJ9Tmf////+4+v////////////9Umf//////////////////////////////////////////////////////////////////cI7///////////////////////////////9hn///co7///////////////////////////////9roP//////////QJ/////////////////tlP///////////////////////////////////////+6U/////72f////////e47///////////////9XmfeU//9fn///////////c47/////Yp////////////////////aU//////////////////////////////////9Ymf///////////////////////3WO2/n//////////3KQ///4lP///////////////////////1qZ////////////////////////sKCzjP///////3mO//94jv////////OU/////////////6+Y////////////////sqD/////////////////////////////eo7///////////////9cmf////////////98jv//fY7////////Zi/////+iidee////////////////////////////////////////////////////////////////////////////////////////////////////////tqD///////////////////////////////9Cnv////+kjv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////p47//3aM////////////////////////Z4f//0KV////////////////////////////////fZj///////9Vl/////+ojv//////////////////qo7//////////////////////////////////////////////////////////////////6OJ//9gmWKZ//////yUYZn///////////////////qU//////////////////+ujrKO////////////////////////////////////////sI7//////////////////2OZqpf7lP//////////////////////////////////////////////////////////////////////////////////u47////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cjP///////////////////////3aY//+hjv//////////tIz//7eO//////////////////////////////////////////+mnf////////////////////////////////////+wnv///////7iO////////////////////////////////cJ3//////////26J//////////////////9vif//////////////////////////////////cIn///////////////////////////////9xif//////////////////con///////////////////////////////////////9ziXSJ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////dYn/////////////////////vI69jv////////////++jv//0Z3///////////2U////////14vai//////////////////////////////////////////////////////////////////////////////ioP///////////////+mf//////////////////////////////////////////////////////////+o/f///////+eK////////wo7/////////////////////////////xI7//////////////////////////2SZ/////////////2WZ//////////////////////////////////////////////////////////////////////////////////////////////////////////9Olf///////////////////////7OY////////////////////////////////////////////////y47fi//////////////Ojv/////////////////////////////////////////////////////Pjv////9omf//////////aZn/////////////////////a5nRjv//bJn////////////////////////UjtWO/////////////////////////////////////////////////////////////22Z////////////////vqD/////////////1o68oLWg/////7Sg///////////////////////////////////////////////////////////////////gi////////////////////////////////////////////////////////////////////////////////7WJ///////////////////djv////////////////////////////////////9dnnGZ//////////+uieid/////////////////////2WV//////////////////////////////////////////////////////////////////////////////////////////9ymf////9ci////////////////////////7GJwKD////////fjv//ZpX/////dJn//3aZ////////d5n//3mZ/////9qd/////+CO////////////////////////////////////////XJP//////////////////+ad//9fi/////9jlf//////////////////////////Z5X/////////////453//////////////////////////////////3yZ/////32Zfpn/////////////////////////////////////////////+4xbi/////////////////////////////////////+jmf//////////////////pJn/////////////////////////////////////ppn/////////////////////////////////////////////qJn//////////76K/////////////////////////////2Ge//////////////////////////+qmf///////////////8ig////////////////////////////////////////////////////////////////////////q5n//////////////////////////8T+////////////////wpjojv//uqD/////////////////////////////d/3/////7o7///////+/nv//////////////////////////////////////////won///////////////////////////////////////////////////////+smf//////////////////////////////////a5X/////bJX//////////////////////////////////////////6+Z/////0qZdolIj//////////////////////////////u+////////////////////////////////////////////////////////////////////////////////66Z////////+47/////////////////////////////////////////////////////0Iz//////////1KL/////////////7CZ//////////93iUGP//////////////////+xmf///////////////////////0mP/////////////////////////////036/////////////////////+SdtYz////////p+1Sb//+ymWie////////////////////////////////So///0KP/////1GP//////////////////////////////////////////////////////////////////////////////////9GmP//////////////////////////////////////////////////////////////////tJn///////////////////////////WOVf3/////zZz/////////////////////eIn///////////////////////////////////////////////////////9Tj/////////////////////////////9vj///////////////////////////Y47///////////////////////////////////////9Wj////////////////////////////////3b+///////////Gn/////////////////////////////////////+s+v////////////9Yj///////////////////////////////////////////////////////////////////SJi3mf////////////////////////////////////9llv//bPr//+ed////////Yp7////////MlmeO/////3X8//9+mP//////////////////uf3////////////////////////////////////////8l/////////////////////////mY//9mj/////////////////////9ulf//RZL/////YI/////////Rnv/////////////N/v//uZn///////////////////////////////9ij0yX////////////////////////////////x5Fflf//////////////////u5n///////////////////////9tjnGP/////8uU////////////////////////////////sZX////////////////////////ymv///////////////////////////////////////8OWvZn////////////////////////////////////////////////////////////////////////PoP///////22P/////76Z9I7//3KP5JX///////////////////////////////////////////////+/mUKS//+l+///////////////////////////wJn//////////////////////////////////////////////////////////////////////////////////////////7T9d4/////////Bmf///////////////////////7n6/////////////////////0CPRPr/////////////wpn//////////////////1yP//////////+9jP///////////////////////////////////////8SZxZn/////e4///////////////////////////////////////////////////////////////////////////////////3aH////////toz/////////////////////////////////////////////////////////////////////////////////////////////////////////////o4//////////////////////////////////////////////////////zoz////////////////////////Gmf//////////////////////////////////zZb//////////////////////////////////8eWpY///////////////////////////7v6//9hjHCV////////aJP//36P/////////////////////////////////////////////6qP////////////////UKD////////////////////////////////////////////////TkP////9Wlf////////////////////////////////////////////////////////////////////////////////////////////////////+4j//////////////Imf////////////////////////////+vj///////////////////////////////////////////////////yZn//////////////////////////////////3mV////////////////////////////////SZ///////////8qZ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////y5nVnbCP/////////////////////////////3r6/////////////////////1+e///////////Nmcmg////////////////////////////////////////////////////////////////25r////////GoP//////////////////tI/////////////////////////////////////////XoP///////////////////////////////8eg//////////////////9DoP///////7WP//////////////////////////////////////////////////+yj////////////////2GgXp7//////////////////////////7aP/////////////////////+if/////////////////////////////////////7Kc/////////////3yV/////////////////////////////////////////////////////8ef/////7uPvI//////////////////////7I//////////////////////////////////////wI///2qT////////5It8nP////////////////////+hlf///////////////////////////////////////////////////////+z+/////6OV//////////////////9FjLiM/////////////////////////////8GP////////UqD//////////////////////////////////9CZ/////////////8OPxI////////////////////////+klf/////////////Gj///YJ7//////////////////9j5//////////////////////////////////////////////////////////+llf////////////////////////////////////+znP///////////////////////9GZ8f7/////////////////////////////////////////////////////////////////////////////////////////////0pn////////////////////////////////////////////////////////////////////////////////CnP///////9OZ/////////////6eV////////////////qZX//////////////////////////////////////////6aV/////////////////////////////////////////////12c/////////////////////+KY////////////////yY///8Kgyo/////////////////Umf////+5oP//////////////////////////////////////////WJv//82P///UoP///////////////////////////////////////////////86P///////////li///////////eYn/////////////////////////////////////////////////////////////////////////////////////0I+2lf///////////////////////////////9aZ///llf///////////////////////////////9eZ//////////+1lf/////////////////////////////KoP/////////////////////////////////////////////////////////////////////////////9n///////////////////////////////////////////////////////////WKD/////////////////////////////////////////////1o/////////Ymf//////////////////04/////////////////////////////////lj//////////////pj///////////2Zn/////////////////////////////////////////////////////////////94z//////////////////////////////////3yS////////////////////////////////////////RZz/////////////////////////////////////6Izej////////////////////////////////////////////////9+P//////////////////////////////////9LoP/////////////////////////////////////////////ij////////8yg/////////////////////+OP5I///////////////////////////////////////////8Sb/////////Jv///////////////9Mlv/////////////////////////////////////////////////////////////2mv//roz////////////////////////////////nj///////////////////////////6I///////////+eL/////////////////////////////////////////////////////////////////////////////3qJ/////////////////////////////////////////////////////////////////////////////////////////////3uJ2pn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2P////////wJX//////////////////////////////////8ug//////////////////////////////////////////////////////////////////////////////////9Inv///////////////9uZ///zj///////////+Y///////////////////////////////////8GV//9OoP///////////////9yZ//////////9koPeP//////////////////+wiUig///////////7j/aP/////////////9yd////////3Znoi//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Bkv//////////////////1p//////////////////////////////////////////////////////////////////////////////////////////////0qD/////QJD//////////////////////////////////////////////////////////8SK/////+CZ///////////////////////////////////////////wn/Of////////////////////////////////v53///////////////////////////////////////////////////////////////////af///Ilf////9anv///////////////////////////////+OZ/////////////////////////////0qK//////////////////////Gf////////////////////////////////////////////////////////////////p4r/////////////////////5pn////////3n///7Z////////////////9civ//rp3/////////////////////////////////////////////////////////////////////////////////////////////////////yZX/////////////SJD/////6Jn/////////////SZD/////uoz/////sZD///////////////9KkP//////////////////////////6pn/////////////////////////////0Zv//////////////////+uZ///smf/////////////////////tmf//////////7plMkP//////////////////////////////////////////////////TZD/////y5X//////////////////////////////////////////+KX/////////////////////8yV/////////////////////////////////////////////3if////////////////////////fIl9if///////////////36J////////////////////////////////////////////////////////////////////////////////////////////////XZn///////////////////////////////9am///////////UJD//0+M/////////////////////////////1SQ///Wxqia75nr/qOdoZ1DmUWZ//99nf/////wmf/////////////////////xmf//8pn/////vIxgnf///////////////////////6Og////////////////////////////////////////////////////////////////////////////////W5Dbnv///////////////////////3md//////////////////////////////////////////////////////////////////////////////////////OZ////////YpD/////////////////////////////////////////////////////VZ/////////////////////////5m///////////////////////////ZZD/////4Jb//////////////////76Y/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2iQ/////////////2yQ////////////////////////////////2JX/////////////////////apCyn///////////////////rp//////sJ///62J/////////////////////26Q/////////////////////3Ge/////////////0qe/////////////9yf////////////////////////////////////////q4n//7if/////////////////////////////////////////////////////////////////////3CQ////////////////////////////////Y4v//////////9yV/////////////////////3GQ/////////////////////////////////////////////178/////////////////////0mJ/////////////1uW//////////////////////////////////////////9QjP///////6aU////////1Y9znv////////////91kP//////////95n//////////////////////////////////7+M////////////////+Zn//2OWuZX////////////////////////UlP////////////////r8//////////93kP////+rkP//////////////////////////////////////////TZ3/////+pn//////////+OS//+7l/////94kP/////////////////////7mf/////gl//////////////////////clv///////////////////////6ic/////3KX//////////9AlP/////////////ykv////////////////////////////////////////////////////////////////////////////////2Z//////yZ///////////////////X+UqW////////2Jb+mf////////////////////////////////////////////////////9LkP///////////////0H6//////////////////9Amv//W5f/////////////QZrdkf/////////////8k0KaQ5r//1mW////////////////RJpRkP///////7+U////////////////////////////////////////////////////////////////////////////////////////////////opD///////+rnHaX/////////////////////////////////////1X8Rf6olEWaS/rhnf/////Zlv//////////////////////////////////////////////////////////dJf/////9f3////////lkv//RZbakf//o5D/////X6D//////////6+Qv5f///////9Mkf//////////epb////////ekf////9GmrD+eZdslP////////////////////9YmP////////////////////////////9mkv////////uT////////////////////////////////R5r//////////////////////////0mX/////0iX//9Kk///4pz///////////////9kkv//////////35H//////////////////3n7///////////////////Xlv//////////Q5P////////////////////////////////////////L/Xr+///bkWqMr5f/////3ZX///////9Ik/////////////////////////////////////9Lmv///////0X8//9Nmv///////////////7yR4pC0kOGV/////////////06a//////////////////////////////////////////9Pmv///////0D+Q/7////////////////////////dlv///////////////1Ga////////p5b/////sJD///////////////////////9OnP//Q5T//////////7qO////////////////////////////////Upr//8H8////////////////////////6Yv//////////////////////////////////////////////////////////////////6+c//////2L////////////////////////////////////////////////////////////////////////////////vJr//7ia////////////////////////////////////////////////////////////////rpr//////////////////////////////////////////////////////////////////6eaU5r//////////////////////////////////////////////////////////////////3Sd////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6ov////////////////ri/////////////+ykP//////////////////////////////////////////6ZXolf//5pX///////////////+1kP//VJr///////+zkOeV/////1CL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////si/////////////////////////////9WmvuL////////////////////////////////////////////////////////V5r//////////6qg/////////////////////6af////////zJn//////////////////////////////////////////1mc////////////////////////////////////////////////tZn/////////////////////////////////////////////vpD/////////////r5////////////////////////////////////KV////////////////v5D////////////////////////////////BkP//5P7//////////////////////////////////////////8SQ////////////////x5D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kklKf/////////////////////////////////////////////////////////////9uQ/////////////2ag////////////////////////////////////////0pD/////a4f//9SQ////////////////////////W5r9lf///////////////////////////////////////8SL////////Zoz//96Q/////////////+Sc///hkP//////////////////////////////////Rp7///////9Rlv///////////////////////////////////////////////////////1j7///mkP////////////////////////////////////////////9Qlv///////+eQ/////////////////////////////////////////////+iQXZr//3qf////////XJv//3yf/////1L86ZD//+qQ//9emv////////////92n////////////////////////+uQ///////////////////////////////////skP/////////////ui///////////////////7pD////////Gkf/////ykLz8dIr///////////////////////9Xlv///////++c///////////////////////////fn///////////95D2kP///////////////////////////////////////////////16b////////+JD///////////////////////////yM////////////////////////////////////////+ZD//8mM////////avr/////////////////////74v/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4J//////QpH//2Ka////////////////////////aZX///////9EkUOR//9Bkf////////CL//////////////////////////////////9glv//8Yv///aZSZH//////////0qR/////////////0uR//////////9kmv///////7+KZpr//////////////////////////2ea/////2ma/////////////////////////////////////////////////////////////////////2qaUpZNkf//Zpb//////////3uf//9rmv//////////////////bKD/////Z5b///////////////////////////////////////9smv//////////bZryi///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////apb/////////////////////6vz/////////////bJb//////////////////////////////////8SR////////d5b///////////////////SZb5r/////////////////////////////////////////////////////q5//////////////vozBjv//////////VZX/////////////////////////////////////UpFTkf///////1WR/////////////////////////////////////12V//9xlv//////////bZz/////////////////////c5b/////////////////////////////VJFxmv///////////////////////////////////////////////////////////////////////1aR////////bZb///////////////9Xlf/////////////////////Gif//////////////////////////////////////////////////////////////////////////////////////////x4n//////////////////////////////////////////////////////////////////////////////////////////2qK////////V4v////////hn/////9fm///////////////////////////////////////////////////////////////////XaD/////////////////////W5H//1yR/////////////////////////////////////////////16R//////////////////////////9cn1ef////////////////ZZ//////////////cpr//////////2CR////////////////////////////////////////////////////////Xp//////YZH///////////////9kkf//////////QZ////////////////9pkf///////////////////////////////////////2iR////////////////////////////////////////////////////////////////dJr///////////////////////////////////////////////////////+ylv//dZr//6X9///////////////////pnv//uottkWCg///////////////////en//////////////Dn///tZb//////////////////////////////////////////2eg////////////////////////////////////////////////////////////////////////////////s5b//////////////////////////////////3aa/////////////////////////////9WV////////yp7///////93mv////94mv//////////////////////////cJFvkf//////////////////o5///3GR////////sZb//////////2Of/////////////2ef////////uYt6mv////////////9Wi//////////////////////amv////////////+wlv//////////fpr//////////////////////////96d////////////////////////rZb///////+ulv///////////////////////6Ge/////////////////////////////////////////////////////1Ce/////////////////////6+W9Iukn////////////////////////72W////////////////////////9Jb//////////////////////////7iW////////////////////////////////////////////////ofr//////////6eR//////////////////////////9eoP//////////fZr//////////0iJ//+xnv//////////////////////////////////253/////////////////////////////////////v5Vziv///////////////////////////////////p7//3qR//////////97kf///////////////////////////////////////6Oa/////////////////////////////////////////////8KW/////////////3ef/////////////////////////////////////////////6Sa/////6Wa////////oZH//////////7iJ//////////////////////////9zkf///////////////////////////////////////////////////////////////////////////////////////////////////////6aavYn//7mJ//99kf///////////////////////7uW////////8p//////9Yv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6ma/////////////1Sf/////+Of7Z7//////////////////////////6qR//////////+rkXCg//9tn/////////////+skf///////62R/////////aD//+Kf//+vkUGeqpr/////sJH//6ua/////////////////////////////6ya//9Kmv//spH/////9ov//62aton/////////////////////////////////////////////////////////////////////r5r/////////////////////////////////////sJr///////////////+xmv////////////+hmrmR/////////////7qR/////////////////////////////////////76R/////////////////////////////////////0Ggt4v/////////////////////////////////////////////wJH//////////////////////////7Oaw5H///////////////////////////yg/////+6f////////////////aZ///////////////////8iR////////////////yZH////////////////////////////////////////////////////////mjf/////////////////////////////////////Lkf//////////////////////////yIn/////////////qo3/////////////3Z9DjG2MdIy3jLmMu4zAjNeM2IzajKHIo8jtjEiN+IvQyP//////////z8j////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kxv//5cb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zcj//87I//////////////////////75AAAAAAAAAAAAAAAAAABxnP//////////////////////////////////////////////////////////////////////////dZP//////////////////3aT//////////////////9Ilf//////////////////////////////////////////////////////////////////xo7/////////////////////////////////////////////////////////////////////////////xYv6i/////98yP///////////////////////7Sa/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////06IS4h6yEiI////////R4j///////////////////////////////////////////////////////////////////////////agRYj//1OI////////////////////////rfz///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////WM//////////+tiv//cpL///////////////////////////////////////////////////////9H/P///////////////////////////////////////////////9+U/////////////////////////////////////////////////////////////////////////////9Gfy/v//////////////////32S//////////////////+kmP////////////////////////////////////////////////////////////////////////////////////////////////mM////////////////////////////////////////////////////////////////////////////////////////55T////////////////////////////////////////////////////////////////LkHuS/////////////////////////////////////////////////////////////////////////////////////////////9iU//////////9f/P//VPr//////////////////////////////////////////////////////////7Wa///////////////////alnmS////////////////////////////////////////////////////////////////////////////////////////////////dPp1kv/////////////////////////////////////////////////////////////////////7jf///////////////////////////////////////////////////////////////////////0mK////////35J8m2P6////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////YPptkmL6//////////////////////////////////////////////////////////////////////////////////+2mv///////////////2uX//////////////////////////////////9q/f//////////////////////////////////////////////////VP3//3OS/////////////////////////////////////////////////////////////////////////////////////////////////////////////9iX////////////////u59Ck3aS//////////////////////////9l+v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2yS////////////////////////////////////////////////////////////////////////////////////////bvr////////////////gnv/////Akr+S//////////////////////////////////////////++kv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7qa////////////////////////////////////////////////////////////////////////////////////////////////s4r//3WXQPr//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3b6///////////////////////////////////////////////////////////Q+///////////////////////////////////e/r///////////////////////////////////////9t/v///////////////7Ob/////////////8yJ//////////++mv///////////////////////0L6vJL//////////////////////////1yUtZv///////+/mv///////6eYpJf////////////////////////////////////////////////////////9kP//////////////////////////////////////////////////////////////////////////////////////////////////e/z//////////////////////////////////////////////////////////////////////////////////8Caw5L//////////////////////////////////////////////////////////////////////////////////////////6qK/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9CbUJX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8aS//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+mmEaV////////////////////////////////Y/3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////C+v///////////////////////////////////////////////////////////////////////////////////////////////8Oe//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+yiWac/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1OQ////////////////////////////////////////////////////////////////////////////////Yoz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wZf//////////////////////////////////8Sa///////////////////////////Fmu+O////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6fr///////////////////////////////////////9Ajf////////////////////9ikveK////////////////////////////////////////////////////////xpr////////////////hkv//////////yZr//////////////////////////////////////////////////////////8b6/////////////////////6WX////////////////////////////////////////y5r///////9y+l6K///glP///////////////////////////////////////////////8yS///////////////////////////////////////////////////liv////////////9c/sya//////////////mdQ4qmiv///////////////////////////////////////82a/////////////////////////////////////////////86a/////////////////////////////////////////////+76zJv////////Pmv//////////////////////////////////////////0Zr/////////////////////+p3/////////////fJ3////////////////////////////////////////////////////////////////Tmv////+ml///////////////////////////////////////////////////////////X5n////////2+8WfWYpri////////////////9Sa////////////////////////////////////////1Zr/////////////////////////////////////////////opdEiv///////////////////////////////////////////////0qf/////////////////////6GQpP3//////////////////////////////////////////////////2SK8or4itid/////9aU/vqn+//////////////////////////////////////////////////////////////////////////////////////Wmv//TZ//////9vr//////////////////1eK//9Di0SL//////////////////////////////////////////////////////////+2iv/////////////Aiv//////////////////////////VJ7//////////////////////////9ea////////////////////////////////////////////////////////2Jrcmv//////////yoqonv////9jkt2aZYtvi36L//////////9Dj////////////////9CS///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0iv////////////////////////////////////////////////////////////////////////////////////++nf/////////////hmv//3vz9nWaLcIt1i+SKpIv//////////////////////////////////////////+2K////////////////////////XYr//0iL///////////tnf//////////QJ7//////////////////++K9op2nv///////////////////////+Oe/////////////////////////////////////////////////////////////////////////////////////96a/o3///////////z6/////////////////////////////////////////////////////////////////////7Gcd55ki2eLS5f/////////////////////U5b////////////////gmkqL///xiteK////////////////////////q6D//////////////////////////////////////////7WK/////////////////////////////////////////////////////////////1+K///////////////////////////////////////////////////////////////////////////////////////////////////////////uiv/////fmv///////////////////////////////////////////////////////////////////////////or///////////////9YiqOLp4v/////////////45r//////////////////////////////////////////////////////////////////////////////////////////2GS///////////////////////////XnX2ep56rnkKQ/////////////////////3mLeov////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////mmv///////////////////////////////+Wa////////////////////////////////////////////////for/////////////RJ7nmnyKcYv/////6Zr////////////////////////////////qmv//////////////////////////////////65r///////////////+9iv//////////////////////////////////////////////////////////Tvv//////////////////////////+2a+Ypjnv////////////9Ji86Kbov/////////////6Ir////////umv//////////////////////////////////////////zpL///////////////////////////////////////9ainuLfIvvmv/////////////////////////////wmv//+or//////////////////0GJ/////3KL////////////////84r///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+oi////////////////66e////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cp5z+////////////////////////////////////////////////1/7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7qQ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////+kfae////////////////7Zf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////85r/////////////////////////////////////////////////////////////////////7qB8lkWTbphW+v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Wa////////S/z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Sa3v7/////////////////////////////////////////////////////////////t/z////////////////////////xl////////8eX///////////////////////////////////////////////////////////////////////////////////////////////////////////LnECS/////////////////////////////////////////////////////////////////////////////////////////////////////+ic///////////////////////////////////////////9kU6X/////2j7//////////////////////////////////9sl//////////////////////////////////////////////////////////////////////CjP///////////////////////////////////////////////+iX//9q+3SL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////njv///////////////////////////////8j9////////////////////////////////////////////////////////////////////////////////QZL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6GW//////////////////////////////////////////////////////OO95r//////////////////////////6aP///////////////////////////////////////////////////W+sec/////////////////////9f6//////////////ia////////////////////////////////////////////////////////////////////////////////////////////////ofv//////////////////////////////////////////////////////////////////////////////////////////8WO////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pPv//////////////////////////////////////////////////////////////////////////////////////////////////8L7///Bmv/////////////6kdv+q5f//////////////////////////////////////////0eR//+x+////////////////////////+qP////////////////0pRh/s76/////////////////////////////////////////////+2S85HGk///WpP7+v/////vkv///////////////////////////////////////////////////////8j6//////////////////////////////////////////////////9HmGaTVZj/////////////////////////////////////////////////////////////////////5pb/////////////////////////////////////////////////////Q5+qn9qU7pKv/Pv7///5jvaR////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ZJP///////////WUtpyt+06YRI/9lv//////////////////////////////////+Zr////////6mv////////////////////////////////////////////9pl9SVS5iq+/////98mP///////////////////////////////////////+qR/////////////6+dxZ3///GRsY6pl6z7uPy5nP//////////////////sPvS/MuT//////2a//////////////////////////////SRrItVoP//////////dJX//////////76V////////////////////////////////rZf/////////////////////////////6Y7/////+JK+l2yRqpT///////////////////////////////////////////////9j/P///////8ad//////////////////+1l7iS75H///////////////////////////////////////////////////////////////+m/mCXWJN2layP////////////////////////////////////////////////////////////////////////7JG0l//////////////////////////////////////////////3kf//////////SpdJ+3iVvJP/////////////////////////////////////////////////////////////////////////////////////1pFVk1aTUZj///////////////////////////iPwPvyk//////QkP///////////////0Sc/////////////1WS//////////9jk///////////////////////////////////////////////////pZH/////////////////////7aD//////////////////////////////////////////////////2v9//////////////////////////////////////////////6a/////////////////////////////////////////////1GT////////V4z/////ePr//////////6j+//////////////////////////////////9Qk/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9M+v/////////////////////////////////////////////////////////////3kkCb////////////////zvv//////////////////////////////////////////0Gb/////////////63+/////////////////////////////////////////////////////////////2GH1fv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8KLfJpCm////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0Ob//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////95nv/////Z+////////////////0Sbp6D/////////////////////////////////////////////////////////////bof///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ob//////////////////////////////////////////////////////////////////////////////////////////////////95jP///////16T////////////////////////////////////////y4n///////////////9Tn///////////////////////////////////////////////////////////////////15P//////////////////////////////////+H70P7////////////////xjP//////////////////////////////////////////////////4vv/////////////4/z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////90kP/////////////////////////////////////////////////////////////////////m+////////7eb//////////////////////////////////////////////////////////////////////////////////9Fm////////////////////////////////0ebUJ//////////////SJv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9b/P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6mY//////2c//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9MiEub////////7Pv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2mM////////////////////////////////////////////////////////////////////////qJv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1Yr//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3P6Wf3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+ikf/////////////////////////////////////////////////////////////t+////////////////6mc/////////////////////////////////////////////////////////////////////////////////////////////////////6iK//////////////////////////////////////////////////////////////////////////////////9Cjf//w5vhiv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////TpvQlf///////1+Q///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ul////////////////////////////////////////////////078////////////////T5v//////////////////////////////////////////////////////////////////////////////////////////1Cbxp7/////////////////////////////UPz//////////////////////////////////////////////////////////////////3P9/////////////6f9////////////////////////////////////////////////////////////////////////////////op3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Y+l76//////////////////9ZoP////////////////////////////////////////////////////91+v////////////////////////////////////////////////////////////////////////////////////////////+++/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+inP///////////////////////////////////////////////////////////////////////////////////////3CT/////////////////////////////////////3GTd5Pv/v////////////////////////////////////9tk////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////138/////////////////////////////////////////////7iQ/////////////////////////////////////////////////////////////////////////Ir//0H7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9rnuOU4o59jP//147///////////////9NnP///////6OW//////////////////////////9Rm//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Div////////////////////////////+qlv/////////////////////////////////////////////////////ijP////////////////////////////////////////////////////////////////////////////9o/G2L/////////////////////////////////////////////////////////////2f96Yr//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6H8bJP//////////////////////////////////////////1Kb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D+//////////////////////////////////////////////////+o/P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////p/LSc////////////////////////////////////////////////6or///////////////////////////////////////////////////////9Tm/////////////////////////////////////////////////////////////9Vm////////6uW/////////////////////////////////////////////////////6f8////////////////////////////////////////////////Vpu8iv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Liv////////////9Xm///////////////////////////////////////////zYn//1mbW5v//////////////////////////////////////////////////6WT//////////////////////////////////////////////////////////////////////////9dm////////0+e/////////////////////////////////////////////////////////////////////////////////////////////////////6OT/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3uK////////QotQl7OP//////////////////////////////////////////9Qiv//////////////////////////////////////////////////YJv//////////0WL////////Rov////////////////////////////////+nf//////////////////////////////////////////////////////////////////////////////////////////////////Ypv///////////////////////////////////////////////97k/////////////+xk///////////////////YIr/////////////////////2Ir//////////2Ob//////////////////////////9piv///////0eK/////8yKfJNlm////////////////////////2ab//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9yiv//////////////////eor/////////////////////////////////////////////////////////////////////r5P//////////////////////////////////////////////////////////////////////////////////////////////////7CK//////////////////9om///////////////////////////o57/////7Pp3i////////////////////////////////////////////////2eb////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////WYux/P//////////////////////////////////////////////////////////////////////////////////////////////////////////u/z/////////////////////////////aZv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////qJP////////////////////////////////////////////////giv///////////////////////////////////////////////////////////////////////////////////////////////////////1Ge/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+Papv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9rm///////////////////////////////////////////////////////////7Jdsm///////////////////////////////////////////Tv7////////////////C/f////////////////////////////////////////////////////////////////////9tm///////////////////////////////////////////////////////////Z5HM/P///////////////////////////////////////7aT///////////////////////////////////////////////////////////////////////////////////////////////////////////kkP//////////5ZD/////////////////////////////////////////////////////////////////////////////8p7Kk////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7yL////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ro///////////8+T////////////////////////////////////////////////////////////////////////////////////////2/zc/P//////////////////////////////////wJP/////////////////////////////////////////////////////5vznlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9j82fym/c6T////////////////////////////////////////////////////////8ZX////////////////////////pnP//5PyvlHf6zJP////////////////////////////////////////////////////////////////////////////////////////hjP////////////////////////////9akP///////////////////////////////////////////////////////////////////////////////1SM//////////////////+/k1H7/////////////////////////////////////////////////////////////////////////////////////7mT1/63k////////////////////////////////////////////////////////////////////////////////////////////////9mT//////////////////////////////////+7k9qTo5j////////////////////////RkP////////////////////////////////////////////////////9um///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cPr/////////////////////////////////////////////////////////////65v/////////////////////////////////////////////b5v///////////////////z8//////////////////////////////////9Ai3ug////////oYz3l////////+KT1vz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////WZX//////////////////////////////////////////6aT////////////////////////////////////////////////////////////////////////////////QP3/////X5P////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yl3ac///////////////////////////////////////////////////////////4jv/////////////////////////////////////////////////////////////////////////////////////rjP////////////////////9Hj////////////////////////////////3Sb////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tJL////////tkf/////Slv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0b9T49Jlf////////////////////////////////////////////////////////////////////////////////////////////91m1z6//////////////////////////////////////////////////////////9Rh/////95m////////////////////////////////////////////////////////////////////////////////////////0v9////////05b///////////////////////////////////////////////////////////////9Y/f////////////9flP/////////////////////////////////////////////////////////////1oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Q5L////////////////6l////////////////////////////////9md////////////////////////////////////////////////////////////////////////////////////////////////9Jf/////////////////////////////////////TZJb/f///////////////////////////////////////////////3qb////////////////////////1Z7///////////////////////////////+u+v//yZz///////////////////////////////////////9Ykv/////////////////////////////////////////////////////////////////////////////////////////////////////Ijv////////////////////////////////////////////////////////////////////+0lP/////////////////////////////////////////////////////////////////////////////////////hk///////////////////////////////////////////////////////////////////35P/////////////8Pz////////////////////////////////////////////////sk/aXz5bek8+Kopv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9p/f///////////////////////////////////////////////1KT/////////////////////////////6KY54z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9u/aSM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3z6+pN8kP//////////////////////////////////////////////////////////////////Z4///7ed////////////////////////////////////////6aBO+qH9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3Sev5/Lnrmb1J3/////////////////////////////////////////////////////////////////////uZf///////////////////////////////////////////////////////////////////////////////////////////GO//////////////////////////////////////////97lf/////////////////////////////////////////////////////////////////////////////////////////////////////SnlOXpJa+j9mUWJB5/Xv9///////////////////////////////////////////////////////////////////////////////////////////////////ajv/////////////////////////////////////////////////////6jmKH//////////////////////////+lm//////////////////////////////////////////////////////////////////////ZntSXu5C8/cb9SJL//////////////////7WS////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wZ25kqaSS4////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+mm/////////////+2kv////////////////////////////////////////////////////////////9Ajv//////////////////////////////////////////////////////////////////////////////////2J5elF+YzpRKknD9Z5T/////////////////////////////7I3/////////////////////2Jv//////////////////////////////////////////////////////////2OH/////////////////////////////////////////////////////////////////////////////0iUwfr3nL79////////////////////////////////2o/////////////////////////////////////////////////////////////////////////////////////////////////Z/f////9+/P/////////////////////5k///////////Q/r//////////////////////////////////////////////////////////////////////////////////////////////////+v6w/rTl/mVSJzY/dig////////////////////////////////////////////////////////////////////////////////////////////////////////1/1K+6+bS5TJ/f//////////////////////////////////////////////////////////////////rI7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+y/f////////////9akr382ZL////////V/f//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3ZL/////////////////////////////////////////////////////////////WZL///////////////////////////CMupb//////////////////////////1uS////////////////////////q5v//////////////////////////////////////////////////////////////////////////////////////////////////9r93v3////////T/f///////////////////////0aM////////////////1v3c/d39///////////+kP////+h/v////////////////////////////////////////////////////////////+ti//////YnP//////////////////////////////////////////////////////////////////////////////////////////////////////////bZ58/WH7////////////////+Jb/////////////////////8Jb/////////////////////////////////////////////////////////////9Pz/////////////////////////////////////////////////////YP7//////////////////////////////////////////////////////////////////1KYT5b/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bpH//////////////////////////22Y/////2SY//////////////////////////////////////////////////////////////////////////9TlOz9ePv/////////////////////////////upX/////////////////////////////////////XZj///mS////////////////////////////////////////Wpj//////////////////////////////////////////////////////////////////1CH///2/f//////////////////0JNimP////////////////////////////////////////////////////////////////////////////////////////////+tm/////////////////////////////9Pl66b////////////////////////////////UpT//////////////////////////////////////////////////////////////////7Cb///////////////////////////////////////////////////Skf//////////////////////////////////////////////////////////////////6pdr+7GR8/3/////////////////////////////////////////////////////////////////////////////////////////////////////y5L///////////////////////+xm//////////////s/P////////////////////////////////////////////////////////////////////////////////////9rmP///////1GX////////////////////////////////////////////////////////////////////////////////////////////////////////cZjvlf//////////////////857/////////////6JG6m////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0z7apL/////////////////////////////////////////////////////////////////////////////////////////////+P1hmP/////////////////////////////////////////////////////////////nkf//////////////////////////////////////////////////7ZNEl////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+GR//////X7/////////////////////////////////////////////2mY//////////9iiv////+7m6iM////////////////////////////////////////////////////////////////////////VZz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////d47//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7KKvJ7/////////////////////////////////////////////5pP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6KT/////////////////////////////////////72b//////////////////////////////////////////////////////////////////////////////////////////+zlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////32TZp7///////////////////////////////////////////////////////////////////////////////9ZlP///////////////////////7+b/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1iU/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Wex5v//////////////////////////////////////////1T+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////90jv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9aL////////////////tpR0/cCYpZT//////////////////8ib////////7ZV+/ev7//////////////////////////99/f///////////////////////2+XYZT//8Gf////////////////////////////////////////////////////////15X///////9S+lic////////////////////////aJ/nm8786JZJ+qGX////////////////////////////////////////////////////////////////////////////////TZX4nv//////////////////////////////////////////Sf7OkXGX///////////PjP///////7H9/////278//////////////KcuJNDkFmX15Rm/n2Ub/z//////////0aS////////////////////////////////////////bfr/////947//7f7//98lM2Sspf///////////////////////9l/n6WWJd3m8+R////////////////////////pJT//////////////////////////62c////////////////////////q4v////////VlrP8////////rpP//22X////////////////RpT3lf////////////////////9GnFuV0ZH0lP//Z/6lkv///////9/+q4z//8mb/////////////////////////////+38+v3I/GL+/JFr/vn9x/xOkbic//////////////////////////////////////////////////9nl////////+6V/////7Kb//////////9glP///////6KUdZisl9OR/////////////////////////////3uY///////////////////rjmqXXpb////////////////////////rl//////////////5n/iVov7mj/////////////////////////////////////////////9+/v///////////////6SdaJfsjr2U//////////////////////////////////9blPacp/rZm////////////////////////136VpZil////////////////7qUT6DYkv///////8ub////////////////u5T/////X53////////////////PkP//////////////////////////////////ZZT/////TJ/////////////////YkFuN//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////++nv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9t+8qV///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////CnfiX//////////////////////////////////////////////////////////////////////////////////////////////////////////////yP////////////////////////////////////////c5R0lP///////////////////////////////7f+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0uK//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9VimmL3Ir/////////////////////////////////////////////////////dov////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Om///aIr4oP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fmP//////////////////////////////////////////////////////////////////////////////////////////////////tf7////////Pm///////////////////////////////////////////+5b/////+5v/////////////////////////////////////zp7/////////////////////////////////////5Y7///////////////////////97ntKb//////////////////////////////////////////////////////////////////////////////////////////////////+liv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////O/kWK///////////////////////////////////////////////////////////////////////////8nf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z/6li////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0qM////////////////////////////////////////////////////////7Ir/////4PytlNX+rJT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1r8////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1pv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9viv//////////////////////////////////////////qYtfjv/////Lnf//5/zXm//////////////////////////////Ik/////////////////////////CR4I/////////////////////////////////////////////////////////bm///////////////////////////////////////////////////////////////////////////////////////////////////7ZD//9yb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Tjeyg////////+pj////////////////////////gm////////////////////////////////////////////////////////////////////////8eTSZLhluKb////////5Jv/////4Y/lm//////////////////////////////////////////////////////////////////////AlP/////Dk///////////////////////////xZP/////////////////////////////////////////////////////////////////////////////////////////////////////////////eZD///////////////////////////////////////////////////////////////////////97l/////////////9+kP//////////5v5G/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4nf///////////////////////////////////////////////////////////////////////3CS//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+olf////////////////////////////////////////////+wjP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IlP///////////////////////////////////////////////7mYQJH//////////////////////////////////////////////////////////778//////////////////9Xkf////////////////////////////////////////////////////////////+yi///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3/r////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////mm/////////////////////////////////////////////////////////////9DlkSOT5z0/v/////////////om//////////////////////////////////////////////////////ck///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b5b///////////////////////////////////////////////////////////////9Kju2b////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9pL///////////////////////////////////////+5nf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////To7//////////////////////////////////////////////////////////////////////////////////8/7YIf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Ke////////////////5ZT/////////////////////////////////////////////8JvklP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1GVu4v/////////////////////////////////////////////////////8Zv/////////////////////////////////////////////////////////////////////////////////////////////////////////////8JRkjv/////////////////////////////////////////////qlP////////////////////////////////////////////////////////////////////////////9hj////////2SbW47///////////Kb/////////////////////////////////////////////////////////////////////76f///////////////////////////////////////////////////////////////////////////////////////////////////////////Jnf////////////////////////////////////////////////////////////////////9sjv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////c4////////////////////////////////////////////////+vjP///////////////////////////////////////////////////////////////////////3WPcY7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gjmqO////////////////////////////////////////TIz///////////////////////////////////////////////9SlVSV///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Uiv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u51Dlf6S///////////////////////////////////////////////////////////////////////////////////////////ylP////////////////////////////////////////////////////////GU/////////////////////////////////////////////////////////////////////+qg0p2xoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////iR/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2KUpJutjv///////////////////////////////////////////////////////////////////////////////62e////////////////////////////////////////////////////////////////////////0Jb////////////////////////////////////////////////////////////////////////////////u/v//////////////////////////////////////////////////tIr///////////////////////////////9Xl3eK95v///////////////////////////////////////////////////////////////////////////////+1jv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////baC2jlaXQJX/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////86C+lP////////qb////////////////////////////////////////////////////////////////////////////////////////////////////////////////3/28nf/////////////////////+lP/////////////////////bi/6g///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ajkef////////////////////////////////////////////////////////3ov7oP//////////w47///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Jlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8L+/////0yV/Zv//////////////////////////////////8yQYJxLlf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pv///////////////////////////////////////////////////////////////////////////////9wnP////////////////////////////////////////////////////////////////////9DnP///////0eczI7///////9Ujv//////////////////////////5I5JnP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9ei////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////16V////////////////////////////////XJX/////////////////////////////////////////////S5zhi///////////////////////////////////////////////////2Y7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7Sd//9fkv///////0yc////////////////////////////////////////////////////////////////////////////////////////////////oYr//////////////////////////////////9uO//////////////////////////////////////////////////9WnKKK////////////////////////////////////////////////////////////////////////////////////////////////////////////////VJf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9enP//////////////////////////////////////////////////////////////////1J5olf/////////////////////////////////////////////////////////////DoOaK//////////////////////////////////////////////////////////////////////////////////////////////////////////////eg/////////////////////////////////////////////////////////////2Gc////////////////////////////////////////X5z//////////////////////////////////////////////////////////////////038//9bnv////////////////////9pnv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2Ocx/7/////xv7/////////////////////////////////////////////////////Z5z///////////////////////////////////////////////9pnP/////////////////////////////////////////////////////////////ii/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9lkf///////////////////////////////+ec////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VIr//////////////////2ycbpxd/v////////////9znP//////////////////////////////////apX/////////////////////////////////////bZXwjk2P///////////2jv////////////////////+8+v//1Yz//////////////////////////////////16H///////////a+////////////////////////////////////////////////////////////////////////////////////////////////////////0yLdf3dm/X6//////////////////90nP//////////////////////////////////////////////////////////////////RZX////////////////////////////////Glv//////////////////////////////////////////////////ao9Oj/////////////94nP///////////////////////////////////////////////////////1X6////////////////////////////////5Jf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9BnFyS////////////////////////////////////////////////////////////////////////////////+pb2jP//////////TY3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2b7ZY5JmKj7Qpj///////////////////////////////////////////////////////////////////////////////////////96nP////////////////////////////////////////////////uXypD//////////1uc/////02X/////9OO//////////////////////////////////9hlUuftZ/Sk6r9QJhGkWeYWvqp+/////////////////////////////////////////////////////////////////////////////////////////////////////9BmP//////////////////////////////////////////////////////////////////////////////////////////04z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////38q/29kUyPyZZVj677b5X///////////////99nP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Cg//////////////////////////////////9vlKz9///////////Lls6W//////////9WoP//4Zz//////////////////////////8SW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////16PbI+jjrP7//////////////////////////////////////////////////////////////////////////////////////////////////////////9T/P///////7P9//////////9rj////////////////////////////////8qW////////////////U4f//////////////////////////////////3mP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b57FoHj8Qo5aj8KQpY5hkE+S//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9zk7X9////////////////////////////////////////////////////////////////////////////////////////////////////////////////zP7//737///////////////////////////////////////////////////////////////////////////WjP//////////////////////////////////////////////////////////////////////////////////Q5jFlryJ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o5z///////////////9LkkqY//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+kj/////////////////////////////////////////////////////////////////////////////////////////////////Gg+57SnP////////////////////////////////////////////////////////////////////////////+nj///////////VIf//////////////////////////////////////////////////////////////////////////////////////////////////1z8RZj/////RpDRjP////////////////////////////////////////////////////////////////r+YJX///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9In0eS////////////////////////////////////////+5D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+knHGV////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////RYf///////////////////////////////////////////////////////////////+mnP//////////p5z/////////////qpz/////////////////////////////////////////////////////////////////////////////////////////////////////057///////9wnv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+snFKH/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////66P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9QjX2V////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////sJz///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2l///vaDfiv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////qp7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+9j////////7+P////////////////////////////////////////////////////////////////aZOnm6TI///////////q/v//////////////////////////////////////////////////////////////////////////////////////////////////4Zv///////////////9Bi////////////////////////////////////////////////////////////////////////7ad66Cjm////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6GLyI///////////////////////////////////////////////////////////////////////////////////////////////////0yJYJj//////////////////////////8eU//////////////////////////////////////////////////////////////////////////9Yi///////////////////////////////////////////////////////////////////////////////////////////////////q5Wqlf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w5zEnP/////////////////////////////////////////////////////////////Wk/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+snf/////////////////////////////////////////////////////mi////////////////////////////////////////////////////////3GK0Y/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Vmf////////////////////////////////////////////////SQ//////////////////////////////////////////////////////////////////////////////////////////////////+jiv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////86c///////////////////////////////////////////////////////////////////////////////////UnNWc////////yPv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s53/////////////////////////////////////////////////////cPz/////////////14///////////////////////////////////////////////////////////////////////////////////3Ob//////////////////////////9b+v/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Sj2SQ/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7aYaJb//////////9ac////////////////////////////////vZj//////////////////////////////////////////////////////////////////////////////////9yP9v7Zj///////////////////////////////////QZX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2yH///////////zl/ib/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1qH/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0iH//////////////////////////////////////////////////9Kh2ye//////////////////////////////////////////////////////////////////////////////////////////////KP7o//////////////////////////////////////////////15z///////////////////////////////9unv//////////////////////////////////////////QIr//////////////////////////++P//////////////////////SP////////////////////////////////////////////////////////////////////////////////////////////////9Y/////////////////////////////////////////////////////////////////////////////////ClWqY///Pl+We//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////98nkGQ////////////////25z/////////////////////////////////////////////////////QZT//////////+acsJ3/////////////////////////////////////////////////////////////////////////////////////////////6pz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2c////////////////////////////////+pz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////YotOiv/////////////////////////////////////////////////////////////////////////////////////////////////////////////KnGaK///////////////////////////7nPyc//////////////////////////////////////////////////////////////////////////////////////6c//////////////////////////////////9Tiv/////////////////////////////////////////////lnP//////////////////////////////////////////////////////////////////QJ3//////////////////////////////////////////////////////////////////////////////////////////////////0Gd////////////////////////////////RZBzi///////////////////////////////////////////ypf//0Kd/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2GK//////////////////////////////////////////////////////////////////////////////////////////////////+ui////////////////////////////////////////////////////////////////////////////////9KK//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+ii//////////////////////////////////////////////////////ynUOd/////////////////////////////////////////////9+c//////////////////////////////////////////////////////////9Enf//////////////////////////yo7///////////////////////////////////////////////////////////////////////////////////////////////////////////////9OkP//////////////////s47////////////////////////////////////////1n////////////////////////////////0WdT5D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0ed////////yon///////////////+1nP/////////////////////////////////////++16Q//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9jkFeQ//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9mkP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Cb/////////////////////////////+X8YpH//////////////////////////2eQ//////////////////////////////////////////////////////////////////+hj////////////////////////////////////////////////////////6KP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0id0/r///////////////9Pjf///////////////////////12Q////////////////////////////////////////////////////////////////////////uZD//////////////////////////////////2uQXIz///////9pkFf+/////////////////////////////////////////////////////////////////////////////////////////////////////1X+c5D/////////////////////////////////////////////////////75vwnP///////////////////////////////0ud///////////////////////////////////Z/v///////9r+////////4JFDjf//////////////////////////////////////////2JH//////////////////////////0aW////////////////////////////////////////////////////////////////////////////////YJP//1P605z///////////////////////////////9Onf///////0D7////////4o3///////////////////////////////////////////////////////////////////////9ClP//VpD/////ZZj//2yMSvr/////UJ1Snf//////////////////////////////////////////r5Val0mTR5f0oP///////////////3iX/////////////////////////////////////8+P////////YPz/////////////////////Toz///////9W/P//////////////////////////////////3JFhluySXZPejv6WT/3elf//////////////////////////////////sJhAoP////////////////////////////////////////////////////////////////////////////////////////////////////+9l32X9Zf//////////////////////////////////////////////////////////6yb2vrCkv////////////////////////////////////////////////////////////////////////////////////////////+xl/////////////97kP///////////pN7lP//d5f///////////////////////////////////////+++kP9xpCkkKiQqZT//6mQ//////////9ljP/////////////////////////////////////////////glX2Q////////////////ZZL//////////////////////////////////7r9xJP/////////////////////7f6rneOg//9Ilv//////////////////////////////////////////////////////////U53/////////////qYr//8Wb//9dlv///////////////////////////////////////////////1+XX5Zull37/////////////7Gd//////////////////////////////////////////////////////////////////////////////////////////+j/v///////////////////////7Kd/////66Vo/z///////////////////////////////////////////////////////////////////////9ph/////////////////////+ioP////9Vlv////////////////////////////////////9Unf////9Bk///rZXVkf///////////////////////////////3qX/P1Hjv2TpZCskP////////////////////+slf///////////////////////66Qpf7/////////////Vp3////////////////////////////////////////////////jl+KV/////////////2aU/////0eW//////////+4kf//////////7Jz/////////////////////rZD//+OV//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Pi//////jiv//////////TYvqlf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Tov//////////////////////////////////////////////////////////////////////////////////8GM7Yv/////////////////////////////////////////////////////////////////////////////////////////////////////2ZH/////pKD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////WV9JX///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+zn/////////////////////////////////////////////////////+v/v////////////9y/nqS//////////////////////////////////////////////////////////////////////////////////////////////////+s/v//////////////////////////////////85VYnUaN/////////////////////////////////////3KT/////8WR//////////////////9Clv///////////////////////////////////////////////////////////////////////82Q/pVZkf////////////////////////////////////9lnP/////////////////////////////////////////////////////////////////////////////////////////////Ml86Q////////////////WZ31/P3+/////1ud//////////////////////////////////////////////////////////////////////////////////////////////////////////////////9cnf//////////////////////////////////////////fpP//////////////////////////////////6yY/////16d/////////////////////////////////////////////9D9//////////////////////////////////////////////////////////////////////////////////////////////////////////////////9g/f/////////////////////////////PnP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////dkP///////////////////////////////////////////////////////+CQ85D/////sZj////////////////////////////////////////////////wkP////////////////////////////+9k/////////////////////+3lf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0af/////////////////////0uOWJb//////////////////////////0yK//9jnc+e/////////////////////////////////////////////2Wd//////////////////9mnf///////////////////////////////////////////////////////////////////////////////1qW/////////////////////////////////////////////2Sd//////////////////////////9sitmK/////////////////////////////////////////////2ed/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3CK84v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1CR///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////BnP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9onf///////////////////////////////////////////////////////////////6eT////////////////dJb//////////////////////YzvoP//UZH/////////////////////////////////////////////////////////////////////////////////////////////////////////////wZb///////////////////////////////////////////////////////93h///ZIx2lmmd//////////////////////////////////////////////////+k/P///////////////////////////////2qd/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////06S//////////////////////////////////////////////////////////////////////////////////////////////////9rnf/////////////Bm2yd////////////////////////////////////////////////////////////////////////////////////////////////ZYpdkf////////////////////9tnf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1qRQoz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AnGqR////////////////////////////////////////////////////////////////////////bp3///////////////////////////////////////////////////////////////////////////////////////+mnv///////////////////////////////////////////////////////////////////////82d/////2+d////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u4n5nv////////////////////////////////////////////////////////////////////////////////////////////////////+0lv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cpH//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8ie////////cYf///////////////////////////////////////////////9Vi///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cZ1ynf///////////////////////////////8ye/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3SR/////////////////////////////////////////////////////////////////////////////////////////////////////9CeXJD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Sjv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////qJH///////////////////////////////////////////////////////////////////////////////////////////////////////93kf////////////////////////////+/lv/////////////Alv//////////sY//////////////t5ZVjP///////////////////////////////////////////////////////////////////////3iR////////////////////////////////////////vol8kf///////////////////////////////////////////////////////////////////////3f7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3WRo5H/////////////////////////////////////////////////////////////dpH/////////////////////vpZJjf////////////////////////////////////////////////////////////////////////////////////////////////////////////95kf///////////////////////////////////////////////////////7aWpJH///////////////////////////////////////////////+mkf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////91nf////////////////////////////9SkP///////////////////////////////////////////////0Wg//+pkf//qpj///////9fjP////+qi////////////////////////////////////////////////////////////////////////////////////////92c//////////////////////////////////////////////////////////////////////////////////93nVaH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////QInsnv////////////////////////////////////////////////////////////////////////////////////////////////////+qk3iU//////////96ncmK////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////S4v/////////////////////////////////////////////////////////////7J///////////////////////////////////////////+KK/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3WedJj////////////////////////////////////////////////////////Imv//////////R6D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8OL////////////////////////////////////////////////////////////////////////SPz/////////////////////////////////////////////d/z/////////////////////////////////////////////////////////////////////////////////////////////////////Upz9jv////////////////////////////////////////////////////////////////////////////+oj////////////////////////3qV//////////////////////////////////////////////////////////////CPAAAAAAAAAAAAAAAAIAVfRA9SggAAAAAAAAAAAAAAAAAAAAAA0CwEAAAAAAAAAAAAAAAAAAAAAAAAAADAAAQAAAAAAAAAAAAAAAABFgAPAAAAAAAgVyv3/G7ykAsAAADA7aQP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/8OeJpy2ml537i1AcW2B7IAcXHJlNIGXN19TvYC2kfoODw53DvsO3TXrTQk21gyvVrUnyRAQDngOeBBIEQeCVRR5DlBOpC1UWh0QHhD1EPYQnFcRDv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/lHbNgrUPew5+UQM3tg+AEdhSvaLaSToYd0F8gplYaFIaNj1XsntoWwBILEsnn+dJH5yNm3RbPTH7VfI1iVYoTgJZwRt4+FGXhgBbTrtOPjUjXFFfxF/6OExiNWV6azVsOmxscCtyLE6tculIUn87efl8U39qYsE0/v9LYwKAgIASZlFpXVNkiMGJsnigix2NhZR4lX+V6JUPjuaXdZjOmN6YY5kQmHycH57Enm9rB/k3TocAHZY3YqKUO1D+bXOcpp/JPY+ITkF3cPVcIEvNUVk1MF0iYTKKp4/2kZFxGWe6c4EyB6GLPIAZEEvkeAJ0rlEPhwlAY2q6oiNCD4ZvCip6R5nqilWXTXAkU34g9JPZduOJp5/dd6NO8E+8UC9OF0+onzRUi32SWNBYth2SXplewl8SJ4tl/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/5MxlpQ2pjPP9s/v8AcgVFjHPbPhNKFVu5dIOLpFyVVpN67HvDfGx++IKXhamfkIiqn7mOq5/Pj1+F4JkhkqyfuY0/FHFAokIaWv7//v/+/2iYa2d2Qj1X/v/WhXtJv4INcYFMdG17XRVrvm+tn66flluvn+dmW35Xbsp5iD3DRFYylieaQzZF/v/VXBo7+Yp4XBI9UTV4XbKfV3FYRexAIx53THg5SjSkAUFszIq0TzkCv1lsgVaY+pg7X58L/v/BIW2JAkG7RnmQBz+zn7Wh+EDWN/dGRmx8QbKG/3NtRdQ4mlRhRRtFiU17THZN6kXIPw9LYTbeRL1E7UE+XUhdVl38PQ84pF25XSA4ODhCXr1eJV+DXwg5FDk/OU0512A9YeVciTm3Yblhz2G4OSxikGLlYhhj+DmxVv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/AzriY/tjB2RaZEs6wGQVXSFWn5+XOoZlvTr/ZVNm8jqSZiI7FmdCO6RnAGhYO0pohGhyO3E7ezsJaUNpXHJkaZ9phWm8O9Zp3TtlanRqcWqCauw7mWryO6tqtWrUavZqgWvBa+prdWyqbMs8Am0GbSZtgW3vPKRtsW0VbhhuKW6GbsCJu27ibtpuf5/obuluJG80b0Y9QT+Bb75vaj11PbdxmVyKPSxwkT1QcFRwb3B/cIlwJQPBQ/E12A7XPr5X024+ceBXTjaiaemLdFtJeuFY2ZRlen16rFm7erB6wnrDetFxjWTKQdp63Xrqeu9BslQBXAt7VXspew5T/lyie297nIO0W39s0HshhJJ7/v8gXa09ZVyShPp7/v81fMFcRHyDfIJIpnx9ZnhFyXzHfOZ8dHzzfPV8/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/2d+HUVEbl191m6NdIl9q301cbN9/v9XQClg5H0TPfV9+RflfW2D/v8hYVphbn6SfitDbJQnfkB/QX9HfzZ50GLhmZd/UWOjf2EWaABcRWY3A0U6g/p/iWT+/wiAHYD+/y+Ah6DDbDuAPIBhgBQniUkmZuM96GYlZ6eASIoHgRqBsFj2Jn9smGS4T+dkihQYgl4YU2plSpVKekQpgg0LUmp+PflP/RTihGKDCmunSTA1cxf4PaqCG2mU+dtBS4XQghqDFg60F8E2fTFaNXuC4oIYg4s+o20Fa5drzjW/PR2D7FWFgwtFpW2sg/7/04N+NNRuV2pahZY0Qm7vLliE5FtxhNM95ESnakqEtTxYef7/lmt3bkNu3oT+/5GDoESThOSEkVxAQsBcQ0U0hfJamW4nRXOFFkW/ZxaG/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v8lhjuGwYWIcAKGghXNcLL5akUohkg2ohj3U5pzfoZxh/ig7ocnLLGH2ocPiGFWbIZWaA9GRYhGiOB1uT3kdV6InIhbRrSItYjBY8WId3cPd4eJion+//7/p4m8iSWK54kkeb16nIqTd/6RkIpZeul6OnuPPxNHOHt8cQyLH4swVGVVP4tMi02LqYp6SpCLm4uvit8WFUZPiJuMVH2PfdT5JTdTfdaMmH29fRKNA40QGduMXHARjclM0D6pjQKAFBCKSXw7vIEMced6rY62jsOO1JIZjy2PZYMShKWPA5OfolAKs48qSd6JPYW7PfheYjL5jxSgvIYBhSUjgDnXbjeQPIW+emGQbIULhqiQE4fEkOaGrpD+/2eR8DqpkcSRrHwziYkeDpKfbEGSYpK5Vf7/xoqbPAyL21X+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/zENLJNrk+GK64uPcMNa4orlimVJRJLsizmM/4tzk1uUvI6FlaaVJpSglfZvuUJ6JtiGfBIuPt9JHGx7lpaWbEGjltVu2mG2lvV44Iq9lsxToUm4bHQCEGSvkOWQ0UoVGQozMZdChjaXD0o9RYVF6Up1cEFbG5f+/9WRV5dKW+uRX5cllNBQtzC8MImXn5exl76XwJfSl+CXbFTulxx0M5T+//WXHZR6edFKNJgzmEuYZpgOO3VxUT0wBlxBBlfKmLeYyJjHmP9KJ23TFrBV4ZjmmOyYeJM5mSlKcktXmAWZ9ZkMmjuaEJpYmiVXxDaxkNWb4JrimgWb9JoOTBSbLZsAhjRQNJuoacM4fTBQm0CbPp1FWmMYjptLQgKc/5sMnGie1J23n5Khq6HhoCOh36F+nYOdNKEOnoho/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/EnVshk6EgojsZM6I5nbmgtKKQnpWenp6injRNqp6vnmRDwZ5gO+U5HT0yT743K4wCnwiflksklKJtF5/+/zmfn1aKVkWfuJmLkPKXf4Rin2mf3HqOnxZyvkt1SbtJd3H4SUhDUUqec9qL+hifeX6JNo5pk/OTRIrskoGTy5NsiblEF3LrPnJ3Q3rQcHNE+EN+ce8Xo3C+GJk1xz6FGC9U+BciN/sWORjhNnQX0RhLXyM3wBZbVyVK/hOoEsYTthQDhaY2/v9VhJRJZXExPlxV+z5ScPRE7jadmSZv+WczNxU85z1sWCIZEGhXQD834UCLQA9BIWzLVJ5WsWaSVt8PqAsNDsaTE4uck/hOK1EZODZEvE5lBH8DS0+KT1FWaFqrAcsDmTkKAxQENTQpT8ACs451AtqKDAKYTv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/zVANUaJPA08OSoo+Qk8uUGxQgVDMT+VPWFD8UP7//v/+//7/dm6VNTk+vz5ybYQYiT6oUcNR4AXdRKMEkgSRBHqNnIoOB1lSpFJzCOFS/v96RoxxjEMgDKxJ5BDRaR0O/v/ePpl0FHRWdJhzjku8So1A0FOENQ9yyUC0VUUDzVTGCx1XXZL0lmaT3VeNV39XPjbLWJlaRor6Fm8XEBcsWrhZj5J+Ws9aElpGWfMZYRiVQvU2BW1DdCFag16BWteLEwTgk4x0AxMFcXJJCJT7ib2ToDceXJ5cXl5IXpYZfBnuOs1eT1sDGQQZATegGN02/hbTNiqBR4q6HXI0qIkMXw5fJxmrF2taOxdEWxSG/XVgiH5gYCgrJttfuD6vJb4liJBzb8BhPgBGABsmmWGYYXVgmywHLdRGTZH+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/3FkZUZqKyk6IitQNOqYeC43Y1uktmQxY9Fj40lnLaRioSw7ZGtlcmn0O44wrTKJSasyDVXgMtkYP5TOZokyszHgOpBBhFUii49V/BZbVSVU7ngDMSoYNDJkNA8ygjHJQo5mJG1rZpNLMGZweOsdY2bSMuEyHmZyWNE4Oji8N5k7ojf+M9B0ljuPZypGtmgeaMQ7vmpjONU3h0QzalJqyWoFaxIZEWWYaExq1zt6aldrwD+aPKCT8pLqi8uKiZIegNyJZ5SlbQtv7En+/38/jz0EbjxAPVoKbkdYJG1CeDtxGkN2QvFwUHKHcpRyj0clR3lRpErrBXp0+D5fNkpKF0nhXwY/sT7fSiOMNT+nYPM+zHQ8dIeTN3SfROptUUWDdWM/2UwGTVg/VXVzdsalGTtodMyKq0mOSfs6/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/NPU5K/z7FSfNI+pEyV0KT44pkGN9QIVLnUXh3MjIOdw93e3eXRoE3XjrwSDh0m3S/PrpKx0rIQJZKrmEHk4FVHniNeIh40njQc1l5QXfjVg5B/v+WhKV5LWr6Pjp69HluQeYWMkE1kvF5TA2MSZkCuj1uF5c1a1VwNao21AENDOJ6WVr1Jq9anFoNWlsC8HgqWsZb/nr5QV18bXwRQrNbvF6mXs18+UmwF458fHyufLJq3H0HftN9Tn9hYlxhSHuXfYJeakJ1axYJ1mdOAM81xFcSZPhjYkndfyd7LAjpWkNdDHsOXuaZRYZjmhxqPzTiOfdJrWUfmqBlgIQncdFs6kQ3gQJExoAJgUKBtGfDmEJqYoJlglFqU4SnbRCGG3KGWn9BQBgrW6EY5FrYGKCGvPmPPS2IInQCWv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/bohFT4eIv4jmiGWJTYmDVlSJhXeEd/WL2Yuci/mJrT6jhPVGz0byNz2KHIpIlE1fK5KEQtRlKXHEcEUYbZ2fjOmM3H2aWcN38FluQ9Q2Ko6njglMMI9Kj/RCWGy7byEjm0h5b4tu2hfpm7U2L0m7kP7/cVUGSbuRBJRLimJA/IonlB2MO4zlhCuKmZWnlZeVlpU0jUV0wj7/SEJK6kPnPiUyj5bnjmaOZY7MPu1JeEruPxJ0a3T8PkGXsJBHaB1Kk5DfV/7/aJOJiSaML4u+Y7qSEVtpizxJ+XMbQpuXcZc4mSYPwV3Fi7JKH5jalPaS15XlkcBEUItnSmSL3JhFigA/KpIlSRSEO5lNmQZ7/T2bmW9LqplcmmWLyFiPaiGa/lovmvGYkEtImbyZvUuXS32TclgCEyJYuEn+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/+gURHgfJ7g9xWh9PViUJzlQYYEnaykHYU+cU5x7nDWcEJx/m8+bLZ6fm/Wh/qAhna5MBEEYnrBMDJ20oe2g86AvmaWdvYQSbt9vgmv8hTNFpG2EbvBtIITuhQBu1zdkYOJ5nDVANi1J3kliPduTvpJIk78CuXh3kk2U5E9ANGSQXVU9eFR4tnhLeFcXyTFBSZo2ck/ab9lv/v8ecBRUtUG7V/NYilcWnddXNHGvNKxB63FAbJdP/v+1F0mKDGHOWgtavEKIRCw3e0v8ibuTuJPWGB0PcoTAbBMU+kImLMFDlFm3PUFnqH1bYaRguUmLSfqJ5ZLic+k+tHRji58Y4T6zSthq83P7c9Y+PkqUStkXZkqnAyQU5UlIdBZJpXB2SYSS5nNfk/4EMZPOihaKhpPni9VVNUmCimtx/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9DSf8MpFYaBusLuAwCVcR5+hf+fcIWUEpSGC5FAZQKN8CKrUmwWb8YgxiEdKFa4jZbPbA2X5J5WoGKYhh0k808tAqWSoo59FBpPUw9nBN1cftCGIIPbuSQ60RXbU9+Z3CvbNY87T8tPgJuDG9vPfUDUXW8Nsg0gEbaPnFIxFlukj5JQY8cjMBrEljIV9Y2UhT+cGJDcUrjL7ASvSO5aGdpmBPlNPR73zaDitY3+jOfTBpqrTa3bD6E30TORCZtUW2CbN5vF28JcT2DOhftg4BsU3DbF4lZglqzF2FacVoFGfxBLTfvWTwXxzaOcZCTmmalQm5aK1qTQitq+T42d1tEykIdcVlC4YmwTyhtwlzORE1+vUMMalZCBBOmcDNx6UOlPd9sJfhPSmV+61kvXfM9XF9dSt8XpH0mhP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/hVT6OgAzFAJ+V9UIGQblP54ftqIDcFuRcF2Pc9N8WYoglMhP53/NchBz9Ho4czlz9lZBc0hzqT4Ye2yQ9XHySOFz9oHKPgx30T6ibP1WGXQedB904j7wPvQ++j7TdA4/Uz9CdW11cnWNdXw/yHXcdcA/TXbXP3R23D96dlxPiHEjVoCJaVgdQEN3OUBhZ0VA2zWYd2pAb0BeXL53y3fyWBh4uXAceKhAOXhHeFF4ZnhIhDVVM3kDaDJ5A0EJQZF5mXm7jwZ6vI9nQZF6skG8enmCxEHPett6z0EhTmJ7bHt7exJ8G3xgQnpCe3ycfIxCuHyUQu18k4/AcM8Mz33UfdB9/X2uf7R/n3KXQyCAJYA5ey6AMYBUgMw9tFegcLeA6YDtQwyBKnMOgRKBYHUUgQFEOTtWgVmBWoH+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/xNEOlh8gYSBJUSTgS1EpYHvV8GB5IFUgo9EpoJ2gsqC2IL/grBEV4NploppBYT1cGSE42CIhARFvoThhPiEEIU4hVKFO0VvhXCF4IV3RXKGkoayhu+GRZaLhwZGF0auiP+IJIlHiZGJZ3kpijiKlIq0ilGM1IzyjByNmEdfWMON7UfuTjqO2FVUV3GO9VWwjjdIzo7ijuSO7Y7yjrePwY/Kj8yPM5DEma1I4JgTkh5JKJJYkmuSsZKukr+S45LrkvOS9JL9kkOThJOtk0VJUUm/nheUAVMdlC2UPpRqSVSUeZQtlaKVp0n0lTOW5UmgZyRKQJc1SrKXwpdUVuRK6GC5mBlL8ZhEWA6ZGZm0URyZN5lCmV2ZYplwS8WZnUs8mg+bg3ppm4Gb3Zvxm/SbbUwgnG83whtJnTqc/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+nlBWk529ncCd/J32lLaPe56snrGevZ7GntyU4p7xnvieyHpEn5QAtwKgAxppw5SsWdcEQFjBlLk31QUVBnYGuhZXV3NxwgrNCr8LalQ7+MsLnlT7CzsMUwxlDHwM52CNDHpWtQzdDO0Mbw2yDcgNVWkvnKWHBA4ODtcOkA8tD3MOIFy8DwteXBBPEHYQHmd7EIgQlhBHNr8Q0xAvETsRZFOthOMSdRM2E4GLdxUZFsMXxxd4TrtwLRhqGS0aRRoqHHAcrBzIHsNi1R4VH5hxVWhFIOlpyDZ8Itcj+iMqJ3EoTyn9gmcpkynVKqWJ6Cqgjw4ruJc/K0eYvZpMLP7/iCy3LOhbCC0SLbctlS1CLnQvzC8zMGYwHzPeM7FfSGa/Znl6ZzXzNf7/ukn+/xo2Fjf+/0YDtVgOZ/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/GGmnOld24l8RPrk+/nWaINBIuEoZQZqK7kINQztANEOWQ0VKygXSUREGn1moHr47/zwERNZEiFd0Rps5L0fohcmZYjfDIV6LTov+/xJI+0gVSglywEp4DGVZpU6GT3kH2o4sUI9SP1dxcZlSGVRKP6dKvFVGVG5UUmv+/3M0P1Uydl5VGEdiVWZVx1c/SV1YZlD7NMwz/v8DWXxHSImuWolbBlyQHaFXUXH+/wJhEnxWkLJhmk9iiwJkSmRbXfdr/v+EZBwZ6or2SYhk7z8SZcBLv2W1ZhsnZZThV5VhJ1rN+P7/uVYhRfxmak40SVaWj229bBg2d4mZZ25oEWReaP7/x2hCe8CQEQomaf7/OWlFev7/+mkmmi1qXzZpZCEAg3k0altrLF0ZNf7/nWvQRqRsO3VliK5ttlj+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/xw3jSVLcM1xVDyAcoVygZJ6IYtyMJPmctBJOWyflFB0+A4niPWIJilzhLEXuG4qSiAYpDm5Nv7//v8/RbZmrZykmEOJzHdYeNZW30AKFqE5LzfogMUTrXFmg915qJH+/7dMr3Crif15CnoLe2Z9ekFDe355CYC1b9+iA2oYg6JTB26/kzZoXZdvgSOAtWntEy8ySICFXTCMg4AVVyOYSYmrXYhJvmXVadJTpUqBPxE8NmeQgPSALoGhH0+BiYGvgRqCBoMvg4qDyjVohKqG+kjmY1aJCHhVkriJ8kPnid9D6IlGi9SL+FkJjP7/xY/skP7/EJE8kfc9XpHKStCPj3KLVueU6ZWwlbiVMpfRmEmZapnDmSiaDptanZudn374niOfpExHlZOionH/opFNEpDLpZxNnAy+j8FV/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+6j7AkuY+TSglFf35Wb7Fq6k7kNCyLnXg6N4CO9RckgGyLmYs+eq9m6z1Vdrc8NVZWWZpOgV5YYr9WbQ4Ojm1biD6eTN5j/v/2F3sYMGUtVkpcGlQRU8Y9mJ19TCJWHlZJf9hedVlAPXCHHE7qD0kNujYXgV6dGI07dkWcTna5d0WTMlRIgfeCJVYygRiEvYDqVWJ5Q1YWVJ0OzjUFVvFV8Wbigi02NHXwVbpVl1RyVUEMlgzQXkhRdg5iLKIOq55afd5VdRCdYm2XlFTNjPZxdpH8Y7lj/mNpVUMrcpyzLppR3zSnDadRTVQeVRNVZnYtjoposXW2gASIhofHiLaBHITBEOxEBHMGR5BbC4OTaHtW9CYvfaNBc33QbrZycJHZEQiS/DyppqwO+Q5mcqIcTkfCT/l/6w/6QP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/XZwfZaAt80jgR3yd7A8KDv7/o3XtD/7/SGCHEaNxjn5QnRpOBE53NQ1bsmxnU6w23Dl9U6U2GEaaWG5LLYJLVKpXlVp5Cf7/UjplJHRzrJ4JTe2b/jwwn1tMqU+eld6fXIS2PbJys2cgNy5jJX33Piw+KjoIkMxSdD56NulFjgRAdvBatg56eC5/p1i/QHxWi5t0XVR2NKSFnuFM/v/7Nxlh2jDyQ/7/XVapEqdXY0kGnjRSrnCtNf7/fJ1WfDmb3ldsF1Nc02TQlDVjZHGthigNIm3iSnEN/v/+UQ8fjl0Dl9EdgZ5MkB97ApvRXKN7aGI1Y/+az3sqm358/v9CfIZ8FZz8ewmb/v8bnD5JWp9zVcNb/U+YnvJPYFIGPtFSZ1dWULdZEl7Il6udXI9pVLSXQJm6lyxTMGH+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/yxp2lMKnAKdO0xBloBpplBGdW0X2plzUv7/WZGBllyR/v9RkZeOf2MjbcpqEVaOkXp1hWL8A09zcHwhXP08/v8ZSdZ2nZsqTtQMvoNCiP7/SlzAaf7/elcfUvVdzk4xbPIBOU+cVNpUmlKCjf41/v/zNf7/Umt8kaWfl5sumLSYupqonoSeenEUe/7/+msYiHh//v8gVkqmd45Tn/7/1I1PjhyeAY6CYn2DKI51jtN6d0o+eth46mxnigd2Woomn85s1ofDdbKiU3hA+AyN4nJxcy2LAnPxdOuMu0ovhrpfoIi3RP7/OxgFbv7/foobJf7//WBndteaRJ1uk4+b9Yf+//7/94wscyGXsJvWNbJyB0xRfEqZWWFZYQRMlp59Yf7/X1dvYaZiOWL+/1w64mGqU/UzZGMCaNI1/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9XXcKL2o85jv7/2VBGHQZ5MlM4ljsPZUD+//53/v/CfBpf2nwtemaAY4BNfQV18nSUiRqCDGdigIZ0W4DwdAOBJHeJicxnU3XRbqmHzofIgYyHSYqtjEOLK3f4dNqENTayaaaN/v+pif7/uW3BhxFA53TbPXZxpGCcYdE8/v93YP7/cX8ti/7/6WB+SyBSGDzHPNdeVnYxVUQZ/hIDmdxtrXDBXK1hD4p3Nu4ARmgOT2JFH1tMY1Cfpp5rYmAkYSRiJGMkZCRlJGYkZyRoJGkkdCR1JHYkdyR4JHkkeiR7JHwkfSRwIXEhciFzIXQhdSF2IXcheCF5ITZOP06FTqBOglGWUatR+VI4U2lTtlMKWYBb210zL39e/v9QX2FfNGX+/5J1/v+1j/7/qADGAv0w/jCdMJ4w/v/+/wUwBjAHMPwwO/89/z0nQTBCMEMwRDBFMEYwRzBIMEkwSjBLMEwwTTBOME8wUDBRMFIwUzBUMFUwVjBXMFgwWTBaMFswXDBdMF4wXzBgMGEwYjBjMGQwZTBmMGcwaDBpMGowazBsMG0wbjBvMHAwcTByMHMwdDB1MHYwdzB4MHkwejB7MHwwfTB+MH8wgDCBMIIwgzCEMIUwhjCHMIgwiTCKMIswjDCNMI4wjzCQMJEwkjCTMKEwojCjMKQw/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+lMKYwpzCoMKkwqjCrMKwwrTCuMK8wsDCxMLIwszC0MLUwtjC3MLgwuTC6MLswvDC9ML4wvzDAMMEwwjDDMMQwxTDGMMcwyDDJMMowyzDMMM0wzjDPMNAw0TDSMNMw1DDVMNYw1zDYMNkw2jDbMNww3TDeMN8w4DDhMOIw4zDkMOUw5jDnMOgw6TDqMOsw7DDtMO4w7zDwMPEw8jDzMPQw9TD2MBAEEQQSBBMEFAQVBAEEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BFEENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBOchuCG5Ic8xzABaTooAAlKRRP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/sJ+IUbGfB3b+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/+L/5P8H/wL/MTIWISEhmzCcMIAuhC6GLocuiC6KLowujS6VLpwunS6lLqcuqi6sLq4uti68Lr4uxi7KLswuzS7PLtYu1y7eLuMu/v/+//7/gwJQAlsCVAJ1AlMB+ABLAYoCagKBeLmSz4i7WFJgp3z6WlQlZiVXJWAlbCVjJVolaSVdJVIlZCVVJV4laiVhJVglZyVbJVMlZSVWJV8layViJVklaCVcJVElUCVtJW4lcCVvJe3/RwXbkt8FxT9MhbVC73O1UUk2QknkiUST2xnugsg8PHhEZ99iM0mqiaACs2sFE6tP7SQIUClthHoANrFKEyX+/34DpF+AA0cD224fBP7/AVF6NA5RbJhDNxaEpEmHBGBRtDNqUf8L/CDlAjAljgUzMoMZglt9h7MFmTyyUbhR/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v80nclRz1HRUdw801GmSrNR4lFCU+1RzYM+aS03e18LUiZSPFK1UldSlFK5UsVSFXxCheBSDYYTa/7/3opJVdlugD9UCew/M1P+/+ILy2wmFxto1XNKYKo+zDjoFt1xokRtU3RTq4Z+U/7/lhUTFuZ3k1ObiqBTq1OuU6dzcldZP5xzwVPFU0lsSU7+V9lTqzqPC+BT6z+jLfZTdwwTVHlwK1VXZlttbVRTa3QNXVWPVKRUpkcNF90OtD1NDbyJmCZHVe1ML1QXdIZVqVX+/9cYOkBSRTVEs2a0EDdWzWaKMqRmrWZNVk9W8XjxVoeX/lMAV+9W7VZmiyM2TxJGV6VBbmyLcEJXsTZ+bOZXFhQDWFQUY0MmWPVLXFiqWGE14FjcWDwS+1j/W0NXUKF4QtOToTUfWaZowzZZbv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/PhYkWlNVkhYFhclZTg2BbCpt3BfZWfsXshembXFtKBjVFvlZRW6rWmNa5japSf7/CDeWWmV001qhb1QlhT0RGTI3uBaDXtBSdluIZXxbDnoEQF1IBALVW2BhNBrMWaUF81udWxBNBVxEGxNcznMUXKUcKGtJXN1IhVzpXO9ci135HTceEF0YXUZdpB66XNdd/IItOAFJSSBzIYeCNjjCOy5eimr+/3pevETTDKZTt07+/6hTcRcJXvRegoT5XvteoDj8Xj5oG5QNX8EBlPjeOq5IOhM6X4ho0CP+/3EkY1+9l25ucl9AkzaKp1+2XV89UFJqH/hwaCbWkZ4CKYoxYIVmdxhjOcc9OTaQV7QncXlAPp5g/v+zYIJJj0lTeqR04VCgWmRhJIRCYab40m6BYfRRVgaHYapbtz/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/18o02Gdi12Z0GEyOYApwSgjYFxhHmWLYxgBxWJwF9ViDS5sY99JFzo4ZPhjjhP8F/7/im82LhSYjEAdV+Fk5WR7lGY6OmRXOk1lFm8oSiNKhWVtZV9lfjC1ZUBJN0vRZdhAKRjgZeNl318ANBhm9zH4MURmpDGlMUtmdQ5nZuZRc2b+/z0eMTL0hcgxE1PFd/copJkCZ5xDIUorO/ppwjf+/2dnYmfNQe2Q12fpRCJoUG48kgFo5jOgbV1obzThaQtq34pzacNozTUBaQBpMj0BOjw2gDusZ2FpSor8QjZpmGmhO8kDY4OQUPlpWTYqIUVqAzedavM7sWfIapyRDTwdayMJ3mA1a3RrzSe1bts6tQNYGUA3IVRaO+Fr/D7cazdsiyTxSFFrWmwmgnlsvD3FRL09pEEMSQBJ/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/JPOU26zwyDYOb+TGRJI9/N2glbaFt622WbVxtfG4Eb39JhUBybjOFdG/HUf7//v8uhCGL/v8vPlN0gj/MeU9ukVpLMPhvDTedbzA++m6XFD1AVUXwk0RvXG9OPXRvcJE7PZ9vREHTb5FAVUE5QPA/tD8/Qd9RVkFXQUBB3WFLcH5wp3CBcMxw1XDWcN9wBEHoPbRxlnF3QitxRXGIWkpx/v+cXGVDT3Fik8FCLHFaRCdKIkq6ceiLvXAOckKUFXIRWUOUJHJBkwVWLnJAcnRJvWhVcldyVT5EMA1oPW+Ccv7/K3MjSCuI7UgEiChzLnPPc6pzOgwuaslzSXTiQecWJEojZsU2t0mNSftJ93MVdANpJko5dMMF1z7+/60oYHSyjkd05HN2dLmDbHQwN3R08ZMsaoJ0U0mMSv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/X0F5So+LRlsDjJ4YyHSIGQ51/v8eddmOSxrXW6yOhZNNdUp1Z3VudYJPBD8TTY51XXSedbR1AnYsdlF2T3ZvdnZ29WOQdu+B+DcRaQ5poXaldrd2zHafb2KEnVB9URweHncmd0B3r2QgUlh3rDKvd2SJaInBFvR3/v92ExJKymiveMd403illi554FXXeDR5sXgMdriPhIgri4NgHCaGeQCJAmmAeVdYnXk5ezx5qXkqbiZxqD7GeQ2R1HkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAIAAAAAAgAAAAAAAAAAAAAAAAAAAEAh////////////////////////////////////////////////////////////////////////////////////////N6L//////////////////////////////////////////////////////////////////////////////////////////0KicSFyIXCi//9DonghLyFtomyi//9MIv//bqI0omshXiH/////LSH//3ki//8xov//a6L//////////0SiIqohqiSqKqojqimqIakuqjKqMao0qjOqQKo/qkKqQar//1CqUqpRqlSqWKpTql8hLKljqmKqZapkqnKqMKlOqSKrIaskqyqrI6spq0GpLqsyqzGrNKszq0CrP6tCq0GrQ6lQq1KrUatUq1irU6tgIUypY6tiq2WrZKtyq1Cpc6snqierJaolqyiqKKsrqiurLKosqy+qL6stqi2rMKowqyKpQqk3qjer/////zaqNqs4qjirNao1qzqqOqs7qjurPao9qzyq//8+qj6rJKlEqUeqR6tFqkWr/////0aqRqtEqkWpJqlGqUiqSKtJqkmrR6lKqkqrTKpMq0uqS6spqUmpKKlIqU2qTatPqk+rTqpOq0qpK6lLqVeqV6v/////VqpWqy2pTalZqlmrW6pbq1qqWqtcqlyrXapdq1+qX6teql6rYaphq2CqYKsvqU+pbKpsq2mqaatmqmara6prq2iqaKtqqmqrcapxq3SqdKtzqnWqdat3qnerdqp2q////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yaqJqtDqkOrVapVq2eqZ6twqnCrbaptq2+qb6tuqm6r////////////////////////////////////////////////////////////////Oaswov//////////////////////////////////////////L6IyojaiNaL//zOiOKI5omGm//9ipmOmZKb//2em//9ppmymdqYhJiImIyYkJiUmJiYnJigmKSYqJismLCYtJi4mLyYwJjEm//8yJjMmNCY1JjYmNyY4JmWmaqZxpnKmc6Z0pnumQSZCJkMmRCZFJkYmRyZIJkkmSiZLJkwmTSZOJk8mUCZRJnimUiZTJlQmVSZWJlcmWCZ1pnqmd6Z5pnymJydCp0OnRKdFp0anR6dIp0mnSqdLp0yn//9Np06nISciJyMnJCclJyYnKCcpJyonKycsJy0nLicvJzAnMScyJzMnNCc1JzYnNyc4JzknOic7JzwnPSc+Jz8nQCdBJ1EnUidTJ1QnVSdWJ1gnWSdaJ1snXCddJ14nXydgJ2EnYidjJ2QnZSdmJ2cnaCdpJ2onaydsJ20nbidvJ3AncSf//1cncqdzp3Sndad2p3eneKd5p3qne6d8p///fad+pz4h//////////89IUIh//9GIUch/////0ghSSH/////dyJ4Iv///////0UhRCH///////////////////////9zIv//bCFtIf//////////////////KCJuIf///////////////////////////////////////////////3Gi/////////////////////////////2+i/////////////////////3Ii//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8rIiwiKiItIv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9NIv//TiJPIv//XyJQIv///////2AiOiL/////OyL///////////////9dIf//////////////////ZSL/////ZyJnIf//XCL///////////////9KIksiQSJAImkiaiL//////////////////2ghaCL//////////////////2Yi/////////////////////////////////////////////////////2Ii//////////////////////////////////9iIWEi//////////9lIWYh/////2MiZCL//////////////////////////////////////////////////////////z4iPyL/////PCI9Iv////////////////////////////////////////////////////////////////////////////9dIl4iISgsKCIoLSj/////////////////////Iyj/////LigkKP////8vKCYo/////zEoJSj/////MCgnKDwo/////zco/////zIoKSg+KP////85KP////80KCgo/////zgoPSj/////MygqKP////86KD8o/////zUoKyj/////Oyj/////QCj/////////////////////Nij///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jIiIi//////////////////////////////////////////8lIiQi/////////////////////yciJiL/////////////////////ISJ+If///////3sh/////30hfCH//////////////////////////////////////////////////////////////////////////////////34ieiF5If///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2oh//9pIf///////////////////////////////////////////////////////////////////////////////////////////////////////3Yi/////3Ui//90IiEhIiEjITch//85ITohOyFSIVMhVCFVIVYhVyFYIVkhWiFbISkiLiJMIU0h////////////////QSH///////////////////////////////////////////////////////////////////////////////////////////////8hJCIkIyQkJCUkJiQnJCgkKSQqJCskLCQtJC4kLyQwJDEkMiQzJDQkNSQ2JDckOCQ5JDokOyQ8JD0kPiQ/JEAkQSRCJEMkRCRFJEYkRyRIJEkkSiRLJEwkTSROJE8kUCRRJFIkUyRUJFUkViRXJFgkWSRaJFskXCRdJF4kXyRgJGEkYiRjJGQkZSRmJGckaCRpJGokayRsJG0kbiRvJHAkcSRyJHMk//////////////////8rISwhNSE2If////8hJSIlIyUkJSUlJiUnJSglKSUqJSslLCUtJS4lLyUwJTElMiUzJTQlNSU2JTclOCU5JTolOyU8JT0lPiU/JUAlQSVCJUMlRCVFJUYlRyVIJUklSiVLJUwlTSVOJU8lUCVRJVIlUyVUJVUlViVXJVglWSVaJVslXCVdJV4lXyVgJWElYiVjJWQlZSVmJWclaCVpJWolayVsJW0lbiVvJXAlcSVyJXMldCV1JXYl//////////8mITwhMyE0IWwwekMhsDc8IrAjsP//fEtmPjA7ZT48MiSwVEk/Tf//IlAvMSWw//9uMyNQJEBCUlY1Okr//////////2c+JrD//z5O//8nsCiw//9CSv//KbD//yRQKrD//2ZDK7AssC2wJVB6Nv////8usCZQ//9dNDBD//9nPCdQ/////yhQL7AwsClQNUcxsFc1//8ysP///////zdH//9jRkM4M0v//zOw////////SWkqUGg+K1A1MjSw//81sGU2cDhpTP////8mVjaw//////////83sDiw//////////////////9wTf//fUY5sDqw////////O7D//////////yU0PLA1Nf//LFD/////LVA7Tv//PU1oQS9QdjtzRj2wMlD/////PjFfOP//XjhmMD6wP7BLT0pP//8zOiEwQLAzUDRQNVA0SzZQ//9yOGcwckv//3w1/////301fjViRDxOQbA3UP////84UP////85UP////9CsE0//////////////zo9Tj8+UEOwPFD//z1QWDX/////IzpwMv//O1A6UClKRLD///////9GO0U7PkI/UFVJZ0BFsEaw//84IUBQQlBHsEiwSbBlQmFOSjD/////SrD//////////0FQPjJLsEQ2TLBnQ02w//9OsG83Q1D///////8kR///T7BQsFGwUrBrNFOwVLD//////////1WwRFBLMFawV7BgOGw0ekkySFk1WLD/////WbBasFuw//9csHEy//9nUEFF//////////////////////////////////////////9dsGxHRlBesP//YLA8SGGwYk5isC0/Y7BHO2SwdztAMmWw//9msP//Z7BRRP////8iQ0pQaLBpsP//arBrsEwwY0Q7PTQ6JE1ssE5CbbA/Mm6wSVBvsD5NRVBHUG46SFAkVXCwX7D/////cbD/////////////UFBysP//c7D//3SwU1BRUHWw//9CMv//O0pLUHawd7B4sHmwT1BzOHqwe7BIO///fLB9sCY0frAhsVRQ//9MUCKxI7FjTiSxeDslsU1QJrFSUCexKLEpsf//VVAqsU5QK7EssSE2//9NMC2xLrEiNkEy////////////////////////JVX//3lLbkl0OP////8vsf////8vPzdOMLH//zGx//8ysTOxNLE1sVhKNrE3sTg3JUJkMjixObH//zqxO7FTPTyxPbE+sVlQP7FeUFxQQLH//1dQ/////y9CWlD//11QW1BBsV1K//9YUEKxLj9DsXNLX1BgUP////////////////////8kPW1QRLH//0WxUEf//zZJaFD//3BK//82Mv//RrFHsWxQSLFJsUqx/////0uxZlBvUEyx//9SQU2xRDhOsVxHT7FHYFCxblBdRVGxY1D//3Y4UrFTsXU4YVBUsVWxVrFXsVo8//9pUFixb0pNQ2VQcTdZsWJQalBkUFFOa1BBT1qx//9bsf//XLFdsf//XrFmNv////9wN///drH//////////1+xYLFhsXBQ//9isWOxcVB1UE4wZLH//2Wx//9msVBKdFBnsWixabH//3NQd1Bqsf//a7F2UP//ZET/////bLFtsf//brFvsf//cjdwsXGx/////3Kx//94UHOx/////3SxdbFFPP//JkJlRHY2//95UP//////////NjX/////elB3sf//eLF5sXxQerH///////97sf////81S3yxfbF+sWY3IbIisiOy//8ksv//MTt3SHtQJbImsv//J7IosimyKrIrsv//////////////////LLL//0U6Q03//y2yLrL//35QI1F9UEQ6//99Pf//L7Iwsv////8xsjk3//8ysv//JFEzsjSyTzb//zWy//8hUSJR//82si9GN7J8QTiyIzb//zmyOrJNSyVR//87sv//PU7//zyyPbImUT6y/////z+yKVFAsidRQbJOQUKyQ7L///////8oUSpRRLL//0WyUbL/////LFFGsv////8rUUeySEr/////SLI3NS5RL1FJsi8y//9KskuyTLItUf//TbJOsk+yULL//1Ky//90PP//MlExUTBRU7JWUFSyM1FVslayV7JYsn49//80Uf//WbL///////9asluy//8lTf//XLJdsv//XrL//1+yWUxgsmGyYrL//zZRY7JksjVROFE3Uf////85UTpRdDBlsjU4Ozc8PXtDJDZoQHc4ZrJuOTxRSExGRWeyeTv//ztRaLI9UWmy//9qsmuy//9eRf//dTP/////bLL/////PlH//22yfkZusv//NEFAUUFRLEh4ODtPQlH/////Jjb///////88SjZCcTY1Rf///////3M3//9vsv//Q1H//0RRcLJxsmJGXzH/////R1F9OnKyRlFGOnOySFFuZklRQUtKUf//S1FMUWk+dLJMPP///////3Wy/////yc0drJPUXeyTVE9TE5R//9aSVBRUVFSUV9FeLL/////VlFUUVVRU1FjOldRakxkTnmy//96sv//e7JYUXyyfbL/////frL//yhAWVFaPf//IbNaUf//fEM/TmBF//8is///I7MksyWz//8ms0VS//8ns/////9bUSV0RTYos///XFFeSymz/////yqzaD18Qv//XlFkRv////9fUSuz//9gUS4zLLMtsy6zYVEnNi+zTEZ6MVA9/////yFIYlFhRTCzMbNPP2NRMrMsSlpAIjT//yk0ZFH/////ZlH/////OjczszSzZVE1szazc043s///////////aT3//////////ziz//89SExK//9nUTmzeE1oUf///////2lR//9+RTqzO7NqUf//PLMpQH46dDdrUUk7bzk9s////////////////2ZEbVE+s///J0L//z+zbzpuUW9RMEH//2xR//////////9xUUCzNktBs0Kz//9Ds2Q5RLP//3BRRbNGs0ez//91N146bUdIs/////90UXJR////////SbN7SWo+e1FkM3VRc1FPQf//SrNLs0yz////////d1H//3ZRTbP//06zRDP//0+z//9gN3xRLU5Qs///UbN4Uf///////31RelFSs3lRU7NUs1WzVrP//1ezT05Ys/////95OEMy/////3ROWbNas1uzXLP//3U9WEVlOSJSI1L//12zXrNlTv////8rTyVSX7Ngs2Gzejhis2OzJFJksy8z//9lsyZS//9WS2azPERnsyZNaLNZSv////9psydS//9qs///a7NVcP//bLMwRm2zKFIqNDNM//9us2+zIT4pUmdKLVJwsypAKlJQNnGzK1IrNHKzc7N0s///dbP///////92s3ezLjcuUnizL1J5s3qzMFIxUls8////////ezheTHuzaEx3Rnyz//9xSjJS//8zUv//fbN+syG0NVL//zdSNlIitP//I7T//zhSPTJMSyS0fDo5UiW0JrRZQSe0KLQiPik2//86Uv//KbT//yq0K7QstFtILbQutC+0//87UjC0PFIxtD1S//8ytP////8+UiRJaDZlMDO0NLQ1tD9GP1I9PTa0aUD//0FSQFIjPmE4Q1I+SDi0N7REUv///////1xINEJuQig2/////25GMUM5tG5HOrROS///RlL//2pAO7T//zy0//89tDU3/////0dS/////z60P7RIUiwxdTBtNEC0KEJRNXFN//9LUjcyQbT//0pS/////0K0Kjb/////TFJDtHFM/////0S0RbT/////////////RrT//////////0e0SLT//01S//9STkm0fDj/////SrT//zY4TlJLtP////9MtFBST1L//18/OTFNtE60//9eMVFST7RSUv//ULQ3OFG0UrRTUlO0VLT//1W0bjX//1a0/////1e0//8yO1RS//9YtP////90SzU6WjUnTVBBP0h9PFm0/////1q0W7RHPVy0aDx1PP//dj1dtEBI//9etF+0V1JgtEMxUUF9OEU4ZzZhtGK0W1IhQ35CKzYkPlxSWlJEMmZCODxLOyYx//9jtHAzZjlKO///XVJeUmS0STVGM////////2c5SDVfRCUxMUY+TCE5eU1HRX44//9ltP///////////////2a0Lzf//2dS//9jNkpLZ7T//////////11IaLRptGZSarReNGFSYlJkUmu0//9stP////9ttG60ZVL//1s1YT///y1KY1JfUmM4//9gUv//JE9vtHC0//9ySnG0aERiOHA5/////3K0aFJztP//XUb///////////////////////////////90tGxS/////3W0//92tP//d7R4tH48ebR2PHq0//97tHy0//9vUm1S//8jTH20alJzUm5S////////cVJGOD9M//9+tHJSIbX//yK1dFIjtXZS//8ktSW1//9wOkJPJrVrUmlSdVIntXBS/////yi1KbX/////////////KrX/////K7X//yy1eFL//yNTelIttS61flIvtTC1IVN7UjG1MrU+U///M7VpOjEz////////NLV5UjW1NrU3tSVTdjAkUzi1JTBKSSJT//98Uv//ObV3Un1SSDo6tf////87tTy1////////////////////////JlP//////////////////z21dzAvU/////8nUyhT//8lPmlLPrX//z+1LVMsU0C1/////y9F////////QbX///////8uU///QrUrU0O1RLVFtUa1/////zQxR7U2OjA/SLVJtf////9KtUu1TLUpU2JF////////KlNNtSIw//////////////////////////////////////////////////9OtU+1/////zRTI03//yc+ULU6U///UbVStf//OVMwU///U7VUtVW1Q0L//zFTVrX/////b0I2UyY+V7X//1i1WbX//zNTWrX//2RMW7Vctf//PDf/////N1M4U121//9etV+1NVM7U2C1//9htWK1//8yU2O1//9ktf////////////////////////////////////////////////////9BU0ZT//9CU2W1PVNmtWe1R1MxQf//aLVJU2m1Ijk/U31D/////2q1a7X//2y1bbVutW+1/////3C1Q1M8Uy00//9uNGUzRFNAU////////3G1crX/////djdKU0hTU0FKNSw2c7VFU///dDb//3S1////////RDH/////////////////////dbX//3a1//93tU5TTFN4tSdU//95tf//erV7tf//fLX/////fbV+tSG2UVP/////IrYjtv//S1Mktk9T//8ltk1T/////ya2TDtQU///////////J7b///////////////////////////////8otlNT//9YU////////1ZTVVMptiq2MkP//yu2RTIstv////8tti62L7YwtjG2Mrb//1JT//9UUyg+MzEztv//V1P//////////////////////////////////14y/////zS2/////2JTNbZ8Pl5TNrZcUze2XVM4tl9TObb//zq2O7Y8tv//PbY+tj+2PTFAtkG2//9Ctv////9Dtv//RLY5QUW2WVNGtlpT////////R7b///////////////96M/////9Itv//SbZKtku2TLZhU///Tbb//280TrZkU2BTY1NPtv//ULb//1G2Urb//y5KU7b/////VUb//zhI/////////////2ZT////////VLZVtmVTRTNWtv//Z1NXtli2/////2pT//////////9pU1m2////////WrZbtv////9ctl22XrZoU///OUf/////a1NftmC2YbZitv//Y7ZktmW2bFP/////Zrb//2e2blP//21TaLb//////////3BT//9ptv//c1NxU29TclP//2q2/////3RTa7Zstm22cLZxtnVTbrZvtnZT//93U////////3hTRVFytnw8TTtztnS2czJ1tngwdrb//0RDd7Z4tnm2erZ7tv////99tv//frZ5U///JDp8tk8wXj//////Ibcit///elNHOP////9xOf//fFN7UyO3JLdgSn1T/////yW3IVR+Uya3IlQntyNU//93N///KLdgMSRU//8ptyZU//8lVP//KrcrtyhULLf//1pFLbf//y63L7cwtzG3KVQ1MF86Mrczt///NLc9NzW3NrdPQ/////83tzi3/////ypUK1T/////LVT//zm3Orc7ty5U//9kOv////88tz23UTb/////N0v//z63P7csVC9UQTojOUC3/////////////////////////////////////zNUQbf//yU6QrczQ0O3RLcwVFpERbf//0a3R7dIt0m3Srf//0u3TLdNt///Trf//0+3ULdRt1K3//9TtzRU//9Ut2I/Vbf//////////zJUNVT//z83Vrf///////////////82VFe3YLf//1i3//9Zt1q3//9bt1y3XbdetzdUX7ckOUAzOVT/////Ybdit2O3OlT//2S3////////O1T/////OFT//////////2W3//////////9mt/////8xVP////88VP////89VGe3aLf/////ZEtpt///az5qt/////8/VEBUPlRrt0JU/////////////zhHbLdtt2gwVkl+t///Q1Rut///b7dwt///cbf///////9yt/////9zt////////30+dLd1tzk8drddR3A0//9rOne3eLd5t1lL//8yRnq3e7d4N09C//98t323QVREVCG4Irj//////////////////0RC////////RVT//yO4//9GVCS4JbgmuEhU/////2lE//8nuCi4/////y40/////ym4//8hdGExc0oquP//bD5IRf///////yu4Zjr/////TlT//yy4PUpdTv//////////////////Lbh0MkpULrgvuP//MLgxuDpBTVT//2NFMrj//0lFZEU5SE1E////////STozuP//NLhJVP//Nbj/////Nrg3uHYx//82Rf//////////S1T//0dU/////1A//////zi4T1T/////Obj//049Org7uDy4//8tNv//UFT//z24Prg/uEC4//9BuEK4//9DuES4/////2hKRbj//0a4fUH//////////0ZER7j//1JUSLhJuEq4////////S7j//09LTLj//1NU/////1hU/////024TrgvSv//////////V1RRVFRUVlRQuP//Jjr/////SUpRuP//T7hZVP//RUNSuP//dTL//20+U7hUuP//VbhbVFa4WlRXuGg5WLhcVF5UXVRZuP//YFRauFVUYlT//1u4XLj//2FUX1T///////9duP//TjtRP///VEFjVDxAbTBkR164////////W0T//2VUZFRmVGdUaFRpVP////9fuGC4/////1FKalRhuGK4/////0Yya1T//2O4ZLhluDxNMDP//0lSSD0/QmxUa0xnuP///////2i4NExpuGq4blT//2dCa7g3RUBCV0lvVHBUezFsuG24OjxxVG64//9vuHC4UDByVP////////////9zVHG4////////crhiMf//c7hxNGBGdEr//////////3dUVUF2VEA3dLh1uFtLdVT//2VFeVR2uHhUd7j//3i4ebh6uHtUe7h6VHy4//98Mf//fFQpPn5UJUN9uH1UfrgzSiG5/////yK5dz1bRSO5JLn//yFVJbn//ya5J7klOf///////yJVIUdeSFFM/////////////yVHKLkpuStVKrn///////8ruTg1//8suUVNLbn//y9M//8sVv//I1X//y65////////JlUvuUVC//8wuThL////////SkUxuTK5M7k0uf//J1U1uf///////za5//9lSze5Sjo4uf//Kj7/////Obn//zq5O7n//yhV//88uVA7PblPO///Prn/////OTBIOD+5K0BRMP//////////LFUtVf//KlVAuUG5Qrn///////9DuUS5ODEvNEW5KVX//0VMMUn/////RrlHuf//SLlJuf//Srn//ygwS7n///////95MP///////1E7TLlSMP//IzBNuf//////////MlX/////TrlPuVC5/////zBVUblSuf//////////PEz//zNV//8xVf//U7kvVTE//////1S5VbkuVf//VrlXuVpKWLn/////Wbn//2Q4Wrn//////////zdVOFX/////////////Kz7///////80VSxP/////1u5XLlMR125Xrk2Vf////9fuf///////2C5//////////9huf//////////Jzr///////9iuf///////zlVY7n//2S5WElluf////86Vf//NVVmuf///////////////////////2e5/////2i5abn/////ark7TP////////////////////////////9ruf//////////bLn//15Hbbn/////brn/////b7k7VTJJcLn//3G5crlzuf//dLn//////////3W5//////////92uf//////////d7l4uXm5//96uf////97uf//fLl9uTxVQFU9VX65//9HMj9V//8huv//Irr//yO6Ozz//z5VeTf/////JLpMVf////////////9FVUJV/////yW6//8muv///////ye6ZEP//0FV//8oukNV/////0RVKbr///////8quv///////////////yu6LLr///////9GVUdV//8tui66L7r///////////////8wunI0//9JVUhV////////////////////////SlUxuv//M7r//zS6//81uv///////za6bj7/////N7r//////////01V//9cRDi6/////0Ux//9LVf//Mrr//05V//85uv////////////9PVf//UlU6uv//UFX//1FV/////////////zu6PLr///////9SO1NVPbr//yY5VFU+uno7OEL//1VVVlVaOyc5P7pSTP///////yg1SThXVVgz//9AulhV//85Qv////9BukK6WVUjVv//WlX//1tV/////1xV//9eVf//Q7pEukW6RrpfVUe6//9gVUi6cEJJuicxaTxCMEq6V0EwNDU8S7ooOUy6Tbr//066T7pmRVC6IT0xNGhDakQ4MDk1dUr//0I8/////1I1a0A8PChNYVX//1G6Urr/////U7pUulw1VbpLOla6V7oyM2MxLD5IMli6YlVGTVm6//9auv////9JPVu6XLpkPGNVczRSRilMZFX//2VV/////1lJXbr//166Z1X//yg0dzZmVf//X7pgumG6YrpjujI0//8yP2tVITtkukkyalX//2hVbFVpVStHTVwzP///bVX/////QE5lum5VZrr//3BVZ7p+Q29V//8jQP//ezv/////aLpQQnc8dUlsQP//TTxxVS0+clVzVVMwOkJSP2m6dFUzRi4+//8vPv//dVX/////bUBquv////8wPv///////2u6bLp2Vf//d1VtumBM//9uuv//eFVvuv//cLpxukY2crr//3O6Ij10uv////91una6//95VXpVXDwsP3RGVD94SCJHSTZ7Vf///////281fFX//342//9PRjAy//9TO31VIlYhVn02//9+Vf//OEX///////93uni6//95uv//MEL//0tFSDx6unu6WEF6Tf//fLp9un66/////yRWIbslVlZGIrszO/////8juyS7J1b/////KFYluya7J7sou////////////////////////ym7Krv//yu7//8pVv////8su3Q0KlYtu///K1b/////////////////////Lrv//y+7MLssMjG7Mrv/////M7v//ztBZDQ0uy1WKEz//////////1JCNbtZMza7N7svVjFWXzT//zi7LlYwVv//M1b///////////////8yVv//NFb//zm7//86u////////////////zu7//////////89u///NVb///////88u/////89Ri42////////////////ZTI2VjtW/////zlWPrt3SnZKP7tAu///Qbv//2dF////////OFZUPf//N1ZCu///////////Q7tyP////////zxW//9Eu2o6/////0JWRbv//0NWPVYzMz5WR1ZGVkVWQVb///////9AVv////9EVke7SLv//0m7Srv//3hK//9Gu/////////////9Lu/////9Mu///////////Tbv///////9Ou///T7v/////ULtRu/////9Su///U7v//1e7S1ZIVv//Slb//3JNVbtJVv////9Uu////////1a7/////z9W/////1i7Wbtau1u7//9cu///////////cz9du///TFZeu///Nzpfu/////9NVv////9OVv////9gu2G7////////Yrtju///ZLtRVmW7UFb/////T1Zmu///Z7toRTpW////////V1b//2i7abtqu2u7////////bLv//227//9TVv//brtvu///Ulb//////////3C7////////cbtUVv//VVb//3K7//905v//c7v/////WFZ0u3W7Zk7//1lWVlb/////////////drv///////93u///Wlb//3i7YDRbVnq7//95u///XVZcVv////9eVv//e7t8u///X1b//25AIz3//327ZD3//2NBfrspOTg6KjlwNSG8//9gVv////85Ov////9KOGFWJkxDR2JW//8rOSK8I7z//yw0//8nQ1I2JLz//1Q7W0n/////QUglvP///////2NWdTQmvP///////2ZWJ7z//yi8KbwhRP//KrxlVmRWZ1b//2tE//8rvCy8//////////9jP/////8uvP////9VO///SkAtvFNCIjX//y+8IkT//zC8aFZpVm8+//////////85SzG8//9sVv////9rVmpWfUn//3NW//80vP//MrxaS///bVb//zO8Nbz/////b1ZrSza8blY3vP////84vDm8//86vHBW//8oSHFWPkpyVv///////zu8//88vD28Prw/vEC8//9BvP//MzQ/Si9HdFZ1Vv//LDk0NHZWODhETSlNdjR4VkK8I0T//y05MT7/////X0j/////Mj5DvP////9EvHg9/////////////2xEeUo5Rf////8uOf//XEn///////95Vv//Rbz//0a8R7xZRUI6SLz//0m8SzhKvG1E////////S7z//0y8//9DMG49LzlHTf//////////TbxOvE+8//96VntWUUf/////ULz//3xWd04tT1K8Ubz//1O8flZ9VlS8VbxHM1a8V7whV////////yRXJVdYvCNXWbxASTM+J1cmVyJX//9avP////8oVylX//9bvCpX////////LVcrV///LFcuV///ZDFuRC9X//96N3YyNkf//zBXe0ZbSly8MVcuT///XbxevF+8MldASjVXIVAxUGC8MDx1RjZX//9dNSREejA3VyZKMDlhvP//UENivGO8//9vRP//ZLxlvGa8Z7xvTDk4TDhovDhX//9pvGq8OVdrvD9XbLxlPP////9tvCVEbrwvNjpX/////2+8K0lwvEZDcbxyvDtX/////3O8dLz//3W8PFf//zA2//89V3a8Plf//3e8QFf//3ZFeLz//0FXQld5vENX//96vDRXM1f/////e7xEV0E3fLx9vP//J0l+vP//TDo3SSZES0lFV///Ib00PkYxIr1GVyO9JL3//0dXJb1yTCa9//9gSCe9KL1KV30xLEBJV0hXQjdUQv//TldMVym9S1cnTmU4Kr3//yu9eT1NV0xFPj3/////LL1ARlFXUFf/////Lb0uvU9X//9SV2Y4L73//zK9/////zC9U1d8SVs9Mb0zvVRXeUg0vTW9Nr3//0FGJ0T///////83vTBF/////1VXKzX/////////////ND84vSxJ//85vTq9O73//zy9dzQmR/////89vT69P71AvUG9//9WV1Y7Oks7S/////9+MVtXQr3//2lDQ71Evf//WFf///////9FvUa9R713Mki9Sb1KvUu9LVhaV0y9Tb3//zBHTr3//1lX//9PvVdXUL16Of//XVdRvf////9Svf////9TvWNXaVdhV///XEVUvVW9ZlddSVa9V71gV1i9ZVdnTlc7//9ZvVVCXlf/////Wr1eNWhXLUBlMWJXeDJnV///W73//zE2//9kV///XL3//129//////////9qV/////////////9evWxXdld0V/////9xV1+9YL1hvXBXeE5ivXJX/////zI2Y70xOf//ZL16PWW9Zr3//3lXa1f/////Z73//29XX1dovXoyc1d1V1FD//9pvSg6ODJtV3hXd1czNv//KUJmM2q9////////Qzf//25X////////////////a71svf//eldtvX1XIVj//269//9vvT08cL0nWHBEe1dxvf////9yvSVYc715MnS9I1gkWHW9//9+VyJY//92vXe9ZzgqTf//eL01NHm9er1ZMSZYe706Ry0w/////////////3y9fb1hSFxXLFgwWGVMfr0pWP////8hvmlFLlgivv///////yO+//8kvnA+L1hXRiW+Jr4nvii+/////ym+Kr7//0dP//8rWCu+LL7/////MVgtvns5Lr5LQC++ML5UMCpYKFgxvlpB//8yvv//fFc0O///////////////////RkI9WDO+W0E4WDS+NVg2WDW+Zjw5WDxYNr43vjdYJT04vjpY/////zRYOb58THtMOr7//zu+Plg/WFUwPL49vj6+P75AvjNYQb5Cvv//Q75yNiYwRL7//0W+NjT//ztYRr7//////////0NYQlj//0e+SL5HWP///////0m+Sr7/////SFhLvky+Tb7//06+/////0ZYSVhBWEVY//9PvkpY//9LWFC+Ub5AWHw7Ur5EWFZCMjkyWDU///////////9YWP//aUr/////TlhPWFBY/////1dYU75WWFS+//99Szc0//9UWP//RTc0M/////9RWFW+//84TlNYVjBVWFa+TFhSWFlYRDdNWFe+/////1i+Wb7//11NWr5bvly+K01dvl6+/////1xY/////2BYX77//2C+fkH//3lOYVhhvmK+Xlj//1tYY75kvlpYX1j//2W+Zr7//2e+aL7///////8wSmm+//80Rmq+RjdrvmJYXVhsvmNY////////ezf///////8xMv//bb5uvmtY//9vvv//ODT//3C+cb5yvmlY/////2pYKTpoWGZYZVhsWGRYblhzvnS+ezL//////////3W+////////////////dr53vni+eb7//3q+e75wWP//fr5vWHy+//99vv////8hvyK///8jv/////8oRP//c1j//3FYZ1h8N///clj//3ZYdVh3WHRYeFgkv///Jb8mv/////8nv3lYelhqSv//fFh7WD89//8uQGYyfDIov31YKb8/MP///////0xAflgqv0NsIVlhNyu/Ilksvy2//////29ALr///y+/I1kwv/////8kWTo1JVn//yZZJ1lXQv///////004Mb///2FM//8yv///PEtqPShZM780vzW///82v3BAPW5iSP//ajw3v006KVn//zi/Ob86v0dCO78nSjy///9xQv//Pb8sWT6///8qWf//LVn/////K1k/v////////y5Z//////////9AvzFKQb///zcw//9Cv/////9eSf////9jSEO///8vWUS/Mlk1Pjs1//8wWTdZNj7//////////zFZREf/////Rb9Gv0e/SL9eTTNZNFk4WWpFNVkzOV5A/////0ZZNEj//3JC//////////////////9Jv///Sr//////ZEgtWv//////////ekr//0u///9xREy/Tb///3VLTr87WSEyakNPv1C//////0RZ//9RvzRDPllFWUBZR1lDWf//QllvR1K/PFl9MjpZcTVzQjZZU79UvzlZNDlbQFW/Nz5BWVJH/////3I1SDP/////////////////////Vr///2czIT9JWU5Z//9KWVe/fTdYv09ZIjtpOf//////////Wb9avyY9PVl9O0xZW79cv/////9YO01ZRDBdv16/SFlfv/////9gvylE//9hv/////9iv///Y79zNf////////////80Nv//////////////////S1knMGS/Zb9DOv//Zr///zY//////////////2e/aL//////ab9yRP//ar9USFFZXkH//2u/bL9tv26///9vv/////8qQnC/cb8rO1JZcr9UWVBZ//9zv3S/db9hSv//PUR2v/////93v1xB/////////////////////3i/eb97Sk48YFn//19Zer97v3g//////3y/fjf//32/fr9ZWTk+IcD//2hGMUciwCPA//8kwFdZ//8lwF1BJsD/////J8B4PFxZKMD//zg+//9WWVtZKcD//1NH//8qwCvAVVn//yE3LMAtwF0z/////y7AXVkrTk46NUNaWS/AXEAwwDU5ZD9mMTxBWFlFNTHAMsAzwP////9HN///T0ReWf////////////9fQf//NMBhWf//Y1k1wP//N0JpWTbAZFn//zfAZln//////////zjAQUlzRDnAZ1k6wDvAPMAsTf///////0hNOTQ9wP///////z7ALjD//2VZ//8/wP///////2JZQMD//0HA//94NP///////0LAQ8BnMUTAaFn//0XARsBJTWxZ/////0fASMD/////O0L//3NZScD//0rAbVlLwP//allxWUzA////////U1n//03A//9OwP//T8D//1DAUcBuWf//cllSwFPA//9CSGtF//9UwFXA////////a1lWwG9Z////////SDf/////V8BxOljA/////11A/////////////////////1nA/////3dZWsD//1vAXMBdwF7A////////JkX//1/AYMBhwGLA//9jwGTAZcD//2bA////////dFn//2BL////////Z8D//3VZ////////aMBpwP//dln//05M//8iQGrA//9rwP////////////9iN///bMD//23AfVn///////////////9uwG/AcMA1O3pZ//95Wf////9xwHLAMkdzwP//dMA1RnXA//92wP//d8AxRXtZeMD//3nAfFn//29JesBFRyM7//9xQP//UEt7wP////////////9JM///JVp+WXzAfcB+wP//Sk0nWv//IcEjWv//JFr//yLBI8EkwSXBYEEmwf//J8EowSJa//8/WSnB//8qwSZa//8hWv////////////8rWixaJ0UuWivBLMEkOyla//8twS7B//88NS/B//8vWjDBKFozWv//MloxwTFaMsH/////NFozwf//NlpxPjTBNVo1wf////82wTla/////zfBOME5wf//////////OsH///////87wTzB//89wf//N1o+wf//P8E4WnBZQMFBwf////9CwTtaOlr//0PB/////0TBeFk8WjBa//9FwVk7//9Gwf////89Wj5aQFo/WkFafjJHwTY5SMFJwXxKL0D///////9Kwf//Tjj//0vBQ1pMwf///////0Za//9SSU3BXzVOwf//T8FFWkRaVEdHWjU2////////SVpIWlDBUcH//zo0Njv/////WEZSwf///////1PBSTf///////90P///Slr//zBAKEX//19JS1r//1TB/////1XB////////VsFMWk1a//9Xwf//OEpdVUZAWMH//0xJ//9YOv//ZUhDSFnB/////1rB//9NRVvBQU7//09aUDxcwf//UFpdwTYw//9ewVQ2TUBfwWBJ////////UVpCO0dDYMFbOzc///9hwWLBY8H/////Ulr//31K/////3cxXDv//2TB//9VWmXBU1pWWjlOVFr//2bBZ8H//3tAV1r//2jBMkJpwf//WFr//2rB//9rwXo0bMFaWv//WVr///////9twVtaXFp7NP////98RjZDbDVdO2FB/////1w9MDD/////bsFdWm/B//9wwXHB////////csEiMmFa/////3PBdMF1wf//NzlgWnbB//8rOjo+d8F4wV9a//87PnnBQEwqOv//esF7wVcwTkB8wX3B/////////////2ZafsEhwjFARzEiwiPCJMIlwlU9JsJmS3I6J8IowinCKsI8PivCJ0Aswi3C//8uwmVaY1pkWjDC//8vwv////9rQ/////8mWzHCalp+Ozg5aFoywjPC/////2laNMI4PzXC//83wmda//82wi87//////////84wjnCOsL//zvCPMJsWmtacFo9wj7CcVr//21a//8iM25ab1pVSEDCQcJCwv//YUlKN3Ja/////0TCMkBFwj0+R8JIwknCUkNKwkzC//9DwkbCS8JHNv//c1p3Wv////9LMnRadlr//03CTsJPwnVa//9Qwms9UcL///////9IQ0UweFpSwlPCVMJVwnla//9WwlfC//8qRP//WML//3FO//////////9DO///WcJrSv////9awlvC//89S1zC/////yJbe1r//13Cflr//31aXsJfwnpaYMJhwiFb/////15GYsJ8Wv////9jwv//ZMJlwv//////////ZsL//yNb/////2w9JFtnwktNeEf//2jCJVv/////////////J1v//2nCKFv//2rCa8L//2zC//8pW///SjZIMTk5Klv//ytbcT1iQW3CP8JYUj5BPUFYQkc6/////3JQ//9uwv//b8JuNy1N//9+Sv//fklwwixb////////ccJzOj9ELVsvT///csL//z5Lc8IrRC5bfDR0wv//dcL///////8vWzBbWkz//yRMdktcSyU7Mlv/////azz//3bCUUv//zRbN1s2W///eTT/////YDV3wjNb//81W////////3jCOFt5wnrCeT//////e8L//3tNSTBgOjxC//9dPHzCfcJzPv////87W/////9ORX7COVsrQjpbcj5dTDxbPVtoTSHD////////Qlv//yLDOjkjw1VHP1tsRV5aYlokw081JcNHR////////ybDQVv//z4+REj//yfD/////yjDR1v//3pI//8+W///RFtDW///KcMqw09AK8P//yzD//9tSy3DU04uwy/DZ0sww0wyXjv/////SE9GW3U/////////RVv/////QFv/////////////TzgxwzLDM8NMW0pbNMNNMkhbTltUW///NcM2wzfD/////znDSEI6wzvDQUo8w1Zb//89wz7DIkn///////9VW3BHP0s7ND/Dd0BAPf////9Aw1NEQcMuTf//QsNRW1Bb/////0PDUlv//09b//9Ew1db//9NW/////9LW///U1tJW0XDbENGw3hMRjx0OkfDSMP//zjD//86Ov////9vS0EzTkRKRkkx/////////////////////////////////////3JASsP//zRAKjf//0vD////////TMNZW03D//87OXwz//////////9Pw07DW1t0M2FbUMNRw///UsNTw1TDXltVw3NA////////SzMsOv//VsNKM086//9Xw1xbZTdLN21FWMNZw1pb//9GMP//WsP//1vDXVtfW///TTYsN0nDPDRLNVzD//9dw17DYlv//1/DeTpxS///Nzv///////9jW////////zBJ////////YMP/////YcNiw2PDZMNlw///b1tmwzMyZFv//2fDaMNpw2rD//91W2Vb//9CTmvDbFtsw19HbcP//27D//////////90W///Z1v///////80MGlb//9vwzw5cMP//3HDa1tyw2pb//9mW3Fbc8M/PnTD//91w21UaDh8TXbDd8P/////aFt4w3REIzMtOnnDYFv//3BbYTP/////bltyW3rDbkX//////////////////340e8MyXP//fMNJTHdbfTR9w35b//9+wyHEIsRASyPEIVwjXCTEJ1x5WyXEKkP//ybEJ8T//29FK1x8W///KFz//yjE//8iXCnE//8qxCvELMQtxDk/LFwuxC/EM0D/////MMQxxP////8qXD00MsQzxDTEUE92W/////8mXFgwNcT//3hbNsQ3xDpMfVsiP0dEc1s4xDnEJVw6xP////87xDzE//96Py9ccTMhOP//////////MVx6WzBc//8pXHtb//8tXP//Llz/////////////P1w9xP//PsRORj/EJFz//0DEO1z//0HE//89XP//WET/////QsT/////Q8T///////9ExExN////////RcT//////////3ZJOFxKQv//RsT//z5cP0FHxDVcQlxBXP//b0ZAXGpGSMRJxErES8T//0zETcREXDdcTsRINjpcXT1PxFDEUcRgRzxcSzb//zRcNlwzXFLEU8QwT1ozOVxUxFXEQ1w1M///////////////////Zzr/////VsRdMf////9UXFfE//8xT1dcWMT//1nE/////zo/Vlz///////9VXFrE////////W8RcxFJcXcT/////XsT//1/ERlxgxP//Y1xFXP//WFz/////YcRixP//Y8RQXGTE//9LXEhc//9JXP//UVz//2XE//8idGbE//9OXD05SERkQUxc//9HXGfE//9KXP////9oxGnETU1qS////////09cWVz///////9qxP////9rxP//YVxaXP////9nXP//ZVxsxG3E//9uxGBcb8T//3DE////////X1z//1BE//9lQXHEXVxyxHPEW1x0xP//Ylz//////////2hcdUhuXP////91xP//dsRpXGxcZlx3xP//dEP//zhJeMRcXP//ecRkXEA+esRPTHhca1x7xP///////3zEIjgjMl8z/////1Nc//99xP//fsT//yHFQT5wXCLFd1x5PHIzI8X//y5DJMUlxf//////////bVwmxSfFclx2XCjFKcU2Nv////8qxf//K8UsxS3F/////y7FL8X//0w1dFz//zDF////////ITX//0tGc1z//zHF//91XDLF/////zPF////////////////NMVvXDXF//////////9xXP////////////82xWAzSUM3xf//OMV8XP//OcU6xf//O8X//zzF//96XGk4//95XD3F/////////////yFd////////PsVYWz/FQMVBxXtc//99XH5c//9Cxf//////////LF1DxShd//9tW0TFRcVGxf//J11Hxf///////yZd/////yNd//9IxUnFSsX//2pcJV0kXf////9Lxf//TcVMxf////9Oxf///////0/FKl3//yZPUMVRxVLF////////LV17NlPFVMUpXStd//////////9Vxf////9WxSdI//8uXf//V8X///////9YxVnFWsX//////////////////zJdL11bxVzFXcVexXNNMF1fxWDF//9hxV5c//////////9ixWPFZMUzXf///////zRdZcX///////9mxf//NTFnxTZdZzchPP//VTZoxf////8kMmnF/////2rFa8X/////bMX/////X03/////bcVuxThdN106XT01b8X//1Y2PjRwxf///////z1d/////3HFPF3//z5dcsX//04yc8U3Q///P13//3TFPzRBXf//dcX//3bFQF3//0Jd//93xf//Q114xURdXzs1QCE6//9wSXnF//9iSkRPesX/////e8V1O3zF/////1A6ck59xf////9FXUZd//9gO///fsUhxkddSF3//yLGSl1JXSPGWEv/////Xj1sPEQ7//9LXf//////////////////TV0jPyTGTF3/////Jcb/////Tl0mxifG//8oxinGT13///////8qxivGUF1RXSzGLcYuxlJdL8ZUXVNdVV0lMkpD//9WXTDGMcYmO0wzV10yxjPGQkVMVP////80xjXGIzVYXf////82xv//WV03xmxKaEv///////9HRlpdZkj//zjG//97SP//OcZTTP///////1td//86xv//O8b/////PMY9xv///////11dXF3//z7GX13//z/G//9eXf///////0DG//9Bxv////////////9CxkPG//9ExkXG/////2FdRsb///////9HxkjGYTtJxjFMSsZiXWNd/////yQ1//9Lxv//ZF3///////9Mxv///////2ZdZV3//03GTsZPxv///////1DG//9Rxv//////////UsZlP1PGVMY5SUox//9VxlbG/////0VIV8Z1REE9YTX//////////////////1jGWcb//1rGRkhbxi48//9cxv//XcZoXf//QDT//17GeDFfxmDGckZnXT45U0P//2ld//////////82x3Fd//9qXWHG//9ixv//Y8ZBQv//YjVyXWTG//9lxv//ZsZnxmg3aMb//yU1cF3/////bl1rXWBN//9pxmrGa8ZARGzG/////1lGbF3/////dF3//3NdIzdtxm7GLTJvxnDGOzptXW9dccb/////csb//1dLdEL/////////////////////d0v/////fF3//3PGfV10xk8ydcb///////8oSn1MIV4jPEI+eF1+XWgx//83NnbG//91XXpdd8b/////dEBxR///Z0h4xv//ecZ6xnvGfMZ3XX3GIUt+xnld//8kXiHHIl4ix3td/////yPHIktIR2M1//8lRf//JMdtQyXHJV4mxyfH//8oxyNeWUJ2XSnHSzEqxyvH/////yzH/////y3HTk0wXv//Lscvx///MMcvXjHH////////dkD//yxeMsdsTf////82RiZe/////////////0VEM8c0xzXHTDE/OSle/////zfHOMf//znHJz0uXv//LV4oXv//K146x///aDM7xypeSUc8x///Lk7/////dD51QP////////////////////////////////////////////89x///Nl40Xv//TUn//z7HP8f//0DH//8xXjNeQcc6MULH//9AOTJP//89M///YklDx0TH////////YU3/////JDM7PzVe/////0XH/////////////0bH/////zpe//9Hx0M+////////ME3//zde/////0jHSccyXkrHOF5Lx0zHTcdeTv//c0VCRv//////////////////////////////////Tsf//0/H/////zYz/////1Ux//9Qxz5e//9Rx0FeUsf/////Q05Tx///VMdkTf///////1XHSF5CXj9eVsf//1fHVE5FXv//WMdZx///Sj1HXv////9MXlrH//9xRUpe//9bx///XMdEXl3HXsc4Q1/H//9LXmDHQF7//0ZeYcdNXnwwQ17//05eYsdjxzw///9fPWTHJUplxy46//87XkleOkVmx2fH////////aMc2QP//aTNROkQ+PV5CPf//////////////////TDf//zxe////////Ul5tPTo4//9hXmnHW150NU9FasdWXl9eLzAyMWvH//85Mv//WF4sQk9eUV5BOf////9sx////////23H//9iXm7HXV5vx3DH//9VXv//////////XF5xx3LH/////3PHdMcrTHXH//9aXl5edsf//3fHeMd5x3rH//9QOHvHRT7/////OUN8x33HfsdUXv////8hyCLI////////L00jyP////9XXv////9QXnJF/////1NeJMj/////WV7//////////yXI//8myFFPPjx+S///Y17///////////////////////8uSCfI//9vXjs4/////yjI/////2A9//9lXinI/////y9OQjn//3JeKsj//24w/////3Be//8ryP////9kXv////8syC3Ial7//y7IbF4vyP////9PTWde/////y5FMMj//2le//8xyDLIM8hxXjTIa15HTP//Ncg2yGZeN8giPH5eOMg5yDrI//9qM///aF5tXm5e//////////////////9sQlpC////////////////////////////////O8h2XjzIPch8Xv////96Xv//KUX/////I193Xj7I//8/yP//QMh4XmBeeTU6Sf//Qcj//z88//9CyHc5Q8j//0TIRcj//zNP//90Xv//Il9pMWZBRsj//0fI//9IyEnI//////////95R///QTR6Tv////9KyP////9LyEzIIUxSRFPI//9NyE7Ie159Xk/I/////1DI//8yQf////9RyFLI//8hX3le//9zXv///////0M0////////////////////////VMj//1XIVshXyGk3/////1jIL19ZyFrIKl94QFvIXMhjM///XcheyP//YT3//zNf//9fyP///////2DILF8sRClfWUT///////9MX////////yZf//8lX///Ll9hyGLI//8oXydfLV9jyCFA//8kX2TIZcj/////ZshnyGjIMF///2nIMV9qyGvIbMj//23IQjT/////bsj//////////2/IcMg2X///NV83X3HIcshzyHTI//86X////////3XIdsh3yENF//80X///eMh5yP////84X/////96yP///////2M3eUIyXztH//97yDlffMh9yP//fsj///////////////////////8+Xzxf/////z9f//8hyUJf/////yLJO19qOShH/////zle////////I8kkyf//dE09X///QV91QiXJQF///ytf//8myWlv/////yfJRV///yjJKclJXyrJR1////////8rySzJLcn//0Nf//9EX///Lsn//0hf//9GX////////05J//8vyU5f//9LX0pf//9NX1RGT18wyf////8xyf////91Q21C//////////8lQP////8yyVBf//9SX///M8n/////NMn//zXJ/////zbJ//9RX///////////N8k4yf///////znJOsk7yTzJdV7//0HJ/////1Nf/////z3JPsn/////Z0b//////////z/JQMn//////////1RfQslDyf////////////9QMkTJ//9FyXRFJTP//////////0bJR8n//2Q1////////XjxSOkjJ/////0nJ////////SslLyf////8nT2Y/////////ajH///////9WX///TMlNyU7JT8lQyVVf//9Ryf////////////////////9Syf///////////////1PJWV86Q1xfV19UyVXJ//9bX1bJ/////1fJWl9ARVkw//////////////////////////////////91Tv//WMleX////////ygx//9Zyf//WslbyVzJXcn//17JYF//////X8lfX///XV///////////2DJ////////////////////////////////WF///////////////////yNLYcn/////Yl9iyWPJZMllyWbJ//9hX///Z8loyf////9pyf//////////azH//////////2RfMkr//2Nf//9qyf//a8k1TP//////////Rz7//////////2zJ//9tyf//bslvyXDJ//////////8zQf//ccn///////9GPv//////////csn///////9zyXTJdcn//3tOdsl3yWpf//95QP//eMn//3nJ/////2Zfa196yf//bDF7yf//fMn//33J//9+yf//aV///2FHZV9oX0g+IcpRSP////9sX///UTz//////////////////////////yLK////////ekD/////I8r///////9vXyTK//8lymdf//8nN///Jsr/////bV//////J8r//1BNcF////////8mdCjKKcr///////9PPSrK//8ryv////////////9xX////////3Jf/////yzKLcouRy7KL8r/////////////dF8wyv///////3VfMcoyyjPK//8zRzTK////////dUV3X///Nco2yv//eV///1VO//92XzfKeF9tMTjKc1///znKOsr//zvK/////1tTel///////////2dBODt8X///////////e18kP1lS////////////////fV//////PMohYP//bl9+X///PcoiYD7K/////////////3pHP8pAykHK////////I2D/////JGD/////Qsr///////9Dyv////9EyiVg//9Fyv//Rsr//////////0fK////////JmD//15ESMooYCdg//9Jyilg//8qYP//SspfPGNJ//9LykzKbEwrYCxgVkEkPC1gLmBNyk7KT8r//1DKL2BSSkdI/////zBgV0f//1HKUspTyv//LURUyv//VcpWyv//MWBnMlfKbTVYykZMWco2TFrKNDI0T1vK////////UktcyipK//9dyv////9eyl/K//9gyjdA//8yYP////9hymLKQ0b//2PKZMojODNgZcpUOjVgNGD//2bK/////zZg//9nyv///////2jKacr///////83YGrK/////zhg//////////9ryv//////////PjX//zlg//////////86YGzK////////JDhtym7KSEj//2/KPGD//3DK//91Pv////87YP//////////ccr/////cso4Nj1gP2D//z5gc8r//3TK/////3XK//9AYP//UTj//0Fg/////3bKd8ppNnjKQEH//305////////ecpDYERgQmD/////esr///////9tPP////9IRjk2/////////////3vKfMr/////RmAsQ0Vgfcp+yjVPYkchyyLL//8jyyTL//8ly/////9JYCbL//8ny///////////KMspy/////9LYEhgKssry///VExKYExgLMtETv////8ty///LstQYP//L8swy09gdkMtRzHL//8lOE5g//8yyzPL//9NYDTLMU0yTf////81yzbL//83y1FgbjH///////84y3Y5Yjv//////////////////znLUmBTYDrL//87y////////zzLVWA9y///////////Pss/y0DLQcv/////Qz3/////QstDy1dgRMtWYEXLRsv//0fLSMtYYEnLTTP/////WmD//0rLWWBLy1xgW2BMy////////03LTsv//0/LPDhQy1HLKE7//0w2//8mMv////9Sy///U8v/////VMv//1XLajZWy1fL////////WMv//1nLWstby///XMv/////Xctey/////9hNF/LYMv//2HL//////////9oTl5g//9iy///Y8v//2TL//9gYGXLZsv//2fLYWD//1Ey/////2jLacv//11gass5O2vLbMtBRF9gbcv/////bstvy/////9wy/////9xy////////3LLZGD//248c8v//3TL//9iYHXLdsv//3fLPjf/////SUhjYP////9+YP////94y3nL//96y2lge8t8y33L//9+yz04IcwizCPM//9lNSTMZmB9TSXM//8wTibM////////////////J8z/////////////////////KMwpzP///////////////3ZC//8qzGhgK8z//yzMLcwuzC/MMMwxzDLMM8w0zDXMamBWTlc2fEhKR/////82zGtg//////////9tYDfMcGD//zjMOcz//zrMO8z///////88zP//Pcz///////8+zD/M/////2xg//9AzP//b2BqOE0xcWBBzHA/bmBcTv//Qsx0YCR0//9DzETMRcxyYHVgRsz//0fMSMxnYHNgScxKzDw6/////3Zg//////////////////93YP//S8xMzP//fk3//03MTsxPzP//UMz//3hg////////UcxSzFPMVMz/////////////VcxWzFfM//9YzP//eWBZzFrMW8xlYFzM/////13MemBezF/MYMxhzP////9izGPMRDRkzGXM/////2bM////////Z8z//2jM//8lPP//acz/////////////////////asxrzHtg//9szP////98YG3M/////27MfWD///////9vzP//cMxxzDsx//9yzHPMIWH//ztJImF0zP//JDQjYXXMJGF2zHfM/////yVheMwnYShhJmH//3nM//9TSSphKWH//3rMe8x8zP////99zCxhK2EtYX7M/////////////y5hMGEvYf////95OSHNMmH//zFhIs0jzUU0//9TP///PEX//zNhOEAkzSXN//86OybNeTE0YSfNUU0ozSnNY0o1Yf////8qzURFM01DOT0//////yvNS0M0UizNLkRoMjZhLc0uzS/NMM3/////Mc03Yf//PGEyzTPNOmE5YUJaJjM4YTTNWjA1zSpINs3//0pI/////zfN//8xTj1hO2FcQyZAOM05zStIOs0tSf//P2EsTk03QGH//z5hVkhBYf//QmH//zvNWzA8zf//dj5HYf//RGFtRkNhPc0+zT/NQM1BzULNJjX//0PNSmH/////RM1FYUZh//9JYUhhJUn/////QkFBQUXNPzVGzUfNS2FIzf///////0nNTGH//0rNTWH//////////0vNT2FMzU5h/////////////1Yx/////////////1dhaEhRYU3NU2H/////VWE+P07N//9WYVRhQDxPzVDNUc1QYVJhUs1CSVPNST7/////WWH//1TNWGFVzVbN/////1ph//8mPC86//9XzXdFW2H//0tEWM3//11hWc1azVvNIU5cYVzN/////13N//9pQf////9ezf//X81gzWJhYc1kYWVhVEP//////////2LNY2H//2Bh//9eYV9hY81hYWTNZc1mzf////9nzWjNaGFpzWZhas1nYf//a83/////bM1tzf//bs1vzf////9wzf//cc1yzXPNdM1pYWthbGFtYXXNbmF2zXfNamH//3jN////////ec3/////cGH//3rNe81vYXzN/////33Nfs0hznFhIs7///////8kziXORU4mzifOKM50YXJhc2EpziPOKs5iNP////////////9+TP////8rzkpK//92YSzO/////3Vh/////y3O//93YXhh//8uzi/O//98YXlhemF7Yf//fWEwzjHOMs5+YTPOIWL//zTO//8iYv//I2L//y9IUEUkYnJHNEn//yViNc7//yZiKkU2ziczRDknYv////8oYjfOOM4pYv//KTv/////K2L//znOKmL/////LGItYjrOO848zv//Pc4+zv//P85AzkHOQs5DzkTORc7//0bO/////0fOaUj//y5i////////L2L/////aXMwYjFiMmL/////SM7//y47//9JzjNiVkf//0rOX0v//04xS85XMUzOTc40Yk7O////////NmL//0/O//81YnBF//9Qzv//OUA5Xf//N2JBTFHOOGL//0Y0V0g5YlLOOmJTzv//O2L//1TO//9cTP//Vc5WzlVM//8+RP//V87//2pBWM7//z1iWc7//2I9Ws5KPv////9AYv//W84/Yj5ifUhczkc0KTj//13O////////Xs7//1/OYM7//2HO//9izmPORmJkzv//Q2I/PzJM//9lzv//QmJEYkVi//9mzkFi////////Z85ozmnO//////////9qzmvObM5HYkhibc4vRP//YzRuzm/O//9lQ///cM7/////cc5yzkli/////3PO/////3TOdc52zv////93zv///////3jOec7/////SmJNYnrO//97znzOfc5nP37OREYhz05iU0siz0ti//8jz0xiJM////////8lz///Js8nzyjP//////////9RYinP/////yrPUGJPYivP////////LM////////////////9TYi3PLs9SYv////9UYv////8vzzDPMc////////8yz////////1ZiM89VYv//NM//////TUr//zXP/////zbP//9WPUZON884z1diOc///zdG//86z1hi/////1li//9dYltiXGI7z1pi////////PM////////9eYv//Pc////////9fYv///////z7PP8//////QM///2Bi//9Bz2FiN0xiYv//Qs9Dz0TP//9wTGNiRc9OQ0bPakf//2s2R8///0jPO0NkYjo2Sc9Kz///UEBLz////////0zP/////03PZWI9Ov////9Oz0/P/////1DP/////2ZiUc9Sz/////9Tz2di//8mOFU6//////////////////9Uz/////9pYlXPVs9Xz///VkVWOk41/////////////1jPWc///1rP//8kS///S0dbz///XM//////V0X//////////1w5////////Xc9ez2ti//9fz2DP////////Yc///2LP////////Y8////////////////////////9kz0s+Zc///2bPZ8///2jPac////////9qz///a88yTkU5//9szyc4/////yNI//9tYv////////////9tz///b2L//27P/////2s4//////////9uYnZE/////2/P//9xYjczbGJwz///akj//zAxcc9sOv//Uk9yz///cGL/////dM91z3bP//9zz///cmJ3z/////9LSnjPWUB0Yv//ec96z///dWJ7z3zPfc9+z///c2L//////////04zIdB7YiLQemIj0P//Jzz///////98YndiJNAl0CbQfWJ4YifQ//8o0P//WEh2YinQKtB5YivQLND///////8iYy7Q////////L9Aw0DHQ/////y3Q//8y0CFjYUv//zPQ//9+Yv////9rMP////800DXQJGP//zfQOND/////OdA60P//I2P//zvQNtBMPv//////////PNAlY///////////PdD//0NB//8+0CdjJmP///////////////8oYz/Q//9A0P//QdBC0EPQ//////////9E0GhiRdD//0bQamIqYyljR9D///////9I0P////9J0ErQ//////////8oPEvQaU5M0FI8TdArYzc3/////07QT9BQ0EA1JzVjO1HQUtD///////9T0DRNVND//zFjVdAwY0RBLWNW0P//L2NX0FjQSz1APy5jLGP//ypH/////00+//9Z0DxJWtD//1vQ//9XOv//////////XND//////////3hF//9d0DJjXtBf0P//YNAzY0ljWDb/////PU81Qf//////////NGNh0GLQUjJ3RCFK//9j0P//ZNBl0GbQZ9D//2jQ/////2nQatA1Y////////2vQ//////////96NTZjbNBt0DhjbtD/////OWNv0ClHcND//zpjcdD///////9y0DtjPGNz0P//WTZTMkVGKD1kO3TQ//910P////920HfQPWN40Ck9////////edD//0oyQ0n//3rQPmN70P//a0j//3zQ/////33QftBFQSHRQWMi0UJjaUcj0UE/P2P//2FDJNEl0UBjJtH/////Tj4n0f///////////////yjR/////1wwKdEpNf//KtEr0f///////yzRQ2Mt0S7ReEQv0URjR0D/////MNH/////LUwx0f//I0lFY0ZjVUMy0UdO//8z0UhjR2M00f////////////810f///////zbR//830W88ONE50UpjcDD//zrRO9H//01jPNE90T7RS2NUMk43TGNGOXI5//9mSk5jP9FA0VRLQdFC0VBj/////0PRUUBPMToyLDD//////////0TRRdFPY///RtH/////R9FI0f//SdFK0VFjUmN3Pv//S9H//0zR//9TY03RTzP//07R/////1Vj////////ajdP0WY1//9Q0VZjdTb/////V2NR0XxAUtFNRlPRYEB1OlTRVdH//1hj//9W0VfR//////////9Y0VnRYkNrQVrRWmNcY1ljW2P/////////////W9EiN1zR/////13R/////////////11jJjf//17R//9nNVJNX2P/////X9H//2DRYGP/////YdEuMWLRY9H/////Y2P///////92M2JjYWNk0WVjXmNl0WZjKU5m0WdjZ9FoY///aNF0VGpj//9pY////////2tjbGNp0TVObWP//29wTz5uY29jVz3//zhGcGP//2rRa9EoQ2zRbdFxY///PENyY27R/////2/R//8lNv//P1FdQzM8cNH//3HRctFINHNj//8iZP//dmNz0Wg1//91YyRk////////dGP//1A+/////3TR////////eGN5Y///K0X/////emN10V4z/////3bR//9aP2RJd9F8Y3jRedF60WhCe9F80X3RftEh0v//d2Mi0ntjfWP/////ezr///////8j0v//JNIl0ibS////////JmQuSSfSJkh5Rf//WjYlZCNkKNI1SH5jXkN7Rf//ekUp0nY6////////////////OGT/////KtL///////8r0ihkLNIqZP//LdIu0v//LWQv0i5kMNIrZCxkMdIy0ilkJ2T//zPS/////yFk////////////////////////NNL//09KVTL//zXS//81ZP//MmQ20jdkN9I40jZk//9zRydMOdI7OzBkOWQ0ZDrSM2QvZDvSMWQ80kk0////////PdL//////////z1D//8+0n1A//8/0kDSIkhB0v//PmRC0kPS//8kSP//RNJF0kbSR9L/////YUA7ZEjS//9PSEnSP2RTSkrSW0NL0jpkPGT/////PWT//////////0zS//9N0k7S//9P0lDSUdL//0Bk/////0Q8////////RkZFZERk//9S0kFkU9L/////Nk///////////1TSSmRV0lbSTmRLZFfSWNJZ0v//WtL//1vSR2Rc0l3SXtJf0v//YNJIZP//YdL//2LSY9JNZGTSZdL//0JkVVJJZENk/////0xk//9m0v//Z9L///////9SZGjSSjT//09k//9p0mrSUGRr0v//UWRUZGzS//////////9t0v//btJv0v//cNJTZHZIcdJy0v////9VZHxObUpaZP////9XZP////9z0v///////3TS//9WZFJA//9ZZFtkdtJ30njSWGR10l9k//9cZHnSetJ70nzSfdJ+0l1kRmQh0///ItNeZGBk//8j0///JNP/////YWQl0ybT//8n0///KNNGSv//YmT///////8p0/////8q0yvTYkz/////TjYpN2Nk/////yzTLdP//zRK//9oP///MEz//y7TZGT//zNO//8v03RH//9GQTRH/////009/////zDTQDAx02lkZ2T//2VkITQy01E+amT/////aGT//2ZkbmT//zPTbWRsZGtk/////zTTNdP//29kNtM30zjTcGQ6QDnTcWT//3Nk//8603Jk//870zzTPdNSOP////8+0zhBP9P/////dWRA00HTQtN8RUPTdGRE00XT//92ZEbTNUpsQUc5//93ZP///////0fTSE7//0jT//9J0////////3lk/////3pk//97ZErTfGT//2U7//99ZE83/////2o1KjX//yFlS9NzTEg5fmRM003TTtMkZWZM//88R///T9MzSVDTUdNS02M9I2VT01M8STlmO2k1NkoiZVTTVdP//0dBQkt3OlbT/////1fT////////WNNnO11EWdMnZV9OWTpa0yhlQj///ypl////////Uj4wOv//W9Nc013TKWVe01/TKj0+OEhBJWUrZWDTYdP/////JmVQN2LTLmUyZWs3Y9P//2TT/////y1lZdP//2bTZ9M2ZWjTadNKOf////9tTTwwM2X//2rTazVr0zBl//9s0////////zFl//9t031FL2UsZf//KDNkQP//btMoOG/TcNP//zhl//9x0///ctNz03TT//9103bT//930zVl//9403nTetP//zdl//970///NGX/////fNN90///UTczQjllbkF+0yHURmX/////QmU8Zf////8i1CPU/////yTUQGV6PF0wO2VDZUdlSzlWTCXUVkQ9ZSbUJ9RFZSjUOmU+Q///P2U9MEpM/////ynUKtQr1CzULdQ+Zf////9bNmxILtQv1DDUbUH//1BObz3/////bmX//zHUSGUy1H5A//9EZUllS2X//3lETmU01P//SmU11DbU//9USks0N9Q41EtMOdT//14w//861E1l//99TjvUPNT/////PdQ+1ExlM9RvMf////9sRk9l/////z/UVmVQZVdl//////////9A1EHUU2X/////QtT//0PU////////e0dE1EXUSjxVZUbUUmVYZVFl/////0Q9R9RI1P////8lS0nUStRMPUvU//9UZWBlTNT//1xlTdRfZf//XWVhZVtl//9BZVNATtT//0tI//9eZU/UUNRZZVHU/////yFBUjf//ys9UtT//1PU//9U1P//JT82QWRl//9V1GZlZ2X/////Y2VlZVbU//9X1FjU/////1nUWmViZf//amVpZVrU//96S1vUXNQrN/////9d1P//////////XtRoZf//bGVrZW9lX9RxZf//YNQ8O21l/////2HUYtRyZXNlY9T//3RlZNR6ZTtFdmVl1HVld2V4ZWbUeWX//2fU//9o1HtlfGVp1GrUTDT//31l//9+ZWzUa9Rt1G7Ub9T///////9w1HHUIWb//3LU//////////8iZiNmJGZz1CVmJmZ01HXUKGYnZv////8pZv////921HfUeNT//ypmK2Z51P//etR71HzUfdQuZixmLWZhOlM3//9+1FZD//8zSCHVcD3/////TUf//21IL2ZtWP///////yLVI9Uk1SXV//8wZjJm//9lTTFmNGYzZv//U00m1TVmJ9V+SCjVKdUq1f////82Zv//K9Us1f////85Zv//LdU4Zjdm/////y7VL9U6ZjI3//8w1f//IkFBNTHV/////zLVPmY7Zv////88Zv//M9X//z9m//9AZj1m/////zTVKTH//zXVNtUnMv//N9X//0JmQ2b//zjV//9EZv//Yk3//znVOtX/////LD3//0ZmRWb/////////////O9X///////881Wk/R2b//z3V//8+1Uhm//8/1Ulm//9lNEDV//9B1ULVTTT//0PVSmb/////////////S2ZE1V1LY01F1UbVR9VUTTdP//9NOU5mVDxNZkjVSdX//0rVT2YpPEvVTNVN1VFCTtVQZk/VUNVMOVHVV0xRZlJm/////1NmUtVT1VTVVdVUZv////9W1f//V9X//1Vm////////WNX//1nV//9a1f////8qPFvVXNVtTF3V//9e1V/VV2Zg1T9DYdVWZmLV////////Y9X//1lm////////WGb//////////////////1pm////////O0D//1tm//9cZv///////zlKXWZk1W9BXmb//2XV//9m1f//X2b//////////2fV//9+TmJmaNVhZmBmMERp1WNmJj///2Rm////////ZWY4T2Zm//9q1f////9nZmlmaGYlSGvVeUb//z5PKUj//2zV//////////9rZv////9TPv//Kkn//2xmamZt1U40btX/////VDhoO/////9uSG/VcNX//yo4Q0tx1W9mbWb//045//9POWkw//9oOv///////3LVc9VZR/////////////////////9fMHRm//9AQ///dNX///////9YR3XVW0J21f////931f//eNV51XZmetV71XJmdWZwZv//c2YmS///fNVVOP////99MHFm//////////////////991X7VeGYh1nlmItYj1jlG//8k1v//OzYl1ibW//8mZz1HJ9ZpOyjW//88NkhARk8uTHdmVEAp1v//////////////////////////KtYr1izW//9TNXpmLdb//y7W//8v1v////98ZjDW/////zHW//97Zv////8y1v////99ZjPWJkP//z5H//801v///////zFENdb//zbW//8jZ////////////////zfWImc41v////851n5mOtb//1U///9lSSVnO9YkZ1A5U0///zzW//////////////////81Zz3WPtb///////8pZypnP9ZA1kHW//9wPP//QtYoZ0PWeDknZ/////8rZ/////9E1jJEIkojQf//////////XEIvZ0XWMGcsZ0fWSNZJ1v//LWf//y5nStb/////S9ZROUbW/////zZn//8yZ0zW//9N1v//ZklO1mxLKElP1v//MWf//1DWNGczZ////////0RLN2f//////////1HW//84Z///UtY3QVPWOWf/////O2f//z9nVNb//zxnOmc/Rz1n//8+Z1bW//9X1jIy//9FZ0BnWNZV1v//QWdZ1lrW//9CZ///IUL//1vW//9c1kRnQ2dGZ13W//9e1l/WR2dIZ2DW//9DP2HWaTL//0lnV07//ys8YtZj1i09/////2TWZdZm1mo7V0Nn1mjW//9p1mrWSmdLZzExa9ZMZ2zWbdZNZ05nbtb//09n//9QZz02KlpRZ///ZUBSZ0s8b9ZTZ///MFBw1nHW//9UZ15KXDRy1nPWJEFYPXTWcUkuPf//ddZ21v////////////931lVnUjlWZ0xI//9kZ////////3jWWGd51klCdUc/OFdnJUF61v////////////9ZZ/////971nzWfdZ+1npE////////Idf/////Itcj1///JNf//////////yXX//9bZ1pnXWf//ybXXGf//15nJ9f//2BnKNdfZ///TzQp12Fn//9iZ2Nn//8q1zE6SU7//2VnJz///yvX//9wMWZnZ2f/////LNf//y3XaGcu1y/XMNf//zHXMtf/////M9f//zTXNddyMP//aWc21/////8312pn//841///Odf//zrXZ0k71zzX//9HPP//bGc91z7X//8/10DXKTMyMEHXQtdD10TXa2duZ05HRddEP0bXVjJH1ydLSNf/////SdddN1w2StdtZ0vXajJM103X/////////////yM0Ttf///////////////////////9P13ExcmdqTl1CUNf//0RJ//9+Z1HXVzJ8Z///emdxZ1LXb2dT13BnVNdjPGw2d0NV1///VtdRRv//V9f//1jX//9RMf//dGdzZ///Wdda1///eWd1Z3hn//9b11zXXdde11BMd2dYMn0ze2df12DXfWdh12LX/////1Q3//////////////////8jaCxoLWj/////ZNcrMGXXZtdn1///aNdp1zRo//////////9xMP////8raGrXa9ds1ypobdclaCRobtciaCFoY0Nv13tCJ2hw1///cddy1/////8maP//c9d013XXKWj//3bX//9wQVU3/////3fXeNdBMShoeddTOT7YY9d613vXfNdxQf////////////////////////////////////////////////////////////991/////86aP//O2j//1kyftf/////LjI4aCHY//8i2CPY//8k2P//JdguaCbYNmj//z1oN2j/////J9g1aP///////yjYdmcp2CrYM2j//yvYLNgvaC3YLtgv2FA0MWg8aP//Mmj///////8w2DHYPmgy2DBofEcz2EzY////////aU3///////85aP//////////////////T2g02DXYNthHaP///////3s///832P//ONhGNf//XTb//0JoOdg62DvY//9bMjzY//9UPv//RWj///////9aOj3Y//9RRUpo//////////////////8/2G5KQNhBaP///////1oyVjgpSUto//8/aP//QdhIaELYQ9j//1JoRNhDaEXY//9EaDpG//9G2Elo/////0fYRmgoS0xoYDBI2P//Sdj//0Bo//9K2P///////0vY////////////////Tmj//01o////////////////a0dUaP//X2j/////Tdj//34z////////Ymj/////UGhO2P////9VaG5N//////////////////9P2F5oUNhR2FVNUtj/////U9gqTlTY//9V2FbY////////V9h4Q1jYWdha2GszW9j///////9c2HJJZGghRl3YXtgxMF/Y//9daGDYWWhyQVNoW2hgaGHYLEf//2LYY9gqMGTYWGhl2GFoeEn//2bYZ9j///////9o2Fxo//9XaGnY/////////////1U+//////////8vPf//athr2Cw8bNj///////9YTP////9HSf//bdhnaP//cGj//////////27Y//9v2HDYcdj/////Wmj//3LY//9z2Hcz//902P///////3g+ZWh12Gpoc0F22HfYZmh42G1oedj//19D//9uaHrYe9hWTWNoODN82Glo//992GxoLEz//37Y/////29o/////2hoa2j//yHZ//////////////////////////8i2f////8j2f//KUv//yFPJNkl2SbZJ9n//3No/////yjZ/////yrZK9l6aCzZ//9yaEM8//8t2S7Z/////1FoL9n//////////zDZ//8x2f//MtlOSv//Ikx5aHho//90aHVo//82Mf//M9n//zTZd2j//3FoNdk22TfZONlVRDnZ/////zrZO9l2aH4w//882f////8p2T3ZPtkiQj/Z////////////////Q0r//0DZe2ghaf//WUj/////Qdn//35oVj5JPCNp/////z42QtlD2UTZRdlG2f//JGlH2XlJfWhI2VZo//9J2UrZS9lM2U3ZTtlP2XxoUNn///////9PTyJGc0lR2f//K2n//1LZ//////////////////8xaf//U9lU2VXZ//9W2TJpV9klaVjZ/////3ZHWdla2S9pJ2lb2SlpXNld2f////9e2TNpKGn//1/ZLGn/////cjFg2WVG//8taTBpYdn//2LZY9n//2TZ//8maWXZJkFm2SppJztFPzA3dEx02XlMcj3//////////2fZ//9o2WnZatk3aTVp//9r2WzZbdlu2f//Tk9v2f//////////cNn//zRpcdly2f//dU1z2TZpOGn//////////zlp/////3XZ//922f//PGk6af//d9l42f///////yNGO2l52f//etlNSC5p/////3vZ/////////////3zZ/////33Zcz3//z1pQml0QX7Z//9BaSHaItr//yJp//8j2iTaQ2lJQf////8+aUBp//8l2iba//8n2ijaKdo/af////8xXSJdKtor2kVpLNr/////Ldr/////LtpEaf//////////L9r//zDa////////dk3//zxiRmn/////////////Mdr//zLa//8z2v//NNo12v//R2k22ma4N9r///////842v///////////////0hpVzj//1Q1//852jraSmldUTvaPNo92j7adTX//zpOP9pzNktpQNpB2kLaQ9pE2v////9Maf//Rdr//25DRtr/////R9r//01p////////SNpJ2kra//96RkvaOjD///////////////////////////////9t2v//YzJSaVNpTNr///////9N2v//Tmn//z07Ttr//0/a//9Q2v//Udr//////////1La//9PaUJH//9T2lTaVdpQaVFpW2n//1ba//9VaVhpV9r//1jaWdpa2lRpW9pc2l3a/////////////17aX9pg2v//YdpWaWLaV2lYPP//WWn//0FD//9WN0Iz/////2PaZNr//1xpZdr//2ba//8/M2faYWlo2v//XWlgaWna/////2raOkhr2v//bNr//15p/////19pSElaSGJp/////////////////////31CbGlu2mhpb9pw2msyZmn//ypLZ2lx2nLaZGlz2mVpamltaXTa//9raXXadtp32mlpY2l42nna////////WEN62nRp//8qTP//e9p82v//fdr//37a//9yaf////8h23Np//////////8i2yPb//8k2yXb//9uaf////9waf//Jtsn23FpKNsp2yrbb2kr2/////8s2///Ldv///////9mQP//OU94aS7beWn//////////yFq//8qP///e2kv235p////////MNv//3ZpdWkx2///Imoy2zPbXDL//3xp//8jav///////31pNNv//zXbNtv//3pp//8zRP//d2n/////N9v///////9oR/////8najjbOds62zvbPNs92z7b//8/20DbO03/////Qdv/////Qtv//0Pb//9E20XbRtv//////////0fbJmpI2///JWpJ2////////0rb////////LmpL20zbTdsoav//Ttv//zBq//9P2///////////Zk0zav//KmpQ21HbK2pS2/////8vav//MmoxalPbVNtV2ylq/////1bb//8sav//PWr/////V9tY2/////9Z21rb//9b2/////9c2zZq//9d217bX9v/////////////YNth2///Ytv//zRq//9j2zVqZNv/////Omo7amXbKjNm20I1/////zlqZ9to2///adv//yRqatv/////a9ts223b//84ajxqN2pu2z5qcNtx23LbQGo/av//c9tv23Tbddt22///d9t42///QmpBalpp////////Rmp52///////////ett72///fNtDan3b/////37bRGr/////RWoh3EdqItz///////9sNyPcSWok3EhqJdwwPf//Jtwn3CjcKdxUOSdeKtz/////K9xKalE9//8s3C3cOTMu3EtqL9xSMTDcVz5MajHcMtxVOU1qYTAz3P///////z1JNNz//05q//////////9qPzXcVWr/////Umr//29D//823P//N9z//1NqUGpeNjjcT2pWav////////////82N/////9eQv//XGr//////////1hq////////NUJXajncWmo63DvcPNz//1FqPdw+3P//W2r//11q////////P9z//0Dcb0j/////WWr//15qYGr/////UzhUav//QTD/////Qdz/////QtxD3F9qRNxbOnZOYWpianVB//////////9F3EbcR9xI3EncIk7//0rcS9xM3GNqNU3/////ZGplav//TdxkSmZqTtxAOv//I07/////////////T9xrav///////////////1DcUdxS3GxqWD5qalPc//9U3GdNZ2r/////aWo9QH4/Vdxoav//bWr//1bcI0r/////b2r//25qV9xY3FncbDP//ytLcGr//1rcW9z//1zcXdxe3P//X9x8anJq//9g3P//////////c2ph3GLcY9z//3RqdWr//////////2TcZdxm3P////9n3Hlq//96amjcadx4av////9q3P//a9x2amzccWp3am3cbtz/////b9z/////e2o3cP//cNz/////cdz///////8oMnLc/////3PcdNx13P//fmpfNn1qdtx33HjcImv//yFr////////JGt53P//I2t63CVre9z//zE9fNwma33c//8na/////9+3CHdIt0j3ShrPkD//1dN//8pa/////8kSkZHKmsk3StrKzj//yXd//8sNSbd/////yxrJ90o3Ws7QUcta///UDMp3Srd/////yvdLN0ua////////y3dMGt3Tf//L2tGP///MWv/////Mmsu3f//M2tRNC/dMN0x3TLd/////zRr//8z3TVr//82azdr/////////////////////////////////////////////1Ez//803TXdNt033Tjd//84a///OWs6a/////////////9yMv//Od0oPztr//863f//O93//zzd////////Pd3//z7dPGv//z/d//89a0Dd////////Qd3//0LdQDj//3tEPmtD3UTd//9F3Vc3//9WP///QWv//yRGRt1Aa0fdSN0xN0ndSt0/a3dCLTX/////Qmv//0NrS91ZPkzd//9N3W03Tt1Ea0/d////////LEtQ3VHdX0D//1Ld//92Nf//dUxKQVPdRWtU3f////9HP3BDWj5V3Vbd//9X3UZr//9Y3f//Wd1Ja1rdSmtb3f///////1zdXd3//z46QkJIa17dWz4+SV/dYN1h3f////9Ha2LdY91sO///UzFk3U5rWDf//2Xdbjtm3f//bTv//01PTWtMaydB//9NNUNPOjNcPv//Z91o3Wnd//9q3WvdbN1La///bd1u3W/d//9Qa3DdUWtPa3HdWDj//0BN//9y3W87J0f//3PddN1Ua3XdQED//0JDdt133TZNeN1Xa////////2w4ed0/QFNr//9Ya204VWtWa3rdUmt73f////9iQElGfN193S9D//9dMn7d/////yHeIt7//3BI//8j3kM1//8k3jRE/////1trJd5Za///Jt5MQyfeKN4p3kFAUjRaa///Wz///yreSk4r3izeLd5ATy7e/////1xrZ2s1RC/eZmsw3mNra2tka///YGv//3xEX2v///////9dazHeIU1wO///Mt5ha///Xmsz3jTeNd5la3Q9//9BOP//Nt7//3pCN95FS1oxYjD//yVGON453mlr/////z/eOt5oa///Zkb//21rO97/////Ymv//2xrbmv//yw4amtWOTzeVTw93j7eb2tYTf//////////cmv//3Vr/////3NrNUlA3v////9B3v////9wa////////0Le//9gNv////9D3v//dGv/////dmtE3kXeRt5H3kje//9J3npr/////3drTt55a3hr/////0reS95M3v//e2v//zE8Td59a3xraEn//0/eIWz///////9Q3v////9ZN///////////fmsibFHe//8jbEQ1QWZ5Pv//JGz//1LebjhT3lTe/////1XeJWxW3v//JmxX3v//PjtY3lne//////////9OWlreJ2xb3ihsXN4yPf//KWwqbF3eXt4rbP////8sbC1s//9f3v//YN5h3itDYt5j3i5s/////2TeZd4wbP//L2z///////9m3iZGZ94xbGjeLUtp3jJs//8zbGreNGxr3v//bN5t3jVs//9u3m/ect5aRnDe//9x3v///////10+Nmxz3nTe//913v//dt533ms5LlA3bHje/////////////3ne//963nve//84bD9JOWx83kFs//993v///////zps/////zxsft4h3///O2w9bCLfRks+bD9s//8j3///JN8l30Bs////////Qmwm3///J98o3y0zZ0T//2lJYjpXOf//Kd//////T0lfMk5IRWxTNFVARGxJbHlDY0z//0dsSGwuNf//SmxjR19CKt8r33FIPUVGbP//R0tsMkxsKE9CREVPLN8t33E7S2wu3zFCL9///1xsKEEw3///eEb//1BJ//8y3zHf/////zPfT2w/O3I7NN9ePv//ZUc13y04TmxNbP//akn//zbf//9BPP//N99SRf//ON853///Ot//////O9///zzfPd///1FsUmxYOVBsPt8/30Df//9B31NsVGz//1ZsI0JC31VsZjT//1hs//9XbFls//9D31tsXWz//15sRN////////9F3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1ZARt9PPF9s//9H3///UjNI32BsSd///3ZBYWz//2Jsa0n/////LzX//////////////////0rf//9jbEvf//9M3zZE/////03f//9bMf////9O3/////9P31Df////////Ud////////9kbP//////////Ut9T31Tf/////3E8/////1Xf//92P/////9W31ff/////1jf/////1nfLUL//1rf//9b3///XN9nbF3fb9///2Zs//9e3///ZWz/////X99g32HfYt///2PfbWxrbP//ZN9obP//Zd//////Zt9n32psaN///2nfaWxsbP//dzX//3Bs//9XQP//cWxq32vf//9s31k4//9ubG9sbd//////KU9u33Dfcd83RHLfKUH///////////////9ybHPf//91bHTf/////3Xfdt933///c2x0bFlNeN////////8nRnhsed//////et///3vf////////////////dmx3bHlsfN99337fIeD/////IuAj4P////8pbf////////////98bCTg//8l4H1se2wm4CfgKOAp4P///////yrg/////yvgLOB6bP//fUT/////IW0lbSJtfmwt4CNtLuAv4DDgJG3///////8x4Ctt////////Jm3//zLgM+A04DXgWEAobTbgN+AqbSdt//////////844P////854Drg//874DzgPeAtbf//Mz3//yxt/////z7gP+BA4C5t//////////8vbUHgQuAybTFt//8wbf//Q+A0bTNt//92TP////9E4DZtReA1bTdtRuD///////84bUfgSOD//0ngSuD/////Om1L4P//////////TOD//03gOW1IPzttTuBP4G02PG0+bf//UOD//1Hg//////////9S4FPg/////z9t//9U4FXg//9W4FfgQG09bVjgQW3//1Y8Qm0wNTM3//9Z4P//WuAuOP//W+D///////////////9DbVzg/////3BG/////z5FRG3//////////13g/////0dt//9k4F7g//9f4GDg/////////////2HgNDxi4GPgRm1FbVo3SG1l4P//ZuBTM///Sm3//2fgaOBcOklt//9Sbf////9p4Grg//9MbU5tZUpLbWvgbOBt4E1t//9RbU9tMTVu4FBtb+Bw4P//ceD//3LgU21z4HTgWkdYTv//deB24HfgND3///////9UbXjgeeB64HvgIk1WbXzgVW3/////WW1BTX3gfuBYbSHhbTNXbVxtIuH//1tt/////1ptMkVdbSPh//8k4SXhJuEn4Sjh//9ebSnh////////X20q4SvhbDn//yU3YG1hbWJtLOH/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ST9jbS3hLTxkbS7hL+H//2VtMOEx4TLhIVJ+Uf//////////Zm1wZWdtJEMrP0BH/////zPhNOFobTXh//9VSlREfjn//zbhKUM34TjhKjH//3hLVz854f///////zrhO+H//zzhXjf//z3hYTY+4T/hVkpA4f//////////aW3/////////////QeH//2ttQuFD4WptYDL//0ThdkZsbXdH//8zRUXhbW1SPUbh/////29tR+FI4UJMfm1xbXJtSeH//0lESuFgQndBS+EoRkzhcG1VNf//TeH/////eW1O4XZtJW4pRmBDc23//35EU0V0bXhtYD9P4WdHTERQ4f//QkB3bS5CJEJ1bSkwIk////////96bVHhUuFU4f//VeFW4WFCU+H//zU9Sj9X4VjhfG17bVnhbzB9bf////8vSf//J25a4f//W0ZrP1vhXOFZQ///eDb//yZuN00/MV3hV0phMiFuIm4jbiRuO0YjQ2MwKG7//yluI3T//17hPUJf4Spu//9zMUxBYOEvOP//Wk1h4WLhK24sRf////9j4XhBVzwsbmTh//8vbv//ZeFlPS1uK0EqQWbhZDD//0tOMW7//3JIM24ybjBuZGNUNGfh//9ubWjhNW40bmnhauH//2vhNm5s4ThN////////beH//27hb+Fw4f//ceH//////////3Lhc+F04WFG//914S5L//83bv//WTz//////////zhuduE5bnfheOF54TpueuH//yFF//////////974X3h/////2ow//9+4SHiIuL//yPiJOL//1k5//984f//Ok////////8t4v////8l4v//JuIn4iji//8+biniKuL//yvi//80Nztu//88bizi/////3RJ/////y/i//9UM///MOIx4v///////zLiOU0u4j82/////////////1RFM+I04jXi//8/bv//NuI34jji//854v//////////OuL/////O+L//0Bu//884v//PeI+4j/iQW5A4v//QeL//0Li//9D4v//ReJG4v//ROL//0fi//9I4v///////yJFSeJK4kNuS+JCbv//TOL//03iTuL//0/iUOL//1HiUuL/////////////U+L///////9U4lXiU0ZEbjY9YDxbR3FDVuL/////cjxX4mw///9FbljiRm5Z4lriW+L/////////////XOJdP0duXeJIbv//XuL//0lub03//zc9X+L//////////0tuSm5g4lo5//9zOUA7YeJi4mPi/////////////2TiTm5l4v//ZuJn4mY9//9NbmjiTG7//2lCaeL//284auJDQGvibOJt4v//MEhu4v///////zk9//9v4v////9w4k9u//9fPv//ceL//3Li//9SblBuc+J04nXiUW524nfieOJ54lRuU2564v//ej7//1Vue+J84n3i//9+4lZuV24h4yLj//8j41BIUzphPFhu//9ZbiRORT1uTExOWm5iNv//JOMl4///W24m4yNFJ+Mo415ueDNLPynjXG7//11u//9gRCrjK+NVS3w2//8s4y3j//8u4y/jMOMx4zLjM+P///////9gbmFuNOP//zXj//82419uN+P//2NuOOM54/////864zvjPOM94///PuM/4///QONfRkMz//9B42duQuND42RuZm5E4///ReP///////9G40fjYm7//////////0jjSeNK40vj//9M409v/////2Vu//9N407jT+P/////UONrTlHjUuNaOFPjVONV4///VuP//1fjb25Y4///WeNa4zRFam5b41zjbW5rbl3jcG7//17jX+Ng43FuYeP/////////////aW5i42Pjdm50MWTjZeNobv//ZuNn4y1I//9sbmjjYD5p42rja+P//////////2zjbeNu41s5////////b+Nw43HjcuNz4///dON143bjSEt342Q2/////0Y9//88Rv////9443njeuP/////e+N84/////8tQX3jdG7//25uc25+40NMIeQ4RHVucm7/////IuQj5P///////yTkJeT//ybkJ+T/////KOT//yxB//8p5P////8q5P///////yvkeW4s5HhuLeQu5C/kMOT//zHkMuQz5DTkNeT//zbkN+Q45Dnk/////zrkO+Q85D3kd24+5P//L0s/5P//QOT//0HkQuRD5P////9E5EXk//9G5EfkSOT//0nkez1K5P//S+RM5HpuX0r//03kVDFO5P//T+T//0ZJckP//////////3g1UOR8blHkXTn/////UuRT5P//VOT///////8sO///VeT//////////1bk//97bm0/V+T/////WORZ5P////9uPyFvI2///1rkW+Rc5F3kez5e5CJvJG9f5GDkUzZh5EVJYuRj5GI8I0///35ueDr/////P09k5GXkJm9m5Gfk/////yVvJ2//////////////////////fW7/////aORp5Grk//9pRv//VUX/////a+Rs5G3k//9XRG7kLG9v5HDk//9x5ENDKG///3Lk//8pb////////3PkdOT//3Xk//925Hfk//8tN3jkK2955Hrke+T//3zkfeQwOH7k////////IeX//ypvIuVhPiPlJOUl5Sbl/////////////yfl//8o5SnleTMq5f//K+X/////LOX//zBvLeU/OnlBLuX//0pEL+X/////MOX/////MeX//zLlM+X//zTlOzM15Tvl//825S5vL29DRP//LW////////835TjlOeX/////MW865f///////////////zzl//83bz3lPuU/5UDlOm9B5ULlQ+VE5UXl/////zlvLUX//0bl/////zJvM282b0fl/////0jlOG9J5Url//9ANkvl//87bzVvTOVN5TRv/////////////////////////////////////0/lUOVO5VHlUuX//1PlVOVV5T9vVuX/////QG9X5Vjl////////WeVa5VvlQW//////Pm89b1zlXeVe5WI+KkY8b///////////X+X//0Vv////////////////////////Q2//////YOVh5f//YuVj5WTlZeVEb0Jv//94Qv//Rm9m5f//aOX//2fl//9Hb///aeVJb2rl/////2vl//9s5f//beX//////////1U0SG96TP//buX///////9v5VRvSm9w5f//TW9x5UtvcuVMb3Pl//////////905f//Tm915f//duV35XjlUG955Xrl/////1Fv//9Sb///////////VW9Tb1ZvWG///1dv//985XvlOUR95X7l//////////8h5v//Z0z//1lvLkEi5v////9abyPmREpbbyszJOYl5ibmPDH//1c0//9WNFxv//9db///Xm9fb////////yfmKOYp5mBvKuZYNFUzXjk2SCvmYm9hbyzm//8t5i7mY2///////////1wx//8v5v//MOb/////Zm8x5mVvZG8y5mdvM+b///////9qb/////805kcwNeY25mhvN+Zsb2tv/////zjmOeY65jvmbm9tb29v//8uRjzmPeb//3BvPuY/5kDmQeZxb3Nv//9C5nJvQ+ZsSUTmReb/////dG9G5v//R+ZI5knm//91b///ZTr//0rm//92b3dv//9L5klLTOb///////9N5k7mT+ZQ5ktBUeZS5v//JDBLQlPmeG///21J////////////////e295b185//96b0I4//9U5v//Veb//1bmV+ZY5v////9FSn1vIXB+byJw//9Z5iExWD98PVk0I3D///////9mR///JXD//1rm//8iMf//JHBERFvmTU4rRnxvJk7//zE4XOZd5ltNXuZf5v//YOZh5mLmY+Z5NjRO//8oN2TmYkIhZ///JnAsM28///9l5v////9WMyhwZuYpcCdwZDdn5l06Yz5o5v//aeYjMf////9ZTmrma+Zs5itwLm5t5ipw////////buZv5i5wLHAtcHDmL3D//zBwbE4xcDJwceZJQDtI////////fT9nNP////86TW0yOD1bOP//NXBy5jRwczs2cDNw/////yg7c+b/////OnAtav//deZWUnbmdz84cHfmeOZ55v////8lTnFG//////////8rMXrmY0A2PP///////3vmN0p85kAx////////bU5rTf//O3B95kVFezz//37mIec8cCLnPXBMPz5wI+duTv////85cEBwQnD//0Fw//8/cP////9DcP////9EcCTnJed6QSbnYjL/////J+co5ynnRXD/////OEwq5///RnD/////////////R3Ar5ypPLOf//////////zFbSHD///////9JcEpw/////y3nTnAu50tw//9McP//TXBPcC/n////////MOcx5/////9EQP////8y53dMM+c050VANec251Bw//9zSP//UXBTc0xMN+dScP//U3A451RwVzM551Zw//9ZPzrn/////1dw//875yQ3//885z3nPudYcFxwP+dacEDn//9B50LnW3D/////czNZcF1w/////0Pn//9ecP//SDD//19wYHD//////////0TnRedG52Q+R+dI5///YXD//0nnSudHNf//S+dkcP////9jcP//YnD/////cWtM51xKTef/////TudP52VwZnBQ51Hn//9S51PnVOf//1Xn//9W51fn//9Y5///Z3BZ51rnaHBb52lwXOdd52pwXudf52Dn//9h52Ln//9aNGPn/////2TnZedm5///audrcGfnaOf//2nna+f/////bOf/////////////////////bHAjR23n//9u525wOzJv53FwcHBw53Hn//9y5yQx////////QTZHSjpEIjr//2A5Zz1z51w///905///c3B253fncnBCTWg0UkhcRnjn//9553w/Tk5151s3//965///e+f//3zndnD//33ndXAo6H7n//////////8h6EtLLEYi6CPoJOj//yXoJuhQMSfo//93cHRw/////1FJak14cCno/////////////yro//95cCvo/////yzoe3BqQlszXDN6cP//Legu6C/oaTQyODDoMehqNDLoM+g/Rf////9gTv///////zToNej//zboN+hcOP////846HxwOej/////fXB+cCFx//8jcSJx////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////d0n//yRxOuj//zvoPOglcT3oJnH/////Puj//ydxP+hA6P//QehC6P///////0Po/////0ToKXEocUXoKnH//0bo////////R+j/////////////////////////////////////dEhMZv////8pP///SOgyNUno//9K6EvoTOj//ytxTegscf//LFI7XVNI/////3swTug7MP//T+j/////////////dDswS34+UOgtcf//X0z//1HoUugucVxN//9CMf///////0E7U+gvcW4yMHFU6FXoVugxcf//V+hY6FnoM3E0cVroNnEycVvo//81cf//XOhd6Fs0/////17oN3H//zhx/////1/oYOhh6GLoY+j///////9k6GXoZuhn6DlxOnH//2joaeg7cf////89cWroa+hs6Dxx//8/cUJxbehu6P//PnFAcUFx//9v6ENx//9CNnDocej//3Loc+j//3Todeh26P////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9zPERxRXFhOf//d+j//3jo//956P////////////9GcXro//8+M////////09HR3FIcf//e+h86H3oWkNrRn7o////////Ieki6f//SXEj6f//JOn//31H//8l6UxCWDFuNv//bzYm6f///////////////3NDTnFwNifpKOlvMv////9NcSnpKulLcSvpTHEs6Upx/////1hx//////////8t6f////8u6S/pMOlPcVBx//8x6VFxUnH//zLpM+n/////VHE06f//U3H//zXpNulZPVVxN+k46TnpV3H/////////////Ouk76f//MzVWcTzpPel7QTM4/////z7p/////1lx//////////8/6f//QOn//0HpQulD6f////9E6U1C/////1px//9F6Ubp//8tRv////9H6f//SOlJ6VtxSun/////////////YHH//15xTOldcV9xTelccf//S+n/////TulP6VDpYnFR6f////9S6f////9T6WFxVOlkcf////9DNmNx//9V6f//ZXH/////ZnH//2hxZ3H///////9pcWtxanH///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////98Of//Vun//1fpbHFY6VnpbXH//1rp//9b6VzpXen//zwzXun//1/pbnH//2DpYelvcWLp//9j6XE///9k6f//Zen/////////////ZulwcWfpcXFo6XJxc3Fp6Wrpa+liOf////9s6W3p//90cXVxbun//3Zxd3Fv6XDpeHFx6f//cukxSHpxc+kmSXtxeXH//31xdOl16Xxxdun//35x//936XjpIXL//3np//966XvpfOl96X7pIeoi6iJy//8j6iTq//8l6ibqJ+oo6v//Ker//yrq////////K+r//yNyLOokci3qLur/////JXIv6v//JnIncv//KHIw6ilyKnIrcixyMer//zLqLXIucv//NV0vcjPqNOo16v//Nur//zfqOOp4ZDQ1Oer///////8hMzI6MXIwciVM/////zrq/////zvqPOozcjRyMnL//zVy/////2JLPeo+6j/qNnL//3s1QOr/////Qer/////Qur//0Pq//9E6kXq//9G6v//R+pI6knqSupL6iVP////////TOo3ck3q//9O6k/qUOr/////////////UepS6v////85clPqVOpV6lbq//9X6ljqWer//1rqPjBb6lzqOnIrSjhyXer//ztyPHL/////Xur/////X+pg6j1yPnL/////////////Yepi6j9yY+puSy07ZOp6Oi9B//9l6mbqZ+r//0By/////2jqaepDcv//aupr6v//bOpt6kFybur//////////0Ryb+pw6nE4QnL///////9x6kVycupGckdy//9Lcv//Kjtz6nTq/////2RC//916v//dur//0xySXJIckpyd+r//3jqXzf//3nqeur///////976lByT3JOcnzq//8zMP//fep+6iHrIuv/////I+v//yTrJev//ybr//9acv//VnL//1dyU3JZcifrVXJiM///KOtMTynrWHJUclJyUXIq6///K+ss6y3rXHIu6///L+v/////X3Iw6zHrXnJdcjLrM+s06zXrNuv/////SUlbcnMwYHI362Jy/////zjrOes66///bzNNcjcx//8762Ry/////zzr//896z7rP+tjcmFyLUNA60Hr////////QutD60Tr//9wS0XrRuv//0frWk5I6///ZXJJ61DrSutL60zrZnL/////Tev///////9nclLrTutP61Hr/////1Pr//9U6///Vev/////VutoclfraXL/////WOv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////87RFnranL//zdI//9vcmty////////bHL//1rrMUtETP//UEZb6///XOte63By/////3FyPkZucm1y//9d6/////8qMv////9f63ly/////3hy//9g62Hr/////3UxYutj62TrdnL///////91cv////9zcv//ezP//3JyMjwpMv////9l62br//9n62jraev/////////////autjOWvrbet8cnty//96cm7rb+t3cmzrfXJw635y//9x6/////////////8lcyRz//9y63Pr//////////8mc/////8tMSFzInN063Q5OUx263XrI3N36////////3jreet66zJL/////ytze+v//ydz////////fOt96/////8sc37rIez//yLs//////////8j7CTs//8l7Clz//8ocybs/////yfsKOxcN/////8p7Crs//8r7CzsLewu7P//LXP///////////////8v7P////8uc///////////L3Mw7CpzMez//zLsdHL//zPsMHP//2FENOz/////NHM17DVzM3M27P////837P//MnM4czjsMXP//zZzOez//zrsO+z//////////zdz////////OnM87D3sPuw/7P//OXNA7P///////0HsQuxD7P//////////ROw8c0Xs//9G7P//R+z//z1zSOw+c0ns//9JT0rsS+z///////87c2tCbTr/////P3NM7E7s//////////9P7P////9N7P///////1Ds//9R7FLsU+z/////VOxV7P////9W7EBzQXNX7FjsQnP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Q3P/////NDhEc1nsWuxb7EVz//8vPFzsRnNd7F7sX+xg7P//YexHc/////9Ic0lz//9i7GPs//9Mc0pzPE///0tzZOxvTmXs/////2bs//9Nc2fsW07//////////2jsTnN+R///aexPc1Fz//9q7FJza+xs7G3s/////27sb+xw7P////9Qc205TUxjS3dW//9gXXtL//////////8rMv//cez//3Ls/////3PsVHNQNVVzVnNXc///dTn//1hzdOz/////VGBbTP//Y0JZc1tzWnN17Fxz////////duxdc///d+xec////////3jseex67F9ze+x87H3s//9gc37sYXNicyHtY3P//2RzZXNmc///Iu0j7STt////////Z3NocyXt//////////8kRSbtJ+0o7SntXTgq7WpzK+0s7f//Le0u7S/t////////MO1NQWtzMe3///////8y7f///////zPtNO1sc/////817f//Nu037f//OO3/////Oe3//zrtO+0hSTztPe1tcz7t//8/7f//QO1B7ULtQ+1E7f////9uczdj/////1psbXD/////b3NF7XBzRu1H7UjtSe3//0rt/////0vtTO1yc3NzdHNwTnFz/////3VzdnNN7U7teHP//3dzT+1Q7VHtUu1T7XpzVO3//1Xte3N5c/////9W7f////9X7f///////////////////////////////////////zZO//9Y7VntWu1b7f//XO18c13tXu3//////////31zVGNf7f//fnNg7WHtYu3//2PtKiH//3QhcCFzIXUh//9KIUshdiFcISQh//8lIT8hMCMxIzIjMyM0IzUjNiM3IzgjOSMnISghYyFhIWQhKSF3IUEjQiNDI0QjRSNGI0cjSCNJI0ojSyNMI00jTiNPI1AjUSNSI1MjVCNVI1YjVyNYI1kjWiNOIf//TyEwITIhLiFhI2IjYyNkI2UjZiNnI2gjaSNqI2sjbCNtI24jbyNwI3EjciNzI3QjdSN2I3cjeCN5I3ojUCFDIVEh//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8xIf//byEAMAEwAjAM/w7/+zAa/xv/H/8B/5swnDC0AED/qAA+/+P/P//9MP4wnTCeMAMw3U4FMAYwBzD8MBUgECAP/1wAHDAWIFz/JiAlIBggGSAcIB0gCP8J/xQwFTA7/z3/W/9d/wgwCTAKMAswDDANMA4wDzAQMBEwC/8SIrEA1wD3AB3/YCIc/x7/ZiJnIh4iNCJCJkAmsAAyIDMgAyHl/wT/ogCjAAX/A/8G/wr/IP+nAAYmBSbLJc8lziXHJcYloSWgJbMlsiW9JbwlOyASMJIhkCGRIZMhEzD+//7//v/+//7//v/+//7//v/+//7/CCILIoYihyKCIoMiKiIpIv7//v/+//7//v/+//7//v8nIigirADSIdQhACIDIv7//v/+//7//v/+//7//v/+//7//v8gIqUiEiMCIgciYSJSImoiayIaIj0iHSI1IisiLCL+//7//v/+//7//v/+/yshMCBvJm0maiYgICEgtgD+//7//v/+/+8lEP8R/xL/E/8U/xX/Fv8X/xj/Gf/+//7//v/+//7//v/+/yH/Iv8j/yT/Jf8m/yf/KP8p/yr/K/8s/y3/Lv8v/zD/Mf8y/zP/NP81/zb/N/84/zn/Ov/+//7//v/+//7//v9B/0L/Q/9E/0X/Rv9H/0j/Sf9K/0v/TP9N/07/T/9Q/1H/Uv9T/1T/Vf9W/1f/WP9Z/1r/QTBCMEMwRDBFMEYwRzBIMEkwSjBLMEwwTTBOME8wUDBRMFIwUzBUMFUwVjBXMFgwWTBaMFswXDBdMF4wXzBgMGEwYjBjMGQwZTBmMGcwaDBpMGowazBsMG0wbjBvMHAwcTByMHMwdDB1MHYwdzB4MHkwejB7MHwwfTB+MH8wgDCBMIIwgzCEMIUwhjCHMIgwiTCKMIswjDCNMI4wjzCQMJEwkjCTMKEwojCjMKQwpTCmMKcwqDCpMKowqzCsMK0wrjCvMLAwsTCyMLMwtDC1MLYwtzC4MLkwujC7MLwwvTC+ML8wwDDBMMIwwzDEMMUwxjDHMMgwyTDKMMswzDDNMM4wzzDQMNEw0jDTMNQw1TDWMNcw2DDZMNow2zDcMN0w3jDfMOAw4TDiMOMw5DDlMOYw5zDoMOkw6jDrMOww7TDuMO8w8DDxMPIw8zD0MPUw9jCRA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDowOkA6UDpgOnA6gDqQP+//7//v/+//7//v/+//7/sQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8MDxAPFA8YDxwPIA8kDEAQRBBIEEwQUBBUEAQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8E/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/MAQxBDIEMwQ0BDUEUQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EACUCJQwlECUYJRQlHCUsJSQlNCU8JQElAyUPJRMlGyUXJSMlMyUrJTslSyUgJS8lKCU3JT8lHSUwJSUlOCVCJZxOFlUDWj+WwFQbYShj9lkikHWEHINQeqpg4WMlbu1lZoSmgvWbk2gnV6FlcWKbW9BZe4b0mGJ9vn2OmxZin3y3iIlbtV4JY5dmSGjHlY2XT2flTgpPTU+dT0lQ8lY3WdRZAVoJXN9gD2FwYRNmBWm6cE91cHX7ea19733DgA6EY4gCi1WQepA7U5VOpU7fV7KAwZDveABO8ViibjiQMnoog4uCL5xBUXBTvVThVOBW+1kVX/KY623kgC2FYpZwlqCW+5cLVPNTh1vPcL1/wo/olm9TXJ26ehFOk3j8gSZuGFYEVR1rGoU7nOVZqVNmbdx0j5VCVpFOS5Dylk+DDJnhU7ZVMFtxXyBm82YEaDhs82wpbVt0yHZOejSY8YJbiGCK7ZKybat1ynbFmaZgAYuKjbKVjmmtU4ZRElcwWERZtFv2XihgqWP0Y79sFG+OcBRxWXHVcT9zAX52gtGCl4VgkFuSG51pWLxlWmwldflRLlllWYBf3F+8YvplKmona7Rri3PBf1aJLJ0OncSeoVyWbHuDBFFLXLZhxoF2aGFyWU76T3hTaWApbk9685cLThZT7k5VTz1PoU9zT6BS71MJVg9ZwVq2W+Fb0XmHZpxntmdMa7Nsa3DCc415vnk8eod7sYLbggSDd4Pvg9ODZoeyiilWqIzmj06QHpeKhsRP6FwRYllyO3Xlgb2C/obAjMWWE5nVmctOGk/jid5WSljKWPte618qYJRgYmDQYRJi0GI5ZUGbZmawaHdtcHBMdYZ2dX2lgvmHi5WOlp2M8VG+UhZZs1SzWxZdaGGCaa9tjXjLhFeIcoqnk7iabG2omdmGo1f/Z86GDpKDUodWBFTTXuFiuWQ8aDhou2tyc7p4a3qaidKJa40Dj+2Qo5WUlmmXZluzXH1pTZhOmJtjIHsran9qtmgNnF9vclKdVXBg7GI7bQdu0W5bhBCJRI8UTjmc9lMbaTpqhJcqaFxRw3qyhNyRjJNbViidImgFgzGEpXwIUsWC5nR+ToNPoFHSWwpS2FLnUvtdmlUqWOZZjFuYW9tbcl55XqNgH2FjYb5h22NiZdFnU2j6aD5rU2tXbCJvl29Fb7B0GHXjdgt3/3qheyF86X02f/B/nYBmgp6Ds4nMiquMhJBRlJOVkZWilWWW05comRiCOE4rVLhczF2pc0x2PHepXOt/C43BlhGYVJhYmAFPDk9xU5xVaFb6V0dZCVvEW5BcDF5+Xsxf7mM6Z9dl4mUfZ8toxGhfajBexWsXbH1sf3VIeWNbAHoAfb1fj4kYirSMd43Mjh2P4pgOmjybgE59UABRk1mcWy9igGLsZDproHKRdUd5qX/7h7yKcIusY8qDoJcJVANUq1VUaFhqcIoneHVnzZ50U6JbGoFQhgaQGE5FTsdOEU/KUzhUrlsTXyVgUWU9Z0JscmzjbHhwA3R2eq56CHsaff58Zn3nZVtyu1NFXOhd0mLgYhljIG5ahjGK3Y34kgFvpnlam6hOq06sTptPoE/RUEdR9npxUfZRVFMhU39T61OsVYNY4Vw3X0pfL2BQYG1gH2NZZUtqwWzCcu1y73f4gAWBCIJOhfeQ4ZP/l1eZWprwTt1RLVyBZm1pQFzyZnVpiXNQaIF8xVDkUkdX/l0mk6RlI2s9azR0gXm9eUt7yn25gsyDf4hfiTmL0Y/RkR9UgJJdTjZQ5VM6U9dylnPpd+aCr47GmciZ0pl3URphXoawVXp6dlDTW0eQhZYyTttq55FRXEhcmGOfepNsdJdhj6p6inGIloJ8F2hwflFobJPyUhtUq4UTiqR/zY7hkGZTiIhBecJPvlARUkRRU1UtV+pzi1dRWWJfhF91YHZhZ2GpYbJjOmRsZW9mQmgTbmZ1PXr7fEx9mX1Lfmt/DoNKg82GCIpjimaL/Y4amI+duILOj+ibh1IfYoNkwG+ZlkFokVAga3psVG90elB9QIgjighn9k45UCZQZVB8UThSY1KnVQ9XBVjMWvpesmH4YfNicmMcaSlqfXKsci5zFHhveHl9DHepgIuJGYvijNKOY5B1k3qWVZgTmnieQ1GfU7NTe14mXxtukG6Ec/5zQ303ggCK+opQlk5OC1DkU3xU+lbRWWRb8V2rXidfOGJFZa9nVm7Qcsp8tIihgOGA8INOhoeK6I03kseWZ5gTn5ROkk4NT0hTSVQ+VC9ajF+hX59gp2iOalp0gXieiqSKd4uQkV5OyZukTnxPr08ZUBZQSVFsUZ9SuVL+UppT41MRVA5UiVVRV6JXfVlUW11bj1vlXedd9114XoNeml63XhhfUmBMYZdi2GKnYztlAmZDZvRmbWchaJdoy2lfbCptaW0vbp1uMnWHdmx4P3rgfAV9GH1efbF9FYADgK+AsYBUgY+BKoJSg0yIYYgbi6KM/IzKkHWRcZI/ePySpJVNlgWYmZnYmjudW1KrUvdTCFTVWPdi4G9qjF+PuZ5LUTtSSlT9VkB6d5FgndKeRHMJb3CBEXX9X9pgqJrbcryPZGsDmMpO8FZkV75YWlpoYMdhD2YGZjlosWj3bdV1On1ugkKbm05QT8lTBlVvXeZd7l37Z5lsc3QCeFCKlpPfiFBXp14rY7VQrFCNUQBnyVReWLtZsFtpX01ioWM9aHNrCG59cMeRgHIVeCZ4bXmOZTB93IPBiAmPm5ZkUihXUGdqf6GMtFFCVyqWOliKabSAslQOXfxXlXj6nVxPSlKLVD5kKGYUZ/VnhHpWeyJ9L5NcaK2bOXsZU4pRN1LfW/ZirmTmZC1numuphdGWkHbWm0xjBpOrm792UmYJTphQwlNxXOhgkmRjZV9o5nHKcyN1l3uCfpWGg4vbjHiREJmsZatmi2vVTtROOk9/TzpS+FPyU+NV21brWMtZyVn/WVBbTVwCXite118dYAdjL2VcW69lvWXoZZ1nYmt7aw9sRXNJecF5+HwZfSt9ooACgfOBloleimmKZoqMiu6Kx4zcjMyW/Jhva4tOPE+NT1BRV1v6W0hhAWNCZiFry267bD5yvXTUdcF4OnkMgDOA6oGUhJ6PUGx/ng9fWIsrnfp6+I6NW+uWA07xU/dXMVnJWqRbiWB/bgZvvnXqjJ9bAIXge3JQ9GedgmFcSoUefg6CmVEEXGhjZo2cZW5xPnkXfQWAHYvKjm6Qx4aqkB9Q+lI6XFNnfHA1ckyRyJErk+WCwlsxX/lgO07WU4hbS2IxZ4pr6XLgcy56a4GjjVKRlpkSUddTalT/W4hjOWqsfQCX2lbOU2hUl1sxXN5d7k8BYf5iMm3Aect5Qn1NftJ/7YEfgpCERohyiZCLdI4vjzGQS5FskcaWnJHATk9PRVFBU5NfDmLUZ0FsC25jcyZ+zZGDktRTGVm/W9FtXXkufpt8flifcfpRU4jwj8pP+1wlZqx343ocgv+ZxlGqX+xlb2mJa/Ntlm5kb/52FH3hXXWQh5EGmOZRHVJAYpFm2WYabrZe0n1yf/hmr4X3hfiKqVLZU3NZj16QX1Vg5JJklrdQH1HdUiBTR1PsU+hURlUxVRdWaFm+WTxatVsGXA9cEVwaXIReil7gXnBff2KEYttijGN3YwdmDGYtZnZmfmeiaB9qNWq8bIhtCW5YbjxxJnFnccd1AXddeAF5ZXnweeB6EXunfDl9loDWg4uESYVdiPOIH4o8ilSKc4phjN6MpJFmkn6TGJSclpiXCk4ITh5OV06XUXBSzlc0WMxYIls4XsVg/mRhZ1ZnRG22cnN1Y3q4hHKLuJEgkzFW9Ff+mO1iDWmWa+1xVH53gHKC5onfmFWHsY87XDhP4U+1TwdVIFrdW+lbw19OYS9jsGVLZu5om2l4bfFtM3W5dR93XnnmeTN944GvgqqFqok6iquOm48ykN2RB5e6TsFOA1J1WOxYC1wadT1cToEKisWPY5ZtlyV7z4oImGKR81aoUxeQOVSCVyVeqGM0bIpwYXeLfOB/cIhCkFSREJMYk4+WXnTEmgddaV1wZaJnqI3blm5jSWcZacWDF5jAlv6IhG96ZPhbFk4scF11L2bEUTZS4lLTWYFfJ2AQYj9ldGUfZnRm8mgWaGNrBW5ych9123a+fFaA8Fj9iH+JoIqTisuKHZCSkVKXWZeJZQ56BoG7li1e3GAaYqVlFGaQZ/N3TXpNfD5+CoGsjGSN4Y1fjql4B1LZYqVjQmSYYi2Kg3rAe6yK6pZ2fQyCSYfZTkhRQ1NgU6NbAlwWXN1dJmJHYrBkE2g0aMlsRW0XbdNnXG9OcX1xy2V/eq172n1Kfqh/eoEbgjmCpoVuis6M9Y14kHeQrZKRkoOVrptNUoRVOG82cWhRhXlVfrOBznxMVlFYqFyqY/5m/WZaadlyj3WOdQ55VnnfeZd8IH1EfQeGNIo7lmGQIJ/nUHVSzFPiUwlQqlXuWE9ZPXKLW2RcHVPjYPNgXGODYz9ju2PNZOll+WbjXc1p/WkVb+VxiU7pdfh2k3rffM99nH1hgEmDWINshLyE+4XFiHCNAZBtkJeTHJcSms9Ql1iOYdOBNYUIjSCQw090UEdSc1NvYEljX2csbrONH5DXT15cyozPZZp9UlOWiHZRw2NYW2tbClwNZFFnXJDWThpZKllwbFGKPlUVWKVZ8GBTYsFnNYJVaUCWxJkomlNPBlj+WxCAsVwvXoVfIGBLYTRi/2bwbN5uzoB/gdSCi4i4jACQLpCKltue25vjTvBTJ1kse42RTJj5nd1uJ3BTU0RVhVtYYp5i02KibO9vInQXijiUwW/+ijiD51H4hupT6VNGT1SQsI9qWTGB/V3qer+P2mg3jPhySJw9arCKOU5YUwZWZlfFYqJj5mVOa+FtW26tcO1373qqe7t9PYDGgMuGlYpbk+NWx1g+X61llmaAarVrN3XHiiRQ5XcwVxtfZWB6ZmBs9HUaem5/9IEYh0WQs5nJe1x1+XpRe8SEEJDpeZJ6NoPhWkB3LU7yTplb4F+9Yjxm8WfobGuGd4g7ik6R85LQmRdqJnAqc+eCV4SvjAFORlHLUYtV9VsWXjNegV4UXzVfa1+0X/JhEWOiZh1nbm9Scjp1Ond0gDmBeIF2h7+K3IqFjfONmpJ3lQKY5ZzFUldj9HYVZ4hszXPDjK6Tc5YlbZxYDmnMaf2PmpPbdRqQWlgCaLRj+2lDTyxv2Ge7jyaFtH1Ukz9pcG9qV/dYLFssfSpyClTjkbSdrU5OT1xQdVBDUp6MSFQkWJpbHV6VXq1e914fX4xgtWI6Y9Bjr2hAbId4jnkLeuB9R4ICiuaKRI4TkLiQLZHYkQ6f5WxYZOJkdWX0boR2G3tpkNGTum7yVLlfpGRNj+2PRJJ4UWtYKVlVXJde+22Pfhx1vIzijluYuXAdT79rsW8wdfuWTlEQVDVYV1isWWBckl+XZVxnIW57dt+D7YwUkP2QTZMleDp4qlKmXh9XdFkSYBJQWlGsUc1RAFIQVVRYWFhXWZVb9lyLXbxglWItZHFnQ2i8aN9o13bYbW9um21vcMhxU1/YdXd5SXtUe1J71nxxfTBSY4RpheSFDooEi0aMD44DkA+QGZR2li2YMJrYlc1Q1VIMVAJYDlynYZ5kHm2zd+V69IAEhFOQhZLgXAedP1OXX7NfnG15cmN3v3nke9Jr7HKtigNoYWr4UYF6NGlKXPac64LFW0mRHnB4Vm9cx2BmZYxsWoxBkBOYUVTHZg2SSFmjkIVRTU7qUZmFDotYcHpjS5NiabSZBH53dVdTYGnfjuOWXWyMTjxcEF/pjwJT0YyJgHmG/17lZXNOZVGCWT9c7pf7TopZzV+NiuFvsHlieedbcYQrc7FxdF71X3tjmmTDcZh8Q078XktO3FeiVqlgw28Nff2AM4G/gbKPl4mkhvRdimKtZIeJd2fibD5tNnQ0eEZadX+tgqyZ80/DXt1ikmNXZW9nw3ZMcsyAuoApj02RDVD5V5JahWhzaWRx/XK3jPJY4IxqlhmQf4fkeed3KYQvT2VSWlPNYs9nymx9dpR7lXw2goSF64/dZiBvBnIbfquDwZmmnv1RsXtyeLh7h4BIe+hqYV6MgFF1YHVrUWKSjG56dpeR6poQT3B/nGJPe6WV6Zx6VllY5Ia8ljRPJFJKU81T21MGXixkkWV/Zz5sTmxIcq9y7XNUdUF+LILphamMxHvGkWlxEpjvmD1jaWZqdeR20HhDhe6GKlNRUyZUg1mHXnxfsmBJYnliq2KQZdRrzGyyda52kXjYect9d3+lgKuIuYq7jH+QXpfbmAtqOHyZUD5crl+HZ9hrNXQJd45/O5/KZxd6OVOLde2aZl+dgfGDmIA8X8VfYnVGezyQZ2jrWZtaEH1+diyL9U9qXxlqN2wCb+J0aHloiFWKeYzfXs9jxXXSedeCKJPykpyE7YYtnMFUbF+MZVxtFXCnjNOMO5hPZfZ0DU7YTuBXK1lmWsxbqFEDXpxeFmB2Yndlp2VuZm5tNnIme1CBmoGZglyLoIzmjHSNHJZElq5Pq2Rmax6CYYRqheiQAVxTaaiYeoRXhQ9Pb1KpX0VeDWePeXmBB4mGifVtF19VYrhsz05pcpKbBlI7VHRWs1ikYW5iGnFuWYl83nwbffCWh2VegBlOdU91UUBYY15zXgpfxGcmTj2FiZVblnN8AZj7UMFYVnaneCVSpXcRhYZ7T1AJWUdyx3vofbqP1I9NkL9PyVIpWgFfrZfdTxeC6pIDV1VjaWsrddyIFI9Cet9Sk1hVYQpirmbNaz986YMjUPhPBVNGVDFYSVmdW/Bc71wpXZZesWJnYz5luWULZ9Vs4Wz5cDJ4K37egLOCDITshAKHEokqikqMppDSkv2Y85xsnU9OoU6NUFZSSleoWT1e2F/ZXz9itGYbZ9Bn0miSUSF9qoCogQCLjIy/jH6SMpYgVCyYF1PVUFxTqFiyZDRnZ3Jmd0Z65pHDUqFshmsAWExeVFksZ/t/4VHGdmlk6HhUm7uey1e5WSdmmmfOa+lU2WlVXpyBlWeqm/5nUpxdaKZO40/IU7liK2erbMSPrU9tfr+eB05iYYBuK28ThXNUKmdFm/NdlXusXMZbHIdKbtGEFHoIgZlZjXwRbCB32VIiWSFxX3LbdyeXYZ0LaX9aGFqlUQ1UfVQOZt9294+YkvSc6lldcsVuTVHJaL997H1il7qeeGQhagKDhFlfW9trG3PydrJ9F4CZhDJRKGfZnu52Ymf/UgWZJFw7Yn58sIxPVbZgC32AlQFTX062URxZOnI2gM6RJV/id4RTeV8EfayFM4qNjlaX82euhVOUCWEIYblsUnbtijiPL1VRTypRx1LLU6VbfV6gYIJh1mMJZ9pnZ26MbTZzN3MxdVB51YiYikqQkZD1kMSWjYcVWYhOWU8OTomKP48QmK1QfF6WWblbuF7aY/pjwWTcZkpp2GkLbbZulHEoda96in8AgEmEyYSBiSGLCo5lkH2WCpl+YZFiMmuDbHRtzH/8f8BthX+6h/iIZWexgzyY95YbbWF9PYRqkXFOdVNQXQRr62/NhS2Gp4kpUg9UZVxOZ6hoBnSDdOJ1z4jhiMyR4pZ4lotfh3PLek6EoGNldYlSQW2cbgl0WXVreJJ8hpbceo2ftk9uYcVlXIaGTq5O2lAhTsxR7luZZYFovG0fc0J2rXcceud8b4LSinyQz5F1lhiYm1LRfStQmFOXZ8tt0HEzdOiBKo+jllecn55gdEFYmW0vfV6Y5E42T4tPt1GxUrpdHGCyczx504I0kreW9pYKl5eeYp+mZnRrF1KjUshwwojJXktgkGEjb0lxPnz0fW+A7oQjkCyTQlRvm9NqiXDCjO+NMpe0UkFayl4EXxdnfGmUaWptD29icvxy7XsBgH6AS4fOkG1Rk56EeYuAMpPWii1QjFRximprxIwHgdFgoGfynZlOmE4QnGuKwYVohQBpfm6XeFWBDF8QThVOKk4xTjZOPE4/TkJOVk5YToJOhU5rjIpOEoINX45Onk6fTqBOok6wTrNOtk7OTs1OxE7GTsJO107eTu1O3073TglPWk8wT1tPXU9XT0dPdk+IT49PmE97T2lPcE+RT29Phk+WTxhR1E/fT85P2E/bT9FP2k/QT+RP5U8aUChQFFAqUCVQBVAcT/ZPIVApUCxQ/k/vTxFQBlBDUEdQA2dVUFBQSFBaUFZQbFB4UIBQmlCFULRQslDJUMpQs1DCUNZQ3lDlUO1Q41DuUPlQ9VAJUQFRAlEWURVRFFEaUSFROlE3UTxRO1E/UUBRUlFMUVRRYlH4emlRalFuUYBRglHYVoxRiVGPUZFRk1GVUZZRpFGmUaJRqVGqUatRs1GxUbJRsFG1Ub1RxVHJUdtR4FFVhulR7VHwUfVR/lEEUgtSFFIOUidSKlIuUjNSOVJPUkRSS1JMUl5SVFJqUnRSaVJzUn9SfVKNUpRSklJxUohSkVKoj6ePrFKtUrxStVLBUs1S11LeUuNS5lLtmOBS81L1UvhS+VIGUwhTOHUNUxBTD1MVUxpTI1MvUzFTM1M4U0BTRlNFUxdOSVNNU9ZRXlNpU25TGFl7U3dTglOWU6BTplOlU65TsFO2U8NTEnzZlt9T/Gbuce5T6FPtU/pTAVQ9VEBULFQtVDxULlQ2VClUHVROVI9UdVSOVF9UcVR3VHBUklR7VIBUdlSEVJBUhlTHVKJUuFSlVKxUxFTIVKhUq1TCVKRUvlS8VNhU5VTmVA9VFFX9VO5U7VT6VOJUOVVAVWNVTFUuVVxVRVVWVVdVOFUzVV1VmVWAVa9UilWfVXtVflWYVZ5VrlV8VYNVqVWHVahV2lXFVd9VxFXcVeRV1FUUVvdVFlb+Vf1VG1b5VU5WUFbfcTRWNlYyVjhWa1ZkVi9WbFZqVoZWgFaKVqBWlFaPVqVWrla2VrRWwla8VsFWw1bAVshWzlbRVtNW11buVvlWAFf/VgRXCVcIVwtXDVcTVxhXFlfHVRxXJlc3VzhXTlc7V0BXT1dpV8BXiFdhV39XiVeTV6BXs1ekV6pXsFfDV8ZX1FfSV9NXCljWV+NXC1gZWB1YclghWGJYS1hwWMBrUlg9WHlYhVi5WJ9Yq1i6WN5Yu1i4WK5YxVjTWNFY11jZWNhY5VjcWORY31jvWPpY+Vj7WPxY/VgCWQpZEFkbWaZoJVksWS1ZMlk4WT5Z0npVWVBZTllaWVhZYllgWWdZbFlpWXhZgVmdWV5Pq0+jWbJZxlnoWdxZjVnZWdpZJVofWhFaHFoJWhpaQFpsWklaNVo2WmJaalqaWrxavlrLWsJavVrjWtda5lrpWtZa+lr7WgxbC1sWWzJb0FoqWzZbPltDW0VbQFtRW1VbWltbW2VbaVtwW3NbdVt4W4hleluAW4Nbplu4W8Nbx1vJW9Rb0FvkW+Zb4lveW+Vb61vwW/Zb81sFXAdcCFwNXBNcIFwiXChcOFw5XEFcRlxOXFNcUFxPXHFbbFxuXGJOdlx5XIxckVyUXJtZq1y7XLZcvFy3XMVcvlzHXNlc6Vz9XPpc7VyMXepcC10VXRddXF0fXRtdEV0UXSJdGl0ZXRhdTF1SXU5dS11sXXNddl2HXYRdgl2iXZ1drF2uXb1dkF23XbxdyV3NXdNd0l3WXdtd613yXfVdC14aXhleEV4bXjZeN15EXkNeQF5OXldeVF5fXmJeZF5HXnVedl56Xryef16gXsFewl7IXtBez17WXuNe3V7aXtte4l7hXuhe6V7sXvFe817wXvRe+F7+XgNfCV9dX1xfC18RXxZfKV8tXzhfQV9IX0xfTl8vX1FfVl9XX1lfYV9tX3Nfd1+DX4Jff1+KX4hfkV+HX55fmV+YX6BfqF+tX7xf1l/7X+Rf+F/xX91fs2D/XyFgYGAZYBBgKWAOYDFgG2AVYCtgJmAPYDpgWmBBYGpgd2BfYEpgRmBNYGNgQ2BkYEJgbGBrYFlggWCNYOdgg2CaYIRgm2CWYJdgkmCnYItg4WC4YOBg02C0YPBfvWDGYLVg2GBNYRVhBmH2YPdgAGH0YPpgA2EhYftg8WANYQ5hR2E+YShhJ2FKYT9hPGEsYTRhPWFCYURhc2F3YVhhWWFaYWthdGFvYWVhcWFfYV1hU2F1YZlhlmGHYaxhlGGaYYphkWGrYa5hzGHKYclh92HIYcNhxmG6YctheX/NYeZh42H2Yfph9GH/Yf1h/GH+YQBiCGIJYg1iDGIUYhtiHmIhYipiLmIwYjJiM2JBYk5iXmJjYltiYGJoYnxigmKJYn5ikmKTYpZi1GKDYpRi12LRYrtiz2L/YsZi1GTIYtxizGLKYsJix2KbYsliDGPuYvFiJ2MCYwhj72L1YlBjPmNNYxxkT2OWY45jgGOrY3Zjo2OPY4ljn2O1Y2tjaWO+Y+ljwGPGY+NjyWPSY/ZjxGMWZDRkBmQTZCZkNmQdZRdkKGQPZGdkb2R2ZE5kKmWVZJNkpWSpZIhkvGTaZNJkxWTHZLtk2GTCZPFk52QJguBk4WSsYuNk72QsZfZk9GTyZPpkAGX9ZBhlHGUFZSRlI2UrZTRlNWU3ZTZlOGVLdUhlVmVVZU1lWGVeZV1lcmV4ZYJlg2WKi5tln2WrZbdlw2XGZcFlxGXMZdJl22XZZeBl4WXxZXJnCmYDZvtlc2c1ZjZmNGYcZk9mRGZJZkFmXmZdZmRmZ2ZoZl9mYmZwZoNmiGaOZolmhGaYZp1mwWa5Zslmvma8ZsRmuGbWZtpm4GY/ZuZm6WbwZvVm92YPZxZnHmcmZydnOJcuZz9nNmdBZzhnN2dGZ15nYGdZZ2NnZGeJZ3BnqWd8Z2pnjGeLZ6ZnoWeFZ7dn72e0Z+xns2fpZ7hn5GfeZ91n4mfuZ7lnzmfGZ+dnnGoeaEZoKWhAaE1oMmhOaLNoK2hZaGNod2h/aJ9oj2itaJRonWibaINormq5aHRotWigaLpoD2mNaH5oAWnKaAhp2GgiaSZp4WgMac1o1GjnaNVoNmkSaQRp12jjaCVp+WjgaO9oKGkqaRppI2khacZoeWl3aVxpeGlraVRpfmluaTlpdGk9aVlpMGlhaV5pXWmBaWppsmmuadBpv2nBadNpvmnOaehbymndabtpw2mnaS5qkWmgaZxplWm0ad5p6GkCahtq/2kKa/lp8mnnaQVqsWkeau1pFGrraQpqEmrBaiNqE2pEagxqcmo2anhqR2piallqZmpIajhqImqQao1qoGqEaqJqo2qXaheGu2rDasJquGqzaqxq3mrRat9qqmraaupq+2oFaxaG+moSaxZrMZsfazhrN2vcdjlr7phHa0NrSWtQa1lrVGtba19rYWt4a3lrf2uAa4Rrg2uNa5hrlWuea6Rrqmura69rsmuxa7Nrt2u8a8Zry2vTa99r7Gvra/Nr72u+nghsE2wUbBtsJGwjbF5sVWxibGpsgmyNbJpsgWybbH5saGxzbJJskGzEbPFs02y9bNdsxWzdbK5ssWy+bLps22zvbNls6mwfbU2INm0rbT1tOG0ZbTVtM20SbQxtY22TbWRtWm15bVltjm2VbeRvhW35bRVuCm61bcdt5m24bcZt7G3ebcxt6G3SbcVt+m3ZbeRt1W3qbe5tLW5ubi5uGW5ybl9uPm4jbmtuK252bk1uH25DbjpuTm4kbv9uHW44boJuqm6Ybslut27Tbr1ur27EbrJu1G7Vbo9upW7Cbp9uQW8Rb0xw7G74bv5uP2/ybjFv724yb8xuPm8Tb/duhm96b3hvgW+Ab29vW2/zb21vgm98b1hvjm+Rb8JvZm+zb6NvoW+kb7lvxm+qb99v1W/sb9Rv2G/xb+5v228JcAtw+m8RcAFwD3D+bxtwGnB0bx1wGHAfcDBwPnAycFFwY3CZcJJwr3DxcKxwuHCzcK5w33DLcN1w2XAJcf1wHHEZcWVxVXGIcWZxYnFMcVZxbHGPcftxhHGVcahxrHHXcblxvnHScclx1HHOceBx7HHncfVx/HH5cf9xDXIQchtyKHItcixyMHIycjtyPHI/ckByRnJLclhydHJ+coJygXKHcpJylnKicqdyuXKycsNyxnLEcs5y0nLicuBy4XL5cvdyD1AXcwpzHHMWcx1zNHMvcylzJXM+c05zT3PYnldzanNoc3BzeHN1c3tzenPIc7NzznO7c8Bz5XPuc95zonQFdG90JXT4czJ0OnRVdD90X3RZdEF0XHRpdHB0Y3RqdHZ0fnSLdJ50p3TKdM901HTxc+B043TndOl07nTydPB08XT4dPd0BHUDdQV1DHUOdQ11FXUTdR51JnUsdTx1RHVNdUp1SXVbdUZ1WnVpdWR1Z3VrdW11eHV2dYZ1h3V0dYp1iXWCdZR1mnWddaV1o3XCdbN1w3W1db11uHW8dbF1zXXKddJ12XXjdd51/nX/dfx1AXbwdfp18nXzdQt2DXYJdh92J3YgdiF2InYkdjR2MHY7dkd2SHZGdlx2WHZhdmJ2aHZpdmp2Z3ZsdnB2cnZ2dnh2fHaAdoN2iHaLdo52lnaTdpl2mnawdrR2uHa5drp2wnbNdtZ20nbeduF25Xbndup2L4b7dgh3B3cEdyl3JHcedyV3Jncbdzd3OHdHd1p3aHdrd1t3ZXd/d353eXeOd4t3kXegd553sHe2d7l3v3e8d713u3fHd81313fad9x343fud/x3DHgSeCZ5IHgqeUV4jnh0eIZ4fHiaeIx4o3i1eKp4r3jReMZ4y3jUeL54vHjFeMp47HjneNp4/Xj0eAd5EnkReRl5LHkreUB5YHlXeV95WnlVeVN5enl/eYp5nXmneUufqnmuebN5uXm6ecl51Xnneex54XnjeQh6DXoYehl6IHofeoB5MXo7ej56N3pDeld6SXphemJ6aXqdn3B6eXp9eoh6l3qVeph6lnqpesh6sHq2esV6xHq/eoOQx3rKes16z3rVetN62Xraet164XrieuZ67XrwegJ7D3sKewZ7M3sYexl7Hns1eyh7NntQe3p7BHtNewt7THtFe3V7ZXt0e2d7cHtxe2x7bnude5h7n3uNe5x7mnuLe5J7j3tde5l7y3vBe8x7z3u0e8Z73XvpexF8FHzme+V7YHwAfAd8E3zze/d7F3wNfPZ7I3wnfCp8H3w3fCt8PXxMfEN8VHxPfEB8UHxYfF98ZHxWfGV8bHx1fIN8kHykfK18onyrfKF8qHyzfLJ8sXyufLl8vXzAfMV8wnzYfNJ83HzifDub73zyfPR89nz6fAZ9An0cfRV9Cn1FfUt9Ln0yfT99NX1GfXN9Vn1OfXJ9aH1ufU99Y32TfYl9W32PfX19m326fa59o321fcd9vX2rfT1+on2vfdx9uH2ffbB92H3dfeR93n37ffJ94X0Ffgp+I34hfhJ+MX4ffgl+C34ifkZ+Zn47fjV+OX5Dfjd+Mn46fmd+XX5Wfl5+WX5afnl+an5pfnx+e36DftV9fX6uj39+iH6Jfox+kn6QfpN+lH6Wfo5+m36cfjh/On9Ff0x/TX9Of1B/UX9Vf1R/WH9ff2B/aH9pf2d/eH+Cf4Z/g3+If4d/jH+Uf55/nX+af6N/r3+yf7l/rn+2f7h/cYvFf8Z/yn/Vf9R/4X/mf+l/83/5f9yYBoAEgAuAEoAYgBmAHIAhgCiAP4A7gEqARoBSgFiAWoBfgGKAaIBzgHKAcIB2gHmAfYB/gISAhoCFgJuAk4CagK2AkFGsgNuA5YDZgN2AxIDagNaACYHvgPGAG4EpgSOBL4FLgYuWRoE+gVOBUYH8gHGBboFlgWaBdIGDgYiBioGAgYKBoIGVgaSBo4FfgZOBqYGwgbWBvoG4gb2BwIHCgbqByYHNgdGB2YHYgciB2oHfgeCB54H6gfuB/oEBggKCBYIHggqCDYIQghaCKYIrgjiCM4JAglmCWIJdglqCX4JkgmKCaIJqgmuCLoJxgneCeIJ+go2CkoKrgp+Cu4KsguGC44LfgtKC9ILzgvqCk4MDg/uC+YLeggaD3IIJg9mCNYM0gxaDMoMxg0CDOYNQg0WDL4MrgxeDGIOFg5qDqoOfg6KDloMjg46Dh4OKg3yDtYNzg3WDoIOJg6iD9IMThOuDzoP9gwOE2IMLhMGD94MHhOCD8oMNhCKEIIS9gziEBoX7g22EKoQ8hFqFhIR3hGuErYRuhIKEaYRGhCyEb4R5hDWEyoRihLmEv4SfhNmEzYS7hNqE0ITBhMaE1oShhCGF/4T0hBeFGIUshR+FFYUUhfyEQIVjhViFSIVBhQKGS4VVhYCFpIWIhZGFioWohW2FlIWbheqFh4WchXeFfoWQhcmFuoXPhbmF0IXVhd2F5YXchfmFCoYThguG/oX6hQaGIoYahjCGP4ZNhlVOVIZfhmeGcYaThqOGqYaqhouGjIa2hq+GxIbGhrCGyYYjiKuG1IbehumG7IbfhtuG74YShwaHCIcAhwOH+4YRhwmHDYf5hgqHNIc/hzeHO4clhymHGodgh1+HeIdMh06HdIdXh2iHbodZh1OHY4dqhwWIooefh4KHr4fLh72HwIfQh9aWq4fEh7OHx4fGh7uH74fyh+CHD4gNiP6H9of3hw6I0ocRiBaIFYgiiCGIMYg2iDmIJ4g7iESIQohSiFmIXohiiGuIgYh+iJ6IdYh9iLWIcoiCiJeIkoiuiJmIooiNiKSIsIi/iLGIw4jEiNSI2IjZiN2I+YgCifyI9IjoiPKIBIkMiQqJE4lDiR6JJYkqiSuJQYlEiTuJNok4iUyJHYlgiV6JZolkiW2JaolviXSJd4l+iYOJiImKiZOJmImhiamJpomsia+Jsom6ib2Jv4nAidqJ3IndieeJ9In4iQOKFooQigyKG4odiiWKNopBiluKUopGikiKfIptimyKYoqFioKKhIqoiqGKkYqliqaKmoqjisSKzYrCitqK64rziueK5IrxihSL4IriiveK3orbigyLB4sai+GKFosQixeLIIszi6uXJosriz6LKItBi0yLT4tOi0mLVotbi1qLa4tfi2yLb4t0i32LgIuMi46LkouTi5aLmYuaizqMQYw/jEiMTIxOjFCMVYxijGyMeIx6jIKMiYyFjIqMjYyOjJSMfIyYjB1irYyqjL2MsoyzjK6MtozIjMGM5IzjjNqM/Yz6jPuMBI0FjQqNB40PjQ2NEI1OnxONzYwUjRaNZ41tjXGNc42BjZmNwo2+jbqNz43ajdaNzI3bjcuN6o3rjd+N4438jQiOCY7/jR2OHo4Qjh+OQo41jjCONI5KjkeOSY5MjlCOSI5ZjmSOYI4qjmOOVY52jnKOfI6BjoeOhY6EjouOio6TjpGOlI6ZjqqOoY6sjrCOxo6xjr6OxY7IjsuO247jjvyO+47rjv6OCo8FjxWPEo8ZjxOPHI8fjxuPDI8mjzOPO485j0WPQo8+j0yPSY9Gj06PV49cj2KPY49kj5yPn4+jj62Pr4+3j9qP5Y/ij+qP74+HkPSPBZD5j/qPEZAVkCGQDZAekBaQC5AnkDaQNZA5kPiPT5BQkFGQUpAOkEmQPpBWkFiQXpBokG+QdpColnKQgpB9kIGQgJCKkImQj5CokK+QsZC1kOKQ5JBIYtuQApESkRmRMpEwkUqRVpFYkWORZZFpkXORcpGLkYmRgpGikauRr5GqkbWRtJG6kcCRwZHJkcuR0JHWkd+R4ZHbkfyR9ZH2kR6S/5EUkiySFZIRkl6SV5JFkkmSZJJIkpWSP5JLklCSnJKWkpOSm5Jaks+SuZK3kumSD5P6kkSTLpMZkyKTGpMjkzqTNZM7k1yTYJN8k26TVpOwk6yTrZOUk7mT1pPXk+iT5ZPYk8OT3ZPQk8iT5JMalBSUE5QDlAeUEJQ2lCuUNZQhlDqUQZRSlESUW5RglGKUXpRqlCmScJR1lHeUfZRalHyUfpSBlH+UgpWHlYqVlJWWlZiVmZWglaiVp5WtlbyVu5W5lb6VypX2b8OVzZXMldWV1JXWldyV4ZXlleKVIZYoli6WL5ZClkyWT5ZLlneWXJZell2WX5ZmlnKWbJaNlpiWlZaXlqqWp5axlrKWsJa0lraWuJa5ls6Wy5bJls2WTYnclg2X1Zb5lgSXBpcIlxOXDpcRlw+XFpcZlySXKpcwlzmXPZc+l0SXRpdIl0KXSZdcl2CXZJdml2iX0lJrl3GXeZeFl3yXgZd6l4aXi5ePl5CXnJeol6aXo5ezl7SXw5fGl8iXy5fcl+2XT5/yl9969pf1lw+YDJg4mCSYIZg3mD2YRphPmEuYa5hvmHCYcZh0mHOYqpivmLGYtpjEmMOYxpjpmOuYA5kJmRKZFJkYmSGZHZkemSSZIJksmS6ZPZk+mUKZSZlFmVCZS5lRmVKZTJlVmZeZmJmlma2Zrpm8md+Z25ndmdiZ0Zntme6Z8ZnymfuZ+JkBmg+aBZrimRmaK5o3mkWaQppAmkOaPppVmk2aW5pXml+aYpplmmSaaZprmmqarZqwmryawJrPmtGa05rUmt6a35rimuOa5prvmuua7pr0mvGa95r7mgabGJsamx+bIpsjmyWbJ5somymbKpsumy+bMptEm0ObT5tNm06bUZtYm3Sbk5uDm5GblpuXm5+boJuom7SbwJvKm7mbxpvPm9Gb0pvjm+Kb5JvUm+GbOpzym/Gb8JsVnBScCZwTnAycBpwInBKcCpwEnC6cG5wlnCScIZwwnEecMpxGnD6cWpxgnGecdpx4nOec7JzwnAmdCJ3rnAOdBp0qnSadr50jnR+dRJ0VnRKdQZ0/nT6dRp1InV2dXp1knVGdUJ1ZnXKdiZ2Hnaudb516nZqdpJ2pnbKdxJ3BnbuduJ26ncadz53Cndmd0534nead7Z3vnf2dGp4bnh6edZ55nn2egZ6InouejJ6SnpWekZ6dnqWeqZ64nqqerZ5hl8yezp7PntCe1J7cnt6e3Z7gnuWe6J7vnvSe9p73nvme+578nv2eB58In7d2FZ8hnyyfPp9Kn1KfVJ9jn1+fYJ9hn2afZ59sn2qfd59yn3aflZ+cn6CfL1jHaVmQZHTcUZlxAAAAAAAAAACCh///////////////////////////hIf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VIdVh1aHV4dYh1mHWodbh1yHXYf////////////////v7vDu8e7y7vPu9O717vbu9+747pSH//////////////////////////////////+Yh/////////////9hgf////////////////////+Th////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5mHQIdBh0KHQ4dEh0WHRodHh0iHSYdKh0uHTIdNh06HT4dQh1GHUodTh4CH//+Bh4qHi4f///////////////+Mh///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////hYeGh4eHiIeJh2WH////////////////////////aYf///////////////9gh////////2OH////////////////////////YYdrh/////9qh2SH////////bIf//////////////////////////2aH//////////9uh///////////////////////////////////X4dth/////9ih////////2eH/////////////2iH/////////////////////////////////////////////////////////////////////////////////////////////36Hj4eOh42H////////////////////////////////////////codzh////////////////////////////////2+HcIdxh/////91h///////////////////////////////////////////////////////////////////////////////////////////dIf/////////////////////g4dM7f//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Te3/////////////////////////////////////////////////////////////////////Tu1P7f////9Q7f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9R7f//////////////////////////////////////////////////////////////////////////Uu3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9U7f//////////////////U+3//1bt/////////////1Xt//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9F7f///////1ft//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9a7Vvt////////We3/////////////////////////////////////////////////////////////////////////////WO3//17t////////XO3/////////////////////////////////////////////////////////////////////////////////////////////////////////////Xe3/////////////////////////////////////////////////////////////////////////////////////////////X+3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2Ht////////////////////////////////////////////////////////////////////////YO1i7f//////////////////////////////////////////////////////////////////Y+3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ZO3/////////////////////////////////////////////////////////////////////////////////////Ze3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9m7Wft/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2jt////////////////////////ae3/////////////////////W+7//////////////////////////////////////////2rt/////////////////////////////////////////////////////////////////////2vtbO3///////////////9t7f//////////////////////////////////////////////////////////////////////////bu3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b+3/////////////////////////////////////////////////////////////////////////////////////cO3///////////////////////////////////////////////////////////////////////////////9x7f///////////////////////////////////////////////////////////////////////////////////////////////////////////////3Ltde3/////////////////////////////////////////////dO3///////////////////////////////927f//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////d+147Xnt/////////////////////////////3rt//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////977f////////////////////////////////////////////////////////////////////997Xztge3//////////////////////////////////////////////////4Ltg+3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////hO3//////////////////4Xt//+G7f////////////+H7f//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////iO3///////////////////////////////////////////////////////+J7Yrt////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////i+3/////////////////////////////////////////////////////////////je3//////////////////////////////////////////////////47tj+3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Q7f//////////////////////////////////////////////////ke3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5Ltk+3/////////////////////////////////////////////////////////////////////lu3//////////////////////////////////////////5Tt//////////////////////////////////////////////////////////////////+X7f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Y7Znt//////////////////////////////////////////////////////////+a7Zvt////////////////////////////////////////////////nO3//////////////////////////////////////////0vt////////////////////////////////////////////////////////////////////////////////////////ne3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////57t/////////////////////////////////////////////////////////////////////////////////////////////////////5/toO3///////////////////////////////////////////////////////////////////////////////////////////////////////+h7f//////////ou3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pO3/////////////////////o+3//////////////////////////////////////////////////6btp+3/////////////////////////////////////pe3///////////////////////////////////////+p7f///////////////6jt////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////qu2r7f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+s7a3tru3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+v7f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7Dtse2y7f////////////////////+17f////////////////////////////+z7f////////////////////+37f////////////+47f///////////////////////7bt/////0ft////////////////////////tO3///////////////////////////////////////////////////////////////////////+67f//u+3/////////////////////////////ue3//////////////////////////////////73t//////////////////////////////////////////////////////////////////////////////////////////////////++7f///////////////7/t/////////////////////////////////////////////8Dt////////////////////////////////we3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8LtSu3D7f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Xt////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xu3//////////8jtye3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////K7f//////////////////////////////////x+3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9I7f///////////////8vtze3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z+3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Dt0e3////////////////////////////////////////////////////////T7f///////////////////////////////////////////////////////////////////////////////////////////////9Lt///////////////////U7f//////////////////////////1e3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////W7f//1+3Y7dnt///////////////////////////////////////////////////////////////////////////a7f///////////////////////////////////////////////9zt///////////////////////////////////////////////////////////b7f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////d7d7t///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////g7f/////////////////////////////////////////////////////////////f7f/////////////////////////////////////h7f///////////////////////////////////////////////////////+Lt///////////////////////////////////////////////////////////////////////////////////////////j7f//////////////////////////////////////////////////////////////////////////////////////////5e3/////////////5O3////////m7ent/////////////////////////////////////////////+ft/////+rt///////////////////////////////////////////////////////////////////////////////////o7f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////r7ezt/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3t////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7u3v7f//8O3/////////////////////////////////////////////////////////////////////////////////////8e3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8u3///////////////////////////////////////////////////////////////////////////////////////////////////Pt////////////////////////////////////////Ru317f//////////////////////////9O3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////37fjt//////////////////////////////////////////////////////bt///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////67f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vt/O3///////////////////////////////9A7kHu//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D7v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0Tu/////////////////////////////0Xu/////////////////////0ju////////Ru7///////////////////////////////9H7v////////////////////////////////////////////9K7knu////////////////////////////////////////////////////////////////////////////////S+7/////Te5M7v///////07u////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////T+7/////////////////////////////////////////////////////////////////////////////////////////////////////UO7///////////////////////////////////////////////////////9R7lLu////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jO3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9T7lTu////////////////////////////////////////////////////////////////V+5V7v//Vu7//////////////////1juWu5c7v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d7v///////////////////////////////////////////////////////17u////////////////////////////////////////////////////////X+5g7v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2Tu////////////////Zu5n7v///////////////////////////////////////////////////////2ju////////au5r7m3u//////////////////////////////////////////////////9u7v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cO7//////////////////////////////////////////////////////////2/u////////////////////////////////////////////////////////////////////////////////ce5y7v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////QO1z7v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////907nbu////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////d+7//////////////////////////////////////////////////////////////////////////3ju/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3nu//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////967nvu/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3zu////////////////////////////////////////////////////////////////////////////////////////////////////////RO197v////////////9+7v////////////////////////////////////////////+A7v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+C7oXu////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////hu5B7Yfu////////////////////////////////////////////////////////////////////////////////////////////////iO7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ie7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+K7v//////////////////////////////////////////////////////////i+7/////////////////////////////////////////////////////////////////////////////////////jO7//////////////////////////////////////////////////////////47uj+7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////5Duke7///////+S7pPu////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////lO6W7pnu//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+a7pzu/////////////////////////////////////////////53u//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+f7v////+e7v///////6Du/////////////6PupO7//////////////////6Huou6l7v///////6fu/////////////6bu//////////////////////////////////////////////////////////////////////////////////////////////////////////+u7qju//+q7v///////6nu//////////////////////////////////+r7v////+t7v//////////////////rO7//////////////////////////////////6/u////////////////////////////////////////se6y7v///////////////////////////////////////0Pt////////////////////////////////////////////////////////////////////////////////sO7//////////////////////////////////////////////////////////////////////////////////////////////////////////7bu/////7ru//+47v//tO7//7Xu////////////////ue7///////////////+z7v////////////////////////////////////////////9J7f//ve7////////A7sLu/////////////////////////////////////////////////////////////////////8Huv+7/////vO7///////+77v//////////////////////////////////////////////////////////////////////////////////////////Qu3/////////////////////////////////////xO7////////////////////////////////////////////////////////////////D7v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8Xu////////////////////////////////////////////////////////////////////////////////////////xu7/////////////////////////////////////////////////////////////x+7//////////////////////////////////////////////////////////////////8juye7//////////////////////////////////////////////////8ru/////8vuzO7P7v/////////////////////////////////////////////Q7tHu///////////////////S7v//////////////////0+7////////////////////////U7v//1e7//9bu////////1+7Y7v//////////////////////////////////2e7c7v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3u7f7v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Du/////+Hu4+7/////4u7//////////////////////////////////////////////////////////////////+Tu////////////////////////////////////////////////////////////////////////////////////////5e7////////////////////////m7ufu6e7//////////+ju6+7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7sTt///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////N7nPtfu2A7ZXtvO3M7c7t+e1C7lnuYe5i7mPuZe5p7mzude6B7oPuhO6N7pXul+6Y7pvut+6+7s7u2u7b7t3u6u787v//////////++7/////////////fIH//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+B////////////////////////////////////////////////////////////////////////////////////////YIH///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+RgZKByoH///ruAAAAADz/Xv8lIlz/JiAlIBggGSAcIB0gCP8J/xQwFTA7/z3/W/9d/wgwCTAKMAswDDANMA4wDzAQMBEwC/8N/7EA1wD+//cAHf9gIhz/Hv9mImciHiI0IkImQCawADIgMyADIeX/BP/g/+H/Bf8D/wb/Cv8g/6cABiYFJsslzyXOJcclxiWhJaAlsyWyJb0lvCU7IBIwkiGQIZEhkyETMP7//v/+//7//v/+//7//v/+//7//v8IIgsihiKHIoIigyIqIiki/v/+//7//v/+//7//v/+/yciKCLi/2AkYSRiJGMkZCRlJGYkZyRoJGkkaiRrJGwkbSRuJG8kcCRxJHIkcyRgIWEhYiFjIWQhZSFmIWchaCFpIf7/STMUMyIzTTMYMyczAzM2M1EzVzMNMyYzIzMrM0ozOzOcM50znjOOM48zxDOhM/7//v/+//7//v/+//7//v97M/7/HTAfMBYhzTMhIaQypTKmMqcyqDIxMjIyOTJ+M30zfDNSImEiKyIuIhEiGiKlIiAiHyK/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UJ5Qn1CgUKFQolCqUK9QsFC5ULpQvVDAUMNQxFDHUMxQzlDQUNNQ1FDYUNxQ3VDfUOJQ5FDmUOhQ6VDvUPFQ9lD6UP5QA1EGUQdRCFELUQxRDVEOUfJQEFEXURlRG1EcUR1RHlEjUSdRKFEsUS1RL1ExUTNRNFE1UThROVFCUUpRT1FTUVVRV1FYUV9RZFFmUX5Rg1GEUYtRjlGYUZ1RoVGjUa1RuFG6UbxRvlG/UcJRyFHPUdFR0lHTUdVR2FHeUeJR5VHuUfJR81H0UfdRAVICUgVSElITUhVSFlIYUiJSKFIxUjJSNVI8UkVSSVJVUldSWFJaUlxSX1JgUmFSZlJuUndSeFJ5UoBSglKFUopSjFKTUpVSllKXUphSmlKcUqRSpVKmUqdSr1KwUrZSt1K4UrpSu1K9UsBSxFLGUshSzFLPUtFS1FLWUttS3FLhUuVS6FLpUupS7FLwUvFS9FL2UvdSAFMDUwpTC1MMUxFTE1MYUxtTHFMeUx9TJVMnUyhTKVMrUyxTLVMwUzJTNVM8Uz1TPlNCU0xTS1NZU1tTYVNjU2VTbFNtU3JTeVN+U4NTh1OIU45Tk1OUU5lTnVOhU6RTqlOrU69TslO0U7VTt1O4U7pTvVPAU8VTz1PSU9NT1VPaU91T3lPgU+ZT51P1UwJUE1QaVCFUJ1QoVCpUL1QxVDRUNVRDVERUR1RNVE9UXlRiVGRUZlRnVGlUa1RtVG5UdFR/VIFUg1SFVIhUiVSNVJFUlVSWVJxUn1ShVKZUp1SpVKpUrVSuVLFUt1S5VLpUu1S/VMZUylTNVM5U4FTqVOxU71T2VPxU/lT/VABVAVUFVQhVCVUMVQ1VDlUVVSpVK1UyVTVVNlU7VTxVPVVBVUdVSVVKVU1VUFVRVVhVWlVbVV5VYFVhVWRVZlV/VYFVglWGVYhVjlWPVZFVklWTVZRVl1WjVaRVrVWyVb9VwVXDVcZVyVXLVcxVzlXRVdJV01XXVdhV21XeVeJV6VX2Vf9VBVYIVgpWDVYOVg9WEFYRVhJWGVYsVjBWM1Y1VjdWOVY7VjxWPVY/VkBWQVZDVkRWRlZJVktWTVZPVlRWXlZgVmFWYlZjVmZWaVZtVm9WcVZyVnVWhFaFVohWi1aMVpVWmVaaVp1WnlafVqZWp1aoVqlWq1asVq1WsVazVrdWvlbFVslWylbLVs9W0FbMVs1W2VbcVt1W31bhVuRW5VbmVudW6FbxVutW7Vb2VvdWAVcCVwdXClcMVxFXFVcaVxtXHVcgVyJXI1ckVyVXKVcqVyxXLlcvVzNXNFc9Vz5XP1dFV0ZXTFdNV1JXYldlV2dXaFdrV21XbldvV3BXcVdzV3RXdVd3V3lXeld7V3xXfleBV4NXjFeUV5dXmVeaV5xXnVeeV59XoVeVV6dXqFepV6xXuFe9V8dXyFfMV89X1VfdV95X5FfmV+dX6VftV/BX9Vf2V/hX/Vf+V/9XA1gEWAhYCVjhVwxYDVgbWB5YH1ggWCZYJ1gtWDJYOVg/WElYTFhNWE9YUFhVWF9YYVhkWGdYaFh4WHxYf1iAWIFYh1iIWIlYiliMWI1Yj1iQWJRYllidWKBYoViiWKZYqVixWLJYxFi8WMJYyFjNWM5Y0FjSWNRY1ljaWN1Y4VjiWOlY81gFWQZZC1kMWRJZE1kUWUGGHVkhWSNZJFkoWS9ZMFkzWTVZNlk/WUNZRllSWVNZWVlbWV1ZXllfWWFZY1lrWW1Zb1lyWXVZdll5WXtZfFmLWYxZjlmSWZVZl1mfWaRZp1mtWa5Zr1mwWbNZt1m6WbxZwVnDWcRZyFnKWc1Z0lndWd5Z31njWeRZ51nuWe9Z8VnyWfRZ91kAWgRaDFoNWg5aEloTWh5aI1okWidaKFoqWi1aMFpEWkVaR1pIWkxaUFpVWl5aY1plWmdabVp3Wnpae1p+WotakFqTWpZamVqcWp5an1qgWqJap1qsWrFaslqzWrVauFq6Wrtav1rEWsZayFrPWtpa3FrgWuVa6lruWvVa9lr9WgBbAVsIWxdbNFsZWxtbHVshWyVbLVs4W0FbS1tMW1JbVlteW2hbbltvW3xbfVt+W39bgVuEW4ZbiluOW5BbkVuTW5RblluoW6lbrFutW69bsVuyW7dbulu8W8BbwVvNW89b1lvXW9hb2VvaW+Bb71vxW/Rb/VsMXBdcHlwfXCNcJlwpXCtcLFwuXDBcMlw1XDZcWVxaXFxcYlxjXGdcaFxpXG1ccFx0XHVcelx7XHxcfVyHXIhcilyPXJJcnVyfXKBcolyjXKZcqlyyXLRctVy6XMlcy1zSXN1c11zuXPFc8lz0XAFdBl0NXRJdK10jXSRdJl0nXTFdNF05XT1dP11CXUNdRl1IXVVdUV1ZXUpdX11gXWFdYl1kXWpdbV1wXXldel1+XX9dgV2DXYhdil2SXZNdlF2VXZldm12fXaBdp12rXbBdtF24Xbldw13HXctd0F3OXdhd2V3gXeRd6V34XfldAF4HXg1eEl4UXhVeGF4fXiBeLl4oXjJeNV4+XkteUF5JXlFeVl5YXlteXF5eXmheal5rXmxebV5uXnBegF6LXo5eol6kXqVeqF6qXqxesV6zXr1evl6/XsZezF7LXs5e0V7SXtRe1V7cXt5e5V7rXgJfBl8HXwhfDl8ZXxxfHV8hXyJfI18kXyhfK18sXy5fMF80XzZfO189Xz9fQF9EX0VfR19NX1BfVF9YX1tfYF9jX2RfZ19vX3JfdF91X3hfel99X35fiV+NX49fll+cX51fol+nX6tfpF+sX69fsF+xX7hfxF/HX8hfyV/LX9Bf0V/SX9Nf1F/eX+Ff4l/oX+lf6l/sX+1f7l/vX/Jf81/2X/pf/F8HYApgDWATYBRgF2AYYBpgH2AkYC1gM2A1YEBgR2BIYElgTGBRYFRgVmBXYF1gYWBnYHFgfmB/YIJghmCIYIpgjmCRYJNglWCYYJ1gnmCiYKRgpWCoYLBgsWC3YLtgvmDCYMRgyGDJYMpgy2DOYM9g1GDVYNlg22DdYN5g4mDlYPJg9WD4YPxg/WACYQdhCmEMYRBhEWESYRNhFGEWYRdhGWEcYR5hImEqYSthMGExYTVhNmE3YTlhQWFFYUZhSWFeYWBhbGFyYXhhe2F8YX9hgGGBYYNhhGGLYY1hkmGTYZdhmGGcYZ1hn2GgYaVhqGGqYa1huGG5YbxhwGHBYcJhzmHPYdVh3GHdYd5h32HhYeJh52HpYeVh7GHtYe9hAWIDYgRiB2ITYhViHGIgYiJiI2InYiliK2I5Yj1iQmJDYkRiRmJMYlBiUWJSYlRiVmJaYlxiZGJtYm9ic2J6Yn1ijWKOYo9ikGKmYqhis2K2YrdiumK+Yr9ixGLOYtVi1mLaYupi8mL0Yvxi/WIDYwRjCmMLYw1jEGMTYxZjGGMpYypjLWM1YzZjOWM8Y0FjQmNDY0RjRmNKY0tjTmNSY1NjVGNYY1tjZWNmY2xjbWNxY3RjdWN4Y3xjfWN/Y4JjhGOHY4pjkGOUY5VjmWOaY55jpGOmY61jrmOvY71jwWPFY8hjzmPRY9Nj1GPVY9xj4GPlY+pj7GPyY/Nj9WP4Y/ljCWQKZBBkEmQUZBhkHmQgZCJkJGQlZClkKmQvZDBkNWQ9ZD9kS2RPZFFkUmRTZFRkWmRbZFxkXWRfZGBkYWRjZG1kc2R0ZHtkfWSFZIdkj2SQZJFkmGSZZJtknWSfZKFko2SmZKhkrGSzZL1kvmS/ZMRkyWTKZMtkzGTOZNBk0WTVZNdk5GTlZOlk6mTtZPBk9WT3ZPtk/2QBZQRlCGUJZQplD2UTZRRlFmUZZRtlHmUfZSJlJmUpZS5lMWU6ZTxlPWVDZUdlSWVQZVJlVGVfZWBlZ2VrZXplfWWBZYVlimWSZZVlmGWdZaBlo2WmZa5lsmWzZbRlv2XCZchlyWXOZdBl1GXWZdhl32XwZfJl9GX1Zfll/mX/ZQBmBGYIZglmDWYRZhJmFWYWZh1mHmYhZiJmI2YkZiZmKWYqZitmLGYuZjBmMWYzZjlmN2ZAZkVmRmZKZkxmUWZOZldmWGZZZltmXGZgZmFm+2ZqZmtmbGZ+ZnNmdWZ/ZndmeGZ5ZntmgGZ8ZotmjGaNZpBmkmaZZppmm2acZp9moGakZq1msWayZrVmu2a/ZsBmwmbDZshmzGbOZs9m1GbbZt9m6GbrZuxm7mb6ZgVnB2cOZxNnGWccZyBnImczZz5nRWdHZ0hnTGdUZ1VnXWdmZ2xnbmd0Z3Zne2eBZ4RnjmePZ5Fnk2eWZ5hnmWebZ7BnsWeyZ7Vnu2e8Z71n+WfAZ8Jnw2fFZ8hnyWfSZ9dn2WfcZ+Fn5mfwZ/Jn9mf3Z1JoFGgZaB1oH2goaCdoLGgtaC9oMGgxaDNoO2g/aERoRWhKaExoVWhXaFhoW2hraG5ob2hwaHFocmh1aHloemh7aHxogmiEaIZoiGiWaJhommicaKFoo2ilaKloqmiuaLJou2jFaMhozGjPaNBo0WjTaNZo2WjcaN1o5WjoaOpo62jsaO1o8GjxaPVo9mj7aPxo/WgGaQlpCmkQaRFpE2kWaRdpMWkzaTVpOGk7aUJpRWlJaU5pV2lbaWNpZGllaWZpaGlpaWxpcGlxaXJpeml7aX9pgGmNaZJplmmYaaFppWmmaahpq2mtaa9pt2m4abppvGnFachp0WnWaddp4mnlae5p72nxafNp9Wn+aQBqAWoDag9qEWoVahpqHWogaiRqKGowajJqNGo3ajtqPmo/akVqRmpJakpqTmpQalFqUmpValZqW2pkamdqampxanNqfmqBaoNqhmqHaolqi2qRaptqnWqeap9qpWqraq9qsGqxarRqvWq+ar9qxmrJashqzGrQatRq1WrWatxq3Wrkaudq7GrwavFq8mr8av1qAmsDawZrB2sJaw9rEGsRaxdrG2seayRrKGsrayxrL2s1azZrO2s/a0ZrSmtNa1JrVmtYa11rYGtna2trbmtwa3VrfWt+a4JrhWuXa5trn2uga6Jro2uoa6lrrGuta65rsGu4a7lrvWu+a8NrxGvJa8xr1mvaa+Fr42vma+dr7mvxa/dr+Wv/awJsBGwFbAlsDWwObBBsEmwZbB9sJmwnbChsLGwubDNsNWw2bDpsO2w/bEpsS2xNbE9sUmxUbFlsW2xcbGtsbWxvbHRsdmx4bHlse2yFbIZsh2yJbJRslWyXbJhsnGyfbLBssmy0bMJsxmzNbM9s0GzRbNJs1GzWbNps3GzgbOds6WzrbOxs7mzybPRsBG0HbQptDm0PbRFtE20abSZtJ20obWdsLm0vbTFtOW08bT9tV21ebV9tYW1lbWdtb21wbXxtgm2HbZFtkm2UbZZtl22YbaptrG20bbdtuW29bb9txG3Ibcptzm3PbdZt223dbd9t4G3ibeVt6W3vbfBt9G32bfxtAG4Ebh5uIm4nbjJuNm45bjtuPG5EbkVuSG5JbktuT25RblJuU25UblduXG5dbl5uYm5jbmhuc257bn1ujW6TbpluoG6nbq1urm6xbrNuu26/bsBuwW7DbsduyG7Kbs1uzm7Pbutu7W7ubvlu+279bgRvCG8KbwxvDW8WbxhvGm8bbyZvKW8qby9vMG8zbzZvO288by1vT29Rb1JvU29Xb1lvWm9db15vYW9ib2hvbG99b35vg2+Hb4hvi2+Mb41vkG+Sb5NvlG+Wb5pvn2+gb6Vvpm+nb6hvrm+vb7BvtW+2b7xvxW/Hb8hvym/ab95v6G/pb/Bv9W/5b/xv/W8AcAVwBnAHcA1wF3AgcCNwL3A0cDdwOXA8cENwRHBIcElwSnBLcFRwVXBdcF5wTnBkcGVwbHBucHVwdnB+cIFwhXCGcJRwlXCWcJdwmHCbcKRwq3CwcLFwtHC3cMpw0XDTcNRw1XDWcNhw3HDkcPpwA3EEcQVxBnEHcQtxDHEPcR5xIHErcS1xL3EwcTFxOHFBcUVxRnFHcUpxS3FQcVJxV3FacVxxXnFgcWhxeXGAcYVxh3GMcZJxmnGbcaBxonGvcbBxsnGzcbpxv3HAccFxxHHLccxx03HWcdlx2nHccfhx/nEAcgdyCHIJchNyF3Iach1yH3IkcityL3I0cjhyOXJBckJyQ3JFck5yT3JQclNyVXJWclpyXHJecmByY3JocmtybnJvcnFyd3J4cntyfHJ/coRyiXKNco5yk3KbcqhyrXKucrFytHK+csFyx3LJcsxy1XLWcthy33LlcvNy9HL6cvty/nICcwRzBXMHcwtzDXMScxNzGHMZcx5zInMkcydzKHMsczFzMnM1czpzO3M9c0NzTXNQc1JzVnNYc11zXnNfc2BzZnNnc2lza3Nsc25zb3Nxc3dzeXN8c4BzgXODc4VzhnOOc5Bzk3OVc5dzmHOcc55zn3Ogc6JzpXOmc6pzq3Otc7Vzt3O5c7xzvXO/c8VzxnPJc8tzzHPPc9Jz03PWc9lz3XPhc+Nz5nPnc+lz9HP1c/dz+XP6c/tz/XP/cwB0AXQEdAd0CnQRdBp0G3QkdCZ0KHQpdCp0K3QsdC10LnQvdDB0MXQ5dEB0Q3REdEZ0R3RLdE10UXRSdFd0XXRidGZ0Z3RodGt0bXRudHF0cnSAdIF0hXSGdId0iXSPdJB0kXSSdJh0mXSadJx0n3SgdKF0o3SmdKh0qXSqdKt0rnSvdLF0snS1dLl0u3S/dMh0yXTMdNB003TYdNp023TedN905HTodOp063TvdPR0+nT7dPx0/3QGdRJ1FnUXdSB1IXUkdSd1KXUqdS91NnU5dT11PnU/dUB1Q3VHdUh1TnVQdVJ1V3VedV91YXVvdXF1eXV6dXt1fHV9dX51gXWFdZB1knWTdZV1mXWcdaJ1pHW0dbp1v3XAdcF1xHXGdcx1znXPddd13HXfdeB14XXkded17HXude918XX5dQB2AnYDdgR2B3YIdgp2DHYPdhJ2E3YVdhZ2GXYbdhx2HXYediN2JXYmdil2LXYydjN2NXY4djl2OnY8dkp2QHZBdkN2RHZFdkl2S3ZVdll2X3ZkdmV2bXZudm92cXZ0doF2hXaMdo12lXabdpx2nXafdqB2onajdqR2pXamdqd2qHaqdq12vXbBdsV2yXbLdsx2znbUdtl24Hbmduh27HbwdvF29nb5dvx2AHcGdwp3DncSdxR3FXcXdxl3GnccdyJ3KHctdy53L3c0dzV3Nnc5dz13PndCd0V3RndKd013TndPd1J3VndXd1x3Xndfd2B3Yndkd2d3andsd3B3cndzd3R3end9d4B3hHeMd413lHeVd5Z3mnefd6J3p3eqd653r3exd7V3vnfDd8l30XfSd9V32Xfed9934Hfkd+Z36nfsd/B38Xf0d/h3+3cFeAZ4CXgNeA54EXgdeCF4IngjeC14LngweDV4N3hDeER4R3hIeEx4TnhSeFx4XnhgeGF4Y3hkeGh4anhueHp4fniKeI94lHiYeKF4nXieeJ94pHioeKx4rXiweLF4snizeLt4vXi/eMd4yHjJeMx4znjSeNN41XjWeOR423jfeOB44XjmeOp48njzeAB59nj3ePp4+3j/eAZ5DHkQeRp5HHkeeR95IHkleSd5KXkteTF5NHk1eTt5PXk/eUR5RXlGeUp5S3lPeVF5VHlYeVt5XHlneWl5a3lyeXl5e3l8eX55i3mMeZF5k3mUeZV5lnmYeZt5nHmheah5qXmrea95sXm0ebh5u3nCecR5x3nIecp5z3nUedZ52nnded554HnieeV56nnree158Xn4efx5AnoDegd6CXoKegx6EXoVeht6Hnoheid6K3otei96MHo0ejV6OHo5ejp6RHpFekd6SHpMelV6VnpZelx6XXpfemB6ZXpnemp6bXp1enh6fnqAeoJ6hXqGeop6i3qQepF6lHqeeqB6o3qserN6tXq5ert6vHrGesl6zHrOetF623roeul663rsevF69Hr7ev16/noHexR7H3sjeyd7KXsqeyt7LXsuey97MHsxezR7PXs/e0B7QXtHe057VXtge2R7Zntpe2p7bXtve3J7c3t3e4R7iXuOe5B7kXuWe5t7nnuge6V7rHuve7B7snu1e7Z7unu7e7x7vXvCe8V7yHvKe9R71nvXe9l72nvbe+h76nvye/R79Xv4e/l7+nv8e/57AXwCfAN8BHwGfAl8C3wMfA58D3wZfBt8IHwlfCZ8KHwsfDF8M3w0fDZ8OXw6fEZ8SnxVfFF8UnxTfFl8WnxbfFx8XXxefGF8Y3xnfGl8bXxufHB8cnx5fHx8fXyGfId8j3yUfJ58oHymfLB8tny3fLp8u3y8fL98xHzHfMh8yXzNfM9803zUfNV813zZfNp83XzmfOl863z1fAN9B30IfQl9D30RfRJ9E30WfR19Hn0jfSZ9Kn0tfTF9PH09fT59QH1BfUd9SH1NfVF9U31XfVl9Wn1cfV19ZX1nfWp9cH14fXp9e31/fYF9gn2DfYV9hn2IfYt9jH2NfZF9ln2XfZ19nn2mfad9qn2zfbZ9t325fcJ9w33EfcV9xn3Mfc19zn3Xfdl9AH7ifeV95n3qfet97X3xffV99n35ffp9CH4QfhF+FX4Xfhx+HX4gfid+KH4sfi1+L34zfjZ+P35EfkV+R35OflB+Un5Yfl9+YX5ifmV+a35ufm9+c354fn5+gX6Gfod+in6NfpF+lX6Yfpp+nX6efjx/O389fz5/P39Df0R/R39Pf1J/U39bf1x/XX9hf2N/ZH9lf2Z/bX9xf31/fn9/f4B/i3+Nf49/kH+Rf5Z/l3+cf6F/on+mf6p/rX+0f7x/v3/Af8N/yH/Of89/23/ff+N/5X/of+x/7n/vf/J/+n/9f/5//38HgAiACoANgA6AD4ARgBOAFIAWgB2AHoAfgCCAJIAmgCyALoAwgDSANYA3gDmAOoA8gD6AQIBEgGCAZIBmgG2AcYB1gIGAiICOgJyAnoCmgKeAq4C4gLmAyIDNgM+A0oDUgNWA14DYgOCA7YDugPCA8oDzgPaA+YD6gP6AA4ELgRaBF4EYgRyBHoEggSSBJ4EsgTCBNYE6gTyBRYFHgUqBTIFSgVeBYIFhgWeBaIFpgW2Bb4F3gYGBkIGEgYWBhoGLgY6BloGYgZuBnoGiga6BsoG0gbuBy4HDgcWByoHOgc+B1YHXgduB3YHegeGB5IHrgeyB8IHxgfKB9YH2gfiB+YH9gf+BAIIDgg+CE4IUghmCGoIdgiGCIoIogjKCNII6gkOCRIJFgkaCS4JOgk+CUYJWglyCYIJjgmeCbYJ0gnuCfYJ/goCCgYKDgoSCh4KJgoqCjoKRgpSCloKYgpqCm4KggqGCo4KkgqeCqIKpgqqCroKwgrKCtIK3grqCvIK+gr+CxoLQgtWC2oLgguKC5ILoguqC7YLvgvaC94L9gv6CAIMBgweDCIMKgwuDVIMbgx2DHoMfgyGDIoMsgy2DLoMwgzODN4M6gzyDPYNCg0ODRINHg02DToNRg1WDVoNXg3CDeIN9g3+DgIOCg4SDhoONg5KDlIOVg5iDmYObg5yDnYOmg6eDqYOsg76Dv4PAg8eDyYPPg9CD0YPUg92DU4Pog+qD9oP4g/mD/IMBhAaECoQPhBGEFYQZhK2DL4Q5hEWER4RIhEqETYRPhFGEUoRWhFiEWYRahFyEYIRkhGWEZ4RqhHCEc4R0hHaEeIR8hH2EgYSFhJKEk4SVhJ6EpoSohKmEqoSvhLGEtIS6hL2EvoTAhMKEx4TIhMyEz4TThNyE54TqhO+E8ITxhPKE94QyhfqE+4T9hAKFA4UHhQyFDoUQhRyFHoUihSOFJIUlhSeFKoUrhS+FM4U0hTaFP4VGhU+FUIVRhVKFU4VWhVmFXIVdhV6FX4VghWGFYoVkhWuFb4V5hXqFe4V9hX+FgYWFhYaFiYWLhYyFj4WThZiFnYWfhaCFooWlhaeFtIW2hbeFuIW8hb2FvoW/hcKFx4XKhcuFzoWthdiF2oXfheCF5oXohe2F84X2hfyF/4UAhgSGBYYNhg6GEIYRhhKGGIYZhhuGHoYhhieGKYY2hjiGOoY8hj2GQIZChkaGUoZThlaGV4ZYhlmGXYZghmGGYoZjhmSGaYZshm+GdYZ2hneGeoaNhpGGloaYhpqGnIahhqaGp4aohq2GsYazhrSGtYa3hriGuYa/hsCGwYbDhsWG0YbShtWG14bahtyG4IbjhuWG54aIhvqG/Ib9hgSHBYcHhwuHDocPhxCHE4cUhxmHHocfhyGHI4cohy6HL4cxhzKHOYc6hzyHPYc+h0CHQ4dFh02HWIddh2GHZIdlh2+HcYdyh3uHg4eEh4WHhoeHh4iHiYeLh4yHkIeTh5WHl4eYh5mHnoegh6OHp4esh62Hroexh7WHvoe/h8GHyIfJh8qHzofVh9aH2Yfah9yH34fih+OH5Ifqh+uH7Yfxh/OH+If6h/+HAYgDiAaICYgKiAuIEIgZiBKIE4gUiBiIGogbiByIHogfiCiILYguiDCIMog1iDqIPIhBiEOIRYhIiEmISohLiE6IUYhViFaIWIhaiFyIX4hgiGSIaYhxiHmIe4iAiJiImoibiJyIn4igiKiIqoi6iL2IvojAiMqIy4jMiM2IzojRiNKI04jbiN6I54jviPCI8Yj1iPeIAYkGiQ2JDokPiRWJFokYiRmJGokciSCJJokniSiJMIkxiTKJNYk5iTqJPolAiUKJRYlGiUmJT4lSiVeJWolbiVyJYYliiWOJa4luiXCJc4l1iXqJe4l8iX2JiYmNiZCJlImViZuJnImfiaCJpYmwibSJtYm2ibeJvInUidWJ1onXidiJ5YnpieuJ7YnxifOJ9on5if2J/4kEigWKB4oPihGKEooUihWKHoogiiKKJIomiiuKLIovijWKN4o9ij6KQIpDikWKR4pJik2KTopTilaKV4pYilyKXYphimWKZ4p1inaKd4p5inqKe4p+in+KgIqDioaKi4qPipCKkoqWipeKmYqfiqeKqYquiq+Ks4q2ireKu4q+isOKxorIismKyorRitOK1IrViteK3YrfiuyK8Ir0ivWK9or8iv+KBYsGiwuLEYscix6LH4sKiy2LMIs3izyLQotDi0SLRYtGi0iLUotTi1SLWYtNi16LY4tti3aLeIt5i3yLfouBi4SLhYuLi42Lj4uUi5WLnIuei5+LOIw5jD2MPoxFjEeMSYxLjE+MUYxTjFSMV4xYjFuMXYxZjGOMZIxmjGiMaYxtjHOMdYx2jHuMfoyGjIeMi4yQjJKMk4yZjJuMnIykjLmMuozFjMaMyYzLjM+M1ozVjNmM3YzhjOiM7IzvjPCM8oz1jPeM+Iz+jP+MAY0DjQmNEo0XjRuNZY1pjWyNbo1/jYKNhI2IjY2NkI2RjZWNno2fjaCNpo2rjayNr42yjbWNt425jbuNwI3FjcaNx43IjcqNzo3RjdSN1Y3XjdmN5I3ljeeN7I3wjbyN8Y3yjfSN/Y0BjgSOBY4GjguOEY4UjhaOII4hjiKOI44mjieOMY4zjjaON444jjmOPY5AjkGOS45Njk6OT45UjluOXI5djl6OYY5ijmmObI5tjm+OcI5xjnmOeo57joKOg46JjpCOko6VjpqOm46djp6Ooo6njqmOrY6ujrOOtY66jruOwI7BjsOOxI7Hjs+O0Y7UjtyO6I7ujvCO8Y73jvmO+o7tjgCPAo8HjwiPD48QjxaPF48Yjx6PII8hjyOPJY8njyiPLI8tjy6PNI81jzaPN486j0CPQY9Dj0ePT49Rj1KPU49Uj1WPWI9dj16PZY+dj6CPoY+kj6WPpo+1j7aPuI++j8CPwY/Gj8qPy4/Nj9CP0o/Tj9WP4I/jj+SP6I/uj/GP9Y/2j/uP/o8CkASQCJAMkBiQG5AokCmQL5AqkCyQLZAzkDSQN5A/kEOQRJBMkFuQXZBikGaQZ5BskHCQdJB5kIWQiJCLkIyQjpCQkJWQl5CYkJmQm5CgkKGQopClkLCQspCzkLSQtpC9kMyQvpDDkMSQxZDHkMiQ1ZDXkNiQ2ZDckN2Q35DlkNKQ9pDrkO+Q8JD0kP6Q/5AAkQSRBZEGkQiRDZEQkRSRFpEXkRiRGpEckR6RIJElkSKRI5EnkSmRLpEvkTGRNJE2kTeROZE6kTyRPZFDkUeRSJFPkVORV5FZkVqRW5FhkWSRZ5FtkXSReZF6kXuRgZGDkYWRhpGKkY6RkZGTkZSRlZGYkZ6RoZGmkaiRrJGtka6RsJGxkbKRs5G2kbuRvJG9kb+RwpHDkcWR05HUkdeR2ZHakd6R5JHlkemR6pHske2R7pHvkfCR8ZH3kfmR+5H9kQCSAZIEkgWSBpIHkgmSCpIMkhCSEpITkhaSGJIckh2SI5IkkiWSJpIoki6SL5IwkjOSNZI2kjiSOZI6kjySPpJAkkKSQ5JGkkeSSpJNkk6ST5JRkliSWZJckl2SYJJhkmWSZ5JokmmSbpJvknCSdZJ2kneSeJJ5knuSfJJ9kn+SiJKJkoqSjZKOkpKSl5KZkp+SoJKkkqWSp5KokquSr5KykraSuJK6kruSvJK9kr+SwJLBksKSw5LFksaSx5LIksuSzJLNks6S0JLTktWS15LYktmS3JLdkt+S4JLhkuOS5ZLnkuiS7JLukvCS+ZL7kv+SAJMCkwiTDZMRkxSTFZMckx2THpMfkyGTJJMlkyeTKZMqkzOTNJM2kzeTR5NIk0mTUJNRk1KTVZNXk1iTWpNek2STZZNnk2mTapNtk2+TcJNxk3OTdJN2k3qTfZN/k4CTgZOCk4iTipOLk42Tj5OSk5WTmJObk56ToZOjk6STppOok6uTtJO1k7aTupOpk8GTxJPFk8aTx5PJk8qTy5PMk82T05PZk9yT3pPfk+KT5pPnk/mT95P4k/qT+5P9kwGUApQElAiUCZQNlA6UD5QVlBaUF5QflC6UL5QxlDKUM5Q0lDuUP5Q9lEOURZRIlEqUTJRVlFmUXJRflGGUY5RolGuUbZRulG+UcZRylISUg5R4lXmVfpWElYiVjJWNlY6VnZWelZ+VoZWmlamVq5WslbSVtpW6lb2Vv5XGlciVyZXLldCV0ZXSldOV2ZXald2V3pXfleCV5JXmlR2WHpYiliSWJZYmliyWMZYzljeWOJY5ljqWPJY9lkGWUpZUllaWV5ZYlmGWbpZ0lnuWfJZ+ln+WgZaCloOWhJaJlpGWlpaalp2Wn5aklqWWppaplq6Wr5azlrqWypbSlrJd2Jbalt2W3pbflumW75bxlvqWApcDlwWXCZcalxuXHZchlyKXI5colzGXM5dBl0OXSpdOl0+XVZdXl1iXWpdbl2OXZ5dql26Xc5d2l3eXeJd7l32Xf5eAl4mXlZeWl5eXmZeal56Xn5eil6yXrpexl7KXtZe2l7iXuZe6l7yXvpe/l8GXxJfFl8eXyZfKl8yXzZfOl9CX0ZfUl9eX2JfZl92X3pfgl9uX4Zfkl++X8Zf0l/eX+Jf6lweYCpgZmA2YDpgUmBaYHJgemCCYI5gmmCuYLpgvmDCYMpgzmDWYJZg+mESYR5hKmFGYUphTmFaYV5hZmFqYYphjmGWYZphqmGyYq5itmK6YsJi0mLeYuJi6mLuYv5jCmMWYyJjMmOGY45jlmOaY55jqmPOY9pgCmQeZCJkRmRWZFpkXmRqZG5kcmR+ZIpkmmSeZK5kxmTKZM5k0mTWZOZk6mTuZPJlAmUGZRplHmUiZTZlOmVSZWJlZmVuZXJlemV+ZYJmbmZ2Zn5mmmbCZsZmymbWZuZm6mb2Zv5nDmcmZ05nUmdmZ2pncmd6Z55nqmeuZ7JnwmfSZ9Zn5mf2Z/pkCmgOaBJoLmgyaEJoRmhaaHpogmiKaI5okmieaLZoumjOaNZo2mjiaR5pBmkSaSppLmkyaTppRmlSaVppdmqqarJqumq+aspq0mrWatpq5mruavpq/msGaw5rGmsiazprQmtKa1ZrWmtea25rcmuCa5Jrlmuea6ZrsmvKa85r1mvma+pr9mv+aAJsBmwKbA5sEmwWbCJsJmwubDJsNmw6bEJsSmxabGZsbmxybIJsmmyubLZszmzSbNZs3mzmbOps9m0ibS5tMm1WbVptXm1ubXpthm2ObZZtmm2ibaptrm2ybbZtum3ObdZt3m3ibeZt/m4CbhJuFm4abh5uJm4qbi5uNm4+bkJuUm5qbnZuem6abp5upm6ybsJuxm7Kbt5u4m7ubvJu+m7+bwZvHm8ibzpvQm9eb2Jvdm9+b5Zvnm+qb65vvm/Ob95v4m/mb+pv9m/+bAJwCnAucD5wRnBacGJwZnBqcHJwenCKcI5wmnCecKJwpnCqcMZw1nDacN5w9nEGcQ5xEnEWcSZxKnE6cT5xQnFOcVJxWnFicW5xdnF6cX5xjnGmcapxcnGucaJxunHCccpx1nHece5zmnPKc95z5nAudAp0RnRedGJ0cnR2dHp0vnTCdMp0znTSdOp08nUWdPZ1CnUOdR51KnVOdVJ1fnWOdYp1lnWmdap1rnXCddp13nXudfJ1+nYOdhJ2GnYqdjZ2OnZKdk52VnZadl52YnaGdqp2sna6dsZ21nbmdvJ2/ncOdx53Jncqd1J3Vndad153and6d353gneWd553pneud7p3wnfOd9J3+nQqeAp4Hng6eEJ4RnhKeFZ4WnhmeHJ4dnnqee558noCegp6DnoSehZ6Hno6ej56Wnpiem56enqSeqJ6snq6er56wnrOetJ61nsaeyJ7LntWe357knuee7J7tnu6e8J7xnvKe9Z74nv+eAp8DnwmfD58QnxGfEp8UnxafF58ZnxqfG58fnyKfJp8qnyufL58xnzKfNJ83nzmfOp88nz2fP59Bn0OfRJ9Fn0afR59Tn1WfVp9Xn1ifWp9dn16faJ9pn22fbp9vn3CfcZ9zn3Wfep99n4+fkJ+Rn5KflJ+Wn5efnp+hn6Kfo5+lnwAAAAAAAAAAAAAAAOYAXCkAAAAD5gBEKwAAAABUAjgrAAAAA1QCSCsAAAEDVAJJKwAAAABZAjArAAAAA1kCTCsAAAEDWQJNKwAAAABaAkMrAAAAA1oCTisAAAEDWgJPKwAAAACMAjcrAAAAA4wCSisAAAEDjAJLKwAAAADlAmArAADpAuUCZisAAAAA6QJkKwAA5QLpAmUrAAAAAEswKyQAAJowSzB3JAAAAABNMC0kAACaME0weCQAAAAATzAvJAAAmjBPMHkkAAAAAFEwMSQAAJowUTB6JAAAAABTMDMkAACaMFMweyQAAAAAqzArJQAAmjCrMHclAAAAAK0wLSUAAJowrTB4JQAAAACvMC8lAACaMK8weSUAAAAAsTAxJQAAmjCxMHolAAAAALMwMyUAAJowszB7JQAAAAC7MDslAACaMLswfCUAAAAAxDBEJQAAmjDEMH0lAAAAAMgwSCUAAJowyDB+JQAAAAD3MXUmAACaMPcxeCYAADIi////////////////////////////////////////////////////////////////////////////////////////IikjKf////8kKf//JSn/////JiknKSgp//8pKSopKyn/////LCktKf///////y4pLykwKTEpMikzKTQpNSk2KTcpOCk5KTopOyk8KT0pPik/KUApQSlCKUMpRClFKUYpRylIKUkpSilLKUwpTSn//04pTylQKVEpUilTKVQpVSlWKVcpWClZKVopWyn+/10pXilfKWApYSliKWMpZCllKWYpZyloKWkpailrKWwp//9tKW4pbylwKXEpcilzKXQpdSl6KToqSSohKiwqPCpLKlkqXyr/////PSpMKkAqTyr//1AqeCl9Kf//////////PipNKj8qTipaKmAq////////////////WyphKv//fSr/////dil7Kf////////////////////9cKmIq////////OypKKv////8kKi8q/////yMqLipBKlEq/////0IqUir/////eip5KX4p/////0MqUyorKyorOSpIKv////9EKlQqJSowKl0qYyonKjMqJioyKkcqVyooKjQq//////////93KXwpXipkKkUqVSpGKlYq//////////////////8pKjUqKyo4KioqNyr/////////////////////////////////////////////////////KSv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yQr//////////////////////////9vKHAo//9xKHYodyj//3go//95KP//eij//3so//98KP///////////////////////////////////////////////////////////////////////3QodSj///////9FKzMrOSs6KyUr/v8/K24qJisuK/7//v///zEr//8yK3UqKCt5Kv////82KzwrIitCKywr////////aip0KmsqNCt7KmUqdipvKv//Lyv///////9sKkErcyr//3AqZyr/////fCpxKmgqJyv///////9tKi0rNStmKv7/Oyt4Kv//cipAK2kq//8hK34q/////yMr//////////93Kv///////z4rPSv///////////////////////////////////////////////////////////////////////////////////////////////8xKlMr////////VCv///////9VK1Yr////////////////IipYKv//LSr//zYqcSv////////////////+/2ErYitjK/7/XCtaK18rfStbK///Vyv//20r/////1krXiv/////XSv/////////////////////eCt5K34r//9qK3YrdytrK2wr////////citnK////////28reiv//2gr/////3Arcyv///////91K///////////aSt7K3wrdCtuK/////////////////////////////////////////////////////////////////////////////////////////////9SK////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1kmcihzKEYrRytQK1ErfCP/////////////////////////////////////QCP//////////////////////////////////////////////////////////////////2so/////1gr/////34s//////////9sKG0obij//////////////////30s////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ISldI////////18j/////2It//////////////////////////9kLf////////////9gI///////////////////////////////////XCP/////////////////////////////////////////////////////////////////////////////eCd5J3on//////////////////////////81LTYtNy04LTktOi07LTwtPS0+LT8tVy3//////////zUsNiw3LDgsOSw6LDssPCw9LD4sPyxALP///////////////////////////////////////////////////////////////3Ei//8nIyUjJiMoI////////////////////////////////////////////////////////////////////////////////////////////////////////////////ykj////////////////////////////////////////////////////////////////////////////////////////KyMsIyojLSNHIv///////0Yi////////////////////////WyP/////////////////////////////eC3/////////////VCJVIv//////////////////cy3/////////////////////////////////////////////////////bCL//20i/////24i//////////////////////////////////////////////////////////////////9rIv//////////////////////////////////////////////////byJwIv///////////////////////////////0IiQyL//////////0QiRSL///////////////////////9RIlIiUyL///////////////////////////////////////////////////////////////////////////////////////////////////////95Lf////////////////////////////////////////////////////////////////////92J3cnSCJJIv////////////////////////////////////////////98J////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0InQydEJ0UnRidHJ0gnSSdKJ0snTCdNJ04nTydQJ///fid9J////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yEtIi0jLSQtJS0mLSctKC0pLSotKy0sLS0tLi0vLTAtMS0yLTMtNC3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////QSxCLEMsRCxFLEYsRyxILEksSixLLEwsTSxOLE8sUCxRLFIsUyxULFUsVixXLFgsWSxaLP//KywsLC0sLiwvLDAsMSwyLDMsNCxaJlsmXCZdJl4mXyZgJmEmYiZjJm0m//////////8iIyEj/////////////////////yQjIyP//////////////////zsj////////////////ZyhoKGkoaij///////////////////////////////////////////////8/I2gmaSZqJmsm//////////////////////////9nJv//////////////////ZCZlJv///////////////34t/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zomPSY7JkAmOSY+JjwmPyZsJn0i//97Inwi//96Insn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fS3//////////////////////////////////////////////////////////////////////////////////yEsIiwjLCQsJSwmLCcsKCwpLCosLiMvI///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ViJXIv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////86I///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fSN+I1oiWyJYIlki////////YC3//2EtZib///////////////////////////////////////////////8zIjQiNSL/////////////NiI3Ijwj///////////////////////////////////+/////v////7////+/////v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3QkdSR2JP////////////////////85Insj///////////////////////////+/////v////7////+/////v////////////////////7///////////////////////7//////////v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3Incyd0J3Un//////////84Im4mbyZwJnEmciZzJnQm/v92JncmeSZ6JnsmfCZ9Jn4mai1rLf///////////////2wt/////////////////////////////////////////////////////////////0EoQihDKEQoRShGKEcoSChJKEooSyhMKE0oTihPKP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9lLWYtZy1oLWkt/////////////////////1AoUShSKFMoVChVKFYoVyhYKFkoWihbKFwoXSheKP//////////////////////////////////////////WyxcLF0sXixfLGAsYSxiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLP//cSz///////9wLP////9zLHIs////////////////////////////////byxGLf///////////////////////0ot////////////////QS3///////9ELf///////////////////////0ItTC3/////Sy1FLf///////00t//////////////////////////9HLf//////////Ty3//////////////////////////////////0AtTi3/////Qy3///////9ILf////////////9JLf////////////////////////////////////////////////////////////////////////////////////////////9fLW8tbi1tLf///////////////////////////////////////1MtVC3///////////////////////////////9QLVEtUi3/////Vi3//////////////////////////////////////////////////////////////////////////////////////////1Ut////////////////XiP//2MtIy7///////8tof//////////////////////////////////////////////////////////////////////////////////////////////////MqH//zOh////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////XqH//1ah////////////////////////////////////////////////////////////////////////////////////////////////////////fqH//////////////////////////////////////////////////////////////////////////////////////////1Mu////////////////K6P//////////2j0/////////////y+j//////////////////////////////////////////////////9bLkij//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9do16j//////////9ho///////////////////////////Z6P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOk//8mpP//////////////////////////////////////////////////////////////////////////L6T/////////////////////////////////////////////////////OKT//////////////////////////////////////////////////////////////////0KkSqT/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////eaT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z+l//////////9Dpf////9Bpf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9XpSOoJaj/////////////////////KagoqP////////////////////8sqP////////////////////////////////////////////////////////////9fT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z6o/////////////////////////////////////////////////////////////////////////////////////29P/////////////1ao/////////////////////////////1mo/////////////////////1yoXqj//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2+o////////////////caj///////////////////////90qP///////////////////////////////////////////////////////////////////////3mo//////////97qP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////87rEas/////0qs////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////YKxbrf//////////X63/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ca02rv///////////////////////////////////////////////3ytLq7/////////////////////////////Mq7//zSu/////////////0l1/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////22u////////////////////////Za7///////////////////////////////////////8orymv//////////8sr///////////////////////////////////////////////////////////NK//////////////////////////////////////////////fnX///////////////////////////////8hdv///////////////////////0iv//////////////////////////////////////////////////////////////////////////////////////////9drzp2//////////////////////////////////////////////////////////93r////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zvu/////////////////////////////////////0Luce7///////////////////////////////9+7v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0Dv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1Tv//////////////////////////////////////////////////////////////////////////////////////////////////9w7///////////////////////////////////////////////////d+8o8P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2Z3/////////////////////////////////////////////////////////////////////////////////////z/w/////////////0Hw//9C8P////////////////////////////////////////////////////////////////////9J8P//////////////////////////////////////////UPA08f////////////////////////////////////////////////////////////////////9NeP////9G8f//SPH///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9c8f////////////////////////////////////////////////////////////////////9n8f//////////////////////////////////bPEi8v///////////////////////////////////////////////////////////////////////////////y3y//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////858mTy////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPL///////////////938v//////////////////////////////////////////////////ffL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////M/P//////////////////////////zfz/////////////////////////////////////////////////////////////////////////////////////////////////////0fz//////////////////9L8///////////SPNT8////////////////1fz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9tef//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////K/T///////////////////////////////////////829P///////////////zv0TvT//////////////////////////////////////////////////////////////////////////////////////////////////////////130/////////////////////////////////////////////////////////////2H0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z71//9C9Uj1/////////////////////////////////////0r1//////////9M9f////////////9P9f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1l6//////////////////9aev////////////////////////////////////////////////////////////////////9s9f///////271//////////////////////////////////////////////////////////939f///////////////////////////////////////////////////////////////////////////////////////zX2//////////////////////////8y9v///////////////////////////////////////////////////////zT2Wfb//////////1T2/////////////////////////////////////////////////////////////232/////////////////////////////////////////////////////////////////////////////272/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1F7/////////////////////////////////////////////////////////////////////0/3/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2z3//////////9geyT4//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////86+P////////////////////////////////////////////////////////////////////////////////////////////9D+P////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9O+P//////////////////////////////////U/hr+P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yn5/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z/5Sfn///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9LfP///////////////////////1z5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////J/pYff///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2r7////////////////////////////////////////////////cPt1+////////////////////////////////////////////////////////////////////////////////////////////////3j7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zf8Vfz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jv3//////////////////yj9//////////////////8q/f///////////////////////////////////////////////////////zH9Pn7/////////////////////P/3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yr+////////////////////////////////Lf5L/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2D+IqH///////////////////////////////8jof////8kof///////////////////////////////////////////////////////yQuJaH//yahLvD//yehJS4mLv///////////////////////////////////////yih////////////////KaEqof////////////////////8sof////////////////////8vof////////////////////////////////////8wof////////////////////////////////////////////////////////////////////////////////////////////8nLv///////////////////////////////////////zGh////////////////////////////////////////////////////////////////////////NKH//zWhN6H///////////////84of//////////OaH//////////////////zqh////////////////////////PKH///////////////8oLv///////////////////////zuh/////////////z2h////////PqH//////////////////yku//8qLj+h/////ysu//////////////////8sLv//////////////////////////QKH/////////////////////////////////////////////////////////////////////////////////////QqH///////////////9Dof///////////////////////y4uLy7//////////////////////////0Sh//8wLv//RaH///////////////8xLi0u////////QaH/////////////Mi7//zMu//////////////////////////9HoUih//9Jof////9KoTQu////////S6H/////TKH//////////zUu//////////////////9Nof//Ni7/////Ny7/////TqH/////////////////////////////////////////////////////////////UKH/////////////////////////////UaH///////////////9Sof///////zku//9Tof///////1Sh/////1Wh//////////////////////////////////86Lv////////////9Pof//////////////////////////IS5XoVihOy48Lv////////////////////////////89Lv//WaH/////WqH//////////z4u////////W6H//1yh////////XaH//////////z8u////////////////QC7///////////////////////////////9CLv//////////QS5DLl+h////////YKH//////////////////2Gh//////////9iof///////2Oh/////////////////////////////2Sh/////2Wh////////ZqH/////////////Z6H/////////////////////////////////////////////////////////////aaH///////////////////////9qoWuhRC5soW2h/////////////26h////////////////aKH///////////////9vof///////////////3Gh/////////////////////3Khc6H/////////////////////dKH/////daH//////////0Uu//94of//Ry7///////96of//////////e6H//////////////////3yh//////////9ILv////99of////////////////////9GLnahSy7/////Si7//yGj/////0wu/////////////////////////////yOj////////JKP/////TS7//////////////////////////////////////////////////////////04u/////////////////////////////////////////////////////08u//////////////////////////9RLv//Ui7/////////////////////JqP///////////////////////////////////////////////8oo///////////////////dPT//////////////////ymj//////////////////8qo////////////////////////////////yyj//////////9ULv////////////8to////////////////////////y6j/////////////////////////////////////zCj////////////////VS7///////////////9WLv//////////////////////////////////////////////////Vy7///////9YLv////////////////////////////9ZLv//////////M6M0o1ouNaP///////////////////////////////////////82o1wu//9dLjej/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////14u/////////////////////////////zmj//9fLv//////////OqN+L////////2Au//////////////////////////87o///////////////////////////PKP//////////////////////////z6j//89o/////////////////////////////////////9hLv//////////QKP/////////////////////////////QqP//0Oj/////////////////////0Sj//////////////////////////9Fo0aj////////////////////////////////Yi7//0ej//9kLv///////2UuSaP//////////2Yu//////////9nLv////////////////////////////////////////////////////9pLv///////////////0uj////////ai5rLv///////////////2wu/////0yjTaP//////////////////////////////////////////20u//////////////////9Oo///////////////////////////////////////////T6P/////////////////////UKP///////9Ro////////////////////////////////////////////////////////////////////////////////28u//9wLv///////1Sj//////////9Vo///////////////////////////////////VqP/////cS7///////////////////////////////////////////////////////9yLv///////////////////////3Mu////////////////V6P//////////////////////////////////3Qu//9Yo/////9ao/////////////////////9bo/////////////////////////////////////////////////////9fo///////////YKP//////////////////////////////////////////////////////////////////2KjY6N1Lv////////////////////////////9+T/////////////9lo/////92Lmaj/////////////////////////////////////////////////////////////////////2ij////////////////////////dy7//////////////////2Sj////////////////////////////////aaP///////9qo///////////eS5ro///////////////////ei7//////////////////////////3su/////////////////////3wu//9so/////9to///////////////////bqN9Lv////////////94Lv///////2+jfi7//////////3Cj/////yEv////////caNyo/////////////////////9zo/////90o///////////daP///////92o/////8iL///////////////////////////////////////////////////////////////////////////////////////////////////eKP/////eaP//3qj//97o/////////////////////////////8jL3yjfaP//////////////////36j//////////8kL///////////////////////////////////////////////////////////////////////////JS////////////////////////8mL////////////////yGk//////////8ipP////////////8kpP////8lpP////////////8nL///////////////////////////////////KC///yekKKT/////KaT///////////////////////////////////////////////////////////////8rpP///////ykvLKT///////8qL///LaT/////////////Ky//////LqT///////////////////////////////////////////////////////////////////////8tL/////////////////////////////////////////////8zpP///////////////////////zSk/////zWk//8uL/////82pDCk//////////////////////////83pP//////////OaT///////////////87pD6kMC//////////////MS///z+k/////////////////////////////////////////////////////////////zyk//////////////////9ApP///////////////0Gk////////Mi///0Ok//9EpEWk////////////////RqT//zMv////////////////////////J3T//////////////////////////0ek//9IpP////////////81L////////////////0mk//83L///OC85L////////zQv/////////////////////////////////////////////0uk////////TKT/////////////////////TaT///////86L06k/////0+kOy////////////////////////9QpDwv/////z0vUaT//////////1KkPi//////////////////////////////////////////////U6T///////8/L0Av/////1Sk/////////////////////////////////////////////1Wk/////////////////////1ak//////////////////////////////////9XpFikQS///////////////////////////1qk/////////////////////////////0Mv//9bpP////////////9dpP////////////9EL////////0UvRi///////////////////////////////////////////1+kYKT/////////////YaRipP////////////////////////////////////////////////////////////////////9kpP///////////////2WkRy//////ZqRnpGik//9IL////////2mkSS//////////////////////////////////////////////////////////////////////////////baT//0ovbqRvpP///////////////////////3Ck////////bKT/////////////////////////////TS//////////////////////////////////////Ti9PL////////3Ok/////1Av//////////////////9xpP///////////////3ak/////////////1Ev//93pP///////////////1Iv/////3ik//////////9TL1Qv//96pP////97pP//fKT//1UvfaT//////////1Yv/////////////////////////////////////////////////////36k//8hpf///////////////yKl//////////////////////////8jpf///////////////ySl////////////////////////////////////////JqX/////J6X/////////////////////////////////////////////////////WC//////WS//////KKX/////////////////////////////////////////////////////Wy////////////////////////////////9cLymlKqX//yul//8spS2l////////LqX/////////////////////L6VdL///////////////////////////Xy8wpf///////////////zGl/////////////////////////////////////////////zOl////////////////////////NKViL////////2Ev//9jL/////////////9kL/////////////9lL///NaX///////////////9mL////////////////////////zalN6U4pTml//////////86pWcvO6X///////////////88pf///////////////////////////////////////z2l////////////////////////////////////////////////////////////////QKX/////////////////////QqX/////////////////////////////////////////////////////RaX//2kv//9Gpf//////////////////////////////////ai///////////////////0ilSaX/////////////SqX/////////////////////////////////////ay////////////////9sL////////////////////////////////0ul//////////9tL////////////////////////0yl//////////////////////////////////9Npf///////////////24v//////////9Opf//////////T6X//////////28v//////////////////////////9wL1Cl//////////9RpVKl/////1Ol////////////////VKX///////////////////////96flilWaX/////////////cS////////9apf////////////////////////////9yL////////1ul/////////////1yl////////////////////////////////////////////////////////////////////////////////////////////////////////XaX///////////////////////////////////////9epf//cy//////////////dC////////////////////////91L/////9fpf///////3Yv/////////////3cv////////////////YKX//////////////////////////////////////////2Gl//94L2KlY6X//2Sl//////////95L////////////////////////2Wl//9mpf//Z6X//////////2il//////////9ppf//////////ei////////////////////////////////////////////////////////9qpf//a6X///////9spf//////////baX/////////////////////b6X//26l//////////9wpXGl//////////////////9ypf////////////////////////////////////9zpf//fC//////////////////////////////fS///////////////////3Wl////////////////dKX///////////////////////////////9VT///////////////////////////dqX/////////////d6X///////9WT/////////////////////////////////////////////94pf///////////////3ml////////////////////////////////eqVXT///e6X//3yl/////32l/////////////////////////////////////1hP/////yGo////////////////////////////////////////////////////////Iqj//////////////////////////////////////////////////ySo//////////////////////////////////8mqP//////////////////J6j//1lP//////////////////////////////////////////////////9aT///////////Kqj/////////////////////////////K6gtqP////////////////////////////////////9bT/////////////////////////////9cT///////////XU//////////////Lqj//15P//////////8vqP///////////////////////////////////////////////////////////////////////////////////////////////////////////////3t+////////Maj/////YE8yqP///////zOoNKg1qP///////////////zao////////////////////////ZE///zmo/////////////////////////////zyo//89qP//////////ZU////////////////////////////////////////9mT0Go//9CqGdP/////0OoRKj/////aE//////Rqj//////////////////0eo//////////9pT/////////////////////////////////////9JqP//ak///////////2tP//9sT////////////////////////////////////////////////////////////////////////////////////////21PTKj///////////////9wT/////9NqP///////////////////////////////0+o/////1Co////////Uaj//1KocU////////9OqP////////////9TqP//////////////////VKj/////////////////////Vaj///////9zT3RP/////3ZP/////////////////////3VP//////////////////////////////////9XqP////////////////////9YqP////93T/////9aqP//////////////////////////////////////////eE////////////////9dqP///////////////////////1+o//9gqP////9hqP//Yqj///////////////95T////////3pP/////3tP/////////////////////2Oo//9kqP//Zaj///////98T2eo/////////////////////////////////////////////31P/////////////2io/////////////2moaqj//////////////////2uo//8odP//baj//////////26ocKj/////////////////////////////////////////////cqj//yl0c6j/////KnT///////////////91qP////////////////////////////////////92qP///////////////////////////////////////3eo//////////////////////////94qP///////////////////////////////3qo//8rdP////////////8sdP///////////////////////////////3yofah+qCGs/////////////////////3x+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6z//////////ySs//8lrP///////////////////////////////yas//////////8tdCes////////////////KKz//////////y90////////////////Kaz///////////////8qrP//////////////////////////////////////////////////////////////////////////////////MHT///////8srDF0//8ydP//////////M3QtrP////////////8urP//////////////////////////////////L6w0dDGs//////////81dP//////////////////////////////////////////NnT//zd0////////////////OHT/////OXT//////////zp0//8yrP///////////////////////////////zt0////////PHT//////////////////////////zOsPXT/////PnT//////////////////////////zSs//////////////////////////8/dDWs//////////////////////////9AdP////////////82rP///////////////////////////////0F0/////////////zes//84rP////9CdP//////////////////Q3T/////////////RHT//0V0Oaz/////////////////////////////Oqz/////PKz//0Z0//89rP///////////////z6sP6xArP///////////////////////0d0/////0h0Qaz///////////////9JdP//////////QqxDrP///////0Ss/////////////////////0WsSnT///////////////9LdP////9HrEx0////////////////////////SKz//0ms/////////////////////////////////////010//9OdP////////////////////////////////////////////9PdP//////////S6z/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////TKz//////////////////////////02s//////////////////////////9OrP//////////////////UXRSdP///////////////////////0+s//////////////////9RrFKs////////////////////////////////U6z///////////////////////9UrP////9TdP////////////////////9UdFV0////////Vaz//1as//9WdP//////////////////////////////////////////V6z///////9YrP////9ZrP////9XdFqs//9brFys/////////////12s/////1h0//9erP///////////////////////////////1l0//////////9adP///////////////1t0/////1+s////////////////Yaz//////////2Ks//////////////////////////////////////////////////////////////////9jrP///////////////////////////////////////////////////////////////////////2Ss//////////////////////////////////////////9ddP//////////ZqxnrP///////2isaaz///////////////////////////////9qrP////9rrP//////////bKz/////////////////////////////YHT/////X3T///////////////////////////////////////////////////////////////9urP//////////////////b6z//3Cs////////////////////////////////////////////////////////caxzrP///////////////////////////////2J0dKz/////////////daz/////////////////////////////////////////////////////Y3T//////////2R0/////3as/////////////3es//////////94rHms////////ZXT///////9mdP///////////////3qs/////3us/////////////////////32s//9ndP///////36s//////////////////98rP///////////////////////2h0//////////////////////////////////////////////////8hrf///////////////////////////////yKt/////////////////////////////////////////////////////////////////////////////2l0//////////////////////////////////////////8jrWp0//////////////////////////////////////////////////////////////////////////////////////////////////9rdCWtJq3///////////////9sdP////8nrf////8orf//////////////////bXT//////////////////////////////////////////////////////////////////yut/////yyt////////bnT//y2tLq3//////////y+t//9vdDCt////////////////////////Ma3//////////////////////////zOt/////////////////////////////3B0////////////////Nq3///////////////////////////////////////9xdP//////////////////N63///////////////////////////////////////86rf//////////OK3/////////////////////////////////////////////////////////////////////////////////////////////O63//////////////////////////////////////////////////////////z2tPq3///////////////8/rf///////0Ct//////////9ydP////////////9BrUKtc3T//////////0Ot/////3R0//88rUSt////////////////dXT///////92dP///////////////////////0Wt////////d3T/////Rq3///////9Hrf////////////9Irf///////////////////////////////////////////////////////////////////////////////////////3l0/////////////////////0mtSq3//0ut/////3p0////////////////////////////////e3T/////////////TK3/////////////eHT///////9Nrf///////////////////////06t////////////////////////T63/////////////////////////////UK3//1Gt////////////////////////////////////////////////////////////////////////////////fXR+dP//////////IXX/////////////InVSrVOt//98dP//I3X//////////1St//9Vrf///////////////////////////////1etWK3/////////////////////////////////////////////JHX///////8ldf///////1mtWq3//////////////////////////1yt//////////9drf//Xq3//////////////////2Ct////////JnX///////////////8ndf////////////////////9hrf////////////////////////////////////////////9irf///////////////////////////////////////2Ot////////////////////////////////////////////////KXX///////9krf////////////////////////////////////9lrf///////////////2at/////2etaK3//////////2mt////////////////////////////////////////////////KnX/////////////////////////////////////////////////////aq3/////a63/////bK3///////////////9trf////9urf///////////////2+t//////////////////////////9wrf////////////////////////////////////////////////////////////////////////////9yrf///////////////3Ot/////3StLHX///////91rf///////3atLXX/////////////////////////////LnX/////////////////////L3X/////d60xdf//MnX/////////////eK0zdf//////////NHU1df//NnX///////////////8wdf//////////////////////////ea3/////OHX///////85df//e63/////eq3/////////////fq3//zt1PHUhrv////////////89df//Iq7//z51//////////8lriauJ64orv////////////8/df///////0B1QXX/////Ka7//////////yqu////////////////////////////////QnX/////K67//yyu////////////////La7///////////////9Edf///////////////////////////////y+u////////MK5Fdf////8xrv////////////9Gdf///////zOu////////////////R3X//0h1////////////////////////////////////////////////SnX///////////////////////////////9Ldf///////zWu//////////////////////////////////9MdTd1N67///////84rv///////////////////////////////zmuTXX/////////////O67//////////////////////////////////////////////////////////////////091//////////////////////////////////////////////////9RdVJ1////////Pq4/rv///////////////0Cu/////////////////////0Gu/////////////////////1B1//////////////////////////////////9Frv//Rq7//////////1N1/////////////1R1//////////////////////////////////////////9IrlV1//////////9Wdf////9Xdf////////////////////////////////////////////////////9Mrv//Ta7/////////////////////WHX//////////1p1/////06u//////////9Prv///////////////////////1Cu//////////9bdf//Ua7//1Ku/////////////////////////////////////////////////////1Ou////////////////VK7//1l1/////1x1XXX/////////////////////////////////////S67//////////////////1iu//////////9fdf//Wa7///////////////////////////////9gdVqu////////YXX//1yu//////////////////9drv////9erv////////////9frmCu////////Ya7/////Yq7/////////////XnX/////Y67//2Su////////YnX///////////////////////////////////////9mrv////9nrv///////2N1/////2R1//////////9orv//aa7/////////////aq7//////////////////////////////////2uu/////////////2yu//9urm+ucK7//3Gu////////////////ZnX//2d1//////////9yrnOu////////////////aHX//3Su////////////////da7//////////////////3qu//97rv////9pdf///////3yu/////32uanX/////////////fq7/////Ia///////////////////////////yKvI6//////a3X///////8kr2x1/////211bnX/////////////Ja////////92rm91Jq////////8nr/////9wdf///////////////////////////////////////////////////////////////////////////////////////////////////////////////3N1/////////////yuv////////////////dHX///////8tr/////9xdf//////////////////////////////////dXX/////////////////////////////dnV3df///////3h1Lq//////L6//////////////MK///////////////////zGv//////////8yr3l1/////////////////////////////////////////////zOv////////Na///zav////////////////////////////////e3U3r////////////////3x1/////ziv////////////////Oa//////Oq///zuv////////PK//////////////////////////////////////fXX//z2v//////////8+r/////////////////////////////8idkSv/////////////yN2JHb///////9Fr0av////////R69JryV2Jnb//////////////////0qvJ3b//0uv////////KHb//////////0yv/////02v////////////////////////////////////////////////Qa///0+vUK9Rr////////////////yp2/////yt2Uq//////////////LHZTr/////9Ur///////////Vq///y12//9Xr////////y52//////////8vdv////////////////////9Yr////////////////zB2//////////////////8xdv///////////////1Wv////////Wq///////////1uv/////////////zN2//9cr/////////////9er/////80dv////////////////////81djZ2X6///2Cv////////N3b/////////////Yq//////////////////////////////////////////////Y6//////////////////////ZK////////////////////////9mr////////2Wv//////////////////9nr2iv////////////////OHb/////OXb//////////2uv//////////9sr22vbq////////////////////////9vr3Gv////////cq9zr3Sv/////////////3av////////PHb/////PXb//////////////////////////////////z52/////3iv/////////////z92//////////////////////////////////////////9Adv///////3mv/////////////////////////////0F2//96r///////////////////Qnb//////////0N2//9Edv//////////e6//////////////////////fK///0V2/////32v////////////////fq9Gdv///////////////////////////////////////////////////////////////yHu//////////////////////////////////9Hdv///////0h2Iu7/////////////////////////////////////JO4l7v////////////////////8m7ifuKO7/////////////Snb///////////////9Ldkx2/////ynu/////////////////////////////yruK+7///////////////8s7v////8t7v//////////////////////////////////TXYu7v////9Odv//////////L+7///////8w7v//T3b//////////////////////////////////////////////////////////////////////////////////////////1B2//8x7jLu////////M+7//////////zXu//////////////////////////////////827v////////////////////////////9Rdv//N+5Sdv//////////////////////////T+7/////////////OO7///////////////9Udv//VXb//////////////////////////////////znuVnZXdv////867v//////////////////////////PO497v//Pu5Ydv///////1l2//////////////////////////////////9Tdv////8/7v////////////////////////////////////////////////////9A7v///////1t2////////////////////////Qe7///////9cdv//Q+7///////9E7v//Re7///////9ddv////////////////////9G7v//XnZH7kjuX3b///////////////////////////////9adkru////////YXb/////////////S+7///////9idv///////////////////////////////////////////////////////0zu//9N7k7u////////////////Y3ZQ7v//ZHb/////Ze7//////////2V2/////1Hu/////2Z2////////////////////////////////////////////////////////////////Z3b/////Uu7/////U+7//1Tu//////////9odv//////////////////////////Ve7///////////////////////////////////////9W7lfuanb//////////2t2//9sdlju/////1nu////////Wu7/////bXb///////9b7v////////////////////////////////////////////9udmHub3b//2Lu/////////////2Pu//////////////////////////9wdv////9k7v//cXb///////9m7v////////////9n7mjuae7/////////////cnb///////9zdnR2//91dv//au7///////////////////////9r7v///////////////////////////////2zu/////////////3Z2Xe7///////////////9u7v///////2/u//////////9w7v//////////////////////////cu7//3h2//9t7v////////////9z7v//////////////////eXb///////907nXu//927nfu/////3ju//957v//eu577v////987v//////////enb//3t2//////////997v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8h7///////////////////////////////////////////////////Iu////////98dv////////////99dv////8j7///////////////////////////JO///352//8l7////////yF3/////ybv////////Inf//////////////////////////yfv/////////////////////////////////////////////ynv//////////////////////////////////8q7///K+8s7///Le////////8jd///////////////////Lu///yR3//////////////////////////8v7///////////Jnf//////////yd3////////KHf//yjvMO//////////////Me//////////////////////////////////////////////////////KXcz7///////////NO///yp3Ne////////8rd///Nu8sdy13/////////////zfv/////////////////////////////////////////////////////znvLnf///////////////////////8vd////////zB3MXf/////Ou////////8yd///O+///zjv////////////////Pe8zd///////////Pu///zR3//////////////////8/7/////////////9B7zV3/////////////zZ3//887/////////////////////83d0LvQ+84d////////////////////////////////////////0Tv////////Re///////////////////////////0bv////////////////Onf//////////zt3////////OXf/////SO9J7///////////PHc9d0rv/////0vv////////////////////////////////////////////////////////////////TO///////////z53//////////////////////////////////////////9O70/v//9Q7////////////////1Hv////////Uu//////P3dT7/////9Cd/////////////9V7/////////////////////9Ad0F3/////////////0N3Vu////////9X7/////9Y7///We////////////////9Ed1rv//////////////////9b7/////9c7////////0V3Xe//////////////////////////////////////Xu///1/v//////////////////9i7///////////Rnf///////////////9Hd/////////////9j7/////////////9Id////////2Dv/////////////////////////////////////2bv////////////////Z+///2jvSXf///////9Kd////////2nv//////////////////9Ld///////////////////Ze9q72vv//9s723vbu////////9v7/////9Md/////////////////////////////////////9Od///T3f//////////////////////////013/////1B3ce9Rd3Lv/////////////////////////////////////////////////////1J3U3f/////dO//////////////c+9Ud1Z3de//////////////////////V3f//3bv//9Yd///////////////////WXf/////////////////////////////////////////////////////////////ee///////////1t3//9cd///////////////////////////XXf///////947///////////eu///////////3vv//987/////////////////////////////99737v////////IfD///////////////9fd////////////////153/////2B3////////////////I/D//////////////////yTw/////////////yXw/////ybw////////////////////////////////////////////////////////////////////////////////////////YXdid////////////////yfw//////////////////////////////////9jd////////////////////////////////////////////////////////yrw/////////////////////yvw////////LPAt8P////////////////////8v8P//////////////////////////////////////////MPD//2R3ZXcx8P////////////////////////////8y8P//////////////////////////NPA18P////////////////////828P///////////////zfw//////////////////////////////////9ndzjw////////////////////////////////aHf/////////////////////////////////////////////OvA78P//PPA98P///////////////////////////////2l3//9qdz7w//////////////////////////9A8P////////////////////////////////////////////////////////////////////////////////////////////////////9D8P///////////////0Twa3dF8P//////////////////////////RvD/////////////R/BI8P//////////////////////////////////bXdud////////0vw//////////9M8P//TfD/////////////SvD///////9O8P///////////////////////////////////////////////3B3//9P8P//////////////////////////////////////////////////cXf//////////1HwUvD//1TwVfD//1bw/////////////1fw//////////9yd///////////WPD///////9Z8P//////////WvD///////////////////////9b8HN3/////1zw////////XfD//17wdHd1d///dnf/////X/B3d///YPD/////eHf///////////////////////9h8P//YvD//2Pw/////2Tw/////2Xw/////////////2bw////////eXf//2fw////////enf///////////////97d/////98d///////////////////aPD//313////////afD//353////////////////////////////////////////avBs8G3w/////////////yF4/////yJ4/////////////////////2vw////////////////I3gkeP////////////////////9u8P//Jnj//yd4//8oeCl4Knj//yt4LHgteG/w//////////////////9w8P///////////////3Lw/////3PwLnj//y94MHj///////8xeP//dPD//////////3XwcfD///////8yeP////////////928P//////////M3j/////////////////////NHj//zV4////////d/D///////////////////////////////////////948P///////3nwNng3eHrwOHj///////////////89eP//fPD//////////33wOXh+8P////86eP////87eCHxIvH//zx4//8j8T54//8/eEB4JPEl8f///////////////////////0F4////////JvEo8Sfx////////Qnj/////////////////////Q3hEeP///////////////////////////////ynx//8q8f//RXj///////8r8f///////////////////////////////y3x////////LPH//////////////////////////y/x//////////9GeEd4////////////////////////////////////////////////////////SHj/////////////////////MfH///////8y8f////////////8z8f//////////SXj//////////////////////////////////zbxN/H//zjx//////////////////858f////////////868f//O/H//zzx//////////////////////////////////////////////////////////////////898f////9KeP//P/E+8f///////////////0t4QPH/////QfFC8f////9D8f//////////////////////////RfH/////////////THj///////////////////////////////////////9H8f//////////////////////////////////SfH///////////////9K8f//////////////////S/FM8f////////////9N8f//////////////////TnhO8f///////0/x////////////////////////UPH//1HxUvH///////9PeP////9T8f//////////VPH//1Xx/////1bx//////////////////9X8VB4//9ReFjx////////WvFSeP///////////////1vx////////XvH//1N4VHj//1nxVXj//1/xYPH//1Z4////////////////YvF9fv//Y/H//////////1d4/////////////2Xx//9YeP///////////////2Tx//////////9o8f//WXj/////////////avH//1p4////////////////////////a/H/////////////////////////////////////W3hceP//////////////////XXht8V54//9feP///////////////////////////////////////2B4//////////////////////////////////////////////////9u8f////////////9heG/xYnhjeP//cfFw8f//////////ZHhy8XPx//9leP//////////dPH///////////////9meP////////////////////////////////////9neP///////3bx/////2h4//9peP////////////9qeP////////////////////////////////////////////9reP//ePH///////958f//////////bHj//////////////////////////214bnj///////////////////////////////978f//b3h88f///////////////////////////////////////////////33x////////////////cHh+8XF4////////////////////////////////////////cnj///////////////9zeHR4////////////////////////JfL///////91eP////92eCby//93eP//////////////////J/L//////////////////yny//////////////////94eP//KvIr8v////95eP//////////////////////////////////////////////////enj/////////////LvL//////////y/y/////zDy//8x8v//////////MvJ7eP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zPyNPJ8eP///////zXy//828v///////zfy//848v///////zry////////O/L///////////////888j7yP/L/////QPL///////9B8v////////////////////////////9C8v//////////////////Q/L//////////////////////////0TyfXj///////////////////////////////////////////////////////8hef///////0Xy////////////////Inkjef//JHn///////////////////////////////////////////////9G8v///////yV5//9H8v///////yZ5////////////////////////////////////////////////////////////////////////SfL///////////////////////9K8v////////////////////9M8k3yTvL//////////0vy/////////////////////yp5/////yh5//////////////////////////9P8v///////////////////////////////1Dy////////UfL//1Ly////////////////U/L//////////////////////////1TyVfL/////K3n//1by/////////////////////////////yx5//////////8uef//V/JY8lny/////1ryLXn///////////////////////////////////////9c8v//////////////////////////XfIvef////////////////////9f8v////////////////////8wef//XvIxef////8yef///////////////2Dy////////////////////////NXk2ef///////2Hy//////////////////////////////////9i8v////9j8jp5//////////////////////////9l8v//////////////////////////ZvL///////////////8+ef////////////////////////////////////////////////////////////////////9n8mjyafL//0J5/////2ry/////////////2vy//////////////////9s8v//////////////////Q3n/////bfL///////9Eef////9u8v///////////////2/y//////////9w8kV5//9Gef//cfJy8v///////////////0h5//9z8v//////////////////SXn///////////////////////////////9Kef//S3lMef///////////////3jy////////////////efL///////968v////////////978v////988v////////////////////////////////////9+8v//////////////////////////IfNOef//////////////////////////////////IvP//////////yPz////////////////////////JPP/////JfP/////JvNPef//J/Mo8////////////////ynz/////yrz/////1B5//////////////////8r8/////8s8////////////////////////y3z/////1J5//////////8u8/////////////8v8////////////////////////////////////////1N5/////zDz/////////////////////zHz////////////////VXn/////////////NPP//1Z5NfP//zbz//////////////////////////////////848///V3n/////OfP///////////////////////////////////////////////////////868zvz/////1h5/////////////////////zzz/////////////////////1l5P/P//////////////////////////1p5/////////////////////////////////////////////////////0Lz/////0Pz/////1t5RPNF8///RvP///////////////////////9cef//QfP///////9K8/////////////9def///////////////155////////////////TPP//////////////////////////195////////TvP//0/z/////1Dz////////YHn//2F5/////2J5UfP/////////////TfP/////////////SfP//////////////////////////////////////////1TzVfP///////////////////////9W8/////9jef//////////////////////////////////////////WPP/////////////WfP///////////////9a8/////////////////////9b8///////////XPP///////////////////////9f8///YPNlef//Znlh8////////////////////////////////////////2Lz/////////////2PzZ3n//2Tz//////////////////9l8/////9m82fz/////////////////////////////////////2l5//9qef////////////9o8///////////////////////////aHn//2t5/////2x5/////////////////////////////////////2nz//////////9q8////////////////2vz/////////////2zz//9vef//////////bfP/////bvP//////////////////2/z////////cHlw83HzcvP/////////////////////cXn///////////////////////////////////////////////////////9yef//////////c3n/////////////////////////////dHn/////////////dvP///////////////////////////////////////9483nz//////////91ef////968///////////fPP///////9+8///////////IfT//////////////////3Z5//8j9P//d3n///////94ef////////////////////8l9P//////////JvT///////////////////////8o9Cn0////////eXl6eSr0/////////////////////yz0e3n///////////////////////98eS30//////////99ef//////////////////////////////////fnn/////////////////////////////MPQx9P//MvQhev////////////8z9CJ6//////////////////////////8jev////////////839Dj0//8kev//////////////////////////////////OfT/////////////OvT///////////////////////8lev//////////PPT///////8mev////8+9P//P/T/////J3pA9P//////////////////////////QfT/////////////Q/T/////KHr/////////////KXpE9P////9F9P////////////////////////////9G9Ef0/////////////////////0j0//8qev///////////////////////yt6////////////////////////LHpJ9P//SvT///////////////////////8tev////9L9P//////////////////////////TPT//////////////////030MHr//////////////////1H0MXr///////8yev//UvT/////////////U/T/////VPT///////////////9V9C96////////VvT///////////////////////////////////////////////////////////////9X9P//NHr//////////////////////////zV6/////////////////////////////////////zZ6////////////////////////fn7//////////////////1j0//9Z9P////////////////////9a9P//////////////////W/Rc9P////83ev////84ev///////170////////////////X/T//2D0Y/Ri9P//ZPT//////////2X0ZvT/////OXr//////////////////2f0/////2r0/////////////////////////////////////2z0//9t9G70/////////////////////2/0////////////////////////////////////////cPRx9P////////////////////////////////////////////9z9Dt6//////////929Dx6//////////939P//////////////////////////////////////////ePT/////////////////////////////////////////////PXr///////969P//////////////////////////Pnp79P////////////////////////////8/ev///////0B6////////fPT//330////////////////QXr//0J6fvT/////IfX//////////////////0N6IvX/////////////JPX//yP1////////JfX/////JvX/////RXr//yf1//////////////////////////////////8o9f//Rnr/////////////KfX///////8q9f//////////R3r//0h6//////////9Jev///////////////yv1//////////////////////////////////////////////////////////////////////////////////////////8s9f//////////////////////////LfX///////8u9f////////////8v9f////////////////////////////////////////////////////////////////////////////8w9f////8x9f//////////////////MvX/////M/X//////////////////////////////////////////zT1////////////////////////////////NvX//////////0p6//////////////////////////839f//S3o49f//////////////////THr/////////////OfX///////////////////////////////9Nev//PPX/////////////PfU79f////////////////////9A9f//Tnr/////////////QfX/////////////Q/X/////RPX//////////0X1/////////////////////z/1//////////////////9H9f///////////////////////////////096////////////////////////////////////////////////////////UHr///////////////9RelJ6SfX///////9Tev//////////////////////////////////////////////////S/X/////TfVO9f///////////////////////////////////////////////1D1//////////////////////////////////////////////////////////////////9R9f////////////////////9Uev////////////9S9f//U/X///////////////9Vev//////////Vnr///////////////9U9Vd6////////VfX/////////////////////V/X//////////////////1n1//////////////////////////////////////////9b9f//XPVe9f////////////////////////////////////////////////////9g9f//////////////////YfVi9f///////////////////////////////////////2T1//9l9f//////////////////ZvX/////////////////////afVn9f////9o9f//a/X///////9t9f//////////////////b/X//////////3H1////////W3r/////cvX//////////////////////////////////////////1x6//////////929f///////3j1//959f///////3r1////////////////e/X///////9eev//////////fPX//////////////////////////////////196//9gemF6/////331fvViev//////////Y3r///////8h9v//Ivb/////ZHr/////I/b//yT2//9lemZ6////////////////Z3r/////////////////////////////////////aHr///////////////////////////////8l9v////////////8m9v////////////////////////////////////8n9v////////////9pemp6a3psev////////////8o9in2////////Kvb/////////////////////////////////////LPb//y32//////////9uev//////////////////////////b3r/////Lvb///////////////////////9wev//L/b///////////////9xejD2/////3J6////////////////////////c3r/////K/Z0ev//Mfb//////////////////////////216Sq7//////////////////////////////////////////////////////////////////3V6//8z9v///////////////3Z6////////////////Nvb//////////3d6//839jj2/////3h6/////zn2//869v///////////////////////3l6//96ev///////////////////////////////////////////////////////3t6fHr///////////////99ev//O/b/////////////fno89iF7/////z32/////////////////////z72////////Inv///////8/9v//////////I3v/////////////////////////////////////QPYke///////////JXv///////8me///////////Qfb//0L2////////Q/b//0X2////////////////////////////////////////////////////////////////////////////////////////Rvb/////////////////////////////////////KHv//0f2//////////9I9v//SfZK9v///////////////0v2TPb//032/////yl7/////////////0/2//////////////////////////8qe/////8re/////9Q9v//Ufb///////9S9v//////////U/b///////8se/////////////////////////////////////////////9W9v///////////////y17//////////////////9X9v////////////////////8ue///////////L3v/////////////MHv///////9Y9v//MXv//zJ7/////////////////////////////1r2W/b///////9c9v////////////////////9V9v//////////////////////////Xvb/////X/b//////////2D2YfZi9v////////////////////9j9v////9k9mX2/////////////////////////////////////2b2/////zV7//////////82e2f2aPb/////////////afb///////83e/////80e///avb///////////////////////9v9v//////////////////////////////////////////a/b//3D2//9x9v////////////84e///////////cvb/////c/Z09v//OXv//////////////////////////2z2//////////////////////////88e3b2//939v//ePb//3n2//////////969v////////////89e/////8+e////////3v2////////////////////////fPb//332/////z97//////////////////////////87e/////9Ae////////////////yP3//////////8k9///////////////////////////Jff/////JvdBe/////9Ce////////////////////////yf3KPf/////////////Kff//yr3//////////8r9////////////////0N7/////////////////////yz3/////////////////////0V7Lff///////9Ge0d7//////////////////////////9Iey73RHv/////////////Snv/////////////L/f/////MPf/////Mff/////Mvf//0t7/////////////////////////////////////0x7NPf/////Nff///////8392gv/////////////////////////////////////////////zn3/////zr3TXv///////9Oe////////////////1B7////////////////////////Unv/////O/f/////////////U3v//zz3/////z33////////////////////////////////Pvf//z/3////////QPf///////9B9////////////////1R7////////QvdD9///////////////////////////RPf/////////////////////Rvf//0f3//////////9Ve/////////////////////9I9///Sff//////////////////////////////////0r3////////S/f//0z3/////////////////////////////033/////073//////////////////////////////////////////////////9We///V3tYe1D3//9R9////////1l7/////1L3//9T9/////9U9/////////////9V9/////////////9W9///V/f//1j3//////////////////////////////////9Z9/////////////////////9a9////////1v3//9c9/////9d9///////////////////////////////////Xvf///////////////9f9/////////////////////////////9g92H3/////////////////////////////1p7Yvf///////////////////////9j9///////////////////////////W3tce2f3//9o9///////////////////aff///////////////////////////////9q9////////////////2b3//////////9de157//////////////////9fe/////////////////////9t9/////9v9////////////////////////////////3D3//////////////////9he/////////////////////9y9////////3T3//9193b3////////d/d492J7eff//////////////////3H3evf//3v3/////2N7////////ZHt89///////////ZXv/////ffdme///////////////////////////Z3v/////////////////////fvf/////////////Ifj///////8i+P///////////////////////yP4//////////////////////////////////8l+P//////////////////////////////////Jvj///////////////8n+P//////////KPj//////////yv4/////////////y34//////////////////////////////////////////////////////////////////////////////////////////////////////////9oe///////////////////Lvj///////////////////////9pe/////////////////////////////////////////////8v+DD4Mfj//zL4////////////////////////anv///////9re/////81+DP4Nvj//////////////////zf4/////////////////////////////////////////////////////zj4Ofj///////9tezv4//////////////////////////////////////////////////////////9we3F7cnv//257//////////////////////////9ze/////////////////////90e///dXv//////////z34//92e////////////////3d7//8/+P////9A+P///////0H4////////////////////////////////////////////////////////////////RPj/////////////////////////////////////////////////////////////////////////////Rfj/////////////////////Rvj///////////////9H+P///////3h7//////////////////////////9I+P//////////////////////////////////////////Sfj///////////////9K+P//////////////////////////////////////////////////////////////////////////env//0v4//9M+P///////////////////////////////3t7/////////////034/////////////0/4//9Q+P////98e////////////////1H4//9S+FT4fXv//1X4fnv/////////////////////////////V/ghfP///////////////////////////////////////////////1j4//8ifP///////////////1n4////////////////Wvj//yN8/////////////1v4JHz///////////////////////9c+P//////////JXz///////8mfP//////////////////////////////////////////////////J3z///////8ofP//////////////////////////////////////////////////////////Xvj//////////////////////////////////////////////////////////yl8////////////////Xfj/////////////////////X/j///////////////9g+P////////////////////////////////////////////8qfP///////////////2H4//////////////////8rfP////////////////////////////////////////////////////8sfP//LXz/////////////Yvhl+P//////////ZPj/////Zvj/////////////////////////////////////Z/j/////aPj//////////////////////////////////2n4////////////////////////////////////////////////////////avj/////MXz//////////////////////////2z4/////zJ8//////////8zfP//////////bfj//////////////////////////zR8////////////////////////////////bvj/////////////////////b/j//3D4////////////////////////cfj/////////////////////cvhz+P///////////////3T4NXx1+Hb4////////ePj//////////////////3v4//98+P//Nnz/////////////ffj//////////374/////yH5//////////////////////////////////////////83fCL5////////I/n/////////////JPn///////////////////////////////////////////////////////////////////////////////8n+Sb5/////////////yj5//8q+f////////////////////8r+f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////y35LPn/////Lvn//////////////////zl8/////////////////////////////////////zD5Mfn/////Onz///////87fP////////////88fDP5//////////80+f///////z58/////////////////////z98/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zX5/////////////////////////////////////////////////////////////zb5//////////////////////////////////////////83+f//////////////////////////////////////////OPn/////////////////////QHz//////////////////////////////////////////////////////////zr5//87+f////////////9BfP////9CfP////////////9DfP//PPn///////////////////////////////////////////////89+f//////////////////////////////////////////QPlB+f////////////8++f//////////////////Q/n//0T5////////////////////////RHxF+Ub5RXz///////9H+f////////////////////////////////////9K+f////9L+f///////0Z8//////////////////////////////////9M+f////////////////////9N+f//////////////////////////////////Tvn///////////////////////9P+VD5//9R+Ud8//////////////////////////9IfP//////////////////////////////////////////////////////////////////////////Uvn/////////////U/n///////////////////////////////////////9U+f//////////Vfn//1b5V/n//////////1j5//////////9KfP//////////////////////////////////////////Wvn/////W/n///////////////////////////////////////////////////////////////////////////////////////////////9d+Ux8X/n//////////////////2D5/////////////////////////////////////2H5////////////////TXz///////////////////////////////9i+f//Tnz/////////////////////T3z///////////////////////9j+f///////////////////////2T5////////////////////////UHz///////9l+f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2f5//9SfP//////////////////////////////////aPlTfGr5//////////////////////////9s+f//////////bfn///////9v+f////9w+f////////////9x+f//cvn//////////////////////////3P5////////VHz///////9VfP////////////9WfP////90+f///////3X5/////////////3b5d/n/////////////V3z///////94+f////////////////////////////////////////////////////////////////////////////////////9YfP///////////////////////3n5/////////////////////////////3v5fPn///////////////////////////////////////////////////////////////99+f///////////////////////////////////////////////////////////////////////////////////////////////////////yL6/////1p8////////I/r///////8k+v//////////W3z//1x8//9dfP//Xnz/////////////JvpffP//////////////////////////////////KPr/////YHz/////Kfr//////////////////2F8//////////8q+mJ8Y3z//2R8K/r/////////////////////////////////////ZXz//////////y36ZnxnfC76/////////////////////////////zP6////////aHz/////Mfr//2l8//8w+v//////////////////NPo1+jL6////////Nvr//zf6//////////////////////////////////9rfGx8bXz//zj6////////Ofr//zr6////////bnxvfP///////3B8//////////////////9xfP//cnz/////c3z/////O/r//zz6Pfr/////dHz/////////////////////Pvo/+nV8/////////////////////////////////////0D6//9B+v//dnz/////////////Qvr/////Q/r///////////////////////////////////////9E+v//////////Rfr///////////////////////93fP//Rvr/////////////////////R/r///////////////////////////////////////94fP///////////////////////0j6////////eXz//0n6/////3p8//9K+v////9L+v////////////97fP///////////////0z6Tfr///////////////////////////////////////////////98fP////9O+v///////////////////////358IX3///////////////9R+iJ9Uvr/////I33///////////////////////99fFP6/////////////yR9/////1T6/////////////yV9/////////////1X6Vvr///////////////////////////////////////////////////////////////////////9Y+v//////////Jn0nfSh9//8pff///////yp9//9Z+it9////////Wvr/////W/r///////9c+ix9//9d+v//////////Xvr/////X/r///////////////9g+mH6////////Yvr//2P6ZPr///////////////////////////////////////8tff///////2f6aPr//2n6/////////////////////y59avr///////9r+v///////////////////////2z6//9t+v////////////9u+v//////////////////b/r///////9w+v///////////////3P6////////////////////////////////dPp1+v//L33///////92+v//////////MH0xff//d/r//3j6/////zJ9////////efr//3r6////////////////M33//////////3v6//98+v///////////////////////////////////////yL7//8j+///JPv///////80fSX7//81ff////////////////////8m+////////336////////J/v//////////////////yj7Kfs2ff//N33///////84ff//Kvv//yv7/////////////////////////////////////////////////////////////////////////////y77OX06fTt9////////////////L/v/////////////MPv/////Mfv///////////////////////88fT19//////////8+fTL7//////////8/fTP7//80+/////////////////////////////////////////////////////84+/////85+////////zr7/////////////////////////////0B9/////zv7/////zX7//9Bff//////////////////////////////////////////////////////////Qn3///////////////9A+///////////Q31B+/////////////////////////////////////////////////////9C+///RH1Fff////9D+///////////RPv///////////////////////8/+////////zz7/////////////0n7//9HfUZ9//////////9F+/////////////9G+////////////////0f7SPv/////////////////////////////////////////////////////////////////////SvtIfUv7////////////////TPv///////////////////////9N+///////////SX3///////////////////////////////////////////////////////////////9Kff//////////////////S33//1D7//9R+///TH1NfVL7U/v///////////////////////////////9U+/////////////9V+1b7Tn3//////////////////////////////////////////099////////////////UH3/////UX3//1j7Un3//////////////////1n7//9Tff///////////////1R9//////////////////////////9b+/////9Vff//////////Vn3/////V33///////////////9Zff///////1p9Jfr/////////////////////////////////////Xvv///////////////9f+2D7//////////////////9i+///////////Y/v//////////////////////////////////////////////////////////1t9/////////////////////2T7/////////////////////////////////////////////////////////////////////////////////////2b7//9cff///////////////////////////////////////////////////////2j7/////159////////////////X31gff///////2v7/////////////2z7////////bfv///////////////9u+/////9v+/////////////////////////////////////////////////////9hff////////////9y+///c/v/////dPtiff//////////////////////////ZH3/////////////ZX12+/////////////////////////////////////93+////////////////////////////////////////2Z9/////3n7//////////9nff////////////96+/////////////97+/////////////9ofWl9an3/////////////fPv//337/////2t9fvv/////////////////////////////////////Ifz///////9sff//////////bX3///////////////////////////////////////////////////////////////////////////////////////9ufST8////////Jfz///////8m/P///////yf8/////////////////////////////299/////yj8Kfz//////////////////3B9////////Kvz/////cX3//////////////////3J9/////yv8//////////8s/P////8t/P///////y78L/z//3R9/////3N9/////zD8////////////////////////////////////////Mfz/////dX0y/P////////////93ff////8z/DT8/////////////zX8//82/P//////////////////eH3//////////zn8//88/P////////////95ff//////////en3//zr8O/z//////////////////////////////////////////////////z38//////////////////////////98fX19/////359IX7//yJ+I37//////////////////////////yV+Pvz/////////////Jn7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////P/z//0D8/////0H8////////////////Q/xE/P//J35F/Eb8/////0f8/////0j8//////////9J/Ch+/////0r8/////////////////////////////////////////////////////0v8Tfz//078//9P/P//KX7/////UPz/////////////UfxS/P//U/xU/P//////////////////////////////////V/xY/P////9a/Fv8XPz/////////////////////////////////////////////////////Xvxf/GD8////////////////Yfxi/GP8////////ZPxl/P//////////Zvz///////////////9n/Gj8////////////////////////Kn7///////9p/P////9q/Gv8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8rfv//////////bPz/////bfz///////////////////////////////////////////////9u/P///////2/8//9w/P///////3H8/////////////3L8//////////////////////////9z/P//////////dPz//////////3X8/////////////////////////////////////////////3f8/////////////////////3j8/////3n8LH4tfv///////////////3r8////////////////e/z//////////3z8////////ffz/////////////fvz///////8ufv////////////////////8vfjB+/////yH9//////////8i/f//MX7/////////////////////////////I/3/////////////Mn7//yT9//8zfv///////zR+/////////////yX9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yf9////////////////NX4p/f//K/3//////////////////zZ+//83fv////8t/f//////////////////OH7//y79//8v/f////8w/Tl+/////////////zL9////////M/3//////////zT9////////Nf3///////////////////////////////////////86fjt+Nv3//////////zx+////////N/3///////84/f//Of3///////86/f////////////87/f///////z1+//////////////////////////88/f//P37/////////////Pf3///////////////////////8+/f//////////////////////////////////QP3///////////////////////////////////////////////9Afv//////////Qf3//0L9Qn7//////////0P9RP3/////////////Q35F/f//RH5G/Uf9//9Bfv//////////////////////////RX7/////////////Rn7//////////0d+/////////////////////////////////////0h+//////////////////9I/Ul+//////////9J/f//////////Sv1N/f////////////9O/f////////////9P/f////9Kfv////////////9Q/f///////////////0t+////////////////////////Uv3//////////1P9//////////////////9Mfv//VP3/////Vf1W/f////9Y/Vf9////////Uf3///////9c/U1+//9a/f////9Ofk9+////////////////////////////////////////////////////////Xv3//1/9YP1h/f////9i/f//////////Y/1Qfv///////2T9//9l/Wb9////////////////aP3//////////2n9av3///////////////////////9Rfv///////2v9////////bv1v/f//////////Un5Tfv////9UfnH9////////cv3/////c/1s/XT9//91/f///////1V+//9Wfv///////3b9d/14/f//ef16/f//e/3//3z9/////339//9Xfv////9+/f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8h/v////////////////////////////8i/iT+/////////////////////yP+/////////////yb+/////////////yf+KP7//////////1h+WX7//////////////////////////////////////////////////yz+////////////////////////////////////////Lv5afv///////1t+/////y/+//////////////////9cfv///////////////////////////////zD+/////zH+XX7/////////////M/7//zT+//////////9efv////82/v////83/jj+//////////9ffv//Of7/////////////Ov7/////////////YH7/////O/7/////////////////////YX7/////PP7//////////////////z3+//////////////////////////9jfv////////////////////8//v///////0D+/////2R+Qf7//z7+Yn7/////Qv7///////9D/v//RP7///////////////////////////////9F/mV+/////0b+//////////9H/kj+/////0n+////////Z37///////////////////////////////9K/k3+//////////9ofv////9M/v////9O/v//////////////////aX7///////9P/v////9Q/lH+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Uv5qfv///////1T+//////////9V/v///////////////////////////////////////////////////////1b+/////2t+/////////////2x+////////V/7///////9tfv////9ufv//////////b35wfv//////////////////Wf7/////////////cX7//////////////////////////////////3J+//////////////////////////////////9b/v//////////////////XP7///////////////9d/v//////////////////////////////////////////Xv5f/mH+////////////////////////////////c37///////////////9i/v//Y/7///////////////////////////////////////////////////////9k/v//////////////////Zf7//3R+Zv7/////Z/7///////9o/v///////2n+av7///////////////////////////////9r/v//bP7//3V+bf7//////////2/+/////////////////////////////3H+////////c/7/////dP7//////////3X+/////////////////////////////////////////////////////////////////////3Z+////////d37/////eH7//////////////////////////3l+O3b//////////////////////////y50TnX///////////////////////////////9Pe////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0l2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yR+/////////////////////////////119Sy9XL3JP//95rnp1Wndvd/////88eT15QXn///////86ezj3RfcufP//bvn//2p8////////////////////////OC5JLlAuYy5oLm4uLC8vLzYvWi9eL2FPYk9QdFx0XnRhdCh1K3VDdWV1aXZ3diV3VXcp8CV4J3kzeTR5N3k4eTl5O3k/eUB5TXlReWR5LnpQ9DN6OnpEelh6dPV19Sd7b3t5ey98MHw4fD18aflZfGN9dn17fT4jPSMwIv//////////LyL/////////////MSIAACIu/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yGh////////////////////////////////////////////////////////////////K6H//y6hNqFGoXCh////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////eaH///////////////////////////////////////93of////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8ioyWjJ6P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8xozKjOKM/o/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9Bo////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0qjUqP/////////////////////////////////////////////////////////////////////////////////////U6NZo1yj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VE93o/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8qpDqk/////////////////////zKk////////////////////////////////////////////////////////////////////////////////////////////////////////MaQ9pFmk/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0Iv/////////////////////////////////////////////////////////////1yk////////////////////////////////////////////////////////////////////////////////Y6T///////////////9epP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////a6T///////////////////////////////9qpP///////////////////////////////////////////////////////////////3KkTC//////////////////////////////////////////////////////////////////////dKT//////////////////////////////////3Wk//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8lpTKlYC8+pUel////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Y09Vpf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9WpXsvfqUwqDeo/////////////////////////////////////////////////////////////zio//////////////////////////////////////////////////////////////////////////87qP///////////////////////////////////////////////////////zqo//////////////////////////////////////////////////////////////////9FqP///////////////////////0Co//////////8/qP///////////////////////////////////////////////////////0io//////////////////////////////////////////////////////////////////////////////////////////////////////////9KqEuobk9bqP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2ao/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2yoIqxT/ius//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8wrFCsZaz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////22scqwkrTKt/////////////////////ymtKq3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zWtNK3///////////////85rVatJK7///////////////////////////////99rTp1////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I646rv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0Ku//89rjyu//9Erv//////////R67//////////0mu//////////9DrlWuV67/////////////Vq7//////////////////////////////////////////////////1uu////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////d654rv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yqv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3J1Qq8/r0Ov////////////////////////////////QK9Zr////////////////////////////////////////06v//////////////////////////////////////////////////////////////////////////////////////////8pdv////////////////////////////////////////////////////////////////////////////////////////////8ydmGv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qr/////////////////////////////////////////////////////////////9pr3Cv////////////////////////////////////////////////////////////////da8j7jTu////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////YHZJ7v//////////////////////////////////dfT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1zu/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2Du//////////////////////////////////////////////////////////////////////////////////////////////////9f7l7uMu9H703v/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2Hv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9k7yLwM/D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////858Gx3U/B78C7x////////////////////////////////////////////////////////////////MPE18UTxXfH//////////////////////////////////////////////////////////////////////////////////////////////////////////2Hx/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2bx/////////////////////////////////////////////////////////////////////////////////////2nxdfH//////////////////////////3fxevH/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IfL/////////////////////////////////////////////////////////////////////////////////////////////JPL/////////////////////////////////////////////////////////////I/Io8v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yzyPfL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fnj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////SPIpef////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9b8kd5//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////918v//////////////////////////dvJUef///////////////////////////////////////zLzPvM98////////////////////////////////0DzUvNd8////////////////////////////////////////////////////////////////17zbnlz8////////////////////////////////////////////////////////////////////////////////////////////////////////3Tz/////////////////////////////3fz/////3Xz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////33z////////////////////////////////////////////////////////e/P///////////////////////////////////////8i9CT0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yf0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////y/0/////////////////////////////y70/////////////////////////////////////////////////////////////////////zX0NPT//////////////////////////z30////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////QvT/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////T/Rp9P///////////////////////////////////////////////////////2v0cvR59DX1//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////869Ub1VvX///////////////////////////////9Y9Vr1/////////////////////////////////////////////////////////////////////////////131//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9f9WP1////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////avX///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9w9f///////////////////////////////////////////////////////////////////////////////////////////////////////////////3P1/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////116RKX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////TvYze////////////////////////////////////////////////////////////////////////////////////////////////132dfb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH3Ivd+9kl7M/f//////////////////////////////////////////////////////////////////////////////////////////////////////////////////zb3Zfdk9///////////////////////////////////////////////////////////////////////////////////////////a/du9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9z9yr4Kfj///////////////////////////////////////////////////////////////////////8s+P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bHv/////////////////////////////////////NPg8+P////////////////////////////////////////////////////8++P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////QvhW+GP4d/j//////////////////////////3n4/////////////////////3r4Jfkv+TL5OflC+f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0j5SXz//////////////////////////1n5//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9e+VF8Zvn///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9r+Xr5/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////375Ifos+v//////////////////////////////////////////////////////////////////////////////////////////L/pQ+v////9P+v///////////////////////////////////////////////////////////////////////////////////////1f6////////////////////////////////////////////////////////////////////////Zfpm+v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cfpy+n76//////////////////////////8h+///////////////////////////////////////////////////////////////////Lfv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8s+////////////////////////////////////////////////////////////////////////////////////////////////////////zb7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////N/v///////////////////////////////////////8++////////////////z37Tvv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9P+1f7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Wvv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////XPtd+///////////////////////////////////////////////////////////Yfv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2X7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9n+2n7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3H7Ivz//////////////////////////////////////////yP8OPxC/Ez8//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9W/Fn8////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Xfx2/Cz9S/1Z/f///////////////////////////////////////////////////////////////////////////////////////////////////////0z9/////////////////////////////139//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9b/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2f9//////////////////////////////////////////////////////////9w/f//////////////////////////////////bf0l/iv+/////////////////////////////////////////////////////yn+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////81/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Mv5mflj+Wv5u/nD+/////////////////////////////////////////////////////////////3L+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////92/gAAAAAAAAAAAAAH/wL/Df9+ADMwNDA1MDswPDD/MJ8w/v/+//7//v/+//7//v/+/4QihSKKIosiCSIFIgUjBiP+//7//v/+//7//v/+/5UiliKXIiUiJiKFKYYpGDAZMBYwFzD+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9iIkMiRSJIInYidyKUIf7//v/+//7//v/+//7//v9uJmsmbCZpJrcltiXBJcAllyGYIZYhmSHEIegh5iHnIekhNCk1Kf7//v/+//7//v/+//7//v/+//7/vynJJT0wRv5F/uYlIiD+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/EyI1IQ8hyzMTISch/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/6AwEyD6KfspSzD+/00w/v9PMP7/UTD+/1Mw/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+UMJUwljCrMP7/rTD+/68w/v+xMP7/szD+//7//v/+//7//v/+/7sw/v/+//7//v/+//7//v/+/8Qw/v/+//7/yDBkJmAmYiZmJmEmZSZnJmMm/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/wgP1JPYk9yT4JPkk+iT7JPwk/ST+JBYmFyYgMA4mACYBJgImAyZoJrEl8DHxMfIx8zH0MfUx9jH3Mfgx+TH+//ox+zH8Mf0x/jH/Mb4jvyPAI8EjwiPDI8QjxSPGI8cjyCPJI8ojyyPMI/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//cw+DD5MPow2iLbIlMhVCFVIRMnGCMjJM4jUTJSMlMyVDJVMlYyVzJYMlkyWjJbMlwyXTJeMl8ysTKyMrMytDK1MrYytzK4MrkyujK7MrwyvTK+Mr8y/v/+//7//v/+//7//v/+/9Al0SXSJdMlPCBHIEggSSDNAc4B0AE+Hj8e+AH5AdEB0gHUAdYB2AHaAdwBrCCgAKEApACmAKkAqgCrAK0ArgCvALIAswC3ALgAuQC6ALsAvAC9AL4AvwDAAMEAwgDDAMQAxQDGAMcAyADJAMoAywDMAM0AzgDPANAA0QDSANMA1ADVANYA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD4APkA+gD7APwA/QD+AP8AAAEqAWoBEgFMAQEBKwFrARMBTQEEAdgCQQE9AVoBYAFeAWQBeQF9AXsBBQHbAkIBPgFbAccCYQFfAWUBegHdAn4BfAFUAQIBOQEGAQwBGAEaAQ4BQwFHAVABWAFuAXABYgFVAQMBOgEHAQ0BGQEbAQ8BEQFEAUgBUQFZAW8BcQFjAdkCCAEcASQBNAFcAWwBCQEdASUBNQFdAW0BcQKLAn4CgwKSAmwCbgJ5AogCVgJzAn0CggKQAnsCbQJfAnICnQKOAmECSwFwAoECJwGVApQCZgKYAsIBUwJXAoQCYAKTAVMBUgFoAokCWAJ1AlkCXAJeAlACbwKKAmQCjAJUAlECUgKNAmUCogKhAlUCkQJ6AmcCWgL+//0BcB9xH/7//v/+//7//v/+//7//v9yH3MfYQPIAswC0ALRAgYDPyALAwEDBAMAAw8DDAMCA+UC5gLnAugC6QL+//7/JQMsAzkDHAMfAyADCAM9AykDLwPeAiQDMAM8AzQDHQMeAxgDGQMqAzoDOwMDAxoDdid3J3gneSd6J3snfCd9J34nfyfrJOwk7STuJO8k8CTxJPIk8yT0JHAhcSFyIXMhdCF1IXYhdyF4IXkheiF7IdAk0STSJNMk1CTVJNYk1yTYJNkk2iTbJNwk3STeJN8k4CThJOIk4yTkJOUk5iTnJOgk6STQMtEy0jLTMtQy1TLWMtcy2DLZMtoy2zLcMt0y3jLfMuAy4TLiMuMy+jLpMuUy7TLsMv7//v/+//7//v/+//7//v/+/1EgQiBgJGEkYiRjJGQkZSRmJGckaCRpJGokayRsJG0kbiRvJHAkcSRyJHMkYCFhIWIhYyFkIWUhZiFnIWghaSFqIUkzFDMiM00zGDMnMwMzNjNRM1czDTMmMyMzKzNKMzsznDOdM54zjjOPM8QzoTNrIf7//v/+//7//v/+//7/ezMdMB8wFiHNMyEhpDKlMqYypzKoMjEyMjI5Mn4zfTN8M/7//v/+/y4i/v/+//7//v8fIr8i/v/+//7/ViceJvFP/v8CNChOL04wTo1O4U79Tv9OA08LT2BPSE9JT1ZPX09qT2xPfk+KT5RPl08w+slP4E8BUAJQDlAYUCdQLlBAUDtQQVCUUMxQ8lDQUOZQMfoGUQNRC1EeUTVRSlEy+lVRV1G1NJ1Rw1HKUd5R4lHuUQFS2zQTUhVSSVJXUmFSk1LIUjP6zFLQUtZS21I0+vBS+1IAUwdTHFM1+mFTY1N9U5NTnVOyUxJUJ1RNVJxUa1R0VH9UiFSWVKFUqVTGVP9UDlUrVTVVUFVeVYFVhlWOVTb6rVXOVTf6CFYOVjtWSVZ2VmZWOPpvVnFWclaZVp5WqVasVrNWyVbKVgpX/v8hVy9XM1c0V3BXd1d8V5xXD/r+/7hXx1fIV89X5FftV/VX9lf/VwlYEPphWGRYOfp8WIlYnlg6+qlY/v/SWM5Y1FjaWOBY6VgMWUGGXVltWYtZklmkWcNZ0lndWRNaI1pnWm1ad1p+WoRanlqnWsRa/v8ZWyVbXVJBW1ZbfVuTW9hb7FsSXB5cI1wrXI03Ylw7+jz6/v96XI9cn1yjXKpculzLXNBc0lz0XP7/4jcNXSddEfpGXUddU11KXW1dgV2gXaRdp124XctdHlRTVuJdFF4YXlheXl6+Xij5y175XgBfAl8HXx1fI180XzZfPV9AX0VfVF9YX2RfZ199X4lfnF+nX69ftV+3X8lf3l/hX+lfDWAUYBhgM2A1YEdgPfqdYJ5gy2DUYNVg3WD4YBxhK2EwYTdhPvqNYT/6vGG5YUD6ImI+YkNiVmJaYm9ihWLEYtZi/GIKYxhjOWNDY2VjfGPlY+1j9WMQZBRkImR5ZFFkYGRtZM5kvmS/ZMRkymTQZPdk+2QiZSllQfpnZZ1lQvoAZglmFWYeZjpmImYkZitmMGYxZjNm+2ZIZkxm/v9ZZlpmYWZlZnNmd2Z4Zo1mQ/qgZrJmu2bGZshmIjvbZuhm+mYTZyn5M2dmZ0dnSGd7Z4Fnk2eYZ5tnu2f5Z8Bn12f8ZwFoUmgdaCxoMWhbaHJodWhE+qNopWiyaMho0GjoaO1o8GjxaPxoCmlJaf7/NWlCaVdpY2lkaWhpgGkU+qVprWnPabY7wzviaelp6mn1afZpD2oVav7/O2o+akVqUGpWaltqa2pzav7/iWqUap1qnmqlauRq52oPPB35G2seayxrNWtGa1ZrYGtla2drd2uCa6lrrWtw+c9r1mvXa/9rBWwQbDNsWWxcbKpsdGx2bIVshmyYbJxs+2zGbNRs4GzrbO5s/v8EbQ5tLm0xbTltP21YbWVtRfqCbYdtiW2UbaptrG2/bcRt1m3abdtt3W38bUb6NG5EblxuXm6rbrFuwW7Hbs5uEG8ab0f6Km8vbzNvUW9Zb15vYW9ib35viG+Mb41vlG+gb6dvtm+8b8dvym/5b/Bv9W8FcAZwKHBKcF1wXnBOcGRwdXCFcKRwq3C3cNRw2HDkcA9xK3EecSBxLnEwcUZxR3FRcUj6UnFccWBxaHEV+oVxh3GSccFxunHEcf5xAHIVclVyVnI/Po1ym3K+csBy+3L+/ydzKHMW+lBzZnN8c5Vzn3Ogc6JzpnOrc8lzz3PWc9lz43Ppcwd0CnQadBt0SvomdCh0KnQrdCx0LnQvdDB0RHRGdEd0S3RXdGJ0a3RtdIZ0h3SJdJh0nHSfdKN0kHSmdKh0qXS1dL90yHTJdNp0/3QBdRd1L3VvdXl1knVyP8515HUAdgJ2CHYVdhZ2GXYedi12NXZDdkt2ZHZldm12b3ZxdoF2m3addp52pnaqdrZ2xXbMds521HbmdvF2/HYKdxl3NHc2d0Z3TXdOd1x3X3did3p3gHeUd6p34HcteEN4TnhPeFF4aHhueEv6sHj+/6145HjyeAB593gceS55MXk0eUz6TfpFeUZ5TvpP+lD6XHlR+hn6Gvp5eVL6U/ob+ph5sXm4ech5ynn+/9R53nnree15A3pU+jl6XXptelX6hXqgev7/s3q7es5663r9ehJ7LXs7e0d7Tntge217b3tye557VvrXe9l7AXwxfB58IHwzfDZ8ZEL+/1l8bXx5fI98lHygfLx81XzZfN18B30IfRN9HX0jfTF9QX1IfVN9XH16fYN9i32gfaZ9wn3MfdZ9431X+ih+CH4RfhV+WfpHflJ+YX6Kfo1+R39a+pF/l3+/f85/23/ff+x/7n/6f1v6FIAmgDWAN4A8gMqA14DggPOAGIFKgWCBZ4FogW2Bu4HKgc+B14Fc+lNEW0RggnSC/v+OgqGCo4KkgqmCroK3gr6Cv4LGgtWC/YL+ggCDAYNigyKDLYM6g0ODR4NRg1WDfYOGg5KDmIOng6mDv4PAg8eDz4PRg+GD6oMBhAaECoRf+kiEX4RwhHOEhYSehK+EtIS6hMCEwoT+/zKFHoUjhS+FWYVkhR/6rYV6hYyFj4WihbCFy4XOhe2FEob/hQSGBYYQhv7/GIYphjiGV4Zbhjb5YoadRWyGdYaYhriG+ob8hv2GC4dxh4eHiIesh62HtYfqRdaH7IcGiAqIEIgUiB+ImIiqiMqIzoj+//WIHIlg+hiJGYkaiSeJMIkyiTmJQImUiWH61InlifaJEooViiKKN4pHik6KXYphinWKeYqnitCK34r0ivaKIvpi+mP6RotUi1mLaYudi0mMaIxk+uGM9Iz4jP6MZfoSjRuNr43OjdGN140gjiOOPY5wjnuO/v/AjkRI+o4ejy2PNo9Uj/7/po+1j+SP6I/ujwiQLZBn+oiQlZCXkJmQm5CikLOQvpDEkMWQx5DXkN2Q3pDvkPSQJvoUkRWRFpEikSORJ5EvkTGRNJE9kUiRW5GDkZ6RrJGxkbyR15H7keSR5ZHtkfGRB5IQkjiSOZI6kjySQJJDkk+SeJKIksKSy5LMktOS4JL/kgSTH5MhkyWTSJNJk0qTZJNlk2qTcJObk6OTupPGk96T35MElP2TM5RKlGOUa5RxlHKUjpWflaaVqZWslbaVvZXLldCV05WwSdqV3pVYloSW3PmdlqSWpZbSlt6WaPrplu+WM5c7l02XTpdPl1qXbpdzl5WXrpe6l8GXyZfel9uX9Jdp+gqYHpgrmDCYavpSmFOYVphXmFmYWpjQ+WWYbJi6mMiY55hYmZ6ZApoDmiSaLZoumjiaSppOmlKatprBmsOazprWmvmaApsImyCbF0wtm16beZtmm3KbdZuEm4qbj5uem6ebwZvOm+Wb+Jv9mwCcI5xBnE+cUJxTnGOcZZx3nB2dHp1DnUedUp1jnXCdfJ2KnZadwJ2snbyd153+/+edB54Vnnyenp6knqyer560nrWew57RnhCfOZ9Xn5CflJ+Xn6Kf+FlbXHdeJnZrfgAAAAAAAAsAPRL+//7//v/+//7//v/+//7//v8bE/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/bhT+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/vRifC/7//v/+//7//v/+//7//v/+//7//v/+//7//v+0Fv7//v/+//7//v/+//7//v/+//7/NB7EMf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/xDU/N/7//v/+//7//v/+//7//v9jN/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//488UeOVA5V/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/3FX/v/+//7//v/+//7//v/+//7//v/+//7/xFn+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/6Fd/2pAbv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//Rw/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+EdneC/v/+//7//v/+//7//v/Ng5ChAAAAAAAAAACaMEswmjBNMJowTzCaMFEwmjBTMJowqzCaMK0wmjCvMJowsTCaMLMwmjC7MJowxDCaMMgwmjD3MQAD5gD+/wAA/v8AAP7/AAAAA1QCAQNUAgADjAIBA4wCAANZAgEDWQIAA1oCAQNaAv7/AAD+/wAA/v8AAP7/AAD+/wAA/v8AAP7/AAD+/wAA/v8AAP7/AAD+/wAA/v8AAP7/AAD+/wAA/v8AAP7/AAD+/wAA/v8AAP7/AAD+/wAA/v8AAOUC6QLpAuUCAAAAAAAAAAAAAAAAAk4PThJOKU4rTi5OQE5HTkhO/v9RTgY0/v9aTmlOnU4sNC40uU67Tv7/vE7DTshO0E7rTtpO8U71TgBPFk9kTzdPPk9UT1hP/v93T3hPek99T4JPhU+ST5pP5k+yT75PxU/LT89P0k9qNPJPAFAQUBNQHFAeUCJQaDRCUEZQTlBTUFdQY1BmUGpQcFCjUIhQklCTUJVQllCcUKpQ/v+xULpQu1DEUMdQ81D+/85Q/v/UUNlQ4VDpUJI0CFH+/xdRG1H+/2BR/v9zUYNRi1G8NJhRo1GtUcc0vFH+//7/81H0UQJSElIWUv7/VVJcUmxSd1KEUoJS/v+YUv7/pFKmUq9SulK7UspSHzXRUv7/91IKUwtTJFM1Uz5TQlP+//7/Z1NsU3pTpFO0U/7/t1PAU/7/XTVeNdVT2lNjNfRT9VNVVCRUKFRuNUNUYlRmVGxUilSNVJVUoFSmVK1UrlS3VLpUv1TDVP7/7FTvVPFU81QAVQFVCVU8VUFVpjVHVUpVqDVgVWFVZFX+/31VglWIVZFVxTXSVf7//v+/VclVzFXRVd1V2jXiVf7/6VUoVv7/B1YQVjBWN1b0NT1WP1ZAVkdWXlZgVm1WBTaIVoxWlVaaVp1WqFatVrJWxVbNVt9W6Fb2VvdW/v8VVyNX/v8pV/7/RVdGV0xXTVf+/2hXb1dzV3RXdVd7V/7//v+sV5pXnVeeV6hX11f+/8xX/v/+/95X5lfwV0o2+Ff7V/1XBFgeWCBYJ1gyWDlY/v9JWExYZ1iKWItYjViPWJBYlFidWKpYsVj+/8NYzVjiWPNY9FgFWQZZC1kNWRRZJFn+/5E2PVmZNkZZljb+/1tZX1n+/3VZdll8WZ9Zrlm8WchZzVneWeNZ5FnnWe5Z/v/+/882DFoNWhdaJ1otWlVaZVp6WotanFqfWqBaolqxWrNatVq6Wr9a2lrcWuBa5VrwWu5a9VoAWwhbF1s0Wy1bTFtSW2hbb1t8W39bgVuEW5ZbrFthN8BbYjfOW9ZbbDdrN/Fb/Vt1NwNcKVwwXP7/X1xjXGdcaFxpXHBc/v/+/3xc/v/+/4hcilzBN/7//v+gXKJcplynXP7/rVy1XP7/yVz+//7/Bl0QXStdHV0gXSRdJl0xXTldQl3oN2Fdal30N3Bd/v/9N4hdADiSXZRdl12ZXbBdsl20Xf7/uV3RXddd2F3gXf7/5F3pXS84AF42OBJeFV5AOB9eLl4+XkleXDhWXmE4a15sXm1ebl7+/6Veql6sXrlev17GXtJe2V7+//1eCF8OXxxf/v8eX0dfY19yX35fj1+iX6RfuF/EX/o4x1/LX9Jf01/UX+Jf7l/vX/Nf/F8XORdgImAkYBo5TGB/YIpglWCoYP7/sGCxYL5gyGDZYNtg7mDyYPVgEGESYRNhGWEeYTphbzlBYUZhYGF8Yf7/kmGTYZdhmGGlYahhrWH+/9Vh3WHfYfVh/v8VYiNiKWJGYkxiUWJSYmFiZGJ7Ym1ic2KZYqZi1WL+//1iA2MNYxBj/v/+/zJjNWM7YzxjQWNEY05j/v9ZY/7//v9sY4RjmWP+/5RjvWP3Y9Rj1WPcY+Bj62PsY/JjCWQeZCVkKWQvZFpkW2RdZHNkfWSHZJFknWSfZMtkzGTVZNdk/v/kZOVk/2QEZW46D2UUZRZlczoeZTJlRGVUZWtlemWBZYRlhWWKZbJltWW4Zb9lwmXJZdRl1jryZfll/GUEZghmIWYqZkVmUWZOZuo6/v9XZltmY2b+//7/amZrZmxmbWZ7ZoBmkGaSZplmDjutZrFmtWYaO79mHDvsZtc6AWcFZxJn/v8ZZ/7//v9MZ01nVGddZ/7//v/+/3Rndmf+/5Jn/v9jgxBosGeyZ8NnyGfSZ9ln22fwZ/dn/v/+//7/GGgfaC1o/v8zaDtoPmhEaEVoSWhMaFVoV2h3O2tobmh6aHxogmiQaJZobTuYaJlommicaKpoq2i0aLto+2j+//7/E/rDaMVozGjPaNZo2WjkaOVo7Gj3aANpB2mHO4g7/v87aY07RmlpaWxpcml6aX9pkmmkO5ZpmGmmabBpt2m6abxpwGnRadZp/v/+/zBq/v/+/+Np7mnvafNpzTv0af5pEWoaah1q/v8yajNqNGo/akZqSWp6ak5qUmpkav7/fmqDaotq8DuRap9qoWr+/6tqvWrGatRq0Grcat1q/v/+/+xq8WryavNq/Wr+/wtrD2sQaxFr/v8XayY8L2tKa1hrbGt1a3prgWuba65r/v+9a75rx2vIa8lr2mvma+dr7mvxawJsCmwObDVsNmw6bP7/P2xNbFtsbWyEbIlswzyUbJVsl2ytbMJs0GzSPNZs2mzcbOls7GztbP7/AG0KbSRtJm0nbWdsL208bVttXm1gbXBtgG2BbYptjW2RbZht/v8Xbv7//v/+/6ttrm20bcJtNG3Ibc5tz23Qbd9t6W32bTZuHm4ibiduET0ybjxuSG5JbktuTG5PblFuU25UblduY24ePZNup260br9uw27KbtluNW/rbvlu+24KbwxvGG8lbzZvPG/+/1JvV29ab2BvaG+Yb31vkG+Wb75vn2+lb69vZD21b8hvyW/ab95v6W/+//xvAHAHcApwI3D+/zlwOnA8cENwR3BLcJo9VHBlcGlwbHBucHZwfnCBcIZwlXCXcLtw/v+fcLFw/v/scMpw0XDTcNxwA3EEcQZxB3EIcQxxwD0vcTFxUHFKcVNxXnHUPZZxgHGbcaBxonGuca9xs3H+/8tx03HZcdxxB3IFPkn6K3I0cjhyOXIsTkJyU3JXcmNy/v9ucm9yeHJ/co5y/v+tcq5ysHKxcsFyYD7McmY+aD7zcvpyB3MScxhzGXODPjlzLHMxczNzPXNSc5Q+a3Nsc/7/bnNvc3Fzd3OBc4VzinOUc5hznHOec6VzqHO1c7dzuXO8c79zxXPLc+Fz53P5cxN0+nMBdCR0MXQ5dFN0QHRDdE10UnRddHF0gXSFdIh0/v+SdJd0mXSgdKF0pXSqdKt0uXS7dLp01nTYdN5073TrdP7/+nT+/yB1JHUqdVc//v89dT51QHVIdU51UHVSdWx1cnVxdXp1fXV+dYF1/v+MdXU/onV3P7B1t3W/dcB1xnXPddN13XXfdeB153Xsde518XX5dQN2GHYHdg92rj/+/xN2G3Ycdv7/JXYodjx2M3b+/8k/QXb+/0l2VXbXP252lXacdqF2oHandqh2r3b+/8l2/v/odux2/v8Xdxp3LXc1dzlA/v/+/1h3YHdqd/7/cnd8d313/v9YQJp3n3eid6R3qXfed9935Hfmd+p37HeTQPB39Hf7d/7/BXgGeAl4DXgZeCF4LHhHeGR4anj+/4p4lHikeJ14nnifeLt4yHjMeM541XjgeOF45nj5ePp4+3j+eP7/EHkbeTB5JXk7eUp5WHlbeQVBZ3lyeZR5lXmWeZt5oXmpebR5u3nCecd5zHnNedZ5SEH+//7/T0EKehF6FXobeh56Y0Etejh6R3pMelZ6WXpcel96YHpnemp6dXp4eoJ6inqQeqN6rHr+/7RBuXq8er56v0HMetF653roevR6/v/+/wd7/v89eyd7Knsuey97MXvmQfNBf3tBe+5BVXt5e2R7Zntpe3N7/v8HQpB7kXubew5Cr3u1e7x7xXvKe/7//v/Ue9Z72nvqe/B7A3wLfA58D3wmfEV8SnxRfFd8XnxhfGl8bnxvfHB8/v/+//7/pnz+/7Z8t3y/fP7/xHz+/8h8zXz+/9d8/v/mfOt8/v/1fAN9CX3GQhJ9Hn3+//7/PX0+fUB9R33+//7/1kJZfVp9an1wfd1Cf33+/4Z9iH2MfZd9/v+dfad9qn22fbd9wH3Xfdl95n3xffl9AkP+/1j6EH4Xfh1+IH4nfix+RX5zfnV+fn6Gfod+K0ORfph+mn5DQzx/O38+f0N/RH9Pf8E0/v9Sf/7/YX9jf2R/bX99f35//v+Qf3tR/v+Wf5x/rX/+/8N/z3/jf+V/73/yfwKACoAIgA6AEYAWgCSALIAwgEOAZoBxgHWAe4CZgJyApICngLiA/v/FgNWA2IDmgP7/DYH1gPuA7kM1gRaBHoHwQySBJ4Esgf7/PYEIRGmBF0SBgRxEhIGFgSJEmIGygcGBw4HWgduB/v/kgf7/7IH+//2B/4H+/wSC/v8ZgiGCIoL+/zKCNII8gkaCSYJFgv7/S4J2RE+CekRXgv7/XIJjgv7/Xfpe+nmCkUR9gn+Cg4KKgpOCp4KogrKCtIK6gryC4oLogveCB4MIgwyDVIMbgx2DMIM8g0SDV4O+RH+D1ESzRI2DlIOVg5uDnYPJg9CD1IPdg+WD+YMPhBGEFYT+/xeEOYRKhE+EUYRShFmEWoRchP7/ZYR2hHiEfISBhA1F3ISXhKaEvoQIRc6Ez4TThP7/54TqhO+E8ITxhPqE/YQMhRuFJIUlhSuFNIVPhW+FJUVDRT6FUYVThV6FYYVihf7/e4V9hX+FgYWGhZOFnYWfhbeFvIXHhcqF2IXZhd+F4YXmhfaFAIYRhh6GIYYkhieG/v85hjyG/v9AhiD6U4ZWhm+Gd4Z6hoeGiYaNhpGGnIadhqiGIfqxhrOGwYbDhtGG1YbXhuOG5oa4RQWHB4cOhxCHE4cZhx+HIYcjhzGHOoc+h0CHQ4dRh1iHZIdlh3KHfIf+//7/p4eJh4uHk4egh/7/5UW+h/7/wYfOh/WH34f+/+OH5Yfmh+qH64fthwGIA4gLiBOIKIguiDKIPIgPRkqIWIhfiGSI/v/+/2mI/v9viKCIvIi9iL6IwIjSiP7/0YjTiNuI8IjxiEFGAYn+/zeJ/v9CiUWJSYn+/2VGYomAiYmJkImfibCJt4nWidiJ64mhRvGJ84n9if+Jr0YRihSK/v8hijWKPopFik2KWIquipCKt4q+iteK/Ir+/wqLBYsNixyLH4sti0OLDEdRi16Ldot/i4GLi4uUi5WLnIueizmM/v89jP7//v9FjEeMT4xUjFeMaYxtjHOM/v+TjJKMmYxkR5uMpIzWjNWM2Yz+//CM8Yz+/wmNDo1sjYSNlY2mjf7/xo3IjdmN7I0Mjv1H/Y0Gjv7/FI4WjiGOIo4njv7/Fkg2jjmOS45UjmKObI5tjm+OmI6ejq6Os461jraOu47+/9GO1I5OSPmO/v8AjwiPF48rj0CPSo9Yj/7/pI+0j2b6to/+/8GPxo8k+sqPzY/Tj9WP4I/xj/WP+48CkAyQN5D+/0OQRJBdkIWQjJCQkB2WoZC1SLCQtpDDkMiQ/v/ckN+Q/v/2kPKQAJHrkP6Q/5AEkQaRGJEckR6RN5E5kTqRRpFHkVeRWZFhkWSRdJF5kYWRjpGoka6Rs5G2kcORxJHakf7//v/ske6RAZIKkhaSF5L+/zOSQpJHkkqSTpJRklaSWZJgkmGSZZJnkmiS/v/+/3ySfZJ/komSjZKXkpmSn5KnkquS/v/+/7KSv5LAksaSzpLQkteS2ZLlkueSEZP3kvmS+5ICkw2TFZMdkx6TJ5Mpk/7//v9Hk1GTV5Nak2uTcZNzk6GT/v/+/4iTi5OPk56T9ZP+//7/8ZPBk8eT3JPik+eTCZQPlBaUF5T7kzKUNJQ7lEWU/v/+/22Ub5R4lXmVhpWMlY2V/v+rlbSV/v/Ilf7//v8sljOWNJb+/zyWQZZhlv7/gpb+/5qW/v/nSamWr5azlrqWvZb6Sf7/2Jbalt2WBEoUlyOXKUo2l0GXR5dVl1eXW5dql/7//v+Wl5qXnpeil7GXspe+l8yX0ZfUl9iX2Zfhl/GXBJgNmA6YFJgWmLxK/v8jmDKYM5glmEeYZpirmK2YsJj+/7eYuJi7mLyYv5jCmMeYy5jgmP7/4ZjjmOWY6pjwmPGY85gImTtL/v8WmReZ/v8amRuZHJn+/zGZMpkzmTqZO5k8mUCZQZlGmU2ZTplcmV+ZYJmjmaaZuZm9mb+Zw5nJmdSZ2Znemf7/8Jn5mfyZCpoRmhaaGpogmjGaNppEmkyaWJrCS6+ayku3mtJLuZr+/8aa0JrSmtWa6EvcmuCa5ZrpmgObDJsQmxKbFpscmyubM5s9myBMS5tjm2Wba5tsm3Obdpt3m6abrJuxm/7//v+ym7ibvpvHm/Ob2Jvdm+eb6pvrm++b7pv+//qb/v/3m/7/FpwYnBmcGpwdnCKcJ5wpnCqc/v8xnDacN5xFnFyc/v9JnEqc/v9UnFicW5xdnF+caZxqnGucbZxunHCccpx1nHqc5pzynAudAp3+/xGdF50Ynf7/xEz+/zKd0UxCnUqdX51inf7/aZ1rnf7/c512nXedfp2EnY2dmZ2hnb+dtZ25nb2dw53Hncmd1p3and+d4J3jnfSdB00KngKeDZ4ZnhyeHZ57nv7/gJ6FnpueqJ7+/72e/v/fnuee7p7/ngKfd00DnxefGZ8vnzefOp89n0GfRZ9Gn1OfVZ9Yn/7/XZ/+/2mf/v9tn3CfdZ8AAAAAAAAAAAAAAAAAAIkA/v/+//7//v/+//7//v/+//7/ogD+//7/pAD+//7//v/+//7//v/+/6IB/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/EwL+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/KwP+//7//v/+//7//v+BA/7/cQP5A/7//v9KBP7/CQX+//7//v/+//7//v/+//7//v/WBSgG/v/+//7//v/+/08H/v/+//7//v/+//7/Bwj+/zoI/v/+//7//v/+//7//v/+/7kI/v/+//7//v/+//7//v98CZ0J/v/+//7//v/+/9MK/v/+/x0L/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/0UN4Q3+//7//v/+//7//v+VDm0O/v/+//7//v/+//7//v9kDv7//v9fD/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/wES/v/+/1US/v97Ev7//v/+//7/dBL+//7//v/+//7//v/kEtcS/v/+//7//v/+//7//RL+/zYTRBPEE/7//v/+//7//v/+//7//v/+//7//v/+/20U/v/+//7//v/+//7//v/+//7//v/+/9cV/v/+//7//v/+/yls/v/+/0cW/v/+//7//v/+//7//v/+//7//v/+//7//v8GF0IX/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/wxlWHP7//v/+//7//v/+/y0dRR3+/3gdYh3+//7//v+hHZwd/v/+//7//v+SHf7//v+3Hf7/4B0zHv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/x4f/v/+//7//v/+//7//v/+//7//v92H/7//v/+//7//v/6H3sh/v/+//7//v/+//7//v/+/x4j/v/+//7//v+tI/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/8yb+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/Wyj+//7//v/+//7//v/+/6so/v/+//7//v+PKbgq/v/+//7//v9PK1Ar/v/+//7//v/+//7//v9GK/7/HSymK/7//v/+/yQs/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/hLf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/DMfUxtjH+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9yM/7/0zPSM/7//v/+//7/0DPkM9Uz/v/+/9oz/v/fM/7//v/+//7//v/+//7//v/+//7//v9KNFE0SzT+//7//v9lNP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/+Q0WjWUNf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v85Nkc2/v84Njo2/v/+//7//v/+//7//v/+//7//v8cN/7//v/+//7//v/+//7//v/+//7/DDf+//7//v/+//7//v/+/2Q3/v/+//7//v/+//7//v//N+c3/v/+//7//v/+/yQ4/v/+//7//v89OJg6/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9/PP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v8APf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/0A9/v/6Pfk90z1+P/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+WQP7//v/+//7//v8DQf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/xkH+//7//kG8Q/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/KUb+//7//v/+//7/pUb+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/5ZI/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/TUpWS/7/b0v+//7//v/+/xZM/v/+//7//v/+//7//v/+//7//v/+//7//v/+/xRN/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/Dk7+//7//v83Tv7//v/+//7/ak7+//7/i07+//7//v/+//7//v/+//7//v/+//7/SlD+/1VQ/v/+/yJRqVH+/+VRzVH+//7//v8eUv7//v/+/0xS/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v8uVP7//v/+//7//v/+//7//v/+//7/2VT+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+nVf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/qVe0V9RZ/v/+//7//v/+//7//v/+//7//v/kWuNa/v/xWv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+yW/7//v/+//7//v/+//7//v/+//7/S1xkXP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v8uXlZeZV7+/2Je/v/+//7/2F7+/8Je6F7+/yNf/v/+/1xf/v/+//7//v/+//7/4F/UX/7//v/+//7/DGD7X/7//v/+//7//v/+//7/F2D+//7//v/+/2Bg/v/+//7//v/+//7//v/+//7//v/+//7/7WD+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/3Bi/v+GYv7//v/+//7//v/+/0xj/v/+/w49/v/+//7/AmR+Zv7//v/+//7/sGb+//7//v/+//7//v/+//7//v/+//7/HWf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/daP7/6mj+/1Fp/v/+/29p/v/daf7//v/+/x5q/v/+//7//v/+//7/WGr+//7//v/+//7/jGr+//7/t2pzbP7//v/+//7//v/+//7//v/+/91s/v/+//7//v/+//7//v/+//7//v/+//7//v/+/2Vu/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/5Rv/v/+//7//v/+//7//v/+//hv9m/3b/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/DXH+//7/OXH+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/bc9pz/v/+//7//v/+//5z/v/+/xB0/v/+//7//v9JdBV2FHb+/zF2/v/+//7//v/+//7//v+Tdv7//v/+//7//v/+//7/Dnf+/yN3/v/+//7/Unf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/4V5/v/+//7//v/+//7//v/+//7//v/+//7/hHr+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/7N7/v++e8d7uHz+//7//v/+//7//v/+//7//v+gff7//v8Qfv7//v/+//7//v/+/7d//v/+//7//v/+//7//v/+/4qA/v/+//7//v/+/7uA/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+Cgv7//v/+//7/84L+//7//v/+//7//v/+/wyE/v/+//7//v9VhP7//v/+//7//v/+//7//v/+//7//v/+//7//v9rhf7//v/+/8iFyYX+//7//v/+//7//v/+//7//v/+/9eG/v/+//qG/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9JiUaJ/v/+//7//v/+//7/a4n+//7//v/+//7//v/+//7//v/+//7//v/+/4eJiIn+//7//v/+//7//v/+//7//v/+/7qJu4n+//7//v/+//7//v/+//7//v/+//7/Hoopiv7//v/+//7//v/+//7//v/+//7/cYpDiv7//v/+//7//v/+//7//v+Zis2K/v/+//7//v/+/+SK3Yr+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/Bi++L/v/+//7//v/+//7//v8Qjf7//v9xjf7/+40fjv7//v/+/zaO/v/+//7/iY7+/+uO/v8yj/7//v/+//7//v/+//7/+I+gkrGS/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/5CU/v/+//7//v/+//7//v/+//7/z5X+//7//v/+//7//v/+//7//v9/lv7//v/+//7//v/+//7//v/+//CW/v/+/xmX/v/+//7/UJf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/GmHKa/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/2509nv7//v/+//7//v/+//7//v/+//7//v/+/xWe/v+Knv7/SZ7+//7//v/+//7//v/+//7//v/Env7//v/+//7//v/pnv7//v/bns6f/v/+//7/L6D+/xqg/v/+//7//v/+//7/+aD+//7/gqD+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/GCL+//7//v/+/4yj/v83pP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/8aX+/wKm/v8apv7//v/+/7KmAAAAAAAAoaKkp6ipsbKztba3uLm6u7y9vgAAAAAAAAAAAAAAAAC/wMHCw8TFxsfIycrLzM3Oz9DR0tMAAAAAAAAAAAAAANShoqOkpaanqaqrrK2ur7CxsrS1tre4uru8vb4AAAAALiL/////NCL/////VyEnIf//Iyj/////KSFnIv//RiE+IXcpeCklIv//UiIkISwidiksKP//eSh2KHooLyL///////////////8hKP///////////////////////yIo////////////////PyEqKP////////////8tKCwp////////////////ISn///////////////////////8jKf///////////////0AhKin/////////////LSkiKf////////////////////////////////////////////////////8kKCQp////////////////////////JSkmKCYp//////////8nKf///////////////ygoKCkpKCkp////////////////MCkvKC8p////////////////KygrKf///////////////////////////////////////////////y4oLiknIv////////////////////8wIv//////////////////KCIrIioiLSL//ykiQSVCJUMlRCVFJUYlRyVIJUklSiVLJUwlTSVOJU8lUCVRJf//UiVTJVQlVSVWJVclWCX//////////////////2ElYiVjJWQlZSVmJWclaCVpJWolayVsJW0lbiVvJXAlcSX//3IlcyV0JXUldiV3JXglJyz/////////////////////////////////////ISwiLCMsJCwlLCYsKCwpLCosKywsLC0sLiwvLDAsMSwyLDMsNCw1LDYsNyw4LDksOiw7LDwsPSw+LD8sQCxBLFEsUixTLFQsVSxWLFgsWSxaLFssXCxdLF4sXyxgLGEsYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSz//1csKiH/////LiEvIf////8wITEh/////1MiVCL///////8lISYh////////////////////////NiL//0chSCH//////////////////1gh/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3kp//////////////////////////96Kf//eyl8KX0pfin///////////////////////////////////////////////////////////////////////////////////////////////////////9mIkkh/////////////zUi////////////////////////JCf/////YCL//////////////////////////2UiYiL///////9ZJ///////////SiH///////////////////////////////////////////////////////////////////////////////////////////////////////93KHgo////////////////eyh8KH0ofij//zAlMSUyJTMlNCU1JTYlNyU4JTkl////////////////ISUiJSMlJCUlJSYlJyUoJSklKiX//////////////////////////////////////////////////////////2chaCFmIWkhaiFVIlgiViJZIlci/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yEi//8iIiMi//9TISQi////////VCF0If////91If///////zMi//8yIv////////////////////9uIf////9wIUQh//9QIf//////////KyH//3whfSF7IXohciFzIf//MSL/////////////RSFxIf///////////////y0hbyH/////////////////////////////////////////////////////ViH//////////////////////////////////0EhVSH/////QiFDIf//////////bCFtIf//////////////////////////////////////////////////////////eCF5If////92IXch/////////////////////////////////////////////0Ei/////////////////////////////1EhUiFnKGgoaShqKGsobChtKG4obyhwKHEocihzKHQodSj/////////////ZyloKWkpailrKWwpbSluKW8pcClxKXIpcyl0KXUp//////////////////////////////////////////////////////////////////9NKU4pTylQKVEpUilTKVQpVSlWKVcpWClZKVopWylcKV0pXilfKWApYSliKWMpZCllKWYp/////////////////////////////////////////////////////////////////////00oTihPKFAoUShSKFMoVChVKFYoVyhYKFkoWihbKFwoXSheKF8oYChhKGIoYyhkKGUoZighJiwmIiYtJv////////////////////8jJkgmRyYuJiQmQiZBJi8mJiZGJkUmMSYlJkQmQyYwJicmPCZJJkomNyZLJkwmMiYpJj4mTSZOJjkmTyZQJjQmKCZRJlImOCY9JlMmVCYzJiomVSZWJjomPyZXJlgmNSYrJlkmWiY7JlsmXCZAJl0mXiZfJmAmYSZiJmMmZCY2Jv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////RiL//////////////////////////////////2EhYCH//0MiRyJIIksiSiJJIkwi/////////////////////2MhYiH/////OiI5Iv//////////ZSFkIf////84Ijci//////////9fIV4hQiL/////WyH/////XSFcIUQiRSJaIVkh//////////////////9PIk4i////////////////////////////////UCL//1Ei////////////////////////////////////////////////////////////////////////////////////////TyH//04h/////////////////////////////////////////////////////////////////////////////zwiPSL//0AiOyI+Iv//PyJNIlsiXCL//10iWiIhISIhIyEoIf//////////NCE1ITYhNyE4ITkhOiE7ITwhPSH//2shMiEzIf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////ISoiKiMqJColKiYqJyooKikqKiorKiwqLSouKi8qMCoxKjIqMyo0KjUqNio3KjgqOSo6KjsqPCo9Kj4qPypAKkEqQipDKkQqRSpGKkcqSCpJKkoqSypMKk0qTipPKlAqUSpSKlMqVCpVKlYqVypYKlkqWipbKlwqXSpeKl8qYCphKmIqYypkKmUqZipnKmgqaSpqKmsqbCptKm4qbypwKnEqcipzKv//////////////////////////////////ISsiKyMrJCslKyYrJysoKykrKisrKywrLSsuKy8rMCsxKzIrMys0KzUrNis3KzgrOSs6KzsrPCs9Kz4rPytAK0ErQitDK0QrRStGK0crSCtJK0orSytMK00rTitPK1ArUStSK1MrVCtVK1YrVytYK1krWitbK1wrXSteK18rYCthK2IrYytkK2UrZitnK2graStqK2srbCttK24rbytwK3ErcitzK3QrdSt2KyEkIiQjJCQkJSQmJCckKCQpJCokKyQsJC0kLiQvJDAkMSQyJDMkNCQ1JDYkNyQ4JDkkOiQ7JDwkPSQ+JD8kQCRBJEIkQyREJEUkRiRHJEgkSSRKJEskTCRNJE4kTyRQJFEkUiRTJFQkVSRWJFckWCRZJFokWyRcJF0kXiRfJGAkYSRiJGMkZCRlJGYkZyRoJGkkaiRrJGwkbSRuJG8kcCRxJHIkcyR0JHUkdiR3JHgkeSR6JHskfCR9JH4kMSkyKTMpNCk1KTYpNyk4KTkpOik7KTwpPSk+KT8pQClBKUIpQylEKUUpRilHKUgpSSlKKUspTClfIv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MSgyKDMoNCg1KDYoNyg4KDkoOig7KDwoPSg+KD8oQChBKEIoQyhEKEUoRihHKEgoSShKKEsoTCj///////9eIkknSidLJ0wnTSf///////86JzsnXCddJ14nNic3JzgnVCdVJ1YnVydYJyEnIicjJyUnKycsJy0nLicvJzAnMScyJzMnNCcnJygnKScqJz0nPidlJ2YnZydoJ2EnYidjJz8nQCdBJ0InQydEJ0UnRidHJ0gnTidPJ1AnUSdSJ1MnWidbJ2MibCcmJ2AnbydhIjwnbSc1J///////////OSdqJ/////9rJ/////9fJ///ZCL/////ZCduJ2knaWxLb///Unb///////8yWFttMl8+Xzt5//90XP///////2R1/////yZzYF0mYf//eE4wXP//////////KmP/////////////////////////////////////aXH//////////3pN/////////////y98IVP//ytx////////////////UWcsUv//eU7/////////////fXH//z9eOns5ef///////////////1JO//8rY2Br////////ek53SyVl/////////////////////////////2FK//9MVP////////////9hav////9jXC1f////////////////a0v///////8vVf///////3VW//94Zf////9AXiNs//9Naf//J2p2aTt7//9pZ0xv/////2ZQ/////0Fe/////yxk/////0xYcXn//19OJHoyZv//e3r/////PXpITE1vVVX//////////////////yJT////////UWz/////////////J2RSbP////8xdv////97Tv////9RUD9L//8kbf///////////////yhtQl5idlxtdVw5YP///////05U//81dP///////1tTNVYkbP//////////////////////////ZmT//2px////////bEtAS////////3JsalD//////////////////3J5JWxfUP//amdrUFFcaVtMff////////////////////////////////////////////////////////////////////////////9XW///////////YVr//zZW//9fY///Q17//0ReIUr/////////////bG7/////I1M3bk94//////////9IajhuLHElcU5p////////PHn///////95ZWpsVl1Cbf///////////////////////////////yV4/////////////zplWFv/////Ikr/////TVH///////9tbv///////2tsRV7//2Bj//9JSmly//9OVf//Nnb//0JOR1b//zRj//8tcf//Ymr//////////0JX//8nc/////9qTf//bmv//////////////////////////////////////////zJZJX3/////////////VXZiVf////////////////////81eP////91TDV1LWT//////////2tnVXH///////87cP////81af//SUxVev////9UYf////9WV/////9BXP//Rl5vemFj////////////////////////////////c2F2XP//fE7//0Rb//9xeP////9kXP//b2UxXP///////1ZV/////1pz//9BS///Q1v///////96WW5T////////OHr/////Jn1va///JnT//0pMKHP//1tz//8nWzd2//9mT3JwWkv//1JnQ1dwdl5o//////////////////////////////////8mZf//////////////////Z2X///////8jSidMSWr/////////////Nnj/////////////JXr//////////y5x//9Ob/////////////////////9tS/////////////////////////////////////8wdk9vT2n//153//////////////////9TTv//////////d1z//////////////////yhb////////eEv///////////////8hX2Fd////////////////////////////////////////////////SnU2af//////////bGdubv//cHP//z9f////////////////S0z///////////////9BUP///////1J0OmD//////////0Bf//9gTv///////1Jcan3///////92Vv///////0pq////////////////aWj//yxj/////////////1Bz/////////////////////////////yRK//94W////////0decGtWcf////9iZf//TEz/////e0v/////////////////////Y2r///////////////////////////////9BX///bVb/////////////////////UGn//////////////////zlu//////////9jVf////9TUf//cGX///////80aENr//8qanx6dnU8cFR9O2BDTv//OlA6d3NYTXf///////8uZP///////////////////////19U/////////////2dQ/////31s//8uUm9uV1VkaiJ4a00/VzF7/////2xN////////MlxsUH1OcG7///////9CTP///////21Q/////////////3dl////////fHP/////Im7//////////zNZ/////3RY//83af////////////////////8uTv//////////Iln//////////3FY//9PVP///////////////////////ydlUlX/////////////KVb///////////////8idP//V3H/////WFX//z1wUFdQVP////////////////////////////////////9PV2pra33/////bVv/////////////////////////////////////RXxCS///////////VX3//0h0amhzdf////9eeW9T/////1Ns/////0JdN29UZ///Skr///////97Wf////99ev////////////8qVv////////////94dP///////////////3d3LFz///////9XVyJf////////Pk7//3BT/////////////yRwbGFnT0tzKW0+Sv//////////////////b3T///////9Odv////97XjtQN1Vxbv///////////////yh0//94XP//////////J0v//05a////////ZmD//////////////////yVtcm7//////////3lc/////1x5/////1xz//////////////////9yeP//eXT///////9xfP///////zxQeVsxV////////3xL////////JXB9S/////////////////////90Vf///////21NJUr/////K1ZCUP//////////PnA9UiRM////////////////////////////////////////////////Nnr/////TUz//3pa//9Pdv//OGn//3VY////////Tkz//////////01X/////1FUbWn//2tKYln//zJ9//8tY0xWNFn/////J2FTbkNQ/////////////////////////////////////zN9//9kVf////9oT///Q20yUP////9+TihaUHj/////Vn3//////////1F4//9SeFNc//////////9iXXl7QV3//zVj////////////////XW1ETv//IUv///////////////9jXf//////////XXz///////////////////////8vef////////////97UiFPKGT//zZ0fmz/////LmNtZ0F9Ylr/////M1j///////9kXW9wcXZwev////91Uf////9PWv//VFz//yZc//8/b/////////////9PTv//WWD///////////////9WWVRsS2r/////P0owVf//aU//////////////bXH//09M//////////94ZP////////////////////////////////////9tZP//////////WFf//yd9//////////8rajJ2//////////9wTz15////////////////dGb//////////////////////////////////1tL//////////////////9Rc///////////UWkpc2BQUmn//2Na////////////////UmL//yJ2dGH///////9kWv////////////9VZz91Ik8vTSNP////////ME1+cSNQL2EjeP//Jko7d2pySF5Taf//////////SV5efUBK////////anlOUVRu//9SVCNZKH1ZV053Pnr///////////////////////9WT///cFf//2FrRXj/////////////elz/////Q13//195//////////////////9vZ///////////ZX0jdv//fFkpff//bmf///////9lVf////////////9Qb///MU3///////////////8id///////////////////////////////////////////////////////////MnH//zFx////////////////Mk3//yta//8nSv////////////9iYzx7JFn/////Om7/////////////U3j/////////////env//yRP//97XP//////////////////////////////////////////////////Y3b///////8qbf////8hcmFO////////////////Jnr//////////2B5//////////9WbP////9uZCF5/////297////////a3kjbv////////////////////////////////////////////////////////////8sav///////yhK/////3p0//////////9WTXZ8////////SXT//////////////////1R4Jnj//0peRnL///////////////9aV///UFP/////////////////////////////RVj///////////////////////////////////////////////9mav//XXP///////9aZP////////////////////9kdv////////////9ydv//Ql//////////////////////fVn///////92TP////86U///////////////////L2T//////////2F5////////////////////////////////////////////////////////////////JnD///////9TS////////zxg//9KdHpU//8qfWJ5//////////////////////////////////83dEJ9MHz//2x9Ykr///////////////////////89ff//Z2pDX1JRYk7//yRT//////////////////////////////////////////////////////////8rff//YF////////////////////////////////9Hcv////////////9wZ///blD/////KnP///////9LXjh2////////////////////////////////////////////////////////////////dWEzcSN3/////ylK//////////////////////////8lT/////9EX/////////////////////////////////////////////////////////////8wYf////8/cP//JHb//zZj//////////////////////////////////////////////////////////////////////////9Gev////////////////////////////////////////////////////9vUP////9tff////////////////////9EXf////////////////////////////////////////////93fP///////////////////////////////////////////////////////////////////////////////z9m////////////////LV7//z96/////////////3Fl//////////////////9Ebf//////////////////////////////////JVL/////bn3///////82df////////////////////92YUxe/////158//9XbP///////////////////////////////////////11N/////////////////////zdWM01VeFhl////////ak//////UE///0xq//////////8uai1q/////3FT//8lU////////////////093/////////////////////yRu//////////8kUP////8icv//////////////////////////cFD//////////yNy//94d///////////M1D/////KVv/////O1NsSv//JnFVS////////////////////////////////////////2d3/////15N//8kd////////0B4////////XVP//1BM//////////8mT////////////////3N2/////////////3dh/////////////1xT/////356//////////////////8nev///////////////////////////////1lr//8nTy9q//////////////////////////////////////////////////////////////////////////////////9vZP///////zlpWHH/////WFj/////cmD//////////////////////////////////////////zRmfFz///////////////////////////////////////9xc////////1Bj/////3ty//9GW3FQ//9yUFxP//9RU/////8xTFh3//8oSzxrPmT//////////////////////////////////////////////////1x0/////0Jc/////ydw/////0Bm/////21K//////////9raGhlQ1z/////Xm1yU///////////d0z///////////////////////////////////////9UTitn////////Q0v//zFh/////zJ3/////3NTUlP//0B1////////XV//////c25xZ///NH3//////////////////////////////////////////0hy////////UnP/////dG7//1Ni//////////9RTP//al////////86af///////////////////////1dZ/////////////////////011//9ycUd6/////////////////////3hZQlT//////////2V2//////////9FXf///////////////3JnX23/////S0r/////elv///////81aP//JlP///////////////81ff////9Jef//YmT//z17/////yRXRU7//////////1VOZlb//////////z1l////////////////TV5zbP////9gbf///////////////////////2xsPntrX///eGE+ef//////////c1AqYGJo/////1RifVL//yhl/////////////1NZ//////////9eU///OHQ8d31c//9saGdk/////3dj/////////////yhs////////////////cXr/////////////cmX/////dFAvUmVc//////////8lUDRxMXx4TP////9GXVF6//9fd/////8oev////////////91bv//Tl7//////////3Nn/////yx3RGthbStgR13//////////zNSP1L///////9MSv//////////P3v//////////31lZV1NWP////////////90bP////////////////////91UP////9taFJQ//9YWf////////////////////////////9mdv////8qW////////2B3////////////////////////////////WVj//yN0/////110//////////9Rb/////81Wf////8rbf//N2P//////////ztuNE3//3NgTWr//////////3Vsbmj//ylLL3H/////////////////////TUr//yls//9rcv//b33//3N5////////////////////////QWb/////WGz///////8sbU5q//9faP//////////////////////////////////T17///////////////8mUv////90Z1ZR/////0JmY2P//////////zBk////////NFj///////////////////////////////8ldv////////////9ec///////////JVf//////////2h3/////0Zo//////////////////////////////////////////9me///////////////////Zl3///////9+XP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////Wlj//////////////////yxaMGr/////////////////////OGP//////////////////////////////////////////////////////////////////////////ypKeWH//zFq//////////9scv////9uev////////////////////////////////////////////////////9Vbv//////////dHn/////bFJ7e////////3B9//89YGNO////////////////////////Rnj//////////////////////////////////////////////////y5e////////////////////////////////////////////////////////RV//////PmX///////////////////////////////8tbWp6/////25NJm3//y5tbXD//yFd//8vbXh8//9rWP///////3lMNU3//////////yl6//9dYf//////////VWJPbf///////yJd/////0p5//9oav//bWX/////////////////////a1P//1RpemFMZP//ZGFHaP////9bTv///////1Vc//81d3N8c3AvTjVxUm9IaHFr/////////////1RLPmB4Y2lqMnz/////////////dGD//2BP//8lbv////8qekNmMmErSv//ZGM7af////////////9WYnJz//9WbjJqdlBZbEtaKE///////////yNd////////W1j//055VWlRY/////88Uv///////////////yxYTHP//3tNVnb//3Vnb2h5YztSc3N7Y///UF4wTv//d1ZZcf////////////9BdURc//87df//UV5mXP////9SXv////9ibXZuT2pucHxj//9fU3RTM2H//zRh//////////9TdP////9GX///////////////////////////Vmn///////8rW/////////////////////8mdv///////////////zljRWspdDZNeVL//y1aY1JRT///////////XEt6TP//XU//////KWj//ztjOmP/////WmD///////93bv////////////8zXP//////////dVP//yZX//81dltX////////////////VWH/////alT//yNf//////////////////9fff//////////////////////////////////////////////////////////d1BUbf///////////////////////////////////////ypL//////////////////9bZP//e2EiS///////////YFP//z9k//9Ae///PlpNZP//OVb///////9Ab///fGH///////////////////////////////////////////////////////////////85dv///////////////0df//////////////////8xZP///////////////2dcaFz///////9Wev//dlP//////////1px//9yen1i/////////////09VeFD/////X03/////S3X//3BkK0v//0RX//////////////////////////////////9+Yv//Wl3///////////////////////////////////////////////////////////////////////////////////////8uWm5K////////OVX///////////////////////////////////////////////////////////////8hY/////9jaP////8rc/////////////////////////////////////////////////////////////8pT////////3dT/////////////////////////////////////////////3FU/////2RO//9yaP//////////////////dWX//////////////////////////////////y5n//86Vv//bF9AZP///////////////////////////////////////2Ro//////////81WP///////1xk////////////////OXQ2cf////9eYjVh/////29NJ3FlTl1L/////2NZ/////yxz/////3lQK2xTXml3/////3V5/////////////15hbks8Y1Z4/////25b/////////////3F9//////////82d///////////XnT/////bXL//1lb//8ocP//////////////////fWH/////////////VF7//yxg/////////////2Nt/////2FT//9IX///////////Nln//yx9U2////////9BZGt4//8sW///////////Rnz/////////////////////LVj///////////////////////86dv//X1tTU0d4/////////////////////////////////////05KQXg0Uv////80XDl6T0r//zN8ampranpQ/////////////2Rt/////2dd/////0lf//////////9tX/////////////88bv//QW//////Ukz//yRd////////Sl//////////////eFMocf///////zdN//9Ub///////////////////XWRuXyxLPGn/////////////bGr///////9LX/////////////8/eS9WRlX/////////////Kk//////KU7/////eFb///////83cXhu////////WVlfc///SHhGTv////////////////////9mVf///////////////2Z0/////0VmVW//////b0tffCdc/////2dW/////////////0l4//////////9SY///PWP//2FPQHBabP//V11we/////8sbP///////ylw////////////////V3pBe///QFL//////////////////zBl////////ZW3//////////y1L//8wef////////////////////////////8ld///Lkv//y9a//82WP//////////////////J1Mye///RH3//y1s////////////////IXv///////9pZW5p//90c3N4QXAvXjB4/////2BzL2f/////////////LVv//zVm/////yh5/////1hdWWhWb////////2JT//9fYv////9gfEhXLX3///////9vX1NMeVP//////////3BUR1tVXv//////////dHD//1BVWWX///////////////9HfFZcYGL///////8wWv///////////////yNz//9sU///S3T///////9Fff////////////99Y///MXn///////////////97UFts/////////////////////zx1JHJOWE9Y////////////////d3X//////////////////////////2F2////////////////////////N1L//////////////////2x7//9IXWhk/////0FS////////V3j/////////////O1ZWXv////89dy5s////////YVD//3VgM2r//1ZO//////////8lTP////////////////////////////////////////////92bGFiPmP///////////////////////9IfP////9wTf//dnn/////cF////////8/Zf///////z9O//////////9hfDBtUX07dv////9PeVprQUr//zhScU3//1NjZn3/////////////////////////////////////////////////////bWb///////96Y/////8qcFB5////////////////Ynz//yd4////////ZWF5bv///////3ZnbWr/////NHxCdf////9cV/////////////////////91cP//aF1tU3x1//8/Wv//e0z///////96UyR0//////////////////9Xb///Q1T///////////////////////9je/////////////////////9te///LWD/////bmoze0Jk/////////////////////////////////////2d2XVL//0xf/////0l8/////ylldmAzdn5h//////////9wS///b2pwav///////0BaNHhya/////////////9DZP//////////V2lxZP///////29K//////////////////9XTv////////////////////9KfP///////2Fz/////0RL//////////9lY///RUs0av////89af//SVf/////W2sxbf//Q0w+d0t8////////////////dHj//zdZ/////1NzVHP///////9kd///UXf/////N1gxTkJK/////zR7Rkv/////dnD/////Z1X//1Bq/////////////1RML0v/////////////KnQvaf////9DdVhp//////////////////9pXf///////3Nx//97VTte/////3t0////////c31yfSZ3////////////////////////SV3/////U1T//yhM//9BWlVM//9kWf///////0p6////////Y2X///////88U////////3BK//////////9EUP///////1BKK3pra3hnZVn/////////////////////////////////////////////////////////////////////V1H/////////////////////////////JHP///////97VGN8WHr//1Vz//8rT/////9za3xV////////////////VFN8Tf//Zln//3liIWJUa///d2AyZHxM////////ZHv///////8rdP//////////PVD//3FK/////////////////////zhv////////QFf//3pudH3/////Y1P//0J7//////////////////9oVS5bNmE3eP////////////8/YEN7al3//yJi//8mbv////////////9odv//////////dXb///////////////////////////////////////////////////////9KXf////9iUP//////////Jl3/////a13/////eWT/////L2N8UP///////3x0//////////88TGp3////////////////ZGVxX/////9hd///d3k5b/////9YeP///////////////////////////////////////yl5/////////////1l4////////PW7///////9GWP////9jZE51//////////9ZXf//////////Z1k5UkNV/////2VaUFr//1lRWE7//15LLHR7Wv//aXZzaCxPcHD//310SFv///////////////////////////////////////9ATlRjT1F1cf//ck3//2tP////////OE3///////////////8mY1pRJXL/////////////JnL//05k//////////////////97U///////////////////////////////////////////////////////////////////KXH///////9Jcv//////////////////////////WG9JZv//OFhzev//////////////////////////NXP/////JHj/////c1FIZv//////////Wnj/////////////////////////////////////////////aVxXXv////////////9fS////////2xP//////////9fdP////90UTpS////////cl////////83Yf//////////I2J8U/////9mbf////////////9JW////////3pk//9eT/////9QTv//////////U1V1cy53/////0hv//9zTU91c2VCcP///////////////////////////////////////////////////////1FK////////cWr//yZQ/////////////////////1pZK3D/////////////Z2v///////9AZTV8/////////////0Rk/////////////////////////////ylMRn3/////////////NWr//yplOl9fYf//UVr//////////zhh//90aH1T//////////8kYv////////////9Kcv///////////////////////2ZaM3f///////////////////////////////9Nff///////zZz//////////////////////////////////////////////////////////////////9Xbv//////////////////RHX/////////////////////JFj/////////////J3L/////////////////////OFk5WUlv//////////////////////////////////9OVv////////////////////9Ldy5fdWj///////////////81Uv///////1VT/////////////0x0fFr/////////////aFn//2t3SXX//zxz//9SWv////////////////////81U/////////////82aP////9PVjp0//9Jd/////8qTP////9DcFZM////////U1D//z1T////////e1v//2BL////////////////ZFN3dv////86VU1zYUv//////////3Rr/////////////y10//8qfP////////////9sd////////3ZoZ1r///////9Md///////////////////////////////////////////////////QWX//////////25g/////////////31V////////////////Zk4rfDtV/////yhy////////////////JWI5TXJqR0v//3RN/////y9bWW//////////////Ok3/////eXz//////////3NfZ05CWv//LU///////////3lnKHj///////////////9ic////////3JKJF//////RFT/////////////V0xCZf//////////O03//1pvWG7//yddJmL/////////////QGD///////8wVkp4//96fP//fln//////////zBe////////bF1oWv////////////9gVP//eVb//1dNWF7/////eHL//1Zk/////0VQLnT//yhd////////RW1Wc/////9ZXmZj////////////////KFP//zBb/////1plP2P///////8xW////////2lV/////////////0FgW2//////aXD/////Mlf//////////31Q/////////////////////2lZ/////35Q//9tbClT//8pckRw/////2Jib2n///////9Ref////9Zaf////////////9aaENaRFpFVP//emdgTTBj//8yW0R7//9jc///JVlne0tdVFD//zZmLmBaff////////////////////81XHhgMWf//////////3B1//9cWEZt//////////85Yf//QGNAeXBp/////1tZ//9kc////////zZcaWT/////////////RXBBY0x8TXz//////////0ty//9Mcv///////09k////////////////////////W3H//1l6//84cXV9eWD//////////3tnN3xkfEV7Z2M5WP//eHb/////RVxYTP///////y9gZ3T//1xvfE9db///KnL///////////////////////8+ff////8sSjt9R33//////////zJn//9RanRf//////////9sUV5kQ2X//////////yZZ/////zxN//9lc/////////////////////9Vbf////86Wf///////2dtNXtseP//////////Z2D//1lM/////0ZU/////////////yVn//91VT5T//97fP///////////////////////////////3Jk/////3Vf/////3hobXj/////R07/////////////dn3///////////////////////9YaP//WE1WZ1pM/////2NKdl9HcEZw//86WP//dHFwdEx1/////2V8//////////9FanNq//9bXf//V1z///////////////99Xnly//9HVf///////1BY//9IcCFRIlH///////////////9UWWhWSln//zFaR1hiXE5zdHX/////OXH/////U1r//2p2////////dU//////Ln3/////////////////////Ukr/////NF///////////11XOnonbj11//91eP////9obf////////////9hVP//I1FWYf//////////////////////////////////eHn//0pbeUtUVP//XFn//z5u//9td////////25S/////2ZheXf//////////////////21d//9baP//M1v///////93UTBg/////2JU//9Xdv//eVf/////XVj//31NK3L/////////////////////////////////////////////PU1CeP////8scv////8tSi5KLk//////////////QmP/////////////N1z//////////////////////////1pbO1lzSlN2eGZ1av////////////92av////95dv////////////////////////////8vT/////9TSv////8vSjBSOnH//zNXQ2N9c1pe//////////9bXv////9eb2Nie27/////d19KV////////////////////////2hOW1v//////////////////ztx//////////9xaf////////////////////83ekZQ/////ytMKG7/////ekt5eX1MflP//////////1Bk/////////////25y//9VVE1f//84fFBR////////////////////////////////////////////////////////////////TXL/////////////////////Unf/////////////////////VEr//1lV////////Xlj///////////////////////9ZTf///////yluPHb/////W0z/////////////SXD//3x8//9JaH50//////////98Z15X//////////9cXv//LHB+TGFN//86Yf//b1syWv//////////////////////////////////JVE4XP///////3ZY//8kUf//Yk3//////////2pc/////3dw//9KcD5Q//9cXf//////////VlRWU////////////////1BtIU3/////////////NV////////94X////////////////yFUMk5KaP//////////dWv//////////////////1VjUHX///////8hdf////////////////////////////////////////////////////8nWf////////////////////8rZf///////////////////////////////0tm//9xdf//////////////////////////RWX/////////////////////I3lbYGt2//9xS///alkidf///////1FX//94UXhqeWozWv//////////X2//////b3H//3ZlP25kYv////////////8/UP//LHpRdTNn////////////////////////////////////////////////////////////////////////Pmn/////////////TnI0W/////////////////////9OfP//bl3///////////////80Z/////////////80V////////////////zR3/////////////z5N//9pWv//////////////////ME9Zd2Zz/////1lO/////////////////////////////////////////////////////////////ypO//9IS///////////////////////////////////////////J1D//0tw//9HUEVk//////////////////9gW////////////////1pV//8nV////////0Bu//92eP//////////UnVpbf//PFn//0Zl/////////////////////////////////////////////yN1/////1RaJ2J8e/////9ccf///////////////3RK////////emj/////aU7///////////////94aWVi//////////85UHJU/////////////yZR//9OX////////////////////////3R8/////////////////////////////////////////////////////ypT////////LEz//////////2Bv////////ZWVVUP////////////////////98W///////////Znz/////////////fktqbf///////////////////////////////////////zFe//////////////////9jef///////////////yJUdk////////////////////////////////////////9QVv///////////////2pVbnH/////////////////////////////////////////////////////////////////////S3r//////////yFlMVX/////////////bU///2tt/////////////zJV////////PFX///////////////////////9ifS1z//9bff////////////////////////////////////8waf//////////////////J1H/////Y30zTv//////////////////ZH1Oev//////////MEr//yd3//8xT/////////////////////////////////////8iZv//NnwtcmFvLnNGXGtZ////////YGj//////////////////yhh//////////92VX1P/////11e////////UVn///////9qZE9y//8/d/////9mYihi/////////////////////////////1Zj//9Rbf////////////95af///////////////////////////////////////zFWMl7/////aGD/////K1P//1xr/////y9f//9DSv////98bv//Q33///////92azJP//////////9sWf//PVn//19Y/////zhUPmtvXf//cF1xXXJd/////z5Z////////////////////////////////////////RnszT31u////////////////K2T//0Va//9sWP///////////////////////////////////////yhR//////////////////////////////////////////8pYv////88XjVn/////////////3Bb//9ib3BxNE//////////////////////////////cVv//zFg//////////8lX///Unn/////fWf/////I2ZxezBLLnL//////////////////2dN//9caP////9XZ/////9Ad///Y1D///////8hWv///////z1M/////ylRTF3/////fmMqUSpo//82anp5TGZYdv///////0dU////////S1n//1JZS1N3WClaeHX/////Xl4vcil4////////////////////////////////////////SFj/////QW7//////////0F5//////////9zXXpq//89djthP01UdE1m//9PfCJ7//9cYP//////////O3RVWv//Mnn///////////////9ye///dlv//19e////////clv/////////////XHhud2hr//96Uv////88cf////9aev////9qWkZaQXf/////NmdHZSxW//////////9HXP////////////8pYf//KmL//yZV/////1dU////////////////UHL//3tq//9dYHN7//////////////////89cf////9nYld9//9ITjdq//9AfP//Z31vd/////81V/////////////////////////////////////////////////////////////86b11x//8zXv///////////////0to/////114/////0d7SFX//19X//8pXf////////////8xaf////8tell2dHr/////////////Knj/////////////bmb//1xMPGFvYP////8/aX18Tmb/////V2H//09m//9xdP//////////////////////////////////////////////////////////////////c2T/////e2T/////ZHn//////////////////////////2Nv/////25PPnYyYH58K1H///////96V////////0h7//9XYv///////////////yNUeHAoV////////2dh/////z9T////////////////ZG///0VXYmv/////Z3z/////ImT//2hi//9QZv//aHtodHRlPHRVdDZf//85fEJudUr///////9lb2JLJFT//2BefVpGZD5o//////////9eYDR2Umr//3t5/////0Jg//9kSv//N2f//31q//9dWf//NFoqbml7//////////9LWzVa/////////////z5x/////yxT/////////////////////0l7//9PX/////9AU1dj//9mb1B8//////////////////9Aaf///////1N1/////1xsN3f/////OGp5Uf///////////////0hc////////////////////////////////////////////////////////OWr/////////////XnH/////////////Nlc1T///KFn/////bmz/////Kl3//////////yJNLmj///////89Yf//UXL//////////0Fp////////fFL//////////////////zVb//9nc35Y////////UXz//zJtL3T//yN7/////0F8//8rbiVU/////////////////////////////////////////////////////////////////////3J0//////////9Zbv///////0p7/////////////2NNO1hbZXd4////////VHb/////////////////////KVf//0lL/////1FmTHD//////////////////////////y5Y//9TeX5V//////////////////88WDBy//////////8rYmhz/////////////0Jv////////////////bG3//zhn////////////////////////////////////////flr/////Pkz/////fHJrWv//WGJWbf////9RVjNg/////1J8//9Ia/////////////////////9BU01w//93T////////////////////////1Jt//9YVElccVf/////O1//////JXP///////9NdP//////////P3ExeP//emn///////9Le/////9VSv////////////////////////////9UeUp3/////0hW////////////////aHw9c///fm7//35n/////////////0JT//////////82U///LUx6djJWWFL///////////////9YZ///////////////////////////JWP//////////zln//////////8tcEx7IWv/////JlT//////////017//89VV9x/////3t2//80Xv///////////////////////////////2tVSGX///////8kezlU/////2Fe//8jZP///////zdX//9ueP///////zVe/////1JW//9VeTpnVWt3VWdvPmH///////8uev///////2lWblb///////////////87Z///////////////////S2z///////////////8zVf//////////////////////////////////NE7///////8le25h////////////////KHf//////////057/////////////z1Y//////////////////99e///////////aXz//////////////////zZP////////R20sbv//////////////////XUz//////////yd2////////emb///////8kdf////////////9cfTNtSU7///////////////9ob/////8/Yf///////////////1t6Y0spd///Jnv///////85XP///////0BxSG1Db/////////////////////////////////////8tVv////9Off///////yFo/////////////////////3R7J1X///////92cf//U2b/////////////////////////////////////////////Xkz//////////////////zJ4////////a1w2ff//////////amX/////YHH///////////////////////////////9MW01d////////SFT/////bVn//////////yV1////////////////////////e2b/////////////VGb//////////////////////////////////////////0h9//8hVj99//9TfP//IW///zxn/////////////25R/////1Vm/////3Jp//8wX/////////////9gWDp8L31OcP//YVv/////SWX//zRt/////////////////////////////////////0Ng////////////////WGP//////////3tpKGr//////////zd9/////yd7//9Caf//////////d33/////////////WWL/////bFz///////////////////////8iaP//////////cGb//////////////////3h9eX3///////8/dv////8nZ///V2b//////////3NUSVT//////////3pW//9yV///QGH//2JbWGb///////////////////////89Z/////////////9PcD5zLGL/////////////N3VwYP///////////////////////////////zh9aGP//ydUfGhSev////////////9veP///////////////////////1NW//////////////////////////80Vf////////////////////////////////////9QcP//cHczbv////86av//U2r/////SW0rXf///////yxlIX3//1BfM2z//1Ff/////////////21tOHh6d////////yt4/////////////2B0/////////////zpUM2T//1pp//82Xv//P1n//0BZb1b//////////0xZ//8qWv////////////////////9lX////////////////2V3////////Mkz/////eV9gV/////////////////////////////////////////////////////////////////////////////////////87VP//////////en3//////////zNM/////3Nb//////////////////////////////////////////9SX///Sk7//1pu////////////////////////ZGT//097////////////////N0///0Nu//////////////////9qTv//////////////////LWL/////////////////////////////////////YVd1ev////9JVSx4WWf/////////////////////////////aXP//////////21YRGNxcP//////////////////ZWj///////96YERuXln//////////////////////////yJrI2v///////////////9CfDtq//////////8raGJe//////////////////////////9vbf//I2j//////////3FP//////////////////////////////////////////88VP//anz/////////////Pmf//3J8/////zRW/////y5i//83U0x6/////////////////////1x6//81bWNh//8saP//XWj/////aW//////////////PXT//zhPW2ksUf///////////////0da//////////////////9Ja///TGj///////83Xv//////////PFZlU/////////////9dev///////////////1Za//8xSv///////////////0haJl///zN5UnL//0RK////////////////S07/////dU3///////8wfShV//9Bcf////9pYkpcNGxAev////8oeyhQ/////2xa////////////////////////bln//3tg////////am9eekRg//85T///SlViVy9i//84V////////////////////////01o//////////////////9adv//////////Im9aYnx2/////1B7LVH//2RN//8uUW1cTmj//3lwNU58Zv////97V1ZQdV1xd///fXb//3db//////////9qe1xpQVn//3J1RWD///////////////9Uav///////////////////////0J5//88av//RVJRe0BnJWv//3pfImM5V///Q2n//31oL2j/////U3IpeyVY//////////9LVf////////////////////////////////////9IUP///////y9RY1f///////9GYP//Ilb//3Bt////////////////////////////////c1f///////9UfP//V1pfTP//VHL//zBR//9gTP//fVs/c///UXD/////////////O3z//zBi/////yVm////////W2L///////9eX///R2D///////////////9vcv///////2FM//////////9qVv//////////Qmf///////82Tv//QHP//35N////////Unv//3h4e3f/////P2j//////////////////zdo/////////////////////zZtOlz/////NEz///////////////////////////////93cf///////zho/////3ZK//8kZFZ0////////Zl////////8nX///Z19BYf//RGn/////S1xFaf///////yNvJmsjS2lj////////e1Ekb///a2////////////////////////////////80UP//////////I03/////Zmj//yVv//9MU21a//////////86V///VXJldW9Z//////////80ef////9UVU99////////Y1v//////////2FxNmz//////////357V1P//zFR//8xS///////////MlH///////////////8yS0Jx/////2F0NXn/////Q2FCYf//d2v/////////////////////////////KF///////////////////0pL/////////////zlm/////////////154Knl3Sv//N23/////OFNWcv////9ZVEVucHL///////8ySv////87XP//eHH/////////////N2z//////////0pl//9Adl19/////2NUYkz//1R3////////////////ZVf//////////////////////////////////0NT//8mWP//QXb/////////////dl3//0BNXGX///////////////////////////////9LZf////////////////////////////9EYf////////////8waDB0anNuWv//O1f//zFi/////////////////////////////////////////////////////ypX////////////////e1b///////////////////////9fZP//Vkr///////8oa////////35b//////////////////////////9Cdv////87b///////////fVT/////SGD///////85aP//Jm//////////////JE3/////dFQhW1xbXVv/////////////XG7//0tLVXz///////////////9rTv//QU3/////U3v/////////////////////////////////////////////////////////////////////K3n/////////////////////////////VHX//////////ylZ/////11pTVv/////Tl3//0Nn//9MbP//////////////////bHn///////9MS///////////fGAoVP//U21vWP//V3L//3hKb1r/////VFb///////////////9NWf///////25Y//9Bcv///////1Nf////////cFr//2pifWD/////eFj///////8vdzZa//9XSv///////////////////////////////////////////////1hy//95WP////////////////////9fev//////////////////////////////////b09CWf//UnD//1Fk////////N3P///////////////////////////////9gev//////////////////////////////////bG//////////////MmL//z1U/////05Z//////////9idP//////////////////////////////////KVT//////////0JNWmf/////////////////////////////WXL/////////////Kln///////////////////////////////8+WP///////////////y1c////////////////a2J8Vv////95Sv////9aVP//////////////////V3QhTP////86T/////////////////////////////////////////////////////////////84df///////0NZaFD/////////////RWN4a///MXL///////87T////////y1TYWhsTv///////zRgY17///////////////////////////////////////93Xf///////////////////////////////////////////////zJydnNbdv//////////flf/////////////X3j//3J3//////////////////////////////////////////8pUP///////////////////////1pm//////////////////////////////////8mdf//////////////////////////////////PFdjTP////9bZv///////////////////////////////11d//////////8zUf////////////9tb///////////XlZ0ZG9h/////3hd/////////////09o/////////////////////////////2VK////////IVz//zVg//////////////////////////////////////////8sfC18J1j//////////zht////////Nlv//////////3BWL3P/////JU3//3Fa/////////////////////////////////////////////////////////////yhY////////ZEz/////NFH/////////////WEr/////////////clondf///////////////////////////////yh1//////////////////8mZv//////////////////////////////////////////////////bFV4VXNa//////////////////////////////////9GY////////2Re//9lXjVR/////////////zZRN1Ezcv///////////////15p/////////////1NwNHL/////VHBkS1R7ZnVqY///Zl7//////////1Rf/////3l4//////////8ucP///////////////////////////////zhR//////////9fVv//V1D/////////////////////////////IXxub1hc//9faf////////////////////////////////////////////////////9dZXt9/////0lg////////SVb/////KlT//0xl/////////////2Bp////////WFAifD5UM2JnXv//////////////////PFw2UlV1/////////////yFOKXX/////eV3/////el3///////////////9VcP//////////X3b//1pya2T//3Fy/////////////////////////////////////////////zlsfH3//////////yph/////1lK/////29v//8qdf///////////////3ls/////y14//9CckN2//9SV/////8ieVZw//////////////////////////////////96cP////9gdv//////////c2lDcv///////ytUM0omTf//Q01aTf////////////9PWf////9Edv///////11uRGf/////////////////////NGL///////////////////////9iX1tn////////////////MWj//y58//////////9NZf///////2t6//88T/////9iT3ZN/////3Bv//8+dP//TVT/////OHP///////8haf///////////////////////3Jya3P//1dw/////1dP////////////////X0////////////////////////9AaEFo////////Y08iaf//////////////////////////KlD///////////////////////9BcytQ//9kVP////88byFY/////////////////////////////19Z//9Xc////////z1c//9lTHFt/////2Jx//9bVP//////////NWL/////Zkr//y5T////////////////Zkz/////U3Fndf//////////Wkpue///RWH//////////////////2lf//9ebv////9Cd///Ilj/////////////LF3/////////////L3A9Vv////////////////////////////8rYf///////////////////////////////zZ5/////3VU//9JUCdvbGL//2pbTE5odVV3//9NU///fnP///////////////////////81UP////////////////////////////9+YP//e1////////////////9dZv//////////////////JGj///////////////////////9NS////////yhv////////NG7//////////1haOVH//ylf/////zBz/////0RM////////N07/////////////////////////////KW////////9VX/////9Xbf///////0Zu//////////////////89b1Z8/////3Rb//8qbzl4//9pdf////////////////////9ZY///////////////////////////////////RmH///////8/VP//////////aF5qcP//////////////////////////QnP/////////////////////////////L1P/////W0r/////////////V3z/////WG1HYf////////////////////////////////////////////9YdDNWLV3///////8+Vf////////////////////9DcV9u////////////////////////////////////////////////a1b///////9ZdP//////////////////Zlf///////////////83Wv///////////////////////////////////////3td/////////////09d/////////////////////yNY/////1la//9YcERv////////////////WGH/////////////VHH//3Jt////////////////W1X/////XFVEc1dL/////////////zZi//////////9xb/////////////////////////////9Ve/////////////////////////////9YU///////////////////UF1ZcDNL////////////////XVX//////////////////////////////////////////////////ydN/////yxQOlH//0Rx//8zZXV7YWlgfTx8//8iWiNa//8hUv////9vUv///////21i/////2leXE41cmRQUV3//////////0hhN1tjX/////////////////////85bUVx//9PcytXLGH/////a2P//0du////////SWF6Sv//////////////////e3BhelpwZ0x0Wv///////////////////////z9M//////////////////////////////////9tTv////8pVWJ6////////ZVD//1Zr//9fbP///////3xf/////1Z3al40S/////8+b/////81TP////////////89T/////////////////////////////////////9ybzdi////////aEz/////////////////////fHD///////9gVv//RnH///////////////////////84Yitr////////NUtRWP//TnR3c/////9GV///O1Eqd///Sm1TV3pY//////////////////9Fdv////9MUXxd//////////////////////////99X///ZXn//0pg/////31yMFP//3N0SVr//15m//////////86eFBo/////3tY/////1Vq//////////8jVv///////////////0Z2W3J8ZP//////////////////////////Mmj/////////////Wlr//1xyVnsyaf//LW7//2N6//////////////////9uXP////9qdWBm//99cP////////////8sV/////////////9FdWBu/////2Vb//9eXf////9wWSNp//////////////////////////95cf//RHJLYP////////////////////8kaf////85Yv//////////////////MWNrfChN//82TP////9bcP////////////////////86Zv////8pTf////////////9Dc////////////////////////1lh/////ytv////////RWf/////aWD//0Vz/////0BUP1UuXf//fHn//0BM/////////////////////////////////////////////yJl////////OE7///////9SWFZ5/////////////////////////////////////////////////////ypxUU7/////R3b//2tb//9+X/////9hWP//c3f//2dX/////////////////////////////35U/////zxR//9PZf//Nkv//zha/////////////0RN/////////////z5W////////OmL/////////////WE////////9MYHlr/////////////////////319/////////////2hXWEv///////9iaf///////zpo////////R2P//////////01s//9ObP//P1b///////8nY///Vl9off///////////////////////2FuKHZ9Xf//////////////////O3j//1Fo//////////9Xef////////////////////9uTv////9PbCVpVVb//0VN//86bT1R/////z5P/////zts////////MVL//////////2lM//9EWXxp/////////////////////////////////////////////////////z5R/////////////zxs/////y1l////////////////MHf//2pM////////RFP/////QFb///////99Vv////////////////////////////8hYf//PV7//yl2////////JFr//////////////////////////////////////////yRWRnX//yJhRmn///////9Fcv////////////9pdGxWU2v//////////z1sXGJrXlxw//8/a///Tlc/Uf///////////////////////yt1//////////99ef//XEr///////9GTTZy/////35d////////N0w4W///////////aVD//11OQGv//yJ9/////////////0t4/////////////////////1ZqMHH//////////////////05b//9Dd/////////////////////////////9PWyRL/////2B4/////1d7/////0prIWD/////////////////////////////TU7/////XFT///////9Yff//////////dlI3cv////92eip2d3pmWP//MXT//////////////////////////////////1Jo//9FSmtM//////////////////9uYv////////////87Yv//LXf///////9heP///////////////////////2xz//////////8hXv///////////////////////////////31k/////2xj//8vXTBd/////zdLU2j///////////////////////////////////////8jYWBS//////////9+cP//////////JmlyS////////////////3NtWVxNYP//////////Wnc5W///////////////////Lkz//1ta//////////9HTf//////////////////////////MV3//y9YI2P/////b07/////c3L//////////zN4//////////////////////////9OYP//fXX//////////2xr/////0VTbHxbUmtU//8iXv///////2Zl////////////////MHD//////////////////////////0RV////////////////dG3///////9tY///Qmj//3VtfFf//ztt/////yt2/////////////zhySHb/////////////ZlNdcj9P//8sa0BP//8oZml9//9BT///X2BsXv//////////ImD/////////////////////P3RvYv//cVlHcf//OEv/////////////////////fnk6W3Va/////////////////////2x2XFpkev//T2D///////////////8yXf//////////KWb//3Nv/////////////////////////////////////////////21z//////////////////////////96a///Znn//////////////////11KXlX//15KZF////////99Zv//LHX/////////////dWT///////////////////////////////9jaf//S21kT////////1NY////////////////M11sVP////85cv//N1//////////////TktYe/////9ZUP////9SXXR3XGclZP//I3z//ztb////////OnJ9aUpQ//9WdUVZNGT//ydt/////////////////////////////////////////////z1qfmb//0R3LXX//2BZ////////NEr/////YnhCT///Pmz///////80ZUhNSG7///////////////////////9IZ/////////////////////////////9JTTd5aHFyWXVbNUpGWf///////0lY//////////////////////////////////8rWf//////////////////////////////////////////PG3/////VFj///////9aXP//PGL/////bXxgbH5S//9HaSpm////////////////cGL///////////////87ev//LnUqe///////////e2z//z9sWHz/////////////////////////////////////////////////////////////////////////////////////ZVT///////9Def///////2Ju//////////////////////////////////9pV3Zt////////bV7//////////////////2xM//9uY/////////////9UaP///////3h6////////////////NF01ZDBY/////////////////////////////////////////////1VY////////anT///////85Tv///////2FWUk///zZQ////////////////Ik7/////bnP/////////////eHP///////////////////////////////9MXP//S1D///////8kfEpNVFcjXv//YGT//////////0lu////////XWJ+dSxU/////////////1FV//9wWEN4V2r/////////////////////////////////////////////////////////////////////V3X/////P1j//////////0B9////////////////LWv//////////ypV/////////////////////////////yhn//////////////////////////////////9Kbv///////2dK/////////////2N4//9dVP////9Yav//////////WXt3bf////81Zf////////////8tUP//////////cXH///////////////////////////////////////////////////////89Yv///////0hj//////////9VWf////8qX///////////PFv//////////////////////////////////////////2R4/////////////3px/////zZlb3P/////WntgYf//LFn//2t1//82YP////9Iaf//T0v//0lj////////bl7/////////////////////PmL/////////////////////////////////////////////b1z//yVW/////////////3Fi//////////////////9+ViFZ//9AWFtc/////z1tOF///yVq////////LVf/////eXP//3ht//9Hdf///////////////0phY2v//15y//////////////////////////////////9MeP//WWr//0ZT//9mW/////////////8vdf//////////cE7//////////35p/////////////zZ7////////////////////////cmL//////////3JPOXdzWf////9LYf//////////////////////////////////////////////////////////XVr/////OVr//////////////////3tr//85S/////95bf///////////////2Bg//////////////////////////9AdP//PH0xX29j//////////8jYDl9////////////////////////MXD///////////////9LTf//////////////////Pm3///////9AVXBjem3/////////////ZGn///////////////9tVV1n////////////////dlQ3Zf///////2dbP2L///////////////////////////////9Lbv////90V11w////////K05eZ////////1ZWTGH/////M2j/////////////////////////////bmUiXP////9QYP///////////////////////////////////////////////zVV/////////////////////////////////////////////yFV/////////////////////////////////////1t7//9Lef///////3NLJXT/////////////SHpXVv//ZWlce///////////////////UH3/////////////////////////////////////////////dnv//////////////////////////////////////////yVa//89W////////////////2Js////////////////////////////////////////d01ecP//////////SXb/////////////////////////////////////////////////////////////////////////////b17///////8xU/////////////////////9ufP//////////Q2j//0hx////////cU7//////////215/////////////////////3Ry//////////////////////////////////////////82ZDl1//9wXHFj//////////8laP///////////////////////////////////////zty//8kXv//TFr//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2lK////////////////WmP//1l8//////////////////9aav///////////////0R5//8kY/////////////////////////////9de///Sm///0Ro////////////////////////TFX//////////////////////////1dr/////////////////////////////////////////////y1Z/////yt7//////////////////////////////////////////9ZU////////////////yJV////////////////////////Xnb///////////////////////////////////////////////////////////////////////92Wv////////////////////////////9RYP////8oaf////95df///////////////y96//98a/////9qYDJj//////////////////////////////////////////////////////////////////9FVf////9jcW5V//////////////////////////////////9MTf//////////WW3//////////0FY//////////9sev////////////9rcf////////////88emJm//////////9lenpi////////Nkr//zdk//9bav//enX///////8se0NPfWv//////////3p4/////zlf//////////9xYf//JFL//////////3t1////////////////WlBbUP//PmoxWf////////////83Sv////9nU///ZXj//////////zJT////////QGJfcv///////////////2VN////////////////////////////////LHn/////////////////////TU3///////////////////////////////8ubi5W////////////////////////////////alf//////////2BnLmv///////9ZT/////9NXHtt//9wXv//a1f///////////////8lXv//////////////////////////V19QW1Fb/////yNV//////////8ycFxc/////////////////////2hK//9meE5c//////////9calJb/////////////////////////////zNp//////////9bd/////////////////////////////8oY///Llf/////YWD/////////////Okv/////UWX/////////////////////////////////////////////////////////////////////XFD//////////0FV/////////////0pY//////////////////8pY////////////////////////////////yRg//8paf//R1P/////XVwueP///////zhM////////LlD///////9yWP////9KY///////////////////////////L0z//////////////////y1UUXb//////////////////0xQ//////////////////9GSv////9CVf////86Tv////////////////////////////////////////////9HSv//////////////////////////////////////////MHr//////////////////////////////////////////1hf////////OnVrZf//dG81Xf//////////Kk3//3Jj//93e///UHf//////////zp9/////2F9fnZAUf////9FaP//OGT//2hh////////QUz//21S//////////8+W/////9iYP///////0l6/////01h//84Sv///////2BySXH/////////////////////////////////////////////////////cV7///////9fcER4/////////////0xu/////3Je//9JZ///c2JhZ/////9LY/////9MY////////3hPLG///359JXwxellf//9SYP///////1p0/////////////////////////////0px//8jTv//////////PHJjbP////////////8lYP//K3f/////L2v/////////////XmX//yRhK03//3RZJmhOTWlh//9vfP//Y2D/////////////QWL//yRO////////////////Jl7/////fmv//11rYHD/////W3T//3Ri/////0hT////////a3T//zVu//9Ydf////9fVf///////2VW//////////8wa2N0//////////9NY///////////dHQyev////91b19K//8xaz9t/////0l9//////////8mZCR5M3D//2xl////////Z1FHWVdkXWr//3dU////////////////////////Olr//01a////////THn//1phP1v//0VMUGw7S///c17/////Kmn//////////////////0hZ/////2NuPVf///////////////9ET/////////////9NUP//////////////////Jnz//////////////////3tx//////////9SfUFR/////////////////////1tj//9JU///T1z///////////////////////9tTP////////////8nXv////87ZiFs////////OUz/////Xnv/////////////Ymf/////QVT///////////////////////8oXP////////////9CYv//WHNTZf////9Zc////////0ZzW03//////////////////yxN//9DfP//////////Z1T//0JR//8lef//VWj/////////////////////TmP//////////0pU////////////////Wl//////////////////////X3tjZ///////////////////////////////////e3hPY///////////////////MHX//////////////////2dY//9JWf//////////////////////////////////////////L3h2b///Nl0vbnhN//////////84Xid8fHcxdztOIXT/////TW4uYf////9DbH5P//8/eGJYaFP/////KF5kdEJs//91WUV5U11xVnxscHz/////QG05Sv//ZG7///////////////9hcv//OV7///////////////9yVv//dF7//1tf//9TW///Z3pjWEF0//83Xf///////3Vy/////y5U////////////////c1b///////////////84XUVPX18+ciF2//9La3xx//9Hc/////9rYP////////////98bf////9bYf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9lbv//dV7//////////1N6//////////9Lcf////8vUDld/////0NR//////////////////////////////////8xdf//////////Rmr/////////////////////////////////////YXD///////////////////////8sdv//////////WXX//////////////////////////2tw////////////////Ol3///////8/cv//////////////////RXf//////////yJbdnL/////Okr/////////////////////////////dXf//2VL////////Zm7//1Ng//////////8lTv///////////////1hW////////L1RJaf//////////TlNCdP//////////////////////////////////Zkv/////////////////////////////IXH/////////////Mmv//////////yJx////////////////////////////////M2v//zRw/////3RLMFQyczd7/////////////////////////////////////2x1/////////////2duMnT//////////////////////////////////////////////////211//9zT///////////////////////////YnD/////////////Tm7/////THH/////OGX//////////////////////////////////////////////////////////////////////////3VXc2NlT///////////////////////////////////////////////////Rk////////////////////////8zc1hkeU9aT///////////TXr///////////////////////////////9jZv////////////////////////////9icv///////////////////////////////251/////ztK/////1xjck7//1lW////////MG7/////////////////////ZXRCWFBcbkz/////////////YFVKdkp9VlhPdP///////////////yZWPlz//1RbR1f//////////35y////////TXH//////////0NiXlz//19c/////y1vK2b//////////115P2r///////8ub////////1B0c07/////////////////////////////////////LGb//15O/////3lV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3RjUE3///////////////84Vf////99d///KVz//////////3Ze//8qXGNyNGlcUv///////////////////////////////////////2Zp/////3Zj/////////////////////0pn/////05Q/////3da/////////////////////////////////////////////zxK////////aG5eWv//d3L/////e2L//yZM//////////87Wv//aW7///////9adVx3amFBTjFU//8xfT1m//8te/////9neP//TmH//2J3b3VHT/////8yVG9M//9oVP//T25Xd/////8mYEFWXGFjcGRxcVwnVv//////////////////////////dXT/////TnFkcv////8wUP////9vbP///////zp5//81a/////9tVERi//////////9naf////80ayFq//88eCZO//9GeVp8//8zVDlTXmr///////8raf////9hYU9TdnT//0BqT2H//zpM/////////////2pu////////ZHA0c25U/////0By/////2Vx//9DdFRg//82a///IVdoS///LXktaWRYM3pFYj18/////0RsMVj//ytc//////////8kVf//aWv///////87aP///////1dY/////////////////////y57YVH/////QFv//z51//93Xv//////////e0pGd0hP////////UGH/////UG7/////////////////////dGn/////////////////////dE7//////////////////////////////////////////////////01V/////1tP////////////////O13//////////yxO//////////////////9oaf//////////////////NFRHZP///////////////////////////////////////1t1/////0F6////////KV7//////////////////////////////////3hU/////////////3dv//////////8zU///////////////////////////////////////////////////////////N2t4b1x1TG1VW09x////////UHH///////////////////////////////////////8ydf///////////////y5ZLFX//0Zi/////////////////////yN9//9leytf/////////////////////////////////////3Vi//8tdv//M3X//zVw//////////8lYf///////////////////////111/////////////////////////////////////yJsfW3//zR1OHv//yNb/////0pWWUv//////////////////////////1Rl////////////////enP//zhr//83YGxXbHEvZWFVbVdRUf////////////9yYXlv////////PF1cdv////////////9lcP///////0R0/////2lp//////////////////////////97c29U/////yJMfnc8X///////////TWv///////////////83UP///////////////////////////////////////////////////////0JW/////////////y1o//////////8vbyVL//////////9pS////////2h6//////////////////////////////////9GTP///////2dm/////0dq////////JFv//0lPfGJ6b///////////////////////////////////////////////////////////////////Xmv/////SHX//15U/////////////////////////////1Vg//8wb/////9HYv//L1n///////9nef//////////////////////////////////////////////////////////ZWf/////Sk9RYf//SGL///////////////////////////////////////////////97b/////95ev////9yXP////////////////////////////////////////////8nYP////////////9oeP//////////////////////////////////akv///////88S2JW/////////////////////////////151//////////////////9fdf//Nm7///////92YkpTfG9EUTFv//9FUf//XlD//2FZ/////zhg/////1FNOXP///////////////////////////////////////////////////////////////9MZ///KFYnTv//NVT///////////////9IZP///////////////zRT////////////////////////////////////////////////OWv///////////////91S////////////////112//8jcf//////////////////////////////////R0z//////////////////0pp//9wYf///////2B1/////////////////////y97////////UUv//////////2B7ZXL/////cGz///////////////////////////////////////////////9scP//////////////////////////////////a27///////////////////////////////9Laf////9wTP////8vV/////////////////////////////////////////////8hc3V8//////////////////////////////////////////////////8kcf///////////////////////////////1Zg/////////////zJv////////////////////////UXT/////IXf/////////////////////////////UXH///////////////////////////////98Sn1K/////////////////////05O////////////////////////////////////////////////////////////////////////////////////////SHP//zpzfm3/////////////////////Jlr/////bGD/////////////TXj//1JL////////Tmv//1h5WXlgSkpa////////Jkv//////////////////////////0hKbnlsW/////8xUP//////////b1X///////9zZv///////////////////////yJnWWT//////////////////////////2Fk/////0R8////////////////////////b3l0T2Z3/////////////zxO//////////9FdCNcPV3//////////0Z0/////////////////////yF4////////Vmj///////9BW/////////////////////9mcP///////zlkbXb//y55//8+Xf///////////////zBXaFg9S/////9aef//////////////////////////TnhweW1gM2MzdP////9CamZyNnD/////////////Vlv/////////////ZGv/////Z3L//1VXNlRoeUFX//////////9VZf//////////////////amlMV////////2lTSWL//1t8LU3/////////////MEwiav////92ZEBQ//83cCFu////////////////dlf///////9KYkti//9Pev///////////////19r/////////////0tW////////NHT//////////01tUmT/////KWo6ZCJzUk3//0t2//9mcUFtPGhRbv///////////////2dwTGL/////KmT//2F1Wm3/////////////bldxUf//////////a2lsaWRg//////////8nWlRd//8jav///////0NWdFb//19a//8zb01i/////////////31vaHL///////////////////////9Fb///Z2f/////fVf/////Tmf/////XF///0d5/////////////////////3ZZ/////////////////////yxf//9aVv///////////////yRc////////OHD//////////3pV//93ZP///////0RW/////////////////////2x0//////////9+b/////////////8hcP//Kl7/////PFp8WP///////////////1R6////////ZWz///////////////8ofP////9mbP////9LWP//////////////////////////////////////////OXv//1Nk//95Tf//////////////////////////////////////////U0///////////////////2pK/////1RP//89eP///////////////////////////////////////////////////////////////0d0//////////9fav//////////////////W3n/////////////////////N1T//////////////////////////////////////////////////////////2Vr/////1Jh//////////8kav///////0J6YXtteiJwcUz//yN6d2L//05i//91af//a2H///////9oZ1doeFpLVP///////3Z3RVb/////////////////////////////////////////////////////aVT/////enr//////////////////3JMXXf//zpe//////////////////////////8oTv////////////85cH5kSWT/////////////VGT///////9Dav//NG////////8+V////////////////2J7//9TTf///////zVv////////aXr/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jnn///////////////89X///R3f///////////////////////////////////////////////99eP////98eP//////////////////////////////////////////////////K15oW/////9dY///YmFGUf//////////////////////////UHZma3la//////////9HbP//////////////////eF5peF5jdU7/////////////Q3pXZf//SGz///////9Jc/////87ZP//////////Lmb/////////////Nm///z9c//////////////////89Tv//////////////////////////////////////////////////////////////////////////Q1j///////9PUP//ek9Kc1dg////////R1Euaf//PWj/////RHr/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////T2L/////RXr///////84ef//////////////////YFz/////MHv///////8pWF9lJ3n/////bnb//0x2eGL//////////3Fs//////////////////9gWv////////////////////////////////////9ScUxSS0//////PUr///////8/Xf///////292//95Xv//////////////////////////////////NHr///////8tVf//////////////////////////////////Z3E+Xv///////////////0Bc/////////////0hRSVH///////////////////////8+eP////////////////////////////////////////////92S///////////eVT/////////////YnVTYf////////////////////9pWP////9+eP//TE///////////////////yR9//////////////////92Tv//UHr/////c0w+Zv///////y52/////3BV/////0pR////////PnxxVf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////aU3///////////////////////////////////////81ev////////////////////////////////////////////////////////////////////9QYnd0////////VE3///////////////////////////////8jZ/////////////////////8lW1Fi////////////////////////////////Ilf/////Y3f///////////////8mav//////////////////////////IVD//////////1pOa3smW15bZVj///////////////////////9gav//////////Klj/////////////YGX/////////////////////////////////////////////////////W1b///////////////////////////////////////////////////////////////////////////////9Gb/////9qeP//////////////////////////////////VWT/////////////////////////////d07/////WGD/////////////////////////////////////////////////////////////////////b1f///////////////////////////////9tdP//////////////////////////////////Zk3///////90TGN1/////0pk//9hXP////9Ief///////////////////////////////////////z98////////////////////////////////J2j/////////////////////RFj/////////////////////////////Pkv//y5c//////////////////////////////////93V////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2hw//9AXf//TU////////////////////////9zXDBZ//9pZjxk/////////////////////////////////////////////0Rq//////////////////////////9sZP//ZWT///////////////////////////////////////////////94e////////////////////////////////////////////////////////ztM/////////////////////////////z1k/////1xNd1n//////////////////////////19d/////////////05t////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////UFn/////////////I2X//////////015////////////////////////////////////////Lk3///////////////////////////////////////////////9OT/////////////////////////////////////////////////////////////////////8vdv////////////9TfW1rXFYkZf///////zZV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////11W////////aXn///////8kZ///Y1b///////////////////////////////////////////////9LUWRW////////clX/////////////el7//3hX/////////////2pY/////////////////////////////////////1VPfVj/////////////K1j/////S33//////////1x8////////////////////////KGBzVf////9Zff////8jTP///////3lZ/////2pTdXX//0dv////////////////////////WlP/////////////////////////////PVooaC9c/////////////yNw//////////9VTf///////////////////////////////ylg/////////////////////////////////////////////////////////////////////yxe/////////////////////////////////////zpwMW7/////Mm7///////9Ndv///////////////////////////////1Ju//9GVv////////////9lYP////87c///YWX//////////////////////////0tk////////////////////////////////////////////////////////I1f/////Qlv//////////35K////////////////T08hMCIwQYFCgSMwQ4FEgSQwJTAmMCcwRYFGgUeBSIFJgSgwKTAqMCswLDAtMC4wLzBKgTAwMTAyMDMwNDBLgUyBNTBNgU6BT4E2MFCBUYFSgVOBVIFVgVaBNzA4MFeBOTA6MDswWIFZgVqBYYFigWOBPDA9MGSBZYE+MGaBZ4FogT8waYFqgWuBbIFtgW6Bb4FwgXGBcoFAMHOBQTB0gXWBdoF3gXiBeYFCMHqBgYGCgUMwg4GEgYWBRDCGgYeBiIGJgYqBi4GMgY2BjoGPgZCBkYGSgZOBlIGVgZaBl4GYgUUwRjCZgZqBRzCbgZyBSDBJMJ2BSjCegZ+BoIGhgaKBSzBMMKOBTTBOME8wUDCkgaWBUTBSMFMwVDCmgaeBqIFVMKmBqoGrgVYwrIGtga6Br4GwgbGBsoFXMFgws4FZMFowWzC0gbWBtoG3gbiBuYFcMF0wXjC6gV8wu4G8gWAwYTC9gb6Bv4HAgcGBwoHDgWIwYzDEgWQwZTBmMMWBxoHHgWcwyIHJgWgwyoHLgcyBaTDNgc6Bz4FqMNCB0YHSgdOB1IHVgdaB14FrMNiBbDDZgdqB24Hcgd2B3oHfgeCBbTBuMOGB4oFvMOOB5IFwMHEw5YFyMOaBczDngeiBdDB1MHYw6YF3MOqBeDB5MOuB7IHtge6B74F6MHsw8IHxgXww8oHzgfSBfTD1gX4w9oH3gfiB+YH6gSExIjH7gSMx/IEkMf2B/oFBgkKCQ4JEgiUxRYJGgkeCJjFIgkmCSoInMUuCTIJNgk6CT4JQglGCUoIoMVOCVIIpMSoxVYJWgleCWIJZglqCKzEsMWGCYoItMWOCZIJlgi4xZoJngmiCaYJqgmuCbIIvMTAxbYIxMW6CMjFvgnCCcYJygnOCdIIzMXWCdoJ3gjQxeIJ5gnqCNTGBgoKCg4KEgoWChoKHgoiCNjGJgjcxioKLgoyCjYKOgo+CkIKRgjgxOTGSgpOCOjGUgpWCOzE8MT0xPjGWgpeCmIKZgj8xQDFBMZqCQjGbgkMxRDGcgp2CnoKfgqCCRTFGMaGCooJHMaOCpIKlgkgxpoKngqiCqYKqgquCrIKtgq6Cr4KwgkkxSjGxgrKCs4K0grWCtoJLMbeCuIK5grqCu4K8gr2CvoK/gsCCwYLCgsOCxILFgsaCx4LIgkwxyYLKgsuCzILNgs6Cz4LQgk0xTjHRgtKCTzHTgtSC1YJQMdaC14LYgtmC2oLbgtyCUTFSMd2CUzHegt+C4ILhguKC44LkguWCVDHmgueC6IJVMemC6oLrglYx7ILtgu6C74LwgvGC8oLzgvSC9YL2gveC+IL5gvqC+4L8gv2C/oJXMVgxQYNCg1kxQ4NEg1oxWzFcMUWDRoNHg0iDSYNKg10xXjFLg18xTINgMU2DToNPg1CDUYNSg2ExU4NUg1WDVoNXg1iDWYNag2GDYoNjg2SDZYNmg2eDaINpg2qDa4Nsg22DboNvg3CDcYNyg3ODYjFjMXSDdYNkMXaDd4NlMWYxeINnMXmDeoOBg4KDg4NoMWkxhINqMYWDazFsMYaDh4OIg20xiYNuMW8xcDGKg3Exi4OMg42DcjGOg3Mxj4OQg5GDkoOTg3QxdTGUg3YxdzF4MZWDloOXg3kxmIOZg3oxezGag5uDfDGcg52DnoN9MZ+DoIOhg6KDo4Okg6WDfjEhMqaDIjIjMiQyp4Oog6mDqoOrg6yDJTImMq2DroOvg7CDsYOygycys4O0g7WDtoO3g7iDuYO6g7uDvIO9g76Dv4PAg8GDwoPDg8SDxYPGg8eDyIPJg8qDy4PMg82DzoPPg9CD0YPSg9OD1IPVg9aD14PYg9mD2oPbg9yD3YPeg9+D4IPhgygyKTIqMuKDKzLjg+SD5YMsMuaD54Pog+mD6oPrg+yDLTIuMu2DLzIwMjEy7oPvg/CD8YPyg/ODMjIzMvSD9YM0MvaD94P4g/mD+oP7g/yD/YP+g0GEQoQ1MkOERIQ2MkWENzJGhEeESIRJhEqES4Q4MkyETYROhDkyT4RQhFGEOjJShFOEVIRVhFaEV4RYhFmEWoRhhDsyPDJihGOEZIRlhD0yZoRnhD4yaIRphGqEa4RshG2EboRvhHCEcYRyhHOEdIR1hHaEd4R4hHmEeoSBhIKEg4SEhIWEhoSHhIiEPzJAMomEioRBMouEQjKMhEMyjYSOhI+EkISRhJKEk4REMkUylIRGMpWERzJIMkkyloSXhJiEmYRKMksymoSbhJyEnYSehJ+ETDKghKGEooSjhKSEpYSmhKeEqISphKqETTJOMquErISthK6Er4SwhE8yUDKxhLKEs4S0hLWEtoS3hLiEuYS6hLuEvIS9hL6Ev4TAhMGEwoTDhFEyxITFhMaEx4TIhMmEUjLKhMuEzIRTMs2EzoTPhFQy0ITRhNKE04TUhNWE1oRVMlYy14TYhNmEVzLahNuE3ITdhN6E34RYMuCE4YTihOOE5ITlhOaE54TohOmE6oTrhOyE7YTuhO+E8ITxhPKE84T0hPWE9oT3hPiE+YT6hFkyWjL7hPyEWzL9hP6EQYVcMkKFQ4VEhUWFRoVHhV0yXjJfMkiFYDJJhWEyYjJKhUuFTIVNhU6FYzJPhVCFUYVShVOFVIVVhWQyVoVXhViFWYVahWGFYoVjhWSFZYVmhWUyZjJnhWiFaYVqhWuFbIVnMmgybYVuhWkyb4VwhXGFajJyhXOFdIV1hXaFd4V4hWsybDJ5hXqFbTKBhYKFg4WEhYWFhoWHhW4yiIWJhYqFbzKLhYyFjYVwMo6Fj4WQhZGFkoWThZSFcTJyMpWFloWXhZiFmYWahZuFnIWdhZ6FczKfhaCFoYWihaOFpIWlhaaFp4WohamFqoWrhayFrYWuha+FsIWxhbKFs4W0hbWFtoW3hbiFuYV0MnUyuoW7hXYyvIV3Mr2FeDK+hXkyv4XAhcGFwoV6MnsyfDLDhX0yxIV+MsWFxoXHhSEzyIXJhcqFy4XMhc2FzoXPhdCF0YXShdOF1IXVhdaF14XYhdmF2oXbhdyF3YXehd+F4IXhheKF44XkheWFIjMjM+aF54UkM+iF6YXqhSUz64Xshe2F7oXvhfCF8YUmMycz8oUoM/OFKTP0hfWF9oX3hfiF+YUqMyszLDP6hS0z+4X8hS4zLzMwMzEz/YX+hUGGQoZDhjIzMzNEhjQzNTM2MzczODNFhjkzRoY6MzszPDNHhkiGPTNJhkqGS4Y+M0yGTYZOhk+GUIZRhlKGPzNAM1OGQTNCM0MzVIZVhlaGV4ZYhlmGRDNFM1qGYYZGM2KGY4ZkhkczZYZmhmeGaIZphmqGa4ZIM2yGbYZuhm+GSTNwhnGGcoZzhnSGdYZ2hneGeIZ5hnqGgYaChoOGhIaFhoaGh4aIhomGioaLhoyGjYaOho+GkIaRhpKGk4aUhpWGloaXhkozSzOYhkwzTTOZhpqGm4ZOM5yGTzNQM52GnoafhqCGUTNSM6GGUzNUM1UzooajhqSGpYamhlYzVzNYM6eGqIZZM6mGqoarhlozrIathq6Gr4awhrGGsoZbM1wzs4ZdM14zXzO0hrWGtoa3hriGuYZgM2Ezuoa7hmIzvIa9hr6GYzO/hsCGwYbChsOGxIbFhmQzZTPGhseGZjNnM8iGyYZoM8qGy4bMhmkzzYbOhs+GajPQhtGG0obThtSG1YbWhteG2IbZhtqG24bcht2G3obfhuCG4YbihuOG5IblhuaGazNsM+eG6IZtM+mG6obrhm4z7IZvM+2G7obvhvCG8YZwM3Ez8oZyM/OGczP0hvWG9ob3hnQzdTN2M/iG+Yb6hncz+4b8hv2GeDP+hkGHQodDh0SHRYdGh0eHSIdJh0qHeTNLh0yHTYdOh0+HUIdRh1KHU4dUh1WHVodXh1iHWYdah2GHYodjh2SHZYdmh2eHaIdph2qHa4dsh22Hbodvh3CHcYdyh3OHejN0h3WHdod7M3eHeId5h3wzeoeBh4KHg4eEh4WHhod9M34zh4chNIiHiYeKh4uHjIeNh46Hj4ciNCM0kIeRhyQ0koeTh5SHJTSVh5aHl4eYh5mHmoebh5yHJjSdhyc0nocoNJ+HoIehh6KHo4ekhyk0KjSlh6aHKzSnh6iHLDQtNKmHqoerh6yHrYeuh6+HLjQvNLCHMDSxhzE0soezh7SHtYe2h7eHMjS4h7mHuoe7h7yHvYe+h7+HwIfBh8KHw4fEh8WHxofHh8iHyYfKhzM0y4fMh82HzofPh9CH0Yc0NNKH04fUh9WH1ofXh9iH2Yfah9uH3Ifdh96H34fgh+GH4ofjh+SH5Yfmh+eH6Ifph+qH64fshzU07Yfuh++HNjTwh/GH8oc3NPOH9If1h/aH94f4h/mHODQ5NPqH+4f8h/2H/odBiEKIQ4hEiEWIOjQ7NEaIR4hIiEmISohLiDw0TIhNiE6IT4hQiFGIUog9ND40U4hUiFWIPzRWiFeIWIhZiFqIYYhANEE0YohjiEI0ZIhliGaIQzRENEU0Z4hoiGmIaohriEY0RzRsiEg0bYhJNEo0bohviHCISzRxiEw0cohziHSITTR1iHaId4hONHiIeYh6iIGIgoiDiISIhYiGiIeIiIiJiIqIi4iMiI2IjoiPiJCITzRQNJGIkohRNJOIlIiViFI0lohTNJeImIiZiJqIm4hUNFU0nIhWNJ2IVzSeiJ+IoIihiFg0oohZNFo0WzSjiFw0pIiliF00XjRfNGA0YTSmiKeIqIhiNGM0ZDSpiGU0ZjRnNGg0aTSqiKuIrIhqNGs0bDStiK6IbTSviLCIsYhuNLKIs4i0iLWItoi3iLiIbzRwNLmIcTRyNHM0uoi7iLyIvYi+iL+IdDTAiMGIwojDiMSIxYjGiMeIyIjJiMqIy4jMiM2IzojPiNCI0YjSiNOI1IjViNaI14jYiNmI2ojbiNyI3YjeiN+I4IjhiOKI44jkiOWI5ojniOiI6YjqiOuI7IjtiO6I74jwiPGI8ojziPSI9Yj2iHU0djR3NPeIeDT4iPmIeTR6NPqIezR8NPuI/Ij9iP6IfTR+NEGJITVCiSI1Q4kjNUSJRYkkNUaJJTUmNUeJSIknNUmJSolLiSg1TIlNiU6JT4lQiVGJUokpNSo1U4krNSw1LTVUiVWJVolXiViJWYkuNVqJYYliiS81Y4lkiWWJMDVmiWeJaIlpiWqJa4lsiW2JbolviXCJMTUyNXGJcolziXSJdYl2iTM1d4l4iXmJNDV6iYGJgomDiYSJhYmGiYeJiImJiYqJi4mMiY2JjomPiZCJkYmSiZOJlImViZaJNTU2NZeJmIk3NZmJmok4NTk1m4k6NZyJOzWdiZ6Jn4k8NT01oIk+NaGJPzWiiUA1o4lBNaSJpYlCNaaJp4moiUM1qYmqiauJRDWsia2JromvibCJsYmyibOJtIm1ibaJt4m4ibmJuom7ibyJvYm+iUU1v4nAicGJwonDicSJxYnGiceJyInJicqJy4nMic2JzonPidCJ0YlGNdKJ04nUidWJ1onXidiJRzXZidqJ24lINdyJ3YneiUk134ngieGJ4onjieSJ5YlKNUs15olMNeeJ6InpieqJ64nsie2J7olNNe+J8InxifKJ84n0ifWJ9on3ifiJ+Yn6ifuJ/In9if6JQYpCikOKRIpFikaKR4pIikmKSopLik41TzVMik2KUDVOik+KUIpRNVGKUopTilSKVYpWileKUjVTNViKVDVZilU1WophimKKY4pkimWKVjVmimeKaIppimqKa4psim2KbopvinCKcYpyinOKdIp1inaKd4p4ilc1eYp6ioGKgoqDioSKhYpYNYaKh4qIiomKioqLioyKjYqOio+KkIqRipKKk4qUipWKloqXipiKmYpZNZqKm4qcip2Knoqfilo1oIqhiqKKWzWjiqSKpYpcNaaKp4qoiqmKqoqriqyKrYpdNa6KXjWvil81sIqxirKKs4q0irWKYDW2ireKuIphNbmKuoq7imI1vIq9ir6Kv4rAisGKwopjNcOKxIrFisaKZDXHisiKyYrKisuKzIplNWY1zYrOimc1z4rQimg1aTXRimo10orTitSK1YrWims1bDXXim012IpuNdmK2orbityK3Yreim8134rgiuGK4orjiuSK5YrmiueK6IrpiuqK64rsiu2K7orvivCK8YryivOK9Ir1ivaK94r4ivmKcDVxNfqK+4pyNfyK/YpzNXQ1/opBi0KLQ4tEi0WLRot1NXY1R4t3NXg1eTV6NUiLSYtKi0uLTIt7NXw1TYtOi301T4tQi1GLfjVSi1OLVItVi1aLV4tYiyE2IjZZiyM2JDYlNlqLYYtii2OLZIsmNic2KDZli2aLKTZni2iLaYsqNmqLa4tsi22Lbotvi3CLKzYsNnGLLTYuNi82cotzi3SLdYt2i3eLeIt5i3qLgYuCi4OLhIuFi4aLh4uIi4mLiouLi4yLjYuOi4+LkIuRi5KLk4uUi5WLlouXi5iLmYuai5uLnIudi56Ln4ugi6GLoouji6SLpYumi6eLqIupi6qLq4usi62Lrouvi7CLsYuyi7OLtIu1izA2MTa2i7eLMja4i7mLuoszNruLNDY1NryLvYu+i7+LNjY3NsCLODY5Njo2wYvCi8OLxIvFizs2PDY9NsaLx4s+NsiLyYvKiz82y4vMi82LzovPi9CL0YtANkE20otCNkM2RDbTi9SL1YvWi9eL2ItFNtmL2ovbi9yL3Yvei9+L4Ivhi+KL44vki+WL5ovni+iL6Yvqi+uLRjbsi+2L7ovvi/CL8Yvyi/OL9Iv1i/aL94v4i/mL+ov7i/yL/Yv+i0GMQoxDjESMRYxGjEeMSIxJjEqMS4xMjE2MToxPjFCMRzZINlGMUoxJNlOMVIxVjEo2VoxXjFiMWYxajGGMYoxjjGSMZYxmjGeMSzZojGmMaoxrjGyMbYxMNm6Mb4xwjHGMcoxzjHSMTTZ1jHaMd4x4jHmMeoyBjIKMg4yEjIWMhoyHjIiMiYyKjIuMjIyNjE42joyPjJCMkYySjJOMlIyVjJaMl4yYjJmMmoybjJyMnYyejJ+MoIyhjKKMo4ykjKWMpoynjKiMTzapjKqMq4xQNqyMrYyujK+MsIyxjLKMs4y0jLWMtoy3jLiMuYy6jLuMvIy9jL6Mv4zAjMGMwozDjMSMxYzGjMeMyIzJjMqMy4zMjM2MzozPjNCM0YzSjNOM1IzVjNaM14zYjNmM2ozbjNyM3YzejFE2UjbfjOCMUzbhjOKM44xUNuSM5YzmjOeM6IzpjFU2VjbqjOuM7IztjFc27ozvjPCM8YzyjPOM9Iz1jPaM94z4jPmM+oz7jPyM/Yz+jEGNQo1DjUSNRY1GjUeNSI1JjUqNS41MjU2NTo1PjVCNUY1YNlKNU41UjVWNVo1XjViNWY1ajWGNYo1jjWSNZY1mjWeNaI1pjWqNa41sjW2Nbo1vjXCNcY1yjVk2c410jXWNWjZ2jXeNeI1bNnmNeo2BjYKNg42EjYWNXDZdNoaNh42IjV42iY2KjYuNjI2NjY6Nj42QjZGNko2TjZSNlY2WjZeNmI2ZjZqNm42cjZ2Nno2fjaCNoY2ijaONpI2ljaaNp42ojamNqo1fNmA2q42sjWE2rY2ujWI2YzavjbCNsY2yjbONtI21jWQ2ZTa2jWY2t424jbmNuo27jbyNvY2+jWc2v43AjcGNaDbCjcONxI1pNsWNxo3HjciNyY3KjcuNajZrNsyNzY3Ojc+N0I3RjdKN043UjdWNbDbWjdeN2I1tNtmN2o3bjW423I3djd6N343gjeGN4o1vNnA2441xNuSNcjbljeaN543ojemN6o1zNnQ2643sjXU27Y3uje+NdjbwjfGN8o3zjfSN9Y32jXc2eDb3jXk2ejZ7Nnw2+I35jfqNfTZ+NiE3Ijf7jfyNIzf9jf6NQY4kN0KOQ45EjkWORo5HjkiOJTcmN0mOJzcoNyk3So5LjkyOTY5Ojk+OKjcrN1COUY4sN1KOU45UjlWOVo5XjliOWY5ajmGOYo5jjmSOZY4tN2aOLjdnjmiOaY5qjmuObI5tjm6Ob45wjnGOco5zjnSOdY52jneOeI55jnqOgY6CjoOOhI6FjoaOh46IjomOio6LjoyOjY6Oji83MDePjpCOMTeRjpKOk44yN5SOlY6WjpeOmI6ZjpqOMzc0N5uONTc2Nzc3nI6djp6On46gjjg3OTc6N6GOoo47N6OOpI6ljjw3po6njqiOqY6qjquOrI49Nz43rY4/N66OQDevjrCOsY6yjrOOtI5BN0I3tY62jkM3t464jrmORDe6jruOvI69jr6Ov47AjkU3RjfBjkc3SDdJN8KOw47EjsWOxo7Hjko3yI7JjsqOSzfLjsyOzY7Ojs+O0I7RjtKO047UjtWO1o5MN9eOTTfYjtmO2o7bjtyO3Y7ejt+OTjdPN+CO4Y5QN+KO447kjlE35Y7mjueO6I7pjuqO645SN1M37I5UN+2OVTfuju+O8I7xjvKO845WN/SO9Y72jlc39474jvmO+o77jvyO/Y7+jkGPQo9Dj0SPRY9Gj0ePSI9YN0mPSo9Lj0yPTY9Oj0+PUI9Rj1KPU49Uj1WPVo9Xj1iPWY9aj2GPYo9jj2SPZY9mj2ePaI9ZN2mPao9rj2yPbY9uj2+PWjdwj3GPco9bN3OPdI91j1w3do93j3iPeY96j4GPgo9dN143g49fN4SPYDeFj4aPh4+Ij4mPio9hN4uPjI+Nj2I3jo+Pj5CPYzeRj5KPk4+Uj5WPlo+Xj5iPZDeZj2U3mo9mN5uPnI+dj56Pn4+gj2c3aDehj6KPaTejj6SPpY9qN6aPp4+oj6mPqo+rj6yPazdsN62PbTeuj243r4+wj7GPso+zj7SPbze1j7aPt4+4j7mPuo+7j7yPvY++j7+PwI/Bj8KPw4/Ej8WPxo/Hj3A3yI/Jj8qPy4/Mj82Pzo9xN8+P0I/Rj9KP04/Uj9WP1o/Xj9iP2Y/aj9uP3I/dj96P34/gj+GP4o/jj+SP5Y/mj+eP6I/pj3I3czfqj+uPdDfsj+2P7o91N++P8I/xj/KP84/0j/WPdjf2j/ePdzf4j3g3+Y/6j/uP/I/9j/6PeTd6N0GQQpB7N0OQRJBFkHw3RpBHkEiQSZBKkEuQTJB9N343TZAhOE6QIjhPkFCQUZBSkFOQVJAjOCQ4VZBWkCU4V5BYkFmQJjhakGGQYpBjkGSQZZBmkCc4KDhnkCk4aJAqOCs4aZBqkCw4LThrkGyQbZBukG+QcJBxkHKQc5B0kHWQdpB3kHiQeZB6kIGQgpCDkISQhZCGkIeQiJCJkIqQi5CMkI2QLjgvOI6Qj5AwOJCQkZCSkDE4k5CUkJWQlpCXkJiQmZAyODM4mpA0OJuQNTickJ2QnpCfkKCQoZA2ODc4opCjkDg4pJA5ODo4Ozg8OD04pZCmkKeQqJCpkD44PziqkEA4q5BBOEI4rJCtkEM4rpBEOEU4RjivkLCQRzixkLKQs5BIOLSQtZC2kLeQuJC5kLqQSThKOLuQSzhMOE04Tji8kL2QvpC/kMCQTzhQOMGQwpDDkMSQxZDGkFE4x5DIkMmQypDLkMyQzZDOkM+Q0JDRkNKQUjjTkNSQ1ZDWkNeQ2JDZkNqQ25DckN2Q3pDfkOCQ4ZDikOOQ5JDlkOaQ55DokOmQ6pDrkOyQ7ZDukO+Q8JDxkPKQ85D0kFM4VDj1kPaQVTj3kPiQ+ZBWOPqQVzj7kPyQ/ZD+kEGRWDhZOEKRWjhDkVs4XDhEkUWRRpFHkV04XjhfOEiRSZFgOEqRS5FMkWE4TZFOkU+RUJFRkVKRU5FiOGM4VJFkOGU4ZjhVkVaRV5FYkVmRWpFnOGg4YZFikWk4Y5FkkWWRajhmkWeRaJFpkWqRa5FskW2RbpFvkWs4bDhtOHCRbjhxkXKRc5F0kW84dZF2kXeReJF5kXqRgZGCkYORhJGFkYaRh5GIkYmRipGLkYyRjZGOkY+RkJGRkZKRk5GUkZWRcDhxOJaRcjhzOJeRmJGZkXQ4mpF1OJuRnJGdkZ6Rn5F2OHc4oJF4OKGReTiikaORpJGlkaaRp5F6OKiRqZGqkXs4q5Gska2RrpGvkbCRsZGykbORtJG1kbaRt5G4kbmRfDh9OLqRu5G8kb2RvpG/kcCRwZHCkcORxJHFkcaRx5HIkcmRypHLkcyRzZHOkc+R0JHRkdKR05HUkdWR1pHXkdiR2ZHakduRfjjckd2R3pEhOd+R4JHhkSI54pHjkeSR5ZHmkeeR6JHpkSM56pEkOeuRJTnske2R7pHvkfCR8ZEmOfKR85H0kSc59ZH2kfeRKDn4kfmR+pH7kfyR/ZH+kUGSKTlCkio5Q5JEkkWSRpJHkkiSSZJKkis5LDktOUuSLjlMkk2SLzkwOTE5MjlOkk+SUJJRklKSMzk0OVOSNTlUkjY5VZJWkleSNzlYkjg5OTlZklqSYZI6OWKSY5Jkkjs5ZZJmkmeSaJJpkmqSa5Jskjw5bZI9OW6Sb5JwknGScpJzknSSdZI+OXaSd5J4knmSepKBkoKSg5KEkoWShpKHkoiSiZKKkouSjJKNko6Sj5KQkpGSkpKTkpSSlZKWkj85l5KYkpmSQDmakpuSnJJBOZ2SnpKfkqCSoZKikqOSpJKlkqaSp5KokqmSqpKrkqySrZKukq+SQjmwkrGSspJDObOStJK1kkQ5tpK3kriSuZK6kruSvJJFOb2SvpJGOb+SwJLBksKSw5LEksWSxpJHOceSyJLJkkg5ypLLksySSTnNks6Sz5LQktGS0pLTkko51JLVkks51pLXktiS2ZLaktuS3JLdkt6S35LgkuGS4pLjkuSS5ZLmkueS6JLpkuqS65Lsku2S7pLvkvCS8ZLykvOS9JL1kvaS95L4kvmSTDlNOfqS+5JOOfyS/ZJPOVA5/pJROUGTQpNDk0STRZNSOVM5RpNUOVU5VjlHk1c5SJNYOUmTSpNZOVo5WzlcOV05S5NMk145XzlgOWE5YjlNk06TT5NQk2M5ZDlRk2U5UpNmOVOTVJNVk2c5VpNXk2g5aTlYk1mTajlak2GTYpNrOWOTZJNlk2aTZ5Nok2mTbDltOWqTbjlvOXA5a5Nsk22TcTluk2+TcjlzOXCTcZN0OXKTc5N0k3WTdpN3k3iTeZN6k4GTgpODk3U5hJOFk4aTh5OIk4mTipOLk4yTjZOOk4+TkJORk5KTk5OUk5WTlpOXk5iTmZOak5uTnJOdk56Tn5Ogk6GTopOjk6STpZOmk6eTqJOpk3Y5dzmqk6uTeDmsk62TeTl6Oa6Tezmvk7CTsZOyk7OTfDl9ObSTfjm1kyE6Ijq2k7eTuJO5k7qTIzokOruTvJMlOr2TvpMmOic6v5PAk8GTwpPDk8STxZMoOik6xpMqOis6LDrHk8iTyZPKk8uTzJMtOi46zZPOky86z5PQk9GTMDrSk9OT1JPVk9aT15PYk9mTMTrakzI6Mzo0OtuT3JPdkzU63pPfkzY64JPhk+KTNzrjk+ST5ZPmk+eT6JPpk+qT65Psk+2T7pPvk/CT8ZPyk/OT9JP1k/aT95P4k/mTODo5Ojo6+pM7OvuT/JP9kzw6/pNBlEKUQ5RElEWURpQ9Oj46R5Q/OkiUQDpJlEqUS5RMlE2UTpRBOk+UUJRRlEI6UpRTlFSUVZRWlFeUWJRZlFqUYZRilGOUZJRllGaUQzpnlGiUaZRqlGuUbJRtlEQ6bpRvlHCUcZRylHOUdJR1lHaUd5R4lHmUepSBlIKUg5SElIWUhpRFOoeUiJSJlIqUi5SMlI2URjpHOo6Uj5RIOpCUkZSSlEk6k5SUlJWUlpSXlJiUmZRKOks6mpSblJyUnZSelJ+UoJShlKKUo5RMOqSUpZSmlE06p5SolKmUqpSrlKyUrZSulK+UsJSxlLKUs5S0lLWUtpS3lLiUuZS6lLuUvJS9lE46Tzq+lL+UUDrAlMGUUTpSOlM6VDrClMOUxJTFlMaUVTpWOseUVzrIlFg6yZTKlMuUWTpaOsyUWzrNlM6Uz5TQlNGU0pTTlFw61JTVlNaU15TYlNmU2pTblNyU3ZTelF0635TglOGU4pTjlOSU5ZReOuaU55TolOmU6pTrlOyU7ZTulO+U8JTxlPKU85T0lPWU9pT3lPiU+ZT6lPuU/JT9lP6UQZVClV86YDpDlUSVYTpFlUaVR5ViOkiVSZVKlUuVTJVNlU6VT5VQlVGVUpVTlWM6VJVVlVaVV5VYlVmVZDpalWGVYpVlOmOVZJVllWY6ZpVnlWiVaZVqlWuVbJVnOm2VbpVoOm+VaTpwlXGVcpVzlXSVdZVqOms6dpV3lWw6eJV5lXqVbTqBlYKVg5WElYWVhpWHlW46bzqIlXA6iZWKlYuVjJWNlY6Vj5WQlZGVkpWTlZSVlZWWlZeVmJWZlZqVm5WclZ2VnpWflaCVoZWilaOVpJWllaaVp5WolamVqpWrlayVcTpyOq2VrpVzOq+VsJWxlXQ6spV1OrOVtJW1lbaVt5V2Onc6uJV4OrmVeTp6Ons6upW7lbyVvZV8On06vpW/lX46wJXBlcKVITvDlSI7xJXFlcaVx5XIlSM7JDvJlSU7JjsnO8qVy5XMlc2VzpUoOyk7KjvPldCVKzvRldKV05UsO9SV1ZXWldeV2JXZldqVLTsuO9uVLzswOzE73JXdld6V35XgleGVMjszO+KV45XkleWV5pXnleiV6ZXqleuV7JXtle6V75U0O/CV8ZXylfOV9JX1lfaV95X4lfmV+pX7lfyV/ZX+lUGWQpZDlkSWRZZGlkeWSJZJlkqWS5ZMlk2WTpZPllCWUZZSllOWVJZVllaWV5ZYljU7NjtZllqWNzthlmKWODs5O2OWZJZllmaWZ5ZolmmWOjtqlmuWOzs8Oz07bJZtlm6Wb5ZwlnGWPjtylnOWdJZ1lnaWd5Z4lnmWepaBloKWg5aEloWWhpaHloiWiZaKlouWPzuMlo2WjpaPlpCWkZZAO0E7kpaTlpSWlZaWlpeWmJaZlpqWm5aclp2WnpaflkI7QzuglkQ7RTtGO6GWopajlqSWpZamlqeWqJaplqqWq5aslq2WrpavlrCWsZaylrOWtJa1lraWt5a4lrmWupa7lryWvZa+lr+WwJbBlsKWRztIO8OWxJZJO8WWxpbHlko7yJbJlsqWy5bMls2WzpZLO0w7z5bQltGWTTvSltOW1JbVltaW15bYltmW2pbbltyW3Zbelt+W4JbhluKW45bkluWW5pbnluiW6ZbqluuW7Jbtlu6W75bwlvGW8pbzlvSW9Zb2lveW+Jb5lvqW+5b8lv2W/pZBl0KXQ5dEl0WXRpdHl0iXSZdKl0uXTJdNl06XT5dQl1GXTjtSl1OXVJdVl1aXV5dYl1mXWpdhl2KXY5dkl2WXZpdnl2iXaZdql2uXbJdtl26Xb5dwl3GXcpdPO3OXdJd1l3aXd5d4l3mXepeBl4KXg5eEl4WXhpeHl4iXiZeKl4uXjJdQO42XjpePl5CXkZeSl1E7UjuTl5SXUzuVl5aXl5dUO5iXmZeal5uXnJedl56XVTufl6CXVjuhl1c7opejl6SXpZeml6eXqJepl6qXq5esl62Xrpevl7CXsZeyl7OXtJe1l7aXt5e4l7mXupe7l7yXvZe+l7+XwJfBl8KXw5fEl8WXxpfHl8iXyZfKl8uXzJfNl86Xz5fQl9GX0pfTl9SX1ZfWl9eX2JfZl9qX25fcl92X3pffl+CX4Zfil+OX5Jfll+aX55fol+mX6pfrl+yX7Zful++X8Jfxl/KX85f0l/WX9pf3l/iX+Zf6l/uXWDv8l/2X/pdBmEKYQ5hEmEWYRphHmEiYSZhKmEuYTJhNmE6YT5hQmFGYWTtSmFOYVJhVmFaYV5haO1iYWZhamFs7YZhimGOYXDtkmGWYZphnmGiYaZhqmF07XjtrmGyYbZhumG+YcJhxmHKYc5h0mHWYdph3mHiYeZh6mIGYgpiDmISYhZiGmIeYiJiJmIqYi5iMmI2YjpiPmJCYkZiSmJOYlJiVmJaYXztgO5eYmJhhO5mYmpibmGI7nJidmJ6Yn5igmKGYophjO2Q7o5hlO6SYZjulmKaYp5iomKmYqphnO2g7q5hpO2o7rJitmGs7bDttO247rpivmLCYsZiymG87cDuzmHE7cjtzO7SYtZi2mHQ7t5i4mHU7dju5mLqYdzu7mLyYvZh4O76Yv5jAmMGYwpjDmMSYeTt6O8WYezt8O307xpjHmMiYyZjKmMuYfjshPMyYzZgiPM6Yz5jQmCM80ZjSmNOY1JjVmNaY15gkPCU82JgmPNmYJzzamNuY3JjdmN6Y35goPOCY4ZjimCk845jkmOWYKjzmmOeY6JjpmOqY65jsmCs87ZjumO+Y8JgsPPGY8pjzmPSY9Zj2mC08LjwvPDA8MTz3mPiYMjwzPPmYNDw1PPqY+5j8mP2YNjw3PP6YODw5PDo8QZlCmUOZRJk7PEWZPDw9PEaZR5k+PEiZSZlKmT88S5lMmU2ZTplPmVCZUZlAPEE8UplCPEM8RDxTmVSZVZlWmVeZWJlFPEY8WZlamUc8YZlimWOZSDxkmWWZZplnmWiZaZlqmUk8SjxrmUs8TDxNPGyZbZlumW+ZcJlxmU48cplzmXSZTzx1mXaZd5lQPHiZeZl6mYGZgpmDmYSZhZmGmYeZiJmJmVE8ipmLmYyZjZmOmY+ZUjxTPFQ8kJlVPJGZkpmTmVY8lJlXPJWZlpmXmZiZmZlYPFk8mplaPJuZWzycmZ2ZnplcPJ+ZoJldPF48oZmimV88o5mkmaWZYDymmaeZqJmpmaqZq5msma2ZrpmvmbCZsZlhPLKZs5m0mbWZtpm3mWI8uJm5mbqZYzy7mbyZvZlkPL6Zv5nAmcGZwpnDmcSZZTzFmcaZZjxnPMeZyJnJmcqZy5nMmc2ZaDzOmc+Z0JlpPNGZ0pnTmWo81JnVmdaZ15nYmdmZ2plrPGw825ltPNyZ3Znemd+Z4JnhmeKZ45luPG885JnlmXA85pnnmeiZcTzpmeqZ65nsme2Z7pnvmXI8czzwmXQ88Zl1PPKZ85n0mfWZ9pn3mXY8dzz4mfmZeDz6mfuZeTx6PPyZ/Zn+mUGaQppDmkSaezx8PEWafTxGmn48R5ohPUiaIj0jPUmaJD1KmkuaTJpNmk6aT5pQmlGaUppTmlSaVZpWmleaWJpZmlqaYZpimiU9Y5pkmmWaZppnmmiaaZomPSc9apprmig9bJptmm6aKT1vmnCacZpymnOadJp1mio9dpp3mniaeZorPXqagZqCmoOahJqFmiw9LT2GmoeaLj2ImomaipovPYuajJqNmo6aj5qQmpGaMD0xPZKaMj2TmjM9lJqVmpaal5qYmpmaND01PZqam5qcmp2anpqfmjY9oJqhmqKao5qkmqWappo3PaeaqJo4PamaOT2qmquarJqtmq6ar5o6PTs9sJqxmjw9spqzmrSaPT0+PbWatpq3mriauZq6mj89QD27mkE9vJpCPb2avpq/msCawZrCmsOaxJrFmsaax5rImsmayprLmsyazZrOms+a0JrRmtKa05rUmtWa1prXmtia2Zramtua3Jrdmt6aQz1EPd+a4JpFPeGa4ppGPUc945rkmuWa5prnmuiaSD1JPUo96ZpLPeqaTD3rmuya7Zrumk0975pOPU898JpQPVE98ZrymvOaUj30mvWa9pr3mvia+Zr6mlM9VD37mvyaVT1WPf2a/ppBm0KbQ5tXPVg9WT1Em0WbWj1Gm0ebSJtbPUmbSptLm0ybTZtOm0+bXD1dPVCbUZtePV89UptTm1SbVZtWm1ebWJtZm1qbYZtim2ObZJtlm2abZ5tom2mbaptrm2ybbZtum2+bcJtxm3KbYD1zm3SbdZt2m3ebeJt5m3qbgZuCm4ObhJuFm4abh5uIm4mbipuLm4ybjZuOm4+bkJuRm5Kbk5uUm5WblpuXm5ibmZuam2E9Yj2bm5ybYz2dm56bn5tkPaCbZT2hm6Kbo5ukm6WbZj1nPaabp5toPWk9qJupm6qbq5usm62baj2um6+bsJtrPbGbspuzm2w9tJu1m7abt5u4m7mbupu7m7ybvZu+m7+bwJvBm8Kbw5vEm8WbxpvHm8ibyZvKm8ubzJvNm86bz5vQm9Gb0pvTm9Sb1ZvWm9eb2JvZm9qb25vcm92b3pvfm+Cb4Zvim+Ob5Jvlm+abbT3nm+ib6Zvqm+ub7Jvtm+6b75vwm/Gb8pvzm/Sb9Zv2m/eb+Jv5m/qb+5v8m/2bbj1vPf6bQZxwPUKcQ5xxPXI9RJxzPUWcRpxHnEicSZx0PXU9SpxLnEycdj1NnE6cT5xQnFGcUpx3PXg9U5xUnHk9VZxWnFecWJxZnFqcYZxinGOcZJxlnGacZ5xonGmcej1qnGucbJxtnG6cb5xwnHs9cZxynHOcdJx1nHacd5x4nHmcepyBnIKcg5yEnIWchpyHnIiciZx8PYqci5yMnI2cjpyPnJCcfT2RnJKck5x+PZSclZyWnCE+l5yYnJmcmpybnJycnZwiPiM+npyfnKCcoZyinKOcpJylnKacp5wkPqicqZyqnKucrJytnK6cr5ywnLGcspyznLSctZy2nLecuJy5nLqcu5y8nL2cvpy/nMCcwZzCnCU+Jj7DnMScJz7FnMacx5woPsicyZzKnMuczJzNnM6cKT4qPs+c0JzRnCs+0pzTnNSc1ZzWnNecLD7YnNmc2pzbnNyc3ZzenN+c4JzhnOKc45zknOWc5pznnOic6ZzqnC0+65zsnO2c7pzvnPCc8ZwuPvKc85z0nPWc9pz3nPic+Zz6nPuc/Jz9nP6cQZ1CnUOdRJ1FnUadR51InUmdSp1LnUydTZ1OnS8+T51QnVGdMD5SnVOdVJ1VnVadV51YnVmdWp1hnWKdY51knWWdZp1nnWidaZ1qnWudbJ1tnW6db51wnXGdcp1znXSddZ12nXedeJ15nXqdgZ2CnYOdhJ2FnYadh52InYmdMT6KnYudjJ2NnY6dj50yPjM+kJ2RnTQ+kp2TnZSdNT6VnTY+lp2XnZidmZ03Pjg+OT6anZudnJ2dnZ6dn52gnaGdop2jnTo+pJ2lnaadOz6nnaidqZ08Pqqdq52sna2drp2vnbCdPT6xnbKds520nbWdtp23nbiduZ26nbudPj4/PrydvZ1APr6dv53AnUE+wZ3CncOdxJ3Fncadx51CPkM+yJ1EPsmdRT7KncudzJ3Nnc6dz51GPkc+0J3RnUg+ST5KPtKdSz5MPk0+053UndWd1p1OPk8+UD7XnVE+Uj5TPtid2Z3anVQ+VT7bnVY+Vz7cnd2dWD7end+d4J1ZPuGd4p3jneSd5Z3mneedWj5bPuidXD5dPl4+6Z3qneud7J3tne6dXz5gPu+d8J1hPvGd8p3znWI+9J31nWM+9p33nfid+Z1kPmU++p1mPvudZz78nf2d/p1oPkGeaT5qPkKeQ55Enms+RZ5GnkeebD5InkmeSp5LnkyeTZ5Onk+ebT5QnlGeUp5TnlSeVZ5WnleeWJ5Znm4+bz5anmGecD5xPmKecj5zPnQ+dT5jnmSeZZ5mnmeedj53Png+eT56Pns+fD5onn0+aZ5+PmqeIT8iP2uebJ4jP22ebp5vniQ/cJ5xnnKec550nnWedp4lPyY/d54nP3ieKD95nnqegZ6CnoOehJ4pPyo/Kz+Fniw/hp6HnoieLT+Jni4/Lz+KnouejJ6NnjA/MT8yPzM/ND81P46ej56QnjY/Nz84Pzk/kZ6SnpOeOj+UnpWelp47P5eemJ6Znpqem56cnp2ePD89P56ePj8/P5+eoJ6hnqKeo56knqWeQD9BP6aep55CP6ieqZ6qnkM/RD9FP6ueRj+snq2eRz9IP0k/rp5KP6+eSz+wnkw/sZ6ynrOetJ5NP04/tZ62nk8/t564nrmeUD+6nruevJ69nr6ev57AnlE/Uj/BnlM/VD9VP8Kew57EnsWexp7HnlY/Vz/InsmeWD/KnsuezJ7Nns6ez57QntGe0p7TntSeWT/VntaeWj/Xnls/2J7Zntqe257cnt2eXD9dP96e355eP+Ce4Z7inl8/457knuWe5p7nnuie6Z5gP2E/6p5iP+ueYz/snu2e7p7vnvCe8Z5kP2U/8p7znmY/9J71nvaeZz/3nvie+Z76nvue/J79nmg/aT/+nmo/QZ9rP0KfQ59En0WfRp9Hn2w/bT9In0mfbj9Kn0ufTJ9vP3A/cT9Nn06fT59Qn1Gfcj9zP1KfdD9Tn3U/VJ9Vn1afV59Yn1mfdj93P1qfYZ94P2KfY59kn3k/ZZ9mn2efaJ9pn2qfa596P3s/bJ9tn3w/fT9un2+fcJ9xn3Kfc59+PyFAdJ91nyJAdp93n3ifI0B5n3qfgZ+Cn4OfhJ+FnyRAJUCGn4efiJ8mQImfip+Ln4yfjZ+OnydAKECPn5CfKUCRn5Kfk58qQJSflZ+Wn5efmJ+Zn5qfK0AsQJufLUCcny5AnZ+en5+foJ+hn6KfL0AwQKOfpJ8xQKWfpp+nnzJAqJ+pn6qfq5+sn62frp8zQDRAr581QLCfNkCxnzdAsp+zn7SftZ84QDlAtp+3nzpAuJ+5n7qfO0C7n7yfvZ++n7+fPEDAnz1APkDBnz9Awp9AQEFAQkBDQERARUBGQEdAw5/En8WfSEDGn8efyJ9JQMmfyp/Ln8yfzZ/On8+fSkDQn9GfS0DSn9Of1J/Vn9af15/Yn9mfTEBNQNqf259OQNyf3Z/en09AUEBRQN+f4J/hn+KfUkBTQFRA459VQFZAV0BYQOSf5Z/mn1lA559aQFtA6J/pn1xA6p9dQF5AX0Drn2BA7J/tn+6f75/wn2FAYkDxn2NAZEBlQGZA8p/zn/Sf9Z/2n2dAaED3n/ifaUD5n/qf+59qQPyf/Z/+n0GgQqBDoESga0BsQEWgbUBuQG9ARqBHoEigSaBKoEugcEBxQEygTaByQE6gc0BPoHRAUKBRoFKgU6BUoFWgVqB1QFegWKBZoFqgdkBhoGKgY6BkoGWgZqB3QGegaKBpoHhAaqBroGygeUBtoG6gb6BwoHGgcqBzoHSgdaB2oHegeKB5oHqggaCCoIOghKCFoHpAe0CGoIegfECIoImgiqB9QIugfkCMoI2gjqCPoJCgIUEiQZGgI0GSoCRBJUGToJSglaCWoJegJkEnQZigmaAoQZqgm6CcoClBnaCeoJ+goKChoKKgo6AqQStBpKAsQaWgLUGmoKegqKCpoKqgq6AuQaygraCuoC9Br6CwoLGgMEGyoLOgtKC1oLagt6C4oDFBMkG5oLqgM0E0QbugvKC9oL6gv6DAoDVBwaDCoMOgxKDFoMagx6DIoMmgyqDLoMygzaDOoM+g0KDRoNKg06DUoNWg1qDXoNig2aDaoNugNkE3Qdyg3aA4Qd6g36DgoDlB4aA6QeKg46DkoOWg5qA7QTxB56A9QeigPkE/QUBB6aDqoOugQUFCQUNB7KDtoO6g76DwoPGgREHyoPOg9KD1oPag96D4oPmgRUH6oEZB+6BHQfyg/aD+oEGhQqFDoUhBRKFFoUahR6FIoUmhSqFLoUyhTaFOoU+hUKFRoVKhU6FUoVWhVqFJQUpBV6FYoVmhWqFhoWKhS0FjoWShZaFMQWahZ6FooU1BaaFqoWuhbKFtoW6hb6FOQU9BcKFQQXGhUUFyoXOhdKF1oXahd6FSQVNBeKF5oVRBeqGBoYKhg6GEoYWhhqGHoYihiaGKoYuhjKGNoY6hj6FVQZChkaGSoZOhlKGVoVZBV0GWoZehWEGYoZmhmqFZQVpBW0GboZyhnaGeoZ+hXEFdQaChXkFBol9BQqJDokSiRaJGokeiYEFIokmiSqJLokyiTaJOok+iUKJRolKiU6JUolWiVqJXoliiWaJaomFBYaJiomOiZKJlomaiZ6JiQWiiaaJqomuibKJtom6ib6JwonGicqJzonSidaJ2oneieKJ5onqigaKCooOihKKFooaih6KIomNBZEGJooqiZUGLooyijaJmQY6ij6KQopGikqKTopSiZ0FoQZWiaUGWopeimKKZopqim6Kcop2iakGeop+ioKJrQUGjQqNDo2xBRKNFo0ajR6NIo0mjSqNtQUujTKNNo06jT6NQo1GjUqNTo1SjVaNuQW9BVqNXo3BBWKNZo1qjcUFho2KjY6Nko2WjZqNno3JBc0Foo3RBaaN1QWqja6Nso22jbqNvo3CjcaNyo3OjdKN1o3ajd6N4o3mjeqOBo4Kjg6OEo4WjhqOHo4ijiaOKo4ujjKONo46jj6OQo5GjdkF3QZKjk6N4QZSjlaN5QXpBlqN7QZejmKOZo5qjm6N8QX1BnKN+QZ2jIUIiQp6jn6MjQiRCoKMlQiZCQaRCpCdCQ6QoQkSkKUJFpEakKkJHpEikSaRKpCtCLEJLpC1CLkIvQkykTaROpE+kUKRRpDBCMUJSpFOkMkJUpFWkVqQzQlekWKRZpFqkYaRipGOkNEI1QmSkNkI3QjhCZaRmpGekaKRppGqkOUJrpGykbaQ6Qm6kb6RwpHGkcqRzpHSkdaR2pHekeKR5pHqkgaSCpIOkO0KEpIWkhqSHpIikiaSKpIukjKSNpI6kj6SQpJGkkqSTpJSklaSWpJekmKSZpJqkm6ScpJ2knqSfpKCkQaVCpUOlRKVFpTxCPUJGpUelPkJIpUmlSqU/QkulTKVNpU6lT6VQpVGlQEJBQlKlQkJDQkRCU6VUpVWlVqVXpVilRUJZpVqlYaVipWOlZKVlpWalZ6VopWmlaqVrpWylbaVupW+lcKVxpXKlRkJzpXSldaV2pXeleKVHQnmleqWBpYKlg6WEpYWlhqWHpYiliaWKpYuljKWNpY6lj6WQpZGlSEKSpZOllKWVpZall6WYpZmlmqWbpZylnaWepZ+loKVBpkKmQ6ZEpkWmRqZHpkimSaZKpkumTKZNpk6mT6ZQplGmUqZTplSmSUJKQlWmVqZLQlemWKZZpkxCWqZhpmKmY6ZkpmWmZqZNQk5CZ6ZPQmimUEJpplFCaqZrpmymbaZSQlNCbqZvpnCmcaZypnOmVEJ0pnWmdqZ3pnimeaZ6poGmgqaDpoSmVUKFpoamh6aIpommiqaLplZCjKaNpo6mj6aQppGmkqaTppSmlaaWppemmKaZppqmm6acpp2mnqZXQp+moKZBp0KnQ6dEp0WnWEJGp0enSKdZQkmnSqdLp1pCTKdNp06nT6dQp1GnUqdbQlxCU6dUp1WnVqdXp1inWadap2GnYqdjp2SnZadmp2enaKdpp2qna6dsp22nbqdvp3Cncadyp3OndKd1p3and6ddQninead6p4GngqeDp15CX0KEp4WnYEKGp4eniKdhQomniqeLp4ynjaeOp4+nYkJjQpCnkaeSp2RCk6eUp5WnlqeXp5inZUKZp5qnm6ecp52nnqefp6CnQahCqEOoRKhFqEaoR6hIqEmoSqhLqGZCZ0JMqE2oTqhPqFCoUahSqFOoVKhVqFaoV6hYqFmoWqhhqGKoY6hkqGWoZqhnqGioaahqqGuobKhtqG6ob6hwqHGocqhzqGhCdKh1qHaod6h4qHmoeqiBqIKog6iEqIWohqiHqIioiaiKqIuojKiNqI6oj6iQqJGokqiTqJSoaUKVqJaol6iYqJmomqibqJyonaieqJ+ooKhBqUKpQ6lEqUWpRqlHqUipSalKqUupTKlNqU6pT6lqQlCpUalSqVOpVKlVqVapV6lYqVmpWqlhqWKpY6lkqWtCZalmqWxCZ6ltQmipaalqqWupbKltqW6pb6lwqXGpcqlzqXSpdal2qXepeKl5qXqpgamCqYOphKmFqYaph6mIqYmpiqmLqYypjamOqY+pbkJvQpCpkalwQpKpk6mUqXFClamWqZepmKmZqZqpm6lyQnNCnKmdqZ6pdEJ1Qp+poKlBqkKqdkJ3QnhCQ6pEqnlCRap6Qkaqe0JHqkiqSapKqkuqTKpNqnxCfUJOqn5CIUMiQyNDT6pQqlGqUqpTqiRDJUNUqlWqJkNWqleqWKonQ1mqWqphqmKqY6pkqmWqKEMpQ2aqKkMrQyxDZ6poqmmqaqprqmyqLUNtqm6qb6ouQ3CqL0NxqjBDcqpzqnSqdap2qneqeKoxQ3mqeqqBqoKqMkODqoSqhaqGqoeqiKqJqoqqi6qMqo2qjqqPqpCqkaqSqpOqlKqVqpaql6qYqpmqmqqbqpyqnaqeqp+qoKpBq0KrQ6tEqzNDNENFq0arNUNHq0irSas2Q0qrS6tMq02rTqtPq1CrN0M4Q1GrOUM6QztDUqtTq1SrVatWq1erPEM9Q1irWas+Q1qrYatiqz9DY6tkq2WrZqtnq2iraatAQ0FDaqtCQ2urQ0Nsq22rbqtvq3CrcatEQ3Krc6t0q0VDdat2q3ereKt5q3qrgauCq4OrhKuFq4arh6uIq4mrRkOKq4urjKuNq46rj6uQq0dDkauSq5OrSEOUq5WrlquXq5irmauaq5urnKudq56rn6ugq0GsQqxDrElDRKxFrEasR6xIrEmsSkNLQ0qsS6xMQ0ysTaxOrE1DT6xQrFGsUqxTrFSsVaxOQ09DVqxQQ1esUUNYrFmsWqxhrGKsY6xSQ2SsZaxmrFNDZ6xorGmsVENqrGusbKxtrG6sb6xwrHGscqxzrHSsdaxVQ3asd6x4rHmseqyBrIKsg6yErIWshqyHrIisiayKrIusjKyNrI6sj6yQrJGskqyTrJSslayWrJesmKyZrJqsm6ycrJ2sVkOerJ+soKxXQ0GtQq1DrVhDRK1FrUatR61IrUmtSq1ZQ1pDS61bQ0ytXENNrU6tT61QrVGtUq1dQ1OtVK1VrVatV61YrVmtWq1hrWKtY61krWWtZq1nrV5DaK1prWqta61srW2tbq1vrXCtca1yrV9DYENzrXStYUN1rXatd61iQ3itea16rYGtgq2DrYStY0NkQ4WtZUOGrWZDh62IrYmtiq2LrYytZ0ONrY6tj62QrZGtkq2TrZStla2WrZetmK2ZrZqtm62crZ2tnq2frWhDoK1BrkKuQ65ErkWuRq5pQ0euSK5JrmpDSq5LrkyuTa5Ork+uUK5RrlKuU65UrlWuVq5XrliuWa5armGuYq5jrmSuZa5mrmtDZ65ormmubENqrmuubK5tQ22ubq5vrnCuca5yrnOubkNvQ3SucEN1rnFDdq53rniuea56roGuckOCroOuhK5zQ4Wuhq6HrnRDiK6Jroqui66Mro2ujq51Q4+ukK6RrpKudkOTrpSula6WrpeumK53Q3hDma6arnlDm66crp2uekOerp+uoK5Br0KvQ69Er3tDfENFr31DRq9+Q0evSK9Jr0qvS69Mr02vTq9Pr1CvUa9Sr1OvVK9Vr1avV69Yr1mvWq9hr2KvY69kr2WvZq9nr2ivaa9qr2uvbK9tr26vIUQiRG+vcK8jRHGvcq8kRCVEJkRzr3Svda92r3eveK8nRChEea8pRHqvKkSBr4Kvg6+Er4Wvhq8rRCxEh6+Iry1Eia+Kr4uvLkSMr42vjq+Pr5Cvka+Sry9EMESTrzFElK8yRJWvlq+Xr5ivma+arzNENESbr5yvNUSdr56vn682RKCvQbBCsEOwRLBFsEawN0Q4REewOUQ6RDtESLBJsEqwS7BMsE2wPEQ9RE6wT7BQsFGwUrBTsFSwVbBWsFewWLBZsFqwYbBisGOwZLBlsGawPkRnsGiwabBqsGuwbLBtsG6wb7BwsHGwcrBzsHSwdbB2sHeweLB5sHqwgbCCsIOwhLCFsIawh7CIsImwirCLsIywjbCOsD9EQESPsJCwQUSRsJKwQkRDRJOwlLCVsJawl7CYsJmwRERFRJqwRkRHREhEm7CcsJ2wnrCfsKCwSURKREGxQrFLREOxRLFFsUxERrFHsUixSbFKsUuxTLFNRE5ETbFPRE6xUERPsVCxUbFSsVOxVLFRRFWxVrFXsVJEWLFZsVqxU0RhsWKxY7FksWWxZrFnsVREVURosVZEV0RYRGmxarFrsWyxbbFusVlEb7FwsXGxcrFzsXSxdbF2sXexeLF5sXqxgbGCsYOxhLGFsYaxh7GIsYmxirGLsYyxjbGOsY+xWkRbRJCxkbFcRJKxk7GUsV1ElbGWsZexmLGZsZqxm7FeRF9EnLFgRJ2xYUSesZ+xoLFBskKyQ7JiRGNERLJFsmRERrJHskiyZURJskqyS7JMsk2yTrJPsmZEULJRslKyU7JnRFSyVbJWsleyWLJZsmhEWrJhsmKyY7JksmWyZrJnsmiyabJqsmuybLJtsm6yb7JwsnGycrJzsmlEdLJ1snayd7J4snmyakR6soGygrKDsoSyhbKGsmtEh7KIsomyirKLsoyyjbKOso+ykLKRspKyk7KUspWylrKXspiymbJsRJqym7Kcsp2ynrKfsqCyQbNCs0OzRLNFs0azR7NIs0mzSrNLs0yzTbNOs0+zULNRs1KzU7NUs21EbkRVs1azb0RXs1izWbNwRFqzYbNis2OzZLNls2azcURyRGezc0Ros3REabNqs2uzbLNts26zdURvs3CzcbN2RHKzc7N0s3dEdbN2s3ezeLN5s3qzgbOCs4OzhLOFs4azeESHs4izibOKs4uzjLN5RI2zjrOPs5CzkbOSs5OzlLOVs5azl7OYs5mzmrObs5yznbOes5+zoLN6REG0QrRDtES0RbRGtHtEfERHtEi0fURJtEq0S7R+REy0TbROtE+0ULRRtFK0IUUiRVO0I0VUtCRFVbRWtFe0WLRZtFq0JUVhtGK0Y7QmRWS0ZbRmtCdFZ7RotGm0arRrtGy0bbQoRW60b7RwtHG0crRztHS0dbR2tHe0eLQpRSpFebR6tCtFgbSCtIO0LEWEtIW0hrSHtIi0ibSKtC1FLkWLtIy0jbQvRY60j7SQtJG0krSTtJS0lbSWtJe0mLSZtJq0m7SctJ20nrSftKC0QbVCtUO1RLVFtUa1R7VItUm1SrVLtUy1TbVOtU+1MEUxRVC1UbUyRVK1U7VUtTNFVbVWtVe1WLVZtVq1YbU0RTVFYrU2RWO1N0VktWW1ZrVntWi1abU4RTlFarVrtTpFbLVttW61O0U8RW+1cLVxtXK1c7V0tT1FPkV1tT9FQEVBRXa1d7V4tXm1erWBtUJFQ0WCtYO1REWEtYW1hrVFRYe1iLWJtYq1i7WMtY21RkVHRY61SEVJRUpFj7WQtZG1krWTtZS1S0WVtZa1l7WYtZm1mrWbtZy1nbWetZ+1oLVBtkK2Q7ZEtkW2RrZHtki2TEVJtkq2S7ZMtk22TrZPtlC2UbZStlO2VLZVtla2V7ZYtlm2WrZhtmK2Y7ZktmW2ZrZntmi2abZqtmu2bLZttm62b7Zwtk1FTkVxtnK2T0VztnS2dbZQRXa2UUV3tni2ebZ6toG2UkVTRYK2VEVVRVZFg7aEtoW2hraHtoi2V0VYRYm2irZZRYu2jLaNtlpFjraPtpC2kbaStpO2lLZbRVxFlbZdRZa2XkWXtpi2mbaatpu2nLZfRZ22nraftmBFoLZBt0K3Q7dEt0W3RrdHt0i3SbdKt0u3TLdNt063YUVPt1C3UbdSt1O3VLdVt2JFVrdXt1i3Y0VZt1q3Ybdit2O3ZLdlt2a3Z7dot2m3ardrt2y3bbdut2+3cLdxt3K3c7d0t3W3ZEVlRXa3d7dmRXi3ebd6t2dFgbeCt4O3hLeFt4a3h7doRWlFiLdqRYm3a0WKt4u3jLeNt2xFjrdtRY+3kLeRt25FkreTt5S3lbeWt5e3mLeZt5q3m7ect523nreft6C3QbhCuEO4RLhFuEa4R7hIuG9FSbhKuEu4TLhNuE64T7hQuFG4UrhTuFS4VbhWuFe4WLhZuFq4YbhiuGO4ZLhluGa4Z7houGm4cEVquGu4bLhxRW24brhvuHC4cbhyuHO4dLh1uHa4d7h4uHm4erhyRYG4c0WCuIO4hLiFuIa4h7h0RYi4ibiKuIu4jLiNuI64j7iQuJG4kriTuJS4lbiWuJe4mLiZuJq4m7icuJ24nrifuKC4QblCuXVFdkVDuUS5d0VFuUa5R7l4RUi5SblKuUu5TLlNuU65eUV6RU+5e0VQuXxFUblSuVO5VLlVuVa5fUVXuVi5WblauWG5YrljuWS5ZblmuWe5aLlpuWq5a7lsuW25brlvuX5FcLlxuXK5c7l0uXW5drkhRne5eLl5uXq5gbmCuYO5hLmFuYa5h7mIuYm5irmLuYy5jbmOuY+5kLmRuZK5k7mUuZW5lrmXuSJGI0aYuZm5JEaauZu5nLklRp25nrmfuaC5QbpCukO6JkYnRkS6RbpGuihGR7pIukm6SrpLuky6KUZNuk66T7oqRlC6UbpSuitGU7pUulW6VrpXuli6WbosRlq6YbpiumO6LUZkumW6Zrpnumi6abouRi9GarprujBGbLptujFGMkZuujNGb7pwunG6crpzujRGNUZ0ujZGdbp2une6eLp5unq6gbqCujdGg7qEuoW6OEaGuoe6iLo5Rom6irqLuoy6jbqOuo+6OkY7RpC6kbqSupO6lLqVupa6l7qYupm6PEY9Rpq6m7o+Rpy6nbqeuj9Gn7qgukG7QrtDu0S7RbtARkFGRrtCRke7Q0ZIu0m7SrtLu0y7TbtERkVGRkZOu0dGT7tQu1G7SEZSu0lGU7tUu1W7VrtXu0pGS0ZYu0xGTUZORlm7Wrthu09GYrtju1BGUUZku2W7UkZmu2e7aLtTRmm7artru2y7bbtuu2+7VEZVRnC7VkZXRlhGcbtyu3O7dLt1u3a7WUZaRne7eLt5u3q7gbuCu4O7hLuFu4a7h7uIu4m7iruLu4y7jbuOu4+7kLuRu5K7k7uUu5W7lruXu5i7mbuau5u7nLudu567n7ugu0G8QrxDvES8RbxGvEe8SLxJvEq8S7xMvE28TrxPvFC8UbxSvFtGXEZTvFS8XUZVvFa8V7xeRli8WbxavGG8YrxjvGS8X0ZgRmW8YUZiRmNGZrxnvGi8abxqvGu8ZEZlRmy8bbxmRm68b7xwvGdGcbxyvHO8dLx1vHa8d7xoRmlGeLxqRnm8a0Z6vIG8gryDvIS8hbxsRoa8h7yIvG1GibyKvIu8bkaMvI28jryPvJC8kbySvG9GcEaTvJS8cUZyRpW8lryXvJi8mbyavHNGm7ycvJ28nryfvKC8Qb10RkK9Q71EvUW9Rr1HvUi9Sb11Rkq9dkZLvUy9Tb1OvU+9UL1RvVK9d0Z4RlO9VL15RlW9Vr1XvXpGWL1ZvVq9Yb1ivWO9ZL17RnxGZb19Rma9fkZnvWi9ab1qvWu9bL0hR229br1vvXC9cb1yvXO9dL11vXa9d714vXm9er2BvYK9g72EvYW9hr0iR4e9iL2JvYq9i72MvY29jr2PvZC9kb2SvZO9lL2VvZa9l72YvZm9mr2bvZy9nb2evZ+9oL1BvkK+Q75EvkW+Rr5Hvki+I0dJvkq+S74kR0y+Tb5Ovk++UL5RvlK+U75UvlW+Vr5Xvli+Wb5avmG+Yr5jvmS+Zb5mvme+aL4lR2m+ar5rviZHbL5tvm6+J0dvvnC+cb5yvnO+dL51vna+KEd3vilHeL55vnq+gb6CvoO+hL6FvipHK0eGvoe+LEeIvom+LUcuR4q+L0eLvoy+jb6Ovo++MEcxR5C+MkeRvjNHkr6TvpS+lb6Wvpe+NEeYvpm+mr6bvpy+nb6evp++oL5Bv0K/Q79Ev0W/Rr9Hv0i/Sb9Kv0u/NUdMv02/Tr9Pv1C/Ub9Sv1O/VL9Vv1a/V79Yv1m/Wr9hv2K/Y79kv2W/Zr9nv2i/ab9qv2u/bL9tv26/b79wv3G/cr9zvzZHdL91v3a/N0d3v3i/eb84R3q/gb+Cv4O/hL+Fv4a/OUeHv4i/OkeJv4q/i7+Mv42/jr+Pv5C/O0eRv5K/k788R5S/lb+Wvz1Hl7+Yv5m/mr+bv5y/nb8+R56/n78/R6C/QEdBwELAQ8BEwEXARsBBR0fASMBJwEJHSsBLwEzAQ0dNwE7AT8BQwFHAUsBTwERHRUdUwEZHVcBWwFfAWMBZwFrAYcBiwGPAZMBlwGbAZ8BowGnAasBrwGzAbcBuwG/AcMBxwHLAc8B0wHXAdsB3wHjAecB6wIHAgsCDwITAR0dIR4XAhsBJR4fAiMCJwEpHisCLwIzAjcCOwI/AkMBLR0xHkcBNR5LATkeTwJTAlcCWwJfAmMBPR1BHmcCawFFHm8CcwJ3AUkeewJ/AoMBBwVNHQsFDwVRHVUdEwVZHRcFXR0bBR8FIwUnBSsFLwVhHWUdMwU3BWkdOwU/BUMFbR1HBUsFTwVTBVcFWwVfBXEddR1jBXkdfR2BHWcFawWHBYsFjwWTBYUdlwWbBZ8FowWnBasFrwWzBbcFuwW/BcMFxwXLBc8F0wXXBdsF3wXjBYkd5wXrBgcGCwYPBhMGFwYbBh8GIwYnBisGLwYzBjcGOwY/BkMGRwZLBk8GUwZXBlsGXwZjBmcGawZvBnMGdwZ7Bn8GgwWNHZEdBwkLCZUdDwkTCRcJmR0bCZ0dHwkjCScJKwkvCaEdpR0zCakdNwmtHTsJPwlDCUcJSwlPCbEdtR1TCVcJuR1bCV8JYwm9HWcJawmHCYsJjwmTCZcJwR3FHZsJyR2fCc0dowmnCasJrwmzCbcJ0R3VHbsJvwnZHcMJxwnLCd0dzwnTCdcJ2wnfCeMJ5wnhHeUd6wnpHe0d8R4HCgsKDwoTChcKGwn1Hh8KIwonCfkeKwovCjMIhSI3CjsKPwpDCkcKSwpPClMIiSJXClsKXwpjCmcKawpvCnMKdwp7CI0gkSJ/CoMIlSEHDQsNDwyZIRMNFw0bDR8MnSEjDScMoSClISsMqSEvDK0hMw03DTsMsSE/DUMMtSC5IUcNSwy9IU8NUw1XDMEhWw1fDWMNZw1rDYcNiw2PDZMNlwzFIZsMySGfDaMNpw2rDa8NswzNINEhtw27DNUhvw3DDccNyw3PDdMN1w3bDd8N4w3nDesOBw4LDNkiDwzdIhMOFw4bDh8OIw4nDOEg5SIrDi8M6SIzDjcOOwztIj8OQw5HDksOTw5TDlcOWwzxIl8M9SJjDPkiZw5rDm8Ocw53DnsM/SJ/DoMNBxEBIQsRDxETEQUhFxEbER8RIxEnESsRLxEzEQkhNxENITsRPxFDEUcRSxFPEVMRVxERIRUhWxFfERkhYxFnEWsRHSGHEYsRjxGTESEhlxGbESUhnxGjESkhpxEtIasRrxGzEbcRuxG/ETEhwxHHEcsRNSHPEdMR1xE5IdsR3xHjEecR6xIHEgsRPSIPEhMSFxIbEUEiHxIjEicSKxIvEjMRRSFJIjcSOxFNIj8SQxJHEVEiSxJPElMSVxJbEl8SYxJnEmsSbxJzEncRVSJ7En8SgxEHFQsVDxVZIV0hExUXFWEhGxUfFSMVZSEnFSsVLxUzFTcVOxU/FWkhbSFDFXEhRxV1IUsVTxVTFVcVWxVfFXkhfSFjFWcVgSFrFYcVixWFIY8VkxWXFZsVnxWjFacViSGrFa8VjSGzFZEhtxW7Fb8VwxXHFcsVlSGZIc8V0xWdIdcVoSGlIakhrSHbFd8V4xXnFesWBxWxIbUiCxW5Ig8VvSITFhcWGxXBIh8WIxXFIicWKxYvFckiMxY3FjsVzSI/FkMWRxZLFk8WUxZXFdEh1SJbFl8WYxXZImcWaxZvFnMWdxZ7Fd0h4SJ/FoMV5SEHGQsZDxnpIRMZFxkbGR8ZIxknGSsZ7SHxIS8Z9SEzGfkhNxk7GT8ZQxlHGUsZQS1ZLZ0tPTWhNLU57TyJQOFBQUF1QVFFVUVhRW1FcUV1RXlFfUWBRYlFjUWRRZVFmUWhRaVFqUWtRbVFvUXBRclF2UXpRfFF9UX5RIlIjUidSKFIpUipSK1ItUjJSPlJCUkNSRFJGUkdSSFJJUkpSS1JNUk5ST1JQUlFSUlJTUlRSVVJWUldSWVJaUl5SX1JhUmJSZFJlUmZSZ1JoUmlSalJrUnBScVJyUnNSdFJ1UndSeFJmVHxUJVUrVS5VOFZNVktXZFdFW2RbJVwlXVVddF18Xn5eM19hX2hfcWAtYW1hdWMhZClkLmUxZTJlOWU7ZTxlRGVOZVBlUmVWZXple2V8ZX5lIWYkZidmLWYvZjBmMWYzZjdmOGY8ZkRmRmZHZkpmUmZWZllmXGZfZmFmZGZlZmZmaGZqZmtmbGZvZnFmcmZ1ZnZmd2Z5ZiFnJmcpZypnLGctZzBnP2dBZ0ZnR2dLZ01nT2dQZ1NnX2dkZ2Znd2dnaGhocGhxaHdoeWh7aH5oJ2ksaUxpd2lBamVqdGp3anxqfmokaydrKWsqazprO2s9a0FrQmtGa0drTGtPa1BrUWtSa1hrJmwnbCpsL2wwbDFsMmw1bDhsOmxAbEFsRWxGbElsSmxVbF1sXmxhbGRsZ2xobHdseGx6bCFtIm0jbW5tW249cnpyMXMndG50dHZ2djh3SHdTd1t4cHgheiJ6ZnopfCEjIiMjIyQjJSMmIycjKCMpIyojKyMsIy0jLiMvIzAjMSMyIzMjNCM1IzYjNyM4IzkjOiM7IzwjPSM+Iz8jQCNBI0IjQyNEI0UjRiNHI0gjSSNKI0sjTCNNI04jTyNQI1EjUiNTI1QjVSNWI1cjWCNZI1ojWyMsIV0jXiNfI2AjYSNiI2MjZCNlI2YjZyNoI2kjaiNrI2wjbSNuI28jcCNxI3IjcyN0I3UjdiN3I3gjeSN6I3sjfCN9IyYi////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////SyFMIX4hfiP//00hXCMAAAAAAAAAAX8Cf38DBAV/f39/f39/BgcIfwkKCwwNDg8QERIAAAECAwQFBgd/CAkKCwwNDg8QEX8SExQVFn8XGBkaGwAAADABMAIwtwAlICYgqAADMK0AFSAlIjz/PCIYIBkgHCAdIBQwFTAIMAkwCjALMAwwDTAOMA8wEDARMLEA1wD3AGAiZCJlIh4iNCKwADIgMyADISsh4P/h/+X/QiZAJiAipSISIwIiByJhIlIipwA7IAYmBSbLJc8lziXHJcYloSWgJbMlsiW9JbwlkiGQIZEhkyGUIRMwaiJrIhoiPSIdIjUiKyIsIggiCyKGIocigiKDIioiKSInIigi4v/SIdQhACIDIrQAXv/HAtgC3QLaAtkCuADbAqEAvwDQAi4iESIPIqQACSEwIMElwCW3JbYlZCZg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BEwETQROBE8EAKwBrASsB6wIrAmsCqwQrBGsEqwTrBSsFawWrBesGawarBusHKwdrCCsJKwsrC2sL6wwrDGsOKw5rDysQKxLrE2sVKxYrFyscKxxrHSsd6x4rHqsgKyBrIOshKyFrIasiayKrIusjKyQrJSsnKydrJ+soKyhrKisqayqrKysr6ywrLisuay7rLysvazBrMSsyKzMrNWs16zgrOGs5KznrOis6qzsrO+s8KzxrPOs9az2rPys/awArQStBq0MrQ2tD60RrRitHK0grSmtLK0trTStNa04rTytRK1FrUetSa1QrVStWK1hrWOtbK1trXCtc610rXWtdq17rXytfa1/rYGtgq2IrYmtjK2QrZytna2krbetwK3BrcStyK3QrdGt063creCt5K34rfmt/K3/rQCuAa4IrgmuC64NrhSuMK4xrjSuN644rjquQK5BrkOuRa5GrkquTK5Nrk6uUK5UrlauXK5drl+uYK5hrmWuaK5prmyucK54rnmue658rn2uhK6FroyuvK69rr6uwK7Ersyuza7PrtCu0a7Yrtmu3K7oruuu7a70rviu/K4HrwivDa8QryyvLa8wrzKvNK88rz2vP69Br0KvQ69Ir0mvUK9cr12vZK9lr3mvgK+Er4ivkK+Rr5WvnK+4r7mvvK/Ar8evyK/Jr8uvza/Or9Sv3K/or+mv8K/xr/Sv+K8AsAGwBLAMsBCwFLAcsB2wKLBEsEWwSLBKsEywTrBTsFSwVbBXsFmwXbB8sH2wgLCEsIywjbCPsJGwmLCZsJqwnLCfsKCwobCisKiwqbCrsKywrbCusK+wsbCzsLSwtbC4sLywxLDFsMewyLDJsNCw0bDUsNiw4LDlsAixCbELsQyxELESsROxGLEZsRuxHLEdsSOxJLElsSixLLE0sTWxN7E4sTmxQLFBsUSxSLFQsVGxVLFVsVixXLFgsXixebF8sYCxgrGIsYmxi7GNsZKxk7GUsZixnLGoscyx0LHUsdyx3bHfseix6bHssfCx+bH7sf2xBLIFsgiyC7IMshSyFbIXshmyILI0sjyyWLJcsmCyaLJpsnSydbJ8soSyhbKJspCykbKUspiymbKasqCyobKjsqWyprKqsqyysLK0ssiyybLMstCy0rLYstmy27LdsuKy5LLlsuay6LLrsuyy7bLusu+y87L0svWy97L4svmy+rL7sv+yALMBswSzCLMQsxGzE7MUsxWzHLNUs1WzVrNYs1uzXLNes1+zZLNls2ezabNrs26zcLNxs3SzeLOAs4Gzg7OEs4WzjLOQs5SzoLOhs6izrLPEs8WzyLPLs8yzzrPQs9Sz1bPXs9mz27Pds+Cz5LPos/yzELQYtBy0ILQotCm0K7Q0tFC0UbRUtFi0YLRhtGO0ZbRstIC0iLSdtKS0qLSstLW0t7S5tMC0xLTItNC01bTctN204LTjtOS05rTstO2077TxtPi0FLUVtRi1G7UctSS1JbUntSi1KbUqtTC1MbU0tTi1QLVBtUO1RLVFtUu1TLVNtVC1VLVctV21X7VgtWG1oLWhtaS1qLWqtau1sLWxtbO1tLW1tbu1vLW9tcC1xLXMtc21z7XQtdG12LXstRC2EbYUthi2JbYstjS2SLZktmi2nLadtqC2pLartqy2sbbUtvC29Lb4tgC3AbcFtyi3Kbcsty+3MLc4tzm3O7dEt0i3TLdUt1W3YLdkt2i3cLdxt3O3dbd8t323gLeEt4y3jbePt5C3kbeSt5a3l7eYt5m3nLegt6i3qbert6y3rbe0t7W3uLfHt8m37Lftt/C39Lf8t/23/7cAuAG4B7gIuAm4DLgQuBi4GbgbuB24JLgluCi4LLg0uDW4N7g4uDm4QLhEuFG4U7hcuF24YLhkuGy4bbhvuHG4eLh8uI24qLiwuLS4uLjAuMG4w7jFuMy40LjUuN2437jhuOi46bjsuPC4+Lj5uPu4/bgEuRi5ILk8uT25QLlEuUy5T7lRuVi5WblcuWC5aLlpuWu5bbl0uXW5eLl8uYS5hbmHuYm5irmNuY65rLmtubC5tLm8ub25v7nBuci5ybnMuc65z7nQudG50rnYudm527ndud654bnjueS55bnouey59Ln1ufe5+Ln5ufq5ALoBugi6Fbo4ujm6PLpAukK6SLpJuku6TbpOulO6VLpVuli6XLpkumW6Z7poumm6cLpxunS6eLqDuoS6hbqHuoy6qLqpuqu6rLqwurK6uLq5uru6vbrEusi62LrZuvy6ALsEuw27D7sRuxi7HLsguym7K7s0uzW7Nrs4uzu7PLs9uz67RLtFu0e7SbtNu0+7ULtUu1i7Ybtju2y7iLuMu5C7pLuou6y7tLu3u8C7xLvIu9C707v4u/m7/Lv/uwC8ArwIvAm8C7wMvA28D7wRvBS8FbwWvBe8GLwbvBy8HbwevB+8JLwlvCe8KbwtvDC8Mbw0vDi8QLxBvEO8RLxFvEm8TLxNvFC8XbyEvIW8iLyLvIy8jryUvJW8l7yZvJq8oLyhvKS8p7yovLC8sbyzvLS8tby8vL28wLzEvM28z7zQvNG81bzYvNy89Lz1vPa8+Lz8vAS9Bb0HvQm9EL0UvSS9LL1AvUi9Sb1MvVC9WL1ZvWS9aL2AvYG9hL2HvYi9ib2KvZC9kb2TvZW9mb2avZy9pL2wvbi91L3Vvdi93L3pvfC99L34vQC+A74Fvgy+Db4QvhS+HL4dvh++RL5Fvki+TL5OvlS+Vb5Xvlm+Wr5bvmC+Yb5kvmi+ar5wvnG+c750vnW+e758vn2+gL6Evoy+jb6PvpC+kb6Yvpm+qL7QvtG+1L7Xvti+4L7jvuS+5b7svgG/CL8Jvxi/Gb8bvxy/Hb9Av0G/RL9Iv1C/Ub9Vv5S/sL/Fv8y/zb/Qv9S/3L/fv+G/PMBRwFjAXMBgwGjAacCQwJHAlMCYwKDAocCjwKXArMCtwK/AsMCzwLTAtcC2wLzAvcC/wMDAwcDFwMjAycDMwNDA2MDZwNvA3MDdwOTA5cDowOzA9MD1wPfA+cAAwQTBCMEQwRXBHMEdwR7BH8EgwSPBJMEmwSfBLMEtwS/BMMExwTbBOME5wTzBQMFIwUnBS8FMwU3BVMFVwVjBXMFkwWXBZ8FowWnBcMF0wXjBhcGMwY3BjsGQwZTBlsGcwZ3Bn8GhwaXBqMGpwazBsMG9wcTByMHMwdTB18HYweDB5MHowfDB8cHzwfzB/cEAwgTCDMINwg/CEcIYwhnCHMIfwiDCKMIpwivCLcIvwjHCMsI0wkjCUMJRwlTCWMJgwmXCbMJtwnDCdMJ8wn3Cf8KBwojCicKQwpjCm8KdwqTCpcKowqzCrcK0wrXCt8K5wtzC3cLgwuPC5MLrwuzC7cLvwvHC9sL4wvnC+8L8wgDDCMMJwwzDDcMTwxTDFcMYwxzDJMMlwyjDKcNFw2jDacNsw3DDcsN4w3nDfMN9w4TDiMOMw8DD2MPZw9zD38Pgw+LD6MPpw+3D9MP1w/jDCMQQxCTELMQwxDTEPMQ9xEjEZMRlxGjEbMR0xHXEecSAxJTEnMS4xLzE6cTwxPHE9MT4xPrE/8QAxQHFDMUQxRTFHMUoxSnFLMUwxTjFOcU7xT3FRMVFxUjFScVKxUzFTcVOxVPFVMVVxVfFWMVZxV3FXsVgxWHFZMVoxXDFccVzxXTFdcV8xX3FgMWExYfFjMWNxY/FkcWVxZfFmMWcxaDFqcW0xbXFuMW5xbvFvMW9xb7FxMXFxcbFx8XIxcnFysXMxc7F0MXRxdTF2MXgxeHF48XlxezF7cXuxfDF9MX2xffF/MX9xf7F/8UAxgHGBcYGxgfGCMYMxhDGGMYZxhvGHMYkxiXGKMYsxi3GLsYwxjPGNMY1xjfGOcY7xkDGQcZExkjGUMZRxlPGVMZVxlzGXcZgxmzGb8ZxxnjGecZ8xoDGiMaJxovGjcaUxpXGmMacxqTGpcanxqnGsMaxxrTGuMa5xrrGwMbBxsPGxcbMxs3G0MbUxtzG3cbgxuHG6MbpxuzG8Mb4xvnG/cYExwXHCMcMxxTHFccXxxnHIMchxyTHKMcwxzHHM8c1xzfHPMc9x0DHRMdKx0zHTcdPx1HHUsdTx1THVcdWx1fHWMdcx2DHaMdrx3THdcd4x3zHfcd+x4PHhMeFx4fHiMeJx4rHjseQx5HHlMeWx5fHmMeax6DHocejx6THpcemx6zHrcewx7THvMe9x7/HwMfBx8jHycfMx87H0MfYx93H5Mfox+zHAMgByATICMgKyBDIEcgTyBXIFsgcyB3IIMgkyCzILcgvyDHIOMg8yEDISMhJyEzITchUyHDIcch0yHjIesiAyIHIg8iFyIbIh8iLyIzIjciUyJ3In8ihyKjIvMi9yMTIyMjMyNTI1cjXyNnI4MjhyOTI9cj8yP3IAMkEyQXJBskMyQ3JD8kRyRjJLMk0yVDJUclUyVjJYMlhyWPJbMlwyXTJfMmIyYnJjMmQyZjJmcmbyZ3JwMnBycTJx8nIycrJ0MnRydPJ1cnWydnJ2sncyd3J4MniyeTJ58nsye3J78nwyfHJ+Mn5yfzJAMoIygnKC8oMyg3KFMoYyinKTMpNylDKVMpcyl3KX8pgymHKaMp9yoTKmMq8yr3KwMrEyszKzcrPytHK08rYytnK4MrsyvTKCMsQyxTLGMsgyyHLQctIy0nLTMtQy1jLWctdy2TLeMt5y5zLuMvUy+TL58vpywzMDcwQzBTMHMwdzCHMIswnzCjMKcwszC7MMMw4zDnMO8w8zD3MPsxEzEXMSMxMzFTMVcxXzFjMWcxgzGTMZsxozHDMdcyYzJnMnMygzKjMqcyrzKzMrcy0zLXMuMy8zMTMxczHzMnM0MzUzOTM7MzwzAHNCM0JzQzNEM0YzRnNG80dzSTNKM0szTnNXM1gzWTNbM1tzW/Ncc14zYjNlM2VzZjNnM2kzaXNp82pzbDNxM3MzdDN6M3szfDN+M35zfvN/c0EzgjODM4UzhnOIM4hziTOKM4wzjHOM841zljOWc5czl/OYM5hzmjOac5rzm3OdM51znjOfM6EzoXOh86JzpDOkc6UzpjOoM6hzqPOpM6lzqzOrc7BzuTO5c7ozuvO7M70zvXO9874zvnOAM8BzwTPCM8QzxHPE88VzxzPIM8kzyzPLc8vzzDPMc84z1TPVc9Yz1zPZM9lz2fPac9wz3HPdM94z4DPhc+Mz6HPqM+wz8TP4M/hz+TP6M/wz/HP88/1z/zPANAE0BHQGNAt0DTQNdA40DzQRNBF0EfQSdBQ0FTQWNBg0GzQbdBw0HTQfNB90IHQpNCl0KjQrNC00LXQt9C50MDQwdDE0MjQydDQ0NHQ09DU0NXQ3NDd0ODQ5NDs0O3Q79Dw0PHQ+NAN0TDRMdE00TjROtFA0UHRQ9FE0UXRTNFN0VDRVNFc0V3RX9Fh0WjRbNF80YTRiNGg0aHRpNGo0bDRsdGz0bXRutG80cDR2NH00fjRB9IJ0hDSLNIt0jDSNNI80j3SP9JB0kjSXNJk0oDSgdKE0ojSkNKR0pXSnNKg0qTSrNKx0rjSudK80r/SwNLC0sjSydLL0tTS2NLc0uTS5dLw0vHS9NL40gDTAdMD0wXTDNMN0w7TENMU0xbTHNMd0x/TINMh0yXTKNMp0yzTMNM40znTO9M80z3TRNNF03zTfdOA04TTjNON04/TkNOR05jTmdOc06DTqNOp06vTrdO007jTvNPE08XTyNPJ09DT2NPh0+PT7NPt0/DT9NP80/3T/9MB1AjUHdRA1ETUXNRg1GTUbdRv1HjUedR81H/UgNSC1IjUidSL1I3UlNSp1MzU0NTU1NzU39To1OzU8NT41PvU/dQE1QjVDNUU1RXVF9U81T3VQNVE1UzVTdVP1VHVWNVZ1VzVYNVl1WjVadVr1W3VdNV11XjVfNWE1YXVh9WI1YnVkNWl1cjVydXM1dDV0tXY1dnV29Xd1eTV5dXo1ezV9NX11ffV+dUA1gHWBNYI1hDWEdYT1hTWFdYc1iDWJNYt1jjWOdY81kDWRdZI1knWS9ZN1lHWVNZV1ljWXNZn1mnWcNZx1nTWg9aF1ozWjdaQ1pTWndaf1qHWqNas1rDWuda71sTWxdbI1szW0dbU1tfW2dbg1uTW6Nbw1vXW/Nb91gDXBNcR1xjXGdcc1yDXKNcp1yvXLdc01zXXONc810TXR9dJ11DXUddU11bXV9dY11nXYNdh12PXZddp12zXcNd013zXfdeB14jXideM15DXmNeZ15vXndc9T3NPR1D5UKBS71N1VOVUCVbBWrZbh2a2Z7dn72dMa8JzwnU8etuCBINXiIiINorIjM+N+47mj9WZO1J0UwRUamBkYbxrz3MagbqJ0omjlYNPClK+WHhZ5llyXnlex2HAY0Zn7Gd/aJdvTnYLd/V4CHr/eiF8nYBugnGC64qTlWtOnVX3ZjRuo3jteluEEIlOh6iX2FJOVypYTF0fYb5hIWJiZdFnRGobbhh1s3XjdrB3On2vkFGUUpSVnyNTrFwydduAQJKYlVtSCFjcWaFcF123XjpfSl93YV9senWGdeB8c32xfYx/VIEhgpGFQYkbi/ySTZZHnMtO904LUPFRT1g3YT5haGE5ZeppEW+ldYZ21naHe6WCy4QA+aeTi5WAVaJbUVcB+bN8uX+1kShQu1NFXOhd0mJuY9pk52QgbqxwW3ndjR6OAvl9kEWS+JJ+TvZOZVD+XfpeBmFXaXGBVIZHjnWTK5peTpFQcGdAaAlRjVKSUqJqvHcQktSeq1IvYPKPSFCpYe1jymQ8aIRqwG+IgaGJlJYFWH1yrHIEdXl9bX6pgIuJdItjkFGdiWJ6bFRvUH06fyOKfFFKYZ17GYtXkoyTrE7TTx5QvlAGUcFSzVJ/U3BXg1iaXpFfdmGsYc5kbGVvZrtm9GaXaIdthXDxcJ90pXTKdNl1bHjseN969npFfZN9FYA/gBuBloNmixWPFZDhkwOYOJhamuibwk9TVTpYUVljW0ZcuGASYkJosGjoaKpuTHV4ds54PXr7fGt+fH4IiqGKP4yOlsSd5FPpU0pUcVT6VtFZZFs7XKte92I3ZUVlcmWgZq9nwWm9bPx1kHZ+dz96lH8DgKGAj4Hmgv2C8IPBhTGItIiligP5nI8uk8eWZ5jYmhOf7VSbZfJmj2hAejeMYJ3wVmRXEV0GZrFozWj+bih0nojkm2hsBPmomptPbFFxUZ9SVFvlXVBgbWDxYqdjO2XZc3p6o4aijI+XMk7hWwhinGfcdNF504OHirKK6I1OkEuTRpjTXuhp/4XtkAX5oFGYW+xbY2H6aD5rTHAvdNh0oXtQf8WDwImrjNyVKJkuUl1g7GICkIpPSVEhU9lY417gZjhtmnDCctZzUHvxgFuUZlObY2t/Vk6AUEpY3lgqYCdh0GLQaUGbj1sYfbGAX4+kTtFQrFSsVQxboF3nXSplTmUhaEtq4XKOdu93Xn35f6CBToXfhgOPTo/KkAOZVZqrmxhORU5dTsdO8U93Uf5SQFPjU+VTjlQUVnVXolfHW4dd0F78YdhiUWW4Z+lny2lQa8Zr7GtCbJ1ueHDXcpZzA3S/d+l3dnp/fQmA/IEFggqC34JiiDOL/IzAjhGQsZBkkraS0plFmumc152cnwtXQFzKg6CXq5e0nhtUmHqkf9mIzY7hkABYSFyYY596rlsTX3l6rnqOgqyOJlA4UvhSd1MIV/NicmMKa8NtN3elU1dzaIV2jtWVOmfDanBvbYrMjkuZBvl3ZnhrtIw8mwf561MtV05ZxmP7aepzRXi6esV6/nx1hI+Jc401kKiV+1JHV0d1YHvMgx6SCPlYaktRS1KHUh9i2Gh1aZmWxVCkUuRSw2GkZTlo/2l+dEt7uYLrg7KJOYvRj0mZCfnKTpdZ0mQRZo5qNHSBeb15qYJ+iH+IX4kK+SaTC0/KUyVgcWJybBp9Zn2YTmJR3HevgAFPDk92UYBR3FVoVjtX+lf8VxRZR1mTWcRbkFwOXfFdfl7MX4Bi12XjZR5nH2deZ8toxGhfajprI2x9bIJsx22YcyZ0KnSCdKN0eHV/dYF473hBeUd5SHl6eZV7AH26fYh/BoAtgIyAGIpPi0iMd40hkyST4phRmQ6aD5plmpKeyn12TwlU7mJUaNGRq1U6UQv5DPkcWuZhDfnPYv9iDvkP+RD5EfkS+RP5o5AU+RX5FvkX+Rj5/ooZ+Rr5G/kc+ZZmHflWcR75H/njliD5T2N6Y1dTIfmPZ2Bpc24i+Td1I/kk+SX5DX0m+Sf5cojKVhhaKPkp+Sr5K/ks+UNOLflnUUhZ8GcQgC75c1l0Xppkynn1X2xgyGJ7Y+db11uqUi/5dFkpXxJgMPkx+TL5WXQz+TT5Nfk2+Tf5OPnRmTn5Ovk7+Tz5Pfk++T/5QPlB+UL5Q/nDb0T5Rfm/gbKP8WBG+Uf5ZoFI+Un5P1xK+Uv5TPlN+U75T/lQ+VH56VolintnEH1S+VP5VPlV+Vb5V/n9gFj5Wfk8XOVsP1O6bhpZNoM5TrZORk+uVRhXx1hWX7dl5mWAarVrTW7td+96HnzefcuGkogykVuTu2S+b3pzuHVUkFZVTVe6YdRkx2bhbVtubW+5b/B1Q4C9gUGFg4nHilqLH5OTbFN1VHsPjl2QEFUCWFhYYl4HYp5k4Gh2ddZ8s4fonuNOiFduVydZDVyxXDZehV80YuFks3P6gYuIuIyKltuehVu3X7NgElAAUjBSFlc1WFdYDlxgXPZci12mXpJfvGARY4ljF2RDaPlowmrYbSFu1G7kb/5x3HZ5d7F5O3oEhKmJ7YzzjUiOA5AUkFOQ/ZBNk3aW3JfSawZwWHKicmhzY3e/eeR7m36Ai6lYx2BmZf1lvmaMbB5xyXFajBOYbU6Bet1OrFHNUdVSDFSnYXFnUGjfaB5tfG+8dbN35Xr0gGOEhZJcUZdlXGeTZ9h1x3pzg1r5RowXkC2Yb1zAgZqCQZBvkA2Sl1+dXVlqyHF7dkl75IUEiyeRMJqHVfZhW/lpdoV/P4a6h/iIj5Bc+Rtt2XDec2F9PYRd+WqR8Zle+YJOdVMEaxJrPnAbci2GHp5MUqOPUF3lZCxlFmvrb0N8nH7NhWSJvYnJYtiBH4jKXhdnam38cgV0b3SCh96Qhk8NXaBfCoS3UaBjZXWuTgZQaVHJUYFoEWqufLF853xvgtKKG4/PkbZPN1H1UkJU7F5uYT5ixWXaav5vKnnchSOIrZVimmqal57OnptSxmZ3ax1wK3lij0KXkGEAYiNlI29JcYl09H1vgO6EJo8jkEqTvVEXUqNSDG3IcMKIyV6CZa5rwm8+fHVz5E42T/lWX/m6XLpdHGCycy17mn/Of0aAHpA0kvaWSJcYmGGfi0+nb655tJG3lt5SYPmIZMRk02pebxhwEHLndgGABoZchu+NBY8yl2+b+p11nox4f3mgfcmDBJN/npOe1orfWARfJ2cncM90YHx+gCFRKHBicsp4wozajPSM95aGTtpQ7lvWXpllznFCdq13SoD8hHyQJ5uNn9hYQVpiXBNq2m0Pbzt2L303fh6FOInkk0uWiVLSZfNntGlBbZxuD3AJdGB0WXUkdmt4LItemG1RLmJ4lpZPK1AZXeptuH0qj4tfRGEXaGH5hpbSUouA3FHMUV5pHHq+ffGDdZbaTylSmFMPVA5VZVynYE5nqGhsbYFy+HIGdIN0YvnidWx8eX+4f4mDz4jhiMyR0JHilsmbHVR+b9BxmHT6haqOo5ZXnJ+el2fLbTN06IEWlyx4y3oge5J8aWRqdPJ1vHjoeKyZVJu7nt5bVV4gb5yBq4OIkAdOTVMpWtJdTl9iYT1jaWb8Zv9uK29jcJ53LIQThTuIE49FmTucHFW5Yitnq2wJg2qJepehToRZ2F/ZXxtnsn1Uf5KCK4O9gx6PmZDLV7lZklrQWydmmmeFaM9rZHF1f7eM44yBkEWbCIGKjEyWQJqlnl9bE2wbc/J233YMhKpRk4lNUZVRyVLJaJRsBHcgd7997H1il7WexW4RhaVRDVR9VA5mnWYnaZ9uv3aRdxeDwoSfh2mRmJL0nIKIrk+SUd9Sxlk9XlVheGR5ZK5m0Gchas1r22tfcmFyQXQ4d9t3F4C8ggWDAIsoi4yMKGeQbGdy7nZmd0Z6qZ1/a5JsIlkmZ5mEb1OTWJlZ317PYzRmc2c6bitz13rXgiiT2VLrXa5hy2EKYsdiq2TgZVlpZmvLayFx93NddUZ+HoICg2qFo4q/jCeXYZ2oWNieEVAOUjtUT1WHZXZsCn0LfV6AioaAle+W/1KVbGlyc1SaWj5cS11MX65fKme2aGNpPG5Ebgl3c3yOf4eFDov3j2GX9J63XLZgDWGrYU9l+2X8ZRFs72yfc8lz4X2UlcZbHIcQi11SWlPNYg9ksmQ0ZzhqymzAc550lHuVfBt+ioE2goSF64/5lsGZNE9KU81T21PMYixkAGWRZcNp7mxYb+1zVHUiduR2/HbQePt4LHlGfSyC4IfUjxKY75jDUtRipWQkblFvfHbLjbGRYpLumkObI1CNUEpXqFkoXEded18/Yj5luWXBZQlmi2ecacJuxXghfaqAgIErgrOCoYSMhiqKF4umkDKWkJ8NUPNPY/n5V5hf3GKSY29nQ24ZccN2zIDagPSI9YgZieCMKY9NkWqWL09wTxtez2ciaH12fnZEm2FeCmppcdRxanVk+UF+Q4XphdyYEE9Pe3B/pZXhUQZetWg+bE5s22yvcsR7A4PVbDp0+1CIUsFY2GSXaqd0VnaneBeG4pU5l2X5XlMBX4qLqI+vj4qQJVKld0mcCJ8ZTgJQdVFbXHdeHmY6ZsRnxWizcAF1xXXJed16J48gmQia3U8hWDFY9ltuZmVrEW16bn1v5HMrdemD3IgTiVyLFI8PT9VQEFNcU5NbqV8NZ495eYEvgxSFB4mGiTmPO4+lmRKcLGd2TvhPSVkBXO9c8FxnY9Jo/XCicSt0K37shAKHIpDSkvOcDU7YTu9PhVBWUm9SJlSQVOBXK1lmWlpbdVvMW5xeZvl2Yndlp2VubaVuNnImez98Nn9QgVGBmoFAgpmCqYMDiqCM5oz7jHSNuo3okNyRHJZEltmZ55wXUwZSKVR0VrNYVFluWf9fpGFuYhBmfmwaccZ2iXzefBt9rILBjPCWZ/lbTxdff1/CYildC2faaHx4Q35snRVOmVAVUypTUVODWWJah16yYIphSWJ5YpBlh2enadRr1mvXa9hruGxo+TV0+nUSeJF41XnYeYN8y33hf6WAPoHCgfKDGofoiLmKbIu7jBmRXpfbmDufrFYqW2xfjGWzaq9rXG3xbxVwXXKtc6eM04w7mJFhN2xYgAGaTU6LTptO1U46TzxPf0/fT/9Q8lP4UwZV41XbVutYYlkRWutb+lsEXPNdK16ZXx1gaGOcZa9l9mf7Z61oe2uZbNdsI24JcEVzAng+eUB5YHnBeel7F31yfYaADYKOg9GEx4bfiFCKXoodi9yMZo2tj6qQ/JjfmZ2eSlJp+RRnavmYUCpScVxjZVVsynMjdZ11l3uchHiRMJd3TpJkumtecamFCU5r+Uln7mgXbp+CGIVriPdjgW8Skq+YCk63UM9QH1FGVapVF1ZAWxlc4Fw4XopeoF7CXvNgUWhhalhuPXJAcsBy+HZlebF71H/ziPSJc4phjN6MHJdeWL10/YzHVWz5YXoifXKCcnIfdSV1bfkZe4VY+1i8XY9etl6QX1VgkmJ/Y01lkWbZZvhmFmjyaIByXnRue2591n1yf+WAEoKvhX+Jk4odkOSSzZ4gnxVZbVktXtxgFGZzZpBnUGzFbV9v83epeMaEy5Erk9lOylBIUYRVC1ujW0difmXLZTJufXEBdER0h3S/dGx2qnnafVV+qH96gbOBOYIahuyHdYrjjXiQkZIllE2ZrptoU1FcVGnEbCltK24MgpuFO4ktiqqK6pZnn2FSuWaya5Z+/ocNjYOVXZYdZYlt7nFu+c5X01msWydg+mAQYh9mX2Ypc/lz23YBd2x7VoBygGWBoIqSkRZO4lJyaxdtBXo5ezB9b/mwjOxTL1ZRWLVbD1wRXOJdQGKDYxRkLWazaLxsiG2vbh9wpHDScSZ1j3WOdRl2EXvgeyt8IH05fSyFbYUHhjSKDZBhkLWQt5L2lzea109sXF9nkW2ffIx+FosWjR+Qa1v9XQ1kwIRckOGYh3OLW5pgfmfebR+KpooBkAyYN1Jw+VFwjniWk3CI15HuT9dT/VXaVoJX/VjCWohbq1zAXCVeAWENYktiiGMcZDZleGU5aoprNGwZbTFv53HpcnhzB3SydCZ2YXfAeVd66nq5fI99rH1hfp5/KYExg5CE2oTqhZaIsIqQiziPQpCDkGyRlpK5kouWp5aoltaWAJcImJaZ05oam9RTflgZWXBbv1vRbVpvn3EhdLl0hYD9g+Fdh1+qX0Jg7GUSaG9pU2qJazVt823jc/52rHdNexR9I4EcgkCD9IRjhWKKxIqHkR6TBpi0mQxiU4jwj2WSB10nXWldX3SdgWiH1W/+YtJ/NolyiR5OWE7nUN1SR1N/YgdmaX4FiF6WjU8ZUzZWy1mkWjhcTlxNXAJeEV9DYL1lL2ZCZr5n9Gccc+J3OnnFf5SEzYSWiWaKaYrhilWMeoz0V9RbD19vYO1iDWmWa1xuhHHSe1WHWIv+jt+Y/pg4T4FP4U97VCBauFs8YbBlaGb8cTN1XnkzfU6B44GYg6qFzoUDhwqKq46bj3H5xY8xWaRb5luJYOlbC1zDX4FscvnxbQtwGnWvgvaKwE5BU3P52ZYPbJ5OxE9SUV5VJVroXBFiWXK9gqqD/oZZiB2KP5bFlhOZCZ1dnQpYs1y9XURe4WAVYeFjAmolbgKRVJNOmBCcd5+JW7hcCWNPZkhoPHfBlo2XVJifm6FlAYvLjryVNVWpXNZdtV6XZkx29IPHldNYvGLOciid8E4uWQ9gO2aDa+d5Jp2TU8BUw1cWXRth1mavbY14foKYlkSXhFN8YpZjsm0KfkuBTZj7akx/r50anl9OO1C2URxZ+WD2YzBpOnI2gHT5zpExX3X5dvkEfeWCb4S7hOWFjY53+W9PePl5+eRYQ1tZYNpjGGVtZZhmevlKaSNqC20BcGxx0nUNdrN5cHp7+Yp/fPlEiX35k4vAkX2WfvkKmQRXoV+8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lPuWWphrmB6ZB1IqYphiWW1kdsp6wHt2fWBTvlyXXjhvuXCYfBGXjpvenqVjemR2hwFOlU6tTlxQdVBIVMNZmltAXq1e916BX8VgOmM/ZXRlzGV2Znhm/mdoaYlqY2tAbMBt6G0fbl5uHnChcI5z/XM6dVt3h3iOeQt6fXq+fI59R4ICiuqKnowtkUqR2JFmksySIJMGl1aXXJcCmA6fNlKRUnxVJFgdXh9fjGDQY69o329teSx7zYG6hf2I+IpEjo2RZJablj2XTJhKn85PRlHLUalSMlYUX2tfqmPNZOllQWb6ZvlmHWedaNdo/WkVb25vZ3HlcSpyqnQ6d1Z5WnnfeSB6lXqXfN98RH1wfoeA+4WkhlSKv4qZjYGOIJBtkOORO5bVluWcz2UHfLONw5NYWwpcUlPZYh1zJ1CXW55fsGBrYdVo2W0udC56Qn2cfTF+a4EqjjWOfpMYlFBPUFfmXadeK2NqfztOT0+PT1pQ3VnEgGpUaFT+VU9ZmVveXdpeXWYxZ/FnKmjobDJtSm6Nb7dw4HOHdUx8An0sfaJ9H4LbhjuKhYpwjYqOM48xkE6RUpFElNCZ+XqlfMpPAVHGUchX71v7XFlmPWpabZZu7G8McW9143oiiCGQdZDLlv+ZAYMtTvJORojNkX1T22praUFseoSeWI5h/mbvYt1wEXXHdVJ+uIRJiwiNS07qU6tUMFdAV9dfAWMHY29kL2XoZXpmnWezZ2JrYGyabCxv5XcleEl5V3kZfaKAAoHzgZ2Ct4IYh4yK/PkEjb6NcpD0dhl6N3pUfneAB1XUVXVYL2MiZElmS2ZtaJtphGslbbFuzXNodKF0W3W5deF2HneLd+Z5CX4dfvuBL4WXiDqK0YzrjrCPMpCtk2OWc5YHl4RP8VPqWclaGV5OaMZ0vnXpeZJ6o4HthuqMzI3tj59lFWf9+fdXV2/dfS+P9pPGlrVf8mGEbxROmE8fUMlT31VvXe5dIWtka8t4mnv++UmOyo5ukEljPmRAd4R6L5N/lGqfsGSvb+ZxqHTadMR6EnyCfrJ8mH6aiwqNfZQQmUyZOVLfW+ZkLWcufe1Qw1N5WFhhWWH6Yaxl2XqSi5aLCVAhUHVSMVU8WuBecF80YV5lDGY2ZqJmzWnEbjJvFnMhdpN6OYFZgtaDvIS1UPBXwFvoW2lfoWMmeLV93IMhhceR9ZGKUfVnVnusjMRRu1m9YFWGHFD/+VRSOlx9YRpi02LyZKVlzG4gdgqBYI5flruW305DU5hVKVndXcVkyWz6bZRzf3obgqaF5IwQjneQ55HhlSGWxpf4UfJUhlW5X6RkiG+0fR+PTY81lMlQFly+bPttG3W7dz18ZHx5isKKHli+WRZed2NScop1a3fciryMEo/zXnRm+G19gMGDy4pRl9abAPpDUv9mlW3vbuB95ooukF6Q1JodUn9S6FSUYYRi22KiaBJpWmk1apJwJnFdeAF5DnnSeQ16loB4gtWCSYNJhYKMhY1ikYuRrpHDT9FW7XHXdwCH+In4W9ZfUWeokOJTWlj1W6RggWFgZD1+cIAlhYOSrmSsUBRdAGecWL1iqGMOaXhpHmprbrp2y3m7gimEz4qojf2PEpFLkZyREJMYk5qT25Y2mg2cEU5cdV15+npRe8l7Ln7EhFmOdI74jhCQJWY/aUN0+lEuZ9yeRVHgX5Zs8oddiHeItGC1gQOEBY3WUzlUNFY2WjFcinDgf1qABoHtgaONiZFfmvKddFDETqBT+2AsbmRciE8kUORV2VxfXmVglGi7bMRtvnHUdfR1YXYaekl6x337fW5/9IGphhyPyZazmVKfR1LFUu2YqokDTtJnBm+1T+JblWeIbHhtG3QneN2RfJPEh+R5MXrrX9ZOpFQ+Va5YpVnwYFNi1mI2Z1VpNYJAlrGZ3ZksUFNTRFV8VwH6WGIC+uJka2bdZ8Fv728idDh0F4o4lFFUBlZmV0hfmmFOa1hwrXC7fZWKalkrgaJjCHc9gKqMVFgtZLtplVsRXm9uA/pphUxR8FMqWSBgS2GGa3Bs8Gwee86A1ILGjbCQsZgE+sdkpG+RZARlTlEQVB9XDopfYXZoBfrbdVJ7cX0akAZYzGl/gSqJAJA5mHhQV1msWZViD5Aqm11heXLWlWFXRlr0XYpirWT6ZHdn4mw+bSxyNnQ0eHd/rYLbjReYJFJCV39nSHLjdKmMpo8RkiqWa1HtU0xjaU8EVZZgV2WbbH9tTHL9chd6h4mdjG1fjm/5cKiBDmG/T09QQWJHcsd76H3pf02QrZcZmraMaldzXrBnDYRViiBUFltjXuJeCl+DZbqAPYWJlVuWSE8FUw1TD1OGVPpUA1cDXhZgm2KxYlVjBvrhbGZtsXUyeN6AL4HegmGEsoSNiBKJC5Dqkv2YkZtFXrRm3WYRcAZyB/r1T31Sal9TYVNnGWoCb+J0aHloiHmMx5jEmEOawVQfelNp94pKjKiYrpl8X6tisnWudquIf5BCljlTPF/FX8xszHNidYt1Rnv+gp2ZT048kAtOVU+mUw9ZyF4wZrNsVXR3g2aHwIxQkB6XFZzRWHhbUIYUi7Sd0ltoYI1g8WVXbCJvo28acFV/8H+RlZKVUJbTl3JSRI/9UStUuFRjVYpVu2q1bdh9ZoKckneWeZ4IVMhU0nbkhqSV1JVclqJOCU/uWeZa911SYJdibWdBaIZsL244f5uAKoII+gn6BZilTlVQs1STV1pZaVuzW8hhd2l3bSNw+YfjiXKK54qCkO2ZuJq+UjhoFlB4Xk9nR4NMiKtOEVSuVuZzFZH/lwmZV5mZmVNWn1hbhjGKsmH2antz0o5Ha6qWV5pVWQBya41pl9RP9FwmX/hhW2brbKtwhHO5c/5zKXdNd0N9Yn0jfjeCUogK+uKMSZJvmFFbdHpAiAGYzFrgT1RTPln9XD5jeW35cgWBB4Gig8+SMJioTkRREVKLV2JfwmzObgVwUHCvcJJx6XNpdEqDoodhiAiQopCjk6iZblFXX+BgZ2GzZlmFSo6vkYuXTk6STnxU1Vj6WH1ZtVwnXzZiSGIKZmdm62tpbc9tVm74bpRv4G/pb11w0HIldFp04HSTdlx5ynwefuGApoJrhL+EToZfhnSHd4tqjKyTAJhlmNFgFmJ3kVpaD2b3bT5uP3RCm/1f2mAPe8RUGF9ebNNsKm3YcAV9eYYMijudFlOMVAVbOmprcHV1jXm+ebGC74NxikGLqIx0lwv69GQrZbp4u3hrejhOmlVQWaZbe16jYNtjYWtlZlNoGW5lcbB0CH2EkGmaJZw7bdFuPnNBjMqV8FFMXqhfTWD2YDBhTGFDZkRmpWnBbF9uyW5ib0xxnHSHdsF7J3xSg1eHUZCNlsOeL1PeVvteil9iYJRg92FmZgNnnGruba5vcHBqc2p+voE0g9SGqIrEjINScnOWW2tqBJTuVIZWXVtIZYVlyWafaI1txm07crSAdZFNmq9PGVCaUw5UPFSJVcVVP16MXz1nZnHdcwWQ21LzUmRYzlgEcY9x+3GwhROKiGaohadVhGZKcTGESVOZVcFrWV+9X+5jiWZHcfGKHY++nhFPOmTLcGZ1Z4ZkYE6L+J1HUfZRCFM2bfiA0Z4VZiNrmHDVdQNUeVwHfRaKIGs9a0ZrOFRwYD1t1X8IgtZQ3lGcVWtWzVbsWQlbDF6ZYZhhMWJeZuZmmXG5cbpxp3KneQB6sn9wigKsA6wFrAasC6wMrA2sDqwPrBisHqwfrCGsIqwjrCWsJqwnrCisKawqrCusLqwyrDOsNKz+//7//v/+//7//v81rDasN6w6rDusPaw+rD+sQaxCrEOsRKxFrEasR6xIrEmsSqxMrE6sT6xQrFGsUqxTrFWs/v/+//7//v/+//7/VqxXrFmsWqxbrF2sXqxfrGCsYaxirGOsZKxlrGasZ6xorGmsaqxrrGysbaxurG+scqxzrHWsdqx5rHusfKx9rH6sf6yCrIesiKyNrI6sj6yRrJKsk6yVrJasl6yYrJmsmqybrJ6soqyjrKSspaymrKesq6ytrK6ssayyrLOstKy1rLast6y6rL6sv6zArMKsw6zFrMasx6zJrMqsy6zNrM6sz6zQrNGs0qzTrNSs1qzYrNms2qzbrNys3azerN+s4qzjrOWs5qzprOus7azurPKs9Kz3rPis+az6rPus/qz/rAGtAq0DrQWtB60IrQmtCq0LrQ6tEK0SrROtFK0VrRatF60ZrRqtG60drR6tH60hrSKtI60krSWtJq0nrSitKq0rrS6tL60wrTGtMq0zrf7//v/+//7//v/+/zatN605rTqtO609rT6tP61ArUGtQq1DrUatSK1KrUutTK1NrU6tT61RrVKtU61VrVatV63+//7//v/+//7//v9ZrVqtW61crV2tXq1frWCtYq1krWWtZq1nrWitaa1qrWutbq1vrXGtcq13rXitea16rX6tgK2DrYStha2GrYetiq2LrY2tjq2PrZGtkq2TrZStla2WrZetmK2ZrZqtm62erZ+toK2hraKto62lraatp62oramtqq2rraytra2ura+tsK2xrbKts620rbWttq24rbmtuq27rbytva2+rb+twq3DrcWtxq3Hrcmtyq3Lrcytza3Orc+t0q3UrdWt1q3Xrdit2a3ardut3a3erd+t4a3ireOt5a3mreet6K3preqt663sre2t7q3vrfCt8a3yrfOt9K31rfat9636rfut/a3+rQKuA64ErgWuBq4HrgquDK4Org+uEK4RrhKuE64VrhauF64YrhmuGq4brhyu/v/+//7//v/+//7/Ha4erh+uIK4hriKuI64kriWuJq4nriiuKa4qriuuLK4tri6uL64yrjOuNa42rjmuO648rv7//v/+//7//v/+/z2uPq4/rkKuRK5HrkiuSa5Lrk+uUa5SrlOuVa5XrliuWa5arluuXq5irmOuZK5mrmeuaq5rrm2ubq5vrnGucq5zrnSuda52rneueq5+rn+ugK6BroKug66GroeuiK6Jroqui66Nro6uj66QrpGukq6TrpSula6WrpeumK6Zrpqum66crp2unq6frqCuoa6irqOupK6lrqaup66orqmuqq6rrqyura6urq+usK6xrrKus660rrWutq63rriuua66rruuv67BrsKuw67Frsaux67Irsmuyq7Lrs6u0q7TrtSu1a7Wrteu2q7brt2u3q7fruCu4a7iruOu5K7lruau567pruqu7K7uru+u8K7xrvKu8671rvau9675rvqu+679rv6u/64ArwGvAq8DrwSvBa/+//7//v/+//7//v8GrwmvCq8LrwyvDq8PrxGvEq8TrxSvFa8WrxevGK8ZrxqvG68crx2vHq8fryCvIa8iryOv/v/+//7//v/+//7/JK8lryavJ68orymvKq8rry6vL68xrzOvNa82rzevOK85rzqvO68+r0CvRK9Fr0avR69Kr0uvTK9Nr06vT69Rr1KvU69Ur1WvVq9Xr1ivWa9ar1uvXq9fr2CvYa9ir2OvZq9nr2ivaa9qr2uvbK9tr26vb69wr3Gvcq9zr3Svda92r3eveK96r3uvfK99r36vf6+Br4Kvg6+Fr4avh6+Jr4qvi6+Mr42vjq+Pr5Kvk6+Ur5avl6+Yr5mvmq+br52vnq+fr6Cvoa+ir6OvpK+lr6avp6+or6mvqq+rr6yvra+ur6+vsK+xr7Kvs6+0r7Wvtq+3r7qvu6+9r76vv6/Br8Kvw6/Er8Wvxq/Kr8yvz6/Qr9Gv0q/Tr9Wv1q/Xr9iv2a/ar9uv3a/er9+v4K/hr/7//v/+//7//v/+/+Kv46/kr+Wv5q/nr+qv66/sr+2v7q/vr/Kv86/1r/av96/5r/qv+6/8r/2v/q//rwKwA7D+//7//v/+//7//v8FsAawB7AIsAmwCrALsA2wDrAPsBGwErATsBWwFrAXsBiwGbAasBuwHrAfsCCwIbAisCOwJLAlsCawJ7ApsCqwK7AssC2wLrAvsDCwMbAysDOwNLA1sDawN7A4sDmwOrA7sDywPbA+sD+wQLBBsEKwQ7BGsEewSbBLsE2wT7BQsFGwUrBWsFiwWrBbsFywXrBfsGCwYbBisGOwZLBlsGawZ7BosGmwarBrsGywbbBusG+wcLBxsHKwc7B0sHWwdrB3sHiwebB6sHuwfrB/sIGwgrCDsIWwhrCHsIiwibCKsIuwjrCQsJKwk7CUsJWwlrCXsJuwnbCesKOwpLClsKawp7CqsLCwsrC2sLewubC6sLuwvbC+sL+wwLDBsMKww7DGsMqwy7DMsM2wzrDPsNKw/v/+//7//v/+//7/07DVsNaw17DZsNqw27DcsN2w3rDfsOGw4rDjsOSw5rDnsOiw6bDqsOuw7LDtsO6w77DwsP7//v/+//7//v/+//Gw8rDzsPSw9bD2sPew+LD5sPqw+7D8sP2w/rD/sACxAbECsQOxBLEFsQaxB7EKsQ2xDrEPsRGxFLEVsRaxF7EasR6xH7EgsSGxIrEmsSexKbEqsSuxLbEusS+xMLExsTKxM7E2sTqxO7E8sT2xPrE/sUKxQ7FFsUaxR7FJsUqxS7FMsU2xTrFPsVKxU7FWsVexWbFasVuxXbFesV+xYbFisWOxZLFlsWaxZ7FosWmxarFrsWyxbbFusW+xcLFxsXKxc7F0sXWxdrF3sXqxe7F9sX6xf7GBsYOxhLGFsYaxh7GKsYyxjrGPsZCxkbGVsZaxl7GZsZqxm7GdsZ6xn7GgsaGxorGjsaSxpbGmsaexqbGqsauxrLGtsa6xr7GwsbGxsrGzsbSxtbG2sbexuLH+//7//v/+//7//v+5sbqxu7G8sb2xvrG/scCxwbHCscOxxLHFscaxx7HIscmxyrHLsc2xzrHPsdGx0rHTsdWx/v/+//7//v/+//7/1rHXsdix2bHasdux3rHgseGx4rHjseSx5bHmseex6rHrse2x7rHvsfGx8rHzsfSx9bH2sfex+LH6sfyx/rH/sQCyAbICsgOyBrIHsgmyCrINsg6yD7IQshGyErITshayGLIashuyHLIdsh6yH7IhsiKyI7IksiWyJrInsiiyKbIqsiuyLLItsi6yL7IwsjGyMrIzsjWyNrI3sjiyObI6sjuyPbI+sj+yQLJBskKyQ7JEskWyRrJHskiySbJKskuyTLJNsk6yT7JQslGyUrJTslSyVbJWsleyWbJasluyXbJesl+yYbJismOyZLJlsmayZ7JqsmuybLJtsm6yb7JwsnGycrJzsnayd7J4snmyerJ7sn2yfrJ/soCygbKCsoOyhrKHsoiyirKLsoyyjbKOsv7//v/+//7//v/+/4+ykrKTspWylrKXspuynLKdsp6yn7KisqSyp7Kosqmyq7Ktsq6yr7KxsrKys7K1srayt7L+//7//v/+//7//v+4srmyurK7sryyvbK+sr+ywLLBssKyw7LEssWyxrLHssqyy7LNss6yz7LRstOy1LLVstay17Lastyy3rLfsuCy4bLjsuey6bLqsvCy8bLysvay/LL9sv6yArMDswWzBrMHswmzCrMLswyzDbMOsw+zErMWsxezGLMZsxqzG7Mdsx6zH7MgsyGzIrMjsySzJbMmsyezKLMpsyqzK7Mssy2zLrMvszCzMbMyszOzNLM1szazN7M4szmzOrM7szyzPbM+sz+zQLNBs0KzQ7NEs0WzRrNHs0izSbNKs0uzTLNNs06zT7NQs1GzUrNTs1ezWbNas12zYLNhs2KzY7Nms2izarNss22zb7Nys3OzdbN2s3ezebN6s3uzfLN9s36zf7OCs4azh7OIs4mzirOLs42z/v/+//7//v/+//7/jrOPs5GzkrOTs5WzlrOXs5izmbOas5uznLOds56zn7Ois6OzpLOls6azp7Ops6qzq7Ots/7//v/+//7//v/+/66zr7Ows7GzsrOzs7SztbO2s7ezuLO5s7qzu7O8s72zvrO/s8CzwbPCs8OzxrPHs8mzyrPNs8+z0bPSs9Oz1rPYs9qz3LPes9+z4bPis+Oz5bPms+ez6bPqs+uz7LPts+6z77Pws/Gz8rPzs/Sz9bP2s/ez+LP5s/qz+7P9s/6z/7MAtAG0ArQDtAS0BbQGtAe0CLQJtAq0C7QMtA20DrQPtBG0ErQTtBS0FbQWtBe0GbQatBu0HbQetB+0IbQitCO0JLQltCa0J7QqtCy0LbQutC+0MLQxtDK0M7Q1tDa0N7Q4tDm0OrQ7tDy0PbQ+tD+0QLRBtEK0Q7REtEW0RrRHtEi0SbRKtEu0TLRNtE60T7RStFO0VbRWtFe0WbRatFu0XLRdtF60X7RitGS0ZrT+//7//v/+//7//v9ntGi0abRqtGu0bbRutG+0cLRxtHK0c7R0tHW0drR3tHi0ebR6tHu0fLR9tH60f7SBtIK0/v/+//7//v/+//7/g7SEtIW0hrSHtIm0irSLtIy0jbSOtI+0kLSRtJK0k7SUtJW0lrSXtJi0mbSatJu0nLSetJ+0oLShtKK0o7SltKa0p7SptKq0q7SttK60r7SwtLG0srSztLS0trS4tLq0u7S8tL20vrS/tMG0wrTDtMW0xrTHtMm0yrTLtMy0zbTOtM+00bTStNO01LTWtNe02LTZtNq027TetN+04bTitOW057TotOm06rTrtO608LTytPO09LT1tPa097T5tPq0+7T8tP20/rT/tAC1AbUCtQO1BLUFtQa1B7UItQm1CrULtQy1DbUOtQ+1ELURtRK1E7UWtRe1GbUatR21HrUftSC1IbUitSO1JrUrtSy1LbUutS+1MrUztTW1NrU3tTm1OrU7tTy1PbU+tT+1QrVGtf7//v/+//7//v/+/0e1SLVJtUq1TrVPtVG1UrVTtVW1VrVXtVi1WbVatVu1XrVitWO1ZLVltWa1Z7VotWm1arX+//7//v/+//7//v9rtWy1bbVutW+1cLVxtXK1c7V0tXW1drV3tXi1ebV6tXu1fLV9tX61f7WAtYG1grWDtYS1hbWGtYe1iLWJtYq1i7WMtY21jrWPtZC1kbWStZO1lLWVtZa1l7WYtZm1mrWbtZy1nbWetZ+1orWjtaW1prWntam1rLWtta61r7Wytba1t7W4tbm1urW+tb+1wbXCtcO1xbXGtce1yLXJtcq1y7XOtdK107XUtdW11rXXtdm12rXbtdy13bXetd+14LXhteK147XkteW15rXntei16bXqteu17bXute+18LXxtfK187X0tfW19rX3tfi1+bX6tfu1/LX9tf61/7UAtgG2ArYDtgS2BbYGtge2CLYJtgq2C7YMtg22DrYPthK2E7YVtha2F7YZthq2G7Ycth22/v/+//7//v/+//7/HrYftiC2IbYitiO2JLYmtie2KLYptiq2K7Ytti62L7YwtjG2MrYztjW2NrY3tji2ObY6tv7//v/+//7//v/+/zu2PLY9tj62P7ZAtkG2QrZDtkS2RbZGtke2SbZKtku2TLZNtk62T7ZQtlG2UrZTtlS2VbZWtle2WLZZtlq2W7Zctl22XrZftmC2YbZitmO2ZbZmtme2abZqtmu2bLZttm62b7ZwtnG2crZztnS2dbZ2tne2eLZ5tnq2e7Z8tn22frZ/toC2gbaCtoO2hLaFtoa2h7aItom2iraLtoy2jbaOto+2kLaRtpK2k7aUtpW2lraXtpi2mbaatpu2nraftqG2orajtqW2prantqi2qbaqtq22rravtrC2sraztrS2tba2tre2uLa5trq2u7a8tr22vra/tsC2wbbCtsO2xLbFtsa2x7bItsm2yrbLtsy2zbbOts+20LbRttK207bVtta217bYttm22rbbtty23bb+//7//v/+//7//v/ett+24LbhtuK247bktuW25rbntui26bbqtuu27Lbttu6277bxtvK287b1tva297b5tvq2/v/+//7//v/+//7/+7b8tv22/rb/tgK3A7cEtwa3B7cItwm3CrcLtwy3DbcOtw+3ELcRtxK3E7cUtxW3FrcXtxi3Gbcatxu3HLcdtx63H7cgtyG3IrcjtyS3Jbcmtye3Krcrty23LrcxtzK3M7c0tzW3Nrc3tzq3PLc9tz63P7dAt0G3QrdDt0W3RrdHt0m3SrdLt023TrdPt1C3UbdSt1O3VrdXt1i3Wbdat1u3XLddt163X7dht2K3Y7dlt2a3Z7dpt2q3a7dst223brdvt3K3dLd2t3e3eLd5t3q3e7d+t3+3gbeCt4O3hbeGt4e3iLeJt4q3i7eOt5O3lLeVt5q3m7edt563n7eht6K3o7ekt6W3prent6q3rrevt7C3sbeyt7O3tre3t7m3ure7t7y3vbe+t7+3wLfBt/7//v/+//7//v/+/8K3w7fEt8W3xrfIt8q3y7fMt823zrfPt9C30bfSt9O31LfVt9a317fYt9m32rfbt9y33bf+//7//v/+//7//v/et9+34Lfht+K347fkt+W35rfnt+i36bfqt+u37rfvt/G38rfzt/W39rf3t/i3+bf6t/u3/rcCuAO4BLgFuAa4CrgLuA24DrgPuBG4ErgTuBS4FbgWuBe4GrgcuB64H7gguCG4IrgjuCa4J7gpuCq4K7gtuC64L7gwuDG4MrgzuDa4Org7uDy4Pbg+uD+4QbhCuEO4RbhGuEe4SLhJuEq4S7hMuE24TrhPuFC4UrhUuFW4VrhXuFi4WbhauFu4XrhfuGG4YrhjuGW4ZrhnuGi4abhquGu4brhwuHK4c7h0uHW4drh3uHm4erh7uH24frh/uIC4gbiCuIO4hLiFuIa4h7iIuIm4iriLuIy4jriPuJC4kbiSuJO4lLiVuJa4l7iYuJm4mribuJy4nbieuJ+4/v/+//7//v/+//7/oLihuKK4o7ikuKW4prinuKm4qriruKy4rbiuuK+4sbiyuLO4tbi2uLe4ubi6uLu4vLi9uP7//v/+//7//v/+/764v7jCuMS4xrjHuMi4ybjKuMu4zbjOuM+40bjSuNO41bjWuNe42LjZuNq427jcuN644LjiuOO45LjluOa457jquOu47bjuuO+48bjyuPO49Lj1uPa497j6uPy4/rj/uAC5AbkCuQO5BbkGuQe5CLkJuQq5C7kMuQ25DrkPuRC5EbkSuRO5FLkVuRa5F7kZuRq5G7kcuR25HrkfuSG5IrkjuSS5JbkmuSe5KLkpuSq5K7ksuS25LrkvuTC5MbkyuTO5NLk1uTa5N7k4uTm5Ork7uT65P7lBuUK5Q7lFuUa5R7lIuUm5SrlLuU25TrlQuVK5U7lUuVW5VrlXuVq5W7lduV65X7lhuWK5Y7lkuWW5ZrlnuWq5bLluuW+5cLlxuXK5c7l2uXe5ebl6uXu5fbn+//7//v/+//7//v9+uX+5gLmBuYK5g7mGuYi5i7mMuY+5kLmRuZK5k7mUuZW5lrmXuZi5mbmauZu5nLmduZ65/v/+//7//v/+//7/n7mguaG5ormjuaS5pbmmuae5qLmpuaq5q7muua+5sbmyubO5tbm2ube5uLm5ubq5u7m+ucC5wrnDucS5xbnGuce5yrnLuc2507nUudW51rnXudq53LnfueC54rnmuee56bnqueu57bnuue+58LnxufK587n2ufu5/Ln9uf65/7kCugO6BLoFuga6B7oJugq6C7oMug26DroPuhC6EboSuhO6FLoWuhe6GLoZuhq6G7ocuh26HrofuiC6IboiuiO6JLoluia6J7oouim6Kroruiy6Lbouui+6MLoxujK6M7o0ujW6Nro3ujq6O7o9uj66P7pBukO6RLpFuka6R7pKuky6T7pQulG6UrpWule6Wbpaulu6Xbpeul+6YLphumK6Y7pmumq6a7psum26brpvuv7//v/+//7//v/+/3K6c7p1una6d7p5unq6e7p8un26frp/uoC6gbqCuoa6iLqJuoq6i7qNuo66j7qQupG6krr+//7//v/+//7//v+TupS6lbqWupe6mLqZupq6m7qcup26nrqfuqC6obqiuqO6pLqluqa6p7qquq26rrqvurG6s7q0urW6trq3urq6vLq+ur+6wLrBusK6w7rFusa6x7rJusq6y7rMus26zrrPutC60brSutO61LrVuta617rautu63Lrdut6637rguuG64rrjuuS65brmuue66Lrpuuq667rsuu267rrvuvC68bryuvO69Lr1uva697r4uvm6+rr7uv26/rr/ugG7ArsDuwW7BrsHuwi7CbsKuwu7DLsOuxC7ErsTuxS7FbsWuxe7Gbsauxu7Hbseux+7IbsiuyO7JLsluya7J7souyq7LLstuy67L7swuzG7Mrszuze7Obs6uz+7QLtBu0K7Q7tGu0i7SrtLu0y7TrtRu1K7/v/+//7//v/+//7/U7tVu1a7V7tZu1q7W7tcu127Xrtfu2C7Yrtku2W7Zrtnu2i7abtqu2u7bbtuu2+7cLtxu/7//v/+//7//v/+/3K7c7t0u3W7drt3u3i7ebt6u3u7fLt9u367f7uAu4G7gruDu4S7hbuGu4e7ibuKu4u7jbuOu4+7kbuSu5O7lLuVu5a7l7uYu5m7mrubu5y7nbueu5+7oLuhu6K7o7ulu6a7p7upu6q7q7utu667r7uwu7G7sruzu7W7tru4u7m7uru7u7y7vbu+u7+7wbvCu8O7xbvGu8e7ybvKu8u7zLvNu867z7vRu9K71LvVu9a717vYu9m72rvbu9y73bveu9+74Lvhu+K747vku+W75rvnu+i76bvqu+u77Lvtu+6777vwu/G78rvzu/S79bv2u/e7+rv7u/27/rsBvAO8BLwFvAa8B7wKvA68ELwSvBO8GbwavCC8IbwivCO8JrwovCq8K7wsvC68L7wyvDO8Nbz+//7//v/+//7//v82vDe8Obw6vDu8PLw9vD68P7xCvEa8R7xIvEq8S7xOvE+8UbxSvFO8VLxVvFa8V7xYvFm8/v/+//7//v/+//7/WrxbvFy8XrxfvGC8YbxivGO8ZLxlvGa8Z7xovGm8arxrvGy8bbxuvG+8cLxxvHK8c7x0vHW8drx3vHi8ebx6vHu8fLx9vH68f7yAvIG8gryDvIa8h7yJvIq8jbyPvJC8kbySvJO8lryYvJu8nLydvJ68n7yivKO8pbymvKm8qryrvKy8rbyuvK+8sry2vLe8uLy5vLq8u7y+vL+8wbzCvMO8xbzGvMe8yLzJvMq8y7zMvM680rzTvNS81rzXvNm82rzbvN283rzfvOC84bzivOO85LzlvOa857zovOm86rzrvOy87bzuvO+88LzxvPK887z3vPm8+rz7vP28/rz/vAC9Ab0CvQO9Br0IvQq9C70MvQ29Dr0PvRG9Er0TvRW9Fr0XvRi9Gb0avRu9HL0dvf7//v/+//7//v/+/x69H70gvSG9Ir0jvSW9Jr0nvSi9Kb0qvSu9Lb0uvS+9ML0xvTK9M700vTW9Nr03vTi9Ob3+//7//v/+//7//v86vTu9PL09vT69P71BvUK9Q71EvUW9Rr1HvUq9S71NvU69T71RvVK9U71UvVW9Vr1XvVq9W71cvV29Xr1fvWC9Yb1ivWO9Zb1mvWe9ab1qvWu9bL1tvW69b71wvXG9cr1zvXS9db12vXe9eL15vXq9e718vX29fr1/vYK9g72FvYa9i72MvY29jr2PvZK9lL2WvZe9mL2bvZ29nr2fvaC9ob2ivaO9pb2mvae9qL2pvaq9q72sva29rr2vvbG9sr2zvbS9tb22vbe9ub26vbu9vL29vb69v73AvcG9wr3DvcS9xb3Gvce9yL3Jvcq9y73Mvc29zr3PvdC90b3SvdO91r3Xvdm92r3bvd293r3fveC94b3iveO95L3lvea9573oveq9673sve297r3vvfG9/v/+//7//v/+//7/8r3zvfW99r33vfm9+r37vfy9/b3+vf+9Ab4CvgS+Br4Hvgi+Cb4Kvgu+Dr4PvhG+Er4Tvv7//v/+//7//v/+/xW+Fr4Xvhi+Gb4avhu+Hr4gviG+Ir4jviS+Jb4mvie+KL4pviq+K74svi2+Lr4vvjC+Mb4yvjO+NL41vja+N744vjm+Or47vjy+Pb4+vj++QL5BvkK+Q75Gvke+Sb5Kvku+Tb5PvlC+Ub5SvlO+Vr5Yvly+Xb5evl++Yr5jvmW+Zr5nvmm+a75svm2+br5vvnK+dr53vni+eb56vn6+f76BvoK+g76Fvoa+h76Ivom+ir6Lvo6+kr6TvpS+lb6Wvpe+mr6bvpy+nb6evp++oL6hvqK+o76kvqW+pr6nvqm+qr6rvqy+rb6uvq++sL6xvrK+s760vrW+tr63vri+ub66vru+vL69vr6+v77AvsG+wr7DvsS+xb7Gvse+yL7Jvsq+y77Mvs2+zr7PvtK+077+//7//v/+//7//v/Vvta+2b7avtu+3L7dvt6+377hvuK+5r7nvui+6b7qvuu+7b7uvu++8L7xvvK+8770vvW+/v/+//7//v/+//7/9r73vvi++b76vvu+/L79vv6+/74AvwK/A78EvwW/Br8Hvwq/C78Mvw2/Dr8PvxC/Eb8SvxO/FL8Vvxa/F78avx6/H78gvyG/Ir8jvyS/Jb8mvye/KL8pvyq/K78svy2/Lr8vvzC/Mb8yvzO/NL81vza/N784vzm/Or87vzy/Pb8+vz+/Qr9Dv0W/Rr9Hv0m/Sr9Lv0y/Tb9Ov0+/Ur9Tv1S/Vr9Xv1i/Wb9av1u/XL9dv16/X79gv2G/Yr9jv2S/Zb9mv2e/aL9pv2q/a79sv22/br9vv3C/cb9yv3O/dL91v3a/d794v3m/er97v3y/fb9+v3+/gL+Bv4K/g7+Ev4W/hr+Hv4i/ib+Kv4u/jL+Nv46/j7+Qv5G/kr+Tv5W/lr+Xv5i/mb+av5u/nL+dv/7//v/+//7//v/+/56/n7+gv6G/or+jv6S/pb+mv6e/qL+pv6q/q7+sv62/rr+vv7G/sr+zv7S/tb+2v7e/uL/+//7//v/+//7//v+5v7q/u7+8v72/vr+/v8C/wb/Cv8O/xL/Gv8e/yL/Jv8q/y7/Ov8+/0b/Sv9O/1b/Wv9e/2L/Zv9q/27/dv96/4L/iv+O/5L/lv+a/57/ov+m/6r/rv+y/7b/uv++/8L/xv/K/87/0v/W/9r/3v/i/+b/6v/u//L/9v/6//78AwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwBDAEcASwBPAFMAVwBbAF8AYwBnAGsAbwBzAHcAewB/AIMAhwCLAI8AkwCXAJsAnwCjAKcAqwCvALMAtwC7AL8AwwDHAMsAzwDTANcA2wDfAOMA5wDrAO8A9wD7AP8BAwEHAQsBDwETARcBGwEfASMBJwErAS8BMwE3ATsBPwFDAUsBTwFTAVcBWwFfAWcBawFvA/v/+//7//v/+//7/XcBewF/AYcBiwGPAZMBlwGbAZ8BqwGvAbMBtwG7Ab8BwwHHAcsBzwHTAdcB2wHfAeMB5wP7//v/+//7//v/+/3rAe8B8wH3AfsB/wIDAgcCCwIPAhMCFwIbAh8CIwInAisCLwIzAjcCOwI/AksCTwJXAlsCXwJnAmsCbwJzAncCewJ/AosCkwKbAp8CowKnAqsCrwK7AscCywLfAuMC5wLrAu8C+wMLAw8DEwMbAx8DKwMvAzcDOwM/A0cDSwNPA1MDVwNbA18DawN7A38DgwOHA4sDjwObA58DpwOrA68DtwO7A78DwwPHA8sDzwPbA+MD6wPvA/MD9wP7A/8ABwQLBA8EFwQbBB8EJwQrBC8EMwQ3BDsEPwRHBEsETwRTBFsEXwRjBGcEawRvBIcEiwSXBKMEpwSrBK8EuwTLBM8E0wTXBN8E6wTvBPcE+wT/BQcFCwUPBRMFFwUbBR8FKwU7BT8FQwVHBUsFTwVbBV8H+//7//v/+//7//v9ZwVrBW8FdwV7BX8FgwWHBYsFjwWbBasFrwWzBbcFuwW/BccFywXPBdcF2wXfBecF6wXvB/v/+//7//v/+//7/fMF9wX7Bf8GAwYHBgsGDwYTBhsGHwYjBicGKwYvBj8GRwZLBk8GVwZfBmMGZwZrBm8GewaDBosGjwaTBpsGnwarBq8Gtwa7Br8GxwbLBs8G0wbXBtsG3wbjBucG6wbvBvMG+wb/BwMHBwcLBw8HFwcbBx8HJwcrBy8HNwc7Bz8HQwdHB0sHTwdXB1sHZwdrB28Hcwd3B3sHfweHB4sHjweXB5sHnwenB6sHrwezB7cHuwe/B8sH0wfXB9sH3wfjB+cH6wfvB/sH/wQHCAsIDwgXCBsIHwgjCCcIKwgvCDsIQwhLCE8IUwhXCFsIXwhrCG8Idwh7CIcIiwiPCJMIlwibCJ8IqwizCLsIwwjPCNcI2wjfCOMI5wjrCO8I8wj3CPsI/wkDCQcJCwkPCRMJFwv7//v/+//7//v/+/0bCR8JJwkrCS8JMwk3CTsJPwlLCU8JVwlbCV8JZwlrCW8Jcwl3CXsJfwmHCYsJjwmTCZsL+//7//v/+//7//v9nwmjCacJqwmvCbsJvwnHCcsJzwnXCdsJ3wnjCecJ6wnvCfsKAwoLCg8KEwoXChsKHworCi8KMwo3CjsKPwpHCksKTwpTClcKWwpfCmcKawpzCnsKfwqDCocKiwqPCpsKnwqnCqsKrwq7Cr8KwwrHCssKzwrbCuMK6wrvCvMK9wr7Cv8LAwsHCwsLDwsTCxcLGwsfCyMLJwsrCy8LMws3CzsLPwtDC0cLSwtPC1MLVwtbC18LYwtnC2sLbwt7C38LhwuLC5cLmwufC6MLpwurC7sLwwvLC88L0wvXC98L6wv3C/sL/wgHDAsMDwwTDBcMGwwfDCsMLww7DD8MQwxHDEsMWwxfDGcMawxvDHcMewx/DIMMhwyLDI8MmwyfDKsMrwyzDLcMuwy/DMMMxwzLD/v/+//7//v/+//7/M8M0wzXDNsM3wzjDOcM6wzvDPMM9wz7DP8NAw0HDQsNDw0TDRsNHw0jDScNKw0vDTMNNw/7//v/+//7//v/+/07DT8NQw1HDUsNTw1TDVcNWw1fDWMNZw1rDW8Ncw13DXsNfw2DDYcNiw2PDZMNlw2bDZ8Nqw2vDbcNuw2/DccNzw3TDdcN2w3fDesN7w37Df8OAw4HDgsODw4XDhsOHw4nDisOLw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/w8HDwsPDw8TDxcPGw8fDyMPJw8rDy8PMw83DzsPPw9DD0cPSw9PD1MPVw9bD18Paw9vD3cPew+HD48Pkw+XD5sPnw+rD68Psw+7D78Pww/HD8sPzw/bD98P5w/rD+8P8w/3D/sP+//7//v/+//7//v//wwDEAcQCxAPEBMQFxAbEB8QJxArEC8QMxA3EDsQPxBHEEsQTxBTEFcQWxBfEGMQZxBrE/v/+//7//v/+//7/G8QcxB3EHsQfxCDEIcQixCPEJcQmxCfEKMQpxCrEK8QtxC7EL8QxxDLEM8Q1xDbEN8Q4xDnEOsQ7xD7EP8RAxEHEQsRDxETERcRGxEfEScRKxEvETMRNxE7ET8RQxFHEUsRTxFTEVcRWxFfEWMRZxFrEW8RcxF3EXsRfxGDEYcRixGPEZsRnxGnEasRrxG3EbsRvxHDEccRyxHPEdsR3xHjEesR7xHzEfcR+xH/EgcSCxIPEhMSFxIbEh8SIxInEisSLxIzEjcSOxI/EkMSRxJLEk8SVxJbEl8SYxJnEmsSbxJ3EnsSfxKDEocSixKPEpMSlxKbEp8SoxKnEqsSrxKzErcSuxK/EsMSxxLLEs8S0xLXEtsS3xLnEusS7xL3EvsS/xMDEwcTCxMPExMTFxP7//v/+//7//v/+/8bEx8TIxMnEysTLxMzEzcTOxM/E0MTRxNLE08TUxNXE1sTXxNjE2cTaxNvE3MTdxN7E38T+//7//v/+//7//v/gxOHE4sTjxOTE5cTmxOfE6MTqxOvE7MTtxO7E78TyxPPE9cT2xPfE+cT7xPzE/cT+xALFA8UExQXFBsUHxQjFCcUKxQvFDcUOxQ/FEcUSxRPFFcUWxRfFGMUZxRrFG8UdxR7FH8UgxSHFIsUjxSTFJcUmxSfFKsUrxS3FLsUvxTHFMsUzxTTFNcU2xTfFOsU8xT7FP8VAxUHFQsVDxUbFR8VLxU/FUMVRxVLFVsVaxVvFXMVfxWLFY8VlxWbFZ8VpxWrFa8VsxW3FbsVvxXLFdsV3xXjFecV6xXvFfsV/xYHFgsWDxYXFhsWIxYnFisWLxY7FkMWSxZPFlMWWxZnFmsWbxZ3FnsWfxaHFosWjxaTFpcWmxafFqMWqxavFrMWtxa7Fr8WwxbHFssWzxbbF/v/+//7//v/+//7/t8W6xb/FwMXBxcLFw8XLxc3Fz8XSxdPF1cXWxdfF2cXaxdvF3MXdxd7F38XixeTF5sXnxf7//v/+//7//v/+/+jF6cXqxevF78XxxfLF88X1xfjF+cX6xfvFAsYDxgTGCcYKxgvGDcYOxg/GEcYSxhPGFMYVxhbGF8Yaxh3GHsYfxiDGIcYixiPGJsYnxinGKsYrxi/GMcYyxjbGOMY6xjzGPcY+xj/GQsZDxkXGRsZHxknGSsZLxkzGTcZOxk/GUsZWxlfGWMZZxlrGW8Zexl/GYcZixmPGZMZlxmbGZ8ZoxmnGasZrxm3GbsZwxnLGc8Z0xnXGdsZ3xnrGe8Z9xn7Gf8aBxoLGg8aExoXGhsaHxorGjMaOxo/GkMaRxpLGk8aWxpfGmcaaxpvGncaexp/GoMahxqLGo8amxqjGqsarxqzGrcauxq/GssazxrXGtsa3xrvGvMa9xr7Gv8bCxsTGxsbHxsjGycbKxsvGzsb+//7//v/+//7//v/PxtHG0sbTxtXG1sbXxtjG2cbaxtvG3sbfxuLG48bkxuXG5sbnxurG68btxu7G78bxxvLG/v/+//7//v/+//7/88b0xvXG9sb3xvrG+8b8xv7G/8YAxwHHAscDxwbHB8cJxwrHC8cNxw7HD8cQxxHHEscTxxbHGMcaxxvHHMcdxx7HH8cixyPHJccmxyfHKccqxyvHLMctxy7HL8cyxzTHNsc4xznHOsc7xz7HP8dBx0LHQ8dFx0bHR8dIx0nHS8dOx1DHWcdax1vHXcdex1/HYcdix2PHZMdlx2bHZ8dpx2rHbMdtx27Hb8dwx3HHcsdzx3bHd8d5x3rHe8d/x4DHgceCx4bHi8eMx43Hj8eSx5PHlceZx5vHnMedx57Hn8eix6fHqMepx6rHq8eux6/Hsceyx7PHtce2x7fHuMe5x7rHu8e+x8LHw8fEx8XHxsfHx8rHy8fNx8/H0cfSx9PH1MfVx9bH18fZx9rH28fcx/7//v/+//7//v/+/97H38fgx+HH4sfjx+XH5sfnx+nH6sfrx+3H7sfvx/DH8cfyx/PH9Mf1x/bH98f4x/nH+sf+//7//v/+//7//v/7x/zH/cf+x//HAsgDyAXIBsgHyAnIC8gMyA3IDsgPyBLIFMgXyBjIGcgayBvIHsgfyCHIIsgjyCXIJsgnyCjIKcgqyCvILsgwyDLIM8g0yDXINsg3yDnIOsg7yD3IPsg/yEHIQshDyETIRchGyEfISshLyE7IT8hQyFHIUshTyFXIVshXyFjIWchayFvIXMhdyF7IX8hgyGHIYshjyGTIZchmyGfIaMhpyGrIa8hsyG3IbshvyHLIc8h1yHbId8h5yHvIfMh9yH7If8iCyITIiMiJyIrIjsiPyJDIkciSyJPIlciWyJfImMiZyJrIm8icyJ7IoMiiyKPIpMilyKbIp8ipyKrIq8isyK3IrsivyLDIsciyyLPItMi1yLbIt8i4yLnIusi7yL7Iv8jAyMHI/v/+//7//v/+//7/wsjDyMXIxsjHyMnIysjLyM3IzsjPyNDI0cjSyNPI1sjYyNrI28jcyN3I3sjfyOLI48jlyP7//v/+//7//v/+/+bI58joyOnI6sjryOzI7cjuyO/I8MjxyPLI88j0yPbI98j4yPnI+sj7yP7I/8gByQLJA8kHyQjJCckKyQvJDskQyRLJE8kUyRXJFskXyRnJGskbyRzJHckeyR/JIMkhySLJI8kkySXJJsknySjJKckqySvJ/v/+//7//v/+//7/LckuyS/JMMkxyTLJM8k1yTbJN8k4yTnJOsk7yTzJPck+yT/JQMlByULJQ8lEyUXJRslHyf7//v/+//7//v/+/0jJSclKyUvJTMlNyU7JT8lSyVPJVclWyVfJWclayVvJXMldyV7JX8liyWTJZclmyWfJaMlpyWrJa8ltyW7Jb8lxyXLJc8l1yXbJd8l4yXnJesl7yX3Jfsl/yYDJgcmCyYPJhMmFyYbJh8mKyYvJjcmOyY/J/v/+//7//v/+//7/kcmSyZPJlMmVyZbJl8mayZzJnsmfyaDJocmiyaPJpMmlyabJp8moyanJqsmryazJrcmuyf7//v/+//7//v/+/6/JsMmxybLJs8m0ybXJtsm3ybjJucm6ybvJvMm9yb7Jv8nCycPJxcnGycnJy8nMyc3JzsnPydLJ1MnXydjJ28neyd/J4cnjyeXJ5snoyenJ6snrye7J8snzyfTJ9cn2yffJ+sn7yf3J/sn/yQHKAsoDygTK/v/+//7//v/+//7/BcoGygfKCsoOyg/KEMoRyhLKE8oVyhbKF8oZyhrKG8ocyh3KHsofyiDKIcoiyiPKJMolyv7//v/+//7//v/+/ybKJ8ooyirKK8osyi3KLsovyjDKMcoyyjPKNMo1yjbKN8o4yjnKOso7yjzKPco+yj/KQMpBykLKQ8pEykXKRspHykjKScpKykvKTspPylHKUspTylXKVspXyljKWcpaylvKXspiymPKZMplymbKZ8ppymrK/v/+//7//v/+//7/a8psym3KbspvynDKccpyynPKdMp1ynbKd8p4ynnKesp7ynzKfsp/yoDKgcqCyoPKhcqGyv7//v/+//7//v/+/4fKiMqJyorKi8qMyo3KjsqPypDKkcqSypPKlMqVypbKl8qZyprKm8qcyp3KnsqfyqDKocqiyqPKpMqlyqbKp8qoyqnKqsqryqzKrcquyq/KsMqxyrLKs8q0yrXKtsq3yrjKucq6yrvKvsq/ysHKwsrDysXK/v/+//7//v/+//7/xsrHysjKycrKysvKzsrQytLK1MrVytbK18raytvK3Mrdyt7K38rhyuLK48rkyuXK5srnyv7//v/+//7//v/+/+jK6crqyuvK7cruyu/K8MrxyvLK88r1yvbK98r4yvnK+sr7yvzK/cr+yv/KAMsBywLLA8sEywXLBssHywnLCssLywzLDcsOyw/LEcsSyxPLFcsWyxfLGcsayxvLHMsdyx7LH8siyyPLJMslyybLJ8soyynL/v/+//7//v/+//7/KssryyzLLcsuyy/LMMsxyzLLM8s0yzXLNss3yzjLOcs6yzvLPMs9yz7LP8tAy0LLQ8tEy/7//v/+//7//v/+/0XLRstHy0rLS8tNy07LT8tRy1LLU8tUy1XLVstXy1rLW8tcy17LX8tgy2HLYstjy2XLZstny2jLactqy2vLbMtty27Lb8twy3HLcstzy3TLdct2y3fLest7y3zLfct+y3/LgMuBy4LLg8uEy4XLhsuHy4jL/v/+//7//v/+//7/icuKy4vLjMuNy47Lj8uQy5HLksuTy5TLlcuWy5fLmMuZy5rLm8udy57Ln8ugy6HLosujy/7//v/+//7//v/+/6TLpcumy6fLqMupy6rLq8usy63Lrsuvy7DLscuyy7PLtMu1y7bLt8u5y7rLu8u8y73Lvsu/y8DLwcvCy8PLxMvFy8bLx8vIy8nLysvLy8zLzcvOy8/L0MvRy9LL08vVy9bL18vYy9nL2svby9zL3cvey9/L/v/+//7//v/+//7/4Mvhy+LL48vly+bL6Mvqy+vL7Mvty+7L78vwy/HL8svzy/TL9cv2y/fL+Mv5y/rL+8v8y/7//v/+//7//v/+//3L/sv/ywDMAcwCzAPMBMwFzAbMB8wIzAnMCswLzA7MD8wRzBLME8wVzBbMF8wYzBnMGswbzB7MH8wgzCPMJMwlzCbMKswrzC3ML8wxzDLMM8w0zDXMNsw3zDrMP8xAzEHMQsxDzEbMR8xJzErMS8xNzE7M/v/+//7//v/+//7/T8xQzFHMUsxTzFbMWsxbzFzMXcxezF/MYcxizGPMZcxnzGnMasxrzGzMbcxuzG/MccxyzP7//v/+//7//v/+/3PMdMx2zHfMeMx5zHrMe8x8zH3Mfsx/zIDMgcyCzIPMhMyFzIbMh8yIzInMisyLzIzMjcyOzI/MkMyRzJLMk8yUzJXMlsyXzJrMm8ydzJ7Mn8yhzKLMo8ykzKXMpsynzKrMrsyvzLDMscyyzLPMtsy3zLnM/v/+//7//v/+//7/usy7zL3Mvsy/zMDMwczCzMPMxszIzMrMy8zMzM3MzszPzNHM0szTzNXM1szXzNjM2czazP7//v/+//7//v/+/9vM3MzdzN7M38zgzOHM4szjzOXM5sznzOjM6czqzOvM7czuzO/M8czyzPPM9Mz1zPbM98z4zPnM+sz7zPzM/cz+zP/MAM0CzQPNBM0FzQbNB80KzQvNDc0OzQ/NEc0SzRPNFM0VzRbNF80azRzNHs0fzSDN/v/+//7//v/+//7/Ic0izSPNJc0mzSfNKc0qzSvNLc0uzS/NMM0xzTLNM800zTXNNs03zTjNOs07zTzNPc0+zf7//v/+//7//v/+/z/NQM1BzULNQ81EzUXNRs1HzUjNSc1KzUvNTM1NzU7NT81QzVHNUs1TzVTNVc1WzVfNWM1ZzVrNW81dzV7NX81hzWLNY81lzWbNZ81ozWnNas1rzW7NcM1yzXPNdM11zXbNd815zXrNe818zX3Nfs1/zYDN/v/+//7//v/+//7/gc2CzYPNhM2FzYbNh82JzYrNi82MzY3Njs2PzZDNkc2SzZPNls2XzZnNms2bzZ3Nns2fzf7//v/+//7//v/+/6DNoc2izaPNps2ozarNq82sza3Nrs2vzbHNss2zzbTNtc22zbfNuM25zbrNu828zb3Nvs2/zcDNwc3CzcPNxc3GzcfNyM3JzcrNy83Nzc7Nz83RzdLN083UzdXN1s3XzdjN2c3azdvN3M3dzd7N383gzeHN/v/+//7//v/+//7/4s3jzeTN5c3mzefN6c3qzevN7c3uze/N8c3yzfPN9M31zfbN9836zfzN/s3/zQDOAc4Czv7//v/+//7//v/+/wPOBc4GzgfOCc4KzgvODc4Ozg/OEM4RzhLOE84VzhbOF84YzhrOG84czh3OHs4fziLOI84lzibOJ84pzirOK84szi3OLs4vzjLONM42zjfOOM45zjrOO848zj3OPs4/zkDOQc5CzkPORM5FzkbOR85IzknO/v/+//7//v/+//7/Ss5LzkzOTc5Ozk/OUM5RzlLOU85UzlXOVs5XzlrOW85dzl7OYs5jzmTOZc5mzmfOas5szv7//v/+//7//v/+/27Ob85wznHOcs5zznbOd855znrOe859zn7Of86AzoHOgs6DzobOiM6KzovOjM6Nzo7Oj86SzpPOlc6WzpfOmc6azpvOnM6dzp7On86izqbOp86ozqnOqs6rzq7Or86wzrHOss6zzrTOtc62zrfOuM65zrrO/v/+//7//v/+//7/u868zr3Ovs6/zsDOws7DzsTOxc7GzsfOyM7JzsrOy87Mzs3Ozs7PztDO0c7SztPO1M7Vzv7//v/+//7//v/+/9bO187YztnO2s7bztzO3c7ezt/O4M7hzuLO487mzufO6c7qzu3O7s7vzvDO8c7yzvPO9s76zvvO/M79zv7O/84CzwPPBc8GzwfPCc8KzwvPDM8Nzw7PD88SzxTPFs8XzxjPGc8azxvPHc8ezx/PIc8izyPP/v/+//7//v/+//7/Jc8mzyfPKM8pzyrPK88uzzLPM880zzXPNs83zznPOs87zzzPPc8+zz/PQM9Bz0LPQ89Ez/7//v/+//7//v/+/0XPRs9Hz0jPSc9Kz0vPTM9Nz07PT89Qz1HPUs9Tz1bPV89Zz1rPW89dz17PX89gz2HPYs9jz2bPaM9qz2vPbM9tz27Pb89yz3PPdc92z3fPec96z3vPfM99z37Pf8+Bz4LPg8+Ez4bPh8+Iz4nPis+Lz43P/v/+//7//v/+//7/js+Pz5DPkc+Sz5PPlM+Vz5bPl8+Yz5nPms+bz5zPnc+ez5/PoM+iz6PPpM+lz6bPp8+pz/7//v/+//7//v/+/6rPq8+sz63Prs+vz7HPss+zz7TPtc+2z7fPuM+5z7rPu8+8z73Pvs+/z8DPwc/Cz8PPxc/Gz8fPyM/Jz8rPy8/Mz83Pzs/Pz9DP0c/Sz9PP1M/Vz9bP18/Yz9nP2s/bz9zP3c/ez9/P4s/jz+XP5s/nz+nP/v/+//7//v/+//7/6s/rz+zP7c/uz+/P8s/0z/bP98/4z/nP+s/7z/3P/s//zwHQAtAD0AXQBtAH0AjQCdAK0P7//v/+//7//v/+/wvQDNAN0A7QD9AQ0BLQE9AU0BXQFtAX0BnQGtAb0BzQHdAe0B/QINAh0CLQI9Ak0CXQJtAn0CjQKdAq0CvQLNAu0C/QMNAx0DLQM9A20DfQOdA60DvQPdA+0D/QQNBB0ELQQ9BG0EjQStBL0EzQTdBO0E/Q/v/+//7//v/+//7/UdBS0FPQVdBW0FfQWdBa0FvQXNBd0F7QX9Bh0GLQY9Bk0GXQZtBn0GjQadBq0GvQbtBv0P7//v/+//7//v/+/3HQctBz0HXQdtB30HjQedB60HvQftB/0IDQgtCD0ITQhdCG0IfQiNCJ0IrQi9CM0I3QjtCP0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Cm0KfQqdCq0KvQrdCu0K/QsNCx0LLQ/v/+//7//v/+//7/s9C20LjQutC70LzQvdC+0L/QwtDD0MXQxtDH0MrQy9DM0M3QztDP0NLQ1tDX0NjQ2dDa0P7//v/+//7//v/+/9vQ3tDf0OHQ4tDj0OXQ5tDn0OjQ6dDq0OvQ7tDy0PPQ9ND10PbQ99D50PrQ+9D80P3Q/tD/0ADRAdEC0QPRBNEF0QbRB9EI0QnRCtEL0QzRDtEP0RDREdES0RPRFNEV0RbRF9EY0RnRGtEb0RzRHdEe0R/R/v/+//7//v/+//7/INEh0SLRI9Ek0SXRJtEn0SjRKdEq0SvRLNEt0S7RL9Ey0TPRNdE20TfROdE70TzRPdE+0f7//v/+//7//v/+/z/RQtFG0UfRSNFJ0UrRS9FO0U/RUdFS0VPRVdFW0VfRWNFZ0VrRW9Fe0WDRYtFj0WTRZdFm0WfRadFq0WvRbdFu0W/RcNFx0XLRc9F00XXRdtF30XjRedF60XvRfdF+0X/RgNGB0YLRg9GF0YbRh9GJ0YrR/v/+//7//v/+//7/i9GM0Y3RjtGP0ZDRkdGS0ZPRlNGV0ZbRl9GY0ZnRmtGb0ZzRndGe0Z/RotGj0aXRptGn0f7//v/+//7//v/+/6nRqtGr0azRrdGu0a/RstG00bbRt9G40bnRu9G90b7Rv9HB0cLRw9HE0cXRxtHH0cjRydHK0cvRzNHN0c7Rz9HQ0dHR0tHT0dTR1dHW0dfR2dHa0dvR3NHd0d7R39Hg0eHR4tHj0eTR5dHm0efR6NHp0erR/v/+//7//v/+//7/69Hs0e3R7tHv0fDR8dHy0fPR9dH20ffR+dH60fvR/NH90f7R/9EA0gHSAtID0gTSBdIG0v7//v/+//7//v/+/wjSCtIL0gzSDdIO0g/SEdIS0hPSFNIV0hbSF9IY0hnSGtIb0hzSHdIe0h/SINIh0iLSI9Ik0iXSJtIn0ijSKdIq0ivSLtIv0jHSMtIz0jXSNtI30jjSOdI60jvSPtJA0kLSQ9JE0kXSRtJH0knSStJL0kzS/v/+//7//v/+//7/TdJO0k/SUNJR0lLSU9JU0lXSVtJX0ljSWdJa0lvSXdJe0l/SYNJh0mLSY9Jl0mbSZ9Jo0v7//v/+//7//v/+/2nSatJr0mzSbdJu0m/ScNJx0nLSc9J00nXSdtJ30njSedJ60nvSfNJ90n7Sf9KC0oPShdKG0ofSidKK0ovSjNKN0o7Sj9KS0pPSlNKW0pfSmNKZ0prSm9Kd0p7Sn9Kh0qLSo9Kl0qbSp9Ko0qnSqtKr0q3S/v/+//7//v/+//7/rtKv0rDSstKz0rTStdK20rfSutK70r3SvtLB0sPSxNLF0sbSx9LK0szSzdLO0s/S0NLR0v7//v/+//7//v/+/9LS09LV0tbS19LZ0trS29Ld0t7S39Lg0uHS4tLj0ubS59Lo0unS6tLr0uzS7dLu0u/S8tLz0vXS9tL30vnS+tL70vzS/dL+0v/SAtME0wbTB9MI0wnTCtML0w/TEdMS0xPTFdMX0xjTGdMa0xvTHtMi0yPT/v/+//7//v/+//7/JNMm0yfTKtMr0y3TLtMv0zHTMtMz0zTTNdM20zfTOtM+0z/TQNNB00LTQ9NG00fTSNNJ0/7//v/+//7//v/+/0rTS9NM003TTtNP01DTUdNS01PTVNNV01bTV9NY01nTWtNb01zTXdNe01/TYNNh02LTY9Nk02XTZtNn02jTadNq02vTbNNt027Tb9Nw03HTctNz03TTddN203fTeNN503rTe9N+03/TgdOC04PThdOG04fT/v/+//7//v/+//7/iNOJ04rTi9OO05LTk9OU05XTltOX05rTm9Od057Tn9Oh06LTo9Ok06XTptOn06rTrNOu0/7//v/+//7//v/+/6/TsNOx07LTs9O107bTt9O507rTu9O9077Tv9PA08HTwtPD08bTx9PK08vTzNPN087Tz9PR09LT09PU09XT1tPX09nT2tPb09zT3dPe09/T4NPi0+TT5dPm0+fT6NPp0+rT69Pu0+/T8dPy0/PT9dP20/fT/v/+//7//v/+//7/+NP50/rT+9P+0wDUAtQD1ATUBdQG1AfUCdQK1AvUDNQN1A7UD9QQ1BHUEtQT1BTUFdQW1P7//v/+//7//v/+/xfUGNQZ1BrUG9Qc1B7UH9Qg1CHUItQj1CTUJdQm1CfUKNQp1CrUK9Qs1C3ULtQv1DDUMdQy1DPUNNQ11DbUN9Q41DnUOtQ71DzUPdQ+1D/UQdRC1EPURdRG1EfUSNRJ1ErUS9RM1E3UTtRP1FDUUdRS1FPU/v/+//7//v/+//7/VNRV1FbUV9RY1FnUWtRb1F3UXtRf1GHUYtRj1GXUZtRn1GjUadRq1GvUbNRu1HDUcdRy1P7//v/+//7//v/+/3PUdNR11HbUd9R61HvUfdR+1IHUg9SE1IXUhtSH1IrUjNSO1I/UkNSR1JLUk9SV1JbUl9SY1JnUmtSb1JzUndSe1J/UoNSh1KLUo9Sk1KXUptSn1KjUqtSr1KzUrdSu1K/UsNSx1LLUs9S01LXUttS31LjU/v/+//7//v/+//7/udS61LvUvNS91L7Uv9TA1MHUwtTD1MTUxdTG1MfUyNTJ1MrUy9TN1M7Uz9TR1NLU09TV1P7//v/+//7//v/+/9bU19TY1NnU2tTb1N3U3tTg1OHU4tTj1OTU5dTm1OfU6dTq1OvU7dTu1O/U8dTy1PPU9NT11PbU99T51PrU/NT+1P/UANUB1QLVA9UF1QbVB9UJ1QrVC9UN1Q7VD9UQ1RHVEtUT1RbVGNUZ1RrVG9Uc1R3V/v/+//7//v/+//7/HtUf1SDVIdUi1SPVJNUl1SbVJ9Uo1SnVKtUr1SzVLdUu1S/VMNUx1TLVM9U01TXVNtU31f7//v/+//7//v/+/zjVOdU61TvVPtU/1UHVQtVD1UXVRtVH1UjVSdVK1UvVTtVQ1VLVU9VU1VXVVtVX1VrVW9Vd1V7VX9Vh1WLVY9Vk1WbVZ9Vq1WzVbtVv1XDVcdVy1XPVdtV31XnVetV71X3VftV/1YDVgdWC1YPVhtWK1YvV/v/+//7//v/+//7/jNWN1Y7Vj9WR1ZLVk9WU1ZXVltWX1ZjVmdWa1ZvVnNWd1Z7Vn9Wg1aHVotWj1aTVptWn1f7//v/+//7//v/+/6jVqdWq1avVrNWt1a7Vr9Ww1bHVstWz1bTVtdW21bfVuNW51brVu9W81b3VvtW/1cDVwdXC1cPVxNXF1cbVx9XK1cvVzdXO1c/V0dXT1dTV1dXW1dfV2tXc1d7V39Xg1eHV4tXj1ebV59Xp1erV69Xt1e7V/v/+//7//v/+//7/79Xw1fHV8tXz1fbV+NX61fvV/NX91f7V/9UC1gPWBdYG1gfWCdYK1gvWDNYN1g7WD9YS1v7//v/+//7//v/+/xbWF9YY1hnWGtYb1h3WHtYf1iHWItYj1iXWJtYn1ijWKdYq1ivWLNYu1i/WMNYx1jLWM9Y01jXWNtY31jrWO9Y91j7WP9ZB1kLWQ9ZE1kbWR9ZK1kzWTtZP1lDWUtZT1lbWV9ZZ1lrWW9Zd1l7WX9Zg1mHW/v/+//7//v/+//7/YtZj1mTWZdZm1mjWatZr1mzWbdZu1m/WctZz1nXWdtZ31njWedZ61nvWfNZ91n7Wf9aA1v7//v/+//7//v/+/4HWgtaE1obWh9aI1onWitaL1o7Wj9aR1pLWk9aV1pbWl9aY1pnWmtab1pzWntag1qLWo9ak1qXWptan1qnWqtar1q3Wrtav1rHWstaz1rTWtda21rfWuNa61rzWvda+1r/WwNbB1sLWw9bG1sfWydbK1svW/v/+//7//v/+//7/zdbO1s/W0NbS1tPW1dbW1tjW2tbb1tzW3dbe1t/W4dbi1uPW5dbm1ufW6dbq1uvW7Nbt1v7//v/+//7//v/+/+7W79bx1vLW89b01vbW99b41vnW+tb71v7W/9YB1wLXA9cF1wbXB9cI1wnXCtcL1wzXDdcO1w/XENcS1xPXFNcV1xbXF9ca1xvXHdce1x/XIdci1yPXJNcl1ybXJ9cq1yzXLtcv1zDXMdcy1zPXNtc31znX/v/+//7//v/+//7/Otc71z3XPtc/10DXQddC10PXRddG10jXStdL10zXTddO10/XUtdT11XXWtdb11zXXdde1/7//v/+//7//v/+/1/XYtdk12bXZ9do12rXa9dt127Xb9dx13LXc9d113bXd9d413nXetd7137Xf9eA14LXg9eE14XXhteH14rXi9eN147Xj9eR15LXk9eU15XXlteX15rXnNee15/XoNeh16LXo9cAAAAAAAAAAAAAAAABAgMEBQYHCAkKCwwNDg8QERMUFRYXGBkaGxwdAAAAAEGIQYxEhEGQRoRHhEGUQZhBnEqES4RMhE2EToRPhFCEQaBBpEGoVIRBrEGwQbRBuEG8QcBBxEHIQcxB0GGEgYShhMGE4YRBhWGFgYWhhcGF4YVBhmGGgYahhsGG4YZBh2GHgYehhwAAAAAAAAAAAAACAwQFBgcICQoLDA0ODxAREhMUAAAAAAAAAAAAAAAAAAMEBQYHCgsMDQ4PEhMUFRYXGhscHQAAAAAAAAAAAAAA//0AAQIDBAUGBwgJCgsMDQ4PEBES//////////////////0AAQIDBP//BQYHCAkK//8LDA0ODxD//xESExT////9AQIDBAUGBwgJCgsMDQ4PEP8REhMUFRYXGBkaG/////0xMjM0NTY3OTo7PD0+P0BB/0JERUZHSEpLTE1O//////1PUFFSU///VFVWV1hZ//9aW1xdXl///2BhYmP////9MTI0Nzg5QUJDRUZHSElKS0xNTv//////////////RqJHov//RKL//7Gh/////////////////////1ii06H/////////////UKH//////////////////////////////////////////////////////////////////////////////////9Gh///////////////////////////////////////////////////////////////////////////////////Sob6j//+8o72jv6P//8Wh/////////////////////////////7ujRKNFo0ajR6NIo0mjSqNLo0yjTaNOo0+jUKNRo1KjU6NUo///VaNWo1ejWKNZo1qjW6P//////////////////1yjXaNeo1+jYKNho2KjY6Nko2WjZqNno2ijaaNqo2ujbKP//22jbqNvo3CjcaNyo3Ojs8f///////////////////////////////////////////////+xx7LHtMe1x7bHt8e4x7nHusf///////////////+7x7zHvce+x7/HwMfBx8LHw8fEx8XHxsfHx8jHycfKx8vHzMfNx8/H0MfRx9LH08fUx9XH1sfXx9jH2cfax9vH3Mfdx97H38fgx+HH4sfjx+TH5cfmx+fH6Mf//87HVqFYof///////6WhpqH/////p6Goof//////////RaH/////TKFLof////////////////////////////+sof////+rof////////////+wof/////CoUqi///Bof///////0ui/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7miuqK7oryivaK+or+iwKLBosKi//////////////////////////////////////////////////////////////////////////////////////////////////////ah9KH3ofWh//////ih+aH7ofqh1KH////////boeih56H//////aH///yh////////5KHloeyh/////+2h/////////////++h7qH////////////////jof///////////////////////////////////////////////////////9yh///////////////////////////////////aod2h///////////Yodmh///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////mof//////////////////////////////////////////////////////////////////6aHpx+rH68fsx+3H7sfvx/DH8cfyx///////////////////////////88f0x/XH9sf3x/jH+cf6x/vH/Md3ov//eKL///////////////////////96ov///////3ui////////fKL///////99ov///////3Wi//////////////////90ov//////////////////c6L//////////////////3Ki//////////////////9xov//////////////////////////////////////////////////pKL//////////////////////////////////6Wi/////6ei/////////////////////6ai/////36ioaKjoqKirKKtoq6iWqH///////////////////////////////9iomOiZKJlomaiZ6JoommicKJvom6ibaJsomuiaqL//////////3aieaL//////////////////////////72hvKH//////////////////////////////////////////7ahtaH/////////////////////v6G+of////////////////////+7obqh////////s6H/////t6G0of///////////////////////////////////////////////6iiqaKroqqiuaG4of/////zof////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ch8qHxoUChQqFDobKh//+kxv////9xoXKhbaFuoXWhdqF5oXqhaaFqoUWi//9loWah//////////////////+poaqh/////8OixKLFosaix6LIosmiyqLLov////////////////////////////////////////////////////////////+lxqbGp8aoxqnGqsarxqzGrcauxq/GsMaxxrLGs8a0xrXGtsa3xrjGuca6xrvGvMa9xr7Gv8bAxsHGwsbDxsTGxcbGxsfGyMbJxsrGy8bMxs3GzsbPxtDG0cbSxtPG1MbVxtbG18bYxtnG2sbbxtzG3cbext/G4MbhxuLG48bkxuXG5sbnxujG6cbqxuvG7Mbtxu7G78bwxvHG8sbzxvTG9cb2xvfG////////////////////////osajxv/////4xvnG+sb7xvzG/cb+xkDHQcdCx0PHRMdFx0bHR8dIx0nHSsdLx0zHTcdOx0/HUMdRx1LHU8dUx1XHVsdXx1jHWcdax1vHXMddx17HX8dgx2HHYsdjx2THZcdmx2fHaMdpx2rHa8dsx23Hbsdvx3DHccdyx3PHdMd1x3bHd8d4x3nHesd7x3zHfcd+x6HHosejx6THpcemx6fHqMepx6rHq8esx63Hrsevx7DH//////////////////+hxnSjdaN2o3ejeKN5o3qje6N8o32jfqOho6Kjo6Oko6WjpqOno6ijqaOqo6ujrKOto66jr6Owo7GjsqOzo7SjtaO2o7ejuKO5o7qjwKFVolai////////////////////////////////UKJRolKi/////1Si//////////////////////////////////////////////////////////////////////////////////////////9Xov///////////////////////1Oi/////+uh6qH/////T6JApEKk//9DpP///////0XJVqRUpFekVaRGyaOkT8lNyaKkoaT/////QqVBpUCl//9Dpf6k///////////gpeGl////////////////w6j//////////1ik//+kpFDJ//+lpGPJ6qaxy///////////WaSmpP//RKVkyf////////////9AyUSk//9bpP//R8lcpP////+npP//RaVHpUal/////+Kl46X/////xKj//7ytQaT/////QclFpF6kXaT////////////////////////kpf///////////////////////8Wo//////////////////////////+usEvU/////8O2sdyy3P//RqT//6mk/////8aoR6RIyV+k/////6qkrKRRya2kq6T////////lpf//x6j/////yKhFq///YKSupP//5qXopeel///rpv/////JqMqoRqtHq///////////va3/////s9z/////1vZIpP////////////+wpK+kUsmxpLek//+ypLOkVMlTybWktqT//7Sk////////////////SqVLpUylTaVJpVClasn//2bJaclRpWGl//9oyf//TqVPpUil/////2XJZ8n////////////////1pbDJ8qX2pbrJrsnzpbLJ////////9KX///el///ppbHJ+KW1yf//ucm2yf////+zyeql7KX5pf//7qWryfGl76XwpbvJuMmvye2l/////6zJ66X///////+0yf//////////t8n///////////////////////+tyWbK//9Cp/Sm/////2fK8ab//0Sn///5pv//+KZbyvym96ZgymjK//9kyv//+qb//////abupkenXcr/////vcvspkOn7ab1pvamYspeyvum86Zayu+mZcpFp0in8qZAp0an8KZjykGnacpcyv6mX8r/////Ycr//9iov8vLy9Co///My8uo1aj/////zqi5y9aouMu8y8PLwcveqNmos8u1y9uoz6i2y8LLycvUqLvLtMvTqLfL16i6y///0qj//82o///cqMTL3ajIy///xsvKy9qovsuyy///wMvRqMXLzKjHy////////////////////////////////////////1arSqv/////4M3ozf//SatRq12r///uzezN583///////9Lq+3N481Zq1CrWKvezf//6s3//+HNVKvizf//3c1bq06rV6tNq///383kzf//681Vq1Kr5s1aq+nN5c1Pq1yrU6tMq0ir///////////////////////////vzf//163Brf//0a3//9at0NDP0NTQ1dDErf//za3////////arc6t///////////J0MetytD//9yt///Trb6tv63d0L+w///Mrcuty9DPrVvUxq3W0NWt1K3Krc7Q19D//8jQya3Y0NKtzNDArf//w63CrdnQ0K3Frdmt263T0Nit///b0M3Q3ND//9HQ///a0P//0tD//////////8it////////Y9RX1P//s7D//1zUYtSysFXUtrBZ1FLUtLBW1LmwvrD//2fU//9R1P//urD//2bU/////7WwWNSxsFPUT9Rd1FDUTtRa1GDUYdS3sP////9b2F7UTdRf1P//wbBk1MCwTNT//1TUZdS8sLuwuLC9sP////+vsP////+wsP/////Is///XthX2P//xbP//1/Y////////VdhY2MSzWdj/////x7Nd2P//U9hS2Mmz///Ks8azy7NR2FzYWthU2P///////8OzVtj/////////////////////yrbEtrfczba93MDcxrbHtrrcxbbD3Mu2xNz//7/czLb//7Tcyba13P//vty83P//uNzItrbczra73MLcudzB3P////+2ubO5//+0uf//+eDx4LK5r7ny4P////+xufXg///34P/////+4P/////94Pjgrrnw4Ky58+C3ufbg///64LC5rbn84Pvgtbn///Tg///4u+zk///p5Pm7///3u///8OTt5Obk9rv///q75+T1u/276uTr5Pu7/Lvx5O7k7+T///////+qvvjop7716Km+q77///boqL7///fo///06P////92wL3sd8C77P//vOy67Lns/////77sdcD/////uO+57///6OS373jAX8Pr8ezx///XxNjEwfXA9WzFa8XQ9///SaRhpLmk//+4pFOlUqX8pful/aX6pf//SqdJp0un///////////gqP//36jhqP//Xqv//1mi3tBaosKwXKJbomDY//9dori5XqL//0qk//+6pP6l4qj//0ukvaS7pLyk/////0Cm////////TKfkqOOo5aj////////drf///////6y+////////////////Tsn//1SlVaX/////Qab//2rK//9gq1+r4NDf0MOw//++pFXJ/////////////83L//9hq///4K3//96t363//////////62+//9Wpf///////0KmvMn//////////02nTqf//2vK/////87L5qjPy//////////////i0OPQ463//+TQ///h0OSt4q3hreXQ//9o1P///////2HY/////8XcQOH////////+u66++ej//0ykWqT/////////////////////////////////////xLDNs///ubn//0LJv6T//1mlV6VYpf/////nqE2kTqT//2Kk/////8CkwaTCpL7JWqX//2vJ//9Gpv//v8lEpkWmvcn/////R6ZDpv//////////bMrsqm3K/////27K/////1CnT6f/////U6dRp1Kn////////7aj//+yo1MvRy9LL///Qy+6o6qjpqP//66joqP/////////////vqP//Y6vwzf//08toq///8c1kq2erZqtlq2Kr////////6ND//+et69Dlrf///////+fQ6K3mremt6dDq0P//5tDs0P///////////////9GzxbBp1GvUatRs1Maw/////86z///Ps9Cz///Qtsfc///G3MjcydzRtv//z7ZB4ULhu7m6uVrj/////0C8QbxCvES88uTz5EO8////////r77//7C+/////+3xw/XC9dH3//9PpP///////1ylW6X/////SKb/////wMn/////VadWp1SnV6dvynDK////////////////////////////////8ajVy///8Kj///LNbKvzzWur////////aav//2qr////////7dD//////////8ewbtT//8qwbdTlscmwyLD//9Sz///Ts9Kz0rb/////1bbWttS2///Ttv////9D4f//ROH////////15EW89OT//7G+v+x5wP//7vFVxP//Y6TDpFbJ///EpMWkXaVepf//SaZxytbL18v//22r7tDMsMuwY9hi2P////9QpMakX6X//82wQ8n//2zJYKX//8LJS6ZKpsHJWKf////////////////qrf////9v1P//17ZF4by5//////ro//////3z///HpP/////Yy/TN0LDOsM+wUaT//2SkzaLKpP//yaTIpGOlYqX//23Jw8n////////1qPKo9KjzqP////9uq//////Vs///UqT//8uk//9lpWSl//9yyv/////2qP////////////9Xyf//Z6VmpUymTaZzylmn//9ap///96j4qPmo//9vq/XN/////+ut/////0TJ///MpP/////////////Eyf///////3TKdcr/////2cv//9rL///3zfbN+c34zXCr//9w1O2t79Dsrf//////////ZNjWs///Zdj//////////0bhvbn//////////0a8///v8f//////////WMn//2il///////////////////RsP//////////U6RlpM6kzaT//8+k////////////////+6j///qo/Kj///////9xq////////+6t///76E/CZqRqpXmldKX//2+lbqV1pXOlbKV6pW2laaV4pXeldqVrpf//cqX/////caX/////e6VwpVOm//9ZplWm//9bpsXJWKZOplGmVKZQplemWqZPplKmVqZcpv////////////9+ynvK//9np3zKW6ddp3WncKf///////+lyn3KX6dhp6TKaKd4ynSndqdcp22n//92ynOn//9kp///bqdvp3fKbKdqp///a6dxp6HKXqf//3Kno8pmp2On//96ymKnpsplp///aaf///////9gp6LK//////////95yv/////////////////////////////ry+rLT6nty+/L5Mvny+7LUKn/////4cvly//////py0nOS6lNzv2o5sv+qEypRalBqf//4stEqUmpUqnjy9zLQ6ndy9/L//9Gqf//SKnby+DL/////1GpTanoy1Op//9Kqd7LR6n/////QqlAqf//7Mv//06p/////////////0jO+81Lzv/////9zXirqKt0q6erfaukq3Kr/M1DzqOrT86lq///eav/////Rc5Czner///6zaarSs58q0zOqatzq36re6tAzqGrRs5Hznqroqt2q///////////dav+zf///////////////0TO//////////////////9Ozv//RNH7rfHQ///20PStQK700O+t+a3+rfvQ///6rf2t//////7Q9a310P///////0LRQ9H///etQdHzrUOu///40PGt//9G0fnQ/dD2rUKu+tD8rUDRR9Gh1P//RdFErvCt/NDz0P//+K3/////8tD/////99D/////////////////////////////8NBBrv////931P//5LCn1OKw37B81NuwotTmsHbUe9R61PKt4bCl1P//qNRz1P//6LP//6nU57D//9mw1rB+1NOw//+m1P//2rCq1P//dNSk1N2wddR41H3U/////96w3LDosP//////////47D//9ew0rH//9iwedTlsOCwo9TVsP///////9Sw//////////////////////////9x1HLUatj////////Xs9qzddjus3jY2LNx2N6z5LO9tf/////is27Y77Pbs+OzdtjX3HvYb9j//2bYc9ht2OGzedj/////3bPxs+qz///fs9yz///ns///eths2HLYdNho2HfY2bNn2P//4LPws+yzadjms//////ts+mz5bP//3DY/////////////+uz////////1dzR3P//4NzK3NPc5bbmtt623Nzots/cztzM3N7c3LbY3M3c37bW3Nq20tzZ3Nvc/////9/c47bL3N220Nz//9i2///kttrc4Lbhtue227Zfotm21Nz/////////////4rb/////3dz////////Nuci5//9V4VHh//9L4cK5vrlU4b+5TuFQ4f//U+H//8S5///LucW5/////0nhxrnHuUzhzLn//0rhT+HDuUjhybnBuf///////8C5TeFS4f//yrn//////////////////0fh//9NvEfl//9E5f//R7xTvFS8//9KvELlTLz55FK8//9G5Um8SOVIvP//Q+VF5Uu8QeX65Pfk/////2vY/eT///bk/OT75P//+OT//0+8//////////9OvP///////1C8/uSyvkDl////////Ren///3o//++vkLptr66vkHp//+5vrW+uL6zvr2+Q+n+6Ly+/Oi7vkTpQOlRvP//v75G6be+tL7//////////8bsyOx7wMnsx+zF7MTsfcDD7H7A///////////B7MLsesChwHzA/////8Ds//9Qwv//vO+677/vve///7vvvu///////////////////2DD8vHz8VbE///08fDx9fHx8VHC/////////vNB9FnEQPRYxFfE//////////9axMX1xvX//9rE2cTbxMT1///Y9tf2//9txW/FbsXZ9sjFpvj////////xxf//pfju+P////9Jyf////99pXyl//9fpl6mx8ldpsbJ/////3mnqcr//6jK/////3eneqf/////p8r//3in////////////////8Mv///HLVKn//////////6qrSNFJ0UWuRq7/////rNTpsOuwq9TqsHzY8rP//////////+m26rbh3P//z7n//865//9J5UjpR+n//2v5Z6RZyf//bslvyf//////////YqZmpsnJ//9kpmOmyMllpmGm/////2Cmysn///////////////+mp/////+jp///faeqyv///////6vK//+hp///rcp7p67KrMp+p6Knpaekp3ynr8r/////////////////////////////////////Wan+y///W6n//1qp//9AzFipV6n1y///9Mv///LL98v2y/PL/Mv9y/rL+MtWqf////////vLXKlBzP/////5y///q6tVqf//////////////////rKtUzv////9azv///////7KrWM5ezv//Vc5ZzlvOXc5Xzv//Vs5RzlLOrav//6+rrqtTzlzO/////////////////////7Gr////////////////UM5T0f//UtFX0U7R//9R0VDR//9U0f//WNFHrkqu/////0/RVdH///////9JrkrR//+wq7rUVtH//03R//9IrkzR////////////////sdT/////7LDwsMHUr9S91PGwv9T//8XU///J1P/////A1LTUvNT//8rUyNS+1LnUstSm2LDU9bC31Paw8rCt1MPUtdSz1MbU87D//8zU7bDvsLvUttRLru6wuNTH1MvUwtT//8TU////////rtT//////////6HY//+q2KnY+rOi2P//+7P5s///pNj2s6jY//+j2KXYfdj0s///stix2K7Y87P3s/izS9Gr2PWz9LCt2H7YsNiv2P//s9j//+/c//+s2P////////////////////+n2Ofc9Lb3tvK25tzq3OXc///stva24tzwtunc///utu227Nzvtu7c///r3Ou2////////9bbw3OTc7dz/////49z/////8bb///O2///o3P//8dz/////XeHQuWPh/////9W5X+Fm4Vfh17nRuVzhVbxb4WTh0rn//9a5WuFg4WXhVuHUuV7h/////2LhaOFY4WHh///TuWfh////////WeH///////9ZvEvlV7xWvE3lUuX//07l//9R5Vy8//+lvlu8//9K5VDl//9avE/l//9M5f//WLz///////////////9N6f//T+lK6cG+TOn//8C+Tun/////w75Q6cK+SelL6f//////////pcDM7P//pMDN7KPAy+yiwMrs//9TwlLC9vH48f//9/Fhw2LD/////2PDQvRbxP/////T99L38sX//2ik0KT/////p6f//////////1/O///////////8s/2z///y3Ni5aeFT5VrJ/////7DK/////////////0LMYM5Z0Uyu//////nx///cxGmkfqVwyf//Z6Zopv//Xan////////3sP//2rn//9u52bn//2qk///RpNOk0qRbydSkoaVxyf//oqX/////////////aaZqpv///////8vJ//+op///scr///////9hqUPM//9fqWCpXqla0f///////7artau3q7Sr//9hzmKps6v//02uTq7//0+u///N1P////////6ztNj4sP//////////+Lb//9253Llq4f//XbzEvv//wO/a9tT3a6Sjpf//pKXRyWymb6b//8/JzcluptDJ0snMyXGmcKZtpmumzsn//////////7On/////7Cntsq5yrjK//+qp7Kn/////6+ntcqzyq6n////////qaesp///tMq7yrfKraexp7Snssq6yqun/////////////2epb6n//0/MSMxwqVPMRMxLzP////9mqUXMZKlMzFDMY6n//1HMSsz//03M//9yqWmpVMxSzP//bqlsqUnMa6lHzEbMaqloqXGpballqf//Tsz//7mr///Aq2/OuKtnzmPO//9zzmLO//+7q2zOvqvBq///vKtwzr+r//9WrnbOZM7/////Zs5tznHOdc5yzmvObs7/////aM7Dq2rOac50zrqrZc7Cq///vav/////////////XK5i0f//W67/////YNH//1Cu//9Vrv//X9Fc0WHRUa5b0f//VK5Srv//Y9FTrleu/////1iu//9arv///////1mu////////XdFe0f//////////ZNH//9TU+bDC2NPU5tT/////QLH//+TU///+sPqw7dTd1ODU//9DserU4tT7sESx///n1OXU/////9bU69Tf1NrU///Q1OzU3NTP1P//QrHh1O7U3tTS1NfUztT//0Gx///b1NjU/LDR1P//6dT9sP//2dTV1P/////o1P///////////////0C0u9j//7jYydi92MrY//9CtP///////8bYw9j/////////////xNjH2MvY///j1M3YR93//0O0zti22MDY///F2P////9BtES0zNjP2LrYt9j/////udj/////vti82EW0///I2P////+/2P//wdi12Prc+NxCt0C3Q9353ETdQN333Ebd9tz93P62/bb8tvvcQd35tkG3///03P///tzz3Pzc+rZC3fXc+7ZF3f//////////////////buHiueG547l64XDhduFr4XnheOF84XXh3rl04eS5//9t4d+5//974eC5b+Fy4XfhceFs4f//////////c+FV5WG8WOVX5VrlXOX//1+8//9W5f//VOVd5VvlWeX//1/l//9e5WO8Xrz//2C8Yrz/////YOVX6f////9W6VXp//9Y6VHp//9S6VrpU+n//8W+XOn//1vpVOn//9HsqMDP7NTs0+xZ6f//p8D//9LszuzW7NXspsD//9Ds///Gvv///////1TC////////we/68fvx/PFcxP////9dxP//Q/T//8j1x/X/////2/bc9tX3p/j//2ykbaT//26k1aSlpdPJcqZzpv//t6e4p7antaf//3Op/////1XMdal0qVbM////////xKv//12uZdH///DU//9FsUe079RGtP//5bn//33hx77//6nA1+z//17E//9wxf//csn//6alc8l2pv//dKZ1pnem//+6p7mn//+8yrun/////73KV8z//1jM//92qXipeql3qXupean/////////////yKvFq8eryavGq2bRd87///////9o0WfRY67//1+u/////2CuYq5krmGu//9mrmWu/////////////0qx8tTx1Emx//9IsUexS7FGsf/////V2NLYSbTR2NbY//9LtNTYSLRKtNPY//9I3f//Sd1K3f//////////5rnuuX7h6LnsuaHh7bnpueq557nruWa80NhnvGW8//9kvF3pyL7Y7Nns/////2TDX8T//2+k//94psqr//9p0Weu/////06xTbFMsUy0TbTX2O+5yb5wpFzJ1qR0yf/////UyXmm////////fKn//////////0vd/////3Gk///XpNXJ/////77K//+/yv//vKf////////Y2E60//9M3f///////6rAcqSopNikdcmnpf//wKe/p72nvqf/////Wcx+qaGpWsx9qf/////Oq3jOzavLq8yraq5orv////9r0WmuatH//16u89T/////ULFRsf////9Psf//8Lmi4Wi8abz//2Hlq8DC78Pv///dxKj4S8nZpP//c6T//3fJdsn//////////3qm18nYydbJ///Zyf//////////////////x8r//8LKxMrGysPKxKfAyv//wcrBp8KnxcrIysOnycr//////////////////2jM//9izF3Mo6llzGPMXMxpzGzMZ8xgzKWpZsymqWHMZMxbzF/Ma8ynqf//qKn//17MasyiqaSp//////////////////////////////////+rzqTOqs6jzqXOfc57zv//rM6pznnO///Qq6fOqM7//6bOfM56zs+ros5+zv////+hzq3O/////////////////////2+u//9urv//bNFrrm7R//9wrm/R/////3Ou//9xrnDRrs5y0f//ba7//2yu//9t0XHRcq7//////////1OxUrH////////11PnU+9RUsf7U//9YsUHV//9asf//VrFesf//W7H31FWx///21PTUQ9X41P//V7FC1Vyx/dT81F2x+tRZsf//////////RNX//0DV59ju2OPYUbTf2O/Y2djs2OrY5Nj//+3Y5tj//97Y8Njc2OnY2tj///HY//9StP//69hP3d3YT7T//+HY//9QtODY5dj/////4tj////////o2P//////////U93///////9W3U7d//9Q3f//Vd1U3UO3///b2FLd/////0S3//9N3VHd//////////+p4f//sOGn4f//ruGl4a3hseGk4ajho+H///G5//+m4fK5rOGr4arh/////6/h//////////9l5Wfla7xo5f//Y+X//2LlbOX//2rlarxt5WTlaeVr5Wbl//////////9h6WbpYOll6f//Xulo6WTpaelj6V/pZ+n//2rpYun//9rsr8D//63A//+swK7A/////8Tv//9y8f3x/////0T0RfT//2DE///J9f//3sT//8r1///e9nLF//9xxd32ycX//9b3//////////90pHum2snKyrWoX7H/////daSqpamlqKX/////xaf/////dK7//1fddqR3pHik2qT/////0av//6/O////////U7R5pF3Jq6WspXjJ//98pv///////8vK///Gp///zMr/////rqn/////bsysqaupbcypqW/Mqqmtqf//0qv//9Srs86wzrHOss60ztOr/////3TRc9H//3au//91rv////////////9isUbV//9hsWOxYLH//////////1W0RdX//1a089j//1e08thUtP//////////Wt1c3UW3W91Z3Vjd////////tOH3ufW5///2ubLhs+H///O5ceVv5f//bbxw5W68bLz0uf////9t6WvpbOlu5dzssMDb7MXvxu9u6f7x//96pK2lfqbbyX2m//+vqUa3///bpK6l1atYtP//ecn//3rJ///cyf/////Ip9DKzsrJp83Kz8rRyv//x6f/////////////s6m0qbGp/////7CpuM6yqf///////9ar//+3zrnOts66zterea510f//d9F3rnjReK520f//tc5H1UrVS9VI1WexZrFksWWxSdX//////////2ix/////1q0W7T//1y0Xd1f3WHdSLdHt1m0YN1e3f//uOH/////tuG84fi5veG64fm5t+G14bvhcLxz5bnhcrx05XG8dLx15W+8c7z//3Ppcelw6XLpb+n/////ZsP//0b0R/T//8v13/ZVxv////+1qcqn/////9ir////////e6TcpK+l3cn//8un0sr//7vO2av///q5fKT///////+hpv////9Jt32k3aTepP//saWwpf//3smipv//08r//8yn/////3HMcsxzzP//tqm3qXDMuKn////////aq7zO//960Xqu//950f//abFM1WqxTdX///////9dtP///////2Ld/////7/hvuH///u5//91vHblyr506bHA//9zxdj3//////////90zP//vc5rsfTYSrf///////9Vwv//////////zqf//82n26v//3vR//9tsUOzbrFssV60///A4fy5drz//0zJ38n//9XKz6fUytCn/////7ypd8x2zLupuam6qXXM/////92rvs7gq9yr4qveq9+r4av///////99rnyue67///////9P1W+xcrFwsf//TtV1sf//cbFQ1XSxc7H////////22PXY//9htF+0YLT32Eu3ZN1Mt2Pd/////3fl/////3i8weF3vP///bn//97sdemywN3sQPJI9En0///fpP//sqX///////97yf/////Sp9Sn///iydjK18rWyv//4cngyaSm06fRp6Om////////val4zP//vqndyv//38reynnM/////9rK///Yp9an///ZytvK4cr//9Wn///cyuXKwKn//+LK16f//+DK48r//7+p///BqeTK/////////////////////6/Mosx+zK7Mqcznq8KpqsytzOOrrMzDqcipxqmjzP//fMylzM2psMzkq6bM///lq8mpqMz//83O5qt7zMqp6KvLqcepzKmnzHrMq8zEqf////99zKTMoczFqf//v87//8DO////////////////ys6h0cvO7qvOzsTO7avGzv//x87/////yc7pq/////+jrv/////FzsHOpK7/////z85+rn3RyM7//3zRw87Mzv/////sq6Gu8quirtDOftHrq6au8avwq++rpa7Rzqeu6qv//8LO////////////////////////////////drGk0abR//+o0aiurq5T1azRo9F4sVHV//+trquurtH//1LV//+l0f//rK6p0a+uq9H/////qq6q0a3Rp9H//6muebH//6LRd7H//////////3qx//////////////////9V1V7VZLT//3yxo7FltGDVqrH52FbVorGlsX6xVNVi1WXVSdn//2PV/dihsaixrLFd1fjYYdV7sfrYZNX82FnV//9itP//V9VY1aex/////6axW9WrsV/VpLFc1f//qbFmtGO0+9j//1rV//99sf///////////////////////2u0b7RA2VG3bbRE2XG0Zd1G2VO3abRstEfZ//9I2U7Zc7RUt///StlP2UPZXrf//1W3crRB2VDZ//9dt3C0TrdN2f//dLRF2f7YarRC2f//S9n//023UrdntEzZ//9Qt////////2i0////////XLfD4XDd//9o3cLh//9s3W7d/////2vd//9bt///at1ft////////9Lh/////1q3QLpx3cTh/////1i3ad1t3f65T7dm3WfdQbpXt1m3Vrdv3f/////I4cnhzuF9vNXh//9Huv//RrrQ4f//fLzF4UW6///U4UO6RLr//9HhquV6vG60///T4aO8y+H//3u8//+ivMbhyuHH4c3hSLp5vEK6//965c/h//+hvP//pLz//8zh//9+vHnl/////////////37lzr545aPpqeWovP//przMvqblouWsvP//eOn///////+qvKHl//926f//peX//6jlfeX//6u8/////6W8d+nNvqflp7ypvKTlrbyj5Xzle+XLvqvleung7NC+//+i6f//fun//+Hs///RvqHp//986bTA3+z//3npe+m1wNO+s8DSvrfAfenPvv/////////////////////P7///x+//////////////5+zI7+Ps/////1bC5ezk7LbA4uzm7NDvzO/O7///ye/K7///ze/L72fD/////2rDacNow2HESvRixEHy38TM9eDEdMXKxdn3///a99v3/////7r54KR8ybOl//+mpqempab//6im2qfZp///sczPqc6p/////6/RrbGusf///////3W0ct1gt2G3dN123XXd///X4f//1uFJutjh//+s5a68///Uvv//uMBXwrnA///hpP///////+bK/////7LM0anQqdKp86vSztPO/////7DRsK6vsXa0UdnipP//fqTjpP//fcm3pbaltKW1pf///////6um6cnryaqm48n//+TJ///qyebJ6MmppuXJ7Mnnyf///////////////+Gn6qfop/DK7cr1yuan9sr//9+n88r//+Wn78ruyuOn9Mrkp9Op3qfxyv//58rbp///7qfsyvLK4Kfip///6Mr//+nK6sr//+2n56fsp+vK66fdp9yn6af////////////////////////////////////////hqb7Mt8zcqe+ps8y6zLzMv8zqqf//u8y0zOipuMz//8DM2an//73M46niqbbM16n/////2Kn//9ap///uqeap4KnUqbnM36nVqeep8KnUzuSptczaqd2p3qn//+yp7anrqeWp6anbqfSr/////////////////////////////////////9rOQaz4q/qrQKzmzv2rsdGxrkOs187fzv6r3s7bzuPO5c73q/urQqyzruDO+atFrNnO/////////Kuyrvar///Wzt3O1c7YztzOstFErP//4c7izuTO9av/////////////////////////////////////////////wa6+0b+uwK600cTR//+2rv////9m1cbRwNH//7fR///J0brRvK591b3Rvq61rv//y9G/0biuuNG10bbRua7F0czRu6680bvRw67CrrSuuq69rsjR/////8LRt66z0crRwdHD0cfR//////////////////////////9n1f//t7HLscqx//+/sf//edV11XLVptW6sbKx/////3fVqLS2saHV///Mscmxe9Vq1f/////IsaPVadW9scGxotX//3PVwrG8sWjV//94tKXVcdXHsXTVpNXGsf//Utn//7Oxb9W4scOx//++sXjVbtVs1X7VsLHEsbSxd7R81bWx//+xscCxu7G5sXDVxbFt1XrVdtVU2VPZ/////////////////////////////2vVZNn//3q0//9q2VnZZ9l33X20a9lu2Xy0XNlt2WzZfrRV2Xm0o7T//6G0adn//1/ZpbRw2WjZcdmttKu0Ztll2f//Y9ld2aS0//+itLnRVtn//7fdV9l7tKq0ed3//6a0p7RY2W/ZeN1g2VvZqbRh2V7Z/////660cLf/////fN2x3bbdqt1st7vdabd63f//e91it2u3pN1ut2+3pd3//7LduN1qt///ZLej3X3dut2o3andft203avdtd2t3f//ZbfZ4Wi3Zre53bDdrN3/////od1Tuq/dbben3f//pt3///////9nt2O37uGz3a7d//+i3f//////////////////6eH//9rh5eH//+zhUbqstOrhTLr///////9LuvHh///b4ejh3OHn4U+66+Fi2f////////Lh4+FSurrlr7z///Dh7+FUuq3lsLyu5f//3+Hg4d3h4uHe4fPhTrqxvFC6Vbr//+Hh///t4f/////m4f////+x5f//Srq0vKrptuW15bfl/////7Tltbz//7u8uLz//7m8r+Wy5bzlwby/vP//s+Va2bK8ueWw5f//wry45U26t7zk4f////+6vP//vrzAvL28vLz//7a8u+WzvMO8///////////////////Yvtm+qenivt++///Wvt2+q+nbvtW+///cvv//qOm7wNe+///evrrAp+mm6f//4L7//+G+//+l6aTpvMCu6dq+rOn//////////73A///CwOrs7Oz//7/A///t7Ons///r7MDAw8D//+jsvsDBwFnCrelYwv////9ewtTv//9cwl3C1+/T71rC0e9rw9Xv///W79Lv//9bwkLy//9F8v////9G8kTyR/Jsw0Py/////070ZMRN9Ez0S/RjxGXE///N9eLE4cT/////4fbg9uP2y8V1xd334vb/////3PfNxczF88Wp+O/45KT/////ctmv6f////+spvfK8afvp///8Kf//8HM8alGrP//587//+jO//9HrM7R///ErsWuzdH//////////9Ox///Psf//p9XWsdWxzrHRsdSx0LH/////dtnNsa+0////////sbSytHXZeNmwtHPZd9n//3TZ//9xt/////+83f////9WuvTh477EvL3lxbzGvL/lvuXA5bHp/////7Dp7+zu7MTAxcBI8v/////lpP//////////edn///////+0tLO0vd3//9jv48Te9+ak///Grv//2LHXsXrZe9lyt/XhV7qy6f//56S4pf//8qnCzP//6c5IrNmx//982bW0c7f//8HlwuX/////8OxfwvD46KT//8PM86lJrP//6s7//8eu0tHQ0dHRyK7P0f//////////27HcsajV3bHasX3Z//9+2b7d/////1m6WLr/////8ezZ7///SvJJ8k/0//9eyUqs/////+mkuaX//66mrab/////r6awpu7J7cn4yvKn+8r6yvnK/Mr///////////SpyczFzM7M+6n///mpyszGzM3M+KlAqsjMxMz+qcvM96nMzPqp/KnQzM/Mx8z2qfWp/an////////////////vzvXO//9QrE2s7M7xzv//U6xLrPDOTqxRrP/////zzv//TKz4zk+s//9SrO3O8s72zu7O687/////9870zv///////////////9Cuya7Mrv//z67//9XR///KrtPR///Orv/////Lrv//1tHNrv///////////////6zV37Gr1a3V3rHjsdTR//+q1a7V///gsanV4rH//+Gx//+n2f//otn//7a0urS3tKXZqNn//7i0//+5tL60x92m2by0o9mh2f//vbT//6TZ////////ebf//7/ddrd3t3W3xN3D3cDde7f/////wt27tP/////G3cHdeLd0t3q3xd3///////9cuv//+OH34fbhWrr/////////////W7rF5cjlyLz/////x7zJ5cTlyrzG5f//ybzD5f//x+Xpvua+u+m66f//uem06f//ten////////nvv//5L7ovrPp5b626bfpvOn/////uOn/////8uz////////HwP//3O/GwNrv2+9gwm7DS/L//23D/////1H0UvT//2bE//9Q9OTE///f987Fqvir+P//6qT//7Gmsqbzp///0cxUrNGu5LH/////0rD//7+0wLTMs6nZ//98t/rh+eH/////66SzptLMQqr//0Gq///5zvrO///X0djR0q7Trv//1K6v1f/////msf//wrT//8G0yN163/vhven/////YcJnxOyk//+8pb2lu6W+pbql/////7am///2ybWmt6b/////8cnwyfPJ8sn1ybSm78n0yf/////////////9yv2n/spDy/yn//9Hy0LLRcv1p/an96f4p///QKj//0HL+qdBqP//QMtGy///+adEy/un9Kf+p////////////////////////1eq///UzEOq//9Nqk6qRqpYqkiq3MxTqtfMSarmzOfM38zYzFaq5MxRqk+q///lzP//48zbzNPM2sxKqv//UKr//0Sq3szdzNXM//9SquHM1sxVqujMRar//0yq2czizFSq//9Hqkuq///gzP////////////////////////////////////9bz1ysaaz//1bPTM9irErPW6xFz2WsUs/+zkHP//////////9Ez/vOUc9hz2CsRs9Yz////c5fz2DPY89az0vPU89mrFmsYaxtrFasWKz///////9Dz2qsY6xdz0DPbKxnrEnP/////2usUM9Iz2SsXM9Uz///Xqxiz0fPWqxZz0/PX6xVz1es/M5orOOuXaxOz03PQs///17P//9Xz/////9VrOzR6q7t0f//4dHfruuu///a0f//49Hr0f//2dH00dWu////////89Hu0f//79Hdruiu5dH//+bR8NHn0f//4tHc0d3R6tHk0f/////Wrtqu8tHe0eau4q7/////5a7srtuu567p0emu2K7//9eu29H//9/R4K7x0ejR4NHkruGu///Zrtyu///////////////////////////////////////////////////////////E1f//tNW11bnV///I1cXV//++1b3V7bHB1dDVsNX//9HVw9XV1cnV7LHH1eex/LHysf//9rH1sbHV///O1dTVzNXT1f/////A1bLV0tXC1eqx97H//8vV8LH////////K1bPV+LH///qxzdX7semxutXP1f/////vsfmxvNXG1bfVu9X0sbbV6LHxse6xv9XersDZ67H/////////////////////////////////////87H//8PZ2dnO2da0///RtL3Z0rTN2f//xtnT2c60q9nV2cS0s9nHtMa0///XtP//rdnP2dDZybTFtLvZ///QtLbZ///R2cy0ydnW2bDZtdmv2f//y7TC2d7dsdnPtLrZ0tnKtLfZtNnF2c20w7TZtMjZx9ms2ci01Nm82b7Z///L2crZqtnTtNW0stm52cHZ1LS42cTZ19n//8zZ///////////////////////////////////Y2f//////////rtn///////////Ldprf///Dd293g3dnd///s3cvd0t3//+rd9N3c3f//z93i3efd093//+Td0N3/////193Y3ai3693p3f//zN3u3f//793x3ay3pLf//7jV1N3m3dXdobext+3dr7ert8rdo7f//83dsLf//93dyd3//6m34d3R3aq32t1+t9i0492/2c7d/////+jdpbfl3aK3392tt9bd893///////////////+nt8be/////663////////////////SuJI4v//XuJG4v//WOJ9t1+6QuJd4v//R+JV4mS6Xbr//1vi//9A4lri//9vulHiYeJtukniXrpL4lniZ7pE4mu6YbpN4kPi/OH//1fiaLpg4v3hZbr//1Pi//9mukXiUOJM4k7i//9gul/ibrpP4v//YuL//////uFU4mO6bLpqukHiVuJpuv////9iulLi//////////9c4v/////////////////////V5f//0eXN5eHl3uXNvP/////l5dTl2Lzb5f/////Q5drl1bzu5f//6+Xd5c7l/////+Ll5OXRvNjl0+XK5c681rz//+fl17zL5e3l4OXm5dS8/////+Pl///q5f//2bz//9O83OXP5e/lzOXo5dC8///W5f//1+XPvMy80uXSvP//y7z//+nl7OXZ5crp////////////////////////wun//77p9r7/////677wvuy+zOnX6eq+xOnN6d/lzun/////8b7//93p9b74vsDp///0vv//2+nc6dLp0enJ6f/////T6drp2en//+++7b7L6cjp///F6djp977W6fO+8r7//9Dp//+/6cHpw+nV6c/p7r7//8bp///U6f///////////////8fp///////////////////PwEXtyMD17P//Qe3KwEjt///87P//9+z/////Se3z7P7s///RwETtSu397MnAQO307NDA/////0ft+ezMwP//++z47NLA+uzLwM7AQ+327Ebt//9C7f///////2PC5+9owmnC////////YsLm7///4+/k72bC3u/i72XC///f7///////////Z8Jkwv//3e/h7+Xv////////UfJO8lfy//9W8lTyT/L//3LD/////////////1DyccPNwFPycMNY8lLyTfLg7////////2/D//9M8lb0//9V9FXyaMT//1n0WvRU9Fj0//9T9P//////////0fVX9OfE5cTP9dL1///O9dD15sT////////l9ub2dsXk9v///////+L3z8Xg9+H3rPj/////Vsbz+PH48vj0+P///////7v5///tpLim//9Zqv//6cz/////ZM/////////10ffR///20f//+NH9sdfV+dH//9bV2NXZ1drZ27Tb2d3Z3LTatNzZ///63fjd993///bd9d2yt/ndcLpj4mXicbpk4tu8///avPDl/////9/p3ung6f/////5vv//S+3TwP//6O9qwlnyd8XupL+luaZCqFqqW6r/////bqz/////+tH//////////7O3////////0eb6vmvC76T//7qm/////+vMXKrqzP//Zc9vrGbP//9wrP///NHuru2u///e1dzV3dXb1f//2tX/////3tnh2d6039ndtODZ///73f////9m4mfiaOL///Pl8uXcvPHl9OXh6f/////i6ePp//9M7dTAbMJa8v//6MRfyf//caxnz++u//////6x///ftOLZ//+1t7S3/////2niauLdvN685enk6env4/fwpGDJwKX//0OoSMv//3KstrfxpP//aM9zrGnP///VwPKk/////+zM//9qz///QtJB0v7R///90UPSQNL/////QLJBsv/////gtOPZ///k2eXZ////////Qd5C3kDe///93f7dt7dr4vfl9uX15fjl5+nm6fu+6On//9bATe3//+rvW/Ln9v//86TCpcGl//9dqmHJfsm7pv//98lJy0rLXqr//+3M//90rGvPbM////Cu9K5E0vOu8a7yrv//39VCsuO0///htOK05tn/////crr0pP//ocn//8Ol/////6TJ/////8alo8nFpcSlRKiiyf/////4yf////////zJ/slAysWmxqb7ycGm///5yf///cnCpv//vab//76m///EpvrJvKZFqL+mwKbDpv///////1vLWctMy1GoU8tMqE3L//9Vy///UstPqFHLVqhay1io//9aqP//S8v//02oXMv//1SoV6j//0XNR6heqFWoTstKqFmoVstIqEmoQ81Py1CoW6hdy1DLTqj//1Oo7sxcqFfLUqj//12oRqhUy0uoWMtEzf//////////////////////////////////aqp6qvXMcar//0vNYqr//2WqQs3///PM98xtqm+q+sx2qmiqZqpnqnWqR81wqvnM+8xuqnOq/MxKzf//dax5qv//Y6pJzf//Tc34zE/NQM1sqvTMa6p9qnKq///yzHXPeKp8qkHNRs3//36qd6ppql+q//9kqv//9sxgqk7N///wzO/M/czxzHuq9a50qv7MYar//6as////////TM18z6HP//+kz3fP/////6fPqs+sz3TPdqx7rEnSraylz63Pe89zz////////2TSfqyiz3jPes+lrP//fc99rHDPqM///6vP/////3qs//+orG3Pqqx4rK6sqc9vz6usXtJIzXysd6x2z27PrKykrKPPqaynrHnPoaxxz6Kso6xyz6bPeax+z////////////////////////////////////////////////////////0zS/a5Dr////////1XSW9JX0krSTdJG0kfSSq/6rlbSX9JFr/au//9Ar07SQq9P0lnS////////RK9o0kjS/K77rkivRdJm0lrSZ9Jh0lPSYtL//1zSZdJj0kmvVNL5rviuQa9Hr2DSRq9R0kOy//9p0lDSS9L+rkuv967//1jSXdL/////////////////////////////////////////////ZbLh1eXV//9SslCy/////0ey49Xi1Vuy///o1VWy///61UfWRLL31fDVZ7Lg1f///NX//2SyWLJjsk6y7NX+1fbVT7JJskXW///91UDWUbJZskLW6tX71e/VRNZeskayXLL01fLV89VTsu7V7dVIsufVRtZKsvHVaLL//2Ky5tVfsl2yZrL41WGyUtL51WCyQdZFsvXVV7Lp1Vay//9UskyyS7Ln2UPW69X//////Nn//02y//////////////////////////////////////////////////9BtVqy7rT22fy0///q2eu057RJ2u208bTstPW0TdpE2v/////x2fq09LT92eS0StpD2ui099n3tFXaVtr//+W0SNr5tPvZ7dnu2f208tn52fPZ///7tES179no2enZ///r2eq0+Nn///i0QrX/////+tlT2kva5rRR2vK0///wtP//V9rvtEHa9Nn+2Ue1RdpC2vDZQ7VP2kzaVNrptEDaRrX//0fa//////O09rT//0baRbX12eTV/////1DaTtpS2v/////////////////////////////////////s2UC1////////Yd5g3kbevbf//1/eSd5K3v//x7do3sK3Xt7//0PeyLe+t1LeSN5L3mPeuLdq3mLewbdX3sy3/////8u3xbf/////ad65t1XeTN5Z3mXezbf//7u3VN7//03exLf//8O3UN5a3mTeR95R3ry3W97Jt8C3Tt6/t0XeU95n3v60sLpW3mziWN5m3sa3T966t8q38LxE3v//Xd7///////9c3v////////////////////////////////////+q4q26feKk4qK6//9u4q+6//93um3isOKxunHio+L//3Pis+Kv4nW6obpT5q66fbpv4v//ruKjuqviuOJ14n7i/////7birOJ8uv////984na6dLqouv////964nfieOL//7Li//+34rXierq54n66p7r//3Di+uV54v//eLqsuqm6e7ql4nTiqrqn4qS6prpzuv//qeKh4nLipbqx4rTie+Ko4v//ebrfvKbi+eX//63i//////////////////////////924kTmTubivE3mWebkvEvm//9P5u+8//9G5ue8//9S5vDp87zyvFTmQ+Ze5u28///jvFfm//9b5mDmVeZJ5ua86bzxvOy8//9M5qLi/////0jmX+bovP//67xh5uC8Vub75Vzm38D//0rm///hvEXm5bz85au6Qeb//1rmQuZA5uq8//9Y5v///uVR5lDmXeZH5u68////////////////8+n//0m//r5A6uvpQb/36Ui/Q7/16U/t++lC6vrp6en46UTqRur9vkXqRL9Kv///R7////7pRr/56f//7eny6f///elFv0K//L5Av/Hp///95ezp7+lB6vTp6ulO7UPq7un86f//////////Ue3jwP/////XwP/////bwFPtWe1X7dnA2sDhwFrtUu3cwP//Vu1V7Vvt4sD//93A4MBU7eTA3sDlwNjAWO3//1Dt//////fv/////3HC9O/27///b8Ly7/Pv7u//////9unv73DC6+///23C+O9uwuzv7e/x73PC//9ywv/////w73jDX/Jl8nnDXPJ2w3PDZ/J3w///dMNe8mHyYvJj8mby///1713ydcNk8mjyYPL///////9d9GrEYPRrxGj0X/Rc9P//XvRi9GX0ZPRn9Fv0//9pxGP0ZvRp9GH00/XU9dj12fX//9b11/XV9f//6cT//////////3jF6/b/////6Pbp9ur2ecX//+X35Pf//6/49MWt+LD4rvj1+FfGZcaj+Wz5//+i+dD50fn1pP//////////x6ZByv////9ey///X6j//2Ko//9fy///YKhhqP//////////WM1azVXNUs1Uzf///////6Sq////////oqr/////Vs2jqlPNUM2hqlfN//9RzaWqWc3//////////6/P//+zz/////+3rP//////////ts///6+ssqy0rLass6yyz7HP//+xrLTPtc///67Ptaz//7Cs////////sM////////////////930njSedJQr///TK9u0v//dtJ70lGv//9s0nLSa9J10v////9x0k2vT6960v//atJt0nPS//900nzScNL//06v//////////////////////////9tsk7W/////1DWTNb//1jWStZX1mmySNZb2lLWbLL//1PWVtb//1rW//9P1v//VNb/////arJrslnWTdZJ1lvW//9R1v////9V1v///////0vW//9ItUm1ZdpPtf//Wdpi2ljaTLVg2l7a//9f2kq1//9j2v////////////9c2lraS7Vd2mHa////////TbX///////9k2v///////////////3Ded9553qHe///at2ve///St///et7Xt6Lezrf//33e//9t3n7ebN7//9y3//943s+3o97//9S3cd7Zt3zeb9523nLebt7Rt9i31rfTt9u30Ld13v//1bf//061//973v//c97/////////////dN7/////weL//7S6/////73iw+K/4v//trq+4sLiuuL//7zitbr//////////8Diu+L//7e6//+yuv/////E4v//s7pn5mTmcOZq5mzm9Lxm5m7m/////23ma+b//3Hm97xo5m/m///1vP////9j5mXm9rxi5nLm//9p5v////9K6lG//////1XqU+pLv0nqTOpN6kjqVb9Wv0fqVupR6k+/TL9Q6k7q/////1K/UupNv///Tr///0/qUL9L6v//VOpTv1fqWOpUv//////nwO7AXO1i7f//YO3qwOnA5sBe7f///////+zA68DowP//Ye1d7V/t///twP///////3fC++///3TCdcL973bC+u/572zy/O///23yesNr8v////9q8v//afJ7w/////9sxP////9q9Gv0///////////c9dv16sT//9r17Pbt9v/////m97H4//////b4vPl5xsb59qT//6aqp6r/////uKz//////////+/A96T//6iqUq/dt/ik//9usri6Ysn//7fPfdL//8Xi///wwPmkqaq4z7nPZtpQtf////+k3v/////et8bi//////i8//98w/qkZ9r7pP//yaZCysimZahkqGOoYMv///////+qqv//q6pbzf//us///73Puqy7z///uay8z7us//+i0qHSftJTr///XdZe1m+yXNZf1lK1cLL/////UbVr2mra//9o2mna//9s2qbepd6p3v//qN6n3rm6yeL//8jiurrH4nPm//905vm8//9Z6lrq/////3LyfcNx8nDybvJv8uvEbPTu9vf4///8pP//pcnHpabJ////////Q8pEyv//////////Zsv/////Ysv//2HLrKply2eoY8tmqGfLZMv/////X82+z13NZM3//62q//+wqmXNYc3//2LN//9cza+qXs2uqmPN//9gzf/////Cz72svqz//8XPv8///8TP///Az7ysw8/Bz///////////////////qNKl0v//p9JYr1evVa+k0qnSVK9Wr6bSZ9aj0qrS/////////////2LWZtb//2XWbtp52v////9o1v//Y9Zt2nSy/////3OyYdZk1nWy//9ysnGyYNZp1v///////3Dad9r//1S1dtpz2v//VrX///////912v////9v2nHadNpy2lW1eNpTtd+3/////63erN6q3v//4rfht67e//+r3sriu7rgt////////7Der97//83iy+L6vP//vLrM4nbm///////////7vHXmfuZ95nvm//965nfmeOZ55nzmoeb/////X+pc6l3qV79b6mHqYOpe6v//ZO1l7fHA///ywGPt//95wv7veMJ+w///ocNtxG70bfTd9e/2esXo9+f36ffIpcbPWa92smrWyaWnyf2k/////0XK////////bMtqy2vLaMtoqGnL/////////////23N//+zqmvNZ81qzf//Zs21qmnN//+yqrGq//+0qmzNaM3//////////8KsxazOz83PzM+/rNXPy8///8Gsr9L//9LP0M/ErP//yM/Tz///ys/Uz9HPyc///8Cs1s/Hz8Os//////////+00qvSttL//67SudK60qzSuNK10rPSt9Jfr///Xa//////sdL//63S//+w0rvSstJer8/P//9ar1yv/////////////3jWbdZr1v//bNb//3PW//901nDWe7J11nLWb9b//3mybtZ3snqycdZ51luveLJ31nbWfLL/////////////////////ftr///////+h2mC1//+n2v////+p2qLaWrWm2qXaW7Vhtf//YrWo2li1fdp72qPaetpftXzapNqq2lm1XrVctV21////////V7X//////////+m3t97ot7ve//+x3v//vN7///////+y3rPe//+93rreuN653rXetN7//77e5bf//7be///qt+S367fst///57fmt//////O4r66vbr/////0+L///y8v7r/////wbrU4uO3wLrQ4tLiz+L//9Hi////////q+b/////quan5kC9YupBvabm///+vP//qOal5qLmqeaj5qTm/bz//////////2nt//9m6v//Zepn6v//Zu1av///Y+r//1i///9cv1u/ZOpo6v//Wb///23t9cB6wvbA88Bq7Wjt//9r7f//bu30wGztZ+3/////QvBF8HXyQPD//2/0RvD//6LDRPB7wkHwQ/BH8Hby//908v//////////o8Nz8v///////27E///////////txPH27MTz9vD28vbQxbL4yqVuzbzSvdJ9sr/eXb+kw3vFs/jLpf//b81gov/////Xz///2M//////////////vtK/0n6yobL///////+r2v//wt7B3sDe1eL//9bi1+LCuv////+t5qzm/////2nqXr9fv///cu1v7XDtce1J8EjwfMJ38t71zKX//8as//+issPe///Npf//wNKjsv////9jtWS1///Opc+lRspqqGmox6zZz6za0KXRpdKl06X///////9rqGyobstty/////+2qnLNcM1xzf///////////////9rP28//////y6zJrP//yqzIrP//////////YK///////////2SvY6/B0mKvYa///8LS/////6aye9Z61qSypbL///////9mtWW1rtr/////rdqnsv/////////////tt8Xe7rfE3v///////9jiruZCvWrq////////c+3//6bDpcP/////fMXUpXPN/////6iy2eLDuv////9vy3DL/////3TNuKq5qv////+3qv//////////z6zQrM2szqz//9zP/////93PzKz//////////8PS//9or2mv//+rssnS//9ur2yvytLF0muvaq9lr8jSx9LE0m2v///G0mav//9nr/////+ssqHWotatsnzWftak1qPWfdb//6myqrL//7baa7VqtbDaaLX//7PabLW02m21sdpntWm1tdr//7Lar9r/////////////0t7//8fe8Lfzt/K397f2t9Pe0d7K3s7ezd70t9DezN7U3sve9bfvt/G3///J3v//////////2+LHut/ixrrc4sW6///I3s/e3uL//8i64OLd4tri/////7Hmtea35rPmsuaw5kW9Q71IvUm9tOZGva/mR73EurbmRL3///////9s6v//a+pz6m3qcupv6mC/cer/////Yb///2K///9w6m7q///////////4wHTt//////fAd+117Xbt//////nA////////TfD//6HCTvD/////fcJP8H7CTPBQ8P//SvD/////p8N48qjDb8T//0vwcMT////////uxN/1//9+xfT2fcX//+r39cX2xf/////M+f/////RrN7P//9utW+11aXKpkfK//9xy22o//+6qv//0qzTrNSsptbL0m+v/////66ypdb/////uNpxtf//t9pwtf/////V3kq9u+a45rnmuub/////////////eO3//1Hw////////cfRw9P//9fbWpXXNcK////////9ytdbe/////+Hi//9LvXTq//9S8HL016X/////u6rXrN/P2KzWrP//1azM0nGv/////3Kvc6////////+wsqfWr7L/////////////udqxsnO11974t/m3///Juv//yrpMvWS/depjv///ee36wP//U/Bz9Nilbqh4zXfNvKp2zb2qec3//+XP26zarOfP5s/frP//3qzZrP//4c/iz+PP///grODP3Kzkz92s///////////P0tPS0dLQ0v//1NL////////V0tbSztL//83S//91r3av///X0tLS//+w1v//2NJ3r3Sv////////qtb//6nW//+r1qzWrtat1rLWtbKysrayqNa3srHWtLKv1rOy/////////////7zavtq62rva/////7/awdrC2r3awNp0tf/////b3v//4N7Y3tze/////+He3d76t0O4///9t9ne2t7Ouka4/rf//0S4/Lff3kW43t5BuPu3Qrji3ubi6OL///////////////////////9AuP/////j4sy66eLNuufi4uLl4uriy7rk4v//Tr2/5r7m//9RvU+9vOZNvb3m//9Qvf///////33q//+h6v//fup26nrqeep36ma/Z79lv3jqe+p86v//aL///0DBo+3///zAe+3+wEHB//////3Aou187fvAoe167X7tfe3/////VfCkwqXCosL//6PC/////1Tw//978v////+pw///efJ68v//dPR39HX0dvTg9f/////vxOv3tPj///fF+Pj5+GbG2aXhrP//w9r//+Pe///apW+o//++qv//6M/pz3iv/////8TadbVHuELBpO188nj026X///////+hzXrNfM1+zX3Ne82/quKs8s///+3P6s//////8c//////5KzlrPDP78/uz+vP7M/zz+Os/////////////////////3yv//+kr6Ov4dLb0tnS//+hr7nWeq/e0uLS5NLg0trSoq/f0t3Sea/l0qWv49J9r9zS//9+r3uv//////////////////////////+5sv//utb/////s9a11rfW//+41rbWurL//7vW//+01v///////////////////////8jadrXQ2v//xdr//9Ha///G2sfa/////8/aztrL2riyd7XJ2szaeLXN2sra///////////////////u3v//8t5OuP//8OJRuPDe/////+3e6N7q3uve5N7//024/////0y4//9IuOfe//9PuP//ULjm3une8d5KuEu4797l3v////////Li0Lr04uze9uLUuvfi8+L//9G67+LTuuzi8eL14u7i/////0m4///r4tK67eL/////////////VL3B5li9//9Wvf/////Puv//yObJ5lO9/////8fmyuZVvVK9w+bA5sXmwuZZvcTm/////8bmV73//////////2q/qOr//6Lqpuqs6q3qqeqq6qfq//+k6v//bL9pv6Pqper//2u/q+r//0bB/////6rtpe1Fwf////9Dwf//rO1Ewajtqe2m7a3tVvBHwaft//+u7avt////////WvD/////V/D//6bC//9b8F3wXPBY8Fnw/////6Py//+qw///fvKi8n3ypPL/////ofL//3r0ffR59HHEe/R89H70csR0xHPE4fX//+P1///i9f////////b2/////7X4+vjcpf////9yy8Cqo83BqsKqos3///jP98/mrOms6KznrPTP9s/1z//////o0qev7NLr0urS5tKmr6qvra//////rq/n0unSrK+rr6mvqK/C1v//wNa81ruy//+91ryyvta/1sHW//+9sv/////V2v//1NrT2tLa///////////23lK4///z3vXe//9TuP//VLj03v////////////9B4///+eL64v//17rVuta6Q+P//0Lj/uL94vzi++JA4/ji///L5tDmzub////////N5szmz+b//67q//9tv0jBsO3//0nBr+1f8F7wp8L//6Xyq8Oh9KHF9/b//7f4tvioyeqs66zD1v//VrjdpXKocahwqP///////6TN/////8Sqw6r//+6s///6z/3P+8///+ys7az/////+c/8z///ta/////////z0vXS9NKyr+/S/////7Cvr6///7Ovsa///7Sv8tLt0u7S8dLw0v//////////////////xtbH1sXW///E1r6yfbX//9ba2Nra2ny1/////3q1///X2nu12dp5tf////9B3/fe+t7+3lq4/N7///ve+N753li4QN9XuP//XLhbuFm4///93v///////0nj//9I4/////9E4//////YukfjRuPZuv////////////9evf//0ub//1+9W71dvf//Wr1cvf///////6/q//9wv7HqsOr//0Xjcr9xv26/b7//////////////te3//7PtSsG07f//tu2y7bHt/////2DwqsKowqnC//////////+m8qfyrcP//6zDo/Sk9KL0///49vn2/////96lSMpzqP//pc3GqsWqps3/////QNDvrP7P8Kz/////tq/40vbS/NK3r/fS+9L50vrS/////8jWytb//7+y///J1sCyorWhtX6129r//////////0TfXbheuP//Q99C3///////////SuPbutq6S+NM4///Yb1gvf//terT5tXm1Oa06rLqtuqz6v//c7////////+37UvBuO257f////+rwqzC//91xP/////Rxd+l/////////////0HQ/////////////////dK4r/////////////+6s7mz/////6S13dqjtdza//////////9F3///3LpN4926////////////////dsSl9P//y6bHqqfN///yrP//8axC0EPQ/////0DTQtO5r///RNNH00XT////////RtND0/7Suq9I00HT///////////T1say3NbDsv//1dbHsv//wbL//9DW3dbR1s7WxbL//8Ky///U1tfWxLLY1siy2dbP1tbW2tbS1s3Wy9b/////29b/////39r//////////+Ta////////4Nrm2qe1zNbh2qW13tqsteLaq7Xj2q21qLWutam1//+qtf//prX//+Xa//////////////////9huFDf//9T30ffTN9G32O4//9K3////////0jfYrj//0/fTt9L303fSd/hulLfX7hR3////////////////////////13j///ouljj///nuk7j//9Q4+C6VeNU41fj5bpS41Hj/////+S637pT4+K6WeNb4///VuNP4+O6/////2m93rr/////XOP//////////////////9nmYr3//9vm//9jvf////9lvd7m///W5ua63Ob//////////9jm//9guGi9/////2S9//9mvWe9//92v93m1+Zqvf//2ub/////////////wOq76v/////F6nS/vep4v8Pquuq36sbqUcF5v8LquOp3v7zqe7+56r7qer/B6sTq///////////L7cztvO3D7cHt/////0/ByO2/6v//v+3//8ntTsG+7b3tx+3E7cbt//+67crtTMH//8Xtzu3C7VDBTcHA7bvtze11v///////////////////Y/D/////YfBn8LDCZfBk8LLCavCxwv//a/Bo8K7CafBi8K/CrcKr8mbw/////2zw/////6jy////////ssOww6ry//+s8qnyscOuw6/Ds8P/////eMT//6r0//+p9Kf0pvSo9P//d8R5xP/////wxP/////l9eT1//////r2///89v72/fb79v////+jxaLF/////9PF0sXUxe337Pf///v4uPj8+FjG//9Zxm35/////37GzKb//6jN/////0XQRtBE0P/////zrP//R9BI0EnQ/////0nTT9P/////TdO7r0vT//9M007T////////StPJsv//3tbLsuDWyrLf1v/////////////o2q+1///q2ufa4db//7C1/////+na////////////////Vt///2S4VN9luFXfZrj////////pumHjXuNg4+q667pf4//////////////f5v/////g5v//a73i5uHm//9hov//yurL6sfq///I6ny/fb/J6v//V8H/////U8FYwVTBVsFSwf//VcH//////////7PCz+3//67y//+t8v//q/R6xHvEQffm9f//QPf///34pPnNpv////90qP//qc3IqvasTND0rErQ+az1rPqs+KxL0Pesv6++r1rTx69T01nTw69S01jTVtPCr8SvVdO9r1TTyK/Fr8mvxq9R01DTV9PAr7yvwa//////////////8Nbp1v//tbXo1v//z7LWstOy2bLYstSy///i1uXW///k1tCy5tbv1tGy49bs1u3W0rLq1teyzbLVsufWzLLr1v/////u1v////////va8tqytfna9tru2vfatLXv2v//69r/////bLj02v//sbX62v//uLW6te3a/////7m18Nqztfja8dr12v//89q2tezau7XOsre1vLX/////////////aLhd31/fYd9l3///W99Z32q4//9g32TfXN9Y3///V9////////9i31rfXt9ruP//abhm32e4Y9///3Lj/////////////+66auN4vXTj8bp44/e6ZeP/////deNi4///d+Nm4////rr7unbjcOPtuvW69Lr///O6+br//2Pj+rpx4/a67Lpz4++68Lr4umjjZ+Nk4///bONp423j/br//3nj8rpu42/j//9r4/////////y6///////////n5nC9eb11veTm//9yvXa98OZsvejm//90vf/////r5ubmc713veXm//9xvf//7+Zuve7m7eZ6vXLlbb3//+zm4+b//3u96uZvvenm//////////+iv6e/fr/Y6s/q2+rT6tnqqL+hv8zq0urc6tXq2urO6v/////W6qO/1Oqmv6W/0OrR6s3q1+qkv97q3er////////a7dbtX8H//9DtWcFpwdztYcFdwdPtZMFnwd7tXMHV7WXB4O3d7dHtYMFawWjB2O1jwdLtXsHf7WLBW8HZ7WbB1+3/////2+3///////9u8HTwucJ38LTCtcJv8HbwcfC6wrfC//9t8P//tsJz8HXwuMJy8HDw//////////+48rfDuMO0w///tcP//7TysvL//7byusO38rDyr/Kz8rHytsO18qz0fsR9xK30//+v9K70ocT////////r9ej16fX//+f16vXyxOz1///xxP//Qvf//9XF18Xu99bFufhA+UL5/vhB+WzGzqb///usb9LKr//////asvza/dr////////f6mrB4e3/////u8L//7ryufKixO31//9D9/jFScr/////yap1qP////9N0P////9g01vTX9Nd08uvXtNc0///8db///7aQNtp32rfbrhvuGjfa99n3224//9Au///cLh64///fL3x5n29//+pv+Lq4Orh6uTt4+3i7f///////7vy//+5w7zyRPf5xbr4z6bLqsqqT9D8rP////9O0GLT///Mr/LWYdP////////csvXW89b01tuy//9C20PbQdv//3O4bd9s327fcrhxuP/////y5vTm//9+vfPm4+qqv3nw//948LvDvfK9w7zDsPTu9fPE0KZQ0P2sZdPOr2TTY9P//82v///71v///db21vfW3bL41t6y/Nb51vrW37L//761v7X//0Tb////////b99w3///fuNDu0G7Qrt743zj//994/nm///65qG99+b25vjm9eatv+Tqq7+sv+bta8Hl7ajv//968HvwvML//73CbMG+8r/ysfSjxNGm///Spv6szKrPr1HQ////////wLXTpkGtUtBT0ECtQq3Upv//VNDRr2bT06/Qr9Kv//9B1+Cy//9A1/7W//9x3/////+h4///or3//66/5url6v//5+3////////v9f/////VpnPLqs1DrVXQ//9o0////////9SvZ9PVr////////0PX/////+KyQtdE1///4bL//////////0bbR9tF28G1////////dLj//3W4//9Fu///o+Oi40S7//////////////vm//////zm///////////n6v////9wwW/BbcFuwXHB//988L/CvsLA8rL0////////pcWkxdam//////vR//93uMK1drhGu///16apydim2ab/////q812y///d8t3qP//dMt2qP//eah1y3uoeqh4y3io////////0arPqq3N///Oqv///////9Oq1arSqv//sM2szdaq///Qqnyo///Uqq/N/////67N///Nqv//////////////////W9BHrUitXdD//1fQWtBj0GHQ//9JrWfQTK1k0FzQWdD/////Sdti0EStZdBW0F/QRq1LrWDQT61Nrf//WNBKrf//XtBOrUWtZtD////////////////ar///46/Yr9avatPer9uvbNP/////3a9r02nTbtPir+CvSNtv023T16//////2a/cr///36///+Gv//////////////////////////9O1+Sy//9F10fX//9I1///UNdM10rX//9N11HX5bLpskbX//9P1///57L//+ayS9dJ1///47Losv/////////////////////ItVHb/////0/byrX//////////0rbod///8m1Ttv/////S9vFtcu1UNvHtU3bR7vGtUzbzLXEtcO1/////////////3ffdd///3vf//9z36LfeN///3Lfe7ijuH3f//923///frj/////fLh+33m4eLh53324zbX//3zfdN96uKG4orj//////////0y7SLv//027puP/////peOn40q7pONLu6rjqeOo4///Sbv/////////////Qef//0TnqL1D56e9o72kvaW9QOf+5qa9//9C5/3m/////+nq8+qxv7C////t6u/q///q6v//7uro6vHqr7/w6uzq///y6v//6+p0wejt7u14wXrBd8F2wf//dcFzwent7O1ywe3t//95wevt///q7cDC///BwqHwffB+8P/////C8v//wfK+w7T0pMSz9P//8PVF96bFQ/lE+djF2qb//9eqUttOu3vB7+3bpv//5a/kr1Pb////////9OrcplCt/////1TbVdtW20+7sr/dpv//2Kpo0OavcNPqsv//V9ukuP//ULuzv3zBwsK19N6m2ar/////569S1861//9Ru6vjRef//////////9+mz7Wj31K74KaxzWnQUa3/////ctP/////6q///+iv6a/rr/////9x0/////9X11TXVtfrsu2y7LJT1+6yVdf//1jbWdv//1rbpt///6ff//+l36jf//+luP//pN///1O7/////0rnRudJ50vnSOdH5///9er26vfqtL+1v/Ht8O3y7f//o/Ci8P//xPL//8Xyw/L//6XE//+29Lf0//9G9+/3u/jhpn2o//99weKm//9Y11vb//9BxkrK////////S8pNyuOmTspMyv////+iy6PLe8v//////////6HLoaj//6KofMt6y3nLfct+qH7LatD///////+2zdyqtc23zf//26q8zd+qss3AzcbN5qrDzeOq//+5zb/Nwc3//7TN4qrdqrrN5KrnquGq///aqr7NuM3Fzemq5argqr3N7K+7zd6q6Kr//7PN///CzcTN//////////////////////////////////9irVytZK1hrXHQdNBdrf//a9D//1atYK3//2OtZa2i0HfQ//9VraHQWa1XrVKtb9D//37Qc9B20KXQ//9mrX3QXq140KTQddB50HzQ/////23Qo9B70P////9s0HDQX61arVOtWK1UrWetbtCl01ut/////3rQQc7/////////////////////qNP6r///dtP//6PTfdP//7LT//+q0///ftP//6nTeNN807XT/a+t06TT7a+z03TT//+s0////K/3r3PT9a/0r/mvq9Pxr/ivctBc26bT/////3rT+69706HT/q9106/T//+u07bT86/wr7TTsNOn06LT9q/yr3fT7q+x0++v//950///////////////////////////////////////////////////////////////////////////Xtdg12XXedf8svKy//9d1/2y/rJo12/Xddf//2LX//9p1/////9As3fXctf6sviybtdq11zX77Jh11nX///3svmyZtdj1/Syc9fxsmTXetds1///a9fwsv//+7L///OyWtdf13DXdtdBs1vXZ9dt1/ay/////3jXcdd01/////////////////////////////////Wy//9s22Db17V926fbqtvVtWjbo9tp23fb4rVz29+1//90213b//+k2//////otaHbddus23DbyN///6/b5rVu23rb6bXUtXLbrdtr22Tbb9v//2PbYdvQtaXbatuo2///qdvYtd212bXhtX7b2rV222bb///StV7botur22Xb4LWw23Hbbdv//9G15bX//3zb57X//3jb3LXWtd6107XktXnbZ9t722Lbptv//////////////////67b//////////////////9f2//////////////H3///3d9VuMzf///K37XfqbjF39nfwd+xuNjfv9/jtc/fwN/W37C4qLj//6rfst///8vfw9/c38bftrjX3///rbj//8nf0d+239Df///h37Hf0t///9/f//+r39u1//+537jfr7j//7zfvt/N397fsrj//7O4//+w36u4tN/a37S4//+suK64tbjg39Pfzt//////u9+636q4rN+nuMTfrd/C3/////+339vf////////prj///////+z3////////////////6/f1d+u32C70+P/////wuP/////rOPK41i7u+PF41u7vuNZu6/jzeOu48Hj//+t4/////+/48jjxuO647Xjs+P//7Tjx+PS47zjWrv//7fj///L4///Xbu247DjwONhu/////9Vu167uOOy4///V7vU31a7w+P//1S7Y7tcu8TjueOx48zjveNiu9DjX7vP4///yePO4////////9Hj/////////////////////////////3PndOdn52bnYue0vf//rL1253Xnqd9f52PnXef//3DnYef//3fnWudY52Tnbudp57a9T+f//23n////////t72931vnUudV53vnXOdT51HnTuf//7C9ZeevvbO9YOdo56m9eOd856u9//9X52vnb+dU53nnsr3//7G9TOe1vXLnVudq51DnXudZ5629rr1s533neudx5////////////////////////03n//+qvUnr//9A60Pr//+7v0Xr+epB60fruL+8v7a///////vqTOv/////Ruv///zqVetP6/jqRu7+6re///9K6///VOu/v///Uev96kTrSOtC61brU+tQ67m/ur++v/rqV+u9v03r/////0vr////////TutT7kDuRe5S7kTu++1B7v//osH///TtTe5P7vPtocFR7knuqMFQ7kLuqsH57VLrSu5H7vXtVe6kwf////+lwfftSO7//1TuS+797afBo8FM7v7tVu747UPuTu767fzt///LwvbtqcHEwn7B//////////+mwcjCs/D//6nwpPCq8LTwuPC38MrCycL/////q/C58K7wpvD//6jwp/Ct8LLwpfCs8LHwx8L//6/w///FwrDww8LGwtXytfD/////wsP//83y0fLJ8szy///U8sDD2fLS8v//yvLa8tPyw8PEw9fy///L8r/DwcPG8s7yyPL//9jy1vLH8s/y////////vvTFw9Dyp8SpxKbE///D9Lv0ufS99Lr0/////7/0wfSqxKzE///A9K3Eq8TC9P//////////qMT/////////////9MTx9ff19sS89Pb1///99fT1+/X69bj09fW28P718/X49f///PXy9f//Svf1xPn1//////T3S/dJ90f3SPdM9///2cXy9/D39ffz9///9vfaxfH3/////7z4/////0X5RvlH+f/////H+b35T8rqqv//aK3//7jTt9NAsEKzfNf/////e9f//+q1uLj//7e4ubj//9TjfudY61rrWev//6vBV+668KX55Kb//8nNys3IzcfN66r//6nQp9D/////ptD//2mta61qrajQ/////////////////////8TTwdO/0/////9BsMLTRrC808vT///N073T//9DsM7TydO708DTytPG08PT//9IsMzTvtP/////x9O500ewRLDF0///yNO600WwQrD//////////0yzpddLs///qNer10izRrN+16nXp9ek16zXrdev17DXfddFs6LXodeu10ezo9dJs0SzptdNs///SrOq1/////////G1v9v//7Tb7rX//+ffvdux2+y1ttvvtbrbuNvyteu1/////7Lbtdvwtf//s9v//77bvNu327nbu9vttf//////////////////6N/u3+Tf6t+6uObfwLj/////v7i+uO3fwbjCuOPf8N/DuL24vLjs38S44t/l3+/f69//////9OPp47u4//////////9qu93j8uPe42W7///b4///5OPc42e71uPx42i77uPv49fjbbvm4///4OPn49rj///z4+vj5ePV42m77OP//2y78OP//+rjZrvo4///4uNku9nj4ePt49/j/////+Pj/////////////8G96d+y57vnseet56rnwr2o52u7oefAvafnv72s56nnuee0567ns+e7vavnvuei56Pnuue8vb/nvr3A57Dn2OO256/nuOe15////////6bnub2957q9pOe9vWTrt+e85/////////////9h67i9wL9r62fr//9l62Drb+v////////Ev///XOto62nrX+te62zr//9i613rY+v//27rW+tt62rrwr/Bv//////Dv2bry/D/////////////We6xwV3uWu5h7mfuXO7//3DursFq7l/ua+5m7m3uXu6zwbLBYO5u7ljubO6swf//ZO5j7mjuW+6wwf//tMFi7mnutcFl7v//////////rcGvwcfwxfD/////zPDJ8M3w//++8Mbw0fBv7sLwz8Kl573wyvDE8MHwvPC78NDw///A8L/wzcLI8P//zML/////zsLD8M/w///e8t/y///Jw9zyxsPk8v//ysPm8tvyzvDo8t3y///Hw+Py///l8uDy5/Li8uHyyMP/////xfTG9P//yPSuxK/EyfTH9P//xPT//0L2RfZB9v//+sRD9vnE+MT3xET2UfdP9///TvdA9lD3RvZN9///+ffX9/f328X49/r3//+/+PrFvvi9+PvF//9axm75p/mm+aj55aaq0P//z9PQ0////////8Db//9H9sD45qZsravQ////////sddOs///wtvB2/O1///FuMHnw73//8S9////////xb/8xeem////////rNDtqq7QrdBtrf//0dP//9jTSbDW09TT///b09LT09NKsP//TrD/////3NNNsNrT19PV00uwTLDZ0///////////ULOy1///VbPC11SzxNf/////uNdSs8PX//+z11Ozv9e7173Xt9e+1/////9Ps7rX//+517XX///A1/////+817TX//+211Gzwdf///////////a1zdv////////J28vbxtvF28Pb///K28zbyNv//8fb9LX1tf///////////////8/bzbjy3/jf89/03///+d///8+4///HuM648d/E28q4yLj33/bfybjLuPXfxrj//8y4//////////////bjdLv/////QuRB5P//++N2u0Dk9+P44267cLv///3j9eNyu3G7+eP+4/zjc7v6487bb7v/////wufJ58a9///N58q9xefD5///zOf//8W9y+fHvci9xOfJvcrnxufH58jndbv///////9w63zr///Kv3freev//8i/cet16///eOvGv8m/e+tz63Treuty63brx79y7v//ce63wXfuucH/////tsFz7rrBdO7/////de547v//uMH//9bw/////9nw///T8NXw/////9Tw1/DY8Hbu0vD/////zcPs8u/y8fLq8uvy7vLw8s7DzMPLw+3y6fLK9LDE///L9P////9J9vvES/b8xEj2Svaoxf//Uvenxf33/Pf///v3/////0j5SflL+Ur5//9Qyuim//9urcXX97X///rf0ML///Ly/////6Oo////////V7P///////9Ws///0Nv4tdLb0dv/////+9/QuEPkRuRF5P//ROTO59Dnz+f//8y/////////y7///7vBee577nru/////9HC////////9PLz8v//zPSxxP/////9xFT3U/dbxv////////////////////////////////////////////+kqK/Qb63I18bX/////8fX1NvV20Pg09v///zfQeBA4ELg0bj+3/3fROD//0nkR+T//0jk0+fR5//////S533rfO597tLC///18s30ssT//0z2Vfepxf///vdM+aWo//9xrXKtsND/////sdBwrf//VLD//1Kw//9RsFiwULBZsN3TVrD//1OwV7BVsE+w/////1+z//9Zs8zXXrP/////YLNas///W7P//8rX/////1iz///L112z/////8nXXLP/////RLb//0a2/////9jbRbb5tf21///kuEng2tv+tf/////d297bQ7b//+Db///i2///49vX29bb5NtCtuHb39v//0C2+7VHttvb3NvZ2///Qbb//////LX///q1SODfuNq4/////9W4///luNa4///SuOG43rjguP//17jcuNO41LhQ4E3gReBK4P//4rhR4OO42bj/////R+D//0/gS+BO4Ezg3bhG4Ni4////////TOR4u3u7//9O5P//pbtN5H27///PvU/k//+ku0vkprv///////95u///27h8u///ert+u6K7d7unu6O7//+hu0rk///////////Wvf//0r3////////Zvf//1ufaveLn2+fLvePn3efVvd7n///UveHnzr3f59Xnzb2q69O9///Qvf//2L3//9Tn///Y58y91+fZ59rn173c5+Dn5Of//9u90r+l66vrqOt+66zroev//6fr///Nv9O/rev/////z7///9m/1L+v66nr0L+i69q/o+uk69u/2L/Rvf//zr+w69y////Vv67r0b/Wv9e////DwaTure6q7qzu///AwaXu//+r7rzBp+7EwaPuqO6v7qbrqe6i7r3Boe6+wbDuv8Gu7sLBfu7//8HB//+m7tzw6vDl8Ofw2/DTwv//2vDWwtXC///p8OHw3vDk8P//3fD//9/w6PDm8P//1MLt8Ovw4vDs8OPw///58s/DQfP/////T/bWw+Dw9/LSw/jy/fL/////1MPVw/byQPNC8/ry/PL+8vvyQ/PRw9fD08P//9DD0PT//7fEzvT/////0vT//9P0tcTU9NH0///P9LjEtMTV9P//tsSzxP////////7E/////0DFTvZN9lD2Ufb//0HFVvdb96rF//9Y9///V/da91n3//9D+P//3MVC+ED4//9B+P////////7F/cXB+ML4QMb//035Tvlnxv//bcb//6n5yPmmqP//zdf//87XUuBQ5OXnxsH//8XB7vBE8///RPinqN7TWrBhs1TgU+Dcvebn3b2x7tfC////////dsaoqMvN39P/////YrP//8/X0Nf//+Xb//9Itua4//9W4FXgV+D//1HkUuSou92/3r3ev///te6y7rTus+7Hwf//7/BG80XzpMtcsFuw4NP//9HX/////+fb5ttJtv//WeBa4Fjg/////+i457j//6q7qbv//+fns+ux67Lr37+37rbu///y8PHw8PBH8///qvmpqHOt//90rV2wXrDi0+HT0tf//2izZrNjs2ezZbNks/////9Kturb///tuEy2Ubbs21O2UrZVtuvb6NtPtku2Tbbp21S2ULZOtu+47rjsuPC4///quOu4///puP//W+D/////VOT//6y7rburu///U+T//1Xk///q5+zn///nve3n4L3p59+96b3lvea94r3o5+G97ufr5///6L3//+O95L216///t+u26///uOvgv7Tr/////8vBuO7IwczBysHJwfPw9vD///Xw///08NjCSPNJ89jDSvPZw/////+6xP//ucRS9v////9CxVP2XPerxazF//9F+P//Qsb///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+qqP//arNps1zgXeD//667uevqvbrrue6rqP//stB2rXWt///j01+w5NPV1///1Nf//9PX/////+7bWLb/////7dtXtv///////+/bVrb//1/gYuBg4GHgZeBe4GbgY+Bk4LC7VuT/////r7v///Ln8Of/////673v5/Hn///svf//u+v//7zrzcH//0zzTvNL803z1vRU9v////9v+ayod63l0+fT5tP//9jXbLP//9bX//9rs9nX///a19fX//////vbYLbz2/nb/////1u2Xrby21m29tts4F22///x2///99v02/rb8Nv421y2X7b121q2///yuGjg8bhv4G7g+Lj///m4cODzuG3g97hy4Gng//9r4PS4Z+Bq4HHg9bhz4P/////////////2uP//sbtb5GHkWeRi5P//WORd5GPkYORf5F7k//9X5Fzk/////1rk///xve69++dB6EPoQOj45/rnRehC6PznRuj550To7731vfO98+f0vfC99Of25/Xn/ef+5///8r3//+29//////fn///G6+K///+96+O/5r/C6///v+vlv//////D68TrvuvH68Drxevkv///4b/B6///v+7Qwc7B0cHPwb7uu+667v//ve7/////vO5F8d7C+/D68P//2cJB8UDx9/BD8fzw3cL58ELx+PDawtzC/fDbwv7w//9E8VLz///ew0/z//9T8//////bw1Hz4MP//93D//9Q8///38NU89rD//////////+8xL7E///Z9L3E1/Tcw9j0u8RDxUXFVvZExVX2//9h963FYPeuxV73Xfdi92P3Rvj//1/3/////8b4w/jE+MX4XMb//1H5UPlP+XD5//+++av5bsatqGCw//////////////q4///////////////////2vf/////I6//////fwv//VfP///////////////+s+a6o7qp5rXit//9jsP//6NNhsOnTYrD/////39fb1/////9ts97X3dfc126z4Nfh1////////0PcQdxF3EbcTNz//0jcStz//0Lc/Nv//0nc/////0vcRNxH3P3bYrZA3P7bYbZjtv///bh14HfgduB74Pu4//944HTgeeB64Py4/rh84P//Z+Rm5P//ZORl5LO7tbuyu7S7TehO6Eno//9K6Pi9/b33vf69+b1L6P////9M6EjoQL77vf/////6vfy9//9H6P//yuvov//////M6+q/z+vL68nrzuvpv83r///nv//////TwdbBwe7//9TBwO7SwdXBRvFH8Ujx4ML//0nx///hwuLDWPNZ81fzVvNa8+HD3fTb9Nz03vTa9N/0WPb//1n2V/ZGxWT3r8Vl90j4R/j///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+vqGS2/////0C5////////trv/////7L///+u////////////jw3zER8WwqGSwQbn//1vz//////////////////////////+my/////+xqP//tKizqLKo/////6XL///Nzf//z83vqv/////xqszNzs3wqtHN0M3Szf////////////////////+20LTQfK2z0KOtfq17rf//pK3//32toq3//6GttdD//3qt////////arDr0/HTZ7BusP//abDu0/DTbLDq0+3TaLBlsOzTa7Dv022wZrD//////////+PX5tdws///erN2s+TX/////36zd7N8s3Kz//9vs3GzfbPl13WzeLN0s3mz59d7s3Oz4tf/////////////////////Tdxltk/c//9ntmm2//9O3Ga2arb//2i2////////R7mj4E+5fuD//1C5Rbn//6Hg/////0q5//+i4EO5Qrn//025TLlLuUm5Trl94ES5RrlIuf////+4u7u7//+/u7m7vru8u///t7v//727urv///////9S6EO+Qb7//1Po//9EvkK+UehQ6P//8L9P6O6/7b/Q60W+77/R6/K/0uvxv9jBw+7XwdzB2sHbwePC2cHC7tPr4sLkwv//5MPlw///4PT//97F3cW2qP////9Vym+w//9SylPKUcr//1TK/////6rLp8usy6jLt6i6qP//qcu5qKvL/////7io///////////VzdfN9KrTzdbN1M3yqvWq///zqv//////////uNC80LnQ//+nrf//qK3//7vQ//+90L/Q//+lrb7Q/////6at/////////////+7XutDy0/vT+dP00/XT+tP803Gw///30/PTcLBysPbT/dP40/////+hs/HX6dfv1/DXorP//+jX6te30OzX7dfr12y2////////VtzU61fcVNyjs262U9xZ3Fjca7Zc3FLcW9xQ3FrcVdxttv//quD//6Xgq+Cm4KTgp+BRuf//qeD//6jgUrnBu8C7buRx5GnkbeTCu2zkauRw5GvkaORv5P//WehIvkrxVuhX6FXoUdxHvlroVOhGvkm+WOjV6/O/1uvX6///xO7dwUvxTPH/////TfFd81zz4vT//+H0W/Zc9lr2Zvewxbuoqq2prXWwdLBA1EHU/tP//3Ow9df///bX8teks/PX///01///////////X9xh3F3cYNxvtl7ccLb/////c91VuVS5//9Tuf//rOCt4P////9z5HXkxrvDu///xbvEu3TkcuT/////////////Yehe6F/oTb5g6FvoXOhKvv//S75d6Ey+///b6///3OvZ69rr9L/Y6//////////////I7sXux+7gwcvu38HJ7szuyu7G7t7B//9P8f//UPFO8f//UvHlwubCX/Pnw1HxXvPmw+X05vS/xOT0///j9P//XfZIxf//SfjI+Mf4//9Dxl3Gyfhx+f//b8a8qPaq//9Wuf//wMS9qKutpbNxtufC96r//8HQwNBC1P//eLB2sHqwRNT//3mwd7D//////////0PUqLP81///p7Ops0LYq7P+10DY99eqs0PY//////nX///61/jXprP//0HY+9f91////////23c//9s3GrcYtxx3GXcb9x23G7cebb//3W2Y9z//2ncd7b//2jceLZ6tmvc//9ytnO2d9x13P//dNxm3P//ctz//3a2//////////90tnPcZNxn3HDc/////////////7rkt+D//7Dgw+DM4LPgYbn//8DgV7lZuWW5seD/////WrlcuWa5W7n//////////2S5ueD//67gYrm44F65yuBjucjgvODG4GC5r+DJ4MTg///L4Fi5/////2e5Xbn/////teD//73gweD//8XgX7m04LLgvuD//////////7vguuD//7/gwuD//8fg////////eOT//8e7pOR65My70Lut5LXkpuTIu///quS24P//ybux5LbkruT//7DkueSy5H7kqeT/////0bv//827fOSr5Mu7peTKu7PkouR55M67uOT/////e+Sv5Kzkp+R35HbkoeS05M+7t+R95KPkUr7/////////////Wr5VvqTooehn6FC+////////T75Wvv///////2XoVL5x6GPoZOhOvqPoWL506Hnoc+ju62/od+h16GjoYuh96Fe+fuj//3jo//9t6GvoZuj///////9u6Hvoauh66KLo/////1O+//926Hzocuhs6FG+////////qORw6Fm+aej/////////////9Ov3v/Pr8OtE7Pu///9B7PjrQ+zp6/br///9v///4ev//9/rQuz//0Ds/uvt6+zr4utAwP//6Ovy6/3rQ8BF7P//6MFFwP6/5uv//+/r3uvg6/W/QsD6v+fr9+vx60HA3evjwfnr/Ov8v///6+tEwPm/////////+L/16/vr9r///+Tr+uv/////5ev////////////////////////q69Lu///X7uXB58Hd7uHB7O7j7tju2e7i7v//7sHh7tHu4O7U7u3u7cHrwdXu///o7v//2u7n7v//6e7Q7ubB///q7v/////e7v//6sHb7v/////sweTu////////5MHW7uXu///f7uPr5u7T7v//6cH//+vu///iwc7u//////////9g8Vnx6cL//1TxY/Fb8dzu//9l8VXx///owl/x6sLywvDCYfHxwlfx//9Y8V3xYvH//83u68Jq8Wfxa/Fe8VrxaPFq81zx///uwv//7cLP7u/CZPFm8ezCafFT8f//VvH/////////////////////c/P//2Pz68Nx8/////9h8+zD//9s8///aPPxw3LzYvNl8+nDdPP//23zcPPvw/TD8sNp82Tz///tw+7DYPPqw///6MPww2/z88P//2vzdfP1w////////2fz//9u8/////////////////P0QvX19Pz0ZvP69On0QPXDxO30/vT09P/////CxP////9E9fb0///79P305/RB9fL09/Tr9O/0Q/X59Oj07PTu9Pj0///BxPH0////////////////6vT///////////////////D0YfZm9k/FaPb//0nF//9k9mr2TsVKxf//S8Vg9mf2TcVl9kzFX/Zj9mL2//9e9mn2////////scVt93D3bPdu92/3afdq92f3/////2v3aPeyxbPF/////0v4//9N+P////////////9M+E74///gxf//SvjfxeHF////////y/jM+ETGyvj//1P5UvlU+V/GVflexlb5cvl1+XT5aMZz+f///////3LGcMZxxnfGwPnB+b/5yfn4qv////9E2Hjcpeh28//////5qv//rK17sP////9F2P//Rtiss///fbZ63Hnco7Z8tnvcfraitqG2e7b///////9ouf/////Q4M7g///P4M3g///Su///1bvXu9a7/////9O71Lv//6fopuhbvqjo//+p6Fy+////////TexL7PPu//9J7ErsRsBG7E7sSOxM7O/u//////Hu///y7vPB7u7ywfDu78HwwfHBR+z/////9cJu8WzxbfHzwvbC9ML///////9383jz9sP//0X1R/VG9cTEUMVt9mz2a/b6qv//qsn//1jK6aZWylnKV8r///////+uy///waj//8KosMu/qK/LrcvAqL6o////////////////2M3bzf2q2s3Zzf///Kr7qv//QKvczf6q/////////////8bQrq2vrbCtx9DD0K2txND//8XQwtD///////+ksP////+hsEXUorClsEbU//9+sHywfbCjsP////////////+ts0nYtbNI2P//S9ixs0rYq7avs7KzrrOzs7SzsLP///////9H2Ke2fdz//6Pc/////6LcrLaotqm2fNx+3KHcpLamtv//qraltv/////T4NHg0uBquWu5///U4Gm52Lv//9q72bv//7vk/////7zkq+j//6ro/////0fASMBP7EnA///27v//9O7///Xu9MH//2/x98P////////1wUGr//+msEfU/////0zYtrOttqTcptyvtq62sLaxtqXcbrlvuW2527tsudXg////////3Lus6FDsSsD2wXDxdPH5wnHx+sL4wnXx+8Jz8f//efP3wvjD///N+P////9Cq7izt7P//////////7K2qNyn3LO2/////9ngc7lwudjgcrnW4HG5///X4P//veTdu///r+j//12+rehevl++ruhgvv//Uez//07AS8BQwFPsTMBS7E/A/////03A///57vvu//////fB+u74wfju9+7//3fxdvH8wnjxfvP6w33zevP5w3vzfPP//0j1SfXFxP//U8X/////bvb/////UcVSxW/2/////7TFtcVx9/////9Fxs/4R8b//8740PhGxlf5//+t+f///////////////0Or////////dLn//77k//+w6FHAUsD//0Sr//9hvvvDsa3///////9TwP//4sWyrU3Y//+p3P//q9z//6rc///d4Nrgdbn//3a52+Dc4P//wOTF5N67v+TB5Mjkw+TH5MTkwuTG5N+7/////7Po//+x6GO+//9ivrLoZL7//////////1bs/////1XsVMBU7Pzu///+7kHvQO////nB/e6h8f3CffGi8f7C//978f//fvF88XnxQMN68f//////////ofP/////o/Oi8///SvX//0v1////////cPb//7fF//+2xU/4UPhIxtH4//9pxv//s620tsrkyeS16LTo//////rBQ+9C76Xxo/Gm8aTx//////zDpPOl86bz//9x9v//cvf//9L4//////////////////+0rf////9X7ETv//+1rf/////gu///WOxBw6fx/cP//0z1TfVUxVH4tq27s7yzTti1tra2rNy3tv//ern//3y53+Dg4N7gd7l4uXu5ebn/////y+Thu+K7/////7zoZ7636Lbo//+76GW+/////1vA//+46L3ouui56P//Zr7//1nA//9a7FXA//9b7P////9Z7P//WMBWwFrA//9XwP////////////9F7///Su9G70nv+8H//9TtSO9H7///RMNCw0XDQ8Oo8anxqvFGw////////6rzQMSo8///QcSn86nz/sNR9U71//9P9VD1cvZWxf//VcX//3T3c/e4xf///////+PFScZgxlj5rvmv+f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7etrdz/////4eDM5M3k47v//+S7vuhovv/////8wf//q/H//0fDrfNCxKzzrvOr83X2UvVT9f//xsT//3T2/////3P2//9197D5/////////////////////////////////////7it////////ua3/////p7BI1P//T9j//7i2//+7trm2rtz//722//+6tv////+8tv//frn//+Lg/////+PgwOj//325obmiuc/k///O5OW7///mu///0OS/6Oi7ab7//+e7////////XMDB6Gu+ar7C6MXow+jE6Gy+//9hwF/A/////17AXez//2DA/////1zsS+///17sXcBf7E7vTO9N71LvS8NR71TvU+9Q70/v///9wf//////////rvH//63xSsNIw0nD//+s8f//sfP//0PE//+w86/zRMT//1j1V/X//1X1//9U9cjEx8RZ9Xb3ucV39lfFdvZW9f//d/fkxf//YcZZ+f//sfn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7qtUNhV77ut/////9Lk0eRg7P////9X7///Vu///0zDsvOz88nE/////7L5qLC/tr625ODm4KS55eCjuaW55+D////////U5Nbk1eT//9jk////////6bvX5NPk////////2eT//8zo///P6NHox+jL6Mjobr5xvnO+yejK6HK+zejQ6M7odL7//3C+xuhtvv//b77/////Y8Bm7GTsY+z//2ns//9o7Gfs//9i7GLAYez//2XsZMD/////Wu///17vW+9d71zvWe9f72LvYO9h70DC/sFY72Pvs/G28bjxt/H//7HxtfGw8f//svFNw6/x//+08f/////A87XzRcT/////RsS087nzv/O3877z//+78///uvO987jztvP//7zz//9g9V71ysRd9WP1YfX//8vEXPVa9f//W/XNxF/1zMRi9Xj2fvb/////efZbxaH2WsV99nz2WcV79ljFevb//333ofd+9///e/e7xXj3fPej9///ovd593r3usVS+OfF//9T+OXF5sX/////0/hKxnb5//9qxv//s/lrxrT5tfnD+cL5esbN+f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6mw/////+ng///o4P//6rvru9rk///S6Gzs/////3W+ZcBq7P//bexmwP//ZO9r7LnxTsPB8////////2b1ZPX/////ZfX/////ovb//1zFpPfqxbzF6MXpxdT4Ysb//6qw////////uvH/////SdT//6a5///b5P/////su9zk////////1OjT6GjAdr53vv//1+jW6NXo/////27scez//3Dsb+xnwGjvZu9l72fv//9Pw7zxvfFQw///u/H//8PzwvPF80fExPP//2f1afVo9f////+j9qb2pPal9qX3vcX///////9U+FX4Vvj//0vGY8a2+auw//94vmnAvvH//6b3/////8T5StT//3vGrLBy7P//v/H//8bz/////6f2p/etsP//3eTe5P//7bvuu9noer55vtjo//9p7///wPHC8cHxU8NSw1HD//9exaj2//9dxan3qPf//0zG1fi9s+rg////////4eTf5ODk/////+Lo///d6Nro4ej////////j6P////98vuDo3Oj/////2+jf6N7oe77/////fex47Hbsoex37P//c+z//3ns/////3Tscu917KLs//////////////////987GrAe+x67P//fuz//////////2rvbe//////bO///3Tvb+9z7///ce9w727v//9r7///Q8JCwv//RMJBwnXv/////////////8jxy/H//8nxzfH////////O8f//xvFYw8fx///F8czx///E8cPxV8NVw1TD/////////////////////8rxz/PV80rE0PP//9Pz1/NLxNLz///K8///yfPW883z///L89TzzPNJxEjE///H88jz0fP////////O8////////////////2z1b/X//////////1bDbfVz9XH1a/V29f//avX//8/EcvX///////9u9c7EdfX/////dPX//////////6v2qvb///////+x9v//rfaw9mDF/////672r/b//6n2rPZfxf///////7/FtPev97P3//+297L3//+u9///wcWx97X3wMWs93D1sPf/////rff//6r3//+r977FWvhc+F/4W/hg+P//Wfj//1f4///rxV347cXsxVj4Xvj//////////9r4Tcbb+P//2fjW+P/////Y+Nf4Wvn//////////1z5W/n/////efn//3j5d/l6+f//c8Z0xsr5zvn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////76zr9zt4P//p7nr4P/////s4P///////+Lk4+Txu++75OTwu+jo///r6OXo7Ojk6Obo///n6Oro/////6G+7+ju6H2+6ejt6H6+////////////////rOz//2/A//+n7GvA//+k7Krsrez//3DA//+p7Kbsruyl7P//q+xswP//o+xtwP//bsCo7P///////6nveu97737vfO///3bv/////3nvpe997/////9Fwv//p++k70bCpu9376Lvo+///6Hv///////////S8dTx1/H/////0fH//1nD2fHQ8drx///W8djx3PHV8d3x0/HP8VrD///b8VvDTcT/////////////eO/x8+jzT8Tk81DE/////+3z5/Pd807E6vPl8+bz///Y89/z7vP//+vz///j8///7/Pe89nz7PP//9vz6fPg8/Dz3PNMxNrz4fPi8////////331//979f//ovX//671pfV89Xj1p/V+9aP1evWq9Xf1ofWm9aj1q/V59f//r/Ww9an1rfWk9f//wfbE9v//YcX//8P2yPbG9mLFvfaz9rL2ZMW/9sD2vPa09v//ufas9f//tfZjxbv2//+69v//tvbC9v//t/a798X2x/a+9rj2vPe+97j3wsX//8X3w/fDxcL3wfe697f3vffG97n3v/f//2n4bvhk+Gf47sVr+P//cvjA9///Zfhv+HP4avhj+G34//9s+HH4cPjE92j4Yvhm+E7GT8Zh+P//5vjd+OX44vjj+Nz43/jn+OH44Pje+P//5Pj//135//9e+f//YPlf+WL5Yfl8+Xv5t/n//7j5///F+XjGfMb//8/5fcb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v7P////////QxMn2//9QxlHG///As+7g//+oufDo/////7Dsseyv7Kvvqu9Hwt/xrO/e8f/////z81HEU8Ty8/////9SxP//sfWz9bL1yvZlxf//78Xo+GP5/////9L5wbP//+Xk//+ivv///////7Pssuz//63v////////VMTRxMf3y/n////////Cs/K7//+jvv//9PP//3T4wLb//////////67v////////ZMbBtqS+SMJ1+MK2///x6HLAtOy17P//ccD//6/vTMJKwkvCScLg8VzD////////tfW09bf1tvXSxP/////L9v//zfbM9mbFyPf//3b4d/jwxWT5ffl1xv//sNy27LDv9fPv4P//se/i8eHx//////////94+FLG//9l+X75////////qbny6PPo//+37Kq5//9dw+Px///P9mfF0PbO9nn4///p+P//q7n//7Tvs++y7+Tx/////+jx5/Hm8eXxXsP287n108S49dH2y/fK98TFyfd8+Hv4evj/////87v//7jsTcL///fz+PPM9334/////+r4Zvm5+dT59LtOwunx+fPS9n74/////6a+//+17+rx+vP78/zzvvX//7r1aMW99bz11MS79dbE///VxNT20/ZpxWrF/////8bFzffFxf//o/ik+KL4ofhUxv//6/js+O34U8Zn+Wr5aflo+f/////T+f////////////////////////////////////9zwP////9lw7/11fb//8fFzvf/////1fn///////90wP///////7bv///P9///oflKyfzdSqFXof//WaFboV+hYKFjoWShZ6FooWuhbKFvoXChc6F0oXeheKF7oXyh///////////GocehyqHLocihyaFcoU2h//9Pof//UaFSoVOhVKH//32hfqGhoaKho6GkocyhzaHOod6h36HgoeGh4qH/////TKJNok6iSaH//62hQ6JIoq6h//9doV6hr6HPoUGh0KFEoUGir6KworGisqKzorSitaK2oreiuKJHoUah1aHXodahSKFJos+i0KLRotKi06LUotWi1qLXotii2aLaotui3KLdot6i36LgouGi4qLjouSi5aLmouei6KL//0Ki/////8Sh///pouqi66Lsou2i7qLvovCi8aLyovOi9KL1ovai96L4ovmi+qL7ovyi/aL+okCjQaNCo0OjYaFVoWKh////////////////TqH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////DoQAAAAAAAAAAADAM/wEwAjAO/yIgG/8a/x//Af8w/iYgJSBQ/mT/Uv63AFT+Vf5W/lf+XP8TIDH+FCAz/nQlNP5P/gj/Cf81/jb+W/9d/zf+OP4UMBUwOf46/hAwETA7/jz+CjALMD3+Pv4IMAkwP/5A/gwwDTBB/kL+DjAPMEP+RP5Z/lr+/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9b/lz+Xf5e/hggGSAcIB0gHTAeMDUgMiAD/wb/Cv87IKcAAzDLJc8lsyWyJc4lBiYFJsclxiWhJaAlvSW8JaMyBSE+IOP/P//NAkn+Sv5N/k7+S/5M/l/+YP5h/gv/Df/XAPcAsQAaIhz/Hv8d/2YiZyJgIh4iUiJhImL+Y/5k/mX+Zv48IikiKiKlIiAiHyK/ItIz0TMrIi4iNSI0IkAmQiZBJgkmkSGTIZAhkiGWIZchmSGYISUiIyIP/zz/D/88/wT/pQASMKIAowAF/yD/AyEJIWn+av5r/tUznDOdM54zzjOhM44zjzPEM7AAWVFbUV5RXVFhUWNR51XpdM58gSWCJYMlhCWFJYYlhyWIJY8ljiWNJYwliyWKJYklPCU0JSwlJCUcJZQlACUCJZUlDCUQJRQlGCVtJf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/biVwJW8lUCVeJWolYSXiJeMl5SXkJXElciVzJRD/Ef8S/xP/FP8V/xb/F/8Y/xn/YCFhIWIhYyFkIWUhZiFnIWghaSEhMCIwIzAkMCUwJjAnMCgwKTBBU0RTRVMh/yL/I/8k/yX/Jv8n/yj/Kf8q/yv/LP8t/y7/L/8w/zH/Mv8z/zT/Nf82/zf/OP85/zr/Qf9C/0P/RP9F/0b/R/9I/0n/Sv9L/0z/Tf9O/0//UP9R/1L/U/9U/1X/Vv9X/1j/Wf9a/5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOjA6QDpQOmA6cDqAOpA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPDA8QDxQPGA8cDyAPJAwUxBjEHMQgxCTEKMQsxDDENMQ4xDzH+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/xAxETESMRMxFDEVMRYxFzEYMRkxGjEbMRwxHTEeMR8xIDEhMSIxIzEkMSUxJjEnMSgxKTHZAskCygLHAssCAE5ZTgFOA05DTl1Ohk6MTrpOP1FlUWtR4FEAUgFSm1IVU0FTXFPIUwlOC04ITgpOK044TuFRRU5ITl9OXk6OTqFOQFEDUvpSQ1PJU+NTH1frWBVZJ1lzWVBbUVtTW/hbD1wiXDhccVzdXeVd8V3yXfNd/l1yXv5eC18TX01i/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v8RThBODU4tTjBOOU5LTjlciE6RTpVOkk6UTqJOwU7ATsNOxk7HTs1Oyk7LTsROQ1FBUWdRbVFuUWxRl1H2UQZSB1IIUvtS/lL/UhZTOVNIU0dTRVNeU4RTy1PKU81T7FgpWStZKlktWVRbEVwkXDpcb1z0XXte/14UXxVfw18IYjZiS2JOYi9lh2WXZaRluWXlZfBmCGcoZyBrYmt5a8tr1Gvbaw9sNGxrcCpyNnI7ckdyWXJbcqxyi3MZThZOFU4UThhOO05NTk9OTk7lTthO1E7VTtZO107jTuRO2U7eTkVRRFGJUYpRrFH5UfpR+FEKUqBSn1IFUwZTF1MdU99OSlNJU2FTYFNvU25Tu1PvU+RT81PsU+5T6VPoU/xT+FP1U+tT5lPqU/JT8VPwU+VT7VP7U9tW2lYWWf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/LlkxWXRZdllVW4NbPFzoXedd5l0CXgNec158XgFfGF8XX8VfCmJTYlRiUmJRYqVl5mUuZyxnKmcrZy1nY2vNaxFsEGw4bEFsQGw+bK9yhHOJc9x05nQYdR91KHUpdTB1MXUydTN1i3V9dq52v3budtt34nfzdzp5vnl0est6Hk4fTlJOU05pTplOpE6mTqVO/04JTxlPCk8VTw1PEE8RTw9P8k72TvtO8E7zTv1OAU8LT0lRR1FGUUhRaFFxUY1RsFEXUhFSElIOUhZSo1IIUyFTIFNwU3FTCVQPVAxUClQQVAFUC1QEVBFUDVQIVANUDlQGVBJU4FbeVt1WM1cwVyhXLVcsVy9XKVcZWRpZN1k4WYRZeFmDWX1ZeVmCWYFZV1tYW4dbiFuFW4lb+lsWXHlc3l0GXnZedF7+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/w9fG1/ZX9ZfDmIMYg1iEGJjYltiWGI2Zell6GXsZe1l8mbzZglnPWc0ZzFnNWcha2Rre2sWbF1sV2xZbF9sYGxQbFVsYWxbbE1sTmxwcF9yXXJ+dvl6c3z4fDZ/in+9fwGAA4AMgBKAM4B/gImAi4CMgOOB6oHzgfyBDIIbgh+CboJygn6Ca4ZAiEyIY4h/iSGWMk6oTk1PT09HT1dPXk80T1tPVU8wT1BPUU89TzpPOE9DT1RPPE9GT2NPXE9gTy9PTk82T1lPXU9IT1pPTFFLUU1RdVG2UbdRJVIkUilSKlIoUqtSqVKqUqxSI1NzU3VTHVQtVB5UPlQmVE5UJ1RGVENUM1RIVEJUG1QpVEpUOVQ7VDhULlQ1VDZUIFQ8VEBUMVQrVB9ULFTqVvBW5FbrVkpXUVdAV01X/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9HV05XPldQV09XO1fvWD5ZnVmSWahZnlmjWZlZllmNWaRZk1mKWaVZXVtcW1pbW1uMW4tbj1ssXEBcQVw/XD5ckFyRXJRcjFzrXQxej16HXope914EXx9fZF9iX3dfeV/YX8xf11/NX/Ff61/4X+pfEmIRYoRil2KWYoBidmKJYm1iimJ8Yn5ieWJzYpJib2KYYm5ilWKTYpFihmI5ZTtlOGXxZfRmX2dOZ09nUGdRZ1xnVmdeZ0lnRmdgZ1NnV2dla89rQmxebJlsgWyIbIlshWybbGpsemyQbHBsjGxobJZskmx9bINscmx+bHRshmx2bI1slGyYbIJsdnB8cH1weHBicmFyYHLEcsJylnMsdSt1N3U4dYJ273bjd8F5wHm/eXZ6+3xVf5aAk4CdgJiAm4CagLKAb4KSgv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/i4KNgouJ0okAijeMRoxVjJ2MZI1wjbONq47KjpuPsI/Cj8aPxY/Ej+FdkZCikKqQppCjkEmRxpHMkTKWLpYxliqWLJYmTlZOc06LTptOnk6rTqxOb0+dT41Pc09/T2xPm0+LT4ZPg09wT3VPiE9pT3tPlk9+T49PkU96T1RRUlFVUWlRd1F2UXhRvVH9UTtSOFI3UjpSMFIuUjZSQVK+UrtSUlNUU1NTUVNmU3dTeFN5U9ZT1FPXU3NUdVSWVHhUlVSAVHtUd1SEVJJUhlR8VJBUcVR2VIxUmlRiVGhUi1R9VI5U+laDV3dXaldpV2FXZldkV3xXHFlJWUdZSFlEWVRZvlm7WdRZuVmuWdFZxlnQWc1Zy1nTWcpZr1mzWdJZxVlfW2RbY1uXW5pbmFucW5lbm1saXEhcRVz+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/0Zct1yhXLhcqVyrXLFcs1wYXhpeFl4VXhteEV54Xppel16cXpVell72XiZfJ18pX4BfgV9/X3xf3V/gX/1f9V//Xw9gFGAvYDVgFmAqYBVgIWAnYClgK2AbYBZiFWI/Yj5iQGJ/YslizGLEYr9iwmK5YtJi22KrYtNi1GLLYshiqGK9Yrxi0GLZYsdizWK1YtpisWLYYtZi12LGYqxizmI+ZadlvGX6ZRRmE2YMZgZmAmYOZgBmD2YVZgpmB2YNZwtnbWeLZ5VncWecZ3Nnd2eHZ51nl2dvZ3Bnf2eJZ35nkGd1Z5pnk2d8Z2pncmcja2ZrZ2t/axNsG2zjbOhs82yxbMxs5WyzbL1svmy8bOJsq2zVbNNsuGzEbLlswWyubNdsxWzxbL9su2zhbNtsymysbO9s3GzWbOBs/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+VcI5wknCKcJlwLHItcjhySHJncmlywHLOctly13LQcqlzqHOfc6tzpXM9dZ11mXWadYR2wnbydvR25Xf9dz55QHlBecl5yHl6enl6+nr+fFR/jH+LfwWAuoClgKKAsYChgKuAqYC0gKqAr4Dlgf6BDYKzgp2CmYKtgr2Cn4K5grGCrIKlgq+CuIKjgrCCvoK3gk6GcYYdUmiIy47Oj9SP0Y+1kLiQsZC2kMeR0ZF3lYCVHJZAlj+WO5ZElkKWuZbollKXXpefTq1Ork7hT7VPr0+/T+BP0U/PT91Pw0+2T9hP30/KT9dPrk/QT8RPwk/aT85P3k+3T1dRklGRUaBRTlJDUkpSTVJMUktSR1LHUslSw1LBUg1TV1N7U5pT21OsVMBUqFTOVMlUuFSmVLNUx1TCVL1UqlTBVP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/xFTIVK9Uq1SxVLtUqVSnVL9U/1aCV4tXoFejV6JXzleuV5NXVVlRWU9ZTllQWdxZ2Fn/WeNZ6FkDWuVZ6lnaWeZZAVr7WWlbo1umW6RbolulWwFcTlxPXE1cS1zZXNJc910dXiVeH159XqBepl76XghfLV9lX4hfhV+KX4tfh1+MX4lfEmAdYCBgJWAOYChgTWBwYGhgYmBGYENgbGBrYGpgZGBBYtxiFmMJY/xi7WIBY+5i/WIHY/Fi92LvYuxi/mL0YhFjAmM/ZUVlq2W9ZeJlJWYtZiBmJ2YvZh9mKGYxZiRm92b/Z9Nn8WfUZ9Bn7Ge2Z69n9WfpZ+9nxGfRZ7Rn2mflZ7hnz2feZ/NnsGfZZ+Jn3WfSZ2prg2uGa7Vr0mvXax9syWwLbTJtKm1BbSVtDG0xbR5tF23+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/zttPW0+bTZtG231bDltJ204bSltLm01bQ5tK22rcLpws3CscK9wrXC4cK5wpHAwcnJyb3J0culy4HLhcrdzynO7c7JzzXPAc7NzGnUtdU91THVOdUt1q3WkdaV1onWjdXh2hnaHdoh2yHbGdsN2xXYBd/l2+HYJdwt3/nb8dgd33HcCeBR4DHgNeEZ5SXlIeUd5uXm6edF50nnLeX96gXr/ev16fXwCfQV9AH0JfQd9BH0GfTh/jn+/fwSAEIANgBGANoDWgOWA2oDDgMSAzIDhgNuAzoDegOSA3YD0gSKC54IDgwWD44LbguaCBIPlggKDCYPSgteC8YIBg9yC1ILRgt6C04Lfgu+CBoNQhnmGe4Z6hk2Ia4iBidSJCIoCigOKnoygjHSNc420jc2OzI7wj+aP4o/qj+WP/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/tj+uP5I/oj8qQzpDBkMOQS5FKkc2RgpVQlkuWTJZNlmKXaZfLl+2X85cBmKiY25jfmJaZmZlYTrNODFANUCNQ708mUCVQ+E8pUBZQBlA8UB9QGlASUBFQ+k8AUBRQKFDxTyFQC1AZUBhQ80/uTy1QKlD+TytQCVB8UaRRpVGiUc1RzFHGUctRVlJcUlRSW1JdUipTf1OfU51T31PoVBBVAVU3VfxU5VTyVAZV+lQUVelU7VThVAlV7lTqVOZUJ1UHVf1UD1UDVwRXwlfUV8tXw1cJWA9ZV1lYWVpZEVoYWhxaH1obWhNa7FkgWiNaKVolWgxaCVprW1hcsFuzW7ZbtFuuW7VbuVu4WwRcUVxVXFBc7Vz9XPtc6lzoXPBc9lwBXfRc7l0tXiteq16tXqdeMV+SX5FfkF9ZYP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/Y2BlYFBgVWBtYGlgb2CEYJ9gmmCNYJRgjGCFYJZgR2LzYghj/2JOYz5jL2NVY0JjRmNPY0ljOmNQYz1jKmMrYyhjTWNMY0hlSWWZZcFlxWVCZklmT2ZDZlJmTGZFZkFm+GYUZxVnF2chaDhoSGhGaFNoOWhCaFRoKWizaBdoTGhRaD1o9GdQaEBoPGhDaCpoRWgTaBhoQWiKa4lrt2sjbCdsKGwmbCRs8GxqbZVtiG2HbWZteG13bVltk21sbYltbm1abXRtaW2MbYpteW2FbWVtlG3KcNhw5HDZcMhwz3A5cnly/HL5cv1y+HL3coZz7XMJdO5z4HPqc95zVHVddVx1WnVZdb51xXXHdbJ1s3W9dbx1uXXCdbh1i3awdsp2zXbOdil3H3cgdyh36XcweCd4OHgdeDR4N3j+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/yV4LXggeB94MnhVeVB5YHlfeVZ5XnldeVd5WnnkeeN553nfeeZ56XnYeYR6iHrZegZ7EXuJfCF9F30LfQp9IH0ifRR9EH0VfRp9HH0NfRl9G306f19/lH/Ff8F/BoAYgBWAGYAXgD2AP4DxgAKB8IAFge2A9IAGgfiA84AIgf2ACoH8gO+A7YHsgQCCEIIqgiuCKIIsgruCK4NSg1SDSoM4g1CDSYM1gzSDT4MygzmDNoMXg0CDMYMog0ODVIaKhqqGk4akhqmGjIajhpyGcIh3iIGIgoh9iHmIGIoQig6KDIoVigqKF4oTihaKD4oRikiMeox5jKGMoox3jayO0o7Ujs+OsY8BkAaQ948AkPqP9I8DkP2PBZD4j5WQ4ZDdkOKQUpFNkUyR2JHdkdeR3JHZkYOVYpZjlmGW/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9bll2WZJZYll6Wu5bimKyZqJrYmiWbMps8m35OelB9UFxQR1BDUExQWlBJUGVQdlBOUFVQdVB0UHdQT1APUG9QbVBcUZVR8FFqUm9S0lLZUthS1VIQUw9TGVM/U0BTPlPDU/xmRlVqVWZVRFVeVWFVQ1VKVTFVVlVPVVVVL1VkVThVLlVcVSxVY1UzVUFVV1UIVwtXCVffVwVYClgGWOBX5Ff6VwJYNVj3V/lXIFliWTZaQVpJWmZaalpAWjxaYlpaWkZaSlpwW8dbxVvEW8Jbv1vGWwlcCFwHXGBcXFxdXAddBl0OXRtdFl0iXRFdKV0UXRldJF0nXRdd4l04XjZeM143XrdeuF62XrVevl41XzdfV19sX2lfa1+XX5lfnl+YX6FfoF+cX39go2CJYKBgqGDLYLRg5mC9YP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/xWC7YLVg3GC8YNhg1WDGYN9guGDaYMdgGmIbYkhioGOnY3JjlmOiY6Vjd2NnY5hjqmNxY6ljiWODY5tja2OoY4RjiGOZY6FjrGOSY49jgGN7Y2ljaGN6Y11lVmVRZVllV2VfVU9lWGVVZVRlnGWbZaxlz2XLZcxlzmVdZlpmZGZoZmZmXmb5ZtdSG2eBaK9oomiTaLVof2h2aLFop2iXaLBog2jEaK1ohmiFaJRonWioaJ9ooWiCaDJrumvra+xrK2yObbxt823ZbbJt4W3MbeRt+236bQVux23Lba9t0W2ubd5t+W24bfdt9W3FbdJtGm61bdpt623Ybept8W3ubehtxm3Ebapt7G2/beZt+XAJcQpx/XDvcD1yfXKBchxzG3MWcxNzGXOHcwV0CnQDdAZ0/nMNdOB09nT+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//d0HHUidWV1ZnVidXB1j3XUddV1tXXKdc11jnbUdtJ223Y3dz53PHc2dzh3OndreEN4TnhleWh5bXn7eZJ6lXogeyh7G3sseyZ7GXseey57knyXfJV8Rn1DfXF9Ln05fTx9QH0wfTN9RH0vfUJ9Mn0xfT1/nn+af8x/zn/SfxyASoBGgC+BFoEjgSuBKYEwgSSBAoI1gjeCNoI5go6DnoOYg3iDooOWg72Dq4OSg4qDk4OJg6CDd4N7g3yDhoOng1WGal/HhsCGtobEhrWGxobLhrGGr4bJhlOInoiIiKuIkoiWiI2Ii4iTiY+JKoodiiOKJYoxii2KH4obiiKKSYxajKmMrIyrjKiMqoynjGeNZo2+jbqN247fjhmQDZAakBeQI5AfkB2QEJAVkB6QIJAPkCKQFpAbkBSQ/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/okO2Q/ZBXkc6R9ZHmkeOR55HtkemRiZVqlnWWc5Z4lnCWdJZ2lneWbJbAluqW6Zbget96ApgDmFqb5Zx1nn+epZ67nqJQjVCFUJlQkVCAUJZQmFCaUABn8VFyUnRSdVJpUt5S3VLbUlpTpVN7VYBVp1V8VYpVnVWYVYJVnFWqVZRVh1WLVYNVs1WuVZ9VPlWyVZpVu1WsVbFVflWJVatVmVUNVy9YKlg0WCRYMFgxWCFYHVggWPlY+lhgWXdamlp/WpJam1qnWnNbcVvSW8xb01vQWwpcC1wxXExdUF00XUdd/V1FXj1eQF5DXn5eyl7BXsJexF48X21fqV+qX6hf0WDhYLJgtmDgYBxhI2H6YBVh8GD7YPRgaGHxYA5h9mAJYQBhEmEfYklio2OMY89jwGPpY8ljxmPNY/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/0mPjY9Bj4WPWY+1j7mN2Y/Rj6mPbY1Jk2mP5Y15lZmViZWNlkWWQZa9lbmZwZnRmdmZvZpFmemZ+Zndm/mb/Zh9nHWf6aNVo4GjYaNdoBWnfaPVo7mjnaPlo0mjyaONoy2jNaA1pEmkOaclo2mhuaftoPms6az1rmGuWa7xr72subC9sLGwvbjhuVG4hbjJuZ25KbiBuJW4jbhtuW25YbiRuVm5ubi1uJm5vbjRuTW46bixuQ24dbj5uy26JbhluTm5jbkRucm5pbl9uGXEacSZxMHEhcTZxbnEccUxyhHKAcjZzJXM0cylzOnQqdDN0InQldDV0NnQ0dC90G3QmdCh0JXUmdWt1anXiddt143XZddh13nXgdXt2fHaWdpN2tHbcdk937XddeGx4b3gNegh6C3oFegB6mHr+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/5d6lnrleuN6SXtWe0Z7UHtSe1R7TXtLe097UXuffKV8Xn1QfWh9VX0rfW59cn1hfWZ9Yn1wfXN9hFXUf9V/C4BSgIWAVYFUgUuBUYFOgTmBRoE+gUyBU4F0gRKCHILpgwOE+IMNhOCDxYMLhMGD74Pxg/SDV4QKhPCDDITMg/2D8oPKgziEDoQEhNyDB4TUg9+DW4bfhtmG7YbUhtuG5IbQht6GV4jBiMKIsYiDiZaJO4pgilWKXoo8ikGKVIpbilCKRoo0ijqKNopWimGMgoyvjLyMs4y9jMGMu4zAjLSMt4y2jL+MuIyKjYWNgY3Ojd2Ny43ajdGNzI3bjcaN+474jvyOnI8ukDWQMZA4kDKQNpACkfWQCZH+kGORZZHPkRSSFZIjkgmSHpINkhCSB5IRkpSVj5WLlZGV/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+TlZKVjpWKlo6Wi5Z9loWWhpaNlnKWhJbBlsWWxJbGlseW75bylsyXBZgGmAiY55jqmO+Y6ZjymO2YrpmtmcOezZ7RnoJOrVC1ULJQs1DFUL5QrFC3ULtQr1DHUH9Sd1J9Ut9S5lLkUuJS41IvU99V6FXTVeZVzlXcVcdV0VXjVeRV71XaVeFVxVXGVeVVyVUSVxNXXlhRWFhYV1haWFRYa1hMWG1YSlhiWFJYS1hnWcFayVrMWr5avVq8WrNawlqyWmldb11MXnleyV7IXhJfWV+sX65fGmEPYUhhH2HzYBth+WABYQhhTmFMYURhTWE+YTRhJ2ENYQZhN2EhYiJiE2Q+ZB5kKmQtZD1kLGQPZBxkFGQNZDZkFmQXZAZkbGWfZbBll2aJZodmiGaWZoRmmGaNZgNnlGltaf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/Wml3aWBpVGl1aTBpgmlKaWhpa2leaVNpeWmGaV1pY2lbaUdrcmvAa79r02v9a6Jur27TbrZuwm6Qbp1ux27FbqVumG68brpuq27RbpZunG7EbtRuqm6nbrRuTnFZcWlxZHFJcWdxXHFscWZxTHFlcV5xRnFocVZxOnJScjdzRXM/cz5zb3RadFV0X3RedEF0P3RZdFt0XHR2dXh1AHbwdQF28nXxdfp1/3X0dfN13nbfdlt3a3dmd153Y3d5d2p3bHdcd2V3aHdid+53jniweJd4mHiMeIl4fHiReJN4f3h6eX95gXkshL15HHoaeiB6FHofeh56n3qgend7wHtge257Z3uxfLN8tXyTfXl9kX2BfY99W31uf2l/an9yf6l/qH+kf1aAWICGgISAcYFwgXiBZYFugXOBa4H+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/3mBeoFmgQWCR4KChHeEPYQxhHWEZoRrhEmEbIRbhDyENYRhhGOEaYRthEaEXoZchl+G+YYThwiHB4cAh/6G+4YChwOHBocKh1mI34jUiNmI3IjYiN2I4YjKiNWI0oicieOJa4pyinOKZoppinCKh4p8imOKoIpxioWKbYpiim6KbIp5inuKPopoimKMioyJjMqMx4zIjMSMsozDjMKMxYzhjd+N6I3vjfON+o3qjeSN5o2yjgOPCY/+jgqPn4+yj0uQSpBTkEKQVJA8kFWQUJBHkE+QTpBNkFGQPpBBkBKRF5FskWqRaZHJkTeSV5I4kj2SQJI+kluSS5JkklGSNJJJkk2SRZI5kj+SWpKYlZiWlJaVls2Wy5bJlsqW95b7lvmW9pZWl3SXdpcQmBGYE5gKmBKYDJj8mPSY/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/9mP6Ys5mxmbSZ4ZrpnIKeDp8TnyCf51DuUOVQ1lDtUNpQ1VDPUNFQ8VDOUOlQYlHzUYNSglIxU61T/lUAVhtWF1b9VRRWBlYJVg1WDlb3VRZWH1YIVhBW9lUYVxZXdVh+WINYk1iKWHlYhVh9WP1YJVkiWSRZallpWeFa5lrpWtda1lrYWuNadVveW+db4VvlW+Zb6FviW+Rb31sNXGJchF2HXVteY15VXldeVF7TXtZeCl9GX3BfuV9HYT9hS2F3YWJhY2FfYVphWGF1YSpih2RYZFRkpGR4ZF9kemRRZGdkNGRtZHtkcmWhZddl1mWiZqhmnWacaahplWnBaa5p02nLaZtpt2m7aatptGnQac1prWnMaaZpw2mjaUlrTGszbDNvFG/+bhNv9G4pbz5vIG8sbw9vAm8ib/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//27vbgZvMW84bzJvI28VbytvL2+Ibypv7G4Bb/JuzG73bpRxmXF9cYpxhHGScT5yknKWckRzUHNkdGN0anRwdG10BHWRdSd2DXYLdgl2E3bhduN2hHd9d393YXfBeJ94p3izeKl4o3iOeY95jXkuejF6qnqpeu1673qhe5V7i3t1e5d7nXuUe497uHuHe4R7uXy9fL58u32wfZx9vX2+faB9yn20fbJ9sX26faJ9v321fbh9rX3Sfcd9rH1wf+B/4X/ff16AWoCHgFCBgIGPgYiBioF/gYKB54H6gQeCFIIegkuCyYS/hMaExISZhJ6EsoSchMuEuITAhNOEkIS8hNGEyoQ/hxyHO4cihyWHNIcYh1WHN4cph/OIAon0iPmI+Ij9iOiIGonviKaKjIqeiqOKjYqhipOKpIr+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/6qKpYqoipiKkYqaiqeKaoyNjIyM04zRjNKMa42ZjZWN/I0UjxKPFY8Tj6OPYJBYkFyQY5BZkF6QYpBdkFuQGZEYkR6RdZF4kXeRdJF4koCShZKYkpaSe5KTkpySqJJ8kpGSoZWolamVo5WllaSVmZaclpuWzJbSlgCXfJeFl/aXF5gYmK+YsZgDmQWZDJkJmcGZr5qwmuaaQZtCm/Sc9pzznLyeO59KnwRRAFH7UPVQ+VACUQhRCVEFUdxRh1KIUolSjVKKUvBSslMuVjtWOVYyVj9WNFYpVlNWTlZXVnRWNlYvVjBWgFifWJ5Ys1icWK5YqVimWG1ZCVv7Wgtb9VoMWwhb7lvsW+lb61tkXGVcnV2UXWJeX15hXuJe2l7fXt1e417gXkhfcV+3X7VfdmFnYW5hXWFVYYJh/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v98YXBha2F+YadhkGGrYY5hrGGaYaRhlGGuYS5iaWRvZHlknmSyZIhkkGSwZKVkk2SVZKlkkmSuZK1kq2SaZKxkmWSiZLNkdWV3ZXhlrmarZrRmsWYjah9q6GkBah5qGWr9aSFqE2oKavNpAmoFau1pEWpQa05rpGvFa8ZrP298b4RvUW9mb1Rvhm9tb1tveG9ub45vem9wb2Rvl29Yb9Vub29gb19vn3GscbFxqHFWcptyTnNXc2l0i3SDdH50gHR/dSB2KXYfdiR2JnYhdiJ2mna6duR2jneHd4x3kXeLd8t4xXi6eMp4vnjVeLx40Hg/ejx6QHo9ejd6O3qveq56rXuxe8R7tHvGe8d7wXuge8x7ynzgffR97337fdh97H3dfeh9433afd596X2efdl98n35fXV/d3+vf/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/6X8mgJuBnIGdgaCBmoGYgReFPYUahe6ELIUthROFEYUjhSGFFIXshCWF/4QGhYKHdId2h2CHZod4h2iHWYdXh0yHU4dbiF2IEIkHiRKJE4kViQqJvIrSiseKxIqVisuK+IqyismKwoq/irCK1orNiraKuYrbikyMToxsjOCM3ozmjOSM7IztjOKM44zcjOqM4YxtjZ+No40rjhCOHY4ijg+OKY4fjiGOHo66jh2PG48fjymPJo8qjxyPHo8lj2mQbpBokG2Qd5AwkS2RJ5ExkYeRiZGLkYORxZK7kreS6pKskuSSwZKzkryS0pLHkvCSspKtlbGVBJcGlweXCZdgl42Xi5ePlyGYK5gcmLOYCpkTmRKZGJndmdCZ35nbmdGZ1ZnSmdmZt5rumu+aJ5tFm0Sbd5tvmwadCZ3+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/wOdqZ6+ns6eqFhSnxJRGFEUURBRFVGAUapR3VGRUpNS81JZVmtWeVZpVmRWeFZqVmhWZVZxVm9WbFZiVnZWwVi+WMdYxVhuWR1bNFt4W/BbDlxKX7JhkWGpYYphzWG2Yb5hymHIYTBixWTBZMtku2S8ZNpkxGTHZMJkzWS/ZNJk1GS+ZHRlxmbJZrlmxGbHZrhmPWo4ajpqWWpralhqOWpEamJqYWpLakdqNWpfakhqWWt3awVswm+xb6Fvw2+kb8Fvp2+zb8BvuW+2b6ZvoG+0b75xyXHQcdJxyHHVcblxznHZcdxxw3HEcWhznHSjdJh0n3SedOJ0DHUNdTR2OHY6dud25Xagd553n3eld+h42njseOd4pnlNek56RnpMekt6unrZexF8yXvke9t74Xvpe+Z71XzWfAp+/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v8Rfgh+G34jfh5+HX4JfhB+eX+yf/B/8X/ufyiAs4GpgaiB+4EIgliCWYJKhVmFSIVohWmFQ4VJhW2FaoVehYOHn4eeh6KHjYdhiCqJMokliSuJIYmqiaaJ5or6iuuK8YoAi9yK54ruiv6KAYsCi/eK7YrzivaK/IprjG2Mk4z0jESOMY40jkKOOY41jjuPL484jzOPqI+mj3WQdJB4kHKQfJB6kDSRkpEgkzaT+JIzky+TIpP8kiuTBJMakxCTJpMhkxWTLpMZk7uVp5aolqqW1ZYOlxGXFpcNlxOXD5dbl1yXZpeYlzCYOJg7mDeYLZg5mCSYEJkomR6ZG5khmRqZ7ZnimfGZuJq8mvua7Zoom5GbFZ0jnSadKJ0SnRud2J7Uno2fnJ8qUR9RIVEyUfVSjlaAVpBWhVaHVv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/j1bVWNNY0VjOWDBbKlskW3pbN1xoXLxdul29Xbhda15MX71fyWHCYcdh5mHLYTJiNGLOZMpk2GTgZPBk5mTsZPFk4mTtZIJlg2XZZtZmgGqUaoRqomqcattqo2p+apdqkGqgalxrrmvaawhs2G/xb99v4G/bb+Rv62/vb4Bv7G/hb+lv1W/ub/Bv53Hfce5x5nHlce1x7HH0ceBxNXJGcnBzcnOpdLB0pnSodEZ2QnZMdup2s3eqd7B3rHend61373f3ePp49HjveAF5p3mqeVd6v3oHfA18/nv3ewx84HvgfNx83nzifN982XzdfC5+Pn5Gfjd+Mn5Dfit+PX4xfkV+QX40fjl+SH41fj9+L35Ef/N//H9xgHKAcIBvgHOAxoHDgbqBwoHAgb+BvYHJgb6B6IEJgnGCqoX+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+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Y65jfGOkYztjn2P+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/3hjhWOBY5FjjWNwY1NlzWVlZmFmW2ZZZlxmYmYYZ3loh2iQaJxobWhuaK5oq2hWaW9oo2isaKlodWh0aLJoj2h3aJJofGhraHJoqmiAaHFofmibaJZoi2igaIlopGh4aHtokWiMaIpofWg2azNrN2s4a5Frj2uNa45rjGsqbMBtq220bbNtdG6sbelt4m23bfZt1G0Absht4G3fbdZtvm3lbdxt3W3bbfRtym29be1t8G26bdVtwm3Pbclt0G3ybdNt/W3Xbc1t4227bfpwDXH3cBdx9HAMcfBwBHHzcBBx/HD/cAZxE3EAcfhw9nALcQJxDnF+cntyfHJ/ch1zF3MHcxFzGHMKcwhz/3IPcx5ziHP2c/hz9XMEdAF0/XMHdAB0+nP8c/9zDHQLdPRzCHRkdWN1znXSdc91/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/Ldcx10XXQdY92iXbTdjl3L3ctdzF3Mnc0dzN3PXcldzt3NXdIeFJ4SXhNeEp4THgmeEV4UHhkeWd5aXlqeWN5a3lhebt5+nn4efZ593mPepR6kHo1e0d7NHslezB7InskezN7GHsqex17MXsrey17L3syezh7Gnsje5R8mHyWfKN8NX09fTh9Nn06fUV9LH0pfUF9R30+fT99Sn07fSh9Y3+Vf5x/nX+bf8p/y3/Nf9B/0X/Hf89/yX8fgB6AG4BHgEOASIAYgSWBGYEbgS2BH4EsgR6BIYEVgSeBHYEigRGCOIIzgjqCNIIygnSCkIOjg6iDjYN6g3ODpIN0g4+DgYOVg5mDdYOUg6mDfYODg4yDnYObg6qDi4N+g6WDr4OIg5eDsIN/g6aDh4Oug3aDmoNZhlaGv4a3hv7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/wobBhsWGuoawhsiGuYazhriGzIa0hruGvIbDhr2GvoZSiImIlYioiKKIqoiaiJGIoYifiJiIp4iZiJuIl4ikiKyIjIiTiI6IgonWidmJ1YkwiieKLIoeijmMO4xcjF2MfYyljH2Ne415jbyNwo25jb+NwY3Yjt6O3Y7cjteO4I7hjiSQC5ARkByQDJAhkO+Q6pDwkPSQ8pDzkNSQ65DskOmQVpFYkVqRU5FVkeyR9JHxkfOR+JHkkfmR6pHrkfeR6JHukXqVhpWIlXyWbZZrlnGWb5a/lmqXBJjlmJeZm1CVUJRQnlCLUKNQg1CMUI5QnVBoUJxQklCCUIdQX1HUURJTEVOkU6dTkVWoVaVVrVV3VUVWolWTVYhVj1W1VYFVo1WSVaRVfVWMVaZVf1WVVaFVjlUMVylYN1j+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/xlYHlgnWCNYKFj1V0hYJVgcWBtYM1g/WDZYLlg5WDhYLVgsWDtYYVmvWpRan1p6WqJanlp4WqZafFqlWqxalVquWjdahFqKWpdag1qLWqlae1p9WoxanFqPWpNanVrqW81by1vUW9FbylvOWwxcMFw3XUNda11BXUtdP101XVFdTl1VXTNdOl1SXT1dMV1ZXUJdOV1JXThdPF0yXTZdQF1FXUReQV5YX6ZfpV+rX8lguWDMYOJgzmDEYBRh8mAKYRZhBWH1YBNh+GD8YP5gwWADYRhhHWEQYf9gBGELYUpilGOxY7BjzmPlY+hj72PDY51k82PKY+Bj9mPVY/Jj9WNhZN9jvmPdY9xjxGPYY9NjwmPHY8xjy2PIY/Bj12PZYzJlZ2VqZWRlXGVoZWVljGWdZZ5lrmXQZdJl/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v98Zmxme2aAZnFmeWZqZnJmAWcMadNoBGncaCpp7GjqaPFoD2nWaPdo62jkaPZoE2kQafNo4WgHacxoCGlwabRoEWnvaMZoFGn4aNBo/Wj8aOhoC2kKaRdpzmjIaN1o3mjmaPRo0WgGadRo6WgVaSVpx2g5aztrP2s8a5Rrl2uZa5VrvWvwa/Jr82swbPxtRm5Hbh9uSW6IbjxuPW5FbmJuK24/bkFuXW5zbhxuM25LbkBuUW47bgNuLm5ebmhuXG5hbjFuKG5gbnFua245biJuMG5TbmVuJ254bmRud25VbnluUm5mbjVuNm5abiBxHnEvcftwLnExcSNxJXEicTJxH3EocTpxG3FLclpyiHKJcoZyhXKLchJzC3MwcyJzMXMzcydzMnMtcyZzI3M1cwxzLnQsdDB0K3QWdP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/GnQhdC10MXQkdCN0HXQpdCB0MnT7dC91b3Vsded12nXhdeZ13XXfdeR113WVdpJ22nZGd0d3RHdNd0V3SndOd0t3THfed+x3YHhkeGV4XHhteHF4anhueHB4aXhoeF54Ynh0eXN5cnlweQJ6CnoDegx6BHqZeuZ65HpKezt7RHtIe0x7TntAe1h7RXuifJ58qHyhfFh9b31jfVN9Vn1nfWp9T31tfVx9a31SfVR9aX1RfV99Tn0+fz9/ZX9mf6J/oH+hf9d/UYBPgFCA/oDUgEOBSoFSgU+BR4E9gU2BOoHmge6B94H4gfmBBII8gj2CP4J1gjuDz4P5gyOEwIPogxKE54Pkg/yD9oMQhMaDyIPrg+ODv4MBhN2D5YPYg/+D4YPLg86D1oP1g8mDCYQPhN6DEYQGhMKD84P+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/9WD+oPHg9GD6oMThMOD7IPug8SD+4PXg+KDG4Tbg/6D2IbihuaG04bjhtqG6obdhuuG3IbshumG14bohtGGSIhWiFWIuojXiLmIuIjAiL6Itoi8iLeIvYiyiAGJyYiViZiJl4ndidqJ24lOik2KOYpZikCKV4pYikSKRYpSikiKUYpKikyKT4pfjIGMgIy6jL6MsIy5jLWMhI2AjYmN2I3Tjc2Nx43WjdyNz43VjdmNyI3XjcWN7473jvqO+Y7mju6O5Y71jueO6I72juuO8Y7sjvSO6Y4tkDSQL5AGkSyRBJH/kPyQCJH5kPuQAZEAkQeRBZEDkWGRZJFfkWKRYJEBkgqSJZIDkhqSJpIPkgySAJISkv+R/ZEGkgSSJ5ICkhySJJIZkheSBZIWknuVjZWMlZCVh5Z+loiW/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+JloOWgJbClsiWw5bxlvCWbJdwl26XB5ipmOuY5pz5noNOhE62Tr1Qv1DGUK5QxFDKULRQyFDCULBQwVC6ULFQy1DJULZQuFDXUXpSeFJ7UnxSw1XbVcxV0FXLVcpV3VXAVdRVxFXpVb9V0lWNVc9V1VXiVdZVyFXyVc1V2VXCVRRXU1hoWGRYT1hNWElYb1hVWE5YXVhZWGVYW1g9WGNYcVj8WMdaxFrLWrpauFqxWrVasFq/Wshau1rGWrdawFrKWrRatlrNWrlakFrWW9hb2VsfXDNccV1jXUpdZV1yXWxdXl1oXWddYl3wXU9eTl5KXk1eS17FXsxexl7LXsdeQF+vX61f92BJYUphK2FFYTZhMmEuYUZhL2FPYSlhQGEgYmiRI2IlYiRixWPxY+tjEGQSZAlkIGQkZP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/M2RDZB9kFWQYZDlkN2QiZCNkDGQmZDBkKGRBZDVkL2QKZBpkQGQlZCdkC2TnYxtkLmQhZA5kb2WSZdNlhmaMZpVmkGaLZopmmWaUZnhmIGdmaV9pOGlOaWJpcWk/aUVpamk5aUJpV2lZaXppSGlJaTVpbGkzaT1pZWnwaHhpNGlpaUBpb2lEaXZpWGlBaXRpTGk7aUtpN2lcaU9pUWkyaVJpL2l7aTxpRmtFa0NrQmtIa0Frm2sN+vtr/Gv5a/dr+GubbtZuyG6PbsBun26TbpRuoG6xbrluxm7Sbr1uwW6ebslut26wbs1upm7PbrJuvm7Dbtxu2G6ZbpJujm6NbqRuoW6/brNu0G7Kbpdurm6jbkdxVHFScWNxYHFBcV1xYnFycXhxanFhcUJxWHFDcUtxcHFfcVBxU3H+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/0RxTXFacU9yjXKMcpFykHKOcjxzQnM7czpzQHNKc0lzRHRKdEt0UnRRdFd0QHRPdFB0TnRCdEZ0TXRUdOF0/3T+dP10HXV5dXd1g2nvdQ92A3b3df51/HX5dfh1EHb7dfZ17XX1df11mXa1dt12VXdfd2B3UndWd1p3aXdnd1R3WXdtd+B3h3iaeJR4j3iEeJV4hXiGeKF4g3h5eJl4gHiWeHt4fHmCeX15eXkRehh6GXoSehd6FXoiehN6G3oQeqN6onqeeut6Zntke217dHtpe3J7ZXtze3F7cHthe3h7dntje7J8tHyvfIh9hn2AfY19f32FfXp9jn17fYN9fH2MfZR9hH19fZJ9bX9rf2d/aH9sf6Z/pX+nf9t/3H8hgGSBYIF3gVyBaYFbgWKBcoEhZ16BdoFngW+B/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9EgWGBHYJJgkSCQIJCgkWC8YQ/hFaEdoR5hI+EjYRlhFGEQISGhGeEMIRNhH2EWoRZhHSEc4RdhAeFXoQ3hDqENIR6hEOEeIQyhEWEKYTZg0uEL4RChC2EX4RwhDmEToRMhFKEb4TFhI6EO4RHhDaEM4RohH6ERIQrhGCEVIRuhFCEC4cEh/eGDIf6htaG9YZNh/iGDocJhwGH9oYNhwWH1ojLiM2IzojeiNuI2ojMiNCIhYmbid+J5YnkieGJ4IniidyJ5ol2ioaKf4phij+Kd4qCioSKdYqDioGKdIp6ijyMS4xKjGWMZIxmjIaMhIyFjMyMaI1pjZGNjI2OjY+NjY2TjZSNkI2SjfCN4I3sjfGN7o3QjemN443ijeeN8o3rjfSNBo//jgGPAI8FjwePCI8CjwuPUpA/kP7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/RJBJkD2QEJENkQ+REZEWkRSRC5EOkW6Rb5FIklKSMJI6kmaSM5Jlkl6Sg5IukkqSRpJtkmyST5JgkmeSb5I2kmGScJIxklSSY5JQknKSTpJTkkySVpIykp+VnJWelZuVkpaTlpGWl5bOlvqW/Zb4lvWWc5d3l3iXcpcPmA2YDpismPaY+ZivmbKZsJm1ma2aq5pbm+qc7ZznnICe/Z7mUNRQ11DoUPNQ21DqUN1Q5FDTUOxQ8FDvUONQ4FDYUYBSgVLpUutSMFOsUydWFVYMVhJW/FUPVhxWAVYTVgJW+lUdVgRW/1X5VYlYfFiQWJhYhliBWH9YdFiLWHpYh1iRWI5YdliCWIhYe1iUWI9Y/lhrWdxa7lrlWtVa6lraWu1a61rzWuJa4FrbWuxa3lrdWtla6FrfWndb4Fv+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/+NbY1yCXYBdfV2GXXpdgV13XYpdiV2IXX5dfF2NXXldf11YXlleU17YXtFe117OXtxe1V7ZXtJe1F5EX0Nfb1+2XyxhKGFBYV5hcWFzYVJhU2FyYWxhgGF0YVRhemFbYWVhO2FqYWFhVmEpYidiK2IrZE1kW2RdZHRkdmRyZHNkfWR1ZGZkpmROZIJkXmRcZEtkU2RgZFBkf2Q/ZGxka2RZZGVkd2RzZaBloWagZp9mBWcEZyJnsWm2aclpoGnOaZZpsGmsabxpkWmZaY5pp2mNaalpvmmvab9pxGm9aaRp1Gm5acppmmnPabNpk2mqaaFpnmnZaZdpkGnCabVppWnGaUprTWtLa55rn2uga8NrxGv+a85u9W7xbgNvJW/4bjdv+24ubwlvTm8ZbxpvJ28YbztvEm/tbgpv/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v82b3Nv+W7ubi1vQG8wbzxvNW/rbgdvDm9DbwVv/W72bjlvHG/8bjpvH28Nbx5vCG8hb4dxkHGJcYBxhXGCcY9xe3GGcYFxl3FEclNyl3KVcpNyQ3NNc1FzTHNidHN0cXR1dHJ0Z3RudAB1AnUDdX11kHUWdgh2DHYVdhF2CnYUdrh2gXd8d4V3gndud4B3b3d+d4N3sniqeLR4rXioeH54q3ieeKV4oHiseKJ4pHiYeYp5i3mWeZV5lHmTeZd5iHmSeZB5K3pKejB6L3ooeiZ6qHqreqx67nqIe5x7inuRe5B7lnuNe4x7m3uOe4V7mHuEUpl7pHuCe7t8v3y8fLp8p323fcJ9o32qfcF9wH3FfZ19zn3EfcZ9y33Mfa99uX2Wfbx9n32mfa59qX2hfcl9c3/if+N/5X/ef/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/JIBdgFyAiYGGgYOBh4GNgYyBi4EVgpeEpIShhJ+EuoTOhMKErISuhKuEuYS0hMGEzYSqhJqEsYTQhJ2Ep4S7hKKElITHhMyEm4SphK+EqITWhJiEtoTPhKCE14TUhNKE24SwhJGEYYYzhyOHKIdrh0CHLocehyGHGYcbh0OHLIdBhz6HRocghzKHKocthzyHEoc6hzGHNYdChyaHJ4c4hySHGocwhxGH94jniPGI8oj6iP6I7oj8iPaI+4jwiOyI64idiaGJn4meiemJ64noiauKmYqLipKKj4qWij2MaIxpjNWMz4zXjJaNCY4Cjv+NDY79jQqOA44HjgaOBY7+jQCOBI4QjxGPDo8NjyORHJEgkSKRH5EdkRqRJJEhkRuRepFykXmRc5GlkqSSdpKbknqSoJKUkqqSjZL+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/6aSmpKrknmSl5J/kqOS7pKOkoKSlZKikn2SiJKhkoqShpKMkpmSp5J+koeSqZKdkouSLZKelqGW/5ZYl32Xepd+l4OXgJeCl3uXhJeBl3+XzpfNlxaYrZiumAKZAJkHmZ2ZnJnDmbmZu5m6mcKZvZnHmbGa45rnmj6bP5tgm2GbX5vxnPKc9Zynnv9QA1EwUfhQBlEHUfZQ/lALUQxR/VAKUYtSjFLxUu9SSFZCVkxWNVZBVkpWSVZGVlhWWlZAVjNWPVYsVj5WOFYqVjpWGlerWJ1YsVigWKNYr1isWKVYoVj/WP9a9Fr9Wvda9loDW/haAlv5WgFbB1sFWw9bZ1yZXZddn12SXaJdk12VXaBdnF2hXZpdnl1pXl1eYF5cXvN9217eXuFeSV+yX4thg2F5YbFhsGGiYYlh/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+bYZNhr2GtYZ9hkmGqYaFhjWFmYbNhLWJuZHBklmSgZIVkl2ScZI9ki2SKZIxko2SfZGhksWSYZHZlemV5ZXtlsmWzZbVmsGapZrJmt2aqZq9mAGoGahdq5Wn4aRVq8WnkaSBq/2nsaeJpG2odav5pJ2ryae5pFGr3aedpQGoIauZp+2kNavxp62kJagRqGGolag9q9mkmagdq9GkWalFrpWuja6JrpmsBbABs/2sCbEFvJm9+b4dvxm+Sb41viW+Mb2JvT2+Fb1pvlm92b2xvgm9Vb3JvUm9Qb1dvlG+Tb11vAG9hb2tvfW9nb5BvU2+Lb2lvf2+Vb2Nvd29qb3tvsnGvcZtxsHGgcZpxqXG1cZ1xpXGecaRxoXGqcZxxp3GzcZhymnJYc1JzXnNfc2BzXXNbc2FzWnNZc/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/YnOHdIl0inSGdIF0fXSFdIh0fHR5dAh1B3V+dSV2HnYZdh12HHYjdhp2KHYbdpx2nXaedpt2jXePd4l3iHfNeLt4z3jMeNF4znjUeMh4w3jEeMl4mnmheaB5nHmieZt5dms5erJ6tHqzerd7y3u+e6x7znuve7l7ynu1e8V8yHzMfMt8933bfep9533XfeF9A376feZ99n3xffB97n3ffXZ/rH+wf61/7X/rf+p/7H/mf+h/ZIBngKOBn4GegZWBooGZgZeBFoJPglOCUoJQgk6CUYIkhTuFD4UAhSmFDoUJhQ2FH4UKhSeFHIX7hCuF+oQIhQyF9IQqhfKEFYX3hOuE84T8hBKF6oTphBaF/oQohR2FLoUChf2EHoX2hDGFJoXnhOiE8ITvhPmEGIUghTCFC4UZhS+FYob+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/1aHY4dkh3eH4Ydzh1iHVIdbh1KHYYdah1GHXodth2qHUIdOh1+HXYdvh2yHeoduh1yHZYdPh3uHdYdih2eHaYdaiAWJDIkUiQuJF4kYiRmJBokWiRGJDokJiaKJpImjie2J8Insic+Kxoq4itOK0YrUitWKu4rXir6KwIrFitiKw4q6ir2K2Yo+jE2Mj4zljN+M2YzojNqM3YznjKCNnI2hjZuNII4jjiWOJI4ujhWOG44WjhGOGY4mjieOFI4SjhiOE44cjheOGo4sjySPGI8ajyCPI48WjxePc5BwkG+QZ5BrkC+RK5EpkSqRMpEmkS6RhZGGkYqRgZGCkYSRgJHQksOSxJLAktmStpLPkvGS35LYkumS15LdksyS75LCkuiSypLIks6S5pLNktWSyZLgkt6S55LRktOS/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+1kuGSxpK0knyVrJWrla6VsJWklqKW05YFlwiXApdal4qXjpeIl9CXz5cemB2YJpgpmCiYIJgbmCeYspgImfqYEZkUmRaZF5kVmdyZzZnPmdOZ1JnOmcmZ1pnYmcuZ15nMmbOa7JrrmvOa8prxmkabQ5tnm3SbcZtmm3abdZtwm2ibZJtsm/yc+pz9nP+c95wHnQCd+Zz7nAidBZ0EnYOe054PnxCfHFETURdRGlERUd5RNFPhU3BWYFZuVnNWZlZjVm1WclZeVndWHFcbV8hYvVjJWL9YuljCWLxYxlgXWxlbG1shWxRbE1sQWxZbKFsaWyBbHlvvW6xdsV2pXaddtV2wXa5dql2oXbJdrV2vXbRdZ15oXmZeb17pXude5l7oXuVeS1+8X51hqGGWYcVhtGHGYcFhzGG6Yf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/v2G4YYxh12TWZNBkz2TJZL1kiWTDZNtk82TZZDNlf2V8ZaJlyGa+ZsBmymbLZs9mvWa7ZrpmzGYjZzRqZmpJamdqMmpoaj5qXWptanZqW2pRaihqWmo7aj9qQWpqamRqUGpPalRqb2ppamBqPGpealZqVWpNak5qRmpVa1RrVmuna6prq2vIa8drBGwDbAZsrW/Lb6Nvx2+8b85vyG9eb8RvvW+eb8pvqG8EcKVvrm+6b6xvqm/Pb79vuG+ib8lvq2/Nb69vsm+wb8VxwnG/cbhx1nHAccFxy3HUccpxx3HPcb1x2HG8ccZx2nHbcZ1ynnJpc2ZzZ3Nsc2Vza3Nqc390mnSgdJR0knSVdKF0C3WAdS92LXYxdj12M3Y8djV2MnYwdrt25naad513oXecd5t3onejd5V3mXf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/5d33XjpeOV46njeeON423jheOJ47XjfeOB4pHlEekh6R3q2erh6tXqxerd63nvje+d73XvVe+V72nvoe/l71Hvqe+J73Hvre9h733vSfNR813zQfNF8En4hfhd+DH4ffiB+E34Ofhx+FX4afiJ+C34PfhZ+DX4UfiV+JH5Df3t/fH96f7F/738qgCmAbICxgaaBroG5gbWBq4GwgayBtIGygbeBp4HygVWCVoJXglaFRYVrhU2FU4VhhViFQIVGhWSFQYVihUSFUYVHhWOFPoVbhXGFToVuhXWFVYVnhWCFjIVmhV2FVIVlhWyFY4ZlhmSGm4ePh5eHk4eSh4iHgYeWh5iHeYeHh6OHhYeQh5GHnYeEh5SHnIeah4mHHokmiTCJLYkuiSeJMYkiiSmJI4kviSyJH4nxieCK/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/iivKK9Ir1it2KFIvkit+K8IrIit6K4Yroiv+K74r7ipGMkoyQjPWM7ozxjPCM84xsjW6NpY2njTOOPo44jkCORY42jjyOPY5BjjCOP469jjaPLo81jzKPOY83jzSPdpB5kHuQhpD6kDORNZE2kZORkJGRkY2Rj5Enkx6TCJMfkwaTD5N6kziTPJMbkyOTEpMBk0aTLZMOkw2Ty5Idk/qSJZMTk/mS95I0kwKTJJP/kimTOZM1kyqTFJMMkwuT/pIJkwCT+5IWk7yVzZW+lbmVupW2lb+VtZW9lamW1JYLlxKXEJeZl5eXlJfwl/iXNZgvmDKYJJkfmSeZKZmeme6Z7JnlmeSZ8JnjmeqZ6Znnmbmav5q0mrua9pr6mvma95ozm4CbhZuHm3ybfpt7m4Kbk5uSm5CbepuVm/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/fZuImyWdF50gnR6dFJ0pnR2dGJ0inRCdGZ0fnYiehp6Hnq6erZ7Vntae+p4Snz2fJlElUSJRJFEgUSlR9FKTVoxWjVaGVoRWg1Z+VoJWf1aBVtZY1FjPWNJYLVslWzJbI1ssWydbJlsvWy5be1vxW/Jbt11sXmpevl+7X8NhtWG8Yedh4GHlYeRh6GHeYe9k6WTjZOtk5GToZIFlgGW2Zdpl0maNapZqgWqlaolqn2qbaqFqnmqHapNqjmqVaoNqqGqkapFqf2qmappqhWqMapJqW2utawlszG+pb/Rv1G/jb9xv7W/nb+Zv3m/yb91v4m/ob+Fx8XHocfJx5HHwceJxc3Nuc29zl3SydKt0kHSqdK10sXSldK90EHURdRJ1D3WEdUN2SHZJdkd2pHbpdrV3q3eyd7d3tnf+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/7R3sXeod/B383j9eAJ5+3j8ePJ4BXn5eP54BHmreah5XHpbelZ6WHpUelp6vnrAesF6BXwPfPJ7AHz/e/t7Dnz0ewt883sCfAl8A3wBfPh7/XsGfPB78XsQfAp86Hwtfjx+Qn4zfkiYOH4qfkl+QH5Hfil+TH4wfjt+Nn5Efjp+RX9/f35/fX/0f/J/LIC7gcSBzIHKgcWBx4G8gemBW4JaglyCg4WAhY+Fp4WVhaCFi4WjhXuFpIWahZ6Fd4V8hYmFoYV6hXiFV4WOhZaFhoWNhZmFnYWBhaKFgoWIhYWFeYV2hZiFkIWfhWiGvoeqh62HxYewh6yHuYe1h7yHrofJh8OHwofMh7eHr4fEh8qHtIe2h7+HuIe9h96Hsoc1iTOJPIk+iUGJUok3iUKJrYmvia6J8onziR6L/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v8YixaLEYsFiwuLIosPixKLFYsHiw2LCIsGixyLE4sai0+McIxyjHGMb4yVjJSM+YxvjU6OTY5TjlCOTI5HjkOPQI+FkH6QOJGakaKRm5GZkZ+RoZGdkaCRoZODk6+TZJNWk0eTfJNYk1yTdpNJk1CTUZNgk22Tj5NMk2qTeZNXk1WTUpNPk3GTd5N7k2GTXpNjk2eTgJNOk1mTx5XAlcmVw5XFlbeVrpawlqyWIJcflxiXHZcZl5qXoZecl56XnZfVl9SX8ZdBmESYSphJmEWYQ5glmSuZLJkqmTOZMpkvmS2ZMZkwmZiZo5mhmQKa+pn0mfeZ+Zn4mfaZ+5n9mf6Z/JkDmr6a/pr9mgGb/JpIm5qbqJuem5ubppuhm6WbpJuGm6KboJuvmzOdQZ1nnTadLp0vnTGdOJ0wnf7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/RZ1CnUOdPp03nUCdPZ31fy2dip6Jno2esJ7Intqe+57/niSfI58in1SfoJ8xUS1RLlGYVpxWl1aaVp1WmVZwWTxbaVxqXMBdbV5uXthh32HtYe5h8WHqYfBh62HWYelh/2QEZf1k+GQBZQNl/GSUZdtl2mbbZthmxWq5ar1q4WrGarpqtmq3asdqtGqtal5ryWsLbAdwDHANcAFwBXAUcA5w/28AcPtvJnD8b/dvCnABcv9x+XEDcv1xdnO4dMB0tXTBdL50tnS7dMJ0FHUTdVx2ZHZZdlB2U3ZXdlp2pna9dux2wne6d/94DHkTeRR5CXkQeRJ5EXmteax5X3ocfCl8GXwgfB98LXwdfCZ8KHwifCV8MHxcflB+Vn5jflh+Yn5fflF+YH5XflN+tX+zf/d/+H91gNGB0oH+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/9CBX4JegrSFxoXAhcOFwoWzhbWFvYXHhcSFv4XLhc6FyIXFhbGFtoXShSSGuIW3hb6FaYbnh+aH4ofbh+uH6oflh9+H84fkh9SH3IfTh+2H2Ifjh6SH14fZhwGI9Ifoh92HU4lLiU+JTIlGiVCJUYlJiSqLJ4sjizOLMIs1i0eLL4s8iz6LMYslizeLJos2iy6LJIs7iz2LOotCjHWMmYyYjJeM/owEjQKNAI1cjmKOYI5XjlaOXo5ljmeOW45ajmGOXY5pjlSORo9Hj0iPS48okTqRO5E+kaiRpZGnka+RqpG1k4yTkpO3k5uTnZOJk6eTjpOqk56TppOVk4iTmZOfk42TsZORk7KTpJOok7STo5Olk9KV05XRlbOW15balsJd35bYlt2WI5cilyWXrJeul6iXq5ekl6qX/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v+il6WX15fZl9aX2Jf6l1CYUZhSmLiYQZk8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mVaZOZo9mkaaRJpCmkGaOpr+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/z+azZoVmxebGJsWmzqbUpsrnB2cHJwsnCOcKJwpnCScIZy3nbadvJ3Bncedyp3Pnb6dxZ3DnbudtZ3Onbmdup2sncidsZ2tncyds53NnbKdep6cnuue7p7tnhufGJ8anzGfTp9ln2Sfkp+5TsZWxVbLVnFZS1tMW9Vd0V3yXiFlIGUmZSJlC2sIawlrDWxVcFZwV3BScB5yH3Kpcn9z2HTVdNl013Rtdq12NXm0eXB6cXpXfFx8WXxbfFp89HzxfJF+T3+Hf96Ba4I0hjWGM4YshjKGNoYsiCiIJogqiCWIcYm/ib6J+4l+i4SLgouGi4WLf4sVjZWOlI6ajpKOkI6WjpeOYI9ij0eRTJRQlEqUS5RPlEeURZRIlEmURpQ/l+OXaphpmMuYVJlbmU6aU5pUmkyaT5pImkqa/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v9JmlKaUJrQmhmbK5s7m1abVZtGnEicP5xEnDmcM5xBnDycN5w0nDKcPZw2nNud0p3endqdy53Qndyd0Z3fnemd2Z3Yndad9Z3Vnd2dtp7wnjWfM58yn0Kfa5+Vn6KfPVGZUuhY51hyWU1b2F0viE9fAWIDYgRiKWUlZZZl62YRaxJrD2vKa1twWnAicoJzgXODc3B21HdnfGZ8lX5sgjqGQIY5hjyGMYY7hj6GMIgyiC6IM4h2iXSJc4n+iYyLjouLi4iLRYwZjZiOZI9jj7yRYpRVlF2UV5RelMSXxZcAmFaaWZoemx+bIJtSnFicUJxKnE2cS5xVnFmcTJxOnPud953vneOd6534neSd9p3hne6d5p3ynfCd4p3snfSd853one2dwp7QnvKe854GnxyfOJ83nzafQ59Pn/7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7/cZ9wn26fb5/TVs1WTlttXC1l7WbuZhNrX3BhcF1wYHAjctt05XTVdzh5t3m2eWp8l36Jf22CQ4Y4iDeINYhLiJSLlYuejp+OoI6djr6RvZHCkWuUaJRplOWWRpdDl0eXx5fll16a1ZpZm2OcZ5xmnGKcXpxgnAKe/p0HngOeBp4FngCeAZ4Jnv+d/Z0EnqCeHp9Gn3SfdZ92n9RWLmW4ZRhrGWsXaxprYnAmcqpy2HfZdzl5aXxrfPZ8mn6Yfpt+mX7ggeGBRoZHhkiGeYl6iXyJe4n/iZiLmYuljqSOo45ulG2Ub5RxlHOUSZdymF+ZaJxunG2cC54NnhCeD54SnhGeoZ71ngmfR594n3ufep95nx5XZnBvfDyIso2mjsORdJR4lHaUdZRgmnScc5xxnHWcFJ4TnvaeCp/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+/6SfaHBlcPd8aoY+iD2IP4iei5yMqY7JjkuXc5h0mMyYYZmrmWSaZppnmiSbFZ4XnkifB2IeaydyTIaojoKUgJSBlGmaaJoumxmeKXJLhp+Lg5R5nLeedXZrmnqcHZ5pcGpwpJ5+n0mfmJ8AAAAAwqFFof///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+GjQaL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Kh////////86H4+eb57/nd+ej58fnf+ez59fnj+e759/nl+f//8vng+f//9Pni+ef58Pne+e359vnk+f//8/nh+f/////////////////////////////////////////////////////////////////////////////////////////////////////++dn53Pna+db52/nY+df5TqH//////////////////////////////////////////////////////////0Ki/qH/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////QKL////////////////////////////////////////////////////////////////////////////////////////jof///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0aiR6L///////9EogAAAAAAACcg/v/+//7//v/+//7//v/+/1H+/v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+//7//v/+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ABMABIgeABMABQATAAEABIgYABMBBQAOAA8ABAAeABMABAAdABMAA4geAAsABAAbAAsABAAJAAkABIgCAAEABYgZABMBBQAJABMABIgBAAEABQoBAAEABAAbABMABAACAAEABAACAAEABAoCAAEABQoBAAEABQABAAEABIgCAAEABIgCAAEABQATAAEABQABAAEABYgDAAEABYgSAAEABYgSABMABQASAAEABQAdABMABQAdABMABAASABMABAASAAEABAAdABMABYgE5g4ABFAE5g4ABAAE6A4ABAAE3A4ABAAE2A4ABFAEyg4ABAAE3A4ABFAEyg4ABFAEAQ4ABAAEAQ4ABFAE5g4ABKoE8A4ABFAEAA4ABAAE6Q4ABAAE6g4ABAASABMABaoaABMABaodABMABYoBAAEABYobABMABQABAAEABAoeAAEABQAE5g4ABQAGAA4ABQAaAAEABQAVABMABQAcAAsABQAE3A4ABQAE3g4ABQAE5A4ABQAECg4ABQAECw4ABQAEDA4ABQAEDQ4ABQAEDg4ABQAEDw4ABQAEEA4ABQAEEQ4ABQAEEg4ABQAEEw4ABQAEFA4ABQAEFQ4ABQAEFg4ABQAVAAQABQAEFw4ABQAaAAQABQAEGA4ABQAEGQ4ABQATAAQABQAOAAwABQAbAAUABQAaAAsABQAcAAUABQAaAA0ABQAaAAUABQAEHg4ABQAEHw4ABQAEIA4ABQAOAAUABQATAAUABQATAAUABQoSAAUABQAEGw4ABQAEHA4ABQAEHQ4ABQAEIQ4ABQAEIg4ABQAE5g4ABVAE3A4ABVAHAAwABQAaAAwABQAEIw4ABQATAAUABYgHAAkABQAeAAUABQAEJA4ABQAEAA4ABQAHAAQABQASAAQABQAaABMABQAcAAQABQAdAAUABQAFAAEABQATAAEABQoEBw4ABVAECQ4ABQATAAEABaoHAAEABQAEBw4ABQAFAAEABVAFAAEABQoJAAEABQAEAA4ABVAEAA4ABQoEVA4ABQAEWw4ABVAJABMABQAEAAEABQAECQ4ABVATAAEABYgEZw4ABQAEaw4ABQAEdg4ABQAEeg4ABQAaAAEABYgE2A4ABQAWABMBBQAXABMBBQAEgQ4ABQAEgg4ABQAEAA4ABaoEhA4ABQAEAA4ABYgTAAEAAgATAAEABVAKABIABQAIAAEABQAFCQEABQAOAA8ABQAEAQ4ABQAE6g4ABQAE1g4ABQAEyg4ABQAE6A4ABQAE2g4ABQAE6Q4ABQACAAEABYoCAAEABaoDAAEABQoBAAEABaodABMABaoKABIABaoKABIABYgOAAEABQAOAAQABQAVABMABAAVABMABYgaABMABYgYABMABAAZABMABAAWABMABQAYABMABQAaABMABIgLABIABQAMABAABQAOAAIABQAOAAYABQAOAAgABQAOAAMABQAOAAcABQAaAAsABAAaAAsABIgaAAsABYgUABMABQAbAA0ABQAOABQABQAOABUABQAOABYABQAOABcABQAJAAkABYgbAAoABYgbABMABYgWABMBBYgXABMBBYgSAAEABIgcAAsABYgcAAsAAQAeABMABYgeABMABIgBAAEABKoeAAsABQAbABMBBYgJABMABYgIAAEABIgIAAEABYgbABMABQoeABMABQobABMBBQAbABMBBAAbABMBBQobAAoABQAbAAsABQAbABMBBIgbABMBBAoeABMAAgAWABMBAqoXABMBAqoeAAEABIgJABMABAAbABMAAgAbABMBBaoeABMBBQAeABMAAogKABIAAIgaABMAAgASAAEAAgAIAAEAAgAWABMBAgAXABMBAgAVABMAAgAWABMAAgAXABMAAgAE2g4AAgAE5A4AAgAE6A4AAgAE3g4AAgAF4AEAAgAIAAEAAogTAAEAAgoECA4AAlAdABMAAogSAAEAAgoTAAEAAogeAAEAAgAJAAEAAogeAAEAAogJAAEABAAJABMAAogdAAEABQAPAAEABQAQAAEABAATAAEAAqoTAAQABaoEGg4ABQATAAQABYgXABMABQAcAAUABYgaABMAAogWABMAAogXABMAAogVABMAAogUABMAAogaAA0AAogWABMBAogXABMBAogaAAsAAogbAAoAAogVAAoAAogbABMBAogbABMAAogcAAsAAogaABMAAIgaAAsAAIgcAAsAAIgWABMBAIgXABMBAIgbAAoAAIgaAA0AAIgVAAoAAIgHAAkAAIgbABMBAIgbABMAAIgBAAEAAIgdABMAAIgUABMAAIgCAAEAAIgaABMAAYgWABMBAYgXABMBAYgTAAEAAYgSAAEAAYgeABMAAIgeABMAAYgbABMAAYgOABMABQAIABMABQAJAAkABQAJAAQABQAeAAQABQABAAQABQACAAQABQAJAAwABQAJAAUABQAECQEABQAEAA4AAgAFBgEAAgAeAAEABaoF2AEABQAF4gEABQAbAAEABYgHAAkABYgeAAEABYgeAAEABAAdABMAAgAAAAAAAABUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIHdoaWNoCmRlZmluZXMgY2hhcmFjdGVyIHByb3BlcnRpZXMgZm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMuIFRoZSBkYXRhIGluCnRoaXMgZGF0YWJhc2UgaXMgYmFzZWQgb24gdGhlIFVuaWNvZGVEYXRhLnR4dCBmaWxlIHZlcnNpb24KMTQuMC4wIHdoaWNoIGlzIHB1YmxpY2x5IGF2YWlsYWJsZSBmcm9tIGZ0cDovL2Z0cC51bmljb2RlLm9yZy8uCgpUaGUgbW9kdWxlIHVzZXMgdGhlIHNhbWUgbmFtZXMgYW5kIHN5bWJvbHMgYXMgZGVmaW5lZCBieSB0aGUKVW5pY29kZURhdGEgRmlsZSBGb3JtYXQgMTQuMC4wLgAAAAAAAAAAAAAAAAAAAGRlY2ltYWwoJHNlbGYsIGNociwgZGVmYXVsdD08dW5yZXByZXNlbnRhYmxlPiwgLykKLS0KCkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkZWNpbWFsIHZhbHVlLgoKUmV0dXJucyB0aGUgZGVjaW1hbCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgpJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sClZhbHVlRXJyb3IgaXMgcmFpc2VkLgAAAAAAAAAAAAAAAGRpZ2l0KCRzZWxmLCBjaHIsIGRlZmF1bHQ9PHVucmVwcmVzZW50YWJsZT4sIC8pCi0tCgpDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgZGlnaXQgdmFsdWUuCgpSZXR1cm5zIHRoZSBkaWdpdCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgpJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sClZhbHVlRXJyb3IgaXMgcmFpc2VkLgAAbnVtZXJpYygkc2VsZiwgY2hyLCBkZWZhdWx0PTx1bnJlcHJlc2VudGFibGU+LCAvKQotLQoKQ29udmVydHMgYSBVbmljb2RlIGNoYXJhY3RlciBpbnRvIGl0cyBlcXVpdmFsZW50IG51bWVyaWMgdmFsdWUuCgpSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGZsb2F0LgpJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sClZhbHVlRXJyb3IgaXMgcmFpc2VkLgAAAAAAAAAAAAAAAAAAY2F0ZWdvcnkoJHNlbGYsIGNociwgLykKLS0KClJldHVybnMgdGhlIGdlbmVyYWwgY2F0ZWdvcnkgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLgAAAAAAAAAAAAAAAAAAAGJpZGlyZWN0aW9uYWwoJHNlbGYsIGNociwgLykKLS0KClJldHVybnMgdGhlIGJpZGlyZWN0aW9uYWwgY2xhc3MgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLgoKSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuAAAAAAAAAAAAAAAAY29tYmluaW5nKCRzZWxmLCBjaHIsIC8pCi0tCgpSZXR1cm5zIHRoZSBjYW5vbmljYWwgY29tYmluaW5nIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCgpSZXR1cm5zIDAgaWYgbm8gY29tYmluaW5nIGNsYXNzIGlzIGRlZmluZWQuAAAAAAAAAG1pcnJvcmVkKCRzZWxmLCBjaHIsIC8pCi0tCgpSZXR1cm5zIHRoZSBtaXJyb3JlZCBwcm9wZXJ0eSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgoKUmV0dXJucyAxIGlmIHRoZSBjaGFyYWN0ZXIgaGFzIGJlZW4gaWRlbnRpZmllZCBhcyBhICJtaXJyb3JlZCIKY2hhcmFjdGVyIGluIGJpZGlyZWN0aW9uYWwgdGV4dCwgMCBvdGhlcndpc2UuAAAAAAAAAAAAAAAAAAAAZWFzdF9hc2lhbl93aWR0aCgkc2VsZiwgY2hyLCAvKQotLQoKUmV0dXJucyB0aGUgZWFzdCBhc2lhbiB3aWR0aCBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuAAAAAAAAAGRlY29tcG9zaXRpb24oJHNlbGYsIGNociwgLykKLS0KClJldHVybnMgdGhlIGNoYXJhY3RlciBkZWNvbXBvc2l0aW9uIG1hcHBpbmcgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLgoKQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGluIGNhc2Ugbm8gc3VjaCBtYXBwaW5nIGlzIGRlZmluZWQuAAAAAAAAAAAAAG5hbWUoJHNlbGYsIGNociwgZGVmYXVsdD08dW5yZXByZXNlbnRhYmxlPiwgLykKLS0KClJldHVybnMgdGhlIG5hbWUgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgYSBzdHJpbmcuCgpJZiBubyBuYW1lIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sClZhbHVlRXJyb3IgaXMgcmFpc2VkLgAAAAAAAAAAAAAAAABsb29rdXAoJHNlbGYsIG5hbWUsIC8pCi0tCgpMb29rIHVwIGNoYXJhY3RlciBieSBuYW1lLgoKSWYgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuIHRoZQpjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4gIElmIG5vdCBmb3VuZCwgS2V5RXJyb3IgaXMgcmFpc2VkLgAAAAAAAGlzX25vcm1hbGl6ZWQoJHNlbGYsIGZvcm0sIHVuaXN0ciwgLykKLS0KClJldHVybiB3aGV0aGVyIHRoZSBVbmljb2RlIHN0cmluZyB1bmlzdHIgaXMgaW4gdGhlIG5vcm1hbCBmb3JtICdmb3JtJy4KClZhbGlkIHZhbHVlcyBmb3IgZm9ybSBhcmUgJ05GQycsICdORktDJywgJ05GRCcsIGFuZCAnTkZLRCcuAAAAbm9ybWFsaXplKCRzZWxmLCBmb3JtLCB1bmlzdHIsIC8pCi0tCgpSZXR1cm4gdGhlIG5vcm1hbCBmb3JtICdmb3JtJyBmb3IgdGhlIFVuaWNvZGUgc3RyaW5nIHVuaXN0ci4KClZhbGlkIHZhbHVlcyBmb3IgZm9ybSBhcmUgJ05GQycsICdORktDJywgJ05GRCcsIGFuZCAnTkZLRCcuAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACkAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBmAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBnAGUAZQBlAGUAZQBlAGUAZQBoACkAKQBpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB2AHcAdwB3AHcAdwB3AHcAdwB3AHcAdwB3AHcAdwB3AHcAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHkAeQB6AHsAfAB9AH4AfgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkAApACkAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCJAJ4AnwCgAKEAogCjAKQApQCmAKcAqACJAKkAqgCJAKsArACtAK4AiQCvALAAsQCyALMAtACJAIkAtQC2ALcAuACJALkAiQC6ACkAKQApACkAKQApACkAuwC8ACkAvQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAvgApACkAKQApACkAKQApACkAvwCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJACkAKQApACkAwACJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJACkAKQApACkAwQDCAMMAxACJAIkAiQCJAMUAxgDHAMgAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAMkAZQBlAGUAZQBlAGUAZQBlAGUAygDLAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQDMAGUAZQDNAGUAZQDOAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAM8A0ACJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQDRANIATgDTANQA1QDWANcA2ACJANkA2gDbANwA3QDeAN8A4ABOAE4ATgBOAOEA4gCJAIkAiQCJAIkAiQCJAIkA4wCJAOQAiQDlAIkAiQDmAIkAiQCJAIkAiQCJAIkAiQCJAOcA6ADpAOoAiQCJAIkAiQCJAOsA7ADtAIkA7gDvAIkAiQDwAPEA8gDzAPQAiQD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgGJAIkAiQCJAIkAiQCJAIkAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUABwFlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUACAFlAAkBZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAAoBZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUACwGJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQB5AHkAeQB5AAwBiQCJAIkAiQCJAIkAiQCJAIkAiQCJAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQBlAGUAZQANAYkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkADgGJAA8BEAGJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAIkAiQCJAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEQF4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABEBAQABAAEAAQABAAEAAQABAAEAAgADAAIABAADAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADAAMAAwACAAUABgAGAAcACAAHAAYABgAJAAoABgALAAwADQAMAAwADgAOAA4ADgAOAA4ADgAOAA4ADgAMAAYADwAQAA8ABgAGABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQARABEAEQAJAAYACgASABMAEgAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACQAQAAoAEAABAAEAAQABAAEAAQADAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAVABYACAAIABcACAAYABYAGQAaABsAHAAQAB0AHgAfACAAIQAiACIAGQAjABYAFgAZACIAGwAkACUAJQAlABYAJgAmACYAJgAmACYAJwAmACYAJgAmACYAJgAmACYAJgAnACYAJgAmACYAJgAmACgAJwAmACYAJgAmACYAJwApACoAKgArACsAKwArACkAKwAqACoAKgArACoAKgArACsAKQArACoAKgArACsAKwAoACkAKgAqACsAKgArACkAKwAmACoAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACwAKQAmACoAJgArACYAKwAmACsAJgAqACYAKwAmACsAJgArACYAKwAmACsAJwApACYAKwAmACoAJgArACYAKwAmACkALQAuACYAKwAmACsAKQAmACsAJgArACYAKwAtAC4AJwApACYAKgAmACsAJgAqAC4AJwApACYAKgAmACsAJgArACcAKQAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAnACkAJgArACYAKgAmACsAJgArACYAKwAmACsAJgArACYAKwAmACYAKwAmACsAJgArACMALwAsACwALwAsAC8ALAAsAC8ALAAsACwALwAvACwALAAsACwALwAsACwALwAsACwALAAvAC8ALwAsACwALwAsACYAKwAsAC8ALAAvACwALAAvACwALwAvACwALwAsACYAKwAsACwALAAvACwALwAsACwALwAvADAALAAvAC8ALwAwADAAMAAwADEAMgAjADEAMgAjADEAMgAjACYAKgAmACoAJgAqACYAKgAmACoAJgAqACYAKgAmACoALwAmACsAJgArACYAKwAsAC8AJgArACYAKwAmACsAJgArACYAKwArADEAMgAjACYAKwAsACwAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsALAAvACYAKwAsAC8ALAAvACwALwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsALwAvAC8ALwAvAC8ALAAsAC8ALAAsAC8ALwAsAC8ALAAsACwALAAvACwALwAsAC8ALAAvACwALwAvACkALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8AKQAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8AMAAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAzADMAMwAzADMAMwAzADMAMwA0ADQANQA1ADUANQA1ADUANQA2ADYANwA2ADQAOAA0ADgAOAA4ADQAOAA0ADQAOQA1ADYANgA2ADYANgA2ABkAGQAZABkAOgAZADYANwAzADMAMwAzADMANgA2ADYANgA2ADYANgA0ADYANQA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYAOwA7ADsAOwA7ADwAOwA7ADsAOwA7ADsAOwA8ADwAOwA8ADsAPAA7ADsAPQA+AD4APgA+AD0APwA+AD4APgA+AD4AQABAAEEAQQBBAEEAQgBCAD4APgA+AD4AQQBBAD4AQQBBAD4APgBDAEMAQwBDAEQAPgA+AD4APgA8ADwAPABFAEUAOwBFAEUARgA8AD4APgA+ADwAPAA8AD4APgBHADwAPAA8AD4APgA+AD4APAA9AD4APgA8AEgASQBJAEgASQBJAEgAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAsAC8ALAAvAEoANgAsAC8AAAAAADMALwAvAC8ASwAsAAAAAAAAAAAAOgBMACYASwAmACYAJgAAACYAAAAmACYAKwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAAAAnACcAJwAnACcAJwAnACYAJgArACsAKwArACsAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApAC8AKQApACkAKQApACkAKQArACsAKwArACsALAAjACMAMQBNAE0AIwAjAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8AIwAjACMALwAxACMATgAsAC8AMQAsAC8ALwAsACwALAAmAE8ALAAmACwALAAsACYALAAsACwALAAmACYAJgAsACcAJwAnACcAJwAnACcAJwAnAE8AJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwAnACcAJwApACkAKQApACkAKQApACkAKQAqACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKwAqAC8AKwAvAC8ALwArAC8ALwAvAC8AKwArACsALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACYAKwAsAC8ALAAvACwALwAsAC8ALAAvAFAAUQBRAFEAUQBRAFIAUgAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsACYAKwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAvACYAKwAmACsALAAvACYAKwAsAC8AJgArACYAKwAmACsALAAvACYAKwAmACsAJgArACwALwAmACsAJgArACYAKwAmACsAJgArACYAKwAsAC8AJgArACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvAAAALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsAAAAAAA1AFMAUwBTAFMAUwBTAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvACMALwBTAFQAAAAAABoAGgBVAAAAVgBRAFEAUQBRAFYAUQBRAFEAVwBWAFEAUQBRAFEAUQBRAFYAVgBWAFYAVgBWAFEAUQBWAFEAUQBXAFgAUQBZAFoAWwBcAF0AXgBfAGAAYQBiAGIAYwBkAGUAZgBnAGgAaQBqAGgAUQBWAGgAYQAAAAAAAAAAAAAAAAAAAAAAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAAAAAAAAAAABrAGsAawBrAGgAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAGwAbABsAGwATgBOAG0AbgBuAG8AcABxABoAGgBRAFEAUQBRAFEAUQBRAFEAcgBzAHQAcQB1AHEAcQBxAHYAdgB3AHcAdwB3AHcAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB4AHYAdgB2AHYAdgB2AHYAdgB2AHYAeQB6AHsAcgBzAHQAfAB9AH4AfgB/AFYAUQBRAFEAUQBRAFYAUQBRAFYAgACAAIAAgACAAIAAgACAAIAAgABuAIEAgQBxAHYAdgCCAHYAdgB2AHYAgwCDAIMAgwB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdwB2AHcAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB3AHEAdgBRAFEAUQBRAFEAUQBRAGwAGgBRAFEAUQBRAFYAUQB4AHgAUQBRABoAVgBRAFEAVgB2AHYAhACEAIQAhACEAIQAhACEAIQAhAB2AHYAdgCFAIUAdgBxAHEAcQBxAHEAcQBxAHEAcQBxAHEAcQBxAHEAAAB1AHYAhgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgBRAFYAUQBRAFYAUQBRAFYAVgBWAFEAVgBWAFEAVgBRAFEAUQBWAFEAVgBRAFYAUQBWAFEAUQAAAAAAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AIcAhwCHAIcAhwCHAIcAhwCHAIcAhwB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAIgAiACIAIgAiACIAIgAiACIAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAFEAUQBRAFEAUQBRAFEAVgBRAIkAiQAaAIoAigCKAIkAAAAAAFYAiwCLAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAUQBRAFEAUQCJAFEAUQBRAFEAUQBRAFEAUQBRAIkAUQBRAFEAiQBRAFEAUQBRAFEAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBWAFYAVgAAAAAAaAAAAHYAdgB2AHYAdgB2AHYAdgB2AHYAdgAAAAAAAAAAAAAAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAjAB2AHYAdgB2AHYAdgAAAGwAbAAAAAAAAAAAAAAAAABRAFYAVgBWAFEAUQBRAFEAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHgAUQBRAFEAUQBRAFYAVgBWAFYAVgBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAbABWAFEAUQBWAFEAUQBWAFEAUQBRAFYAVgBWAHkAegB7AFEAUQBRAFYAUQBRAFYAVgBRAFEAUQBRAFEAhwCHAIcAjQAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAI4AMAAwADAAMAAwADAAMACOADAAMACOADAAMAAwADAAMACHAI0AjwAwAI0AjQCNAIcAhwCHAIcAhwCHAIcAhwCNAI0AjQCNAJAAjQCNADAAUQBWAFEAUQCHAIcAhwCRAJEAkQCRAJEAkQCRAJEAMAAwAIcAhwBTAFMAkgCSAJIAkgCSAJIAkgCSAJIAkgBTADUAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAhwCNAI0AAAAwADAAMAAwADAAMAAwADAAAAAAADAAMAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAADAAMAAwADAAMAAwADAAAAAwAAAAAAAAADAAMAAwADAAAAAAAJMAMACUAI0AjQCHAIcAhwCHAAAAAACNAI0AAAAAAJUAlQCQADAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAAAAACRAJEAAACRADAAMACHAIcAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAMAAwAFUAVQCWAJYAlgCWAJYAlgBQAFUAMABTAFEAAAAAAIcAhwCNAAAAMAAwADAAMAAwADAAAAAAAAAAAAAwADAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAwADAAMAAwADAAMAAwAAAAMACRAAAAMACRAAAAMAAwAAAAAACTAAAAjQCNAI0AhwCHAAAAAAAAAAAAhwCHAAAAAACHAIcAkAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAkQCRAJEAMAAAAJEAAAAAAAAAAAAAAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAIcAhwAwADAAMACHAFMAAAAAAAAAAAAAAAAAAAAAAAAAAACHAIcAjQAAADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAAADAAMAAAADAAMAAwADAAMAAAAAAAkwAwAI0AjQCNAIcAhwCHAIcAhwAAAIcAhwCNAAAAjQCNAJAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwAIcAhwAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgBTAFUAAAAAAAAAAAAAAAAAAAAwAIcAhwCHAIcAhwCHAAAAhwCNAI0AAAAwADAAMAAwADAAMAAwADAAAAAAADAAMAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAADAAMAAwADAAMAAwADAAAAAwADAAAAAwADAAMAAwADAAAAAAAJMAMACUAIcAjQCHAIcAhwCHAAAAAACNAJUAAAAAAJUAlQCQAAAAAAAAAAAAAAAAAAAAhwCXAJQAAAAAAAAAAACRAJEAAAAwADAAMACHAIcAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAUAAwAJYAlgCWAJYAlgCWAAAAAAAAAAAAAAAAAAAAAAAAAAAAhwAwAAAAMAAwADAAMAAwADAAAAAAAAAAMAAwADAAAAAwADAAjgAwAAAAAAAAADAAMAAAADAAAAAwADAAAAAAAAAAMAAwAAAAAAAAADAAMAAwAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAlACNAIcAjQCNAAAAAAAAAI0AjQCNAAAAlQCVAJUAkAAAAAAAMAAAAAAAAAAAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAJYAlgCWABoAGgAaABoAGgAaAFUAGgAAAAAAAAAAAAAAhwCNAI0AjQCHADAAMAAwADAAMAAwADAAMAAAADAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAkwAwAIcAhwCHAI0AjQCNAI0AAACHAIcAmAAAAIcAhwCHAJAAAAAAAAAAAAAAAAAAAACZAJoAAAAwADAAMAAAAAAAMAAAAAAAMAAwAIcAhwAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAAAAAAAAAAAAAAFMAmwCbAJsAmwCbAJsAmwBQADAAhwCNAI0AUwAwADAAMAAwADAAMAAwADAAAAAwADAAMAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAADAAMAAwADAAMAAwADAAMAAwADAAAAAwADAAMAAwADAAAAAAAJMAMACNAJwAlQCNAJQAjQCNAAAAnACVAJUAAACVAJUAhwCQAAAAAAAAAAAAAAAAAAAAlACUAAAAAAAAAAAAAAAAADAAMAAAADAAMACHAIcAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAIcAjQCNADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAkACQADAAlACNAI0AhwCHAIcAhwAAAI0AjQCNAAAAlQCVAJUAkAAwAFAAAAAAAAAAAAAwADAAMACUAJYAlgCWAJYAlgCWAJYAMAAwADAAhwCHAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAJYAlgCWAJYAlgCWAJYAlgCWAFAAMAAwADAAMAAwADAAAACHAI0AjQAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAAAAwAAAAAAAwADAAMAAwADAAMAAwAAAAAAAAAJ0AAAAAAAAAAACUAI0AjQCHAIcAhwAAAIcAAACNAI0AlQCNAJUAlQCVAJQAAAAAAAAAAAAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAjQCNAFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAhwAwAJ4AhwCHAIcAhwCfAJ8AkAAAAAAAAAAAAFUAMAAwADAAMAAwADAANQCHAKAAoACgAKAAhwCHAIcAUwCSAJIAkgCSAJIAkgCSAJIAkgCSAFMAUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAAADAAAAAwADAAMAAwADAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAADAAAAAwADAAMAAwADAAMAAwADAAMAAwAIcAMACeAIcAhwCHAIcAoQChAJAAhwCHADAAAAAAADAAMAAwADAAMAAAADUAAACiAKIAogCiAIcAhwAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAngCeADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMABQAFAAUABTAFMAUwBTAFMAUwBTAFMAowBTAFMAUwBTAFMAUwBQAFMAUABQAFAAVgBWAFAAUABQAFAAUABQAJIAkgCSAJIAkgCSAJIAkgCSAJIAlgCWAJYAlgCWAJYAlgCWAJYAlgBQAFYAUABWAFAApAClAKYApQCmAI0AjQAwADAAMACRADAAMAAwADAAAAAwADAAMAAwAJEAMAAwADAAMACRADAAMAAwADAAkQAwADAAMAAwAJEAMAAwADAAMAAwADAAMAAwADAAMAAwADAAkQAwADAAMAAAAAAAAAAAAKcAqACpAKoAqQCpAKsAqQCrAKgAqACoAKgAhwCNAKgAqQBRAFEAkABTAFEAUQAwADAAMAAwADAAhwCHAIcAhwCHAIcAqQCHAIcAhwCHAAAAhwCHAIcAhwCpAIcAhwCHAIcAqQCHAIcAhwCHAKkAhwCHAIcAhwCpAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAKkAhwCHAIcAAABQAFAAUABQAFAAUABQAFAAVgBQAFAAUABQAFAAUAAAAFAAUABTAFMAUwBTAFMAUABQAFAAUABTAFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAjgAwADAAMAAwAI0AjQCHAJcAhwCHAI0AhwCHAIcAhwCHAJMAjQCQAJAAjQCNAIcAhwAwAJIAkgCSAJIAkgCSAJIAkgCSAJIAUwBTAFMAUwBTAFMAMAAwADAAMAAwADAAjQCNAIcAhwAwADAAMAAwAIcAhwCHADAAjQCNAI0AMAAwAI0AjQCNAI0AjQCNAI0AMAAwADAAhwCHAIcAhwAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIcAjQCNAIcAhwCNAI0AjQCNAI0AjQBWADAAjQCSAJIAkgCSAJIAkgCSAJIAkgCSAI0AjQCNAIcAUABQACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAAACwAAAAAAAAAAAAAACwAAAAAAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8AUwAzAC8ALwAvAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsADAArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0AMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtAK0ArQCtADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAADAAMAAwADAAAAAAADAAMAAwADAAMAAwADAAAAAwAAAAMAAwADAAMAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAwADAAMAAwAAAAAAAwADAAMAAwADAAMAAwAAAAMAAAADAAMAAwADAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAwADAAMAAwAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAABRAFEAUQBTAFMAUwBTAFMAUwBTAFMAUwCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAaABoAGgAaABoAGgAaABoAGgAaAAAAAAAAAAAAAAAAACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAAAAAALwAvAC8ALwAvAC8AAAAAAFQAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABQAFMAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAK4AMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAKUApgAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABTAFMAUwCvAK8ArwAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACHAIcAkACwAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAhwCHALAAUwBTAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIcAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAAACHAIcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACHAIcAjQCHAIcAhwCHAIcAhwCHAI0AjQCNAI0AjQCNAI0AjQCHAI0AjQCHAIcAhwCHAIcAhwCHAIcAhwCQAIcAUwBTAFMANQBTAFMAUwBVADAAUQAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAAAAAAAAAAACbAJsAmwCbAJsAmwCbAJsAmwCbAAAAAAAAAAAAAAAAAIoAigCKAIoAigCKAFQAigCKAIoAigCHAIcAhwCxAIcAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAhwCHADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAWAAwAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAIcAhwCHAI0AjQCNAI0AhwCHAI0AjQCNAAAAAAAAAAAAjQCNAIcAjQCNAI0AjQCNAI0AVwBRAFYAAAAAAAAAAAAaAAAAAAAAAIoAigCSAJIAkgCSAJIAkgCSAJIAkgCSADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAwADAAMAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAAAAAAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAJYAAAAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAUQBWAI0AjQCHAAAAAABTAFMAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAI0AhwCNAIcAhwCHAIcAhwCHAIcAAACQAI0AhwCNAI0AhwCHAIcAhwCHAIcAhwCHAI0AjQCNAI0AjQCNAIcAhwBRAFEAUQBRAFEAUQBRAFEAAAAAAFYAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAAAAAAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAAAAAAAAAAAAAAAAAFMAUwBTAFMAUwBTAFMANQBTAFMAUwBTAFMAUwAAAAAAUQBRAFEAUQBRAFYAVgBWAFYAVgBWAFEAUQBWAFIAVgBWAFEAUQBWAFYAUQBRAFEAUQBRAFYAUQBRAFEAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcAhwCHAIcAjQAwAI4AMACOADAAjgAwAI4AMACOADAAMAAwAI4AMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAkwCUAIcAhwCHAIcAhwCVAIcAlQCNAI0AlQCVAIcAlQCwADAAMAAwADAAMAAwADAAMAAAAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAFMAUwBTAFMAUwBTAFMAUABQAFAAUABQAFAAUABQAFAAUABRAFYAUQBRAFEAUQBRAFEAUQBQAFAAUABQAFAAUABQAFAAUABTAFMAAACHAIcAjQAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACNAIcAhwCHAIcAjQCNAIcAhwCwAJAAhwCHADAAMACSAJIAkgCSAJIAkgCSAJIAkgCSADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACTAI0AhwCHAI0AjQCNAIcAjQCHAIcAhwCwALAAAAAAAAAAAAAAAAAAAAAAAFMAUwBTAFMAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAjQCNAI0AjQCNAI0AjQCNAIcAhwCHAIcAhwCHAIcAhwCNAI0AhwCTAAAAAAAAAFMAUwBTAFMAUwCSAJIAkgCSAJIAkgCSAJIAkgCSAAAAAAAAADAAMAAwAJIAkgCSAJIAkgCSAJIAkgCSAJIAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQA1ADUANQA1ADUAUwBTAC8ALwAvAC8ALwAvAC8ALwAvAAAAAAAAAAAAAAAAAAAALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAAAAAALAAsACwAUwBTAFMAUwBTAFMAUwBTAAAAAAAAAAAAAAAAAAAAAABRAFEAUQBTALIAVgBWAFYAVgBWAFEAUQBWAFYAVgBWAFEAjQCyALIAsgCyALIAsgCyADAAMAAwADAAVgAwADAAMAAwADAAMABRADAAMACNAFEAUQAwAAAAAAAAAAAAAAAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8AMwAzADMANQAzADMAMwAzADMAMwAzADMAMwAzADMANQAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwA1ADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAzAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8AMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwBRAFEAVgBRAFEAUQBRAFEAUQBRAFYAUQBRALMAtABWALUAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQC2AFgAWABWALcAUQC4AFYAUQBWACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACsAKwArACsAIwC5AC8ALwAsAC8AJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsAJgArACYAKwAmACsALAAvACwALwAsAC8AKwArACsAKwArACsAKwArACYAJgAmACYAJgAmACYAJgArACsAKwArACsAKwAAAAAAJgAmACYAJgAmACYAAAAAACsAKwArACsAKwArACsAKwAmACYAJgAmACYAJgAmACYAKwArACsAKwArACsAKwArACYAJgAmACYAJgAmACYAJgArACsAKwArACsAKwAAAAAAJgAmACYAJgAmACYAAAAAACsAKwArACsAKwArACsAKwAAACYAAAAmAAAAJgAAACYAKwArACsAKwArACsAKwArACYAJgAmACYAJgAmACYAJgArALoAKwC6ACsAugArALoAKwC6ACsAugArALoAAAAAACsAKwArACsAKwArACsAKwC7ALsAuwC7ALsAuwC7ALsAKwArACsAKwArACsAKwArALsAuwC7ALsAuwC7ALsAuwArACsAKwArACsAKwArACsAuwC7ALsAuwC7ALsAuwC7ACsAKwArACsAKwAAACsAKwAmACYAJgC8ALsAOgC6ADoAOgBMACsAKwArAAAAKwArACYAvAAmALwAuwBMAEwATAArACsAKwC6AAAAAAArACsAJgAmACYAvAAAAEwATABMACsAKwArALoAKwArACsAKwAmACYAJgC8ACYATAC9AL0AAAAAACsAKwArAAAAKwArACYAvAAmALwAuwC9ADoAAAC+AL4AvwC/AL8AvwC/AL8AvwC/AL8AsQCxALEAwADBAMIAwwBUAMIAwgDCABYAxADFAMYAxwDIAMUAxgDHAMgAFgAWABYAigDJAMkAyQAWAMoAywDMAM0AzgDPANAAFQDRAG4A0QDSANMAFgDEAMQAigAcACQAFgDEAIoAyQDUANQAigCKAIoA1QClAKYAxADEAMQAigCKAIoAigCKAIoAigCKAE4AigDUAIoAigDEAIoAigCKAIoAigCKAIoAvwCxALEAsQCxALEAAADWANcA2ADZALEAsQCxALEAsQCxANoAMwAAAAAAIgDaANoA2gDaANoA2wDbANwA3QDeAN8A2gAiACIAIgAiANoA2gDaANoA2gDbANsA3ADdAN4AAAAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzAAAAAAAAAFUAVQBVAFUAVQBVAFUAVQDgAOEAVQBVABcAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAUQCyALIAUQBRAFEAUQCyALIAsgBRAFEAUgBSAFIAUgBRAFIAUgBSALIAsgBRAFYAUQCyALIAVgBWAFYAVgBRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOIA4gAxAOMAGgDjAOIAMQAaAOMAIwAxADEAMQAjACMAMQAxADEALgAaADEA4wAaAE4AMQAxADEAMQAxABoAGgDiAOMA4wAaADEAGgDkABoAMQAaALwA5AAxADEA5QAjADEAMQAsADEAIwCeAJ4AngCeACMAGgDiACMAIwAxADEA5gBOAE4ATgBOADEAIwAjACMAIwAaAE4AGgAaAC8AUADnAOcA5wAlACUA5wDnAOcA5wDnAOcAJQAlACUAJQDnAOgA6ADoAOgA6ADoAOgA6ADoAOgA6ADoAOkA6QDpAOkA6ADoAOgA6ADoAOgA6ADoAOgA6ADpAOkA6QDpAOkA6QCvAK8ArwAsAC8ArwCvAK8ArwAlABoAGgAAAAAAAAAAACgAKAAoACgAKAAeAB4AHgAeAB4A6gDqABoAGgAaABoATgAaABoATgAaABoATgAaABoAGgAaABoAGgAaAOoAGgAaABoAGgAaABoAGgAaABoAHgAeABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoA6wDqAOoAGgAaACgAGgAoABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAB4AGgAaABoAGgAaABoAGgAaABoAGgAaABoATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4AKADsAO0A7QDuAE4ATgAoAO0A7gDsAO0A7gDsAE4AKABOAO0A7wDwAE4A7QDsAE4ATgBOAO0A7ADsAO0AKADtAO0A7ADsACgA7gAoAO4AKAAoACgAKADtAPEA5gDtAOYA5gDsAOwA7AAoACgAKAAoAE4A7ABOAOwA7QDtAOwA7ADsAO4A7ADsAO4A7ADsAO4A7QDuAOwA7ADtAE4ATgBOAE4ATgDtAOwA7ADsAE4ATgBOAE4ATgBOAE4ATgBOAOwA8gAoAO4ATgDtAO0A7QDtAOwA7ADtAO0ATgDqAPIA8gDuAO4A7ADsAO4A7gDsAOwA7gDuAOwA7ADsAOwA7ADsAO4A7gDtAO0A7gDuAO0A7QDuAO4A7ADsAOwATgBOAOwA7ADsAOwATgBOACgATgBOAOwAKABOAE4ATgBOAE4ATgBOAE4A7ADsAE4AKADsAOwA7ADsAOwA7ADuAO4A7gDuAOwA7ADsAOwA7ADsAOwA7ADsAE4ATgBOAE4ATgDsAO0ATgBOAE4ATgBOAE4ATgBOAE4A7ADsAOwA7ADsAE4ATgDsAOwATgBOAE4ATgDsAOwA7ADsAOwA7ADsAOwA7ADsAO4A7gDuAO4A7ADsAOwA7ADsAOwA7gDuAO4A7gBOAE4A7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7AAaABoAGgAaABoAGgAaABoApQCmAKUApgAaABoAGgAaABoAGgAeABoAGgAaABoAGgAaABoA8wDzABoAGgAaABoA7ADsABoAGgAaABoAGgAaABoA9AD1ABoAGgAaABoAGgAaABoAGgAaABoAGgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAE4AGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAUAAaABoAGgAaABoATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAE4ATgBOAE4ATgBOABoAGgAaABoAGgAaABoA8wDzAPMA8wAaABoAGgDzABoAGgDzABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiAPYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2AOcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcA9wD3APcAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABoAGgAaABoAGgAaABoAGgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AGgAaAB4AHgAeAB4AGgAaABoAGgAaABoAGgAaABoAGgAeAB4AGgAeAB4AHgAeAB4AHgAeABoAGgAaABoAGgAaABoAGgAeAB4AGgAaAB4AKAAaABoAGgAaAB4AHgAaABoAHgAoABoAGgAaABoAHgAeAB4AGgAaAB4AGgAaAB4AHgAeAB4AGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAeAB4AHgAeABoAGgAaABoAGgAaABoAGgAaAB4AGgAaABoAGgAaABoAGgAaAE4ATgBOAE4ATgD4APgATgAaABoAGgAaABoAHgAeABoAGgAeABoAGgAaABoAHgAeABoAGgAaABoA8wDzABoAGgAaABoAGgAaAB4AGgAeABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAB4AGgAeABoAGgAaABoAGgDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wAaABoAGgAaABoAGgAaABoAGgAaABoAGgAeAB4AGgAeAB4AHgAaAB4AHgAeAB4AGgAeAB4AGgAoABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAPMAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgDzABoAGgAaABoAGgAaABoAGgAaABoAHgAeABoA8wAaABoAGgAaABoAGgAaABoA8wDzAFAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgDzAPMAHgAaABoAGgAaAPMA8wAeAB4AHgAeAB4AHgAeAB4A8wAeAB4AHgAeAB4A8wAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABoAHgAaABoAGgAaAB4AHgDzAB4AHgAeAB4AHgAeAB4A8wDzAB4A8wAeAB4AHgAeAPMAHgAeAPMAHgAeABoAGgAaABoAGgDzABoAGgAaABoA8wDzABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoA8wAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAHgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoA8wAaAPMAGgAaABoAGgDzAPMA8wAaAPMAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgClAKYApQCmAKUApgClAKYApQCmAKUApgClAKYA9wD3APcA9wD3APcA9wD3APcA9wCbAJsAmwCbAJsAmwCbAJsAmwCbAJsAmwCbAJsAmwCbAJsAmwCbAJsAGgDzAPMA8wAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgDzABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgDzAOwATgBOAOwA7AClAKYATgDsAOwATgDsAOwA7ABOAE4ATgBOAE4A7ADsAOwA7ABOAE4ATgBOAE4A7ADsAOwATgBOAE4A7ADsAOwA7AAJAAoACQAKAAkACgAJAAoApQCmAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgClAKYACQAKAKUApgClAKYApQCmAKUApgClAKYApQCmAKUApgClAKYApQCmAE4ATgDsAOwA7ADsAOwA7ABOAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ABOAE4ATgBOAE4ATgBOAE4A7ABOAE4ATgBOAE4ATgBOAOwA7ADsAOwA7ADsAE4ATgBOAOwATgBOAE4ATgDsAOwA7ADsAOwATgDsAOwATgBOAKUApgClAKYA7ABOAE4ATgBOAOwATgDsAOwA7ABOAE4A7ADsAE4ATgBOAE4ATgBOAE4ATgBOAE4A7ADsAOwA7ADsAOwATgBOAKUApgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgDsAOwA5gDsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAE4A7ADsAOwA7ABOAE4A7ABOAOwATgBOAOwATgDsAOwA7ADsAE4ATgBOAE4ATgDsAOwATgBOAE4ATgBOAE4A7ADsAOwATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4A7ADsAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgDsAOwATgBOAE4ATgDsAOwA7ADsAE4A7ADsAE4ATgDsAOYA3ADcAE4ATgDsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAE4ATgDsAOwA7ADsAOwA7ADsAOwATgDsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAE4ATgBOAE4ATgD5AE4A7ABOAE4ATgDsAOwA7ADsAOwATgBOAE4ATgBOAOwA7ADsAE4ATgBOAE4A7ABOAE4ATgDsAOwA7ADsAOwATgDsAE4ATgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgDzAPMAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgBOAE4ATgAaABoATgBOAE4ATgBOAE4AGgAaABoA8wAaABoAGgAaAPMAHgAeAB4AHgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAAABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAAABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoA+gAaACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvACwALwAsACwALAAvAC8ALAAvACwALwAsAC8ALAAsACwALAAvACwALwAvACwALwAvAC8ALwAvAC8AMwAzACwALAAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvAC8AGgAaABoAGgAaABoALAAvACwALwBRAFEAUQAsAC8AAAAAAAAAAAAAAIoAigCKAIoAmwCKAIoALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAAAALwAAAAAAAAAAAAAALwAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAMwBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAAADAAMAAwADAAMAAwADAAAAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAAADAAMAAwADAAMAAwADAAAAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAAAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQCKAIoAHAAkABwAJACKAIoAigAcACQAigAcACQAigCKAIoAigCKAIoAigCKAIoAVACKAIoAVACKABwAJACKAIoAHAAkAKUApgClAKYApQCmAKUApgCKAIoAigCKAIoANACKAIoAigCKAIoAigCKAIoAigCKAFQAVACKAIoAigCKAFQAigDHAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAGgAaAIoAigCKAKUApgClAKYApQCmAKUApgBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAAAA8wDzAPMA8wD7APMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wD7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsA+wD7APsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAAAAAAAAAAAA/AD9AP0A/QDzAP4ArAD/AAABAQEAAQEBAAEBAQABAQEAAQEB8wDzAAABAQEAAQEBAAEBAQABAQECAQMBBAEEAfMA/wD/AP8A/wD/AP8A/wD/AP8ABQEGAQcBCAEJAQkBAgH+AP4A/gD+AP4A+wDzAAoBCgEKAf4ArAD9APMAGgAAAKwArACsAKwArACsAKwArACsAKwArAALAawACwGsAAsBrAALAawACwGsAAsBrAALAawACwGsAAsBrAALAawACwGsAAsBrACsAAsBrAALAawACwGsAKwArACsAKwArAALAQsBrAALAQsBrAALAQsBrAALAQsBrAALAQsBrACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAALAawArAAAAAAADAEMAQ0BDQH+AA4BDwECAawArACsAKwArACsAKwArACsAKwArAALAawACwGsAAsBrAALAawACwGsAAsBrAALAawACwGsAAsBrAALAawACwGsAAsBrACsAAsBrAALAawACwGsAKwArACsAKwArAALAQsBrAALAQsBrAALAQsBrAALAQsBrAALAQsBrACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAALAawArAALAQsBCwELAf0A/gD+AA4BDwEAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAAAA8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BDwEPAQ8BAAAQARABEQERAREBEQESARIBEgESARIBEgESARIBEgESAawArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArADzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgH7APsAAAARAREBEQERAREBEQERAREBEQERARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARMBEwETARMBEwETARMBEwH7ABQBFAEUARQBFAEUARQBFAEUARQBFAEUARQBFAEUARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIB+wD7APsAEAERAREBEQERAREBEQERAREBEQERARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARQBFAEUARQBFAEUARQBFAEUARQBFAEUARQBFAEUARIBEgESARIBEgESARIBEgESARIBEgESAfsA+wD7APsAEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESAfsA+wD7APsAEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIB+wD7ABIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIB+wCsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAP4ArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAAAAAAAAAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAA1ADUANQA1ADUANQBTAFMAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQCKAIoAigAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJIAkgCSAJIAkgCSAJIAkgCSAJIAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvADAAUQBSAFIAUgCKAFEAUQBRAFEAUQBRAFEAUQBRAFEAigA0ACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8AMwAzAFEAUQAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAK8ArwCvAK8ArwCvAK8ArwCvAK8AUQBRAFMAUwBTAFMAUwBTAAAAAAAAAAAAAAAAAAAAAAA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANAA0ADQANAA0ADQANAA0ADQANgA2ACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAvAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvADMALwAvAC8ALwAvAC8ALwAvACwALwAsAC8ALAAsAC8ALAAvACwALwAsAC8ALAAvADQAFQEVASwALwAsAC8AMAAsAC8ALAAvAC8ALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAsACwALAAsAC8ALAAsACwALAAsAC8ALAAvACwALwAsAC8ALAAvACwALwAsAC8ALAAvACwALAAsACwALwAsAC8AAAAAAAAAAAAAACwALwAAAC8AAAAvACwALwAsAC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAzADMALAAvADAAMwAzAC8AMAAwADAAMAAwADAAMACHADAAMAAwAJAAMAAwADAAMACHADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACNAI0AhwCHAI0AGgAaABoAGgCQAAAAAAAAAJYAlgCWAJYAlgCWAFAAUABVAOUAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACKAIoAigCKAAAAAAAAAAAAAAAAAAAAAACNAI0AMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AkACHAAAAAAAAAAAAAAAAAAAAAABTAFMAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAAAAAAAAAAABRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAwADAAMAAwADAAMABTAFMAUwAwAFMAMAAwAIcAkgCSAJIAkgCSAJIAkgCSAJIAkgAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIcAhwCHAIcAhwBWAFYAVgBTAFMAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCNALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFMArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAAAAAAAAAIcAhwCHAI0AMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJMAjQCNAIcAhwCHAIcAjQCNAIcAhwCNAI0AsABTAFMAUwBTAFMAUwBTAFMAUwBTAFMAUwBTAAAANQCSAJIAkgCSAJIAkgCSAJIAkgCSAAAAAAAAAAAAUwBTADAAMAAwADAAMACHADUAMAAwADAAMAAwADAAMAAwADAAkgCSAJIAkgCSAJIAkgCSAJIAkgAwADAAMAAwADAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAhwCHAIcAhwCHAIcAjQCNAIcAhwCNAI0AhwCHAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwAIcAMAAwADAAMAAwADAAMAAwAIcAjQAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAUwBTAFMAUwAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUAMAAwADAAMAAwADAAUABQAFAAMACNAIcAjQAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAUQAwAFEAUQBWADAAMABRAFEAMAAwADAAMAAwAFEAUQAwAFEAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAANQBTAFMAMAAwADAAMAAwADAAMAAwADAAMAAwAI0AhwCHAI0AjQBTAFMAMAA1ADUAjQCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAAAAAADAAMAAwADAAMAAwAAAAAAAwADAAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAAAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8AFQEzADMAMwAzAC8ALwAvAC8ALwAvAC8ALwAvADMANgA2AAAAAAAAAAAALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACNAI0AhwCNAI0AhwCNAI0AUwCNAJAAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAAAAAAAAAAAAAACwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQsBCwELAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFgEWARYBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBrACsABgBrAAYAawArAAYARgBGAEYARgBGAEYARgBGAEYAawAGAGsABgBrACsABgBGAGsAKwArAAYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBAAAAABgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAIwAjACMAIwAjACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAjACMAIwAjAAAAAAAAAAAAAAAZARoBGQEbARsBGwEbARsBGwEbARsBGwHbABkBGQEZARkBGQEZARkBGQEZARkBGQEZARkBAAAZARkBGQEZARkBAAAZAQAAGQEZAQAAGQEZAQAAGQEZARkBGQEZARkBGQEZARkBGwGDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwAcAccAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAAAAAACDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAB0BGgAaABoARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwAeAR4BHgEeAR4BHgEeAR8BIAEeAQAAAAAAAAAAAAAAAFEAUQBRAFEAUQBRAFEAVgBWAFYAVgBWAFYAVgBRAFEAHgEhASEBIgEiAR8BIAEfASABHwEgAR8BIAEfASABHwEgAR8BIAEfASAB/QD9AB8BIAEeAR4BHgEeASIBIgEiASMBHgEjAQAAHgEjAR4BHgEhASQBJQEkASUBJAElASYBHgEeAScBKAEpASkBKgEAAB4BKwEmAR4BAAAAAAAAAACDAIMAgwB2AIMAAACDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwAAAAAAsQAAACwBLAEtAS4BLQEsASwBLwEwASwBMQEyATMBMgEyATQBNAE0ATQBNAE0ATQBNAE0ATQBMgEsATUBNgE1ASwBLAE3ATcBNwE3ATcBNwE3ATcBNwE3ATcBNwE3ATcBNwE3ATcBNwE3ATcBNwE3ATcBNwE3ATcBLwEsATABOAE5ATgBOgE6AToBOgE6AToBOgE6AToBOgE6AToBOgE6AToBOgE6AToBOgE6AToBOgE6AToBOgE6AS8BNgEwATYBLwEwATsBPAE9ATsBOwE+AT4BPgE+AT4BPgE+AT4BPgE+AT8BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPwE/AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BPgE+AT4BAAAAAAAAPgE+AT4BPgE+AT4BAAAAAD4BPgE+AT4BPgE+AQAAAAA+AT4BPgE+AT4BPgEAAAAAPgE+AT4BAAAAAAAALgEuATYBOAFAAS4BLgEAAEEBQgFCAUIBQgFBAUEBAAAAAAAAAAAAAAAAAAAAAAAAAABDAUMBQwEaAB4AAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAADAAMAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAAAAAAAAAUwCKAFMAAAAAAAAAAACWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgAAAAAAAABQAFAAUABQAFAAUABQAFAAUABEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBmwCbAJsAmwAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAmwCbABoAUABQAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAAAAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVgBFAUUBRQFFAUUBRQFFAUUBRQFFAUUBRQFFAUUBRQFFAUUBRQFFAUUBRQFFAUUBRQFFAUUBRQEAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACWAJYAlgCWAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACvADAAMAAwADAAMAAwADAAMACvAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAUQBRAFEAUQBRAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAFMAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAUwCvAK8ArwCvAK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAAAAAAAAAAAAAAAAACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsAAAAAAAAAAAALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8AAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTACwALAAsACwALAAsACwALAAsACwALAAAACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsAAAALAAsACwALAAsACwALAAAACwALAAAAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAAAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAAAALwAvAC8ALwAvAC8ALwAAAC8ALwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1ADMAMwAzADMAMwAAADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzADMAMwAzAAAAMwAzADMAMwAzADMAMwAzADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawBrAGsAawBrAGsAAAAAAGsAAABrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAAABrAGsAAAAAAAAAawAAAAAAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAAAAaABGAUYBRgFGAUYBRgFGAUYBawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAEcBRwFGAUYBRgFGAUYBRgFGAWsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAAAAAAAAAAAAAAAAAAAAAAEYBRgFGAUYBRgFGAUYBRgFGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAAABrAGsAAAAAAAAAAAAAAEYBRgFGAUYBRgFrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAEYBRgFGAUYBRgFGAQAAAAAAAIoAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAAAAAAAAAAAARgFGAWsAawBGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAQAAAABGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAUYBRgFGAWsAhwCHAIcAAACHAIcAAAAAAAAAAAAAAIcAVgCHAFEAawBrAGsAawAAAGsAawBrAAAAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAAAAAABRALIAVgAAAAAAAAAAAJAARgFGAUYBRgFGAUYBRgFGAUYBAAAAAAAAAAAAAAAAAABoAGgAaABoAGgAaABoAGgAaAAAAAAAAAAAAAAAAAAAAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBGAUYBaABrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsARgFGAUYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGsAawBrAGsAawBrAGsAawBHAWsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAUQBWAAAAAAAAAAAARgFGAUYBRgFGAWgAaABoAGgAaABoAGgAAAAAAAAAAAAAAAAAAAAAAAAAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAAAAAAAAAigCKAIoAigCKAIoAigBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAAAAAABGAUYBRgFGAUYBRgFGAUYBawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawAAAAAAAAAAAAAARgFGAUYBRgFGAUYBRgFGAWsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAAAAAAAAAAAAAAAAAAAAaABoAGgAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAUYBRgFGAUYBRgFGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQEAAAAAAAAAAAAAAAAAAEYBRgFGAUYBRgFGAXYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AFEAUQBRAFEAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAUoBSgFKAUoBSgFKAUoBSgFKAUoBSgFKAUoBSgFKAUoBSgFKAUoBSgFKAUoBSgFKAUoBSgFKAUoBSgFKAQAAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAAABRAFEAZgAAAAAAawBrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBGAUYBRgFGAUYBRgFGAUYBRgFGAWsAAAAAAAAAAAAAAAAAAAAAAHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAdgB2AHYAVgBWAFEAUQBRAFYAUQBWAFYAVgBWAEsBSwFLAUsBcQBxAHEAcQBxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAUQBWAFEAVgBoAGgAaABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBGAUYBRgFGAUYBRgFGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAAAAAAAAAAAAAAAAAAAAAAAAAjQCHAI0AMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCQAFMAUwBTAFMAUwBTAFMAAAAAAAAAAACbAJsAmwCbAJsAmwCbAJsAmwCbAJsAmwCbAJsAmwCbAJsAmwCbAJsAkgCSAJIAkgCSAJIAkgCSAJIAkgCQADAAMACHAIcAMAAAAAAAAAAAAAAAAAAAAAAAAACQAIcAhwCNADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACOADAAjgAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAjgAwADAAMAAwAI0AjQCNAIcAhwCHAIcAjQCNAJAAjwBTAFMAwABTAFMAUwBTAIcAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAAAAAAAAAAABRAFEAUQAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACXAIcAhwCHAIcAjQCHAJgAmACHAIcAhwCQAJAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAFMAUwBTAFMAMACNAI0AMAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJMAUwBTADAAAAAAAAAAAAAAAAAAAAAAAAAAhwCHAI0AMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAjQCNAI0AhwCHAIcAhwCHAIcAhwCHAIcAjQCwADAAMAAwADAAUwBTAFMAUwCHAJMAhwCHAFMAjQCHAJIAkgCSAJIAkgCSAJIAkgCSAJIAMABTADAAUwBTAFMAAACWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACNAI0AjQCHAIcAhwCNAI0AhwCwAJMAhwBTAFMAUwBTAFMAUwCHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwAAAAMAAAADAAMAAwADAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAADAAMAAwADAAMAAwADAAMAAwADAAUwAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAhwCNAI0AjQCHAIcAhwCHAIcAhwCTAJAAAAAAAAAAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAAAAAAAAAAAAAAhwCHAI0AjQAAADAAMAAwADAAMAAwADAAMAAAAAAAMAAwAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAAADAAMAAAADAAMAAwADAAMAAAAJMAkwAwAJQAjQCHAI0AjQCNAI0AAAAAAI0AjQAAAAAAlQCVALAAAAAAADAAAAAAAAAAAAAAAAAAlAAAAAAAAAAAAAAAMAAwADAAMAAwAI0AjQAAAAAAUQBRAFEAUQBRAFEAUQAAAAAAAABRAFEAUQBRAFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACNAI0AjQCHAIcAhwCHAIcAhwCHAIcAjQCNAJAAhwCHAI0AkwAwADAAMAAwAFMAUwBTAFMAUwCSAJIAkgCSAJIAkgCSAJIAkgCSAFMAUwAAAFMAUQAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACUAI0AjQCHAIcAhwCHAIcAhwCNAJcAlQCVAJQAlQCHAIcAjQCQAJMAMAAwAFMAMAAAAAAAAAAAAAAAAAAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJQAjQCNAIcAhwCHAIcAAAAAAI0AjQCVAJUAhwCHAI0AkACTAFMAUwBTAFMAUwBTAFMAUwBTAFMAUwBTAFMAUwBTAFMAUwBTAFMAUwBTAFMAUwAwADAAMAAwAIcAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAI0AjQCNAIcAhwCHAIcAhwCHAIcAhwCNAI0AhwCNAJAAhwBTAFMAUwAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAAAAAAAAAAAAAAAAAIoAigCKAIoAigCKAIoAigCKAIoAigCKAIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIcAjQCHAI0AjQCHAIcAhwCHAIcAhwCwAJMAMABTAAAAAAAAAAAAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAIcAhwCHAI0AjQCHAIcAhwCHAI0AhwCHAIcAhwCQAAAAAAAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgCWAJYAUwBTAFMAUAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACNAI0AjQCHAIcAhwCHAIcAhwCHAIcAhwCNAJAAkwBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwCSAJIAkgCSAJIAkgCSAJIAkgCSAJYAlgCWAJYAlgCWAJYAlgCWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAAAAAAMAAAAAAAMAAwADAAMAAwADAAMAAwAAAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAlACNAI0AjQCNAI0AAACNAJUAAAAAAIcAhwCwAJAAMACNADAAjQCTAFMAUwBTAAAAAAAAAAAAAAAAAAAAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAI0AjQCNAIcAhwCHAIcAAAAAAIcAhwCNAI0AjQCNAJAAMABTADAAjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAIcAhwCHAIcAhwCHAJwAnACHAIcAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACHAJAAhwCHAIcAhwCNADAAhwCHAIcAhwBTAFMAUwBTAFMAUwBTAFMAkAAAAAAAAAAAAAAAAAAAAAAAMACHAIcAhwCHAIcAhwCNAI0AhwCHAIcAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAI0AhwCQAFMAUwBTADAAUwBTAFMAUwBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACNAIcAhwCHAIcAhwCHAIcAAACHAIcAhwCHAIcAhwCNAEwBMABTAFMAUwBTAFMAAAAAAAAAAAAAAAAAAAAAAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAAAAAAAAAUwBTADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAACHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAAAAjQCHAIcAhwCHAIcAhwCHAI0AhwCHAI0AhwCHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAAADAAMAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACHAIcAhwCHAIcAhwAAAAAAAACHAAAAhwCHAAAAhwCHAIcAkwCHAJAAkAAwAIcAAAAAAAAAAAAAAAAAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAAAAwADAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAjQCNAI0AjQCNAAAAhwCHAAAAjQCNAIcAjQCQADAAAAAAAAAAAAAAAAAAAACSAJIAkgCSAJIAkgCSAJIAkgCSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIcAhwCNAI0AUwBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgAaABoAGgAaABoAGgAaABoAVQBVAFUAVQAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwAAAFMAUwBTAFMAUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABTAFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAAAAAAAABTAFMAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAALIAsgCyALIAsgBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAUQBRAFEAUQBRAFEAUQBTAFMAUwBTAFMAUABQAFAAUAA1ADUANQA1AFMAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAJIAkgCSAJIAkgCSAJIAkgCSAJIAAACWAJYAlgCWAJYAlgCWAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAsACwALAAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8AlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAFMAUwBTAFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAhwAwAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AjQCNAI0AAAAAAAAAAAAAAAAAAACHAIcAhwCHADUANQA1ADUANQA1ADUANQA1ADUANQA1ADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+AP4A/QD+AE0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4BTgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAAAAAAAAAAAAAAAAAAAAAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+AP4A/gD+AAAA/gD+AP4A/gD+AP4A/gAAAP4A/gAAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAwADAAMAAAAAAAUACHALIAUwCxALEAsQCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAAAAAACHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAE8BTwFPAU8BTwFPAU8BUAFQAbIAsgCyAFAAUABQAFEBUAFQAVABUAFQAbEAsQCxALEAsQCxALEAsQBWAFYAVgBWAFYAVgBWAFYAUABQAFEAUQBRAFEAUQBWAFYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUQBRAFEAUQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAE8BTwFPAU8BTwFPAVAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAFEAUQBRABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAAAAAAAAAAAAAAAAAAAAAAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgCWAJYAlgAAAAAAAAAAAAAAAAAAADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxACMAIwAjACMAIwAjACMAAAAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjADEAAAAxADEAAAAAADEAAAAAADEAMQAAAAAAMQAxADEAMQAAADEAMQAxADEAMQAxADEAMQAjACMAIwAjAAAAIwAAACMAIwAjACMAIwAjACMAAAAjACMAIwAjACMAIwAjACMAIwAjACMAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAxADEAAAAxADEAMQAxAAAAAAAxADEAMQAxADEAMQAxADEAAAAxADEAMQAxADEAMQAxAAAAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjADEAMQAAADEAMQAxADEAAAAxADEAMQAxADEAAAAxAAAAAAAAADEAMQAxADEAMQAxADEAAAAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjAAAAAAAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxAFIBIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwDmACMAIwAjACMAIwAjADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAUgEjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjAOYAIwAjACMAIwAjACMAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQBSASMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMA5gAjACMAIwAjACMAIwAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxAFIBIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwDmACMAIwAjACMAIwAjADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAMQAxADEAUgEjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjAOYAIwAjACMAIwAjACMAMQAjAAAAAABTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBUwFTAVMBhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwBQAFAAUABQAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwBQAFAAUABQAFAAUABQAFAAhwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAhwBQAFAAUwBTAFMAUwBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcAhwCHAIcAhwAAAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAIcAhwCHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAC8ALwAvAC8ALwAvAC8ALwAvADAALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAC8ALwAvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQBRAFEAUQBRAFEAUQAAAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAAAAAAUQBRAFEAUQBRAFEAUQAAAFEAUQAAAFEAUQBRAFEAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAAAAAAAAAFEAUQBRAFEAUQBRAFEANQA1ADUANQA1ADUANQAAAAAAkgCSAJIAkgCSAJIAkgCSAJIAkgAAAAAAAAAAADAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABRAFEAUQBRAJIAkgCSAJIAkgCSAJIAkgCSAJIAAAAAAAAAAAAAAFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwADAAMAAwADAAMAAAADAAMAAwADAAAAAwADAAAAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAAAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawBrAGsAawAAAAAARgFGAUYBRgFGAUYBRgFGAUYBVgBWAFYAVgBWAFYAVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFIAUgBSAFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAUkBSQFJAVEAUQBRAFEAUQBRAJMAiQAAAAAAAAAAAIgAiACIAIgAiACIAIgAiACIAIgAAAAAAAAAAABoAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBhQBLAUsBSwFvAEsBSwFLAUsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwGFAEsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAUsBSwFLAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAgwCDAIMAAACDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwAAAIMAgwAAAIMAAAAAAIMAAACDAIMAgwCDAIMAgwCDAIMAgwCDAAAAgwCDAIMAgwAAAIMAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAACDAAAAgwAAAIMAAACDAIMAgwAAAIMAgwAAAIMAAAAAAIMAAACDAAAAgwAAAIMAAACDAAAAgwCDAAAAgwAAAAAAgwCDAIMAgwAAAIMAgwCDAIMAgwCDAIMAAACDAIMAgwCDAAAAgwCDAIMAgwAAAIMAAACDAIMAgwCDAIMAgwCDAIMAgwCDAAAAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAAAAAAAAAAAAAACDAIMAgwAAAIMAgwCDAIMAgwAAAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwCDAIMAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4ATgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAaABoAGgDzABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAAAAAAAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoA8wAAABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAiACIAIgAiACIAIgAiACIAIgAiACIAmwCbABoAGgAaAPYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2AFQBGgD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYA9gD2APYAVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAeIA4gDiABoAGgAaAFUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVARABVQH2ABABEAEQARABEAEQARABEAEQARABVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBVQFVAVUBGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABIBEgESAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESAQAAAAAAAAAAEgESARIBEgESARIBEgESARIBAAAAAAAAAAAAAAAAAAASARIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPMA8wDzAPMA8wDzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wAaABoAGgAaABoAGgAaABoAGgAaABoAGgDzAPMA8wDzAPMA8wDzAPMA8wAaAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMAGgDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzABoAGgAaABoAGgAaABoAGgAaABoAGgAaAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMAGgAaABoAGgDzAPMA8wDzAPMAGgAaABoAGgAaABoAGgAaABoAGgAaABoA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzABoAGgAaAPMAGgAaABoA8wDzAPMAVgFWAVYBVgFWAfMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzABoA8wAaAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMAGgAaAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoA8wDzAPMA8wAaAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAPMAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAPMA8wAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAPMAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wAaABoAGgAaABoAGgDzABoAGgAaAPMA8wDzABoAGgDzAPMA8wAAAAAAAAAAAAAA8wDzAPMAGgAaABoAGgAaABoAGgAaABoAGgAaAPMA8wAAAAAAAAAaABoAGgAaAPMA8wDzAPMA8wDzAPMA8wDzAAAAAAAAABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAAAAAAAAAAAAAAAADzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wAAAAAAAAAAAPMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAAAAAAAAAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAAAAAAAAAAAAAAAAAAABoAGgAaABoAGgAaABoAGgAaABoAAAAAAAAAAAAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAAAAAAAAAAAAAAAAAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAAABoAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaABoAGgAaABoAGgAaABoAGgAaABoAGgDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMAGgDzAPMA8wDzAPMA8wDzAPMA8wDzABoA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAAAAAA8wDzAPMA8wDzAAAAAAAAAPMA8wDzAPMA8wAAAAAAAADzAPMA8wDzAPMA8wDzAAAAAAAAAAAAAAAAAAAAAAAAAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wDzAPMA8wAAAAAAAADzAPMA8wDzAPMA8wDzAPMA8wDzAPMAAAAAAAAAAAAAAPMA8wDzAPMA8wDzAAAAAAAAAAAAAAAAAAAAAAAAAAAA8wDzAPMA8wDzAPMA8wDzAPMA8wAAAAAAAAAAAAAAAADzAPMA8wDzAPMA8wDzAPMAAAAAAAAAAAAAAAAAAAAAAPMA8wDzAPMA8wDzAPMAAAAAAAAAAAAAAAAAAAAAAAAAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAAAAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUwFTAVMBUwFTAVMBUwFTAVMBUwEAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYARgBGAEYAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxALEAsQCxAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAEcARwBHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBFwEXARcBAAAAAAAAAAABAQAAIAAAAAICAAAgAAAACAMAAAMBAABhAAAAAgIAACAAAAAEAwAAAwEAADIAAAADAQAAMwAAAAICAAAgAAAAAQMAAAIBAAC8AwAAAgIAACAAAAAnAwAAAwEAADEAAAADAQAAbwAAAAQDAAAxAAAARCAAADQAAAAEAwAAMQAAAEQgAAAyAAAABAMAADMAAABEIAAANAAAAAACAABBAAAAAAMAAAACAABBAAAAAQMAAAACAABBAAAAAgMAAAACAABBAAAAAwMAAAACAABBAAAACAMAAAACAABBAAAACgMAAAACAABDAAAAJwMAAAACAABFAAAAAAMAAAACAABFAAAAAQMAAAACAABFAAAAAgMAAAACAABFAAAACAMAAAACAABJAAAAAAMAAAACAABJAAAAAQMAAAACAABJAAAAAgMAAAACAABJAAAACAMAAAACAABOAAAAAwMAAAACAABPAAAAAAMAAAACAABPAAAAAQMAAAACAABPAAAAAgMAAAACAABPAAAAAwMAAAACAABPAAAACAMAAAACAABVAAAAAAMAAAACAABVAAAAAQMAAAACAABVAAAAAgMAAAACAABVAAAACAMAAAACAABZAAAAAQMAAAACAABhAAAAAAMAAAACAABhAAAAAQMAAAACAABhAAAAAgMAAAACAABhAAAAAwMAAAACAABhAAAACAMAAAACAABhAAAACgMAAAACAABjAAAAJwMAAAACAABlAAAAAAMAAAACAABlAAAAAQMAAAACAABlAAAAAgMAAAACAABlAAAACAMAAAACAABpAAAAAAMAAAACAABpAAAAAQMAAAACAABpAAAAAgMAAAACAABpAAAACAMAAAACAABuAAAAAwMAAAACAABvAAAAAAMAAAACAABvAAAAAQMAAAACAABvAAAAAgMAAAACAABvAAAAAwMAAAACAABvAAAACAMAAAACAAB1AAAAAAMAAAACAAB1AAAAAQMAAAACAAB1AAAAAgMAAAACAAB1AAAACAMAAAACAAB5AAAAAQMAAAACAAB5AAAACAMAAAACAABBAAAABAMAAAACAABhAAAABAMAAAACAABBAAAABgMAAAACAABhAAAABgMAAAACAABBAAAAKAMAAAACAABhAAAAKAMAAAACAABDAAAAAQMAAAACAABjAAAAAQMAAAACAABDAAAAAgMAAAACAABjAAAAAgMAAAACAABDAAAABwMAAAACAABjAAAABwMAAAACAABDAAAADAMAAAACAABjAAAADAMAAAACAABEAAAADAMAAAACAABkAAAADAMAAAACAABFAAAABAMAAAACAABlAAAABAMAAAACAABFAAAABgMAAAACAABlAAAABgMAAAACAABFAAAABwMAAAACAABlAAAABwMAAAACAABFAAAAKAMAAAACAABlAAAAKAMAAAACAABFAAAADAMAAAACAABlAAAADAMAAAACAABHAAAAAgMAAAACAABnAAAAAgMAAAACAABHAAAABgMAAAACAABnAAAABgMAAAACAABHAAAABwMAAAACAABnAAAABwMAAAACAABHAAAAJwMAAAACAABnAAAAJwMAAAACAABIAAAAAgMAAAACAABoAAAAAgMAAAACAABJAAAAAwMAAAACAABpAAAAAwMAAAACAABJAAAABAMAAAACAABpAAAABAMAAAACAABJAAAABgMAAAACAABpAAAABgMAAAACAABJAAAAKAMAAAACAABpAAAAKAMAAAACAABJAAAABwMAAAICAABJAAAASgAAAAICAABpAAAAagAAAAACAABKAAAAAgMAAAACAABqAAAAAgMAAAACAABLAAAAJwMAAAACAABrAAAAJwMAAAACAABMAAAAAQMAAAACAABsAAAAAQMAAAACAABMAAAAJwMAAAACAABsAAAAJwMAAAACAABMAAAADAMAAAACAABsAAAADAMAAAICAABMAAAAtwAAAAICAABsAAAAtwAAAAACAABOAAAAAQMAAAACAABuAAAAAQMAAAACAABOAAAAJwMAAAACAABuAAAAJwMAAAACAABOAAAADAMAAAACAABuAAAADAMAAAICAAC8AgAAbgAAAAACAABPAAAABAMAAAACAABvAAAABAMAAAACAABPAAAABgMAAAACAABvAAAABgMAAAACAABPAAAACwMAAAACAABvAAAACwMAAAACAABSAAAAAQMAAAACAAByAAAAAQMAAAACAABSAAAAJwMAAAACAAByAAAAJwMAAAACAABSAAAADAMAAAACAAByAAAADAMAAAACAABTAAAAAQMAAAACAABzAAAAAQMAAAACAABTAAAAAgMAAAACAABzAAAAAgMAAAACAABTAAAAJwMAAAACAABzAAAAJwMAAAACAABTAAAADAMAAAACAABzAAAADAMAAAACAABUAAAAJwMAAAACAAB0AAAAJwMAAAACAABUAAAADAMAAAACAAB0AAAADAMAAAACAABVAAAAAwMAAAACAAB1AAAAAwMAAAACAABVAAAABAMAAAACAAB1AAAABAMAAAACAABVAAAABgMAAAACAAB1AAAABgMAAAACAABVAAAACgMAAAACAAB1AAAACgMAAAACAABVAAAACwMAAAACAAB1AAAACwMAAAACAABVAAAAKAMAAAACAAB1AAAAKAMAAAACAABXAAAAAgMAAAACAAB3AAAAAgMAAAACAABZAAAAAgMAAAACAAB5AAAAAgMAAAACAABZAAAACAMAAAACAABaAAAAAQMAAAACAAB6AAAAAQMAAAACAABaAAAABwMAAAACAAB6AAAABwMAAAACAABaAAAADAMAAAACAAB6AAAADAMAAAIBAABzAAAAAAIAAE8AAAAbAwAAAAIAAG8AAAAbAwAAAAIAAFUAAAAbAwAAAAIAAHUAAAAbAwAAAgIAAEQAAAB9AQAAAgIAAEQAAAB+AQAAAgIAAGQAAAB+AQAAAgIAAEwAAABKAAAAAgIAAEwAAABqAAAAAgIAAGwAAABqAAAAAgIAAE4AAABKAAAAAgIAAE4AAABqAAAAAgIAAG4AAABqAAAAAAIAAEEAAAAMAwAAAAIAAGEAAAAMAwAAAAIAAEkAAAAMAwAAAAIAAGkAAAAMAwAAAAIAAE8AAAAMAwAAAAIAAG8AAAAMAwAAAAIAAFUAAAAMAwAAAAIAAHUAAAAMAwAAAAIAANwAAAAEAwAAAAIAAPwAAAAEAwAAAAIAANwAAAABAwAAAAIAAPwAAAABAwAAAAIAANwAAAAMAwAAAAIAAPwAAAAMAwAAAAIAANwAAAAAAwAAAAIAAPwAAAAAAwAAAAIAAMQAAAAEAwAAAAIAAOQAAAAEAwAAAAIAACYCAAAEAwAAAAIAACcCAAAEAwAAAAIAAMYAAAAEAwAAAAIAAOYAAAAEAwAAAAIAAEcAAAAMAwAAAAIAAGcAAAAMAwAAAAIAAEsAAAAMAwAAAAIAAGsAAAAMAwAAAAIAAE8AAAAoAwAAAAIAAG8AAAAoAwAAAAIAAOoBAAAEAwAAAAIAAOsBAAAEAwAAAAIAALcBAAAMAwAAAAIAAJICAAAMAwAAAAIAAGoAAAAMAwAAAgIAAEQAAABaAAAAAgIAAEQAAAB6AAAAAgIAAGQAAAB6AAAAAAIAAEcAAAABAwAAAAIAAGcAAAABAwAAAAIAAE4AAAAAAwAAAAIAAG4AAAAAAwAAAAIAAMUAAAABAwAAAAIAAOUAAAABAwAAAAIAAMYAAAABAwAAAAIAAOYAAAABAwAAAAIAANgAAAABAwAAAAIAAPgAAAABAwAAAAIAAEEAAAAPAwAAAAIAAGEAAAAPAwAAAAIAAEEAAAARAwAAAAIAAGEAAAARAwAAAAIAAEUAAAAPAwAAAAIAAGUAAAAPAwAAAAIAAEUAAAARAwAAAAIAAGUAAAARAwAAAAIAAEkAAAAPAwAAAAIAAGkAAAAPAwAAAAIAAEkAAAARAwAAAAIAAGkAAAARAwAAAAIAAE8AAAAPAwAAAAIAAG8AAAAPAwAAAAIAAE8AAAARAwAAAAIAAG8AAAARAwAAAAIAAFIAAAAPAwAAAAIAAHIAAAAPAwAAAAIAAFIAAAARAwAAAAIAAHIAAAARAwAAAAIAAFUAAAAPAwAAAAIAAHUAAAAPAwAAAAIAAFUAAAARAwAAAAIAAHUAAAARAwAAAAIAAFMAAAAmAwAAAAIAAHMAAAAmAwAAAAIAAFQAAAAmAwAAAAIAAHQAAAAmAwAAAAIAAEgAAAAMAwAAAAIAAGgAAAAMAwAAAAIAAEEAAAAHAwAAAAIAAGEAAAAHAwAAAAIAAEUAAAAnAwAAAAIAAGUAAAAnAwAAAAIAANYAAAAEAwAAAAIAAPYAAAAEAwAAAAIAANUAAAAEAwAAAAIAAPUAAAAEAwAAAAIAAE8AAAAHAwAAAAIAAG8AAAAHAwAAAAIAAC4CAAAEAwAAAAIAAC8CAAAEAwAAAAIAAFkAAAAEAwAAAAIAAHkAAAAEAwAAAwEAAGgAAAADAQAAZgIAAAMBAABqAAAAAwEAAHIAAAADAQAAeQIAAAMBAAB7AgAAAwEAAIECAAADAQAAdwAAAAMBAAB5AAAAAgIAACAAAAAGAwAAAgIAACAAAAAHAwAAAgIAACAAAAAKAwAAAgIAACAAAAAoAwAAAgIAACAAAAADAwAAAgIAACAAAAALAwAAAwEAAGMCAAADAQAAbAAAAAMBAABzAAAAAwEAAHgAAAADAQAAlQIAAAABAAAAAwAAAAEAAAEDAAAAAQAAEwMAAAACAAAIAwAAAQMAAAABAAC5AgAAAgIAACAAAABFAwAAAAEAADsAAAACAgAAIAAAAAEDAAAAAgAAqAAAAAEDAAAAAgAAkQMAAAEDAAAAAQAAtwAAAAACAACVAwAAAQMAAAACAACXAwAAAQMAAAACAACZAwAAAQMAAAACAACfAwAAAQMAAAACAAClAwAAAQMAAAACAACpAwAAAQMAAAACAADKAwAAAQMAAAACAACZAwAACAMAAAACAAClAwAACAMAAAACAACxAwAAAQMAAAACAAC1AwAAAQMAAAACAAC3AwAAAQMAAAACAAC5AwAAAQMAAAACAADLAwAAAQMAAAACAAC5AwAACAMAAAACAADFAwAACAMAAAACAAC/AwAAAQMAAAACAADFAwAAAQMAAAACAADJAwAAAQMAAAIBAACyAwAAAgEAALgDAAACAQAApQMAAAACAADSAwAAAQMAAAACAADSAwAACAMAAAIBAADGAwAAAgEAAMADAAACAQAAugMAAAIBAADBAwAAAgEAAMIDAAACAQAAmAMAAAIBAAC1AwAAAgEAAKMDAAAAAgAAFQQAAAADAAAAAgAAFQQAAAgDAAAAAgAAEwQAAAEDAAAAAgAABgQAAAgDAAAAAgAAGgQAAAEDAAAAAgAAGAQAAAADAAAAAgAAIwQAAAYDAAAAAgAAGAQAAAYDAAAAAgAAOAQAAAYDAAAAAgAANQQAAAADAAAAAgAANQQAAAgDAAAAAgAAMwQAAAEDAAAAAgAAVgQAAAgDAAAAAgAAOgQAAAEDAAAAAgAAOAQAAAADAAAAAgAAQwQAAAYDAAAAAgAAdAQAAA8DAAAAAgAAdQQAAA8DAAAAAgAAFgQAAAYDAAAAAgAANgQAAAYDAAAAAgAAEAQAAAYDAAAAAgAAMAQAAAYDAAAAAgAAEAQAAAgDAAAAAgAAMAQAAAgDAAAAAgAAFQQAAAYDAAAAAgAANQQAAAYDAAAAAgAA2AQAAAgDAAAAAgAA2QQAAAgDAAAAAgAAFgQAAAgDAAAAAgAANgQAAAgDAAAAAgAAFwQAAAgDAAAAAgAANwQAAAgDAAAAAgAAGAQAAAQDAAAAAgAAOAQAAAQDAAAAAgAAGAQAAAgDAAAAAgAAOAQAAAgDAAAAAgAAHgQAAAgDAAAAAgAAPgQAAAgDAAAAAgAA6AQAAAgDAAAAAgAA6QQAAAgDAAAAAgAALQQAAAgDAAAAAgAATQQAAAgDAAAAAgAAIwQAAAQDAAAAAgAAQwQAAAQDAAAAAgAAIwQAAAgDAAAAAgAAQwQAAAgDAAAAAgAAIwQAAAsDAAAAAgAAQwQAAAsDAAAAAgAAJwQAAAgDAAAAAgAARwQAAAgDAAAAAgAAKwQAAAgDAAAAAgAASwQAAAgDAAACAgAAZQUAAIIFAAAAAgAAJwYAAFMGAAAAAgAAJwYAAFQGAAAAAgAASAYAAFQGAAAAAgAAJwYAAFUGAAAAAgAASgYAAFQGAAACAgAAJwYAAHQGAAACAgAASAYAAHQGAAACAgAAxwYAAHQGAAACAgAASgYAAHQGAAAAAgAA1QYAAFQGAAAAAgAAwQYAAFQGAAAAAgAA0gYAAFQGAAAAAgAAKAkAADwJAAAAAgAAMAkA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AAACAABCAAAAMQMAAAACAABiAAAAMQMAAAACAADHAAAAAQMAAAACAADnAAAAAQMAAAACAABEAAAABwMAAAACAABkAAAABwMAAAACAABEAAAAIwMAAAACAABkAAAAIwMAAAACAABEAAAAMQMAAAACAABkAAAAMQMAAAACAABEAAAAJwMAAAACAABkAAAAJwMAAAACAABEAAAALQMAAAACAABkAAAALQMAAAACAAASAQAAAAMAAAACAAATAQAAAAMAAAACAAASAQAAAQMAAAACAAATAQAAAQMAAAACAABFAAAALQMAAAACAABlAAAALQMAAAACAABFAAAAMAMAAAACAABlAAAAMAMAAAACAAAoAgAABgMAAAACAAApAgAABgMAAAACAABGAAAABwMAAAACAABmAAAABwMAAAACAABHAAAABAMAAAACAABnAAAABAMAAAACAABIAAAABwMAAAACAABoAAAABwMAAAACAABIAAAAIwMAAAACAABoAAAAIwMAAAACAABIAAAACAMAAAACAABoAAAACAMAAAACAABIAAAAJwMAAAACAABoAAAAJwMAAAACAABIAAAALgMAAAACAABoAAAALgMAAAACAABJAAAAMAMAAAACAABpAAAAMAMAAAACAADPAAAAAQMAAAACAADvAAAAAQMAAAACAABLAAAAAQMAAAACAABrAAAAAQMAAAACAABLAAAAIwMAAAACAABrAAAAIwMAAAACAABLAAAAMQMAAAACAABrAAAAMQMAAAACAABMAAAAIwMAAAACAABsAAAAIwMAAAACAAA2HgAABAMAAAACAAA3HgAABAMAAAACAABMAAAAMQMAAAACAABsAAAAMQMAAAACAABMAAAALQMAAAACAABsAAAALQMAAAACAABNAAAAAQMAAAACAABtAAAAAQMAAAACAABNAAAABwMAAAACAABtAAAABwMAAAACAABNAAAAIwMAAAACAABtAAAAIwMAAAACAABOAAAABwMAAAACAABuAAAABwMAAAACAABOAAAAIwMAAAACAABuAAAAIwMAAAACAABOAAAAMQMAAAACAABuAAAAMQMAAAACAABOAAAALQMAAAACAABuAAAALQMAAAACAADVAAAAAQMAAAACAAD1AAAAAQMAAAACAADVAAAACAMAAAACAAD1AAAACAMAAAACAABMAQAAAAMAAAACAABNAQAAAAMAAAACAABMAQAAAQMAAAACAABNAQAAAQMAAAACAABQAAAAAQMAAAACAABwAAAAAQMAAAACAABQAAAABwMAAAACAABwAAAABwMAAAACAABSAAAABwMAAAACAAByAAAABwMAAAACAABSAAAAIwMAAAACAAByAAAAIwMAAAACAABaHgAABAMAAAACAABbHgAABAMAAAACAABSAAAAMQMAAAACAAByAAAAMQMAAAACAABTAAAABwMAAAACAABzAAAABwMAAAACAABTAAAAIwMAAAACAABzAAAAIwMAAAACAABaAQAABwMAAAACAABbAQAABwMAAAACAABgAQAABwMAAAACAABhAQAABwMAAAACAABiHgAABwMAAAACAABjHgAABwMAAAACAABUAAAABwMAAAACAAB0AAAABwMAAAACAABUAAAAIwMAAAACAAB0AAAAIwMAAAACAABUAAAAMQMAAAACAAB0AAAAMQMAAAACAABUAAAALQMAAAACAAB0AAAALQMAAAACAABVAAAAJAMAAAACAAB1AAAAJAMAAAACAABVAAAAMAMAAAACAAB1AAAAMAMAAAACAABVAAAALQMAAAACAAB1AAAALQMAAAACAABoAQAAAQMAAAACAABpAQAAAQMAAAACAABqAQAACAMAAAACAABrAQAACAMAAAACAABWAAAAAwMAAAACAAB2AAAAAwMAAAACAABWAAAAIwMAAAACAAB2AAAAIwMAAAACAABXAAAAAAMAAAACAAB3AAAAAAMAAAACAABXAAAAAQMAAAACAAB3AAAAAQMAAAACAABXAAAACAMAAAACAAB3AAAACAMAAAACAABXAAAABwMAAAACAAB3AAAABwMAAAACAABXAAAAIwMAAAACAAB3AAAAIwMAAAACAABYAAAABwMAAAACAAB4AAAABwMAAAACAABYAAAACAMAAAACAAB4AAAACAMAAAACAABZAAAABwMAAAACAAB5AAAABwMAAAACAABaAAAAAgMAAAACAAB6AAAAAgMAAAACAABaAAAAIwMAAAACAAB6AAAAIwMAAAACAABaAAAAMQMAAAACAAB6AAAAMQMAAAACAABoAAAAMQMAAAACAAB0AAAACAMAAAACAAB3AAAACgMAAAACAAB5AAAACgMAAAICAABhAAAAvgIAAAACAAB/AQAABwMAAAACAABBAAAAIwMAAAACAABhAAAAIwMAAAACAABBAAAACQMAAAACAABhAAAACQMAAAACAADCAAAAAQMAAAACAADiAAAAAQMAAAACAADCAAAAAAMAAAACAADiAAAAAAMAAAACAADCAAAACQMAAAACAADiAAAACQMAAAACAADCAAAAAwMAAAACAADiAAAAAwMAAAACAACgHgAAAgMAAAACAAChHgAAAgMAAAACAAACAQAAAQMAAAACAAADAQAAAQMAAAACAAACAQAAAAMAAAACAAADAQAAAAMAAAACAAACAQAACQMAAAACAAADAQAACQMAAAACAAACAQAAAwMAAAACAAADAQAAAwMAAAACAACgHgAABgMAAAACAAChHgAABgMAAAACAABFAAAAIwMAAAACAABlAAAAIwMAAAACAABFAAAACQMAAAACAABlAAAACQMAAAACAABFAAAAAwMAAAACAABlAAAAAwMAAAACAADKAAAAAQMAAAACAADqAAAAAQMAAAACAADKAAAAAAMAAAACAADqAAAAAAMAAAACAADKAAAACQMAAAACAADqAAAACQMAAAACAADKAAAAAwMAAAACAADqAAAAAwMAAAACAAC4HgAAAgMAAAACAAC5HgAAAgMAAAACAABJAAAACQMAAAACAABpAAAACQMAAAACAABJAAAAIwMAAAACAABpAAAAIwMAAAACAABPAAAAIwMAAAACAABvAAAAIwMAAAACAABPAAAACQMAAAACAABvAAAACQMAAAACAADUAAAAAQMAAAACAAD0AAAAAQMAAAACAADUAAAAAAMAAAACAAD0AAAAAAMAAAACAADUAAAACQMAAAACAAD0AAAACQMAAAACAADUAAAAAwMAAAACAAD0AAAAAwMAAAACAADMHgAAAgMAAAACAADNHgAAAgMAAAACAACgAQAAAQMAAAACAAChAQAAAQMAAAACAACgAQAAAAMAAAACAAChAQAAAAMAAAACAACgAQAACQMAAAACAAChAQAACQMAAAACAACgAQAAAwMAAAACAAChAQAAAwMAAAACAACgAQAAIwMAAAACAAChAQAAIwMAAAACAABVAAAAIwMAAAACAAB1AAAAIwMAAAACAABVAAAACQMAAAACAAB1AAAACQMAAAACAACvAQAAAQMAAAACAACwAQAAAQMAAAACAACvAQAAAAMAAAACAACwAQAAAAMAAAACAACvAQAACQMAAAACAACwAQAACQMAAAACAACvAQAAAwMAAAACAACwAQAAAwMAAAACAACvAQAAIwMAAAACAACwAQAAIwMAAAACAABZAAAAAAMAAAACAAB5AAAAAAMAAAACAABZAAAAIwMAAAACAAB5AAAAIwMAAAACAABZAAAACQMAAAACAAB5AAAACQMAAAACAABZAAAAAwMAAAACAAB5AAAAAwMAAAACAACxAwAAEwMAAAACAACxAwAAFAMAAAACAAAAHwAAAAMAAAACAAABHwAAAAMAAAACAAAAHwAAAQMAAAACAAABHwAAAQMAAAACAAAAHwAAQgMAAAACAAABHwAAQgMAAAACAACRAwAAEwMAAAACAACRAwAAFAMAAAACAAAIHwAAAAMAAAACAAAJHwAAAAMAAAACAAAIHwAAAQMAAAACAAAJHwAAAQMAAAACAAAIHwAAQgMAAAACAAAJHwAAQgMAAAACAAC1AwAAEwMAAAACAAC1AwAAFAMAAAACAAAQHwAAAAMAAAACAAARHwAAAAMAAAACAAAQHwAAAQMAAAACAAARHwAAAQMAAAACAACVAwAAEwMAAAACAACVAwAAFAMAAAACAAAYHwAAAAMAAAACAAAZHwAAAAMAAAACAAAYHwAAAQMAAAACAAAZHwAAAQMAAAACAAC3AwAAEwMAAAACAAC3AwAAFAMAAAACAAAgHwAAAAMAAAACAAAhHwAAAAMAAAACAAAgHwAAAQMAAAACAAAhHwAAAQMAAAACAAAgHwAAQgMAAAACAAAhHwAAQgMAAAACAACXAwAAEwMAAAACAACXAwAAFAMAAAACAAAoHwAAAAMAAAACAAApHwAAAAMAAAACAAAoHwAAAQMAAAACAAApHwAAAQMAAAACAAAoHwAAQgMAAAACAAApHwAAQgMAAAACAAC5AwAAEwMAAAACAAC5AwAAFAMAAAACAAAwHwAAAAMAAAACAAAxHwAAAAMAAAACAAAwHwAAAQMAAAACAAAxHwAAAQMAAAACAAAwHwAAQgMAAAACAAAxHwAAQgMAAAACAACZAwAAEwMAAAACAACZAwAAFAMAAAACAAA4HwAAAAMAAAACAAA5HwAAAAMAAAACAAA4HwAAAQMAAAACAAA5HwAAAQMAAAACAAA4HwAAQgMAAAACAAA5HwAAQgMAAAACAAC/AwAAEwMAAAACAAC/AwAAFAMAAAACAABAHwAAAAMAAAACAABBHwAAAAMAAAACAABAHwAAAQMAAAACAABBHwAAAQMAAAACAACfAwAAEwMAAAACAACfAwAAFAMAAAACAABIHwAAAAMAAAACAABJHwAAAAMAAAACAABIHwAAAQMAAAACAABJHwAAAQMAAAACAADFAwAAEwMAAAACAADFAwAAFAMAAAACAABQHwAAAAMAAAACAABRHwAAAAMAAAACAABQHwAAAQMAAAACAABRHwAAAQMAAAACAABQHwAAQgMAAAACAABRHwAAQgMAAAACAAClAwAAFAMAAAACAABZHwAAAAMAAAACAABZHwAAAQMAAAACAABZHwAAQgMAAAACAADJAwAAEwMAAAACAADJAwAAFAMAAAACAABgHwAAAAMAAAACAABhHwAAAAMAAAACAABgHwAAAQMAAAACAABhHwAAAQMAAAACAABgHwAAQgMAAAACAABhHwAAQgMAAAACAACpAwAAEwMAAAACAACpAwAAFAMAAAACAABoHwAAAAMAAAACAABpHwAAAAMAAAACAABoHwAAAQMAAAACAABpHwAAAQMAAAACAABoHwAAQgMAAAACAABpHwAAQgMAAAACAACxAwAAAAMAAAABAACsAwAAAAIAALUDAAAAAwAAAAEAAK0DAAAAAgAAtwMAAAADAAAAAQAArgMAAAACAAC5AwAAAAMAAAABAACvAwAAAAIAAL8DAAAAAwAAAAEAAMwDAAAAAgAAxQMAAAADAAAAAQAAzQMAAAACAADJAwAAAAMAAAABAADOAwAAAAIAAAAfAABFAwAAAAIAAAEfAABFAwAAAAIAAAIfAABFAwAAAAIAAAMfAABFAwAAAAIAAAQfAABFAwAAAAIAAAUfAABFAwAAAAIAAAYfAABFAwAAAAIAAAcfAABFAwAAAAIAAAgfAABFAwAAAAIAAAkfAABFAwAAAAIAAAofAABFAwAAAAIAAAsfAABFAwAAAAIAAAwfAABFAwAAAAIAAA0fAABFAwAAAAIAAA4fAABFAwAAAAIAAA8fAABFAwAAAAIAACAfAABFAwAAAAIAACEfAABFAwAAAAIAACIfAABFAwAAAAIAACMfAABFAwAAAAIAACQfAABFAwAAAAIAACUfAABFAwAAAAIAACYfAABFAwAAAAIAACcfAABFAwAAAAIAACgfAABFAwAAAAIAACkfAABFAwAAAAIAACofAABFAwAAAAIAACsfAABFAwAAAAIAACwfAABFAwAAAAIAAC0fAABFAwAAAAIAAC4fAABFAwAAAAIAAC8fAABFAwAAAAIAAGAfAABFAwAAAAIAAGEfAABFAwAAAAIAAGIfAABFAwAAAAIAAGMfAABFAwAAAAIAAGQfAABFAwAAAAIAAGUfAABFAwAAAAIAAGYfAABFAwAAAAIAAGcfAABFAwAAAAIAAGgfAABFAwAAAAIAAGkfAABFAwAAAAIAAGofAABFAwAAAAIAAGsfAABFAwAAAAIAAGwfAABFAwAAAAIAAG0fAABFAwAAAAIAAG4fAABFAwAAAAIAAG8fAABFAwAAAAIAALEDAAAGAwAAAAIAALEDAAAEAwAAAAIAAHAfAABFAwAAAAIAALEDAABFAwAAAAIAAKwDAABFAwAAAAIAALEDAABCAwAAAAIAALYfAABFAwAAAAIAAJEDAAAGAwAAAAIAAJEDAAAEAwAAAAIAAJEDAAAAAwAAAAEAAIYDAAAAAgAAkQMAAEUDAAACAgAAIAAAABMDAAAAAQAAuQMAAAICAAAgAAAAEwMAAAICAAAgAAAAQgMAAAACAACoAAAAQgMAAAACAAB0HwAARQMAAAACAAC3AwAARQMAAAACAACuAwAARQMAAAACAAC3AwAAQgMAAAACAADGHwAARQMAAAACAACVAwAAAAMAAAABAACIAwAAAAIAAJcDAAAAAwAAAAEAAIkDAAAAAgAAlwMAAEUDAAAAAgAAvx8AAAADAAAAAgAAvx8AAAEDAAAAAgAAvx8AAEIDAAAAAgAAuQMAAAYDAAAAAgAAuQMAAAQDAAAAAgAAygMAAAADAAAAAQAAkAMAAAACAAC5AwAAQgMAAAACAADKAwAAQgMAAAACAACZAwAABgMAAAACAACZAwAABAMAAAACAACZAwAAAAMAAAABAACKAwAAAAIAAP4fAAAAAwAAAAIAAP4fAAABAwAAAAIAAP4fAABCAwAAAAIAAMUDAAAGAwAAAAIAAMUDAAAEAwAAAAIAAMsDAAAAAwAAAAEAALADAAAAAgAAwQMAABMDAAAAAgAAwQMAABQDAAAAAgAAxQMAAEIDAAAAAgAAywMAAEIDAAAAAgAApQMAAAYDAAAAAgAApQMA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ADIAAAAHAgAAMQAAADMAAAAHAgAAMQAAADQAAAAHAgAAMQAAADUAAAAHAgAAMQAAADYAAAAHAgAAMQAAADcAAAAHAgAAMQAAADgAAAAHAgAAMQAAADkAAAAHAgAAMgAAADAAAAACAwAAKAAAADEAAAApAAAAAgMAACgAAAAyAAAAKQAAAAIDAAAoAAAAMwAAACkAAAACAwAAKAAAADQAAAApAAAAAgMAACgAAAA1AAAAKQAAAAIDAAAoAAAANgAAACkAAAACAwAAKAAAADcAAAApAAAAAgMAACgAAAA4AAAAKQAAAAIDAAAoAAAAOQAAACkAAAACBAAAKAAAADEAAAAwAAAAKQAAAAIEAAAoAAAAMQAAADEAAAApAAAAAgQAACgAAAAxAAAAMgAAACkAAAACBAAAKAAAADEAAAAzAAAAKQAAAAIEAAAoAAAAMQAAADQAAAApAAAAAgQAACgAAAAxAAAANQAAACkAAAACBAAAKAAAADEAAAA2AAAAKQAAAAIEAAAoAAAAMQAAADcAAAApAAAAAgQAACgAAAAxAAAAOAAAACkAAAACBAAAKAAAADEAAAA5AAAAKQAAAAIEAAAoAAAAMgAAADAAAAApAAAAAgIAADEAAAAuAAAAAgIAADIAAAAuAAAAAgIAADMAAAAuAAAAAgIAADQAAAAuAAAAAgIAADUAAAAuAAAAAgIAADYAAAAuAAAAAgIAADcAAAAuAAAAAgIAADgAAAAuAAAAAgIAADkAAAAuAAAAAgMAADEAAAAwAAAALgAAAAIDAAAxAAAAMQAAAC4AAAACAwAAMQAAADIAAAAuAAAAAgMAADEAAAAzAAAALgAAAAIDAAAxAAAANAAAAC4AAAACAwAAMQAAADUAAAAuAAAAAgMAADEAAAA2AAAALgAAAAIDAAAxAAAANwAAAC4AAAACAwAAMQAAADgAAAAuAAAAAgMAADEAAAA5AAAALgAAAAIDAAAyAAAAMAAAAC4AAAACAwAAKAAAAGEAAAApAAAAAgMAACgAAABiAAAAKQAAAAIDAAAoAAAAYwAAACkAAAACAwAAKAAAAGQAAAApAAAAAgMAACgAAABlAAAAKQAAAAIDAAAoAAAAZgAAACkAAAACAwAAKAAAAGcAAAApAAAAAgMAACgAAABoAAAAKQAAAAIDAAAoAAAAaQAAACkAAAACAwAAKAAA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AAGAAAACAQAADIAAAAIBAAASgAAAAgEAADOAAAACAQAAf4AAAAIBAACJgAAAAgEAAOOBAAACAQAA6oEAAAIBAADzgQAAAgEAAPyBAAACAQAADIIAAAIBAAAbggAAAgEAAB+CAAACAQAAboIAAAIBAAByggAAAgEAAHiCAAACAQAATYYAAAIBAABrhgAAAgEAAECIAAACAQAATIgAAAIBAABjiAAAAgEAAH6JAAACAQAAi4kAAAIBAADSiQAAAgEAAACKAAACAQAAN4wAAAIBAABGjAAAAgEAAFWMAAACAQAAeIwAAAIBAACdjAAAAgEAAGSNAAACAQAAcI0AAAIBAACzjQAAAgEAAKuOAAACAQAAyo4AAAIBAACbjwAAAgEAALCPAAACAQAAtY8AAAIBAACRkAAAAgEAAEmRAAACAQAAxpEAAAIBAADMkQAAAgEAANGRAAACAQAAd5UAAAIBAACAlQAAAgEAAByWAAACAQAAtpYAAAIBAAC5lgAAAgEAAOiWAAACAQAAUZcAAAIBAABelwAAAgEAAGKXAAACAQAAaZcAAAIBAADLlwAAAgEAAO2XAAACAQAA85cAAAIBAAABmAAAAgEAAKiYAAACAQAA25gAAAIBAADfmAAAAgEAAJaZAAACAQAAmZkAAAIBAACsmQAAAgEAAKiaAAACAQAA2JoAAAIBAADfmgAAAgEAACWbAAACAQAAL5sAAAIBAAAymwAAAgEAADybAAACAQAAWpsAAAIBAADlnAAAAgEAAHWeAAACAQAAf54AAAIBAAClngAAAgEAALueAAACAQAAw54AAAIBAADNngAAAgEAANGeAAACAQAA+Z4AAAIBAAD9ngAAAgEAAA6fAAACAQAAE58AAAIBAAAgnwAAAgEAADufAAACAQAASp8AAAIBAABSnwAAAgEAAI2fAAACAQAAnJ8AAAIBAACgnwAACAEAACAAAAACAQAAEjAAAAIBAABBUwAAAgEAAERTAAACAQAARVMAAAACAABLMAAAmTAAAAACAABNMAAAmTAAAAACAABPMAAAmTAAAAACAABRMAAAmTAAAAACAABTMAAAmTAAAAACAABVMAAAmTAAAAACAABXMAAAmTAAAAACAABZMAAAmTAAAAACAABbMAAAmTAAAAACAABdMAAAmTAAAAACAABfMAAAmTAAAAACAABhMAAAmTAAAAACAABkMAAAmTAAAAACAABmMAAAmTAAAAACAABoMAAAmTAAAAACAABvMAAAmTAAAAACAABvMAAAmjAAAAACAAByMAAAmTAAAAACAAByMAAAmjAAAAACAAB1MAAAmTAAAAACAAB1MAAAmjAAAAACAAB4MAAAmTAAAAACAAB4MAAAmjAAAAACAAB7MAAAmTAAAAACAAB7MAAAmjAAAAACAABGMAAAmTAAAAICAAAgAAAAmTAAAAICAAAgAAAAmjAAAAACAACdMAAAmTAAAAkCAACIMAAAijAAAAACAACrMAAAmTAAAAACAACtMAAAmTAAAAACAACvMAAAmTAAAAACAACxMAAAmTAAAAACAACzMAAAmTAAAAACAAC1MAAAmTAAAAACAAC3MAAAmTAAAAACAAC5MAAAmTAAAAACAAC7MAAAmTAAAAACAAC9MAAAmTAAAAACAAC/MAAAmTAAAAACAADBMAAAmTAAAAACAADEMAAAmTAAAAACAADGMAAAmTAAAAACAADIMAAAmTAAAAACAADPMAAAmTAAAAACAADPMAAAmjAAAAACAADSMAAAmTAAAAACAADSMAAAmjAAAAACAADVMAAAmTAAAAACAADVMAAAmjAAAAACAADYMAAAmTAAAAACAADYMAAAmjAAAAACAADbMAAAmTAAAAACAADbMAAAmjAAAAACAACmMAAAmTAAAAACAADvMAAAmTAAAAACAADwMAAAmTAAAAACAADxMAAAmTAAAAACAADyMAAAmTAAAAACAAD9MAAAmTAAAAkCAACzMAAAyDAAAAIBAAAAEQAAAgEAAAERAAACAQAAqhEAAAIBAAACEQAAAgEAAKwRAAACAQAArREAAAIBAAADEQAAAgEAAAQRAAACAQAABREAAAIBAACwEQAAAgEAALERAAACAQAAshEAAAIBAACzEQAAAgEAALQRAAACAQAAtREAAAIBAAAaEQAAAgEAAAYRAAACAQAABxEAAAIBAAAIEQAAAgEAACERAAACAQAACREAAAIBAAAKEQAAAgEAAAsRAAACAQAADBEAAAIBAAANEQAAAgEAAA4RAAACAQAADxEAAAIBAAAQEQAAAgEAABERAAACAQAAEhEAAAIBAABhEQAAAgEAAGIRAAACAQAAYxEAAAIBAABkEQAAAgEAAGURAAACAQAAZhEAAAIBAABnEQAAAgEA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AK8wAAD8MAAAyTAAAAoEAACoMAAA/DAAAKswAAD8MAAACgMAAKowAADzMAAAuTAAAAoDAACqMAAA/DAAAOAwAAAKAwAAqzAAAKQwAADqMAAACgQAAKswAADpMAAAwzAAAMgwAAAKBAAAqzAAAO0wAADqMAAA/DAAAAoDAACsMAAA7TAAAPMwAAAKAwAArDAAAPMwAADeMAAACgIAAK4wAACsMAAACgMAAK4wAADLMAAA/DAAAAoEAACtMAAA5TAAAOowAAD8MAAACgQAAK4wAADrMAAAwDAAAPwwAAAKAgAArTAAAO0wAAAKBQAArTAAAO0wAACwMAAA6TAAAOAwAAAKBgAArTAAAO0wAADhMAAA/DAAAMgwAADrMAAACgUAAK0wAADtMAAA7zAAAMMwAADIMAAACgMAALAwAADpMAAA4DAAAAoFAACwMAAA6TAAAOAwAADIMAAA8zAAAAoFAACvMAAA6zAAALwwAACkMAAA7TAAAAoEAACvMAAA7TAAAPwwAADNMAAACgMAALEwAAD8MAAAuTAAAAoDAACzMAAA6zAAAMowAAAKAwAAszAAAPwwAADdMAAACgQAALUwAACkMAAArzAAAOswAAAKBQAAtTAAAPMwAADBMAAA/DAAAOAwAAAKBAAAtzAAAOowAADzMAAAsDAAAAoDAAC7MAAA8zAAAMEwAAAKAwAAuzAAAPMwAADIMAAACgMAAMAwAAD8MAAAuTAAAAoCAADHMAAAtzAAAAoCAADJMAAA6zAAAAoCAADIMAAA8zAAAAoCAADKMAAAzjAAAAoDAADOMAAAwzAAAMgwAAAKAwAAzzAAAKQwAADEMAAACgUAANEwAAD8MAAAuzAAAPMwAADIMAAACgMAANEwAAD8MAAAxDAAAAoEAADQMAAA/DAAAOwwAADrMAAACgUAANQwAACiMAAAuTAAAMgwAADrMAAACgMAANQwAACvMAAA6zAAAAoCAADUMAAAszAAAAoCAADTMAAA6zAAAAoFAADVMAAAoTAAAOkwAADDMAAAyTAAAAoEAADVMAAAozAAAPwwAADIMAAACgUAANYwAADDMAAAtzAAAKcwAADrMAAACgMAANUwAADpMAAA8zAAAAoFAADYMAAArzAAAL8wAAD8MAAA6zAAAAoCAADaMAAAvTAAAAoDAADaMAAAyzAAANIwAAAKAwAA2DAA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AAwBAACtBgAADQEAAK0GAAAOAQAArQYAAAsBAADHBgAADAEAAMcGAAALAQAAxgYAAAwBAADGBgAACwEAAMgGAAAMAQAAyAYAAAsBAAB3BgAACwEAAMsGAAAMAQAAywYAAAsBAADFBgAADAEAAMUGAAALAQAAyQYAAAwBAADJBgAACwEAANAGAAAMAQAA0AYAAA0BAADQBgAADgEAANAGAAANAQAASQYAAA4BAABJBgAACwIAACYGAAAnBgAADAIAACYGAAAnBgAACwIAACYGAADVBgAADAIAACYGAADVBgAACwIAACYGAABIBgAADAIAACYGAABIBgAACwIAACYGAADHBgAADAIAACYGAADHBgAACwIAACYGAADGBgAADAIAACYGAADGBgAACwIAACYGAADIBgAADAIAACYGAADIBgAACwIAACYGAADQBgAADAIAACYGAADQBgAADQIAACYGAADQBgAACwIAACYGAABJBgAADAIAACYGAABJBgAADQIAACYGAABJBgAACwEAAMwGAAAMAQAAzAYAAA0BAADMBgAADgEAAMwGAAALAgAAJgYAACwGAAALAgAAJgYAAC0GAAALAgAAJgYAAEUGAAALAgAAJgYAAEkGAAALAgAAJgYAAEoGAAALAgAAKAYAACwGAAALAgAAKAYAAC0GAAALAgAAKAYAAC4GAAALAgAAKAYAAEUGAAALAgAAKAYAAEkGAAALAgAAKAYAAEoGAAALAgAAKgYAACwGAAALAgAAKgYAAC0GAAALAgAAKgYAAC4GAAALAgAAKgYAAEUGAAALAgAAKgYAAEkGAAALAgAAKgYAAEoGAAALAgAAKwYAACwGAAALAgAAKwYAAEUGAAALAgAAKwYAAEkGAAALAgAAKwYAAEoGAAALAgAALAYAAC0GAAALAgAALAYAAEUGAAALAgAALQYAACwGAAALAgAALQYAAEUGAAALAgAALgYAACwGAAALAgAALgYAAC0GAAALAgAALgYAAEUGAAALAgAAMwYAACwGAAALAgAAMwYAAC0GAAALAgAAMwYAAC4GAAALAgAAMwYAAEUGAAALAgAANQYAAC0GAAALAgAANQYAAEUGAAALAgAANgYAACwGAAALAgAANgYAAC0GAAALAgAANgYAAC4GAAALAgAANgYAAEUGAAALAgAANwYAAC0GAAALAgAANwYAAEUGAAALAgAAOAYAAEUGAAALAgAAOQYAACwGAAALAgAAOQYAAEUGAAALAgAAOgYAACwGAAALAgAAOgYAAEUGAAALAgAAQQYAACwGAAALAgAAQQYAAC0GAAALAgAAQQYAAC4GAAALAgAAQQYAAEUGAAALAgAAQQYAAEkGAAALAgAAQQYAAEoGAAALAgAAQgYAAC0GAAALAgAAQgYAAEUGAAALAgAAQgYAAEkGAAALAgAAQgYAAEoGAAALAgAAQwYAACcGAAALAgAAQwYAACwGAAALAgAAQwYAAC0GAAALAgAAQwYAAC4GAAALAgAAQwYAAEQGAAALAgAAQwYAAEUGAAALAgAAQwYAAEkGAAALAgAAQwYAAEoGAAALAgAARAYAACwGAAALAgAARAYAAC0GAAALAgAARAYAAC4GAAALAgAARAYAAEUGAAALAgAARAYAAEkGAAALAgAARAYAAEoGAAALAgAARQYAACwGAAALAgAARQYAAC0GAAALAgAARQYAAC4GAAALAgAARQYAAEUGAAALAgAARQYAAEkGAAALAgAARQYAAEoGAAALAgAARgYAACwGAAALAgAARgYAAC0GAAALAgAARgYAAC4GAAALAgAARgYAAEUGAAALAgAARgYAAEkGAAALAgAARgYAAEoGAAALAgAARwYAACwGAAALAgAARwYAAEUGAAALAgAARwYAAEkGAAALAgAARwYAAEoGAAALAgAASgYAACwGAAALAgAASgYAAC0GAAALAgAASgYAAC4GAAALAgAASgYAAEUGAAALAgAASgYAAEkGAAALAgAASgYAAEoGAAALAgAAMAYAAHAGAAALAgAAMQYAAHAGAAALAgAASQYAAHAGAAALAwAAIAAAAEwGAABRBgAACwMAACAAAABNBgAAUQYAAAsDAAAgAAAATgYAAFEGAAALAwAAIAAAAE8GAABRBgAACwMAACAAAABQBgAAUQYAAAsDAAAgAAAAUQYAAHAGAAAMAgAAJgYAADEGAAAMAgAAJgYAADIGAAAMAgAAJgYAAEUGAAAMAgAAJgYAAEYGAAAMAgAAJgYAAEkGAAAMAgAAJgYAAEoGAAAMAgAAKAYAADEGAAAMAgAAKAYAADIGAAAMAgAAKAYAAEUGAAAMAgAAKAYAAEYGAAAMAgAAKAYAAEkGAAAMAgAAKAYAAEoGAAAMAgAAKgYAADEGAAAMAgAAKgYAADIGAAAMAgAAKgYAAEUGAAAMAgAAKgYAAEYGAAAMAgAAKgYAAEkGAAAMAgAAKgYAAEoGAAAMAgAAKwYAADEGAAAMAgAAKwYAADIGAAAMAgAAKwYAAEUGAAAMAgAAKwYAAEYGAAAMAgAAKwYAAEkGAAAMAgAAKwYAAEoGAAAMAgAAQQYAAEkGAAAMAgAAQQYAAEoGAAAMAgAAQgYAAEkGAAAMAgAAQgYAAEoGAAAMAgAAQwYAACcGAAAMAgAAQwYAAEQGAAAMAgAAQwYAAEUGAAAMAgAAQwYAAEkGAAAMAgAAQwYAAEoGAAAMAgAARAYAAEUGAAAMAgAARAYAAEkGAAAMAgAARAYAAEoGAAAMAgAARQYAACcGAAAMAgAARQYAAEUGAAAMAgAARgYAADEGAAAMAgAARgYAADIGAAAMAgAARgYAAEUGAAAMAgAARgYAAEYGAAAMAgAARgYAAEkGAAAMAgAARgYAAEoGAAAMAgAASQYAAHAGAAAMAgAASgYAADEGAAAMAgAASgYAADIGAAAMAgAASgYAAEUGAAAMAgAASgYAAEYGAAAMAgAASgYAAEkGAAAMAgAASgYAAEoGAAANAgAAJgYAACwGAAANAgAAJgYAAC0GAAANAgAAJgYAAC4GAAANAgAAJgYAAEUGAAANAgAAJgYAAEcGAAANAgAAKAYAACwGAAANAgAAKAYAAC0GAAANAgAAKAYAAC4GAAANAgAAKAYAAEUGAAANAgAAKAYAAEcGAAANAgAAKgYAACwGAAANAgAAKgYAAC0GAAANAgAAKgYAAC4GAAANAgAAKgYAAEUGAAANAgAAKgYAAEcGAAANAgAAKwYAAEUGAAANAgAALAYAAC0GAAANAgAALAYAAEUGAAANAgAALQYAACwGAAANAgAALQYAAEUGAAANAgAALgYAACwGAAANAgAALgYAAEUGAAANAgAAMwYAACwGAAANAgAAMwYAAC0GAAANAgAAMwYAAC4GAAANAgAAMwYAAEUGAAANAgAANQYAAC0GAAANAgAANQYAAC4GAAANAgAANQYAAEUGAAANAgAANgYAACwGAAANAgAANgYAAC0GAAANAgAANgYAAC4GAAANAgAANgYAAEUGAAANAgAANwYAAC0GAAANAgAAOAYAAEUGAAANAgAAOQYAACwGAAANAgAAOQYAAEUGAAANAgAAOgYAACwGAAANAgAAOgYAAEUGAAANAgAAQQYAACwGAAANAgAAQQYAAC0GAAANAgAAQQYAAC4GAAANAgAAQQYAAEUGAAANAgAAQgYAAC0GAAANAgAAQgYAAEUGAAANAgAAQwYAACwGAAANAgAAQwYAAC0GAAANAgAAQwYAAC4GAAANAgAAQwYAAEQGAAANAgAAQwYAAEUGAAANAgAARAYAACwGAAANAgAARAYAAC0GAAANAgAARAYAAC4GAAANAgAARAYAAEUGAAANAgAARAYAAEcGAAANAgAARQYAACwGAAANAgAARQYAAC0GAAANAgAARQYAAC4GAAANAgAARQYAAEUGAAANAgAARgYAACwGAAANAgAARgYAAC0GAAANAgAARgYAAC4GAAANAgAARgYAAEUGAAANAgAARgYAAEcGAAANAgAARwYAACwGAAANAgAARwYAAEUGAAANAgAARwYAAHAGAAANAgAASgYAACwGAAANAgAASgYAAC0GAAANAgAASgYAAC4GAAANAgAASgYAAEUGAAANAgAASgYAAEcGAAAOAgAAJgYAAEUGAAAOAgAAJgYAAEcGAAAOAgAAKAYAAEUGAAAOAgAAKAYAAEcGAAAOAgAAKgYAAEUGAAAOAgAAKgYAAEcGAAAOAgAAKwYAAEUGAAAOAgAAKwYAAEcGAAAOAgAAMwYAAEUGAAAOAgAAMwYAAEcGAAAOAgAANAYAAEUGAAAOAgAANAYAAEcGAAAOAgAAQwYAAEQGAAAOAgAAQwYAAEUGAAAOAgAARAYAAEUGAAAOAgAARgYAAEUGAAAOAgAARgYAAEcGAAAOAgAASgYAAEUGAAAOAgAASgYAAEcGAAAOAwAAQAYAAE4GAABRBgAADgMAAEAGAABPBgAAUQYAAA4DAABABgAAUAYAAFEGAAALAgAANwYAAEkGAAALAgAANwYAAEoGAAALAgAAOQYAAEkGAAALAgAAOQYAAEoGAAALAgAAOgYAAEkGAAALAgAAOgYAAEoGAAALAgAAMwYAAEkGAAALAgAAMwYAAEoGAAALAgAANAYAAEkGAAALAgAANAYAAEoGAAALAgAALQYAAEkGAAALAgAALQYAAEoGAAALAgAALAYAAEkGAAALAgAALAYAAEoGAAALAgAALgYAAEkGAAALAgAALgYAAEoGAAALAgAANQYAAEkGAAALAgAANQYAAEoGAAALAgAANgYAAEkGAAALAgAANgYAAEoGAAALAgAANAYAACwGAAALAgAANAYAAC0GAAALAgAANAYAAC4GAAALAgAANAYAAEUGAAALAgAANAYAADEGAAALAgAAMwYAADEGAAALAgAANQYAADEGAAALAgAANgYAADEGAAAMAgAANwYAAEkGAAAMAgAANwYAAEoGAAAMAgAAOQYAAEkGAAAMAgAAOQYAAEoGAAAMAgAAOgYAAEkGAAAMAgAAOgYAAEoGAAAMAgAAMwYAAEkGAAAMAgAAMwYAAEoGAAAMAgAANAYAAEkGAAAMAgAANAYAAEoGAAAMAgAALQYAAEkGAAAMAgAALQYAAEoGAAAMAgAALAYAAEkGAAAMAgAALAYAAEoGAAAMAgAALgYAAEkGAAAMAgAALgYAAEoGAAAMAgAANQYAAEkGAAAMAgAANQYAAEoGAAAMAgAANgYAAEkGAAAMAgAANgYAAEoGAAAMAgAANAYAACwGAAAMAgAANAYAAC0GAAAMAgAANAYAAC4GAAAMAgAANAYAAEUGAAAMAgAANAYAADEGAAAMAgAAMwYAADEGAAAMAgAANQYAADEGAAAMAgAANgYAADEGAAANAgAANAYAACwGAAANAgAANAYAAC0GAAANAgAANAYAAC4GAAANAgAANAYAAEUGAAANAgAAMwYAAEcGAAANAgAANAYAAEcGAAANAgAANwYAAEUGAAAOAgAAMwYAACwGAAAOAgAAMwYAAC0GAAAOAgAAMwYAAC4GAAAOAgAANAYAACwGAAAOAgAANAYAAC0GAAAOAgAANAYAAC4GAAAOAgAANwYAAEUGAAAOAgAAOAYAAEUGAAAMAgAAJwYAAEsGAAALAgAAJwYAAEsGAAANAwAAKgYAACwGAABFBgAADAMAACoGAAAtBgAALAYAAA0DAAAqBgAALQYAACwGAAANAwAAKgYAAC0GAABFBgAADQMAACoGAAAuBgAARQYAAA0DAAAqBgAARQYAACwGAAANAwAAKgYAAEUGAAAtBgAADQMAACoGAABFBgAALgYAAAwDAAAsBgAARQYAAC0GAAANAwAALAYAAEUGAAAtBgAADAMAAC0GAABFBgAASgYAAAwDAAAtBgAARQYAAEkGAAANAwAAMwYAAC0GAAAsBgAADQMAADMGAAAsBgAALQYAAAwDAAAzBgAALAYAAEkGAAAMAwAAMwYAAEUGAAAtBgAADQMAADMGAABFBgAALQYAAA0DAAAzBgAARQYAACwGAAAMAwAAMwYAAEUGAABFBgAADQMAADMGAABFBgAARQYAAAwDAAA1BgAALQYAAC0GAAANAwAANQYAAC0GAAAtBgAADAMAADUGAABFBgAARQYAAAwDAAA0BgAALQYAAEUGAAANAwAANAYAAC0GAABFBgAADAMAADQGAAAsBgAASgYAAAwDAAA0BgAARQYAAC4GAAANAwAANAYAAEUGAAAuBgAADAMAADQGAABFBgAARQYAAA0DAAA0BgAARQYAAEUGAAAMAwAANgYAAC0GAABJBgAADAMAADYGAAAuBgAARQYAAA0DAAA2BgAALgYAAEUGAAAMAwAANwYAAEUGAAAtBgAADQMAADcGAABFBgAALQYAAA0DAAA3BgAARQYAAEUGAAAMAwAANwYAAEUGAABKBgAADAMAADkGAAAsBgAARQYAAAwDAAA5BgAARQYAAEUGAAANAwAAOQYAAEUGAABFBgAADAMAADkGAABFBgAASQYAAAwDAAA6BgAARQYAAEUGAAAMAwAAOgYAAEUGAABKBgAADAMAADoGAABFBgAASQYAAAwDAABBBgAALgYAAEUGAAANAwAAQQYAAC4GAABFBgAADAMAAEIGAABFBgAALQYAAAwDAABCBgAARQYAAEUGAAAMAwAARAYAAC0GAABFBgAADAMAAEQGAAAtBgAASgYAAAwDAABEBgAALQYAAEkGAAANAwAARAYAACwGAAAsBgAADAMAAEQGAAAsBgAALAYAAAwDAABEBgAALgYAAEUGAAANAwAARAYAAC4GAABFBgAADAMAAEQGAABFBgAALQYAAA0DAABEBgAARQYAAC0GAAANAwAARQYAAC0GAAAsBgAADQMAAEUGAAAtBgAARQYAAAwDAABFBgAALQYAAEoGAAANAwAARQYAACwGAAAtBgAADQMAAEUGAAAsBgAARQYAAA0DAABFBgAALgYAACwGAAANAwAARQYAAC4GAABFBgAADQMAAEUGAAAsBgAALgYAAA0DAABHBgAARQYAACwGAAANAwAARwYAAEUGAABFBgAADQMAAEYGAAAtBgAARQYAAAwDAABGBgAALQYAAEkGAAAMAwAARgYAACwGAABFBgAADQMAAEYGAAAsBgAARQYAAAwDAABGBgAALAYAAEkGAAAMAwAARgYAAEUGAABKBgAADAMAAEYGAABFBgAASQYAAAwDAABKBgAARQYAAEUGAAANAwAASgYAAEUGAABFBgAADAMAACgGAAAuBgAASgYAAAwDAAAqBgAALAYAAEoGAAAMAwAAKgYAACwGAABJBgAADAMAACoGAAAuBgAASgYAAAwDAAAqBgAALgYAAEkGAAAMAwAAKgYAAEUGAABKBgAADAMAACoGAABFBgAASQYAAAwDAAAsBgAARQYAAEoGAAAMAwAALAYAAC0GAABJBgAADAMAACwGAABFBgAASQYAAAwDAAAzBgAALgYAAEkGAAAMAwAANQYAAC0GAABKBgAADAMAADQGAAAtBgAASgYAAAwDAAA2BgAALQYAAEoGAAAMAwAARAYAACwGAABKBgAADAMAAEQGAABFBgAASgYAAAwDAABKBgAALQYAAEoGAAAMAwAASgYAACwGAABKBgAADAMAAEoGAABFBgAASgYAAAwDAABFBgAARQYAAEoGAAAMAwAAQgYAAEUGAABKBgAADAMAAEYGAAAtBgAASgYAAA0DAABCBgAARQYAAC0GAAANAwAARAYAAC0GAABFBgAADAMAADkGAABFBgAASgYAAAwDAABDBgAARQYAAEoGAAANAwAARgYAACwGAAAtBgAADAMAAEUGAAAuBgAASgYAAA0DAABEBgAALAYAAEUGAAAMAwAAQwYAAEUGAABFBgAADAMAAEQGAAAsBgAARQYAAAwDAABGBgAALAYAAC0GAAAMAwAALAYAAC0GAABKBgAADAMAAC0GAAAsBgAASgYAAAwDAABFBgAALAYAAEoGAAAMAwAAQQYAAEUGAABKBgAADAMAACgGAAAtBgAASgYAAA0DAABDBgAARQYAAEUGAAANAwAAOQYAACwGAABFBgAADQMAADUGAABFBgAARQYAAAwDAAAzBgAALgYAAEoGAAAMAwAARgYAACwGAABKBgAACwMAADUGAABEBgAA0gYAAAsDAABCBgAARAYAANIGAAALBAAAJwYAAEQGAABEBgAARwYAAAsEAAAnBgAAQwYAACgGAAAxBgAACwQAAEUGAAAtBgAARQYAAC8GAAALBAAANQYAAEQGAAA5BgAARQYAAAsEAAAxBgAAMwYAAEgGAABEBgAACwQAADkGAABEBgAASgYAAEcGAAALBAAASAYAADMGAABEBgAARQYAAAsDAAA1BgAARAYAAEkGAAALEgAANQYAAEQGAABJBgAAIAAAACcGAABEBgAARAYAAEcGAAAgAAAAOQYAAEQGAABKBgAARwYAACAAAABIBgAAMwYAAEQGAABFBgAACwgAACwGAABEBgAAIAAAACwGAABEBgAAJwYAAEQGAABHBgAACwQAADEGAADMBgAAJwYAAEQGAAAJAQAALAAAAAkBAAABMAAACQEAAAIwAAAJAQAAOgAAAAkBAAA7AAAACQEAACEAAAAJAQAAPwAAAAkBAAAWMAAACQEAABcwAAAJAQAAJiAAAAkBAAAlIAAACQEAABQgAAAJAQAAEyAAAAkBAABfAAAACQEAAF8AAAAJAQAAKAAAAAkBAAApAAAACQEAAHsAAAAJAQAAfQAAAAkBAAAUMAAACQEAABUwAAAJAQAAEDAAAAkBAAARMAAACQEAAAowAAAJAQAACzAAAAkBAAAIMAAACQEAAAkwAAAJAQAADDAAAAkBAAANMAAACQEAAA4wAAAJAQAADzAAAAkBAABbAAAACQEAAF0AAAACAQAAPiAAAAIBAAA+IAAAAgEAAD4gAAACAQAAPiAAAAIBAABfAAAAAgEAAF8AAAACAQAAXwAAAA8BAAAsAAAADwEAAAEwAAAPAQAALgAAAA8BAAA7AAAADwEAADoAAAAPAQAAPwAAAA8BAAAhAAAADwEAABQgAAAPAQAAKAAAAA8BAAApAAAADwEAAHsAAAAPAQAAfQAAAA8BAAAUMAAADwEAABUwAAAPAQAAIwAAAA8BAAAmAAAADwEAACoAAAAPAQAAKwAAAA8BAAAtAAAADwEAADwAAAAPAQAAPgAAAA8BAAA9AAAADwEAAFwAAAAPAQAAJAAAAA8BAAAlAAAADwEAAEAAAAALAgAAIAAAAEsGAAAOAgAAQAYAAEsGAAALAgAAIAAAAEwGAAALAgAAIAAAAE0GAAALAgAAIAAAAE4GAAAOAgAAQAYAAE4GAAALAgAAIAAAAE8GAAAOAgAAQAYAAE8GAAALAgAAIAAAAFAGAAAOAgAAQAYAAFAGAAALAgAAIAAAAFEGAAAOAgAAQAYAAFEGAAALAgAAIAAAAFIGAAAOAgAAQAYAAFIGAAALAQAAIQYAAAsBAAAiBgAADAEAACIGAAALAQAAIwYAAAwBAAAjBgAACwEAACQGAAAMAQAAJAYAAAsBAAAlBgAADAEAACUGAAALAQAAJgYAAAwBAAAmBgAADQEAACYGAAAOAQAAJgYAAAsBAAAnBgAADAEAACcGAAALAQAAKAYAAAwBAAAoBgAADQEAACgGAAAOAQAAKAYAAAsBAAApBgAADAEAACkGAAALAQAAKgYAAAwBAAAqBgAADQEAACoGAAAOAQAAKgYAAAsBAAArBgAADAEAACsGAAANAQAAKwYAAA4BAAArBgAACwEAACwGAAAMAQAALAYAAA0BAAAsBgAADgEAACwGAAALAQAALQYAAAwBAAAtBgAADQEAAC0GAAAOAQAALQYAAAsBAAAuBgAADAEAAC4GAAANAQAALgYAAA4BAAAuBgAACwEAAC8GAAAMAQAALwYAAAsBAAAwBgAADAEAADAGAAALAQAAMQYAAAwBAAAxBgAACwEAADIGAAAMAQAAMgYAAAsBAAAzBgAADAEAADMGAAANAQAAMwYAAA4BAAAzBgAACwEAADQGAAAMAQAANAYAAA0BAAA0BgAADgEAADQGAAALAQAANQYAAAwBAAA1BgAADQEAADUGAAAOAQAANQYAAAsBAAA2BgAADAEAADYGAAANAQAANgYAAA4BAAA2BgAACwEAADcGAAAMAQAANwYAAA0BAAA3BgAADgEAADcGAAALAQAAOAYAAAwBAAA4BgAADQEAADgGAAAOAQAAOAYAAAsBAAA5BgAADAEAADkGAAANAQAAOQYAAA4BAAA5BgAACwEAADoGAAAMAQAAOgYAAA0BAAA6BgAADgEAADoGAAALAQAAQQYAAAwBAABBBgAADQEAAEEGAAAOAQAAQQYAAAsBAABCBgAADAEAAEIGAAANAQAAQgYAAA4BAABCBgAACwEAAEMGAAAMAQAAQwYAAA0BAABDBgAADgEAAEMGAAALAQAARAYAAAwBAABEBgAADQEAAEQGAAAOAQAARAYAAAsBAABFBgAADAEAAEUGAAANAQAARQYAAA4BAABFBgAACwEAAEYGAAAMAQAARgYAAA0BAABGBgAADgEAAEYGAAALAQAARwYAAAwBAABHBgAADQEAAEcGAAAOAQAARwYAAAsBAABIBgAADAEAAEgGAAALAQAASQYAAAwBAABJBgAACwEAAEoGAAAMAQAASgYAAA0BAABKBgAADgEAAEoGAAALAgAARAYAACIGAAAMAgAARAYAACIGAAALAgAARAYAACMGAAAMAgAARAYAACMGAAALAgAARAYAACUGAAAMAgAARAYAACUGAAALAgAARAYAACcGAAAMAgAARAYAACcGAAAIAQAAIQAAAAgBAAAiAAAACAEAACMAAAAIAQAAJAAAAAgBAAAlAAAACAEAACYAAAAIAQAAJwAAAAgBAAAoAAAACAEAACkAAAAIAQAAKgAAAAgBAAArAAAACAEAACwAAAAIAQAALQAAAAgBAAAuAAAACAEAAC8AAAAIAQAAMAAAAAgBAAAxAAAACAEAADIAAAAIAQAAMwAAAAgBAAA0AAAACAEAADUAAAAIAQAANgAAAAgBAAA3AAAACAEAADgAAAAIAQAAOQAAAAgBAAA6AAAACAEAADsAAAAIAQAAPAAAAAgBAAA9AAAACAEAAD4AAAAIAQAAPwAAAAgBAABAAAAACAEAAEEAAAAIAQAAQgAAAAgBAABDAAAACAEAAEQAAAAIAQAARQAAAAgBAABGAAAACAEAAEcAAAAIAQAASAAAAAgBAABJAAAACAEAAEoAAAAIAQAASwAAAAgBAABMAAAACAEAAE0AAAAIAQAATgAAAAgBAABPAAAACAEAAFAAAAAIAQAAUQAAAAgBAABSAAAACAEAAFMAAAAIAQAAVAAAAAgBAABVAAAACAEAAFYAAAAIAQAAVwAAAAgBAABYAAAACAEAAFkAAAAIAQAAWgAAAAgBAABbAAAACAEAAFwAAAAIAQAAXQAAAAgBAABeAAAACAEAAF8AAAAIAQAAYAAAAAgBAABhAAAACAEAAGIAAAAIAQAAYwAAAAgBAABkAAAACAEAAGUAAAAIAQAAZgAAAAgBAABnAAAACAEAAGgAAAAIAQAAaQAAAAgBAABqAAAACAEAAGsAAAAIAQAAbAAAAAgBAABtAAAACAEAAG4AAAAIAQAAbwAAAAgBAABwAAAACAEAAHEAAAAIAQAAcgAAAAgBAABzAAAACAEAAHQAAAAIAQAAdQAAAAgBAAB2AAAACAEAAHcAAAAIAQAAeAAAAAgBAAB5AAAACAEAAHoAAAAIAQAAewAAAAgBAAB8AAAACAEAAH0AAAAIAQAAfgAAAAgBAACFKQAACAEAAIYpAAAQAQAAAjAAABABAAAMMAAAEAEAAA0wAAAQAQAAATAAABABAAD7MAAAEAEAAPIwAAAQAQAAoTAAABABAACjMAAAEAEAAKUwAAAQAQAApzAAABABAACpMAAAEAEAAOMwAAAQAQAA5TAAABABAADnMAAAEAEAAMMwAAAQAQAA/DAAABABAACiMAAAEAEAAKQwAAAQAQAApjAAABABAACoMAAAEAEAAKowAAAQAQAAqzAAABABAACtMAAAEAEAAK8wAAAQAQAAsTAAABABAACzMAAAEAEAALUwAAAQAQAAtzAAABABAAC5MAAAEAEAALswAAAQAQAAvTAAABABAAC/MAAAEAEAAMEwAAAQAQAAxDAAABABAADGMAAAEAEAAMgwAAAQAQAAyjAAABABAADLMAAAEAEAAMwwAAAQAQAAzTAAABABAADOMAAAEAEAAM8wAAAQAQAA0jAAABABAADVMAAAEAEAANgwAAAQAQAA2zAAABABAADeMAAAEAEAAN8wAAAQAQAA4DAAABABAADhMAAAEAEAAOIwAAAQAQAA5DAAABABAADmMAAAEAEAAOgwAAAQAQAA6TAAABABAADqMAAAEAEAAOswAAAQAQAA7DAAABABAADtMAAAEAEAAO8wAAAQAQAA8zAAABABAACZMAAAEAEAAJowAAAQAQAAZDEAABABAAAxMQAAEAEAADIxAAAQAQAAMzEAABABAAA0MQAAEAEAADUxAAAQAQAANjEAABABAAA3MQAAEAEAADgxAAAQAQAAOTEAABABAAA6MQAAEAEAADsxAAAQAQAAPDEAABABAAA9MQAAEAEAAD4xAAAQAQAAPzEAABABAABAMQAAEAEAAEExAAAQAQAAQjEAABABAABDMQAAEAEAAEQxAAAQAQAARTEAABABAABGMQAAEAEAAEcxAAAQAQAASDEAABABAABJMQAAEAEAAEoxAAAQAQAASzEAABABAABMMQAAEAEAAE0xAAAQAQAATjEAABABAABPMQAAEAEAAFAxAAAQAQAAUTEAABABAABSMQAAEAEAAFMxAAAQAQAAVDEAABABAABVMQAAEAEAAFYxAAAQAQAAVzEAABABAABYMQAAEAEAAFkxAAAQAQAAWjEAABABAABbMQAAEAEAAFwxAAAQAQAAXTEAABABAABeMQAAEAEAAF8xAAAQAQAAYDEAABABAABhMQAAEAEAAGIxAAAQAQAAYzEA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AKkDAAAGAQAAByIAAAYBAACxAwAABgEAALIDAAAGAQAAswMAAAYBAAC0AwAABgEAALUDAAAGAQAAtgMAAAYBAAC3AwAABgEAALgDAAAGAQAAuQMAAAYBAAC6AwAABgEAALsDAAAGAQAAvAMAAAYBAAC9AwAABgEAAL4DAAAGAQAAvwMAAAYBAADAAwAABgEAAMEDAAAGAQAAwgMAAAYBAADDAwAABgEAAMQDAAAGAQAAxQMAAAYBAADGAwAABgEAAMcDAAAGAQAAyAMAAAYBAADJAwAABgEAAAIiAAAGAQAA9QMAAAYBAADRAwAABgEAAPADAAAGAQAA1QMAAAYBAADxAwAABgEAANYDAAAGAQAAkQMAAAYBAACSAwAABgEAAJMDAAAGAQAAlAMAAAYBAACVAwAABgEAAJYDAAAGAQAAlwMAAAYBAACYAwAABgEAAJkDAAAGAQAAmgMAAAYBAACbAwAABgEAAJwDAAAGAQAAnQMAAAYBAACeAwAABgEAAJ8DAAAGAQAAoAMAAAYBAAChAwAABgEAAPQDAAAGAQAAowMAAAYBAACkAwAABgEAAKUDAAAGAQAApgMAAAYBAACnAwAABgEAAKgDAAAGAQAAqQMAAAYBAAAHIgAABgEAALEDAAAGAQAAsgMAAAYBAACzAwAABgEAALQDAAAGAQAAtQMAAAYBAAC2AwAABgEAALcDAAAGAQAAuAMAAAYBAAC5AwAABgEAALoDAAAGAQAAuwMAAAYBAAC8AwAABgEAAL0DAAAGAQAAvgMAAAYBAAC/AwAABgEAAMADAAAGAQAAwQMAAAYBAADCAwAABgEAAMMDAAAGAQAAxAMAAAYBAADFAwAABgEAAMYDAAAGAQAAxwMAAAYBAADIAwAABgEAAMkDAAAGAQAAAiIAAAYBAAD1AwAABgEAANEDAAAGAQAA8AMAAAYBAADVAwAABgEAAPEDAAAGAQAA1gMAAAYBAACRAwAABgEAAJIDAAAGAQAAkwMAAAYBAACUAwAABgEAAJUDAAAGAQAAlgMAAAYBAACXAwAABgEAAJgDAAAGAQAAmQMAAAYBAACaAwAABgEAAJsDAAAGAQAAnAMAAAYBAACdAwAABgEAAJ4DAAAGAQAAnwMAAAYBAACgAwAABgEAAKEDAAAGAQAA9AMAAAYBAACjAwAABgEAAKQDAAAGAQAApQMAAAYBAACmAwAABgEAAKcDAAAGAQAAqAMAAAYBAACpAwAABgEAAAciAAAGAQAAsQMAAAYBAACyAwAABgEAALMDAAAGAQAAtAMAAAYBAAC1AwAABgEAALYDAAAGAQAAtwMAAAYBAAC4AwAABgEAALkDAAAGAQAAugMAAAYBAAC7AwAABgEAALwDAAAGAQAAvQMAAAYBAAC+AwAABgEAAL8DAAAGAQAAwAMAAAYBAADBAwAABgEAAMIDAAAGAQAAwwMAAAYBAADEAwAABgEAAMUDAAAGAQAAxgMAAAYBAADHAwAABgEAAMgDAAAGAQAAyQMAAAYBAAACIgAABgEAAPUDAAAGAQAA0QMAAAYBAADwAwAABgEAANUDAAAGAQAA8QMAAAYBAADWAwAABgEAAJEDAAAGAQAAkgMAAAYBAACTAwAABgEAAJQDAAAGAQAAlQMAAAYBAACWAwAABgEAAJcDAAAGAQAAmAMAAAYBAACZAwAABgEAAJoDAAAGAQAAmwMAAAYBAACcAwAABgEAAJ0DAAAGAQAAngMAAAYBAACfAwAABgEAAKADAAAGAQAAoQMAAAYBAAD0AwAABgEAAKMDAAAGAQAApAMAAAYBAAClAwAABgEAAKYDAAAGAQAApwMAAAYBAACoAwAABgEAAKkDAAAGAQAAByIAAAYBAACxAwAABgEAALIDAAAGAQAAswMAAAYBAAC0AwAABgEAALUDAAAGAQAAtgMAAAYBAAC3AwAABgEAALgDAAAGAQAAuQMAAAYBAAC6AwAABgEAALsDAAAGAQAAvAMAAAYBAAC9AwAABgEAAL4DAAAGAQAAvwMAAAYBAADAAwAABgEAAMEDAAAGAQAAwgMAAAYBAADDAwAABgEAAMQDAAAGAQAAxQMAAAYBAADGAwAABgEAAMcDAAAGAQAAyAMAAAYBAADJAwAABgEAAAIiAAAGAQAA9QMAAAYBAADRAwAABgEAAPADAAAGAQAA1QMAAAYBAADxAwAABgEAANYDAAAGAQAAkQMAAAYBAACSAwAABgEAAJMDAAAGAQAAlAMAAAYBAACVAwAABgEAAJYDAAAGAQAAlwMAAAYBAACYAwAABgEAAJkDAAAGAQAAmgMAAAYBAACbAwAABgEAAJwDAAAGAQAAnQMAAAYBAACeAwAABgEAAJ8DAAAGAQAAoAMAAAYBAAChAwAABgEAAPQDAAAGAQAAowMAAAYBAACkAwAABgEAAKUDAAAGAQAApgMAAAYBAACnAwAABgEAAKgDAAAGAQAAqQMAAAYBAAAHIgAABgEAALEDAAAGAQAAsgMAAAYBAACzAwAABgEAALQDAAAGAQAAtQMAAAYBAAC2AwAABgEAALcDAAAGAQAAuAMAAAYBAAC5AwAABgEAALoDAAAGAQAAuwMAAAYBAAC8AwAABgEAAL0DAAAGAQAAvgMAAAYBAAC/AwAABgEAAMADAAAGAQAAwQMAAAYBAADCAwAABgEAAMMDAAAGAQAAxAMAAAYBAADFAwAABgEAAMYDAAAGAQAAxwMAAAYBAADIAwAABgEAAMkDAAAGAQAAAiIAAAYBAAD1AwAABgEAANEDAAAGAQAA8AMAAAYBAADVAwAABgEAAPEDAAAGAQAA1gMAAAYBAADcAwAABgEAAN0DAAAGAQAAMAAAAAYBAAAxAAAABgEAADIAAAAGAQAAMwAAAAYBAAA0AAAABgEAADUAAAAGAQAANgAAAAYBAAA3AAAABgEAADgAAAAGAQAAOQAAAAYBAAAwAAAABgEAADEAAAAGAQAAMgAAAAYBAAAzAAAABgEAADQAAAAGAQAANQAAAAYBAAA2AAAABgEAADcAAAAGAQAAOAAAAAYBAAA5AAAABgEAADAAAAAGAQAAMQAAAAYBAAAyAAAABgEAADMAAAAGAQAANAAAAAYBAAA1AAAABgEAADYAAAAGAQAANwAAAAYBAAA4AAAABgEAADkAAAAGAQAAMAAAAAYBAAAxAAAABgEAADIAAAAGAQAAMwAAAAYBAAA0AAAABgEAADUAAAAGAQAANgAAAAYBAAA3AAAABgEAADgAAAAGAQAAOQAAAAYBAAAwAAAABgEAADEAAAAGAQAAMgAAAAYBAAAzAAAABgEAADQAAAAGAQAANQAAAAYBAAA2AAAABgEAADcAAAAGAQAAOAAAAAYBAAA5AAAABgEAACcGAAAGAQAAKAYAAAYBAAAsBgAABgEAAC8GAAAGAQAASAYAAAYBAAAyBgAABgEAAC0GAAAGAQAANwYAAAYBAABKBgAABgEAAEMGAAAGAQAARAYAAAYBAABFBgAABgEAAEYGAAAGAQAAMwYAAAYBAAA5BgAABgEAAEEGAAAGAQAANQYAAAYBAABCBgAABgEAADEGAAAGAQAANAYAAAYBAAAqBgAABgEAACsGAAAGAQAALgYAAAYBAAAwBgAABgEAADYGAAAGAQAAOAYAAAYBAAA6BgAABgEAAG4GAAAGAQAAugYAAAYBAAChBgAABgEAAG8GAAAGAQAAKAYAAAYBAAAsBgAABgEAAEcGAAAGAQAALQYAAAYBAABKBgAABgEAAEMGAAAGAQAARAYAAAYBAABFBgAABgEAAEYGAAAGAQAAMwYAAAYBAAA5BgAABgEAAEEGAAAGAQAANQYAAAYBAABCBgAABgEAADQGAAAGAQAAKgYAAAYBAAArBgAABgEAAC4GAAAGAQAANgYAAAYBAAA6BgAABgEAACwGAAAGAQAALQYAAAYBAABKBgAABgEAAEQGAAAGAQAARgYAAAYBAAAzBgAABgEAADkGAAAGAQAANQYAAAYBAABCBgAABgEAADQGAAAGAQAALgYAAAYBAAA2BgAABgEAADoGAAAGAQAAugYAAAYBAABvBgAABgEAACgGAAAGAQAALAYAAAYBAABHBgAABgEAAC0GAAAGAQAANwYAAAYBAABKBgAABgEAAEMGAAAGAQAARQYAAAYBAABGBgAABgEAADMGAAAGAQAAOQYAAAYBAABBBgAABgEAADUGAAAGAQAAQgYAAAYBAAA0BgAABgEAACoGAAAGAQAAKwYAAAYBAAAuBgAABgEAADYGAAAGAQAAOAYAAAYBAAA6BgAABgEAAG4GAAAGAQAAoQYAAAYBAAAnBgAABgEAACgGAAAGAQAALAYAAAYBAAAvBgAABgEAAEcGAAAGAQAASAYAAAYBAAAyBgAABgEAAC0GAAAGAQAANwYAAAYBAABKBgAABgEAAEQGAAAGAQAARQYAAAYBAABGBgAABgEAADMGAAAGAQAAOQYAAAYBAABBBgAABgEAADUGAAAGAQAAQgYAAAYBAAAxBgAABgEAADQGAAAGAQAAKgYAAAYBAAArBgAABgEAAC4GAAAGAQAAMAYAAAYBAAA2BgAABgEAADgGAAAGAQAAOgYAAAYBAAAoBgAABgEAACwGAAAGAQAALwYAAAYBAABIBgAABgEAADIGAAAGAQAALQYAAAYBAAA3BgAABgEAAEoGAAAGAQAARAYAAAYBAABFBgAABgEAAEYGAAAGAQAAMwYAAAYBAAA5BgAABgEAAEEGAAAGAQAANQYAAAYBAABCBgAABgEAADEGAAAGAQAANAYAAAYBAAAqBgAABgEAACsGAAAGAQAALgYAAAYBAAAwBgAABgEAADYGAAAGAQAAOAYAAAYBAAA6BgAAAgIAADAAAAAuAAAAAgIAADAAAAAsAAAAAgIAADEAAAAsAAAAAgIAADIAAAAsAAAAAgIAADMAAAAsAAAAAgIAADQAAAAsAAAAAgIAADUAAAAsAAAAAgIAADYAAAAsAAAAAgIAADcAAAAsAAAAAgIAADgAAAAsAAAAAgIAADkAAAAsAAAAAgMAACgAAABBAAAAKQAAAAIDAAAoAAAAQgAAACkAAAACAwAAKAAAAEMAAAApAAAAAgMAACgAAABEAAAAKQAAAAIDAAAoAAAARQAAACkAAAACAwAAKAAAAEYAAAApAAAAAgMAACgAAABHAAAAKQAAAAIDAAAoAAAASAAAACkAAAACAwAAKAAAAEkAAAApAAAAAgMAACgAAABKAAAAKQAAAAIDAAAoAAAASwAAACkAAAACAwAAKAAAAEwAAAApAAAAAgMAACgAAABNAAAAKQAAAAIDAAAoAAAATgAAACkAAAACAwAAKAAAAE8AAAApAAAAAgMAACgAAABQAAAAKQAAAAIDAAAoAAAAUQAAACkAAAACAwAAKAAAAFIAAAApAAAAAgMAACgAAABTAAAAKQAAAAIDAAAoAAAAVAAAACkAAAACAwAAKAAAAFUAAAApAAAAAgMAACgAAABWAAAAKQAAAAIDAAAoAAAAVwAAACkAAAACAwAAKAAAAFgAAAApAAAAAgMAACgAAABZAAAAKQAAAAIDAAAoAAAAWgAAACkAAAACAwAAFDAAAFMAAAAVMAAABwEAAEMAAAAHAQAAUgAAAAcCAABDAAAARAAAAAcCAABXAAAAWgAAAAoBAABBAAAACgEAAEIAAAAKAQAAQwAAAAoBAABEAAAACgEAAEUAAAAKAQAARgAAAAoBAABHAAAACgEAAEgAAAAKAQAASQAAAAoBAABKAAAACgEAAEsAAAAKAQAATAAAAAoBAABNAAAACgEAAE4AAAAKAQAATwAAAAoBAABQAAAACgEAAFEAAAAKAQAAUgAAAAoBAABTAAAACgEAAFQAAAAKAQAAVQAAAAoBAABWAAAACgEAAFcAAAAKAQAAWAAAAAoBAABZAAAACgEAAFoAAAAKAgAASAAAAFYAAAAKAgAATQAA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AAAAAAAAAAAAADs8PQAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9AQUJDREVGR0hJSktMAAAAAAAAAAAAAAAAAAAATQAAAAAAAAAAAAAAAAAAAAAATk8AAABQAABRAFIAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRVAAAAAFZXWFlaW1xdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeXwAAAABgYWIAAAAAAAAAAAAAAAAAAAAAAABjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVmZ2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALEEAAAAAAAAAAAAAAAAAAC0BAAAAAC3BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6BL0EwATDBMYEyQTMBM8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANIE1QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYBNsEAADeBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhBAAAAADkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5wTqBO0EAAAAAPAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8wQAAAAA9gT5BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwE/wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQgFCwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARBQAAAAAAAAAAAAAAABQFFwUAABoFHQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBSMFJgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApBQAALAUvBTIFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7BT4FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMFAAAAAAAAAAAAAAAAAAAAAAAARgUAAAAAAAAAAEkFAAAAAAAAAABMBQAAAAAAAAAATwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSBQAAAAAAAAAAAAAAAAAAAAAAAFUFAABYBVsFXgVhBWQFAAAAAAAAAAAAAAAAAABnBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqBQAAAAAAAAAAAAAAAAAAAAAAAG0FAAAAAAAAAABwBQAAAAAAAAAAcwUAAAAAAAAAAHYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzD/cP+g8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/g8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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E6kTrhOzE7gTvRPCE8cTzBPRE9YT3hMAAOUT6RPtE/ET9RP5E/0TARQFFAkUDRQRFBUUGRQdFCEUJRQpFC0UMRQ1FDkUPRRBFEUUSRRNFFEUVRRZFF0UYRRlFGkUbRRxFHUUdxR5FHsUAAAAAAAAAAAAAAAAAAAAAH0UgRSEFIcUihSNFJAUkxSWFJkUnBSfFKIUpRSoFKsUrhSwFLIUtBS2FLgUuhS8FL4UwBTCFMQUxhTIFMoUzRTQFNMU1hTZFNwU3xTiFOUU6BTrFO4U8RT0FPoU/xQAAAIVBBUGFQgVChUMFQ4VEBUSFRQVFhUYFRoVHBUeFSAVIhUkFSYVKBUqFSwVLhUwFTIVNBU2FTgVOhU8FT4VQBVCFUQVRhVIFUoVTBVOFVAVUhVUFVYVWBVaFVwVXhVgFWIVZBVnFWoVbRVwFXMVdhV5FXwVfxWCFYUViBWLFY4VkRWUFZcVmhWdFaAVoxWmFakVrBWwFbQVuBW7Fb8VwhXGFcgVyhXMFc4V0BXSFdQV1hXYFdoV3BXeFeAV4hXkFeYV6BXqFewV7hXwFfIV9BX2FfgV+hX8Ff4VABYCFgQWBhYIFgoWDBYOFhAWEhYUFhYWGBYaFhwWHhYgFiIWJBYnFiwWMRY2FjoWPxZDFkcWTRZSFlYWWhZeFmMWaBZsFnAWcxZ3FnwWgRaEFooWkRaXFpsWoRanFqwWsBa0FrgWvRbDFsgWzBbQFtQW1xbaFt0W4BbkFugW7hbyFvcW/RYBFwQXBxcNFxIXGBccFyIXJRcpFy0XMRc1FzkXPhdCF0UXSRdNF1EXVhdaF14XYhdoF20XcBd2F3kXfheDF4cXixePF5QXlxebF6AXoxepF60XsBezF7YXuRe8F78XwhfFF8gXyxfPF9MX1xfbF98X4xfnF+sX7xfzF/cX+xf/FwMYBxgLGA4YERgVGBgYGxgeGCIYJhgpGCwYLxgyGDUYOhg9GEAYQxhGGEkYTBhPGFIYVhhbGF4YYRhkGGcYahhtGHAYdBh4GHwYgBiDGIYYiRiMGI8YkhiVGJgYmxieGKIYphipGK0YsRi1GLgYvBjAGMUYyBjMGNAY1BjYGN4Y5RjoGOsY7hjxGPQY9xj6GP0YABkDGQYZCRkMGQ8ZEhkVGRgZGxkgGSMZJhkpGS4ZMhk1GTgZOxk+GUEZRBlHGUoZTRlQGVQZVxla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H9If1R/YH9sf3h/hH+Qf5x/qH+0f8B/zH/Yf+R/8H/8fAiAFIAggCyAOIBEgFCAXIBogHSAgICMgJiApICwgLyAyIDUgOCA7ID4gQSBEIEcgSiBNIFAgUyBWIFkgXCBfIGIgZSBoIGsgbiBxIHQgdyB6IH0ggCCDIIYgiSCMII8gkiCVIJggnCCgIKQgqCCsILAgsyC2ILkgvCC/IMIgxSDIIMsgziDRINQg1yDaIN0g4CDjIOYg6SDsIO8g8iD1IPgg+yD+IAEhBCEHIQohDSEQIRMhFiEZIRwhHyEiISUhKCErIS4hMSE0ITchOiE9IUAhQyFGIUkhTCFPIVIhVSFYIVshXiFhIWQhZyFqIW0hcCFzIXYheSF8IX8hgiGFIYghiyGOIZEhlCGXIZohnSGgIaMhpiGpIawhryGyIbUhuCG7Ib4hwSHEIcchyiHNIdAh0yHWIdkh3CHfIeIh5SHoIesh7iHxIfQh9yH6If0hACIDIgYiCSIMIg8iEiIVIhgiGyIeIiEiJCInIioiLSIwIjMiNiI5IjwiPyJCIkUiSCJLIk4iUSJUIlciWiJeImIiZiJpImwibyJyInUieCJ7In4igSKEIociiiKNIpAikyKWIpkinCKfIqIipSKoIqsiriKxIrQityK6Ir0iwCLDIsYiySLMIs8i0iLVItgi2yLeIuEi5CLnIuoi7SLwIvMi9iL5Ivwi/yICIwUjCCMLIw4jESMUIxcjGiMdIyAjIyMmIykjLCMvIzIjNSM4IzsjPiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBI0UjSSNNI1EjVSNZI10jYSNlI2kjbSNxI3UjeSN9I4EjhSOJI40jkSOVI5kjnSOhI6UjqSOtI7EjtSO5I70jwSPFI8kjzSPRI9Uj2SPdI+Ej5SPpI+0j8SP1I/kj/SMBJAUkCSQNJBEkFSQZJB0kISQlJCkkLSQxJDUkOSQ9JAAAAABBJEUkSSRNJFEkVSRZJF0kYSRlJGkkbSRxJHUkeSR9JIEkhSSJJI0kkSSVJJkknSShJKUkqSStJLEktSS5JL0kwSTFJMkkzSTRJNUk2STdJOEk5STpJO0k8ST1JPkk/SQBJQUlCSUNJRElFSUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFopXSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYCljKQAAZikAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpKWwpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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Lbktuy29Lb8twS3DLcUtxy3JLcstzS3PLdEt0y3VLdct2S3bLd0t3y3hLeMt5S3nLekt6y3tLe8t8S3zLfUt9y35Lfst/S3/LQEuAy4FLgcuCS4LLg0uDy4RLhMuFS4XLhkuGy4dLh8uIS4jLiUuJy4pLisuLS4vLjEuMy41LjcuOS47Lj0uPy5BLkMuRS5HLkkuSy5NLk8uUS5TLlUuVy5ZLlsuXS5fLmEuYy5lLmcuaS5rLm0uby5xLnMudS53Lnkuey59Ln8ugS6DLoUuhy6JLosujS6PLpEuky6VLpcumS6bLp0uny6hLqMupS6nLqkuqy6tLq8usS6zLgAAAAC1LrcuuS67Lr0uvy7BLsMuxS7HLskuyy7NLs8u0S7TLtUu1y7ZLtsu3S7fLuEu4y7lLucu6S7rLu0u7y7xLvMu9S73Lvku+y79Lv8uAS8DLwUvBy8JLwsvDS8PLxEvEy8VLxcvGS8bLx0vHy8hLyMvJS8nLykvKy8tLy8vMS8zLzUvNy85LzsvPS8/L0EvQy9FL0cvSS9LL00vTy9RL1MvVS9XL1kvWy9dL18vYS9jL2UvZy9pL2svbS9vL3Evcy91L3cveS97L30vfy+BL4MvhS+HL4kviy+NL48vkS+TL5Uvly+ZL5svnS+fL6Evoy+lL6cvqS+rL60vry+xL7MvtS+3L7kvuy+9L78vwS/DL8Uvxy/JL8svzS/PL9Ev0y/VL9cv2S/bL90v3y/hL+Mv5S/nL+kv6y/tL+8v8S/zL/Uv9y/5L/sv/S//LwEwAzAFMAcwCTALMA0wDzARMBMwFTAXMBkwGzAdMB8wITAjMCUwJzApMCswLTAvMDEwMzA1MDcwOTA7MD0wPzBBMEMwRTBHMEkwSzBNME8wUTBTMFUwVzBZMFswXTBfMGEwYzBlMGcwaTBrMG0wbzBxMHMwdTB3MHkwezB9MH8wgTCDMIUwhzCJMIswjTCPMJEwkzCVMJcwmTCbMJ0wnzChMKMwpTCnMKkwqzCtMK8wsTCzMLUwtzC5MLswvTC/MMEwwzDFMMcwyTDLMM0wzzDRMNMw1TDXMNkw2zDdMN8w4TDjMOUw5zDpMOsw7TDvMPEw8zD1MPcw+TD7MAAAAAD9MP8wATEDMQUxBzEJMQsxDTEPMRExEzEVMRcxGTEbMR0xHzEhMSMxJTEnMSkxKzEtMS8xMTEz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NN003zThNOM05TTnNOk06zTtNO808TTzNPU09zT5NPs0/TT/NAE1AzUFNQc1CTULNQ01DzURNRM1FTUXNRk1GzUdNR81ITUjNSU1JzUpNSs1LTUvNTE1MzU1NTc1OTU7NT01PzVBNUM1RTVHNUk1SzVNNU81UTVTNVU1VzVZNVs1XTVfNWE1YzVlNWc1aTVrNW01bzVxNXM1dTV3NXk1ezV9NX81gTWDNYU1hzWJNYs1jTWPNZE1kzWVNZc1mTWbNZ01nzWhNaM1pTWnNak1qzWtNa81sTWzNbU1tzW5Nbs1vTW/NcE1wzXFNcc1yTXLNc01zzXRNdM11TXXNdk12zXdNd814TXjNeU15zXpNes17TXvNfE18zX1Nfc1+TX7Nf01/zUBNgM2BTYHNgk2CzYNNg82ETYTNhU2FzYZNhs2HTYfNiE2IzYlNic2KTYrNi02LzYxNjM2NTY3Njk2OzY9Nj82QTZDNkU2RzZJNks2TTZPNlE2UzZVNlc2WTZbNl02XzZhNmM2ZTZnNmk2azZtNm82cTZzNnU2dzZ5Nns2fTZ/NoE2gzaFNoc2iTaLNo02jzaRNpM2lTaXNpk2mzadNp82oTajNqU2pzapNqs2rTavNrE2sza1Nrc2uTa7Nr02vzbBNsM2xTbHNsk2yzbNNs820TbTNtU21zbZNts23TbfNuE24zblNuc26TbrNu027zbxNvM29Tb3Nvk2+zb9Nv82ATcDNwU3BzcJNws3DTcPNxE3EzcVNxc3GTcbNx03HzchNyM3JTcnNyk3KzctNy83MTczNzU3Nzc5Nzs3PTc/N0E3QzdFN0c3STdLN003TzdRN1M3VTdXN1k3WzddN183YTdjN2U3ZzdpN2s3bTdvN3E3czd1N3c3eTd7N303fzeBN4M3hTeHN4k3izeNN483kTeTN5U3lzeZN5s3nTefN6E3ozelN6c3qTerN603rzexN7M3tTe3N7k3uze9N783wTfDN8U3xzfJN8s3zTfPN9E30zfVN9c32TfbN9033zfhN+M35TfnN+k36zftN+838TfzN/U39zf5N/s3/Tf/NwE4AzgFOAc4CTgLOA04DzgROBM4FTgXOBk4GzgdOB84ITgjOCU4JzgpOCs4LTgvODE4Mzg1ODc4OTg7OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaQBoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAggBoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaACDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlABoAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAaACrAKwArQCuAK8AsACxALIAswC0ALUAaAC2ALcAaAC4ALkAugC7AGgAvAC9AL4AvwDAAMEAaABoAMIAwwDEAMUAaADGAGgAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoANMA1ADVANYA1wDYANkA2gDbANwAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaADdAN4A3wDgAOEAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaADiAOMA5ADlAOYA5wDoAOkAaABoAGgAaADqAOsA7ADtAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAO4A7wDwAPEA8gDzAPQA9QD2APcAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgA+AD5APoA+wD8AP0A/gBoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaAD/AAABaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAAQECAQMBBAEFAQYBBwEIAQkBaAAKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBaABoAGgAaABoAGgAaABoABgBaAAZAWgAGgFoAGgAGwFoAGgAaABoAGgAaABoAGgAaAAcAR0BHgEfAWgAaABoAGgAaAAgASEBIgFoACMBJAFoAGgAJQEmAScBKAEpAWgAKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAPAE9AT4BPwFAAWgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEEBaABCAUMBaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABEAUUBRgFHAUgBSQFKAUsBaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABo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YgGr22IBwbvbYgHLoNtiAcmq22IBvdtiAZDbYgHmXdtiAcYW22ISA0HbYhIDRttiEgNF22ISA+qR22ISA/u422ISA9NM22ISA/px22ISA0nbYhIDSttiyOoBqdtiyOoBpttiyOoBwbvbYgIBndtiAgHWNttiAgH7FNtiAgHH99tiAgG022ICAajbYgIBrNtiAgGm22ICAavbYgPXd9tiA93o22IDzcHbYgPa8Nti6a9N22LQCE3bYhG/TdtiEWzbYhFt22IRi9tiEYnbYhGZ22IRrdtiEbXbYhGw22IRuDXb1wGdNdvXAcDcNdvXAdY2NdvXAcWkNdvXAb0129cBqTXb1wHH9zXb1wHHLDXb1wGrNdvXAag129cB0ds129cBrDXb1wHpRDXb1wHDuTXb1wGQNdvXAdBZNdvXAd2+NdvXAcWZNdvXAbQ129cBQTXb1wFGNdvXAeqRNdvXAeqCNdvXAUU129cB00w129cBSjXb1wHElDXb1wFJNdvXAfpvNdvXAfu4NdvXAcZINdvXAcZHNdvXAcZGNdvXAcZFNdvXAcZE1kI12sUBiNBZ1kI12sUBg9BZ1kI12sUBiJ3WQjXaxQGIwNzWQjXaxQGI1jbWQjXaxQGDndZCNdrFAYPA3NZCNdrFAYPWNtZCNdrFAYjFpNZCNdrFAYi91kI12sUBiKnWQjXaxQGDxaTWQjXaxQGDvdZCNdrFAYOp1kI12sUBiMf31kI12sUBiMcs1kI12sUBiLTWQjXaxQGDx/fWQjXaxQGDxyzWQjXaxQGDtNZCNdrFAYio1kI12sUBiNHb1kI12sUBiKzWQjXaxQGDqNZCNdrFAYPR29ZCNdrFAYOs1kI12sUBiOlE1kI12sUBiMO51kI12sUBiKvWQjXaxQGD6UTWQjXaxQGDw7nWQjXaxQGDq9ZCNdrFAYiQ1kI12sUBiO3x1kI12sUBiPln1kI12sUBg5DWQjXaxQGD7fHWQjXaxQGD+WfWQjXaxQGI3J3WQjXaxQGIwLnWQjXaxQGD3J3WQjXaxQGDwLnWQjXaxQGIyPbWQjXaxQGDyPbWQjXaxRIDEssX1kI12sUSA/ya1kI12sUSA9+q1kI12sUSA0XWQjXaxRIDxBrWQjXaxRIDSdZCNdrFEgP75dZCNdrFEgNK1kI12sUSA9Op1kI12sUSA8SU1kI12sUSA/pR1kI1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I0r5DRIDRfkNEgN+J8qxvfkNdwPWOPkNdwPmU/kN0pD5DdKM+Q0Q+HXW+diQ+Q0Q+HXRgfkNEPh13pj5DRD4ddKQ258BndufAd1G258B3b7bnwHny9ufAebv258B1jbbnwH3cNufAfbR258B3wTbnwHUWNufAcf3258BxyzbnwHt8dufAbTbnwGo258B0WbbnwHR29ufAelE258B6LPbnwH5Z9ufAfhc258BrNufAdgC258BxaTbnwHFmdufAer3258BqdufAabbnwGr258BkNufAeVP258Bw7nbnwG9258By6DbnwHBu9ufAUHbn8jqAanbn8jqAabbnxID/JrbnxIDRtufEgNK258SA9NM258SA0XbnxIDxBrbnxIDSdufdwPefdufdwPak9ufdwOq2593A9cv2593A9Li2593A5Tbn3cDyCfbn3cD1Dzbn3cD3jnbnwPPhtufA9SA25/Qkcfy25/QkdRIxr/H8tuf0JH22tuf0JHFkfba25/QkcWQ258Rv03bnxFs258RbdufEYvbnxGJ258RmdufEa3bnxG1258RsNufEbjbnwHFgNufAcV0258B7ZLTbvMoEb9N027zKBFs027zKBFt027zKBGL027zKBGJ027zKBGZ027zKBGt027zKBG1027zKBGw027zKBG4027zKAGr027zKAH6hNNu8ygB+8nTbvMoAftH027zKAH7nNNu8ygB3GXTbvMoAfx0027zKAH8ddNu8ygB/HPTbvMoAfxt027zKAHbetNu8ygB3yjTbvMoAd+r027zKAHfPtNu8ygB3zHTbvMoAdrL027zKAHEnNNu8ygBxJrTbvMoAcRP027zKAHEEdNu8ygB29bTbvMoAeoO027zKAHqlNNu8ygB6j3TbvMoAenw027zKAHbE9Nu8ygB0w7TbvMoAdOl027zKAHS/9Nu8ygB03zTbvMo14zFXdNu8yjnxsVe027zKNeGxV7TbvMozz3TbvMo0dnTbvMo+8DTbvMo0JHXgtNu8yjQkTbXgioCAc5sw5YqAgHa9O1lKgIB1slKKgIBwUzp7CoCAcfDx4wqAgHG2MeMKgIBx8Pl8DkqAgHHw8BfKgIBxGjEfGTXjQYB+1Fk140GAfkzZNeNBgHnrWTXjQYB7Glk140GAeo9ZNeNBgHDLmTXjQYBv1Bk140GAce8ZNeNBgHfhmTXjQYB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eljQFO2r5NBvepvQFO2rw4RveljQFO2rw4RvepuPGLtveo+bGDLluW96j1gYMttsb3pYjxi7b3qbjxjbyG96j5sYLeW5b3qPWBgt22xveliPGNvIb3qbhBi7b3qEmxgy5blveoRYGDLbbG96WIQYu296m4QY28hveoSbGC3luW96hFgYLdtsb3pYhBjbyG96m1EYu296UZsYMuW5b3qEWBgyj9tsb3qPWBgyhNtsb3pRWBgy22xveo+bGDKE5blveoSbGDKP5blvelhRGLtveptRGNvIb3pRmxgt5blveoRYGC2P22xveo9YGC2E22xvelFYGC3bbG96j5sYLYTluW96hJsYLY/luW96WFEY28hvepuPGOTQb3otWBgyj9tsb3oyWBgtj9tsb3qPmxjk0eW5b3qPWBjk0dtsb3oymxgtj+W5b3otmxgyj+W5b3pYjxjk0G96m4QY5NBvei1YGDKE22xvejJYGC2E22xveoSbGOTR5blveoRYGOTR22xvejKbGC2E5blvei2bGDKE5blveliEGOTQb3qbURjk0G96LVgYMlHbbG96MlgYLVHbbG96UZsY5NHluW96hFgYj+TR22xveo9YGITk0dtsb3pRWBjk0dtsb3othFgYMo/bbG96MoRYGC2P22xvei2PWBgyhNtsb3oyj1gYLYTbbG96j5sYhOTR5blveoSbGI/k0eW5b3oymxgtUeW5b3otmxgyUeW5b3pYURjk0G96mzbtq+TQb3pYNu2r5NBveps27avDhG96WDbtq8OEb3o25NBvejbDhG96j8qlGDLrWW96jzYYMsqkb3o2jxi7b3qPyqUYLetZb3qPNhgtyqRvejaPGNvIb3qEyqUYMutZb3qENhgyyqRvejaEGLtveoTKpRgt61lveoQ2GC3KpG96NoQY28hvelHKpRgy61lvelE2GDLKpG96NlEYu296UcqlGC3rWW96UTYYLcqkb3o2URjbyG96j8qlGOTR61lveo82GOTRyqRvejaPGOTQb3qEyqUY5NHrWW96hDYY5NHKpG96NoQY5NBvelHKpRjk0etZb3pRNhjk0cqkb3o2URjk0G96m/rfjxi7b3qb+t+PGNvIb3qb+t+EGNvIb3qb+t+EGLtvepvs+nQydm7byG96m+z6dC12brtvepvs+u6qb3qb28hvepvESW96m7tvepvrT296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ROubQ0TsGkNE69pDROxZQ0TrZUNE6+RDROukQ0TsI0NE64RDROwDQ0Trw0NE7EJDROt0Q0Tr80NE67NDROwyQ0Trk0NE7BJDROvSQ0TsUUNE62xDROvrQ0Trq0NE7CpDROuLQ0TsCkNE68pDROxJQ0Tre0NE6/pDROu6Q0TsOUNE65pDROwZQ0Tr2UNE7FhDROthQ0Tr4ENE66BDROwfQ0TrgENE6/9DROu/Q0TsPkNE63BDROvvQ0Trr0NE7C5DROuPQ0TsDkNE685DROxNQ0TraENE6+dDROunQ0TsJkNE64dDROwGQ0TrxkNE7EVDROt3Q0Tr9kNE67ZDROw1Q0TrlkNE7BVDROvVQ0TsVENE62RDROvjQ0Tro0NE7CJDROuDQ0TsAkNE68JDROxBQ0Trc0NE6/JDROuyQ0TsMUNE65JDROwRQ0Tr0UNE7FBDROtrQ0Tr6kNE66pDROwpQ0TrikNE7AlDROvJQ0TsSENE63pDROv5Q0TruUNE7DhDROuZQ0TsGENE69hDROxXQ0TrX0NE695DROueQ0TsHUNE635DROv9Q0TrvUNE7DxDROtuQ0Tr7UNE661DROwsQ0TrjUNE7AxDROvMQ0TsS0NE62ZDROvlQ0TrpUNE7CRDROuFQ0TsBENE68RDROxDQ0TrdUNE6/RDROu0Q0TsM0NE65RDROwTQ0Tr00NE7FJDROtiQ0Tr4UNE66FDROwgQ0TrgUNE7ABDROvAQ0TsP0NE63FDROvwQ0TrsENE7C9DROuQQ0TsD0NE689DROxOQ0TraUNE6+hDROuoQ0TsJ0NE64hDROwHQ0Trx0NE7EZDROt4Q0Tr90NE67dDROw2Q0Trl0NE7BZDROvWQ0TsVUNE62BDROvfQ0Trn0NE7B5DROt/Q0Tr/kNE675DROw9Q0Trb0NE6+5DROuuQ0TsLUNE645DROwNQ0TrzUNE7ExDROtnQ0Tr5kNE66ZDROwlQ0TrhkNE7AVDROvFQ0TsRENE63ZDROv1Q0TrtUNE7DRDROuVQ0TsFENE69RDROxTQ0TrY0NE6+JDROuiQ0TsIUNE64JDROwBQ0TrwUNE7EBDROtyQ0Tr8UNE67FDROwwQ0TrkUNE7BBDROvQQ0TsT0NE62pDROvpQ0TrqUNE7ChDROuJQ0TsCENE68hDROxHQ0TreUNE6/hDROu4Q0TsN0NE65hD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CwXuygsF7r4LBfIzCwXu3gsF9tULBfb6CwX22wsF7msLBe5pCwXulAsF7oYLBe5xCwXugQsF7lMLBe5SCwXuYAsF7loLBe5UCwXuVgsFvtELBb7QCwW+1wsFvtILBb7UCwW+0wsFvtYLBb7VCwW+3QsFvtwLBb7gCwW+3gsFvs0LBb7PCwW+zgsFvtgLBb7bCwW+2QsFvsYLBb7KCwW+yQsFvscLBb7ICwW+wAsFvr8LBb7FCwW+wwsFvsELBb7CCwXUFAsF1BMLBdQZCwXUFQsF1BYLBdQYCwXUFwsF1B4LBdQdCwXUIQsF1CALBdQNCwXUDgsF1BELBdQSCwXUGgsF1BwLBdQICwXUEAsF1AwLBdQJCwXUCgsF1AMLBdQCCwXUBwsF1AYLBdQECwXUBQsFyoULBa0LBcrZCwXKiQsFysULBcrICwXKxgsFzXULBc1lCwW9CwXNfQsFyLcLBci5CwXIuAsFygMLBcn4CwXKKQsFygkLBcvpCwXNPwsFzAgLBcieCwXImwsFyP8LBci2CwXIogsFyKoLBcg1CwXINAsFyHsLBcg9CwXINwsFyDwLBcmDCwXJggsFyYkLBcmECwXJhgsFyYgLBcmHCwXJkgsFyZALBcmqCwXJkwsFyX4LBcl9CwXJgQsFyX8LBcmMCwXJjwsFyY0LBcl6CwXJeAsFyXwLBcl7CwXJcwsFyXILBcl3CwXJdgsFyXQLBcl1CwW/QgsFv0ELBb9HCwW/RAsFvy0LBb8vCwW/LgsFvzILBb8xCwW/NgsFvzMLBb87CwW/OgsFvz4LBb88CwW/KQsFvygLBb8wCwW/LAsFvyoLBb8rCwW/IQsFvyALBb8lCwW/JAsFvyILBb8jCwXzVQsF81ELBfbRCwX2wwsF8vwLBfL7CwXy/gsF8v0LBfMLCwXzCgsF8xQLBfMPCwXzNgsF8zMLBfNPCwXzPgsF8vYLBfMACwXy+gsF8vcLBfL5CwXy7wsF8u4LBfLzCwXy8gsF8vALBfLxCwXOZAsFzmgLBc5SCwXOUwsFzlcLBc5WCwXOWgsFzlgLBc5eCwXOXQsFzmMLBc5fCwXOTgsFzkwLBc5UCwXOUQsFzk8LBc5QCwXORwsFzkYLBc5LCwXOSgsFzkgLBc5JCwXU5QsF1OQLBdTnCwXU5gsF1NwLBdTeCwXU3QsF1OALBdTfCwXU4wsF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X2gDyfH3R2gD90jDJWgDNvdIwyVoA/dIbWgD90iLaAP3SPpfaAPQf2jnp+jaaPcwaOXDaAPKzWje/NNmaAH6UWgSA/pR3gPbexG/Td4D23sRbN4D23sRbd4D23sRi94D23sRid4D23sRmd4D23sRrd4D23sRtd4D23sRsN4D23sRuN4D23sBnd4D23sB3b7eA9t7AefL3gPbewHWNt4D23sBvd4D23sBy6DeA9t7Ab973gPbewHUWN4D23sBx/feA9t7AeSF3gPbewG03gPbewGo3gPbewHR294D23sBrN4D23sB7fHeA9t7Afln3gPbewGm3gPbewGp3gPbewGr3gPbewHBu94D23sBxyzeA9t7AZDeA9t7AcO53gPbewH3cN4D23sBQd4D23sB04veA9t7AUbeA9t7AdNM3gPbexLElN4D23sSSd4D23sSRd4D23sS6pHeA9t7EkreA9t7o9FS3gPbe6P3V94D23uj91jRUt4D23sD7mTeA9t7A8rhzz4Bnc8+AefLzz4B1jbPPgHH988+Ae3xzz4BtM8+AajPPgH5Z88+AazPPgH3cM8+Ad8Ezz4B1FjPPgG9zz4Bps8+AavPPgGpzz4BwbvPPgGQzz4B2PjPPgHWIc8+AdaUzz4B1DXPPgFBzz4SA0bPPhIDRc8+EgNJzz4SA/u4zz4SA0rPPhID+nHPPhID6cnPPhID6q3PPncD1jjPPncD1y/PPncDlM8+dwPmU88+wyXPPs0xTR6Sxp8eksaeHpLGnB6SxqEeks7lHpLO1R6SztAeks7SHpLO4h6Sztseks7UHpLO5x6SztYeks7pHpLO5h6S2DcektguHpLYMR6S0ZEektGcHpLRnR6SyZoekt+3HpLfvh6SyaUeksmYHpLRxx6S5WkeksmV3vQD0oXe9AP29970A9ve3vQDwUXe9AFB3vQB5CzeB970AUbe9AHfqt70AUXe9AHS0/bZ3vQB1jfbs970AdY327TPft70AUne9AH7uN70AUre9AGd3vQB3nPNd970Ad5z113e9AHny970AefM113e9AHWNt70Afdw3vQB93HXXd70Ad8E3vQB1FnXXd70Ad8F2V/e9AHUWN70AcWA3vQBxYHZX970Ae2S3vQB7ZPZX970Adb5113e9AHH9970Acf4113e9AHt8d70Ae3y2V/e9AG03vQBqN70AdLT113e9AH5Z970Aflo113e9AGs3vQBqd70Aabe9AHPtfvC3vQBq970AcG73vQBzcrXXd70Ac3K2V/e9AG93vQBkN70A/b4x1/e9BIDx6re9BIDxk/e9BIDwPre9BIDwPvYs970EgPIy970EgPIzNim3vQSA8fE3vQSA+y511ze9BID0gfe9HcD3dve9HcD0hbe9HcD92He9NKT3vQtzyPe9DLPI9700sf7Sd700sfZdN700sfavt700sfBPt700sfSlN700sfbUN700sfat9700sf78N700sf78fvw3vTSx9Fv3vSY0sfRb9700o/e9BG/Td70EWze9BFt3vQRi970EYne9BGZ3vQRrd70EbXe9BGw3vQRuN700sfGesVF3vTSx98kTwHLhuc2TwHLhvbRTwHLht7hTwHLhtVCTwHLhviZTwPLhs1nTzsBy4bPUE8BNdxH1FhPATXcR+lETwE13Efny08BNdxH5zZPATXcR98ETwE13Efe4U8BNdxH7ZJPATXcR+2CTwE13EfVQk813EcRv01PNdxHEWxPNdxHEW1PNdxHEYtPNdxHEYlPNdxHEZlPNdxHEa1PNdxHEbVPNdxHEbBPNdxHEbhPATXcR9sxTwE13Eft8U8BNdxH7RdPATXcR/lnTwE13Ef4mfbKAUH2ygFG9soBRfbKAUn2ygH7uPbKAUr2ygGd9soB3b72ygHny/bKAec29soB1dv2ygHWNvbKAfbR9soB8zL2ygHfBPbKAd7h9soB1c/2ygHV0vbKAdXQ9soBx/f2ygHHLPbKAe3x9soB7Rf2ygHUg/bKAbT2ygHtkvbKAaj2ygHQ8/bKAdHb9soB+Wf2ygH4mfbKAdd/9soBrPbKAfkD9soBqfbKAab2ygGr9soBw7n2ygHJqvbKAb32ygGQ9soSA/ya9soSA0b2yhID36r2yhID6nv2yhIDRfbKEgPTi/bKEgNK9soSA/u49soSA/px9soSA8SU9sp3A6n2yncDpvbKdwOr9sp3A8G79soBNN599soBNOgO9soBNNY49sp3AzTWOPbKATT20/bKATTIJ/bKATTXL/bKATTS4vbKATTAn/bKATSU9soBNKr2ygE0ya32yncDNNqT9sp3AzTmU/bKEb9N9soRbPbKEW32yhGL9soRifbKEZn2yhGt9soRtfbKEbD2yhG49srQkcnU9srQke3B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4YQMD+GDDA/hggwP4YEMD+GADA/hfwwP4X4MD+F9DA/hfAwP4XsMD+F6DA/heQwP4XgMD+F3DA/hdgwP4XUMD+F0DA/hcwwP4XIMD+FxDA/hcAwP4W8MD+FuDA/hbQwP4WwMD+FrDA/hagwP4WkMD+FoDA/hZwwP4WYMD+FlDA/hZAwP4WMMD+FiDA/hYQwP4WAMD+FfDA/hXgwP4V0MD+FcDA/hWwwP4VoMD+FZDA/hWAwP4VcMD+FWDA/hVQwP4VQMD+FTDA/hUgwP4VEMD+FQDA/hTwwP4U4MD+FNDA/hTAwP4UsMD+FKDA/hSQwP4UgMD+FHDA/hRgwP4UUMD+FEDA/hQwwP4UIMD+FBDA/hQAwP4T8MD+E+DA/hPQwP4TwMD+E7DA/hOgwP4TkMD+E4DA/hNwwP4TYMD+E1DA/hNAwP4TMMD+EyDA/hMQwP4TAMD+EvDA/hLgwP4S0MD+EsDA/hKwwP4SoMD+EpDA/hKAwP4ScMD+EmDA/hJQwP4SQMD+EjDA/hIgwP4SEMD+EgDA/hHwwP4R4MD+EdDA/hHAwP4RsMD+EaDA/hGQwP4RgMD+EXDA/hFgwP4RUMD+EUDA/hEwwP4RIMD+ERDA/hEAwP4Q8MD+EODA/hDQwP4QwMD+ELDA/hCgwP4QkMD+EIDA/hBwwP4QYMD+EFDA/hBAwP4QMMD+ECDA/hAQwP4QAMD+D/DA/g/gwP4P0MD+D8DA/g+wwP4PoMD+D5DA/g+AwP4PcMD+D2DA/g9QwP4PQMD+DzDA/g8gwP4PEMD+DwDA/g7wwP4O4MD+DtDA/g7AwP4OsMD+DqDA/g6QwP4OgMD+DnDA/g5gwP4OUMD+DkDA/g4wwP4OIMD+DhDA/g4AwP4N8MD+DeDA/g3QwP4NwMD+DbDA/g2gwP4NkMD+DYDA/g1wwP4NYMD+DVDA/g1AwP4NMMD+DSDA/g0QwP4NAMD+DPDA/gzgwP4M0MD+DMDA/gywwP4MoMD+DJDA/gyAwP4McMD+DGDA/gxQwP4MQMD+DDDA/gwgwP4MEMD+DADA/gvwwP4L4MD+C9DA/gvAwP4LsMD+C6DA/guQwP4LgMD+C3DA/gtgwP4LUMD+C0DA/gswwP4LIMD+CxDA/gsAwP4K8MD+CuDA/grQwP4KwMD+CrDA/gqgwP4KkMD+CoDA/gpwwP4KYMD+ClDA/gpAwP4KMMD+CiDA/goQwP4KAMD+CfDA/gngwP4J0MD+CcDA/gmwwP4JoMD+CZDA/gmAwP4JcMD+CWDA/glQwP4JQMD+CTDA/gkgwP4JEMD+CQDA/gjwwP4I4MD+CNDA/gjAwP4IsMD+CKDA/giQwP4IgMD+CHDA/ghgwP4IUMD+CEDA/ggwwP4IIMD+CBDA/ggAwP4H8MD+B+DA/gfQwP4HwMD+B7DA/gegwP4HkMD+B4DA/gdwwP4HYMD+B1DA/gdAwP4HMMD+ByDA/gcQwP4HAMD+BvDA/gbgwP4G0MD+BsDA/gawwP4GoMD+BpDA/gaAwP4GcMD+BmDA/gZQwP4GQMD+BjDA/gYgwP4GEMD+BgDA/gXwwP4F4MD+BdDA/gXAwP4FsMD+BaDA/gWQwP4FgMD+BXDA/gVgwP4FUMD+BUDA/gUwwP4FIMD+BRDA/gUAwP4E8MD+BODA/gTQwP4EwMD+BLDA/gSgwP4EkMD+BIDA/gRwwP4EYMD+BFDA/gRAwP4EMMD+BCDA/gQQwP4EAMD+A/DA/gPgwP4D0MD+A8DA/gOwwP4DoMD+A5DA/gOAwP4DcMD+A2DA/gNQwP4DQMD+AzDA/gMgwP4DEMD+AwDA/gLwwP4C4MD+AtDA/gLAwP4CsMD+AqDA/gKQwP4CgMD+AnDA/gJgwP4CUMD+AkDA/gIwwP4CIMD+AhDA/gIAwP4B8MD+AeDA/gHQwP4BwMD+AbDA/gGgwP4BkMD+AYDA/gFwwP4BYMD+AVDA/gFAwP4BMMD+ASDA/gEQwP4BAMD+APDA/gDgwP4A0MD+AMDA/gCwwP4AoMD+AJDA/gCAwP4AcMD+AGDA/gBQwP4AQMD+ADDA/gAgwP4AEMD+AADA/f/wwP3/4MD9/9DA/f/AwP3/sMD9/6DA/f+QwP3/gMD9/3DA/f9gwP3/UMD9/0DA/f8wwP3/IMD9/xDA/f8AwP3+8MD9/uDA/f7QwP3+wMD9/rDA/f6gwP3+kMD9/oDA/f5wwP3+YMD9/lDA/f5AwP3+MMD9/iDA/f4QwP3+AMD9/fDA/f3gwP390MD9/cDA/f2wwP39oMD9/ZDA/f2AwP39cMD9/WDA/f1QwP39QMD9/TDA/f0gwP39EMD9/QDA/fzwwP384MD9/NDA/fzAwP38sMD9/KCAIi6PIIAiLo7ggCIui0CAIi6PEIAiLo8AgCIrHO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JtHzA0Em0fMDRibR8wNFJtHzA50m0fMD3NAm0fMD58sm0fMD5pIm0fMDwNwm0fMD93Am0fMD3wQm0fMD3tkm0fMDx/cm0fMDxVom0fMD7fEm0fMD7P8m0fMD6y0m0fMDxywm0fMDqCbR8wP5ZybR8wPpRCbR8wO0JtHzA9SlJtHzA6wm0fMD2FEm0fMD14sm0fMDqSbR8wPDuSbR8wPDQibR8wOmJtHzA84/JtHzA6sm0fMDvSbR8wO/eybR8wPLoCbR8wPJqibR8wOQJtHzA/prJtHzA/pqJtHzA/ppJtHzA8C9JtHzA+3aJtHzA+3ZJtHzA/lOJtHzA/ekJtHzwRfsoCbR8x9sJtHzH20m0fMfx1om0fMfxRwm0fMf5G3tJwYBsUbtJwYBsUntJwYBsUHtJwYBsfvB7ScGAbFK7ScGAbHTTO0nBgHLI0btJwYByyNJ7ScGAcsjQe0nBgHLI/vB7ScGAcsjSu0nBgHLI9NM7ScGAfpR7ScGAdLw7ScGAcEA7ScGAcBN7ScGAeZT7ScGAdIo7ScGAfjP7ScGAcd07ScGAe1W7ScGAfNL7ScGAd7s7ScGAd4E7ScGAeeV7ScGAeqK7ScGAcOR7ScGAenO7ScGAcca7ScGAens7ScGAb9U7ScGAeni7ScGAb897ScGAen47ScGAeph7ScGAepI7ScGAeo97ScGAeou7ScGAdN57ScGAem37ScCAbFG7ScCAbFJ7ScCAbFB7ScCAbH7we0nAgGxSu0nAgGx00ztJwIByyNG7ScCAcsjSe0nAgHLI0HtJwIByyP7we0nAgHLI0rtJwIByyPTTO0nAgH6Ue0nAgHS8O0nAgHBAO0nAgHATe0nAgHmU+0nAgHSKO0nAgH4z+0nAgHHdO0nAgHtVu0nAgHzS+0nAgHe7O0nAgHeBO0nAgHnle0nAgHqiu0nAgHDke0nAgHpzu0nAgHHGu0nAgHp7O0nAgG/VO0nAgHp4u0nAgG/Pe0nAgHp+O0nAgHqYe0nAgHqSO0nAgHqPe0nAgHqLu0nAgHTee0nAgHpt8tzAdIky3MBxiPLcwHdgstzAekLy3MBxwHLcwHKKctzAciny3MB8vjLcwHAT8tzAeRqy3MB+IvLcwHtZMtzAee9y3MBwv/LcwHHB8tzAb8Ey3MB2NDLcwHemctzAcEny3MB5jzLcwHbActzAdgby3MB37HLcwHqiMtzAfqfy3MB++rLcwHTXctzAcEay3MB0wTLcwH7wctzAc6Uy3MB1HXLcwHqnMtzAfvGy3MB4/zLcwHESctzAdOny3MB00TLcwHTd8tzAfpXy3MB+tfLcwHTLctzAfuty3MB6fDLcwH6vstzAeqny3MB5ATLcwHAKdMXAfuN0xcB+WfTFwHH99MXAd8E0xcBwNzTFwHdvtMXAe1V0xcBptMXAb3TFwHLRtMXAe0X0xcB9xPTFwHny9MXAelE0xcB0FfTFwHeYNMXAdxh0xcB2CnTFwHUZdMXAcGD0xcBkNMXAanTFwFB0xcBSdMXAUbTFwFK0xcBRdMXAfya0xcB6pHTFwHTTNMXEb9N0xcRbNMXEW3TFxGL0xcRidMXEZnTFxGt0xcRtdMXEbDTFxG40xkGAUHTGQYB+7jTGQYB+7LTGQYB+8HTGQYB+AjTGQYB9tHTGQYB6oHTGQYBSdMZBgHqbdMZBgGQ0xkGAeQ+0xkGAUbTGQYBndMZBgHqgNMZBgHcgdMZBgGr0xkGAazTGQYBtNMZBgFK0xkGAdN20xkGAajTGQYB6n/TGQYBvdMZBgHLoNMZBgHH99MZBgHqftMZBgHFpNMZBgHqfdMZBgHFmdMZBgHtF9MZBgFF0xkGAcG70xkGAd2+0xkGAec20xkGAb970xkGAb9H0xkCAUHTGQIB+7jTGQIB+7LTGQIB+8HTGQIB+AjTGQIB9tHTGQIB6oHTGQIBSdMZAgHqbdMZAgGQ0xkCAeQ+0xkCAUbTGQIBndMZAgHqgNMZAgHcgdMZAgGr0xkCAazTGQIBtNMZAgFK0xkCAdN20xkCAajTGQIB6n/TGQIBvdMZAgHLoNMZAgHH99MZAgHqftMZAgHFpNMZAgHqfdMZAgHFmdMZAgHtF9MZAgFF0xkCAcG70xkCAd2+0xkCAec20xkCAb970xkCAb9H6l0BQepdAfjf6l0B9vrqXQHzT+pdAe1l6l0B1ozqXQHtDupdAep76l0BSepdAekS6l0B54DqXQHm8OpdAeXV6l0BRupdAd7u6l0B3f3qXQHb1updAdss6l0B2NXqXQHWa+pdAbTqXQHViepdAUrqXQHSNepdAdBF6l0Bz2zqXQHOY+pdAc0/6l0By2zqXQHHjOpdAccc6l0BRepdAcOW6l0BwNbqXQHAn+pdAb9X6l0Bvz7qXQHnKOpdAecu6l0B3a33G/uOAfts9xv7jgH4pPcb+44B5wP3G/uOAe2m9xv7jgHqm/cb+44Bv2L3G/uOAemP9xv7jgG/OPcb+44Bx6n3G/uOAfbR9xv7jgG/7Pcb+44Bv0f3G/uOAd8w9xv7jgHLoPcb+44B3AD3G/uOAd899xv7jgHA0vcb+44B6v/3G/uOAfc29xv7jgHe2vcb+44B3if3G/uOAdqc9xv7jgHlk/cb+44B0Eb3G/uOAfsR9xv7jgHzCfcb+44B8y/3G/uOAe5d9xv7jgHZMPcb+44B0Er3G/uOAdTv9xv7jgHq6Pcb+44By473G/uOAd7v9xv7jgHTXfcb+44BxP/3G/uOAekp9xv7jgHq9fcb+44B81X3G/uOAdIZ9xv7jgHnHvcb+44Bz333G/uOAcup9xv7jgHDRfcb+44BxnH3G/uOAcsN9xv7jgHfEvcb+44B7l73G/uOAfcT9xv7jgHAVPcb+44B0Wr3G/uOAd1d9xv7jvLOTcMaBgFBwxoGAfj+wxoGAfjfwxoGAfb6wxoGAfNPwxoGAe1lwxoGAe0OwxoGAep7wxoGAUnDGgYB6RLDGgYB58vDGgYBkMMaBgHlkcMaBgFGwxoGAd+nwxoGAd7uwxoGAZ3DGgYBq8MaBgHbMcMaBgHY1cMaBgHWa8MaBgHVicMaBgFKwxoGAdI1wxoGAdBZwxoGAc9swxoGAc0/wxoGActswxoGAceMwxoGAcccwxoGAUXDGgYBw5bDGgYBwNbDGgYBwJ/DGgYBv1fDGgIBQcMaAgH4/sMaAgH438MaAgH2+sMaAgHzT8MaAgHtZcMaAgHtDsMaAgHqe8MaAgFJwxoCAekSwxoCAefLwxoCAZDDGgIB5ZHDGgIBRsMaAgHfp8MaAgHe7sMaAgGdwxoCAavDGgIB2zHDGgIB2NXDGgIB1mvDGgIB1YnDGgIBSsMaAgHSNcMaAgHQWcMaAgHPbMMaAgHNP8MaAgHLbMMaAgHHjMMaAgHHHMMaAgFFwxoCAcOWwxoCAcDWwxoCAcCfwxoCAb9XICkD/GYgKQP8ZSApA/xkICkD/GMgKQP8YiApA/xhICkD/GAgKQP8XyApA/xeICkD/F0gKQP8XCApA/xbICkD/FogKQP8WSApA/xYICkD/FcgKQP8ViApA/xVICkD/FQgKQP8UyApA/xSICkD/FEgKQP8UCApA/xPICkD/E4gKQP8TSApA/xMICkD/3AgKQP8SyApA/xKICkD/EkgKQP8SCApA/xHICkD/EYgKQP8RSApA/xEICkD/EMgKQP8QiApA/xBICkD/EAgKQP8PyApA/w+ICkD/D0gKQP8PCApA/w7ICkD/DogKQP8OSApA/w4ICkD/DcgKQP8NiApA/w1ICkD/DQgKQP8MyApA/wyICkD/DEgKQP8MCApA/wvICkD/C4gKQP8LSApA/wsICkD/CsgKQP8KiApA/wpICkD/CggKQP8JyApA/wmICkD/CUgKQP8JCApA/wjICkD/CIgKQP8ISApA/8ZICkD/CAgKQP8HyApA/72ICkD/B4gKQP8HSApA/wcICkD/BsgKQP+6SApA/waICkD/BkgKQP8GCApA/wXICkD/BYgKQP+MSApA/4wICkD/i8gKQP+LiApA/4tICkD/iwgKQP+KyApA/4qICkD/iggKQP+JyApA/4mICkD/iUgKQP+JCApA/4jICkD/iEgKQP+ICApA/4fICkD/h4gKQP+HSApA/4cICkD/hsgKQP+GiApA/4ZICkD/hggKQP+FyApA/4WICkD/hUgKQP+FCApA/4TICkD/hIgKQP+ESApA/4QICkD/g8gKQP+DSApA/4MICkD/gsgKQP+ByApA/4GICkD/gUgKQP+BCApA/4AICkD/f8gKQP9/iApA/39ICkD/fwgKQP9+yApA/36ICkD/fkgKQP9+CApA/33ICkD/fYgKQP99SApA/30ICkD/fMgKQP98iApA/3xICkD/fAgKQP97yApA/3uICkD/e0gKQP97CApA/3rICkD/eogKQP96CApA/3nICkD/eYgKQP95SApA/3kICkD/eIgKQP94SApA/3gICkD/d8gKQP93SApA/3cICkD/dsgKQP9uSApA/23ICkD/bUgKQP9syApA/2xICkD/a8gKQP9rSApA/2rICkD/akgKQP9pyApA/2lICkD/aIgKQP9oCApA/2eICkD/ZwgKQP9miApA/2YICkD/ZYgKQP9lCApA/1CICkD/UEgKQP9QCApA/0/ICkD/T4gKQP9PSApA/07ICkD/TogKQP9OSApA/04ICkD/TcgKQP9NiApA/00ICkD/TMgKQP9LyApA/0uICkD/SwgKQP9KyApA/0qICkD/SkgKQP9KCApA/0nICkD/SYgKQP9JSApA/0kICkD/SMgKQP9IiApA/0hICkD/SAgKQP9HyApA/0eICkD/R0gKQP9HCApA/0bICkD/RogKQP9GSApA/0YICkD/RcgKQP9FiApA/0VICkD/RQgKQP9EyApA/0SICkD/REgKQP9ECApA/0PICkD/Q4gKQP9DSApA/0MICkD/QsgKQP9CiApA/0JICkD/QggKQP9ByApA/0GICkD/QUgKQP9BCApA/0DICkD/QIgKQP9ASApA/0AICkD/P8gKQP8/iApA/z9ICkD/PwgKQP8+yApA/z6ICkD/PkgKQP8+CApA/z3ICkD/PYgKQP89SApA/z0ICkD/PMgKQP88iApA/zxICkD/PAgKQP87yApA/zuICkD/O0gKQP87CApA/zrICkD/OogKQP86SApA/zoICkD/OcgKQP85iApA/zlICkD/OQgKQP84yApA/ziICkD/OEgKQP84CApA/zfICkD/N4gKQP83SApA/zcICkD/NsgKQP82iApA/zZICkD/NggKQP81yApA/zWICkD/NUgKQP81CApA/zTICkD/NIgKQP80SApA/zQICkD/M8gKQP8ziApA/zNICkD/MwgKQP8yyApA/zKICkD/MkgKQP8yCApA/zHICkD/MYgKQP8xSApA/zEICkD/MMgKQP8wiApA/zBICkD/MAgKQP8vyApA/y+ICkD/L0gKQP8vCApA/y7ICkD/LogKQP8uSApA/y4QSApA/y3+kYgKQP8tu5QICkD/LVJICkD/LTphiApA/yz5lMgKQP8st8HICkD/LHefSApA/ywqiApA/yv3GogKQP8rtxpICkD/K3caCApA/ys3GcgKQP8q8HdICkD/KrA6yApA/ypwJ8gKQP8qNNjICkD/Kf8ESApA/ym+QQgKQP8pe2UICkD/KTpjiApA/yj3u4gKQP8oiApA/yhICkD/KAgKQP8nyApA/yeICkD/J0gKQP8nCApA/ybOwECBvyaOwHIscXq8iM7AcixhsXq8iM7AQL75TsBAgb6RjsBAk4EajsBAur57NU7AQLq+ezWBM8TajsBAur57NYE7oA7AQLtGezVOwEC7lEEx9I7AQLuUQRqOwEC7lEE5NsYx9I7AQLPDUk7AQLyq88N00JJOwEC6Pzs1TsBAs+H5Jw7AQIG6A47AQLoDwRqOwECBugPBGo7AQLmVARpOwECBuZTOwEC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1IDsdPwQOcGa8s0GAdY1wZryzQYBQcGa8s0GAcFUwZryzQYBv+HBmvLNBgGpwZryzQYBwAzBmvLNBgHfqsGa8s0GAcQawZryzQYBScGa8s0GAUrBmvLNBgH7R8Ga8s0GAefLwZryzQYB3SvBmvLNBgHqGMGa8s0GAb/MwZryzQYBxJzBmvLNBgHqK8Ga8s0GAdOOwZryzQYBxXvBmvLNBgHUcsGa8s0GAe3xwZryzQYB+oTBmvLNBgH7YsGa8s0GAffawZryzQYB0J7BmvLNBgHlU8Ga8s0GAeTjwZryzQYB5JrBmvLNBgHl8sGa8s0GAcl5wZryzQYByrzBmvLNBgHDFsGa8s0CAdY1wZryzQIBQcGa8s0CAcFUwZryzQIBv+HBmvLNAgGpwZryzQIBwAzBmvLNAgHfqsGa8s0CAcQawZryzQIBScGa8s0CAUrBmvLNAgH7R8Ga8s0CAefLwZryzQIB3SvBmvLNAgHqGMGa8s0CAb/MwZryzQIBxJzBmvLNAgHqK8Ga8s0CAdOOwZryzQIBxXvBmvLNAgHUcsGa8s0CAe3xwZryzQIB+oTBmvLNAgH7YsGa8s0CAffawZryzQIB0J7BmvLNAgHlU8Ga8s0CAeTjwZryzQIB5JrBmvLNAgHl8sGa8s0CAcl5wZryzQIByrzBmvLNAgHDFsGa8s0Rv03BmvLNEWzBmvLNEW3BmvLNEYvBmvLNEYnBmvLNEZnBmvLNEa3BmvLNEbXBmvLNEbDBmvLNEbjBmvLNH8dawZryzR/FHMGa8s0fxvTBmvLNH+hhwZryzR/o5sGa8s0fynPBmvLNH8vswZryzR/qbsGa8s0f1ZzBmvLN02bspPueAUHspPueAfya7KT7ngFG7KT7ngHfquyk+54BReyk+54BxBrspPueAUnspPueAUrspPueAZ3spPueAd2+7KT7ngHny+yk+54B5zbspPueAdY27KT7ngH3cOyk+54B9tHspPueAd8E7KT7ngHUWOyk+54BxYDspPueAe2S7KT7ngHtguyk+54B1ULspPueAcf37KT7ngHHLOyk+54B7fHspPueAe0X7KT7ngG07KT7ngGo7KT7ngHR2+yk+54B+WfspPueAfiZ7KT7ngGs7KT7ngGp7KT7ngG/r+yk+54Bpuyk+54Bq+yk+54Bw7nspPueAcug7KT7ngHJquyk+54Bveyk+54BkOyk+54B2zHspPueAb977KT7nhID/JrspPueEgNG7KT7nhID36rspPueEgNF7KT7nhIDxBrspPueEgNJ7KT7nhID+7jspPueEgNK7KT7ngP7FOyk+54D90fspPueA+Yn7KT7nsMl7KT7ntDc1sg57KT7ntjGqeyk+55Zpuyk+57YxqbspPueA9SA7KT7njbtweyk+57np+ja7KT7nuo1UMcxTeyk+54Rv03spPueEWzspPueEW3spPueEYvspPueEYnspPueEZnspPueEa3spPueEbXspPueEbDspPueEbjW0QFB1tEB/JrW0QFG1tEB36rW0QFF1tEBxBrW0QF5lNbRAXnOadbRAUnW0QH7uNbRAUrW0QH6cdbRAZ3W0QHdvtbRAefL1tEB5zbW0QHWNtbRAfdw1tEB9tHW0QHfBNbRAd7h1tEB1FjW0QHFgNbRAcV01tEB7ZLW0QHtgtbRAdVC1tEBx/fW0QHHLNbRAe3x1tEB7RfW0QG01tEBqNbRAdHb1tEB+WfW0QH4mdbRAazW0QGp1tEBptbRAavW0QHDudbRAcug1tEByarW0QG91tEBkNbRAdsx1tEBzmjW0RID/JrW0RIDRtbREgPfqtbREgNF1tESA8Qa1tESA3mU1tESA3nOadbREgNJ1tESA/u41tESA0rW0RID+nHW0QP7FNbRA8Mg1tEDwyXW0QP6X9bRA8rN1tHlw9bREgPQyEm/ajMBQb9qMxIDRr9qMxIDxJS/ajMSA0W/ajMSA0m/ajMSA9OLv2ozEgNKv2ozEgP7uL9qMxID+nG/ajMSA88NRr9qMxLbrk2/ajMBnb9qMwHdvr9qMwHny79qMwHnNr9qMwHWNr9qMwH3cL9qMwH20b9qMwHfBL9qMwHUWL9qMwHFgL9qMwHFdL9qMwHtkr9qMwHtgr9qMwHVQr9qMwHH979qMwHHLL9qMwHt8b9qMwHtF79qMwG0v2ozAai/ajMB0du/ajMB+We/ajMB+Jm/ajMBrL9qMwHFpL9qMwHFmb9qMwHq979qMwHq8b9qMwG/R79qMwG/e79qMwH/or9qMwGpv2ozAaa/ajMBq79qMwHDub9qMwHLoL9qMwHJqr9qMwG9v2ozAZC/ajMB3N6/ajM0d02/ajMDwyW/ajMD90e/ajMD90gE0yC/ajMD90oE0yC/ajMD+xS/ajMDwyC/ajPymQGmv2oz8poBqb9qM/KaAaa/ajPymgGrv2oz8poBw7m/ajNZ5cxNv2oz8qflzE2/ajNXxZS/ajNXy5i/ajNXNsuYv2ozV7HFlL9qM1nrVuXMTb9qM/Kn61blzE2/ajPI6cn2AUHJ9hIDRsn2EgPElMn2EgNFyfYSA0nJ9hIDSsn2EgPTi8n2EgP7uMn2EgP6ccn2EgN5lMn2EgN5qsn2EtuuTcn2AZ3J9gHdvsn2AefLyfYB5zbJ9gHWNsn2AfdwyfYB9tHJ9gHfBMn2Ad7hyfYB1FjJ9gHFgMn2AcV0yfYB7ZLJ9gHtgsn2AdVCyfYBx/fJ9gHHLMn2Ae3xyfYB7RfJ9gG0yfYBqMn2AdHbyfYB+WfJ9gH4mcn2AazJ9gHFpMn2AcWZyfYB6vfJ9gG/R8n2Ab97yfYB/6LJ9gGpyfYBpsn2AavJ9gHDucn2AcugyfYByarJ9gG9yfYBkMn2AdzeyfYD3tLJ9gPER8n28pkBpsn28pkBq8n28pkBy6DJ9vKZAb3J9jR3A+gOyfY0dwPefcn2NHcD1jjJ9jR3A+5QyfY0dwPXL8n2NHcD+kbJ9jR3A9qTyfY0dwOUyfY0dwOqyfY0dwPLosn2NHcDzgPJ9jR3A/+iyfYD+xTJ9gPDIMn253RNyfbI6cn2V8WUyfZXy5jJ9lc2y5jJ9lfRR8n25cxXBNe9GMjCGMXd6KrJ9uXMVwTXvRjIwhjoqsn25cxXBNe9GMjByfbHTNkkyfbHTNkjFRbWweV+FRbWweViFRbWweT3FRbWweTcFRbWwZAVFtbB5joVFtbBywoVFtbBywkVFtbBywYVFtbBywUVFtbBywwVFtbBywsVFsnoFRbJ2xUWycoVFsn00kfy3+XiAajSR/Lf5eIBndJH8t/l4gGr0kfy3+XiAazSR/Lf5eIB7fHSR/Lf5eIBv3vSR/Lf5eIBw7nSR/Lf5eIB1jbSR/Lf5eIBkNJH8t/l4gHny9JH8t/l4gHdvtJH8t/l4gG90kfy3+XiAfln0kfy3+XiAfdw0kfy3+XiAcf30kfy3+XiAccs0kfy3+XiAbTSR/Lf5eIB0dvSR/Lf5eIBptJH8t/l4gHpRNJH8t/l4gH20dJH8t/l4gFB0kfy3+XiAUnSR/Lf5eIBRtJH8t/l4gFK0kfy3+XiAUXSR/Lf5eIBxKTSR/Lf5eIB5AXSR/Lf5eIBNNLi0kfy3+XiATTefdJH8t/l4gE0yCfSR/Lf5eIBNNqT0kfy3+XiATTXL9JH8t/l4gE0qtJH8t/l4gE0wd3SR/Lf5eIBNNY40kfy3+XiATTAn9JH8t/l4s6vo9r70kfy3+Xizq/GStJH8t/l4s2F5ufJOtJH8t/l4s6vo7Ho1tJH8t/l4s6vo+jW0kfy3+XizYXm58k76NbSR/Lf5eLNhaPa+9JH8t/l4s2FxkrSR/Lf5eLNhaOx6NbSR/Lf5eLNhaPo1tJH8t/l4thDxkrSR/Lf5eLm58k7w6TSR/Lf5eLYQ6Ox6NbSR/Lf5eLYQ6Po1tJH8t/l4trZo9r70kfy3+Xi2tnGStJH8t/l4ubnyTrSR/Lf5eLa2aOx6NbSR/Lf5eLa2aPo1tJH8t/l4ubnyTvo1viXAUH4lwH8mviXAUb4lwHfqviXAUX4lwHEGviXAXmU+JcBec5p+JcBear4lwFJ+JcB+7j4lwFK+JcB+nH4lwGd+JcB3b74lwHny/iXAec2+JcB1jb4lwH3cPiXAfbR+JcB3wT4lwHe4fiXAdRY+JcBxYD4lwHFdPiXAe2S+JcB7YL4lwHVQviXAcf3+JcBxyz4lwHt8fiXAe0X+JcBtPiXAaj4lwHR2/iXAfln+JcB+Jn4lwGs+JcBqfiXAab4lwGr+JcBw7n4lwHLoPiXAcmq+JcBvfiXAZD4lxID/Jr4lxIDRviXEgPfqviXEgNF+JcSA8Qa+JcSA3mU+JcSA3nOafiXEgN5qviXEgNJ+JcSA/u4+JcSA0r4lxID+nH4lwP3R/iXA/sU+JcDwyD4lwPDJfiXA/pf+JftwfiXNu3B+JfBF8wF+Jfnp+jZ+Jfnp+jY+JcRv034lxFs+JcRbfiXEYv4lxGJ+JcRmfiXEa34lxG1+JcRsPiXEbj4lx9s+JcfbfiXH4v4lx+J+JcfmfiXH634lx+1+JcfsPiXH7j4lx/HWviXH8Uc+JcfxvT4lx/oYfiXH+jm+JcfynP4lx/L7PiXH+pu+Jcf1Zz4l+RsxFdN2SblzE3ZJlfLmNkmAZ3ZJgHdvtkmAefL2SYB1jbZJgH3cNkmAfbR2SYB3wTZJgHUWNkmAcf32SYBxyzZJgHt8dkmAbTZJgGo2SYB0dvZJgH5Z9kmAazZJgHFpNkmAcWZ2SYB6vfZJgHBu9kmAb9H2SYBv3vZJgH/otkmAanZJgGm2SYBq9kmAcug2SYBvdkmAZDZJgFB2SbI6gGd2SbI6gHdvtkmyOoB58vZJsjqAdY22SbI6gH3cNkmyOoB9tHZJsjqAd8E2SbI6gHUWNkmyOoBx/fZJsjqAccs2SbI6gHt8dkmyOoBtNkmyOoBqNkmyOoB0dvZJsjqAfln2SbI6gGs2SbI6gHFpNkmyOoBxZnZJsjqAer32SbI6gHBu9kmyOoBv0fZJsjqAb972SbI6gGp2SbI6gGm2SbI6gGr2SbI6gHLoNkmyOoBvdkmyOoBkNkmyOoBQdkmEgP8mtkmEgNG2SYSA0XZJhIDSdkmEgNK2SYD+xTZJgP3R9kWgQFB2RaBAfya2RaBAUbZFoEB36rZFoEBRdkWgQHEGtkWgQFJ2RaBAfu42RaBAUrZFoEB+nHZFoEBndkWgQHdvtkWgQHny9kWgQHnNtkWgQHWNtkWgQH3cNkWgQH20dkWgQHfBNkWgQHe4dkWgQHUWNkWgQHFgNkWgQHFdNkWgQHtktkWgQHtgtkWgQHVQtkWgQHH99kWgQHHLNkWgQHt8dkWgQHtF9kWgQG02RaBAajZFoEB0dvZFoEB+WfZFoEB+JnZFoEBrNkWgQGp2RaBAabZFoEBq9kWgQHDudkWgQHLoNkWgQHJqtkWgQG92RaBAZDZFoEB2zHZFoEB3N7ZFoEB3q/ZFoEBxhbZFoESA/ya2RaBEgNG2RaBEgPfqtkWgRIDRdkWgRIDxBrZFoESA3mU2RaBEgNJ2RaBEgP7uNkWgRIDStkWgRID+nHZFoED+xTZFoEDwyDZFoED1IDZFoED90nZFoED5ifZFoHDJdkWgc8n2RaBz7DZFoERv03ZFoERbNkWgRFt2RaBEYvZFoERidkWgRGZ2RaBEa3ZFoERtdkWgRGw2RaBEbjmfIEBQeZ8gQH8muZ8gQFG5nyBAd+q5nyBAUXmfIEBxBrmfIEB6pHmfIEB+7jmfIEB00zmfIEB+nHmfIEBqeZ8gQHDueZ8gQH5Z+Z8gQH4meZ8gQGs5nyBAZ3mfIEB3b7mfIEBx/fmfIEBxyzmfIEBq+Z8gQHny+Z8gQHnNuZ8gQHt8eZ8gQHtF+Z8gQG05nyBAfdw5nyBAfbR5nyBAcWA5nyBAcV05nyBAdsx5nyBAd8E5nyBAd7h5nyBAe2S5nyBAe2C5nyBAdY25nyBAajmfIEB0dvm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fQ4H93wOB/d7Dgf3eg4H93kOB/d4Dgf3dw4H93YOB/d1Dgf3dA4H93MOB/dyDgfuTw4H7k4OB+5NDgfuTA4H7ksOB+5KDgfuSQ4H7kgOB+5HDgfuRg4H7kUOB+5EDgfuQw4H7kIOB+5BDgfuQA4H7j8OB+4+DgfuPQ4H7jwOB+47DgfuOg4H7jkOB+44DgfuNw4H7jYOB+41DgfuNA4H7jMOB+4yDgfuMQ4H7jAOB+4vDgfuLg4H7i0OB+4sDgfuKw4H7ioOB+4pDgfuKA4H7icOB+4mDgfuJQ4H7iQOB+4jDgfuIg4H7iEOB+4gDgfuHw4H7h4OB+4dDgfuHA4H7hsOB+4aDgfuGQ4H7hgOB+4XDgfuFg4H7hUOB+4UDgfuEw4H7hIOB+4RDgfuEA4H7g8OB+4ODgfuDQ4H7gwOB+4LDgfuCg4H7gkOB+4IDgfuBw4H7gYOB+4FDgfuBA4H7gMOB+4CDgfuAQ4H7gAOB+3/Dgft/g4H7f0OB+38Dgft+w4H7foOB+35Dgft+A4H7fcOB+32Dgft9Q4H7fQOB+rbDgfq2g4H6tkOB+rYDgfq1w4H6tYOB+rVDgfq1A4H6tMOB+rSDgfq0Q4H6tAOB+rPDgfqzg4H6s0OB+rMDgfqyw4H6soOB+rJDgfqyA4H6scOB+rGDgfqxQ4H6sQOB+rDDgfqwg4H6sEOB+rADgfqvw4H6r4OB+q9DgfqvA4H6rsOB+q6DgfquQ4H6rgOB+q3Dgfqtg4H6rUOB+q0Dgfqsw4H6rIOB+qxDgfqsA4H6YUOB+mEDgfpgw4H6YIOB+mBDgfpgA4H6X8OB+l+DgfpfQ4H6XwOB+l7Dgfpeg4H6XkOB+l4Dgfpdw4H6XYOB+l1DgfpdA4H6XMOB+lyDgfpcQ4H6XAOB+lvDgfpbg4H6W0OB+lsDgfpaw4H6WoOB+lpDgfpaA4H6WcOB+lmDgfpZQ4H6WQOB+ljDgfpYg4H6WEOB+lgDgfpXw4H6V4OB+ldDgfpXA4H6VsOB+laDgfpWQ4H6VgOB+lXDgfpVg4H6VUOB+lUDgfpUw4H6VIOB+lRDgfpUA4H6U8OB+lODgfpTQ4H6UwOB+lLDgfpSg4H6UkOB+lIDgfpRw4H6UYOB+lFDgfoDQ4H6AwOB+gLDgfoCg4H6AkOB+gIDgfoBw4H6AYOB+gFDgfoBA4H6AMOB+gCDgfoAQ4H6AAOB+f/Dgfn/g4H5/0OB+f8Dgfn+w4H5/oOB+f5Dgfn+A4H5/cOB+f2Dgfn9Q4H5/QOB+fzDgfn8g4H5/EOB+fwDgfn7w4H5+4OB+ftDgfn7A4H5+sOB+fqDgfn6Q4H5+gOB+fnDgfn5g4H5+UOB+fkDgfn4w4H5+IOB+fhDgfn4A4H598OB+feDgfn3Q4H59wOB+fbDgfn2g4H59kOB+fYDgfn1w4H59YOB+fVDgfn1A4H59MOB+fSDgfn0Q4H59AOB+fPDgfnzg4H5lEOB+ZQDgfmTw4H5k4OB+ZNDgfmTA4H5ksOB+ZKDgfmSQ4H5BgOB+QXDgfkFg4H5BUOB+QUDgfkEw4H5BIOB+QRDgfkEA4H5A8OB+QODgfkDQ4H5AwOB+QLDgfkCg4H5AkOB+QIDgfkBw4H5AYOB958Dgfeew4H3noOB955DgfeeA4H3ncOB952DgfedQ4H3HQOB9xzDgfccg4H3HEOB9xwDgfcbw4H3G4OB9xtDgfcbA4H3GsOB9qRDgfakA4H2o8OB9qNDgfaiw4H2ooOB9qIDgfahg4H2oQOB9qCDgfagA4H2n4OB9p8Dgfaew4H2nkOB9p3Dgfadg4H2nUOB9p0Dgfacw4H2nIOB9pxDgfacA4H2m8OB9ptDgfaaw4H2mkOB9poDgfaZg4H2mUOB9pjDgfaYg4H2mAOB9peDgfaXA4H2loOB9pYDgfaVw4H2lUOB9pTDgfaUg4H2lAOB9pODgfaTA4H2koOB9pJDgfaRw4H2kUOB9pDDgfaQg4H2kAOB9o+DgfaPQ4H2jwOB9o6DgfaOA4H2jYOB9o0DgfaMg4H2jAOB9ouDgfaLQ4H2isOB9opDgfaJw4H2iUOB9cqDgfXKQ4H1ygOB9cnDgfXJg4H1yUOB9ckDgfXIw4H1yIOB9chDgfXIA4H1x8OB9ceDgfXHQ4H1xwOB9cbDgfXGg4H1xkOB9cYDgfXFw4H1xYOB9cVDgfXFA4H1xMOB9cSDgfXEQ4H1xAOB9cPDgfXDg4H1w0OB9cMDgfXCw4H1woOB9cJDgfXCA4H1wcOB9cGDgfXBQ4H1wQOB9cDDgfXAg4H1wEOB9cADgfW/w4H1v4OB9b9DgfW/A4H1vsOB9b6DgfVWw4H1VoOB9VZDgfVWA4H1VcOB9VWDgfVVQ4H1VQOB9VTDgfVUg4H1VEOB9VQDgfVTw4H1U4OB9VNDgfVTA4H1UsOB9VKDgfVSQ4H1UgOB9VHDgfVRg4H1KEOB9SgDgfUnw4H1J4OB9SdDgfUnA4H1JsOB9SaDgfUmQ4H1JgOB9SXDgfUlg4H1JUOB9SUDgfUkw4H1JIOB9SRDgfUkA4H1I8OB9SODgfUjQ4H1IwOB9SLDgfUig4H1IkOB9SIDgfT9Q4H0/QOB9PzDgfT8g4H0/EOB9PwDgfT7w4H0+4OB9PtDgfT7A4H0+sOB9PqDgfT6Q4H0+gOB9PnDgfT5g4H0+UOB9PkDgfT4w4H0+IOB9PhDgfT4A4H098OB9PeDgfT3Q4H09wOB9PbDgfT2g4H09kOB9PYDgfT1w4H09YOB9PVDgfT1A4H09MOB9PSDgfT0Q4H09AOB9PPDgfTzg4H080OB9PMDgfTyw4H08oOB9PJDgfTyA4H08cOB9PGDgfTxQ4H08QOB9PDDgfTwg4H08EOB9PADgfTvw4H074OB9O9DgfTvA4H07sOB9O6DgfTuQ4H07gOB9O3DgfTtg4H07UOB9O0DgfTsw4H07IOB9OxDgfTsA4H068OB9OuDgfTrQ4H06wOB9OrDgfS4Q4H0uAOB9LfDgfS3g4H0t0OB9LcDgfS2w4H0toOB9LZDgfS2A4H0tcOB9LWDgfS1Q4H0GAOB9BfDgfQXg4H0F0OB9BcDgfQWw4H0FoOB8/XDgfP1g4Hz9UOB8/UDgfP0w4Hz9IOB8/RDgfP0A4Hz88OB8/ODgfPzQ4Hz8wOB8/LDgfPyg4Hz8kOB8/IDgfPxw4Hz8YOB8/FDgfPxA4Hz8MOB8/CDgfPwQ4Hz8AOB8+/DgfPvg4Hz70OB8+8DgfPuw4Hz7oOB8+5DgfPuA4Hz7cOB8+2DgfOAA4Hzf8OB83+DgfN/Q4HzfwOB837DgfN+g4HzfkOB834DgfN9w4HzfYOB831DgfN9A4HzfMOB83yDgfN8Q4HzfAOB83vDgfN7g4Hze0OB83sDgfN6w4HzeoOB83pDgfN6A4HzecOB83mDgfN5Q4HzeQOB83jDgfN4g4HzeEOB83gDgfN3w4Hzd4OB83dDgfN3A4HzdsOB83aDgfN2Q4HzdgOB83XDgfN1g4HzdUOB83UDgfN0w4HzdIOB83RDgfN0A4Hzc8OB83ODgfNzQ4HzcwOB83LDgfIJA4HyCMOB8giDgfIIQ4HyCAOB8gfDgfIHg4HyB0OB8gcDgfIGw4HyBoOB8gZDgfIGA4HyBcOB8gWDgfIFQ4HyBQOB8gTDgfIEg4HyBEOB8gQDgfIDw4HyA4OB8gNDgfIDA4HyAsOB8gKDgfICQ4HyAgOB8gHDgfIBg4HyAUOB8gEDgfIAw4HyAIOB8gBDgfIAA4Hx/8OB8f+DgfH/Q4Hx/wOB8f7DgfH+g4Hx/kOB8TVDgfE1A4HxNMOB8TSDgfE0Q4HxNAOB8TPDgfEzg4HxM0OB8TMDgfEyw4HxMoOB8TJDgfEyA4HxMcOB8TGDgfExQ4HxMQOB8TDDgfEwg4HxMEOB8TADgfEvw4HxL4OB8S9DgfEvA4HxLsOB8S6DgfEuQ4HxLgOB8S3DgfEtg4HxLUOB8S0DgfEsw4HxLIOB8SxDgfEsA4HxK8OB8SuDgfErQ4HxKwOB8SrDgfEqg4HxKkOB8SoDgfEpw4HxAcOB8QGDgfEBQ4HxAQOB8QDDgfEAg4HxAEOB8QADgfD/w4Hw/4OB8P9DgfD/A4Hw/sOB8P6DgfD+Q4Hw/gOB8P3DgfD9g4Hw/UOB8P0DgfD8w4Hw/IOB8PxDgfD8A4Hw+8OB8PuDgfD7Q4Hw+wOB8PrDgfD6g4Hw+kOB8PoDgfD5w4Hw+YOB8PlDgfD5A4Hw+MOB8PiDgfD4Q4Hw+AOB8PfDgfD3g4Hw90OB8PcDgfD2w4Hw9oOB8PZDgfD2A4Hw9cOB8PWDgfD1Q4Hw9QOB8PTDgfD0g4Hw9EOB8PQDgfDzw4Hw84OB8PNDgfDzA4Hw8sOB8PKDgfDyQ4Hw8gOB8PHDgfDxg4Hw8UOB8PEDgfDww4Hw8IOB8PBDgfDwA4Hw78OB8O+DgfDvQ4Hw7wOB8O7DgfB3A4HwdsOB8HaDgfB2Q4HwdgOB8HXDgfB1g4HwdUOB8HUDgfB0w4HwdIOB8HRDgfB0A4Hwc8OB8HODgfBzQ4HwcwOB8HLDgfByg4HwckOB8HIDgfBxw4HwcYOB8HFDgfBxA4HwcMOB8HCDgfBwQ4HwcAOB8G/DgfBvg4Hwb0OB8DoDgfA5w4HwOYOB8DlDgfA5A4HwOMOB8DiDgfA4Q4HwOAOB8DfDgfA3g4HwN0OB8CdDgfAnA4HwJsOB8CaDgfAmQ4HwJgOB8CXDgfAlg4HwJUOB7+lDge/pA4Hv6MOB7+iDge/oQ4Hv6AOB7+fDge/ng4Hv50OB7+cDge/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WMe1AfpWx7UB+lXHtQHEfce1AcSGx7UBxIPHtQHEfse1ATTWOMe1AbHEjce1AcsjxIvHtQHLI/pVx7UBxJLHtQHEi8e1AcSOx7UBxI3HtQHEf8e1AcSCx7UBxIHHtQHEgMe1Adcxx7UB2NvHtQHXlce1Adc6x7UBnce1Ad2+x7UB58vHtQHWNse1Ab3HtQGpx7UBwbvHtQGox7UB1FjHtQHR28e1Aflnx7UBrMe1AbTHtQGQx7UBq8e1AeSFx7UBx/fHtQHt8ce1AabHtQHV0se1Acugx7UB93DHtQHFpMe1Aec2x7UB5ILHtQHHLMe1AcDcx7UB6UTHtQHtF8e1AfbRx7UBv3vHtRG/Tce1EWzHtRFtx7URi8e1EYnHtRGZx7URrce1EbXHtRGwx7URuPkRw7YB6ir5EcO2AZ35EcO2Ac0/+RHDtgHpRPkRw7YB2PH5EcO2AcAe+RHDtgHnvPkRw7YB7QT5EcO2Adz8+RHDtgHervkRw7YB5F35EcO2AcG7+RHDtgG/B/kRw7YB54T5EcO2AeyB+RHDtgH2+vkRw7YBxBP5EcO2AZ/5EcO2Afln+RHDtgHB9vkRw7YBwEr5EcO2Aaj5EcO2AcGu+RHDtgFB+RHDtgFK+RHDtgHTTPkRw7YBRfkRw7YB6pH5EcO2AUn5EcO2AUb5EcO2IYjGSvkRw7Yhg8ZK+RHDtiHYRMZK+RHDtiHa2MZK+RHDtiHlZcZK+RHDtugqyTqRWhLd85FaEt3vkVoS3YORWhLdXpFaEt4PkVoS3gyRWhLcwJFaEtyhkVoS3fWRWhLdyJFaEt5KkVoS3keRWhLdEJFaEt0NkVoS3giRWhLeBpFaEtzCkVoS3MGRWhLdJJFaEt0BkVoS3YWRWhLdhJFaEt5akVoS3guRWhLcl5FaEtyOkVoS3mORWhLeW5Fad8OdkVp31KyRWnfb6JFad+XhkVp31UWRWnfPeJFad9VgkVp30D+RWnfAW5Fad+VMkVp32QaRWnfzU5Fad9aXkVp35QyRWnfRU5Fad9SykVp31r+RWnf6cZFad8DYkVp39xyRWlfy4cVRkVpX8uHKKZFaV/Lh3dqRWlfy4d2ukVpX8uHI8ZFaV/Lh5OKRWlfy4cegkVoDwwLG6ZFaA8MCxZj28ZFaA/Lh80iRWgPDAscFkVoDwwLpCJFaA8Cr1KaRWgPAq87+kVoDwKvGG5FaA8Cr6TGRWgPDAs0nkVoD2L7I9ZFaA8MC1NqRWgPkAcBvkVoDwNeRWgPy4cWLzouRWhG/TZFaEWyRWhFtkVoRi5FaEYmRWhGZkVoRrZFaEbWRWhGwkVoRuJFaH8dVkVof5GuRWh/HW8bfkVof2B2RWh/kbtgdkVofx1v4eZFaH8XfkVoDwwLaxpFaA8CokVoD5UeRWgPG+uVHkVoDvuzHJpFaA+T8kVoD1OiRWgPAzpFaA9SqkVoD+mCRWgPFA/bwkVoD2L7Fm5FaA8ehkVoD2uWRWgPXWZFaA/Lh5ivar9Sw1K+RWgPy4e6TxZKRWgPy4cUBkVoD8uHFAvL0kVoD8uHQmO2hkVoD8uHU4cYkkVryxAPFlpFa8sQDwEyRWvLEA9tCkVryxAPb5pFa8sQDwKeRWvLEA90RkVryxAPl3pFa8sQD14ORWvLEA8bqkVryxAPFoZFa8sQD0diRWvLEA928kVryxAPmH5Fa8sQDw7ORWvLEA+ktkVryxAPAdpFa8sQDxYWRWvLEA9ySkVryxAPB6tjHBgHak9jHBgHOA9jHBgHECNjHBgHB3djHBgH6ftjHBgG/ptjHBgHc/tjHBgHS4tjHBgHIJ9jHBgHoDtjHBgHphtjHBgFG2McGAd592McGAUHYxwYB3wfYxwYBSdjHBgH6RtjHBgH3kdjHBgFF2McGAb/h2McGAarYxwYB0GHYxwYB5IrYxwYB1FrYxwYBwOvYxwYB7lDYxwYB04vYxwYB1y/YxwYBlNjHBgFK2McGAfu42McGAcCf2McCAdqT2McCAc4D2McCAcQI2McCAcHd2McCAfp+2McCAb+m2McCAdz+2McCAdLi2McCAcgn2McCAegO2McCAemG2McCAUbYxwIB3n3YxwIBQdjHAgHfB9jHAgFJ2McCAfpG2McCAfeR2McCAUXYxwIBv+HYxwIBqtjHAgHQYdjHAgHkitjHAgHUWtjHAgHA69jHAgHuUNjHAgHTi9jHAgHXL9jHAgGU2McCAUrYxwIB+7jYxwIBwJ/YxxG/TdjHEWzYxxFt2McRi9jHEYnYxxGZ2McRrdjHEbXYxxGw2McRuNjHH8da2Mcf6lTYxx/FIdjHH8b22Mcf6FTYxx/o6tjHH8p92Mcfy+/Yxx/qdtjHH9We2McRW/tqFNjHEWf7ahTYxxFz+2oU2MfyGtjH6CrJOtjHEPup2Mfpr9N8eAGoeAH5Z3gBC6h4AdFmeAGseAHYVHgB+tyseAHpRHgBw7l4AcNEeAHH93gB7fF4AQvFgHgBC8f3eAHFgHgB7ZJ4AbR4AdXSeAEL1UJ4AfrctHgB1UJ4AdU0eAGreAHaoXgB24d4Adt8eAHGa3gB7Ip4AcZjeAHsiXgBnXgB58t4AQudeAHQWXgB0EJ4AdY2eAHWA3gB+tzWNngBkHgBwNx4Aec2eAHnHXgBxYp4AermeAHUWHgB1EZ4AcWZeAHq8XgBC8WZeAEL6vF4Ac9NxZl4AcugeAHJqngBv0d4Ab79eAHFpHgB6vd4AQvFpHgBvXgBv3t4Ab7+eAG+4HgBvsx4AfrcvuB4Ab7EeAG+y3gBwbt4AfvBeAHlkXgB9/B4Ach5eAHq53gBx4x4AcWdeAHOQngDdzukeAHWxngD+pV4A89Nww94A89N+pV4EgNBeBID/Jp4EgP7vXgSA/tReBID+0d4EgNKeBID00x4EgPBMHgSA8HdeBIDSXgSA+o9eBID6i54EgPTh3gSA0Z4EgPkBXgSA+QEeBID5AN4EgPfPHgSA9/FeBID36p4EgPfFXgSA99seBIDRXgSA8SkeBIDxKN4EgPEongSA8QaeBIDxJB4EgPEXXgSA8CfeBIDwCF4EgP75XgSA/vheBID6fB4EgPObOnweBID6fh4EgPObOn4eBID+7h4EgPqe3gSA/pxeBID0wl4EgPXL3gSA9Y4eBIDxE14EgO/zXgSA9OBeBID04h4EgPB7HgSA9+veBID6q14EgPfOngSA8SHeKO7eKPGMbt4ozh4ozx4AcZIeAHGR3gBxkZ4AcZFeAHGRHgBxkN4AcZCeAHPTcZJeAHPTcZIeAHPTcZGeAHPTcZFeAHPTcZEeAHPTcZCE98XTS7fF00m8yDk200m8yDfF00oAhvo2sM2+2rPZlf3cMM2+2rPZlfV0RPyDxPyDhPyDRPyDBPyCxPyChPyCRPyCBPyBxPyBhPyBRPyBBPyAxPyAhPyARPyABPx/xPx/hPx/RPx/BPx+xPx+hPx+RPx+BPx9xPx9hPx9RPx9BPx8xPx8hPx8RPx8BPx7xPx7hPx7RPx7BPx6xPx6hPx6RPx6BPx5xPx5hPx5RPx5BPx4xPx4hPx4RPx4BPx3xPx3hPx3RPx3BPx2xPx2hPx2RPx2BPx1xPx1hPx1RPx1BPx0xPx0hPx0RPx0BPxzxPxzhPxzRPxzBPxyxPxyhPxyRPxyBPxxxPxxhPxxRPxxBPxwxPxwhPxwRPxwBPxvxPxvhPxvRPxvBPxuxPxuhPxuRPxuBPxtxPxthPxtRPxtBPxsxPxshPxsRPxsBPxrxPxrhPxrRPxrBPxqxPxqhPxqRPxqBPxpxPxphPxpRPxpBPxoxPxohPxoRPxoBPxnxPxnhPxnRPxnBPxmxPxmhPxmRPxmBPxlxPxlhPxlRPxlBPxkxPxkhPxkRPxkBPxjxPxjhPxjRPxjBPxixPxihPxiRPxiBPxhxPxhhPxhRPxhBPxgxPxghPxgRPxgBPxfxPxfhPxfRPxfBPxexPxehPxeRPxeBPxdxPxdhPxdRPxdBPxcxPxchPxcRPxcBPxbxPxbhPxbRPxbBPxaxPxahPxaRPxaBPxZxPxZhPxZRPxZBPxYxPxYhPxYRPxYBPxXxPxXhPxXRPxXBPxWxPxWhPxWRPxWBPxVxPxVhPxVRPxVBPxUxPxUhPxURPxUBPxTxPxThPxTRPxTBPxSxPxShPxSRPxSBPxRxPxRhPxRRPxRBPxQxPxQhPxQRPxQBPxPxPxPhPxPRPxPBPxOxPxOhPxORPxOBPxNxPxNhPxNRPxNBPxMxPxMhPxMRPxMBPxLxPxLhPxLRPxLBPxKxPxKhPxKRPxKBPxJxPxJhPxJRPxJBPxIxPxIhPxIRPxIBPxHxPxHhPxHRPxHBPxGxPxGhPxGRPxGBPxFxPxFhPxFRPxFBPxExPxEhPxERPxEBPxDxPxDhPxDRPxDBPxCxPxChPxCRPxCBPxBxPxBhPxBRPxBBPxAxPxAhPxARPxABPw/xPw/hPw/RPw/BPw+xPw+hPw+RPw+BPw9xPw9hPw9RPw9BPw8xPw8hPw8RPw8BPw7xPw7hPw7RPw7BPw6xPw6hPw6RPw6BPw5xPw5hPw5RPw5BPw4xPw4hPw4RPw4BPw3xPw3hPw3RPw3BPw2xPw2hPw2RPw2BPw1xPw1hPw1RPw1BPw0xPw0hPw0RPw0BPwzxPwzhPwzRPwzBPwyxPwyhPwyRPwyBPwxxPwxhPwxRPwxBPwwxPwwhPwwRPwwBPwvxPwvhPwvRPwvBPwuxPwuhPwuRPwuBPwtxPwthPwtRPwtBPwsxPwshPwsRPwsBPwrxPwrhPwrRPwrBPwqxPwqhPwqRPwqBPwpxPwphPwpRPwpBPwoxPwohPwoRPwoBPwnxPwnhPwnRPwnBPwmxPwmhPwmRPwmBPwlxPwlhPwlRPwlBPwkxPwkhPwkRPwkBPwjxPwjhPwjRPwjBPwixPwihPwiRPwiBPwhxPwhhPwhRPwhBPwgxPwghPwgRPwgBPwfxPwfhPwfRPwfBPwexPwehPweRPweBPwdxPwdhPwdRPwdBPwcxPwchPwcRPwcBPwbxPwbhPwbRPwbBPwaxPwahPwaRPwaBPwZxPwZhPwZRPwZBPwYxPwYhPwYRPwYBPwXxPwXhPwXRPwXBPwWxPwWhPwWRPwWBPwVxPwVhPwVRPwVBPwUxPwUhPwURPwUBPwTxPwThPwTRPwTBPwSxPwShPwSRPwSBPwRxPwRhPwRRPwRBPwQxPwQhPwQRPwQBPwPxPwPhPwPRPwPBPwOxPwOhPwORPwOBPwNxPwNhPwNRPwNBPwMxPwMhPwMRPwMBPwLxPwLhPwLRPwLBPwKxPwKhPwKRPwKBPwJxPwJhPwJRPwJBPwIxPwIhPwIRPwIBPwHxPwHhPwHRPwHBPwGxPwGhPwGRPwGBPwFxPwFhPwFRPwFBPwExPwEhPwERPwEBPwDxPwDhPwDRPwDBPwCxPwChPwCRPwCBPwBxPwBhPwBRPwBBPwAxPwAhPwARPwABPv/xPv/hPv/RPv/BPv+xPv+hPv+RPv+BPv9xPv9hPv9RPv9BPv8xPv8hPv8RPv8BPv7xPv7hPv7RPv7BPv6xPv6hPv6RPv6BPv5xPv5hPv5RPv5BPv4xPv4hPv4RPv4BPv3xPv3hPv3RPv3BPv2xPv2hPv2RPv2BPv1xPv1hPv1RPv1BPv0xPv0hPv0RPv0BPvzxPvzhPvzRPvzBPvyxPvyhPvyRPvyBPvxxPvxhPvxRPvxBPvwxPvwhPvwRPvwBPvvxPvvhPvvRPvvBPvuxPvuhPvuRPvuBPvtxPvthPvtRPvtBPvsxPvshPvsRPvsBPvrxPvrhPvrRPvrBPvqxPvqhPvqRPvqBPvpxPvphPvpRPvpBPvoxPvohPvoRPvoBPvnxPvnhPvnRPvnBPvmxPvmhPvmRPvmBPvlxPvlhPvlRPvlBPvkxPvkhPvkRPvkBPvjxPvjhPvjRPvjBPvixPvihPviRPviBPvhxPvhhPvhRPvhBPvgxPvghPvgRPvgBPvfxPvfhPvfRPvfBPvexPvehPveRPveBPvdxPvdhPvdRPvdBPvcxPvchPvcRPvcBPvbxPvbhPvbRPvbBPvaxPvahPvaRPvaBPvZxPvZhPvZRPvZBPvYxPvYhPvYRPvYBPvXxPvXhPvXRPvXBPvWxPvWhPvWRPvWBPvVxPvVhPvVRPvVBPvUxPvUhPvURPvUBPvTxPvThPvTRPvTBPvSxPvShPvSRPvSBPvRxPvRhPvRRPvRBPvQxPvQhPvQRPvQBPvPxPvPhPvPRPvPBPvOxPvOhPvORPvOBPvNxPvNhPvNRPvNBPvMxPvMhPvMRPvMBPvLxPvLhPvLRPvLBPvKxPvKhPvKRPvKBPvJxPvJhPvJRPvJBPvIxPvIhPvIRPvIBPvHxPvHhPvHRPvHBPvGxPvGhPvGRPvGBPvFxPvFhPvFRPvFBPvExPvEhPvERPvECgCG/a+KAIb9r0oAhv2vCgCG/a7KAIb9rooAhv2uSgCG/a4KAIb9rcoAhv2tigCG/a1KAIb9rQoAhv2sygCG/ayKAIb9rEoAhv2sCgCG/avKAIb9q4oAhv2rSgCG/asKAIb9qsoAhv2qigCG/apKAIb9qgoAhv2pygCG/amKAIb9qUoAhv2pCgCG/ajKAIb9qIoAhv2oSgCG/agKAIb9p8oAhv2nigCG/adKAIb9pwoAhv2mygCG/aaKAIb9pkoAhv2mCgCG/aXKAIb9pYoAhv2lSgCG/aUKAIb9pMoAhv2kigCG/aRKAIb9pAoAhv2jygCG/aOKAIb9o0oAhv2jCgCG/aLKAIb9oooAhv2iSgCG/aIKAIb9ocoAhv2higCG/aFKAIb9oQoAhv2gygCG/aCKAIb9oEoAhv2gCgCG/Z/KAIb9n4oAhv2fSgCG/Z8KAIb9nsoAhv2eigCG/Z5KAIb9ngoAhv2dygCG/Z2KAIb9nUoAhv2dCgCG/ZzKAIb9nIoAhv2cSgCG/ZwKAIb9m8oAhv2bigCG/ZtKAIb9mwoAhv2aygCG/ZqKAIb9mkoAhv2aCgCG/ZnKAIb9mYoAhv2ZSgCG/ZkKAIb9mMoAhv2YigCG/ZhKAIb9mAoAhv2XygCG/ZeKAIb9l0oAhv2XCgCG/ZbKAIb9looAhv2WSgCG/ZYKAIb9lcoAhv2VigCG/ZVKAIb9lQoAhv2UygCG/ZSKAIb9lEoAhv2UCgCG/ZPKAIb9k4oAhv2TSgCG/ZMKAIb9ksoAhv2SigCG/ZJKAIb9kgoAhv2RygCG/ZGKAIb9kUoAhv2RCgCG/ZDKAIb9kIoAhv2QSgCG/ZAKAIb9j8oAhv2PigCG/Y9KAIb9jwoAhv2OygCG/Y6KAIb9jkoAhv2OCgCG/Y3KAIb9jYoAhv2NSgCG/Y0KAIb9jMoAhv2MigCG/YxKAIb9jAoAhv2LygCG/YuKAIb9i0oAhv2LCgCG/YrKAIb9iooAhv2KSgCG/YoKAIb9icoAhv2JigCG/YlKAIb9iQoAhv2IygCG/YiKAIb9iEoAhv2ICgCG/YfKAIb9h4oAhv2HSgCG/YcKAIb9hsoAhv2GigCG/YZKAIb9hgoAhv2FygCG/YWKAIb9hUoAhv2FCgCG/YTKAIb9hIoAhv2ESgCG/YQKAIb9g8oAhv2DigCG/YNKAIb9gwoAhv2CygCG/YKKAIb9gkoAhv2CCgCG/YHKAIb9gYoAhv2BSgCG/YEKAIb9gMoAhv2AigCG/YBKAIb9gAoAhv1/ygCG/X+KAIb9f0oAhv1/CgCG/X7KAIb9fooAhv1+SgCG/X4KAIb9fcoAhv19igCG/X1KAIb9fQoAhv18ygCG/XyKAIb9fEoAhv18CgCG/XvKAIb9e4oAhv17SgCG/XsKAIb9esoAhv16igCG/XpKAIb9egoAhv15ygCG/XmKAIb9eUoAhv15CgCG/XjKAIb9eIoAhv14SgCG/XgKAIb9d8oAhv13igCG/XdKAIb9dwoAhv12ygCG/XaKAIb9dkoAhv12CgCG/XXKAIb9dYoAhv11SgCG/XUKAIb9dMoAhv10igCG/XRKAIb9dAoAhv1zygCG/XOKAIb9c0oAhv1zCgCG/XLKAIb9cooAhv1ySgCG/XIKAIb9ccoAhv1xigCG/XFKAIb9cQoAhv1wygCG/XCKAIb9cEoAhv1wCgCG/W/KAIb9b4oAhv1vSgCG/W8KAIb9bsoAhv1uigCG/W5KAIb9bgoAhv1tygCG/W2KAIb9bUoAhv1tCgCG/WzKAIb9bIoAhv1sSgCG/WwKAIb9a8oAhv1rigCG/WtKAIb9awoAhv1qygCG/WqKAIb9akoAhv1qCgCG/WnKAIb9aYoAhv1pSgCG/WkKAIb9aMoAhv1oigCG/WhKAIb9aAoAhv1nygCG/WeKAIb9Z0oAhv1nCgCG/WbKAIb9ZooAhv1mSgCG/WYKAIb9ZcoAhv1ligCG/WVKAIb9ZQoAhv1kygCG/WSKAIb9ZEoAhv1kCgCG/WPKAIb9Y4oAhv1jSgCG/WMKAIb9YsoAhv1iigCG/WJKAIb9YgoAhv1hygCG/WGKAIb9YUoAhv1hCgCG/WDKAIb9YIoAhv1gSgCG/WAKAIb9X8oAhv1figCG/V9KAIb9XwoAhv1eygCG/V6KAIb9XkoAhv1eCgCG/V3KAIb9XYoAhv1dSgCG/V0KAIb9XMoAhv1cigCG/VxKAIb9XAoAhv1bygCG/VuKAIb9W0oAhv1bCgCG/VrKAIb9WooAhv1aSgCG/VoKAIb9WcoAhv1ZigCG/VlKAIb9WQoAhv1YygCG/ViKAIb9WEoAhv1YCgCG/VfKAIb9V4oAhv1XSgCG/VcKAIb9VsoAhv1WigCG/VZKAIb9VgoAhv1VygCG/VWKAIb9VUoAhv1VCgCG/VTKAIb9VIoAhv1USgCG/VQKAIb9U8oAhv1TigCG/VNKAIb9UwoAhv1SygCG/VKKAIb9UkoAhv1SCgCG/VHKAIb9UYoAhv1RSgCG/VEKAIb9UMoAhv1QigCG/VBKAIb9UAoAhv1PygCG/U+KAIb9T0oAhv1PCgCG/U7KAIb9TooAhv1OSgCG/U4KAIb9TcoAhv1NigCG/U1KAIb9TQoAhv1MygCG/UyKAIb9TEoAhv1MCgCG/UvKAIb9S4oAhv1LSgCG/UsKAIb9SsoAhv1KigCG/UpKAIb9SgoAhv1JygCG/UmKAIb9SUoAhv1JCgCG/UjKAIb9SIoAhv1ISgCG/UgKAIb9R8oAhv1HigCG/UdKAIb9RwoAhv1GygCG/UaKAIb9RkoAhv1GCgCG/UXKAIb9RYoAhv1FSgCG/UUKAIb9RMoAhv1EigCG/URKAIb9RAoAhv1DygCG/UOKAIb9Q0oAhv1DCgCG/ULKAIb9QooAhv1CSgCG/UIKAIb9QcoAhv1BigCG/UFKAIb9QQoAhv1AygCG/UCKAIb9QEoAhv1ACgCG/T/KAIb9P4oAhv0/SgCG/T8KAIb9PsoAhv0+igCG/T5KAIb9PgoAhv09ygCG/T2KAIb9PUoAhv09CgCG/TzKAIb9PIoAhv08SgCG/TwKAIb9O8oAhv07igCG/TtKAIb9OwoAhv06ygCG/TqKAIb9OlHAdgTxkhHAdgTxkdHAdgTxkZHAdgTxkVHAdgTxkNHAdgTxkJHAdgT1sXGSUcB2BPWxcZIRwHYE9bFxkdHAdgT1sXGRkcB2BPWxcZFRwHYE9bFxkNHAdgT1sXGQkcB+txJ5VgB+tzAUD0B/5o9Af+ZPQH/mD0B/5Q9AeQrPQHkKj0B5Ck9AeQoPQHE4z0BxOI9AcThPQHE4D0BxN89AerhPQHq4D0B6t89AerePQHq3T0B1AE9AdQAPQHT/z0B3nI9Ad5vPQHebj0B3m09Ad5sPQHeaz0B3mo9Ad5pPQHeaD0B3nE9Ad5wPQHeZz0B3Y09Ad2MPQHdiz0B3Yo9Ad2JPQHdiD0B3Yc9Ad2GPQHczz0B3M49AdzNPQHczD0B3Ms9AdzKPQHcyT0B3fw9Ad37PQHd+j0B3fk9Ad34PQHd9z0B3So9Ad0pPQHdKD0B3Sc9Ac3JPQHNyD0Bzcc9Ac3GPQHNxT0BzcQ9Ac3DPQHNwj0Bytg9AcrXPQHK1j0BytU9AcrUPQHK0z0ByP49Acj9PQHI/D0ByPs9Acj6PQHI+T0ByPg9Acj3PQHNPj0BzT09Ac08PQHNOz0BzTo9AcooPQHKJz0ByiY9AcolPQHKJD0ByiM9AcoiPQHH9j0Bx/U9Acf0PQHH8z0Bxrs9Aca6PQHGuT0Bxrg9Aca3PQHGtj0BxrU9AcVZPQHFWD0BxVc9AcVWPQHFVT0Bx4s9AceKPQHHiT0Bx4g9AceHPQHHhj0Bx4U9AceEPQHHgz0Bxl09AcZcPQHGWz0Bxlo9AcZZPQHGWD0Bxlc9Adb4PQHW9z0B1vY9Adb1PQHW9D0B1vM9AdbyPQHW8T0B1vA9AdXMPQHVyz0B1co9AdXJPQHVyD0B1cc9AdXGPQHVxT0B1KQ9AdSjPQHUoj0B1mo9AdZpPQHWaD0B1mc9AdZmPQHWZT0B1mQ9AdUdPQHVHD0B1Rs9AdUaPQHVGT0B5kc9AeZEPQHmQz0B5kI9AeZBPQHmQD0B5j89AeY+PQHmPT0B5kY9AeZFPQHlfT0B5Xw9AeV7PQHlej0B5Xk9AeV4PQHldz0B5H89AeR+PQHkfT0B5dQ9AeXTPQHl0j0B5dE9AeXQPQHlzz0B5c49AeT2PQHk9T0B5PQ9AeTzPQHk8j0B5PE9AeTwPQHk7z0B2Yo9AdmJPQHZiD0B2Yc9AdmGPQHZhT0B2YQ9AdhQPQHYTz0B2E49AdhNPQHYTD0B2Es9AdhKPQHXij0B14k9AdeIPQHXhz0B2NQ9AdjTPQHY0j0B1/o9Adf5PQHX+D0B1/c9Adf2PQHX9T0BwJQ9AcCTPQHAkj0BwJE9AcCQPQHAjT0Bv+A9Ab/fPQG/3j0Bv909AcALPQHACj0BwAk9AcAIPQHABz0BwAY9Ac+0PQHPsz0Bz7I9Ac+xPQHO+z0Bzvo9Ac75PQHO+D0Bzvc9Ac72PQHO9T0Bzj49Ac49PQHOPD0Bzjs9Ac46PQHOOT0Bz2s9Ac9qPQHPaT0Bz2g9Ac6cPQHOmz0Bzpo9Ac6ZPQHOmD0Bzpc9AcG6PQHBuT0Bwbg9AcG3PQHBtj0BwVM9AcFSPQHBUT0BwVA9AcFPPQHBej0BwXk9AcF4PQHBdz0BwS89AcEuPQHBLT0BwSw9AcErPQHBKj0BwSk9AdcsPQHXK+VYAfrcwQBHAfrcwCFHAfrcwFBHAfrcwQDlWAECwVTlWAECwXvlWAECwTBHAQLBVEcBAsF7RwECwTBHAQLXLy706C705y705i705S705C704y704i704S704C703y703i703S703C702y702i702S702C701y701i701S701C700y700i700S700C70zy70zi70zS70zC70yy70yi70yS70yC70xy70xi70xS70xC70wy70wi70wS70wC70vy70vi70vS70vC70uy70ui70uS70uC70ty70ti70tS70tC70sy70si70sS70sC70ry70ri70rS70rC70qy70qi70qS70qC70py70pi70pS70pC70oy70oi70oS70oC70ny70ni70nS70nC70my70mi70mS70mC70ly70li70lS70lC70ky70ki70kS70kC70jy70ji70jS70jC70iy70ii70iS70iC70hy70hi70hS70hC70gy70gi70gS70gC70fy70fi70fS70fC70ey70ei70eS70eC70dy70di70dS70dC70cy70ci70cS70cC70by70bi70bS70bC70ay70ai70aS70aC70Zy70Zi70ZS70ZC70Yy70Yi70YS70YC70Xy70Xi70XS70XC70Wy70Wi70WS70WC70Vy70Vi70VS70VC70Uy70Ui70US70UC70Ty70Ti70TS70TC70Sy70Si70SS70SC70Ry70Ri70RS70RC70Qy70Qi70QS70QC70Py70Pi70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F9eb807KQRfXm/NO2MEX15vzTtv0F9ebb8pBF9ebb9jBF9ebb9v0F9ebvxXKQRfXm78V2MEX15u/Fdv0F9eb0jDKQRfXm9Iw2MEX15vSMNv0F8X/znHKpBfF/85x61kXxf/OcftnF8X/znLKpBfF/85y61kXxf/OcvtnF8X/y4sXxf/6ycnVyqQXxf/6ycnV61kXxf/6ycnVxdwX1576WcpBF9ee+lnYwRfXnvpZ2/QX1576WdvyF9eexhrKQRfXnsYa2MEX157GGtv0F9eexhrb8hfXnvig+lnKQRfXnvig+lnYwRfXnvig+lnb9BfXnvig+lnb8hfXnvigxhrKQRfXnvigxhrYwRfXnvigxhrb9BfXnvigxhrb8hfXncqlyTDKQRfXncqlyTDYwRfXncqlyTDb9BfXncqlyTDb8hfXncqlwQTooBfXnTbJLxfXnTbBBOigF9edNvtnF9edNvtowQTooBfXne6qF9edxd3JMNefF9edxd3BBOigF9edxd37aNefF9edxd37aMEE6KAX1534sRfXne7TykEX153u09jBF9ed7tPb9BfXnfNNF9edb8pBF9edb9jBF9edb9v0F9edvxXKQRfXnb8V2MEX152/Fdv0F9ed0jDKQRfXndIw2MEX153SMNv0F8YAznLKpBfGAM5y61kXxgDOcvtnF8YAznHKpBfGAM5x61kXxgDOcftnF8YAy4sX15vudtASykEX15vudtAS2MEX15vudtAS2/QX15vudtAS2/IX15vuduYiykEX15vuduYi2MEX15vuduYi2/QX15vuduYi2/IX15vudsbV8tvKQRfXm+52xtXy29jBF9eb5HDKQRfXm+Rw2MEX15vkcNv0F9eb2u3KQRfXm9rt2MEX15va7dv0F9eb2u0C61kX15vBie52NspBF9ebwYnudjbYwRfXm8GJ7nY22/QX15vBie52xd3KQRfXm8GJ7nbF3djBF9ebwYnudsXd2/QX15vudscUyS8X15vudO6rykEX15vudO6r2MEXznHKpBfOcetZF85x+2kX15vLixfXm+525VToO8GkF9eb5HDlVOg7waQX15va7eVU6DvBpBfXm8GJ5VToO8GkF85xyqXlVOg7waQXznE25VToO8GkF85x+2jlVOg7waQX15vuduVU8zgX15vkcOVU8zgX15va7eVU8zgX15vBieVU8zgXznHKpeVU8zgXznE25VTzOBfOcfto5VTzOBfXm8GJ7PrSTMpBF9ebwYns+tJM2MEX15vBiez60kzb9BfXne525VT278pBF9ed7nblVPbv2/QX153kcOVU9u8C61kX153kcOVU9u/b9etZF9ed5HDlVPbvAsXcF9ed5HDlVPbv2/XF3BfXndrt5VT27wLKpBfXndrt5VT279v1yqQX153a7eVU9u8C61kX153a7eVU9u/b9etZF9edwYnlVPbvykEX153BieVU9u/b9BfOcsql5VT27hfOcjblVPbuF85y+2jlVPbuF9ed7nblVOiaykEX153uduVU6Jrb9BfXneRw5VTomgLrWRfXneRw5VTomtv161kX153kcOVU6JrF3QLF3BfXneRw5VTomsXd2/XF3BfXndrt5VTomgLKpBfXndrt5VTomtv1yqQX153a7eVU6JoC61kX153a7eVU6Jrb9etZF9edwYnlVOiaykEX153BieVU6Jrb9BfOcsql5VTomRfOcjblVOiZF85y+2jlVOiZF9ed7nbKQRfXne522MEX153udtv0F9ed7nbb8hfXne528h4X153kcMpBF9ed2u3KQRfXncGJyjUX153BicpBF9edwYnb9BfOcsqkF85y61kXznL7ZxfXncuM0mwX15v6yfLbAsqkF9eb+sny29jCyqQX15v6yfLbAutZF9eb+sny29jC61kX1536yfLb5VTBpQLKpBfXnfrJ8tvlVMGl2MLKpBfXnfrJ8tvlVMGl2/XKpBfXnfrJ8tvlVMGlAutZF9ed+sny2+VUwaXYwutZF9ed+sny2+VUwaXb9etZF9ebwQTy2+g7yqQX15vBBPLb6DvrWRfXncEE8tvlVMGlyqQX153BBPLb5VTBpetZF9eb6NTy2MqkF9eb6NTy2OtZF9ed6NTy2OVUwaXKpBfXnejU8tjlVMGl61kX6vz6uspBF+r8+rrb9Bfq/OkgF+r8ykYX6vzHUxfq/M86F+r8yqsX6vzKrPtnF+r86bjTEcaNF+r85sAX5csX5czOvBflzNebyS8X5czXm8aQF+XM153JLxflzNeb7nUX5czXne51F+XM16Dy2hfpP+y80RLVAehfxo4X6T/svNES1QGE0y7rTxfpP+y80RLVAYTTLo/GjhfplskwxEkX6ZbJMNZDF+mWyTDrTxfrP+mW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XXtbUPLX2V17Z1Dy19lde3NQ8tfZXXvoWlDy19lde+i5UPLX2V17yoNQ8tfZXXvL8lDy19lde+p5UPLX2V171aFQ8tfZXXvRTdlde9Mq2V17+TXZXXvzAdlde8m/2V17yMPZXXv6Y9lde8E32V173qfZXXv5YOxqe+TR+WDsanvkz+xqe+TO7Gp75M3sanvkzOxqe+TL7Gp75Mrsanvkyexqe+TI7Gp75Mfsanvkxuxqe+TF7Gp75MTsanvkw+xqe+TC7Gp75MHsanvkwOxqe+S/7Gp75L7sanvkvexqe+S87Gp75Lvsanvkuuxqe+S57Gp75Ljsanvkt+xqe+S27Gp75LXsanvktOxqe+Sz7Gp75LLsanvksexqe+Sw7Gp75K/sanvkruxqe+St7Gp75Kzsanvkq+xqe+Sq7Gp75KnsanvkqOxqe+Sn7Gp75Kbsanvkpexqe+Sk7Gp75KPsanvkouxqe+Sh7Gp75KDsanvkn+xqe1H5YOxqe8OD7Gp7w4LsanvDgexqe8OA7Gp7w3/sanvDfuxqe8N97Gp7w3zsanvDe+xqe8N67Gp7w3nsanvDeOxqe8N37Gp7w3bsanvDdexqe8N07Gp7w3PsanvDcuxqe8Nx7Gp7w3DsanvDb+xqe8Nu7Gp7w23sanvDbOxqe8Nr7Gp7w2rsanvDaexqe8No7Gp7w2fsanvDZuxqe8Nl7Gp7w2TsanvDY+xqe8Ni7Gp7w2HsanvDYOxqe8Nf7Gp7w17sanvDXexqe8Nc7Gp7w1vsanvDWuxqe8NZ7Gp7w1jsanvDV+xqe8NW7Gp7w1XsanvDVOxqe8NT0Vf3Nflg0Vf3NfwBUMnv0Vf3NWdQye/RV/c1c1DJ79FX9zXoWlDJ79FX9zXouVDJ79FX9zXKg1DJ79FX9zXL8lDJ79FX9zXqeVDJ79FX9zXVoVDJ79FX9zXHW1DJ79FX9zXfAlDJ79FX9zXdNVDJ79FX9zXQClDJ79FX9zXdc1DJ79FX9zX8AVDlvdFX9zVnUOW90Vf3NXNQ5b3RV/c16FpQ5b3RV/c16LlQ5b3RV/c1yoNQ5b3RV/c1y/JQ5b3RV/c16nlQ5b3RV/c11aFQ5b3RV/c1x1tQ5b3RV/c13wJQ5b3RV/c13TVQ5b3RV/c10ApQ5b3RV/c13XNQ5b3RV/c1z1Lep9FX9zX8AVDs8tFX9zVnUOzy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43sMD+N6DA/jeQwP43gMD+N3DA/jdgwP43UMD+N0DA/jcwwP43IMD+NxDA/jcAwP428MD+NuDA/jbQwP42wMD+NrDA/jagwP42kMD+NoDA/jZwwP42YMD+NlDA/jZAwP42MMD+NiDA/jYQwP42AMD+NfDA/jXgwP410MD+NcDA/jWwwP41oMD+NZDA/jWAwP41cMD+NWDA/jVQwP41QMD+NTDA/jUgwP41EMD+NQDA/jTwwP404MD+NNDA/jTAwP40sMD+NKDA/jSQwP40gMD+NHDA/jRgwP40UMD+NEDA/jQwwP40IMD+NBDA/jQAwP4z8MD+M+DA/jPQwP4zwMD+M7DA/jOgwP4zkMD+M4DA/jNwwP4zYMD+M1DA/jNAwP4zMMD+MyDA/jMQwP4zAMD+MvDA/jLgwP4y0MD+MsDA/jKwwP4yoMD+MpDA/jKAwP4ycMD+MmDA/jJQwP4yQMD+MjDA/jIgwP4yEMD+MgDA/jHwwP4x4MD+MdDA/jHAwP4xsMD+MaDA/jGQwP4xgMD+MXDA/jFgwP4xUMD+MUDA/jEwwP4xIMD+MRDA/jEAwP4w8MD+MODA/jDQwP4wwMD+MLDA/jCgwP4wkMD+MIDA/jBwwP4wYMD+MFDA/jBAwP4wMMD+MCDA/jAQwP4wAMD+L/DA/i/gwP4v0MD+L8DA/i+wwP4voMD+L5DA/i+AwP4vcMD+L2DA/i9QwP4vQMD+LzDA/i8gwP4vEMD+LwDA/i7wwP4u4MD+LtDA/i7AwP4usMD+LqDA/i6QwP4ugMD+LnDA/i5gwP4uUMD+LkDA/i4wwP4uIMD+LhDA/i4AwP4t8MD+LeDA/i3QwP4twMD+LbDA/i2gwP4tkMD+LYDA/i1wwP4tYMD+LVDA/i1AwP4tMMD+LSDA/i0QwP4tAMD+LPDA/izgwP4s0MD+LMDA/iywwP4soMD+LJDA/iyAwP4scMD+LGDA/ixQwP4sQMD+LDDA/iwgwP4sEMD+LADA/ivwwP4r4MD+K9DA/ivAwP4rsMD+K6DA/iuQwP4rgMD+K3DA/itgwP4rUMD+K0DA/iswwP4rIMD+KxDA/isAwP4q8MD+KuDA/irQwP4qwMD+KrDA/iqgwP4qkMD+KoDA/ipwwP4qYMD+KlDA/ipAwP4qMMD+KiDA/ioQwP4qAMD+KfDA/ingwP4p0MD+KcDA/imwwP4poMD+KZDA/imAwP4pcMD+KWDA/ilQwP4pQMD+KTDA/ikgwP4pEMD+KQDA/ijwwP4o4MD+KNDA/ijAwP4osMD+KKDA/iiQwP4ogMD+KHDA/ihgwP4oUMD+KEDA/igwwP4oIMD+KBDA/igAwP4n8MD+J+DA/ifQwP4nwMD+J7DA/iegwP4nkMD+J4DA/idwwP4nYMD+J1DA/idAwP4nMMD+JyDA/icQwP4nAMD+JvDA/ibgwP4m0MD+JsDA/iawwP4moMD+JpDA/iaAwP4mcMD+JmDA/iZQwP4mQMD+JjDA/iYgwP4mEMD+JgDA/iXwwP4l4MD+JdDA/iXAwP4lsMD+JaDA/iWQwP4lgMD+JXDA/iVgwP4lUMD+JUDA/iUwwP4lIMD+JRDA/iUAwP4k8MD+JODA/iTQwP4kwMD+JLDA/iSgwP4kkMD+JIDA/iRwwP4kYMD+JFDA/iRAwP4kMMD+JCDA/iQQwP4kAMD+I/DA/iPgwP4j0MD+I8DA/iOwwP4joMD+I5DA/iOAwP4jcMD+I2DA/iNQwP4jQMD+IzDA/iMgwP4jEMD+IwDA/iLwwP4i4MD+ItDA/iLAwP4isMD+IqDA/iKQwP4igMD+InDA/iJgwP4iUMD+IkDA/iIwwP4iIMD+IhDA/iIAwP4h8MD+IeDA/iHQwP4hwMD+IbDA/iGgwP4hkMD+IYDA/iFwwP4hYMD+IVDA/iFAwP4hMMD+ISDA/iEQwP4hAMD+IPDA/iDgwP4g0MD+IMDA/iCwwP4goMD+IJDA/iCAwP4gcMD+IGDA/iBQwP4gQMD+IDDA/iAgwP4gEMD+IADA/h/wwP4f4MD+H9DA/h/AwP4fsMD+H6DA/h+QwP4fgMD+H3DA/h9gwP4fUMD+H0DA/h8wwP4fIMD+HxDA/h8AwP4e8MD+HuDA/h7QwP4ewMD+HrDA/h6gwP4ekMD+HoDA/h5wwP4eYMD+HlDA/h5AwP4eMMD+HiDA/h4QwP4eAMD+HfDA/h3gwP4d0MD+HcDA/h2wwP4doMD+HZDA/h2AwP4dcMD+HWDA/h1QwP4dQMD+HT2/zH2sfbyfLH2+mvTcfbz/dNx9sfOcfb7G45x9vSBDnH2/tWx9v6/8fbLdJnx9sy0mfH2/qPx9trOcfb8hrH2+Q5x9voKsk6x9vKEsfbEb9Nx9sRbMfbEW3H2xGLx9sRicfbEZnH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TkHMVEHJRE9VQkzFQVJST1eAQUJPVkWAU0lHToBWQclNT0RJRklF0kJFTE9XgEhFTlRBSUdBTsFCTEFDy0FSUk/XV0hJVMVBgFZBUklBVElPzkJSQUlMTMVQQVRURVLOVYBJgEtBVEFLQU7BQllaQU5USU7FT4BET9RJU09MQVRFxE1BUkuAwk1ZQU5NQdJPxlZFUlRJQ0HMTUlEREzFS0FOR1jJS0lLQUtVyU1FTkTFVElCRVRBzk1BUstIRUFW2UlOSVRJQcxITU9Ox09OxU1FRc1DT1BUScNLSE1F0kFCT1bFUklHSFRXQVJE01pOQU1FTk7ZQ0FSUklF0llFyEdFT1JHSUHOQ0hFUk9LRcVNT05HT0xJQc5UV89ERVZBTkFHQVLJU1RST0tFgEhPT0uAUExV009ORYBUV0+ATE9XRdJCT9hTUVVBUkXEU1lNQk9MgFBIQVNFLcVUSFJFxVVQUEXSTEVGVFdBUkTTVM9DT05TT05BTtRNSUHPVk9DQUxJw0RSQVdJTkfTVElMxURVUExPWUHOSk9OR1NFT07HUEFSRU5USEVTSVpFxFRIQc1HT05EyUFMRcZMT9dV0EdMQUdPTElUScNIQUzGSEVCUkXXSElHyEZPVVKAT1ZF0lRIUkVFgElOREXYTUFMQVlBTEHNU0lZQdFET1fOSEGAUEFIQVfIQ0hPU0VPTsdCQUxJTkVTxUhBTEZXSURUyEhBTkQtRklT1E1FUk9JVEnDVFVSTkXERklWRYBJREVPR1JBUEhJw0xJR0jUSURFT0dSQc1LQYBQSEFTRS3EVE+AQUxDSEVNSUNBzE5FVU3FQlJBSE3JVE9OxUJBUoBTSU5IQUzBUkGATlVNRVJJw1BBgFlBgExBgE1BgFNJWIBUSFVNwkhVTkdBUklBzkVJR0hUgExPTsdCQVLCSEHITkGAU0VWRU6AQkxPQ8tET1TTTklORYBOT1JUyFJJR0hUgFRIT1VTQU5EgFNBgEZVTExXSURUyFpaWViAWlpZVIBaWllSWIBaWllSgFpaWVCAWlpZQYBaWlmAWlpVWIBaWlVSWIBaWlVSgFpaVVCAWlpVgFpaU1lBgFpaU0GAWlpPWIBaWk9QgFpaT4BaWklYgFpaSVSAWlpJUIBaWklFWIBaWklFVIBaWklFUIBaWklFgFpaSYBaWkVYgFpaRVCAWlpFRYBaWkWAWlpBWIBaWkFUgFpaQVCAWlpBQYBaWkGAWllHT1OAWldTUIBaV05KgFpXTkJTUIBaV0qAWlfKWldBUkFLQVmAWldBgFpVVIBaVU9YgFpVT1CAWlVPgFpVTYBaVUJVUoBaVTWAWlW1WtVaU0hBgFpSQYBaUUFQSMFaT1SAWk9PgFpPTUJJRYBaT0GAWk1FWVRTQYBaTEFNwVpMQYBaTMFaSkWAWklaMoBaSVFBQYBaSVBQRVItTU9VVMhaSU5PUoBaSUxERYBaSUdaQcdaSUeAWklEwVpJQoBaScJaSTOAWslaSFlYgFpIWVSAWkhZUliAWkhZUoBaSFlQgFpIWYBaSFdFgFpIV0GAWkhVWIBaSFVUgFpIVVJYgFpIVVKAWkhVUIBaSFVPWIBaSFVPUIBaSFVPgFpIVYBaSE9YgFpIT1SAWkhPUIBaSE9PgFpIT0mAWkhPgFpISVZFVEWAWkhJTIBaSEmAWkhFWIBaSEVUgFpIRVCAWkhFRYBaSEWAWkjFWkhBWUlOgFpIQViAWkhBVIBaSEFSgFpIQVCAWkhBSU6AWkhBQYBaSEGAWkiAWkVWT0uAWkVVU4BaRVRBgFpFUk+AWkVSz1pFToBaRU1MWUGAWkVNTEpBgFpFTE+AWkVCUsFaRTKAWsVaQVlOgFpBWUlOLVlPREiAWkFZSU6AWkFZSc5aQVZJWUFOSYBaQVRBgFpBUlFBgFpBUkyAWkFRRcZaQVBZQVRZTUmAWkFQWUFUT1mAWkFQWUFUT9laQVBZQVRBWUGAWkFOT1pIRUuAWkFOQUJBWkHSWkFNWIBaQUyAWkHMWkFLUllUT0WAWkFLUllUQVlBgFpBS1JZVEFZwVpBSU6AWkFJzlpBSYBaQUiAWkHIWkFHgFpBRUaAWkFERVJaSEtBgFpBN4BawVowMTZIgFowMTZHgFowMTZGgFowMTZFgFowMTZEgFowMTZDgFowMTZCgFowMTZBgFowMTaAWjAxNUmAWjAxNUiAWjAxNUeAWjAxNUaAWjAxNUWAWjAxNUSAWjAxNUOAWjAxNUKAWjAxNUGAWjAxNYBaMDE0gFowMTOAWjAxMoBaMDExgFowMTCAWjAwOYBaMDA4gFowMDeAWjAwNoBaMDA1QYBaMDA1gFowMDRBgFowMDSAWjAwM0KAWjAwM0GAWjAwM4BaMDAyRIBaMDAyQ4BaMDAyQoBaMDAyQYBaMDAygFowMDGAWoDaWVlYgFlZVIBZWVJYgFlZUoBZWVCAWVlFgFlZQUGAWVlBgFlZgFlXT0+AWVdPgFlXSUmAWVdJgFlXRYBZV0FBgFlXQYBZVoBZVViAWVVXT1GAWVVVS0FMRUFQSU5UVYBZVVWAWVVUgFlVU4BZVdNZVVJYgFlVUoBZVVGAWVXRWVVQgFlVT1iAWVVPVIBZVU9QgFlVT02AWVVPgFlVToBZVU2AWVVKgFlVSYBZVUVRgFlVRYBZVURIgFlVRMhZVUFOgFlVQUVOgFlVLVlFT4BZVS1ZRYBZVS1VgFlVLU+AWVUtSYBZVS1FT4BZVS1FgFlVLUFFgFlVLUGAWVUtNIBZVS0zgFlVLTKAWVUtMYBZVYBZ1VlSWYBZUFNJTEmAWVBPUlJPSYBZUE9LUklTSVOAWVBPS1JJU0nTWVBPR0VHUkFNTUVOSYBZT1mAWU9YgFlPV0SAWU9VVEhGVUxORVNTgFlPVVRIRlXMWU/VWU9UgFlP1FlPUkmAWU9RgFlP0VlPUIBZT0+AWU9NT4BZT0dIgFlPRIBZT8RZT0GAWU8tWU+AWU8tWUVPgFlPLVlBRYBZTy1ZQYBZTy1PgFlPLUmAWU8tRU+AWU8tQUWAWU8tQYBZTy02gFlPLTWAWU8tNIBZTy0zgFlPLTKAWU8tMYBZz1lJWkVUgFlJWIBZSVdOgFlJVIBZSVCAWUlOR4BZSUmAWUlIgFlJx1lJRViAWUlFVIBZSUVQgFlJRUWAWUlFgFlJRERJU8hZSS1VgFlJgFlIRYBZSEGAWUZFU0lTgFlGRVNJ01lGRc5ZRVpJRMlZRVmAWUVXgFlFVViAWUVVUkFFgFlFVVGAWUVVTYBZRVVBRVSAWUVVQUWAWUVUSVaAWUVTVFWAWUVTSUVVTkctU1NBTkdLSVlFT0uAWUVTSUVVTkctU0lPU4BZRVNJRVVORy1QQU5TSU9TgFlFU0lFVU5HLU1JRVVNgFlFU0lFVU5HLUtJWUVPS4BZRVNJRVVORy1LSElFVUtIgFlFU0lFVU5HLUhJRVVIgFlFU0lFVU5HgFlFUlWAWUVS1VlFUkmAWUVSQchZRVKAWUVPUklOSElFVUiAWUVPLVlBgFlFTy1VgFlFTy1PgFlFTklTRclZRU5BUIBZRU6AWUXOWUVMTE9XgFlFTExP11lFSU6AWUVIgFlFRUeAWUVFgFlFQdJZRUGAWUFaWoBZQVpIgFlBWoBZQVlEgFlBWUFOTkGAWUFZgFlBV05JTsdZQVdOgFlBV4BZQVaAWUFVgFlBVFSAWUFUSYBZQVRIgFlBVIBZQVNTgFlBU0iAWUFTgFlBUlKAWUFSToBZQVKAWUHSWUFRgFlBUIBZQU5TQVlBgFlBTkeAWUFOx1lBToBZQU1PS4BZQU1BS0tBToBZQU2AWUFMgFlBS0hIgFlBS0iAWUFLQVNIgFlBS4BZQUpVUlZFREnDWUFKgFlBSYBZQUhIgFlBSIBZQUdOgFlBR0hIgFlBR0iAWUFHgFlBRtVZQUaAWUFFTU1BRYBZQURIgFlBRERIgFlBRESAWUFEgFlBQ0iAWUFCSIBZQUKAWUFBUlWAWUFBSYBZQUFET4BZQS1ZT4BZQS1VgFlBLU+AWUEtNYBZQS00gFlBLTOAWUEtMoBZQS0xgFkwMDiAWTAwN4BZMDA2gFkwMDWAWTAwNIBZMDAzgFkwMDKAWTAwMUGAWTAwMYBZLUNSRcVYWViAWFlVgFhZVIBYWVJYgFhZUoBYWVCAWFlPT0qAWFlPT4BYWU+AWFlJgFhZRUXNWFlFRYBYWUWAWFlBQYBYWUGAWFmAWFdJgFhXRUWAWFdFgFhXQUGAWFdBgFhXgFjXWFZFgFhWQYBYVU9YgFhVT4BYVYBYU0hBQVlBVEhJWUGAWE9YgFhPVIBYT1KAWE9QSIBYT1CAWE9BgFhPgFhJWIBYSVSAWElST85YSVCAWElFWIBYSUVUgFhJRVCAWElFgFhJQU5HUclYSUFCgFhJgFhIRVlOgFhHgFhFWU6AWEVTVEXTWEVIgFhFRYBYRYBYQVVTgFhBVYBYQVBIgFhBToBYQUGAWEGAWDAwOEGAWDAwOIBYMDA3gFgwMDZBgFgwMDaAWDAwNYBYMDA0QoBYMDA0QYBYMDA0gFgwMDOAWDAwMoBYMDAxgFgt2FgtUkFZgFdagFdZTk6AV1lOzldWSYBXVkWAV1ZBgFdWgFdVUIBXVU9YgFdVT1CAV1VPgFdVTkrPV1VOgFdVTFWAV1VM1VdVSYBXVUWAV1VBRVSAV1VBRU6AV1WAV1LZV1JPTkeAV1JJU9RXUklOS0xFU4BXUklOS0xF01dSSU5LTEVEgFdSRVNUTEVSU4BXUkVOQ0iAV1JFQVTIV1JBUFBFxFdSQVCAV09YgFdPV4BXT1JTSElQgFdPUlJJRcRXT1JNgFdPUkzEV09SS0VSgFdPUkuAV09Sy1dPUkRTUEFDRYBXT1LEV09QgFdPT06AV09PTIBXT09EUy1DUkXFV09PRIBXT06AV0/OV09NRU7TV09NRc5XT01BTtNXT01BToBXT01BzldPTE9TT4BXT0zGV09FgFdPQYBXTy03gFdPLTaAV08tNYBXTy00gFdPLTOAV08tMoBXTy0xgFdJVEhPVdRXSVRISU6AV0lUSEnOV0lSRcRXSU5URVKAV0lOS0lOx1dJTkuAV0lOSkGAV0lOR1OAV0lORYBXSU7FV0lORFWAV0lORE9XgFdJTkSAV0lOxFdJToBXSUxURcRXSUdOWUFOgFdJR0dM2VdJR0dMRVOAV0lEVEiAV0lERU5JTsdXSURFLUhFQURFxFdJRMVXSUFOR1dBQUuAV0lBTkeAV0ktNYBXSS00gFdJLTOAV0ktMoBXSS0xgFdIT0zFV0hJVEUtRkVBVEhFUkXEV0hJVEWAV0hFRUxFxFdIRUVMQ0hBSVKAV0hFRUxDSEFJ0ldIRUVMgFdIRUXMV0hFQVSAV0hBTEWAV0iAV0eAV0VYgFdFVViAV0XUV0VTVEVSzldFU1QtQ1JFxVdFU1SAV0VT1FdFUIBXRU+AV0VOgFdFTEyAV0VJR0jUV0VJRVJTVFJBU9NXRUmAV0VFToBXRURHRS1UQUlMRcRXRURHRYBXRURESU5HgFdFQoBXRUFS2VdFQVBPToBXRS00gFdFLTOAV0UtMoBXRS0xgFdDgFdCgFdBWYBXQdlXQVhJTsdXQViAV0FXLUFZSU4tUkVTSIBXQVeAV0HXV0FW2VdBVklOx1dBVkVTgFdBVkWAV0FWxVdBVYBXQVRUT4BXQVRFUk1FTE9OgFdBVEVSgFdBVEXSV0FUQ0iAV0FUgFdBU1RJTkeAV0FTVEVCQVNLRVSAV0FTU0FMTEFNgFdBU0xBgFdBU0zBV0FTQUxMQU2AV0FTQUxMQc1XQVMtU0FMQUFNgFdBUk5JTsdXQVJBTsdXQVFGQYBXQVCAV0FOSU7HV0FOR0tVT1GAV0FOREVSRVKAV0FORIBXQU5DSM9XQU6AV0FMTFBMQU7FV0FMTIBXQUzMV0FMS4BXQUzLV0FJVElOR4BXQUlTVIBXQUmAV0FGRkxFgFdBRU6AV0FFgFdBRERBgFdBQVZVgFdBQUpJQoBXQUFBTElIRcVXQS1UQUFBTEFBgFdBLVNBTExBTYBXQS1BQUxJSIBXQS01gFdBLTSAV0EtM4BXQS0ygFdBLTGAV8FXMDI1gFcwMjRBgFcwMjSAVzAyM4BXMDIygFcwMjGAVzAyMIBXMDE5gFcwMThBgFcwMTiAVzAxN0GAVzAxN4BXMDE2gFcwMTWAVzAxNEGAVzAxNIBXMDEzgFcwMTKAVzAxMYBXMDEwQYBXMDEwgFcwMDlBgFcwMDmAVzAwOIBXMDA3gFcwMDaAVzAwNYBXMDA0gFcwMDNBgFcwMDOAVzAwMoBXMDAxgFZaTUVUgFZagFZZWIBWWVSAVllTT0tPgFZZU09Lz1ZZUliAVllSgFZZUIBWWYBWWIBWV0qAVldBgFZXgFZVWIBWVVWAVlVUgFZVUliAVlVSgFZVUIBWVUxHQdJWVUxDQU5VU4BWVUVRgFZUU4BWVIBWUzk5gFZTOTiAVlM5N4BWUzk2gFZTOTWAVlM5NIBWUzkzgFZTOTKAVlM5MYBWUzkwgFZTOYBWUzg5gFZTODiAVlM4N4BWUzg2gFZTODWAVlM4NIBWUzgzgFZTODKAVlM4MYBWUzgwgFZTOIBWUzc5gFZTNziAVlM3N4BWUzc2gFZTNzWAVlM3NIBWUzczgFZTNzKAVlM3MYBWUzcwgFZTN4BWUzY5gFZTNjiAVlM2N4BWUzY2gFZTNjWAVlM2NIBWUzYzgFZTNjKAVlM2MYBWUzYwgFZTNoBWUzU5gFZTNTiAVlM1N4BWUzU2gFZTNTWAVlM1NIBWUzUzgFZTNTKAVlM1MYBWUzUwgFZTNYBWUzQ5gFZTNDiAVlM0N4BWUzQ2gFZTNDWAVlM0NIBWUzQzgFZTNDKAVlM0MYBWUzQwgFZTNIBWUzM5gFZTMziAVlMzN4BWUzM2gFZTMzWAVlMzNIBWUzMzgFZTMzKAVlMzMYBWUzMwgFZTM4BWUzI5gFZTMjiAVlMyN4BWUzI2gFZTMjU2gFZTMjU1gFZTMjU0gFZTMjUzgFZTMjUygFZTMjUxgFZTMjUwgFZTMjWAVlMyNDmAVlMyNDiAVlMyNDeAVlMyNDaAVlMyNDWAVlMyNDSAVlMyNDOAVlMyNDKAVlMyNDGAVlMyNDCAVlMyNIBWUzIzOYBWUzIzOIBWUzIzN4BWUzIzNoBWUzIzNYBWUzIzNIBWUzIzM4BWUzIzMoBWUzIzMYBWUzIzMIBWUzIzgFZTMjI5gFZTMjI4gFZTMjI3gFZTMjI2gFZTMjI1gFZTMjI0gFZTMjIzgFZTMjIygFZTMjIxgFZTMjIwgFZTMjKAVlMyMTmAVlMyMTiAVlMyMTeAVlMyMTaAVlMyMTWAVlMyMTSAVlMyMTOAVlMyMTKAVlMyMTGAVlMyMTCAVlMyMYBWUzIwOYBWUzIwOIBWUzIwN4BWUzIwNoBWUzIwNYBWUzIwNIBWUzIwM4BWUzIwMoBWUzIwMYBWUzIwMIBWUzIwgFZTMoBWUzE5OYBWUzE5OIBWUzE5N4BWUzE5NoBWUzE5NYBWUzE5NIBWUzE5M4BWUzE5MoBWUzE5MYBWUzE5MIBWUzE5gFZTMTg5gFZTMTg4gFZTMTg3gFZTMTg2gFZTMTg1gFZTMTg0gFZTMTgzgFZTMTgygFZTMTgxgFZTMTgwgFZTMTiAVlMxNzmAVlMxNziAVlMxNzeAVlMxNzaAVlMxNzWAVlMxNzSAVlMxNzOAVlMxNzKAVlMxNzGAVlMxNzCAVlMxN4BWUzE2OYBWUzE2OIBWUzE2N4BWUzE2NoBWUzE2NYBWUzE2NIBWUzE2M4BWUzE2MoBWUzE2MYBWUzE2MIBWUzE2gFZTMTU5gFZTMTU4gFZTMTU3gFZTMTU2gFZTMTU1gFZTMTU0gFZTMTUzgFZTMTUygFZTMTUxgFZTMTUwgFZTMTWAVlMxNDmAVlMxNDiAVlMxNDeAVlMxNDaAVlMxNDWAVlMxNDSAVlMxNDOAVlMxNDKAVlMxNDGAVlMxNDCAVlMxNIBWUzEzOYBWUzEzOIBWUzEzN4BWUzEzNoBWUzEzNYBWUzEzNIBWUzEzM4BWUzEzMoBWUzEzMYBWUzEzMIBWUzEzgFZTMTI5gFZTMTI4gFZTMTI3gFZTMTI2gFZTMTI1gFZTMTI0gFZTMTIzgFZTMTIygFZTMTIxgFZTMTIwgFZTMTKAVlMxMTmAVlMxMTiAVlMxMTeAVlMxMTaAVlMxMTWAVlMxMTSAVlMxMTOAVlMxMTKAVlMxMTGAVlMxMTCAVlMxMYBWUzEwOYBWUzEwOIBWUzEwN4BWUzEwNoBWUzEwNYBWUzEwNIBWUzEwM4BWUzEwMoBWUzEwMYBWUzEwMIBWUzEwgFZTMYBWU4BWUkFLSElZwVZSQUNIWYBWUYBWT1iAVk9XRUwtQ0FSUklF0lZPV4BWT1WAVk9UgFZP01ZPUIBWT09JgFZPT4BWT01JVElOR4BWT02AVk9MVU3FVk9MVEFHxVZPTExFWUJBTEyAVk9MQ0FOT4BWT0xBUFXLVk9JREXEVk9JxFZPSUNJTkeAVk9JQ0VMRVPTVk9JQ0XEVk9EgFZPQ0FMSVpBVElPzlZPQ0HMVk+AVklZT4BWSViAVklUUklPTC0ygFZJVFJJT0yAVklUSEtVUclWSVRBRS0ygFZJVEFFgFZJVIBWSVNJR09USEnDVklTQVJHQVlBgFZJU0FSR0GAVklTQVJHwVZJUklBTYBWSVJHT4BWSVJHQYBWSVJBTUGAVklQgFZJT0xJToBWSU5FR0FSLTOAVklORUdBUi0ygFZJTkVHQVKAVklORUdB0lZJTkWAVklOxVZJToBWSUxMQUdFgFZJSYBWSUdJTlRJTEWAVklFWIBWSUVXSU7HVklFV0VSgFZJRVdEQVTBVklFVE5BTUVTxVZJRVSAVklF1FZJRVCAVklFgFZJREotMoBWSURKgFZJREVPQ0FTU0VUVEWAVklERc9WSURBgFZJQ1RPUtlWSUJSQVRJT85WSEGAVkZBgFZFWVqAVkVYgFZFV4BWRddWRVVYgFZFVU2AVkVVQUVQRU6AVkVVQUWAVkVTVEGAVkVTVIBWRVNTRcxWRVLZVkVSVElDQUxMWYBWRVJUSUNBTEzZVkVSVElDQUwtMDYtMDaAVkVSVElDQUwtMDYtMDWAVkVSVElDQUwtMDYtMDSAVkVSVElDQUwtMDYtMDOAVkVSVElDQUwtMDYtMDKAVkVSVElDQUwtMDYtMDGAVkVSVElDQUwtMDYtMDCAVkVSVElDQUwtMDUtMDaAVkVSVElDQUwtMDUtMDWAVkVSVElDQUwtMDUtMDSAVkVSVElDQUwtMDUtMDOAVkVSVElDQUwtMDUtMDKAVkVSVElDQUwtMDUtMDGAVkVSVElDQUwtMDUtMDCAVkVSVElDQUwtMDQtMDaAVkVSVElDQUwtMDQtMDWAVkVSVElDQUwtMDQtMDSAVkVSVElDQUwtMDQtMDOAVkVSVElDQUwtMDQtMDKAVkVSVElDQUwtMDQtMDGAVkVSVElDQUwtMDQtMDCAVkVSVElDQUwtMDMtMDaAVkVSVElDQUwtMDMtMDWAVkVSVElDQUwtMDMtMDSAVkVSVElDQUwtMDMtMDOAVkVSVElDQUwtMDMtMDKAVkVSVElDQUwtMDMtMDGAVkVSVElDQUwtMDMtMDCAVkVSVElDQUwtMDItMDaAVkVSVElDQUwtMDItMDWAVkVSVElDQUwtMDItMDSAVkVSVElDQUwtMDItMDOAVkVSVElDQUwtMDItMDKAVkVSVElDQUwtMDItMDGAVkVSVElDQUwtMDItMDCAVkVSVElDQUwtMDEtMDaAVkVSVElDQUwtMDEtMDWAVkVSVElDQUwtMDEtMDSAVkVSVElDQUwtMDEtMDOAVkVSVElDQUwtMDEtMDKAVkVSVElDQUwtMDEtMDGAVkVSVElDQUwtMDEtMDCAVkVSVElDQUwtMDAtMDaAVkVSVElDQUwtMDAtMDWAVkVSVElDQUwtMDAtMDSAVkVSVElDQUwtMDAtMDOAVkVSVElDQUwtMDAtMDKAVkVSVElDQUwtMDAtMDGAVkVSVElDQUwtMDAtMDCAVkVSVElDQUyAVkVSU0lDTEWAVkVSU8VWRVJHRYBWRVJESUdSSVOAVkVSgFZFUIBWRU5EgFZFTEmAVkVJTIBWRUhJQ0xFgFZFSIBWRchWRUWAVkXFVkVERYBWRUNUT9JWQ4BWQVlBTk5BgFZBWIBWQVaAVkHWVkFVgFZBVEhZgFZBVIBWQVNUTkVT01ZBU0lTgFZBUlnTVkFSSUtBgFZBUklBTlSAVkFSSUFO1FZBUklBgFZBUknBVkFSRUlByVZBUkVJwVZBUkFBS0FOgFZBUE9VUlOAVkFQgFZBTkWAVkFNUElSRYBWQU1BR09NVUtIQYBWQU1BR09NVUtIwVZBTExFWYBWQUtBSVlBUkFBgFZBSoBWQUmAVkFIgFZByFZBQVZVgFZBQYBWwVYwNDBBgFYwNDCAVjAzOYBWMDM4gFYwMzdBgFYwMzeAVjAzNoBWMDM1gFYwMzSAVjAzM0GAVjAzM4BWMDMygFYwMzFBgFYwMzGAVjAzMEGAVjAzMIBWMDI5QYBWMDI5gFYwMjhBgFYwMjiAVjAyN4BWMDI2gFYwMjWAVjAyNIBWMDIzQYBWMDIzgFYwMjKAVjAyMYBWMDIwTIBWMDIwS4BWMDIwSoBWMDIwSYBWMDIwSIBWMDIwR4BWMDIwRoBWMDIwRYBWMDIwRIBWMDIwQ4BWMDIwQoBWMDIwQYBWMDIwgFYwMTmAVjAxOIBWMDE3gFYwMTaAVjAxNYBWMDE0gFYwMTOAVjAxMkKAVjAxMkGAVjAxMoBWMDExQ4BWMDExQoBWMDExQYBWMDExgFYwMTCAVjAwOYBWMDA4gFYwMDdCgFYwMDdBgFYwMDeAVjAwNoBWMDA1gFYwMDSAVjAwM4BWMDAyQYBWMDAygFYwMDFJgFYwMDFIgFYwMDFHgFYwMDFGgFYwMDFFgFYwMDFEgFYwMDFDgFYwMDFCgFYwMDFBgFYwMDGAVVpVgFVaSEFLS1WAVVozgFVas1VagFVZR0hV0lVZQU5OQYBVWYBVV1WAVVVZQU5OQYBVVVVVgFVVVTOAVVVVMoBVVUWAVVRVS0mAVVNTVTOAVVNTVYBVU0hYgFVTSFVNWIBVU0hFTk5BgFVTSDKAVVNIgFVTyFVTRcRVU0UtMoBVU0UtMYBVU0WAVVPFVVJV2lVSVVOAVVJVREGAVVJVRMFVUlWAVVLVVVJOgFVSSU5FgFVSSTOAVVJJgFVSQU5VU4BVUkGAVVI0gFVSMoBVUrJVUFdBUkRTgFVQV0FSRNNVUFdBUkSAVVBXQVLEVVBUVVJOgFVQU0lMT06AVVBTSUxPzlVQU0lERS1ET1fOVVBSSUdI1FVQUEVSgFVQQURITUFOSVlBgFVQLVBPSU5USU7HVU9OgFVPR4BVTk6AVU5NQVJSSUXEVU5LTk9XToBVTkuAVU5JVkVSU0HMVU5JVFmAVU5JVEXEVU5JVIBVTknUVU5JT06AVU5JT85VTklGT1JNgFVOSUZJRcRVTklDT1LOVU5FVkXOVU5Ez1VOREVSVElFgFVOREVSTElOxVVOREVSRE9UgFVOREVSQkFSgFVOREVSgFVOREXSVU5DScFVTkNFUlRBSU5U2VVOQkxFTkRFxFVOQVNQSVJBVEVEgFVOQVCAVU5BTVVTRcRVTkGAVc5VTVVNgFVNVc1VTUJSRUxMQYBVTUJSRUxMwVVNQklOgFVLVYBVS1JBSU5JQc5VS0FSQYBVS0FSwVVLgFVJWoBVSViAVUlVWoBVSVVYgFVJVVGAVUlVQ4BVSVGAVUlMTEVBTk6AVUlHSFXSVUlDgFVIRIBVR0FSSVRJw1VFWoBVRVmAVUVYgFVFToBVRUmAVUVFgFVFQ4BVRUGAVURVR4BVREFUVEGAVURBVFTBVURBUktBgFVEQUFUgFVEgFXEVUJVRklMSYBVQkhBWUFUz1VCQURBTUGAVUKAVUFUSIBVQU5HgFVBgFWyVTA0MoBVMDQxgFUwNDCAVTAzOYBVMDM4gFUwMzeAVTAzNoBVMDM1gFUwMzSAVTAzM4BVMDMyQYBVMDMygFUwMzGAVTAzMIBVMDI5QYBVMDI5gFUwMjiAVTAyN4BVMDI2gFUwMjWAVTAyNIBVMDIzQYBVMDIzgFUwMjKAVTAyMYBVMDIwgFUwMTmAVTAxOIBVMDE3gFUwMTaAVTAxNYBVMDE0gFUwMTOAVTAxMoBVMDExgFUwMTCAVTAwOYBVMDA4gFUwMDeAVTAwNkKAVTAwNkGAVTAwNoBVMDA1gFUwMDSAVTAwM4BVMDAygFUwMDGAVS1TSEFQRcRVLUktSYBVLUVPLUVVgFUtQlJKR1WAVS01gFRaVYBUWk9BgFRaT4BUWknSVFpJgFRaRUWAVFpFgFRaQUGAVFpBgFRagFRZ0lRZUEUtt1RZUEUtNoBUWVBFLbZUWVBFLTWAVFlQRS21VFlQRS00gFRZUEUttFRZUEUtM4BUWVBFLbNUWVBFLbJUWVBFLTEtMoBUWVBFLbFUWVDFVFlPgFRZSYBUWUWAVFlBWYBUWUGAVFhXVoBUWFfWVFhIRUXKVFhBgFRXT0+AVFdPLVdB2VRXTy1USElSVFmAVFdPLUxJTsVUV08tSEVBREXEVFdPLUXNVFdPLUNJUkNMxVRXSVNUSU5HgFRXSVNURcRUV0lJgFRXSYBUV0VOVFktVFdPgFRXRU5UWS1UV89UV0VOVFktVEhSRUWAVFdFTlRZLVNJWIBUV0VOVFktU0VWRU6AVFdFTlRZLU9ORYBUV0VOVFktTklORYBUV0VOVFktRk9VUoBUV0VOVFktRklWRYBUV0VOVFktRklWxVRXRU5UWS1FSUdIVMhUV0VOVFktRUlHSFSAVFdFTlRZgFRXRU5U2VRXRU5USUVUSFOAVFdFTlRJRVRIgFRXRUxWRS1USElSVFmAVFdFTFZFgFRXRUxWxVRXRUxGVEhTgFRXRUxGVEiAVFdFgFRXQUGAVFdBgFRWUklET4BUVklNQURV0lRVWEVET4BUVViAVFVVTVWAVFVVgFRVVFRZgFRVVEVZQVNBVIBUVVSAVFVSWIBUVVJVgFRVUlRMRYBUVVJPMoBUVVJOU1RJTEWAVFVSzlRVUktJU8hUVVJLScNUVVJLRVmAVFVSQkFOgFRVUoBUVdJUVVBOSYBUVVCAVFVPWIBUVU9UgFRVT1CAVFVPgFRVTk5ZgFRVTUVURVOAVFVNQkxF0lRVTUFFgFRVTYBUVc1UVUxJUIBUVUtXRU5USVOAVFVLgFRVR1JJy1RVRzKAVFVHslRVQkWAVFVCgFRVQVJFx1RVQUVQgFRVQUWAVFUtVE+AVFUtNIBUVS0zgFRVLTKAVFUtMYBU1VRUVVWAVFRVRERBR4BUVFVEREFBR4BUVFWAVFRUSEGAVFRUQYBUVFNVgFRUU0+AVFRTSYBUVFNFRYBUVFNFgFRUU0GAVFRPT4BUVElJgFRUSYBUVEhXRYBUVEhVgFRUSE9PgFRUSE+AVFRISYBUVEhFRYBUVEhFgFRUSEFBgFRUSIBUVEVIRUiAVFRFSEXIVFRFSIBUVEXIVFRFRYBUVEFZQU5OQYBUVEFVgFRUQUmAVFRBQYBUVDKAVFNXRYBUU1dCgFRTV0GAVFNWgFRTU0WAVFNTQYBUU0/WVFNJVYBUU0hVR1OAVFNIT09LgFRTSE9Py1RTSE9PSoBUU0hFU4BUU0hFR4BUU0hFx1RTSEVFSoBUU0hFgFRTSEHCVFNIQYBUU0VSRYBUU0VFQoBUU0FUwVRTQURJgFRTQUTJVFNBQoBUU0FBRElZgFRTQUGAVFPBVFJZQkxJT85UUllBU09TVFJFTE5BWUGAVFJZQVNPUE9WT0ROQVlBgFRSWUFTT0dMQVNOQVlBgFRSWUFTS0GAVFJVVEiAVFJVTkuAVFJVTkNBVEXEVFJVTVBFVIBUUlVNUC05gFRSVU1QLTiAVFJVTVAtN4BUUlVNUC02gFRSVU1QLTWAVFJVTVAtNIBUUlVNUC0zgFRSVU1QLTIxgFRSVU1QLTIwgFRSVU1QLTKAVFJVTVAtMTmAVFJVTVAtMTiAVFJVTVAtMTeAVFJVTVAtMTaAVFJVTVAtMTWAVFJVTVAtMTSAVFJVTVAtMTOAVFJVTVAtMTKAVFJVTVAtMTGAVFJVTVAtMTCAVFJVTVAtMYBUUlVFgFRSVcVUUlVDS4BUUk9QSUNBzFRST1BIWYBUUk9NSUtPU1lOQUdNQYBUUk9NSUtPUFNJRklTVE9OgFRST01JS09QQVJBS0FMRVNNQYBUUk9NSUtPToBUUk9NSUtPzlRST01JS09MWUdJU01BgFRST0xMRVlCVVOAVFJPTExFWYBUUk9MTIBUUk9LVVRBU1TJVFJPRVpFTklBzlRSSVVNUEiAVFJJVE/TVFJJVElNT1JJT06AVFJJU0lNT1WAVFJJU0VNRYBUUklQT0SAVFJJUExJgFRSSVBMRYBUUklQTMVUUklPzlRSSUxMSU9OU4BUUklMTIBUUklJU0FQgFRSSUdSQU1NT9NUUklHUkHNVFJJR09SR09OgFRSSUZPTklBU4BUUklGT0xJQVTFVFJJREVOVIBUUklERU7UVFJJQ09MT06AVFJJQU5HVUxB0lRSSUFOR0xFLVJPVU7EVFJJQU5HTEUtSEVBREXEVFJJQU5HTEWAVFJJQU5HTMVUUklBgFRSSYBUUkVTVkVUTFmAVFJFU1ZFVExPgFRSRVNWRVRMQVlBgFRSRVNJTExPgFRSRU5EgFRSRU7EVFJFTU9MTy0zgFRSRU1PTE8tMoBUUkVNT0xPLTGAVFJFRYBUUkXFVFJFREVDSUxFgFRSRUFESU5HgFRSQVmAVFJBVkVMLVdBTExQTEFOxVRSQVZFTC1GTE9PUlBMQU7FVFJBUEVaSVVNgFRSQVCAVFJBTlNWRVJTQcxUUkFOU1BPU0lUSU/OVFJBTlNQTFVUT4BUUkFOU01J1FRSQU5TTUlTU0lPToBUUkFOU01JU1NJT85UUkFNV0FZgFRSQU2AVFJBzVRSQUlOgFRSQUnOVFJBSUxJTsdUUkFGRklDgFRSQUZGScNUUkFESVRJT05BzFRSQUTFVFJBQ1RPUoBUUkFDS0JBTEyAVFJBQ0uAVFJBgFRSgFRPWIBUT1dFUoBUT1dBUkTTVE9WgFRPVVJOT0nTVE9VQ0hUT07FVE9VQ0hJTsdUT1VDSEXTVE9VQ8hUT1TPVE9UQcxUT1SAVE9TgFRPUlRPSVPFVE9SU08tV0FMTFBMQU7FVE9SU08tRkxPT1JQTEFOxVRPUlNPgFRPUk5BRE+AVE9SQ1VMVVOAVE9SQ1VMVdNUT1JDSIBUT1GAVE9QQkFSgFRPUC1MSUdIVEXEVE9QgFRP0FRPT1RIQlJVU0iAVE9PVEiAVE9PToBUT09MQk9YgFRPTk9TgFRPTkdVRYBUT05HVcVUT05HgFRPTkUtVoBUT05FLVOAVE9ORS1NgFRPTkUtSoBUT05FLUeAVE9ORS1EgFRPTkUtQoBUT05FLTiAVE9ORS03gFRPTkUtNoBUT05FLTWAVE9ORS00gFRPTkUtM4BUT05FLTKAVE9ORS0xgFRPTkWAVE9OQcxUT01QSYBUT01BVE+AVE9MT05HgFRPS1nPVE9JTEVUgFRPR0VUSEVSgFRPRM9UT0NIS0GAVE9BTkRBS0hJQVSAVE9BgFRPLVJBgFRPLTaAVE8tNYBUTy00gFRPLTOAVE8tMoBUTy0xgFROgFRMVoBUTFWAVExJgFRMSFlBgFRMSFdFgFRMSFWAVExIT0+AVExIT4BUTEhJgFRMSEVFgFRMSEWAVExIQYBUTEVFgFRMQYBUSkWAVElYgFRJV1KAVElXToBUSVdB2lRJVFVBRVCAVElUTE+AVElUTM9USVTBVElUgFRJUllBS4BUSVJUwVRJUk9OSUHOVElSSFVUwVRJUkXEVElSgFRJ0lRJUFBJgFRJUEVIQYBUSVCAVEnQVElOWYBUSU7ZVElOTkWAVElOQ1RVUkWAVElOQUdNQYBUSU1FU4BUSU1F0lRJTUWAVElMVElOR4BUSUxUSU7HVElMVIBUSUxFU4BUSUxERYBUSUxExVRJTIBUScxUSUtIWYBUSUtIQVlBgFRJS0hBWcFUSUtFVVQtVEhJRVVUSIBUSUtFVVQtU0lPUy1LSVlFT0uAVElLRVVULVNJT1OAVElLRVVULVJJRVVMgFRJS0VVVC1QSUVVUIBUSUtFVVQtTUlFVU2AVElLRVVULUtJWUVPS4BUSUtFVVQtQ0lFVUOAVElLRVVULUNISUVVQ0iAVElLRVVUgFRJS0VV1FRJR0hUTFktQ0xPU0XEVElHSNRUSUdFUoBUSUdF0lRJRklOQUfIVElFWIBUSUVQgFRJxVRJQ0tFVFOAVElDS0VUgFRJQ0uAVElDy1RJQVJBgFRJMoBUSS03gFRJLTaAVEktNYBUSS00gFRJLTOAVEktMoBUSS0xgFRIWoBUSFlPT81USFdPT4BUSFdPgFRIV0lJgFRIV0mAVEhXRUWAVEhXQUGAVEhXQYBUSFVS01RIVVJJU0HaVEhVTkeAVEhVTkRFUlNUT1JNgFRIVU5ERVKAVEhVTkRF0lRIVU1C01RIVU1CgFRIUk9XSU7HVEhST1VHSIBUSFJPVUfIVEhSRUUtVEhJUlRZgFRIUkVFLVFVQVJURdJUSFJFRS1QRVItRc1USFJFRS1MSU7FVEhSRUUtTEVHR0XEVEhSRUUtSFVORFJFRC1BTkQtVFdFTlRJRVRIgFRIUkVFLUXNVEhSRUUtRE/UVEhSRUUtxFRIUkVFLUNJUkNMxVRIUkVBRIBUSE9VU0FORFOAVEhPVVNBTkTTVEhPVVNBTsRUSE9VR0jUVEhPVYBUSE9SToBUSE9SzlRIT05HgFRIT07HVEhPTYBUSE9KgFRIT0GAVEjPVEhJVVRIgFRISVRBgFRISVJUWS1TRUNPTkSAVEhJUlRZLVNFQ09OxFRISVJUWS1PTkWAVEhJUlRZLUZJVsVUSElSVNlUSElSVEVFToBUSElSVEVFzlRISVJEU4BUSElSRNNUSElSRC1TVEFHxVRISVJEgFRISVLEVEhJTktJTsdUSElOR4BUSElJgFRISUdIgFRISUVVVMhUSElDy1RISUFCgFRIRVmAVEhFVEhFgFRIRVRIgFRIRVRBgFRIRVTBVEhFU1BJQc5USEVTRU9TgFRIRVNFT9NUSEXTVEhFUk1PTUVURVKAVEhFUk1PRFlOQU1JQ4BUSEVSRUZPUkWAVEhFUsVUSEXOVEhFTUFUSVNNT9NUSEVNQYBUSEVNwVRIRUiAVEhFyFRIRUGAVEjFVEhBV4BUSEFOVEhBS0hBVIBUSEFOTkGAVEhBToBUSEHOVEhBTUVESIBUSEFMgFRIQcxUSEFKgFRIQclUSEFIQU6AVEhBQU7BVEhBQUxVgFRILUNSRcVURVhUgFRFWNRURViAVEVWSVKAVEVVVEVVWIBURVVURVVXRU6AVEVVVIBURVVOgFRFVUFFUYBURVVBRU6AVEVVgFRFVFJBU0lNT1WAVEVUUkFTRU1FgFRFVFJBUExJgFRFVFJBR1JBzVRFVFJBRk9OSUFTgFRFVEiAVEVUyFRFVEFSVE/TVEVUQVJUSU1PUklPToBURVSAVEXUVEVT1FRFU1NFUkGAVEVTU0VSwVRFU1NBUk/OVEVTyFRFUk1JTkFUT1KAVEVSTUlOQcxURVCAVEVOVVRPgFRFTlWAVEVO1VRFTlRIgFRFTlSAVEVOU0WAVEVOU8VURU5TgFRFTtNURU5OSdNURU5HxVRFTi1USElSVFmAVEVOgFRFzlRFTVBV01RFTVBMRYBURUxVR9VURUxVgFRFTE9V01RFTExF0lRFTElTSMFURUxFVklTSU9OgFRFTEVTQ09QRYBURUxFUEhPTkWAVEVMRVBIT07FVEVMRUlBgFRFTEVHUkFQyFRFS4BURUlXU4BURUdFSIBURUVUSIBURUVUyFRFRU5TgFRFRUVFgFRFxVRFRFVOR4BURURE2VRFQVJTgFRFQVLTVEVBUkRST1AtU1BPS0XEVEVBUkRST1AtU0hBTktFxFRFQVJEUk9QLUJBUkJFxFRFQVItT0bGVEVBUoBURUFQT1SAVEVBQ1XQVEVBgFRFLVWAVEUtOYBURS04gFRFLTeAVEUtNoBURS01gFRFLTSAVEUtM4BURS0ygFRFLTGAVENIRUhFSIBUQ0hFSEXIVENIRUiAVENIRchUQ0hFgFTDVEFZgFRBWEmAVEFYgFRBV0VMTEVNRdRUQVdBgFRBV4BUQddUQVZJWUFOSYBUQVaAVEHWVEFVUlVTgFRBVU2AVEHVVEFUV0VFTIBUQVRXRUXMVEFUVE9PRcRUQVSAVEFTU0mAVEFTSEVFTIBUQVOAVEFSVU5HgFRBUlRBUi0ygFRBUlRBUoBUQVJHRVSAVEFRgFRBUEVSgFRBUMVUQVCAVEFPgFRBTk5FxFRBTkdTwVRBTkdFUklORYBUQU5HRU5UgFRBTkdFTtRUQU7HVEFOQUJBVMFUQU5BgFRBToBUQU1JTkeAVEFNQc5UQU1BTEWAVEFNgFRBTEzZVEFMTIBUQUzMVEFMSU5HgFRBTElOx1RBTEVOVFOAVEFMRU7UVEFLUslUQUtIQUxMVVOAVEFLRU9V1FRBS0WAVEFLNIBUQUu0VEFLgFRBSVNZT1WAVEFJTExFU9NUQUlMgFRBScxUQUhBTEGAVEFIgFRByFRBR0JBTlfBVEFHQUxPx1RBR4BUQcdUQUXOVEFDT4BUQUNLgFRBQ8tUQUJVTEFUSU9OgFRBQlVMQVRJT85UQUJTgFRBQkxFgFRBQkzFVEFCQUFSQUvBVEFCgFRBwlRBQVNIQUWAVEFBUYBUQUFNgFRBQUxVSsFUQUFJgFRBQUaAVEEygFRBLVJPTIBUQS00gFRBLTOAVEEtMoBUQS0xgFQwMzaAVDAzNYBUMDM0gFQwMzNBgFQwMzOAVDAzMkGAVDAzMoBUMDMxgFQwMzCAVDAyOYBUMDI4gFQwMjeAVDAyNoBUMDI1gFQwMjSAVDAyM4BUMDIygFQwMjGAVDAyMIBUMDE5gFQwMTiAVDAxN4BUMDE2QYBUMDE2gFQwMTWAVDAxNIBUMDEzgFQwMTKAVDAxMUGAVDAxMYBUMDEwgFQwMDlBgFQwMDmAVDAwOEGAVDAwOIBUMDA3QYBUMDA3gFQwMDaAVDAwNYBUMDA0gFQwMDNBgFQwMDOAVDAwMoBUMDAxgFQtU0hJUlSAVC1SRViAU1pagFNaV0eAU1pXQYBTWlWAU1pPgFNaSYBTWkVFgFNaRYBTWkFBgFNaQYBTWoBTWViAU1lUgFNZU1RFzVNZUliAU1lSTUFUSUtJgFNZUk1BgFNZUklOR0WAU1lSSUHDU1lSgFNZUIBTWU9VV0GAU1lORVZNQYBTWU5ERVNNT9NTWU5DSFJPTk9V01NZTkFHT0dVRYBTWU5BR03BU1lOQUZJgFNZToBTWU1NRVRSWYBTWU1NRVRSScNTWU1CT0xTgFNZTUJPTNNTWU1CT0wtOYBTWU1CT0wtOIBTWU1CT0wtN4BTWU1CT0wtNoBTWU1CT0wtNTSAU1lNQk9MLTUzgFNZTUJPTC01MoBTWU1CT0wtNTGAU1lNQk9MLTUwgFNZTUJPTC01gFNZTUJPTC00OYBTWU1CT0wtNDiAU1lNQk9MLTQ3gFNZTUJPTC00NYBTWU1CT0wtNDOAU1lNQk9MLTQygFNZTUJPTC00MIBTWU1CT0wtNIBTWU1CT0wtMzmAU1lNQk9MLTM4gFNZTUJPTC0zN4BTWU1CT0wtMzaAU1lNQk9MLTMygFNZTUJPTC0zMIBTWU1CT0wtM4BTWU1CT0wtMjmAU1lNQk9MLTI3gFNZTUJPTC0yNoBTWU1CT0wtMjWAU1lNQk9MLTI0gFNZTUJPTC0yM4BTWU1CT0wtMjKAU1lNQk9MLTIxgFNZTUJPTC0yMIBTWU1CT0wtMoBTWU1CT0wtMTmAU1lNQk9MLTE4gFNZTUJPTC0xN4BTWU1CT0wtMTaAU1lNQk9MLTE1gFNZTUJPTC0xNIBTWU1CT0wtMTOAU1lNQk9MLTEygFNZTUJPTC0xMYBTWU1CT0wtMTCAU1lNQk9MLTGAU1lMT1TJU1lJgFNZgFNXWoBTV1VOx1NXT1JEU4BTV09SRIBTV09PgFNXT4BTV0lSzFNXSU1TVUlUgFNXSU1NSU5HgFNXSU1NRVKAU1dJSYBTV0mAU1dHgFNXRUVUgFNXRUXUU1dFQVSAU1dFQdRTV0FTyFNXQVBQSU5HgFNXQU6AU1dBQYBTV4BTVkFTVMlTVkFSSVRBgFNWQVJJVMFTVViAU1VVgFNVVFLBU1VUgFNVU1BFTlNJT85TVVNISYBTVVJZQYBTVVJYgFNVUlJPVU5EgFNVUlJPVU7EU1VSRkVSgFNVUkZBQ8VTVVJFgFNVUkFOR4BTVVI5gFNVUoBTVdJTVVBSQUxJTkVB0lNVUEVSVklTRYBTVVBFUlZJTExBSU6AU1VQRVJTRVSAU1VQRVJTRdRTVVBFUlNDUklQ1FNVUEVSSU1QT1NFxFNVUEVSSEVST4BTVVBFUkZJWEXEU1VQRdJTVVCAU1VPWIBTVU9QgFNVT4BTVU5TRdRTVU5SSVNFgFNVTlJJU8VTVU5HTEFTU0VTgFNVTkeAU1VORkxPV0VSgFNVTkRBTkVTxVNVToBTVc5TVU1NRVKAU1VNTUFUSU9OgFNVTU1BVElPzlNVTUFTSIBTVU2AU1VMRlVSgFNVS1VOgFNVS1XOU1VLVYBTVUvVU1VJVEFCTEWAU1VJ1FNVSFVSgFNVRYBTVUQygFNVRIBTVUNLSU7HU1VDS0VEgFNVQ8tTVUNDRUVEU4BTVUNDRUVE01NVQ0NFRUSAU1VDQ0VFxFNVQlVOSVSAU1VCU1RJVFVUSU/OU1VCU1RJVFVURYBTVUJTVElUVVTFU1VCU0VUgFNVQlNF1FNVQlNDUklQ1FNVQlBVTkNUSVOAU1VCTElORUHSU1VCTElNQVRJT06AU1VCTElNQVRFLTOAU1VCTElNQVRFLTKAU1VCTElNQVRFgFNVQkxJTUFUxVNVQkpPSU5FUoBTVUJKT0lORcRTVUJKRUNUgFNVQklUT4BTVUJIQUFOQUjVU1VCR1JPVVCAU1VCR1JPVdBTVUKAU1VBTYBTVUFFVIBTVUFFToBTVUFFgFNVQUKAU1VBgFNVLTiAU1UtN4BTVS02gFNVLTWAU1UtNIBTVS0zgFNVLTKAU1UtMYBT1VNUWIBTVFdBgFNUVVBBgFNUVUZGRcRTVFVEWYBTVFVESc9TVFVDSy1PVdRTVFOAU1RST07HU1RST0tFU4BTVFJPS0XTU1RST0tFLTmAU1RST0tFLTiAU1RST0tFLTeAU1RST0tFLTaAU1RST0tFLTWAU1RST0tFLTSAU1RST0tFLTOAU1RST0tFLTKAU1RST0tFLTExgFNUUk9LRS0xMIBTVFJPS0UtMYBTVFJPS8VTVFJJUEWAU1RSSU5HgFNUUklOx1NUUklLRVRIUk9VR0iAU1RSSUvFU1RSSURFgFNUUklDVEzZU1RSRVRDSEXEU1RSRVRDSIBTVFJFU9NTVFJFTkdUSIBTVFJFTMFTVFJFQU1FUoBTVFJBV0JFUlJZgFNUUkFXgFNUUkFUVU0tMoBTVFJBVFVNgFNUUkFUVc1TVFJBVElBzlNUUkFOTk+AU1RSQU5Oz1NUUkFJTkVSgFNUUkFJR0hUTkVTU4BTVFJBSUdIVIBTVFJBSUdI1FNUUkFJRoBTVFJBR0dJU01BVEGAU1RPVkWAU1RPUkWAU1RPUFdBVENIgFNUT1BQSU5HgFNUT1BQQUdFgFNUT1BJVFNBgFNUT1BJVFPBU1RPUIBTVE/QU1RPTkWAU1RPQ0uAU1RPQ8tTVElSUlXQU1RJTU1FgFNUSUzMU1RJTMVTVElHTUGAU1RJQ0tJTsdTVElDy1NURVRIT1NDT1BFgFNURVJFT4BTVEVQgFNURU5PR1JBUEhJw1NURU2AU1RFQU3ZU1RFQU1JTsdTVEVBTYBTVEVBzVNUQVZST1WAU1RBVlJPU4BTVEFWUk/TU1RBVVJPU4BTVEFUWUGAU1RBVFnBU1RBVFXFU1RBVElPToBTVEFURVJTgFNUQVRFgFNUQVJUSU7HU1RBUlSAU1RBUtRTVEFSU4BTVEFSUkXEU1RBUkuAU1RBUoBTVEHSU1RBTkRTVElMTIBTVEFORElOx1NUQU5EQVLEU1RBTkSAU1RBToBTVEFNUEXEU1RBTExJT06AU1RBRkaAU1RBRsZTVEFESVVNgFNUQUNLRcRTVEFDQ0FUT4BTVEFDQ0FUSVNTSU1PgFNUMoBTU1lYgFNTWVSAU1NZUliAU1NZUoBTU1lQgFNTWYBTU1VYgFNTVVWAU1NVVIBTU1VQgFNTT1iAU1NPVIBTU09QgFNTT0+AU1NPgFNTSViAU1NJVIBTU0lQgFNTSUmAU1NJRViAU1NJRVCAU1NJRYBTU0hJToBTU0hFgFNTRViAU1NFUIBTU0VFgFNTQViAU1NBVYBTU0FUgFNTQVCAU1NBTkdZRVNJRVVOR4BTU0FOR1lFT1JJTkhJRVVIgFNTQU5HVElLRVVULVBJRVVQgFNTQU5HVElLRVVUgFNTQU5HVEhJRVVUSIBTU0FOR1NJT1MtVElLRVVUgFNTQU5HU0lPUy1QSUVVUIBTU0FOR1NJT1MtS0lZRU9LgFNTQU5HU0lPU4BTU0FOR1JJRVVMLUtISUVVS0iAU1NBTkdSSUVVTIBTU0FOR1BJRVVQgFNTQU5HTklFVU6AU1NBTkdNSUVVTYBTU0FOR0lFVU5HgFNTQU5HSElFVUiAU1NBTkdDSUVVQy1ISUVVSIBTU0FOR0NJRVVDgFNTQU5HQVJBRUGAU1NBSYBTU0FBgFNTM4BTUzKAU1JFRE7FU1KAU1FVSVPIU1FVSVJSRcxTUVVJR0dMxVNRVUlEgFNRVUVFWkVEgFNRVUVFWsVTUVVB1FNRVUFSRVOAU1FVQVJFRIBTUVVBUkWAU1BZgFNQV0GAU1BVTkfTU1BST1VUgFNQUklOR1OAU1BSSU5HgFNQUkVDSEdFU0FOx1NQUkVBRIBTUFJFQcRTUE9VVElOx1NQT1SAU1BPUlTTU1BPT06AU1BPT8xTUE9OR0WAU1BPgFNQTElUVElOx1NQTElUgFNQTEnUU1BMQVlFRIBTUExBU0hJTsdTUElSSVRV01NQSVJJVIBTUElSSdRTUElSQU5UgFNQSVJBTIBTUElSQcxTUElORYBTUElERVLZU1BJREVSgFNQSURF0lNQSUNFgFNQSYBTUEhFUklDQcxTUEVTTUlMz1NQRU7UU1BFRURCT0FUgFNQRUVDSIBTUEVFQ8hTUEVDSUFMgFNQRUFSgFNQRUFLSU7HU1BFQUtFUoBTUEVBS0XSU1BFQUstTk8tRVZJzFNQRYBTUEFUSEmAU1BBUktMSU7HU1BBUktMRVOAU1BBUktMRVKAU1BBUktMRYBTUEFHSEVUVEmAU1BBREVTgFNQQUTFU1BBQ0lOx1NQQUPFU1BBgFNPWU9NQs9TT1mAU09XSUzPU09XgFNPVVRIRVLOU09VVEgtU0xBVkXZU09VVMhTT1VSQ0WAU09VTkSAU09VTsRTT1VOQVCAU09VgFNPU4BTT1JPQ0hZwVNPUkmAU09SwVNPUYBTT0/OU09OSkFNgFNPTkeAU09OgFNPTVBFTsdTT02AU0/NU09MSURVU4BTT0xJRFXTU09MScRTT0xESUVSgFNPSIBTT0dESUHOU09GVFdBUkUtRlVOQ1RJT85TT0ZUTkVTU4BTT0ZUQkFMTIBTT0bUU0/GU09DS1OAU09DSUVUWYBTT0NDRdJTT0FQgFNPQYBTTy03gFNPLTaAU08tNYBTTy00gFNPLTOAU08tMoBTTy0xgFPPU05PV01BToBTTk9XTUHOU05PV0ZMQUtFgFNOT1dCT0FSREVSgFNOT1eAU05P11NOT1VUgFNOT1XUU05FRVpJTsdTTkHQU05BS0WAU05BS8VTTkFJTIBTTsFTTU9LSU7HU01JUktJTsdTTUlMSU7HU01JTEWAU01JTMVTTUVBUoBTTUFTyFNNQUxMRdJTTUFMTIBTTFVSgFNMT1pISVRJRYBTTE9aSElUScVTTE9XTFmAU0xPV4BTTE/XU0xPVk+AU0xPVEiAU0xP1FNMT1BJTsdTTE9QRYBTTE9BzlNMSU5HgFNMSUdIVEzZU0xJRElOR4BTTElERVKAU0xJREWAU0xJQ0WAU0xJQ8VTTEVVVMhTTEVFUNlTTEVFUElOx1NMRUXQU0xFRIBTTEFWT05Jw1NMQVZFgFNMQVNIgFNMQVPIU0xBTlRFxFNLV0GAU0tXgFNLVU5LgFNLVUxMgFNLVUzMU0tPQkGAU0tMSVJPzlNLSU6AU0tJRVKAU0vJU0tFV0XEU0tBVEVCT0FSRIBTS0FURYBTS0FNRVlUU8FTS4BTSkWAU0laxVNJWFRZLUZPVVJUSFOAU0lYVFktRk9VUlRIgFNJWFRZLUZPVVJUyFNJWFRZgFNJWFTZU0lYVEhTgFNJWFRI01NJWFRIgFNJWFRFRU5USFOAU0lYVEVFTlRILTKAU0lYVEVFTlRILTGAU0lYVEVFTlRIgFNJWFRFRU5UyFNJWFRFRU6AU0lYVEVFzlNJWC1USElSVFmAU0lYLVNUUklOx1NJWC1QRVItRc1TSVgtTElOxVNJ2FNJVEWAU0lTQYBTSVJSQUiAU0lSSU5HVYBTSU9TLVRISUVVVEiAU0lPUy1TU0FOR1NJT1OAU0lPUy1SSUVVTIBTSU9TLVBJRVVQLUtJWUVPS4BTSU9TLVBISUVVUEiAU0lPUy1QQU5TSU9TgFNJT1MtTklFVU6AU0lPUy1NSUVVTYBTSU9TLUtISUVVS0iAU0lPUy1LQVBZRU9VTlBJRVVQgFNJT1MtSUVVTkeAU0lPUy1ISUVVSIBTSU9TLUNJRVVDgFNJT1MtQ0hJRVVDSIBTSU/TU0lOVVNPScRTSU5PTE9HSUNBzFNJTk5ZSUlZSEWAU0lOS0lOR4BTSU5HTEUtU0hJRlQtM4BTSU5HTEUtU0hJRlQtMoBTSU5HTEUtTElOxVNJTkdMRYBTSU5HTMVTSU5HQUFUgFNJTsVTSU5ESMlTSU6AU0nOU0lNVUxUQU5FT1VTgFNJTVVMVEFORU9V01NJTVBMSUZJRcRTSU1JTEFSgFNJTUlMQdJTSU1BTlNJ01NJTUFMVU5HVc5TSU1BgFNJTFZFUoBTSUxLgFNJTElRVcFTSUxIT1VFVFRFgFNJTEhPVUVUVMVTSUxBM4BTSUtJgFNJSzKAU0lLslNJR05TgFNJR01PScRTSUdNQYBTSUdNwVNJR0XMU0lHNIBTSUe0U0lHgFNJRUWAU0lERVdBWdNTSURFgFNJRMVTSURESEmAU0lEREhBTYBTSURESEHNU0lDS05FU1OAU0lDS0xFgFNJQsVTSUGAU0ktNoBTSS01gFNJLTSAU0ktM4BTSS0ygFNJLTGAU8lTSFlYgFNIWVSAU0hZUliAU0hZUoBTSFlQgFNIWUWAU0hZQYBTSFmAU0hXT1mAU0hXT0+AU0hXT4BTSFdJSYBTSFdJgFNIV0WAU0hXxVNIV0FBgFNIV0GAU0hWgFNIVViAU0hVVYBTSFVUVExFQ09DS4BTSFVUgFNIVVJYgFNIVVKAU0hVUIBTSFVPWIBTSFVPUIBTSFVPgFNIVU2AU0hVTIBTSFVGRkzFU0hVRVGAU0hVRU5TSFVFVIBTSFVCVVKAU0hVQU5HWEmAU0hVMoBTSFWyU0hVgFNIVEFQSUOAU0hUQYBTSFJVR4BTSFJPT4BTSFJPgFNIUklORYBTSFJJTVCAU0hSSUmAU0hSSYBTSFJBQYBTSFJBgFNIT1mAU0hPWIBTSE9XRVKAU0hPVUxERVJFxFNIT1VMREXSU0hPVYBTSE9UgFNIT1JUU4BTSE9SVNNTSE9SVEhBTsRTSE9SVEVORVKAU0hPUlRDQUtFgFNIT1JULVRXSUctWVKAU0hPUlQtVFdJRy1UWdJTSE9SVC1UV0lHLVNPzFNIT1JULVRXSUctT1PTU0hPUlQtVFdJRy1OQVXEU0hPUlQtVFdJRy1NQUTSU0hPUlQtVFdJRy1IQUdBTMxTSE9SVC1UV0lHLUJKQVJLQc5TSE9SVC1UV0lHLUHSU0hPUlSAU0hPUtRTSE9RgFNIT9FTSE9QUElOx1NIT1CAU0hPT1RJTsdTSE9PVIBTSE9PSYBTSE9PgFNIT0fJU0hPx1NIT0VTgFNIT0WAU0hPxVNIT0NLRcRTSE9BgFNIT4BTSElZWUFBTEFBgFNISVRBgFNISVTBU0hJUtRTSElSQUWAU0hJUoBTSEnSU0hJUYBTSElOVM9TSElOSUeAU0hJTkTBU0hJzlNISU1BgFNISU3BU0hJTYBTSEnNU0hJSU6AU0hJSYBTSElG1FNISUVMRIBTSElEgFNIScRTSEhBgFNISMFTSEVYgFNIRVZBgFNIRVVYgFNIRVVPUYBTSEVVQUVRVFWAU0hFVUFFUYBTSEVVQUWAU0hFVIBTSEXUU0hFU0hMQU2AU0hFU0hJR4BTSEVTSEnHU0hFU0gygFNIRVNIgFNIRVPIU0hFUUXMU0hFUIBTSEVOgFNIRUxMgFNIRUzMU0hFTEaAU0hFSYBTSEVHOYBTSEVFUIBTSEVFTlWAU0hFRU6AU0hFRc5TSEVFgFNIRS1HT0FUgFNIxVNIQ0hPT0mAU0hDSEGAU0hBWYBTSEFYgFNIQVZJWUFOSYBTSEFWSUHOU0hBVkXEU0hBVYBTSEFUgFNIQVJVgFNIQVLVU0hBUlCAU0hBUtBTSEFSS4BTSEFSQUTBU0hBUkGAU0hBUjKAU0hBUrJTSEFQSU5HgFNIQVBFU4BTSEFQxVNIQVCAU0hBTkeAU0hBToBTSEHOU0hBTVJPQ0uAU0hBTFNIRUxFVIBTSEFMTE/XU0hBS1RJgFNIQUtJTkeAU0hBS0lOx1NIQUtFUoBTSEFLgFNIQUmAU0hBRlSAU0hBRtRTSEFET1dFxFNIQURFxFNIQURFgFNIQUTFU0hBRERBgFNIQUREwVNIQUSAU0hBxFNIQUI2gFNIQUGAU0hBNoBTSEG2U0hBM4BTSEGzU0dSwVNHT9JTR0OAU0dB11NHQcJTR4BTRVlLgFNFWFRVTMFTRVhUSUxFgFNFWFRBTlQtNoBTRVhUQU5ULTU2gFNFWFRBTlQtNYBTRVhUQU5ULTQ2gFNFWFRBTlQtNDU2gFNFWFRBTlQtNDWAU0VYVEFOVC00gFNFWFRBTlQtMzaAU0VYVEFOVC0zNTaAU0VYVEFOVC0zNYBTRVhUQU5ULTM0NoBTRVhUQU5ULTM0NTaAU0VYVEFOVC0zNDWAU0VYVEFOVC0zNIBTRVhUQU5ULTOAU0VYVEFOVC0yNoBTRVhUQU5ULTI1NoBTRVhUQU5ULTI1gFNFWFRBTlQtMjQ1NoBTRVhUQU5ULTI0NYBTRVhUQU5ULTI0gFNFWFRBTlQtMjM2gFNFWFRBTlQtMjM1NoBTRVhUQU5ULTIzNYBTRVhUQU5ULTIzNDaAU0VYVEFOVC0yMzQ1NoBTRVhUQU5ULTIzNDWAU0VYVEFOVC0yMzSAU0VYVEFOVC0yM4BTRVhUQU5ULTKAU0VYVEFOVC0xNoBTRVhUQU5ULTE1NoBTRVhUQU5ULTE1gFNFWFRBTlQtMTQ2gFNFWFRBTlQtMTQ1NoBTRVhUQU5ULTE0NYBTRVhUQU5ULTE0gFNFWFRBTlQtMTM2gFNFWFRBTlQtMTM1NoBTRVhUQU5ULTEzNDaAU0VYVEFOVC0xMzQ1NoBTRVhUQU5ULTEzNDWAU0VYVEFOVC0xMzSAU0VYVEFOVC0xM4BTRVhUQU5ULTEyNoBTRVhUQU5ULTEyNTaAU0VYVEFOVC0xMjWAU0VYVEFOVC0xMjQ2gFNFWFRBTlQtMTI0NTaAU0VYVEFOVC0xMjQ1gFNFWFRBTlQtMTI0gFNFWFRBTlQtMTIzNoBTRVhUQU5ULTEyMzU2gFNFWFRBTlQtMTIzNYBTRVhUQU5ULTEyMzQ2gFNFWFRBTlQtMTIzNDWAU0VYVEFOVC0xMjM0gFNFWFRBTlQtMTIzgFNFWFRBTlQtMTKAU0VYVEFOVC0xgFNFWFRBTtNTRVdJTsdTRVZFUkFOQ0WAU0VWRU5UWYBTRVZFTlTZU0VWRU5USIBTRVZFTlRFRU6AU0VWRU5URUXOU0VWRU4tVEhJUlRZgFNFVkXOU0VVWIBTRVVOWUFNgFNFVUFFUYBTRVRGT06AU0VTVEVSVElV01NFU1FVSVFVQURSQVRFgFNFU0FNxVNFUlZJQ8VTRVJJT1XTU0VSSUZTgFNFUklG01NFUklGgFNFUVVFTlRJQUyAU0VRVUVOQ8VTRVBUVVBMxVNFUFRFTUJFUoBTRVBBUkFUT1KAU0VQQVJBVE/SU0VQQVJBVEXEU0VOVE+AU0VOVEmAU0VOVEFHT06AU0VNVU5DScFTRU1LQVRIgFNFTUuAU0VNSVZPV0XMU0VNSVNPRtRTRU1JU0VYVElMRYBTRU1JTUlOSU3BU0VNSURJUkVD1FNFTUlDT0xPToBTRU1JQ09MT85TRU1JQ0lSQ1VMQdJTRU1JQ0lSQ0zFU0VNSUJSRVZJ01NFTUktVk9JQ0XEU0VMRklFgFNFTEaAU0VMRU5BgFNFTEVDVE9SLTk5gFNFTEVDVE9SLTk4gFNFTEVDVE9SLTk3gFNFTEVDVE9SLTk2gFNFTEVDVE9SLTk1gFNFTEVDVE9SLTk0gFNFTEVDVE9SLTkzgFNFTEVDVE9SLTkygFNFTEVDVE9SLTkxgFNFTEVDVE9SLTkwgFNFTEVDVE9SLTmAU0VMRUNUT1ItODmAU0VMRUNUT1ItODiAU0VMRUNUT1ItODeAU0VMRUNUT1ItODaAU0VMRUNUT1ItODWAU0VMRUNUT1ItODSAU0VMRUNUT1ItODOAU0VMRUNUT1ItODKAU0VMRUNUT1ItODGAU0VMRUNUT1ItODCAU0VMRUNUT1ItOIBTRUxFQ1RPUi03OYBTRUxFQ1RPUi03OIBTRUxFQ1RPUi03N4BTRUxFQ1RPUi03NoBTRUxFQ1RPUi03NYBTRUxFQ1RPUi03NIBTRUxFQ1RPUi03M4BTRUxFQ1RPUi03MoBTRUxFQ1RPUi03MYBTRUxFQ1RPUi03MIBTRUxFQ1RPUi03gFNFTEVDVE9SLTY5gFNFTEVDVE9SLTY4gFNFTEVDVE9SLTY3gFNFTEVDVE9SLTY2gFNFTEVDVE9SLTY1gFNFTEVDVE9SLTY0gFNFTEVDVE9SLTYzgFNFTEVDVE9SLTYygFNFTEVDVE9SLTYxgFNFTEVDVE9SLTYwgFNFTEVDVE9SLTaAU0VMRUNUT1ItNTmAU0VMRUNUT1ItNTiAU0VMRUNUT1ItNTeAU0VMRUNUT1ItNTaAU0VMRUNUT1ItNTWAU0VMRUNUT1ItNTSAU0VMRUNUT1ItNTOAU0VMRUNUT1ItNTKAU0VMRUNUT1ItNTGAU0VMRUNUT1ItNTCAU0VMRUNUT1ItNYBTRUxFQ1RPUi00OYBTRUxFQ1RPUi00OIBTRUxFQ1RPUi00N4BTRUxFQ1RPUi00NoBTRUxFQ1RPUi00NYBTRUxFQ1RPUi00NIBTRUxFQ1RPUi00M4BTRUxFQ1RPUi00MoBTRUxFQ1RPUi00MYBTRUxFQ1RPUi00MIBTRUxFQ1RPUi00gFNFTEVDVE9SLTM5gFNFTEVDVE9SLTM4gFNFTEVDVE9SLTM3gFNFTEVDVE9SLTM2gFNFTEVDVE9SLTM1gFNFTEVDVE9SLTM0gFNFTEVDVE9SLTMzgFNFTEVDVE9SLTMygFNFTEVDVE9SLTMxgFNFTEVDVE9SLTMwgFNFTEVDVE9SLTOAU0VMRUNUT1ItMjmAU0VMRUNUT1ItMjiAU0VMRUNUT1ItMjeAU0VMRUNUT1ItMjaAU0VMRUNUT1ItMjU2gFNFTEVDVE9SLTI1NYBTRUxFQ1RPUi0yNTSAU0VMRUNUT1ItMjUzgFNFTEVDVE9SLTI1MoBTRUxFQ1RPUi0yNTGAU0VMRUNUT1ItMjUwgFNFTEVDVE9SLTI1gFNFTEVDVE9SLTI0OYBTRUxFQ1RPUi0yNDiAU0VMRUNUT1ItMjQ3gFNFTEVDVE9SLTI0NoBTRUxFQ1RPUi0yNDWAU0VMRUNUT1ItMjQ0gFNFTEVDVE9SLTI0M4BTRUxFQ1RPUi0yNDKAU0VMRUNUT1ItMjQxgFNFTEVDVE9SLTI0MIBTRUxFQ1RPUi0yNIBTRUxFQ1RPUi0yMzmAU0VMRUNUT1ItMjM4gFNFTEVDVE9SLTIzN4BTRUxFQ1RPUi0yMzaAU0VMRUNUT1ItMjM1gFNFTEVDVE9SLTIzNIBTRUxFQ1RPUi0yMzOAU0VMRUNUT1ItMjMygFNFTEVDVE9SLTIzMYBTRUxFQ1RPUi0yMzCAU0VMRUNUT1ItMjOAU0VMRUNUT1ItMjI5gFNFTEVDVE9SLTIyOIBTRUxFQ1RPUi0yMjeAU0VMRUNUT1ItMjI2gFNFTEVDVE9SLTIyNYBTRUxFQ1RPUi0yMjSAU0VMRUNUT1ItMjIzgFNFTEVDVE9SLTIyMoBTRUxFQ1RPUi0yMjGAU0VMRUNUT1ItMjIwgFNFTEVDVE9SLTIygFNFTEVDVE9SLTIxOYBTRUxFQ1RPUi0yMTiAU0VMRUNUT1ItMjE3gFNFTEVDVE9SLTIxNoBTRUxFQ1RPUi0yMTWAU0VMRUNUT1ItMjE0gFNFTEVDVE9SLTIxM4BTRUxFQ1RPUi0yMTKAU0VMRUNUT1ItMjExgFNFTEVDVE9SLTIxMIBTRUxFQ1RPUi0yMYBTRUxFQ1RPUi0yMDmAU0VMRUNUT1ItMjA4gFNFTEVDVE9SLTIwN4BTRUxFQ1RPUi0yMDaAU0VMRUNUT1ItMjA1gFNFTEVDVE9SLTIwNIBTRUxFQ1RPUi0yMDOAU0VMRUNUT1ItMjAygFNFTEVDVE9SLTIwMYBTRUxFQ1RPUi0yMDCAU0VMRUNUT1ItMjCAU0VMRUNUT1ItMoBTRUxFQ1RPUi0xOTmAU0VMRUNUT1ItMTk4gFNFTEVDVE9SLTE5N4BTRUxFQ1RPUi0xOTaAU0VMRUNUT1ItMTk1gFNFTEVDVE9SLTE5NIBTRUxFQ1RPUi0xOTOAU0VMRUNUT1ItMTkygFNFTEVDVE9SLTE5MYBTRUxFQ1RPUi0xOTCAU0VMRUNUT1ItMTmAU0VMRUNUT1ItMTg5gFNFTEVDVE9SLTE4OIBTRUxFQ1RPUi0xODeAU0VMRUNUT1ItMTg2gFNFTEVDVE9SLTE4NYBTRUxFQ1RPUi0xODSAU0VMRUNUT1ItMTgzgFNFTEVDVE9SLTE4MoBTRUxFQ1RPUi0xODGAU0VMRUNUT1ItMTgwgFNFTEVDVE9SLTE4gFNFTEVDVE9SLTE3OYBTRUxFQ1RPUi0xNziAU0VMRUNUT1ItMTc3gFNFTEVDVE9SLTE3NoBTRUxFQ1RPUi0xNzWAU0VMRUNUT1ItMTc0gFNFTEVDVE9SLTE3M4BTRUxFQ1RPUi0xNzKAU0VMRUNUT1ItMTcxgFNFTEVDVE9SLTE3MIBTRUxFQ1RPUi0xN4BTRUxFQ1RPUi0xNjmAU0VMRUNUT1ItMTY4gFNFTEVDVE9SLTE2N4BTRUxFQ1RPUi0xNjaAU0VMRUNUT1ItMTY1gFNFTEVDVE9SLTE2NIBTRUxFQ1RPUi0xNjOAU0VMRUNUT1ItMTYygFNFTEVDVE9SLTE2MYBTRUxFQ1RPUi0xNjCAU0VMRUNUT1ItMTaAU0VMRUNUT1ItMTU5gFNFTEVDVE9SLTE1OIBTRUxFQ1RPUi0xNTeAU0VMRUNUT1ItMTU2gFNFTEVDVE9SLTE1NYBTRUxFQ1RPUi0xNTSAU0VMRUNUT1ItMTUzgFNFTEVDVE9SLTE1MoBTRUxFQ1RPUi0xNTGAU0VMRUNUT1ItMTUwgFNFTEVDVE9SLTE1gFNFTEVDVE9SLTE0OYBTRUxFQ1RPUi0xNDiAU0VMRUNUT1ItMTQ3gFNFTEVDVE9SLTE0NoBTRUxFQ1RPUi0xNDWAU0VMRUNUT1ItMTQ0gFNFTEVDVE9SLTE0M4BTRUxFQ1RPUi0xNDKAU0VMRUNUT1ItMTQxgFNFTEVDVE9SLTE0MIBTRUxFQ1RPUi0xNIBTRUxFQ1RPUi0xMzmAU0VMRUNUT1ItMTM4gFNFTEVDVE9SLTEzN4BTRUxFQ1RPUi0xMzaAU0VMRUNUT1ItMTM1gFNFTEVDVE9SLTEzNIBTRUxFQ1RPUi0xMzOAU0VMRUNUT1ItMTMygFNFTEVDVE9SLTEzMYBTRUxFQ1RPUi0xMzCAU0VMRUNUT1ItMTOAU0VMRUNUT1ItMTI5gFNFTEVDVE9SLTEyOIBTRUxFQ1RPUi0xMjeAU0VMRUNUT1ItMTI2gFNFTEVDVE9SLTEyNYBTRUxFQ1RPUi0xMjSAU0VMRUNUT1ItMTIzgFNFTEVDVE9SLTEyMoBTRUxFQ1RPUi0xMjGAU0VMRUNUT1ItMTIwgFNFTEVDVE9SLTEygFNFTEVDVE9SLTExOYBTRUxFQ1RPUi0xMTiAU0VMRUNUT1ItMTE3gFNFTEVDVE9SLTExNoBTRUxFQ1RPUi0xMTWAU0VMRUNUT1ItMTE0gFNFTEVDVE9SLTExM4BTRUxFQ1RPUi0xMTKAU0VMRUNUT1ItMTExgFNFTEVDVE9SLTExMIBTRUxFQ1RPUi0xMYBTRUxFQ1RPUi0xMDmAU0VMRUNUT1ItMTA4gFNFTEVDVE9SLTEwN4BTRUxFQ1RPUi0xMDaAU0VMRUNUT1ItMTA1gFNFTEVDVE9SLTEwNIBTRUxFQ1RPUi0xMDOAU0VMRUNUT1ItMTAygFNFTEVDVE9SLTEwMYBTRUxFQ1RPUi0xMDCAU0VMRUNUT1ItMTCAU0VMRUNUT1ItMYBTRUxFQ1RPUoBTRUxFQ1RP0lNFTEVDVEXEU0VJU01BgFNFSVNNwVNFSIBTRUdPTIBTRUdOT4BTRUdNRU5URcRTRUdNRU5UgFNFRVaAU0VFTlWAU0VFToBTRUXOU0VFRExJTkeAU0VFLU5PLUVWScxTRUROQYBTRUNUT1KAU0VDVElPToBTRUNUSU/OU0VDUkVUgFNFQ0FOVIBTRUJBVEJFSdRTRUFUgFNFQUyAU0VBR1VMzFNFLTWAU0UtNIBTRS0zgFNET07HU0SAU0NXQYBTQ1JVUExFgFNDUk9MTIBTQ1JJUFSAU0NSRVdEUklWRVKAU0NSRUVOgFNDUkVFzlNDUkVBTUlOx1NDT1TTU0NPUlBJVVOAU0NPUlBJT06AU0NPUkWAU0NPT1RFUoBTQ0lTU09SU4BTQ0mAU0NIV0GAU0NIV8FTQ0hST0VERVKAU0NIT09MgFNDSE9PzFNDSE9MQVKAU0NIRU3BU0NFUFRF0lNDQVJGgFNDQU5ESUNVU4BTQ0FORElDVdNTQ0HOU0NBTEVTgFNCVcJTQlJVzFNBWUlTyVNBWUFOTkGAU0FZgFNBWE9QSE9ORYBTQVhJTUFUQYBTQVdBToBTQVeAU0FWT1VSSU7HU0FVUk9QT0SAU0FVUkFTSFRSwVNBVUlMgFNBVUNFUoBTQVRVUk6AU0FUS0FBTktVVYBTQVRLQUFOgFNBVEVMTElURYBTQVRFTExJVMVTQVRDSEVMgFNBVEFOR0GAU0FTSIBTQVNBS4BTQVJJgFNBUsFTQVKAU0FRgFNBUEGAU0FOWU9PR8FTQU5ZQUvBU0FOVElJTVWAU0FOU0tSSdRTQU5OWUGAU0FOR0EygFNBTkRXSUNIgFNBTkRIyVNBTkRBTIBTQU5BSIBTQU6AU0FNWU/LU0FNVkFUgFNBTVBJgFNBTVBIQU+AU0FNS0GAU0FNRUtIgFNBTUVLyFNBTUJBgFNBTUFSSVRBzlNBTYBTQUxVVElOx1NBTFRJUkWAU0FMVElSxVNBTFRJTExPgFNBTFQtMoBTQUxUgFNBTNRTQUxMQUxMQUjVU0FMTEFMTEFIT9VTQUxMQUxMQUFI1VNBTEzBU0FMQc1TQUxBRIBTQUxBQU1VSNVTQUxBgFNBTC1BTU1PTklBQ4BTQUyAU0FLVEGAU0FLT1SAU0FLSU6AU0FLSMFTQUtFVUFFgFNBS8VTQUpEQUiAU0FJTEJPQVSAU0FJTIBTQUlLVVJVgFNBSIBTQUdJVFRBUklVU4BTQUdBgFNBR4BTQcdTQUZIQYBTQUZFVNlTQURIRYBTQURIxVNBREWAU0FEgFNBxFNBQ1JJRklDSUHMU0FBSYBTQUFESFWAU0EtSYBTQS04gFNBLTeAU0EtNoBTQS01gFNBLTSAU0EtM4BTQS0ygFNBLTGAUzA0NoBTMDQ1gFMwNDSAUzA0M4BTMDQygFMwNDGAUzA0MIBTMDM5gFMwMziAUzAzN4BTMDM2gFMwMzVBgFMwMzWAUzAzNIBTMDMzgFMwMzKAUzAzMYBTMDMwgFMwMjmAUzAyOIBTMDI3gFMwMjZCgFMwMjZBgFMwMjaAUzAyNYBTMDI0gFMwMjOAUzAyMoBTMDIxgFMwMjCAUzAxOYBTMDE4gFMwMTdBgFMwMTeAUzAxNoBTMDE1gFMwMTRCgFMwMTRBgFMwMTSAUzAxM4BTMDEygFMwMTGAUzAxMIBTMDA5gFMwMDiAUzAwN4BTMDA2QYBTMDA2gFMwMDWAUzAwNIBTMDAzgFMwMDJBgFMwMDKAUzAwMYBTLVeAUy1TSEFQRcRSWVmAUllYgFJZVIBSWVJYgFJZUoBSWVCAUldPT4BSV0+AUldJSYBSV0mAUldFRYBSV0WAUldBSEGAUldBQYBSV0GAUlVYgFJVVUJVUlWAUlVVgFJVVIBSVVNTSUHOUlVTSYBSVVJYgFJVUoBSVVBJSYBSVVBFxVJVUIBSVU9YgFJVT1CAUlVPgFJVTk9VVIBSVU5OSU7HUlVOTkVSgFJVTknDUlVOgFJVTclSVU1ByVJVTYBSVc1SVUxFUoBSVUxFLURFTEFZRUSAUlVMRYBSVUxBSYBSVUtLQUtIQYBSVUlTgFJVR0LZUlVESU1FTlTBUlVCTMVSVcJSVUGAUlUtNoBSVS01gFJVLTSAUlUtM4BSVS0ygFJVLTGAUlRIQU7HUlRFgFJUQUdTgFJUQUfTUlJZWIBSUllUgFJSWVJYgFJSWVKAUlJZUIBSUlVYgFJSVVWAUlJVVIBSUlVSWIBSUlVSgFJSVVCAUlJVT1iAUlJVT4BSUlWAUlJSQYBSUk9YgFJST1SAUlJPUIBSUk9PgFJST4BSUklJgFJSSYBSUkVYgFJSRVSAUlJFUIBSUkVIgFJSRchSUkVFgFJSRYBSUkFYgFJSQVWAUlJBSYBSUkFBgFJPV0JPQVSAUk9VTkRFxFJPVU5ELVRJUFBFxFJPVFVOREGAUk9UQVRJT05TgFJPVEFUSU9OLVdBTExQTEFOxVJPVEFUSU9OLUZMT09SUExBTsVST1RBVElPToBST1RBVElPzlJPVEFURcRST1NIgFJPU0VUVEWAUk9TRYBST09UgFJPT1NURVKAUk9PTYBST09LgFJPT8tST09GgFJPTUFOSUHOUk9NQc5ST02AUk9MTElOx1JPTExF0lJPTExFRC1V0FJPTMxST0hJTkdZwVJPR09NgFJPR4BST8RST0NLRVSAUk9Dy1JPQ4BST0JP1FJPQkFUgFJPQVNURcRST0FSgFJPQYBSTy02gFJPLTWAUk8tNIBSTy0zgFJPLTKAUk8tMYBSTllJTsdSTk9PToBSTk9PzlJOQc1STVSAUkxPgFJMTYBSTEmAUkxFgFJKRdNSSkWAUkrFUklUVUFMgFJJVFRPUlWAUklUU0mAUklTSU7HUklTSIBSSVJBgFJJUFBMxVJJUIBSSU5H01JJTkdJTsdSSU5HRcRSSU5GT1JaQU5ET4BSSc5SSU1HQkGAUklNgFJJS1JJS4BSSUdWRURJw1JJR0hUV0FSRFOAUklHSFRIQU7EUklHSFQtVE8tTEVG1FJJR0hULVNJRMVSSUdIVC1TSEFET1dFxFJJR0hULVNIQURFxFJJR0hULVBPSU5USU7HUklHSFQtTElHSFRFxFJJR0hULUhBTkRFxFJJR0hULUhBTsRSSUdIVC1GQUNJTsdSSUZMRYBSSUVVTC1ZRVNJRVVOR4BSSUVVTC1ZRU9SSU5ISUVVSC1ISUVVSIBSSUVVTC1ZRU9SSU5ISUVVSIBSSUVVTC1USUtFVVQtSElFVUiAUklFVUwtVElLRVVUgFJJRVVMLVRISUVVVEiAUklFVUwtU1NBTkdUSUtFVVSAUklFVUwtU1NBTkdTSU9TgFJJRVVMLVNTQU5HUElFVVCAUklFVUwtU1NBTkdLSVlFT0uAUklFVUwtU0lPU4BSSUVVTC1QSUVVUC1USUtFVVSAUklFVUwtUElFVVAtU0lPU4BSSUVVTC1QSUVVUC1QSElFVVBIgFJJRVVMLVBJRVVQLUhJRVVIgFJJRVVMLVBJRVVQgFJJRVVMLVBISUVVUEiAUklFVUwtUEFOU0lPU4BSSUVVTC1OSUVVToBSSUVVTC1NSUVVTS1TSU9TgFJJRVVMLU1JRVVNLUtJWUVPS4BSSUVVTC1NSUVVTS1ISUVVSIBSSUVVTC1NSUVVTYBSSUVVTC1LSVlFT0stU0lPU4BSSUVVTC1LSVlFT0stSElFVUiAUklFVUwtS0lZRU9LgFJJRVVMLUtBUFlFT1VOUElFVVCAUklFVUwtSElFVUiAUklFVUwtQ0lFVUOAUklFVcxSSUVMgFJJRUWAUklDS1NIQVeAUklDRU2AUklDRYBSSUPFUklCQk9OgFJJQkJPzlJJQcxSSS03gFJJLTaAUkktNYBSSS00gFJJLTOAUkktMoBSSS0xgFJIT1RJw1JIT4BSSM9SSElOT0NFUk9TgFJIQYBSSIBSR1lJTkdTgFJHWUFOgFJHWcFSRVZPTFZJTsdSRVZPTFVUSU9OgFJFVk1BgFJFVklBgFJFVkVSU0VELVNDSFdBgFJFVkVSU0VEgFJFVkVSU0XEUkVWRVJTxVJFVViAUkVVgFJFVFVSToBSRVRVUs5SRVRST0ZMRdhSRVRSRUFUgFJFVE9SVIBSRVNVUElOVVOAUkVTVFJPT02AUkVTVFJJQ1RFxFJFU1SAUkVTUE9OU0WAUkVTT1VSQ0WAUkVTT0xVVElPToBSRVNJU1RBTkNFgFJFU0lERU5DRYBSRVNILUFZSU4tREFMRVRIgFJFU0gtQVlJToBSRVPIUkVSRU5HR0FOgFJFUkVLQU6AUkVQUkVTRU5UgFJFUExBQ0VNRU7UUkVQSEGAUkVQSIBSRVBFVElUSU/OUkVQRUFURcRSRVBFQVSAUkVQRUHUUkVQQVlBgFJFUEGAUkVQwVJFTlRPR0VOgFJFToBSRc5SRU1VgFJFTUlOREXSUkVNRURZgFJFTElHSU9OgFJFTElFVkXEUkVMRUFTRYBSRUxBWEVEgFJFTEFUSU9OQcxSRUxBVElPToBSRUxBQYBSRUpBTsdSRUlXQYBSRUnEUkVJgFJFR1VMVVMtNIBSRUdVTFVTLTOAUkVHVUxVUy0ygFJFR1VMVVOAUkVHVUxV01JFR0lTVEVSRcRSRUdJT05BzFJFR0lBLTKAUkVHSUGAUkVGT1JNRcRSRUZFUkVOQ8VSRURVUExJQ0FUSU9OgFJFQ1lDTElOx1JFQ1lDTEXEUkVDVElMSU5FQdJSRUNUQU5HVUxB0lJFQ1RBTkdMRYBSRUNUQU5HTMVSRUNSRUFUSU9OQcxSRUNPUkRJTsdSRUNPUkRFUoBSRUNPUkSAUkVDT1LEUkVDSVRBVElWxVJFQ0VQVElWxVJFQ0VJVkVSgFJFQ0VJVkXSUkVDRUlQVIBSRUFMR0FSLTKAUkVBTEdBUoBSRUFITVVLgFJFQURJTsdSRUFDSIBSRS00gFJFLTOAUkUtMoBSRS0xgFJEz1JERcxSQkFTwVJBWlNFS0GAUkFaT1KAUkFZU4BSQVnTUkFZQU5OQYBSQVZOT4BSQVRJT4BSQVRIQYBSQVRIwVJBVEGAUkFUgFJBU1dBREmAUkFTT1XMUkFTSEGAUkFRgFJBUElTTUGAUkFOR8VSQU5BgFJBToBSQU3TUkFNQkFUgFJBS0hBTkeAUkFLQUFSQUFOU0FZQYBSQUlTSU7HUkFJU0VEgFJBSVNFxFJBSU5CT1eAUkFJTFdBWYBSQUlMV0HZUkFJTIBSQUlEz1JBSURBgFJBSE1BVFVMTEHIUkFISU1BSFXNUkFISU1BSNVSQUZFgFJBRU2AUkFESU9BQ1RJVsVSQURJT4BSQURJz1JBRMlSQUSAUkHEUkFDUVVF1FJBQ0lOR4BSQUNJTsdSQUNDT09OgFJBQkJJVIBSQUJCSdRSQUKAUkFBSYBSQTOAUkEygFJBLUtBUkGAUkEtNIBSQS0zgFJBLTKAUkEtMYBSMDI5gFIwMjiAUjAyN4BSMDI2gFIwMjWAUjAyNIBSMDIzgFIwMjKAUjAyMYBSMDIwgFIwMTmAUjAxOIBSMDE3gFIwMTZBgFIwMTaAUjAxNYBSMDE0gFIwMTOAUjAxMoBSMDExgFIwMTBBgFIwMTCAUjAwOYBSMDA4gFIwMDeAUjAwNoBSMDA1gFIwMDSAUjAwM0KAUjAwM0GAUjAwM4BSMDAyQYBSMDAygFIwMDGAUi1DUkXFUVlYgFFZVYBRWVSAUVlSWIBRWVKAUVlQgFFZT4BRWUmAUVlFRYBRWUWAUVlBQYBRWUGAUVmAUVdJgFFXRUWAUVdFgFFXQUGAUVdBgFFVWIBRVVaAUVVVVoBRVVWAUVVUgFFVU0hTSEFZQYBRVVJYgFFVUoBRVVCAUVVPWIBRVU9UxVFVT1RBVElPzlFVT1SAUVVPUIBRVU+AUVVLgFFVSU5USUxFgFFVSU5URVNTRU5DRYBRVUlORElDRVNJTcFRVUlOQ1VOWIBRVUlOQVJJVdNRVUlM1FFVSUxMgFFVSUPLUVVJgFFVRoBRVUVTVElPTkXEUVVFU1RJT06AUVVFU1RJT85RVUVFToBRVUVFzlFVRYBRVURESVPBUVVCVVRTgFFVQVRFUk5JT85RVUFSVEVSU4BRVUFSVEVS01FVQVJURVKAUVVBTlRJVNlRVUFEUlVQTMVRVUFEUkFOVIBRVUFEUkFO1FFVQURDT0xPToBRVUFEgFFVQcRRVUGAUVWAUdBRT1iAUU9UgFFPUEiAUU9QQYBRT1CAUU9PgFFPz1FPRoBRT8ZRT0GAUU+AUU6AUUlYgFFJVFNBgFFJVIBRSVCAUUlJgFFJRoBRSUVYgFFJRVSAUUlFUIBRSUWAUUmAUUhXSYBRSFdFRYBRSFdFgFFIV0FBgFFIV0GAUUhVgFFIT1BIgFFIT4BRSEmAUUhFRYBRSEWAUUhBVYBRSEFBgFFIQYBRR0GAUUVUQU5BgFFFRYBRRYBRQVmAUUFVgFFBVEFOgFFBUk5F2VFBUoBRQVGAUUFQSIBRQU1BVFOAUUFNQVTTUUFMwVFBSVJUSFJBgFFBSYBRQUaAUUHGUUFETUGAUUFBSYBRQUFGVYBRQUFGgFEwMDeAUTAwNoBRMDA1gFEwMDSAUTAwM4BRMDAygFEwMDGAUFqAUFlYgFBZVIBQWVJYgFBZUoBQWVCAUFdPWYBQV09PgFBXT4BQV89QV0lJgFBXSYBQV0VFgFBXRYBQV0FBgFBXgFBWgFBVWlpMxVBVWIBQVVVUgFBVVYBQVVRSRUZBQ1RJT06AUFVUTkFZQYBQVVSAUFXUUFVTSFBJToBQVVNIUElLQYBQVVNISU7HUFVSWIBQVVJTRYBQVVJQTMVQVVJOQU1BgFBVUklUWYBQVVJJRlmAUFVSgFBVUYBQVVCAUFVPWIBQVU9QgFBVT4BQVU5HQUFNgFBVTkeAUFVOQ1RV01BVTkNUVUFUSU9OgFBVTkNUVUFUSU/OUFVNUIBQVU2AUFVGRkVEgFBVRYBQVUNLgFBVQkxJw1BVwlBVQVGAUFVBRYBQVUFDSFXFUFUygFBVMYBQVYBQVEhBSMFQVEWAUFNJTMlQU0lGSVNUT1NZTkFHTUGAUFNJRklTVE9QQVJBS0FMRVNNQYBQU0lGSVNUT85QU0lGSVNUT0xZR0lTTUGAUFNJgFBTQUxURdJQU4BQUk9WRYBQUk9UT1ZBUlnTUFJPVE/TUFJPVEVDVEXEUFJPU1RBWUGAUFJPU0dFR1JBTU1FTkmAUFJPU0VSUElOQYBQUk9QT1JUSU9OQcxQUk9QT1JUSU9OgFBST1BFUlTZUFJPUEVMTEXSUFJPT0aAUFJPTE9OR0XEUFJPTEFUSU9OxVBST0pFQ1RPUoBQUk9KRUNUSVZFgFBST0pFQ1RJT06AUFJPSElCSVRFxFBST0dSRVNTgFBST0dSQc1QUk9GT1VORIBQUk9EVUNUgFBST0RVQ9RQUk9CSU7HUFJJWk5By1BSSVZBVEWAUFJJVkFUxVBSSVZBQ9lQUklTSFRIQU1BVFLBUFJJTlRTgFBSSU5URVKAUFJJTlRF0lBSSU5UgFBSSU7UUFJJTkNFU1OAUFJJTkNFgFBSSU1FgFBSSU3FUFJFVklPVdNQUkVUWkVMgFBSRVNTRcRQUkVTRVSAUFJFU0VOVEFUSU/OUFJFU0NSSVBUSU/OUFJFUE9OREVSQU5DRYBQUkVOS0hBgFBSRUdOQU7UUFJFRklYRcRQUkVGQUPFUFJFQ0lQSVRBVEWAUFJFQ0VESU7HUFJFQ0VERVOAUFJFQ0VERdNQUkVDRURFxFBSRUNFREWAUFJFQ0VExVBSQVlF0lBSQU0tUElJgFBSQU0tUEnJUFJBTS1NVU9ZgFBSQU0tTVVP2VBSQU0tQlVPToBQUkFNLUJVT85QUkFNLUJFSYBQUkFNLUJFyVBSQU2AUFJBzVBSgFBQVoBQUE2AUFBBgFBPWYBQT1iAUE9XRVLTUE9XRVKAUE9XRdJQT1dERVJFxFBPV0RFUoBQT1ZZU0hFgFBPVllTSMVQT1ZPRE5ZgFBPVVJJTsdQT1VOxFBPVUxUUtlQT1VDSIBQT1RURcRQT1RBVE+AUE9UQUJMxVBP1FBPU1RQT1NJVElPzlBPU1RCT1iAUE9TVEHMUE9TVIBQT1PUUE9TU0VTU0lPToBQT1NTRVNTSU/OUE9TSVRJT05TgFBPU0lUSU9OgFBPU0VJRE9OgFBPUlRBQkzFUE9SUkVDVFVTgFBPUlJFQ1RV01BPUFBJTsdQT1BQRVKAUE9QQ09SToBQT1CAUE/QUE9PRExFgFBPT4BQT05ET4BQT85QT01NRUWAUE9NTUXFUE9MVVBPVk9ETkFZQYBQT0xPgFBPTE5BWUGAUE9MTFWAUE9MS1VMSVpNWYBQT0xJU0iAUE9MSVPIUE9MSUPFUE9MyVBPTEWAUE9MxVBPS1JZVElFgFBPS09KSYBQT0lOVNNQT0lOVE+AUE9JTlRFUoBQT0lOVEXEUE9JTlSAUE9JTtRQT0VUUtlQT0VUScNQT0RWRVJUS0GAUE9EQ0hBU0hJRU2AUE9EQ0hBU0hJRYBQT0RDSEFTSEnFUE9EQVRVU4BQT0NLRdRQT0GAUM9QTkVVTUFUQYBQTFVUz1BMVVRBgFBMVVMtTUlOVdNQTFVTgFBMVVJBTIBQTFVOR0VSgFBMVU1FxFBMVU2AUExVS4BQTFVHgFBMVYBQTE9XgFBMT1BIVYBQTEhBVYBQTEVUSFJPToBQTEVBRElOx1BMRIBQTEFZSU7HUExBWUdST1VOxFBMQVRFgFBMQVNUSUNTgFBMQU5UgFBMQU5FVIBQTEFORYBQTEFOQ8tQTEFLgFBMQUdJT9NQTEFDRUhPTERFUoBQTEFDRUhPTERF0lBMQUPFUExBQ0FSRIBQTEGAUElaWklDQVRPgFBJWlpBgFBJWIBQSVdSgFBJVENIRk9SS4BQSVRDSEZPUstQSVSAUElTVE9MgFBJU0VMRUiAUElTQ0VTgFBJUklHgFBJUknHUElSSUVFToBQSVJBQ1mAUElSMoBQSVBJTkeAUElQQUVNR0JJRUWAUElQQUVNQkGAUElQgFBJTldIRUXMUElORUFQUExFgFBJTsVQSU5DSElOx1BJTkNIRcRQSU5BVEGAUElOQVJCT1JBU4BQSUxMgFBJTMVQSUxDUk/XUElLVVJVgFBJS0+AUElHgFBJx1BJRViAUElFVVAtVEhJRVVUSIBQSUVVUC1TU0FOR1NJT1OAUElFVVAtU0lPUy1USUtFVVSAUElFVVAtU0lPUy1USElFVVRIgFBJRVVQLVNJT1MtUElFVVCAUElFVVAtU0lPUy1LSVlFT0uAUElFVVAtU0lPUy1DSUVVQ4BQSUVVUC1SSUVVTC1QSElFVVBIgFBJRVVQLVJJRVVMgFBJRVVQLU5JRVVOgFBJRVVQLU1JRVVNgFBJRVVQLUtISUVVS0iAUElFVVAtQ0lFVUOAUElFVVAtQ0hJRVVDSIBQSUVV0FBJRVSAUElFUIBQSUVFVIBQSUVFUYBQSUVDRYBQSUWAUElDVFVSRYBQSUNLVdBQSUNLRVSAUElDS4BQSUFTVVRPUlWAUElBU1RSxVBJQVNNwVBJQU5PgFDJUEhXQYBQSFVUSEFPgFBIVdJQSFVOR4BQSFJBU0WAUEhPTkVTgFBIT0xVU4BQSE9FTklDSUHOUEhPQYBQSE+AUEjPUEhOQUXLUEhJTlRIVYBQSElMT1NPUEhFUtNQSElMSVBQSU7FUEhJRVVQSC1USElFVVRIgFBISUVVUEgtU0lPU4BQSElFVVBILVBJRVVQgFBISUVVUEgtSElFVUiAUEhJRVVQyFBISYBQSMlQSEVFgFBIRYBQSEFTRS3GUEhBU0Utw1BIQVNFLcJQSEFTRS3BUEhBUllOR0VBzFBIQVKAUEhBToBQSEFNgFBIQUlTVE/TUEhBR1MtUMFQSEFCgFBIQUFSS0FBgFBIQUGAUEeAUEaAUEVVWIBQRVVUQUWAUEVVVIBQRVRSyVBFVEFTVE9LT1VGSVNNQYBQRVRBU1RJgFBFVEFTTUGAUEVUQUxMRcRQRVNPgFBFU89QRVNIMoBQRVNIslBFU0VUwVBF01BFUlRIz1BFUlNQRUNUSVZFgFBFUlNPTkHMUEVSU09OgFBFUlNPzlBFUlNJQc5QRVJTRVZFUklOx1BFUlBFTkRJQ1VMQVKAUEVSUEVORElDVUxB0lBFUk5JzlBFUk1JVFRFxFBFUk1Jw1BFUk1BTkVO1FBFUklTUE9NRU5JgFBFUklTUE9NRU7JUEVSRk9STUlOx1BFUkZFQ1RVzVBFUkZFQ1RBgFBFUkZFQ1TBUEVSRVZPREtBgFBFUkVWT0RLwVBFUkNVU1NJVkWAUEVSQ0VO1FBFUFBFUoBQRVBFVIBQRVBF1FBFT1JUyFBFT1BMRYBQRU9QTMVQRU5UQVRITE9OgFBFTlRBU0VNRYBQRU5UQUdSQU2AUEVOVEFHT06AUEVOU1WAUEVOU0lWxVBFTk7ZUEVOTkFOVIBQRU5JSEmAUEVOR1VJToBQRU5HS0FMgFBFTkVUUkFUSU9OgFBFTkNJTIBQRc5QRUxBU1RPToBQRUxBU1RPzlBFSVRIgFBFSEVIgFBFSEXIUEVIgFBFyFBFRVpJgFBFRVNISYBQRUVQgFBFRU2AUEVFS0lOx1BFRUmAUEVFgFBFREVTVFJJQU5TgFBFREVTVFJJQU6AUEVERVNUQUyAUEVERVNUQcxQRURBzFBFQU5VVFOAUEVBS9NQRUFDT0NLgFBFQUNIgFBFQUNFgFBFQUPFUERJgFBERoBQRIBQQ4BQQVpFUoBQQVlFUk9LgFBBWUFOTkGAUEFZgFBBWIBQQVdOgFBBV85QQddQQVZJWUFOSYBQQVVTxVBBVUuAUEFVgFBB1VBBVFTZUEFUVEVSToBQQVRIQU1BU0FUgFBBVEhBS0tVgFBBVMhQQVRBS4BQQVRBSIBQQVSAUEFTVVGAUEFTU1BPUtRQQVNTSVZFLVBVTEwtVVAtT1VUUFXUUEFTU0lWRS1QVUxMLURPV04tT1VUUFXUUEFTU0lNQkFOR4BQQVNTRU5HRdJQQVNTRcRQQVNIVEGAUEFTSEFFgFBBU0VRgFBBU0FOR0HOUEFSVU2AUEFSVNlQQVJUTkVSU0hJ0FBBUlRJQUxMWS1SRUNZQ0xFxFBBUlRJQcxQQVJUSElBzlBBUtRQQVJST1SAUEFSS4BQQVJJQ0hPToBQQVJFU1RJR01FTk/OUEFSRVJFToBQQVJFTlRIRVNJU4BQQVJFTlRIRVNJ01BBUkVOVEhFU0XTUEFSQVBIUkFTxVBBUkFMTEVMT0dSQU2AUEFSQUxMRUyAUEFSQUxMRcxQQVJBS0xJVElLSYBQQVJBS0xJVElLyVBBUkFLTElUgFBBUkFLQUxFU03BUEFSQUdSQVBIVdNQQVJBR1JBUEhPU4BQQVJBR1JBUEiAUEFSQUdSQVDIUEFSQUNIVVRFgFBBUkGAUEFSgFBBUFlSVVOAUEFQRVJDTElQU4BQQVBFUkNMSVCAUEFQRVKAUEFQRdJQQVCAUEHQUEHPUEFOWVVLVYBQQU5ZSUtVgFBBTllFQ0VLgFBBTllBTkdHQYBQQU5ZQUtSQYBQQU5USYBQQU5UyVBBTlNJT1MtUElFVVCAUEFOU0lPUy1LQVBZRU9VTlBJRVVQgFBBTk9OR09OQU6AUEFOT0xPTkeAUEFOR1dJU0FEgFBBTkdSQU5HS0VQgFBBTkdPTEFUgFBBTkdMT05HgFBBTkdMQVlBUoBQQU5HS09OgFBBTkdLQVSAUEFOR0hVTFWAUEFOR4BQQU5FVUxFVU5HgFBBTkTBUEFOQ0FLRVOAUEFOQU2AUEFOQUVMQUVOR4BQQU6AUEHOUEFNVU5HS0FIgFBBTVVEUE9EgFBBTVNIQUWAUEFNUEhZTElBzlBBTUlOR0tBTIBQQU1FUEVUgFBBTUVORU5HgFBBTUFEQYBQQU1BRMFQQU1BQUVIgFBBTFVUQYBQQUxPQ0hLQYBQQUxNWVJFTsVQQUxN01BBTE2AUEFMzVBBTExBV0GAUEFMTEFTgFBBTEtBgFBBTMlQQUxFVFRFgFBBTEFVTsdQQUxBVEFMSVpFxFBBTEFUQUxJWkFUSU9OgFBBTEFUQcxQQUtQQctQQUlZQU5OT0mAUEFJUlRIUkGAUEFJUkXEUEFJTlRCUlVTSIBQQUmAUEFITEFWyVBBSIBQQUdPREGAUEFHRVOAUEFHRVKAUEFHxVBBRE3BUEFEREzFUEFERElOx1BBRMFQQUSAUEFDS0lOR4BQQUNLQUdFgFBBQVRVgFBBQVNFTlRPgFBBQVJBTYBQQUFSQUWAUEFBTYBQQUFJgFBBQS1QSUxMQYBQQUGAUDKAUDAxMYBQMDEwgFAwMDmAUDAwOIBQMDA3gFAwMDaAUDAwNYBQMDA0gFAwMDNBgFAwMDOAUDAwMoBQMDAxQYBQMDAxgE9agE9ZU1RFUoBPWVJBTklTTcFPWUFOTkGAT1hJQYBPWEnBT1hFSUHJT1hFScFPV0yAT1ZFUlNUUlVDy09WRVJSSURFgE9WRVJMT07HT1ZFUkxJTkWAT1ZFUkxBWYBPVkVSTEHZT1ZFUkxBUFBJTsdPVkVSTEFQgE9WRVJMQUlEgE9WRVJMQUnET1ZFUkhFQVRFxE9WRVJCQVKAT1ZBTIBPVkHMT1VUTElORcRPVVRMSU5FgE9VVEXST1VUQk/YT1VOS0nBT1VOQ0WAT1VOQ8VPVFWAT1RUT01Bzk9UVEVSgE9UVEFWwU9UVIBPVFNFQ0hLQYBPVEhFUtNPVEhF0k9USEFMQc5PVEhBTIBPU09LQYBPU09LwU9TTUFOWcFPU0OAT1NBR8VPUlRIT0dPTkHMT1JUSE9ET9hPUk5BVMVPUk5BTUVOVFOAT1JOQU1FTlSAT1JOQU1FTtRPUktIT85PUklZwU9SSUdJTkHMT1JJR0lOgE9SRS0ygE9SRElOQcxPUkRF0k9SQ0hJRIBPUkFOR1VUQU6AT1JBTkfFT1BUSU/OT1BUSUNBzE9QUFJFU1NJT06AT1BQT1NJVElPToBPUFBPU0lOx09QUE9TRYBPUEhJVUNIVVOAT1BFUkFUT1KAT1BFUkFUT9JPUEVSQVRJTsdPUEVOSU7HT1BFTi1QgE9QRU4tT1VUTElORcRPUEVOLU+AT1BFTi3PT1BFTi1IRUFERcRPUEVOLUNJUkNVSVQtT1VUUFXUT1BFToBPUEXOT09aRYBPT1lBTk5BgE9PVYBPT01VgE9PSIBPT0WAT09CT09GSUxJgE9OVYBPTlNVgE9OToBPTktBUoBPTklPToBPTkVTRUxGgE9ORS1XQdlPTkUtVEhJUlRZgE9ORS1QSUVDxU9ORS1MSU7FT05FLUhVTkRSRUQtQU5ELVNJWFRJRVRIgE9OQ09NSU7HT05BUIBPTi1PRsZPTUlTU0lPzk9NSUNST06AT01JQ1JPzk9NRVSAT01FR0GAT01FR8FPTUFMT06AT0xJVkWAT0xJR0/OT0xEgE9LVM9PS0FSQYBPS0FSwU9KSUJXQdlPSkVPToBPSU6AT0lMgE9JzE9ITYBPSM1PR1JFgE9HT05FS4BPR09ORctPR0hBzU9GRklDRVKAT0ZGSUNFgE9GRklDxU9GRoBPRVmAT0VSgE9FS4BPRUWAT0RFToBPRESAT0TET0NUT1BVU4BPQ1RPQkVSgE9DVEXUT0NUQUdPTkHMT0NUQUdPToBPQ9JPQ0xPQ0uAT0NIS09NgE9DQ0xVU0lPToBPQlNUUlVDVElPToBPQlNFUlZF0k9CT0zTT0JPzE9CT0ZJTEmAT0JMSVFVxU9CTEFLT4BPQkxBQ0hLT4BPQkpFQ9RPQkVMVVOAT0JFTE9TgE9CgE9BWYBPQUuAT0FCT0FGSUxJgE/BTzA1MYBPMDUwQoBPMDUwQYBPMDUwgE8wNDmATzA0OIBPMDQ3gE8wNDaATzA0NYBPMDQ0gE8wNDOATzA0MoBPMDQxgE8wNDCATzAzOYBPMDM4gE8wMzeATzAzNkSATzAzNkOATzAzNkKATzAzNkGATzAzNoBPMDM1gE8wMzSATzAzM0GATzAzM4BPMDMygE8wMzGATzAzMEGATzAzMIBPMDI5QYBPMDI5gE8wMjiATzAyN4BPMDI2gE8wMjVBgE8wMjWATzAyNEGATzAyNIBPMDIzgE8wMjKATzAyMYBPMDIwQYBPMDIwgE8wMTlBgE8wMTmATzAxOIBPMDE3gE8wMTaATzAxNYBPMDE0gE8wMTOATzAxMoBPMDExgE8wMTBDgE8wMTBCgE8wMTBBgE8wMTCATzAwOYBPMDA4gE8wMDeATzAwNkaATzAwNkWATzAwNkSATzAwNkOATzAwNkKATzAwNkGATzAwNoBPMDA1QYBPMDA1gE8wMDSATzAwM4BPMDAygE8wMDFBgE8wMDGATy1ZRYBPLU8tSYBPLUWATlpZWIBOWllUgE5aWVJYgE5aWVKATlpZUIBOWlmATlpVWIBOWlVSWIBOWlVSgE5aVVGATlpVUIBOWlVPWIBOWlVPgE5aVc5OWlWATlpPWIBOWk9QgE5aSViATlpJVIBOWklQgE5aSUVYgE5aSUVQgE5aSUWATlpJgE5aRViATlpFVU2ATlpFgE5aQViATlpBVIBOWkFRgE5aQVCATlpBgE5awU5ZV0GATllVWIBOWVVVgE5ZVVSATllVUIBOWVVPWIBOWVVPUIBOWVVPgE5ZVU6ATllVRYBOWVWATllPWIBOWU9UgE5ZT1CATllPT4BOWU9OgE5ZT0GATllPgE5ZSkGATllJWIBOWUlUgE5ZSdROWUnTTllJ0k5ZSVCATllJTi1ET4BOWUlOgE5ZSUmATllJRViATllJRVSATllJRVCATllJRYBOWUlBS0VOx05ZSYBOWclOWUhBgE5ZRVSATllF1E5ZRU6ATllFSIBOWUXITllFRYBOWUWATlnETllDQYBOWUFVgE5ZQUqATllBSYBOWUFIgE5ZQUVNQUWATllBQYBOV09PgE5XT4BOV0lJgE5XSYBOV0WATldBQYBOV0GATleATlaATlVYgE5VVU6ATlVVgE5VVElMTFWATlVUgE5V1E5VUliATlVSgE5VUIBOVU9YgE5VT1CATlVPgE5VTlVagE5VTlXaTlVOR4BOVU5BVlXUTlVOQVZJy05VToBOVc5OVU1FUs9OVU1FUkFUT9JOVU1FUkHMTlVNQkVSU4BOVU1CRVKATlVNgE5VTEyATlVMzE5VTIBOVUtUQYBOVUtUwU5VRU5HgE5VRYBOVUJJQc5OVUFFgE5VMTGATlUxsU5VMDIyQYBOVTAyMoBOVTAyMYBOVTAyMIBOVTAxOYBOVTAxOEGATlUwMTiATlUwMTeATlUwMTaATlUwMTWATlUwMTSATlUwMTOATlUwMTKATlUwMTFBgE5VMDExgE5VMDEwQYBOVTAxMIBOVTAwOYBOVTAwOIBOVTAwN4BOVTAwNoBOVTAwNYBOVTAwNIBOVTAwM4BOVTAwMoBOVTAwMYBOVS0zgE5VLTKATlUtMYBOVFhJVoBOVFhBgE5UVVWATlRVTYBOVFVKgE5U1U5UU0FVgE5UU0GATlRPUVBFToBOVE9HgE5UT8dOVElFxU5USEFVgE5URVVOR0JBgE5URVVNgE5URU6ATlRFRYBOVEFQgE5UQdBOVEFBgE5UQYBOU1VP1E5TVU6ATlNVTYBOU09NgE5TSUVFVIBOU0lFRVCATlNJRUWATlNIVVSATlNIVdROU0hVT1CATlNIVUWATlNISUVFgE5TSEVFgE5TSEFRgE5TSEGATlNFVUFFToBOU0VOgE5TQYBOUllYgE5SWVSATlJZUliATlJZUoBOUllQgE5SWYBOUlVYgE5SVVSATlJVUliATlJVUoBOUlVQgE5SVUGATlJVgE5ST1iATlJPUIBOUk+ATlJFWIBOUkVUgE5SRdNOUkVQgE5SRYBOUkFYgE5SQVSATlJBUIBOUkGATlFJR4BOUUGATlBMQYBOUEGATk9aSEtBgE5PWYBOT1iATk9XQ4BOT1ZJTEWATk9WRU1CRVKATk9UVE+ATk9URVOATk9URUhFQUSATk9URUhFQcROT1RFQk9PS4BOT1RFQk9Py05PVEWATk9UxU5PVENIRcROT1RDSIBOT1RBVElPzk5PVIBOT9ROT1NFgE5PU8VOT1JUSFdFU9ROT1JUSEVSzk5PUlRIRUFTVC1QT0lOVElOx05PUk1BzE5PUkRJw05P0k5PUIBOT09OVYBOT0+ATk9ORk9SS0lOR4BOT04tUE9UQUJMxU5PTi1KT0lORVKATk9OLUJSRUFLSU7HTk9OgE5PTUlTTcFOT01JTkHMTk9LSFVLgE5PREWATk9BgE5PLUJSRUHLTk8tNYBOTy00gE5PLTOATk8tMoBOTy0xgE5OVVWATk5VgE5OT0+ATk5OVVWATk5OVYBOTk5PT4BOTk5PgE5OTklJgE5OTkmATk5ORUWATk5ORYBOTk5BVYBOTk5BSYBOTk5BQYBOTk5BgE5OToBOTkhBgE5OR09PgE5OR0+ATk5HSUmATk5HSYBOTkdBQYBOTkdBgE5OR4BOTkJTUIBOTYBOTEFVgE5MMDIwgE5MMDE5gE5MMDE4gE5MMDE3QYBOTDAxN4BOTDAxNoBOTDAxNYBOTDAxNIBOTDAxM4BOTDAxMoBOTDAxMYBOTDAxMIBOTDAwOYBOTDAwOIBOTDAwN4BOTDAwNoBOTDAwNUGATkwwMDWATkwwMDSATkwwMDOATkwwMDKATkwwMDGATkyATktPTYBOS89OS0lOREmATktBVYBOS0FBUkFFgE5LQYBOSllYgE5KWVSATkpZUliATkpZUoBOSllQgE5KWYBOSlVYgE5KVVJYgE5KVVKATkpVUUGATkpVUIBOSlVPWIBOSlVPgE5KVUVRgE5KVUFFgE5KVYBOSk9YgE5KT1SATkpPUIBOSk9PgE5KT4BOSklYgE5KSVSATkpJUIBOSklFWIBOSklFVIBOSklFUIBOSklFRYBOSklFgE5KSYBOSslOSkVVWIBOSkVVVIBOSkVVQUVOQYBOSkVVQUVNgE5KRUVFRYBOSkVFgE5KRcVOSkWATkpBUYBOSkFQgE5KQUVNTEmATkpBRU2ATkpBQYBOSVpLz05JWIBOSVRSRYBOSVNBR4BOSVJVR1WATklQgE5JTlRIgE5JTkpBgE5JTkVUWYBOSU5FVNlOSU5FVEVFToBOSU5FVEVFzk5JTkUtVEhJUlRZgE5JTsVOSU5EQTKATklOREGyTklOOYBOSU6ATklNgE5JzU5JS09MU0JVUsdOSUtIQUhJVIBOSUtBSElUgE5JS0GATklIU0hWQVNBgE5JR0lEQU1JToBOSUdJREFFU0iATklHSFSATklHSNROSUdHQUhJVEGATklFWIBOSUVVTi1USUtFVVSATklFVU4tVEhJRVVUSIBOSUVVTi1TSU9TgE5JRVVOLVJJRVVMgE5JRVVOLVBJRVVQgE5JRVVOLVBBTlNJT1OATklFVU4tS0lZRU9LgE5JRVVOLUhJRVVIgE5JRVVOLUNJRVVDgE5JRVVOLUNISUVVQ0iATklFVc5OSUVQgE5JRYBOSUKATklBgE5JMoBOSS1URYBOSS03gE5JLTaATkktNYBOSS00gE5JLTOATkktMoBOSS0xgE5IVUWATkhKQYBOSEFZgE5IgE5HWUWATkdWRYBOR1VVgE5HVU9YgE5HVU9UgE5HVU+ATkdVQU6ATkdVQUVUgE5HVUFFgE5HT1iATkdPVYBOR0/VTkdPVIBOR09RgE5HT1CATkdPToBOR09NgE5HT0VIgE5HT0XITkfPTkdLWUVFgE5HS1dBRU6ATkdLVVCATkdLVU6ATkdLVU2ATkdLVUVOWkVVTYBOR0tVxU5HS0lORMlOR0tJRUWATkdLRVVYgE5HS0VVUkmATkdLRVVBRVGATkdLRVVBRU2ATkdLQVGATkdLQVCATkdLQUFNSYBOR0tBgE5HSUVYgE5HSUVQgE5HSUWATkdIQYBOR0dXQUVOgE5HR1VSQUWATkdHVVCATkdHVU9RgE5HR1VP0U5HR1VPToBOR0dVT02ATkdHVU2ATkdHVUVFVIBOR0dVQUVTSEHFTkdHVUFFzk5HR1VBgE5HR1WATkdHT0+ATkdHT4BOR0dJgE5HR0VVWIBOR0dFVUFFVIBOR0dFVUFFgE5HR0XVTkdHRU6ATkdHRUVUgE5HR0VFRUWATkdHRUWATkdHRYBOR0dBUIBOR0dBQU1BRYBOR0dBQU2ATkdHQUGATkdHgE5HRViATkdFVVJFVVSATkdFUIBOR0VOgE5HRUWATkdFQURBTIBOR0FYgE5HQVWATkdBVIBOR0HTTkdBUYBOR0FQgE5HQU5HVYBOR0FOgE5HQUmATkdBSIBOR0FBSYBOR8FORoBORVjUTkVYgE5FV1NQQVBFUoBORVdMSU5FgE5FV0xJTsVORVfBTkVXgE5F105FVVRSQUyATkVVVFJBzE5FVVRFUoBORVRXT1JLRcRORdRORVNUSU7HTkVTVEXETkVTVIBORVPUTkVTU1VTgE5FUsRORVFVREFBgE5FUFRVTkWATkVQVFVOxU5FUE9TVE9ZQU5OQVlBgE5FUIBORU+ATkXPTkVOT0WATkVOQU5PgE5FToBORU1LQYBORUyATkVJVEhF0k5FR0FUSVbFTkVHQVRJT85ORUdBVEXETkVFRExFgE5FQ0tUSUWATkVDS4BORUJFTlNUSU1NRYBORS1LT4BORFVYgE5EVVSATkRVUliATkRVUoBORFVQgE5EVU6ATkTVTkRPWIBORE9UgE5ET1CATkRPT4BORE9OgE5ET01CVYBORE9MxU5ESViATkRJVIBORElRgE5ESVCATkRJRViATkRJRYBORElEQYBORElBUYBOREVYgE5ERVVYgE5ERVVUgE5ERVVBRVJFRYBOREVQgE5ERUWATkRFgE5EQViATkRBVIBOREFQgE5EQU2ATkRBQU5HR0VVQUVUgE5EQUGATkRBwU5DSEFVgE5DQYBOQllYgE5CWVSATkJZUliATkJZUoBOQllQgE5CWYBOQlVYgE5CVVSATkJVUliATkJVUoBOQlVQgE5CVYBOQk9YgE5CT1SATkJPUIBOQk+ATkJJWIBOQklUgE5CSVCATkJJRViATkJJRVCATkJJRYBOQkmATkJIgE5CQViATkJBVIBOQkFQgE5CQYBOQVpB0k5BWUFOTkGATkFZgE5BWElBzk5BWIBOQVVUSFOATkFVU0VBVEXETkFVREnaTkFUVVJBzE5BVFRJTEnLTkFUSU9OQcxOQVNLQVDJTkFTSEmATkFTQUxJWkXETkFTQUxJWkFUSU9OgE5BU0FMSVpBVElPzk5BU0HMTkFSUk/XTkFSgE5BUYBOQU/TTkFOU0FOQVGATkFOR01PTlRIT4BOQU5ESU5BR0FSyU5BTkSATkFOQYBOQU1FgE5BTcVOQU0ygE5BS0FBUsFOQUuATkFJUsFOQUnMTkFHUslOQUdBUoBOQUdBgE5BR8FOQUeATkHHTkFFgE5BQkxBgE5BQkFUQUVBzk5BQVNJS1lBWUGATkFBS1NJS1lBWUGATkFBSYBOQcFOQTSATkEygE5BLTmATkEtOIBOQS03gE5BLTaATkEtNYBOQS00gE5BLTOATkEtMoBOQS0xgE4wNDKATjA0MYBOMDQwgE4wMzmATjAzOIBOMDM3QYBOMDM3gE4wMzaATjAzNUGATjAzNYBOMDM0QYBOMDM0gE4wMzNBgE4wMzOATjAzMoBOMDMxgE4wMzCATjAyOYBOMDI4gE4wMjeATjAyNoBOMDI1QYBOMDI1gE4wMjSATjAyM4BOMDIygE4wMjGATjAyMIBOMDE5gE4wMThCgE4wMThBgE4wMTiATjAxN4BOMDE2gE4wMTWATjAxNIBOMDEzgE4wMTKATjAxMYBOMDEwgE4wMDmATjAwOIBOMDA3gE4wMDaATjAwNYBOMDA0gE4wMDOATjAwMoBOMDAxgE4tTVUtTU8tMoBOLU1VLU1PLTGATi1DUkXFTi1BUtlNWoBNWViATVlUgE1ZU0xJVEWATVlQgE1ZQYBNWcFNV09PgE1XT4BNV0lJgE1XSYBNV0VFgE1XRYBNV0FBgE1XQYBNV4BN101WU4BNVk9QgE1WSYBNVkVVQUVOR0FNgE1WgE3WTVVYgE1VVVZVWkhBS0tVgE1VVVNJS0FUT0FOgE1VVVJESEFKwU1VVYBNVVRIQUxJWUGATVVUgE1VU0lDgE1VU0nDTVVTSFJPT02ATVVTSDOATVVTSLNNVVNIgE1VU8hNVVOATVVSWIBNVVJHVTKATVVSRYBNVVJEQYBNVVJEwU1VUoBNVVFEQU2ATVVQgE1VT1iATVVPVIBNVU9QgE1VT01BRYBNVU+ATVVOU1VCgE1VTkFIgE1VToBNVUxUSVNFVIBNVUxUSVNF1E1VTFRJUExJQ0FUSU9OgE1VTFRJUExJQ0FUSU/OTVVMVElQTEWATVVMVElQTMVNVUxUSU9DVUxB0k1VTFRJTUFQgE1VTFTJTVVMVEFOyU1VS1BIUkVOR4BNVUtLVVJVTkmATVVJToBNVUdTgE1VR4BNVcdNVUVOgE1VRYBNVUNIgE1VQ8hNVUNBQUSATVVBU4BNVUFOgE1VQUWATVUtR0FBSExBwU1VLTSATVUtM4BNVS0ygE1VLTGATdVNVEFWUlVMyU1TgE1Sz01SQUNITlmATVJBQ0hOT1RJS0hBWUGATVJBQ0hOT4BNUkFDSE5BWUGATdJNUYBNUEGATU9ZQUmATU9YgE1PVknFTU9WRdNNT1ZFTUVOVC1XQUxMUExBTsVNT1ZFTUVOVC1ISU5HxU1PVkVNRU5ULUZMT09SUExBTsVNT1ZFTUVOVC1ESUFHT05BzE1PVkVNRU5UgE1PVkVNRU7UTU9WRcRNT1ZFgE1PVVRIgE1PVVNFgE1PVVPFTU9VTlRBSU5TgE1PVU5UQUlOgE1PVU5UQUnOTU9VTtRNT1VORIBNT1VOxE1PVE9SV0FZgE1PVE9SSVpFxE1PVE9SQ1lDTEWATU9UT9JNT1RIRVKATU9USEXSTU9UgE1PU1FVSVRPgE1PU1FVRYBNT1JUVVVNgE1PUlRBUoBNT1JQSE9MT0dJQ0HMTU9STklOR4BNT1CATU9PU0UtQ1JFxU1PT06ATU9Pzk1PT01QVVGATU9PTUVVVIBNT09EgE1PT8RNT0+ATU9OVElFRU6ATU9OVEiATU9OVMhNT05TVEVSgE1PTk9TVEFCTMVNT05PU1BBQ8VNT05PUkFJTIBNT05PR1JBUMhNT05PR1JBTU1P001PTk9HUkHNTU9OT0ZPTklBU4BNT05PQ1VMQdJNT05PQ0xFgE1PTktFWYBNT05LRdlNT05JgE1PTkdLRVVBRVGATU9ORVktTU9VVMhNT05F2U1PToBNT85NT0yATU9LSEFTU0FTgE1PSEFNTUHETU9EVUzPTU9ESUZJRVItOYBNT0RJRklFUi04gE1PRElGSUVSLTeATU9ESUZJRVItNoBNT0RJRklFUi01gE1PRElGSUVSLTSATU9ESUZJRVItM4BNT0RJRklFUi0ygE1PRElGSUVSLTE2gE1PRElGSUVSLTE1gE1PRElGSUVSLTE0gE1PRElGSUVSLTEzgE1PRElGSUVSLTEygE1PRElGSUVSLTExgE1PRElGSUVSLTEwgE1PRElGSUVSgE1PRMlNT0RFU1RZgE1PREVSzk1PREVNgE1PREVMU4BNT0RFTIBNT0RFgE1PQklMxU1PQYBNTy02gE1PLTWATU8tNIBNTy0zgE3PTU5ZQc1NTkFTgE1NU1CATU2ATc1NTEGATUyATUtQQVJB0U1JWIBNSVSATUlTUkGATUlSUk9SgE1JUlJP0k1JUklCQUFSVYBNSVJJgE1JUkVEgE1JUIBNSU5ZgE1JTlVTLU9SLVBMVdNNSU5VU4BNSU5OQc5NSU5JU1RFUoBNSU5JTUlaRYBNSU5JTUGATUlOSURJU0OATUlOSUJVU4BNSU1FgE1JTYBNSUxMSU9OU4BNSUxMSU9O001JTExFVIBNSUxMxU1JTMxNSUxL2U1JTEuATUlMSVRBUtlNSUyATUlLVVJPToBNSUtST85NSUtSSYBNSUlOgE1JSU2ATUlJgE1Jx01JRViATUlFVU0tVElLRVVUgE1JRVVNLVNTQU5HU0lPU4BNSUVVTS1TU0FOR05JRVVOgE1JRVVNLVJJRVVMgE1JRVVNLVBJRVVQLVNJT1OATUlFVU0tUElFVVCATUlFVU0tUEFOU0lPU4BNSUVVTS1OSUVVToBNSUVVTS1DSUVVQ4BNSUVVTS1DSElFVUNIgE1JRVXNTUlFUIBNSUVFgE1JRYBNSURMSU7FTUlERExFLVdFTFPITUlERExFgE1JRC1MRVZFzE1JxE1JQ1JPU0NPUEWATUlDUk9QSE9ORYBNSUNST0JFgE1JQ1LPTUlD0k1JLTeATUktNoBNSS01gE1JLTSATUktM4BNSS0ygE1JLTGATUhagE1IQYBNSIBNR1VYgE1HVVSATUdVUliATUdVUoBNR1VQgE1HVU9YgE1HVU9QgE1HVU+ATUdVgE1HT1iATUdPVIBNR09QgE1HT4BNR89NR0lFWIBNR0lFgE1HRViATUdFUIBNR0WATUdCVYBNR0JPT4BNR0JPRlVNgE1HQk+ATUdCSYBNR0JFVU6ATUdCRU6ATUdCRUWATUdCRYBNR0JBU0FRgE1HQkFTQYBNR0FYgE1HQVSATUdBUIBNR0GATUeATUZPToBNRk/OTUZPgE1GSVlBUYBNRklFRYBNRkVVVIBNRkVVUYBNRkVVQUWATUZBQYBNRVpaT4BNRViATUVV1E1FVVGATUVVTkpPTU5ERVVRgE1FVU6ATUVUUk+ATUVUUklDQcxNRVRSSUGATUVUUkVURdNNRVRPQkVMVVOATUVURUuATUVURUeATUVUQUyATUVUwU1FU1NFTklBzk1FU1NBR0WATUVTU0FHxU1FU0+ATUVTSYBNRVNIgE1FUlBFUlNPToBNRVJLSEGATUVSS0jBTUVSSURJQU5TgE1FUkmATUVSR0WATUVSQ1VSWYBNRVJDVVLZTUVOT1JByE1FTk9FgE1FTkRVVIBNRU6ATUVNT4BNRU1CRVJTSElQgE1FTUJFUoBNRU1CRdJNRU0tUU9QSIBNRU2ATUXNTUVMVElOx01FTE9EScNNRUxJS4BNRUlaSYBNRUdBVE9OgE1FR0FQSE9ORYBNRUdBTEmATUVFVE9SVYBNRUVURclNRUVUgE1FRU1VgE1FRU2ATUVFyk1FRUVFgE1FRElVTYBNRURJVc1NRURJRVZBzE1FRElDSU5FgE1FRElDQcxNRURJQcxNRURFRkFJRFJJzk1FREFMgE1FQ0hJS4BNRUNISctNRUNIQU5JQ0HMTUVBVIBNRUHUTUVBU1VSRcRNRUFTVVJFgE1FQVNVUsVNRS1NQYBNRS0ygE1FLTGATURVzk3ETUNI1U1DSEHOTUOATcNNQlVVgE1CVU9RgE1CVU+ATUJVRYBNQlVBRU2ATUJVQUWATUJPT4BNQk+ATUJJVIBNQknUTUJJUklFRU6ATUJJgE1CRVVYgE1CRVVSSYBNQkVVTYBNQkVSQUWATUJFToBNQkVFS0VFVIBNQkVFgE1CRYBNQkFRgE1CQU5ZSYBNQkFBUkFFgE1CQUFLRVSATUJBQYBNQkHBTULBTUI0gE1CM4BNQjKATUFZRctNQVlBTk5BgE1BWUHOTUFZgE1BWElNSVpFgE1BWElNQYBNQViATUFVgE1BVFRPQ0uATUFUUklYgE1BVEVSSUFMU4BNQVSATUFT1U1BU1NJTkeATUFTU0FHRYBNQVNPUsFNQVNLgE1BU8tNQVNIRkFBVIBNQVNIMoBNQVNDVUxJTsVNQVNBUkHNTUFSWYBNQVJXQVLJTUFSVUtVgE1BUlRZUknBTUFSVElBzE1BUlJZSU7HTUFSUklBR8VNQVJSQVRBToBNQVJL001BUktFUoBNQVJLLTSATUFSSy0zgE1BUkstMoBNQVJLLTGATUFSRYBNQVJDSEXOTUFSQ0iATUFSQ0FUTy1TVEFDQ0FUT4BNQVJDQVRPgE1BUkNBU0lURYBNQVJCVVRBgE1BUkJVVMFNQVKATUFRQUaATUFRgE1BUEzFTUFQSVGATUHQTUFPgE1BTlVBzE1BTlRFTFBJRUPFTUFOU1lPToBNQU5TVUFFgE1BTk5B2k1BTk5BgE1BTklDSEFFQc5NQU5HT4BNQU5HQUxBTYBNQU5EQVJJToBNQU5EQUlMSU7HTUFOREFJw01BTkNI1U1BTkHUTUFOQUNMRVOATUFNTU9USIBNQUxURVPFTUFMz01BTEVFUkmATUFMxU1BTEFLT85NQUtTVVJBgE1BS1NVUsFNQUtBU0HSTUFJWkWATUFJWUFNT0uATUFJVEFJS0hVgE1BSVJVgE1BSU1VQU6ATUFJTUFMQUmATUFJTEJP2E1BSUtVUk+ATUFJREVOgE1BSYBNQUhKT07HTUFISEGATUFIQVBSQU5BgE1BSEFQQUtIgE1BSEFKQU7JTUFIQUFQUkFBTsFNQUiATUFHTklGWUlOx01BR05FVIBNQUdJw01BR0WATUFFU0mATUFFTllJgE1BRU5KRVSATUFFTVZFVViATUFFTUtQRU6ATUFFTUdCSUVFgE1BRU1CR0JJRUWATUFFTUJBgE1BRU2ATUFFTEVFgE1BRUtFVVCATUFEWUGATUFEVYBNQUREQUiATUFEREHITUFEREGATUFERMFNQUNST04tR1JBVkWATUFDUk9OLUJSRVZFgE1BQ1JPTi1BQ1VURYBNQUNST06ATUFDUk/OTUFDSElORYBNQUFZWUFBgE1BQUmATUFBgE1BMoBNQS03gE1BLTaATUEtNYBNQS00gE1BLTOATUEtMoBNQS0xgE0xObdNMTm2TTE5tU0xObRNMTmzTTE5sk0xObFNMTmwTTE4uU0xOLhNMTi3TTE4tk0xOLVNMTi0TTE4s00xOLJNMTixTTE4sE0xN7lNMTe4TTE3t00xN7ZNMTe1TTE3tE0xN7NNMTeyTTE3sU0xN7BNMTa5TTE2uE0xNrdNMTa2TTE2tU0xNrRNMTazTTE2sk0xNrFNMTawTTE1uU0xNbhNMTW3TTE1tk0xNbVNMTW0TTE1s00xNbJNMTWxTTE1sE0xNLlNMTS4TTE0t00xNLZNMTS1TTE0tE0xNLNNMTSyTTE0sU0xNLBNMTO5TTEzuE0xM7dNMTO2TTEztU0xM7RNMTOzTTEzsk0xM7FNMTOwTTEyuU0xMrhNMTK3TTEytk0xMrVNMTK0TTEys00xMrJNMTKxTTEysE0xMblNMTG4TTExt00xMbZNMTG1TTExtE0xMbNNMTGyTTExsU0xMbBNMTC5TTEwuE0xMLdNMTC2TTEwtU0xMLRNMTCzTTEwsk0xMLFNMTCwTTA5uU0wObhNMDm3TTA5tk0wObVNMDm0TTA5s00wObJNMDmxTTA5sE0wOLlNMDi4TTA4t00wOLZNMDi1TTA4tE0wOLNNMDiyTTA4sU0wOLBNMDe5TTA3uE0wN7dNMDe2TTA3tU0wN7RNMDezTTA3sk0wN7FNMDewTTA2uU0wNrhNMDa3TTA2tk0wNrVNMDa0TTA2s00wNrJNMDaxTTA2sE0wNblNMDW4TTA1t00wNbZNMDW1TTA1tE0wNbNNMDWyTTA1sU0wNbBNMDS5TTA0uE0wNLdNMDS2TTA0tU0wNDSATTA0tE0wNDOATTA0s00wNDKATTA0sk0wNDGATTA0sU0wNDBBgE0wNDCATTA0sE0wMzmATTAzuU0wMziATTAzuE0wMzeATTAzt00wMzaATTAztk0wMzWATTAztU0wMzSATTAztE0wMzNCgE0wMzNBgE0wMzOATTAzs00wMzKATTAzsk0wMzFBgE0wMzGATTAzsU0wMzCATTAzsE0wMjmATTAyuU0wMjhBgE0wMjiATTAyuE0wMjeATTAyt00wMjaATTAytk0wMjWATTAytU0wMjRBgE0wMjSATTAytE0wMjOATTAys00wMjJBgE0wMjKATTAysk0wMjGATTAysU0wMjCATTAysE0wMTmATTAxuU0wMTiATTAxuE0wMTdBgE0wMTeATTAxt00wMTZBgE0wMTaATTAxtk0wMTVBgE0wMTWATTAxtU0wMTSATTAxtE0wMTOATTAxs00wMTJIgE0wMTJHgE0wMTJGgE0wMTJFgE0wMTJEgE0wMTJDgE0wMTJCgE0wMTJBgE0wMTKATTAxsk0wMTGATTAxsU0wMTBBgE0wMTCATTAxsE0wMDmATTAwuU0wMDiATTAwuE0wMDeATTAwt00wMDaATTAwtk0wMDWATTAwtU0wMDSATTAwtE0wMDNBgE0wMDOATTAws00wMDKATTAwsk0wMDFCgE0wMDFBgE0wMDGATTAwsUzaTFlZgExZWIBMWVSATFlSWIBMWVKATFlQgExZSVSATFlJTsdMWURJQc5MWUNJQc5MWIBMV09PgExXT4BMV0lJgExXSYBMV0WATFdBQYBMV0GATFVYgExVVYBMVVSATFVSWIBMVVCATFVPWIBMVU9UgExVT1CATFVPgExVTkdTSYBMVU5HU4BMVU5BVMVMVc1MVUyATFVJU4BMVUhVUoBMVUiATFXITFVHR0FHRYBMVUdBTIBMVUdBzExVRYBMVcVMVUKATFVBRVCATFUzgExVMoBMVbJMUk+ATFJNgExSSYBMUkWATE9aRU5HRYBMT1pFTkfFTE9YgExPV0VSRcRMT1ctUkVWRVJTRUQtuUxPVy1NScRMT1ctRkFMTElOx0xPVy25TE9WxUxPVVJFgExPVURTUEVBS0VSgExPVURM2UxPVFVTgExPVFXTTE9USU/OTE9UgExPU1NMRVNTgExPUlJZgExPUlJBSU5FgExPUYBMT1CATE9PVIBMT09QRcRMT09QgExPT9BMT09OgExPT8tMT0+ATE9OU1VNgExPTkdBgExPTkfBTE9ORy1MRUdHRcRMT05HLUJSQU5DSC1ZUoBMT05HLUJSQU5DSC1TT8xMT05HLUJSQU5DSC1PU9NMT05HLUJSQU5DSC1NQUTSTE9ORy1CUkFOQ0gtSEFHQUzMTE9ORy1CUkFOQ0gtQdJMT01NQUWATE9NS0GATE9NgExPzUxPTExJUE9QgExPTEyATE9H0kxPR09UWVDFTE9HT0dSQc1MT0eATE9ERVNUT05FgExPQ09NT1RJVkWATE9DS0lORy1TSElG1ExPQ0FUSVZFgExPQ0FUSU9OLVdBTExQTEFOxUxPQ0FUSU9OLUZMT09SUExBTsVMT0NBVElPToBMT0NBVElPzkxPQlNURVKATE9BgExOgExMVVWATExPT4BMTExVVYBMTExVgExMTE9PgExMTE+ATExMSUmATExMSYBMTExFRYBMTExFgExMTEFVgExMTEFJgExMTEFBgExMTEGATExMgExMSEGATExBTUGATEpVRElKRYBMSkWATEqATElaQVJEgExJWIBMSVdOgExJVlLFTElUVExFgExJVFRMxUxJVFRF0kxJVFLBTElUyExJU9VMSVOATElSwUxJUVVJRIBMSVFVScRMSVGATElQU1RJQ0uATElQ00xJ0ExJTktJTsdMSU5LRcRMSU7LTElOR1NBgExJTkVTgExJTkXTTElORS05gExJTkUtN4BMSU5FLTOATElORS0xgExJTU1VNIBMSU1NVTKATElNTVWATElNTdVMSU1JVEXETElNSVRBVElPToBMSU1JVIBMSU1FgExJTULVTElNQtNMSU3CTElMWYBMSUxJVEiATElMgExJR0hUTklOR4BMSUdIVE5JTsdMSUdIVEhPVVNFgExJR0hUgExJR0FUSU7HTElGVEVSgExJRkWATElFWIBMSUVUgExJRVCATElFRYBMSUWATElEgExJQ0tJTsdMSUJSQYBMSUJFUlRZgExJQUJJTElU2UxISUmATEhBVklZQU5JgExIQcdMSEFBgExIgExFWkiATEVayExFWIBMRVZJVEFUSU5HgExFVkVMLTOATEVWRUwtMoBMRVVNgExFVUFFUIBMRVVBRU2ATEVVgExF1UxFVFRFUlOATEVUVEVSgExF1ExFU1NF0kxFU1MtVEhBToBMRVNTLVRIQc5MRVNIgExFUENIwUxFUIBMRU9QQVJEgExFT4BMRU5USUNVTEHSTEVOSVOATEVOSdNMRU5HVEhFTkVSgExFTkdUSC03gExFTkdUSC02gExFTkdUSC01gExFTkdUSC00gExFTkdUSC0zgExFTkdUSC0ygExFTkdUSC0xgExFTkdUyExFTkdBgExFTkfBTEVNT06ATEVNT0mATEVMRVSATEVMRdRMRctMRUlNTUGATEVJTU3BTEVJgExFR1OATEVHSU9OgExFR0VUT9NMRUeATEXHTEVGVFdBUkRTgExFRlQtVE8tUklHSNRMRUZULVNURc1MRUZULVNJRMVMRUZULVNIQURFxExFRlQtUE9JTlRJTsdMRUZULUxJR0hURcRMRUZULUhBTkRFxExFRlQtSEFOxExFRlQtRkFDSU7HTEVGVIBMRUVSQUVXQYBMRUVLgExFRUVFgExFREdFUoBMRUFUSEVSgExFQU5JTsdMRUFG2UxFQUaATEVBxkxFQURFUoBMRUHETERBToBMRDKATEPJTEPFTEFa2UxBWUFOTkGATEFYgExBV4BMQddMQVVMQYBMQVVLQdpMQVVKgExBVUdISU5HgExBVElOQVTFTEFUSUuATEFURVJBzExBVMVMQVPUTEFSWU5HRUHMTEFSyUxBUkdFU1SATEFSR0XSTEFSR0WATEFSR8VMQVGATEFQQVGATEHPTEFOVEVSToBMQU5UQU5HgExBTkdVQUfFTEFORVOATEFOxExBToBMQU1QgExBTUVESIBMQU1FRIBMQU1FxExBTUWATEFNxUxBTURBgExBTUSATEFNQkTBTEFNQURIgExBTIBMQcxMQUtLSEFOR1lBT4BMQUtIQU6ATEFLSIBMQUvITEFLLTc0OYBMQUstNzI0gExBSy02NjiATEFLLTY0OIBMQUstNjS4TEFLLTYzNoBMQUstNjE3gExBSy02MbdMQUstNjA4gExBSy01NTCATEFLLTQ5NYBMQUstNDkzgExBSy00OTKATEFLLTQ5MIBMQUstNDgzgExBSy00NzCATEFLLTQ1N4BMQUstNDUwgExBSy00NDmATEFLLTQ0uUxBSy00NDGATEFLLTM5MIBMQUstMzg0gExBSy0zODOATEFLLTM0OIBMQUstMzQ3gExBSy0zNDOATEFLLTI2NoBMQUstMjY1gExBSy0yMziATEFLLTIyOIBMQUstMjI1gExBSy0yMjCATEFLLTIxOYBMQUstMjEwgExBSy0xNDKATEFLLTEzMIBMQUstMDkygExBSy0wODGATEFLLTA4sUxBSy0wODCATEFLLTA3uUxBSy0wNjKATEFLLTA1MYBMQUstMDUwgExBSy0wMzCATEFLLTAyNYBMQUstMDIxgExBSy0wMjCATEFLLTAwM4BMQUpBTllBTEFOgExBSU7HTEHJTEFIU0hVgExBSIBMQUdVU4BMQUfVTEFHQVKATEFHQdJMQUdBQoBMQUdBwkxBRVaATEFFgExBRNlMQURERVKATEFDUk9TU8VMQUNLgExBQ0GATEFCT1VSSU5HgExBQk9SgExBQklBTElaQVRJT85MQUJJQcxMQUJFTIBMQUJBVIBMQcJMQUFOQUWATEFBToBMQUFNVYBMQUFJgEw2gEw0gEwzgEwygEwwMDZBgEwwMDJBgEwtVFlQxUwtU0hBUEXES1lVUklJgEtZVYBLWU+AS1lMSVNNQYBLWUmAS1lFgEtZQVRIT9NLWUFBgEtZQYBLWFdJgEtYV0VFgEtYV0WAS1hXQUGAS1hXQYBLWFWAS1hPgEtYSYBLWEVFgEtYRYBLWEFBgEtYQYBLV1aAS1dVMzE4gEtXT0+AS1dPgEtXTYBLV0lJgEtXSYBLV0VFgEtXRYBLV0KAS1dBWYBLV0FFVIBLV0FBgEtWQYBLVoBLVVpISYBLVViAS1VWgEtVVUiAS1VUgEtVU01BgEtVU0hVMoBLVVNIVbJLVVJYgEtVUlVaRUlST4BLVVJUgEtVUk9PTkWAS1VSgEtV0ktVUYBLVVBOQVlBgEtVT1iAS1VPUIBLVU/QS1VPTYBLVU+AS1VOR4BLVU5EREFMSVlBgEtVTIBLVcxLVUeAS1VGSVNNQYBLVUVUgEtVQoBLVUFWgEtVQUKAS1VBgEtVN4BLVTSAS1W0S1UzgEtVs0tVLTeAS1UtNoBLVS01gEtVLTSAS1UtM4BLVS0ygEtVLTGAS1SAS1NTVVWAS1NTVYBLU1NPT4BLU1NPgEtTU0lJgEtTU0mAS1NTRUWAS1NTRYBLU1NBVYBLU1NBSYBLU1NBQYBLU1NBgEtTU4BLU0mAS1JZWkhFVkFZQYBLUllaSEVNgEtSWVpIRc1LUllaSIBLUllayEtSWVVLT1ZBWUGAS1JZVUtPVkFZwUtSWVVLgEtSWVXLS1JPTk9TgEtSRU1BU1RJgEtSQVRJTU9ZUE9SUk9PToBLUkFUSU1PS09VRklTTUGAS1JBVElNQVRBgEtSQVRJTcFLUFWAS1BPUYBLUE9PgEtQT4BLUEmAS1BFVViAS1BFRYBLUEWAS1BBUkFRgEtQQU6AS1BBSIBLUEGAS1CAS09YgEtPVlVVgEtPVoBLT1RPgEtPUlVOQYBLT1JPTklTgEtPUk9OgEtPUkVBzktPUkFOScNLT1FORE9OgEtPUFBBgEtPUIBLT09WgEtPT1BPgEtPT01VVVSAS09PQoBLT0+AS09OVEVWTUGAS09OVEVWTcFLT03JS09NQlVWQYBLT01CVVbBS09NQtVLT0tPgEtPS0WAS09LgEtPy0tPSU5JgEtPSYBLT8lLT0iAS09HSE9NgEtPRVSAS09CWUxBgEtPQoBLT0FMQYBLT0GAS08tS0mAS08tM4BLTy0ygEtPLTGAS05VQ0tMRVOAS05VQ0tMRYBLTk9UgEtOT0JTgEtOSUdIVC1ST09LgEtOSUdIVC1RVUVFToBLTklHSFQtQklTSE9QgEtOSUdIVIBLTklHSNRLTklGRYBLTklGxUtORUVMSU7HS02AS81LTFlVQ0hFVk9ZgEtMWVVDSEVWQVlBgEtMWVVDSEVWQVnBS0xZVUNIRVBPVk9ETlmAS0xZVUNIRVBPVk9ETkFZQYBLTFlVQ0hFTkVQT1NUT1lBTk5ZgEtMWVVDSEVORVBPU1RPWUFOTkFZQYBLTFlVQ0iAS0xJVE9OgEtMQVNNQYBLTEFTTcFLTEGAS0yAS0tPgEtLSYBLS0VFgEtLRYBLS0GAS0uAS0pFgEtJWUVPSy1USUtFVVSAS0lZRU9LLVNJT1MtS0lZRU9LgEtJWUVPSy1SSUVVTIBLSVlFT0stUElFVVCAS0lZRU9LLU5JRVVOgEtJWUVPSy1LSElFVUtIgEtJWUVPSy1DSElFVUNIgEtJWUVPy0tJWIBLSVdJRlJVSVSAS0lXgEtJVoBLSVRFgEtJVIBLSVNTSU7HS0lTU4BLSVPTS0lTSU01gEtJU0lNtUtJU0iAS0lTQUyAS0lST1dBVFRPgEtJUk9NRUVUT1JVgEtJUk9HVVJBTVWAS0lST4BLSVJHSEnaS0lRgEtJUIBLSdBLSU5TSElQgEtJTk7BS0lOREVSR0FSVEVOgEtJTU9OT4BLSUxMRVKAS0lJWkiAS0lJgEtJSIBLSUVYgEtJRVZBzktJRVCAS0lFRU2AS0lFgEtJRIBLScRLSUNLgEtJQoBLSUFWgEtJQUKAS0ktOIBLSS03gEtJLTaAS0ktNYBLSS00gEtJLTOAS0ktMoBLSS0xgEtIWoBLSFdBSYBLSFVFTi1MVcVLSFVFzktIVURBV0FEyUtIVURBTYBLSFVBVIBLSE9VgEtIT9RLSE9OTkGAS0hPToBLSE9NVVSAS0hPS0hMT81LSE9KS8lLSE+AS0jPS0hN1UtISVSAS0hJTllBgEtISUVVS8hLSEmAS0jJS0hIT4BLSEhBgEtIRVRIgEtIRUmAS0hFRYBLSEWAS0hBVoBLSEFST1NIVEjJS0hBUoBLSEFQSIBLSEFOx0tIQU5EwUtIQU1UyUtIQU1JTE+AS0hBS0FTU0lBzktIQUmAS0hBSIBLSEHIS0hBRoBLSEFCgEtIQUGAS0eAS0VZQ0FQgEtFWUNB0EtFWUJPQVJEgEtFWUJPQVLES0VYgEtFVoBLRVVZRVVYgEtFVVNIRVVBRVCAS0VVU0VVWIBLRVVQVVGAS0VVT9RLRVVNgEtFVUtFVVROREGAS0VVS0FRgEtFVUFFVE1FVU6AS0VVQUVSSYBLRVRUyUtFU0gygEtFUkVUgEtFT1eAS0VOVElNQVRBgEtFTlRJTUFUwUtFTlRJTcFLRU5BVIBLRU6AS0XOS0VNUFVMgEtFTVBVzEtFTVBMSYBLRU1QTMlLRU1QSFJFTkeAS0VNQkFOR4BLRUxWSc5LRUhFSIBLRUhFyEtFSIBLRUZVTEGAS0VFVoBLRUVTVYBLRUVQSU7HS0VFTkeAS0VFQoBLRUKAS0VBQUWAS0NBTIBLQoBLQVpBS8hLQVlBTk5BgEtBWUHIS0FYgEtBV1aAS0FXSYBLQVdCgEtBVllLQYBLQVZZS8FLQVaAS0FVVoBLQVVOQYBLQVXOS0FVQoBLQVRPgEtBVEhJU1RJgEtBVEhBS8FLQVRBVkFTTUGAS0FUQVbBS0FUQUtBTkEtSElSQUdBTsFLQVNSQVRBToBLQVNSQVRBzktBU1JBgEtBU1LBS0FTS0FMgEtBU0tBzEtBU0hNSVLJS0FSU0hBTkGAS0FST1JJSYBLQVJPUkFOgEtBUk9SgEtBUs9LQVJFzktBUkFUVE+AS0FSQU6AS0FQWUVPVU5TU0FOR1BJRVVQgEtBUFlFT1VOUklFVUyAS0FQWUVPVU5QSElFVVBIgEtBUFlFT1VOTUlFVU2AS0FQUEGAS0FQUMFLQVBPgEtBUEiAS0FQQUyAS0FQQYBLQdBLQU5UQUrBS0FOTkFEwUtBTkdBUk9PgEtBTkeAS0FOx0tBTkFLT4BLQU00gEtBTTKAS0FNgEtBS0+AS0FLQUJBVIBLQUuAS0HLS0FJVoBLQUlUSMlLQUlSSYBLQUlCgEtBSYBLQclLQUZBgEtBRoBLQcZLQUQ1gEtBRLVLQUQ0gEtBRDOAS0FEs0tBRDKAS0FEgEtBQ0hLQYBLQULBS0FCgEtBQVaAS0FBSYBLQUFGVYBLQUFGgEtBQUNVgEtBQUJBgEtBQUKAS0EygEtBsktBLUtFgEtBLTmAS0EtOIBLQS03gEtBLTaAS0EtNYBLQS00gEtBLTOAS0EtMoBLQS0xMYBLQS0xMIBLQS0xgEswMDiASzAwN4BLMDA2gEswMDWASzAwNIBLMDAzgEswMDKASzAwMYBKV0GASlVVgEpVVIBKVVNUSUZJQ0FUSU9OgEpVUElURVKASlVPVIBKVU9QgEpVTk+ASlVOR1NFT07HSlVORYBKVUxZgEpVR0dMSU5HgEpVRVVJgEpVRFVMgEpVREdFgEpVREVPLVNQQU5JU8hKT1lTVElDS4BKT1lPVdNKT1mASk9WRYBKT9RKT05HgEpPTsFKT0tFUoBKT0lOVFOASk9JTkVEgEpPSU6ASk9BgEpOWUGASkpZWIBKSllUgEpKWVCASkpZgEpKVViASkpVVIBKSlVSWIBKSlVSgEpKVVCASkpVT1iASkpVT1CASkpVT4BKSlWASkpPWIBKSk9UgEpKT1CASkpPgEpKSViASkpJVIBKSklQgEpKSUVYgEpKSUVUgEpKSUVQgEpKSUWASkpJgEpKRUWASkpFgEpKQYBKSUyASklJTYBKSUmASklIVkFNVUxJWUGASklHU0HXSklBgEpIT1iASkhPgEpIRUiASkhBWUlOgEpIQU6ASkhBTYBKSEFBgEpIQYBKRVWASkVSVVNBTEVNgEpFUkHOSkVSQYBKRVKASkVIgEpFyEpFR09HQU6ASkVFTYBKRUXNSkVBTlOASkFZToBKQVlJToBKQVlBTk5BgEpBV4BKQVZJWUFOSYBKQVZBTkVTxUpBVYBKQVKASkFQQU5FU8VKQVBBToBKQU5VQVJZgEpBTExBSkFMQUxPVUhPVYBKQUxMgEpBSc5KQUmASkFIgEpBREWASkFDS1OASkFDSy1PLUxBTlRFUk6ASkFDy0otU0lNUExJRklFxElaSElUU0GASVpISVRTwUlaSEWASVpBS0FZwUlZRUuASVlBTk5BgElVSkGASVTTSVRFUkFUSU/OSVRFTYBJU1NIQVKASVNPU0NFTEXTSVNPToBJU0/OSVNPTEFURYBJU0xBTkSASVNITUFBTYBJU0VOLUlTRU6ASVNBS0nBSVMtUElMTEGASVJVWUFOTkGASVJVVVlBTk5BgElST04tQ09QUEXSSVJPToBJUkKASU9USUZJRcRJT1RBVEXESU9UQYBJT1TBSU9SgElPTkeASU9ESEFESIBJTlZJU0lCTMVJTlZFUlRFRIBJTlZFUlRFxElOVkVSVEVCUkFURYBJTlZFUlPFSU5UUk9EVUNFUoBJTlRJgElOVEVSU1lMTEFCScNJTlRFUlNFQ1RJT06ASU5URVJTRUNUSU/OSU5URVJTRUNUSU7HSU5URVJST0JBTkeASU5URVJST0JBTsdJTlRFUlBPTEFUSU/OSU5URVJMT0NLRcRJTlRFUkxJTkVB0klOVEVSTEFDRcRJTlRFUklP0klOVEVSRVPUSU5URVJDQUxBVEWASU5URUdSQVRJT06ASU5URUdSQVRJT85JTlRFR1JBTIBJTlRFR1JBzElOU1VMQdJJTlNUUlVNRU5UQcxJTlNJREWASU5TSUTFSU5TRVJUSU/OSU5TRVLUSU5TRUNUgElOU0NSSVBUSU9OQcxJTlBV1ElOTk9DRU5DRYBJTk5OgElOTkVSgElOTkXSSU5OgElOSU5HVYBJTkhJQknUSU5IRVJFTtRJTkhBTEWASU5HV0FagElORk9STUFUSU/OSU5GTFVFTkNFgElORklOSVRZgElORklOSVTZSU5EVVNUUklBzElORElSRUPUSU5ESUNUSU/OSU5ESUNBVE9SgElORElDQVRP0klOREnDSU5ESUHOSU5ERViASU5ERVBFTkRFTtRJTkNSRU1FTlSASU5DUkVBU0XTSU5DUkVBU0WASU5DUkVBU8VJTkNPTVBMRVTFSU5DT01JTsdJTkNMVURJTsdJTkNIgElOQk/YSU5BUIBJTi1BTEFGgElNUEVSSUHMSU1QRVJGRUNUVc1JTVBFUkZFQ1RBgElNUEVSRkVDVMFJTU6ASU1JU0VP00lNSU4zgElNSU6ASU1JzklNSUZUSE9ST06ASU1JRlRIT1JBgElNSUZPTk9OgElNSURJQVJHT06ASU1BR8VJTUFBTEGASUxVWUFOTkGASUxVWYBJTFVVWUFOTkGASUxVVIBJTElNTVU0gElMSU1NVTOASUxJTU1VgElMSU1N1UlMMoBJS0FSQYBJS0FSwUlKgElJWUFOTkGASUdJgElHyUlHR1dTgElGSU6ASUVVTkctVElLRVVUgElFVU5HLVRISUVVVEiASUVVTkctUklFVUyASUVVTkctUElFVVCASUVVTkctUEhJRVVQSIBJRVVORy1DSUVVQ4BJRVVORy1DSElFVUNIgElFVU7HSURMRYBJRElNgElESc1JREVPR1JBUEgtRkFEOYBJREVPR1JBUEgtRkFEOIBJREVPR1JBUEgtRkFEN4BJREVPR1JBUEgtRkFENoBJREVPR1JBUEgtRkFENYBJREVPR1JBUEgtRkFENIBJREVPR1JBUEgtRkFEM4BJREVPR1JBUEgtRkFEMoBJREVPR1JBUEgtRkFEMYBJREVPR1JBUEgtRkFEMIBJREVPR1JBUEgtRkFDRoBJREVPR1JBUEgtRkFDRYBJREVPR1JBUEgtRkFDRIBJREVPR1JBUEgtRkFDQ4BJREVPR1JBUEgtRkFDQoBJREVPR1JBUEgtRkFDQYBJREVPR1JBUEgtRkFDOYBJREVPR1JBUEgtRkFDOIBJREVPR1JBUEgtRkFDN4BJREVPR1JBUEgtRkFDNoBJREVPR1JBUEgtRkFDNYBJREVPR1JBUEgtRkFDNIBJREVPR1JBUEgtRkFDM4BJREVPR1JBUEgtRkFDMoBJREVPR1JBUEgtRkFDMYBJREVPR1JBUEgtRkFDMIBJREVPR1JBUEgtRkFCRoBJREVPR1JBUEgtRkFCRYBJREVPR1JBUEgtRkFCRIBJREVPR1JBUEgtRkFCQ4BJREVPR1JBUEgtRkFCQoBJREVPR1JBUEgtRkFCQYBJREVPR1JBUEgtRkFCOYBJREVPR1JBUEgtRkFCOIBJREVPR1JBUEgtRkFCN4BJREVPR1JBUEgtRkFCNoBJREVPR1JBUEgtRkFCNYBJREVPR1JBUEgtRkFCNIBJREVPR1JBUEgtRkFCM4BJREVPR1JBUEgtRkFCMoBJREVPR1JBUEgtRkFCMYBJREVPR1JBUEgtRkFCMIBJREVPR1JBUEgtRkFBRoBJREVPR1JBUEgtRkFBRYBJREVPR1JBUEgtRkFBRIBJREVPR1JBUEgtRkFBQ4BJREVPR1JBUEgtRkFBQoBJREVPR1JBUEgtRkFBQYBJREVPR1JBUEgtRkFBOYBJREVPR1JBUEgtRkFBOIBJREVPR1JBUEgtRkFBN4BJREVPR1JBUEgtRkFBNoBJREVPR1JBUEgtRkFBNYBJREVPR1JBUEgtRkFBNIBJREVPR1JBUEgtRkFBM4BJREVPR1JBUEgtRkFBMoBJREVPR1JBUEgtRkFBMYBJREVPR1JBUEgtRkFBMIBJREVPR1JBUEgtRkE5RoBJREVPR1JBUEgtRkE5RYBJREVPR1JBUEgtRkE5RIBJREVPR1JBUEgtRkE5Q4BJREVPR1JBUEgtRkE5QoBJREVPR1JBUEgtRkE5QYBJREVPR1JBUEgtRkE5OYBJREVPR1JBUEgtRkE5OIBJREVPR1JBUEgtRkE5N4BJREVPR1JBUEgtRkE5NoBJREVPR1JBUEgtRkE5NYBJREVPR1JBUEgtRkE5NIBJREVPR1JBUEgtRkE5M4BJREVPR1JBUEgtRkE5MoBJREVPR1JBUEgtRkE5MYBJREVPR1JBUEgtRkE5MIBJREVPR1JBUEgtRkE4RoBJREVPR1JBUEgtRkE4RYBJREVPR1JBUEgtRkE4RIBJREVPR1JBUEgtRkE4Q4BJREVPR1JBUEgtRkE4QoBJREVPR1JBUEgtRkE4QYBJREVPR1JBUEgtRkE4OYBJREVPR1JBUEgtRkE4OIBJREVPR1JBUEgtRkE4N4BJREVPR1JBUEgtRkE4NoBJREVPR1JBUEgtRkE4NYBJREVPR1JBUEgtRkE4NIBJREVPR1JBUEgtRkE4M4BJREVPR1JBUEgtRkE4MoBJREVPR1JBUEgtRkE4MYBJREVPR1JBUEgtRkE4MIBJREVPR1JBUEgtRkE3RoBJREVPR1JBUEgtRkE3RYBJREVPR1JBUEgtRkE3RIBJREVPR1JBUEgtRkE3Q4BJREVPR1JBUEgtRkE3QoBJREVPR1JBUEgtRkE3QYBJREVPR1JBUEgtRkE3OYBJREVPR1JBUEgtRkE3OIBJREVPR1JBUEgtRkE3N4BJREVPR1JBUEgtRkE3NoBJREVPR1JBUEgtRkE3NYBJREVPR1JBUEgtRkE3NIBJREVPR1JBUEgtRkE3M4BJREVPR1JBUEgtRkE3MoBJREVPR1JBUEgtRkE3MYBJREVPR1JBUEgtRkE3MIBJREVPR1JBUEgtRkE2RIBJREVPR1JBUEgtRkE2Q4BJREVPR1JBUEgtRkE2QoBJREVPR1JBUEgtRkE2QYBJREVPR1JBUEgtRkE2OYBJREVPR1JBUEgtRkE2OIBJREVPR1JBUEgtRkE2N4BJREVPR1JBUEgtRkE2NoBJREVPR1JBUEgtRkE2NYBJREVPR1JBUEgtRkE2NIBJREVPR1JBUEgtRkE2M4BJREVPR1JBUEgtRkE2MoBJREVPR1JBUEgtRkE2MYBJREVPR1JBUEgtRkE2MIBJREVPR1JBUEgtRkE1RoBJREVPR1JBUEgtRkE1RYBJREVPR1JBUEgtRkE1RIBJREVPR1JBUEgtRkE1Q4BJREVPR1JBUEgtRkE1QoBJREVPR1JBUEgtRkE1QYBJREVPR1JBUEgtRkE1OYBJREVPR1JBUEgtRkE1OIBJREVPR1JBUEgtRkE1N4BJREVPR1JBUEgtRkE1NoBJREVPR1JBUEgtRkE1NYBJREVPR1JBUEgtRkE1NIBJREVPR1JBUEgtRkE1M4BJREVPR1JBUEgtRkE1MoBJREVPR1JBUEgtRkE1MYBJREVPR1JBUEgtRkE1MIBJREVPR1JBUEgtRkE0RoBJREVPR1JBUEgtRkE0RYBJREVPR1JBUEgtRkE0RIBJREVPR1JBUEgtRkE0Q4BJREVPR1JBUEgtRkE0QoBJREVPR1JBUEgtRkE0QYBJREVPR1JBUEgtRkE0OYBJREVPR1JBUEgtRkE0OIBJREVPR1JBUEgtRkE0N4BJREVPR1JBUEgtRkE0NoBJREVPR1JBUEgtRkE0NYBJREVPR1JBUEgtRkE0NIBJREVPR1JBUEgtRkE0M4BJREVPR1JBUEgtRkE0MoBJREVPR1JBUEgtRkE0MYBJREVPR1JBUEgtRkE0MIBJREVPR1JBUEgtRkEzRoBJREVPR1JBUEgtRkEzRYBJREVPR1JBUEgtRkEzRIBJREVPR1JBUEgtRkEzQ4BJREVPR1JBUEgtRkEzQoBJREVPR1JBUEgtRkEzQYBJREVPR1JBUEgtRkEzOYBJREVPR1JBUEgtRkEzOIBJREVPR1JBUEgtRkEzN4BJREVPR1JBUEgtRkEzNoBJREVPR1JBUEgtRkEzNYBJREVPR1JBUEgtRkEzNIBJREVPR1JBUEgtRkEzM4BJREVPR1JBUEgtRkEzMoBJREVPR1JBUEgtRkEzMYBJREVPR1JBUEgtRkEzMIBJREVPR1JBUEgtRkEyRoBJREVPR1JBUEgtRkEyRYBJREVPR1JBUEgtRkEyRIBJREVPR1JBUEgtRkEyQ4BJREVPR1JBUEgtRkEyQoBJREVPR1JBUEgtRkEyQYBJREVPR1JBUEgtRkEyOYBJREVPR1JBUEgtRkEyOIBJREVPR1JBUEgtRkEyN4BJREVPR1JBUEgtRkEyNoBJREVPR1JBUEgtRkEyNYBJREVPR1JBUEgtRkEyNIBJREVPR1JBUEgtRkEyM4BJREVPR1JBUEgtRkEyMoBJREVPR1JBUEgtRkEyMYBJREVPR1JBUEgtRkEyMIBJREVPR1JBUEgtRkExRoBJREVPR1JBUEgtRkExRYBJREVPR1JBUEgtRkExRIBJREVPR1JBUEgtRkExQ4BJREVPR1JBUEgtRkExQoBJREVPR1JBUEgtRkExQYBJREVPR1JBUEgtRkExOYBJREVPR1JBUEgtRkExOIBJREVPR1JBUEgtRkExN4BJREVPR1JBUEgtRkExNoBJREVPR1JBUEgtRkExNYBJREVPR1JBUEgtRkExNIBJREVPR1JBUEgtRkExM4BJREVPR1JBUEgtRkExMoBJREVPR1JBUEgtRkExMYBJREVPR1JBUEgtRkExMIBJREVPR1JBUEgtRkEwRoBJREVPR1JBUEgtRkEwRYBJREVPR1JBUEgtRkEwRIBJREVPR1JBUEgtRkEwQ4BJREVPR1JBUEgtRkEwQoBJREVPR1JBUEgtRkEwQYBJREVPR1JBUEgtRkEwOYBJREVPR1JBUEgtRkEwOIBJREVPR1JBUEgtRkEwN4BJREVPR1JBUEgtRkEwNoBJREVPR1JBUEgtRkEwNYBJREVPR1JBUEgtRkEwNIBJREVPR1JBUEgtRkEwM4BJREVPR1JBUEgtRkEwMoBJREVPR1JBUEgtRkEwMYBJREVPR1JBUEgtRkEwMIBJREVPR1JBUEgtRjlGRoBJREVPR1JBUEgtRjlGRYBJREVPR1JBUEgtRjlGRIBJREVPR1JBUEgtRjlGQ4BJREVPR1JBUEgtRjlGQoBJREVPR1JBUEgtRjlGQYBJREVPR1JBUEgtRjlGOYBJREVPR1JBUEgtRjlGOIBJREVPR1JBUEgtRjlGN4BJREVPR1JBUEgtRjlGNoBJREVPR1JBUEgtRjlGNYBJREVPR1JBUEgtRjlGNIBJREVPR1JBUEgtRjlGM4BJREVPR1JBUEgtRjlGMoBJREVPR1JBUEgtRjlGMYBJREVPR1JBUEgtRjlGMIBJREVPR1JBUEgtRjlFRoBJREVPR1JBUEgtRjlFRYBJREVPR1JBUEgtRjlFRIBJREVPR1JBUEgtRjlFQ4BJREVPR1JBUEgtRjlFQoBJREVPR1JBUEgtRjlFQYBJREVPR1JBUEgtRjlFOYBJREVPR1JBUEgtRjlFOIBJREVPR1JBUEgtRjlFN4BJREVPR1JBUEgtRjlFNoBJREVPR1JBUEgtRjlFNYBJREVPR1JBUEgtRjlFNIBJREVPR1JBUEgtRjlFM4BJREVPR1JBUEgtRjlFMoBJREVPR1JBUEgtRjlFMYBJREVPR1JBUEgtRjlFMIBJREVPR1JBUEgtRjlERoBJREVPR1JBUEgtRjlERYBJREVPR1JBUEgtRjlERIBJREVPR1JBUEgtRjlEQ4BJREVPR1JBUEgtRjlEQoBJREVPR1JBUEgtRjlEQYBJREVPR1JBUEgtRjlEOYBJREVPR1JBUEgtRjlEOIBJREVPR1JBUEgtRjlEN4BJREVPR1JBUEgtRjlENoBJREVPR1JBUEgtRjlENYBJREVPR1JBUEgtRjlENIBJREVPR1JBUEgtRjlEM4BJREVPR1JBUEgtRjlEMoBJREVPR1JBUEgtRjlEMYBJREVPR1JBUEgtRjlEMIBJREVPR1JBUEgtRjlDRoBJREVPR1JBUEgtRjlDRYBJREVPR1JBUEgtRjlDRIBJREVPR1JBUEgtRjlDQ4BJREVPR1JBUEgtRjlDQoBJREVPR1JBUEgtRjlDQYBJREVPR1JBUEgtRjlDOYBJREVPR1JBUEgtRjlDOIBJREVPR1JBUEgtRjlDN4BJREVPR1JBUEgtRjlDNoBJREVPR1JBUEgtRjlDNYBJREVPR1JBUEgtRjlDNIBJREVPR1JBUEgtRjlDM4BJREVPR1JBUEgtRjlDMoBJREVPR1JBUEgtRjlDMYBJREVPR1JBUEgtRjlDMIBJREVPR1JBUEgtRjlCRoBJREVPR1JBUEgtRjlCRYBJREVPR1JBUEgtRjlCRIBJREVPR1JBUEgtRjlCQ4BJREVPR1JBUEgtRjlCQoBJREVPR1JBUEgtRjlCQYBJREVPR1JBUEgtRjlCOYBJREVPR1JBUEgtRjlCOIBJREVPR1JBUEgtRjlCN4BJREVPR1JBUEgtRjlCNoBJREVPR1JBUEgtRjlCNYBJREVPR1JBUEgtRjlCNIBJREVPR1JBUEgtRjlCM4BJREVPR1JBUEgtRjlCMoBJREVPR1JBUEgtRjlCMYBJREVPR1JBUEgtRjlCMIBJREVPR1JBUEgtRjlBRoBJREVPR1JBUEgtRjlBRYBJREVPR1JBUEgtRjlBRIBJREVPR1JBUEgtRjlBQ4BJREVPR1JBUEgtRjlBQoBJREVPR1JBUEgtRjlBQYBJREVPR1JBUEgtRjlBOYBJREVPR1JBUEgtRjlBOIBJREVPR1JBUEgtRjlBN4BJREVPR1JBUEgtRjlBNoBJREVPR1JBUEgtRjlBNYBJREVPR1JBUEgtRjlBNIBJREVPR1JBUEgtRjlBM4BJREVPR1JBUEgtRjlBMoBJREVPR1JBUEgtRjlBMYBJREVPR1JBUEgtRjlBMIBJREVPR1JBUEgtRjk5RoBJREVPR1JBUEgtRjk5RYBJREVPR1JBUEgtRjk5RIBJREVPR1JBUEgtRjk5Q4BJREVPR1JBUEgtRjk5QoBJREVPR1JBUEgtRjk5QYBJREVPR1JBUEgtRjk5OYBJREVPR1JBUEgtRjk5OIBJREVPR1JBUEgtRjk5N4BJREVPR1JBUEgtRjk5NoBJREVPR1JBUEgtRjk5NYBJREVPR1JBUEgtRjk5NIBJREVPR1JBUEgtRjk5M4BJREVPR1JBUEgtRjk5MoBJREVPR1JBUEgtRjk5MYBJREVPR1JBUEgtRjk5MIBJREVPR1JBUEgtRjk4RoBJREVPR1JBUEgtRjk4RYBJREVPR1JBUEgtRjk4RIBJREVPR1JBUEgtRjk4Q4BJREVPR1JBUEgtRjk4QoBJREVPR1JBUEgtRjk4QYBJREVPR1JBUEgtRjk4OYBJREVPR1JBUEgtRjk4OIBJREVPR1JBUEgtRjk4N4BJREVPR1JBUEgtRjk4NoBJREVPR1JBUEgtRjk4NYBJREVPR1JBUEgtRjk4NIBJREVPR1JBUEgtRjk4M4BJREVPR1JBUEgtRjk4MoBJREVPR1JBUEgtRjk4MYBJREVPR1JBUEgtRjk4MIBJREVPR1JBUEgtRjk3RoBJREVPR1JBUEgtRjk3RYBJREVPR1JBUEgtRjk3RIBJREVPR1JBUEgtRjk3Q4BJREVPR1JBUEgtRjk3QoBJREVPR1JBUEgtRjk3QYBJREVPR1JBUEgtRjk3OYBJREVPR1JBUEgtRjk3OIBJREVPR1JBUEgtRjk3N4BJREVPR1JBUEgtRjk3NoBJREVPR1JBUEgtRjk3NYBJREVPR1JBUEgtRjk3NIBJREVPR1JBUEgtRjk3M4BJREVPR1JBUEgtRjk3MoBJREVPR1JBUEgtRjk3MYBJREVPR1JBUEgtRjk3MIBJREVPR1JBUEgtRjk2RoBJREVPR1JBUEgtRjk2RYBJREVPR1JBUEgtRjk2RIBJREVPR1JBUEgtRjk2Q4BJREVPR1JBUEgtRjk2QoBJREVPR1JBUEgtRjk2QYBJREVPR1JBUEgtRjk2OYBJREVPR1JBUEgtRjk2OIBJREVPR1JBUEgtRjk2N4BJREVPR1JBUEgtRjk2NoBJREVPR1JBUEgtRjk2NYBJREVPR1JBUEgtRjk2NIBJREVPR1JBUEgtRjk2M4BJREVPR1JBUEgtRjk2MoBJREVPR1JBUEgtRjk2MYBJREVPR1JBUEgtRjk2MIBJREVPR1JBUEgtRjk1RoBJREVPR1JBUEgtRjk1RYBJREVPR1JBUEgtRjk1RIBJREVPR1JBUEgtRjk1Q4BJREVPR1JBUEgtRjk1QoBJREVPR1JBUEgtRjk1QYBJREVPR1JBUEgtRjk1OYBJREVPR1JBUEgtRjk1OIBJREVPR1JBUEgtRjk1N4BJREVPR1JBUEgtRjk1NoBJREVPR1JBUEgtRjk1NYBJREVPR1JBUEgtRjk1NIBJREVPR1JBUEgtRjk1M4BJREVPR1JBUEgtRjk1MoBJREVPR1JBUEgtRjk1MYBJREVPR1JBUEgtRjk1MIBJREVPR1JBUEgtRjk0RoBJREVPR1JBUEgtRjk0RYBJREVPR1JBUEgtRjk0RIBJREVPR1JBUEgtRjk0Q4BJREVPR1JBUEgtRjk0QoBJREVPR1JBUEgtRjk0QYBJREVPR1JBUEgtRjk0OYBJREVPR1JBUEgtRjk0OIBJREVPR1JBUEgtRjk0N4BJREVPR1JBUEgtRjk0NoBJREVPR1JBUEgtRjk0NYBJREVPR1JBUEgtRjk0NIBJREVPR1JBUEgtRjk0M4BJREVPR1JBUEgtRjk0MoBJREVPR1JBUEgtRjk0MYBJREVPR1JBUEgtRjk0MIBJREVPR1JBUEgtRjkzRoBJREVPR1JBUEgtRjkzRYBJREVPR1JBUEgtRjkzRIBJREVPR1JBUEgtRjkzQ4BJREVPR1JBUEgtRjkzQoBJREVPR1JBUEgtRjkzQYBJREVPR1JBUEgtRjkzOYBJREVPR1JBUEgtRjkzOIBJREVPR1JBUEgtRjkzN4BJREVPR1JBUEgtRjkzNoBJREVPR1JBUEgtRjkzNYBJREVPR1JBUEgtRjkzNIBJREVPR1JBUEgtRjkzM4BJREVPR1JBUEgtRjkzMoBJREVPR1JBUEgtRjkzMYBJREVPR1JBUEgtRjkzMIBJREVPR1JBUEgtRjkyRoBJREVPR1JBUEgtRjkyRYBJREVPR1JBUEgtRjkyRIBJREVPR1JBUEgtRjkyQ4BJREVPR1JBUEgtRjkyQoBJREVPR1JBUEgtRjkyQYBJREVPR1JBUEgtRjkyOYBJREVPR1JBUEgtRjkyOIBJREVPR1JBUEgtRjkyN4BJREVPR1JBUEgtRjkyNoBJREVPR1JBUEgtRjkyNYBJREVPR1JBUEgtRjkyNIBJREVPR1JBUEgtRjkyM4BJREVPR1JBUEgtRjkyMoBJREVPR1JBUEgtRjkyMYBJREVPR1JBUEgtRjkyMIBJREVPR1JBUEgtRjkxRoBJREVPR1JBUEgtRjkxRYBJREVPR1JBUEgtRjkxRIBJREVPR1JBUEgtRjkxQ4BJREVPR1JBUEgtRjkxQoBJREVPR1JBUEgtRjkxQYBJREVPR1JBUEgtRjkxOYBJREVPR1JBUEgtRjkxOIBJREVPR1JBUEgtRjkxN4BJREVPR1JBUEgtRjkxNoBJREVPR1JBUEgtRjkxNYBJREVPR1JBUEgtRjkxNIBJREVPR1JBUEgtRjkxM4BJREVPR1JBUEgtRjkxMoBJREVPR1JBUEgtRjkxMYBJREVPR1JBUEgtRjkxMIBJREVPR1JBUEgtRjkwRoBJREVPR1JBUEgtRjkwRYBJREVPR1JBUEgtRjkwRIBJREVPR1JBUEgtRjkwQ4BJREVPR1JBUEgtRjkwQoBJREVPR1JBUEgtRjkwQYBJREVPR1JBUEgtRjkwOYBJREVPR1JBUEgtRjkwOIBJREVPR1JBUEgtRjkwN4BJREVPR1JBUEgtRjkwNoBJREVPR1JBUEgtRjkwNYBJREVPR1JBUEgtRjkwNIBJREVPR1JBUEgtRjkwM4BJREVPR1JBUEgtRjkwMoBJREVPR1JBUEgtRjkwMYBJREVPR1JBUEgtRjkwMIBJREVPR1JBUEgtOTE0RIBJREVPR1JBUEgtOTA0QYBJREVPR1JBUEgtOEQ3MIBJREVPR1JBUEgtOENBOYBJREVPR1JBUEgtODlFM4BJREVPR1JBUEgtN0Q0MoBJREVPR1JBUEgtN0E3QYBJREVPR1JBUEgtNzk4MYBJREVPR1JBUEgtNzZEN4BJREVPR1JBUEgtNzUzM4BJREVPR1JBUEgtNzUxRoBJREVPR1JBUEgtNzEyMYBJREVPR1JBUEgtNzBCOYBJREVPR1JBUEgtNkYxNIBJREVPR1JBUEgtNkU4MIBJREVPR1JBUEgtNjcyQ4BJREVPR1JBUEgtNjcwOYBJREVPR1JBUEgtNjcwOIBJREVPR1JBUEgtNjYyMIBJREVPR1JBUEgtNjVCMIBJREVPR1JBUEgtNjU5OYBJREVPR1JBUEgtNjU1N4BJREVPR1JBUEgtNjM1NYBJREVPR1JBUEgtNjMwN4BJREVPR1JBUEgtNjI5NYBJREVPR1JBUEgtNjI1M4BJREVPR1JBUEgtNjI0QoBJREVPR1JBUEgtNUY4Q4BJREVPR1JBUEgtNURFNoBJREVPR1JBUEgtNUI4OYBJREVPR1JBUEgtNUI1N4BJREVPR1JBUEgtNTkyOYBJREVPR1JBUEgtNTkxQYBJREVPR1JBUEgtNThGMIBJREVPR1JBUEgtNTVCNoBJREVPR1JBUEgtNTQzOYBJREVPR1JBUEgtNTQwOIBJREVPR1JBUEgtNTNGM4BJREVPR1JBUEgtNTNDQ4BJREVPR1JBUEgtNTJERIBJREVPR1JBUEgtNTI3MoBJREVPR1JBUEgtNTI0RIBJREVPR1JBUEgtNTIxRIBJREVPR1JBUEgtNTE4RIBJREVPR1JBUEgtNEVBNIBJREVPR1JBUEgtNEU4Q4BJREVPR1JBUEgtNEUyRIBJREVPR1JBUEgtNEUwOYBJREVPR1JBUEgtNEUwMIBJREVPR1JBUEgtMkZBMUSASURFT0dSQVBILTJGQTFDgElERU9HUkFQSC0yRkExQoBJREVPR1JBUEgtMkZBMUGASURFT0dSQVBILTJGQTE5gElERU9HUkFQSC0yRkExOIBJREVPR1JBUEgtMkZBMTeASURFT0dSQVBILTJGQTE2gElERU9HUkFQSC0yRkExNYBJREVPR1JBUEgtMkZBMTSASURFT0dSQVBILTJGQTEzgElERU9HUkFQSC0yRkExMoBJREVPR1JBUEgtMkZBMTGASURFT0dSQVBILTJGQTEwgElERU9HUkFQSC0yRkEwRoBJREVPR1JBUEgtMkZBMEWASURFT0dSQVBILTJGQTBEgElERU9HUkFQSC0yRkEwQ4BJREVPR1JBUEgtMkZBMEKASURFT0dSQVBILTJGQTBBgElERU9HUkFQSC0yRkEwOYBJREVPR1JBUEgtMkZBMDiASURFT0dSQVBILTJGQTA3gElERU9HUkFQSC0yRkEwNoBJREVPR1JBUEgtMkZBMDWASURFT0dSQVBILTJGQTA0gElERU9HUkFQSC0yRkEwM4BJREVPR1JBUEgtMkZBMDKASURFT0dSQVBILTJGQTAxgElERU9HUkFQSC0yRkEwMIBJREVPR1JBUEgtMkY5RkaASURFT0dSQVBILTJGOUZFgElERU9HUkFQSC0yRjlGRIBJREVPR1JBUEgtMkY5RkOASURFT0dSQVBILTJGOUZCgElERU9HUkFQSC0yRjlGQYBJREVPR1JBUEgtMkY5RjmASURFT0dSQVBILTJGOUY4gElERU9HUkFQSC0yRjlGN4BJREVPR1JBUEgtMkY5RjaASURFT0dSQVBILTJGOUY1gElERU9HUkFQSC0yRjlGNIBJREVPR1JBUEgtMkY5RjOASURFT0dSQVBILTJGOUYygElERU9HUkFQSC0yRjlGMYBJREVPR1JBUEgtMkY5RjCASURFT0dSQVBILTJGOUVGgElERU9HUkFQSC0yRjlFRYBJREVPR1JBUEgtMkY5RUSASURFT0dSQVBILTJGOUVDgElERU9HUkFQSC0yRjlFQoBJREVPR1JBUEgtMkY5RUGASURFT0dSQVBILTJGOUU5gElERU9HUkFQSC0yRjlFOIBJREVPR1JBUEgtMkY5RTeASURFT0dSQVBILTJGOUU2gElERU9HUkFQSC0yRjlFNYBJREVPR1JBUEgtMkY5RTSASURFT0dSQVBILTJGOUUzgElERU9HUkFQSC0yRjlFMoBJREVPR1JBUEgtMkY5RTGASURFT0dSQVBILTJGOUUwgElERU9HUkFQSC0yRjlERoBJREVPR1JBUEgtMkY5REWASURFT0dSQVBILTJGOUREgElERU9HUkFQSC0yRjlEQ4BJREVPR1JBUEgtMkY5REKASURFT0dSQVBILTJGOURBgElERU9HUkFQSC0yRjlEOYBJREVPR1JBUEgtMkY5RDiASURFT0dSQVBILTJGOUQ3gElERU9HUkFQSC0yRjlENoBJREVPR1JBUEgtMkY5RDWASURFT0dSQVBILTJGOUQ0gElERU9HUkFQSC0yRjlEM4BJREVPR1JBUEgtMkY5RDKASURFT0dSQVBILTJGOUQxgElERU9HUkFQSC0yRjlEMIBJREVPR1JBUEgtMkY5Q0aASURFT0dSQVBILTJGOUNFgElERU9HUkFQSC0yRjlDRIBJREVPR1JBUEgtMkY5Q0OASURFT0dSQVBILTJGOUNCgElERU9HUkFQSC0yRjlDQYBJREVPR1JBUEgtMkY5QzmASURFT0dSQVBILTJGOUM4gElERU9HUkFQSC0yRjlDN4BJREVPR1JBUEgtMkY5QzaASURFT0dSQVBILTJGOUM1gElERU9HUkFQSC0yRjlDNIBJREVPR1JBUEgtMkY5QzOASURFT0dSQVBILTJGOUMygElERU9HUkFQSC0yRjlDMYBJREVPR1JBUEgtMkY5QzCASURFT0dSQVBILTJGOUJGgElERU9HUkFQSC0yRjlCRYBJREVPR1JBUEgtMkY5QkSASURFT0dSQVBILTJGOUJDgElERU9HUkFQSC0yRjlCQoBJREVPR1JBUEgtMkY5QkGASURFT0dSQVBILTJGOUI5gElERU9HUkFQSC0yRjlCOIBJREVPR1JBUEgtMkY5QjeASURFT0dSQVBILTJGOUI2gElERU9HUkFQSC0yRjlCNYBJREVPR1JBUEgtMkY5QjSASURFT0dSQVBILTJGOUIzgElERU9HUkFQSC0yRjlCMoBJREVPR1JBUEgtMkY5QjGASURFT0dSQVBILTJGOUIwgElERU9HUkFQSC0yRjlBRoBJREVPR1JBUEgtMkY5QUWASURFT0dSQVBILTJGOUFEgElERU9HUkFQSC0yRjlBQ4BJREVPR1JBUEgtMkY5QUKASURFT0dSQVBILTJGOUFBgElERU9HUkFQSC0yRjlBOYBJREVPR1JBUEgtMkY5QTiASURFT0dSQVBILTJGOUE3gElERU9HUkFQSC0yRjlBNoBJREVPR1JBUEgtMkY5QTWASURFT0dSQVBILTJGOUE0gElERU9HUkFQSC0yRjlBM4BJREVPR1JBUEgtMkY5QTKASURFT0dSQVBILTJGOUExgElERU9HUkFQSC0yRjlBMIBJREVPR1JBUEgtMkY5OUaASURFT0dSQVBILTJGOTlFgElERU9HUkFQSC0yRjk5RIBJREVPR1JBUEgtMkY5OUOASURFT0dSQVBILTJGOTlCgElERU9HUkFQSC0yRjk5QYBJREVPR1JBUEgtMkY5OTmASURFT0dSQVBILTJGOTk4gElERU9HUkFQSC0yRjk5N4BJREVPR1JBUEgtMkY5OTaASURFT0dSQVBILTJGOTk1gElERU9HUkFQSC0yRjk5NIBJREVPR1JBUEgtMkY5OTOASURFT0dSQVBILTJGOTkygElERU9HUkFQSC0yRjk5MYBJREVPR1JBUEgtMkY5OTCASURFT0dSQVBILTJGOThGgElERU9HUkFQSC0yRjk4RYBJREVPR1JBUEgtMkY5OESASURFT0dSQVBILTJGOThDgElERU9HUkFQSC0yRjk4QoBJREVPR1JBUEgtMkY5OEGASURFT0dSQVBILTJGOTg5gElERU9HUkFQSC0yRjk4OIBJREVPR1JBUEgtMkY5ODeASURFT0dSQVBILTJGOTg2gElERU9HUkFQSC0yRjk4NYBJREVPR1JBUEgtMkY5ODSASURFT0dSQVBILTJGOTgzgElERU9HUkFQSC0yRjk4MoBJREVPR1JBUEgtMkY5ODGASURFT0dSQVBILTJGOTgwgElERU9HUkFQSC0yRjk3RoBJREVPR1JBUEgtMkY5N0WASURFT0dSQVBILTJGOTdEgElERU9HUkFQSC0yRjk3Q4BJREVPR1JBUEgtMkY5N0KASURFT0dSQVBILTJGOTdBgElERU9HUkFQSC0yRjk3OYBJREVPR1JBUEgtMkY5NziASURFT0dSQVBILTJGOTc3gElERU9HUkFQSC0yRjk3NoBJREVPR1JBUEgtMkY5NzWASURFT0dSQVBILTJGOTc0gElERU9HUkFQSC0yRjk3M4BJREVPR1JBUEgtMkY5NzKASURFT0dSQVBILTJGOTcxgElERU9HUkFQSC0yRjk3MIBJREVPR1JBUEgtMkY5NkaASURFT0dSQVBILTJGOTZFgElERU9HUkFQSC0yRjk2RIBJREVPR1JBUEgtMkY5NkOASURFT0dSQVBILTJGOTZCgElERU9HUkFQSC0yRjk2QYBJREVPR1JBUEgtMkY5NjmASURFT0dSQVBILTJGOTY4gElERU9HUkFQSC0yRjk2N4BJREVPR1JBUEgtMkY5NjaASURFT0dSQVBILTJGOTY1gElERU9HUkFQSC0yRjk2NIBJREVPR1JBUEgtMkY5NjOASURFT0dSQVBILTJGOTYygElERU9HUkFQSC0yRjk2MYBJREVPR1JBUEgtMkY5NjCASURFT0dSQVBILTJGOTVGgElERU9HUkFQSC0yRjk1RYBJREVPR1JBUEgtMkY5NUSASURFT0dSQVBILTJGOTVDgElERU9HUkFQSC0yRjk1QoBJREVPR1JBUEgtMkY5NUGASURFT0dSQVBILTJGOTU5gElERU9HUkFQSC0yRjk1OIBJREVPR1JBUEgtMkY5NTeASURFT0dSQVBILTJGOTU2gElERU9HUkFQSC0yRjk1NYBJREVPR1JBUEgtMkY5NTSASURFT0dSQVBILTJGOTUzgElERU9HUkFQSC0yRjk1MoBJREVPR1JBUEgtMkY5NTGASURFT0dSQVBILTJGOTUwgElERU9HUkFQSC0yRjk0RoBJREVPR1JBUEgtMkY5NEWASURFT0dSQVBILTJGOTREgElERU9HUkFQSC0yRjk0Q4BJREVPR1JBUEgtMkY5NEKASURFT0dSQVBILTJGOTRBgElERU9HUkFQSC0yRjk0OYBJREVPR1JBUEgtMkY5NDiASURFT0dSQVBILTJGOTQ3gElERU9HUkFQSC0yRjk0NoBJREVPR1JBUEgtMkY5NDWASURFT0dSQVBILTJGOTQ0gElERU9HUkFQSC0yRjk0M4BJREVPR1JBUEgtMkY5NDKASURFT0dSQVBILTJGOTQxgElERU9HUkFQSC0yRjk0MIBJREVPR1JBUEgtMkY5M0aASURFT0dSQVBILTJGOTNFgElERU9HUkFQSC0yRjkzRIBJREVPR1JBUEgtMkY5M0OASURFT0dSQVBILTJGOTNCgElERU9HUkFQSC0yRjkzQYBJREVPR1JBUEgtMkY5MzmASURFT0dSQVBILTJGOTM4gElERU9HUkFQSC0yRjkzN4BJREVPR1JBUEgtMkY5MzaASURFT0dSQVBILTJGOTM1gElERU9HUkFQSC0yRjkzNIBJREVPR1JBUEgtMkY5MzOASURFT0dSQVBILTJGOTMygElERU9HUkFQSC0yRjkzMYBJREVPR1JBUEgtMkY5MzCASURFT0dSQVBILTJGOTJGgElERU9HUkFQSC0yRjkyRYBJREVPR1JBUEgtMkY5MkSASURFT0dSQVBILTJGOTJDgElERU9HUkFQSC0yRjkyQoBJREVPR1JBUEgtMkY5MkGASURFT0dSQVBILTJGOTI5gElERU9HUkFQSC0yRjkyOIBJREVPR1JBUEgtMkY5MjeASURFT0dSQVBILTJGOTI2gElERU9HUkFQSC0yRjkyNYBJREVPR1JBUEgtMkY5MjSASURFT0dSQVBILTJGOTIzgElERU9HUkFQSC0yRjkyMoBJREVPR1JBUEgtMkY5MjGASURFT0dSQVBILTJGOTIwgElERU9HUkFQSC0yRjkxRoBJREVPR1JBUEgtMkY5MUWASURFT0dSQVBILTJGOTFEgElERU9HUkFQSC0yRjkxQ4BJREVPR1JBUEgtMkY5MUKASURFT0dSQVBILTJGOTFBgElERU9HUkFQSC0yRjkxOYBJREVPR1JBUEgtMkY5MTiASURFT0dSQVBILTJGOTE3gElERU9HUkFQSC0yRjkxNoBJREVPR1JBUEgtMkY5MTWASURFT0dSQVBILTJGOTE0gElERU9HUkFQSC0yRjkxM4BJREVPR1JBUEgtMkY5MTKASURFT0dSQVBILTJGOTExgElERU9HUkFQSC0yRjkxMIBJREVPR1JBUEgtMkY5MEaASURFT0dSQVBILTJGOTBFgElERU9HUkFQSC0yRjkwRIBJREVPR1JBUEgtMkY5MEOASURFT0dSQVBILTJGOTBCgElERU9HUkFQSC0yRjkwQYBJREVPR1JBUEgtMkY5MDmASURFT0dSQVBILTJGOTA4gElERU9HUkFQSC0yRjkwN4BJREVPR1JBUEgtMkY5MDaASURFT0dSQVBILTJGOTA1gElERU9HUkFQSC0yRjkwNIBJREVPR1JBUEgtMkY5MDOASURFT0dSQVBILTJGOTAygElERU9HUkFQSC0yRjkwMYBJREVPR1JBUEgtMkY5MDCASURFT0dSQVBILTJGOEZGgElERU9HUkFQSC0yRjhGRYBJREVPR1JBUEgtMkY4RkSASURFT0dSQVBILTJGOEZDgElERU9HUkFQSC0yRjhGQoBJREVPR1JBUEgtMkY4RkGASURFT0dSQVBILTJGOEY5gElERU9HUkFQSC0yRjhGOIBJREVPR1JBUEgtMkY4RjeASURFT0dSQVBILTJGOEY2gElERU9HUkFQSC0yRjhGNYBJREVPR1JBUEgtMkY4RjSASURFT0dSQVBILTJGOEYzgElERU9HUkFQSC0yRjhGMoBJREVPR1JBUEgtMkY4RjGASURFT0dSQVBILTJGOEYwgElERU9HUkFQSC0yRjhFRoBJREVPR1JBUEgtMkY4RUWASURFT0dSQVBILTJGOEVEgElERU9HUkFQSC0yRjhFQ4BJREVPR1JBUEgtMkY4RUKASURFT0dSQVBILTJGOEVBgElERU9HUkFQSC0yRjhFOYBJREVPR1JBUEgtMkY4RTiASURFT0dSQVBILTJGOEU3gElERU9HUkFQSC0yRjhFNoBJREVPR1JBUEgtMkY4RTWASURFT0dSQVBILTJGOEU0gElERU9HUkFQSC0yRjhFM4BJREVPR1JBUEgtMkY4RTKASURFT0dSQVBILTJGOEUxgElERU9HUkFQSC0yRjhFMIBJREVPR1JBUEgtMkY4REaASURFT0dSQVBILTJGOERFgElERU9HUkFQSC0yRjhERIBJREVPR1JBUEgtMkY4REOASURFT0dSQVBILTJGOERCgElERU9HUkFQSC0yRjhEQYBJREVPR1JBUEgtMkY4RDmASURFT0dSQVBILTJGOEQ4gElERU9HUkFQSC0yRjhEN4BJREVPR1JBUEgtMkY4RDaASURFT0dSQVBILTJGOEQ1gElERU9HUkFQSC0yRjhENIBJREVPR1JBUEgtMkY4RDOASURFT0dSQVBILTJGOEQygElERU9HUkFQSC0yRjhEMYBJREVPR1JBUEgtMkY4RDCASURFT0dSQVBILTJGOENGgElERU9HUkFQSC0yRjhDRYBJREVPR1JBUEgtMkY4Q0SASURFT0dSQVBILTJGOENDgElERU9HUkFQSC0yRjhDQoBJREVPR1JBUEgtMkY4Q0GASURFT0dSQVBILTJGOEM5gElERU9HUkFQSC0yRjhDOIBJREVPR1JBUEgtMkY4QzeASURFT0dSQVBILTJGOEM2gElERU9HUkFQSC0yRjhDNYBJREVPR1JBUEgtMkY4QzSASURFT0dSQVBILTJGOEMzgElERU9HUkFQSC0yRjhDMoBJREVPR1JBUEgtMkY4QzGASURFT0dSQVBILTJGOEMwgElERU9HUkFQSC0yRjhCRoBJREVPR1JBUEgtMkY4QkWASURFT0dSQVBILTJGOEJEgElERU9HUkFQSC0yRjhCQ4BJREVPR1JBUEgtMkY4QkKASURFT0dSQVBILTJGOEJBgElERU9HUkFQSC0yRjhCOYBJREVPR1JBUEgtMkY4QjiASURFT0dSQVBILTJGOEI3gElERU9HUkFQSC0yRjhCNoBJREVPR1JBUEgtMkY4QjWASURFT0dSQVBILTJGOEI0gElERU9HUkFQSC0yRjhCM4BJREVPR1JBUEgtMkY4QjKASURFT0dSQVBILTJGOEIxgElERU9HUkFQSC0yRjhCMIBJREVPR1JBUEgtMkY4QUaASURFT0dSQVBILTJGOEFFgElERU9HUkFQSC0yRjhBRIBJREVPR1JBUEgtMkY4QUOASURFT0dSQVBILTJGOEFCgElERU9HUkFQSC0yRjhBQYBJREVPR1JBUEgtMkY4QTmASURFT0dSQVBILTJGOEE4gElERU9HUkFQSC0yRjhBN4BJREVPR1JBUEgtMkY4QTaASURFT0dSQVBILTJGOEE1gElERU9HUkFQSC0yRjhBNIBJREVPR1JBUEgtMkY4QTOASURFT0dSQVBILTJGOEEygElERU9HUkFQSC0yRjhBMYBJREVPR1JBUEgtMkY4QTCASURFT0dSQVBILTJGODlGgElERU9HUkFQSC0yRjg5RYBJREVPR1JBUEgtMkY4OUSASURFT0dSQVBILTJGODlDgElERU9HUkFQSC0yRjg5QoBJREVPR1JBUEgtMkY4OUGASURFT0dSQVBILTJGODk5gElERU9HUkFQSC0yRjg5OIBJREVPR1JBUEgtMkY4OTeASURFT0dSQVBILTJGODk2gElERU9HUkFQSC0yRjg5NYBJREVPR1JBUEgtMkY4OTSASURFT0dSQVBILTJGODkzgElERU9HUkFQSC0yRjg5MoBJREVPR1JBUEgtMkY4OTGASURFT0dSQVBILTJGODkwgElERU9HUkFQSC0yRjg4RoBJREVPR1JBUEgtMkY4OEWASURFT0dSQVBILTJGODhEgElERU9HUkFQSC0yRjg4Q4BJREVPR1JBUEgtMkY4OEKASURFT0dSQVBILTJGODhBgElERU9HUkFQSC0yRjg4OYBJREVPR1JBUEgtMkY4ODiASURFT0dSQVBILTJGODg3gElERU9HUkFQSC0yRjg4NoBJREVPR1JBUEgtMkY4ODWASURFT0dSQVBILTJGODg0gElERU9HUkFQSC0yRjg4M4BJREVPR1JBUEgtMkY4ODKASURFT0dSQVBILTJGODgxgElERU9HUkFQSC0yRjg4MIBJREVPR1JBUEgtMkY4N0aASURFT0dSQVBILTJGODdFgElERU9HUkFQSC0yRjg3RIBJREVPR1JBUEgtMkY4N0OASURFT0dSQVBILTJGODdCgElERU9HUkFQSC0yRjg3QYBJREVPR1JBUEgtMkY4NzmASURFT0dSQVBILTJGODc4gElERU9HUkFQSC0yRjg3N4BJREVPR1JBUEgtMkY4NzaASURFT0dSQVBILTJGODc1gElERU9HUkFQSC0yRjg3NIBJREVPR1JBUEgtMkY4NzOASURFT0dSQVBILTJGODcygElERU9HUkFQSC0yRjg3MYBJREVPR1JBUEgtMkY4NzCASURFT0dSQVBILTJGODZGgElERU9HUkFQSC0yRjg2RYBJREVPR1JBUEgtMkY4NkSASURFT0dSQVBILTJGODZDgElERU9HUkFQSC0yRjg2QoBJREVPR1JBUEgtMkY4NkGASURFT0dSQVBILTJGODY5gElERU9HUkFQSC0yRjg2OIBJREVPR1JBUEgtMkY4NjeASURFT0dSQVBILTJGODY2gElERU9HUkFQSC0yRjg2NYBJREVPR1JBUEgtMkY4NjSASURFT0dSQVBILTJGODYzgElERU9HUkFQSC0yRjg2MoBJREVPR1JBUEgtMkY4NjGASURFT0dSQVBILTJGODYwgElERU9HUkFQSC0yRjg1RoBJREVPR1JBUEgtMkY4NUWASURFT0dSQVBILTJGODVEgElERU9HUkFQSC0yRjg1Q4BJREVPR1JBUEgtMkY4NUKASURFT0dSQVBILTJGODVBgElERU9HUkFQSC0yRjg1OYBJREVPR1JBUEgtMkY4NTiASURFT0dSQVBILTJGODU3gElERU9HUkFQSC0yRjg1NoBJREVPR1JBUEgtMkY4NTWASURFT0dSQVBILTJGODU0gElERU9HUkFQSC0yRjg1M4BJREVPR1JBUEgtMkY4NTKASURFT0dSQVBILTJGODUxgElERU9HUkFQSC0yRjg1MIBJREVPR1JBUEgtMkY4NEaASURFT0dSQVBILTJGODRFgElERU9HUkFQSC0yRjg0RIBJREVPR1JBUEgtMkY4NEOASURFT0dSQVBILTJGODRCgElERU9HUkFQSC0yRjg0QYBJREVPR1JBUEgtMkY4NDmASURFT0dSQVBILTJGODQ4gElERU9HUkFQSC0yRjg0N4BJREVPR1JBUEgtMkY4NDaASURFT0dSQVBILTJGODQ1gElERU9HUkFQSC0yRjg0NIBJREVPR1JBUEgtMkY4NDOASURFT0dSQVBILTJGODQygElERU9HUkFQSC0yRjg0MYBJREVPR1JBUEgtMkY4NDCASURFT0dSQVBILTJGODNGgElERU9HUkFQSC0yRjgzRYBJREVPR1JBUEgtMkY4M0SASURFT0dSQVBILTJGODNDgElERU9HUkFQSC0yRjgzQoBJREVPR1JBUEgtMkY4M0GASURFT0dSQVBILTJGODM5gElERU9HUkFQSC0yRjgzOIBJREVPR1JBUEgtMkY4MzeASURFT0dSQVBILTJGODM2gElERU9HUkFQSC0yRjgzNYBJREVPR1JBUEgtMkY4MzSASURFT0dSQVBILTJGODMzgElERU9HUkFQSC0yRjgzMoBJREVPR1JBUEgtMkY4MzGASURFT0dSQVBILTJGODMwgElERU9HUkFQSC0yRjgyRoBJREVPR1JBUEgtMkY4MkWASURFT0dSQVBILTJGODJEgElERU9HUkFQSC0yRjgyQ4BJREVPR1JBUEgtMkY4MkKASURFT0dSQVBILTJGODJBgElERU9HUkFQSC0yRjgyOYBJREVPR1JBUEgtMkY4MjiASURFT0dSQVBILTJGODI3gElERU9HUkFQSC0yRjgyNoBJREVPR1JBUEgtMkY4MjWASURFT0dSQVBILTJGODI0gElERU9HUkFQSC0yRjgyM4BJREVPR1JBUEgtMkY4MjKASURFT0dSQVBILTJGODIxgElERU9HUkFQSC0yRjgyMIBJREVPR1JBUEgtMkY4MUaASURFT0dSQVBILTJGODFFgElERU9HUkFQSC0yRjgxRIBJREVPR1JBUEgtMkY4MUOASURFT0dSQVBILTJGODFCgElERU9HUkFQSC0yRjgxQYBJREVPR1JBUEgtMkY4MTmASURFT0dSQVBILTJGODE4gElERU9HUkFQSC0yRjgxN4BJREVPR1JBUEgtMkY4MTaASURFT0dSQVBILTJGODE1gElERU9HUkFQSC0yRjgxNIBJREVPR1JBUEgtMkY4MTOASURFT0dSQVBILTJGODEygElERU9HUkFQSC0yRjgxMYBJREVPR1JBUEgtMkY4MTCASURFT0dSQVBILTJGODBGgElERU9HUkFQSC0yRjgwRYBJREVPR1JBUEgtMkY4MESASURFT0dSQVBILTJGODBDgElERU9HUkFQSC0yRjgwQoBJREVPR1JBUEgtMkY4MEGASURFT0dSQVBILTJGODA5gElERU9HUkFQSC0yRjgwOIBJREVPR1JBUEgtMkY4MDeASURFT0dSQVBILTJGODA2gElERU9HUkFQSC0yRjgwNYBJREVPR1JBUEgtMkY4MDSASURFT0dSQVBILTJGODAzgElERU9HUkFQSC0yRjgwMoBJREVPR1JBUEgtMkY4MDGASURFT0dSQVBILTJGODAwgElERU9HUkFQyElERU5USUZJQ0FUSU9OgElERU5USUZJQ0FUSU/OSURFTlRJQ0HMSUNPToBJQ0hPVYBJQ0hPU4BJQ0hJTUFUT1OASUNIQURJToBJQ0VMQU5ESUMtWVKASUJJRklMSYBJQVVEQYBJMDE1gEkwMTSASTAxM4BJMDEygEkwMTFBgEkwMTGASTAxMEGASTAxMIBJMDA5QYBJMDA5gEkwMDiASTAwN4BJMDA2gEkwMDVBgEkwMDWASTAwNIBJMDAzgEkwMDKASTAwMYBJLVlVgEktWU+ASS1ZRU+ASS1ZRYBJLVlBRYBJLVlBLU+ASS1ZQYBJLU8tSYBJLU+ASS1FVYBJLUJFQU2ASS1BUkFFQYBJLUGASFpaWkeASFpaWoBIWlpQgEhaWoBIWldHgEhaV4BIWlSASFpHgEhZU1RFUkVTSdNIWVBPRElBU1RPTEWASFlQSEVOQVRJT85IWVBIRU4tTUlOVVOASFlQSEVOgEhZUEhFzkhZR0lFSUGASFlHSUVBgEhYV0eASFhVT1iASFhVT1SASFhVT1CASFhVT4BIWE9YgEhYT1SASFhPUIBIWE+ASFhJWIBIWElUgEhYSVCASFhJRViASFhJRVSASFhJRVCASFhJRYBIWEmASFhFWIBIWEVQgEhYRYBIWEFYgEhYQVSASFhBUIBIWEGASFdVgEhXQUlSgEhXQUiASFVWQYBIVVNIRcRIVVNIgEhVUkFOgEhVT1SASFVORFJFRFOASFVORFJFRNNIVU5EUkVEgEhVTkRSRcRIVU6ASFVN0EhVTUFOgEhVTUHOSFVMMoBIVUlJVE+ASFVHR0lOR4BIVUdHSU7HSFVCMoBIVUKySFVCgEhVQVJBRERPgEhVQU6ASFUtM4BIVS0ygEhVLTGASFRUQYBIVFOASFRKgEhSWVZOScFIUFdHgEhQQYBIUIBIT1VTxUhPVVJHTEFTU4BIT1VSR0xBU9NIT1VSgEhPVdJIT1RFTIBIT1RBgEhPU1BJVEFMgEhPUlNFgEhPUlPFSE9SUoBIT1JOU4BIT1JJWk9OVEFMTNlIT1JJWk9OVEFMLTA2LTA2gEhPUklaT05UQUwtMDYtMDWASE9SSVpPTlRBTC0wNi0wNIBIT1JJWk9OVEFMLTA2LTAzgEhPUklaT05UQUwtMDYtMDKASE9SSVpPTlRBTC0wNi0wMYBIT1JJWk9OVEFMLTA2LTAwgEhPUklaT05UQUwtMDUtMDaASE9SSVpPTlRBTC0wNS0wNYBIT1JJWk9OVEFMLTA1LTA0gEhPUklaT05UQUwtMDUtMDOASE9SSVpPTlRBTC0wNS0wMoBIT1JJWk9OVEFMLTA1LTAxgEhPUklaT05UQUwtMDUtMDCASE9SSVpPTlRBTC0wNC0wNoBIT1JJWk9OVEFMLTA0LTA1gEhPUklaT05UQUwtMDQtMDSASE9SSVpPTlRBTC0wNC0wM4BIT1JJWk9OVEFMLTA0LTAygEhPUklaT05UQUwtMDQtMDGASE9SSVpPTlRBTC0wNC0wMIBIT1JJWk9OVEFMLTAzLTA2gEhPUklaT05UQUwtMDMtMDWASE9SSVpPTlRBTC0wMy0wNIBIT1JJWk9OVEFMLTAzLTAzgEhPUklaT05UQUwtMDMtMDKASE9SSVpPTlRBTC0wMy0wMYBIT1JJWk9OVEFMLTAzLTAwgEhPUklaT05UQUwtMDItMDaASE9SSVpPTlRBTC0wMi0wNYBIT1JJWk9OVEFMLTAyLTA0gEhPUklaT05UQUwtMDItMDOASE9SSVpPTlRBTC0wMi0wMoBIT1JJWk9OVEFMLTAyLTAxgEhPUklaT05UQUwtMDItMDCASE9SSVpPTlRBTC0wMS0wNoBIT1JJWk9OVEFMLTAxLTA1gEhPUklaT05UQUwtMDEtMDSASE9SSVpPTlRBTC0wMS0wM4BIT1JJWk9OVEFMLTAxLTAygEhPUklaT05UQUwtMDEtMDGASE9SSVpPTlRBTC0wMS0wMIBIT1JJWk9OVEFMLTAwLTA2gEhPUklaT05UQUwtMDAtMDWASE9SSVpPTlRBTC0wMC0wNIBIT1JJWk9OVEFMLTAwLTAzgEhPUklaT05UQUwtMDAtMDKASE9SSVpPTlRBTC0wMC0wMYBIT1JJWk9OVEFMLTAwLTAwgEhPUklaT05UQUyASE9SSVpPTlRBzEhPUkmASE9SwUhPT1WASE9PUlWASE9PUIBIT09OgEhPT0tFRIBIT09LRcRIT05FWUJFRYBIT05F2UhPTU9USEVUSUOASE9NT1RIRVRJw0hPTE+ASE9MTE/XSE9MRYBIT0xESU7HSE9MQU2ASE9MQc1IT0tBgEhPQ0tF2UhPQ0hPgEhPLTiASE8tN4BITy02gEhPLTWASE8tNIBITy0zgEhPLTKASE8tMYBITlVUgEhOVU9YgEhOVU+ASE5VQoBITk9YgEhOT1SASE5PUIBITklYgEhOSVSASE5JUIBITklFWIBITklFVIBITklFUIBITklFgEhOSYBITkVYgEhORVCASE5FgEhOQViASE5BVYBITkFUgEhOQVCASE5BgEhNWViASE1ZUliASE1ZUoBITVlQgEhNWYBITVVYgEhNVVSASE1VUliASE1VUoBITVVQgEhNVU9YgEhNVU9QgEhNVU+ASE1VgEhNT1iASE1PVIBITU9QgEhNT4BITUlYgEhNSVSASE1JUIBITUlFWIBITUlFUIBITUlFgEhNSYBITUWASE1BWIBITUFUgEhNQVCASE1BgEhMWViASExZVIBITFlSWIBITFlSgEhMWVCASExZgEhMVViASExVVIBITFVSWIBITFVSgEhMVVCASExVT1iASExVT1CASExVT4BITFWASExPWIBITE9QgEhMT4BITElYgEhMSVSASExJUIBITElFWIBITElFUIBITElFgEhMSYBITEVYgEhMRVCASExFgEhMQViASExBVYBITEFUgEhMQVCASExBgEhMgEhLgEhJWkKASElZT4BISVRUSU7HSElTVE9SScNISVJJUYBISVBQT1BPVEFNVVOASElOR0VEgEhJTkdFxEhJTkdFgEhJTkTVSElLSU7HSElHSC1TUEVFxEhJR0gtUkVWRVJTRUQtuUhJR0gtTE/XSElHSC1IRUVMRcRISUVYgEhJRVVILVNJT1OASElFVUgtUklFVUyASElFVUgtUElFVVCASElFVUgtTklFVU6ASElFVUgtTUlFVU2ASElFVchISUVST0dMWVBIScNISURJTsdISURFVIBISURFgEhJQklTQ1VTgEhJLVJFU4BISS03gEhJLTaASEktNYBISS00gEhJLTOASEktMoBISS0xgEhIWVWASEhZT4BISFlJgEhIWUVFgEhIWUWASEhZQUGASEhZQYBISFdJgEhIV0VFgEhIV0WASEhXQYBISFWASEhJgEhIRUWASEhFgEhIQUGASEeASEVZVIBIRVhJRk9SzUhFWEFHUkHNSEVYQUdPToBIRVJVVFWASEVSVYBIRVJNSVRJQc5IRVJNSU9OSUHOSEVSTUVTgEhFUkWASEVSQoBIRVJBRVXNSEVOR4BIRU7HSEVNUIBIRUxNRVSASEVMTUXUSEVMzUhFTExTQ0hSRUlCRdJIRUxJWIBIRUxJQ09QVEVSgEhFS1VUQUFSVYBIRUlTRUmASEVJR0hUgEhFRUmASEVER0VIT0eASEVBVlmASEVBVkVOTNlIRUFWRU6ASEVBVkXOSEVBUlRTgEhFQVJULVNIQVBFxEhFQVJUgEhFQVLUSEVBUklOx0hFQVItTk8tRVZJzEhFQURTVFJPS0WASEVBRFNUT05FgEhFQURTVE9OxUhFQURTQ0FSRoBIRUFEUEhPTkWASEVBRElOR4BIRUFELUJBTkRBR0WASEUtN4BIRS02gEhFLTWASEUtNIBIRS0zgEhFLTKASEUtMYBIRFKASEOASEJBU0EtRVNBU8FIQkFTwUhBWUFOTkGASEFXSoBIQVZFgEhBVVBUU1RJTU1FgEhB1UhBVFJBzkhBVEhJgEhBVEWASEFUQ0hJTsdIQVRBxkhBU0XSSEFTQU5UQYBIQVJQT09OgEhBUlBPT85IQVJNT05JQ4BIQVJLTEVBzkhBUkRORVNTgEhBUsRIQVJCQUhBWYBIQVBQ2UhBTlVOT89IQU5JRslIQU5HWkhP1UhBTkRTSEFLRYBIQU5EU4BIQU5E00hBTkRMRVOASEFORExFgEhBTkRCQUxMgEhBTkRCQUeASEFORC1PVkFMgEhBTkQtT1ZBzEhBTkQtSE9PS4BIQU5ELUhPT8tIQU5ELUhJTkdFgEhBTkQtSElOR8VIQU5ELUZMQVSASEFORC1GTEHUSEFORC1GSVNUgEhBTkQtQ1VSTElDVUWASEFORC1DVVJMSUNVxUhBTkQtQ1VQgEhBTkQtQ1XQSEFORC1DTEFXgEhBTkQtQ0xB10hBTkQtQ0lSQ0xFgEhBTkQtQ0lSQ0zFSEFORC1BTkdMRYBIQU5ELUFOR0zFSEFORIBIQU4tQUtBVIBIQU1aQYBIQU1awUhBTVNURdJIQU1TQYBIQU1NRVKASEFNTUXSSEFNQlVSR0VSgEhBTFFBgEhBTE+ASEFMRi1DSVJDTMVIQUxGLTKASEFMRi0xgEhBTEaASEFMQkVSRIBIQUxBTlRBgEhBSVRVgEhBSdNIQUlSQ1VUgEhBR0xB2khBR0yASEFGVUtIQYBIQUZVS0iASEFFR8xIQURFU4BIQUFSVYBIQUFNgEhBwUhBLUhBgEhBLTmASEEtOIBIQS03gEhBLTaASEEtNYBIQS00gEhBLTOASEEtMoBIQS0xMYBIQS0xMIBIQS0xgEgwMDiASDAwN4BIMDA2QYBIMDA2gEgwMDWASDAwNIBIMDAzgEgwMDKASDAwMYBILVRZUMVHWVWAR1lPToBHWU+AR1lJgEdZRtVHWUVFgEdZQVOAR1lBQYBHWUGAR1mAR1dVgEdXSYBHV0VFgEdXRYBHV0FBgEdXQYBHV4BHVkFOR4BHVoBHVVJVU0iAR1VSVU6AR1VSTVVLSMlHVVJBTVVUT06AR1VSQUfFR1VSN4BHVU5VgEdVTtVHVU5KQUzBR1XNR1VMgEdVSkFSQVTJR1VJVEFSgEdVSUTFR1XHR1VFSYBHVUVIgEdVRchHVUSAR1XER1VBUkRTTUFOgEdVQVJERURORVNTgEdVQVJERcRHVUFSRIBHVUFSQU7JR1XBR1WyR1RF0kdTVU2AR1NVzUdS1UdST1dJTsdHUk9VTkSAR1JPTlRISVNNQVRBgEdST01PUE9WT0ROQVlBgEdST01PUE9WT0ROQVnBR1JPTU9LUllaSEVWQVlBgEdST01PS1JZWkhFVkFZwUdST01OQVlBgEdST01OQVnBR1JJTk5JTsdHUklNQUNJTsdHUkVHT1JJQc5HUkVFToBHUkVFzkdSRUFUTkVTU4BHUkVBVEVSLVRIQU6AR1JFQVRFUi1USEHOR1JFQVRF0kdSRUHUR1JBVkVZQVLER1JBVkUtTUFDUk9OgEdSQVZFLUFDVVRFLUdSQVZFgEdSQVbFR1JBVEVSgEdSQVNTgEdSQVPTR1JBU9BHUkFQSEVNxUdSQVBFU4BHUkFOVEjBR1JBTU3BR1JBSU6AR1JBRoBHUkFEVUFUSU/OR1JBRFVBTIBHUkFDRYBHUkFDxUdQQYBHT1JUSE1JS0/OR09SVIBHT1JJTExBgEdPUkdPVEVSSYBHT1JHT1NZTlRIRVRPToBHT1JHT85HT1JHSYBHT1JBWkTPR09SQYBHT0/ER09OR4BHT0xVQkNISctHT0xGRVKAR09MRIBHT0uAR09JTsdHT0dHTEVTgEdPQkxJToBHT0FMgEdPQcxHT0GAR05ZSVOAR05BVklZQU5JgEdMT1dJTsdHTE9WRVOAR0xPVkWAR0xPVFRBzEdMT0LFR0xJU1NBTkTPR0xFSUPIR0xBR09MSYBHTEGAR0pFgEdJWIBHSVSAR0lTSIBHSVPIR0lTQUyAR0lSVURBQYBHSVJM00dJUkyAR0lSQUZGxUdJUjOAR0lSs0dJUjKAR0lSskdJUIBHSU5JSYBHSU1FTC1IRVRIgEdJTUVMgEdJTUXMR0lNgEdJR0GAR0lHgEdJRtRHSUVUgEdJRElNgEdJQkJPVdNHSUJBgEdJNIBHSbRHSFqAR0hXQYBHSFVOTkGAR0hVTk7BR0hVgEdIT1WAR0hPU1SAR0hPgEdISU1FTIBHSEmAR0hIQYBHSEVZU4BHSEVVWIBHSEVVToBHSEVVR0hFVUFFTYBHSEVVR0hFToBHSEVVQUVSQUWAR0hFVUFFR0hFVUFFgEdIRVSAR0hFRYBHSEWAR0jFR0hBWU6AR0hBUkFFgEdIQVCAR0hBToBHSEFNTUGAR0hBTUFMgEdIQUlOVYBHSEFJToBHSEFJzkdIQUSAR0hBQU1BRYBHSEFBgEdHV0mAR0dXRUWAR0dXRYBHR1dBQYBHR1dBgEdHVViAR0dVVIBHR1VSWIBHR1VSgEdHVU9YgEdHVU9UgEdHVU9QgEdHVU+AR0dPWIBHR09UgEdHT1CAR0dJWIBHR0lUgEdHSUVYgEdHSUVQgEdHSUWAR0dFWIBHR0VUgEdHRVCAR0dBWIBHR0FUgEdFVMFHRVNUVVJFgEdFU0hVgEdFU0hUSU6AR0VTSFRJzkdFU0gygEdFUlNIQVlJTYBHRVJNQc5HRVJFU0iAR0VSRVPIR0VPTUVUUklDQUxM2UdFT01FVFJJw0dFTlRMxUdFTklUSVZFgEdFTklLyUdFTklFgEdFTkVSScNHRU5FUkFMgEdFTUlOSYBHRU1JTkFUSU/OR0VNSU5BVMVHRc1HRUVNgEdFRE9MQYBHRURFgEdFQs9HRULBR0VBUoBHRUHSR0UyMoBHREFOgEdDSUeAR0NBzkdCT06AR0JJRcVHQkVVWIBHQkVUgEdCQVlJgEdCQUtVUlVORU6AR0KAR0FZQU5VS0lUVEGAR0FZQU5OQYBHQVmAR0FVTlRMRVSAR0FUSEVSSU5HgEdBVEhFUklOx0dBVEWAR0FTSEFOgEdBUlNIVU5JgEdBUk9OgEdBUk1FTlSAR0FSTElDgEdBUkRFToBHQVIzgEdBUFBFxEdB0EdBTk1BgEdBTkdJQYBHQU5EwUdBTjKAR0FOskdBTU1BgEdBTUxBgEdBTUyAR0FNRYBHQU3FR0FNQU6AR0FNQUyAR0FNQcxHQUzJR0FHgEdBRoBHQcZHQUVUVEEtUElMTEGAR0FET0yAR0FEgEdBxEdBQkGAR0FCwUdBQUZVgEdBskcwNTSARzA1M4BHMDUygEcwNTGARzA1MIBHMDQ5gEcwNDiARzA0N4BHMDQ2gEcwNDVBgEcwNDWARzA0NIBHMDQzQYBHMDQzgEcwNDKARzA0MYBHMDQwgEcwMzmARzAzOIBHMDM3QYBHMDM3gEcwMzZBgEcwMzaARzAzNYBHMDM0gEcwMzOARzAzMoBHMDMxgEcwMzCARzAyOYBHMDI4gEcwMjeARzAyNkGARzAyNoBHMDI1gEcwMjSARzAyM4BHMDIygEcwMjGARzAyMEGARzAyMIBHMDE5gEcwMTiARzAxN4BHMDE2gEcwMTWARzAxNIBHMDEzgEcwMTKARzAxMUGARzAxMYBHMDEwgEcwMDmARzAwOIBHMDA3QoBHMDA3QYBHMDA3gEcwMDZBgEcwMDaARzAwNYBHMDA0gEcwMDOARzAwMoBHMDAxgEZZWIBGWVSARllQgEZZQYBGV0mARldFRYBGV0WARldBQYBGV0GARlZTNIBGVlMzgEZWUzKARlZTMYBGVViARlVUgEZVU0WARlVTwUZVUliARlVQgEZVTkVSQcxGVU5DVElPTkHMRlVOQ1RJT06ARlVMTE5FU1OARlVMzEZVSkmARlVFVIBGVUXMRlVFgEZVQYBGVEhPUsFGU0mARlJPV05JTkeARlJPV05JTsdGUk9XToBGUk9XzkZST05ULVRJTFRFxEZST05ULUZBQ0lOx0ZST07URlJPzUZST0eARlJPx0ZSSVRVgEZSSUVTgEZSSUXERlJJQ0FUSVZFgEZSRVRCT0FSRIBGUkVOQ8hGUkVFWklOx0ZSRUWARlJFxUZSQU5L00ZSQU7DRlJBTUVTgEZSQU1FgEZSQU3FRlJBS1RV0kZSQUdSQU5UgEZSQUdNRU5UgEZSQUNUSU/ORk9YgEZP2EZPVVJURUVOgEZPVVJURUXORk9VUi1USElSVFmARk9VUi1TVFJJTsdGT1VSLVBFUi1FzUZPVVItTElOxUZPVdJGT1VOVEFJToBGT1VOVEFJzkZPU1RFUklOR4BGT1JXQVJEgEZPUldBUsRGT1JUWS1GSVbFRk9SVFmARk9SVNlGT1JUVU7FRk9SVElFVEiARk9SVEWARk9STdNGT1JNRUWARk9STUXFRk9STUFUVElOR4BGT1JNQdRGT1JLRcRGT1JFSEVBxEZPUkNFU4BGT1JDRYBGT1CARk9PVFNUT09MgEZPT1RQUklOVFOARk9PVE5PVMVGT09UQkFMTIBGT09UgEZPT0yARk9PRIBGT0+ARk9O1EZPTkdNQU6ARk9ORFVFgEZPTYBGT0xMWYBGT0xMT1dJTkeARk9MREVSgEZPTERFxEZPR0dZgEZPR4BGz0ZNgEZMWUlOx0ZMWYBGTFVUVEVSSU5HgEZMVVRURVJJTsdGTFVURYBGTFVTSEXERkxPV0lOx0ZMT1dFUlOARkxPV0XSRkxPVVJJU0iARkxPUkVUVEWARkxPUkHMRkxPUFDZRkxPT1KARkxPT9JGTElQgEZMSUdIVIBGTElDy0ZMRVhVU4BGTEVYRcRGTEVYgEZMRVVST06ARkxFVVItREUtTElTgEZMQVRURU5FxEZMQVRORVNTgEZMQVRCUkVBRIBGTEFTSIBGTEFNSU5HT4BGTEFNRYBGTEFHU4BGTEFHLTWARkxBRy00gEZMQUctM4BGTEFHLTKARkxBRy0xgEZMQUeARkxBx0ZMQYBGTIBGSVhFRC1GT1LNRklYgEZJVkUtVEhJUlRZgEZJVkUtTElOxUZJVFpQQVRSSUPLRklUQYBGSVSARklTVEXERklTSElOx0ZJU0hIT09LgEZJU0hIT0/LRklTSEVZRYBGSVNIgEZJU8hGSVJT1EZJUkmARklSRVdPUktTgEZJUkVXT1LLRklSRUNSQUNLRVKARklSRYBGSVLFRklQgEZJTklUxUZJTkdFUlOARklOR0VS00ZJTkdFUk5BSUxTgEZJTkdFUkXERklOR0VSLVBPU9RGSU5HRVKARklOR0XSRklOQU5DSUFMgEZJTkFMgEZJTM1GSUxMRVItMoBGSUxMRVItMYBGSUxMRVKARklMTEXERklMTIBGSUzMRklMxUZJSYBGSUdVUkUtM4BGSUdVUkUtMoBGSUdVUkUtMYBGSUdVUkWARklHVVLFRklHSFSARklGVFmARklGVNlGSUZUSFOARklGVEiARklGVEVFToBGSUZURUXORklFTESARklFTMRGSFRPUsFGRkyARkZJgEZFVViARkVVRkVVQUVUgEZFVEiARkVTVElWQUyARkVSUlmARkVSUknTRkVSTUFUQYBGRVJNQVTBRkVPyEZFTsdGRU5DRVKARkVOQ0WARkVNSU5JTsVGRU1BTEWARkVNQUzFRkVMTE9XU0hJUIBGRUmARkVI1UZFSIBGRchGRUVOR4BGRUVNgEZFRUSARkVFxEZFRYBGRUJSVUFSWYBGRUFUSEVSgEZFQVRIRdJGRUFSToBGRUFSRlXMRkVBUoBGQVlBTk5BgEZBWYBGQViARkHYRkFUSUdVRYBGQVRIRVKARkFUSEXSRkFUSEFUQU6ARkFUSEFUQc5GQVRIQYBGQVRIwUZBVIBGQVNUgEZBUlPJRkFSgEZBUYBGQVCARkFOR4BGQU5FUk9TSdNGQU6ARkFNSUxZgEZBTYBGQUxMRc5GQUxBRkVMgEZBSoBGQUlSWYBGQUlMVVJFgEZBSUhVgEZBSUKARkFIUkVOSEVJVIBGQUNUT1JZgEZBQ1RP0kZBQ1NJTUlMxUZBQ0lOR1OARkFDRS02gEZBQ0UtNYBGQUNFLTSARkFDRS0zgEZBQ0UtMoBGQUNFLTGARkFBTUFFgEZBQUmARkFBRlWARjA1M4BGMDUygEYwNTFDgEYwNTFCgEYwNTFBgEYwNTGARjA1MIBGMDQ5gEYwNDiARjA0N0GARjA0N4BGMDQ2QYBGMDQ2gEYwNDVBgEYwNDWARjA0NIBGMDQzgEYwNDKARjA0MYBGMDQwgEYwMzmARjAzOEGARjAzOIBGMDM3QYBGMDM3gEYwMzaARjAzNYBGMDM0gEYwMzOARjAzMoBGMDMxQYBGMDMxgEYwMzCARjAyOYBGMDI4gEYwMjeARjAyNoBGMDI1gEYwMjSARjAyM4BGMDIygEYwMjFBgEYwMjGARjAyMIBGMDE5gEYwMTiARjAxN4BGMDE2gEYwMTWARjAxNIBGMDEzQYBGMDEzgEYwMTKARjAxMYBGMDEwgEYwMDmARjAwOIBGMDA3gEYwMDaARjAwNYBGMDA0gEYwMDOARjAwMoBGMDAxQYBGMDAxgEVaU4BFWkVOgEVaRc5FWVlZgEVZRVOARVlF00VZRUxBU0hF00VZRUdMQVNTRVOARVlFR0FaRS1XQUxMUExBTsVFWUVHQVpFLUZMT09SUExBTsVFWUVCUk9X00VZRUJST9dFWcVFWUJFWUZJTEmARVlBTk5BgEVYVFJFTUVM2UVYVFJBVEVSUkVTVFJJQcxFWFRSQS1MT9dFWFRSQS1ISUfIRVhUUsFFWFRJTkdVSVNIRVKARVhURU5TSU9OgEVYVEVOREVEgEVYVEVOREXERVhQUkVTU0lPTkxFU9NFWFBPTkVO1EVYUExPRElOx0VYT4BFWM9FWElTVFOARVhJU1SARVhIQVVTVElPToBFWEhBTEWARVhDTEFNQVRJT06ARVhDTEFNQVRJT85FWENJVEVNRU5UgEVYQ0hBTkdFgEVYQ0VTU4BFWENFTExFTlSARVdFgEVWRVLZRVZFUkdSRUXORVZFTklOR4BFVVJPUEVBzkVVUk9QRS1BRlJJQ0GARVVSTy1DVVJSRU5D2UVVUs9FVUxF0kVVLVWARVUtT4BFVS1FVYBFVS1FT4BFVS1FgEVVLUGARVRYgEVUTkFIVEGARVRIRcxFVEVST85FVEVSTklUWYBFVEVSTklU2UVUQoBFU1qARVNVS1VVRE+ARVNUSU1BVEVTgEVTVElNQVRFxEVTSEUzgEVTSDIxgEVTSDE2gEVTQ0FQRYBFU0OARVNBgEVTLVRFgEVTLTOARVMtMoBFUy0xgEVSUk9SLUJBUlJFxEVSUoBFUknTRVJJTjKARVJJTrJFUkeARVJBU8VFUVVJVkFMRU7URVFVSUxBVEVSQcxFUVVJSE9QUEVSgEVRVUlIT1BQRdJFUVVJRIBFUVVJQU5HVUxB0kVRVUFMU4BFUVVBTNNFUVVBTIBFUVVBzEVQU0lMT06ARVBTSUxPzkVQT0NIgEVQSUdSQVBIScNFUElEQVVSRUHORVBFTlRIRVRJw0VQRUdFUk1BgEVQQUPURU9UgEVPTYBFT0xIWIBFT0yARU9IgEVOWYBFTlZFTE9QRYBFTlZFTE9QxUVOVU1FUkFUSU/ORU5UUlktMoBFTlRSWS0xgEVOVFJZgEVOVFLZRU5USFVTSUFTTYBFTlRFUlBSSVNFgEVOVEVSSU7HRU5URVKARU5URdJFTlQtU0hBUEXERU5RVUlSWYBFTlGARU5P00VOTkmARU5OgEVOTEFSR0VNRU5UgEVOR0lORYBFTkRPRk9OT06ARU5ESU7HRU5ERVCARU5ERUFWT1VSgEVOQ09VTlRFUlOARU5DTE9TVVJFU4BFTkNMT1NVUkWARU5DTE9TSU7HRU5DgEVOQVJYSdNFTkFSTU9OSU/TRU1QVNlFTVBIQVRJw0VNUEhBU0nTRU1PSslFTUJST0lERVJZgEVNQkxFTYBFTUJFTExJU0hNRU5UgEVNQkVERElOR4BFTFlNQUnDRUxZgEVMVIBFTExJUFRJw0VMTElQU0lTgEVMTElQU0WARUxJRkmARUxJRoBFTEVWRU4tVEhJUlRZgEVMRVZFToBFTEVWRc5FTEVWQVRV00VMRVZBVE9SgEVMRVBIQU5UgEVMRU1FTtRFTEVDVFJPTklDU4BFTEVDVFJJQ0HMRUxFQ1RSScNFTEJBU0HORUxBTUlURYBFTEFNSVTFRUxBRlJPToBFS1NUUkVQVE9OgEVLU4BFS0ZPTklUSUtPToBFS0FSQYBFS0FNgEVKRUPURUlTgEVJR0hUWYBFSUdIVNlFSUdIVElFVEhTgEVJR0hUSUVUSIBFSUdIVEhTgEVJR0hUSNNFSUdIVEiARUlHSFRFRU6ARUlHSFRFRc5FSUdIVC1USElSVFmARUlFgEVIV0HaRUhUU0GARUhUQYBFSFBBgEVIS0GARUhDSEGARUdZUFRPTE9HSUNBzEVHWYBFR0lSgEVHR1OARUdHgEVFWUFOTkGARUVLQUGARUVIgEVFQkVFRklMSYBFRElUT1JJQcxFRElOgEVERIBFQ1OARUJFRklMSYBFQVNURVLORUFTVIBFQVPURUFSVEhM2UVBUlRIgEVBUlTIRUFSTNlFQU1IQU5DSE9MTIBFQUdMRYBFQURIQURIgEVBQkhBREiARbJFMDM4gEUwMzeARTAzNoBFMDM0QYBFMDM0gEUwMzOARTAzMoBFMDMxgEUwMzCARTAyOYBFMDI4QYBFMDI4gEUwMjeARTAyNoBFMDI1gEUwMjSARTAyM4BFMDIygEUwMjGARTAyMEGARTAyMIBFMDE5gEUwMTiARTAxN0GARTAxN4BFMDE2QYBFMDE2gEUwMTWARTAxNIBFMDEzgEUwMTKARTAxMYBFMDEwgEUwMDlBgEUwMDmARTAwOEGARTAwOIBFMDA3gEUwMDaARTAwNYBFMDA0gEUwMDOARTAwMoBFMDAxgEUtTUFJzERaWkhFgERaWkWARFpaQYBEWllJgERaWUFZgERaV0WARFpVgERaT4BEWkpFgERaSVRBgERaSYBEWkhPSYBEWkhFgERaSEGARFpFTE+ARFpFRYBEWkWARFpBWYBEWkFBgERaQYBEWoBE2kRZT4BEWc9EWU5BTUnDRFlFSIBEWUXIRFlBToBEV0+ARFdFgERXQYBEVlVNWcFEVk9FVE9DSElFgERWT0VDSEVMTk9QT1ZPRE5BWUGARFZPRUNIRUxOT1BPVk9ETkFZwURWT0VDSEVMTk9LUllaSEVWQVlBgERWT0VDSEVMTkFZQYBEVk9FQ0hFTE5BWcFEVklTVkFSQYBEVkSARFbBRFaARFVUSUVTgERVU0uARFVTSEVOTkGARFVSQVRJT06ARFVSMoBEVVBPTkRJVdNEVU9YgERVT4BEVU40gERVTjOARFVOs0RVTVBMSU5HgERVTYBEVcxEVUiARFVHVUSARFXHRFVEQYBEVUNLgERVQjKARFVCgERVwkRSWYBEUtlEUlVNU1RJQ0tTgERSVU2ARFJVzURST1BTgERST1BMRVSARFJPUC1TSEFET1dFxERST9BEUk9PTElOx0RST01FREFS2URSSVZFgERSSVbFRFJJTkuARFJJzERSRVNTgERSRUFN2URSQVVHSFTTRFJBTYBEUkHNRFJBR09OgERSQUdPzkRSQUZUSU7HRFJBQ0hNQVOARFJBQ0hNQYBEUkFDSE3BRE9XTldBUkRTgERPV05XQVJE00RPV05XQVLERE9XTlNDQUxJTsdET1dOLVBPSU5USU7HRE9XToBET1ZFgERPVsVET1VHSE5VVIBET1VCVIBET1VCTEXERE9VQkxFLVNUUlVDy0RPVUJMRS1MSU5FxERPVUJMRS1MSU7FRE9VQkxFLUVOREXERE9VQkxFgERPVFRFRC1QgERPVFRFRC1OgERPVFRFRC1MgERPVFRFRIBET1RURcRET1RTLTiARE9UUy03OIBET1RTLTeARE9UUy02OIBET1RTLTY3OIBET1RTLTY3gERPVFMtNoBET1RTLTU4gERPVFMtNTc4gERPVFMtNTeARE9UUy01NjiARE9UUy01Njc4gERPVFMtNTY3gERPVFMtNTaARE9UUy01gERPVFMtNDiARE9UUy00NziARE9UUy00N4BET1RTLTQ2OIBET1RTLTQ2NziARE9UUy00NjeARE9UUy00NoBET1RTLTQ1OIBET1RTLTQ1NziARE9UUy00NTeARE9UUy00NTY4gERPVFMtNDU2NziARE9UUy00NTY3gERPVFMtNDU2gERPVFMtNDWARE9UUy00gERPVFMtMziARE9UUy0zNziARE9UUy0zN4BET1RTLTM2OIBET1RTLTM2NziARE9UUy0zNjeARE9UUy0zNoBET1RTLTM1OIBET1RTLTM1NziARE9UUy0zNTeARE9UUy0zNTY4gERPVFMtMzU2NziARE9UUy0zNTY3gERPVFMtMzU2gERPVFMtMzWARE9UUy0zNDiARE9UUy0zNDc4gERPVFMtMzQ3gERPVFMtMzQ2OIBET1RTLTM0Njc4gERPVFMtMzQ2N4BET1RTLTM0NoBET1RTLTM0NTiARE9UUy0zNDU3OIBET1RTLTM0NTeARE9UUy0zNDU2OIBET1RTLTM0NTY3OIBET1RTLTM0NTY3gERPVFMtMzQ1NoBET1RTLTM0NYBET1RTLTM0gERPVFMtM4BET1RTLTI4gERPVFMtMjc4gERPVFMtMjeARE9UUy0yNjiARE9UUy0yNjc4gERPVFMtMjY3gERPVFMtMjaARE9UUy0yNTiARE9UUy0yNTc4gERPVFMtMjU3gERPVFMtMjU2OIBET1RTLTI1Njc4gERPVFMtMjU2N4BET1RTLTI1NoBET1RTLTI1gERPVFMtMjQ4gERPVFMtMjQ3OIBET1RTLTI0N4BET1RTLTI0NjiARE9UUy0yNDY3OIBET1RTLTI0NjeARE9UUy0yNDaARE9UUy0yNDU4gERPVFMtMjQ1NziARE9UUy0yNDU3gERPVFMtMjQ1NjiARE9UUy0yNDU2NziARE9UUy0yNDU2N4BET1RTLTI0NTaARE9UUy0yNDWARE9UUy0yNIBET1RTLTIzOIBET1RTLTIzNziARE9UUy0yMzeARE9UUy0yMzY4gERPVFMtMjM2NziARE9UUy0yMzY3gERPVFMtMjM2gERPVFMtMjM1OIBET1RTLTIzNTc4gERPVFMtMjM1N4BET1RTLTIzNTY4gERPVFMtMjM1Njc4gERPVFMtMjM1NjeARE9UUy0yMzU2gERPVFMtMjM1gERPVFMtMjM0OIBET1RTLTIzNDc4gERPVFMtMjM0N4BET1RTLTIzNDY4gERPVFMtMjM0Njc4gERPVFMtMjM0NjeARE9UUy0yMzQ2gERPVFMtMjM0NTiARE9UUy0yMzQ1NziARE9UUy0yMzQ1N4BET1RTLTIzNDU2OIBET1RTLTIzNDU2NziARE9UUy0yMzQ1NjeARE9UUy0yMzQ1NoBET1RTLTIzNDWARE9UUy0yMzSARE9UUy0yM4BET1RTLTKARE9UUy0xOIBET1RTLTE3OIBET1RTLTE3gERPVFMtMTY4gERPVFMtMTY3OIBET1RTLTE2N4BET1RTLTE2gERPVFMtMTU4gERPVFMtMTU3OIBET1RTLTE1N4BET1RTLTE1NjiARE9UUy0xNTY3OIBET1RTLTE1NjeARE9UUy0xNTaARE9UUy0xNYBET1RTLTE0OIBET1RTLTE0NziARE9UUy0xNDeARE9UUy0xNDY4gERPVFMtMTQ2NziARE9UUy0xNDY3gERPVFMtMTQ2gERPVFMtMTQ1OIBET1RTLTE0NTc4gERPVFMtMTQ1N4BET1RTLTE0NTY4gERPVFMtMTQ1Njc4gERPVFMtMTQ1NjeARE9UUy0xNDU2gERPVFMtMTQ1gERPVFMtMTSARE9UUy0xMziARE9UUy0xMzc4gERPVFMtMTM3gERPVFMtMTM2OIBET1RTLTEzNjc4gERPVFMtMTM2N4BET1RTLTEzNoBET1RTLTEzNTiARE9UUy0xMzU3OIBET1RTLTEzNTeARE9UUy0xMzU2OIBET1RTLTEzNTY3OIBET1RTLTEzNTY3gERPVFMtMTM1NoBET1RTLTEzNYBET1RTLTEzNDiARE9UUy0xMzQ3OIBET1RTLTEzNDeARE9UUy0xMzQ2OIBET1RTLTEzNDY3OIBET1RTLTEzNDY3gERPVFMtMTM0NoBET1RTLTEzNDU4gERPVFMtMTM0NTc4gERPVFMtMTM0NTeARE9UUy0xMzQ1NjiARE9UUy0xMzQ1Njc4gERPVFMtMTM0NTY3gERPVFMtMTM0NTaARE9UUy0xMzQ1gERPVFMtMTM0gERPVFMtMTOARE9UUy0xMjiARE9UUy0xMjc4gERPVFMtMTI3gERPVFMtMTI2OIBET1RTLTEyNjc4gERPVFMtMTI2N4BET1RTLTEyNoBET1RTLTEyNTiARE9UUy0xMjU3OIBET1RTLTEyNTeARE9UUy0xMjU2OIBET1RTLTEyNTY3OIBET1RTLTEyNTY3gERPVFMtMTI1NoBET1RTLTEyNYBET1RTLTEyNDiARE9UUy0xMjQ3OIBET1RTLTEyNDeARE9UUy0xMjQ2OIBET1RTLTEyNDY3OIBET1RTLTEyNDY3gERPVFMtMTI0NoBET1RTLTEyNDU4gERPVFMtMTI0NTc4gERPVFMtMTI0NTeARE9UUy0xMjQ1NjiARE9UUy0xMjQ1Njc4gERPVFMtMTI0NTY3gERPVFMtMTI0NTaARE9UUy0xMjQ1gERPVFMtMTI0gERPVFMtMTIzOIBET1RTLTEyMzc4gERPVFMtMTIzN4BET1RTLTEyMzY4gERPVFMtMTIzNjc4gERPVFMtMTIzNjeARE9UUy0xMjM2gERPVFMtMTIzNTiARE9UUy0xMjM1NziARE9UUy0xMjM1N4BET1RTLTEyMzU2OIBET1RTLTEyMzU2NziARE9UUy0xMjM1NjeARE9UUy0xMjM1NoBET1RTLTEyMzWARE9UUy0xMjM0OIBET1RTLTEyMzQ3OIBET1RTLTEyMzQ3gERPVFMtMTIzNDY4gERPVFMtMTIzNDY3OIBET1RTLTEyMzQ2N4BET1RTLTEyMzQ2gERPVFMtMTIzNDU4gERPVFMtMTIzNDU3OIBET1RTLTEyMzQ1N4BET1RTLTEyMzQ1NjiARE9UUy0xMjM0NTY3OIBET1RTLTEyMzQ1NjeARE9UUy0xMjM0NTaARE9UUy0xMjM0NYBET1RTLTEyMzSARE9UUy0xMjOARE9UUy0xMoBET1RTLTGARE9UU4BET1RMRVPTRE9SVYBET1JPTcVET09SgERPT05HgERPTkeARE9NSU7PRE9NQUnORE9MUEhJToBET0xMU4BET0xMQdJET0xJVU2ARE9LTUFJgERPSVSARE9JTsdET0mARE9HUsFET0eARE/HRE9F00RPRE+ARE9ERUtBVEGARE9DVU1FTlSARE9DVU1FTtRET0JST4BET0FDSEFTSE1FRYBET0FDSEFTSE1FxURPQYBETy1PgEROwURNgETNRExVgERMT4BETEmARExIWUGARExIQYBETEVFgERMQYBETIBES0FSgERLQdJESkVSVkmAREpFUlaAREpFgERKQYBESVpa2URJWcFESVZPUkPFRElWSVNJT06ARElWSVNJT85ESVZJTsdESVZJTkFUSU9OgERJVklERVOARElWSURFUlOARElWSURFUoBESVZJREXERElWSURFgERJVklExURJVkXTRElWRVJHRU5DRYBESVRUz0RJU1RPUlRJT06ARElTVElOR1VJU0iARElTVElMTIBESVNTT0xWRS0ygERJU1NPTFZFgERJU1BVVEXERElTUEVSU0lPToBESVNLgERJU0lNT1WARElTSIBESVNHVUlTRcRESVNDT05USU5VT1XTRElTw0RJU0FQUE9JTlRFxERJU0FCTEXERElSR8FESVJFQ1RM2URJUkVDVElPTkHMRElSRUNUSU/ORElQVEWARElQUEVSgERJUExPVU6ARElQTEmARElQTMlESU5HQkHUREnORElNTUlOR4BESU1JTlVUSU9OLTOARElNSU5VVElPTi0ygERJTUlOVVRJT04tMYBESU1JTklTSE1FTlSARElNSURJwURJTUVOU0lPTkHMRElNRU5TSU/ORElNMoBESU2yRElMgERJR1JBUEiARElHUkFQyERJR1JBTU1P00RJR1JBTU3BRElHUkHNRElHT1JHT06ARElHT1JHT85ESUdJVFOARElHQU1NQYBESUfBRElGVE9HR0/TRElGT05JQVOARElGRklDVUxU2URJRkZJQ1VMVElFU4BESUZGRVJFTlRJQUyARElGRkVSRU5DxURJRkFUgERJRVNJU4BESUVTSdNESUVTRcxESUVQgERJxURJQoBESUFUT05PzkRJQVRPTklLyURJQVNUT0zJRElBTU9ORFOARElBTU9ORIBESUFNT07ERElBTUVURdJESUFMWVRJS0GARElBTFlUSUvBRElBTEVDVC3QRElBR09OQUyARElBRVJFU0laRcRESUFFUkVTSVMtUklOR4BESUFFUkVTSVOARElBRVJFU0nTREhPVYBESE9PgERIT4BESElJgERISFWAREhIT0+AREhIT4BESEhJgERISEVFgERISEWAREhIQYBESEVFgERIQVJNQYBESEFNRURIgERIQUxFVEiAREhBTEFUSIBESEFMgERIQURIRYBESEFBTFWAREhBQYBESEGAREVayERFWVRFUk/VREVZVEVST9NERVhJQYBERVZJQ8VERVZFTE9QTUVOVIBERVVOR4BERVNLVE/QREVTy0RFU0lHToBERVNJgERFU0VSVIBERVNFUtRERVNFUkXUREVTQ1JJUFRJT85ERVNDRU5ESU7HREVTQ0VOREVSgERFUkVULUhJREVUgERFUkVUgERFUkVMSUPUREVSQklUU0GAREVQVEiAREVQQVJUVVJFgERFUEFSVE1FTtRERVBBUlRJTsdERU5USVNUUtlERU5UQcxERU5PTUlOQVRPUoBERU5PTUlOQVRP0kRFTk5FToBERU5HgERFTsVERU5BUklV00RFTUVTVFZFTk7ZREVMVEGAREVMVMFERUxUgERFTFBIScNERUxJVkVS2URFTElWRVJBTkNFgERFTElNSVRFUoBERUxJTUlURdJERUxJQ0lPVdNERUxFVElPzkRFTEVURYBERUxFVMVERUtBgERFS4BERUmAREVISYBERUdSRUVTgERFR1JFxURFRklOSVRJT06AREVGRUNUSVZFTkVT00RFRVKAREVFUExZgERFRUyAREVDUkVTQ0VORE+AREVDUkVBU0WAREVDUkVBU8VERUNPUkFUSVbFREVDT1JBVElPToBERUNJU0lWRU5FU1OAREVDSU1BzERFQ0lEVU9V00RFQ0VNQkVSgERFQ0FZRUSAREVCSdRERUFUSIBERUHGREVBRIBERFdBgEREVViARERVVIBERFVSWIBERFVSgEREVVCARERVT1iARERVT1CARERVT4BERFWARERPWIBERE9UgERET1CARERPQYBERElYgERESVSARERJUIBERElFWIBERElFUIBERElFgERESYBEREhVgERESE+ARERIRUWARERIRYBEREhBQYBEREhBgERERViARERFUIBEREVFgERERYBERERIQYBERERBgEREQVlBTk5BgEREQViARERBVIBEREFQgEREQUyARERBzEREQUhBTIBEREFIQcxEREFBgERDU4BEQ0hFgERDNIBEQzOAREMygERDMYBEwkRBWS1OSUdIVIBEQdlEQVdCgERBVklZQU5JgERBVklEgERBVMVEQVNJQYBEQVNJwURBU0hFxERBU0iAREFTyERBU0VJQYBEQVJUgERBUktFTklOR4BEQVJLRU5JTsdEQVLLREFSR0GAREFSQTSAREFSQTOAREFSgERBUC1QUkHNREFQLVBJyURBUC1NVU/ZREFQLUJVT85EQVAtQkXJREHQREFOVEFZQUxBToBEQU5UQUrBREFOR0+AREFOR4BEQU7HREFOREGAREFOQ0lOR4BEQU5DRVKAREFNUIBEQU3QREFNTUFUQU6AREFNTUFUQc5EQU1NQYBEQU1NwURBTUFSVYBEQUxFVEgtUkVTSIBEQUxFVIBEQUxF1ERBTERBgERBTEFUSIBEQUxBVMhEQUxBVIBEQUlSgERBSU5HgERBSYBEQUhZQUFVU0gtMoBEQUhZQUFVU0iAREFHU4BEQUdHRVKAREFHR0XSREFHRVNIgERBR0VTyERBR0JBU0lOTkGAREFHQdpEQUdBTEdBgERBRzOAREHHREFFTkeAREFFx0RBRIBEQcREQUFTVYBEQUFMSYBEQUFESFWARDA2N0iARDA2N0eARDA2N0aARDA2N0WARDA2N0SARDA2N0OARDA2N0KARDA2N0GARDA2N4BEMDY2gEQwNjWARDA2NIBEMDYzgEQwNjKARDA2MYBEMDYwgEQwNTmARDA1OIBEMDU3gEQwNTaARDA1NYBEMDU0QYBEMDU0gEQwNTOARDA1MkGARDA1MoBEMDUxgEQwNTBJgEQwNTBIgEQwNTBHgEQwNTBGgEQwNTBFgEQwNTBEgEQwNTBDgEQwNTBCgEQwNTBBgEQwNTCARDA0OYBEMDQ4QYBEMDQ4gEQwNDeARDA0NkGARDA0NoBEMDQ1gEQwNDSARDA0M4BEMDQygEQwNDGARDA0MIBEMDM5gEQwMziARDAzN4BEMDM2gEQwMzWARDAzNEGARDAzNIBEMDMzgEQwMzKARDAzMUGARDAzMYBEMDMwgEQwMjmARDAyOIBEMDI3QYBEMDI3gEQwMjaARDAyNYBEMDI0gEQwMjOARDAyMoBEMDIxgEQwMjCARDAxOYBEMDE4gEQwMTeARDAxNoBEMDE1gEQwMTSARDAxM4BEMDEygEQwMTGARDAxMIBEMDA5gEQwMDhBgEQwMDiARDAwN4BEMDA2gEQwMDWARDAwNIBEMDAzgEQwMDKARDAwMYBDWViAQ1lUgENZUliAQ1lSRU5BScNDWVKAQ1lQUk8tTUlOT0HOQ1lQUklP1ENZUEVSVVOAQ1lQgENZTElORFJJQ0lUWYBDWUNMT05FgENZQVmAQ1lBV4BDWUGAQ1dPT4BDV0+AQ1dJSYBDV0mAQ1dFT1JUSIBDV0WAQ1dBQYBDVViAQ1VVgENV1ENVU1RPTVOAQ1VTVE9NRdJDVVNUQVJEgENVU1CAQ1VSWIBDVVJWSU7HQ1VSVkVEgENVUlZFxENVUlZFgENVUlbFQ1VSU0lWxUNVUlLZQ1VSUkVOVIBDVVJSRU7UQ1VSTNlDVVJMSU7HQ1VSTEXEQ1VSTIBDVVKAQ1VQUEVEgENVUFBFxENVUElET4BDVVBDQUtFgENVT1iAQ1VPUIBDVU+AQ1XNQ1VMVElWQVRJT85DVUNVTUJFUoBDVUJFRIBDVUJFgENVQsVDVUFUUklMTE+AQ1VBVFJJTEzPQ1VBzUNTSYBDUllTVEHMQ1JZUFRPR1JBTU1Jw0NSWUlOx0NSVVpFSVLPQ1JVVENIgENSVUNJRk9SzUNSVUNJQkxFLTWAQ1JVQ0lCTEUtNIBDUlVDSUJMRS0zgENSVUNJQkxFLTKAQ1JVQ0lCTEWAQ1JPV06AQ1JPU1NJTkeAQ1JPU1NJTsdDUk9TU0hBVEPIQ1JPU1NFRC1UQUlMgENST1NTRUSAQ1JPU1NFxENST1NTQk9ORVOAQ1JPU1NCQVKAQ1JPU1OAQ1JPU9NDUk9QgENST0lYgENST0lTU0FOVIBDUk9DVdNDUk9DT0RJTEWAQ1JJQ0tFVIBDUklDS0XUQ1JFU0NFTlRTgENSRVNDRU5UgENSRVNDRU7UQ1JFREnUQ1JFQVRJVsVDUkVBTYBDUkFZT06AQ1JBQoBDUoBDT1iAQ09XQk/ZQ09XgENP10NPVkVSSU7HQ09WRVKAQ09VUEzFQ09VTlRJTsdDT1VOVEVSU0lOS4BDT1VOVEVSQk9SRYBDT1VOQ0nMQ09VQ8hDT1SAQ09SUkVTUE9ORNNDT1JSRUNUgENPUlBTRYBDT1JQT1JBVElPToBDT1JPTklTgENPUk5JU8hDT1JORVJTgENPUk5FUoBDT1JORdJDT1JLgENPUkFMgENPUFlSSUdIVIBDT1BZUklHSNRDT1BZTEVG1ENPUFmAQ09QUk9EVUNUgENPUFBFUi0ygENPUFBFUoBDT1CAQ09PTIBDT09LSU5HgENPT0tJRYBDT09LRcRDT0+AQ09OVkVSR0lOx0NPTlZFTklFTkPFQ09OVFJPTIBDT05UUk/MQ09OVFJBUklFVFmAQ09OVFJBQ1RJT06AQ09OVE9VUkXEQ09OVE9V0kNPTlRJTlVJTsdDT05USU5VQVRJT85DT05URU5USU9OgENPTlRFTVBMQVRJT06AQ09OVEFJTtNDT05UQUlOSU7HQ09OVEFJzkNPTlRBQ1SAQ09OU1RSVUNUSU9OgENPTlNUUlVDVElPzkNPTlNUQU5UgENPTlNUQU7UQ09OU1RBTkNZgENPTlNFQ1VUSVbFQ09OSlVOQ1RJT06AQ09OSlVHQVTFQ09OSk9JTklOx0NPTkpPSU5FRIBDT05KT0lORcRDT05JQ0HMQ09OR1JVRU7UQ09OR1JBVFVMQVRJT06AQ09ORlVTRcRDT05GT1VOREXEQ09ORkxJQ1SAQ09ORkVUVMlDT05DQVZFLVNJREXEQ09OQ0FWRS1QT0lOVEXEQ09NUFVURVJTgENPTVBVVEVSgENPTVBSRVNTSU9OgENPTVBSRVNTRcRDT01QT1NJVElPToBDT01QT1NJVElPzkNPTVBPTkVOVC03NjiAQ09NUE9ORU5ULTc2N4BDT01QT05FTlQtNzY2gENPTVBPTkVOVC03NjWAQ09NUE9ORU5ULTc2NIBDT01QT05FTlQtNzYzgENPTVBPTkVOVC03NjKAQ09NUE9ORU5ULTc2MYBDT01QT05FTlQtNzYwgENPTVBPTkVOVC03NTmAQ09NUE9ORU5ULTc1OIBDT01QT05FTlQtNzU3gENPTVBPTkVOVC03NTaAQ09NUE9ORU5ULTc1NYBDT01QT05FTlQtNzU0gENPTVBPTkVOVC03NTOAQ09NUE9ORU5ULTc1MoBDT01QT05FTlQtNzUxgENPTVBPTkVOVC03NTCAQ09NUE9ORU5ULTc0OYBDT01QT05FTlQtNzQ4gENPTVBPTkVOVC03NDeAQ09NUE9ORU5ULTc0NoBDT01QT05FTlQtNzQ1gENPTVBPTkVOVC03NDSAQ09NUE9ORU5ULTc0M4BDT01QT05FTlQtNzQygENPTVBPTkVOVC03NDGAQ09NUE9ORU5ULTc0MIBDT01QT05FTlQtNzM5gENPTVBPTkVOVC03MziAQ09NUE9ORU5ULTczN4BDT01QT05FTlQtNzM2gENPTVBPTkVOVC03MzWAQ09NUE9ORU5ULTczNIBDT01QT05FTlQtNzMzgENPTVBPTkVOVC03MzKAQ09NUE9ORU5ULTczMYBDT01QT05FTlQtNzMwgENPTVBPTkVOVC03MjmAQ09NUE9ORU5ULTcyOIBDT01QT05FTlQtNzI3gENPTVBPTkVOVC03MjaAQ09NUE9ORU5ULTcyNYBDT01QT05FTlQtNzI0gENPTVBPTkVOVC03MjOAQ09NUE9ORU5ULTcyMoBDT01QT05FTlQtNzIxgENPTVBPTkVOVC03MjCAQ09NUE9ORU5ULTcxOYBDT01QT05FTlQtNzE4gENPTVBPTkVOVC03MTeAQ09NUE9ORU5ULTcxNoBDT01QT05FTlQtNzE1gENPTVBPTkVOVC03MTSAQ09NUE9ORU5ULTcxM4BDT01QT05FTlQtNzEygENPTVBPTkVOVC03MTGAQ09NUE9ORU5ULTcxMIBDT01QT05FTlQtNzA5gENPTVBPTkVOVC03MDiAQ09NUE9ORU5ULTcwN4BDT01QT05FTlQtNzA2gENPTVBPTkVOVC03MDWAQ09NUE9ORU5ULTcwNIBDT01QT05FTlQtNzAzgENPTVBPTkVOVC03MDKAQ09NUE9ORU5ULTcwMYBDT01QT05FTlQtNzAwgENPTVBPTkVOVC02OTmAQ09NUE9ORU5ULTY5OIBDT01QT05FTlQtNjk3gENPTVBPTkVOVC02OTaAQ09NUE9ORU5ULTY5NYBDT01QT05FTlQtNjk0gENPTVBPTkVOVC02OTOAQ09NUE9ORU5ULTY5MoBDT01QT05FTlQtNjkxgENPTVBPTkVOVC02OTCAQ09NUE9ORU5ULTY4OYBDT01QT05FTlQtNjg4gENPTVBPTkVOVC02ODeAQ09NUE9ORU5ULTY4NoBDT01QT05FTlQtNjg1gENPTVBPTkVOVC02ODSAQ09NUE9ORU5ULTY4M4BDT01QT05FTlQtNjgygENPTVBPTkVOVC02ODGAQ09NUE9ORU5ULTY4MIBDT01QT05FTlQtNjc5gENPTVBPTkVOVC02NziAQ09NUE9ORU5ULTY3N4BDT01QT05FTlQtNjc2gENPTVBPTkVOVC02NzWAQ09NUE9ORU5ULTY3NIBDT01QT05FTlQtNjczgENPTVBPTkVOVC02NzKAQ09NUE9ORU5ULTY3MYBDT01QT05FTlQtNjcwgENPTVBPTkVOVC02NjmAQ09NUE9ORU5ULTY2OIBDT01QT05FTlQtNjY3gENPTVBPTkVOVC02NjaAQ09NUE9ORU5ULTY2NYBDT01QT05FTlQtNjY0gENPTVBPTkVOVC02NjOAQ09NUE9ORU5ULTY2MoBDT01QT05FTlQtNjYxgENPTVBPTkVOVC02NjCAQ09NUE9ORU5ULTY1OYBDT01QT05FTlQtNjU4gENPTVBPTkVOVC02NTeAQ09NUE9ORU5ULTY1NoBDT01QT05FTlQtNjU1gENPTVBPTkVOVC02NTSAQ09NUE9ORU5ULTY1M4BDT01QT05FTlQtNjUygENPTVBPTkVOVC02NTGAQ09NUE9ORU5ULTY1MIBDT01QT05FTlQtNjQ5gENPTVBPTkVOVC02NDiAQ09NUE9ORU5ULTY0N4BDT01QT05FTlQtNjQ2gENPTVBPTkVOVC02NDWAQ09NUE9ORU5ULTY0NIBDT01QT05FTlQtNjQzgENPTVBPTkVOVC02NDKAQ09NUE9ORU5ULTY0MYBDT01QT05FTlQtNjQwgENPTVBPTkVOVC02MzmAQ09NUE9ORU5ULTYzOIBDT01QT05FTlQtNjM3gENPTVBPTkVOVC02MzaAQ09NUE9ORU5ULTYzNYBDT01QT05FTlQtNjM0gENPTVBPTkVOVC02MzOAQ09NUE9ORU5ULTYzMoBDT01QT05FTlQtNjMxgENPTVBPTkVOVC02MzCAQ09NUE9ORU5ULTYyOYBDT01QT05FTlQtNjI4gENPTVBPTkVOVC02MjeAQ09NUE9ORU5ULTYyNoBDT01QT05FTlQtNjI1gENPTVBPTkVOVC02MjSAQ09NUE9ORU5ULTYyM4BDT01QT05FTlQtNjIygENPTVBPTkVOVC02MjGAQ09NUE9ORU5ULTYyMIBDT01QT05FTlQtNjE5gENPTVBPTkVOVC02MTiAQ09NUE9ORU5ULTYxN4BDT01QT05FTlQtNjE2gENPTVBPTkVOVC02MTWAQ09NUE9ORU5ULTYxNIBDT01QT05FTlQtNjEzgENPTVBPTkVOVC02MTKAQ09NUE9ORU5ULTYxMYBDT01QT05FTlQtNjEwgENPTVBPTkVOVC02MDmAQ09NUE9ORU5ULTYwOIBDT01QT05FTlQtNjA3gENPTVBPTkVOVC02MDaAQ09NUE9ORU5ULTYwNYBDT01QT05FTlQtNjA0gENPTVBPTkVOVC02MDOAQ09NUE9ORU5ULTYwMoBDT01QT05FTlQtNjAxgENPTVBPTkVOVC02MDCAQ09NUE9ORU5ULTU5OYBDT01QT05FTlQtNTk4gENPTVBPTkVOVC01OTeAQ09NUE9ORU5ULTU5NoBDT01QT05FTlQtNTk1gENPTVBPTkVOVC01OTSAQ09NUE9ORU5ULTU5M4BDT01QT05FTlQtNTkygENPTVBPTkVOVC01OTGAQ09NUE9ORU5ULTU5MIBDT01QT05FTlQtNTg5gENPTVBPTkVOVC01ODiAQ09NUE9ORU5ULTU4N4BDT01QT05FTlQtNTg2gENPTVBPTkVOVC01ODWAQ09NUE9ORU5ULTU4NIBDT01QT05FTlQtNTgzgENPTVBPTkVOVC01ODKAQ09NUE9ORU5ULTU4MYBDT01QT05FTlQtNTgwgENPTVBPTkVOVC01NzmAQ09NUE9ORU5ULTU3OIBDT01QT05FTlQtNTc3gENPTVBPTkVOVC01NzaAQ09NUE9ORU5ULTU3NYBDT01QT05FTlQtNTc0gENPTVBPTkVOVC01NzOAQ09NUE9ORU5ULTU3MoBDT01QT05FTlQtNTcxgENPTVBPTkVOVC01NzCAQ09NUE9ORU5ULTU2OYBDT01QT05FTlQtNTY4gENPTVBPTkVOVC01NjeAQ09NUE9ORU5ULTU2NoBDT01QT05FTlQtNTY1gENPTVBPTkVOVC01NjSAQ09NUE9ORU5ULTU2M4BDT01QT05FTlQtNTYygENPTVBPTkVOVC01NjGAQ09NUE9ORU5ULTU2MIBDT01QT05FTlQtNTU5gENPTVBPTkVOVC01NTiAQ09NUE9ORU5ULTU1N4BDT01QT05FTlQtNTU2gENPTVBPTkVOVC01NTWAQ09NUE9ORU5ULTU1NIBDT01QT05FTlQtNTUzgENPTVBPTkVOVC01NTKAQ09NUE9ORU5ULTU1MYBDT01QT05FTlQtNTUwgENPTVBPTkVOVC01NDmAQ09NUE9ORU5ULTU0OIBDT01QT05FTlQtNTQ3gENPTVBPTkVOVC01NDaAQ09NUE9ORU5ULTU0NYBDT01QT05FTlQtNTQ0gENPTVBPTkVOVC01NDOAQ09NUE9ORU5ULTU0MoBDT01QT05FTlQtNTQxgENPTVBPTkVOVC01NDCAQ09NUE9ORU5ULTUzOYBDT01QT05FTlQtNTM4gENPTVBPTkVOVC01MzeAQ09NUE9ORU5ULTUzNoBDT01QT05FTlQtNTM1gENPTVBPTkVOVC01MzSAQ09NUE9ORU5ULTUzM4BDT01QT05FTlQtNTMygENPTVBPTkVOVC01MzGAQ09NUE9ORU5ULTUzMIBDT01QT05FTlQtNTI5gENPTVBPTkVOVC01MjiAQ09NUE9ORU5ULTUyN4BDT01QT05FTlQtNTI2gENPTVBPTkVOVC01MjWAQ09NUE9ORU5ULTUyNIBDT01QT05FTlQtNTIzgENPTVBPTkVOVC01MjKAQ09NUE9ORU5ULTUyMYBDT01QT05FTlQtNTIwgENPTVBPTkVOVC01MTmAQ09NUE9ORU5ULTUxOIBDT01QT05FTlQtNTE3gENPTVBPTkVOVC01MTaAQ09NUE9ORU5ULTUxNYBDT01QT05FTlQtNTE0gENPTVBPTkVOVC01MTOAQ09NUE9ORU5ULTUxMoBDT01QT05FTlQtNTExgENPTVBPTkVOVC01MTCAQ09NUE9ORU5ULTUwOYBDT01QT05FTlQtNTA4gENPTVBPTkVOVC01MDeAQ09NUE9ORU5ULTUwNoBDT01QT05FTlQtNTA1gENPTVBPTkVOVC01MDSAQ09NUE9ORU5ULTUwM4BDT01QT05FTlQtNTAygENPTVBPTkVOVC01MDGAQ09NUE9ORU5ULTUwMIBDT01QT05FTlQtNDk5gENPTVBPTkVOVC00OTiAQ09NUE9ORU5ULTQ5N4BDT01QT05FTlQtNDk2gENPTVBPTkVOVC00OTWAQ09NUE9ORU5ULTQ5NIBDT01QT05FTlQtNDkzgENPTVBPTkVOVC00OTKAQ09NUE9ORU5ULTQ5MYBDT01QT05FTlQtNDkwgENPTVBPTkVOVC00ODmAQ09NUE9ORU5ULTQ4OIBDT01QT05FTlQtNDg3gENPTVBPTkVOVC00ODaAQ09NUE9ORU5ULTQ4NYBDT01QT05FTlQtNDg0gENPTVBPTkVOVC00ODOAQ09NUE9ORU5ULTQ4MoBDT01QT05FTlQtNDgxgENPTVBPTkVOVC00ODCAQ09NUE9ORU5ULTQ3OYBDT01QT05FTlQtNDc4gENPTVBPTkVOVC00NzeAQ09NUE9ORU5ULTQ3NoBDT01QT05FTlQtNDc1gENPTVBPTkVOVC00NzSAQ09NUE9ORU5ULTQ3M4BDT01QT05FTlQtNDcygENPTVBPTkVOVC00NzGAQ09NUE9ORU5ULTQ3MIBDT01QT05FTlQtNDY5gENPTVBPTkVOVC00NjiAQ09NUE9ORU5ULTQ2N4BDT01QT05FTlQtNDY2gENPTVBPTkVOVC00NjWAQ09NUE9ORU5ULTQ2NIBDT01QT05FTlQtNDYzgENPTVBPTkVOVC00NjKAQ09NUE9ORU5ULTQ2MYBDT01QT05FTlQtNDYwgENPTVBPTkVOVC00NTmAQ09NUE9ORU5ULTQ1OIBDT01QT05FTlQtNDU3gENPTVBPTkVOVC00NTaAQ09NUE9ORU5ULTQ1NYBDT01QT05FTlQtNDU0gENPTVBPTkVOVC00NTOAQ09NUE9ORU5ULTQ1MoBDT01QT05FTlQtNDUxgENPTVBPTkVOVC00NTCAQ09NUE9ORU5ULTQ0OYBDT01QT05FTlQtNDQ4gENPTVBPTkVOVC00NDeAQ09NUE9ORU5ULTQ0NoBDT01QT05FTlQtNDQ1gENPTVBPTkVOVC00NDSAQ09NUE9ORU5ULTQ0M4BDT01QT05FTlQtNDQygENPTVBPTkVOVC00NDGAQ09NUE9ORU5ULTQ0MIBDT01QT05FTlQtNDM5gENPTVBPTkVOVC00MziAQ09NUE9ORU5ULTQzN4BDT01QT05FTlQtNDM2gENPTVBPTkVOVC00MzWAQ09NUE9ORU5ULTQzNIBDT01QT05FTlQtNDMzgENPTVBPTkVOVC00MzKAQ09NUE9ORU5ULTQzMYBDT01QT05FTlQtNDMwgENPTVBPTkVOVC00MjmAQ09NUE9ORU5ULTQyOIBDT01QT05FTlQtNDI3gENPTVBPTkVOVC00MjaAQ09NUE9ORU5ULTQyNYBDT01QT05FTlQtNDI0gENPTVBPTkVOVC00MjOAQ09NUE9ORU5ULTQyMoBDT01QT05FTlQtNDIxgENPTVBPTkVOVC00MjCAQ09NUE9ORU5ULTQxOYBDT01QT05FTlQtNDE4gENPTVBPTkVOVC00MTeAQ09NUE9ORU5ULTQxNoBDT01QT05FTlQtNDE1gENPTVBPTkVOVC00MTSAQ09NUE9ORU5ULTQxM4BDT01QT05FTlQtNDEygENPTVBPTkVOVC00MTGAQ09NUE9ORU5ULTQxMIBDT01QT05FTlQtNDA5gENPTVBPTkVOVC00MDiAQ09NUE9ORU5ULTQwN4BDT01QT05FTlQtNDA2gENPTVBPTkVOVC00MDWAQ09NUE9ORU5ULTQwNIBDT01QT05FTlQtNDAzgENPTVBPTkVOVC00MDKAQ09NUE9ORU5ULTQwMYBDT01QT05FTlQtNDAwgENPTVBPTkVOVC0zOTmAQ09NUE9ORU5ULTM5OIBDT01QT05FTlQtMzk3gENPTVBPTkVOVC0zOTaAQ09NUE9ORU5ULTM5NYBDT01QT05FTlQtMzk0gENPTVBPTkVOVC0zOTOAQ09NUE9ORU5ULTM5MoBDT01QT05FTlQtMzkxgENPTVBPTkVOVC0zOTCAQ09NUE9ORU5ULTM4OYBDT01QT05FTlQtMzg4gENPTVBPTkVOVC0zODeAQ09NUE9ORU5ULTM4NoBDT01QT05FTlQtMzg1gENPTVBPTkVOVC0zODSAQ09NUE9ORU5ULTM4M4BDT01QT05FTlQtMzgygENPTVBPTkVOVC0zODGAQ09NUE9ORU5ULTM4MIBDT01QT05FTlQtMzc5gENPTVBPTkVOVC0zNziAQ09NUE9ORU5ULTM3N4BDT01QT05FTlQtMzc2gENPTVBPTkVOVC0zNzWAQ09NUE9ORU5ULTM3NIBDT01QT05FTlQtMzczgENPTVBPTkVOVC0zNzKAQ09NUE9ORU5ULTM3MYBDT01QT05FTlQtMzcwgENPTVBPTkVOVC0zNjmAQ09NUE9ORU5ULTM2OIBDT01QT05FTlQtMzY3gENPTVBPTkVOVC0zNjaAQ09NUE9ORU5ULTM2NYBDT01QT05FTlQtMzY0gENPTVBPTkVOVC0zNjOAQ09NUE9ORU5ULTM2MoBDT01QT05FTlQtMzYxgENPTVBPTkVOVC0zNjCAQ09NUE9ORU5ULTM1OYBDT01QT05FTlQtMzU4gENPTVBPTkVOVC0zNTeAQ09NUE9ORU5ULTM1NoBDT01QT05FTlQtMzU1gENPTVBPTkVOVC0zNTSAQ09NUE9ORU5ULTM1M4BDT01QT05FTlQtMzUygENPTVBPTkVOVC0zNTGAQ09NUE9ORU5ULTM1MIBDT01QT05FTlQtMzQ5gENPTVBPTkVOVC0zNDiAQ09NUE9ORU5ULTM0N4BDT01QT05FTlQtMzQ2gENPTVBPTkVOVC0zNDWAQ09NUE9ORU5ULTM0NIBDT01QT05FTlQtMzQzgENPTVBPTkVOVC0zNDKAQ09NUE9ORU5ULTM0MYBDT01QT05FTlQtMzQwgENPTVBPTkVOVC0zMzmAQ09NUE9ORU5ULTMzOIBDT01QT05FTlQtMzM3gENPTVBPTkVOVC0zMzaAQ09NUE9ORU5ULTMzNYBDT01QT05FTlQtMzM0gENPTVBPTkVOVC0zMzOAQ09NUE9ORU5ULTMzMoBDT01QT05FTlQtMzMxgENPTVBPTkVOVC0zMzCAQ09NUE9ORU5ULTMyOYBDT01QT05FTlQtMzI4gENPTVBPTkVOVC0zMjeAQ09NUE9ORU5ULTMyNoBDT01QT05FTlQtMzI1gENPTVBPTkVOVC0zMjSAQ09NUE9ORU5ULTMyM4BDT01QT05FTlQtMzIygENPTVBPTkVOVC0zMjGAQ09NUE9ORU5ULTMyMIBDT01QT05FTlQtMzE5gENPTVBPTkVOVC0zMTiAQ09NUE9ORU5ULTMxN4BDT01QT05FTlQtMzE2gENPTVBPTkVOVC0zMTWAQ09NUE9ORU5ULTMxNIBDT01QT05FTlQtMzEzgENPTVBPTkVOVC0zMTKAQ09NUE9ORU5ULTMxMYBDT01QT05FTlQtMzEwgENPTVBPTkVOVC0zMDmAQ09NUE9ORU5ULTMwOIBDT01QT05FTlQtMzA3gENPTVBPTkVOVC0zMDaAQ09NUE9ORU5ULTMwNYBDT01QT05FTlQtMzA0gENPTVBPTkVOVC0zMDOAQ09NUE9ORU5ULTMwMoBDT01QT05FTlQtMzAxgENPTVBPTkVOVC0zMDCAQ09NUE9ORU5ULTI5OYBDT01QT05FTlQtMjk4gENPTVBPTkVOVC0yOTeAQ09NUE9ORU5ULTI5NoBDT01QT05FTlQtMjk1gENPTVBPTkVOVC0yOTSAQ09NUE9ORU5ULTI5M4BDT01QT05FTlQtMjkygENPTVBPTkVOVC0yOTGAQ09NUE9ORU5ULTI5MIBDT01QT05FTlQtMjg5gENPTVBPTkVOVC0yODiAQ09NUE9ORU5ULTI4N4BDT01QT05FTlQtMjg2gENPTVBPTkVOVC0yODWAQ09NUE9ORU5ULTI4NIBDT01QT05FTlQtMjgzgENPTVBPTkVOVC0yODKAQ09NUE9ORU5ULTI4MYBDT01QT05FTlQtMjgwgENPTVBPTkVOVC0yNzmAQ09NUE9ORU5ULTI3OIBDT01QT05FTlQtMjc3gENPTVBPTkVOVC0yNzaAQ09NUE9ORU5ULTI3NYBDT01QT05FTlQtMjc0gENPTVBPTkVOVC0yNzOAQ09NUE9ORU5ULTI3MoBDT01QT05FTlQtMjcxgENPTVBPTkVOVC0yNzCAQ09NUE9ORU5ULTI2OYBDT01QT05FTlQtMjY4gENPTVBPTkVOVC0yNjeAQ09NUE9ORU5ULTI2NoBDT01QT05FTlQtMjY1gENPTVBPTkVOVC0yNjSAQ09NUE9ORU5ULTI2M4BDT01QT05FTlQtMjYygENPTVBPTkVOVC0yNjGAQ09NUE9ORU5ULTI2MIBDT01QT05FTlQtMjU5gENPTVBPTkVOVC0yNTiAQ09NUE9ORU5ULTI1N4BDT01QT05FTlQtMjU2gENPTVBPTkVOVC0yNTWAQ09NUE9ORU5ULTI1NIBDT01QT05FTlQtMjUzgENPTVBPTkVOVC0yNTKAQ09NUE9ORU5ULTI1MYBDT01QT05FTlQtMjUwgENPTVBPTkVOVC0yNDmAQ09NUE9ORU5ULTI0OIBDT01QT05FTlQtMjQ3gENPTVBPTkVOVC0yNDaAQ09NUE9ORU5ULTI0NYBDT01QT05FTlQtMjQ0gENPTVBPTkVOVC0yNDOAQ09NUE9ORU5ULTI0MoBDT01QT05FTlQtMjQxgENPTVBPTkVOVC0yNDCAQ09NUE9ORU5ULTIzOYBDT01QT05FTlQtMjM4gENPTVBPTkVOVC0yMzeAQ09NUE9ORU5ULTIzNoBDT01QT05FTlQtMjM1gENPTVBPTkVOVC0yMzSAQ09NUE9ORU5ULTIzM4BDT01QT05FTlQtMjMygENPTVBPTkVOVC0yMzGAQ09NUE9ORU5ULTIzMIBDT01QT05FTlQtMjI5gENPTVBPTkVOVC0yMjiAQ09NUE9ORU5ULTIyN4BDT01QT05FTlQtMjI2gENPTVBPTkVOVC0yMjWAQ09NUE9ORU5ULTIyNIBDT01QT05FTlQtMjIzgENPTVBPTkVOVC0yMjKAQ09NUE9ORU5ULTIyMYBDT01QT05FTlQtMjIwgENPTVBPTkVOVC0yMTmAQ09NUE9ORU5ULTIxOIBDT01QT05FTlQtMjE3gENPTVBPTkVOVC0yMTaAQ09NUE9ORU5ULTIxNYBDT01QT05FTlQtMjE0gENPTVBPTkVOVC0yMTOAQ09NUE9ORU5ULTIxMoBDT01QT05FTlQtMjExgENPTVBPTkVOVC0yMTCAQ09NUE9ORU5ULTIwOYBDT01QT05FTlQtMjA4gENPTVBPTkVOVC0yMDeAQ09NUE9ORU5ULTIwNoBDT01QT05FTlQtMjA1gENPTVBPTkVOVC0yMDSAQ09NUE9ORU5ULTIwM4BDT01QT05FTlQtMjAygENPTVBPTkVOVC0yMDGAQ09NUE9ORU5ULTIwMIBDT01QT05FTlQtMTk5gENPTVBPTkVOVC0xOTiAQ09NUE9ORU5ULTE5N4BDT01QT05FTlQtMTk2gENPTVBPTkVOVC0xOTWAQ09NUE9ORU5ULTE5NIBDT01QT05FTlQtMTkzgENPTVBPTkVOVC0xOTKAQ09NUE9ORU5ULTE5MYBDT01QT05FTlQtMTkwgENPTVBPTkVOVC0xODmAQ09NUE9ORU5ULTE4OIBDT01QT05FTlQtMTg3gENPTVBPTkVOVC0xODaAQ09NUE9ORU5ULTE4NYBDT01QT05FTlQtMTg0gENPTVBPTkVOVC0xODOAQ09NUE9ORU5ULTE4MoBDT01QT05FTlQtMTgxgENPTVBPTkVOVC0xODCAQ09NUE9ORU5ULTE3OYBDT01QT05FTlQtMTc4gENPTVBPTkVOVC0xNzeAQ09NUE9ORU5ULTE3NoBDT01QT05FTlQtMTc1gENPTVBPTkVOVC0xNzSAQ09NUE9ORU5ULTE3M4BDT01QT05FTlQtMTcygENPTVBPTkVOVC0xNzGAQ09NUE9ORU5ULTE3MIBDT01QT05FTlQtMTY5gENPTVBPTkVOVC0xNjiAQ09NUE9ORU5ULTE2N4BDT01QT05FTlQtMTY2gENPTVBPTkVOVC0xNjWAQ09NUE9ORU5ULTE2NIBDT01QT05FTlQtMTYzgENPTVBPTkVOVC0xNjKAQ09NUE9ORU5ULTE2MYBDT01QT05FTlQtMTYwgENPTVBPTkVOVC0xNTmAQ09NUE9ORU5ULTE1OIBDT01QT05FTlQtMTU3gENPTVBPTkVOVC0xNTaAQ09NUE9ORU5ULTE1NYBDT01QT05FTlQtMTU0gENPTVBPTkVOVC0xNTOAQ09NUE9ORU5ULTE1MoBDT01QT05FTlQtMTUxgENPTVBPTkVOVC0xNTCAQ09NUE9ORU5ULTE0OYBDT01QT05FTlQtMTQ4gENPTVBPTkVOVC0xNDeAQ09NUE9ORU5ULTE0NoBDT01QT05FTlQtMTQ1gENPTVBPTkVOVC0xNDSAQ09NUE9ORU5ULTE0M4BDT01QT05FTlQtMTQygENPTVBPTkVOVC0xNDGAQ09NUE9ORU5ULTE0MIBDT01QT05FTlQtMTM5gENPTVBPTkVOVC0xMziAQ09NUE9ORU5ULTEzN4BDT01QT05FTlQtMTM2gENPTVBPTkVOVC0xMzWAQ09NUE9ORU5ULTEzNIBDT01QT05FTlQtMTMzgENPTVBPTkVOVC0xMzKAQ09NUE9ORU5ULTEzMYBDT01QT05FTlQtMTMwgENPTVBPTkVOVC0xMjmAQ09NUE9ORU5ULTEyOIBDT01QT05FTlQtMTI3gENPTVBPTkVOVC0xMjaAQ09NUE9ORU5ULTEyNYBDT01QT05FTlQtMTI0gENPTVBPTkVOVC0xMjOAQ09NUE9ORU5ULTEyMoBDT01QT05FTlQtMTIxgENPTVBPTkVOVC0xMjCAQ09NUE9ORU5ULTExOYBDT01QT05FTlQtMTE4gENPTVBPTkVOVC0xMTeAQ09NUE9ORU5ULTExNoBDT01QT05FTlQtMTE1gENPTVBPTkVOVC0xMTSAQ09NUE9ORU5ULTExM4BDT01QT05FTlQtMTEygENPTVBPTkVOVC0xMTGAQ09NUE9ORU5ULTExMIBDT01QT05FTlQtMTA5gENPTVBPTkVOVC0xMDiAQ09NUE9ORU5ULTEwN4BDT01QT05FTlQtMTA2gENPTVBPTkVOVC0xMDWAQ09NUE9ORU5ULTEwNIBDT01QT05FTlQtMTAzgENPTVBPTkVOVC0xMDKAQ09NUE9ORU5ULTEwMYBDT01QT05FTlQtMTAwgENPTVBPTkVOVC0wOTmAQ09NUE9ORU5ULTA5OIBDT01QT05FTlQtMDk3gENPTVBPTkVOVC0wOTaAQ09NUE9ORU5ULTA5NYBDT01QT05FTlQtMDk0gENPTVBPTkVOVC0wOTOAQ09NUE9ORU5ULTA5MoBDT01QT05FTlQtMDkxgENPTVBPTkVOVC0wOTCAQ09NUE9ORU5ULTA4OYBDT01QT05FTlQtMDg4gENPTVBPTkVOVC0wODeAQ09NUE9ORU5ULTA4NoBDT01QT05FTlQtMDg1gENPTVBPTkVOVC0wODSAQ09NUE9ORU5ULTA4M4BDT01QT05FTlQtMDgygENPTVBPTkVOVC0wODGAQ09NUE9ORU5ULTA4MIBDT01QT05FTlQtMDc5gENPTVBPTkVOVC0wNziAQ09NUE9ORU5ULTA3N4BDT01QT05FTlQtMDc2gENPTVBPTkVOVC0wNzWAQ09NUE9ORU5ULTA3NIBDT01QT05FTlQtMDczgENPTVBPTkVOVC0wNzKAQ09NUE9ORU5ULTA3MYBDT01QT05FTlQtMDcwgENPTVBPTkVOVC0wNjmAQ09NUE9ORU5ULTA2OIBDT01QT05FTlQtMDY3gENPTVBPTkVOVC0wNjaAQ09NUE9ORU5ULTA2NYBDT01QT05FTlQtMDY0gENPTVBPTkVOVC0wNjOAQ09NUE9ORU5ULTA2MoBDT01QT05FTlQtMDYxgENPTVBPTkVOVC0wNjCAQ09NUE9ORU5ULTA1OYBDT01QT05FTlQtMDU4gENPTVBPTkVOVC0wNTeAQ09NUE9ORU5ULTA1NoBDT01QT05FTlQtMDU1gENPTVBPTkVOVC0wNTSAQ09NUE9ORU5ULTA1M4BDT01QT05FTlQtMDUygENPTVBPTkVOVC0wNTGAQ09NUE9ORU5ULTA1MIBDT01QT05FTlQtMDQ5gENPTVBPTkVOVC0wNDiAQ09NUE9ORU5ULTA0N4BDT01QT05FTlQtMDQ2gENPTVBPTkVOVC0wNDWAQ09NUE9ORU5ULTA0NIBDT01QT05FTlQtMDQzgENPTVBPTkVOVC0wNDKAQ09NUE9ORU5ULTA0MYBDT01QT05FTlQtMDQwgENPTVBPTkVOVC0wMzmAQ09NUE9ORU5ULTAzOIBDT01QT05FTlQtMDM3gENPTVBPTkVOVC0wMzaAQ09NUE9ORU5ULTAzNYBDT01QT05FTlQtMDM0gENPTVBPTkVOVC0wMzOAQ09NUE9ORU5ULTAzMoBDT01QT05FTlQtMDMxgENPTVBPTkVOVC0wMzCAQ09NUE9ORU5ULTAyOYBDT01QT05FTlQtMDI4gENPTVBPTkVOVC0wMjeAQ09NUE9ORU5ULTAyNoBDT01QT05FTlQtMDI1gENPTVBPTkVOVC0wMjSAQ09NUE9ORU5ULTAyM4BDT01QT05FTlQtMDIygENPTVBPTkVOVC0wMjGAQ09NUE9ORU5ULTAyMIBDT01QT05FTlQtMDE5gENPTVBPTkVOVC0wMTiAQ09NUE9ORU5ULTAxN4BDT01QT05FTlQtMDE2gENPTVBPTkVOVC0wMTWAQ09NUE9ORU5ULTAxNIBDT01QT05FTlQtMDEzgENPTVBPTkVOVC0wMTKAQ09NUE9ORU5ULTAxMYBDT01QT05FTlQtMDEwgENPTVBPTkVOVC0wMDmAQ09NUE9ORU5ULTAwOIBDT01QT05FTlQtMDA3gENPTVBPTkVOVC0wMDaAQ09NUE9ORU5ULTAwNYBDT01QT05FTlQtMDA0gENPTVBPTkVOVC0wMDOAQ09NUE9ORU5ULTAwMoBDT01QT05FTlQtMDAxgENPTVBPTkVO1ENPTVBMSUFOQ0WAQ09NUExFVElPToBDT01QTEVURUSAQ09NUExFTUVOVIBDT01QQVNTgENPTVBBUkWAQ09NTU/OQ09NTUVSQ0lBzENPTU1BTkSAQ09NTUGAQ09NTcFDT01FVIBDT01CSU5FRIBDT01CSU5BVElPToBDT01CgENPTFVNToBDT0xPUoBDT0xMSVNJT85DT0xMgENPTMRDT0lOgENPRkZJToBDT0VOR4BDT0VOx0NPREGAQ09DT05VVIBDT0NLVEFJzENPQ0tST0FDSIBDT0FUgENPQVNURVKAQ09BgENNMzAygENNMzAxgENNMTE0gENNMTEygENNMTEwgENNMTA5gENNMTA4gENNMTA3gENNMTA1gENNMTA0gENNMTAzgENNMTAygENNMTAxgENNMTAwgENNMDk5gENNMDk4gENNMDk3gENNMDk2gENNMDk1gENNMDk0gENNMDkygENNMDkxgENNMDkwgENNMDg5gENNMDg4gENNMDg3gENNMDg2gENNMDg1gENNMDg0gENNMDgzgENNMDgygENNMDgxgENNMDgwgENNMDc5gENNMDc4gENNMDc2gENNMDc1QoBDTTA3NYBDTTA3NIBDTTA3M4BDTTA3MoBDTTA3MYBDTTA3MIBDTTA2OYBDTTA2OIBDTTA2N4BDTTA2NoBDTTA2NIBDTTA2M4BDTTA2MoBDTTA2MYBDTTA2MIBDTTA1OYBDTTA1OIBDTTA1NoBDTTA1NYBDTTA1NIBDTTA1M4BDTTA1MoBDTTA1MYBDTTA1MIBDTTA0OYBDTTA0N4BDTTA0NoBDTTA0NIBDTTA0MYBDTTA0MIBDTTAzOYBDTTAzOIBDTTAzN4BDTTAzNoBDTTAzNYBDTTAzNIBDTTAzM4BDTTAzMIBDTTAyOYBDTTAyOIBDTTAyN4BDTTAyNoBDTTAyNYBDTTAyNIBDTTAyM4BDTTAyMYBDTTAxOYBDTTAxN4BDTTAxNYBDTTAxM4BDTTAxMkKAQ00wMTKAQ00wMTGAQ00wMTCAQ00wMDmAQ00wMDiAQ00wMDeAQ00wMDaAQ00wMDWAQ00wMDSAQ00wMDKAQ00wMDGAQ02AQ81DTFVTVEVSLUlOSVRJQcxDTFVTVEVSLUZJTkHMQ0xVU1RF0kNMVUJTgENMVUItU1BPS0XEQ0xVQoBDTFXCQ0xPV85DTE9WRVKAQ0xPVUSAQ0xPVcRDTE9USEVTgENMT1RIgENMT1NFVIBDTE9TRU5FU1OAQ0xPU0VEgENMT1PFQ0xPQ0tXSVPFQ0xPQ8tDTElWSVOAQ0xJUEJPQVJEgENMSU5LSU7HQ0xJTkdJTsdDTElNQklOR4BDTElNQUNVU4BDTElGRoBDTElDS4BDTElDy0NMRUYtMoBDTEVGLTGAQ0xFRoBDTEXGQ0xFQVZFUoBDTEVB0kNMQVNTSUNBzENMQVBQSU7HQ0xBUFBF0kNMQU6AQ0xBzkNMQU1TSEVMzENMQUlNgENMgENJWIBDSVZJTElBToBDSVRZU0NBUEWAQ0lUWVNDQVDFQ0lUyUNJVEFUSU/OQ0lUgENJUkNV00NJUkNVTUZMRViAQ0lSQ1VNRkxF2ENJUkNVTEFUSU/OQ0lSQ0xJTkeAQ0lSQ0xJTsdDSVJDTEVTgENJUkNMRdNDSVJDTEVEgENJUIBDSU5OQUJBUoBDSU5FTUGAQ0nOQ0lNgENJzUNJSYBDSUVYgENJRVVDLVNTQU5HUElFVVCAQ0lFVUMtUElFVVCAQ0lFVUMtSUVVTkeAQ0lFVcNDSUVUgENJRVCAQ0lFgENIWViAQ0hZVIBDSFlSWIBDSFlSgENIWVCAQ0hXVoBDSFVYgENIVVJYgENIVVJDSIBDSFVSgENIVVCAQ0hVT1iAQ0hVT1SAQ0hVT1CAQ0hVT4BDSFVMQYBDSFWAQ0hSWVNBTlRIRU1VTYBDSFJPTk9VgENIUk9OT06AQ0hST03BQ0hST8FDSFJJVkmAQ0hSSVNUTUFTgENIUklTVE1B00NIT1mAQ0hPWIBDSE9UgENIT1JFVk3BQ0hPUkFTTUlBzkNIT1BTVElDS1OAQ0hPUIBDSE9LRYBDSE9FgENIT0NPTEFUxUNIT0GAQ0hJVFVFVU1TU0FOR1NJT1OAQ0hJVFVFVU1TU0FOR0NJRVVDgENISVRVRVVNU0lPU4BDSElUVUVVTUNJRVVDgENISVRVRVVNQ0hJRVVDSIBDSElST06AQ0hJUkVUgENISVBNVU5LgENISU5PT8tDSElOR4BDSElORVPFQ0hJToBDSElNRYBDSElNgENISUxM1UNISUxEUkXOQ0hJTESAQ0hJTIBDSElLyUNISUVVQ0gtS0hJRVVLSIBDSElFVUNILUhJRVVIgENISUVVQ8hDSElDS0VOgENISUNLgENISYBDSMlDSEhJTYBDSEhBgENIRViAQ0hFVlJPToBDSEVWUk/OQ0hFVIBDSEVTVE5VVIBDSEVTVIBDSEVT00NIRVJZgENIRVJS2UNIRVJSSUVTgENIRVFVRVJFxENIRVCAQ0hFTFlVU1RLQYBDSEVMTlWAQ0hFSU5BUIBDSEVJS0hFSYBDSEVJS0hBToBDSEVFU8VDSEVFUklOx0NIRUVNgENIRUVL00NIRUVLgENIRUWAQ0hFQ0tF0kNIRUNLgENIRUPLQ0jFQ0hBWIBDSEFWSVlBTkmAQ0hBVFRBV0GAQ0hBVIBDSEFTSEtBgENIQVNIS8FDSEFSVIBDSEFS1ENIQVJJT1SAQ0hBUklP1ENIQVJBQ1RFUlOAQ0hBUkFDVEVSLTFCMkZCgENIQVJBQ1RFUi0xQjJGQYBDSEFSQUNURVItMUIyRjmAQ0hBUkFDVEVSLTFCMkY4gENIQVJBQ1RFUi0xQjJGN4BDSEFSQUNURVItMUIyRjaAQ0hBUkFDVEVSLTFCMkY1gENIQVJBQ1RFUi0xQjJGNIBDSEFSQUNURVItMUIyRjOAQ0hBUkFDVEVSLTFCMkYygENIQVJBQ1RFUi0xQjJGMYBDSEFSQUNURVItMUIyRjCAQ0hBUkFDVEVSLTFCMkVGgENIQVJBQ1RFUi0xQjJFRYBDSEFSQUNURVItMUIyRUSAQ0hBUkFDVEVSLTFCMkVDgENIQVJBQ1RFUi0xQjJFQoBDSEFSQUNURVItMUIyRUGAQ0hBUkFDVEVSLTFCMkU5gENIQVJBQ1RFUi0xQjJFOIBDSEFSQUNURVItMUIyRTeAQ0hBUkFDVEVSLTFCMkU2gENIQVJBQ1RFUi0xQjJFNYBDSEFSQUNURVItMUIyRTSAQ0hBUkFDVEVSLTFCMkUzgENIQVJBQ1RFUi0xQjJFMoBDSEFSQUNURVItMUIyRTGAQ0hBUkFDVEVSLTFCMkUwgENIQVJBQ1RFUi0xQjJERoBDSEFSQUNURVItMUIyREWAQ0hBUkFDVEVSLTFCMkREgENIQVJBQ1RFUi0xQjJEQ4BDSEFSQUNURVItMUIyREKAQ0hBUkFDVEVSLTFCMkRBgENIQVJBQ1RFUi0xQjJEOYBDSEFSQUNURVItMUIyRDiAQ0hBUkFDVEVSLTFCMkQ3gENIQVJBQ1RFUi0xQjJENoBDSEFSQUNURVItMUIyRDWAQ0hBUkFDVEVSLTFCMkQ0gENIQVJBQ1RFUi0xQjJEM4BDSEFSQUNURVItMUIyRDKAQ0hBUkFDVEVSLTFCMkQxgENIQVJBQ1RFUi0xQjJEMIBDSEFSQUNURVItMUIyQ0aAQ0hBUkFDVEVSLTFCMkNFgENIQVJBQ1RFUi0xQjJDRIBDSEFSQUNURVItMUIyQ0OAQ0hBUkFDVEVSLTFCMkNCgENIQVJBQ1RFUi0xQjJDQYBDSEFSQUNURVItMUIyQzmAQ0hBUkFDVEVSLTFCMkM4gENIQVJBQ1RFUi0xQjJDN4BDSEFSQUNURVItMUIyQzaAQ0hBUkFDVEVSLTFCMkM1gENIQVJBQ1RFUi0xQjJDNIBDSEFSQUNURVItMUIyQzOAQ0hBUkFDVEVSLTFCMkMygENIQVJBQ1RFUi0xQjJDMYBDSEFSQUNURVItMUIyQzCAQ0hBUkFDVEVSLTFCMkJGgENIQVJBQ1RFUi0xQjJCRYBDSEFSQUNURVItMUIyQkSAQ0hBUkFDVEVSLTFCMkJDgENIQVJBQ1RFUi0xQjJCQoBDSEFSQUNURVItMUIyQkGAQ0hBUkFDVEVSLTFCMkI5gENIQVJBQ1RFUi0xQjJCOIBDSEFSQUNURVItMUIyQjeAQ0hBUkFDVEVSLTFCMkI2gENIQVJBQ1RFUi0xQjJCNYBDSEFSQUNURVItMUIyQjSAQ0hBUkFDVEVSLTFCMkIzgENIQVJBQ1RFUi0xQjJCMoBDSEFSQUNURVItMUIyQjGAQ0hBUkFDVEVSLTFCMkIwgENIQVJBQ1RFUi0xQjJBRoBDSEFSQUNURVItMUIyQUWAQ0hBUkFDVEVSLTFCMkFEgENIQVJBQ1RFUi0xQjJBQ4BDSEFSQUNURVItMUIyQUKAQ0hBUkFDVEVSLTFCMkFBgENIQVJBQ1RFUi0xQjJBOYBDSEFSQUNURVItMUIyQTiAQ0hBUkFDVEVSLTFCMkE3gENIQVJBQ1RFUi0xQjJBNoBDSEFSQUNURVItMUIyQTWAQ0hBUkFDVEVSLTFCMkE0gENIQVJBQ1RFUi0xQjJBM4BDSEFSQUNURVItMUIyQTKAQ0hBUkFDVEVSLTFCMkExgENIQVJBQ1RFUi0xQjJBMIBDSEFSQUNURVItMUIyOUaAQ0hBUkFDVEVSLTFCMjlFgENIQVJBQ1RFUi0xQjI5RIBDSEFSQUNURVItMUIyOUOAQ0hBUkFDVEVSLTFCMjlCgENIQVJBQ1RFUi0xQjI5QYBDSEFSQUNURVItMUIyOTmAQ0hBUkFDVEVSLTFCMjk4gENIQVJBQ1RFUi0xQjI5N4BDSEFSQUNURVItMUIyOTaAQ0hBUkFDVEVSLTFCMjk1gENIQVJBQ1RFUi0xQjI5NIBDSEFSQUNURVItMUIyOTOAQ0hBUkFDVEVSLTFCMjkygENIQVJBQ1RFUi0xQjI5MYBDSEFSQUNURVItMUIyOTCAQ0hBUkFDVEVSLTFCMjhGgENIQVJBQ1RFUi0xQjI4RYBDSEFSQUNURVItMUIyOESAQ0hBUkFDVEVSLTFCMjhDgENIQVJBQ1RFUi0xQjI4QoBDSEFSQUNURVItMUIyOEGAQ0hBUkFDVEVSLTFCMjg5gENIQVJBQ1RFUi0xQjI4OIBDSEFSQUNURVItMUIyODeAQ0hBUkFDVEVSLTFCMjg2gENIQVJBQ1RFUi0xQjI4NYBDSEFSQUNURVItMUIyODSAQ0hBUkFDVEVSLTFCMjgzgENIQVJBQ1RFUi0xQjI4MoBDSEFSQUNURVItMUIyODGAQ0hBUkFDVEVSLTFCMjgwgENIQVJBQ1RFUi0xQjI3RoBDSEFSQUNURVItMUIyN0WAQ0hBUkFDVEVSLTFCMjdEgENIQVJBQ1RFUi0xQjI3Q4BDSEFSQUNURVItMUIyN0KAQ0hBUkFDVEVSLTFCMjdBgENIQVJBQ1RFUi0xQjI3OYBDSEFSQUNURVItMUIyNziAQ0hBUkFDVEVSLTFCMjc3gENIQVJBQ1RFUi0xQjI3NoBDSEFSQUNURVItMUIyNzWAQ0hBUkFDVEVSLTFCMjc0gENIQVJBQ1RFUi0xQjI3M4BDSEFSQUNURVItMUIyNzKAQ0hBUkFDVEVSLTFCMjcxgENIQVJBQ1RFUi0xQjI3MIBDSEFSQUNURVItMUIyNkaAQ0hBUkFDVEVSLTFCMjZFgENIQVJBQ1RFUi0xQjI2RIBDSEFSQUNURVItMUIyNkOAQ0hBUkFDVEVSLTFCMjZCgENIQVJBQ1RFUi0xQjI2QYBDSEFSQUNURVItMUIyNjmAQ0hBUkFDVEVSLTFCMjY4gENIQVJBQ1RFUi0xQjI2N4BDSEFSQUNURVItMUIyNjaAQ0hBUkFDVEVSLTFCMjY1gENIQVJBQ1RFUi0xQjI2NIBDSEFSQUNURVItMUIyNjOAQ0hBUkFDVEVSLTFCMjYygENIQVJBQ1RFUi0xQjI2MYBDSEFSQUNURVItMUIyNjCAQ0hBUkFDVEVSLTFCMjVGgENIQVJBQ1RFUi0xQjI1RYBDSEFSQUNURVItMUIyNUSAQ0hBUkFDVEVSLTFCMjVDgENIQVJBQ1RFUi0xQjI1QoBDSEFSQUNURVItMUIyNUGAQ0hBUkFDVEVSLTFCMjU5gENIQVJBQ1RFUi0xQjI1OIBDSEFSQUNURVItMUIyNTeAQ0hBUkFDVEVSLTFCMjU2gENIQVJBQ1RFUi0xQjI1NYBDSEFSQUNURVItMUIyNTSAQ0hBUkFDVEVSLTFCMjUzgENIQVJBQ1RFUi0xQjI1MoBDSEFSQUNURVItMUIyNTGAQ0hBUkFDVEVSLTFCMjUwgENIQVJBQ1RFUi0xQjI0RoBDSEFSQUNURVItMUIyNEWAQ0hBUkFDVEVSLTFCMjREgENIQVJBQ1RFUi0xQjI0Q4BDSEFSQUNURVItMUIyNEKAQ0hBUkFDVEVSLTFCMjRBgENIQVJBQ1RFUi0xQjI0OYBDSEFSQUNURVItMUIyNDiAQ0hBUkFDVEVSLTFCMjQ3gENIQVJBQ1RFUi0xQjI0NoBDSEFSQUNURVItMUIyNDWAQ0hBUkFDVEVSLTFCMjQ0gENIQVJBQ1RFUi0xQjI0M4BDSEFSQUNURVItMUIyNDKAQ0hBUkFDVEVSLTFCMjQxgENIQVJBQ1RFUi0xQjI0MIBDSEFSQUNURVItMUIyM0aAQ0hBUkFDVEVSLTFCMjNFgENIQVJBQ1RFUi0xQjIzRIBDSEFSQUNURVItMUIyM0OAQ0hBUkFDVEVSLTFCMjNCgENIQVJBQ1RFUi0xQjIzQYBDSEFSQUNURVItMUIyMzmAQ0hBUkFDVEVSLTFCMjM4gENIQVJBQ1RFUi0xQjIzN4BDSEFSQUNURVItMUIyMzaAQ0hBUkFDVEVSLTFCMjM1gENIQVJBQ1RFUi0xQjIzNIBDSEFSQUNURVItMUIyMzOAQ0hBUkFDVEVSLTFCMjMygENIQVJBQ1RFUi0xQjIzMYBDSEFSQUNURVItMUIyMzCAQ0hBUkFDVEVSLTFCMjJGgENIQVJBQ1RFUi0xQjIyRYBDSEFSQUNURVItMUIyMkSAQ0hBUkFDVEVSLTFCMjJDgENIQVJBQ1RFUi0xQjIyQoBDSEFSQUNURVItMUIyMkGAQ0hBUkFDVEVSLTFCMjI5gENIQVJBQ1RFUi0xQjIyOIBDSEFSQUNURVItMUIyMjeAQ0hBUkFDVEVSLTFCMjI2gENIQVJBQ1RFUi0xQjIyNYBDSEFSQUNURVItMUIyMjSAQ0hBUkFDVEVSLTFCMjIzgENIQVJBQ1RFUi0xQjIyMoBDSEFSQUNURVItMUIyMjGAQ0hBUkFDVEVSLTFCMjIwgENIQVJBQ1RFUi0xQjIxRoBDSEFSQUNURVItMUIyMUWAQ0hBUkFDVEVSLTFCMjFEgENIQVJBQ1RFUi0xQjIxQ4BDSEFSQUNURVItMUIyMUKAQ0hBUkFDVEVSLTFCMjFBgENIQVJBQ1RFUi0xQjIxOYBDSEFSQUNURVItMUIyMTiAQ0hBUkFDVEVSLTFCMjE3gENIQVJBQ1RFUi0xQjIxNoBDSEFSQUNURVItMUIyMTWAQ0hBUkFDVEVSLTFCMjE0gENIQVJBQ1RFUi0xQjIxM4BDSEFSQUNURVItMUIyMTKAQ0hBUkFDVEVSLTFCMjExgENIQVJBQ1RFUi0xQjIxMIBDSEFSQUNURVItMUIyMEaAQ0hBUkFDVEVSLTFCMjBFgENIQVJBQ1RFUi0xQjIwRIBDSEFSQUNURVItMUIyMEOAQ0hBUkFDVEVSLTFCMjBCgENIQVJBQ1RFUi0xQjIwQYBDSEFSQUNURVItMUIyMDmAQ0hBUkFDVEVSLTFCMjA4gENIQVJBQ1RFUi0xQjIwN4BDSEFSQUNURVItMUIyMDaAQ0hBUkFDVEVSLTFCMjA1gENIQVJBQ1RFUi0xQjIwNIBDSEFSQUNURVItMUIyMDOAQ0hBUkFDVEVSLTFCMjAygENIQVJBQ1RFUi0xQjIwMYBDSEFSQUNURVItMUIyMDCAQ0hBUkFDVEVSLTFCMUZGgENIQVJBQ1RFUi0xQjFGRYBDSEFSQUNURVItMUIxRkSAQ0hBUkFDVEVSLTFCMUZDgENIQVJBQ1RFUi0xQjFGQoBDSEFSQUNURVItMUIxRkGAQ0hBUkFDVEVSLTFCMUY5gENIQVJBQ1RFUi0xQjFGOIBDSEFSQUNURVItMUIxRjeAQ0hBUkFDVEVSLTFCMUY2gENIQVJBQ1RFUi0xQjFGNYBDSEFSQUNURVItMUIxRjSAQ0hBUkFDVEVSLTFCMUYzgENIQVJBQ1RFUi0xQjFGMoBDSEFSQUNURVItMUIxRjGAQ0hBUkFDVEVSLTFCMUYwgENIQVJBQ1RFUi0xQjFFRoBDSEFSQUNURVItMUIxRUWAQ0hBUkFDVEVSLTFCMUVEgENIQVJBQ1RFUi0xQjFFQ4BDSEFSQUNURVItMUIxRUKAQ0hBUkFDVEVSLTFCMUVBgENIQVJBQ1RFUi0xQjFFOYBDSEFSQUNURVItMUIxRTiAQ0hBUkFDVEVSLTFCMUU3gENIQVJBQ1RFUi0xQjFFNoBDSEFSQUNURVItMUIxRTWAQ0hBUkFDVEVSLTFCMUU0gENIQVJBQ1RFUi0xQjFFM4BDSEFSQUNURVItMUIxRTKAQ0hBUkFDVEVSLTFCMUUxgENIQVJBQ1RFUi0xQjFFMIBDSEFSQUNURVItMUIxREaAQ0hBUkFDVEVSLTFCMURFgENIQVJBQ1RFUi0xQjFERIBDSEFSQUNURVItMUIxREOAQ0hBUkFDVEVSLTFCMURCgENIQVJBQ1RFUi0xQjFEQYBDSEFSQUNURVItMUIxRDmAQ0hBUkFDVEVSLTFCMUQ4gENIQVJBQ1RFUi0xQjFEN4BDSEFSQUNURVItMUIxRDaAQ0hBUkFDVEVSLTFCMUQ1gENIQVJBQ1RFUi0xQjFENIBDSEFSQUNURVItMUIxRDOAQ0hBUkFDVEVSLTFCMUQygENIQVJBQ1RFUi0xQjFEMYBDSEFSQUNURVItMUIxRDCAQ0hBUkFDVEVSLTFCMUNGgENIQVJBQ1RFUi0xQjFDRYBDSEFSQUNURVItMUIxQ0SAQ0hBUkFDVEVSLTFCMUNDgENIQVJBQ1RFUi0xQjFDQoBDSEFSQUNURVItMUIxQ0GAQ0hBUkFDVEVSLTFCMUM5gENIQVJBQ1RFUi0xQjFDOIBDSEFSQUNURVItMUIxQzeAQ0hBUkFDVEVSLTFCMUM2gENIQVJBQ1RFUi0xQjFDNYBDSEFSQUNURVItMUIxQzSAQ0hBUkFDVEVSLTFCMUMzgENIQVJBQ1RFUi0xQjFDMoBDSEFSQUNURVItMUIxQzGAQ0hBUkFDVEVSLTFCMUMwgENIQVJBQ1RFUi0xQjFCRoBDSEFSQUNURVItMUIxQkWAQ0hBUkFDVEVSLTFCMUJEgENIQVJBQ1RFUi0xQjFCQ4BDSEFSQUNURVItMUIxQkKAQ0hBUkFDVEVSLTFCMUJBgENIQVJBQ1RFUi0xQjFCOYBDSEFSQUNURVItMUIxQjiAQ0hBUkFDVEVSLTFCMUI3gENIQVJBQ1RFUi0xQjFCNoBDSEFSQUNURVItMUIxQjWAQ0hBUkFDVEVSLTFCMUI0gENIQVJBQ1RFUi0xQjFCM4BDSEFSQUNURVItMUIxQjKAQ0hBUkFDVEVSLTFCMUIxgENIQVJBQ1RFUi0xQjFCMIBDSEFSQUNURVItMUIxQUaAQ0hBUkFDVEVSLTFCMUFFgENIQVJBQ1RFUi0xQjFBRIBDSEFSQUNURVItMUIxQUOAQ0hBUkFDVEVSLTFCMUFCgENIQVJBQ1RFUi0xQjFBQYBDSEFSQUNURVItMUIxQTmAQ0hBUkFDVEVSLTFCMUE4gENIQVJBQ1RFUi0xQjFBN4BDSEFSQUNURVItMUIxQTaAQ0hBUkFDVEVSLTFCMUE1gENIQVJBQ1RFUi0xQjFBNIBDSEFSQUNURVItMUIxQTOAQ0hBUkFDVEVSLTFCMUEygENIQVJBQ1RFUi0xQjFBMYBDSEFSQUNURVItMUIxQTCAQ0hBUkFDVEVSLTFCMTlGgENIQVJBQ1RFUi0xQjE5RYBDSEFSQUNURVItMUIxOUSAQ0hBUkFDVEVSLTFCMTlDgENIQVJBQ1RFUi0xQjE5QoBDSEFSQUNURVItMUIxOUGAQ0hBUkFDVEVSLTFCMTk5gENIQVJBQ1RFUi0xQjE5OIBDSEFSQUNURVItMUIxOTeAQ0hBUkFDVEVSLTFCMTk2gENIQVJBQ1RFUi0xQjE5NYBDSEFSQUNURVItMUIxOTSAQ0hBUkFDVEVSLTFCMTkzgENIQVJBQ1RFUi0xQjE5MoBDSEFSQUNURVItMUIxOTGAQ0hBUkFDVEVSLTFCMTkwgENIQVJBQ1RFUi0xQjE4RoBDSEFSQUNURVItMUIxOEWAQ0hBUkFDVEVSLTFCMThEgENIQVJBQ1RFUi0xQjE4Q4BDSEFSQUNURVItMUIxOEKAQ0hBUkFDVEVSLTFCMThBgENIQVJBQ1RFUi0xQjE4OYBDSEFSQUNURVItMUIxODiAQ0hBUkFDVEVSLTFCMTg3gENIQVJBQ1RFUi0xQjE4NoBDSEFSQUNURVItMUIxODWAQ0hBUkFDVEVSLTFCMTg0gENIQVJBQ1RFUi0xQjE4M4BDSEFSQUNURVItMUIxODKAQ0hBUkFDVEVSLTFCMTgxgENIQVJBQ1RFUi0xQjE4MIBDSEFSQUNURVItMUIxN0aAQ0hBUkFDVEVSLTFCMTdFgENIQVJBQ1RFUi0xQjE3RIBDSEFSQUNURVItMUIxN0OAQ0hBUkFDVEVSLTFCMTdCgENIQVJBQ1RFUi0xQjE3QYBDSEFSQUNURVItMUIxNzmAQ0hBUkFDVEVSLTFCMTc4gENIQVJBQ1RFUi0xQjE3N4BDSEFSQUNURVItMUIxNzaAQ0hBUkFDVEVSLTFCMTc1gENIQVJBQ1RFUi0xQjE3NIBDSEFSQUNURVItMUIxNzOAQ0hBUkFDVEVSLTFCMTcygENIQVJBQ1RFUi0xQjE3MYBDSEFSQUNURVItMUIxNzCAQ0hBUkFDVEVSLTE4Q0Q1gENIQVJBQ1RFUi0xOENENIBDSEFSQUNURVItMThDRDOAQ0hBUkFDVEVSLTE4Q0QygENIQVJBQ1RFUi0xOENEMYBDSEFSQUNURVItMThDRDCAQ0hBUkFDVEVSLTE4Q0NGgENIQVJBQ1RFUi0xOENDRYBDSEFSQUNURVItMThDQ0SAQ0hBUkFDVEVSLTE4Q0NDgENIQVJBQ1RFUi0xOENDQoBDSEFSQUNURVItMThDQ0GAQ0hBUkFDVEVSLTE4Q0M5gENIQVJBQ1RFUi0xOENDOIBDSEFSQUNURVItMThDQzeAQ0hBUkFDVEVSLTE4Q0M2gENIQVJBQ1RFUi0xOENDNYBDSEFSQUNURVItMThDQzSAQ0hBUkFDVEVSLTE4Q0MzgENIQVJBQ1RFUi0xOENDMoBDSEFSQUNURVItMThDQzGAQ0hBUkFDVEVSLTE4Q0MwgENIQVJBQ1RFUi0xOENCRoBDSEFSQUNURVItMThDQkWAQ0hBUkFDVEVSLTE4Q0JEgENIQVJBQ1RFUi0xOENCQ4BDSEFSQUNURVItMThDQkKAQ0hBUkFDVEVSLTE4Q0JBgENIQVJBQ1RFUi0xOENCOYBDSEFSQUNURVItMThDQjiAQ0hBUkFDVEVSLTE4Q0I3gENIQVJBQ1RFUi0xOENCNoBDSEFSQUNURVItMThDQjWAQ0hBUkFDVEVSLTE4Q0I0gENIQVJBQ1RFUi0xOENCM4BDSEFSQUNURVItMThDQjKAQ0hBUkFDVEVSLTE4Q0IxgENIQVJBQ1RFUi0xOENCMIBDSEFSQUNURVItMThDQUaAQ0hBUkFDVEVSLTE4Q0FFgENIQVJBQ1RFUi0xOENBRIBDSEFSQUNURVItMThDQUOAQ0hBUkFDVEVSLTE4Q0FCgENIQVJBQ1RFUi0xOENBQYBDSEFSQUNURVItMThDQTmAQ0hBUkFDVEVSLTE4Q0E4gENIQVJBQ1RFUi0xOENBN4BDSEFSQUNURVItMThDQTaAQ0hBUkFDVEVSLTE4Q0E1gENIQVJBQ1RFUi0xOENBNIBDSEFSQUNURVItMThDQTOAQ0hBUkFDVEVSLTE4Q0EygENIQVJBQ1RFUi0xOENBMYBDSEFSQUNURVItMThDQTCAQ0hBUkFDVEVSLTE4QzlGgENIQVJBQ1RFUi0xOEM5RYBDSEFSQUNURVItMThDOUSAQ0hBUkFDVEVSLTE4QzlDgENIQVJBQ1RFUi0xOEM5QoBDSEFSQUNURVItMThDOUGAQ0hBUkFDVEVSLTE4Qzk5gENIQVJBQ1RFUi0xOEM5OIBDSEFSQUNURVItMThDOTeAQ0hBUkFDVEVSLTE4Qzk2gENIQVJBQ1RFUi0xOEM5NYBDSEFSQUNURVItMThDOTSAQ0hBUkFDVEVSLTE4QzkzgENIQVJBQ1RFUi0xOEM5MoBDSEFSQUNURVItMThDOTGAQ0hBUkFDVEVSLTE4QzkwgENIQVJBQ1RFUi0xOEM4RoBDSEFSQUNURVItMThDOEWAQ0hBUkFDVEVSLTE4QzhEgENIQVJBQ1RFUi0xOEM4Q4BDSEFSQUNURVItMThDOEKAQ0hBUkFDVEVSLTE4QzhBgENIQVJBQ1RFUi0xOEM4OYBDSEFSQUNURVItMThDODiAQ0hBUkFDVEVSLTE4Qzg3gENIQVJBQ1RFUi0xOEM4NoBDSEFSQUNURVItMThDODWAQ0hBUkFDVEVSLTE4Qzg0gENIQVJBQ1RFUi0xOEM4M4BDSEFSQUNURVItMThDODKAQ0hBUkFDVEVSLTE4QzgxgENIQVJBQ1RFUi0xOEM4MIBDSEFSQUNURVItMThDN0aAQ0hBUkFDVEVSLTE4QzdFgENIQVJBQ1RFUi0xOEM3RIBDSEFSQUNURVItMThDN0OAQ0hBUkFDVEVSLTE4QzdCgENIQVJBQ1RFUi0xOEM3QYBDSEFSQUNURVItMThDNzmAQ0hBUkFDVEVSLTE4Qzc4gENIQVJBQ1RFUi0xOEM3N4BDSEFSQUNURVItMThDNzaAQ0hBUkFDVEVSLTE4Qzc1gENIQVJBQ1RFUi0xOEM3NIBDSEFSQUNURVItMThDNzOAQ0hBUkFDVEVSLTE4QzcygENIQVJBQ1RFUi0xOEM3MYBDSEFSQUNURVItMThDNzCAQ0hBUkFDVEVSLTE4QzZGgENIQVJBQ1RFUi0xOEM2RYBDSEFSQUNURVItMThDNkSAQ0hBUkFDVEVSLTE4QzZDgENIQVJBQ1RFUi0xOEM2QoBDSEFSQUNURVItMThDNkGAQ0hBUkFDVEVSLTE4QzY5gENIQVJBQ1RFUi0xOEM2OIBDSEFSQUNURVItMThDNjeAQ0hBUkFDVEVSLTE4QzY2gENIQVJBQ1RFUi0xOEM2NYBDSEFSQUNURVItMThDNjSAQ0hBUkFDVEVSLTE4QzYzgENIQVJBQ1RFUi0xOEM2MoBDSEFSQUNURVItMThDNjGAQ0hBUkFDVEVSLTE4QzYwgENIQVJBQ1RFUi0xOEM1RoBDSEFSQUNURVItMThDNUWAQ0hBUkFDVEVSLTE4QzVEgENIQVJBQ1RFUi0xOEM1Q4BDSEFSQUNURVItMThDNUKAQ0hBUkFDVEVSLTE4QzVBgENIQVJBQ1RFUi0xOEM1OYBDSEFSQUNURVItMThDNTiAQ0hBUkFDVEVSLTE4QzU3gENIQVJBQ1RFUi0xOEM1NoBDSEFSQUNURVItMThDNTWAQ0hBUkFDVEVSLTE4QzU0gENIQVJBQ1RFUi0xOEM1M4BDSEFSQUNURVItMThDNTKAQ0hBUkFDVEVSLTE4QzUxgENIQVJBQ1RFUi0xOEM1MIBDSEFSQUNURVItMThDNEaAQ0hBUkFDVEVSLTE4QzRFgENIQVJBQ1RFUi0xOEM0RIBDSEFSQUNURVItMThDNEOAQ0hBUkFDVEVSLTE4QzRCgENIQVJBQ1RFUi0xOEM0QYBDSEFSQUNURVItMThDNDmAQ0hBUkFDVEVSLTE4QzQ4gENIQVJBQ1RFUi0xOEM0N4BDSEFSQUNURVItMThDNDaAQ0hBUkFDVEVSLTE4QzQ1gENIQVJBQ1RFUi0xOEM0NIBDSEFSQUNURVItMThDNDOAQ0hBUkFDVEVSLTE4QzQygENIQVJBQ1RFUi0xOEM0MYBDSEFSQUNURVItMThDNDCAQ0hBUkFDVEVSLTE4QzNGgENIQVJBQ1RFUi0xOEMzRYBDSEFSQUNURVItMThDM0SAQ0hBUkFDVEVSLTE4QzNDgENIQVJBQ1RFUi0xOEMzQoBDSEFSQUNURVItMThDM0GAQ0hBUkFDVEVSLTE4QzM5gENIQVJBQ1RFUi0xOEMzOIBDSEFSQUNURVItMThDMzeAQ0hBUkFDVEVSLTE4QzM2gENIQVJBQ1RFUi0xOEMzNYBDSEFSQUNURVItMThDMzSAQ0hBUkFDVEVSLTE4QzMzgENIQVJBQ1RFUi0xOEMzMoBDSEFSQUNURVItMThDMzGAQ0hBUkFDVEVSLTE4QzMwgENIQVJBQ1RFUi0xOEMyRoBDSEFSQUNURVItMThDMkWAQ0hBUkFDVEVSLTE4QzJEgENIQVJBQ1RFUi0xOEMyQ4BDSEFSQUNURVItMThDMkKAQ0hBUkFDVEVSLTE4QzJBgENIQVJBQ1RFUi0xOEMyOYBDSEFSQUNURVItMThDMjiAQ0hBUkFDVEVSLTE4QzI3gENIQVJBQ1RFUi0xOEMyNoBDSEFSQUNURVItMThDMjWAQ0hBUkFDVEVSLTE4QzI0gENIQVJBQ1RFUi0xOEMyM4BDSEFSQUNURVItMThDMjKAQ0hBUkFDVEVSLTE4QzIxgENIQVJBQ1RFUi0xOEMyMIBDSEFSQUNURVItMThDMUaAQ0hBUkFDVEVSLTE4QzFFgENIQVJBQ1RFUi0xOEMxRIBDSEFSQUNURVItMThDMUOAQ0hBUkFDVEVSLTE4QzFCgENIQVJBQ1RFUi0xOEMxQYBDSEFSQUNURVItMThDMTmAQ0hBUkFDVEVSLTE4QzE4gENIQVJBQ1RFUi0xOEMxN4BDSEFSQUNURVItMThDMTaAQ0hBUkFDVEVSLTE4QzE1gENIQVJBQ1RFUi0xOEMxNIBDSEFSQUNURVItMThDMTOAQ0hBUkFDVEVSLTE4QzEygENIQVJBQ1RFUi0xOEMxMYBDSEFSQUNURVItMThDMTCAQ0hBUkFDVEVSLTE4QzBGgENIQVJBQ1RFUi0xOEMwRYBDSEFSQUNURVItMThDMESAQ0hBUkFDVEVSLTE4QzBDgENIQVJBQ1RFUi0xOEMwQoBDSEFSQUNURVItMThDMEGAQ0hBUkFDVEVSLTE4QzA5gENIQVJBQ1RFUi0xOEMwOIBDSEFSQUNURVItMThDMDeAQ0hBUkFDVEVSLTE4QzA2gENIQVJBQ1RFUi0xOEMwNYBDSEFSQUNURVItMThDMDSAQ0hBUkFDVEVSLTE4QzAzgENIQVJBQ1RFUi0xOEMwMoBDSEFSQUNURVItMThDMDGAQ0hBUkFDVEVSLTE4QzAwgENIQVJBQ1RFUi0xOEJGRoBDSEFSQUNURVItMThCRkWAQ0hBUkFDVEVSLTE4QkZEgENIQVJBQ1RFUi0xOEJGQ4BDSEFSQUNURVItMThCRkKAQ0hBUkFDVEVSLTE4QkZBgENIQVJBQ1RFUi0xOEJGOYBDSEFSQUNURVItMThCRjiAQ0hBUkFDVEVSLTE4QkY3gENIQVJBQ1RFUi0xOEJGNoBDSEFSQUNURVItMThCRjWAQ0hBUkFDVEVSLTE4QkY0gENIQVJBQ1RFUi0xOEJGM4BDSEFSQUNURVItMThCRjKAQ0hBUkFDVEVSLTE4QkYxgENIQVJBQ1RFUi0xOEJGMIBDSEFSQUNURVItMThCRUaAQ0hBUkFDVEVSLTE4QkVFgENIQVJBQ1RFUi0xOEJFRIBDSEFSQUNURVItMThCRUOAQ0hBUkFDVEVSLTE4QkVCgENIQVJBQ1RFUi0xOEJFQYBDSEFSQUNURVItMThCRTmAQ0hBUkFDVEVSLTE4QkU4gENIQVJBQ1RFUi0xOEJFN4BDSEFSQUNURVItMThCRTaAQ0hBUkFDVEVSLTE4QkU1gENIQVJBQ1RFUi0xOEJFNIBDSEFSQUNURVItMThCRTOAQ0hBUkFDVEVSLTE4QkUygENIQVJBQ1RFUi0xOEJFMYBDSEFSQUNURVItMThCRTCAQ0hBUkFDVEVSLTE4QkRGgENIQVJBQ1RFUi0xOEJERYBDSEFSQUNURVItMThCRESAQ0hBUkFDVEVSLTE4QkRDgENIQVJBQ1RFUi0xOEJEQoBDSEFSQUNURVItMThCREGAQ0hBUkFDVEVSLTE4QkQ5gENIQVJBQ1RFUi0xOEJEOIBDSEFSQUNURVItMThCRDeAQ0hBUkFDVEVSLTE4QkQ2gENIQVJBQ1RFUi0xOEJENYBDSEFSQUNURVItMThCRDSAQ0hBUkFDVEVSLTE4QkQzgENIQVJBQ1RFUi0xOEJEMoBDSEFSQUNURVItMThCRDGAQ0hBUkFDVEVSLTE4QkQwgENIQVJBQ1RFUi0xOEJDRoBDSEFSQUNURVItMThCQ0WAQ0hBUkFDVEVSLTE4QkNEgENIQVJBQ1RFUi0xOEJDQ4BDSEFSQUNURVItMThCQ0KAQ0hBUkFDVEVSLTE4QkNBgENIQVJBQ1RFUi0xOEJDOYBDSEFSQUNURVItMThCQziAQ0hBUkFDVEVSLTE4QkM3gENIQVJBQ1RFUi0xOEJDNoBDSEFSQUNURVItMThCQzWAQ0hBUkFDVEVSLTE4QkM0gENIQVJBQ1RFUi0xOEJDM4BDSEFSQUNURVItMThCQzKAQ0hBUkFDVEVSLTE4QkMxgENIQVJBQ1RFUi0xOEJDMIBDSEFSQUNURVItMThCQkaAQ0hBUkFDVEVSLTE4QkJFgENIQVJBQ1RFUi0xOEJCRIBDSEFSQUNURVItMThCQkOAQ0hBUkFDVEVSLTE4QkJCgENIQVJBQ1RFUi0xOEJCQYBDSEFSQUNURVItMThCQjmAQ0hBUkFDVEVSLTE4QkI4gENIQVJBQ1RFUi0xOEJCN4BDSEFSQUNURVItMThCQjaAQ0hBUkFDVEVSLTE4QkI1gENIQVJBQ1RFUi0xOEJCNIBDSEFSQUNURVItMThCQjOAQ0hBUkFDVEVSLTE4QkIygENIQVJBQ1RFUi0xOEJCMYBDSEFSQUNURVItMThCQjCAQ0hBUkFDVEVSLTE4QkFGgENIQVJBQ1RFUi0xOEJBRYBDSEFSQUNURVItMThCQUSAQ0hBUkFDVEVSLTE4QkFDgENIQVJBQ1RFUi0xOEJBQoBDSEFSQUNURVItMThCQUGAQ0hBUkFDVEVSLTE4QkE5gENIQVJBQ1RFUi0xOEJBOIBDSEFSQUNURVItMThCQTeAQ0hBUkFDVEVSLTE4QkE2gENIQVJBQ1RFUi0xOEJBNYBDSEFSQUNURVItMThCQTSAQ0hBUkFDVEVSLTE4QkEzgENIQVJBQ1RFUi0xOEJBMoBDSEFSQUNURVItMThCQTGAQ0hBUkFDVEVSLTE4QkEwgENIQVJBQ1RFUi0xOEI5RoBDSEFSQUNURVItMThCOUWAQ0hBUkFDVEVSLTE4QjlEgENIQVJBQ1RFUi0xOEI5Q4BDSEFSQUNURVItMThCOUKAQ0hBUkFDVEVSLTE4QjlBgENIQVJBQ1RFUi0xOEI5OYBDSEFSQUNURVItMThCOTiAQ0hBUkFDVEVSLTE4Qjk3gENIQVJBQ1RFUi0xOEI5NoBDSEFSQUNURVItMThCOTWAQ0hBUkFDVEVSLTE4Qjk0gENIQVJBQ1RFUi0xOEI5M4BDSEFSQUNURVItMThCOTKAQ0hBUkFDVEVSLTE4QjkxgENIQVJBQ1RFUi0xOEI5MIBDSEFSQUNURVItMThCOEaAQ0hBUkFDVEVSLTE4QjhFgENIQVJBQ1RFUi0xOEI4RIBDSEFSQUNURVItMThCOEOAQ0hBUkFDVEVSLTE4QjhCgENIQVJBQ1RFUi0xOEI4QYBDSEFSQUNURVItMThCODmAQ0hBUkFDVEVSLTE4Qjg4gENIQVJBQ1RFUi0xOEI4N4BDSEFSQUNURVItMThCODaAQ0hBUkFDVEVSLTE4Qjg1gENIQVJBQ1RFUi0xOEI4NIBDSEFSQUNURVItMThCODOAQ0hBUkFDVEVSLTE4QjgygENIQVJBQ1RFUi0xOEI4MYBDSEFSQUNURVItMThCODCAQ0hBUkFDVEVSLTE4QjdGgENIQVJBQ1RFUi0xOEI3RYBDSEFSQUNURVItMThCN0SAQ0hBUkFDVEVSLTE4QjdDgENIQVJBQ1RFUi0xOEI3QoBDSEFSQUNURVItMThCN0GAQ0hBUkFDVEVSLTE4Qjc5gENIQVJBQ1RFUi0xOEI3OIBDSEFSQUNURVItMThCNzeAQ0hBUkFDVEVSLTE4Qjc2gENIQVJBQ1RFUi0xOEI3NYBDSEFSQUNURVItMThCNzSAQ0hBUkFDVEVSLTE4QjczgENIQVJBQ1RFUi0xOEI3MoBDSEFSQUNURVItMThCNzGAQ0hBUkFDVEVSLTE4QjcwgENIQVJBQ1RFUi0xOEI2RoBDSEFSQUNURVItMThCNkWAQ0hBUkFDVEVSLTE4QjZEgENIQVJBQ1RFUi0xOEI2Q4BDSEFSQUNURVItMThCNkKAQ0hBUkFDVEVSLTE4QjZBgENIQVJBQ1RFUi0xOEI2OYBDSEFSQUNURVItMThCNjiAQ0hBUkFDVEVSLTE4QjY3gENIQVJBQ1RFUi0xOEI2NoBDSEFSQUNURVItMThCNjWAQ0hBUkFDVEVSLTE4QjY0gENIQVJBQ1RFUi0xOEI2M4BDSEFSQUNURVItMThCNjKAQ0hBUkFDVEVSLTE4QjYxgENIQVJBQ1RFUi0xOEI2MIBDSEFSQUNURVItMThCNUaAQ0hBUkFDVEVSLTE4QjVFgENIQVJBQ1RFUi0xOEI1RIBDSEFSQUNURVItMThCNUOAQ0hBUkFDVEVSLTE4QjVCgENIQVJBQ1RFUi0xOEI1QYBDSEFSQUNURVItMThCNTmAQ0hBUkFDVEVSLTE4QjU4gENIQVJBQ1RFUi0xOEI1N4BDSEFSQUNURVItMThCNTaAQ0hBUkFDVEVSLTE4QjU1gENIQVJBQ1RFUi0xOEI1NIBDSEFSQUNURVItMThCNTOAQ0hBUkFDVEVSLTE4QjUygENIQVJBQ1RFUi0xOEI1MYBDSEFSQUNURVItMThCNTCAQ0hBUkFDVEVSLTE4QjRGgENIQVJBQ1RFUi0xOEI0RYBDSEFSQUNURVItMThCNESAQ0hBUkFDVEVSLTE4QjRDgENIQVJBQ1RFUi0xOEI0QoBDSEFSQUNURVItMThCNEGAQ0hBUkFDVEVSLTE4QjQ5gENIQVJBQ1RFUi0xOEI0OIBDSEFSQUNURVItMThCNDeAQ0hBUkFDVEVSLTE4QjQ2gENIQVJBQ1RFUi0xOEI0NYBDSEFSQUNURVItMThCNDSAQ0hBUkFDVEVSLTE4QjQzgENIQVJBQ1RFUi0xOEI0MoBDSEFSQUNURVItMThCNDGAQ0hBUkFDVEVSLTE4QjQwgENIQVJBQ1RFUi0xOEIzRoBDSEFSQUNURVItMThCM0WAQ0hBUkFDVEVSLTE4QjNEgENIQVJBQ1RFUi0xOEIzQ4BDSEFSQUNURVItMThCM0KAQ0hBUkFDVEVSLTE4QjNBgENIQVJBQ1RFUi0xOEIzOYBDSEFSQUNURVItMThCMziAQ0hBUkFDVEVSLTE4QjM3gENIQVJBQ1RFUi0xOEIzNoBDSEFSQUNURVItMThCMzWAQ0hBUkFDVEVSLTE4QjM0gENIQVJBQ1RFUi0xOEIzM4BDSEFSQUNURVItMThCMzKAQ0hBUkFDVEVSLTE4QjMxgENIQVJBQ1RFUi0xOEIzMIBDSEFSQUNURVItMThCMkaAQ0hBUkFDVEVSLTE4QjJFgENIQVJBQ1RFUi0xOEIyRIBDSEFSQUNURVItMThCMkOAQ0hBUkFDVEVSLTE4QjJCgENIQVJBQ1RFUi0xOEIyQYBDSEFSQUNURVItMThCMjmAQ0hBUkFDVEVSLTE4QjI4gENIQVJBQ1RFUi0xOEIyN4BDSEFSQUNURVItMThCMjaAQ0hBUkFDVEVSLTE4QjI1gENIQVJBQ1RFUi0xOEIyNIBDSEFSQUNURVItMThCMjOAQ0hBUkFDVEVSLTE4QjIygENIQVJBQ1RFUi0xOEIyMYBDSEFSQUNURVItMThCMjCAQ0hBUkFDVEVSLTE4QjFGgENIQVJBQ1RFUi0xOEIxRYBDSEFSQUNURVItMThCMUSAQ0hBUkFDVEVSLTE4QjFDgENIQVJBQ1RFUi0xOEIxQoBDSEFSQUNURVItMThCMUGAQ0hBUkFDVEVSLTE4QjE5gENIQVJBQ1RFUi0xOEIxOIBDSEFSQUNURVItMThCMTeAQ0hBUkFDVEVSLTE4QjE2gENIQVJBQ1RFUi0xOEIxNYBDSEFSQUNURVItMThCMTSAQ0hBUkFDVEVSLTE4QjEzgENIQVJBQ1RFUi0xOEIxMoBDSEFSQUNURVItMThCMTGAQ0hBUkFDVEVSLTE4QjEwgENIQVJBQ1RFUi0xOEIwRoBDSEFSQUNURVItMThCMEWAQ0hBUkFDVEVSLTE4QjBEgENIQVJBQ1RFUi0xOEIwQ4BDSEFSQUNURVItMThCMEKAQ0hBUkFDVEVSLTE4QjBBgENIQVJBQ1RFUi0xOEIwOYBDSEFSQUNURVItMThCMDiAQ0hBUkFDVEVSLTE4QjA3gENIQVJBQ1RFUi0xOEIwNoBDSEFSQUNURVItMThCMDWAQ0hBUkFDVEVSLTE4QjA0gENIQVJBQ1RFUi0xOEIwM4BDSEFSQUNURVItMThCMDKAQ0hBUkFDVEVSLTE4QjAxgENIQVJBQ1RFUi0xOEIwMIBDSEFSQUNURVKAQ0hBUkFDVEXSQ0hBUoBDSEFQVEVSgENIQVCAQ0hBTkeAQ0hBToBDSEFNS0+AQ0hBTUlMT06AQ0hBTUlMSYBDSEHNQ0hBS03BQ0hBSU5TgENIQURBgENIQcRDSEFBgENHSoBDRViAQ0VWSVRVgENFUkVTgENFUkVNT05ZgENFUkVLgENFUi1XQYBDRVCAQ0VPTkdDSElFVU1TU0FOR1NJT1OAQ0VPTkdDSElFVU1TU0FOR0NJRVVDgENFT05HQ0hJRVVNU0lPU4BDRU9OR0NISUVVTUNJRVVDgENFT05HQ0hJRVVNQ0hJRVVDSIBDRU5UVVJJQcxDRU5UUkVMSU7FQ0VOVFJFRIBDRU5UUkXEQ0VOVFJFgENFTlRSxUNFTlRSQUxJWkFUSU/OQ0VOgENFTFRJw0NFTFNJVVOAQ0VMRUJSQVRJT06AQ0VJUlSAQ0VJTElOR4BDRUlMSU7HQ0VFVoBDRUVCgENFRYBDRURJTExBgENFRElMTMFDRUTJQ0VDRUuAQ0VDQUuAQ0VDQctDRUFMQ4BDQ1WAQ0NPgENDSYBDQ0hVgENDSE+AQ0NISYBDQ0hIVYBDQ0hIT4BDQ0hISYBDQ0hIRUWAQ0NISEWAQ0NISEFBgENDSEhBgENDSEVFgENDSEWAQ0NIQUGAQ0NIQYBDQ0iAQ0NFRYBDQ0FBgENBWU6AQ0FZQU5OQYBDQViAQ0FWRYBDQVVUSU/OQ0FVTERST06AQ0FVREFUxUNBVURBgENBVUNBU0lBzkNBVYBDQVRBV0GAQ0FUgENB1ENBU1RMRYBDQVNLRdRDQVJZU1RJQc5DQVJUV0hFRUyAQ0FSVFJJREdFgENBUlSAQ0FS00NBUlJPVIBDQVJSSUFHxUNBUlBFTlRS2UNBUtBDQVJPVVNFzENBUk9OgENBUk/OQ0FSSctDQVJJQc5DQVJFVIBDQVJF1ENBUsVDQVJEU4BDQVLEQ0FSgENB0kNBUFXUQ0FQVElWRYBDQVBSSUNPUk6AQ0FQUEXEQ0FQT4BDQVBJVFVMVU2AQ0FQSVRBTIBDQU5USUxMQVRJT85DQU5PRYBDQU5OT06AQ0FOTkXEQ0FOx0NBTkWAQ0FORFmAQ0FORFJBQklORFWAQ0FORFJBQklORNVDQU5EUkGAQ0FORFLBQ0FORExFgENBTkNFUoBDQU5DRUxMQVRJT85DQU5DRUyAQ0FOQ0XMQ0FOgENBTVBJTkeAQ0FNTlXDQ0FNRVJBgENBTUVSwUNBTUVMgENBTFlBgENBTFnBQ0FMWIBDQUxMgENBTMxDQUxFTkRBUoBDQUxFTkRB0kNBTENVTEFUT1KAQ0FMQ4BDQUtSQYBDQUvFQ0FJgENBSIBDQUVTVVJBgENBRFVDRVVTgENBRMFDQUNUVVOAQ0FCTEVXQVmAQ0FCSU5FVIBDQUJCQUdFLVRSRUWAQ0FBTkeAQ0FBSYBDwUMwMjSAQzAyM4BDMDIygEMwMjGAQzAyMIBDMDE5gEMwMTiAQzAxN4BDMDE2gEMwMTWAQzAxNIBDMDEzgEMwMTKAQzAxMYBDMDEwQYBDMDEwgEMwMDmAQzAwOIBDMDA3gEMwMDaAQzAwNYBDMDA0gEMwMDOAQzAwMkOAQzAwMkKAQzAwMkGAQzAwMoBDMDAxgEMtU0lNUExJRklFxEMtMzmAQy0xOIBCWlVOx0JaSMlCWVTFQllFTE9SVVNTSUFOLVVLUkFJTklBzkJYR4BCV0mAQldFRYBCV0WAQldBgEJVVU1JU0iAQlVUVE9OgEJVVFRPzkJVVFRFUkZMWYBCVVRURVKAQlXUQlVTVNNCVVPUQlVTU1lFUlWAQlVTSU5FU9NCVdNCVVLVQlVSUklUT4BCVVIygEJV0kJVT1mAQlVPWIBCVU9QgEJVTk7ZQlVOR4BCVU1Q2UJVTFVHgEJVTFXHQlVMTFNFWUWAQlVMTNNCVUxMSE9SToBCVUxMSE9SzkJVTExFVIBCVUxMRdRCVUxMgEJVTEKAQlVLWYBCVUlMRElOR1OAQlVJTERJTkeAQlVJTERJTsdCVUhJxEJVR0lORVPFQlVHgEJVRkZBTE+AQlVEgEJVQ0tMRYBCVUNLRVSAQlVCQkxFU4BCVUJCTEWAQlVCQkzFQlNUQVKAQlNLVdJCU0tBrUJTRFXTQlJVU8hCUk9XzkJST09NgEJST05aRYBCUk9LRc5CUk9DQ09MSYBCUk9BxEJSSVNUTEWAQlJJR0hUTkVT00JSSUVGU4BCUklFRkNBU0WAQlJJREfFQlJJRMVCUklDS4BCUkmAQlJFVklTgEJSRVZFLU1BQ1JPToBCUkVWxUJSRUFUSNlCUkVBVMhCUkVBU1QtRkVFRElOR4BCUkVBS1RIUk9VR0iAQlJEwUJSQU5DSElOx0JSQU5DSEVTgEJSQU5DSIBCUkFOQ8hCUkFLQ0VUgEJSQUlOgEJSQUNLRVTTQlJBQ0tFVEXEQlJBQ0tFVIBCUkFDS0XUQlJBQ0WAQlGAQlBIgEJPWdNCT1mAQk9YSU7HQk9XVElFgEJPV1RJxUJPV0xJTkeAQk9XTIBCT1fMQk9XSU7HQk/XQk9VUVVFVIBCT1VRVUXUQk9VTkRBUtlCT1RUT00tU0hBREXEQk9UVE9NLUxJR0hURcRCT1RUT02AQk9UVE/NQk9UVExFgEJPVFRMxUJPVMhCT1JaWYBCT1JaQVlBgEJPUlVUT4BCT1JBWC0zgEJPUkFYLTKAQk9SQViAQk9QT01PRs9CT09UU4BCT09UgEJPT01FUkFOR4BCT09LU4BCT09LTUFSS4BCT09LTUFSy0JPTkWAQk9NQoBCT02AQk9MVIBCT0zUQk9IQUlSScNCT0RZgEJPRNlCT0FSgEJPQYBCTFVFQkVSUklFU4BCTFVFgEJMVcVCTE9XSU7HQkxPV0ZJU0iAQkxP10JMT1NTT02AQkxPT0SAQkxPTsRCTE9DSy03gEJMT0NLLTaAQkxPQ0stNYBCTE9DSy00gEJMT0NLLTOAQkxPQ0stMoBCTE9DSy0xMzU4gEJMT0NLgEJMSU7LQkxBTkuAQkxBTstCTEFExUJMQUNLTEVUVEXSQkxBQ0tGT0/UQkxBQ0stTEVUVEXSQkxBQ0stRkVBVEhFUkXEQkxBQ0uAQktBrUJJVFRFUoBCSVRJTsdCSVTFQklUQ09JzkJJU09OgEJJU01VVMhCSVNNSUxMQchCSVNIT9BCSVNFQ1RJTsdCSVNBSIBCSVJVgEJJUlRIREHZQklSR0GAQklSR8FCSVJEgEJJT0hBWkFSxEJJTk9WSUxFgEJJTk9DVUxB0kJJTkRJTsdCSU5ESYBCSU5BUtlCSUxMSU9OU4BCSUxMSUFSRFOAQklMTEXEQklMQUJJQcxCSUtJTkmAQklHgEJJx0JJRVSAQklERU5UQcxCSURBS1VPzkJJQ1lDTElTVIBCSUNZQ0xFU4BCSUNZQ0xFgEJJQ0VQU4BCSUJMRS1DUkXFQklCgELJQkhVgEJIT0+AQkhPgEJISYBCSEVUSIBCSEVFgEJIRYBCSEFUVElQUk9M1UJIQU2AQkhBSUtTVUvJQkhBQYBCSEGAQkVZWUFMgEJFWIBCRVZFUkFHRYBCRVZFUkFHxUJFVFdFRU6AQkVUV0VFzkJFVEiAQkVUQYBCRVTBQkXUQkVTSUTFQkVSS0FOQc5CRVJCRdJCRVCAQkVPUsNCRU5aRU7FQkVOVM9CRU5UgEJFTtRCRU5HQUzJQkVOREWAQkVORIBCRU7EQkXOQkVMVIBCRUzUQkVMT9dCRUxMSE/QQkVMTIBCRUzMQkVMR1RIT9JCRUlUSIBCRUhJTsRCRUhFSIBCRUhFyEJFSIBCRchCRUdJTk5JTkeAQkVHSU5ORVKAQkVHSc5CRUZPUsVCRUVUTEWAQkVFVEGAQkVF0kJFRUhJVkWAQkVFSIBCRUXIQkVDQVVTRYBCRUFWRVKAQkVBVkXSQkVBVElOx0JFQVSAQkVBUkRFxEJFQVKAQkVB0kJFQU5TgEJFQU6AQkVBTUXEQkVBRFOAQkVBQ8hCQ0FEgEJDQcRCQllYgEJCWVSAQkJZUIBCQlmAQkJVWIBCQlVUgEJCVVJYgEJCVVKAQkJVUIBCQlVPWIBCQlVPUIBCQlVPgEJCVYBCQk9YgEJCT1SAQkJPUIBCQk+AQkJJWIBCQklQgEJCSUVYgEJCSUVUgEJCSUVQgEJCSUWAQkJJgEJCRViAQkJFUIBCQkVFgEJCQViAQkJBVIBCQkFQgEJCQUGAQkFZQU5OQYBCQVWAQkFUVEVSWYBCQVRIVFVCgEJBVEhBTUFTQVSAQkFUSIBCQVTIQkFUQctCQVNTQYBCQVNTwUJBU0tFVEJBTMxCQVNIS0nSQkFTSIBCQVNFTElOxUJBU0VCQUxMgEJBU0WAQkFTxUJBUlOAQkFS00JBUlJJRVKAQkFSUkVLSIBCQVJSRUWAQkFSUkXFQkFSTElORYBCQVJMRVmAQkFSSVlPT1NBToBCQVJCRdJCQVJBMoBCQdJCQU5UT0OAQkFOS05PVMVCQU5LgEJBTstCQU5KT4BCQU5EgEJBTkFOQYBCQU4ygEJBTrJCQU1CT09TgEJBTUJPT4BCQUxVREGAQkFMTFBPSU7UQkFMTE9UgEJBTExP1EJBTExPT04tU1BPS0XEQkFMTE9PToBCQUxMRdRCQUxEgEJBTEFHgEJBTIBCQcxCQUlSS0FOgEJBSU1BSYBCQUhUgEJBSElSR09NVUtIQYBCQUhBUjKAQkFIQVKyQkFIgEJBR1VFVFTFQkFHU4BCQUdHQUfFQkFHRUyAQkFHQYBCQUczgEJBx0JBRE1JTlRPzkJBREdFUoBCQURHRYBCQcRCQUNUUklBzkJBQ09OgEJBQ0tXQVJEgEJBQ0tTUEFDRYBCQUNLU0xBU0iAQkFDS1NMQVPIQkFDS1NMQU5URcRCQUNLSEFOxEJBQ0stVElMVEXEQkFDS4BCQUPLQkFCWYBCQULZQkFBUkVSVYBCQS0ygEIzMDWAQjI1tEIyNLdCMjSzQjI0skIyNLFCMjSwQjIzs0IyM7FCMjOwQjIytUIyMrBCMTmxQjE3tkIxN7NCMTY5gEIxNjiAQjE2N4BCMTY2gEIxNjWAQjE2NIBCMTazQjE2skIxNjGAQjE2MIBCMTW5QjE1OIBCMTU3gEIxNbZCMTU1gEIxNTSAQjE1M4BCMTUygEIxNbFCMTUwgEIxNDaAQjE0tUIxNDKAQjE0sUIxNLBCMTO1QjEzs0IxMzKAQjEzsUIxM7BCMTK4QjEyt0IxMrVCMTKzQjEyskIxMrFCMTKwQjEwOc1CMTA5xkIxMDjNQjEwOMZCMTA3zUIxMDfGQjEwNs1CMTA2xkIxMDXNQjEwNcZCMTC1QjEwtEIxMLJCMTCwQjA5sUIwObBCMDg5gEIwOLdCMDg2gEIwOLVCMDgzgEIwODKAQjA4sUIwOLBCMDc5gEIwN7hCMDe3QjA3tkIwN7VCMDe0QjA3s0IwN7JCMDexQjA3sEIwNrlCMDa4QjA2t0IwNrZCMDa1QjA2NIBCMDYzgEIwNrJCMDaxQjA2sEIwNblCMDW4QjA1t0IwNTaAQjA1tUIwNbRCMDWzQjA1skIwNbFCMDWwQjA0OYBCMDS4QjA0N4BCMDS2QjA0tUIwNLRCMDSzQjA0skIwNLFCMDSwQjAzuUIwM7hCMDO3QjAztkIwMzSAQjAzs0IwM7JCMDOxQjAzsEIwMrlCMDK4QjAyt0IwMrZCMDK1QjAytEIwMrNCMDIygEIwMrFCMDKwQjAxOYBCMDE4gEIwMbdCMDG2QjAxtUIwMbRCMDGzQjAxskIwMbFCMDGwQjAwOYBCMDC5QjAwOIBCMDC4QjAwN4BCMDC3QjAwNoBCMDC2QjAwNUGAQjAwNYBCMDC1QjAwNIBCMDC0QjAwM4BCMDCzQjAwMoBCMDCyQjAwMYBCMDCxQVpawUFaVYBBWUKAQVlBSIBBWEWAQVdagEFXWIBBV1GAQVdFgEFXQ4BBV0HZQVZPQ0FET4BBVkVTVEHOQVZFUkFHxUFWQUtSQUhBU0FOWUGAQVZBR1JBSEGAQVVZQU5OQYBBVVRVTU6AQVVUT01PQklMRYBBVVRPTUFURcRBVVTPQVVTVFJBzEFVUklQSUdNRU5UgEFVUkFNQVpEQUFIQYBBVVJBTUFaREFBLTKAQVVSQU1BWkRBQYBBVU5OgEFVR1VTVIBBVUdNRU5UQVRJT85BVUWAQVVCRVJHSU5FgEFUVEnDQVRUSEFDQU6AQVRURU5USU9OgEFUVEHLQVRUQUNISU7HQVRUQUNIRcRBVE/NQVROQchBVE1BQVWAQVRJWUGAQVRJVYBBVElLUkFNQYBBVEhMRVRJw0FUSEFSVkFWRURJw0FUSEFQQVNDQc5BVEgtVEhBTEFUSEGAQVNagEFTWVVSwUFTWU1QVE9USUNBTEzZQVNUUk9OT01JQ0HMQVNUUk9MT0dJQ0HMQVNUUkFFQYBBU1RPTklTSEXEQVNURVJJU02AQVNURVJJU0vTQVNURVJJU0uAQVNURVJJU8tBU1RFUklTQ1VTgEFTU1lSSUHOQVNTRVJUSU9OgEFTUElSQVRJT06AQVNQSVJBVEXEQVNQRVKAQVNJQS1BVVNUUkFMSUGAQVNIR0FCgEFTSEVTgEFTSDmAQVNIM4BBU0iyQVNDScFBU0NFTlSAQVNDRU5ESU7HQVNBTDKAQVMtU0FMQUFU1UFTLVNBSkRBgEFSVUhVQYBBUlTTQVJUSVPUQVJUSUNVTEFURcRBUlRBQsVBUlRBgEFSU0VPU4BBUlNFT9NBUlNFTklDgEFSUk9XU4BBUlJPV9NBUlJPV0hFQURTgEFSUk9XSEVBRC1TSEFQRcRBUlJPV0hFQUSAQVJST1dIRUHEQVJST1ctVEFJTIBBUlJJVklOR4BBUlJJVkWAQVJSQVmAQVJQRUdHSUFUz0FST1VTSU7HQVJPVVLBQVJPVU5ELVBST0ZJTEWAQVJPVU7EQVJNWYBBUk3TQVJNT1VSgEFSTUVOSUHOQVJNgEFSzUFSTEFVx0FSS1RJS89BUktBQoBBUktBQU5VgEFSSVNURVJBgEFSSVNURVLBQVJJRVOAQVJHT1RFUkmAQVJHT1NZTlRIRVRPToBBUkdJgEFSRVBBgEFSRUGAQVJESEFWSVNBUkdBgEFSREhBQ0FORFJBgEFSQ0hBSU9OgEFSQ0hBSU/OQVJDSEFJw0FSQ8hBUkOAQVLDQVJBTUFJw0FSQUVBRYBBUkFFQS1VgEFSQUVBLUmAQVJBRUEtRU+AQVJBRUEtRYBBUkFFQS1BgEFSQUSAQVJBxEFSQUJJQy1JTkRJw0FSQUJJQc5BUi1SVUKAQVItUkFITUHOQVItUkFIRUVNgEFRVUFSSVVTgEFRVUFGT1JUSVOAQVFVwUFQVc5BUFJJTIBBUFBST1hJTUFURUzZQVBQUk9YSU1BVEWAQVBQUk9BQ0hF00FQUFJPQUNIgEFQUExJQ0FUSU9OgEFQUExJQ0FUSU/OQVBPVEhFU4BBUE9USEVNQYBBUE9TVFJPUEhFgEFQT1NUUk9GT1OAQVBPU1RST0ZP00FQT1NUUk9GT8lBUE9MTE9OgEFQT0RFWElBgEFQT0RFUk3BQVBMT1VOgEFQTMlBUMxBUElOgEFQRVPPQVBDgEFQQVJUgEFQQUFUT4BBT1WAQU9SgEFOVVNWQVJBWUGAQU5VU1ZBUkGAQU5VU1ZBUsFBTlVEQVRUQYBBTlVEQVRUwUFOVElSRVNUUklDVElPToBBTlRJTU9OWS0ygEFOVElNT05ZgEFOVElNT07ZQU5USU1PTklBVEWAQU5USUtFTk9NQYBBTlRJS0VOT0tZTElTTUGAQU5USUZPTklBgEFOVElDTE9DS1dJU0UtUk9UQVRFxEFOVElDTE9DS1dJU0WAQU5USUNMT0NLV0lTxUFOVEVOTkGAQU5URU5OwUFOVEFSR09NVUtIQYBBTlNV2kFOU0hFgEFOUEVBgEFOz0FOTlVJVNlBTk5PVEFUSU/OQU5OQUFVgEFOS0iAQU5KSYBBTklNQUyAQU5IVU5OQYBBTkhVTUFBgEFOSFVNgEFOSFWAQU5IQUGAQU5IgEFOR1VMQVKAQU5HVUlTSEXEQU5HU1RST81BTkdS2UFOR0xJQ0FOwUFOR0xFRIBBTkdMRcRBTkdLSEFOS0hVgEFOR0tBgEFOR0XSQU5HRUyAQU5HRUSAQU5EQVCAQU5DT1JBgEFOQ0hPUoBBTkFUUklDSElTTUGAQU5BVE9NSUNBzEFOQVCAQU4tTklTRoBBTVVMRVSAQU1QU4BBTVBIT1JBgEFNUEVSU0FORIBBTVBFUlNBTsRBTU9VTtRBTUVSSUNBU4BBTUVSSUNBzkFNQlVMQU5DRYBBTULBQU1CgEFNQVKAQU1B0kFNQUxHQU1BVElPzkFNQUxHQU2AQUxWRU9MQdJBTFVNgEFMVEVSTkFUSVbFQUxURVJOQVRJT85BTFRFUk5BVElOR4BBTFRFUk5BVElOx0FMVEVSTkFURYBBTFRFUk5BVMVBTFRBgEFMUEhBgEFMUEjBQUxQQVBSQU5BgEFMUEFQUkFBTsFBTFBBgEFMTU9T1EFMTE+AQUxMSUFOQ0WAQUxMyUFMTEHIQUxMQUFIgEFMS0FMSS0ygEFMS0FMSYBBTElHTkXEQUxJRlWAQUxJRoBBTEnGQUxJRU6AQUxJRc5BTEdJ2kFMRkGAQUxFVdRBTEVSVIBBTEVQSIBBTEVNQklDgEFMRUaAQUxCQU5JQc5BTEFZTkFBgEFMQVlISU1BwUFMQVlISc1BTEFZSMlBTEFZSEWAQUxBWUjFQUxBWUhBwUFMQVLNQUxBUEiAQUwtTEFLVU5BgEFMLUpVWoBBS1VS1UFLVElFU0VMU0tBQoBBS1NBgEFLSE1JTUnDQUtCQdJBS0FSQYBBS0FSwUFJWUFOTkGAQUlWSUxJy0FJVkGAQUlUT85BSVJQTEFORYBBSVJQTEFOxUFJTtVBSU5OgEFJTE2AQUlLQVJBgEFJSFZVU4BBSFNEQYBBSFNBgEFIT81BSEFOx0FIQUdHQdJBSEFEgEFHVU5HgEFHT0fJQUdHUkFWQVRJT06AQUdHUkFWQVRFxEFHQUlOU9RBR0FJToBBRlRF0kFGU0FBUYBBRlJJQ0HOQUZPUkVNRU5USU9ORUSAQUZHSEFOyUFGRlJJQ0FUSU/OQUZGSdhBRVlBTk5BgEFFWYBBRVNDVUxBUElVU4BBRVNDgEFFU4BBRVJJQcxBRVKAQUVMQS1QSUxMQYBBRUyAQUVLgEFFR0VBzkFFR4BBRUVZQU5OQYBBRUWAQUVEQS1QSUxMQYBBRUSAQUVCgEFEVkFOVEFHRYBBRFZBTkNFgEFEVUxUgEFETUlTU0lPzkFETUVUT1OAQURMQc1BREhFU0lWxUFERUeAQURFx0FERFJFU1NFxEFERFJFU9NBRERBS4BBREHLQUNVVEUtTUFDUk9OgEFDVVRFLUdSQVZFLUFDVVRFgEFDVVTFQUNUVUFMTNlBQ1RJVkFUxUFDUk9QSE9OScNBQ0tOT1dMRURHRYBBQ0NVTVVMQVRJT06AQUNDT1VO1EFDQ09SRElPToBBQ0NPTU1PREFUSU9OgEFDQ0VQVIBBQ0NFTlQtU1RBQ0NBVE+AQUNDRU5UgEFDQ0VO1EFDQURFTdlBQllTTUHMQUJVTkRBTkNFgEFCS0hBU0lBzkFCQlJFVklBVElPzkFCQUZJTEmAQUJBQ1VTgEFCskFCMTkxgEFCMTg4gEFCMTgwgEFCMTcxgEFCMTY0gEFCMTMxQoBBQjEzMUGAQUIxMjOAQUIxMjKAQUIxMjCAQUIxMTiAQUIwODeAQUIwODaAQUIwODWAQUIwODKAQUIwODGAQUIwODCAQUIwNzmAQUIwNziAQUIwNzeAQUIwNzaAQUIwNzSAQUIwNzOAQUIwNzCAQUIwNjmAQUIwNjeAQUIwNjaAQUIwNjWAQUIwNjGAQUIwNjCAQUIwNTmAQUIwNTiAQUIwNTeAQUIwNTaAQUIwNTWAQUIwNTSAQUIwNTOAQUIwNTGAQUIwNTCAQUIwNDmAQUIwNDiAQUIwNDeAQUIwNDaAQUIwNDWAQUIwNDSAQUIwNDGAQUIwNDCAQUIwMzmAQUIwMziAQUIwMzeAQUIwMzSAQUIwMzGAQUIwMzCAQUIwMjmAQUIwMjiAQUIwMjeAQUIwMjaAQUIwMjSAQUIwMjNNgEFCMDIzgEFCMDIyTYBBQjAyMkaAQUIwMjKAQUIwMjFNgEFCMDIxRoBBQjAyMYBBQjAyMIBBQjAxN4BBQjAxNoBBQjAxM4BBQjAxMYBBQjAxMIBBQjAwOYBBQjAwOIBBQjAwN4BBQjAwNoBBQjAwNYBBQjAwNIBBQjAwM4BBQjAwMoBBQjAwMYBBQVpIQUFLS1WAQUFZSU6AQUFZQU5OQYBBQVmAQUFXgEFBT4BBQUqAQUFCQUFGSUxJgEFBMDMygEFBMDMxgEFBMDMwgEFBMDI5gEFBMDI4gEFBMDI3gEFBMDI2gEFBMDI1gEFBMDI0gEFBMDIzgEFBMDIygEFBMDIxgEFBMDIwgEFBMDE5gEFBMDE4gEFBMDE3gEFBMDE2gEFBMDE1gEFBMDE0gEFBMDEzgEFBMDEygEFBMDExgEFBMDEwgEFBMDA5gEFBMDA4gEFBMDA3QoBBQTAwN0GAQUEwMDeAQUEwMDaAQUEwMDWAQUEwMDSAQUEwMDOAQUEwMDKAQUEwMDGAQTgwN4BBODA2gEE4MDWAQTgwNIBBODAzgEE4MDKAQTgwMYBBODAwgEE3M7JBNzK2QTcxt0E3MbVBNzG0QTcxs0E3MbJBNzGxQTcxsEE3MDkttkE3MDkttEE3MDkts0E3MDktskE3MLlBNzC4QTcwt0E3MLZBNzC1QTcwtEE3MLNBNzCyQTcwsUE2NjSAQTY2M4BBNjYygEE2NjGAQTY2MIBBNjU5gEE2NTiAQTY1N4BBNjU2gEE2NTWAQTY1NIBBNjUzgEE2NTKAQTY1MYBBNjQ5gEE2NDiAQTY0NoBBNjQ1gEE2NDSAQTY0M4BBNjQygEE2NDCAQTYzOIBBNjM3gEE2MzSAQTYyOYBBNjI4gEE2MjeAQTYyNoBBNjI0gEE2MjOAQTYyMoBBNjIxgEE2MjCAQTYxOYBBNjE4gEE2MTeAQTYxNoBBNjE1gEE2MTSAQTYxM4BBNjEygEE2MTGAQTYxMIBBNjA5gEE2MDiAQTYwNoBBNjA0gEE2MDOAQTYwMoBBNjAxgEE2MDCAQTU5OIBBNTk2gEE1OTWAQTU5NIBBNTkygEE1OTGAQTU4OYBBNTg4gEE1ODeAQTU4NoBBNTg1gEE1ODSAQTU4M4BBNTgygEE1ODGAQTU4MIBBNTc5gEE1NziAQTU3N4BBNTc2gEE1NzWAQTU3NIBBNTczgEE1NzKAQTU3MYBBNTcwgEE1NjmAQTU2OIBBNTY2gEE1NjWAQTU2NIBBNTYzgEE1NTmAQTU1N4BBNTU2gEE1NTWAQTU1NIBBNTUzgEE1NTKAQTU1MYBBNTUwgEE1NDmAQTU0OIBBNTQ3gEE1NDWAQTU0MoBBNTQxgEE1NDCAQTUzOYBBNTM4gEE1MzeAQTUzNoBBNTM1gEE1MzSAQTUzMoBBNTMxgEE1MzCAQTUyOYBBNTI4gEE1MjeAQTUyNoBBNTI1gEE1MjSAQTUyM4BBNTIygEE1MjGAQTUyMIBBNTE5gEE1MTiAQTUxN4BBNTE2gEE1MTWAQTUxNIBBNTEzgEE1MTKAQTUxMYBBNTEwgEE1MDmAQTUwOIBBNTA3gEE1MDaAQTUwNYBBNTA0gEE1MDOAQTUwMoBBNTAxgEE0OTeAQTQ5NoBBNDk1gEE0OTSAQTQ5M4BBNDkygEE0OTGAQTQ5MIBBNDg5gEE0ODiAQTQ4N4BBNDg2gEE0ODWAQTQ4NIBBNDgzgEE0ODKAQTQ4MYBBNDgwgEE0NzmAQTQ3OIBBNDc3gEE0NzaAQTQ3NYBBNDc0gEE0NzOAQTQ3MoBBNDcxgEE0NzCAQTQ2OYBBNDY4gEE0NjeAQTQ2NoBBNDY1gEE0NjSAQTQ2M4BBNDYygEE0NjGAQTQ2MIBBNDU5gEE0NTiAQTQ1N0GAQTQ1N4BBNDU2gEE0NTWAQTQ1NIBBNDUzgEE0NTKAQTQ1MYBBNDUwQYBBNDUwgEE0NDmAQTQ0OIBBNDQ3gEE0NDaAQTQ0NYBBNDQ0gEE0NDOAQTQ0MoBBNDQxgEE0NDCAQTQzOYBBNDM4gEE0MzeAQTQzNoBBNDM1gEE0MzSAQTQzM4BBNDMygEE0MzGAQTQzMIBBNDI5gEE0MjiAQTQyN4BBNDI2gEE0MjWAQTQyNIBBNDIzgEE0MjKAQTQyMYBBNDIwgEE0MTmAQTQxOC1WQVOAQTQxOIBBNDE3LVZBU4BBNDE3gEE0MTYtVkFTgEE0MTaAQTQxNS1WQVOAQTQxNYBBNDE0LVZBU4BBNDE0gEE0MTMtVkFTgEE0MTOAQTQxMi1WQVOAQTQxMoBBNDExLVZBU4BBNDExgEE0MTDBQTQxMC1WQVOAQTQxsEE0MDktVkFTgEE0MDmAQTQwOC1WQVOAQTQwOIBBNDA3LVZBU4BBNDA3gEE0MDYtVkFTgEE0MDaAQTQwNS1WQVOAQTQwNYBBNDA0LVZBU4BBNDA0gEE0MDMtVkFTgEE0MDOAQTQwMi1WQVOAQTQwMoBBNDAxLVZBU4BBNDAxgEE0MDAtVkFTgEE0MDCAQTM5OYBBMzk4gEEzOTeAQTM5NoBBMzk1gEEzOTSAQTM5s0EzOTKAQTM5MYBBMzkwgEEzODmAQTM4OIBBMzg3gEEzODZBgEEzODaAQTM4NYBBMzg0gEEzODNBgEEzOLNBMzgygEEzODFBgEEzODGAQTM4MIBBMzc5gEEzNziAQTM3N4BBMzc2gEEzNzWAQTM3NIBBMzczgEEzNzKAQTM3MUGAQTM3MYBBMzcwgEEzNjmAQTM2OEGAQTM2OIBBMzY3gEEzNjaAQTM2NYBBMzY0QYBBMzY0gEEzNjOAQTM2MoBBMzYxgEEzNjCAQTM1OUGAQTM1OYBBMzU4gEEzNTeAQTM1NoBBMzU1gEEzNTSAQTM1M4BBMzUygEEzNTGAQTM1MIBBMzQ5gEEzNDiAQTM0N4BBMzQ2gEEzNDWAQTM0NIBBMzQzgEEzNDKAQTM0MYBBMzQwgEEzMzmAQTMzOIBBMzM3gEEzMzZDgEEzMzZCgEEzMzZBgEEzMzaAQTMzNYBBMzM0gEEzMzOAQTMzMkOAQTMzMkKAQTMzMkGAQTMzMoBBMzMxgEEzMzCAQTMyOUGAQTMyOYBBMzI4gEEzMjeAQTMyNoBBMzI1gEEzMjSAQTMyM4BBMzIygEEzMjGAQTMyMIBBMzE5gEEzMTiAQTMxN4BBMzE2gEEzMTWAQTMxNIBBMzEzQ4BBMzEzQoBBMzEzQYBBMzEzgEEzMTKAQTMxMYBBMzEwgEEzMDlDgEEzMDlCgEEzMDlBgEEzMDmAQTMwOIBBMzA3gEEzMDaAQTMwNYBBMzA0gEEzMDOAQTMwMoBBMzAxgEEzMDCAQTI5OUGAQTI5OYBBMjk4gEEyOTeAQTI5NoBBMjk1gEEyOTRBgEEyOTSAQTI5M4BBMjkygEEyOTGAQTI5MIBBMjg5QYBBMjg5gEEyODiAQTI4N4BBMjg2gEEyODWAQTI4NIBBMjgzgEEyODKAQTI4MYBBMjgwgEEyNzmAQTI3OIBBMjc3gEEyNzaAQTI3NYBBMjc0gEEyNzOAQTI3MoBBMjcxgEEyNzCAQTI2OYBBMjY4gEEyNjdBgEEyNjeAQTI2NoBBMjY1gEEyNjSAQTI2M4BBMjYygEEyNjGAQTI2MIBBMjU5gEEyNTiAQTI1N4BBMjU2gEEyNTWAQTI1NIBBMjUzgEEyNTKAQTI1MYBBMjUwgEEyNDmAQTI0OIBBMjQ3gEEyNDaAQTI0NYBBMjQ0gEEyNDOAQTI0MoBBMjQxgEEyNDCAQTIzOYBBMjM4gEEyMzeAQTIzNoBBMjM1gEEyMzSAQTIzM4BBMjMygEEyMzGAQTIzMIBBMjI5gEEyMjiAQTIyN0GAQTIyN4BBMjI2gEEyMjWAQTIyNIBBMjIzgEEyMjKAQTIyMYBBMjIwgEEyMTmAQTIxOIBBMjE3gEEyMTZBgEEyMTaAQTIxNUGAQTIxNYBBMjE0gEEyMTOAQTIxMoBBMjExgEEyMTCAQTIwOUGAQTIwOYBBMjA4gEEyMDdBgEEyMDeAQTIwNoBBMjA1gEEyMDSAQTIwM4BBMjAyQoBBMjAyQYBBMjAygEEyMDGAQTIwMIBBMTk5gEExOTiAQTE5N4BBMTk2gEExOTWAQTE5NIBBMTkzgEExOTKAQTE5MYBBMTkwgEExODmAQTE4OIBBMTg3gEExODaAQTE4NYBBMTg0gEExODOAQTE4MoBBMTgxgEExODCAQTE3OYBBMTc4gEExNzeAQTE3NoBBMTc1gEExNzSAQTE3M4BBMTcygEExNzGAQTE3MIBBMTY5gEExNjiAQTE2N4BBMTY2gEExNjWAQTE2NIBBMTYzgEExNjKAQTE2MYBBMTYwgEExNTmAQTE1OIBBMTU3gEExNTaAQTE1NYBBMTU0gEExNTOAQTE1MoBBMTUxgEExNTCAQTE0OYBBMTQ4gEExNDeAQTE0NoBBMTQ1gEExNDSAQTE0M4BBMTQygEExNDGAQTE0MIBBMTM5gEExMziAQTEzN4BBMTM2gEExMzVBgEExMzWAQTEzNIBBMTMzgEExMzKAQTEzMUOAQTEzMYBBMTMwgEExMjmAQTEyOIBBMTI3gEExMjaAQTEyNUGAQTEyNYBBMTI0gEExMjOAQTEyMoBBMTIxgEExMjBCgEExMjCAQTExOYBBMTE4gEExMTeAQTExNoBBMTE1QYBBMTE1gEExMTSAQTExM4BBMTEygEExMTGAQTExMEKAQTExMEGAQTExMIBBMTA5gEExMDiAQTEwN0OAQTEwN0KAQTEwN0GAQTEwN4BBMTA2gEExMDVCgEExMDVBgEExMDWAQTEwNEOAQTEwNEKAQTEwNEGAQTEwNIBBMTAzgEExMDJBgEExMDKAQTEwMUGAQTEwMYBBMTAwQYBBMTAwLTEwMoBBMTAwgEEwOTmAQTA5OEGAQTA5OIBBMDk3QYBBMDk3gEEwOTaAQTA5NYBBMDk0gEEwOTOAQTA5MoBBMDkxgEEwOTCAQTA4OYBBMDg4gEEwODeAQTA4NoBBMDg1gEEwODSAQTA4M4BBMDgygEEwODGAQTA4MIBBMDc5gEEwNziAQTA3N4BBMDc2gEEwNzWAQTA3NIBBMDczgEEwNzKAQTA3MYBBMDcwgEEwNjmAQTA2OIBBMDY3gEEwNjZDgEEwNjZCgEEwNjZBgEEwNjaAQTA2NYBBMDY0gEEwNjOAQTA2MoBBMDYxgEEwNjCAQTA1OYBBMDU4gEEwNTeAQTA1NoBBMDU1gEEwNTSAQTA1M4BBMDUygEEwNTGAQTA1MIBBMDQ5gEEwNDiAQTA0N4BBMDQ2QoBBMDQ2QYBBMDQ2gEEwNDVBgEEwNDWAQTA0NIBBMDQzQYBBMDQzgEEwNDJBgEEwNDKAQTA0MUGAQTA0MYBBMDQwQYBBMDQwgEEwMzlBgEEwMzmAQTAzOIBBMDM3gEEwMzaAQTAzNYBBMDM0gEEwMzOAQTAzMkGAQTAyOEKAQTAyNkGAQTAxN0GAQTAxNEGAQTAxMEGAQTAwNkKAQTAwNkGAQTAwNUGAQS1XT4BBLUVVgC1VzS1QSFJVgC1LSFlVxC1LSFlJTIAtRFpVxC1DSEHSLUNIQUyAAAAAAAAAAAAAAAAAAAYAAAALAAAADwAAABMAAAAbAAAAIgAAACwAAAAxAAAANwAAAEAAAABCAAAARQAAAFEAAABZAAAAZgAAAGwAAABxAAAAdgAAAHwAAACBAAAAiQAAAJIAAACdAAAAoAAAAKUAAACqAAAAsAAAALQAAAC9AAAAwwAAAMkAAADPAAAA2AAAAOAAAADlAAAA7QAAALEAAAD0AAAA9wAAAP0AAAD+AAAABgEAAAwBAAARAQAAFQEAABoBAAAhAQAAKAEAADIBAAA3AQAAPQEAAEIBAABFAQAASwEAAFEBAABXAQAAXAEAAF8BAABnAQAAbQEAAHcBAAB8AQAAgQEAAIYBAACIAQAAkQEAAJgBAACfAQAAoQEAAKMBAACrAQAAVQEAALQBAAC2AQAAuQEAAMEBAADGAQAAxwEAAM4BAADQAQAA2AEAAN4BAADkAQAA6wEAAPABAAD3AQAA+wEAAAACAAAHAgAADAIAAA8CAAATAgAAGQIAAB4CAAAjAgAALQIAADUCAAA8AgAAPwIAAEcCAABPAgAAWAIAAFsCAABlAgAAbAIAAHECAAB1AgAAeQIAAH0CAACCAgAAhQIAAIwCAACTAgAAmgIAAJ8CAACkAgAArQIAAK8CAAC4AgAAvAIAAMMCAADLAgAAzwIAANcCAAAZAQAA4AIAAO0CAADxAgAA9gIAAPoCAAD9AgAA/wIAAAkDAAANAwAAEwMAABcDAAAcAwAAIAMAACYDAAArAwAANAMAADkDAAA9AwAAQAMAAEYDAABOAwAAGgMAAFYDAABfAwAAaAMAAHADAAB2AwAAewMAAIYDAACLAwAAkwMAAJYDAACdAwAAoAMAAKoDAACvAwAAtQMAALkDAAC9AwAAxAMAAMcDAADOAwAA0QMAAJECAADUAwAA1wMAANoDAADeAwAA4wMAAOwDAADyAwAA9gMAAPoDAAD9AwAAAAQAAAYEAAALBAAADwQAABQEAABaAgAAGQQAAB8EAAAoBAAAKwQAADQEAAA5BAAAPgQAAEQEAABJBAAATgQAAFMEAABXBAAAXAQAAGIEAABnBAAAbAQAAHAEAAB2BAAAewQAAIAEAACFBAAAiQQAAI4EAACTBAAAmAQAAJ4EAACkBAAAqgQAAK8EAACzBAAAuAQAAL0EAADCBAAAxgQAAMsEAADQBAAA1QQAANoEAAA1BAAAOgQAAD8EAABFBAAASgQAAN4EAABUBAAA5AQAAOkEAADuBAAA9QQAAPkEAAD8BAAABQUAAFgEAAAJBQAAXQQAAGMEAABoBAAADQUAABIFAAAXBQAAGwUAAB8FAAAlBQAAKQUAAG0EAAAsBQAALgUAAHcEAAAzBQAANwUAAHwEAAA9BQAAgQQAAEEFAABFBQAATAUAAIYEAABQBQAAWAUAAF0FAABhBQAAZAUAAGgFAACKBAAAjwQAAG0FAABzBQAAlAQAAH8FAACFBQAAiwUAAJEFAACZBAAApQQAAKsEAACVBQAAmQUAAJ0FAACgBQAAsAQAAKQFAACmBQAAqwUAALAFAAC2BQAAuwUAAMAFAADEBQAAyQUAAM4FAADTBQAA2AUAAN4FAADjBQAA6AUAAO4FAAD0BQAA+QUAAP0FAAACBgAABwYAAAwGAAARBgAAFgYAABoGAAAiBgAAJwYAACsGAAAwBgAANQYAADoGAAA/BgAAQwYAAEYGAABNBgAAUgYAAFcGAABcBgAAYQYAAGcGAABsBgAAcAYAALQEAABzBgAAeQYAAH4GAACDBgAAiAYAALkEAACMBgAAkAYAAJcGAACeBgAAvgQAAKMGAACoBgAAwwQAAKwGAACuBgAAswYAAL4GAADEBgAAxwQAAMkGAADSBgAAzAQAANcGAADdBgAA4gYAAOcGAADxBgAA+gYAAAIHAADRBAAADAcAABUHAAAeBwAAIwcAACcHAAAqBwAAMwcAAD0HAABGBwAASwcAAE8HAABTBwAAVwcAAFoHAABeBwAAYwcAANYEAABtBwAA2wQAAHEHAABzBwAAeQcAAH8HAACFBwAAiwcAAJEHAACXBwAAnQcAAKMHAACoBwAArgcAALQHAAC6BwAAwAcAAMYHAADMBwAA0gcAANgHAADeBwAA4wcAAOgHAADtBwAA8gcAAPcHAAD8BwAAAQgAAAYIAAALCAAAEAgAABYIAAAbCAAAIQgAACYIAAAsCAAAMggAADcIAAA9CAAAQwgAAEkIAABPCAAAVAgAAFkIAABbCAAAXAgAAGAIAABkCAAAaQgAAG0IAABxCAAAdQgAAHoIAAB+CAAAgQgAAIYIAACKCAAAjwgAAJMIAACXCAAAnAgAAKAIAACjCAAApwgAAK0IAAC7CAAAvwgAAMMIAADHCAAAyggAAM8IAADTCAAA1wgAANoIAADeCAAA4wgAAOgIAADtCAAA8ggAAPYIAAD6CAAA/ggAAAIJAAAGCQAACwkAAA8JAAAUCQAAGAkAAB0JAAAjCQAAKgkAADAJAAA1CQAAOgkAAD8JAABFCQAASgkAAFAJAABVCQAAWgkAAF8JAABkCQAAaQkAAGwJAABuCQAARgQAAHIJAAB5CQAAgQkAAIsJAACUCQAAogkAAKYJAACqCQAArwkAALwJAADECQAAxwkAAMsJAADOCQAA0wkAANcJAADaCQAA3gkAAOIJAADnCQAAuQYAAOwJAADwCQAA8wkAAPcJAAD9CQAABAoAAAsKAAARCgAAFgoAABsKAAAhCgAAJwoAACwKAAAxCgAANgoAADsKAABACgAARQoAAPoJAABKCgAAsAYAAEwKAABSCgAAVgoAAFsKAABfCgAAYwoAAEkGAADGBgAAaAoAAGwKAABwCgAAcwoAAHgKAAB9CgAAggoAAIcKAACLCgAAkgoAAJcKAACaCgAAngoAAKIKAACpCgAArwoAALMKAAC5CgAAvQoAAMEKAADGCgAAzQoAANIKAADXCgAA3goAAOQKAADqCgAA8AoAAAULAAATCwAAJAsAADMLAABDCwAAVAsAAGMLAABsCwAAcQsAAHULAAB6CwAAfwsAAIMLAACPCwAAlgsAAJwLAAAmCQAAogsAAKkLAACvCwAAswsAALYLAAC9CwAAwwsAAMgLAADMCwAA0QsAANULAADZCwAAcggAAN0LAADiCwAA5wsAAOsLAADwCwAA+AsAAPwLAAADDAAACAwAAAwMAAAQDAAAFAwAABkMAAAeDAAAIwwAACcMAAAsDAAAMQwAADUMAAA6DAAAPwwAAEMMAABGDAAASgwAAE4MAABWDAAAWwwAAF8MAABjDAAAaQwAAHIMAAB2DAAAegwAAIAMAACFDAAAjAwAAJAMAACaDAAAngwAAKIMAACnDAAAqwwAALAMAAC2DAAAuwwAAL8MAADDDAAAxwwAAAcKAADPDAAA1AwAANoMAADfDAAA4wwAAOgMAADtDAAA8QwAAPcMAAD8DAAAdggAAAINAAAIDQAADQ0AABINAAAXDQAAHA0AACENAAAmDQAAKw0AADANAAA1DQAAOg0A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ADMWAAA5FgAAPhYAAEQWAABKFgAAUBYAAFYWAABcFgAAYhYAAGgWAABuFgAAdBYAAHoWAAB/FgAAhRYAAIsWAACRFgAAlxYAAJ0WAACjFgAAqRYAAK8WAAC1FgAAuxYAAMAWAADGFgAAzBYAANIWAADYFgAA3hYAAOQWAADqFgAA8BYAAPYWAAD8FgAAARcAAAcXAAANFwAAExcAABkXAAAfFwAAJRcAACsXAAAxFwAANxcAAD0XAABCFwAARhcAAEwXAABSFwAAWBcAAF4XAABkFwAAahcAAHAXAAB2FwAAfBcAAIIXAACHFwAAjRcAAJMXAACZFwAAnxcAAKUXAACrFwAAsRcAALcXAAC9FwAAwxcAAMgXAADOFwAA1BcAANoXAADgFwAA5hcAAOwXAADyFwAA+BcAAP4XAAAEGAAACRgAAA8YAAAVGAAAGxgAACEYAAAnGAAALRgAADMYAAA5GAAAPxgAAEUYAABKGAAAUBgAAFYYAABcGAAAYhgAAGgYAABuGAAAdBgAAHoYAACAGAAAhhgAAIsYAACRGAAAlxgAAJ0YAACjGAAAqRgAAK8YAAC1GAAAuxgAAMEYAADHGAAAzBgAANIYAADYGAAA3hgAAOQYAADqGAAA8BgAAPYYAAD8GAAAAhkAAAgZAAANGQAAExkAABkZAAAfGQAAJRkAACsZAAAxGQAANxkAAD0ZAABDGQAASRkAAE4ZAABUGQAAWhkAAGAZAABmGQAAbBkAAHIZAAB4GQAAfhkAAIQZAACKGQAAjxkAAJUZAACbGQAAoRkAAKcZAACtGQAAsxkAALkZAAC/GQAAxRkAAMsZAADQGQAA1BkAANcZAADfGQAA5hkAAOkZAADtGQAA+hkAAP4ZAAACGgAABhoAAAkaAAANGgAAEhoAABYaAAAfGgAAIxoAACkaAAAwGgAAOxoAAEMaAABKGgAAUBoAAFQaAABcGgAAZRoAAGsaAABvGgAAexoAAIAaAACDGgAAiBoAAIwaAACWGgAAnhoAAKYaAACuGgAAtBoAALgaAADCGgAAzBoAANQaAADbGgAA4hoAAOgaAADuGgAA9RoAAPkaAAAAGwAAChsAABQbAAAcGwAAIxsAACgbAAAsGwAAMBsAADgbAAA8GwAARhsAAEsbAABSGwAAWRsAAGEbAABrGwAAcBsAAHQbAAB5GwAAfRsAAIQbAACJGwAAlxsAAJwbAAChGwAAqBsAAL4OAACxGwAAtRsAALkbAAC+GwAAwhsAAMYbAADJGwAAzhsAANMbAADcGwAA4hsAAOgbAADtGwAA8xsAAPcbAAACHAAADBwAABscAAAqHAAAORwAAEgcAABXHAAAZhwAAHUcAACEHAAAkxwAAKIcAACxHAAAwBwAAM8cAADeHAAA7RwAAPwcAAALHQAAGh0AACkdAAA4HQAARx0AAFYdAABlHQAAdB0AAIMdAACSHQAAoR0AALAdAAC/HQAAzh0AAN0dAADsHQAA+x0AAAoeAAAZHgAAKB4AADceAABGHgAAVR4AAGQeAABzHgAAgh4AAJEeAACgHgAArx4AAL4eAADNHgAA3B4AAOseAAD0HgAA/R4AAAIfAAAIHwAAEh8AABYfAAAaHwAAHx8AACQfAAApHwAAMR8AADUfAAA4HwAAPB8AAJUMAAA/HwAARB8AAFQBAAAhAgAASh8AAE0fAABVHwAAWR8AAF0fAABgHwAAZB8AAGofAABuHwAAdh8AAHwfAACBHwAAiB8AAJAfAACXHwAAnR8AAKIfAACpHwAArx8AALgfAADAHwAAxB8AAMkfAADRHwAA3R8AAOgfAADvHwAA+h8AAP4fAAACIAAABiAAAAkgAAAPIAAAxQ0AABMgAAAVIAAAGyAAACAgAAAlIAAAKiAAADAgAAA1IAAAOiAAAD8gAABEIAAASiAAAE8gAABUIAAAWiAAAF8gAABlIAAAaiAAAHAgAAB1IAAAeyAAAIAgAACFIAAAiiAAAI8gAACUIAAAmiAAAJ8gAACkIAAAqSAAAK8gAAC1IAAAuyAAAMEgAADHIAAAzSAAANMgAADZIAAA3yAAAOUgAADrIAAA8SAAAPYgAAD7IAAAACEAAAUhAAAKIQAADyEAABQhAAAZIQAAHyEAACUhAAAqIQAAMCEAADYhAAA8IQAAQSEAAEYhAABLIQAAUCEAAFYhAABcIQAAYSEAAGYhAABrIQAAcCEAAHUhAAB7IQAAgCEAAIYhAACMIQAAkiEAAJghAACeIQAApCEAAKohAACwIQAAtiEAAKEIAABfHwAAuyEAAL8hAADHIQAAyyEAAM4hAADRIQAA1yEAAN4hAABZBAAA4SEAAOUhAADtIQAA8iEAAPchAADuIQAA/CEAALwIAAAAIgAABiIAAAwiAAARIgAAFiIAAB0iAAAlIgAAKiIAAC4iAAAxIgAANSIAADsiAABBIgAARSIAAHsGAABzAgAASCIAAEwiAABRIgAAVyIAAFwiAABgIgAAYyIAAGciAABtIgAAciIAAHYiAAB9IgAAgSIAAIUiAACJIgAAGQMAANUhAADUCAAAjCIAAJQiAACbIgAAoiIAAKgiAACvIgAAtyIAAL4iAADJIgAA0CIAANYiAADiIgAAaQQAAA4FAAATBQAA7SIAAPEiAAAYBQAA9SIAAPkiAAACIwAACiMAAA4jAAAXIwAAHSMAACMjAAAoIwAALCMAADIjAAA3IwAAPyMAAEYjAABoCwAATSMAAFMjAABXIwAAYCMAAGkjAAByIwAAeyMAAIEjAACGIwAAiyMAAJYjAACfIwAAqyMAALAjAAC4IwAA9wgAALwjAAC+IwAAwyMAAMcjAADQIwAA2CMAABwFAACoAAAA6A4AAO0OAADeIwAA4iMAAOsjAADxIwAA9iMAAPkjAAD9IwAAASQAAAYkAAALJAAAECQAABUkAAAZJAAAIiQAACgkAAADCQAALCQAAGALAAAwJAAAOCQAADwkAABAJAAABwkAAEQkAABIJAAATCQAAFAkAABUJAAADAkAAFgkAABdJAAAZCQAAGokAABxJAAAdyQAAHokAAASJAAAfCQAAIQkAACMJAAAlCQAAJckAACcJAAAGQkAAKEkAAD5IQAApCQAAKYkAACrJAAAsCQAALUkAAC6JAAAvyQAAMQkAADJJAAAziQAANMkAADYJAAA3iQAAOMkAADoJAAA7SQAAPMkAAD4JAAA/SQAAAIlAAAHJQAADCUAABElAAAXJQAAHCUAACElAAAmJQAAKyUAADAlAAA1JQAAOiUAAD8lAABEJQAASSUAAE4lAABTJQAAWCUAAF0lAABiJQAAZyUAAGwlAAByJQAAeCUAAH0lAACCJQAAhyUAAIwlAACRJQAAJAkAACsJAAAxCQAAliUAAJ4lAACkJQAArCUAAEsJAABRCQAAtCUAAFYJAABbCQAAYAkAAGUJAAC4JQAAvCUAAMElAADFJQAAySUAAM0lAADSJQAA1iUAANslAADfJQAA4iUAAOUlAADrJQAA8iUAAPglAAD/JQAABSYAAAwmAAASJgAAGSYAAB8mAAAlJgAALiYAADQmAAA4JgAAPCYAAEAmAABEJgAASSYAAE0mAABSJgAAViYAAFwmAABgJgAAZSYAAGwmAAB3JgAAfyYAAIkmAACPJgAAmSYAAKImAACpJgAAriYAALImAAC9JgAAxyYAANQmAADfJgAA7CYAAPcmAAADJwAADycAABsnAAAmJwAAMycAAEAnAABHJwAATScAAFgnAABiJwAAcCcAAHcnAAB9JwAAhicAAI4nAACSJwAAlycAAJsnAACiJwAAqicAALEnAAC1JwAAuycAAL8nAADFJwAAzycAANMnAADYJwAA3ScAAOQnAADqJwAAqiIAAPQnAAD4JwAA/ycAAAUoAAAMKAAAEygAABcoAAAaKAAAICgAACQoAAApKAAALigAADMoAAA3KAAAPSgAAEUoAABMKAAAUigAAFYoAABZKAAAXygAAGkoAABtKAAAcygAAHgoAAB8KAAAgSgAAIUoAACLKAAAkSgAAJYoAACcKAAAoSgAAKYoAACrKAAAuAgAALAoAACyKAAAtygAAL8oAADIKAAAzCgAANIoAADXKAAA3CgAAOEoAADmKAAA7CgAAPEoAAD2KAAA8BEAAPsoAAAAKQAABCkAAAopAAAPKQAAFSkAABopAAAfKQAAJSkAACopAADNKAAAMCkAADQpAAA7KQAAQSkAAEYpAABKKQAAkxsAAE8pAABYKQAAXSkAAGIpAABgJAAAZyQAAGcpAAAWDAAAaykAAHApAAB1KQAAeikAANgoAAB+KQAAgykAAIgpAADdKAAAjCkAAOIoAACRKQAAmCkAAJ8pAAClKQAArCkAALIpAAC4KQAAvSkAAMQpAADJKQAAzikAANMpAADZKQAA5ygAAO0oAADfKQAA5CkAAOopAADvKQAA9CkAAPwpAABUBQAAASoAAA0EAAAEKgAADCoAABwqAAAsKgAAOyoAAEMqAABJKgAATyoAAFgqAABgKgAAaCoAAHAqAAB4KgAAgCoAAIgqAACQKgAAmCoAAKEqAACqKgAAsioAALsqAADEKgAAzSoAANYqAADfKgAA6CoAAPEqAAD6KgAAAysAAAwrAAAUKwAAGSsAAB0rAAAjKwAAKysAADIrAABBKwAAUisAAGUrAABuKwAAdisAAIUrAACQKwAAmCsAAJ4rAACoKwAAsisAALorAADAKwAAzCsAANUrAADdKwAA5CsAAOsrAADyKwAA+CsAAP0rAAAHLAAADSwAABUsAAAfLAAAJiwAADAsAAA6LAAARCwAAEwsAABTLAAAXCwAAGYsAAB0LAAAgywAAIwsAACULAAAmSwAAJ0sAACnLAAAsSwAAL0sAADGLAAAzCwAANEsAADbLAAA5SwAAO8sAAD0LAAA+CwAAAItAAALLQAAEC0AACAtAAAxLQAAOy0AAEAtAABLLQAAWC0AAGMtAABrLQAAeC0AAIQtAACMLQAAkS0AAJUtAACbLQAAoC0AAKgtAACwLQAAty0AAMItAADHLQAAzy0AANktAADfLQAA4y0AAOYtAADqLQAA8C0AAPctAAD7LQAAAy4AAAwuAAAULgAAGy4AACAuAAAkLgAAKS4AAC0uAAAxLgAAOS4AAEguAABYLgAAXi4AAGYuAABvLgAAdy4AAH0uAACBLgAAiC4AAJMuAACXLgAAmi4AAKUuAACrLgAAsC4AAPcoAAC4LgAAvi4AAMUuAADLLgAA0C4AANcuAADeLgAA5S4AAOwuAADzLgAA+i4AAAEvAAAILwAADy8AABYvAAAdLwAAJC8AACsvAAAyLwAAOS8AAD4vAABOKwAAQy8AAEkvAABQLwAAVy8AAFwvAABjLwAAbC8AAHAvAAB3LwAAgy8AAIcvAACNLwAAki8AAJcvAACcLwAAoS8AAKYvAACrLwAAri8AALIvAACtLAAAti8AALovAADALwAAxi8AAMsvAADRLwAA1i8AANsvAADhLwAA5i8AAOsvAADgJwAA8C8AAPQvAAD4LwAA/C8AAAEwAAAGMAAACzAAABMwAAAZMAAAHjAAACIwAAAmMAAALTAAADIwAAA6MAAAQTAAAEYwAABKMAAATTAAAFMwAABaMAAAXjAAAGEwAABmMAAAajAAABcSAABwMAAAeTAAAC4AAACBMAAAhzAAAIwwAACRMAAAmTAAAKAwAAClMAAAQRsAAKswAACxMAAAtjAAALowAAC9MAAAwzAAAMswAADSMAAA4TAAAPQwAAAAMQAADTEAABoxAAAnMQAANTEAAEIxAABRMQAAWDEAAPwoAABeMQAAbDEAAHExAAB3MQAAfDEAAIQxAACJMQAAXCMAAI4xAACRMQAAmTEAAKAxAAClMQAAqTEAAK8xAACzMQAAuDEAAL0xAADCMQAAxzEAAMwxAADRMQAAGwwAAKYrAADWMQAA2jEA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AIxOAACQTgAAmE4AAJ1OAAClTgAAq04AALFOAAC2TgAAu04AAL9OAADFTgAAyk4AAM5OAADVTgAA2k4AAN5OAADpTgAA704AAPROAAD5TgAAAE8AAAVPAAAJTwAAXQ8AAA5PAAAUTwAAG08AAJZDAAAhTwAAJU8AACtPAAAwTwAANU8AADlPAAA/TwAARE8AAElPAABQTwAAVU8AAFI9AABZTwAAXk8AAGJPAABnTwAAbU8AAHNPAAB6TwAAhE8AAIxPAACTTwAAmE8AAJxPAAClTwAArU8AALRPAAC7TwAAwU8AAMZPAADMTwAA0U8AANZPAADcTwAA4U8AAOdPAADsTwAA8k8AAPhPAAD/TwAABVAAAApQAAAPUAAAxSkAABhQAAAbUAAAI1AAAClQAAAuUAAAM1AAAD1QAABEUAAASlAAAE9QAABUUAAAWlAAAF9QAABlUAAAalAAAHBQAAB3UAAAfVAAAINQAACIUAAAkFAAAJdQAACcUAAAoVAAAKdQAACsUAAAsFAAALlQAADEUAAAy1AAANJQAADaUAAA4VAAAOhQAADtUAAA8lAAAPhQAAD9UAAABVEAAAtRAAARUQAAFlEAAB1RAAAjUQAAKFEAACxRAAAyUQAAN1EAADxRAABAUQAARVEAAC8FAAAmIgAALgwAAElRAABNUQAAUVEAAFVRAABZUQAAXVEAAGBRAABlUQAAbFEAAHRRAAB+UQAAiVEAAJNRAACeUQAAqlEAALVRAAC/UQAAylEAANZRAADhUQAA7VEAAPpRAAAGUgAAEVIAABtSAAAmUgAAMlIAAD1SAABKUgAAVlIAAGFSAABtUgAAelIAAIZSAACTUgAAoVIAAK5SAAC6UgAAxVIAAM9SAADaUgAA5lIAAPFSAAD9UgAAClMAABZTAAAhUwAALVMAADpTAABHUwAAVVMAAGJTAABuUwAAeVMAAIVTAACSUwAAnlMAAKtTAAC5UwAAxlMAANJTAADfUwAA7VMAAPpTAAAIVAAAFlQAACNUAAAvVAAAOlQAAERUAAChQwAAS1QAAFFUAABbVAAAY1QAAGpUAAByVAAAfFQAAIVUAACSVAAAl1QAAJxUAACkVAAAq1QAAL89AADIPQAAslQAALxUAADLVAAA0VQAANhUAADfVAAA5lQAAOxUAADyVAAA/VQAAAVVAAANVQAAF1UAACFVAAAqVQAApkMAADNVAAA5VQAAP1UAAEhVAABQVQAAWFUAAF1VAABmVQAAblUAAHpVAACEVQAAjlUAAJhVAAChVQAArVUAALdVAADBVQAAzFUAANNVAADYVQAA31UAAOtVAAD3VQAAA1YAAA9WAAAbVgAAJ1YAADNWAAA/VgAAS1YAAFdWAABiVgAAblYAAHpWAACGVgAAklYAAJ5WAACqVgAAtlYAAMJWAADOVgAA2lYAAOVWAADxVgAA/VYAAAlXAAAVVwAAIVcAAC1XAAA5VwAARVcAAFFXAABdVwAAaFcAAHRXAACAVwAAjFcAAJhXAACkVwAAsFcAALxXAADIVwAA1FcAAOBXAADrVwAA91cAAANYAAAPWAAAG1gAACdYAAAzWAAAP1gAAEtYAABXWAAAY1gAAG5YAAB6WAAAhlgAAJJYAACeWAAAqlgAALZYAADCWAAAzlgAANpYAADmWAAA8VgAAP1YAAAJWQAAFVkAACFZAAAtWQAAOVkAAEVZAABRWQAAXVkAAGlZAAB0WQAAgFkAAIxZAACYWQAApFkAALFZAAC+WQAAy1kAANhZAADlWQAA8lkAAP9ZAAALWgAAGFoAACVaAAAyWgAAP1oAAExaAABZWgAAZloAAHNaAACAWgAAjVoAAJlaAACmWgAAs1oAAMBaAADNWgAA2loAAOdaAAD0WgAAAVsAAA5bAAAbWwAAJ1sAADRbAABBWwAATlsAAFtbAABoWwAAdVsAAIJbAACPWwAAnFsAAKlbAAC1WwAAwlsAAM9bAADcWwAA6VsAAPZbAAADXAAAEFwAAB1cAAAqXAAAN1wAAENcAABQXAAAXVwAAGpcAAB3XAAAhFwAAJFcAACeXAAAq1wAALhcAADFXAAA0VwAANxcAADpXAAA9lwAAANdAAAQXQAAHV0AACpdAAA3XQAARF0AAFFdAABeXQAAal0AAHddAACEXQAAkV0AAJ5dAACrXQAAuF0AAMVdAADSXQAA310AAOxdAAD4XQAABV4AABJeAAAfXgAALF4AADleAABGXgAAU14AAGBeAABtXgAAel4AAIZeAACTXgAAoF4AAK1eAAC6XgAAx14AANReAADhXgAA7l4AAPteAAAIXwAAFF8AACFfAAAuXwAAO18AAEhfAABVXwAAYl8AAG9fAAB8XwAAiV8AAJZfAACiXwAAr18AALxfAADJXwAA1l8AAONfAADwXwAA/V8AAApgAAAXYAAAJGAAADBgAAA9YAAASmAAAFdgAABkYAAAcWAAAH5gAACLYAAAmGAAAKVgAACyYAAAvmAAAMtgAADYYAAA5WAAAPJgAAD/YAAADGEAABlhAAAmYQAAM2EAAEBhAABMYQAAWWEAAGZhAABzYQAAgGEAAI1hAACaYQAAp2EAALRhAADBYQAAzmEAANphAADnYQAA9GEAAAFiAAAOYgAAG2IAAChiAAA1YgAAQmIAAE9iAABcYgAAaGIAAHNiAAB8YgAAhGIAAIxiAACTYgAAmWIAAJ1iAACjYgAAqWIAALJiAAC6YgAAv2IAAMViAADKYgAAzmIAANdiAADoKAAA4mIAAOhiAADvYgAA92IAAP5iAAA/MwAATTMAAAVjAAAMYwAAFWMAABpjAAAfYwAAJmMAACtjAAAwYwAANiIAADwiAABCIgAANWMAADpjAAA9YwAAQmMAAEpjAABRYwAAWGMAAGRjAABrYwAAcWMAAHpjAAB/YwAAiGMAAJFjAACXYwAAn2MAAKhjAACsYwAAsmMAALdjAADBYwAAyGMAAM5jAADWYwAA3GMAAONjAADpYwAA82MAAPxjAAAAZAAAB2QAAAtkAAAQZAAAFmQAAB5kAAAiZAAALGQAALBDAAA1ZAAAO2QAAD9kAABIZAAAUWQAAFtkAABhZAAAtUMAAGhkAABvZAAAemQAAIJkAACMZAAAlWQAAJ1kAADLJwAApWQAAKpkAACwZAAAtWQAALlkAAC9ZAAAwWQAABEsAADGZAAAzmQAANVkAADeZAAA5mQAAO1kAAD0ZAAA/WQAAANlAAAjBAAACmUAABBlAAAUZQAAGmUAACFlAAAnZQAAL2UAADVlAAA8ZQAAQmUAAEhlAABRZQAAVWUAAF1lAABlZQAAbGUAAHVlAAB8ZQAAgWUAAIVlAACPZQAAmmUAAKVlAACqZQAAr2UAALVlAAC+ZQAAw2UAANBlAAAUIwAA1GUAANplAADgZQAA5mUAAOtlAADzZQAA92UAAP5lAAAHZgAADGYAAMZEAAAUZgAAGGYAACRmAAApZgAALWYAADBmAAA2ZgAAPGYAAEJmAABHZgAATGYAAFBmAABTZgAAXmYAAGNmAAD9KQAAamYAAG9mAAB0ZgAAeWYAAH5mAACDZgAAiGYAAI1mAACSZgAAAioAAJdmAACcZgAAoWYAAKZmAACrZgAAsGYAALVmAAC6ZgAAv2YAAMRmAADJZgAAzmYAANRmAADZZgAA3mYAAONmAADoZgAA7WYAAPJmAAD3ZgAA/GYAAAFnAAAHZwAADWcAABJnAAAXZwAAHGcAACFnAAAmZwAAK2cAADBnAAA1ZwAAOmcAAEBnAABFZwAASmcAAE9nAABVZwAAW2cAAGBnAABlZwAAamcAAG9nAAB0ZwAAeWcAAH5nAACDZwAAiWcAAI5nAACTZwAAmGcAAJ1nAACjZwAAqGcAAK1nAACxZwAA4gQAAJEAAAC5ZwAAvWcAAMFnAADFZwAAymcAAM5nAABYPQAAbwkAANJnAADXZwAA22cAAOBnAADkZwAA6WcAAO1nAADzZwAA+GcAAPxnAAAAaAAACGgAAAxoAAAQaAAAF2gAABxoAAAhaAAAJWgAACtoAAAwaAAANGgAADloAAA+aAAAQmgAAEloAABQaAAAV2gAAFxoAABgaAAAZGgAAGloAABtaAAAcGgAAHZoAACDaAAAiGgAAI5oAACXaAAAnGgAABUrAAChaAAAqmgAAK9oAACyaAAAtmgAALtoAADAaAAAxWgAAMpoAADPaAAAbgsAAHMLAADUaAAA2mgAAN5oAADkaAAANg8AAOloAADuaAAA82gAAPloAAD+aAAADkEAAANpAAAIaQAADWkAABJpAAAYaQAAHWkAACJpAAAoaQAALWkAADFpAAA2aQAAO2kAAEBpAABFaQAASmkAAE5pAABTaQAAV2kAAFxpAABhaQAAZmkAAGtpAABvaQAAdGkAAHhpAAB9aQAAgmkAAIdpAAAyaQAANwwAADdpAACMaQAAlGkAAJtpAABvLAAAp2kAAK9pAAC5aQAAy2kAAN5pAADnaQAA72kAADxpAAD2aQAA+2kAAANqAABBaQAACGoAAA1qAAAVagAAGmoAAB9qAAAjagAAck0AAChqAAAwagAANWoAADlqAABAagAARmoAAE9qAABTagAAW2oAAGFqAABlagAAaGoAALRQAABvagAAc2oAAHdqAAB8agAAgmoAAIlqAACOagAA5icAAJJqAACXagAAnGoAAKFqAACmagAAq2oAAIUGAACKBgAAsGoAALZqAAC8agAAwWoAAMVqAADJagAAzWoAANFqAADVagAA2WoAAN1qAADhagAAXmMAAORqAADragAA82oAAPlqAAD/agAABGsAAAlrAAAPawAAE2sAABhrAAAfawAAqkAAALFAAAAlawAAMWsAADRrAAA7awAAP2sAAItNAABGawAATmsAAFlrAABiawAAb2sAAHlrAACHawAAk2sAAKFrAACuawAAumsAAMRrAADQawAA1msAAOVrAAD9awAAD2wAACJsAAAvbAAAPWwAAE9sAABfbAAAcGwAAIJsAACNbAAAoGwAALFsAADFbAAA12wAAONsAADxbAAA/2wAAAttAAAcbQAAL20AAEFtAABNbQAAX20AAHJtAABORAAAf20AAJNtAACfbQAABzEAAKttAACwbQAAtW0AALptAADDbQAAyW0AAM5tAADSbQAA2W0AAN9tAADjbQAA6G0AAO1tAADybQAA920AAPxtAAABbgAA0AkAAAZuAAAMbgAAEG4AABNuAAAebgAAIm4AACVuAAAtbgAAM24AAAg6AAA3bgAAQG4AAEtuAABRbgAAV24AAGZuAABvbgAAd24AAH5uAACDbgAAh24AAI5uAACUbgAAnW4AAKVuAACsbgAAtm4AAL9uAADJbgAAzm4AANduAADgbgAA624AAPZuAAAAbwAAEW8AAMURAAAbbwAAH28AAClvAAAxbwAAO28AAEZvAABMbwAAUW8AAFtvAABjbwAAam8AAHBvAAB3bwAAfG8AAGJpAACAbwAAiW8AAI1vAACQbwAAlW8AAJ1vAACkbwAArW8AALVvAAC9bwAAxW8AAM9vAADYbwAA3m8AAORvAADqbwAA7m8AAGdpAABsaQAA8m8AAPxvAAAGcAAAEHAAABhwAAAfcAAAKXAAADFwAAA5cAAAP3AAAEdwAAAiAwAAUHAAAB1FAACJAgAAXnAAAGdwAABvcAAAenAAAIVwAACPcAAAmHAAAKRwAACtcAAAtnAAAL1wAADDcAAAzXAAANZwAADfcAAA53AAAO9wAAD5cAAAAXEAAAlxAAAQcQAAFnEAABtxAAAgcQAAJXEAAM4fAAAqcQAALXEAADFxAAA2cQAAPnEAAERxAABJcQAATXEAAK0OAAB5aQAAVXEAAH5pAABbcQAAYXEAAGdxAABscQAAcXEAAHVxAAB9cQAAg3EAAIlxAACNcQAATg8AAJVxAACacQAAn3EAAKNxAACncQAAjS0AAK5xAAC2cQAAxHEAAMtxAADScQAA2HEAAJYtAACcLQAA4HEAAOhxAADvcQAA9HEAAPlxAACDaQAA/3EAAApyAAATcgAAN0oAABtyAAAgcgAAyQoAACVyAAAwcgAANnIAADtyAAA/cgAAQ3IAAEZyAABNcgAAVHIAAFpyAABicgAAaXIAAG9yAABzcgAA9h8AAHhyAAB8cgAAgHIAAIhyAACNcgAAknIAAJdyAACmBgAAnHIAAKFyAACmcgAAq3IAALByAAC1cgAAunIAAL9yAADEcgAAyXIAAM5yAADTcgAA2HIAAN1yAADjcgAA6HIAAO1yAADycgAA93IAAPxyAAABcwAAB3MAAAxzAAARcwAAFnMAABtzAAAgcwAAJXMAACpzAAAwcwAANnMAADtzAABBcwAARnMAAEtzAAAFAAAAUXMAAFVzAABZcwAAXXMAAGJzAABmcwAAanMAAG5zAABycwAAd3MAAHtzAACAcwAAhHMAAIdzAACLcwAAkHMAAJRzAACZcwAAnXMAAKFzAAClcwAAqnMAAK5zAACycwAAvHMAAMFzAADFcwAAyXMAAM5zAADTcwAA3HMAAOFzAADmcwAA6nMAAO5zAAD3cwAABHQAABB0AAAZdAAAInQAACd0AAAtdAAAMnQAADZ0AAA6dAAARHQAAE10AABVdAAAW3QAAGB0AABkdAAAa3QAAHJ0AAB8dAAAhXQAAI10AABsMgAAlXQAAJ10AACmdAAAr3QAALd0AADBdAAAxnQAAMp0AADOdAAA0XQAANN0AADXdAAA23QAAOB0AADldAAA6XQAAO10AADwdAAA9HQAAPd0AAD7dAAA/nQAAAF1AAAFdQAAC3UAAA91AAATdQAAF3UAABt1AAAgdQAAJXUAACp1AAAudQAAMXUAADZ1AAA8dQAAQXUAAEd1AABMdQAAUHUAAFZ1AABadQAAXnUAAGN1AABndQAAbHUAAHF1AAB1dQAAeXUAAIB1AACEdQAAh3UAAIt1AACPdQAAlXUAAJt1AACfdQAAo3UAAKh1AACvdQAAtXUAALl1AADCdQAAxnUAAMp1AADNdQAA03UAANh1AADedQAAbwUAANoGAADjdQAA6HUAAO11AADydQAA93UAAPx1AAABdgAAqwgAADgDAAAGdgAACXYAAA12AAARdgAAFnYAABp2AAApRQAAHnYAACN2AAAodgAALHYAAC92AAA0dgAAOHYAAD12AABBdgAALUUAAEZ2AABJdgAATHYAAFJ2AABWdgAAW3YAAF92AABsdgAAdHYAAHh2AAB7dgAAg3YAAIx2AACTdgAAmHYAAJ52AACkdgAArHYAALN2AAC6dgAAvnYAAMJ2AADGdgAAy3YAANB2AADUdgAA3HYAAOF2AADodgAA9HYAAP92AAAEdwAACHcAAA93AAATdwAAGHcAAB53AAAhdwAAJncAACt3AAAydwAANncAADp3AAA9dwAAQ3cAALAiAABzCQAAR3cAAEx3AABcdwAASCsAAHB3AAB5dwAAiXcAAI13AACUdwAAl3cAAJ13AACndwAArXcAALZ3AAC/dwAAzncAANl3AADldwAA8HcAAPh3AAABeAAAB3gAABB4AAAaeAAAJHgAAC94AAA6eAAARHgAAE14AABUeAAAXXgAAGV4AABseAAAc3gAAHp4AACCeAAAiXgAAJB4AACdeAAApHgAAKx4AACzeAAAuXgAAL54AADHeAAAzngAANR4AADZeAAA4XgAAOl4AADweAAA93gAADNvAAADeQAAD3kAAB15AAAleQAALXkAADV5AAA8eQAASHkAAFF5AABaeQAAYnkAAGp5AAByeQAAeXkAAH95AACIeQAAkHkAAJp5AACjeQAArXkAALZ5AAC/eQAAx3kAAMx5AADQeQAA03kAANd5AADbeQAA33kAAON5AADneQAA7XkAAPN5AAD4eQAAAHoAAAd6AAAPegAAFnoAACIqAABnRQAAHnoAACV6AAAqegAAMXoAADd6AAA9egAARHoAAK42AABLegAATnoAAFp6AABiegAAaHoAAG16AABxegAAfHoAAIZ6AACQegAAUC0AAJl6AACiegAAqnoAALR6AAC9egAAxHoAAMt6AADTegAA13oAAHpFAADaegAA4XoAAOV6AACNEQAA63oAAO56AAD1egAA+3oAAAl7AAAOewAAFnsAABx7AAAnewAALnsAADR7AAA6ewAAPnsAAEN7AABHewAAUHsAAFd7AABdewAA5SIAAGR7AABsewAAc3sAAHl7AAB+ewAAhHsAAIp7AACUewAAoHsAAKt7AAC1ewAAvXsAAMN7AACMRQAAx3sAAMl7AADYeQAAXS0AANJ7AADXewAA3XsAAOd7AADsewAA83sAAPt7AAABfAAABnwAAAt8AAAQfAAAFHwAABl8AAAgfAAAJnwAAC98AAA3fAAAO3wAAEJ8AABMfAAAUnwAAFt8AABhfAAAaHwAAJsSAABufAAAdHwAAHl8AACAfAAAjHwAAJd8AACcfAAApHwAAKh8AACyfAAAuHwAALx8AADBfAAAy3wAANR8AADYfAAA33wAAOd8AADufAAA9HwAAPl8AAABfQAACH0AAA19AAAUfQAAIH0AACl9AAAtfQAADj0AADV9AAA/fQAAQ30AAEt9AABSfQAAWX0AAH92AABkfQAAaX0AAG19AAB0fQAAe30AACdoAACNeQAAgH0AAIR9AACHfQAAk2wAAIx9AACafQAAqn0AALx9AADPfQAA4H0AAPJ9AACmbAAAA34AABd+AAC3bAAAI34AAC9+AABvSgAAO34AAMtsAABJfgAAVX4AABQxAABjfgAAaH4AAG1+AAByfgAAeH4AAH5+AACEfgAAiH4AAJB+AACWfgAAnX4AAKJ+AACsfgAAs34AALl+AABGLwAAv34AAMF+AADGfgAAzn4AANJ+AAAcfAAA2H4AAN9+AAAQNgAAGjYAAOZ+AADtfgAA934AAPx+AAAAfwAAA38AAAl/AAARfwAAHX8AACd/AAA3fwAARH8AAFJ/AACBSgAAYH8AAGd/AABrfwAAbn8AAHN/AAB3fwAAfn8AAIV/AACMfwAAk38AAJ1/AACifwAAp38AAKx/AAC0fwAAvH8AAMF/AADKfwAASG8AAO8NAADPfwAA0n8AANV/AADafwAA4X8AAOZ/AADrfwAA+38AAAOAAAALgAAAXCoAABOAAAAYgAAAHIAAACKAAAAngAAALYAAADCAAAA2gAAAQoAAAEqAAABRgAAAV4AAAF6AAABpgAAAd4AAAISAAACKgAAAk4AAAJmAAACigAAAroAAALmAAADDgAAAzIAAANWAAADdgAAA54AAAPCAAAD7gAAAoQIAAAKBAAAJgQAAD4EAABSBAAAagQAAIYEAACeBAAAygQAAPIEAAEaBAABPgQAAVYEAAFyBAABhgQAAaYEAAHCBAAB4gQAAgIEAAIyBAADYGwAAk4EAAJaBAACfgQAAp4EAAK2BAACzgQAAuIEAALyBAAC/gQAAxYEAAMyBAADRgQAA1oEAAN2BAADigQAA5oEAAPKBAAD9gQAABoIAAA6CAAA4RgAAE4IAABuCAAAgggAAKIIAAC6CAAA0ggAACTYAADYmAAA5ggAAPYIAAEGCAABEggAAR4IAAE2CAABVggAAXYIAAGGCAABlggAAaoIAAG6CAABxggAAeoIAAH+CAACEggAAiIIAAIuCAACQggAAmIIAAKOCAACsggAAsIIAALaCAAC8ggAAwIIAAMaCAADOggAA5IIAAPyCAAAHgwAAEIMAABaDAAAdgwAAJIMAACqDAAAygwAAOIMAAD2DAABIgwAAWoMAAGGDAABpgwAAbYMAAHSDAAB5gwAAgoMAAI+DAACXgwAAo4MAAK6DAAC5gwAAw4MAANGDAADagwAA4oMAAO6DAAD5gwAAWSsAAAKEAAANhAAAGIQAACSEAAAuhAAAN4QAAEGEAABGhAAASoQAAFKEAABdhAAAZ4QAAG2EAAByhAAAdoQAAHmEAAB8hAAAhIQAAIyEAACVhAAAn4QAAKiEAACuhAAAs4QAAMGEAAAcCwAA14QAAOKEAADrhAAA9YQAAAGFAAAKhQAAE4UAAB2FAAAlhQAALYUAADaFAAA7hQAARoUAAEuFAABUhQAAWoUAAGWFAABphQAAbIUAAHaFAAB/hQAAh4UAAJGFAACbhQAAo4UAAKyFAACzhQAAuYUAAMGFAADIhQAA0YUAANqFAADfhQAA5IUAAOiFAADwhQAA94UAAP2FAAABhgAACYYAABCGAAAbhgAAKoYAADGGAAA3hgAAQYYAAEqGAABQhgAAW4YAAF+GAABmhgAAaoYAAHGGAAB3hgAApkEAAH2GAACBhgAAhoYAAIyGAACThgAAl4YAAJuGAACjhgAAq4YAALGGAAC6hgAAwYYAAMiGAADNhgAA0oYAANyGAAB+bwAA4IYAAOOGAADohgAA7YYAAPKGAAD3hgAA/IYAAAGHAAAGhwAAC4cAABGHAAAWhwAAG4cAACGHAABMBAAA/gIAACaHAAAphwAAMIcAADmHAAD3BgAAQIcAAEWHAABJhwAAT4cAAH0EAACDAgAAVIcAAE4BAABYhwAAYocAAGuHAABzhwAAfIcAAISHAACLhwAAlocAAJ6HAACnhwAAr4cAALmHAADBhwAAxocAAPgtAADKhwAA0ocAANqHAADfhwAAOkUAAAsQAADlhwAA64cAAPGHAAD/GQAA9ocAAPqHAAABiAAAB4gAAA2IAAARiAAAGogAACCIAAAliAAALIgAAD4FAAAyiAAAOIgAAD2IAABEiAAASIgAAOEEAAAHGgAATYgAAFeIAABfiAAAZYgAAG+IAAB4iAAAgIgAAIaIAACLiAAAk4gAAJqIAAAmNAAAoIgAAKeIAACsiAAAs4gAAL2IAACCBQAA9QAAAKoIAADDiAAAyYgAANCIAADbiAAA5ogAAO6IAAD1iAAA/4gAAAiJAAAQiQAAGYkAACCJAAAniQAANIkAADuJAABBiQAATIkAAF+JAABkiQAAggQAAGiJAABtiQAAdYkAAJYPAAB5iQAAfokAAIKJAACGiQAAQgUAAO50AACQiQAAlIkAAJmJAACdiQAAo4kAAAwPAACpiQAAsYkAALiJAADDiQAAzIkAANSJAADtiQAA9YkAAPqJAACXDwAAjwEAAACKAAAIigAAEIoAABeKAAAcigAAIooAACeKAADvCAAA3jEAAC6KAAA0igAAP3sAAJJ8AAA6igAAkAIAAGoAAAA+igAAQooAAEiKAABuAgAAoykAAE2KAABUigAAWooAAF6KAABiigAAEwYAAGWKAABpigAAWEcAAGyKAABxigAAeIoAAH6KAADyIgAAg4oAAIuKAACSigAAmIoAACVqAACcigAAoIoAAKSKAACoigAAMAcAAMxOAACsigAAsYoAALWKAAC4igAAwIoAAMiKAADNigAA1ooAAN6KAADhigAA6IoAAO+KAAB0agAA+YoAAAWLAAANiwAAEosAABaLAAAeiwAAJYsAACyLAAA1iwAAO4sAAEKLAABJiwAATIsAAFCLAABUiwAATQUAAF6LAABgiwAAZYsAAGuLAABxiwAAdosAAHuLAACAiwAAhYsAAIqLAACPiwAAlIsAAJmLAACeiwAAo4sAAKiLAACtiwAAsosAALeLAAC9iwAAw4sAAMmLAADPiwAA1IsAANmLAADeiwAA5IsAAOmLAADuiwAA84sAAPmLAAD+iwAABIwAAAmMAAAOjAAAE4wAABiMAAAejAAAI4wAACmMAAAujAAAM4wAADiMAAA9jAAAQ4wAAEiMAABOjAAAU4wAAFiMAABdjAAAYowAAGeMAABsjAAAcYwAAHaMAAB7jAAAgYwAAIeMAACNjAAAkowAAJeMAACcjAAAoYwAAKeMAACtjAAAs4wAALmMAAC/jAAAxYwAAMqMAADQjAAA1YwAANqMAADfjAAA5IwAAOqMAAD+CQAA74wAAAUKAAAMCgAAmAsAAPSMAAASCgAAHAoAAPqMAAA8CgAAQQoAAEYKAAD+jAAAA40AAAiNAAAOjQAAE40AABiNAAAcjQAAIY0AACeNAAAsjQAAMY0AADaNAAA8jQAAQY0AAEWNAABJjQAATo0AAFONAABYjQAAXY0AAGKNAABojQAAbo0AAHONAAB3jQAAfI0AAIKNAACGjQAAi40AAJCNAACVjQAAmo0AAJ6NAAChjQAApo0AAKuNAACwjQAAtY0AALqNAADAjQAAxo0AAMuNAADQjQAA1Y0AANmNAADejQAA440AAOiNAADtjQAA8o0AAPeNAAD7jQAAAI4AAAWOAAAKjgAADo4AABKOAAAWjgAAG44AACOOAAAojgAALY4AADOOAAA5jgAAP44AAESOAABMjgAAUI4AAFOOAABYjgAAXY4AAGGOAABmjgAAa44AAG+OAAB0jgAAeI4AAHuOAACAjgAAaxAAAJ9UAACFjgAAio4AAI+OAACUjgAAnI4AAOlkAABBiAAAOigAAKGOAACmjgAAqo4AAK+OAACzjgAAt44AALyOAADAjgAAw44AAMaOAADKjgAAz44AANOOAADbjgAA344AAOKOAADnjgAA644AAO+OAAD0jgAA+Y4AAP2OAAADjwAACI8AAA2PAAAUjwAAG48AAB+PAAAijwAAKI8AADGPAAA4jwAAQI8AAEePAABLjwAAUI8AAFSPAABYjwAAXo8AAGOPAABpjwAAbY8AAHOPAAB4jwAAfY8AAIGPAACIjwAAjo8AAJSPAACajwAAoI8AAKePAACtjwAAs48AALmPAAC/jwAAxY8AAMuPAADRjwAA2I8AAN6PAADljwAA648AAPGPAAD3jwAA/Y8AAAOQAAAJkAAAD5AAABWQAAAbkAAAIZAAACaQAAArkAAAiTUAADCQAAA2kAAAO5AAAECQAABFkAAASpAAAE2QAABTkAAAWJAAAGCQAABlkAAAaZAAAG6QAAB0kAAAfZAAAIOQAACIkAAAjZAAAJKQAACWkAAAm5AAAJ+QAACkkAAAqZAAAK6QAACzkAAAupAAAMGQAADHkAAAzZAAANKQAAA5TQAA2ZAAAN+QAADmkAAA7JAAAPKQAAD3kAAA/5AAAASRAAAELAAACJEAAA2RAAASkQAAGJEAAB2RAAAikQAAJpEAACuRAAAwkQAANpEAADuRAABAkQAARZEAAEmRAABOkQAAU5EAAFeRAABckQAAYZEAAGWRAABqkQAAbpEAAHORAAB4kQAAfZEAAIGRAACGkQAAipEAAI+RAACTkQAAmpEAAJ6RAACikQAA9EcAAKeRAACukQAAt5EAAL2RAADDkQAAzJEAANSRAADdkQAA5ZEAAOqRAADukQAA9ZEAAPuRAAADkgAAB5IAAAqSAAAPkgAAE5IAABySAAAkkgAANpIAADySAACBBQAAQpIAAEWSAABJkgAAt2oAAL1qAABPkgAAU5IAAF6SAABpkgAAdJIAAICSAACEkgAAi5IAAJKSAACZkgAAnpIAAKKSAACqkgAAr5IAALSSAAC5kgAAvpIAAEAaAABGQQAA6GQAAMOSAADIkgAAzJIAAD1BAADRkgAA15IAANySAADikgAA55IAAO2SAADykgAA+JIAAP2SAAADkwAACZMAAA+TAAAUkwAA6JIAAO6SAAAYkwAAHZMAACOTAAAokwAALpMAADOTAAA5kwAAPpMAAPOSAABsMAAAQpMAAP6SAAAEkwAACpMAAPQLAAC2DgAASJMAAEuTAABQkwAAVpMAAFyTAABikwAAaZMAAG+TAAB1kwAAe5MAAIGTAACHkwAAjZMAAJOTAACZkwAAn5MAAKWTAACrkwAAsZMAALiTAAC+kwAAxJMAAMqTAADQkwAA1pMAANmTAADekwAA4ZMAAOiTAADtkwAA9ZMAAPmTAAD+kwAAA5QAAAmUAAAOlAAAE5QAABeUAAAclAAAIpQAACeUAAAtlAAAMpQAADiUAAA9lAAAQ5QAAEmUAABNlAAAUpQAAFeUAABclAAAYZQAAGWUAABqlAAAb5QAAHSUAAB6lAAAgJQAAIaUAACMlAAAkZQAAJWUAACYlAAAnpQAAKSUAACtlAAAtZQAALyUAADBlAAAxZQAAMmUAADOlAAAH0cAANOUAADblAAA4ZQAADUQAADrBAAA5pQAAOuUAADvlAAAJCMAAPWUAAD7lAAAApUAAC0jAAAGlQAADJUAABKVAAAZlQAAH5UAACiVAAAwlQAAPJUAAECVAABHlQAATZUAAFKVAABWlQAAWpUAAF2VAABnlQAAcJUAAHiVAADpkgAAfZUAAIeVAACRlQAAm5UAAKGVAACmlQAAsJUAALWVAADClQAA0JUAANuVAADnlQAA85UAAAGWAAAOlgAAGpYAACaWAAB3RAAANJYAADmWAAA+lgAAQpYAAEaWAABKlgAATpYAAFSWAABZlgAAXpYAAGOWAABolgAAbZYAAHKWAADPBgAAt4AAAHeWAAB8lgAAgZYAABmTAACGlgAAiZYAAI6WAACTlgAAmJYAAJ6WAACklgAAs0sAAMAuAACplgAAr5YAALaWAAA/SgAAvJYAAMGWAADGlgAAypYAAM+WAADUlgAAHpMAANmWAADelgAA45YAAOmWAAAkkwAA7pYAAPGWAAD4lgAAAJcAAAaXAAAMlwAAEpcAAB2XAAAilwAAKZcAADCXAAA3lwAAP5cAAEiXAABRlwAAV5cAAF2XAABllwAAKZMAAGqXAABwlwAAdpcAAC+TAAB7lwAAgJcAAIiXAACQlwAAlpcAAJ2XAACjlwAAqpcAALGXAAC3lwAAv5cAAMmXAADQlwAA1pcAANuXAADhlwAA5pcAAOuXAADylwAA+5cAAAOYAAAImAAADpgAABWYAAAdmAAAI5gAACiYAAAumAAAN5gAAD6YAACahAAARJgAAEiYAABNmAAAVpgAAFuYAABgmAAAZZgAAGI6AABtmAAAcpgAAHeYAAB8mAAAgJgAAIWYAACKmAAAkZgAAJaYAACbmAAAoJgAADSTAAChZAAAppgAAGUKAACbAAAAqZgAAKyYAACwmAAAtJgAAL6YAADGmAAAzZgAANGYAADVmAAA2JgAAOCYAADnmAAA7pgAAGR8AAD3mAAA+pgAAAGZAAAHmQAADJkAABCZAAAXmQAAG5kAACOZAAArmQAAMpkAAEGZAABFmQAASZkAAEyZAABSmQAAWZkAAF2ZAABjmQAAZ5kAAG6ZAAB2mQAAfpkAAIWZAAD0kgAAjJkAAJSZAACZmQAApZkAABEvAAAYLwAAHy8AACYvAAAtLwAANC8AAHYCAACyAQAAq5kAALCZAAC1mQAAu5kAAMCZAADFmQAAShAAAMqZAADNmQAA0pkAANeZAADcmQAA4ZkAAOaZAADtmQAALWsAAPKZAAD3mQAA/JkAAAGaAAAGmgAADJoAABGaAAAXmgAA5JMAAB2aAAAimgAAKJoAAC6aAAA4mgAAPZoAAEKaAABGmgAAS5oAAFCaAABVmgAAWpoAAGeaAABsmgAAq2kAAB5PAAAlBAAAcJoAAHaaAAB6mgAAf5oAAISaAACKmgAAj5oAAJSaAACYmgAAnZoAAKKaAAComgAArZoAALKaAADwBAAAtpoAALuaAADAmgAAxZoAAMmaAADOmgAA05oAANiaAADemgAA5JoAAOmaAADtmgAA8ZoAAPaaAAD7mgAAAJsAAASbAAAJmwAAEZsAABWbAAAbmwAAH5sAACabAAAvmwAAOU4AAP+SAAA1mwAAPJsAAESbAABMmwAAU5sAAFmbAABimwAAb5sAAHubAACAmwAAhpsAAIqbAACrCwAAjpsAAJKbAABUmQAAm5sAAKabAACxmwAAtpsAAN6EAAC7mwAAwJsAAMSbAABWhQAAwmoAAMmbAADQmwAA1JsAANmbAAAFkwAADGUAAN2bAADimwAA6JsAAO2bAADxmwAA9ZsAAPibAAD8mwAAApwAAAucAAAWnAAAIpwAAAuTAAAnnAAAKpwAAC6cAAAynAAAN5wAADycAABBnAAARpwAAEucAABQnAAAVZwAAFqcAAB1AQAAX5wAAGScAABpnAAAbpwAAHOcAAB4nAAAfpwAAIOcAACInAAAjpwAAJOcAACZnAAAnpwAAKScAACpnAAArpwAALOcAAC4nAAAvZwAAMKcAADHnAAAzJwAANKcAADXnAAA3JwAAOGcAADmnAAA65wAAPCcAAD1nAAA+5wAAAGdAAAGnQAAC50AABCdAAAVnQAAGp0AAB+dAAAknQAAKZ0AAC6dAAAznQAAOJ0AAD2dAABCnQAAR50AAEydAABRnQAAVp0AAFudAABlnQAAb50AAHWdAABaAQAADgAAAHqdAAB9nQAAgZ0AAIWdAACNnQAAkZ0AAJWdAAAkewAAL0IAACAHAACYnQAAnZ0AAKGdAACmnQAAqp0AAK+dAACznQAAuJ0AALydAAC/nQAAwZ0AAMWdAADKnQAAzp0AANmdAADcnQAA3p0AAOKdAADunQAA+p0AAAOeAAAHngAAEZ4AABWeAAAbngAAIJ4AACmeAAAvngAANJ4AADmeAAA9ngAAQZ4AAEaeAABNngAAUp4AAFieAABdngAAYZ4AAGieAACVeQAAn3kAAGyeAABxngAAdp4AAHueAACCngAAhp4AAI2eAACTngAAvyMAAJeeAACgngAAqJ4AALeeAADFngAAzp4AANaeAADhngAA6p4AAO+eAAD2ngAAAJ8AANcfAAAKnwAAD58AABSfAAAYnwAAG58AACCfAAAknwAAKZ8AAC2fAAA0nwAAOZ8AAD6fAABDnwAATZ8AAFKfAABXnwAAXJ8AALgnAABhnwAAY58AAGufAABunwAAcZ8AAHmfAACInwAAkJ8AAJqfAACcnwAAn58AAKOfAACpnwAArZ8AALKfAAC3nwAAyZ8AANefAADqnwAA+58AAASgAAAMoAAAEaAAABagAAB6BQAAHKAAACKgAAAnoAAAMaAAADqgAABCoAAAR6AAAE2gAABSoAAAW6AAAGSgAABvoAAAdKAAAHugAACBoAAAhaAAAI6gAACVoAAAnaAAAKSgAACxoAAAuaAAAL2gAADHoAAAzKAAANCgAADYoAAA4KAAAOWgAADpoAAA7aAAAPagAAD8oAAAAaEAAAmhAAAToQAAHKEAACWhAAAuoQAAOaEAAEGhAABMoQAAVaEAAF2hAABkoQAAaqEAAG+hAAB6oQAAhaEAAIqhAACOoQAAkaEAAJWhAACfoQAAp6EAAK2hAAC4oQAAw6EAAM6hAADZoQAA5KEAAO+hAAD6oQAABaIAABGiAAAdogAAKaIAADWiAABBogAATaIAAFmiAABiogAAZqIAAG6iAAB0ogAAeqIAAIGiAACHogAAjKIAAJKiAACWogAAm6IAAKCiAAClogAAYJ0AAGqdAADkCQAAqqIAAKyiAACxogAAtqIAALuiAAC+ogAAwKIAAMSiAADHogAAzqIAANKiAABoLQAA1qIAANyiAADjogAA6aIAAPOiAAD4ogAA/qIAAAKjAAAHowAAFKMAAOJ7AAAaowAAIKMAACmjAAAyowAAflUAADmjAABCowAAjZUAAEqjAABPowAAU6MAAFyjAABkowAAa6MAAHCjAAB0owAAeaMAAH6jAACGowAAiqMAAJKjAACYowAAnqMAAKOjAACoowAArKMAAK+jAAC0owAAwaMAANGjAAARbQAA4qMAAO6jAAD/owAAC6QAABmkAAAibQAANW0AACWkAAAxpAAALQsAAD+kAABEpAAASaQAAE6kAABSpAAAWaQAAGWkAABspAAAdaQAAHikAACDpAAAjqQAAJakAACbpAAAn6QAAKSkAACppAAArqQAALOkAAC4pAAAvaQAAO4GAACzAwAAwqQAAMakAADKpAAAzaQAANKkAADXpAAA3aQAAOKkAADnpAAA7aQAAPOkAAD4pAAA/KQAAAGlAAAGpQAAC6UAAA+lAAASpQAAGKUAAB2lAAAipQAAJ6UAACulAAAwpQAANqUAAD6lAAAZfQAAQ6UAAEilAABPpQAAVaUAAFulAABgpQAAaKUAADZrAABvpQAAdKUAAHmlAAB+pQAAgqUAAIWlAACKpQAAjqUAAJKlAACZpQAAn6UAAKWlAACrpQAAsqUAALelAAC9pQAA26AAAMGlAADFpQAAyqUAANelAADcpQAA4qUAAOqlAADxpQAA+aUAAAOmAAAJpgAAD6YAABWmAAAZpgAAIqYAACqmAAAxpgAANqYAADumAACDMAAAQKYAAEqmAABRpgAAV6YAAGGmAABmpgAAbKYAAHSmAAC3DwAAe6YAAIKmAACIpgAAj6YAAL0PAACTpgAAmKYAAKOmAACqpgAAsKYAALmmAAC9pgAAwKYAAPkRAADHpgAAzqYAANSmAADapgAA4qYAAOymAAAdigAA86YAAPumAAABpwAABqcAAAynAAARpwAAFacAAPF6AAAbpwAAIqcAACinAAAwpwAAOacAAECnAABGpwAAUacAAERwAABXpwAAXqcAAGSnAABupwAAc6cAAHenAAB/pwAAh6cAAI6nAACUpwAAmacAANorAACtAwAAnqcAAKKnAACkpwAAqKcAAK2nAACwpwAAsqcAALenAAC9pwAAwqcAAMenAADOpwAA6ZkAANSnAADZpwAA3acAAOKnAADmpwAA76cAAPOnAAD5pwAAAKgAAAaoAAANqAAAEqgAABuoAAAgqAAAJKgAACmoAAAwqAAAOKgAAECoAABFqAAARGUAAEmoAABMqAAAUKgAAFSoAAA/MgAA4QMAAFioAABdqAAAZagAAGqoAABuqAAAd6gAAH6oAACCqAAAhqgAAI6oAACVqAAAZD8AAJ+oAACjqAAAp6gAAK+oAAC3qAAAvagAAMKoAADGqAAAz6gAAGg+AADVqAAA3qgAAOWoAADqqAAA8agAAPioAAAAqQAAB6kAAA+pAAAXqQAAIKkAACWpAAAsqQAAM6kAADqpAABBqQAASKkAAE2pAABUqQAAWqkAAGupAABzqQAAfakAAIWpAACMqQAAywEAAJCpAACWqQAAmqkAAJ+pAADmngAApakAAKipAACsqQAAsqkAAL2pAADFqQAAwg8AAM2pAADTqQAA2akAAOOpAADpqQAA8qkAAPupAAAFqgAADKoAABKqAAAXqgAAyA8AAM4PAAAgqgAAKKoAAC+qAAAzqgAA+jcAADuqAAA/qgAARqoAAE6qAABVqgAAXKoAAGKqAABrqgAAdaoAAHuqAACDqgAAjKoAAJOqAACbqgAAoqoAAGZoAACmqgAAraoAALOqAAC9qgAAxqoAAM6qAADZqgAA3aoAAOeqAADuqgAA86oAAPiqAAD+qgAABasAAA2rAAAWqwAAH6sAACmrAAA0qwAAO6sAAECrAABHqwAAywwAAE+rAABVqwAAWqsAAGGrAABnqwAAbasAAHKrAAB/qwAAjKsAAJmrAACgqwAApqsAAK6rAAC2qwAAu6sAAL+rAADDqwAAyKsAAM2rAADSqwAA16sAANyrAADhqwAAWwUAAOarAADqqwAA7qsAAPKrAAD2qwAA+qsAAP6rAAACrAAABqwAAAqsAAAOrAAAEqwAABasAAAarAAAHqwAACKsAAAmrAAAKqwAAC6sAAAyrAAANqwAADqsAAA+rAAAQqwAAEasAABKrAAATqwAAFKsAABWrAAAWqwAAF6sAABirAAAZqwAAGqsAABurAAAcqwAAHasAAB6rAAAfqwAAIKsAACGrAAAiqwAAI6sAACSrAAAlqwAAJqsAACerAAAoqwAAKasAACqrAAArqwAALKsAAC2rAAAuqwAAL6sAADCrAAAxqwAAMqsAADOrAAA0qwAANasAADarAAA3qwAAOKsAADmrAAA6qwAAO6sAADyrAAA9qwAAPqsAAD+rAAAAq0AAAatAAAKrQAADq0AABKtAAAWrQAAGq0AAB6tAAAirQAAJq0AACqtAAAurQAAMq0AADatAAA6rQAAPq0AAEKtAABGrQAASq0AAE6tAABSrQAAVq0AAFqtAABerQAAYq0AAGatAABqrQAAbq0AAHKtAAB2rQAAeq0AAH6tAACCrQAAhq0AAIqtAACOrQAAkq0AAJatAACarQAAnq0AAKKtAACmrQAAqq0AAK6tAACyrQAAtq0AALqtAAC+rQAAwq0AAMatAADKrQAAzq0AANKtAADWrQAA2q0AAN6tAADirQAA5q0AAOqtAADurQAA8q0AAPatAAD6rQAA/q0AAAKuAAAGrgAACq4AAA6uAAASrgAAFq4AABquAAAergAAIq4AACauAAAqrgAALq4AADKuAAA2rgAAOq4AAD6uAABCrgAARq4AAEquAABPrgAAU64AAFiuAABcrgAAYa4AAGWuAABqrgAAbq4AAHSuAAB5rgAAfa4AAIKuAACGrgAAi64AAI+uAACUrgAAmK4AAJ2uAAChrgAApq4AAKquAACvrgAAs64AALmuAAC/rgAAxK4AAMiuAADNrgAA0a4AANeuAADcrgAA4K4AAOWuAADprgAA7q4AAPKuAAD4rgAA/a4AAAGvAAAGrwAACq8AAA+vAAATrwAAGK8AAByvAAAirwAAJ68AACuvAAAwrwAANK8AADqvAAA/rwAAQ68AAEivAABMrwAAUa8AAFWvAABarwAAXq8AAGOvAABnrwAAba8AAHKvAAB2rwAAfK8AAIGvAACFrwAAi68AAJCvAACUrwAAma8AAJ2vAACirwAApq8AAKyvAACyrwAAuK8AAL6vAADErwAAyq8AANCvAADWrwAA268AAN+vAADkrwAA6K8AAO6vAADzrwAA968AAPyvAAAAsAAABbAAAAmwAAAOsAAAErAAABewAAAbsAAAILAAACSwAAApsAAALbAAADOwAAA4sAAAPLAAAEGwAABFsAAAS7AAAFGwAABWsAAAfwAAAD8AAABasAAAXLAAAGCwAABksAAAaLAAAG2wAABxsAAAdbAAAHqwAAB9KwAAf7AAAIWwAACTBgAA/xsAAIuwAACOsAAAk7AAAJewAACcsAAAoLAAAKSwAACpsAAAry8AAK2wAACxsAAAtbAAAHICAAC5sAAAYUgAAL6wAADCsAAAx7AAAMywAADRsAAA1bAAANywAADisAAAAnwAAOiwAADrsAAA77AAAPSwAAD6sAAA/rAAAAGxAAAJsQAAD7EAABSxAAAYsQAAG7EAAB+xAAAlsQAAKbEAAC2xAADpDgAA7g4AANI6AAAwsQAANLEAADixAAA8sQAAQLEAAEixAABPsQAAU7EAADY+AABasQAAaLEAAG+xAAB6sQAAaQEAAH+xAACDsQAAibEAAJWxAACbsQAAobEAAKaxAACssQAAsLEAAEWLAAC5sQAAv7EAAMixAADMsQAA0LEAANWxAADbsQAA4LEAAOSxAADpsQAA7bEAAPGxAAD4sQAA/rEAAAOyAAAOsgAAHbIAACyyAAA7sgAAS7IAAF2yAABSLwAAa7IAAHKyAAB4sgAAfLIAAH+yAACIsgAAjbIAAJGyAACZsgAACksAAKGyAAClsgAAr7IAALqyAADjigAABwQAAMeyAADQsgAA4rIAAPWyAAD+sgAABrMAAA6zAACgBgAAHDAAABKzAADOagAAFbMAABh7AAAaswAAwiwAAB+zAAAlswAAKrMAADCzAAA1swAAO7MAAECzAABGswAAS7MAAFGzAABXswAAXbMAAGKzAAA2swAAPLMAAGazAABBswAAR7MAAEyzAABrswAAUrMAAFizAADMIwAAShEAAHGzAAB5swAAfbMAAICzAACHswAAi7MAAJCzAACVswAAnLMAAKKzAACoswAArbMAAJpFAACxswAAKXsAALWzAAC5swAAvbMAAMSzAADKswAAzrMAAFiEAADXswAAWygAANuzAAAIKgAA3rMAAOWzAADrswAA77MAABM4AAD2swAA/LMAAAG0AAAItAAAD7QAABa0AAB3hwAAZSMAAB20AAAktAAAK7QAADG0AAA2tAAAPbQAAEi0AABOtAAAU7QAAFi0AABdtAAAYbQAAGa0AABttAAAN7MAAHG0AAB7tAAAhLQAAI+0AACVtAAAnbQAAKS0AACptAAArrQAALO0AAC4tAAAvbQAAMG0AADFtAAAzLQAANK0AADatAAAdgkAAEp3AAC7LwAAxy8AAMwvAADSLwAA47QAANcvAADcLwAA4i8AAOi0AADytAAA9rQAAOcvAAD7tAAA5E8AAP60AAADtQAAB7UAAAu1AAAWtQAAHrUAAHCkAAAmtQAAK7UAADK1AAA5tQAAPbUAAEC1AABItQAAXy8AAE+1AABStQAAWLUAAGK1AABhGgAAa7UAAHC1AAB2tQAAerUAAIK1AACGtQAAkLUAAJa1AACbtQAAprUAAK+1AAC4tQAAwbUAAMq1AADTtQAA3LUAAOW1AADrtQAA8bUAAPa1AAD8tQAAArYAAAi2AAANtgAAELYAABe2AAAdtgAAIbYAACa2AAAttgAANLYAADi2AAA7tgAARbYAAFK2AABbtgAAZLYAAG+2AAB8tgAAiLYAAJO2AACctgAAp7YAAKy2AAC1tgAAurYAAOwvAADAtgAAx7YAAM+2AADWtgAA27YAAOC2AAAwfAAA5LYAAOu2AAAOEQAAGQAAAO+2AAD0tgAATU8AAPi2AAD7tgAA/rYAABeFAAACtwAAgIcAAAq3AAAOtwAAErcAABW3AAAbtwAAIbcAACa3AABMkwAAL7cAADe3AAA9twAARLcAAAaFAABItwAA84UAAEy3AABVtwAAWbcAAGG3AABntwAAbbcAAHK3AAB2twAAmocAAHy3AAB/twAAh7cAAI+3AACXtwAAnBIAAJ23AAChtwAApbcAAKq3AACxtwAAt7cAALy3AADBtwAAxbcAAMu3AADQtwAA1rcAAC4SAAAxAwAA3bcAAOG3AADktwAA8LcAAPe3AAD8twAA4kcAAAC4AAAIuAAAELgAABi4AAAguAAAJ7gAAC+4AAA3uAAAPrgAAEa4AABOuAAAVrgAAF64AABmuAAAbrgAAHa4AAB+uAAAhrgAAI64AACWuAAAnbgAAKW4AACtuAAAtbgAAL24AADFuAAAzbgAANW4AADduAAA5bgAAO24AAD1uAAA/bgAAAW5AAANuQAAFbkAAB25AAAluQAALbkAADW5AAA8uQAARLkAAEu5AABTuQAAW7kAAGO5AABruQAAc7kAAHu5AACDuQAAi7kAAJa5AACKaAAAm7kAAJ65AACluQAAqbkAAK+5AACzuQAAubkAAL65AADEuQAAybkAAM65AADSuQAA1rkAAN25AADluQAA6rkAAO+5AAD5uQAA/7kAAAy6AAASugAAGLoAAB66AAAhugAAKLoAAC26AABUEgAAM7oAAPcSAADCAwAAOLoAADu6AAA+ugAAQboAAKCTAACmkwAARLoAAKyTAAC5kwAAv5MAAMWTAABKugAAy5MAANGTAABQugAAVroAAAoAAABeugAAZboAAGm6AABtugAAdboAAPOWAAB5ugAAfboAAIS6AACJugAAjboAAJK6AACYugAAnboAAKO6AACougAArLoAALC6AAC0ugAAuboAAL26AADCugAAxroAAMq6AADRugAA1roAANq6AADeugAA47oAAOe6AADsugAA8LoAAPS6AAD5ugAA/7oAABdJAAAcSQAABLsAAAi7AAALuwAAEbsAABW7AAAZuwAAdmQAAB67AAAiuwAAKLsAAC+7AAA1uwAAOrsAAAOfAABEuwAASbsAAFG7AABVuwAAWLsAAFy7AAAClwAAZLsAAHoSAABpuwAAbrsAAHK7AAB3uwAAe7sAAIC7AAB6PgAAi7sAAI+7AACSuwAAlrsAAJ67AACjuwAAp7sAAKy7AACxuwAAtbsAALm7AAC9uwAAwLsAAMS7AADHuwAAzLsAANG7AADWuwAA27sAAOC7AADluwAAxCEAAIo+AADquwAA7bsAAPO7AAD4uwAA/rsAAAO8AAAJvAAADrwAABS8AAAZvAAAH7wAACW8AAArvAAAMLwAADS8AAA4vAAAQ7wAAEu8AABSvAAAWLwAAF28AABovAAAcrwAAHi8AAB9vAAAhLwAAI28AACdvAAArbwAALe8AACkhAAAvrwAAMK8AADHvAAAzLwAANC8AADUvAAAGqsAANq8AADfvAAA47wAAOq8AADvvAAA9LwAAPi8AAD7vAAA/7wAAAW9AADyfwAACb0AANxlAAAOvQAAFb0AAB29AAAjvQAAKb0AADC9AAA4vQAAPr0AAEK9AABHvQAATb0AAFW9AABavQAAXr0AAGe9AABqKwAAb70AAHO9AAB7vQAAgr0AAIe9AACMvQAAkb0AAJW9AACYvQAAnr0AAKK9AAClvQAAqb0AALC9AAC1vQAAvL0AAMC9AADGvQAAyr0AANC9AADVvQAA2r0AAOUTAADsEwAA370AAOi9AADwvQAA9b0AAPu9AAAHvgAAFL4AACK+AAApvgAAL74AADW+AAA6vgAAQr4AAEW+AABHvgAAUr4AAF6+AABpvgAAeL4AAIm+AACdvgAAs74AALq+AADBvgAAyL4AAM6+AADSvgAAwyEAANW+AADZvgAA3b4AAOK+AADmvgAA6r4AAO2+AADxvgAA/74AAFNtAAASvwAAH78AACy/AAA5vwAAZW0AAEi/AAD+CgAAV78AAF2/AABhvwAAa78AAG+/AABzvwAAeL8AAHy/AACDvwAAiL8AAIy/AACTvwAAmb8AAJ6/AACkvwAArr8AALq/AADFvwAAyr8AANG/AADVvwAA2b8AANy/AADkvwAAH0sAACoQAADpvwAAPkkAAPa/AAD9vwAABMAAAArAAAAOwAAAEsAAABfAAAAdwAAAIsAAACjAAAAswAAAMMAAADPAAAA4wAAAPMAAAEHAAABGwAAAS8AAAFDAAABVwAAAWsAAAF/AAABkwAAAacAAAAMiAABJSQAAbsAAAHLAAAB4wAAAgcAAAIbAAACPwAAAlsAAAHGqAACcwAAAocAAAKXAAACswAAAscAAALjAAADAwAAAxsAAAMrAAADNwAAA0cAAANbAAABMCwAA3cAAAOTAAADowAAA68AAAPDAAAD1wAAA+8AAAADBAAAFwQAACcEAAA7BAAAYwQAAHcEAACPBAAAowQAA8rcAAC7BAAA0wQAAPMEAAEbBAABLwQAAUMEAAFTBAABZwQAAXsEAANkfAADlHwAAY8EAAGbBAABtwQAAc8EAAHzBAAAIKAAAZ6EAAITBAACIwQAAjMEAADKXAACUwQAAn8EAAKfBAABKqwAArsEAALPBAAC4wQAAw8EAAMrBAADVwQAASpcAAO1lAADdwQAAJBIAAOLBAAArQAAA6MEAAP2EAADuwQAA88EAAP3BAAAGwgAADcIAABPCAAAXwgAAGsIAACHCAAAnwgAALsIAADTCAAA+wgAARsIAAEzCAABSwgAAV8IAAFvCAABiwgAAZ8IAAG3CAAB0wgAAesIAAN6+AAB/wgAAg8IAAFVAAABeQAAAZ0AAAHBAAAB5QAAAlkAAAGkCAACfQAAAicIAAI7CAACRwgAAl8IAAJ/CAAABBQAApMIAAKjCAACtwgAAssIAALfCAAC+wgAAxMIAAMjCAADNwgAA08IAANfCAADpkwAA3MIAAOHCAADqwgAA8cIAAPvCAAABwwAAKYUAABLDAAAbwwAAI8MAACnDAAAuwwAANcMAADvDAABDwwAATMMAAFTDAABcwwAAYsMAAGbDAABrwwAAc8MAAJ+JAABTlwAAecMAAIzDAAC+SgAAmsMAAKrDAAC4wwAAvsMAAMPDAADIwwAAzcMAANPDAABZlwAA2MMAANvDAADiwwAA6cMAAPLDAAD3wwAA+8MAAKcBAABuDAAAAsQAAAfEAAAMxAAAfIEAADjDAAAQxAAAFcQAAB3EAAAhxAAAJMQAACnEAAAvxAAANcQAADrEAAA+xAAAcoUAAEHEAABGxAAASsQAAE3EAABSxAAAVsQAAFvEAABgxAAAZMQAAGnEAABtxAAAdMQAAHjEAAB8xAAAcmQAAH1kAACBxAAAhsQAAIzEAACRxAAAl8QAAJ3EAADGfwAAosQAAKbEAACpxAAAr8QAALTEAAC5xAAAvsQAAMPEAADIxAAAzcQAANLEAADXxAAA3cQAAOPEAADPOAAA8UsAAOjEAADtxAAA8sQAAPfEAAD8xAAAAcUAAAbFAAALxQAAxAEAAEQAAAD6kwAA/5MAAASUAAAKlAAAD5QAABSUAAAQxQAAGJQAABTFAAAYxQAAHMUAAB2UAAAjlAAAKsUAAC6UAAAzlAAAMsUAADfFAAA5lAAAPMUAAEHFAABKxQAAT8UAAFTFAABdxQAAY8UAAGnFAABvxQAASpQAAHzFAACFxQAAi8UAAE6UAACPxQAAU5QAAJTFAABYlAAAXZQAAJfFAACcxQAAoMUAAKbFAABrPwAArcUAAHU/AAC0xQAAucUAAGKUAAC9xQAAwsUAAMfFAADMxQAA0cUAANXFAADaxQAA38UAAOXFAADqxQAA78UAAPXFAAD7xQAAAMYAAATGAAAJxgAADsYAABPGAAAXxgAAHMYAACHGAAAmxgAALMYAADLGAAA4xgAAPcYAAEHGAABGxgAASsYAAGaUAABrlAAAcJQAAE7GAABSxgAAV8YAAFvGAABnxgAAdZQAAHuUAACBlAAAjZQAAG3GAABUewAAccYAAHbGAAB6xgAAf8YAAIbGAACLxgAAkMYAAJXGAACZxgAAncYAAKfGAACsxgAAscYAALXGAAC5xgAAvMYAAMTGAADJxgAAvZQAAM3GAABlBQAA08YAANjGAADexgAA5sYAAOrGAADzxgAA+8YAAP/GAAADxwAAC8cAABHHAAAZxwAAKccAAC7HAAAyxwAANscAADrHAAA/xwAARccAAFTHAADilAAAmwYAAO84AABYxwAA7AQAAPsEAABkxwAAbMcAAHPHAAB4xwAA+iMAAH/HAACExwAA+SkAANsDAABXCgAABzAAAIvHAACOKQAAkMcAAJPHAACcxwAAkAQAAKHHAACJvwAAqMcAALHHAAC2xwAAuscAAMLHAADJxwAAAGsAAI8KAADRxwAAEDIAANvHAADhxwAAiAkAAJIJAADqxwAA88cAAP3HAAAIyAAABg4AAPSiAAANyAAA7RAAAPgQAAAWJAAAlQQAABHIAAAZyAAAIMgAACXIAAApyAAALcgAADLIAABecQAA2MAAAGIwAAA6yAAAQ8gAAEzIAABUyAAAYcgAAGjIAABzyAAAeMgAAIXIAACSyAAAnsgAAKrIAAC2yAAAwcgAAM7IAADZyAAA5MgAAO7IAAD2yAAA/sgAAArJAAAWyQAAIckAACrJAAAyyQAAOckAAEXJAABMyQAAUskAAFvJAABhyQAAaMkAAHXJAAB6yQAAhMkAAInJAACPyQAAlMkAAOyzAACYyQAAmr0AAJ/JAACmyQAArskAALXJAABkCgAAvMkAAMfJAADRyQAA2skAAOLJAADsyQAA9MkAAP3JAAAHygAAEMoAABXKAAAbygAAIcoAAFYQAAAsygAANsoAAD/KAABIygAAUMoAAFrKAABiygAAa8oAAHDKAAB1ygAAesoAAEoGAAAvAAAAgsoAAIrKAACVygAAoMoAAIVNAACqygAArsoAALXKAAC7ygAAwMoAAMTKAADPygAA2coAAOLKAADtygAA8soAADJPAAA3TwAA+coAAALLAAAHywAAEcsAABbLAAAeywAAJssAAC3LAAAzywAAJAYAAA8BAAA3ywAAPcsAAHWzAABCywAARcsAAIwIAABtCgAATcsAAFHLAABUywAAkgUAAFrLAABzQQAAmgQAAF/LAABsywAA8woAAAgLAAB6ywAAhssAAJLLAAAWCwAAJwsAADYLAABGCwAAVwsAAKDLAACsywAAZgsAALrLAACgBAAApgQAAKwEAACPMQAAv8sAAMTLAADJywAAzcsAANzLAADrywAA+ssAAAnMAAAYzAAAJ8wAADbMAABFzAAAVMwAAGPMAAByzAAAgcwAAJDMAACfzAAArswAAL3MAADMzAAA28wAAOrMAAD5zAAACM0AABfNAAAmzQAANc0AAETNAABTzQAAYs0AAHHNAACAzQAAj80AAJ7NAACtzQAAvM0AAMvNAADazQAA6c0AAPjNAAAHzgAAFs4AACXOAAA0zgAAQ84AAFLOAABhzgAAcM4AAH/OAACOzgAAnc4AAKzOAAC7zgAAys4AANnOAADozgAA984AAAbPAAAVzwAAJM8AADPPAABCzwAAUc8AAGDPAABvzwAAfs8AAI3PAACczwAAq88AALrPAADJzwAA2M8AAOfPAAD2zwAABdAAABTQAAAj0AAAMtAAAEHQAABQ0AAAX9AAAG7QAAB90AAAjNAAAJvQAACq0AAAudAAAMjQAADX0AAA5tAAAPXQAAAE0QAAE9EAACLRAAAx0QAAQNEAAE/RAABe0QAAbdEAAHzRAACL0QAAmtEAAKnRAAC40QAAx9EAANbRAADl0QAA9NEAAAPSAAAS0gAAIdIAADDSAAA/0gAATtIAAF3SAABs0gAAe9IAAIrSAACZ0gAAqNIAALfSAADG0gAA1dIAAOTSAADz0gAAAtMAABHTAAAg0wAAL9MAAD7TAABN0wAAXNMAAGvTAAB60wAAidMAAJjTAACn0wAAttMAAMXTAADU0wAA49MAAPLTAAAB1AAAENQAAB/UAAAu1AAAPdQAAEzUAABb1AAAatQAAHnUAACI1AAAl9QAAKbUAAC11AAAxNQAANPUAADi1AAA8dQAAADVAAAP1QAAHtUAAC3VAAA81QAAS9UAAFrVAABp1QAAeNUAAIfVAACW1QAApdUAALTVAADD1QAA0tUAAOHVAADw1QAA/9UAAA7WAAAd1gAALNYAADvWAABK1gAAWdYAAGjWAAB31gAAhtYAAJXWAACk1gAAs9YAAMLWAADR1gAA4NYAAO/WAAD+1gAADdcAABzXAAAr1wAAOtcAAEnXAABY1wAAZ9cAAHbXAACF1wAAlNcAAKPXAACy1wAAwdcAANDXAADf1wAA7tcAAP3XAAAM2AAAG9gAACrYAAA52AAASNgAAFfYAABm2AAAddgAAITYAACT2AAAotgAALHYAADA2AAAz9gAAN7YAADt2AAA/NgAAAvZAAAa2QAAKdkAADjZAABH2QAAVtkAAGXZAAB02QAAg9kAAJLZAACh2QAAsNkAAL/ZAADO2QAA3dkAAOzZAAD72QAACtoAABnaAAAo2gAAN9oAAEbaAABV2gAAZNoAAHPaAACC2gAAkdoAAKDaAACv2gAAvtoAAM3aAADc2gAA69oAAPraAAAJ2wAAGNsAACfbAAA22wAARdsAAFTbAABj2wAActsAAIHbAACQ2wAAn9sAAK7bAAC92wAAzNsAANvbAADq2wAA+dsAAAjcAAAX3AAAJtwAADXcAABE3AAAU9wAAGLcAABx3AAAgNwAAI/cAACe3AAArdwAALzcAADL3AAA2twAAOncAAD43AAAB90AABbdAAAl3QAANN0AAEPdAABS3QAAYd0AAHDdAAB/3QAAjt0AAJ3dAACs3QAAu90AAMrdAADZ3QAA6N0AAPfdAAAG3gAAFd4AACTeAAAz3gAAQt4AAFHeAABg3gAAb94AAH7eAACN3gAAnN4AAKveAAC63gAAyd4AANjeAADn3gAA9t4AAAXfAAAU3wAAI98AADLfAABB3wAAUN8AAF/fAABu3wAAfd8AAIzfAACb3wAAqt8A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AB4WAQAkFgEAKRYBAC8WAQA0FgEAORYBAD8WAQBEFgEASRYBAOzAAABNFgEAURYBAFYWAQBaFgEAWk8AAF8WAQBiFgEAZxYBAG8WAQB3FgEALAYAANszAADhMwAAMQYAAH8WAQCGFgEAixYBAJQWAQCeFgEApRYBAKoWAQCvFgEANgYAALYWAQC7FgEA0k8AAL8WAQDEFgEAyxYBANEWAQDVFgEA4hYBAOgWAQDzFgEA/RYBAAQXAQDoTwAANykAAD4pAAD7EAAAAREAAAsXAQA7BgAAEBcBABkXAQAfFwEAJxcBAC4XAQA0FwEAOxcBAEcXAQBNFwEAUhcBAFkXAQBlFwEAcBcBAHoXAQCDFwEAjRcBAJcXAQCREAAAnxcBAMeRAADQkQAAEFAAAKwXAQCxFwEAthcBALsXAQDAFwEAxRcBAMoXAQBABgAARAYAAM8XAQDTFwEA1hcBAOEXAQDmFwEAKlAAAE4GAADuFwEA8xcBAPgXAQBLUAAABBgBAAcYAQANGAEAExgBABgYAQAgGAEAUwYAACUYAQAqGAEAMhgBADoYAQBBGAEAShgBAFIYAQBbGAEAXxgBAFgGAABoGAEAXQYAACtlAABtGAEAdBgBAHoYAQCiUAAAghgBAIwYAQCSGAEAlxgBAJ8YAQCmGAEArxgBALcYAQDBGAEAyhgBANQYAQDdGAEA6BgBAPIYAQD8GAEABRkBAA8ZAQAdGQEAKhkBADMZAQA7GQEARRkBAE4ZAQBaGQEAZRkBAHAZAQB6GQEA3k0AAH8ZAQBzNAAAiBkBAI4ZAQCTGQEAmhkBAKAZAQCnGQEArRkBAENMAAC3GQEAvRkBAMIZAQDNGQEA1BkBANsZAQDgGQEA6BkBAIQ0AACJNAAA8BkBAPYZAQD6GQEA6xAAAPYQAADuUAAATMEAAAIaAQAIGgEADRoBABUaAQAcGgEA3DgAACEaAQAnGgEALRoBAGgGAAAyGgEANRoBADsaAQBAGgEARRoBAEoaAQBPGgEAVBoBAFkaAQBeGgEAYxoBAGkaAQBvGgEAOwUAAHQaAQB5GgEAfhoBAIQaAQCJGgEAjhoBAJMaAQCYGgEAnRoBAKIaAQBxBgAAEgAAAKgaAQCsGgEAsRoBALUaAQC5GgEAvRoBAIqWAADCGgEALm4AAMcaAQDMGgEA0BoBANMaAQDXGgEA2xoBAOAaAQDkGgEA6RoBAO0aAQDwGgEA9hoBAM6kAADTpAAA2KQAAPkaAQAAGwEABhsBAA4bAQC+vwAAGBsBAB4bAQDepAAAkpcAAJmWAACflgAA7qQAAKWWAAAjGwEAKBsBACwbAQCzlwAAMxsBADYbAQA6GwEAQhsBAEkbAQBOGwEAURsBAFYbAQBbGwEAXxsBAGMbAQBmGwEAcBsBAHwbAQCDGwEAiRsBAKqWAACQGwEASZ4AAJMbAQCxJQAA3TUAAJYbAQCaGwEAnxsBADwQAACjGwEAphsBAKA/AACtGwEAtBsBAMEbAQDQGwEA3hsBAO4bAQD9GwEABhwBAA4cAQAWHAEAHxwBACgcAQAuHAEAMxwBAD0cAQBKHAEAVhwBAF0cAQBiHAEAaxwBAHgcAQB5qwAAihwBAI8cAQCWHAEAnBwBAKEcAQB/AwAAphwBAK4cAQC1HAEAvBwBAEGBAACPAwAAwhwBAMgcAQDNHAEA1xwBAN8cAQDlHAEA6hwBAL2WAAC8GgAAy5YAAO4cAQD4HAEA/RwBAAUdAQAPHQEAHh0BACQdAQAqHQEAMR0BANWWAAA2HQEAH5MAADodAQA/HQEASB0BAE8dAQBUHQEAWB0BAF0dAQBlHQEAE1AAAGwdAQBxHQEAdR0BAOUaAADvlgAAeR0BAH8dAQBZAQAAiR0BAJAdAQCXHQEAnR0BAKQdAQCpHQEAsh0BACU+AAACDwEADA8BALgdAQDAHQEAxB0BAMgdAQDMHQEA0B0BANUdAQDZHQEA3x0BAOcdAQDsHQEA8R0BAPgdAQD9HQEAAR4BAAYeAQAKHgEADh4BABQeAQAfHgEAJR4BACoeAQAuHgEAMx4BADceAQBrlwAAOx4BAHGXAAB3lwAAQB4BAEYeAQBNHgEAUh4BAFYeAQAwkwAAuU4AAFkeAQBdHgEAYh4BAGkeAQBvHgEAcx4BAHgeAQCrvQAAfh4BAIIeAQCJHgEAjR4BAJIeAQCYHgEAnh4BAKQeAQCwHgEAuR4BAMMeAQDJHgEA0B4BANUeAQDaHgEA3h4BAOEeAQDnHgEA7h4BAPMeAQD4HgEA/x4BAAYfAQANHwEAEx8BABgfAQAdHwEAJR8BAHyXAADpCQAAKh8BAC8fAQA1HwEAOh8BAEAfAQBFHwEASh8BAE8fAQBVHwEAkZcAAFofAQBgHwEAZh8BAGwfAQDXlwAAcR8BAHYfAQB7HwEA4pcAAIAfAQCFHwEAih8BAJAfAQCWHwEA55cAAJsfAQCgHwEApR8BAB6YAAAkmAAAqh8BAK8fAQApmAAAP5gAAJuEAABFmAAASZgAALQfAQCYNwAAuB8BAMAfAQDGHwEAzh8BANUfAQDbHwEA5R8BAOsfAQDyHwEAczEAAFeYAAD4HwEABSABAA4gAQAUIAEAHSABACMgAQApIAEAMCABAIVvAAA4IAEAPyABAEkgAQBRIAEAVCABAB+YAABZIAEAYCABAGUgAQBpIAEAbSABAHIgAQB2IAEAdhEAAHsgAQCAIAEAhSABACylAAAxpQAAiSABAD+lAACOIAEARKUAAJMgAQCZIAEAUKUAAFalAABcpQAAniABAKQgAQA3awAAryABALIgAQC+IAEAxiABAG6YAADKIAEA0yABAN0gAQDmIAEAeJgAAOsgAQDyIAEA+yABAAEhAQAJIQEAECEBABchAQAYGwAAKBQAABwhAQAqmAAAIiEBACUhAQArIQEAMiEBADchAQA8IQEAJW8AAEAhAQBGIQEATCEBAFEhAQBWIQEAWiEBAGAhAQBmIQEA1Z0AAGshAQDsqQAAC7EAABGxAACXmAAAnJgAAG8hAQBzIQEAdyEBAHohAQCHIQEAjSEBAJEhAQCUIQEAmSEBAEafAACdIQEANZMAAPBkAACjIQEA0RoAANkaAAB1KAAApiEBAKshAQCwIQEAtSEBALohAQC/IQEAxCEBAMkhAQDOIQEA0yEBANkhAQDeIQEA4yEBAOkhAQDuIQEA8yEBAPghAQD9IQEAAiIBAAciAQANIgEAEiIBABgiAQAdIgEAIiIBACciAQAsIgEAMSIBADYiAQA7IgEAQCIBAEUiAQBKIgEAUCIBAFUiAQBaIgEAXyIBAGQiAQBpIgEAbiIBAHQiAQB5IgEAfiIBAIMiAQCIIgEAjSIBAJIiAQCXIgEAnCIBAKEiAQCnIgEArCIBALEiAQC2IgEAuyIBAMEiAQDHIgEAzCIBANIiAQDXIgEA3CIBAOEiAQDmIgEA6yIBAJMFAACcAAAA8CIBAPQiAQD4IgEA/CIBALd2AAAAIwEABCMBAAkjAQANIwEAEiMBABYjAQAbIwEAICMBACUjAQAqIwEALiMBADIjAQA3IwEAOyMBAHQ+AABAIwEARCMBAEsjAQBVIwEAa0cAAF4jAQBnIwEAayMBAHAjAQB1IwEAeSMBAH0jAQDbdQAAwQwAAIEjAQCHIwEA41QAAIsjAQCUIwEAnCMBAKIjAQCnIwEAsyMBAL8jAQDEIwEAyCMBAM0jAQDRIwEA1yMBAN0jAQDiIwEA7CMBAPYjAQD8IwEABCQBAAkkAQANJAEAEyQBABgkAQAfJAEAJSQBACokAQAxJAEAOiQBAEMkAQBLJAEATyQBAJdJAABSJAEAWyQBAGMkAQBvJAEAeiQBAIUkAQCOJAEAkiQBAJskAQCjJAEArSQBALUkAQC8JAEAxiQBAMwkAQDRJAEA2CQBAOEkAQDnJAEA7CQBAPMkAQD5JAEABCUBADwAAABWkgAACiUBAMZ8AADQfAAAECUBABglAQAfJQEAJSUBACklAQAzJQEAPiUBAEYlAQBPJQEAVCUBAFklAQBeJQEAYiUBAGYlAQBuJQEArlQAAHUlAQB5JQEAfyUBAIklAQCQJQEAliUBAJwlAQCPpQAAoCUBAKIlAQClJQEAqyUBAK8lAQC6JQEAxCUBAMolAQDRJQEA2CUBADU+AADgJQEA5iUBAO8lAQD4JQEA/iUBACctAAAEJgEACiYBAA8mAQAUJgEAGyYBACAmAQAnJgEALSYBADImAQA6JgEARyYBAFAmAQBZJgEA9xgBAAEZAQBjJgEAaSYBAHImAQB4JgEAfiYBAIUmAQCMJgEAkyYBAJomAQChJgEApiYBAKomAQCuJgEAsSYBALsmAQC/JgEAyyYBACInAADUJgEA3yYBAOQmAQDoJgEAChkBAO4mAQD1JgEA/iYBAAYnAQAOJwEAEycBABcnAQAcJwEAIScBACsnAQAzJwEAPycBAEQnAQBIJwEATCcBAFInAQBaJwEAYScBAG0nAQB1JwEAgCcBAIcnAQCNJwEAlycBAJ0nAQChJwEAqicBALMnAQC6JwEAwCcBAMUnAQDJJwEAzScBANEnAQDaJwEA4ycBAOwnAQDzJwEA+ScBAP8nAQAFKAEACigBABEoAQAXKAEAHygBACYoAQAsKAEArDoAADEoAQA3KAEAOygBAPRCAAA/KAEARCgBAE4oAQBTKAEAXCgBAGIoAQBoKAEAcCgBAHcoAQB7KAEAfygBAIYoAQCMKAEAlCgBAJsoAQChKAEArCgBALAoAQC0KAEAuCgB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AGdRAQB1UQEAg1EBAJFRAQCfUQEArVEBALtRAQDJUQEA11EBAOVRAQDzUQEAAVIBAA9SAQAdUgEAK1IBADlSAQBHUgEAVVIBAGNSAQBxUgEAf1IBAI1SAQCbUgEAqVIBALdSAQDFUgEA01IBAOFSAQDvUgEA/VIBAAtTAQAZUwEAJ1MBADVTAQBDUwEAUVMBAF9TAQBtUwEAe1MBAIlTAQCXUwEApVMBALNTAQDBUwEAz1MBAN1TAQDrUwEA+VMBAAdUAQAVVAEAI1QBADFUAQA/VAEATVQBAFtUAQBpVAEAd1QBAIVUAQCTVAEAoVQBAK9UAQC9VAEAy1QBANlUAQDnVAEA9VQBAANVAQARVQEAH1UBAC1VAQA7VQEASVUBAFdVAQBlVQEAc1UBAIFVAQCPVQEAnVUBAKtVAQC5VQEAx1UBANVVAQDjVQEA8VUBAP9VAQANVgEAG1YBAClWAQA3VgEARVYBAFNWAQBhVgEAb1YBAH1WAQCLVgEAmVYBAKdWAQC1VgEAw1YBANFWAQDfVgEA7VYBAPtWAQAJVwEAF1cBACVXAQAzVwEAQVcBAE9XAQBdVwEAa1cBAHlXAQCHVwEAlVcBAKNXAQCxVwEAv1cBAM1XAQDbVwEA6VcBAPdXAQAFWAEAE1gBACFYAQAvWAEAPVgBAEtYAQBZWAEAZ1gBAHVYAQCDWAEAkVgBAJ9YAQCtWAEAu1gBAMlYAQDXWAEA5VgBAPNYAQABWQEAD1kBAB1ZAQArWQEAOVkBAEdZAQBVWQEAY1kBAHFZAQB/WQEAjVkBAJtZAQCpWQEAt1kBAMVZAQDTWQEA4VkBAO9ZAQD9WQEAC1oBABlaAQAnWgEANVoBAENaAQBRWgEAX1oBAG1aAQB7WgEAiVoBAJdaAQClWgEAs1oBAMFaAQDPWgEA3VoBAOtaAQD5WgEAB1sBABVbAQAjWwEAMVsBAD9bAQBNWwEAW1sBAGlbAQB3WwEAhVsBAJNbAQChWwEAr1sBAL1bAQDLWwEA2VsBAOdbAQD1WwEAA1wBABFcAQAfXAEALVwBADtcAQBJXAEAV1wBAGVcAQBzXAEAgVwBAI9cAQCdXAEAq1wBALlcAQDHXAEA1VwBAONcAQDxXAEA/1wBAA1dAQAbXQEAKV0BADddAQBFXQEAU10BAGFdAQBvXQEAfV0BAItdAQCZXQEAp10BALVdAQDDXQEA0V0BAN9dAQDtXQEA+10BAAleAQAXXgEAJV4BADNeAQBBXgEAT14BAF1eAQBrXgEAeV4BAIdeAQCVXgEAo14BALFeAQC/XgEAzV4BANteAQDpXgEA914BAAVfAQATXwEAIV8BAC9fAQA9XwEAS18BAFlfAQBnXwEAdV8BAINfAQCRXwEAn18BAK1fAQC7XwEAyV8BANdfAQDlXwEA818BAAFgAQAPYAEAHWABACtgAQA5YAEAR2ABAFVgAQBjYAEAcWABAH9gAQCNYAEAm2ABAKlgAQC3YAEAxWABANNgAQDhYAEA72ABAP1gAQALYQEAGWEBACdhAQA1YQEAQ2EBAFFhAQBfYQEAbWEBAHthAQCJYQEAl2EBAKVhAQCzYQEAwWEBAM9hAQDdYQEA62EBAPlhAQAHYgEAFWIBACNiAQAxYgEAP2IBAE1iAQBbYgEAaWIBAHdiAQCFYgEAk2IBAKFiAQCvYgEAvWIBAMtiAQDZYgEA52IBAPViAQADYwEAEWMBAB9jAQAtYwEAO2MBAEljAQBXYwEAZWMBAHNjAQCBYwEAj2MBAJ1jAQCrYwEAuWMBAMdjAQDVYwEA42MBAPFjAQD/YwEADWQBABtkAQApZAEAN2QBAEVkAQBTZAEAYWQBAG9kAQB9ZAEAi2QBAJlkAQCnZAEAtWQBAMNkAQDRZAEA32QBAO1kAQD7ZAEACWUBABdlAQAlZQEAM2UBAEFlAQBPZQEAXWUBAGtlAQB5ZQEAh2UBAJVlAQCjZQEAsWUBAL9lAQDNZQEA22UBAOllAQD3ZQEABWYBABNmAQAhZgEAL2YBAD1mAQBLZgEAWWYBAGdmAQB1ZgEAg2YBAJFmAQCfZgEArWYBALtmAQDJZgEA12YBAOVmAQDzZgEAAWcBAA9nAQAdZwEAK2cBADlnAQBHZwEAVWcBAGNnAQBxZwEAf2cBAI1nAQCbZwEAqWcBALdnAQDFZwEA02cBAOFnAQDvZwEA/WcBAAtoAQAZaAEAJ2gBADVoAQBDaAEAUWgBAF9oAQBtaAEAe2gBAIloAQCXaAEApWgBALNoAQDBaAEAz2gBAN1oAQDraAEA+WgBAAdpAQAVaQEAI2kBADFpAQA/aQEATWkBAFtpAQBpaQEAd2kBAIVpAQCTaQEAoWkBAK9pAQC9aQEAy2kBANlpAQDnaQEA9WkBAANqAQARagEAH2oBAC1qAQA7agEASWoBAFdqAQBlagEAc2oBAIFqAQCPagEAnWoBAKtqAQC5agEAx2oBANVqAQDjagEA8WoBAP9qAQANawEAG2sBAClrAQA3awEARWsBAFNrAQBhawEAb2sBAH1rAQCLawEAmWsBAKdrAQC1awEAw2sBANFrAQDfawEA7WsBAPtrAQAJbAEAF2wBACVsAQAzbAEAQWwBAE9sAQBdbAEAa2wBAHlsAQCHbAEAlWwBAKNsAQCxbAEAv2wBAM1sAQDbbAEA6WwBAPdsAQAFbQEAE20BACFtAQAvbQEAPW0BAEttAQBZbQEAZ20BAHVtAQCDbQEAkW0BAJ9tAQCtbQEAu20BAMltAQDXbQEA5W0BAPNtAQABbgEAD24BAB1uAQArbgEAOW4BAEduAQBVbgEAY24BAHFuAQB/bgEAjW4BAJtuAQCpbgEAt24BAMVuAQDTbgEA4W4BAO9uAQD9bgEAC28BABlvAQAnbwEANW8BAENvAQBRbwEAX28BAG1vAQB7bwEAiW8BAJdvAQClbwEAs28BAMFvAQDPbwEA3W8BAOtvAQD5bwEAB3ABABVwAQAjcAEAMXABAD9wAQBNcAEAW3ABAGlwAQB3cAEAhXABAJNwAQChcAEAr3ABAL1wAQDLcAEA2XABAOdwAQD1cAEAA3EBABFxAQAfcQEALXEBADtxAQBJcQEAV3EBAGVxAQBzcQEAgXEBAI9xAQCdcQEAq3EBALlxAQDHcQEA1XEBAONxAQDxcQEA/3EBAA1yAQAbcgEAKXIBADdyAQBFcgEAU3IBAGFyAQBvcgEAfXIBAItyAQCZcgEAp3IBALVyAQDDcgEA0XIBAN9yAQDtcgEA+3IBAAlzAQAXcwEAJXMBADNzAQBBcwEAT3MBAF1zAQBrcwEAeXMBAIdzAQCVcwEAo3MBALFzAQC/cwEAzXMBANtzAQDpcwEA93MBAAV0AQATdAEAIXQBAC90AQA9dAEAS3QBAFl0AQBndAEAdXQBAIN0AQCRdAEAn3QBAK10AQC7dAEAyXQBANd0AQDldAEA83QBAAF1AQAPdQEAHXUBACt1AQA5dQEAR3UBAFV1AQBjdQEAcXUBAH91AQCNdQEAm3UBAKl1AQC3dQEAxXUBANN1AQDhdQEA73UBAP11AQALdgEAGXYBACd2AQA1dgEAQ3YBAFF2AQBfdgEAbXYBAHt2AQCJdgEAl3YBAKV2AQCzdgEAwXYBAM92AQDddgEA63YBAPl2AQAHdwEAFXcBACN3AQAxdwEAP3cBAE13AQBbdwEAaXcBAHd3AQCFdwEAk3cBAKF3AQCvdwEAvXcBAMt3AQDZdwEA53cBAPV3AQADeAEAEXgBAB94AQAteAEAO3gBAEl4AQBXeAEAZXgBAHN4AQCBeAEAj3gBAJ14AQCreAEAuXgBAMd4AQDVeAEA43gBAPF4AQD/eAEADXkBABt5AQApeQEAN3kBAEV5AQBTeQEAYXkBAG95AQB9eQEAi3kBAJl5AQCneQEAtXkBAMN5AQDMeQEA13kBAOJ5AQDseQEA93kBAP95AQAHegEADXoBABd6AQAfegEAJXoBAO+JAAAqegEAMHoBADl6AQBFegEASnoBAFF6AQBWLAAAnFUAAFd6AQBgegEAZXoBAGl6AQBuegEAdXoBAHt6AQCAegEAhXoBAI16AQCVegEAn3oBAKR6AQCsegEAlzgAALB6AQC2egEAvHoBAMJ6AQDIegEAznoBANR6AQDaegEA4HoBAOZ6AQDsegEA8noBAPh6AQD+egEABHsBAAp7AQAQewEAFnsBABx7AQAiewEAKHsBAC57AQA0ewEAOnsBAEB7AQBGewEATHsBAFJ7AQBYewEAXnsBAGR7AQBqewEAcHsBAHZ7AQB8ewEAgnsBAIh7AQCPewEAlXsBAJt7AQChewEAp3sBAK17AQCzewEAuXsBAL97AQDFewEAy3sBANF7AQDXewEA3XsBAON7AQDpewEA73sBAPV7AQD7ewEAAXwBAAd8AQANfAEAE3wBABl8AQAffAEAJXwBACt8AQAxfAEAN3wBAD18AQBDfAEASXwBAE98AQBVfAEAW3wBAGF8AQBnfAEAbXwBAHN8AQB5fAEAf3wBAIV8AQCLfAEAkXwBAJd8AQCdfAEAo3wBAKl8AQCvfAEAtXwBALt8AQDCfAEAyHwBAM58AQDUfAEA2nwBAOB8AQDmfAEA7HwBAPJ8AQD4fAEA/nwBAAR9AQAHfQEACX0BABh9AQAlfQEALH0BADJ9AQA9fQEAQn0BAEZ9AQBLfQEAUn0BAFh9AQBdfQEAZX0BADUvAQA/LwEAa30BAHJ9AQB8fQEAZjEAAIN9AQCIfQEA4ooAAJF9AQCWfQEAnX0BAKd9AQCvfQEAt30BAMB9AQDJfQEAz30BANV9AQDafQEA4X0BAOh9AQDtfQEA8X0BAPl9AQBAGQEA/n0BAAd+AQAPfgEAFn4BABt+AQAffgEAKH4BAC5+AQAxfgEANX4BAD5+AQBIfgEAskoBAFF+AQBVfgEAXX4BAGF+AQBnfgEAcn4BAHx+AQClVQAAh34BAJB+AQCYfgEAoH4BAKd+AQBTGQEAkyYAAK9+AQCzfgEAvH4BAMN+AQDGfgEAyn4BAI+BAADNfgEA0X4BANZ+AQDnfgEA834BADwxAAD/fgEABH8BAAl/AQAOfwEAqWMAABJ/AQAXfwEAHH8BACJ/AQAnfwEA4hkAACx/AQCtYwAAMX8BADZ/AQA8fwEAQ38BAEh/AQBNfwEAU38BAFl/AQBffwEAZH8BAGp/AQBufwEAfH8BAIR/AQCMfwEAkn8BAJd/AQCefwEAqH8BALF/AQC2fwEAu38BAMB/AQDIfwEA0n8BAN1/AQDifwEA6H8BAO1/AQD2fwEAIxMBAJASAAD7fwEADYABACCAAQAtgAEAO4ABAEuAAQBSgAEAWYABAGKAAQBpgAEAb4ABAHaAAQB7gAEAgYABAIaAAQCMgAEAlIABAJqAAQCfgAEApIABALSAAQBJMQAAwoABAMmAAQDRgAEA14ABANuAAQDegAEA5IABAOmAAQDugAEA9oABAP2AAQACgQEAC4EBABGBAQAWgQEAHIEBACKBAQArgQEANIEBAFCpAAA5gQEARIEBAEuBAQBTgQEAXIEBAP42AABlgQEAa4EBAHOBAQB5gQEAf4EBAIWBAQCKgQEAkYEBAJeBAQAJNwAAnIEBAJ+BAQCkgQEAcZoAAK6BAQC3gQEAvIEBAMSBAQDLgQEA0YEBANaBAQDegQEA5YEBAPCBAQAAggEAEIIBACCCAQAwggEAQIIBAFCCAQBgggEAcIIBAICCAQCQggEAoIIBALCCAQDAggEA0IIBAOCCAQDwggEAAIMBABCDAQAggwEAMIMBAECDAQBQgwEAYIMBAHCDAQCAgwEAkIMBAKCDAQCwgwEAwIMBANCDAQDggwEA8IMBAACEAQAQhAEAIIQBADCEAQBAhAEAUIQBAGCEAQBwhAEAgIQBAJCEAQCghAEAsIQBAMCEAQDQhAEA4IQBAPCEAQAAhQEAEIUBACCFAQAwhQEAQIUBAFCFAQBghQEAcIUBAICFAQCQhQEAoIUBALCFAQDAhQEA0IUBAOCFAQDwhQEAAIYBABCGAQAghgEAMIYBAECGAQBQhgEAYIYBAHCGAQCAhgEAkIYBAKCGAQCwhgEAwIYBANCGAQDghgEA8IYBAACHAQAQhwEAIIcBADCHAQBAhwEAUIcBAGCHAQBwhwEAgIcBAJCHAQCghwEAsIcBAMCHAQDQhwEA4IcBAPCHAQAAiAEAEIgBACCIAQAwiAEAQIgBAFCIAQBgiAEAcIgBAICIAQCQiAEAoIgBALCIAQDAiAEA0IgBAOCIAQDwiAEAAIkBABCJAQAgiQEAMIkBAECJAQBQiQEAYIkBAHCJAQCAiQEAkIkBAKCJAQCwiQEAwIkBANCJAQDgiQEA8IkBAACKAQAQigEAIIoBADCKAQBAigEAUIoBAGCKAQBwigEAgIoBAJCKAQCgigEAsIoBAMCKAQDQigEA4IoBAPCKAQAAiwEAEIsBACCLAQAwiwEAQIsBAFCLAQBgiwEAcIsBAICLAQCQiwEAoIsBALCLAQDAiwEA0IsBAOCLAQDwiwEAAIwBABCMAQAgjAEAMIwBAECMAQBQjAEAYIwBAHCMAQCAjAEAkIwBAKCMAQCwjAEAwIwBANCMAQDgjAEA8IwBAACNAQAQjQEAII0BADCNAQBAjQEAUI0BAGCNAQBwjQEAgI0BAJCNAQCgjQEAsI0BAMCNAQDQjQEA4I0BAPCNAQAAjgEAEI4BACCOAQAwjgEAQI4BAFCOAQBgjgEAcI4BAICOAQCQjgEAoI4BALCOAQDAjgEA0I4BAOCOAQDwjgEAAI8BABCPAQAgjwEAMI8BAECPAQBQjwEAYI8BAHCPAQCAjwEAkI8BAKCPAQCwjwEAwI8BANCPAQDgjwEA8I8BAACQAQAQkAEAIJABADCQAQBAkAEAUJABAGCQAQBwkAEAgJABAJCQAQCgkAEAsJABAMCQAQDQkAEA4JABAPCQAQAAkQEAEJEBACCRAQAwkQEAQJEBAFCRAQBgkQEAcJEBAICRAQCQkQEAoJEBALCRAQDAkQEA0JEBAOCRAQDwkQEAAJIBABCSAQAgkgEAMJIBAECSAQBQkgEAYJIBAHCSAQCAkgEAkJIBAKCSAQCwkgEAwJIBANCSAQDgkgEA8JIBAACTAQAQkwEAIJMBADCTAQBAkwEAUJMBAGCTAQBwkwEAgJMBAJCTAQCgkwEAsJMBAMCTAQDQkwEA4JMBAPCTAQAAlAEAEJQBACCUAQAwlAEAQJQBAFCUAQBglAEAcJQBAICUAQCQlAEAoJQBALCUAQDAlAEA0JQBAOCUAQDwlAEAAJUBABCVAQAglQEAMJUBAECVAQBQlQEAYJUBAHCVAQCAlQEAkJUBAKCVAQCwlQEAwJUBANCVAQDglQEA8JUBAACWAQAQlgEAIJYBADCWAQBAlgEAUJYBAGCWAQBwlgEAgJYBAJCWAQCglgEAsJYBAMCWAQDQlgEA4JYBAPCWAQAAlwEAEJcBACCXAQAwlwEAQJcBAFCXAQBglwEAcJcBAICXAQCQlwEAoJcBALCXAQDAlwEA0JcBAOCXAQDwlwEAAJgBABCYAQAgmAEAMJgBAECYAQBQmAEAYJgBAHCYAQCAmAEAkJgBAKCYAQCwmAEAwJgBANCYAQDgmAEA8JgBAACZAQAQmQEAIJkBADCZAQBAmQEAUJkBAGCZAQBwmQEAgJkBAJCZAQCgmQEAsJkBAMCZAQDQmQEA4JkBAPCZAQAAmgEAEJoBACCaAQAwmgEAQJoBAFCaAQBgmgEAcJoBAICaAQCQmgEAoJoBALCaAQDAmgEA0JoBAOCaAQDwmgEAAJsBABCbAQAgmwEAMJsBAECbAQBQmwEAYJsBAHCbAQCAmwEAkJsBAKCbAQCwmwEAwJsBANCbAQDgmwEA8JsBAACcAQAQnAEAIJwBADCcAQBAnAEAUJwBAGCcAQBwnAEAgJwBAJCcAQCgnAEAsJwBAMCcAQDQnAEA4JwBAPCcAQAAnQEAEJ0BACCdAQAwnQEAQJ0BAFCdAQBgnQEAcJ0BAICdAQCQnQEAoJ0BALCdAQDAnQEA0J0BAOCdAQDwnQEAAJ4BABCeAQAgngEAMJ4BAECeAQBQngEAYJ4BAHCeAQCAngEAkJ4BAKCeAQCwngEAwJ4BANCeAQDgngEA8J4BAACfAQAQnwEAIJ8BADCfAQBAnwEAUJ8BAGCfAQBwnwEAgJ8BAJCfAQCgnwEAsJ8BAMCfAQDQnwEA4J8BAPCfAQAAoAEAEKABACCgAQAwoAEAQKABAFCgAQBgoAEAcKABAICgAQCQoAEAoKABALCgAQDAoAEA0KABAOCgAQDwoAEAAKEBABChAQAgoQEAMKEBAEChAQBQoQEAYKEBAHChAQCAoQEAkKEBAKChAQCwoQEAwKEBANChAQDgoQEA8KEBAACiAQAQogEAIKIBADCiAQBAogEAUKIBAGCiAQBwogEAgKIBAJCiAQCgogEAsKIBAMCiAQDQogEA4KIBAPCiAQAAowEAEKMBACCjAQAwowEAQKMBAFCjAQBgowEAcKMBAICjAQCQowEAoKMBALCjAQDAowEA0KMBAOCjAQDwowEAAKQBABCkAQAgpAEAMKQBAECkAQBQpAEAYKQBAHCkAQCApAEAkKQBAKCkAQCwpAEAwKQBANCkAQDgpAEA8KQBAAClAQAQpQEAIKUBADClAQBApQEAUKUBAGClAQBwpQEAgKUBAJClAQCgpQEAsKUBAMClAQDQpQEA4KUBAPClAQAApgEAEKYBACCmAQAwpgEAQKYBAFCmAQBgpgEAcKYBAICmAQCQpgEAoKYBALCmAQDApgEA0KYBAOCmAQDwpgEAAKcBABCnAQAgpwEAMKcBAECnAQBQpwEAYKcBAHCnAQCApwEAkKcBAKCnAQCwpwEAwKcBANCnAQDgpwEA8KcBAACoAQAQqAEAIKgBADCoAQBAqAEAUKgBAGCoAQBwqAEAgKgBAJCoAQCgqAEAsKgBAMCoAQDQqAEA4KgBAPCoAQAAqQEAEKkBACCpAQAwqQEAQKkBAFCpAQBgqQEAcKkBAICpAQCQqQEAoKkBALCpAQDAqQEA0KkBAOCpAQDwqQEAAKoBABCqAQAgqgEAMKoBAECqAQBQqgEAYKoBAHCqAQCAqgEAkKoBAKCqAQCwqgEAwKoBANCqAQDgqgEA8KoBAACrAQAQqwEAIKsBADCrAQBAqwEAUKsBAGCrAQBwqwEAgKsBAJCrAQCgqwEAsKsBAMCrAQDQqwEA4KsBAPCrAQAArAEAEKwBACCsAQAwrAEAQKwBAFCsAQBgrAEAcKwBAICsAQCQrAEAoKwBALCsAQDArAEA0KwBAOCsAQDwrAEAAK0BABCtAQAgrQEAMK0BAECtAQBQrQEAYK0BAHCtAQCArQEAkK0BAKCtAQCwrQEAwK0BANCtAQDgrQEA8K0BAACuAQAQrgEAIK4BADCuAQBArgEAUK4BAGCuAQBwrgEAgK4BAJCuAQCgrgEAsK4BAMCuAQDQrgEA4K4BAPCuAQAArwEAEK8BACCvAQAwrwEAQK8BAFCvAQBgrwEAcK8BAICvAQCQrwEAoK8BALCvAQDArwEA0K8BAOCvAQDwrwEAALABABCwAQAgsAEAMLABAECwAQBQsAEAYLABAHCwAQCAsAEAkLABAKCwAQCwsAEAwLABANCwAQDgsAEA8LABAACxAQAQsQEAILEBADCxAQBAsQEAULEBAGCxAQBwsQEAgLEBAJCxAQCgsQEAsLEBAMCxAQDQsQEA4LEBAPCxAQAAsgEAELIBACCyAQAwsgEAQLIBAFCyAQBgsgEAcLIBAICyAQCQsgEAoLIBALCyAQDAsgEA0LIBAOCyAQDwsgEAALMBABCzAQAgswEAMLMBAECzAQBQswEAYLMBAHCzAQCAswEAkLMBAKCzAQCwswEAwLMBANCzAQDgswEA8LMBAAC0AQAQtAEAILQBADC0AQBAtAEAULQBAGC0AQBwtAEAgLQBAJC0AQCgtAEAsLQBAMC0AQDQtAEA4LQBAPC0AQAAtQEAELUBACC1AQAwtQEAQLUBAFC1AQBgtQEAcLUBAIC1AQCQtQEAoLUBALC1AQDAtQEA0LUBAOC1AQDwtQEAALYBABC2AQAgtgEAMLYBAEC2AQBQtgEAYLYBAHC2AQCAtgEAkLYBAKC2AQCwtgEAwLYBANC2AQDgtgEA8LYBAAC3AQAQtwEAILcBADC3AQBAtwEAULcBAGC3AQBwtwEAgLcBAJC3AQCgtwEAsLcBAMC3AQDQtwEA4LcBAPC3AQAAuAEAELgBABq4AQAjuAEAKLgBADC4AQCRLAEANbgBADu4AQBAuAEAR7gBAFC4AQBYuAEAXLgBAOoQAABiuAEAabgBAG+4AQBzuAEAJVAAAHO1AADlDAAAeLgBAHy4AQCAuAEAh7gBAI24AQCWuAEAnLgBAKO4AQCnuAEAvLgBANK4AQDiuAEA87gBAAa5AQAPuQEAGbkBACG5AQAouQEAL7kBADW5AQD+gAAAQ7kBAEe5AQBNuQEAVbkBAGG5AQBnuQEAb7kBAHa5AQB7uQEAgLkBAIS5AQCMuQEAk7kBAJe5AQCduQEAo7kBAKi5AQCKDwAAjcwAAK65AQCyuQEAtrkBALq5AQC/uQEAxLkBAMm5AQDPuQEA1bkBANu5AQDiuQEA6LkBAO+5AQD1uQEA+7kBAAC6AQAGugEAC7oBAA+6AQAsmwEAFLoBAGybAQCczAAAGboBAB66AQAmugEAKroBAC+6AQA2ugEAP7oBAEa6AQBMugEAVboBAFm6AQBgugEAZLoBAGe6AQBuugEAdLoBAH26AQCHugEAkboBAJa6AQCaugEAoboBAKm6AQCyugEAtroBAL66AQDEugEAyboBAM66AQDUugEA2roBAN+6AQDjugEAn3wAAOm6AQDtugEA8boBAPS6AQD5ugEAAbsBAAu7AQARuwEAFrsBACC7AQBpwQAAKLsBADS7AQA6uwEAQbsBAEe7AQBLuwEAULsBAFa7AQBiuwEAbbsBAHS7AQB6uwEAgbsBAIi7AQCUuwEAm7sBAKG7AQD9YwAApbsBAK27AQCzuwEAursBAMC7AQDGuwEAzLsBANG7AQDWuwEA27sBAN+7AQDouwEA8LsBAPu7AQDwHgAAALwBAPFNAAAGvAEACrwBAA68AQASvAEAGrwBACO8AQAnvAEALrwBADe8AQA/vAEATLwBAFK8AQBsnQEAfY4AAFe8AQBZvAEAXrwBAGO8AQBovAEAbbwBAHK8AQB3vAEAfLwBAIG8AQCGvAEAi7wBAJC8AQCVvAEAmrwBAJ+8AQClvAEAqrwBAK+8AQC0vAEAubwBAL68AQDDvAEAyLwBAM28AQDTvAEA2bwBAN+8AQDkvAEA6bwBAPW8AQD6vAEAlQcAADYAAAD/vAEABL0BAHuaAAAIvQEAgJoAAIWaAACLmgAAkJoAAAy9AQCVmgAAn2gAACK9AQAmvQEAKr0BAC+9AQAzvQEAmZoAADe9AQA/vQEARr0BAEy9AQBWvQEAnpoAAF29AQBgvQEAZb0BAGm9AQByvQEAjCsAAHq9AQCjmgAAA2gAAH29AQCBvQEAib0BACEFAACOvQEArpoAAJG9AQCWvQEAm70BAKh5AACyeQAAvqcAAKC9AQClvQEAqr0BAK+9AQC1vQEAur0BAMO9AQDIvQEA0b0BANm9AQDgvQEA5r0BAOu9AQDwvQEA9b0BAP+9AQAIvgEAEL4BABW+AQAdvgEAIb4BACm+AQAtvgEANL4BADu+AQBDvgEASr4BAOqZAABWtAAAUL4BAFa+AQBbvgEAYL4BALo4AACfLgAAZb4BAGq+AQBvvgEAdb4BAHy+AQCCvgEAi74BAJC+AQCYvgEAor4BAKm+AQCzvgEAub4BAL6+AQDEvgEAyL4BALtVAADPvgEAhqsAANy+AQDhvgEA6L4BAO6+AQD9vgEApZIAAF0mAQAKvwEADr8BABe/AQAgvwEAJ78BAC2/AQA1vwEAO78BAEO/AQBMvwEAVL8BAFu/AQDOtAAAYb8BAGS/AQBovwEAbL8BAHC/AQC0LgAAdr8BAH2/AQCDvwEAi78BAJC/AQCUvwEA3HEAAJq/AQCdvwEApb8BAKy/AQC0vwEAwb8BAM+/AQDWvwEA3L8BAOO/AQDpvwEAvJoAAO2/AQDzvwEA+78BAALAAQAKwAEAEsABABjAAQDBmgAAIMABACbAAQArwAEANcABADvAAQBEwAEA2JEAADKlAABMwAEAUcABAFbAAQBawAEAX8ABAGPAAQBrwAEAcMABAB1GAABWSQAAf8EAAHTAAQB5wAEAxpoAALpGAAB9wAEAicABAI7AAQCSwAEAmcABAKLAAQCmwAEArsABALTAAQC5wAEAwcABAMnAAQDRwAEA2cABAOHAAQDpwAEA9MABAPrAAQCYIwAA/8ABAAXBAQAKwQEAD8EBABrBAQAjwQEAL8EBAD7BAQD+mwAARMEBAGhOAADKmgAASMEBAE/BAQBVwQEAWcEBAGVyAABgwQEAZsEBAG3BAQAbvgAAdsEBAHzBAQCFwQEAi8EBAJDBAQCYwQEAnsEBAKPBAQDUmgAAqMEBALHBAQC6wQEAaLsBAMPBAQDKwQEA0MEBANbBAQDfwQEA6cEBAO/BAQD3wQEA/sEBAALCAQDZmgAABcIBAN+aAABIBQAACsIBABLCAQAawgEAJMIBAC3CAQA1wgEAPMIBAEbCAQDqmgAASsIBAEzCAQBQwgEAVcIBAFnCAQBdwgEAY8IBAGjCAQBswgEAd8IBAHzCAQCFwgEAisIBAOoMAACOwgEAlcIBAJnCAQCiwgEAqsIBALLCAQC5wgEAvsIBAMPCAQCaIAEAx8IBAMrCAQDQwgEA2MIBAN7CAQDiwgEA58IBAO7CAQDzwgEA+MIBAPzCAQADwwEACcMBAA7DAQBRpQAAEsMBABXDAQAawwEAHsMBACPDAQAqwwEAL8MBADPDAQAUugAAO8MBALt5AADEeQAAQcMBAEfDAQBNwwEAUsMBAFbDAQBZwwEAY8MBAGzDAQBxwwEAd8MBAH7DAQCEwwEAiMMBAJDDAQCVwwEAV6UAALVLAQCZwwEAocMBAKjDAQCuwwEAtcMBALrDAQDBwwEAxsMBAMrDAQDQwwEA1cMBADwNAQDbwwEA4cMBAH4oAADmwwEA68MBAO/DAQD0wwEA+cMBAP7DAQACxAEAB8QBAAzEAQASxAEAF8QBABzEAQAixAEAKMQBAC3EAQAxxAEANsQBADvEAQBAxAEARMQBAGRyAABJxAEATsQBAFTEAQBaxAEAYMQBAGXEAQBpxAEAbsQBAHPEAQAsrAEAeMQBAH3EAQCCxAEAh8QBAGysAQCbzQAAjMQBAPKaAACUxAEAmMQBAKDEAQCoxAEAs8QBALjEAQC8xAEAfmoAAJpBAQDBxAEAx8QBAMzEAQAhEgAA1sQBAN3EAQDixAEA6sQBAPPEAQD4xAEA/MQBAAHFAQAFxQEADcUBABXFAQAcxQEAly0BACLFAQAqxQEAMcUBADzFAQBCxQEASMUBAPyaAABLxQEAUsUBAFrFAQBfxQEAY8UBAAKDAACkFwEAacUBAG7FAQB1xQEAesUBAA8oAAB+xQEAhsUBAI3FAQCUxQEAncUBAKTFAQCqxQEAuMUBAMDFAQA2GgAA0sQBAMbFAQDLxQEA0cUBANXFAQDYxQEA4MUBAOfFAQDsxQEA+cUBAADGAQAGxgEACsYBABLGAQAXxgEAHsYBACTGAQApxgEAsxgBAC7GAQAxxgEAOsYBAEHGAQA8rQEAR8YBAErGAQBSxgEAWMYBAGHGAQBrxgEAdcYBAH7GAQCJxgEAkcYBAJzGAQChxgEApcYBAKrGAQCuxgEAQagAALbGAQAzSQAASqgAALvGAQAbjAEAK4wBADuMAQBLjAEAW4wBAMDGAQB7jAEAi4wBAJuMAQCrjAEAG40BACuNAQDExgEAS40BAFuNAQDIxgEAzMYBANDGAQDUxgEAS44BAGuOAQDYxgEAi44BANzGAQDgxgEAG48BACuPAQA7jwEAS48BAOTGAQCLjwEAm48BAOjGAQAbkAEAK5ABADuQAQBLkAEAW5ABAGuQAQB7kAEAi5ABAJuQAQCrkAEAG5EBACuRAQA7kQEAS5EBAFuRAQBrkQEAe5EBAIuRAQCbkQEAq5EBAOzGAQCrmAEAG5kBAFuZAQBrmQEAe5kBAIuZAQCbmQEAq5kBABuaAQArmgEAO5oBAPDGAQBrmgEA9MYBAIuaAQCbmgEAq5oBAPjGAQD9xgEAAscBAAfHAQAMxwEAEccBABbHAQAaxwEAHscBACPHAQAoxwEALMcBADHHAQA2xwEAOscBAD/HAQBExwEASccBAE7HAQBSxwEAV8cBAFzHAQBgxwEAZccBAGnHAQBtxwEAcccBAHXHAQB6xwEAfscBAILHAQCGxwEAiscBAI7HAQCSxwEAlscBAJrHAQCexwEAo8cBAKjHAQCtxwEAsscBALfHAQC8xwEAwccBAMbHAQDLxwEA0McBANTHAQDYxwEA3McBAODHAQDkxwEA6McBAO3HAQDxxwEA9scBAPrHAQD/xwEABMgBAAjIAQAMyAEAEcgBABXIAQAZyAEAHcgBACHIAQAlyAEAKcgBAC3IAQAxyAEANcgBADnIAQA9yAEAQcgBAEXIAQBJyAEATsgBAFPIAQBXyAEAW8gBAF/IAQBjyAEAZ8gBAGvIAQBwyAEAdMgBAHjIAQB8yAEAgMgBAITIAQCIyAEAjcgBAJHIAQCWyAEAmsgBAJ7IAQCiyAEApsgBAKrIAQCuyAEAssgBALbIAQC6yAEAvsgBAMLIAQDHyAEAy8gBAM/IAQDTyAEA18gBANvIAQDfyAEA48gBAOfIAQDryAEA78gBAPPIAQD4yAEA/MgBAADJAQAFyQEACskBAA7JAQASyQEAFskBABrJAQAeyQEAIskBACbJAQAqyQEAL8kBADPJAQA4yQEAPMkBAEHJAQBFyQEASskBAE7JAQBUyQEAWckBAF3JAQBiyQEAZskBAGvJAQBvyQEAdMkBAHjJAQB9yQEAmwUAAIHJAQCFyQEA6AsAAK8GAAAFbwAASAYAAHt5AACJyQEA8QsAAI3JAQACBQAAkskBAMgEAACWyQEAmskBAJ7JAQCiyQEApskBAKrJAQAJDAAArskBALbJAQC9yQEAxMkBANLJAQANDAAAXh8AANvJAQDjyQEA6skBAPXJAQD+yQEAAsoBAAnKAQAVygEAIsoBAC/KAQA6ygEAP8oBAEbKAQBSygEAVsoBABEMAABPNwAAYMoBAGXKAQBuygEAeMoBAH3KAQCGygEAFQwAAI7KAQCSygEAl8oBAJ7KAQCkygEAqcoBALLKAQC6ygEAxsoBANDKAQDNBAAAAz0AAN3KAQDhygEA58oBAPXKAQABywEADcsBABXLAQAfywEAKMsBADHLAQA6ywEAQssBAE3LAQBVywEAKRIAAF/LAQBqywEAc8sBAHnLAQCIywEAj8sBAJXLAQCaywEA0KgAAJ/LAQAtDAAABz0AAKPLAQCoywEAr8sBAMonAAC4ywEAvssBAE8SAADIywEAMgwAAH6YAADRywEANhcBANjLAQDcywEA4ssBAO3LAQDzywEA+MsBAP/LAQAFzAEADcwBABTMAQAazAEAJcwBADXMAQA/zAEASMwBAFPMAQBczAEAY8wBAGnMAQBzzAEAe8wBAIHMAQCQzAEAlswBAJvMAQCfzAEApswBAK7MAQCyzAEAtcwBALvMAQDCzAEAyMwBANDMAQDZzAEA4cwBAOfMAQDwzAEA58oAAP7MAQADzQEACc0BACRFAAAOzQEAG80BACfNAQAwzQEAOM0BAD/NAQBDzQEAR80BAErNAQBRzQEAWM0BAGDNAQBozQEAcc0BAHnNAQC/RAAAgc0BAIbNAQCKzQEAls0BAJ3NAQCkzQEArc0BALoDAAC3zQEAwM0BAMvNAQBHDAAAz80BANPNAQDZzQEA5s0BAPLNAQD8zQEABc4BABHOAQA5fQAAHM4BACTOAQAtzgEAOM4BAEPOAQBNzgEAV84BAF/OAQBozgEAcM4BAAo1AAB3zgEAe84BAH7OAQCDzgEAiM4BAIzOAQCSzgEA0gQAAJnOAQCdzgEArzcAAKHOAQCszgEAtc4BAL3OAQDGzgEAzs4BAN7OAQDpzgEA8s4BAPrOAQAGzwEAEc8BACHPAQArzwEAQM8BAE7PAQBbzwEAY88BAGrPAQCMHwAAd88BAHzPAQCCzwEAPxoAAIjPAQCLzwEAks8BAJzPAQAeJAAAo88BAKjPAQCtzwEAtM8BALzPAQDEzwEAys8BAM/PAQDVzwEA2c8BAOHPAQDqzwEA8s8BAPfPAQAA0AEAB9ABAIYsAACPLAAADdABABjQAQAe0AEAI9ABACnQAQBXDAAAXAwAAC/QAQAkBAAANdABADzQAQBD0AEAUNABAFrQAQBf0AEAGgkAAFcAAABn0AEAbtABAHPQAQB70AEAhdABAI7QAQCU0AEAndABAKXQAQCv0AEAs9ABALfQAQC80AEAwNABAMzQAQBzDAAA1NABANzQAQDh0AEA7NABAPfQAQAD0QEADtEBABjRAQAh0QEAfWUAACbRAQAs0QEAMdEBADvRAQBF0QEAStEBAOCFAABQ0QEAVdEBAF7RAQCTZQAAYtEBAJ5lAABn0QEAoRIAAAgAAABu0QEAd9EBAH7RAQCF0QEAi9EBAJDRAQCU0QEAmtEBAP6FAACf0QEApNEBANwZAQCp0QEArtEBALTRAQC60QEAwtEBAMfRAQDP0QEA19EBAODRAQDn0QEA7dEBAPTRAQD60QEAAdIBAAbSAQCRuQAAfcoAAAzSAQAW0gEAJAcAACAAAAAd0gEAItIBAC/SAQA00gEAPNIBAEHSAQBH0gEAjQwAAHh4AABM0gEAVNIBAFvSAQBg0gEAZdIBAG7SAQDsEAAA9xAAAAgfAQB20gEAetIBAGMGAABMBwAAf9IBAITSAQCL0gEAo4cAAFAHAABDAQAAktIBAJjSAQCd0gEAowwAAKHSAQCm0gEArdIBAFQHAACy0gEAuNIBAL3SAQDJ0gEANBsAANPSAQDa0gEAWwcAAODSAQDl0gEA7NIBAPPSAQAC0wEACdMBABTTAQAZ0wEAIdMBANoKAAAl0wEAMdMBADbTAQA60wEAQNMBAGCFAAAfCQAARNMBAE/TAQBT0wEAV9MBAF3TAQBh0wEAatMBAG7TAQB50wEAfdMBAE0JAADHlwAAgdMBAIvTAQCT0wEA/gwAAJnTAQCi0wEAqtMBAOwpAACv0wEAt9MBALzTAQDA0wEAydMBANDTAQDW0wEA4AwAAGRFAADa0wEA59MBAJOrAAD50wEA/tMBAAbUAQAO1AEAGNQBANstAAB9PQAAJNQBADHUAQA41AEAQtQBAFDUAQBX1AEAZ9QBAG7UAQB01AEAzWUAAGo6AAB71AEAgtQBAIzUAQCV1AEAms0AAKHUAQCp1AEAIc4AALDUAQCz1AEAudQBAL/UAQDF1AEAy9QBANHUAQDY1AEA39QBAOXUAQDr1AEA8dQBAPfUAQD91AEAA9UBAAnVAQAP1QEAFdUBABvVAQAh1QEAJ9UBAC3VAQAz1QEAOdUBAD/VAQBF1QEAS9UBAFHVAQBX1QEAXdUBAGPVAQBp1QEAb9UBAHXVAQB71QEAgdUBAIfVAQCN1QEAk9UBAJnVAQCf1QEApdUBAKvVAQCx1QEAt9UBAL3VAQDD1QEAydUBAM/VAQDV1QEA29UBAOHVAQDn1QEA7dUBAPPVAQD51QEA/9UBAAXWAQAL1gEAEdYBABjWAQAe1gEAJdYBACzWAQAy1gEAOdYBAEDWAQBG1gEATNYBAFLWAQBY1gEAXtYBAGTWAQBq1gEAcNYBAHbWAQB81gEAgtYBAIjWAQCO1gEAlNYBAJrWAQDuDAAAzCkAAKDWAQCq1gEAsNYBALjWAQC81gEAmsoBAPIMAADA1gEATbwBAH5kAABVEgAAoRAAAMTWAQD4DAAAyNYBANLWAQDY1gEA3tYBAOTWAQDq1gEA8NYBAPbWAQD81gEAAtcBAAjXAQAO1wEAFNcBABrXAQAg1wEAJtcBACzXAQAy1wEAONcBAD7XAQBE1wEAStcBAFDXAQBW1wEAXNcBAGLXAQBo1wEAb9cBAHbXAQB81wEAgtcBAIjXAQCO1wEAlNcBAJrXAQDXBAAAoNcBAKXXAQCq1wEAr9cBALTXAQC51wEAvtcBAMPXAQDI1wEAzNcBANDXAQDU1wEA2NcBANzXAQDg1wEA5NcBAOjXAQDs1wEA8tcBAPjXAQD+1wEABNgBAAjYAQAM2AEAENgBABTYAQAY2AEAHNgBACDYAQAk2AEAKNgBAC3YAQAy2AEAN9gBADzYAQBB2AEARtgBAEvYAQBQ2AEAVdgBAFrYAQBf2AEAZNgBAGnYAQBu2AEAc9gBAHjYAQB92AEAgtgBAIfYAQCM2AEAkdgBAJbYAQCb2AEAoNgBAKXYAQCq2AEAr9gBALTYAQC52AEAvtgBAMPYAQDI2AEAzdgBANLYAQDX2AEA3NgBAOHYAQDm2AEA69gBAPDYAQD12AEA+tgBAP/YAQAE2QEACdkBAA7ZAQAT2QEAGNkBAB3ZAQAi2QEAJ9kBACzZAQAx2QEANtkBADvZAQBA2QEARdkBAErZAQBP2QEAVNkBAFnZAQBe2QEAY9kBAGjZAQBt2QEActkBAHfZAQB82QEAgdkBAIbZAQCL2QEAkNkBAJXZAQCa2QEAn9kBAKTZAQCp2QEArtkBALPZAQC42QEAvdkBAMLZAQDH2QEAzNkBANHZAQDW2QEA29kBAODZAQDl2QEA6tkBAO/ZAQD02QEA+dkBAP7ZAQAD2gEACNoBAA3aAQAS2gEAF9oBABzaAQAh2gEAJtoBACvaAQAw2gEANdoBADraAQA/2gEARNoBAEnaAQBO2gEAU9oBAFjaAQBd2gEAYtoBAGfaAQBs2gEAcdoBAHbaAQB72gEAgNoBAIXaAQCK2gEAj9oBAJTaAQCZ2gEAntoBAKPaAQCo2gEArdoBALLaAQC32gEAvNoBAMHaAQDG2gEAy9oBANDaAQDV2gEA2toBAN/aAQDk2gEA6doBAO7aAQDz2gEA+NoBAP3aAQAC2wEAB9sBAAzbAQAR2wEAFtsBABvbAQAg2wEAJdsBACrbAQAv2wEANNsBADnbAQA+2wEAQ9sBAEjbAQBN2wEAUtsBAFfbAQBc2wEAYdsBAGbbAQBr2wEAcNsBAHXbAQB62wEAf9sBAITbAQCJ2wEAjtsBAJPbAQCY2wEAndsBAKLbAQCo2wEArdsBALLbAQC32wEAvNsBAMHbAQDG2wEAy9sBANHbAQDW2wEA29sBAODbAQDl2wEA6tsBAO/bAQD02wEA+dsBAP7bAQAD3AEACNwBAA3cAQAS3AEAF9wBABzcAQAh3AEAJtwBACvcAQAw3AEANdwBADrcAQA/3AEARNwBAEncAQBO3AEAU9wBAFjcAQBd3AEAYtwBAGfcAQBs3AEAcdwBAHrcAQB/3AEAiNwBAI3cAQCW3AEAm9wBAKTcAQCp3AEAstwBALfcAQDA3AEAxdwBAM7cAQDT3AEA3NwBAOHcAQDm3AEA79wBAPPcAQD83AEAAd0BAArdAQAP3QEAGN0BAB3dAQAm3QEAK90BADTdAQA53QEAQt0BAEfdAQBQ3QEAVd0BAF7dAQBj3QEAbN0BAHHdAQB63QEAf90BAITdAQCJ3QEAjt0BAJPdAQCY3QEAnd0BAKHdAQCm3QEAq90BALDdAQC13QEAut0BAL/dAQDF3QEAyt0BAM/dAQDU3QEA2t0BAN7dAQDj3QEA6d0BAO7dAQDz3QEA+N0BAP3dAQAC3gEAB94BAAzeAQAR3gEAFt4BABveAQAh3gEAJt4BACveAQAw3gEANt4BADveAQBA3gEARd4BAEreAQBQ3gEAVd4BAFreAQBf3gEAZN4BAGneAQBv3gEAdN4BAHneAQB+3gEAg94BAIjeAQCN3gEAkt4BAJfeAQCc3gEAod4BAKbeAQCr3gEAsN4BALXeAQC63gEAv94BAMTeAQDJ3gEAzt4BANPeAQDY3gEA3d4BAOLeAQDo3gEA7t4BAPTeAQD53gEA/t4BAAPfAQAI3wEADt8BABTfAQAa3wEAH98BACTfAQAp3wEAL98BADTfAQA53wEAPt8BAEPfAQBI3wEATd8BAFLfAQBX3wEAXN8BAGHfAQBm3wEAa98BAHDfAQB13wEAet8BAH/fAQCF3wEAi98BAJHfAQCW3wEAm98BAKDfAQCl3wEAq98BALHfAQC33wEAvN8BAMHfAQDG3wEAy98BANDfAQDV3wEA2t8BAN/fAQDk3wEA50sAAOnfAQDv3wEA9N8BAPnfAQD+3wEAA+ABAAjgAQAO4AEAE+ABABjgAQAd4AEAIuABACfgAQAt4AEAMuABADfgAQA84AEAQeABAEbgAQBL4AEAUOABAFXgAQBa4AEAX+ABAGTgAQBp4AEAbuABAHPgAQB44AEAfeABAILgAQCH4AEAjOABAJHgAQCW4AEAm+ABAKHgAQCm4AEAq+ABALDgAQC14AEAuuABAL/gAQDE4AEAyeABAM7gAQDT4AEA2OABAN3gAQDi4AEA5+ABAOzgAQDx4AEA9uABAPvgAQAA4QEABeEBAArhAQAP4QEAFOEBABnhAQAe4QEAI+EBACjhAQAt4QEAMuEBADfhAQA84QEAQeEBAEbhAQBL4QEAUOEBAFXhAQBa4QEAX+EBAGThAQBp4QEAb+EBAHThAQB54QEAfuEBAIPhAQCI4QEAjeEBAJLhAQCX4QEAnOEBAKHhAQCm4QEArOEBALHhAQC34QEAvOEBAMHhAQDG4QEAy+EBANDhAQDV4QEA2+EBAODhAQDl4QEA6+EBAPDhAQD14QEA+uEBAP/hAQAE4gEACuIBABDiAQAV4gEAGuIBAPw4AAAf4gEAJOIBACniAQAu4gEAM+IBADjiAQA94gEAQuIBAEfiAQBM4gEAUeIBAFbiAQBb4gEAYOIBAGXiAQBq4gEAb+IBAHTiAQB54gEAfuIBAIPiAQCI4gEAjeIBAJLiAQCX4gEAnOIBAKHiAQCm4gEAq+IBALDiAQC14gEAuuIBAL/iAQDE4gEAyeIBAM7iAQDT4gEA2OIBAN3iAQDi4gEA5+IBAOziAQDx4gEA9uIBAPviAQAA4wEABeMBAArjAQAP4wEAFOMBABnjAQAe4wEAI+MBACjjAQAt4wEAMuMBADfjAQA84wEAQeMBAEbjAQBL4wEAUOMBAFXjAQBa4wEAX+MBAGXjAQBq4wEAb+MBAHTjAQB54wEAf+MBAITjAQCJ4wEAjuMBAJPjAQCY4wEAneMBAKPjAQCo4wEAreMBALLjAQC34wEAvOMBAMLjAQDH4wEAzOMBANHjAQDW4wEA2+MBAOHjAQDm4wEA6+MB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AJkEAAChBAAAqQQAALEEAAC5BAAAwQQAAMkEAADRBAAA2QQAAOAEAADnBAAA7wQAAPcEAAD/BAAABwUAAA8FAAAXBQAAHwUAACcFAAAvBQAANQUAADoFAAA/BQAARwUAAE8FAABXBQAAXwUAAGQFAABsBQAAdAUAAHwFAACEBQAAjAUAAJQFAACdBQAApgUAAK0FAAC0BQAAvAUAAMQFAADMBQAA1AUAANwFAADkBQAA7wUAAPQFAAD5BQAAAAYAAAcGAAAOBgAAFQYAAB0GAAAlBgAAKgYAAC8GAAA3BgAAPwYAAEcGAABPBgAAVwYAAF8GAABnBgAAbwYAAHcGAAB/BgAAhwYAAI8GAACXBgAAnwYAAKcGAACvBgAAtwYAAL8GAADGBgAAzQYAANQGAADbBgAA4gYAAOkGAADwBgAA9wYAAP8GAAAHBwAADwcAABcHAAAeBwAAJQcAAC0HAAA1BwAAPQcAAEUHAABNBwAAVQcAAF0HAABlBwAAbQcAAHUHAAB9BwAAgwcAAIkHAACPBwAAlgcAAJ0HAACiBwAApwcAAK0HAAC0BwAAuwcAAMIHAADJBwAA0QcAANkHAADfBwAA5QcAAOoHAADwBwAA9wcAAP4HAAAFCAAACggAAA8IAAAUCAAAGwgAACIIAAApCAAAMAgAADcIAAA9CAAARQgAAE8IAABXCAAAXggAAGUIAABqCAAAbwgAAHYIAAB9CAAAgQgAAIYIAACLCAAAkAgAAJgIAAChCAAAqAgAAK8IAAC4CAAAvwgAAMYIAADLCAAA0ggAANkIAADgCAAA5wgAAO4IAADzCAAA+ggAAAEJAAAJCQAADgkAABMJAAAYCQAAIgkAACYJAAAsCQAAMgkAADgJAAA+CQAARgkAAFMJAABbCQAAYAkAAGoJAABvCQAAdAkAAH4JAACDCQAAigkAAJEJAACZCQAAoQkAAKgJAACvCQAAtgkAAL0JAADHCQAA0QkAANsJAADlCQAA7wkAAPkJAAADCgAADQoAABIKAAAcCgAAJgoAADAKAAA6CgAAQgoAAEoKAABRCgAAWAoAAGAKAABoCgAAcAoAAHgKAAB/CgAAhgoAAJAKAACaCgAAogoAAKoKAACyCgAAtwoAAMEKAADGCgAAzgoAANYKAADbCgAA4AoAAOgKAADwCgAA+woAAAYLAAAOCwAAFgsA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AOYVAADrFQAA8RUAAPYVAAD7FQAAABYAAAUWAAAKFgAADxYAABQWAAAcFgAAJBYAACwWAAA0FgAAPBYAAEEWAABFFgAASRYAAFAWAABaFgAAZBYAAGgWAABsFgAAcBYAAHYWAAB9FgAAgRYAAIYWAACKFgAAjxYAAJMWAACYFgAAnBYAAKEWAACmFgAAqxYAALAWAAC1FgAAuhYAAL8WAADEFgAAyRYAAM4WAADTFgAA2BYAAN0WAADiFgAA5xYAAOsWAADvFgAA9RYAAPkWAAD+FgAABBcAAAwXAAARFwAAFhcAAB0XAAAiFwAAJxcAAC4XAAA3FwAAQBcAAEsXAABTFwAAWBcAAF0XAABiFwAAaRcAAG4XAAB0FwAAeRcAAH4XAACDFwAAiBcAAI0XAACSFwAAmhcAAKAXAAClFwAAqRcAAK4XAACzFwAAuBcAAL0XAADCFwAAxxcAAMwXAADQFwAA1hcAANoXAADfFwAA5BcAAOkXAADtFwAA8hcAAPcXAAD8FwAAARgAAAUYAAAKGAAADhgAABMYAAAYGAAAHRgAACIYAAAoGAAALRgAADMYAAA3GAAAPBgAAEAYAABEGAAASRgAAE4YAABTGAAAWBgAAF0YAABiGAAAZxgAAGsYAABxGAAAdRgAAHoYAAB/GAAAhBgAAIgYAACNGAAAkhgAAJcYAACcGAAAoBgAAKUYAACpGAAArhgAALMYAAC4GAAAvRgAAMMYAADIGAAAzhgAANIYAADXGAAA2xgAAOMYAADoGAAA7RgAAPIYAAD5GAAA/hgAAAQZAAAJGQAADhkAABMZAAAYGQAAHRkAACIZAAAqGQAAMBkAADUZAAA6GQAAPxkAAEQZAABJGQAATxkAAFUZAABcGQAAYxkAAGwZAAB1GQAAfBkAAIMZAACMGQAAlRkAAJoZAACfGQAApBkAAKkZAACuGQAAsxkAALgZAAC9GQAAyBkAANMZAADYGQAA3RkAAOQZAADrGQAA8xkAAPsZAAAAGgAABRoAAAoaAAAPGgAAExoAABcaAAAbGgAAIRoAACcaAAArGgAAMhoAADcaAABBGgAASxoAAFEaAABXGgAAXxoAAGcaAABvGgAAdxoAAH4aAACFGgAAjRoAAJUaAACdGgAApRoAAK0aAAC1GgAAvRoAAMUaAADNGgAA1RoAANwaAADjGgAA6RoAAO8aAAD3GgAA/xoAAAYbAAANGwAAFRsAAB0bAAAjGwAAKRsAADEbAAA5GwAAQRsAAEkbAABPGwAAVRsAAF0bAABlGwAAbRsAAHUbAAB8GwAAgxsAAIsbAACTGwAAmxsAAKMbAACoGwAArRsAALQbAAC7GwAAxRsAAM8bAADTGwAA2xsAAOMbAADqGwAA8RsAAPkbAAABHAAACBwAAA8cAAAXHAAAHxwAACYcAAAtHAAANRwAAD0cAABCHAAASRwAAFAcAABXHAAAXhwAAGQcAABqHAAAchwAAHocAAB/HAAAhBwAAIwcAACUHAAAnBwAAKQcAACsHAAAtBwAALscAADCHAAAyhwAANIcAADaHAAA4hwAAOkcAADwHAAA9hwAAPwcAAAFHQAADh0AABYdAAAeHQAAJR0AACwdAAAzHQAAOh0AAEIdAABKHQAAUh0AAFodAABiHQAAah0AAHIdAAB6HQAAhB0AAI4dAACVHQAAnB0AAKMdAACqHQAAsR0AALgdAAC/HQAAxh0AAM0dAADUHQAA2x0AAOIdAADpHQAA8B0AAPcdAAD+HQAABR4AAAweAAATHgAAGh4AACEeAAAoHgAALx4AADYeAAA7HgAAQB4AAEUeAABKHgAATx4AAFQeAABZHgAAXh4AAGMeAABoHgAAbh4AAHQeAAB8HgAAhB4AAIweAACUHgAAnB4AAKQeAACsHgAAtB4AALweAADEHgAAyR4AAM4eAADTHgAA2B4AAOAeAAAAAAAA6B4AAO4eAAD0HgAA+h4AAAAfAAAGHwAADB8AABIfAAAYHwAAHR8AACMfAAApHwAALx8AADUfAAA7HwAAQR8AAEcfAABNHwAAUx8AAFkfAABfHwAAZR8AAGsfAABxHwAAdx8AAH0fAACDHwAAiR8AAI4fAACUHwAAmh8AAKAfAACmHwAArB8AALIfAAC4HwAAvh8AAMQfAAAAAAAAAAAAAMofAADSHwAA1h8AANsfAADgHwAA5B8AAOkfAADuHwAA9R8AAPsfAAABIAAAByAAAA0gAAATIAAAGSAAAB8gAAAlIAAAKiAAADAgAAA2IAAAPCAAAEIgAABIIAAATiAAAFQgAABaIAAAYCAAAGYgAABsIAAAciAAAHggAAB+IAAAhCAAAIogAACQIAAAliAAAJsgAAChIAAApyAAAK0gAACzIAAAuSAAAL8gAADFIAAAyyAAANEgAADXIAAA3yAAAOYgAADsIAAAAAAAAAAAAADwIAAA9yAAAP4gAAAAAAAAAyEAAAghAAANIQAAEiEAABkhAAAgIQAAJSEAACohAAAvIQAANCEAADkhAAA+IQAAQyEAAEohAABPIQAAViEAAF0hAABiIQAAaSEAAG4hAABzIQAAeCEAAH8hAACEIQAAiSEAAJAhAACZIQAAniEAAKMhAACoIQAArSEAALMhAAC4IQAAvyEAAMYhAADNIQAA0iEAANchAADcIQAA4SEAAOYhAADrIQAA9SEAAPohAAADIgAACCIAAA0iAAASIgAAFyIAAB4iAAAlIgAALCIAADEiAAA2IgAAPSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARCIAAEgiAABMIgAAUCIAAFQiAABYIgAAXCIAAGAiAABkIgAAaCIAAGwiAABxIgAAdSIAAHkiAAB+IgAAgiIAAIciAACLIgAAjyIAAJMiAACYIgAAnCIAAKEiAAClIgAAqSIAAK0iAACxIgAAAAAAAAAAAAAAAAAAAAAAALUiAAC6IgAAwSIAAMkiAADQIgAA1SIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2iIAAN0iAADhIgAA5iIAAOoiAADuIgAA8iIAAPgiAAD+IgAAASMAAAgjAAARIwAAFCMAABcjAAAcIwAAIiMAACYjAAAuIwAANCMAADojAABCIwAARiMAAEsjAABWIwAAWyMAAF8jAABjIwAAZyMAAGojAABtIwAAdCMAAHsjAAB/IwAAhSMAAIkjAACQIwAAlyMAAJ8jAACmIwAArSMAALEjAAC1IwAAuyMAAL8jAADDIwAAxyMAAMsjAADPIwAA0yMAANcjAADbIwAA3yMAAOMjAADnIwAA6yMAAO8jAADzIwAA9yMAAPsjAAD/IwAAByQAAA8kAAAZJAAAIiQAACskAAAuJAAAMiQAADYkAAA6JAAAPiQAAEIkAABGJAAASiQAAE4kAABTJAAAVyQAAFokAABdJAAAYCQAAGMkAABmJAAAaSQAAGwkAABvJAAAcyQAAHckAAB7JAAAgCQAAIUkAACLJAAAjiQAAJUkAACeJAAAoyQAAKgkAACvJAAAtSQAALokAAC+JAAAwiQAAMYkAADKJAAAziQAANIkAADWJAAA2iQAAN4kAADiJAAA5yQAAOwkAADzJAAA+SQAAP8kAAAFJQAACiUAABMlAAAcJQAAISUAACglAAAvJQAANiUAAD0lAABBJQAARSUAAEklAABQJQAAWiUAAF4lAABiJQAAZiUAAG0lAAB1JQAAeSUAAH0lAACEJQAAiCUAAIwlAACQJQAAlyUAAJ4lAACqJQAAriUAALIlAAC2JQAAwCUAAMklAADNJQAA1SUAANwlAADjJQAA7CUAAPclAAD/JQAAAyYAAAwmAAAXJgAAHyYAACwmAAA0JgAAPCYAAEQmAABMJgAAUiYAAFsmAABiJgAAZiYAAG4mAAByJgAAeSYAAIEmAACFJgAAiyYAAJImAACZJgAAnSYAAKUmAACpJgAAsCYAALQmAAC8JgAAwCYAAMgmAADQJgAA1yYAAN8mAADnJgAA7iYAAPQmAAD4JgAA/yYAAAcnAAANJwAAFCcAABsnAAAhJwAAKycAADMnAAA6JwAAQCcAAEQnAABHJwAASycAAFEnAABZJwAAXScAAGMnAABpJwAAcCcAAHcnAAB6JwAAgScAAIYnAACPJwAAlCcAAJgnAAClJwAAsicAALgnAAC/JwAAxCcAAMonAADPJwAA1ScAAN8nAADmJwAA7ycAAPknAAD/JwAABCgAAAkoAAANKAAAESgAABYoAAAbKAAAISgAACkoAAAxKAAAPCgAAEEoAABKKAAAUygAAFooAABgKAAAZigAAGwoAAByKAAAeCgAAH4oAACEKAAAiigAAJAoAACXKAAAnigAAKUoAACrKAAAsygAALwoAADDKAAAyygAANMoAADZKAAA3ygAAOUoAADtKAAA9CgAAP4oAAAHKQAACykAABEpAAAXKQAAAAAAAB0pAAAiKQAAJykAAC4pAAAzKQAAOCkAAD8pAABEKQAATSkAAFIpAABXKQAAXCkAAGEpAABmKQAAbSkAAHIpAAB5KQAAfikAAIMpAACIKQAAjSkAAJIpAACYKQAAnCkAAKEpAACoKQAArSkAALIpAAC3KQAAvCkAAMEpAADIKQAAzykAANYpAADbKQAA4CkAAOYpAADrKQAA8CkAAPYpAAD7KQAAACoAAAgqAAAQKgAAFSoAABoqAAAgKgAAJSoAACoqAAAuKgAANCoAADgqAAA8KgAAQioAAEgqAABNKgAAUioAAFkqAABgKgAAZCoAAAAAAAAAAAAAaCoAAG8qAAB2KgAAfSoAAIcqAACTKgAAnyoAALAqAAC8KgAAxyoAAM8qAADWKgAA4SoAAPAqAAD7KgAAASsAAAorAAASKwAAHisAACgrAAAwKwAAPCsAAEMrAABLKwAAVysAAF0rAABjKwAAaysAAHMrAAB7KwAAgSsAAIsrAACTKwAAnSsAAKcrAAC0KwAAwisAANArAADaKwAA5SsAAPArAAD9KwAACiwAABgsAAAkLAAAMCwAAD0sAABKLAAAViwAAGMsAABsLAAAdCwAAHksAAB+LAAAgywAAIgsAACNLAAAkiwAAJcsAACcLAAAoSwAAKYsAACrLAAAsCwAALUsAAC6LAAAvywAAMQsAADJLAAAziwAANMsAADYLAAA3SwAAOIsAADnLAAA7CwAAPEsAAD2LAAA+ywAAAAtAAAFLQAACi0AAA8tAAAULQAAGC0AAB0tAAAiLQAAJy0AACwtAAAxLQAANS0AADktAAA9LQAAQS0AAEUtAABJLQAATS0AAFEtAABVLQAAWS0AAF0tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGItAABnLQAAay0AAG8tAABzLQAAdy0AAHstAAB/LQAAgy0AAIctAACLLQAAjy0AAJQtAACYLQAAnC0AAKAtAAClLQAAqS0AAK4tAACzLQAAuC0AALwtAADBLQAAxi0AAMstAADQLQAA1C0AANktAADdLQAA4i0AAOctAADrLQAA7y0AAPYtAAD6LQAA/y0AAAMuAAAHLgAADC4AABAuAAAXLgAAHi4AACUuAAArLgAAMy4AADsuAABELgAATC4AAFMuAABaLgAAYi4AAGguAABuLgAAdC4AAHouAACBLgAAhi4AAIouAACPLgAAAAAAAAAAAACTLgAAly4AAJwuAAChLgAApi4AAKsuAACwLgAAtS4AALouAAC/LgAAxC4AAMkuAADOLgAA0y4AANguAADdLgAA4i4AAOcuAADsLgAA8S4AAPYuAAD7LgAAAC8AAAUvAAAKLwAADy8AABQvAAAZLwAAHi8AACMvAAArLwAAMi8AADgvAAA9LwAARS8AAEwvAABSLwAAWS8AAF8vAABkLwAAay8AAHIvAAB4LwAAfS8AAIIvAACILwAAjS8AAJIvAACYLwAAAAAAAAAAAACdLwAAoy8AAKkvAACvLwAAtS8AALsvAADBLwAAxi8AAM4vAADULwAA2i8AAOAvAADmLwAA7C8AAPQvAAAAAAAA+i8AAP8vAAAEMAAACTAAAA4wAAATMAAAGDAAAB0wAAAiMAAAJzAAACwwAAAxMAAANjAAADswAABAMAAARTAAAEowAABPMAAAVDAAAFkwAABeMAAAYzAAAGgwAABtMAAAcjAAAHcwAAB8MAAAgTAAAAAAAAAAAAAAhjAAAAAAAACKMAAAkDAAAJYwAACcMAAAojAAAKgwAACuMAAAtDAAALkwAAC/MAAAxTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyzAAANMwAADeMAAA5TAAAOwwAAD0MAAA/zAAAAkxAAAUMQAAHzEAACkxAAAvMQAAPTEAAEgxAABWMQAAZTEAAHExAACAMQAAiTEAAJIxAACaMQAAojEAAKkxAACvMQAAtjEAAL0xAADHMQAA0TEAANgxAADgMQAA6jEAAAAAAADuMQAA8zEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgxAAD/MQAABjIAAA0yAAAUMgAAGTIAAB8yAAAkMgAAKzIAADQyAAA8MgAARDIAAEwyAABYMgAAXzIAAGYyAABtMgAAeTIAAIQyAACLMgAAkzIAAJkyAACeMgAApjIAAK4yAAC2MgAAvDIAAMYyAADOMgAA1TIAAOIyAADqMgAA8jIAAPsyAAAEMwAAETMAABczAAAdMwAAIzMAACszAAAzMwAAOzMAAEMzAABLMwAAUzMAAF0zAABlMwAAbTMAAHgzAAB8MwAAgjMAAIkzAACTMwAAmjMAAJ8zAACmMwAArTMAALEzAAC3MwAAwjMAAMczAADOMwAA0zMAANgzAADdMwAA5TMAAO0zAAD0MwAA+zMAAAI0AAAJNAAAEDQAABc0AAAeNAAAJDQAACw0AAAxNAAANjQAADs0AABANAAARTQAAEo0AABPNAAAVDQAAFk0AABeNAAAYzQAAGg0AABtNAAAcjQAAHc0AAB8NAAAgTQAAIc0AACNNAAAkzQAAJg0AACdNAAAojQAAKc0AACtNAAAtjQAAL40AADENAAAzDQAANI0AADWNAAA2jQAAN40AADjNAAA5jQA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AKFQAAClUAAAqVAAAK1QAACxUAAAtVAAALhQAAC7UAAAv1AAAMNQAADHUAAAylAAAM1QAADQUAAA01AAANdQAADaUAAA3VAAAOFQAADkUAAA6VAAAOxQAADwUAAA81AAAPdQAAD6UAAA/1AAAAJRAAAGUQAADVEAABJRAAAWUQAAG1EAAB9RAAAkUQAAKFEAAC1RAAA0UQAAOlEAAEBRAABEUQAASFEAAExRAABQUQAAVFEAAFpRAABgUQAAZ1EAAG1RAAByUQAAdlEAAHlRAAB8UQAAf1EAAIJRAACFUQAAiFEAAItRAACOUQAAkVEAAJdRAACbUQAAn1EAAKNRAACnUQAAq1EAAK9RAACzUQAAt1EAALxRAADAUQAAxVEAAMpRAADQUQAA1VEAANtRAADhUQAA51EAAO1RAADzUQAA+1EAAANSAAALUgAAE1IAABxSAAAlUgAAMFIAADpSAABEUgAAT1IAAFpSAABkUgAAblIAAHhSAACCUgAAjFIAAJZSAACgUgAAqlIAALJSAAC5UgAAv1IAAMZSAADLUgAA0VIAANdSAADdUgAA41IAAOlSAADvUgAA9FIAAPpSAAAAUwAABlMAAAxTAAARUwAAGlMAACFTAAAnUwAAL1MAADdTAAA9UwAAQ1MAAElTAABPUwAAV1MAAF9TAABpUwAAcVMAAHlTAAB/UwAAhFMAAIlTAACOUwAAk1MAAJhTAACdUwAAolMAAKdTAACsUwAAslMAALhTAAC+UwAAxVMAAMpTAADQUwAA1VMAANpTAADfUwAA5FMAAOlTAADuUwAA81MAAPhTAAD9UwAAAlQAAAdUAAAMVAAAEVQAABZUAAAbVAAAIFQAACVUAAAqVAAAL1QAADRUAAA5VAAAPlQAAENUAABIVAAATVQAAFJUAABXVAAAXFQAAGFUAABmVAAAa1QAAHBUAAB1VAAAelQAAH9UAACEVAAAiVQAAAAAAACOVAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTVAAAAAAAAAAAAACYVAAAnFQAAKBUAACkVAAAqFQAAKxUAACwVAAAtFQAALhUAAC8VAAAwFQAAMRUAADIVAAAzFQAANBUAADUVAAA2FQAANxUAADgVAAA5FQAAOhUAADsVAAA8FQAAPRUAAD4VAAA/FQAAABVAAAEVQAACFUAAAxVAAAQVQAAFFUAABhVAAAcVQAAIFUAACRVAAAoVQAALFUAADBVAAA0VQAAOFUAADxVAABBVQAARVUAAEpVAABPVQAAU1UAAFhVAABdVQAAYVUAAGVVAABpVQAAbVUAAHFVAAB1VQAAeVUAAH1VAACBVQAAhVUAAIlVAACNVQAAkVUAAJVVAACZVQAAnVUAAKFVAAClVQAAqVUAAK1VAACxVQAAtVUAALlVAAC9VQAAwVUAAMVVAADJVQAAzVUAANFVAADVVQAA2VUAAN1VAADhVQAA5VUAAOlVAADtVQAA8VUAAPVVAAD5VQAA/VUAAAFWAAAFVgAACVYAAA1WAAARVgAAFVYAABlWAAAdVgAAIVYAACVWAAApVgAALVYAADFWAAA1VgAAOVYAAD1WAABBVgAARVYAAElWAABNVgAAUVYAAFVWAABZVgAAXVYAAGFWAABlVgAAaVYAAG1WAABxVgAAdVYAAHlWAAB9VgAAgVYAAIVWAACJVgAAjVYAAJFWAACVVgAAmVYAAJ1WAAChVgAApVYAAKlWAACtVgAAsVYAALVWAAC5VgAAvVYAAMFWAADFVgAAyVYAAM1WAADRVgAA1VYAANlWAADdVgAA4lYAAOZWAADrVgAA71YAAPRWAAD5VgAA/VYAAAJXAAAHVwAAC1cAABBXAAAVVwAAGlcAAB9XAAAjVwAAKFcAAC1XAAAyVwAAN1cAADxXAABBVwAARVcAAEpXAABPVwAAVFcAAFlXAABeVwAAY1cAAGhXAABtVwAAclcAAHdXAAB8VwAAgVcAAIZXAACLVwAAkFcAAJVXAACaVwAAn1cAAKRXAACpVwAArlcAALNXAAC4VwAAvVcAAMJXAADHVwAAzFcAANFXAADWVwAA21cAAOBXAADlVwAA6lcAAO9XAAD0VwAA+VcAAP5XAAADWAAACFgAAA1YAAASWAAAF1gAABxYAAAhWAAAJlgAACtYAAAwWAAANVgAADpYAAA/WAAAQ1gAAEdYAABLWAAAT1gAAFNYAABXWAAAW1gAAF9YAABjWAAAZ1gAAGtYAABvWAAAc1gAAHdYAAB7WAAAf1gAAINYAACHWAAAi1gAAI9YAACTWAAAl1gAAJtYAACfWAAAo1gAAKdYAACrWAAAr1gAALNYAAC3WAAAu1gAAL9YAADDWAAAx1gAAMtYAADPWAAA01gAANdYAADbWAAA31gAAONYAADnWAAA61gAAO9YAADzWAAA91gAAPtYAAD/WAAAA1kAAAdZAAALWQAAD1kAABNZAAAXWQAAG1kAAB9ZAAAjWQAAJ1kAACtZAAAvWQAAM1kAADdZAAA7WQAAP1kAAENZAABHWQAAS1kAAE9ZAABTWQAAV1kAAFtZAABfWQAAY1kAAGdZAABrWQAAb1kAAHNZAAB3WQAAe1kAAH9ZAACDWQAAh1kAAItZAACPWQAAk1kAAJdZAACbWQAAn1kAAKJZAACmWQAAqlkAAK5ZAACyWQAAtlkAALpZAAC+WQAAwVkAAMVZAADJWQAAzVkAANFZAADVWQAA2VkAAN1ZAADhWQAA5VkAAOlZAADtWQAA8VkAAPVZAAD5WQAA/VkAAABaAAAEWgAACFoAAAxaAAAQWgAAFFoAABhaAAAcWgAAIFoAACRaAAAoWgAALFoAADBaAAA0WgAAOFoAADxaAAA/WgAAQ1oAAEdaAABLWgAAT1oAAFNaAABXWgAAW1oAAF5aAABiWgAAZloAAGpaAABuWgAAcloAAHZaAAB6WgAAfloAAIJaAACGWgAAiloAAI5aAACSWgAAlloAAJpaAACeWgAAoloAAKZaAACqWgAArloAALJaAAC2WgAAuloAAAAAAAC+WgAAwloAAMZaAADKWgAAAAAAAAAAAADOWgAA0loAANZaAADaWgAA3loAAOJaAADmWgAAAAAAAOpaAAAAAAAA7loAAPJaAAD2WgAA+loAAAAAAAAAAAAA/loAAAJbAAAGWwAAClsAAA5bAAASWwAAFlsAABpbAAAeWwAAIlsAACZbAAAqWwAALlsAADJbAAA2WwAAOlsAAD5bAABCWwAARlsAAEpbAABOWwAAUlsAAFZbAABZWwAAXVsAAGFbAABlWwAAaVsAAG1bAABxWwAAdVsAAHlbAAB9WwAAgVsAAIVbAACJWwAAjVsAAJFbAACVWwAAmVsAAJ1bAAAAAAAAoVsAAKVbAACpWwAArVsAAAAAAAAAAAAAsVsAALRbAAC4WwAAvFsAAMBbAADEWwAAyFsAAMxbAADQWwAA1FsAANhbAADcWwAA4FsAAORbAADoWwAA7FsAAPBbAAD1WwAA+lsAAP9bAAAFXAAAC1wAABBcAAAVXAAAG1wAAB5cAAAiXAAAJlwAACpcAAAuXAAAMlwAADZcAAA6XAAAAAAAAD5cAABCXAAARlwAAEpcAAAAAAAAAAAAAE5cAABSXAAAVlwAAFpcAABeXAAAYlwAAGZcAAAAAAAAalwAAAAAAABuXAAAclwAAHZcAAB6XAAAAAAAAAAAAAB+XAAAglwAAIZcAACKXAAAjlwAAJJcAACWXAAAmlwAAJ5cAACjXAAAqFwAAK1cAACzXAAAuVwAAL5cAAAAAAAAw1wAAMdcAADLXAAAz1wAANNcAADXXAAA21wAAN9cAADjXAAA51wAAOtcAADvXAAA81wAAPdcAAD7XAAA/1wAAANdAAAGXQAACl0AAA5dAAASXQAAFl0AABpdAAAeXQAAIl0AACZdAAAqXQAALl0AADJdAAA2XQAAOl0AAD5dAABCXQAARl0AAEpdAABOXQAAUl0AAFZdAABaXQAAXl0AAGJdAABmXQAAal0AAG5dAAByXQAAdl0AAHpdAAB+XQAAgl0AAIZdAACKXQAAjl0AAJJdAACWXQAAml0AAJ5dAACiXQAAAAAAAKZdAACqXQAArl0AALJdAAAAAAAAAAAAALZdAAC6XQAAvl0AAMJdAADGXQAAyl0AAM5dAADSXQAA1l0AANpdAADeXQAA4l0AAOZdAADqXQAA7l0AAPJdAAD2XQAA+l0AAP5dAAACXgAABl4AAApeAAAOXgAAEl4AABZeAAAaXgAAHl4AACJeAAAmXgAAKl4AAC5eAAAyXgAANl4AADpeAAA+XgAAQl4AAEZeAABKXgAATl4AAFJeAABWXgAAWl4AAF5eAABiXgAAZl4AAGpeAABuXgAAcl4AAHZeAAB6XgAAfl4AAIJeAACGXgAAil4AAI5eAACSXgAAll4AAJleAACdXgAAoV4AAKVeAACpXgAArV4AALFeAAC1XgAAuV4AAL1eAAAAAAAAAAAAAMFeAADKXgAA0F4AANVeAADZXgAA3F4AAOFeAADkXgAA514AAOpeAADvXgAA814AAPheAAD7XgAA/l4AAAFfAAAEXwAAB18AAApfAAANXwAAEF8AABNfAAAXXwAAG18AAB9fAAAjXwAAJ18AACtfAAAvXwAAM18AADdfAAA7XwAAAAAAAAAAAAAAAAAAQF8AAEZfAABKXwAATl8AAFJfAABYXwAAXF8AAGBfAABkXwAAal8AAG5fAAByXwAAdl8AAHxfAACAXwAAhF8AAIhfAACOXwAAlF8AAJpfAACiXwAAqF8AAK5fAAC0XwAAul8AAMBfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGXwAAyV8AAMxfAADPXwAA0l8AANVfAADZXwAA3V8AAOBfAADkXwAA6F8AAOxfAADwXwAA9F8AAPdfAAD7XwAA/18AAANgAAAHYAAAC2AAAA5gAAASYAAAFmAAABpgAAAeYAAAImAAACVgAAApYAAALWAAADFgAAA1YAAAOGAAADxgAABAYAAARGAAAEhgAABMYAAAUGAAAFRgAABYYAAAXGAAAGBgAABkYAAAaGAAAGxgAABvYAAAc2AAAHdgAAB7YAAAf2AAAINgAACHYAAAi2AAAI9gAACTYAAAl2AAAJtgAACfYAAAo2AAAKdgAACrYAAAr2AAALNgAAC3YAAAu2AAAL9gAADDYAAAx2AAAMtgAADPYAAA02AAANdgAADbYAAA32AAAONgAADnYAAA62AAAO9gAADzYAAA92AAAPpgAAD+YAAAAmEAAAZhAAAKYQAADmEAAAAAAAAAAAAAEmEAABdhAAAcYQAAIWEAACZhAAArYQAAAAAAAAAAAAAwYQAANGEAADdhAAA7YQAAPmEAAEJhAABFYQAASWEAAE9hAABUYQAAWGEAAFthAABfYQAAY2EAAGlhAABtYQAAc2EAAHdhAAB9YQAAgWEAAIdhAACLYQAAkWEAAJdhAACbYQAAoWEAAKVhAACrYQAAsWEAALVhAAC7YQAAwWEAAMZhAADLYQAA02EAANthAADiYQAA52EAAO1hAAD2YQAA/GEAAARiAAAJYgAAD2IAABNiAAAXYgAAG2IAAB9iAAAjYgAAJ2IAACtiAAAvYgAAM2IAADdiAAA9YgAAQmIAAEdiAABKYgAATmIAAFJiAABYYgAAXGIAAGJiAABmYgAAbGIAAHBiAAB2YgAAemIAAIBiAACEYgAAimIAAI5iAACUYgAAmmIAAJ5iAACkYgAAqWIAAK1iAACxYgAAtWIAALliAAC8YgAAwGIAAMZiAADLYgAA0GIAANRiAADYYgAA3GIAAOJiAADmYgAA7GIAAPBiAAD2YgAA+WIAAP5iAAACYwAACGMAAAxjAAASYwAAFmMAABxjAAAiYwAAJmMAACpjAAAuYwAAMmMAADZjAAA6YwAAPmMAAEJjAABGYwAASmMAAE5jAABUYwAAV2MAAFtjAABfYwAAZWMAAGljAABvYwAAc2MAAHljAAB9YwAAg2MAAIdjAACNYwAAkWMAAJdjAACbYwAAoWMAAKdjAACrYwAAr2MAALVjAAC7YwAAwWMAAMdjAADLYwAAz2MAANNjAADXYwAA22MAAN9jAADlYwAA6WMAAO1jAADxYwAA92MAAPtjAAABZAAABWQAAAtkAAAPZAAAFWQAABlkAAAfZAAAI2QAAClkAAAtZAAAM2QAADlkAAA9ZAAAQ2QAAEdkAABLZAAAT2QAAFNkAABXZAAAW2QAAGFkAABkZAAAaGQAAGxkAAByZAAAdmQAAHxkAACAZAAAhmQAAIpkAACQZAAAlGQAAJpkAACeZAAApGQAAKhkAACuZAAAtGQAALhkAAC+ZAAAwmQAAMhkAADOZAAA0mQAANZkAADaZAAA3mQAAOJkAADmZAAA7GQAAO9kAADzZAAA92QAAP1kAAABZQAAB2UAAAtlAAARZQAAF2UAABtlAAAgZQAAJGUAAChlAAAsZQAAMGUAADRlAAA4ZQAAPGUAAEJlAABFZQAASWUAAE1lAABTZQAAV2UAAF1lAABhZQAAZ2UAAGtlAABxZQAAdWUAAHtlAAB/ZQAAhWUAAIllAACPZQAAkmUAAJdlAACcZQAAoGUAAKRlAACoZQAArGUAALBlAAC0ZQAAumUAAL1lAADBZQAAxWUAAMtlAADPZQAA1WUAANllAADfZQAA42UAAOllAADtZQAA82UAAPdlAAD9ZQAAAWYAAAdmAAANZgAAEWYAABdmAAAbZgAAIWYAACdmAAAtZgAAM2YAADlmAAA/ZgAARWYAAEtmAABPZgAAU2YAAFdmAABbZgAAX2YAAGNmAABnZgAAa2YAAHFmAAB1ZgAAe2YAAH9mAACFZgAAiWYAAI9mAACTZgAAmWYAAJ1mAACjZgAAp2YAAK1mAACxZgAAtWYAALlmAAC9ZgAAwWYAAMVmAADJZgAAz2YAANJmAADWZgAA2mYAAOBmAADkZgAA6mYAAO5mAAD0ZgAA+GYAAP5mAAACZwAACGcAAAxnAAASZwAAFmcAABxnAAAiZwAAJmcAACxnAAAyZwAAOGcAADxnAABCZwAASGcAAExnAABQZwAAVGcAAFhnAABcZwAAYmcAAGVnAABpZwAAbmcAAHJnAAB4ZwAAe2cAAIBnAACFZwAAiWcAAI1nAACRZwAAlWcAAJlnAACdZwAAoWcAAKVnAACpZwAAr2cAALNnAAC3ZwAAvWcAAMFnAADHZwAAy2cAANFnAADVZwAA2WcAAN1nAADhZwAA5WcAAOtnAADvZwAA82cAAPdnAAD7ZwAA/2cAAANoAAAHaAAAC2gAAA9oAAATaAAAGWgAAB9oAAAlaAAAK2gAADFoAAA2aAAAPGgAAEJoAABIaAAATGgAAFBoAABUaAAAWGgAAFxoAABgaAAAZGgAAGhoAABsaAAAcGgAAHRoAAB4aAAAfGgAAIJoAACIaAAAjmgAAJNoAACXaAAAm2gAAJ9oAACjaAAAp2gAAKtoAACvaAAAs2gAALdoAAC9aAAAw2gAAMloAADPaAAA1WgAANtoAADhaAAA52gAAO1oAADxaAAA9WgAAPloAAD9aAAAAWkAAAVpAAAJaQAAD2kAABVpAAAbaQAAIWkAACdpAAAtaQAAM2kAADlpAAA/aQAARGkAAElpAABOaQAAU2kAAFlpAABfaQAAZWkAAGtpAABxaQAAd2kAAH1pAACCaQAAiGkAAI5pAACUaQAAmWkAAJ9pAAClaQAAq2kAALBpAAC1aQAAumkAAL9pAADEaQAAyWkAAM5pAADTaQAA2GkAAN1pAADiaQAA52kAAOtpAADwaQAA9WkAAPppAAD/aQAABGoAAAlqAAAOagAAE2oAABhqAAAdagAAImoAACdqAAAsagAAMWoAADZqAAA7agAAQGoAAEVqAABKagAAT2oAAFRqAABZagAAXmoAAGNqAABoagAAbWoAAHJqAAB3agAAfGoAAIBqAACFagAAimoAAI9qAACUagAAmWoAAJ5qAACjagAAqGoAAK1qAACyagAAt2oAALxqAADBagAAxmoAAMtqAADQagAA1WoAANpqAADfagAA5GoAAOlqAADuagAA82oAAPhqAAD9agAAAWsAAAZrAAALawAAEGsAABVrAAAaawAAHmsAACNrAAAoawAALWsAADJrAAA3awAAO2sAAEBrAABGawAAS2sAAFBrAABVawAAWmsAAGBrAABlawAAamsAAG9rAAB0awAAeWsAAH5rAACDawAAiGsAAI1rAACSawAAl2sAAJxrAACgawAApWsAAKprAACvawAAtGsAALlrAAC+awAAw2sAAMhrAADNawAA0msAANdrAADcawAA4WsAAOZrAADrawAA8GsAAPVrAAD6awAA/2sAAARsAAAJbAAADmwAABNsAAAYbAAAHWwAACJsAAAnbAAALGwAADFsAAA2bAAAO2wAAEFsAABGbAAAS2wAAFBsAABVbAAAWmwAAF9sAABkbAAAaWwAAG5sAABzbAAAeGwAAHxsAACBbAAAhmwAAItsAACQbAAAlWwAAJpsAACfbAAApGwAAKlsAACubAAAs2wAALhsAAC9bAAAwmwAAMdsAADMbAAA0WwAANZsAADbbAAA4GwAAOVsAADqbAAA72wAAPRsAAD5bAAA/mwAAARtAAAIbQAADG0AABBtAAAUbQAAGG0AABxtAAAgbQAAJG0AACptAAAwbQAANm0AADxtAABCbQAASG0AAE5tAABVbQAAW20AAGBtAABlbQAAam0AAG9tAAB0bQAAeW0AAH5tAACDbQAAiG0AAI1tAACSbQAAl20AAJxtAAChbQAApm0AAKttAACwbQAAtW0AALptAAC/bQAAxG0AAMltAADObQAA020AANhtAADdbQAA4m0AAOdtAAAAAAAAAAAAAAAAAADubQAA+W0AAP5tAAAGbgAAC24AABBuAAAVbgAAHm4AACNuAAApbgAAL24AADVuAAA6bgAAQG4AAEZuAABKbgAAT24AAFRuAABebgAAY24AAGhuAABvbgAAdG4AAHluAACCbgAAh24AAJBuAACXbgAAnm4AAKVuAACsbgAAt24AAL5uAADDbgAAzW4AANFuAADYbgAA3W4AAORuAADqbgAA8W4AAPpuAAABbwAACG8AABFvAAAYbwAAHW8AACJvAAAtbwAANG8AADlvAABEbwAAS28AAFBvAABVbwAAXW8AAGZvAABtbwAAdG8AAH5vAACDbwAAiG8AAI1vAACWbwAAnm8AAKNvAACobwAArW8AALJvAAC3bwAAvG8AAMFvAADGbwAAy28AANBvAADVbwAA228AAOFvAADnbwAA7G8AAPFvAAD2bwAA+28AAABwAAAFcAAADnAAABdwAAAgcAAAKXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAycAAANnAAADpwAAA+cAAAQnAAAEdwAABMcAAAUXAAAFZwAABacAAAXnAAAGNwAABncAAAa3AAAG9wAABzcAAAeHAAAHxwAACAcAAAhXAAAIpwAACPcAAAAAAA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AAWFAAAOhQAAE4UAAAAAAAAYhQAAHYUAACKFAAAnhQAAK4UAAC+FAAAzhQAAOIUAADyFAABAhQAARYUAAEmFAABOhQAAU4UAAFiFAABdhQAAYoUAAGeFAABshQAAcYUAAHaFAAB6hQAAfoUAAIOFAACIhQAAjYUAAJGFAACVhQAAmYUAAJ2FAACihQAApoUAAKuFAACvhQAAtYUAALuFAADBhQAAx4UAAM2FAADThQAA2YUAAN+FAADlhQAA6oUAAO+FAAD2hQAA/oUAAAOGAAAIhgAADYYAABGGAAAVhgAAGYYAAB2GAAAhhgAAJYYAACmGAAAthgAAMYYAADWGAAA6hgAAP4YAAESGAABKhgAAUIYAAFSGAABahgAAXoYAAGSGAABqhgAAb4YAAHaGAAB6hgAAgIYAAISGAACKhgAAj4YAAJaGAACdhgAAooYAAKmGAACuhgAAs4YAALeGAAC9hgAAwYYAAMeGAADOhgAA1YYAANmGAADfhgAA5YYAAOmGAADvhgAA9IYAAPiGAAD+hgAAA4cAAAiHAAANhwAAEocAABaHAAAahwAAH4cAACSHAAArhwAAMYcAADaHAAA9hwAAQocAAEmHAABOhwAAV4cAAF2HAABjhwAAZ4cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa4cAAHSHAAB7hwAAgocAAImHAACNhwAAkocAAJeHAACchwAAoYcAAKaHAACrhwAAsIcAALWHAAC6hwAAv4cAAMSHAADJhwAAzYcAANGHAADWhwAA24cAAOCHAADlhwAA6ocAAO+HAADzhwAA+IcAAP2HAAACiAAAB4gAAAuIAAAPiAAAE4gAABeIAAAciAAAIYgAACWIAAAqiAAAL4gAADOIAAA5iAAAP4gAAEWIAABKiAAAT4gAAFWIAABaiAAAYIgAAGWIAABriAAAcYgAAHaIAAB8iAAAgogAAIeIAACNiAAAk4gAAJmIAACeiAAAAAAAAAAAAAAAAAAAo4gAAKmIAACziAAAuYgAAMGIAADHiAAAzIgAANCIAADUiAAA2IgAANyIAADgiAAA5IgAAOiIAADsiAAAAAAAAAAAAAAAAAAA8IgAAPWIAAD6iAAA/4gAAAaJAAAMiQAAEokAABiJAAAeiQAAJIkAACqJAAAwiQAANokAADyJAABCiQAASYkAAFCJAABXiQAAXokAAGWJAABsiQAAc4kAAHqJAACBiQAAiIkAAI+JAACWiQAAnYkAAKSJAACriQAAsokAALmJAADAiQAAx4kAAM6JAADViQAA3IkAAOOJAADqiQAA8YkAAPiJAAD/iQAABooAAA2KAAAVigAAHYoAACWKAAArigAAMYoAADeKAAA/igAASIoAAE+KAABWigAAXIoAAGOKAABqigAAcYoAAHmKAACAigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeKAACOigAAlYoAAJyKAACjigAAqooAALGKAAC4igAAv4oAAMaKAADNigAA1IoAANuKAADiigAA6YoAAPCKAAD3igAA/ooAAAWLAAAMiwAAE4sAABqLAAAhiwAAKIsAAC+LAAA2iwAAPYsAAESLAABLiwAAUosAAFmLAABgiwAAZ4sAAG6LAAB1iwAAfIsAAIOLAACKiwAAkYsAAJiLAACfiwAAposAAK6LAAAAAAAAAAAAALWLAAC8iwAAxIsAAMyLAADUiwAA3IsAAOSLAADsiwAA9osAAACMAAAKjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUjAAAGYwAAB6MAAAjjAAAKIwAADGMAAA8jAAARYwAAFCMAABWjAAAY4wAAGmMAABwjAAAd4wAAHyMAACCjAAAiIwAAJOMAACcjAAAo4wAAKqMAACzjAAAuowAAMOMAADNjAAA14wAAN6MAADljAAA7IwAAPaMAAD7jAAAA40AAAmNAAARjQAAGo0AAB+NAAAmjQAALI0AADGNAAA2jQAAO40AAEGNAABIjQAAAAAAAAAAAAAAAAAAAAAAAAAAAABQjQAAVY0AAFuNAABhjQAAaY0AAG+NAAB1jQAAe40AAICNAACHjQAAjI0AAJKNAACYjQAAoI0AAKaNAACujQAAs40AALqNAADAjQAAyI0AANCNAADWjQAA3I0AAOONAADqjQAA8I0AAPeNAAD9jQAAA44AAAiOAAAOjgAAFo4AAB6OAAAkjgAAKo4AADCOAAA2jgAAPo4AAEKOAABIjgAATo4AAFSOAABajgAAYI4AAGaOAABqjgAAb44AAHSOAAB7jgAAgI4AAISOAACKjgAAj44AAJSOAACYjgAAnY4AAKKOAACmjgAAq44AALCOAAC3jgAAu44AAMCOAADFjgAAyY4AAM6OAADSjgAA144AANuOAADgjgAA5Y4AAOuOAADwjgAA9Y4AAPmOAAD+jgAABI8AAAuPAAAQjwAAFY8AABqPAAAfjwAAJI8AACiPAAAujwAANY8AADyPAABBjwAARo8AAEqPAABQjwAAVo8AAFuPAABgjwAAZY8AAGuPAABwjwAAdo8AAHuPAACBjwAAh48AAI2PAACUjwAAm48AAKKPAACpjwAAsI8AALePAAC8jwAAxI8AAM2PAADWjwAA348AAOiPAADxjwAA+o8AAAaQAAAPkAAAGJAAACGQAAAnkAAALJAAADOQAAA7kAAAQ5AAAEqQAABRkAAAWJAAAF+QAABnkAAAcJAAAHmQAACCkAAAi5AAAJSQAACdkAAAppAAAK+QAAC4kAAAwZAAAMqQAADTkAAA3JAAAOWQAADtkAAA9pAAAAGRAAAKkQAAFZEAACKRAAArkQAANJEAAD6RAABHkQAAT5EAAFiRAABekQAAY5EAAGuRAABwkQAAeJEAAH2RAACGkQAAjJEAAJKRAACZkQAAnpEAAKORAACrkQAAs5EAALyRAADFkQAAypEAANGRAADbkQAA45EAAOyRAADykQAA+JEAAP2RAAAEkgAACZIAABKSAAAXkgAAHJIAACGSAAAokgAALpIAADOSAAA8kgAARJIAAEmSAABOkgAAVZIAAFySAABgkgAAZJIAAGeSAABqkgAAbZIAAHCSAABzkgAAdpIAAH2SAACAkgAAg5IAAIiSAACMkgAAkJIAAJSSAACYkgAAnJIAAKaSAACskgAAspIAALiSAADAkgAAyJIAAM6SAADUkgAA25IAAOGSAADmkgAA7JIAAPOSAAD5kgAAAJMAAAaTAAAOkwAAFJMAABuTAAAhkwAAJ5MAAC2TAAAzkwAAOZMAAD+TAABKkwAAVJMAAFqTAABgkwAAapMAAHCTAAB4kwAAgJMAAIiTAACNkwAAkpMAAJiTAACdkwAApZMAAKuTAACvkwAAtpMAAL2TAADCkwAAy5MAANOTAADbkwAA4pMAAOmTAADwkwAA95MAAP+TAAAHlAAAEpQAAB2UAAAllAAALZQAADWUAAA9lAAARpQAAE+UAABXlAAAX5QAAGiUAABxlAAAfJQAAIeUAACSlAAAnZQAAKaUAACvlAAAuJQAAMGUAADMlAAA15QAAN+UAADnlAAA75QAAPeUAAD/lAAAB5UAAA+VAAAXlQAAH5UAACeVAAAvlQAAN5UAAECVAABJlQAAUpUAAFuVAABmlQAAcZUAAHmVAACBlQAAiZUAAJGVAACalQAAo5UAAKuVAACzlQAAv5UAAMuVAADUlQAA3ZUAAOaVAADvlQAA95UAAP+VAAAHlgAAD5YAABeWAAAflgAAJ5YAAC+WAAA3lgAAP5YAAEiWAABRlgAAWpYAAGOWAABtlgAAd5YAAIGWAACLlgAAlZYAAJ+WAACplgAAs5YAALuWAADDlgAAy5YAANOWAADblgAA45YAAOuWAADzlgAA/5YAAAuXAAAUlwAAHZcAACWXAAAtlwAANZcAAD2XAABIlwAAU5cAAF6XAABplwAAdZcAAIGXAACJlwAAkZcAAJmXAAChlwAAqpcAALOXAAC8lwAAxZcAAM2XAADVlwAA3ZcAAOWXAADtlwAA9ZcAAP+XAAAJmAAAE5gAAB2YAAAlmAAALZgAADWYAAA9mAAARZgAAE2YAABVmAAAXZgAAGWYAABtmAAAdZgAAH2YAACFmAAAjZgAAJWYAACdmAAApZgAAK2YAAC1mAAAvZgAAMWYAADNmAAA1ZgAAN2YAADmmAAA75gAAPiYAAAAmQAACZkAABKZAAAbmQAAJJkAAC6ZAAA3mQAAPpkAAEOZAABKmQAAUZkAAFmZAABhmQAAa5kAAHWZAAB/mQAAiZkAAJSZAACfmQAAqZkAALOZAAC9mQAAx5kAANGZAADbmQAA5ZkAAO+ZAAD6mQAABZoAAA+aAAAZmgAAI5oAAC2aAAA1mgAAPZoAAEaaAABPmgAAV5oAAF+aAABqmgAAdZoAAICaAACLmgAAl5oAAKOaAACumgAAuZoAAMSaAADPmgAA2JoAAOGaAADpmgAA8ZoAAPiaAAD/mgAAB5sAAA+bAAAZmwAAI5sAAC2bAAA3mwAAQpsAAE2bAABXmwAAYZsAAGubAAB1mwAAf5sAAImbAACTmwAAnZsAAKibAACzmwAAvZsAAMebAADRmwAA25sAAOKbAADpmwAA8ZsAAPmbAAADnAAADZwAABecAAAhnAAALJwAADecAABBnAAAS5wAAFWcAABfnAAAZ5wAAG+cAAB3nAAAf5wAAIicAACRnAAAmZwAAKGcAAConAAAr5wAALacAAC9nAAAxZwAAM2cAADVnAAA3ZwAAOicAADznAAA/pwAAAmdAAAUnQAAH50AACedAAAvnQAAOp0AAEWdAABQnQAAW50AAGadAABxnQAAeZ0AAIGdAACMnQAAl50AAKKdAAAAAAAAAAAAAK2dAAC1nQAAvZ0AAMidAADTnQAA3p0AAAAAAAAAAAAA6Z0AAPGdAAD5nQAABJ4AAA+eAAAangAAJZ4AADCeAAA7ngAAQ54AAEueAABWngAAYZ4AAGyeAAB3ngAAgp4AAI2eAACVngAAnZ4AAKieAACzngAAvp4AAMmeAADUngAA354AAOeeAADvngAA+p4AAAWfAAAQnwAAG58AACafAAAxnwAAOZ8AAEGfAABMnwAAV58AAGKfAAAAAAAAAAAAAG2fAAB1nwAAfZ8AAIifAACTnwAAnp8AAAAAAAAAAAAAqZ8AALGfAAC5nwAAxJ8AAM+fAADanwAA5Z8AAPCfAAAAAAAA+58AAAAAAAADoAAAAAAAAA6gAAAAAAAAGaAAACSgAAAsoAAANKAAAD+gAABKoAAAVaAAAGCgAABroAAAdqAAAH6gAACGoAAAkaAAAJygAACnoAAAsqAAAL2gAADIoAAA0KAAANigAADgoAAA6KAAAPCgAAD4oAAAAKEAAAihAAAQoQAAGKEAACChAAAooQAAMKEAAAAAAAAAAAAAOKEAAEOhAABOoQAAXKEAAGqhAAB4oQAAhqEAAJShAACioQAAraEAALihAADGoQAA1KEAAOKhAADwoQAA/qEAAAyiAAAXogAAIqIAADCiAAA+ogAATKIAAFqiAABoogAAdqIAAIGiAACMogAAmqIAAKiiAAC2ogAAxKIAANKiAADgogAA66IAAPaiAAAEowAAEqMAACCjAAAuowAAPKMAAEqjAABVowAAYKMAAG6jAAB8owAAiqMAAJijAACmowAAtKMAALyjAADEowAAz6MAANejAAAAAAAA4qMAAOqjAAD1owAA/aMAAAWkAAANpAAAFaQAAB2kAAAgpAAAI6QAACakAAAppAAAL6QAADqkAABCpAAAAAAAAE2kAABVpAAAYKQAAGikAABwpAAAeKQAAICkAACIpAAAjqQAAJSkAACapAAAoqQAAKqkAAC1pAAAAAAAAAAAAADApAAAyKQAANOkAADbpAAA46QAAOukAAAAAAAA86QAAPmkAAD/pAAABaUAAA2lAAAVpQAAIKUAACulAAAzpQAAO6UAAEOlAABOpQAAVqUAAF6lAABmpQAAbqUAAHalAAB8pQAAgqUAAAAAAAAAAAAAhaUAAJClAACYpQAAAAAAAKOlAACrpQAAtqUAAL6lAADGpQAAzqUAANalAADepQAA4aUAAAAAAADkpQAA6KUAAOylAADwpQAA9KUAAPilAAD8pQAAAKYAAASmAAAIpgAADKYAABCmAAAWpgAAHKYAACKmAAAlpgAAKKYAACqmAAAupgAAMqYAADamAAA6pgAAPaYAAEGmAABFpgAAS6YAAFGmAABYpgAAX6YAAGSmAABppgAAb6YAAHWmAAB3pgAAeqYAAHymAACApgAAhKYAAIimAACMpgAAkKYAAJSmAACYpgAAnKYAAKCmAACmpgAAqqYAAK6mAAC0pgAAuaYAAMCmAADCpgAAxaYAAMmmAADNpgAA0qYAANimAADapgAA46YAAOymAADvpgAA86YAAPWmAAD3pgAA+aYAAP2mAAADpwAABacAAAmnAAANpwAAFKcAABunAAAfpwAAJKcAACmnAAAupwAAM6cAADenAAA7pwAAPqcAAEKnAABGpwAATacAAFKnAABWpwAAWqcAAF+nAABjpwAAZ6cAAGynAABxpwAAdacAAHmnAAB9pwAAf6cAAISnAACJpwAAjacAAJGnAACVpwAAmacAAAAAAACdpwAAoacAAKWnAACrpwAAsacAALenAAC9pwAAxKcAAMunAADQpwAA1acAANmnAAAAAAAAAAAAAN+nAADipwAA5acAAOinAADrpwAA7qcAAPGnAAD1pwAA+acAAP6nAAADqAAACKgAAA+oAAATqAAAFqgAABmoAAAcqAAAH6gAACKoAAAlqAAAKKgAACuoAAAuqAAAMqgAADaoAAA7qAAAQKgAAAAAAABFqAAAS6gAAFGoAABXqAAAXqgAAGWoAABsqAAAc6gAAHmoAACAqAAAh6gAAI6oAACVqAAAAAAAAAAAAAAAAAAAnKgAAJ+oAACiqAAApagAAKqoAACtqAAAsKgAALOoAAC2qAAAuagAALyoAADBqAAAxKgAAMeoAADKqAAAzagAANCoAADVqAAA2KgAANuoAADeqAAA4agAAOSoAADpqAAA7KgAAO+oAAD0qAAA+agAAP2oAAAAqQAAA6kAAAapAAAJqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKkAABGpAAAWqQAAHakAACWpAAAqqQAAL6kAADOpAAA3qQAAPKkAAEOpAABKqQAATqkAAFOpAABYqQAAXakAAGKpAABpqQAAbqkAAHOpAAB4qQAAgakAAIipAACPqQAAk6kAAJipAACeqQAAo6kAAKqpAACyqQAAuqkAAL6pAADCqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxqkAAMqpAADRqQAA1qkAANqpAADfqQAA46kAAOepAADrqQAA7akAAPGpAAD1qQAA+akAAP6pAAADqgAAB6oAAA+qAAASqgAAFqoAABmqAAAcqgAAIqoAACeqAAAqqgAAMKoAADSqAAA5qgAAPqoAAEGqAABFqgAASaoAAE2qAABPqgAAUqoAAFWqAABZqgAAW6oAAGCqAABjqgAAZqoAAGuqAABwqgAAdqoAAHmqAAB8qgAAgKoAAIWqAACIqgAAi6oAAI6qAACSqgAAlqoAAJqqAACdqgAAn6oAAKKqAAClqgAAqKoAAKyqAACxqgAAtKoAALmqAAC+qgAAw6oAAMiqAADOqgAA06oAANeqAADcqgAA4aoAAOeqAADtqgAA8qoAAPeqAAD9qgAAAasAAASrAAAHqwAACasAAA2rAAATqwAAGqsAACGrAAAoqwAAL6sAADarAAA9qwAARKsAAEurAABTqwAAWqsAAGKrAABpqwAAcKsAAHirAACAqwAAhasAAIqrAACPqwAAlKsAAJmrAACeqwAAo6sAAKirAACtqwAAsqsAALirAAC+qwAAxKsAAMqrAADRqwAA2asAAN+rAADlqwAA66sAAPGrAAD3qwAA/asAAAOsAAAJrAAAD6wAABWsAAAcrAAAI6wAACqsAAAxrAAAOawAAEKsAABJrAAAVKwAAFusAABirAAAa6wAAHKsAAB7rAAAhKwAAIusAACTrAAAm6wAAJ6sAAAAAAAAAAAAAAAAAAAAAAAAoawAAKOsAACmrAAAqKwAAKusAACurAAAsawAALWsAAC5rAAAvqwAAMOsAADHrAAAy6wAAM+sAADTrAAA2KwAAN6sAADjrAAA6awAAO6sAADzrAAA+KwAAP6sAAADrQAACa0AAA+tAAATrQAAF60AABytAAAhrQAAJq0AACutAAAwrQAAOK0AAECtAABIrQAAUK0AAFetAABfrQAAZq0AAG2tAAB0rQAAfq0AAIWtAACMrQAAk60AAJqtAACirQAAqq0AALGtAAC4rQAAwK0AAMitAADNrQAA1a0AANqtAADfrQAA5a0AAOqtAADwrQAA960AAP6tAAADrgAACa4AAA6uAAARrgAAFa4AABiuAAAcrgAAIK4AACSuAAAprgAALq4AADSuAAA6rgAAPq4AAEKuAABGrgAASq4AAFCuAABWrgAAWq4AAF+uAABjrgAAaK4AAGyuAABwrgAAc64AAHeuAAB6rgAAfq4AAIWuAACNrgAAma4AAKSuAACprgAAsq4AALmuAADArgAAyK4AAMyuAADSrgAA2q4AAN6uAADjrgAA6K4AAO6uAAD0rgAA+q4AAAGvAAAFrwAACa8AAA6vAAARrwAAE68AABevAAAbrwAAI68AACevAAAprwAAK68AAC+vAAA3rwAAPK8AAEKvAABMrwAAU68AAFivAABcrwAAYK8AAGSvAABnrwAAaq8AAG2vAABxrwAAda8AAHmvAAB9rwAAga8AAISvAACIrwAAjK8AAI+vAACRrwAAlK8AAJavAACarwAAnq8AAKCvAACmrwAAqa8AAK6vAACyrwAAtq8AALivAAC6rwAAvK8AAL+vAADDrwAAx68AAMuvAADPrwAA068AANmvAADfrwAA4a8AAOOvAADlrwAA568AAOqvAADsrwAA8K8AAPKvAAD2rwAA+q8AAACwAAAEsAAACLAAAAywAAAQsAAAFbAAABywAAAhsAAALLAAADewAAA8sAAAQ7AAAEywAABQsAAAVbAAAFiwAABdsAAAYbAAAGewAABssAAAebAAAIOwAACHsAAAi7AAAJKwAACXsAAAmrAAAJywAACfsAAAo7AAAKiwAACvsAAAs7AAALiwAAC9sAAAwLAAAMWwAADKsAAA0bAAANiwAADesAAA5LAAAO2wAAD2sAAA+rAAAP6wAAAAsQAABbEAAAmxAAANsQAAFrEAAB+xAAAmsQAALbEAADaxAAA/sQAARbEAAEuxAABTsQAAW7EAAF2xAABfsQAAZrEAAG2xAAB0sQAAe7EAAIGxAACHsQAAi7EAAI+xAACWsQAAnbEAAKWxAACtsQAAuLEAAMOxAADMsQAA1bEAANexAADbsQAA37EAAOSxAADpsQAA8rEAAPuxAAD+sQAAAbIAAASyAAAHsgAACrIAAA+yAAATsgAAGLIAAB2yAAAgsgAAI7IAACayAAApsgAALLIAADCyAAAzsgAANrIAADmyAAA8sgAAPrIAAECyAABCsgAARLIAAEyyAABUsgAAWrIAAF6yAABksgAAbrIAAHSyAAB6sgAAgLIAAIiyAACSsgAAn7IAAKOyAACnsgAAqbIAAK+yAACxsgAAs7IAALWyAAC3sgAAvbIAAMCyAADGsgAAzLIAANCyAADUsgAA2LIAANuyAADfsgAA47IAAOWyAADusgAA97IAAPyyAAABswAAB7MAAA2zAAATswAAFrMAABmzAAAcswAAH7MAACGzAAAnswAALLMAADGzAAA3swAAPbMAAEazAABPswAAVrMAAF2zAABkswAAa7MAAHWzAAB/swAAirMAAJWzAACgswAAq7MAALSzAAC9swAAxrMAAM+zAADXswAA47MAAO+zAAD/swAAArQAAAi0AAAOtAAAFLQAABy0AAArtAAAO7QAAEG0AABHtAAATrQAAFS0AABdtAAAZLQAAHK0AACBtAAAhrQAAIy0AACUtAAAl7QAAJq0AACctAAAn7QAAKK0AACktAAAprQAAKq0AACttAAAsLQAALO0AAC2tAAAu7QAAMC0AADFtAAAyrQAAM+0AADStAAA1LQAANa0AADYtAAA3LQAAOC0AADktAAA6rQAAO60AADwtAAA8rQAAPe0AAD8tAAAAbUAAAa1AAALtQAAELUAABK1AAAUtQAAHrUAACK1AAAotQAAMbUAADO1AAA5tQAAP7UAAEa1AABKtQAATLUAAFC1AABStQAAVrUAAFq1AABetQAAYLUAAGK1AABktQAAa7UAAHS1AAB9tQAAhrUAAI+1AACYtQAAobUAAKq1AACztQAAu7UAAMO1AADMtQAA1bUAAN61AADntQAA77UAAPe1AAAAtgAACbYAABK2AAActgAAJbYAAC+2AAA4tgAAQrYAAEu2AABVtgAAX7YAAGi2AABytgAAe7YAAIW2AACOtgAAmLYAAKG2AACqtgAAs7YAALy2AADFtgAAz7YAANi2AADhtgAA6rYAAPS2AAD9tgAABrcAAA+3AAAYtwAAIrcAACy3AAA1twAAPrcAAEa3AABPtwAAVrcAAF+3AABotwAAc7cAAHy3AACGtwAAkLcAAJe3AACetwAApbcAAK63AAC3twAAwLcAAMm3AADQtwAA1bcAAN63AADktwAA57cAAO63AADxtwAA9rcAAPu3AAD+twAAAbgAAAm4AAAMuAAAEbgAABS4AAAcuAAAIbgAACm4AAAsuAAAL7gAADK4AAA3uAAAPLgAAD+4AABCuAAASrgAAE24AABUuAAAW7gAAF+4AABjuAAAaLgAAG24AAByuAAAd7gAAHy4AACBuAAAhrgAAIu4AACSuAAAmLgAAJ+4AACmuAAArLgAALO4AAC6uAAAwrgAAMm4AADPuAAA1rgAAN64AADluAAA6bgAAO+4AAD7uAAAB7kAAAu5AAAPuQAAFLkAABm5AAAkuQAAKLkAAC25AAAyuQAAOLkAAD65AABEuQAASrkAAFO5AABcuQAAZLkAAG+5AAB6uQAAgrkAAI25AACYuQAAoLkAAKu5AAC2uQAAvrkAAMa5AADQuQAA2rkAAN25AADguQAA47kAAOi5AADsuQAA8rkAAPm5AAAAugAACLoAAA+6AAATugAAF7oAABu6AAAfugAAIboAACW6AAApugAAL7oAADW6AAA9ugAARboAAEi6AABPugAAUboAAFO6AABXugAAW7oAAGC6AABmugAAbLoAAHK6AAB4ugAAgboAAIq6AACTugAAl7oAAJm6AACdugAApLoAAKu6AACyugAAuboAAMC6AADDugAAyLoAAM66AADRugAA1roAANu6AADgugAA5boAAOm6AADwugAA97oAAP66AAAFuwAACbsAAA27AAARuwAAFbsAABu7AAAhuwAAJrsAACy7AAAyuwAAOLsAAD67AABGuwAATbsAAFS7AABbuwAAYrsAAGi7AABuuwAAd7sAAHu7AACCuwAAhrsAAIq7AACQuwAAlrsAAJy7AACiuwAAprsAAKq7AACtuwAAsbsAALW7AAC8uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMO7AADGuwAAyrsAAM67AADUuwAA2rsAAOC7AADouwAA77sAAPO7AAD7uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAO8AAAGvAAACbwAAAy8AAAPvAAAErwAABW8AAAYvAAAG7wAAB+8AAAjvAAAJ7wAACu8AAAvvAAAM7wAADe8AAA7vAAAP7wAAEO8AABHvAAASrwAAE28AABQvAAAU7wAAFa8AABZvAAAXLwAAF+8AABivAAAZrwAAGq8AABuvAAAcrwAAHa8AAB6vAAAfrwAAIK8AACGvAAAirwAAI68AACUvAAAmrwAAKC8AACnvAAArrwAALW8AAC8vAAAw7wAAMq8AADRvAAA2LwAAN+8AADmvAAA7bwAAPS8AAD7vAAAAr0AAAm9AAAQvQAAF70AABy9AAAivQAAKL0AAC69AAAzvQAAOb0AAD+9AABFvQAASr0AAFC9AABWvQAAW70AAGG9AABnvQAAbL0AAHK9AAB4vQAAfb0AAIO9AACJvQAAjr0AAJS9AACavQAAoL0AAKa9AACsvQAAsb0AALe9AAC9vQAAw70AAMi9AADOvQAA1L0AANq9AADfvQAA5b0AAOu9AADwvQAA9r0AAPy9AAABvgAAB74AAA2+AAASvgAAGL4AAB6+AAAjvgAAKb4AAC++AAA1vgAAO74AAEG+AABGvgAATL4AAFK+AABYvgAAXb4AAGO+AABpvgAAb74AAHS+AAB6vgAAgL4AAIW+AACLvgAAkb4AAJa+AACcvgAAor4AAKe+AACtvgAAs74AALi+AAC+vgAAxL4AAMq+AADQvgAA1r4AANq+AADgvgAA5r4AAOy+AADyvgAA+L4AAP6+AAAEvwAACr8AABC/AAAWvwAAGr8AAB6/AAAivwAAJr8AACq/AAAuvwAAMr8AADa/AAA6vwAAP78AAEW/AABKvwAAT78AAFS/AABZvwAAYr8AAGu/AAB0vwAAfb8AAIa/AACPvwAAmL8AAKG/AACnvwAAr78AALe/AAC9vwAAxL8AAMy/AADUvwAA278AAOG/AADpvwAA8b8AAPe/AAD+vwAABsAAAA7AAAAVwAAAG8AAACPAAAAswAAANcAAAD3AAABGwAAAT8AAAFXAAABcwAAAZMAAAG3AAAB2wAAAfsAAAIfAAACQwAAAl8AAAJ7AAACnwAAAsMAAALnAAADCwAAAy8AAANTAAADbwAAA4sAAAOvAAAD0wAAA/cAAAAbBAAAPwQAAGMEAAB/BAAAmwQAAL8EAADjBAABBwQAAS8EAAFXBAABewQAAaMEAAHLBAAB8wQAAhsEAAJDBAACawQAAo8EAAKzBAACzwQAAu8EAAMPBAADLwQAA08EAANjBAADdwQAA5sEAAO7BAAD0wQAA/cEAAAXCAAAMwgAAFcIAAB3CAAAjwgAALMIAADTCAAA7wgAARMIAAEzCAABSwgAAW8IAAGPCAABqwgAAdMIAAH3CAACEwgAAjsIAAJfCAACewgAAqMIAALHCAAC4wgAAwMIAAMnCAADSwgAA2sIAAOXCAADvwgAA9sIAAPvCAAAAwwAABMMAAAnDAAAOwwAAE8MAABfDAAAcwwAAI8MAACvDAAAywwAAOsMAAD7DAABEwwAASsMAAFDDAABUwwAAW8MAAGHDAABowwAAbMMAAHPDAAB5wwAAgMMAAITDAACKwwAAkMMAAJbDAACawwAAncMAAKHDAAClwwAAq8MAALHDAAC2wwAAusMAAL/DAADJwwAA0MMAANvDAADlwwAA6cMAAPHDAAD7wwAA/sMAAAHEAAAIxAAAEMQAABbEAAAbxAAAI8QAACzEAAA1xAAAPcQAAEHEAABFxAAASMQAAEvEAABPxAAAU8QAAFbEAABZxAAAXsQAAGPEAABpxAAAb8QAAHTEAAB5xAAAf8QAAIXEAACKxAAAj8QAAJTEAACZxAAAn8QAAKXEAACqxAAAr8QAALXEAAC7xAAAwMQAAMXEAADIxAAAy8QAANTEAADWxAAA2MQAANvEAADfxAAA5cQAAOfEAADqxAAA8cQAAPjEAAD/xAAABsUAAA/FAAAcxQAAIcUAACbFAAAqxQAAL8UAADbFAAA9xQAARcUAAE3FAABVxQAAXcUAAGHFAABlxQAAasUAAG/FAAB0xQAAecUAAHzFAACCxQAAiMUAAJHFAACaxQAAosUAAKrFAACzxQAAvMUAAMDFAADHxQAAzsUAANXFAADcxQAA5MUAAOzFAAD0xQAA/MUAAADGAAAExgAACMYAAA3GAAASxgAAGMYAAB7GAAAixgAAKMYAACrGAAAsxgAALsYAADDGAAAzxgAANsYAADjGAAA6xgAAPMYAAEDGAABExgAARsYAAEjGAABLxgAATsYAAFLGAABYxgAAXsYAAGDGAABnxgAAa8YAAHDGAAB1xgAAd8YAAIHGAACHxgAAjcYAAJPGAACZxgAAn8YAAKXGAACqxgAArcYAALDGAACzxgAAtcYAALfGAAC7xgAAv8YAAMTGAADJxgAAzsYAANHGAADVxgAA2sYAAN3GAADhxgAA5sYAAOvGAADwxgAA9cYAAPrGAAD/xgAABMcAAAnHAAAOxwAAE8cAABjHAAAdxwAAI8cAACnHAAAvxwAAMccAADTHAAA2xwAAOccAADvHAAA9xwAAP8cAAEHHAABDxwAARccAAEfHAABJxwAAS8cAAE3HAABPxwAAUccAAFPHAABVxwAAV8cAAFnHAABbxwAAYMcAAGXHAABqxwAAb8cAAHTHAAB5xwAAfscAAIPHAACIxwAAjccAAJLHAACXxwAAnMcAAKHHAACmxwAAq8cAALDHAAC1xwAAuscAAL/HAADDxwAAx8cAAMvHAADRxwAA18cAANzHAADhxwAA5scAAOzHAADyxwAA98cAAP/HAAAHyAAAD8gAABfIAAAfyAAAJ8gAAC/IAAA3yAAAPcgAAELIAABHyAAATMgAAE/IAABTyAAAV8gAAFvIAABfyAAAY8gAAGfIAABtyAAAdMgAAHvIAACDyAAAiMgAAI3IAACUyAAAm8gAAKLIAACpyAAArMgAAK/IAAC0yAAAtsgAALrIAAC/yAAAwcgAAMPIAADFyAAAx8gAAMzIAADPyAAA0cgAANbIAADcyAAA48gAAObIAADqyAAA78gAAPTIAAD8yAAAAskAAAjJAAAUyQAAG8kAACPJAAAoyQAALckAADPJAAA2yQAAOckAAD7JAABAyQAARMkAAEbJAABIyQAASskAAEzJAABOyQAAUMkAAFXJAABXyQAAWckAAFvJAABdyQAAYckAAGPJAABmyQAAa8kAAHDJAAB1yQAAeskAAIDJAACGyQAAiMkAAIvJAACSyQAAmMkAAJ7JAAClyQAAqckAAK3JAACvyQAAsckAALXJAAC7yQAAwMkAAMLJAADGyQAAz8kAANfJAADfyQAA5ckAAOvJAADwyQAA9skAAPvJAAD+yQAADMoAAA/KAAAUygAAGcoAAB/KAAApygAAK8oAADHKAAA3ygAAO8oAAELKAABGygAASMoAAErKAABOygAAVMoAAFnKAABfygAAYcoAAGfKAABpygAAb8oAAHHKAABzygAAeMoAAHrKAAB+ygAAg8oAAIXKAACKygAAj8oAAJPKAACaygAApMoAAKnKAACuygAAscoAALbKAAC5ygAAvsoAAMPKAADHygAAycoAAMvKAADPygAA08oAANfKAADbygAA38oAAOHKAADlygAA6MoAAOvKAADuygAA8soAAPbKAAD7ygAA/8oAAATLAAAJywAADcsAABPLAAAaywAAHcsAACPLAAAoywAALMsAADHLAAA3ywAAPcsAAETLAABKywAAUcsAAFjLAABaywAAYcsAAGXLAABsywAAcssAAHfLAAB9ywAAgcsAAIbLAACJywAAj8sAAJXLAACcywAApMsAAKvLAAC0ywAAvssAAMXLAADLywAAz8sAANfLAADcywAA5csAAOjLAADrywAA9MsAAP/LAAAGzAAACMwAAA7MAAATzAAAFcwAABjMAAAczAAAJMwAAC3MAAAwzAAANcwAADvMAABCzAAAScwAAFDMAABXzAAAXcwAAGPMAABpzAAAccwAAHbMAAB5zAAAfcwAAIDMAACLzAAAlcwAAJ/MAACozAAAs8wAAL3MAADGzAAAzMwAANTMAADYzAAA4MwAAOTMAADszAAA88wAAPrMAAADzQAADM0AABbNAAAgzQAAKs0AADTNAAA9zQAARs0AAFDNAABazQAAY80AAGzNAABzzQAAes0AAIHNAACIzQAAj80AAJbNAACdzQAApM0AAKvNAACzzQAAuc0AAL/NAADFzQAAy80AANHNAADXzQAA3c0AAOPNAADpzQAA8M0AAPjNAAAAzgAACM4AABDOAAAYzgAAIM4AACjOAAAwzgAAOM4AAEHOAABGzgAASc4AAE3OAABRzgAAV84AAFrOAABfzgAAZc4AAGrOAABuzgAAc84AAHnOAACAzgAAg84AAIrOAACRzgAAlc4AAJ7OAACnzgAArM4AALLOAAC3zgAAvM4AAMPOAADKzgAA0c4AANjOAADgzgAA5M4AAOzOAADxzgAA9c4AAPzOAAAAzwAABs8AAA7PAAATzwAAGs8AAB7PAAAjzwAAJ88AACzPAAAwzwAANc8AADrPAABDzwAARc8AAEnPAABNzwAAVM8AAFvPAABhzwAAac8AAG/PAAB2zwAAe88AAH7PAACDzwAAiM8AAI3PAACVzwAAmc8AAKDPAACnzwAArs8AALPPAAC4zwAAvs8AAMPPAADIzwAAzs8AANPPAADWzwAA2s8AAN7PAADlzwAA788AAPTPAAD9zwAABtAAAAzQAAAS0AAAGNAAAB7QAAAk0AAAKtAAADHQAAA40AAAQdAAAErQAABQ0AAAVtAAAFvQAABg0AAAZ9AAAG7QAAB00AAAd9AAAHrQAAB+0AAAgtAAAIbQAACL0AAAkdAAAJfQAACe0AAApdAAAKrQAACu0AAAstAAALbQAAC60AAAvtAAAMLQAADG0AAAytAAAM7QAADS0AAA1tAAANrQAADe0AAA4tAAAObQAADq0AAA7tAAAPLQAAD20AAA+tAAAP7QAAAC0QAABtEAAArRAAAO0QAAEtEAABbRAAAa0QAAHtEAACLRAAAm0QAAKtEAAC7RAAAy0QAANtEAADrRAAA+0QAAQtEAAEbRAABK0QAATtEAAFLRAABW0QAAWtEAAF7RAABi0QAAZtEAAGrRAABu0QAActEAAHbRAAB60QAAftEAAILRAACG0QAAitEAAI7RAACS0QAAltEAAJrRAACe0QAAotEAAKbRAACq0QAArtEAALLRAAC20QAAutEAAL7RAADC0QAAxtEAAMrRAADO0QAA0tEAANbRAADa0QAA3tEAAOLRAADm0QAA6tEAAO7RAADy0QAA9tEAAPrRAAD+0QAAAtIAAAbSAAAK0gAADtIAABLSAAAW0gAAGtIAAB7SAAAi0gAAJtIAACrSAAAu0gAAMtIAADbSAAA60gAAPtIAAELSAABG0gAAStIAAE7SAABS0gAAVtIAAFrSAABe0gAAYtIAAGbSAABq0gAAbtIAAHLSAAB20gAAetIAAH7SAACC0gAAhtIAAIrSAACO0gAAktIAAJbSAACa0gAAntIAAKLSAACm0gAAqtIAAK7SAACy0gAAttIAALrSAAC+0gAAwtIAAMbSAADK0gAAztIAANLSAADW0gAA2tIAAN7SAADi0gAA5tIAAOrSAADu0gAA8tIAAPbSAAD60gAA/tIAAALTAAAG0wAACtMAAA7TAAAS0wAAFtMAABrTAAAe0wAAItMAACbTAAAq0wAALtMAADLTAAA20wAAOtMAAD7TAABC0wAARtMAAErTAABO0wAAUtMAAFbTAABa0wAAXtMAAGLTAABm0wAAatMAAG7TAABy0wAAdtMAAHrTAAB+0wAAgtMAAIbTAACK0wAAjtMAAJLTAACW0wAAmtMAAJ7TAACi0wAAptMAAKrTAACu0wAAstMAALbTAAC60wAAvtMAAMLTAADG0wAAytMAAM7TAADS0wAA1tMAANrTAADe0wAA4tMAAObTAADq0wAA7tMAAPLTAAD20wAA+tMAAP7TAAAC1AAABtQAAArUAAAO1AAAEtQAABbUAAAa1AAAHtQAACLUAAAm1AAAKtQAAC7UAAAy1AAANtQAADrUAAA+1AAAQtQAAEbUAABK1AAATtQAAFLUAABW1AAAWtQAAF7UAABi1AAAZtQAAGrUAABu1AAActQAAHbUAAB61AAAftQAAILUAACG1AAAitQAAI7UAACS1AAAltQAAJrUAACe1AAAotQAAKbUAACq1AAAsdQAALnUAAC/1AAAxdQAAMzUAADT1AAA2dQAAN/UAADm1AAA7dQAAPLUAAD31AAA/NQAAAHVAAAH1QAADdUAABXVAAAc1QAAIdUAACbVAAAu1QAAN9UAAD7VAABI1QAAU9UAAFbVAABZ1QAAXdUAAGHVAABn1QAAbdUAAHfVAACB1QAAitUAAJPVAACZ1QAAn9UAAKbVAACt1QAAttUAAMDVAADL1QAA1dUAAN/VAADp1QAA9NUAAP/VAAAJ1gAAFNYAAB7WAAAo1gAAMNYAADrWAABE1gAAT9YAAFrWAABh1gAAaNYAAG/WAAB21gAAgNYAAIrWAACR1gAAmNYAAJ/WAACm1gAArdYAALTWAAC71gAAwNYAAMXWAADL1gAA09YAAN3WAADl1gAA7dYAAPXWAAD91gAABdcAAA3XAAAV1wAAHdcAACXXAAAt1wAANtcAAD/XAABH1wAAT9cAAFjXAABh1wAAatcAAHPXAAB91wAAh9cAAJDXAACZ1wAAo9cAAK3XAAC71wAAy9cAANnXAADp1wAA99cAAAXYAAAT2AAAIdgAACvYAAA22AAAQNgAAEvYAABb2AAAa9gAAHPYAAB52AAAgNgAAIfYAACO2AAAltgAAJvYAACh2AAAptgAAKvYAACx2AAAttgAALvYAADA2AAAxdgAAMrYAADR2AAA19gAAN/YAADl2AAA69gAAO/YAADz2AAA/NgAAAXZAAAO2QAAF9kAAB7ZAAAl2QAAMtkAAD/ZAABM2QAAWdkAAGHZAABp2QAAcNkAAHfZAAB/2QAAh9kAAI/ZAACX2QAAm9kAAKDZAACo2QAAsNkAALjZAAC/2QAAw9kAAMvZAADT2QAA1tkAANrZAADf2QAA5tkAAO7ZAAD22QAACdoAAB3aAAAw2gAARNoAAFjaAABs2gAAgNoAAJTaAACa2gAAodoAAKraAACy2gAAutoAAMDaAADD2gAAxtoAAMvaAADO2gAA4toAAOnaAADv2gAA9doAAPnaAAD82gAA/9oAAALbAAAM2wAAGNsAAB/bAAAm2wAAKdsAAC3bAAAw2wAANdsAADrbAAA/2wAARdsAAE7bAABV2wAAXNsAAGTbAABr2wAActsAAHXbAAB72wAAgdsAAITbAACH2wAAjNsAAJHbAACX2wAAndsAAKHbAACm2wAArdsAALHbAAC32wAAu9sAAL/bAADH2wAA09sAANvbAADf2wAA4dsAAOrbAADz2wAA+dsAAPzbAAAC3AAACNwAAA3cAAAS3AAAF9wAABzcAAAh3AAAJtwAACjcAAAu3AAAM9wAADvcAAA/3AAARdwAAEjcAABM3AAAVNwAAFzcAABe3AAAYNwAAGbcAABs3AAActwAAHvcAACE3AAAi9wAAJLcAACY3AAAn9wAAKTcAACp3AAArtwAALTcAAC63AAAv9wAAMbcAADK3AAAztwAANvcAADo3AAA9NwAAP3cAAAD3QAACt0AAA/dAAAU3QAAGd0AAB7dAAAj3QAAJd0AACzdAAA03QAAPN0AAETdAABL3QAAU90AAFndAABe3QAAZN0AAGrdAABw3QAAd90AAH3dAACF3QAAjd0AAJXdAACd3QAApd0AAKvdAACx3QAAut0AAL7dAADH3QAA0N0AANndAADh3QAA5d0AAOvdAADy3QAA+d0AAP3dAAAD3gAAC94AABHeAAAW3gAAHN4AACHeAAAm3gAALd4AADTeAAA53gAAPt4AAEbeAABO3gAAWN4AAGLeAABp3gAAcN4AAHTeAAB43gAAhN4AAIreAACR3gAAlt4AAJveAACi3gAAqd4AAK/eAAC13gAAv94AAMbeAADO3gAA1t4AAN/eAADm3gAA7N4AAPPeAAD53gAAAd8AAAnfAAAR3wAAGd8AAB/fAAAk3wAALt8AADnfAABA3wAASd8AAE/fAABU3wAAWd8AAGPfAABs3wAAct8AAHjfAACA3wAAhd8AAIzfAACT3wAAnt8AAKXfAACs3wAAs98AALrfAADB3wAAyt8AANPfAADg3wAA7d8AAPnfAAAF4AAAEuAAACDgAAAm4AAALOAAADbgAABA4AAAR+AAAE7gAABY4AAAYuAAAGvgAAB04AAAfOAAAITgAACO4AAAmOAAAKfgAAC24AAAv+AAAMjgAADV4AAA4uAAAOvgAAD04AAA/+AAAArhAAAQ4QAAFuEAAB/hAAAo4QAALeEAADLhAAA64QAAQOEAAEbhAABO4QAAVuEAAGPhAABw4QAAdOEAAHjhAACB4QAAiuEAAJHhAACZ4QAAoeEAAKvhAAC14QAAu+EAAMHhAADJ4QAA0eEAANnhAADh4QAA6+EAAPXhAAD44QAA++EAAADiAAAF4gAAC+IAABHiAAAY4gAAH+IAACriAAA14gAAPOIAAEPiAABL4gAAU+IAAFziAABl4gAAbuIAAHfiAAB+4gAAheIAAIniAACN4gAAluIAAJ/iAACk4gAAqeIAAK7iAACz4gAAueIAAMfiAADO4gAA1eIAANniAADb4gAA3eIAAOLiAADn4gAA7OIAAPHiAAD54gAAAOMAAAfjAAAP4wAAG+MAACPjAAAr4wAANuMAADrjAAA+4wAAROMAAEzjAABZ4wAAYOMAAGfjAABu4wAAdOMAAHvjAACE4wAAjeMAAJPjAACZ4wAAn+MAAKrjAAC14wAAveMAAMbjAADL4wAAzuMAANPjAADY4wAA3eMAAOPjAADp4wAA7eMAAPDjAAD04wAA+OMAAP3jAAAC5AAACOQAAA7kAAAS5AAAFuQAAB3kAAAk5AAAK+QAADLkAAA55AAAQOQAAEnkAABS5AAAWeQAAGDkAABo5AAAcOQAAHTkAAB55AAAfuQAAITkAACK5AAAjeQAAJDkAACT5AAAluQAAJvkAACg5AAApeQAAKrkAACv5AAAtOQAALjkAAC85AAAwOQAAMXkAADK5AAAzuQAANLkAADY5AAA3OQAAOLkAADn5AAA7uQAAPbkAAD95AAABeUAAAzlAAAU5QAAHeUAACTlAAAu5QAAOeUAAD/lAABI5QAATuUAAFflAABh5QAAZ+UAAG3lAABx5QAAdeUAAH7lAACI5QAAj+UAAJflAACg5QAAqeUAALDlAAC25QAAveUAAMLlAADG5QAAyuUAAM/lAADU5QAA2eUAAOHlAADp5QAA7OUAAPDlAAD55QAAA+YAAAzmAAAW5gAAIuYAADDmAAA05gAAOeYAAD3mAABC5gAAR+YAAEzmAABS5gAAWOYAAF/mAABm5gAAbOYAAHPmAAB55gAAgOYAAInmAACS5gAAmOYAAJ/mAACl5gAAAAAAAAAAAACs5gAAtOYAALzmAADF5gAAzuYAANfmAADh5gAA6uYAAPTmAAD65gAA/+YAAAjnAAAU5wAAHecAACnnAAAw5wAAOOcAAD/nAABH5wAATOcAAFLnAABX5wAAXecAAGXnAABu5wAAducAAH/nAACD5wAAhucAAIrnAACN5wAAl+cAAAAAAACa5wAAoecAAKrnAAC05wAAvecAAMfnAADN5wAA1OcAANrnAADh5wAA7OcAAPfnAAAC6AAADegAABfoAAAh6AAAK+gAADXoAAA96AAARegAAE3oAABV6AAAXegAAGXoAABt6AAAdegAAHvoAACA6AAAhugAAIvoAACR6AAAl+gAAJ3oAACj6AAAr+gAALnoAAC+6AAAxegAAMroAADR6AAA1OgAANjoAADc6AAA4egAAOXoAADq6AAA7egAAPboAAD/6AAACOkAABHpAAAW6QAAHOkAACLpAAAq6QAANOkAADvpAABE6QAASekAAEzpAABP6QAAVOkAAFnpAABe6QAAY+kAAGXpAABn6QAAaekAAGvpAABt6QAAb+kAAHTpAAB76QAAgukAAITpAACG6QAAiOkAAIrpAACM6QAAjukAAJDpAACS6QAAl+kAAJzpAACj6QAAqukAALPpAAC96QAAxukAANDpAADV6QAA2ukAANzpAADj6QAA6ukAAPHpAAD46QAA/+kAAAbqAAAN6gAAEOoAABPqAAAW6gAAGeoAAB7qAAAj6gAAKOoAAC3qAAAy6gAAN+oAADzqAABB6gAARuoAAEvqAABQ6gAAVeoAAFvqAABf6gAAZOoAAGnqAABu6gAAc+oAAHjqAAB96gAAguoAAIfqAACM6gAAkeoAAJbqAACb6gAAoOoAAKXqAACq6gAAr+oAALTqAAC56gAAvuoAAMPqAADI6gAAzeoAANPqAADY6gAA3uoAAOfqAADs6gAA9OoAAPvqAAAE6wAACesAAA7rAAAT6wAAGesAACDrAAAn6wAALOsAADHrAAA26wAAO+sAAEDrAABF6wAASusAAE/rAABU6wAAWesAAF/rAABj6wAAaOsAAG3rAABy6wAAd+sAAHzrAACB6wAAhusAAIvrAACQ6wAAlesAAJrrAACf6wAApOsAAKnrAACu6wAAs+sAALjrAAC96wAAwusAAMfrAADM6wAA0esAANfrAADc6wAA4usAAOvrAADw6wAA+OsAAP/rAAAI7AAADewAABLsAAAX7AAAHewAACTsAAAr7AAAM+wAADvsAABE7AAAS+wAAFPsAABZ7AAAYuwAAGrsAABy7AAAeuwAAILsAACK7AAAkuwAAJfsAACe7AAAo+wAAKnsAACx7AAAuOwAAL/sAADH7AAAzewAANPsAADa7AAA4uwAAOvsAAD17AAA++wAAALtAAAH7QAAEe0AABvtAAAg7QAAJe0AACrtAAAv7QAANO0AADntAAA+7QAAQ+0AAEjtAABN7QAAUu0AAFftAABc7QAAYe0AAGbtAABr7QAAcO0AAHXtAAB67QAAf+0AAITtAACJ7QAAju0AAJPtAACY7QAAne0AAKLtAACn7QAArO0AALHtAAC17QAAue0AAL7tAADD7QAAyO0AAM3tAADS7QAA1+0AANztAADh7QAA5u0AAOvtAADw7QAA9e0AAPrtAAD/7QAABO4AAAnuAAAO7gAAE+4AABruAAAh7gAAKO4AAC/uAAA27gAAPe4AAETuAABL7gAAUu4AAFnuAABg7gAAZ+4AAG7uAAB17gAAeu4AAH/uAACG7gAAje4AAJTuAACb7gAAou4AAKnuAACw7gAAt+4AAL7uAADF7gAAzO4AANPuAADZ7gAA3+4AAOXuAADr7gAA8u4AAPnuAAAA7wAAB+8AAA7vAAAV7wAAHO8AACPvAAAq7wAAMe8AADnvAABB7wAASe8AAFHvAABZ7wAAYe8AAGnvAABx7wAAde8AAHvvAACB7wAAhe8AAIvvAACR7wAAl+8AAJ7vAACl7wAArO8AALPvAAC47wAAvu8AAMTvAADL7wAAAAAAAAAAAAAAAAAAAAAAAAAAAADS7wAA2u8AAOPvAADs7wAA9O8AAPrvAAD/7wAABPAAAAnwAAAO8AAAE/AAABjwAAAd8AAAIvAAACfwAAAs8AAAMfAAADbwAAA78AAAQPAAAEXwAABK8AAAT/AA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AMEGAQDGBgEAywYBANAGAQDVBgEA2QYBAN4GAQDjBgEA6AYBAO0GAQDyBgEA9gYBAPoGAQD+BgEAAgcBAAYHAQAKBwEADgcBABIHAQAWBwEAGgcBAB4HAQAiBwEAJgcBACoHAQAvBwEANAcBADkHAQA+BwEAQwcBAEgHAQBNBwEAUgcBAFcHAQBcBwEAYQcBAGYHAQBrBwEAcAcBAHcHAQB+BwEAgwcBAIgHAQCMBwEAkAcBAJQHAQCYBwEAnAcBAKAHAQCkBwEAqAcBAKwHAQCxBwEAtgcBALsHAQDABwEAxQcBAMoHAQDPBwEA1AcBANkHAQDeBwEA4wcBAOgHAQDtBwEA8gcBAPcHAQD8BwEAAQgBAAYIAQALCAEAEAgBABUIAQAaCAEAHwgBACQIAQApCAEALggBADMIAQA4CAEAPQgBAEIIAQBHCAEASwgBAFAIAQBVCAEAWggBAF8IAQBkCAEAaQgBAG4IAQBzCAEAeAgBAH0IAQCCCAEAhwgBAIsIAQCQCAEAlQgBAJoIAQCfCAEApAgBAKkIAQCuCAEAswgBALgIAQC8CAEAwwgBAMoIAQDRCAEA2AgBAN8IAQDmCAEA7QgBAPQIAQD7CAEAAgkBAAkJAQAQCQEAEwkBABYJAQAZCQEAHgkBACEJAQAkCQEAJwkBACoJAQAtCQEAMAkBADQJAQA4CQEAPAkBAEAJAQBDCQEARwkBAEsJAQBPCQEAUwkBAFcJAQBbCQEAXwkBAGMJAQBmCQEAaQkBAG0JAQBxCQEAdQkBAHkJAQB8CQEAgAkBAIQJAQCICQEAjAkBAI8JAQCTCQEAlwkBAJsJAQCfCQEAogkBAKYJAQCqCQEArQkBALEJAQC1CQEAuQkBAL0JAQDBCQEAxQkBAMkJAQDNCQEA1AkBANcJAQDaCQEA3QkBAOAJAQDjCQEA5gkBAOkJAQDsCQEA7wkBAPIJAQD1CQEA+AkBAPsJAQD+CQEAAQoBAAQKAQAHCgEACgoBAA0KAQAQCgEAEwoBABYKAQAZCgEAHAoBAB8KAQAiCgEAJQoBACgKAQArCgEALgoBADEKAQA0CgEANwoBADoKAQA9CgEAQAoBAEMKAQBGCgEASQoBAEwKAQBPCgEAUgoBAFUKAQBYCgEAWwoBAF4KAQBhCgEAZAoBAGcKAQBqCgEAbQoBAHAKAQBzCgEAdgoB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AOoWAQDuFgEA8hYBAPYWAQD6FgEA/hYBAAIXAQAFFwEACRcBAA0XAQARFwEAFRcBABkXAQAdFwEAIRcBACUXAQApFwEALRcBADEXAQA1FwEAORcBAD0XAQBBFwEARRcBAEkXAQBNFwEAURcBAFUXAQBZFwEAXRcBAGEXAQBlFwEAaRcBAG0XAQBxFwEAdRcBAHkXAQB9FwEAgRcBAIUXAQCJFwEAjRcBAJEXAQCVFwEAmRcBAJ0XAQChFwEApRcBAKkXAQCtFwEAsRcBALUXAQC5FwEAvRcBAMEXAQDFFwEAyRcBAM0XAQDRFwEA1RcBANkXAQDdFwEA4RcBAOUXAQDpFwEA7RcBAPEXAQD1FwEA+RcBAP0XAQABGAEABBgBAAgYAQAMGAEAEBgBABQYAQAYGAEAHBgBACAYAQAkGAEAKBgBACwYAQAwGAEANBgBADgYAQA8GAEAQBgBAEQYAQBIGAEATBgBAFAYAQBUGAEAWBgBAFwYAQBgGAEAZBgBAGgYAQBsGAEAcBgBAHQYAQB4GAEAfBgBAIAYAQCEGAEAiBgBAIwYAQCQGAEAlBgBAJgYAQCcGAEAoBgBAKQYAQCoGAEArBgBALAYAQC0GAEAuBgBALwYAQDAGAEAxBgBAMgYAQDMGAEA0BgBANQYAQDYGAEA3BgBAOAYAQDkGAEA6BgBAOwYAQDwGAEA9BgBAPgYAQD8GAEAABkBAAQZAQAIGQEADBkBABAZAQAUGQEAGBkBABwZAQAgGQEAJBkBACgZAQAsGQEAMBkBADQZAQA4GQEAPBkBAEAZAQBEGQEASBkBAEwZAQBQGQEAVBkBAFgZAQBcGQEAYBkBAGQZAQBoGQEAbBkBAHAZAQB0GQEAeBkBAHwZAQCAGQEAhBkBAIgZAQCMGQEAkBkBAJQZAQCYGQEAnBkBAKAZAQCkGQEAqBkBAKwZAQCwGQEAtBkBALgZAQC8GQEAwBkBAMQZAQDIGQEAyxkBAM8ZAQDTGQEA1xkBANsZAQDfGQEA4xkBAOcZAQDrGQEA7xkBAPMZAQD3GQEA+xkBAP8ZAQADGgEABxoBAAsaAQAPGgEAExoBABcaAQAbGgEAHxoBACMaAQAnGgEAKxoBAC8aAQAzGgEANxoBADsaAQA/GgEAQxoBAEcaAQBLGgEATxoBAFMaAQBXGgEAWxoBAF8aAQBjGgEAZxoBAGsaAQBvGgEAcxoBAHcaAQB7GgEAfxoBAIMaAQCHGgEAixoBAI8aAQCTGgEAlxoBAJsaAQCfGgEAoxoBAKcaAQCrGgEArxoBALMaAQC3GgEAuxoBAL8aAQDDGgEAxxoBAMsaAQDPGgEA0xoBANcaAQDbGgEA3xoBAOMaAQDnGgEA6xoBAO8aAQDzGgEA9xoBAPsaAQD/GgEAAxsBAAcbAQALGwEADxsBABMbAQAXGwEAGxsBAB8bAQAjGwEAJxsBACsbAQAvGwEAMxsBADcbAQA7GwEAPxsBAEMbAQBHGwEASxsBAE8bAQBTGwEAVxsBAFsbAQBfGwEAYxsBAGcbAQBrGwEAbxsBAHMbAQB3GwEAexsBAH8bAQCDGwEAhxsBAIsbAQCPGwEAkxsBAJcbAQCbGwEAnxsBAKMbAQCnGwEAqxsBAK8bAQCzGwEAtxsBALsbAQC/GwEAwxsBAMcbAQDLGwEAzxsBANMbAQDXGwEA2xsBAN8bAQDjGwEA5xsBAOsbAQDvGwEA8xsBAPcbAQD7GwEA/xsBAAMcAQAHHAEACxwBAA8cAQATHAEAFxwBABscAQAfHAEAIxwBACYcAQAqHAEALhwBADIcAQA2HAEAOhwBAD4cAQBCHAEARRwBAEkcAQBNHAEAURwBAFUcAQBZHAEAXRwBAGEcAQBlHAEAaRwBAG0cAQBxHAEAdRwBAHkcAQB9HAEAgRwBAIUcAQCJHAEAjRwBAJEcAQCVHAEAmRwBAJ0cAQChHAEApRwBAKkcAQCtHAEAsRwBALUcAQC5HAEAvRwBAMEcAQDFHAEAyRwBAM0cAQDRHAEA1RwBANkcAQDdHAEA4RwBAOUcAQDpHAEA7RwBAPEcAQD1HAEA+RwBAP0cAQABHQEABR0BAAkdAQANHQEAER0BABUdAQAZHQEAHR0BACEdAQAlHQEAKR0BAC0dAQAxHQEANR0BADkdAQA9HQEAQR0BAEUdAQBJHQEATR0BAFEdAQBVHQEAWR0BAF0dAQBhHQEAZR0BAGkdAQBtHQEAcR0BAHUdAQB5HQEAfR0BAIEdAQCFHQEAiR0BAI0dAQCRHQEAlR0BAJkdAQCdHQEAoR0BAKUdAQCpHQEArR0BALEdAQC1HQEAuR0BAL0dAQDBHQEAxR0BAMkdAQDNHQEA0R0BANUdAQDZHQEA3R0BAOEdAQDlHQEA6R0BAO0dAQDxHQEA9R0BAPkdAQD9HQEAAR4BAAUeAQAJHgEADR4BABEeAQAVHgEAGR4BAB0eAQAhHgEAJR4BACkeAQAtHgEAMR4BADUeAQA5HgEAPR4BAEEeAQBFHgEASR4BAE0eAQBRHgEAVR4BAFkeAQBdHgEAYR4BAGUeAQBpHgEAbR4BAHEeAQB1HgEAeR4BAH0eAQCBHgEAhR4BAIkeAQCNHgEAkR4BAJUeAQCZHgEAnR4BAKEeAQClHgEAqR4BAK0eAQCxHgEAtR4BALkeAQC9HgEAwR4BAMUeAQDJHgEAzR4BANEeAQDVHgEA2R4BAN0eAQDhHgEA5R4BAOkeAQDtHgEA8R4BAPUeAQD5HgEA/R4BAAEfAQAFHwEACR8BAA0fAQARHwEAFR8BABkfAQAcHwEAIB8BACQfAQAoHwEALB8BADAfAQA0HwEAOB8BADwfAQBAHwEARB8BAEgfAQBMHwEAUB8BAFQfAQBYHwEAXB8BAGAfAQBkHwEAaB8BAGwfAQBwHwEAdB8BAHgfAQB8HwEAgB8BAIQfAQCIHwEAjB8BAJAfAQCUHwEAmB8BAJwfAQCgHwEApB8BAKgfAQCsHwEAsB8BALQfAQC4HwEAvB8BAMAfAQDEHwEAyB8BAMwfAQDQHwEA1B8BANgfAQDcHwEA4B8BAOQfAQDoHwEA7B8BAPAfAQD0HwEA+B8BAPwfAQAAIAEABCABAAggAQAMIAEAECABABQgAQAYIAEAHCABACAgAQAkIAEAKCABACwgAQAwIAEANCABADggAQA8IAEAQCABAEQgAQBIIAEATCABAFAgAQBUIAEAWCABAFwgAQBgIAEAZCABAGggAQBsIAEAcCABAHQgAQB4IAEAfCABAIAgAQCEIAEAiCABAIwgAQCQIAEAlCABAJggAQCcIAEAoCABAKQgAQCoIAEArCABALAgAQC0IAEAuCABALwgAQDAIAEAxCABAMggAQDMIAEA0CABANQgAQDYIAEA3CABAOAgAQDkIAEA6CABAOwgAQDwIAEA9CABAPggAQD8IAEAACEBAAQhAQAIIQEADCEBABAhAQAUIQEAGCEBABwhAQAgIQEAJCEBACghAQAsIQEAMCEBADQhAQA4IQEAPCEBAEAhAQBEIQEASCEBAEwhAQBQIQEAVCEBAFghAQBcIQEAYCEBAGQhAQBoIQEAbCEBAHAhAQB0IQEAeCEBAHwhAQCAIQEAhCEBAIghAQCMIQEAkCEBAJQhAQCYIQEAnCEBAKAhAQCkIQEAqCEBAKwhAQCwIQEAtCEBALghAQC8IQEAwCEBAMQhAQDIIQEAzCEBANAhAQDUIQEA2CEBANwhAQDgIQEA5CEBAOghAQDsIQEA8CEBAPQhAQD4IQEA/CEBAAAiAQAEIgEACCIBAAwiAQAQIgEAFCIBABgiAQAcIgEAICIBACQiAQAoIgEAAAAAAAAAAAAAAAAALCIBADAiAQA0IgEAOCIBADwiAQBAIgEARCIBAEgiAQBMIgEAUCIBAFQiAQBYIgEAXCIBAGAiAQBkIgEAaCIBAGwiAQBwIgEAdCIBAHgiAQB8IgEAgCIBAIQiAQCIIgEAjCIBAJAiAQCUIgEAmCIBAJwiAQCgIgEApCIBAKgiAQCsIgEAsCIBALQiAQC4IgEAvCIBAMAiAQDEIgEAyCIBAMwiAQDQIgEA1CIBANgiAQDcIgEA4CIBAOQiAQDoIgEA7CIBAPAiAQD0IgEA+CIBAPwiAQAAIwEABCMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgjAQANIwEAESMBABYjAQAbIwEAICMBACUjAQAqIwEALiMBADMjAQA4IwEAPSMBAEIjAQBHIwEATCMBAFEjAQBVIwEAWSMBAF0jAQBhIwEAZiMBAGsjAQBwIwEAdCMBAHkjAQB+IwEAgyMBAIgjAQCNIwEAkSMBAJYjAQCaIwEAnyMBAKMjAQCoIwEArCMBALAjAQC0IwEAuSMBAL4jAQDDIwEAyyMBANMjAQDbIwEA4yMBAOojAQDyIwEA+CMBAAAkAQAEJAEACCQBAAwkAQAQJAEAFCQBABgkAQAcJAEAICQBACQkAQAoJAEALCQBADAkAQA0JAEAOCQBADwkAQBAJAEARCQBAEgkAQBMJAEAUCQBAFQkAQBYJAEAXCQBAGAkAQBkJAEAaCQBAGwkAQBwJAEAdCQBAHgkAQB8JAEAgCQBAIQkAQCIJAEAjCQBAJAkAQCTJAEAlyQBAJskAQCfJAEAoyQBAKckAQCrJAEAryQBALMkAQC3JAEAuyQBAL8kAQDDJAEAxyQBAMskAQDPJAEA0yQBANckAQDbJAEA3yQBAOMkAQDnJAEA6yQBAO8kAQDzJAEA9yQBAPskAQD/JAEAAyUBAAclAQALJQEADyUBABMlAQAXJQEAGyUBAB8lAQAjJQEAJiUBAColAQAuJQEAMSUBADUlAQA5JQEAPSUBAEAlAQBEJQEASCUBAEwlAQBQJQEAVCUBAFglAQBcJQEAYCUBAGQlAQBoJQEAbCUBAHAlAQB0JQEAdyUBAHolAQB+JQEAgiUBAIUlAQCJJQEAjSUBAJElAQCVJQEAmSUBAJ0lAQCgJQEAoyUBAKclAQCrJQEAryUBALIlAQC1JQEAuSUBAL0lAQDBJQEAxSUBAMklAQDNJQEA0SUBANUlAQDZJQEA3SUBAOElAQDlJQEA6SUBAO0lAQDxJQEA9SUBAPklAQD9JQEAASYBAAUmAQAJJgEADSYBABEmAQAVJgEAGSYBAB0mAQAhJgEAJSYBACkmAQAtJgEAMSYBADUmAQA5JgEAPSYBAEEmAQBFJgEASSYBAEwmAQBQJgEAVCYBAFgmAQBcJgEAYCYBAGQmAQBoJgEAbCYBAHAmAQB0JgEAeCYBAHwmAQCAJgEAhCYBAIgmAQCMJgEAkCYBAJQmAQCYJgEAnCYBAKAmAQCkJgEAqCYBAKwmAQCwJgEAtCYBALgmAQC8JgEAwCYBAMQmAQDIJgEAzCYBANAmAQDUJgEA2CYBANwmAQDfJgEA4yYBAOcmAQDrJgEA7yYBAPMmAQD3JgEA+yYBAP8mAQADJwEABycBAAsnAQAPJwEAEycBABcnAQAbJwEAHycBACInAQAmJwEAKicBAC4nAQAyJwEANicBADonAQA+JwEAQicBAEYnAQBKJwEATicBAFInAQBWJwEAWicBAF4nAQBiJwEAZicBAGonAQBuJwEAcicBAHYnAQB5JwEAfScBAIEnAQCFJwEAiScBAI0nAQCRJwEAlScBAJknAQCdJwEAoScBAKUnAQCpJwEArScBALEnAQC1JwEAuScBAL0nAQDBJwEAxScBAMknAQDNJwEA0ScBANUnAQDZJwEA3ScBAOEnAQDlJwEA6ScBAO0nAQDxJwEA9ScBAPknAQD9JwEAASgBAAUoAQAJKAEADSgBABEoAQAVKAEAGSgBAB0oAQAhKAEAJSgBACgoAQAtKAEAMSgBADcoAQA8KAEAQigBAEYoAQBKKAEATigBAFIoAQBWKAEAWigBAF4oAQBiKAEAZigBAGooAQBuKAEAcigBAHYoAQB6KAEAfSgBAIAoAQCDKAEAhigBAIkoAQCMKAEAjygBAJIoAQCVKAEAmigBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoCgBAKUoAQCqKAEArygBALQoAQC7KAEAwigBAMcoAQDMKAEA0SgBANYoAQDdKAEA5CgBAOsoAQDyKAEA+SgBAAApAQAKKQEAFCkBABspAQAiKQEAKSkBADApAQA2KQEAPCkBAEUpAQBOKQEAVSkBAFwpAQBnKQEAcikBAHcpAQB8KQEAgykBAIopAQCRKQEAmCkBAJ8pAQCmKQEArSkBALQpAQC6KQEAwCkBAMYpAQDMKQEA0ykBANopAQDfKQEA4ykBAOopAQDxKQEA+CkBAPwpAQADKgEAByoBAAwqAQAQKgEAFioBABsqAQAhKgEAJioBACoqAQAuKgEAMSoBADQqAQA5KgEAPioBAEMqAQBIKgEATSoBAFIqAQBXKgEAXCoBAGEqAQBmKgEAbioBAHYqAQB7KgEAgCoBAIUqAQCKKgEAjyoBAJQqAQCZKgEAnioBAKMqAQCoKgEArSoBALIqAQC3KgEAvCoBAMIqAQDIKgEAzioBANQqAQDZKgEA3yoBAOIqAQDlKgEA6CoBAOwqAQDwKgEA9CoBAPgqAQD7KgEA/yoBAAIrAQAFKwEACCsBAAwrAQAQKwEAFCsBABgrAQAcKwEAICsBACQrAQAoKwEALCsBADArAQA0KwEAOCsBADwrAQBAKwEARCsBAEgrAQBMKwEAUCsBAFQrAQBYKwEAXCsBAGArAQBjKwEAZysBAGsrAQBvKwEAcysBAHcrAQB7KwEAfysBAIMrAQCHKwEAiysBAI8rAQCTKwEAlysBAJsrAQCfKwEAoysBAKcrAQCrKwEArysBALMrAQC3KwEAuysBAL8rAQDDKwEAxisBAMorAQDOKwEA0isBANYrAQDaKwEA3isBAOIrAQDlKwEA6SsBAO0rAQDxKwEA9SsBAPkrAQD9KwEAASwBAAUsAQAJLAEADSwBABEsAQAVLAEAGiwBAB8sAQAiLAEAJywBACosAQAtLAEAMCwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCwBAD0sAQBGLAEATywBAFgsAQBhLAEAaiwBAHMsAQB8LAEAhCwBAIssAQCTLAEAmiwBAKIsAQCsLAEAtSwBAL8sAQDILAEA0iwBANosAQDhLAEA6SwBAPAsAQD4LAEA/SwBAAItAQAILQEAEC0BABYtAQAcLQEAIy0BACwtAQA0LQEAPC0BAEQtAQBLLQEAUi0BAFktAQBgLQEAZS0BAGotAQBvLQEAdC0BAHktAQB+LQEAgy0BAIgtAQCQLQEAmC0BAJ4tAQCkLQEAqS0BAK4tAQCzLQEAuC0BAL0tAQDCLQEAxy0BAMwtAQDVLQEA3i0BAOMtAQDoLQEA8i0BAPwtAQADLgEACi4BABMuAQAcLgEAKC4BADQuAQA6LgEAQC4BAEguAQBQLgEAWi4BAGQuAQBrLgEAci4BAHcuAQB8LgEAiC4BAJQuAQCcLgEApC4BAK4uAQC4LgEAxC4BANAuAQDZLgEA4i4BAOkuAQDwLgEA9y4BAP4uAQAHLwEAEC8BABUvAQAaLwEAIS8BACgvAQAvLwEANi8BAEIvAQBOLwEAUy8BAFgvAQBdLwEAYi8BAGcvAQBsLwEAcS8BAHYvAQB6LwEAfy8BAIQvAQCJLwEAji8BAJMvAQCZLwEAni8BAKMvAQCqLwEAsS8BALgvAQC/LwEAxi8BAM4vAQDWLwEA2y8BAOAvAQDmLwEA7C8BAPMvAQD6LwEAATABAAgwAQAPMAEAEzABABowAQAfMAEAJDABACowAQA3MAEAPTABAEUwAQBNMAEAVDABAFswAQBkMAEAbTABAHQwAQB7MAEAgjABAIkwAQCQMAEAlzABAJ4wAQClMAEArDABALMwAQC8MAEAxTABAM4wAQDXMAEA4DABAOkwAQDyMAEA+zABAAQxAQANMQEAFDEBABwxAQAiMQEAKjEBADAxAQA2MQEAPDEBAEIxAQBKMQEATzEBAFQxAQBZMQEAXjEBAGMxAQBpMQEAbzEBAHUxAQB7MQEAgTEBAIcxAQCNMQEAkzEBAJoxAQChMQEAqDEBAK8xAQC4MQEAvzEBAMgxAQDUMQEA4DEBAOwxAQAAAAAAAAAAAAAAAAAAAAAAAAAAAPgxAQABMgEAAAAAAAoyAQAAAAAAEDIBABYyAQAeMgEAJjIBAC0yAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ADlYAQBCWAEASlgBAFNYAQBbWAEAZVgBAG1YAQB2WAEAflgBAIhYAQCQWAEAmFgBAJ9YAQCnWAEArlgBALdYAQC+WAEAyFgBANJYAQDdWAEA5lgBAO9YAQD4WAEAAVkBAApZAQAUWQEAIFkBACxZAQA3WQEAQ1kBAFBZAQBbWQEAZFkBAG1ZAQB1WQEAflkBAIhZAQCQWQEAmVkBAKJZAQCqWQEAs1kBAL1ZAQDFWQEAzlkBANdZAQDfWQEA6FkBAPJZAQD6WQEABFoBAAxaAQAWWgEAHloBACZaAQAvWgEAN1oBAEFaAQBJWgEAUVoBAFtaAQBjWgEAaloBAHFaAQB6WgEAg1oBAItaAQCUWgEAnloBAKZaAQCxWgEAuVoBAMFaAQDIWgEA0FoBANlaAQDgWgEA7FoBAPdaAQADWwEADlsBABpbAQAjWwEAK1sBADRbAQA8WwEARVsBAE5bAQBWWwEAX1sBAGdbAQBwWwEAeFsBAIBbAQCIWwEAkFsBAJdbAQCgWwEAqFsBALFbAQC5WwEAwlsBAMpbAQDSWwEA21sBAONbAQDsWwEA9FsBAP1bAQAFXAEADVwBABVcAQAeXAEAJlwBAC9cAQA3XAEAQFwBAEhcAQBRXAEAWVwBAGFcAQBpXAEAclwBAHpcAQCDXAEAjFwBAJRcAQCdXAEApVwBAK5cAQC2XAEAv1wBAMdcAQDOXAEA1lwBAN1cAQDmXAEA7lwBAPdcAQD/XAEACF0BABFdAQAZXQEAI10BACtdAQAyXQEAOl0BAEFdAQBJXQEAVV0BAGJdAQBrXQEAdV0BAH5dAQCIXQEAkV0BAJtdAQCkXQEArl0BALddAQDBXQEAy10BANRdAQDdXQEA5l0BAPBdAQD4XQEAAV4BAAteAQAVXgEAH14BACleAQAxXgEAO14BAENeAQBNXgEAVV4BAF9eAQBnXgEAcV4BAHleAQCCXgEAiV4BAJNeAQCbXgEApV4BAK1eAQC3XgEAv14BAMleAQDRXgEA2l4BAOJeAQDrXgEA814BAPxeAQAFXwEADl8BABdfAQAhXwEAKV8BADNfAQA7XwEARV8BAE1fAQBXXwEAX18BAGlfAQBxXwEAel8BAIFfAQCLXwEAk18BAJ1fAQClXwEAr18BALdfAQDBXwEAyV8BANJfAQDaXwEA418BAOtfAQD0XwEA/V8B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AB1sAQAjbAEAKmwBADFsAQA2bAEAO2wBAEBsAQBGbAEAUmwBAF5sAQBqbAEAdmwBAINsAQCQbAEAmGwBAAAAAAAAAAAAoGwBAAAAAACobAEArWwBALJsAQC2bAEAu2wBAMBsAQDEbAEAyGwBAM1sAQDSbAEA1mwBANpsAQDebAEA4mwBAOhsAQDsbAEA8WwBAPVsAQD5bAEA/WwBAAFtAQAFbQEACW0BAA1tAQARbQEAFW0BABltAQAdbQEAIm0BACdtAQAsbQEAMW0BADdtAQA9bQEARG0BAEttAQBSbQEAWG0BAF9tAQBmbQEAbW0BAHNtAQB6bQEAgW0BAIdtAQCObQEAlW0BAJttAQCibQEAqW0BAK9tAQC2bQEAvW0BAMNtAQDKbQEA0W0BANhtAQDfbQEA5m0BAOxtAQDybQEA+G0BAP5tAQADbgEACW4BAA9uAQAWbgEAHW4BACRuAQAqbgEAMW4BADhuAQA/bgEARW4BAExuAQBTbgEAWW4BAGBuAQBnbgEAbW4BAHRuAQB7bgEAgW4BAIhuAQCPbgEAlW4BAJxuAQCjbgEAqm4BALFuAQC4bgEAv24BAMRuAQDLbgEAz24BANVuAQDbbgEA4W4BAOduAQDtbgEA8W4BAPZuAQD7bgEAAG8BAAVvAQAKbwEAD28BABRvAQAZbwEAH28BACVvAQArbwEAM28BADdvAQA7bwEAP28BAENvAQBHbwEAS28BAFBvAQBVbwEAWm8BAF9vAQBjbwEAaG8BAG1vAQBybwEAd28BAHxvAQCBbwEAhm8BAItvAQCPbwEAk28BAJhvAQCdbwEAom8BAKdvAQCrbwEAsG8BALVvAQC6bwEAv28BAMNvAQDIbwEAzW8BANJvAQDXbwEA228BAOBvAQDlbwEA6W8BAO5vAQDzbwEA+G8BAP1vAQACcAEAB3ABAA5wAQAVcAEAGXABAB5wAQAjcAEAKHABAC1wAQAycAEAN3ABADxwAQBBcAEARnABAEtwAQBQcAEAVXABAFpwAQBfcAEAZHABAGlwAQBucAEAc3ABAHhwAQB9cAEAgnABAIdwAQCMcAEAkXABAJZwAQCbcAEAoHABAKVwAQCqcAEAAAAAAAAAAAAAAAAAr3ABALNwAQC4cAEAvHABAMFwAQDGcAEAAAAAAAAAAADKcAEAz3ABANRwAQDYcAEA3XAB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AEuNAQBQjQEAVY0BAFqNAQBfjQEAZI0BAGmNAQBujQEAc40BAHiNAQB9jQEAgo0BAIeNAQCMjQEAkY0BAJaNAQCbjQEAoI0BAKWNAQCqjQEAr40BALSNAQC5jQEAvo0BAMONAQDIjQEAzY0BANKNAQDXjQEA3I0BAOGNAQDmjQEA640BAPCNAQD1jQEA+o0BAP+NAQAEjgEACY4BAA6OAQATjgEAGI4BAB2OAQAijgEAJ44BACyOAQAxjgEANo4BADuOAQBAjgEARY4BAEqOAQBPjgEAVI4BAFmOAQBejgEAY44BAGiOAQBtjgEAco4BAHeOAQB8jgEAgY4BAIaOAQCLjgEAkI4BAJWOAQCajgEAn44BAKSOAQCpjgEAro4BALOOAQC4jgEAvY4BAMKOAQDHjgEAzI4BANGOAQDWjgEA244BAOCOAQDljgEA6o4BAO+OAQD0jgEA+Y4BAP6OAQADjwEACI8BAA2PAQASjwEAF48BAByPAQAhjwEAJo8BACuPAQAwjwEANY8BADqPAQA/jwEARI8BAEmPAQBOjwEAU48BAFiPAQBdjwEAYo8BAGePAQBsjwEAcY8BAHaPAQB7jwEAgI8BAIWPAQCKjwEAj48BAJSPAQCZjwEAno8BAKOPAQCojwEArY8BALKPAQC3jwEAvI8BAMGPAQDGjwEAy48BANCPAQDVjwEA2o8BAN+PAQDkjwEA6Y8BAO6PAQDzjwEA+I8BAP2PAQACkAEAB5ABAAyQAQARkAEAFpABABuQAQAgkAEAJZABACqQAQAvkAEANJABADmQAQA+kAEAQ5ABAEiQAQBNkAEAUpABAFeQAQBckAEAYZABAGaQAQBrkAEAcJABAHWQAQB6kAEAf5ABAISQAQCJkAEAjpABAJOQAQCYkAEAnZABAKKQAQCnkAEArJABALGQAQC2kAEAu5ABAMCQAQDFkAEAypABAM+QAQDUkAEA2ZABAN6QAQDjkAEA6JABAO2QAQDykAEA95ABAPyQAQABkQEABpEBAAuRAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkQEAFpEBAB2RAQAkkQEAKpEBADGRAQA4kQEAP5EBAEaRAQBMkQEAU5EBAFqRAQBhkQEAaJEBAG+RAQB2kQEAfZEBAISRAQCLkQEAkpEBAJmRAQCgkQEAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW9kBAF/ZAQBk2QEAadkBAG3ZAQBy2QEAdtkBAHvZAQCA2QEAhNkBAInZAQCO2QEAk9kBAJfZAQCb2QEAn9kBAKTZAQCo2QEArNkBALDZAQC12QEAutkBAL/ZAQDE2QEAyNkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADP2QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1NkBANrZAQDg2QEA5tkBAOzZAQDy2QEA+NkBAP7ZAQAE2gEACtoBABDaAQAW2gEAHNoBACLaAQAo2gEALtoBADTaAQA62gEAQNoBAEbaAQBM2gEAVdoBAFnaAQBd2gEAYdoBAGXaAQBp2gEAbdoBAHHaAQB12gEAedoBAH3aAQCB2gEAhdoBAInaAQCN2gEAkdoBAJfaAQCd2gEAodoBAKfaAQCt2gEAstoBALbaAQC72gEAv9oBAMPaAQDJ2gEAz9oBANPaAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA19oBAN/aAQDi2gEA59oBAO3aAQD12gEA+toBAADbAQAI2wEADtsBABTbAQAY2wEAHNsBACPbAQAs2wEAM9sBADzbAQBC2wEAS9sBAFLbAQBZ2wEAYNsBAGrbAQBw2wEAdNsBAHvbAQCE2wEAjtsBAJXbAQCc2wEAoNsBAKTbAQCr2wEAtdsBALnbAQDA2wEAx9sBAM7bAQDU2wEA29sBAOLbAQDp2wEA8NsBAPTbAQD42wEA/NsBAAPcAQAH3AEADtwBABXcAQAj3AEALNwBADDcAQA03AEAONwBAD/cAQBD3AEAR9wBAEvcAQBT3AEAW9wBAG7cAQB43AEAjNwBAJDcAQCU3AEAmNwBAJzcAQCg3AEApNwBAKjcAQCv3AEAs9wBALbcAQC63AEAvtwBAMTcAQDL3AEA1NwBANjcAQDh3AEA6twBAPLcAQD23AEA/dwBAAHdAQAF3QEACd0BAA3dAQAY3QEAId0BACrdAQAz3QEAPN0BAEjdAQBR3QEAWt0BAGPdAQBr3QEAdN0BAIDdAQCJ3QEAkd0BAJrdAQCm3QEAr90BALjdAQDE3QEAzd0BANbdAQDi3QEA690BAO/dAQDz3QEA990BAPvdAQD/3QEAA94BAAfeAQAO3gEAEt4BABbeAQAh3gEAJd4BACneAQAw3gEANt4BADzeAQBA3gEAR94BAEveAQBP3gEAU94BAFfeAQBb3gEAX94BAGXeAQBt3gEAcd4BAHXeAQB43gEAf94BAIveAQCP3gEAm94BAKLeAQCp3gEAsN4BALfeAQC93gEAwd4BAMXeAQDJ3gEAzd4BANTeAQDd3gEA5N4BAOzeAQD03gEA+t4BAP7eAQAC3wEABt8BAArfAQAQ3wEAGd8BACXfAQAs3wEAM98BADzfAQBH3wEATd8BAFbfAQBf3wEAZt8BAG/fAQB23wEAfN8BAIbfAQCN3wEAlN8BAJvfAQCi3wEApt8BAKzfAQCw3wEAu98BAMPfAQDM3wEA2N8BAN/fAQDm3wEA8N8BAPffAQAA4AEAB+ABABDgAQAX4AEAHuABACjgAQAv4AEANuABAD/gAQBG4AEAUuABAFvgAQBi4AEAaeABAHDgAQB54AEAg+ABAJDgAQCX4AEAoOABAKrgAQCx4AEAuuABAMfgAQDO4AEA1eABANzgAQDm4AEA8OABAPbgAQAA4QEAB+EBAA7hAQAY4QEAHuEBACXhAQAs4QEAM+EBAD3hAQBE4QEAS+EBAFLhAQBY4QEAX+EBAGnhAQBw4QEAdOEBAHzhAQCA4QEAjOEBAJDhAQCe4QEAouEBAKbhAQCq4QEAruEBALThAQC74QEAw+EBAMfhAQDL4QEAz+EBANPhAQDa4QEA3uEBAOThAQDq4QEA8uEBAPbhAQD94QEABeIBAAniAQAN4gEAE+IBABfiAQAg4gEAKeIBADDiAQA64gEAQOIBAETiAQBI4gEAUOIBAFfiAQBe4gEAZOIBAGjiAQBw4gEAdOIBAHviAQCH4gEAjuIBAJjiAQCe4gEAouIBAKviAQCy4gEAu+IBAL/iAQDD4gEAyuIBAM7iAQDS4gEA1uIBANriAQDd4gEA4+IBAOniAQDt4gEA8eIBAPjiAQD/4gEABuMBAA3jAQAU4wEAG+MBACLjAQAp4wEAL+MBADPjAQA34wEAPuMBAEXjAQBM4wEAU+MBAFrjAQBe4wEAYeMBAGbjAQBq4wEAbuMBAHfjAQCA4wEAhOMBAIjjAQCO4wEAlOMBAKXjAQCr4wEAr+MBALjjAQC84wEAwOMB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AKQDAgCoAwIArAMCALADAgC0AwIAuAMCALwDAgDAAwIAxAMCAMgDAgDMAwIA0AMCANQDAgDYAwIA3AMCAOADAgDkAwIA6AMCAOwDAgDwAwIA9AMCAPgDAgD8AwIAAAQCAAQEAgAIBAIADAQCABAEAgAUBAIAGAQCABwEAgAgBAIAJAQCACgEAgAsBAIAMAQCADQEAgA4BAIAPAQCAEAEAgBEBAIASAQCAEwEAgBQBAIAVAQCAFgEAgBcBAIAYAQCAGQEAgBoBAIAbAQCAHAEAgB0BAIAeAQCAHwEAgCABAIAhAQCAIgEAgCMBAIAkAQCAJQEAgCYBAIAnAQCAKAEAgCkBAIAqAQCAKwEAgCwBAIAtAQCALgEAgC8BAIAwAQCAMQEAgDIBAIAzAQCANAEAgDUBAIA2AQCANwEAgDgBAIA5AQCAOgEAgDsBAIA8AQCAPQEAgD4BAIA/AQCAAAFAgAEBQIACAUCAAwFAgAQBQIAFAUCABgFAgAcBQIAIAUCACQFAgAoBQIALAUCADAFAgA0BQIAOAUCADwFAgBABQIARAUCAEgFAgBMBQIAUAUCAFQFAgBYBQIAXAUCAGAFAgBkBQIAaAUCAGwFAgBwBQIAdAUCAHgFAgB8BQIAgAUCAIQFAgCIBQIAjAUCAJAFAgCUBQIAmAUCAJwFAgCgBQIApAUCAKgFAgCsBQIAsAUCALQFAgC4BQIAvAUCAMAFAgDEBQIAyAUCAMwFAgDQBQIA1AUCANgFAgDcBQIA4AUCAOQFAgDoBQIA7AUCAPAFAgD0BQIA+AUCAPwFAgAABgIABAYCAAgGAgAMBgIAEAYCABQGAgAYBgIAHAYCACAGAgAkBgIAKAYCACwGAgAwBgIANAYCADgGAgA8BgIAQAYCAEQGAgBIBgIATAYCAFAGAgBUBgIAWAYCAFwGAgBgBgIAZAYCAGgGAgBsBgIAcAYCAHQGAgB4BgIAfAYCAIAGAgCEBgIAiAYCAIwGAgCQBgIAlAYCAJgGAgCcBgIAoAYCAKQGAgCoBgIArAYCALAGAgC0BgIAuAYCALwGAgDABgIAxAYCAMgGAgDMBgIA0AYCANQGAgDYBgIA3AYCAOAGAgDkBgIA6AYCAOwGAgDwBgIA9AYCAPgGAgD8BgIAAAcCAAQHAgAIBwIADAcCABAHAgAUBwIAGAcCABwHAgAgBwIAJAcCACgHAgAsBwIAMAcCADQHAgA4BwIAPAcCAEAHAgBEBwIASAcCAEwHAgBQBwIAVAcCAFgHAgBcBwIAYAcCAGQHAgBoBwIAbAcCAHAHAgB0BwIAeAcCAHwHAgCABwIAhAcCAIgHAgCMBwIAkAcCAJQHAgCYBwIAnAcCAKAHAgCkBwIAqAcCAKwHAgCwBwIAtAcCALgHAgC8BwIAwAcCAMQHAgDIBwIAzAcCANAHAgDUBwIA2AcCANwHAgDgBwIA5AcCAOgHAgDsBwIA8AcCAPQHAgD4BwIA/AcCAAAIAgAECAIACAgCAAwIAgAQCAIAFAgCABgIAgAcCAIAIAgCACQIAgAoCAIALAgCADAIAgA0CAIAOAgCADwIAgBACAIARAgCAEgIAgBMCAIAUAgCAFQIAgBYCAIAXAgCAGAIAgBkCAIAaAgCAGwIAgBwCAIAdAgCAHgIAgB8CAIAgAgCAIQIAgCICAIAjAgCAJAIAgCUCAIAmAgCAJwIAgCgCAIApAgCAKgIAgCsCAIAsAgCALQIAgC4CAIAvAgCAMAIAgDECAIAyAgCAMwIAgDQCAIA1AgCANgIAgDcCAIA4AgCAOQIAgDoCAIA7AgCAPAIAgD0CAIA+AgCAPwIAgAACQIABAkCAAgJAgAMCQIAEAkCABQJAgAYCQIAHAkCACAJAgAkCQIAKAkCACwJAgAwCQIANAkCADgJAgA8CQIAQAkCAEQJAgBICQIATAkCAFAJAgBUCQIAWAkCAFwJAgBgCQIAZAkCAGgJAgBsCQIAcAkCAHQJAgB4CQIAfAkCAIAJAgCECQIAiAkCAIwJAgCQCQIAlAkCAJgJAgCcCQIAoAkCAKQJAgCoCQIArAkCALAJAgC0CQIAuAkCALwJAgDACQIAxAkCAMgJAgDMCQIA0AkCANQJAgDYCQIA3AkCAOAJAgDkCQIA6AkCAOwJAgDwCQIA9AkCAPgJAgD8CQIAAAoCAAQKAgAICgIADAoCABAKAgAUCgIAGAoCABwKAgAgCgIAJAoCACgKAgAsCgIAMAoCADQKAgA4CgIAPAoCAEAKAgBECgIASAoCAEwKAgBQCgIAVAoCAFgKAgBcCgIAYAoCAGQKAgBoCgIAbAoCAHAKAgB0CgIAeAoCAHwKAgCACgIAhAoCAIgKAgCMCgIAkAoCAJQKAgCYCgIAnAoCAKAKAgCkCgIAqAoCAKwKAgCwCgIAtAoCALgKAgC8CgIAwAoCAMQKAgDICgIAzAoCANAKAgDUCgIA2AoCANwKAgDgCgIA5AoCAOgKAgDsCgIA8AoCAPQKAgD4CgIA/AoCAAALAgAECwIACAsCAAwLAgAQCwIAFAsCABgLAgAcCwIAIAsCACQLAgAoCwIALAsCADALAgA0CwIAOAsCADwLAgBACwIARAsCAEgLAgBMCwIAUAsCAFQLAgBYCwIAXAsCAGALAgBkCwIAaAsCAGwLAgBwCwIAdAsCAHgLAgB8CwIAgAsCAIQLAgCICwIAjAsCAJALAgCUCwIAmAsCAJwLAgCgCwIApAsCAKgLAgCsCwIAsAsCALQLAgC4CwIAvAsCAMALAgDECwIAyAsCAMwLAgDQCwIA1AsCANgLAgDcCwIA4AsCAOQLAgDoCwIA7AsCAPALAgD0CwIA+AsCAPwLAgAADAIABAwCAAgMAgAMDAIAEAwCABQMAgAYDAIAHAwCACAMAgAkDAIAKAwCACwMAgAwDAIANAwCADgMAgA8DAIAQAwCAEQMAgBIDAIATAwCAFAMAgBUDAIAWAwCAFwMAgBgDAIAZAwCAGgMAgBsDAIAcAwCAHQMAgB4DAIAfAwCAIAMAgCEDAIAiAwCAIwMAgCQDAIAlAwCAJgMAgCcDAIAoAwCAKQMAgCoDAIArAwCALAMAgC0DAIAuAwCALwMAgDADAIAxAwCAMgMAgDMDAIA0AwCANQMAgDYDAIA3AwCAOAMAgDkDAIA6AwCAOwMAgDwDAIA9AwCAPgMAgD8DAIAAA0CAAQNAgAIDQIADA0CABANAgAUDQIAGA0CABwNAgAgDQIAJA0CACgNAgAsDQIAMA0CADQNAgA4DQIAPA0CAEANAgBEDQIASA0CAEwNAgBQDQIAVA0CAFgNAgBcDQIAYA0CAGQNAgBoDQIAbA0CAHANAgB0DQIAeA0CAHwNAgCADQIAhA0CAIgNAgCMDQIAkA0CAJQNAgCYDQIAnA0CAKANAgCkDQIAqA0CAKwNAgCwDQIAtA0CALgNAgC8DQIAwA0CAMQNAgDIDQIAzA0CANANAgDUDQIA2A0CANwNAgDgDQIA5A0CAOgNAgDsDQIA8A0CAPQNAgD4DQIA/A0CAAAOAgAEDgIACA4CAAwOAgAQDgIAFA4CABgOAgAcDgIAIA4CACQOAgAoDgIALA4CADAOAgA0DgIAOA4CADwOAgBADgIARA4CAEgOAgBMDgIAUA4CAFQOAgBYDgIAXA4CAGAOAgBkDgIAaA4CAGwOAgBwDgIAdA4CAHgOAgB8DgIAgA4CAAAAAACEDgIAiQ4CAI8OAgCZDgIAow4CAK0OAgC3DgIAvQ4CAMMOAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMkOAgDNDgIA0Q4CANUOAgDZDgIA3Q4CAOEOAgDlDgIA6Q4CAO0OAgDxDgIA9Q4CAPkOAgD9DgIAAQ8CAAUPAgAJDwIADQ8CABEPAgAVDwIAGQ8CAB0PAgAhDwIAJQ8CACkPAgAtDwIAMQ8CADUPAgA5DwIAPQ8CAEEPAgBFDwIASQ8CAE0PAgBRDwIAVQ8CAFkPAgBdDwIAYQ8CAGUPAgBpDwIAbQ8CAHEPAgB1DwIAeQ8CAH0PAgCBDwIAhQ8CAIkPAgCNDwIAkQ8CAJUPAgCZDwIAnQ8CAKEPAgClDwIAqQ8CAK0PAgCxDwIAtQ8CALkPAgC9DwIAwQ8CAMUPAgDJDwIAzQ8CANEPAgDVDwIA2Q8CAN0PAgDhDwIA5Q8CAOkPAgDtDwIA8Q8CAPUPAgD5DwIA/Q8CAAEQAgAFEAIACRACAA0QAgAREAIAFRACABkQAgAdEAIAIRACACUQAgApEAIALRACADEQAgA1EAIAORACAD0QAgBBEAIARRACAEkQAgBNEAIAURACAFUQAgBZEAIAXRACAGEQAgBlEAIAaRACAG0QAgBxEAIAdRACAHkQAgB9EAIAgRACAIUQAgCJEAIAjRACAJEQAgCVEAIAmRACAJ0QAgChEAIApRACAKkQAgCtEAIAsRACALUQAgC5EAIAvRACAMEQAgDFEAIAyRACAM0QAgDREAIA1RACANkQAgDdEAIA4RACAOUQAgDpEAIA7RACAPEQAgD1EAIA+RACAP0QAgABEQIABRECAAkRAgANEQIAERECABURAgAZEQIAHRECACERAgAlEQIAKRECAC0RAgAxEQIANRECADkRAgA9EQIAQRECAEURAgBJEQIATRECAFERAgBVEQIAWRECAF0RAgBhEQIAZRECAGkRAgBtEQIAcRECAHURAgB5EQIAfRECAIERAgCFEQIAiRECAI0RAgCREQIAlRECAJkRAgCdEQIAoRECAKURAgCpEQIArRECALERAgC1EQIAuRECAL0RAgDBEQIAxRECAMkRAgDNEQIA0RECANURAgDZEQIA3RECAOERAgDlEQIA6RECAO0RAgDxEQIA9RECAPkRAgD9EQIAARICAAUSAgAJEgIADRICABESAgAVEgIAGRICAB0SAgAhEgIAJRICACkSAgAtEgIAMRICADUSAgA5EgIAPRICAEESAgBFEgIASRICAE0SAgBREgIAVRICAFkSAgBdEgIAYRICAGUSAgBpEgIAbRICAHESAgB1EgIAeRICAH0SAgCBEgIAhRICAIkSAgCNEgIAkRICAJUSAgCZEgIAnRICAKESAgClEgIAqRICAK0SAgCxEgIAtRICALkSAgC9EgIAwRICAMUSAgDJEgIAzRICANESAgDVEgIA2RICAN0SAgDhEgIA5RICAOkSAgDtEgIA8RICAPUSAgD5EgIA/RICAAETAgAFEwIACRMCAA0TAgAREwIAFRMCABkTAgAdEwIAIRMCACUTAgApEwIALRMCADETAgA1EwIAORMCAD0TAgBBEwIARRMCAEkTAgBNEwIAURMCAFUTAgBZEwIAXRMCAGETAgBlEwIAaRMCAG0TAgBxEwIAdRMCAHkTAgB9EwIAgRMCAIUTAgCJEwIAjRMCAJETAgCVEwIAmRMCAJ0TAgChEwIApRMCAKkTAgCtEwIAsRMCALUTAgC5EwIAvRMCAMETAgDFEwIAyRMCAM0TAgDREwIA1RMCANkTAgDdEwIA4RMCAOUTAgDpEwIA7RMCAPETAgD1EwIA+RMCAP0TAgABFAIABRQCAAkUAgANFAIAERQCABUUAgAZFAIAHRQCACEUAgAlFAIAKRQCAC0UAgAxFAIANRQCADkUAgA9FAIAQRQCAEUUAgBJFAIATRQCAFEUAgBVFAIAWRQCAF0UAgBhFAIAZRQCAGkUAgBtFAIAcRQCAHUUAgB5FAIAfRQCAIEUAgCFFAIAiRQCAI0UAgCRFAIAlRQCAJkUAgCdFAIAoRQCAKUUAgCpFAIArRQCALEUAgC1FAIAuRQCAL0UAgDBFAIAxRQCAMkUAgDNFAIA0RQCANUUAgDZFAIA3RQCAOEUAgDlFAIA6RQCAO0UAgDxFAIA9RQCAPkUAgD9FAIAARUCAAUVAgAJFQIADRUCABEVAgAVFQIAGRUCAB0VAgAhFQIAJRUCACkVAgAtFQIAMRUCADUVAgA5FQIAPRUCAEEVAgBFFQIASRUCAE0VAgBRFQIAVRUCAFkVAgBdFQIAYRUCAGUVAgBpFQIAbRUCAHEVAgB1FQIAeRUCAH0VAgCBFQIAhRUCAIkVAgCNFQIAlxUCAJsVAgCfFQIAoxUCAKcVAgCrFQIArxUCALMVAgC3FQIAuxUCAL8VAgDDFQIAyBUCAMwVAgDQFQIA1BUCANgVAgDcFQIA4BUCAOQVAgDoFQIA7BUCAPAVAgD0FQIA+BUCAPwVAgAAFgIABBYCAAgWAgARFgIAGhYCAB4WAgAiFgIAJhYCACoWAgAuFgIAMhYCADYWAgA6FgIAPhYCAEIWAgBGFgIAShYCAE4WAgBSFgIAVhYCAFoWAgBeFgIAYhYCAGYWAgBqFgIAbhYCAHIWAgB2FgIAehYCAH4WAgCCFgIAhhYCAIoWAgCOFgIAkhYCAJYWAgCaFgIAnhYCAKIWAgCmFgIAqhYCAK4WAgCyFgIAthYCALoWAgC+FgIAwhYCAMYWAgDKFgIAzhYCANIWAgDWFgIA2hYCAN4WAgDiFgIA5hYCAOoWAgDuFgIA8hYCAPYWAgD6FgIA/hYCAAIXAgAGFwIAChcCAA4XAgASFwIAFhcCABoXAgAeFwIAIhcCACYXAgAqFwIALhcCADIXAgA2FwIAOhcCAD4XAgBCFwIARhcCAEoXAgBOFwIAUhcCAFYXAgBaFwIAXhcCAGIXAgBmFwIAahcCAG4XAgByFwIAdhcCAHoXAgB+FwIAghcCAIYXAgCKFwIAjhcCAJIXAgCWFwIAmhcCAJ4XAgCiFwIAphcCAKoXAgCuFwIAshcCALYXAgC6FwIAvhcCAMIXAgDGFwIAyhcCAM4XAgDSFwIA1hcCANoXAgDeFwIA4hcCAOYXAgDqFwIA7hcCAPIXAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2FwIA/hcCAAYYAgAQGAIAGhgCACIYAgAoGAIAMBgCADgYAgBCGAIAThgCAFoYAgBgGAIAaBgCAG4YAgB0GAIAehgCAIAYAgCGGAIAjBgCAJIYAgCYGAIAnhgCAKQYAgCqGAIAshgCALoYAgDAGAIAxhgCAMwYAgDSGAIA2hgCAOIYAgDrGAIA8RgCAPkYAgD/GAIABRkCAAsZAgARGQIAFxkCAB8ZAgAnGQIALRkCADMZAgA5GQIAPxkCAEUZAgBLGQIAURkCAFcZAgBdGQIAYxkCAGkZAgBvGQIAdRkCAHsZAgCBGQIAhxkCAI0ZAgCTGQIAmRkCAKEZAgCnGQIArRkCALcZAgC/GQIAxRkCAMsZAgDRGQIA1xkCAN0ZAgDjGQIA6RkCAO8ZAgD1GQIA+xkCAAEaAgAHGgIADRoCABMaAgAZGgIAHxoCACUaAgArGgIAMRoCADcaAgA9GgIAQxoCAEsaAgBRGgIAWRoCAGEaAgBpGgIAbxoCAHUaAgB7GgIAgRoCAIcaAgCPGgIAmRoCAKEaAgCpGgIArxoCALUaAgC9GgIAxRoCAMsaAgDTGgIA2xoCAOMaAgDpGgIA7xoCAPUaAgD7GgIAARsCAAcbAgAPGwIAFxsCAB0bAgAjGwIAKRsCAC8bAgA1GwIAPRsCAEMbAgBJGwIATxsCAFUbAgBbGwIAYRsCAGkbAgBvGwIAdRsCAHsbAgCBGwIAiRsCAJEbAgCXGwIAnRsCAKMbAgCoGwIArhsCALQbAgC8GwIAwhsCAMgbAgDOGwIA1BsCANobAgDgGwIA5hsCAOwbAgDyGwIA/BsCAAQcAgAKHAIAEBwCABYcAgAeHAIAJBwCACocAgAwHAIAOBwCAD4cAgBEHAIAShwCAFAcAgBWHAIAXBwCAGIcAgBoHAIAbhwCAHQcAgB6HAIAghwCAIgcAgCQHAIAlhwCAJwcAgCkHAIAqhwCALAcAgC2HAIAvBwCAMIcAgDIHAIAzhwCANQcAgDaHAIA4BwCAOYcAgDsHAIA8hwCAPgcAgD+HAIABB0CAAodAgAQHQIAFh0CAB4dAgAkHQIAKh0CADAdAgA2HQIAPB0CAEIdAgBIHQIATh0CAFQdAgBaHQIAYB0CAGYdAgBsHQIAdB0CAHodAgCAHQIAiB0CAI4dAgCUHQIAmh0CAKAdAgCmHQIArB0CALIdAgC4HQIAvh0CAMQdAgDMHQIA0h0CANgdAgDeHQIA5B0CAOodAgDyHQIA+h0CAAAeAgAGHgIADB4CABIeAgAYHgIAHh4CACMeAgAoHgIALR4CADIeAgA3HgIAPB4CAEEeAgBGHgIASx4CAFAeAgBVHgIAWh4CAF8eAgBkHgIAaR4CAG4eAgBzHgIAeB4CAH0eAgCCHgIAhx4CAIweAgCRHgIAlh4CAJseAgCgHgIApR4CAKoeAgCvHgIAtB4CALseAgDAHgIAxR4CAMoeAgDPHgIA1B4CANkeAgDeHgIA4x4CAOgeAgDtHgIA8h4CAPceAgD8HgIAAR8CAAYfAgALHwIAEB8CABUfAgAaHwIAHx8CACQfAgApHwIALh8CADMfAgA4HwIAPR8CAEIfAgBHHwIATB8CAFEfAgBWHwIAWx8CAGAfAgBlHwIAah8CAG8fAgB0HwIAeR8CAH4fAgCDHwIAiB8CAI0fAgCSHwIAlx8CAJwfAgChHwIAph8CAKsfAgCwHwIAtR8CALofAgC/HwIAxB8CAMkfAgDOHwIA0x8CANgfAgDdHwIA5B8CAOkfAgDuHwIA8x8CAPgfAgD9HwIAAiACAAcgAgAMIAIAESACABYgAgAbIAIAICACACUgAgAqIAIALyACADQgAgA5IAIAPiACAEMgAgBIIAIATSACAFQgAgBZIAIAXiACAGQgAgBpIAIAbiACAHMgAgB4IAIAfSACAIIgAgCHIAIAjCACAJEgAgCWIAIAmyACAKAgAgClIAIAqiACAK8gAgC0IAIAuSACAL4gAgDDIAIAyCACAM0gAgDSIAIA1yACANwgAgDhIAIA5iACAOsgAgDwIAIA9SACAPogAgD/IAIABCECAAkhAgAOIQIAEyECABghAgAdIQIAIiECACchAgAsIQIAMSECADYhAgA7IQIAQiECAEchAgBMIQIAUyECAFohAgBfIQIAZCECAGkhAgBuIQIAcyECAHghAgB9IQIAgiECAIchAgCMIQIAkSECAJYhAgCbIQIAoCECAKUhAgCqIQIAryECALQhAgC5IQIAviECAMMhAgDIIQIAzSECANIhAgDXIQIA3iECAOMhAgDoIQIA7SECAPIhAgD3IQIA/CECAAEiAgAGIgIACyICABAiAgAVIgIAGiICAB8iAgAkIgIAKSICAC4iAgAzIgIAOCICAD8iAgBEIgIASSICAE4iAgBTIgIAWCICAF0iAgBiIgIAaCICAG0iAgByIgIAdyICAHwiAgCBIgIAhiICAIsiAgCQIgIAlyICAJ4iAgCjIgIAqCICAKwiAgCxIgIAtSICALkiAgC+IgIAxSICAMoiAgDPIgIA2CICAN0iAgDiIgIA5yICAOwiAgDzIgIA+iICAP8iAgAEIwIACSMCAA4jAgAVIwIAGiMCAB8jAgAkIwIAKSMCAC4jAgAzIwIAOCMCAD0jAgBCIwIARyMCAEwjAgBRIwIAWCMCAFwjAgBhIwIAZiMCAGsjAgBwIwIAdCMCAHkjAgB+IwIAgyMCAIgjAgCNIwIAkiMCAJcjAgCcIwIAoSMCAKcjAgCtIwIAsyMCALkjAgC/IwIAxCMCAMojAgDQIwIA1iMCANwjAgDiIwIA6CMCAO4jAgD0IwIA+iMCAAAkAgAGJAIADCQCABIkAgAYJAIAHiQCACQkAgAqJAIAMCQCADUkAgA7JAIAQSQCAEckAgBNJAIAUyQCAFkkAgBfJAIAZSQCAGskAgBxJAIAdyQCAH0kAgCDJAIAiSQCAI8kAgCVJAIAmyQCAKEkAgCnJAIArSQCALIkAgC4JAIAviQCAMQkAgDKJAIA0CQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWJAIA2yQCAOAkAgDlJAIA6iQCAO8kAgD0JAIA+CQCAP0kAgACJQIAByUCAAwlAgARJQIAFiUCABslAgAgJQIAJSUCACklAgAuJQIAMiUCADclAgA8JQIAQSUCAEYlAgBLJQIATyUCAFQlAgBZJQIAXSUCAGIlAgBnJQIAAAAAAGwlAgBxJQIAdSUCAHklAgB9JQIAgSUCAIUlAgCJJQIAjSUCAJElAgAAAAAAAAAAAAAAAAAAAAAAlSUCAJklAgCeJQIAoyUCAKglAgCtJQIAsiUCALclAgC8JQIAwSUCAMYlAgDLJQIA0CUCANUlAgDaJQIA3yUCAOQlAgDpJQIA7iUCAPMlAgD4JQIA/SUCAAImAgAHJgIADCYCABEmAgAWJgIAGyYCACAmAgAlJgIAKiYCAC8mAgA0JgIAOSYCAD4mAgBEJgIASiYCAFEmAgBYJgIAXSYCAGImAgBnJgIAbCYCAHEmAgB2JgIAeyYCAIAmAgCFJgIAiiYCAI8mAgCUJgIAmCYCAJ0mAgCiJgIApyYCAKsmAgCvJgIAtCYCALgmAgC9JgIAwiYCAMcmAgDLJgIAzyYCANMmAgDXJgIA3CYCAOEmAgDmJgIA6iYCAO8mAgD0JgIA+SYCAP4mAgADJwIACCcCAA0nAgASJwIAFycCABwnAgAhJwIAAAAAACYnAgArJwIALycCADMnAgA3JwIAOycCAD8nAgBDJwIARycCAEsnAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPJwIAVicCAFwnAgBjJwIAaicCAHEnAgB4JwIAfycCAIYnAgCNJwIAlCcCAJsnAgCiJwIAqScCALAnAgC3JwIAvicCAMUnAgDLJwIA0icCANknAgDgJwIA5icCAO0nAgDzJwIA+ScCAAAoAgAGKAIADSgCABMoAgAAAAAAAAAAABkoAgAhKAIAKSgCADIoAgA7KAIARCgCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMKAIAUSgCAFYoAgBbKAIAYCgCAGUoAgBqKAIAbygCAHQoAgB5KAIAfigCAIMoAgCIKAIAjSgCAJIoAgCXKAIAnCgCAKEoAgCmKAIAqygCALAoAgC1KAIAuigCAL8oAgDEKAIAySgCAM4oAgDTKAIA2CgCAN0oAgDiKAIA5ygCAOwoAgDxKAIA9igCAPsoAgAAKQIABSkCAAopAgAPKQIAFCkCABkpAgAeKQIAIykCACgpAgAtKQIAMikCADcpAgA8KQIAQykCAEopAgBRKQIAWCkCAF8pAgBmKQIAbSkCAHQpAgB9KQIAhCkCAIspAgCSKQIAmSkCAKApAgCnKQIArikC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AEoyAgBNMgIAUDICAFMyAgBWMgIAWTICAFwyAgBfMgIAYjICAGUyAgBoMgIAazICAG4yAgBxMgIAdDICAHcyAgB6MgIAfTICAIAyAgCDMgIAhjICAIkyAgCMMgIAjzICAJIyAgCVMgIAmDICAJsyAgCeMgIAoTICAKQyAgCnMgIAqjICAK0yAgCwMgIAszICALYyAgC5MgIAvDICAL8yAgDCMgIAxTICAMgyAgDLMgIAzjICANEyAgDUMgIA1zICANoyAgDdMgIA4DICAOMyAgDmMgIA6TICAOwyAgDvMgIA8jICAPUyAgD4MgIA+zICAP4yAgABMwIABDMCAAczAgAKMwIADTMCABAzAgATMwIAFjMCABkzAgAcMwIAHzMCACIzAgAlMwIAKDMCACszAgAuMwIAMTMCADQzAgA3MwIAOjMCAD0zAgBAMwIAQzMCAEYzAgBJMwIATDMCAE8zAgBSMwIAVTMCAFgzAgBbMwIAXjMCAGEzAgBkMwIAZzMCAGozAgBtMwIAcDMCAHMzAgB2MwIAeTMCAHwzAgB/MwIAgjMCAIUzAgCIMwIAizMCAI4zAgCRMwIAlDMCAJczAgCaMwIAnTMCAKAzAgCjMwIApjMCAKkzAgCsMwIArzMCALIzAgC1MwIAuDMCALszAgC+MwIAwTMCAMQzAgDHMwIAyjMCAM0zAgDQMwIA0zMCANYzAgDZMwIA3DMCAN8zAgDiMwIA5TMCAOgzAgDrMwIA7jMCAPEzAgD0MwIA9zMCAPozAgD9MwIAADQCAAM0AgAGNAIACTQCAAw0AgAPNAIAEjQCABU0AgAYNAIAGzQCAB40AgAhNAIAJDQCACc0AgAqNAIALTQCADA0AgAzNAIANjQCADk0AgA8NAIAPzQCAEI0AgBFNAIASDQCAEs0AgBONAIAUTQCAFQ0AgBXNAIAWjQCAF00AgBgNAIAYzQCAGY0AgBpNAIAbDQCAG80AgByNAIAdTQCAHg0AgB7NAIAfjQCAIE0AgCENAIAhzQCAIo0AgCNNAIAkDQCAJM0AgCWNAIAmTQCAJw0AgCfNAIAojQCAKU0AgCoNAIAqzQCAK40AgCxNAIAtDQCALc0AgC6NAIAvTQCAMA0AgDDNAIAxjQCAMk0AgDMNAIAzzQCANI0AgDVNAIA2DQCANs0AgDeNAIA4TQCAOQ0AgDnNAIA6jQCAO00AgDwNAIA8zQCAPY0AgD5NAIA/DQCAP80AgACNQIABTUCAAg1AgALNQIADjUCABE1AgAUNQIAFzUCABo1AgAdNQIAIDUCACM1AgAmNQIAKTUCACw1AgAvNQIAMjUCADU1AgA4NQIAOzUCAD41AgBBNQIARDUCAEc1AgBKNQIATTUCAFA1AgBTNQIAVjUCAFk1AgBcNQIAXzUCAGI1AgBlNQIAaDUCAGs1AgBuNQIAcTUCAHQ1AgB3NQIAejUCAH01AgCANQIAgzUCAIY1AgCJNQIAjDUCAI81AgCSNQIAlTUCAJg1AgCbNQIAnjUCAKE1AgCkNQIApzUCAKo1AgCtNQIAsDUCALM1AgC2NQIAuTUCALw1AgC/NQIAwjUCAMU1AgDINQIAyzUCAM41AgDRNQIA1DUCANc1AgDaNQIA3TUCAOA1AgDjNQIA5jUCAOk1AgDsNQIA7zUCAPI1AgD1NQIA+DUCAPs1AgD+NQIAATYCAAQ2AgAHNgIACjYCAA02AgAQNgIAEzYCABY2AgAZNgIAHDYCAB82AgAiNgIAJTYCACg2AgArNgIALjYCADE2AgA0NgIANzYCADo2AgA9NgIAQDYCAEM2AgBGNgIASTYCAEw2AgBPNgIAUjYCAFU2AgBYNgIAWzYCAF42AgBhNgIAZDYCAGc2AgBqNgIAbTYCAHA2AgBzNgIAdjYCAHk2AgB8NgIAfzYCAII2AgCFNgIAiDYCAIs2AgCONgIAkTYCAJQ2AgCXNgIAmjYCAJ02AgCgNgIAozYCAKY2AgCpNgIArDYCAK82AgCyNgIAtTYCALg2AgC7NgIAvjYCAME2AgDENgIAxzYCAMo2AgDNNgIA0DYCANM2AgDWNgIA2TYCANw2AgDfNgIA4jYCAOU2AgDoNgIA6zYCAO42AgDxNgIA9DYCAPc2AgD6NgIA/TYCAAA3AgADNwIABjcCAAk3AgAMNwIADzcCABI3AgAVNwIAGDcCABs3AgAeNwIAITcCACQ3AgAnNwIAKjcCAC03AgAwNwIAMzcCADY3AgA5NwIAPDcCAD83AgBCNwIARTcCAEg3AgBLNwIATjcCAFE3AgBUNwIAVzcCAFo3AgBdNwIAYDcCAGM3AgBmNwIAaTcCAGw3AgBvNwIAcjcCAHU3AgB4NwIAezcCAH43AgCBNwIAhDcCAIc3AgCKNwIAjTcCAJA3AgCTNwIAljcCAJk3AgCcNwIAnzcCAKI3AgClNwIAqDcCAKs3AgCuNwIAsTcCALQ3AgC3NwIAujcCAL03AgDANwIAwzcCAMY3AgDJNwIAzDcCAM83AgDSNwIA1TcCANg3AgDbNwIA3jcCAOE3AgDkNwIA5zcCAOo3AgDtNwIA8DcCAPM3AgD2NwIA+TcCAPw3AgD/NwIAAjgCAAU4AgAIOAIACzgCAA44AgAROAIAFDgCABc4AgAaOAIAHTgCACA4AgAjOAIAJjgCACk4AgAsOAIALzgCADI4AgA1OAIAODgCADs4AgA+OAIAQTgCAEQ4AgBHOAIASjgCAE04AgBQOAIAUzgCAFY4AgBZOAIAXDgCAF84AgBiOAIAZTgCAGg4AgBrOAIAbjgCAHE4AgB0OAIAdzgCAHo4AgB9OAIAgDgCAIM4AgCGOAIAiTgCAIw4AgCPOAIAkjgCAJU4AgCYOAIAmzgCAJ44AgChOAIApDgCAKc4AgCqOAIArTgCALA4AgCzOAIAtjgCALk4AgC8OAIAvzgCAMI4AgDFOAIAyDgCAMs4AgDOOAIA0TgCANQ4AgDXOAIA2jgCAN04AgDgOAIA4zgCAOY4AgDpOAIA7DgCAO84AgDyOAIA9TgCAPg4AgD7OAIAADkCAAU5AgAKOQIADzkCABQ5AgAZOQIAHjkCACM5AgAoOQIALTkCADI5AgA3OQIAPDkCAEE5AgBGOQIASzkCAFA5AgBVOQIAWjkCAF85AgBkOQIAaTkCAG45AgBzOQIAeDkCAH05AgCCOQIAhzkCAIw5AgCROQIAljkCAJs5AgCgOQIApTkCAKo5AgCvOQIAtDkCALk5AgC+OQIAwzkCAMg5AgDNOQIA0jkCANc5AgDcOQIA4TkCAOY5AgDrOQIA8DkCAPU5AgD6OQIA/zkCAAQ6AgAJOgIADjoCABM6AgAYOgIAHToCACI6AgAnOgIALDoCADE6AgA2OgIAOzoCAEA6AgBFOgIASjoCAE86AgBUOgIAWToCAF46AgBjOgIAaDoCAG06AgByOgIAdzoCAHw6AgCBOgIAhjoCAIs6AgCQOgIAlToCAJo6AgCfOgIApDoCAKk6AgCuOgIAszoCALg6AgC9OgIAwjoCAMc6AgDMOgIA0ToCANY6AgDbOgIA4DoCAOU6AgDqOgIA7zoCAPQ6AgD5OgIA/joCAAM7AgAIOwIADTsCABI7AgAXOwIAHDsCACE7AgAmOwIAKzsCADA7AgA1OwIAOjsCAD87AgBEOwIASTsCAE47AgBTOwIAWDsCAF07AgBiOwIAZzsCAGw7AgBxOwIAdjsCAHs7AgCAOwIAhTsCAIo7AgCPOwIAlDsCAJk7AgCeOwIAozsCAKg7AgCtOwIAsjsCALc7AgC8OwIAwTsCAMY7AgDLOwIA0DsCANU7AgDaOwIA3zsCAOQ7AgDpOwIA7jsCAPM7AgD4OwIA/TsCAAI8AgAHPAIADDwCABE8AgAWPAIAGzwCACA8AgAlPAIAKjwCAC88AgA0PAIAOTwCAD48AgBDPAIASDwCAE08AgBSPAIAVzwCAFw8AgBhPAIAZjwCAGs8AgBwPAIAdTwCAHo8AgB/PAIAhDwCAIk8AgCOPAIAkzwCAJg8AgCdPAIAojwCAKc8AgCsPAIAsTwCALY8AgC7PAIAwDwCAMU8AgDKPAIAzzwCANQ8AgDZPAIA3jwCAOM8AgDoPAIA7TwCAPI8AgD3PAIA/DwCAAE9AgAGPQIACz0CABA9AgAVPQIAGj0CAB89AgAkPQIAKT0CAC49AgAzPQIAOD0CAD09AgBCPQIARz0CAEw9AgBRPQIAVj0CAFs9AgBgPQIAZT0CAGo9AgBvPQIAdD0CAHk9AgB+PQIAgz0CAIg9AgCNPQIAkj0CAJc9AgCcPQIAoT0CAKY9AgCrPQIAsD0CALU9AgC6PQIAvz0CAMQ9AgDJPQIAzj0CANM9AgDYPQIA3T0CAOI9AgDnPQIA7D0CAPE9AgD2PQIA+z0CAAA+AgAFPgIACj4CAA8+AgAUPgIAGT4CAB4+AgAjPgIAKD4CAC0+AgAyPgIANz4CADw+AgBBPgIARj4CAEs+AgBQPgIAVT4CAFo+AgBfPgIAZD4CAGk+AgBuPgIAcz4CAHg+AgB9PgIAgj4CAIc+AgCMPgIAkT4CAJY+AgCbPgIAoD4CAKU+AgCqPgIArz4CALQ+AgC5PgIAvj4CAMM+AgDIPgIAzT4CANI+AgDXPgIA3D4CAOE+AgDmPgIA6z4CAPA+AgD1PgIA+j4CAP8+AgAEPwIACT8CAA4/AgATPwIAGD8CAB0/AgAiPwIAJz8CACw/AgAxPwIANj8CADs/AgBAPwIART8CAEo/AgBPPwIAVD8CAFk/AgBePwIAYz8C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AAAAAAAAAAAAAAAAAAAAAABERwIAR0cCAEpHAgBNRwIAUEcCAFNHAgBWRwIAWUcCAFxHAgBfRwIAYkcCAGVHAgBoRwIAa0cCAG5HAgBxRwIAdEcCAHdHAgB6RwIAfUcCAIBHAgCDRwIAhkcCAIlHAgCMRwIAj0cCAJJHAgCVRwIAmEcCAJtHAgCeRwIAoUcCAKRHAgCnRwIAqkcCAK1HAgCwRwIAs0cCALZHAgC5RwIAvEcCAL9HAgDCRwIAxUcCAMhHAgDLRwIAzkcCANFHAgDURwIA10cCANpHAgDdRwIA4EcCAONHAgDmRwIA6UcCAOxHAgDvRwIA8kcCAPVHAgD4RwIA+0cCAP5HAgABSAIABEgCAAdIAgAKSAIADUgCABBIAgATSAIAFkgCABlIAgAcSAIAH0gCACJIAgAlSAIAKEgCACtIAgAuSAIAMUgCADRIAgA3SAIAOkgCAD1IAgBASAIAQ0gCAEZIAgBJSAIATEgCAE9IAgBSSAIAVUgCAFhIAgBbSAIAXkgCAGFIAgBkSAIAZ0gCAGpIAgBtSAIAcEgCAHNIAgB2SAIAeUgCAHxIAgB/SAIAgkgCAIVIAgCISAIAi0gCAI5IAgCRSAIAlEgCAJdIAgCaSAIAnUgCAKBIAgCjSAIApkgCAKlIAgCsSAIAr0gCALJIAgC1SAIAuEgCALtIAgC+SAIAwUgCAMRIAgDHSAIAykgCAM1IAgDQSAIA00gCANZIAgDZSAIA3EgCAN9IAgDiSAIA5UgCAOhIAgDrSAIA7kgCAPFIAgD0SAIA90gCAPpIAgD9SAIAAEkCAANJAgAGSQIACUkCAAxJAgAPSQIAEkkCABVJAgAYSQIAG0kCAB5JAgAhSQIAJEkCACdJAgAqSQIALUkCADBJAgAzSQIANkkCADlJAgA8SQIAP0kCAEJJAgBFSQIASEkCAEtJAgBOSQIAUUkCAFRJAgBXSQIAWkkCAF1JAgBgSQIAY0kCAGZJAgBpSQIAbEkCAG9JAgBySQIAdUkCAHhJAgB7SQIAfkkCAIFJAgCESQIAh0kCAIpJAgCNSQIAkEkCAJNJAgCWSQIAmUkCAJxJAgCfSQIAokkCAKVJAgCoSQIAq0kCAK5JAgCxSQIAtEkCALdJAgC6SQIAvUkCAMBJAgDDSQIAxkkCAMlJAgDMSQIAz0kCANJJAgDVSQIA2EkC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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPVAIAVFQCAFlUAgBeVAIAZVQCAGxUAgBzVAIAelQCAH9UAgCEVAIAiVQCAI5UAgCVVAIAmlQCAKFUAgCoVAIArVQCALJUAgC3VAIAvlQCAMNUAgDIVAIAz1QCANZUAgDbVAIA4FQCAOVUAgDsVAIA81QCAPpUAgD/VAIABFUCAAtVAgASVQIAGVUCACBVAgAlVQIAKlUCAC9VAgA2VQIAO1UCAEBVAgBFVQIATFUCAFVVAgBcVQIAYVUCAGZVAgBrVQIAcFUCAHVVAgB6VQIAg1UCAIpVAgCPVQIAllUCAJ1VAgCiVQIAp1UCAKxVAgCzVQIAuFUCAL9VAgDGVQIAy1UCANBVAgDVVQIA3FUCAONVAgDoVQIA7VUCAPRVAgD7VQIAAlYCAAdWAgAMVgIAEVYCABZWAgAdVgIAJlYCAC9WAgA0VgIAO1YCAERWAgBJVgIATlYCAFNWAgBYVgIAX1YCAGZWAgBtVgIAdFYCAHlWAgB+VgIAg1YCAIpWAgCRVgIAmFYCAJ1WAgCiVgIAqVYCAK5WAgC1VgIAulYCAMFWAgDGVgIAzVYCANRWAgDZVgIA3lYCAONWAgDoVgIA7VYCAPJWAgD3VgIA/FYCAAFXAgAIVwIAD1cCABZXAgAdVwIAJFcCAC1XAgAyVwIAN1cCAD5XAgBFVwIASlcCAFFXAgBYVwIAX1cCAGZXAgBtVwIAdFcCAHlXAgB+VwIAg1cCAIhXAgCNVwIAllcCAJ9XAgCoVwIAsVcCALpXAgDDVwIAzFcCANVXAgDaVwIA5VcCAPBXAgD5VwIA/lcCAANYAgAIWAIADVgCABZYAgAdWAIAJFgCACtYAgAyWAIAOVgCAEBYAgBJWAIAUlgCAF1YAgBmWAIAcVgCAHpYAgCBWAIAilgCAJVYAgCeWAIAp1gCALBYAgC5WAIAwFgCAMdYAgDOWAIA11gCAOBYAgDrWAIA9FgCAP1YAgAIWQIADVkCABJZAgAdWQIAJVkCAC5ZAgA3WQIAQFkCAEtZAgBUWQIAXVkCAGhZAgBzWQIAflkCAIlZAgCUWQIAn1kCAKZZAgCtWQIAtFkCALtZAgDGWQIAz1kCANZZAgDdWQIA5FkCAO9ZAgD6WQIABVoCABBaAgAbWgIAJloCADFaAgA8WgIAQ1oCAEpaAgBTWgIAXFoCAGNaAgBqWgIAcVoCAHpaAgCDWgIAjFoCAJNaAgCcWgIApVoCAK5aAgC1WgIAvFoCAMFaAgDHWgIAzloCANVaAgDcWgIA41oCAOpaAgDxWgIA+loCAANbAgAMWwIAFVsCABxbAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJVsCACtbAgAwWwIANVsCADxbAgBCWwIASFsCAE5bAgBUWwIAWlsCAGBbAgBmWwIAalsCAG5bAgB0WwIAelsCAIBbAgCEWwIAiVsCAI5bAgCSWwIAllsCAJpbAgCgWwIAplsCAKxbAgCyWwIAuFsCAL5bAgDEWwIAylsCANBbAgDaWwIA5FsCAOpbAgDwWwIA+lsCAARcAgAKXAIAAAAAAAAAAAAQXAIAGFwCAB1cAgAiXAIAKFwCAC5cAgA0XAIAOlwCAEBcAgBGXAIATVwCAFRcAgBaXAIAYFwCAGZcAgBsXAIAclwCAHhcAgB+XAIAhFwCAIlcAgCPXAIAlVwCAJtcAgChXAIAp1wCALBcAgC2XAIAu1wCAMNcAgDKXAIA0VwCANpcAgDjXAIA7FwCAPVcAgD+XAIAB10CABBdAgAZXQIAI10CAC1dAgA1XQIAPV0CAEZdAgBPXQIAVV0CAFtdAgBhXQIAZ10CAG9dAgB3XQIAe10CAIFdAgCGXQIAjF0CAJJdAgCYXQIAnl0CAKRdAgCtXQIAsl0CALldAgC+XQIAw10CAMhdAgDOXQIA1F0CANpdAgDhXQIA5l0CAOtdAgDwXQIA9V0CAPpdAgAAXgIABl4CAAxeAgASXgIAGF4CAB5eAgAkXgIAKl4CAC9eAgA0XgIAOV4CAD5eAgBDXgIASF4CAE1eAgBSXgIAWF4CAF5eAgBjXgIAaF4CAG1eAgByXgIAd14CAH1eAgCEXgIAiF4CAIxeAgCQXgIAlF4CAJheAgCcXgIAoF4CAKReAgCsXgIAtl4CALpeAgC+XgIAxF4CAMpeAgDQXgIA1l4CANxeAgDiXgIA6F4CAO5eAgD0XgIA+l4CAABfAgAGXwIADF8CABJfAgAWXwIAGl8CACFfAgAnXwIALV8CADNfAgA4XwIAP18CAERfAgBKXwIAUF8C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ALRlAgC5ZQIAvmUCAMNlAgDHZQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMtlAgDPZQIA1GUCANllAgDeZQIA4mUCAOdlAgDsZQIA8WUCAPVlAgD6ZQIA/2UCAANmAgAIZgIADWYCABFmAgAWZgIAG2YCAB9mAgAkZgIAKWYCAC1mAgAyZgIAN2YCADxmAgBBZgIARmYCAEpmAgBPZgIAVGYCAFlmAgBdZgIAYmYCAGdmAgBsZgIAcGYCAHVmAgB6ZgIAfmYCAINmAgCIZgIAjGYCAJFmAgCWZgIAmmYCAJ9mAgCkZgIAqGYCAK1mAgCyZgIAt2YCALxmAgDBZgIAxWYCAMpmAgDPZgIA1GYCANhmAgDdZgIA4mYCAOdmAgDrZgIA8GYCAPVmAgD5ZgIA/mYCAANnAgAHZwIADGcCABFnAgAVZwIAGmcCAB9nAgAjZwIAKGcCAC1nAgAyZwIAN2cCADxnAgBAZwIARWcCAEpnAgBPZwIAU2cCAFhnAgAAAAAAXWcCAGFnAgBmZwIAa2cCAG9nAgB0ZwIAeWcCAH1nAgCCZwIAh2cCAItnAgCQZwIAlWcCAJlnAgCeZwIAo2cCAKhnAgCtZwIAsmcCALdnAgC9ZwIAw2cCAMlnAgDOZwIA1GcCANpnAgDgZwIA5WcCAOtnAgDxZwIA9mcCAPxnAgACaAIAB2gCAA1oAgATaAIAGGgCAB5oAgAkaAIAKWgCAC9oAgA1aAIAO2gCAEFoAgBHaAIATGgCAFJoAgBYaAIAXmgCAGNoAgBpaAIAb2gCAHVoAgB6aAIAgGgCAIZoAgCLaAIAkWgCAJdoAgCcaAIAomgCAKhoAgCtaAIAs2gCALloAgC+aAIAxGgCAMpoAgDQaAIA1mgCANxoAgAAAAAA4GgCAOVoAgAAAAAAAAAAAOpoAgAAAAAAAAAAAO9oAgD0aAIAAAAAAAAAAAD5aAIA/mgCAAJpAgAHaQIAAAAAAAxpAgARaQIAFmkCABppAgAfaQIAJGkCAClpAgAuaQIAM2kCADdpAgA8aQIAQWkCAAAAAABGaQIAAAAAAEtpAgBQaQIAVGkCAFlpAgBeaQIAYmkCAGdpAgAAAAAAbGkCAHFpAgB2aQIAemkCAH9pAgCEaQIAiGkCAI1pAgCSaQIAl2kCAJxpAgChaQIApmkCAKxpAgCyaQIAuGkCAL1pAgDDaQIAyWkCAM9pAgDUaQIA2mkCAOBpAgDlaQIA62kCAPFpAgD2aQIA/GkCAAJqAgAHagIADWoCABNqAgAYagIAHmoCACRqAgAqagIAMGoCADZqAgA7agIAQWoCAEdqAgBNagIAUmoCAFhqAgBeagIAZGoCAGlqAgBvagIAdWoCAHpqAgCAagIAhmoCAItqAgCRagIAl2oCAJxqAgCiagIAqGoCAK1qAgCzagIAuWoCAL9qAgDFagIAy2oCANBqAgAAAAAA1moCANxqAgDhagIA52oCAAAAAAAAAAAA7WoCAPNqAgD5agIA/moCAARrAgAKawIAD2sCABVrAgAAAAAAG2sCACFrAgAnawIALGsCADJrAgA4awIAPmsCAAAAAABEawIASWsCAE9rAgBVawIAW2sCAGBrAgBmawIAbGsCAHJrAgB3awIAfWsCAINrAgCIawIAjmsCAJRrAgCZawIAn2sCAKVrAgCqawIAsGsCALZrAgC7awIAwWsCAMdrAgDNawIA02sCANlrAgDeawIAAAAAAORrAgDqawIA72sCAPVrAgAAAAAA+2sCAABsAgAGbAIADGwCABFsAgAAAAAAF2wCAAAAAAAAAAAAAAAAABxsAgAibAIAKGwCAC1sAgAzbAIAOWwCAD9sAgAAAAAARWwCAEpsAgBQbAIAVmwCAFxsAgBhbAIAZ2wCAG1sAgBzbAIAeGwCAH5sAgCEbAIAiWwCAI9sAgCVbAIAmmwCAKBsAgCmbAIAq2wCALFsAgC3bAIAvGwCAMJsAgDIbAIAzmwCANRsAgDabAIA4GwCAOdsAgDubAIA9WwCAPtsAgACbQIACW0CABBtAgAWbQIAHW0CACRtAgAqbQIAMW0CADhtAgA+bQIARW0CAExtAgBSbQIAWW0CAGBtAgBmbQIAbW0CAHRtAgB7bQIAgm0CAIltAgCPbQIAlm0CAJ1tAgCkbQIAqm0CALFtAgC4bQIAv20CAMVtAgDMbQIA020CANltAgDgbQIA520CAO1tAgD0bQIA+20CAAFuAgAIbgIAD24CABVuAgAcbgIAI24CACpuAgAxbgIAOG4CADxuAgBBbgIARm4CAEtuAgBPbgIAVG4CAFluAgBebgIAYm4CAGduAgBsbgIAcG4CAHVuAgB6bgIAfm4CAINuAgCIbgIAjG4CAJFuAgCWbgIAmm4CAJ9uAgCkbgIAqW4CAK5uAgCzbgIAt24CALxuAgDBbgIAxm4CAMpuAgDPbgIA1G4CANluAgDdbgIA4m4CAOduAgDrbgIA8G4CAPVuAgD5bgIA/m4CAANvAgAHbwIADG8CABFvAgAVbwIAGm8CAB9vAgAkbwIAKW8CAC5vAgAzbwIAOW8CAD9vAgBFbwIASm8CAFBvAgBWbwIAXG8CAGFvAgBnbwIAbW8CAHJvAgB4bwIAfm8CAINvAgCJbwIAj28CAJRvAgCabwIAoG8CAKVvAgCrbwIAsW8CALdvAgC9bwIAw28CAMhvAgDObwIA1G8CANpvAgDfbwIA5W8CAOtvAgDxbwIA9m8CAPxvAgACcAIAB3ACAA1wAgATcAIAGHACAB5wAgAkcAIAKXACAC9wAgA1cAIAOnACAEBwAgBGcAIATHACAFJwAgBYcAIAXXACAGNwAgBpcAIAb3ACAHRwAgB6cAIAgHACAIZwAgCLcAIAkXACAJdwAgCccAIAonACAKhwAgCtcAIAs3ACALlwAgC+cAIAxHACAMpwAgDPcAIA1XACANtwAgDhcAIA53ACAO1wAgDycAIA+HACAP5wAgAEcQIACXECAA9xAgAVcQIAG3ECACBxAgAmcQIALHECADFxAgA3cQIAPXECAEJxAgBIcQIATnECAFNxAgBZcQIAX3ECAGRxAgBqcQIAcHECAHZxAgB8cQIAgnECAIhxAgCPcQIAlnECAJ1xAgCjcQIAqnECALFxAgC4cQIAvnECAMVxAgDMcQIA0nECANlxAgDgcQIA5nECAO1xAgD0cQIA+nECAAFyAgAIcgIADnICABVyAgAccgIAI3ICACpyAgAxcgIAN3ICAD5yAgBFcgIATHICAFJyAgBZcgIAYHICAGdyAgBtcgIAdHICAHtyAgCBcgIAiHICAI9yAgCVcgIAnHICAKNyAgCpcgIAsHICALdyAgC9cgIAxHICAMtyAgDScgIA2XICAOByAgDlcgIA63ICAPFyAgD3cgIA/HICAAJzAgAIcwIADnMCABNzAgAZcwIAH3MCACRzAgAqcwIAMHMCADVzAgA7cwIAQXMCAEZzAgBMcwIAUnMCAFdzAgBdcwIAY3MCAGlzAgBvcwIAdXMCAHpzAgCAcwIAhnMCAIxzAgCRcwIAl3MCAJ1zAgCjcwIAqHMCAK5zAgC0cwIAuXMCAL9zAgDFcwIAynMCANBzAgDWcwIA23MCAOFzAgDncwIA7HMCAPJzAgD4cwIA/nMCAAR0AgAKdAIAEHQCAAAAAAAAAAAAF3QCABx0AgAhdAIAJnQCACt0AgAwdAIANXQCADp0AgA/dAIARHQCAEl0AgBOdAIAU3QCAFh0AgBddAIAYnQCAGd0AgBsdAIAcnQCAHd0AgB8dAIAgXQCAIZ0AgCLdAIAkHQCAJV0AgCZdAIAnnQCAKN0AgCodAIArXQCALJ0AgC3dAIAvHQCAMF0AgDGdAIAy3QCANB0AgDVdAIA2nQCAN90AgDkdAIA6XQCAO50AgD0dAIA+XQCAP50AgADdQIACHUCAA11AgASdQIAF3UCAB11AgAidQIAJ3UCACx1AgAxdQIANnUCADt1AgBAdQIARXUCAEp1AgBPdQIAVHUCAFl1AgBedQIAY3UCAGh1AgBtdQIAcnUCAHd1AgB8dQIAgXUCAIZ1AgCLdQIAkHUCAJZ1AgCbdQIAoHUCAKV1AgCqdQIAr3UCALR1AgC5dQIAvXUCAMJ1AgDHdQIAzHUCANF1AgDWdQIA23UCAOB1AgDldQIA6nUCAO91AgD0dQIA+XUCAP51AgADdgIACHYCAA12AgASdgIAGHYCAB12AgAidgIAJ3YCACx2AgAxdgIANnYCADt2AgBBdgIARnYCAEt2AgBQdgIAVXYCAFp2AgBfdgIAZXYCAGt2AgBxdgIAd3YCAH12AgCDdgIAiXYCAI92AgCVdgIAm3YCAKF2AgCndgIArXYCALN2AgC5dgIAv3YCAMV2AgDMdgIA0nYCANh2AgDedgIA5HYCAOp2AgDwdgIA9nYCAPt2AgABdwIAB3cCAA13AgATdwIAGXcCAB93AgAldwIAK3cCADF3AgA3dwIAPXcCAEN3AgBJdwIAT3cCAFV3AgBbdwIAYXcCAGh3AgBudwIAdHcCAHp3AgCAdwIAhncCAIx3AgCSdwIAmXcCAJ93AgCldwIAq3cCALF3AgC3dwIAvXcCAMN3AgDJdwIAz3cCANV3AgDbdwIA4XcCAOd3AgDtdwIA83cCAPl3AgD/dwIABXgCAAt4AgAReAIAF3gCAB14AgAjeAIAKngCADB4AgA2eAIAPHgCAEJ4AgBIeAIATngCAFR4AgBZeAIAX3gCAGV4AgBreAIAcXgCAHd4AgB9eAIAg3gCAIl4AgCPeAIAlXgCAJt4AgCheAIAp3gCAK14AgCzeAIAuXgCAL94AgDGeAIAzHgCANJ4AgDYeAIA3ngCAOR4AgDqeAIA8HgCAPd4AgD9eAIAA3kCAAl5AgAPeQIAFXkCABt5AgAieQIAKXkCADB5AgA3eQIAPnkCAEV5AgBMeQIAU3kCAFp5AgBheQIAaHkCAG95AgB2eQIAfXkCAIR5AgCLeQIAknkCAJp5AgCheQIAqHkCAK95AgC2eQIAvXkCAMR5AgDLeQIA0XkCANh5AgDfeQIA5nkCAO15AgD0eQIA+3kCAAJ6AgAJegIAEHoCABd6AgAeegIAJXoCACx6AgAzegIAOnoCAEF6AgBIegIAUHoCAFd6AgBeegIAZXoCAGx6AgBzegIAenoCAIF6AgCJegIAkHoCAJd6AgCeegIApXoCAKx6AgCzegIAuHoCAAAAAAAAAAAAvXoCAMJ6AgDGegIAynoCAM56AgDSegIA1noCANp6AgDeegIA4noCAOZ6AgDsegIA8XoCAPZ6AgD7egIAAHsCAAV7AgAKewIAD3sCABR7AgAZewIAHnsCACJ7AgAmewIAKnsCAC57AgAyewIANnsCADp7AgA+ewIAQnsCAEh7AgBNewIAUnsCAFd7AgBcewIAYXsCAGZ7AgBrewIAcHsCAHV7AgB7ewIAgHsCAIV7AgCKewIAj3sCAJR7AgCZewIAnnsCAKN7AgCoewIArHsCALF7AgC2ewIAu3sCAMB7AgDFewIAynsCANB7AgDYewIA33sCAOR7AgDpewIA8HsCAPZ7AgD7ewIAAXwCAAd8AgAPfAIAFXwCABx8AgAkfAIAKnwCADN8AgA8fAIARHwCAEx8AgBSfAIAWXwCAGF8AgBpfAIAb3wCAHZ8AgB/fAIAiHwCAI98AgCafAIApHwCAK58AgC4fAIAwnwCAMl8AgDQfAIA13wCAN58AgDnfAIA8HwCAPt8AgAGfQIAD30CABh9AgAjfQIALH0CADV9AgBAfQIASX0CAFJ9AgBafQIAYn0CAG19AgB4fQIAgH0CAIl9AgCSfQIAmX0CAKR9AgCvfQIAuH0CAMF9AgDIfQIA0X0CANp9AgDjfQIA7n0CAPd9AgABfgIACn4CABN+AgAefgIAK34CADp+AgBFfgIAUn4CAF5+AgBnfgIAcn4CAH1+AgCGfgIAkX4CAJ9+AgCufgIAsX4CALp+AgC/fgIAxX4CAM1+AgDTfgIA2X4CAOJ+AgDpfgIA834CAP9+AgAGfwIACX8CAA9/AgAWfwIAHH8CACF/AgAkfwIAKX8CACx/AgA0fwIAOn8CAEN/AgBKfwIAUn8CAFh/AgBdfwIAYH8CAGN/AgBmfwIAbH8CAHN/AgB5fwIAfn8CAIZ/AgCJfwIAjn8CAJZ/AgCcfwIApX8CAKx/AgC2fwIAv38CAMJ/AgDIfwIAz38CANZ/AgDdfwIA4n8CAOp/AgDyfwIA+38CAAGAAgAKgAIAE4ACAByAAgAigAIAK4ACADKAAgA5gAIAQIACAEiAAgBOgAIAVoACAFyAAgBjgAIAaoACAHKAAgB9gAIAh4ACAI2AAgCUgAIAm4ACAKKAAgCogAIAr4ACALaAAgC7gAIAwoACAMqAAgDTgAIA2YACAOWAAgDwgAIA9oACAP6AAgAEgQIAC4ECABKBAgAZgQIAH4ECACaBAgAvgQIANYECADuBAgBCgQIASYECAFGBAgBbgQIAZYECAG+BAgB5gQIAgYECAImBAgCTgQIAm4ECAKCBAgClgQIAqoECALCBAgC3gQIAvoECAMSBAgDKgQIAz4ECANaBAgDegQIA6IECAPCBAgD4gQIAAoICAAyCAgAUggIAHoICACiCAgA0ggIAQIICAEyCAgBWggIAXIICAGKCAgBpggIAcoICAHuCAgCEggIAjYICAJeCAgCgggIAqYICALKCAgC3ggIAvYICAMaCAgDQggIA2YICAN+CAgDlggIA7IICAPOCAgD6ggIAAIMCAAeDAgAOgwIAFYMCABuDAgAfgwIAJIMCACuDAgAygwIAOYMCAD6DAgBGgwIAToMCAFeDAgBfgwIAZoMCAG6DAgB3gwIAgYMCAISDAgCIgwIAjYMCAJKDAgCXgwIAnIMCAKGDAgCmgwIAq4MCALCDAgC1gwIAuoMCAL+DAgDEgwIAyYMCAM6DAgDTgwIA2IMCAN2DAgDkgwIA6oMCAPGDAgD3gwIA/IMCAAOEAgAJhAIAEIQCABaEAgAbhAIAIoQCACmEAgAwhAIANoQCADyEAgBFhAIAToQCAFiEAgBfhAIAZoQCAG+EAgB4hAIAgYQCAIqEAgCThAIAmYQCAKGEAgCnhAIAsYQCALaEAgC/hAIAyIQCAM+EAgDahAIA4YQCAOiEAgDvhAIA9oQCAP2EAgAEhQIAC4UCABKFAgAZhQIAIIUCACaFAgAshQIAMoUCADmFAgBAhQIAR4UCAE6FAgBVhQIAXIUCAGOFAgBqhQIAcYUCAHiFAgB/hQIAhoUCAIuFAgCUhQIAnYUCAKaFAgCthQIAtIUCALuFAgDChQIAyYUCANCFAgDXhQIA3oUCAOeFAgDwhQIA+YUCAAKGAgALhgIAFIYCAB2GAgAmhgIAL4YCADiGAgBBhgIASoYCAFOGAgBZhgIAYYYCAGeGAgBxhgIAdoYCAH+GAgCIhgIAkYYCAJyGAgChhgIAqIYCAK+GAgC2hgIAu4YCAMGGAgDHhgIAzYYCANSGAgDbhgIA4oYCAOmGAgDwhgIA94YCAP6GAgAFhwIADIcCABOHAgAahwIAIYcCACaHAgAvhwIAOIcCAEGHAgBKhwIAU4cCAFyHAgBlhwIAbocCAHmHAgCEhwIAi4cCAJKHAgCZhwIAoIcCAKeHAgCuhwIAtocCAMCHAgDKhwIA1IcCAN+HAgDqhwIA9YcCAP6HAgAHiAIAEIgCABWIAgAaiAIAH4gCACSIAgAviAIAOogCAEWIAgBQiAIAW4gCAGWIAgBwiAIAeYgCAIKIAgCLiAIAlIgCAJ2IAgCliAIArogCALmIAgDEiAIAz4gCANqIAgDliAIA8YgCAP6IAgAKiQIAF4kCACOJAgAwiQIAPIkCAEmJAgBUiQIAX4kCAGiJAgBwiQIAeYkCAISJAgCPiQIAm4kCAKiJAgC2iQIAxYkCANGJAgDeiQIA6okCAPeJAgACigIADYoCABaKAgAeigIAJ4oCAC6KAgA1igIAPIoCAEOKAgBKigIAUYoCAFiKAgBfigIAZooCAG2KAgByigIAd4oCAHyKAgCDigIAjYoCAJiKAgCiigIArYoCALuKAgDKigIA2YoCAOeKAgD2igIABYsCABCLAgAbiwIAKIsCADWLAgA+iwIAR4sCAFSLAgBhiwIAaIsCAG+LAgB0iwIAeYsCAH6LAgCDiwIAiIsCAI+LAgCYiwIAnYsCAKCLAgCliwIArIsCALOLAgC6iwIAwYsCAMiLAgDPiwIA3IsCAOqLAgD5iwIAAIwCAAeMAgAOjAIAF4wCAB+MAgAnjAIAMIwCADWMAgA6jAIAP4wCAESMAgBJjAIATowCAFWMAgBcjAIAYowC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AMqyAgDMsgIA0LICANSyAgDYsgIA2rICAN6yAgDisgIA5rICAOqyAgDusgIA8LICAPSyAgD2sgIA/LICAP+yAgAEswIABrMCAAizAgALswIADbMCAA+zAgASswIAGbMCACCzAgAnswIALLMCADCzAgAyswIANLMCADazAgA6swIAPLMCAECzAgBEswIASLMCAEqzAgBOswIAULMCAFSzAgBYswIAX7MCAGGzAgBqswIAc7MCAHyzAgCCswIAhLMCAImzAgCNswIAkbMCAJOzAgCZswIAnbMCAJ+zAgCjswIAp7MCAKmzAgCtswIAsrMCALazAgC8swIAwrMCAMSzAgDGswIAzLMCAM6zAgDSswIA1rMCANizAgDcswIA3rMCAOKzAgDmswIA6rMCAO2zAgDwswIA9bMCAPqzAgD8swIA/7MCAAG0AgAItAIADLQCAA60AgAVtAIAHLQCACO0AgAqtAIAMbQCADO0AgA1tAIAN7QCADu0AgA9tAIAP7QCAEG0AgBDtAIARbQCAEe0AgBJtAIAS7QCAE20AgBPtAIAUbQCAFO0AgBVtAIAV7QCAFm0AgBbtAIAXbQCAF+0AgBhtAIAY7QCAGW0AgBntAIAa7QCAG20AgBvtAIAcbQCAHW0AgB3tAIAe7QCAH20AgB/tAIAg7QCAIe0AgCNtAIAj7QCAJG0AgCTtAIAlbQCAJm0AgCdtAIAn7QCAKO0AgCntAIAq7QCAK+0AgCztAIAt7QCALu0AgC/tAIAw7QCAMe0AgDLtAIAz7QCANO0AgDXtAIA27QCAN+0AgDjtAIA57QCAOm0AgDrtAIA7bQCAO+0AgDxtAIA87QCAPW0AgD9tAIABbUCAA21AgAVtQIAGrUCAB+1AgAktQIAKLUCACy1AgAxtQIANrUCADi1AgA8tQIAPrUCAEC1AgBCtQIARLUCAEa1AgBItQIASrUCAE61AgBQtQIAUrUCAFS1AgBYtQIAXLUCAGC1AgBktQIAaLUCAGq1AgBwtQIAdrUCAHi1AgB6tQIAfLUCAH61AgCAtQIAibUCAJC1AgCXtQIAm7UCAKK1AgCntQIArrUCALe1AgC8tQIAwLUCAMS1AgDGtQIAyrUCAMy1AgDQtQIA1LUCANa1AgDatQIA3rUCAOK1AgDktQIA5rUCAOy1AgDutQIA8LUCAPK1AgD2tQIA+rUCAPy1AgAAtgIAArYCAAS2AgAHtgIAC7YCAA22AgARtgIAE7YCABW2AgAatgIAHLYCACC2AgAktgIAJ7YCACu2AgAvtgIAM7YCADe2AgA7tgIAP7YCAEO2AgBItgIATLYCAFC2AgBZtgIAXrYCAGG2AgBjtgIAZrYCAGm2AgButgIAcLYCAHO2AgB4tgIAfLYCAH+2AgCDtgIAh7YCAIq2AgCPtgIAk7YCAJe2AgCbtgIAn7YCAKW2AgCrtgIAsbYCALe2AgC8tgIAx7YCAMm2AgDNtgIAz7YCANG2AgDVtgIA2bYCANu2AgDftgIA5bYCAOq2AgDwtgIA8rYCAPa2AgD6tgIAAbcCAAi3AgAMtwIADrcCABC3AgAUtwIAFrcCABq3AgAetwIAIrcCACS3AgAmtwIALbcCADG3AgA1twIAObcCAD23AgBBtwIAQ7cCAEe3AgBJtwIAS7cCAE+3AgBRtwIAVbcCAFm3AgBftwIAY7cCAGe3AgBrtwIAbbcCAHC3AgB0twIAe7cCAIS3AgCNtwIAlrcCAJ+3AgChtwIApbcCAKe3AgCrtwIAtrcCALq3AgDAtwIAxrcCAMu3AgDNtwIA0rcCANa3AgDYtwIA2rcCANy3AgDgtwIA5LcCAOi3AgDttwIA+LcCAAi4AgAVuAIAIrgCACa4AgAquAIAMLgCADK4AgA6uAIAQrgCAES4AgBIuAIATrgCAFS4AgBbuAIAYrgCAGS4AgBmuAIAargCAGy4AgByuAIAdLgCAHe4AgB7uAIAgbgCAIe4AgCSuAIAmLgCAJ+4AgCnuAIAq7gCALO4AgC7uAIAwbgCAMe4AgDOuAIA0LgCANS4AgDWuAIA2LgCAN24AgDfuAIA4bgCAOO4AgDluAIA6bgCAPO4AgD5uAIA/bgCAAG5AgAFuQIAC7kCABG5AgAXuQIAHbkCACK5AgAnuQIALbkCADO5AgA6uQIAQbkCAEi5AgBPuQIAVLkCAFy5AgBguQIAabkCAHK5AgB4uQIAfLkCAIC5AgCEuQIAh7kCAIy5AgCOuQIAkLkCAJK5AgCZuQIAnrkCAKW5AgCsuQIAs7kCALu5AgDDuQIAy7kCANO5AgDbuQIA47kCAOu5AgDzuQIA+7kCAAG6AgAHugIADboCABO6AgAZugIAH7oCACW6AgArugIAMboCADe6AgA9ugIAQ7oCAEa6AgBPugIAWLoCAFq6AgBhugIAZboCAGe6AgBpugIAbboCAHO6AgB3ugIAeboCAIO6AgCJugIAjboCAI+6AgCTugIAlboCAJm6AgCgugIAp7oCAK66AgCzugIAuLoCAMG6AgDHugIAzLoCANC6AgDVugIA2boCAOC6AgDkugIA57oCAOu6AgDxugIA97oCAPu6AgD/ugIABLsCAAq7AgATuwIAHrsCACS7AgAquwIAMLsCADq7AgBJuwIAUrsCAFq7AgBiuwIAarsCAHK7AgB6uwIAgrsCAIq7AgCSuwIAmrsCAKK7AgCquwIAsrsCALW7AgC5uwIAvrsCAMO7AgDFuwIAybsCANK7AgDbuwIA47sCAOe7AgDruwIA8LsCAPW7AgD6uwIA/LsCAAG8AgAFvAIAB7wCAAu8AgAPvAIAFbwCABq8AgAivAIAJ7wCACy8AgAxvAIAOLwCADu8AgA9vAIAQbwCAEa8AgBMvAIAULwCAFS8AgBavAIAYLwCAGK8AgBmvAIAarwCAG68AgByvAIAdrwCAHi8AgB6vAIAfLwCAH68AgCEvAIAirwCAI68AgCQvAIAkrwCAJS8AgCdvAIAobwCAKi8AgCvvAIAsbwCALS8AgC4vAIAvrwCAMK8AgDGvAIAyLwCANC8AgDUvAIA2LwCAN28AgDhvAIA5rwCAOu8AgDwvAIA9bwCAPq8AgD/vAIABL0CAAm9AgANvQIAE70CABe9AgAdvQIAIr0CACm9AgAvvQIAN70CADu9AgBCvQIARr0CAEq9AgBOvQIAU70CAFi9AgBavQIAXr0CAGe9AgBvvQIAeL0CAIa9AgCUvQIAor0CAKm9AgCwvQIAtL0CAL29AgDFvQIAyb0CANK9AgDZvQIA3b0CAOG9AgDlvQIA6b0CAPC9AgD0vQIA+L0CAPy9AgAAvgIAB74CABC+AgAZvgIAIL4CACy+AgA4vgIAPL4CAEC+AgBEvgIASL4CAEy+AgBQvgIAWL4CAGC+AgBpvgIAbb4CAHG+AgB1vgIAeb4CAH2+AgCBvgIAh74CAI6+AgCSvgIAnr4CAKa+AgCqvgIArr4CALK+AgC2vgIAvL4CAMO+AgDOvgIA2L4CAOO+AgDuvgIA974CAAK/AgAIvwIADr8CABS/AgAavwIAIL8CACS/AgArvwIANL8CADu/AgBBvwIARb8C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AN3cAgDh3AIA5dwCAOncAgDt3AIA8dwCAPXcAgD53AIA/dwCAAHdAgAF3QIACd0CAA3dAgAR3QIAFd0CABndAgAd3QIAId0CACXdAgAp3QIALd0CADHdAgA13QIAOd0CAD3dAgBB3QIARd0CAEndAgBN3QIAUd0CAFXdAgBZ3QIAXd0CAGHdAgBl3QIAad0CAG3dAgBx3QIAdd0CAHndAgB93QIAgd0CAIXdAgCJ3QIAjd0CAJHdAgCV3QIAmd0CAJ3dAgCh3QIApd0CAKndAgCt3QIAsd0CALXdAgC53QIAvd0CAMHdAgDF3QIAyd0CAM3dAgDR3QIA1d0CANndAgDd3QIA4d0CAOXdAgDp3QIA7d0CAPHdAgD13QIA+d0CAP3dAgAB3gIABd4CAAneAgAN3gIAEd4CABXeAgAZ3gIAHd4CACHeAgAl3gIAKd4CAC3eAgAx3gIANd4CADneAgA93gIAQd4CAEXeAgBJ3gIATd4CAFHeAgBV3gIAWd4CAF3eAgBh3gIAZd4CAGneAgBt3gIAcd4CAHXeAgB53gIAfd4CAIHeAgCF3gIAid4CAI3eAgCR3gIAld4CAJneAgCd3gIAod4CAKXeAgCp3gIArd4CALHeAgC13gIAud4CAL3eAgDB3gIAxd4CAMneAgDN3gIA0d4CANXeAgDZ3gIA3d4CAOHeAgDl3gIA6d4CAO3eAgDx3gIA9d4CAPneAgD93gIAAd8CAAXfAgAJ3wIADd8CABHfAgAV3wIAGd8CAB3fAgAh3wIAJd8CACnfAgAt3wIAMd8CADXfAgA53wIAPd8CAEHfAgBF3wIASd8CAE3fAgBR3wIAVd8CAFnfAgBd3wIAYd8CAGXfAgBp3wIAbd8CAHHfAgB13wIAed8CAH3fAgCB3wIAhd8CAInfAgCN3wIAkd8CAJXfAgCZ3wIAnd8CAKHfAgCl3wIAqd8CAK3fAgCx3wIAtd8CALnfAgC93wIAwd8CAMXfAgDJ3wIAzd8CANHfAgDV3wIA2d8CAN3fAgDh3wIA5d8CAOnfAgDt3wIA8d8CAPXfAgD53wIA/d8CAAHgAgAF4AIACeACAA3gAgAR4AIAFeACABngAgAd4AIAIeACACXgAgAp4AIALeACADHgAgA14AIAOeACAD3gAgBB4AIAReACAEngAgBN4AIAUeACAFXgAgBZ4AIAXeACAGHgAgBl4AIAaeACAG3gAgBx4AIAdeACAHngAgB94AIAgeACAIXgAgCJ4AIAjeACAJHgAgCV4AIAmeACAJ3gAgCh4AIApeACAKngAgCt4AIAseACALXgAgC54AIAveACAMHgAgDF4AIAyeACAM3gAgDR4AIA1eACANngAgDd4AIA4eACAOXgAgDp4AIA7eACAPHgAgD14AIA+eACAP3gAgAB4QIABeECAAnhAgAN4QIAEeECABXhAgAZ4QIAHeECACHhAgAl4QIAKeECAC3hAgAx4QIANeECADnhAgA94QIAQeECAEXhAgBJ4QIATeECAFHhAgBV4QIAWeECAF3hAgBh4QIAZeECAGnhAgBt4QIAceECAHXhAgB54QIAfeECAIHhAgCF4QIAieECAI3hAgCR4QIAleECAJnhAgCd4QIAoeECAKXhAgCp4QIAreECALHhAgC14QIAueECAL3hAgDB4QIAxeECAMnhAgDN4QIA0eECANXhAgDZ4QIA3eECAOHhAgDl4QIA6eECAO3hAgDx4QIA9eECAPnhAgD94QIAAeICAAXiAgAJ4gIADeICABHiAgAV4gIAGeICAB3iAgAh4gIAJeICACniAgAt4gIAMeICADXiAgA54gIAPeICAEHiAgBF4gIASeICAE3iAgBR4gIAVeICAFniAgBd4gIAYeICAGXiAgBp4gIAbeICAHHiAgB14gIAeeICAH3iAgCB4gIAheICAIniAgCN4gIAkeICAJXiAgCZ4gIAneICAKHiAgCl4gIAqeICAK3iAgCx4gIAteICALniAgC94gIAweICAMXiAgDJ4gIAzeICANHiAgDV4gIA2eICAN3iAgDh4gIA5eICAOniAgDt4gIA8eICAPXiAgD54gIA/eICAAHjAgAF4wIACeMCAA3jAgAR4wIAFeMCABnjAgAd4wIAIeMCACXjAgAp4wIALeMCADHjAgA14wIAOeMCAD3jAgBB4wIAReMCAEnjAgBN4wIAUeMCAFXjAgBZ4wIAXeMCAGHjAgBl4wIAaeMCAG3jAgBx4wIAdeMCAHnjAgB94wIAgeMCAIXjAgCJ4wIAjeMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJHjAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACV4wIAmeMCAJ7jAgCj4wIAp+MCAKzjAgCx4wIAteMCALnjAgC+4wIAw+MCAMfjAgDL4wIAz+MCANPjAgDZ4wIA3eMCAOLjAgDm4wIA6uMCAO7jAgDy4wIA9uMCAPrjAgD+4wIAAuQCAAbkAgAK5AIADuQCABPkAgAY5AIAHeQCACLkAgAo5AIALuQCADXkAgA85AIAQ+QCAEnkAgBQ5AIAV+QCAF7kAgBk5AIAa+QCAHLkAgB45AIAf+QCAIbkAgCM5AIAk+QCAJrkAgCg5AIAp+QCAK7kAgC05AIAu+QCAMLkAgDJ5AIA0OQCANfkAgDd5AIA4+QCAOnkAgDv5AIA9OQCAPrkAgAA5QIAB+UCAA7lAgAV5QIAG+UCACLlAgAp5QIAMOUCADblAgA95QIAROUCAErlAgBR5QIAWOUCAF7lAgBl5QIAbOUCAHLlAgB55QIAgOUCAIblAgCN5QIAlOUCAJvlAgCi5QIAqeUCALDlAgC15QIAvOUCAMDlAgDE5QIAx+UCAMrlAgDN5QIA0OUCANPlAgDW5QIA2eUCANzlAgDf5QIA4uUCAOXlAgDo5QIA6+UCAO7lAgDx5QIA9OUCAPflAgD65QIA/eUCAADmAgAD5gIABuYCAAnmAgAM5gIAD+YCABLmAgAV5gIAGOYCABvmAgAe5gIAIeYCACTmAgAn5gIAKuYCAC3mAgAw5gIAM+YCADbmAgA55gIAPOYCAD/mAgBC5gIAReYCAEjmAgBL5gIATuYCAFHmAgBU5gIAV+YCAFrmAgBd5gIAYOYCAGPmAgBm5gIAaeYCAGzmAgBv5gIAcuYCAHXmAgB45gIAe+YCAH7mAgCB5gIAhOYCAIfmAgCK5gIAjeYCAJDmAgCT5gIAluYCAJnmAgCc5gIAn+YCAKLmAgCl5gIAqOYCAKvmAgCu5gIAseYCALTmAgC35gIAuuYCAL3mAgDA5gIAw+YCAMbmAgDJ5gIAzOYCAM/mAgDS5gIA1eYCANjmAgDb5gIA3uYCAOHmAgDk5gIA5+YCAOrmAgDt5gIA8OYCAPPmAgD25gIA+eYCAPzmAgD/5gIAAucCAAXnAgAI5wIAC+cCAA7nAgAR5wIAFOcCABfnAgAa5wIAHecCACDnAgAj5wIAJucCACnnAgAs5wIAL+cCADLnAgA15wIAOOcCADvnAgA+5wIAQecCAETnAgBH5wIASucCAE3nAgBQ5wIAU+cCAFbnAgBZ5wIAXOcCAF/nAgBi5wIAZecCAGjnAgBr5wIAbucCAHHnAgB05wIAd+cCAHrnAgB95wIAgOcCAIPnAgCG5wIAiecCAIznAgCP5wIAkucCAJXnAgCY5wIAm+cCAJ7nAgCh5wIApOcCAKfnAgCq5wIArecCALDnAgCz5wIAtucCALnnAgC85wIAv+cCAMLnAgDF5wIAyOcCAMvnAgDO5wIA0ecCANTnAgDX5wIA2ucCAN3nAgDg5wIA4+cCAObnAgDp5wIA7OcCAO/nAgDy5wIA9ecCAPjnAgD75wIA/ucCAAHoAgAE6AIAB+gCAAroAgAN6AIAEOgCABPoAgAW6AIAGegCABzoAgAf6AIAIugCACXoAgAo6AIAK+gCAC7oAgAx6AIANOgCADfoAgA66AIAPegCAEDoAgBD6AIARugCAEnoAgBM6AIAT+gCAFLoAgBV6AIAWOgCAFvoAgBe6AIAYegCAGToAgBn6AIAaugCAG3oAgBw6AIAc+gCAHboAgB56AIAfOgCAH/oAgCC6AIAhegCAIjoAgCL6AIAjugCAJHoAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlOgCAJboAgCY6AIAnegCAJ/oAgCk6AIApugCAKvoAgCt6AIAsugCALToAgC26AIAuOgCALroAgC86AIAvugCAMDoAgDC6AIAxOgCAMjoAgDM6AIAzugCANDoAgDU6AIA2OgCAN3oAgDf6AIA4egCAOPoAgDn6AIA6ugCAOzoAgDw6AIA8ugCAPboAgD46AIA/OgCAP/oAgAB6QIABekCAAnpAgAL6QIAEekCABPpAgAY6QIAGukCAB/pAgAh6QIAJukCACjpAgAt6QIAL+kCADPpAgA16QIAOekCADvpAgBC6QIAROkCAEbpAgBI6QIATekCAE/pAgBR6QIAU+kCAFXpAgBX6QIAXOkCAGDpAgBi6QIAZ+kCAGvpAgBt6QIAcukCAHbpAgB46QIAfekCAIHpAgCD6QIAhekCAIfpAgCJ6QIAjekCAI/pAgCU6QIAlukCAJzpAgCe6QIApOkCAKbpAgCo6QIAqukCAK7pAgCw6QIAt+kCALnpAgDA6QIAwukCAMjpAgDO6QIA0OkCANfpAgDe6QIA4OkCAObpAgDr6QIA7ekCAPPpAgD56QIA++kCAAHqAgAH6gIACeoCAA/qAgAT6gIAFeoCABrqAgAc6gIAHuoCACPqAgAl6gIAJ+oCAC3qAgAv6gIANOoCADjqAgA66gIAP+oCAEPqAgBF6gIAS+oCAE3qAgBR6gIAU+oCAFfqAgBZ6gIAYOoCAGfqAgBp6gIAcOoCAHfqAgB56gIAfuoCAIDqAgCI6gIAiuoCAJDqAgCS6gIAmOoCAJrqAgCe6gIAoOoCAKbqAgCo6gIArOoCAK7qAgC06gIAtuoCALjqAgC66gIAv+oCAMTqAgDG6gIAyOoCANLqAgDX6gIA3uoCAOXqAgDq6gIA7+oCAPvqAgD/6gIAA+sCAAfrAgAL6wIADesCAA/rAgAR6wIAE+sCABXrAgAX6wIAGesCABvrAgAd6wIAH+sCACHrAgAj6wIAJesCACfrAgAp6wIAK+sCAC3rAgAv6wIAMesCADPrAgA16wIAN+sCAD3rAgBE6wIASesCAFHrAgBZ6wIAXusCAGTrAgBm6wIAaOsCAGrrAgBs6wIAbusCAHDrAgBy6wIAdOsCAHbrAgB46wIAeusCAHzrAgB+6wIAgOsCAILrAgCE6wIAkOsCAJXrAgCX6wIAmesCAJ/rAgCr6wIAsesCALfrAgC96wIAw+sCAMfrAgDS6wIA1OsCANbrAgDY6wIA2usCANzrAgDe6wIA4OsCAOLrAgDk6wIA5usCAOjrAgDq6wIA7OsCAO7rAgDw6wIA8usCAPTrAgD26wIA+OsCAPrrAgD86wIA/usCAADsAgAC7AIABOwCAAbsAgAI7AIACuwCAAzsAgAO7AIAEOwCABLsAgAU7AIAFuwCABjsAgAa7AIAHOwCAB7sAgAg7AIAIuwCACTsAgAm7AIAKOwCACrsAgAs7AIALuwCADDsAgAy7AIANOwCADbsAgA47AIAOuwCADzsAgA+7AIAQOwCAELsAgBE7AIARuwCAEjsAgBK7AIATOwCAE7sAgBQ7AIAUuwCAFTsAgBW7AIAWOwCAFrsAgBc7AIAXuwCAGDsAgBi7AIAZOwCAGbsAgBo7AIAauwCAGzsAgBu7AIAcOwCAHLsAgB07AIAduwCAHjsAgB67AIAfOwCAH7sAgCA7AIAguwCAITsAgCG7AIAiOwCAIrsAgCM7AIAjuwCAJDsAgCS7AIAlOwCAJbsAgCY7AIAmuwCAJzsAgCe7AIAoOwCAKLsAgCk7AIApuwCAKjsAgCq7AIArOwCAK7sAgCw7AIAsuwCALTsAgC27AIAuOwCALrsAgC87AIAvuwCAMDsAgDC7AIAxOwCAMbsAgDI7AIAyuwCAMzsAgDO7AIA0OwCANLsAgDU7AIA1uwCANjsAgDa7AIA3OwCAN7sAgDg7AIA4uwCAOTsAgDm7AIA6OwCAOrsAgDs7AIA7uwCAPDsAgDy7AIA9OwCAPbsAgD47AIA+uwCAPzsAgD+7AIAAO0CAALtAgAE7QIABu0CAAjtAgAK7QIADO0CAA7tAgAQ7QIAEu0CABTtAgAW7QIAGO0CABrtAgAc7QIAHu0CACDtAgAi7QIAJO0CACbtAgAo7QIAKu0CACztAgAu7QIAMO0CADLtAgA07QIANu0CADjtAgA67QIAPO0CAD7tAgBA7QIAQu0CAETtAgBG7QIASO0CAErtAgBM7QIATu0CAFDtAgBS7QIAVO0CAFbtAgBY7QIAWu0CAFztAgBe7QIAYO0CAGLtAgBk7QIAZu0CAGjtAgBq7QIAbO0CAG7tAgBw7QIAcu0CAHTtAgB27QIAeO0CAHrtAgB87QIAfu0CAIDtAgCC7QIAhO0CAIbtAgCI7QIAiu0CAIztAgCO7QIAkO0CAJLtAgCU7QIAlu0CAJjtAgCa7QIAnO0CAJ7tAgCg7QIAou0CAKTtAgCm7QIAqO0CAKrtAgCs7QIAru0CALDtAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACy7QIAtu0CALrtAgC/7QIAw+0CAMftAgDL7QIAz+0CANPtAgDX7QIA2+0CAN/tAgDj7QIA7e0CAPftAgAC7gIADe4CABfuAgAh7gIAK+4CADXuAgBD7gIAUe4CAF/uAgBt7gIAdu4CAH/uAgCM7gIAme4CAKbuAgCz7gIAve4CAMfuAgDS7gIA3e4CAOjuAgDz7gIA/u4CAAfvAgAR7wIAG+8CACXvAgAv7wIAOu8CAEXvAgBQ7wIAW+8CAGbvAgBx7wIAfO8CAIfvAgCS7wIAne8CAKjvAgC27wIAwe8CAM/vAgDX7wIA4u8CAOrvAgDy7wIA+u8CAALwAgAK8AIAEvACABzwAgAm8AIAMPACADrwAgBE8AIATvACAFjwAgBi8AIAavACAHPwAgB88AIAhfACAI7wAgCW8AIAnvACAKjwAgCy8AIAvfACAMjwAgDU8AIA3/ACAOnwAgD08AIA/vACAAnxAgAR8QIAGPECAB/xAgAm8QIALfECADTxAgA78QIAQvECAEnxAgBR8QIAWfECAGHxAgBp8QIAcfECAHnxAgCB8QIAifECAJHxAgCZ8QIAofECAKbxAgCq8QIArvECALLxAgC28QIAuvECAL7xAgDC8QIAxvECAMrxAgDO8QIA0vECANXxAgDY8QIA3PECAODxAgDk8QIA6PECAOzxAgDw8QIA9PECAPjxAgD88QIAAPICAATyAgAI8gIADPICABDyAgAU8gIAGPICABzyAgAg8gIAJPICACjyAgAs8gIAMPICADTyAgA48gIAPPICAEDyAgBE8gIASPICAEzyAgBQ8gIAVPICAFjyAgBc8gIAYPICAGTyAgBo8gIAbPICAHDyAgB08gIAePICAHzyAgCA8gIAhPICAIjyAgCM8gIAkPICAJTyAgCY8gIAnPICAKDyAgCk8gIAqPICAKzyAgCw8gIAtPICALjyAgC88gIAwPICAMTyAgDI8gIAzPICANDyAgDU8gIA2PICANzyAgDg8gIA5PICAOjyAgDs8gIA8PICAPTyAgD48gIA/PICAADzAgAE8wIACPMCAAzzAgAQ8wIAFPMCABjzAgAc8wIAIPMCACTzAgAo8wIALPMCAC/zAgAz8wIAN/MCADvzAgA/8wIAQ/MCAEfzAgBL8wIAT/MCAFPzAgBX8wIAW/MCAF/zAgBj8wIAZ/MCAGvzAgBv8wIAc/MCAHfzAgB78wIAf/MCAIPzAgCH8wIAi/MCAI/zAgCT8wIAl/MCAJvzAgCf8wIAo/MCAKfzAgCr8wIAr/MCALPzAgC38wIAu/MCAL/zAgDD8wIAx/MCAMvzAgDP8wIA0/MCANfzAgDb8wIA3/MCAOPzAgDn8wIA6/MCAO/zAgDz8wIA9/MCAPvzAgD/8wIAA/QCAAf0AgAL9AIAD/QCABP0AgAX9AIAG/QCAB/0AgAj9AIAJ/QCACv0AgAv9AIAM/QCADf0AgA79AIAP/QCAEP0AgBH9AIAS/QCAE/0AgBT9AIAV/QCAFv0AgBf9AIAY/QCAGf0AgBr9AIAb/QCAHP0AgB39AIAe/QCAH/0AgCD9AIAh/QCAIv0AgCP9AIAk/QCAJf0AgCb9AIAn/QCAKP0AgCn9AIAq/QCAK/0AgCz9AIAt/QCALv0AgC/9AIAw/QCAMf0AgDL9AIAz/QCANP0AgDX9AIA2/QCAN/0AgDj9AIA5/QCAOv0AgDv9AIA8/QCAPf0AgD79AIA//QCAAP1AgAH9QIAC/UCAA/1AgAT9QIAF/UCABv1AgAf9QIAI/UCACf1AgAr9QIAL/UCADP1AgA39QIAO/UCAD/1AgBD9QIAR/UCAEv1AgBP9QIAU/UCAFf1AgBb9QIAX/UCAGP1AgBn9QIAa/UCAG/1AgBz9QIAd/UCAHv1AgB/9QIAg/UCAIf1AgCL9QIAj/UCAJP1AgCX9QIAm/UCAJ/1AgCj9QIAp/UCAKv1AgCv9QIAs/UCALf1AgC79QIAv/UCAMP1AgDH9QIAy/UC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AAIAAACfC8ALAAAAAAIAAACfC8ELAAAAAAIAAACfC8ILAAAAAAIAAACfC8YLAAAAAAIAAACfC8cLAAAAAAIAAACfC8gLAAAAAAIAAACfC8oLAAAAAAIAAACfC8sLAAAAAAIAAACfC8wLAAAAAAIAAACjC74LAAAAAAIAAACjC78LAAAAAAIAAACjC8ALAAAAAAIAAACjC8ELAAAAAAIAAACjC8ILAAAAAAIAAACjC8YLAAAAAAIAAACjC8cLAAAAAAIAAACjC8gLAAAAAAIAAACjC8oLAAAAAAIAAACjC8sLAAAAAAIAAACjC8wLAAAAAAIAAACkC74LAAAAAAIAAACkC78LAAAAAAIAAACkC8ALAAAAAAIAAACkC8ELAAAAAAIAAACkC8ILAAAAAAIAAACkC8YLAAAAAAIAAACkC8cLAAAAAAIAAACkC8gLAAAAAAIAAACkC8oLAAAAAAIAAACkC8sLAAAAAAIAAACkC8wLAAAAAAIAAACoC74LAAAAAAIAAACoC78LAAAAAAIAAACoC8ALAAAAAAIAAACoC8ELAAAAAAIAAACoC8ILAAAAAAIAAACoC8YLAAAAAAIAAACoC8cLAAAAAAIAAACoC8gLAAAAAAIAAACoC8oLAAAAAAIAAACoC8sLAAAAAAIAAACoC8wLAAAAAAIAAACqC74LAAAAAAIAAACqC78LAAAAAAIAAACqC8ALAAAAAAIAAACqC8ELAAAAAAIAAACqC8ILAAAAAAIAAACqC8YLAAAAAAIAAACqC8cLAAAAAAIAAACqC8gLAAAAAAIAAACqC8oLAAAAAAIAAACqC8sLAAAAAAIAAACqC8wLAAAAAAIAAACuC74LAAAAAAIAAACuC78LAAAAAAIAAACuC8ALAAAAAAIAAACuC8ELAAAAAAIAAACuC8ILAAAAAAIAAACuC8YLAAAAAAIAAACuC8cLAAAAAAIAAACuC8gLAAAAAAIAAACuC8oLAAAAAAIAAACuC8sLAAAAAAIAAACuC8wLAAAAAAIAAACvC74LAAAAAAIAAACvC78LAAAAAAIAAACvC8ALAAAAAAIAAACvC8ELAAAAAAIAAACvC8ILAAAAAAIAAACvC8YLAAAAAAIAAACvC8cLAAAAAAIAAACvC8gLAAAAAAIAAACvC8oLAAAAAAIAAACvC8sLAAAAAAIAAACvC8wLAAAAAAIAAACwC74LAAAAAAIAAACwC78LAAAAAAIAAACwC8ALAAAAAAIAAACwC8ELAAAAAAIAAACwC8ILAAAAAAIAAACwC8YLAAAAAAIAAACwC8cLAAAAAAIAAACwC8gLAAAAAAIAAACwC8oLAAAAAAIAAACwC8sLAAAAAAIAAACwC8wLAAAAAAIAAACyC74LAAAAAAIAAACyC78LAAAAAAIAAACyC8ALAAAAAAIAAACyC8ELAAAAAAIAAACyC8ILAAAAAAIAAACyC8YLAAAAAAIAAACyC8cLAAAAAAIAAACyC8gLAAAAAAIAAACyC8oLAAAAAAIAAACyC8sLAAAAAAIAAACyC8wLAAAAAAIAAAC1C74LAAAAAAIAAAC1C78LAAAAAAIAAAC1C8ALAAAAAAIAAAC1C8ELAAAAAAIAAAC1C8ILAAAAAAIAAAC1C8YLAAAAAAIAAAC1C8cLAAAAAAIAAAC1C8gLAAAAAAIAAAC1C8oLAAAAAAIAAAC1C8sLAAAAAAIAAAC1C8wLAAAAAAIAAAC0C74LAAAAAAIAAAC0C78LAAAAAAIAAAC0C8ALAAAAAAIAAAC0C8ELAAAAAAIAAAC0C8ILAAAAAAIAAAC0C8YLAAAAAAIAAAC0C8cLAAAAAAIAAAC0C8gLAAAAAAIAAAC0C8oLAAAAAAIAAAC0C8sLAAAAAAIAAAC0C8wLAAAAAAIAAACzC74LAAAAAAIAAACzC78LAAAAAAIAAACzC8ALAAAAAAIAAACzC8ELAAAAAAIAAACzC8ILAAAAAAIAAACzC8YLAAAAAAIAAACzC8cLAAAAAAIAAACzC8gLAAAAAAIAAACzC8oLAAAAAAIAAACzC8sLAAAAAAIAAACzC8wLAAAAAAIAAACxC74LAAAAAAIAAACxC78LAAAAAAIAAACxC8ALAAAAAAIAAACxC8ELAAAAAAIAAACxC8ILAAAAAAIAAACxC8YLAAAAAAIAAACxC8cLAAAAAAIAAACxC8gLAAAAAAIAAACxC8oLAAAAAAIAAACxC8sLAAAAAAIAAACxC8wLAAAAAAIAAACpC74LAAAAAAIAAACpC78LAAAAAAIAAACpC8ALAAAAAAIAAACpC8ELAAAAAAIAAACpC8ILAAAAAAIAAACpC8YLAAAAAAIAAACpC8cLAAAAAAIAAACpC8gLAAAAAAIAAACpC8oLAAAAAAIAAACpC8sLAAAAAAIAAACpC8wLAAAAAAIAAACcC74LAAAAAAIAAACcC78LAAAAAAIAAACcC8ALAAAAAAIAAACcC8ELAAAAAAIAAACcC8ILAAAAAAIAAACcC8YLAAAAAAIAAACcC8cLAAAAAAIAAACcC8gLAAAAAAIAAACcC8oLAAAAAAIAAACcC8sLAAAAAAIAAACcC8wLAAAAAAIAAAC2C74LAAAAAAIAAAC2C78LAAAAAAIAAAC2C8ALAAAAAAIAAAC2C8ELAAAAAAIAAAC2C8ILAAAAAAIAAAC2C8YLAAAAAAIAAAC2C8cLAAAAAAIAAAC2C8gLAAAAAAIAAAC2C8oLAAAAAAIAAAC2C8sLAAAAAAIAAAC2C8wLAAAAAAIAAAC3C74LAAAAAAIAAAC3C78LAAAAAAIAAAC3C8ALAAAAAAIAAAC3C8ELAAAAAAIAAAC3C8ILAAAAAAIAAAC3C8YLAAAAAAIAAAC3C8cLAAAAAAIAAAC3C8gLAAAAAAIAAAC3C8oLAAAAAAIAAAC3C8sLAAAAAAIAAAC3C8wLAAAAAAIAAAC4C74LAAAAAAIAAAC4C78LAAAAAAIAAAC4C8ALAAAAAAIAAAC4C8ELAAAAAAIAAAC4C8ILAAAAAAIAAAC4C8YLAAAAAAIAAAC4C8cLAAAAAAIAAAC4C8gLAAAAAAIAAAC4C8oLAAAAAAIAAAC4C8sLAAAAAAIAAAC4C8wLAAAAAAIAAAC5C74LAAAAAAIAAAC5C78LAAAAAAIAAAC5C8ALAAAAAAIAAAC5C8ELAAAAAAIAAAC5C8ILAAAAAAIAAAC5C8YLAAAAAAIAAAC5C8cLAAAAAAIAAAC5C8gLAAAAAAIAAAC5C8oLAAAAAAIAAAC5C8sLAAAAAAIAAAC5C8wLAAAAAAMAAACVC80LtwsAAAQAAACVC80Ltwu+CwQAAACVC80Ltwu/CwQAAACVC80LtwvACwQAAACVC80LtwvBCwQAAACVC80LtwvCCwQAAACVC80LtwvGCwQAAACVC80LtwvHCwQAAACVC80LtwvICwQAAACVC80LtwvKCwQAAACVC80LtwvLCwQAAACVC80LtwvMCwQAAAC2C80LsAvACwMAAADKDQ0gug0AAAMAAADKDQ0guw0AAAMAAAC7DcoNDSAAAAIAAADjEAIDAAAAAAIAAADSF4AXAAAA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AP/+AAD//gAA1CIBANUiAQBWbgEAV24BAHZuAQB3bgEAAbABAMXQAQAAAQ4AAQEOAAIBDgADAQ4ABAEOAAUBDgAGAQ4ABwEOAAgBDgAJAQ4ACgEOAAsBDgAMAQ4ADQEOAA4BDgAPAQ4AEAEOABEBDgASAQ4AEwEOABQBDgAVAQ4AFgEOABcBDgAYAQ4AGQEOABoBDgAbAQ4AHAEOAB0BDgAeAQ4AHwEOACABDgAhAQ4AIgEOACMBDgAkAQ4AJQEOACYBDgAnAQ4AKAEOACkBDgAqAQ4AKwEOACwBDgAtAQ4ALgEOAC8BDgAwAQ4AMQEOADIBDgAzAQ4ANAEOADUBDgA2AQ4ANwEOADgBDgA5AQ4AOgEOADsBDgA8AQ4APQEOAD4BDgA/AQ4AQAEOAEEBDgBCAQ4AQwEOAEQBDgBFAQ4ARgEOAEcBDgBIAQ4ASQEOAEoBDgBLAQ4ATAEOAE0BDgBOAQ4ATwEOAFABDgBRAQ4AUgEOAFMBDgBUAQ4AVQEOAFYBDgBXAQ4AWAEOAFkBDgBaAQ4AWwEOAFwBDgBdAQ4AXgEOAF8BDgBgAQ4AYQEOAGIBDgBjAQ4AZAEOAGUBDgBmAQ4AZwEOAGgBDgBpAQ4AagEOAGsBDgBsAQ4AbQEOAG4BDgBvAQ4AcAEOAHEBDgByAQ4AcwEOAHQBDgB1AQ4AdgEOAHcBDgB4AQ4AeQEOAHoBDgB7AQ4AfAEOAH0BDgB+AQ4AfwEOAIABDgCBAQ4AggEOAIMBDgCEAQ4AhQEOAIYBDgCHAQ4AiAEOAIkBDgCKAQ4AiwEOAIwBDgCNAQ4AjgEOAI8BDgCQAQ4AkQEOAJIBDgCTAQ4AlAEOAJUBDgCWAQ4AlwEOAJgBDgCZAQ4AmgEOAJsBDgCcAQ4AnQEOAJ4BDgCfAQ4AoAEOAKEBDgCiAQ4AowEOAKQBDgClAQ4ApgEOAKcBDgCoAQ4AqQEOAKoBDgCrAQ4ArAEOAK0BDgCuAQ4ArwEOALABDgCxAQ4AsgEOALMBDgC0AQ4AtQEOALYBDgC3AQ4AuAEOALkBDgC6AQ4AuwEOALwBDgC9AQ4AvgEOAL8BDgDAAQ4AwQEOAMIBDgDDAQ4AxAEOAMUBDgDGAQ4AxwEOAMgBDgDJAQ4AygEOAMsBDgDMAQ4AzQEOAM4BDgDPAQ4A0AEOANEBDgDSAQ4A0wEOANQBDgDVAQ4A1gEO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AYwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjwGQAZEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAGVAZYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJcBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmgGbAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdAZ4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoQGiAaMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApgGnAagBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACuAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAswEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAugEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHAcgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAygEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1QEAAAAAAADWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANcBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwB3QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4wEAAAAAAAAAAAAAAADkAQAAAAAAAAAAAAAAAAAAAADlAQAAAAAAAAAAAAAAAOYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7AEAAAAAAAAAAAAAAAAAAAAA7QEAAAAAAAAAAAAAAADuAQAAAAAAAAAAAAAAAAAAAADvAQAAAAAAAAAAAAAAAPABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9gEAAAAAAAAAAAAAAAAAAAAA9wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD5AfoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AEAAAAAAAAAAAAAAAD9AQAAAAAAAAAAAAAAAAAAAAD+AQAAAAAAAAAAAAAAAP8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQIAAAAAAAAAAAAAAAAAAAAABgIAAAAAAAAAAAAAAAAHAgAAAAAAAAAAAAAAAAAAAAAIAgAAAAAAAAAAAAAAAAkCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwIAAAAAAAAAAAAAAAAAAAAAEAIAAAAAAAAAAAAAAAARAgAAAAAAAAAAAAAAAAAAAAASAgAAAAAAAAAAAAAAABMCAAAAAAAAAAAAAAAAAAAUAhUCAAAAAAAAAAAAABYCAAAAAAAAAAAAAAAAAAAAABcCAAAAAAAAAAAAAAAAGAIAAAAAAAAAAAAAAAAAAAAAGQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAhwCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgIAAAAAAAAAAAAAAAAfAgAAAAAAAAAAAAAAAAAAAAAgAgAAAAAAAAAAAAAAACECAAAAAAAAAAAAAAAAAAAiAiMCAAAAAAAAAAAAACQCAAAAAAAAAAAAAAAAAAAAACUCAAAAAAAAAAAAAAAAJgIAAAAAAAAAAAAAAAAAAAAAJwIAAAAAAAAAAAAAAAAoAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgIAAAAAAAAAAAAAAAAAAC8CAAAAAAAAAAAAAAAAMAIAAAAAAAAAAAAAAAAAAAAAMQIAAAAAAAAAAAAAAAAyAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAIAAAAAAAAAAAAAAAAAAD0CAAAAAAAAAAAAAAAAPgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACAAAAAAAAAAAAAAAAAABBAkICAAAAAAAAAAAAAEMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHYCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8CgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIsCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQClQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkCmgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAogIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuIgAAAAAAAAAAAABgIgAAAAAAAAAAAABvIgAAAAAAAAAAAAAAAAAAwAAAAMEAAADCAAAAwwAAAAABAAACAQAAJgIAAMQAAACiHgAAxQAAAAAAAADNAQAAAAIAAAICAAAAAAAAAAAAAAAAAACgHgAAAAAAAAAeAAAAAAAAAAAAAAQBAAAAAAAAAAAAAAIeAAAAAAAAAAAAAAQeAAAAAAAAAAAAAAAAAAAAAAAABh4AAAAAAAAGAQAACAEAAAAAAAAAAAAAAAAAAAoBAAAAAAAAAAAAAAAAAAAAAAAADAEAAAAAAADHAAAAAAAAAAAAAAAAAAAACh4AAAAAAAAAAAAAAAAAAAAAAAAOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMHgAAAAAAAAAAAAAAAAAAEB4AAAAAAAASHgAAAAAAAAAAAAAOHgAAAAAAAAAAAAAAAAAAAAAA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AgICAgICAgICAgICAgICAgICAgICAmACAgICAgICAgICAgICAgICAgJhAgICAgICAgICAgICAgICAgICYmMCAgICAgICAmQ0NGVmNGdoaWprbG1ubwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJxcnN0dXYCAnd4eQJ6e3x9fn8CgIGCg4SFhjQ0h4iJiouMjY6PkJGSkwKUlZaXmJmam5ydngKfoAKhoqOkAqWmp6ipqgICq6ytrgKvArA0NDQ0NDQ0sbI0swICAgICAgICAgICAgICAgICAgICtDQ0NDQ0NDQ0tQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0NDQ0tgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0NDQ0t7i5ugICAgK7vL2+NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDRmNDQ0NDQ0NDQ0v8ACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsE0NMI0NMMCAgICAgICAgICAgICAgICAgLExQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsazAgLHyMnKywICzAICAs3OzzQ0NDQ00AICAgICAgIC0QLSAtMCAtQCAgICAgICAgLVNNbXAgICAgLY2doC29wCAt3eNN/gAjQ0NDQ0NDTh4uPk5TQ05uc06AICAgICAgIC6ephAgICAgICAgICAgICAgICVusC7O0CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLuAgICAgICAgICAgLvAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvECAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8jQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ08zT0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDT1NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ09gICAgICAgICAgICAgICAgICAgICAgICAgLuAgICAgICAgICAgICAgI0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NPcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI0+AICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC//////8AAAAAAAAAAAAAAAv/////AAAAAAAAAAAAAAAK/////wAAAAAAAAAAAAAA/x7///8AAAAAAAAAAAAAAP8C////AAAAAAAAAAAAAAATFf///wAAAAAAAAAAAAAA//8C//8AAAAAAAAAAAAAAP//A///AAAAAAAAAAAAAAD//wH//wAAAAAAAAAAAAAA/wD///8AAAAAAAAAAAAAAP8d////AAAAAAAAAAAAAAD/Gv///wAAAAAAAAAAAAAABf////8AAAAAAAAAAAAAAA4G////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAA//////8AAAAAAAAAAADwP///////AAAAAAAAAAAAAED//////wAAAAAAAAAAAAhA//////8AAAAAAAAAAAAQQP//////AAAAAAAAAAAA8L8O/////wAAAAAAAAAAAAAA////AP8AAAAAAAAAAAAAAP8T////AAAAAAAAAAAAAAD/BwH//wAAAAAAAAAAAAAA/wcC//8AAAAAAAAAAAAAAP8HA///AAAAAAAAAAAAAAD/BwT//wAAAAAAAAAAAAAA/wcF//8AAAAAAAAAAAAAAP8HBv//AAAAAAAAAAAAAAD/Bwf//wAAAAAAAAAAAAAA/wcI//8AAAAAAAAAAAAAAP8HCf//AAAAAAAAAAAAAAAOBP///wAAAAAAAAAAAAAAAQX///8AAAAAAAAAAAAAAAET////AAAAAAAAAAAAAAD/Cv///wAAAAAAAAAAAAAAEv////8AAAAAAAAAAAAAABP/////AAAAAAAAAAAAAAD//wD//wAAAAAAAAAAAAAA//8E//8AAAAAAAAAAAAAAP//Bf//AAAAAAAAAAAAAAD//wb//wAAAAAAAAAAAAAA//8H//8AAAAAAAAAAAAAAP//CP//AAAAAAAAAAAAAAD//wn//wAAAAAAAAAAAAAAEx7///8AAAAAAAAAAAAAAP8I////AAAAAAAAAAAAAAD/G////wAAAAAAAAAAAAAA/////wUAAAAAAAAAAAAAAP8W////AAAAAAAAAAAAAAD/F////wAAAAAAAAAAAAAACf////8AAAAAAAAAAAAAAP///wH/AAAAAAAAAAAAAAD/FP///wAAAAAAAAAAAAAA//////8AAAAAgOA3ecNBQ///////AAAAQIy1eB2vFUT/E////wAAAAAAAAAAAPC/Af//AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAABAAABQAAAAAGBwAAAwAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAACgoAAAAAAAAAAAAAAAoKCgoKCgoKCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAACQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAACQkJCQoACQkAAAAJCQkACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJAAAJCQkJCQkAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAJCQkAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAACwAAAAAAAAkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJAAkJCQAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDQAAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQAJCQkJCQkJCQkJCQAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAJCQAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAAAAAACQkAAAAAAAkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8QERITAAAJCQkJAAAJAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQAAAAAAAAAAAAAAAAkJAAAAAAAAAAkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAJCQkJCQkJCQAAAAAACQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQAACQAAAAAJCQAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAkJAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAkJAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAJCQkJAAAAAAAACQAAAAAAAAAAAAkJAAAAAAkJCQAJCQkJCQkJCQAACQkAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAJAAAJAAkJCQkJCQAAAAAJAAAAAAAAAAkAAAAAAAAACQkAAAkAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRUVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAACQAACQAAAAAAAAAJCQkAAAAACQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAACQAAFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYJCQAJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAAAAAAAAAAAXGBkaGxwdHh8AAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgkAAAkJCQkJCQAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAACQAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQAAAAAJCQkJCQkJCQkJCQkAAAAACQAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQkJCQkAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAACQkJCQkJCQkJCQkAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAkJCQkJCQkJCQkJAAAAAAAACQkJCQkJCQkJCQAAAAAAAAkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAkJCQkJCQkJCQkJCQkJCQAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAAAAAAAAAAAACQkJCQAJCQkJCQkJAAAAAAAJAAkJCQkAAAAAAAAmBAAAJygpKissAQEAAAAEJggGBycoKSorLAEBAAAAAAkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0AAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAACQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4JCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vLy8AAAAAAAAAAAAAAAAAADAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMgsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAACQAAAAAJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAkAAAAACQkJAAkAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQAAAAAAAAAAAAAAAAAAAAAlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQAAAAAACQAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAkJCQkJCQkACQkJCQkJCQAJCQkJCQkJAAkJCQkJCQkACQkJCQkJCQAJCQkJCQkJAAkJCQkJCQkACQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAJCQAJAAkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAJCQkJCQkJCQkJAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAkJCQkJCQkJCQkJCQAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQAACQkJCQkJCQkJCQAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAACQkJCQkJAAAJCQkJCQkAAAkJCQkJCQAAAAAAAAAAAAkJCQkJCQkACQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAEwAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEyCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkAAAAAAAAAAAAACQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQAAAAAAAAAAAAAAAAAAAAAVFRUVFRUAAAABARUVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODg4AAAAACQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJCQkJCQkACQkACQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAkJCQAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAkJCQAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAEwAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAACQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQkJCQkJCQkJCQAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAACQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJAAkJAAkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJAAkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkAAAkACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkAAAAJAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkACQkAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkAAAAAAAkJCQkJCQkJAAkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQkJAAAAAAkJCQkJCQkJCQkAAAAAAAAACQkJCQkJCQkJAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAJCQkJCQkJCQkJCQkAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAJCQkJAAAAAAAAAAAAAAAACQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkJAAAJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAACQAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAJCQkJCQkJCQkJAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQAJAAkJCQkACQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAkJCQkJCQkJCQkAAAAAAAAJCQkJAAkJCQkJCQkJAAAJCQAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJAAkJAAkJCQkJAAkJCQkJCQkJCQkAAAkJAAAJCQkAAAkAAAAAAAAJAAAAAAAJCQkJCQkJAAAJCQkJCQkJAAAACQkJCQkAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAACQkJCQkJCQkJCQAAAAAAAAkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAkJCQkJCQkJCQkJCQkJCQAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAkJCQkJCQkJAAAJAAAJCQkJCQkJCQAJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkAAAkJCQkJCQkJCQkJCQAAAAAAAAAAAAkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAkJCQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJAAkJAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAACQAJCQAJCQkJCQkJCQkAAAAAAAAAAAkJCQkJCQkJCQkAAAAAAAAJCQkJCQkACQkACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAJCQAJCQkJCQkAAAAAAAAACQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAkJCQkJCQAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAkJCQkJCQkJCQkACQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkACQkJCQkJCQAJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQAAAAAAAAAAAAAAAAAAAAAACQkJCQAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAkJCQkJCQkJCQkJCQkAAAAJCQkJCQkJCQkAAAAAAAAACQkJCQkJCQkJCQAACQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAACQkJCQkACQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkACQkJCQkJCQkJCQkJCQkJCQkAAAkJCQkJCQkACQkACQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAACQkJCQkJCQkJCQkJCQkAAAkJCQkJCQkJCQkAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkACQkJCQAJCQAJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAkJCQkJCQkJCQkAAAAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAkJAAkAAAkACQkJCQkJCQkJCQAJCQkJAAkACQAAAAAAAAkAAAAACQAJAAkACQkJAAkJAAkAAAkACQAJAAkACQAJCQAJAAAJCQkJAAkJCQkJCQkACQkJCQAJCQkJAAkACQkJCQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQAAAAAACQkJAAkJCQkJAAkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQkJCQkACQkJCQkJCQkJCQkJCQkJAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAACQkJCQkJCQkJAAAAAAAAAAkJAAAAAAAAAAAAAAAAAAAJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAkJCQkJCQkJCQkJCQkJCQkAAAAJCQkJCQkJCQkJCQkJAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAJCQkJCQkJCQkJCQkAAAAACQAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAACQkJCQkJCQkJCQAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAACQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQAACQkJCQkAAAAJCQkJCQAAAAkJCQkJCQkAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAkJCQkJCQkJCQkJAAAAAAAJCQkJCQkAAAAAAAAAAAAACQkJCQkJCQkJCQAAAAAAAAkJCQkJCQkJAAAAAAAAAAAJCQkJCQkJAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAGNyeXB0KCRtb2R1bGUsIHdvcmQsIHNhbHQsIC8pCi0tCgpIYXNoIGEgKndvcmQqIHdpdGggdGhlIGdpdmVuICpzYWx0KiBhbmQgcmV0dXJuIHRoZSBoYXNoZWQgcGFzc3dvcmQuCgoqd29yZCogd2lsbCB1c3VhbGx5IGJlIGEgdXNlcidzIHBhc3N3b3JkLiAgKnNhbHQqIChlaXRoZXIgYSByYW5kb20gMiBvciAxNgpjaGFyYWN0ZXIgc3RyaW5nLCBwb3NzaWJseSBwcmVmaXhlZCB3aXRoICRkaWdpdCQgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZCkKd2lsbCBiZSB1c2VkIHRvIHBlcnR1cmIgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtIGFuZCBwcm9kdWNlIGRpc3RpbmN0CnJlc3VsdHMgZm9yIGEgZ2l2ZW4gKndvcmQqLgAAAABXaW5kb3dzOiBtbWFwKGZpbGVubywgbGVuZ3RoWywgdGFnbmFtZVssIGFjY2Vzc1ssIG9mZnNldF1dXSkKCk1hcHMgbGVuZ3RoIGJ5dGVzIGZyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IHRoZSBmaWxlIGhhbmRsZSBmaWxlbm8sCmFuZCByZXR1cm5zIGEgbW1hcCBvYmplY3QuICBJZiBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlIGN1cnJlbnQgc2l6ZQpvZiB0aGUgZmlsZSwgdGhlIGZpbGUgaXMgZXh0ZW5kZWQgdG8gY29udGFpbiBsZW5ndGggYnl0ZXMuICBJZiBsZW5ndGgKaXMgMCwgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBtYXAgaXMgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgZmlsZSwKZXhjZXB0IHRoYXQgaWYgdGhlIGZpbGUgaXMgZW1wdHkgV2luZG93cyByYWlzZXMgYW4gZXhjZXB0aW9uICh5b3UgY2Fubm90CmNyZWF0ZSBhbiBlbXB0eSBtYXBwaW5nIG9uIFdpbmRvd3MpLgoKVW5peDogbW1hcChmaWxlbm8sIGxlbmd0aFssIGZsYWdzWywgcHJvdFssIGFjY2Vzc1ssIG9mZnNldF1dXV0pCgpNYXBzIGxlbmd0aCBieXRlcyBmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieSB0aGUgZmlsZSBkZXNjcmlwdG9yIGZpbGVubywKYW5kIHJldHVybnMgYSBtbWFwIG9iamVjdC4gIElmIGxlbmd0aCBpcyAwLCB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIG1hcAp3aWxsIGJlIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIGZpbGUgd2hlbiBtbWFwIGlzIGNhbGxlZC4KZmxhZ3Mgc3BlY2lmaWVzIHRoZSBuYXR1cmUgb2YgdGhlIG1hcHBpbmcuIE1BUF9QUklWQVRFIGNyZWF0ZXMgYQpwcml2YXRlIGNvcHktb24td3JpdGUgbWFwcGluZywgc28gY2hhbmdlcyB0byB0aGUgY29udGVudHMgb2YgdGhlIG1tYXAKb2JqZWN0IHdpbGwgYmUgcHJpdmF0ZSB0byB0aGlzIHByb2Nlc3MsIGFuZCBNQVBfU0hBUkVEIGNyZWF0ZXMgYSBtYXBwaW5nCnRoYXQncyBzaGFyZWQgd2l0aCBhbGwgb3RoZXIgcHJvY2Vzc2VzIG1hcHBpbmcgdGhlIHNhbWUgYXJlYXMgb2YgdGhlIGZpbGUuClRoZSBkZWZhdWx0IHZhbHVlIGlzIE1BUF9TSEFSRUQuCgpUbyBtYXAgYW5vbnltb3VzIG1lbW9yeSwgcGFzcyAtMSBhcyB0aGUgZmlsZW5vIChib3RoIHZlcnNpb25zKS4AAAByZWdpc3Rlcigkc2VsZiwgZmQsCiAgICAgICAgIGV2ZW50bWFzaz1zZWxlY3QuUE9MTElOIHwgc2VsZWN0LlBPTExQUkkgfCBzZWxlY3QuUE9MTE9VVCwgLykKLS0KClJlZ2lzdGVyIGEgZmlsZSBkZXNjcmlwdG9yIHdpdGggdGhlIHBvbGxpbmcgb2JqZWN0LgoKICBmZAogICAgZWl0aGVyIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCB3aXRoIGEgZmlsZW5vKCkgbWV0aG9kIHJldHVybmluZyBhbiBpbnQKICBldmVudG1hc2sKICAgIGFuIG9wdGlvbmFsIGJpdG1hc2sgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBldmVudHMgdG8gY2hlY2sgZm9yAAAAAAAAAAAAAAAAAG1vZGlmeSgkc2VsZiwgZmQsIGV2ZW50bWFzaywgLykKLS0KCk1vZGlmeSBhbiBhbHJlYWR5IHJlZ2lzdGVyZWQgZmlsZSBkZXNjcmlwdG9yLgoKICBmZAogICAgZWl0aGVyIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCB3aXRoIGEgZmlsZW5vKCkgbWV0aG9kIHJldHVybmluZwogICAgYW4gaW50CiAgZXZlbnRtYXNrCiAgICBhIGJpdG1hc2sgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBldmVudHMgdG8gY2hlY2sgZm9yAAAAAHVucmVnaXN0ZXIoJHNlbGYsIGZkLCAvKQotLQoKUmVtb3ZlIGEgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRyYWNrZWQgYnkgdGhlIHBvbGxpbmcgb2JqZWN0LgAAAAAAAHBvbGwoJHNlbGYsIHRpbWVvdXQ9Tm9uZSwgLykKLS0KClBvbGxzIHRoZSBzZXQgb2YgcmVnaXN0ZXJlZCBmaWxlIGRlc2NyaXB0b3JzLgoKICB0aW1lb3V0CiAgICBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzLCBvciBlbHNlIE5vbmUgKG9yIGEgbmVnYXRpdmUKICAgIHZhbHVlKSB0byB3YWl0IGluZGVmaW5pdGVseS4KClJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYW55IGRlc2NyaXB0b3JzIHRoYXQgaGF2ZSBldmVudHMgb3IgZXJyb3JzIHRvCnJlcG9ydCwgYXMgYSBsaXN0IG9mIChmZCwgZXZlbnQpIDItdHVwbGVzLgAAAAAAAAAAVGhpcyBtb2R1bGUgc3VwcG9ydHMgYXN5bmNocm9ub3VzIEkvTyBvbiBtdWx0aXBsZSBmaWxlIGRlc2NyaXB0b3JzLgoKKioqIElNUE9SVEFOVCBOT1RJQ0UgKioqCk9uIFdpbmRvd3MsIG9ubHkgc29ja2V0cyBhcmUgc3VwcG9ydGVkOyBvbiBVbml4LCBhbGwgZmlsZSBkZXNjcmlwdG9ycy4AAAAAAAAAAAAAAABzZWxlY3QoJG1vZHVsZSwgcmxpc3QsIHdsaXN0LCB4bGlzdCwgdGltZW91dD1Ob25lLCAvKQotLQoKV2FpdCB1bnRpbCBvbmUgb3IgbW9yZSBmaWxlIGRlc2NyaXB0b3JzIGFyZSByZWFkeSBmb3Igc29tZSBraW5kIG9mIEkvTy4KClRoZSBmaXJzdCB0aHJlZSBhcmd1bWVudHMgYXJlIGl0ZXJhYmxlcyBvZiBmaWxlIGRlc2NyaXB0b3JzIHRvIGJlIHdhaXRlZCBmb3I6CnJsaXN0IC0tIHdhaXQgdW50aWwgcmVhZHkgZm9yIHJlYWRpbmcKd2xpc3QgLS0gd2FpdCB1bnRpbCByZWFkeSBmb3Igd3JpdGluZwp4bGlzdCAtLSB3YWl0IGZvciBhbiAiZXhjZXB0aW9uYWwgY29uZGl0aW9uIgpJZiBvbmx5IG9uZSBraW5kIG9mIGNvbmRpdGlvbiBpcyByZXF1aXJlZCwgcGFzcyBbXSBmb3IgdGhlIG90aGVyIGxpc3RzLgoKQSBmaWxlIGRlc2NyaXB0b3IgaXMgZWl0aGVyIGEgc29ja2V0IG9yIGZpbGUgb2JqZWN0LCBvciBhIHNtYWxsIGludGVnZXIKZ290dGVuIGZyb20gYSBmaWxlbm8oKSBtZXRob2QgY2FsbCBvbiBvbmUgb2YgdGhvc2UuCgpUaGUgb3B0aW9uYWwgNHRoIGFyZ3VtZW50IHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kczsgaXQgbWF5IGJlCmEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIHNwZWNpZnkgZnJhY3Rpb25zIG9mIHNlY29uZHMuICBJZiBpdCBpcyBhYnNlbnQKb3IgTm9uZSwgdGhlIGNhbGwgd2lsbCBuZXZlciB0aW1lIG91dC4KClRoZSByZXR1cm4gdmFsdWUgaXMgYSB0dXBsZSBvZiB0aHJlZSBsaXN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCB0aHJlZQphcmd1bWVudHM7IGVhY2ggY29udGFpbnMgdGhlIHN1YnNldCBvZiB0aGUgY29ycmVzcG9uZGluZyBmaWxlIGRlc2NyaXB0b3JzCnRoYXQgYXJlIHJlYWR5LgoKKioqIElNUE9SVEFOVCBOT1RJQ0UgKioqCk9uIFdpbmRvd3MsIG9ubHkgc29ja2V0cyBhcmUgc3VwcG9ydGVkOyBvbiBVbml4LCBhbGwgZmlsZQpkZXNjcmlwdG9ycyBjYW4gYmUgdXNlZC4AAAAAAAAAAHBvbGwoJG1vZHVsZSwgLykKLS0KClJldHVybnMgYSBwb2xsaW5nIG9iamVjdC4KClRoaXMgb2JqZWN0IHN1cHBvcnRzIHJlZ2lzdGVyaW5nIGFuZCB1bnJlZ2lzdGVyaW5nIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCB0aGVuCnBvbGxpbmcgdGhlbSBmb3IgSS9PIGV2ZW50cy4AAAAAAABzb2NrZXQoZmFtaWx5PUFGX0lORVQsIHR5cGU9U09DS19TVFJFQU0sIHByb3RvPTApIC0+IHNvY2tldCBvYmplY3QKc29ja2V0KGZhbWlseT0tMSwgdHlwZT0tMSwgcHJvdG89LTEsIGZpbGVubz1Ob25lKSAtPiBzb2NrZXQgb2JqZWN0CgpPcGVuIGEgc29ja2V0IG9mIHRoZSBnaXZlbiB0eXBlLiAgVGhlIGZhbWlseSBhcmd1bWVudCBzcGVjaWZpZXMgdGhlCmFkZHJlc3MgZmFtaWx5OyBpdCBkZWZhdWx0cyB0byBBRl9JTkVULiAgVGhlIHR5cGUgYXJndW1lbnQgc3BlY2lmaWVzCndoZXRoZXIgdGhpcyBpcyBhIHN0cmVhbSAoU09DS19TVFJFQU0sIHRoaXMgaXMgdGhlIGRlZmF1bHQpCm9yIGRhdGFncmFtIChTT0NLX0RHUkFNKSBzb2NrZXQuICBUaGUgcHJvdG9jb2wgYXJndW1lbnQgZGVmYXVsdHMgdG8gMCwKc3BlY2lmeWluZyB0aGUgZGVmYXVsdCBwcm90b2NvbC4gIEtleXdvcmQgYXJndW1lbnRzIGFyZSBhY2NlcHRlZC4KVGhlIHNvY2tldCBpcyBjcmVhdGVkIGFzIG5vbi1pbmhlcml0YWJsZS4KCldoZW4gYSBmaWxlbm8gaXMgcGFzc2VkIGluLCBmYW1pbHksIHR5cGUgYW5kIHByb3RvIGFyZSBhdXRvLWRldGVjdGVkLAp1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSBzZXQuCgpBIHNvY2tldCBvYmplY3QgcmVwcmVzZW50cyBvbmUgZW5kcG9pbnQgb2YgYSBuZXR3b3JrIGNvbm5lY3Rpb24uCgpNZXRob2RzIG9mIHNvY2tldCBvYmplY3RzIChrZXl3b3JkIGFyZ3VtZW50cyBub3QgYWxsb3dlZCk6CgpfYWNjZXB0KCkgLS0gYWNjZXB0IGNvbm5lY3Rpb24sIHJldHVybmluZyBuZXcgc29ja2V0IGZkIGFuZCBjbGllbnQgYWRkcmVzcwpiaW5kKGFkZHIpIC0tIGJpbmQgdGhlIHNvY2tldCB0byBhIGxvY2FsIGFkZHJlc3MKY2xvc2UoKSAtLSBjbG9zZSB0aGUgc29ja2V0CmNvbm5lY3QoYWRkcikgLS0gY29ubmVjdCB0aGUgc29ja2V0IHRvIGEgcmVtb3RlIGFkZHJlc3MKY29ubmVjdF9leChhZGRyKSAtLSBjb25uZWN0LCByZXR1cm4gYW4gZXJyb3IgY29kZSBpbnN0ZWFkIG9mIGFuIGV4Y2VwdGlvbgpkdXAoKSAtLSByZXR1cm4gYSBuZXcgc29ja2V0IGZkIGR1cGxpY2F0ZWQgZnJvbSBmaWxlbm8oKQpmaWxlbm8oKSAtLSByZXR1cm4gdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IKZ2V0cGVlcm5hbWUoKSAtLSByZXR1cm4gcmVtb3RlIGFkZHJlc3MgWypdCmdldHNvY2tuYW1lKCkgLS0gcmV0dXJuIGxvY2FsIGFkZHJlc3MKZ2V0c29ja29wdChsZXZlbCwgb3B0bmFtZVssIGJ1Zmxlbl0pIC0tIGdldCBzb2NrZXQgb3B0aW9ucwpnZXR0aW1lb3V0KCkgLS0gcmV0dXJuIHRpbWVvdXQgb3IgTm9uZQpsaXN0ZW4oW25dKSAtLSBzdGFydCBsaXN0ZW5pbmcgZm9yIGluY29taW5nIGNvbm5lY3Rpb25zCnJlY3YoYnVmbGVuWywgZmxhZ3NdKSAtLSByZWNlaXZlIGRhdGEKcmVjdl9pbnRvKGJ1ZmZlclssIG5ieXRlc1ssIGZsYWdzXV0pIC0tIHJlY2VpdmUgZGF0YSAoaW50byBhIGJ1ZmZlcikKcmVjdmZyb20oYnVmbGVuWywgZmxhZ3NdKSAtLSByZWNlaXZlIGRhdGEgYW5kIHNlbmRlcidzIGFkZHJlc3MKcmVjdmZyb21faW50byhidWZmZXJbLCBuYnl0ZXMsIFssIGZsYWdzXSkKICAtLSByZWNlaXZlIGRhdGEgYW5kIHNlbmRlcidzIGFkZHJlc3MgKGludG8gYSBidWZmZXIpCnNlbmRhbGwoZGF0YVssIGZsYWdzXSkgLS0gc2VuZCBhbGwgZGF0YQpzZW5kKGRhdGFbLCBmbGFnc10pIC0tIHNlbmQgZGF0YSwgbWF5IG5vdCBzZW5kIGFsbCBvZiBpdApzZW5kdG8oZGF0YVssIGZsYWdzXSwgYWRkcikgLS0gc2VuZCBkYXRhIHRvIGEgZ2l2ZW4gYWRkcmVzcwpzZXRibG9ja2luZyhib29sKSAtLSBzZXQgb3IgY2xlYXIgdGhlIGJsb2NraW5nIEkvTyBmbGFnCmdldGJsb2NraW5nKCkgLS0gcmV0dXJuIFRydWUgaWYgc29ja2V0IGlzIGJsb2NraW5nLCBGYWxzZSBpZiBub24tYmxvY2tpbmcKc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWVbLCBvcHRsZW5dKSAtLSBzZXQgc29ja2V0IG9wdGlvbnMKc2V0dGltZW91dChOb25lIHwgZmxvYXQpIC0tIHNldCBvciBjbGVhciB0aGUgdGltZW91dApzaHV0ZG93bihob3cpIC0tIHNodXQgZG93biB0cmFmZmljIGluIG9uZSBvciBib3RoIGRpcmVjdGlvbnMKCiBbKl0gbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIQAAAAAAAAAAAAAAAF9hY2NlcHQoKSAtPiAoaW50ZWdlciwgYWRkcmVzcyBpbmZvKQoKV2FpdCBmb3IgYW4gaW5jb21pbmcgY29ubmVjdGlvbi4gIFJldHVybiBhIG5ldyBzb2NrZXQgZmlsZSBkZXNjcmlwdG9yCnJlcHJlc2VudGluZyB0aGUgY29ubmVjdGlvbiwgYW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBjbGllbnQuCkZvciBJUCBzb2NrZXRzLCB0aGUgYWRkcmVzcyBpbmZvIGlzIGEgcGFpciAoaG9zdGFkZHIsIHBvcnQpLgAAAAAAAAAAAAAAAGJpbmQoYWRkcmVzcykKCkJpbmQgdGhlIHNvY2tldCB0byBhIGxvY2FsIGFkZHJlc3MuICBGb3IgSVAgc29ja2V0cywgdGhlIGFkZHJlc3MgaXMgYQpwYWlyIChob3N0LCBwb3J0KTsgdGhlIGhvc3QgbXVzdCByZWZlciB0byB0aGUgbG9jYWwgaG9zdC4gRm9yIHJhdyBwYWNrZXQKc29ja2V0cyB0aGUgYWRkcmVzcyBpcyBhIHR1cGxlIChpZm5hbWUsIHByb3RvIFsscGt0dHlwZSBbLGhhdHlwZSBbLGFkZHJdXV0pAAAAAAAAAGNsb3NlKCkKCkNsb3NlIHRoZSBzb2NrZXQuICBJdCBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzIGNhbGwuAABjb25uZWN0KGFkZHJlc3MpCgpDb25uZWN0IHRoZSBzb2NrZXQgdG8gYSByZW1vdGUgYWRkcmVzcy4gIEZvciBJUCBzb2NrZXRzLCB0aGUgYWRkcmVzcwppcyBhIHBhaXIgKGhvc3QsIHBvcnQpLgAAY29ubmVjdF9leChhZGRyZXNzKSAtPiBlcnJubwoKVGhpcyBpcyBsaWtlIGNvbm5lY3QoYWRkcmVzcyksIGJ1dCByZXR1cm5zIGFuIGVycm9yIGNvZGUgKHRoZSBlcnJubyB2YWx1ZSkKaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbiB3aGVuIGFuIGVycm9yIG9jY3Vycy4AAGRldGFjaCgpCgpDbG9zZSB0aGUgc29ja2V0IG9iamVjdCB3aXRob3V0IGNsb3NpbmcgdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yLgpUaGUgb2JqZWN0IGNhbm5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgY2FsbCwgYnV0IHRoZSBmaWxlIGRlc2NyaXB0b3IKY2FuIGJlIHJldXNlZCBmb3Igb3RoZXIgcHVycG9zZXMuICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIHJldHVybmVkLgAAAAAAAAAAZmlsZW5vKCkgLT4gaW50ZWdlcgoKUmV0dXJuIHRoZSBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgc29ja2V0LgAAAAAAAAAAAABnZXRwZWVybmFtZSgpIC0+IGFkZHJlc3MgaW5mbwoKUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSByZW1vdGUgZW5kcG9pbnQuICBGb3IgSVAgc29ja2V0cywgdGhlIGFkZHJlc3MKaW5mbyBpcyBhIHBhaXIgKGhvc3RhZGRyLCBwb3J0KS4AAAAAAAAAAABnZXRzb2NrbmFtZSgpIC0+IGFkZHJlc3MgaW5mbwoKUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBsb2NhbCBlbmRwb2ludC4gVGhlIGZvcm1hdCBkZXBlbmRzIG9uIHRoZQphZGRyZXNzIGZhbWlseS4gRm9yIElQdjQgc29ja2V0cywgdGhlIGFkZHJlc3MgaW5mbyBpcyBhIHBhaXIKKGhvc3RhZGRyLCBwb3J0KS4AAAAAAAAAAAAAAAAAAABnZXRzb2Nrb3B0KGxldmVsLCBvcHRpb25bLCBidWZmZXJzaXplXSkgLT4gdmFsdWUKCkdldCBhIHNvY2tldCBvcHRpb24uICBTZWUgdGhlIFVuaXggbWFudWFsIGZvciBsZXZlbCBhbmQgb3B0aW9uLgpJZiBhIG5vbnplcm8gYnVmZmVyc2l6ZSBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIHJldHVybiB2YWx1ZSBpcyBhCnN0cmluZyBvZiB0aGF0IGxlbmd0aDsgb3RoZXJ3aXNlIGl0IGlzIGFuIGludGVnZXIuAAAAAAAAAAAAAABsaXN0ZW4oW2JhY2tsb2ddKQoKRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmIGJhY2tsb2cgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlCmF0IGxlYXN0IDAgKGlmIGl0IGlzIGxvd2VyLCBpdCBpcyBzZXQgdG8gMCk7IGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCnVuYWNjZXB0ZWQgY29ubmVjdGlvbnMgdGhhdCB0aGUgc3lzdGVtIHdpbGwgYWxsb3cgYmVmb3JlIHJlZnVzaW5nIG5ldwpjb25uZWN0aW9ucy4gSWYgbm90IHNwZWNpZmllZCwgYSBkZWZhdWx0IHJlYXNvbmFibGUgdmFsdWUgaXMgY2hvc2VuLgAAAAAAAAAAAAAAAAAAAHJlY3YoYnVmZmVyc2l6ZVssIGZsYWdzXSkgLT4gZGF0YQoKUmVjZWl2ZSB1cCB0byBidWZmZXJzaXplIGJ5dGVzIGZyb20gdGhlIHNvY2tldC4gIEZvciB0aGUgb3B0aW9uYWwgZmxhZ3MKYXJndW1lbnQsIHNlZSB0aGUgVW5peCBtYW51YWwuICBXaGVuIG5vIGRhdGEgaXMgYXZhaWxhYmxlLCBibG9jayB1bnRpbAphdCBsZWFzdCBvbmUgYnl0ZSBpcyBhdmFpbGFibGUgb3IgdW50aWwgdGhlIHJlbW90ZSBlbmQgaXMgY2xvc2VkLiAgV2hlbgp0aGUgcmVtb3RlIGVuZCBpcyBjbG9zZWQgYW5kIGFsbCBkYXRhIGlzIHJlYWQsIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nLgAAAAAAAAAAAAAAAAAAAHJlY3ZfaW50byhidWZmZXIsIFtuYnl0ZXNbLCBmbGFnc11dKSAtPiBuYnl0ZXNfcmVhZAoKQSB2ZXJzaW9uIG9mIHJlY3YoKSB0aGF0IHN0b3JlcyBpdHMgZGF0YSBpbnRvIGEgYnVmZmVyIHJhdGhlciB0aGFuIGNyZWF0aW5nCmEgbmV3IHN0cmluZy4gIFJlY2VpdmUgdXAgdG8gYnVmZmVyc2l6ZSBieXRlcyBmcm9tIHRoZSBzb2NrZXQuICBJZiBidWZmZXJzaXplCmlzIG5vdCBzcGVjaWZpZWQgKG9yIDApLCByZWNlaXZlIHVwIHRvIHRoZSBzaXplIGF2YWlsYWJsZSBpbiB0aGUgZ2l2ZW4gYnVmZmVyLgoKU2VlIHJlY3YoKSBmb3IgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgZmxhZ3MuAAAAAHJlY3Zmcm9tKGJ1ZmZlcnNpemVbLCBmbGFnc10pIC0+IChkYXRhLCBhZGRyZXNzIGluZm8pCgpMaWtlIHJlY3YoYnVmZmVyc2l6ZSwgZmxhZ3MpIGJ1dCBhbHNvIHJldHVybiB0aGUgc2VuZGVyJ3MgYWRkcmVzcyBpbmZvLgAAcmVjdmZyb21faW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKSAtPiAobmJ5dGVzLCBhZGRyZXNzIGluZm8pCgpMaWtlIHJlY3ZfaW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKSBidXQgYWxzbyByZXR1cm4gdGhlIHNlbmRlcidzIGFkZHJlc3MgaW5mby4AAAAAAAAAAHNlbmQoZGF0YVssIGZsYWdzXSkgLT4gY291bnQKClNlbmQgYSBkYXRhIHN0cmluZyB0byB0aGUgc29ja2V0LiAgRm9yIHRoZSBvcHRpb25hbCBmbGFncwphcmd1bWVudCwgc2VlIHRoZSBVbml4IG1hbnVhbC4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzCnNlbnQ7IHRoaXMgbWF5IGJlIGxlc3MgdGhhbiBsZW4oZGF0YSkgaWYgdGhlIG5ldHdvcmsgaXMgYnVzeS4AAAAAAAAAAAAAAAAAAAAAc2VuZGFsbChkYXRhWywgZmxhZ3NdKQoKU2VuZCBhIGRhdGEgc3RyaW5nIHRvIHRoZSBzb2NrZXQuICBGb3IgdGhlIG9wdGlvbmFsIGZsYWdzCmFyZ3VtZW50LCBzZWUgdGhlIFVuaXggbWFudWFsLiAgVGhpcyBjYWxscyBzZW5kKCkgcmVwZWF0ZWRseQp1bnRpbCBhbGwgZGF0YSBpcyBzZW50LiAgSWYgYW4gZXJyb3Igb2NjdXJzLCBpdCdzIGltcG9zc2libGUKdG8gdGVsbCBob3cgbXVjaCBkYXRhIGhhcyBiZWVuIHNlbnQuAAAAAAAAAAAAAAAAAAAAAHNlbmR0byhkYXRhWywgZmxhZ3NdLCBhZGRyZXNzKSAtPiBjb3VudAoKTGlrZSBzZW5kKGRhdGEsIGZsYWdzKSBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MuCkZvciBJUCBzb2NrZXRzLCB0aGUgYWRkcmVzcyBpcyBhIHBhaXIgKGhvc3RhZGRyLCBwb3J0KS4AAAAAAAAAAAAAc2V0YmxvY2tpbmcoZmxhZykKClNldCB0aGUgc29ja2V0IHRvIGJsb2NraW5nIChmbGFnIGlzIHRydWUpIG9yIG5vbi1ibG9ja2luZyAoZmFsc2UpLgpzZXRibG9ja2luZyhUcnVlKSBpcyBlcXVpdmFsZW50IHRvIHNldHRpbWVvdXQoTm9uZSk7CnNldGJsb2NraW5nKEZhbHNlKSBpcyBlcXVpdmFsZW50IHRvIHNldHRpbWVvdXQoMC4wKS4AZ2V0YmxvY2tpbmcoKQoKUmV0dXJucyBUcnVlIGlmIHNvY2tldCBpcyBpbiBibG9ja2luZyBtb2RlLCBvciBGYWxzZSBpZiBpdAppcyBpbiBub24tYmxvY2tpbmcgbW9kZS4AAAAAAAAAAAAAAAAAAHNldHRpbWVvdXQodGltZW91dCkKClNldCBhIHRpbWVvdXQgb24gc29ja2V0IG9wZXJhdGlvbnMuICAndGltZW91dCcgY2FuIGJlIGEgZmxvYXQsCmdpdmluZyBpbiBzZWNvbmRzLCBvciBOb25lLiAgU2V0dGluZyBhIHRpbWVvdXQgb2YgTm9uZSBkaXNhYmxlcwp0aGUgdGltZW91dCBmZWF0dXJlIGFuZCBpcyBlcXVpdmFsZW50IHRvIHNldGJsb2NraW5nKDEpLgpTZXR0aW5nIGEgdGltZW91dCBvZiB6ZXJvIGlzIHRoZSBzYW1lIGFzIHNldGJsb2NraW5nKDApLgAAAAAAAAAAAAAAZ2V0dGltZW91dCgpIC0+IHRpbWVvdXQKClJldHVybnMgdGhlIHRpbWVvdXQgaW4gc2Vjb25kcyAoZmxvYXQpIGFzc29jaWF0ZWQgd2l0aCBzb2NrZXQKb3BlcmF0aW9ucy4gQSB0aW1lb3V0IG9mIE5vbmUgaW5kaWNhdGVzIHRoYXQgdGltZW91dHMgb24gc29ja2V0Cm9wZXJhdGlvbnMgYXJlIGRpc2FibGVkLgBzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlOiBpbnQpCnNldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWU6IGJ1ZmZlcikKc2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCBOb25lLCBvcHRsZW46IGludCkKClNldCBhIHNvY2tldCBvcHRpb24uICBTZWUgdGhlIFVuaXggbWFudWFsIGZvciBsZXZlbCBhbmQgb3B0aW9uLgpUaGUgdmFsdWUgYXJndW1lbnQgY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyLCBhIHN0cmluZyBidWZmZXIsIG9yCk5vbmUsIG9wdGxlbi4AAAAAAHJlY3Ztc2coYnVmc2l6ZVssIGFuY2J1ZnNpemVbLCBmbGFnc11dKSAtPiAoZGF0YSwgYW5jZGF0YSwgbXNnX2ZsYWdzLCBhZGRyZXNzKQoKUmVjZWl2ZSBub3JtYWwgZGF0YSAodXAgdG8gYnVmc2l6ZSBieXRlcykgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20gdGhlCnNvY2tldC4gIFRoZSBhbmNidWZzaXplIGFyZ3VtZW50IHNldHMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlCmludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cyB0byAwLAptZWFuaW5nIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgd2lsbCBiZSByZWNlaXZlZC4gIEFwcHJvcHJpYXRlIGJ1ZmZlcgpzaXplcyBmb3IgYW5jaWxsYXJ5IGRhdGEgY2FuIGJlIGNhbGN1bGF0ZWQgdXNpbmcgQ01TR19TUEFDRSgpIG9yCkNNU0dfTEVOKCksIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0IGludG8gdGhlIGJ1ZmZlciBtaWdodCBiZQp0cnVuY2F0ZWQgb3IgZGlzY2FyZGVkLiAgVGhlIGZsYWdzIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGUKc2FtZSBtZWFuaW5nIGFzIGZvciByZWN2KCkuCgpUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykuClRoZSBkYXRhIGl0ZW0gaXMgYSBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhCnJlY2VpdmVkLiAgVGhlIGFuY2RhdGEgaXRlbSBpcyBhIGxpc3Qgb2YgemVybyBvciBtb3JlIHR1cGxlcwooY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpIHJlcHJlc2VudGluZyB0aGUgYW5jaWxsYXJ5IGRhdGEKKGNvbnRyb2wgbWVzc2FnZXMpIHJlY2VpdmVkOiBjbXNnX2xldmVsIGFuZCBjbXNnX3R5cGUgYXJlIGludGVnZXJzCnNwZWNpZnlpbmcgdGhlIHByb3RvY29sIGxldmVsIGFuZCBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwKYW5kIGNtc2dfZGF0YSBpcyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGUKbXNnX2ZsYWdzIGl0ZW0gaXMgdGhlIGJpdHdpc2UgT1Igb2YgdmFyaW91cyBmbGFncyBpbmRpY2F0aW5nCmNvbmRpdGlvbnMgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2U7IHNlZSB5b3VyIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvcgpkZXRhaWxzLiAgSWYgdGhlIHJlY2VpdmluZyBzb2NrZXQgaXMgdW5jb25uZWN0ZWQsIGFkZHJlc3MgaXMgdGhlCmFkZHJlc3Mgb2YgdGhlIHNlbmRpbmcgc29ja2V0LCBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSwgaXRzIHZhbHVlIGlzCnVuc3BlY2lmaWVkLgoKSWYgcmVjdm1zZygpIHJhaXNlcyBhbiBleGNlcHRpb24gYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsIHJldHVybnMsIGl0CndpbGwgZmlyc3QgYXR0ZW1wdCB0byBjbG9zZSBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEgdGhlClNDTV9SSUdIVFMgbWVjaGFuaXNtLgAAAAAAAAAAAAAAAHJlY3Ztc2dfaW50byhidWZmZXJzWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIC0+IChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykKClJlY2VpdmUgbm9ybWFsIGRhdGEgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20gdGhlIHNvY2tldCwgc2NhdHRlcmluZyB0aGUKbm9uLWFuY2lsbGFyeSBkYXRhIGludG8gYSBzZXJpZXMgb2YgYnVmZmVycy4gIFRoZSBidWZmZXJzIGFyZ3VtZW50Cm11c3QgYmUgYW4gaXRlcmFibGUgb2Ygb2JqZWN0cyB0aGF0IGV4cG9ydCB3cml0YWJsZSBidWZmZXJzCihlLmcuIGJ5dGVhcnJheSBvYmplY3RzKTsgdGhlc2Ugd2lsbCBiZSBmaWxsZWQgd2l0aCBzdWNjZXNzaXZlIGNodW5rcwpvZiB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhIHVudGlsIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuIG9yIHRoZXJlIGFyZQpubyBtb3JlIGJ1ZmZlcnMuICBUaGUgYW5jYnVmc2l6ZSBhcmd1bWVudCBzZXRzIHRoZSBzaXplIGluIGJ5dGVzIG9mCnRoZSBpbnRlcm5hbCBidWZmZXIgdXNlZCB0byByZWNlaXZlIHRoZSBhbmNpbGxhcnkgZGF0YTsgaXQgZGVmYXVsdHMgdG8KMCwgbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZQpidWZmZXIgc2l6ZXMgZm9yIGFuY2lsbGFyeSBkYXRhIGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIENNU0dfU1BBQ0UoKQpvciBDTVNHX0xFTigpLCBhbmQgaXRlbXMgd2hpY2ggZG8gbm90IGZpdCBpbnRvIHRoZSBidWZmZXIgbWlnaHQgYmUKdHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSBmbGFncyBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlCnNhbWUgbWVhbmluZyBhcyBmb3IgcmVjdigpLgoKVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykuClRoZSBuYnl0ZXMgaXRlbSBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG9mIG5vbi1hbmNpbGxhcnkgZGF0YQp3cml0dGVuIGludG8gdGhlIGJ1ZmZlcnMuICBUaGUgYW5jZGF0YSBpdGVtIGlzIGEgbGlzdCBvZiB6ZXJvIG9yIG1vcmUKdHVwbGVzIChjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSkgcmVwcmVzZW50aW5nIHRoZSBhbmNpbGxhcnkKZGF0YSAoY29udHJvbCBtZXNzYWdlcykgcmVjZWl2ZWQ6IGNtc2dfbGV2ZWwgYW5kIGNtc2dfdHlwZSBhcmUKaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGUKcmVzcGVjdGl2ZWx5LCBhbmQgY21zZ19kYXRhIGlzIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIGFzc29jaWF0ZWQKZGF0YS4gIFRoZSBtc2dfZmxhZ3MgaXRlbSBpcyB0aGUgYml0d2lzZSBPUiBvZiB2YXJpb3VzIGZsYWdzCmluZGljYXRpbmcgY29uZGl0aW9ucyBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZTsgc2VlIHlvdXIgc3lzdGVtCmRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuICBJZiB0aGUgcmVjZWl2aW5nIHNvY2tldCBpcyB1bmNvbm5lY3RlZCwKYWRkcmVzcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgc2VuZGluZyBzb2NrZXQsIGlmIGF2YWlsYWJsZTsgb3RoZXJ3aXNlLAppdHMgdmFsdWUgaXMgdW5zcGVjaWZpZWQuCgpJZiByZWN2bXNnX2ludG8oKSByYWlzZXMgYW4gZXhjZXB0aW9uIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbCByZXR1cm5zLAppdCB3aWxsIGZpcnN0IGF0dGVtcHQgdG8gY2xvc2UgYW55IGZpbGUgZGVzY3JpcHRvcnMgcmVjZWl2ZWQgdmlhIHRoZQpTQ01fUklHSFRTIG1lY2hhbmlzbS4AAAAAAABzZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKSAtPiBjb3VudAoKU2VuZCBub3JtYWwgYW5kIGFuY2lsbGFyeSBkYXRhIHRvIHRoZSBzb2NrZXQsIGdhdGhlcmluZyB0aGUKbm9uLWFuY2lsbGFyeSBkYXRhIGZyb20gYSBzZXJpZXMgb2YgYnVmZmVycyBhbmQgY29uY2F0ZW5hdGluZyBpdCBpbnRvCmEgc2luZ2xlIG1lc3NhZ2UuICBUaGUgYnVmZmVycyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG5vbi1hbmNpbGxhcnkKZGF0YSBhcyBhbiBpdGVyYWJsZSBvZiBieXRlcy1saWtlIG9iamVjdHMgKGUuZy4gYnl0ZXMgb2JqZWN0cykuClRoZSBhbmNkYXRhIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgYW5jaWxsYXJ5IGRhdGEgKGNvbnRyb2wgbWVzc2FnZXMpCmFzIGFuIGl0ZXJhYmxlIG9mIHplcm8gb3IgbW9yZSB0dXBsZXMgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwKY21zZ19kYXRhKSwgd2hlcmUgY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZQpwcm90b2NvbCBsZXZlbCBhbmQgcHJvdG9jb2wtc3BlY2lmaWMgdHlwZSByZXNwZWN0aXZlbHksIGFuZCBjbXNnX2RhdGEKaXMgYSBieXRlcy1saWtlIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGUgZmxhZ3MKYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIHNlbmQoKS4gIElmCmFkZHJlc3MgaXMgc3VwcGxpZWQgYW5kIG5vdCBOb25lLCBpdCBzZXRzIGEgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IKdGhlIG1lc3NhZ2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeQpkYXRhIHNlbnQuAAAAAAAAAAAASW1wbGVtZW50YXRpb24gbW9kdWxlIGZvciBzb2NrZXQgb3BlcmF0aW9ucy4KClNlZSB0aGUgc29ja2V0IG1vZHVsZSBmb3IgZG9jdW1lbnRhdGlvbi4AAAAAAAAAAAAAZ2V0aG9zdGJ5bmFtZShob3N0KSAtPiBhZGRyZXNzCgpSZXR1cm4gdGhlIElQIGFkZHJlc3MgKGEgc3RyaW5nIG9mIHRoZSBmb3JtICcyNTUuMjU1LjI1NS4yNTUnKSBmb3IgYSBob3N0LgAAAAAAAGdldGhvc3RieW5hbWVfZXgoaG9zdCkgLT4gKG5hbWUsIGFsaWFzbGlzdCwgYWRkcmVzc2xpc3QpCgpSZXR1cm4gdGhlIHRydWUgaG9zdCBuYW1lLCBhIGxpc3Qgb2YgYWxpYXNlcywgYW5kIGEgbGlzdCBvZiBJUCBhZGRyZXNzZXMsCmZvciBhIGhvc3QuICBUaGUgaG9zdCBhcmd1bWVudCBpcyBhIHN0cmluZyBnaXZpbmcgYSBob3N0IG5hbWUgb3IgSVAgbnVtYmVyLgBnZXRob3N0YnlhZGRyKGhvc3QpIC0+IChuYW1lLCBhbGlhc2xpc3QsIGFkZHJlc3NsaXN0KQoKUmV0dXJuIHRoZSB0cnVlIGhvc3QgbmFtZSwgYSBsaXN0IG9mIGFsaWFzZXMsIGFuZCBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzLApmb3IgYSBob3N0LiAgVGhlIGhvc3QgYXJndW1lbnQgaXMgYSBzdHJpbmcgZ2l2aW5nIGEgaG9zdCBuYW1lIG9yIElQIG51bWJlci4AAAAAZ2V0aG9zdG5hbWUoKSAtPiBzdHJpbmcKClJldHVybiB0aGUgY3VycmVudCBob3N0IG5hbWUuAAAAAAAAAAAAAGdldHNlcnZieW5hbWUoc2VydmljZW5hbWVbLCBwcm90b2NvbG5hbWVdKSAtPiBpbnRlZ2VyCgpSZXR1cm4gYSBwb3J0IG51bWJlciBmcm9tIGEgc2VydmljZSBuYW1lIGFuZCBwcm90b2NvbCBuYW1lLgpUaGUgb3B0aW9uYWwgcHJvdG9jb2wgbmFtZSwgaWYgZ2l2ZW4sIHNob3VsZCBiZSAndGNwJyBvciAndWRwJywKb3RoZXJ3aXNlIGFueSBwcm90b2NvbCB3aWxsIG1hdGNoLgAAAAAAAAAAAAAAZ2V0c2VydmJ5cG9ydChwb3J0WywgcHJvdG9jb2xuYW1lXSkgLT4gc3RyaW5nCgpSZXR1cm4gdGhlIHNlcnZpY2UgbmFtZSBmcm9tIGEgcG9ydCBudW1iZXIgYW5kIHByb3RvY29sIG5hbWUuClRoZSBvcHRpb25hbCBwcm90b2NvbCBuYW1lLCBpZiBnaXZlbiwgc2hvdWxkIGJlICd0Y3AnIG9yICd1ZHAnLApvdGhlcndpc2UgYW55IHByb3RvY29sIHdpbGwgbWF0Y2guAGdldHByb3RvYnluYW1lKG5hbWUpIC0+IGludGVnZXIKClJldHVybiB0aGUgcHJvdG9jb2wgbnVtYmVyIGZvciB0aGUgbmFtZWQgcHJvdG9jb2wuICAoUmFyZWx5IHVzZWQuKQAAAAAAAAAAAAAAAABjbG9zZShpbnRlZ2VyKSAtPiBOb25lCgpDbG9zZSBhbiBpbnRlZ2VyIHNvY2tldCBmaWxlIGRlc2NyaXB0b3IuICBUaGlzIGlzIGxpa2Ugb3MuY2xvc2UoKSwgYnV0IGZvcgpzb2NrZXRzOyBvbiBzb21lIHBsYXRmb3JtcyBvcy5jbG9zZSgpIHdvbid0IHdvcmsgZm9yIHNvY2tldCBmaWxlIGRlc2NyaXB0b3JzLgAAAAAAAAAAAAAAAAAAAABkdXAoaW50ZWdlcikgLT4gaW50ZWdlcgoKRHVwbGljYXRlIGFuIGludGVnZXIgc29ja2V0IGZpbGUgZGVzY3JpcHRvci4gIFRoaXMgaXMgbGlrZSBvcy5kdXAoKSwgYnV0IGZvcgpzb2NrZXRzOyBvbiBzb21lIHBsYXRmb3JtcyBvcy5kdXAoKSB3b24ndCB3b3JrIGZvciBzb2NrZXQgZmlsZSBkZXNjcmlwdG9ycy4AAAAAAAAAAAAAAAAAAABudG9ocyhpbnRlZ2VyKSAtPiBpbnRlZ2VyCgpDb252ZXJ0IGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgZnJvbSBuZXR3b3JrIHRvIGhvc3QgYnl0ZSBvcmRlci4AAABudG9obChpbnRlZ2VyKSAtPiBpbnRlZ2VyCgpDb252ZXJ0IGEgMzItYml0IGludGVnZXIgZnJvbSBuZXR3b3JrIHRvIGhvc3QgYnl0ZSBvcmRlci4AAAAAAAAAAAAAAABodG9ucyhpbnRlZ2VyKSAtPiBpbnRlZ2VyCgpDb252ZXJ0IGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgZnJvbSBob3N0IHRvIG5ldHdvcmsgYnl0ZSBvcmRlci4AAABodG9ubChpbnRlZ2VyKSAtPiBpbnRlZ2VyCgpDb252ZXJ0IGEgMzItYml0IGludGVnZXIgZnJvbSBob3N0IHRvIG5ldHdvcmsgYnl0ZSBvcmRlci4AAAAAAAAAAAAAAABpbmV0X2F0b24oc3RyaW5nKSAtPiBieXRlcyBnaXZpbmcgcGFja2VkIDMyLWJpdCBJUCByZXByZXNlbnRhdGlvbgoKQ29udmVydCBhbiBJUCBhZGRyZXNzIGluIHN0cmluZyBmb3JtYXQgKDEyMy40NS42Ny44OSkgdG8gdGhlIDMyLWJpdCBwYWNrZWQKYmluYXJ5IGZvcm1hdCB1c2VkIGluIGxvdy1sZXZlbCBuZXR3b3JrIGZ1bmN0aW9ucy4AAAAAAAAAAAAAAAAAAAAAaW5ldF9udG9hKHBhY2tlZF9pcCkgLT4gaXBfYWRkcmVzc19zdHJpbmcKCkNvbnZlcnQgYW4gSVAgYWRkcmVzcyBmcm9tIDMyLWJpdCBwYWNrZWQgYmluYXJ5IGZvcm1hdCB0byBzdHJpbmcgZm9ybWF0AAAAAAAAAAAAAAAAAABpbmV0X3B0b24oYWYsIGlwKSAtPiBwYWNrZWQgSVAgYWRkcmVzcyBzdHJpbmcKCkNvbnZlcnQgYW4gSVAgYWRkcmVzcyBmcm9tIHN0cmluZyBmb3JtYXQgdG8gYSBwYWNrZWQgc3RyaW5nIHN1aXRhYmxlCmZvciB1c2Ugd2l0aCBsb3ctbGV2ZWwgbmV0d29yayBmdW5jdGlvbnMuAAAAaW5ldF9udG9wKGFmLCBwYWNrZWRfaXApIC0+IHN0cmluZyBmb3JtYXR0ZWQgSVAgYWRkcmVzcwoKQ29udmVydCBhIHBhY2tlZCBJUCBhZGRyZXNzIG9mIHRoZSBnaXZlbiBmYW1pbHkgdG8gc3RyaW5nIGZvcm1hdC4AAAAAAABnZXRhZGRyaW5mbyhob3N0LCBwb3J0IFssIGZhbWlseSwgdHlwZSwgcHJvdG8sIGZsYWdzXSkKICAgIC0+IGxpc3Qgb2YgKGZhbWlseSwgdHlwZSwgcHJvdG8sIGNhbm9ubmFtZSwgc29ja2FkZHIpCgpSZXNvbHZlIGhvc3QgYW5kIHBvcnQgaW50byBhZGRyaW5mbyBzdHJ1Y3QuAAAAZ2V0bmFtZWluZm8oc29ja2FkZHIsIGZsYWdzKSAtLT4gKGhvc3QsIHBvcnQpCgpHZXQgaG9zdCBhbmQgcG9ydCBmb3IgYSBzb2NrYWRkci4AAAAAAAAAAAAAAAAAAAAAZ2V0ZGVmYXVsdHRpbWVvdXQoKSAtPiB0aW1lb3V0CgpSZXR1cm5zIHRoZSBkZWZhdWx0IHRpbWVvdXQgaW4gc2Vjb25kcyAoZmxvYXQpIGZvciBuZXcgc29ja2V0IG9iamVjdHMuCkEgdmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgdGhhdCBuZXcgc29ja2V0IG9iamVjdHMgaGF2ZSBubyB0aW1lb3V0LgpXaGVuIHRoZSBzb2NrZXQgbW9kdWxlIGlzIGZpcnN0IGltcG9ydGVkLCB0aGUgZGVmYXVsdCBpcyBOb25lLgAAAAAAAAAAc2V0ZGVmYXVsdHRpbWVvdXQodGltZW91dCkKClNldCB0aGUgZGVmYXVsdCB0aW1lb3V0IGluIHNlY29uZHMgKGZsb2F0KSBmb3IgbmV3IHNvY2tldCBvYmplY3RzLgpBIHZhbHVlIG9mIE5vbmUgaW5kaWNhdGVzIHRoYXQgbmV3IHNvY2tldCBvYmplY3RzIGhhdmUgbm8gdGltZW91dC4KV2hlbiB0aGUgc29ja2V0IG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgdGhlIGRlZmF1bHQgaXMgTm9uZS4AAAAAAAAAAAAAAAAAAAAAQ01TR19MRU4obGVuZ3RoKSAtPiBjb250cm9sIG1lc3NhZ2UgbGVuZ3RoCgpSZXR1cm4gdGhlIHRvdGFsIGxlbmd0aCwgd2l0aG91dCB0cmFpbGluZyBwYWRkaW5nLCBvZiBhbiBhbmNpbGxhcnkKZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbiBsZW5ndGguICBUaGlzIHZhbHVlIGNhbgpvZnRlbiBiZSB1c2VkIGFzIHRoZSBidWZmZXIgc2l6ZSBmb3IgcmVjdm1zZygpIHRvIHJlY2VpdmUgYSBzaW5nbGUKaXRlbSBvZiBhbmNpbGxhcnkgZGF0YSwgYnV0IFJGQyAzNTQyIHJlcXVpcmVzIHBvcnRhYmxlIGFwcGxpY2F0aW9ucyB0bwp1c2UgQ01TR19TUEFDRSgpIGFuZCB0aHVzIGluY2x1ZGUgc3BhY2UgZm9yIHBhZGRpbmcsIGV2ZW4gd2hlbiB0aGUKaXRlbSB3aWxsIGJlIHRoZSBsYXN0IGluIHRoZSBidWZmZXIuICBSYWlzZXMgT3ZlcmZsb3dFcnJvciBpZiBsZW5ndGgKaXMgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgcmFuZ2Ugb2YgdmFsdWVzLgAAAAAAAAAAAAAAAAAAAABDTVNHX1NQQUNFKGxlbmd0aCkgLT4gYnVmZmVyIHNpemUKClJldHVybiB0aGUgYnVmZmVyIHNpemUgbmVlZGVkIGZvciByZWN2bXNnKCkgdG8gcmVjZWl2ZSBhbiBhbmNpbGxhcnkKZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbiBsZW5ndGgsIGFsb25nIHdpdGggYW55CnRyYWlsaW5nIHBhZGRpbmcuICBUaGUgYnVmZmVyIHNwYWNlIG5lZWRlZCB0byByZWNlaXZlIG11bHRpcGxlIGl0ZW1zCmlzIHRoZSBzdW0gb2YgdGhlIENNU0dfU1BBQ0UoKSB2YWx1ZXMgZm9yIHRoZWlyIGFzc29jaWF0ZWQgZGF0YQpsZW5ndGhzLiAgUmFpc2VzIE92ZXJmbG93RXJyb3IgaWYgbGVuZ3RoIGlzIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlCnJhbmdlIG9mIHZhbHVlcy4AAAAAAAAAAAAAAAAAYWxsb3cgcHJvZ3JhbW1lciB0byBkZWZpbmUgbXVsdGlwbGUgZXhpdCBmdW5jdGlvbnMgdG8gYmUgZXhlY3V0ZWQKdXBvbiBub3JtYWwgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4KClR3byBwdWJsaWMgZnVuY3Rpb25zLCByZWdpc3RlciBhbmQgdW5yZWdpc3RlciwgYXJlIGRlZmluZWQuCgAAAAAAAAAAAAAAAAAAAAByZWdpc3RlcihmdW5jLCAqYXJncywgKiprd2FyZ3MpIC0+IGZ1bmMKClJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgdXBvbiBub3JtYWwgcHJvZ3JhbSB0ZXJtaW5hdGlvbgoKICAgIGZ1bmMgLSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYXQgZXhpdAogICAgYXJncyAtIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIGZ1bmMKICAgIGt3YXJncyAtIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHRvIHBhc3MgdG8gZnVuYwoKICAgIGZ1bmMgaXMgcmV0dXJuZWQgdG8gZmFjaWxpdGF0ZSB1c2FnZSBhcyBhIGRlY29yYXRvci4AAAAAAAAAAAAAAF9jbGVhcigpIC0+IE5vbmUKCkNsZWFyIHRoZSBsaXN0IG9mIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBleGl0IGZ1bmN0aW9ucy4AAAAAAAAAdW5yZWdpc3RlcihmdW5jKSAtPiBOb25lCgpVbnJlZ2lzdGVyIGFuIGV4aXQgZnVuY3Rpb24gd2hpY2ggd2FzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB1c2luZwphdGV4aXQucmVnaXN0ZXIKCiAgICBmdW5jIC0gZnVuY3Rpb24gdG8gYmUgdW5yZWdpc3RlcmVkAAAAAAAAAAAAAAAAAF9ydW5fZXhpdGZ1bmNzKCkgLT4gTm9uZQoKUnVuIGFsbCByZWdpc3RlcmVkIGV4aXQgZnVuY3Rpb25zLgoKSWYgYSBjYWxsYmFjayByYWlzZXMgYW4gZXhjZXB0aW9uLCBpdCBpcyBsb2dnZWQgd2l0aCBzeXMudW5yYWlzYWJsZWhvb2suAAAAAAAAAAAAAF9uY2FsbGJhY2tzKCkgLT4gaW50CgpSZXR1cm4gdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIGV4aXQgZnVuY3Rpb25zLgAAAAAAAAAAAAAAZmF1bHRoYW5kbGVyIG1vZHVsZS4AAAAAAAAAAAAAAABpbnZhbGlkIHNpZ25hbCBudW1iZXIgJWxkLCBwbGVhc2UgdXNlIHZhbGlkX3NpZ25hbHMoKQAAAAAAAAAAAAAAVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIG9wZXJhdGluZyBzeXN0ZW0gZnVuY3Rpb25hbGl0eSB0aGF0IGlzCnN0YW5kYXJkaXplZCBieSB0aGUgQyBTdGFuZGFyZCBhbmQgdGhlIFBPU0lYIHN0YW5kYXJkIChhIHRoaW5seQpkaXNndWlzZWQgVW5peCBpbnRlcmZhY2UpLiAgUmVmZXIgdG8gdGhlIGxpYnJhcnkgbWFudWFsIGFuZApjb3JyZXNwb25kaW5nIFVuaXggbWFudWFsIGVudHJpZXMgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY2FsbHMuAAAAAAAAAAAAAAAAAABzdGF0KCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKLS0KClBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLgoKICBwYXRoCiAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgYSBwYXRoLWxpa2Ugb2JqZWN0IG9yCiAgICBvcGVuLWZpbGUtZGVzY3JpcHRvciBpbnQuCiAgZGlyX2ZkCiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCiAgICBhbmQgcGF0aCBzaG91bGQgYmUgYSByZWxhdGl2ZSBzdHJpbmc7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvCiAgICB0aGF0IGRpcmVjdG9yeS4KICBmb2xsb3dfc3ltbGlua3MKICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssCiAgICBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQogICAgdGhlIGxpbmsgcG9pbnRzIHRvLgoKZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZAogIG9uIHlvdXIgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEKICBOb3RJbXBsZW1lbnRlZEVycm9yLgoKSXQncyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhcwogIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgAAAAAAAAAAAABhY2Nlc3MoJG1vZHVsZSwgLywgcGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGVmZmVjdGl2ZV9pZHM9RmFsc2UsCiAgICAgICBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKLS0KClVzZSB0aGUgcmVhbCB1aWQvZ2lkIHRvIHRlc3QgZm9yIGFjY2VzcyB0byBhIHBhdGguCgogIHBhdGgKICAgIFBhdGggdG8gYmUgdGVzdGVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3IgYSBwYXRoLWxpa2Ugb2JqZWN0LgogIG1vZGUKICAgIE9wZXJhdGluZy1zeXN0ZW0gbW9kZSBiaXRmaWVsZC4gIENhbiBiZSBGX09LIHRvIHRlc3QgZXhpc3RlbmNlLAogICAgb3IgdGhlIGluY2x1c2l2ZS1PUiBvZiBSX09LLCBXX09LLCBhbmQgWF9PSy4KICBkaXJfZmQKICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdAogICAgZGlyZWN0b3J5LgogIGVmZmVjdGl2ZV9pZHMKICAgIElmIFRydWUsIGFjY2VzcyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQgaW5zdGVhZCBvZgogICAgdGhlIHJlYWwgdWlkL2dpZC4KICBmb2xsb3dfc3ltbGlua3MKICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssCiAgICBhY2Nlc3Mgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCiAgICB0aGUgbGluayBwb2ludHMgdG8uCgpkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZAogIG9uIHlvdXIgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEKICBOb3RJbXBsZW1lbnRlZEVycm9yLgoKTm90ZSB0aGF0IG1vc3Qgb3BlcmF0aW9ucyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQsIHRoZXJlZm9yZSB0aGlzCiAgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyCiAgaGFzIHRoZSBzcGVjaWZpZWQgYWNjZXNzIHRvIHRoZSBwYXRoLgAAAAAAAAAAAAB0dHluYW1lKCRtb2R1bGUsIGZkLCAvKQotLQoKUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB0ZXJtaW5hbCBkZXZpY2UgY29ubmVjdGVkIHRvICdmZCcuCgogIGZkCiAgICBJbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBoYW5kbGUuAGNoZGlyKCRtb2R1bGUsIC8sIHBhdGgpCi0tCgpDaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIHNwZWNpZmllZCBwYXRoLgoKcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy4KT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgogIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4AAAAAAAAAAAAAAAAAAGNobW9kKCRtb2R1bGUsIC8sIHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKLS0KCkNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4KCiAgcGF0aAogICAgUGF0aCB0byBiZSBtb2RpZmllZC4gIE1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyLCBieXRlcywgb3IgYSBwYXRoLWxpa2Ugb2JqZWN0LgogICAgT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgogICAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgogIG1vZGUKICAgIE9wZXJhdGluZy1zeXN0ZW0gbW9kZSBiaXRmaWVsZC4KICBkaXJfZmQKICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdAogICAgZGlyZWN0b3J5LgogIGZvbGxvd19zeW1saW5rcwogICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluaywKICAgIGNobW9kIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCiAgICB0aGUgbGluayBwb2ludHMgdG8uCgpJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhcwogIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgpkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuAAAAAAAAAAAAAAAAZmNobW9kKCRtb2R1bGUsIC8sIGZkLCBtb2RlKQotLQoKQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgZmlsZSBkZXNjcmlwdG9yIGZkLgoKRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuAAAAAAAAY2hvd24oJG1vZHVsZSwgLywgcGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKLS0KCkNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXAoKICBwYXRoCiAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgYSBwYXRoLWxpa2Ugb2JqZWN0LCBvciBvcGVuLWZpbGUtZGVzY3JpcHRvciBpbnQuCiAgZGlyX2ZkCiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQKICAgIGRpcmVjdG9yeS4KICBmb2xsb3dfc3ltbGlua3MKICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssCiAgICBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQogICAgdGhlIGxpbmsgcG9pbnRzIHRvLgoKcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy4KT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgogIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgpJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKICBsaW5rLCBjaG93biB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGUKICBsaW5rIHBvaW50cyB0by4KSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXMKICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgogIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgAAAAAAAAAAAAAAAAAAZmNob3duKCRtb2R1bGUsIC8sIGZkLCB1aWQsIGdpZCkKLS0KCkNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmaWxlIGRlc2NyaXB0b3IuCgpFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuAAAAAAAAAAAAAAAAAGNocm9vdCgkbW9kdWxlLCAvLCBwYXRoKQotLQoKQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguAAAAAABjdGVybWlkKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIGZvciB0aGlzIHByb2Nlc3MuAAAAAAAAAAAAAABnZXRjd2QoJG1vZHVsZSwgLykKLS0KClJldHVybiBhIHVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4AAAAAAABnZXRjd2RiKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gYSBieXRlcyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgAAAAAAAABsaXN0ZGlyKCRtb2R1bGUsIC8sIHBhdGg9Tm9uZSkKLS0KClJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuCgpwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciwgYnl0ZXMsIG9yIGEgcGF0aC1saWtlIG9iamVjdC4gIElmIHBhdGggaXMgYnl0ZXMsCiAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgYnl0ZXM7IGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzCiAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGJlIHN0ci4KSWYgcGF0aCBpcyBOb25lLCB1c2VzIHRoZSBwYXRoPScuJy4KT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yO1wKICB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuCiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci4KClRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKZW50cmllcyAnLicgYW5kICcuLicgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuAAAAAAAAAABsc3RhdCgkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKLS0KClBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLCB3aXRob3V0IGZvbGxvd2luZyBzeW1ib2xpYyBsaW5rcy4KCkxpa2Ugc3RhdCgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4KRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuAAAAAG1rZGlyKCRtb2R1bGUsIC8sIHBhdGgsIG1vZGU9NTExLCAqLCBkaXJfZmQ9Tm9uZSkKLS0KCkNyZWF0ZSBhIGRpcmVjdG9yeS4KCklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCgpUaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIFdoZXJlIGl0IGlzIHVzZWQsIHRoZSBjdXJyZW50IHVtYXNrCnZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQuAABnZXRwcmlvcml0eSgkbW9kdWxlLCAvLCB3aGljaCwgd2hvKQotLQoKUmV0dXJuIHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4AAAAAAHJlYWRsaW5rKCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lKQotLQoKUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGF0aCB0byB3aGljaCB0aGUgc3ltYm9saWMgbGluayBwb2ludHMuCgpJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAphbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgoKZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLAp1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4AAAAAAAAAAAAAAAAAAAByZW5hbWUoJG1vZHVsZSwgLywgc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKQotLQoKUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnkuCgpJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlCiAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpCiAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCnNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4AAAAAAAAAAHJlcGxhY2UoJG1vZHVsZSwgLywgc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKQotLQoKUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnksIG92ZXJ3cml0aW5nIHRoZSBkZXN0aW5hdGlvbi4KCklmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUKICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdCkKICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4Kc3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCwgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgogIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgAAAAAAAAAAAABybWRpcigkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKLS0KClJlbW92ZSBhIGRpcmVjdG9yeS4KCklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuAAAAAABzeW1saW5rKCRtb2R1bGUsIC8sIHNyYywgZHN0LCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlLCAqLCBkaXJfZmQ9Tm9uZSkKLS0KCkNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC4KCnRhcmdldF9pc19kaXJlY3RvcnkgaXMgcmVxdWlyZWQgb24gV2luZG93cyBpZiB0aGUgdGFyZ2V0IGlzIHRvIGJlCiAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlcwogIFdpbmRvd3MgNi4wIG9yIGdyZWF0ZXIsIGFuZCByYWlzZXMgYSBOb3RJbXBsZW1lbnRlZEVycm9yIG90aGVyd2lzZS4pCiAgdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyBpZ25vcmVkIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KCklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuAAAAAHN5c3RlbSgkbW9kdWxlLCAvLCBjb21tYW5kKQotLQoKRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLgAAAAAAAAAAAAAAAAAAdW1hc2soJG1vZHVsZSwgbWFzaywgLykKLS0KClNldCB0aGUgY3VycmVudCBudW1lcmljIHVtYXNrIGFuZCByZXR1cm4gdGhlIHByZXZpb3VzIHVtYXNrLgAAAAAAAAAAdW5hbWUoJG1vZHVsZSwgLykKLS0KClJldHVybiBhbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4KClRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpAAAAAAAAAAAAAAAAAHVubGluaygkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKLS0KClJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgcmVtb3ZlKCkpLgoKSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgpkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgogIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4AAAAAAAByZW1vdmUoJG1vZHVsZSwgLywgcGF0aCwgKiwgZGlyX2ZkPU5vbmUpCi0tCgpSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluaygpKS4KCklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuAAAAAAAAdXRpbWUoJG1vZHVsZSwgLywgcGF0aCwgdGltZXM9Tm9uZSwgKiwgbnM9PHVucmVwcmVzZW50YWJsZT4sCiAgICAgIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKLS0KClNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguCgpwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLgpPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgoKSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTsKICAgIGF0aW1lIGFuZCBtdGltZSBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGZsb2F0IHNlY29uZHMgc2luY2UgdGhlIGVwb2NoLgpJZiBucyBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWVfbnMsIG10aW1lX25zKTsKICAgIGF0aW1lX25zIGFuZCBtdGltZV9ucyBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGludGVnZXIgbmFub3NlY29uZHMKICAgIHNpbmNlIHRoZSBlcG9jaC4KSWYgdGltZXMgaXMgTm9uZSBhbmQgbnMgaXMgdW5zcGVjaWZpZWQsIHV0aW1lIHVzZXMgdGhlIGN1cnJlbnQgdGltZS4KU3BlY2lmeWluZyB0dXBsZXMgZm9yIGJvdGggdGltZXMgYW5kIG5zIGlzIGFuIGVycm9yLgoKSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgpJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKICBsaW5rLCB1dGltZSB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGUKICBsaW5rIHBvaW50cyB0by4KSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGgKICBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybS4KICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4AAAAAAAAAAAAAAAAAAHRpbWVzKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gYSBjb2xsZWN0aW9uIGNvbnRhaW5pbmcgcHJvY2VzcyB0aW1pbmcgaW5mb3JtYXRpb24uCgpUaGUgb2JqZWN0IHJldHVybmVkIGJlaGF2ZXMgbGlrZSBhIG5hbWVkIHR1cGxlIHdpdGggdGhlc2UgZmllbGRzOgogICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpCkFsbCBmaWVsZHMgYXJlIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuAAAAAAAAAF9leGl0KCRtb2R1bGUsIC8sIHN0YXR1cykKLS0KCkV4aXQgdG8gdGhlIHN5c3RlbSB3aXRoIHNwZWNpZmllZCBzdGF0dXMsIHdpdGhvdXQgbm9ybWFsIGV4aXQgcHJvY2Vzc2luZy4AAAAAAAAAAABleGVjdigkbW9kdWxlLCBwYXRoLCBhcmd2LCAvKQotLQoKRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuCgogIHBhdGgKICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgogIGFyZ3YKICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4AAAAAAAAAAAAAAAAAAABleGVjdmUoJG1vZHVsZSwgLywgcGF0aCwgYXJndiwgZW52KQotLQoKRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuCgogIHBhdGgKICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgogIGFyZ3YKICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KICBlbnYKICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuAAAAAABmb3JrKCRtb2R1bGUsIC8pCi0tCgpGb3JrIGEgY2hpbGQgcHJvY2Vzcy4KClJldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4AAAAAAAAAcmVnaXN0ZXJfYXRfZm9yaygkbW9kdWxlLCAvLCAqLCBiZWZvcmU9PHVucmVwcmVzZW50YWJsZT4sCiAgICAgICAgICAgICAgICAgYWZ0ZXJfaW5fY2hpbGQ9PHVucmVwcmVzZW50YWJsZT4sCiAgICAgICAgICAgICAgICAgYWZ0ZXJfaW5fcGFyZW50PTx1bnJlcHJlc2VudGFibGU+KQotLQoKUmVnaXN0ZXIgY2FsbGFibGVzIHRvIGJlIGNhbGxlZCB3aGVuIGZvcmtpbmcgYSBuZXcgcHJvY2Vzcy4KCiAgYmVmb3JlCiAgICBBIGNhbGxhYmxlIHRvIGJlIGNhbGxlZCBpbiB0aGUgcGFyZW50IGJlZm9yZSB0aGUgZm9yaygpIHN5c2NhbGwuCiAgYWZ0ZXJfaW5fY2hpbGQKICAgIEEgY2FsbGFibGUgdG8gYmUgY2FsbGVkIGluIHRoZSBjaGlsZCBhZnRlciBmb3JrKCkuCiAgYWZ0ZXJfaW5fcGFyZW50CiAgICBBIGNhbGxhYmxlIHRvIGJlIGNhbGxlZCBpbiB0aGUgcGFyZW50IGFmdGVyIGZvcmsoKS4KCidiZWZvcmUnIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIuCidhZnRlcl9pbl9jaGlsZCcgYW5kICdhZnRlcl9pbl9wYXJlbnQnIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGluIG9yZGVyLgAAAAAAAAAAc2NoZWRfeWllbGQoJG1vZHVsZSwgLykKLS0KClZvbHVudGFyaWx5IHJlbGlucXVpc2ggdGhlIENQVS4AAAAAAGxvZ2luX3R0eSgkbW9kdWxlLCBmZCwgLykKLS0KClByZXBhcmUgdGhlIHR0eSBvZiB3aGljaCBmZCBpcyBhIGZpbGUgZGVzY3JpcHRvciBmb3IgYSBuZXcgbG9naW4gc2Vzc2lvbi4KCk1ha2UgdGhlIGNhbGxpbmcgcHJvY2VzcyBhIHNlc3Npb24gbGVhZGVyOyBtYWtlIHRoZSB0dHkgdGhlCmNvbnRyb2xsaW5nIHR0eSwgdGhlIHN0ZGluLCB0aGUgc3Rkb3V0LCBhbmQgdGhlIHN0ZGVyciBvZiB0aGUKY2FsbGluZyBwcm9jZXNzOyBjbG9zZSBmZC4AAABnZXRnaWQoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZ3JvdXAgaWQuAAAAZ2V0cGlkKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZC4AAAAAAAAAAAAAAGdldHBncnAoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzIGdyb3VwIGlkLgAAAABnZXRwcGlkKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gdGhlIHBhcmVudCdzIHByb2Nlc3MgaWQuCgpJZiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLCBXaW5kb3dzIG1hY2hpbmVzIHdpbGwgc3RpbGwKcmV0dXJuIGl0cyBpZDsgb3RoZXJzIHN5c3RlbXMgd2lsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSAnaW5pdCcgcHJvY2VzcyAoMSkuAAAAAAAAZ2V0dWlkKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuAAAAAGdldGxvZ2luKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gdGhlIGFjdHVhbCBsb2dpbiBuYW1lLgAAAAAAAAAAAABraWxsKCRtb2R1bGUsIHBpZCwgc2lnbmFsLCAvKQotLQoKS2lsbCBhIHByb2Nlc3Mgd2l0aCBhIHNpZ25hbC4Aa2lsbHBnKCRtb2R1bGUsIHBnaWQsIHNpZ25hbCwgLykKLS0KCktpbGwgYSBwcm9jZXNzIGdyb3VwIHdpdGggYSBzaWduYWwuAAAAAAAAAABzZXR1aWQoJG1vZHVsZSwgdWlkLCAvKQotLQoKU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyB1c2VyIGlkLgAAc2V0cmV1aWQoJG1vZHVsZSwgcnVpZCwgZXVpZCwgLykKLS0KClNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIHVzZXIgaWRzLgAAAAAAc2V0Z2lkKCRtb2R1bGUsIGdpZCwgLykKLS0KClNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZ3JvdXAgaWQuAHNldHJlZ2lkKCRtb2R1bGUsIHJnaWQsIGVnaWQsIC8pCi0tCgpTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSBncm91cCBpZHMuAAAAAGdldHBnaWQoJG1vZHVsZSwgLywgcGlkKQotLQoKQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0cGdpZCgpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuAAAAAAAAAAAAAAAAAHNldHBncnAoJG1vZHVsZSwgLykKLS0KCk1ha2UgdGhlIGN1cnJlbnQgcHJvY2VzcyB0aGUgbGVhZGVyIG9mIGl0cyBwcm9jZXNzIGdyb3VwLgAAAAAAAAAAAAAAAAAAAHdhaXQoJG1vZHVsZSwgLykKLS0KCldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLgoKUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOgogICAgKHBpZCwgc3RhdHVzKQAAAAAAAAAAAHdhaXRpZCgkbW9kdWxlLCBpZHR5cGUsIGlkLCBvcHRpb25zLCAvKQotLQoKUmV0dXJucyB0aGUgcmVzdWx0IG9mIHdhaXRpbmcgZm9yIGEgcHJvY2VzcyBvciBwcm9jZXNzZXMuCgogIGlkdHlwZQogICAgTXVzdCBiZSBvbmUgb2YgYmUgUF9QSUQsIFBfUEdJRCBvciBQX0FMTC4KICBpZAogICAgVGhlIGlkIHRvIHdhaXQgb24uCiAgb3B0aW9ucwogICAgQ29uc3RydWN0ZWQgZnJvbSB0aGUgT1Jpbmcgb2Ygb25lIG9yIG1vcmUgb2YgV0VYSVRFRCwgV1NUT1BQRUQKICAgIG9yIFdDT05USU5VRUQgYW5kIGFkZGl0aW9uYWxseSBtYXkgYmUgT1JlZCB3aXRoIFdOT0hBTkcgb3IgV05PV0FJVC4KClJldHVybnMgZWl0aGVyIHdhaXRpZF9yZXN1bHQgb3IgTm9uZSBpZiBXTk9IQU5HIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlCm5vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuAAAAAAB3YWl0cGlkKCRtb2R1bGUsIHBpZCwgb3B0aW9ucywgLykKLS0KCldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBjaGlsZCBwcm9jZXNzLgoKUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgY2hpbGQgcHJvY2VzczoKICAgIChwaWQsIHN0YXR1cykKClRoZSBvcHRpb25zIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4AZ2V0c2lkKCRtb2R1bGUsIHBpZCwgLykKLS0KCkNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHNpZChwaWQpIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4AAAAAAAAAAAAAAAAAc2V0c2lkKCRtb2R1bGUsIC8pCi0tCgpDYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4AAAAAAAAAAAAAAHNldHBnaWQoJG1vZHVsZSwgcGlkLCBwZ3JwLCAvKQotLQoKQ2FsbCB0aGUgc3lzdGVtIGNhbGwgc2V0cGdpZChwaWQsIHBncnApLgAAAAAAdGNnZXRwZ3JwKCRtb2R1bGUsIGZkLCAvKQotLQoKUmV0dXJuIHRoZSBwcm9jZXNzIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGVybWluYWwgc3BlY2lmaWVkIGJ5IGZkLgAAAAAAAAAAAAAAAHRjc2V0cGdycCgkbW9kdWxlLCBmZCwgcGdpZCwgLykKLS0KClNldCB0aGUgcHJvY2VzcyBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIHRlcm1pbmFsIHNwZWNpZmllZCBieSBmZC4AAAAAAAAAAABvcGVuKCRtb2R1bGUsIC8sIHBhdGgsIGZsYWdzLCBtb2RlPTUxMSwgKiwgZGlyX2ZkPU5vbmUpCi0tCgpPcGVuIGEgZmlsZSBmb3IgbG93IGxldmVsIElPLiAgUmV0dXJucyBhIGZpbGUgZGVzY3JpcHRvciAoaW50ZWdlcikuCgpJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAogIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCmRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgAAAAAAY2xvc2UoJG1vZHVsZSwgLywgZmQpCi0tCgpDbG9zZSBhIGZpbGUgZGVzY3JpcHRvci4AAAAAAAAAAAAAAAAAAGNsb3NlcmFuZ2UoJG1vZHVsZSwgZmRfbG93LCBmZF9oaWdoLCAvKQotLQoKQ2xvc2VzIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGluIFtmZF9sb3csIGZkX2hpZ2gpLCBpZ25vcmluZyBlcnJvcnMuAABkZXZpY2VfZW5jb2RpbmcoJG1vZHVsZSwgLywgZmQpCi0tCgpSZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZW5jb2Rpbmcgb2YgYSB0ZXJtaW5hbCdzIGZpbGUgZGVzY3JpcHRvci4KClRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHRlcm1pbmFsLgpJZiB0aGUgZGV2aWNlIGlzIG5vdCBhIHRlcm1pbmFsLCByZXR1cm4gTm9uZS4AZHVwKCRtb2R1bGUsIGZkLCAvKQotLQoKUmV0dXJuIGEgZHVwbGljYXRlIG9mIGEgZmlsZSBkZXNjcmlwdG9yLgAAAAAAAAAAAAAAAAAAAABkdXAyKCRtb2R1bGUsIC8sIGZkLCBmZDIsIGluaGVyaXRhYmxlPVRydWUpCi0tCgpEdXBsaWNhdGUgZmlsZSBkZXNjcmlwdG9yLgAAAAAAAGxvY2tmKCRtb2R1bGUsIGZkLCBjb21tYW5kLCBsZW5ndGgsIC8pCi0tCgpBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgoKICBmZAogICAgQW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCiAgY29tbWFuZAogICAgT25lIG9mIEZfTE9DSywgRl9UTE9DSywgRl9VTE9DSyBvciBGX1RFU1QuCiAgbGVuZ3RoCiAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHN0YXJ0aW5nIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLgAAAAAAAAAAAAAAAAAAAGxzZWVrKCRtb2R1bGUsIGZkLCBwb3NpdGlvbiwgaG93LCAvKQotLQoKU2V0IHRoZSBwb3NpdGlvbiBvZiBhIGZpbGUgZGVzY3JpcHRvci4gIFJldHVybiB0aGUgbmV3IHBvc2l0aW9uLgoKUmV0dXJuIHRoZSBuZXcgY3Vyc29yIHBvc2l0aW9uIGluIG51bWJlciBvZiBieXRlcwpyZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgAAAAAAAAAAAAAAAAByZWFkKCRtb2R1bGUsIGZkLCBsZW5ndGgsIC8pCi0tCgpSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0LgAAAAAAAAAAAAByZWFkdigkbW9kdWxlLCBmZCwgYnVmZmVycywgLykKLS0KClJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBmZCBpbnRvIGFuIGl0ZXJhYmxlIG9mIGJ1ZmZlcnMuCgpUaGUgYnVmZmVycyBzaG91bGQgYmUgbXV0YWJsZSBidWZmZXJzIGFjY2VwdGluZyBieXRlcy4KcmVhZHYgd2lsbCB0cmFuc2ZlciBkYXRhIGludG8gZWFjaCBidWZmZXIgdW50aWwgaXQgaXMgZnVsbAphbmQgdGhlbiBtb3ZlIG9uIHRvIHRoZSBuZXh0IGJ1ZmZlciBpbiB0aGUgc2VxdWVuY2UgdG8gaG9sZAp0aGUgcmVzdCBvZiB0aGUgZGF0YS4KCnJlYWR2IHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyByZWFkLAp3aGljaCBtYXkgYmUgbGVzcyB0aGFuIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhbGwgdGhlIGJ1ZmZlcnMuAAAAAAAAAAAAAAAAAAAAAHByZWFkKCRtb2R1bGUsIGZkLCBsZW5ndGgsIG9mZnNldCwgLykKLS0KClJlYWQgYSBudW1iZXIgb2YgYnl0ZXMgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBzdGFydGluZyBhdCBhIHBhcnRpY3VsYXIgb2Zmc2V0LgoKUmVhZCBsZW5ndGggYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgZmQsIHN0YXJ0aW5nIGF0IG9mZnNldCBieXRlcyBmcm9tCnRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuICBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuAAAAAAAAAAAAAAAAAAAAd3JpdGUoJG1vZHVsZSwgZmQsIGRhdGEsIC8pCi0tCgpXcml0ZSBhIGJ5dGVzIG9iamVjdCB0byBhIGZpbGUgZGVzY3JpcHRvci4AAAAAAAB3cml0ZXYoJG1vZHVsZSwgZmQsIGJ1ZmZlcnMsIC8pCi0tCgpJdGVyYXRlIG92ZXIgYnVmZmVycywgYW5kIHdyaXRlIHRoZSBjb250ZW50cyBvZiBlYWNoIHRvIGEgZmlsZSBkZXNjcmlwdG9yLgoKUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCmJ1ZmZlcnMgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGJ5dGVzLWxpa2Ugb2JqZWN0cy4AAAAAcHdyaXRlKCRtb2R1bGUsIGZkLCBidWZmZXIsIG9mZnNldCwgLykKLS0KCldyaXRlIGJ5dGVzIHRvIGEgZmlsZSBkZXNjcmlwdG9yIHN0YXJ0aW5nIGF0IGEgcGFydGljdWxhciBvZmZzZXQuCgpXcml0ZSBidWZmZXIgdG8gZmQsIHN0YXJ0aW5nIGF0IG9mZnNldCBieXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKdGhlIGZpbGUuICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlLiAgRG9lcyBub3QgY2hhbmdlIHRoZQpjdXJyZW50IGZpbGUgb2Zmc2V0LgAAAAAAAABmc3RhdCgkbW9kdWxlLCAvLCBmZCkKLS0KClBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuCgpMaWtlIHN0YXQoKSwgYnV0IGZvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4AAAAAaXNhdHR5KCRtb2R1bGUsIGZkLCAvKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIGZkIGlzIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLgoKUmV0dXJuIFRydWUgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcgpjb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLgAAAAAAAAAAAAAAcGlwZSgkbW9kdWxlLCAvKQotLQoKQ3JlYXRlIGEgcGlwZS4KClJldHVybnMgYSB0dXBsZSBvZiB0d28gZmlsZSBkZXNjcmlwdG9yczoKICAocmVhZF9mZCwgd3JpdGVfZmQpAAAAAAAAAAAAAAAAAG1ham9yKCRtb2R1bGUsIGRldmljZSwgLykKLS0KCkV4dHJhY3RzIGEgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuAAAAAAAAAAAAAG1pbm9yKCRtb2R1bGUsIGRldmljZSwgLykKLS0KCkV4dHJhY3RzIGEgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuAAAAAAAAAAAAAG1ha2VkZXYoJG1vZHVsZSwgbWFqb3IsIG1pbm9yLCAvKQotLQoKQ29tcG9zZXMgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuAAAAAABmdHJ1bmNhdGUoJG1vZHVsZSwgZmQsIGxlbmd0aCwgLykKLS0KClRydW5jYXRlIGEgZmlsZSwgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvciwgdG8gYSBzcGVjaWZpYyBsZW5ndGguAAAAAAAAdHJ1bmNhdGUoJG1vZHVsZSwgLywgcGF0aCwgbGVuZ3RoKQotLQoKVHJ1bmNhdGUgYSBmaWxlLCBzcGVjaWZpZWQgYnkgcGF0aCwgdG8gYSBzcGVjaWZpYyBsZW5ndGguCgpPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgAAAAAAAAAAAAAAAAAAAHBvc2l4X2ZhZHZpc2UoJG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoLCBhZHZpY2UsIC8pCi0tCgpBbm5vdW5jZSBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuLgoKQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiwgdGh1cyBhbGxvd2luZwp0aGUga2VybmVsIHRvIG1ha2Ugb3B0aW1pemF0aW9ucy4KVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0Cm9mZnNldCBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLgphZHZpY2UgaXMgb25lIG9mIFBPU0lYX0ZBRFZfTk9STUFMLCBQT1NJWF9GQURWX1NFUVVFTlRJQUwsClBPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQsIG9yClBPU0lYX0ZBRFZfRE9OVE5FRUQuAAAAAAAAAAAAAAAAAABwdXRlbnYoJG1vZHVsZSwgbmFtZSwgdmFsdWUsIC8pCi0tCgpDaGFuZ2Ugb3IgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgAAAAAAAHVuc2V0ZW52KCRtb2R1bGUsIG5hbWUsIC8pCi0tCgpEZWxldGUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuAABzdHJlcnJvcigkbW9kdWxlLCBjb2RlLCAvKQotLQoKVHJhbnNsYXRlIGFuIGVycm9yIGNvZGUgdG8gYSBtZXNzYWdlIHN0cmluZy4AAAAAAGZjaGRpcigkbW9kdWxlLCAvLCBmZCkKLS0KCkNoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuCgpmZCBtdXN0IGJlIG9wZW5lZCBvbiBhIGRpcmVjdG9yeSwgbm90IGEgZmlsZS4KRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuAAAAAABmc3luYygkbW9kdWxlLCAvLCBmZCkKLS0KCkZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2suAAAAAAAAAAAAAAAAc3luYygkbW9kdWxlLCAvKQotLQoKRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLgAAAAAAAAAAAGZkYXRhc3luYygkbW9kdWxlLCAvLCBmZCkKLS0KCkZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2sgd2l0aG91dCBmb3JjaW5nIHVwZGF0ZSBvZiBtZXRhZGF0YS4AAAAAAFdDT1JFRFVNUCgkbW9kdWxlLCBzdGF0dXMsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyBkdW1wZWQgdG8gYSBjb3JlIGZpbGUuAAAAAAAAAABXSUZDT05USU5VRUQoJG1vZHVsZSwgLywgc3RhdHVzKQotLQoKUmV0dXJuIFRydWUgaWYgYSBwYXJ0aWN1bGFyIHByb2Nlc3Mgd2FzIGNvbnRpbnVlZCBmcm9tIGEgam9iIGNvbnRyb2wgc3RvcC4KClJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGNvbnRpbnVlZCBmcm9tIGEKam9iIGNvbnRyb2wgc3RvcC4AAAAAAAAAAAAAAAAAV0lGU1RPUFBFRCgkbW9kdWxlLCAvLCBzdGF0dXMpCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyBzdG9wcGVkLgAAAAAAV0lGU0lHTkFMRUQoJG1vZHVsZSwgLywgc3RhdHVzKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbC4AAAAAAFdJRkVYSVRFRCgkbW9kdWxlLCAvLCBzdGF0dXMpCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIGV4aXRlZCB2aWEgdGhlIGV4aXQoKSBzeXN0ZW0gY2FsbC4AAAAAAAAAAAAAAAAAAAAAV0VYSVRTVEFUVVMoJG1vZHVsZSwgLywgc3RhdHVzKQotLQoKUmV0dXJuIHRoZSBwcm9jZXNzIHJldHVybiBjb2RlIGZyb20gc3RhdHVzLgBXVEVSTVNJRygkbW9kdWxlLCAvLCBzdGF0dXMpCi0tCgpSZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHRlcm1pbmF0ZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgc3RhdHVzIHZhbHVlLgAAV1NUT1BTSUcoJG1vZHVsZSwgLywgc3RhdHVzKQotLQoKUmV0dXJuIHRoZSBzaWduYWwgdGhhdCBzdG9wcGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4AAAAAAGZzdGF0dmZzKCRtb2R1bGUsIGZkLCAvKQotLQoKUGVyZm9ybSBhbiBmc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gZmQuCgpFcXVpdmFsZW50IHRvIHN0YXR2ZnMoZmQpLgAAAAAAAABzdGF0dmZzKCRtb2R1bGUsIC8sIHBhdGgpCi0tCgpQZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4KCnBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uAAAAAAAAAGNvbmZzdHIoJG1vZHVsZSwgbmFtZSwgLykKLS0KClJldHVybiBhIHN0cmluZy12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuAAAAAAAAAAAAAAAAAHN5c2NvbmYoJG1vZHVsZSwgbmFtZSwgLykKLS0KClJldHVybiBhbiBpbnRlZ2VyLXZhbHVlZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB2YXJpYWJsZS4AAAAAAAAAAAAAAGZwYXRoY29uZigkbW9kdWxlLCBmZCwgbmFtZSwgLykKLS0KClJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLgoKSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4AAAAAAAAAAAAAAHBhdGhjb25mKCRtb2R1bGUsIC8sIHBhdGgsIG5hbWUpCi0tCgpSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IHBhdGguCgpJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLgpPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgAAAAAAAGFib3J0KCRtb2R1bGUsIC8pCi0tCgpBYm9ydCB0aGUgaW50ZXJwcmV0ZXIgaW1tZWRpYXRlbHkuCgpUaGlzIGZ1bmN0aW9uICdkdW1wcyBjb3JlJyBvciBvdGhlcndpc2UgZmFpbHMgaW4gdGhlIGhhcmRlc3Qgd2F5IHBvc3NpYmxlCm9uIHRoZSBob3N0aW5nIG9wZXJhdGluZyBzeXN0ZW0uICBUaGlzIGZ1bmN0aW9uIG5ldmVyIHJldHVybnMuAAAAAAAAAAAAAAAAAABfcGF0aF9ub3JtcGF0aCgkbW9kdWxlLCAvLCBwYXRoKQotLQoKQmFzaWMgcGF0aCBub3JtYWxpemF0aW9uLgAAZ2V0bG9hZGF2ZygkbW9kdWxlLCAvKQotLQoKUmV0dXJuIGF2ZXJhZ2UgcmVjZW50IHN5c3RlbSBsb2FkIGluZm9ybWF0aW9uLgoKUmV0dXJuIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGluIHRoZSBzeXN0ZW0gcnVuIHF1ZXVlIGF2ZXJhZ2VkIG92ZXIKdGhlIGxhc3QgMSwgNSwgYW5kIDE1IG1pbnV0ZXMgYXMgYSB0dXBsZSBvZiB0aHJlZSBmbG9hdHMuClJhaXNlcyBPU0Vycm9yIGlmIHRoZSBsb2FkIGF2ZXJhZ2Ugd2FzIHVub2J0YWluYWJsZS4AAHVyYW5kb20oJG1vZHVsZSwgc2l6ZSwgLykKLS0KClJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuAAAAAABjcHVfY291bnQoJG1vZHVsZSwgLykKLS0KClJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuCgpUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW4KdXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aApgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYAAAAAAAAAAAAAAAAGdldF9pbmhlcml0YWJsZSgkbW9kdWxlLCBmZCwgLykKLS0KCkdldCB0aGUgY2xvc2Utb24tZXhlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuAHNldF9pbmhlcml0YWJsZSgkbW9kdWxlLCBmZCwgaW5oZXJpdGFibGUsIC8pCi0tCgpTZXQgdGhlIGluaGVyaXRhYmxlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuAAAAAABnZXRfYmxvY2tpbmcoJG1vZHVsZSwgZmQsIC8pCi0tCgpHZXQgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlIGZpbGUgZGVzY3JpcHRvci4KClJldHVybiBGYWxzZSBpZiB0aGUgT19OT05CTE9DSyBmbGFnIGlzIHNldCwgVHJ1ZSBpZiB0aGUgZmxhZyBpcyBjbGVhcmVkLgAAAAAAAAAAc2V0X2Jsb2NraW5nKCRtb2R1bGUsIGZkLCBibG9ja2luZywgLykKLS0KClNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KClNldCB0aGUgT19OT05CTE9DSyBmbGFnIGlmIGJsb2NraW5nIGlzIEZhbHNlLApjbGVhciB0aGUgT19OT05CTE9DSyBmbGFnIG90aGVyd2lzZS4AAAAAAAAAAAAAc2NhbmRpcigkbW9kdWxlLCAvLCBwYXRoPU5vbmUpCi0tCgpSZXR1cm4gYW4gaXRlcmF0b3Igb2YgRGlyRW50cnkgb2JqZWN0cyBmb3IgZ2l2ZW4gcGF0aC4KCnBhdGggY2FuIGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgc3RyLCBieXRlcywgb3IgYSBwYXRoLWxpa2Ugb2JqZWN0LiAgSWYgcGF0aAppcyBieXRlcywgdGhlIG5hbWVzIG9mIHlpZWxkZWQgRGlyRW50cnkgb2JqZWN0cyB3aWxsIGFsc28gYmUgYnl0ZXM7IGluCmFsbCBvdGhlciBjaXJjdW1zdGFuY2VzIHRoZXkgd2lsbCBiZSBzdHIuCgpJZiBwYXRoIGlzIE5vbmUsIHVzZXMgdGhlIHBhdGg9Jy4nLgAAAABmc3BhdGgoJG1vZHVsZSwgLywgcGF0aCkKLS0KClJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgoKSWYgdGhlIG9iamVjdCBpcyBzdHIgb3IgYnl0ZXMsIHRoZW4gYWxsb3cgaXQgdG8gcGFzcyB0aHJvdWdoIGFzLWlzLiBJZiB0aGUKb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXIKdHlwZXMgcmFpc2UgYSBUeXBlRXJyb3IuAAAAAAAAAHdhaXRzdGF0dXNfdG9fZXhpdGNvZGUoJG1vZHVsZSwgLywgc3RhdHVzKQotLQoKQ29udmVydCBhIHdhaXQgc3RhdHVzIHRvIGFuIGV4aXQgY29kZS4KCk9uIFVuaXg6CgoqIElmIFdJRkVYSVRFRChzdGF0dXMpIGlzIHRydWUsIHJldHVybiBXRVhJVFNUQVRVUyhzdGF0dXMpLgoqIElmIFdJRlNJR05BTEVEKHN0YXR1cykgaXMgdHJ1ZSwgcmV0dXJuIC1XVEVSTVNJRyhzdGF0dXMpLgoqIE90aGVyd2lzZSwgcmFpc2UgYSBWYWx1ZUVycm9yLgoKT24gV2luZG93cywgcmV0dXJuIHN0YXR1cyBzaGlmdGVkIHJpZ2h0IGJ5IDggYml0cy4KCk9uIFVuaXgsIGlmIHRoZSBwcm9jZXNzIGlzIGJlaW5nIHRyYWNlZCBvciBpZiB3YWl0cGlkKCkgd2FzIGNhbGxlZCB3aXRoCldVTlRSQUNFRCBvcHRpb24sIHRoZSBjYWxsZXIgbXVzdCBmaXJzdCBjaGVjayBpZiBXSUZTVE9QUEVEKHN0YXR1cykgaXMgdHJ1ZS4KVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBiZSBjYWxsZWQgaWYgV0lGU1RPUFBFRChzdGF0dXMpIGlzIHRydWUuAAAAAAAAAAAAAAAAAHdhaXRpZF9yZXN1bHQ6IFJlc3VsdCBmcm9tIHdhaXRpZC4KClRoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZgogIChzaV9waWQsIHNpX3VpZCwgc2lfc2lnbm8sIHNpX3N0YXR1cywgc2lfY29kZSksCm9yIHZpYSB0aGUgYXR0cmlidXRlcyBzaV9waWQsIHNpX3VpZCwgYW5kIHNvIG9uLgoKU2VlIG9zLndhaXRpZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4AAAAAc3RhdF9yZXN1bHQ6IFJlc3VsdCBmcm9tIHN0YXQsIGZzdGF0LCBvciBsc3RhdC4KClRoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZgogIChtb2RlLCBpbm8sIGRldiwgbmxpbmssIHVpZCwgZ2lkLCBzaXplLCBhdGltZSwgbXRpbWUsIGN0aW1lKQpvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc3RfbW9kZSwgc3RfaW5vLCBzdF9kZXYsIHN0X25saW5rLCBzdF91aWQsIGFuZCBzbyBvbi4KClBvc2l4L3dpbmRvd3M6IElmIHlvdXIgcGxhdGZvcm0gc3VwcG9ydHMgc3RfYmxrc2l6ZSwgc3RfYmxvY2tzLCBzdF9yZGV2LApvciBzdF9mbGFncywgdGhleSBhcmUgYXZhaWxhYmxlIGFzIGF0dHJpYnV0ZXMgb25seS4KClNlZSBvcy5zdGF0IGZvciBtb3JlIGluZm9ybWF0aW9uLgAAAHN0YXR2ZnNfcmVzdWx0OiBSZXN1bHQgZnJvbSBzdGF0dmZzIG9yIGZzdGF0dmZzLgoKVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mCiAgKGJzaXplLCBmcnNpemUsIGJsb2NrcywgYmZyZWUsIGJhdmFpbCwgZmlsZXMsIGZmcmVlLCBmYXZhaWwsIGZsYWcsIG5hbWVtYXgpLApvciB2aWEgdGhlIGF0dHJpYnV0ZXMgZl9ic2l6ZSwgZl9mcnNpemUsIGZfYmxvY2tzLCBmX2JmcmVlLCBhbmQgc28gb24uCgpTZWUgb3Muc3RhdHZmcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4AAEEgdHVwbGUgb2YgKGNvbHVtbnMsIGxpbmVzKSBmb3IgaG9sZGluZyB0ZXJtaW5hbCB3aW5kb3cgc2l6ZQAAAABpc19kaXIoJHNlbGYsIC8sICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQotLQoKUmV0dXJuIFRydWUgaWYgdGhlIGVudHJ5IGlzIGEgZGlyZWN0b3J5OyBjYWNoZWQgcGVyIGVudHJ5LgAAAAAAAAAAaXNfZmlsZSgkc2VsZiwgLywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgZW50cnkgaXMgYSBmaWxlOyBjYWNoZWQgcGVyIGVudHJ5LgAAAAAAAAAAAAAAAGlzX3N5bWxpbmsoJHNlbGYsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgZW50cnkgaXMgYSBzeW1ib2xpYyBsaW5rOyBjYWNoZWQgcGVyIGVudHJ5LgAAAAAAAAAAAHN0YXQoJHNlbGYsIC8sICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQotLQoKUmV0dXJuIHN0YXRfcmVzdWx0IG9iamVjdCBmb3IgdGhlIGVudHJ5OyBjYWNoZWQgcGVyIGVudHJ5LgAAAAAAAAAAAABpbm9kZSgkc2VsZiwgLykKLS0KClJldHVybiBpbm9kZSBvZiB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkuAAAAAAAAAAAAAAAAAAAAAF9fZnNwYXRoX18oJHNlbGYsIC8pCi0tCgpSZXR1cm5zIHRoZSBwYXRoIGZvciB0aGUgZW50cnkuAAAAAAAAAAB0aW1lc19yZXN1bHQ6IFJlc3VsdCBmcm9tIG9zLnRpbWVzKCkuCgpUaGlzIG9iamVjdCBtYXkgYmUgYWNjZXNzZWQgZWl0aGVyIGFzIGEgdHVwbGUgb2YKICAodXNlciwgc3lzdGVtLCBjaGlsZHJlbl91c2VyLCBjaGlsZHJlbl9zeXN0ZW0sIGVsYXBzZWQpLApvciB2aWEgdGhlIGF0dHJpYnV0ZXMgdXNlciwgc3lzdGVtLCBjaGlsZHJlbl91c2VyLCBjaGlsZHJlbl9zeXN0ZW0sCmFuZCBlbGFwc2VkLgoKU2VlIG9zLnRpbWVzIGZvciBtb3JlIGluZm9ybWF0aW9uLgAAAAAAAAAAAHVuYW1lX3Jlc3VsdDogUmVzdWx0IGZyb20gb3MudW5hbWUoKS4KClRoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZgogIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSksCm9yIHZpYSB0aGUgYXR0cmlidXRlcyBzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgYW5kIG1hY2hpbmUuCgpTZWUgb3MudW5hbWUgZm9yIG1vcmUgaW5mb3JtYXRpb24uAAAAAAAAAAAAAABUaGlzIG1vZHVsZSBwcm92aWRlcyBtZWNoYW5pc21zIHRvIHVzZSBzaWduYWwgaGFuZGxlcnMgaW4gUHl0aG9uLgoKRnVuY3Rpb25zOgoKYWxhcm0oKSAtLSBjYXVzZSBTSUdBTFJNIGFmdGVyIGEgc3BlY2lmaWVkIHRpbWUgW1VuaXggb25seV0Kc2V0aXRpbWVyKCkgLS0gY2F1c2UgYSBzaWduYWwgKGRlc2NyaWJlZCBiZWxvdykgYWZ0ZXIgYSBzcGVjaWZpZWQKICAgICAgICAgICAgICAgZmxvYXQgdGltZSBhbmQgdGhlIHRpbWVyIG1heSByZXN0YXJ0IHRoZW4gW1VuaXggb25seV0KZ2V0aXRpbWVyKCkgLS0gZ2V0IGN1cnJlbnQgdmFsdWUgb2YgdGltZXIgW1VuaXggb25seV0Kc2lnbmFsKCkgLS0gc2V0IHRoZSBhY3Rpb24gZm9yIGEgZ2l2ZW4gc2lnbmFsCmdldHNpZ25hbCgpIC0tIGdldCB0aGUgc2lnbmFsIGFjdGlvbiBmb3IgYSBnaXZlbiBzaWduYWwKcGF1c2UoKSAtLSB3YWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMgW1VuaXggb25seV0KZGVmYXVsdF9pbnRfaGFuZGxlcigpIC0tIGRlZmF1bHQgU0lHSU5UIGhhbmRsZXIKCnNpZ25hbCBjb25zdGFudHM6ClNJR19ERkwgLS0gdXNlZCB0byByZWZlciB0byB0aGUgc3lzdGVtIGRlZmF1bHQgaGFuZGxlcgpTSUdfSUdOIC0tIHVzZWQgdG8gaWdub3JlIHRoZSBzaWduYWwKTlNJRyAtLSBudW1iZXIgb2YgZGVmaW5lZCBzaWduYWxzClNJR0lOVCwgU0lHVEVSTSwgZXRjLiAtLSBzaWduYWwgbnVtYmVycwoKaXRpbWVyIGNvbnN0YW50czoKSVRJTUVSX1JFQUwgLS0gZGVjcmVtZW50cyBpbiByZWFsIHRpbWUsIGFuZCBkZWxpdmVycyBTSUdBTFJNIHVwb24KICAgICAgICAgICAgICAgZXhwaXJhdGlvbgpJVElNRVJfVklSVFVBTCAtLSBkZWNyZW1lbnRzIG9ubHkgd2hlbiB0aGUgcHJvY2VzcyBpcyBleGVjdXRpbmcsCiAgICAgICAgICAgICAgIGFuZCBkZWxpdmVycyBTSUdWVEFMUk0gdXBvbiBleHBpcmF0aW9uCklUSU1FUl9QUk9GIC0tIGRlY3JlbWVudHMgYm90aCB3aGVuIHRoZSBwcm9jZXNzIGlzIGV4ZWN1dGluZyBhbmQKICAgICAgICAgICAgICAgd2hlbiB0aGUgc3lzdGVtIGlzIGV4ZWN1dGluZyBvbiBiZWhhbGYgb2YgdGhlIHByb2Nlc3MuCiAgICAgICAgICAgICAgIENvdXBsZWQgd2l0aCBJVElNRVJfVklSVFVBTCwgdGhpcyB0aW1lciBpcyB1c3VhbGx5CiAgICAgICAgICAgICAgIHVzZWQgdG8gcHJvZmlsZSB0aGUgdGltZSBzcGVudCBieSB0aGUgYXBwbGljYXRpb24KICAgICAgICAgICAgICAgaW4gdXNlciBhbmQga2VybmVsIHNwYWNlLiBTSUdQUk9GIGlzIGRlbGl2ZXJlZCB1cG9uCiAgICAgICAgICAgICAgIGV4cGlyYXRpb24uCgoKKioqIElNUE9SVEFOVCBOT1RJQ0UgKioqCkEgc2lnbmFsIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czoKdGhlIGZpcnN0IGlzIHRoZSBzaWduYWwgbnVtYmVyLCB0aGUgc2Vjb25kIGlzIHRoZSBpbnRlcnJ1cHRlZCBzdGFjayBmcmFtZS4AAAAAAAAAAAAAAGRlZmF1bHRfaW50X2hhbmRsZXIoJG1vZHVsZSwgc2lnbmFsbnVtLCBmcmFtZSwgLykKLS0KClRoZSBkZWZhdWx0IGhhbmRsZXIgZm9yIFNJR0lOVCBpbnN0YWxsZWQgYnkgUHl0aG9uLgoKSXQgcmFpc2VzIEtleWJvYXJkSW50ZXJydXB0LgAAAAAAAAAAAGdldGl0aW1lcigkbW9kdWxlLCB3aGljaCwgLykKLS0KClJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBnaXZlbiBpdGltZXIuAAAAAAAAAAAAc2lnbmFsKCRtb2R1bGUsIHNpZ25hbG51bSwgaGFuZGxlciwgLykKLS0KClNldCB0aGUgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLgoKVGhlIGFjdGlvbiBjYW4gYmUgU0lHX0RGTCwgU0lHX0lHTiwgb3IgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LgpUaGUgcHJldmlvdXMgYWN0aW9uIGlzIHJldHVybmVkLiAgU2VlIGdldHNpZ25hbCgpIGZvciBwb3NzaWJsZSByZXR1cm4gdmFsdWVzLgoKKioqIElNUE9SVEFOVCBOT1RJQ0UgKioqCkEgc2lnbmFsIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czoKdGhlIGZpcnN0IGlzIHRoZSBzaWduYWwgbnVtYmVyLCB0aGUgc2Vjb25kIGlzIHRoZSBpbnRlcnJ1cHRlZCBzdGFjayBmcmFtZS4AAAAAcmFpc2Vfc2lnbmFsKCRtb2R1bGUsIHNpZ25hbG51bSwgLykKLS0KClNlbmQgYSBzaWduYWwgdG8gdGhlIGV4ZWN1dGluZyBwcm9jZXNzLgBzdHJzaWduYWwoJG1vZHVsZSwgc2lnbmFsbnVtLCAvKQotLQoKUmV0dXJuIHRoZSBzeXN0ZW0gZGVzY3JpcHRpb24gb2YgdGhlIGdpdmVuIHNpZ25hbC4KClJldHVybnMgdGhlIGRlc2NyaXB0aW9uIG9mIHNpZ25hbCAqc2lnbmFsbnVtKiwgc3VjaCBhcyAiSW50ZXJydXB0Igpmb3IgOmNvbnN0OmBTSUdJTlRgLiBSZXR1cm5zIDpjb25zdDpgTm9uZWAgaWYgKnNpZ25hbG51bSogaGFzIG5vCmRlc2NyaXB0aW9uLiBSYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKnNpZ25hbG51bSogaXMgaW52YWxpZC4AAABnZXRzaWduYWwoJG1vZHVsZSwgc2lnbmFsbnVtLCAvKQotLQoKUmV0dXJuIHRoZSBjdXJyZW50IGFjdGlvbiBmb3IgdGhlIGdpdmVuIHNpZ25hbC4KClRoZSByZXR1cm4gdmFsdWUgY2FuIGJlOgogIFNJR19JR04gLS0gaWYgdGhlIHNpZ25hbCBpcyBiZWluZyBpZ25vcmVkCiAgU0lHX0RGTCAtLSBpZiB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBzaWduYWwgaXMgaW4gZWZmZWN0CiAgTm9uZSAgICAtLSBpZiBhbiB1bmtub3duIGhhbmRsZXIgaXMgaW4gZWZmZWN0CiAgYW55dGhpbmcgZWxzZSAtLSB0aGUgY2FsbGFibGUgUHl0aG9uIG9iamVjdCB1c2VkIGFzIGEgaGFuZGxlcgAAAAAAAABzZXRfd2FrZXVwX2ZkKGZkLCAqLCB3YXJuX29uX2Z1bGxfYnVmZmVyPVRydWUpIC0+IGZkCgpTZXRzIHRoZSBmZCB0byBiZSB3cml0dGVuIHRvICh3aXRoIHRoZSBzaWduYWwgbnVtYmVyKSB3aGVuIGEgc2lnbmFsCmNvbWVzIGluLiAgQSBsaWJyYXJ5IGNhbiB1c2UgdGhpcyB0byB3YWtldXAgc2VsZWN0IG9yIHBvbGwuClRoZSBwcmV2aW91cyBmZCBvciAtMSBpcyByZXR1cm5lZC4KClRoZSBmZCBtdXN0IGJlIG5vbi1ibG9ja2luZy4AAAAAAAAAAAAAc2lnaW50ZXJydXB0KCRtb2R1bGUsIHNpZ25hbG51bSwgZmxhZywgLykKLS0KCkNoYW5nZSBzeXN0ZW0gY2FsbCByZXN0YXJ0IGJlaGF2aW91ci4KCklmIGZsYWcgaXMgRmFsc2UsIHN5c3RlbSBjYWxscyB3aWxsIGJlIHJlc3RhcnRlZCB3aGVuIGludGVycnVwdGVkIGJ5CnNpZ25hbCBzaWcsIGVsc2Ugc3lzdGVtIGNhbGxzIHdpbGwgYmUgaW50ZXJydXB0ZWQuAAAAAHBhdXNlKCRtb2R1bGUsIC8pCi0tCgpXYWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMuAAAAAAAAAAAAAAAAAABwdGhyZWFkX3NpZ21hc2soJG1vZHVsZSwgaG93LCBtYXNrLCAvKQotLQoKRmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUgc2lnbmFsIG1hc2sgb2YgdGhlIGNhbGxpbmcgdGhyZWFkLgAAAAAAAAAAAAAAc2lncGVuZGluZygkbW9kdWxlLCAvKQotLQoKRXhhbWluZSBwZW5kaW5nIHNpZ25hbHMuCgpSZXR1cm5zIGEgc2V0IG9mIHNpZ25hbCBudW1iZXJzIHRoYXQgYXJlIHBlbmRpbmcgZm9yIGRlbGl2ZXJ5IHRvCnRoZSBjYWxsaW5nIHRocmVhZC4AAAAAAAAAc2lnd2FpdCgkbW9kdWxlLCBzaWdzZXQsIC8pCi0tCgpXYWl0IGZvciBhIHNpZ25hbC4KClN1c3BlbmQgZXhlY3V0aW9uIG9mIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgZGVsaXZlcnkgb2Ygb25lIG9mIHRoZQpzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCBzaWdzZXQuICBUaGUgZnVuY3Rpb24gYWNjZXB0cyB0aGUgc2lnbmFsCmFuZCByZXR1cm5zIHRoZSBzaWduYWwgbnVtYmVyLgAAAAAAAAAAc2lnd2FpdGluZm8oJG1vZHVsZSwgc2lnc2V0LCAvKQotLQoKV2FpdCBzeW5jaHJvbm91c2x5IHVudGlsIG9uZSBvZiB0aGUgc2lnbmFscyBpbiAqc2lnc2V0KiBpcyBkZWxpdmVyZWQuCgpSZXR1cm5zIGEgc3RydWN0X3NpZ2luZm8gY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lnbmFsLgAAAABzaWd0aW1lZHdhaXQoJG1vZHVsZSwgc2lnc2V0LCB0aW1lb3V0LCAvKQotLQoKTGlrZSBzaWd3YWl0aW5mbygpLCBidXQgd2l0aCBhIHRpbWVvdXQuCgpUaGUgdGltZW91dCBpcyBzcGVjaWZpZWQgaW4gc2Vjb25kcywgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFsbG93ZWQuAAAAAAAAAAAAAAAAAAAAAHZhbGlkX3NpZ25hbHMoJG1vZHVsZSwgLykKLS0KClJldHVybiBhIHNldCBvZiB2YWxpZCBzaWduYWwgbnVtYmVycyBvbiB0aGlzIHBsYXRmb3JtLgoKVGhlIHNpZ25hbCBudW1iZXJzIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNhZmVseSBwYXNzZWQgdG8KZnVuY3Rpb25zIGxpa2UgYHB0aHJlYWRfc2lnbWFza2AuAAAAAHN0cnVjdF9zaWdpbmZvOiBSZXN1bHQgZnJvbSBzaWd3YWl0aW5mbyBvciBzaWd0aW1lZHdhaXQuCgpUaGlzIG9iamVjdCBtYXkgYmUgYWNjZXNzZWQgZWl0aGVyIGFzIGEgdHVwbGUgb2YKKHNpX3NpZ25vLCBzaV9jb2RlLCBzaV9lcnJubywgc2lfcGlkLCBzaV91aWQsIHNpX3N0YXR1cywgc2lfYmFuZCksCm9yIHZpYSB0aGUgYXR0cmlidXRlcyBzaV9zaWdubywgc2lfY29kZSwgYW5kIHNvIG9uLgAAAAAAAAAAAAAAAAAAAERlYnVnIG1vZHVsZSB0byB0cmFjZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZCBieSBQeXRob24uAAAAAAAAAABpc190cmFjaW5nKCRtb2R1bGUsIC8pCi0tCgpSZXR1cm4gVHJ1ZSBpZiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucy4AAAAAAAAAAAAAY2xlYXJfdHJhY2VzKCRtb2R1bGUsIC8pCi0tCgpDbGVhciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgUHl0aG9uLgBfZ2V0X3RyYWNlcygkbW9kdWxlLCAvKQotLQoKR2V0IHRyYWNlcyBvZiBhbGwgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgUHl0aG9uLgoKUmV0dXJuIGEgbGlzdCBvZiAoc2l6ZTogaW50LCB0cmFjZWJhY2s6IHR1cGxlKSB0dXBsZXMuCnRyYWNlYmFjayBpcyBhIHR1cGxlIG9mIChmaWxlbmFtZTogc3RyLCBsaW5lbm86IGludCkgdHVwbGVzLgoKUmV0dXJuIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyBkaXNhYmxlZC4AAAAAAAAAAAAAAAAAAF9nZXRfb2JqZWN0X3RyYWNlYmFjaygkbW9kdWxlLCBvYmosIC8pCi0tCgpHZXQgdGhlIHRyYWNlYmFjayB3aGVyZSB0aGUgUHl0aG9uIG9iamVjdCBvYmogd2FzIGFsbG9jYXRlZC4KClJldHVybiBhIHR1cGxlIG9mIChmaWxlbmFtZTogc3RyLCBsaW5lbm86IGludCkgdHVwbGVzLgpSZXR1cm4gTm9uZSBpZiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlIGlzIGRpc2FibGVkIG9yIGRpZCBub3QKdHJhY2UgdGhlIGFsbG9jYXRpb24gb2YgdGhlIG9iamVjdC4AAAAAAAAAAAAAAAAAAAAAc3RhcnQoJG1vZHVsZSwgbmZyYW1lPTEsIC8pCi0tCgpTdGFydCB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMuCgpBbHNvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIHN0b3JlZCBpbiB0aGUgdHJhY2ViYWNrIG9mIGEKdHJhY2UgdG8gbmZyYW1lLgAAAHN0b3AoJG1vZHVsZSwgLykKLS0KClN0b3AgdHJhY2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRpb25zLgoKQWxzbyBjbGVhciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgUHl0aG9uLgAAAAAAAAAAAAAAZ2V0X3RyYWNlYmFja19saW1pdCgkbW9kdWxlLCAvKQotLQoKR2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgc3RvcmVkIGluIHRoZSB0cmFjZWJhY2sgb2YgYSB0cmFjZS4KCkJ5IGRlZmF1bHQsIGEgdHJhY2Ugb2YgYW4gYWxsb2NhdGVkIG1lbW9yeSBibG9jayBvbmx5IHN0b3Jlcwp0aGUgbW9zdCByZWNlbnQgZnJhbWU6IHRoZSBsaW1pdCBpcyAxLgAAAGdldF90cmFjZW1hbGxvY19tZW1vcnkoJG1vZHVsZSwgLykKLS0KCkdldCB0aGUgbWVtb3J5IHVzYWdlIGluIGJ5dGVzIG9mIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUuCgpUaGlzIG1lbW9yeSBpcyB1c2VkIGludGVybmFsbHkgdG8gdHJhY2UgbWVtb3J5IGFsbG9jYXRpb25zLgAAAABnZXRfdHJhY2VkX21lbW9yeSgkbW9kdWxlLCAvKQotLQoKR2V0IHRoZSBjdXJyZW50IHNpemUgYW5kIHBlYWsgc2l6ZSBvZiBtZW1vcnkgYmxvY2tzIHRyYWNlZCBieSB0cmFjZW1hbGxvYy4KClJldHVybnMgYSB0dXBsZTogKGN1cnJlbnQ6IGludCwgcGVhazogaW50KS4AAAAAAAAAcmVzZXRfcGVhaygkbW9kdWxlLCAvKQotLQoKU2V0IHRoZSBwZWFrIHNpemUgb2YgbWVtb3J5IGJsb2NrcyB0cmFjZWQgYnkgdHJhY2VtYWxsb2MgdG8gdGhlIGN1cnJlbnQgc2l6ZS4KCkRvIG5vdGhpbmcgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyBub3QgdHJhY2luZyBtZW1vcnkgYWxsb2NhdGlvbnMuAAAAAAAAAAAAAAAAAAAAcmVnaXN0ZXIoJG1vZHVsZSwgc2VhcmNoX2Z1bmN0aW9uLCAvKQotLQoKUmVnaXN0ZXIgYSBjb2RlYyBzZWFyY2ggZnVuY3Rpb24uCgpTZWFyY2ggZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0byB0YWtlIG9uZSBhcmd1bWVudCwgdGhlIGVuY29kaW5nIG5hbWUgaW4KYWxsIGxvd2VyIGNhc2UgbGV0dGVycywgYW5kIGVpdGhlciByZXR1cm4gTm9uZSwgb3IgYSB0dXBsZSBvZiBmdW5jdGlvbnMKKGVuY29kZXIsIGRlY29kZXIsIHN0cmVhbV9yZWFkZXIsIHN0cmVhbV93cml0ZXIpIChvciBhIENvZGVjSW5mbyBvYmplY3QpLgAAAAAAAAAAAHVucmVnaXN0ZXIoJG1vZHVsZSwgc2VhcmNoX2Z1bmN0aW9uLCAvKQotLQoKVW5yZWdpc3RlciBhIGNvZGVjIHNlYXJjaCBmdW5jdGlvbiBhbmQgY2xlYXIgdGhlIHJlZ2lzdHJ5J3MgY2FjaGUuCgpJZiB0aGUgc2VhcmNoIGZ1bmN0aW9uIGlzIG5vdCByZWdpc3RlcmVkLCBkbyBub3RoaW5nLgAAAAAAAAAAAAAAbG9va3VwKCRtb2R1bGUsIGVuY29kaW5nLCAvKQotLQoKTG9va3MgdXAgYSBjb2RlYyB0dXBsZSBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5IGFuZCByZXR1cm5zIGEgQ29kZWNJbmZvIG9iamVjdC4AAAAAAAAAAAAAAABlbmNvZGUoJG1vZHVsZSwgLywgb2JqLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCi0tCgpFbmNvZGVzIG9iaiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuCgpUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyAndXRmLTgnLiAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYQpkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcKZXJyb3JzIHJhaXNlIGEgVmFsdWVFcnJvci4gIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScsICdyZXBsYWNlJwphbmQgJ2JhY2tzbGFzaHJlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoCmNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuAAAAZGVjb2RlKCRtb2R1bGUsIC8sIG9iaiwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKQotLQoKRGVjb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLgoKRGVmYXVsdCBlbmNvZGluZyBpcyAndXRmLTgnLiAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYQpkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcKZXJyb3JzIHJhaXNlIGEgVmFsdWVFcnJvci4gIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScsICdyZXBsYWNlJwphbmQgJ2JhY2tzbGFzaHJlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoCmNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuAAAAAAAAAGVzY2FwZV9lbmNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pCi0tCgoAAAAAAAAAAAAAAAAAAABlc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKQotLQoKAAAAAAAAAAAAAAAAAAAAdXRmXzhfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pCi0tCgoAdXRmXzhfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLykKLS0KCgAAAHV0Zl83X2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKQotLQoKAHV0Zl83X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pCi0tCgoAAAB1dGZfMTZfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIGJ5dGVvcmRlcj0wLCAvKQotLQoKAAAAdXRmXzE2X2xlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKQotLQoKAAAAAAAAAAAAAAAAAHV0Zl8xNl9iZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLykKLS0KCgAAAAAAAAAAAAAAAAB1dGZfMTZfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLykKLS0KCgAAdXRmXzE2X2xlX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pCi0tCgoAAAAAAAAAAAAAAAAAAAB1dGZfMTZfYmVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLykKLS0KCgAAAAAAAAAAAAAAAAAAAHV0Zl8xNl9leF9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGJ5dGVvcmRlcj0wLCBmaW5hbD1GYWxzZSwKICAgICAgICAgICAgICAgICAvKQotLQoKAHV0Zl8zMl9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIC8pCi0tCgoAAAB1dGZfMzJfbGVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pCi0tCgoAAAAAAAAAAAAAAAAAdXRmXzMyX2JlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKQotLQoKAAAAAAAAAAAAAAAAAHV0Zl8zMl9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKQotLQoKAAB1dGZfMzJfbGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLykKLS0KCgAAAAAAAAAAAAAAAAAAAHV0Zl8zMl9iZV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKQotLQoKAAAAAAAAAAAAAAAAAAAAdXRmXzMyX2V4X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIGZpbmFsPUZhbHNlLAogICAgICAgICAgICAgICAgIC8pCi0tCgoAdW5pY29kZV9lc2NhcGVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pCi0tCgoAAAAAAAAAAHVuaWNvZGVfZXNjYXBlX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9VHJ1ZSwgLykKLS0KCgAAAAAAAAAAAAAAcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKQotLQoKAAAAAHJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPVRydWUsIC8pCi0tCgoAAAAAAAAAbGF0aW5fMV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLykKLS0KCgAAAAAAAAAAAAAAAAAAAGxhdGluXzFfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKQotLQoKAAAAAAAAAAAAAAAAAABhc2NpaV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLykKLS0KCgBhc2NpaV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pCi0tCgoAAAAAAAAAAAAAAAAAAAAAY2hhcm1hcF9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgbWFwcGluZz1Ob25lLCAvKQotLQoKAGNoYXJtYXBfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBtYXBwaW5nPU5vbmUsIC8pCi0tCgoAAAAAAAAAAAAAAAAAAAAAY2hhcm1hcF9idWlsZCgkbW9kdWxlLCBtYXAsIC8pCi0tCgoAAAAAAAAAAAAAAAAAcmVhZGJ1ZmZlcl9lbmNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pCi0tCgoAAAAAAAAAAAAAAHJlZ2lzdGVyX2Vycm9yKCRtb2R1bGUsIGVycm9ycywgaGFuZGxlciwgLykKLS0KClJlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxlciB1bmRlciB0aGUgbmFtZSBlcnJvcnMuCgpoYW5kbGVyIG11c3QgYmUgYSBjYWxsYWJsZSBvYmplY3QsIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24KaW5zdGFuY2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVuY29kaW5nL2RlY29kaW5nCmVycm9yIGFuZCBtdXN0IHJldHVybiBhIChyZXBsYWNlbWVudCwgbmV3IHBvc2l0aW9uKSB0dXBsZS4AAAAAbG9va3VwX2Vycm9yKCRtb2R1bGUsIG5hbWUsIC8pCi0tCgpsb29rdXBfZXJyb3IoZXJyb3JzKSAtPiBoYW5kbGVyCgpSZXR1cm4gdGhlIGVycm9yIGhhbmRsZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxpbmcgbmFtZSBvciByYWlzZSBhCkxvb2t1cEVycm9yLCBpZiBubyBoYW5kbGVyIGV4aXN0cyB1bmRlciB0aGlzIG5hbWUuAAAAAAAAAAAAAAAAAAAAAEhpZ2ggcGVyZm9ybWFuY2UgZGF0YSBzdHJ1Y3R1cmVzLgotIGRlcXVlOiAgICAgICAgb3JkZXJlZCBjb2xsZWN0aW9uIGFjY2Vzc2libGUgZnJvbSBlbmRwb2ludHMgb25seQotIGRlZmF1bHRkaWN0OiAgZGljdCBzdWJjbGFzcyB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBmYWN0b3J5CgBfY291bnRfZWxlbWVudHMoJG1vZHVsZSwgbWFwcGluZywgaXRlcmFibGUsIC8pCi0tCgpDb3VudCBlbGVtZW50cyBpbiB0aGUgaXRlcmFibGUsIHVwZGF0aW5nIHRoZSBtYXBwaW5nAAAAAAAAAAAAZGVxdWUoW2l0ZXJhYmxlWywgbWF4bGVuXV0pIC0tPiBkZXF1ZSBvYmplY3QKCkEgbGlzdC1saWtlIHNlcXVlbmNlIG9wdGltaXplZCBmb3IgZGF0YSBhY2Nlc3NlcyBuZWFyIGl0cyBlbmRwb2ludHMuAAAAAAAAAAAAAAAAAABBZGQgYW4gZWxlbWVudCB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuAABBZGQgYW4gZWxlbWVudCB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4AAABSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlLgAAAAAAAAAAAAAAAABSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgYSBkZXF1ZS4AAAAAAAAAAAAAAAAAAABELmNvdW50KHZhbHVlKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgdmFsdWUAAAAAAAAAAAAAAAAAAEV4dGVuZCB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUgd2l0aCBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZQAAAAAAAAAAAAAAAAAARXh0ZW5kIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlIHdpdGggZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUAAAAAAAAAAAAAAAAAAABELmluZGV4KHZhbHVlLCBbc3RhcnQsIFtzdG9wXV0pIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLgpSYWlzZXMgVmFsdWVFcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuAAAAAAAAAEQuaW5zZXJ0KGluZGV4LCBvYmplY3QpIC0tIGluc2VydCBvYmplY3QgYmVmb3JlIGluZGV4AAAAAAAAAAAAAABSZW1vdmUgYW5kIHJldHVybiB0aGUgcmlnaHRtb3N0IGVsZW1lbnQuAAAAAAAAAABSZW1vdmUgYW5kIHJldHVybiB0aGUgbGVmdG1vc3QgZWxlbWVudC4AAAAAAAAAAABSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgAAAAAAAAAAAABELnJlbW92ZSh2YWx1ZSkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuAAAAAAAAAAAAAAAARC5fX3JldmVyc2VkX18oKSAtLSByZXR1cm4gYSByZXZlcnNlIGl0ZXJhdG9yIG92ZXIgdGhlIGRlcXVlAAAAAEQucmV2ZXJzZSgpIC0tIHJldmVyc2UgKklOIFBMQUNFKgAAAAAAAAAAAAAAAAAAAFJvdGF0ZSB0aGUgZGVxdWUgbiBzdGVwcyB0byB0aGUgcmlnaHQgKGRlZmF1bHQgbj0xKS4gIElmIG4gaXMgbmVnYXRpdmUsIHJvdGF0ZXMgbGVmdC4AAAAAAAAAAAAAAEQuX19zaXplb2ZfXygpIC0tIHNpemUgb2YgRCBpbiBtZW1vcnksIGluIGJ5dGVzAGRlZmF1bHRkaWN0KGRlZmF1bHRfZmFjdG9yeT1Ob25lLCAvLCBbLi4uXSkgLS0+IGRpY3Qgd2l0aCBkZWZhdWx0IGZhY3RvcnkKClRoZSBkZWZhdWx0IGZhY3RvcnkgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzIHRvIHByb2R1Y2UKYSBuZXcgdmFsdWUgd2hlbiBhIGtleSBpcyBub3QgcHJlc2VudCwgaW4gX19nZXRpdGVtX18gb25seS4KQSBkZWZhdWx0ZGljdCBjb21wYXJlcyBlcXVhbCB0byBhIGRpY3Qgd2l0aCB0aGUgc2FtZSBpdGVtcy4KQWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgaWYgdGhleSB3ZXJlCnBhc3NlZCB0byB0aGUgZGljdCBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIGtleXdvcmQgYXJndW1lbnRzLgoAAAAAAAAAAF9fbWlzc2luZ19fKGtleSkgIyBDYWxsZWQgYnkgX19nZXRpdGVtX18gZm9yIG1pc3Npbmcga2V5OyBwc2V1ZG8tY29kZToKICBpZiBzZWxmLmRlZmF1bHRfZmFjdG9yeSBpcyBOb25lOiByYWlzZSBLZXlFcnJvcigoa2V5LCkpCiAgc2VsZltrZXldID0gdmFsdWUgPSBzZWxmLmRlZmF1bHRfZmFjdG9yeSgpCiAgcmV0dXJuIHZhbHVlCgAAAEQuY29weSgpIC0+IGEgc2hhbGxvdyBjb3B5IG9mIEQuAAAAAAAAAAAAAAAAAAAAAFByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLgAAAAAAAAAAAABUaGlzIG1vZHVsZSBtYWtlcyBhdmFpbGFibGUgc3RhbmRhcmQgZXJybm8gc3lzdGVtIHN5bWJvbHMuCgpUaGUgdmFsdWUgb2YgZWFjaCBzeW1ib2wgaXMgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZWdlciB2YWx1ZSwKZS5nLiwgb24gbW9zdCBzeXN0ZW1zLCBlcnJuby5FTk9FTlQgZXF1YWxzIHRoZSBpbnRlZ2VyIDIuCgpUaGUgZGljdGlvbmFyeSBlcnJuby5lcnJvcmNvZGUgbWFwcyBudW1lcmljIGNvZGVzIHRvIHN5bWJvbCBuYW1lcywKZS5nLiwgZXJybm8uZXJyb3Jjb2RlWzJdIGNvdWxkIGJlIHRoZSBzdHJpbmcgJ0VOT0VOVCcuCgpTeW1ib2xzIHRoYXQgYXJlIG5vdCByZWxldmFudCB0byB0aGUgdW5kZXJseWluZyBzeXN0ZW0gYXJlIG5vdCBkZWZpbmVkLgoKVG8gbWFwIGVycm9yIGNvZGVzIHRvIGVycm9yIG1lc3NhZ2VzLCB1c2UgdGhlIGZ1bmN0aW9uIG9zLnN0cmVycm9yKCksCmUuZy4gb3Muc3RyZXJyb3IoMikgY291bGQgcmV0dXJuICdObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Jy4AAAAAAFRoZSBpbyBtb2R1bGUgcHJvdmlkZXMgdGhlIFB5dGhvbiBpbnRlcmZhY2VzIHRvIHN0cmVhbSBoYW5kbGluZy4gVGhlCmJ1aWx0aW4gb3BlbiBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLgoKQXQgdGhlIHRvcCBvZiB0aGUgSS9PIGhpZXJhcmNoeSBpcyB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBJT0Jhc2UuIEl0CmRlZmluZXMgdGhlIGJhc2ljIGludGVyZmFjZSB0byBhIHN0cmVhbS4gTm90ZSwgaG93ZXZlciwgdGhhdCB0aGVyZSBpcyBubwpzZXBhcmF0aW9uIGJldHdlZW4gcmVhZGluZyBhbmQgd3JpdGluZyB0byBzdHJlYW1zOyBpbXBsZW1lbnRhdGlvbnMgYXJlCmFsbG93ZWQgdG8gcmFpc2UgYW4gT1NFcnJvciBpZiB0aGV5IGRvIG5vdCBzdXBwb3J0IGEgZ2l2ZW4gb3BlcmF0aW9uLgoKRXh0ZW5kaW5nIElPQmFzZSBpcyBSYXdJT0Jhc2Ugd2hpY2ggZGVhbHMgc2ltcGx5IHdpdGggdGhlIHJlYWRpbmcgYW5kCndyaXRpbmcgb2YgcmF3IGJ5dGVzIHRvIGEgc3RyZWFtLiBGaWxlSU8gc3ViY2xhc3NlcyBSYXdJT0Jhc2UgdG8gcHJvdmlkZQphbiBpbnRlcmZhY2UgdG8gT1MgZmlsZXMuCgpCdWZmZXJlZElPQmFzZSBkZWFscyB3aXRoIGJ1ZmZlcmluZyBvbiBhIHJhdyBieXRlIHN0cmVhbSAoUmF3SU9CYXNlKS4gSXRzCnN1YmNsYXNzZXMsIEJ1ZmZlcmVkV3JpdGVyLCBCdWZmZXJlZFJlYWRlciwgYW5kIEJ1ZmZlcmVkUldQYWlyIGJ1ZmZlcgpzdHJlYW1zIHRoYXQgYXJlIHJlYWRhYmxlLCB3cml0YWJsZSwgYW5kIGJvdGggcmVzcGVjdGl2ZWx5LgpCdWZmZXJlZFJhbmRvbSBwcm92aWRlcyBhIGJ1ZmZlcmVkIGludGVyZmFjZSB0byByYW5kb20gYWNjZXNzCnN0cmVhbXMuIEJ5dGVzSU8gaXMgYSBzaW1wbGUgc3RyZWFtIG9mIGluLW1lbW9yeSBieXRlcy4KCkFub3RoZXIgSU9CYXNlIHN1YmNsYXNzLCBUZXh0SU9CYXNlLCBkZWFscyB3aXRoIHRoZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcKb2Ygc3RyZWFtcyBpbnRvIHRleHQuIFRleHRJT1dyYXBwZXIsIHdoaWNoIGV4dGVuZHMgaXQsIGlzIGEgYnVmZmVyZWQgdGV4dAppbnRlcmZhY2UgdG8gYSBidWZmZXJlZCByYXcgc3RyZWFtIChgQnVmZmVyZWRJT0Jhc2VgKS4gRmluYWxseSwgU3RyaW5nSU8KaXMgYW4gaW4tbWVtb3J5IHN0cmVhbSBmb3IgdGV4dC4KCkFyZ3VtZW50IG5hbWVzIGFyZSBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgYW5kIG9ubHkgdGhlIGFyZ3VtZW50cwpvZiBvcGVuKCkgYXJlIGludGVuZGVkIHRvIGJlIHVzZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCgpkYXRhOgoKREVGQVVMVF9CVUZGRVJfU0laRQoKICAgQW4gaW50IGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYnVmZmVyIHNpemUgdXNlZCBieSB0aGUgbW9kdWxlJ3MgYnVmZmVyZWQKICAgSS9PIGNsYXNzZXMuIG9wZW4oKSB1c2VzIHRoZSBmaWxlJ3MgYmxrc2l6ZSAoYXMgb2J0YWluZWQgYnkgb3Muc3RhdCkgaWYKICAgcG9zc2libGUuCgAAAAAAAAAAAAAAAAAAAG9wZW4oJG1vZHVsZSwgLywgZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwKICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKQotLQoKT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBPU0Vycm9yIHVwb24gZmFpbHVyZS4KCmZpbGUgaXMgZWl0aGVyIGEgdGV4dCBvciBieXRlIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUgKGFuZCB0aGUgcGF0aAppZiB0aGUgZmlsZSBpc24ndCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb2YgdGhlIGZpbGUgdG8KYmUgb3BlbmVkIG9yIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlCndyYXBwZWQuIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlCnJldHVybmVkIEkvTyBvYmplY3QgaXMgY2xvc2VkLCB1bmxlc3MgY2xvc2VmZCBpcyBzZXQgdG8gRmFsc2UuKQoKbW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUKaXMgb3BlbmVkLiBJdCBkZWZhdWx0cyB0byAncicgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0Cm1vZGUuICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSAndycgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYKaXQgYWxyZWFkeSBleGlzdHMpLCAneCcgZm9yIGNyZWF0aW5nIGFuZCB3cml0aW5nIHRvIGEgbmV3IGZpbGUsIGFuZAonYScgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlcwphcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLgpJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0KZGVwZW5kZW50OiBsb2NhbGUuZ2V0ZW5jb2RpbmcoKSBpcyBjYWxsZWQgdG8gZ2V0IHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4KKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdyBieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlIGVuY29kaW5nCnVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6Cgo9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYXJhY3RlciBNZWFuaW5nCi0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJ3InICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpCid3JyAgICAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0Cid4JyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZwonYScgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzCidiJyAgICAgICBiaW5hcnkgbW9kZQondCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KQonKycgICAgICAgb3BlbiBhIGRpc2sgZmlsZSBmb3IgdXBkYXRpbmcgKHJlYWRpbmcgYW5kIHdyaXRpbmcpCj09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoZSBkZWZhdWx0IG1vZGUgaXMgJ3J0JyAob3BlbiBmb3IgcmVhZGluZyB0ZXh0KS4gRm9yIGJpbmFyeSByYW5kb20KYWNjZXNzLCB0aGUgbW9kZSAndytiJyBvcGVucyBhbmQgdHJ1bmNhdGVzIHRoZSBmaWxlIHRvIDAgYnl0ZXMsIHdoaWxlCidyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZApyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuCgpQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsCmV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpbgpiaW5hcnkgbW9kZSAoYXBwZW5kaW5nICdiJyB0byB0aGUgbW9kZSBhcmd1bWVudCkgcmV0dXJuIGNvbnRlbnRzIGFzCmJ5dGVzIG9iamVjdHMgd2l0aG91dCBhbnkgZGVjb2RpbmcuIEluIHRleHQgbW9kZSAodGhlIGRlZmF1bHQsIG9yIHdoZW4KJ3QnIGlzIGFwcGVuZGVkIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZQpyZXR1cm5lZCBhcyBzdHJpbmdzLCB0aGUgYnl0ZXMgaGF2aW5nIGJlZW4gZmlyc3QgZGVjb2RlZCB1c2luZyBhCnBsYXRmb3JtLWRlcGVuZGVudCBlbmNvZGluZyBvciB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGlmIGdpdmVuLgoKYnVmZmVyaW5nIGlzIGFuIG9wdGlvbmFsIGludGVnZXIgdXNlZCB0byBzZXQgdGhlIGJ1ZmZlcmluZyBwb2xpY3kuClBhc3MgMCB0byBzd2l0Y2ggYnVmZmVyaW5nIG9mZiAob25seSBhbGxvd2VkIGluIGJpbmFyeSBtb2RlKSwgMSB0byBzZWxlY3QKbGluZSBidWZmZXJpbmcgKG9ubHkgdXNhYmxlIGluIHRleHQgbW9kZSksIGFuZCBhbiBpbnRlZ2VyID4gMSB0byBpbmRpY2F0ZQp0aGUgc2l6ZSBvZiBhIGZpeGVkLXNpemUgY2h1bmsgYnVmZmVyLiAgV2hlbiBubyBidWZmZXJpbmcgYXJndW1lbnQgaXMKZ2l2ZW4sIHRoZSBkZWZhdWx0IGJ1ZmZlcmluZyBwb2xpY3kgd29ya3MgYXMgZm9sbG93czoKCiogQmluYXJ5IGZpbGVzIGFyZSBidWZmZXJlZCBpbiBmaXhlZC1zaXplIGNodW5rczsgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcgogIGlzIGNob3NlbiB1c2luZyBhIGhldXJpc3RpYyB0cnlpbmcgdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmx5aW5nIGRldmljZSdzCiAgImJsb2NrIHNpemUiIGFuZCBmYWxsaW5nIGJhY2sgb24gYGlvLkRFRkFVTFRfQlVGRkVSX1NJWkVgLgogIE9uIG1hbnkgc3lzdGVtcywgdGhlIGJ1ZmZlciB3aWxsIHR5cGljYWxseSBiZSA0MDk2IG9yIDgxOTIgYnl0ZXMgbG9uZy4KCiogIkludGVyYWN0aXZlIiB0ZXh0IGZpbGVzIChmaWxlcyBmb3Igd2hpY2ggaXNhdHR5KCkgcmV0dXJucyBUcnVlKQogIHVzZSBsaW5lIGJ1ZmZlcmluZy4gIE90aGVyIHRleHQgZmlsZXMgdXNlIHRoZSBwb2xpY3kgZGVzY3JpYmVkIGFib3ZlCiAgZm9yIGJpbmFyeSBmaWxlcy4KCmVuY29kaW5nIGlzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGRlY29kZSBvciBlbmNvZGUgdGhlCmZpbGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzCnBsYXRmb3JtIGRlcGVuZGVudCwgYnV0IGFueSBlbmNvZGluZyBzdXBwb3J0ZWQgYnkgUHl0aG9uIGNhbiBiZQpwYXNzZWQuICBTZWUgdGhlIGNvZGVjcyBtb2R1bGUgZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBlbmNvZGluZ3MuCgplcnJvcnMgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIGhvdyBlbmNvZGluZyBlcnJvcnMgYXJlIHRvCmJlIGhhbmRsZWQtLS10aGlzIGFyZ3VtZW50IHNob3VsZCBub3QgYmUgdXNlZCBpbiBiaW5hcnkgbW9kZS4gUGFzcwonc3RyaWN0JyB0byByYWlzZSBhIFZhbHVlRXJyb3IgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFuIGVuY29kaW5nIGVycm9yCih0aGUgZGVmYXVsdCBvZiBOb25lIGhhcyB0aGUgc2FtZSBlZmZlY3QpLCBvciBwYXNzICdpZ25vcmUnIHRvIGlnbm9yZQplcnJvcnMuIChOb3RlIHRoYXQgaWdub3JpbmcgZW5jb2RpbmcgZXJyb3JzIGNhbiBsZWFkIHRvIGRhdGEgbG9zcy4pClNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgY29kZWNzLnJlZ2lzdGVyIG9yIHJ1biAnaGVscChjb2RlY3MuQ29kZWMpJwpmb3IgYSBsaXN0IG9mIHRoZSBwZXJtaXR0ZWQgZW5jb2RpbmcgZXJyb3Igc3RyaW5ncy4KCm5ld2xpbmUgY29udHJvbHMgaG93IHVuaXZlcnNhbCBuZXdsaW5lcyB3b3JrcyAoaXQgb25seSBhcHBsaWVzIHRvIHRleHQKbW9kZSkuIEl0IGNhbiBiZSBOb25lLCAnJywgJ1xuJywgJ1xyJywgYW5kICdcclxuJy4gIEl0IHdvcmtzIGFzCmZvbGxvd3M6CgoqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzCiAgZW5hYmxlZC4gTGluZXMgaW4gdGhlIGlucHV0IGNhbiBlbmQgaW4gJ1xuJywgJ1xyJywgb3IgJ1xyXG4nLCBhbmQKICB0aGVzZSBhcmUgdHJhbnNsYXRlZCBpbnRvICdcbicgYmVmb3JlIGJlaW5nIHJldHVybmVkIHRvIHRoZQogIGNhbGxlci4gSWYgaXQgaXMgJycsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmUKICBlbmRpbmdzIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4gSWYgaXQgaGFzIGFueSBvZgogIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGlucHV0IGxpbmVzIGFyZSBvbmx5IHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuCiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLgoKKiBPbiBvdXRwdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgYW55ICdcbicgY2hhcmFjdGVycyB3cml0dGVuIGFyZQogIHRyYW5zbGF0ZWQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZgogIG5ld2xpbmUgaXMgJycgb3IgJ1xuJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55CiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55ICdcbicgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkCiAgdG8gdGhlIGdpdmVuIHN0cmluZy4KCklmIGNsb3NlZmQgaXMgRmFsc2UsIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGtlcHQgb3Blbgp3aGVuIHRoZSBmaWxlIGlzIGNsb3NlZC4gVGhpcyBkb2VzIG5vdCB3b3JrIHdoZW4gYSBmaWxlIG5hbWUgaXMgZ2l2ZW4KYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuCgpBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUKdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5CmNhbGxpbmcgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbgpmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkKc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgoKb3BlbigpIHJldHVybnMgYSBmaWxlIG9iamVjdCB3aG9zZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1vZGUsIGFuZAp0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nCmFyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKCd3JywKJ3InLCAnd3QnLCAncnQnLCBldGMuKSwgaXQgcmV0dXJucyBhIFRleHRJT1dyYXBwZXIuIFdoZW4gdXNlZCB0byBvcGVuCmEgZmlsZSBpbiBhIGJpbmFyeSBtb2RlLCB0aGUgcmV0dXJuZWQgY2xhc3MgdmFyaWVzOiBpbiByZWFkIGJpbmFyeQptb2RlLCBpdCByZXR1cm5zIGEgQnVmZmVyZWRSZWFkZXI7IGluIHdyaXRlIGJpbmFyeSBhbmQgYXBwZW5kIGJpbmFyeQptb2RlcywgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkV3JpdGVyLCBhbmQgaW4gcmVhZC93cml0ZSBtb2RlLCBpdCByZXR1cm5zCmEgQnVmZmVyZWRSYW5kb20uCgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBhIHN0cmluZyBvciBieXRlYXJyYXkgYXMgYSBmaWxlIGZvciBib3RoCnJlYWRpbmcgYW5kIHdyaXRpbmcuIEZvciBzdHJpbmdzIFN0cmluZ0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlCm9wZW5lZCBpbiBhIHRleHQgbW9kZSwgYW5kIGZvciBieXRlcyBhIEJ5dGVzSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGUKb3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuAAAAAAAAAAAAAAAAAHRleHRfZW5jb2RpbmcoJG1vZHVsZSwgZW5jb2RpbmcsIHN0YWNrbGV2ZWw9MiwgLykKLS0KCkEgaGVscGVyIGZ1bmN0aW9uIHRvIGNob29zZSB0aGUgdGV4dCBlbmNvZGluZy4KCldoZW4gZW5jb2RpbmcgaXMgbm90IE5vbmUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBpdC4KT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGRlZmF1bHQgdGV4dCBlbmNvZGluZwooaS5lLiAibG9jYWxlIiBvciAidXRmLTgiIGRlcGVuZHMgb24gVVRGLTggbW9kZSkuCgpUaGlzIGZ1bmN0aW9uIGVtaXRzIGFuIEVuY29kaW5nV2FybmluZyBpZiBlbmNvZGluZyBpcyBOb25lIGFuZApzeXMuZmxhZ3Mud2Fybl9kZWZhdWx0X2VuY29kaW5nIGlzIHRydWUuCgpUaGlzIGNhbiBiZSB1c2VkIGluIEFQSXMgd2l0aCBhbiBlbmNvZGluZz1Ob25lIHBhcmFtZXRlci4KSG93ZXZlciwgcGxlYXNlIGNvbnNpZGVyIHVzaW5nIGVuY29kaW5nPSJ1dGYtOCIgZm9yIG5ldyBBUElzLgAAAAAAAABvcGVuX2NvZGUoJG1vZHVsZSwgLywgcGF0aCkKLS0KCk9wZW5zIHRoZSBwcm92aWRlZCBmaWxlIHdpdGggdGhlIGludGVudCB0byBpbXBvcnQgdGhlIGNvbnRlbnRzLgoKVGhpcyBtYXkgcGVyZm9ybSBleHRyYSB2YWxpZGF0aW9uIGJleW9uZCBvcGVuKCksIGJ1dCBpcyBvdGhlcndpc2UgaW50ZXJjaGFuZ2VhYmxlCndpdGggY2FsbGluZyBvcGVuKHBhdGgsICdyYicpLgAAAAAAAAAAAAAAAAAAAFRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBhbGwgSS9PIGNsYXNzZXMuCgpUaGlzIGNsYXNzIHByb3ZpZGVzIGR1bW15IGltcGxlbWVudGF0aW9ucyBmb3IgbWFueSBtZXRob2RzIHRoYXQKZGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSBzZWxlY3RpdmVseTsgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zCnJlcHJlc2VudCBhIGZpbGUgdGhhdCBjYW5ub3QgYmUgcmVhZCwgd3JpdHRlbiBvciBzZWVrZWQuCgpFdmVuIHRob3VnaCBJT0Jhc2UgZG9lcyBub3QgZGVjbGFyZSByZWFkLCByZWFkaW50bywgb3Igd3JpdGUgYmVjYXVzZQp0aGVpciBzaWduYXR1cmVzIHdpbGwgdmFyeSwgaW1wbGVtZW50YXRpb25zIGFuZCBjbGllbnRzIHNob3VsZApjb25zaWRlciB0aG9zZSBtZXRob2RzIHBhcnQgb2YgdGhlIGludGVyZmFjZS4gQWxzbywgaW1wbGVtZW50YXRpb25zCm1heSByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbiB3aGVuIG9wZXJhdGlvbnMgdGhleSBkbyBub3Qgc3VwcG9ydCBhcmUKY2FsbGVkLgoKVGhlIGJhc2ljIHR5cGUgdXNlZCBmb3IgYmluYXJ5IGRhdGEgcmVhZCBmcm9tIG9yIHdyaXR0ZW4gdG8gYSBmaWxlIGlzCmJ5dGVzLiBPdGhlciBieXRlcy1saWtlIG9iamVjdHMgYXJlIGFjY2VwdGVkIGFzIG1ldGhvZCBhcmd1bWVudHMgdG9vLgpJbiBzb21lIGNhc2VzIChzdWNoIGFzIHJlYWRpbnRvKSwgYSB3cml0YWJsZSBvYmplY3QgaXMgcmVxdWlyZWQuIFRleHQKSS9PIGNsYXNzZXMgd29yayB3aXRoIHN0ciBkYXRhLgoKTm90ZSB0aGF0IGNhbGxpbmcgYW55IG1ldGhvZCAoZXhjZXB0IGFkZGl0aW9uYWwgY2FsbHMgdG8gY2xvc2UoKSwKd2hpY2ggYXJlIGlnbm9yZWQpIG9uIGEgY2xvc2VkIHN0cmVhbSBzaG91bGQgcmFpc2UgYSBWYWx1ZUVycm9yLgoKSU9CYXNlIChhbmQgaXRzIHN1YmNsYXNzZXMpIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCBtZWFuaW5nCnRoYXQgYW4gSU9CYXNlIG9iamVjdCBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB5aWVsZGluZyB0aGUgbGluZXMgaW4gYQpzdHJlYW0uCgpJT0Jhc2UgYWxzbyBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gSW4gdGhpcyBleGFtcGxlLApmcCBpcyBjbG9zZWQgYWZ0ZXIgdGhlIHN1aXRlIG9mIHRoZSB3aXRoIHN0YXRlbWVudCBpcyBjb21wbGV0ZToKCndpdGggb3Blbignc3BhbS50eHQnLCAncicpIGFzIGZwOgogICAgZnAud3JpdGUoJ1NwYW0gYW5kIGVnZ3MhJykKAAAAAAAAAAAAAAAAAEJhc2UgY2xhc3MgZm9yIHJhdyBiaW5hcnkgSS9PLgAAQ2hhbmdlIHN0cmVhbSBwb3NpdGlvbi4KCkNoYW5nZSB0aGUgc3RyZWFtIHBvc2l0aW9uIHRvIHRoZSBnaXZlbiBieXRlIG9mZnNldC4gVGhlIG9mZnNldCBpcwppbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZS4gIFZhbHVlcwpmb3Igd2hlbmNlIGFyZToKCiogMCAtLSBzdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KTsgb2Zmc2V0IHNob3VsZCBiZSB6ZXJvIG9yIHBvc2l0aXZlCiogMSAtLSBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbjsgb2Zmc2V0IG1heSBiZSBuZWdhdGl2ZQoqIDIgLS0gZW5kIG9mIHN0cmVhbTsgb2Zmc2V0IGlzIHVzdWFsbHkgbmVnYXRpdmUKClJldHVybiB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLgAAAAAAAAAAAAAAAAAAAHRlbGwoJHNlbGYsIC8pCi0tCgpSZXR1cm4gY3VycmVudCBzdHJlYW0gcG9zaXRpb24uAAAAAAAAAAAAAAAAAABUcnVuY2F0ZSBmaWxlIHRvIHNpemUgYnl0ZXMuCgpGaWxlIHBvaW50ZXIgaXMgbGVmdCB1bmNoYW5nZWQuICBTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IElPCnBvc2l0aW9uIGFzIHJlcG9ydGVkIGJ5IHRlbGwoKS4gIFJldHVybnMgdGhlIG5ldyBzaXplLgAAAAAAAAAAAAAAZmx1c2goJHNlbGYsIC8pCi0tCgpGbHVzaCB3cml0ZSBidWZmZXJzLCBpZiBhcHBsaWNhYmxlLgoKVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHJlYWQtb25seSBhbmQgbm9uLWJsb2NraW5nIHN0cmVhbXMuAAAAAAAAAABjbG9zZSgkc2VsZiwgLykKLS0KCkZsdXNoIGFuZCBjbG9zZSB0aGUgSU8gb2JqZWN0LgoKVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC4AAAAAc2Vla2FibGUoJHNlbGYsIC8pCi0tCgpSZXR1cm4gd2hldGhlciBvYmplY3Qgc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy4KCklmIEZhbHNlLCBzZWVrKCksIHRlbGwoKSBhbmQgdHJ1bmNhdGUoKSB3aWxsIHJhaXNlIE9TRXJyb3IuClRoaXMgbWV0aG9kIG1heSBuZWVkIHRvIGRvIGEgdGVzdCBzZWVrKCkuAAAAAAByZWFkYWJsZSgkc2VsZiwgLykKLS0KClJldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciByZWFkaW5nLgoKSWYgRmFsc2UsIHJlYWQoKSB3aWxsIHJhaXNlIE9TRXJyb3IuAAAAAAAAd3JpdGFibGUoJHNlbGYsIC8pCi0tCgpSZXR1cm4gd2hldGhlciBvYmplY3Qgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4KCklmIEZhbHNlLCB3cml0ZSgpIHdpbGwgcmFpc2UgT1NFcnJvci4AAAAAAGZpbGVubygkc2VsZiwgLykKLS0KClJldHVybnMgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgaWYgb25lIGV4aXN0cy4KCk9TRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yLgAAAAAAAGlzYXR0eSgkc2VsZiwgLykKLS0KClJldHVybiB3aGV0aGVyIHRoaXMgaXMgYW4gJ2ludGVyYWN0aXZlJyBzdHJlYW0uCgpSZXR1cm4gRmFsc2UgaWYgaXQgY2FuJ3QgYmUgZGV0ZXJtaW5lZC4AAAByZWFkbGluZSgkc2VsZiwgc2l6ZT0tMSwgLykKLS0KClJlYWQgYW5kIHJldHVybiBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtLgoKSWYgc2l6ZSBpcyBzcGVjaWZpZWQsIGF0IG1vc3Qgc2l6ZSBieXRlcyB3aWxsIGJlIHJlYWQuCgpUaGUgbGluZSB0ZXJtaW5hdG9yIGlzIGFsd2F5cyBiJ1xuJyBmb3IgYmluYXJ5IGZpbGVzOyBmb3IgdGV4dApmaWxlcywgdGhlIG5ld2xpbmVzIGFyZ3VtZW50IHRvIG9wZW4gY2FuIGJlIHVzZWQgdG8gc2VsZWN0IHRoZSBsaW5lCnRlcm1pbmF0b3IocykgcmVjb2duaXplZC4AAAByZWFkbGluZXMoJHNlbGYsIGhpbnQ9LTEsIC8pCi0tCgpSZXR1cm4gYSBsaXN0IG9mIGxpbmVzIGZyb20gdGhlIHN0cmVhbS4KCmhpbnQgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8gbW9yZQpsaW5lcyB3aWxsIGJlIHJlYWQgaWYgdGhlIHRvdGFsIHNpemUgKGluIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIGFsbApsaW5lcyBzbyBmYXIgZXhjZWVkcyBoaW50LgAAAAAAAAB3cml0ZWxpbmVzKCRzZWxmLCBsaW5lcywgLykKLS0KCldyaXRlIGEgbGlzdCBvZiBsaW5lcyB0byBzdHJlYW0uCgpMaW5lIHNlcGFyYXRvcnMgYXJlIG5vdCBhZGRlZCwgc28gaXQgaXMgdXN1YWwgZm9yIGVhY2ggb2YgdGhlCmxpbmVzIHByb3ZpZGVkIHRvIGhhdmUgYSBsaW5lIHNlcGFyYXRvciBhdCB0aGUgZW5kLgAAAAAAAAAAAAAAAAByZWFkKCRzZWxmLCBzaXplPS0xLCAvKQotLQoKAAAAAHJlYWRhbGwoJHNlbGYsIC8pCi0tCgpSZWFkIHVudGlsIEVPRiwgdXNpbmcgbXVsdGlwbGUgcmVhZCgpIGNhbGwuAAAAAAAAAAAAAAAAAAAARmlsZUlPKGZpbGUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKQotLQoKT3BlbiBhIGZpbGUuCgpUaGUgbW9kZSBjYW4gYmUgJ3InIChkZWZhdWx0KSwgJ3cnLCAneCcgb3IgJ2EnIGZvciByZWFkaW5nLAp3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0CmRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZAp3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gIEEgRmlsZUV4aXN0c0Vycm9yIHdpbGwgYmUgcmFpc2VkIGlmIGl0IGFscmVhZHkKZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXMKd3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvICd3Jy5BZGQgYSAnKycgdG8gdGhlIG1vZGUKdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieQpwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUKb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyBvcGVuZXIgd2l0aCAoKm5hbWUqLCAqZmxhZ3MqKS4KKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKgpyZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgAAAAAAAAAAAAAAAAAAAAByZWFkKCRzZWxmLCBzaXplPS0xLCAvKQotLQoKUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLgoKT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQuCkluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuClJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgAAAAAAAAAAAAAAAAAAcmVhZGFsbCgkc2VsZiwgLykKLS0KClJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgZmlsZSwgcmV0dXJuZWQgYXMgYnl0ZXMuCgpJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwKb3IgTm9uZSBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZS4gIFJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgAAAAAAAAAAAAAAAAAAAAByZWFkaW50bygkc2VsZiwgYnVmZmVyLCAvKQotLQoKU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4AAAAAd3JpdGUoJHNlbGYsIGIsIC8pCi0tCgpXcml0ZSBidWZmZXIgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCgpPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiAgSW4gbm9uLWJsb2NraW5nIG1vZGUsCnJldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suAAAAAAAAAAAAAAAAAABzZWVrKCRzZWxmLCBwb3MsIHdoZW5jZT0wLCAvKQotLQoKTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbiBhbmQgcmV0dXJuIHRoZSBmaWxlIHBvc2l0aW9uLgoKQXJndW1lbnQgb2Zmc2V0IGlzIGEgYnl0ZSBjb3VudC4gIE9wdGlvbmFsIGFyZ3VtZW50IHdoZW5jZSBkZWZhdWx0cyB0bwpTRUVLX1NFVCBvciAwIChvZmZzZXQgZnJvbSBzdGFydCBvZiBmaWxlLCBvZmZzZXQgc2hvdWxkIGJlID49IDApOyBvdGhlciB2YWx1ZXMKYXJlIFNFRUtfQ1VSIG9yIDEgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbiwgcG9zaXRpdmUgb3IgbmVnYXRpdmUpLAphbmQgU0VFS19FTkQgb3IgMiAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSwgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2gKbWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQgdGhlIGVuZCBvZiBhIGZpbGUpLgoKTm90ZSB0aGF0IG5vdCBhbGwgZmlsZSBvYmplY3RzIGFyZSBzZWVrYWJsZS4AdGVsbCgkc2VsZiwgLykKLS0KCkN1cnJlbnQgZmlsZSBwb3NpdGlvbi4KCkNhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuAAAAAAAAAAAAAAAAdHJ1bmNhdGUoJHNlbGYsIHNpemU9Tm9uZSwgLykKLS0KClRydW5jYXRlIHRoZSBmaWxlIHRvIGF0IG1vc3Qgc2l6ZSBieXRlcyBhbmQgcmV0dXJuIHRoZSB0cnVuY2F0ZWQgc2l6ZS4KClNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLgpUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIGNoYW5nZWQgdG8gdGhlIHZhbHVlIG9mIHNpemUuAAAAAAAAAAAAY2xvc2UoJHNlbGYsIC8pCi0tCgpDbG9zZSB0aGUgZmlsZS4KCkEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQpjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4AAAAAAAAAAAAAAAAAAHNlZWthYmxlKCRzZWxmLCAvKQotLQoKVHJ1ZSBpZiBmaWxlIHN1cHBvcnRzIHJhbmRvbS1hY2Nlc3MuAAAAAAByZWFkYWJsZSgkc2VsZiwgLykKLS0KClRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgcmVhZCBtb2RlLgAAd3JpdGFibGUoJHNlbGYsIC8pCi0tCgpUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHdyaXRlIG1vZGUuAGZpbGVubygkc2VsZiwgLykKLS0KClJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLgAAAAAAAAAAaXNhdHR5KCRzZWxmLCAvKQotLQoKVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjb25uZWN0ZWQgdG8gYSBUVFkgZGV2aWNlLgAAAAAAAAAAAAAAAABCeXRlc0lPKGluaXRpYWxfYnl0ZXM9YicnKQotLQoKQnVmZmVyZWQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBieXRlcyBidWZmZXIuAAAAAAByZWFkYWJsZSgkc2VsZiwgLykKLS0KClJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLgAAAAAAAAAAAAAAAAAAAHNlZWthYmxlKCRzZWxmLCAvKQotLQoKUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHNlZWtlZC4AAAAAAAAAAAAAAAAAd3JpdGFibGUoJHNlbGYsIC8pCi0tCgpSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgd3JpdHRlbi4AAAAAAAAAAAAAAABjbG9zZSgkc2VsZiwgLykKLS0KCkRpc2FibGUgYWxsIEkvTyBvcGVyYXRpb25zLgBmbHVzaCgkc2VsZiwgLykKLS0KCkRvZXMgbm90aGluZy4AAAAAAAAAAAAAAAAAAABpc2F0dHkoJHNlbGYsIC8pCi0tCgpBbHdheXMgcmV0dXJucyBGYWxzZS4KCkJ5dGVzSU8gb2JqZWN0cyBhcmUgbm90IGNvbm5lY3RlZCB0byBhIFRUWS1saWtlIGRldmljZS4AAAAAAAAAAAAAAAAAdGVsbCgkc2VsZiwgLykKLS0KCkN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYW4gaW50ZWdlci4AAAAAAAAAAAAAAHdyaXRlKCRzZWxmLCBiLCAvKQotLQoKV3JpdGUgYnl0ZXMgdG8gZmlsZS4KClJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uAAAAAAAAAAAAAAAAAAAAAHdyaXRlbGluZXMoJHNlbGYsIGxpbmVzLCAvKQotLQoKV3JpdGUgbGluZXMgdG8gdGhlIGZpbGUuCgpOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdCBhZGRlZC4gIGxpbmVzIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0CnByb2R1Y2luZyBieXRlcy1saWtlIG9iamVjdHMuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yCmVhY2ggZWxlbWVudC4AAAAAAAAAAAAAAAAAcmVhZDEoJHNlbGYsIHNpemU9LTEsIC8pCi0tCgpSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuCgpJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgpSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4AcmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLykKLS0KClJlYWQgYnl0ZXMgaW50byBidWZmZXIuCgpSZXR1cm5zIG51bWJlciBvZiBieXRlcyByZWFkICgwIGZvciBFT0YpLCBvciBOb25lIGlmIHRoZSBvYmplY3QKaXMgc2V0IG5vdCB0byBibG9jayBhbmQgaGFzIG5vIGRhdGEgdG8gcmVhZC4AAAAAAAAAAAAAAAByZWFkbGluZSgkc2VsZiwgc2l6ZT0tMSwgLykKLS0KCk5leHQgbGluZSBmcm9tIHRoZSBmaWxlLCBhcyBhIGJ5dGVzIG9iamVjdC4KClJldGFpbiBuZXdsaW5lLiAgQSBub24tbmVnYXRpdmUgc2l6ZSBhcmd1bWVudCBsaW1pdHMgdGhlIG1heGltdW0KbnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4KUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuAAAAAAAAAAAAcmVhZGxpbmVzKCRzZWxmLCBzaXplPU5vbmUsIC8pCi0tCgpMaXN0IG9mIGJ5dGVzIG9iamVjdHMsIGVhY2ggYSBsaW5lIGZyb20gdGhlIGZpbGUuCgpDYWxsIHJlYWRsaW5lKCkgcmVwZWF0ZWRseSBhbmQgcmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgc28gcmVhZC4KVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGUKdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBsaW5lcyByZXR1cm5lZC4AAAAAAAByZWFkKCRzZWxmLCBzaXplPS0xLCAvKQotLQoKUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LgoKSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuClJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgAAAAAAAAAAAAAAAABnZXRidWZmZXIoJHNlbGYsIC8pCi0tCgpHZXQgYSByZWFkLXdyaXRlIHZpZXcgb3ZlciB0aGUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LgAAAAAAAAAAAABnZXR2YWx1ZSgkc2VsZiwgLykKLS0KClJldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LgAAAAAAAHNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pCi0tCgpDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLgoKU2VlayB0byBieXRlIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZToKICAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDsKICAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG1heSBiZSBuZWdhdGl2ZTsKICAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIHVzdWFsbHkgbmVnYXRpdmUuClJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4AAAAAAAAAdHJ1bmNhdGUoJHNlbGYsIHNpemU9Tm9uZSwgLykKLS0KClRydW5jYXRlIHRoZSBmaWxlIHRvIGF0IG1vc3Qgc2l6ZSBieXRlcy4KClNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLgpUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIHVuY2hhbmdlZC4gIFJldHVybnMgdGhlIG5ldyBzaXplLgAAAEJhc2UgY2xhc3MgZm9yIGJ1ZmZlcmVkIElPIG9iamVjdHMuCgpUaGUgbWFpbiBkaWZmZXJlbmNlIHdpdGggUmF3SU9CYXNlIGlzIHRoYXQgdGhlIHJlYWQoKSBtZXRob2QKc3VwcG9ydHMgb21pdHRpbmcgdGhlIHNpemUgYXJndW1lbnQsIGFuZCBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdAppbXBsZW1lbnRhdGlvbiB0aGF0IGRlZmVycyB0byByZWFkaW50bygpLgoKSW4gYWRkaXRpb24sIHJlYWQoKSwgcmVhZGludG8oKSBhbmQgd3JpdGUoKSBtYXkgcmFpc2UKQmxvY2tpbmdJT0Vycm9yIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgaW4gbm9uLWJsb2NraW5nCm1vZGUgYW5kIG5vdCByZWFkeTsgdW5saWtlIHRoZWlyIHJhdyBjb3VudGVycGFydHMsIHRoZXkgd2lsbCBuZXZlcgpyZXR1cm4gTm9uZS4KCkEgdHlwaWNhbCBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbm90IGluaGVyaXQgZnJvbSBhIFJhd0lPQmFzZQppbXBsZW1lbnRhdGlvbiwgYnV0IHdyYXAgb25lLgoAAAAAAAAAAAAAAAAAAAAAQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKQotLQoKQ3JlYXRlIGEgbmV3IGJ1ZmZlcmVkIHJlYWRlciB1c2luZyB0aGUgZ2l2ZW4gcmVhZGFibGUgcmF3IElPIG9iamVjdC4AAABCdWZmZXJlZFdyaXRlcihyYXcsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpCi0tCgpBIGJ1ZmZlciBmb3IgYSB3cml0ZWFibGUgc2VxdWVudGlhbCBSYXdJTyBvYmplY3QuCgpUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIEJ1ZmZlcmVkV3JpdGVyIGZvciB0aGUgZ2l2ZW4gd3JpdGVhYmxlIHJhdwpzdHJlYW0uIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvCkRFRkFVTFRfQlVGRkVSX1NJWkUuAAAAQnVmZmVyZWRSV1BhaXIocmVhZGVyLCB3cml0ZXIsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIC8pCi0tCgpBIGJ1ZmZlcmVkIHJlYWRlciBhbmQgd3JpdGVyIG9iamVjdCB0b2dldGhlci4KCkEgYnVmZmVyZWQgcmVhZGVyIG9iamVjdCBhbmQgYnVmZmVyZWQgd3JpdGVyIG9iamVjdCBwdXQgdG9nZXRoZXIgdG8KZm9ybSBhIHNlcXVlbnRpYWwgSU8gb2JqZWN0IHRoYXQgY2FuIHJlYWQgYW5kIHdyaXRlLiBUaGlzIGlzIHR5cGljYWxseQp1c2VkIHdpdGggYSBzb2NrZXQgb3IgdHdvLXdheSBwaXBlLgoKcmVhZGVyIGFuZCB3cml0ZXIgYXJlIFJhd0lPQmFzZSBvYmplY3RzIHRoYXQgYXJlIHJlYWRhYmxlIGFuZAp3cml0ZWFibGUgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0bwpERUZBVUxUX0JVRkZFUl9TSVpFLgAAAEJ1ZmZlcmVkUmFuZG9tKHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSkKLS0KCkEgYnVmZmVyZWQgaW50ZXJmYWNlIHRvIHJhbmRvbSBhY2Nlc3Mgc3RyZWFtcy4KClRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgcmVhZGVyIGFuZCB3cml0ZXIgZm9yIGEgc2Vla2FibGUgc3RyZWFtLApyYXcsIGdpdmVuIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXQKZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4AZGV0YWNoKCRzZWxmLCAvKQotLQoKRGlzY29ubmVjdCB0aGlzIGJ1ZmZlciBmcm9tIGl0cyB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gYW5kIHJldHVybiBpdC4KCkFmdGVyIHRoZSByYXcgc3RyZWFtIGhhcyBiZWVuIGRldGFjaGVkLCB0aGUgYnVmZmVyIGlzIGluIGFuIHVudXNhYmxlCnN0YXRlLgAAAAAAAAAAAABSZWFkIGFuZCByZXR1cm4gdXAgdG8gbiBieXRlcy4KCklmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBOb25lLCBvciBuZWdhdGl2ZSwgcmVhZHMgYW5kCnJldHVybnMgYWxsIGRhdGEgdW50aWwgRU9GLgoKSWYgdGhlIGFyZ3VtZW50IGlzIHBvc2l0aXZlLCBhbmQgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcwpub3QgJ2ludGVyYWN0aXZlJywgbXVsdGlwbGUgcmF3IHJlYWRzIG1heSBiZSBpc3N1ZWQgdG8gc2F0aXNmeQp0aGUgYnl0ZSBjb3VudCAodW5sZXNzIEVPRiBpcyByZWFjaGVkIGZpcnN0KS4gIEJ1dCBmb3IKaW50ZXJhY3RpdmUgcmF3IHN0cmVhbXMgKGFzIHdlbGwgYXMgc29ja2V0cyBhbmQgcGlwZXMpLCBhdCBtb3N0Cm9uZSByYXcgcmVhZCB3aWxsIGJlIGlzc3VlZCwgYW5kIGEgc2hvcnQgcmVzdWx0IGRvZXMgbm90IGltcGx5CnRoYXQgRU9GIGlzIGltbWluZW50LgoKUmV0dXJucyBhbiBlbXB0eSBieXRlcyBvYmplY3Qgb24gRU9GLgoKUmV0dXJucyBOb25lIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gd2FzIG9wZW4gaW4gbm9uLWJsb2NraW5nCm1vZGUgYW5kIG5vIGRhdGEgaXMgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuCgAAAAAAAAAAAFJlYWQgYW5kIHJldHVybiB1cCB0byBuIGJ5dGVzLCB3aXRoIGF0IG1vc3Qgb25lIHJlYWQoKSBjYWxsCnRvIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0uIEEgc2hvcnQgcmVzdWx0IGRvZXMgbm90IGltcGx5CnRoYXQgRU9GIGlzIGltbWluZW50LgoKUmV0dXJucyBhbiBlbXB0eSBieXRlcyBvYmplY3Qgb24gRU9GLgoAAAAAAAAAAAAAAHJlYWRpbnRvKCRzZWxmLCBidWZmZXIsIC8pCi0tCgoAcmVhZGludG8xKCRzZWxmLCBidWZmZXIsIC8pCi0tCgoAAAAAAAAAAAAAAAAAAAAAV3JpdGUgdGhlIGdpdmVuIGJ1ZmZlciB0byB0aGUgSU8gc3RyZWFtLgoKUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4sIHdoaWNoIGlzIGFsd2F5cyB0aGUgbGVuZ3RoIG9mIGIKaW4gYnl0ZXMuCgpSYWlzZXMgQmxvY2tpbmdJT0Vycm9yIGlmIHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgdGhlCnVuZGVybHlpbmcgcmF3IHN0cmVhbSBjYW5ub3QgYWNjZXB0IG1vcmUgZGF0YSBhdCB0aGUgbW9tZW50LgoAAAAAcmVhZCgkc2VsZiwgc2l6ZT0tMSwgLykKLS0KCgAAAABwZWVrKCRzZWxmLCBzaXplPTAsIC8pCi0tCgoAAAAAAHJlYWQxKCRzZWxmLCBzaXplPS0xLCAvKQotLQoKAAAAcmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLykKLS0KCgByZWFkaW50bzEoJHNlbGYsIGJ1ZmZlciwgLykKLS0KCgAAAAAAAAAAAAAAAAAAAAByZWFkbGluZSgkc2VsZiwgc2l6ZT0tMSwgLykKLS0KCgAAAAAAAAAAAAAAAAAAAABzZWVrKCRzZWxmLCB0YXJnZXQsIHdoZW5jZT0wLCAvKQotLQoKAAAAAAAAAAAAAAB0cnVuY2F0ZSgkc2VsZiwgcG9zPU5vbmUsIC8pCi0tCgoAAAAAAAAAAAAAAAAAAAB3cml0ZSgkc2VsZiwgYnVmZmVyLCAvKQotLQoKAAAAAEJhc2UgY2xhc3MgZm9yIHRleHQgSS9PLgoKVGhpcyBjbGFzcyBwcm92aWRlcyBhIGNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBpbnRlcmZhY2UgdG8gc3RyZWFtCkkvTy4gVGhlcmUgaXMgbm8gcmVhZGludG8gbWV0aG9kIGJlY2F1c2UgUHl0aG9uJ3MgY2hhcmFjdGVyIHN0cmluZ3MKYXJlIGltbXV0YWJsZS4KAAAAAAAAAAAAAAAAAAAAAEluY3JlbWVudGFsTmV3bGluZURlY29kZXIoZGVjb2RlciwgdHJhbnNsYXRlLCBlcnJvcnM9J3N0cmljdCcpCi0tCgpDb2RlYyB1c2VkIHdoZW4gcmVhZGluZyBhIGZpbGUgaW4gdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUuCgpJdCB3cmFwcyBhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxyXG4gYW5kIFxyIGludG8gXG4uCkl0IGFsc28gcmVjb3JkcyB0aGUgdHlwZXMgb2YgbmV3bGluZXMgZW5jb3VudGVyZWQuICBXaGVuIHVzZWQgd2l0aAp0cmFuc2xhdGU9RmFsc2UsIGl0IGVuc3VyZXMgdGhhdCB0aGUgbmV3bGluZSBzZXF1ZW5jZSBpcyByZXR1cm5lZCBpbgpvbmUgcGllY2UuIFdoZW4gdXNlZCB3aXRoIGRlY29kZXI9Tm9uZSwgaXQgZXhwZWN0cyB1bmljb2RlIHN0cmluZ3MgYXMKZGVjb2RlIGlucHV0IGFuZCB0cmFuc2xhdGVzIG5ld2xpbmVzIHdpdGhvdXQgZmlyc3QgaW52b2tpbmcgYW4gZXh0ZXJuYWwKZGVjb2Rlci4AAAAAAAAAAAAAAABUZXh0SU9XcmFwcGVyKGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwKICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1GYWxzZSwgd3JpdGVfdGhyb3VnaD1GYWxzZSkKLS0KCkNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBsYXllciBvdmVyIGEgQnVmZmVyZWRJT0Jhc2Ugb2JqZWN0LCBidWZmZXIuCgplbmNvZGluZyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmUKZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRlbmNvZGluZygpLgoKZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWUKaGVscChjb2RlY3MuQ29kZWMpIG9yIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb2RlY3MucmVnaXN0ZXIpIGFuZApkZWZhdWx0cyB0byAic3RyaWN0Ii4KCm5ld2xpbmUgY29udHJvbHMgaG93IGxpbmUgZW5kaW5ncyBhcmUgaGFuZGxlZC4gSXQgY2FuIGJlIE5vbmUsICcnLAonXG4nLCAnXHInLCBhbmQgJ1xyXG4nLiAgSXQgd29ya3MgYXMgZm9sbG93czoKCiogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMKICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiAnXG4nLCAnXHInLCBvciAnXHJcbicsIGFuZAogIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gJ1xuJyBiZWZvcmUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlCiAgY2FsbGVyLiBJZiBpdCBpcyAnJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZQogIGVuZGluZ3MgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLiBJZiBpdCBoYXMgYW55IG9mCiAgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgaW5wdXQgbGluZXMgYXJlIG9ubHkgdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4KICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuCgoqIE9uIG91dHB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCBhbnkgJ1xuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlCiAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmCiAgbmV3bGluZSBpcyAnJyBvciAnXG4nLCBubyB0cmFuc2xhdGlvbiB0YWtlcyBwbGFjZS4gSWYgbmV3bGluZSBpcyBhbnkKICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgJ1xuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlIHRyYW5zbGF0ZWQKICB0byB0aGUgZ2l2ZW4gc3RyaW5nLgoKSWYgbGluZV9idWZmZXJpbmcgaXMgVHJ1ZSwgYSBjYWxsIHRvIGZsdXNoIGlzIGltcGxpZWQgd2hlbiBhIGNhbGwgdG8Kd3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3Rlci4AU2VwYXJhdGUgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGZyb20gdGhlIFRleHRJT0Jhc2UgYW5kIHJldHVybiBpdC4KCkFmdGVyIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCwgdGhlIFRleHRJTyBpcyBpbiBhbgp1bnVzYWJsZSBzdGF0ZS4KAAAAAAAAAAAAAFJlYWQgYXQgbW9zdCBuIGNoYXJhY3RlcnMgZnJvbSBzdHJlYW0uCgpSZWFkIGZyb20gdW5kZXJseWluZyBidWZmZXIgdW50aWwgd2UgaGF2ZSBuIGNoYXJhY3RlcnMgb3Igd2UgaGl0IEVPRi4KSWYgbiBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRi4KAAAAAABSZWFkIHVudGlsIG5ld2xpbmUgb3IgRU9GLgoKUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgRU9GIGlzIGhpdCBpbW1lZGlhdGVseS4KAFdyaXRlIHN0cmluZyB0byBzdHJlYW0uClJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gKHdoaWNoIGlzIGFsd2F5cyBlcXVhbCB0bwp0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcpLgoAAAAAAAAAAAAARW5jb2Rpbmcgb2YgdGhlIHRleHQgc3RyZWFtLgoKU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUuCgAAAAAAAExpbmUgZW5kaW5ncyB0cmFuc2xhdGVkIHNvIGZhci4KCk9ubHkgbGluZSBlbmRpbmdzIHRyYW5zbGF0ZWQgZHVyaW5nIHJlYWRpbmcgYXJlIGNvbnNpZGVyZWQuCgpTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZS4KAAAAAAAAVGhlIGVycm9yIHNldHRpbmcgb2YgdGhlIGRlY29kZXIgb3IgZW5jb2Rlci4KClN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlLgoAAAAAAABkZWNvZGUoJHNlbGYsIC8sIGlucHV0LCBmaW5hbD1GYWxzZSkKLS0KCgAAAAAAAABnZXRzdGF0ZSgkc2VsZiwgLykKLS0KCgAAAAAAAAAAAHNldHN0YXRlKCRzZWxmLCBzdGF0ZSwgLykKLS0KCgAAcmVzZXQoJHNlbGYsIC8pCi0tCgoAAAAAAAAAAAAAAABkZXRhY2goJHNlbGYsIC8pCi0tCgoAAAAAAAAAAAAAAHJlY29uZmlndXJlKCRzZWxmLCAvLCAqLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLAogICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1Ob25lLCB3cml0ZV90aHJvdWdoPU5vbmUpCi0tCgpSZWNvbmZpZ3VyZSB0aGUgdGV4dCBzdHJlYW0gd2l0aCBuZXcgcGFyYW1ldGVycy4KClRoaXMgYWxzbyBkb2VzIGFuIGltcGxpY2l0IHN0cmVhbSBmbHVzaC4AAAAAAAAAAAAAd3JpdGUoJHNlbGYsIHRleHQsIC8pCi0tCgoAAAAAAAByZWFkKCRzZWxmLCBzaXplPS0xLCAvKQotLQoKAAAAAHJlYWRsaW5lKCRzZWxmLCBzaXplPS0xLCAvKQotLQoKAAAAAAAAAAAAAAAAAAAAAGZsdXNoKCRzZWxmLCAvKQotLQoKAAAAAAAAAAAAAAAAY2xvc2UoJHNlbGYsIC8pCi0tCgoAAAAAAAAAAAAAAABmaWxlbm8oJHNlbGYsIC8pCi0tCgoAAAAAAAAAAAAAAHNlZWthYmxlKCRzZWxmLCAvKQotLQoKAAAAAAAAAAAAcmVhZGFibGUoJHNlbGYsIC8pCi0tCgoAAAAAAAAAAAB3cml0YWJsZSgkc2VsZiwgLykKLS0KCgAAAAAAAAAAAGlzYXR0eSgkc2VsZiwgLykKLS0KCgAAAAAAAAAAAAAAc2Vlaygkc2VsZiwgY29va2llLCB3aGVuY2U9MCwgLykKLS0KCgAAAAAAAAAAAAAAdGVsbCgkc2VsZiwgLykKLS0KCgAAAAAAAAAAAAAAAAB0cnVuY2F0ZSgkc2VsZiwgcG9zPU5vbmUsIC8pCi0tCgoAAAAAAAAAAAAAAAAAAABTdHJpbmdJTyhpbml0aWFsX3ZhbHVlPScnLCBuZXdsaW5lPSdcbicpCi0tCgpUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLgoKVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmUKYXJndW1lbnQgaXMgbGlrZSB0aGUgb25lIG9mIFRleHRJT1dyYXBwZXIncyBjb25zdHJ1Y3Rvci4AAAAAAGNsb3NlKCRzZWxmLCAvKQotLQoKQ2xvc2UgdGhlIElPIG9iamVjdC4KCkF0dGVtcHRpbmcgYW55IGZ1cnRoZXIgb3BlcmF0aW9uIGFmdGVyIHRoZSBvYmplY3QgaXMgY2xvc2VkCndpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLgoKVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC4AAAAAAAAAAGdldHZhbHVlKCRzZWxmLCAvKQotLQoKUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LgAAAAAAAAAAAAAAAAAAcmVhZCgkc2VsZiwgc2l6ZT0tMSwgLykKLS0KClJlYWQgYXQgbW9zdCBzaXplIGNoYXJhY3RlcnMsIHJldHVybmVkIGFzIGEgc3RyaW5nLgoKSWYgdGhlIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GCmlzIHJlYWNoZWQuIFJldHVybiBhbiBlbXB0eSBzdHJpbmcgYXQgRU9GLgAAAAAAAAAAAAAAAAAAcmVhZGxpbmUoJHNlbGYsIHNpemU9LTEsIC8pCi0tCgpSZWFkIHVudGlsIG5ld2xpbmUgb3IgRU9GLgoKUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgRU9GIGlzIGhpdCBpbW1lZGlhdGVseS4AAHRlbGwoJHNlbGYsIC8pCi0tCgpUZWxsIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uAAAAAAAAAAAAAAAAAAB0cnVuY2F0ZSgkc2VsZiwgcG9zPU5vbmUsIC8pCi0tCgpUcnVuY2F0ZSBzaXplIHRvIHBvcy4KClRoZSBwb3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMKcmV0dXJuZWQgYnkgdGVsbCgpLiAgVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuClJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4AAAAAAAAAAAAAAAAAAHNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pCi0tCgpDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLgoKU2VlayB0byBjaGFyYWN0ZXIgb2Zmc2V0IHBvcyByZWxhdGl2ZSB0byBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlOgogICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7CiAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG11c3QgYmUgMDsKICAgIDIgIEVuZCBvZiBzdHJlYW0gLSBwb3MgbXVzdCBiZSAwLgpSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uAAB3cml0ZSgkc2VsZiwgcywgLykKLS0KCldyaXRlIHN0cmluZyB0byBmaWxlLgoKUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvCnRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4AAAAAAABzZWVrYWJsZSgkc2VsZiwgLykKLS0KClJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuAAAAAAAAAAAAAAAA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aW5lciBjb21tb24gdG8gbXVsdGlwbGUgdGVlIG9iamVjdHMuAAAAAABhY2N1bXVsYXRlKGl0ZXJhYmxlLCBmdW5jPU5vbmUsICosIGluaXRpYWw9Tm9uZSkKLS0KClJldHVybiBzZXJpZXMgb2YgYWNjdW11bGF0ZWQgc3VtcyAob3Igb3RoZXIgYmluYXJ5IGZ1bmN0aW9uIHJlc3VsdHMpLgAAAAAAAGNvbWJpbmF0aW9ucyhpdGVyYWJsZSwgcikKLS0KClJldHVybiBzdWNjZXNzaXZlIHItbGVuZ3RoIGNvbWJpbmF0aW9ucyBvZiBlbGVtZW50cyBpbiB0aGUgaXRlcmFibGUuCgpjb21iaW5hdGlvbnMocmFuZ2UoNCksIDMpIC0tPiAoMCwxLDIpLCAoMCwxLDMpLCAoMCwyLDMpLCAoMSwyLDMpAAAAAAAAAAAAAAAAUmV0dXJucyBzaXplIGluIG1lbW9yeSwgaW4gYnl0ZXMuAAAAAAAAAAAAAAAAAAAAY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoaXRlcmFibGUsIHIpCi0tCgpSZXR1cm4gc3VjY2Vzc2l2ZSByLWxlbmd0aCBjb21iaW5hdGlvbnMgb2YgZWxlbWVudHMgaW4gdGhlIGl0ZXJhYmxlIGFsbG93aW5nIGluZGl2aWR1YWwgZWxlbWVudHMgdG8gaGF2ZSBzdWNjZXNzaXZlIHJlcGVhdHMuCgpjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCgnQUJDJywgMikgLS0+ICgnQScsJ0EnKSwgKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQicsJ0InKSwgKCdCJywnQycpLCAoJ0MnLCdDJykAAAAAAAAAY3ljbGUoaXRlcmFibGUsIC8pCi0tCgpSZXR1cm4gZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUgdW50aWwgaXQgaXMgZXhoYXVzdGVkLiBUaGVuIHJlcGVhdCB0aGUgc2VxdWVuY2UgaW5kZWZpbml0ZWx5LgAAAAAAAAAAAABkcm9wd2hpbGUocHJlZGljYXRlLCBpdGVyYWJsZSwgLykKLS0KCkRyb3AgaXRlbXMgZnJvbSB0aGUgaXRlcmFibGUgd2hpbGUgcHJlZGljYXRlKGl0ZW0pIGlzIHRydWUuCgpBZnRlcndhcmRzLCByZXR1cm4gZXZlcnkgZWxlbWVudCB1bnRpbCB0aGUgaXRlcmFibGUgaXMgZXhoYXVzdGVkLgAAAAAAAAAAAAAAAHRha2V3aGlsZShwcmVkaWNhdGUsIGl0ZXJhYmxlLCAvKQotLQoKUmV0dXJuIHN1Y2Nlc3NpdmUgZW50cmllcyBmcm9tIGFuIGl0ZXJhYmxlIGFzIGxvbmcgYXMgdGhlIHByZWRpY2F0ZSBldmFsdWF0ZXMgdG8gdHJ1ZSBmb3IgZWFjaCBlbnRyeS4AAAAAAGlzbGljZShpdGVyYWJsZSwgc3RvcCkgLS0+IGlzbGljZSBvYmplY3QKaXNsaWNlKGl0ZXJhYmxlLCBzdGFydCwgc3RvcFssIHN0ZXBdKSAtLT4gaXNsaWNlIG9iamVjdAoKUmV0dXJuIGFuIGl0ZXJhdG9yIHdob3NlIG5leHQoKSBtZXRob2QgcmV0dXJucyBzZWxlY3RlZCB2YWx1ZXMgZnJvbSBhbgppdGVyYWJsZS4gIElmIHN0YXJ0IGlzIHNwZWNpZmllZCwgd2lsbCBza2lwIGFsbCBwcmVjZWRpbmcgZWxlbWVudHM7Cm90aGVyd2lzZSwgc3RhcnQgZGVmYXVsdHMgdG8gemVyby4gIFN0ZXAgZGVmYXVsdHMgdG8gb25lLiAgSWYKc3BlY2lmaWVkIGFzIGFub3RoZXIgdmFsdWUsIHN0ZXAgZGV0ZXJtaW5lcyBob3cgbWFueSB2YWx1ZXMgYXJlCnNraXBwZWQgYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxzLiAgV29ya3MgbGlrZSBhIHNsaWNlKCkgb24gYSBsaXN0CmJ1dCByZXR1cm5zIGFuIGl0ZXJhdG9yLgAAAAAAAAAAAAAAc3Rhcm1hcChmdW5jdGlvbiwgaXRlcmFibGUsIC8pCi0tCgpSZXR1cm4gYW4gaXRlcmF0b3Igd2hvc2UgdmFsdWVzIGFyZSByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbiBldmFsdWF0ZWQgd2l0aCBhbiBhcmd1bWVudCB0dXBsZSB0YWtlbiBmcm9tIHRoZSBnaXZlbiBzZXF1ZW5jZS4AAAAAAAAAAAAAAAAAAABjaGFpbigqaXRlcmFibGVzKSAtLT4gY2hhaW4gb2JqZWN0CgpSZXR1cm4gYSBjaGFpbiBvYmplY3Qgd2hvc2UgLl9fbmV4dF9fKCkgbWV0aG9kIHJldHVybnMgZWxlbWVudHMgZnJvbSB0aGUKZmlyc3QgaXRlcmFibGUgdW50aWwgaXQgaXMgZXhoYXVzdGVkLCB0aGVuIGVsZW1lbnRzIGZyb20gdGhlIG5leHQKaXRlcmFibGUsIHVudGlsIGFsbCBvZiB0aGUgaXRlcmFibGVzIGFyZSBleGhhdXN0ZWQuAAAAAAAAAAAAAAAAAABmcm9tX2l0ZXJhYmxlKCR0eXBlLCBpdGVyYWJsZSwgLykKLS0KCkFsdGVybmF0aXZlIGNoYWluKCkgY29uc3RydWN0b3IgdGFraW5nIGEgc2luZ2xlIGl0ZXJhYmxlIGFyZ3VtZW50IHRoYXQgZXZhbHVhdGVzIGxhemlseS4AAGNvbXByZXNzKGRhdGEsIHNlbGVjdG9ycykKLS0KClJldHVybiBkYXRhIGVsZW1lbnRzIGNvcnJlc3BvbmRpbmcgdG8gdHJ1ZSBzZWxlY3RvciBlbGVtZW50cy4KCkZvcm1zIGEgc2hvcnRlciBpdGVyYXRvciBmcm9tIHNlbGVjdGVkIGRhdGEgZWxlbWVudHMgdXNpbmcgdGhlIHNlbGVjdG9ycyB0bwpjaG9vc2UgdGhlIGRhdGEgZWxlbWVudHMuAAAAAAAAAAAAAAAAAABmaWx0ZXJmYWxzZShmdW5jdGlvbiwgaXRlcmFibGUsIC8pCi0tCgpSZXR1cm4gdGhvc2UgaXRlbXMgb2YgaXRlcmFibGUgZm9yIHdoaWNoIGZ1bmN0aW9uKGl0ZW0pIGlzIGZhbHNlLgoKSWYgZnVuY3Rpb24gaXMgTm9uZSwgcmV0dXJuIHRoZSBpdGVtcyB0aGF0IGFyZSBmYWxzZS4AY291bnQoc3RhcnQ9MCwgc3RlcD0xKQotLQoKUmV0dXJuIGEgY291bnQgb2JqZWN0IHdob3NlIC5fX25leHRfXygpIG1ldGhvZCByZXR1cm5zIGNvbnNlY3V0aXZlIHZhbHVlcy4KCkVxdWl2YWxlbnQgdG86CiAgICBkZWYgY291bnQoZmlyc3R2YWw9MCwgc3RlcD0xKToKICAgICAgICB4ID0gZmlyc3R2YWwKICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICB5aWVsZCB4CiAgICAgICAgICAgIHggKz0gc3RlcAAAAAAAAAAAemlwX2xvbmdlc3QoaXRlcjEgWyxpdGVyMiBbLi4uXV0sIFtmaWxsdmFsdWU9Tm9uZV0pIC0tPiB6aXBfbG9uZ2VzdCBvYmplY3QKClJldHVybiBhIHppcF9sb25nZXN0IG9iamVjdCB3aG9zZSAuX19uZXh0X18oKSBtZXRob2QgcmV0dXJucyBhIHR1cGxlIHdoZXJlCnRoZSBpLXRoIGVsZW1lbnQgY29tZXMgZnJvbSB0aGUgaS10aCBpdGVyYWJsZSBhcmd1bWVudC4gIFRoZSAuX19uZXh0X18oKQptZXRob2QgY29udGludWVzIHVudGlsIHRoZSBsb25nZXN0IGl0ZXJhYmxlIGluIHRoZSBhcmd1bWVudCBzZXF1ZW5jZQppcyBleGhhdXN0ZWQgYW5kIHRoZW4gaXQgcmFpc2VzIFN0b3BJdGVyYXRpb24uICBXaGVuIHRoZSBzaG9ydGVyIGl0ZXJhYmxlcwphcmUgZXhoYXVzdGVkLCB0aGUgZmlsbHZhbHVlIGlzIHN1YnN0aXR1dGVkIGluIHRoZWlyIHBsYWNlLiAgVGhlIGZpbGx2YWx1ZQpkZWZhdWx0cyB0byBOb25lIG9yIGNhbiBiZSBzcGVjaWZpZWQgYnkgYSBrZXl3b3JkIGFyZ3VtZW50LgoAAAAAAAAAAABwYWlyd2lzZShpdGVyYWJsZSwgLykKLS0KClJldHVybiBhbiBpdGVyYXRvciBvZiBvdmVybGFwcGluZyBwYWlycyB0YWtlbiBmcm9tIHRoZSBpbnB1dCBpdGVyYXRvci4KCiAgICBzIC0+IChzMCxzMSksIChzMSxzMiksIChzMiwgczMpLCAuLi4AAAAAAABwZXJtdXRhdGlvbnMoaXRlcmFibGUsIHI9Tm9uZSkKLS0KClJldHVybiBzdWNjZXNzaXZlIHItbGVuZ3RoIHBlcm11dGF0aW9ucyBvZiBlbGVtZW50cyBpbiB0aGUgaXRlcmFibGUuCgpwZXJtdXRhdGlvbnMocmFuZ2UoMyksIDIpIC0tPiAoMCwxKSwgKDAsMiksICgxLDApLCAoMSwyKSwgKDIsMCksICgyLDEpAHByb2R1Y3QoKml0ZXJhYmxlcywgcmVwZWF0PTEpIC0tPiBwcm9kdWN0IG9iamVjdAoKQ2FydGVzaWFuIHByb2R1Y3Qgb2YgaW5wdXQgaXRlcmFibGVzLiAgRXF1aXZhbGVudCB0byBuZXN0ZWQgZm9yLWxvb3BzLgoKRm9yIGV4YW1wbGUsIHByb2R1Y3QoQSwgQikgcmV0dXJucyB0aGUgc2FtZSBhczogICgoeCx5KSBmb3IgeCBpbiBBIGZvciB5IGluIEIpLgpUaGUgbGVmdG1vc3QgaXRlcmF0b3JzIGFyZSBpbiB0aGUgb3V0ZXJtb3N0IGZvci1sb29wLCBzbyB0aGUgb3V0cHV0IHR1cGxlcwpjeWNsZSBpbiBhIG1hbm5lciBzaW1pbGFyIHRvIGFuIG9kb21ldGVyICh3aXRoIHRoZSByaWdodG1vc3QgZWxlbWVudCBjaGFuZ2luZwpvbiBldmVyeSBpdGVyYXRpb24pLgoKVG8gY29tcHV0ZSB0aGUgcHJvZHVjdCBvZiBhbiBpdGVyYWJsZSB3aXRoIGl0c2VsZiwgc3BlY2lmeSB0aGUgbnVtYmVyCm9mIHJlcGV0aXRpb25zIHdpdGggdGhlIG9wdGlvbmFsIHJlcGVhdCBrZXl3b3JkIGFyZ3VtZW50LiBGb3IgZXhhbXBsZSwKcHJvZHVjdChBLCByZXBlYXQ9NCkgbWVhbnMgdGhlIHNhbWUgYXMgcHJvZHVjdChBLCBBLCBBLCBBKS4KCnByb2R1Y3QoJ2FiJywgcmFuZ2UoMykpIC0tPiAoJ2EnLDApICgnYScsMSkgKCdhJywyKSAoJ2InLDApICgnYicsMSkgKCdiJywyKQpwcm9kdWN0KCgwLDEpLCAoMCwxKSwgKDAsMSkpIC0tPiAoMCwwLDApICgwLDAsMSkgKDAsMSwwKSAoMCwxLDEpICgxLDAsMCkgLi4uAAAAAAByZXBlYXQob2JqZWN0IFssdGltZXNdKSAtPiBjcmVhdGUgYW4gaXRlcmF0b3Igd2hpY2ggcmV0dXJucyB0aGUgb2JqZWN0CmZvciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0aW1lcy4gIElmIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG9iamVjdAplbmRsZXNzbHkuAAAAAAAAUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuAAAAAAAAAAAAAGdyb3VwYnkoaXRlcmFibGUsIGtleT1Ob25lKQotLQoKbWFrZSBhbiBpdGVyYXRvciB0aGF0IHJldHVybnMgY29uc2VjdXRpdmUga2V5cyBhbmQgZ3JvdXBzIGZyb20gdGhlIGl0ZXJhYmxlCgogIGl0ZXJhYmxlCiAgICBFbGVtZW50cyB0byBkaXZpZGUgaW50byBncm91cHMgYWNjb3JkaW5nIHRvIHRoZSBrZXkgZnVuY3Rpb24uCiAga2V5CiAgICBBIGZ1bmN0aW9uIGZvciBjb21wdXRpbmcgdGhlIGdyb3VwIGNhdGVnb3J5IGZvciBlYWNoIGVsZW1lbnQuCiAgICBJZiB0aGUga2V5IGZ1bmN0aW9uIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgTm9uZSwgdGhlIGVsZW1lbnQgaXRzZWxmCiAgICBpcyB1c2VkIGZvciBncm91cGluZy4AAAAAAAAAAAAAAAAAY29tcGlsZSgkbW9kdWxlLCAvLCBwYXR0ZXJuLCBmbGFncywgY29kZSwgZ3JvdXBzLCBncm91cGluZGV4LAogICAgICAgIGluZGV4Z3JvdXApCi0tCgoAAAAAAAAAAAAAZ2V0Y29kZXNpemUoJG1vZHVsZSwgLykKLS0KCgAAAABhc2NpaV9pc2Nhc2VkKCRtb2R1bGUsIGNoYXJhY3RlciwgLykKLS0KCgAAAAAAAAB1bmljb2RlX2lzY2FzZWQoJG1vZHVsZSwgY2hhcmFjdGVyLCAvKQotLQoKAAAAAABhc2NpaV90b2xvd2VyKCRtb2R1bGUsIGNoYXJhY3RlciwgLykKLS0KCgAAAAAAAAB1bmljb2RlX3RvbG93ZXIoJG1vZHVsZSwgY2hhcmFjdGVyLCAvKQotLQoKAAAAAAAgU1JFIDIuMi4yIENvcHlyaWdodCAoYykgMTk5Ny0yMDAyIGJ5IFNlY3JldCBMYWJzIEFCIAAAAAAAAAAAAAAAQ29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIG9iamVjdC4AAAAAAAAAAAAAAAAAbWF0Y2goJHNlbGYsIC8sIHN0cmluZywgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSkKLS0KCk1hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgAAAAAAAAAAAABmdWxsbWF0Y2goJHNlbGYsIC8sIHN0cmluZywgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSkKLS0KCk1hdGNoZXMgYWdhaW5zdCBhbGwgb2YgdGhlIHN0cmluZy4AAABzZWFyY2goJHNlbGYsIC8sIHN0cmluZywgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSkKLS0KClNjYW4gdGhyb3VnaCBzdHJpbmcgbG9va2luZyBmb3IgYSBtYXRjaCwgYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgbWF0Y2ggb2JqZWN0IGluc3RhbmNlLgoKUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLgAAAAAAAAAAAAAAc3ViKCRzZWxmLCAvLCByZXBsLCBzdHJpbmcsIGNvdW50PTApCi0tCgpSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4AAAAAAAAAAABzdWJuKCRzZWxmLCAvLCByZXBsLCBzdHJpbmcsIGNvdW50PTApCi0tCgpSZXR1cm4gdGhlIHR1cGxlIChuZXdfc3RyaW5nLCBudW1iZXJfb2Zfc3Vic19tYWRlKSBmb3VuZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIHdpdGggdGhlIHJlcGxhY2VtZW50IHJlcGwuAABmaW5kYWxsKCRzZWxmLCAvLCBzdHJpbmcsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUpCi0tCgpSZXR1cm4gYSBsaXN0IG9mIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBvZiBwYXR0ZXJuIGluIHN0cmluZy4AAAAAAHNwbGl0KCRzZWxmLCAvLCBzdHJpbmcsIG1heHNwbGl0PTApCi0tCgpTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uAAAAAAAAAAAAAAAAAGZpbmRpdGVyKCRzZWxmLCAvLCBzdHJpbmcsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUpCi0tCgpSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgZm9yIHRoZSBSRSBwYXR0ZXJuIGluIHN0cmluZy4KCkZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4AAAAAAAAAAAAAAAAAAABzY2FubmVyKCRzZWxmLCAvLCBzdHJpbmcsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUpCi0tCgoAAAAAAAAAX19jb3B5X18oJHNlbGYsIC8pCi0tCgoAAAAAAAAAAABfX2RlZXBjb3B5X18oJHNlbGYsIG1lbW8sIC8pCi0tCgoAAAAAAAAAAAAAAAAAAABUaGUgcmVzdWx0IG9mIHJlLm1hdGNoKCkgYW5kIHJlLnNlYXJjaCgpLgpNYXRjaCBvYmplY3RzIGFsd2F5cyBoYXZlIGEgYm9vbGVhbiB2YWx1ZSBvZiBUcnVlLgAAAABncm91cChbZ3JvdXAxLCAuLi5dKSAtPiBzdHIgb3IgdHVwbGUuCiAgICBSZXR1cm4gc3ViZ3JvdXAocykgb2YgdGhlIG1hdGNoIGJ5IGluZGljZXMgb3IgbmFtZXMuCiAgICBGb3IgMCByZXR1cm5zIHRoZSBlbnRpcmUgbWF0Y2guAAAAAAAAAAAAAAAAAABzdGFydCgkc2VsZiwgZ3JvdXA9MCwgLykKLS0KClJldHVybiBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLgAAAAAAAABlbmQoJHNlbGYsIGdyb3VwPTAsIC8pCi0tCgpSZXR1cm4gaW5kZXggb2YgdGhlIGVuZCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuAAAAAAAAAAAAAABzcGFuKCRzZWxmLCBncm91cD0wLCAvKQotLQoKRm9yIG1hdGNoIG9iamVjdCBtLCByZXR1cm4gdGhlIDItdHVwbGUgKG0uc3RhcnQoZ3JvdXApLCBtLmVuZChncm91cCkpLgAAAAAAAAAAAAAAAAAAZ3JvdXBzKCRzZWxmLCAvLCBkZWZhdWx0PU5vbmUpCi0tCgpSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxLgoKICBkZWZhdWx0CiAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4AAABncm91cGRpY3QoJHNlbGYsIC8sIGRlZmF1bHQ9Tm9uZSkKLS0KClJldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwgdGhlIG5hbWVkIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGtleWVkIGJ5IHRoZSBzdWJncm91cCBuYW1lLgoKICBkZWZhdWx0CiAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4AZXhwYW5kKCRzZWxmLCAvLCB0ZW1wbGF0ZSkKLS0KClJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb24gb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLgAAX19jb3B5X18oJHNlbGYsIC8pCi0tCgoAAAAAAAAAAABfX2RlZXBjb3B5X18oJHNlbGYsIG1lbW8sIC8pCi0tCgoAAAAAAAAAAAAAAAAAAABtYXRjaCgkc2VsZiwgLykKLS0KCgAAAAAAAAAAAAAAAHNlYXJjaCgkc2VsZiwgLykKLS0KCgAAAAAAAAAAAAAAVGhpcyBtb2R1bGUgcHJvdmlkZXMgcHJpbWl0aXZlIG9wZXJhdGlvbnMgdG8gd3JpdGUgbXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMuClRoZSAndGhyZWFkaW5nJyBtb2R1bGUgcHJvdmlkZXMgYSBtb3JlIGNvbnZlbmllbnQgaW50ZXJmYWNlLgAAAAAAAAAAc3RhcnRfbmV3X3RocmVhZChmdW5jdGlvbiwgYXJnc1ssIGt3YXJnc10pCihzdGFydF9uZXcoKSBpcyBhbiBvYnNvbGV0ZSBzeW5vbnltKQoKU3RhcnQgYSBuZXcgdGhyZWFkIGFuZCByZXR1cm4gaXRzIGlkZW50aWZpZXIuICBUaGUgdGhyZWFkIHdpbGwgY2FsbCB0aGUKZnVuY3Rpb24gd2l0aCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBmcm9tIHRoZSB0dXBsZSBhcmdzIGFuZCBrZXl3b3JkIGFyZ3VtZW50cwp0YWtlbiBmcm9tIHRoZSBvcHRpb25hbCBkaWN0aW9uYXJ5IGt3YXJncy4gIFRoZSB0aHJlYWQgZXhpdHMgd2hlbiB0aGUKZnVuY3Rpb24gcmV0dXJuczsgdGhlIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLiAgVGhlIHRocmVhZCB3aWxsIGFsc28gZXhpdAp3aGVuIHRoZSBmdW5jdGlvbiByYWlzZXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbjsgYSBzdGFjayB0cmFjZSB3aWxsIGJlCnByaW50ZWQgdW5sZXNzIHRoZSBleGNlcHRpb24gaXMgU3lzdGVtRXhpdC4KAAAAAAAAAGFsbG9jYXRlX2xvY2soKSAtPiBsb2NrIG9iamVjdAooYWxsb2NhdGUoKSBpcyBhbiBvYnNvbGV0ZSBzeW5vbnltKQoKQ3JlYXRlIGEgbmV3IGxvY2sgb2JqZWN0LiBTZWUgaGVscCh0eXBlKHRocmVhZGluZy5Mb2NrKCkpKSBmb3IKaW5mb3JtYXRpb24gYWJvdXQgbG9ja3MuAAAAAABleGl0KCkKKGV4aXRfdGhyZWFkKCkgaXMgYW4gb2Jzb2xldGUgc3lub255bSkKClRoaXMgaXMgc3lub255bW91cyB0byBgYHJhaXNlIFN5c3RlbUV4aXQnJy4gIEl0IHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQKdGhyZWFkIHRvIGV4aXQgc2lsZW50bHkgdW5sZXNzIHRoZSBleGNlcHRpb24gaXMgY2F1Z2h0LgAAAGludGVycnVwdF9tYWluKHNpZ251bT1zaWduYWwuU0lHSU5ULCAvKQoKU2ltdWxhdGUgdGhlIGFycml2YWwgb2YgdGhlIGdpdmVuIHNpZ25hbCBpbiB0aGUgbWFpbiB0aHJlYWQsCndoZXJlIHRoZSBjb3JyZXNwb25kaW5nIHNpZ25hbCBoYW5kbGVyIHdpbGwgYmUgZXhlY3V0ZWQuCklmICpzaWdudW0qIGlzIG9taXR0ZWQsIFNJR0lOVCBpcyBhc3N1bWVkLgpBIHN1YnRocmVhZCBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gaW50ZXJydXB0IHRoZSBtYWluIHRocmVhZC4KCk5vdGU6IHRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyIGZvciBTSUdJTlQgcmFpc2VzIGBgS2V5Ym9hcmRJbnRlcnJ1cHRgYC4AAAAAAAAAAAAAAABnZXRfaWRlbnQoKSAtPiBpbnRlZ2VyCgpSZXR1cm4gYSBub24temVybyBpbnRlZ2VyIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgY3VycmVudCB0aHJlYWQKYW1vbmdzdCBvdGhlciB0aHJlYWRzIHRoYXQgZXhpc3Qgc2ltdWx0YW5lb3VzbHkuClRoaXMgbWF5IGJlIHVzZWQgdG8gaWRlbnRpZnkgcGVyLXRocmVhZCByZXNvdXJjZXMuCkV2ZW4gdGhvdWdoIG9uIHNvbWUgcGxhdGZvcm1zIHRocmVhZHMgaWRlbnRpdGllcyBtYXkgYXBwZWFyIHRvIGJlCmFsbG9jYXRlZCBjb25zZWN1dGl2ZSBudW1iZXJzIHN0YXJ0aW5nIGF0IDEsIHRoaXMgYmVoYXZpb3Igc2hvdWxkIG5vdApiZSByZWxpZWQgdXBvbiwgYW5kIHRoZSBudW1iZXIgc2hvdWxkIGJlIHNlZW4gcHVyZWx5IGFzIGEgbWFnaWMgY29va2llLgpBIHRocmVhZCdzIGlkZW50aXR5IG1heSBiZSByZXVzZWQgZm9yIGFub3RoZXIgdGhyZWFkIGFmdGVyIGl0IGV4aXRzLgAAAAAAAAAAAABfY291bnQoKSAtPiBpbnRlZ2VyCgpSZXR1cm4gdGhlIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmluZyBQeXRob24gdGhyZWFkcywgZXhjbHVkaW5nCnRoZSBtYWluIHRocmVhZC4gVGhlIHJldHVybmVkIG51bWJlciBjb21wcmlzZXMgYWxsIHRocmVhZHMgY3JlYXRlZAp0aHJvdWdoIGBzdGFydF9uZXdfdGhyZWFkKClgIGFzIHdlbGwgYXMgYHRocmVhZGluZy5UaHJlYWRgLCBhbmQgbm90CnlldCBmaW5pc2hlZC4KClRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgZm9yIGludGVybmFsIGFuZCBzcGVjaWFsaXplZCBwdXJwb3NlcyBvbmx5LgpJbiBtb3N0IGFwcGxpY2F0aW9ucyBgdGhyZWFkaW5nLmVudW1lcmF0ZSgpYCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgAAAAAAAAAAAAAAAABzdGFja19zaXplKFtzaXplXSkgLT4gc2l6ZQoKUmV0dXJuIHRoZSB0aHJlYWQgc3RhY2sgc2l6ZSB1c2VkIHdoZW4gY3JlYXRpbmcgbmV3IHRocmVhZHMuICBUaGUKb3B0aW9uYWwgc2l6ZSBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHN0YWNrIHNpemUgKGluIGJ5dGVzKSB0byBiZSB1c2VkCmZvciBzdWJzZXF1ZW50bHkgY3JlYXRlZCB0aHJlYWRzLCBhbmQgbXVzdCBiZSAwICh1c2UgcGxhdGZvcm0gb3IKY29uZmlndXJlZCBkZWZhdWx0KSBvciBhIHBvc2l0aXZlIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMmspLgpJZiBjaGFuZ2luZyB0aGUgdGhyZWFkIHN0YWNrIHNpemUgaXMgdW5zdXBwb3J0ZWQsIGEgVGhyZWFkRXJyb3IKZXhjZXB0aW9uIGlzIHJhaXNlZC4gIElmIHRoZSBzcGVjaWZpZWQgc2l6ZSBpcyBpbnZhbGlkLCBhIFZhbHVlRXJyb3IKZXhjZXB0aW9uIGlzIHJhaXNlZCwgYW5kIHRoZSBzdGFjayBzaXplIGlzIHVubW9kaWZpZWQuICAzMmsgYnl0ZXMKIGN1cnJlbnRseSB0aGUgbWluaW11bSBzdXBwb3J0ZWQgc3RhY2sgc2l6ZSB2YWx1ZSB0byBndWFyYW50ZWUKc3VmZmljaWVudCBzdGFjayBzcGFjZSBmb3IgdGhlIGludGVycHJldGVyIGl0c2VsZi4KCk5vdGUgdGhhdCBzb21lIHBsYXRmb3JtcyBtYXkgaGF2ZSBwYXJ0aWN1bGFyIHJlc3RyaWN0aW9ucyBvbiB2YWx1ZXMgZm9yCnRoZSBzdGFjayBzaXplLCBzdWNoIGFzIHJlcXVpcmluZyBhIG1pbmltdW0gc3RhY2sgc2l6ZSBsYXJnZXIgdGhhbiAzMiBLaUIgb3IKcmVxdWlyaW5nIGFsbG9jYXRpb24gaW4gbXVsdGlwbGVzIG9mIHRoZSBzeXN0ZW0gbWVtb3J5IHBhZ2Ugc2l6ZQotIHBsYXRmb3JtIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIHJlZmVycmVkIHRvIGZvciBtb3JlIGluZm9ybWF0aW9uCig0IEtpQiBwYWdlcyBhcmUgY29tbW9uOyB1c2luZyBtdWx0aXBsZXMgb2YgNDA5NiBmb3IgdGhlIHN0YWNrIHNpemUgaXMKdGhlIHN1Z2dlc3RlZCBhcHByb2FjaCBpbiB0aGUgYWJzZW5jZSBvZiBtb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uKS4AAF9zZXRfc2VudGluZWwoKSAtPiBsb2NrCgpTZXQgYSBzZW50aW5lbCBsb2NrIHRoYXQgd2lsbCBiZSByZWxlYXNlZCB3aGVuIHRoZSBjdXJyZW50IHRocmVhZApzdGF0ZSBpcyBmaW5hbGl6ZWQgKGFmdGVyIGl0IGlzIHVudGllZCBmcm9tIHRoZSBpbnRlcnByZXRlcikuCgpUaGlzIGlzIGEgcHJpdmF0ZSBBUEkgZm9yIHRoZSB0aHJlYWRpbmcgbW9kdWxlLgAAAAAAAABleGNlcHRob29rKGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2ssIHRocmVhZCkKCkhhbmRsZSB1bmNhdWdodCBUaHJlYWQucnVuKCkgZXhjZXB0aW9uLgBBIGxvY2sgb2JqZWN0IGlzIGEgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZS4gIFRvIGNyZWF0ZSBhIGxvY2ssCmNhbGwgdGhyZWFkaW5nLkxvY2soKS4gIE1ldGhvZHMgYXJlOgoKYWNxdWlyZSgpIC0tIGxvY2sgdGhlIGxvY2ssIHBvc3NpYmx5IGJsb2NraW5nIHVudGlsIGl0IGNhbiBiZSBvYnRhaW5lZApyZWxlYXNlKCkgLS0gdW5sb2NrIG9mIHRoZSBsb2NrCmxvY2tlZCgpIC0tIHRlc3Qgd2hldGhlciB0aGUgbG9jayBpcyBjdXJyZW50bHkgbG9ja2VkCgpBIGxvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSB0aHJlYWQgdGhhdCBsb2NrZWQgaXQ7IGFub3RoZXIgdGhyZWFkIG1heQp1bmxvY2sgaXQuICBBIHRocmVhZCBhdHRlbXB0aW5nIHRvIGxvY2sgYSBsb2NrIHRoYXQgaXQgaGFzIGFscmVhZHkgbG9ja2VkCndpbGwgYmxvY2sgdW50aWwgYW5vdGhlciB0aHJlYWQgdW5sb2NrcyBpdC4gIERlYWRsb2NrcyBtYXkgZW5zdWUuAAAAAAAAAAAAAABhY3F1aXJlKGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpIC0+IGJvb2wKKGFjcXVpcmVfbG9jaygpIGlzIGFuIG9ic29sZXRlIHN5bm9ueW0pCgpMb2NrIHRoZSBsb2NrLiAgV2l0aG91dCBhcmd1bWVudCwgdGhpcyBibG9ja3MgaWYgdGhlIGxvY2sgaXMgYWxyZWFkeQpsb2NrZWQgKGV2ZW4gYnkgdGhlIHNhbWUgdGhyZWFkKSwgd2FpdGluZyBmb3IgYW5vdGhlciB0aHJlYWQgdG8gcmVsZWFzZQp0aGUgbG9jaywgYW5kIHJldHVybiBUcnVlIG9uY2UgdGhlIGxvY2sgaXMgYWNxdWlyZWQuCldpdGggYW4gYXJndW1lbnQsIHRoaXMgd2lsbCBvbmx5IGJsb2NrIGlmIHRoZSBhcmd1bWVudCBpcyB0cnVlLAphbmQgdGhlIHJldHVybiB2YWx1ZSByZWZsZWN0cyB3aGV0aGVyIHRoZSBsb2NrIGlzIGFjcXVpcmVkLgpUaGUgYmxvY2tpbmcgb3BlcmF0aW9uIGlzIGludGVycnVwdGlibGUuAAAAAAAAcmVsZWFzZSgpCihyZWxlYXNlX2xvY2soKSBpcyBhbiBvYnNvbGV0ZSBzeW5vbnltKQoKUmVsZWFzZSB0aGUgbG9jaywgYWxsb3dpbmcgYW5vdGhlciB0aHJlYWQgdGhhdCBpcyBibG9ja2VkIHdhaXRpbmcgZm9yCnRoZSBsb2NrIHRvIGFjcXVpcmUgdGhlIGxvY2suICBUaGUgbG9jayBtdXN0IGJlIGluIHRoZSBsb2NrZWQgc3RhdGUsCmJ1dCBpdCBuZWVkbid0IGJlIGxvY2tlZCBieSB0aGUgc2FtZSB0aHJlYWQgdGhhdCB1bmxvY2tzIGl0LgAAAAAAAGxvY2tlZCgpIC0+IGJvb2wKKGxvY2tlZF9sb2NrKCkgaXMgYW4gb2Jzb2xldGUgc3lub255bSkKClJldHVybiB3aGV0aGVyIHRoZSBsb2NrIGlzIGluIHRoZSBsb2NrZWQgc3RhdGUuAAAAAAAAAABhY3F1aXJlKGJsb2NraW5nPVRydWUpIC0+IGJvb2wKCkxvY2sgdGhlIGxvY2suICBgYmxvY2tpbmdgIGluZGljYXRlcyB3aGV0aGVyIHdlIHNob3VsZCB3YWl0CmZvciB0aGUgbG9jayB0byBiZSBhdmFpbGFibGUgb3Igbm90LiAgSWYgYGJsb2NraW5nYCBpcyBGYWxzZQphbmQgYW5vdGhlciB0aHJlYWQgaG9sZHMgdGhlIGxvY2ssIHRoZSBtZXRob2Qgd2lsbCByZXR1cm4gRmFsc2UKaW1tZWRpYXRlbHkuICBJZiBgYmxvY2tpbmdgIGlzIFRydWUgYW5kIGFub3RoZXIgdGhyZWFkIGhvbGRzCnRoZSBsb2NrLCB0aGUgbWV0aG9kIHdpbGwgd2FpdCBmb3IgdGhlIGxvY2sgdG8gYmUgcmVsZWFzZWQsCnRha2UgaXQgYW5kIHRoZW4gcmV0dXJuIFRydWUuCihub3RlOiB0aGUgYmxvY2tpbmcgb3BlcmF0aW9uIGlzIGludGVycnVwdGlibGUuKQoKSW4gYWxsIG90aGVyIGNhc2VzLCB0aGUgbWV0aG9kIHdpbGwgcmV0dXJuIFRydWUgaW1tZWRpYXRlbHkuClByZWNpc2VseSwgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGFscmVhZHkgaG9sZHMgdGhlIGxvY2ssIGl0cwppbnRlcm5hbCBjb3VudGVyIGlzIHNpbXBseSBpbmNyZW1lbnRlZC4gSWYgbm9ib2R5IGhvbGRzIHRoZSBsb2NrLAp0aGUgbG9jayBpcyB0YWtlbiBhbmQgaXRzIGludGVybmFsIGNvdW50ZXIgaW5pdGlhbGl6ZWQgdG8gMS4AAAAAAAByZWxlYXNlKCkKClJlbGVhc2UgdGhlIGxvY2ssIGFsbG93aW5nIGFub3RoZXIgdGhyZWFkIHRoYXQgaXMgYmxvY2tlZCB3YWl0aW5nIGZvcgp0aGUgbG9jayB0byBhY3F1aXJlIHRoZSBsb2NrLiAgVGhlIGxvY2sgbXVzdCBiZSBpbiB0aGUgbG9ja2VkIHN0YXRlLAphbmQgbXVzdCBiZSBsb2NrZWQgYnkgdGhlIHNhbWUgdGhyZWFkIHRoYXQgdW5sb2NrcyBpdDsgb3RoZXJ3aXNlIGEKYFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgoKRG8gbm90ZSB0aGF0IGlmIHRoZSBsb2NrIHdhcyBhY3F1aXJlKClkIHNldmVyYWwgdGltZXMgaW4gYSByb3cgYnkgdGhlCmN1cnJlbnQgdGhyZWFkLCByZWxlYXNlKCkgbmVlZHMgdG8gYmUgY2FsbGVkIGFzIG1hbnkgdGltZXMgZm9yIHRoZSBsb2NrCnRvIGJlIGF2YWlsYWJsZSBmb3Igb3RoZXIgdGhyZWFkcy4AAAAAAAAAAAAAAABfaXNfb3duZWQoKSAtPiBib29sCgpGb3IgaW50ZXJuYWwgdXNlIGJ5IGB0aHJlYWRpbmcuQ29uZGl0aW9uYC4AX2FjcXVpcmVfcmVzdG9yZShzdGF0ZSkgLT4gTm9uZQoKRm9yIGludGVybmFsIHVzZSBieSBgdGhyZWFkaW5nLkNvbmRpdGlvbmAuAAAAAABfcmVsZWFzZV9zYXZlKCkgLT4gdHVwbGUKCkZvciBpbnRlcm5hbCB1c2UgYnkgYHRocmVhZGluZy5Db25kaXRpb25gLgAAAAAAAAAAAAAAAEV4Y2VwdEhvb2tBcmdzCgpUeXBlIHVzZWQgdG8gcGFzcyBhcmd1bWVudHMgdG8gdGhyZWFkaW5nLmV4Y2VwdGhvb2suAAAAAAAAAAAAAAAAVGhpcyBtb2R1bGUgcHJvdmlkZXMgdmFyaW91cyBmdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSB0aW1lIHZhbHVlcy4KClRoZXJlIGFyZSB0d28gc3RhbmRhcmQgcmVwcmVzZW50YXRpb25zIG9mIHRpbWUuICBPbmUgaXMgdGhlIG51bWJlcgpvZiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCwgaW4gVVRDIChhLmsuYS4gR01UKS4gIEl0IG1heSBiZSBhbiBpbnRlZ2VyCm9yIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyICh0byByZXByZXNlbnQgZnJhY3Rpb25zIG9mIHNlY29uZHMpLgpUaGUgRXBvY2ggaXMgc3lzdGVtLWRlZmluZWQ7IG9uIFVuaXgsIGl0IGlzIGdlbmVyYWxseSBKYW51YXJ5IDFzdCwgMTk3MC4KVGhlIGFjdHVhbCB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIGJ5IGNhbGxpbmcgZ210aW1lKDApLgoKVGhlIG90aGVyIHJlcHJlc2VudGF0aW9uIGlzIGEgdHVwbGUgb2YgOSBpbnRlZ2VycyBnaXZpbmcgbG9jYWwgdGltZS4KVGhlIHR1cGxlIGl0ZW1zIGFyZToKICB5ZWFyIChpbmNsdWRpbmcgY2VudHVyeSwgZS5nLiAxOTk4KQogIG1vbnRoICgxLTEyKQogIGRheSAoMS0zMSkKICBob3VycyAoMC0yMykKICBtaW51dGVzICgwLTU5KQogIHNlY29uZHMgKDAtNTkpCiAgd2Vla2RheSAoMC02LCBNb25kYXkgaXMgMCkKICBKdWxpYW4gZGF5IChkYXkgaW4gdGhlIHllYXIsIDEtMzY2KQogIERTVCAoRGF5bGlnaHQgU2F2aW5ncyBUaW1lKSBmbGFnICgtMSwgMCBvciAxKQpJZiB0aGUgRFNUIGZsYWcgaXMgMCwgdGhlIHRpbWUgaXMgZ2l2ZW4gaW4gdGhlIHJlZ3VsYXIgdGltZSB6b25lOwppZiBpdCBpcyAxLCB0aGUgdGltZSBpcyBnaXZlbiBpbiB0aGUgRFNUIHRpbWUgem9uZTsKaWYgaXQgaXMgLTEsIG1rdGltZSgpIHNob3VsZCBndWVzcyBiYXNlZCBvbiB0aGUgZGF0ZSBhbmQgdGltZS4KAAAAAAAAAAAAAAAAdGltZSgpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlcgoKUmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2guCkZyYWN0aW9ucyBvZiBhIHNlY29uZCBtYXkgYmUgcHJlc2VudCBpZiB0aGUgc3lzdGVtIGNsb2NrIHByb3ZpZGVzIHRoZW0uAAAAAHRpbWVfbnMoKSAtPiBpbnQKClJldHVybiB0aGUgY3VycmVudCB0aW1lIGluIG5hbm9zZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC4AAAAAAAAAY2xvY2tfZ2V0dGltZShjbGtfaWQpIC0+IGZsb2F0CgpSZXR1cm4gdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuAABjbG9ja19nZXR0aW1lX25zKGNsa19pZCkgLT4gaW50CgpSZXR1cm4gdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQgYXMgbmFub3NlY29uZHMuAABjbG9ja19zZXR0aW1lKGNsa19pZCwgdGltZSkKClNldCB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4AAAAAAAAAAGNsb2NrX3NldHRpbWVfbnMoY2xrX2lkLCB0aW1lKQoKU2V0IHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkIHdpdGggbmFub3NlY29uZHMuAAAAAGNsb2NrX2dldHJlcyhjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlcgoKUmV0dXJuIHRoZSByZXNvbHV0aW9uIChwcmVjaXNpb24pIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLgBzbGVlcChzZWNvbmRzKQoKRGVsYXkgZXhlY3V0aW9uIGZvciBhIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLiAgVGhlIGFyZ3VtZW50IG1heSBiZQphIGZsb2F0aW5nIHBvaW50IG51bWJlciBmb3Igc3Vic2Vjb25kIHByZWNpc2lvbi4AAAAAAAAAAAAAAABnbXRpbWUoW3NlY29uZHNdKSAtPiAodG1feWVhciwgdG1fbW9uLCB0bV9tZGF5LCB0bV9ob3VyLCB0bV9taW4sCiAgICAgICAgICAgICAgICAgICAgICAgdG1fc2VjLCB0bV93ZGF5LCB0bV95ZGF5LCB0bV9pc2RzdCkKCkNvbnZlcnQgc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2ggdG8gYSB0aW1lIHR1cGxlIGV4cHJlc3NpbmcgVVRDIChhLmsuYS4KR01UKS4gIFdoZW4gJ3NlY29uZHMnIGlzIG5vdCBwYXNzZWQgaW4sIGNvbnZlcnQgdGhlIGN1cnJlbnQgdGltZSBpbnN0ZWFkLgoKSWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHRoZSB0bV9nbXRvZmYgYW5kIHRtX3pvbmUsIHRoZXkgYXJlIGF2YWlsYWJsZSBhcwphdHRyaWJ1dGVzIG9ubHkuAAAAAAAAAGxvY2FsdGltZShbc2Vjb25kc10pIC0+ICh0bV95ZWFyLHRtX21vbix0bV9tZGF5LHRtX2hvdXIsdG1fbWluLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3NlYyx0bV93ZGF5LHRtX3lkYXksdG1faXNkc3QpCgpDb252ZXJ0IHNlY29uZHMgc2luY2UgdGhlIEVwb2NoIHRvIGEgdGltZSB0dXBsZSBleHByZXNzaW5nIGxvY2FsIHRpbWUuCldoZW4gJ3NlY29uZHMnIGlzIG5vdCBwYXNzZWQgaW4sIGNvbnZlcnQgdGhlIGN1cnJlbnQgdGltZSBpbnN0ZWFkLgAAAAAAAAAAAAAAYXNjdGltZShbdHVwbGVdKSAtPiBzdHJpbmcKCkNvbnZlcnQgYSB0aW1lIHR1cGxlIHRvIGEgc3RyaW5nLCBlLmcuICdTYXQgSnVuIDA2IDE2OjI2OjExIDE5OTgnLgpXaGVuIHRoZSB0aW1lIHR1cGxlIGlzIG5vdCBwcmVzZW50LCBjdXJyZW50IHRpbWUgYXMgcmV0dXJuZWQgYnkgbG9jYWx0aW1lKCkKaXMgdXNlZC4AAAAAAAAAAAAAAAAAY3RpbWUoc2Vjb25kcykgLT4gc3RyaW5nCgpDb252ZXJ0IGEgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCB0byBhIHN0cmluZyBpbiBsb2NhbCB0aW1lLgpUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYXNjdGltZShsb2NhbHRpbWUoc2Vjb25kcykpLiBXaGVuIHRoZSB0aW1lIHR1cGxlIGlzCm5vdCBwcmVzZW50LCBjdXJyZW50IHRpbWUgYXMgcmV0dXJuZWQgYnkgbG9jYWx0aW1lKCkgaXMgdXNlZC4AAAAAAAAAAAAAbWt0aW1lKHR1cGxlKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXIKCkNvbnZlcnQgYSB0aW1lIHR1cGxlIGluIGxvY2FsIHRpbWUgdG8gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2guCk5vdGUgdGhhdCBta3RpbWUoZ210aW1lKDApKSB3aWxsIG5vdCBnZW5lcmFsbHkgcmV0dXJuIHplcm8gZm9yIG1vc3QKdGltZSB6b25lczsgaW5zdGVhZCB0aGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBlaXRoZXIgYmUgZXF1YWwgdG8gdGhhdApvZiB0aGUgdGltZXpvbmUgb3IgYWx0em9uZSBhdHRyaWJ1dGVzIG9uIHRoZSB0aW1lIG1vZHVsZS4AAAAAAAAAAHN0cmZ0aW1lKGZvcm1hdFssIHR1cGxlXSkgLT4gc3RyaW5nCgpDb252ZXJ0IGEgdGltZSB0dXBsZSB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgc3BlY2lmaWNhdGlvbi4KU2VlIHRoZSBsaWJyYXJ5IHJlZmVyZW5jZSBtYW51YWwgZm9yIGZvcm1hdHRpbmcgY29kZXMuIFdoZW4gdGhlIHRpbWUgdHVwbGUKaXMgbm90IHByZXNlbnQsIGN1cnJlbnQgdGltZSBhcyByZXR1cm5lZCBieSBsb2NhbHRpbWUoKSBpcyB1c2VkLgoKQ29tbW9ubHkgdXNlZCBmb3JtYXQgY29kZXM6CgolWSAgWWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIG51bWJlci4KJW0gIE1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAxLDEyXS4KJWQgIERheSBvZiB0aGUgbW9udGggYXMgYSBkZWNpbWFsIG51bWJlciBbMDEsMzFdLgolSCAgSG91ciAoMjQtaG91ciBjbG9jaykgYXMgYSBkZWNpbWFsIG51bWJlciBbMDAsMjNdLgolTSAgTWludXRlIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAwLDU5XS4KJVMgIFNlY29uZCBhcyBhIGRlY2ltYWwgbnVtYmVyIFswMCw2MV0uCiV6ICBUaW1lIHpvbmUgb2Zmc2V0IGZyb20gVVRDLgolYSAgTG9jYWxlJ3MgYWJicmV2aWF0ZWQgd2Vla2RheSBuYW1lLgolQSAgTG9jYWxlJ3MgZnVsbCB3ZWVrZGF5IG5hbWUuCiViICBMb2NhbGUncyBhYmJyZXZpYXRlZCBtb250aCBuYW1lLgolQiAgTG9jYWxlJ3MgZnVsbCBtb250aCBuYW1lLgolYyAgTG9jYWxlJ3MgYXBwcm9wcmlhdGUgZGF0ZSBhbmQgdGltZSByZXByZXNlbnRhdGlvbi4KJUkgIEhvdXIgKDEyLWhvdXIgY2xvY2spIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAxLDEyXS4KJXAgIExvY2FsZSdzIGVxdWl2YWxlbnQgb2YgZWl0aGVyIEFNIG9yIFBNLgoKT3RoZXIgY29kZXMgbWF5IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLiAgU2VlIGRvY3VtZW50YXRpb24gZm9yCnRoZSBDIGxpYnJhcnkgc3RyZnRpbWUgZnVuY3Rpb24uCgAAAAAAAABzdHJwdGltZShzdHJpbmcsIGZvcm1hdCkgLT4gc3RydWN0X3RpbWUKClBhcnNlIGEgc3RyaW5nIHRvIGEgdGltZSB0dXBsZSBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgc3BlY2lmaWNhdGlvbi4KU2VlIHRoZSBsaWJyYXJ5IHJlZmVyZW5jZSBtYW51YWwgZm9yIGZvcm1hdHRpbmcgY29kZXMgKHNhbWUgYXMKc3RyZnRpbWUoKSkuCgpDb21tb25seSB1c2VkIGZvcm1hdCBjb2RlczoKCiVZICBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyLgolbSAgTW9udGggYXMgYSBkZWNpbWFsIG51bWJlciBbMDEsMTJdLgolZCAgRGF5IG9mIHRoZSBtb250aCBhcyBhIGRlY2ltYWwgbnVtYmVyIFswMSwzMV0uCiVIICBIb3VyICgyNC1ob3VyIGNsb2NrKSBhcyBhIGRlY2ltYWwgbnVtYmVyIFswMCwyM10uCiVNICBNaW51dGUgYXMgYSBkZWNpbWFsIG51bWJlciBbMDAsNTldLgolUyAgU2Vjb25kIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAwLDYxXS4KJXogIFRpbWUgem9uZSBvZmZzZXQgZnJvbSBVVEMuCiVhICBMb2NhbGUncyBhYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWUuCiVBICBMb2NhbGUncyBmdWxsIHdlZWtkYXkgbmFtZS4KJWIgIExvY2FsZSdzIGFiYnJldmlhdGVkIG1vbnRoIG5hbWUuCiVCICBMb2NhbGUncyBmdWxsIG1vbnRoIG5hbWUuCiVjICBMb2NhbGUncyBhcHByb3ByaWF0ZSBkYXRlIGFuZCB0aW1lIHJlcHJlc2VudGF0aW9uLgolSSAgSG91ciAoMTItaG91ciBjbG9jaykgYXMgYSBkZWNpbWFsIG51bWJlciBbMDEsMTJdLgolcCAgTG9jYWxlJ3MgZXF1aXZhbGVudCBvZiBlaXRoZXIgQU0gb3IgUE0uCgpPdGhlciBjb2RlcyBtYXkgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0uICBTZWUgZG9jdW1lbnRhdGlvbiBmb3IKdGhlIEMgbGlicmFyeSBzdHJmdGltZSBmdW5jdGlvbi4KAAAAAABtb25vdG9uaWMoKSAtPiBmbG9hdAoKTW9ub3RvbmljIGNsb2NrLCBjYW5ub3QgZ28gYmFja3dhcmQuAAAAAAAAbW9ub3RvbmljX25zKCkgLT4gaW50CgpNb25vdG9uaWMgY2xvY2ssIGNhbm5vdCBnbyBiYWNrd2FyZCwgYXMgbmFub3NlY29uZHMuAAAAAABwcm9jZXNzX3RpbWUoKSAtPiBmbG9hdAoKUHJvY2VzcyB0aW1lIGZvciBwcm9maWxpbmc6IHN1bSBvZiB0aGUga2VybmVsIGFuZCB1c2VyLXNwYWNlIENQVSB0aW1lLgBwcm9jZXNzX3RpbWUoKSAtPiBpbnQKClByb2Nlc3MgdGltZSBmb3IgcHJvZmlsaW5nIGFzIG5hbm9zZWNvbmRzOgpzdW0gb2YgdGhlIGtlcm5lbCBhbmQgdXNlci1zcGFjZSBDUFUgdGltZS4AAAAAcGVyZl9jb3VudGVyKCkgLT4gZmxvYXQKClBlcmZvcm1hbmNlIGNvdW50ZXIgZm9yIGJlbmNobWFya2luZy4AAHBlcmZfY291bnRlcl9ucygpIC0+IGludAoKUGVyZm9ybWFuY2UgY291bnRlciBmb3IgYmVuY2htYXJraW5nIGFzIG5hbm9zZWNvbmRzLgAAZ2V0X2Nsb2NrX2luZm8obmFtZTogc3RyKSAtPiBkaWN0CgpHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHNwZWNpZmllZCBjbG9jay4AAAAAAABTdW4ATW9uAFR1ZQBXZWQAVGh1AEZyaQBTYXQAAAAAAEphbgBGZWIATWFyAEFwcgBNYXkASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAGdldHdlYWtyZWZjb3VudCgkbW9kdWxlLCBvYmplY3QsIC8pCi0tCgpSZXR1cm4gdGhlIG51bWJlciBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gJ29iamVjdCcuAAAAAAAAAF9yZW1vdmVfZGVhZF93ZWFrcmVmKCRtb2R1bGUsIGRjdCwga2V5LCAvKQotLQoKQXRvbWljYWxseSByZW1vdmUga2V5IGZyb20gZGljdCBpZiBpdCBwb2ludHMgdG8gYSBkZWFkIHdlYWtyZWYuAABnZXR3ZWFrcmVmcygkbW9kdWxlLCBvYmplY3QsIC8pCi0tCgpSZXR1cm4gYSBsaXN0IG9mIGFsbCB3ZWFrIHJlZmVyZW5jZSBvYmplY3RzIHBvaW50aW5nIHRvICdvYmplY3QnLgAAAAAAAAAAAAAAcHJveHkoJG1vZHVsZSwgb2JqZWN0LCBjYWxsYmFjaz1Ob25lLCAvKQotLQoKQ3JlYXRlIGEgcHJveHkgb2JqZWN0IHRoYXQgd2Vha2x5IHJlZmVyZW5jZXMgJ29iamVjdCcuCgonY2FsbGJhY2snLCBpZiBnaXZlbiwgaXMgY2FsbGVkIHdpdGggYSByZWZlcmVuY2UgdG8gdGhlCnByb3h5IHdoZW4gJ29iamVjdCcgaXMgYWJvdXQgdG8gYmUgZmluYWxpemVkLgAAAAAAAE1vZHVsZSBjb250YWlucyBmYXN0ZXIgQyBpbXBsZW1lbnRhdGlvbiBvZiBhYmMuQUJDTWV0YQAAAAAAAAAAAABnZXRfY2FjaGVfdG9rZW4oJG1vZHVsZSwgLykKLS0KClJldHVybnMgdGhlIGN1cnJlbnQgQUJDIGNhY2hlIHRva2VuLgoKVGhlIHRva2VuIGlzIGFuIG9wYXF1ZSBvYmplY3QgKHN1cHBvcnRpbmcgZXF1YWxpdHkgdGVzdGluZykgaWRlbnRpZnlpbmcgdGhlCmN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgQUJDIGNhY2hlIGZvciB2aXJ0dWFsIHN1YmNsYXNzZXMuIFRoZSB0b2tlbiBjaGFuZ2VzCndpdGggZXZlcnkgY2FsbCB0byByZWdpc3RlcigpIG9uIGFueSBBQkMuAAAAAAAAAAAAAF9hYmNfaW5pdCgkbW9kdWxlLCBzZWxmLCAvKQotLQoKSW50ZXJuYWwgQUJDIGhlbHBlciBmb3IgY2xhc3Mgc2V0LXVwLiBTaG91bGQgYmUgbmV2ZXIgdXNlZCBvdXRzaWRlIGFiYyBtb2R1bGUuAABfcmVzZXRfcmVnaXN0cnkoJG1vZHVsZSwgc2VsZiwgLykKLS0KCkludGVybmFsIEFCQyBoZWxwZXIgdG8gcmVzZXQgcmVnaXN0cnkgb2YgYSBnaXZlbiBjbGFzcy4KClNob3VsZCBiZSBvbmx5IHVzZWQgYnkgcmVmbGVhay5weQAAAAAAAAAAAAAAAAAAAABfcmVzZXRfY2FjaGVzKCRtb2R1bGUsIHNlbGYsIC8pCi0tCgpJbnRlcm5hbCBBQkMgaGVscGVyIHRvIHJlc2V0IGJvdGggY2FjaGVzIG9mIGEgZ2l2ZW4gY2xhc3MuCgpTaG91bGQgYmUgb25seSB1c2VkIGJ5IHJlZmxlYWsucHkAAAAAAAAAAAAAAAAAAABfZ2V0X2R1bXAoJG1vZHVsZSwgc2VsZiwgLykKLS0KCkludGVybmFsIEFCQyBoZWxwZXIgZm9yIGNhY2hlIGFuZCByZWdpc3RyeSBkZWJ1Z2dpbmcuCgpSZXR1cm4gc2hhbGxvdyBjb3BpZXMgb2YgcmVnaXN0cnksIG9mIGJvdGggY2FjaGVzLCBhbmQKbmVnYXRpdmUgY2FjaGUgdmVyc2lvbi4gRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LAppbnN0ZWFkIHVzZSBBQkMuX2R1bXBfcmVnaXN0cnkoKSBmb3IgYSBuaWNlIHJlcHIuAAAAAAAAX2FiY19yZWdpc3RlcigkbW9kdWxlLCBzZWxmLCBzdWJjbGFzcywgLykKLS0KCkludGVybmFsIEFCQyBoZWxwZXIgZm9yIHN1YmNsYXNzcyByZWdpc3RyYXRpb24uIFNob3VsZCBiZSBuZXZlciB1c2VkIG91dHNpZGUgYWJjIG1vZHVsZS4AAAAAAAAAAAAAX2FiY19pbnN0YW5jZWNoZWNrKCRtb2R1bGUsIHNlbGYsIGluc3RhbmNlLCAvKQotLQoKSW50ZXJuYWwgQUJDIGhlbHBlciBmb3IgaW5zdGFuY2UgY2hlY2tzLiBTaG91bGQgYmUgbmV2ZXIgdXNlZCBvdXRzaWRlIGFiYyBtb2R1bGUuAAAAAAAAAAAAAAAAX2FiY19zdWJjbGFzc2NoZWNrKCRtb2R1bGUsIHNlbGYsIHN1YmNsYXNzLCAvKQotLQoKSW50ZXJuYWwgQUJDIGhlbHBlciBmb3Igc3ViY2xhc3NzIGNoZWNrcy4gU2hvdWxkIGJlIG5ldmVyIHVzZWQgb3V0c2lkZSBhYmMgbW9kdWxlLgAAAAAAAAAAAAAASW50ZXJuYWwgc3RhdGUgaGVsZCBieSBBQkMgbWFjaGluZXJ5LgAAAAAAAAAAAAAAVG9vbHMgdGhhdCBvcGVyYXRlIG9uIGZ1bmN0aW9ucy4AAAAAAAAAAAAAAAAAAAAAcmVkdWNlKGZ1bmN0aW9uLCBpdGVyYWJsZVssIGluaXRpYWxdKSAtPiB2YWx1ZQoKQXBwbHkgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzIGN1bXVsYXRpdmVseSB0byB0aGUgaXRlbXMgb2YgYSBzZXF1ZW5jZQpvciBpdGVyYWJsZSwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBzbyBhcyB0byByZWR1Y2UgdGhlIGl0ZXJhYmxlIHRvIGEgc2luZ2xlCnZhbHVlLiAgRm9yIGV4YW1wbGUsIHJlZHVjZShsYW1iZGEgeCwgeTogeCt5LCBbMSwgMiwgMywgNCwgNV0pIGNhbGN1bGF0ZXMKKCgoKDErMikrMykrNCkrNSkuICBJZiBpbml0aWFsIGlzIHByZXNlbnQsIGl0IGlzIHBsYWNlZCBiZWZvcmUgdGhlIGl0ZW1zCm9mIHRoZSBpdGVyYWJsZSBpbiB0aGUgY2FsY3VsYXRpb24sIGFuZCBzZXJ2ZXMgYXMgYSBkZWZhdWx0IHdoZW4gdGhlCml0ZXJhYmxlIGlzIGVtcHR5LgAAQ29udmVydCBhIGNtcD0gZnVuY3Rpb24gaW50byBhIGtleT0gZnVuY3Rpb24uAAAAcGFydGlhbChmdW5jLCAqYXJncywgKiprZXl3b3JkcykgLSBuZXcgZnVuY3Rpb24gd2l0aCBwYXJ0aWFsIGFwcGxpY2F0aW9uCiAgICBvZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFuZCBrZXl3b3Jkcy4KAAAAAAAAAAAAAAAAAABDcmVhdGUgYSBjYWNoZWQgY2FsbGFibGUgdGhhdCB3cmFwcyBhbm90aGVyIGZ1bmN0aW9uLgoKdXNlcl9mdW5jdGlvbjogICAgICB0aGUgZnVuY3Rpb24gYmVpbmcgY2FjaGVkCgptYXhzaXplOiAgMCAgICAgICAgIGZvciBubyBjYWNoaW5nCiAgICAgICAgICBOb25lICAgICAgZm9yIHVubGltaXRlZCBjYWNoZSBzaXplCiAgICAgICAgICBuICAgICAgICAgZm9yIGEgYm91bmRlZCBjYWNoZQoKdHlwZWQ6ICAgIEZhbHNlICAgICBjYWNoZSBmKDMpIGFuZCBmKDMuMCkgYXMgaWRlbnRpY2FsIGNhbGxzCiAgICAgICAgICBUcnVlICAgICAgY2FjaGUgZigzKSBhbmQgZigzLjApIGFzIGRpc3RpbmN0IGNhbGxzCgpjYWNoZV9pbmZvX3R5cGU6ICAgIG5hbWVkdHVwbGUgY2xhc3Mgd2l0aCB0aGUgZmllbGRzOgogICAgICAgICAgICAgICAgICAgICAgICBoaXRzIG1pc3NlcyBjdXJyc2l6ZSBtYXhzaXplCgAAAAAAAAAAAAAAAFN1cHBvcnQgZm9yIFBPU0lYIGxvY2FsZXMuAAAAAAAAc2V0bG9jYWxlKCRtb2R1bGUsIGNhdGVnb3J5LCBsb2NhbGU9PHVucmVwcmVzZW50YWJsZT4sIC8pCi0tCgpBY3RpdmF0ZXMvcXVlcmllcyBsb2NhbGUgcHJvY2Vzc2luZy4AAAAAAAAAAAAAAAAAAGxvY2FsZWNvbnYoJG1vZHVsZSwgLykKLS0KClJldHVybnMgbnVtZXJpYyBhbmQgbW9uZXRhcnkgbG9jYWxlLXNwZWNpZmljIHBhcmFtZXRlcnMuAAAAAAAAAAAAAAAAAHN0cmNvbGwoJG1vZHVsZSwgb3MxLCBvczIsIC8pCi0tCgpDb21wYXJlcyB0d28gc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZS4Ac3RyeGZybSgkbW9kdWxlLCBzdHJpbmcsIC8pCi0tCgpSZXR1cm4gYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGtleSBmb3IgbG9jYWxlLWF3YXJlIGNvbXBhcmlzb25zLgAAAAAAAAAAAG5sX2xhbmdpbmZvKCRtb2R1bGUsIGtleSwgLykKLS0KClJldHVybiB0aGUgdmFsdWUgZm9yIHRoZSBsb2NhbGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGtleS4AAAAAAAAAAAAAAAAAAABnZXR0ZXh0KCRtb2R1bGUsIG1zZywgLykKLS0KCmdldHRleHQobXNnKSAtPiBzdHJpbmcKClJldHVybiB0cmFuc2xhdGlvbiBvZiBtc2cuAGRnZXR0ZXh0KCRtb2R1bGUsIGRvbWFpbiwgbXNnLCAvKQotLQoKZGdldHRleHQoZG9tYWluLCBtc2cpIC0+IHN0cmluZwoKUmV0dXJuIHRyYW5zbGF0aW9uIG9mIG1zZyBpbiBkb21haW4uAAAAAABkY2dldHRleHQoJG1vZHVsZSwgZG9tYWluLCBtc2csIGNhdGVnb3J5LCAvKQotLQoKUmV0dXJuIHRyYW5zbGF0aW9uIG9mIG1zZyBpbiBkb21haW4gYW5kIGNhdGVnb3J5LgAAAAAAAAAAAAAAAAAAdGV4dGRvbWFpbigkbW9kdWxlLCBkb21haW4sIC8pCi0tCgpTZXQgdGhlIEMgbGlicmFyeSdzIHRleHRkbWFpbiB0byBkb21haW4sIHJldHVybmluZyB0aGUgbmV3IGRvbWFpbi4AAAAAAAAAAAAAAGJpbmR0ZXh0ZG9tYWluKCRtb2R1bGUsIGRvbWFpbiwgZGlyLCAvKQotLQoKQmluZCB0aGUgQyBsaWJyYXJ5J3MgZG9tYWluIHRvIGRpci4AYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoJG1vZHVsZSwgZG9tYWluLCBjb2Rlc2V0LCAvKQotLQoKQmluZCB0aGUgQyBsaWJyYXJ5J3MgZG9tYWluIHRvIGNvZGVzZXQuAAAAAAAAAAAAAAAAAAAAAGdldGVuY29kaW5nKCRtb2R1bGUsIC8pCi0tCgpHZXQgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLgAAAABPcGVyYXRvciBpbnRlcmZhY2UuCgpUaGlzIG1vZHVsZSBleHBvcnRzIGEgc2V0IG9mIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIGNvcnJlc3BvbmRpbmcKdG8gdGhlIGludHJpbnNpYyBvcGVyYXRv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cyBhIDwgYi4AAAAAAAAAAABsZSgkbW9kdWxlLCBhLCBiLCAvKQotLQoKU2FtZSBhcyBhIDw9IGIuAAAAAAAAAABndCgkbW9kdWxlLCBhLCBiLCAvKQotLQoKU2FtZSBhcyBhID4gYi4AAAAAAAAAAABnZSgkbW9kdWxlLCBhLCBiLCAvKQotLQoKU2FtZSBhcyBhID49IGIuAAAAAAAAAABfY29tcGFyZV9kaWdlc3QoJG1vZHVsZSwgYSwgYiwgLykKLS0KClJldHVybiAnYSA9PSBiJy4KClRoaXMgZnVuY3Rpb24gdXNlcyBhbiBhcHByb2FjaCBkZXNpZ25lZCB0byBwcmV2ZW50CnRpbWluZyBhbmFseXNpcywgbWFraW5nIGl0IGFwcHJvcHJpYXRlIGZvciBjcnlwdG9ncmFwaHkuCgphIGFuZCBiIG11c3QgYm90aCBiZSBvZiB0aGUgc2FtZSB0eXBlOiBlaXRoZXIgc3RyIChBU0NJSSBvbmx5KSwKb3IgYW55IGJ5dGVzLWxpa2Ugb2JqZWN0LgoKTm90ZTogSWYgYSBhbmQgYiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycywKYSB0aW1pbmcgYXR0YWNrIGNvdWxkIHRoZW9yZXRpY2FsbHkgcmV2ZWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZQp0eXBlcyBhbmQgbGVuZ3RocyBvZiBhIGFuZCBiLS1idXQgbm90IHRoZWlyIHZhbHVlcy4AAAAAAAAAAAAAbGVuZ3RoX2hpbnQoJG1vZHVsZSwgb2JqLCBkZWZhdWx0PTAsIC8pCi0tCgpSZXR1cm4gYW4gZXN0aW1hdGUgb2YgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBvYmouCgpUaGlzIGlzIHVzZWZ1bCBmb3IgcHJlc2l6aW5nIGNvbnRhaW5lcnMgd2hlbiBidWlsZGluZyBmcm9tIGFuIGl0ZXJhYmxlLgoKSWYgdGhlIG9iamVjdCBzdXBwb3J0cyBsZW4oKSwgdGhlIHJlc3VsdCB3aWxsIGJlIGV4YWN0LgpPdGhlcndpc2UsIGl0IG1heSBvdmVyLSBvciB1bmRlci1lc3RpbWF0ZSBieSBhbiBhcmJpdHJhcnkgYW1vdW50LgpUaGUgcmVzdWx0IHdpbGwgYmUgYW4gaW50ZWdlciA+PSAwLgAAAAAAAAAAAAAAY2FsbCgkbW9kdWxlLCBvYmosIC8sICphcmdzLCAqKmt3YXJncykKLS0KClNhbWUgYXMgb2JqKCphcmdzLCAqKmt3YXJncykuAAAAAAAAAABhdHRyZ2V0dGVyKGF0dHIsIC4uLikgLS0+IGF0dHJnZXR0ZXIgb2JqZWN0CgpSZXR1cm4gYSBjYWxsYWJsZSBvYmplY3QgdGhhdCBmZXRjaGVzIHRoZSBnaXZlbiBhdHRyaWJ1dGUocykgZnJvbSBpdHMgb3BlcmFuZC4KQWZ0ZXIgZiA9IGF0dHJnZXR0ZXIoJ25hbWUnKSwgdGhlIGNhbGwgZihyKSByZXR1cm5zIHIubmFtZS4KQWZ0ZXIgZyA9IGF0dHJnZXR0ZXIoJ25hbWUnLCAnZGF0ZScpLCB0aGUgY2FsbCBnKHIpIHJldHVybnMgKHIubmFtZSwgci5kYXRlKS4KQWZ0ZXIgaCA9IGF0dHJnZXR0ZXIoJ25hbWUuZmlyc3QnLCAnbmFtZS5sYXN0JyksIHRoZSBjYWxsIGgocikgcmV0dXJucwooci5uYW1lLmZpcnN0LCByLm5hbWUubGFzdCkuAAAAAAAAAFJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcAAAAAAAAAAAAAAGl0ZW1nZXR0ZXIoaXRlbSwgLi4uKSAtLT4gaXRlbWdldHRlciBvYmplY3QKClJldHVybiBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IGZldGNoZXMgdGhlIGdpdmVuIGl0ZW0ocykgZnJvbSBpdHMgb3BlcmFuZC4KQWZ0ZXIgZiA9IGl0ZW1nZXR0ZXIoMiksIHRoZSBjYWxsIGYocikgcmV0dXJucyByWzJdLgpBZnRlciBnID0gaXRlbWdldHRlcigyLCA1LCAzKSwgdGhlIGNhbGwgZyhyKSByZXR1cm5zIChyWzJdLCByWzVdLCByWzNdKQAAAAAAAAAAAAAAAABtZXRob2RjYWxsZXIobmFtZSwgLi4uKSAtLT4gbWV0aG9kY2FsbGVyIG9iamVjdAoKUmV0dXJuIGEgY2FsbGFibGUgb2JqZWN0IHRoYXQgY2FsbHMgdGhlIGdpdmVuIG1ldGhvZCBvbiBpdHMgb3BlcmFuZC4KQWZ0ZXIgZiA9IG1ldGhvZGNhbGxlcignbmFtZScpLCB0aGUgY2FsbCBmKHIpIHJldHVybnMgci5uYW1lKCkuCkFmdGVyIGcgPSBtZXRob2RjYWxsZXIoJ25hbWUnLCAnZGF0ZScsIGZvbz0xKSwgdGhlIGNhbGwgZyhyKSByZXR1cm5zCnIubmFtZSgnZGF0ZScsIGZvbz0xKS4AAAAAAAAAAAAAAAAAAABTX0lGTVRfOiBmaWxlIHR5cGUgYml0cwpTX0lGRElSOiBkaXJlY3RvcnkKU19JRkNIUjogY2hhcmFjdGVyIGRldmljZQpTX0lGQkxLOiBibG9jayBkZXZpY2UKU19JRlJFRzogcmVndWxhciBmaWxlClNfSUZJRk86IGZpZm8gKG5hbWVkIHBpcGUpClNfSUZMTks6IHN5bWJvbGljIGxpbmsKU19JRlNPQ0s6IHNvY2tldCBmaWxlClNfSUZET09SOiBkb29yClNfSUZQT1JUOiBldmVudCBwb3J0ClNfSUZXSFQ6IHdoaXRlb3V0CgpTX0lTVUlEOiBzZXQgVUlEIGJpdApTX0lTR0lEOiBzZXQgR0lEIGJpdApTX0VORk1UOiBmaWxlIGxvY2tpbmcgZW5mb3JjZW1lbnQKU19JU1ZUWDogc3RpY2t5IGJpdApTX0lSRUFEOiBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVJVU1IKU19JV1JJVEU6IFVuaXggVjcgc3lub255bSBmb3IgU19JV1VTUgpTX0lFWEVDOiBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVhVU1IKU19JUldYVTogbWFzayBmb3Igb3duZXIgcGVybWlzc2lvbnMKU19JUlVTUjogcmVhZCBieSBvd25lcgpTX0lXVVNSOiB3cml0ZSBieSBvd25lcgpTX0lYVVNSOiBleGVjdXRlIGJ5IG93bmVyClNfSVJXWEc6IG1hc2sgZm9yIGdyb3VwIHBlcm1pc3Npb25zClNfSVJHUlA6IHJlYWQgYnkgZ3JvdXAKU19JV0dSUDogd3JpdGUgYnkgZ3JvdXAKU19JWEdSUDogZXhlY3V0ZSBieSBncm91cApTX0lSV1hPOiBtYXNrIGZvciBvdGhlcnMgKG5vdCBpbiBncm91cCkgcGVybWlzc2lvbnMKU19JUk9USDogcmVhZCBieSBvdGhlcnMKU19JV09USDogd3JpdGUgYnkgb3RoZXJzClNfSVhPVEg6IGV4ZWN1dGUgYnkgb3RoZXJzCgpVRl9OT0RVTVA6IGRvIG5vdCBkdW1wIGZpbGUKVUZfSU1NVVRBQkxFOiBmaWxlIG1heSBub3QgYmUgY2hhbmdlZApVRl9BUFBFTkQ6IGZpbGUgbWF5IG9ubHkgYmUgYXBwZW5kZWQgdG8KVUZfT1BBUVVFOiBkaXJlY3RvcnkgaXMgb3BhcXVlIHdoZW4gdmlld2VkIHRocm91Z2ggYSB1bmlvbiBzdGFjawpVRl9OT1VOTElOSzogZmlsZSBtYXkgbm90IGJlIHJlbmFtZWQgb3IgZGVsZXRlZApVRl9DT01QUkVTU0VEOiBPUyBYOiBmaWxlIGlzIGhmcy1jb21wcmVzc2VkClVGX0hJRERFTjogT1MgWDogZmlsZSBzaG91bGQgbm90IGJlIGRpc3BsYXllZApTRl9BUkNISVZFRDogZmlsZSBtYXkgYmUgYXJjaGl2ZWQKU0ZfSU1NVVRBQkxFOiBmaWxlIG1heSBub3QgYmUgY2hhbmdlZApTRl9BUFBFTkQ6IGZpbGUgbWF5IG9ubHkgYmUgYXBwZW5kZWQgdG8KU0ZfTk9VTkxJTks6IGZpbGUgbWF5IG5vdCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQKU0ZfU05BUFNIT1Q6IGZpbGUgaXMgYSBzbmFwc2hvdCBmaWxlCgpTVF9NT0RFClNUX0lOTwpTVF9ERVYKU1RfTkxJTksKU1RfVUlEClNUX0dJRApTVF9TSVpFClNUX0FUSU1FClNUX01USU1FClNUX0NUSU1FCgpGSUxFX0FUVFJJQlVURV8qOiBXaW5kb3dzIGZpbGUgYXR0cmlidXRlIGNvbnN0YW50cwogICAgICAgICAgICAgICAgICAgKG9ubHkgcHJlc2VudCBvbiBXaW5kb3dzKQoAAAAAAAAAAABTX0lTRElSKG1vZGUpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGRpcmVjdG9yeS4AU19JU0NIUihtb2RlKSAtPiBib29sCgpSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBjaGFyYWN0ZXIgc3BlY2lhbCBkZXZpY2UgZmlsZS4AAAAAAAAAAAAAAAAAU19JU0JMSyhtb2RlKSAtPiBib29sCgpSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBibG9jayBzcGVjaWFsIGRldmljZSBmaWxlLgBTX0lTUkVHKG1vZGUpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHJlZ3VsYXIgZmlsZS4AAAAAAAAAAAAAAAAAAFNfSVNGSUZPKG1vZGUpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIEZJRk8gKG5hbWVkIHBpcGUpLgAAAAAAAAAAU19JU0xOSyhtb2RlKSAtPiBib29sCgpSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBzeW1ib2xpYyBsaW5rLgAAAAAAAAAAAAAAAABTX0lTU09DSyhtb2RlKSAtPiBib29sCgpSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBzb2NrZXQuAAAAU19JU0RPT1IobW9kZSkgLT4gYm9vbAoKUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgZG9vci4AAAAAAFNfSVNQT1JUKG1vZGUpIC0+IGJvb2wKClJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhbiBldmVudCBwb3J0LgAAAAAAAAAAAAAAAAAAU19JU1dIVChtb2RlKSAtPiBib29sCgpSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSB3aGl0ZW91dC4AAFJldHVybiB0aGUgcG9ydGlvbiBvZiB0aGUgZmlsZSdzIG1vZGUgdGhhdCBjYW4gYmUgc2V0IGJ5IG9zLmNobW9kKCkuAAAAAAAAAAAAAAAAUmV0dXJuIHRoZSBwb3J0aW9uIG9mIHRoZSBmaWxlJ3MgbW9kZSB0aGF0IGRlc2NyaWJlcyB0aGUgZmlsZSB0eXBlLgAAAAAAAAAAAAAAAABDb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YgdGhlIGZvcm0gJy1yd3hyd3hyd3gnAHBjP2Q/Yj8tP2w/cwAAAAAAAAAAAHN5bXRhYmxlKCRtb2R1bGUsIHNvdXJjZSwgZmlsZW5hbWUsIHN0YXJ0c3RyLCAvKQotLQoKUmV0dXJuIHN5bWJvbCBhbmQgc2NvcGUgZGljdGlvbmFyaWVzIHVzZWQgaW50ZXJuYWxseSBieSBjb21waWxlci4AAAAAAAAAAAAAeHhzdWJ0eXBlIGlzIGFuIGV4YW1wbGUgbW9kdWxlIHNob3dpbmcgaG93IHRvIHN1YnR5cGUgYnVpbHRpbiB0eXBlcyBmcm9tIEMuCnRlc3RfZGVzY3IucHkgaW4gdGhlIHN0YW5kYXJkIHRlc3Qgc3VpdGUgcmVxdWlyZXMgaXQgaW4gb3JkZXIgdG8gY29tcGxldGUuCklmIHlvdSBkb24ndCBjYXJlIGFib3V0IHRoZSBleGFtcGxlcywgYW5kIGRvbid0IGludGVuZCB0byBydW4gdGhlIFB5dGhvbgp0ZXN0IHN1aXRlLCB5b3UgY2FuIHJlY29tcGlsZSBQeXRob24gd2l0aG91dCBNb2R1bGVzL3h4c3VidHlwZS5jLgAAAAEAAH4BAAB4AQAAbAUAAAAfAAAADQAAAO3//3c2AAAAAQAA9gAAEDsAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIABAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUAypo7AAAAAAAAAAAEMfEXS3c6KuPW9SrZcNcBgWLmIzhFpi0Nu38LYTB8LceRISM3/Ag5WobpBBpaHyN5tKIOxG9cMPEawysMUcUzIVL7CaH4MS6CBxwqQqQTAfEm6yXihvEh1rHHK21kVQktA9MIyanmEGLLYChH8Q8cvo2ANGQ94hhbIYwM1vkNOLlC+jfFrkA1sLIEGodXQBob2AAnQo3+MCF1FiWQLLo0zsQNIFCt5BQnkRATf076Optm5hsrCPcqQvIRCjZa7CvE2kUo+A2TIJiJdTMQChgYKtW4MVUcVh5oGmgB0HeuOQxmxAW2IPYjcXZuM0RcTi3Exesb6ffyFxiN2BFNd7kNAAAKABQAHgAnADEAOgBEAE0AVgBfAGgAcQB6AIMAjACUAJ0ApgCuALYAvwDHAM8A1wDfAOcA7wD3AP8ABgEOARYBHQElASwBNAE7AUIBSQFQAVgBXwFmAW0BdAF6AYEBiAGPAZYBnAGjAakBsAG2Ab0BwwHJAdAB1gHcAeIB6QHvAfUB+wEBAgcCDQITAhgCHgIkAioCMAI1AjsCQQJGAkwCUQJXAlwCYgJnAm0CcgJ3An0CggKHAowCkgKXApwCoQKmAqsCsAK1AroCvwLEAskCzgLTAtgC3ALhAuYC6wLvAvQC+QL+AgIDBwMLAxADFAMZAx4DIgMmAysDLwM0AzgDPQNBA0UDSgNOA1IDVgNbA18DYwNnA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A78DwwPHA8sDzwPSA9YD2gPeA+ED5QPpA+wD8AP0A/cD+wP+AwIEBgQJBA0EEAQUBBcEGwQeBCIEJQQpBCwEMAQzBDYEOgQ9BEEERARHBEsETgRRBFUEWARbBF4EYgRlBGgEawRvBHIEdQR4BHsEfwSCBIUEiASLBI4EkQSUBJgEmwSeBKEEpASnBKoErQSwBLMEtgS5BLwEvwTCBMUEyATLBM4E0QTTBNYE2QTcBN8E4gTlBOgE6gTtBPAE8wT2BPkE+wT+BAEFBAUGBQkFDAUPBREFFAUXBRoFHAUfBSIFJAUnBSoFLAUvBTIFNAU3BToFPAU/BUEFRAVHBUkFTAVOBVEFVAVWBVkFWwVeBWAFYwVlBWgFagVtBW8FcgV0BXcFeQV8BX4FgQWDBYUFiAWKBY0FjwWSBZQFlgWZBZsFnQWgBaIFpQWnBakFrAWuBbAFswW1BbcFugW8Bb4FwAXDBcUFxwXKBcwFzgXQBdMF1QXXBdkF3AXeBeAF4gXlBecF6QXrBe0F8AXyBfQF9gX4BfoF/QX/BQEGAwYFBgcGCQYMBg4GEAYSBhQGFgYYBhoGHAYfBiEGIwYlBicGKQYrBi0GLwYxBjMGNQY3BjkGOwY9Bj8GQQZDBkUGRwZJBrMCsQKvAq0CqwKpAqcCpQKjAqECnwKdApwCmgKYApYClAKSApACjgKMAooCiAKGAoQCggKBAn8CfQJ7AnkCdwJ1AnMCcgJwAm4CbAJqAmgCZgJkAmMCYQJfAl0CWwJaAlgCVgJUAlICUAJPAk0CSwJJAkcCRgJEAkICQAI+Aj0COwI5AjcCNgI0AjICMAIvAi0CKwIpAigCJgIkAiICIQIfAh0CHAIaAhgCFgIVAhMCEQIQAg4CDAILAgkCBwIGAgQCAgIAAv8B/QH8AfoB+AH2AfUB8wHyAfAB7gHtAesB6QHoAeYB5AHjAeEB4AHeAdwB2wHZAdgB1gHUAdMB0QHQAc4BzAHLAckByAHGAcUBwwHBAcABvgG9AbsBugG4AbYBtQGzAbIBsAGvAa0BrAGqAakBpwGmAaQBowGhAaABngGcAZsBmgGYAZYBlQGUAZIBkAGPAY4BjAGKAYkBiAGGAYUBgwGCAYABfwF9AXwBegF5AXcBdgF0AXMBcgFwAW8BbQFsAWoBaQFoAWYBZQFjAWIBYAFfAV4BXAFbAVkBWAFWAVUBVAFSAVEBUAFOAU0BSwFKAUgBRwFGAUQBQwFCAUABPwE+ATwBOwE5ATgBNwE1ATQBMgExATABLgEtASwBKgEpASgBJgElASQBIgEhASABHgEdARwBGgEZARgBFgEVARQBEgERARABDgENAQwBCwEJAQgBBwEFAQQBAwECAQAB/wD+APwA+wD6APgA9wD2APUA8wDyAPEA8ADuAO0A7ADqAOkA6ADnAOUA5ADjAOIA4ADfAN4A3QDbANoA2QDYANYA1QDUANMA0gDQAM8AzgDNAMsAygDJAMgAxgDFAMQAwwDCAMAAvwC+AL0AvAC6ALkAuAC3ALYAtACzALIAsQCwAK4ArQCsAKsAqgCoAKcApgClAKQAogChAKAAnwCeAJ0AnACaAJkAmACXAJYAlACTAJIAkQCQAI8AjgCMAIsAigCJAIgAhwCGAIQAgwCCAIEAgAB/AH4AfAB7AHoAeQB4AHcAdgB0AHMAcgBxAHAAbwBuAG0AbABqAGkAaABnAGYAZQBkAGMAYgBhAF8AXgBdAFwAWwBaAFkAWABXAFYAVABTAFIAUQBQAE8ATgBNAEwASwBKAEkASABGAEUARABDAEIAQQBAAD8APgA9ADwAOwA6ADkAOAA2ADUANAAzADIAMQAwAC8ALgAtACwAKwAqACkAKAAnACYAJQAkACMAIgAhAB8AHgAdABwAGwAaABkAGAAXABYAFQAUABMAEgARABAADwAOAA0ADAALAAoACQAIAAcABgAFAAQAAwACAAEAIwBDREFUQQBJRABJRFJFRgBJRFJFRlMARU5USVRZAEVOVElUSUVTAE5NVE9LRU4ATk1UT0tFTlMAAAAAAAAAAAAAAAAAAAAAaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlAAAAAAAAAAAAAAAAaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8AAAB4bWw9aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlAERPQ1RZUEUAU1lTVEVNAFBVQkxJQwBFTlRJVFkAQVRUTElTVABFTEVNRU5UAE5PVEFUSU9OAElOQ0xVREUASUdOT1JFAE5EQVRBAENEQVRBAElEAElEUkVGAElEUkVGUwBFTlRJVElFUwBOTVRPS0VOAE5NVE9LRU5TAElNUExJRUQAUkVRVUlSRUQARklYRUQARU1QVFkAQU5ZAFBDREFUQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAAAAAAE/v//h/7//wcAAAAAAAAAAP//f////3//////////83/+/f//////f///////////D+D/////Mfz///8AAAAAAAAA//////////////8BAPgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA1///+/////9/f1T9/w8A/t////////////7f/////wMA////////nxn////PPwMAAAAAAAD+////fwL+////fwAAAAAAAAAAAP///wcHAAAAAAD+//8H/gcAAAAA/v//////////fP9/LwBgAAAA4P///////yMAAAD/AwAAAOCf+f///cUDAAAAsAMAAwDgh/n///1tAwAAAF4AABwA4K/7///97SMAAAAAAQAAAOCf+f///c0jAAAAsAMAAADgxz3WGMe/AwAAAAAAAAAA4N/9///97wMAAAAAAwAAAODf/f///e8DAAAAQAMAAADg3/3///3/AwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAP7/////fw0APwAAAAAAAACWJfD+rmwNIB8AAAAAAAAAAAAAAAAAAAD//v///wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8/AP////9/AO3aBwAAAABQAVAxgqtiLAAAAABAAMmA9QcAAAAACAEC/////////////////////////w///////////////wP//z8//////z8//6r///8/////////31/cH88P/x/cHwAAAABATAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAgAAAAP4DAAD+////////////HwD+/////////////wfg/////x8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////PwAAAAAAAAAAAAAA//////////////////////////8PAAAAAAAAAAAAAAAAAAAAAGD/B/7//4f+//8HAAAAAAAAgAD//3////9//////wAAAAAAAAD//////////////wEA+AMAAwAAAAAA//////////8/AAAAAwAAAMDX///7/////39/VP3/DwD+3////////////t//////ewD///////+fGf///88/AwAAAAAAAP7///9/Av7///9/AP7/+///uxYA////BwcAAAAAAP7//wf//wcA/wP///////////98/3/v//89/wPu////////8/8/Hv/P/wAA7p/5///9xdOfOYCwz/8DAOSH+f///W3ThzkAXsD/HwDur/v///3t8787AADB/wAA7p/5///9zfOPOcCww/8AAOzHPdYYx7/Dxz2AAID/AADu3/3///3vw989YADD/wAA7N/9///978PfPWBAw/8AAOzf/f///f/Dzz2AAMP/AAAAAAAAAAAAAAAAAAAAAAAA/v////9//wf/f/8DAAAAAJYl8P6ubP87Xz//AwAAAAAAAAAD/wOgwv/+////A/7/3w+//v8//gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/x8CAAAAoAAAAP7/PgD+////////////H2b+/////////////3cCAwQFBgcIAAAJCgsMDQ4PEBEAAAAAAAAAAAAAAAASEwAUAAAAAAAAAAAAAAAAAAAVFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEXAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB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MtETM9QTM9ASTtASTtASTtASTtASTtASTnIYAAAAYwEAAAAAAAAAAAAAAAcAAAAjAAAA81oAAABLAAEAlwB8AF0mfQF0AQAAAAAAAAAAAAB0AwAAAAAAAAAAAAB0BAAAAAAAAAAAAAB8AaYCAACrAgAAAAAAAAAApgEAAKsBAAAAAAAAAABWAJcBAQCMJ2QAUwByEQAAACkDci4AAAByEgAAAHIVAAAAcjUAAABzAgAAACAgchYAAAByFwAAAHIXAAAATgIAAHM0AAAA6ADoAIAA0BJJ0BJJsDGVNp0opTaoMdEaLdQaLdETLtQTLtASSdASSdASSdASSdASSdASSXIYAAAAejZDb3VsZCBub3QgZmluZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCBsaWJyYXJpZXMgPHByZWZpeD56OUNvdWxkIG5vdCBmaW5kIHBsYXRmb3JtIGRlcGVuZGVudCBsaWJyYXJpZXMgPGV4ZWNfcHJlZml4Pno4Q29uc2lkZXIgc2V0dGluZyAkUFlUSE9OSE9NRSB0byA8cHJlZml4Pls6PGV4ZWNfcHJlZml4Pl3aCGlzb2xhdGVk2gtzaXRlX2ltcG9ydNoJc2FmZV9wYXRo+gEjegtpbXBvcnQgc2l0ZXoHaW1wb3J0IHondW5zdXBwb3J0ZWQgJ2ltcG9ydCcgbGluZSBpbiAuX3B0aCBmaWxl2gpzdGRsaWJfZGly2g5wbGF0c3RkbGliX2Rpcilr2gZjb25maWfaA2dldNoKUExBVExJQkRJUnICAAAA2gdvc19uYW1l2gxCVUlMRERJUl9UWFTaDkJVSUxEX0xBTkRNQVJL2g1WRVJTSU9OX01BSk9S2hRERUZBVUxUX1BST0dSQU1fTkFNRdoNVkVSU0lPTl9NSU5PUtoNU1RETElCX1NVQkRJUtoQU1RETElCX0xBTkRNQVJLU9oTUExBVFNURExJQl9MQU5ETUFSS9oVQlVJTERTVERMSUJfTEFORE1BUktT2g1WRU5WX0xBTkRNQVJL2gxaSVBfTEFORE1BUkvaBURFTElN2gNTRVDaBVZQQVRI2gpQWURFQlVHRVhU2ghQWVdJTlZFUtoKV0lOUkVHX0tFWXIuAAAAchwAAAByHQAAAHIeAAAAch8AAAByIAAAAHIVAAAAciEAAAByIgAAAHIjAAAA2g5FTlZfUFlUSE9OUEFUSHIlAAAA2gpweXRob25wYXRo2hJweXRob25wYXRoX3dhc19zZXTaE3JlYWxfZXhlY3V0YWJsZV9kaXJyOwAAAHI8AAAA2gRib29s2hRwcm9ncmFtX25hbWVfd2FzX3NldNoKSW5kZXhFcnJvctoKRVhFX1NVRkZJWNoJaGFzc3VmZml42gdpc3hmaWxl2gpweV9zZXRwYXRo2g9yZWFsX2V4ZWN1dGFibGXaB2Fic3BhdGjaCEVOVl9QQVRI2gVzcGxpdHIwAAAAchIAAADaDmV4ZWN1dGFibGVfZGly2hRFTlZfUFlUSE9ORVhFQ1VUQUJMRdoXRU5WX19fUFlWRU5WX0xBVU5DSEVSX1/aE1dJVEhfTkVYVF9GUkFNRVdPUktyGgAAANoHbGlicmFyedoMaG9tZV93YXNfc2V02g5FTlZfUFlUSE9OSE9NRdoLdmVudl9wcmVmaXjaDHZlbnZfcHJlZml4MtoJcmVhZGxpbmVz2glweXZlbnZjZmfaEUZpbGVOb3RGb3VuZEVycm9y2g9QZXJtaXNzaW9uRXJyb3LaBGxpbmXaCXBhcnRpdGlvbtoDa2V52gdoYWRfZXF12gV2YWx1ZdoFc3RyaXDaBWxvd2Vy2ghyZWFscGF0aNoHT1NFcnJvctoIYmFzZW5hbWXaCGJhc2VfZXhl2gljYW5kaWRhdGXaAmV42gR3YXJuci8AAAByGQAAANoDcHRo2gdwdGhfZGly2gpycGFydGl0aW9u2gxidWlsZF9wcmVmaXjaE2J1aWxkX3N0ZGxpYl9wcmVmaXjaCWhhZF9kZWxpbdoFaXNkaXLaBlBSRUZJWNoLRVhFQ19QUkVGSVjaBmFwcGVuZNoGd2lucmVn2hFIS0VZX0NVUlJFTlRfVVNFUtoSSEtFWV9MT0NBTF9NQUNISU5F2gJoa9oJT3BlbktleUV42gFp2gpRdWVyeVZhbHVl2gdFbnVtS2V52gF22gppc2luc3RhbmNl2gNzdHLaBmV4dGVuZNoIQ2xvc2VLZXnaClBZVEhPTlBBVEjaCnN0YXJ0c3dpdGipAHIYAAAAchYAAAD6CDxtb2R1bGU+cpYAAAABAAAAc5MTAADwAwEBAfBcBQAOFI9ailqYDNENJdQNJdANM6gagArgAwqIZ9IDFdADFZgXoEjSGSzQGSzYEyOATNgVKoBO2BszoE3QGzPQGzPQBBjYFyHQFEnQFEmoLdAUSdAUSbgt0BRJ0BRJgE3YGyjQGDDQGDDQGDCwXdAyS9AyS9AyS9AXTNAEFNgdJ9AaW9AaW7AN0Bpb0BpbwA3QGlvQGlvQGlvQBBfYHSiYTdAEGdgUIIBN2BYg0BNL0BNLqB3QE0u4DdATS9ATS9ATS4BM2AwPgEXYCg2AQ4BD4AUMkASCX4Bf2BMjgEzYGB3QFTXQFTXQFTWATtgbJNAEGNgUGYBN2Bso0Bgx0Bgx0BgxsG3QM03QM03QM03QF07QBBTYHSeYL9AEF9gdKZhO0AQZ2BQggE3YE1CYTdATUKg90BNQuCrQOkrIAtATUNATUNATUIBM2BFIsCjQEUjQEUjQEUiAStgMD4BF2AoOgEPwDgAoLvAABAEh8AAEASHwAAQBIfAABAEh8AAEASHwFgAQFo96inqYLtEPKdQPKYAM2AcNh3qCepAm0QcZ1AcZgATYDROPWopamAzRDSXUDSWACtgSGJcqkirQHS7REi/UEi+AD9gJD48aihqQSNEJHdQJHYAG2A4Uj2qKapgd0Q4n1A4ngAvYDhSPaopqmB3RDifUDieAC9gTGZc6kjrQHjDREzHUEzHQABDYERfQGCjUESmADtgSGJcqkirQHS6wAdESMtQSMoAP4A0Tj1qKWtAYLdENLtQNLoAK2BUbl1qSWtAgOdEVOtQVOtAAEuAWGtAAE9gNEYAK2BEVgA7wDAAYHJB0mEzRFynUFynQABTgBxPwAAQBDfACAwUN2Bcdl3qSeqArqHLRFzLUFzKwMdQXNYgMiAz42AsV8AABBQ3wAAEFDfAAAQUN2AgMiATwAwEFDfj4+PAGAAgU8AABASjYEyeATOADDfAAAQEtkGmQaaAMqGrRFjnUFjnwAAEBLbhnuGfAbNBVX9FGX9E+YNQ+YPAAAQEt2BMfoCrREyyATPAOAAQO8AAEASXwBgAMFvAAAQUl2BUkiArgBxHwAAIBJ5BjmFzQFinQFingERiQF5gc0REm1BEmgErgBxHwAAoBIfAGABIhgEqAStgFDJAI0gUY0AUY8AwAFyGAT+AHEfAACAESkGzwAAgBEqB48AAIARLwCAAOFo9eil6YRdENItQNIvAABAUS8AAEBRKIAdgMFIhIkFGYDNEMJdQMJYgB2AsSiDeQMYk6jDrwAAIJEtgZGohK2AwRiEXwBQIJEvAIAAgS8AAIASnYEROASvAIABYdkFeYU5FclFyATvAGABsp0AQX4AMX8AASASnQGzLwABIBKfAKAAgPkCjSBxrQBxrQHzLQBxrwCgAeJZhXoFfRHS3UHS3QGlnQGlm4LdAaWdAaWcgt0BpZ0BpZiA+ID+AaJIgP4Asa8AABBSrYGimID+ARJdARQNApQIBK2BUckFeYWtEVKNQVKIBO8BIAEBWADOADB/AAAwEa2BMXgEyATNgFFPAAAQEamB7wAAEBGrAK8AABARrYCxmARPAOAA8TgAvwCAAIDPEANgEbkErxADYBG/ACDgUX8AYAGCbQFzyoF6gXsBrRKTzUKTyIDNgWHZBnmGzRFivUFiuIC/ACBgkn4BghmAmgKKAoqDu4DdEiRtQiRtEYR9QYR4hJiEn42BAhoD/QDzPwAAMJJ/AAAwkn8AADCSfgGCGYCaAooCioPLgd0SJH1CJH0RhI1BhIiEnYGiaIS4hLiEvwBwMJJ/j4+Pj48AgADR6Yf9ALL/AAAgUX8AACBRfwAAIFF9gWGogL2BQWiAmICYgJ8AUCBRf4+PjwCAARGvAAJQUb8AAlBRuIBNgeIp9umm6oU9EeMdQeMdEIG4gDiFeQZdgLEvAAIQkSkHOXeZJ5kXuUe9cXKNIXKNEXKtQXKqhm0hc00Bc02DM4tzuyO7E9tD3QDECITtAdMNgTIvAAHg0m8AYGERnYJi6gaKh60SY61CY6kE/YFyaoKtIXNNAXNOAqLJgP+PjYFx7wAAERGfAAAREZ8AABERnYFBiQRPADAREZ+Pj44Bcm8AAUESbYJi6gaKh+uHi4eMgK0T9T1D9T0SZU1CZUkE/wDAAYH6Akkn+Qf6h2qHawb9EvRtQvRpB/2CMroDioStEjN9QjN5gI2Co+0EBoyB3QQGjQQGjQWWbQQGjQQGjQKWnwAAsZJvAACxkmmEnYHCWwetApSagaqBrActEcSZhJ2B8nqDnSHzTQHzTYICjYKDCoCLAewBnRKEvUKEuYSfAKACAmmHagadEfMNQfMPAAAh0m2DI7oA/YICWgBfAFAh0m8AYADRKIRfjgFhqIC/AOAAgX8AABATrYFiDQFjmgT9AWObBygE/gBxbwAAEBJtgWJYBP8AQGAUMB2BYekGiYf9EWL9QWL4BPgE/42AcO8AAEAUMB8AAEAUMB8AAEAUMB8AYACA6Adohv0Qce1Ace8AABBUMB2AgMiATQDUGwD9ANQdANQdEIQtQIQtAIQvj4+Pj4+Pj4+PAJBAFDAfj4+PAMAAgW8AAHAS2YJ6BY0hot0BotsCfQGi3gEhmQJ5gn0RIi1BIigEvYBwqAc9AKRtAKRtA1RdAKRtEKRtQKRtEHRtQHRvAABAUt8AYAGiKYGKAr0Rku1BkuiA7YHizQCBvwCAAIFvAAAQFEAdgrMqg3sD/RK0PUK0PQBEOATtAVKPAIAAgb8AABATPYGiGYJ6Av0Roy1Boy0AQX8BIABwuAA9gKDoAH8AgACBLwABcBGJgs8AAXARjwDAAPFpB6oD/QDTPwAAoFFfAACgUViAHYCwzwAAkJFdgPFpgkin+If6BJoEmoYbAV0SQ31CQ3iH+4Obg5wFHIBdE7TtQ7Toh/2BQVl0ySTKAT0RQl1BQloGHUFCiQAdgMDZAXiUyIQfACBQ0V2BYfkGmgAZFslGyQA9gaIZgnoCGZKpwqkAfYEBWQBfjYExrwAAENFfAAAQ0V8AABDRXYEBSQBPADAQ0V+Pj48BEJCRXwGgAID/AAAwUY2BobiA/YDxaIBNgVF4gK8A4AEBSADOAJFfAALQEn0Bot8AAtASewavAALQEn2AsRjzqKOtAWKKgh0Qss1AssqHHSCzDQCzDwBhEFNdgZIZgY2Awf2AwViEmQaJBo0B8ysEzRFkHUFkHRDELUDELAMdQMRfEFAxoK9AADGgqIDvAIABggkHjQIDOwVdEXO9QXO4gMiAz42AsV8AADBTzwAAMFPPAAAwU84BksiA7YFx+QeNAgM7BV0Rc71Bc7iAyIDIgM2AwdmH/QCy/wAAcFNfAABwU18AAHBTXYCxGINpAokCjQGy6wDtESP9QSP9ELQNQLQPAABgk12BsjmDjQJDe4FdEbP9QbP4hM2A8WmCSKf4h/8AgAIjWQDvj48A8HBTX4+PjwEgAIFPAAFgUn2AsSkGSKP4g/4CIu0Awf0Awf4CIroCmoTNAiUdA7UNAiUdAiUdAiUdAMH+ALHvAAAwk32BkhmBjQIjWwddEZPdQZPYhKiErgGSGYGKAssAXRGTbUGTaISuAPFfAAAQkp2BUoiEbwCAAQG/AAAQkn2BomiEvwCAAmJ4gG0A8h0Qgi8A4ABA7wAGABAUkB8AYAHB7QBB2ARohbiVvwCAAIDPAABwUa8AYAKi6vHqoeuAXRKT7UKT7RCCaIBpAJmDvYDxjwAAEJIdgaIIhL4BUZiArwCAAID/AADAU9kHbwAAwFPdgWHZBnmGfRFibUFiaIC9gLF/AABgk+2A8WmCSKf4h/4BMZkDaYKJgooDuwDNEaPdQaPdETPtQTPvAAAREp2B0okEb44BkimBmgO7AM0Rk91Bk9kAbYCxjwAAMJPdAdLfAAAwk9sGbwAAMJPdgPEohz0BJO0BJO0D1N0BJO0RJO1BJO0Q9O1A9O8AACDT3YGSSQBtgdJZhYoGaobdEdPNQdPJAK8AgACBTwAAoFIpgO8AAKBSKodvAACgUi2AsSkGSKP4g/4A8ViHaQaJBomH6ofNEWPNQWPNEPPdQPPfAAAQ0o2BknkAb44BUekFmYfqh80RU81BU8iEbYCxHwAAMJItgZIZgYoCaoLdEZONQZOIhK2BMYkDWYGtETJNQTJPAAAQ0i2B0hkArwCAAIFfAAAwU50Bkp8AADBTmobvAAAwU5wFbwAAMFOdgRGpAZmD7QET3QLDzQET3QET3QET2IBtgLEfAAAQk5mCrwAAEJOdgZIZgYoCaoLdEZONQZOIhK4AcN8AADBUsBkGbwAAMFSwHYEReIBtgPEohz0BJJ0BJJ0DhI0BJJ0RJJ1BJJ0Q9J1A9J8AABCUsB2AwQiETQEUnRDErUDErQDErgCxHwAAIFRwHYERiQF5gSkRuUG4gG2AgMiATQDUXRCEbUCEbQCEbwCAAIG/AAFwVSAaA78AAXBVIB2AsSkGSKP4g/8AgAGyGIS9gPGvAAAQlVAZh+8AABCVUB2BojmCmgTtA0R8hl0BpU0RpU1BpUiEvYDxrwAAEJJph78AABCSbYGiWIS9gPGvAADQlSAaAloCWoCKgIsBvQPlHRKFLUKFLRIlPUIlPwAA0JUgHYDxaYJIp/iH/wBgAYJvAABxEx8A4AJjGQTvjgEBSQBNAVUNEQUdQQUdAQUfAIAAwX8AABBR3YFhyIC/AGAAwS8AABBUkBmBvwAAEFSQHYCAyIBNANR9EISNQISNAISPAeAAQO8ABaAQEq4CQu1yQ00iQ0sFXRJDvUJDuARtALINEEIdgoKYBG0Ask0QQl0QQl4Akb8QBVAQEq8AgAEhSASvAGAAgX8AACBSqYPvAAAgUq2BEf1xEl0hEloGXRESzUESzwAAEJKvAAAQkqiEHYDBbXDB3SDB2YZ5hnoGGZapxq0Qwp1Awp0Awp0Awp8AYACA+QJIJ/gH/gCxLwAAMJKdgaIZgnoCfRGirUGiqIS4hL4BooiEvYCBLXCBnSCBmYKJgooDuwDNEaPdQaPdEIPtQIPtAIPtAIPtgJFfAABAU64AgS1wgZ0ggZmCiYKKA2qDzRGjjUGjjRCDnUCDnQCDnQCDngCBLXCBnSCBmYKJgooDaoPNEaONQaONEIOdQIOdAIOeAHDpAkgn+Bf5g/gX+odoF/8AoAFBrUEyuoVtQtRtASR/AAFwkV8QAXCRWIQvACFg0V2BYc1xYm0hYmoHKoOtEWNtQWNpAD8AISESnYGBmQQfACBxUf8AIDGSLYICbXIDHSIDGwI7B2t36yfsBjyDHRN03UN03RIE7UIE6YQZhB+NgfJvAAARki8AABGSLwAAEZItgcIZhF8AMBGSL4+PjgGyWYOqBhqBPRGy3UGy3wAAEZPtgcJtccLdIcLahhr2eqZ7BlqW6sbtEcPdQcPdAcPdgYGZhRmQaYAfAPBxUf8BYAHCDwAAMVPqgK8AADFT7YHCLXHC3SHC2oY7A00Rw41Bw4mAHYGyWYOqBhqBPRGy3UGy3wAAEZPtgcJtccLdIcLahhr2eqZ7BlqW6sbtEcPdQcPdAcPeAUGpdPkk+gQ9EUKNQUKNAUKNAUKPiQRpdPkk+gQ9EUKNQUKNAUKNAUKPj4+NEUKPjYExrwAAENFfAAAQ0V8AABDRXYEBSRBPADAQ0V+Pj48AgACBLwAAIFM9gRG9cRIdIRIaAl0REo1BEo8AABCTPwAAEJM4hB2AwW1wwd0gwdmGiYaKB2qHHRHjHUHjHRDDLUDDLQDDLQDDLwBgAMFvAAAQU1mCbwAAEFNdgVHZBYmGagbdEVNNQVNIgK2AsZ8AABBUQBmGvwAAEFRAHYGSGYGKAr0C9C0RlD1BlDiA7gBw6QJIJ/gH/gCxnwAAEJLtgMFtcMHdIMHZhu0Qwt1Awt0Awt2AsV8AABCSrYDBbXDB3SDB2YatEMKdQMKdAMKdgLGfAABQkumG6wStAePtAePvAKAA0X1wwd0gwdmG7RDC3UDC3QDC344AsV8AABCSrYDBbXDB3SDB2YatEMKdQMKdAMKdgLGfAAAQku2AwW1wwd0gwdmG7RDC3UDC3QDC3gJC6ARtALINEEIdgoKYBG0Ask0QQl8BIABAuIZII/gD+QfIA/2A0Tj1qKWpgI0Q0h1A0h0A0roFaARtgSGJcqkiqYXdESK9QSK9ASRKh70BJEuGaAS/AOAAQH8AARASrYGRqARog60QQW2CAhgEbQCxzRBB3YHB2ARog90QQZ2BobgEaIO9EEF9gRE4BK2BAT8AAJBTfwAAkFN4gE2A8Tj36Kfphj0Q8i1A8ioDHUDyXXDyvSDyvRDy3UDy2IBNgPE/AABwk32AwQ2A0RkF3SDSLQDSLYJCWIRpA90Qwh0Awh2A0Rj1+KX5hZ0Q0n1A0n8AADCTfYDBCIRNAROtEMO9QMO9AMO9AMO+AMFtcMHdIMHZhomGigd7AE0R411B410Qw21Aw20Aw20Aw22CQugEbQCyDRBCHYKCmARtALJNEEJfAMABomgAaAftEAFtgRFYAGgHaBDtgXIYAGgHzRABTYHCuABtAHGNEAGdgTGYAGgHjRABDYGCOABoB90QAV2Bgj0BgtoHaABoB90QAV2B0t0B08sBuABtAHGdEAGuAXIYAGgHzRABTgFyHQFyegUoAGgHzRABTYGynQGy+oUoAG0AcX0QAY0AAY0AAYc+sAAADGIxxHAADHAAVHCAPHBwFHCAPKKxhLPwDLBBVLGgDLGQFLPwDLGh5LOwPLOAJLPwDLOgFLOwPLOwNLPwDLPwtMDQPMDAFMDQPNMhNOBgLOBgVODgXODQFODgXQDgtQGgDQGgVRAgPQHxlQPQPQPQVRAgPTKBZUAALUAAVUCAXUBwFUCAXUNzFVKQDVKRNWMAPVPi9WMAPWLwFWMAPiABZmCwLiFwNlLwLiGypjBgLjBQFlLwLjBgVjDgXjCwJlLwLjDQFjDgXjDkILZS8C5RkWZgsC5S8XZgYF5gYDZgsC5gsFZhQF5hMBZhQFcgAAAGIAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEABQAAAAAAAQAAAAEABgAAAAAAAgAAAAIABwAAAAAAAgAAAAIACAAAAAAABAAAAAQACQAAAAAABAAAAAQACgAAAAAACAAAAAgACwAAAAAACAAAAAgADAAAAAAABAAAAAQADgAAAAAABAAAAAQAAgAAAAAACAAAAAgAAwAAAAAAEAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAANAAAAKAAAAHkAAABsAQAARQQAANAMAABxJgAAVHMAAP1ZAQD4DQQA6SkMALx9JAAAAAAAAAAAAAAAAACWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYAAAAQAAAACAAAAAIAACAAACAAAAgg7jtkrDmsRclaqCufWLtZ0TRiGr+u9cRf0TscKF+jg6AJ2TgukdNj1T+CQ8thYMaLzYww5xae2nB/jEqAuyfxO2NbE2H1hVOet5fNw7Zuu9eTi4UoqtOwHKkqJ6WmkIqMI0U0KYLxDws4sQgZGVmbGF0ZSAxLjIuMTMgQ29weXJpZ2h0IDE5OTUtMjAyMiBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyIAAAAAAAAAAAAAAAABAAEQASAAAACAAHAAkABgAKAAUACwAEAAwAAwANAAIADgABAA8AAAAAAAAAAAAAAGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcAAEAcKAAAIYAAACCAAAAmgAAAIAAAACIAAAAhAAAAJ4AAQBwYAAAhYAAAIGAAACZAAEwc7AAAIeAAACDgAAAnQABEHEQAACGgAAAgoAAAJsAAACAgAAAiIAAAISAAACfAAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyAARBw0AAAhkAAAIJAAACagAAAgEAAAIhAAACEQAAAnoABAHCAAACFwAAAgcAAAJmAAUB1MAAAh8AAAIPAAACdgAEgcXAAAIbAAACCwAAAm4AAAIDAAACIwAAAhMAAAJ+AAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnEABEHCwAACGIAAAgiAAAJpAAACAIAAAiCAAAIQgAACeQAEAcHAAAIWgAACBoAAAmUABQHQwAACHoAAAg6AAAJ1AASBxMAAAhqAAAIKgAACbQAAAgKAAAIigAACEoAAAn0ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACcwAEQcPAAAIZgAACCYAAAmsAAAIBgAACIYAAAhGAAAJ7AAQBwkAAAheAAAIHgAACZwAFAdjAAAIfgAACD4AAAncABIHGwAACG4AAAguAAAJvAAACA4AAAiOAAAITgAACfwAYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwgAQBwoAAAhhAAAIIQAACaIAAAgBAAAIgQAACEEAAAniABAHBgAACFkAAAgZAAAJkgATBzsAAAh5AAAIOQAACdIAEQcRAAAIaQAACCkAAAmyAAAICQAACIkAAAhJAAAJ8gAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnKABEHDQAACGUAAAglAAAJqgAACAUAAAiFAAAIRQAACeoAEAcIAAAIXQAACB0AAAmaABQHUwAACH0AAAg9AAAJ2gASBxcAAAhtAAAILQAACboAAAgNAAAIjQAACE0AAAn6ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACcYAEQcLAAAIYwAACCMAAAmmAAAIAwAACIMAAAhDAAAJ5gAQBwcAAAhbAAAIGwAACZYAFAdDAAAIewAACDsAAAnWABIHEwAACGsAAAgrAAAJtgAACAsAAAiLAAAISwAACfYAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzgARBw8AAAhnAAAIJwAACa4AAAgHAAAIhwAACEcAAAnuABAHCQAACF8AAAgfAAAJngAUB2MAAAh/AAAIPwAACd4AEgcbAAAIbwAACC8AAAm+AAAIDwAACI8AAAhPAAAJ/gBgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnBABAHCgAACGAAAAggAAAJoQAACAAAAAiAAAAIQAAACeEAEAcGAAAIWAAACBgAAAmRABMHOwAACHgAAAg4AAAJ0QARBxEAAAhoAAAIKAAACbEAAAgIAAAIiAAACEgAAAnxABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACckAEQcNAAAIZAAACCQAAAmpAAAIBAAACIQAAAhEAAAJ6QAQBwgAAAhcAAAIHAAACZkAFAdTAAAIfAAACDwAAAnZABIHFwAACGwAAAgsAAAJuQAACAwAAAiMAAAITAAACfkAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxQARBwsAAAhiAAAIIgAACaUAAAgCAAAIggAACEIAAAnlABAHBwAACFoAAAgaAAAJlQAUB0MAAAh6AAAIOgAACdUAEgcTAAAIagAACCoAAAm1AAAICgAACIoAAAhKAAAJ9QAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnNABEHDwAACGYAAAgmAAAJrQAACAYAAAiGAAAIRgAACe0AEAcJAAAIXgAACB4AAAmdABQHYwAACH4AAAg+AAAJ3QASBxsAAAhuAAAILgAACb0AAAgOAAAIjgAACE4AAAn9AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcMAEAcKAAAIYQAACCEAAAmjAAAIAQAACIEAAAhBAAAJ4wAQBwYAAAhZAAAIGQAACZMAEwc7AAAIeQAACDkAAAnTABEHEQAACGkAAAgpAAAJswAACAkAAAiJAAAISQAACfMAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJywARBw0AAAhlAAAIJQAACasAAAgFAAAIhQAACEUAAAnrABAHCAAACF0AAAgdAAAJmwAUB1MAAAh9AAAIPQAACdsAEgcXAAAIbQAACC0AAAm7AAAIDQAACI0AAAhNAAAJ+wAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnHABEHCwAACGMAAAgjAAAJpwAACAMAAAiDAAAIQwAACecAEAcHAAAIWwAACBsAAAmXABQHQwAACHsAAAg7AAAJ1wASBxMAAAhrAAAIKwAACbcAAAgLAAAIiwAACEsAAAn3ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc8AEQcPAAAIZwAACCcAAAmvAAAIBwAACIcAAAhHAAAJ7wAQBwkAAAhfAAAIHwAACZ8AFAdjAAAIfwAACD8AAAnfABIHGwAACG8AAAgvAAAJvwAACA8AAAiPAAAITwAACf8AEAUBABcFAQETBREAGwUBEBEFBQAZBQEEFQVBAB0FAUAQBQMAGAUBAhQFIQAcBQEgEgUJABoFAQgWBYEAQAUAABAFAgAXBYEBEwUZABsFARgRBQcAGQUBBhUFYQAdBQFgEAUEABgFAQMUBTEAHAUBMBIFDQAaBQEMFgXBAEAFAAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAAAAAAAAAAAAAABgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAIGluZmxhdGUgMS4yLjEzIENvcHlyaWdodCAxOTk1LTIwMjIgTWFyayBBZGxlciAAAwAEAAUABgAHAAgACQAKAAsADQAPABEAEwAXABsAHwAjACsAMwA7AEMAUwBjAHMAgwCjAMMA4wACAQAAAAAAABAAEAAQABAAEAAQABAAEAARABEAEQARABIAEgASABIAEwATABMAEwAUABQAFAAUABUAFQAVABUAEADCAEEAAAABAAIAAwAEAAUABwAJAA0AEQAZACEAMQBBAGEAgQDBAAEBgQEBAgEDAQQBBgEIAQwBEAEYASABMAFAAWAAAAAAEAAQABAAEAARABEAEgASABMAEwAUABQAFQAVABYAFgAXABcAGAAYABkAGQAaABoAGwAbABwAHAAdAB0AQABAAAABAgMEBAUFBgYGBgcHBwcICAgICAgICAkJCQkJCQkJCgoKCgoKCgoKCgoKCgoKCgsLCwsLCwsLCwsLCwsLCwsMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8AABAREhITExQUFBQVFRUVFhYWFhYWFhYXFxcXFxcXFxgYGBgYGBgYGBgYGBgYGBgZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAAECAwQFBgcICAkJCgoLCwwMDAwNDQ0NDg4ODg8PDw8QEBAQEBAQEBEREREREREREhISEhISEhITExMTExMTExQUFBQUFBQUFBQUFBQUFBQVFRUVFRUVFRUVFRUVFRUVFhYWFhYWFhYWFhYWFhYWFhcXFxcXFxcXFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbHAwACACMAAgATAAIAMwACAAsAAgArAAIAGwACADsAAgAHAAIAJwACABcAAgA3AAIADwACAC8AAgAfAAIAPwACAACAAgAggAIAEIACADCAAgAIgAIAKIACABiAAgA4gAIABIACACSAAgAUgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkAvwEJAH8ACQB/AQkA/wAJAP8BCQAAAAcAQAAHACAABwBgAAcAEAAHAFAABwAwAAcAcAAHAAgABwBIAAcAKAAHAGgABwAYAAcAWAAHADgABwB4AAcABAAHAEQABwAkAAcAZAAHABQABwBUAAcANAAHAHQABwADAAgAgwAIAEMACADDAAgAIwAIAKMACABjAAgA4wAIAAAABQAQAAUACAAFABgABQAEAAUAFAAFAAwABQAcAAUAAgAFABIABQAKAAUAGgAFAAYABQAWAAUADgAFAB4ABQABAAUAEQAFAAkABQAZAAUABQAFABUABQANAAUAHQAFAAMABQATAAUACwAFABsABQAHAAUAFwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAcAAAAAAAAAEBESAAgHCQYKBQsEDAMNAg4BDwAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAAAAQAAgAEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgACAAIAAgACAAMgAiACIAIgAiACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgABYATABMAEwATABMAEwATABMAEwATABMAEwATABMAEwAjYCNgI2AjYCNgI2AjYCNgI2AjYBMAEwATABMAEwATABMAI1QjVCNUI1QjVCNUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFCMUIxQjFBMAEwATABMAEwATACNYI1gjWCNYI1gjWCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgjGCMYIxgTABMAEwATAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAWwAAAFwAAABdAAAAXgAAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAgIAAgAAAAIAAAACAAIAAgACAAICAAACAgAAAgICAAICAgAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAQAAAAEAAAEAAAABAAAAAQEAAAEBAAEAAAABAAAAAQABAAEAAQABAQAAAQEAAAEBAQABAQEAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAACAAAAAgAAAgAAAAIAAAACAgAAAgIAAgAAAAIAAAACAAIAAgACAAICAAACAgAAAgICAAICAgAAAAAAAAAAAAAAAAAEAAAABAAABAAAAAQAAAAEBAAABAQABAAAAAQAAAAEAAQABAAEAAQEAAAEBAAABAQEAAQEBAAAAAAAAAAAAAAACAAAAAgAAAgAAAAIAAAACAgAAAgIAAgAAAAIAAAACAAIAAgACAAICAAACAgAAAgICAAICAgAAAAAAAAAAAAAABAAAAAQAAAQAAAAEAAAABAQAAAQEAAQAAAAEAAAABAAEAAQABAAEBAAABAQAAAQEBAAEBAQAAAAAAAAAAAAAAAgAAAAIAAAIAAAACAAAAAgIAAAICAAIAAAACAAAAAgACAAIAAgACAgAAAgIAAAICAgACAgIAQECAgICAgIBAgICAgICAQAAAAAAAAIAAQAAAAEAAgAAAAgAAAAKAAEACAABAAoAAAAAAAAQAAAAAAAAABAAAEAAAABAEAAAQAAAAEAQAAAAAAAAAABAACAAAAAgAEAAAIAAAACAQAAggAAAIIBAAAAAAAAAABAAAAgAAAAIEAAAAAAAAAAQAAAIAAAACBAAAAAAAAAAIAAAAAIAAAAiAAIAAAACACAAAgACAAIAIgAAAAAAAAAAAAAAEAAAABAABAAAAAQAAAAEABAABAAQAAAAAAAAQAAAAAgAAABIAAAAAAAAAEAAAAAIAAAASAAAAAAAAAAAQAAAgAAAAIBAAAgAAAAIAEAACIAAAAiAQAAAAAAAEAAAAABAAAAQQAAAAAAEABAABAAAQAQAEEAEAAABAAAQAQAAAEEAABBBAAAAAQQAEAEEAABBBAAQQQQAAAAAAAAAgAACAAAAAgCAAAACAAAAAoAAAgIAAAICgAAAACAAAACgAAIAIAACAKAAAAIgAAACoAACAiAAAgKgAAAAAAAAIAAABAAAAAQgAAAABAAAACQAAAQEAAAEJAAAAAAAAAAgAAAEAAAABCAAAAAEAAAAJAAABAQAAAQkAAAAAAAAAAABAAgAAAAIAAEAgAAAAIAAAQCIAAAAiAABAAAAAAAAAAEACAAAAAgAAQCAAAAAgAABAIgAAACIAAEAAAAAAAAAAACAAAAAgAAAAAAgAAAAIAAAgCAAAIAgAAABAAAAAQAAAIEAAACBAAAAASAAAAEgAACBIAAAgSAAAAAAAAAQAAAAAACAABAAgAAAAAEAEAABAAAAgQAQAIEAAAIAABACAAAAAoAAEAKAAAACAQAQAgEAAAKBABACgQAAAAAAAAQAAAAQAAAAFAAAAAAIAAAECAAAEAgAABQIACAAAAAgBAAAIBAAACAUAAAgAAgAIAQIACAQCAAgFAgAAAAAAAABAAAAAAQAAAEEAAAAAAAAAQAAAAAEAAABBABAAAAAQAEAAEAABABAAQQAQAAAAEABAABAAAQAQAEEAAAAAAAAAAEAAAAAAAAAAQAAAAABAAABAQAAAAEAAAEBAAAAAAAAAQAAAAAAAAABAAAAAAEAAAEBAAAAAQAAAQEAAAAAAQAAAAAAAAABAAAAAAEAAAEBAAAAAQAAAQEAAAAAAAABAAAAAAAAAAEAAAAAAQAAAQEAAAABAAABAQAAAAAAAAAAAgAAAAAAAAACAAAAAAIAAAICAAAAAgAAAgIAAAAAAAACAAAAAAAAAAIAAAAAAgAAAgIAAAACAAACAgAAAAACAAAAAAAAAAIAAAAAAgAAAgIAAAACAAACAgAAAAAAAAIAAAAAAAAAAgAAAAACAAACAgAAAAIAAAICAAAAAAAAAAAEAAAAAAAAAAQAAAAABAAABAQAAAAEAAAEBAAAAAAAAAQAAAAAAAAABAAAAAAEAAAEBAAAAAQAAAQEAAAAAAQAAAAAAAAABAAAAAAEAAAEBAAAAAQAAAQEAAAAAAAABAAAAAAAAAAEAAAAAAQAAAQEAAAABAAABAQAAAAAAAAAAAgAAAAAAAAACAAAAAAIAAAICAAAAAgAAAgIAAAAAAAACAAAAAAAAAAIAAAAAAgAAAgIAAAACAAACAgAAAAACAAAAAAAAAAIAAAAAAgAAAgIAAAACAAACAgAAAAAAAAIAAAAAAAAAAgAAAAACAAACAgAAAAIAAAICAAAAAAAAAAAEAAAAAAAAAAQAAAAABAAABAQAAAAEAAAEBAAAAAAAAAQAAAAAAAAABAAAAAAEAAAEBAAAAAQAAAQEAAAAAAQAAAAAAAAABAAAAAAEAAAEBAAAAAQAAAQEAAAAAAAABAAAAAAAAAAEAAAAAAQAAAQEAAAABAAABAQAAAAAAAAAAAgAAAAAAAAACAAAAAAIAAAICAAAAAgAAAgIAAAAAAAACAAAAAAAAAAIAAAAAAgAAAgIAAAACAAACAgAAAAACAAAAAAAAAAIAAAAAAgAAAgIAAAACAAACAgAAAAAAAAIAAAAAAAAAAgAAAAACAAACAgAAAAIAAAICAAAAAAAAAAAEAAAAAAAAAAQAAAAABAAABAQAAAAEAAAEBAAAAAAAAAQAAAAAAAAABAAAAAAEAAAEBAAAAAQAAAQEAAAAAAQAAAAAAAAABAAAAAAEAAAEBAAAAAQAAAQEAAAAAAAABAAAAAAAAAAEAAAAAAQAAAQEAAAABAAABAQAAAAAAAAAAAgAAAAAAAAACAAAAAAIAAAICAAAAAgAAAgIAAAAAAAACAAAAAAAAAAIAAAAAAgAAAgIAAAACAAACAgAAAAACAAAAAAAAAAIAAAAAAgAAAgIAAAACAAACAgAAAAAAAAIAAAAAAAAAAgAAAAACAAACAgAAAAIAAAICAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAEAAAABAAABAQAAAQEAAAABAAAAAQAAAQEAAAEBAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAQAAAAEAAAEBAAABAQAAAAEAAAABAAABAQAAAQEAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAAAAgAAAAIAAAICAAACAgAAAAIAAAACAAACAgAAAgIAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAACAAAAAgAAAAACAAAAAgAAAgIAAAICAAAAAgAAAAIAAAICAAACAgAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAEAAAABAAABAQAAAQEAAAABAAAAAQAAAQEAAAEBAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAQAAAAEAAAEBAAABAQAAAAEAAAABAAABAQAAAQEAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAAAAgAAAAIAAAICAAACAgAAAAIAAAACAAACAgAAAgIAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAACAAAAAgAAAAACAAAAAgAAAgIAAAICAAAAAgAAAAIAAAICAAACAgAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAEAAAABAAABAQAAAQEAAAABAAAAAQAAAQEAAAEBAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAQAAAAEAAAEBAAABAQAAAAEAAAABAAABAQAAAQEAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAAAAgAAAAIAAAICAAACAgAAAAIAAAACAAACAgAAAgIAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAACAAAAAgAAAAACAAAAAgAAAgIAAAICAAAAAgAAAAIAAAICAAACAgAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAEAAAABAAABAQAAAQEAAAABAAAAAQAAAQEAAAEBAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAQAAAAEAAAEBAAABAQAAAAEAAAABAAABAQAAAQEAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAAAAgAAAAIAAAICAAACAgAAAAIAAAACAAACAgAAAgIAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAACAAAAAgAAAAACAAAAAgAAAgIAAAICAAAAAgAAAAIAAAICAAACAgAAAAIKAAAAAAAAAgAAAAoKAAAKAgAACggAAAgAAAACAAAAAAgAAAIKAAAKCgAAAAgAAAgKAAAKAgAAAAIAAAgAAAAICAAAAAoAAAAKAAACCAAAAggAAAICAAACAgAACAoAAAoAAAAIAgAACAIAAAoAAAAAAAAACAgAAAoIAAAAAgAAAgAAAAoKAAAIAAAAAgIAAAIKAAAAAgAAAAIAAAAIAAAKAgAAAgAAAAIIAAAIAgAAAAgAAAgAAAAICgAACggAAAoKAAAKAAAAAgIAAAgKAAAIAgAACAgAAAoIAAACCgAACAgAAAAKAAAACgAAAAAAAAoAAAACCAAAAAAAAAoCAABBACEAAQABAAEAAABBACAAAAAgAEAAAABAACEAQQABAEAAAQBBACEAAQAhAAAAAQABAAEAAAAgAEAAAABAACEAAQAgAEAAIABBAAEAAAAAAAAAAQABAAAAQQAgAAAAIQBAACAAQAABAAAAAAABACAAQQAAAAEAIQAAACEAQQAAAAAAAABBACAAQAAhAAAAIABBAAEAAAAhAAEAIQABAAAAAAAhAAEAAQBAAAAAQQAhAEEAIABAAAAAAQAAAAAAAQBBAAAAAQAhAAAAIABAAAEAQAAgAEEAAQBAAAEAQAAgAAEAIAAAAAAAAQABAEEAAAAAAAEAQAAhAEEAIQABACAAEAQAAAAEBBAAAAAAEAAEEAAEABAAAAAAEAQEAAAEABAQAAQAEAAAEBAAABAAAAQAEAQEEBAABAAAAAQQEAQAAAAAABAQAAAAAAQEEAAEAAAABAQAAAAEEBAABBAQBAQAEAQAEAAEBAAAAAQAEAQAEBAAAAAQBAQQAAQAAAAAABAABAQQAAAAEBAABAAQBAAAAAAEAAAEBBAABAAQAAAAAAAEAAAQAAQAEAQEEAAEABAQAAAQAAQAAAAAAAAQAAQQEAQAEAAABAAAAAAQEAQEEBAAAAAQBAQAAAQEABAAABAAAAQQEAQAEBAEAAAAAAQQEAQEABAAAAAQAAQQAAQEAABBAgEAQAIBAEACAQAAAAEAQQABAAECAAABAgAAQAIAAAAAAABBAAAAQQABAEECAQAAAgAAAAABAAEAAAABAgAAAAIAAEAAAAABAAAAQQIBAAAAAAABAAAAQAIBAEAAAQABAgAAAAIBAEAAAQABAAAAQAABAEEAAQBBAgEAAAIBAAEAAAABAgAAQQABAEECAQAAAgAAAAAAAAAAAABBAAEAQAABAAEAAQABAgAAAAIAAEECAQBAAgEAQAIBAAAAAQBBAgEAAAIAAAACAABAAAAAAQIAAEACAQBBAAEAAQIAAEACAQBAAAAAAQAAAEECAQAAAAAAAQAAAEAAAQBBAAIAAAACAAAQBAAAEAYAAACEAAAQAgAAAAAAAACAAAAQBgAAEIAAABACAAAABgAAEIIAAACEAAAQhgAAEAAAAACAAAAABAAAEIAAABCAAAAAAgAAAIIAABCGAAAQhgAAAAQAABCGAAAAgAAAAAAAAACGAAAQBAAAAAQAAACGAAAQAAAAEAIAAACGAAAAAAAAAAQAAACAAAAQBgAAAIYAABCCAAAABAAAAIAAABCGAAAQBgAAEIIAAAAAAAAABAAAEIYAABCGAAAQAAAAAIYAABCEAAAQBAAAAAAAABCAAAAAhgAAEAIAAAAGAAAAgAAAEAAAAAAAAAAQggAAEAYAAACAIAAAQAAAgEAAgAAAIICAQAAAgEAgAAAAIICAQAAAgAAAgABAIICAAAAAgAAgAABAIACAAACAAEAAAABAIIAAAAAAAAAgAIAAIIAAQACAAAAAgIAAIIAAQCAAAAAgAIBAIACAQAAAAAAggIAAAICAQCCAAAAAgIAAAICAQAAAAEAAgABAIAAAACAAgEAAgIAAIICAQAAAgAAggAAAIAAAQAAAgAAAgABAAAAAQCCAAAAgAABAIICAQACAgAAAAIBAIICAAACAgEAAAAAAIACAQCAAAAAAgAAAAACAQCCAgAAAgAAAIACAACCAAEAAAAAAAICAQAAAAEAgAIAAIIAAQAAAQAAEAEAIBBAACAAAAAAAEAAABBAACAQQQAAAEEAIBBBACAAAQAAAAAAABAAACAQAAAAAAAAIBABACAQQAAAAEAAIBBBAAAQAQAAAEAAIBAAACAAAQAgAEEAIBABAAAAAQAgAEAAABBAAAAQQQAgAEEAABAAAAAAAAAgAEEAAAAAACAAQQAAAAEAABBAACAQQAAgEAEAIBABACAQAAAAEAEAAAAAACAAQAAgAAEAAABBACAQQAAAEEEAAABBACAQQAAAEAAAIBBBACAAAQAgAEEAAAAAAAAQAAAAEEEAIAAAAAAQQQAAAAEAIABAAAAQAAAgAEAAIABAAAAQAQACAIAAgACAAAAAACACAIAggAAAAIIAgACCAAAAAAAAAIIAACAAAAAgggCAIIAAgCAAAIAgggCAIAAAgAACAAAAAAAAIIIAAACAAIAAggCAAAAAgCACAAAgAgAAIIAAgCCCAIAAAAAAAAAAAAACAAAgggAAAIAAgACCAIAgAAAAIAIAgCAAAAAgAACAIIAAgAACAAAAAgAAIIAAgAACAIAgAACAAIIAAAACAAAAgAAAIIIAACCAAAAAgAAAIAIAgACAAAAAAgCAIIIAACACAAAAgAAAIIAAgACCAIAAgAAAAAIAgC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AAAAAAAAAAAAAAAAAADAmAAAAACZAJRp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbpJwAAAAAAAH8CGqiggxJaqKGHIpqooosy2qijj0IaKQAAAAAAAAAAAAAAAAAAAABpc284ODU5NwAAKKBMTPEoJJdsyimopJLYKqy0AkDEsMQiyyyKLcbYLY059tgukPUSmWSTUVaZZZdhlplmm3HWmWefgRaaaKORBkBppp2GWmqqrcZaa669Bltsss1GW2223YZbbrrtxltvvv0GXHDCDUdcccYdh1xyyi3HXHPOPQcdAGlzbzg4NTk4AAAooAAgyiiklGLKKaikcs0qrLTiyiuwxCLLLLTUYsstuORyzy689OILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgMRCDklkkUYeiWSSSi7JZJNOPglllFJOSWWVVl6JZZZabsklAAA07DAAaXNvODg1OTkAADQcRSPNNNRUY8012GSjzTbcsDTVN+CEI8445JRjzjnopKPOOuy04847HcUjzzz01GPPPfjko88+/LRE1T9pc284ODU5MTAAACigECQRSCiZBNMpNUFU1VZytfJVULAUNFFIKZ0U0y02RWQVV3NFDJZQAAUjzDDEFGOMSgwlY9EyFDXjzDPQ9DTUNNRUY01X2JylzTbcdOPNNwGFI8445JRjzkoNpXPROhW148478PhE1Dz01GOPV/igpc8+/PTjj0xpc284ODU5MTEAdGlzNjIwAAAooHj6KaihijoqqaWaeiqqqaq6KqutuvoqrLHKOiuttdp6K6656rorr736+iuwwQo7LLHFGnsssskquyyzzTr7LLTRSjsttdVaey0AAAAAALbZarstt916+y244Yo7Lrnlmnsuuumquy677br7LrzxyjsvvQAAAAAAaXNvODg1OTEzAAAooFwsyiikYGzKKdikstQqrLTiijGwxCLLLBbXYsst+OTC1C689OKLOQSpBJBBxBRjkUQMJeMWRSDBhFJNVe3U0zRDVWPNNWfl9NRX3MAl1zcFrRTQQeSUc9FEDaXzVkUhxZSSTVbx5NM8RNVjzz1o6QQVWPzENRfFaXNvODg1OTE0AAAooNRr7ygKLXTvKQOnUjC+CbfiSlv56uvRR/vya0u/BPtr8L8KH4wwwMAEI8wwxBRjzDHIJKPMMsw048wzaUUjzTTUVGNNwNhko8023HSz1jfghCPOOOSUY8456KSjzjrstOPOO2rFI8889NRjj8D45KPPPvz0w9Y/aXNvODg1OTE1AGxhdGluOQAAKSSXUtUpVqWiyiqstOLKK7DEIsssctViyy1z5aLLLkch1dYvwAQjzDDEFGPMMcgko8wyzDTjzDPQRCPNNNRUY8012GSjzTbcdOPNN+CEI8445JRjzjnopKPOOuy048478MQjzzz01GPPPfjko88+/PTjzz9pc284ODU5MTYAACigEFRQTiRjXNUpVqWS1yputfIWXLDEwpBOcl1syy1zNaTXLkch1VZcwAQjjEDEGGTMMcgko8wyzDTjzDMQ7STNNNQUZc1TZWWjzTbcWLTXN+CEI85A5BxkzjnopKPOOuy04847EfEkzzz0GGUPVGblo88+/FzE1z9jcDEyNTAAd2luZG93czEyNTAAACAkA1AxABhznLHGAHRclcdPZSWXWwBMTLHFF2/8MMQAnGzVx1BpNddboPj1V06kEGTKKaikMtUqrLTiClywxBKYTrTUYsstuBRE1S43DYZTXEkFI4xAxMxk0DEMJWPRMhg144xDEO300zTUFGXNNU2NpU1Z3HRz1TdKhSPOQOTQdNA5DaVz0ToZtePOQxHxBNQ89Bhlzz1OkaWPWfz0gxVgY3AxMjUxAHdpbmRvd3MxMjUxAAAg0k1XcYgYc5yxxiR3nJ3H2nG3nXcgTkyxxRdv/DDEAJx84scoqpgii6B0tyJ2pLRoyinRpULdKqy04sp1sMRiHYku1mLLLR+aLOIuJlY3YonfgReeeOORV55556GXnnrrsdeee+/BF59889FXn3334Zeffvvx159//wEYoIADEliggQcimKCCCzLYoIMPQhihhBNSWKGFF2KYoYYbctihh2NwMTI1MgB3aW5kb3dzMTI1MgAAICQDUDFdGHOcscZ9dVyVx0cBIBcAAExMscUXb/wwxIKdbNXHSAEwV1ughCLKKKSUYsopqKSiyiqstOLKK7DEIssstNRiyy245KLLLrz04ssvwAQjzDDEFGPMMcgko8wyzDTjzDPQRCPNNNRUY8012GSjzTbcdOPNN+CEI8445JRjzjnopKPOOuy048478MQjzzz01GPPPfjko88+/PTjzz9jcDEyNTMAd2luZG93czEyNTMAACAkA1AxXRhznLHGAHQMgMcAAAAAAABMTLHFF2/8MMQAnAzAxwAAAAAAoCzG2CiklGLKKaikAsAqrLTiSsSwxCLLLIrVYsstjTn22C6Q9RKZZJNRVplll2GWmWabcdaZZ5+BFppoo5EGQGmmnYZaaqqtxlprrr0GW2yyzUZbbbbdhltuuu3GW2++/QZccMINR1xxxh2HXHLKLcdcc849Bx0AY3AxMjU0AHdpbmRvd3MxMjU0AAAgJANQMV0Yc5yxxn11XJXHRwEAAAAATEyxxRdv/DDEgp1s1cdIAQBAW6CEIsoopJRiyimopKLKKqy04sorsMQiyyy01GLLLbjkossuvPTiyy/ABCPMMMQUY8wxyCSjzDLMNOPMMxxFI8001FRjzTXYZKPNNtywNNU34IQjzjjklGPOOeiko8467LTjzjsdxSPPPPTUY889+OSjzz78tETVP2NwMTI1NQB3aW5kb3dzMTI1NQAAICQDUDFdGHOcscZ9dQyAxwAAAAAAAExMscUXb/wwxIKdDMDHAAAAAACghCLKKCKXYsopqKRyzSqstOLKK7DEIssstNRiyy245HLPLrz04ssvL8IYo4wz0lijjTfiCECOOu7IY48+/ghkkF16+SWYYQIAAAAAAAAAAEIOSWSRRh6JZJJKLslkk04+CWWUUk5JZZVWXollllpuySUAADTsMABjcDEyNTYAd2luZG93czEyNTYAACAkT1oxXRhznLHGfXUsqcdHUXpppZlOTLHFF2/8MMSYnmzpx0gtzLCmoIgpyiiklGLKKaiksukqrLTiyiuwxCLLLLTUYsstuOQy5i689OILmZyWaeaZaKap5ppstunmm3DGKeecdNZp55145qnnNXvy2aeffwIaqKDgDCoOoYUaeug56KSjzjqIJurOO4ouymij9Dj66D2Q5hPpPvw07HCnY3AxMjU3AHdpbmRvd3MxMjU3AAAgJANQMQAYc5yxxgB0DIDHAKDiFy4ATEyxxRdv/DDEAJwMwMcAvBIYAKAAIMoopABgyinYpLLUKqy04ooxsMQiyyy01GLLLfjkwtQuvPTiizkEqQSQQcQUY5FEDCXjFkUgwYRSTVXt1NM0Q1VjzTVn5fTUV9zAJdc3Ba0U0EHklHPRRA2l81ZFIcWUkk1W8eTTPETVY889aOkEFVj8xDUXYGNwMTI1OAB3aW5kb3dzMTI1OAAAICQDUDFdGHOcscZ9dQyAx0cBAAAAAExMscUXb/wwxIKdDMDHSAEAQFughCLKKKSUYsopqKSiyiqstOLKK7DEIssstNRiyy245KLLLrz04ssvwAQjjEDEFGPMMcgko8wyhDXjzDMQRXPYNNTUZc012GSjzTbc3GXYN+CEI85A5JRjzjnopKPOOoW14847EcWD2Dz02GXPPfjko88+/OA18j9rb2k4cgAAIDPTXLPNN+Ocs84789zz1lx37fXXYIctdsxjo5wyyy6/DIrMsMhyyz0+/wz0h0ELPTTRRRt9NNJJK7000007/XR0UEct9dRUV2311VhnrXUqHf4HYIUDEjihgBQeiGCCCi7IYIMOevgghBFKWGCAG2po4IUcYmhhhv19B15945E3n3j0nYdeeuqtx1577vn3HnzxyVdeePvpZ959/OFnX35rb2k4dQAAIDPTXLPNN+Ocs84789zz1lx37fXXYIctdsxjo5wyyy6/DIrMsMhyyz0+/wz0hyIKTWKJRRt9NNJJu7g00007/XR01EVt3XVUV2311Vi3qHUqHf4HYIUDEjihgBQeiGCCCi7IYIMOevgghBFKWGCAG2po4IUcYmhhhv19B15945E3n3j0nYdeeuqtx1577vn3HnzxyVdeePvpZ959/OFnX35jcDQzNwAAIMfwk4445IBTzjnqrIPOO+6wQ0wxyZhjDD32yLNPPv9Yw40oo5QSMl3htDOPPvFEo4ouv8DMSi+8hLLKLmCHLTbNOj8NNdFDR/1z0UsrnbTNN/O8c84z98x000gLfTXVTvusddVWSz310UYDHXTWWONcc9dce/311rN9Y5lwpRVXi3GobbaabSojd9vKLcfysssxy3wPy7CgfEvKIMsyNihjcDg1MAAAIMfwk4445IBTzjnqrIPOO+6wQ0wxyZhjDD32yLNPPv9Yww0+o2BzDV3htDOPPvFEo4ouv7jCSi+8hLLKLmCHLTbNOgcjDDCpRP1z0UuLUorNN/O8c84z9zzOMEgLfTXVTvusNSnwQKPMMsi01Iwzz+Bcc9dcm8LM1tN8Q4009VRTiz/eaLNNNv108wotrcQisS+2nHIPLrCgcksus8gyNihjcDg2NgAAIN+BF55445FXnnnnoZeeeuux155778EXn3zz0Veffffhl59++/HXn3//ARiggAMSWKCBByKYoIILMtigg2CHLTbNOj8NNdFDR/1z0UsrnbTNN/O8c84z98x000gLfTXVTvusddVWSz310UYDHXTWWONcc9dce/311g9CGKGEE1JYoYUXYpihhhty2KGH0X1InYjXldjdirCgfEvKJpMyNihpYm0xMDQ3AGNwMTA0NwAAAZwkYMgflzTiyAIMNODAAxBEIMEEnRSCwCEYZCDJIxx04MEHgAQiyCCEKHDBBogkosgijBRgwAGQRGLBJJRUYgkBmGSiySYUVOCJBiCAIg454IQzTjnnxCOKCzygsAIfJqSjzjrotOPOO+x8EwIJKqSwgxctvCAMMcAEM0wxx0RjCgslfOHDD/gko8wyyDTjzDPMgKHDCECc0IMI2IQhxhhklGHGGWikscou8PTjTyywqLEGG2248QYcccihii7m4GIMKbX4MQcdddhxBx556BHKL9Bs4Y0rrIxSyi2pnGILL7340g0qr3RByzV7BCHEEEQUYcQRSCTRCj32yDNPPX0osQQTTTjxBBRRSJHLPvzko88/XNwzBRVVWHEFFlloIQs11kgzTTUwxCDDDDTUYMMNOOQwyzbcZKPNJwAAAAAAAAAAAAAAAAACTgROBU4GTg9OEk4XTh9OIE4hTiNOJk4pTi5OL04xTjNONU43TjxOQE5BTkJORE5GTkpOUU5VTldOWk5bTmJOY05kTmVOZ05oTmpOa05sTm1Obk5vTnJOdE51TnZOd054TnlOek57TnxOfU5/ToBOgU6CToNOhE6FTodOik6QTpZOl06ZTpxOnU6eTqNOqk6vTrBOsU60TrZOt064TrlOvE69Tr5OyE7MTs9O0E7STtpO207cTuBO4k7mTudO6U7tTu5O707xTvRO+E75TvpO/E7+TgBPAk8DTwRPBU8GTwdPCE8LTwxPEk8TTxRPFU8WTxxPHU8hTyNPKE8pTyxPLU8uTzFPM081TzdPOU87Tz5PP09AT0FPQk9ET0VPR09IT0lPSk9LT0xPUk9UT1ZPYU9iT2ZPaE9qT2tPbU9uT3FPck91T3dPeE95T3pPfU+AT4FPgk+FT4ZPh0+KT4xPjk+QT5JPk0+VT5ZPmE+ZT5pPnE+eT59PoU+iT6RPq0+tT7BPsU+yT7NPtE+2T7dPuE+5T7pPu0+8T71Pvk/AT8FPwk/GT8dPyE/JT8tPzE/NT9JP00/UT9VP1k/ZT9tP4E/iT+RP5U/nT+tP7E/wT/JP9E/1T/ZP90/5T/tP/E/9T/9PAFABUAJQA1AEUAVQBlAHUAhQCVAKUAtQDlAQUBFQE1AVUBZQF1AbUB1QHlAgUCJQI1AkUCdQK1AvUDBQMVAyUDNQNFA1UDZQN1A4UDlQO1A9UD9QQFBBUEJQRFBFUEZQSVBKUEtQTVBQUFFQUlBTUFRQVlBXUFhQWVBbUF1QXlBfUGBQYVBiUGNQZFBmUGdQaFBpUGpQa1BtUG5Qb1BwUHFQclBzUHRQdVB4UHlQelB8UH1QgVCCUINQhFCGUIdQiVCKUItQjFCOUI9QkFCRUJJQk1CUUJVQllCXUJhQmVCaUJtQnFCdUJ5Qn1CgUKFQolCkUKZQqlCrUK1QrlCvULBQsVCzULRQtVC2ULdQuFC5ULxQvVC+UL9QwFDBUMJQw1DEUMVQxlDHUMhQyVDKUMtQzFDNUM5Q0FDRUNJQ01DUUNVQ11DYUNlQ21DcUN1Q3lDfUOBQ4VDiUONQ5FDlUOhQ6VDqUOtQ71DwUPFQ8lD0UPZQ91D4UPlQ+lD8UP1Q/lD/UABRAVECUQNRBFEFUQhRCVEKUQxRDVEOUQ9REFERURNRFFEVURZRF1EYURlRGlEbURxRHVEeUR9RIFEiUSNRJFElUSZRJ1EoUSlRKlErUSxRLVEuUS9RMFExUTJRM1E0UTVRNlE3UThROVE6UTtRPFE9UT5RQlFHUUpRTFFOUU9RUFFSUVNRV1FYUVlRW1FdUV5RX1FgUWFRY1FkUWZRZ1FpUWpRb1FyUXpRflF/UYNRhFGGUYdRilGLUY5Rj1GQUZFRk1GUUZhRmlGdUZ5Rn1GhUaNRplGnUahRqVGqUa1RrlG0UbhRuVG6Ub5Rv1HBUcJRw1HFUchRylHNUc5R0FHSUdNR1FHVUdZR11HYUdlR2lHcUd5R31HiUeNR5VHmUedR6FHpUepR7FHuUfFR8lH0UfdR/lEEUgVSCVILUgxSD1IQUhNSFFIVUhxSHlIfUiFSIlIjUiVSJlInUipSLFIvUjFSMlI0UjVSPFI+UkRSRVJGUkdSSFJJUktSTlJPUlJSU1JVUldSWFJZUlpSW1JdUl9SYFJiUmNSZFJmUmhSa1JsUm1SblJwUnFSc1J0UnVSdlJ3UnhSeVJ6UntSfFJ+UoBSg1KEUoVShlKHUolSilKLUoxSjVKOUo9SkVKSUpRSlVKWUpdSmFKZUppSnFKkUqVSplKnUq5Sr1KwUrRStVK2UrdSuFK5UrpSu1K8Ur1SwFLBUsJSxFLFUsZSyFLKUsxSzVLOUs9S0VLTUtRS1VLXUtlS2lLbUtxS3VLeUuBS4VLiUuNS5VLmUudS6FLpUupS61LsUu1S7lLvUvFS8lLzUvRS9VL2UvdS+FL7UvxS/VIBUwJTA1MEUwdTCVMKUwtTDFMOUxFTElMTUxRTGFMbUxxTHlMfUyJTJFMlUydTKFMpUytTLFMtUy9TMFMxUzJTM1M0UzVTNlM3UzhTPFM9U0BTQlNEU0ZTS1NMU01TUFNUU1hTWVNbU11TZVNoU2pTbFNtU3JTdlN5U3tTfFN9U35TgFOBU4NTh1OIU4pTjlOPU5BTkVOSU5NTlFOWU5dTmVObU5xTnlOgU6FTpFOnU6pTq1OsU61Tr1OwU7FTslOzU7RTtVO3U7hTuVO6U7xTvVO+U8BTw1PEU8VTxlPHU85Tz1PQU9JT01PVU9pT3FPdU95T4VPiU+dT9FP6U/5T/1MAVAJUBVQHVAtUFFQYVBlUGlQcVCJUJFQlVCpUMFQzVDZUN1Q6VD1UP1RBVEJURFRFVEdUSVRMVE1UTlRPVFFUWlRdVF5UX1RgVGFUY1RlVGdUaVRqVGtUbFRtVG5Ub1RwVHRUeVR6VH5Uf1SBVINUhVSHVIhUiVSKVI1UkVSTVJdUmFScVJ5Un1SgVKFUolSlVK5UsFSyVLVUtlS3VLlUulS8VL5Uw1TFVMpUy1TWVNhU21TgVOFU4lTjVORU61TsVO9U8FTxVPRU9VT2VPdU+FT5VPtU/lQAVQJVA1UEVQVVCFUKVQtVDFUNVQ5VElUTVRVVFlUXVRhVGVUaVRxVHVUeVR9VIVUlVSZVKFUpVStVLVUyVTRVNVU2VThVOVU6VTtVPVVAVUJVRVVHVUhVS1VMVU1VTlVPVVFVUlVTVVRVV1VYVVlVWlVbVV1VXlVfVWBVYlVjVWhVaVVrVW9VcFVxVXJVc1V0VXlVelV9VX9VhVWGVYxVjVWOVZBVklWTVZVVllWXVZpVm1WeVaBVoVWiVaNVpFWlVaZVqFWpVapVq1WsVa1VrlWvVbBVslW0VbZVuFW6VbxVv1XAVcFVwlXDVcZVx1XIVcpVy1XOVc9V0FXVVddV2FXZVdpV21XeVeBV4lXnVelV7VXuVfBV8VX0VfZV+FX5VfpV+1X8Vf9VAlYDVgRWBVYGVgdWClYLVg1WEFYRVhJWE1YUVhVWFlYXVhlWGlYcVh1WIFYhViJWJVYmVihWKVYqVitWLlYvVjBWM1Y1VjdWOFY6VjxWPVY+VkBWQVZCVkNWRFZFVkZWR1ZIVklWSlZLVk9WUFZRVlJWU1ZVVlZWWlZbVl1WXlZfVmBWYVZjVmVWZlZnVm1WblZvVnBWclZzVnRWdVZ3VnhWeVZ6Vn1WflZ/VoBWgVaCVoNWhFaHVohWiVaKVotWjFaNVpBWkVaSVpRWlVaWVpdWmFaZVppWm1acVp1WnlafVqBWoVaiVqRWpVamVqdWqFapVqpWq1asVq1WrlawVrFWslazVrRWtVa2VrhWuVa6VrtWvVa+Vr9WwFbBVsJWw1bEVsVWxlbHVshWyVbLVsxWzVbOVs9W0FbRVtJW01bVVtZW2FbZVtxW41blVuZW51boVulW6lbsVu5W71byVvNW9lb3VvhW+1b8VgBXAVcCVwVXB1cLVwxXDVcOVw9XEFcRVxJXE1cUVxVXFlcXVxhXGVcaVxtXHVceVyBXIVciVyRXJVcmVydXK1cxVzJXNFc1VzZXN1c4VzxXPVc/V0FXQ1dEV0VXRldIV0lXS1dSV1NXVFdVV1ZXWFdZV2JXY1dlV2dXbFduV3BXcVdyV3RXdVd4V3lXeld9V35Xf1eAV4FXh1eIV4lXileNV45Xj1eQV5FXlFeVV5ZXl1eYV5lXmlecV51XnlefV6VXqFeqV6xXr1ewV7FXs1e1V7ZXt1e5V7pXu1e8V71Xvle/V8BXwVfEV8VXxlfHV8hXyVfKV8xXzVfQV9FX01fWV9dX21fcV95X4VfiV+NX5VfmV+dX6FfpV+pX61fsV+5X8FfxV/JX81f1V/ZX91f7V/xX/lf/VwFYA1gEWAVYCFgJWApYDFgOWA9YEFgSWBNYFFgWWBdYGFgaWBtYHFgdWB9YIlgjWCVYJlgnWChYKVgrWCxYLVguWC9YMVgyWDNYNFg2WDdYOFg5WDpYO1g8WD1YPlg/WEBYQVhCWENYRVhGWEdYSFhJWEpYS1hOWE9YUFhSWFNYVVhWWFdYWVhaWFtYXFhdWF9YYFhhWGJYY1hkWGZYZ1hoWGlYalhtWG5Yb1hwWHFYclhzWHRYdVh2WHdYeFh5WHpYe1h8WH1Yf1iCWIRYhliHWIhYiliLWIxYjViOWI9YkFiRWJRYlViWWJdYmFibWJxYnVigWKFYolijWKRYpVimWKdYqlirWKxYrViuWK9YsFixWLJYs1i0WLVYtli3WLhYuVi6WLtYvVi+WL9YwFjCWMNYxFjGWMdYyFjJWMpYy1jMWM1YzljPWNBY0ljTWNRY1ljXWNhY2VjaWNtY3FjdWN5Y31jgWOFY4ljjWOVY5ljnWOhY6VjqWO1Y71jxWPJY9Fj1WPdY+Fj6WPtY/Fj9WP5Y/1gAWQFZA1kFWQZZCFkJWQpZC1kMWQ5ZEFkRWRJZE1kXWRhZG1kdWR5ZIFkhWSJZI1kmWShZLFkwWTJZM1k1WTZZO1k9WT5ZP1lAWUNZRVlGWUpZTFlNWVBZUllTWVlZW1lcWV1ZXllfWWFZY1lkWWZZZ1loWWlZallrWWxZbVluWW9ZcFlxWXJZdVl3WXpZe1l8WX5Zf1mAWYVZiVmLWYxZjlmPWZBZkVmUWZVZmFmaWZtZnFmdWZ9ZoFmhWaJZplmnWaxZrVmwWbFZs1m0WbVZtlm3WbhZulm8Wb1Zv1nAWcFZwlnDWcRZxVnHWchZyVnMWc1ZzlnPWdVZ1lnZWdtZ3lnfWeBZ4VniWeRZ5lnnWelZ6lnrWe1Z7lnvWfBZ8VnyWfNZ9Fn1WfZZ91n4WfpZ/Fn9Wf5ZAFoCWgpaC1oNWg5aD1oQWhJaFFoVWhZaF1oZWhpaG1odWh5aIVoiWiRaJlonWihaKlorWixaLVouWi9aMFozWjVaN1o4WjlaOlo7Wj1aPlo/WkFaQlpDWkRaRVpHWkhaS1pMWk1aTlpPWlBaUVpSWlNaVFpWWldaWFpZWltaXFpdWl5aX1pgWmFaY1pkWmVaZlpoWmlaa1psWm1ablpvWnBacVpyWnNaeFp5WntafFp9Wn5agFqBWoJag1qEWoVahlqHWohaiVqKWotajFqNWo5aj1qQWpFak1qUWpVallqXWphamVqcWp1anlqfWqBaoVqiWqNapFqlWqZap1qoWqlaq1qsWq1arlqvWrBasVq0WrZat1q5Wrpau1q8Wr1av1rAWsNaxFrFWsZax1rIWspay1rNWs5az1rQWtFa01rVWtda2VraWtta3VreWt9a4lrkWuVa51roWupa7FrtWu5a71rwWvJa81r0WvVa9lr3Wvha+Vr6Wvta/Fr9Wv5a/1oAWwFbAlsDWwRbBVsGWwdbCFsKWwtbDFsNWw5bD1sQWxFbElsTWxRbFVsYWxlbGlsbWxxbHVseWx9bIFshWyJbI1skWyVbJlsnWyhbKVsqWytbLFstWy5bL1swWzFbM1s1WzZbOFs5WzpbO1s8Wz1bPls/W0FbQltDW0RbRVtGW0dbSFtJW0pbS1tMW01bTltPW1JbVlteW2BbYVtnW2hba1ttW25bb1tyW3Rbdlt3W3hbeVt7W3xbflt/W4JbhluKW41bjluQW5FbkluUW5Zbn1unW6hbqVusW61brluvW7Fbslu3W7pbu1u8W8BbwVvDW8hbyVvKW8tbzVvOW89b0VvUW9Vb1lvXW9hb2VvaW9tb3FvgW+Jb41vmW+db6VvqW+tb7FvtW+9b8VvyW/Nb9Fv1W/Zb91v9W/5bAFwCXANcBVwHXAhcC1wMXA1cDlwQXBJcE1wXXBlcG1weXB9cIFwhXCNcJlwoXClcKlwrXC1cLlwvXDBcMlwzXDVcNlw3XENcRFxGXEdcTFxNXFJcU1xUXFZcV1xYXFpcW1xcXF1cX1xiXGRcZ1xoXGlcalxrXGxcbVxwXHJcc1x0XHVcdlx3XHhce1x8XH1cflyAXINchFyFXIZch1yJXIpci1yOXI9cklyTXJVcnVyeXJ9coFyhXKRcpVymXKdcqFyqXK5cr1ywXLJctFy2XLlculy7XLxcvlzAXMJcw1zFXMZcx1zIXMlcylzMXM1czlzPXNBc0VzTXNRc1VzWXNdc2FzaXNtc3FzdXN5c31zgXOJc41znXOlc61zsXO5c71zxXPJc81z0XPVc9lz3XPhc+Vz6XPxc/Vz+XP9cAF0BXQRdBV0IXQldCl0LXQxdDV0PXRBdEV0SXRNdFV0XXRhdGV0aXRxdHV0fXSBdIV0iXSNdJV0oXSpdK10sXS9dMF0xXTJdM101XTZdN104XTldOl07XTxdP11AXUFdQl1DXURdRV1GXUhdSV1NXU5dT11QXVFdUl1TXVRdVV1WXVddWV1aXVxdXl1fXWBdYV1iXWNdZF1lXWZdZ11oXWpdbV1uXXBdcV1yXXNddV12XXddeF15XXpde118XX1dfl1/XYBdgV2DXYRdhV2GXYddiF2JXYpdi12MXY1djl2PXZBdkV2SXZNdlF2VXZZdl12YXZpdm12cXZ5dn12gXaFdol2jXaRdpV2mXaddqF2pXapdq12sXa1drl2vXbBdsV2yXbNdtF21XbZduF25Xbpdu128Xb1dvl2/XcBdwV3CXcNdxF3GXcddyF3JXcpdy13MXc5dz13QXdFd0l3TXdRd1V3WXddd2F3ZXdpd3F3fXeBd413kXepd7F3tXfBd9V32Xfhd+V36Xftd/F3/XQBeBF4HXgleCl4LXg1eDl4SXhNeF14eXh9eIF4hXiJeI14kXiVeKF4pXipeK14sXi9eMF4yXjNeNF41XjZeOV46Xj5eP15AXkFeQ15GXkdeSF5JXkpeS15NXk5eT15QXlFeUl5TXlZeV15YXlleWl5cXl1eX15gXmNeZF5lXmZeZ15oXmleal5rXmxebV5uXm9ecF5xXnVed155Xn5egV6CXoNehV6IXolejF6NXo5ekl6YXptenV6hXqJeo16kXqheqV6qXqterF6uXq9esF6xXrJetF66XrtevF69Xr9ewF7BXsJew17EXsVexl7HXshey17MXs1ezl7PXtBe1F7VXtde2F7ZXtpe3F7dXt5e317gXuFe4l7jXuRe5V7mXude6V7rXuxe7V7uXu9e8F7xXvJe8171Xvhe+V77Xvxe/V4FXwZfB18JXwxfDV8OXxBfEl8UXxZfGV8aXxxfHV8eXyFfIl8jXyRfKF8rXyxfLl8wXzJfM180XzVfNl83XzhfO189Xz5fP19BX0JfQ19EX0VfRl9HX0hfSV9KX0tfTF9NX05fT19RX1RfWV9aX1tfXF9eX19fYF9jX2VfZ19oX2tfbl9vX3JfdF91X3ZfeF96X31ffl9/X4Nfhl+NX45fj1+RX5NflF+WX5pfm1+dX55fn1+gX6Jfo1+kX6Vfpl+nX6lfq1+sX69fsF+xX7Jfs1+0X7ZfuF+5X7pfu1++X79fwF/BX8Jfx1/IX8pfy1/OX9Nf1F/VX9pf21/cX95f31/iX+Nf5V/mX+hf6V/sX+9f8F/yX/Nf9F/2X/df+V/6X/xfB2AIYAlgC2AMYBBgEWATYBdgGGAaYB5gH2AiYCNgJGAsYC1gLmAwYDFgMmAzYDRgNmA3YDhgOWA6YD1gPmBAYERgRWBGYEdgSGBJYEpgTGBOYE9gUWBTYFRgVmBXYFhgW2BcYF5gX2BgYGFgZWBmYG5gcWByYHRgdWB3YH5ggGCBYIJghWCGYIdgiGCKYItgjmCPYJBgkWCTYJVgl2CYYJlgnGCeYKFgomCkYKVgp2CpYKpgrmCwYLNgtWC2YLdguWC6YL1gvmC/YMBgwWDCYMNgxGDHYMhgyWDMYM1gzmDPYNBg0mDTYNRg1mDXYNlg22DeYOFg4mDjYORg5WDqYPFg8mD1YPdg+GD7YPxg/WD+YP9gAmEDYQRhBWEHYQphC2EMYRBhEWESYRNhFGEWYRdhGGEZYRthHGEdYR5hIWEiYSVhKGEpYSphLGEtYS5hL2EwYTFhMmEzYTRhNWE2YTdhOGE5YTphO2E8YT1hPmFAYUFhQmFDYURhRWFGYUdhSWFLYU1hT2FQYVJhU2FUYVZhV2FYYVlhWmFbYVxhXmFfYWBhYWFjYWRhZWFmYWlhamFrYWxhbWFuYW9hcWFyYXNhdGF2YXhheWF6YXthfGF9YX5hf2GAYYFhgmGDYYRhhWGGYYdhiGGJYYphjGGNYY9hkGGRYZJhk2GVYZZhl2GYYZlhmmGbYZxhnmGfYaBhoWGiYaNhpGGlYaZhqmGrYa1hrmGvYbBhsWGyYbNhtGG1YbZhuGG5Ybphu2G8Yb1hv2HAYcFhw2HEYcVhxmHHYclhzGHNYc5hz2HQYdNh1WHWYddh2GHZYdph22HcYd1h3mHfYeBh4WHiYeNh5GHlYedh6GHpYeph62HsYe1h7mHvYfBh8WHyYfNh9GH2Yfdh+GH5Yfph+2H8Yf1h/mEAYgFiAmIDYgRiBWIHYgliE2IUYhliHGIdYh5iIGIjYiZiJ2IoYiliK2ItYi9iMGIxYjJiNWI2YjhiOWI6YjtiPGJCYkRiRWJGYkpiT2JQYlViVmJXYlliWmJcYl1iXmJfYmBiYWJiYmRiZWJoYnFicmJ0YnVid2J4Ynpie2J9YoFigmKDYoVihmKHYohii2KMYo1ijmKPYpBilGKZYpxinWKeYqNipmKnYqliqmKtYq5ir2KwYrJis2K0YrZit2K4YrpivmLAYsFiw2LLYs9i0WLVYt1i3mLgYuFi5GLqYuti8GLyYvVi+GL5Yvpi+2IAYwNjBGMFYwZjCmMLYwxjDWMPYxBjEmMTYxRjFWMXYxhjGWMcYyZjJ2MpYyxjLWMuYzBjMWMzYzRjNWM2YzdjOGM7YzxjPmM/Y0BjQWNEY0djSGNKY1FjUmNTY1RjVmNXY1hjWWNaY1tjXGNdY2BjZGNlY2ZjaGNqY2tjbGNvY3BjcmNzY3RjdWN4Y3ljfGN9Y35jf2OBY4NjhGOFY4Zji2ONY5Fjk2OUY5Vjl2OZY5pjm2OcY51jnmOfY6FjpGOmY6tjr2OxY7JjtWO2Y7lju2O9Y79jwGPBY8Jjw2PFY8djyGPKY8tjzGPRY9Nj1GPVY9dj2GPZY9pj22PcY91j32PiY+Rj5WPmY+dj6GPrY+xj7mPvY/Bj8WPzY/Vj92P5Y/pj+2P8Y/5jA2QEZAZkB2QIZAlkCmQNZA5kEWQSZBVkFmQXZBhkGWQaZB1kH2QiZCNkJGQlZCdkKGQpZCtkLmQvZDBkMWQyZDNkNWQ2ZDdkOGQ5ZDtkPGQ+ZEBkQmRDZElkS2RMZE1kTmRPZFBkUWRTZFVkVmRXZFlkWmRbZFxkXWRfZGBkYWRiZGNkZGRlZGZkaGRqZGtkbGRuZG9kcGRxZHJkc2R0ZHVkdmR3ZHtkfGR9ZH5kf2SAZIFkg2SGZIhkiWSKZItkjGSNZI5kj2SQZJNklGSXZJhkmmSbZJxknWSfZKBkoWSiZKNkpWSmZKdkqGSqZKtkr2SxZLJks2S0ZLZkuWS7ZL1kvmS/ZMFkw2TEZMZkx2TIZMlkymTLZMxkz2TRZNNk1GTVZNZk2WTaZNtk3GTdZN9k4GThZONk5WTnZOhk6WTqZOtk7GTtZO5k72TwZPFk8mTzZPRk9WT2ZPdk+GT5ZPpk+2T8ZP1k/mT/ZAFlAmUDZQRlBWUGZQdlCGUKZQtlDGUNZQ5lD2UQZRFlE2UUZRVlFmUXZRllGmUbZRxlHWUeZR9lIGUhZSJlI2UkZSZlJ2UoZSllKmUsZS1lMGUxZTJlM2U3ZTplPGU9ZUBlQWVCZUNlRGVGZUdlSmVLZU1lTmVQZVJlU2VUZVdlWGVaZVxlX2VgZWFlZGVlZWdlaGVpZWplbWVuZW9lcWVzZXVldmV4ZXllemV7ZXxlfWV+ZX9lgGWBZYJlg2WEZYVlhmWIZYllimWNZY5lj2WSZZRllWWWZZhlmmWdZZ5loGWiZaNlpmWoZaplrGWuZbFlsmWzZbRltWW2ZbdluGW6ZbtlvmW/ZcBlwmXHZchlyWXKZc1l0GXRZdNl1GXVZdhl2WXaZdtl3GXdZd5l32XhZeNl5GXqZetl8mXzZfRl9WX4Zfll+2X8Zf1l/mX/ZQFmBGYFZgdmCGYJZgtmDWYQZhFmEmYWZhdmGGYaZhtmHGYeZiFmImYjZiRmJmYpZipmK2YsZi5mMGYyZjNmN2Y4ZjlmOmY7Zj1mP2ZAZkJmRGZFZkZmR2ZIZklmSmZNZk5mUGZRZlhmWWZbZlxmXWZeZmBmYmZjZmVmZ2ZpZmpma2ZsZm1mcWZyZnNmdWZ4Znlme2Z8Zn1mf2aAZoFmg2aFZoZmiGaJZopmi2aNZo5mj2aQZpJmk2aUZpVmmGaZZppmm2acZp5mn2agZqFmomajZqRmpWamZqlmqmarZqxmrWavZrBmsWayZrNmtWa2ZrdmuGa6ZrtmvGa9Zr9mwGbBZsJmw2bEZsVmxmbHZshmyWbKZstmzGbNZs5mz2bQZtFm0mbTZtRm1WbWZtdm2GbaZt5m32bgZuFm4mbjZuRm5WbnZuhm6mbrZuxm7WbuZu9m8Wb1ZvZm+Gb6Zvtm/WYBZwJnA2cEZwVnBmcHZwxnDmcPZxFnEmcTZxZnGGcZZxpnHGceZyBnIWciZyNnJGclZydnKWcuZzBnMmczZzZnN2c4ZzlnO2c8Zz5nP2dBZ0RnRWdHZ0pnS2dNZ1JnVGdVZ1dnWGdZZ1pnW2ddZ2JnY2dkZ2ZnZ2drZ2xnbmdxZ3Rndmd4Z3lnemd7Z31ngGeCZ4NnhWeGZ4hnimeMZ41njmePZ5FnkmeTZ5RnlmeZZ5tnn2egZ6FnpGemZ6lnrGeuZ7Fnsme0Z7lnume7Z7xnvWe+Z79nwGfCZ8VnxmfHZ8hnyWfKZ8tnzGfNZ85n1WfWZ9dn22ffZ+Fn42fkZ+Zn52foZ+pn62ftZ+5n8mf1Z/Zn92f4Z/ln+mf7Z/xn/mcBaAJoA2gEaAZoDWgQaBJoFGgVaBhoGWgaaBtoHGgeaB9oIGgiaCNoJGglaCZoJ2goaCtoLGgtaC5oL2gwaDFoNGg1aDZoOmg7aD9oR2hLaE1oT2hSaFZoV2hYaFloWmhbaFxoXWheaF9oamhsaG1obmhvaHBocWhyaHNodWh4aHloemh7aHxofWh+aH9ogGiCaIRoh2iIaIloimiLaIxojWiOaJBokWiSaJRolWiWaJhomWiaaJtonGidaJ5on2igaKFoo2ikaKVoqWiqaKtorGiuaLFosmi0aLZot2i4aLloumi7aLxovWi+aL9owWjDaMRoxWjGaMdoyGjKaMxozmjPaNBo0WjTaNRo1mjXaNlo22jcaN1o3mjfaOFo4mjkaOVo5mjnaOho6WjqaOto7GjtaO9o8mjzaPRo9mj3aPho+2j9aP5o/2gAaQJpA2kEaQZpB2kIaQlpCmkMaQ9pEWkTaRRpFWkWaRdpGGkZaRppG2kcaR1pHmkhaSJpI2klaSZpJ2koaSlpKmkraSxpLmkvaTFpMmkzaTVpNmk3aThpOmk7aTxpPmlAaUFpQ2lEaUVpRmlHaUhpSWlKaUtpTGlNaU5pT2lQaVFpUmlTaVVpVmlYaVlpW2lcaV9pYWliaWRpZWlnaWhpaWlqaWxpbWlvaXBpcmlzaXRpdWl2aXppe2l9aX5pf2mBaYNphWmKaYtpjGmOaY9pkGmRaZJpk2mWaZdpmWmaaZ1pnmmfaaBpoWmiaaNppGmlaaZpqWmqaaxprmmvabBpsmmzabVptmm4ablpumm8ab1pvmm/acBpwmnDacRpxWnGacdpyGnJactpzWnPadFp0mnTadVp1mnXadhp2Wnaadxp3WneaeFp4mnjaeRp5Wnmaedp6Gnpaepp62nsae5p72nwafFp82n0afVp9mn3afhp+Wn6aftp/Gn+aQBqAWoCagNqBGoFagZqB2oIaglqC2oMag1qDmoPahBqEWoSahNqFGoVahZqGWoaahtqHGodah5qIGoiaiNqJGolaiZqJ2opaitqLGotai5qMGoyajNqNGo2ajdqOGo5ajpqO2o8aj9qQGpBakJqQ2pFakZqSGpJakpqS2pMak1qTmpPalFqUmpTalRqVWpWaldqWmpcal1qXmpfamBqYmpjamRqZmpnamhqaWpqamtqbGptam5qb2pwanJqc2p0anVqdmp3anhqemp7an1qfmp/aoFqgmqDaoVqhmqHaohqiWqKaotqjGqNao9qkmqTapRqlWqWaphqmWqaaptqnGqdap5qn2qhaqJqo2qkaqVqpmqnaqhqqmqtaq5qr2qwarFqsmqzarRqtWq2ardquGq5arpqu2q8ar1qvmq/asBqwWrCasNqxGrFasZqx2rIaslqymrLasxqzWrOas9q0GrRatJq02rUatVq1mrXathq2Wraattq3Grdat5q32rgauFq4mrjauRq5Wrmaudq6Grpaupq62rsau1q7mrvavBq8WryavNq9Gr1avZq92r4avlq+mr7avxq/Wr+av9qAGsBawJrA2sEawVrBmsHawhrCWsKawtrDGsNaw5rD2sQaxFrEmsTaxRrFWsWaxdrGGsZaxprG2scax1rHmsfayVrJmsoaylrKmsrayxrLWsuay9rMGsxazNrNGs1azZrOGs7azxrPWs/a0BrQWtCa0RrRWtIa0prS2tNa05rT2tQa1FrUmtTa1RrVWtWa1drWGtaa1trXGtda15rX2tga2FraGtpa2trbGtta25rb2twa3Frcmtza3RrdWt2a3dreGt6a31rfmt/a4BrhWuIa4xrjmuPa5BrkWuUa5Vrl2uYa5lrnGuda55rn2uga6Jro2uka6Vrpmuna6hrqWura6xrrWuua69rsGuxa7Jrtmu4a7lrumu7a7xrvWu+a8Brw2vEa8Zrx2vIa8lrymvMa85r0GvRa9hr2mvca91r3mvfa+Br4mvja+Rr5Wvma+dr6Gvpa+xr7Wvua/Br8Wvya/Rr9mv3a/hr+mv7a/xr/mv/awBsAWwCbANsBGwIbAlsCmwLbAxsDmwSbBdsHGwdbB5sIGwjbCVsK2wsbC1sMWwzbDZsN2w5bDpsO2w8bD5sP2xDbERsRWxIbEtsTGxNbE5sT2xRbFJsU2xWbFhsWWxabGJsY2xlbGZsZ2xrbGxsbWxubG9scWxzbHVsd2x4bHpse2x8bH9sgGyEbIdsimyLbI1sjmyRbJJslWyWbJdsmGyabJxsnWyebKBsomyobKxsr2ywbLRstWy2bLdsumzAbMFswmzDbMZsx2zIbMtszWzObM9s0WzSbNhs2WzabNxs3WzfbORs5mznbOls7GztbPJs9Gz5bP9sAG0CbQNtBW0GbQhtCW0KbQ1tD20QbRFtE20UbRVtFm0YbRxtHW0fbSBtIW0ibSNtJG0mbShtKW0sbS1tL20wbTRtNm03bThtOm0/bUBtQm1EbUltTG1QbVVtVm1XbVhtW21dbV9tYW1ibWRtZW1nbWhta21sbW1tcG1xbXJtc211bXZteW16bXttfW1+bX9tgG2BbYNthG2GbYdtim2LbY1tj22QbZJtlm2XbZhtmW2abZxtom2lbaxtrW2wbbFts220bbZtt225bbptu228bb1tvm3BbcJtw23Ibcltym3Nbc5tz23QbdJt023UbdVt123abdtt3G3fbeJt423lbedt6G3pbept7W3vbfBt8m30bfVt9m34bfpt/W3+bf9tAG4BbgJuA24EbgZuB24IbgluC24PbhJuE24VbhhuGW4bbhxuHm4fbiJuJm4nbihuKm4sbi5uMG4xbjNuNW42bjduOW47bjxuPW4+bj9uQG5BbkJuRW5GbkduSG5JbkpuS25Mbk9uUG5RblJuVW5XblluWm5cbl1uXm5gbmFuYm5jbmRuZW5mbmduaG5pbmpubG5tbm9ucG5xbnJuc250bnVudm53bnhueW56bntufG59boBugW6CboRuh26Ibopui26Mbo1ujm6RbpJuk26UbpVulm6Xbplumm6bbp1unm6gbqFuo26kbqZuqG6pbqturG6tbq5usG6zbrVuuG65brxuvm6/bsBuw27EbsVuxm7Ibsluym7Mbs1uzm7QbtJu1m7Ybtlu227cbt1u427nbupu627sbu1u7m7vbvBu8W7ybvNu9W72bvdu+G76bvtu/G79bv5u/24AbwFvA28EbwVvB28IbwpvC28Mbw1vDm8QbxFvEm8WbxdvGG8ZbxpvG28cbx1vHm8fbyFvIm8jbyVvJm8nbyhvLG8ubzBvMm80bzVvN284bzlvOm87bzxvPW8/b0BvQW9Cb0NvRG9Fb0hvSW9Kb0xvTm9Pb1BvUW9Sb1NvVG9Vb1ZvV29Zb1pvW29db19vYG9hb2NvZG9lb2dvaG9pb2pva29sb29vcG9xb3NvdW92b3dveW97b31vfm9/b4BvgW+Cb4NvhW+Gb4dvim+Lb49vkG+Rb5Jvk2+Ub5Vvlm+Xb5hvmW+ab5tvnW+eb59voG+ib6NvpG+lb6ZvqG+pb6pvq2+sb61vrm+vb7BvsW+yb7RvtW+3b7hvum+7b7xvvW++b79vwW/Db8RvxW/Gb8dvyG/Kb8tvzG/Nb85vz2/Qb9Nv1G/Vb9Zv12/Yb9lv2m/bb9xv3W/fb+Jv42/kb+Vv5m/nb+hv6W/qb+tv7G/tb/Bv8W/yb/Nv9G/1b/Zv92/4b/lv+m/7b/xv/W/+b/9vAHABcAJwA3AEcAVwBnAHcAhwCXAKcAtwDHANcA5wD3AQcBJwE3AUcBVwFnAXcBhwGXAccB1wHnAfcCBwIXAicCRwJXAmcCdwKHApcCpwK3AscC1wLnAvcDBwMXAycDNwNHA2cDdwOHA6cDtwPHA9cD5wP3BAcEFwQnBDcERwRXBGcEdwSHBJcEpwS3BNcE5wUHBRcFJwU3BUcFVwVnBXcFhwWXBacFtwXHBdcF9wYHBhcGJwY3BkcGVwZnBncGhwaXBqcG5wcXBycHNwdHB3cHlwenB7cH1wgXCCcINwhHCGcIdwiHCLcIxwjXCPcJBwkXCTcJdwmHCacJtwnnCfcKBwoXCicKNwpHClcKZwp3CocKlwqnCwcLJwtHC1cLZwunC+cL9wxHDFcMZwx3DJcMtwzHDNcM5wz3DQcNFw0nDTcNRw1XDWcNdw2nDccN1w3nDgcOFw4nDjcOVw6nDucPBw8XDycPNw9HD1cPZw+HD6cPtw/HD+cP9wAHEBcQJxA3EEcQVxBnEHcQhxC3EMcQ1xDnEPcRFxEnEUcRdxG3EccR1xHnEfcSBxIXEicSNxJHElcSdxKHEpcSpxK3EscS1xLnEycTNxNHE1cTdxOHE5cTpxO3E8cT1xPnE/cUBxQXFCcUNxRHFGcUdxSHFJcUtxTXFPcVBxUXFScVNxVHFVcVZxV3FYcVlxWnFbcV1xX3FgcWFxYnFjcWVxaXFqcWtxbHFtcW9xcHFxcXRxdXF2cXdxeXF7cXxxfnF/cYBxgXGCcYNxhXGGcYdxiHGJcYtxjHGNcY5xkHGRcZJxk3GVcZZxl3GacZtxnHGdcZ5xoXGicaNxpHGlcaZxp3Gpcapxq3Gtca5xr3GwcbFxsnG0cbZxt3G4cbpxu3G8cb1xvnG/ccBxwXHCccRxxXHGccdxyHHJccpxy3HMcc1xz3HQcdFx0nHTcdZx13HYcdlx2nHbcdxx3XHecd9x4XHiceNx5HHmcehx6XHqcetx7HHtce9x8HHxcfJx83H0cfVx9nH3cfhx+nH7cfxx/XH+cf9xAHIBcgJyA3IEcgVyB3IIcglyCnILcgxyDXIOcg9yEHIRchJyE3IUchVyFnIXchhyGXIachtyHHIech9yIHIhciJyI3IkciVyJnIncilyK3Itci5yL3IycjNyNHI6cjxyPnJAckFyQnJDckRyRXJGcklySnJLck5yT3JQclFyU3JUclVyV3JYclpyXHJecmByY3JkcmVyaHJqcmtybHJtcnBycXJzcnRydnJ3cnhye3J8cn1ygnKDcoVyhnKHcohyiXKMco5ykHKRcpNylHKVcpZyl3KYcplymnKbcpxynXKecqByoXKicqNypHKlcqZyp3KocqlyqnKrcq5ysXKycrNytXK6crtyvHK9cr5yv3LAcsVyxnLHcslyynLLcsxyz3LRctNy1HLVctZy2HLacttyxuTH5MjkyeTK5MvkzOTN5M7kz+TQ5NHk0uTT5NTk1eTW5Nfk2OTZ5Nrk2+Tc5N3k3uTf5ODk4eTi5OPk5OTl5Obk5+To5Onk6uTr5Ozk7eTu5O/k8OTx5PLk8+T05PXk9uT35Pjk+eT65Pvk/OT95P7k/+QA5QHlAuUD5QTlBeUG5QflCOUJ5QrlC+UM5Q3lDuUP5RDlEeUS5RPlFOUV5RblF+UY5RnlGuUb5RzlHeUe5R/lIOUh5SLlI+Uk5SXlADABMAIwtwDJAscCqAADMAUwFCBe/xYgJiAYIBkgHCAdIBQwFTAIMAkwCjALMAwwDTAOMA8wFjAXMBAwETCxANcA9wA2IiciKCIRIg8iKiIpIggiNyIaIqUiJSIgIhIjmSIrIi4iYSJMIkgiPSIdImAibiJvImQiZSIeIjUiNCJCJkAmsAAyIDMgAyEE/6QA4P/h/zAgpwAWIQYmBSbLJc8lziXHJcYloSWgJbMlsiU7IJIhkCGRIZMhEzAm5SflKOUp5SrlK+Us5S3lLuUv5TDlMeUy5TPlNOU15TblN+U45TnlOuU75TzlPeU+5T/lQOVB5ULlQ+VE5UXlRuVH5UjlSeVK5UvlTOVN5U7lT+VQ5VHlUuVT5VTlVeVW5VflWOVZ5VrlW+Vc5V3lXuVf5WDlYeVi5WPlZOVl5WblZ+Vo5WnlauVr5WzlbeVu5W/lcOVx5XLlc+V05XXlduV35XjleeV65XvlfOV95X7lf+WA5YHlguWD5YTlheVwIXEhciFzIXQhdSF2IXcheCF5IWbnZ+do52nnaudr54gkiSSKJIskjCSNJI4kjySQJJEkkiSTJJQklSSWJJckmCSZJJokmyR0JHUkdiR3JHgkeSR6JHskfCR9JH4kfySAJIEkgiSDJIQkhSSGJIckYCRhJGIkYyRkJGUkZiRnJGgkaSSsIG3nIDIhMiIyIzIkMiUyJjInMigyKTJu52/nYCFhIWIhYyFkIWUhZiFnIWghaSFqIWshcOdx54blh+WI5YnliuWL5YzljeWO5Y/lkOWR5ZLlk+WU5ZXlluWX5ZjlmeWa5ZvlnOWd5Z7ln+Wg5aHlouWj5aTlpeWm5aflqOWp5arlq+Ws5a3lruWv5bDlseWy5bPltOW15bblt+W45bnluuW75bzlveW+5b/lwOXB5cLlw+XE5cXlxuXH5cjlyeXK5cvlzOXN5c7lz+XQ5dHl0uXT5dTl1eXW5dfl2OXZ5drl2+Xc5d3l3uXf5eDl4eXi5ePl5OXl5QH/Av8D/+X/Bf8G/wf/CP8J/wr/C/8M/w3/Dv8P/xD/Ef8S/xP/FP8V/xb/F/8Y/xn/Gv8b/xz/Hf8e/x//IP8h/yL/I/8k/yX/Jv8n/yj/Kf8q/yv/LP8t/y7/L/8w/zH/Mv8z/zT/Nf82/zf/OP85/zr/O/88/z3/Pv8//0D/Qf9C/0P/RP9F/0b/R/9I/0n/Sv9L/0z/Tf9O/0//UP9R/1L/U/9U/1X/Vv9X/1j/Wf9a/1v/XP9d/+P/5uXn5ejl6eXq5evl7OXt5e7l7+Xw5fHl8uXz5fTl9eX25ffl+OX55frl++X85f3l/uX/5QDmAeYC5gPmBOYF5gbmB+YI5gnmCuYL5gzmDeYO5g/mEOYR5hLmE+YU5hXmFuYX5hjmGeYa5hvmHOYd5h7mH+Yg5iHmIuYj5iTmJeYm5ifmKOYp5irmK+Ys5i3mLuYv5jDmMeYy5jPmNOY15jbmN+Y45jnmOuY75jzmPeY+5j/mQOZB5kLmQ+ZE5kXmQTBCMEMwRDBFMEYwRzBIMEkwSjBLMEwwTTBOME8wUDBRMFIwUzBUMFUwVjBXMFgwWTBaMFswXDBdMF4wXzBgMGEwYjBjMGQwZTBmMGcwaDBpMGowazBsMG0wbjBvMHAwcTByMHMwdDB1MHYwdzB4MHkwejB7MHwwfTB+MH8wgDCBMIIwgzCEMIUwhjCHMIgwiTCKMIswjDCNMI4wjzCQMJEwkjCTMHLnc+d053Xndud353jneed653vnfOdG5kfmSOZJ5krmS+ZM5k3mTuZP5lDmUeZS5lPmVOZV5lbmV+ZY5lnmWuZb5lzmXeZe5l/mYOZh5mLmY+Zk5mXmZuZn5mjmaeZq5mvmbOZt5m7mb+Zw5nHmcuZz5nTmdeZ25nfmeOZ55nrme+Z85n3mfuZ/5oDmgeaC5oPmhOaF5obmh+aI5onmiuaL5ozmjeaO5o/mkOaR5pLmk+aU5pXmluaX5pjmmeaa5pvmnOad5p7mn+ag5qHmouaj5qTmpeahMKIwozCkMKUwpjCnMKgwqTCqMKswrDCtMK4wrzCwMLEwsjCzMLQwtTC2MLcwuDC5MLowuzC8ML0wvjC/MMAwwTDCMMMwxDDFMMYwxzDIMMkwyjDLMMwwzTDOMM8w0DDRMNIw0zDUMNUw1jDXMNgw2TDaMNsw3DDdMN4w3zDgMOEw4jDjMOQw5TDmMOcw6DDpMOow6zDsMO0w7jDvMPAw8TDyMPMw9DD1MPYwfed+53/ngOeB54Lng+eE56bmp+ao5qnmquar5qzmreau5q/msOax5rLms+a05rXmtua35rjmuea65rvmvOa95r7mv+bA5sHmwubD5sTmxebG5sfmyObJ5srmy+bM5s3mzubP5tDm0ebS5tPm1ObV5tbm1+bY5tnm2ubb5tzm3ebe5t/m4Obh5uLm4+bk5uXm5ubn5ujm6ebq5uvm7Obt5u7m7+bw5vHm8ubz5vTm9eb25vfm+Ob55vrm++b85v3m/ub/5gDnAecC5wPnBOcF55EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOjA6QDpQOmA6cDqAOpA4XnhueH54jnieeK54vnjOexA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwwPEA8UDxgPHA8gDyQON547nj+eQ55HnkueT5zX+Nv45/jr+P/5A/j3+Pv5B/kL+Q/5E/pTnlec7/jz+N/44/jH+lucz/jT+l+eY55nnmueb55znneee55/nBucH5wjnCecK5wvnDOcN5w7nD+cQ5xHnEucT5xTnFecW5xfnGOcZ5xrnG+cc5x3nHucf5yDnIeci5yPnJOcl5ybnJ+co5ynnKucr5yznLecu5y/nMOcx5zLnM+c05zXnNuc35zjnOec65zvnPOc95z7nP+dA50HnQudD50TnRedG50fnSOdJ50rnS+dM503nTudP51DnUedS51PnVOdV51bnV+dY51nnWudb51znXede51/nYOdh52LnY+dk52XnEAQRBBIEEwQUBBUEAQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EoOeh56Lno+ek56Xnpuen56jnqeeq56vnrOet567nMAQxBDIEMwQ0BDUEUQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8Er+ew57Hnsuez57Tntee257fnuOe557rnu+fKAssC2QITIBUgJSA1IAUhCSGWIZchmCGZIRUiHyIjIlIiZiJnIr8iUCVRJVIlUyVUJVUlViVXJVglWSVaJVslXCVdJV4lXyVgJWElYiVjJWQlZSVmJWclaCVpJWolayVsJW0lbiVvJXAlcSVyJXMlgSWCJYMlhCWFJYYlhyWIJYkliiWLJYwljSWOJY8lkyWUJZUlvCW9JeIl4yXkJeUlCSaVIhIwHTAeMLznvee+57/nwOfB58Lnw+fE58XnxucBAeEAzgHgABMB6QAbAegAKwHtANAB7ABNAfMA0gHyAGsB+gDUAfkA1gHYAdoB3AH8AOoAUQLH50QBSAH5AWECyefK58vnzOcFMQYxBzEIMQkxCjELMQwxDTEOMQ8xEDERMRIxEzEUMRUxFjEXMRgxGTEaMRsxHDEdMR4xHzEgMSExIjEjMSQxJTEmMScxKDEpMc3nzufP59Dn0efS59Pn1OfV59bn1+fY59nn2ufb59zn3efe59/n4Ofh5yEwIjAjMCQwJTAmMCcwKDApMKMyjjOPM5wznTOeM6EzxDPOM9Ez0jPVMzD+4v/k/+LnISExMuPnECDk5+Xn5uf8MJswnDD9MP4wBjCdMJ4wSf5K/kv+TP5N/k7+T/5Q/lH+Uv5U/lX+Vv5X/ln+Wv5b/lz+Xf5e/l/+YP5h/mL+Y/5k/mX+Zv5o/mn+av5r/j4w8C/xL/Iv8y/0L/Uv9i/3L/gv+S/6L/svBzD05/Xn9uf35/jn+ef65/vn/Of95/7n/+cA6AAlASUCJQMlBCUFJQYlByUIJQklCiULJQwlDSUOJQ8lECURJRIlEyUUJRUlFiUXJRglGSUaJRslHCUdJR4lHyUgJSElIiUjJSQlJSUmJSclKCUpJSolKyUsJS0lLiUvJTAlMSUyJTMlNCU1JTYlNyU4JTklOiU7JTwlPSU+JT8lQCVBJUIlQyVEJUUlRiVHJUglSSVKJUslAegC6APoBOgF6AboB+gI6AnoCugL6AzoDegO6A/o3HLdct9y4nLjcuRy5XLmcudy6nLrcvVy9nL5cv1y/nL/cgBzAnMEcwVzBnMHcwhzCXMLcwxzDXMPcxBzEXMScxRzGHMZcxpzH3MgcyNzJHMmcydzKHMtcy9zMHMyczNzNXM2czpzO3M8cz1zQHNBc0JzQ3NEc0VzRnNHc0hzSXNKc0tzTHNOc09zUXNTc1RzVXNWc1hzWXNac1tzXHNdc15zX3Nhc2JzY3Nkc2VzZnNnc2hzaXNqc2tzbnNwc3FzAOAB4ALgA+AE4AXgBuAH4AjgCeAK4AvgDOAN4A7gD+AQ4BHgEuAT4BTgFeAW4BfgGOAZ4BrgG+Ac4B3gHuAf4CDgIeAi4CPgJOAl4CbgJ+Ao4CngKuAr4CzgLeAu4C/gMOAx4DLgM+A04DXgNuA34DjgOeA64DvgPOA94D7gP+BA4EHgQuBD4ETgReBG4EfgSOBJ4ErgS+BM4E3gTuBP4FDgUeBS4FPgVOBV4FbgV+BY4FngWuBb4FzgXeByc3NzdHN1c3Zzd3N4c3lzenN7c3xzfXN/c4BzgXOCc4NzhXOGc4hzinOMc41zj3OQc5Jzk3OUc5Vzl3OYc5lzmnOcc51znnOgc6Fzo3Okc6VzpnOnc6hzqnOsc61zsXO0c7VztnO4c7lzvHO9c75zv3PBc8NzxHPFc8Zzx3PLc8xzznPSc9Nz1HPVc9Zz13PYc9pz23Pcc91z33Phc+Jz43Pkc+Zz6HPqc+tz7HPuc+9z8HPxc/Nz9HP1c/Zz93Ne4F/gYOBh4GLgY+Bk4GXgZuBn4GjgaeBq4GvgbOBt4G7gb+Bw4HHgcuBz4HTgdeB24HfgeOB54Hrge+B84H3gfuB/4IDggeCC4IPghOCF4Ibgh+CI4IngiuCL4IzgjeCO4I/gkOCR4JLgk+CU4JXgluCX4JjgmeCa4JvgnOCd4J7gn+Cg4KHgouCj4KTgpeCm4KfgqOCp4Krgq+Cs4K3gruCv4LDgseCy4LPgtOC14Lbgt+C44LnguuC74Phz+XP6c/tz/HP9c/5z/3MAdAF0AnQEdAd0CHQLdAx0DXQOdBF0EnQTdBR0FXQWdBd0GHQZdBx0HXQedB90IHQhdCN0JHQndCl0K3QtdC90MXQydDd0OHQ5dDp0O3Q9dD50P3RAdEJ0Q3REdEV0RnRHdEh0SXRKdEt0THRNdE50T3RQdFF0UnRTdFR0VnRYdF10YHRhdGJ0Y3RkdGV0ZnRndGh0aXRqdGt0bHRudG90cXRydHN0dHR1dHh0eXR6dLzgveC+4L/gwODB4MLgw+DE4MXgxuDH4MjgyeDK4MvgzODN4M7gz+DQ4NHg0uDT4NTg1eDW4Nfg2ODZ4Nrg2+Dc4N3g3uDf4ODg4eDi4OPg5ODl4Obg5+Do4Ong6uDr4Ozg7eDu4O/g8ODx4PLg8+D04PXg9uD34Pjg+eD64Pvg/OD94P7g/+AA4QHhAuED4QThBeEG4QfhCOEJ4QrhC+EM4Q3hDuEP4RDhEeES4RPhFOEV4RbhF+EY4Rnhe3R8dH10f3SCdIR0hXSGdIh0iXSKdIx0jXSPdJF0knSTdJR0lXSWdJd0mHSZdJp0m3SddJ90oHShdKJ0o3SkdKV0pnSqdKt0rHStdK50r3SwdLF0snSzdLR0tXS2dLd0uHS5dLt0vHS9dL50v3TAdMF0wnTDdMR0xXTGdMd0yHTJdMp0y3TMdM10znTPdNB00XTTdNR01XTWdNd02HTZdNp023TddN904XTldOd06HTpdOp063TsdO108HTxdPJ0GuEb4RzhHeEe4R/hIOEh4SLhI+Ek4SXhJuEn4SjhKeEq4SvhLOEt4S7hL+Ew4THhMuEz4TThNeE24TfhOOE54TrhO+E84T3hPuE/4UDhQeFC4UPhROFF4UbhR+FI4UnhSuFL4UzhTeFO4U/hUOFR4VLhU+FU4VXhVuFX4VjhWeFa4VvhXOFd4V7hX+Fg4WHhYuFj4WThZeFm4WfhaOFp4Wrha+Fs4W3hbuFv4XDhceFy4XPhdOF14Xbhd+HzdPV0+HT5dPp0+3T8dP10/nQAdQF1AnUDdQV1BnUHdQh1CXUKdQt1DHUOdRB1EnUUdRV1FnUXdRt1HXUedSB1IXUidSN1JHUmdSd1KnUudTR1NnU5dTx1PXU/dUF1QnVDdUR1RnVHdUl1SnVNdVB1UXVSdVN1VXVWdVd1WHVddV51X3VgdWF1YnVjdWR1Z3VodWl1a3VsdW11bnVvdXB1cXVzdXV1dnV3dXp1e3V8dX11fnWAdYF1gnWEdYV1h3V44XnheuF74XzhfeF+4X/hgOGB4YLhg+GE4YXhhuGH4YjhieGK4YvhjOGN4Y7hj+GQ4ZHhkuGT4ZThleGW4ZfhmOGZ4Zrhm+Gc4Z3hnuGf4aDhoeGi4aPhpOGl4abhp+Go4anhquGr4azhreGu4a/hsOGx4bLhs+G04bXhtuG34bjhueG64bvhvOG94b7hv+HA4cHhwuHD4cThxeHG4cfhyOHJ4crhy+HM4c3hzuHP4dDh0eHS4dPh1OHV4Yh1iXWKdYx1jXWOdZB1k3WVdZh1m3WcdZ51onWmdad1qHWpdap1rXW2dbd1unW7db91wHXBdcZ1y3XMdc51z3XQddF103XXddl12nXcdd1133XgdeF15XXpdex17XXude918nXzdfV19nX3dfh1+nX7df11/nUCdgR2BnYHdgh2CXYLdg12DnYPdhF2EnYTdhR2FnYadhx2HXYediF2I3Yndih2LHYudi92MXYydjZ2N3Y5djp2O3Y9dkF2QnZEdtbh1+HY4dnh2uHb4dzh3eHe4d/h4OHh4eLh4+Hk4eXh5uHn4ejh6eHq4evh7OHt4e7h7+Hw4fHh8uHz4fTh9eH24ffh+OH54frh++H84f3h/uH/4QDiAeIC4gPiBOIF4gbiB+II4gniCuIL4gziDeIO4g/iEOIR4hLiE+IU4hXiFuIX4hjiGeIa4hviHOId4h7iH+Ig4iHiIuIj4iTiJeIm4ifiKOIp4iriK+Is4i3iLuIv4jDiMeIy4jPiRXZGdkd2SHZJdkp2S3ZOdk92UHZRdlJ2U3ZVdld2WHZZdlp2W3Zddl92YHZhdmJ2ZHZldmZ2Z3Zodml2anZsdm12bnZwdnF2cnZzdnR2dXZ2dnd2eXZ6dnx2f3aAdoF2g3aFdol2inaMdo12j3aQdpJ2lHaVdpd2mHaadpt2nHaddp52n3agdqF2onajdqV2pnandqh2qXaqdqt2rHatdq92sHazdrV2tna3drh2uXa6drt2vHa9dr52wHbBdsN2SlU/lsNXKGPOVAlVwFSRdkx2PIXud36CjXgxcpiWjZcobIlb+k8JY5dmuFz6gEhoroACZs52+VFWZaxx8X+EiLJQZVnKYbNvrYJMY1Ji7VMnVAZ7a1GkdfRd1GLLjXaXimIZgF1XOJdifzhyfXbPZ352RmRwTyWN3GIXepFl7XMsZHNiLIKBmH9nSHJuYsxiNE/jdEpTnlLKfqaQLl6GaJxpgIHRftJoxXiMhlGVjVAkjN6C3oAFUxKJZVLEdsd2yXbLdsx203bVdtl22nbcdt123nbgduF24nbjduR25nbnduh26Xbqdut27HbtdvB283b1dvZ293b6dvt2/Xb/dgB3AncDdwV3BncKdwx3DncPdxB3EXcSdxN3FHcVdxZ3F3cYdxt3HHcddx53IXcjdyR3JXcndyp3K3csdy53MHcxdzJ3M3c0dzl3O3c9dz53P3dCd0R3RXdGd0h3SXdKd0t3THdNd053T3dSd1N3VHdVd1Z3V3dYd1l3XHeEhfmW3U8hWHGZnVuxYqVitGZ5jI2cBnJvZ5F4smBRUxdTiI/MgB2NoZQNUMhyB1nrYBlxq4hUWe+CLGcoeyld934tdfVsZo74jzyQO5/UaxmRFHt8X6d41oQ9hdVr2WvWawFeh175de2VXWUKX8Vfn4/BWMKBf5Bblq2XuY8WfyyNQWK/T9hTXlOoj6mPq49NkAdoal+YgWiI1pyLYStSKnZsX4xl0m/obr5bSGR1UbBRxGcZTsl5fJmzcF13Xndfd2B3ZHdnd2l3andtd253b3dwd3F3cndzd3R3dXd2d3d3eHd6d3t3fHeBd4J3g3eGd4d3iHeJd4p3i3ePd5B3k3eUd5V3lneXd5h3mXead5t3nHedd553oXejd6R3pneod6t3rXeud693sXeyd7R3tne3d7h3uXe6d7x3vnfAd8F3wnfDd8R3xXfGd8d3yHfJd8p3y3fMd853z3fQd9F30nfTd9R31XfWd9h32Xfad9133nffd+B34Xfkd8V1dl67c+CDrWToYrWU4mxaU8NSD2TClJR7L08bXjaCFoGKgSRuymxzmlVjXFP6VGWI4FcNTgNeZWs/fOiQFmDmZBxzwYhQZ01iIo1sdymOx5FpX9yDIYUQmcJTlYaLa+1g6GB/cM2CMYLTTqdsz4XNZNl8/Wn5ZkmDlVNWe6dPjFFLbUJcbY7SY8lTLIM2g+VntHg9ZN9blFzuXeeLxmL0Z3qMAGS6Y0mHi5kXjCB/8pSnThCWpJgMZhZz5nfod+p373fwd/F38nf0d/V393f5d/p3+3f8dwN4BHgFeAZ4B3gIeAp4C3gOeA94EHgTeBV4GXgbeB54IHgheCJ4JHgoeCp4K3gueC94MXgyeDN4NXg2eD14P3hBeEJ4Q3hEeEZ4SHhJeEp4S3hNeE94UXhTeFR4WHhZeFp4W3hceF54X3hgeGF4YnhjeGR4ZXhmeGd4aHhpeG94cHhxeHJ4c3h0eHV4dnh4eHl4enh7eH14fnh/eIB4gXiCeIN4OlcdXDhef5V/UKCAglNeZUV1MVUhUIWNhGKelB1nMlZub+JdNVSScGaPb2KkZKNje1+Ib/SQ44GwjxhcaGbxX4lsSJaBjWyIkWTwec5XWWoQYkhUWE4LeulghG/ai39iHpCLmuR5A1T0dQFjGVNgbN+PG19wmjuAf5+ITzpcZI3Ff6VlvXBFUbJRa4YHXaBbvWJskXR1DI4gegFheXvHTvh+hXcRTu2BHVL6UXFqqFOHjgSVz5bBbmSWWmmEeIV4hniIeIp4i3iPeJB4kniUeJV4lniZeJ14nnigeKJ4pHimeKh4qXiqeKt4rHiteK54r3i1eLZ4t3i4eLp4u3i8eL14v3jAeMJ4w3jEeMZ4x3jIeMx4zXjOeM940XjSeNN41njXeNh42njbeNx43XjeeN944HjheOJ443jkeOV45njneOl46njreO147njvePB48XjzePV49nj4ePl4+3j8eP14/nj/eAB5AnkDeQR5BnkHeQh5CXkKeQt5DHlAeKhQ13cQZOaJBFnjY91df3o9aSBPOYKYVTJOrnWXemJeil7vlRtSOVSKcHZjJJWCVyVmP2mHkQdV822vfiKIM2LwfrV1KIPBeMyWno9IYfd0zYtkazpSUI0ha2qAcYTxVgZTzk4bTtFRl3yLkQd8w09/juF7nHpnZBRdrFAGgQF2uXzsbeB/UWdYW/hby3iuZBNkqmMrYxmVLWS+j1R7KXZTYidZRlR5a6NQNGImXoZr4043jYuIhV8ukA15DnkPeRB5EXkSeRR5FXkWeRd5GHkZeRp5G3kceR15H3kgeSF5InkjeSV5JnkneSh5KXkqeSt5LHkteS55L3kweTF5MnkzeTV5Nnk3eTh5OXk9eT95QnlDeUR5RXlHeUp5S3lMeU15TnlPeVB5UXlSeVR5VXlYeVl5YXljeWR5ZnlpeWp5a3lseW55cHlxeXJ5c3l0eXV5dnl5eXt5fHl9eX55f3mCeYN5hnmHeYh5iXmLeYx5jXmOeZB5kXmSeSBgPYDFYjlOVVP4kLhjxoDmZS5sRk/uYOFt3os5X8uGU18hY1pRYYNjaABSY2NIjhJQm1x3efxbMFI7erxgU5DXdrdfl1+EdmyOb3B7dkl7qnfzUZOQJFhOT/Ru6o9MZRt7xHKkbd9/4Vq1YpVeMFeChCx7HV4fXxKQFH+gmIJjx26YeLlweFFbl6tXNXVDTzh1l17mYGBZwG2/a4l4/FPVlstRAVKJYwpUk5QDjMyNOXKfeHaH7Y8NjOBTk3mUeZV5lnmXeZh5mXmbeZx5nXmeeZ95oHmheaJ5o3mkeaV5pnmoeal5qnmreax5rXmuea95sHmxebJ5tHm1ebZ5t3m4ebx5v3nCecR5xXnHech5ynnMec55z3nQedN51HnWedd52Xnaedt53Hnded554HnheeJ55Xnoeep57HnuefF58nnzefR59Xn2efd5+Xn6efx5/nn/eQF6BHoFegd6CHoJegp6DHoPehB6EXoSehN6FXoWehh6GXobehx6AU7vdu5TiZR2mA6fLZWaW6KLIk4cTqxRY4TCYahSC2iXT2tgu1EebVxRlmKXZWGWRowXkNh1/ZBjd9JrinLscvuLNVh5d0yNXGdAlZqApl4hbpJZ73rtdzuVtWutZQ5/BlhRUR+W+VupWChUco5mZX+Y5FadlP52QZCHY8ZUGlk6WZtXso41Z/qNNYJBUvBgFVj+huhcRZ7ET52YuYslWnZghFN8Yk+QApF/mWlgDIA/UTOAFFx1mTFtjE4deh96IXoieiR6JXomeid6KHopeip6K3osei16LnovejB6MXoyejR6NXo2ejh6Ono+ekB6QXpCekN6RHpFekd6SHpJekp6S3pMek16TnpPelB6UnpTelR6VXpWelh6WXpaelt6XHpdel56X3pgemF6YnpjemR6ZXpmemd6aHppemp6a3psem16bnpvenF6cnpzenV6e3p8en16fnqCeoV6h3qJeop6i3qMeo56j3qQepN6lHqZepp6m3qeeqF6onowjdFTWn9PexBPT04AltVs0HPphQZeanX7fwpq/neSlEF+4VHmcM1T1I8DgymNr3JtmdtsSlezgrllqoA/YjKWqFn/Tr+Lun4+ZfKDXpdhVd6YpYAqU/2LIFS6gJ9euGw5jayCWpEpVBtsBlK3fl9XGnF+bIl8S1n9Tv9fJGGqfDBOAVyrZwKH8FwLlc6Yr3X9cCKQr1Edf72LSVnkUVtPJlQrWXdlpIB1W3ZiwmKQj0VeH2wmew9P2E8NZ6N6pHqneql6qnqreq56r3qwerF6snq0erV6tnq3erh6uXq6ert6vHq9er56wHrBesJ6w3rEesV6xnrHesh6yXrKesx6zXrOes960HrRetJ603rUetV613rYetp623rcet164XrieuR653roeul66nrreux67nrwevF68nrzevR69Xr2evd6+Hr7evx6/noAewF7AnsFewd7CXsMew17DnsQexJ7E3sWexd7GHsaexx7HXsfeyF7Insjeyd7KXste25tqm2PebGIF18rdZpihY/vT9yRp2UvgVGBnF5QgXSNb1KGiUuNDVmFUNhOHJY2cnmBH43MW6OLRJaHWRp/kFR2Vg5W5Ys5ZYJpmZTWdolucl4YdUZn0Wf/ep2Ado0fYcZ5YmVjjYhRGlKilDh/m4CyfpdcL25gZ9l7i3bYmo+BlH/VfB5kUJU/ekpU5VRMawFkCGI9nvOAmXVyUmmXW4Q8aOSGAZaUluyUKk4EVNl+OWjfjRWA9GaaXrl/L3swezJ7NHs1ezZ7N3s5ezt7PXs/e0B7QXtCe0N7RHtGe0h7SntNe057U3tVe1d7WXtce157X3the2N7ZHtle2Z7Z3toe2l7antre2x7bXtve3B7c3t0e3Z7eHt6e3x7fXt/e4F7gnuDe4R7hnuHe4h7iXuKe4t7jHuOe497kXuSe5N7lnuYe5l7mnube557n3uge6N7pHule657r3uwe7J7s3u1e7Z7t3u5e7p7u3u8e717vnu/e8B7wnvDe8R7wlc/gJdo5V07ZZ9SbWCan5tPrI5sUatbE1/pXV5s8WIhjXFRqZT+Up9s34LXcqJXhGctjR9ZnI/Hg5VUjXswT71sZFvRWROf5FPKhqiaN4yhgEVlfpj6VseWLlLcdFBS4VsCYwKJVk7QYipg+mhzUZhboFHCiaF7hplQf+9gTHAvjUlRf14bkHB0xIktV0V4Ul+fn/qVaI88m+GLeHZCaNxn6o01jT1Sio/abs1oBZXtkP1WnGf5iMePyFTFe8h7yXvKe8t7zXvOe8970HvSe9R71XvWe9d72Hvbe9x73nvfe+B74nvje+R753voe+l763vse+1773vwe/J783v0e/V79nv4e/l7+nv7e/17/3sAfAF8AnwDfAR8BXwGfAh8CXwKfA18DnwQfBF8EnwTfBR8FXwXfBh8GXwafBt8HHwdfB58IHwhfCJ8I3wkfCV8KHwpfCt8LHwtfC58L3wwfDF8MnwzfDR8NXw2fDd8OXw6fDt8PHw9fD58Qny4mmlbd20mbKVOs1uHmmORqGGvkOmXK1S1bdJb/VGKVVV/8H+8ZE1j8WW+YY1gCnFXbElsL1ltZyqC1ViOVmqM62vdkH1ZF4D3U2ltdVSdVXeDz4M4aL55jFRVTwhU0naJjAKWs2y4bWuNEIlknjqNP1bRntV1iF/gcmhg/FSoTipqYYhSYHCPxFTYcHmGP54qbY9bGF+ifolVr080czxUmlMZUA5UfFROTv1fWnT2WGuE4YB0h9ByynxWbkN8RHxFfEZ8R3xIfEl8SnxLfEx8TnxPfFB8UXxSfFN8VHxVfFZ8V3xYfFl8WnxbfFx8XXxefF98YHxhfGJ8Y3xkfGV8ZnxnfGh8aXxqfGt8bHxtfG58b3xwfHF8cnx1fHZ8d3x4fHl8enx+fH98gHyBfIJ8g3yEfIV8hnyHfIh8inyLfIx8jXyOfI98kHyTfJR8lnyZfJp8m3ygfKF8o3ymfKd8qHypfKt8rHytfK98sHy0fLV8tny3fLh8uny7fCdfToYsVaRikk6qbDdisYLXVE5TPnPRbjt1ElIWU92L0GmKXwBg7m1PVyJrr3NTaNiPE39iY6NgJFXqdWKMFXGjbaZbe15Sg0xhxJ76eFeHJ3yHdvBR9mBMcUNmTF5NYA6McHAlY4mPvV9iYNSG3lbBa5RgZ2FJU+BgZmY/jf15Gk/pcEdss4vyi9h+ZIMPZlpaQptRbfdtQYw7bRlPa3C3gxZi0WANlyeNeHn7UT5X+lc6Z3h1PXrveZV7v3zAfMJ8w3zEfMZ8yXzLfM58z3zQfNF80nzTfNR82HzafNt83XzefOF84nzjfOR85XzmfOd86XzqfOt87HztfO588HzxfPJ883z0fPV89nz3fPl8+nz8fP18/nz/fAB9AX0CfQN9BH0FfQZ9B30IfQl9C30MfQ19Dn0PfRB9EX0SfRN9FH0VfRZ9F30YfRl9Gn0bfRx9HX0efR99IX0jfSR9JX0mfSh9KX0qfSx9LX0ufTB9MX0yfTN9NH01fTZ9jIBlmfmPwG+liyGe7Fnpfgl/CVSBZ9hokY9NfMaWylMlYL51cmxzU8lap34kY+BRCoHxXd+EgGKAUWNbDk9teUJSuGBObcRbwluhi7CL4mXMX0WWk1nnfqp+CVa3ZzlZc0+2W6BSWoOKmD6NMnW+lEdQPHr3TrZnfprBWnxr0XZaVxZcOnv0lU5xfFGpgHCCeFkEfyeDwGjsZ7F4d3jjYmFjgHvtT2pSz1FQg9tpdJL1jTGNwYkula179k43fTh9OX06fTt9PH09fT59P31AfUF9Qn1DfUR9RX1GfUd9SH1JfUp9S31MfU19Tn1PfVB9UX1SfVN9VH1VfVZ9V31YfVl9Wn1bfVx9XX1efV99YH1hfWJ9Y31kfWV9Zn1nfWh9aX1qfWt9bH1tfW99cH1xfXJ9c310fXV9dn14fXl9en17fXx9fX1+fX99gH2BfYJ9g32EfYV9hn2HfYh9iX2KfYt9jH2NfY59j32QfZF9kn2TfZR9lX2WfZd9mH1lUDCCUVJvmRBuhW6nbfpe9VDcWQZcRm1fbIZ1i4RoaFZZsosgU3GRTZZJhRJpAXkmcfaApE7KkEdthJoHWrxWBWTwlOt3pU8ageFy0ol6mTR/3n5/UllldZF/j4OP61OWeu1jpWOGdvh5V4g2lipiq1KCglRocGd3Y2t37XoBbdN+44nQWRJiyYWlgkx1H1DLTqV164tKXP5dS3ukZdGRyk4lbV+JJ30mlcVOKIzbj3OXS2aBedGP7HB4bZl9mn2bfZx9nX2efZ99oH2hfaJ9o32kfaV9p32ofal9qn2rfax9rX2vfbB9sX2yfbN9tH21fbZ9t324fbl9un27fbx9vX2+fb99wH3BfcJ9w33EfcV9xn3Hfch9yX3Kfct9zH3Nfc59z33QfdF90n3TfdR91X3Wfdd92H3Zfdp9233cfd193n3ffeB94X3ifeN95H3lfeZ9533ofel96n3rfex97X3ufe998H3xffJ98330ffV99n33ffh9+X36fT1cslJGg2JRDoNbd3ZmuJysTspgvnyzfM9+lU5mi29miJhZl4NYbGVclYRfyXVWl9963nrAUa9wmHrqY3Z6oH6Wc+2XRU54cF1OUpGpU1Fl52X8gQWCjlQxXJp1oJfYYtlyvXVFXHmayoNAXIBU6Xc+Tq5sWoDSYm5j6F13Ud2NHo4vlfFP5VPnYKxwZ1JQY0OeH1omUDd3d1PifoVkK2WJYphjFFA1csmJs1HAi91+R1fMg6eUm1EbVPtc+338ff19/n3/fQB+AX4CfgN+BH4FfgZ+B34Ifgl+Cn4Lfgx+DX4Ofg9+EH4RfhJ+E34UfhV+Fn4Xfhh+GX4afht+HH4dfh5+H34gfiF+In4jfiR+JX4mfid+KH4pfip+K34sfi1+Ln4vfjB+MX4yfjN+NH41fjZ+N344fjl+On48fj1+Pn4/fkB+Qn5DfkR+RX5Gfkh+SX5Kfkt+TH5Nfk5+T35QflF+Un5TflR+VX5Wfld+WH5Zflp+W35cfl1+yk/jelpt4ZCPmoBVllRhU69UAF/pY3dp71FoYQpSKljYUk5XDXgLd7ded2HgfFtil2KiTpVwA4D3YuRwYJd3V9uC72f1aNV4l5jRefNYs1TvUzRuS1E7UqJb/ouvgENVpldzYFFXLVR6elBgVFunY6Bi41NjYsdbr2ftVJ965oJ3kZNe5Ig4Wa5XDmPoje+AV1d3e6lP61+9Wz5rIVNQe8JyRmj/dzZ392W1UY9O1Ha/XKV6dYROWUGbgFBefl9+YH5hfmJ+Y35kfmV+Zn5nfmh+aX5qfmt+bH5tfm5+b35wfnF+cn5zfnR+dX52fnd+eH55fnp+e358fn1+fn5/foB+gX6DfoR+hX6Gfod+iH6Jfop+i36Mfo1+jn6PfpB+kX6SfpN+lH6VfpZ+l36Yfpl+mn6cfp1+nn6ufrR+u368ftZ+5H7sfvl+Cn8Qfx5/N385fzt/PH89fz5/P39Af0F/Q39Gf0d/SH9Jf0p/S39Mf01/Tn9Pf1J/U3+ImSdhg25kVwZmRmPwVuxiaWLTXhSWg1fJYodVIYdKgaOPZlWxg2VnVo3dhGpaD2jmYu57EZZwUZxvMIz9Y8iJ0mEGf8Jw5W4FdJRp/HLKXs6QF2dqbV5js1JicgGAbE/lWWqR2XCdbdJSUE73lm2VfoXKeC99IVGSV8Jki4B7fOps8WheabdRmFOoaIFyzp7xe/hyu3kTbwZ0TmfMkaScPHmJg1SDD1QXaD1OiVOxUj54hlMpUohQi0/QT1Z/WX9bf1x/XX9ef2B/Y39kf2V/Zn9nf2t/bH9tf29/cH9zf3V/dn93f3h/en97f3x/fX9/f4B/gn+Df4R/hX+Gf4d/iH+Jf4t/jX+Pf5B/kX+Sf5N/lX+Wf5d/mH+Zf5t/nH+gf6J/o3+lf6Z/qH+pf6p/q3+sf61/rn+xf7N/tH+1f7Z/t3+6f7t/vn/Af8J/w3/Ef8Z/x3/If8l/y3/Nf89/0H/Rf9J/03/Wf9d/2X/af9t/3H/df95/4n/jf+J1y3qSfKVstpabUoN06VTpT1SAsoPej3CVyV4cYJ9tGF5bZTiB/pRLYLxww36ufMlRgWixfG+CJE6Gj8+RfmauTgWMqWRKgNpQl3XOceVbvY9mb4ZOgmRjldZemWUXUsKIyHCjUg5zM3SXZ/d4Fpc0TruQ3pzLbdtRQY0dVM5isnPxg/aWhJ/DlDZPmn/MUXVwdZatXIaY5lPkTpxuCXS0aWt4j5lZdRhSJHZBbfNnbVGZn0uAmVQ8e7965H/nf+h/6n/rf+x/7X/vf/J/9H/1f/Z/93/4f/l/+n/9f/5//38CgAeACIAJgAqADoAPgBGAE4AagBuAHYAegB+AIYAjgCSAK4AsgC2ALoAvgDCAMoA0gDmAOoA8gD6AQIBBgESARYBHgEiASYBOgE+AUIBRgFOAVYBWgFeAWYBbgFyAXYBegF+AYIBhgGKAY4BkgGWAZoBngGiAa4BsgG2AboBvgHCAcoBzgHSAdYB2gHeAeIB5gHqAe4B8gH2AhpaEV+JiR5Z8aQRaAmTTew9vS5amgmJThZiQXolws2NkU0+GgZyTnox4MpfvjUKNf55eb4R5VV9Gli5idJoVVN2Uo0/FZWVcYVwVf1GGL2yLX4dz5G7/fuZcG2NqW+ZudVNxTqBjZXWhYm6PJk/RTqZstn66ix2EuodXfzuQI5Wpe6Ga+Ig9hBtthprcfohZu56bcwF4goZsmoKaG1YXVMtXcE6mnlZTyI8JgZJ3kpnuhuFuE4X8ZmJhK29+gIGAgoCFgIiAioCNgI6Aj4CQgJGAkoCUgJWAl4CZgJ6Ao4CmgKeAqICsgLCAs4C1gLaAuIC5gLuAxYDHgMiAyYDKgMuAz4DQgNGA0oDTgNSA1YDYgN+A4IDigOOA5oDugPWA94D5gPuA/oD/gACBAYEDgQSBBYEHgQiBC4EMgRWBF4EZgRuBHIEdgR+BIIEhgSKBI4EkgSWBJoEngSiBKYEqgSuBLYEugTCBM4E0gTWBN4E5gTqBO4E8gT2BP4EpjJKCK4PydhNs2V+9gytzBYMaldtr23fGlG9TAoOSUT1ejIw4jUhOq3OaZ4VodpEJl2RxoWwJd5JaQZXPa45/J2bQW7lZmlrolfeV7E4MhJmErGrfdjCVG3OmaF9bL3eakWGX3Hz3jxyMJV9zfNh5xYnMbByHxltCXsloIHf1fpVRTVHJUilaBX9il9eCz2OEd9CF0nk6bplemVkRhW1wEWy/Yr92T2WvYP2VDmafhyOe7ZQNVH1ULIx4ZECBQYFCgUOBRIFFgUeBSYFNgU6BT4FSgVaBV4FYgVuBXIFdgV6BX4FhgWKBY4FkgWaBaIFqgWuBbIFvgXKBc4F1gXaBd4F4gYGBg4GEgYWBhoGHgYmBi4GMgY2BjoGQgZKBk4GUgZWBloGXgZmBmoGegZ+BoIGhgaKBpIGlgaeBqYGrgayBrYGuga+BsIGxgbKBtIG1gbaBt4G4gbmBvIG9gb6Bv4HEgcWBx4HIgcmBy4HNgc6Bz4HQgdGB0oHTgXlkEYYhapyB6HhpZFSbuWIrZ6uDqFjYnqtsIG/eW0yWC4xfctBnx2JhcqlOxlnNa5NYrmZVXt9SVWEoZ+52ZndnckZ6/2LqVFBUoJSjkBxas34WbENOdlkQgEhZV1M3db6WylYgYxGBfGD5ldZtYlSBmYVR6Vr9gK5ZE5cqUOVsPFzfYmBPP1N7gQaQum4rhchidF6+eLVke2P1Xxhaf5Efnj9cT2NCgH1bblVKlU2VhW2oYOBn3nLdUYFb1IHVgdaB14HYgdmB2oHbgdyB3YHegd+B4IHhgeKB5IHlgeaB6IHpgeuB7oHvgfCB8YHygfWB9oH3gfiB+YH6gf2B/4EDggeCCIIJggqCC4IOgg+CEYITghWCFoIXghiCGYIagh2CIIIkgiWCJoIngimCLoIygjqCPII9gj+CQIJBgkKCQ4JFgkaCSIJKgkyCTYJOglCCUYJSglOCVIJVglaCV4JZgluCXIJdgl6CYIJhgmKCY4JkgmWCZoJngmmC52LebFtybWKulL1+E4FTbZxRBF90WapSEmBzWZZmUIafdSpj5mHvfPqL5lQnayWetGvVhVVUdlCkbGpVtI0schVeFWA2dM1ikmNMcphfQ24+bQBlWG/YdtB4/HZUdSRS21NTTp5ewWUqgNaAm2KGVChSrnCNiNGN4Wx4VNqA+Vf0iFSNapZNkWlPm2y3VcZ2MHioYvlwjm9tX+yE2mh8ePd7qIELZ0+eZ2OweG9XEng5l3liq2KIUjV012tqgmuCbIJtgnGCdYJ2gneCeIJ7gnyCgIKBgoOChYKGgoeCiYKMgpCCk4KUgpWCloKagpuCnoKggqKCo4KngrKCtYK2grqCu4K8gr+CwILCgsOCxYLGgsmC0ILWgtmC2oLdguKC54LogumC6oLsgu2C7oLwgvKC84L1gvaC+IL6gvyC/YL+gv+CAIMKgwuDDYMQgxKDE4MWgxiDGYMdgx6DH4MggyGDIoMjgySDJYMmgymDKoMugzCDMoM3gzuDPYNkVT6BsnWudjlT3nX7UEFcbIvHe09QR3KXmtiYAm/idGh5h2Sld/xikZgrjcFUWIBSTmpX+YINhHNe7VH2dMSLT1xhV/xsh5hGWjR4RJvrj5V8VlJRYvqUxk6Gg2GE6YOyhNRXNGcDV25mZm0xjN1mEXAfZzprFmgaYrtZA07EUQZv0mePbHZRy2hHWWdrZnUOXRCBUJ/XZUh5QXmRmneNglxeTgFPL1RRWQx4aFYUbMSPA199bONsq4uQYz6DP4NBg0KDRINFg0iDSoNLg0yDTYNOg1ODVYNWg1eDWINZg12DYoNwg3GDcoNzg3SDdYN2g3mDeoN+g3+DgIOBg4KDg4OEg4eDiIOKg4uDjIONg4+DkIORg5SDlYOWg5eDmYOag52Dn4Ohg6KDo4Okg6WDpoOng6yDrYOug6+DtYO7g76Dv4PCg8ODxIPGg8iDyYPLg82DzoPQg9GD0oPTg9WD14PZg9qD24Peg+KD44Pkg+aD54Pog+uD7IPtg3BgPW11cmZijpTFlENTwY9+e99OJox+TtSesZSzlE1SXG9jkEVtNIwRWExdIGtJa6pnW1RUgYx/mVg3hTpfomJHajmVcmWEYGVop3dUTqhP512Yl6xk2H/tXM9PjXoHUgSDFE4vYIN6ppS1T7JO5nk0dORSuYLSZL153VuBbFKXe48ibD5Qf1MFbs5kdGYwbMVgd5j3i4ZePHR3est5GE6xkAN0QmzaVkuRxWyLjTpTxobyZq+OSFxxmiBu7oPvg/OD9IP1g/aD94P6g/uD/IP+g/+DAIQChAWEB4QIhAmECoQQhBKEE4QUhBWEFoQXhBmEGoQbhB6EH4QghCGEIoQjhCmEKoQrhCyELYQuhC+EMIQyhDOENIQ1hDaEN4Q5hDqEO4Q+hD+EQIRBhEKEQ4REhEWER4RIhEmESoRLhEyETYROhE+EUIRShFOEVIRVhFaEWIRdhF6EX4RghGKEZIRlhGaEZ4RohGqEboRvhHCEcoR0hHeEeYR7hHyE1lM2Woufo427UwhXp5hDZ5uRyWxoUcp182KscjhSnVI6f5RwOHZ0U0qet2lueMCW2YikfzZxw3GJUdNn5HTkWBhlt1api3aZcGLVfvlg7XDsWMFOuk7NX+eX+06kiwNSilmrflRizU7lZQ5iOIPJhGODjYeUcbZuuVvSfpdRyWPUZ4mAOYMViBJReluCWbGPc05dbGVRJYlvjy6WSoVedBCV8JWmbeWCMV+SZBJtKIRugcOcXlhbjQlOwVN9hH6Ef4SAhIGEg4SEhIWEhoSKhI2Ej4SQhJGEkoSThJSElYSWhJiEmoSbhJ2EnoSfhKCEooSjhKSEpYSmhKeEqISphKqEq4SshK2EroSwhLGEs4S1hLaEt4S7hLyEvoTAhMKEw4TFhMaEx4TIhMuEzITOhM+E0oTUhNWE14TYhNmE2oTbhNyE3oThhOKE5ITnhOiE6YTqhOuE7YTuhO+E8YTyhPOE9IT1hPaE94T4hPmE+oT7hP2E/oQAhQGFAoUeT2NlUWjTVSdOFGSammtiwlpfdHKCqW3uaOdQjoMCeEBnOVKZbLF+u1BlVV5xW3tSZspz64JJZ3FcIFJ9cWuI6pVVlsVkYY2zgYRVVWxHYi5/klgkT0ZVT41MZgpOGlzziKJoTmMNeudwjYL6UvaXEVzoVLWQzX5iWUqNx4YMgg2CZo1EZARcUWGJbT55vos3eDN1e1Q4T6uO8W0gWsV+XnmIbKFbdloadb6ATmEXbvBYH3UldXJyR1PzfgOFBIUFhQaFB4UIhQmFCoULhQ2FDoUPhRCFEoUUhRWFFoUYhRmFG4UchR2FHoUghSKFI4UkhSWFJoUnhSiFKYUqhS2FLoUvhTCFMYUyhTOFNIU1hTaFPoU/hUCFQYVChUSFRYVGhUeFS4VMhU2FToVPhVCFUYVShVOFVIVVhVeFWIVahVuFXIVdhV+FYIVhhWKFY4VlhWaFZ4VphWqFa4VshW2FboVvhXCFcYVzhXWFdoV3hXiFfIV9hX+FgIWBhQF323ZpUtyAI1cIXjFZ7nK9ZX9u14s4XHGGQVPzd/5i9mXATt+YgIaeW8aL8lPid39PTlx2mstZD186eetYFk7/Z4tO7WKTih2Qv1IvZtxVbFYCkNVOjU/KkXCZD2wCXkNgpFvGidWLNmVLYpaZiFv/W4hjLlXXUyZ2fVEshaJns2iKa5Jik4/UUxKC0W2PdWZOTo1wW59xr4WRZtlmcn8Ah82eIJ9eXC9n8I8RaF9nDWLWeoVYtl5wZTFvgoWDhYaFiIWJhYqFi4WMhY2FjoWQhZGFkoWThZSFlYWWhZeFmIWZhZqFnYWehZ+FoIWhhaKFo4WlhaaFp4WphauFrIWthbGFsoWzhbSFtYW2hbiFuoW7hbyFvYW+hb+FwIXChcOFxIXFhcaFx4XIhcqFy4XMhc2FzoXRhdKF1IXWhdeF2IXZhdqF24Xdhd6F34XgheGF4oXjheWF5oXnheiF6oXrheyF7YXuhe+F8IXxhfKF84X0hfWF9oX3hfiFVWA3Ug2AVGRwiCl1BV4TaPRiHJfMUz1yAYw0bGF3DnouVKx3epgcgvSLVXgUZ8Fwr2WVZDZWHWDBefhTHU57a4aA+lvjVdtWOk88T3KZ811+ZziAAmCCmAGQi1u8i/WLHGRYgt5k/VXPgmWR108gfR+Qn3zzUFFYr26/W8mLg4B4kZyEl3t9houWj5blftOajniBXFd6QpCnll95WVtfYwt70YStaAZVKX8QdCJ9AZVAYkxY1k6DW3lZVFj5hfqF/IX9hf6FAIYBhgKGA4YEhgaGB4YIhgmGCoYLhgyGDYYOhg+GEIYShhOGFIYVhheGGIYZhhqGG4Ychh2GHoYfhiCGIYYihiOGJIYlhiaGKIYqhiuGLIYthi6GL4YwhjGGMoYzhjSGNYY2hjeGOYY6hjuGPYY+hj+GQIZBhkKGQ4ZEhkWGRoZHhkiGSYZKhkuGTIZShlOGVYZWhleGWIZZhluGXIZdhl+GYIZhhmOGZIZlhmaGZ4ZohmmGaoZtcx5jS44Pjs6A1IKsYvBT8GxekSpZAWBwbE1XSmQqjSt26W5bV4Bq8HVtby2MCIxmV+9rkoizeKJj+VOtcGRsWFgqZAJY4GibgRBV1nwYULqOzG2fjetwj2ObbdRu5n4EhENoA5DYbXaWqItXWXly5IV+gbx1ioqvaFRSIo4RldBjmJhEjnxVU0//Zo9W1WCVbUNSSVwpWftta1gwdRx1bGAUgkaBEWNhZ+KPOnfzjTSNwZQWXoVTLFTDcG2Gb4ZwhnKGc4Z0hnWGdoZ3hniGg4aEhoWGhoaHhoiGiYaOho+GkIaRhpKGlIaWhpeGmIaZhpqGm4aehp+GoIahhqKGpYamhquGrYauhrKGs4a3hriGuYa7hryGvYa+hr+GwYbChsOGxYbIhsyGzYbShtOG1YbWhteG2obcht2G4IbhhuKG44blhuaG54bohuqG64bshu+G9Yb2hveG+ob7hvyG/Yb/hgGHBIcFhwaHC4cMhw6HD4cQhxGHFIcWh0Bs915cUK1OrV46Y0eCGpBQaG6Rs3cMVNyUZF/lenZoRWNSe99+23V3UJViNFkPkPhRw3mBev5Wkl8UkIJtYFwfVxBUVFFNbuJWqGOTmH+BFYcqiQCQHlRvXMCB1mJYYjGBNZ5Alm6afJotaaVZ02I+VRZjx1TZhjxtA1rmdJyIamsWWUyML19+bqlzfZg4TvdwjFuXeD1jWmaWdstgm1tJWgdOVYFqbItzoU6JZ1F/gF/6ZRtn2F+EWQFaGYcbhx2HH4cghySHJocnhyiHKocrhyyHLYcvhzCHMoczhzWHNoc4hzmHOoc8hz2HQIdBh0KHQ4dEh0WHRodKh0uHTYdPh1CHUYdSh1SHVYdWh1iHWodbh1yHXYdeh1+HYYdih2aHZ4doh2mHaodrh2yHbYdvh3GHcodzh3WHd4d4h3mHeod/h4CHgYeEh4aHh4eJh4qHjIeOh4+HkIeRh5KHlIeVh5aHmIeZh5qHm4ech52Hnoegh6GHooejh6SHzV2uX3FT5pfdj0Vo9FYvVd9gOk5Nb/R+x4IOhNRZH08qTz5crH4qZxqFc1RPdcOAglVPm01PLW4TjAlccGFrUx92KW6Khodl+5W5fjtUM3oKfe6V4VXBf+50HWMXh6FtnXoRYqFlZ1PhY4Ns611cVKiUTE5hbOyLS1zgZZyCp2g+VDRUy2tma5ROQmNIUx6CDU+uT15XCmL+lmRmaXL/UqFSn2DvixRmmXGQZ3+JUnj9d3BmO1Y4VCGVenKlh6aHp4eph6qHroewh7GHsoe0h7aHt4e4h7mHu4e8h76Hv4fBh8KHw4fEh8WHx4fIh8mHzIfNh86Hz4fQh9SH1YfWh9eH2IfZh9qH3Ifdh96H34fhh+KH44fkh+aH54foh+mH64fsh+2H74fwh/GH8ofzh/SH9Yf2h/eH+If6h/uH/If9h/+HAIgBiAKIBIgFiAaIB4gIiAmIC4gMiA2IDogPiBCIEYgSiBSIF4gYiBmIGogciB2IHogfiCCII4gAem9gDF6JYJ2BFVncYIRx73CqblBsgHKEaq2ILV5gTrNanFXjlBdt+3yZlg9ixn6Od36GI1Mel5aPh2bhXKBP7XILTqZTD1kTVIBjKJVIUdlOnJykfrhUJI1UiDeC8pWObSZfzFo+ZmmWsHMuc79TeoGFmaF/qlt3llCWv374dqJTdpWZmbF7RIlYbmFO1H9leeaL82DNVKtOeZj3XWFqz1ARVGGMJ4RdeASXSlLuVKNWAJWIbbVbxm1TZiSIJYgmiCeIKIgpiCqIK4gsiC2ILogviDCIMYgziDSINYg2iDeIOIg6iDuIPYg+iD+IQYhCiEOIRohHiEiISYhKiEuITohPiFCIUYhSiFOIVYhWiFiIWohbiFyIXYheiF+IYIhmiGeIaohtiG+IcYhziHSIdYh2iHiIeYh6iHuIfIiAiIOIhoiHiImIioiMiI6Ij4iQiJGIk4iUiJWIl4iYiJmImoibiJ2InoifiKCIoYijiKWIpoiniKiIqYiqiA9cXVshaJaAeFURe0hlVGmbTkdrToeLl09TH2M6ZKqQnGXBgBCMmVGwaHhT+YfIYcRs+2wijFFcqoWvggyVI2ubj7Bl+1/DX+FPRYgfZmWBKXP6YHRREVKLV2JfopBMiJKReF5PZydg01lEUfZR+IAIU3lsxJaKcRFP7k+efz1nxVUIlcB5lojjfp9YDGIAl1qGGFZ7mJBfuIvEhFeR2VPtZY9eXHVkYG59f1rqfu1+aY+nVaNbrGDLZYRzrIiuiK+IsIiyiLOItIi1iLaIuIi5iLqIu4i9iL6Iv4jAiMOIxIjHiMiIyojLiMyIzYjPiNCI0YjTiNaI14jaiNuI3IjdiN6I4IjhiOaI54jpiOqI64jsiO2I7ojviPKI9Yj2iPeI+oj7iP2I/4gAiQGJA4kEiQWJBokHiQiJCYkLiQyJDYkOiQ+JEYkUiRWJFokXiRiJHIkdiR6JH4kgiSKJI4kkiSaJJ4koiSmJLIktiS6JL4kxiTKJM4k1iTeJCZBjdil32n50l5uFZlt0euqWQIjLUo9xql/sZeKL+1tvmuFdiWtbbK2Lr4sKkMWPi1O8YiaeLZ5AVCtOvYJZcpyGFl1ZiK9txZbRVJpOtosJcb1UCZbfcPlt0HYlThR4EoepXPZeAIqcmA6WjnC/bERZqWM8d02IFG9zgjBY1XGMUxp4wZYBVWZfMHG0WxqMjJqDay5ZL57neWhnbGJvT6F1in8LbTOWJ2zwTtJ1e1E3aD5vgJBwgZZZdnQ4iTmJOok7iTyJPYk+iT+JQIlCiUOJRYlGiUeJSIlJiUqJS4lMiU2JTolPiVCJUYlSiVOJVIlViVaJV4lYiVmJWolbiVyJXYlgiWGJYoljiWSJZYlniWiJaYlqiWuJbIltiW6Jb4lwiXGJcolziXSJdYl2iXeJeIl5iXqJfIl9iX6JgImCiYSJhYmHiYiJiYmKiYuJjImNiY6Jj4mQiZGJkomTiZSJlYmWiZeJmImZiZqJm4mciZ2JnomfiaCJoYlHZCdcZZCReiOM2lmsVACCb4OBiQCAMGlOVjaAN3LOkbZRX051mJZjGk72U/NmS4EcWbJtAE75WDtT1mPxlJ1PCk9jiJCYN1lXkPt56k7wgJF1gmycW+hZXV8FaYGGGlDyXVlO43flTnqCkWITZpGQeVy/TnlfxoE4kISAq3WmTtSID2HFa8ZfSU7KdqJu44uuiwqM0YsCX/x/zH/OfjWDa4PgVrdr85c0lvtZH1T2lOttxVtumTlcFV+QlqKJo4mkiaWJpomniaiJqYmqiauJrImtia6Jr4mwibGJsomzibSJtYm2ibeJuIm5ibqJu4m8ib2Jvom/icCJw4nNidOJ1InVideJ2InZiduJ3YnfieCJ4YniieSJ54noiemJ6onsie2J7onwifGJ8on0ifWJ9on3ifiJ+Yn6ifuJ/In9if6J/4kBigKKA4oEigWKBooIigmKCooLigyKDYoOig+KEIoRihKKE4oUihWKFooXihiKGYoaihuKHIodinBT8YIxanRacJ6UXih/uYMkhCWEZ4NHh86PYo3IdnFflphseCBm31TlYmNPw4HIdbhezZYKjvmGj1TzbIxtOGx/YMdSKHV9XhhPoGDnXyRcMXWukMCUuXK5bDhuSZEJZ8tT81NRT8mR8YvIU3xewo/kbY5OwnaGaV6GGmEGgllP3k8+kHycCWEdbhRuhZaITjFa6JYOTn9cuXmHW+2LvX+Jc99Xi4LBkAFUR5C7VepcoV8IYTJr8XKygImKHoofiiCKIYoiiiOKJIoliiaKJ4ooiimKKooriiyKLYouii+KMIoxijKKM4o0ijWKNoo3ijiKOYo6ijuKPIo9ij+KQIpBikKKQ4pEikWKRopHikmKSopLikyKTYpOik+KUIpRilKKU4pUilWKVopXiliKWYpailuKXIpdil6KX4pgimGKYopjimSKZYpmimeKaIppimqKa4psim2KbopvinCKcYpyinOKdIp1inaKd4p4inqKe4p8in2Kfop/ioCKdG3TW9WIhJhrjG2aM54KbqRRQ1GjV4GIn1P0Y5WP7VZYVAZXP3OQbhh/3I/Rgj9hKGBilvBmpn6KjcONpZSzXKR8CGemYAWWGICRTueQAFNolkFR0I90hV2RVWb1l1VbHVM4eEJnPWjJVH5wsFt9j41RKFexVBJlgmZejUOND4FshG2Q33z/UfuFo2fpZaFvpIaBjmpWIJCCdnZw5XEjjeliGVL9bDyNDmCeWI5h/mZgjU5is1Ujbi1nZ4+BioKKg4qEioWKhoqHioiKi4qMio2KjoqPipCKkYqSipSKlYqWipeKmIqZipqKm4qcip2KnoqfiqCKoYqiiqOKpIqliqaKp4qoiqmKqoqriqyKrYquiq+KsIqxirKKs4q0irWKtoq3iriKuYq6iruKvIq9ir6Kv4rAisGKworDisSKxYrGiseKyIrJisqKy4rMis2KzorPitCK0YrSitOK1IrVitaK14rYitmK2orbityK3Yreit+K4IrhiuKK44rhlPiVKHcFaKhpi1RNTrhwyItYZItlhVuEejpQ6Fu7d+FreYqYfL5sz3apZZePLV1VXDiGCGhgUxhi2Xpbbv1+H2rgenBfM28gX4xjqG1WZwhOEF4mjddOwIA0dpyW22ItZn5ivGx1jWdxaX9GUYeA7FNukJhi8lTwhpmPBYAXlReF2Y9Zbc1zn2UfdwR1J3j7gR6NiJSmT5VnuXXKiweXL2NHlTWWuIQjY0F3gV/wcolOFGB0Ze9iY2s/ZeSK5YrmiueK6IrpiuqK64rsiu2K7orvivCK8YryivOK9Ir1ivaK94r4ivmK+or7ivyK/Yr+iv+KAIsBiwKLA4sEiwWLBosIiwmLCosLiwyLDYsOiw+LEIsRixKLE4sUixWLFosXixiLGYsaixuLHIsdix6LH4sgiyGLIosjiySLJYsniyiLKYsqiyuLLIstiy6LL4swizGLMoszizSLNYs2izeLOIs5izqLO4s8iz2LPos/i0CLQYtCi0OLRItFiydex3XRkMGLnYKdZy9lMVQYh+V3ooACgUFsS07HfkyA9HYNaZZrZ2I8UIRPQFcHY2Jrvo3qU+hluH7XXxpjt2PzgfSBbn8cXtlcNlJ6Zul5GnoojZlw1HXebrtsknotTsV24F+flHeIyH7Neb+AzZHyThdPH4JoVN5dMm3Mi6V8dI+YgBpeklSxdplbPGakmuBzKmjbhjFnKnP4i9uLEJD5ettwbnHEYql3MVY7TleE8WepUsCGLo34lFF7RotHi0iLSYtKi0uLTItNi06LT4tQi1GLUotTi1SLVYtWi1eLWItZi1qLW4tci12LXotfi2CLYYtii2OLZItli2eLaItpi2qLa4tti26Lb4twi3GLcotzi3SLdYt2i3eLeIt5i3qLe4t8i32Lfot/i4CLgYuCi4OLhIuFi4aLh4uIi4mLiouLi4yLjYuOi4+LkIuRi5KLk4uUi5WLlouXi5iLmYuai5uLnIudi56Ln4usi7GLu4vHi9CL6osJjB6MT0/obF15e5qTYipy/WITThZ4bI+wZFqNxntpaIRexYiGWZ5k7li2cg5pJZX9j1iNYFcAfwaMxlFJY9liU1NMaCJ0AYNMkURVQHd8cEpteVGoVESN/1nLbsRtXFsrfdROfXzTblBb6oENbldbA5vVaCqOl1v8fjtgtX65kHCNT1nNY995s41SU89lVnnFizuWxH67lIJ+NFaJkQBnan8KXHWQKGbmXVBP3mdaUFxPUFenXhDoEegS6BPoFOg4jDmMOow7jDyMPYw+jD+MQIxCjEOMRIxFjEiMSoxLjE2MToxPjFCMUYxSjFOMVIxWjFeMWIxZjFuMXIxdjF6MX4xgjGOMZIxljGaMZ4xojGmMbIxtjG6Mb4xwjHGMcox0jHWMdox3jHuMfIx9jH6Mf4yAjIGMg4yEjIaMh4yIjIuMjYyOjI+MkIyRjJKMk4yVjJaMl4yZjJqMm4ycjJ2MnoyfjKCMoYyijKOMpIyljKaMp4yojKmMqoyrjKyMrYyNTgxOQFEQTv9eRVMVTphOHk4ym2xbaVYoTrp5P04VU0dOLVk7cm5TEGzfVuSAl5nTa353F582Tp9OEJ9cTmlOk06IgltbbFUPVsROjVOdU6NTpVOuU2WXXY0aU/VTJlMuUz5TXI1mU2NTAlIIUg5SLVIzUj9SQFJMUl5SYVJcUq+EfVKCUoFSkFKTUoJRVH+7TsNOyU7CTuhO4U7rTt5OG0/zTiJPZE/1TiVPJ08JTytPXk9nTzhlWk9dT66Mr4ywjLGMsoyzjLSMtYy2jLeMuIy5jLqMu4y8jL2Mvoy/jMCMwYzCjMOMxIzFjMaMx4zIjMmMyozLjMyMzYzOjM+M0IzRjNKM04zUjNWM1ozXjNiM2YzajNuM3IzdjN6M34zgjOGM4ozjjOSM5YzmjOeM6IzpjOqM64zsjO2M7ozvjPCM8YzyjPOM9Iz1jPaM94z4jPmM+oz7jPyM/Yz+jP+MAI0BjQKNA40EjQWNBo0HjQiNCY0KjQuNDI0NjV9PV08yTz1Pdk90T5FPiU+DT49Pfk97T6pPfE+sT5RP5k/oT+pPxU/aT+NP3E/RT99P+E8pUExQ808sUA9QLlAtUP5PHFAMUCVQKFB+UENQVVBIUE5QbFB7UKVQp1CpULpQ1lAGUe1Q7FDmUO5QB1ELUd1OPWxYT2VPzk+gn0ZsdHxuUf1dyZ6YmYFRFFn5Ug1TB4oQU+tRGVlVUaBOVlGzTm6IpIi1ThSB0oiAeTRbA4i4f6tRsVG9UbxRDo0PjRCNEY0SjRONFI0VjRaNF40YjRmNGo0bjRyNII1RjVKNV41fjWWNaI1pjWqNbI1ujW+NcY1yjXiNeY16jXuNfI19jX6Nf42AjYKNg42GjYeNiI2JjYyNjY2OjY+NkI2SjZONlY2WjZeNmI2ZjZqNm42cjZ2Nno2gjaGNoo2kjaWNpo2njaiNqY2qjauNrI2tja6Nr42wjbKNto23jbmNu429jcCNwY3CjcWNx43IjcmNyo3NjdCN0o3TjdSNx1GWUaJRpVGgi6aLp4uqi7SLtYu3i8KLw4vLi8+LzovSi9OL1IvWi9iL2Yvci9+L4Ivki+iL6Yvui/CL84v2i/mL/Iv/iwCMAowEjAeMDIwPjBGMEowUjBWMFowZjBuMGIwdjB+MIIwhjCWMJ4wqjCuMLowvjDKMM4w1jDaMaVN6Ux2WIpYhljGWKpY9ljyWQpZJllSWX5ZnlmyWcpZ0loiWjZaXlrCWl5CbkJ2QmZCskKGQtJCzkLaQupDVjdiN2Y3cjeCN4Y3ijeWN5o3njemN7Y3ujfCN8Y3yjfSN9o38jf6N/40AjgGOAo4DjgSOBo4HjgiOC44Njg6OEI4RjhKOE44VjhaOF44YjhmOGo4bjhyOII4hjiSOJY4mjieOKI4rji2OMI4yjjOONI42jjeOOI47jjyOPo4/jkOORY5GjkyOTY5Ojk+OUI5TjlSOVY5WjleOWI5ajluOXI5djl6OX45gjmGOYo5jjmSOZY5njmiOao5rjm6OcY64kLCQz5DFkL6Q0JDEkMeQ05DmkOKQ3JDXkNuQ65DvkP6QBJEikR6RI5ExkS+ROZFDkUaRDVJCWaJSrFKtUr5S/1TQUtZS8FLfU+5xzXf0XvVR/FEvm7ZTAV9ade9dTFepV6FXfli8WMVY0VgpVyxXKlczVzlXLlcvV1xXO1dCV2lXhVdrV4ZXfFd7V2hXbVd2V3NXrVekV4xXslfPV6dXtFeTV6BX1VfYV9pX2VfSV7hX9FfvV/hX5FfdV3OOdY53jniOeY56jnuOfY5+joCOgo6DjoSOho6IjomOio6LjoyOjY6OjpGOko6TjpWOlo6XjpiOmY6ajpuOnY6fjqCOoY6ijqOOpI6ljqaOp46ojqmOqo6tjq6OsI6xjrOOtI61jraOt464jrmOu468jr2Ovo6/jsCOwY7CjsOOxI7FjsaOx47IjsmOyo7LjsyOzY7PjtCO0Y7SjtOO1I7VjtaO147YjtmO2o7bjtyO3Y7ejt+O4I7hjuKO447kjgtYDVj9V+1XAFgeWBlYRFggWGVYbFiBWIlYmliAWKiZGZ//YXmCfYJ/go+CioKogoSCjoKRgpeCmYKrgriCvoKwgsiCyoLjgpiCt4KugsuCzILBgqmCtIKhgqqCn4LEgs6CpILhggmD94Lkgg+DB4PcgvSC0oLYggyD+4LTghGDGoMGgxSDFYPggtWCHINRg1uDXIMIg5KDPIM0gzGDm4Negy+DT4NHg0ODX4NAgxeDYIMtgzqDM4Nmg2WD5Y7mjueO6I7pjuqO647sju2O7o7vjvCO8Y7yjvOO9I71jvaO9474jvmO+o77jvyO/Y7+jv+OAI8BjwKPA48EjwWPBo8HjwiPCY8KjwuPDI8Njw6PD48QjxGPEo8TjxSPFY8WjxePGI8ZjxqPG48cjx2PHo8fjyCPIY8ijyOPJI8ljyaPJ48ojymPKo8rjyyPLY8ujy+PMI8xjzKPM480jzWPNo83jziPOY86jzuPPI89jz6PP49Aj0GPQo9Dj0SPaIMbg2mDbINqg22DboOwg3iDs4O0g6CDqoOTg5yDhYN8g7aDqYN9g7iDe4OYg56DqIO6g7yDwYMBhOWD2IMHWBiEC4Tdg/2D1oMchDiEEYQGhNSD34MPhAOE+IP5g+qDxYPAgyaE8IPhg1yEUYRahFmEc4SHhIiEeoSJhHiEPIRGhGmEdoSMhI6EMYRthMGEzYTQhOaEvYTThMqEv4S6hOCEoYS5hLSEl4TlhOOEDIUNdTiF8IQ5hR+FOoVFj0aPR49Ij0mPSo9Lj0yPTY9Oj0+PUI9Rj1KPU49Uj1WPVo9Xj1iPWY9aj1uPXI9dj16PX49gj2GPYo9jj2SPZY9qj4CPjI+Sj52PoI+hj6KPpI+lj6aPp4+qj6yPrY+uj6+Pso+zj7SPtY+3j7iPuo+7j7yPv4/Aj8OPxo/Jj8qPy4/Mj82Pz4/Sj9aP14/aj+CP4Y/jj+eP7I/vj/GP8o/0j/WP9o/6j/uP/I/+j/+PB5AIkAyQDpATkBWQGJBWhTuF/4T8hFmFSIVohWSFXoV6haJ3Q4VyhXuFpIWohYeFj4V5ha6FnIWFhbmFt4WwhdOFwYXchf+FJ4YFhimGFoY8hv5eCF88WUFZN4BVWVpZWFkPUyJcJVwsXDRcTGJqYp9iu2LKYtpi12LuYiJj9mI5Y0tjQ2OtY/ZjcWN6Y45jtGNtY6xjimNpY65jvGPyY/hj4GP/Y8Rj3mPOY1JkxmO+Y0VkQWQLZBtkIGQMZCZkIWReZIRkbWSWZBmQHJAjkCSQJZAnkCiQKZAqkCuQLJAwkDGQMpAzkDSQN5A5kDqQPZA/kECQQ5BFkEaQSJBJkEqQS5BMkE6QVJBVkFaQWZBakFyQXZBekF+QYJBhkGSQZpBnkGmQapBrkGyQb5BwkHGQcpBzkHaQd5B4kHmQepB7kHyQfpCBkISQhZCGkIeQiZCKkIyQjZCOkI+QkJCSkJSQlpCYkJqQnJCekJ+QoJCkkKWQp5CokKmQq5CtkLKQt5C8kL2Qv5DAkHpkt2S4ZJlkumTAZNBk12TkZOJkCWUlZS5lC1/SXxl1EV9fU/FT/VPpU+hT+1MSVBZUBlRLVFJUU1RUVFZUQ1QhVFdUWVQjVDJUglSUVHdUcVRkVJpUm1SEVHZUZlSdVNBUrVTCVLRU0lSnVKZU01TUVHJUo1TVVLtUv1TMVNlU2lTcVKlUqlSkVN1Uz1TeVBtV51QgVf1UFFXzVCJVI1UPVRFVJ1UqVWdVj1W1VUlVbVVBVVVVP1VQVTxVwpDDkMaQyJDJkMuQzJDNkNKQ1JDVkNaQ2JDZkNqQ3pDfkOCQ45DkkOWQ6ZDqkOyQ7pDwkPGQ8pDzkPWQ9pD3kPmQ+pD7kPyQ/5AAkQGRA5EFkQaRB5EIkQmRCpELkQyRDZEOkQ+REJERkRKRE5EUkRWRFpEXkRiRGpEbkRyRHZEfkSCRIZEkkSWRJpEnkSiRKZEqkSuRLJEtkS6RMJEykTORNJE1kTaRN5E4kTqRO5E8kT2RPpE/kUCRQZFCkUSRN1VWVXVVdlV3VTNVMFVcVYtV0lWDVbFVuVWIVYFVn1V+VdZVkVV7Vd9VvVW+VZRVmVXqVfdVyVUfVtFV61XsVdRV5lXdVcRV71XlVfJV81XMVc1V6FX1VeRVlI8eVghWDFYBViRWI1b+VQBWJ1YtVlhWOVZXVixWTVZiVllWXFZMVlRWhlZkVnFWa1Z7VnxWhVaTVq9W1FbXVt1W4Vb1VutW+Vb/VgRXClcJVxxXD14ZXhReEV4xXjtePF5FkUeRSJFRkVORVJFVkVaRWJFZkVuRXJFfkWCRZpFnkWiRa5FtkXORepF7kXyRgJGBkYKRg5GEkYaRiJGKkY6Rj5GTkZSRlZGWkZeRmJGZkZyRnZGekZ+RoJGhkaSRpZGmkaeRqJGpkauRrJGwkbGRspGzkbaRt5G4kbmRu5G8kb2RvpG/kcCRwZHCkcORxJHFkcaRyJHLkdCR0pHTkdSR1ZHWkdeR2JHZkdqR25Hdkd6R35HgkeGR4pHjkeSR5ZE3XkReVF5bXl5eYV6MXHpcjVyQXJZciFyYXJlckVyaXJxctVyiXL1crFyrXLFco1zBXLdcxFzSXORcy1zlXAJdA10nXSZdLl0kXR5dBl0bXVhdPl00XT1dbF1bXW9dXV1rXUtdSl1pXXRdgl2ZXZ1dc4y3XcVdc193X4Jfh1+JX4xflV+ZX5xfqF+tX7VfvF9iiGFfrXKwcrRyt3K4csNywXLOcs1y0nLocu9y6XLycvRy93IBc/NyA3P6cuaR55HokemR6pHrkeyR7ZHuke+R8JHxkfKR85H0kfWR9pH3kfiR+ZH6kfuR/JH9kf6R/5EAkgGSApIDkgSSBZIGkgeSCJIJkgqSC5IMkg2SDpIPkhCSEZISkhOSFJIVkhaSF5IYkhmSGpIbkhySHZIekh+SIJIhkiKSI5IkkiWSJpInkiiSKZIqkiuSLJItki6SL5IwkjGSMpIzkjSSNZI2kjeSOJI5kjqSO5I8kj2SPpI/kkCSQZJCkkOSRJJFkvtyF3MTcyFzCnMecx1zFXMiczlzJXMsczhzMXNQc01zV3Ngc2xzb3N+cxuCJVnnmCRZAlljmWeZaJlpmWqZa5lsmXSZd5l9mYCZhJmHmYqZjZmQmZGZk5mUmZWZgF6RXotell6lXqBeuV61Xr5es15TjdJe0V7bXuhe6l66gcRfyV/WX89fA2DuXwRg4V/kX/5fBWAGYOpf7V/4XxlgNWAmYBtgD2ANYClgK2AKYD9gIWB4YHlge2B6YEJgRpJHkkiSSZJKkkuSTJJNkk6ST5JQklGSUpJTklSSVZJWkleSWJJZklqSW5Jckl2SXpJfkmCSYZJikmOSZJJlkmaSZ5JokmmSapJrkmySbZJukm+ScJJxknKSc5J1knaSd5J4knmSepJ7knySfZJ+kn+SgJKBkoKSg5KEkoWShpKHkoiSiZKKkouSjJKNko+SkJKRkpKSk5KUkpWSlpKXkpiSmZKakpuSnJKdkp6Sn5KgkqGSopKjkqSSpZKmkqeSamB9YJZgmmCtYJ1gg2CSYIxgm2DsYLtgsWDdYNhgxmDaYLRgIGEmYRVhI2H0YABhDmErYUphdWGsYZRhp2G3YdRh9WHdX7OW6ZXrlfGV85X1lfaV/JX+lQOWBJYGlgiWCpYLlgyWDZYPlhKWFZYWlheWGZYalixOP3IVYjVsVGxcbEpso2yFbJBslGyMbGhsaWx0bHZshmypbNBs1GytbPds+GzxbNdssmzgbNZs+mzrbO5ssWzTbO9s/myokqmSqpKrkqySrZKvkrCSsZKykrOStJK1kraSt5K4krmSupK7krySvZK+kr+SwJLBksKSw5LEksWSxpLHksmSypLLksySzZLOks+S0JLRktKS05LUktWS1pLXktiS2ZLaktuS3JLdkt6S35LgkuGS4pLjkuSS5ZLmkueS6JLpkuqS65Lsku2S7pLvkvCS8ZLykvOS9JL1kvaS95L4kvmS+pL7kvyS/ZL+kv+SAJMBkwKTA5MEkwWTBpMHkwiTCZM5bSdtDG1DbUhtB20EbRltDm0rbU1tLm01bRptT21SbVRtM22RbW9tnm2gbV5tk22UbVxtYG18bWNtGm7HbcVt3m0Obr9t4G0RbuZt3W3ZbRZuq20Mbq5tK25ubk5ua26ybl9uhm5TblRuMm4lbkRu326xbphu4G4tb+JupW6nbr1uu263btdutG7Pbo9uwm6fbmJvRm9HbyRvFW/5bi9vNm9Lb3RvKm8JbylviW+Nb4xveG9yb3xvem/RbwqTC5MMkw2TDpMPkxCTEZMSkxOTFJMVkxaTF5MYkxmTGpMbkxyTHZMekx+TIJMhkyKTI5MkkyWTJpMnkyiTKZMqkyuTLJMtky6TL5MwkzGTMpMzkzSTNZM2kzeTOJM5kzqTO5M8kz2TP5NAk0GTQpNDk0STRZNGk0eTSJNJk0qTS5NMk02TTpNPk1CTUZNSk1OTVJNVk1aTV5NYk1mTWpNbk1yTXZNek1+TYJNhk2KTY5Nkk2WTZpNnk2iTaZNrk8lvp2+5b7Zvwm/hb+5v3m/gb+9vGnAjcBtwOXA1cE9wXnCAW4RblVuTW6VbuFsvdZ6aNGTkW+5bMInwW0eOB4u2j9OP1Y/lj+6P5I/pj+aP84/ojwWQBJALkCaQEZANkBaQIZA1kDaQLZAvkESQUZBSkFCQaJBYkGKQW5C5ZnSQfZCCkIiQg5CLkFBfV19WX1hfO1yrVFBcWVxxW2NcZly8fypfKV8tX3SCPF87m25cgVmDWY1ZqVmqWaNZbJNtk26Tb5Nwk3GTcpNzk3STdZN2k3eTeJN5k3qTe5N8k32TfpN/k4CTgZOCk4OThJOFk4aTh5OIk4mTipOLk4yTjZOOk5CTkZOSk5OTlJOVk5aTl5OYk5mTmpObk5yTnZOek5+ToJOhk6KTo5Okk6WTppOnk6iTqZOqk6uTrJOtk66Tr5Owk7GTspOzk7STtZO2k7eTuJO5k7qTu5O8k72TvpO/k8CTwZPCk8OTxJPFk8aTx5PIk8mTy5PMk82Tl1nKWatZnlmkWdJZslmvWddZvlkFWgZa3VkIWuNZ2Fn5WQxaCVoyWjRaEVojWhNaQFpnWkpaVVo8WmJadVrsgKpam1p3WnpavlrrWrJa0lrUWrha4FrjWvFa1lrmWtha3FoJWxdbFlsyWzdbQFsVXBxcWltlW3NbUVtTW2JbdZp3mniaepp/mn2agJqBmoWaiJqKmpCakpqTmpaamJqbmpyanZqfmqCaopqjmqWap5qffqF+o36lfqh+qX7Ok8+T0JPRk9KT05PUk9WT15PYk9mT2pPbk9yT3ZPek9+T4JPhk+KT45Pkk+WT5pPnk+iT6ZPqk+uT7JPtk+6T75Pwk/GT8pPzk/ST9ZP2k/eT+JP5k/qT+5P8k/2T/pP/kwCUAZQClAOUBJQFlAaUB5QIlAmUCpQLlAyUDZQOlA+UEJQRlBKUE5QUlBWUFpQXlBiUGZQalBuUHJQdlB6UH5QglCGUIpQjlCSUJZQmlCeUKJQplCqUK5QslC2ULpStfrB+vn7AfsF+wn7Jfst+zH7QftR+137bfuB+4X7ofut+7n7vfvF+8n4Nf/Z++n77fv5+AX8CfwN/B38Ifwt/DH8PfxF/En8Xfxl/HH8bfx9/IX8ifyN/JH8lfyZ/J38qfyt/LH8tfy9/MH8xfzJ/M381f3pef3XbXT51lZCOc5FzrnOic59zz3PCc9Fzt3Ozc8BzyXPIc+Vz2XN8mAp06XPnc95zunPycw90KnRbdCZ0JXQodDB0LnQsdC+UMJQxlDKUM5Q0lDWUNpQ3lDiUOZQ6lDuUPJQ9lD+UQJRBlEKUQ5RElEWURpRHlEiUSZRKlEuUTJRNlE6UT5RQlFGUUpRTlFSUVZRWlFeUWJRZlFqUW5RclF2UXpRflGCUYZRilGOUZJRllGaUZ5RolGmUapRslG2UbpRvlHCUcZRylHOUdJR1lHaUd5R4lHmUepR7lHyUfZR+lH+UgJSBlIKUg5SElJGUlpSYlMeUz5TTlNSU2pTmlPuUHJUglRt0GnRBdFx0V3RVdFl0d3RtdH50nHSOdIB0gXSHdIt0nnSodKl0kHSndNJ0unTql+uX7JdMZ1NnXmdIZ2lnpWeHZ2pnc2eYZ6dndWeoZ55nrWeLZ3dnfGfwZwlo2GcKaOlnsGcMaNlntWfaZ7Nn3WcAaMNnuGfiZw5owWf9ZzJoM2hgaGFoTmhiaERoZGiDaB1oVWhmaEFoZ2hAaD5oSmhJaClotWiPaHRod2iTaGtowmhuafxoH2kgafloJ5UzlT2VQ5VIlUuVVZValWCVbpV0lXWVd5V4lXmVepV7lXyVfZV+lYCVgZWClYOVhJWFlYaVh5WIlYmVipWLlYyVjZWOlY+VkJWRlZKVk5WUlZWVlpWXlZiVmZWalZuVnJWdlZ6Vn5WglaGVopWjlaSVpZWmlaeVqJWplaqVq5Wsla2VrpWvlbCVsZWylbOVtJW1lbaVt5W4lbmVupW7lbyVvZW+lb+VwJXBlcKVw5XElcWVxpXHlciVyZXKlcuVJGnwaAtpAWlXaeNoEGlxaTlpYGlCaV1phGlraYBpmGl4aTRpzGmHaYhpzmmJaWZpY2l5aZtpp2m7aatprWnUabFpwWnKad9plWngaY1p/2kvau1pF2oYamVq8mlEaj5qoGpQaltqNWqOanlqPWooalhqfGqRapBqqWqXaqtqN3NSc4FrgmuHa4RrkmuTa41rmmuba6Frqmtrj22PcY9yj3OPdY92j3iPd495j3qPfI9+j4GPgo+Ej4ePi4/Mlc2VzpXPldCV0ZXSldOV1JXVldaV15XYldmV2pXbldyV3ZXeld+V4JXhleKV45XkleWV5pXnleyV/5UHlhOWGJYblh6WIJYjliSWJZYmlieWKJYpliuWLJYtli+WMJY3ljiWOZY6lj6WQZZDlkqWTpZPllGWUpZTllaWV5ZYllmWWpZcll2WXpZglmOWZZZmlmuWbZZulm+WcJZxlnOWeJZ5lnqWe5Z8ln2WfpZ/loCWgZaCloOWhJaHlomWipaNj46Pj4+Yj5qPzo4LYhdiG2IfYiJiIWIlYiRiLGLnge909HT/dA91EXUTdTRl7mXvZfBlCmYZZnJnA2YVZgBmhXD3Zh1mNGYxZjZmNWYGgF9mVGZBZk9mVmZhZldmd2aEZoxmp2adZr5m22bcZuZm6WYyjTONNo07jT2NQI1FjUaNSI1JjUeNTY1VjVmNx4nKicuJzInOic+J0InRiW5yn3JdcmZyb3J+cn9yhHKLco1yj3KScghjMmOwY4yWjpaRlpKWk5aVlpaWmpablp2WnpaflqCWoZailqOWpJallqaWqJaplqqWq5aslq2WrpavlrGWspa0lrWWt5a4lrqWu5a/lsKWw5bIlsqWy5bQltGW05bUltaW15bYltmW2pbbltyW3Zbelt+W4ZbiluOW5JblluaW55brluyW7ZbulvCW8ZbylvSW9Zb4lvqW+5b8lv2W/5YClwOXBZcKlwuXDJcQlxGXEpcUlxWXF5cYlxmXGpcblx2XH5cglz9k2GQEgOpr82v9a/Vr+WsFbAdsBmwNbBVsGGwZbBpsIWwpbCRsKmwybDVlVWVrZU1yUnJWcjByYoYWUp+AnICTgLyACme9gLGAq4CtgLSAt4DngOiA6YDqgNuAwoDEgNmAzYDXgBBn3YDrgPGA9IDtgA2BDoHygPyAFWcSgVqMNoEegSyBGIEygUiBTIFTgXSBWYFagXGBYIFpgXyBfYFtgWeBTVi1WoiBgoGRgdVuo4GqgcyBJmfKgbuBIZcilyOXJJcllyaXJ5colymXK5csly6XL5cxlzOXNJc1lzaXN5c6lzuXPJc9lz+XQJdBl0KXQ5dEl0WXRpdHl0iXSZdKl0uXTJdNl06XT5dQl1GXVJdVl1eXWJdal1yXXZdfl2OXZJdml2eXaJdql2uXbJdtl26Xb5dwl3GXcpd1l3eXeJd5l3qXe5d9l36Xf5eAl4GXgpeDl4SXhpeHl4iXiZeKl4yXjpePl5CXk5eVl5aXl5eZl5qXm5ecl52XwYGmgSRrN2s5a0NrRmtZa9GY0pjTmNWY2ZjamLNrQF/Ca/OJkGVRn5NlvGXGZcRlw2XMZc5l0mXWZYBwnHCWcJ1wu3DAcLdwq3CxcOhwynAQcRNxFnEvcTFxc3FccWhxRXFycUpxeHF6cZhxs3G1cahxoHHgcdRx53H5cR1yKHJscBhxZnG5cT5iPWJDYkhiSWI7eUB5RnlJeVt5XHlTeVp5YnlXeWB5b3lneXp5hXmKeZp5p3mzedFf0F+el5+XoZeil6SXpZeml6eXqJepl6qXrJeul7CXsZezl7WXtpe3l7iXuZe6l7uXvJe9l76Xv5fAl8GXwpfDl8SXxZfGl8eXyJfJl8qXy5fMl82XzpfPl9CX0ZfSl9OX1JfVl9aX15fYl9mX2pfbl9yX3Zfel9+X4Jfhl+KX45fkl+WX6Jful++X8Jfxl/KX9Jf3l/iX+Zf6l/uX/Jf9l/6X/5cAmAGYApgDmASYBZgGmAeYCJgJmAqYC5gMmA2YDpg8YF1gWmBnYEFgWWBjYKtgBmENYV1hqWGdYcth0WEGYoCAf4CTbPZs/G32d/h3AHgJeBd4GHgReKtlLXgceB14OXg6eDt4H3g8eCV4LHgjeCl4TnhteFZ4V3gmeFB4R3hMeGp4m3iTeJp4h3iceKF4o3iyeLl4pXjUeNl4yXjsePJ4BXn0eBN5JHkeeTR5m5/5nvue/J7xdgR3DXf5dgd3CHcadyJ3GXctdyZ3NXc4d1B3UXdHd0N3Wndodw+YEJgRmBKYE5gUmBWYFpgXmBiYGZgamBuYHJgdmB6YH5ggmCGYIpgjmCSYJZgmmCeYKJgpmCqYK5gsmC2YLpgvmDCYMZgymDOYNJg1mDaYN5g4mDmYOpg7mDyYPZg+mD+YQJhBmEKYQ5hEmEWYRphHmEiYSZhKmEuYTJhNmE6YT5hQmFGYUphTmFSYVZhWmFeYWJhZmFqYW5hcmF2YXphfmGCYYZhimGOYZJhlmGaYZ5homGmYaphrmGyYbZhumGJ3ZXd/d413fXeAd4x3kXefd6B3sHe1d713OnVAdU51S3VIdVt1cnV5dYN1WH9hf19/SIpof3R/cX95f4F/fn/NduV2MoiFlIaUh5SLlIqUjJSNlI+UkJSUlJeUlZSalJuUnJSjlKSUq5SqlK2UrJSvlLCUspS0lLaUt5S4lLmUupS8lL2Uv5TElMiUyZTKlMuUzJTNlM6U0JTRlNKU1ZTWlNeU2ZTYlNuU3pTflOCU4pTklOWU55TolOqUb5hwmHGYcphzmHSYi5iOmJKYlZiZmKOYqJipmKqYq5ismK2YrpivmLCYsZiymLOYtJi1mLaYt5i4mLmYupi7mLyYvZi+mL+YwJjBmMKYw5jEmMWYxpjHmMiYyZjKmMuYzJjNmM+Y0JjUmNaY15jbmNyY3ZjgmOGY4pjjmOSY5ZjmmOmY6pjrmOyY7ZjumO+Y8JjxmPKY85j0mPWY9pj3mPiY+Zj6mPuY/Jj9mP6Y/5gAmQGZApkDmQSZBZkGmQeZ6ZTrlO6U75TzlPSU9ZT3lPmU/JT9lP+UA5UClQaVB5UJlQqVDZUOlQ+VEpUTlRSVFZUWlRiVG5UdlR6VH5UilSqVK5UplSyVMZUylTSVNpU3lTiVPJU+lT+VQpU1lUSVRZVGlUmVTJVOlU+VUpVTlVSVVpVXlViVWZVblV6VX5VdlWGVYpVklWWVZpVnlWiVaZVqlWuVbJVvlXGVcpVzlTqV53fsd8mW1XnteeN563kGekddA3oCeh56FHoImQmZCpkLmQyZDpkPmRGZEpkTmRSZFZkWmReZGJkZmRqZG5kcmR2ZHpkfmSCZIZkimSOZJJklmSaZJ5komSmZKpkrmSyZLZkvmTCZMZkymTOZNJk1mTaZN5k4mTmZOpk7mTyZPZk+mT+ZQJlBmUKZQ5lEmUWZRplHmUiZSZlKmUuZTJlNmU6ZT5lQmVGZUplTmVaZV5lYmVmZWplbmVyZXZlemV+ZYJlhmWKZZJlmmXOZeJl5mXuZfpmCmYOZiZk5ejd6UXrPnqWZcHqIdo52k3aZdqR23nTgdCx1IJ4iniieKZ4qniueLJ4ynjGeNp44njeeOZ46nj6eQZ5CnkSeRp5HnkieSZ5LnkyeTp5RnlWeV55anlueXJ5enmOeZp5nnmieaZ5qnmuebJ5xnm2ec56SdZR1lnWgdZ11rHWjdbN1tHW4dcR1sXWwdcN1wnXWdc1143XodeZ15HXrded1A3bxdfx1/3UQdgB2BXYMdhd2CnYldhh2FXYZdoyZjpmamZuZnJmdmZ6Zn5mgmaGZopmjmaSZppmnmamZqpmrmayZrZmuma+ZsJmxmbKZs5m0mbWZtpm3mbiZuZm6mbuZvJm9mb6Zv5nAmcGZwpnDmcSZxZnGmceZyJnJmcqZy5nMmc2ZzpnPmdCZ0ZnSmdOZ1JnVmdaZ15nYmdmZ2pnbmdyZ3Znemd+Z4JnhmeKZ45nkmeWZ5pnnmeiZ6ZnqmeuZ7Jntme6Z75nwmfGZ8pnzmfSZ9Zn2mfeZ+Jn5mRt2PHYidiB2QHYtdjB2P3Y1dkN2PnYzdk12XnZUdlx2VnZrdm92yn/menh6eXqAeoZ6iHqVeqZ6oHqseqh6rXqzemSIaYhyiH2If4iCiKKIxoi3iLyIyYjiiM6I44jliPGIGon8iOiI/ojwiCGJGYkTiRuJCok0iSuJNolBiWaJe4mLdeWAsna0dtx3EoAUgBaAHIAggCKAJYAmgCeAKYAogDGAC4A1gEOARoBNgFKAaYBxgIOJeJiAmIOY+pn7mfyZ/Zn+mf+ZAJoBmgKaA5oEmgWaBpoHmgiaCZoKmguaDJoNmg6aD5oQmhGaEpoTmhSaFZoWmheaGJoZmhqaG5ocmh2aHpofmiCaIZoimiOaJJolmiaaJ5oomimaKpormiyaLZoumi+aMJoxmjKaM5o0mjWaNpo3mjiaOZo6mjuaPJo9mj6aP5pAmkGaQppDmkSaRZpGmkeaSJpJmkqaS5pMmk2aTppPmlCaUZpSmlOaVJpVmlaaV5pYmlmaiZiMmI2Yj5iUmJqYm5iemJ+YoZiimKWYpphNhlSGbIZuhn+GeoZ8hnuGqIaNhouGrIadhqeGo4aqhpOGqYa2hsSGtYbOhrCGuoaxhq+GyYbPhrSG6YbxhvKG7YbzhtCGE4fehvSG34bYhtGGA4cHh/iGCIcKhw2HCYcjhzuHHoclhy6HGoc+h0iHNIcxhymHN4c/h4KHIod9h36He4dgh3CHTIduh4uHU4djh3yHZIdZh2WHk4evh6iH0odamluaXJpdml6aX5pgmmGaYppjmmSaZZpmmmeaaJppmmqaa5pymoOaiZqNmo6alJqVmpmappqpmqqaq5qsmq2arpqvmrKas5q0mrWauZq7mr2avpq/msOaxJrGmseayJrJmsqazZrOms+a0JrSmtSa1ZrWmtea2Zramtua3Jrdmt6a4JrimuOa5Jrlmuea6Jrpmuqa7JrumvCa8ZrymvOa9Jr1mvaa95r4mvqa/Jr9mv6a/5oAmwGbApsEmwWbBpvGh4iHhYeth5eHg4erh+WHrIe1h7OHy4fTh72H0YfAh8qH24fqh+CH7ocWiBOI/ocKiBuIIYg5iDyINn9Cf0R/RX8Qgvp6/XoIewN7BHsVewp7K3sPe0d7OHsqexl7LnsxeyB7JXskezN7Pnsee1h7WntFe3V7THtde2B7bnt7e2J7cntxe5B7pnune7h7rHude6h7hXuqe5x7onure7R70XvBe8x73Xvae+V75nvqewx8/nv8ew98FnwLfAebCZsKmwubDJsNmw6bEJsRmxKbFJsVmxabF5sYmxmbGpsbmxybHZsemyCbIZsimySbJZsmmyebKJspmyqbK5ssmy2bLpswmzGbM5s0mzWbNps3mzibOZs6mz2bPps/m0CbRptKm0ubTJtOm1CbUptTm1WbVptXm1ibWZtam1ubXJtdm16bX5tgm2GbYptjm2SbZZtmm2ebaJtpm2qba5tsm22bbptvm3CbcZtym3ObdJt1m3abd5t4m3mbept7mx98KnwmfDh8QXxAfP6BAYICggSC7IFEiCGCIoIjgi2CL4IogiuCOII7gjOCNII+gkSCSYJLgk+CWoJfgmiCfoiFiIiI2IjfiF6JnX+ff6d/r3+wf7J/fHxJZZF8nXycfJ58onyyfLx8vXzBfMd8zHzNfMh8xXzXfOh8boKoZr9/zn/Vf+V/4X/mf+l/7n/zf/h8d32mfa59R36bfrietJ5zjYSNlI2RjbGNZ41tjUeMSYxKkVCRTpFPkWSRfJt9m36bf5uAm4GbgpuDm4SbhZuGm4ebiJuJm4qbi5uMm42bjpuPm5CbkZuSm5OblJuVm5abl5uYm5mbmpubm5ybnZuem5+boJuhm6Kbo5ukm6Wbppunm6ibqZuqm6ubrJutm66br5uwm7Gbspuzm7SbtZu2m7ebuJu5m7qbu5u8m72bvpu/m8CbwZvCm8ObxJvFm8abx5vIm8mbypvLm8ybzZvOm8+b0JvRm9Kb05vUm9Wb1pvXm9ib2Zvam9ubYpFhkXCRaZFvkX2RfpFykXSReZGMkYWRkJGNkZGRopGjkaqRrZGuka+RtZG0kbqRVYx+nriN640FjlmOaY61jb+NvI26jcSN1o3XjdqN3o3Ojc+N243GjeyN9434jeON+Y37jeSNCY79jRSOHY4fjiyOLo4jji+OOo5AjjmONY49jjGOSY5BjkKOUY5SjkqOcI52jnyOb450joWOj46UjpCOnI6ejniMgoyKjIWMmIyUjJtl1oneidqJ3Incm92b3pvfm+Cb4Zvim+Ob5Jvlm+ab55vom+mb6pvrm+yb7Zvum++b8Jvxm/Kb85v0m/Wb9pv3m/ib+Zv6m/ub/Jv9m/6b/5sAnAGcApwDnAScBZwGnAecCJwJnAqcC5wMnA2cDpwPnBCcEZwSnBOcFJwVnBacF5wYnBmcGpwbnBycHZwenB+cIJwhnCKcI5wknCWcJpwnnCicKZwqnCucLJwtnC6cL5wwnDGcMpwznDScNZw2nDecOJw5nDqcO5zlieuJ74k+iiaLU5fplvOW75YGlwGXCJcPlw6XKpctlzCXPpeAn4OfhZ+Gn4efiJ+Jn4qfjJ/+ngufDZ+5lryWvZbOltKWv3fglo6SrpLIkj6TapPKk4+TPpRrlH+cgpyFnIach5yInCN6i5yOnJCckZySnJSclZyanJucnpyfnKCcoZyinKOcpZymnKecqJypnKucrZyunLCcsZyynLOctJy1nLact5y6nLucvJy9nMScxZzGnMecypzLnDycPZw+nD+cQJxBnEKcQ5xEnEWcRpxHnEicSZxKnEucTJxNnE6cT5xQnFGcUpxTnFScVZxWnFecWJxZnFqcW5xcnF2cXpxfnGCcYZxinGOcZJxlnGacZ5xonGmcapxrnGycbZxunG+ccJxxnHKcc5x0nHWcdpx3nHiceZx6nHucfZx+nICcg5yEnImcipyMnI+ck5yWnJecmJyZnJ2cqpysnK+cuZy+nL+cwJzBnMKcyJzJnNGc0pzanNuc4JzhnMyczZzOnM+c0JzTnNSc1ZzXnNic2ZzcnN2c35zinHyXhZeRl5KXlJevl6uXo5eyl7SXsZqwmreaWJ62mrqavJrBmsCaxZrCmsuazJrRmkWbQ5tHm0mbSJtNm1Gb6JgNmS6ZVZlUmd+a4Zrmmu+a65r7mu2a+ZoImw+bE5sfmyObvZ6+njt+gp6Hnoiei56SntaTnZ6fntue3J7dnuCe357inume557lnuqe754inyyfL585nzefPZ8+n0Sf45zknOWc5pznnOic6ZzqnOuc7JztnO6c75zwnPGc8pzznPSc9Zz2nPec+Jz5nPqc+5z8nP2c/pz/nACdAZ0CnQOdBJ0FnQadB50InQmdCp0LnQydDZ0OnQ+dEJ0RnRKdE50UnRWdFp0XnRidGZ0anRudHJ0dnR6dH50gnSGdIp0jnSSdJZ0mnSedKJ0pnSqdK50snS2dLp0vnTCdMZ0ynTOdNJ01nTadN504nTmdOp07nTydPZ0+nT+dQJ1BnUKdNOI14jbiN+I44jniOuI74jziPeI+4j/iQOJB4kLiQ+JE4kXiRuJH4kjiSeJK4kviTOJN4k7iT+JQ4lHiUuJT4lTiVeJW4lfiWOJZ4lriW+Jc4l3iXuJf4mDiYeJi4mPiZOJl4mbiZ+Jo4mniauJr4mzibeJu4m/icOJx4nLic+J04nXiduJ34njieeJ64nvifOJ94n7if+KA4oHiguKD4oTiheKG4ofiiOKJ4orii+KM4o3ijuKP4pDikeJDnUSdRZ1GnUedSJ1JnUqdS51MnU2dTp1PnVCdUZ1SnVOdVJ1VnVadV51YnVmdWp1bnVydXZ1enV+dYJ1hnWKdY51knWWdZp1nnWidaZ1qnWudbJ1tnW6db51wnXGdcp1znXSddZ12nXedeJ15nXqde518nX2dfp1/nYCdgZ2CnYOdhJ2FnYadh52InYmdip2LnYydjZ2OnY+dkJ2RnZKdk52UnZWdlp2XnZidmZ2anZudnJ2dnZ6dn52gnaGdop2S4pPilOKV4pbil+KY4pnimuKb4pzineKe4p/ioOKh4qLio+Kk4qXipuKn4qjiqeKq4qvirOKt4q7ir+Kw4rHisuKz4rTiteK24rfiuOK54rriu+K84r3ivuK/4sDiweLC4sPixOLF4sbix+LI4sniyuLL4szizeLO4s/i0OLR4tLi0+LU4tXi1uLX4tji2eLa4tvi3OLd4t7i3+Lg4uHi4uLj4uTi5eLm4ufi6OLp4uri6+Ls4u3i7uLv4qOdpJ2lnaadp52onamdqp2rnaydrZ2una+dsJ2xnbKds520nbWdtp23nbiduZ26nbudvJ29nb6dv53AncGdwp3DncSdxZ3GncedyJ3Jncqdy53Mnc2dzp3PndCd0Z3SndOd1J3Vndad153Yndmd2p3bndyd3Z3end+d4J3hneKd453kneWd5p3nneid6Z3qneud7J3tne6d753wnfGd8p3znfSd9Z32nfed+J35nfqd+538nf2d/p3/nQCeAZ4CnvDi8eLy4vPi9OL14vbi9+L44vni+uL74vzi/eL+4v/iAOMB4wLjA+ME4wXjBuMH4wjjCeMK4wvjDOMN4w7jD+MQ4xHjEuMT4xTjFeMW4xfjGOMZ4xrjG+Mc4x3jHuMf4yDjIeMi4yPjJOMl4ybjJ+Mo4ynjKuMr4yzjLeMu4y/jMOMx4zLjM+M04zXjNuM34zjjOeM64zvjPOM94z7jP+NA40HjQuND40TjReNG40fjSONJ40rjS+NM403jA54EngWeBp4HngieCZ4KngueDJ4Nng6eD54QnhGeEp4TnhSeFZ4WnheeGJ4ZnhqeG54cnh2eHp4knieeLp4wnjSeO548nkCeTZ5QnlKeU55UnlaeWZ5dnl+eYJ5hnmKeZZ5unm+ecp50nnWedp53nnieeZ56nnuefJ59noCegZ6DnoSehZ6Gnomeip6Mno2ejp6PnpCekZ6UnpWelp6XnpiemZ6anpuenJ6enqCeoZ6inqOepJ6lnqeeqJ6pnqqeTuNP41DjUeNS41PjVONV41bjV+NY41njWuNb41zjXeNe41/jYONh42LjY+Nk42XjZuNn42jjaeNq42vjbONt427jb+Nw43HjcuNz43TjdeN243fjeON543rje+N8433jfuN/44DjgeOC44PjhOOF44bjh+OI44njiuOL44zjjeOO44/jkOOR45Ljk+OU45XjluOX45jjmeOa45vjnOOd457jn+Og46HjouOj46TjpeOm46fjqOOp46rjq+OrnqyerZ6unq+esJ6xnrKes561nraet565nrqevJ6/nsCewZ7CnsOexZ7GnseeyJ7KnsuezJ7QntKe057Vntae157Zntqe3p7hnuOe5J7mnuie657snu2e7p7wnvGe8p7znvSe9Z72nvee+J76nv2e/54AnwGfAp8DnwSfBZ8GnwefCJ8JnwqfDJ8PnxGfEp8UnxWfFp8YnxqfG58cnx2fHp8fnyGfI58knyWfJp8nnyifKZ8qnyufLZ8unzCfMZ+s463jruOv47DjseOy47PjtOO147bjt+O447njuuO747zjveO+47/jwOPB48Ljw+PE48XjxuPH48jjyePK48vjzOPN487jz+PQ49Hj0uPT49Tj1ePW49fj2OPZ49rj2+Pc493j3uPf4+Dj4ePi4+Pj5OPl4+bj5+Po4+nj6uPr4+zj7ePu4+/j8OPx4/Lj8+P04/Xj9uP34/jj+eP64/vj/OP94/7j/+MA5AHkAuQD5ATkBeQG5AfkCOQJ5DKfM580nzWfNp84nzqfPJ8/n0CfQZ9Cn0OfRZ9Gn0efSJ9Jn0qfS59Mn02fTp9Pn1KfU59Un1WfVp9Xn1ifWZ9an1ufXJ9dn16fX59gn2GfYp9jn2SfZZ9mn2efaJ9pn2qfa59sn22fbp9vn3CfcZ9yn3OfdJ91n3afd594n3mfep97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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnE4WVQNaP5bAVBthKGP2WSKQdYQcg1B6qmDhYyVu7WVmhKaC9ZuTaCdXoWVxYptb0Fl7hvSYYn2+fY6bFmKffLeIiVu1Xgljl2ZIaMeVjZdPZ+VOCk9NT51PSVDyVjdZ1FkBWglc32APYXBhE2YFabpwT3Vwdft5rX3vfcOADoRjiAKLVZB6kDtTlU6lTt9XsoDBkO94AE7xWKJuOJAyeiiDi4IvnEFRcFO9VOFU4Fb7WRVf8pjrbeSALYVilnCWoJb7lwtU81OHW89wvX/Cj+iWb1Ncnbp6EU6TePyBJm4YVgRVHWsahTuc5VmpU2Zt3HSPlUJWkU5LkPKWT4MMmeFTtlUwW3FfIGbzZgRoOGzzbCltW3TIdk56NJjxgluIYIrtkrJtq3XKdsWZpmABi4qNspWOaa1ThlESVzBYRFm0W/ZeKGCpY/Rjv2wUb45wFHFZcdVxP3MBfnaC0YKXhWCQW5IbnWlYvGVabCV1+VEuWWVZgF/cX7xi+mUqaidrtGuLc8F/VoksnQ6dxJ6hXJZse4MEUUtctmHGgXZoYXJZTvpPeFNpYCluT3rzlwtOFlPuTlVPPU+hT3NPoFLvUwlWD1nBWrZb4VvReYdmnGe2Z0xrs2xrcMJzjXm+eTx6h3uxgtuCBIN3g++D04Nmh7KKKVaojOaPTpAel4qGxE/oXBFiWXI7deWBvYL+hsCMxZYTmdWZy04aT+OJ3lZKWMpY+17rXypglGBiYNBhEmLQYjllQZtmZrBod21wcEx1hnZ1faWC+YeLlY6WnYzxUb5SFlmzVLNbFl1oYYJpr22NeMuEV4hyiqeTuJpsbaiZ2YajV/9nzoYOkoNSh1YEVNNe4WK5ZDxoOGi7a3JzunhrepqJ0olrjQOP7ZCjlZSWaZdmW7NcfWlNmE6Ym2Mgeytqf2q2aA2cX29yUp1VcGDsYjttB27RbluEEIlEjxROOZz2UxtpOmqElypoXFHDerKE3JGMk1tWKJ0iaAWDMYSlfAhSxYLmdH5Og0+gUdJbClLYUudS+12aVSpY5lmMW5hb21tyXnleo2AfYWNhvmHbY2Jl0WdTaPpoPmtTa1dsIm+Xb0VvsHQYdeN2C3f/eqF7IXzpfTZ/8H+dgGaCnoOzicyKq4yEkFGUk5WRlaKVZZbTlyiZGII4TitUuFzMXalzTHY8d6lc638LjcGWEZhUmFiYAU8OT3FTnFVoVvpXR1kJW8RbkFwMXn5ezF/uYzpn12XiZR9ny2jEaF9qMF7FaxdsfWx/dUh5Y1sAegB9vV+PiRiKtIx3jcyOHY/imA6aPJuATn1QAFGTWZxbL2KAYuxkOmugcpF1R3mpf/uHvIpwi6xjyoOglwlUA1SrVVRoWGpwiid4dWfNnnRTolsagVCGBpAYTkVOx04RT8pTOFSuWxNfJWBRZT1nQmxybONseHADdHZ6rnoIexp9/nxmfedlW3K7U0Vc6F3SYuBiGWMgblqGMYrdjfiSAW+meVqbqE6rTqxOm0+gT9FQR1H2enFR9lFUUyFTf1PrU6xVg1jhXDdfSl8vYFBgbWAfY1llS2rBbMJy7XLvd/iABYEIgk6F95Dhk/+XV5lamvBO3VEtXIFmbWlAXPJmdWmJc1BogXzFUORSR1f+XSaTpGUjaz1rNHSBeb15S3vKfbmCzIN/iF+JOYvRj9GRH1SAkl1ONlDlUzpT13KWc+l35oKvjsaZyJnSmXdRGmFehrBVenp2UNNbR5CFljJO22rnkVFcSFyYY596k2x0l2GPqnqKcYiWgnwXaHB+UWhsk/JSG1SrhROKpH/NjuGQZlOIiEF5wk++UBFSRFFTVS1X6nOLV1FZYl+EX3VgdmFnYalhsmM6ZGxlb2ZCaBNuZnU9evt8TH2ZfUt+a38Og0qDzYYIimOKZov9jhqYj524gs6P6JuHUh9ig2TAb5mWQWiRUCBremxUb3R6UH1AiCOKCGf2TjlQJlBlUHxROFJjUqdVD1cFWMxa+l6yYfhh82JyYxxpKWp9cqxyLnMUeG94eX0Md6mAi4kZi+KM0o5jkHWTepZVmBOaeJ5DUZ9Ts1N7XiZfG26QboRz/nNDfTeCAIr6ilCWTk4LUORTfFT6VtFZZFvxXateJ184YkVlr2dWbtByyny0iKGA4YDwg06Gh4rojTeSx5ZnmBOflE6STg1PSFNJVD5UL1qMX6Ffn2CnaI5qWnSBeJ6KpIp3i5CRXk7Jm6ROfE+vTxlQFlBJUWxRn1K5Uv5SmlPjUxFUDlSJVVFXold9WVRbXVuPW+Vd5133XXheg16aXrdeGF9SYExhl2LYYqdjO2UCZkNm9GZtZyFol2jLaV9sKm1pbS9unW4ydYd2bHg/euB8BX0YfV59sX0VgAOAr4CxgFSBj4EqglKDTIhhiBuLooz8jMqQdZFxkj94/JKklU2WBZiZmdiaO51bUqtS91MIVNVY92Lgb2qMX4+5nktRO1JKVP1WQHp3kWCd0p5EcwlvcIERdf1f2mComttyvI9kawOYyk7wVmRXvlhaWmhgx2EPZgZmOWixaPdt1XU6fW6CQpubTlBPyVMGVW9d5l3uXftnmWxzdAJ4UIqWk9+IUFenXitjtVCsUI1RAGfJVF5Yu1mwW2lfTWKhYz1oc2sIbn1wx5GAchV4JnhteY5lMH3cg8GICY+blmRSKFdQZ2p/oYy0UUJXKpY6WIpptICyVA5d/FeVePqdXE9KUotUPmQoZhRn9WeEelZ7In0vk1xorZs5exlTilE3Ut9b9mKuZOZkLWe6a6mF0ZaQdtabTGMGk6ubv3ZSZglOmFDCU3Fc6GCSZGNlX2jmccpzI3WXe4J+lYaDi9uMeJEQmaxlq2aLa9VO1E46T39POlL4U/JT41XbVutYy1nJWf9ZUFtNXAJeK17XXx1gB2MvZVxbr2W9ZehlnWdia3trD2xFc0l5wXn4fBl9K32igAKB84GWiV6KaYpmioyK7orHjNyMzJb8mG9ri048T41PUFFXW/pbSGEBY0JmIWvLbrtsPnK9dNR1wXg6eQyAM4DqgZSEno9QbH+eD19Yiyud+nr4jo1b65YDTvFT91cxWclapFuJYH9uBm++deqMn1sAheB7clD0Z52CYVxKhR5+DoKZUQRcaGNmjZxlbnE+eRd9BYAdi8qObpDHhqqQH1D6UjpcU2d8cDVyTJHIkSuT5YLCWzFf+WA7TtZTiFtLYjFnimvpcuBzLnprgaONUpGWmRJR11NqVP9biGM5aqx9AJfaVs5TaFSXWzFc3l3uTwFh/mIybcB5y3lCfU1+0n/tgR+CkIRGiHKJkIt0ji+PMZBLkWyRxpackcBOT09FUUFTk18OYtRnQWwLbmNzJn7NkYOS1FMZWb9b0W1deS5+m3x+WJ9x+lFTiPCPyk/7XCVmrHfjehyC/5nGUapf7GVvaYlr822WbmRv/nYUfeFddZCHkQaY5lEdUkBikWbZZhputl7SfXJ/+GavhfeF+IqpUtlTc1mPXpBfVWDkkmSWt1AfUd1SIFNHU+xT6FRGVTFVF1ZoWb5ZPFq1WwZcD1wRXBpchF6KXuBecF9/YoRi22KMY3djB2YMZi1mdmZ+Z6JoH2o1arxsiG0JblhuPHEmcWdxx3UBd114AXllefB54HoRe6d8OX2WgNaDi4RJhV2I84gfijyKVIpzimGM3oykkWaSfpMYlJyWmJcKTghOHk5XTpdRcFLOVzRYzFgiWzhexWD+ZGFnVmdEbbZyc3VjeriEcou4kSCTMVb0V/6Y7WINaZZr7XFUfneAcoLmid+YVYexjztcOE/hT7VPB1UgWt1b6VvDX05hL2OwZUtm7mibaXht8W0zdbl1H3deeeZ5M33jga+CqoWqiTqKq46bjzKQ3ZEHl7pOwU4DUnVY7FgLXBp1PVxOgQqKxY9jlm2XJXvPigiYYpHzVqhTF5A5VIJXJV6oYzRsinBhd4t84H9wiEKQVJEQkxiTj5ZedMSaB11pXXBlomeojduWbmNJZxlpxYMXmMCW/oiEb3pk+FsWTixwXXUvZsRRNlLiUtNZgV8nYBBiP2V0ZR9mdGbyaBZoY2sFbnJyH3Xbdr58VoDwWP2If4mgipOKy4odkJKRUpdZl4llDnoGgbuWLV7cYBpipWUUZpBn83dNek18Pn4KgayMZI3hjV+OqXgHUtlipWNCZJhiLYqDesB7rIrqlnZ9DIJJh9lOSFFDU2BTo1sCXBZc3V0mYkdisGQTaDRoyWxFbRdt02dcb05xfXHLZX96rXvafUp+qH96gRuCOYKmhW6Kzoz1jXiQd5CtkpGSg5Wum01ShFU4bzZxaFGFeVV+s4HOfExWUVioXKpj/mb9Zlpp2XKPdY51DnlWed95l3wgfUR9B4Y0ijuWYZAgn+dQdVLMU+JTCVCqVe5YT1k9cotbZFwdU+Ng82BcY4NjP2O7Y81k6WX5ZuNdzWn9aRVv5XGJTul1+HaTet98z32cfWGASYNYg2yEvIT7hcWIcI0BkG2Ql5MclxKaz1CXWI5h04E1hQiNIJDDT3RQR1JzU29gSWNfZyxus40fkNdPXlzKjM9lmn1SU5aIdlHDY1hba1sKXA1kUWdckNZOGlkqWXBsUYo+VRVYpVnwYFNiwWc1glVpQJbEmSiaU08GWP5bEICxXC9ehV8gYEthNGL/ZvBs3m7OgH+B1IKLiLiMAJAukIqW257bm+NO8FMnWSx7jZFMmPmd3W4ncFNTRFWFW1hinmLTYqJs728idBeKOJTBb/6KOIPnUfiG6lPpU0ZPVJCwj2pZMYH9Xep6v4/aaDeM+HJInD1qsIo5TlhTBlZmV8ViomPmZU5r4W1bbq1w7Xfveqp7u309gMaAy4aViluT41bHWD5frWWWZoBqtWs3dceKJFDldzBXG19lYHpmYGz0dRp6bn/0gRiHRZCzmcl7XHX5elF7xIQQkOl5kno2g+FaQHctTvJOmVvgX71iPGbxZ+hsa4Z3iDuKTpHzktCZF2omcCpz54JXhK+MAU5GUctRi1X1WxZeM16BXhRfNV9rX7Rf8mERY6JmHWdub1JyOnU6d3SAOYF4gXaHv4rcioWN842akneVApjlnMVSV2P0dhVniGzNc8OMrpNzliVtnFgOacxp/Y+ak9t1GpBaWAJotGP7aUNPLG/YZ7uPJoW0fVSTP2lwb2pX91gsWyx9KnIKVOORtJ2tTk5PXFB1UENSnoxIVCRYmlsdXpVerV73Xh9fjGC1Yjpj0GOvaEBsh3iOeQt64H1HggKK5opEjhOQuJAtkdiRDp/lbFhk4mR1ZfRuhHYbe2mQ0ZO6bvJUuV+kZE2P7Y9EknhRa1gpWVVcl177bY9+HHW8jOKOW5i5cB1Pv2uxbzB1+5ZOURBUNVhXWKxZYFySX5dlXGchbnt234PtjBSQ/ZBNkyV4OniqUqZeH1d0WRJgElBaUaxRzVEAUhBVVFhYWFdZlVv2XItdvGCVYi1kcWdDaLxo32jXdthtb26bbW9wyHFTX9h1d3lJe1R7UnvWfHF9MFJjhGmF5IUOigSLRowPjgOQD5AZlHaWLZgwmtiVzVDVUgxUAlgOXKdhnmQebbN35Xr0gASEU5CFkuBcB50/U5dfs1+cbXlyY3e/eeR70mvscq2KA2hhavhRgXo0aUpc9pzrgsVbSZEecHhWb1zHYGZljGxajEGQE5hRVMdmDZJIWaOQhVFNTupRmYUOi1hwemNLk2JptJkEfnd1V1Ngad+O45ZdbIxOPFwQX+mPAlPRjImAeYb/XuVlc05lUYJZP1zul/tOilnNX42K4W+weWJ551txhCtzsXF0XvVfe2OaZMNxmHxDTvxeS07cV6JWqWDDbw19/YAzgb+Bso+XiaSG9F2KYq1kh4l3Z+JsPm02dDR4Rlp1f62CrJnzT8Ne3WKSY1dlb2fDdkxyzIC6gCmPTZENUPlXklqFaHNpZHH9creM8ljgjGqWGZB/h+R553cphC9PZVJaU81iz2fKbH12lHuVfDaChIXrj91mIG8Gcht+q4PBmaae/VGxe3J4uHuHgEh76GphXoyAUXVgdWtRYpKMbnp2l5HqmhBPcH+cYk97pZXpnHpWWVjkhryWNE8kUkpTzVPbUwZeLGSRZX9nPmxObEhyr3Ltc1R1QX4sgumFqYzEe8aRaXESmO+YPWNpZmp15HbQeEOF7oYqU1FTJlSDWYdefF+yYElieWKrYpBl1GvMbLJ1rnaReNh5y313f6WAq4i5iruMf5Bel9uYC2o4fJlQPlyuX4dn2Gs1dAl3jn87n8pnF3o5U4t17ZpmX52B8YOYgDxfxV9idUZ7PJBnaOtZm1oQfX52LIv1T2pfGWo3bAJv4nRoeWiIVYp5jN9ez2PFddJ514Iok/KSnITthi2cwVRsX4xlXG0VcKeM04w7mE9l9nQNTthO4FcrWWZazFuoUQNenF4WYHZid2WnZW5mbm02ciZ7UIGagZmCXIugjOaMdI0clkSWrk+rZGZrHoJhhGqF6JABXFNpqJh6hFeFD09vUqlfRV4NZ495eYEHiYaJ9W0XX1ViuGzPTmlykpsGUjtUdFazWKRhbmIacW5ZiXzefBt98JaHZV6AGU51T3VRQFhjXnNeCl/EZyZOPYWJlVuWc3wBmPtQwVhWdqd4JVKldxGFhntPUAlZR3LHe+h9uo/Uj02Qv0/JUilaAV+tl91PF4LqkgNXVWNpayt13IgUj0J631KTWFVhCmKuZs1rP3zpgyNQ+E8FU0ZUMVhJWZ1b8FzvXCldll6xYmdjPmW5ZQtn1WzhbPlwMngrft6As4IMhOyEAocSiSqKSoymkNKS/ZjznGydT06hTo1QVlJKV6hZPV7YX9lfP2K0Zhtn0GfSaJJRIX2qgKiBAIuMjL+MfpIyliBULJgXU9VQXFOoWLJkNGdncmZ3RnrmkcNSoWyGawBYTF5UWSxn+3/hUcZ2aWToeFSbu57LV7lZJ2aaZ85r6VTZaVVenIGVZ6qb/mdSnF1opk7jT8hTuWIrZ6tsxI+tT21+v54HTmJhgG4rbxOFc1QqZ0Wb812Ve6xcxlsch0pu0YQUegiBmVmNfBFsIHfZUiJZIXFfctt3J5dhnQtpf1oYWqVRDVR9VA5m33b3j5iS9JzqWV1yxW5NUclov33sfWKXup54ZCFqAoOEWV9b22sbc/J2sn0XgJmEMlEoZ9me7nZiZ/9SBZkkXDtifnywjE9VtmALfYCVAVNfTrZRHFk6cjaAzpElX+J3hFN5XwR9rIUzio2OVpfzZ66FU5QJYQhhuWxSdu2KOI8vVVFPKlHHUstTpVt9XqBggmHWYwln2mdnboxtNnM3czF1UHnViJiKSpCRkPWQxJaNhxVZiE5ZTw5OiYo/jxCYrVB8XpZZuVu4Xtpj+mPBZNxmSmnYaQtttm6UcSh1r3qKfwCASYTJhIGJIYsKjmWQfZYKmX5hkWIya4NsdG3Mf/x/wG2Ff7qH+IhlZ7GDPJj3lhttYX09hGqRcU51U1BdBGvrb82FLYaniSlSD1RlXE5nqGgGdIN04nXPiOGIzJHilniWi1+Hc8t6ToSgY2V1iVJBbZxuCXRZdWt4knyGltx6jZ+2T25hxWVchoZOrk7aUCFOzFHuW5llgWi8bR9zQnatdxx653xvgtKKfJDPkXWWGJibUtF9K1CYU5dny23QcTN06IEqj6OWV5yfnmB0QViZbS99XpjkTjZPi0+3UbFSul0cYLJzPHnTgjSSt5b2lgqXl55in6ZmdGsXUqNSyHDCiMleS2CQYSNvSXE+fPR9b4DuhCOQLJNCVG+b02qJcMKM740yl7RSQVrKXgRfF2d8aZRpam0Pb2Jy/HLtewGAfoBLh86QbVGTnoR5i4Ayk9aKLVCMVHGKamvEjAeB0WCgZ/KdmU6YThCca4rBhWiFAGl+bpd4VYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxfEE4VTipOMU42TjxOP05CTlZOWE6CToVOa4yKThKCDV+OTp5On06gTqJOsE6zTrZOzk7NTsROxk7CTtdO3k7tTt9O904JT1pPME9bT11PV09HT3ZPiE+PT5hPe09pT3BPkU9vT4ZPlk8YUdRP30/OT9hP20/RT9pP0E/kT+VPGlAoUBRQKlAlUAVQHE/2TyFQKVAsUP5P708RUAZQQ1BHUANnVVBQUEhQWlBWUGxQeFCAUJpQhVC0ULJQyVDKULNQwlDWUN5Q5VDtUONQ7lD5UPVQCVEBUQJRFlEVURRRGlEhUTpRN1E8UTtRP1FAUVJRTFFUUWJR+HppUWpRblGAUYJR2FaMUYlRj1GRUZNRlVGWUaRRplGiUalRqlGrUbNRsVGyUbBRtVG9UcVRyVHbUeBRVYbpUe1R8FH1Uf5RBFILUhRSDlInUipSLlIzUjlST1JEUktSTFJeUlRSalJ0UmlSc1J/Un1SjVKUUpJScVKIUpFSqI+nj6xSrVK8UrVSwVLNUtdS3lLjUuZS7ZjgUvNS9VL4UvlSBlMIUzh1DVMQUw9TFVMaUyNTL1MxUzNTOFNAU0ZTRVMXTklTTVPWUV5TaVNuUxhZe1N3U4JTllOgU6ZTpVOuU7BTtlPDUxJ82ZbfU/xm7nHuU+hT7VP6UwFUPVRAVCxULVQ8VC5UNlQpVB1UTlSPVHVUjlRfVHFUd1RwVJJUe1SAVHZUhFSQVIZUx1SiVLhUpVSsVMRUyFSoVKtUwlSkVL5UvFTYVOVU5lQPVRRV/VTuVO1U+lTiVDlVQFVjVUxVLlVcVUVVVlVXVThVM1VdVZlVgFWvVIpVn1V7VX5VmFWeVa5VfFWDValVh1WoVdpVxVXfVcRV3FXkVdRVFFb3VRZW/lX9VRtW+VVOVlBW33E0VjZWMlY4VmtWZFYvVmxWalaGVoBWilagVpRWj1alVq5Wtla0VsJWvFbBVsNWwFbIVs5W0VbTVtdW7lb5VgBX/1YEVwlXCFcLVw1XE1cYVxZXx1UcVyZXN1c4V05XO1dAV09XaVfAV4hXYVd/V4lXk1egV7NXpFeqV7BXw1fGV9RX0lfTVwpY1lfjVwtYGVgdWHJYIVhiWEtYcFjAa1JYPVh5WIVYuVifWKtYuljeWLtYuFiuWMVY01jRWNdY2VjYWOVY3FjkWN9Y71j6WPlY+1j8WP1YAlkKWRBZG1mmaCVZLFktWTJZOFk+WdJ6VVlQWU5ZWllYWWJZYFlnWWxZaVl4WYFZnVleT6tPo1myWcZZ6FncWY1Z2VnaWSVaH1oRWhxaCVoaWkBabFpJWjVaNlpiWmpamlq8Wr5ay1rCWr1a41rXWuZa6VrWWvpa+1oMWwtbFlsyW9BaKls2Wz5bQ1tFW0BbUVtVW1pbW1tlW2lbcFtzW3VbeFuIZXpbgFuDW6ZbuFvDW8dbyVvUW9Bb5FvmW+Jb3lvlW+tb8Fv2W/NbBVwHXAhcDVwTXCBcIlwoXDhcOVxBXEZcTlxTXFBcT1xxW2xcblxiTnZceVyMXJFclFybWatcu1y2XLxct1zFXL5cx1zZXOlc/Vz6XO1cjF3qXAtdFV0XXVxdH10bXRFdFF0iXRpdGV0YXUxdUl1OXUtdbF1zXXZdh12EXYJdol2dXaxdrl29XZBdt128XcldzV3TXdJd1l3bXetd8l31XQteGl4ZXhFeG142XjdeRF5DXkBeTl5XXlReX15iXmReR151XnZeel68nn9eoF7BXsJeyF7QXs9e1l7jXt1e2l7bXuJe4V7oXule7F7xXvNe8F70Xvhe/l4DXwlfXV9cXwtfEV8WXylfLV84X0FfSF9MX05fL19RX1ZfV19ZX2FfbV9zX3dfg1+CX39fil+IX5Ffh1+eX5lfmF+gX6hfrV+8X9Zf+1/kX/hf8V/dX7Ng/18hYGBgGWAQYClgDmAxYBtgFWArYCZgD2A6YFpgQWBqYHdgX2BKYEZgTWBjYENgZGBCYGxga2BZYIFgjWDnYINgmmCEYJtglmCXYJJgp2CLYOFguGDgYNNgtGDwX71gxmC1YNhgTWEVYQZh9mD3YABh9GD6YANhIWH7YPFgDWEOYUdhPmEoYSdhSmE/YTxhLGE0YT1hQmFEYXNhd2FYYVlhWmFrYXRhb2FlYXFhX2FdYVNhdWGZYZZhh2GsYZRhmmGKYZFhq2GuYcxhymHJYfdhyGHDYcZhumHLYXl/zWHmYeNh9mH6YfRh/2H9Yfxh/mEAYghiCWINYgxiFGIbYh5iIWIqYi5iMGIyYjNiQWJOYl5iY2JbYmBiaGJ8YoJiiWJ+YpJik2KWYtRig2KUYtdi0WK7Ys9i/2LGYtRkyGLcYsxiymLCYsdim2LJYgxj7mLxYidjAmMIY+9i9WJQYz5jTWMcZE9jlmOOY4Bjq2N2Y6Njj2OJY59jtWNrY2ljvmPpY8BjxmPjY8lj0mP2Y8RjFmQ0ZAZkE2QmZDZkHWUXZChkD2RnZG9kdmROZCpllWSTZKVkqWSIZLxk2mTSZMVkx2S7ZNhkwmTxZOdkCYLgZOFkrGLjZO9kLGX2ZPRk8mT6ZABl/WQYZRxlBWUkZSNlK2U0ZTVlN2U2ZThlS3VIZVZlVWVNZVhlXmVdZXJleGWCZYNlioubZZ9lq2W3ZcNlxmXBZcRlzGXSZdtl2WXgZeFl8WVyZwpmA2b7ZXNnNWY2ZjRmHGZPZkRmSWZBZl5mXWZkZmdmaGZfZmJmcGaDZohmjmaJZoRmmGadZsFmuWbJZr5mvGbEZrhm1mbaZuBmP2bmZulm8Gb1ZvdmD2cWZx5nJmcnZziXLmc/ZzZnQWc4ZzdnRmdeZ2BnWWdjZ2RniWdwZ6lnfGdqZ4xni2emZ6FnhWe3Z+9ntGfsZ7Nn6We4Z+Rn3mfdZ+Jn7me5Z85nxmfnZ5xqHmhGaCloQGhNaDJoTmizaCtoWWhjaHdof2ifaI9orWiUaJ1om2iDaK5quWh0aLVooGi6aA9pjWh+aAFpymgIadhoImkmaeFoDGnNaNRo52jVaDZpEmkEaddo42glaflo4GjvaChpKmkaaSNpIWnGaHlpd2lcaXhpa2lUaX5pbmk5aXRpPWlZaTBpYWleaV1pgWlqabJprmnQab9pwWnTab5pzmnoW8pp3Wm7acNpp2kuapFpoGmcaZVptGneaehpAmobav9pCmv5afJp52kFarFpHmrtaRRq62kKahJqwWojahNqRGoManJqNmp4akdqYmpZamZqSGo4aiJqkGqNaqBqhGqiaqNql2oXhrtqw2rCarhqs2qsat5q0Wrfaqpq2mrqavtqBWsWhvpqEmsWazGbH2s4azdr3HY5a+6YR2tDa0lrUGtZa1RrW2tfa2FreGt5a39rgGuEa4NrjWuYa5Vrnmuka6prq2uva7JrsWuza7drvGvGa8tr02vfa+xr62vza+9rvp4IbBNsFGwbbCRsI2xebFVsYmxqbIJsjWyabIFsm2x+bGhsc2ySbJBsxGzxbNNsvWzXbMVs3WyubLFsvmy6bNts72zZbOpsH21NiDZtK209bThtGW01bTNtEm0MbWNtk21kbVpteW1ZbY5tlW3kb4Vt+W0VbgputW3HbeZtuG3Gbext3m3Mbeht0m3Fbfpt2W3kbdVt6m3ubS1ubm4ubhlucm5fbj5uI25rbitudm5Nbh9uQ246bk5uJG7/bh1uOG6CbqpumG7Jbrdu0269bq9uxG6ybtRu1W6PbqVuwm6fbkFvEW9McOxu+G7+bj9v8m4xb+9uMm/Mbj5vE2/3boZvem94b4FvgG9vb1tv829tb4JvfG9Yb45vkW/Cb2Zvs2+jb6FvpG+5b8Zvqm/fb9Vv7G/Ub9hv8W/ub9tvCXALcPpvEXABcA9w/m8bcBpwdG8dcBhwH3AwcD5wMnBRcGNwmXCScK9w8XCscLhws3CucN9wy3DdcNlwCXH9cBxxGXFlcVVxiHFmcWJxTHFWcWxxj3H7cYRxlXGocaxx13G5cb5x0nHJcdRxznHgcexx53H1cfxx+XH/cQ1yEHIbcihyLXIscjByMnI7cjxyP3JAckZyS3JYcnRyfnKCcoFyh3KScpZyonKncrlysnLDcsZyxHLOctJy4nLgcuFy+XL3cg9QF3MKcxxzFnMdczRzL3MpcyVzPnNOc09z2J5Xc2pzaHNwc3hzdXN7c3pzyHOzc85zu3PAc+Vz7nPec6J0BXRvdCV0+HMydDp0VXQ/dF90WXRBdFx0aXRwdGN0anR2dH50i3SedKd0ynTPdNR08XPgdON053TpdO508nTwdPF0+HT3dAR1A3UFdQx1DnUNdRV1E3UedSZ1LHU8dUR1TXVKdUl1W3VGdVp1aXVkdWd1a3VtdXh1dnWGdYd1dHWKdYl1gnWUdZp1nXWldaN1wnWzdcN1tXW9dbh1vHWxdc11ynXSddl143Xedf51/3X8dQF28HX6dfJ183ULdg12CXYfdid2IHYhdiJ2JHY0djB2O3ZHdkh2RnZcdlh2YXZidmh2aXZqdmd2bHZwdnJ2dnZ4dnx2gHaDdoh2i3aOdpZ2k3aZdpp2sHa0drh2uXa6dsJ2zXbWdtJ23nbhduV253bqdi+G+3YIdwd3BHcpdyR3HncldyZ3G3c3dzh3R3dad2h3a3dbd2V3f3d+d3l3jneLd5F3oHeed7B3tne5d793vHe9d7t3x3fNd9d32nfcd+N37nf8dwx4EngmeSB4KnlFeI54dHiGeHx4mniMeKN4tXiqeK940XjGeMt41Hi+eLx4xXjKeOx453jaeP149HgHeRJ5EXkZeSx5K3lAeWB5V3lfeVp5VXlTeXp5f3mKeZ15p3lLn6p5rnmzebl5unnJedV553nseeF543kIeg16GHoZeiB6H3qAeTF6O3o+ejd6Q3pXekl6YXpieml6nZ9wenl6fXqIepd6lXqYepZ6qXrIerB6tnrFesR6v3qDkMd6ynrNes961XrTetl62nrdeuF64nrmeu168HoCew97CnsGezN7GHsZex57NXsoezZ7UHt6ewR7TXsLe0x7RXt1e2V7dHtne3B7cXtse257nXuYe597jXuce5p7i3uSe497XXuZe8t7wXvMe897tHvGe9176XsRfBR85nvle2B8AHwHfBN883v3exd8DXz2eyN8J3wqfB98N3wrfD18THxDfFR8T3xAfFB8WHxffGR8VnxlfGx8dXyDfJB8pHytfKJ8q3yhfKh8s3yyfLF8rny5fL18wHzFfMJ82HzSfNx84nw7m+988nz0fPZ8+nwGfQJ9HH0VfQp9RX1LfS59Mn0/fTV9Rn1zfVZ9Tn1yfWh9bn1PfWN9k32JfVt9j319fZt9un2ufaN9tX3Hfb19q309fqJ9r33cfbh9n32wfdh93X3kfd59+33yfeF9BX4KfiN+IX4SfjF+H34Jfgt+In5GfmZ+O341fjl+Q343fjJ+On5nfl1+Vn5efll+Wn55fmp+aX58fnt+g37VfX1+ro9/foh+iX6MfpJ+kH6TfpR+ln6Ofpt+nH44fzp/RX9Mf01/Tn9Qf1F/VX9Uf1h/X39gf2h/aX9nf3h/gn+Gf4N/iH+Hf4x/lH+ef51/mn+jf69/sn+5f65/tn+4f3GLxX/Gf8p/1X/Uf+F/5n/pf/N/+X/cmAaABIALgBKAGIAZgByAIYAogD+AO4BKgEaAUoBYgFqAX4BigGiAc4BygHCAdoB5gH2Af4CEgIaAhYCbgJOAmoCtgJBRrIDbgOWA2YDdgMSA2oDWgAmB74DxgBuBKYEjgS+BS4GLlkaBPoFTgVGB/IBxgW6BZYFmgXSBg4GIgYqBgIGCgaCBlYGkgaOBX4GTgamBsIG1gb6BuIG9gcCBwoG6gcmBzYHRgdmB2IHIgdqB34HggeeB+oH7gf6BAYICggWCB4IKgg2CEIIWgimCK4I4gjOCQIJZgliCXYJagl+CZIJigmiCaoJrgi6CcYJ3gniCfoKNgpKCq4KfgruCrILhguOC34LSgvSC84L6gpODA4P7gvmC3oIGg9yCCYPZgjWDNIMWgzKDMYNAgzmDUINFgy+DK4MXgxiDhYOag6qDn4Oig5aDI4OOg4eDioN8g7WDc4N1g6CDiYOog/SDE4Trg86D/YMDhNiDC4TBg/eDB4Tgg/KDDYQihCCEvYM4hAaF+4NthCqEPIRahYSEd4RrhK2EboSChGmERoQshG+EeYQ1hMqEYoS5hL+En4TZhM2Eu4TahNCEwYTGhNaEoYQhhf+E9IQXhRiFLIUfhRWFFIX8hECFY4VYhUiFQYUChkuFVYWAhaSFiIWRhYqFqIVthZSFm4XqhYeFnIV3hX6FkIXJhbqFz4W5hdCF1YXdheWF3IX5hQqGE4YLhv6F+oUGhiKGGoYwhj+GTYZVTlSGX4ZnhnGGk4ajhqmGqoaLhoyGtoavhsSGxoawhsmGI4irhtSG3obphuyG34bbhu+GEocGhwiHAIcDh/uGEYcJhw2H+YYKhzSHP4c3hzuHJYcphxqHYIdfh3iHTIdOh3SHV4doh26HWYdTh2OHaocFiKKHn4eCh6+Hy4e9h8CH0IfWlquHxIezh8eHxoe7h++H8ofghw+IDYj+h/aH94cOiNKHEYgWiBWIIoghiDGINog5iCeIO4hEiEKIUohZiF6IYohriIGIfoieiHWIfYi1iHKIgoiXiJKIroiZiKKIjYikiLCIv4ixiMOIxIjUiNiI2YjdiPmIAon8iPSI6IjyiASJDIkKiROJQ4keiSWJKokriUGJRIk7iTaJOIlMiR2JYIleiWaJZIltiWqJb4l0iXeJfomDiYiJiomTiZiJoYmpiaaJrImvibKJuom9ib+JwInaidyJ3YnnifSJ+IkDihaKEIoMihuKHYolijaKQYpbilKKRopIinyKbYpsimKKhYqCioSKqIqhipGKpYqmipqKo4rEis2KworaiuuK84rniuSK8YoUi+CK4or3it6K24oMiweLGovhihaLEIsXiyCLM4urlyaLK4s+iyiLQYtMi0+LTotJi1aLW4tai2uLX4tsi2+LdIt9i4CLjIuOi5KLk4uWi5mLmos6jEGMP4xIjEyMToxQjFWMYoxsjHiMeoyCjImMhYyKjI2MjoyUjHyMmIwdYq2Mqoy9jLKMs4yujLaMyIzBjOSM44zajP2M+oz7jASNBY0KjQeND40NjRCNTp8Tjc2MFI0WjWeNbY1xjXONgY2ZjcKNvo26jc+N2o3WjcyN243LjeqN643fjeON/I0IjgmO/40djh6OEI4fjkKONY4wjjSOSo5HjkmOTI5QjkiOWY5kjmCOKo5jjlWOdo5yjnyOgY6HjoWOhI6LjoqOk46RjpSOmY6qjqGOrI6wjsaOsY6+jsWOyI7LjtuO4478jvuO647+jgqPBY8VjxKPGY8TjxyPH48bjwyPJo8zjzuPOY9Fj0KPPo9Mj0mPRo9Oj1ePXI9ij2OPZI+cj5+Po4+tj6+Pt4/aj+WP4o/qj++Ph5D0jwWQ+Y/6jxGQFZAhkA2QHpAWkAuQJ5A2kDWQOZD4j0+QUJBRkFKQDpBJkD6QVpBYkF6QaJBvkHaQqJZykIKQfZCBkICQipCJkI+QqJCvkLGQtZDikOSQSGLbkAKREpEZkTKRMJFKkVaRWJFjkWWRaZFzkXKRi5GJkYKRopGrka+RqpG1kbSRupHAkcGRyZHLkdCR1pHfkeGR25H8kfWR9pEekv+RFJIskhWSEZJekleSRZJJkmSSSJKVkj+SS5JQkpySlpKTkpuSWpLPkrmSt5Lpkg+T+pJEky6TGZMikxqTI5M6kzWTO5Nck2CTfJNuk1aTsJOsk62TlJO5k9aT15Pok+WT2JPDk92T0JPIk+STGpQUlBOUA5QHlBCUNpQrlDWUIZQ6lEGUUpRElFuUYJRilF6UapQpknCUdZR3lH2UWpR8lH6UgZR/lIKVh5WKlZSVlpWYlZmVoJWolaeVrZW8lbuVuZW+lcqV9m/Dlc2VzJXVldSV1pXcleGV5ZXilSGWKJYuli+WQpZMlk+WS5Z3llyWXpZdll+WZpZylmyWjZaYlpWWl5aqlqeWsZaylrCWtJa2lriWuZbOlsuWyZbNlk2J3JYNl9WW+ZYElwaXCJcTlw6XEZcPlxaXGZcklyqXMJc5lz2XPpdEl0aXSJdCl0mXXJdgl2SXZpdol9JSa5dxl3mXhZd8l4GXepeGl4uXj5eQl5yXqJeml6OXs5e0l8OXxpfIl8uX3Jftl0+f8pffevaX9ZcPmAyYOJgkmCGYN5g9mEaYT5hLmGuYb5hwmHGYdJhzmKqYr5ixmLaYxJjDmMaY6ZjrmAOZCZkSmRSZGJkhmR2ZHpkkmSCZLJkumT2ZPplCmUmZRZlQmUuZUZlSmUyZVZmX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UW1RblFsUZdR9lEGUgdSCFL7Uv5S/1IWUzlTSFNHU0VTXlOEU8tTylPNU+xYKVkrWSpZLVlUWxFcJFw6XG9c9F17Xv9eFF8VX8NfCGI2YktiTmIvZYdll2WkZbll5WXwZghnKGcga2JreWvLa9Rr22sPbDRsa3AqcjZyO3JHcllyW3KscotzGU4WThVOFE4YTjtOTU5PTk5O5U7YTtRO1U7WTtdO407kTtlO3k5FUURRiVGKUaxR+VH6UfhRClKgUp9SBVMGUxdTHVPfTkpTSVNhU2BTb1NuU7tT71PkU/NT7FPuU+lT6FP8U/hT9VPrU+ZT6lPyU/FT8FPlU+1T+1PbVtpWFlkuWTFZdFl2WVVbg1s8XOhd513mXQJeA15zXnxeAV8YXxdfxV8KYlNiVGJSYlFipWXmZS5nLGcqZytnLWdja81rEWwQbDhsQWxAbD5sr3KEc4lz3HTmdBh1H3UodSl1MHUxdTJ1M3WLdX12rna/du5223fid/N3Onm+eXR6y3oeTh9OUk5TTmlOmU6kTqZOpU7/TglPGU8KTxVPDU8QTxFPD0/yTvZO+07wTvNO/U4BTwtPSVFHUUZRSFFoUXFRjVGwURdSEVISUg5SFlKjUghTIVMgU3BTcVMJVA9UDFQKVBBUAVQLVARUEVQNVAhUA1QOVAZUElTgVt5W3VYzVzBXKFctVyxXL1cpVxlZGlk3WThZhFl4WYNZfVl5WYJZgVlXW1hbh1uIW4VbiVv6WxZceVzeXQZedl50Xg9fG1/ZX9ZfDmIMYg1iEGJjYltiWGI2Zell6GXsZe1l8mbzZglnPWc0ZzFnNWcha2Rre2sWbF1sV2xZbF9sYGxQbFVsYWxbbE1sTmxwcF9yXXJ+dvl6c3z4fDZ/in+9fwGAA4AMgBKAM4B/gImAi4CMgOOB6oHzgfyBDIIbgh+CboJygn6Ca4ZAiEyIY4h/iSGWMk6oTk1PT09HT1dPXk80T1tPVU8wT1BPUU89TzpPOE9DT1RPPE9GT2NPXE9gTy9PTk82T1lPXU9IT1pPTFFLUU1RdVG2UbdRJVIkUilSKlIoUqtSqVKqUqxSI1NzU3VTHVQtVB5UPlQmVE5UJ1RGVENUM1RIVEJUG1QpVEpUOVQ7VDhULlQ1VDZUIFQ8VEBUMVQrVB9ULFTqVvBW5FbrVkpXUVdAV01XR1dOVz5XUFdPVztX71g+WZ1ZklmoWZ5Zo1mZWZZZjVmkWZNZilmlWV1bXFtaW1tbjFuLW49bLFxAXEFcP1w+XJBckVyUXIxc610MXo9eh16KXvdeBF8fX2RfYl93X3lf2F/MX9dfzV/xX+tf+F/qXxJiEWKEYpdilmKAYnZiiWJtYopifGJ+Ynlic2KSYm9imGJuYpVik2KRYoZiOWU7ZThl8WX0Zl9nTmdPZ1BnUWdcZ1ZnXmdJZ0ZnYGdTZ1dnZWvPa0JsXmyZbIFsiGyJbIVsm2xqbHpskGxwbIxsaGyWbJJsfWyDbHJsfmx0bIZsdmyNbJRsmGyCbHZwfHB9cHhwYnJhcmByxHLCcpZzLHUrdTd1OHWCdu9243fBecB5v3l2evt8VX+WgJOAnYCYgJuAmoCygG+CkoKLgo2Ci4nSiQCKN4xGjFWMnYxkjXCNs42rjsqOm4+wj8KPxo/Fj8SP4V2RkKKQqpCmkKOQSZHGkcyRMpYuljGWKpYsliZOVk5zTotOm06eTqtOrE5vT51PjU9zT39PbE+bT4tPhk+DT3BPdU+IT2lPe0+WT35Pj0+RT3pPVFFSUVVRaVF3UXZReFG9Uf1RO1I4UjdSOlIwUi5SNlJBUr5Su1JSU1RTU1NRU2ZTd1N4U3lT1lPUU9dTc1R1VJZUeFSVVIBUe1R3VIRUklSGVHxUkFRxVHZUjFSaVGJUaFSLVH1UjlT6VoNXd1dqV2lXYVdmV2RXfFccWUlZR1lIWURZVFm+WbtZ1Fm5Wa5Z0VnGWdBZzVnLWdNZylmvWbNZ0lnFWV9bZFtjW5dbmluYW5xbmVubWxpcSFxFXEZct1yhXLhcqVyrXLFcs1wYXhpeFl4VXhteEV54Xppel16cXpVell72XiZfJ18pX4BfgV9/X3xf3V/gX/1f9V//Xw9gFGAvYDVgFmAqYBVgIWAnYClgK2AbYBZiFWI/Yj5iQGJ/YslizGLEYr9iwmK5YtJi22KrYtNi1GLLYshiqGK9Yrxi0GLZYsdizWK1YtpisWLYYtZi12LGYqxizmI+ZadlvGX6ZRRmE2YMZgZmAmYOZgBmD2YVZgpmB2YNZwtnbWeLZ5VncWecZ3Nnd2eHZ51nl2dvZ3Bnf2eJZ35nkGd1Z5pnk2d8Z2pncmcja2ZrZ2t/axNsG2zjbOhs82yxbMxs5WyzbL1svmy8bOJsq2zVbNNsuGzEbLlswWyubNdsxWzxbL9su2zhbNtsymysbO9s3GzWbOBslXCOcJJwinCZcCxyLXI4ckhyZ3JpcsByznLZctdy0HKpc6hzn3Orc6VzPXWddZl1mnWEdsJ28nb0duV3/Xc+eUB5QXnJech5enp5evp6/nxUf4x/i38FgLqApYCigLGAoYCrgKmAtICqgK+A5YH+gQ2Cs4KdgpmCrYK9gp+CuYKxgqyCpYKvgriCo4Kwgr6Ct4JOhnGGHVJoiMuOzo/Uj9GPtZC4kLGQtpDHkdGRd5WAlRyWQJY/ljuWRJZClrmW6JZSl16Xn06tTq5O4U+1T69Pv0/gT9FPz0/dT8NPtk/YT99Pyk/XT65P0E/ET8JP2k/OT95Pt09XUZJRkVGgUU5SQ1JKUk1STFJLUkdSx1LJUsNSwVINU1dTe1OaU9tTrFTAVKhUzlTJVLhUplSzVMdUwlS9VKpUwVTEVMhUr1SrVLFUu1SpVKdUv1T/VoJXi1egV6NXolfOV65Xk1dVWVFZT1lOWVBZ3FnYWf9Z41noWQNa5VnqWdpZ5lkBWvtZaVujW6ZbpFuiW6VbAVxOXE9cTVxLXNlc0lz3XR1eJV4fXn1eoF6mXvpeCF8tX2VfiF+FX4pfi1+HX4xfiV8SYB1gIGAlYA5gKGBNYHBgaGBiYEZgQ2BsYGtgamBkYEFi3GIWYwlj/GLtYgFj7mL9Ygdj8WL3Yu9i7GL+YvRiEWMCYz9lRWWrZb1l4mUlZi1mIGYnZi9mH2YoZjFmJGb3Zv9n02fxZ9Rn0GfsZ7Znr2f1Z+ln72fEZ9FntGfaZ+VnuGfPZ95n82ewZ9ln4mfdZ9JnamuDa4ZrtWvSa9drH2zJbAttMm0qbUFtJW0MbTFtHm0XbTttPW0+bTZtG231bDltJ204bSltLm01bQ5tK22rcLpws3CscK9wrXC4cK5wpHAwcnJyb3J0culy4HLhcrdzynO7c7JzzXPAc7NzGnUtdU91THVOdUt1q3WkdaV1onWjdXh2hnaHdoh2yHbGdsN2xXYBd/l2+HYJdwt3/nb8dgd33HcCeBR4DHgNeEZ5SXlIeUd5uXm6edF50nnLeX96gXr/ev16fXwCfQV9AH0JfQd9BH0GfTh/jn+/fwSAEIANgBGANoDWgOWA2oDDgMSAzIDhgNuAzoDegOSA3YD0gSKC54IDgwWD44LbguaCBIPlggKDCYPSgteC8YIBg9yC1ILRgt6C04Lfgu+CBoNQhnmGe4Z6hk2Ia4iBidSJCIoCigOKnoygjHSNc420jc2OzI7wj+aP4o/qj+WP7Y/rj+SP6I/KkM6QwZDDkEuRSpHNkYKVUJZLlkyWTZZil2mXy5ftl/OXAZiomNuY35iWmZmZWE6zTgxQDVAjUO9PJlAlUPhPKVAWUAZQPFAfUBpQElARUPpPAFAUUChQ8U8hUAtQGVAYUPNP7k8tUCpQ/k8rUAlQfFGkUaVRolHNUcxRxlHLUVZSXFJUUltSXVIqU39Tn1OdU99T6FQQVQFVN1X8VOVU8lQGVfpUFFXpVO1U4VQJVe5U6lTmVCdVB1X9VA9VA1cEV8JX1FfLV8NXCVgPWVdZWFlaWRFaGFocWh9aG1oTWuxZIFojWilaJVoMWglaa1tYXLBbs1u2W7Rbrlu1W7lbuFsEXFFcVVxQXO1c/Vz7XOpc6FzwXPZcAV30XO5dLV4rXqterV6nXjFfkl+RX5BfWWBjYGVgUGBVYG1gaWBvYIRgn2CaYI1glGCMYIVglmBHYvNiCGP/Yk5jPmMvY1VjQmNGY09jSWM6Y1BjPWMqYytjKGNNY0xjSGVJZZllwWXFZUJmSWZPZkNmUmZMZkVmQWb4ZhRnFWcXZyFoOGhIaEZoU2g5aEJoVGgpaLNoF2hMaFFoPWj0Z1BoQGg8aENoKmhFaBNoGGhBaIpriWu3ayNsJ2wobCZsJGzwbGptlW2IbYdtZm14bXdtWW2TbWxtiW1ubVptdG1pbYxtim15bYVtZW2Ubcpw2HDkcNlwyHDPcDlyeXL8cvly/XL4cvdyhnPtcwl07nPgc+pz3nNUdV11XHVadVl1vnXFdcd1snWzdb11vHW5dcJ1uHWLdrB2ynbNds52KXcfdyB3KHfpdzB4J3g4eB14NHg3eCV4LXggeB94MnhVeVB5YHlfeVZ5XnldeVd5WnnkeeN553nfeeZ56XnYeYR6iHrZegZ7EXuJfCF9F30LfQp9IH0ifRR9EH0VfRp9HH0NfRl9G306f19/lH/Ff8F/BoAYgBWAGYAXgD2AP4DxgAKB8IAFge2A9IAGgfiA84AIgf2ACoH8gO+A7YHsgQCCEIIqgiuCKIIsgruCK4NSg1SDSoM4g1CDSYM1gzSDT4MygzmDNoMXg0CDMYMog0ODVIaKhqqGk4akhqmGjIajhpyGcIh3iIGIgoh9iHmIGIoQig6KDIoVigqKF4oTihaKD4oRikiMeox5jKGMoox3jayO0o7Ujs+OsY8BkAaQ948AkPqP9I8DkP2PBZD4j5WQ4ZDdkOKQUpFNkUyR2JHdkdeR3JHZkYOVYpZjlmGWW5ZdlmSWWJZelruW4pismaia2JolmzKbPJt+TnpQfVBcUEdQQ1BMUFpQSVBlUHZQTlBVUHVQdFB3UE9QD1BvUG1QXFGVUfBRalJvUtJS2VLYUtVSEFMPUxlTP1NAUz5Tw1P8ZkZValVmVURVXlVhVUNVSlUxVVZVT1VVVS9VZFU4VS5VXFUsVWNVM1VBVVdVCFcLVwlX31cFWApYBljgV+RX+lcCWDVY91f5VyBZYlk2WkFaSVpmWmpaQFo8WmJaWlpGWkpacFvHW8VbxFvCW79bxlsJXAhcB1xgXFxcXVwHXQZdDl0bXRZdIl0RXSldFF0ZXSRdJ10XXeJdOF42XjNeN163Xrhetl61Xr5eNV83X1dfbF9pX2tfl1+ZX55fmF+hX6BfnF9/YKNgiWCgYKhgy2C0YOZgvWDFYLtgtWDcYLxg2GDVYMZg32C4YNpgx2AaYhtiSGKgY6djcmOWY6JjpWN3Y2djmGOqY3FjqWOJY4Njm2NrY6hjhGOIY5ljoWOsY5Jjj2OAY3tjaWNoY3pjXWVWZVFlWWVXZV9VT2VYZVVlVGWcZZtlrGXPZctlzGXOZV1mWmZkZmhmZmZeZvlm11IbZ4For2iiaJNotWh/aHZosWinaJdosGiDaMRorWiGaIVolGidaKhon2ihaIJoMmu6a+tr7GsrbI5tvG3zbdltsm3hbcxt5G37bfptBW7Hbcttr23Rba5t3m35bbht9231bcVt0m0abrVt2m3rbdht6m3xbe5t6G3GbcRtqm3sbb9t5m35cAlxCnH9cO9wPXJ9coFyHHMbcxZzE3MZc4dzBXQKdAN0BnT+cw104HT2dPd0HHUidWV1ZnVidXB1j3XUddV1tXXKdc11jnbUdtJ223Y3dz53PHc2dzh3OndreEN4TnhleWh5bXn7eZJ6lXogeyh7G3sseyZ7GXseey57knyXfJV8Rn1DfXF9Ln05fTx9QH0wfTN9RH0vfUJ9Mn0xfT1/nn+af8x/zn/SfxyASoBGgC+BFoEjgSuBKYEwgSSBAoI1gjeCNoI5go6DnoOYg3iDooOWg72Dq4OSg4qDk4OJg6CDd4N7g3yDhoOng1WGal/HhsCGtobEhrWGxobLhrGGr4bJhlOInoiIiKuIkoiWiI2Ii4iTiY+JKoodiiOKJYoxii2KH4obiiKKSYxajKmMrIyrjKiMqoynjGeNZo2+jbqN247fjhmQDZAakBeQI5AfkB2QEJAVkB6QIJAPkCKQFpAbkBSQ6JDtkP2QV5HOkfWR5pHjkeeR7ZHpkYmVapZ1lnOWeJZwlnSWdpZ3lmyWwJbqlumW4HrfegKYA5ham+WcdZ5/nqWeu56iUI1QhVCZUJFQgFCWUJhQmlAAZ/FRclJ0UnVSaVLeUt1S21JaU6VTe1WAVadVfFWKVZ1VmFWCVZxVqlWUVYdVi1WDVbNVrlWfVT5VslWaVbtVrFWxVX5ViVWrVZlVDVcvWCpYNFgkWDBYMVghWB1YIFj5WPpYYFl3Wppaf1qSWptap1pzW3Fb0lvMW9Nb0FsKXAtcMVxMXVBdNF1HXf1dRV49XkBeQ15+XspewV7CXsRePF9tX6lfql+oX9Fg4WCyYLZg4GAcYSNh+mAVYfBg+2D0YGhh8WAOYfZgCWEAYRJhH2JJYqNjjGPPY8Bj6WPJY8ZjzWPSY+Nj0GPhY9Zj7WPuY3Zj9GPqY9tjUmTaY/ljXmVmZWJlY2WRZZBlr2VuZnBmdGZ2Zm9mkWZ6Zn5md2b+Zv9mH2cdZ/po1WjgaNho12gFad9o9WjuaOdo+WjSaPJo42jLaM1oDWkSaQ5pyWjaaG5p+2g+azprPWuYa5ZrvGvvay5sL2wsbC9uOG5UbiFuMm5nbkpuIG4lbiNuG25bblhuJG5Wbm5uLW4mbm9uNG5NbjpuLG5Dbh1uPm7LboluGW5ObmNuRG5ybmluX24ZcRpxJnEwcSFxNnFucRxxTHKEcoByNnMlczRzKXM6dCp0M3QidCV0NXQ2dDR0L3QbdCZ0KHQldSZ1a3VqdeJ123Xjddl12HXedeB1e3Z8dpZ2k3a0dtx2T3ftd114bHhveA16CHoLegV6AHqYepd6lnrleuN6SXtWe0Z7UHtSe1R7TXtLe097UXuffKV8Xn1QfWh9VX0rfW59cn1hfWZ9Yn1wfXN9hFXUf9V/C4BSgIWAVYFUgUuBUYFOgTmBRoE+gUyBU4F0gRKCHILpgwOE+IMNhOCDxYMLhMGD74Pxg/SDV4QKhPCDDITMg/2D8oPKgziEDoQEhNyDB4TUg9+DW4bfhtmG7YbUhtuG5IbQht6GV4jBiMKIsYiDiZaJO4pgilWKXoo8ikGKVIpbilCKRoo0ijqKNopWimGMgoyvjLyMs4y9jMGMu4zAjLSMt4y2jL+MuIyKjYWNgY3Ojd2Ny43ajdGNzI3bjcaN+474jvyOnI8ukDWQMZA4kDKQNpACkfWQCZH+kGORZZHPkRSSFZIjkgmSHpINkhCSB5IRkpSVj5WLlZGVk5WSlY6VipaOlouWfZaFloaWjZZyloSWwZbFlsSWxpbHlu+W8pbMlwWYBpgImOeY6pjvmOmY8pjtmK6ZrZnDns2e0Z6CTq1QtVCyULNQxVC+UKxQt1C7UK9Qx1B/UndSfVLfUuZS5FLiUuNSL1PfVehV01XmVc5V3FXHVdFV41XkVe9V2lXhVcVVxlXlVclVElcTV15YUVhYWFdYWlhUWGtYTFhtWEpYYlhSWEtYZ1nBWslazFq+Wr1avFqzWsJaslppXW9dTF55XsleyF4SX1lfrF+uXxphD2FIYR9h82AbYflgAWEIYU5hTGFEYU1hPmE0YSdhDWEGYTdhIWIiYhNkPmQeZCpkLWQ9ZCxkD2QcZBRkDWQ2ZBZkF2QGZGxln2WwZZdmiWaHZohmlmaEZphmjWYDZ5RpbWlaaXdpYGlUaXVpMGmCaUppaGlraV5pU2l5aYZpXWljaVtpR2tya8Brv2vTa/1rom6vbtNutm7CbpBunW7HbsVupW6Ybrxuum6rbtFulm6cbsRu1G6qbqdutG5OcVlxaXFkcUlxZ3FccWxxZnFMcWVxXnFGcWhxVnE6clJyN3NFcz9zPnNvdFp0VXRfdF50QXQ/dFl0W3RcdHZ1eHUAdvB1AXbydfF1+nX/dfR183Xedt92W3drd2Z3Xndjd3l3andsd1x3ZXdod2J37neOeLB4l3iYeIx4iXh8eJF4k3h/eHp5f3mBeSyEvXkcehp6IHoUeh96HnqfeqB6d3vAe2B7bntne7F8s3y1fJN9eX2RfYF9j31bfW5/aX9qf3J/qX+of6R/VoBYgIaAhIBxgXCBeIFlgW6Bc4FrgXmBeoFmgQWCR4KChHeEPYQxhHWEZoRrhEmEbIRbhDyENYRhhGOEaYRthEaEXoZchl+G+YYThwiHB4cAh/6G+4YChwOHBocKh1mI34jUiNmI3IjYiN2I4YjKiNWI0oicieOJa4pyinOKZoppinCKh4p8imOKoIpxioWKbYpiim6KbIp5inuKPopoimKMioyJjMqMx4zIjMSMsozDjMKMxYzhjd+N6I3vjfON+o3qjeSN5o2yjgOPCY/+jgqPn4+yj0uQSpBTkEKQVJA8kFWQUJBHkE+QTpBNkFGQPpBBkBKRF5FskWqRaZHJkTeSV5I4kj2SQJI+kluSS5JkklGSNJJJkk2SRZI5kj+SWpKYlZiWlJaVls2Wy5bJlsqW95b7lvmW9pZWl3SXdpcQmBGYE5gKmBKYDJj8mPSY/Zj+mLOZsZm0meGa6ZyCng6fE58gn+dQ7lDlUNZQ7VDaUNVQz1DRUPFQzlDpUGJR81GDUoJSMVOtU/5VAFYbVhdW/VUUVgZWCVYNVg5W91UWVh9WCFYQVvZVGFcWV3VYfliDWJNYilh5WIVYfVj9WCVZIlkkWWpZaVnhWuZa6VrXWtZa2FrjWnVb3lvnW+Fb5VvmW+hb4lvkW99bDVxiXIRdh11bXmNeVV5XXlRe017WXgpfRl9wX7lfR2E/YUthd2FiYWNhX2FaYVhhdWEqYodkWGRUZKRkeGRfZHpkUWRnZDRkbWR7ZHJloWXXZdZlomaoZp1mnGmoaZVpwWmuadNpy2mbabdpu2mrabRp0GnNaa1pzGmmacNpo2lJa0xrM2wzbxRv/m4Tb/RuKW8+byBvLG8PbwJvIm//bu9uBm8xbzhvMm8jbxVvK28vb4hvKm/sbgFv8m7MbvdulHGZcX1xinGEcZJxPnKScpZyRHNQc2R0Y3RqdHB0bXQEdZF1J3YNdgt2CXYTduF243aEd313f3dhd8F4n3ineLN4qXijeI55j3mNeS56MXqqeql67XrveqF7lXuLe3V7l3ude5R7j3u4e4d7hHu5fL18vny7fbB9nH29fb59oH3KfbR9sn2xfbp9on2/fbV9uH2tfdJ9x32sfXB/4H/hf99/XoBagIeAUIGAgY+BiIGKgX+BgoHngfqBB4IUgh6CS4LJhL+ExoTEhJmEnoSyhJyEy4S4hMCE04SQhLyE0YTKhD+HHIc7hyKHJYc0hxiHVYc3hymH84gCifSI+Yj4iP2I6Igaie+IpoqMip6Ko4qNiqGKk4qkiqqKpYqoipiKkYqaiqeKaoyNjIyM04zRjNKMa42ZjZWN/I0UjxKPFY8Tj6OPYJBYkFyQY5BZkF6QYpBdkFuQGZEYkR6RdZF4kXeRdJF4koCShZKYkpaSe5KTkpySqJJ8kpGSoZWolamVo5WllaSVmZaclpuWzJbSlgCXfJeFl/aXF5gYmK+YsZgDmQWZDJkJmcGZr5qwmuaaQZtCm/Sc9pzznLyeO59KnwRRAFH7UPVQ+VACUQhRCVEFUdxRh1KIUolSjVKKUvBSslMuVjtWOVYyVj9WNFYpVlNWTlZXVnRWNlYvVjBWgFifWJ5Ys1icWK5YqVimWG1ZCVv7Wgtb9VoMWwhb7lvsW+lb61tkXGVcnV2UXWJeX15hXuJe2l7fXt1e417gXkhfcV+3X7VfdmFnYW5hXWFVYYJhfGFwYWthfmGnYZBhq2GOYaxhmmGkYZRhrmEuYmlkb2R5ZJ5ksmSIZJBksGSlZJNklWSpZJJkrmStZKtkmmSsZJlkomSzZHVld2V4Za5mq2a0ZrFmI2ofauhpAWoeahlq/WkhahNqCmrzaQJqBWrtaRFqUGtOa6RrxWvGaz9vfG+Eb1FvZm9Ub4ZvbW9bb3hvbm+Ob3pvcG9kb5dvWG/Vbm9vYG9fb59xrHGxcahxVnKbck5zV3NpdIt0g3R+dIB0f3Ugdil2H3YkdiZ2IXYidpp2unbkdo53h3eMd5F3i3fLeMV4unjKeL541Xi8eNB4P3o8ekB6PXo3ejt6r3queq17sXvEe7R7xnvHe8F7oHvMe8p84H30fe99+33Yfex93X3ofeN92n3efel9nn3ZffJ9+X11f3d/r3/pfyaAm4GcgZ2BoIGagZiBF4U9hRqF7oQshS2FE4URhSOFIYUUheyEJYX/hAaFgod0h3aHYIdmh3iHaIdZh1eHTIdTh1uIXYgQiQeJEokTiRWJCom8itKKx4rEipWKy4r4irKKyYrCir+KsIrWis2Ktoq5ituKTIxOjGyM4IzejOaM5IzsjO2M4ozjjNyM6ozhjG2Nn42jjSuOEI4djiKOD44pjh+OIY4ejrqOHY8bjx+PKY8mjyqPHI8ejyWPaZBukGiQbZB3kDCRLZEnkTGRh5GJkYuRg5HFkruSt5LqkqyS5JLBkrOSvJLSkseS8JKykq2VsZUElwaXB5cJl2CXjZeLl4+XIZgrmByYs5gKmROZEpkYmd2Z0JnfmduZ0ZnVmdKZ2Zm3mu6a75onm0WbRJt3m2+bBp0JnQOdqZ6+ns6eqFhSnxJRGFEUURBRFVGAUapR3VGRUpNS81JZVmtWeVZpVmRWeFZqVmhWZVZxVm9WbFZiVnZWwVi+WMdYxVhuWR1bNFt4W/BbDlxKX7JhkWGpYYphzWG2Yb5hymHIYTBixWTBZMtku2S8ZNpkxGTHZMJkzWS/ZNJk1GS+ZHRlxmbJZrlmxGbHZrhmPWo4ajpqWWpralhqOWpEamJqYWpLakdqNWpfakhqWWt3awVswm+xb6Fvw2+kb8Fvp2+zb8BvuW+2b6ZvoG+0b75xyXHQcdJxyHHVcblxznHZcdxxw3HEcWhznHSjdJh0n3SedOJ0DHUNdTR2OHY6dud25Xagd553n3eld+h42njseOd4pnlNek56RnpMekt6unrZexF8yXvke9t74Xvpe+Z71XzWfAp+EX4Ifht+I34efh1+CX4Qfnl/sn/wf/F/7n8ogLOBqYGogfuBCIJYglmCSoVZhUiFaIVphUOFSYVthWqFXoWDh5+Hnoeih42HYYgqiTKJJYkriSGJqommieaK+orrivGKAIvciueK7or+igGLAov3iu2K84r2ivyKa4xtjJOM9IxEjjGONI5CjjmONY47jy+POI8zj6iPpo91kHSQeJBykHyQepA0kZKRIJM2k/iSM5MvkyKT/JIrkwSTGpMQkyaTIZMVky6TGZO7laeWqJaqltWWDpcRlxaXDZcTlw+XW5dcl2aXmJcwmDiYO5g3mC2YOZgkmBCZKJkemRuZIZkame2Z4pnxmbiavJr7mu2aKJuRmxWdI50mnSidEp0bndie1J6Nn5yfKlEfUSFRMlH1Uo5WgFaQVoVWh1aPVtVY01jRWM5YMFsqWyRbels3XGhcvF26Xb1duF1rXkxfvV/JYcJhx2HmYcthMmI0Ys5kymTYZOBk8GTmZOxk8WTiZO1kgmWDZdlm1maAapRqhGqiapxq22qjan5ql2qQaqBqXGuua9prCGzYb/Fv32/gb9tv5G/rb+9vgG/sb+Fv6W/Vb+5v8G/ncd9x7nHmceVx7XHscfRx4HE1ckZycHNyc6l0sHSmdKh0RnZCdkx26nazd6p3sHesd6d3rXfvd/d4+nj0eO94AXmneap5V3q/egd8DXz+e/d7DHzge+B83HzefOJ833zZfN18Ln4+fkZ+N34yfkN+K349fjF+RX5BfjR+OX5IfjV+P34vfkR/83/8f3GAcoBwgG+Ac4DGgcOBuoHCgcCBv4G9gcmBvoHogQmCcYKqhYSFfoWchZGFlIWvhZuFh4WohYqFZ4bAh9GHs4fSh8aHq4e7h7qHyIfLhzuJNolEiTiJPYmsiQ6LF4sZixuLCosgix2LBIsQi0GMP4xzjPqM/Yz8jPiM+4yojUmOS45IjkqORI8+j0KPRY8/j3+QfZCEkIGQgpCAkDmRo5GekZyRTZOCkyiTdZNKk2WTS5MYk36TbJNbk3CTWpNUk8qVy5XMlciVxpWxlriW1pYclx6XoJfTl0aYtpg1mQGa/5mum6ubqputmzudP52Lns+e3p7cnt2e254+n0uf4lOVVq5W2VjYWDhbXV/jYTNi9GTyZP5kBmX6ZPtk92S3ZdxmJmezaqxqw2q7arhqwmquaq9qX2t4a69rCXALcP5vBnD6bxFwD3D7cfxx/nH4cXdzdXOndL90FXVWdlh2Una9d793u3e8dw55rnlhemJ6YHrEesV6K3wnfCp8HnwjfCF853xUflV+Xn5afmF+Un5Zfkh/+X/7f3eAdoDNgc+BCoLPhamFzYXQhcmFsIW6hbmFpoXvh+yH8ofgh4aJson0iSiLOYssiyuLUIwFjVmOY45mjmSOX45VjsCOSY9Nj4eQg5CIkKuRrJHQkZSTipOWk6KTs5Ouk6yTsJOYk5qTl5PUldaV0JXVleKW3JbZltuW3pYkl6OXppetl/mXTZhPmEyYTphTmLqYPpk/mT2ZLpmlmQ6awZoDmwabT5tOm02bypvJm/2byJvAm1GdXZ1gneCeFZ8snzNRpVbeWN9Y4lj1W5Cf7F7yYfdh9mH1YQBlD2XgZt1m5Wrdatpq02obcB9wKHAacB1wFXAYcAZyDXJYcqJyeHN6c710ynTjdId1hnVfdmF2x3cZebF5a3ppej58P3w4fD18N3xAfGt+bX55fml+an6Ff3N+tn+5f7h/2IHphd2F6oXVheSF5YX3hfuHBYgNiPmH/odgiV+JVoleiUGLXItYi0mLWotOi0+LRotZiwiNCo18jnKOh452jmyOeo50jlSPTo+tj4qQi5Cxka6R4ZPRk9+Tw5PIk9yT3ZPWk+KTzZPYk+ST15Pok9yVtJbjliqXJ5dhl9yX+5demFiYW5i8mEWZSZkWmhmaDZvom+eb1pvbm4mdYZ1ynWqdbJ2Snpeek560nvhSqFa3VrZWtFa8VuRYQFtDW31b9lvJXfhh+mEYZRRlGWXmZidn7Go+cDBwMnAQcntzz3RidmV2JnkqeSx5K3nHevZ6THxDfE1873zwfK6PfX58foJ+TH8AgNqBZoL7hfmFEYb6hQaGC4YHhgqGFIgViGSJuon4iXCLbItmi2+LX4triw+NDY2JjoGOhY6CjrSRy5EYlAOU/ZPhlTCXxJhSmVGZqJkrmjCaN5o1mhOcDZx5nrWe6J4vn1+fY59hnzdROFHBVsBWwlYUWWxczV38Yf5hHWUcZZVl6Wb7agRr+mqya0xwG3KnctZ01HRpdtN3UHyPfox+vH8Xhi2GGoYjiCKIIYgfiGqJbIm9iXSLd4t9ixONio6NjouOX4+vj7qRLpQzlDWUOpQ4lDKUK5TilTiXOZcyl/+XZ5hlmFeZRZpDmkCaPprPmlSbUZstnCWcr520ncKduJ2dnu+eGZ9cn2afZ588UTtRyFbKVslWf1vUXdJdTl//YSRlCmtha1FwWHCAc+R0inVudmx2s3lgfF98foB9gN+BcolvifyJgIsWjReNkY6TjmGPSJFElFGUUpQ9lz6Xw5fBl2uYVZlVmk2a0poam0mcMZw+nDuc053XnTSfbJ9qn5SfzFbWXQBiI2UrZSpl7GYQa9p0ynpkfGN8ZXyTfpZ+lH7igTiGP4YxiIqLkJCPkGOUYJRklGiXb5hcmVqaW5pXmtOa1JrRmlScV5xWnOWdn570ntFW6VgsZV5wcXZydtd3UH+IfzaIOYhiiJOLkouWi3eCG43AkWqUQpdIl0SXxpdwmF+aIptYm1+c+Z36nXyefZ4Hn3efcp/zXhZrY3BsfG58O4jAiaGOwZFylHCUcZhemdaaI5vMnmRw2neai3eUyZdimmWanH6ci6qOxZF9lH6UfJR3nHic955UjH+UGp4ocmqaMZsbnh6ecnxgJGEkYiRjJGQkZSRmJGckaCRpJHQkdSR2JHckeCR5JHokeyR8JH0kcCFxIXIhcyF0IXUhdiF3IXgheSE2Tj9OhU6gToJRllGrUflSOFNpU7ZTClmAW9tdel5/XvReUF9hXzRl4GWSdXZ2tY+2lqgAxgL9MP4wnTCeMAAAAAAFMAYwBzD8MDv/Pf89J0EwQjBDMEQwRTBGMEcwSDBJMEowSzBMME0wTjBPMFAwUTBSMFMwVDBVMFYwVzBYMFkwWjBbMFwwXTBeMF8wYDBhMGIwYzBkMGUwZjBnMGgwaTBqMGswbDBtMG4wbzBwMHEwcjBzMHQwdTB2MHcweDB5MHowezB8MH0wfjB/MIAwgTCCMIMwhDCFMIYwhzCIMIkwijCLMIwwjTCOMI8wkDCRMJIwkzChMKIwozCkMKUwpjCnMKgwqTCqMKswrDCtMK4wrzCwMLEwsjCzMLQwtTC2MLcwuDC5MLowuzC8ML0wvjC/MMAwwTDCMMMwxDDFMMYwxzDIMMkwyjDLMMwwzTDOMM8w0DDRMNIw0zDUMNUw1jDXMNgw2TDaMNsw3DDdMN4w3zDgMOEw4jDjMOQw5TDmMOcw6DDpMOow6zDsMO0w7jDvMPAw8TDyMPMw9DD1MPYwEAQRBBIEEwQUBBUEAQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUEUQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8E5yG4IbkhzzHMAFpOigACUpFEsJ+IUbGfB3YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOL/5P8H/wL/MTIWISEhmzCcMIAuhC6GLocuiC6KLowujS6VLpwunS6lLqcuqi6sLq4uti68Lr4uxi7KLswuzS7PLtYu1y7eLuMuAAAAAAAAgwJQAlsCVAJ1AlMB+ABLAYoCagJCTlxO9VEaU4JTB04MTkdOjU7XVgz6blxzXw9Oh1EOTi5Ok07CTslOyE6YUfxSbFO5UyBXA1ksWRBc/13hZbNrzGsUbD9yMU48TuhO3E7pTuFO3U7aTgxSHFNMUyJXI1cXWS9ZgVuEWxJcO1x0XHNcBF6AXoJeyV8JYlBiFWw2bENsP2w7bK5ysHKKc7h5ioAelg5PGE8sT/VOFE/xTgBP904ITx1PAk8FTyJPE08ET/ROEk+xURNSCVIQUqZSIlMfU01TilMHVOFW31YuVypXNFc8WYBZfFmFWXtZfll3WX9ZVlsVXCVcfFx6XHtcflzfXXVehF4CXxpfdF/VX9Rfz19cYl5iZGJhYmZiYmJZYmBiWmJlYu9l7mU+ZzlnOGc7ZzpnP2c8ZzNnGGxGbFJsXGxPbEpsVGxLbExscXBecrRytXKOcyp1f3Z1elF/eIJ8goCCfYJ/gk2GfomZkJeQmJCbkJSQIpYkliCWI5ZWTztPYk9JT1NPZE8+T2dPUk9fT0FPWE8tTzNPP09hT49RuVEcUh5SIVKtUq5SCVNjU3JTjlOPUzBUN1QqVFRURVQZVBxUJVQYVD1UT1RBVChUJFRHVO5W51blVkFXRVdMV0lXS1dSVwZZQFmmWZhZoFmXWY5ZolmQWY9Zp1mhWY5bklsoXCpcjVyPXIhci1yJXJJcilyGXJNclVzgXQpeDl6LXolejF6IXo1eBV8dX3hfdl/SX9Ff0F/tX+hf7l/zX+Ff5F/jX/pf71/3X/tfAGD0Xzpig2KMYo5ij2KUYodicWJ7YnpicGKBYohid2J9YnJidGI3ZfBl9GXzZfJl9WVFZ0dnWWdVZ0xnSGddZ01nWmdLZ9BrGWwabHhsZ2xrbIRsi2yPbHFsb2xpbJpsbWyHbJVsnGxmbHNsZWx7bI5sdHB6cGNyv3K9csNyxnLBcrpyxXKVc5dzk3OUc5JzOnU5dZR1lXWBdj15NICVgJmAkICSgJyAkIKPgoWCjoKRgpOCioKDgoSCeIzJj7+Pn5ChkKWQnpCnkKCQMJYoli+WLZYzTphPfE+FT31PgE+HT3ZPdE+JT4RPd09MT5dPak+aT3lPgU94T5BPnE+UT55Pkk+CT5VPa09uT55RvFG+UTVSMlIzUkZSMVK8UgpTC1M8U5JTlFOHVH9UgVSRVIJUiFRrVHpUflRlVGxUdFRmVI1Ub1RhVGBUmFRjVGdUZFT3VvlWb1dyV21Xa1dxV3BXdleAV3VXe1dzV3RXYldoV31XDFlFWbVZulnPWc5ZslnMWcFZtlm8WcNZ1lmxWb1ZwFnIWbRZx1liW2Vbk1uVW0RcR1yuXKRcoFy1XK9cqFysXJ9co1ytXKJcqlynXJ1cpVy2XLBcplwXXhReGV4oXyJfI18kX1Rfgl9+X31f3l/lXy1gJmAZYDJgC2A0YApgF2AzYBpgHmAsYCJgDWAQYC5gE2ARYAxgCWAcYBRiPWKtYrRi0WK+YqpitmLKYq5is2KvYrtiqWKwYrhiPWWoZbtlCWb8ZQRmEmYIZvtlA2YLZg1mBWb9ZRFmEGb2ZgpnhWdsZ45nkmd2Z3tnmGeGZ4RndGeNZ4xnemefZ5FnmWeDZ31ngWd4Z3lnlGcla4Brfmveax1sk2zsbOts7mzZbLZs1GytbOdst2zQbMJsumzDbMZs7WzybNJs3Wy0bIpsnWyAbN5swGwwbc1sx2ywbPlsz2zpbNFslHCYcIVwk3CGcIRwkXCWcIJwmnCDcGpy1nLLcthyyXLcctJy1HLacsxy0XKkc6FzrXOmc6JzoHOsc51z3XTodD91QHU+dYx1mHWvdvN28XbwdvV2+Hf8d/l3+3f6d/d3Qnk/ecV5eHp7evt6dXz9fDWAj4CugKOAuIC1gK2AIIKggsCCq4KagpiCm4K1gqeCroK8gp6CuoK0gqiCoYKpgsKCpILDgraCooJwhm+GbYZuhlaM0o/Lj9OPzY/Wj9WP14+ykLSQr5CzkLCQOZY9ljyWOpZDls1PxU/TT7JPyU/LT8FP1E/cT9lPu0+zT9tPx0/WT7pPwE+5T+xPRFJJUsBSwlI9U3xTl1OWU5lTmFO6VKFUrVSlVM9Uw1QNg7dUrlTWVLZUxVTGVKBUcFS8VKJUvlRyVN5UsFS1V55Xn1ekV4xXl1edV5tXlFeYV49XmVelV5pXlVf0WA1ZU1nhWd5Z7lkAWvFZ3Vn6Wf1Z/Fn2WeRZ8ln3WdtZ6VnzWfVZ4Fn+WfRZ7VmoW0xc0FzYXMxc11zLXNtc3lzaXMlcx1zKXNZc01zUXM9cyFzGXM5c31z4XPldIV4iXiNeIF4kXrBepF6iXpteo16lXgdfLl9WX4ZfN2A5YFRgcmBeYEVgU2BHYElgW2BMYEBgQmBfYCRgRGBYYGZgbmBCYkNiz2INYwtj9WIOYwNj62L5Yg9jDGP4YvZiAGMTYxRj+mIVY/ti8GJBZUNlqmW/ZTZmIWYyZjVmHGYmZiJmM2YrZjpmHWY0ZjlmLmYPZxBnwWfyZ8hnumfcZ7tn+GfYZ8Bnt2fFZ+tn5GffZ7VnzWezZ/dn9mfuZ+Nnwme5Z85n52fwZ7Jn/GfGZ+1nzGeuZ+Zn22f6Z8lnymfDZ+pny2coa4JrhGu2a9Zr2GvgayBsIWwobTRtLW0fbTxtP20SbQpt2mwzbQRtGW06bRptEW0AbR1tQm0BbRhtN20DbQ9tQG0HbSBtLG0IbSJtCW0Qbbdwn3C+cLFwsHChcLRwtXCpcEFySXJKcmxycHJzcm5yynLkcuhy63Lfcupy5nLjcoVzzHPCc8hzxXO5c7ZztXO0c+tzv3PHc75zw3PGc7hzy3PsdO50LnVHdUh1p3WqdXl2xHYIdwN3BHcFdwp393b7dvp253fodwZ4EXgSeAV4EHgPeA54CXgDeBN4SnlMeUt5RXlEedV5zXnPedZ5znmAen560XoAewF7enx4fHl8f3yAfIF8A30IfQF9WH+Rf41/vn8HgA6AD4AUgDeA2IDHgOCA0YDIgMKA0IDFgOOA2YDcgMqA1YDJgM+A14DmgM2A/4EhgpSC2YL+gvmCB4PoggCD1YI6g+uC1oL0guyC4YLygvWCDIP7gvaC8ILqguSC4IL6gvOC7YJ3hnSGfIZzhkGITohniGqIaYjTiQSKB4pyjeOP4Y/uj+CP8ZC9kL+Q1ZDFkL6Qx5DLkMiQ1JHTkVSWT5ZRllOWSpZOlh5QBVAHUBNQIlAwUBtQ9U/0TzNQN1AsUPZP908XUBxQIFAnUDVQL1AxUA5QWlGUUZNRylHEUcVRyFHOUWFSWlJSUl5SX1JVUmJSzVIOU55TJlXiVBdVElXnVPNU5FQaVf9UBFUIVetUEVUFVfFUClX7VPdU+FTgVA5VA1ULVQFXAlfMVzJY1VfSV7pXxle9V7xXuFe2V79Xx1fQV7lXwVcOWUpZGVoWWi1aLloVWg9aF1oKWh5aM1psW6dbrVusWwNcVlxUXOxc/1zuXPFc91wAXflcKV4oXqherl6qXqxeM18wX2dfXWBaYGdgQWCiYIhggGCSYIFgnWCDYJVgm2CXYIdgnGCOYBliRmLyYhBjVmMsY0RjRWM2Y0Nj5GM5Y0tjSmM8YyljQWM0Y1hjVGNZYy1jR2MzY1pjUWM4Y1djQGNIY0plRmXGZcNlxGXCZUpmX2ZHZlFmEmcTZx9oGmhJaDJoM2g7aEtoT2gWaDFoHGg1aCtoLWgvaE5oRGg0aB1oEmgUaCZoKGguaE1oOmglaCBoLGsvay1rMWs0a21rgoCIa+Zr5Gvoa+Nr4mvnayVsem1jbWRtdm0NbWFtkm1YbWJtbW1vbZFtjW3vbX9thm1ebWdtYG2XbXBtfG1fbYJtmG0vbWhti21+bYBthG0WbYNte219bXVtkG3ccNNw0XDdcMtwOX/icNdw0nDecOBw1HDNcMVwxnDHcNpwznDhcEJyeHJ3cnZyAHP6cvRy/nL2cvNy+3IBc9Nz2XPlc9ZzvHPnc+Nz6XPcc9Jz23PUc91z2nPXc9hz6HPedN909HT1dCF1W3VfdbB1wXW7dcR1wHW/dbZ1unWKdsl2HXcbdxB3E3cSdyN3EXcVdxl3Gncidyd3I3gseCJ4NXgveCh4LngreCF4KXgzeCp4MXhUeVt5T3lceVN5UnlReet57Hngee557Xnqedx53nndeYZ6iXqFeot6jHqKeod62HoQewR7E3sFew97CHsKew57CXsSe4R8kXyKfIx8iHyNfIV8Hn0dfRF9Dn0YfRZ9E30ffRJ9D30MfVx/YX9ef2B/XX9bf5Z/kn/Df8J/wH8WgD6AOYD6gPKA+YD1gAGB+4AAgQGCL4IlgjODLYNEgxmDUYMlg1aDP4NBgyaDHIMig0KDToMbgyqDCIM8g02DFoMkgyCDN4MvgymDR4NFg0yDU4MegyyDS4Mng0iDU4ZShqKGqIaWho2GkYaehoeGl4aGhouGmoaFhqWGmYahhqeGlYaYho6GnYaQhpSGQ4hEiG2IdYh2iHKIgIhxiH+Ib4iDiH6IdIh8iBKKR4xXjHuMpIyjjHaNeI21jbeNto3RjtOO/o/1jwKQ/4/7jwSQ/I/2j9aQ4JDZkNqQ45DfkOWQ2JDbkNeQ3JDkkFCRTpFPkdWR4pHakVyWX5a8luOY35ovm39OcFBqUGFQXlBgUFNQS1BdUHJQSFBNUEFQW1BKUGJQFVBFUF9QaVBrUGNQZFBGUEBQblBzUFdQUVDQUWtSbVJsUm5S1lLTUi1TnFN1VXZVPFVNVVBVNFUqVVFVYlU2VTVVMFVSVUVVDFUyVWVVTlU5VUhVLVU7VUBVS1UKVwdX+1cUWOJX9lfcV/RXAFjtV/1XCFj4VwtY81fPVwdY7lfjV/JX5VfsV+FXDlj8VxBY51cBWAxY8VfpV/BXDVgEWFxZYFpYWlVaZ1peWjhaNVptWlBaX1plWmxaU1pkWldaQ1pdWlJaRFpbWkhajlo+Wk1aOVpMWnBaaVpHWlFaVlpCWlxacltuW8FbwFtZXB5dC10dXRpdIF0MXShdDV0mXSVdD10wXRJdI10fXS5dPl40XrFetF65XrJes142Xzhfm1+WX59fimCQYIZgvmCwYLpg02DUYM9g5GDZYN1gyGCxYNtgt2DKYL9gw2DNYMBgMmNlY4pjgmN9Y71jnmOtY51jl2OrY45jb2OHY5BjbmOvY3VjnGNtY65jfGOkYztjn2N4Y4VjgWORY41jcGNTZc1lZWZhZltmWWZcZmJmGGd5aIdokGicaG1obmiuaKtoVmlvaKNorGipaHVodGiyaI9od2iSaHxoa2hyaKpogGhxaH5om2iWaItooGiJaKRoeGh7aJFojGiKaH1oNmszazdrOGuRa49rjWuOa4xrKmzAbatttG2zbXRurG3pbeJtt232bdRtAG7IbeBt323Wbb5t5W3cbd1t2230bcptvW3tbfBtum3VbcJtz23JbdBt8m3Tbf1t123NbeNtu236cA1x93AXcfRwDHHwcARx83AQcfxw/3AGcRNxAHH4cPZwC3ECcQ5xfnJ7cnxyf3IdcxdzB3MRcxhzCnMIc/9yD3Mec4hz9nP4c/VzBHQBdP1zB3QAdPpz/HP/cwx0C3T0cwh0ZHVjdc510nXPdct1zHXRddB1j3aJdtN2OXcvdy13MXcydzR3M3c9dyV3O3c1d0h4UnhJeE14SnhMeCZ4RXhQeGR5Z3lpeWp5Y3lreWF5u3n6efh59nn3eY96lHqQejV7R3s0eyV7MHsieyR7M3sYeyp7HXsxeyt7LXsvezJ7OHsaeyN7lHyYfJZ8o3w1fT19OH02fTp9RX0sfSl9QX1HfT59P31KfTt9KH1jf5V/nH+df5t/yn/Lf81/0H/Rf8d/z3/Jfx+AHoAbgEeAQ4BIgBiBJYEZgRuBLYEfgSyBHoEhgRWBJ4EdgSKBEYI4gjOCOoI0gjKCdIKQg6ODqIONg3qDc4Okg3SDj4OBg5WDmYN1g5SDqYN9g4ODjIOdg5uDqoOLg36DpYOvg4iDl4Owg3+DpoOHg66DdoOag1mGVoa/hreGwobBhsWGuoawhsiGuYazhriGzIa0hruGvIbDhr2GvoZSiImIlYioiKKIqoiaiJGIoYifiJiIp4iZiJuIl4ikiKyIjIiTiI6IgonWidmJ1YkwiieKLIoeijmMO4xcjF2MfYyljH2Ne415jbyNwo25jb+NwY3Yjt6O3Y7cjteO4I7hjiSQC5ARkByQDJAhkO+Q6pDwkPSQ8pDzkNSQ65DskOmQVpFYkVqRU5FVkeyR9JHxkfOR+JHkkfmR6pHrkfeR6JHukXqVhpWIlXyWbZZrlnGWb5a/lmqXBJjlmJeZm1CVUJRQnlCLUKNQg1CMUI5QnVBoUJxQklCCUIdQX1HUURJTEVOkU6dTkVWoVaVVrVV3VUVWolWTVYhVj1W1VYFVo1WSVaRVfVWMVaZVf1WVVaFVjlUMVylYN1gZWB5YJ1gjWChY9VdIWCVYHFgbWDNYP1g2WC5YOVg4WC1YLFg7WGFZr1qUWp9aelqiWp5aeFqmWnxapVqsWpVarlo3WoRailqXWoNai1qpWntafVqMWpxaj1qTWp1a6lvNW8tb1FvRW8pbzlsMXDBcN11DXWtdQV1LXT9dNV1RXU5dVV0zXTpdUl09XTFdWV1CXTldSV04XTxdMl02XUBdRV1EXkFeWF+mX6Vfq1/JYLlgzGDiYM5gxGAUYfJgCmEWYQVh9WATYfhg/GD+YMFgA2EYYR1hEGH/YARhC2FKYpRjsWOwY85j5WPoY+9jw2OdZPNjymPgY/Zj1WPyY/VjYWTfY75j3WPcY8Rj2GPTY8Jjx2PMY8tjyGPwY9dj2WMyZWdlamVkZVxlaGVlZYxlnWWeZa5l0GXSZXxmbGZ7ZoBmcWZ5ZmpmcmYBZwxp02gEadxoKmnsaOpo8WgPadZo92jraORo9mgTaRBp82jhaAdpzGgIaXBptGgRae9oxmgUafho0Gj9aPxo6GgLaQppF2nOaMho3WjeaOZo9GjRaAZp1GjpaBVpJWnHaDlrO2s/azxrlGuXa5lrlWu9a/Br8mvzazBs/G1GbkduH25JbohuPG49bkVuYm4rbj9uQW5dbnNuHG4zbktuQG5RbjtuA24ubl5uaG5cbmFuMW4obmBucW5rbjluIm4wblNuZW4nbnhuZG53blVueW5SbmZuNW42blpuIHEecS9x+3AucTFxI3ElcSJxMnEfcShxOnEbcUtyWnKIcolyhnKFcotyEnMLczBzInMxczNzJ3Mycy1zJnMjczVzDHMudCx0MHQrdBZ0GnQhdC10MXQkdCN0HXQpdCB0MnT7dC91b3Vsded12nXhdeZ13XXfdeR113WVdpJ22nZGd0d3RHdNd0V3SndOd0t3THfed+x3YHhkeGV4XHhteHF4anhueHB4aXhoeF54Ynh0eXN5cnlweQJ6CnoDegx6BHqZeuZ65HpKezt7RHtIe0x7TntAe1h7RXuifJ58qHyhfFh9b31jfVN9Vn1nfWp9T31tfVx9a31SfVR9aX1RfV99Tn0+fz9/ZX9mf6J/oH+hf9d/UYBPgFCA/oDUgEOBSoFSgU+BR4E9gU2BOoHmge6B94H4gfmBBII8gj2CP4J1gjuDz4P5gyOEwIPogxKE54Pkg/yD9oMQhMaDyIPrg+ODv4MBhN2D5YPYg/+D4YPLg86D1oP1g8mDCYQPhN6DEYQGhMKD84PVg/qDx4PRg+qDE4TDg+yD7oPEg/uD14PigxuE24P+g9iG4obmhtOG44bahuqG3YbrhtyG7IbphteG6IbRhkiIVohViLqI14i5iLiIwIi+iLaIvIi3iL2IsogBicmIlYmYiZeJ3YnaiduJTopNijmKWYpAileKWIpEikWKUopIilGKSopMik+KX4yBjICMuoy+jLCMuYy1jISNgI2JjdiN043NjceN1o3cjc+N1Y3ZjciN143Fje+O9476jvmO5o7ujuWO9Y7njuiO9o7rjvGO7I70jumOLZA0kC+QBpEskQSR/5D8kAiR+ZD7kAGRAJEHkQWRA5FhkWSRX5FikWCRAZIKkiWSA5IakiaSD5IMkgCSEpL/kf2RBpIEkieSApIckiSSGZIXkgWSFpJ7lY2VjJWQlYeWfpaIlomWg5aAlsKWyJbDlvGW8JZsl3CXbpcHmKmY65jmnPmeg06ETrZOvVC/UMZQrlDEUMpQtFDIUMJQsFDBULpQsVDLUMlQtlC4UNdRelJ4UntSfFLDVdtVzFXQVctVylXdVcBV1FXEVelVv1XSVY1Vz1XVVeJV1lXIVfJVzVXZVcJVFFdTWGhYZFhPWE1YSVhvWFVYTlhdWFlYZVhbWD1YY1hxWPxYx1rEWstaulq4WrFatVqwWr9ayFq7WsZat1rAWspatFq2Ws1auVqQWtZb2FvZWx9cM1xxXWNdSl1lXXJdbF1eXWhdZ11iXfBdT15OXkpeTV5LXsVezF7GXstex15AX69frV/3YElhSmErYUVhNmEyYS5hRmEvYU9hKWFAYSBiaJEjYiViJGLFY/Fj62MQZBJkCWQgZCRkM2RDZB9kFWQYZDlkN2QiZCNkDGQmZDBkKGRBZDVkL2QKZBpkQGQlZCdkC2TnYxtkLmQhZA5kb2WSZdNlhmaMZpVmkGaLZopmmWaUZnhmIGdmaV9pOGlOaWJpcWk/aUVpamk5aUJpV2lZaXppSGlJaTVpbGkzaT1pZWnwaHhpNGlpaUBpb2lEaXZpWGlBaXRpTGk7aUtpN2lcaU9pUWkyaVJpL2l7aTxpRmtFa0NrQmtIa0Frm2sN+vtr/Gv5a/dr+GubbtZuyG6PbsBun26TbpRuoG6xbrluxm7Sbr1uwW6ebslut26wbs1upm7PbrJuvm7Dbtxu2G6ZbpJujm6NbqRuoW6/brNu0G7Kbpdurm6jbkdxVHFScWNxYHFBcV1xYnFycXhxanFhcUJxWHFDcUtxcHFfcVBxU3FEcU1xWnFPco1yjHKRcpByjnI8c0JzO3M6c0BzSnNJc0R0SnRLdFJ0UXRXdEB0T3RQdE50QnRGdE10VHThdP90/nT9dB11eXV3dYNp73UPdgN293X+dfx1+XX4dRB2+3X2de119XX9dZl2tXbddlV3X3dgd1J3Vndad2l3Z3dUd1l3bXfgd4d4mniUeI94hHiVeIV4hniheIN4eXiZeIB4lnh7eHx5gnl9eXl5EXoYehl6EnoXehV6InoTeht6EHqjeqJ6nnrremZ7ZHtte3R7aXtye2V7c3txe3B7YXt4e3Z7Y3uyfLR8r3yIfYZ9gH2NfX99hX16fY59e32DfXx9jH2UfYR9fX2SfW1/a39nf2h/bH+mf6V/p3/bf9x/IYBkgWCBd4FcgWmBW4FigXKBIWdegXaBZ4FvgUSBYYEdgkmCRIJAgkKCRYLxhD+EVoR2hHmEj4SNhGWEUYRAhIaEZ4QwhE2EfYRahFmEdIRzhF2EB4VehDeEOoQ0hHqEQ4R4hDKERYQphNmDS4QvhEKELYRfhHCEOYROhEyEUoRvhMWEjoQ7hEeENoQzhGiEfoREhCuEYIRUhG6EUIQLhwSH94YMh/qG1ob1hk2H+IYOhwmHAYf2hg2HBYfWiMuIzYjOiN6I24jaiMyI0IiFiZuJ34nlieSJ4YngieKJ3InmiXaKhop/imGKP4p3ioKKhIp1ioOKgYp0inqKPIxLjEqMZYxkjGaMhoyEjIWMzIxojWmNkY2MjY6Nj42NjZONlI2QjZKN8I3gjeyN8Y3ujdCN6Y3jjeKN543yjeuN9I0Gj/+OAY8AjwWPB48IjwKPC49SkD+QRJBJkD2QEJENkQ+REZEWkRSRC5EOkW6Rb5FIklKSMJI6kmaSM5Jlkl6Sg5IukkqSRpJtkmyST5JgkmeSb5I2kmGScJIxklSSY5JQknKSTpJTkkySVpIykp+VnJWelZuVkpaTlpGWl5bOlvqW/Zb4lvWWc5d3l3iXcpcPmA2YDpismPaY+ZivmbKZsJm1ma2aq5pbm+qc7ZznnICe/Z7mUNRQ11DoUPNQ21DqUN1Q5FDTUOxQ8FDvUONQ4FDYUYBSgVLpUutSMFOsUydWFVYMVhJW/FUPVhxWAVYTVgJW+lUdVgRW/1X5VYlYfFiQWJhYhliBWH9YdFiLWHpYh1iRWI5YdliCWIhYe1iUWI9Y/lhrWdxa7lrlWtVa6lraWu1a61rzWuJa4FrbWuxa3lrdWtla6FrfWndb4FvjW2Ncgl2AXX1dhl16XYFdd12KXYldiF1+XXxdjV15XX9dWF5ZXlNe2F7RXtdezl7cXtVe2V7SXtReRF9DX29ftl8sYShhQWFeYXFhc2FSYVNhcmFsYYBhdGFUYXphW2FlYTthamFhYVZhKWInYitiK2RNZFtkXWR0ZHZkcmRzZH1kdWRmZKZkTmSCZF5kXGRLZFNkYGRQZH9kP2RsZGtkWWRlZHdkc2WgZaFmoGafZgVnBGciZ7FptmnJaaBpzmmWabBprGm8aZFpmWmOaadpjWmpab5pr2m/acRpvWmkadRpuWnKaZppz2mzaZNpqmmhaZ5p2WmXaZBpwmm1aaVpxmlKa01rS2uea59roGvDa8Rr/mvObvVu8W4DbyVv+G43b/tuLm8Jb05vGW8abydvGG87bxJv7W4KbzZvc2/5bu5uLW9AbzBvPG81b+tuB28Ob0NvBW/9bvZuOW8cb/xuOm8fbw1vHm8IbyFvh3GQcYlxgHGFcYJxj3F7cYZxgXGXcURyU3KXcpVyk3JDc01zUXNMc2J0c3RxdHV0cnRndG50AHUCdQN1fXWQdRZ2CHYMdhV2EXYKdhR2uHaBd3x3hXeCd253gHdvd353g3eyeKp4tHiteKh4fnireJ54pXigeKx4onikeJh5inmLeZZ5lXmUeZN5l3mIeZJ5kHkrekp6MHoveih6Jnqoeqt6rHrueoh7nHuKe5F7kHuWe417jHube457hXuYe4RSmXuke4J7u3y/fLx8unynfbd9wn2jfap9wX3AfcV9nX3OfcR9xn3Lfcx9r325fZZ9vH2ffaZ9rn2pfaF9yX1zf+J/43/lf95/JIBdgFyAiYGGgYOBh4GNgYyBi4EVgpeEpIShhJ+EuoTOhMKErISuhKuEuYS0hMGEzYSqhJqEsYTQhJ2Ep4S7hKKElITHhMyEm4SphK+EqITWhJiEtoTPhKCE14TUhNKE24SwhJGEYYYzhyOHKIdrh0CHLocehyGHGYcbh0OHLIdBhz6HRocghzKHKocthzyHEoc6hzGHNYdChyaHJ4c4hySHGocwhxGH94jniPGI8oj6iP6I7oj8iPaI+4jwiOyI64idiaGJn4meiemJ64noiauKmYqLipKKj4qWij2MaIxpjNWMz4zXjJaNCY4Cjv+NDY79jQqOA44HjgaOBY7+jQCOBI4QjxGPDo8NjyORHJEgkSKRH5EdkRqRJJEhkRuRepFykXmRc5GlkqSSdpKbknqSoJKUkqqSjZKmkpqSq5J5kpeSf5Kjku6SjpKCkpWSopJ9koiSoZKKkoaSjJKZkqeSfpKHkqmSnZKLki2Snpahlv+WWJd9l3qXfpeDl4CXgpd7l4SXgZd/l86XzZcWmK2YrpgCmQCZB5mdmZyZw5m5mbuZupnCmb2Zx5mxmuOa55o+mz+bYJthm1+b8ZzynPWcp57/UANRMFH4UAZRB1H2UP5QC1EMUf1QClGLUoxS8VLvUkhWQlZMVjVWQVZKVklWRlZYVlpWQFYzVj1WLFY+VjhWKlY6VhpXq1idWLFYoFijWK9YrFilWKFY/1j/WvRa/Vr3WvZaA1v4WgJb+VoBWwdbBVsPW2dcmV2XXZ9dkl2iXZNdlV2gXZxdoV2aXZ5daV5dXmBeXF7zfdte3l7hXklfsl+LYYNheWGxYbBhomGJYZthk2GvYa1hn2GSYaphoWGNYWZhs2EtYm5kcGSWZKBkhWSXZJxkj2SLZIpkjGSjZJ9kaGSxZJhkdmV6ZXlle2WyZbNltWawZqlmsma3Zqpmr2YAagZqF2rlafhpFWrxaeRpIGr/aexp4mkbah1q/mknavJp7mkUavdp52lAaghq5mn7aQ1q/GnraQlqBGoYaiVqD2r2aSZqB2r0aRZqUWula6NromumawFsAGz/awJsQW8mb35vh2/Gb5JvjW+Jb4xvYm9Pb4VvWm+Wb3ZvbG+Cb1Vvcm9Sb1BvV2+Ub5NvXW8Ab2Fva299b2dvkG9Tb4tvaW9/b5VvY293b2pve2+yca9xm3GwcaBxmnGpcbVxnXGlcZ5xpHGhcapxnHGncbNxmHKaclhzUnNec19zYHNdc1tzYXNac1lzYnOHdIl0inSGdIF0fXSFdIh0fHR5dAh1B3V+dSV2HnYZdh12HHYjdhp2KHYbdpx2nXaedpt2jXePd4l3iHfNeLt4z3jMeNF4znjUeMh4w3jEeMl4mnmheaB5nHmieZt5dms5erJ6tHqzerd7y3u+e6x7znuve7l7ynu1e8V8yHzMfMt8933bfep9533XfeF9A376feZ99n3xffB97n3ffXZ/rH+wf61/7X/rf+p/7H/mf+h/ZIBngKOBn4GegZWBooGZgZeBFoJPglOCUoJQgk6CUYIkhTuFD4UAhSmFDoUJhQ2FH4UKhSeFHIX7hCuF+oQIhQyF9IQqhfKEFYX3hOuE84T8hBKF6oTphBaF/oQohR2FLoUChf2EHoX2hDGFJoXnhOiE8ITvhPmEGIUghTCFC4UZhS+FYoZWh2OHZId3h+GHc4dYh1SHW4dSh2GHWodRh16HbYdqh1CHTodfh12Hb4dsh3qHbodch2WHT4d7h3WHYodnh2mHWogFiQyJFIkLiReJGIkZiQaJFokRiQ6JCYmiiaSJo4ntifCJ7InPisaKuIrTitGK1IrViruK14q+isCKxYrYisOKuoq9itmKPoxNjI+M5YzfjNmM6IzajN2M54ygjZyNoY2bjSCOI44ljiSOLo4VjhuOFo4RjhmOJo4njhSOEo4YjhOOHI4XjhqOLI8kjxiPGo8gjyOPFo8Xj3OQcJBvkGeQa5AvkSuRKZEqkTKRJpEukYWRhpGKkYGRgpGEkYCR0JLDksSSwJLZkraSz5Lxkt+S2JLpkteS3ZLMku+SwpLoksqSyJLOkuaSzZLVksmS4JLekueS0ZLTkrWS4ZLGkrSSfJWslauVrpWwlaSWopbTlgWXCJcCl1qXipeOl4iX0JfPlx6YHZgmmCmYKJggmBuYJ5iymAiZ+pgRmRSZFpkXmRWZ3JnNmc+Z05nUmc6ZyZnWmdiZy5nXmcyZs5rsmuua85rymvGaRptDm2ebdJtxm2abdpt1m3CbaJtkm2yb/Jz6nP2c/5z3nAedAJ35nPucCJ0FnQSdg57Tng+fEJ8cURNRF1EaURFR3lE0U+FTcFZgVm5Wc1ZmVmNWbVZyVl5Wd1YcVxtXyFi9WMlYv1i6WMJYvFjGWBdbGVsbWyFbFFsTWxBbFlsoWxpbIFseW+9brF2xXaldp121XbBdrl2qXahdsl2tXa9dtF1nXmheZl5vXule517mXuhe5V5LX7xfnWGoYZZhxWG0YcZhwWHMYbphv2G4YYxh12TWZNBkz2TJZL1kiWTDZNtk82TZZDNlf2V8ZaJlyGa+ZsBmymbLZs9mvWa7ZrpmzGYjZzRqZmpJamdqMmpoaj5qXWptanZqW2pRaihqWmo7aj9qQWpqamRqUGpPalRqb2ppamBqPGpealZqVWpNak5qRmpVa1RrVmuna6prq2vIa8drBGwDbAZsrW/Lb6Nvx2+8b85vyG9eb8RvvW+eb8pvqG8EcKVvrm+6b6xvqm/Pb79vuG+ib8lvq2/Nb69vsm+wb8VxwnG/cbhx1nHAccFxy3HUccpxx3HPcb1x2HG8ccZx2nHbcZ1ynnJpc2ZzZ3Nsc2Vza3Nqc390mnSgdJR0knSVdKF0C3WAdS92LXYxdj12M3Y8djV2MnYwdrt25naad513oXecd5t3onejd5V3mXeXd9146XjleOp43njjeNt44XjieO1433jgeKR5RHpIekd6tnq4erV6sXq3et5743vne9171Xvle9p76Hv5e9R76nvie9x763vYe9970nzUfNd80HzRfBJ+IX4Xfgx+H34gfhN+Dn4cfhV+Gn4ifgt+D34Wfg1+FH4lfiR+Q397f3x/en+xf+9/KoApgGyAsYGmga6BuYG1gauBsIGsgbSBsoG3gaeB8oFVglaCV4JWhUWFa4VNhVOFYYVYhUCFRoVkhUGFYoVEhVGFR4VjhT6FW4VxhU6FboV1hVWFZ4VghYyFZoVdhVSFZYVshWOGZYZkhpuHj4eXh5OHkoeIh4GHloeYh3mHh4ejh4WHkIeRh52HhIeUh5yHmoeJhx6JJokwiS2JLokniTGJIokpiSOJL4ksiR+J8YngiuKK8or0ivWK3YoUi+SK34rwisiK3orhiuiK/4rvivuKkYySjJCM9YzujPGM8IzzjGyNbo2ljaeNM44+jjiOQI5FjjaOPI49jkGOMI4/jr2ONo8ujzWPMo85jzePNI92kHmQe5CGkPqQM5E1kTaRk5GQkZGRjZGPkSeTHpMIkx+TBpMPk3qTOJM8kxuTI5MSkwGTRpMtkw6TDZPLkh2T+pIlkxOT+ZL3kjSTApMkk/+SKZM5kzWTKpMUkwyTC5P+kgmTAJP7khaTvJXNlb6VuZW6lbaVv5W1lb2VqZbUlguXEpcQl5mXl5eUl/CX+Jc1mC+YMpgkmR+ZJ5kpmZ6Z7pnsmeWZ5JnwmeOZ6pnpmeeZuZq/mrSau5r2mvqa+Zr3mjObgJuFm4ebfJt+m3ubgpuTm5KbkJt6m5WbfZuImyWdF50gnR6dFJ0pnR2dGJ0inRCdGZ0fnYiehp6Hnq6erZ7Vntae+p4Snz2fJlElUSJRJFEgUSlR9FKTVoxWjVaGVoRWg1Z+VoJWf1aBVtZY1FjPWNJYLVslWzJbI1ssWydbJlsvWy5be1vxW/Jbt11sXmpevl+7X8NhtWG8Yedh4GHlYeRh6GHeYe9k6WTjZOtk5GToZIFlgGW2Zdpl0maNapZqgWqlaolqn2qbaqFqnmqHapNqjmqVaoNqqGqkapFqf2qmappqhWqMapJqW2utawlszG+pb/Rv1G/jb9xv7W/nb+Zv3m/yb91v4m/ob+Fx8XHocfJx5HHwceJxc3Nuc29zl3SydKt0kHSqdK10sXSldK90EHURdRJ1D3WEdUN2SHZJdkd2pHbpdrV3q3eyd7d3tne0d7F3qHfwd/N4/XgCeft4/HjyeAV5+Xj+eAR5q3moeVx6W3pWelh6VHpaer56wHrBegV8D3zyewB8/3v7ew589HsLfPN7AnwJfAN8AXz4e/17Bnzwe/F7EHwKfOh8LX48fkJ+M35ImDh+Kn5JfkB+R34pfkx+MH47fjZ+RH46fkV/f39+f31/9H/yfyyAu4HEgcyByoHFgceBvIHpgVuCWoJcgoOFgIWPhaeFlYWghYuFo4V7haSFmoWehXeFfIWJhaGFeoV4hVeFjoWWhYaFjYWZhZ2FgYWihYKFiIWFhXmFdoWYhZCFn4Vohr6Hqoeth8WHsIesh7mHtYe8h66HyYfDh8KHzIe3h6+HxIfKh7SHtoe/h7iHvYfeh7KHNYkziTyJPolBiVKJN4lCia2Jr4muifKJ84keixiLFosRiwWLC4siiw+LEosViweLDYsIiwaLHIsTixqLT4xwjHKMcYxvjJWMlIz5jG+NTo5NjlOOUI5MjkeOQ49Aj4WQfpA4kZqRopGbkZmRn5GhkZ2RoJGhk4OTr5Nkk1aTR5N8k1iTXJN2k0mTUJNRk2CTbZOPk0yTapN5k1eTVZNSk0+TcZN3k3uTYZNek2OTZ5OAk06TWZPHlcCVyZXDlcWVt5WulrCWrJYglx+XGJcdlxmXmpehl5yXnpedl9WX1Jfxl0GYRJhKmEmYRZhDmCWZK5ksmSqZM5kymS+ZLZkxmTCZmJmjmaGZApr6mfSZ95n5mfiZ9pn7mf2Z/pn8mQOavpr+mv2aAZv8mkibmpuom56bm5umm6GbpZukm4abopugm6+bM51BnWedNp0unS+dMZ04nTCdRZ1CnUOdPp03nUCdPZ31fy2dip6Jno2esJ7Intqe+57/niSfI58in1SfoJ8xUS1RLlGYVpxWl1aaVp1WmVZwWTxbaVxqXMBdbV5uXthh32HtYe5h8WHqYfBh62HWYelh/2QEZf1k+GQBZQNl/GSUZdtl2mbbZthmxWq5ar1q4WrGarpqtmq3asdqtGqtal5ryWsLbAdwDHANcAFwBXAUcA5w/28AcPtvJnD8b/dvCnABcv9x+XEDcv1xdnO4dMB0tXTBdL50tnS7dMJ0FHUTdVx2ZHZZdlB2U3ZXdlp2pna9dux2wne6d/94DHkTeRR5CXkQeRJ5EXmteax5X3ocfCl8GXwgfB98LXwdfCZ8KHwifCV8MHxcflB+Vn5jflh+Yn5fflF+YH5XflN+tX+zf/d/+H91gNGB0oHQgV+CXoK0hcaFwIXDhcKFs4W1hb2Fx4XEhb+Fy4XOhciFxYWxhbaF0oUkhriFt4W+hWmG54fmh+KH24frh+qH5Yffh/OH5IfUh9yH04fth9iH44ekh9eH2YcBiPSH6Ifdh1OJS4lPiUyJRolQiVGJSYkqiyeLI4szizCLNYtHiy+LPIs+izGLJYs3iyaLNosuiySLO4s9izqLQox1jJmMmIyXjP6MBI0CjQCNXI5ijmCOV45Wjl6OZY5njluOWo5hjl2OaY5UjkaPR49Ij0uPKJE6kTuRPpGokaWRp5GvkaqRtZOMk5KTt5Obk52TiZOnk46TqpOek6aTlZOIk5mTn5ONk7GTkZOyk6STqJO0k6OTpZPSldOV0ZWzlteW2pbCXd+W2JbdliOXIpcll6yXrpeol6uXpJeql6KXpZfXl9mX1pfYl/qXUJhRmFKYuJhBmTyZOpkPmguaCZoNmgSaEZoKmgWaB5oGmsCa3JoImwSbBZspmzWbSptMm0ubx5vGm8Obv5vBm7WbuJvTm7abxJu5m72bXJ1TnU+dSp1bnUudWZ1WnUydV51SnVSdX51YnVqdjp6Mnt+eAZ8AnxafJZ8rnyqfKZ8on0yfVZ80UTVRllL3UrRTq1atVqZWp1aqVqxW2ljdWNtYElk9Wz5bP1vDXXBev1/7YQdlEGUNZQllDGUOZYRl3mXdZd5m52rgasxq0WrZastq32rcatBq62rPas1q3mpga7BrDGwZcCdwIHAWcCtwIXAicCNwKXAXcCRwHHAqcAxyCnIHcgJyBXKlcqZypHKjcqFyy3TFdLd0w3QWdWB2yXfKd8R38XcdeRt5IXkceRd5HnmweWd6aHozfDx8OXwsfDt87HzqfHZ+dX54fnB+d35vfnp+cn50fmh+S39Kf4N/hn+3f/1//n94gNeB1YFkgmGCY4LrhfGF7YXZheGF6IXahdeF7IXyhfiF2IXfheOF3IXRhfCF5oXvhd6F4oUAiPqHA4j2h/eHCYgMiAuIBoj8hwiI/4cKiAKIYolaiVuJV4lhiVyJWIldiVmJiIm3ibaJ9olQi0iLSotAi1OLVotUi0uLVYtRi0KLUotXi0OMd4x2jJqMBo0HjQmNrI2qja2Nq41tjniOc45qjm+Oe47CjlKPUY9Pj1CPU4+0j0CRP5Gwka2R3pPHk8+TwpPak9CT+ZPsk8yT2ZOpk+aTypPUk+6T45PVk8STzpPAk9KT55N9ldqV25XhlimXK5cslyiXJpezl7eXtpfdl96X35dcmFmYXZhXmL+YvZi7mL6YSJlHmUOZppmnmRqaFZolmh2aJJobmiKaIJonmiOaHpocmhSawpoLmwqbDpsMmzeb6pvrm+Cb3pvkm+ab4pvwm9Sb15vsm9yb2Zvlm9Wb4Zvam3edgZ2KnYSdiJ1xnYCdeJ2GnYudjJ19nWuddJ11nXCdaZ2FnXOde52CnW+deZ1/nYedaJ2UnpGewJ78ni2fQJ9Bn02fVp9Xn1ifN1OyVrVWs1bjWEVbxl3HXe5e717AX8Ff+WEXZRZlFWUTZd9l6GbjZuRm82rwaupq6Gr5avFq7mrvajxwNXAvcDdwNHAxcEJwOHA/cDpwOXBAcDtwM3BBcBNyFHKocn1zfHO6dKt2qna+du12zHfOd893zXfydyV5I3kneSh5JHkpebJ5bnpsem1693pJfEh8SnxHfEV87nx7fn5+gX6Afrp//395gNuB2YELgmiCaYIihv+FAYb+hRuGAIb2hQSGCYYFhgyG/YUZiBCIEYgXiBOIFohjiWaJuYn3iWCLaotdi2iLY4tli2eLbYuujYaOiI6EjlmPVo9Xj1WPWI9aj42QQ5FBkbeRtZGykbORC5QTlPuTIJQPlBSU/pMVlBCUKJQZlA2U9ZMAlPeTB5QOlBaUEpT6kwmU+JMKlP+T/JMMlPaTEZQGlN6V4JXflS6XL5e5l7uX/Zf+l2CYYphjmF+YwZjCmFCZTplZmUyZS5lTmTKaNJoxmiyaKpo2mimaLpo4mi2ax5rKmsaaEJsSmxGbC5wInPebBZwSnPibQJwHnA6cBpwXnBScCZyfnZmdpJ2dnZKdmJ2QnZudoJ2UnZydqp2XnaGdmp2inaidnp2jnb+dqZ2Wnaadp52Znpuemp7lnuSe557mnjCfLp9bn2CfXp9dn1mfkZ86UTlRmFKXUsNWvVa+VkhbR1vLXc9d8V79YRtlAmv8agNr+GoAa0NwRHBKcEhwSXBFcEZwHXIachlyfnMXdWp20HcteTF5L3lUfFN88nyKfod+iH6LfoZ+jX5Nf7t/MIDdgRiGKoYmhh+GI4YchhmGJ4YuhiGGIIYphh6GJYYpiB2IG4ggiCSIHIgriEqIbYlpiW6Ja4n6iXmLeItFi3qLe4sQjRSNr42OjoyOXo9bj12PRpFEkUWRuZE/lDuUNpQplD2UPJQwlDmUKpQ3lCyUQJQxlOWV5JXjlTWXOpe/l+GXZJjJmMaYwJhYmVaZOZo9mkaaRJpCmkGaOpo/ms2aFZsXmxibFps6m1KbK5wdnBycLJwjnCicKZwknCGct522nbydwZ3Hncqdz52+ncWdw527nbWdzp25nbqdrJ3InbGdrZ3MnbOdzZ2ynXqenJ7rnu6e7Z4bnxifGp8xn06fZZ9kn5KfuU7GVsVWy1ZxWUtbTFvVXdFd8l4hZSBlJmUiZQtrCGsJaw1sVXBWcFdwUnAech9yqXJ/c9h01XTZdNd0bXatdjV5tHlwenF6V3xcfFl8W3xafPR88XyRfk9/h3/egWuCNIY1hjOGLIYyhjaGLIgoiCaIKogliHGJv4m+ifuJfouEi4KLhouFi3+LFY2VjpSOmo6SjpCOlo6XjmCPYo9HkUyUUJRKlEuUT5RHlEWUSJRJlEaUP5fjl2qYaZjLmFSZW5lOmlOaVJpMmk+aSJpKmkmaUppQmtCaGZsrmzubVptVm0acSJw/nEScOZwznEGcPJw3nDScMpw9nDac253Snd6d2p3LndCd3J3Rnd+d6Z3Zndid1p31ndWd3Z22nvCeNZ8znzKfQp9r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rC+sMKwxrDisOaw8rECsS6xNrFSsWKxcrHCscax0rHeseKx6rICsgayDrISshayGrImsiqyLrIyskKyUrJysnayfrKCsoayorKmsqqysrK+ssKy4rLmsu6y8rL2swazErMiszKzVrNes4KzhrOSs56zorOqs7KzvrPCs8azzrPWs9qz8rP2sAK0ErQatDK0NrQ+tEa0YrRytIK0prSytLa00rTWtOK08rUStRa1HrUmtUK1UrVitYa1jrWytba1wrXOtdK11rXate618rX2tf62BrYKtiK2JrYytkK2crZ2tpK23rcCtwa3Ercit0K3RrdOt3K3greSt+K35rfyt/60ArgGuCK4JrguuDa4UrjCuMa40rjeuOK46rkCuQa5DrkWuRq5KrkyuTa5OrlCuVK5WrlyuXa5frmCuYa5lrmiuaa5srnCueK55rnuufK59roSuha6Mrryuva6+rsCuxK7Mrs2uz67QrtGu2K7Zrtyu6K7rru2u9K74rvyuB68Irw2vEK8sry2vMK8yrzSvPK89rz+vQa9Cr0OvSK9Jr1CvXK9dr2SvZa95r4CvhK+Ir5Cvka+Vr5yvuK+5r7yvwK/Hr8ivya/Lr82vzq/Ur9yv6K/pr/Cv8a/0r/ivALABsASwDLAQsBSwHLAdsCiwRLBFsEiwSrBMsE6wU7BUsFWwV7BZsF2wfLB9sICwhLCMsI2wj7CRsJiwmbCasJywn7CgsKGworCosKmwq7CssK2wrrCvsLGws7C0sLWwuLC8sMSwxbDHsMiwybDQsNGw1LDYsOCw5bAIsQmxC7EMsRCxErETsRixGbEbsRyxHbEjsSSxJbEosSyxNLE1sTexOLE5sUCxQbFEsUixULFRsVSxVbFYsVyxYLF4sXmxfLGAsYKxiLGJsYuxjbGSsZOxlLGYsZyxqLHMsdCx1LHcsd2x37Hosemx7LHwsfmx+7H9sQSyBbIIsguyDLIUshWyF7IZsiCyNLI8sliyXLJgsmiyabJ0snWyfLKEsoWyibKQspGylLKYspmymrKgsqGyo7KlsqayqrKssrCytLLIssmyzLLQstKy2LLZstuy3bLisuSy5bLmsuiy67Lssu2y7rLvsvOy9LL1svey+LL5svqy+7L/sgCzAbMEswizELMRsxOzFLMVsxyzVLNVs1azWLNbs1yzXrNfs2SzZbNns2mza7Nus3CzcbN0s3izgLOBs4OzhLOFs4yzkLOUs6CzobOos6yzxLPFs8izy7PMs86z0LPUs9Wz17PZs9uz3bPgs+Sz6LP8sxC0GLQctCC0KLQptCu0NLRQtFG0VLRYtGC0YbRjtGW0bLSAtIi0nbSktKi0rLS1tLe0ubTAtMS0yLTQtNW03LTdtOC047TktOa07LTttO+08bT4tBS1FbUYtRu1HLUktSW1J7UotSm1KrUwtTG1NLU4tUC1QbVDtUS1RbVLtUy1TbVQtVS1XLVdtV+1YLVhtaC1obWktai1qrWrtbC1sbWztbS1tbW7tby1vbXAtcS1zLXNtc+10LXRtdi17LUQthG2FLYYtiW2LLY0tki2ZLZotpy2nbagtqS2q7astrG21LbwtvS2+LYAtwG3Bbcotym3LLcvtzC3OLc5tzu3RLdIt0y3VLdVt2C3ZLdot3C3cbdzt3W3fLd9t4C3hLeMt423j7eQt5G3kreWt5e3mLeZt5y3oLeot6m3q7est623tLe1t7i3x7fJt+y37bfwt/S3/Lf9t/+3ALgBuAe4CLgJuAy4ELgYuBm4G7gduCS4JbgouCy4NLg1uDe4OLg5uEC4RLhRuFO4XLhduGC4ZLhsuG24b7hxuHi4fLiNuKi4sLi0uLi4wLjBuMO4xbjMuNC41LjduN+44bjouOm47LjwuPi4+bj7uP24BLkYuSC5PLk9uUC5RLlMuU+5UblYuVm5XLlguWi5ablruW25dLl1uXi5fLmEuYW5h7mJuYq5jbmOuay5rbmwubS5vLm9ub+5wbnIucm5zLnOuc+50LnRudK52LnZudu53bneueG547nkueW56LnsufS59bn3ufi5+bn6uQC6AboIuhW6OLo5ujy6QLpCuki6SbpLuk26TrpTulS6VbpYuly6ZLplume6aLppunC6cbp0uni6g7qEuoW6h7qMuqi6qbqruqy6sLqyuri6ubq7ur26xLrIuti62br8ugC7BLsNuw+7EbsYuxy7ILspuyu7NLs1uza7OLs7uzy7Pbs+u0S7RbtHu0m7TbtPu1C7VLtYu2G7Y7tsu4i7jLuQu6S7qLusu7S7t7vAu8S7yLvQu9O7+Lv5u/y7/7sAvAK8CLwJvAu8DLwNvA+8EbwUvBW8FrwXvBi8G7wcvB28HrwfvCS8JbwnvCm8LbwwvDG8NLw4vEC8QbxDvES8RbxJvEy8TbxQvF28hLyFvIi8i7yMvI68lLyVvJe8mbyavKC8obykvKe8qLywvLG8s7y0vLW8vLy9vMC8xLzNvM+80LzRvNW82LzcvPS89bz2vPi8/LwEvQW9B70JvRC9FL0kvSy9QL1IvUm9TL1QvVi9Wb1kvWi9gL2BvYS9h72IvYm9ir2QvZG9k72VvZm9mr2cvaS9sL24vdS91b3Yvdy96b3wvfS9+L0AvgO+Bb4Mvg2+EL4Uvhy+Hb4fvkS+Rb5Ivky+Tr5UvlW+V75Zvlq+W75gvmG+ZL5ovmq+cL5xvnO+dL51vnu+fL59voC+hL6Mvo2+j76QvpG+mL6Zvqi+0L7RvtS+177YvuC+477kvuW+7L4Bvwi/Cb8Yvxm/G78cvx2/QL9Bv0S/SL9Qv1G/Vb+Uv7C/xb/Mv82/0L/Uv9y/37/hvzzAUcBYwFzAYMBowGnAkMCRwJTAmMCgwKHAo8ClwKzArcCvwLDAs8C0wLXAtsC8wL3Av8DAwMHAxcDIwMnAzMDQwNjA2cDbwNzA3cDkwOXA6MDswPTA9cD3wPnAAMEEwQjBEMEVwRzBHcEewR/BIMEjwSTBJsEnwSzBLcEvwTDBMcE2wTjBOcE8wUDBSMFJwUvBTMFNwVTBVcFYwVzBZMFlwWfBaMFpwXDBdMF4wYXBjMGNwY7BkMGUwZbBnMGdwZ/BocGlwajBqcGswbDBvcHEwcjBzMHUwdfB2MHgweTB6MHwwfHB88H8wf3BAMIEwgzCDcIPwhHCGMIZwhzCH8IgwijCKcIrwi3CL8IxwjLCNMJIwlDCUcJUwljCYMJlwmzCbcJwwnTCfMJ9wn/CgcKIwonCkMKYwpvCncKkwqXCqMKswq3CtMK1wrfCucLcwt3C4MLjwuTC68Lswu3C78LxwvbC+ML5wvvC/MIAwwjDCcMMww3DE8MUwxXDGMMcwyTDJcMowynDRcNow2nDbMNww3LDeMN5w3zDfcOEw4jDjMPAw9jD2cPcw9/D4MPiw+jD6cPtw/TD9cP4wwjEEMQkxCzEMMQ0xDzEPcRIxGTEZcRoxGzEdMR1xHnEgMSUxJzEuMS8xOnE8MTxxPTE+MT6xP/EAMUBxQzFEMUUxRzFKMUpxSzFMMU4xTnFO8U9xUTFRcVIxUnFSsVMxU3FTsVTxVTFVcVXxVjFWcVdxV7FYMVhxWTFaMVwxXHFc8V0xXXFfMV9xYDFhMWHxYzFjcWPxZHFlcWXxZjFnMWgxanFtMW1xbjFucW7xbzFvcW+xcTFxcXGxcfFyMXJxcrFzMXOxdDF0cXUxdjF4MXhxePF5cXsxe3F7sXwxfTF9sX3xfzF/cX+xf/FAMYBxgXGBsYHxgjGDMYQxhjGGcYbxhzGJMYlxijGLMYtxi7GMMYzxjTGNcY3xjnGO8ZAxkHGRMZIxlDGUcZTxlTGVcZcxl3GYMZsxm/GccZ4xnnGfMaAxojGicaLxo3GlMaVxpjGnMakxqXGp8apxrDGsca0xrjGuca6xsDGwcbDxsXGzMbNxtDG1Mbcxt3G4MbhxujG6cbsxvDG+Mb5xv3GBMcFxwjHDMcUxxXHF8cZxyDHIcckxyjHMMcxxzPHNcc3xzzHPcdAx0THSsdMx03HT8dRx1LHU8dUx1XHVsdXx1jHXMdgx2jHa8d0x3XHeMd8x33HfseDx4THhceHx4jHiceKx47HkMeRx5THlseXx5jHmsegx6HHo8ekx6XHpsesx63HsMe0x7zHvce/x8DHwcfIx8nHzMfOx9DH2Mfdx+TH6MfsxwDIAcgEyAjICsgQyBHIE8gVyBbIHMgdyCDIJMgsyC3IL8gxyDjIPMhAyEjISchMyE3IVMhwyHHIdMh4yHrIgMiByIPIhciGyIfIi8iMyI3IlMidyJ/IocioyLzIvcjEyMjIzMjUyNXI18jZyODI4cjkyPXI/Mj9yADJBMkFyQbJDMkNyQ/JEckYySzJNMlQyVHJVMlYyWDJYcljyWzJcMl0yXzJiMmJyYzJkMmYyZnJm8mdycDJwcnEycfJyMnKydDJ0cnTydXJ1snZydrJ3MndyeDJ4snkyefJ7Mntye/J8MnxyfjJ+cn8yQDKCMoJygvKDMoNyhTKGMopykzKTcpQylTKXMpdyl/KYMphymjKfcqEypjKvMq9ysDKxMrMys3Kz8rRytPK2MrZyuDK7Mr0ygjLEMsUyxjLIMshy0HLSMtJy0zLUMtYy1nLXctky3jLecucy7jL1Mvky+fL6csMzA3MEMwUzBzMHcwhzCLMJ8wozCnMLMwuzDDMOMw5zDvMPMw9zD7MRMxFzEjMTMxUzFXMV8xYzFnMYMxkzGbMaMxwzHXMmMyZzJzMoMyozKnMq8yszK3MtMy1zLjMvMzEzMXMx8zJzNDM1MzkzOzM8MwBzQjNCc0MzRDNGM0ZzRvNHc0kzSjNLM05zVzNYM1kzWzNbc1vzXHNeM2IzZTNlc2YzZzNpM2lzafNqc2wzcTNzM3QzejN7M3wzfjN+c37zf3NBM4IzgzOFM4ZziDOIc4kzijOMM4xzjPONc5YzlnOXM5fzmDOYc5ozmnOa85tznTOdc54znzOhM6FzofOic6QzpHOlM6YzqDOoc6jzqTOpc6szq3Owc7kzuXO6M7rzuzO9M71zvfO+M75zgDPAc8EzwjPEM8RzxPPFc8czyDPJM8szy3PL88wzzHPOM9Uz1XPWM9cz2TPZc9nz2nPcM9xz3TPeM+Az4XPjM+hz6jPsM/Ez+DP4c/kz+jP8M/xz/PP9c/8zwDQBNAR0BjQLdA00DXQONA80ETQRdBH0EnQUNBU0FjQYNBs0G3QcNB00HzQfdCB0KTQpdCo0KzQtNC10LfQudDA0MHQxNDI0MnQ0NDR0NPQ1NDV0NzQ3dDg0OTQ7NDt0O/Q8NDx0PjQDdEw0THRNNE40TrRQNFB0UPRRNFF0UzRTdFQ0VTRXNFd0V/RYdFo0WzRfNGE0YjRoNGh0aTRqNGw0bHRs9G10brRvNHA0djR9NH40QfSCdIQ0izSLdIw0jTSPNI90j/SQdJI0lzSZNKA0oHShNKI0pDSkdKV0pzSoNKk0qzSsdK40rnSvNK/0sDSwtLI0snSy9LU0tjS3NLk0uXS8NLx0vTS+NIA0wHTA9MF0wzTDdMO0xDTFNMW0xzTHdMf0yDTIdMl0yjTKdMs0zDTONM50zvTPNM900TTRdN8033TgNOE04zTjdOP05DTkdOY05nTnNOg06jTqdOr063TtNO407zTxNPF08jTydPQ09jT4dPj0+zT7dPw0/TT/NP90//TAdQI1B3UQNRE1FzUYNRk1G3Ub9R41HnUfNR/1IDUgtSI1InUi9SN1JTUqdTM1NDU1NTc1N/U6NTs1PDU+NT71P3UBNUI1QzVFNUV1RfVPNU91UDVRNVM1U3VT9VR1VjVWdVc1WDVZdVo1WnVa9Vt1XTVddV41XzVhNWF1YfViNWJ1ZDVpdXI1cnVzNXQ1dLV2NXZ1dvV3dXk1eXV6NXs1fTV9dX31fnVANYB1gTWCNYQ1hHWE9YU1hXWHNYg1iTWLdY41jnWPNZA1kXWSNZJ1kvWTdZR1lTWVdZY1lzWZ9Zp1nDWcdZ01oPWhdaM1o3WkNaU1p3Wn9ah1qjWrNaw1rnWu9bE1sXWyNbM1tHW1NbX1tnW4Nbk1ujW8Nb11vzW/dYA1wTXEdcY1xnXHNcg1yjXKdcr1y3XNNc11zjXPNdE10fXSddQ11HXVNdW11fXWNdZ12DXYddj12XXadds13DXdNd8133XgdeI14nXjNeQ15jXmdeb153XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9T3NPR1D5UKBS71N1VOVUCVbBWrZbh2a2Z7dn72dMa8JzwnU8etuCBINXiIiINorIjM+N+47mj9WZO1J0UwRUamBkYbxrz3MagbqJ0omjlYNPClK+WHhZ5llyXnlex2HAY0Zn7Gd/aJdvTnYLd/V4CHr/eiF8nYBugnGC64qTlWtOnVX3ZjRuo3jteluEEIlOh6iX2FJOVypYTF0fYb5hIWJiZdFnRGobbhh1s3XjdrB3On2vkFGUUpSVnyNTrFwydduAQJKYlVtSCFjcWaFcF123XjpfSl93YV9senWGdeB8c32xfYx/VIEhgpGFQYkbi/ySTZZHnMtO904LUPFRT1g3YT5haGE5ZeppEW+ldYZ21naHe6WCy4QA+aeTi5WAVaJbUVcB+bN8uX+1kShQu1NFXOhd0mJuY9pk52QgbqxwW3ndjR6OAvl9kEWS+JJ+TvZOZVD+XfpeBmFXaXGBVIZHjnWTK5peTpFQcGdAaAlRjVKSUqJqvHcQktSeq1IvYPKPSFCpYe1jymQ8aIRqwG+IgaGJlJYFWH1yrHIEdXl9bX6pgIuJdItjkFGdiWJ6bFRvUH06fyOKfFFKYZ17GYtXkoyTrE7TTx5QvlAGUcFSzVJ/U3BXg1iaXpFfdmGsYc5kbGVvZrtm9GaXaIdthXDxcJ90pXTKdNl1bHjseN969npFfZN9FYA/gBuBloNmixWPFZDhkwOYOJhamuibwk9TVTpYUVljW0ZcuGASYkJosGjoaKpuTHV4ds54PXr7fGt+fH4IiqGKP4yOlsSd5FPpU0pUcVT6VtFZZFs7XKte92I3ZUVlcmWgZq9nwWm9bPx1kHZ+dz96lH8DgKGAj4Hmgv2C8IPBhTGItIiligP5nI8uk8eWZ5jYmhOf7VSbZfJmj2hAejeMYJ3wVmRXEV0GZrFozWj+bih0nojkm2hsBPmomptPbFFxUZ9SVFvlXVBgbWDxYqdjO2XZc3p6o4aijI+XMk7hWwhinGfcdNF504OHirKK6I1OkEuTRpjTXuhp/4XtkAX5oFGYW+xbY2H6aD5rTHAvdNh0oXtQf8WDwImrjNyVKJkuUl1g7GICkIpPSVEhU9lY417gZjhtmnDCctZzUHvxgFuUZlObY2t/Vk6AUEpY3lgqYCdh0GLQaUGbj1sYfbGAX4+kTtFQrFSsVQxboF3nXSplTmUhaEtq4XKOdu93Xn35f6CBToXfhgOPTo/KkAOZVZqrmxhORU5dTsdO8U93Uf5SQFPjU+VTjlQUVnVXolfHW4dd0F78YdhiUWW4Z+lny2lQa8Zr7GtCbJ1ueHDXcpZzA3S/d+l3dnp/fQmA/IEFggqC34JiiDOL/IzAjhGQsZBkkraS0plFmumc152cnwtXQFzKg6CXq5e0nhtUmHqkf9mIzY7hkABYSFyYY596rlsTX3l6rnqOgqyOJlA4UvhSd1MIV/NicmMKa8NtN3elU1dzaIV2jtWVOmfDanBvbYrMjkuZBvl3ZnhrtIw8mwf561MtV05ZxmP7aepzRXi6esV6/nx1hI+Jc401kKiV+1JHV0d1YHvMgx6SCPlYaktRS1KHUh9i2Gh1aZmWxVCkUuRSw2GkZTlo/2l+dEt7uYLrg7KJOYvRj0mZCfnKTpdZ0mQRZo5qNHSBeb15qYJ+iH+IX4kK+SaTC0/KUyVgcWJybBp9Zn2YTmJR3HevgAFPDk92UYBR3FVoVjtX+lf8VxRZR1mTWcRbkFwOXfFdfl7MX4Bi12XjZR5nH2deZ8toxGhfajprI2x9bIJsx22YcyZ0KnSCdKN0eHV/dYF473hBeUd5SHl6eZV7AH26fYh/BoAtgIyAGIpPi0iMd40hkyST4phRmQ6aD5plmpKeyn12TwlU7mJUaNGRq1U6UQv5DPkcWuZhDfnPYv9iDvkP+RD5EfkS+RP5o5AU+RX5FvkX+Rj5/ooZ+Rr5G/kc+ZZmHflWcR75H/njliD5T2N6Y1dTIfmPZ2Bpc24i+Td1I/kk+SX5DX0m+Sf5cojKVhhaKPkp+Sr5K/ks+UNOLflnUUhZ8GcQgC75c1l0Xppkynn1X2xgyGJ7Y+db11uqUi/5dFkpXxJgMPkx+TL5WXQz+TT5Nfk2+Tf5OPnRmTn5Ovk7+Tz5Pfk++T/5QPlB+UL5Q/nDb0T5Rfm/gbKP8WBG+Uf5ZoFI+Un5P1xK+Uv5TPlN+U75T/lQ+VH56VolintnEH1S+VP5VPlV+Vb5V/n9gFj5Wfk8XOVsP1O6bhpZNoM5TrZORk+uVRhXx1hWX7dl5mWAarVrTW7td+96HnzefcuGkogykVuTu2S+b3pzuHVUkFZVTVe6YdRkx2bhbVtubW+5b/B1Q4C9gUGFg4nHilqLH5OTbFN1VHsPjl2QEFUCWFhYYl4HYp5k4Gh2ddZ8s4fonuNOiFduVydZDVyxXDZehV80YuFks3P6gYuIuIyKltuehVu3X7NgElAAUjBSFlc1WFdYDlxgXPZci12mXpJfvGARY4ljF2RDaPlowmrYbSFu1G7kb/5x3HZ5d7F5O3oEhKmJ7YzzjUiOA5AUkFOQ/ZBNk3aW3JfSawZwWHKicmhzY3e/eeR7m36Ai6lYx2BmZf1lvmaMbB5xyXFajBOYbU6Bet1OrFHNUdVSDFSnYXFnUGjfaB5tfG+8dbN35Xr0gGOEhZJcUZdlXGeTZ9h1x3pzg1r5RowXkC2Yb1zAgZqCQZBvkA2Sl1+dXVlqyHF7dkl75IUEiyeRMJqHVfZhW/lpdoV/P4a6h/iIj5Bc+Rtt2XDec2F9PYRd+WqR8Zle+YJOdVMEaxJrPnAbci2GHp5MUqOPUF3lZCxlFmvrb0N8nH7NhWSJvYnJYtiBH4jKXhdnam38cgV0b3SCh96Qhk8NXaBfCoS3UaBjZXWuTgZQaVHJUYFoEWqufLF853xvgtKKG4/PkbZPN1H1UkJU7F5uYT5ixWXaav5vKnnchSOIrZVimmqal57OnptSxmZ3ax1wK3lij0KXkGEAYiNlI29JcYl09H1vgO6EJo8jkEqTvVEXUqNSDG3IcMKIyV6CZa5rwm8+fHVz5E42T/lWX/m6XLpdHGCycy17mn/Of0aAHpA0kvaWSJcYmGGfi0+nb655tJG3lt5SYPmIZMRk02pebxhwEHLndgGABoZchu+NBY8yl2+b+p11nox4f3mgfcmDBJN/npOe1orfWARfJ2cncM90YHx+gCFRKHBicsp4wozajPSM95aGTtpQ7lvWXpllznFCdq13SoD8hHyQJ5uNn9hYQVpiXBNq2m0Pbzt2L303fh6FOInkk0uWiVLSZfNntGlBbZxuD3AJdGB0WXUkdmt4LItemG1RLmJ4lpZPK1AZXeptuH0qj4tfRGEXaGH5hpbSUouA3FHMUV5pHHq+ffGDdZbaTylSmFMPVA5VZVynYE5nqGhsbYFy+HIGdIN0YvnidWx8eX+4f4mDz4jhiMyR0JHilsmbHVR+b9BxmHT6haqOo5ZXnJ+el2fLbTN06IEWlyx4y3oge5J8aWRqdPJ1vHjoeKyZVJu7nt5bVV4gb5yBq4OIkAdOTVMpWtJdTl9iYT1jaWb8Zv9uK29jcJ53LIQThTuIE49FmTucHFW5Yitnq2wJg2qJepehToRZ2F/ZXxtnsn1Uf5KCK4O9gx6PmZDLV7lZklrQWydmmmeFaM9rZHF1f7eM44yBkEWbCIGKjEyWQJqlnl9bE2wbc/J233YMhKpRk4lNUZVRyVLJaJRsBHcgd7997H1il7WexW4RhaVRDVR9VA5mnWYnaZ9uv3aRdxeDwoSfh2mRmJL0nIKIrk+SUd9Sxlk9XlVheGR5ZK5m0Gchas1r22tfcmFyQXQ4d9t3F4C8ggWDAIsoi4yMKGeQbGdy7nZmd0Z6qZ1/a5JsIlkmZ5mEb1OTWJlZ317PYzRmc2c6bitz13rXgiiT2VLrXa5hy2EKYsdiq2TgZVlpZmvLayFx93NddUZ+HoICg2qFo4q/jCeXYZ2oWNieEVAOUjtUT1WHZXZsCn0LfV6AioaAle+W/1KVbGlyc1SaWj5cS11MX65fKme2aGNpPG5Ebgl3c3yOf4eFDov3j2GX9J63XLZgDWGrYU9l+2X8ZRFs72yfc8lz4X2UlcZbHIcQi11SWlPNYg9ksmQ0ZzhqymzAc550lHuVfBt+ioE2goSF64/5lsGZNE9KU81T21PMYixkAGWRZcNp7mxYb+1zVHUiduR2/HbQePt4LHlGfSyC4IfUjxKY75jDUtRipWQkblFvfHbLjbGRYpLumkObI1CNUEpXqFkoXEded18/Yj5luWXBZQlmi2ecacJuxXghfaqAgIErgrOCoYSMhiqKF4umkDKWkJ8NUPNPY/n5V5hf3GKSY29nQ24ZccN2zIDagPSI9YgZieCMKY9NkWqWL09wTxtez2ciaH12fnZEm2FeCmppcdRxanVk+UF+Q4XphdyYEE9Pe3B/pZXhUQZetWg+bE5s22yvcsR7A4PVbDp0+1CIUsFY2GSXaqd0VnaneBeG4pU5l2X5XlMBX4qLqI+vj4qQJVKld0mcCJ8ZTgJQdVFbXHdeHmY6ZsRnxWizcAF1xXXJed16J48gmQia3U8hWDFY9ltuZmVrEW16bn1v5HMrdemD3IgTiVyLFI8PT9VQEFNcU5NbqV8NZ495eYEvgxSFB4mGiTmPO4+lmRKcLGd2TvhPSVkBXO9c8FxnY9Jo/XCicSt0K37shAKHIpDSkvOcDU7YTu9PhVBWUm9SJlSQVOBXK1lmWlpbdVvMW5xeZvl2Yndlp2VubaVuNnImez98Nn9QgVGBmoFAgpmCqYMDiqCM5oz7jHSNuo3okNyRHJZEltmZ55wXUwZSKVR0VrNYVFluWf9fpGFuYhBmfmwaccZ2iXzefBt9rILBjPCWZ/lbTxdff1/CYildC2faaHx4Q35snRVOmVAVUypTUVODWWJah16yYIphSWJ5YpBlh2enadRr1mvXa9hruGxo+TV0+nUSeJF41XnYeYN8y33hf6WAPoHCgfKDGofoiLmKbIu7jBmRXpfbmDufrFYqW2xfjGWzaq9rXG3xbxVwXXKtc6eM04w7mJFhN2xYgAGaTU6LTptO1U46TzxPf0/fT/9Q8lP4UwZV41XbVutYYlkRWutb+lsEXPNdK16ZXx1gaGOcZa9l9mf7Z61oe2uZbNdsI24JcEVzAng+eUB5YHnBeel7F31yfYaADYKOg9GEx4bfiFCKXoodi9yMZo2tj6qQ/JjfmZ2eSlJp+RRnavmYUCpScVxjZVVsynMjdZ11l3uchHiRMJd3TpJkumtecamFCU5r+Uln7mgXbp+CGIVriPdjgW8Skq+YCk63UM9QH1FGVapVF1ZAWxlc4Fw4XopeoF7CXvNgUWhhalhuPXJAcsBy+HZlebF71H/ziPSJc4phjN6MHJdeWL10/YzHVWz5YXoifXKCcnIfdSV1bfkZe4VY+1i8XY9etl6QX1VgkmJ/Y01lkWbZZvhmFmjyaIByXnRue2591n1yf+WAEoKvhX+Jk4odkOSSzZ4gnxVZbVktXtxgFGZzZpBnUGzFbV9v83epeMaEy5Erk9lOylBIUYRVC1ujW0difmXLZTJufXEBdER0h3S/dGx2qnnafVV+qH96gbOBOYIahuyHdYrjjXiQkZIllE2ZrptoU1FcVGnEbCltK24MgpuFO4ktiqqK6pZnn2FSuWaya5Z+/ocNjYOVXZYdZYlt7nFu+c5X01msWydg+mAQYh9mX2Ypc/lz23YBd2x7VoBygGWBoIqSkRZO4lJyaxdtBXo5ezB9b/mwjOxTL1ZRWLVbD1wRXOJdQGKDYxRkLWazaLxsiG2vbh9wpHDScSZ1j3WOdRl2EXvgeyt8IH05fSyFbYUHhjSKDZBhkLWQt5L2lzea109sXF9nkW2ffIx+FosWjR+Qa1v9XQ1kwIRckOGYh3OLW5pgfmfebR+KpooBkAyYN1Jw+VFwjniWk3CI15HuT9dT/VXaVoJX/VjCWohbq1zAXCVeAWENYktiiGMcZDZleGU5aoprNGwZbTFv53HpcnhzB3SydCZ2YXfAeVd66nq5fI99rH1hfp5/KYExg5CE2oTqhZaIsIqQiziPQpCDkGyRlpK5kouWp5aoltaWAJcImJaZ05oam9RTflgZWXBbv1vRbVpvn3EhdLl0hYD9g+Fdh1+qX0Jg7GUSaG9pU2qJazVt823jc/52rHdNexR9I4EcgkCD9IRjhWKKxIqHkR6TBpi0mQxiU4jwj2WSB10nXWldX3SdgWiH1W/+YtJ/NolyiR5OWE7nUN1SR1N/YgdmaX4FiF6WjU8ZUzZWy1mkWjhcTlxNXAJeEV9DYL1lL2ZCZr5n9Gccc+J3OnnFf5SEzYSWiWaKaYrhilWMeoz0V9RbD19vYO1iDWmWa1xuhHHSe1WHWIv+jt+Y/pg4T4FP4U97VCBauFs8YbBlaGb8cTN1XnkzfU6B44GYg6qFzoUDhwqKq46bj3H5xY8xWaRb5luJYOlbC1zDX4FscvnxbQtwGnWvgvaKwE5BU3P52ZYPbJ5OxE9SUV5VJVroXBFiWXK9gqqD/oZZiB2KP5bFlhOZCZ1dnQpYs1y9XURe4WAVYeFjAmolbgKRVJNOmBCcd5+JW7hcCWNPZkhoPHfBlo2XVJifm6FlAYvLjryVNVWpXNZdtV6XZkx29IPHldNYvGLOciid8E4uWQ9gO2aDa+d5Jp2TU8BUw1cWXRth1mavbY14foKYlkSXhFN8YpZjsm0KfkuBTZj7akx/r50anl9OO1C2URxZ+WD2YzBpOnI2gHT5zpExX3X5dvkEfeWCb4S7hOWFjY53+W9PePl5+eRYQ1tZYNpjGGVtZZhmevlKaSNqC20BcGxx0nUNdrN5cHp7+Yp/fPlEiX35k4vAkX2WfvkKmQRXoV+8ZQFvAHameZ6KrZlam2yfBFG2YZFijWrGgUNQMFhmXwlxAIr6inxbFob6TzxRtFZEWalj+W2qXW1phlGITllPf/mA+YH5glmC+YP5X2tdbIT5tXQWeYX5B4JFgjmDP49dj4b5GJmH+Yj5ifmmTor531d5XxNmi/mM+at1eX5vi435BpBbmqVWJ1j4WR9atFuO+fZej/mQ+VBjO2OR+T1ph2y/bI5tk231bRRvkvnfcDZxWXGT+cNx1XGU+U94b3iV+XV7432W+S9+l/lNiN+OmPmZ+Zr5W5Kb+facnPmd+Z75hWCFbZ/5sXGg+aH5sZWtU6L5o/mk+dNnpfmOcDBxMHR2gtKCpvm7leWafZ7EZqf5wXFJhKj5qflLWKr5q/m4XXFfrPkgZo5meWmuaThs82w2bkFv2m8bcC9wUHHfcXBzrflbdK751HTIdk56k36v+bD58YJgis6PsflIk7L5GZez+bT5Qk4qULX5CFLhU/NmbWzKbwpzf3dieq6C3YUChrb51Ihjin2La4y3+bOSuPkTlxCYlE4NT8lPslBIUz5UM1TaVWJYulhnWRta5FufYLn5ymFWZf9lZGanaFpss2/PcKxxUnN9ewiHpIoynAefS1yDbERziXM6kqtuZXQfdml6FX4KhkBRxVjBZO50FXVwdsF/lZDNllSZJm7mdKl6qnrlgdmGeIcbiklajFubW6FoAGljbalzE3QsdJd46X3rfxiBVYGeg0yMLpYRmPBmgF/6ZYlnamyLcy1QA1pqa+53FllsXc1dJXNPdbr5u/nlUPlRL1gtWZZZ2lnlW7z5vfmiXddiFmSTZP5kvvncZr/5SGrA+f9xZHTB+Yh6r3pHfl5+AIBwgcL574eBiSCLWZDD+YCQUpl+YTJrdG0ffiWJsY/RT61Ql1HHUsdXiVi5W7heQmGVaYxtZ262bpRxYnQodSx1c4A4g8mECo6Uk96TxPmOTlFPdlAqUchTy1PzU4db01skXBphgmH0ZVtyl3NAdMJ2UHmRebl5Bn29f4uC1YVehsKPR5D1kOqRhZbolumW1lJnX+1lMWYvaFxxNnrBkAqYkU7F+VJqnmuQb4lxGIC4glOFS5CVlvKW+5cahTGbkE6KccSWQ1GfU+FUE1cSV6NXm1rEWsNbKGA/YfRjhWw5bXJukG4wcj9zV3TRgoGIRY9gkMb5YpZYmBudCGeKjV6STU9JUN5QcVMNV9RZAVoJXHBhkGYtbjJyS3TvfcOADoRmhD+FX4dbiBiJAotVkMuXT5tzTpFPElFqUcf5L1WpVXpbpVt8Xn1evl6gYN9gCGEJYcRjOGUJZ8j51GfaZ8n5YWliablsJ23K+Thuy/nhbzZzN3PM+Vx0MXXN+VJ2zvnP+a19/oE4hNWImIrbiu2KMI5CjkqQPpB6kEmRyZFuk9D50fkJWNL502uJgLKA0/nU+UFRa1k5XNX51vlkb6dz5IAHjdf5F5KPldj52fna+dv5f4AOYhxwaH2Nh9z5oFdpYEdht2u+ioCSsZZZTh9U620thXCW85fumNZj42yRkN1RyWG6gfmdnU8aUABRnFsPYf9h7GQFacVrkXXjd6l/ZIKPhfuHY4i8inCLq5GMTuVOCk/d+d75N1noWd/58l0bX1tfIWDg+eH54vnj+T5y5XPk+XB1zXXl+ft55vkMgDOAhIDhglGD5/no+b2Ms4yHkOn56vn0mAyZ6/ns+TdwynbKf8x//H8ai7pOwU4DUnBT7fm9VOBW+1nFWxVfzV9ubu757/lqfTWD8PmTho2K8fltl3eX8vnz+QBOWk9+T/lY5WWibjiQsJO5mftO7FiKWdlZQWD0+fX5FHr2+U+Dw4xlUURT9/n4+fn5zU5pUlVbv4LUTjpSqFTJWf9ZUFtXW1xbY2BIYctumXBucYZz93S1dcF4K30FgOqBKIMXhcmF7orHjMyWXE/6UrxWq2UoZnxwuHA1cr19jYJMkcCWcp1xW+domGt6b952kVyrZltvtHsqfDaI3JYITtdOIFM0WLtY71hsWQdcM16EXjVfjGOyZlZnH2qjagxrP29Gcvr5UHOLdOB6p3x4gd+B54GKg2yEI4WUhc+F3YgTjayRd5Wclo1RyVQoV7BbTWJQZz1ok2g9btNufXAhfsGIoYwJj0ufTp8tco97zYoak0dPTk8yUYBU0FmVXrVidWduaRdqrmwabtlyKnO9dbh7NX3ngvmDV4T3hVuKr4yHjhmQuJDOll+f41IKVOFawltYZHVl9G7Ecvv5hHZNeht7TXw+ft9/e4Mri8qMZI3hjV+O6o/5j2mQ0ZNDT3pPs1BoUXhRTVJqUmFYfFhgWQhcVVzbXptgMGITaL9rCGyxb05xIHQwdTh1UXVydkx7i3ute8Z7j35uij6PSY8/kpOSIpMrlPuWWphrmB6ZB1IqYphiWW1kdsp6wHt2fWBTvlyXXjhvuXCYfBGXjpvenqVjemR2hwFOlU6tTlxQdVBIVMNZmltAXq1e916BX8VgOmM/ZXRlzGV2Znhm/mdoaYlqY2tAbMBt6G0fbl5uHnChcI5z/XM6dVt3h3iOeQt6fXq+fI59R4ICiuqKnowtkUqR2JFmksySIJMGl1aXXJcCmA6fNlKRUnxVJFgdXh9fjGDQY69o329teSx7zYG6hf2I+IpEjo2RZJablj2XTJhKn85PRlHLUalSMlYUX2tfqmPNZOllQWb6ZvlmHWedaNdo/WkVb25vZ3HlcSpyqnQ6d1Z5WnnfeSB6lXqXfN98RH1wfoeA+4WkhlSKv4qZjYGOIJBtkOORO5bVluWcz2UHfLONw5NYWwpcUlPZYh1zJ1CXW55fsGBrYdVo2W0udC56Qn2cfTF+a4EqjjWOfpMYlFBPUFfmXadeK2NqfztOT0+PT1pQ3VnEgGpUaFT+VU9ZmVveXdpeXWYxZ/FnKmjobDJtSm6Nb7dw4HOHdUx8An0sfaJ9H4LbhjuKhYpwjYqOM48xkE6RUpFElNCZ+XqlfMpPAVHGUchX71v7XFlmPWpabZZu7G8McW9143oiiCGQdZDLlv+ZAYMtTvJORojNkX1T22praUFseoSeWI5h/mbvYt1wEXXHdVJ+uIRJiwiNS07qU6tUMFdAV9dfAWMHY29kL2XoZXpmnWezZ2JrYGyabCxv5XcleEl5V3kZfaKAAoHzgZ2Ct4IYh4yK/PkEjb6NcpD0dhl6N3pUfneAB1XUVXVYL2MiZElmS2ZtaJtphGslbbFuzXNodKF0W3W5deF2HneLd+Z5CX4dfvuBL4WXiDqK0YzrjrCPMpCtk2OWc5YHl4RP8VPqWclaGV5OaMZ0vnXpeZJ6o4HthuqMzI3tj59lFWf9+fdXV2/dfS+P9pPGlrVf8mGEbxROmE8fUMlT31VvXe5dIWtka8t4mnv++UmOyo5ukEljPmRAd4R6L5N/lGqfsGSvb+ZxqHTadMR6EnyCfrJ8mH6aiwqNfZQQmUyZOVLfW+ZkLWcufe1Qw1N5WFhhWWH6Yaxl2XqSi5aLCVAhUHVSMVU8WuBecF80YV5lDGY2ZqJmzWnEbjJvFnMhdpN6OYFZgtaDvIS1UPBXwFvoW2lfoWMmeLV93IMhhceR9ZGKUfVnVnusjMRRu1m9YFWGHFD/+VRSOlx9YRpi02LyZKVlzG4gdgqBYI5flruW305DU5hVKVndXcVkyWz6bZRzf3obgqaF5IwQjneQ55HhlSGWxpf4UfJUhlW5X6RkiG+0fR+PTY81lMlQFly+bPttG3W7dz18ZHx5isKKHli+WRZed2NScop1a3fciryMEo/zXnRm+G19gMGDy4pRl9abAPpDUv9mlW3vbuB95ooukF6Q1JodUn9S6FSUYYRi22KiaBJpWmk1apJwJnFdeAF5DnnSeQ16loB4gtWCSYNJhYKMhY1ikYuRrpHDT9FW7XHXdwCH+In4W9ZfUWeokOJTWlj1W6RggWFgZD1+cIAlhYOSrmSsUBRdAGecWL1iqGMOaXhpHmprbrp2y3m7gimEz4qojf2PEpFLkZyREJMYk5qT25Y2mg2cEU5cdV15+npRe8l7Ln7EhFmOdI74jhCQJWY/aUN0+lEuZ9yeRVHgX5Zs8oddiHeItGC1gQOEBY3WUzlUNFY2WjFcinDgf1qABoHtgaONiZFfmvKddFDETqBT+2AsbmRciE8kUORV2VxfXmVglGi7bMRtvnHUdfR1YXYaekl6x337fW5/9IGphhyPyZazmVKfR1LFUu2YqokDTtJnBm+1T+JblWeIbHhtG3QneN2RfJPEh+R5MXrrX9ZOpFQ+Va5YpVnwYFNi1mI2Z1VpNYJAlrGZ3ZksUFNTRFV8VwH6WGIC+uJka2bdZ8Fv728idDh0F4o4lFFUBlZmV0hfmmFOa1hwrXC7fZWKalkrgaJjCHc9gKqMVFgtZLtplVsRXm9uA/pphUxR8FMqWSBgS2GGa3Bs8Gwee86A1ILGjbCQsZgE+sdkpG+RZARlTlEQVB9XDopfYXZoBfrbdVJ7cX0akAZYzGl/gSqJAJA5mHhQV1msWZViD5Aqm11heXLWlWFXRlr0XYpirWT6ZHdn4mw+bSxyNnQ0eHd/rYLbjReYJFJCV39nSHLjdKmMpo8RkiqWa1HtU0xjaU8EVZZgV2WbbH9tTHL9chd6h4mdjG1fjm/5cKiBDmG/T09QQWJHcsd76H3pf02QrZcZmraMaldzXrBnDYRViiBUFltjXuJeCl+DZbqAPYWJlVuWSE8FUw1TD1OGVPpUA1cDXhZgm2KxYlVjBvrhbGZtsXUyeN6AL4HegmGEsoSNiBKJC5Dqkv2YkZtFXrRm3WYRcAZyB/r1T31Sal9TYVNnGWoCb+J0aHloiHmMx5jEmEOawVQfelNp94pKjKiYrpl8X6tisnWudquIf5BCljlTPF/FX8xszHNidYt1Rnv+gp2ZT048kAtOVU+mUw9ZyF4wZrNsVXR3g2aHwIxQkB6XFZzRWHhbUIYUi7Sd0ltoYI1g8WVXbCJvo28acFV/8H+RlZKVUJbTl3JSRI/9UStUuFRjVYpVu2q1bdh9ZoKckneWeZ4IVMhU0nbkhqSV1JVclqJOCU/uWeZa911SYJdibWdBaIZsL244f5uAKoII+gn6BZilTlVQs1STV1pZaVuzW8hhd2l3bSNw+YfjiXKK54qCkO2ZuJq+UjhoFlB4Xk9nR4NMiKtOEVSuVuZzFZH/lwmZV5mZmVNWn1hbhjGKsmH2antz0o5Ha6qWV5pVWQBya41pl9RP9FwmX/hhW2brbKtwhHO5c/5zKXdNd0N9Yn0jfjeCUogK+uKMSZJvmFFbdHpAiAGYzFrgT1RTPln9XD5jeW35cgWBB4Gig8+SMJioTkRREVKLV2JfwmzObgVwUHCvcJJx6XNpdEqDoodhiAiQopCjk6iZblFXX+BgZ2GzZlmFSo6vkYuXTk6STnxU1Vj6WH1ZtVwnXzZiSGIKZmdm62tpbc9tVm74bpRv4G/pb11w0HIldFp04HSTdlx5ynwefuGApoJrhL+EToZfhnSHd4tqjKyTAJhlmNFgFmJ3kVpaD2b3bT5uP3RCm/1f2mAPe8RUGF9ebNNsKm3YcAV9eYYMijudFlOMVAVbOmprcHV1jXm+ebGC74NxikGLqIx0lwv69GQrZbp4u3hrejhOmlVQWaZbe16jYNtjYWtlZlNoGW5lcbB0CH2EkGmaJZw7bdFuPnNBjMqV8FFMXqhfTWD2YDBhTGFDZkRmpWnBbF9uyW5ib0xxnHSHdsF7J3xSg1eHUZCNlsOeL1PeVvteil9iYJRg92FmZgNnnGruba5vcHBqc2p+voE0g9SGqIrEjINScnOWW2tqBJTuVIZWXVtIZYVlyWafaI1txm07crSAdZFNmq9PGVCaUw5UPFSJVcVVP16MXz1nZnHdcwWQ21LzUmRYzlgEcY9x+3GwhROKiGaohadVhGZKcTGESVOZVcFrWV+9X+5jiWZHcfGKHY++nhFPOmTLcGZ1Z4ZkYE6L+J1HUfZRCFM2bfiA0Z4VZiNrmHDVdQNUeVwHfRaKIGs9a0ZrOFRwYD1t1X8IgtZQ3lGcVWtWzVbsWQlbDF6ZYZhhMWJeZuZmmXG5cbpxp3KneQB6sn9wigAAAAAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEuAS8BMAExATQBNQE2ATcBOAE5AToBOwE8AT0BPgFBAUIBQwFEAUUBRgFHAUgBSgFLAUwBTQFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BkgGgAaEBrwGwARgCGQIaAhsCxgLHAtgC2QLbAtwC3QIAAwEDAwMJAyMDegOEA4UDhgOIA4kDigOMA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXgRfBJAEkQSwBbEFsgWzBbQFtQW2BbcFuAW5BbsFvAW9Bb4FvwXABcEFwgXDBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXh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wBQAAMAVAADAFgAAwBcAAMAYAADAGQAAwBoAAMAbAADAHAAAwB0AAMAeAADAHwAAwAAAALMBAADDAgAAwwMAAMMEAADDBQAAwwYAAMMHAADDCAAAwwkAAMMKAADDCwAAwwwAAMMNAADTDgAAww8AAMMAAAy7AQAMwwIADMMDAAzDBAAM2wAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFAAAAAAAAABIRExQVFhcYGRobHB0eHyAhESIjJBElJicoKSorLBEtLi8QEDAQEBAQEBAQMTIzEDQ1EBARERERERERERERERERERERERERERERERERNhERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERETcREREROBE5Ojs8PT4RERERERERERERERERERERERERERERERERERERERERERERERERERERERERPxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBFAQRFCQ0RFRkdISUoRS0xNTk9QURBSU1RVVldYWVpbXF0QXl9gEBEREWFiYxAQEBAQEBAQEBARERERZBAQEBAQEBAQEBAQEBAQEBERZRAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBERZmcQEGhpERERERERERERERERERERERERERERERFqERFrEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBFsbRAQEBAQEBAQEG4QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEG9wcXIQEBAQEBAQEHN0dRAQEBAQdncQEBAQeBAQeRAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAAAAAAA/v//B/7//wcAAAAAAAQgBP//f////3//////////////////////////////////w/8DAB9QAAAAAAAAAAAAACAAAAAAAN+8QNf///v///////////+///////////////////////8D/P///////////////////////////v///38C//////8BAAAAAP+/tgD///+HBwAAAP8H//////////7/w////////////////+8f/uH/nwAA////////AOD///////////////8DAP//////BzAE/////P8fAAD///8B/wcAAAAAAAD//98/AADw//gD////////////7//f4f/P//7/75/5///9xeOfWYCwz/8DEO6H+f///W3DhxkCXsD/PwDuv/v///3t478bAQDP/wAe7p/5///97eOfGcCwz/8CAOzHPdYYx//Dxx2BAMD/AADv3/3///3/498dYAfP/wAA79/9///97+PfHWBAz/8GAO/f/f/////n313wgM//APzs/3/8///7L3+AX//A/wwA/v////9//wc/IP8DAAAAANb3//+v//87XyD/8wAAAAABAAAA/wMAAP/+////H/7/A////v///x8AAAAAAAAAAP///////3/5/wP///////////8//////78g///////3////////////PX89//////89/////z1/Pf9//////////z3//////////wcAAAAA//8AAP////////////8/P/7//////////////////////////////////////////////////////////5////7//wf////////////H/wH/3w8A//8PAP//DwD/3w0A////////z///AYAQ/wMAAAAA/wP//////////////wH//////wf//////////z8A////f/8P/wHA/////z8fAP//////D////wP/AwAAAAD///8P/////////3/+/x8A/wP/A4AAAAAAAAAAAAAAAP///////+//7w//AwAAAAD///////P///////+//wMA////////fwD/4///////P/8B///////nAAAAAADebwT///////////////////////////////8AAAAAgP8fAP//Pz//////Pz//qv///z/////////fX9wfzw//H9wfAAAAAAAAAAAAAAAAAAACgAAA/x8AAAAAAAAAAAAAAACE/C8+UL3/8+BDAAD//////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA////////AwAA//////9///////9//////////////////////x94DAD/////vyD/////////gAAA//9/AH9/f39/f39//////wAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAP4DPh/+////////////f+D+//////////////fg///////+/////////////38AAP///wcAAAAAAAD///////////////////////////////8/AAAAAAAAAAAA////////////////////////////////////////AAD//////////////////////x8AAAAAAAAAAP//////P/8f////DwAA//////9/8I///////////////////wAAAACA//z////////////////5////////fAAAAAAAgP+//////wAAAP///////w8A//////////8vAP8DAAD86P//////B/////8HAP///x/////////3/wCA/wP///9/////////fwD/P/8D//9//P////////9/BQAAOP//PAB+fn4Af3////////f/AP///////////////////wf/A///////////////////////////DwD//3/4//////8P/////////////////z//////////////////AwAAAAB/APjg//1/X9v/////////////////AwAAAPj///////////////8/AAD///////////z///////8AAAAAAP8PAAAAAAAAAAAAAAAAAADf/////////////////////x8AAP8D/v//B/7//wfA/////////////3/8/PwcAAAAAP/v//9///+3/z//PwAAAAD///////////////////8HAAAAAAAAAAD///////8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////H////////wEAAAAAAP////8A4P///wf//////wf///8//////w//PgAAAAAA/////////////////////////z//A/////8P/////w///////wD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAP///////38A//8/AP8AAAAAAAAAAAAAAAAAAAAAAAAAP/3/////v5H//z8A//9/AP///38AAAAAAAAAAP//NwD//z8A////AwAAAAAAAAAA/////////8AAAAAAAAAAAG/w7/7//z8AAAAAAP///x////8fAAAAAP/+//8fAAAA////////PwD//z8A//8HAP//AwAAAAAAAAAAAAAAAAD///////////8BAAAAAAAA////////BwD///////8HAP//////AP8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////H4AA//8/AAAAAAAAAAAAAAAAAAAAAAAAAP//fwD//////////z8AAADA/wAA/P///////wEAAP///wH/A////////8f/cAD/////RwD//////////x4A/xcAAAAA///7////n0AAAAAAAAAAAH+9/7//Af////////8B/wPvn/n///3t458ZgeAPAAAAAAAAAAAAAAAAAAAAAAAAAP//////////uwf/gwAAAAD//////////7MA/wMAAAAAAAAAAAAAAAAAAAAAAAAAAP///////z9/AAAAPwAAAAD/////////fxEA/wMAAAAA////////PwH/AwAAAAAAAP///+f/B/8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////wEAAAAAAAAAAAAAAAD///////////8DAIAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8///////8GgAAAP///////+d/AAD///////////8gAAAAAP////////8B//3/////f38BAP8DAAD8/////P///n8AAAAAAAAAAAB/+/////9/tMsA/wO//f///397Af8DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//38A/////////////////////////wMAAAAAAAAAAAAAAAD/////////////////fwAA////////////////////////////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8B////f/8DAAAAAAAAAAAAAAAA////PwAA////////AAAPAP8D+P//4P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAP///////////4f/////////gP//AAAAAAAAAAALAAAA/////////////////////////////////////////wD///////////////////////////////////////8HAP///38AAAAAAAAHAPAA/////////////////////////////////////////////////////////////////w//////////////////B/8f/wH/QwAAAAAAAAAAAAAAAP/////////////f///////////fZN7/6+//////////v+ff3////3tf/P3//////////////////////////////////////////////////////z/////9///3////9///3////9///3////9//////f////3///fP////////f///+dsHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////x+AP/9DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////D/8D////////////////////////////////HwAAAAAAAAD//////////48I/wMAAAAAAAAAAAAAAAAAAAAAAAAAAO////+W/vcKhOqWqpb3917/+/8P7vv/DwAAAAAAAAAAAAAAAAAA////A////wP///8DAAAAAAAAAAAAAAAAAABhbG51bQBhbHBoYQBibGFuawBjbnRybABkaWdpdABncmFwaABsb3dlcgBwcmludABwdW5jdABzcGFjZQB1cHBlcgB4ZGlnaXQAAAAAAAAAABIQExQVFhcYGRobHB0eHyAhEBAiIxAkJSYnKCkqKxAsLS4RES8REREREREwMTIzNDU2NxEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQOBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQORA6Ozw9Pj8QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQQRAQQhBDREUQRkdIEEkQEEpLTE1OEE9QUVJTVFVWV1hZWlsQXF1eXxAQEBBgEBAQEBAQEBAQEBAQEBAQYRAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQYmMQEGRlEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEGYQEBAQEBAQEBAQEBAQEBAQEBAQZ2hpahAQa2wREW0QEBAQEBBubxAQEBAQcHEQEHJzdBB1dncRERF4eXp7fBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAD+/wD8AQAA+AEAAHgAAAAA//vf+wAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAD8/+Cv/////////////9///////yBAsAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAD8AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAAAADm/v///wBASQAAAAAAGAD//wDYAAAAAAAAAAEAPAAAAAAAAAAAAAAAABDgAR4AYP+/AAAAAAAA/wcAAAAAAAAAAAAAAAAAAAAAAAAA+M/jAAAAAwAg/38AAABOAAAAAAAAAAAAAAAAAAAIAAf8AAAAAAAAAAAAEAAgHgAwAAEAAAAAAAAAABAAIAAAAAD8bwAAAAAAAAAQACAAAAAAQAAAAAAAAAAAEAAgAAAAAAPgAAAAAAAAABAAIAAAAAD9AAAAAAAAAAAAACAAAAAA/wcQAAAAAAAAAAAgAAAAAID/EAAAAAAAABAAIAAAAAAAAAAAAAAAAAAYAKAAfwAA/wMAAAAAAAAAAAAEAAAAABAAAAAAAACAAIDA3wAMAAAAAAAAAAAAAAAEAB8AAAAAAAD+////APz//wAAAAAAAAAA/AAAAAAAAMD/3/8HAAAAAAAAAAAAAIAGAPwAAAAAAAAAAADAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAADg////HwAA/wMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABAAAYAAAAAAAAAAAAOAAAAAAQAAAAcAAAAAAAAAAAAAAAAAAAADAAAP5/LwAA/wP/fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOMQAAAAAAAAAAAAAAAAAAAAAAAMT/////AAAAwAAAAAAAAAAAAQDgnwAAAAB/P/9/AAAAAAAAAAAAAAAAAAAQABAAAPz///8fAAAAAAAMAAAAAAAAQAAM8AAAAAAAAID4AAAAAAAAAMAAAAAAAAAAAP8A////IZADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////38A4PsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAD4ADgAOAAYID4/////P//////f9//8X//fwAA/////wAA/////wEAewPQwa9CAAwfvP//AAAAAAAO////////////////////////fwAAAP8HAAD/////////////PwAAAAAAAPz/////////////////////z////z//////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOCHA/4AAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAP//////f/////8AAAAAAAD////7/////////////w8A//////////////////////////////////8/AAAA/w8e////AfzB4AAAAAAAAAAAAAAAHgEAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAP////8PAAAA////f/////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAP///////38AAAAAAADAAOAAAAAAAAAAAAAAAIAPcAAAAAAAAAAAAAAAAAAA/wD//38AAwAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAEAAAAAAD/8DAAAAAAAA8AAAAAAAAAAAABDAAAD//wMXAAAAAAD4AAAAAAiAAAAAAAAAAAAAAAgA/z8AwAAAAAAAAAAAAAAAAAAAAPAAAIADAAAAAAAAAIACAADAAABDAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAOAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgAAAAAAAAAAAAAAAAAAAAD8/wMAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD///8D////////9/9/DwAAAAAAAAAAAAAAAAAAAAAAgP7/APwBAAD4AQAA+D8AAAAAAAAAAAAAAAAAAAB/fwAwh///////j/8AAAAAAADg//9//w8BAAAAAAD//////z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////DwAAAAAPAAAAAAAAAAAAAAAAAACAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgP8AAID/AAAAAID/AAAAAAAAAAAA+AAAwI8AAACAAAAAAAAAAAAAAAAAAAAAMP///P//////AAAAAAAAAIf/Af8BAAAA4AAAAOAAAAAAAAEAAGD4fwAAAAAAAAAA/gAAAP8AAAD/AAAAHgD+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA////fwAAAAAAAAAAAAAAAAAAAAAAAADgfwAAAMD//wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD/8/z8AAIADAAAAAAAA/gMgAAAAAAAAAAAAAAAAGAAPAAAAAAA4AAAAAAAAAAAA4T8A6P7/HwAAAAAAAABgPwAAAAAAAAAAAAAAAAACAAAAAAAAAAYAAAAAAAAAAAAYACAAAMAfHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABE+ABoAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAID///8AAAAAAAAAAAAAAACADgAAAP8fAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAIAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAPwHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAGID/AAAAAAAAAAAAAN8HAAAAAAAAAAAAAAAAAAAAAAAAgD4AAPz/HwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8DgAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAAAP//MAAA+AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwDwAAAAAAAAAAAAAA////////////////////////////////////////PwD/////f/7//////////////////////////////wEAAP//////////PwAAAAAAAAAAAAAAAAAAAAAAAAD//w8A/////////////38A////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAIAAAACAAAIAAAACAAAIAAAACAAAAAAgAAAAIAAAgAAAAAAAAA//////////////////////8PAPj+/wAAAAAAAAAAAAAAAAAAAAB/AACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgP9/AAAAAAAAAAAAAAAAAHAHAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v////////8fAAAAAAAAAAAA/v///////z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAP//////D////////////////w8A/3/+//7//v///z8A/x//////AAAA/AAAABwAAAD8////HwAAAAAAAMD///8HAP//////D/8BAwA/AAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////PwD/H/8H//////////////////8PAP//////////////Af8PAAD/D/////////8A/wP//////wD///8/AAAAAAAAAAAAAP/v////////////////e/z/////58f////n/////////////////////w8A/z8PBwcAPwAAAAAAAAAAAAAAAAAgAAAACQAAAAoAAAANAAAACwAAAAwAAACFAAAAACAAAAEgAAACIAAAAyAAAAQgAAAFIAAABiAAAAggAAAJIAAACiAAACggAAApIAAAXyAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAADL9/////7G/eadPtNApIMBj6Bl7AhFwwPzKTc1uaqPAPWTMNguFtMBRZ6kHMyJdQDhpWVB9861AX7C2brvS40C9qZ+PD4H8QNxJLE93QedAAAAAAAAAAADMleRHsRipvcb7mub//7G/v2sM+XCjEMCDF31aL+tQwGPMQmezs3TA14ujKO+mdcDexZgMgWBOQGQoflwCbZBAYB2+j/hat0A4+nb6uMzCQGToC8cdzKJAAAAAAAAAAACGquFvA+ElvkviwPf2/7G/dICkrrJFA8AUTrlMSvc1wEUaCkIiCk3AD9iSqKxyP8DTfQeEku1BQA58SkY5mHZA1mEQbW6mkkB+m8O4/J+RQIGQN/yWsmVAAAAAAAAAAABtAifpFtN3vkIeXkli/7G/Q6gkijk297/zp6/t84oewANjJMXmYibAD+ePr4HeCcBZWYuQZTg2QI+H6A6eBmFAmwfqQobncED/+rY6AzxjQAkYOUSzUC1AAAAAAAAAAAAAAAAAAAAAACz+////v7I/1jSzW1KJJ0AlGDAVY22BQG30GD6ZTcFAZhWQDtQS4kC8OVs21XhkQGMFa05Yor9AP4zTVFJmAUFDK6WD2oMoQT0L3ihrpilBxTCVLG39FMHZjMwpjz20PUywctH/v7I/0z2VubBXF0DpiIcKkuNg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IG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBNdWx0aWhvcCBhdHRlbXB0ZWQAUmVxdWlyZWQga2V5IG5vdCBhdmFpbGFibGUAS2V5IGhhcyBleHBpcmVkAEtleSBoYXMgYmVlbiByZXZva2VkAEtleSB3YXMgcmVqZWN0ZWQgYnkgc2VydmljZQAAAAAAAAAAAKUCWwDwAbUFjAUlAYMGHQOUBP8AxwMxAwsGvAGPAX8DygQrANoGrwBCA04D3AEOBBUAoQYNAZQCCwI4BmQCvAL/Al0D5wQLB88CywXvBdsF4QIeBkUChQCCAmwDbwTxAPMDGAXZANoDTAZUAnsBnQO9BAAAUQAVArsAswNtAP8BhQQvBfkEOABlAUYBnwC3BqgBcwJTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEEAAAAAAAAAAAvAgAAAAAAAAAAAAAAAAAAAAAAAAAANQRHBFYEAAAAAAAAAAAAAAAAAAAAAKAEAAAAAAAAAAAAAAAAAAAAAAAARgVgBW4FYQYAAM8BAAAAAAAAAADJBukG+QYeBzkHSQdeBwAAAAAAAAAAAAAAAFVua25vd24gc2lnbmFsAEhhbmd1cABJbnRlcnJ1cHQAUXVpdABJbGxlZ2FsIGluc3RydWN0aW9uAFRyYWNlL2JyZWFrcG9pbnQgdHJhcABBYm9ydGVkAEJ1cyBlcnJvcgBBcml0aG1ldGljIGV4Y2VwdGlvbgBLaWxsZWQAVXNlciBkZWZpbmVkIHNpZ25hbCAxAFNlZ21lbnRhdGlvbiBmYXVsdABVc2VyIGRlZmluZWQgc2lnbmFsIDIAQnJva2VuIHBpcGUAQWxhcm0gY2xvY2sAVGVybWluYXRlZABTdGFjayBmYXVsdABDaGlsZCBwcm9jZXNzIHN0YXR1cwBDb250aW51ZWQAU3RvcHBlZCAoc2lnbmFsKQBTdG9wcGVkAFN0b3BwZWQgKHR0eSBpbnB1dCkAU3RvcHBlZCAodHR5IG91dHB1dCkAVXJnZW50IEkvTyBjb25kaXRpb24AQ1BVIHRpbWUgbGltaXQgZXhjZWVkZWQARmlsZSBzaXplIGxpbWl0IGV4Y2VlZGVkAFZpcnR1YWwgdGltZXIgZXhwaXJlZABQcm9maWxpbmcgdGltZXIgZXhwaXJlZABXaW5kb3cgY2hhbmdlZABJL08gcG9zc2libGUAUG93ZXIgZmFpbHVyZQBCYWQgc3lzdGVtIGNhbGwAUlQzMgBSVDMzAFJUMzQAUlQzNQBSVDM2AFJUMzcAUlQzOABSVDM5AFJUNDAAUlQ0MQBSVDQyAFJUNDMAUlQ0NABSVDQ1AFJUNDYAUlQ0NwBSVDQ4AFJUNDkAUlQ1MABSVDUxAFJUNTIAUlQ1MwBSVDU0AFJUNTUAUlQ1NgBSVDU3AFJUNTgAUlQ1OQBSVDYwAFJUNjEAUlQ2MgBSVDYzAFJUNjQAAAL/AARkACAAAAT//wYAAQABAAEA//8B/wH//////wH/Af8B/wH/Af8B/wH/Af//////Cv8gAP//A/8B/wT/HgAAAQX//////2MAAAhjAOgDAgAAAP//////AAAAAf8B//////////////8AAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAf8B//////8AASAABACAAAAI//8B/wH/////////Af8G/wf/CP8J//////+8ArwCAQD//wEAAQD//wAA//////////8AAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wEACv///////////wH/Af8AAAAAAAAB/wH/Af8AAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAAAAAH/Af8BAAAAAQAAAAH//////wAAAAAB////AAAAAP////////////8oAAr//////wEACv////8A//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf8B////AQD//////////////////wr//////wEAL2Rldi9sb2cAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAAGEAAAAAAAAA4QAAAAAAAAF5AAAAAAACAhkAAAAAAALCzQAAAAAAAsONAAAAAAAAmFkEAAAAAgK9LQQAAAACoCINBAAAAAPyMvEEAAADAjDL3QQAAACg7TDRCAACAdXcHc0IAAIB1dwezQgAA2OzuN/RCAABzyuy+NkMAkGgwuQJ7QwBaQb6z4cBDIMa16TsoBkRs8FlhUndORAAAAAAAAAAAnqTBQ1HqFUJXTPV1cPwjQhq2ioEyoSBCGiboIrWwEELooaWzwX/2QT/z0/UYdNVBKl+5ewyrrUGYzF35dvh9QUz0gFDp8UVB64eHH0K2BkEE2FgIrIe/QFI7vHtgWmpABSf2H5MNBEAAAAAAAAAAAAAAAAAAAAAAAAAAAKgIg0EAAACAab2cQQAAALCm/aFBAAAAcHEYmUEAAACQtu6FQQAAAOBxcWlBAAAAAHsfREEAAAAAvNAVQQAAAACA599AAAAAAAAUnkAAAAAAAIBQQAAAAAAAAPA/AAAAAAAAAAAvdG1wL3RtcGZpbGVfWFhYWFhYAAAAAAAAAAAAAAAAAC90bXAvdG1wbmFtX1hYWFhYWAAAAAgAAFYBAAA5AAAAAAAAAAEgAAAA4P//AL8dAADnAgAAeQAAAiQAAAEBAAAA////AAAAAAECAAAA/v//ATn//wAY//8Bh///ANT+/wDDAAAB0gAAAc4AAAHNAAABTwAAAcoAAAHLAAABzwAAAGEAAAHTAAAB0QAAAKMAAAHVAAAAggAAAdYAAAHaAAAB2QAAAdsAAAA4AAADAAAAALH//wGf//8ByP//AigkAAAAAAABAQAAAP///wAz//8AJv//AX7//wErKgABXf//ASgqAAA/KgABPf//AUUAAAFHAAAAHyoAABwqAAAeKgAALv//ADL//wA2//8ANf//AE+lAABLpQAAMf//ACilAABEpQAAL///AC3//wD3KQAAQaUAAP0pAAAr//8AKv//AOcpAABDpQAAKqUAALv//wAn//8Auf//ACX//wAVpQAAEqUAAiRMAAAAAAABIAAAAOD//wEBAAAA////AFQAAAF0AAABJgAAASUAAAFAAAABPwAAANr//wDb//8A4f//AMD//wDB//8BCAAAAML//wDH//8A0f//AMr//wD4//8Aqv//ALD//wAHAAAAjP//AcT//wCg//8B+f//AhpwAAEBAAAA////ASAAAADg//8BUAAAAQ8AAADx//8AAAAAATAAAADQ//8BAQAAAP///wAAAAAAwAsAAWAcAAAAAAAB0JcAAQgAAAD4//8CBYoAAAAAAAFA9P8Anuf/AMKJAADb5/8Akuf/AJPn/wCc5/8Anef/AKTn/wAAAAAAOIoAAASKAADmDgABAQAAAP///wAAAAAAxf//AUHi/wIdjwAACAAAAfj//wAAAAAAVgAAAar//wBKAAAAZAAAAIAAAABwAAAAfgAAAAkAAAG2//8B9///ANvj/wGc//8BkP//AYD//wGC//8CBawAAAAAAAEQAAAA8P//ARwAAAEBAAABo+L/AUHf/wG63/8A5P//AguxAAEBAAAA////ATAAAADQ//8AAAAAAQnW/wEa8f8BGdb/ANXV/wDY1f8B5NX/AQPW/wHh1f8B4tX/AcHV/wAAAAAAoOP/AAAAAAEBAAAA////Agy8AAAAAAABAQAAAP///wG8Wv8BoAMAAfx1/wHYWv8AMAAAAbFa/wG1Wv8Bv1r/Ae5a/wHWWv8B61r/AdD//wG9Wv8ByHX/AAAAAAAwaP8AYPz/AAAAAAEgAAAA4P//AAAAAAEoAAAA2P//AAAAAAFAAAAAwP//AAAAAAEgAAAA4P//AAAAAAEgAAAA4P//AAAAAAEiAAAA3v//MAwxDXgOfw+AEIERhhKJE4oTjhSPFZAWkxOUF5UYlhmXGpobnBmdHJ4dnx6mH6kfrh+xILIgtyG/IsUjyCPLI90k8iP2JfcmIC06Lj0vPjA/MUAxQzJEM0U0UDVRNlI3UzhUOVk6WztcPGE9Yz5lP2ZAaEFpQmpAa0NsRG9CcUVyRnVHfUiCSYdKiUuKTItMjE2STp1PnlBFV3sdfB19HX9YhlmIWolailqMW45cj1ysXa1erl6vXsJfzGDNYc5hz2LQY9Fk1WXWZtdn8GjxafJq82v0bPVt+W79Lf4t/y1QaVFpUmlTaVRpVWlWaVdpWGlZaVppW2lcaV1pXmlfaYIAgwCEAIUAhgCHAIgAiQDAdc92gImBioKLhYyGjXCdcZ12nneeeJ95n3qge6B8oX2hs6K6o7ujvKS+pcOizKTaptum5Wrqp+un7G7zovio+aj6qfup/KQmsCqxK7JOs4QIYrpju2S8Zb1mvm2/bsBvwXDCfsN/w33PjdCU0avSrNOt1LDVsday18TYxdnG2gcICQoLDAYGBgYGBgYGBgYNBgYOBgYGBgYGBgYPEBESBhMGBgYGBgYGBgYGFBUGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYWFwYGBhgGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBhkGBgYGGgYGBgYGBgYbBgYGBgYGBgYGBgYcBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBh0GBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBh4GBgYGBgYGBgYGBgYGBgYGBgYGBgYGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCsrKysrKysrAQBUVlZWVlZWVlYAAAAAAAAAAAAAAAAAAAAAAAAAGAAAACsrKysrKysHKytbVlZWVlZWVkpWVgUxUDFQMVAxUDFQMVAxUDFQJFB5MVAxUDE4UDFQMVAxUDFQMVAxUDFQTjECTg0NTgNOACRuAE4xJm5RTiRQTjkUgRsdHVMxUDFQDTFQMVAxUBtTJFAxAlx7XHtce1x7XHsUeVx7XHtcLStJA0gDeFx7FACWCgErKAYGACoGKiorB7u1Kx4AKwcrKysBKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysBKysrKysrKysrKysrKysrKysrKysrKysqKysrKysrKysrKysrK81GzSsAJSsHAQYBVVZWVlZWVVZWAiSBgYGBgRWBgYEAACsAstGy0bLRstEAAM3MAQDX19fX14OBgYGBgYGBgYGBrKysrKysrKysrBwAAAAAADFQMVAxUDFQMVAxAgAAMVAxUDFQMVAxUDFQMVAxUDFQTjFQMVBOMVAxUDFQMVAxUDFQMVAxAoemh6aHpoemh6aHpoemh6YqKysrKysrKysrKysrAAAAVFZWVlZWVlZWVlZWVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUVlZWVlZWVlZWVlZWDAAMKisrKysrKysrKysrKysHKgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACorKysrKysrKysrKysrKysrKysrKysrKysrK1ZWbIEVACsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwdsA0ErK1ZWVlZWVlZWVlZWVlZWLFYrKysrKysrKysrKysrKysrKysrKysBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxsAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJVZ6niYGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGASsrT1ZWLCt/VlY5KytVVlYrK09WViwrf1ZWgTd1W3tcKytPVlYCrAQAADkrK1VWVisrT1ZWLCsrVlYyE4FXAG+BfsnXfi2BgQ5+OX9vVwCBgX4VAH4DKysrKysrKysrKysrByskK5crKysrKysrKysqKysrKytWVlZWVoCBgYGBObsqKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwGBgYGBgYGBgYGBgYGBgYHJrKysrKysrKysrKysrKys0A0ATjECtMHB19ckUDFQMVAxUDFQMVAxUDFQMVAxUDFQMVAxUDFQMVAxUDFQ19dTwUfU19fXBSsrKysrKysrKysrKwcBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATjFQMVAxUDFQMVAxUDFQDQAAAAAAJFAxUDFQMVAxUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKysrKysrKysrK3lce1x7T3tce1x7XHtce1x7XHtce1x7XHtcLSsreRRce1wteSpcJ1x7XHtce6QACrRce1x7TwMqKysrKysrKysrKysrKysrKysrAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAqKysrKysrKysrKysrKysrKysrKysrKysrKysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKysrKysrKwcASFZWVlZWVlZWAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKysrKysrKysrKysrVVZWVlZWVlZWVlZWVg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCsrKysrKysrKysrBwBWVlZWVlZWVlZWVlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQrKysrKysrKysrKysrKysrBwAAAABWVlZWVlZWVlZWVlZWVlZWVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKysrKysrKysrK1ZWVlZWVlZWVlYOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKysrKysrKysrK1ZWVlZWVlZWVlYOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrKysrKysrKysrVVZWVlZWVlZWVlYOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYnUW93AAAAAAAAAAAAAHwAAH8AAAAAAAAAAIOOkpcAqgAAAAAAAAAAAAC0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMbJAAAA2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3gAAAADhAAAAAAAAAOQAAAAAAAAAAAAAAOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAZAAoNGRkZAA0AAAIACQ4AAAAJAA4AAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAEwAAAAATAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA8AAAAEDwAAAAAJEAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAARAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAABoaGgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABcAAAAAFwAAAAAJFAAAAAAAFAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAAAAAAAAAAAAAAVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUZMAABqTExMAGoAAAAAAGpqAAAAAGoAAGoAAAAAAAAAABkACgAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQARChkZGQMKBwABGwkLGAAACQYLAAALAAYZAAAAGRkZAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAATAAAAABMAAAAACQwAAAAAAAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADwAAAAQPAAAAAAkQAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAABEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAGhoaAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFwAAAAAXAAAAAAkUAAAAAAAUAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAABUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAaGgAaAAAAAAAbAAATAAAbGwAAAAAAAAAAAAAAAAAAAAgAAAACQAAAAoAAAANAAAACwAAAAwAAACFAAAAACAAAAEgAAACIAAAAyAAAAQgAAAFIAAABiAAAAggAAAJIAAACiAAACggAAApIAAAXyAAAAAwAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAEBAQEhMUFRYXGBkaGxwdHh8gECEQEBAiIyQlJicoEBApEBAQEBAQEBAQEBAqKxAQLBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEC0QLi8wMRAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAyEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAzEBA0NRA2NzgQEBAQEBA5EBA6EDs8PT4/QEFCQ0RFRhBHSEkQEBAQEBAQEBAQEBAQEBAQEBAQEBBKEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBLTBAQEE0QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQThAQEBAQEBAQEBAQEBAQEBAQEBAQT1AQEBAQEBAQURAQEBAQUlNUEBAQEBBVVhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7/////v7YAAAAAAAAAPwD/FwAAAAAA+P//AAABAAAAAAAAAAAAAADAv589AAAAgAIAAAD///8HAAAAAAAAAAAAAMD/AQAAAAAAAPgPIAAAwPvvPgAAAAAADgAAAAAAAAAAAAAAAAAA+P//////BwAAAAAAABT+If4ADAAAAAIAAAAAAAAQHiAAAAwAAEAGAAAAAAAAEIY5AgAAACMABgAAAAAAABC+IQAADAAA/AIAAAAAAACQHiBAAAwAAAAEAAAAAAAAAAEgAAAAAAAAEQAAAAAAAMDBPWAADAAAAAIAAAAAAACQQDAAAAwAAAADAAAAAAAAGB4gAAAMAAAAAAAAAAAAAAAABFwAAAAAAAAAAAAAAPIHgH8AAAAAAAAAAAAAAADyHwA/AAAAAAAAAAAAAwAAoAIAAAAAAAD+f9/g//7///8fQAAAAAAAAAAAAAAAAOD9ZgAAAMMBAB4AZCAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////AAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAcAAAADAAAAAwAAAAAAAAAsD9A/g8gAAAAAAB4AAAAAAAAAAAAAAAAAABgAAAAAAIAAAAAAAAAAAAAAAAAAIcBBA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAJAAAAAAAAQH/lH/ifAAAAAAAA/38AAAAAAAAAAA8AAAAAANAXBAAAAAD4DwADAAAAPDsAAAAAAABAowMAAAAAAADwzwAAAAAAAAAAAAAAAAAAAAAAAAD3//0hEAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////+wD4AAAAfAAAAAAAAN//AAAAAAAAAAAAAAAA/////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAwAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAA/////wAAAAAAPAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAID3PwAAAMAAAAAAAAAAAAAAAwBECAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAA//8DgAAAAADAPwAAgP8DAAAAAAAHAAAAAADIMwAAAAAgAAAAAAAAAAB+ZgAIEAAAAAAAEAAAAAAAAJ3BAgAAAAAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAwAcAAAAAAAAAAAAAAAAAAAAAbvAAAAAAAIcAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwP8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAP9/AAAAAAAAgAMAAAAAAHgmACAAAAAAAAAHAAAAgO8fAAAAAAAAAAgAAwAAAAAAwH8AHgAAAAAAAAAAAAAAgNNAAAAAAAAAAAAAAAAAAAAAAAAAAID4BwAAAwAAAAAAABgBAAAAwB8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1wAAEAAAAAAAAAAAAAA+IUNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8sAEAADAAAAAAAAAAAAAA+KcBAAAAAAAAAAAAAAAAKL8AAAAAAAAAAAAAAADgvA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgP8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwDAEAAAD+BwAAAAD4eYAAfg4AAAAAAPx/AwAAAAAAAAAAAAAAAAAAAAAAAH+/AAAAAAAAAAAAAPz///xtAAAAAAAAAAAAAAAAAAAAfrS/AAAAAAAAAAAAowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAP8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAA/j/5w8AAAA8AAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////f/j//////x8gABAAAPj+/wAAAAAAAAAAAAB////52wcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAA8AcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBASEBAQEBAQEBAQEBAQEBAQEBATEBQVFhAQEBcQEBgZGhscEREREREREREREREREREREREREREREREREREdEREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREeEBAQEB8QEBEREREREREREREREREREREREREREREREREREREREREREREREREREREREREgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEREQEBAhIhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECMRERERERERERERERERERERERERERERESQRESUQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESYnEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECgpKissLS4vEDAxEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAwAAAAAAAA/w8AAAAAgAAACAACDABgMEAQAAAELCQgDAAAAAEAAABQuAAAAAAAAADgAAAAAYAAAAAAAAAAAAAAABgAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////v/////////////DwD//////////////////////////////////z8AAAD/D/////////9//v///////////3/+////////////////4P///////v////////////9///////8H/////w8A//////9///////8A/////////////////////////////////////////////////////////////wAAAAAAAAAA//////////////////////8f////////fwAAAAAAAAAAAAAAAAAAAAAAAAD///8fAAAAAAAAAAAAAAAAAAAAAP//////////////////////////DwAAAAAAAAAAAAAAAAD/AwAA//////f/fw8AAAAAAAAAAAAAAAAAAAAAAAD+//////////////8BAAAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAA/////////////////////////////////////////wD///////////////////////////////////////8HAP///38AAAAAAAAHAPAA/////////////////////////////////////////////////////////////////w8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQP4HAAAAAAAAAAAAAAAABwD//////w//AQMAPwAAAAAAAAAAAAAAAAAAAAAAAAD/////AeC////////////f//8PAP//////hw8A//8R//////////9//f////////////////////////////+f/////////z8AeP///wAABAAAYAAQAAAAAAAAAAAAAPj/////////////AAAAAAAA//////////8/ECcAABjwBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/DwAAAOD///////////////97/P/////nx////+f///////8AAAAAAAAAAAAAAAAAAA8HBwA/AAAAAAAAAAAAAAAAAFN0MTJiYWRfYW55X2Nhc3QATlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTEyYmFkX2FueV9jYXN0RQAAAAAAAAAAAAAAAAAAMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6AAAAAAAAAAAAAAAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOwAAAAAAAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkAAAAAAAAAALw6xzhrCXk646UbPFyPwj0zM3M///8XQaeq0DioaoI6UwUjPKfGyz1RuH4/MzMfQf//xkI/nNE4pwGDOhHCIzyVssw9O99/P4XrH0Fm5sdC/995RGi00TjBEIM68dQjPC3KzD25/H8/8/0fQXD9x0LM/HlE/z0cRtK20ThDEoM61NYjPInMzD2s/38/y/8fQb7/x0Ku/3lEzD8cRr9Pw0cQt9E4ahKDOgTXIzzGzMw99/9/P/r/H0H5/8dC9/95RPo/HEb5T8NH9yN0SRa30ThuEoM6CdcjPMzMzD3//38///8fQf//x0L//3lE/z8cRv9Pw0f/I3RJf5YYSwAAAAAXt9E4bhKDOgrXIzzMzMw9//9/P///H0H//8dC//95RP8/HEb/T8NH/yN0SX+WGEsfvL5MJ2tuTvgCFVC3Q7pRpdRoU+eEEVUg5rVWqV9jWMkbDlq8orFbawteXSPHCl/reK1gJtdYYniGB2QWaKllG8JTZ1FZBGmlb6Vqj8tObDk/AW4Hj6FvyfJJcXxv/HKtxZ10GTdFdt+E9ncLE5p5zpdAe8K98HyZdpZ+//9/fycAAAAAAAAAAAAAAAAAAACdDI6SV+cYP8WPMXctIU8/2/l+arx0gz9RuB6F61G4P2ZmZmZmZu4/////////IkBR19r7VBUaP5LGaB1VTVA/N/jCZKpghD9FtvP91Hi5P9ejcD0K1+8/ZmZmZmbmI0D//////99YQJbryOyHMxo/PpP98zRgUD8N+PwwQniEPxE2PL1Slrk/lUOLbOf77z89CtejcP0jQMzMzMzM/FhA//////87j0BquuAEjTYaP4J0DCMYYlA/o5HPK556hD8LdsO2RZm5P45TdCSX/+8/ObTIdr7/I0BH4XoUrv9YQJmZmZmZP49A/////7+Hw0AZTxZU2jYaP2/xjXRIYlA/y22xkdp6hD8+yR02kZm5P447pYP1/+8/OEVHcvn/I0CHFtnO9/9YQChcj8L1P49AmZmZmfmHw0D/////92n4QF1ENQ/iNho/ukqBSU1iUD9pneGb4HqEP8ME2sKYmbk/9IWQ8/7/7z+4UzpY//8jQKfoSC7//1hA0CLb+f4/j0DC9Shc/4fDQDMzMzP/afhA/////36ELkFLwx7V4jYaPw46M8VNYlA/kgiANuF6hD+3CiCEmZm5P2UNKOX//+8/Xwg57///I0B3Sgfr//9YQBQdyeX/P49ALbKd7/+Hw0C4HoXr/2n4QGZmZuZ/hC5B////788SY0H8T+no4jYaP/3RkdFNYlA/fUb2ReF6hD8c2HOXmZm5PyPOUP3//+8/1oBS/v//I0ALIef9//9YQE7pYP3/P49A0ZFc/v+Hw0BFtvP9/2n4QNejcP1/hC5BZmZm/s8SY0H////9g9eXQaf34+riNho/yHrO0k1iUD97GYJH4XqEP9mfYpmZmbk/0Ee7////7z/iDNX///8jQBpQyv///1hAIeS8//8/j0CUDtb//4fDQDqSy///afhAyHa+/3+ELkE9Ctf/zxJjQczMzP+D15dB//+//2TNzUEFohbr4jYaP0Ml7tJNYlA/lK6pR+F6hD85GpSZmZm5P8gg+f///+8/fbT7////I0Ccofr///9YQANK+f//P49AQs77//+Hw0DSwfr//2n4QEdy+f9/hC5BbOf7/88SY0FH4fr/g9eXQZmZ+f9kzc1B///7H1+gAkIPsxvr4jYaP+lP8dJNYlA/46OtR+F6hD/cDJmZmZm5PxRQ/////+8/DJL/////I0CPdv////9YQDNU////P49AoJT///+Hw0DIef///2n4QDpY//9/hC5BJJf//88SY0HtfP//g9eXQShc//9kzc1BmZn/H1+gAkL/f//ndkg3QsM0HOviNho/+qDx0k1iUD84Ca5H4XqEP4aLmZmZmbk/aO7/////7z8B9f////8jQEHy/////1hA0e7///8/j0BD9f///4fDQJTy////afhAOe///3+ELkGD9f//zxJjQeTy//+D15dBne///2TNzUHC9f8fX6ACQjPz/+d2SDdC/+//oZQabUK7QRzr4jYaPxWp8dJNYlA/WhOuR+F6hD8xmJmZmZm5Pz3+/////+8/5v7/////I0Cg/v////9YQEj+////P49A7f7///+Hw0Co/v///2n4QFL+//9/hC5B8/7//88SY0Gw/v//g9eXQVz+//9kzc1B+f7/H1+gAkK4/v/ndkg3Qmb+/6GUGm1C//4/5ZwwokIHQxzr4jYaP+Sp8dJNYlA/XhSuR+F6hD91mZmZmZm5P9L//////+8/4///////I0Dc//////9YQNT/////P49A5P////+Hw0Dd/////2n4QNX///9/hC5B5f///88SY0He////g9eXQdb///9kzc1B5f//H1+gAkLf///ndkg3Qtf//6GUGm1C5v8/5ZwwokLf/48exLzWQihDHOviNho/+anx0k1iUD93FK5H4XqEP5WZmZmZmbk/+///////7z/9//////8jQPz//////1hA+/////8/j0D9/////4fDQPz/////afhA+////3+ELkH9////zxJjQfz///+D15dB+////2TNzUH9//8fX6ACQvz//+d2SDdC+///oZQabUL9/z/lnDCiQvz/jx7EvNZC+/8zJvVrDEMAAAAAAAAAACxDHOviNho/+6nx0k1iUD96FK5H4XqEP5mZmZmZmbk/////////7z////////8jQP///////1hA//////8/j0D//////4fDQP//////afhA/////3+ELkH/////zxJjQf////+D15dB/////2TNzUH///8fX6ACQv///+d2SDdC////oZQabUL//z/lnDCiQv//jx7EvNZC//8zJvVrDEP/f+A3ecNBQ/+f2IVXNHZD/8dOZ23Bq0P/PJFg5FjhQz+MtXgdrxVET+/i1uQaS0SR1U0Gz/CARPZK4ccCLbVEtJ3ZeUN46kSQAigsKosgRTQDMrf0rVRFAYT+5HHZiUWBEh8v5yfARSHX5vrgMfRF6YygOVk+KUYksAiI741fRhZuBbW1uJNGnMlGIuOmyEYDfNjqm9D+RoJNx3JhQjNH4iB5z/kSaEcbaVdDuBeeR7GhFirTztJHHUqc9IeCB0ikXMPxKWM9SOYZGjf6XXJIYKDgxHj1pkh4yBj21rLcSEt9z1nG7xFJnlxD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AGcAAABrAAAAbQAAAHEAAAB/AAAAgwAAAIkAAACLAAAAlQAAAJcAAACdAAAAowAAAKcAAACtAAAAswAAALUAAAC/AAAAwQAAAMUAAADHAAAA0wAAAAEAAAALAAAADQAAABEAAAATAAAAFwAAAB0AAAAfAAAAJQAAACkAAAArAAAALwAAADUAAAA7AAAAPQAAAEMAAABHAAAASQAAAE8AAABTAAAAWQAAAGEAAABlAAAAZwAAAGsAAABtAAAAcQAAAHkAAAB/AAAAgwAAAIkAAACLAAAAjwAAAJUAAACXAAAAnQAAAKMAAACnAAAAqQAAAK0AAACzAAAAtQAAALsAAAC/AAAAwQAAAMUAAADHAAAA0QAAAE5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQBOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQBOU3QzX18yMTliYXNpY19vc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUATlN0M19fMjE5YmFzaWNfaXN0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAE5TdDNfXzIxNGJhc2ljX2lmc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxNGJhc2ljX29mc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX2ZpbGVidWZJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAsAAAAEoAAAAEAQAAAQAAAAIAAAAEAAAAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAE5TdDNfXzI4aW9zX2Jhc2VFAE5TdDNfXzI4aW9zX2Jhc2U3ZmFpbHVyZUUATlN0M19fMjE5X19pb3N0cmVhbV9jYXRlZ29yeUUATlN0M19fMjEwX19zdGRpbmJ1ZkljRUUATlN0M19fMjExX19zdGRvdXRidWZJY0VFAE5TdDNfXzIxMF9fc3RkaW5idWZJd0VFAE5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRQAwMTIzNDU2Nzg5YWJjZGVmQUJDREVGeFgrLXBQaUluTgAlSTolTTolUyAlcCVIOiVNAAAAAAAAAAAAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAlAAAAWQAAAC0AAAAlAAAAbQAAAC0AAAAlAAAAZAAAACUAAABJAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAIAAAACUAAABwAAAAAAAAACUAAABIAAAAOgAAACUAAABNAAAAAAAAAAAAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAQABAAAAAAgAAAABAAAAEAAAAAIAAAAEAAAAIAAAAD8AAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgAAYAAAAOAAAAAAAQAAAAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAgAABQAAAAUAAAAFAAAABQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMCAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAACoBAAAqAQAAKgEAACoBAAAqAQAAKgEAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAMgEAADIBAAAyAQAAMgEAADIBAAAyAQAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAACCAAAAggAAAIIAAACCAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAHIAAAB1AAAAZQAAAAAAAABmAAAAYQAAAGwAAABzAAAAZQAAAAAAAAAlAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAAAAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAAAAAAAAlAAAAYQAAACAAAAAlAAAAYgAAACAAAAAlAAAAZAAAACAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACAAAAAlAAAAWQAAAAAAAAAlAAAASQAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACAAAAAlAAAAcAAAAAAAAAAoAAAAKQAAAAAAAABOU3QzX18yNmxvY2FsZTVmYWNldEUATlN0M19fMjVjdHlwZUl3RUUATlN0M19fMjEwY3R5cGVfYmFzZUUATlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVFAE5TdDNfXzIxMmNvZGVjdnRfYmFzZUUATlN0M19fMjdjb2RlY3Z0SURzYzExX19tYnN0YXRlX3RFRQBOU3QzX18yN2NvZGVjdnRJRHNEdTExX19tYnN0YXRlX3RFRQBOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVFAE5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVFAE5TdDNfXzIxNl9fbmFycm93X3RvX3V0ZjhJTG0xNkVFRQBOU3QzX18yMTZfX25hcnJvd190b191dGY4SUxtMzJFRUUATlN0M19fMjE3X193aWRlbl9mcm9tX3V0ZjhJTG0xNkVFRQBOU3QzX18yMTdfX3dpZGVuX2Zyb21fdXRmOElMbTMyRUVFAE5TdDNfXzIxNF9fY29kZWN2dF91dGY4SXdFRQBOU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjE0X19jb2RlY3Z0X3V0ZjhJRHNFRQBOU3QzX18yMTRfX2NvZGVjdnRfdXRmOElEaUVFAE5TdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIwRUVFAE5TdDNfXzIxNV9fY29kZWN2dF91dGYxNkl3TGIxRUVFAE5TdDNfXzIxNV9fY29kZWN2dF91dGYxNklEc0xiMEVFRQBOU3QzX18yMTVfX2NvZGVjdnRfdXRmMTZJRHNMYjFFRUUATlN0M19fMjE1X19jb2RlY3Z0X3V0ZjE2SURpTGIwRUVFAE5TdDNfXzIxNV9fY29kZWN2dF91dGYxNklEaUxiMUVFRQBOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNkl3RUUATlN0M19fMjIwX19jb2RlY3Z0X3V0ZjhfdXRmMTZJRGlFRQBOU3QzX18yMjBfX2NvZGVjdnRfdXRmOF91dGYxNklEc0VFAE5TdDNfXzI2bG9jYWxlNV9faW1wRQBOU3QzX18yMTRjb2xsYXRlX2J5bmFtZUljRUUATlN0M19fMjdjb2xsYXRlSWNFRQBOU3QzX18yMTRjb2xsYXRlX2J5bmFtZUl3RUUATlN0M19fMjdjb2xsYXRlSXdFRQBOU3QzX18yNWN0eXBlSWNFRQBOU3QzX18yMTJjdHlwZV9ieW5hbWVJY0VFAE5TdDNfXzIxMmN0eXBlX2J5bmFtZUl3RUUATlN0M19fMjhudW1wdW5jdEljRUUATlN0M19fMjhudW1wdW5jdEl3RUUATlN0M19fMjE1bnVtcHVuY3RfYnluYW1lSWNFRQBOU3QzX18yMTVudW1wdW5jdF9ieW5hbWVJd0VFAE5TdDNfXzI3bnVtX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjlfX251bV9nZXRJY0VFAE5TdDNfXzIxNF9fbnVtX2dldF9iYXNlRQBOU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzI5X19udW1fZ2V0SXdFRQBOU3QzX18yN251bV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5X19udW1fcHV0SWNFRQBOU3QzX18yMTRfX251bV9wdXRfYmFzZUUATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEl3RUUATlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjl0aW1lX2Jhc2VFAE5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFRQBOU3QzX18yOHRpbWVfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMjBfX3RpbWVfZ2V0X2Nfc3RvcmFnZUl3RUUATlN0M19fMjE1dGltZV9nZXRfYnluYW1lSWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMThfX3RpbWVfZ2V0X3N0b3JhZ2VJY0VFAE5TdDNfXzIxMF9fdGltZV9nZXRFAE5TdDNfXzIxNXRpbWVfZ2V0X2J5bmFtZUl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjE4X190aW1lX2dldF9zdG9yYWdlSXdFRQBOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTBfX3RpbWVfcHV0RQBOU3QzX18yOHRpbWVfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTV0aW1lX3B1dF9ieW5hbWVJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxNXRpbWVfcHV0X2J5bmFtZUl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjEwbW9uZXlwdW5jdEljTGIwRUVFAE5TdDNfXzIxMG1vbmV5X2Jhc2VFAE5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFRQBOU3QzX18yMTBtb25leXB1bmN0SXdMYjBFRUUATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUVFAE5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSWNMYjBFRUUATlN0M19fMjE3bW9uZXlwdW5jdF9ieW5hbWVJY0xiMUVFRQBOU3QzX18yMTdtb25leXB1bmN0X2J5bmFtZUl3TGIwRUVFAE5TdDNfXzIxN21vbmV5cHVuY3RfYnluYW1lSXdMYjFFRUUATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQBOU3QzX18yOW1vbmV5X2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9nZXRJd0VFAE5TdDNfXzI5bW9uZXlfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X3B1dEljRUUATlN0M19fMjltb25leV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SXdFRQBOU3QzX18yOG1lc3NhZ2VzSWNFRQBOU3QzX18yMTNtZXNzYWdlc19iYXNlRQBOU3QzX18yOG1lc3NhZ2VzSXdFRQBOU3QzX18yMTVtZXNzYWdlc19ieW5hbWVJY0VFAE5TdDNfXzIxNW1lc3NhZ2VzX2J5bmFtZUl3RUUATlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJY2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJd2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjE0Y29kZWN2dF9ieW5hbWVJRHNjMTFfX21ic3RhdGVfdEVFAE5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURpYzExX19tYnN0YXRlX3RFRQBOU3QzX18yMTRjb2RlY3Z0X2J5bmFtZUlEc0R1MTFfX21ic3RhdGVfdEVFAE5TdDNfXzIxNGNvZGVjdnRfYnluYW1lSURpRHUxMV9fbWJzdGF0ZV90RUUAAABTAAAAdQAAAG4AAABkAAAAYQAAAHkAAAAAAAAATQAAAG8AAABuAAAAZAAAAGEAAAB5AAAAAAAAAFQAAAB1AAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVwAAAGUAAABkAAAAbgAAAGUAAABzAAAAZAAAAGEAAAB5AAAAAAAAAFQAAABoAAAAdQAAAHIAAABzAAAAZAAAAGEAAAB5AAAAAAAAAEYAAAByAAAAaQAAAGQAAABhAAAAeQAAAAAAAABTAAAAYQAAAHQAAAB1AAAAcgAAAGQAAABhAAAAeQAAAAAAAABTAAAAdQAAAG4AAAAAAAAATQAAAG8AAABuAAAAAAAAAFQAAAB1AAAAZQAAAAAAAABXAAAAZQAAAGQAAAAAAAAAVAAAAGgAAAB1AAAAAAAAAEYAAAByAAAAaQAAAAAAAABTAAAAYQAAAHQAAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAEEAAABNAAAAAAAAAFAAAABNAAAAAAAAAE5TdDNfXzIxNV9fdGltZV9nZXRfdGVtcEljRUUATlN0M19fMjE1X190aW1lX2dldF90ZW1wSXdFRQAATlN0M19fMjEyYmFkX3dlYWtfcHRyRQBOU3QzX18yMTRfX3NoYXJlZF9jb3VudEUATlN0M19fMjE5X19zaGFyZWRfd2Vha19jb3VudEUATlN0MTJleHBlcmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIzMl9fbmV3X2RlbGV0ZV9tZW1vcnlfcmVzb3VyY2VfaW1wRQBOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjE1bWVtb3J5X3Jlc291cmNlRQBOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjI2X19udWxsX21lbW9yeV9yZXNvdXJjZV9pbXBFAAAAAAAAL05TdDNfXzI0X19mczEwZmlsZXN5c3RlbTE2ZmlsZXN5c3RlbV9lcnJvckUABgUIAggECAEIAwgHBgUAAgAEAAEAAwAHU3QxOWJhZF9vcHRpb25hbF9hY2Nlc3MATlN0MTJleHBlcmltZW50YWwxOWJhZF9vcHRpb25hbF9hY2Nlc3NFAE5TdDNfXzIxMXJlZ2V4X2Vycm9yRQD//////////yUAAABmAAAAAAAAACUAAABMAAAAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAZAAAAAAAAADoAwAAAAAAABAnAAAAAAAAoIYBAAAAAABAQg8AAAAAAICWmAAAAAAAAOH1BQAAAAAAypo7AAAAAADkC1QCAAAAAOh2SBcAAAAAEKXU6AAAAACgck4YCQAAAEB6EPNaAAAAgMakfo0DAAAAwW/yhiMAAACKXXhFYwEAAGSns7bgDQAA6IkEI8eKTlN0M19fMjEyc3Ryc3RyZWFtYnVmRQBOU3QzX18yMTBpc3Ryc3RyZWFtRQBOU3QzX18yMTBvc3Ryc3RyZWFtRQBOU3QzX18yOXN0cnN0cmVhbUUATlN0M19fMjEyc3lzdGVtX2Vycm9yRQBOU3QzX18yMTRlcnJvcl9jYXRlZ29yeUUATlN0M19fMjEyX19kb19tZXNzYWdlRQBOU3QzX18yMjRfX2dlbmVyaWNfZXJyb3JfY2F0ZWdvcnlFAE5TdDNfXzIyM19fc3lzdGVtX2Vycm9yX2NhdGVnb3J5RQAAU3QxOGJhZF92YXJpYW50X2FjY2VzcwBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMVNwZWNpYWxOYW1lRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGU0Tm9kZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjFDdG9yVnRhYmxlU3BlY2lhbE5hbWVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZThOYW1lVHlwZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBNb2R1bGVOYW1lRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyNEZvcndhcmRUZW1wbGF0ZVJlZmVyZW5jZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBCaW5hcnlFeHByRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMFByZWZpeEV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTExUG9zdGZpeEV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTE4QXJyYXlTdWJzY3JpcHRFeHByRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxME1lbWJlckV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTdOZXdFeHByRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMERlbGV0ZUV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZThDYWxsRXhwckUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTRDb252ZXJzaW9uRXhwckUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTVDb25kaXRpb25hbEV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZThDYXN0RXhwckUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTNFbmNsb3NpbmdFeHByRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxNEludGVnZXJMaXRlcmFsRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGU4Qm9vbEV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTE2RmxvYXRMaXRlcmFsSW1wbElmRUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTZGbG9hdExpdGVyYWxJbXBsSWRFRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxNkZsb2F0TGl0ZXJhbEltcGxJZUVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEzU3RyaW5nTGl0ZXJhbEUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTVVbm5hbWVkVHlwZU5hbWVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTI2U3ludGhldGljVGVtcGxhdGVQYXJhbU5hbWVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTIxVHlwZVRlbXBsYXRlUGFyYW1EZWNsRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyNE5vblR5cGVUZW1wbGF0ZVBhcmFtRGVjbEUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjVUZW1wbGF0ZVRlbXBsYXRlUGFyYW1EZWNsRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyMVRlbXBsYXRlUGFyYW1QYWNrRGVjbEUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTVDbG9zdXJlVHlwZU5hbWVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEwTGFtYmRhRXhwckUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTFFbnVtTGl0ZXJhbEUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTNGdW5jdGlvblBhcmFtRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGU4Rm9sZEV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTIyUGFyYW1ldGVyUGFja0V4cGFuc2lvbkUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBCcmFjZWRFeHByRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxNUJyYWNlZFJhbmdlRXhwckUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTJJbml0TGlzdEV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTI5UG9pbnRlclRvTWVtYmVyQ29udmVyc2lvbkV4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEzU3Vib2JqZWN0RXhwckUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTlTaXplb2ZQYXJhbVBhY2tFeHByRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxM05vZGVBcnJheU5vZGVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTlUaHJvd0V4cHJFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEzUXVhbGlmaWVkTmFtZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlOER0b3JOYW1lRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyMkNvbnZlcnNpb25PcGVyYXRvclR5cGVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTE1TGl0ZXJhbE9wZXJhdG9yRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxOUdsb2JhbFF1YWxpZmllZE5hbWVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTE5U3BlY2lhbFN1YnN0aXR1dGlvbkUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjdFeHBhbmRlZFNwZWNpYWxTdWJzdGl0dXRpb25FAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEwQWJpVGFnQXR0ckUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjFTdHJ1Y3R1cmVkQmluZGluZ05hbWVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEyQ3RvckR0b3JOYW1lRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMk1vZHVsZUVudGl0eUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBOZXN0ZWROYW1lRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGU5TG9jYWxOYW1lRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxM1BhcmFtZXRlclBhY2tFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEyVGVtcGxhdGVBcmdzRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyME5hbWVXaXRoVGVtcGxhdGVBcmdzRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyMFRlbXBsYXRlQXJndW1lbnRQYWNrRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMkVuYWJsZUlmQXR0ckUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTZGdW5jdGlvbkVuY29kaW5nRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGU5RG90U3VmZml4RQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMk5vZXhjZXB0U3BlY0UATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjBEeW5hbWljRXhjZXB0aW9uU3BlY0UATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTJGdW5jdGlvblR5cGVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEzT2JqQ1Byb3RvTmFtZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTdWZW5kb3JFeHRRdWFsVHlwZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlOFF1YWxUeXBlRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMkJpbmFyeUZQVHlwZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBCaXRJbnRUeXBlRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxNVBpeGVsVmVjdG9yVHlwZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBWZWN0b3JUeXBlRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGU5QXJyYXlUeXBlRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxOVBvaW50ZXJUb01lbWJlclR5cGVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTIyRWxhYm9yYXRlZFR5cGVTcGVmVHlwZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTFQb2ludGVyVHlwZUUATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTNSZWZlcmVuY2VUeXBlRQBOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyMFBvc3RmaXhRdWFsaWZpZWRUeXBlRQBOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjEyMF9fZnVuY3Rpb25fdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMjlfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mb0UAAAAAAAAAAAD/////TjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAHYAUHYAUEt2AERuAFBEbgBQS0RuAGIAUGIAUEtiAHcAUHcA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AAAAAAAAAAAAPAMqAAC2AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAOJwEAJAAAAAAAAAC9AQAAAAAAAAAAAAAAAAAAAAAAAMABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEBAACOAAAALgEAAAAAAAAARABAlIIAAMIBAADDAQAAAAAAAAAAAAAAAAAAAAAAACA7KgBwOyoAoDsqAAAAAAAAAAAAAAAAAAAAAAAIAAAAuwEAAAAAAAC8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAyoAAQAAAAAAAAAAAAAAEicBACQAAAAAAAAAvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAPvuAgDCAQAAwwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAyoAAAAAAAAAAAAAAAAACAAAALsBAAAAAAAAvAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAQqAAEAAAAAAAAAAAAAAIbkAAAkAAAAAAAAAL0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAADGEAMAwgEAAMMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAQqAAAAAAAAAAAAAAAAAAgAAAC7AQAAAAAAALwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwFKgABAAAAAAAAAAAAAABSPwEAJAAAAAAAAAC9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAzysDAMIBAADDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwEKgAAAAAAAAAAAAAAAAAIAAAAuwEAAAAAAAC8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcBSoAAQAAAAAAAAAAAAAALT8BACgAAAAAAAAAxAEA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AABEAAA9IQMAwgEAAMMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzCgqAAAAAAAAAAAAAAAAAAgAAAC7AQAAAAAAALwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwpKgABAAAAAAAAAAAAAAAa4gAAJAAAAAAAAAC9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAUh4DAMIBAADDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwoKgAAAAAAAAAAAAAAAAAIAAAAuwEAAAAAAAC8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsKioAAQAAAAAAAAAAAAAAi+MAACQAAAAAAAAAvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAMv5AgDCAQAAwwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMKCoAAAAAAAAAAAAAAAAACAAAALsBAAAAAAAAvAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPCsqAAEAAAAAAAAAAAAAAJ3jAAAkAAAAAAAAAL0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAABh/QIAwgEAAMMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAQqAAAAAAAAAAAAAAAAAAgAAAC7AQAAAAAAALwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwsKgABAAAAAAAAAAAAAAAS5QAAJAAAAAAAAAC9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAsOgCAMIBAADDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwEKgAAAAAAAAAAAAAAAAAIAAAAuwEAAAAAAAC8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcLCoAAQAAAAAAAAAAAAAA7uEAACQAAAAAAAAA8gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAC/oAgDCAQAAwwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8BCoAAAAAAAAAAAAAAAAACAAAALsBAAAAAAAA8wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArC0qAAEAAAAAAAAAAAAAAA3jAAAkAAAAAAAAAL0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAz9gIAwgEAAMMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAQqAAAAAAAAAAAAAAAAAAgAAAC7AQAAAAAAALwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwuKgABAAAAAAAAAAAAAAA1igEAJAAAAAAAAAC9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAv/MCAMIBAADDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwEKgAAAAAAAAAAAAAAAAAIAAAAuwEAAAAAAAC8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMLyoAAQAAAAAAAAAAAAAAy4kBACQAAAAAAAAAvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAMcZAwDCAQAAwwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMLyoAAAAAAAAAAAAAAAAACAAAALsBAAAAAAAAvAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHDAqAAEAAAAAAAAAAAAAAN6JAQAkAAAAAAAAAL0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAI8wIAwgEAAMMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATC8qAAAAAAAAAAAAAAAAAAgAAAC7AQAAAAAAALwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwwKgABAAAAAAAAAAAAAADXiQEAJAAAAAAAAAC9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAOA8DAMIBAADDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwvKgAAAAAAAAAAAAAAAAAIAAAAuwEAAAAAAAC8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8MSoAAQAAAAAAAAAAAAAAookBACQAAAAAAAAAvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAFTpAgDCAQAAwwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMLyoAAAAAAAAAAAAAAAAACAAAALsBAAAAAAAAvAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjDIqAAEAAAAAAAAAAAAAAA+KAQAkAAAAAAAAAL0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAADR9gIAwgEAAMMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATC8qAAAAAAAAAAAAAAAAAAgAAAC7AQAAAAAAALwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwzKgABAAAAAAAAAAAAAAABigEAJAAAAAAAAAC9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAA4g4DAMIBAADDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwvKgAAAAAAAAAAAAAAAAAIAAAAuwEAAAAAAAC8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsNCoAAQAAAAAAAAAAAAAAsIkBACQAAAAAAAAAvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAADRkAADCAQAAwwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMLyoAAAAAAAAAAAAAAAAACAAAALsBAAAAAAAAvAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/DQqAAEAAAAAAAAAAAAAAB6KAQAkAAAAAAAAAL0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAADe7wIAwgEAAMMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATC8qAAAAAAAAAAAAAAAAAAgAAAC7AQAAAAAAALwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMw1KgABAAAAAAAAAAAAAAC+iQEAJAAAAAAAAAC9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAQ/UCAMIBAADDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwvKgAAAAAAAAAAAAAAAAAIAAAAuwEAAAAAAAC8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcNioAAQAAAAAAAAAAAAAA8YkBACQAAAAAAAAAvQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAN7xAgDCAQAAwwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMLyoAAAAAAAAAAAAAAAAACAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEAAAAAAAABAAwAAAAAAAAAAAAAAAAAACwAAAEEDAADgaCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAAwdkAABwAAAAAAAAAPwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEAAAAAAAABAAwAAAAAAAAAAAAAAAAAACwAAAEIDAADgaCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAAldkAABwAAAAAAAAAPwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEAAAAAAAABAAwAAAAAAAAAAAAAAAAAACwAAAEMDAADgaCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAALdkAABwAAAAAAAAAPwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAwAAAAAAAAAAAAAAAAAACwAAAEQDAADgaCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAAfNkAABwAAAAAAAAAPwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAwAAAAAAAAAAAAAAAAAACwAAAEQDAADgaCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAAp9kAABwAAAAAAAAAPwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAwAAAAAAAAAAAAAAAAAACwAAAEQDAADgaCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAA/18AAAwAAAAAAAAARQMAAAAAAAAAAAAAAAAAAAAAAABGAwAAcG8qAABwKgAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEAAAAAAAABHAwAAAAAAAEgDAAAAAAAASQMAAAAAAAAwcCoAAAAAAGBwKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAAl4UAAAwAAAAAAAAARQMAAAAAAAAAAAAAAAAAAAAAAABGAwAAcG8qAIhwKgAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEAAAAAAAABHAwAAAAAAAEgDAAAAAAAASgMAAAAAAACwcCoAAAAAAGBwKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwDAABNAwAATgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8DAAAAAAAAAAAAAAAAAAAAAAAAOi4AAFADAAAIAAAAcD0E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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAEtgAABUAAAAAAAAADgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8NEqAAAAAAAAAAAAAAAAAI4AAAAAAAAAAAAAAABAAAAAAAAAOQYAADoGAAAAAAAAAAAAAAsAAAA7BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAICPAABUAAAAAAAAADgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8NEqAAAAAAAAAAAAAAAAAI4AAAAAAAAAAAAAAABAAAAAAAAAOQYAADoGAAAAAAAAAAAAAAsAAAA7BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8BgAAAAAAAAAAAAA9BgAAPgYAAAAAAAAAAAAAAAAAAAAAAACYRgAAPwYAAAEAAAAAAAAAdEcAAEAGAAABAAAAAAAAAFqzAQBBBgAACAAAAAAAAADZhQAAQgYAAAQAAAAAAAAAS2AAAEMGAAAEAAAAAAAAAICPAABEBgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAAcj0AABQAAAAAAAAARQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDUKgCI1CoA0AIAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEAAAAAAAABGBgAARwYAAEgGAAAMAAAASQYAAAAAAACg1CoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAAcPYBAIwAAAAAAAAANAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AIAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEAA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AP/Jmjsk4ykAAQAAAP/////0AAAAAAAAAP/Jmjsk4ykAAQAAAP/////1AAAAAAAAAP/Jmjsk4ykAAQAAAP/////2AAAAAAAAAP/Jmjsk4ykAAQAAAP/////3AAAAAAAAAP/Jmjsk4ykAAQAAAP/////4AAAAAAAAAP/Jmjsk4ykAAQAAAP/////5AAAAAAAAAP/Jmjsk4ykAAQAAAP/////6AAAAAAAAAP/Jmjsk4ykAAQAAAP/////7AAAAAAAAAP/Jmjsk4ykAAQAAAP/////8AAAAAAAAAP/Jmjsk4ykAAQAAAP/////9AAAAAAAAAP/Jmjsk4ykAAQAAAP/////+AAAAAAAAAP/Jmjsk4ykAAQAAAP//////AAAAAAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAADxkaWN0Y29tcD4AAP/JmjuorCoACQAAAP/////kAAAAAAAAADxnZW5leHByPgAAAP/JmjuorCoACAAAAP/////kAAAAAAAAADxsYW1iZGE+AAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAADxsaXN0Y29tcD4AAP/JmjuorCoACAAAAP/////kAAAAAAAAADxtb2R1bGU+AAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAADxzZXRjb21wPgAAAP/JmjuorCoACAAAAP/////kAAAAAAAAADxzdHJpbmc+AAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAADx1bmtub3duPgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAH0AAAD/yZo7qKwqAAIAAAD/////5AAAAAAAAAAsIAAA/8maO6isKgACAAAA/////+QAAAAAAAAAfX0AAP/JmjuorCoAAgAAAP/////kAAAAAAAAAHt7AAD/yZo7qKwqAAIAAAD/////5AAAAAAAAAAlJQAA/8maO6isKgABAAAA/////+QAAAAAAAAALgAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAC48bG9jYWxzPgAAAP/JmjuorCoAAAAAAP/////kAAAAAAAAAAAAAAD/yZo7qKwqABcAAAD/////5AAAAAAAAABsaXN0IGluZGV4IG91dCBvZiByYW5nZQD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAKAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAewAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACUAAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAAB1dGYtOAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAEZhbHNlAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAUHlfUmVwcgD/yZo7qKwqAA0AAAD/////5AAAAAAAAABUZXh0SU9XcmFwcGVyAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAVHJ1ZQAAAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABXYXJuaW5nTWVzc2FnZQAA/8maO6isKgABAAAA/////+QAAAAAAAAAXwAAAP/JmjuorCoADwAAAP/////kAAAAAAAAAF9fSU9CYXNlX2Nsb3NlZAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABfX2FiY190cGZsYWdzX18A/8maO6isKgAHAAAA/////+QAAAAAAAAAX19hYnNfXwD/yZo7qKwqABMAAAD/////5AAAAAAAAABfX2Fic3RyYWN0bWV0aG9kc19fAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fYWRkX18A/8maO6isKgAKAAAA/////+QAAAAAAAAAX19hZW50ZXJfXwAA/8maO6isKgAJAAAA/////+QAAAAAAAAAX19hZXhpdF9fAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAX19haXRlcl9fAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19hbGxfXwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX2FuZF9fAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fYW5leHRfXwAAAP/JmjuorCoADwAAAP/////kAAAAAAAAAF9fYW5ub3RhdGlvbnNfXwD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2FyZ3NfXwAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX2F3YWl0X18AAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX2Jhc2VzX18AAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2Jvb2xfXwAAAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABfX2J1aWxkX2NsYXNzX18A/8maO6isKgAMAAAA/////+QAAAAAAAAAX19idWlsdGluc19fAAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fYnl0ZXNfXwAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fY2FsbF9fAAAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fY2FudHJhY2VfXwAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX2NsYXNzX18AAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABfX2NsYXNzX2dldGl0ZW1fXwAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9fY2xhc3NjZWxsX18AAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX2NvbXBsZXhfXwD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfX2NvbnRhaW5zX18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19jb3B5X18AAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19kZWxfXwD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX2RlbGF0dHJfXwD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX2RlbGV0ZV9fAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX2RlbGl0ZW1fXwD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2RpY3RfXwAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX2Rpcl9fAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fZGl2bW9kX18AAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fZG9jX18A/8maO6isKgAJAAAA/////+QAAAAAAAAAX19lbnRlcl9fAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAX19lcV9fAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2V4aXRfXwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2ZpbGVfXwAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX2Zsb2F0X18AAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfX2Zsb29yZGl2X18AAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAX19mb3JtYXRfXwAA/8maO6isKgAKAAAA/////+QAAAAAAAAAX19mc3BhdGhfXwAA/8maO6isKgAGAAAA/////+QAAAAAAAAAX19nZV9fAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX2dldF9fAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fZ2V0YXR0cl9fAP/JmjuorCoAEAAAAP/////kAAAAAAAAAF9fZ2V0YXR0cmlidXRlX18AAAAA/8maO6isKgAPAAAA/////+QAAAAAAAAAX19nZXRpbml0YXJnc19fAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fZ2V0aXRlbV9fAP/JmjuorCoADgAAAP/////kAAAAAAAAAF9fZ2V0bmV3YXJnc19fAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABfX2dldG5ld2FyZ3NfZXhfXwAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fZ2V0c3RhdGVfXwAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABfX2d0X18AAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faGFzaF9fAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faWFkZF9fAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faWFuZF9fAAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9faWZsb29yZGl2X18AAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX2lsc2hpZnRfXwD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX2ltYXRtdWxfXwD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2ltb2RfXwAAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX2ltcG9ydF9fAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2ltdWxfXwAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX2luZGV4X18AAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2luaXRfXwAAAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABfX2luaXRfc3ViY2xhc3NfXwAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAF9faW5zdGFuY2VjaGVja19fAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19pbnRfXwD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX2ludmVydF9fAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX2lvcl9fAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faXBvd19fAAAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9faXJzaGlmdF9fAP/JmjuorCoAFAAAAP/////kAAAAAAAAAF9faXNhYnN0cmFjdG1ldGhvZF9fAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faXN1Yl9fAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faXRlcl9fAAAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9faXRydWVkaXZfXwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2l4b3JfXwAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABfX2xlX18AAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fbGVuX18A/8maO6isKgAPAAAA/////+QAAAAAAAAAX19sZW5ndGhfaGludF9fAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fbGx0cmFjZV9fAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fbG9hZGVyX18AAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fbHNoaWZ0X18AAP/JmjuorCoABgAAAP/////kAAAAAAAAAF9fbHRfXwAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19tYWluX18AAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAX19tYXRtdWxfXwAA/8maO6isKgALAAAA/////+QAAAAAAAAAX19taXNzaW5nX18A/8maO6isKgAHAAAA/////+QAAAAAAAAAX19tb2RfXwD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX21vZHVsZV9fAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABfX21yb19lbnRyaWVzX18A/8maO6isKgAHAAAA/////+QAAAAAAAAAX19tdWxfXwD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX25hbWVfXwAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABfX25lX18AAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fbmVnX18A/8maO6isKgAHAAAA/////+QAAAAAAAAAX19uZXdfXwD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX25ld29ial9fAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABfX25ld29ial9leF9fAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19uZXh0X18AAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAX19ub3Rlc19fAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAX19vcl9fAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABfX29yaWdfY2xhc3NfXwAA/8maO6isKgAKAAAA/////+QAAAAAAAAAX19vcmlnaW5fXwAA/8maO6isKgALAAAA/////+QAAAAAAAAAX19wYWNrYWdlX18A/8maO6isKgAOAAAA/////+QAAAAAAAAAX19wYXJhbWV0ZXJzX18AAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fcGF0aF9fAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fcG9zX18A/8maO6isKgAHAAAA/////+QAAAAAAAAAX19wb3dfXwD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3ByZXBhcmVfXwD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfX3F1YWxuYW1lX18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19yYWRkX18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19yYW5kX18AAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAX19yZGl2bW9kX18A/8maO6isKgAKAAAA/////+QAAAAAAAAAX19yZWR1Y2VfXwAA/8maO6isKgANAAAA/////+QAAAAAAAAAX19yZWR1Y2VfZXhfXwAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fcmVwcl9fAAAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fcmV2ZXJzZWRfXwAAAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABfX3JmbG9vcmRpdl9fAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAX19ybHNoaWZ0X18A/8maO6isKgALAAAA/////+QAAAAAAAAAX19ybWF0bXVsX18A/8maO6isKgAIAAAA/////+QAAAAAAAAAX19ybW9kX18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19ybXVsX18AAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19yb3JfXwD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX3JvdW5kX18AAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX3Jwb3dfXwAAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3Jyc2hpZnRfXwD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX3JzaGlmdF9fAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX3JzdWJfXwAAAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfX3J0cnVlZGl2X18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19yeG9yX18AAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19zZXRfXwD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfX3NldF9uYW1lX18AAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAX19zZXRhdHRyX18A/8maO6isKgALAAAA/////+QAAAAAAAAAX19zZXRpdGVtX18A/8maO6isKgAMAAAA/////+QAAAAAAAAAX19zZXRzdGF0ZV9fAAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fc2l6ZW9mX18AAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9fc2xvdG5hbWVzX18AAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX3Nsb3RzX18AAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX3NwZWNfXwAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX3N0cl9fAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fc3ViX18A/8maO6isKgARAAAA/////+QAAAAAAAAAX19zdWJjbGFzc2NoZWNrX18AAAD/yZo7qKwqABAAAAD/////5AAAAAAAAABfX3N1YmNsYXNzaG9va19fAAAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fdHJ1ZWRpdl9fAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fdHJ1bmNfXwAAAP/JmjuorCoAIwAAAP/////kAAAAAAAAAF9fdHlwaW5nX2lzX3VucGFja2VkX3R5cGV2YXJ0dXBsZV9fAP/JmjuorCoAGAAAAP/////kAAAAAAAAAF9fdHlwaW5nX3ByZXBhcmVfc3Vic3RfXwAAAAD/yZo7qKwqABAAAAD/////5AAAAAAAAABfX3R5cGluZ19zdWJzdF9fAAAAAP/JmjuorCoAHgAAAP/////kAAAAAAAAAF9fdHlwaW5nX3VucGFja2VkX3R1cGxlX2FyZ3NfXwAA/8maO6isKgATAAAA/////+QAAAAAAAAAX193YXJuaW5ncmVnaXN0cnlfXwD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3dlYWtyZWZfXwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX3hvcl9fAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9hYmNfaW1wbAAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9hbm5vdGF0aW9uAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9ibGtzaXplAAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9ib290c3RyYXAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9kZWFsbG9jX3dhcm4AAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfZmluYWxpemluZwD/yZo7qKwqAA4AAAD/////5AAAAAAAAABfZmluZF9hbmRfbG9hZAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAX2ZpeF91cF9tb2R1bGUAAP/JmjuorCoADwAAAP/////kAAAAAAAAAF9nZXRfc291cmNlZmlsZQD/yZo7qKwqABAAAAD/////5AAAAAAAAABfaGFuZGxlX2Zyb21saXN0AAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9pbml0aWFsaXppbmcAAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABfaXNfdGV4dF9lbmNvZGluZwAAAP/JmjuorCoAEwAAAP/////kAAAAAAAAAF9sb2NrX3VubG9ja19tb2R1bGUA/8maO6isKgAMAAAA/////+QAAAAAAAAAX3Nob3d3YXJubXNnAAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9zaHV0ZG93bgAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9zbG90bmFtZXMAAP/JmjuorCoADgAAAP/////kAAAAAAAAAF9zdHJwdGltZV90aW1lAAD/yZo7qKwqABkAAAD/////5AAAAAAAAABfdW5pbml0aWFsaXplZF9zdWJtb2R1bGVzAAAA/8maO6isKgAZAAAA/////+QAAAAAAAAAX3dhcm5fdW5hd2FpdGVkX2Nvcm91dGluZQAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF94b3B0aW9ucwAAAP/JmjuorCoAAwAAAP/////kAAAAAAAAAGFkZAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABhcHBlbmQAAP/JmjuorCoAAwAAAP/////kAAAAAAAAAGJpZwD/yZo7qKwqAAYAAAD/////5AAAAAAAAABidWZmZXIAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGJ1aWx0aW5zAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGNfY2FsbAAA/8maO6isKgALAAAA/////+QAAAAAAAAAY19leGNlcHRpb24A/8maO6isKgAIAAAA/////+QAAAAAAAAAY19yZXR1cm4AAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAY2FsbAAAAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABjbGVhcgAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGNsb3NlAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAY2xvc2VkAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABjb2RlAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGNvcHkAAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAY29weXJlZwD/yZo7qKwqAAYAAAD/////5AAAAAAAAABkZWNvZGUAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGRlZmF1bHQA/8maO6isKgANAAAA/////+QAAAAAAAAAZGVmYXVsdGFjdGlvbgAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGRpY3Rjb21wAAAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAGRpZmZlcmVuY2VfdXBkYXRlAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAZGlzcGF0Y2hfdGFibGUAAP/JmjuorCoACwAAAP/////kAAAAAAAAAGRpc3BsYXlob29rAP/JmjuorCoABgAAAP/////kAAAAAAAAAGVuYWJsZQAA/8maO6isKgAGAAAA/////+QAAAAAAAAAZW5jb2RlAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABlbmNvZGluZwAAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABlbmRfbGluZW5vAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABlbmRfb2Zmc2V0AAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABlcnJvcnMAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGV4Y2VwdGhvb2sAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGV4Y2VwdGlvbgAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGV4dGVuZAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAZmlsZW5hbWUAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAZmlsZW5vAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABmaWxsdmFsdWUAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABmaWx0ZXJzAP/JmjuorCoACgAAAP/////kAAAAAAAAAGZpbmRfY2xhc3MAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGZsdXNoAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAZ2VuZXhwcgD/yZo7qKwqAAMAAAD/////5AAAAAAAAABnZXQA/8maO6isKgAKAAAA/////+QAAAAAAAAAZ2V0X3NvdXJjZQAA/8maO6isKgAHAAAA/////+QAAAAAAAAAZ2V0YXR0cgD/yZo7qKwqAAgAAAD/////5AAAAAAAAABnZXRzdGF0ZQAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABpZ25vcmUAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGltcG9ydGxpYgAAAP/JmjuorCoAAwAAAP/////kAAAAAAAAAGluZgD/yZo7qKwqAAwAAAD/////5AAAAAAAAABpbnRlcnNlY3Rpb24AAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAaXNhdHR5AAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABpc2luc3RhbmNlAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABpdGVtcwAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGl0ZXIAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAam9pbgAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABrZXlzAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGxhbWJkYQAA/8maO6isKgAOAAAA/////+QAAAAAAAAAbGFzdF90cmFjZWJhY2sAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGxhc3RfdHlwZQAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGxhc3RfdmFsdWUAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGxhdGluMQAA/8maO6isKgADAAAA/////+QAAAAAAAAAbGVuAP/JmjuorCoABAAAAP/////kAAAAAAAAAGxpbmUAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAbGluZW5vAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABsaXN0Y29tcAAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABsaXR0bGUAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGxvY2FsZQAA/8maO6isKgAFAAAA/////+QAAAAAAAAAbWF0Y2gAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABtZXRhY2xhc3MAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABtb2RlAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAG1vZHVsZXMA/8maO6isKgADAAAA/////+QAAAAAAAAAbXJvAP/JmjuorCoAAwAAAP/////kAAAAAAAAAG1zZwD/yZo7qKwqAAgAAAD/////5AAAAAAAAABuX2ZpZWxkcwAAAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABuX3NlcXVlbmNlX2ZpZWxkcwAAAP/JmjuorCoAEAAAAP/////kAAAAAAAAAG5fdW5uYW1lZF9maWVsZHMAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAbmFtZQAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABuZXdsaW5lcwAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABuZXh0AAAAAP/JmjuorCoAAwAAAP/////kAAAAAAAAAG9iagD/yZo7qKwqAAYAAAD/////5AAAAAAAAABvZmZzZXQAAP/JmjuorCoADAAAAP/////kAAAAAAAAAG9uY2VyZWdpc3RyeQAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABvcGNvZGUAAP/JmjuorCoABAAAAP/////kAAAAAAAAAG9wZW4AAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAcGFyZW50AAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABwYXJ0aWFsAP/JmjuorCoABAAAAP/////kAAAAAAAAAHBhdGgAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAcGVlawAAAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABwZXJzaXN0ZW50X2lkAAAA/8maO6isKgAPAAAA/////+QAAAAAAAAAcGVyc2lzdGVudF9sb2FkAP/JmjuorCoAEwAAAP/////kAAAAAAAAAHByaW50X2ZpbGVfYW5kX2xpbmUA/8maO6isKgADAAAA/////+QAAAAAAAAAcHMxAP/JmjuorCoAAwAAAP/////kAAAAAAAAAHBzMgD/yZo7qKwqAAMAAAD/////5AAAAAAAAAByYXcA/8maO6isKgAEAAAA/////+QAAAAAAAAAcmVhZAAAAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAAByZWFkMQAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAHJlYWRhYmxlAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAHJlYWRhbGwA/8maO6isKgAIAAAA/////+QAAAAAAAAAcmVhZGludG8AAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAcmVhZGludG8xAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAcmVhZGxpbmUAAAAA/8maO6isKgAQAAAA/////+QAAAAAAAAAcmVkdWNlcl9vdmVycmlkZQAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAAByZWxvYWQAAP/JmjuorCoABwAAAP/////kAAAAAAAAAHJlcGxhY2UA/8maO6isKgAFAAAA/////+QAAAAAAAAAcmVzZXQAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAAByZXR1cm4AAP/JmjuorCoACAAAAP/////kAAAAAAAAAHJldmVyc2VkAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHNlZWsAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAc2Vla2FibGUAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAc2VuZAAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABzZXRjb21wAP/JmjuorCoACAAAAP/////kAAAAAAAAAHNldHN0YXRlAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHNvcnQAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAc3RkZXJyAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABzdGRpbgAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAHN0ZG91dAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAc3RyaWN0AAD/yZo7qKwqABsAAAD/////5AAAAAAAAABzeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUA/8maO6isKgAEAAAA/////+QAAAAAAAAAdGVsbAAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAAB0ZXh0AAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAHRocmVhZGluZwAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHRocm93AAAA/8maO6isKgADAAAA/////+QAAAAAAAAAdG9wAP/JmjuorCoACAAAAP/////kAAAAAAAAAHRydW5jYXRlAAAAAP/JmjuorCoADgAAAP/////kAAAAAAAAAHVucmFpc2FibGVob29rAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAAB2YWx1ZXMAAP/JmjuorCoABwAAAP/////kAAAAAAAAAHZlcnNpb24A/8maO6isKgAIAAAA/////+QAAAAAAAAAd2FybmluZ3MAAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAd2Fybm9wdGlvbnMA/8maO6isKgAIAAAA/////+QAAAAAAAAAd3JpdGFibGUAAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAd3JpdGUAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAAB6aXBpbXBvcnRlcgD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAAAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAAQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAIAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAADAAAA/8maO6isKgABAAAA/////+QAAAAAAAAABAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAUAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAGAAAA/8maO6isKgABAAAA/////+QAAAAAAAAABwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAgAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAJAAAA/8maO6isKgABAAAA/////+QAAAAAAAAACgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAsAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAMAAAA/8maO6isKgABAAAA/////+QAAAAAAAAADQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAA4AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAPAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAEAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAABEAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAASAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAEwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAABQAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAVAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAFgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAABcAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAYAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAGQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAABoAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAbAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAHAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAB0AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAeAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAHwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAhAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAIgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACMAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAkAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAJQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACYAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAnAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAKAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACkAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAqAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAKwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACwAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAtAAAA/8maO6isKgABAAAA/////+QAAAAAAAAALgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAC8AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAwAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAMQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADIAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAzAAAA/8maO6isKgABAAAA/////+QAAAAAAAAANAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADUAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA2AAAA/8maO6isKgABAAAA/////+QAAAAAAAAANwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADgAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA5AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAOgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADsAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA8AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAPQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAD4AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA/AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAQAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAEEAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABCAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAQwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAEQAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABFAAAA/8maO6isKgABAAAA/////+QAAAAAAAAARgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAEcAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABIAAAA/8maO6isKgABAAAA/////+QAAAAAAAAASQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAEoAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABLAAAA/8maO6isKgABAAAA/////+QAAAAAAAAATAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAE0AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABOAAAA/8maO6isKgABAAAA/////+QAAAAAAAAATwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABRAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAUgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFMAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABUAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAVQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFYAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABXAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAWAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFkAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABaAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAWwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFwAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABdAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAXgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAF8AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABgAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAYQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGIAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABjAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAZAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGUAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABmAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAZwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGgAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABpAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAagAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGsAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABsAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAbQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAG4AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABvAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAcAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAHEAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAByAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAcwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAHQAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB1AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAdgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAHcAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB4AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAeQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAHoAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB7AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAfAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAH0AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB+AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAfwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACBAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAggAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACEAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAhQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIYAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACHAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIkAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACKAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAiwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACNAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAI8AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACQAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAkQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJIAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACTAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJUAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACWAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAlwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACZAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAmgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJsAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACcAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAnQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJ4AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACfAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAKEAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACiAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAowAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAClAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAApgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACoAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAqQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAKoAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACrAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAArAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAK0AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACuAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAArwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALAAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACxAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAsgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALMAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAC0AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAtQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALYAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAC3AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAuAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALkAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAC6AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAuwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALwAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAC9AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAvgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAL8AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADAAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMIAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADDAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAxAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMUAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADGAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAxwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADJAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAygAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMsAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADMAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAzQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAM4AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADPAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAANEAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADSAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA0wAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAANQAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADVAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA1gAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAANcAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADYAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA2QAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAANoAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADbAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA3AAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAN0AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADeAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA3wAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADhAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA4gAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOMAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA5QAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOYAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADnAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOkAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADqAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA6wAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOwAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADtAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA7gAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAO8AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA8QAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPIAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADzAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA9AAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPUAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAD2AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA9wAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAD5AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA+gAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPsAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA/QAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAP4AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAD/yZo7QJkqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAEAAADoAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAC8AgAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA6AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHTAgB20gIAY9MCAAAAAADVdQEAtBoAAAneAgAK2wIAI78B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O5xhKgABAAAA9wAAAP/JmjucYSoAAQAAAPgAAAD/yZo7nGEqAAEAAAD5AAAA/8maO5xhKgABAAAA+gAAAP/JmjucYSoAAQAAAPsAAAD/yZo7nGEqAAEAAAD8AAAA/8maO5xhKgABAAAA/QAAAP/JmjucYSoAAQAAAP4AAAD/yZo7nGEqAAEAAAD/AAAA/8maO5xhKgABAAAAAAEAAP/Jmjsk4ykAAAAAAP////8AAAAA/8maOyTjKQABAAAA/////wAAAAAAAAAA/8maOyTjKQABAAAA/////wEAAAAAAAAA/8maOyTjKQABAAAA/////wIAAAAAAAAA/8maOyTjKQABAAAA/////wMAAAAAAAAA/8maOyTjKQABAAAA/////wQAAAAAAAAA/8maOyTjKQABAAAA/////wUAAAAAAAAA/8maOyTjKQABAAAA/////wYAAAAAAAAA/8maOyTjKQABAAAA/////wcAAAAAAAAA/8maOyTjKQABAAAA/////wgAAAAAAAAA/8maOyTjKQABAAAA/////wkAAAAAAAAA/8maOyTjKQABAAAA/////woAAAAAAAAA/8maOyTjKQABAAAA/////wsAAAAAAAAA/8maOyTjKQABAAAA/////wwAAAAAAAAA/8maOyTjKQABAAAA/////w0AAAAAAAAA/8maOyTjKQABAAAA/////w4AAAAAAAAA/8maOyTjKQABAAAA/////w8AAAAAAAAA/8maOyTjKQABAAAA/////xAAAAAAAAAA/8maOyTjKQABAAAA/////xEAAAAAAAAA/8maOyTjKQABAAAA/////xIAAAAAAAAA/8maOyTjKQABAAAA/////xMAAAAAAAAA/8maOyTjKQABAAAA/////xQAAAAAAAAA/8maOyTjKQABAAAA/////xUAAAAAAAAA/8maOyTjKQABAAAA/////xYAAAAAAAAA/8maOyTjKQABAAAA/////xcAAAAAAAAA/8maOyTjKQABAAAA/////xgAAAAAAAAA/8maOyTjKQABAAAA/////xkAAAAAAAAA/8maOyTjKQABAAAA/////xoAAAAAAAAA/8maOyTjKQABAAAA/////xsAAAAAAAAA/8maOyTjKQABAAAA/////xwAAAAAAAAA/8maOyTjKQABAAAA/////x0AAAAAAAAA/8maOyTjKQABAAAA/////x4AAAAAAAAA/8maOyTjKQABAAAA/////x8AAAAAAAAA/8maOyTjKQABAAAA/////yAAAAAAAAAA/8maOyTjKQABAAAA/////yEAAAAAAAAA/8maOyTjKQABAAAA/////yIAAAAAAAAA/8maOyTjKQABAAAA/////yMAAAAAAAAA/8maOyTjKQABAAAA/////yQAAAAAAAAA/8maOyTjKQABAAAA/////yUAAAAAAAAA/8maOyTjKQABAAAA/////yYAAAAAAAAA/8maOyTjKQABAAAA/////ycAAAAAAAAA/8maOyTjKQABAAAA/////ygAAAAAAAAA/8maOyTjKQABAAAA/////ykAAAAAAAAA/8maOyTjKQABAAAA/////yoAAAAAAAAA/8maOyTjKQABAAAA/////ysAAAAAAAAA/8maOyTjKQABAAAA/////ywAAAAAAAAA/8maOyTjKQABAAAA/////y0AAAAAAAAA/8maOyTjKQABAAAA/////y4AAAAAAAAA/8maOyTjKQABAAAA/////y8AAAAAAAAA/8maOyTjKQABAAAA/////zAAAAAAAAAA/8maOyTjKQABAAAA/////zEAAAAAAAAA/8maOyTjKQABAAAA/////zIAAAAAAAAA/8maOyTjKQABAAAA/////zMAAAAAAAAA/8maOyTjKQABAAAA/////zQAAAAAAAAA/8maOyTjKQABAAAA/////zUAAAAAAAAA/8maOyTjKQABAAAA/////zYAAAAAAAAA/8maOyTjKQABAAAA/////zcAAAAAAAAA/8maOyTjKQABAAAA/////zgAAAAAAAAA/8maOyTjKQABAAAA/////zkAAAAAAAAA/8maOyTjKQABAAAA/////zoAAAAAAAAA/8maOyTjKQABAAAA/////zsAAAAAAAAA/8maOyTjKQABAAAA/////zwAAAAAAAAA/8maOyTjKQABAAAA/////z0AAAAAAAAA/8maOyTjKQABAAAA/////z4AAAAAAAAA/8maOyTjKQABAAAA/////z8AAAAAAAAA/8maOyTjKQABAAAA/////0AAAAAAAAAA/8maOyTjKQABAAAA/////0EAAAAAAAAA/8maOyTjKQABAAAA/////0IAAAAAAAAA/8maOyTjKQABAAAA/////0MAAAAAAAAA/8maOyTjKQABAAAA/////0QAAAAAAAAA/8maOyTjKQABAAAA/////0UAAAAAAAAA/8maOyTjKQABAAAA/////0YAAAAAAAAA/8maOyTjKQABAAAA/////0cAAAAAAAAA/8maOyTjKQABAAAA/////0gAAAAAAAAA/8maOyTjKQABAAAA/////0kAAAAAAAAA/8maOyTjKQABAAAA/////0oAAAAAAAAA/8maOyTjKQABAAAA/////0sAAAAAAAAA/8maOyTjKQABAAAA/////0wAAAAAAAAA/8maOyTjKQABAAAA/////00AAAAAAAAA/8maOyTjKQABAAAA/////04AAAAAAAAA/8maOyTjKQABAAAA/////08AAAAAAAAA/8maOyTjKQABAAAA/////1AAAAAAAAAA/8maOyTjKQABAAAA/////1EAAAAAAAAA/8maOyTjKQABAAAA/////1IAAAAAAAAA/8maOyTjKQABAAAA/////1MAAAAAAAAA/8maOyTjKQABAAAA/////1QAAAAAAAAA/8maOyTjKQABAAAA/////1UAAAAAAAAA/8maOyTjKQABAAAA/////1YAAAAAAAAA/8maOyTjKQABAAAA/////1cAAAAAAAAA/8maOyTjKQABAAAA/////1gAAAAAAAAA/8maOyTjKQABAAAA/////1kAAAAAAAAA/8maOyTjKQABAAAA/////1oAAAAAAAAA/8maOyTjKQABAAAA/////1sAAAAAAAAA/8maOyTjKQABAAAA/////1wAAAAAAAAA/8maOyTjKQABAAAA/////10AAAAAAAAA/8maOyTjKQABAAAA/////14AAAAAAAAA/8maOyTjKQABAAAA/////18AAAAAAAAA/8maOyTjKQABAAAA/////2AAAAAAAAAA/8maOyTjKQABAAAA/////2EAAAAAAAAA/8maOyTjKQABAAAA/////2IAAAAAAAAA/8maOyTjKQABAAAA/////2MAAAAAAAAA/8maOyTjKQABAAAA/////2QAAAAAAAAA/8maOyTjKQABAAAA/////2UAAAAAAAAA/8maOyTjKQABAAAA/////2YAAAAAAAAA/8maOyTjKQABAAAA/////2cAAAAAAAAA/8maOyTjKQABAAAA/////2gAAAAAAAAA/8maOyTjKQABAAAA/////2kAAAAAAAAA/8maOyTjKQABAAAA/////2oAAAAAAAAA/8maOyTjKQABAAAA/////2sAAAAAAAAA/8maOyTjKQABAAAA/////2wAAAAAAAAA/8maOyTjKQABAAAA/////20AAAAAAAAA/8maOyTjKQABAAAA/////24AAAAAAAAA/8maOyTjKQABAAAA/////28AAAAAAAAA/8maOyTjKQABAAAA/////3AAAAAAAAAA/8maOyTjKQABAAAA/////3EAAAAAAAAA/8maOyTjKQABAAAA/////3IAAAAAAAAA/8maOyTjKQABAAAA/////3MAAAAAAAAA/8maOyTjKQABAAAA/////3QAAAAAAAAA/8maOyTjKQABAAAA/////3UAAAAAAAAA/8maOyTjKQABAAAA/////3YAAAAAAAAA/8maOyTjKQABAAAA/////3cAAAAAAAAA/8maOyTjKQABAAAA/////3gAAAAAAAAA/8maOyTjKQABAAAA/////3kAAAAAAAAA/8maOyTjKQABAAAA/////3oAAAAAAAAA/8maOyTjKQABAAAA/////3sAAAAAAAAA/8maOyTjKQABAAAA/////3wAAAAAAAAA/8maOyTjKQABAAAA/////30AAAAAAAAA/8maOyTjKQABAAAA/////34AAAAAAAAA/8maOyTjKQABAAAA/////38AAAAAAAAA/8maOyTjKQABAAAA/////4AAAAAAAAAA/8maOyTjKQABAAAA/////4EAAAAAAAAA/8maOyTjKQABAAAA/////4IAAAAAAAAA/8maOyTjKQABAAAA/////4MAAAAAAAAA/8maOyTjKQABAAAA/////4QAAAAAAAAA/8maOyTjKQABAAAA/////4UAAAAAAAAA/8maOyTjKQABAAAA/////4YAAAAAAAAA/8maOyTjKQABAAAA/////4cAAAAAAAAA/8maOyTjKQABAAAA/////4gAAAAAAAAA/8maOyTjKQABAAAA/////4kAAAAAAAAA/8maOyTjKQABAAAA/////4oAAAAAAAAA/8maOyTjKQABAAAA/////4sAAAAAAAAA/8maOyTjKQABAAAA/////4wAAAAAAAAA/8maOyTjKQABAAAA/////40AAAAAAAAA/8maOyTjKQABAAAA/////44AAAAAAAAA/8maOyTjKQABAAAA/////48AAAAAAAAA/8maOyTjKQABAAAA/////5AAAAAAAAAA/8maOyTjKQABAAAA/////5EAAAAAAAAA/8maOyTjKQABAAAA/////5IAAAAAAAAA/8maOyTjKQABAAAA/////5MAAAAAAAAA/8maOyTjKQABAAAA/////5QAAAAAAAAA/8maOyTjKQABAAAA/////5UAAAAAAAAA/8maOyTjKQABAAAA/////5YAAAAAAAAA/8maOyTjKQABAAAA/////5cAAAAAAAAA/8maOyTjKQABAAAA/////5gAAAAAAAAA/8maOyTjKQABAAAA/////5kAAAAAAAAA/8maOyTjKQABAAAA/////5oAAAAAAAAA/8maOyTjKQABAAAA/////5sAAAAAAAAA/8maOyTjKQABAAAA/////5wAAAAAAAAA/8maOyTjKQABAAAA/////50AAAAAAAAA/8maOyTjKQABAAAA/////54AAAAAAAAA/8maOyTjKQABAAAA/////58AAAAAAAAA/8maOyTjKQABAAAA/////6AAAAAAAAAA/8maOyTjKQABAAAA/////6EAAAAAAAAA/8maOyTjKQABAAAA/////6IAAAAAAAAA/8maOyTjKQABAAAA/////6MAAAAAAAAA/8maOyTjKQABAAAA/////6QAAAAAAAAA/8maOyTjKQABAAAA/////6UAAAAAAAAA/8maOyTjKQABAAAA/////6YAAAAAAAAA/8maOyTjKQABAAAA/////6cAAAAAAAAA/8maOyTjKQABAAAA/////6gAAAAAAAAA/8maOyTjKQABAAAA/////6kAAAAAAAAA/8maOyTjKQABAAAA/////6oAAAAAAAAA/8maOyTjKQABAAAA/////6sAAAAAAAAA/8maOyTjKQABAAAA/////6wAAAAAAAAA/8maOyTjKQABAAAA/////60AAAAAAAAA/8maOyTjKQABAAAA/////64AAAAAAAAA/8maOyTjKQABAAAA/////68AAAAAAAAA/8maOyTjKQABAAAA/////7AAAAAAAAAA/8maOyTjKQABAAAA/////7EAAAAAAAAA/8maOyTjKQABAAAA/////7IAAAAAAAAA/8maOyTjKQABAAAA/////7MAAAAAAAAA/8maOyTjKQABAAAA/////7QAAAAAAAAA/8maOyTjKQABAAAA/////7UAAAAAAAAA/8maOyTjKQABAAAA/////7YAAAAAAAAA/8maOyTjKQABAAAA/////7cAAAAAAAAA/8maOyTjKQABAAAA/////7gAAAAAAAAA/8maOyTjKQABAAAA/////7kAAAAAAAAA/8maOyTjKQABAAAA/////7oAAAAAAAAA/8maOyTjKQABAAAA/////7sAAAAAAAAA/8maOyTjKQABAAAA/////7wAAAAAAAAA/8maOyTjKQABAAAA/////70AAAAAAAAA/8maOyTjKQABAAAA/////74AAAAAAAAA/8maOyTjKQABAAAA/////78AAAAAAAAA/8maOyTjKQABAAAA/////8AAAAAAAAAA/8maOyTjKQABAAAA/////8EAAAAAAAAA/8maOyTjKQABAAAA/////8IAAAAAAAAA/8maOyTjKQABAAAA/////8MAAAAAAAAA/8maOyTjKQABAAAA/////8QAAAAAAAAA/8maOyTjKQABAAAA/////8UAAAAAAAAA/8maOyTjKQABAAAA/////8YAAAAAAAAA/8maOyTjKQABAAAA/////8cAAAAAAAAA/8maOyTjKQABAAAA/////8gAAAAAAAAA/8maOyTjKQABAAAA/////8kAAAAAAAAA/8maOyTjKQABAAAA/////8oAAAAAAAAA/8maOyTjKQABAAAA/////8sAAAAAAAAA/8maOyTjKQABAAAA/////8wAAAAAAAAA/8maOyTjKQABAAAA/////80AAAAAAAAA/8maOyTjKQABAAAA/////84AAAAAAAAA/8maOyTjKQABAAAA/////88AAAAAAAAA/8maOyTjKQABAAAA/////9AAAAAAAAAA/8maOyTjKQABAAAA/////9EAAAAAAAAA/8maOyTjKQABAAAA/////9IAAAAAAAAA/8maOyTjKQABAAAA/////9MAAAAAAAAA/8maOyTjKQABAAAA/////9QAAAAAAAAA/8maOyTjKQABAAAA/////9UAAAAAAAAA/8maOyTjKQABAAAA/////9YAAAAAAAAA/8maOyTjKQABAAAA/////9cAAAAAAAAA/8maOyTjKQABAAAA/////9gAAAAAAAAA/8maOyTjKQABAAAA/////9kAAAAAAAAA/8maOyTjKQABAAAA/////9oAAAAAAAAA/8maOyTjKQABAAAA/////9sAAAAAAAAA/8maOyTjKQABAAAA/////9wAAAAAAAAA/8maOyTjKQABAAAA/////90AAAAAAAAA/8maOyTjKQABAAAA/////94AAAAAAAAA/8maOyTjKQABAAAA/////98AAAAAAAAA/8maOyTjKQABAAAA/////+AAAAAAAAAA/8maOyTjKQABAAAA/////+EAAAAAAAAA/8maOyTjKQABAAAA/////+IAAAAAAAAA/8maOyTjKQABAAAA/////+MAAAAAAAAA/8maOyTjKQABAAAA/////+QAAAAAAAAA/8maOyTjKQABAAAA/////+UAAAAAAAAA/8maOyTjKQABAAAA/////+YAAAAAAAAA/8maOyTjKQABAAAA/////+cAAAAAAAAA/8maOyTjKQABAAAA/////+gAAAAAAAAA/8maOyTjKQABAAAA/////+kAAAAAAAAA/8maOyTjKQABAAAA/////+oAAAAAAAAA/8maOyTjKQABAAAA/////+sAAAAAAAAA/8maOyTjKQABAAAA/////+wAAAAAAAAA/8maOyTjKQABAAAA/////+0AAAAAAAAA/8maOyTjKQABAAAA/////+4AAAAAAAAA/8maOyTjKQABAAAA/////+8AAAAAAAAA/8maOyTjKQABAAAA//////AAAAAAAAAA/8maOyTjKQABAAAA//////EAAAAAAAAA/8maOyTjKQABAAAA//////IAAAAAAAAA/8maOyTjKQABAAAA//////MAAAAAAAAA/8maOyTjKQABAAAA//////QAAAAAAAAA/8maOyTjKQABAAAA//////UAAAAAAAAA/8maOyTjKQABAAAA//////YAAAAAAAAA/8maOyTjKQABAAAA//////cAAAAAAAAA/8maOyTjKQABAAAA//////gAAAAAAAAA/8maOyTjKQABAAAA//////kAAAAAAAAA/8maOyTjKQABAAAA//////oAAAAAAAAA/8maOyTjKQABAAAA//////sAAAAAAAAA/8maOyTjKQABAAAA//////wAAAAAAAAA/8maOyTjKQABAAAA//////0AAAAAAAAA/8maOyTjKQABAAAA//////4AAAAAAAAA/8maOyTjKQABAAAA//////8AAAAAAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAPGRpY3Rjb21wPgAA/8maO6isKgAJAAAA/////+QAAAAAAAAAPGdlbmV4cHI+AAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAPGxhbWJkYT4AAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAPGxpc3Rjb21wPgAA/8maO6isKgAIAAAA/////+QAAAAAAAAAPG1vZHVsZT4AAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAPHNldGNvbXA+AAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAPHN0cmluZz4AAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAPHVua25vd24+AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAfQAAAP/JmjuorCoAAgAAAP/////kAAAAAAAAACwgAAD/yZo7qKwqAAIAAAD/////5AAAAAAAAAB9fQAA/8maO6isKgACAAAA/////+QAAAAAAAAAe3sAAP/JmjuorCoAAgAAAP/////kAAAAAAAAACUlAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAuAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAALjxsb2NhbHM+AAAA/8maO6isKgAAAAAA/////+QAAAAAAAAAAAAAAP/JmjuorCoAFwAAAP/////kAAAAAAAAAGxpc3QgaW5kZXggb3V0IG9mIHJhbmdlAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAoAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB7AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAJQAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHV0Zi04AAAA/8maO6isKgAFAAAA/////+QAAAAAAAAARmFsc2UAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABQeV9SZXByAP/JmjuorCoADQAAAP/////kAAAAAAAAAFRleHRJT1dyYXBwZXIAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABUcnVlAAAAAP/JmjuorCoADgAAAP/////kAAAAAAAAAFdhcm5pbmdNZXNzYWdlAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABfAAAA/8maO6isKgAPAAAA/////+QAAAAAAAAAX19JT0Jhc2VfY2xvc2VkAP/JmjuorCoADwAAAP/////kAAAAAAAAAF9fYWJjX3RwZmxhZ3NfXwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX2Fic19fAP/JmjuorCoAEwAAAP/////kAAAAAAAAAF9fYWJzdHJhY3RtZXRob2RzX18A/8maO6isKgAHAAAA/////+QAAAAAAAAAX19hZGRfXwD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX2FlbnRlcl9fAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX2FleGl0X18AAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX2FpdGVyX18AAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX2FsbF9fAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fYW5kX18A/8maO6isKgAJAAAA/////+QAAAAAAAAAX19hbmV4dF9fAAAA/8maO6isKgAPAAAA/////+QAAAAAAAAAX19hbm5vdGF0aW9uc19fAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fYXJnc19fAAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fYXdhaXRfXwAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fYmFzZXNfXwAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fYm9vbF9fAAAAAP/JmjuorCoADwAAAP/////kAAAAAAAAAF9fYnVpbGRfY2xhc3NfXwD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfX2J1aWx0aW5zX18AAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAX19ieXRlc19fAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19jYWxsX18AAAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAX19jYW50cmFjZV9fAAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fY2xhc3NfXwAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAF9fY2xhc3NfZ2V0aXRlbV9fAAAA/8maO6isKgANAAAA/////+QAAAAAAAAAX19jbGFzc2NlbGxfXwAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fY29tcGxleF9fAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fY29udGFpbnNfXwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX2NvcHlfXwAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX2RlbF9fAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fZGVsYXR0cl9fAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fZGVsZXRlX18AAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fZGVsaXRlbV9fAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fZGljdF9fAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fZGlyX18A/8maO6isKgAKAAAA/////+QAAAAAAAAAX19kaXZtb2RfXwAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19kb2NfXwD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX2VudGVyX18AAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABfX2VxX18AAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fZXhpdF9fAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fZmlsZV9fAAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fZmxvYXRfXwAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fZmxvb3JkaXZfXwAAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX2Zvcm1hdF9fAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX2ZzcGF0aF9fAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABfX2dlX18AAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fZ2V0X18A/8maO6isKgALAAAA/////+QAAAAAAAAAX19nZXRhdHRyX18A/8maO6isKgAQAAAA/////+QAAAAAAAAAX19nZXRhdHRyaWJ1dGVfXwAAAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABfX2dldGluaXRhcmdzX18A/8maO6isKgALAAAA/////+QAAAAAAAAAX19nZXRpdGVtX18A/8maO6isKgAOAAAA/////+QAAAAAAAAAX19nZXRuZXdhcmdzX18AAP/JmjuorCoAEQAAAP/////kAAAAAAAAAF9fZ2V0bmV3YXJnc19leF9fAAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAX19nZXRzdGF0ZV9fAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAF9fZ3RfXwAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19oYXNoX18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19pYWRkX18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19pYW5kX18AAAAA/8maO6isKgANAAAA/////+QAAAAAAAAAX19pZmxvb3JkaXZfXwAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9faWxzaGlmdF9fAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9faW1hdG11bF9fAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faW1vZF9fAAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9faW1wb3J0X18AAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faW11bF9fAAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9faW5kZXhfXwAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faW5pdF9fAAAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAF9faW5pdF9zdWJjbGFzc19fAAAA/8maO6isKgARAAAA/////+QAAAAAAAAAX19pbnN0YW5jZWNoZWNrX18AAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX2ludF9fAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9faW52ZXJ0X18AAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9faW9yX18A/8maO6isKgAIAAAA/////+QAAAAAAAAAX19pcG93X18AAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAX19pcnNoaWZ0X18A/8maO6isKgAUAAAA/////+QAAAAAAAAAX19pc2Fic3RyYWN0bWV0aG9kX18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19pc3ViX18AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19pdGVyX18AAAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAX19pdHJ1ZWRpdl9fAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9faXhvcl9fAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAF9fbGVfXwAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19sZW5fXwD/yZo7qKwqAA8AAAD/////5AAAAAAAAABfX2xlbmd0aF9oaW50X18A/8maO6isKgALAAAA/////+QAAAAAAAAAX19sbHRyYWNlX18A/8maO6isKgAKAAAA/////+QAAAAAAAAAX19sb2FkZXJfXwAA/8maO6isKgAKAAAA/////+QAAAAAAAAAX19sc2hpZnRfXwAA/8maO6isKgAGAAAA/////+QAAAAAAAAAX19sdF9fAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX21haW5fXwAAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX21hdG11bF9fAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX21pc3NpbmdfXwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX21vZF9fAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fbW9kdWxlX18AAP/JmjuorCoADwAAAP/////kAAAAAAAAAF9fbXJvX2VudHJpZXNfXwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX211bF9fAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fbmFtZV9fAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAF9fbmVfXwAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19uZWdfXwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX25ld19fAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fbmV3b2JqX18AAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9fbmV3b2JqX2V4X18AAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX25leHRfXwAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfX25vdGVzX18AAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABfX29yX18AAP/JmjuorCoADgAAAP/////kAAAAAAAAAF9fb3JpZ19jbGFzc19fAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX29yaWdpbl9fAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3BhY2thZ2VfXwD/yZo7qKwqAA4AAAD/////5AAAAAAAAABfX3BhcmFtZXRlcnNfXwAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19wYXRoX18AAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX19wb3NfXwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX3Bvd19fAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fcHJlcGFyZV9fAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fcXVhbG5hbWVfXwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX3JhZGRfXwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX3JhbmRfXwAAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3JkaXZtb2RfXwD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfX3JlZHVjZV9fAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABfX3JlZHVjZV9leF9fAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX19yZXByX18AAAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAX19yZXZlcnNlZF9fAAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9fcmZsb29yZGl2X18AAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3Jsc2hpZnRfXwD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3JtYXRtdWxfXwD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX3Jtb2RfXwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX3JtdWxfXwAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX3Jvcl9fAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fcm91bmRfXwAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fcnBvd19fAAAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fcnJzaGlmdF9fAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fcnNoaWZ0X18AAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fcnN1Yl9fAAAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fcnRydWVkaXZfXwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfX3J4b3JfXwAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfX3NldF9fAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fc2V0X25hbWVfXwAAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3NldGF0dHJfXwD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3NldGl0ZW1fXwD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfX3NldHN0YXRlX18AAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAX19zaXplb2ZfXwAA/8maO6isKgANAAAA/////+QAAAAAAAAAX19zbG90bmFtZXNfXwAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAF9fc2xvdHNfXwAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fc3BlY19fAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9fc3RyX18A/8maO6isKgAHAAAA/////+QAAAAAAAAAX19zdWJfXwD/yZo7qKwqABEAAAD/////5AAAAAAAAABfX3N1YmNsYXNzY2hlY2tfXwAAAP/JmjuorCoAEAAAAP/////kAAAAAAAAAF9fc3ViY2xhc3Nob29rX18AAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAX190cnVlZGl2X18A/8maO6isKgAJAAAA/////+QAAAAAAAAAX190cnVuY19fAAAA/8maO6isKgAjAAAA/////+QAAAAAAAAAX190eXBpbmdfaXNfdW5wYWNrZWRfdHlwZXZhcnR1cGxlX18A/8maO6isKgAYAAAA/////+QAAAAAAAAAX190eXBpbmdfcHJlcGFyZV9zdWJzdF9fAAAAAP/JmjuorCoAEAAAAP/////kAAAAAAAAAF9fdHlwaW5nX3N1YnN0X18AAAAA/8maO6isKgAeAAAA/////+QAAAAAAAAAX190eXBpbmdfdW5wYWNrZWRfdHVwbGVfYXJnc19fAAD/yZo7qKwqABMAAAD/////5AAAAAAAAABfX3dhcm5pbmdyZWdpc3RyeV9fAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9fd2Vha3JlZl9fAP/JmjuorCoABwAAAP/////kAAAAAAAAAF9feG9yX18A/8maO6isKgAJAAAA/////+QAAAAAAAAAX2FiY19pbXBsAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAX2Fubm90YXRpb24A/8maO6isKgAIAAAA/////+QAAAAAAAAAX2Jsa3NpemUAAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAX2Jvb3RzdHJhcAAA/8maO6isKgANAAAA/////+QAAAAAAAAAX2RlYWxsb2Nfd2FybgAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9maW5hbGl6aW5nAP/JmjuorCoADgAAAP/////kAAAAAAAAAF9maW5kX2FuZF9sb2FkAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABfZml4X3VwX21vZHVsZQAA/8maO6isKgAPAAAA/////+QAAAAAAAAAX2dldF9zb3VyY2VmaWxlAP/JmjuorCoAEAAAAP/////kAAAAAAAAAF9oYW5kbGVfZnJvbWxpc3QAAAAA/8maO6isKgANAAAA/////+QAAAAAAAAAX2luaXRpYWxpemluZwAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAF9pc190ZXh0X2VuY29kaW5nAAAA/8maO6isKgATAAAA/////+QAAAAAAAAAX2xvY2tfdW5sb2NrX21vZHVsZQD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfc2hvd3dhcm5tc2cAAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAX3NodXRkb3duAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAX3Nsb3RuYW1lcwAA/8maO6isKgAOAAAA/////+QAAAAAAAAAX3N0cnB0aW1lX3RpbWUAAP/JmjuorCoAGQAAAP/////kAAAAAAAAAF91bmluaXRpYWxpemVkX3N1Ym1vZHVsZXMAAAD/yZo7qKwqABkAAAD/////5AAAAAAAAABfd2Fybl91bmF3YWl0ZWRfY29yb3V0aW5lAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAX3hvcHRpb25zAAAA/8maO6isKgADAAAA/////+QAAAAAAAAAYWRkAP/JmjuorCoABgAAAP/////kAAAAAAAAAGFwcGVuZAAA/8maO6isKgADAAAA/////+QAAAAAAAAAYmlnAP/JmjuorCoABgAAAP/////kAAAAAAAAAGJ1ZmZlcgAA/8maO6isKgAIAAAA/////+QAAAAAAAAAYnVpbHRpbnMAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAY19jYWxsAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABjX2V4Y2VwdGlvbgD/yZo7qKwqAAgAAAD/////5AAAAAAAAABjX3JldHVybgAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABjYWxsAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGNsZWFyAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAY2xvc2UAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABjbG9zZWQAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGNvZGUAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAY29weQAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABjb3B5cmVnAP/JmjuorCoABgAAAP/////kAAAAAAAAAGRlY29kZQAA/8maO6isKgAHAAAA/////+QAAAAAAAAAZGVmYXVsdAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABkZWZhdWx0YWN0aW9uAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAZGljdGNvbXAAAAAA/8maO6isKgARAAAA/////+QAAAAAAAAAZGlmZmVyZW5jZV91cGRhdGUAAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABkaXNwYXRjaF90YWJsZQAA/8maO6isKgALAAAA/////+QAAAAAAAAAZGlzcGxheWhvb2sA/8maO6isKgAGAAAA/////+QAAAAAAAAAZW5hYmxlAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABlbmNvZGUAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGVuY29kaW5nAAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGVuZF9saW5lbm8AAP/JmjuorCoACgAAAP/////kAAAAAAAAAGVuZF9vZmZzZXQAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGVycm9ycwAA/8maO6isKgAKAAAA/////+QAAAAAAAAAZXhjZXB0aG9vawAA/8maO6isKgAJAAAA/////+QAAAAAAAAAZXhjZXB0aW9uAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAZXh0ZW5kAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABmaWxlbmFtZQAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABmaWxlbm8AAP/JmjuorCoACQAAAP/////kAAAAAAAAAGZpbGx2YWx1ZQAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGZpbHRlcnMA/8maO6isKgAKAAAA/////+QAAAAAAAAAZmluZF9jbGFzcwAA/8maO6isKgAFAAAA/////+QAAAAAAAAAZmx1c2gAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABnZW5leHByAP/JmjuorCoAAwAAAP/////kAAAAAAAAAGdldAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABnZXRfc291cmNlAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABnZXRhdHRyAP/JmjuorCoACAAAAP/////kAAAAAAAAAGdldHN0YXRlAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGlnbm9yZQAA/8maO6isKgAJAAAA/////+QAAAAAAAAAaW1wb3J0bGliAAAA/8maO6isKgADAAAA/////+QAAAAAAAAAaW5mAP/JmjuorCoADAAAAP/////kAAAAAAAAAGludGVyc2VjdGlvbgAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABpc2F0dHkAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGlzaW5zdGFuY2UAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGl0ZW1zAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAaXRlcgAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABqb2luAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGtleXMAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAbGFtYmRhAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABsYXN0X3RyYWNlYmFjawAA/8maO6isKgAJAAAA/////+QAAAAAAAAAbGFzdF90eXBlAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAbGFzdF92YWx1ZQAA/8maO6isKgAGAAAA/////+QAAAAAAAAAbGF0aW4xAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABsZW4A/8maO6isKgAEAAAA/////+QAAAAAAAAAbGluZQAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABsaW5lbm8AAP/JmjuorCoACAAAAP/////kAAAAAAAAAGxpc3Rjb21wAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGxpdHRsZQAA/8maO6isKgAGAAAA/////+QAAAAAAAAAbG9jYWxlAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABtYXRjaAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAG1ldGFjbGFzcwAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAG1vZGUAAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAbW9kdWxlcwD/yZo7qKwqAAMAAAD/////5AAAAAAAAABtcm8A/8maO6isKgADAAAA/////+QAAAAAAAAAbXNnAP/JmjuorCoACAAAAP/////kAAAAAAAAAG5fZmllbGRzAAAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAG5fc2VxdWVuY2VfZmllbGRzAAAA/8maO6isKgAQAAAA/////+QAAAAAAAAAbl91bm5hbWVkX2ZpZWxkcwAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABuYW1lAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAG5ld2xpbmVzAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAG5leHQAAAAA/8maO6isKgADAAAA/////+QAAAAAAAAAb2JqAP/JmjuorCoABgAAAP/////kAAAAAAAAAG9mZnNldAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAb25jZXJlZ2lzdHJ5AAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAG9wY29kZQAA/8maO6isKgAEAAAA/////+QAAAAAAAAAb3BlbgAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABwYXJlbnQAAP/JmjuorCoABwAAAP/////kAAAAAAAAAHBhcnRpYWwA/8maO6isKgAEAAAA/////+QAAAAAAAAAcGF0aAAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABwZWVrAAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAHBlcnNpc3RlbnRfaWQAAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABwZXJzaXN0ZW50X2xvYWQA/8maO6isKgATAAAA/////+QAAAAAAAAAcHJpbnRfZmlsZV9hbmRfbGluZQD/yZo7qKwqAAMAAAD/////5AAAAAAAAABwczEA/8maO6isKgADAAAA/////+QAAAAAAAAAcHMyAP/JmjuorCoAAwAAAP/////kAAAAAAAAAHJhdwD/yZo7qKwqAAQAAAD/////5AAAAAAAAAByZWFkAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHJlYWQxAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAcmVhZGFibGUAAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAcmVhZGFsbAD/yZo7qKwqAAgAAAD/////5AAAAAAAAAByZWFkaW50bwAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAAByZWFkaW50bzEAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAAByZWFkbGluZQAAAAD/yZo7qKwqABAAAAD/////5AAAAAAAAAByZWR1Y2VyX292ZXJyaWRlAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAHJlbG9hZAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAcmVwbGFjZQD/yZo7qKwqAAUAAAD/////5AAAAAAAAAByZXNldAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAHJldHVybgAA/8maO6isKgAIAAAA/////+QAAAAAAAAAcmV2ZXJzZWQAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAc2VlawAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABzZWVrYWJsZQAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABzZW5kAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAHNldGNvbXAA/8maO6isKgAIAAAA/////+QAAAAAAAAAc2V0c3RhdGUAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAc29ydAAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABzdGRlcnIAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHN0ZGluAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAc3Rkb3V0AAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABzdHJpY3QAAP/JmjuorCoAGwAAAP/////kAAAAAAAAAHN5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZQD/yZo7qKwqAAQAAAD/////5AAAAAAAAAB0ZWxsAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHRleHQAAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAdGhyZWFkaW5nAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAdGhyb3cAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAAB0b3AA/8maO6isKgAIAAAA/////+QAAAAAAAAAdHJ1bmNhdGUAAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAdW5yYWlzYWJsZWhvb2sAAP/JmjuorCoABgAAAP/////kAAAAAAAAAHZhbHVlcwAA/8maO6isKgAHAAAA/////+QAAAAAAAAAdmVyc2lvbgD/yZo7qKwqAAgAAAD/////5AAAAAAAAAB3YXJuaW5ncwAAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAAB3YXJub3B0aW9ucwD/yZo7qKwqAAgAAAD/////5AAAAAAAAAB3cml0YWJsZQAAAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAAB3cml0ZQAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAHppcGltcG9ydGVyAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAABAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAAgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAMAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAEAAAA/8maO6isKgABAAAA/////+QAAAAAAAAABQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAYAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAHAAAA/8maO6isKgABAAAA/////+QAAAAAAAAACAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAkAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAKAAAA/8maO6isKgABAAAA/////+QAAAAAAAAACwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAAwAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAANAAAA/8maO6isKgABAAAA/////+QAAAAAAAAADgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAA8AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAQAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAEQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAABIAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAATAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAFAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAABUAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAWAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAFwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAABgAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAZAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAGgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAABsAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAcAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAHQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAB4AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAfAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAIAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACEAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAiAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAIwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACQAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAlAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAJgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACcAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAoAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAKQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACoAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAArAAAA/8maO6isKgABAAAA/////+QAAAAAAAAALAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAC0AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAuAAAA/8maO6isKgABAAAA/////+QAAAAAAAAALwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAxAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAMgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADMAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA0AAAA/8maO6isKgABAAAA/////+QAAAAAAAAANQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADYAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA3AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAOAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADkAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA6AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAOwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADwAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA9AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAPgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAD8AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABAAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAQQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAEIAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABDAAAA/8maO6isKgABAAAA/////+QAAAAAAAAARAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAEUAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABGAAAA/8maO6isKgABAAAA/////+QAAAAAAAAARwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAEgAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABJAAAA/8maO6isKgABAAAA/////+QAAAAAAAAASgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAEsAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABMAAAA/8maO6isKgABAAAA/////+QAAAAAAAAATQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAE4AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABPAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAUAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFEAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABSAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAUwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFQAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABVAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAVgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFcAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABYAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAWQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFoAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABbAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAXAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAF0AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABeAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAXwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABhAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAYgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGMAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABkAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAZQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGYAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABnAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAaAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGkAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABqAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAawAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAGwAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABtAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAbgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAG8AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABwAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAcQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAHIAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABzAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAdAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAHUAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB2AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAdwAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAHgAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB5AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAegAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAHsAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB8AAAA/8maO6isKgABAAAA/////+QAAAAAAAAAfQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAH4AAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB/AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACCAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACFAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAhgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIcAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACIAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAiQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAIoAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACLAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAI0AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACOAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAjwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACRAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAkgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJMAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACUAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAlQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJYAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACXAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJkAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACaAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAmwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJwAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACdAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAngAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAJ8AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACgAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAoQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAKIAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACjAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAApAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAKUAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACmAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAApwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACpAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAqgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAKsAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACsAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAArQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAK4AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACvAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALEAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAACyAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAswAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALQAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAC1AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAtgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALcAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAuQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAALoAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAC7AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAL0AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAC+AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAvwAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADBAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAwgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMMAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADEAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAxQAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMYAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADHAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMkAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADKAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAywAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADNAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAAzgAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAM8AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADQAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA0QAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAANIAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADTAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA1AAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAANUAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADWAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA1wAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAANgAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADZAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA2gAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAANsAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADcAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA3QAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADfAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOEAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADiAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA4wAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOQAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADlAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA5gAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOcAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA6QAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAOoAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADrAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA7AAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAO0AAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADuAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA7wAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAADxAAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA8gAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPMAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAD0AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA9QAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPYAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAD3AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPkAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAD6AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA+wAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAPwAAAD/yZo7qKwqAAEAAAD/////pAAAAAAAAAAAAAAAAAAAAAAAAAD9AAAA/8maO6isKgABAAAA/////6QAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAP/JmjuorCoAAQAAAP////+kAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAP/JmjtAmSoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAQAAAOgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAALwCAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAADoAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsQAAmQAAAAAAAAAAAAAnGgAAAAAAAAAALwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAABAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFIQIABgAAAAgAAAABAAAAAAAAAOHUAQAGAAAAEAAA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AAAAAAAAAAAAAAAAAAAAAABq9wAAOQwAADoMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHn2AAA7DAAAPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAD/AAAINwkAAP8AAAg5CQAA/wAACDsJAAD/AAAIPQkAAP8AAAg/CQAA/wAACEEJAAClAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEIJACzxAADgQwkADCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxECQAwawAAlEQJAAHlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgRgkAIX4AABxHCQAxfAAAtEcJACF+AABwSAkAIXMAABZJCQAhdgAAwkkJACFYAAAySgkAIXEAANRKCQAhaQAAZksJACRvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+SwkAIX4AALpMCQAhfgAAdk0JACF+AAAyTgkAIX4AAO5OCQAhfgAAqk8JACF+AABmUAkAIX4AACJRCQAhfgAA3lEJACF+AACaUgkAIX4AAFZTCQAhfgAAElQJACF+AADOVAkAIX4AAIpVCQAhfgAARlYJACF+AAACVwkAIX4AAL5XCQAhfgAAelgJACF+AAA2WQkAIX4AAPJZCQAhfgAArloJACF+AABqWwkAIX4AACZcCQAhfgAA4lwJACF+AACeXQkAIX4AAFpeCQAhfgAAFl8JACF+AADSXwkAIX4AAI5gCQAhfgAASmEJACF+AAAGYgkAIX4AAMJiCQAhfgAAfmMJACF+AAA6ZAkAIX4AAPZkCQAhfgAAsmUJACF+AABuZgkAIX4AACpnCQAhfgAA5mcJACF+AACiaAkAIXkAAFRpCQAhfgAAEGoJACF+AADMagkAIX4AAIhrCQAhfgAARGwJACF+AAAAbQkAIX4AALxtCQAhfgAAeG4JACF+AAA0bwkAIX4AAPBvCQAhfgAArHAJACF+AABocQkAIX4AACRyCQAhfgAA4HIJACF+AACccwkAIX4AAFh0CQAhfgAAFHUJACF+AADQdQkAIX4AAIx2CQAhfgAASHcJACF+AAAEeAkAIX4AAMB4CQAhfgAAfHkJACF+AAA4egkAIX4AAPR6CQAhfgAAsHsJACF+AABsfAkAIX4AACh9CQAhfgAA5H0JACF+AACgfgkAIX4AAFx/CQAhfgAAGIAJACF+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AG7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADS/wkAVlYAANT/CQBfXwAAAAAAAAAAAADW/wkAN90AACQBCgDW1gAAAAAAAAAAAAAmAQoATGEAAFIBCgAjjQAAAAAAAAAAAAAoAgoAR7cAAAAAAAAAAAAAAAAAAAAAAAAKAwoAd6MAAGQDCgATrgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwECgAA/wAAnAYKAAD/AACcCAoAAP8AAJwKCgAA/wAAnAwKAAD/AACcDgoAAP8AAJwQCgAA/wAAnBIKAAD/AACcFAoAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ACD/AADg2QsAUakAAJLaCwA0WwAA4toLAMbLAADu2gsAAakAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDcCwAlzQAAkt0LAJTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ACF+AAAY7wwAIX4AANTvDAAhfgAAkPAMACF+AABM8QwAIX4AAAjyDAAhfgAAxPIMACF+AACA8wwAIX4AADz0DAAhJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ9AwAFnkAABj1DAARvwAAAAAAAAAAAAB29gwAYHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACe9gwAHR8AAAAAAAAAAAAApPYMADGoAACU9wwAA80AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq+QwAKPwAANT6DAAA/wAA1PwMAB70AACC/gwASuwAAMj/DAAV2wAAVgENAADdAAASAw0Aiv8AAP4DDQCGhgAAAAAAAAAAAAAABA0AWcgAAOAEDQCesgAACgUNAAu6AAAAAAAAAAAAAGoGDQBW7AAAmAcNAB71AABICQ0AJ9AAAAAAAAAAAAAAnAoNACHeAAAYDA0AXfIAAEQNDQARmAAAVA4NABOmAAB8Dw0A9fUAAH4PDQBgzgAAXBANAE5OAABeEA0AAPsAAFYSDQAOwAAAvBMNAAHPAABaFQ0AaOIAAFAWDQAw5AAAuhcNANbWAAC8Fw0AP9oAAPQYDQAE/AAA5hoNACe/AAAYHA0AiPUAAPQcDQAFuwAAYh4NAAT+AABYIA0Asb4AAHQgDQAk9QAAGCINAAefAABKIw0AAW8AACgkDQCCpgAAciQNAEZGAAB0JA0AIXoAACglDQAwmwAAACYNANHrAAA2Jg0Anp4AAAAAAAAAAAAAOCYNAEjWAABWJw0AUooAAMgnDQBHoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfigNAAH2AABqKg0ASNwAAJQrDQBTsAAAAAAAAAAAAAAAAAAAAAAAAFAsDQAH9QAALi4NABwcAAAwLg0AEvYAAPovDQBTfwAAVDANAPD0AABeMA0AEnYAACgxDQDPzwAAAAAAAAAAAAAqMQ0AZ94AABoyDQAV7gAAzjMNAAb/AADCNQ0AAvgAALA3DQAxSAAA4DcNAJKSAADiNw0Ana8AAAg4DQAzVQAATjgNAFdlAABsOA0AJ54AAFw5DQBO3AAAejoNAHK7AAAOOw0AAAAAABA7DQBrcAAAHDsNABnRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOPA0AKdwAAPY9DQAOLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2Pg0AAuQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABADQBfygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANhADQBAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJJBDQBA/AAADEMNAED8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhkQNAED8AAAARg0AQPwAAHpHDQBASwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgRw0AL3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZIDQBhfAAAXkgNAEJ+AAAAAAAAAAAAANhIDQAhUAAAOEkNACF3AADmSQ0AIXcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlEoNACF+AABQSw0AIX4AAAxMDQAhfgAAyEwNACF+AACETQ0AIX4AAEBODQAhfgAA/E4NACF+AAC4Tw0AIX4AAHRQDQAhfgAAMFENACF+AADsUQ0AIX4AAKhSDQAhfgAAZFMNACF+AAAgVA0AIX4AANxUDQAhfgAAmFUNACF+AABUVg0AIX4AABBXDQAhfgAAzFcNACF+AACIWA0AIX4AAERZDQAhfgAAAFoNACF+AAC8Wg0AIX4AAHhbDQAhfgAANFwNACF+AADwXA0AIX4AAKxdDQAhfgAAaF4NACF+AAAkXw0AIX4AAOBfDQAhfgAAnGANACF+AABYYQ0AIX4AABRiDQAhfgAA0GINACF+AACMYw0AIX4AAEhkDQAhfgAABGUNACF+AADAZQ0AIX4AAHxmDQAhfgAAOGcNACF+AAD0Zw0AIX4AALBoDQAhfgAAbGkNACF+AAAoag0AIX4AAORqDQAhfgAAoGsNACF+AABcbA0AIX4AABhtDQAhfgAA1G0NACF+AACQbg0AIX4AAExvDQAhfgAACHANACF+AADEcA0AIX4AAIBxDQAhfgAAPHINACF+AAD4cg0AIX4AALRzDQAhfgAAcHQNACF+AAAsdQ0AIX4AAOh1DQAhfgAApHYNACF+AABgdw0AIWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAkw4AL30AAN6TDgAhfgAAmpQOACt2AAAylQ4AK0gAAG6VDgA5fgAA+pUOAEJ+AAB0lg4AQXwAAOyWDgAhfgAAqJcOACF+AABkmA4AIX4AACCZDgAhfgAA3JkOACF+AACYmg4AIX4AAFSbDgAhfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQnA4AVX4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGScDgAnfgAAFJ0OACF+AADQnQ4AIX4AAIyeDgAhfgAASJ8OACF9AAACoA4AIX4AAL6gDgAhfgAAeqEOACF+AAA2og4AIX4AAPKiDgAhfgAArqMOACF+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCkDgAiIgAAcqQOAEJ7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOakDgBUbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcpQ4AOnIAAI6lDgApYAAA/qUOAGxsAAAApg4Afn4AAAKmDgApbgAAjqYOAF1dAACQpg4AM2wAAASnDgBJUQAAAAAAAAAAAAAWpw4AZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCnDgB3ewAANKcOAHd+AABUpw4AeHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWKcOAERmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8KcOACJ+AAAAAAAAAAAAAKqoDgAhfgAAZqkOACF+AAAiqg4AIX0AAAAAAAAAAAAAAAAAAAAAAADcqg4AIX4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJirDgAhfgAAVKwOACF+AAAQrQ4AIX4AAMytDgAhfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiuDgAhfgAARK8OACF+AAAAsA4AIX4AALywDgAhfgAAeLEOACJ+AAAysg4AIX4AAO6yDgAhfgAAqrMOACF+AABmtA4AIX0AACC1DgAjfgAA2LUOACF+AACUtg4AIX0AAE63DgAifQAABrgOACJ+AADAuA4AIX4AAHy5DgAhfgAAOLoOACF1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwug4AIXkAAAAAAAAAAAAAorsOACJ3AABOvA4AKnUAAOa8DgAlfgAAAAAAAAAAAAAAAAAAAAAAAJq9DgAwbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFL4OACJyAAC2vg4AJH0AAGq/DgAjeAAAFsAOACp1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArsAOACNgAAAqwQ4AMmQAAJDBDgAiewAARMIOAC56AADewg4AIXYAAIrDDgAyfQAAIsQOACJ5AADSxA4ANXMAAFDFDgBEfgAAxsUOACFzAABsxg4AKXoAABDHDgAlfgAAxMcOACF+AACAyA4AIXEAACLJDgAidgAAzMkOACxwAABWyg4AJXYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AKD2EAAA/wAAoPgQAAH+AACc+hAAAf0AAJb8EAAF/wAAjP4QAAD/AACMABEAAP8AAIwCEQAApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1gMRAAwNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAxEAMGsAAFIEEQAB4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCixEAUlIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEixEAgYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEaLEQCnpwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEiLEQDPzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASosRALm5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATIsRAFFoAAB8ixEAD+UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwjREARfMAAI6OEQBBRwAAnI4RAOHhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ABwAAAAAAAAA3w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAABCpIwDgDwAAAAAAAAAAAAAAAAAACwAAAOEPAADAhS8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4g8AAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAF+MBABgAAAAAAAAA4w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAADCqIwDkDwAAAAAAAAAAAAAAAAAACwAAAOUPAAAwhi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5g8AAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAXt4BABQAAAAAAAAA5w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAALCqIwDoDwAAAAAAAAAAAAAAAAAACwAAAOkPAABghi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6g8AAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAct4BABQAAAAAAAAA6w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAAGCrIwDsDwAAAAAAAAAAAAAAAAAACwAAAO0PAACQhi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7g8AAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAANgwCABwAAAAAAAAA7w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAAPCrIwDwDwAAAAAAAAAAAAAAAAAACwAAAPEPAADAhi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8g8AAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAjxQBABAAAAAAAAAA8w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAAMCtIwD0DwAAAAAAAAAAAAAAAAAACwAAAPUPAADwhi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9g8AAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAVEoBABAAAAAAAAAA9w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAAHCuIwD4DwAAAAAAAAAAAAAAAAAACwAAAPkPAAAQhy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+g8AAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAXIAABAAAAAAAAAA+w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAAOCvIwD8DwAAAAAAAAAAAAAAAAAACwAAAP0PAABghy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/g8AAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAOLgBABAAAAAAAAAA/w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAALCwIwAAEAAAAAAAAAAAAAAAAAAACwAAAAEQAACwhy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAjC0AABQAAAAAAAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAAFCxIwAFEAAAAAAAAAAAAAAAAAAACwAAAAYQAADQhy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAICUAABwAAAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAAECyIwAJEAAAAAAAAAAAAAAAAAAACwAAAAoQAAAgiC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxAAAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAKCbKgAAAAAA57gBABAAAAAAAAAADBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAAEC0IwANEAAAAAAAAAAAAAAAAAAACwAAAA4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAAAADxAAAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAG4MAACAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAAAAAAAAAAAAAAEQAANC0IwAREAAAAAAAAAAAAAAAAAAACwAAABIQAABQiC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExAAAKwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAANEgAABgAAAAAAAAAFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ACiROACUHisA1AM0AKw+NACs4DMAlEI0ALTyMwBUqDQAkOA0AIyMNABcuTQAdJM0ANT4MwD4ujgASJE4ANzOMwBYozgA2LgzANSuOACMMSsAQLE0AOiSOABclzgAyBU0AASfOACcozgAJKY4AHisOAD0rjgAhK04AMizOAD/yZo7JOMpAAUCAAD/////8AMBAQHYADPQADPYABjQABjQABjQABjQABjQABjYACjQACjQACjQACjQACjQACjYACXQACXQACXQACXQACXQACXYACjQACjQACjQACjQACjQACjYACLQACLQACLQACLQACLQACLYAC3QAC3QAC3QAC3QAC3QAC3YADLQADLQADLQADLQADLQADLYADLQADLQADLQADLQADLQADLYAC7QAC7QAC7QAC7QAC7QAC7YADLQADLQADLQADLQADLQADLYADjQADjQADjQADjQADjQADjgACXQACXQACXQACXQACXQACXYAAuAC4ALgAvYABDQABDQABDQABDYAAqACoAKgArYAAyADIAMgAzYAA+AD4APgA/wBgIBPfAAAgE98AACAT3wCgwBN/AADAE38AAMATfwHhwBGPAAHAEY8AAcARjwABwBGPA+KgEY8AAqARjwACoBGPAAKgEY8FoBAAIQ8AIWASjwABYBKPEDAAIQhB7wAhYBKPAyEQEf8AARAR/wABEBH/AoDwEe8AAPAR7wAA8BHvAkJQEl8AAlASXwACUBJfBQASsBHPAAKwEc8AArARzwACsBHPAAKwEckCXUEiLxACsBHPQAKwEc8AArARzwXAEiASfwACIBJ/AAIgEn8AAiASfwACIBJ5AW8QAiASf0ACIBJ/AAIgEn8AAiASfwACIBJwAAAAAAAAAAAAAA/8maO0CZKgABAAAAKJE4AAAAAAAAAAAA/8maO0CZKgABAAAA1AM0AAAAAAAAAAAA/8maO0CZKgABAAAArD40AAAAAAAAAAAA/8maO0CZKgABAAAArOAzAAAAAAAAAAAA/8maO0CZKgABAAAAlEI0AAAAAAAAAAAA/8maO0CZKgABAAAAVKg0AAAAAAAAAAAA/8maO0CZKgABAAAAkOA0AAAAAAAAAAAA/8maO0CZKgABAAAAjIw0AAAAAAAAAAAA/8maO0CZKgABAAAAXLk0AAAAAAAAAAAA/8maO0CZKgABAAAAdJM0AAAAAAAAAAAA/8maO0CZKgABAAAA1PgzAAAAAAAAAAAA/8maO0CZKgABAAAASJE4AAAAAAAAAAAA/8maO0CZKgAPAAAAHLs4APTcKgDgrDMA+KwzABCtMwAorTMAUK0zAGitMwCArTMAmK0zALCtMwDIrTMA4K0zAHAnMwAUhCoAAAAAAAAAAAD/yZo7QJkqABMAAABgDSsAlB4rAFjmMwBkEjQAZCA0ALTyMwBMkzQA0FA1AABRNQD0izQAzMo0AFDANAAwHDUAFDE1AJjyNAAA+jQAeO00AKj+MwAEvDgA/8maOyTjKQAlAQAA//////ADAQEB2AA/0AA/4AAi0AAi0AAi0AAi0AAi0AAi2AAn0AAn0AAn0AAn0AAn0AAn2AAm0AAm0AAm0AAm0AAm0AAm8AICASnwAAIBKfAAAgEp8AACASnwAAIBKfAAAgEp8AACASnwAAIBKfAAAgEp8AACASnwAAIBKfAAAgEp8AACASnwAAIBKfAGAAE30AA20AA20AA20AA20AA22AAr0AAr0AAr0AAr0AAr0AAr2AAr0AAr0AAr0AAr0AAr0AAr2AAx0AAx0AAx0AAx0AAx0AAx2AA10AA10AA10AA10AA10AA12AA00AA00AA00AA00AA00AA02AAw0AAw0AAw0AAw0AAw0AAw8AYCAUQB8AACAUQB8AACAUQB8AACAUQB8AACAUQBAAAAAAAAAAAAAAD/yZo7QJkqAAEAAABY5jMAAAAAAAAAAAD/yZo7QJkqAAEAAABkEjQAAAAAAAAAAAD/yZo7QJkqAAEAAABkIDQAAAAAAAAAAAD/yZo7QJkqAAUAAABMkzQA0FA1AABRNQD0izQAzMo0AAAAAAAAAAAA/8maO0CZKgABAAAAUMA0AAAAAAAAAAAA/8maO0CZKgABAAAAMBw1AAAAAAAAAAAA/8maO0CZKgABAAAAFDE1AAAAAAAAAAAA/8maO0CZKgABAAAAmPI0AAAAAAAAAAAA/8maO0CZKgABAAAAAPo0AAAAAAAAAAAA/8maO0CZKgABAAAAeO00AAAAAAAAAAAA/8maO0CZKgABAAAAqP4zAAAAAAAAAAAA/8maO0CZKgAdAAAAjLw4AOTcKgAUhCoAAL44ACS+OAD4KjMASL44ABQuMwA0wjgAqC4zAPgvMwCMMTMAGDczAPjTOAAA2ikAoDczABDaKQCIOTMAfDozACg8MwAkPjMAZBQrAATdKgCI7zgAOLEzAFCxMwBoVzMAeLEzANhMMwAAAAAAAAAAAP/JmjtAmSoAHQAAAGANKwDYuDMAxO84APgmKwDw7zgAQGM2AAT7NgCoCSsAnLUzAPSuOABIaDQASL44ADTCOACExTgAPMg4ABDaMwAozjgAvOMzAPjTOAD01jgAAL44AMDWOADk4jgAJL44AFwVKwDUKCsAEHg4AOzXMwCsLysA/8maOyTjKQAeAgAA//////ADAQEB8AIHAQTwAAcBBPAYAAELgAqACoAK2AAa0AAa0AAa0AAa2AAV0AAV0AAV0AAV2AAJgAmACYAJ2AAJgAmACYAJ8AYABRGQKvADAgsCgAfwCgAOEohUkCOJWYxZgArwBBUBIPAAFQEg8AAVASDwABUBIPAAFQEgkCbxABUBIPQAFQEg8AAVASDwLg0BKPAADQEo8AANASjwAA0BKPAADQEokFbxAA0BKPQADQEo8AANASjwIAAvM9gmKtgpLfAFGAEX8AAYARfwABgBF/AAGAEX8DQAKS3YLDDYLzPwBQsBHvAACwEe8AALAR7wAAsBHvAcACk08AA7ASDwADsBIPAAOwEg8AA7ASDwegEBAU0B8AABAU0B8AABAU0B8AABAU0B8AABAU0BiFnxAAEBTQH0AAEBTQHwAAEBTQHwDhoBK/AAGgEr8AAaASvwABoBK/A4ACcr2Cgt8AMcAUUB8AAcAUUB8AAcAUUB8AAcAUUB8DwAJC/wABABLPAAEAEs8AAQASzwABABLPAmCgEX8AAKARfwAAoBF/AYNAEV8AA0ARXwADQBFfAANAEV8G4BAAQMiHrSAxnQAxngBwqAc4gzjDiBfYR9kHHSBxjQBxjYCA2IBdAOMbgDvArQCEPRCEPUCEPQCEPQCEPQCEPgDA+MSJBRiEvYCBvQCBuYQ5xIoFGcS9EIKNQIKNAIKNAIKNAIKPANAAQa0AMZAAAAAAAAAAAAAP/JmjtAmSoAAQAAAGjXMwAAAAAAAAAAAP/JmjtAmSoABQAAABSEKgAUhCoAFIQqABSEKgAUhCoAAAAAAAAAAAD/yZo7QJkqAAMAAAAUhCoAFIQqABDaKQAAAAAAAAAAAP/JmjtAmSoACgAAAADaKQCcQjMAGPA4ACRDMwDc8DgArEMzAFDxOAA0RDMAZBQrABSEKgAAAAAAAAAAAP/JmjtAmSoABgAAAHTyOAAY8DgA3PA4AFDxOACccjgAXBUrAP/Jmjsk4ykAtQAAAP/////wAwEBAdgOEoAL8AQBARHwAAEBEfAAAQER8AABARHwAAEBEfEAAQER9AABARHwAAEBEfAGAQER8AABARHwAAEBEfAAAQER8AABARHxAAEBEfQAAQER8AABARHwBgEBFfAAAQEV8AABARXwAAEBFfAAAQEV8QABARX0AAEBFfAAAQEV8AYBARrwAAEBGvAAAQEa8AYABAyIetIDGdADGdgECIBEgUaERoBGgEaARvADAAQa0AMZAAAAAAAAAAAAAAD/yZo7QJkqAAQAAAAA2ikAzEQzAGQUKwAUhCoAAAAAAAAAAAD/yZo7QJkqAAMAAAB08jgAnHI4AFwVKwD/yZo7JOMpAD0AAAD/////8AMBAQHYDhKAC/AEAQEa8AABARrwAAEBGvAGAAQMiHrSAxnQAxnYBAiARIFGhEaARoBGgEbwAwAEGtADGQAAAP/Jmjsk4ykADwAAAP/////wAwEBAfAAAQEB8AABAQEAAAAAAAAAAAD/yZo7QJkqAAQAAAAA2ikAZEUzAGQUKwAUhCoAAAAAAAAAAAD/yZo7QJkqAAMAAAAA2ikA8PE4ABSEKgAAAAAAAAAAAP/JmjtAmSoAAgAAAHTyOADs1zMA/8maOyTjKQAgAAAA//////ADAQEB2A4SgAvYAAWABYBu0QAV1AAV0AAV0AAV0AAVAAAAAP/JmjuorCoAUwEAAP/////kAAAAAAAAAENvcmUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LgoKVGhpcyBtb2R1bGUgaXMgTk9UIG1lYW50IHRvIGJlIGRpcmVjdGx5IGltcG9ydGVkISBJdCBoYXMgYmVlbiBkZXNpZ25lZCBzdWNoCnRoYXQgaXQgY2FuIGJlIGJvb3RzdHJhcHBlZCBpbnRvIFB5dGhvbiBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiBBcwpzdWNoIGl0IHJlcXVpcmVzIHRoZSBpbmplY3Rpb24gb2Ygc3BlY2lmaWMgbW9kdWxlcyBhbmQgYXR0cmlidXRlcyBpbiBvcmRlciB0bwp3b3JrLiBPbmUgc2hvdWxkIHVzZSBpbXBvcnRsaWIgYXMgdGhlIHB1YmxpYy1mYWNpbmcgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZS4KCgD/yZo7qKwqAA4AAAD/////5AAAAAAAAABBdHRyaWJ1dGVFcnJvcgAA/8maO6isKgAEAAAA/////+QAAAAAAAAAdHlwZQAAAAD/yZo7qKwqAB0AAAD/////5AAAAAAAAAA8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPgAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9vYmplY3RfbmFtZQAAAAAAAAAAAAAAAP/JmjtAmSoAAwAAALQXKwB0tTMAnLUzAP/Jmjsk4ykADAAAAP////+CBgkAiR4qA6kBKgMAAAAAAAAAAAAAAAD/yZo7QJkqAAEAAAAwKysA/8maOyTjKQBAAAAA/////4AA8AIDBSbYDxLUDx/QCB/43QsZ8AABBSbwAAEFJvAAAQUm3Q8TkEOJeYx51A8l0Agl0Agl0Agl8AMBBSb4+PgAAAAA/8maO6isKgAvAAAA/////+QAAAAAAAAAU2ltcGxlIHN1YnN0aXR1dGUgZm9yIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlci4A/8maO6isKgAHAAAA/////+QAAAAAAAAAaGFzYXR0cgD/yZo7qKwqAAcAAAD/////5AAAAAAAAABzZXRhdHRyAP/JmjuorCoABgAAAP/////kAAAAAAAAAHVwZGF0ZQAA/8maO6isKgAFAAAA/////+QAAAAAAAAAX3dyYXAAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABuZXcA/8maO6isKgADAAAA/////+QAAAAAAAAAb2xkAAAAAAAAAAAA/8maO0CZKgADAAAAyLYzALy4MwAUhCoAAAAAAAAAAAD/yZo7QJkqAAUAAAAQtzMAMLczAJQmKwD4DCsAULczAAAAAAAAAAAA/8maO0CZKgADAAAAkLczAKy3MwBgLisA/8maOyTjKQADAAAA/////yAgIAD/yZo7JOMpAF4AAAD/////gADgE0jwAAIFOfAAAgU5iAfdCxKQM5gH0Qsg1Asg8AABCTndDBOQQ5gXpSeoI6h30SI31CI30Qw41Aw40Aw4+NgEB4RM1wQX0gQXmAOcDNEEJdQEJdAEJdAEJdAEJQAAAAAAAAAAAAD/yZo7QJkqAAQAAADwFCsAXBUrALQXKwBgDSsA/8maO6isKgADAAAA/////+QAAAAAAAAAc3lzAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9uZXdfbW9kdWxlAAAAAAAAAAAA/8maO0CZKgACAAAAnLUzANi4MwAAAAAAAAAAAP/JmjtAmSoAAQAAAMwqKwD/yZo7JOMpABYAAAD/////gADYCxSNNJUDiTmMOZBUiT+MP9AEGgAA/8maO6isKgAOAAAA/////+QAAAAAAAAAX0RlYWRsb2NrRXJyb3IAAAAAAAAAAAAA/8maO0CZKgACAAAAdLkzABSEKgAAAAAAAAAAAP/JmjtAmSoAAwAAAFwVKwDwFCsAtBcrAP/Jmjsk4ykADwAAAP////+AAIAAgACAAIAA2AQIgEQA/8maO6isKgALAAAA/////+QAAAAAAAAAX01vZHVsZUxvY2sA/8maO6isKgCpAAAA/////+QAAAAAAAAAQSByZWN1cnNpdmUgbG9jayBpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyBhYmxlIHRvIGRldGVjdCBkZWFkbG9ja3MKICAgIChlLmcuIHRocmVhZCAxIHRyeWluZyB0byB0YWtlIGxvY2tzIEEgdGhlbiBCLCBhbmQgdGhyZWFkIDIgdHJ5aW5nIHRvCiAgICB0YWtlIGxvY2tzIEIgdGhlbiBBKS4KICAgIAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAF90aHJlYWQA/8maO6isKgANAAAA/////+QAAAAAAAAAYWxsb2NhdGVfbG9jawAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGxvY2sAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAd2FrZXVwAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABvd25lcgAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGNvdW50AAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAd2FpdGVycwD/yZo7qKwqABQAAAD/////5AAAAAAAAABfTW9kdWxlTG9jay5fX2luaXRfXwAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABzZWxmAAAAAAAAAAAAAAAA/8maO0CZKgAIAAAA4LozAAC7MwAouzMASLszAMwqKwBouzMAiLszAKi7MwAAAAAAAAAA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ANAFAAD/////5AAAAAAAAABUaGUgc3BlY2lmaWNhdGlvbiBmb3IgYSBtb2R1bGUsIHVzZWQgZm9yIGxvYWRpbmcuCgogICAgQSBtb2R1bGUncyBzcGVjIGlzIHRoZSBzb3VyY2UgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb2R1bGUuICBGb3IKICAgIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBtb2R1bGUsIGluY2x1ZGluZyBzb3VyY2UsIHVzZSB0aGUgc3BlYydzCiAgICBsb2FkZXIuCgogICAgYG5hbWVgIGlzIHRoZSBhYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuICBgbG9hZGVyYCBpcyB0aGUgbG9hZGVyCiAgICB0byB1c2Ugd2hlbiBsb2FkaW5nIHRoZSBtb2R1bGUuICBgcGFyZW50YCBpcyB0aGUgbmFtZSBvZiB0aGUKICAgIHBhY2thZ2UgdGhlIG1vZHVsZSBpcyBpbi4gIFRoZSBwYXJlbnQgaXMgZGVyaXZlZCBmcm9tIHRoZSBuYW1lLgoKICAgIGBpc19wYWNrYWdlYCBkZXRlcm1pbmVzIGlmIHRoZSBtb2R1bGUgaXMgY29uc2lkZXJlZCBhIHBhY2thZ2Ugb3IKICAgIG5vdC4gIE9uIG1vZHVsZXMgdGhpcyBpcyByZWZsZWN0ZWQgYnkgdGhlIGBfX3BhdGhfX2AgYXR0cmlidXRlLgoKICAgIGBvcmlnaW5gIGlzIHRoZSBzcGVjaWZpYyBsb2NhdGlvbiB1c2VkIGJ5IHRoZSBsb2FkZXIgZnJvbSB3aGljaCB0bwogICAgbG9hZCB0aGUgbW9kdWxlLCBpZiB0aGF0IGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZS4gIFdoZW4gZmlsZW5hbWUgaXMKICAgIHNldCwgb3JpZ2luIHdpbGwgbWF0Y2guCgogICAgYGhhc19sb2NhdGlvbmAgaW5kaWNhdGVzIHRoYXQgYSBzcGVjJ3MgIm9yaWdpbiIgcmVmbGVjdHMgYSBsb2NhdGlvbi4KICAgIFdoZW4gdGhpcyBpcyBUcnVlLCBgX19maWxlX19gIGF0dHJpYnV0ZSBvZiB0aGUgbW9kdWxlIGlzIHNldC4KCiAgICBgY2FjaGVkYCBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIGNhY2hlZCBieXRlY29kZSBmaWxlLCBpZiBhbnkuICBJdAogICAgY29ycmVzcG9uZHMgdG8gdGhlIGBfX2NhY2hlZF9fYCBhdHRyaWJ1dGUuCgogICAgYHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zYCBpcyB0aGUgc2VxdWVuY2Ugb2YgcGF0aCBlbnRyaWVzIHRvCiAgICBzZWFyY2ggd2hlbiBpbXBvcnRpbmcgc3VibW9kdWxlcy4gIElmIHNldCwgaXNfcGFja2FnZSBzaG91bGQgYmUKICAgIFRydWUtLWFuZCBGYWxzZSBvdGhlcndpc2UuCgogICAgUGFja2FnZXMgYXJlIHNpbXBseSBtb2R1bGVzIHRoYXQgKG1heSkgaGF2ZSBzdWJtb2R1bGVzLiAgSWYgYSBzcGVjCiAgICBoYXMgYSBub24tTm9uZSB2YWx1ZSBpbiBgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnNgLCB0aGUgaW1wb3J0CiAgICBzeXN0ZW0gd2lsbCBjb25zaWRlciBtb2R1bGVzIGxvYWRlZCBmcm9tIHRoZSBzcGVjIGFzIHBhY2thZ2VzLgoKICAgIE9ubHkgZmluZGVycyAoc2VlIGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXIgYW5kCiAgICBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlcikgc2hvdWxkIG1vZGlmeSBNb2R1bGVTcGVjIGluc3RhbmNlcy4KCiAgICAAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAb3JpZ2luAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABsb2FkZXJfc3RhdGUAAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAaXNfcGFja2FnZQAA/8maO6isKgAaAAAA/////+QAAAAAAAAAc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9zZXRfZmlsZWF0dHIAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfY2FjaGVkAP/JmjuorCoAEwAAAP/////kAAAAAAAAAE1vZHVsZVNwZWMuX19pbml0X18AAAAAAAAAAAD/yZo7QJkqAAIAAAAUhCoAENopAAAAAAAAAAAA/8maO0CZKgAIAAAAzCorAAjkMwBo7DMAiOwzANTsMwDAICsACO0zADDtMwAAAAAAAAAAAP/JmjtAmSoABgAAAPi7MwDMKisACOQzAGjsMwCI7DMAsOwzAP/Jmjsk4ykABgAAAP////8gICAgICAAAP/Jmjsk4ykATQAAAP////+AAOAUGIgEjAnYFhyIBIwL2BYciASMC9gcKIgE1AgZ2DA60CpEqCKoIsAEiATUCCfYKSuIBNQIJvAGAB4jiATUCBrYFxuIBIwMiAyIDAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAG5hbWU9eyFyfQAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAGxvYWRlcj17IXJ9AP/JmjuorCoACwAAAP/////kAAAAAAAAAG9yaWdpbj17IXJ9AP/JmjuorCoAHQAAAP/////kAAAAAAAAAHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPXt9AAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAe30oe30pAAD/yZo7qKwqABMAAAD/////5AAAAAAAAABNb2R1bGVTcGVjLl9fcmVwcl9fAAAAAAAAAAAA/8maO0CZKgAHAAAAFIQqAHDuMwCU7jMAuO4zANzuMwAU7zMARAYrAAAAAAAAAAAA/8maO0CZKgAJAAAAOMUzAMwqKwAI5DMAaOwzAGghKwDU7DMAhAsrAFwVKwDkJysAAAAAAAAAAAD/yZo7QJkqAAIAAAD4uzMA5MwzAP/Jmjsk4ykAsQAAAP////+AANgQG9cQItIQIqA0pDnREC3UEC3YEB3XECTSECSgVKRb0RAx1BAx8AMBEDOIBOALD4w70Asi2AwQj0uKS5gN1xgs0hgsqFSsW9EYOdQYOdEMOtQMOtAMOtgLD9QLKtALNtgMEI9LikvQGDffGR+aFqAE1CA/0RlA1BlA8QMBDUIB9AABDUIB8AABDUIB4A8Xj3+Kf5h0nH7UHza4BL8JugnAJLkPvA/RD0jUD0jQCEgAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABjYWNoZWQAAP/JmjuorCoADAAAAP/////kAAAAAAAAAGhhc19sb2NhdGlvbgAAAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABOb3RJbXBsZW1lbnRlZAAA/8maO6isKgARAAAA/////+QAAAAAAAAATW9kdWxlU3BlYy5fX2VxX18AAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABvdGhlcgAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHNtc2wAAAAAAAAAAAAAAAD/yZo7QJkqAAgAAADU7DMAzCorAAjkMwBo7DMAqPAzAMjwMwB0tTMA8PAzAP/Jmjsk4ykAEgAAAP////+JQRpBJADBJBFBOAPBNwFBOAMAAAAAAAAAAAAA/8maO0CZKgADAAAA+LszAETxMwBk8TMA/8maOyTjKQClAAAA/////4AA2A8T1A8uiATwAggJItgUGJRJoBWkGtIUK/AABRU82BQYlEugNaQ80hQv8AMFFTzgFBiUS6A1pDzSFC/wBQUVPPAGABUZmEXUHDzSFDzwBwUVPPAIABUZlEugNaQ80hQv8AkFFTzwCgAVGdQUJagV1Ck70hQ78AsFDT349QwAEB7wAAEJIvAAAQki8AABCSLdEyHQDCHQDCHQDCHwAwEJIvj4+AAAAP/JmjuorCoAEwAAAP/////kAAAAAAAAAF9ib290c3RyYXBfZXh0ZXJuYWwA/8maO6isKgATAAAA/////+QAAAAAAAAATm90SW1wbGVtZW50ZWRFcnJvcgD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfZ2V0X2NhY2hlZAD/yZo7qKwqABEAAAD/////5AAAAAAAAABNb2R1bGVTcGVjLmNhY2hlZAAAAAAAAAAAAAAA/8maO0CZKgAGAAAAMO0zAGjsMwAI7TMAtPIzAODyMwAM8zMA/8maOyTjKQBFAAAA/////4AA4AsPjDzQCx/YDxOMe9APJqg01Cs90A8m3RMm0BMu3Rot0BQt3R8y1x8+0h8+uHS8e9EfS9QfS5AElAzYDxOMfNAIGwAAAAAAAAAAAAAA/8maO0CZKgABAAAAMO0zAAAAAAAAAAAA/8maO0CZKgACAAAA+LszAKjwMwD/yZo7JOMpAA0AAAD/////gADgFx2IBIwMiAyIDAAAAP/JmjuorCoAIAAAAP/////kAAAAAAAAAFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUncyBwYXJlbnQuAAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAHJwYXJ0aXRpb24AAP/JmjuorCoAEQAAAP/////kAAAAAAAAAE1vZHVsZVNwZWMucGFyZW50AAAAAAAAAAAAAAD/yZo7QJkqAAQAAAA09DMAFIQqALQGKwDk3CoAAAAAAAAAAAD/yZo7QJkqAAMAAADU7DMAzCorAHD0MwD/yZo7JOMpADAAAAD/////gADwBgAMENQLKtALMtgTF5Q51xMn0hMnqAPREyzUEyyoUdQTL9AML+ATF5Q50AwcAAAAAP/JmjuorCoAFwAAAP/////kAAAAAAAAAE1vZHVsZVNwZWMuaGFzX2xvY2F0aW9uAAAAAAAAAAAA/8maO0CZKgABAAAACO0zAP/Jmjsk4ykACwAAAP////+AAOAPE9QPIdAIIQD/yZo7qKwqAAQAAAD/////5AAAAAAAAABib29sAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHZhbHVlAAAAAAAAAAAAAAD/yZo7QJkqAAIAAACs9TMACO0zAAAAAAAAAAAA/8maO0CZKgACAAAA+LszAMz1MwD/yZo7JOMpABYAAAD/////gADlHSGgJZlbnFuIBNQIGtAIGtAIGgAA/8maO6isKgAIAAAA/////+QAAAAAAAAAcHJvcGVydHkAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAc2V0dGVyAAAAAAAAAAAAAP/JmjtAmSoADAAAAFjmMwB85jMAFIQqACT4MwDsIDAA4CEwAPQjMABgJTAAdCYwAPwmMADQJzAAVCgwAAAAAAAAAAAA/8maO0CZKgAMAAAAXBUrAPAUKwC0FysAYA0rAIQRKwCUGCsApA0rAEz2MwCo8DMAcPYzANQrKwDI8DMA/8maOyTjKQDwAAAA/////4AAgACAAIAAgADwAiIFCPAAIgUI8EgBADA0wCTYHCDwAwsFHPAACwUc8AALBRzwAAsFHPAACwUc8BoIBUkB8AAIBUkB8AAIBUkB8BQKBSLwAAoFIvAACgUi8BgABg7wAgYFHPAABgUc8QMABg6EWPACBgUc8BAABgyEXfACAQUe8AABBR7xAwAGE4Rd8AIBBR7wBgAGDvACBQUd8AAFBR3xAwAGDoRY8AIFBR3wDgAGDvACAQUi8AABBSLxAwAGDoRY8AIBBSLwBgAGEtQFGPACAQUp8AABBSnxAwAGGdQFGPACAQUp8AABBSnwAAEFKQAAAAAAAAAAAAAAAP/JmjtAmSoAAwAAAGjsMwCI7DMAsOwzAP/JmjuorCoANQAAAP/////kAAAAAAAAAFJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIHZhcmlvdXMgbG9hZGVyIG1ldGhvZHMuAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX09SSUdJTgD/yZo7qKwqAAwAAAD/////5AAAAAAAAABnZXRfZmlsZW5hbWUAAAAA/8maO6isKgAXAAAA/////+QAAAAAAAAAc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24A/8maO6isKgAGAAAA/////+QAAAAAAAAAc2VhcmNoAAAAAAAAAAAAAP/JmjtAmSoACQAAADz4MwAUhCoAjPgzAKz4MwAI+zMA+FYzALDsMwAQ2ikAjEwzAAAAAAAAAAAA/8maO0CZKgAIAAAAlCYrABC3MwC08jMA4PIzANT4MwCw7DMAENozAFjmMwD/yZo7JOMpABIAAAD/////wTYVQgwAwgwMQhsDwhoBQhsDAAAAAAAAAAAAAP/JmjtAmSoABgAAAMwqKwAI5DMAaOwzALDsMwDU+DMABPkzAP/Jmjsk4ykADQEAAP////+AAOAHDYB+3REYmBagGahE0REx1BExiAbgCxHwAAkFSgGVZ5hmoG7RFjXUFjXwAAkFSgHdCx7QCybdEiXQDCXdIjXUIk3QCB/gCxXQCx3YEyrQEyqoNLgG0BM/0RM/1BM/0Aw/2Bch0BErkBKQEqB0iAbYDybQDyagdLBG2EJI8AMBEEoB8QABEEoB9AABEEoB8AABCUoB8AYACBLQBxndCxKQNpg80Qso1Aso8AAHCR/wAgMNItgdI9cdLtIdLqh00R001B00kAqQCvjdEx7wAAENIvAAAQ0i8AABDSLYHSGQCpAKkArwAwENIvj4+PAIABofiErlCxWQZJhGqDa4atALSdELSdQLSdAESQAAAAAAAAAAAAAA/8maO0CZKgABAAAACOQzAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9fY2FjaGVkX18AAP/JmjuorCoABAAAAP/////kAAAAAAAAAGxpc3QAAAAA/8maO6isKgARAAAA/////+QAAAAAAAAAX3NwZWNfZnJvbV9tb2R1bGUAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABsb2NhdGlvbgAAAAAAAAAAAAAAAP/JmjtAmSoABAAAABSEKgCM+DMAdP4zABDaKQAAAAAAAAAAAP/JmjtAmSoADQAAAOAbKwB0tTMAXBUrAPwTKwDoDSsAlCYrABj7MwA8+zMALBcrAFjmMwAI7TMAqPAzANTsMwD/yZo7JOMpAE4AAAD/////ggcOAI4KGwOaARsDqAcwALAKPQO8AT0DwQEHQQkAwQkMQRgDwRcBQRgDwTcHQT8AwT8MQg4Dwg0BQg4DwhIUQicAwicMQjYDwjUBQjYDAAAAAAAAAAAAAP/JmjtAmSoACAAAAGThMwAI5DMAaOwzAEThMwDMKisAiPszAKjwMwDU7DMA/8maOyTjKQAIAAAA/////yAgICAgICAgAAAAAP/Jmjsk4ykAkQEAAP////+AAPAEBgUY2A8VjH+IBPAIAAwQ0Asb2BMXiEvwAwAMHPj1BwAMGvAAAQUN8AABBQ3wAAEFDdgIDIgE8AMBBQ34+PjwDAAMEow/gETYBw2AfvACBAkR2BUb1BUmiEaIRvjdDx3wAAIJEfAAAgkR8AACCRHgDBCIRPAFAgkR+Pj48AYDBRjYExmUP4gIiAj43QsZ8AABBRjwAAEFGPAAAQUY2BMXiAiICIgI8AMBBRj4+PjgBw2AftgLEdALHd0VHJhWoFmwBNEVNdQVNYhG2A8V8AABCR6YKNAaLtgVHYhG8AIDBRbYERfUESKIBogG+N0LGfAAAQUW8AABBRbwAAEFFtgRFYgGiAaIBvADAQUW+Pj48AQDBSrdJSmoJqwv0SU61CU60Agi0Agi+N0LGfAAAQUq8AABBSrwAAEFKtglKdAIItAIItAIIvADAQUq+Pj49QYADBaQZJhGqDbQCzLRCzLUCzKARNgiKtAiMpgVmBW4FsA40jlLgETUBBbYEhiARIRL2CZAgETUBCPYCw+ASwAAAAAAAAAAAAAA/8maO0CZKgABAAAAaOwzAP/JmjuorCoACAAAAP/////kAAAAAAAAAG92ZXJyaWRlAAAAAP/JmjuorCoADwAAAP/////kAAAAAAAAAE5hbWVzcGFjZUxvYWRlcgD/yZo7qKwqAAUAAAD/////5AAAAAAAAABfcGF0aAAAAP/JmjuorCoAEgAAAP/////kAAAAAAAAAF9pbml0X21vZHVsZV9hdHRycwAAAAAAAAAAAAD/yZo7QJkqAAcAAAAUhCoAXBUrAPwTKwDgFisALBcrAOgNKwAY+zMAAAAAAAAAAAD/yZo7QJkqABUAAACUJisAzCorAFwVKwB0tTMACOQzANTsMwC08jMA4PIzAKj+MwDAFSsA0P4zAOgNKwD8EysA1CsrAOAWKwDgGysALBcrAMjwMwBo7DMAqPAzABj7MwD/yZo7JOMpAHgAAAD/////lQwiAKIKLwOuAS8Dwh8HQicAwicKQjQDwjMBQjQDwwsMQxgAwxgKQyUDwyQBQyUDwykHQzEAwzEKQz4Dwz0BQz4DxBwMRCkAxCkKRDYDxDUBRDYDxRQMRSEAxSEKRS4DxS0BRS4DxgwMRhkAxhkKRiYDxiUBRiYDAAAAAAAAAAAAAAAA/8maO0CZKgAFAAAAROEzAGThMwCE/jMACOQzAKj+MwD/yZo7JOMpAG4CAAD/////gADwCAAJEfAABAURlUeYRqBKsATRFDXUFDXQFD3wAgMJEdgeIpxpiEaMT4hP+N0PHfAAAQkR8AABCRHwAAEJEdgMEIhE8AMBCRH4+PjwBgAIEPAAGgURlTeYNqA8sBTREzbUEzbQEz7YERWUG4gG2AsRiD7gDxPUDy7QDzrdEybQEy7dGi3QFC3dIjXUIkWQD+AZKNcZMNIZMLAf0RlB1BlBkAbYHyPUHz6QBpQM2B4kkASUC/AWACMnkAaUD/ACAwkR2CAmiEbUDB3QDB343Q8d8AABCRHwAAEJEfAAAQkR2AwQiETwAwEJEfj4+PAGAAgQ8AAEBRGVN5g2oD2wJNETN9QTN9ATP/ACAwkR2CElpBuIRtQMHtAMHvjdDx3wAAEJEfAAAQkR8AABCRHYDBCIRPADAQkR+Pj48AYDBQ3YGh6IBowPiA/43QsZ8AABBQ3wAAEFDfAAAQUN2AgMiATwAwEFDfj4+PAGAAgQ8AAGBRWVN5g2oDqodNETNNQTNNATPNgLD9QLKtALNvAEAw0V2CIm1CJBkAaUD5AP+N0TIfAAAQ0V8AABDRXwAAENFdgQFJAE8AMBDRX4+PjwBgAIDNQHGPAADAUZ2AsT8AAECRWVd5h2oHqwNNEXONQXONAXQPACAw0V2CImpCuQBpQPkA/43RMh8AABDRXwAAENFfAAAQ0V2BAUkATwAwENFfj4+PAGAAwU8AAFCRmVd5h2oHywVNEXOtQXOtAXQtgPE4x70A8m8AIDERnYKCysC5BG1BQl0BQl+N0XJfAAAREZ8AABERnwAAERGdgUGJBE8AMBERn4+PjgCxGATQAA/8maO6isKgArAAAA/////+QAAAAAAAAAQ3JlYXRlIGEgbW9kdWxlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzcGVjLgD/yZo7qKwqAA0AAAD/////5AAAAAAAAABjcmVhdGVfbW9kdWxlAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAZXhlY19tb2R1bGUA/8maO6isKgBCAAAA/////+QAAAAAAAAAbG9hZGVycyB0aGF0IGRlZmluZSBleGVjX21vZHVsZSgpIG11c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpAAD/yZo7qKwqABAAAAD/////5AAAAAAAAABtb2R1bGVfZnJvbV9zcGVjAAAAAAAAAAAAAAAA/8maO0CZKgAFAAAA6AI0ABSEKgAsAzQAVAM0AHgDNAAAAAAAAAAAAP/JmjtAmSoABwAAABC3MwAI5DMALAM0ABDaMwD0uDMAzCorAPD+MwAAAAAAAAAAAP/JmjtAmSoAAgAAAEThMwBk4TMA/8maOyTjKQCKAAAA/////4AA8AYADhKARt0HDoh0jHuYT9EHLNQHLPAABgU+8AYAEhaUG9cRKtIRKqg00REw1BEwiAaIBt0JEJAUlBuYbdEJLNQJLPAAAgU+3Q4Z8AABGz3xAAEPPvQAAQ8+8AABCT7gBw2Aft0RHJhUnFnRESfUESeIBt0EFpB0mFbRBCTUBCTQBCTYCxGATQAA/8maO6isKgAmAAAA/////+QAAAAAAAAAUmV0dXJuIHRoZSByZXByIHRvIHVzZSBmb3IgdGhlIG1vZHVsZS4AAP/JmjuorCoAEgAAAP/////kAAAAAAAAADxtb2R1bGUgeyFyfSAoe30pPgAAAAAAAAAAAAD/yZo7QJkqAAcAAAAQBTQAFIQqAOjiMwA04zMAXOMzAATjMwBQBTQAAAAAAAAAAAD/yZo7QJkqAAUAAADMKisAaOwzAAjkMwA4xTMAyPAzAAAAAAAAAAAA/8maO0CZKgACAAAAROEzAMwqKwD/yZo7JOMpAJAAAAD/////gADwBgATF5Qp0BIjiDOIM6gUrBmARNgHC4R70Aca2AsPjDvQCx7YEyLXEynSEymoJNETL9QTL9AML+ATKdcTMNITMLAUsHS0e9ETQ9QTQ9AMQ+ALD9QLHPAAAwlHAdgTLNcTM9ITM7BEuCS8K9ETRtQTRtAMRuATJ9cTLtITLqh0rHm4JLwr0RNG1BNG0AxGAAAAAP/JmjuorCoARgAAAP/////kAAAAAAAAAEV4ZWN1dGUgdGhlIHNwZWMncyBzcGVjaWZpZWQgbW9kdWxlIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4AAP/JmjuorCoAHgAAAP/////kAAAAAAAAAG1vZHVsZSB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcwAA/8maO6isKgAOAAAA/////+QAAAAAAAAAbWlzc2luZyBsb2FkZXIAAP/JmjuorCoANwAAAP/////kAAAAAAAAAC5leGVjX21vZHVsZSgpIG5vdCBmb3VuZDsgZmFsbGluZyBiYWNrIHRvIGxvYWRfbW9kdWxlKCkA/8maO6isKgANAAAA/////+QAAAAAAAAASW1wb3J0V2FybmluZwAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAGxvYWRfbW9kdWxlAP/JmjuorCoAAwAAAP/////kAAAAAAAAAHBvcAAAAAAAAAAAAP/JmjtAmSoACQAAAJQGNAD0BjQAPLkzABSEKgAsBzQAANopAKhMMwBUAzQAVAc0AAAAAAAAAAAA/8maO0CZKgASAAAAzCorAATLMwDYuDMA+CkrAFQmKwA4xTMAENozAAjkMwDU7DMA8P4zABC3MwD0tTMAPOAzAGDgMwCkBzQAzAc0AFQDNADwBzQA/8maOyTjKQArAAAA/////5dBCEYtA8EgQwpFIwLEKjlGLQPFIzpGHQXGHQNGLQPGLQRGMQfGNAFGMQcAAAAAAAAAAAD/yZo7QJkqAAQAAABE4TMAZOEzAMwqKwA0KisA/8maOyTjKQAEAAAA/////yAgICAAAAAA/8maOyTjKQDdAQAA/////4AA4AsPjDmARN0JG5hE0Qkh1Akh8AAXBSzwABcFLN0LDow7jz+KP5g00Qsg1AsgqAbQCy7QCy7YEjLXEjnSEjm4JNESP9QSP4hD3RIdmGOoBNASLdESLdQSLdAMLfACEwks2A8TjHvQDyLYExfUEzLQEzrdGiXQJja4VLxZ0BpH0RpH1BpH0BRH5RAioDSoFrgk0BA/0RA/1BA/0BA/0BA/5RAioDSoFrgk0BA/0RA/1BA/0BA/3RcemHSce6hN0Rc61Bc68AAGETTdHiqoNKw70R431B438AABHDvwAAEcO/AAARw7kEPlFB2XTpJOoDOtDdEUNtQUNtAUNtgUGJRL1xQr0hQrqETRFDHUFDHQFDHQFDHgFBiUS9cUK9IUK6hG0RQz1BQz0BQz9QgAFhmUW5dfkl+gVKRZ0RUv1BUviEbYJSuNQ4xLmAScCdEMItAMIvj1AwAWGZRbl1+SX6BUpFnRFS/UFS+IRtglK41DjEuYBJwJ0Qwi0Awr0Awr0Awr0Awr0Awi8C8XBSzwABcFLPAAFwUs8QAXBSz0ABcFLPAAFwUs8AAXBSzwABcFLPAAFwUs8AAXBSzwABcFLPj4+PAAFwUs8AAXBSzwABcFLPAAFwUs8DAADBKATQAAAP/JmjuorCoAGQAAAP/////kAAAAAAAAAF9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUAAAAAAAAAAAAAAP/JmjtAmSoABwAAABSEKgD8EysA4BYrACwXKwC0BisA5NwqAOAbKwAAAAAAAAAAAP/JmjtAmSoADgAAAAjkMwDMBzQAzCorANi4MwD4KSsA8Ac0AJQmKwD8EysAdLUzAFwVKwDgFisAELczAHD0MwDgGysA/8maOyTjKQBBAAAA/////4IfIgCiQQ5BMAPCPQxDCgDDCgpDFwPDFgFDFwPDLEEBRC4AxC4KRDsDxDoBRDsDxRAHRRgAxRgKRSUDxSQBRSUDAAAA/8maOyTjKQCCAQAA/////4AA8AYGBQ7YCAyMC9cIH9IIH6AEpAnRCCrUCCrQCCrQCCr48AIEBQ7YCw+MOZ0DnAvQCyPQCyPdFRiUW5dfkl+gVKRZ0RUv1BUviEbYJSuNQ4xLmAScCdEMItgIDfj4+PUGAA4RjFuPX4pfmFScWdENJ9QNJ4BG2B0jhUOES5AElAnRBBrdBw6IdpB8oFTRByrUByrQBzLwAgMJEdggJKQLiEbUDB3QDB343Q8d8AABCRHwAAEJEfAAAQkR2AwQiETwAwEJEfj4+OUHDoh2kH2gZNEHK9QHK9AHM/ACCAkR8AgAIiikH4hG1Awe3RMamDagOtETLtQTLvAAAQ1CAdglKaRZ1yU50iU5uCPRJT7UJT64cdQlQZAG1BAi+PjdDx3wAAEJEfAAAQkR8AABCRHYDBCIRPADAQkR+Pj45QcOiHaQeqA00Qco1Aco0Acw8AIDCRHYHiKIRoxPiE/43Q8d8AABCRHwAAEJEfAAAQkR2AwQiETwAwEJEfj4+OALEYBNAAD/yZo7qKwqABIAAAD/////5AAAAAAAAABpbXBvcnQgeyFyfSAjIHshcn0AAP/JmjuorCoADgAAAP/////kAAAAAAAAAF9sb2FkX3VubG9ja2VkAAAAAAAAAAAAAP/JmjtAmSoACAAAABSEKgBUAzQAVAc0AADaKQAsBzQAPLkzAKANNAAQ2ikAAAAAAAAAAAD/yZo7QJkqABIAAAAI5DMAELczAPS1MwA84DMAYOAzAKQHNAAICzQA1AM0AKgfKwDYuDMA+CkrAMwqKwDU7DMAENozAFQDNADE0DMA8Ac0AAzYMwD/yZo7JOMpAEkAAAD/////wToURRQAwg8/Qw8Aww4BRRQAww8CQzYDwxISQyUCwyQBQzYDwyUKQzIFwy8CQzYDwzEBQzIFwzIEQzYDwzZBFkUUAMUUCUUdAwAAAAAAAAAAAAAA/8maO0CZKgADAAAAROEzADQqKwBk4TMA/8maOyTjKQByAQAA/////4AA4AcLhHvQBx7lDxaQdJR7oE3RDzLUDzLwAAQJM90WIqA0pDvRFi/UFi/wAAEUNPAAARQ08AABFDSIQ+UMFY9Oik6YM6UN0Qwu1Awu0Awu3RMsqFTREzLUEzLQDDLlDR2YZNENI9QNI4BG8AoAGh6ARNQEFvACFwUj2CEnjQOMC5BElEnRCB7wAgwJEtgPE4x70A8i2BMX1BMy0BM63Rol0CY2uFS8WdAaR9EaR9QaR9AUR/ADABQ78AgAERWUC9cQJ9IQJ6gG0RAv1BAv0BAv+PjwAgUJEvACAw0V3RQXlEugBKQJ0BQq0BQq+N0TG/AAAQ0V8AABDRXwAAENFdgQFJAE8AMBDRX4+PjgDBH4+Pj1CgASFZQblx+SH6AUpBnRESvUESuIBtghJ40DjAuQRJRJ0Qge3QgY0BktqHSsebgkvCvRCEbUCEbQCEbgHSKIBNQIGtAIGviYVYgE1Aga0Agi0Agi0Agi0Agi4AsRgE0AAP/JmjuorCoAvwAAAP/////kAAAAAAAAAFJldHVybiBhIG5ldyBtb2R1bGUgb2JqZWN0LCBsb2FkZWQgYnkgdGhlIHNwZWMncyBsb2FkZXIuCgogICAgVGhlIG1vZHVsZSBpcyBub3QgYWRkZWQgdG8gaXRzIHBhcmVudC4KCiAgICBJZiBhIG1vZHVsZSBpcyBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLCB0aGF0IGV4aXN0aW5nIG1vZHVsZSBnZXRzCiAgICBjbG9iYmVyZWQuCgogICAgAAAAAAAAAAAA/8maO0CZKgACAAAAhBA0ABSEKgAAAAAAAAAAAP/JmjtAmSoAAwAAAATLMwDMKisAzA00AP/Jmjsk4ykADAAAAP////+VDzEDsQQ1B7gBNQcAAAAAAAAAAAAAAAD/yZo7QJkqAAEAAABE4TMA/8maOyTjKQCDAAAA/////4AA9RIAChyYRJxJ0Qkm1Akm8AABBSTwAAEFJN0PHZhk0Q8j1A8j8AMBBSTwAAEFJPAAAQUk8AABBSTxAAEFJPQAAQUk8AABBSTwAAEFJPAAAQUk8AABBSTwAAEFJPAAAQUk+Pj48AABBSTwAAEFJPAAAQUk8AABBSTwAAEFJPAAAQUkAP/JmjuorCoADwAAAP/////kAAAAAAAAAEJ1aWx0aW5JbXBvcnRlcgD/yZo7qKwqAJAAAAD/////5AAAAAAAAABNZXRhIHBhdGggaW1wb3J0IGZvciBidWlsdC1pbiBtb2R1bGVzLgoKICAgIEFsbCBtZXRob2RzIGFyZSBlaXRoZXIgY2xhc3Mgb3Igc3RhdGljIG1ldGhvZHMgdG8gYXZvaWQgdGhlIG5lZWQgdG8KICAgIGluc3RhbnRpYXRlIHRoZSBjbGFzcy4KCiAgICAAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAYnVpbHQtaW4AAAAA/8maO6isKgBzAAAA/////+QAAAAAAAAAUmV0dXJuIHJlcHIgZm9yIHRoZSBtb2R1bGUuCgogICAgICAgIFRoZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvZXMgdGhlIGpvYiBpdHNlbGYuCgogICAgICAgIAD/yZo7qKwqAFEAAAD/////5AAAAAAAAABCdWlsdGluSW1wb3J0ZXIubW9kdWxlX3JlcHIoKSBpcyBkZXByZWNhdGVkIGFuZCBzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTIAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAAA8bW9kdWxlIAAAAAD/yZo7qKwqAAIAAAD/////5AAAAAAAAAAgKAAA/8maO6isKgACAAAA/////+QAAAAAAAAAKT4AAP/JmjuorCoAGwAAAP/////kAAAAAAAAAEJ1aWx0aW5JbXBvcnRlci5tb2R1bGVfcmVwcgAAAAAAAAAAAP/JmjtAmSoABQAAAFwTNADoEzQAVBQ0AHgUNACUFDQAAAAAAAAAAAD/yZo7QJkqAAYAAAA84DMAYOAzAIDgMwBcFSsAZBI0AIz4MwAAAAAAAAAAAP/JmjtAmSoAAQAAAGThMwD/yZo7JOMpAEMAAAD/////gAD1DgAJEo8Oig7wAAEYO908TvEDAQlQAfQAAQlQAfAAAQlQAeAPSpgmnC/QD0rQD0qtf9QvRtAPStAPStAPStAISgD/yZo7qKwqAAoAAAD/////5AAAAAAAAABpc19idWlsdGluAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABmaW5kX3NwZWMAAAD/yZo7qKwqABkAAAD/////5AAAAAAAAABCdWlsdGluSW1wb3J0ZXIuZmluZF9zcGVjAAAA/8maO6isKgADAAAA/////+QAAAAAAAAAY2xzAP/JmjuorCoABgAAAP/////kAAAAAAAAAHRhcmdldAAAAAAAAAAAAAD/yZo7QJkqAAIAAAAUhCoAdP4zAAAAAAAAAAAA/8maO0CZKgAEAAAA3M4zAKQVNACs4DMAjPgzAAAAAAAAAAAA/8maO0CZKgAEAAAAIBY0ALjaMwAULCsAPBY0AP/Jmjsk4ykAPQAAAP////+AAOALD9ALG9gTF5A03QsPjz+KP5g40Qsk1Ask8AADCRjdEyOgSKhjuCO8K9ATRtETRtQTRtAMRuATF5A0AAAA/8maO6isKgCvAAAA/////+QAAAAAAAAARmluZCB0aGUgYnVpbHQtaW4gbW9kdWxlLgoKICAgICAgICBJZiAncGF0aCcgaXMgZXZlciBzcGVjaWZpZWQgdGhlbiB0aGUgc2VhcmNoIGlzIGNvbnNpZGVyZWQgYSBmYWlsdXJlLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCgogICAgICAgIAD/yZo7qKwqAGoAAAD/////5AAAAAAAAABCdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoKSBpcyBkZXByZWNhdGVkIGFuZCBzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTI7IHVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABmaW5kX21vZHVsZQD/yZo7qKwqABsAAAD/////5AAAAAAAAABCdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUAAAAAAAAAAAD/yZo7QJkqAAMAAAAQFzQA2Bc0ABSEKgAAAAAAAAAAAP/JmjtAmSoABQAAADzgMwBg4DMAgOAzAMgVNAAI5DMAAAAAAAAAAAD/yZo7QJkqAAQAAAAgFjQAuNozABQsKwBE4TMA/8maOyTjKQBJAAAA/////4AA9RIACRKPDooO8AABGFQB5Rcp8QUCCSv0AAIJK/AAAgkr8AYAEBOPfYp9mFigdNEPLNQPLIgE2B4i0B4uiHSMe4h7sETQCDgAAAD/yZo7qKwqABgAAAD/////5AAAAAAAAABDcmVhdGUgYSBidWlsdC1pbiBtb2R1bGUAAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAY3JlYXRlX2J1aWx0aW4AAP/JmjuorCoAHQAAAP/////kAAAAAAAAAEJ1aWx0aW5JbXBvcnRlci5jcmVhdGVfbW9kdWxlAAAAAAAAAAAAAAD/yZo7QJkqAAMAAAB8GTQAqNkzADy5MwAAAAAAAAAAAP/JmjtAmSoACAAAAMwqKwDYuDMA4NkzABDaMwA4xTMAwNUzANzOMwCwGTQA/8maOyTjKQBWAAAA/////4AA8AYADBCMOZ1D1Bw00As00As03RId0B491x5E0h5EwFTEWdEeT9QeT9gjJ6Q58AMBEy7xAAETLvQAARMu8AABDS7lDyitFNQpPLhk0Q9D1A9D0AhDAAD/yZo7qKwqABYAAAD/////5AAAAAAAAABFeGVjIGEgYnVpbHQtaW4gbW9kdWxlAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABleGVjX2J1aWx0aW4AAAAA/8maO6isKgAbAAAA/////+QAAAAAAAAAQnVpbHRpbkltcG9ydGVyLmV4ZWNfbW9kdWxlAAAAAAAAAAAA/8maO0CZKgACAAAAzBo0ABSEKgAAAAAAAAAAAP/JmjtAmSoAAwAAAMDVMwDczjMA/Bo0AP/Jmjsk4ykAHQAAAP////+AAPUGAAkipSTUIjOwVtEIPNQIPNAIPNAIPNAIPAAAAP/JmjuorCoAOQAAAP/////kAAAAAAAAAFJldHVybiBOb25lIGFzIGJ1aWx0LWluIG1vZHVsZXMgZG8gbm90IGhhdmUgY29kZSBvYmplY3RzLgAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGdldF9jb2RlAAAAAP/JmjuorCoAGAAAAP/////kAAAAAAAAAEJ1aWx0aW5JbXBvcnRlci5nZXRfY29kZQAAAAAAAAAAAAAAAP/JmjtAmSoAAgAAAMQbNAAUhCoAAAAAAAAAAAD/yZo7QJkqAAIAAAAgFjQAuNozAP/Jmjsk4ykACQAAAP////+AAPAIABAUiHQAAAD/yZo7qKwqADgAAAD/////5AAAAAAAAABSZXR1cm4gTm9uZSBhcyBidWlsdC1pbiBtb2R1bGVzIGRvIG5vdCBoYXZlIHNvdXJjZSBjb2RlLgAAAAD/yZo7qKwqABoAAAD/////5AAAAAAAAABCdWlsdGluSW1wb3J0ZXIuZ2V0X3NvdXJjZQAAAAAAAAAAAAD/yZo7QJkqAAIAAADEHDQAFIQqAP/JmjuorCoANAAAAP/////kAAAAAAAAAFJldHVybiBGYWxzZSBhcyBidWlsdC1pbiBtb2R1bGVzIGFyZSBuZXZlciBwYWNrYWdlcy4AAAAA/8maO6isKgAaAAAA/////+QAAAAAAAAAQnVpbHRpbkltcG9ydGVyLmlzX3BhY2thZ2UAAAAAAAAAAAAA/8maO0CZKgACAAAAaB00ABDaKQD/yZo7JOMpAAkAAAD/////gADwCAAQFYh1AAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAc3RhdGljbWV0aG9kAAAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAGNsYXNzbWV0aG9kAAAAAAAAAAAA/8maO0CZKgAOAAAAZBI0AIwSNAA4EzQAcEAwABSEKgBYQTAAPEIwADRDMABgRDAAEEUwAIxFMAAIRjAA2EwzAPRMMwAAAAAAAAAAAP/JmjtAmSoAEgAAAFwVKwDwFCsAtBcrAGANKwCM+DMAJB40AMTiMwBMHjQAyBU0AFwYNAAsAzQAVAM0ANDbMwAYHDQAcCYrALDsMwAY4TMAzAc0AP/Jmjsk4ykAOAEAAP////+AAIAAgACAAIAA8AQFBQjwAAUFCPAOAA8ZgEfgBRHwAggFSwHwAAgFSwHxAwAGEoRc8AIIBUsB8BQABhHwAgYFGPAABgUY8AAGBRjxAwAGEYRb8AIGBRjwEAAGEfACDAU58AAMBTnwAAwFOfEDAAYRhFvwAgwFOfAcAAYS8AIFBUQB8AAFBUQB8QMABhKEXPACBQVEAfAOAAYS8AICBT3wAAIFPfEDAAYShFzwAgIFPfAIAAYR2AUW8AICBRTwAAIFFPEDAAYX1AUW8QMABhGEW/AEAgUU8AgABhHYBRbwAgIFFPAAAgUU8QMABhfUBRbxAwAGEYRb8AQCBRTwCAAGEdgFFvACAgUV8AACBRXxAwAGF9QFFvEDAAYRhFvwBAIFFfAIABMekCvQHi/REjDUEjCAS4BLgEsAAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAARnJvemVuSW1wb3J0ZXIAAP/JmjuorCoAjgAAAP/////kAAAAAAAAAE1ldGEgcGF0aCBpbXBvcnQgZm9yIGZyb3plbiBtb2R1bGVzLgoKICAgIEFsbCBtZXRob2RzIGFyZSBlaXRoZXIgY2xhc3Mgb3Igc3RhdGljIG1ldGhvZHMgdG8gYXZvaWQgdGhlIG5lZWQgdG8KICAgIGluc3RhbnRpYXRlIHRoZSBjbGFzcy4KCiAgICAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGZyb3plbgAA/8maO6isKgBQAAAA/////+QAAAAAAAAARnJvemVuSW1wb3J0ZXIubW9kdWxlX3JlcHIoKSBpcyBkZXByZWNhdGVkIGFuZCBzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTIAAAAA/8maO6isKgAaAAAA/////+QAAAAAAAAARnJvemVuSW1wb3J0ZXIubW9kdWxlX3JlcHIAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAG0AAAAAAAAAAAAAAP/JmjtAmSoAAwAAAFwTNABUITQAUAU0AAAAAAAAAAAA/8maO0CZKgAHAAAAPOAzAGDgMwCA4DMAOMUzAFwVKwBkIDQAjPgzAAAAAAAAAAAA/8maO0CZKgABAAAA9CE0AP/Jmjsk4ykAQAAAAP////+AAPUOAAkSjw6KDvAAARg73TxO8QMBCVAB9AABCVAB8AABCVAB4A8j1w8q0g8qqDGsOrV+1DdN0Q9O1A9O0AhOAAAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9fb3JpZ25hbWVfXwAAAAD/yZo7qKwqACcAAAD/////5AAAAAAAAABzZWUgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KCkA/8maO6isKgAIAAAA/////+QAAAAAAAAAb3JpZ25hbWUAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAdmFycwAAAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABpc19mcm96ZW5fcGFja2FnZQAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAF9yZXNvbHZlX2ZpbGVuYW1lAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAaW1wbGVtZW50YXRpb24AAP/JmjuorCoABgAAAP/////kAAAAAAAAAGluc2VydAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAc29ydGVkAAD/yZo7qKwqAB0AAAD/////5AAAAAAAAABGcm96ZW5JbXBvcnRlci5fZml4X3VwX21vZHVsZQAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHN0YXRlAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAaXNwa2cAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABwa2dkaXIAAAAAAAAAAAAA/8maO0CZKgAJAAAAFIQqAMwiNAD0IjQALBcrANApNADk3CoA6A0rAGglKwA0IzQAAAAAAAAAAAD/yZo7QJkqABcAAADgGysAiOwzAFgjNADwBzQAELczANzOMwB4IzQAXBUrAKQjNADMKisAnLUzANi4MwDQIzQA1OwzAPgjNADoDSsAdLUzACwXKwBIJSsAGCQ0ADQjNABoJSsAyPAzAP/Jmjsk4ykAEgAAAP/////EKwdEMwDEMwpFAAPEPwFFAAMAAAAAAAAAAAAA/8maO0CZKgAKAAAAIBY0AGThMwBE4TMAcCQ0ADQjNACQJDQAaCUrALAkNAAsFysA6A0rAP/Jmjsk4ykACgAAAP////8gICAgICAgICAgAAD/yZo7JOMpAMMDAAD/////gADgDxWMf4gE2BAU1BAhiAXYCxCJPfUIABgcmEaRfJR81xcn0hcnqA64BNEXPdQXPYhI2BMb0AxG0AxG0B1G0QxG1AxG0AxG3RQbmEagStEUL9QUL4hF3RMX1xMp0hMpqCasL9ETOtQTOrhl0hND0BND0BNDwFXRE0PUE0PQE0PYHyLXHzTSHzSwWLh0vHnIJdEfUNQfUNEMHIhIkGbYIDilBKVT1CU30SA41CA42Bkh2Bkh8AUDIQ7xAAMhDvQAAyEOiETUDB3wCAAYHNQXNohI2A8U8AAFDTLYFx+gMpJ+kH6QfqB4kX6UfpB+2BMZ8AABEUYB2BQY1BQz1xQ60hQ6uDG4ZtEURdQURdAURfjgFx/QFyfQFyeoGNEXJ9QXJ9AXJ/UGABgfmHagetEXMtQXMtAMQ9AMQ7BGtE/RDEPUDEPQDEPYDxfwAAQNGfACAxEZ2CYukEaUT5BP+N0XJfAAAREZ8AABERnwAAERGdgUGJBE8AMBERn4+PjgDxTwAAMNNdgTGZQ/oGjSEy7QEy7YGyGcP6hi0hsw0Bsw0BswsCa0L9EbMNQbMNAbMNgUGpRP1xQq0hQqqDjRFDTUFDTQFDT58AgAGBzUFzaISNgUHKBE0BQoiEXlExmdJJh1mSucK9ETJtQTJqg6sHrQKkLSE0LQE0LQE0LARdETQtQTQtATQtgPFIx+8AAMDUUB8AYAFhnXFSrSFSqoNaw+uDS8OcBl0RVM1BVM8QMBEROQGJg24BcclH6oGNIXMdAXMdAXMbBFtE7ASNAzTdEXMdQXMdAXMdgTGfAAAxFJAdgbI6gGoHjSGy/QGy/QGy+wKLhG0DFD0Rsv1Bsv0Bsv0Bsv4BsjqGXQKD2oAqgCuBTSGz7QGz7QGz7ACNEbPtQbPtAbPtAbPuAbH5AI2BcclH7QFy3QFy2odax+0Rct1Bct0Bct2BcfqCXQJDmgQqBCsFTSFzrQFzrQFzq4SNEXOtQXOtAXOuAPF/AABA1IAd0XHph2oHrRFzLUFzLQEDLQEDLQEDLYFx2Uf6go0hcy0Bcy0BcysFa0X8Bo0DRP0Rcy1Bcy0Bcy0Bcy5RsioDaoOtEbNtQbNtAQR9AQR7gGvA/REEfUEEfQEEfYDxTwAAQNSAHdFx6YdqB60Rcy1Bcy0BAy0BAy0BAy2BcdlH+oKNIXMtAXMtAXMrBWtF/AaNA0T9EXMtQXMtAXMtAXMuUbIqA2qDrRGzbUGzbQEEfQEEe4BrwP0RBH1BBH0BBH2BMX1BMk0Agk0Agk0Agk0Agk0AgkAAAAAAAAAAAA/8maO0CZKgACAAAAaCUrADQjNAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfc3RkbGliX2RpcgD/yZo7qKwqAAUAAAD/////5AAAAAAAAAB3aW4zMgAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFwAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAvAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAPAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAC5fX2luaXRfXwAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9faW5pdF9fLnB5AP/JmjuorCoAAwAAAP/////kAAAAAAAAAC5weQD/yZo7qKwqAAQAAAD/////5AAAAAAAAABfU0VQAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAHBsYXRmb3JtAAAAAP/JmjuorCoAIAAAAP/////kAAAAAAAAAEZyb3plbkltcG9ydGVyLl9yZXNvbHZlX2ZpbGVuYW1lAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGFsaWFzAAAA/8maO6isKgADAAAA/////+QAAAAAAAAAc2VwAP/JmjuorCoABwAAAP/////kAAAAAAAAAHJlbGZpbGUAAAAAAAAAAAD/yZo7QJkqAA0AAAAUhCoA5Ck0ANhMMwAIKjQAKCo0AEQqNABgKjQA9NwqAHwqNAAQ2ikAtAYrAKAqNADEKjQAAAAAAAAAAAD/yZo7QJkqAAgAAACUJisA2LgzAOAqNAB0tTMAACs0AMjXMwBgLisA5Ck0AP/Jmjsk4ykADwAAAP////+cByQApCVBDAPBCwFBDAMAAAAAAAAAAAD/yZo7QJkqAAgAAAAgFjQAuNozAGArNACQJDQAgCs0AJwrNACwJDQAaCUrAP/Jmjsk4ykALwEAAP////+AAOAPF/AAAQkenXelc6hNuDTRH0DUH0DwAAEJHtgTHZA68AIDCUYB2BIVlCiIQ4hD+N0PHfAAAQlGAfAAAQlGAfAAAQlGAd0lKKRcsFfSJTzQJTyYVJhUwCPQDEWIQ5AjlCiQKJAo8AMBCUYB+Pj48AYADBSQddILHNALHNgPF9cPItIPIqAz0Q8n1A8n8AAFDR7YGyOgQaBCoEKcPJAI2Bcc8AABETbYIirQHzXQHzXQHzWQSPjgGB2QBdgSGtcSItISIqAzqAPREizUEiyIB9gLEPAABQk93RgbnA/QFTeoE9AVN6hn0BU30BU3iEbYGiDQFzKgI9AXMtAXMtAXMohIiEjgFRmIRt0aHZwv0Bc8qDPQFzywB9AXPNAXPNAXPIhI2A8XmBbQDx/QCB8A/8maO6isKgALAAAA/////+QAAAAAAAAAZmluZF9mcm96ZW4A/8maO6isKgAYAAAA/////+QAAAAAAAAARnJvemVuSW1wb3J0ZXIuZmluZF9zcGVjAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGluZm8AAAAAAAAAAAAAAAD/yZo7QJkqAAQAAAAUhCoAjEwzANApNADk3CoAAAAAAAAAAAD/yZo7QJkqAAwAAADA1TMA3M4zAMwtNACs4DMAjPgzAKQjNACctTMA2LgzANAjNACI7DMA1OwzAPgjNAAAAAAAAAAAAP/JmjtAmSoACwAAACAWNAC42jMAFCwrADwWNAAkLjQAZAgrAJAkNAA0IzQAROEzAGglKwCwJDQA/8maOyTjKQALAAAA/////yAgICAgICAgICAgAP/Jmjsk4ykAvAAAAP////+AAOUPKK0U1Ck5uDjRD0TUD0SIBNgLD4g82BMXkDTwGgAeItEIGogBiDWQKN0PH6AIqCPYJyqke9grMPAFAhAy8QACEDL0AAIQMogE8AYAHB/XGzDSGzCwGLg4wFXRG0vUG0vRCBiICJAm2Bw0nUSlE9QhM9EcNNQcNNgVHdgVHfAFAx0K8QADHQr0AAMdCogE1AgZ8AgADBLwAAEJPtgMENQMK9cMMtIMMrAxsGbRDD3UDD3QDD3YDxOICwAAAAD/yZo7qKwqAF0AAAD/////5AAAAAAAAABGaW5kIGEgZnJvemVuIG1vZHVsZS4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgoKICAgICAgICAAAAD/yZo7qKwqAGkAAAD/////5AAAAAAAAABGcm96ZW5JbXBvcnRlci5maW5kX21vZHVsZSgpIGlzIGRlcHJlY2F0ZWQgYW5kIHNsYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMjsgdXNlIGZpbmRfc3BlYygpIGluc3RlYWQAAAD/yZo7qKwqABoAAAD/////5AAAAAAAAABGcm96ZW5JbXBvcnRlci5maW5kX21vZHVsZQAAAAAAAAAAAAD/yZo7QJkqAAMAAADYLzQAUDA0ABSEKgAAAAAAAAAAAP/JmjtAmSoABQAAADzgMwBg4DMAgOAzANzOMwAk3TMAAAAAAAAAAAD/yZo7QJkqAAMAAAAgFjQAuNozABQsKwD/yZo7JOMpAEAAAAD/////gAD1DgAJEo8Oig7wAAEYVAHlFynxBQIJK/QAAgkr8AACCSv1BgAXG5dukm6gWNEWLtQWLtAPOIhziHOwRNAIOAAAAAD/yZo7qKwqABYAAAD/////5AAAAAAAAABTZXQgX19maWxlX18sIGlmIGFibGUuAAD/yZo7qKwqABwAAAD/////5AAAAAAAAABGcm96ZW5JbXBvcnRlci5jcmVhdGVfbW9kdWxlAAAAAAAAAAAAAAAA/8maO0CZKgABAAAAxDE0AAAAAAAAAAAA/8maO0CZKgAGAAAA9LgzAMwqKwCI7DMAaCUrAOgNKwB0tTMA/8maOyTjKQAMAAAA/////5YMLACsCjkDuAE5AwAAAAAAAAAAAAAAAP/JmjtAmSoAAwAAAEThMwBk4TMAaCUrAP/Jmjsk4ykAXgAAAP////+AAPUGABIdmFScWdERJ9QRJ4gG8AIGCSvYFxvUFyjUFzGISPAIABAY8AABDSvYIiqQBpQP+Pj1CQAQHvAAAQkR8AABCRHwAAEJEdgMEIhE8AMBCRH4+PjwCgAQFogNAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABnZXRfZnJvemVuX29iamVjdAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGV4ZWMAAAAA/8maO6isKgAaAAAA/////+QAAAAAAAAARnJvemVuSW1wb3J0ZXIuZXhlY19tb2R1bGUAAAAAAAAAAAAA/8maO0CZKgAHAAAA4BsrAMwqKwDA1TMA3M4zACAzNABMMzQA+AwrAAAAAAAAAAAA/8maO0CZKgAEAAAAZOEzAEThMwDMKisA0CIrAP/Jmjsk4ykAOgAAAP////+AAOAPFYx/iATYDxOMeYgE3Q8orRTUKT/AFNEPRtQPRogE3QgMiFSQNpQ/0Qgj1Agj0Agj0Agj0AgjAAD/yZo7qKwqAF8AAAD/////5AAAAAAAAABMb2FkIGEgZnJvemVuIG1vZHVsZS4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCgogICAgICAgIAD/yZo7qKwqABoAAAD/////5AAAAAAAAABGcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZQAAAAAAAAAAAAD/yZo7QJkqAAMAAABANDQAFIQqAOgNKwAAAAAAAAAAAP/JmjtAmSoACAAAABjhMwDczjMAzC00AMwiNABYIzQA8Ac0ACwXKwAsHysAAAAAAAAAAAD/yZo7QJkqAAcAAAAgFjQAuNozAGThMwAkLjQAZAgrAJAkNAA0IzQA/8maOyTjKQAHAAAA/////yAgICAgICAA/8maOyTjKQCKAAAA/////4AA9RAAEiOgM6gI0REx1BExiAbdDxPXDx/SDx+gCNEPKdQPKYgE2A8T0A8f0A8f0A8f2B0h0QgaiAGINZAo2B4miAbUCBvdCAyIVokMjAzXCBjSCBiYGqBU0Qgq1Agq0Agq2AsQ8AABCSHYHiCIRoxP2AgL1wga0ggamDbRCCLUCCLQCCLYDxWIDQAA/8maO6isKgAtAAAA/////+QAAAAAAAAAUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBmb3IgdGhlIGZyb3plbiBtb2R1bGUuAAAA/8maO6isKgAXAAAA/////+QAAAAAAAAARnJvemVuSW1wb3J0ZXIuZ2V0X2NvZGUAAAAAAAAAAAD/yZo7QJkqAAEAAAAkNjQAAAAAAAAAAAD/yZo7QJkqAAIAAADczjMAIDM0AP/Jmjsk4ykAGAAAAP////+AAPUIABAU1w8l0g8loGjRDy/UDy/QCC8AAAAA/8maO6isKgA2AAAA/////+QAAAAAAAAAUmV0dXJuIE5vbmUgYXMgZnJvemVuIG1vZHVsZXMgZG8gbm90IGhhdmUgc291cmNlIGNvZGUuAAD/yZo7qKwqABkAAAD/////5AAAAAAAAABGcm96ZW5JbXBvcnRlci5nZXRfc291cmNlAAAAAAAAAAAAAAD/yZo7QJkqAAIAAAD8NjQAFIQqAP/JmjuorCoALgAAAP/////kAAAAAAAAAFJldHVybiBUcnVlIGlmIHRoZSBmcm96ZW4gbW9kdWxlIGlzIGEgcGFja2FnZS4AAP/JmjuorCoAGQAAAP/////kAAAAAAAAAEZyb3plbkltcG9ydGVyLmlzX3BhY2thZ2UAAAAAAAAAAAAAAP/JmjtAmSoAAQAAAJw3NAAAAAAAAAAAAP/JmjtAmSoAAgAAANzOMwB4IzQAAAAAAAAAAAD/yZo7QJkqABMAAABkIDQAjCA0ADQhNAAISDAACEkwABSEKgAQ2ikAiE8wAJBRMABEUzAAOFQwAChVMAAcVjAAkFcwADxYMAC4WDAAhO0zANhMMwD0TDMAAAAAAAAAAAD/yZo7QJkqABMAAABcFSsA8BQrALQXKwBgDSsAjPgzACQeNADE4jMATB40ACwfKwCkIzQAyBU0AFwYNAAsAzQAVAM0AMwHNAB03jMAGBw0AHAmKwCw7DMA/8maOyTjKQCDAQAA/////4AAgACAAIAAgADwBAUFCPAABQUI8A4ADxeAR+AFEfACCAVPAfAACAVPAfEDAAYShFzwAggFTwHwFAAGEfACQgEFJfAAQgEFJfEDAAYRhFvwAkIBBSXwSAIABhHwAhYFIPAAFgUg8AAWBSDxAwAGEYRb8AIWBSDwMAAGEfACGwUU8AAbBRTwABsFFPEDAAYRhFvwAhsFFPA6AAYR8AIJBTnwAAkFOfAACQU58QMABhGEW/ACCQU58BYABhLwAgoFFvAACgUW8QMABhKEXPACCgUW8BgABhLwAgQFJPAABAUk8QMABhKEXPACBAUk8AwABhHwAhAFFvAAEAUW8QMABhGEW/ACEAUW8CQABhHYBRXwAgIFMPAAAgUw8QMABhbUBRXxAwAGEYRb8AQCBTDwCAAGEdgFFfACAgUU8AACBRTxAwAGFtQFFfEDAAYRhFvwBAIFFPAIAAYR2AUV8AICBTDwAAIFMPEDAAYW1AUV8QMABhGEW/AEAgUw8AACBTDwAAIFMAD/yZo7qKwqABIAAAD/////5AAAAAAAAABfSW1wb3J0TG9ja0NvbnRleHQAAP/JmjuorCoAJAAAAP/////kAAAAAAAAAENvbnRleHQgbWFuYWdlciBmb3IgdGhlIGltcG9ydCBsb2NrLgAAAAD/yZo7qKwqABgAAAD/////5AAAAAAAAABBY3F1aXJlIHRoZSBpbXBvcnQgbG9jay4AAAAA/8maO6isKgAcAAAA/////+QAAAAAAAAAX0ltcG9ydExvY2tDb250ZXh0Ll9fZW50ZXJfXwAAAAAAAAAAAAAAAP/JmjtAmSoAAgAAAAw7NAAUhCoAAAAAAAAAAAD/yZo7QJkqAAIAAADczjMA/M4zAP/Jmjsk4ykAGgAAAP////+AAOUIDNcIGdIIGdEIG9QIG9AIG9AIG9AIGwAA/8maO6isKgA8AAAA/////+QAAAAAAAAAUmVsZWFzZSB0aGUgaW1wb3J0IGxvY2sgcmVnYXJkbGVzcyBvZiBhbnkgcmFpc2VkIGV4Y2VwdGlvbnMuAAAAAP/JmjuorCoAGwAAAP/////kAAAAAAAAAF9JbXBvcnRMb2NrQ29udGV4dC5fX2V4aXRfXwD/yZo7qKwqAAgAAAD/////5AAAAAAAAABleGNfdHlwZQAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABleGNfdmFsdWUAAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABleGNfdHJhY2ViYWNrAAAAAAAAAAAAAAD/yZo7QJkqAAIAAADcOzQAFIQqAAAAAAAAAAAA/8maO0CZKgACAAAA3M4zAEzPMwAAAAAAAAAAAP/JmjtAmSoABAAAAPi7MwBoPDQAjDw0ALA8NAAAAAAAAAAAAP/JmjtAmSoABQAAAKA6NADMOjQAGFswAMRbMAAUhCoAAAAAAAAAAAD/yZo7QJkqAAYAAABcFSsA8BQrALQXKwBgDSsAgA0rAMQNKwD/yZo7JOMpADgAAAD/////gACAAIAAgACAAOAELtAELvAEAgUc8AACBRzwAAIFHPAIAgUc8AACBRzwAAIFHPAAAgUc8AACBRwAAAAA/8maO6isKgAyAAAA/////+QAAAAAAAAAUmVzb2x2ZSBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIHRvIGFuIGFic29sdXRlIG9uZS4AAP/JmjuorCoAMgAAAP/////kAAAAAAAAAGF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kIHRvcC1sZXZlbCBwYWNrYWdlAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAAB7fS57fQAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAHJzcGxpdAAA/8maO6isKgANAAAA/////+QAAAAAAAAAX3Jlc29sdmVfbmFtZQAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAHBhY2thZ2UA/8maO6isKgAFAAAA/////+QAAAAAAAAAbGV2ZWwAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABiaXRzAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGJhc2UAAAAAAAAAAAAAAAD/yZo7QJkqAAYAAADUPTQAtAYrAPTcKgAgPjQA5NwqAGw+NAAAAAAAAAAAAP/JmjtAmSoABAAAAIw+NADUKCsAENozADjFMwAAAAAAAAAAAP/JmjtAmSoABQAAAMwqKwDUPjQA9D40ABQ/NAA0PzQA/8maOyTjKQBgAAAA/////4AA4AsSjz6KPpgjmHWgcZl50Qsp1AspgETdBwqINIF5hHmQNdIHGNAHGN0OGdAaTtEOT9QOT9AIT9gLD5ABjDeARNgpLdALN4g3jz6KPpgkoATRCyXUCyXQCyWwNNAENwAAAAD/yZo7qKwqADUAAAD/////5AAAAAAAAAAuZmluZF9zcGVjKCkgbm90IGZvdW5kOyBmYWxsaW5nIGJhY2sgdG8gZmluZF9tb2R1bGUoKQAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAF9maW5kX3NwZWNfbGVnYWN5AAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAZmluZGVyAAAAAAAAAAAAAP/JmjtAmSoAAgAAABSEKgBAQDQAAAAAAAAAAAD/yZo7QJkqAAYAAAD0tTMAPOAzAGDgMwCkBzQAXBg0AKzgMwAAAAAAAAAAAP/JmjtAmSoABQAAALxANADMKisAFCwrADQqKwAI5DMA/8maOyTjKQBhAAAA/////4AA3Q4amDbRDiLUDiLwAAEMO/AAAQw78AABDDuAQ+UEDYdOgk6QM50N0QQm1AQm0AQm2A0T1w0f0g0foASgZNENK9QNK4BG2AcNgH7YDxOIdN0LG5hEoCbRCynUCynQBCkAAAD/yZo7qKwqABUAAAD/////5AAAAAAAAABGaW5kIGEgbW9kdWxlJ3Mgc3BlYy4AAAD/yZo7qKwqADUAAAD/////5AAAAAAAAABzeXMubWV0YV9wYXRoIGlzIE5vbmUsIFB5dGhvbiBpcyBsaWtlbHkgc2h1dHRpbmcgZG93bgAAAP/JmjuorCoAFgAAAP/////kAAAAAAAAAHN5cy5tZXRhX3BhdGggaXMgZW1wdHkAAP/JmjuorCoACQAAAP/////kAAAAAAAAAG1ldGFfcGF0aAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAF9maW5kX3NwZWMAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGlzX3JlbG9hZAAAAAAAAAAAAAAA/8maO0CZKgAEAAAAwEE0ABSEKgDwQTQAQEI0AAAAAAAAAAAA/8maO0CZKgAMAAAA2LgzAHBCNAAQ2jMAPOAzAGDgMwCkBzQA+CkrAKA6NADIFTQAdLUzAJBANADgGysA/8maOyTjKQBOAAAA/////8EgAUIzBcEiB0E3BMEpDkIzBcE3HUIkB8IUAUIzBcIhAkIzBcIjAUIkB8IkA0IzBcIzBEI3CcI6AUI3CcMjB0M0AsM0DEQFBcQEAUQFBQAAAAAAAAAAAAD/yZo7QJkqAAoAAADMKisAFCwrADwWNABwQjQAuEI0ALxANADIFTQAROEzAGThMwDgGysA/8maOyTjKQDZAQAA/////4AA5RATlA2ASdgHENAHGOUOGfAAARsq8QABDyv0AAEPK/AAAQkr8AYADBXwAAEFQAHdCBGPDooO0BcvtR3RCD/UCD/QCD/wCgARFZ0DnAvQECOASdgSG/AAHQUU8AAdBRSIBt0NH9ENIdQNIfAACAk18AAICTXwAgcNNdgcItQcLJAJ8AwAGCGQeaAUoHSoVtEXNNQXNJAEkAT49QsAFCLwAAMNHfAAAw0d8AADDR3dFyioFrAUsHTRFzzUFzyQBNgTF5A82BQc8A0ICTXwAAgJNfAACAk18QAICTX0AAgJNfAACAk18AAICTXwCgAUIJA88AUDDR34+PjwBwgJNfAACAk18AAICTXxAAgJNfQACAk18AAICTXwAAgJNfAACAk18AAICTXwAAgJNfAACAk1+Pj48AAICTXwAAgJNfAACAk18AAICTXwEgAMENALG+ATHPAADw0coBStE6wb0CE00CE03RkcnBugVNQZKpAG8AILESjYHyWcf5BI8A4AGCDQFyfYHyOYC5gLmAvgHyeYD5gPmA/49RMAGCbwAAQRIPAABBEg8AAEESDwCAAcIJBLkEuQS5BLkEvwCQQRIPj4+PAWABgckAuQC5AL8CMADBzwJgAQFIh0AAAA/8maO6isKgAcAAAA/////+QAAAAAAAAAVmVyaWZ5IGFyZ3VtZW50cyBhcmUgInNhbmUiLgAAAAD/yZo7qKwqAB8AAAD/////5AAAAAAAAABtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9AP/JmjuorCoAEgAAAP/////kAAAAAAAAAGxldmVsIG11c3QgYmUgPj0gMAAA/8maO6isKgAfAAAA/////+QAAAAAAAAAX19wYWNrYWdlX18gbm90IHNldCB0byBhIHN0cmluZwD/yZo7qKwqADYAAAD/////5AAAAAAAAABhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IHdpdGggbm8ga25vd24gcGFyZW50IHBhY2thZ2UAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAEVtcHR5IG1vZHVsZSBuYW1lAAAA/8maO6isKgADAAAA/////+QAAAAAAAAAc3RyAP/JmjuorCoACQAAAP/////kAAAAAAAAAFR5cGVFcnJvcgAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAFZhbHVlRXJyb3IAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9zYW5pdHlfY2hlY2sAAAAAAAAAAAAAAP/JmjtAmSoACAAAAMxFNAAERjQA5NwqADxGNABoRjQAoEY0APBGNAAUhCoAAAAAAAAAAAD/yZo7QJkqAAcAAACAJysAHEc0ADhHNAA4xTMAnLUzAFxHNAAQ2jMAAAAAAAAAAAD/yZo7QJkqAAMAAADMKisA1D40APQ+NAD/yZo7JOMpAMYAAAD/////gADlCxWQZJ1D0Qsg1Asg8AABBU4B3Q4X0Bg51xhA0hhAxRTAZMEaxBrRGEzUGEzRDk3UDk3QCE3YBwyIcYJ5gHndDhjQGS3RDi7UDi7QCC7YBwyIcYJ5gHndDxmYJ6Uz0Q8n1A8n8AAECSndEhvQHD3REj7UEj7QDD7YERjwAAIJKd0SHfAAAR8o8QABEyn0AAETKfAAAQ0p4AsP8AABBS6QRZhRkkqQSt0OGNAZLNEOLdQOLdAILfADAQUu8AABBS6QSpBKAAD/yZo7qKwqABAAAAD/////5AAAAAAAAABObyBtb2R1bGUgbmFtZWQgAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHshcn0AAAAA/8maO6isKgATAAAA/////+QAAAAAAAAATW9kdWxlTm90Rm91bmRFcnJvcgD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfRVJSX01TRwAAAAD/yZo7qKwqABsAAAD/////5AAAAAAAAABfZ2V0X21vZHVsZV9ub3RfZm91bmRfZXJyb3IAAAAAAAAAAAD/yZo7QJkqAAIAAAAUhCoAPLkzAAAAAAAAAAAA/8maO0CZKgADAAAAUEk0AHxJNAA4xTMA/8maOyTjKQAhAAAA/////4AA3QsenXiff5p/qHTRHzTUHzS4NNALQNELQNQLQNAEQAAAAP/JmjuorCoAFwAAAP/////kAAAAAAAAADsgeyFyfSBpcyBub3QgYSBwYWNrYWdlAP/JmjuorCoAGwAAAP/////kAAAAAAAAAENhbm5vdCBzZXQgYW4gYXR0cmlidXRlIG9uIAD/yZo7qKwqABIAAAD/////5AAAAAAAAAAgZm9yIGNoaWxkIG1vZHVsZSAAAP/JmjuorCoAFwAAAP/////kAAAAAAAAAF9maW5kX2FuZF9sb2FkX3VubG9ja2VkAP/JmjuorCoABwAAAP/////kAAAAAAAAAGltcG9ydF8A/8maO6isKgALAAAA/////+QAAAAAAAAAcGFyZW50X3NwZWMA/8maO6isKgANAAAA/////+QAAAAAAAAAcGFyZW50X21vZHVsZQAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGNoaWxkAAAAAAAAAAAAAAD/yZo7QJkqAAgAAAAUhCoAtAYrAOTcKgBESjQAPLkzAATdKgB0SjQAqEo0AAAAAAAAAAAA/8maO0CZKgAUAAAAcPQzANi4MwD4KSsAwNUzACwXKwB0tTMAfEk0ADjFMwBQSTQA4BsrAJRCNACgSTQAwCArAGghKwDMDTQA8Ac0ADC3MwA84DMAYOAzAKQHNAD/yZo7JOMpACoAAAD/////wTMHQTsAwTs7QjYDxBkPRQQAxQQeRSIDxToRRgwAxgwyRwEDxwABRwEDAAAAAAAAAAAAAP/JmjtAmSoACgAAAMwqKwAESzQAFCwrANQrKwAkSzQASEs0ADQqKwBwSzQAROEzAGThMwD/yZo7JOMpAAoCAAD/////gADYCw+ARNgNEY9fil+YU9ENIdQNIaAh1A0kgEbYEhaAS9gHDfAADQUo2AsRnROcG9ALJNALJN0MJaBnqHbRDDbUDDbQDDbgCw+VM5Q70Ase0Ase3RMWlDuYdNQTJNAMJN0YG5wLoEbUGCuIDfACBAlAAdgTINQTKYhEiET43Q8d8AACCUAB8AACCUAB8AACCUAB3RMb0B430RM31xI/0hI/wATAZtESTdQSTYhD3RIloGOwBNASNdESNdQSNbg00Aw/8AUCCUAB+Pj48AYAFyTUFiyIC9gQFJcPkg+gA9EQJNQQJKBR1BAniAXdCxWQZJhE0Qsh1AshgETYBwuAfN0OKagk0Q4v1A4v0Agv4AsW8AADCUAB8AYADRjUDDHXDDjSDDi4FdEMP9QMP9AMP/ACBAk83RUjoETRFSnUFSmIRuAPGvAAAQ082BAb1BA11xA50hA50RA71BA70BA7+PjwAwAQG/AAAQ082BAb1BA11xA50hA50RA71BA70BA70BA78AMBDTz4+PjgBw3wAAcFL+UYG5wLoEbUGCuIDfACBAkv3QwTkE2gNagm0Qwx1Awx0Awx0Awx+N0PHfAAAgkv8AACCS/wAAIJL9gSVbAG0BJV0BJVyEXQElXQElWIQ90MFY9Oik6YM6UN0Qwu1Awu0Awu0Awu0Awu8AUCCS/4+PjwBgAMEoBNAAD/yZo7qKwqABkAAAD/////5AAAAAAAAABGaW5kIGFuZCBsb2FkIHRoZSBtb2R1bGUuAAAA/8maO6isKgAoAAAA/////+QAAAAAAAAAaW1wb3J0IG9mIHt9IGhhbHRlZDsgTm9uZSBpbiBzeXMubW9kdWxlcwAAAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABfTkVFRFNfTE9BRElORwAAAAAAAAAAAAD/yZo7QJkqAAcAAAC8TjQA4BsrABSEKgCoHysAENopAPBONAA8uTMAAAAAAAAAAAD/yZo7QJkqAAoAAADYuDMA+CkrAFQmKwA0TzQAlCYrAATLMwDUSjQA/B8rADjFMwBQSTQA/8maOyTjKQASAAAA/////8EePkI2A8I2BEI6B8I9AUI6BwAAAAAAAAAAAAD/yZo7QJkqAAQAAADMKisABEs0AGThMwA42DMA/8maOyTjKQBBAQAA/////4AA9QoADhGMW49fil+YVKU+0Q0y1A0ygEbYCA6VLtAIINAIIN0ID5UHmAagCqhE0RAx1BAxsD/ARdEIStQISvADAAkh5Q0foATRDSXUDSXwAAMJPvAAAwk+3RUYlFuXX5JfoFStPtEVOtQVOohG2A8VnR7QDyfQDyfdFy6odLBX0Rc91Bc98AcDCT7wAAMJPvAAAwk+8AADCT7xAAMJPvQAAwk+8AADCT7wAAMJPuAPJ/AFAwk+8AADCT7wAAMJPvEAAwk+9AADCT7wAAMJPvAAAwk+8AADCT7wAAMJPvAAAwk+8AADCT74+PjwAAMJPvAAAwk+8AADCT7wAAMJPvUSAAkcmETRCCHUCCHQCCHgBw2AfvACARQp3ykvqhawBKkcrBzwAwAJEOUOIaAnsATQDjXRDjXUDjXQCDXgCxGATQAAAP/JmjuorCoAMgEAAP/////kAAAAAAAAAEltcG9ydCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgYmFzZWQgb24gaXRzIG5hbWUsIHRoZSBwYWNrYWdlIHRoZSBjYWxsIGlzCiAgICBiZWluZyBtYWRlIGZyb20sIGFuZCB0aGUgbGV2ZWwgYWRqdXN0bWVudC4KCiAgICBUaGlzIGZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiBmdW5jdGlvbmFsaXR5CiAgICBiZXR3ZWVuIGltcG9ydF9tb2R1bGUgYW5kIF9faW1wb3J0X18uIFRoaXMgaW5jbHVkZXMgc2V0dGluZyBfX3BhY2thZ2VfXyBpZgogICAgdGhlIGxvYWRlciBkaWQgbm90LgoKICAgIAAA/8maO6isKgALAAAA/////+QAAAAAAAAAX2djZF9pbXBvcnQAAAAAAAAAAAD/yZo7QJkqAAIAAABkUTQA5NwqAAAAAAAAAAAA/8maO0CZKgAEAAAAgEc0AKw+NAAEHysAsFI0AP/Jmjsk4ykAQAAAAP////+AAPUSAAUSkCSYB6AV0QQn1AQn0AQn2AcMiHGCeYB53Q8cmFSgN6hF0Q8y1A8yiATdCxmYJKUL0Qss1Ass0AQsAAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAHJlY3Vyc2l2ZQAAAP/JmjuorCoA7gAAAP/////kAAAAAAAAAEZpZ3VyZSBvdXQgd2hhdCBfX2ltcG9ydF9fIHNob3VsZCByZXR1cm4uCgogICAgVGhlIGltcG9ydF8gcGFyYW1ldGVyIGlzIGEgY2FsbGFibGUgd2hpY2ggdGFrZXMgdGhlIG5hbWUgb2YgbW9kdWxlIHRvCiAgICBpbXBvcnQuIEl0IGlzIHJlcXVpcmVkIHRvIGRlY291cGxlIHRoZSBmdW5jdGlvbiBmcm9tIGFzc3VtaW5nIGltcG9ydGxpYidzCiAgICBpbXBvcnQgaW1wbGVtZW50YXRpb24gaXMgZGVzaXJlZC4KCiAgICAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAC5fX2FsbF9fAAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAGBgZnJvbSBsaXN0JycAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABJdGVtIGluIAAAAAD/yZo7qKwqABIAAAD/////5AAAAAAAAAAgbXVzdCBiZSBzdHIsIG5vdCAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACoAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABmcm9tbGlzdAAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB4AAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAd2hlcmUAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABmcm9tX25hbWUAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABleGMAAAAAAAAAAAD/yZo7QJkqAAsAAACMUzQAlFQ0ALhUNADgVDQABFU0ADBVNACoCSsAANopAMBMMwBsPjQAFIQqAAAAAAAAAAAA/8maO0CZKgAQAAAAgCcrABxHNABcFSsAOEc0AJy1MwAQtzMAfB8rAKgJKwA4xTMAwNUzAFBJNADMKisA2LgzAPgpKwBUJisANE80AP/Jmjsk4ykAHgAAAP/////CLhBCPwLCPwpEBAXDCTBDPwXDPgFDPwXDPwVEBAUAAAAAAAAAAAAA/8maO0CZKgAIAAAAZOEzAExVNAAESzQAaFM0AHBVNACMVTQArFU0ANBVNAD/yZo7JOMpAFsBAAD/////gADwFAAOFvAAFwUW8QAXBRaIAd0PGZghnVPRDyHUDyHwABYJFtgPGPAAAw0o2BgenA+oKtEYNJAFkAXgGCeQBd0SG/AAAR02oHXwAAEdNvAAAR023SMnqAGhN6Q31CMz8AMBHTbwAAEdNvEAARM39AABEzfwAAENN+ANDpAjiliIWNgTHPAAAg0xpReoFrAZ0SE71CE78AACDTHdECCgFqgWrB64F9grL/ADAREx8QABETH0AAERMfAAAREx+OURGJgWoBHRESPUESPwAAsJFtgYH58Omg6gdqR/uAHRGDrUGDqISfACCQ0W3RApqCewOdEQPdQQPdAQPdAQPfjdEybwAAcNFvAABw0W8AAHDRbwCAAVGJRIoAnSFCnQFCndFBeUS5dPkk+gSa1+0RQ+1BQ+0BRK2BQckEiQSJBIkEjYEBX4+Pj48A8HDRb4+PjxCQsJFvAYAAwSgE0A/8maO6isKgCnAAAA/////+QAAAAAAAAAQ2FsY3VsYXRlIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlLgoKICAgIF9fcGFja2FnZV9fIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlZmluZWQgb3IgY291bGQgYmUgc2V0IHRvIE5vbmUKICAgIHRvIHJlcHJlc2VudCB0aGF0IGl0cyBwcm9wZXIgdmFsdWUgaXMgdW5rbm93bi4KCiAgICAA/8maO6isKgAgAAAA/////+QAAAAAAAAAX19wYWNrYWdlX18gIT0gX19zcGVjX18ucGFyZW50ICgAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAICE9IAAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAApAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAc3RhY2tsZXZlbAAA/8maO6isKgBZAAAA/////+QAAAAAAAAAY2FuJ3QgcmVzb2x2ZSBwYWNrYWdlIGZyb20gX19zcGVjX18gb3IgX19wYWNrYWdlX18sIGZhbGxpbmcgYmFjayBvbiBfX25hbWVfXyBhbmQgX19wYXRoX18AAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABfY2FsY19fX3BhY2thZ2VfXwAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGdsb2JhbHMAAAAAAAAAAAD/yZo7QJkqAA4AAABQWDQA4BYrAOAbKwAUhCoAEFk0AExZNABsWTQAFN0qABBcNACsWTQAXBUrACwXKwC0BisA5NwqAAAAAAAAAAAA/8maO0CZKgAGAAAAVCYrANQrKwA84DMAYOAzAKQHNABw9DMAAAAAAAAAAAD/yZo7QJkqAAMAAABMWjQA1D40AEThMwD/yZo7JOMpAPIAAAD/////gADwDgAPFo9rimuYLdEOKNQOKIBH2AsSjzuKO5B60Qsi1AsigETYBw7QBxrYCw/QCxugB6g0rDvSIDbQIDbdDBWPTopO8AABHD/YHybwAwEcP/AAARw/2C4yrGvwAwEcP/AAARw/8AABHD/lGyiwUfAFAA0b8QACDTj0AAINOPAAAg048AYAEBeIDtgJDdAJGdgPE4x70Aga5QgRjw6KDvAAARg/5RcksBHwBQAJF/EAAgk09AACCTTwAAIJNPAGABMamCrUEiWIB9gLFZhX0Ask0Ask2BYd1xYo0hYoqBPRFi3UFi2oYdQWMIhH2AsSgE4AAAAAAAAAAAAA/8maO0CZKgABAAAAiFk0AP/JmjuorCoA1wEAAP/////kAAAAAAAAAEltcG9ydCBhIG1vZHVsZS4KCiAgICBUaGUgJ2dsb2JhbHMnIGFyZ3VtZW50IGlzIHVzZWQgdG8gaW5mZXIgd2hlcmUgdGhlIGltcG9ydCBpcyBvY2N1cnJpbmcgZnJvbQogICAgdG8gaGFuZGxlIHJlbGF0aXZlIGltcG9ydHMuIFRoZSAnbG9jYWxzJyBhcmd1bWVudCBpcyBpZ25vcmVkLiBUaGUKICAgICdmcm9tbGlzdCcgYXJndW1lbnQgc3BlY2lmaWVzIHdoYXQgc2hvdWxkIGV4aXN0IGFzIGF0dHJpYnV0ZXMgb24gdGhlIG1vZHVsZQogICAgYmVpbmcgaW1wb3J0ZWQgKGUuZy4gYGBmcm9tIG1vZHVsZSBpbXBvcnQgPGZyb21saXN0PmBgKS4gIFRoZSAnbGV2ZWwnCiAgICBhcmd1bWVudCByZXByZXNlbnRzIHRoZSBwYWNrYWdlIGxvY2F0aW9uIHRvIGltcG9ydCBmcm9tIGluIGEgcmVsYXRpdmUKICAgIGltcG9ydCAoZS5nLiBgYGZyb20gLi5wa2cgaW1wb3J0IG1vZGBgIHdvdWxkIGhhdmUgYSAnbGV2ZWwnIG9mIDIpLgoKICAgIAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABwYXJ0aXRpb24AAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABsb2NhbHMAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGdsb2JhbHNfAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGN1dF9vZmYAAAAAAAAAAAD/yZo7QJkqAAUAAAAgXDQA5NwqABSEKgC0BisALBcrAAAAAAAAAAAA/8maO0CZKgAJAAAAsFI0ACBaNAAQXjQA1CgrANi4MwD4KSsAXBUrABC3MwB8HysAAAAAAAAAAAD/yZo7QJkqAAkAAADMKisATFo0ADReNABMVTQA9D40AGThMwBUXjQA1D40AHheNAD/yZo7JOMpAAkAAAD/////ICAgICAgICAgAAAA/8maOyTjKQAHAQAA/////4AA8BYACA2QAYJ6gHrdERyYVNERItQRIogGiAbgHiXQHjGQN5A3sHKICN0SI6BI0RIt1BItiAfdERyYVKA3qEXRETLUETKIBtgLE/AAEQUW8AYADBGQQYo6iDrdEx6YdJ9+mn6oY9EfMtQfMrAx1B810RM21BM20Aw22BEV8AAICU8B2BMZiE31CAAXGpgkkWmUaaUjoGSnbqJusFPRJjnUJjm4IdQmPNEiPdQiPdEWPYhH9QYAFBeUO5h2nH/QL0y1A7BGtE/RMETUMETAV9EwTNAvTNQfTdQTTtAMTt0JEJAWmBrRCSTUCSTwAAMFFt0PH6AGqAi1K9EPPtQPPtAIPuAPFYgNAP/JmjuorCoAGQAAAP/////kAAAAAAAAAG5vIGJ1aWx0LWluIG1vZHVsZSBuYW1lZCAAAAD/yZo7qKwqABIAAAD/////5AAAAAAAAABfYnVpbHRpbl9mcm9tX25hbWUAAAAAAAAAAAAA/8maO0CZKgACAAAAFIQqAGRgNAAAAAAAAAAAAP/JmjtAmSoABAAAAGQSNADIFTQAENozAMwNNAAAAAAAAAAAAP/JmjtAmSoAAgAAAMwqKwBE4TMA/8maOyTjKQA8AAAA/////4AA3Qsa1wsk0gskoFTRCyrUCyqARNgHC4B83Q4Z0Bo1uATRGjzRDj3UDj3QCD3dCxmYJNELH9QLH9AEHwAAAAD/yZo7qKwqAPoAAAD/////5AAAAAAAAABTZXR1cCBpbXBvcnRsaWIgYnkgaW1wb3J0aW5nIG5lZWRlZCBidWlsdC1pbiBtb2R1bGVzIGFuZCBpbmplY3RpbmcgdGhlbQogICAgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KCiAgICBBcyBzeXMgaXMgbmVlZGVkIGZvciBzeXMubW9kdWxlcyBhY2Nlc3MgYW5kIF9pbXAgaXMgbmVlZGVkIHRvIGxvYWQgYnVpbHQtaW4KICAgIG1vZHVsZXMsIHRob3NlIHR3byBtb2R1bGVzIG11c3QgYmUgZXhwbGljaXRseSBwYXNzZWQgaW4uCgogICAgAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABfc2V0dXAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAHN5c19tb2R1bGUAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9pbXBfbW9kdWxlAP/JmjuorCoACwAAAP/////kAAAAAAAAAG1vZHVsZV90eXBlAP/JmjuorCoACwAAAP/////kAAAAAAAAAHNlbGZfbW9kdWxlAP/JmjuorCoADAAAAP/////kAAAAAAAAAGJ1aWx0aW5fbmFtZQAAAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABidWlsdGluX21vZHVsZQAAAAAAAAAAAAD/yZo7QJkqAAMAAABwYTQAdGU0ABSEKgAAAAAAAAAAAP/JmjtAmSoAEAAAANzOMwDYuDMAnLUzAPgpKwCkJysAgCcrAODZMwBkEjQAJN0zAGQgNABc+zMA8P4zACwfKwBcFSsAmGA0ADC3MwAAAAAAAAAAAP/JmjtAmSoACgAAAKRiNADIYjQA7GI0AMwqKwBk4TMACOQzAEThMwAQYzQANGM0AFxjNAD/yZo7JOMpACQBAAD/////gADwEgAMF4BE2AoUgEP1BgATF5VzkSmUKYBL3RgbnAvXGCnSGCnRGCvUGCvwAAsFLvAACwUuiQyIBIhm3QsVkGaYa9ELKtQLKvAACgku2A8TlXPUFy/QDy/QDy/dGSiQBpAG3REVlx6SHqAE0REl1BEl8AADDRndGSeQBpAG4BAY3RMkoFaoVtETNNQTNIhE3QwemHSgVtEMLNQMLNAMLNgPFZ0e0A8n0A8n2BAW1xAl0hAloGbREC3UEC3QEC349QYAExaUK51o1BIngEvYGDzwAAUFO/AABQU7iAzYCxedc5x70Asq0Asq3R0vsAzRHT3UHT2ITohO5R0gnFuoHNQdNohO3QgPkAuYXKg+0Qg61Ag60Ag60Ag68AsFBTvwAAUFOwAAAAAAAAAAAAAAAP/JmjtAmSoAAwAAAOC6MwA84DMA6NAzAP/JmjuorCoAMAAAAP/////kAAAAAAAAAEluc3RhbGwgaW1wb3J0ZXJzIGZvciBidWlsdGluIGFuZCBmcm96ZW4gbW9kdWxlcwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABfaW5zdGFsbAAAAAAAAAAAAAAAAP/JmjtAmSoAAgAAAIxlNAAUhCoAAAAAAAAAAAD/yZo7QJkqAAYAAACEYjQA2LgzAHBCNABoISsAZBI0AGQgNAAAAAAAAAAAAP/JmjtAmSoAAgAAAKRiNADIYjQA/8maOyTjKQBEAAAA/////4AA5QQKiDqQe9EEI9QEI9AEI+UEB4RN1wQY0gQYnR/RBCnUBCnQBCndBAeETdcEGNIEGJ0e0QQo1AQo0AQo0AQo0AQoAAAAAP/JmjuorCoAOQAAAP/////kAAAAAAAAAEluc3RhbGwgaW1wb3J0ZXJzIHRoYXQgcmVxdWlyZSBleHRlcm5hbCBmaWxlc3lzdGVtIGFjY2VzcwAAAP/JmjuorCoAGgAAAP/////kAAAAAAAAAF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsAAD/yZo7qKwqABsAAAD/////5AAAAAAAAABfaW5zdGFsbF9leHRlcm5hbF9pbXBvcnRlcnMAAAAAAAAAAAD/yZo7QJkqAAMAAAC4ZjQA5NwqABSEKgAAAAAAAAAAAP/JmjtAmSoABgAAAAxnNAC08jMA2GU0ANi4MwD4KSsAXBUrAAAAAAAAAAAA/8maO0CZKgABAAAADGc0AP/Jmjsk4ykANwAAAP////+AAPAGAAUm0AQl0AQl0AQl2Bo00AQX2AQe1wQn0gQnrQOsC7VI1Cg90QQ+1AQ+0AQ+0AQ+0AQ+AP/JmjuorCoADwAAAP/////kAAAAAAAAAF9FUlJfTVNHX1BSRUZJWAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABvYmplY3QAAP/JmjuorCoAXgEAAP/////kAAAAAAAAAENvcmUgaW1wbGVtZW50YXRpb24gb2YgcGF0aC1iYXNlZCBpbXBvcnQuCgpUaGlzIG1vZHVsZSBpcyBOT1QgbWVhbnQgdG8gYmUgZGlyZWN0bHkgaW1wb3J0ZWQhIEl0IGhhcyBiZWVuIGRlc2lnbmVkIHN1Y2gKdGhhdCBpdCBjYW4gYmUgYm9vdHN0cmFwcGVkIGludG8gUHl0aG9uIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIEFzCnN1Y2ggaXQgcmVxdWlyZXMgdGhlIGluamVjdGlvbiBvZiBzcGVjaWZpYyBtb2R1bGVzIGFuZCBhdHRyaWJ1dGVzIGluIG9yZGVyIHRvCndvcmsuIE9uZSBzaG91bGQgdXNlIGltcG9ydGxpYiBhcyB0aGUgcHVibGljLWZhY2luZyB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLgoKAAD/yZo7qKwqACYAAAD/////5AAAAAAAAAA8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsPgAA/8maO6isKgACAAAA/////+QAAAAAAAAALjAAAAAAAAAAAAAA/8maO0CZKgACAAAA9NwqABSEKgAAAAAAAAAAAP/JmjtAmSoAAQAAANQoKwAAAAAAAAAAAP/JmjtAmSoAAgAAACBqNACAKzQA/8maOyTjKQAsAAAA/////+gA6ACAANAKNNAKNJhTjTOIc4k4jDiQcYo90Ao00Ao00Ao00Ao00Ao00Ao0AAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAADoAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABzAAAAAAAAAAAAAAD/yZo7QJkqAAEAAADMajQAAAAAAAAAAAD/yZo7QJkqAAIAAAAgajQA6Go0AP/Jmjsk4ykAHgAAAP////+AANAXOdAXOdAXOaBBmAeYQZgHmAfQFznQFznQFzkAAP/JmjuorCoAAwAAAP/////kAAAAAAAAAHdpbgD/yZo7qKwqAAYAAAD/////5AAAAAAAAABjeWd3aW4AAP/JmjuorCoABgAAAP/////kAAAAAAAAAGRhcndpbgAA/8maO6isKgAMAAAA/////+QAAAAAAAAAUFlUSE9OQ0FTRU9LAAAAAP/JmjuorCoAXgAAAP/////kAAAAAAAAAFRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkgYW5kIGlnbm9yZSBlbnZpcm9ubWVudCBmbGFncyBhcmUgbm90IHNldC4AAP/JmjuorCoAEgAAAP/////kAAAAAAAAAGlnbm9yZV9lbnZpcm9ubWVudAAA/8maO6isKgADAAAA/////+QAAAAAAAAAX29zAP/JmjuorCoABwAAAP/////kAAAAAAAAAGVudmlyb24A/8maO6isKgALAAAA/////+QAAAAAAAAAX3JlbGF4X2Nhc2UA/8maO6isKgAlAAAA/////+QAAAAAAAAAX21ha2VfcmVsYXhfY2FzZS48bG9jYWxzPi5fcmVsYXhfY2FzZQAAAP/JmjuorCoAAwAAAP/////kAAAAAAAAAGtleQAAAAAAAAAAAP/JmjtAmSoAAQAAAOxrNAAAAAAAAAAAAP/JmjtAmSoABQAAANi4MwCI1zMAZGw0AJBsNACsbDQAAAAAAAAAAAD/yZo7QJkqAAEAAAAwbTQA/8maOyTjKQAdAAAA//////iAAOUXGpR51Bcz0BMz0BNKuAO9c7x70DhK0AxKAAAA/8maO6isKgA1AAAA/////+QAAAAAAAAAVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4AAAAAAAAAAAAAAP/JmjtAmSoAAgAAANRtNAAQ2ikA/8maOyTjKQAHAAAA/////4AA4BMYkDUA/8maO6isKgAbAAAA/////+QAAAAAAAAAX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TAP/JmjuorCoAIwAAAP/////kAAAAAAAAAF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNU19TVFJfS0VZAP/JmjuorCoAEAAAAP/////kAAAAAAAAAF9tYWtlX3JlbGF4X2Nhc2UAAAAAAAAAAAAAAAD/yZo7QJkqAAUAAAAUhCoAxGs0AARwNADYeTAAkHowAAAAAAAAAAAA/8maO0CZKgAFAAAA2LgzAAArNADI1zMAWG40AIxuNAAAAAAAAAAAAP/JmjtAmSoAAgAAAMxsNAAwbTQA/8maOyTjKQACAAAA/////yBAAAD/yZo7JOMpAHwAAAD/////+IAA3QcKhHzXBx7SBx7VHzrRBzvUBzvwAAwFGd0LDow81wsi0gsi1SNG0QtH1AtH8AADCSLYEiCIQ4hD4BIhiEPwBAIJSwHwAAIJSwHwAAIJSwHwAAIJSwHwAAIJSwHwAAIJSwHwCAIJGfAAAgkZ8AACCRnwBgAMF9AEFgAAAAD/yZo7JOMpAAwAAAD/////UFlUSE9OQ0FTRU9LAAAAAP/JmjuorCoAKgAAAP/////kAAAAAAAAAENvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLgAA/8maO6isKgADAAAA/////+QAAAAAAAAAaW50AP/JmjuorCoACAAAAP/////kAAAAAAAAAHRvX2J5dGVzAAAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAF9wYWNrX3VpbnQzMgAAAAAAAAAAAAAAAP/JmjtAmSoABAAAACRwNABccTQAJN0qAFQpKwAAAAAAAAAAAP/JmjtAmSoAAgAAAGhwNACEcDQAAAAAAAAAAAD/yZo7QJkqAAEAAABwVTQA/8maOyTjKQAjAAAA/////4AA5QwPkAGJRoxGkFrRDB/XCynSCymoIahY0Qs21As20AQ2AP/JmjucYSoAAgAAAP///z8DAAAA/8maO6isKgAvAAAA/////+QAAAAAAAAAQ29udmVydCA0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gdG8gYW4gaW50ZWdlci4A/8maO6isKgAKAAAA/////+QAAAAAAAAAZnJvbV9ieXRlcwAA/8maO6isKgAOAAAA/////+QAAAAAAAAAX3VucGFja191aW50MzIAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGRhdGEAAAAAAAAAAAAAAAD/yZo7QJkqAAMAAABwcTQAJN0qAFQpKwAAAAAAAAAAAP/JmjtAmSoAAwAAANQoKwBocDQAuHE0AAAAAAAAAAAA/8maO0CZKgABAAAABHI0AP/Jmjsk4ykAKQAAAP////+AAOULDoh0iTmMOZgBij6IPog+iD7dCw6PPoo+mCSgCNELKdQLKdAEKQAAAP/JmjuorCoALwAAAP/////kAAAAAAAAAENvbnZlcnQgMiBieXRlcyBpbiBsaXR0bGUtZW5kaWFuIHRvIGFuIGludGVnZXIuAP/JmjuorCoADgAAAP/////kAAAAAAAAAF91bnBhY2tfdWludDE2AAAAAAAAAAAAAP/JmjtAmSoAAwAAALhyNAAE3SoAVCkrAP/JmjuorCoAHwAAAP/////kAAAAAAAAAFJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmpvaW4oKS4A/8maO6isKgAGAAAA/////+QAAAAAAAAAcnN0cmlwAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABwYXRoX3NlcGFyYXRvcnMA/8maO6isKgAeAAAA/////+QAAAAAAAAAX3BhdGhfam9pbi48bG9jYWxzPi48bGlzdGNvbXA+AAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABwAAAAAAAAAAAAAAD/yZo7QJkqAAIAAACAczQAoHM0AAAAAAAAAAAA/8maO0CZKgACAAAAIGo0AAB0NAD/yZo7JOMpACkAAAD/////gADQDz3QDz3QDz2oYbgx0A89kAGXCJIInR/RECnUECnQDz3QDz3QDz0AAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABtYXAA/8maO6isKgAPAAAA/////+QAAAAAAAAAX3BhdGhfc3BsaXRyb290AP/JmjuorCoADgAAAP/////kAAAAAAAAAHBhdGhfc2VwX3R1cGxlAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABlbmRzd2l0aAAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABwYXRoX3NlcAAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABjYXNlZm9sZAAAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfcGF0aF9qb2luAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABwYXRoX3BhcnRzAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAAByb290AAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAG5ld19yb290AAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHRhaWwAAAAAAAAAAAAAAAD/yZo7QJkqAAYAAABIczQA9AYrAPTcKgDk3CoAzGo0AKh+MAAAAAAAAAAAAP/JmjtAmSoADQAAANQoKwCQdDQAkGw0AKx0NADI1zMA1HQ0APx0NACAczQAoHM0ACB1NABEdTQAaCErAOQnKwAAAAAAAAAAAP/JmjtAmSoABQAAAIx1NACwdTQAFCwrANB1NAD0dTQA/8maOyTjKQBnAQAA/////4AA4A8Z8AABCRbYExWQMt0LDoh6iT+MP5hh0gsf0Asf2BMdmGGUPdAMINgPEYgE2A8RiATdHiGlI9QiNbB60R5C1B5C8AAOCSLwAA4JIolOiEiQZNgPF9cPItIPIqU+0Q8y1A8y8AANDSKwaNc2R9I2R80O0TZX1DZX8AANDSLYFx+Xf5J/pX/RFzfUFzfQFz+4NJAE3RggoDSZD9AXKJAEkATYERnXESLSESKgM9ERJ9QRJ/AACg0i2BMXlz2SPZE/lD+gaNcmN9ImN9EmOdQmOdITOdATOfAGABwkkETYHCCYNpBEkETgFBiXS5JLoATRFCXUFCXQFCXQFCXgFx/QFyegNJAE2BAUlwuSC5hE0RAh1BAh0BAh0BAh2A890A89sDTQDz3RDz3UDz2IBN0LDoh0iTmMOZgBij6IPqAkoHGkJ4g+4BMXnSiRP9AMItgPE5Vol22SbaBE0RYp1BYp0Q8p0AgpAP/JmjuorCoABAAAAP/////kAAAAAAAAAHBhcnQAAAAAAAAAAAAAAAD/yZo7QJkqAAIAAAAgajQAKHg0AP/Jmjsk4ykAOAAAAP////+AAPAAAR4+8AABHj7wAAEePtgiJrgE8AMBHj6YZJ9rmmutL9EeOtQeOvAAAR4+8AABHj7wAAEePgAAAAAAAAAAAAAAAP/JmjtAmSoAAgAAAEhzNACcgjAAAAAAAAAAAAD/yZo7QJkqAAIAAAAgdTQA5CcrAAAAAAAAAAAA/8maO0CZKgABAAAAjHU0AP/Jmjsk4ykANAAAAP////+AAOUPF499in3wAAEePvAAAR4+2Co08AMBHj7xAAEePvQAAR4+8QABED/0AAEQP/AAAQk/AAAAAP/JmjuorCoAIAAAAP/////kAAAAAAAAAFJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0KCkuAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHJmaW5kAAAA/8maO6isKgAeAAAA/////+QAAAAAAAAAX3BhdGhfc3BsaXQuPGxvY2Fscz4uPGdlbmV4cHI+AAAAAAAAAAAAAP/JmjtAmSoAAQAAAIR5NAAAAAAAAAAAAP/JmjtAmSoAAwAAACBqNAAAdDQAFCwrAP/Jmjsk4ykALQAAAP/////46ADoAIAA0Asz0AszmGGIRI9KikqQcYlNjE3QCzPQCzPQCzPQCzPQCzPQCzMAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABtYXgA/8maO6isKgALAAAA/////+QAAAAAAAAAX3BhdGhfc3BsaXQA/8maO6isKgABAAAA/////+QAAAAAAAAAaQAAAAAAAAAAAAAA/8maO0CZKgAGAAAASHk0ABiEMADk3CoA9AYrABSEKgD03CoAAAAAAAAAAAD/yZo7QJkqAAIAAABUejQAoHM0AAAAAAAAAAAA/8maO0CZKgACAAAAFCwrAJR6NAD/yZo7JOMpAFYAAAD/////+IAA5QgL0Asz0Asz0Asz0AszpT/QCzPRCzPUCzPRCDPUCDOAQdgHCIgxgnWAddgPEZA0iHiID9gLD5ACkBGQAow4kFSYIZhhmSWYJpgmlFzQCyHQBCEAAP/JmjuorCoAfgAAAP/////kAAAAAAAAAFN0YXQgdGhlIHBhdGguCgogICAgTWFkZSBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIG1ha2UgaXQgZWFzaWVyIHRvIG92ZXJyaWRlIGluIGV4cGVyaW1lbnRzCiAgICAoZS5nLiBjYWNoZSBzdGF0IHJlc3VsdHMpLgoKICAgIAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAc3RhdAAAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfcGF0aF9zdGF0AAAAAAAAAAAAAP/JmjtAmSoAAQAAAHx7NAAAAAAAAAAAAP/JmjtAmSoAAgAAAJBsNAAUfDQAAAAAAAAAAAD/yZo7QJkqAAEAAAAULCsA/8maOyTjKQASAAAA/////4AA9Q4ADA+MOJBEiT6MPtAEGQAA/8maO6isKgAxAAAA/////+QAAAAAAAAAVGVzdCB3aGV0aGVyIHRoZSBwYXRoIGlzIHRoZSBzcGVjaWZpZWQgbW9kZSB0eXBlLgAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAE9TRXJyb3IA/8maO6isKgAHAAAA/////+QAAAAAAAAAc3RfbW9kZQD/yZo7qKwqABIAAAD/////5AAAAAAAAABfcGF0aF9pc19tb2RlX3R5cGUAAP/JmjuorCoACQAAAP/////kAAAAAAAAAHN0YXRfaW5mbwAAAAAAAAAAAAAA/8maO0CZKgADAAAAyHw0ABDaKQCAfjQAAAAAAAAAAAD/yZo7QJkqAAMAAAA0fDQAFH00ADR9NAD/yZo7JOMpAAwAAAD/////gg8SAJIKIAOfASADAAAAAAAAAAAAAAAA/8maO0CZKgADAAAAFCwrANgpKwCAfTQA/8maOyTjKQBLAAAA/////4AA8AQDBRXdFB6YdNEUJNQUJIgJiAn43QsS8AABBRXwAAEFFfAAAQUV2A8UiHWIdfADAQUV+Pj44AwV1AwdoAjRDCioVNILMdAEMQD/yZo7nGEqAAEAAAAA8AAA/8maO6isKgAfAAAA/////+QAAAAAAAAAUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNmaWxlLgD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfcGF0aF9pc2ZpbGUAAAAAAAAAAAAAAAD/yZo7QJkqAAIAAACQfjQAyKUzAAAAAAAAAAAA/8maO0CZKgABAAAAVH00AP/Jmjsk4ykAEgAAAP////+AAOULHZhkoEjRCy3UCy3QBC0AAP/JmjuorCoAHgAAAP/////kAAAAAAAAAFJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzZGlyLgAA/8maO6isKgAGAAAA/////+QAAAAAAAAAZ2V0Y3dkAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfcGF0aF9pc2RpcgAAAAAAAAAAAP/JmjtAmSoAAgAAAEh/NACYpTMAAAAAAAAAAAD/yZo7QJkqAAMAAACQbDQAgH80AFR9NAD/yZo7JOMpACUAAAD/////gADgCw/wAAEFHN0PEox6iXyMfIgE3QsdmGSgSNELLdQLLdAELQAAAP/JmjuorCoAHgAAAP/////kAAAAAAAAAFJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzYWJzLgAA/8maO6isKgACAAAA/////+QAAAAAAAAAXFwAAP/JmjuorCoACwAAAP/////kAAAAAAAAAF9wYXRoX2lzYWJzAAAAAAAAAAAA/8maO0CZKgAHAAAAOIA0ABDaKQDk3CoARCo0ACgqNAD03CoAcIA0AAAAAAAAAAAA/8maO0CZKgAGAAAAkGw0AKx0NABgLisA1CgrAMjXMwD8dDQAAAAAAAAAAAD/yZo7QJkqAAIAAAAULCsAsHU0AP/Jmjsk4ykAZgAAAP////+AAOAPE/AAAQkZ2BMYkDXdDxLUDyKgNNEPKNQPKKgR1A8r1w8z0g8zsEO4FNEPPtQPPogE3Q8SkDSJeYx5mDGKfdAPUaAkpy+iL7Am0SI51CI50CJQuFS/XbpdyDTRPVDUPVDQCFEAAAAAAAAAAAAA/8maO0CZKgABAAAAOIA0AAAAAAAAAAAA/8maO0CZKgACAAAAyNczAKBzNAD/yZo7JOMpABQAAAD/////gADgDxOPf4p/nX/RDy/UDy/QCC8AAAAA/8maO6isKgCiAAAA/////+QAAAAAAAAAQmVzdC1lZmZvcnQgZnVuY3Rpb24gdG8gd3JpdGUgZGF0YSB0byBhIHBhdGggYXRvbWljYWxseS4KICAgIEJlIHByZXBhcmVkIHRvIGhhbmRsZSBhIEZpbGVFeGlzdHNFcnJvciBpZiBjb25jdXJyZW50IHdyaXRpbmcgb2YgdGhlCiAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuAAD/yZo7qKwqAAIAAAD/////5AAAAAAAAAB3YgAA/8maO6isKgAGAAAA/////+QAAAAAAAAAT19FWENMAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABPX0NSRUFUAP/JmjuorCoACAAAAP/////kAAAAAAAAAE9fV1JPTkxZAAAAAP/JmjuorCoAAwAAAP/////kAAAAAAAAAF9pbwD/yZo7qKwqAAYAAAD/////5AAAAAAAAABGaWxlSU8AAP/JmjuorCoABgAAAP/////kAAAAAAAAAHVubGluawAA/8maO6isKgANAAAA/////+QAAAAAAAAAX3dyaXRlX2F0b21pYwAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAHBhdGhfdG1wAAAAAP/JmjuorCoAAgAAAP/////kAAAAAAAAAGZkAAAAAAAAAAAAAP/JmjtAmSoABQAAAPyBNABsPjQApFYzALiCNAAUhCoAAAAAAAAAAAD/yZo7QJkqAA0AAAA4xTMAWMUzAJBsNAC0KysA1II0APSCNAAUgzQAOIM0AFSDNAD4MSsAYC4rABR9NAB0gzQA/8maOyTjKQBUAAAA/////8EiFUI7AME3FkIZA8INDEI7AMIZBEIdB8IdA0I7AMIgAUIdB8IhGEI7AMI7CkMtA8MGFEMbAsMaAUMtA8MbCkMoBcMlAkMtA8MnAUMoBcMoBUMtAwAAAAAAAAAAAAAAAP/JmjtAmSoABgAAABQsKwAEcjQA2CkrALyDNADggzQAaNczAP/Jmjsk4ykANgEAAP////+AAPAKABAXj36KfphkpUKgdKFIpEjRDy3UDy2ASN0JDIwYkCjdEhWUKp1znHvREiqtU6xc0RI5uDTAJbk88QMBCkkB9AABCkkBgELwBAsFDvUGAA4RjFqYAphE0Q0h1A0h8AABCR2gVNgMEI9KikqQdNEMHNQMHNAMHPADAQkd8AABCR3wAAEJHfEAAQkd9AABCR3wAAEJHfAAAQkd8AABCR3wAAEJHfAAAQkd8AABCR34+PjwAAEJHfAAAQkd8AABCR3wAAEJHeUIC4wLkEiYZNEII9QII9AII9AII9AII/jdCxLwAAUFDvAABQUO8AAFBQ7wAgMJEd0MD4xKkHjRDCDUDCDQDCDQDCD43Q8W8AABCRHwAAEJEfAAAQkR2AwQiETwAwEJEfj4+OAIDfALBQUO+Pj4AAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABfX3B5Y2FjaGVfXwD/yZo7qKwqAAQAAAD/////5AAAAAAAAABvcHQtAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAC5weXcAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAALnB5YwAAAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABvcHRpbWl6YXRpb24AAAAA/8maO6isKgD+AgAA/////+QAAAAAAAAAR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljIGZpbGUuCgogICAgVGhlIC5weSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8gdGhlCiAgICAucHljIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4KCiAgICBUaGUgJ29wdGltaXphdGlvbicgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBwcmVzdW1lZCBvcHRpbWl6YXRpb24gbGV2ZWwgb2YKICAgIHRoZSBieXRlY29kZSBmaWxlLiBJZiAnb3B0aW1pemF0aW9uJyBpcyBub3QgTm9uZSwgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbgogICAgb2YgdGhlIGFyZ3VtZW50IGlzIHRha2VuIGFuZCB2ZXJpZmllZCB0byBiZSBhbHBoYW51bWVyaWMgKGVsc2UgVmFsdWVFcnJvcgogICAgaXMgcmFpc2VkKS4KCiAgICBUaGUgZGVidWdfb3ZlcnJpZGUgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQuIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLAogICAgYSBUcnVlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgJ29wdGltaXphdGlvbicgdG8gdGhlIGVtcHR5IHN0cmluZwogICAgd2hpbGUgYSBGYWxzZSB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgJ29wdGltaXphdGlvbicgdG8gJzEnLgoKICAgIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgoKICAgIAAA/8maO6isKgBGAAAA/////+QAAAAAAAAAdGhlIGRlYnVnX292ZXJyaWRlIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkOyB1c2UgJ29wdGltaXphdGlvbicgaW5zdGVhZAAA/8maO6isKgAyAAAA/////+QAAAAAAAAAZGVidWdfb3ZlcnJpZGUgb3Igb3B0aW1pemF0aW9uIG11c3QgYmUgc2V0IHRvIE5vbmUAAP/JmjuorCoAJAAAAP/////kAAAAAAAAAHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZQAAAAD/yZo7qKwqABgAAAD/////5AAAAAAAAAB7IXJ9IGlzIG5vdCBhbHBoYW51bWVyaWMAAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAe30ue317fQD/yZo7qKwqAAYAAAD/////5AAAAAAAAABmc3BhdGgAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGNhY2hlX3RhZwAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAG9wdGltaXplAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGlzYWxudW0A/8maO6isKgAEAAAA/////+QAAAAAAAAAX09QVAAAAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABCWVRFQ09ERV9TVUZGSVhFUwAAAP/JmjuorCoADgAAAP/////kAAAAAAAAAHB5Y2FjaGVfcHJlZml4AAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABsc3RyaXAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9QWUNBQ0hFAAAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAGNhY2hlX2Zyb21fc291cmNlAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAZGVidWdfb3ZlcnJpZGUAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGhlYWQAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAcmVzdAAAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAAB0YWcA/8maO6isKgAPAAAA/////+QAAAAAAAAAYWxtb3N0X2ZpbGVuYW1lAAAAAAAAAAAA/8maO0CZKgANAAAA9IY0ABSEKgAMijQAbIo0APQGKwD03CoAtAYrALiKNADk3CoA+Io0ACyLNADMajQABN0qAAAAAAAAAAAA/8maO0CZKgAcAAAAPOAzAGDgMwCA4DMAOEc0AJBsNABMizQAcHo0AHD0MwDYuDMA0CM0AGyLNADg8jMA5CcrAIjXMwCQizQAHEc0ALSLNABcRzQAOMUzANSLNAD0izQAIIw0AIyANABodTQAgH80AKBzNABIjDQAaIw0AAAAAAAAAAAA/8maO0CZKgAMAAAAFCwrALiMNADMhjQAONgzAOCMNAD0dTQAND80AIArNAAAjTQAII00ADyNNABoJSsA/8maOyTjKQAMAAAA/////yAgICAgICAgICAgIAAAAAD/yZo7JOMpAPkBAAD/////gADwJAAIFtAHId0IEYwO8AABGDDdMUPxAwEJRQH0AAEJRQHwAAEJRQHgCxfQCyPYFkqIR90SG5hH0RIk1BIk0Awk2B0r0BcykHKQcrARiAzdCw6MOpBk0Qsb1AsbgETdERyYVNERItQRIoFKgESIJNgWGpdvkm+gY9EWKtQWKoFPgESII4h03QoN1Aoc1AomgEPYBwqAe90OIdAiSNEO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X0JZVEVTX0tFWQAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9fY29kZV9fAAAAAP/JmjuorCoAFwAAAP/////kAAAAAAAAAERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTAP/JmjuorCoAGwAAAP/////kAAAAAAAAAE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwD/yZo7qKwqABAAAAD/////5AAAAAAAAABfTmFtZXNwYWNlTG9hZGVyAAAAAP/JmjuorCoAUAIAAP/////kAAAAAAAAAHppcGltcG9ydCBwcm92aWRlcyBzdXBwb3J0IGZvciBpbXBvcnRpbmcgUHl0aG9uIG1vZHVsZXMgZnJvbSBaaXAgYXJjaGl2ZXMuCgpUaGlzIG1vZHVsZSBleHBvcnRzIHRocmVlIG9iamVjdHM6Ci0gemlwaW1wb3J0ZXI6IGEgY2xhc3M7IGl0cyBjb25zdHJ1Y3RvciB0YWtlcyBhIHBhdGggdG8gYSBaaXAgYXJjaGl2ZS4KLSBaaXBJbXBvcnRFcnJvcjogZXhjZXB0aW9uIHJhaXNlZCBieSB6aXBpbXBvcnRlciBvYmplY3RzLiBJdCdzIGEKICBzdWJjbGFzcyBvZiBJbXBvcnRFcnJvciwgc28gaXQgY2FuIGJlIGNhdWdodCBhcyBJbXBvcnRFcnJvciwgdG9vLgotIF96aXBfZGlyZWN0b3J5X2NhY2hlOiBhIGRpY3QsIG1hcHBpbmcgYXJjaGl2ZSBwYXRocyB0byB6aXAgZGlyZWN0b3J5CiAgaW5mbyBkaWN0cywgYXMgdXNlZCBpbiB6aXBpbXBvcnRlci5fZmlsZXMuCgpJdCBpcyB1c3VhbGx5IG5vdCBuZWVkZWQgdG8gdXNlIHRoZSB6aXBpbXBvcnQgbW9kdWxlIGV4cGxpY2l0bHk7IGl0IGlzCnVzZWQgYnkgdGhlIGJ1aWx0aW4gaW1wb3J0IG1lY2hhbmlzbSBmb3Igc3lzLnBhdGggaXRlbXMgdGhhdCBhcmUgcGF0aHMKdG8gWmlwIGFyY2hpdmVzLgoAAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAWmlwSW1wb3J0RXJyb3IAAP/JmjuorCoAEgAAAP/////kAAAAAAAAADxmcm96ZW4gemlwaW1wb3J0PgAAAAAA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ZF9sb2FkZXIoZnVsbG5hbWUsIHBhdGg9Tm9uZSkgLT4gc2VsZiwgc3RyIG9yIE5vbmUuCgogICAgICAgIFNlYXJjaCBmb3IgYSBtb2R1bGUgc3BlY2lmaWVkIGJ5ICdmdWxsbmFtZScuICdmdWxsbmFtZScgbXVzdCBiZSB0aGUKICAgICAgICBmdWxseSBxdWFsaWZpZWQgKGRvdHRlZCkgbW9kdWxlIG5hbWUuIEl0IHJldHVybnMgdGhlIHppcGltcG9ydGVyCiAgICAgICAgaW5zdGFuY2UgaXRzZWxmIGlmIHRoZSBtb2R1bGUgd2FzIGZvdW5kLCBhIHN0cmluZyBjb250YWluaW5nIHRoZQogICAgICAgIGZ1bGwgcGF0aCBuYW1lIGlmIGl0J3MgcG9zc2libHkgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UsCiAgICAgICAgb3IgTm9uZSBvdGhlcndpc2UuIFRoZSBvcHRpb25hbCAncGF0aCcgYXJndW1lbnQgaXMgaWdub3JlZCAtLSBpdCdzCiAgICAgICAgdGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgaW1wb3J0ZXIgcHJvdG9jb2wuCgogICAgICAgIERlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuMTAuIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgogICAgICAgIAD/yZo7qKwqAGYAAAD/////5AAAAAAAAAB6aXBpbXBvcnRlci5maW5kX2xvYWRlcigpIGlzIGRlcHJlY2F0ZWQgYW5kIHNsYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMjsgdXNlIGZpbmRfc3BlYygpIGluc3RlYWQAAP/JmjuorCoAEAAAAP/////kAAAAAAAAAF9nZXRfbW9kdWxlX2luZm8AAAAA/8maO6isKgAQAAAA/////+QAAAAAAAAAX2dldF9tb2R1bGVfcGF0aAAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfaXNfZGlyAP/JmjuorCoAFwAAAP/////kAAAAAAAAAHppcGltcG9ydGVyLmZpbmRfbG9hZGVyAP/JmjuorCoAAgAAAP/////kAAAAAAAAAG1pAAD/yZo7qKwqAAcAAAD/////5AAA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IGEgWmlwIGZpbGU6IAAAAAD/yZo7qKwqABIAAAD/////5AAAAAAAAABjb3JydXB0IFppcCBmaWxlOiAAAP/JmjuorCoAHAAAAP/////kAAAAAAAAAGJhZCBjZW50cmFsIGRpcmVjdG9yeSBzaXplOiAAAAAA/8maO6isKgAeAAAA/////+QAAAAAAAAAYmFkIGNlbnRyYWwgZGlyZWN0b3J5IG9mZnNldDogAAD/yZo7qKwqACYAAAD/////5AAAAAAAAABiYWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXQ6IAAA/8maO6isKgAbAAAA/////+QAAAAAAAAARU9GIHJlYWQgd2hlcmUgbm90IGV4cGVjdGVkAP/JmjuorCoAGQAAAP/////kAAAAAAAAAGJhZCBsb2NhbCBoZWFkZXIgb2Zmc2V0OiAAAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABhc2NpaQAAAP/JmjuorCoAIQAAAP/////kAAAAAAAAAHppcGltcG9ydDogZm91bmQge30gbmFtZXMgaW4geyFyfQAAAP/JmjuorCoAFAAAAP/////kAAAAAAAAAEVORF9DRU5UUkFMX0RJUl9TSVpFAAAAAP/JmjuorCoAEgAAAP/////kAAAAAAAAAFNUUklOR19FTkRfQVJDSElWRQAA/8maO6isKgAPAAAA/////+QAAAAAAAAATUFYX0NPTU1FTlRfTEVOAP/JmjuorCoAEgAAAP/////kAAAAAAAAAFVuaWNvZGVEZWNvZGVFcnJvcgAA/8maO6isKgAJAAAA/////+QAAAAAAAAAdHJhbnNsYXRlAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAY3A0MzdfdGFibGUA/8maO6isKgACAAAA/////+QAAAAAAAAAZnAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAHN0YXJ0X29mZnNldAAAAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABoZWFkZXJfcG9zaXRpb24A/8maO6isKgAJAAAA/////+QAAAAAAAAAZmlsZV9zaXplAAAA/8maO6isKgARAAAA/////+QAAAAAAAAAbWF4X2NvbW1lbnRfc3RhcnQAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABwb3MA/8maO6isKgALAAAA/////+QAAAAAAAAAaGVhZGVyX3NpemUA/8maO6isKgANAAAA/////+QAAAAAAAAAaGVhZGVyX29mZnNldAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGFyY19vZmZzZXQAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGNvbXByZXNzAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHRpbWUAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAZGF0ZQAAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABjcmMA/8maO6isKgAJAAAA/////+QAAAAAAAAAZGF0YV9zaXplAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAbmFtZV9zaXplAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAZXh0cmFfc2l6ZQAA/8maO6isKgAMAAAA/////+QAAAAAAAAAY29tbWVudF9zaXplAAAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAGZpbGVfb2Zmc2V0AP/JmjuorCoAAQAAAP/////kAAAAAAAAAHQAAAAAAAAAAAAAAP/JmjtAmSoAIwAAABSEKgDYfTUAlHw0AATdKgAIfjUAJN0qAOTcKgA4fjUAZH41AKTdKgDk3SoAJN4qAJB+NQDIfjUAAH81AADaKQDE3yoAQH81AGyONQBk3SoAhN0qAMTdKgBk3ioApN4qAMTeKgDk3ioABN8qAITfKgB0fzUACKYzAKh/NQC0KCsARCo0APTcKgDIfzUAAAAAAAAAAAD/yZo7QJkqABoAAAA4gzQApO00ABR9NADMUzUAYDArAOQuKwAEgDUAJC0rANQoKwA0gDUAVHo0AGCANQCEeTQA3HE0AHyoNAAAczQAMCMrAIiANQC0gDUA2IA1AGAuKwAgdTQAtPIzAGh1NACUHisADNgzAP/Jmjsk4ykA5QAAAP////+CFBcAlx82A7sVWQgDwRJBCkIdAsIcAVghAsIdH0I8BcI8QQNYIQLEACpEKwLEKgFYIQLEKx9FCgXFCiNYIQLFLilGGALGFwFYIQLGGB9GNwXGN0QUWCECywwVSyICyyEBWCECyyIfTAEFzAFGEVghAtITFVIpAtIoAVghAtIpH1MIBdMIKlghAtMzQQBUNALUMwFYIQLU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AAwAAAD/////5AAAAAAAAABCT01fVVRGMTZfQkUAAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAQk9NX1VURjMyAAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAQk9NX1VURjMyX0xFAAAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAEJPTV9VVEYzMl9CRQAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABDb2RlY0luZm8AAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABDb2RlYwAAAP/JmjuorCoAEgAAAP/////kAAAAAAAAAEluY3JlbWVudGFsRW5jb2RlcgAA/8maO6isKgASAAAA/////+QAAAAAAAAASW5jcmVtZW50YWxEZWNvZGVyAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABTdHJlYW1SZWFkZXIAAAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAU3RyZWFtV3JpdGVyAAAAAP/JmjuorCoAEgAAAP/////kAAAAAAAAAFN0cmVhbVJlYWRlcldyaXRlcgAA/8maO6isKgANAAAA/////+QAAAAAAAAAU3RyZWFtUmVjb2RlcgAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGdldGVuY29kZXIAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGdldGRlY29kZXIAAP/JmjuorCoAFQAAAP/////kAAAAAAAAAGdldGluY3JlbWVudGFsZW5jb2RlcgAAAP/JmjuorCoAFQAAAP/////kAAAAAAAAAGdldGluY3JlbWVudGFsZGVjb2RlcgAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGdldHJlYWRlcgAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGdldHdyaXRlcgAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGl0ZXJlbmNvZGUAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGl0ZXJkZWNvZGUAAP/JmjuorCoADQAAAP/////kAAAAAAAAAHN0cmljdF9lcnJvcnMAAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABpZ25vcmVfZXJyb3JzAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAcmVwbGFjZV9lcnJvcnMA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ICAgICAgIENIQVJBQ1RFUiBmb3IgdGhlIGJ1aWx0aW4gVW5pY29kZSBjb2RlY3Mgb24KICAgICAgICAgICAgICAgICAgICBkZWNvZGluZyBhbmQgJz8nIG9uIGVuY29kaW5nLgogICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyAtIHJlcGxhY2Ugd2l0aCBwcml2YXRlIGNvZGUgcG9pbnRzIFUrRENubi4KICAgICAgICAgJ3htbGNoYXJyZWZyZXBsYWNlJyAtIFJlcGxhY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgWE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgcmVmZXJlbmNlIChvbmx5IGZvciBlbmNvZGluZykuCiAgICAgICAgICdiYWNrc2xhc2hyZXBsYWNlJyAgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlcy4KICAgICAgICAgJ25hbWVyZXBsYWNlJyAgICAgICAtIFJlcGxhY2Ugd2l0aCBcTnsuLi59IGVzY2FwZSBzZXF1ZW5jZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGZvciBlbmNvZGluZykuCgogICAgICAgIFRoZSBzZXQgb2YgYWxsb3dlZCB2YWx1ZXMgY2FuIGJlIGV4dGVuZGVkIHZpYSByZWdpc3Rlcl9lcnJvci4KCiAgICAAAAD/yZo7qKwqACMCAAD/////5AAAAAAAAAAgRW5jb2RlcyB0aGUgb2JqZWN0IGlucHV0IGFuZCByZXR1cm5zIGEgdHVwbGUgKG91dHB1dAogICAgICAgICAgICBvYmplY3QsIGxlbmd0aCBjb25zdW1lZCkuCgogICAgICAgICAgICBlcnJvcnMgZGVmaW5lcyB0aGUgZXJyb3IgaGFuZGxpbmcgdG8gYXBwbHkuIEl0IGRlZmF1bHRzIHRvCiAgICAgICAgICAgICdzdHJpY3QnIGhhbmRsaW5nLgoKICAgICAgICAgICAgVGhlIG1ldGhvZCBtYXkgbm90IHN0b3JlIHN0YXRlIGluIHRoZSBDb2RlYyBpbnN0YW5jZS4gVXNlCiAgICAgICAgICAgIFN0cmVhbVdyaXRlciBmb3Ig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b2RpbmcgaXMgbm90IE5vbmUsIHRoZW4gdGhlCiAgICAgICAgdW5kZXJseWluZyBlbmNvZGVkIGZpbGVzIGFyZSBhbHdheXMgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgogICAgICAgIFRoZSBkZWZhdWx0IGZpbGUgbW9kZSBpcyAncicsIG1lYW5pbmcgdG8gb3BlbiB0aGUgZmlsZSBpbiByZWFkIG1vZGUuCgogICAgICAgIGVuY29kaW5nIHNwZWNpZmllcyB0aGUgZW5jb2Rpbmcgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgdGhlCiAgICAgICAgZmlsZS4KCiAgICAgICAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBkZWZpbmUgdGhlIGVycm9yIGhhbmRsaW5nLiBJdCBkZWZhdWx0cwogICAgICAgIHRvICdzdHJpY3QnIHdoaWNoIGNhdXNlcyBWYWx1ZUVycm9ycyB0byBiZSByYWlzZWQgaW4gY2FzZSBhbgogICAgICAgIGVuY29kaW5nIGVycm9yIG9jY3Vycy4KCiAgICAgICAgYnVmZmVyaW5nIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciB0aGUgYnVpbHRpbiBvcGVuKCkgQVBJLgogICAgICAgIEl0IGRlZmF1bHRzIHRvIC0xIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGRlZmF1bHQgYnVmZmVyIHNpemUgd2lsbAogICAgICAgIGJlIHVzZWQuCgogICAgICAgIFRoZSByZXR1cm5lZCB3cmFwcGVkIGZpbGUgb2JqZWN0IHByb3ZpZGVzIGFuIGV4dHJhIGF0dHJpYnV0ZQogICAgICAgIC5lbmNvZGluZyB3aGljaCBhbGxvd3MgcXVlcnlpbmcgdGhlIHVzZWQgZW5jb2RpbmcuIFRoaXMKICAgICAgICBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgaWYgYW4gZW5jb2Rpbmcgd2FzIHNwZWNpZmllZCBhcwogICAgICAgIHBhcmFtZXRlci4KCiAgICAA/8maO6isKgABAAAA/////+QAAAAAAAAAYgAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGJ1ZmZlcmluZwAAAP/JmjuorCoAAwAAAP/////kAAAAAAAA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cm92aWRlcyB0aGUgUHl0aG9uIGludGVyZmFjZXMgdG8gc3RyZWFtIGhhbmRsaW5nLiBUaGUKYnVpbHRpbiBvcGVuIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuCgpBdCB0aGUgdG9wIG9mIHRoZSBJL08gaGllcmFyY2h5IGlzIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIElPQmFzZS4gSXQKZGVmaW5lcyB0aGUgYmFzaWMgaW50ZXJmYWNlIHRvIGEgc3RyZWFtLiBOb3RlLCBob3dldmVyLCB0aGF0IHRoZXJlIGlzIG5vCnNlcGFyYXRpb24gYmV0d2VlbiByZWFkaW5nIGFuZCB3cml0aW5nIHRvIHN0cmVhbXM7IGltcGxlbWVudGF0aW9ucyBhcmUKYWxsb3dlZCB0byByYWlzZSBhbiBPU0Vycm9yIGlmIHRoZXkgZG8gbm90IHN1cHBvcnQgYSBnaXZlbiBvcGVyYXRpb24uCgpFeHRlbmRpbmcgSU9CYXNlIGlzIFJhd0lPQmFzZSB3aGljaCBkZWFscyBzaW1wbHkgd2l0aCB0aGUgcmVhZGluZyBhbmQKd3JpdGluZyBvZiByYXcgYnl0ZXMgdG8gYSBzdHJlYW0uIEZpbGVJTyBzdWJjbGFzc2VzIFJhd0lPQmFzZSB0byBwcm92aWRlCmFuIGludGVyZmFjZSB0byBPUyBmaWxlcy4KCkJ1ZmZlcmVkSU9CYXNlIGRlYWxzIHdpdGggYnVmZmVyaW5nIG9uIGEgcmF3IGJ5dGUgc3RyZWFtIChSYXdJT0Jhc2UpLiBJdHMKc3ViY2xhc3NlcywgQnVmZmVyZWRXcml0ZXIsIEJ1ZmZlcmVkUmVhZGVyLCBhbmQgQnVmZmVyZWRSV1BhaXIgYnVmZmVyCnN0cmVhbXMgdGhhdCBhcmUgcmVhZGFibGUsIHdyaXRhYmxlLCBhbmQgYm90aCByZXNwZWN0aXZlbHkuCkJ1ZmZlcmVkUmFuZG9tIHByb3ZpZGVzIGEgYnVmZmVyZWQgaW50ZXJmYWNlIHRvIHJhbmRvbSBhY2Nlc3MKc3RyZWFtcy4gQnl0ZXNJTyBpcyBhIHNpbXBsZSBzdHJlYW0gb2YgaW4tbWVtb3J5IGJ5dGVzLgoKQW5vdGhlciBJT0Jhc2Ugc3ViY2xhc3MsIFRleHRJT0Jhc2UsIGRlYWxzIHdpdGggdGhlIGVuY29kaW5nIGFuZCBkZWNvZGluZwpvZiBzdHJlYW1zIGludG8gdGV4dC4gVGV4dElPV3JhcHBlciwgd2hpY2ggZXh0ZW5kcyBpdCwgaXMgYSBidWZmZXJlZCB0ZXh0CmludGVyZmFjZSB0byBhIGJ1ZmZlcmVkIHJhdyBzdHJlYW0gKGBCdWZmZXJlZElPQmFzZWApLiBGaW5hbGx5LCBTdHJpbmdJTwppcyBhbiBpbi1tZW1vcnkgc3RyZWFtIGZvciB0ZXh0LgoKQXJndW1lbnQgbmFtZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBhbmQgb25seSB0aGUgYXJndW1lbnRzCm9mIG9wZW4oKSBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KCmRhdGE6CgpERUZBVUxUX0JVRkZFUl9TSVpFCgogICBBbiBpbnQgY29udGFpbmluZyB0aGUgZGVmYXVsdCBidWZmZXIgc2l6ZSB1c2VkIGJ5IHRoZSBtb2R1bGUncyBidWZmZXJlZAogICBJL08gY2xhc3Nlcy4gb3BlbigpIHVzZXMgdGhlIGZpbGUncyBibGtzaXplIChhcyBvYnRhaW5lZCBieSBvcy5zdGF0KSBpZgogICBwb3NzaWJsZS4KAAAA/8maO6isKgDrAAAA/////+QAAAAAAAAAR3VpZG8gdmFuIFJvc3N1bSA8Z3VpZG9AcHl0aG9uLm9yZz4sIE1pa2UgVmVyZG9uZSA8bWlrZS52ZXJkb25lQGdtYWlsLmNvbT4sIE1hcmsgUnVzc2VsbCA8bWFyay5ydXNzZWxsQHplbi5jby51az4sIEFudG9pbmUgUGl0cm91IDxzb2xpcHNpc0BwaXRyb3UubmV0PiwgQW1hdXJ5IEZvcmdlb3QgZCdBcmMgPGFtYXVyeWZhQGdtYWlsLmNvbT4sIEJlbmphbWluIFBldGVyc29uIDxiZW5qYW1pbkBweXRob24ub3JnPgD/yZo7qKwqAA8AAAD/////5AAAAAAAAABCbG9ja2luZ0lPRXJyb3IA/8maO6isKgAGAAAA/////+QAAAAAAAAASU9CYXNlAAD/yZo7qKwq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QUJDcykgZm9yIGNvbGxlY3Rpb25zLCBhY2NvcmRpbmcgdG8gUEVQIDMxMTkuCgpVbml0IHRlc3RzIGFyZSBpbiB0ZXN0X2NvbGxlY3Rpb25zLgoAAP/JmjuorCoAGQAAAP/////kAAAAAAAAADxmcm96ZW4gX2NvbGxlY3Rpb25zX2FiYz4AAAD/yZo7qKwqAAIAAAD/////5AAAAAAAAABfZgAA/8maO6isKgAJAAAA/////+QAAAAAAAAAQXdhaXRhYmxlAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAQ29yb3V0aW5lAAAA/8maO6isKgANAAAA/////+QAAAAAAAAAQXN5bmNJdGVyYWJsZQAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAEFzeW5jSXRlcmF0b3IAAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABBc3luY0dlbmVyYXRvcgAA/8maO6isKgAIAAAA/////+QAAAAAAAAASGFzaGFibGUAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAASXRlcmFibGUAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAASXRlcmF0b3IAAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAR2VuZXJhdG9yAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAUmV2ZXJzaWJsZQAA/8maO6isKgAFAAAA/////+QAAAAAAAAAU2l6ZWQAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABDb250YWluZXIAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABDYWxsYWJsZQAAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABDb2xsZWN0aW9uAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABTZXQA/8maO6isKgAKAAAA/////+QAAAAAAAAATXV0YWJsZVNldAAA/8maO6isKgAHAAAA/////+QAAAAAAAAATWFwcGluZwD/yZo7qKwqAA4AAAD/////5AAAAAAAAABNdXRhYmxlTWFwcGluZwAA/8maO6isKgALAAAA/////+QAAAAAAAAATWFwcGluZ1ZpZXcA/8maO6isKgAIAAAA/////+QAAAAAAAAAS2V5c1ZpZXcAAAAA/8maO6isKgAJAAAA////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VAHwAAEFVAHwAAEFVAEAAAD/yZo7qKwqAJAAAAD/////5AAAAAAAAABDb21tb24gcGF0aG5hbWUgbWFuaXB1bGF0aW9ucywgV2luZG93c05ULzk1IHZlcnNpb24uCgpJbnN0ZWFkIG9mIGltcG9ydGluZyB0aGlzIG1vZHVsZSBkaXJlY3RseSwgaW1wb3J0IG9zIGFuZCByZWZlciB0byB0aGlzCm1vZHVsZSBhcyBvcy5wYXRoLgoAAAAA/8maO6isKgACAAAA/////+QAAAAAAAAALi4AAP/JmjuorCoAAQAAAP/////kAAAAAAAAADsAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAAAuO0M6XGJpbgAAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABudWwA/8maO6isKgAIAAAA/////+QAAAAAAAAAbm9ybWNhc2UAAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAaXNhYnMAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABzcGxpdGRyaXZlAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABzcGxpdGV4dAAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABpc2xpbmsAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGxleGlzdHMA/8maO6isKgAHAAAA/////+QAAAAAAAAAaXNtb3VudAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABleHBhbmR1c2VyAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABleHBhbmR2YXJzAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABub3JtcGF0aAAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABhYnNwYXRoAP/JmjuorCoABgAAAP/////kAAAAAAAAAGN1cmRpcgAA/8maO6isKgAGAAAA/////+QAAAAAAAAAcGFyZGlyAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABwYXRoc2VwAP/JmjuorCoABwAAAP/////kAAAAAAAAAGRlZnBhdGgA/8maO6isKgAHAAAA/////+QAAAAAAAAAZGV2bnVsbAD/yZo7qKwqAAgAAAD/////5AAAAAAAAAByZWFscGF0aAAAAAD/yZo7qKwqABoAAAD/////5AAAAAAAAABzdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcwAA/8maO6isKgAHAAAA/////+QAAAAAAAAAcmVscGF0aAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABjb21tb25wYXRoAAD/yZo7qKwqAAIAAAD/////5AAAAAAAAABcLwAA/8maO6isKgAPAAAA/////+QAAAAAAAAAPGZyb3plbiBudHBhdGg+AP/JmjuorCoADQAAAP/////kAAAAAAAAAF9nZXRfYm90aHNlcHMAAAAAAAAAAAAAAP/JmjtAmSoAAwAAABSEKgDsITcAFCE3AAAAAAAAAAAA/8maO0CZKgACAAAAgCcrAEwSNgD/yZo7JOMpAB4AAAD/////gADdBxGQJJ0F0Qce1Ace8AADBRXYDxWIduAPFIh1AAD/yZo7JOMpAAIAAAD/////XC8AAP/JmjuorCoADQAAAP/////kAAAAAAAAAExDTWFwU3RyaW5nRXgAAAD/yZo7qKwqABUAAAD/////5AAAAAAAAABMT0NBTEVfTkFNRV9JTlZBUklBTlQAAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABMQ01BUF9MT1dFUkNBU0UA/8maO6isKgBuAAAA/////+QAAAAAAAAATm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuCgogICAgICAgIE1ha2VzIGFsbCBjaGFyYWN0ZXJzIGxvd2VyY2FzZSBhbmQgYWxsIHNsYXNoZXMgaW50byBiYWNrc2xhc2hlcy4KICAgICAgICAAAP/JmjuorCoADwAAAP/////kAAAAAAAAAHN1cnJvZ2F0ZWVzY2FwZQD/yZo7qKwqABUAAAD/////5AAAAAAAAABnZXRmaWxlc3lzdGVtZW5jb2RpbmcAAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABfTENNYXBTdHJpbmdFeAAA/8maO6isKgAWAAAA/////+QAAAAAAAAAX0xPQ0FMRV9OQU1FX0lOVkFSSUFOVAAA/8maO6isKgAQAAAA/////+QAAAAAAAAAX0xDTUFQX0xPV0VSQ0FTRQAAAAAAAAAAAAAAAP/JmjtAmSoABAAAAIAiNwAIIzcARCo0ACgqNAAAAAAAAAAAAP/JmjtAmSoADAAAAAT7NgBMizQAgCcrAEwSNgDYuDMAMCM3ADAjKwBgLisAYCM3AIgjNwC4IzcAVCQrAAAAAAAAAAAA/8maO0CZKgACAAAA6Go0AHQkKwD/yZo7JOMpALcAAAD/////gAD1CgAND4xJkGGJTIxMiAHYDxDwAAEJFdgTFIhI3QsVkGGdFdELH9QLH/AACQk43Rca1Bcw0Rcy1BcyiEjYEBGXCJIImBjQIzTREDXUEDXXED3SED24Y8A00RBI1BBIiEHdEB7VHzXdHy+wEfEDARE09AABETSIQeATFJc4kjiYSNAmN9ETONQTONAMOOUTIdUiON0iMtgiI6cpoimoQ7AU0SI21CI28QUCFDj0AAIUOPAAAg04AP/JmjuorCoACAAAAP/////kAAAAAAAAAGZzZW5jb2RlAAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGZzZGVjb2RlAAAAAAAAAAAAAAAA/8maO0CZKgADAAAAgCI3AEQqNAAoKjQAAAAAAAAAAAD/yZo7QJkqAAgAAAAE+zYATIs0AIAnKwBMEjYAMCU3AFQlNwBgLisA1Jg0AAAAAAAAAAAA/8maO0CZKgABAAAA6Go0AP/Jmjsk4ykAeAAAAP////+AAPUKAA0PjEmQYYlMjEyIAd0LFZBhnRXRCx/UCx/wAAEJSgHdExWUO51ynHuoMZl+nH7XHzXSHzWwY7g00R9A1B9A1x9G0h9G0R9I1B9I0RNJ1BNJ0AxJ2A8Qj3mKeZgTmGTRDyPUDyPXDynSDynRDyvUDyvQCCsAAAAA/8maO6isKgAfAAAA/////+QAAAAAAAAAVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZQD/yZo7qKwqAAIAAAD/////5AAAAAAAAAA6XAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAY29sb25fc2VwAAAAAAAAAAAAAAD/yZo7QJkqAAwAAABwJjcAqPUqAHDxKgAgKDcAKCo0AEQqNACoJjcAFIQqABTdKgD03CoAANopABDaKQAAAAAAAAAAAP/JmjtAmSoABgAAAAT7NgBMizQAgCcrAEwSNgBgLisAyNczAAAAAAAAAAAA/8maO0CZKgAEAAAA6Go0AIArNACYGDcAxCY3AP/Jmjsk4ykAkQAAAP////+AAOUICowJkCGJDIwMgEHdBxGQIZVV0Qcb1Acb8AAHBRrYDhOIA9gRFYgG2BQaiAmICeAOEogD2BEUiAbYFBmICdgICYgiiDGIIowFjw2KDZBmmGPRCCLUCCKAQfAGAAgJh3yCfJBD0QcY1AcY8AABBRSYQZ9MmkyoGbBB0Rw21Bw28AABBRTYDxOIdNgLEIg1AAAA/8maOyTjKQACAAAA/////zpcAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABCeXRlc1dhcm5pbmcAAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAZ2VuZXJpY3BhdGgA/8maO6isKgAFAAAA/////+QAAAAAAAAAcGF0aHMAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABzZXBzAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGNvbG9uAAAA/8maO6isKgAMAAAA/////+QAAAAAAAAAcmVzdWx0X2RyaXZlAAAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAHJlc3VsdF9wYXRoAP/JmjuorCoABwAAAP/////kAAAAAAAAAHBfZHJpdmUA/8maO6isKgAGAAAA/////+QAAAAAAAAAcF9wYXRoAAAAAAAAAAAAAP/JmjtAmSoACgAAABSEKgCo9SoA7CE3AHjyKgAoKjQAFCE3AMxqNADk3CoA1NwqAOQnKwAAAAAAAAAAAP/JmjtAmSoADAAAAAT7NgBMizQAgCcrAEwSNgCkHjcAkHQ0ANSYNAA4RzQAdLUzADQoNwBcKDcAVBs3AP/Jmjsk4ykAEgAAAP////+4QxdEFQDEEAREFQDEFSxFAQMAAAAAAAAAAAAA/8maO0CZKgAKAAAAFCwrAIAoNwCAKzQAoCg3AMAoNwDgKDcACCk3AAB0NAAsKTcATCk3AP/Jmjsk4ykAyQEAAP////+AAN0LDYw5kFSJP4w/gETdBxGQJJ0F0Qce1Ace8AAHBRTYDhOIA9gPFYgE2BAUiAWIBeAOEogD2A8UiATYEBOIBfACHwUO2A8U8AABCRvYDBCQEpAhkBKMSJBziU6ITt0kLqh00SQ01CQ00QghiAyQa90RFJVSlFmgBdERJtQRJvAAEwkv8AATCS+IQd0eKKgRmW2cbYlPiEeQVtgPFfAADQ0nmCagEZwpoHTQGivQGivgExrwAAERK6As8AABESvYIyqQTNgeJJAL2BAY2BEY8AAHDSeYV6gM0h000B002BMalz2SPZE/lD+gbNcmONImONEmOtQmOtITOtATOuAjKpBM2CIokEvYFBzgHyaQDOAPGvAAAQ0wmHuoMpx/sGTQHzrQHzrYHimoQ9EeL5AL2BolqAbRGi6IS4hL4AwX8AACCTSYS6gBnE6wJNAcNtAcNtgMGPADAB032B0pqCKoI6gj1B0usCXSHTfQHTfYEx+gI9ETJagL0RMz0Awz2A8bmGvRDynQCCn43QwVlX6lfNALNPAAAgUO8AACBQ7wAAIFDt0IE9QIJKBWqFTQCDqwRdAIOtAIOtAIOtAIOtgIDfAFAgUO+Pj4AAAA/8maO6isKgDaAgAA/////+QAAAAAAAAAU3BsaXQgYSBwYXRobmFtZSBpbnRvIGRyaXZlL1VOQyBzaGFyZXBvaW50IGFuZCByZWxhdGl2ZSBwYXRoIHNwZWNpZmllcnMuCiAgICBSZXR1cm5zIGEgMi10dXBsZSAoZHJpdmVfb3JfdW5jLCBwYXRoKTsgZWl0aGVyIHBhcnQgbWF5IGJlIGVtcHR5LgoKICAgIElmIHlvdSBhc3NpZ24KICAgICAgICByZXN1bHQgPSBzcGxpdGRyaXZlKHApCiAgICBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0OgogICAgICAgIHJlc3VsdFswXSArIHJlc3VsdFsxXSA9PSBwCgogICAgSWYgdGhlIHBhdGggY29udGFpbmVkIGEgZHJpdmUgbGV0dGVyLCBkcml2ZV9vcl91bmMgd2lsbCBjb250YWluIGV2ZXJ5dGhpbmcKICAgIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGNvbG9uLiAgZS5nLiBzcGxpdGRyaXZlKCJjOi9kaXIiKSByZXR1cm5zICgiYzoiLCAiL2RpciIpCgogICAgSWYgdGhlIHBhdGggY29udGFpbmVkIGEgVU5DIHBhdGgsIHRoZSBkcml2ZV9vcl91bmMgd2lsbCBjb250YWluIHRoZSBob3N0IG5hbWUKICAgIGFuZCBzaGFyZSB1cCB0byBidXQgbm90IGluY2x1ZGluZyB0aGUgZm91cnRoIGRpcmVjdG9yeSBzZXBhcmF0b3IgY2hhcmFjdGVyLgogICAgZS5nLiBzcGxpdGRyaXZlKCIvL2hvc3QvY29tcHV0ZXIvZGlyIikgcmV0dXJucyAoIi8vaG9zdC9jb21wdXRlciIsICIvZGlyIikKCiAgICBQYXRocyBjYW5ub3QgY29udGFpbiBib3RoIGEgZHJpdmUgbGV0dGVyIGFuZCBhIFVOQyBwYXRoLgoKICAgIAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAXFw/XFVOQ1wAAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAdXBwZXIAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABmaW5kAAAAAP/JmjuorCoACgAAAP/////kAAAAAAAAAHVuY19wcmVmaXgAAP/JmjuorCoABQAAAP/////kAAAAAAAAAG5vcm1wAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAaW5kZXgyAAAAAAAAAAAAAP/JmjtAmSoADwAAACgsNwAE3SoAqPUqAHDxKgB48ioAGDI3ACgqNABEKjQAzGo0ABwvNwDk3CoAFIQqAGTdKgDU3CoA9NwqAAAAAAAAAAAA/8maO0CZKgAIAAAABPs2AEyLNADUKCsAgCcrAEwSNgBgLisAQC83AGAvNwAAAAAAAAAAAP/JmjtAmSoACQAAAAB0NACAKzQAmBg3AMAoNwCALzcApC83AEQNNgBwDzUAxC83AP/Jmjsk4ykAZAEAAP////+AAPUmAAkLjAmQIYkMjAyAQd0HCogxgXaEdpARgnuAe90LFZBhnRXRCx/UCx/wAAkJKNgSF4hD2BUZiEbYFBiIRdgZKIhKiErgEhaIQ9gVGIhG2BQXiEXYGSeIStgQEZcJkgmYJqAj0RAm1BAmiAXYCxCQEZAxkBOMOpgTmHGZF9ILINALIPAGABofmHKgAZhynBmfH5of0Rkq1BkqqGrSGTjQGTiQQZBBuGGIRdgUGZdKkkqYc6BF0RQq1BQqiEXYDxSYAop7iHvYFxiYIZhCmFGYQpwlkHiQD9gVGpdaklqgA6BVqFGhWdEVL9QVL4hG2A8VmBKKfIh82BcYmCGYQphRmEKcJZB4kA/YExSQV5BmkFeUOphxoBagF6AXnHrQEynQDCnYCxCQEZAxkBOMOpgV0gse0Ase4BMUkFKQYZBSlDWYIZhBmEKYQpwlkDzQDB/YCwyIUohhiFKMNZAhiDiATwAAAAD/yZo7JOMpAAgAAAD/////XFw/XFVOQ1wAAAAA/8maO6isKgB+AAAA/////+QAAAAAAAAAU3BsaXQgYSBwYXRobmFtZS4KCiAgICBSZXR1cm4gdHVwbGUgKGhlYWQsIHRhaWwpIHdoZXJlIHRhaWwgaXMgZXZlcnl0aGluZyBhZnRlciB0aGUgZmluYWwgc2xhc2guCiAgICBFaXRoZXIgcGFydCBtYXkgYmUgZW1wdHkuAAAAAAAAAAAAAP/JmjtAmSoAAwAAADQyNwD03CoAFIQqAAAAAAAAAAAA/8maO0CZKgAGAAAABPs2AEyLNABYITcApB43ANQoKwCAczQAAAAAAAAAAAD/yZo7QJkqAAYAAAAAdDQAoCg3AJieNQCUejQA4Iw0APR1NAD/yZo7JOMpALQAAAD/////gAD1CgAJC4wJkCGJDIwMgEHdCxiYEdELG9QLG4BE3QsVkGGJPYw9gUSAQYBx5QgLiEGJBowGgEHYCgvwAAEFD5ABkCGQQZEjlAaYZNAQItAQItgICYhRiQaIAfADAAsM8AABBQ+QAZAhkEGRI5QGmGTQECLQECLgERKQMpBBkDKUFZgBmCGYIpginAWIJIBE4AsPjzuKO5B00Qsc1Asc0AskoASARNgLDIh0iTiQVIg+0AQZAAAAAAAAAAAAAAAA/8maO0CZKgAHAAAAFIQqAKj1KgBw8SoAWPEqACgqNABEKjQAtAYrAAAAAAAAAAAA/8maO0CZKgAGAAAABPs2AEyLNACAJysATBI2AFwoNwB0GDcAAAAAAAAAAAD/yZo7QJkqAAEAAAAAdDQA/8maOyTjKQBPAAAA/////4AA3QgKjAmQIYkMjAyAQd0HEZAhlVXRBxvUBxvwAAMFON0PGtQPJKBRqAWodLBU0Q861A860Ag65Q8a1A8koFGoBKhjsDPRDzfUDzfQCDcA/8maO6isKgApAAAA/////+QAAAAAAAAAUmV0dXJucyB0aGUgZmluYWwgY29tcG9uZW50IG9mIGEgcGF0aG5hbWUAAAAAAAAAAAAAAP/JmjtAmSoAAgAAAOA0NwD03CoAAAAAAAAAAAD/yZo7QJkqAAEAAADg/TYA/8maOyTjKQASAAAA/////4AA5QsQkBGJOIw4kEGMO9AEFgAA/8maO6isKgAtAAAA/////+QAAAAAAAAAUmV0dXJucyB0aGUgZGlyZWN0b3J5IGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lAAAAAAAAAAAAAAD/yZo7QJkqAAIAAAB8NTcA5NwqAP/JmjuorCoAaAAAAP/////kAAAAAAAAAFRlc3Qgd2hldGhlciBhIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLgogICAgVGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIFdpbmRvd3MgcHJpb3IgdG8gNi4wLgogICAgAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGxzdGF0AAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JU0xOSwAAAAAAAAAAAP/JmjtAmSoAAgAAAOA1NwAQ2ikAAAAAAAAAAAD/yZo7QJkqAAgAAAAE+zYAZDY3ABR9NABcRzQAdLUzABR8NACENjcANH00AP/Jmjsk4ykADAAAAP////+CFBcAlxcyA7EBMgMAAAAA/8maOyTjKQBRAAAA/////4AA8AgDBRXdDQ+MWJBkiV6MXogCiAL43QwTlVqlHtALMPAAAQUV8AABBRXwAAEFFdgPFIh1iHXwAwEFFfj4+OULD4w8mAKcCtELI9QLI9AEIwAAAP/JmjuorCoAQwAAAP/////kAAAAAAAAAFRlc3Qgd2hldGhlciBhIHBhdGggZXhpc3RzLiAgUmV0dXJucyBUcnVlIGZvciBicm9rZW4gc3ltYm9saWMgbGlua3MAAAAAAAAAAAD/yZo7QJkqAAMAAAB4NzcAENopAADaKQAAAAAAAAAAAP/JmjtAmSoABAAAAAT7NgBkNjcAFH00AFxHNAD/yZo7JOMpAEIAAAD/////gADwBAMFFd0ND4xYkGSJXoxeiAKIAvjdDBOVWtALIPAAAQUV8AABBRXwAAEFFdgPFIh1iHXwAwEFFfj4+OALD4g0AAD/yZo7qKwqABIAAAD/////5AAAAAAAAABfZ2V0dm9sdW1lcGF0aG5hbWUAAP/JmjuorCoAYQAAAP/////kAAAAAAAAAFRlc3Qgd2hldGhlciBhIHBhdGggaXMgYSBtb3VudCBwb2ludCAoYSBkcml2ZSByb290LCB0aGUgcm9vdCBvZiBhCiAgICBzaGFyZSwgb3IgYSBtb3VudGVkIHZvbHVtZSkAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAB5AAAAAAAAAAAAAAD/yZo7QJkqAAQAAACYODcA5NwqAADaKQAQ2ikAAAAAAAAAAAD/yZo7QJkqAAgAAAAE+zYATIs0AFghNwC4HzcApB43AGw4NwCAczQARHU0AAAAAAAAAAAA/8maO0CZKgAGAAAAFCwrAKAoNwCwdTQAAI00AHBVNAAUOTcA/8maOyTjKQDIAAAA/////4AA9QYADA6MOZBUiT+MP4BE3QsYmBTRCx7UCx6ARN0LEpA0iT2MPYBE3REbmETRESHUESGBSoBEiCTYBwvwAAEFLJAEkFGUB5g0kA+QD9gUGJAI0A8rmGSgZJhs0Agr2AcL8AABBRSQBJgEkAyQDNgPE4h05QcZ8AAFBRXYDBCPS4pLmATRDB3UDB2IAd0LHZhk0Qsj1Asj1wsq0gsqqDTRCzDUCzCIAdgPEI96inqJfIx8mHGfepp6mXycfNIPK9AIK+APFIh1AAAAAP/JmjuorCoATAAAAP/////kAAAAAAAAAEV4cGFuZCB+IGFuZCB+dXNlciBjb25zdHJ1Y3RzLgoKICAgIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwgZG8gbm90aGluZy4AAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAfgAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAFVTRVJQUk9GSUxFAP/JmjuorCoACAAAAP/////kAAAAAAAAAEhPTUVQQVRIAAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAEhPTUVEUklWRQAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAFVTRVJOQU1FAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHRpbGRlAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAdXNlcmhvbWUAAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAZHJpdmUAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAAB0YXJnZXRfdXNlcgD/yZo7qKwqAAwAAAD/////5AAAAAAAAABjdXJyZW50X3VzZXIAAAAAAAAAAAAAAAD/yZo7QJkqAAoAAACQOjcA2PgqAPg6NwD03CoAFDs3ADg7NwBcOzcA9AYrAIA7NwAUhCoAAAAAAAAAAAD/yZo7QJkqAA8AAAAE+zYATIs0AIAnKwBMEjYAyNczANQoKwBYITcArGw0AMTQMwDkJysAVCU3AFQmKwDoVzUA/Lw0ADAlNwD/yZo7JOMpABIAAAD/////wwgSQxsAwxsMQyoDwykBQyoDAAAAAAAAAAAAAP/JmjtAmSoACAAAABQsKwCkOzcAlHo0AASzNgDEOzcA6Ds3AAg8NwAsPDcA/8maOyTjKQDWAQAA/////4AA9QgADA6MOZBUiT+MP4BE3QcRkCSdBdEHHtQHHvAAAwUU2BAUiAWIBeAQE4gF2AsPjz+KP5g10Qsh1Ash8AABBRTYDxOIC9gLDI1jkCSJaYxpgHGAQdgKC4hhiiWIJZBEmBGUR6U9sBTRIzbUIzbQFDbQFDbYCAmIUYkGiAHwAwALDIhhiiWIJZBEmBGUR6U9sBTRIzbUIzbQFDbQFDbwBgAIFZ0CnArQByLQByLdExWUOpht1BMsiAiICNgNF50ynDrQDSXQDSXYDxOIC/AEAwkX3RQWlEqYe9QUK4hFiEX43Q8X8AABCRfwAAEJF/AAAQkX2BQWiEWIRYhF8AMBCRf4+PjlExeYBZ1ynHqoKtQfNdETNtQTNogI4AcIiEGCdoB22BYamDGYUZgzlGmIC90LFZBrpTXRCynUCynwAAEJM90aHJwroGvRGjLUGjKIS90XGZR6l36SfqBq0Rcx1BcxiAzgCxaYLNILJtALJvAMABAcnXioCNEfMdQfMdIPMdAPMdgXG5AL3RcbnUegSNEcLdQcLah70Rc71Bc7iEjlBxGQJJ0F0Qce1Ace8AABBSndExWUO5h40RMo1BMoiAjgCxOQZJgxmDKYMpRo0Qse0AQeAAD/yZo7qKwqAGYAAAD/////5AAAAAAAAABFeHBhbmQgc2hlbGwgdmFyaWFibGVzIG9mIHRoZSBmb3JtcyAkdmFyLCAke3Zhcn0gYW5kICV2YXIlLgoKICAgIFVua25vd24gdmFyaWFibGVzIGFyZSBsZWZ0IHVuY2hhbmdlZC4AAP/JmjuorCoAAgAAAP/////kAAAAAAAAAF8tAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABlbnZpcm9uYgAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAAkAAAA/8maO6isKgABAAAA/////+QAAAAAAAAAJwAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAHN0cmluZwAA/8maO6isKgANAAAA/////+QAAAAAAAAAYXNjaWlfbGV0dGVycwAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGRpZ2l0cwAA/8maO6isKgAIAAAA/////+QAAAAAAAAAdmFyY2hhcnMAAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAcXVvdGUAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABwZXJjZW50AP/JmjuorCoABQAAAP/////kAAAAAAAAAGJyYWNlAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAcmJyYWNlAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABkb2xsYXIAAP/JmjuorCoAAwAAAP/////kAAAAAAAAAHJlcwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABwYXRobGVuAP/JmjuorCoAAwAAAP/////kAAAAAAAAAHZhcgAAAAAAAAAAAP/JmjtAmSoAEgAAACA/NwBo8CoAgPAqAOTcKgAUhCoAoD83AKh/NQCw8CoAkPgqAMD4KgC8PzcA4D83AHgHKwD8PzcAXAcrACgGKwD03CoABN0qAAAAAAAAAAAA/8maO0CZKgAPAAAABPs2AEyLNACAJysATBI2ABhANwA4QDcAYEA3AJQmKwCsbDQA1CgrAHAPNQBcRzQAMCU3AFQlNwDE0DMA/8maOyTjKQBvAAAA/////8QBKEQrAMQrF0UGA8UFAUUGA8YMFUgNAMYsQQFHLgDHLhJIAwPIAgFIAwPIDRdIKAPIJwFIKAPKAxVMBgDKI0EBSyUAyyUVSz0DyzwBSz0DzAYaTCMDzCIBTCMDzSZBAU4oAM4oD046A845AU46AwAAAAAAAAAAAP/JmjtAmSoADwAAABQsKwAYQDcAgEA3AKRANwDEQDcA5EA3AARBNwAkQTcArGw0AERBNwBwDzUAYEE3AKifNQCAQTcAzPUzAP/Jmjsk4ykAJAUAAP////+AAPUIAAwOjDmQVIk/jD+ARN0HEZAknQXRBx7UBx7wABUFHdgLD5B00Asb0AsboASoRNAgMNAgMNgTF4hL2AgViA2IDYgN3RMYmBbUGS2wBrQN0Rk9wATRGUTAZ9ETTtQTTogI2BAViAXYEhaIB9gQFIgF2BEViAbYERWIBt0SGZ0imGqoJNESL9QSL4gHiAfgCw6QZIg/iD+Yc6gkmH+Yf9gTF4hL2AgViA2IDYgN2BMZ1BMnqCasLdETN7gk0RM+iAjYEBSIBdgSFYgH2BATiAXYERSIBtgRFIgG3RIUlCqIB9gKDohykAGIcowogEPYDA2ARd0OEZAkiWmMaYBH2AoPkCeKL4kv2AwQkBWQdZhRkXeQHdQMH4gB2AsMkAWKOog62BMXmAWgAZkJmAqYCtQTI4hE3RYZmCSRaZRpiEfwAgUNJNgYHJ8KmgqgMZkNnA2QBdgQE5BxmDSgCqAVqBGhGaAK1Bsr0Rcr0RArkAORA/jdEx3wAAINJPAAAg0k8AACDSTYEBOQcZg0kXiRD5AD2BgfoCGZC5AFkAWRBfAFAg0k+Pj48AYADg+QJ4pciFzYDxOQRZhBkUmYZaBhmWnQFCfUDyioR9IPM9APM9gQE5BxkQiQA9gQFZgRkQqQBZEF4BcbmEWgIZlHmEiYSJR+kATdGh2YZJkpnCmQB/ACDhEh2Bwgn0qaSqB30Rwv1BwvkEXwCgAbH5h2oAWYdpwskEPwAgYVONgbIpg/3SQmpEu1ArQKvTK8O8Bz0TtL1DtL1DBM0SRN1CRNmEWYReAkK6hDpEyYRfj43Rsj8AABFTjwAAEVOPAAARU42CAnqCOhDbAH0SA3mAWYBZgF8AMBFTj4+PjgFBeYNZFMkEORQ/j1GQAYIvAAAhEo8AACESjwAAIRKNgUF5g3oFSZPtEUKZBD2BwjoGGZS5BFkEWRRfAFAhEo+Pj48BoADg+QJopbiVvYDxOQRZhBkUmYZaBhmWnQFCfUDyioRtIPMtAPMtgQE5BxkQiQA9gQFZgRkQqQBZEF2BEVkGWYYZFpoAWoAaEJ0BYp1BEqqGXSETPQETPYFxuYRaAhmUeYSJhIlH6QBN0aHZhkmSmcKZAH8AIOESHYHCCfSppKoHbRHC7UHC6QRfAKABsfmHagBZh2nCyQQ/ACBhU+2BsimD/dJCakS7UCtAq9Mrw7wHPRO0vUO0vUMEzRJE3UJE2YRZhF4CQrqEOkTJhF+PjdGyPwAAEVPvAAARU+8AABFT7YICaoFaEOsBPRIDSwdtEgPZgFmAWYBfADARU++Pj44BQXmDWRTJBDkEP49RkAGCLwAAIRKPAAAhEo8AACESjYFBeYNqBFmT6oRNEbMNEUMJBD2BwjoGGZS5BFkEWQRfAFAhEo+Pj48BwAFxuYMphBmDKUaJAD2BAVmBGRCpAF2BQYmBWYdaBxmXmYH9QUKZAB2BYX8AADES6YQaAYmE2YTdgUF5gxkUiQQ9gUGZhRkUqQRdgYHJhVoDWoMaE5mF/UGC2QQfAHABcY8AADES6YQaAYmE2YTfAIBhEp2BcekH/dICKkC61CrEq1crR7wDPRN0fUN0fULEjRIEnUIEmYBZgF4CAnqAOkDJgF+PjdFx/wAAERKfAAAREp8AABESnYHCKgU5lMkEWQRZBF8AMBESn4+PjgEBOQdZEMkAPYExTwAAERH9gUGZhRkUqQRfjgDA+QMYlIiEPYCA2QEYkKiAXwVwIACxCQJ4oviS/wWAIADA+ASgAAAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABfcGF0aF9ub3JtcGF0aAAA/8maO6isKgAwAAAA/////+QAAAAAAAAATm9ybWFsaXplIHBhdGgsIGVsaW1pbmF0aW5nIGRvdWJsZSBzbGFzaGVzLCBldGMuAAAAAAAAAAAAAAAA/8maO0CZKgADAAAAeEg3AFjxKgC0BisAAAAAAAAAAAD/yZo7QJkqAAcAAAAE+zYATIs0AIAnKwBMEjYAMCU3AFBINwBUJTcA/8maOyTjKQBcAAAA/////4AA5Q8RjHmYFIl/jH+IBN0LFZBknUXRCyLUCyLwAAEJSgHdExWUO51+rWKsa7gk0S4/1C4/0R9A1B9A0RNB1BNB0BNJwFTQDEndDx2YZNEPI9QPI9APKqBz0AgqAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAGNvbXBzAAAAAAAAAAAAAAD/yZo7QJkqAAsAAAB4SDcAqPUqAHDxKgBY8SoAIEw3ACgqNABEKjQAtAYrAOgdNwDk3CoA9NwqAAAAAAAAAAAA/8maO0CZKgANAAAABPs2AEyLNACAJysATBI2AGAuKwCkHjcAyNczAEiMNADg/TYA1CgrAPx0NABoISsA5CcrAAAAAAAAAAAA/8maO0CZKgAIAAAAFCwrAIArNACYGDcA2B83APgfNwCYVzUAhEk3AJR6NAD/yZo7JOMpAKwBAAD/////gADlDxGMeZgUiX+Mf4gE3QsVkGSdRdELItQLIvAACQka2BIXiEPYFRmIRtgVGYhG2BUaiEaIRuASFohD2BUYiEbYFRiIRtgVGYhG2A8Tj3yKfJhGoEPRDyjUDyiIBN0XIaAk0Rcn1BcniQyIBpAE8AYADBCPP4o/mDPRCx/UCx/wAAIJJNgMEpBjiU2IRtgTF5c7kjuYc9ETI9QTI4hE4BAUlwqSCpgzkQ+UD4gF2AwNiAHYDg+VI5BlkSqUKopuiG7YExiYEZQ48AALDReYdaBRnHioNtIfMdAfMdgUGZghkEiQSNgRFpBxlBiYVtIRI9ARI9gTFJBxkjWQNZhVoDGgUaEznFqoNtIdMdAdMdgYHZhhoAGZY6AhoEGhI5hnmA7YFBWYEZFGkEGQQdgVFpghklaQVqAGpw+iD7AD0SA01CA0kFbYGB2YYZgImAjgFBWYEZFGkEGQQeAQEZBRkQaQAfAZAA8QlSOQZZEqlCqKbohu8BwAEBbwAAEJIZhl8AABCSHYDBGPTIpMmBbRDCDUDCDQDCDYDxWYA58ImgigFZkPnA/RDyfQCCcAAAAA/8maOyTjKQACAAAA/////y4uAAD/yZo7qKwqAKQAAAD/////5AAAAAAAAABSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoIGFzIGEgZmFsbGJhY2sgZnVuY3Rpb24gaW4gY2FzZQogICAgYG50Ll9nZXRmdWxscGF0aG5hbWVgIGlzIG5vdCBhdmFpbGFibGUgb3IgcmFpc2VzIE9TRXJyb3IuIFNlZSBicG8tMzEwNDcgZm9yCiAgICBtb3JlLgoKICAgIAAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABnZXRjd2RiAP/JmjuorCoAEQAAAP/////kAAAAAAAAAF9hYnNwYXRoX2ZhbGxiYWNrAAAA/8maO6isKgADAAAA/////+QAAAAAAAAAY3dkAAAAAAAAAAAA/8maO0CZKgABAAAANEw3AAAAAAAAAAAA/8maO0CZKgAJAAAABPs2AEyLNACEHjcAgCcrAEwSNgD0TDcAgH80AOQnKwCUHzcAAAAAAAAAAAD/yZo7QJkqAAIAAAAULCsAQE03AP/Jmjsk4ykAYgAAAP////+AAPUOAAwOjDmQVIk/jD+ARN0LEJAUiTuMO/AABQUf3QsVkGSdRdELItQLIvAAAwke3RIUlCqRLJQsiEOIQ+USFJQpkSuUK4hD3Q8TkEOYFIl/jH+IBN0LE5BEiT6MPtAEGQAA/8maO6isKgAQAAAA/////+QAAAAAAAAAX2dldGZ1bGxwYXRobmFtZQAAAAD/yZo7qKwqACYAAAD/////5AAAAAAAAABSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoLgAAAAAAAAAAAAD/yZo7QJkqAAEAAABoTjcAAAAAAAAAAAD/yZo7QJkqAAUAAAA8TjcAlB83ABR9NABcRzQAFE03AP/Jmjsk4ykADwAAAP////+CGx4AniBBAQPBAAFBAQMA/8maOyTjKQBPAAAA/////4AA8AQDCSvdEyOlSKhUoU6kTtETM9QTM9AMM/jdEBedGtAPJPAAAQkr8AABCSvwAAEJK90TJKBU0RMq1BMq0Awq0Awq0Awq8AMBCSv4+PgA/8maO6isKgARAAAA/////+QAAAAAAAAAX2dldGZpbmFscGF0aG5hbWUAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAAByZWFkbGluawAAAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfbnRfcmVhZGxpbmsAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAd2luZXJyb3IAAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAX3JlYWRsaW5rX2RlZXAAAP/JmjuorCoAEAAAAP/////kAAAAAAAAAGFsbG93ZWRfd2luZXJyb3IAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAb2xkX3BhdGgAAAAA/8maO6isKgACAAAA/////+QAAAAAAAAAZXgAAAAAAAAAAAAA/8maO0CZKgACAAAAFIQqAIBSNwAAAAAAAAAAAP/JmjtAmSoADAAAAPy8MwBgHjcATCErALhPNwCEHjcA7B43AJQfNwDkJysA/Lw0ABR9NADgTzcAXEc0AP/Jmjsk4ykAKgAAAP/////BBTFCIgDBNypCIgDCIgpDCwPCLAlCOwPCOgFCOwPCOw1DCwPDCgFDCwMAAAAAAAAAAAAA/8maO0CZKgAFAAAAFCwrACxQNwDUvTMAWFA3AHxQNwD/yZo7JOMpAAsBAAD/////gADwHgAcTAHQCBjlDxKJdYx1iATdDhaQdIlujG6gRNAOKNAOKNgMEI9IikiVWJhkkV6UXtEMJNQMJNAMJPACEw0W2BsfkAjdFyOgRNEXKdQXKZAE9QYAGB2YVJF7lHvwAAcRQwH1CAAcIqAo0Rsr1Bsr8AACFR7YHyeYBNgYHd0bI6VErRewGNEpOtQpOrhE0SRB1CRB0RtC1BtCkET4+N0TGvAAAw0W8AADDRbwAAMNFtgTFZQ70CIy0BMy0BMy2BQZkEWQRZBFkEXYEBX4+Pj43RMd8AACDRbwAAINFvAAAg0W4BAVkAXwBQINFvj4+PUnAA8XkHSJboxuoETQDijQDijwLAAQFIgLAAAAAAAAAAAA/8maO0CZKgAMAAAA9NwqAATdKgAU3SoANN0qADTeKgDk3ioABOAqABThKgBU4ioAvFI3AMxSNwDcUjcA/8maO5xhKgABAAAAJhEAAP/JmjucYSoAAQAAACgRAAD/yZo7nGEqAAEAAAApEQAA/8maO6isKgAbAAAA/////+QAAAAAAAAAX2dldGZpbmFscGF0aG5hbWVfbm9uc3RyaWN0AP/JmjuorCoACAAAAP/////kAAAAAAAAAG5ld19wYXRoAAAAAAAAAAAAAAAA/8maO0CZKgADAAAAFIQqAIRVNwD0BisAAAAAAAAAAAD/yZo7QJkqAAYAAABoTzcA5CcrABR9NADgTzcABFA3AOD9NgD/yZo7JOMpAEoAAAD/////iCIrAKsKQj0DtQpCOAPBAChBLwLBKAFCPQPBLgFCOAPBLwpBPAXBOQJCOAPBOwFBPAXBPB1COAPCGQFCPQPCHxRCOAPCOAVCPQMAAAAAAAAAAAAA/8maO0CZKgAGAAAAFCwrACxQNwD0dTQAfFA3ACBTNwDMKisA/8maOyTjKQBSAQAA/////4AA8CQAHFgB0AgY8AgAEBKIBNgOEvAAFwk68AIWDTrdFyioFNEXLtQXLpAE2Csv0Bc5lXSYRKAk0Rcn1Bcn0BcnsFTQEDn43RMa8AATDTrwABMNOvAAEw062BMVlDvQJjbQEzbQEzbYFBnwAgkRGfUIACAuqGTRHzPUHzOQSNgXH6A00hcn0Bcn2Dc70B9JnXSgSKhk0R8z1B8z0B8zwBjQGEnQGEnQGEnQGEnQGEnQGEnwAwAYKPjlFx7wAAIRGfAAAhEZ8AACERngFBiQRPAFAhEZ+Pj49QYAHiOgNJlbnFuRCpAEkGTwCAAUGPAAAREnoATwAAERJ9gbH6AkmTvQFCbQFCbQFCbQFCbQFCbQFCbYKy/QFzmVdJhEoCTRFyfUFyfQFyewVJAEkASQBJAEkASQBPj4+PjwJxMNOvj4+PAJAA8T8AAXCTrwMAAQFIgLAAAAAAAAAAAAAP/JmjtAmSoADwAAAPTcKgAE3SoAFN0qADTdKgA03ioA5N4qAATgKgA04CoA9OAqABThKgBU4ioAlOQqAPTmKgDMVTcA3FU3AP/JmjucYSoAAQAAAIAHAAD/yZo7nGEqAAEAAACBBwAA/8maO6isKgAEAAAA/////+QAAAAAAAAAXFw/XAAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABcXC5cTlVMAP/JmjuorCoADgAAAP/////kAAAAAAAAAG5ld191bmNfcHJlZml4AAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABoYWRfcHJlZml4AAD/yZo7qKwqABAAAAD/////5AAAAAAAAABpbml0aWFsX3dpbmVycm9yAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHNwYXRoAAAAAAAAAAAAAAD/yZo7QJkqAAoAAAAUhCoA5Fk3ABgyNwD8WTcAEFo3AOxVNwAcLzcAcIA0AAxWNwDk3CoAAAAAAAAAAAD/yZo7QJkqABEAAACUHzcAgCcrAEwSNgAE+zYA9Ew3AGAeNwAwJTcAWCA3AIB/NADI1zMAhB43AOQnKwBoTzcAFH00AOBPNwDsUjcA1CgrAP/Jmjsk4ykAMAAAAP/////DLxFEAQDEAQpELgPECxlEKQPEKQVELgPGEBVGJgDGJgpHBwPGMA1HAgPHAgVHBwMAAAAAAAAAAAAAAAD/yZo7QJkqAAoAAAAULCsADDArAJhXNQCALzcALFY3AEBNNwBUVjcAeFY3AHxQNwCkVjcA/8maOyTjKQD6AQAA/////4AA3Q8XmASJfox+iATdCxWQZJ1F0Qsi1Asi8AAPCSTYFR+IRtgZKIhK2B0kiE7dEhSUKpEslCyIQ+UPF5gEiX6MfqUYrSKsK7Vn0So+1Co+0SE/1CE/0g8/0A8/2BckkH3wAwAQQAHwBgAWH4hG2BkniErYHSOITt0SFJQpkSuUK4hD5Q8XmASJfox+pRitJ9EhMtQhMtIPMtAPMtgXI5B82BUZl1+SX6BW0RUs1BUsiArYDxnwAAEJI6UlqAShK6Qr8AABCSPdExeYA5hUkT+UP4hE8AIHCTXdEySgVNETKtQTKohE2B8g0Awc0Awc+N0PFvAABAk18AAECTXwAAQJNdgPFfAAAQ0W2BAV2B8hnHvQDBzdEy6odNETNNQTNIhEiESIRIhEiESIRPj4+PjwCQQJNfj4+PAQABAa8AAPCSGYZJ9vmm+oZtEeNdQeNfAADwkh8AYAEBSPf4p/mHrRDyrUDyrwAAMNK9gYJqgUrWOwKqlvrG/QLj7QLj7UKT/RGD+QBZAF4BgcnVOgFplbnFuYXJhc1BgqkAXwBAcNId0TJKBV0RMr1BMrqHTSEzPQEzPYGyCQRPj43RMa8AAEDSHwAAQNIfAABA0h8AYAFBaUO9AiMtITMtATMtgbIJBE+Pj4+Pj4+Pj48AkEDSH4+PjwCgAQFIgLAAD/yZo7JOMpAAQAAAD/////XFw/XAAAAAD/yZo7JOMpAAIAAAD/////XFwAAP/Jmjsk4ykABwAAAP////9cXC5cTlVMAP/JmjuorCoAEQAAAP/////kAAAAAAAAAGdldHdpbmRvd3N2ZXJzaW9uAAAA/8maO6isKgAjAAAA/////+QAAAAAAAAAUmV0dXJuIGEgcmVsYXRpdmUgdmVyc2lvbiBvZiBhIHBhdGgA/8maO6isKgARAAAA/////+QAAAAAAAAAbm8gcGF0aCBzcGVjaWZpZWQAAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABwYXRoIGlzIG9uIG1vdW50IAAAAP/JmjuorCoAEQAAAP/////kAAAAAAAAACwgc3RhcnQgb24gbW91bnQgAAAA/8maO6isKgAbAAAA/////+QAAAAAAAAAcmVscGF0aC48bG9jYWxzPi48bGlzdGNvbXA+AAAAAAAAAAAA/8maO0CZKgACAAAAIGo0AHBVNAD/yZo7JOMpAB0AAAD/////gADQFTzQFTzQFTyYQbgh0BU8kGHQFTzQFTzQFTwAAAD/yZo7JOMpAB0AAAD/////gADQFDrQFDrQFDqYMbgB0BQ6kFHQFDrQFDrQFDoAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABzdGFydF9hYnMAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABwYXRoX2FicwAAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABzdGFydF9kcml2ZQD/yZo7qKwqAAoAAAD/////5AAAAAAAAABzdGFydF9yZXN0AAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABwYXRoX2RyaXZlAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABwYXRoX3Jlc3QAAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABzdGFydF9saXN0AAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABwYXRoX2xpc3QAAAD/yZo7qKwqAAIAAAD/////5AAAAAAAAABlMQAA/8maO6isKgACAAAA/////+QAAAAAAAAAZTIAAP/JmjuorCoACAAAAP/////kAAAAAAAAAHJlbF9saXN0AAAAAAAAAAAAAAAA/8maO0CZKgAQAAAAVFo3AKj1KgBY8SoAIEw3ACgqNAC0BisA6B03ABSEKgCQWjcAvFo3AOhaNwBcTjIA6E4yAOTcKgD03CoA0CA3AAAAAAAAAAAA/8maO0CZKgATAAAABPs2AEyLNACAJysATBI2AFxHNAC4HzcAlB83AKQeNwBgHjcA4P02ANT0NgDUKCsA5CcrADhHNAB0tTMANCg3AIDgMwBcKDcAVBs3AP/Jmjsk4ykAEwAAAP/////BIUQyRh0AxhQIRh0Axh07RxgDAAAAAAAAAAAA/8maO0CZKgARAAAAFCwrAEQNNgCAKzQA2B83APgfNwDEWzcA6Fs3AAxcNwAwXDcAVFw3AHhcNwCcXDcAwFw3AJR6NADkXDcAAF03ABxdNwD/yZo7JOMpAAQCAAD/////gADlCw2MOZBUiT+MP4BE3QcRkCSdBdEHHtQHHvAABwUW2A4TiAPYERWIBtgRFogGiAbgDhKIA9gRFIgG2BEViAbgBwyAfdgQFogF4AsP8AABBS7dDhjQGSzRDi3UDi3QCC3lDA6MSZBl0Qwc1AwcgEXwAhgFDt0UG51IoFWZT5xP0RQs1BQsiAndExqdOKBEmT6cPtETKtQTKogI3SIsqFnRIjfUIjfRCB+IC5Ba3SAqqDjRIDTUIDTRCB2ICpBJ3QsTkEvRCyDUCyClSKha0SQ41CQ40gs40As43RIckCrYEBqQCpAKmEuYS/ADAR4p8QABEyr0AAETKvAAAQ0q8AYAFj3QFTygGtchMdIhMbAj0SE21CE20BU80RU81BU8iArYFDrQFDqgCacPog+wA9EgNNQgNNAUOtEUOtQUOogJ4AwNiAHdFhmYKqBp0RYw1BYw8AADCRPwAAMJE4lGiEKQAt0PF5gCiXyMfJ14qAKZfJx80g8r0A8r2BAVkAXYDA2QEYlGiEGIQeAUGpA4nXOgOpl/nH+ocdEfMNETMbBJuGG4YrhitE3RE0GICNgPF/AAAQka2BMZiE3dDxOQWIh/0Age+N0MFZV6pT61PNVBU9ALVPAAAgUO8AACBQ7wAAIFDt0IE9QIJKBZsASwZdEIPNQIPNAIPNgIDfAFAgUO+Pj4AAAAAP/JmjuorCoARAAAAP/////kAAAAAAAAAEdpdmVuIGEgc2VxdWVuY2Ugb2YgcGF0aCBuYW1lcywgcmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gc3ViLXBhdGguAAAAAP/JmjuorCoAJQAAAP/////kAAAAAAAAAGNvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UAAAD/yZo7qKwqAB4AAAD/////5AAAAAAAAABjb21tb25wYXRoLjxsb2NhbHM+LjxsaXN0Y29tcD4AAAAAAAAAAAAA/8maO0CZKgADAAAApB43AGAuKwDUmDQAAAAAAAAAAAD/yZo7QJkqAAQAAAAgajQAAHQ0AJgYNwCAKzQA/8maOyTjKQAEAAAA/////yAggIAAAAAA/8maOyTjKQA7AAAA//////iAANAWUdAWUdAWUcBhlXqgIacpoimoRrBD0SI41CI41yI+0iI+0SJA1CJA0RdB1BdB0BZR0BZR0BZRAAAAAAAAAAAA/8maO0CZKgAEAAAAIGo0AJieNQAAdDQAgCs0AP/Jmjsk4ykABAAAAP////8gICCAAAAAAP/Jmjsk4ykAJwAAAP/////4gADQFjzQFjzQFjypBKgBqDGQcZd3kneYc5F8lHzQFjzQFjzQFjwA/8maO6isKgAdAAAA/////+QAAAAAAAAAY29tbW9ucGF0aC48bG9jYWxzPi48Z2VuZXhwcj4AAAD/yZo7JOMpADMAAAD/////+OgA6ACAANAYPtAYPqkkqCGoUZgRmDKYQZgynBWgI5oc0Bg+0Bg+0Bg+0Bg+0Bg+0Bg+AP/JmjuorCoAJQAAAP/////kAAAAAAAAAENhbid0IG1peCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcGF0aHMAAAAAAAAAAAAAAP/JmjtAmSoAAwAAACBqNACYnjUAAHQ0AP/Jmjsk4ykAJgAAAP/////oAOgAgADQEi3QEi2ZFJgRmEGQMdASLdASLdASLdASLdASLdASLQAA/8maO6isKgAfAAAA/////+QAAAAAAAAAUGF0aHMgZG9uJ3QgaGF2ZSB0aGUgc2FtZSBkcml2ZQAAAAAAAAAAAP/JmjtAmSoAAwAAACBqNAConzUA2B83AP/Jmjsk4ykAIwAAAP/////4gADQETnQETnQETmYAaBx0BE5qFGwJqpbqFuQIahbqFuoWwD/yZo7qKwqACkAAAD/////5AAAAAAAAABjb21tb25wYXRoLjxsb2NhbHM+LjxsaXN0Y29tcD4uPGxpc3Rjb21wPgAAAP/Jmjsk4ykAIwAAAP/////4gADQFzrQFzrQFzqYYagB0Bc6qGGwNqprqGuYAahrqGuoawAAAAAAAAAAAP/JmjtAmSoAAQAAACBXMgAAAAAAAAAAAP/JmjtAmSoAAwAAACBqNADoajQA2B83AP/Jmjsk4ykALgAAAP/////4gADQFlDQFlDQFlC4cdAXOtAXOtAXOtAXOqAx0Bc60Rc61Bc60BZQ0BZQ0BZQAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABkcml2ZXNwbGl0cwD/yZo7qKwqAAsAAAD/////5AAAAAAAAABzcGxpdF9wYXRocwD/yZo7qKwqAAYAAAD/////5AAAAAAAAABjb21tb24AAAAAAAAAAAAA/8maO0CZKgAUAAAAiGA3AOhgNwDk3CoAqPUqAHDxKgBY8SoAKCo0AEQqNAC0BisAoFMyAJBUMgBEVTIA+GI3ABSEKgD0VTIA9NwqAJBjNwCIVjIAuFcyAPAgNwAAAAAAAAAAAP/JmjtAmSoAFAAAAFxHNADgmjQAkHQ0AAT7NgBMizQAgCcrAEwSNgD8vDMA1CgrAKQeNwBgLisA4P02AOgRNwBUejQABBI3AOQnKwA4RzQAdLUzAFwoNwBUGzcA/8maOyTjKQAlAAAA/////8ElHUcYAMIDHUIhAMIgAUcYAMIhG0I8A8I8RBtHGADHGCVHPQMAAAAAAAAAAAAAAP/JmjtAmSoADwAAAIAoNwAMZTcAMGU3AIQeNwDoOzcAFCwrAFRlNwAoEjcARBI3AJR6NAConzUAmFc1AJgYNwDYHzcAgCs0AP/Jmjsk4ykADwAAAP////8gICAgICAgICAgICBAQEAA/8maOyTjKQB3AgAA//////j4+IAA8AYADBHwAAEFQgHdDhjQGUDRDkHUDkHQCEHlDBGVI5VilGmgFdESJ9QSJ9EMKNQMKIBF3QcRkCWYAZQonUXRByLUByLwAAcFFdgOE4gD2BEViAbYERWIBogG4A4SiAPYERSIBtgRFIgG8AQhBQ7YFlHQFlHQFlHQFlHQFlHINdAWUdEWUdQWUYgL2BY80BY80BY80BY8sAvQFjzRFjzUFjyIC/AEAwlQAd0VGNAYPtAYPtAYPtAYPrAr0Bg+0Rg+1Bg+0RU+1BU+iUaIRYhF+N0PGfAAAQlQAfAAAQlQAfAAAQlQAd0SHNAdRNESRdQSRcg00AxP8AMBCVAB+Pj49QwADA+Nc9ASLdASLaAb0BIt0RIt1BIt0Q8t1A8t0Qsu1AsusCHSCzPQCzPdEhzQHT7REj/UEj/QDD/lFiCgFaBxpBjXITHSITGwJrgj0SE+1CE+0RY/1BY/iQuIBYh02BEVlxqSGphDkR+UH4gG2BE50BE50BE50BE5mFbQETnRETnUETmIBuAWUNAWUNAWUNAWUMBL0BZQ0RZQ1BZQiAvdDRCQG9ENHdQNHYgC3Q0QkBvRDR3UDR2IAt0UHZhikU2UTfAABQkm8AAFCSaJRIhBiHHYDxCQQpBxlEWKeoh62BkfoAKgEaACnBqQBtgQFZAF8AUAEBrwCAAWHJhInVOgEplXnFeYSNQVJYhG4CAl0BEwkBWYE5EbkBuoNYgG2A8VmAOfCJoIoBbRGCjUGCjRDyjQCCj43QwVlX7QCybwAAIFDvAAAgUO8AACBQ7dCBPUCCSgXNAIOrBF0Ag60Ag60Ag60Ag62AgN8AUCBQ74+PgA/8maO6isKgAGAAAA/////+QAAAAAAAAAX2lzZGlyAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABfd2luYXBpAP/JmjuorCoA2QEAAP/////kAAAAAAAAAENvbW1vbiBvcGVyYXRpb25zIG9uIFBvc2l4IHBhdGhuYW1lcy4KCkluc3RlYWQgb2YgaW1wb3J0aW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5LCBpbXBvcnQgb3MgYW5kIHJlZmVyIHRvCnRoaXMgbW9kdWxlIGFzIG9zLnBhdGguICBUaGUgIm9zLnBhdGgiIG5hbWUgaXMgYW4gYWxpYXMgZm9yIHRoaXMKbW9kdWxlIG9uIFBvc2l4IHN5c3RlbXM7IG9uIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93cyksCm9zLnBhdGggcHJvdmlkZXMgdGhlIHNhbWUgb3BlcmF0aW9ucyBpbiBhIG1hbm5lciBzcGVjaWZpYyB0byB0aGF0CnBsYXRmb3JtLCBhbmQgaXMgYW4gYWxpYXMgdG8gYW5vdGhlciBtb2R1bGUgKGUuZy4gbnRwYXRoKS4KClNvbWUgb2YgdGhpcyBjYW4gYWN0dWFsbHkgYmUgdXNlZnVsIG9uIG5vbi1Qb3NpeCBzeXN0ZW1zIHRvbywgZS5nLgpmb3IgbWFuaXB1bGF0aW9uIG9mIHRoZSBwYXRobmFtZSBjb21wb25lbnQgb2YgVVJMcy4KAAAA/8maO6isKgANAAAA/////+QAAAAAAAAAL2JpbjovdXNyL2JpbgAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAC9kZXYvbnVsbAAAAP/JmjuorCoAEgAAAP/////kAAAAAAAAADxmcm96ZW4gcG9zaXhwYXRoPgAA/8maO6isKgAIAAAA/////+QAAAAAAAAAX2dldF9zZXAAAAAAAAAAAAAAAAD/yZo7QJkqAAMAAAAUhCoAcPEqAEQqNAD/yZo7JOMpAB4AAAD/////gADdBxGQJJ0F0Qce1Ace8AADBRPYDxOIdOAPEohzAAD/yZo7qKwqADYAAAD/////5AAAAAAAAABOb3JtYWxpemUgY2FzZSBvZiBwYXRobmFtZS4gIEhhcyBubyBlZmZlY3QgdW5kZXIgUG9zaXgAAAAAAAAAAAAA/8maO0CZKgABAAAAjGw3AAAAAAAAAAAA/8maO0CZKgACAAAABPs2AEyLNAD/yZo7JOMpABAAAAD/////gADlCw2MOZBRiTyMPNAEFwAAAAAAAAAAAAAAAP/JmjtAmSoAAQAAAHAmNwAAAAAAAAAAAP/JmjtAmSoABAAAAAT7NgBMizQAGGw3AMjXMwAAAAAAAAAAAP/JmjtAmSoAAgAAAOhqNACAKzQA/8maOyTjKQAsAAAA/////4AA5QgKjAmQIYkMjAyAQd0KEpAxiSuMK4BD2AsMjzyKPJgD0Qsc1Asc0AQcAAAAAP/JmjuorCoA5gAAAP/////kAAAAAAAAAEpvaW4gdHdvIG9yIG1vcmUgcGF0aG5hbWUgY29tcG9uZW50cywgaW5zZXJ0aW5nICcvJyBhcyBuZWVkZWQuCiAgICBJZiBhbnkgY29tcG9uZW50IGlzIGFuIGFic29sdXRlIHBhdGgsIGFsbCBwcmV2aW91cyBwYXRoIGNvbXBvbmVudHMKICAgIHdpbGwgYmUgZGlzY2FyZGVkLiAgQW4gZW1wdHkgbGFzdCBwYXJ0IHdpbGwgcmVzdWx0IGluIGEgcGF0aCB0aGF0CiAgICBlbmRzIHdpdGggYSBzZXBhcmF0b3IuAAAAAAAAAAAAAP/JmjtAmSoABAAAAMxtNwAUhCoA5NwqAOQnKwAAAAAAAAAAAP/JmjtAmSoACwAAAAT7NgBMizQAGGw3AJB0NADI1zMA/HQ0ADhHNAB0tTMANCg3AFwoNwBUGzcA/8maOyTjKQAMAAAA/////6dBKUIRAMIRLEI9AwAAAAAAAAAAAAAAAP/JmjtAmSoABQAAAJSVNgAAdDQAgCs0ABQsKwBYPzYA/8maOyTjKQD4AAAA/////4AA9QoACQuMCZAhiQyMDIBB3QoSkDGJK4wrgEPYCwyARPACDAUO2A8Q8AABCRvYDBCQEpAhkBKMSJBziU6ITt0RFJVSlFmgAdERItQRIvAABgkg8AAGCSCIQdgPEI98inyYQ9EPINQPIPAABQ0g2BcYkASQBNgVGfAAAw0gmFSfXZpdqDPRHS/UHS/wAAMNINgQFJgBkQmQBJAE4BAUmAOYYZkHkQ+QBJAE8A0GCSD49Q4ADRaVfqV80As08AACBQ7wAAIFDvAAAgUO3QgT1AgkoFaoUdAIM7AR0Agz0Agz0Agz0Agz2AgN8AUCBQ74+PjwBgAMEIBLAAAAAP/JmjuorCoAgAAAAP/////kAAAAAAAAAFNwbGl0IGEgcGF0aG5hbWUuICBSZXR1cm5zIHR1cGxlICIoaGVhZCwgdGFpbCkiIHdoZXJlICJ0YWlsIiBpcwogICAgZXZlcnl0aGluZyBhZnRlciB0aGUgZmluYWwgc2xhc2guICBFaXRoZXIgcGFydCBtYXkgYmUgZW1wdHkuAAAAAAAAAAAAAAAA/8maO0CZKgADAAAAhHA3APTcKgAUhCoAAAAAAAAAAAD/yZo7QJkqAAYAAAAE+zYATIs0ABhsNwCEeTQA1CgrAIBzNAAAAAAAAAAAAP/JmjtAmSoABQAAAAB0NACAKzQAlHo0AOCMNAD0dTQA/8maOyTjKQCAAAAA/////4AA9QYACQuMCZAhiQyMDIBB3QoSkDGJK4wrgEPYCAmPB4oHkAOJDIwMkHHRCBiAQdgREpAykEGQMpQVmAGYIZgimCKcBYgkgETYBwvwAAEFIJAEmAOdQ6AEmUmcSZkN0hAl0BAl2A8Tj3uKe5gz0Q8f1A8fiATYCw+QFIg60AQVAAAAAAAAAAAAAAAA/8maO0CZKgAFAAAAFIQqAHDxKgBY8SoARCo0ALQGKwAAAAAAAAAAAP/JmjtAmSoAAwAAAAB0NACAKzQAuBg3AP/Jmjsk4ykATgAAAP////+AAN0ICowJkCGJDIwMgEHdBxGQIZVV0Qcb1Acb8AAFBRXYDhKIA9gRFYgGiAbgDhGIA9gRFIgG3QsW1AsgoBGgQ6gUqHbRCzbUCzbQBDYAAP/JmjuorCoASgAAAP/////kAAAAAAAAAFNwbGl0IGEgcGF0aG5hbWUgaW50byBkcml2ZSBhbmQgcGF0aC4gT24gUG9zaXgsIGRyaXZlIGlzIGFsd2F5cwogICAgZW1wdHkuAAAAAAAAAAAAAP/JmjtAmSoAAwAAANByNwAUhCoA5NwqAP/Jmjsk4ykAIgAAAP////+AAPUGAAkLjAmQIYkMjAyAQdgLDIhSiGGIUow1kCGIOIBPAAAAAAAAAAAAAP/JmjtAmSoAAwAAAOA0NwD03CoAFIQqAAAAAAAAAAAA/8maO0CZKgAEAAAABPs2AEyLNAAYbDcAhHk0AAAAAAAAAAAA/8maO0CZKgADAAAAAHQ0AIArNACUejQA/8maOyTjKQA7AAAA/////4AA5QgKjAmQIYkMjAyAQd0KEpAxiSuMK4BD2AgJjweKB5ADiQyMDJBx0QgYgEHYCwyIUYhSiFKMNYBMAAAAAAAAAAAA/8maO0CZKgADAAAAfDU3APTcKgAUhCoAAAAAAAAAAAD/yZo7QJkqAAQAAAAAdDQAgCs0AJR6NADgjDQA/8maOyTjKQBtAAAA/////4AA5QgKjAmQIYkMjAyAQd0KEpAxiSuMK4BD2AgJjweKB5ADiQyMDJBx0QgYgEHYCwyIUohhiFKMNYBE2AcL8AABBSCQBJgDnUOgBJlJnEmZDdIQJdAQJdgPE497inuYM9EPH9QPH4gE2AsPgEsAAAD/yZo7qKwqACYAAAD/////5AAAAAAAAABUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGEgc3ltYm9saWMgbGluawAAAAAAAAAAAAD/yZo7QJkqAAIAAAD8dDcAENopAP/Jmjsk4ykAUQAAAP////+AAPAEAwUV3Q0PjFiQZIlejF6IAogC+N0ME5VapR7QCzDwAAEFFfAAAQUV8AABBRXYDxSIdYh18AMBBRX4+PjlCw+MPJgCnArRCyPUCyPQBCMAAAD/yZo7JOMpAEIAAAD/////gADwBAMFFd0ICowIkBSJDowOiA6IDvjdDBOVWtALIPAAAQUV8AABBRXwAAEFFdgPFIh1iHXwAwEFFfj4+OALD4g0AAD/yZo7qKwqACQAAAD/////5AAAAAAAAABUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGEgbW91bnQgcG9pbnQAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAZGV2MQAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABkZXYyAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGlubzEAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAaW5vMgAAAAAAAAAAAAAAAP/JmjtAmSoABQAAABB2NwAQ2ikAIEw3AOgdNwAA2ikAAAAAAAAAAAD/yZo7QJkqAA4AAAAE+zYAZDY3ABR8NACENjcANH00ABR9NABcRzQATIs0AIAnKwBMEjYA5CcrAHggNwAAFDcA4BM3AP/Jmjsk4ykAIQAAAP////+CFDIAshFBBwPBBgFBBwPCJBRCOQDCORFDDgPDDQFDDgMAAAAAAAAAAAAAAP/JmjtAmSoACAAAABQsKwAoEjcA1CsrAEQSNwBQdjcAcHY3AJB2NwCwdjcA/8maOyTjKQAnAQAA/////4AA8AQIBRndDQ+MWJBkiV6MXogC9QwADBCMPJgCnArRCyPUCyPwAAEJGdgTGJA18AMBCRn49QsADRSVWtALIPAAAgUV8AACBRXwAAIFFeAPFIh1iHXwBQIFFfj4+PUQAAwOjDmQVIk/jD+ARN0HEZAknQXRBx7UBx7wAAMFIt0RFZBkmEXRESLUESKIBogG5REVkGSYRNERIdQRIYgG3Q0VkGbRDR3UDR2ARvACAwUV3Q0PjFiQZtENHdQNHYgCiAL43QwTlVrQCyDwAAEFFfAAAQUV8AABBRXYDxSIdYh18AMBBRX4+PjwBgAMDow5gETYCw2MOYBE2AcLiHSCfIB82A8TiHTYCw2MOYBE2AsNjDmARNgHC4h0gnyAfNgPE4h02AsQiDUA/8maO6isKgBPAAAA/////+QAAAAAAAAARXhwYW5kIH4gYW5kIH51c2VyIGNvbnN0cnVjdGlvbnMuICBJZiB1c2VyIG9yICRIT01FIGlzIHVua25vd24sCiAgICBkbyBub3RoaW5nLgD/yZo7qKwqAAQAAAD/////5AAAAAAAAABIT01FAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAEFTQ0lJAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAdnh3b3JrcwD/yZo7qKwqAAMAAAD/////5AAAAAAAAABwd2QA/8maO6isKgAIAAAA/////+QAAAAAAAAAZ2V0cHd1aWQAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAZ2V0dWlkAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABwd19kaXIAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGdldHB3bmFtAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHB3ZW50AAAAAAAAAAAAAAD/yZo7QJkqAAsAAADkeDcA2PgqAPg6NwD03CoA5NwqAEx5NwAUhCoAbHk3AIx5NwBw8SoARCo0AAAAAAAAAAAA/8maO0CZKgAVAAAABPs2AEyLNACAJysATBI2AMjXMwAYbDcAYC83ANQoKwCsbDQArHk3ABDaMwDIeTcA7Hk3AAx6NwDE0DMAHEc0ACx6NwDYuDMAACs0ADAlNwCAczQA/8maOyTjKQBIAAAA/////8IVBEIaAMIaDEIpA8IoAUIpA8ItK0MZAMMZDEMoA8MnAUMoA8M/BEQEAMQEDEQTA8QSAUQTA8UGFUUcAMUcDEUrA8UqAUUrAwAAAAAAAAAAAAAAAP/JmjtAmSoACQAAABQsKwCkOzcAgCs0AJR6NACseTcAxDs3AMwqKwBQejcAsHU0AP/Jmjsk4ykAMwIAAP////+AAPUGAAwOjDmQVIk/jD+ARN0HEZAknQXRBx7UBx7wAAMFFNgQFIgFiAXgEBOIBdgLD48/ij+YNdELIdQLIfAAAQUU2A8TiAvdChKQNIkujC6AQ9gIDI8JigmQI5Bx0QgZ1AgZgEHYBwiIMYJ1gHXdDA+QBIlJjEmIAdgHCIhBgnaAdtgLEZ0SnBrQCyPQCyPwAgQNHNgQGpAKkAqQCpAK+N0THvAAAg0c8AACDRzwAAINHOAXG5ALkAuQC/AFAg0c+Pj48AYFDRzYGx6fPJo8rQKsCakLrAvRGzTUGzTUGzuQCJAI+N0TG/AAAw0c8AADDRzwAAMNHPAGABgckAuQC5AL8AcDDRz4+Pj1CgAYGpR6oCbUFymISIhI8AQECRjYDBaISohKiEqISvjdDxrwAAIJGPAAAgkY8AACCRjgExeIS4hLiEvwBQIJGPj4+PAGABAUkEGQYZBDjHmIBN0LFZBknUXRCyLUCyLwAAEJJt0TFpB0mFfREyXUEyWIRPACBQkY2BQXl0ySTKAU0RQm1BQmiEWIRfjdDxfwAAMJGPAAAwkY8AADCRjwBgAUGIhLiEuIS/AHAwkY+Pj48AgAFBmUPIgI4AcP0AcXnUOcTKhJ0hw10Bw12A8TiAvdBxGQJJ0F0Qce1Ace8AAEBRPdExWUO5h40RMo1BMoiAjYDxOIBIgE4A8SiATYDxePf4p/mHTRDyTUDySASNgMFJB0mEGYQphClHjRDB/QCyigRNAEKAD/yZo7qKwqAFoAAAD/////5AAAAAAAAABFeHBhbmQgc2hlbGwgdmFyaWFibGVzIG9mIGZvcm0gJHZhciBhbmQgJHt2YXJ9LiAgVW5rbm93biB2YXJpYWJsZXMKICAgIGFyZSBsZWZ0IHVuY2hhbmdlZC4AAP/JmjuorCoAEQAAAP/////kAAAAAAAAAFwkKFx3K3xce1tefV0qXH0pAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAX3ZhcnByb2diAAAA/8maO6isKgACAAAA/////+QAAAAAAAAAcmUAAP/JmjuorCoACAAAAP/////kAAAAAAAAAF92YXJwcm9nAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHNwYW4AAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAZ3JvdXAAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABlbmQA/8maO6isKgABAAAA/////+QAAAAAAAAAagAAAAAAAAAAAAAA/8maO0CZKgAPAAAA8H03AGjwKgDk3CoAFIQqAICCNwCQ+CoAwPgqALw/NwDgPzcAZH43AFwHKwAoBisAANopAPTcKgDU3CoAAAAAAAAAAAD/yZo7QJkqABQAAAAE+zYATIs0AIAnKwBMEjYAkH43ALR+NwBs3TQAbHk3AAT5MwCUJisA0H43AKxsNAD0fjcAFH83AMjXMwD8dDQAMCU3AFQlNwDUKCsAxNAzAP/Jmjsk4ykAEwAAAP/////EOUEBRiYAxiYMRjUDxjQBRjUDAAAAAAAAAAAA/8maO0CZKgAMAAAAFCwrALR+NwAE+TMARA02ADR/NwCsbDQAlHo0APQhNABQfzcAzCorAMz1MwD0dTQA/8maOyTjKQDmAQAA/////4AA9QYADA6MOZBUiT+MP4BE5QcRkCSdBdEHHtQHHvAAEwUd2AsPkHTQCxvQCxvYExeIS90PGPAAAglEAdgMFYhJiEmISdgYGp8KmgrQIzi4Irwo0RhD1BhDiEndERrUESGIBtgQFIgF2A4SiAPdEhmdIphqqCTREi/UEi+IB4gH4AsOkGSIP4g/2BMXiEvdDxfwAAIJQgHYDBWISYhJiEnYFxmXepJ60CI2uAK8CNEXQdQXQYhI3REZlB+IBtgQE4gF2A4RiAPdEhSUKogH2AgJgEHwAhMFGdgMEohGkDSYEYlPjE+IAdgPEPAAAQkS2AwR2A8Qj3aKdpBhiXmMeYkEiAGIMdgPEI93ineQcYl6jHqIBNgLD48/ij+YNdELIdQLIfAAAQkeoGSnbaJtsEPRJjjUJjjwAAEJHtgTF5gBmCKYBJQ6iETwAgsJGdgPFoh/3RganAulQqRKrXKse7g00S9A1C9A1CRB0RhC1BhCkAWQBeAYH6AEnA2QBfAIABQYmAGYApgClDiIRNgTF5gCmBGYApQ4mGXREyOIRN0QE5BEkQmUCYhB2AwQkESJTIhEiET49Q0AEBjwAAEJEvAAAQkS8AABCRLYEBGIQYhBiEHwAwEJEvj4+PAbEwUZ8CgADBCASwAA/8maOyTjKQARAAAA/////1wkKFx3K3xce1tefV0qXH0pAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAZW1wdHkAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABkb3Rkb3QAAP/JmjuorCoADwAAAP/////kAAAAAAAAAGluaXRpYWxfc2xhc2hlcwD/yZo7qKwqAAkAAAD/////5AAAAAAAAABuZXdfY29tcHMAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABjb21wAAAAAAAAAAAAAAAA/8maO0CZKgAMAAAAeEg3AHDxKgD07CoAWPEqACBMNwBEKjQA9AYrALQGKwDoHTcABN0qABTdKgDU3CoAAAAAAAAAAAD/yZo7QJkqAAkAAAAE+zYATIs0AIAnKwBMEjYAyNczAOD9NgBoISsA8Ac0AOQnKwAAAAAAAAAAAP/JmjtAmSoACQAAABQsKwCAKzQApII3AEQLNQDEgjcA5II3AIRJNwAMgzcAMIM3AP/Jmjsk4ykAaAEAAP////+AAOUPEYx5mBSJf4x/iATdCxWQZJ1F0Qsi1Asi8AAJCRrYEhaIQ9gUF4hF2BIWiEPYFRqIRohG4BIViEPYFBaIRdgSFYhD2BUZiEbYCw+QNYo9iD3YExaIStgaHp8vmi+oI9EaLtQaLogP8AgADRzwAAIJINgMEI9Pik+YQ6ABmUXRDCLUDCLwAwIJINgrL68/qj+4M7hxuTXRK0HUK0HwAwIJIOAeH4hP2BAUlwqSCpgzkQ+UD4gF2BQWiAnYFBnwAAcJIPAABwkgiETYDxOYBZhzkHzQDyPQDyPYEBjYEBSYBpIOkA6gf5AOuHmQDtgSG/ADABEf2CApqCKkDbAW0iA30CA32BAZ1xAg0hAgoBTRECbUECbQECbQECbYERrwAAENINgQGZcNkg2RD5QPkA/42BAZiAXYDxKPeIp4mAWJf4x/iATYCxrwAAEJLtgTFpB/0RMmqBTREy2IRNgPE4h7kHPQCBoAAAAA/8maO6isKgAYAAAA/////+QAAAAAAAAAUmV0dXJuIGFuIGFic29sdXRlIHBhdGguAAAAAAAAAAAAAAAA/8maO0CZKgABAAAAgIU3AP/Jmjsk4ykAYAAAAP////+AAOULDYw5kFSJP4w/gETdCxCQFIk7jDvwAAUFH90LFZBknUXRCyLUCyLwAAMJHt0SFJQqkSyULIhDiEPlEhSUKZErlCuIQ90PE5BDmBSJf4x/iATdCxOQRIk+jD7QBBkAAAAA/8maO6isKgBsAAAA/////+QAAAAAAAAAUmV0dXJuIHRoZSBjYW5vbmljYWwgcGF0aCBvZiB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lLCBlbGltaW5hdGluZyBhbnkKc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgaW4gdGhlIHBhdGguAAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9qb2lucmVhbHBhdGgAAAD/yZo7qKwqAAIAAAD/////5AAAAAAAAABvawAAAAAAAAAAAAD/yZo7QJkqAAMAAABAhjcAFIQqAOTcKgAAAAAAAAAAAP/JmjtAmSoABAAAAAT7NgBMizQAyIY3ALgfNwAAAAAAAAAAAP/JmjtAmSoABAAAAGglKwAMMCsAFCwrAPCGNwD/yZo7JOMpAD4AAAD/////gAD1BgAQEox5mBjRDyLUDyKASN0PHJhYoGKgcaBinFyoOLBWuFLRD0DUD0CBSIBEiCLdCxKQNIk9jD3QBBgAAP/JmjuorCoABwAAAP/////kAAAAAAAAAG5ld3BhdGgA/8maO6isKgAHAAAA/////+QAAAAAAAAAaXNfbGluawAAAAAAAAAAAP/JmjtAmSoACgAAABSEKgBw8SoAWPEqACBMNwBEKjQAtAYrAOgdNwD03CoAENopAADaKQAAAAAAAAAAAP/JmjtAmSoADgAAAIAnKwBMEjYAhB43ABBeNADg/TYA5CcrAAT7NgBkNjcAFHw0AIQ2NwA0fTQAFH00AMiGNwCUTzcA/8maOyTjKQASAAAA/////8IpFEMXAMMXD0MpA8MoAUMpAwAAAAAAAAAAAAD/yZo7QJkqAA0AAAAULCsAAI00AAwwKwDUvTMAgCs0ANgfNwD4HzcAzCorAGQIKwDEhzcAZOE0AOSHNwDwhjcA/8maOyTjKQANAAAA/////yAgICAgICAgICAgICAAAAD/yZo7JOMpAPkBAAD/////gADdBxGQJJ0F0Qce1Ace8AAHBRbYDhKIA9gRFYgG2BEWiAaIBuAOEYgD2BEUiAbYERWIBuUHDIhUgXuEe/AAAgUT2A8TkEGQQpBCjHiIBNgPEogE4AoO8QAsBR3YGByfDpoOoHPRGCvUGCuJDYgEiGGQFNgPE/AAAgkVkHSYdpJ+kH7gDBTYCw+QNoo+iD7gDxPwAAUNHt0dIqA0mVucW5EKkASQZNgTF5g2kj6QPt0bH6AEoGaoZtEbNdQbNZBE+OAXHZAE2AwU3RIWkHSYVNESItQSIogH8AIHCS/dEROUGJgn0REi1BEiiEL1DAAXG5RsoDKkOtEWLtQWLohHiEf49QsAEBfwAAMJHPAAAwkc8AADCRzYDxXwAAENFtgQFdgWG4hHiEeIR/AHAwkc+Pj48AwAEBfwAAIJFdgTGohE2AwU4AsSkGSIP4g/4BMXmAeUPYhE2A8T0A8f4BAY4A8V8AAFDTLlEBKUB5gH0RAg1BAg0BAg0BAg9QYAGByYR6BU0Rcq1BcqqEXQFzHQEDHYGByIBIhXiQ3dEyCgFKVypHuwN9EnO9QnO7hWwFTRE0rUE0qJCIgEiGLYDxHwAAEJK90TF5gEmGTREyPUEyOgVdATKtAMKtgYHIgEiFeJDfBZAQALD/EALAUd8FwBAAwQkBSIOtAEFQAAAP/Jmjsk4ykAHQAAAP////+AANAVQNAVQNAVQJhBuGHQFUCQYdAVQNAVQNAVQAAAAP/Jmjsk4ykAHQAAAP////+AANAUPtAUPtAUPpgxuEHQFD6QUdAUPtAUPtAUPgAAAAAAAAAAAAAA/8maO0CZKgAMAAAAVFo3AJBaNwBY8SoAcPEqACBMNwC0BisARCo0AOgdNwAUhCoAxHwyAFB9MgDQIDcAAAAAAAAAAAD/yZo7QJkqABAAAABcRzQABPs2AEyLNACAJysATBI2ALgfNwDg/TYA1CgrAIgJNwDkJysAOEc0AHS1MwA0KDcAgOAzAFwoNwBUGzcA/8maOyTjKQATAAAA/////8EiQhpEBgDDPQhEBgDEBjVEOwMAAAAAAAAAAAD/yZo7QJkqAAkAAAAULCsARA02ANgfNwCAKzQA+B83AJxcNwDAXDcAlHo0ABxdNwD/yZo7JOMpAFoBAAD/////gADwBgAMEPAAAQUu3Q4Y0Bks0Q4t1A4t0Agt5QsNjDmQVIk/jD+ARN0HEZAknQXRBx7UBx7wAAcFFtgRFYgG2A4SiAPYERaIBogG4BEUiAbYDhGIA9gRFYgG4AcMgH3YEBaIBYgF5RASlAmYJdEQINQQIIgF8AQMBQ7YFUDQFUClF6gVoR6kHtchNdIhNbBj0SE61CE60BVA0RVA1BVAiArYFD7QFD6lB6gEoQ2kDdcgM9IgM7BD0SA41CA40BQ+0RQ+1BQ+iAnlDA+VDJhqqCnQHTTREDXUEDXRDDbUDDaIAeAUGpA4nXOgOpl/nH+ocdEfMNETMbBJuGG4YrhitE3RE0GICNgPF/AAAQka2BMZiE3dDxOQWIh/0Age+N0MFZV+pXzVNUfQC0jwAAIFDvAAAgUO8AACBQ7dCBPUCCSgWbAEsGXRCDzUCDzQCDzYCA3wBQIFDvj4+AAAAAAAAAAAAAD/yZo7QJkqAAMAAAAgajQAFCwrAIArNAD/yZo7JOMpACMAAAD/////+IAA0BY50BY50BY5qDSQdJd6knqgI5F/lH/QFjnQFjnQFjkAAAAAAAAAAAD/yZo7QJkqAAMAAAAgajQAAHQ0AIArNAD/yZo7JOMpAC8AAAD/////+OgA6ACAANAYNdAYNaghmBGYMphBmDKcFaAjmhzQGDXQGDXQGDXQGDXQGDXQGDUAAAAAAAAAAAD/yZo7QJkqAAEAAAAkgjIAAAAAAAAAAAD/yZo7QJkqAA0AAACIYDcA6GA3AOTcKgBw8SoAWPEqAEQqNAC0BisAzIAyAHyBMgD4YjcAFIQqALyCMgDwIDcAAAAAAAAAAAD/yZo7QJkqABAAAABcRzQA4Jo0AJB0NAAE+zYATIs0AIAnKwBMEjYA/LwzAOgRNwBUejQABBI3AOQnKwA4RzQAdLUzAFwoNwBUGzcA/8maOyTjKQAlAAAA/////8EgDkQsAMEvHUINAMIMAUQsAMING0IoA8IoQgNELADELCVFEQMAAAAAAAAAAAAAAP/JmjtAmSoACwAAAIAoNwAwZTcAhB43ACgSNwBEEjcAVGU3AJR6NAConzUAmFc1ANgfNwCAKzQA/8maOyTjKQALAAAA/////yAgICAgICAgIEBAAP/Jmjsk4ykAwAEAAP/////4+IAA8AYADBHwAAEFQgHdDhjQGUDRDkHUDkHQCEHlDBGVI5VilGmgFdESJ9QSJ9EMKNQMKIBF3QcRkCWYAZQonUXRByLUByLwAAUFFdgOEogD2BEViAaIBuAOEYgD2BEUiAbwBBUFDtgWOdAWOdAWOdAWObA10BY50RY51BY5iAvwBAMJUAHdFRjQGDXQGDXQGDXQGDWoddAYNdEYNdQYNdEVNdQVNYlGiEWIRfjdDxnwAAEJUAHwAAEJUAHwAAEJUAHdEhzQHUTREkXUEkXINNAMT/ADAQlQAfj4+PAGABdRAdAWUNAWUNAWUMBL0BZQ0RZQ1BZQiAvdDRCQG9ENHdQNHYgC3Q0QkBvRDR3UDR2IAtgRE4gG3RQdmGKRTZRN8AADCRbwAAMJFolEiEGIcdgPEJBCkHGURYp6iHrYGRuYQphRmEKcFpAG2BAVkAXwBQAQGvAIABke0BEqkBOQE6AzoHKoAaBypDeIBtgPFZgDnwiaCKAW0Rgo1Bgo0Q8o0Ago+N0MFZV+0Asm8AACBQ7wAAIFDvAAAgUO3QgT1AgkoFzQCDqwRdAIOtAIOtAIOtAIOtgIDfAFAgUO+Pj4AAAAAP/JmjuorCoATgQAAP/////kAAAAAAAAAE9TIHJvdXRpbmVzIGZvciBOVCBvciBQb3NpeCBkZXBlbmRpbmcgb24gd2hhdCBzeXN0ZW0gd2UncmUgb24uCgpUaGlzIGV4cG9ydHM6CiAgLSBhbGwgZnVuY3Rpb25zIGZyb20gcG9zaXggb3IgbnQsIGUuZy4gdW5saW5rLCBzdGF0LCBldGMuCiAgLSBvcy5wYXRoIGlzIGVpdGhlciBwb3NpeHBhdGggb3IgbnRwYXRoCiAgLSBvcy5uYW1lIGlzIGVpdGhlciAncG9zaXgnIG9yICdudCcKICAtIG9zLmN1cmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IChhbHdheXMgJy4nKQogIC0gb3MucGFyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFyZW50IGRpcmVjdG9yeSAoYWx3YXlzICcuLicpCiAgLSBvcy5zZXAgaXMgdGhlIChvciBhIG1vc3QgY29tbW9uKSBwYXRobmFtZSBzZXBhcmF0b3IgKCcvJyBvciAnXFwnKQogIC0gb3MuZXh0c2VwIGlzIHRoZSBleHRlbnNpb24gc2VwYXJhdG9yIChhbHdheXMgJy4nKQogIC0gb3MuYWx0c2VwIGlzIHRoZSBhbHRlcm5hdGUgcGF0aG5hbWUgc2VwYXJhdG9yIChOb25lIG9yICcvJykKICAtIG9zLnBhdGhzZXAgaXMgdGhlIGNvbXBvbmVudCBzZXBhcmF0b3IgdXNlZCBpbiAkUEFUSCBldGMKICAtIG9zLmxpbmVzZXAgaXMgdGhlIGxpbmUgc2VwYXJhdG9yIGluIHRleHQgZmlsZXMgKCdccicgb3IgJ1xuJyBvciAnXHJcbicpCiAgLSBvcy5kZWZwYXRoIGlzIHRoZSBkZWZhdWx0IHNlYXJjaCBwYXRoIGZvciBleGVjdXRhYmxlcwogIC0gb3MuZGV2bnVsbCBpcyB0aGUgZmlsZSBwYXRoIG9mIHRoZSBudWxsIGRldmljZSAoJy9kZXYvbnVsbCcsIGV0Yy4pCgpQcm9ncmFtcyB0aGF0IGltcG9ydCBhbmQgdXNlICdvcycgc3RhbmQgYSBiZXR0ZXIgY2hhbmNlIG9mIGJlaW5nCnBvcnRhYmxlIGJldHdlZW4gZGlmZmVyZW50IHBsYXRmb3Jtcy4gIE9mIGNvdXJzZSwgdGhleSBtdXN0IHRoZW4Kb25seSB1c2UgZnVuY3Rpb25zIHRoYXQgYXJlIGRlZmluZWQgYnkgYWxsIHBsYXRmb3JtcyAoZS5nLiwgdW5saW5rCmFuZCBvcGVuZGlyKSwgYW5kIGxlYXZlIGFsbCBwYXRobmFtZSBtYW5pcHVsYXRpb24gdG8gb3MucGF0aAooZS5nLiwgc3BsaXQgYW5kIGpvaW4pLgoAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGxpbmVzZXAA/8maO6isKgANAAAA/////+QAAAAAAAAAZ2V0X2V4ZWNfcGF0aAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGZkb3BlbgAA/8maO6isKgALAAAA/////+QAAAAAAAAAPGZyb3plbiBvcz4A/8maO6isKgAHAAAA/////+QAAAAAAAAAX2V4aXN0cwAAAAAAAAAAAP/JmjtAmSoAAQAAAExaNAD/yZo7JOMpABEAAAD/////gADYCw+VN5E5lDnQCxzQBBwAAAD/yZo7qKwqACUAAAD/////5AAAAAAAAABfZ2V0X2V4cG9ydHNfbGlzdC48bG9jYWxzPi48bGlzdGNvbXA+AAAAAAAAAAAAAAD/yZo7QJkqAAIAAADk3CoAZAgrAAAAAAAAAAAA/8maO0CZKgACAAAAIGo0AASzNgD/yZo7JOMpACEAAAD/////gADQDzbQDzbQDzaQYaghqEGsJLAjqiuoK5ABqCuoK6grAAAA/8maO6isKgARAAAA/////+QAAAAAAAAAX2dldF9leHBvcnRzX2xpc3QAAAAAAAAAAAAAAP/JmjtAmSoAAgAAABSEKgAQhzIAAAAAAAAAAAD/yZo7QJkqAAQAAAA8+zMAqAkrAHS1MwDo+jYA/8maOyTjKQAMAAAA/////4ITFgCWIzwDuwE8AwAAAAD/yZo7JOMpAFIAAAD/////gADwAgMFN90PE5BGlE7RDyPUDyPQCCP43QsZ8AABBTfwAAEFN/AAAQU32A820A82nTOYdpk7nDvQDzbRDzbUDzbQCDbQCDbQCDbwAwEFN/j4+AAA/8maO6isKgAFAAAA/////+QAAAAAAAAAX2V4aXQAAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAABfaGF2ZV9mdW5jdGlvbnMA/8maO6isKgACAAAA/////+QAAAAAAAAADQoAAP/JmjuorCoAGwAAAP/////kAAAAAAAAAG5vIG9zIHNwZWNpZmljIG1vZHVsZSBmb3VuZAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABvcy5wYXRoAP/JmjuorCoACAAAAP/////kAAAAAAAAAF9nbG9iYWxzAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAF9zZXQAAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAX2FkZAAAAAAAAAAAAAAAAP/JmjtAmSoABAAAAFiZNwDAmDcAfJk3AEwhKwAAAAAAAAAAAP/JmjtAmSoAAgAAABxHNABsQDUA/8maOyTjKQA+AAAA/////4AA2AwOlSiITohOoBOtD9AhN9AhN90MEI9IikiVWJhilFzRDCLUDCLQDCLQDCLQDCLwAwANG4hO0CE30CE3AAD/yZo7qKwqAA4AAAD/////5AAAAAAAAABIQVZFX0ZBQ0NFU1NBVAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAYWNjZXNzAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABIQVZFX0ZDSE1PREFUAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAY2htb2QAAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABIQVZFX0ZDSE9XTkFUAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAY2hvd24AAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABIQVZFX0ZTVEFUQVQAAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAASEFWRV9GVVRJTUVTQVQAAP/JmjuorCoABQAAAP/////kAAAAAAAAAHV0aW1lAAAA/8maO6isKgALAAAA/////+QAAAAAAAAASEFWRV9MSU5LQVQA/8maO6isKgAEAAAA/////+QAAAAAAAAAbGluawAAAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABIQVZFX01LRElSQVQAAAAA/8maO6isKgANAAAA/////+QAAAAAAAAASEFWRV9NS0ZJRk9BVAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAG1rZmlmbwAA/8maO6isKgAMAAAA/////+QAAAAAAAAASEFWRV9NS05PREFUAAAAAP/JmjuorCoABQAAAP/////kAAAAAAAAAG1rbm9kAAAA/8maO6isKgALAAAA/////+QAAAAAAAAASEFWRV9PUEVOQVQA/8maO6isKgAPAAAA/////+QAAAAAAAAASEFWRV9SRUFETElOS0FUAP/JmjuorCoADQAAAP/////kAAAAAAAAAEhBVkVfUkVOQU1FQVQAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAAByZW5hbWUAAP/JmjuorCoADgAAAP/////kAAAAAAAAAEhBVkVfU1lNTElOS0FUAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABzeW1saW5rAP/JmjuorCoADQAAAP/////kAAAAAAAAAEhBVkVfVU5MSU5LQVQAAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABybWRpcgAAAP/JmjuorCoADgAAAP/////kAAAAAAAAAEhBVkVfVVRJTUVOU0FUAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABIQVZFX0ZDSERJUgD/yZo7qKwqAAUAAAD/////5AAAAAAAAABjaGRpcgAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAEhBVkVfRkNITU9EAP/JmjuorCoACwAAAP/////kAAAAAAAAAEhBVkVfRkNIT1dOAP/JmjuorCoADgAAAP/////kAAAAAAAAAEhBVkVfRkRPUEVORElSAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABzY2FuZGlyAP/JmjuorCoADAAAAP/////kAAAAAAAAAEhBVkVfRkVYRUNWRQAAAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABleGVjdmUAAP/JmjuorCoADgAAAP/////kAAAAAAAAAEhBVkVfRlRSVU5DQVRFAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABIQVZFX0ZV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CiAgICAgICAgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcwoKICAgIGRpcnBhdGggaXMgYSBzdHJpbmcsIHRoZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkuICBkaXJuYW1lcyBpcyBhIGxpc3Qgb2YKICAgIHRoZSBuYW1lcyBvZiB0aGUgc3ViZGlyZWN0b3JpZXMgaW4gZGlycGF0aCAoaW5jbHVkaW5nIHN5bWxpbmtzIHRvIGRpcmVjdG9yaWVzLAogICAgYW5kIGV4Y2x1ZGluZyAnLicgYW5kICcuLicpLgogICAgZmlsZW5hbWVzIGlzIGEgbGlzdCBvZiB0aGUgbmFtZXMgb2YgdGhlIG5vbi1kaXJlY3RvcnkgZmlsZXMgaW4gZGlycGF0aC4KICAgIE5vdGUgdGhhdCB0aGUgbmFtZXMgaW4gdGhlIGxpc3RzIGFyZSBqdXN0IG5hbWVzLCB3aXRoIG5vIHBhdGggY29tcG9uZW50cy4KICAgIFRvIGdldCBhIGZ1bGwgcGF0aCAod2hpY2ggYmVnaW5zIHdpdGggdG9wKSB0byBhIGZpbGUgb3IgZGlyZWN0b3J5IGluCiAgICBkaXJwYXRoLCBkbyBvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkuCgogICAgSWYgb3B0aW9uYWwgYXJnICd0b3Bkb3duJyBpcyB0cnVlIG9yIG5vdCBzcGVjaWZpZWQsIHRoZSB0cmlwbGUgZm9yIGEKICAgIGRpcmVjdG9yeSBpcyBnZW5lcmF0ZWQgYmVmb3JlIHRoZSB0cmlwbGVzIGZvciBhbnkgb2YgaXRzIHN1YmRpcmVjdG9yaWVzCiAgICAoZGlyZWN0b3JpZXMgYXJlIGdlbmVyYXRlZCB0b3AgZG93bikuICBJZiB0b3Bkb3duIGlzIGZhbHNlLCB0aGUgdHJpcGxlCiAgICBmb3IgYSBkaXJlY3RvcnkgaXMgZ2VuZXJhdGVkIGFmdGVyIHRoZSB0cmlwbGVzIGZvciBhbGwgb2YgaXRzCiAgICBzdWJkaXJlY3RvcmllcyAoZGlyZWN0b3JpZXMgYXJlIGdlbmVyYXRlZCBib3R0b20gdXApLgoKICAgIFdoZW4gdG9wZG93biBpcyB0cnVlLCB0aGUgY2FsbGVyIGNhbiBtb2RpZnkgdGhlIGRpcm5hbWVzIGxpc3QgaW4tcGxhY2UKICAgIChlLmcuLCB2aWEgZGVsIG9yIHNsaWNlIGFzc2lnbm1lbnQpLCBhbmQgd2FsayB3aWxsIG9ubHkgcmVjdXJzZSBpbnRvIHRoZQogICAgc3ViZGlyZWN0b3JpZXMgd2hvc2UgbmFtZXMgcmVtYWluIGluIGRpcm5hbWVzOyB0aGlzIGNhbiBiZSB1c2VkIHRvIHBydW5lIHRoZQogICAgc2VhcmNoLCBvciB0byBpbXBvc2UgYSBzcGVjaWZpYyBvcmRlciBvZiB2aXNpdGluZy4gIE1vZGlmeWluZyBkaXJuYW1lcyB3aGVuCiAgICB0b3Bkb3duIGlzIGZhbHNlIGhhcyBubyBlZmZlY3Qgb24gdGhlIGJlaGF2aW9yIG9mIG9zLndhbGsoKSwgc2luY2UgdGhlCiAgICBkaXJlY3RvcmllcyBpbiBkaXJuYW1lcyBoYXZlIGFscmVhZHkgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIHRpbWUgZGlybmFtZXMKICAgIGl0c2VsZiBpcyBnZW5lcmF0ZWQuIE5vIG1hdHRlciB0aGUgdmFsdWUgb2YgdG9wZG93biwgdGhlIGxpc3Qgb2YKICAgIHN1YmRpcmVjdG9yaWVzIGlzIHJldHJpZXZlZCBiZWZvcmUgdGhlIHR1cGxlcyBmb3IgdGhlIGRpcmVjdG9yeSBhbmQgaXRzCiAgICBzdWJkaXJlY3RvcmllcyBhcmUgZ2VuZXJhdGVkLgoKICAgIEJ5IGRlZmF1bHQgZXJyb3JzIGZyb20gdGhlIG9zLnNjYW5kaXIoKSBjYWxsIGFyZSBpZ25vcmVkLiAgSWYKICAgIG9wdGlvbmFsIGFyZyAnb25lcnJvcicgaXMgc3BlY2lmaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbjsgaXQKICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50LCBhbiBPU0Vycm9yIGluc3RhbmNlLiAgSXQgY2FuCiAgICByZXBvcnQgdGhlIGVycm9yIHRvIGNvbnRpbnVlIHdpdGggdGhlIHdhbGssIG9yIHJhaXNlIHRoZSBleGNlcHRpb24KICAgIHRvIGFib3J0IHRoZSB3YWxrLiAgTm90ZSB0aGF0IHRoZSBmaWxlbmFtZSBpcyBhdmFpbGFibGUgYXMgdGhlCiAgICBmaWxlbmFtZSBhdHRyaWJ1dGUgb2YgdGhlIGV4Y2VwdGlvbiBvYmplY3QuCgogICAgQnkgZGVmYXVsdCwgb3Mud2FsayBkb2VzIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MgdG8gc3ViZGlyZWN0b3JpZXMgb24KICAgIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZW0uICBJbiBvcmRlciB0byBnZXQgdGhpcyBmdW5jdGlvbmFsaXR5LCBzZXQgdGhlCiAgICBvcHRpb25hbCBhcmd1bWVudCAnZm9sbG93bGlua3MnIHRvIHRydWUuCgogICAgQ2F1dGlvbjogIGlmIHlvdSBwYXNzIGEgcmVsYXRpdmUgcGF0aG5hbWUgZm9yIHRvcCwgZG9uJ3QgY2hhbmdlIHRoZQogICAgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBiZXR3ZWVuIHJlc3VtcHRpb25zIG9mIHdhbGsuICB3YWxrIG5ldmVyCiAgICBjaGFuZ2VzIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgYW5kIGFzc3VtZXMgdGhhdCB0aGUgY2xpZW50IGRvZXNuJ3QKICAgIGVpdGhlci4KCiAgICBFeGFtcGxlOgoKICAgIGltcG9ydCBvcwogICAgZnJvbSBvcy5wYXRoIGltcG9ydCBqb2luLCBnZXRzaXplCiAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsaygncHl0aG9uL0xpYi9lbWFpbCcpOgogICAgICAgIHByaW50KHJvb3QsICJjb25zdW1lcyAiKQogICAgICAgIHByaW50KHN1bShnZXRzaXplKGpvaW4ocm9vdCwgbmFtZSkpIGZvciBuYW1lIGluIGZpbGVzKSwgZW5kPSIgIikKICAgICAgICBwcmludCgiYnl0ZXMgaW4iLCBsZW4oZmlsZXMpLCAibm9uLWRpcmVjdG9yeSBmaWxlcyIpCiAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcwoKICAgIAAA/8ma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YXJlIG9ubHkgdmFsaWQgdW50aWwgdGhlCiAgICAgICAgbmV4dCBpdGVyYXRpb24gc3RlcCwgc28geW91IHNob3VsZCBkdXAoKSB0aGVtIGlmIHlvdSB3YW50IHRvIGtlZXAgdGhlbQogICAgICAgIGZvciBhIGxvbmdlciBwZXJpb2QuCgogICAgICAgIEV4YW1wbGU6CgogICAgICAgIGltcG9ydCBvcwogICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCdweXRob24vTGliL2VtYWlsJyk6CiAgICAgICAgICAgIHByaW50KHJvb3QsICJjb25zdW1lcyIsIGVuZD0iIikKICAgICAgICAgICAgcHJpbnQoc3VtKG9zLnN0YXQobmFtZSwgZGlyX2ZkPXJvb3RmZCkuc3Rfc2l6ZSBmb3IgbmFtZSBpbiBmaWxlcyksCiAgICAgICAgICAgICAgICAgIGVuZD0iIikKICAgICAgICAgICAgcHJpbnQoImJ5dGVzIGluIiwgbGVuKGZpbGVzKSwgIm5vbi1kaXJlY3RvcnkgZmlsZXMiKQogICAgICAgICAgICBpZiAnQ1ZTJyBpbiBkaXJzOgogICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcwogICAgICAgIAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAb3MuZndhbGsAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAT19SRE9OTFkAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAX2Z3YWxrAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABmd2FsawAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAG9yaWdfc3QA/8maO6isKgAFAAAA/////+QAAAAAAAAAdG9wZmQAAAAAAAAAAAAAAP/JmjtAmSoABgAAAHy/NwCYxDcAENopAKiaMwBUxzcAFIQqAAAAAAAAAAAA/8maO0CZKgAPAAAA2LgzAPi3NwBMizQAFHw0ALQrKwC8xDcAZOE0ANANNwA0fTQAFCwrAOgKNwDgxDcAgCcrAEwSNgCQIisA/8maOyTjKQANAAAA////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AAAAAABzdXBwb3J0c19kaXJfZmQA/8maO6isKgAWAAAA/////+QAAAAAAAAAc3VwcG9ydHNfZWZmZWN0aXZlX2lkcwAA/8maO6isKgALAAAA/////+QAAAAAAAAAc3VwcG9ydHNfZmQA/8maO6isKgAYAAAA/////+QAAAAAAAAAc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzAAAAAP/JmjuorCoAtgsAAP/////kAAAAAAAAAEFwcGVuZCBtb2R1bGUgc2VhcmNoIHBhdGhzIGZvciB0aGlyZC1wYXJ0eSBwYWNrYWdlcyB0byBzeXMucGF0aC4KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBUaGlzIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpUaGlzIHdpbGwgYXBwZW5kIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4gIE9uClVuaXggKGluY2x1ZGluZyBNYWMgT1NYKSwgaXQgc3RhcnRzIHdpdGggc3lzLnByZWZpeCBhbmQKc3lzLmV4ZWNfcHJlZml4IChpZiBkaWZmZXJlbnQpIGFuZCBhcHBlbmRzCmxpYi9weXRob248dmVyc2lvbj4vc2l0ZS1wYWNrYWdlcy4KT24gb3RoZXIgcGxhdGZvcm1zIChzdWNoIGFzIFdpbmRvd3MpLCBpdCB0cmllcyBlYWNoIG9mIHRoZQpwcmVmaXhlcyBkaXJlY3RseSwgYXMgd2VsbCBhcyB3aXRoIGxpYi9zaXRlLXBhY2thZ2VzIGFwcGVuZGVkLiAgVGhlCnJlc3VsdGluZyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlIGFwcGVuZGVkIHRvIHN5cy5wYXRoLCBhbmQKYWxzbyBpbnNwZWN0ZWQgZm9yIHBhdGggY29uZmlndXJhdGlvbiBmaWxlcy4KCklmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCnN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAppdCBpcyBhbHNvIGNoZWNrZWQgZm9yIHNpdGUtcGFja2FnZXMgKHN5cy5iYXNlX3ByZWZpeCBhbmQKc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCmluc3RhbGxhdGlvbikuIElmICJweXZlbnYuY2ZnIiAoYSBib290c3RyYXAgY29uZmlndXJhdGlvbiBmaWxlKSBjb250YWlucwp0aGUga2V5ICJpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzIiBzZXQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiAiZmFsc2UiCihjYXNlLWluc2Vuc2l0aXZlKSwgdGhlIHN5c3RlbS1sZXZlbCBwcmVmaXhlcyB3aWxsIHN0aWxsIGFsc28gYmUKc2VhcmNoZWQgZm9yIHNpdGUtcGFja2FnZXM7IG90aGVyd2lzZSB0aGV5IHdvbid0LgoKQWxsIG9mIHRoZSByZXN1bHRpbmcgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlCmFwcGVuZGVkIHRvIHN5cy5wYXRoLCBhbmQgYWxzbyBpbnNwZWN0ZWQgZm9yIHBhdGggY29uZmlndXJhdGlvbgpmaWxlcy4KCkEgcGF0aCBjb25maWd1cmF0aW9uIGZpbGUgaXMgYSBmaWxlIHdob3NlIG5hbWUgaGFzIHRoZSBmb3JtCjxwYWNrYWdlPi5wdGg7IGl0cyBjb250ZW50cyBhcmUgYWRkaXRpb25hbCBkaXJlY3RvcmllcyAob25lIHBlciBsaW5lKQp0byBiZSBhZGRlZCB0byBzeXMucGF0aC4gIE5vbi1leGlzdGluZyBkaXJlY3RvcmllcyAob3IKbm9uLWRpcmVjdG9yaWVzKSBhcmUgbmV2ZXIgYWRkZWQgdG8gc3lzLnBhdGg7IG5vIGRpcmVjdG9yeSBpcyBhZGRlZCB0bwpzeXMucGF0aCBtb3JlIHRoYW4gb25jZS4gIEJsYW5rIGxpbmVzIGFuZCBsaW5lcyBiZWdpbm5pbmcgd2l0aAonIycgYXJlIHNraXBwZWQuIExpbmVzIHN0YXJ0aW5nIHdpdGggJ2ltcG9ydCcgYXJlIGV4ZWN1dGVkLgoKRm9yIGV4YW1wbGUsIHN1cHBvc2Ugc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4IGFyZSBzZXQgdG8KL3Vzci9sb2NhbCBhbmQgdGhlcmUgaXMgYSBkaXJlY3RvcnkgL3Vzci9sb2NhbC9saWIvcHl0aG9uMi41L3NpdGUtcGFja2FnZXMKd2l0aCB0aHJlZSBzdWJkaXJlY3RvcmllcywgZm9vLCBiYXIgYW5kIHNwYW0sIGFuZCB0d28gcGF0aApjb25maWd1cmF0aW9uIGZpbGVzLCBmb28ucHRoIGFuZCBiYXIucHRoLiAgQXNzdW1lIGZvby5wdGggY29udGFpbnMgdGhlCmZvbGxvd2luZzoKCiAgIyBmb28gcGFja2FnZSBjb25maWd1cmF0aW9uCiAgZm9vCiAgYmFyCiAgYmxldGNoCgphbmQgYmFyLnB0aCBjb250YWluczoKCiAgIyBiYXIgcGFja2FnZSBjb25maWd1cmF0aW9uCiAgYmFyCgpUaGVuIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3JpZXMgYXJlIGFkZGVkIHRvIHN5cy5wYXRoLCBpbiB0aGlzIG9yZGVyOgoKICAvdXNyL2xvY2FsL2xpYi9weXRob24yLjUvc2l0ZS1wYWNrYWdlcy9iYXIKICAvdXNyL2xvY2FsL2xpYi9weXRob24yLjUvc2l0ZS1wYWNrYWdlcy9mb28KCk5vdGUgdGhhdCBibGV0Y2ggaXMgb21pdHRlZCBiZWNhdXNlIGl0IGRvZXNuJ3QgZXhpc3Q7IGJhciBwcmVjZWRlcyBmb28KYmVjYXVzZSBiYXIucHRoIGNvbWVzIGFscGhhYmV0aWNhbGx5IGJlZm9yZSBmb28ucHRoOyBhbmQgc3BhbSBpcwpvbWl0dGVkIGJlY2F1c2UgaXQgaXMgbm90IG1lbnRpb25lZCBpbiBlaXRoZXIgcGF0aCBjb25maWd1cmF0aW9uIGZpbGUuCgpUaGUgcmVhZGxpbmUgbW9kdWxlIGlzIGFsc28gYXV0b21hdGljYWxseSBjb25maWd1cmVkIHRvIGVuYWJsZQpjb21wbGV0aW9uIGZvciBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdC4gIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4Kc2l0ZWN1c3RvbWl6ZSwgdXNlcmN1c3RvbWl6ZSBvciBQWVRIT05TVEFSVFVQLiAgU3RhcnRpbmcgUHl0aG9uIGluCmlzb2xhdGVkIG1vZGUgKC1JKSBkaXNhYmxlcyBhdXRvbWF0aWMgcmVhZGxpbmUgY29uZmlndXJhdGlvbi4KCkFmdGVyIHRoZXNlIG9wZXJhdGlvbnMsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBpbXBvcnQgYSBtb2R1bGUKbmFtZWQgc2l0ZWN1c3RvbWl6ZSwgd2hpY2ggY2FuIHBlcmZvcm0gYXJiaXRyYXJ5IGFkZGl0aW9uYWwKc2l0ZS1zcGVjaWZpYyBjdXN0b21pemF0aW9ucy4gIElmIHRoaXMgaW1wb3J0IGZhaWxzIHdpdGggYW4KSW1wb3J0RXJyb3IgZXhjZXB0aW9uLCBpdCBpcyBzaWxlbnRseSBpZ25vcmVkLgoAAP/JmjuorCoADQAAAP/////kAAAAAAAAADxmcm96ZW4gc2l0ZT4AAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABfdHJhY2UAAAAAAAAAAAAA/8maO0CZKgACAAAAFIQqADixMwAAAAAAAAAAAP/JmjtAmSoABQAAANi4MwCI1zMAqNczAOzXMwCsLysAAAAAAAAAAAD/yZo7QJkqAAEAAAA42DMA/8maOyTjKQA0AAAA/////4AA3QcKhHnUBxjwAAEFKN0IDYhnnUOcStAIJ9EIJ9QIJ9AIJ9AIJ9AIJ/ADAQUo8AABBSgAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAbWFrZXBhdGgAAAAAAAAAAAAAAAD/yZo7QJkqAAYAAAAE+zYAFCwrAOQnKwC4HzcAFH00AGAeNwD/yZo7JOMpAA8AAAD/////lR81ALUKQQIDwQEBQQIDAAAAAAAAAAAA/8maO0CZKgACAAAAgCg3AOj6NgD/yZo7JOMpAGUAAAD/////gADdCgyMJ4wsmAXQCh6AQ/ACAwUN3Q4QjGePb4pvmGPRDiLUDiKIA4gD+N0LEvAAAQUN8AABBQ3wAAEFDdgIDIgE8AMBBQ34+PjgCw6VApQH1xAg0hAgoBPRECXUECXQCyXQBCUAAAD/yZo7qKwqAEUAAAD/////5AAAAAAAAABTZXQgYWxsIG1vZHVsZSBfX2ZpbGVfXyBhbmQgX19jYWNoZWRfXyBhdHRyaWJ1dGVzIHRvIGFuIGFic29sdXRlIHBhdGgAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABhYnNfcGF0aHMAAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABsb2FkZXJfbW9kdWxlAAAAAAAAAAAAAAD/yZo7QJkqAAMAAACwLzgAFIQqAKAyOAAAAAAAAAAAAP/JmjtAmSoAEAAAAPy8MwDYuDMA+CkrAEwxKwD8EysA8BQrAHS1MwDgGysACOQzAAT7NgAULCsAuB83AOgNKwAUfTQAOEc0ABj7MwD/yZo7JOMpAFcAAAD/////sQw+Ar4KQS4FwQkRQRsEwRoBQS4FwRsKQSgHwSUCQS4FwScBQSgHwSgDQS4FwS0BQS4FwTcpQiECwiEXQjsFwjoBQjsFwj8pQykCwykXRAMFxAIBRAMFAAAAAAAAAAAA/8maO0CZKgACAAAA9CE0ADQwOAD/yZo7JOMpADMBAAD/////gADlDRCVE5Qb1xEj0hEj0REl1BEl0Q0m1A0m8AASBRHwABIFEYgB2BgciA3wAgYJFdgcHZxM1BwziE2ITfjdDx3wAAQJFfAABAkV8AAECRXwAgMNFdggIaQK1CAx1CA8kA2QDfjdEyHwAAENFfAAAQ0V8AABDRXYEBSQBPADAQ0V+Pj4+PjwBwQJFfj4+PAKAAwZ0CBT0AtT0AtT2AwU8AIDCRHdGRucF58fmh+oEawa0Rk01Bk0iEGMSohK+N0QHqUHrRnQDzPwAAEJEfAAAQkR8AABCRHYDBCIRPADAQkR+Pj48AQDCRHdGx2cN58/mj+oMaw80Rs41Bs4iEGMTIhM+N0QHqUHrRnQDzPwAAEJEfAAAQkR8AABCRHYDBCIRPADAQkR+Pj48CMSBRHwABIFEQAAAAAAAAAAAP/JmjtAmSoAAgAAALilNQAMZzQA/8maO6isKgBLAAAA/////+QAAAAAAAAAIFJlbW92ZSBkdXBsaWNhdGUgZW50cmllcyBmcm9tIHN5cy5wYXRoIGFsb25nIHdpdGggbWFraW5nIHRoZW0KICAgIGFic29sdXRlAP/JmjuorCoADgAAAP/////kAAAAAAAAAHJlbW92ZWR1cHBhdGhzAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABMAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAa25vd25fcGF0aHMA/8maO6isKgAHAAAA/////+QAAAAAAAAAZGlyY2FzZQAAAAAAAAAAAP/JmjtAmSoAAgAAALQyOAAUhCoAAAAAAAAAAAD/yZo7QJkqAAYAAAD8vDMA2LgzABQsKwCsLjgAaCErAEwhKwAAAAAAAAAAAP/JmjtAmSoABAAAAEAzOABcMzgA6Po2AIAzOAD/yZo7JOMpAHYAAAD/////gADwCgAJC4BB3RIVkSWUJYBL3Q8SjHjwAAcFJfAABwUliAP1CAAYIKADkX2UfYkMiAOIV9gLEpgr0Asl0Asl2AwNj0iKSJBTiU2MTYhN2AwXj0+KT5hH0Qwk1Awk0Awk+NgSE4VDhEiIUYhRiFGBS9gLFtAEFgAA/8maO6isKgBFAAAA/////+QAAAAAAAAAUmV0dXJuIGEgc2V0IGNvbnRhaW5pbmcgYWxsIGV4aXN0aW5nIGZpbGUgc3lzdGVtIGl0ZW1zIGZyb20gc3lzLnBhdGguAAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAX2luaXRfcGF0aGluZm8AAP/JmjuorCoACAAAAP/////kAAAAAAAAAGl0ZW1jYXNlAAAAAAAAAAAAAAAA/8maO0CZKgABAAAAlDQ4AAAAAAAAAAAA/8maO0CZKgAIAAAA/LwzANi4MwAULCsABPs2ALAJNwCsLjgATCErADhHNAD/yZo7JOMpABIAAAD/////nkEGQSUCwSUKQTIFwTEBQTIFAAAAAAAAAAAAAP/JmjtAmSoABAAAAJieNQD4ETUAZAgrABw1OAD/yZo7JOMpAHsAAAD/////gADlCAuJBYwFgEHdEBOUCPAABgUV8AAGBRWIBPACBQkV3Q8RjHePfop+mGTRDyPUDyPwAAININ0eJqB0mW6cbpELkAGQONgQEZcFkgWQaJEPlA+QD/j43Q8Y8AABCRXwAAEJFfAAAQkV2AwUiEjwAwEJFfj4+OALDIBIAP/JmjuorCoA1gAAAP/////kAAAAAAAAAFByb2Nlc3MgYSAucHRoIGZpbGUgd2l0aGluIHRoZSBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yeToKICAgICAgIEZvciBlYWNoIGxpbmUgaW4gdGhlIGZpbGUsIGVpdGhlciBjb21iaW5lIGl0IHdpdGggc2l0ZWRpciB0byBhIHBhdGgKICAgICAgIGFuZCBhZGQgdGhhdCB0byBrbm93bl9wYXRocywgb3IgZXhlY3V0ZSBpdCBpZiBpdCBzdGFydHMgd2l0aCAnaW1wb3J0ICcuCiAgICAAAP/JmjuorCoAFgAAAP/////kAAAAAAAAAFByb2Nlc3NpbmcgLnB0aCBmaWxlOiAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGltcG9ydAkA/8maO6isKgAiAAAA/////+QAAAAAAAAARXJyb3IgcHJvY2Vzc2luZyBsaW5lIHs6ZH0gb2Yge306CgAA/8maO6isKgACAAAA/////+QAAAAAAAAAICAAAP/JmjuorCoAGgAAAP/////kAAAAAAAAAApSZW1haW5kZXIgb2YgZmlsZSBpZ25vcmVkAAD/yZo7qKwqAAUAAAD/////5AAAAAAAAABzdHJpcAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAHRyYWNlYmFjawAAAP/JmjuorCoAEAAAAP/////kAAAAAAAAAGZvcm1hdF9leGNlcHRpb24AAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAZXhjX2luZm8AAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAYWRkcGFja2FnZQAA/8maO6isKgAHAAAA/////+QAAAAAAAAAc2l0ZWRpcgD/yZo7qKwqAAYAAAD/////5AAAAAAAAAByZWNvcmQAAAAAAAAAAAAA/8maO0CZKgAQAAAAYDY4ABSEKgAA2ikAENopAFA3OAB0KSsAOEc2ABDXMwD0BisAbD04AKA3OAD03CoAOLEzAOTcKgDcNzgA+Dc4AAAAAAAAAAAA/8maO0CZKgAbAAAA9DQ4AAT7NgAULCsA5CcrAOgtOABAYzYA9AcrAKTtNAAUfTQABBI3AMjXMwAsODgATDM0AIBzNACsLjgAsAk3ANi4MwBoISsATCErALzjMwDs1zMAOMUzAKwvKwBMODgAcDg4AJw4OABkDTYA/8maOyTjKQBXAAAA/////8EJKEEyAMEyCkIAA8E/AUIAA8IFQQVIMAPDCyRFLwTDLwFIMAPDMEE+RS8ExS4BSDADxS9CLkghB8gdA0gwA8ggAUghB8ghA0gwA8gwBEg0B8g3AUg0BwAAAAAAAAAAAP/JmjtAmSoADAAAAOQ4OADMKisAXDM4AIAuKwC42jMA9NUzAASzNgDwKCsA6Po2AIAzOABMODgABDk4AP/Jmjsk4ykArAIAAP////+AAPAKAAgT0Aca3RYk0RYm1BYmiAvYEBSIBYgF4BAViAXdDxGMd498inyYR6BU0Q8q1A8qgEjdBArQCzCgSNALMNALMNEEMdQEMdAEMfACBQUP9QYADQ/UDBydUpxcqCjRHTPUHTO4aNAMR9EMR9QMR4gBiAH43QsS8AABBQ/wAAEFD/AAAQUP2AgOiAaIBvADAQUP+Pj44AkK8AAXBRbwABcFFt0XIKARkXyUfPAAFgkW8QAWCRaJR4hBiHTYDxOPf4p/mHPRDyPUDyPwAAENGdgQGNgPE496inqJfIx8mHLSDyHQDyHYEBjwAhENFtgTF5c/kj/QIzrREzvUEzvwAAIRHd0UGJgUkUqUSpBK2BQc2Bcbl3uSe5F9lH2QBN0fJ6gHsBTRHzbUHzaRDJADkFfYFx6gK9AXLdAXLbUitCe3LrIuwBPRMkXUMkXQFy3dFBeUSJdPkk+gQ9EUKNQUKNAUKNgUH5dPkk+gR9EULNQULNAULPj43RMc8AAIDRbwAAgNFvAACA0W3RAV0BY71xZC0hZCwDHAUcEzyAjRFlHUFlHdGx6cOvADAREn8QABESf0AAERJ/AAAREn4BAg0BAg0BAg0BAg2B44mGnUHji9I7wsuS68LtAeSfAAAhE68AACETqQRtggJtcgMdIgMdEgM9QgM/AAARU68AABFTqYBN0YHZhkoDSZaa1jrGrQGDnRGDnUGDnQGDnQGDnwAwEVOuUQFdAWM70jvCrQEEXREEXUEEXQEEXYEBWQBZAF8BEIDRb4+PjwHxcFFvAAFwUW8AAXBRbxABcFFvQAFwUW8AAXBRbwABcFFvAAFwUW8AAXBRbwABcFFvAAFwUW+Pj48AAXBRbwABcFFvAAFwUW8AAXBRbwMAAIDfAAAQUb2BYaiAvYCxbQBBYAAAAAAAAAAAAAAAD/yZo7QJkqAAIAAAAs1zMAgDc4AP/JmjuorCoAVAAAAP/////kAAAAAAAAAEFkZCAnc2l0ZWRpcicgYXJndW1lbnQgdG8gc3lzLnBhdGggaWYgbWlzc2luZyBhbmQgaGFuZGxlIC5wdGggZmlsZXMgaW4KICAgICdzaXRlZGlyJwAAAAD/yZo7qKwqABIAAAD/////5AAAAAAAAABBZGRpbmcgZGlyZWN0b3J5OiAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAC5wdGgAAAAA/8maO6isKgAeAAAA/////+QAAAAAAAAAYWRkc2l0ZWRpci48bG9jYWxzPi48bGlzdGNvbXA+AAAAAAAAAAAAAP/JmjtAmSoAAQAAABw+OAAAAAAAAAAAAP/JmjtAmSoAAQAAAPx0NAAAAAAAAAAAAP/JmjtAmSoAAgAAACBqNADMKisA/8maOyTjKQApAAAA/////4AA0Aw90Aw90Aw9kGSgdKd9on2wVtEnPNQnPNAMPYhU0Aw90Aw90Aw9AAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAYWRkc2l0ZWRpcgAA/8maO6isKgALAAAA/////+QAAAAAAAAAc2l0ZWRpcmNhc2UAAAAAAAAAAAD/yZo7QJkqAAYAAACAPTgA8D04ABSEKgAA2ikAENopAJTdMgAAAAAAAAAAAP/JmjtAmSoADAAAAOgtOAD0NDgArC44ANi4MwAULCsAaCErAEwhKwAE+zYA8EA1ABR9NAAYJDQAwDg4AP/Jmjsk4ykAEgAAAP/////BMxRCCADCCApCFgPCFQFCFgMAAAAAAAAAAAAA/8maO0CZKgAGAAAA5Dg4AFwzOACALisAID84AJidNgDMKisA/8maOyTjKQADAQAA/////4AA9QYABQvQCyugB9ALK9ALK9EELNQELNAELNgHEtAHGt0WJNEWJtQWJogL2BAUiAWIBeAQFYgF3RsjoEfRGyzUGyzRBBiAR4hb2AsWmCvQCyXQCyXdCAuMCI8Pig+YB9EIINQIINAIINgIE48Pig+YC9EIJNQIJNAIJPACAwUP3RASlAqYN9EQI9QQI4gFiAX43QsS8AABBQ/wAAEFD/AAAQUP2AgOiAaIBvADAQUP+Pj44Aw90Aw9mGXQDD3RDD3UDD2ARd0QFpB1kQ2UDfAAAQUv8AABBS+IBN0IEpA3mESgK9EILtQILtAILtAILtgHDPAAAQUb2BYaiAvYCxbQBBYA/8maO6isKgAsAQAA/////+QAAAAAAAAAQ2hlY2sgaWYgdXNlciBzaXRlIGRpcmVjdG9yeSBpcyBzYWZlIGZvciBpbmNsdXNpb24KCiAgICBUaGUgZnVuY3Rpb24gdGVzdHMgZm9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyAoaW5jbHVkaW5nIGVudmlyb25tZW50IHZhciksCiAgICBwcm9jZXNzIHVpZC9naWQgZXF1YWwgdG8gZWZmZWN0aXZlIHVpZC9naWQuCgogICAgTm9uZTogRGlzYWJsZWQgZm9yIHNlY3VyaXR5IHJlYXNvbnMKICAgIEZhbHNlOiBEaXNhYmxlZCBieSB1c2VyIChjb21tYW5kIGxpbmUgb3B0aW9uKQogICAgVHJ1ZTogU2FmZSBhbmQgZW5hYmxlZAogICAgAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGdldGV1aWQA/8maO6isKgAGAAAA/////+QAAAAAAAAAZ2V0Z2lkAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABnZXRlZ2lkAP/JmjuorCoADAAAAP/////kAAAAAAAAAG5vX3VzZXJfc2l0ZQAAAAD/yZo7qKwqABQAAAD/////5AAAAAAAAABjaGVja19lbmFibGV1c2Vyc2l0ZQAAAAAAAAAAAAAAAP/JmjtAmSoACAAAABhBOAAQ2ikA7Hk3AGBCOAAUhCoAgEI4AKBCOAAA2ikAAAAAAAAAAAD/yZo7QJkqAAkAAADYuDMAiNczAMBCOAAQtzMABPs2AGBCOADseTcAoEI4AIBCOAD/yZo7JOMpAJkAAAD/////gAD1FAAIC4R51Acd8AABBRXYDxSIdeUHDo1ykDjRBxzUBxzwAAMFGKUXrRKoWdEhN9QhN/AAAwUY5QsNjDqJPIw8nTKcOZk7nDvSCybQCybYExeQNN0HDo1ykDjRBxzUBxzwAAMFGKUXrRKoWdEhN9QhN/AAAwUY5QsNjDqJPIw8nTKcOZk7nDvSCybQCybYExeQNOALD4g0AAAA/8maO6isKgAOAAAA/////+QAAAAAAAAAUFlUSE9OVVNFUkJBU0UAAP/JmjuorCoACgAAAP/////kAAAAAAAAAGVtc2NyaXB0ZW4AAP/JmjuorCoABAAAAP/////kAAAAAAAAAHdhc2kAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAam9pbnVzZXIAAAAA/8maO6isKgAeAAAA/////+QAAAAAAAAAX2dldHVzZXJiYXNlLjxsb2NhbHM+LmpvaW51c2VyAAAAAAAAAAAAAP/JmjtAmSoABAAAAAT7NgAULCsATB83AOQnKwAAAAAAAAAAAP/JmjtAmSoAAQAAAOTMMwD/yZo7JOMpACEAAAD/////gADdDxGMd9cPIdIPIaUipCekLLAE0CI10Q821A820Ag2AAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAQVBQREFUQQD/yZo7qKwqAAYAAAD/////5AAAAAAAAABQeXRob24AAP/JmjuorCoABwAAAP/////kAAAAAAAAAExpYnJhcnkA/8maO6isKgAGAAAA/////+QAAAAAAAAALmxvY2FsAAD/yZo7qKwqAAoAAAD/////5AAAAAAAAABfZnJhbWV3b3JrAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABfZ2V0dXNlcmJhc2UAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAZW52X2Jhc2UAAAAAAAAAAAAAAAD/yZo7QJkqAA0AAAAUhCoAMEQ4AOhHOABE4jIA5E81AGhFOAD4OjcAiEU4AKRrNACoRTgAWMM0AATdKgDIRTgAAAAAAAAAAAD/yZo7QJkqAAgAAAAE+zYArGw0AFQmKwDYuDMAACs0AMwqKwDoRTgAFMQ0AAAAAAAAAAAA/8maO0CZKgADAAAANEY4AJxEOAA0PzQA/8maOyTjKQDYAAAA/////4AA3Q8RjHqPfop+0B4usATRDzXUDzWASNgHD/AAAQUY2A8XiA/1BgAIC4R80Bc40Ac40Ac42A8TiHTwBAEFN/AAAQU38AABBTf1BgAICoR3kCSCf4B/3Q8RjHqPfop+mGnRDyjUDyjQDy+oQ4gE2A8XiHiYBJho0Q8n1A8n0Agn5QcKhHyQeNIHH9AHH6VDpE7QBx/YDxeIeJgDmFmtA6wO2BgfpSPUIjKwMrBBsDLUIjbRGDbxAwEQOPQAARA48AABCTjwBgAMFIg4kEOYGNELItQLItAEIgAAAAAAAAAAAAAAAP/JmjtAmSoAAwAAAFhEOACMeTcAfEQ4AP/JmjuorCoABwAAAP/////kAAAAAAAAAFxQeXRob24A/8maO6isKgAOAAAA/////+QAAAAAAAAAXHNpdGUtcGFja2FnZXMAAP/JmjuorCoAGQAAAP/////kAAAAAAAAAC9saWIvcHl0aG9uL3NpdGUtcGFja2FnZXMAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAAAvbGliL3B5dGhvbgD/yZo7qKwqAA4AAAD/////5AAAAAAAAAAvc2l0ZS1wYWNrYWdlcwAA/8maO6isKgAGAAAA/////+QAAAAAAAAAd2ludmVyAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABfZ2V0X3BhdGgAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAAB1c2VyYmFzZQAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAAB2ZXJfbm9kb3QAAAAAAAAAAAAAAP/JmjtAmSoADAAAABSEKgDkTzUAtAYrAPQGKwAASDgAIEg4AKRrNABISDgAfEg4AOTcKgD03CoAoEg4AAAAAAAAAAAA/8maO0CZKgAIAAAA2LgzABTENAAE+zYAzCorAMhIOABgLisAACs0AOhFOAAAAAAAAAAAAP/JmjtAmSoAAwAAAAxJOABsMSsAMEk4AP/Jmjsk4ykAjQAAAP////+AAN0OEdQOHoBH5QcJhHeQJIJ/gH/dFBeUStcUJtIUJqBzqELRFC/UFC+ICdgSGtAPPtAPPqBJ0A8+0A8+0A8+0Ag+5QcKhHyQeNIHH9AHH6VDpE7QBx/YEhrQDzXQDzXQDzXQCDXgDhbQC0rQC0qgN6gxpDrQC0rQC0qwB7gBtArQC0rQC0rQC0rQBEoAAAD/yZo7qKwqAMsAAAD/////5AAAAAAAAABSZXR1cm5zIHRoZSBgdXNlciBiYXNlYCBkaXJlY3RvcnkgcGF0aC4KCiAgICBUaGUgYHVzZXIgYmFzZWAgZGlyZWN0b3J5IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGRhdGEuIElmIHRoZSBnbG9iYWwKICAgIHZhcmlhYmxlIGBgVVNFUl9CQVNFYGAgaXMgbm90IGluaXRpYWxpemVkIHlldCwgdGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gc2V0CiAgICBpdC4KICAgIAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABVU0VSX0JBU0UAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABnZXR1c2VyYmFzZQAAAAAAAAAAAP/JmjtAmSoAAQAAAIxKOAAAAAAAAAAAAP/JmjtAmSoAAgAAAHBLOAAMRjgA/8maOyTjKQAZAAAA/////4AA9RAACBHQBxjdFCCRTpROiAndCxTQBBQAAAD/yZo7qKwqAKIAAAD/////5AAAAAAAAABSZXR1cm5zIHRoZSB1c2VyLXNwZWNpZmljIHNpdGUtcGFja2FnZXMgZGlyZWN0b3J5IHBhdGguCgogICAgSWYgdGhlIGdsb2JhbCB2YXJpYWJsZSBgYFVTRVJfU0lURWBgIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQsIHRoaXMKICAgIGZ1bmN0aW9uIHdpbGwgYWxzbyBzZXQgaXQuCiAgICAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAFVTRVJfU0lURQAAAP/JmjuorCoAEAAAAP/////kAAAAAAAAAEVOQUJMRV9VU0VSX1NJVEUAAAAA/8maO6isKgATAAAA/////+QAAAAAAAAAZ2V0dXNlcnNpdGVwYWNrYWdlcwAAAAAAAAAAAP/JmjtAmSoAAwAAABhMOAAUhCoAENopAAAAAAAAAAAA/8maO0CZKgAEAAAAlEs4ANRMOAD4TDgA6Eg4AAAAAAAAAAAA/8maO0CZKgABAAAADEk4AP/Jmjsk4ykANQAAAP////+AAPUOABAbiX2MfYBI5QcQ0AcY2AsT0Asb2B8k0Awc0Awc5RghoCjRGCvUGCuISeULFNAEFAAAAP/JmjuorCoAhgAAAP/////kAAAAAAAAAEFkZCBhIHBlciB1c2VyIHNpdGUtcGFja2FnZSB0byBzeXMucGF0aAoKICAgIEVhY2ggdXNlciBoYXMgaXRzIG93biBweXRob24gZGlyZWN0b3J5IHdpdGggc2l0ZS1wYWNrYWdlcyBpbiB0aGUKICAgIGhvbWUgZGlyZWN0b3J5LgogICAgAAD/yZo7qKwqAB0AAAD/////5AAAAAAAAABQcm9jZXNzaW5nIHVzZXIgc2l0ZS1wYWNrYWdlcwAAAP/JmjuorCoAEwAAAP/////kAAAAAAAAAGFkZHVzZXJzaXRlcGFja2FnZXMA/8maO6isKgAJAAAA/////+QAAAAAAAAAdXNlcl9zaXRlAAAAAAAAAAAAAAD/yZo7QJkqAAIAAAD0TTgAlE44AAAAAAAAAAAA/8maO0CZKgAHAAAA6C04ACRNOAD4TDgABPs2ABQsKwBcCjcA/D44AAAAAAAAAAAA/8maO0CZKgACAAAAXDM4APhOOAD/yZo7JOMpAFEAAAD/////gAD1EAAFC9ALKtEEK9QEK9AEK90QI9EQJdQQJYBJ5QcX8AABBSudQpxHn02aTagp0Rw01Bw08AABBSvdCBKQOZhr0Qgq1Agq0Agq2AsW0AQWAAAA/8maO6isKgAeAQAA/////+QAAAAAAAAAUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMuCgogICAgRm9yIGVhY2ggZGlyZWN0b3J5IHByZXNlbnQgaW4gYGBwcmVmaXhlc2BgIChvciB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCksCiAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlCiAgICBzeXN0ZW0gZW52aXJvbm1lbnQsIGFuZCB3aWxsIHJldHVybiBhIGxpc3Qgb2YgZnVsbCBwYXRocy4KICAgIAAA/8maO6isKgADAAAA/////+QAAAAAAAAAbGliAP/JmjuorCoACwAAAP/////kAAAAAAAAAHB5dGhvbiVkLiVkAP/JmjuorCoADQAAAP/////kAAAAAAAAAHNpdGUtcGFja2FnZXMAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABMaWIA/8maO6isKgAIAAAA/////+QAAAAAAAAAUFJFRklYRVMAAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAcGxhdGxpYmRpcgAA/8maO6isKgAPAAAA/////+QAAAAAAAAAZ2V0c2l0ZXBhY2thZ2VzAP/JmjuorCoACAAAAP/////kAAAAAAAAAHByZWZpeGVzAAAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAHNpdGVwYWNrYWdlcwAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABsaWJkaXJzAP/JmjuorCoABgAAAP/////kAAAAAAAAAGxpYmRpcgAAAAAAAAAAAAD/yZo7QJkqAAgAAADoTzgAFIQqAEQqNAAgUTgAPFE4AATdKgBgUTgAiFE4AAAAAAAAAAAA/8maO0CZKgALAAAA/LwzAKRROABMISsABPs2AIArNADYuDMAyFE4AGghKwAULCsA5CcrABTENAAAAAAAAAAAAP/JmjtAmSoABwAAABRSOAA4UjgA1L0zAJhXNQBgUjgAgFI4ABQsKwD/yZo7JOMpACkBAAD/////gADwDgAUFoBM3QsOiTWMNYBE4AcP0AcX3RMbiAjgEhrwABEFTgHwABEFTgGIBtgPFfAAAQkVmBagNJgemB7YDBTYCAyPCIoIkBbRCBjUCBjQCBjlCw2MNpBTij2IPd0XGpR+0BYmiEfdDxKMfqAV0g8m0A8m2BAXlw6SDph10RAl1BAl0BAl4Boh8AAEDSrwAAQNKpAG3RcZlHeXfJJ8oEaoRtgkMbVD1DREwFLAYcBS1DRI0SRI2CQz8QUCGDX0AAIYNZAE8AYAER3XECPSECOgRNEQKdQQKdAQKdAQKfAJBA0q8AwADRnXDB/SDB+gBtEMJ9QMJ9AMJ9gMGNcMH9IMH6UCpAenDKIMqFawVbhP0SBM1CBM0QxN1AxN0AxN0AxN2AsX0AQXAAAA/8maO6isKgAdAAAA/////+QAAAAAAAAAQWRkIHNpdGUtcGFja2FnZXMgdG8gc3lzLnBhdGgAAAD/yZo7qKwqAB8AAAD/////5AAAAAAAAABQcm9jZXNzaW5nIGdsb2JhbCBzaXRlLXBhY2thZ2VzAP/JmjuorCoADwAAAP/////kAAAAAAAAAGFkZHNpdGVwYWNrYWdlcwAAAAAAAAAAAP/JmjtAmSoAAgAAAIBUOAC4VDgAAAAAAAAAAAD/yZo7QJkqAAYAAADoLTgA7FE4AAT7NgAULCsAXAo3APw+OAAAAAAAAAAAAP/JmjtAmSoAAwAAAFwzOAAUUjgA5Dg4AP/Jmjsk4ykAVQAAAP////+AAOUECtALLNEELdQELdAELd0TIqA40RMs1BMs8AACBS3wAAIFLYgH3QsNjDePPYo9mBfRCyHUCyHwAAEJLd0MFpB3oAvRDCzUDCzQDCz44AsW0AQWAAAA/8maO6isKgCtAAAA/////+QAAAAAAAAARGVmaW5lIG5ldyBidWlsdGlucyAncXVpdCcgYW5kICdleGl0Jy4KCiAgICBUaGVzZSBhcmUgb2JqZWN0cyB3aGljaCBtYWtlIHRoZSBpbnRlcnByZXRlciBleGl0IHdoZW4gY2FsbGVkLgogICAgVGhlIHJlcHIgb2YgZWFjaCBvYmplY3QgY29udGFpbnMgYSBoaW50IGF0IGhvdyBpdCB3b3Jrcy4KCiAgICAAAAD/yZo7qKwqABIAAAD/////5AAAAAAAAABDdHJsLVogcGx1cyBSZXR1cm4AAP/JmjuorCoAEQAAAP/////kAAAAAAAAAEN0cmwtRCAoaS5lLiBFT0YpAAAA/8maO6isKgAEAAAA/////+QAAAAAAAAAcXVpdAAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABleGl0AAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAF9zaXRlYnVpbHRpbnMAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABzZXRxdWl0AAAAAAAAAAAA/8maO0CZKgAHAAAA6FU4ACgqNACwVjgA3FY4AAhXOAAoVzgAFIQqAAAAAAAAAAAA/8maO0CZKgAHAAAABPs2AIArNABIVzgAdPY2AMQhKwAIVzgAKFc4AAAAAAAAAAAA/8maO0CZKgABAAAAlPY2AP/Jmjsk4ykARwAAAP////+AAPUOAAgKhHaQFIJ+gH7YDiKIA4gD4A4hiAPlFCHUFCmoJrAj0RQ21BQ2hUiETd0UIdQUKagmsCPRFDbUFDaFSIRNgE2ATQD/yZo7qKwqACkAAAD/////5AAAAAAAAABTZXQgJ2NvcHlyaWdodCcgYW5kICdjcmVkaXRzJyBpbiBidWlsdGlucwAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAGNvcHlyaWdodAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGphdmEAAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAY3JlZGl0cwD/yZo7qKwqAD8AAAD/////5AAAAAAAAABKeXRob24gaXMgbWFpbnRhaW5lZCBieSB0aGUgSnl0aG9uIGRldmVsb3BlcnMgKHd3dy5qeXRob24ub3JnKS4A/8maO6isKgCeAAAA/////+QAAAAAAAAAICAgIFRoYW5rcyB0byBDV0ksIENOUkksIEJlT3Blbi5jb20sIFpvcGUgQ29ycG9yYXRpb24gYW5kIGEgY2FzdCBvZiB0aG91c2FuZHMKICAgIGZvciBzdXBwb3J0aW5nIFB5dGhvbiBkZXZlbG9wbWVudC4gIFNlZSB3d3cucHl0aG9uLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4AAP/JmjuorCoACwAAAP/////kAAAAAAAAAExJQ0VOU0UudHh0AP/JmjuorCoABwAAAP/////kAAAAAAAAAExJQ0VOU0UA/8maO6isKgAHAAAA/////+QAAAAAAAAAbGljZW5zZQD/yZo7qKwqACcAAAD/////5AAAAAAAAABTZWUgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9wc2YvbGljZW5zZS8A/8maO6isKgAMAAAA/////+QAAAAAAAAAc2V0Y29weXJpZ2h0AAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAGhlcmUAAAAAAAAAAAAAAAD/yZo7QJkqAA4AAABgWDgApFg4ABSEKgAk3SoAyFg4AOhYOAAIWTgAYFk4AOQpNADoDSsAGFo4ADxaOABcWjgAfFo4AAAAAAAAAAAA/8maO0CZKgASAAAASFc4APz5NgDYuDMApFg4AMQhKwAAKzQA6Fg4AJQmKwAQtzMABPs2ABQsKwD8vDQA6A0rAEglKwDkJysA+B83ANgfNwBcWjgAAAAAAAAAAAD/yZo7QJkqAAMAAAAMWDUArPw2AORaOAD/yZo7JOMpAC8BAAD/////gADlGSbUGS+wC71TvF3RGUvUGUuFSNQEFt0HCoR8kEKQUZBC1AcXmDbSByHQByHdGyjUGzHYDBXYDE3xBQIcTwH0AAIcTwGNCNQIGNAIGPUIABwp1BsxsCnwAAI+VAHxAAIcVQH0AAIcVQGNCNQIGPAGABMVkGKINIBF9QYADBOVM5gNoHTRCyzUCyyARNgLD/AAAQUslUedQqAK0RQr1BQr8AABBSzdDxGMd49/in+dcpx70Q8r1A8riATYBwvwAAIFRgHYCA2PDIoMkG2gWdAVL9EIMNQIMNAIMNgIDI8LiguVUpRXl1ySXKAkrQKsCdEVMtQVMrBEvSK8KdAURNEIRdQIRdAIRd0XJNQXLdgIEdgIMdgIDYh08QcDGBX0AAMYFYVI1AQU0AQU0AQUAP/JmjuorCoACQAAAP/////kAAAAAAAAAHNldGhlbHBlcgAAAAAAAAAAAAAA/8maO0CZKgAEAAAASFc4ABgFNwDEISsAcAc3AP/Jmjsk4ykAFgAAAP////+AAN0UIdQUKdEUK9QUK4VIhE2ATYBNAAD/yZo7qKwqAGoBAAD/////5AAAAAAAAABFbmFibGUgZGVmYXVsdCByZWFkbGluZSBjb25maWd1cmF0aW9uIG9uIGludGVyYWN0aXZlIHByb21wdHMsIGJ5CiAgICByZWdpc3RlcmluZyBhIHN5cy5fX2ludGVyYWN0aXZlaG9va19fLgoKICAgIElmIHRoZSByZWFkbGluZSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkLCB0aGUgaG9vayB3aWxsIHNldCB0aGUgVGFiIGtleQogICAgYXMgY29tcGxldGlvbiBrZXkgYW5kIHJlZ2lzdGVyIH4vLnB5dGhvbl9oaXN0b3J5IGFzIGhpc3RvcnkgZmlsZS4KICAgIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIHNpdGVjdXN0b21pemUgb3IgdXNlcmN1c3RvbWl6ZSBtb2R1bGUsCiAgICBvciBpbiBhIFBZVEhPTlNUQVJUVVAgZmlsZS4KICAgIAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAbGliZWRpdAD/yZo7qKwqABMAAAD/////5AAAAAAAAABiaW5kIF5JIHJsX2NvbXBsZXRlAP/JmjuorCoADQAAAP/////kAAAAAAAAAHRhYjogY29tcGxldGUAAAD/yZo7qKwqAA8AAAD/////5AAAAAAAAAAucHl0aG9uX2hpc3RvcnkA/8maO6isKgASAAAA/////+QAAAAAAAAAd3JpdGVfaGlzdG9yeV9maWxlAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAAB3cml0ZV9oaXN0b3J5AAAA/8maO6isKgBDAAAA/////+QAAAAAAAAAZW5hYmxlcmxjb21wbGV0ZXIuPGxvY2Fscz4ucmVnaXN0ZXJfcmVhZGxpbmUuPGxvY2Fscz4ud3JpdGVfaGlzdG9yeQD/yZo7qKwqAAcAAAD/////5AAAAAAAAABoaXN0b3J5AAAAAAAAAAAA/8maO0CZKgACAAAAnF84ABR9NAD/yZo7JOMpAAwAAAD/////gxUaAJoKKAOnASgDAAAAAAAAAAAAAAAA/8maO0CZKgACAAAATGA4APAtKwD/yZo7JOMpAAIAAAD/////gIAAAP/Jmjsk4ykARgAAAP/////4gADwAgURGdgUHNcUL9IUL7AH0RQ41BQ40BQ40BQ40BQ4+N0XHvAAAxEZ8AADERnwAAMRGfAGABUZkESQRPAHAxEZ+Pj4AAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABhdGV4aXQAAP/JmjuorCoACwAAAP/////kAAAAAAAAAHJsY29tcGxldGVyAP/JmjuorCoADgAAAP/////kAAAAAAAAAHBhcnNlX2FuZF9iaW5kAAD/yZo7qKwqAA4AAAD/////5AAAAAAAAAByZWFkX2luaXRfZmlsZQAA/8maO6isKgAaAAAA/////+QAAAAAAAAAZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgAAP/JmjuorCoAEQAAAP/////kAAAAAAAAAHJlYWRfaGlzdG9yeV9maWxlAAAA/8maO6isKgARAAAA/////+QAAAAAAAAAcmVnaXN0ZXJfcmVhZGxpbmUAAAD/yZo7qKwqACwAAAD/////5AAAAAAAAABlbmFibGVybGNvbXBsZXRlci48bG9jYWxzPi5yZWdpc3Rlcl9yZWFkbGluZQAAAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAAByZWFkbGluZV9kb2MAAAAAAAAAAAAAAAD/yZo7QJkqAAoAAAAUhCoA5NwqAGANKwD0BisAAF84ACBfOABMXzgA+Do3AHRfOAAM8jIAAAAAAAAAAAD/yZo7QJkqAA8AAAAwYTgA8C0rAFBhOAAQ2jMAlCYrAHRhOACcYTgAFH00AMRhOAAE+zYAFCwrAOQnKwBMHzcA+GE4AIi1NQD/yZo7JOMpADAAAAD/////iAgRAJEKHwOeAR8DwSUUQToAwToKQgcDwgYBQgcDwyAVQzYAwzYKRAMDxAIBRAMDAAAAAAAAAAAAAAAA/8maO0CZKgAGAAAAMGE4AFBhOACYYjgAyF84AExgOADwLSsA/8maOyTjKQAGAAAA/////yAgICBAQAAA/8maOyTjKQCYAQAA//////j4gADYCBWIDYgNiA3wAgQJE9gMG4hPiE+IT9gMHtAMHtAMHtAMHtAMHvjdDxrwAAEJE/AAAQkT8AABCRPYDBKIRohG8AMBCRP4+Pj1CgAYH5h4qBmwQtEXN9QXN4gM2AsX0AsjqAmwXNAoQdAoQdgMFNcMI9IMI9AkOdEMOtQMOtAMOtAMOuAMFNcMI9IMI6BP0Qw01Aw00Aw08AQHCRHYDBTXDCPSDCPRDCXUDCXQDCXQDCX43Q8W8AAFCRHwAAUJEfAABQkR8AoADRGIRPALBQkR+Pj48A4ADBTXCy7SCy7RCzDUCzCwQdILNdALNfUMABcZlGeXbJJspTKkN9cjNdIjNbBj0SM61CM62CM08QMBFzb0AAEXNohH8AQDDRXYEBjXECrSECqoN9EQM9QQM9AQM9AQM/jdExrwAAENFfAAAQ0V8AABDRXYEBSQBPADAQ0V+Pj48AYGDRnwAAYNGfAABg0Z8AAGDRnwAAYNGfAABg0Z8BAADROPT4pPmE3RDCrUDCrQDCrQDCrQDCrwKwAMNtALNQAAAAD/yZo7qKwqABMAAAD/////5AAAAAAAAABfX2ludGVyYWN0aXZlaG9va19fAP/JmjuorCoAEQAAAP/////kAAAAAAAAAGVuYWJsZXJsY29tcGxldGVyAAAAAAAAAAAAAAD/yZo7QJkqAAMAAAB8XTgA2PIyABSEKgAAAAAAAAAAAP/JmjtAmSoAAgAAANi4MwCAZTgAAAAAAAAAAAD/yZo7QJkqAAEAAAAkYjgA/8maOyTjKQAiAAAA/////4AA8BIuBSvwAC4FK/AALgUr8GABAB8whUPUBBvQBBvQBBsAAP/JmjuorCoAEwAAAP/////kAAAAAAAAAF9fUFlWRU5WX0xBVU5DSEVSX18A/8maO6isKgAKAAAA/////+QAAAAAAAAAcHl2ZW52LmNmZwAA/8maO6isKgAYAAAA/////+QAAAAAAAAAdmVudi48bG9jYWxzPi48bGlzdGNvbXA+AAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAGNvbmZmaWxlAAAAAAAAAAAAAAAA/8maO0CZKgADAAAABPs2ABQsKwB8CjcAAAAAAAAAAAD/yZo7QJkqAAIAAAAgajQA5GY4AP/Jmjsk4ykAPgAAAP////+AAPAABhcK8AAGFwrwAAYXCtgVHfUIAAwOjDePPoo+mCjRCyPUCyPwCwYXCtgIEPADBhcK8AAGFwrwAAYXCgAA/8maO6isKgAEAAAA/////+QAAAAAAAAAdHJ1ZQAAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAAA9AAAA/8maO6isKgAcAAAA/////+QAAAAAAAAAaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcwAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAABob21lAAAAAP/JmjuorCoAEAAAAP/////kAAAAAAAAAF9iYXNlX2V4ZWN1dGFibGUAAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAZXhlY3V0YWJsZQAA/8maO6isKgAFAAAA/////+QAAAAAAAAAX2hvbWUAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABleGVjX3ByZWZpeAD/yZo7qKwqAAQAAAD/////5AAAAAAAAAB2ZW52AAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAGV4ZV9kaXIA/8maO6isKgALAAAA/////+QAAAAAAAAAc2l0ZV9wcmVmaXgA/8maO6isKgANAAAA/////+QAAAAAAAAAY29uZl9iYXNlbmFtZQAAAP/JmjuorCoADwAAAP/////kAAAAAAAAAGNhbmRpZGF0ZV9jb25mcwD/yZo7qKwqAAwAAAD/////5AAAAAAAAAB2aXJ0dWFsX2NvbmYAAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAc3lzdGVtX3NpdGUAAAAAAAAAAAD/yZo7QJkqAA0AAAAUhCoApGs0AGBmOACMZjgAMPYyAOTcKgCUZzgAlAcrADhHNgC0ZzgA0Gc4AAhoOAAQ2ikAAAAAAAAAAAD/yZo7QJkqABYAAAAE+zYArGw0ANi4MwAAKzQAKGg4AFRoOAAULCsA4P02ALgfNwD8vDQAeGg4AOQnKwC0KysAEF40ACw4OADUmDQAmFc1AJhoOADwVDgApFE4APgjNAD4TDgA/8maOyTjKQATAAAA/////8QgQgpGNwPGNwRGOwfGPgFGOwcAAAAAAAAAAAD/yZo7QJkqAA4AAABcMzgAgM43AFRoOADcaDgAZAgrAPxoOAAgaTgASGk4AHBpOACYaTgA9NUzAPAoKwAwbTQAzPUzAP/Jmjsk4ykAMwIAAP////+AAPUGAAsNjCqAQ90HCoR8kHjSBx/QBx/QJDm4U9AkQNAkQN0sLqxK0DdM1CxN0AhNiAqVU9QVKdAVKeUVGJReiArdEROUF5cdkh2dcpx3n3+af6h60R861B860RE71BE7gUqAR4hR3RIUlCeXL5IvoCfREirUEiqAS9gQFIVDhEnYFCCATfACBhcK8AAGFwrlDA6MR49MikyYF6At0Qww1Aww3QwOjEePTIpMmBugbdEMNNQMNPAFAyIO8AMGFwrxAAYXCvQABhcKgE/wEAAIF/EAGwUl2BcmoHHUFymIDNgWHIgL9QYADhKQLKgX0A0x0Q0x1A0x8AAJCSqwUdgYGfAACA0q8AAIDSqQBNgTFpgkkDuQO9gkKKdOok6wM9EkN9QkN5FNkEOYEZhF2BodnymaKZkrnCvXGivSGivRGi3UGi2QQ9gcIZ9LmkuZTZxNkEXYFxrQHjzSFzzQFzzYJiuna6JroW2kbZgLmAvYGRygBpodmB3YJCmdA5wJ+PARCA0q8AMJCSrwAAkJKvAACQkq8QAJCSr0AAkJKvAACQkq8AAJCSrwAAkJKvAACQkq8AAJCSrwAAkJKvj4+PAACQkq8AAJCSrwAAkJKvAACQkq8BYAKDPQCDKNA4wKlVOUX/UGAAkYmAulY6RqoFzRCDLUCDLQCDLwCAAMF5gm0gsg0Asg3QwUj0+KT5hBnXOcetEMKtQMKtAMKtAMKuUYG5wKkHyISNgfJNAMHOALFtAEFgD/yZo7qKwqACwAAAD/////5AAAAAAAAABSdW4gY3VzdG9tIHNpdGUgc3BlY2lmaWMgY29kZSwgaWYgYXZhaWxhYmxlLgAAAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABzaXRlY3VzdG9taXplAAAA/8maO6isKgA5AAAA/////+QAAAAAAAAARXJyb3IgaW4gc2l0ZWN1c3RvbWl6ZTsgc2V0IFBZVEhPTlZFUkJPU0UgZm9yIHRyYWNlYmFjazoKAAAA/8maO6isKgARAAAA/////+QAAAAAAAAAZXhlY3NpdGVjdXN0b21pemUAAAAAAAAAAAAAAP/JmjtAmSoABwAAACRtOADk3CoAFIQqAGxtOACUbTgAkKc0AMT9NgAAAAAAAAAAAP/JmjtAmSoADQAAAGxtOAAQ2jMAzCorALzjMwDYuDMAiNczAKjXMwAAJSsAnDg4AKwvKwD4MSsAhAsrAFwVKwD/yZo7JOMpACkAAAD/////gwQJAIkKKwOTDSYDoAQuAKYFKwOrAy4ArgpCKgO4QSFCJQPCJQVCKgMAAAAAAAAAAAAAAP/JmjtAmSoAAwAAAGxtOADQVTQA5Mc3AP/Jmjsk4ykADQEAAP////+AAPAEDwUv8AIGCRbYDCDQDCDQDCDQDCDQDCDQDCD43Q8a8AAECRbwAAQJFvAABAkW2A8SjHiYP9IPKtAPKtgQFOAQFfAFABEVkASQBJAEkASQBPj4+PjwBQQJFvj4+Pj1CgAMFfAABwUv8AAHBS/wAAcFL90LDow51Asc8AAGCS/dDA+MTp1DnEyZTpxO0Awr0Awr0Awr5QwPjErXDBzSDBzQDBzwBgASFZQd1BEn0BEn0BEnqBOoE6gT8AUCES7xAwMNL/QAAw0v8AADDS/wAAMNL/AAAw0v8AADDS/wAAMNL/AAAw0v8AADDS/wBQANLNAMK9AMK9AMK9AMK9AMK/j4+PjwBQcFL/j4+AAAAP/JmjuorCoALAAAAP/////kAAAAAAAAAFJ1biBjdXN0b20gdXNlciBzcGVjaWZpYyBjb2RlLCBpZiBhdmFpbGFibGUuAAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAAHVzZXJjdXN0b21pemUAAAD/yZo7qKwqADkAAAD/////5AAAAAAAAABFcnJvciBpbiB1c2VyY3VzdG9taXplOyBzZXQgUFlUSE9OVkVSQk9TRSBmb3IgdHJhY2ViYWNrOgoAAAD/yZo7qKwqABEAAAD/////5AAAAAAAAABleGVjdXNlcmN1c3RvbWl6ZQAAAAAAAAAAAAAA/8maO0CZKgAHAAAACHA4AOTcKgAUhCoAUHA4AHhwOACQpzQAxP02AAAAAAAAAAAA/8maO0CZKgANAAAAUHA4ABDaMwDMKisAvOMzANi4MwCI1zMAqNczAAAlKwCcODgArC8rAPgxKwCECysAXBUrAAAAAAAAAAAA/8maO0CZKgADAAAAUHA4ANBVNADkxzcA/8maO6isKgDPAAAA/////+QAAAAAAAAAQWRkIHN0YW5kYXJkIHNpdGUtc3BlY2lmaWMgZGlyZWN0b3JpZXMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4KCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhpcyBtb2R1bGUgaXMgaW1wb3J0ZWQsCiAgICB1bmxlc3MgdGhlIHB5dGhvbiBpbnRlcnByZXRlciB3YXMgc3RhcnRlZCB3aXRoIHRoZSAtUyBmbGFnLgogICAgAP/JmjuorCoACAAAAP/////kAAAAAAAAAGlzb2xhdGVkAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAG1haW4AAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAb3JpZ19wYXRoAAAAAAAAAAAAAAD/yZo7QJkqAAIAAACQcTgAFIQqAAAAAAAAAAAA/8maO0CZKgARAAAA2LgzABQsKwAYMzgAEDA4ALxoOAD4TDgA6EI4AMxOOADwVDgAcFc4ALxaOAAMXTgAiNczAHhyOACsZTgA6G04AMxwOAAAAAAAAAAAAP/JmjtAmSoAAgAAALxyOABcMzgA/8maOyTjKQDTAAAA/////4AA9RAAERSUCJgRmBGYEZQLgEndEiDREiLUEiKAS9gHEJVDlEjSBxzQBxz1BgAJEokLjAuIC+USFpB70RIj1BIjgEvdBxfQBx/dGy/RGzHUGzHQCBjdEiWga9ESMtQSMoBL3RIhoCvREi7UEi6AS90EC4FJhEmASd0EEIFOhE6ATt0EDYFLhEuAS90LDow51Asd8AABBRzdCBnRCBvUCBvQCBvdBBXRBBfUBBfQBBfdBxfwAAEFHN0IGdEIG9QIG9AIG9AIG9AIG/ADAQUc8AABBRwA/8maO6isKgCyAQAA/////+QAAAAAAAAAICAgICVzIFstLXVzZXItYmFzZV0gWy0tdXNlci1zaXRlXQoKICAgIFdpdGhvdXQgYXJndW1lbnRzIHByaW50IHNvbWUgdXNlZnVsIGluZm9ybWF0aW9uCiAgICBXaXRoIGFyZ3VtZW50cyBwcmludCB0aGUgdmFsdWUgb2YgVVNFUl9CQVNFIGFuZC9vciBVU0VSX1NJVEUgc2VwYXJhdGVkCiAgICBieSAnJXMnLgoKICAgIEV4aXQgY29kZXMgd2l0aCAtLXVzZXItYmFzZSBvciAtLXVzZXItc2l0ZToKICAgICAgMCAtIHVzZXIgc2l0ZSBkaXJlY3RvcnkgaXMgZW5hYmxlZAogICAgICAxIC0gdXNlciBzaXRlIGRpcmVjdG9yeSBpcyBkaXNhYmxlZCBieSB1c2VyCiAgICAgIDIgLSB1c2VyIHNpdGUgZGlyZWN0b3J5IGlzIGRpc2FibGVkIGJ5IHN1cGVyIHVzZXIKICAgICAgICAgIG9yIGZvciBzZWN1cml0eSByZWFzb25zCiAgICAgPjIgLSB1bmtub3duIGVycm9yCiAgICAAAP/JmjuorCoADAAAAP/////kAAAAAAAAAHN5cy5wYXRoID0gWwAAAAD/yZo7qKwqAAQAAAD/////5AAAAAAAAAAgICAgAAAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAACwAAAD/yZo7qKwqAA0AAAD/////5AAAAAAAAABkb2Vzbid0IGV4aXN0AAAA/8maO6isKgAXAAAA/////+QAAAAAAAAAX3NjcmlwdC48bG9jYWxzPi5leGlzdHMAAAAAAAAAAAD/yZo7QJkqAAMAAAAUhCoAsAk3AIR2OAAAAAAAAAAAAP/JmjtAmSoAAwAAAAT7NgAULCsAXAo3AP/Jmjsk4ykAJQAAAP////+AANgPE9APH6VCpEenTaJNsCTRJDfUJDfQDx/YFx+QeOAXJpB/AAAA/8maO6isKgALAAAA/////+QAAAAAAAAAVVNFUl9CQVNFOiAA/8maO6isKgALAAAA/////+QAAAAAAAAAVVNFUl9TSVRFOiAA/8maO6isKgASAAAA/////+QAAAAAAAAARU5BQkxFX1VTRVJfU0lURTogAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAAAtLXVzZXItYmFzZQD/yZo7qKwqAAsAAAD/////5AAAAAAAAAAtLXVzZXItc2l0ZQD/yZo7qKwqAAQAAAD/////5AAAAAAAAABhcmd2AAAAAP/JmjuorCoACAAAAP/////kAAAAAAAAAHRleHR3cmFwAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAGRlZGVudAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAX3NjcmlwdAD/yZo7qKwqAAkAAAD/////5AAAAAAAAAB1c2VyX2Jhc2UAAAAAAAAAAAAAAP/JmjtAmSoAFAAAABSEKgBUdDgA9NwqACB2OABIdjgAaHY4ADCWNgDIATMAVHc4AHgUNABsWTQAeHc4AJx3OADk3CoAyHc4AOx3OAAQ2ikABN0qABTdKgCE3SoAAAAAAAAAAAD/yZo7QJkqABAAAADYuDMAEHg4AJRLOAAkTTgA7NczABQsKwD4TDgAKFc4AGghKwBwSzgA1Ew4AAT7NgAYIDcA5CcrADB4OABUeDgAAAAAAAAAAAD/yZo7QJkqAAgAAABwBzcA5MwzAJR4OAD4TjgA6Po2ALAJNwCkISsAMHg4AP/Jmjsk4ykADgIAAP////+AAPACDQwIgET1HAAMD4w4kEGQQpBCjDyARNgLD/AADwUU3RQfkU2UTYgJ3RQn0RQp1BQpiAndCA2IbtEIHdQIHdAIHd0TFpQ48AABCSbwAAEJJohD3QwRiEWYc5hzmHPQEiTRDCXUDCXQDCXQDCXdCA2IY4kKjAqICvACBAkn8AAECSfwAAQJJ/UKAAkO0A4/mEnQDj/QDj+oNqg2sCnRKzzUKzzQDj/QDj/QDj/RCEDUCEDQCEDdCA3QDj+YSdAOP9AOP6g2qDawKdErPNQrPNAOP9AOP9AOP9EIQNQIQNAIQN0IDdAON9UjM9AON9AON9EIONQIONAION0IC4wIkBGJC4wLiAvgDQ+ARtgHFJgE0Acc0Acc2AgOjw2KDZVp0Qgg1Agg0Agg2AcUmATQBxzQBxzYCA6PDYoNlWnRCCDUCCDQCCDgBw3wAA0FFd0IDY1ijGqPb4pvmGbRDiXUDiXRCCbUCCbQCCbdCxvwAAcJGN0MD4xIkFGJS4xLiEuIS4hL3Q0doBXQDSbQDSbdDA+MSJBRiUuMS4hLiEuIS90NHdANJd0MD4xIkFGJS4xLiEuIS4hL5QwPjEiQUYlLjEuIS4hLiEvgCBeID4gPiA/dCA2IaI9vim+YZKVjpGiocaRrtTK0OtAlPtEePtEOP9QOP9EIQNQIQNAIQN0IC4wIkBKJDIwMiAyIDIgMAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABub19zaXRlAP/JmjuorCoAbwAAAP/////kAAAAAAAAAENvbnN0YW50cy9mdW5jdGlvbnMgZm9yIGludGVycHJldGluZyByZXN1bHRzIG9mIG9zLnN0YXQoKSBhbmQgb3MubHN0YXQoKS4KClN1Z2dlc3RlZCB1c2FnZTogZnJvbSBzdGF0IGltcG9ydCAqCgD/yZo7qKwqAE0AAAD/////5AAAAAAAAABSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgY2FuIGJlIHNldCBieQogICAgb3MuY2htb2QoKS4KICAgIAAAAP/JmjuorCoADQAAAP/////kAAAAAAAAADxmcm96ZW4gc3RhdD4AAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lNT0RFAAAAAAAAAAAA/8maO0CZKgACAAAAbHw4AHB9OAAAAAAAAAAAAP/JmjtAmSoAAQAAANgpKwD/yZo7JOMpAA4AAAD/////gADwCAAMEJAmiT3QBBgAAP/JmjucYSoAAQAAAP8PAAD/yZo7qKwqAEwAAAD/////5AAAAAAAAABSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgZGVzY3JpYmVzIHRoZQogICAgZmlsZSB0eXBlLgogICAgAAAAAP/JmjuorCoABgAAAP/////kAAAAAAAAAFNfSUZNVAAAAAAAAAAAAAD/yZo7QJkqAAIAAACAfTgAgH40AP/Jmjsk4ykADgAAAP////+AAPAIAAwQkCiJP9AEGgAA/8maO6isKgAoAAAA/////+QAAAAAAAAAUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgZGlyZWN0b3J5LgAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lGRElSAAAAAAAAAAAA/8maO0CZKgABAAAARH44AAAAAAAAAAAA/8maO0CZKgACAAAA6H04AIh+OAD/yZo7JOMpABMAAAD/////gADlCxGQJIk8jDydN9ILItAEIgD/yZo7qKwqADwAAAD/////5AAAAAAAAABSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBjaGFyYWN0ZXIgc3BlY2lhbCBkZXZpY2UgZmlsZS4AAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JRkNIUgD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lTQ0hSAAAAAAAAAAAA/8maO0CZKgABAAAAAH84AAAAAAAAAAAA/8maO0CZKgACAAAA6H04AFh/OAD/yZo7qKwqADgAAAD/////5AAAAAAAAABSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBibG9jayBzcGVjaWFsIGRldmljZSBmaWxlLgAAAAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lGQkxLAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSVNCTEsAAAAAAAAAAAD/yZo7QJkqAAEAAADMfzgAAAAAAAAAAAD/yZo7QJkqAAIAAADofTgAIIA4AP/JmjuorCoAKwAAAP/////kAAAAAAAAAFJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHJlZ3VsYXIgZmlsZS4A/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JRlJFRwAAAAAAAAAAAP/JmjtAmSoAAQAAAJSAOAAAAAAAAAAAAP/JmjtAmSoAAgAAAOh9OADYgDgA/8maO6isKgAwAAAA/////+QAAAAAAAAAUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgRklGTyAobmFtZWQgcGlwZSkuAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSUZJRk8A/8maO6isKgAIAAAA/////+QAAAAAAAAAU19JU0ZJRk8AAAAAAAAAAAAAAAD/yZo7QJkqAAEAAAAsgTgAAAAAAAAAAAD/yZo7QJkqAAIAAADofTgAeIE4AP/JmjuorCoALAAAAP/////kAAAAAAAAAFJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHN5bWJvbGljIGxpbmsuAAAAAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSUZMTksAAAAAAAAAAAD/yZo7QJkqAAEAAADwgTgAAAAAAAAAAAD/yZo7QJkqAAIAAADofTgAOII4AP/JmjuorCoAJQAAAP/////kAAAAAAAAAFJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHNvY2tldC4AAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABTX0lGU09DSwAAAAD/yZo7qKwqAAgAAAD/////5AAAAAAAAABTX0lTU09DSwAAAAAAAAAAAAAAAP/JmjtAmSoAAQAAAIyCOAAAAAAAAAAAAP/JmjtAmSoAAgAAAOh9OADMgjgA/8maOyTjKQATAAAA/////4AA5QsRkCSJPIw8nTjSCyPQBCMA/8maO6isKgAjAAAA/////+QAAAAAAAAAUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgZG9vci4A/8maO6isKgAIAAAA/////+QAAAAAAAAAU19JU0RPT1IAAAAAAAAAAAAAAAD/yZo7QJkqAAIAAABsgzgAENopAP/Jmjsk4ykABwAAAP////+AAOALEIg1AP/JmjuorCoAKgAAAP/////kAAAAAAAAAFJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhbiBldmVudCBwb3J0LgAA/8maO6isKgAIAAAA/////+QAAAAAAAAAU19JU1BPUlQAAAAAAAAAAAAAAAD/yZo7QJkqAAIAAAAAhDgAENopAP/JmjuorCoAJwAAAP/////kAAAAAAAAAFJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHdoaXRlb3V0LgD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lTV0hUAAAAAAAAAAAA/8maO0CZKgACAAAAhIQ4ABDaKQD/yZo7qKwqAAEAAAD/////5AAAAAAAAABsAAAA/8maO6isKgABAAAA/////+QAAAAAAAAALQAAAP/JmjuorCoAAQAAAP/////kAAAAAAAAAFMAAAD/yZo7qKwqAAEAAAD/////5AAAAAAAAABUAAAA/8maO6isKgA7AAAA/////+QAAAAAAAAAQ29udmVydCBhIGZpbGUncyBtb2RlIHRvIGEgc3RyaW5nIG9mIHRoZSBmb3JtICctcnd4cnd4cnd4Jy4A/8maO6isKgAPAAAA/////+QAAAAAAAAAX2ZpbGVtb2RlX3RhYmxlAP/JmjuorCoACAAAAP/////kAAAAAAAAAGZpbGVtb2RlAAAAAP/JmjuorCoABAAAAP/////kAAAAAAAAAHBlcm0AAAAA/8maO6isKgAFAAAA/////+QAAAAAAAAAdGFibGUAAAD/yZo7qKwqAAMAAAD/////5AAAAAAAAABiaXQA/8maO6isKgAEAAAA/////+QAAAAAAAAAY2hhcgAAAAAAAAAAAAAAAP/JmjtAmSoAAwAAAHCFOAAchTgA9AYrAAAAAAAAAAAA/8maO0CZKgADAAAAxIU4AGghKwDkJysAAAAAAAAAAAD/yZo7QJkqAAUAAADYKSsAEIY4ADCGOABQhjgAbIY4AP/Jmjsk4ykAeQAAAP////+AAOALDYBE3REg8AAGBR3wAAYFHYgF2Bke8AAFCR3wAAUJHYlJiEOQFNgPE5BjiXqYU9IPINAPINgQFJcLkguYRNEQIdQQIdAQIdgQFZAF8AUAECHwCAANEY9LikuYA9EMHNQMHNAMHPjYCw2PN4o3kDSJPYw90AQYAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAU1RfTU9ERQD/yZo7qKwqAAYAAAD/////5AAAAAAAAABTVF9JTk8AAP/JmjuorCoABgAAAP/////kAAAAAAAAAFNUX0RFVgAA/8maO6isKgAIAAAA/////+QAAAAAAAAAU1RfTkxJTksAAAAA/8maO6isKgAGAAAA/////+QAAAAAAAAAU1RfVUlEAAD/yZo7qKwqAAYAAAD/////5AAAAAAAAABTVF9HSUQAAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNUX1NJWkUA/8maO6isKgAIAAAA/////+QAAAAAAAAAU1RfQVRJTUUAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAU1RfTVRJTUUAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAU1RfQ1RJTUUAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAU19JRkRPT1IAAAAA/8maO6isKgAIAAAA/////+QAAAAAAAAAU19JRlBPUlQAAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JRldIVAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lTVUlEAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSVNHSUQA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19FTkZNVAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lTVlRYAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSVJFQUQA/8maO6isKgAIAAAA/////+QAAAAAAAAAU19JV1JJVEUAAAAA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JRVhFQwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lSV1hVAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSVJVU1IA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JV1VTUgD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lYVVNSAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSVJXWEcA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JUkdSUAD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lXR1JQAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSVhHUlAA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JUldYTwD/yZo7qKwqAAcAAAD/////5AAAAAAAAABTX0lST1RIAP/JmjuorCoABwAAAP/////kAAAAAAAAAFNfSVdPVEgA/8maO6isKgAHAAAA/////+QAAAAAAAAAU19JWE9USAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABVRl9OT0RVTVAAAAD/yZo7qKwqAAwAAAD/////5AAAAAAAAABVRl9JTU1VVEFCTEUAAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAVUZfQVBQRU5EAAAA/8maO6isKgAJAAAA/////+QAAAAAAAAAVUZfT1BBUVVFAAAA/8maO6isKgALAAAA/////+QAAAAAAAAAVUZfTk9VTkxJTksA/8maO6isKgANAAAA/////+QAAAAAAAAAVUZfQ09NUFJFU1NFRAAAAP/JmjuorCoACQAAAP/////kAAAAAAAAAFVGX0hJRERFTgAAAP/JmjuorCoACwAAAP/////kAAAAAAAAAFNGX0FSQ0hJVkVEAP/JmjuorCoADAAAAP/////kAAAAAAAAAFNGX0lNTVVUQUJMRQAAAAD/yZo7qKwqAAkAAAD/////5AAAAAAAAABTRl9BUFBFTkQAAAD/yZo7qKwqAAsAAAD/////5AAAAAAAAABTRl9OT1VOTElOSwD/yZo7qKwqAAsAAAD/////5AAAAAAAAABTRl9TTkFQU0hPVAD/yZo7qKwqABYAAAD/////5AAAAAAAAABGSUxFX0FUVFJJQlVURV9BUkNISVZFAAD/yZo7qKwqABkAAAD/////5AAAAAAAAABGSUxFX0FUVFJJQlVURV9DT01QUkVTU0VEAAAA/8maO6isKgAVAAAA/////+QAAAAAAAAARklMRV9BVFRSSUJVVEVfREVWSUNFAAAA/8maO6isKgAYAAAA/////+QAAAAAAAAARklMRV9BVFRSSUJVVEVfRElSRUNUT1JZAAAAAP/JmjuorCoAGAAAAP/////kAAAAAAAAAEZJTEVfQVRUUklCVVRFX0VOQ1JZUFRF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+AAAAAD/yZo7qKwqAK8CAAD/////5AAAAAAAAABSZXR1cm4gdGhlIHNwZWMgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLgoKICAgIEZpcnN0LCBzeXMubW9kdWxlcyBpcyBjaGVja2VkIHRvIHNlZSBpZiB0aGUgbW9kdWxlIHdhcyBhbHJlYWR5IGltcG9ydGVkLiBJZgogICAgc28sIHRoZW4gc3lzLm1vZHVsZXNbbmFtZV0uX19zcGVjX18gaXMgcmV0dXJuZWQuIElmIHRoYXQgaGFwcGVucyB0byBiZQogICAgc2V0IHRvIE5vbmUsIHRoZW4gVmFsdWVFcnJvciBpcyByYWlzZWQuIElmIHRoZSBtb2R1bGUgaXMgbm90IGluCiAgICBzeXMubW9kdWxlcywgdGhlbiBzeXMubWV0YV9wYXRoIGlzIHNlYXJjaGVkIGZvciBhIHN1aXRhYmxlIHNwZWMgd2l0aCB0aGUKICAgIHZhbHVlIG9mICdwYXRoJyBnaXZlbiB0byB0aGUgZmluZGVycy4gTm9uZSBpcyByZXR1cm5lZCBpZiBubyBzcGVjIGNvdWxkCiAgICBiZSBmb3VuZC4KCiAgICBJZiB0aGUgbmFtZSBpcyBmb3Igc3VibW9kdWxlIChjb250YWlucyBhIGRvdCksIHRoZSBwYXJlbnQgbW9kdWxlIGlzCiAgICBhdXRvbWF0aWNhbGx5IGltcG9ydGVkLgoKICAgIFRoZSBuYW1lIGFuZCBwYWNrYWdlIGFyZ3VtZW50cyB3b3JrIHRoZSBzYW1lIGFzIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkuCiAgICBJbiBvdGhlciB3b3JkcywgcmVsYXRpdmUgbW9kdWxlIG5hbWVzICh3aXRoIGxlYWRpbmcgZG90cykgd29yay4KCiAgICAA/8maO6isKgAgAAAA/////+QAAAAAAAAAX19wYXRoX18gYXR0cmlidXRlIG5vdCBmb3VuZCBvbiAAAAAA/8maO6isKgAWAAAA/////+QAAAAAAAAAIHdoaWxlIHRyeWluZyB0byBmaW5kIAAA/8maO6isKgALAAAA/////+QAAAAAAAAAcGFyZW50X25hbWUAAAAAAAAAAAD/yZo7QJkqAAsAAADgmDgAtAYrAOTcKgAsFysAyJ44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b3IgdG8gaGFuZGxlIHNlbGVjdGluZyB0aGUgcHJvcGVyIG1vZHVsZSBmb3IgbG9hZGVycy4KCiAgICBUaGUgZGVjb3JhdGVkIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgbW9kdWxlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBtb2R1bGUKICAgIG5hbWUuIFRoZSBtb2R1bGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbiBpcyBlaXRoZXIgZnJvbSBzeXMubW9kdWxlcyBpZgogICAgaXQgYWxyZWFkeSBleGlzdHMgb3IgaXMgYSBuZXcgbW9kdWxlLiBJZiB0aGUgbW9kdWxlIGlzIG5ldywgdGhlbiBfX25hbWVfXwogICAgaXMgc2V0IHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbWV0aG9kLCBfX2xvYWRlcl9fIGlzIHNldCB0byBzZWxmLCBhbmQKICAgIF9fcGFja2FnZV9fIGlzIHNldCBhY2NvcmRpbmdseSAoaWYgc2VsZi5pc19wYWNrYWdlKCkgaXMgZGVmaW5lZCkgd2lsbCBiZSBzZXQKICAgIGJlZm9yZSBpdCBpcyBwYXNzZWQgdG8gdGhlIGRlY29yYXRlZCBmdW5jdGlvbiAoaWYgc2VsZi5pc19wYWNrYWdlKCkgZG9lcwogICAgbm90IHdvcmsgZm9yIHRoZSBtb2R1bGUgaXQgd2lsbCBiZSBzZXQgcG9zdC1sb2FkKS4KCiAgICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgZGVjb3JhdG9yIGNyZWF0ZWQgdGhlIG1vZHVsZSBpdCBpcwogICAgc3Vic2VxdWVudGx5IHJlbW92ZWQgZnJvbSBzeXMubW9kdWxlcy4KCiAgICBUaGUgZGVjb3JhdG9yIGFzc3VtZXMgdGhhdCB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIHRha2VzIHRoZSBtb2R1bGUgbmFtZSBhcwogICAgdGhlIHNlY29uZCBhcmd1bWVudC4KCiAgICAAAP/JmjuorCoAGQAAAP/////kAAAAAAAAAG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIAAAD/yZo7qKwqADQAAAD/////5AAAAAAAAABtb2R1bGVfZm9yX2xvYWRlci48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ADQqKwBE1zgA/8maOyTjKQDSAAAA/////4AA8BwHBRbYCxXwAAMJSAGYGKBa0hkv0Bkv3Sc6uDjFVtEnTNQnTNEMJIhIkGigBKAE5Sc/xQbRJ0fUJ0fRDCSISJBooAT4+N0LEfAAAgUW8AACBRbwAAIFFt0aHZwumC6YLqgjqCPQDi6IA90IC4wIkBOJDYwNiA2IDYgNiA2IDYgN+Pj4+PAFAgUW+Pj49QYAFBeUO5h61BMq1BMzgEzYBxHwAAEFJtgWHpRvjQOMCJARiQvdCxSQVJg8qBTYFR+gGPEDAQwr9AABDCvwAAEFKwAA/8maO6isKgAgAwAA/////6gAAAAAAAAAAAAAAAAAAAAAAAAARQB4AGUAYwB1AHQAZQAgAGEAIABtAG8AZAB1AGwAZQAnAHMAIABjAG8AZABlACAAdwBpAHQAaABvAHUAdAAgAGkAbQBwAG8AcgB0AGkAbgBnACAAaQB0AC4ACgAKACAAIAAgACAAIAAgACAAbQBvAGQAXwBuAGEAbQBlACAALQAtACAAYQBuACAAYQBiAHMAbwBsAHUAdABlACAAbQBvAGQAdQBsAGUAIABuAGEAbQBlACAAbwByACAAcABhAGMAawBhAGcAZQAgAG4AYQBtAGUALgAKAAoAIAAgACAAIAAgACAAIABPAHAAdABpAG8AbgBhAGwAIABhAHIAZwB1AG0AZQBuAHQAcwA6AAoAIAAgACAAIAAgACAAIABpAG4AaQB0AF8AZwBsAG8AYgBhAGwAcwAgAC0ALQAgAGQAaQBjAHQAaQBvAG4AYQByAHkAIAB1AHMAZQBkACAAdABvACAAcAByAGUALQBwAG8AcAB1AGwAYQB0AGUAIAB0AGgAZQAgAG0AbwBkAHUAbABlABkgcwAKACAAIAAgACAAIAAgACAAZwBsAG8AYgBhAGwAcwAgAGQAaQBjAHQAaQBvAG4AYQByAHkAIABiAGUAZgBvAHIAZQAgAHQAaABlACAAYwBvAGQAZQAgAGkAcwAgAGUAeABlAGMAdQB0AGUAZAAuAAoACgAgACAAIAAgACAAIAAgAHIAdQBuAF8AbgBhAG0AZQAgAC0ALQAgAGkAZgAgAG4AbwB0ACAATgBvAG4AZQAsACAAdABoAGkAcwAgAHcAaQBsAGwAIABiAGUAIAB1AHMAZQBkACAAZgBvAHIAIABzAGUAdAB0AGkAbgBnACAAXwBfAG4AYQBtAGUAXwBfADsACgAgACAAIAAgACAAIAAgAG8AdABoAGUAcgB3AGkAcwBlACwAIABfAF8AbgBhAG0AZQBfAF8AIAB3AGkAbABsACAAYgBlACAAcwBlAHQAIAB0AG8AIABtAG8AZABfAG4AYQBtAGUAIAArACAAJwBfAF8AbQBhAGkAbgBfAF8AJwAgAGkAZgAgAHQAaABlAAoAIAAgACAAIAAgACAAIABuAGEAbQBlAGQAIABtAG8AZAB1AGwAZQAgAGkAcwAgAGEAIABwAGEAYwBrAGEAZwBlACAAYQBuAGQAIAB0AG8AIABqAHUAcwB0ACAAbQBvAGQAXwBuAGEAbQBlACAAbwB0AGgAZQByAHcAaQBzAGUALgAKAAoAIAAgACAAIAAgACAAIABhAGwAdABlAHIAXwBzAHkAcwAgAC0ALQAgAGkAZgAgAFQAcgB1AGUALAAgAHMAeQBzAC4AYQByAGcAdgBbADAAXQAgAGkAcwAgAHUAcABkAGEAdABlAGQAIAB3AGkAdABoACAAdABoAGUAIAB2AGEAbAB1AGUAIABvAGYACgAgACAAIAAgACAAIAAgAF8AXwBmAGkAbABlAF8AXwAgAGEAbgBkACAAcwB5AHMALgBtAG8AZAB1AGwAZQBzAFsAXwBfAG4AYQBtAGUAXwBfAF0AIABpAHMAIAB1AHAAZABhAHQAZQBkACAAdwBpAHQAaAAgAGEAIAB0AGUAbQBwAG8AcgBhAHIAeQAKACAAIAAgACAAIAAgACAAbQBvAGQAdQBsAGUAIABvAGIAagBlAGMAdAAgAGYAbwByACAAdABoAGUAIABtAG8AZAB1AGwAZQAgAGIAZQBpAG4AZwAgAGUAeABlAGMAdQB0AGUAZAAuACAAQgBvAHQAaAAgAGEAcgBlAAoAIAAgACAAIAAgACAAIAByAGUAcwB0AG8AcgBlAGQAIAB0AG8AIAB0AGgAZQBpAHIAIABvAHIAaQBnAGkAbgBhAGwAIAB2AGEAbAB1AGUAcwAgAGIAZQBmAG8AcgBlACAAdABoAGUAIABmAHUAbgBjAHQAaQBvAG4AIAByAGUAdAB1AHIAbgBzAC4ACgAKACAAIAAgACAAIAAgACAAUgBlAHQAdQByAG4AcwAgAHQAaABlACAAcgBlAHMAdQBs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AGkAbwBuACAAbwBmACAAYQAgAFAAeQB0AGgAbwBuACAAcwBjAHIAaQBwAHQALAAgAHoAaQBwAGYAaQBsAGUALAAKACAAIAAgACAAIAAgACAAbwByACAAZABpAHIAZQBjAHQAbwByAHkAIABjAG8AbgB0AGEAaQBuAGkAbgBnACAAYQAgAHQAbwBwACAAbABlAHYAZQBsACAAXwBfAG0AYQBpAG4AXwBfAC4AcAB5ACAAcwBjAHIAaQBwAHQALgAKAAoAIAAgACAAIAAgACAAIABPAHAAdABpAG8AbgBhAGwAIABhAHIAZwB1AG0AZQBuAHQAcwA6AAoAIAAgACAAIAAgACAAIABpAG4AaQB0AF8AZwBsAG8AYgBhAGwAcwAgAC0ALQAgAGQAaQBjAHQAaQBvAG4AYQByAHkAIAB1AHMAZQBkACAAdABvACAAcAByAGUALQBwAG8AcAB1AGwAYQB0AGUAIAB0AGgAZQAgAG0AbwBkAHUAbABlABkgcwAKACAAIAAgACAAIAAgACAAZwBsAG8AYgBhAGwAcwAgAGQAaQBjAHQAaQBvAG4AYQByAHkAIABiAGUAZgBvAHIAZQAgAHQAaABlACAAYwBvAGQAZQAgAGkAcwAgAGUAeABlAGMAdQB0AGUAZAAuAAoACgAgACAAIAAgACAAIAAgAHIAdQBuAF8AbgBhAG0AZQAgAC0ALQAgAGkAZgAgAG4AbwB0ACAATgBvAG4AZQAsACAAdABoAGkAcwAgAHcAaQBsAGwAIABiAGUAIAB1AHMAZQBkACAAdABvACAAcwBlAHQAIABfAF8AbgBhAG0AZQBfAF8AOwAKACAAIAAgACAAIAAgACAAbwB0AGgAZQByAHcAaQBzAGUALAAgACcAPAByAHUAbgBfAHAAYQB0AGgAPgAnACAAdwBpAGwAbAAgAGIAZQAgAHUAcwBlAGQAIABmAG8AcgAgAF8AXwBuAGEAbQBlAF8AXwAuAAoACgAgACAAIAAgACAAIAAgAFIAZQB0AHUAcgBuAHMAIAB0AGgAZQAgAHIAZQBzAHUAbAB0AGkAbgBnACAAbQBvAGQAdQBsAGUAIABnAGwAbwBiAGEAbABzACAAZABpAGMAdABpAG8AbgBhAHIAeQAuAAoAIAAgACAAIAAAAAAA/8maO6isKgAKAAAA/////+QAAAAAAAAAPHJ1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AGoTAAChEwAAbBMAAKITAAAAAAAAAA05AKMTAACkEwAAqEg5AOCaKQAcETkAgEg5AAqbKQDcSDkAO5spAAAAAAABAAAAAA05AAP0///cSDkAapspAAAAAAABAAAAAA05AAP0//8MAAAAAAAAABQNOQBuEwAAbxMAAPT////0////FA05AHATAABxEwAABAAAAAAAAAAsDTkAchMAAHMTAAD8/////P///ywNOQB0EwAAdRMAANxIOQCZmykAAwAAAAIAAAAUDTkAAgAAACwNOQACCAAAAAAAAMQNOQClEwAAphMAAKhIOQDJmykAHBE5AIBIOQDzmykA3Eg5ACScKQAAAAAAAQAAAMQNOQAD9P//3Eg5AFOcKQAAAAAAAQAAAMQNOQAD9P//qEg5AIKcKQAMDTkAQAAAAAAAAAAEDzkApxMAAKgTAAA4AAAA+P///wQPOQCpEwAAqhMAAMD////A////BA85AKsTAACsEwAAIA45AIQOOQDADjkA1A45AOgOOQD8DjkArA45AJgOOQBIDjkANA45AEAAAAAAAAAAlA05AHYTAAB3EwAAOAAAAPj///+UDTkAeBMAAHkTAADA////wP///5QNOQB6EwAAexMAAEAAAAAAAAAAFA05AG4TAABvEwAAwP///8D///8UDTkAcBMAAHETAAA4AAAAAAAAACwNOQByEwAAcxMAAMj////I////LA05AHQTAAB1EwAAqEg5AMScKQCUDTkAOAAAAAAAAABwDzkArRMAAK4TAADI////yP///3APOQCvEwAAsBMAABwPOQBUDzkAaA85ADAPOQA4AAAAAAAAACwNOQByEwAAcxMAAMj////I////LA05AHQTAAB1EwAAqEg5AAmdKQAsDTkAPAAAAAAAAADcDzkAsRMAALITAADE////xP///9wPOQCzEwAAtBMAAIgPOQDADzkA1A85AJwPOQA8AAAAAAAAABQNOQBuEwAAbxMAAMT////E////FA05AHATAABxEwAAqEg5AE+dKQAUDTkAbAAAAAAAAABIEDkAtRMAALYTAACU////lP///0gQOQC3EwAAuBMAAPQPOQAsEDkAQBA5AAgQOQBsAAAAAAAAABQNOQBuEwAAbxMAAJT///+U////FA05AHATAABxEwAAqEg5AJWdKQAUDTkAaAAAAAAAAAC0EDkAuRMA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AJQVAACVFQAAlhUAAJcVAACYFQAAmRUAANxIOQA+pykAAAAAAAIAAABUFDkAAgAAAPwUOQACAAAAqEg5ACKnKQCEFzkAAAAAAOAXOQBXFQAAmhUAABUVAACbFQAAnBUAAJ0VAACeFQAAnxUAAKAVAAChFQAAqEg5AGCnKQBUFTkAAAAAABwYOQBXFQAAohUAABUVAACjFQAApBUAAKUVAACmFQAApxUAAKgVAACpFQAAqEg5AH2nKQD0FTkAAAAAAFgYOQA+FQAAqhUAABUVAACrFQAArBUAAK0VAACuFQAArxUAALAVAACxFQAAqEg5AJqnKQCEFzkAAAAAAJQYOQA+FQAAshUAABUVAACzFQAAtBUAALUVAAC2FQAAtxUAALgVAAC5FQAAqEg5ALunKQCEFzkAAAAAANAYOQBXFQAAuhUAABUVAAC7FQAAvBUAAL0VAAC+FQAAvxUAAMAVAADBFQAAqEg5ANynKQBUFTkAAAAAAAwZOQBXFQAAwhUAABUVAADDFQAAxBUAAMUVAADGFQAAxxUAAMgVAADJFQAAqEg5AP6nKQBUFTkAAAAAAEgZOQBXFQAAyhUAABUVAADLFQAAzBUAAM0VAADOFQAAzxUAANAVAADRFQAAqEg5ACCoKQD0FTkAAAAAAIQZOQBXFQAA0hUAABUVAADTFQAA1BUAANUVAADWFQAA1xUAANgVAADZFQAAqEg5AEKoKQD0FTkAAAAAAMAZOQA+FQAA2hUAABUVAADbFQAA3BUAAN0VAADeFQAA3xUAAOAVAADhFQAAqEg5AGSoKQCEFzkAAAAAAPwZOQBXFQAA4hUAABUVAADjFQAA5BUAAOUVAADmFQAA5xUAAOgVAADpFQAAqEg5AIaoKQD0FTkAAAAAADgaOQBXFQAA6hUAABUVAADrFQAA7BUAAO0VAADuFQAA7xUAAPAVAADxFQAAqEg5AKmoKQBUFTkAqEg5AMyoKQBUFDkAqEg5AP6oKQBUFDkAqEg5AOKoKQBQGjkAqEg5AC6pKQBUFDkAqEg5ABKpKQBoGjkA3Eg5AEKpKQAAAAAAAgAAAFQUOQACAAAApBQ5AAIAAACoSDkAVKkpAIAaOQCoSDkAbqkpAKwUOQCoSDkAiKkpAFQUOQCoSDkAnakpAFQUOQCoSDkAsqkpALgaOQCoSDkAz6kpAMQaOQAAAAAAUBo5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AAgAAAAWGAAAAAQAAJBBAAAAAQAAqEg5AOq3KQCgSjkArhQDAOoUAwBBEQMA4RsDAGwjAwBVLAMA4ecCAGL8AgAH8gIAbBIDACX9AgBtAQMA9xkDAMUdAwAy+AIAi8ABAOv8AgAAAAAA/C05AJUXAACWFwAAYhMAAGMTAACXFwAAmBcAAGYTAABnEwAAaBMAAJkXAABqEwAAmhcAAGwTAACbFwAAOAAAAAAAAAAwLjkAnBcAAJ0XAADI////yP///zAuOQCeFwAAnxcAADQtOQAULjkAKC45AEgtOQA0AAAAAAAAAGQuOQCgFwAAoRcAAMz////M////ZC45AKIXAACjFwAAbC05AEguOQBcLjkAgC05ADwAAAAAAAAA/C45AKQXAAClFwAANAAAAPj////8LjkAphcAAKcXAADE////xP////wuOQCoFwAAqRcAAKQtOQB8LjkAuC45AMwuOQDgLjkA9C45AKQuOQCQLjkAzC05ALgtOQCoSDkA0LgpAAwNOQA4AAAAAAAAABQNOQBuEwAAbxMAAMj////I////FA05AHATAABxEwAAqEg5AOe4KQAUDTkANAAAAAAAAAAsDTkAchMAAHMTAADM////zP///ywNOQB0EwAAdRMAAKhIOQD8uCkALA05ADwAAAAAAAAAlA05AHYTAAB3EwAANAAAAPj///+UDTkAeBMAAHkTAADE////xP///5QNOQB6EwAAexMAADwAAAAAAAAAFA05AG4TAABvEwAAxP///8T///8UDTkAcBMAAHETAAA0AAAAAAAAACwNOQByEwAAcxMAAMz////M////LA05AHQTAAB1EwAAqEg5ABG5KQCUDTkAFC85AAAAAADULzkA6xIAAK0XAACuFwAA7hIAAO8SAADwEgAArxcAADwvOQAAAAAA4C85AOsSAACwFwAAsRcAALIXAADvEgAA8BIAALMXAAAAAAAAbC85AKwXAAC0FwAA2hIAAKhIOQAkuSkAoEo5AAAAAACcLzkA6xIAALUXAACKEgAA7hIAAO8SAADwEgAAihIAAIBIOQA7uSkAAAAAAMgvOQDrEgAAthcAAIoSAADuEgAA7xIAAPASAAC3FwAAqEg5AFS5KQCcLzkAqEg5AGu5KQDILzkAqEg5AI65KQDILzkAAAAAAAAwOQCpEgAAyxcAAMwXAACoSDkAsbkpAJhJOQAAAAAAzhcAAAAAAABIMDkA3hcAAN8XAADgFwAA4RcAAOIXAADjFwAA5BcAAOUXAADmFwAAgEg5APi5KQCoSDkAyLkpAEAwOQAAAAAAQDA5AN4XAADfFwAA4BcAAOEXAACKEgAA4xcAAOQXAADlFwAA5xcAAAAAAACsMDkA3hcAAN8XAADgFwAA4RcAAOgXAADjFwAA5BcAAOUXAADpFwAAqEg5ACC6KQBAMDkAAAAAAOQwOQDeFwAA3xcAAOAXAADhFwAA6hcAAOMXAADrFwAA5RcAAOwXAACoSDkAWropAEAwOQAAAAAAHDE5AN4XAADfFwAA4BcAAOEXAADtFwAA4xcAAOQXAADlFwAA7hcAAKhIOQCGuikAQDA5AAAAAABUMTkA7xcAAPAXAADxFwAA8hcAAPMXAAD0FwAA5BcAAOUXAAD1FwAAqEg5ALW6KQBAMDkAYU4CInrQAgBhUwIi1c8CAGFhAhzvjAMAYWQABOWMAwBhbgIW5YwDAGF0DAUnkwMAYXcKAJZCAABhegwEJ5MDAGNjCwK4JQAAY2wHAkBqAwBjbQIkrS4DAGNvAAQbAAAAY3YIBlHcAABkVgIiRtACAGRhBgUicAIAZGMLAu4lAABkZQAE5i4DAGRsBgRRswEAZHMECBcvAwBkdAQCFPYCAGR2AiJR5wIAZU8CIv/PAgBlbwIYr20CAGVxAhQk0AIAZ2UCEg3QAgBndAISY8cCAGl4AwIXcAIAbFMCIjrQAgBsZQISL9ACAGxzAg6z0AIAbHQCEpvQAgBtSQIiVdACAG1MAiJr0AIAbWkCDFQuAwBtbAIK5i4DAG1tAQKfLgMAbmEFBQhwAgBuZQIUkNACAG5nAARULgMAbnQABHqOAwBudwUEJBcAAG9SAiKuzwIAb28CHjUBAABvcgIaQAEAAHBMAiJg0AIAcGwCDL8uAwBwbQQIBy8DAHBwAQLYLgMAcHMABL8uAwBwdAQDrc4CAHF1CSAVwgIAck0CIoXQAgByUwIiGNACAHJjCwLDJQAAcm0CCgGNAwBycwIOk84CAHNjCwLiJQAAc3MCEJ7OAgBzdAwFMJMDAHN6DAQwkwMAdGUMAgCUAwB0aQwDAJQDAAAAAAB8MzkA3hcAAN8XAADgFwAA4RcAAPYXAADjFwAA5BcAAOUXAAD3FwAAqEg5APK6KQBAMDkAAAAAALQzOQDeFwAA3xcAAOAXAADhFwAA+BcAAOMXAADkFwAA5RcAAPkXAACoSDkAIbspAEAwOQAAAAAA7DM5AN4XAADfFwAA4BcAAOEXAAD6FwAA4xcAAOQXAADlFwAA+xcAAKhIOQBQuykAQDA5AAAAAAAkNDkA3hcAAN8XAADgFwAA4RcAAPwXAADjFwAA5BcAAOUXAAD9FwAAqEg5AIC7KQBAMDkAAAAAAFw0OQDeFwAA3xcAAOAXAADhFwAA/hcAAOMXAADkFwAA5RcAAP8XAACoSDkAt7spAEAwOQAAAAAAlDQ5AN4XAADfFwAA4BcAAOEXAAAAGAAA4xcAAOQXAADlFwAAARgAAKhIOQDmuykAQDA5AAAAAADMNDkA3hcAAN8XAADgFwAA4RcAAAIYAADjFwAA5BcAAOUXAAADGAAAqEg5ABG8KQBAMDkAAAAAAAQ1OQDeFwAA3xcAAOAXAADhFwAABBgAAOMXAADkFwAA5RcAAAUYAACoSDkAQLwpAEAwOQAAAAAAPDU5AN4XAADfFwAA4BcAAOEXAAAGGAAA4xcAAOQXAADlFwAABxgAAKhIOQBsvCkAQDA5AAAAAAB0NTkA3hcAAN8XAADgFwAA4RcAAAgYAADjFwAA5BcAAOUXAAAJGAAAqEg5AJ+8KQBAMDkAAAAAAKw1OQDeFwAA3xcAAOAXAADhFwAAChgAAOMXAADkFwAA5RcAAAsYAACoSDkA07wpAEAwOQAAAAAA5DU5AN4XAADfFwAA4BcAAOEXAAAMGAAA4xcAAOQXAADlFwAADRgAAKhIOQD/vCkAQDA5AAAAAAAcNjkA3hcAAN8XAADgFwAA4RcAAA4YAADjFwAA5BcAAOUXAAAPGAAAqEg5ADG9KQBAMDkAAAAAAFQ2OQDeFwAA3xcAAOAXAADhFwAAEBgAAOMXAADkFwAA5RcAABEYAACoSDkAZL0pAEAwOQAAAAAAjDY5AN4XAADfFwAA4BcAAOEXAAASGAAA4xcAAOQXAADlFwAAExgAAKhIOQCQvSkAQDA5AAAAAADENjkA3hcAAN8XAADgFwAA4RcAABQYAADjFwAA5BcAAOUXAAAVGAAAqEg5AMi9KQBAMDkAAAAAAPw2OQDeFwAA3xcAAOAXAADhFwAAFhgAAOMXAADkFwAA5RcAABcYAACoSDkAAL4pAEAwOQAAAAAANDc5AN4XAADfFwAA4BcAAOEXAAAYGAAA4xcAAOQXAADlFwAAGRgAAKhIOQA4vikAQDA5AAAAAABsNzkA3hcAAN8XAADgFwAA4RcAABoYAADjFwAA5BcAAOUXAAAbGAAAqEg5AGq+KQBAMDkAAAAAAKQ3OQDeFwAA3xcAAOAXAADhFwAAHBgAAOMXAADkFwAA5RcAAB0YAACoSDkAnr4pAEAwOQAAAAAA3Dc5AN4XAADfFwAA4BcAAOEXAAAeGAAAHxgAAOQXAADlFwAAIBgAAKhIOQDdvikAQDA5AAAAAAAUODkA3hcAAN8XAADgFwAA4RcAACEYAAAiGAAA5BcAAOUXAAAjGAAAqEg5ABe/KQBAMDkAAAAAAEw4OQDeFwAA3xcAAOAXAADhFwAAJBgAACUYAADkFwAA5RcAACYYAACoSDkAVL8pAEAwOQAAAAAAhDg5AN4XAADfFwAA4BcAAOEXAAAnGAAAKBgAAOQXAADlFwAAKRgAAKhIOQCSvykAQDA5AAAAAAC8ODkA3hcAAN8XAADgFwAA4RcAACoYAADjFwAA5BcAAOUXAAArGAAAqEg5AMy/KQBAMDkAAAAAAPQ4OQDeFwAA3xcAAOAXAADhFwAALBgAAOMXAADkFwAA5RcAAC0YAACoSDkAAMApAEAwOQAAAAAALDk5AN4XAADfFwAA4BcAAOEXAAAuGAAA4xcAAOQXAADlFwAALxgAAKhIOQAvwCkAQDA5AAAAAABkOTkA3hcAAN8XAADgFwAA4RcAADAYAADjFwAA5BcAAOUXAAAxGAAAqEg5AF/AKQBAMDkAAAAAAJw5OQDeFwAA3xcAAOAXAADhFwAAMhgAAOMXAADkFwAA5RcAADMYAACoSDkAkcApAEAwOQAAAAAA1Dk5AN4XAADfFwAA4BcAAOEXAAA0GAAA4xcAAOQXAADlFwAANRgAAKhIOQC9wCkAQDA5AAAAAAAMOjkA3hcAAN8XAADgFwAA4RcAADYYAADjFwAA5BcAAOUXAAA3GAAAqEg5APjAKQBAMDkAAAAAAEQ6OQDeFwAA3xcAAOAXAADhFwAAOBgAAOMXAADkFwAA5RcAADkYAACoSDkAJ8EpAEAwOQAAAAAAfDo5AN4XAADfFwAA4BcAAOEXAAA6GAAA4xcAAOQXAADlFwAAOxgAAKhIOQBbwSkAQDA5AAAAAAC0OjkA3hcAAN8XAADgFwAA4RcAADwYAADjFwAA5BcAAOUXAAA9GAAAqEg5AIzBKQBAMDkAAAAAAOw6OQDeFwAA3xcAAOAXAADhFwAAPhgAAOMXAADkFwAA5RcAAD8YAACoSDkAzsEpAEAwOQAAAAAAJDs5AN4XAADfFwAA4BcAAOEXAABAGAAA4xcAAOQXAADlFwAAQRgAAKhIOQAAwikAQDA5AAAAAABcOzkA3hcAAN8XAADgFwAA4RcAAEIYAADjFwAA5BcAAOUXAABDGAAAqEg5ADjCKQBAMDkAAAAAAJQ7OQDeFwAA3xcAAOAXAADhFwAARBgAAOMXAADkFwAA5RcAAEUYAACoSDkAasIpAEAwOQAAAAAAzDs5AN4XAADfFwAA4BcAAOEXAABGGAAA4xcAAEcYAADlFwAASBgAAKhIOQCXwikAQDA5AAAAAAAEPDkA3hcAAN8XAADgFwAA4RcAAEkYAADjFwAA5BcAAOUXAABKGAAAqEg5AMnCKQBAMDkAAAAAADw8OQDeFwAA3xcAAOAXAADhFwAASxgAAOMXAADkFwAA5RcAAEwYAACoSDkA9cIpAEAwOQAAAAAAdDw5AN4XAADfFwAA4BcAAOEXAABNGAAA4xcAAOQXAADlFwAAThgAAKhIOQAwwykAQDA5AAAAAACsPDkA3hcAAN8XAADgFwAA4RcAAE8YAADjFwAAUBgAAOUXAABRGAAAqEg5AGTDKQBAMDkAAAAAAPA8OQDeFwAA3xcAAOAXAADhFwAAUhgAAOMXAABTGAAA5RcAAFQYAACoSDkA1MMpAEAwOQCoSDkAnMMpAOQ8OQAAAAAA5Dw5AN4XAADfFwAA4BcAAOEXAABVGAAA4xcAAFYYAADlFwAAVxgAAAAAAABUPTkA3hcAAN8XAADgFwAA4RcAAFgYAADjFwAA5BcAAOUXAABZGAAAqEg5ABTEKQBAMDkAAAAAAIw9OQDeFwAA3xcAAOAXAADhFwAAWhgAAOMXAADkFwAA5RcAAFsYAACoSDkAQ8QpAEAwOQAAAAAAxD05AN4XAADfFwAA4BcAAOEXAABcGAAA4xcAAOQXAADlFwAAXRgAAKhIOQB9xCkAQDA5AAAAAAD8PTkA3hcAAN8XAADgFwAA4RcAAF4YAADjFwAAXxgAAOUXAABgGAAAqEg5AK7EKQBAMDkAAAAAADQ+OQDeFwAA3xcAAOAXAADhFwAAYRgAAOMXAABiGAAA5RcAAGMYAACoSDkA38QpAEAwOQAAAAAAbD45AN4XAADfFwAA4BcAAOEXAABkGAAA4xcAAOQXAADlFwAAZRgAAKhIOQAOxSkAQDA5AAAAAACkPjkAZhgAAGcYAABoGAAAaRgAAGoYAABrGAAA5BcAAOUXAABsGAAAqEg5ADvFKQBAMDkAAAAAANw+OQDeFwAA3xcAAOAXAADhFwAAbRgAAOMXAADkFwAA5RcAAG4YAACoSDkAbcUpAEAwOQAAAAAAFD85AN4XAADfFwAA4BcAAOEXAABvGAAA4xcAAHAYAADlFwAAcRgAAKhIOQCexSkAQDA5AAAAAABMPzkA3hcAAN8XAADgFwAA4RcAAHIYAADjFwAA5BcAAOUXAABzGAAAqEg5ANfFKQBAMDkAAAAAAIQ/OQDeFwAA3xcAAOAXAADhFwAAdBgAAOMXAADkFwAA5RcAAHUYAACoSDkAEMYpAEAwOQAAAAAAvD85AHYYAADfFwAAdxgAAOEXAAB4GAAAeRgAAOQXAADlFwAAehgAAKhIOQBBxikAQDA5AAAAAAD0PzkA3hcAAN8XAADgFwAA4RcAAHsYAADjFwAA5BcAAOUXAAB8GAAAqEg5AHbGKQBAMDkAAAAAACxAOQDeFwAA3xcAAOAXAADhFwAAfRgAAOMXAADkFwAA5RcAAH4YAACoSDkAo8YpAEAwOQAAAAAAZEA5AN4XAADfFwAA4BcAAOEXAAB/GAAA4xcAAOQXAADlFwAAgBgAAKhIOQDUxikAQDA5AAAAAACcQDkAgRgAAN8XAACCGAAA4RcAAIMYAACEGAAA5BcAAOUXAACFGAAAqEg5AA3HKQBAMDkAAAAAANRAOQDeFwAA3xcAAOAXAADhFwAAhhgAAOMXAADkFwAA5RcAAIcYAACoSDkAPscpAEAwOQAAAAAADEE5AN4XAADfFwAA4BcAAOEXAACIGAAA4xcAAOQXAADlFwAAiRgAAKhIOQBwxykAQDA5AAAAAABEQTkAihgAAIsYAACMGAAA4RcAAI0YAACOGAAA5BcAAOUXAACPGAAAqEg5AKbHKQBAMDkAAAAAAHxBOQDeFwAA3xcAAOAXAADhFwAAkBgAAOMXAADkFwAA5RcAAJEYAACoSDkA0scpAEAwOQAAAAAAtEE5AN4XAADfFwAA4BcAAOEXAACSGAAA4xcAAOQXAADlFwAAkxgAAKhIOQADyCkAQDA5AAAAAADsQTkA3hcAAN8XAADgFwAA4RcAAJQYAADjFwAA5BcAAOUXAACVGAAAqEg5ADLIKQBAMDkAAAAAACRCOQDeFwAA3xcAAOAXAADhFwAAlhgAAOMXAADkFwAA5RcAAJcYAACoSDkAZsgpAEAwOQAAAAAAXEI5AJgYAACZGAAA4BcAAOEXAACaGAAAmxgAAOQXAADlFwAAnBgAAKhIOQCVyCkAQDA5AAAAAACUQjkAnRgAAN8XAADgFwAA4RcAAJ4YAACfGAAA5BcAAOUXAACgGAAAqEg5AMLIKQBAMDkAAAAAAMxCOQDeFwAA3xcAAOAXAADhFwAAoRgAAOMXAADkFwAA5RcAAKIYAACoSDkA+sgpAEAwOQAAAAAABEM5AKMYAADfFwAA4BcAAOEXAACkGAAApRgAAOQXAADlFwAAphgAAKhIOQA1ySkAQDA5AAAAAAA8QzkApxgAAN8XAADgFwAA4RcAAKgYAACpGAAA5BcAAOUXAACqGAAAqEg5AGXJKQBAMDkAAAAAAHRDOQDeFwAA3xcAAOAXAADhFwAAqxgAAOMXAADkFwAA5RcAAKwYAACoSDkAl8kpAEAwOQD33gAAQ4ABAEOAAQB3WAEAaVgBAFpYAQCoSDkA0MkpADBLOQCoSDkA8ckpAJhDOQCoSDkAE8opAJhDOQCoSDkANcopALBDOQCoSDkAWcopAJhDOQCoSDkAfsopALBDOQAAAAAAmEM5ALIYAACzGAAAtBgAALUYAACKEgAAAAAAABhEOQCyGAAAthgAALQYAAC1GAAAtxgAAKhIOQC4yikAmEM5AAREOQDgyikALEk5AOLKKQAAAAAAJEQ5ACxJOQDlyikAAQAAACREOQAERDkA6copACxJOQDsyikAAAAAAExEOQAsSTkA8MopAAEAAABMRDkABEQ5APXKKQAsSTkA98opAAAAAAB0RDkALEk5APrKKQABAAAAdEQ5AAREOQD+yikALEk5AADLKQAAAAAAnEQ5ACxJOQADyykAAQAAAJxEOQAERDkAB8spACxJOQAJyykAAAAAAMREOQAsSTkADMspAAEAAADERDkABEQ5ABDLKQAsSTkAEsspAAAAAADsRDkALEk5ABXLKQABAAAA7EQ5AAREOQAZyykALEk5ABvLKQAAAAAAFEU5ACxJOQAeyykAAQAAABRFOQAERDkAIsspACxJOQAkyykAAAAAADxFOQAsSTkAJ8spAAEAAAA8RTkABEQ5ACvLKQAsSTkALcspAAAAAABkRTkALEk5ADDLKQABAAAAZEU5AAREOQA0yykALEk5ADbLKQAAAAAAjEU5ACxJOQA5yykAAQAAAIxFOQAERDkAPcspACxJOQA/yykAAAAAALRFOQAsSTkAQsspAAEAAAC0RTkABEQ5AEbLKQAsSTkASMspAAAAAADcRTkALEk5AEvLKQABAAAA3EU5AAREOQBPyykALEk5AFHLKQAAAAAABEY5ACxJOQBUyykAAQAAAARGOQAERDkAWMspACxJOQBayykAAAAAACxGOQAsSTkAXcspAAEAAAAsRjkABEQ5AGHLKQAsSTkAY8spAAAAAABURjkALEk5AGbLKQABAAAAVEY5AAREOQBqyykALEk5AGzLKQAAAAAAfEY5ACxJOQBvyykAAQAAAHxGOQAERDkAc8spACxJOQB1yykAAAAAAKRGOQAsSTkAeMspAAEAAACkRjkABEQ5AHzLKQAsSTkAf8spAAAAAADMRjkALEk5AIPLKQABAAAAzEY5AAREOQCIyykALEk5AIrLKQAAAAAA9EY5ACxJOQCNyykAAQAAAPRGOQAERDkAkcspACxJOQCTyykAAAAAABxHOQAsSTkAlsspAAEAAAAcRzkABEQ5AJrLKQAsSTkAnMspAAAAAABERzkALEk5AJ/LKQABAAAAREc5AAREOQCjyykALEk5AKXLKQAAAAAAbEc5ACxJOQCoyykAAQAAAGxHOQAERDkArMspACxJOQCvyykAAAAAAJRHOQAsSTkAs8spAAEAAACURzkABEQ5ALjLKQAsSTkAu8spAAAAAAC8RzkALEk5AL/LKQABAAAAvEc5AAREOQDEyykALEk5AMfLKQAAAAAA5Ec5ACxJOQDLyykAAQAAAORHOQAAAAAAKEg5ALIYAAC4GAAAtBgAALUYAAC5GAAAqEg5ANDLKQCYQzkAAAAAAMhDOQCyGAAAuhgAALQYAAC1GAAAuxgAAAAAAABsSDkAshgAALwYAAC0GAAAtRgAAL0YAACoSDkA8sspAJhDOQAAAAAApEM5ALIYAAC+GAAAtBgAALUYAAC/GAAAwBgAAMEYAADCGAAAAAAAAMhIOQCyGAAAwxgAALQYAAC1GAAAvxgAAMQYAADFGAAAxhgAAKhIOQATzCkApEM5AAAAAAD8SDkAshgAAMcYAAC0GAAAtRgAAL8YAADIGAAAyRgAAMoYAACoSDkAOMwpAKRDOQAAAAAAsEM5ALIYAADLGAAAtBgAALUYAADMGAAAAAAAALxDOQCyGAAAzRgAALQYAAC1GAAAzhgAAAAAAADUQzkAshgAAM8YAAC0GAAAtRgAANAYAAAAAAAAwEk5AKkSAADRGAAA0hgAAAAAAADMSTkAqRIAANMYAADUGAAAAAAAAJhJOQCpEgAA1RgAANYYAACASDkAXswpAAAAAAC0STkAqRIAANcYAADYGAAAqEg5AGvMKQCYSTkAqEg5AJbMKQCYSTkAqEg5AH3MKQDASTkAAAAAABRKOQCoEgAA2RgAAPMSAAAAAAAAoEo5APkSAADaGAAA2hIAAAAAAAAgSjkAqBIAANsYAADzEgAAqEg5ALTMKQCYSTkAqEg5AKPMKQAUSjkAAAAAAEBKOQCoEgAA3BgAAPMSAACoSDkAxMwpABRKOQAAAAAAYEo5AKgSAADdGAAA8xIAAKhIOQDZzCkAFEo5AAAAAACASjkAqBIAAN4YAADzEgAAqEg5AOrMKQAUSjkAAAAAAKxKOQD5EgAA3xgAANoSAACoSDkAC80pAJhJOQCoSDkA+8wpAKBKOQAAAAAAzEo5APkSAADgGAAA2hIAAKhIOQAdzSkAoEo5AAAAAADsSjkA+RIAAOEYAADaEgAAqEg5ADDNKQCgSjkAAAAAADhLOQBiEgAA4hgAAOMYAAAAAAAAREs5AM0XAADkGAAA5RgAAAAAAAAwSzkA5hgAAOcYAACASDkARM0pAKhIOQBRzSkAmEk5AKhIOQBdzSkAmEk5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwPdGFyZ2V0X2ZlYXR1cmVzAisPbXV0YWJsZS1nbG9iYWxzKwhzaWduLWV4dA==
UEsDBBQAAAAAAAMgo1YAAAAAAAAAAAAAAAAIAAAAYXN5bmNpby9QSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAAAwAAABjb2xsZWN0aW9ucy9QSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAAAsAAABjb25jdXJyZW50L1BLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAABwAAAGN0eXBlcy9QSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAAAYAAABlbWFpbC9QSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAAAoAAABlbmNvZGluZ3MvUEsDBBQAAAAAAAMgo1YAAAAAAAAAAAAAAAAFAAAAaHRtbC9QSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAAAUAAABodHRwL1BLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAACgAAAGltcG9ydGxpYi9QSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAAAUAAABqc29uL1BLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAACAAAAGxvZ2dpbmcvUEsDBBQAAAAAAAMgo1YAAAAAAAAAAAAAAAAQAAAAbXVsdGlwcm9jZXNzaW5nL1BLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAAAwAAAHJlL1BLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAADgAAAHNpdGUtcGFja2FnZXMvUEsDBBQAAAAAAAQgo1YAAAAAAAAAAAAAAAAIAAAAdG9tbGxpYi9QSwMEFAAAAAAABCCjVgAAAAAAAAAAAAAAAAkAAAB1bml0dGVzdC9QSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAAAcAAAB1cmxsaWIvUEsDBBQAAAAAAAQgo1YAAAAAAAAAAAAAAAAIAAAAd3NnaXJlZi9QSwMEFAAAAAAABCCjVgAAAAAAAAAAAAAAAAQAAAB4bWwvUEsDBBQAAAAAAAQgo1YAAAAAAAAAAAAAAAAHAAAAeG1scnBjL1BLAwQUAAAAAAAEIKNWAAAAAAAAAAAAAAAACQAAAHpvbmVpbmZvL1BLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAACwAAAF9fcGhlbGxvX18vUEsDBBQAAAAAAAIgo1br9mg0YhQAAGIUAAANAAAAX19mdXR1cmVfXy5weSIiIlJlY29yZCBvZiBwaGFzZWQtaW4gaW5jb21wYXRpYmxlIGxhbmd1YWdlIGNoYW5nZXMuCgpFYWNoIGxpbmUgaXMgb2YgdGhlIGZvcm06CgogICAgRmVhdHVyZU5hbWUgPSAiX0ZlYXR1cmUoIiBPcHRpb25hbFJlbGVhc2UgIiwiIE1hbmRhdG9yeVJlbGVhc2UgIiwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVyRmxhZyAiKSIKCndoZXJlLCBub3JtYWxseSwgT3B0aW9uYWxSZWxlYXNlIDwgTWFuZGF0b3J5UmVsZWFzZSwgYW5kIGJvdGggYXJlIDUtdHVwbGVzCm9mIHRoZSBzYW1lIGZvcm0gYXMgc3lzLnZlcnNpb25faW5mbzoKCiAgICAoUFlfTUFKT1JfVkVSU0lPTiwgIyB0aGUgMiBpbiAyLjEuMGEzOyBhbiBpbnQKICAgICBQWV9NSU5PUl9WRVJTSU9OLCAjIHRoZSAxOyBhbiBpbnQKICAgICBQWV9NSUNST19WRVJTSU9OLCAjIHRoZSAwOyBhbiBpbnQKICAgICBQWV9SRUxFQVNFX0xFVkVMLCAjICJhbHBoYSIsICJiZXRhIiwgImNhbmRpZGF0ZSIgb3IgImZpbmFsIjsgc3RyaW5nCiAgICAgUFlfUkVMRUFTRV9TRVJJQUwgIyB0aGUgMzsgYW4gaW50CiAgICApCgpPcHRpb25hbFJlbGVhc2UgcmVjb3JkcyB0aGUgZmlyc3QgcmVsZWFzZSBpbiB3aGljaAoKICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgRmVhdHVyZU5hbWUKCndhcyBhY2NlcHRlZC4KCkluIHRoZSBjYXNlIG9mIE1hbmRhdG9yeVJlbGVhc2VzIHRoYXQgaGF2ZSBub3QgeWV0IG9jY3VycmVkLApNYW5kYXRvcnlSZWxlYXNlIHByZWRpY3RzIHRoZSByZWxlYXNlIGluIHdoaWNoIHRoZSBmZWF0dXJlIHdpbGwgYmVjb21lIHBhcnQKb2YgdGhlIGxhbmd1YWdlLgoKRWxzZSBNYW5kYXRvcnlSZWxlYXNlIHJlY29yZHMgd2hlbiB0aGUgZmVhdHVyZSBiZWNhbWUgcGFydCBvZiB0aGUgbGFuZ3VhZ2U7CmluIHJlbGVhc2VzIGF0IG9yIGFmdGVyIHRoYXQsIG1vZHVsZXMgbm8gbG9uZ2VyIG5lZWQKCiAgICBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IEZlYXR1cmVOYW1lCgp0byB1c2UgdGhlIGZlYXR1cmUgaW4gcXVlc3Rpb24sIGJ1dCBtYXkgY29udGludWUgdG8gdXNlIHN1Y2ggaW1wb3J0cy4KCk1hbmRhdG9yeVJlbGVhc2UgbWF5IGFsc28gYmUgTm9uZSwgbWVhbmluZyB0aGF0IGEgcGxhbm5lZCBmZWF0dXJlIGdvdApkcm9wcGVkIG9yIHRoYXQgdGhlIHJlbGVhc2UgdmVyc2lvbiBpcyB1bmRldGVybWluZWQuCgpJbnN0YW5jZXMgb2YgY2xhc3MgX0ZlYXR1cmUgaGF2ZSB0d28gY29ycmVzcG9uZGluZyBtZXRob2RzLAouZ2V0T3B0aW9uYWxSZWxlYXNlKCkgYW5kIC5nZXRNYW5kYXRvcnlSZWxlYXNlKCkuCgpDb21waWxlckZsYWcgaXMgdGhlIChiaXRmaWVsZCkgZmxhZyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgaW4gdGhlIGZvdXJ0aAphcmd1bWVudCB0byB0aGUgYnVpbHRpbiBmdW5jdGlvbiBjb21waWxlKCkgdG8gZW5hYmxlIHRoZSBmZWF0dXJlIGluCmR5bmFtaWNhbGx5IGNvbXBpbGVkIGNvZGUuICBUaGlzIGZsYWcgaXMgc3RvcmVkIGluIHRoZSAuY29tcGlsZXJfZmxhZwphdHRyaWJ1dGUgb24gX0Z1dHVyZSBpbnN0YW5jZXMuICBUaGVzZSB2YWx1ZXMgbXVzdCBtYXRjaCB0aGUgYXBwcm9wcmlhdGUKI2RlZmluZXMgb2YgQ09feHh4IGZsYWdzIGluIEluY2x1ZGUvY3B5dGhvbi9jb21waWxlLmguCgpObyBmZWF0dXJlIGxpbmUgaXMgZXZlciB0byBiZSBkZWxldGVkIGZyb20gdGhpcyBmaWxlLgoiIiIKCmFsbF9mZWF0dXJlX25hbWVzID0gWwogICAgIm5lc3RlZF9zY29wZXMiLAogICAgImdlbmVyYXRvcnMiLAogICAgImRpdmlzaW9uIiwKICAgICJhYnNvbHV0ZV9pbXBvcnQiLAogICAgIndpdGhfc3RhdGVtZW50IiwKICAgICJwcmludF9mdW5jdGlvbiIsCiAgICAidW5pY29kZV9saXRlcmFscyIsCiAgICAiYmFycnlfYXNfRkxVRkwiLAogICAgImdlbmVyYXRvcl9zdG9wIiwKICAgICJhbm5vdGF0aW9ucyIsCl0KCl9fYWxsX18gPSBbImFsbF9mZWF0dXJlX25hbWVzIl0gKyBhbGxfZmVhdHVyZV9uYW1lcwoKIyBUaGUgQ09feHh4IHN5bWJvbHMgYXJlIGRlZmluZWQgaGVyZSB1bmRlciB0aGUgc2FtZSBuYW1lcyBkZWZpbmVkIGluCiMgY29kZS5oIGFuZCB1c2VkIGJ5IGNvbXBpbGUuaCwgc28gdGhhdCBhbiBlZGl0b3Igc2VhcmNoIHdpbGwgZmluZCB0aGVtIGhlcmUuCiMgSG93ZXZlciwgdGhleSdyZSBub3QgZXhwb3J0ZWQgaW4gX19hbGxfXywgYmVjYXVzZSB0aGV5IGRvbid0IHJlYWxseSBiZWxvbmcgdG8KIyB0aGlzIG1vZHVsZS4KQ09fTkVTVEVEID0gMHgwMDEwICAgICAgICAgICAgICAgICAgICAgICMgbmVzdGVkX3Njb3BlcwpDT19HRU5FUkFUT1JfQUxMT1dFRCA9IDAgICAgICAgICAgICAgICAgIyBnZW5lcmF0b3JzIChvYnNvbGV0ZSwgd2FzIDB4MTAwMCkKQ09fRlVUVVJFX0RJVklTSU9OID0gMHgyMDAwMCAgICAgICAgICAgICMgZGl2aXNpb24KQ09fRlVUVVJFX0FCU09MVVRFX0lNUE9SVCA9IDB4NDAwMDAgICAgICMgcGVyZm9ybSBhYnNvbHV0ZSBpbXBvcnRzIGJ5IGRlZmF1bHQKQ09fRlVUVVJFX1dJVEhfU1RBVEVNRU5UID0gMHg4MDAwMCAgICAgICMgd2l0aCBzdGF0ZW1lbnQKQ09fRlVUVVJFX1BSSU5UX0ZVTkNUSU9OID0gMHgxMDAwMDAgICAgICMgcHJpbnQgZnVuY3Rpb24KQ09fRlVUVVJFX1VOSUNPREVfTElURVJBTFMgPSAweDIwMDAwMCAgICMgdW5pY29kZSBzdHJpbmcgbGl0ZXJhbHMKQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgPSAweDQwMDAwMApDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgPSAweDgwMDAwMCAgICAgIyBTdG9wSXRlcmF0aW9uIGJlY29tZXMgUnVudGltZUVycm9yIGluIGdlbmVyYXRvcnMKQ09fRlVUVVJFX0FOTk9UQVRJT05TID0gMHgxMDAwMDAwICAgICAgICMgYW5ub3RhdGlvbnMgYmVjb21lIHN0cmluZ3MgYXQgcnVudGltZQoKCmNsYXNzIF9GZWF0dXJlOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25hbFJlbGVhc2UsIG1hbmRhdG9yeVJlbGVhc2UsIGNvbXBpbGVyX2ZsYWcpOgogICAgICAgIHNlbGYub3B0aW9uYWwgPSBvcHRpb25hbFJlbGVhc2UKICAgICAgICBzZWxmLm1hbmRhdG9yeSA9IG1hbmRhdG9yeVJlbGVhc2UKICAgICAgICBzZWxmLmNvbXBpbGVyX2ZsYWcgPSBjb21waWxlcl9mbGFnCgogICAgZGVmIGdldE9wdGlvbmFsUmVsZWFzZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gZmlyc3QgcmVsZWFzZSBpbiB3aGljaCB0aGlzIGZlYXR1cmUgd2FzIHJlY29nbml6ZWQuCgogICAgICAgIFRoaXMgaXMgYSA1LXR1cGxlLCBvZiB0aGUgc2FtZSBmb3JtIGFzIHN5cy52ZXJzaW9uX2luZm8uCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYub3B0aW9uYWwKCiAgICBkZWYgZ2V0TWFuZGF0b3J5UmVsZWFzZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gcmVsZWFzZSBpbiB3aGljaCB0aGlzIGZlYXR1cmUgd2lsbCBiZWNvbWUgbWFuZGF0b3J5LgoKICAgICAgICBUaGlzIGlzIGEgNS10dXBsZSwgb2YgdGhlIHNhbWUgZm9ybSBhcyBzeXMudmVyc2lvbl9pbmZvLCBvciwgaWYKICAgICAgICB0aGUgZmVhdHVyZSB3YXMgZHJvcHBlZCwgb3IgdGhlIHJlbGVhc2UgZGF0ZSBpcyB1bmRldGVybWluZWQsIGlzIE5vbmUuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYubWFuZGF0b3J5CgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiX0ZlYXR1cmUiICsgcmVwcigoc2VsZi5vcHRpb25hbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFuZGF0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21waWxlcl9mbGFnKSkKCgpuZXN0ZWRfc2NvcGVzID0gX0ZlYXR1cmUoKDIsIDEsIDAsICJiZXRhIiwgIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgKDIsIDIsIDAsICJhbHBoYSIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgQ09fTkVTVEVEKQoKZ2VuZXJhdG9ycyA9IF9GZWF0dXJlKCgyLCAyLCAwLCAiYWxwaGEiLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICgyLCAzLCAwLCAiZmluYWwiLCAwKSwKICAgICAgICAgICAgICAgICAgICAgIENPX0dFTkVSQVRPUl9BTExPV0VEKQoKZGl2aXNpb24gPSBfRmVhdHVyZSgoMiwgMiwgMCwgImFscGhhIiwgMiksCiAgICAgICAgICAgICAgICAgICAgKDMsIDAsIDAsICJhbHBoYSIsIDApLAogICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9ESVZJU0lPTikKCmFic29sdXRlX2ltcG9ydCA9IF9GZWF0dXJlKCgyLCA1LCAwLCAiYWxwaGEiLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMsIDAsIDAsICJhbHBoYSIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfQUJTT0xVVEVfSU1QT1JUKQoKd2l0aF9zdGF0ZW1lbnQgPSBfRmVhdHVyZSgoMiwgNSwgMCwgImFscGhhIiwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDIsIDYsIDAsICJhbHBoYSIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9XSVRIX1NUQVRFTUVOVCkKCnByaW50X2Z1bmN0aW9uID0gX0ZlYXR1cmUoKDIsIDYsIDAsICJhbHBoYSIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgzLCAwLCAwLCAiYWxwaGEiLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfUFJJTlRfRlVOQ1RJT04pCgp1bmljb2RlX2xpdGVyYWxzID0gX0ZlYXR1cmUoKDIsIDYsIDAsICJhbHBoYSIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMsIDAsIDAsICJhbHBoYSIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX1VOSUNPREVfTElURVJBTFMpCgpiYXJyeV9hc19GTFVGTCA9IF9GZWF0dXJlKCgzLCAxLCAwLCAiYWxwaGEiLCAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoNCwgMCwgMCwgImFscGhhIiwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwpCgpnZW5lcmF0b3Jfc3RvcCA9IF9GZWF0dXJlKCgzLCA1LCAwLCAiYmV0YSIsIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgzLCA3LCAwLCAiYWxwaGEiLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1ApCgphbm5vdGF0aW9ucyA9IF9GZWF0dXJlKCgzLCA3LCAwLCAiYmV0YSIsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX0FOTk9UQVRJT05TKQpQSwMEFAAAAAAAAiCjVkfnXM7jAAAA4wAAAAwAAABfX2hlbGxvX18ucHlpbml0aWFsaXplZCA9IFRydWUKCmNsYXNzIFRlc3RGcm96ZW5VdGY4XzE6CiAgICAiIiJcdTAwYjYiIiIKCmNsYXNzIFRlc3RGcm96ZW5VdGY4XzI6CiAgICAiIiJcdTAzYzAiIiIKCmNsYXNzIFRlc3RGcm96ZW5VdGY4XzQ6CiAgICAiIiJcVTAwMDFmNjAwIiIiCgpkZWYgbWFpbigpOgogICAgcHJpbnQoIkhlbGxvIHdvcmxkISIpCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigpClBLAwQUAAAAAAACIKNWuyaKHXMKAABzCgAAEgAAAF9ib290c3VicHJvY2Vzcy5weSIiIgpCYXNpYyBzdWJwcm9jZXNzIGltcGxlbWVudGF0aW9uIGZvciBQT1NJWCB3aGljaCBvbmx5IHVzZXMgb3MgZnVuY3Rpb25zLiBPbmx5CmltcGxlbWVudCBmZWF0dXJlcyByZXF1aXJlZCBieSBzZXR1cC5weSB0byBidWlsZCBDIGV4dGVuc2lvbiBtb2R1bGVzIHdoZW4Kc3VicHJvY2VzcyBpcyB1bmF2YWlsYWJsZS4gc2V0dXAucHkgaXMgbm90IHVzZWQgb24gV2luZG93cy4KIiIiCmltcG9ydCBvcwoKCiMgZGlzdHV0aWxzLnNwYXduIHVzZWQgYnkgZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfZXh0CiMgY2FsbHMgc3VicHJvY2Vzcy5Qb3BlbigpLndhaXQoKQpjbGFzcyBQb3BlbjoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsIGVudj1Ob25lKToKICAgICAgICBzZWxmLl9jbWQgPSBjbWQKICAgICAgICBzZWxmLl9lbnYgPSBlbnYKICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCgogICAgZGVmIHdhaXQoc2VsZik6CiAgICAgICAgcGlkID0gb3MuZm9yaygpCiAgICAgICAgaWYgcGlkID09IDA6CiAgICAgICAgICAgICMgQ2hpbGQgcHJvY2VzcwogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9lbnYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgb3MuZXhlY3ZlKHNlbGYuX2NtZFswXSwgc2VsZi5fY21kLCBzZWxmLl9lbnYpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG9zLmV4ZWN2KHNlbGYuX2NtZFswXSwgc2VsZi5fY21kKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgb3MuX2V4aXQoMSkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCiAgICAgICAgICAgIF8sIHN0YXR1cyA9IG9zLndhaXRwaWQocGlkLCAwKQogICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBvcy53YWl0c3RhdHVzX3RvX2V4aXRjb2RlKHN0YXR1cykKCiAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQoKCmRlZiBfY2hlY2tfY21kKGNtZCk6CiAgICAjIFVzZSByZWdleCBbYS16QS1aMC05Li8tXSs6IHJlamVjdCBlbXB0eSBzdHJpbmcsIHNwYWNlLCBldGMuCiAgICBzYWZlX2NoYXJzID0gW10KICAgIGZvciBmaXJzdCwgbGFzdCBpbiAoKCJhIiwgInoiKSwgKCJBIiwgIloiKSwgKCIwIiwgIjkiKSk6CiAgICAgICAgZm9yIGNoIGluIHJhbmdlKG9yZChmaXJzdCksIG9yZChsYXN0KSArIDEpOgogICAgICAgICAgICBzYWZlX2NoYXJzLmFwcGVuZChjaHIoY2gpKQogICAgc2FmZV9jaGFycy5hcHBlbmQoIi4vLSIpCiAgICBzYWZlX2NoYXJzID0gJycuam9pbihzYWZlX2NoYXJzKQoKICAgIGlmIGlzaW5zdGFuY2UoY21kLCAodHVwbGUsIGxpc3QpKToKICAgICAgICBjaGVja19zdHJzID0gY21kCiAgICBlbGlmIGlzaW5zdGFuY2UoY21kLCBzdHIpOgogICAgICAgIGNoZWNrX3N0cnMgPSBbY21kXQogICAgZWxzZToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBmb3IgYXJnIGluIGNoZWNrX3N0cnM6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJnLCBzdHIpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBpZiBub3QgYXJnOgogICAgICAgICAgICAjIHJlamVjdCBlbXB0eSBzdHJpbmcKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZm9yIGNoIGluIGFyZzoKICAgICAgICAgICAgaWYgY2ggbm90IGluIHNhZmVfY2hhcnM6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZQoKCiMgX2FpeF9zdXBwb3J0IHVzZWQgYnkgZGlzdHV0aWwudXRpbCBjYWxscyBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgpCmRlZiBjaGVja19vdXRwdXQoY21kLCAqKmt3YXJncyk6CiAgICBpZiBrd2FyZ3M6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihyZXByKGt3YXJncykpCgogICAgaWYgbm90IF9jaGVja19jbWQoY21kKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYidW5zdXBwb3J0ZWQgY29tbWFuZDoge2NtZCFyfSIpCgogICAgdG1wX2ZpbGVuYW1lID0gImNoZWNrX291dHB1dC50bXAiCiAgICBpZiBub3QgaXNpbnN0YW5jZShjbWQsIHN0cik6CiAgICAgICAgY21kID0gIiAiLmpvaW4oY21kKQogICAgY21kID0gZiJ7Y21kfSA+e3RtcF9maWxlbmFtZX0iCgogICAgdHJ5OgogICAgICAgICMgc3lzdGVtKCkgc3Bhd25zIGEgc2hlbGwKICAgICAgICBzdGF0dXMgPSBvcy5zeXN0ZW0oY21kKQogICAgICAgIGV4aXRjb2RlID0gb3Mud2FpdHN0YXR1c190b19leGl0Y29kZShzdGF0dXMpCiAgICAgICAgaWYgZXhpdGNvZGU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJDb21tYW5kIHtjbWQhcn0gcmV0dXJuZWQgbm9uLXplcm8gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiZXhpdCBzdGF0dXMge2V4aXRjb2RlIXJ9IikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aXRoIG9wZW4odG1wX2ZpbGVuYW1lLCAicmIiKSBhcyBmcDoKICAgICAgICAgICAgICAgIHN0ZG91dCA9IGZwLnJlYWQoKQogICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICAgICAgc3Rkb3V0ID0gYicnCiAgICBmaW5hbGx5OgogICAgICAgIHRyeToKICAgICAgICAgICAgb3MudW5saW5rKHRtcF9maWxlbmFtZSkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIHJldHVybiBzdGRvdXQKUEsDBBQAAAAAAAIgo1bJCSsC8XUAAPF1AAATAAAAX2NvbGxlY3Rpb25zX2FiYy5weSMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgoKIiIiQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBmb3IgY29sbGVjdGlvbnMsIGFjY29yZGluZyB0byBQRVAgMzExOS4KClVuaXQgdGVzdHMgYXJlIGluIHRlc3RfY29sbGVjdGlvbnMuCiIiIgoKZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCmltcG9ydCBzeXMKCkdlbmVyaWNBbGlhcyA9IHR5cGUobGlzdFtpbnRdKQpFbGxpcHNpc1R5cGUgPSB0eXBlKC4uLikKZGVmIF9mKCk6IHBhc3MKRnVuY3Rpb25UeXBlID0gdHlwZShfZikKZGVsIF9mCgpfX2FsbF9fID0gWyJBd2FpdGFibGUiLCAiQ29yb3V0aW5lIiwKICAgICAgICAgICAiQXN5bmNJdGVyYWJsZSIsICJBc3luY0l0ZXJhdG9yIiwgIkFzeW5jR2VuZXJhdG9yIiwKICAgICAgICAgICAiSGFzaGFibGUiLCAiSXRlcmFibGUiLCAiSXRlcmF0b3IiLCAiR2VuZXJhdG9yIiwgIlJldmVyc2libGUiLAogICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLCAiQ29sbGVjdGlvbiIsCiAgICAgICAgICAgIlNldCIsICJNdXRhYmxlU2V0IiwKICAgICAgICAgICAiTWFwcGluZyIsICJNdXRhYmxlTWFwcGluZyIsCiAgICAgICAgICAgIk1hcHBpbmdWaWV3IiwgIktleXNWaWV3IiwgIkl0ZW1zVmlldyIsICJWYWx1ZXNWaWV3IiwKICAgICAgICAgICAiU2VxdWVuY2UiLCAiTXV0YWJsZVNlcXVlbmNlIiwKICAgICAgICAgICAiQnl0ZVN0cmluZyIsCiAgICAgICAgICAgXQoKIyBUaGlzIG1vZHVsZSBoYXMgYmVlbiByZW5hbWVkIGZyb20gY29sbGVjdGlvbnMuYWJjIHRvIF9jb2xsZWN0aW9uc19hYmMgdG8KIyBzcGVlZCB1cCBpbnRlcnByZXRlciBzdGFydHVwLiBTb21lIG9mIHRoZSB0eXBlcyBzdWNoIGFzIE11dGFibGVNYXBwaW5nIGFyZQojIHJlcXVpcmVkIGVhcmx5IGJ1dCBjb2xsZWN0aW9ucyBtb2R1bGUgaW1wb3J0cyBhIGxvdCBvZiBvdGhlciBtb2R1bGVzLgojIFNlZSBpc3N1ZSAjMTkyMTgKX19uYW1lX18gPSAiY29sbGVjdGlvbnMuYWJjIgoKIyBQcml2YXRlIGxpc3Qgb2YgdHlwZXMgdGhhdCB3ZSB3YW50IHRvIHJlZ2lzdGVyIHdpdGggdGhlIHZhcmlvdXMgQUJDcwojIHNvIHRoYXQgdGhleSB3aWxsIHBhc3MgdGVzdHMgbGlrZToKIyAgICAgICBpdCA9IGl0ZXIoc29tZWJ5dGVhcnJheSkKIyAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdCwgSXRlcmFibGUpCiMgTm90ZTogIGluIG90aGVyIGltcGxlbWVudGF0aW9ucywgdGhlc2UgdHlwZXMgbWlnaHQgbm90IGJlIGRpc3RpbmN0CiMgYW5kIHRoZXkgbWF5IGhhdmUgdGhlaXIgb3duIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHR5cGVzIHRoYXQKIyBhcmUgbm90IGluY2x1ZGVkIG9uIHRoaXMgbGlzdC4KYnl0ZXNfaXRlcmF0b3IgPSB0eXBlKGl0ZXIoYicnKSkKYnl0ZWFycmF5X2l0ZXJhdG9yID0gdHlwZShpdGVyKGJ5dGVhcnJheSgpKSkKI2NhbGxhYmxlX2l0ZXJhdG9yID0gPz8/CmRpY3Rfa2V5aXRlcmF0b3IgPSB0eXBlKGl0ZXIoe30ua2V5cygpKSkKZGljdF92YWx1ZWl0ZXJhdG9yID0gdHlwZShpdGVyKHt9LnZhbHVlcygpKSkKZGljdF9pdGVtaXRlcmF0b3IgPSB0eXBlKGl0ZXIoe30uaXRlbXMoKSkpCmxpc3RfaXRlcmF0b3IgPSB0eXBlKGl0ZXIoW10pKQpsaXN0X3JldmVyc2VpdGVyYXRvciA9IHR5cGUoaXRlcihyZXZlcnNlZChbXSkpKQpyYW5nZV9pdGVyYXRvciA9IHR5cGUoaXRlcihyYW5nZSgwKSkpCmxvbmdyYW5nZV9pdGVyYXRvciA9IHR5cGUoaXRlcihyYW5nZSgxIDw8IDEwMDApKSkKc2V0X2l0ZXJhdG9yID0gdHlwZShpdGVyKHNldCgpKSkKc3RyX2l0ZXJhdG9yID0gdHlwZShpdGVyKCIiKSkKdHVwbGVfaXRlcmF0b3IgPSB0eXBlKGl0ZXIoKCkpKQp6aXBfaXRlcmF0b3IgPSB0eXBlKGl0ZXIoemlwKCkpKQojIyB2aWV3cyAjIwpkaWN0X2tleXMgPSB0eXBlKHt9LmtleXMoKSkKZGljdF92YWx1ZXMgPSB0eXBlKHt9LnZhbHVlcygpKQpkaWN0X2l0ZW1zID0gdHlwZSh7fS5pdGVtcygpKQojIyBtaXNjICMjCm1hcHBpbmdwcm94eSA9IHR5cGUodHlwZS5fX2RpY3RfXykKZ2VuZXJhdG9yID0gdHlwZSgobGFtYmRhOiAoeWllbGQpKSgpKQojIyBjb3JvdXRpbmUgIyMKYXN5bmMgZGVmIF9jb3JvKCk6IHBhc3MKX2Nvcm8gPSBfY29ybygpCmNvcm91dGluZSA9IHR5cGUoX2Nvcm8pCl9jb3JvLmNsb3NlKCkgICMgUHJldmVudCBSZXNvdXJjZVdhcm5pbmcKZGVsIF9jb3JvCiMjIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgIyMKYXN5bmMgZGVmIF9hZygpOiB5aWVsZApfYWcgPSBfYWcoKQphc3luY19nZW5lcmF0b3IgPSB0eXBlKF9hZykKZGVsIF9hZwoKCiMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwoKZGVmIF9jaGVja19tZXRob2RzKEMsICptZXRob2RzKToKICAgIG1ybyA9IEMuX19tcm9fXwogICAgZm9yIG1ldGhvZCBpbiBtZXRob2RzOgogICAgICAgIGZvciBCIGluIG1ybzoKICAgICAgICAgICAgaWYgbWV0aG9kIGluIEIuX19kaWN0X186CiAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fW21ldGhvZF0gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICByZXR1cm4gVHJ1ZQoKY2xhc3MgSGFzaGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIDAKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgaWYgY2xzIGlzIEhhc2hhYmxlOgogICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9faGFzaF9fIikKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCgpjbGFzcyBBd2FpdGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgogICAgICAgIHlpZWxkCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgIGlmIGNscyBpcyBBd2FpdGFibGU6CiAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19hd2FpdF9fIikKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKEdlbmVyaWNBbGlhcykKCgpjbGFzcyBDb3JvdXRpbmUoQXdhaXRhYmxlKToKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgogICAgICAgICIiIlNlbmQgYSB2YWx1ZSBpbnRvIHRoZSBjb3JvdXRpbmUuCiAgICAgICAgUmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKICAgICAgICAiIiJSYWlzZSBhbiBleGNlcHRpb24gaW4gdGhlIGNvcm91dGluZS4KICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCiAgICAgICAgIiIiCiAgICAgICAgaWYgdmFsIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHRiIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSB0eXAKICAgICAgICAgICAgdmFsID0gdHlwKCkKICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKICAgICAgICAgICAgdmFsID0gdmFsLndpdGhfdHJhY2ViYWNrKHRiKQogICAgICAgIHJhaXNlIHZhbAoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJSYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBjb3JvdXRpbmUuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnRocm93KEdlbmVyYXRvckV4aXQpCiAgICAgICAgZXhjZXB0IChHZW5lcmF0b3JFeGl0LCBTdG9wSXRlcmF0aW9uKToKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY29yb3V0aW5lIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgIGlmIGNscyBpcyBDb3JvdXRpbmU6CiAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19hd2FpdF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKCkNvcm91dGluZS5yZWdpc3Rlcihjb3JvdXRpbmUpCgoKY2xhc3MgQXN5bmNJdGVyYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2FpdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIEFzeW5jSXRlcmF0b3IoKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYWJsZToKICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2FpdGVyX18iKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKCmNsYXNzIEFzeW5jSXRlcmF0b3IoQXN5bmNJdGVyYWJsZSk6CgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IGl0ZW0gb3IgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uIHdoZW4gZXhoYXVzdGVkLiIiIgogICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgoKICAgIGRlZiBfX2FpdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgaWYgY2xzIGlzIEFzeW5jSXRlcmF0b3I6CiAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19hbmV4dF9fIiwgIl9fYWl0ZXJfXyIpCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgoKY2xhc3MgQXN5bmNHZW5lcmF0b3IoQXN5bmNJdGVyYXRvcik6CgogICAgX19zbG90c19fID0gKCkKCiAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgbmV4dCBpdGVtIGZyb20gdGhlIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IuCiAgICAgICAgV2hlbiBleGhhdXN0ZWQsIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbi4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5hc2VuZChOb25lKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgYXN5bmMgZGVmIGFzZW5kKHNlbGYsIHZhbHVlKToKICAgICAgICAiIiJTZW5kIGEgdmFsdWUgaW50byB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvci4KICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbi4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGFzeW5jIGRlZiBhdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CiAgICAgICAgIiIiUmFpc2UgYW4gZXhjZXB0aW9uIGluIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLgogICAgICAgIFJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uLgogICAgICAgICIiIgogICAgICAgIGlmIHZhbCBpcyBOb25lOgogICAgICAgICAgICBpZiB0YiBpcyBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgdHlwCiAgICAgICAgICAgIHZhbCA9IHR5cCgpCiAgICAgICAgaWYgdGIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHZhbCA9IHZhbC53aXRoX3RyYWNlYmFjayh0YikKICAgICAgICByYWlzZSB2YWwKCiAgICBhc3luYyBkZWYgYWNsb3NlKHNlbGYpOgogICAgICAgICIiIlJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGNvcm91dGluZS4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF3YWl0IHNlbGYuYXRocm93KEdlbmVyYXRvckV4aXQpCiAgICAgICAgZXhjZXB0IChHZW5lcmF0b3JFeGl0LCBTdG9wQXN5bmNJdGVyYXRpb24pOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgIGlmIGNscyBpcyBBc3luY0dlbmVyYXRvcjoKICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2FpdGVyX18nLCAnX19hbmV4dF9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc2VuZCcsICdhdGhyb3cnLCAnYWNsb3NlJykKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCgpBc3luY0dlbmVyYXRvci5yZWdpc3Rlcihhc3luY19nZW5lcmF0b3IpCgoKY2xhc3MgSXRlcmFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgd2hpbGUgRmFsc2U6CiAgICAgICAgICAgIHlpZWxkIE5vbmUKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgaWYgY2xzIGlzIEl0ZXJhYmxlOgogICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9faXRlcl9fIikKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKEdlbmVyaWNBbGlhcykKCgpjbGFzcyBJdGVyYXRvcihJdGVyYWJsZSk6CgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX25leHRfXyhzZWxmKToKICAgICAgICAnUmV0dXJuIHRoZSBuZXh0IGl0ZW0gZnJvbSB0aGUgaXRlcmF0b3IuIFdoZW4gZXhoYXVzdGVkLCByYWlzZSBTdG9wSXRlcmF0aW9uJwogICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgaWYgY2xzIGlzIEl0ZXJhdG9yOgogICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19faXRlcl9fJywgJ19fbmV4dF9fJykKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCgpJdGVyYXRvci5yZWdpc3RlcihieXRlc19pdGVyYXRvcikKSXRlcmF0b3IucmVnaXN0ZXIoYnl0ZWFycmF5X2l0ZXJhdG9yKQojSXRlcmF0b3IucmVnaXN0ZXIoY2FsbGFibGVfaXRlcmF0b3IpCkl0ZXJhdG9yLnJlZ2lzdGVyKGRpY3Rfa2V5aXRlcmF0b3IpCkl0ZXJhdG9yLnJlZ2lzdGVyKGRpY3RfdmFsdWVpdGVyYXRvcikKSXRlcmF0b3IucmVnaXN0ZXIoZGljdF9pdGVtaXRlcmF0b3IpCkl0ZXJhdG9yLnJlZ2lzdGVyKGxpc3RfaXRlcmF0b3IpCkl0ZXJhdG9yLnJlZ2lzdGVyKGxpc3RfcmV2ZXJzZWl0ZXJhdG9yKQpJdGVyYXRvci5yZWdpc3RlcihyYW5nZV9pdGVyYXRvcikKSXRlcmF0b3IucmVnaXN0ZXIobG9uZ3JhbmdlX2l0ZXJhdG9yKQpJdGVyYXRvci5yZWdpc3RlcihzZXRfaXRlcmF0b3IpCkl0ZXJhdG9yLnJlZ2lzdGVyKHN0cl9pdGVyYXRvcikKSXRlcmF0b3IucmVnaXN0ZXIodHVwbGVfaXRlcmF0b3IpCkl0ZXJhdG9yLnJlZ2lzdGVyKHppcF9pdGVyYXRvcikKCgpjbGFzcyBSZXZlcnNpYmxlKEl0ZXJhYmxlKToKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKICAgICAgICB3aGlsZSBGYWxzZToKICAgICAgICAgICAgeWllbGQgTm9uZQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICBpZiBjbHMgaXMgUmV2ZXJzaWJsZToKICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX3JldmVyc2VkX18iLCAiX19pdGVyX18iKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKCmNsYXNzIEdlbmVyYXRvcihJdGVyYXRvcik6CgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IGl0ZW0gZnJvbSB0aGUgZ2VuZXJhdG9yLgogICAgICAgIFdoZW4gZXhoYXVzdGVkLCByYWlzZSBTdG9wSXRlcmF0aW9uLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnNlbmQoTm9uZSkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKICAgICAgICAiIiJTZW5kIGEgdmFsdWUgaW50byB0aGUgZ2VuZXJhdG9yLgogICAgICAgIFJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CiAgICAgICAgIiIiUmFpc2UgYW4gZXhjZXB0aW9uIGluIHRoZSBnZW5lcmF0b3IuCiAgICAgICAgUmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLgogICAgICAgICIiIgogICAgICAgIGlmIHZhbCBpcyBOb25lOgogICAgICAgICAgICBpZiB0YiBpcyBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgdHlwCiAgICAgICAgICAgIHZhbCA9IHR5cCgpCiAgICAgICAgaWYgdGIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHZhbCA9IHZhbC53aXRoX3RyYWNlYmFjayh0YikKICAgICAgICByYWlzZSB2YWwKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiUmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgZ2VuZXJhdG9yLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi50aHJvdyhHZW5lcmF0b3JFeGl0KQogICAgICAgIGV4Y2VwdCAoR2VuZXJhdG9yRXhpdCwgU3RvcEl0ZXJhdGlvbik6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICBpZiBjbHMgaXMgR2VuZXJhdG9yOgogICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19faXRlcl9fJywgJ19fbmV4dF9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJykKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCgpHZW5lcmF0b3IucmVnaXN0ZXIoZ2VuZXJhdG9yKQoKCmNsYXNzIFNpemVkKG1ldGFjbGFzcz1BQkNNZXRhKToKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIDAKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgaWYgY2xzIGlzIFNpemVkOgogICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fbGVuX18iKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKCmNsYXNzIENvbnRhaW5lcihtZXRhY2xhc3M9QUJDTWV0YSk6CgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgeCk6CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgIGlmIGNscyBpcyBDb250YWluZXI6CiAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19jb250YWluc19fIikKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKEdlbmVyaWNBbGlhcykKCgpjbGFzcyBDb2xsZWN0aW9uKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICBpZiBjbHMgaXMgQ29sbGVjdGlvbjoKICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICAiX19sZW5fXyIsICJfX2l0ZXJfXyIsICJfX2NvbnRhaW5zX18iKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKCmNsYXNzIF9DYWxsYWJsZUdlbmVyaWNBbGlhcyhHZW5lcmljQWxpYXMpOgogICAgIiIiIFJlcHJlc2VudCBgQ2FsbGFibGVbYXJndHlwZXMsIHJlc3VsdHR5cGVdYC4KCiAgICBUaGlzIHNldHMgYGBfX2FyZ3NfX2BgIHRvIGEgdHVwbGUgY29udGFpbmluZyB0aGUgZmxhdHRlbmVkIGBgYXJndHlwZXNgYAogICAgZm9sbG93ZWQgYnkgYGByZXN1bHR0eXBlYGAuCgogICAgRXhhbXBsZTogYGBDYWxsYWJsZVtbaW50LCBzdHJdLCBmbG9hdF1gYCBzZXRzIGBgX19hcmdzX19gYCB0bwogICAgYGAoaW50LCBzdHIsIGZsb2F0KWBgLgogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgX19uZXdfXyhjbHMsIG9yaWdpbiwgYXJncyk6CiAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKGFyZ3MsIHR1cGxlKSBhbmQgbGVuKGFyZ3MpID09IDIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAiQ2FsbGFibGUgbXVzdCBiZSB1c2VkIGFzIENhbGxhYmxlW1thcmcsIC4uLl0sIHJlc3VsdF0uIikKICAgICAgICB0X2FyZ3MsIHRfcmVzdWx0ID0gYXJncwogICAgICAgIGlmIGlzaW5zdGFuY2UodF9hcmdzLCAodHVwbGUsIGxpc3QpKToKICAgICAgICAgICAgYXJncyA9ICgqdF9hcmdzLCB0X3Jlc3VsdCkKICAgICAgICBlbGlmIG5vdCBfaXNfcGFyYW1fZXhwcih0X2FyZ3MpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJFeHBlY3RlZCBhIGxpc3Qgb2YgdHlwZXMsIGFuIGVsbGlwc2lzLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIlBhcmFtU3BlYywgb3IgQ29uY2F0ZW5hdGUuIEdvdCB7dF9hcmdzfSIpCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG9yaWdpbiwgYXJncykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaWYgbGVuKHNlbGYuX19hcmdzX18pID09IDIgYW5kIF9pc19wYXJhbV9leHByKHNlbGYuX19hcmdzX19bMF0pOgogICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3JlcHJfXygpCiAgICAgICAgcmV0dXJuIChmJ2NvbGxlY3Rpb25zLmFiYy5DYWxsYWJsZScKICAgICAgICAgICAgICAgIGYnW1t7IiwgIi5qb2luKFtfdHlwZV9yZXByKGEpIGZvciBhIGluIHNlbGYuX19hcmdzX19bOi0xXV0pfV0sICcKICAgICAgICAgICAgICAgIGYne190eXBlX3JlcHIoc2VsZi5fX2FyZ3NfX1stMV0pfV0nKQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIGFyZ3MgPSBzZWxmLl9fYXJnc19fCiAgICAgICAgaWYgbm90IChsZW4oYXJncykgPT0gMiBhbmQgX2lzX3BhcmFtX2V4cHIoYXJnc1swXSkpOgogICAgICAgICAgICBhcmdzID0gbGlzdChhcmdzWzotMV0pLCBhcmdzWy0xXQogICAgICAgIHJldHVybiBfQ2FsbGFibGVHZW5lcmljQWxpYXMsIChDYWxsYWJsZSwgYXJncykKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CiAgICAgICAgIyBDYWxsZWQgZHVyaW5nIFR5cGVWYXIgc3Vic3RpdHV0aW9uLCByZXR1cm5zIHRoZSBjdXN0b20gc3ViY2xhc3MKICAgICAgICAjIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0IHR5cGVzLkdlbmVyaWNBbGlhcyBvYmplY3QuICBNb3N0IG9mIHRoZQogICAgICAgICMgY29kZSBpcyBjb3BpZWQgZnJvbSB0eXBpbmcncyBfR2VuZXJpY0FsaWFzIGFuZCB0aGUgYnVpbHRpbgogICAgICAgICMgdHlwZXMuR2VuZXJpY0FsaWFzLgoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCB0dXBsZSk6CiAgICAgICAgICAgIGl0ZW0gPSAoaXRlbSwpCiAgICAgICAgIyBBIHNwZWNpYWwgY2FzZSBpbiBQRVAgNjEyIHdoZXJlIGlmIFggPSBDYWxsYWJsZVtQLCBpbnRdLAogICAgICAgICMgdGhlbiBYW2ludCwgc3RyXSA9PSBYW1tpbnQsIHN0cl1dLgogICAgICAgIGlmIChsZW4oc2VsZi5fX3BhcmFtZXRlcnNfXykgPT0gMQogICAgICAgICAgICAgICAgYW5kIF9pc19wYXJhbV9leHByKHNlbGYuX19wYXJhbWV0ZXJzX19bMF0pCiAgICAgICAgICAgICAgICBhbmQgaXRlbSBhbmQgbm90IF9pc19wYXJhbV9leHByKGl0ZW1bMF0pKToKICAgICAgICAgICAgaXRlbSA9IChpdGVtLCkKCiAgICAgICAgbmV3X2FyZ3MgPSBzdXBlcigpLl9fZ2V0aXRlbV9fKGl0ZW0pLl9fYXJnc19fCgogICAgICAgICMgYXJnc1swXSBvY2N1cnMgZHVlIHRvIHRoaW5ncyBsaWtlIFpbW2ludCwgc3RyLCBib29sXV0gZnJvbSBQRVAgNjEyCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmV3X2FyZ3NbMF0sICh0dXBsZSwgbGlzdCkpOgogICAgICAgICAgICB0X3Jlc3VsdCA9IG5ld19hcmdzWy0xXQogICAgICAgICAgICB0X2FyZ3MgPSBuZXdfYXJnc1s6LTFdCiAgICAgICAgICAgIG5ld19hcmdzID0gKHRfYXJncywgdF9yZXN1bHQpCiAgICAgICAgcmV0dXJuIF9DYWxsYWJsZUdlbmVyaWNBbGlhcyhDYWxsYWJsZSwgdHVwbGUobmV3X2FyZ3MpKQoKZGVmIF9pc19wYXJhbV9leHByKG9iaik6CiAgICAiIiJDaGVja3MgaWYgb2JqIG1hdGNoZXMgZWl0aGVyIGEgbGlzdCBvZiB0eXBlcywgYGAuLi5gYCwgYGBQYXJhbVNwZWNgYCBvcgogICAgYGBfQ29uY2F0ZW5hdGVHZW5lcmljQWxpYXNgYCBmcm9tIHR5cGluZy5weQogICAgIiIiCiAgICBpZiBvYmogaXMgRWxsaXBzaXM6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBsaXN0KToKICAgICAgICByZXR1cm4gVHJ1ZQogICAgb2JqID0gdHlwZShvYmopCiAgICBuYW1lcyA9ICgnUGFyYW1TcGVjJywgJ19Db25jYXRlbmF0ZUdlbmVyaWNBbGlhcycpCiAgICByZXR1cm4gb2JqLl9fbW9kdWxlX18gPT0gJ3R5cGluZycgYW5kIGFueShvYmouX19uYW1lX18gPT0gbmFtZSBmb3IgbmFtZSBpbiBuYW1lcykKCmRlZiBfdHlwZV9yZXByKG9iaik6CiAgICAiIiJSZXR1cm4gdGhlIHJlcHIoKSBvZiBhbiBvYmplY3QsIHNwZWNpYWwtY2FzaW5nIHR5cGVzIChpbnRlcm5hbCBoZWxwZXIpLgoKICAgIENvcGllZCBmcm9tIDptb2Q6YHR5cGluZ2Agc2luY2UgY29sbGVjdGlvbnMuYWJjCiAgICBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoYXQgbW9kdWxlLgogICAgIiIiCiAgICBpZiBpc2luc3RhbmNlKG9iaiwgR2VuZXJpY0FsaWFzKToKICAgICAgICByZXR1cm4gcmVwcihvYmopCiAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZSk6CiAgICAgICAgaWYgb2JqLl9fbW9kdWxlX18gPT0gJ2J1aWx0aW5zJzoKICAgICAgICAgICAgcmV0dXJuIG9iai5fX3F1YWxuYW1lX18KICAgICAgICByZXR1cm4gZid7b2JqLl9fbW9kdWxlX199LntvYmouX19xdWFsbmFtZV9ffScKICAgIGlmIG9iaiBpcyBFbGxpcHNpczoKICAgICAgICByZXR1cm4gJy4uLicKICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBGdW5jdGlvblR5cGUpOgogICAgICAgIHJldHVybiBvYmouX19uYW1lX18KICAgIHJldHVybiByZXByKG9iaikKCgpjbGFzcyBDYWxsYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2RzKToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgaWYgY2xzIGlzIENhbGxhYmxlOgogICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fY2FsbF9fIikKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKF9DYWxsYWJsZUdlbmVyaWNBbGlhcykKCgojIyMgU0VUUyAjIyMKCgpjbGFzcyBTZXQoQ29sbGVjdGlvbik6CiAgICAiIiJBIHNldCBpcyBhIGZpbml0ZSwgaXRlcmFibGUgY29udGFpbmVyLgoKICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgY29uY3JldGUgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbnMgb2YgYWxsCiAgICBtZXRob2RzIGV4Y2VwdCBmb3IgX19jb250YWluc19fLCBfX2l0ZXJfXyBhbmQgX19sZW5fXy4KCiAgICBUbyBvdmVycmlkZSB0aGUgY29tcGFyaXNvbnMgKHByZXN1bWFibHkgZm9yIHNwZWVkLCBhcyB0aGUKICAgIHNlbWFudGljcyBhcmUgZml4ZWQpLCByZWRlZmluZSBfX2xlX18gYW5kIF9fZ2VfXywKICAgIHRoZW4gdGhlIG90aGVyIG9wZXJhdGlvbnMgd2lsbCBhdXRvbWF0aWNhbGx5IGZvbGxvdyBzdWl0LgogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU2V0KToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgaWYgbGVuKHNlbGYpID4gbGVuKG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZm9yIGVsZW0gaW4gc2VsZjoKICAgICAgICAgICAgaWYgZWxlbSBub3QgaW4gb3RoZXI6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTZXQpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gbGVuKHNlbGYpIDwgbGVuKG90aGVyKSBhbmQgc2VsZi5fX2xlX18ob3RoZXIpCgogICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFNldCk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiBsZW4oc2VsZikgPiBsZW4ob3RoZXIpIGFuZCBzZWxmLl9fZ2VfXyhvdGhlcikKCiAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU2V0KToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgaWYgbGVuKHNlbGYpIDwgbGVuKG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZm9yIGVsZW0gaW4gb3RoZXI6CiAgICAgICAgICAgIGlmIGVsZW0gbm90IGluIHNlbGY6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTZXQpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gbGVuKHNlbGYpID09IGxlbihvdGhlcikgYW5kIHNlbGYuX19sZV9fKG90aGVyKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9mcm9tX2l0ZXJhYmxlKGNscywgaXQpOgogICAgICAgICcnJ0NvbnN0cnVjdCBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgZnJvbSBhbnkgaXRlcmFibGUgaW5wdXQuCgogICAgICAgIE11c3Qgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIHNpZ25hdHVyZQogICAgICAgIGRvZXMgbm90IGFjY2VwdCBhbiBpdGVyYWJsZSBmb3IgYW4gaW5wdXQuCiAgICAgICAgJycnCiAgICAgICAgcmV0dXJuIGNscyhpdCkKCiAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEl0ZXJhYmxlKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21faXRlcmFibGUodmFsdWUgZm9yIHZhbHVlIGluIG90aGVyIGlmIHZhbHVlIGluIHNlbGYpCgogICAgX19yYW5kX18gPSBfX2FuZF9fCgogICAgZGVmIGlzZGlzam9pbnQoc2VsZiwgb3RoZXIpOgogICAgICAgICdSZXR1cm4gVHJ1ZSBpZiB0d28gc2V0cyBoYXZlIGEgbnVsbCBpbnRlcnNlY3Rpb24uJwogICAgICAgIGZvciB2YWx1ZSBpbiBvdGhlcjoKICAgICAgICAgICAgaWYgdmFsdWUgaW4gc2VsZjoKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEl0ZXJhYmxlKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgY2hhaW4gPSAoZSBmb3IgcyBpbiAoc2VsZiwgb3RoZXIpIGZvciBlIGluIHMpCiAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21faXRlcmFibGUoY2hhaW4pCgogICAgX19yb3JfXyA9IF9fb3JfXwoKICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU2V0KToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEl0ZXJhYmxlKToKICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICAgICBvdGhlciA9IHNlbGYuX2Zyb21faXRlcmFibGUob3RoZXIpCiAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21faXRlcmFibGUodmFsdWUgZm9yIHZhbHVlIGluIHNlbGYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb3RoZXIpCgogICAgZGVmIF9fcnN1Yl9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU2V0KToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEl0ZXJhYmxlKToKICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICAgICBvdGhlciA9IHNlbGYuX2Zyb21faXRlcmFibGUob3RoZXIpCiAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21faXRlcmFibGUodmFsdWUgZm9yIHZhbHVlIGluIG90aGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIHNlbGYpCgogICAgZGVmIF9feG9yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTZXQpOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgSXRlcmFibGUpOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgICAgIG90aGVyID0gc2VsZi5fZnJvbV9pdGVyYWJsZShvdGhlcikKICAgICAgICByZXR1cm4gKHNlbGYgLSBvdGhlcikgfCAob3RoZXIgLSBzZWxmKQoKICAgIF9fcnhvcl9fID0gX194b3JfXwoKICAgIGRlZiBfaGFzaChzZWxmKToKICAgICAgICAiIiJDb21wdXRlIHRoZSBoYXNoIHZhbHVlIG9mIGEgc2V0LgoKICAgICAgICBOb3RlIHRoYXQgd2UgZG9uJ3QgZGVmaW5lIF9faGFzaF9fOiBub3QgYWxsIHNldHMgYXJlIGhhc2hhYmxlLgogICAgICAgIEJ1dCBpZiB5b3UgZGVmaW5lIGEgaGFzaGFibGUgc2V0IHR5cGUsIGl0cyBfX2hhc2hfXyBzaG91bGQKICAgICAgICBjYWxsIHRoaXMgZnVuY3Rpb24uCgogICAgICAgIFRoaXMgbXVzdCBiZSBjb21wYXRpYmxlIF9fZXFfXy4KCiAgICAgICAgQWxsIHNldHMgb3VnaHQgdG8gY29tcGFyZSBlcXVhbCBpZiB0aGV5IGNvbnRhaW4gdGhlIHNhbWUKICAgICAgICBlbGVtZW50cywgcmVnYXJkbGVzcyBvZiBob3cgdGhleSBhcmUgaW1wbGVtZW50ZWQsIGFuZAogICAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIG9mIHRoZSBlbGVtZW50czsgc28gdGhlcmUncyBub3QgbXVjaAogICAgICAgIGZyZWVkb20gZm9yIF9fZXFfXyBvciBfX2hhc2hfXy4gIFdlIG1hdGNoIHRoZSBhbGdvcml0aG0gdXNlZAogICAgICAgIGJ5IHRoZSBidWlsdC1pbiBmcm96ZW5zZXQgdHlwZS4KICAgICAgICAiIiIKICAgICAgICBNQVggPSBzeXMubWF4c2l6ZQogICAgICAgIE1BU0sgPSAyICogTUFYICsgMQogICAgICAgIG4gPSBsZW4oc2VsZikKICAgICAgICBoID0gMTkyNzg2ODIzNyAqIChuICsgMSkKICAgICAgICBoICY9IE1BU0sKICAgICAgICBmb3IgeCBpbiBzZWxmOgogICAgICAgICAgICBoeCA9IGhhc2goeCkKICAgICAgICAgICAgaCBePSAoaHggXiAoaHggPDwgMTYpIF4gODk4Njk3NDcpICAqIDM2NDQ3OTgxNjcKICAgICAgICAgICAgaCAmPSBNQVNLCiAgICAgICAgaCBePSAoaCA+PiAxMSkgXiAoaCA+PiAyNSkKICAgICAgICBoID0gaCAqIDY5MDY5ICsgOTA3MTMzOTIzCiAgICAgICAgaCAmPSBNQVNLCiAgICAgICAgaWYgaCA+IE1BWDoKICAgICAgICAgICAgaCAtPSBNQVNLICsgMQogICAgICAgIGlmIGggPT0gLTE6CiAgICAgICAgICAgIGggPSA1OTA5MjM3MTMKICAgICAgICByZXR1cm4gaAoKClNldC5yZWdpc3Rlcihmcm96ZW5zZXQpCgoKY2xhc3MgTXV0YWJsZVNldChTZXQpOgogICAgIiIiQSBtdXRhYmxlIHNldCBpcyBhIGZpbml0ZSwgaXRlcmFibGUgY29udGFpbmVyLgoKICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgY29uY3JldGUgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbnMgb2YgYWxsCiAgICBtZXRob2RzIGV4Y2VwdCBmb3IgX19jb250YWluc19fLCBfX2l0ZXJfXywgX19sZW5fXywKICAgIGFkZCgpLCBhbmQgZGlzY2FyZCgpLgoKICAgIFRvIG92ZXJyaWRlIHRoZSBjb21wYXJpc29ucyAocHJlc3VtYWJseSBmb3Igc3BlZWQsIGFzIHRoZQogICAgc2VtYW50aWNzIGFyZSBmaXhlZCksIGFsbCB5b3UgaGF2ZSB0byBkbyBpcyByZWRlZmluZSBfX2xlX18gYW5kCiAgICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgYWRkKHNlbGYsIHZhbHVlKToKICAgICAgICAiIiJBZGQgYW4gZWxlbWVudC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgZGlzY2FyZChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIiIiUmVtb3ZlIGFuIGVsZW1lbnQuICBEbyBub3QgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGFic2VudC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIHJlbW92ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIiIiUmVtb3ZlIGFuIGVsZW1lbnQuIElmIG5vdCBhIG1lbWJlciwgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICBpZiB2YWx1ZSBub3QgaW4gc2VsZjoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IodmFsdWUpCiAgICAgICAgc2VsZi5kaXNjYXJkKHZhbHVlKQoKICAgIGRlZiBwb3Aoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBwb3BwZWQgdmFsdWUuICBSYWlzZSBLZXlFcnJvciBpZiBlbXB0eS4iIiIKICAgICAgICBpdCA9IGl0ZXIoc2VsZikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlID0gbmV4dChpdCkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IgZnJvbSBOb25lCiAgICAgICAgc2VsZi5kaXNjYXJkKHZhbHVlKQogICAgICAgIHJldHVybiB2YWx1ZQoKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICAiIiJUaGlzIGlzIHNsb3cgKGNyZWF0ZXMgTiBuZXcgaXRlcmF0b3JzISkgYnV0IGVmZmVjdGl2ZS4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBzZWxmLnBvcCgpCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBwYXNzCgogICAgZGVmIF9faW9yX18oc2VsZiwgaXQpOgogICAgICAgIGZvciB2YWx1ZSBpbiBpdDoKICAgICAgICAgICAgc2VsZi5hZGQodmFsdWUpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19pYW5kX18oc2VsZiwgaXQpOgogICAgICAgIGZvciB2YWx1ZSBpbiAoc2VsZiAtIGl0KToKICAgICAgICAgICAgc2VsZi5kaXNjYXJkKHZhbHVlKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9faXhvcl9fKHNlbGYsIGl0KToKICAgICAgICBpZiBpdCBpcyBzZWxmOgogICAgICAgICAgICBzZWxmLmNsZWFyKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdCwgU2V0KToKICAgICAgICAgICAgICAgIGl0ID0gc2VsZi5fZnJvbV9pdGVyYWJsZShpdCkKICAgICAgICAgICAgZm9yIHZhbHVlIGluIGl0OgogICAgICAgICAgICAgICAgaWYgdmFsdWUgaW4gc2VsZjoKICAgICAgICAgICAgICAgICAgICBzZWxmLmRpc2NhcmQodmFsdWUpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKHZhbHVlKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9faXN1Yl9fKHNlbGYsIGl0KToKICAgICAgICBpZiBpdCBpcyBzZWxmOgogICAgICAgICAgICBzZWxmLmNsZWFyKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBmb3IgdmFsdWUgaW4gaXQ6CiAgICAgICAgICAgICAgICBzZWxmLmRpc2NhcmQodmFsdWUpCiAgICAgICAgcmV0dXJuIHNlbGYKCgpNdXRhYmxlU2V0LnJlZ2lzdGVyKHNldCkKCgojIyMgTUFQUElOR1MgIyMjCgpjbGFzcyBNYXBwaW5nKENvbGxlY3Rpb24pOgogICAgIiIiQSBNYXBwaW5nIGlzIGEgZ2VuZXJpYyBjb250YWluZXIgZm9yIGFzc29jaWF0aW5nIGtleS92YWx1ZQogICAgcGFpcnMuCgogICAgVGhpcyBjbGFzcyBwcm92aWRlcyBjb25jcmV0ZSBnZW5lcmljIGltcGxlbWVudGF0aW9ucyBvZiBhbGwKICAgIG1ldGhvZHMgZXhjZXB0IGZvciBfX2dldGl0ZW1fXywgX19pdGVyX18sIGFuZCBfX2xlbl9fLgogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICAjIFRlbGwgQUJDTWV0YS5fX25ld19fIHRoYXQgdGhpcyBjbGFzcyBzaG91bGQgaGF2ZSBUUEZMQUdTX01BUFBJTkcgc2V0LgogICAgX19hYmNfdHBmbGFnc19fID0gMSA8PCA2ICMgUHlfVFBGTEFHU19NQVBQSU5HCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICByYWlzZSBLZXlFcnJvcgoKICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgogICAgICAgICdELmdldChrWyxkXSkgLT4gRFtrXSBpZiBrIGluIEQsIGVsc2UgZC4gIGQgZGVmYXVsdHMgdG8gTm9uZS4nCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZltrZXldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByZXR1cm4gZGVmYXVsdAoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGZba2V5XQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYga2V5cyhzZWxmKToKICAgICAgICAiRC5rZXlzKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3Mga2V5cyIKICAgICAgICByZXR1cm4gS2V5c1ZpZXcoc2VsZikKCiAgICBkZWYgaXRlbXMoc2VsZik6CiAgICAgICAgIkQuaXRlbXMoKSAtPiBhIHNldC1saWtlIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIEQncyBpdGVtcyIKICAgICAgICByZXR1cm4gSXRlbXNWaWV3KHNlbGYpCgogICAgZGVmIHZhbHVlcyhzZWxmKToKICAgICAgICAiRC52YWx1ZXMoKSAtPiBhbiBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3MgdmFsdWVzIgogICAgICAgIHJldHVybiBWYWx1ZXNWaWV3KHNlbGYpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIE1hcHBpbmcpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gZGljdChzZWxmLml0ZW1zKCkpID09IGRpY3Qob3RoZXIuaXRlbXMoKSkKCiAgICBfX3JldmVyc2VkX18gPSBOb25lCgpNYXBwaW5nLnJlZ2lzdGVyKG1hcHBpbmdwcm94eSkKCgpjbGFzcyBNYXBwaW5nVmlldyhTaXplZCk6CgogICAgX19zbG90c19fID0gJ19tYXBwaW5nJywKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWFwcGluZyk6CiAgICAgICAgc2VsZi5fbWFwcGluZyA9IG1hcHBpbmcKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX21hcHBpbmcpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnezAuX19jbGFzc19fLl9fbmFtZV9ffSh7MC5fbWFwcGluZyFyfSknLmZvcm1hdChzZWxmKQoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKCmNsYXNzIEtleXNWaWV3KE1hcHBpbmdWaWV3LCBTZXQpOgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2Zyb21faXRlcmFibGUoY2xzLCBpdCk6CiAgICAgICAgcmV0dXJuIHNldChpdCkKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CiAgICAgICAgcmV0dXJuIGtleSBpbiBzZWxmLl9tYXBwaW5nCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHlpZWxkIGZyb20gc2VsZi5fbWFwcGluZwoKCktleXNWaWV3LnJlZ2lzdGVyKGRpY3Rfa2V5cykKCgpjbGFzcyBJdGVtc1ZpZXcoTWFwcGluZ1ZpZXcsIFNldCk6CgogICAgX19zbG90c19fID0gKCkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfZnJvbV9pdGVyYWJsZShjbHMsIGl0KToKICAgICAgICByZXR1cm4gc2V0KGl0KQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CiAgICAgICAga2V5LCB2YWx1ZSA9IGl0ZW0KICAgICAgICB0cnk6CiAgICAgICAgICAgIHYgPSBzZWxmLl9tYXBwaW5nW2tleV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWUKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9tYXBwaW5nOgogICAgICAgICAgICB5aWVsZCAoa2V5LCBzZWxmLl9tYXBwaW5nW2tleV0pCgoKSXRlbXNWaWV3LnJlZ2lzdGVyKGRpY3RfaXRlbXMpCgoKY2xhc3MgVmFsdWVzVmlldyhNYXBwaW5nVmlldywgQ29sbGVjdGlvbik6CgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6CiAgICAgICAgICAgIHYgPSBzZWxmLl9tYXBwaW5nW2tleV0KICAgICAgICAgICAgaWYgdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9tYXBwaW5nOgogICAgICAgICAgICB5aWVsZCBzZWxmLl9tYXBwaW5nW2tleV0KCgpWYWx1ZXNWaWV3LnJlZ2lzdGVyKGRpY3RfdmFsdWVzKQoKCmNsYXNzIE11dGFibGVNYXBwaW5nKE1hcHBpbmcpOgogICAgIiIiQSBNdXRhYmxlTWFwcGluZyBpcyBhIGdlbmVyaWMgY29udGFpbmVyIGZvciBhc3NvY2lhdGluZwogICAga2V5L3ZhbHVlIHBhaXJzLgoKICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgY29uY3JldGUgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbnMgb2YgYWxsCiAgICBtZXRob2RzIGV4Y2VwdCBmb3IgX19nZXRpdGVtX18sIF9fc2V0aXRlbV9fLCBfX2RlbGl0ZW1fXywKICAgIF9faXRlcl9fLCBhbmQgX19sZW5fXy4KICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgcmFpc2UgS2V5RXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIHJhaXNlIEtleUVycm9yCgogICAgX19tYXJrZXIgPSBvYmplY3QoKQoKICAgIGRlZiBwb3Aoc2VsZiwga2V5LCBkZWZhdWx0PV9fbWFya2VyKToKICAgICAgICAnJydELnBvcChrWyxkXSkgLT4gdiwgcmVtb3ZlIHNwZWNpZmllZCBrZXkgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZS4KICAgICAgICAgIElmIGtleSBpcyBub3QgZm91bmQsIGQgaXMgcmV0dXJuZWQgaWYgZ2l2ZW4sIG90aGVyd2lzZSBLZXlFcnJvciBpcyByYWlzZWQuCiAgICAgICAgJycnCiAgICAgICAgdHJ5OgogICAgICAgICAgICB2YWx1ZSA9IHNlbGZba2V5XQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgaWYgZGVmYXVsdCBpcyBzZWxmLl9fbWFya2VyOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKICAgICAgICBlbHNlOgogICAgICAgICAgICBkZWwgc2VsZltrZXldCiAgICAgICAgICAgIHJldHVybiB2YWx1ZQoKICAgIGRlZiBwb3BpdGVtKHNlbGYpOgogICAgICAgICcnJ0QucG9waXRlbSgpIC0+IChrLCB2KSwgcmVtb3ZlIGFuZCByZXR1cm4gc29tZSAoa2V5LCB2YWx1ZSkgcGFpcgogICAgICAgICAgIGFzIGEgMi10dXBsZTsgYnV0IHJhaXNlIEtleUVycm9yIGlmIEQgaXMgZW1wdHkuCiAgICAgICAgJycnCiAgICAgICAgdHJ5OgogICAgICAgICAgICBrZXkgPSBuZXh0KGl0ZXIoc2VsZikpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yIGZyb20gTm9uZQogICAgICAgIHZhbHVlID0gc2VsZltrZXldCiAgICAgICAgZGVsIHNlbGZba2V5XQogICAgICAgIHJldHVybiBrZXksIHZhbHVlCgogICAgZGVmIGNsZWFyKHNlbGYpOgogICAgICAgICdELmNsZWFyKCkgLT4gTm9uZS4gIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSBELicKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBzZWxmLnBvcGl0ZW0oKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiB1cGRhdGUoc2VsZiwgb3RoZXI9KCksIC8sICoqa3dkcyk6CiAgICAgICAgJycnIEQudXBkYXRlKFtFLCBdKipGKSAtPiBOb25lLiAgVXBkYXRlIEQgZnJvbSBtYXBwaW5nL2l0ZXJhYmxlIEUgYW5kIEYuCiAgICAgICAgICAgIElmIEUgcHJlc2VudCBhbmQgaGFzIGEgLmtleXMoKSBtZXRob2QsIGRvZXM6ICAgICBmb3IgayBpbiBFOiBEW2tdID0gRVtrXQogICAgICAgICAgICBJZiBFIHByZXNlbnQgYW5kIGxhY2tzIC5rZXlzKCkgbWV0aG9kLCBkb2VzOiAgICAgZm9yIChrLCB2KSBpbiBFOiBEW2tdID0gdgogICAgICAgICAgICBJbiBlaXRoZXIgY2FzZSwgdGhpcyBpcyBmb2xsb3dlZCBieTogZm9yIGssIHYgaW4gRi5pdGVtcygpOiBEW2tdID0gdgogICAgICAgICcnJwogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIE1hcHBpbmcpOgogICAgICAgICAgICBmb3Iga2V5IGluIG90aGVyOgogICAgICAgICAgICAgICAgc2VsZltrZXldID0gb3RoZXJba2V5XQogICAgICAgIGVsaWYgaGFzYXR0cihvdGhlciwgImtleXMiKToKICAgICAgICAgICAgZm9yIGtleSBpbiBvdGhlci5rZXlzKCk6CiAgICAgICAgICAgICAgICBzZWxmW2tleV0gPSBvdGhlcltrZXldCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gb3RoZXI6CiAgICAgICAgICAgICAgICBzZWxmW2tleV0gPSB2YWx1ZQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIGt3ZHMuaXRlbXMoKToKICAgICAgICAgICAgc2VsZltrZXldID0gdmFsdWUKCiAgICBkZWYgc2V0ZGVmYXVsdChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgJ0Quc2V0ZGVmYXVsdChrWyxkXSkgLT4gRC5nZXQoayxkKSwgYWxzbyBzZXQgRFtrXT1kIGlmIGsgbm90IGluIEQnCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZltrZXldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBzZWxmW2tleV0gPSBkZWZhdWx0CiAgICAgICAgcmV0dXJuIGRlZmF1bHQKCgpNdXRhYmxlTWFwcGluZy5yZWdpc3RlcihkaWN0KQoKCiMjIyBTRVFVRU5DRVMgIyMjCgpjbGFzcyBTZXF1ZW5jZShSZXZlcnNpYmxlLCBDb2xsZWN0aW9uKToKICAgICIiIkFsbCB0aGUgb3BlcmF0aW9ucyBvbiBhIHJlYWQtb25seSBzZXF1ZW5jZS4KCiAgICBDb25jcmV0ZSBzdWJjbGFzc2VzIG11c3Qgb3ZlcnJpZGUgX19uZXdfXyBvciBfX2luaXRfXywKICAgIF9fZ2V0aXRlbV9fLCBhbmQgX19sZW5fXy4KICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgIyBUZWxsIEFCQ01ldGEuX19uZXdfXyB0aGF0IHRoaXMgY2xhc3Mgc2hvdWxkIGhhdmUgVFBGTEFHU19TRVFVRU5DRSBzZXQuCiAgICBfX2FiY190cGZsYWdzX18gPSAxIDw8IDUgIyBQeV9UUEZMQUdTX1NFUVVFTkNFCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgIHJhaXNlIEluZGV4RXJyb3IKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgaSA9IDAKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICB2ID0gc2VsZltpXQogICAgICAgICAgICAgICAgeWllbGQgdgogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgIHJldHVybgoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgIGZvciB2IGluIHNlbGY6CiAgICAgICAgICAgIGlmIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKICAgICAgICBmb3IgaSBpbiByZXZlcnNlZChyYW5nZShsZW4oc2VsZikpKToKICAgICAgICAgICAgeWllbGQgc2VsZltpXQoKICAgIGRlZiBpbmRleChzZWxmLCB2YWx1ZSwgc3RhcnQ9MCwgc3RvcD1Ob25lKToKICAgICAgICAnJydTLmluZGV4KHZhbHVlLCBbc3RhcnQsIFtzdG9wXV0pIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLgogICAgICAgICAgIFJhaXNlcyBWYWx1ZUVycm9yIGlmIHRoZSB2YWx1ZSBpcyBub3QgcHJlc2VudC4KCiAgICAgICAgICAgU3VwcG9ydGluZyBzdGFydCBhbmQgc3RvcCBhcmd1bWVudHMgaXMgb3B0aW9uYWwsIGJ1dAogICAgICAgICAgIHJlY29tbWVuZGVkLgogICAgICAgICcnJwogICAgICAgIGlmIHN0YXJ0IGlzIG5vdCBOb25lIGFuZCBzdGFydCA8IDA6CiAgICAgICAgICAgIHN0YXJ0ID0gbWF4KGxlbihzZWxmKSArIHN0YXJ0LCAwKQogICAgICAgIGlmIHN0b3AgaXMgbm90IE5vbmUgYW5kIHN0b3AgPCAwOgogICAgICAgICAgICBzdG9wICs9IGxlbihzZWxmKQoKICAgICAgICBpID0gc3RhcnQKICAgICAgICB3aGlsZSBzdG9wIGlzIE5vbmUgb3IgaSA8IHN0b3A6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHYgPSBzZWxmW2ldCiAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgaWYgdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlOgogICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgICAgaSArPSAxCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgoKICAgIGRlZiBjb3VudChzZWxmLCB2YWx1ZSk6CiAgICAgICAgJ1MuY291bnQodmFsdWUpIC0+IGludGVnZXIgLS0gcmV0dXJuIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB2YWx1ZScKICAgICAgICByZXR1cm4gc3VtKDEgZm9yIHYgaW4gc2VsZiBpZiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWUpCgpTZXF1ZW5jZS5yZWdpc3Rlcih0dXBsZSkKU2VxdWVuY2UucmVnaXN0ZXIoc3RyKQpTZXF1ZW5jZS5yZWdpc3RlcihyYW5nZSkKU2VxdWVuY2UucmVnaXN0ZXIobWVtb3J5dmlldykKCgpjbGFzcyBCeXRlU3RyaW5nKFNlcXVlbmNlKToKICAgICIiIlRoaXMgdW5pZmllcyBieXRlcyBhbmQgYnl0ZWFycmF5LgoKICAgIFhYWCBTaG91bGQgYWRkIGFsbCB0aGVpciBtZXRob2RzLgogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKCkJ5dGVTdHJpbmcucmVnaXN0ZXIoYnl0ZXMpCkJ5dGVTdHJpbmcucmVnaXN0ZXIoYnl0ZWFycmF5KQoKCmNsYXNzIE11dGFibGVTZXF1ZW5jZShTZXF1ZW5jZSk6CiAgICAiIiJBbGwgdGhlIG9wZXJhdGlvbnMgb24gYSByZWFkLXdyaXRlIHNlcXVlbmNlLgoKICAgIENvbmNyZXRlIHN1YmNsYXNzZXMgbXVzdCBwcm92aWRlIF9fbmV3X18gb3IgX19pbml0X18sCiAgICBfX2dldGl0ZW1fXywgX19zZXRpdGVtX18sIF9fZGVsaXRlbV9fLCBfX2xlbl9fLCBhbmQgaW5zZXJ0KCkuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCB2YWx1ZSk6CiAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGluZGV4KToKICAgICAgICByYWlzZSBJbmRleEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCB2YWx1ZSk6CiAgICAgICAgJ1MuaW5zZXJ0KGluZGV4LCB2YWx1ZSkgLS0gaW5zZXJ0IHZhbHVlIGJlZm9yZSBpbmRleCcKICAgICAgICByYWlzZSBJbmRleEVycm9yCgogICAgZGVmIGFwcGVuZChzZWxmLCB2YWx1ZSk6CiAgICAgICAgJ1MuYXBwZW5kKHZhbHVlKSAtLSBhcHBlbmQgdmFsdWUgdG8gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UnCiAgICAgICAgc2VsZi5pbnNlcnQobGVuKHNlbGYpLCB2YWx1ZSkKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgJ1MuY2xlYXIoKSAtPiBOb25lIC0tIHJlbW92ZSBhbGwgaXRlbXMgZnJvbSBTJwogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIHNlbGYucG9wKCkKICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiByZXZlcnNlKHNlbGYpOgogICAgICAgICdTLnJldmVyc2UoKSAtLSByZXZlcnNlICpJTiBQTEFDRSonCiAgICAgICAgbiA9IGxlbihzZWxmKQogICAgICAgIGZvciBpIGluIHJhbmdlKG4vLzIpOgogICAgICAgICAgICBzZWxmW2ldLCBzZWxmW24taS0xXSA9IHNlbGZbbi1pLTFdLCBzZWxmW2ldCgogICAgZGVmIGV4dGVuZChzZWxmLCB2YWx1ZXMpOgogICAgICAgICdTLmV4dGVuZChpdGVyYWJsZSkgLS0gZXh0ZW5kIHNlcXVlbmNlIGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZScKICAgICAgICBpZiB2YWx1ZXMgaXMgc2VsZjoKICAgICAgICAgICAgdmFsdWVzID0gbGlzdCh2YWx1ZXMpCiAgICAgICAgZm9yIHYgaW4gdmFsdWVzOgogICAgICAgICAgICBzZWxmLmFwcGVuZCh2KQoKICAgIGRlZiBwb3Aoc2VsZiwgaW5kZXg9LTEpOgogICAgICAgICcnJ1MucG9wKFtpbmRleF0pIC0+IGl0ZW0gLS0gcmVtb3ZlIGFuZCByZXR1cm4gaXRlbSBhdCBpbmRleCAoZGVmYXVsdCBsYXN0KS4KICAgICAgICAgICBSYWlzZSBJbmRleEVycm9yIGlmIGxpc3QgaXMgZW1wdHkgb3IgaW5kZXggaXMgb3V0IG9mIHJhbmdlLgogICAgICAgICcnJwogICAgICAgIHYgPSBzZWxmW2luZGV4XQogICAgICAgIGRlbCBzZWxmW2luZGV4XQogICAgICAgIHJldHVybiB2CgogICAgZGVmIHJlbW92ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgJycnUy5yZW1vdmUodmFsdWUpIC0tIHJlbW92ZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHZhbHVlLgogICAgICAgICAgIFJhaXNlIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LgogICAgICAgICcnJwogICAgICAgIGRlbCBzZWxmW3NlbGYuaW5kZXgodmFsdWUpXQoKICAgIGRlZiBfX2lhZGRfXyhzZWxmLCB2YWx1ZXMpOgogICAgICAgIHNlbGYuZXh0ZW5kKHZhbHVlcykKICAgICAgICByZXR1cm4gc2VsZgoKCk11dGFibGVTZXF1ZW5jZS5yZWdpc3RlcihsaXN0KQpNdXRhYmxlU2VxdWVuY2UucmVnaXN0ZXIoYnl0ZWFycmF5KSAgIyBNdWx0aXBseSBpbmhlcml0aW5nLCBzZWUgQnl0ZVN0cmluZwpQSwMEFAAAAAAAAiCjVlw75WE5IgAAOSIAABEAAABfY29tcGF0X3BpY2tsZS5weSMgVGhpcyBtb2R1bGUgaXMgdXNlZCB0byBtYXAgdGhlIG9sZCBQeXRob24gMiBuYW1lcyB0byB0aGUgbmV3IG5hbWVzIHVzZWQgaW4KIyBQeXRob24gMyBmb3IgdGhlIHBpY2tsZSBtb2R1bGUuICBUaGlzIG5lZWRlZCB0byBtYWtlIHBpY2tsZSBzdHJlYW1zCiMgZ2VuZXJhdGVkIHdpdGggUHl0aG9uIDIgbG9hZGFibGUgYnkgUHl0aG9uIDMuCgojIFRoaXMgaXMgYSBjb3B5IG9mIGxpYjJ0bzMuZml4ZXMuZml4X2ltcG9ydHMuTUFQUElORy4gIFdlIGNhbm5vdCBpbXBvcnQKIyBsaWIydG8zIGFuZCB1c2UgdGhlIG1hcHBpbmcgZGVmaW5lZCB0aGVyZSwgYmVjYXVzZSBsaWIydG8zIHVzZXMgcGlja2xlLgojIFRodXMsIHRoaXMgY291bGQgY2F1c2UgdGhlIG1vZHVsZSB0byBiZSBpbXBvcnRlZCByZWN1cnNpdmVseS4KSU1QT1JUX01BUFBJTkcgPSB7CiAgICAnX19idWlsdGluX18nIDogJ2J1aWx0aW5zJywKICAgICdjb3B5X3JlZyc6ICdjb3B5cmVnJywKICAgICdRdWV1ZSc6ICdxdWV1ZScsCiAgICAnU29ja2V0U2VydmVyJzogJ3NvY2tldHNlcnZlcicsCiAgICAnQ29uZmlnUGFyc2VyJzogJ2NvbmZpZ3BhcnNlcicsCiAgICAncmVwcic6ICdyZXBybGliJywKICAgICd0a0ZpbGVEaWFsb2cnOiAndGtpbnRlci5maWxlZGlhbG9nJywKICAgICd0a1NpbXBsZURpYWxvZyc6ICd0a2ludGVyLnNpbXBsZWRpYWxvZycsCiAgICAndGtDb2xvckNob29zZXInOiAndGtpbnRlci5jb2xvcmNob29zZXInLAogICAgJ3RrQ29tbW9uRGlhbG9nJzogJ3RraW50ZXIuY29tbW9uZGlhbG9nJywKICAgICdEaWFsb2cnOiAndGtpbnRlci5kaWFsb2cnLAogICAgJ1RrZG5kJzogJ3RraW50ZXIuZG5kJywKICAgICd0a0ZvbnQnOiAndGtpbnRlci5mb250JywKICAgICd0a01lc3NhZ2VCb3gnOiAndGtpbnRlci5tZXNzYWdlYm94JywKICAgICdTY3JvbGxlZFRleHQnOiAndGtpbnRlci5zY3JvbGxlZHRleHQnLAogICAgJ1RrY29uc3RhbnRzJzogJ3RraW50ZXIuY29uc3RhbnRzJywKICAgICdUaXgnOiAndGtpbnRlci50aXgnLAogICAgJ3R0ayc6ICd0a2ludGVyLnR0aycsCiAgICAnVGtpbnRlcic6ICd0a2ludGVyJywKICAgICdtYXJrdXBiYXNlJzogJ19tYXJrdXBiYXNlJywKICAgICdfd2lucmVnJzogJ3dpbnJlZycsCiAgICAndGhyZWFkJzogJ190aHJlYWQnLAogICAgJ2R1bW15X3RocmVhZCc6ICdfZHVtbXlfdGhyZWFkJywKICAgICdkYmhhc2gnOiAnZGJtLmJzZCcsCiAgICAnZHVtYmRibSc6ICdkYm0uZHVtYicsCiAgICAnZGJtJzogJ2RibS5uZGJtJywKICAgICdnZGJtJzogJ2RibS5nbnUnLAogICAgJ3htbHJwY2xpYic6ICd4bWxycGMuY2xpZW50JywKICAgICdTaW1wbGVYTUxSUENTZXJ2ZXInOiAneG1scnBjLnNlcnZlcicsCiAgICAnaHR0cGxpYic6ICdodHRwLmNsaWVudCcsCiAgICAnaHRtbGVudGl0eWRlZnMnIDogJ2h0bWwuZW50aXRpZXMnLAogICAgJ0hUTUxQYXJzZXInIDogJ2h0bWwucGFyc2VyJywKICAgICdDb29raWUnOiAnaHR0cC5jb29raWVzJywKICAgICdjb29raWVsaWInOiAnaHR0cC5jb29raWVqYXInLAogICAgJ0Jhc2VIVFRQU2VydmVyJzogJ2h0dHAuc2VydmVyJywKICAgICd0ZXN0LnRlc3Rfc3VwcG9ydCc6ICd0ZXN0LnN1cHBvcnQnLAogICAgJ2NvbW1hbmRzJzogJ3N1YnByb2Nlc3MnLAogICAgJ3VybHBhcnNlJyA6ICd1cmxsaWIucGFyc2UnLAogICAgJ3JvYm90cGFyc2VyJyA6ICd1cmxsaWIucm9ib3RwYXJzZXInLAogICAgJ3VybGxpYjInOiAndXJsbGliLnJlcXVlc3QnLAogICAgJ2FueWRibSc6ICdkYm0nLAogICAgJ19hYmNvbGwnIDogJ2NvbGxlY3Rpb25zLmFiYycsCn0KCgojIFRoaXMgY29udGFpbnMgcmVuYW1lIHJ1bGVzIHRoYXQgYXJlIGVhc3kgdG8gaGFuZGxlLiAgV2UgaWdub3JlIHRoZSBtb3JlCiMgY29tcGxleCBzdHVmZiAoZS5nLiBtYXBwaW5nIHRoZSBuYW1lcyBpbiB0aGUgdXJsbGliIGFuZCB0eXBlcyBtb2R1bGVzKS4KIyBUaGVzZSBydWxlcyBzaG91bGQgYmUgcnVuIGJlZm9yZSBpbXBvcnQgbmFtZXMgYXJlIGZpeGVkLgpOQU1FX01BUFBJTkcgPSB7CiAgICAoJ19fYnVpbHRpbl9fJywgJ3hyYW5nZScpOiAgICAgKCdidWlsdGlucycsICdyYW5nZScpLAogICAgKCdfX2J1aWx0aW5fXycsICdyZWR1Y2UnKTogICAgICgnZnVuY3Rvb2xzJywgJ3JlZHVjZScpLAogICAgKCdfX2J1aWx0aW5fXycsICdpbnRlcm4nKTogICAgICgnc3lzJywgJ2ludGVybicpLAogICAgKCdfX2J1aWx0aW5fXycsICd1bmljaHInKTogICAgICgnYnVpbHRpbnMnLCAnY2hyJyksCiAgICAoJ19fYnVpbHRpbl9fJywgJ3VuaWNvZGUnKTogICAgKCdidWlsdGlucycsICdzdHInKSwKICAgICgnX19idWlsdGluX18nLCAnbG9uZycpOiAgICAgICAoJ2J1aWx0aW5zJywgJ2ludCcpLAogICAgKCdpdGVydG9vbHMnLCAnaXppcCcpOiAgICAgICAgICgnYnVpbHRpbnMnLCAnemlwJyksCiAgICAoJ2l0ZXJ0b29scycsICdpbWFwJyk6ICAgICAgICAgKCdidWlsdGlucycsICdtYXAnKSwKICAgICgnaXRlcnRvb2xzJywgJ2lmaWx0ZXInKTogICAgICAoJ2J1aWx0aW5zJywgJ2ZpbHRlcicpLAogICAgKCdpdGVydG9vbHMnLCAnaWZpbHRlcmZhbHNlJyk6ICgnaXRlcnRvb2xzJywgJ2ZpbHRlcmZhbHNlJyksCiAgICAoJ2l0ZXJ0b29scycsICdpemlwX2xvbmdlc3QnKTogKCdpdGVydG9vbHMnLCAnemlwX2xvbmdlc3QnKSwKICAgICgnVXNlckRpY3QnLCAnSXRlcmFibGVVc2VyRGljdCcpOiAoJ2NvbGxlY3Rpb25zJywgJ1VzZXJEaWN0JyksCiAgICAoJ1VzZXJMaXN0JywgJ1VzZXJMaXN0Jyk6ICgnY29sbGVjdGlvbnMnLCAnVXNlckxpc3QnKSwKICAgICgnVXNlclN0cmluZycsICdVc2VyU3RyaW5nJyk6ICgnY29sbGVjdGlvbnMnLCAnVXNlclN0cmluZycpLAogICAgKCd3aGljaGRiJywgJ3doaWNoZGInKTogKCdkYm0nLCAnd2hpY2hkYicpLAogICAgKCdfc29ja2V0JywgJ2Zyb21mZCcpOiAoJ3NvY2tldCcsICdmcm9tZmQnKSwKICAgICgnX211bHRpcHJvY2Vzc2luZycsICdDb25uZWN0aW9uJyk6ICgnbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24nLCAnQ29ubmVjdGlvbicpLAogICAgKCdtdWx0aXByb2Nlc3NpbmcucHJvY2VzcycsICdQcm9jZXNzJyk6ICgnbXVsdGlwcm9jZXNzaW5nLmNvbnRleHQnLCAnUHJvY2VzcycpLAogICAgKCdtdWx0aXByb2Nlc3NpbmcuZm9ya2luZycsICdQb3BlbicpOiAoJ211bHRpcHJvY2Vzc2luZy5wb3Blbl9mb3JrJywgJ1BvcGVuJyksCiAgICAoJ3VybGxpYicsICdDb250ZW50VG9vU2hvcnRFcnJvcicpOiAoJ3VybGxpYi5lcnJvcicsICdDb250ZW50VG9vU2hvcnRFcnJvcicpLAogICAgKCd1cmxsaWInLCAnZ2V0cHJveGllcycpOiAoJ3VybGxpYi5yZXF1ZXN0JywgJ2dldHByb3hpZXMnKSwKICAgICgndXJsbGliJywgJ3BhdGhuYW1lMnVybCcpOiAoJ3VybGxpYi5yZXF1ZXN0JywgJ3BhdGhuYW1lMnVybCcpLAogICAgKCd1cmxsaWInLCAncXVvdGVfcGx1cycpOiAoJ3VybGxpYi5wYXJzZScsICdxdW90ZV9wbHVzJyksCiAgICAoJ3VybGxpYicsICdxdW90ZScpOiAoJ3VybGxpYi5wYXJzZScsICdxdW90ZScpLAogICAgKCd1cmxsaWInLCAndW5xdW90ZV9wbHVzJyk6ICgndXJsbGliLnBhcnNlJywgJ3VucXVvdGVfcGx1cycpLAogICAgKCd1cmxsaWInLCAndW5xdW90ZScpOiAoJ3VybGxpYi5wYXJzZScsICd1bnF1b3RlJyksCiAgICAoJ3VybGxpYicsICd1cmwycGF0aG5hbWUnKTogKCd1cmxsaWIucmVxdWVzdCcsICd1cmwycGF0aG5hbWUnKSwKICAgICgndXJsbGliJywgJ3VybGNsZWFudXAnKTogKCd1cmxsaWIucmVxdWVzdCcsICd1cmxjbGVhbnVwJyksCiAgICAoJ3VybGxpYicsICd1cmxlbmNvZGUnKTogKCd1cmxsaWIucGFyc2UnLCAndXJsZW5jb2RlJyksCiAgICAoJ3VybGxpYicsICd1cmxvcGVuJyk6ICgndXJsbGliLnJlcXVlc3QnLCAndXJsb3BlbicpLAogICAgKCd1cmxsaWInLCAndXJscmV0cmlldmUnKTogKCd1cmxsaWIucmVxdWVzdCcsICd1cmxyZXRyaWV2ZScpLAogICAgKCd1cmxsaWIyJywgJ0hUVFBFcnJvcicpOiAoJ3VybGxpYi5lcnJvcicsICdIVFRQRXJyb3InKSwKICAgICgndXJsbGliMicsICdVUkxFcnJvcicpOiAoJ3VybGxpYi5lcnJvcicsICdVUkxFcnJvcicpLAp9CgpQWVRIT04yX0VYQ0VQVElPTlMgPSAoCiAgICAiQXJpdGhtZXRpY0Vycm9yIiwKICAgICJBc3NlcnRpb25FcnJvciIsCiAgICAiQXR0cmlidXRlRXJyb3IiLAogICAgIkJhc2VFeGNlcHRpb24iLAogICAgIkJ1ZmZlckVycm9yIiwKICAgICJCeXRlc1dhcm5pbmciLAogICAgIkRlcHJlY2F0aW9uV2FybmluZyIsCiAgICAiRU9GRXJyb3IiLAogICAgIkVudmlyb25tZW50RXJyb3IiLAogICAgIkV4Y2VwdGlvbiIsCiAgICAiRmxvYXRpbmdQb2ludEVycm9yIiwKICAgICJGdXR1cmVXYXJuaW5nIiwKICAgICJHZW5lcmF0b3JFeGl0IiwKICAgICJJT0Vycm9yIiwKICAgICJJbXBvcnRFcnJvciIsCiAgICAiSW1wb3J0V2FybmluZyIsCiAgICAiSW5kZW50YXRpb25FcnJvciIsCiAgICAiSW5kZXhFcnJvciIsCiAgICAiS2V5RXJyb3IiLAogICAgIktleWJvYXJkSW50ZXJydXB0IiwKICAgICJMb29rdXBFcnJvciIsCiAgICAiTWVtb3J5RXJyb3IiLAogICAgIk5hbWVFcnJvciIsCiAgICAiTm90SW1wbGVtZW50ZWRFcnJvciIsCiAgICAiT1NFcnJvciIsCiAgICAiT3ZlcmZsb3dFcnJvciIsCiAgICAiUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyIsCiAgICAiUmVmZXJlbmNlRXJyb3IiLAogICAgIlJ1bnRpbWVFcnJvciIsCiAgICAiUnVudGltZVdhcm5pbmciLAogICAgIyBTdGFuZGFyZEVycm9yIGlzIGdvbmUgaW4gUHl0aG9uIDMsIHNvIHdlIG1hcCBpdCB0byBFeGNlcHRpb24KICAgICJTdG9wSXRlcmF0aW9uIiwKICAgICJTeW50YXhFcnJvciIsCiAgICAiU3ludGF4V2FybmluZyIsCiAgICAiU3lzdGVtRXJyb3IiLAogICAgIlN5c3RlbUV4aXQiLAogICAgIlRhYkVycm9yIiwKICAgICJUeXBlRXJyb3IiLAogICAgIlVuYm91bmRMb2NhbEVycm9yIiwKICAgICJVbmljb2RlRGVjb2RlRXJyb3IiLAogICAgIlVuaWNvZGVFbmNvZGVFcnJvciIsCiAgICAiVW5pY29kZUVycm9yIiwKICAgICJVbmljb2RlVHJhbnNsYXRlRXJyb3IiLAogICAgIlVuaWNvZGVXYXJuaW5nIiwKICAgICJVc2VyV2FybmluZyIsCiAgICAiVmFsdWVFcnJvciIsCiAgICAiV2FybmluZyIsCiAgICAiWmVyb0RpdmlzaW9uRXJyb3IiLAopCgp0cnk6CiAgICBXaW5kb3dzRXJyb3IKZXhjZXB0IE5hbWVFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgIFBZVEhPTjJfRVhDRVBUSU9OUyArPSAoIldpbmRvd3NFcnJvciIsKQoKZm9yIGV4Y25hbWUgaW4gUFlUSE9OMl9FWENFUFRJT05TOgogICAgTkFNRV9NQVBQSU5HWygiZXhjZXB0aW9ucyIsIGV4Y25hbWUpXSA9ICgiYnVpbHRpbnMiLCBleGNuYW1lKQoKTVVMVElQUk9DRVNTSU5HX0VYQ0VQVElPTlMgPSAoCiAgICAnQXV0aGVudGljYXRpb25FcnJvcicsCiAgICAnQnVmZmVyVG9vU2hvcnQnLAogICAgJ1Byb2Nlc3NFcnJvcicsCiAgICAnVGltZW91dEVycm9yJywKKQoKZm9yIGV4Y25hbWUgaW4gTVVMVElQUk9DRVNTSU5HX0VYQ0VQVElPTlM6CiAgICBOQU1FX01BUFBJTkdbKCJtdWx0aXByb2Nlc3NpbmciLCBleGNuYW1lKV0gPSAoIm11bHRpcHJvY2Vzc2luZy5jb250ZXh0IiwgZXhjbmFtZSkKCiMgU2FtZSwgYnV0IGZvciAzLnggdG8gMi54ClJFVkVSU0VfSU1QT1JUX01BUFBJTkcgPSBkaWN0KCh2LCBrKSBmb3IgKGssIHYpIGluIElNUE9SVF9NQVBQSU5HLml0ZW1zKCkpCmFzc2VydCBsZW4oUkVWRVJTRV9JTVBPUlRfTUFQUElORykgPT0gbGVuKElNUE9SVF9NQVBQSU5HKQpSRVZFUlNFX05BTUVfTUFQUElORyA9IGRpY3QoKHYsIGspIGZvciAoaywgdikgaW4gTkFNRV9NQVBQSU5HLml0ZW1zKCkpCmFzc2VydCBsZW4oUkVWRVJTRV9OQU1FX01BUFBJTkcpID09IGxlbihOQU1FX01BUFBJTkcpCgojIE5vbi1tdXR1YWwgbWFwcGluZ3MuCgpJTVBPUlRfTUFQUElORy51cGRhdGUoewogICAgJ2NQaWNrbGUnOiAncGlja2xlJywKICAgICdfZWxlbWVudHRyZWUnOiAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJywKICAgICdGaWxlRGlhbG9nJzogJ3RraW50ZXIuZmlsZWRpYWxvZycsCiAgICAnU2ltcGxlRGlhbG9nJzogJ3RraW50ZXIuc2ltcGxlZGlhbG9nJywKICAgICdEb2NYTUxSUENTZXJ2ZXInOiAneG1scnBjLnNlcnZlcicsCiAgICAnU2ltcGxlSFRUUFNlcnZlcic6ICdodHRwLnNlcnZlcicsCiAgICAnQ0dJSFRUUFNlcnZlcic6ICdodHRwLnNlcnZlcicsCiAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGggYnJva2VuIHBpY2tsZXMgc2F2ZWQgaW4gb2xkIFB5dGhvbiAzIHZlcnNpb25zCiAgICAnVXNlckRpY3QnOiAnY29sbGVjdGlvbnMnLAogICAgJ1VzZXJMaXN0JzogJ2NvbGxlY3Rpb25zJywKICAgICdVc2VyU3RyaW5nJzogJ2NvbGxlY3Rpb25zJywKICAgICd3aGljaGRiJzogJ2RibScsCiAgICAnU3RyaW5nSU8nOiAgJ2lvJywKICAgICdjU3RyaW5nSU8nOiAnaW8nLAp9KQoKUkVWRVJTRV9JTVBPUlRfTUFQUElORy51cGRhdGUoewogICAgJ19iejInOiAnYnoyJywKICAgICdfZGJtJzogJ2RibScsCiAgICAnX2Z1bmN0b29scyc6ICdmdW5jdG9vbHMnLAogICAgJ19nZGJtJzogJ2dkYm0nLAogICAgJ19waWNrbGUnOiAncGlja2xlJywKfSkKCk5BTUVfTUFQUElORy51cGRhdGUoewogICAgKCdfX2J1aWx0aW5fXycsICdiYXNlc3RyaW5nJyk6ICgnYnVpbHRpbnMnLCAnc3RyJyksCiAgICAoJ2V4Y2VwdGlvbnMnLCAnU3RhbmRhcmRFcnJvcicpOiAoJ2J1aWx0aW5zJywgJ0V4Y2VwdGlvbicpLAogICAgKCdVc2VyRGljdCcsICdVc2VyRGljdCcpOiAoJ2NvbGxlY3Rpb25zJywgJ1VzZXJEaWN0JyksCiAgICAoJ3NvY2tldCcsICdfc29ja2V0b2JqZWN0Jyk6ICgnc29ja2V0JywgJ1NvY2tldFR5cGUnKSwKfSkKClJFVkVSU0VfTkFNRV9NQVBQSU5HLnVwZGF0ZSh7CiAgICAoJ19mdW5jdG9vbHMnLCAncmVkdWNlJyk6ICgnX19idWlsdGluX18nLCAncmVkdWNlJyksCiAgICAoJ3RraW50ZXIuZmlsZWRpYWxvZycsICdGaWxlRGlhbG9nJyk6ICgnRmlsZURpYWxvZycsICdGaWxlRGlhbG9nJyksCiAgICAoJ3RraW50ZXIuZmlsZWRpYWxvZycsICdMb2FkRmlsZURpYWxvZycpOiAoJ0ZpbGVEaWFsb2cnLCAnTG9hZEZpbGVEaWFsb2cnKSwKICAgICgndGtpbnRlci5maWxlZGlhbG9nJywgJ1NhdmVGaWxlRGlhbG9nJyk6ICgnRmlsZURpYWxvZycsICdTYXZlRmlsZURpYWxvZycpLAogICAgKCd0a2ludGVyLnNpbXBsZWRpYWxvZycsICdTaW1wbGVEaWFsb2cnKTogKCdTaW1wbGVEaWFsb2cnLCAnU2ltcGxlRGlhbG9nJyksCiAgICAoJ3htbHJwYy5zZXJ2ZXInLCAnU2VydmVySFRNTERvYycpOiAoJ0RvY1hNTFJQQ1NlcnZlcicsICdTZXJ2ZXJIVE1MRG9jJyksCiAgICAoJ3htbHJwYy5zZXJ2ZXInLCAnWE1MUlBDRG9jR2VuZXJhdG9yJyk6CiAgICAgICAgKCdEb2NYTUxSUENTZXJ2ZXInLCAnWE1MUlBDRG9jR2VuZXJhdG9yJyksCiAgICAoJ3htbHJwYy5zZXJ2ZXInLCAnRG9jWE1MUlBDUmVxdWVzdEhhbmRsZXInKToKICAgICAgICAoJ0RvY1hNTFJQQ1NlcnZlcicsICdEb2NYTUxSUENSZXF1ZXN0SGFuZGxlcicpLAogICAgKCd4bWxycGMuc2VydmVyJywgJ0RvY1hNTFJQQ1NlcnZlcicpOgogICAgICAgICgnRG9jWE1MUlBDU2VydmVyJywgJ0RvY1hNTFJQQ1NlcnZlcicpLAogICAgKCd4bWxycGMuc2VydmVyJywgJ0RvY0NHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyJyk6CiAgICAgICAgKCdEb2NYTUxSUENTZXJ2ZXInLCAnRG9jQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXInKSwKICAgICgnaHR0cC5zZXJ2ZXInLCAnU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyJyk6CiAgICAgICAgKCdTaW1wbGVIVFRQU2VydmVyJywgJ1NpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcicpLAogICAgKCdodHRwLnNlcnZlcicsICdDR0lIVFRQUmVxdWVzdEhhbmRsZXInKToKICAgICAgICAoJ0NHSUhUVFBTZXJ2ZXInLCAnQ0dJSFRUUFJlcXVlc3RIYW5kbGVyJyksCiAgICAoJ19zb2NrZXQnLCAnc29ja2V0Jyk6ICgnc29ja2V0JywgJ19zb2NrZXRvYmplY3QnKSwKfSkKClBZVEhPTjNfT1NFUlJPUl9FWENFUFRJT05TID0gKAogICAgJ0Jyb2tlblBpcGVFcnJvcicsCiAgICAnQ2hpbGRQcm9jZXNzRXJyb3InLAogICAgJ0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3InLAogICAgJ0Nvbm5lY3Rpb25FcnJvcicsCiAgICAnQ29ubmVjdGlvblJlZnVzZWRFcnJvcicsCiAgICAnQ29ubmVjdGlvblJlc2V0RXJyb3InLAogICAgJ0ZpbGVFeGlzdHNFcnJvcicsCiAgICAnRmlsZU5vdEZvdW5kRXJyb3InLAogICAgJ0ludGVycnVwdGVkRXJyb3InLAogICAgJ0lzQURpcmVjdG9yeUVycm9yJywKICAgICdOb3RBRGlyZWN0b3J5RXJyb3InLAogICAgJ1Blcm1pc3Npb25FcnJvcicsCiAgICAnUHJvY2Vzc0xvb2t1cEVycm9yJywKICAgICdUaW1lb3V0RXJyb3InLAopCgpmb3IgZXhjbmFtZSBpbiBQWVRIT04zX09TRVJST1JfRVhDRVBUSU9OUzoKICAgIFJFVkVSU0VfTkFNRV9NQVBQSU5HWygnYnVpbHRpbnMnLCBleGNuYW1lKV0gPSAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpCgpQWVRIT04zX0lNUE9SVEVSUk9SX0VYQ0VQVElPTlMgPSAoCiAgICAnTW9kdWxlTm90Rm91bmRFcnJvcicsCikKCmZvciBleGNuYW1lIGluIFBZVEhPTjNfSU1QT1JURVJST1JfRVhDRVBUSU9OUzoKICAgIFJFVkVSU0VfTkFNRV9NQVBQSU5HWygnYnVpbHRpbnMnLCBleGNuYW1lKV0gPSAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKQpkZWwgZXhjbmFtZQpQSwMEFAAAAAAAAiCjVopw8p4xFgAAMRYAAA8AAABfY29tcHJlc3Npb24ucHkiIiJJbnRlcm5hbCBjbGFzc2VzIHVzZWQgYnkgdGhlIGd6aXAsIGx6bWEgYW5kIGJ6MiBtb2R1bGVzIiIiCgppbXBvcnQgaW8KaW1wb3J0IHN5cwoKQlVGRkVSX1NJWkUgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFICAjIENvbXByZXNzZWQgZGF0YSByZWFkIGNodW5rIHNpemUKCgpjbGFzcyBCYXNlU3RyZWFtKGlvLkJ1ZmZlcmVkSU9CYXNlKToKICAgICIiIk1vZGUtY2hlY2tpbmcgaGVscGVyIGZ1bmN0aW9ucy4iIiIKCiAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQoKICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYucmVhZGFibGUoKToKICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQoKICAgIGRlZiBfY2hlY2tfY2FuX3dyaXRlKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLndyaXRhYmxlKCk6CiAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKCiAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CiAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJTZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQogICAgICAgIGlmIG5vdCBzZWxmLnNlZWthYmxlKCk6CiAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmciKQoKCmNsYXNzIERlY29tcHJlc3NSZWFkZXIoaW8uUmF3SU9CYXNlKToKICAgICIiIkFkYXB0cyB0aGUgZGVjb21wcmVzc29yIEFQSSB0byBhIFJhd0lPQmFzZSByZWFkZXIgQVBJIiIiCgogICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwLCBkZWNvbXBfZmFjdG9yeSwgdHJhaWxpbmdfZXJyb3I9KCksICoqZGVjb21wX2FyZ3MpOgogICAgICAgIHNlbGYuX2ZwID0gZnAKICAgICAgICBzZWxmLl9lb2YgPSBGYWxzZQogICAgICAgIHNlbGYuX3BvcyA9IDAgICMgQ3VycmVudCBvZmZzZXQgaW4gZGVjb21wcmVzc2VkIHN0cmVhbQoKICAgICAgICAjIFNldCB0byBzaXplIG9mIGRlY29tcHJlc3NlZCBzdHJlYW0gb25jZSBpdCBpcyBrbm93biwgZm9yIFNFRUtfRU5ECiAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCgogICAgICAgICMgU2F2ZSB0aGUgZGVjb21wcmVzc29yIGZhY3RvcnkgYW5kIGFyZ3VtZW50cy4KICAgICAgICAjIElmIHRoZSBmaWxlIGNvbnRhaW5zIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcywgZWFjaAogICAgICAgICMgc3RyZWFtIHdpbGwgbmVlZCBhIHNlcGFyYXRlIGRlY29tcHJlc3NvciBvYmplY3QuIEEgbmV3IGRlY29tcHJlc3NvcgogICAgICAgICMgb2JqZWN0IGlzIGFsc28gbmVlZGVkIHdoZW4gaW1wbGVtZW50aW5nIGEgYmFja3dhcmRzIHNlZWsoKS4KICAgICAgICBzZWxmLl9kZWNvbXBfZmFjdG9yeSA9IGRlY29tcF9mYWN0b3J5CiAgICAgICAgc2VsZi5fZGVjb21wX2FyZ3MgPSBkZWNvbXBfYXJncwogICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KCoqc2VsZi5fZGVjb21wX2FyZ3MpCgogICAgICAgICMgRXhjZXB0aW9uIGNsYXNzIHRvIGNhdGNoIGZyb20gZGVjb21wcmVzc29yIHNpZ25pZnlpbmcgaW52YWxpZAogICAgICAgICMgdHJhaWxpbmcgZGF0YSB0byBpZ25vcmUKICAgICAgICBzZWxmLl90cmFpbGluZ19lcnJvciA9IHRyYWlsaW5nX2Vycm9yCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IE5vbmUKICAgICAgICByZXR1cm4gc3VwZXIoKS5jbG9zZSgpCgogICAgZGVmIHNlZWthYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9mcC5zZWVrYWJsZSgpCgogICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgogICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyB2aWV3LCB2aWV3LmNhc3QoIkIiKSBhcyBieXRlX3ZpZXc6CiAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKGJ5dGVfdmlldykpCiAgICAgICAgICAgIGJ5dGVfdmlld1s6bGVuKGRhdGEpXSA9IGRhdGEKICAgICAgICByZXR1cm4gbGVuKGRhdGEpCgogICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgaWYgc2l6ZSA8IDA6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnJlYWRhbGwoKQoKICAgICAgICBpZiBub3Qgc2l6ZSBvciBzZWxmLl9lb2Y6CiAgICAgICAgICAgIHJldHVybiBiIiIKICAgICAgICBkYXRhID0gTm9uZSAgIyBEZWZhdWx0IGlmIEVPRiBpcyBlbmNvdW50ZXJlZAogICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CiAgICAgICAgICAgICAgICByYXdibG9jayA9IChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnJlYWQoQlVGRkVSX1NJWkUpKQogICAgICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgogICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gc2VsZi5fZGVjb21wX2ZhY3RvcnkoCiAgICAgICAgICAgICAgICAgICAgKipzZWxmLl9kZWNvbXBfYXJncykKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2ssIHNpemUpCiAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5fdHJhaWxpbmdfZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIyBUcmFpbGluZyBkYXRhIGlzbid0IGEgdmFsaWQgY29tcHJlc3NlZCBzdHJlYW07IGlnbm9yZSBpdC4KICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLm5lZWRzX2lucHV0OgogICAgICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gc2VsZi5fZnAucmVhZChCVUZGRVJfU0laRSkKICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gYiIiCiAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2ssIHNpemUpCiAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCiAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKICAgICAgICAgICAgcmV0dXJuIGIiIgogICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKICAgICAgICByZXR1cm4gZGF0YQoKICAgIGRlZiByZWFkYWxsKHNlbGYpOgogICAgICAgIGNodW5rcyA9IFtdCiAgICAgICAgIyBzeXMubWF4c2l6ZSBtZWFucyB0aGUgbWF4IGxlbmd0aCBvZiBvdXRwdXQgYnVmZmVyIGlzIHVubGltaXRlZCwKICAgICAgICAjIHNvIHRoYXQgdGhlIHdob2xlIGlucHV0IGJ1ZmZlciBjYW4gYmUgZGVjb21wcmVzc2VkIHdpdGhpbiBvbmUKICAgICAgICAjIC5kZWNvbXByZXNzKCkgY2FsbC4KICAgICAgICB3aGlsZSBkYXRhIDo9IHNlbGYucmVhZChzeXMubWF4c2l6ZSk6CiAgICAgICAgICAgIGNodW5rcy5hcHBlbmQoZGF0YSkKCiAgICAgICAgcmV0dXJuIGIiIi5qb2luKGNodW5rcykKCiAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KICAgIGRlZiBfcmV3aW5kKHNlbGYpOgogICAgICAgIHNlbGYuX2ZwLnNlZWsoMCkKICAgICAgICBzZWxmLl9lb2YgPSBGYWxzZQogICAgICAgIHNlbGYuX3BvcyA9IDAKICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBzZWxmLl9kZWNvbXBfZmFjdG9yeSgqKnNlbGYuX2RlY29tcF9hcmdzKQoKICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPWlvLlNFRUtfU0VUKToKICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgogICAgICAgIGlmIHdoZW5jZSA9PSBpby5TRUVLX1NFVDoKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfQ1VSOgogICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKICAgICAgICBlbGlmIHdoZW5jZSA9PSBpby5TRUVLX0VORDoKICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCiAgICAgICAgICAgIGlmIHNlbGYuX3NpemUgPCAwOgogICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5yZWFkKGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUpOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQoKICAgICAgICAjIE1ha2UgaXQgc28gdGhhdCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIGZvcndhcmQuCiAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgogICAgICAgICAgICBzZWxmLl9yZXdpbmQoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKCiAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCiAgICAgICAgd2hpbGUgb2Zmc2V0ID4gMDoKICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZChtaW4oaW8uREVGQVVMVF9CVUZGRVJfU0laRSwgb2Zmc2V0KSkKICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBvZmZzZXQgLT0gbGVuKGRhdGEpCgogICAgICAgIHJldHVybiBzZWxmLl9wb3MKCiAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fcG9zClBLAwQUAAAAAAACIKNW2LY9cD05AAA9OQAADgAAAF9tYXJrdXBiYXNlLnB5IiIiU2hhcmVkIHN1cHBvcnQgZm9yIHNjYW5uaW5nIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb25zIGluIEhUTUwgYW5kIFhIVE1MLgoKVGhpcyBtb2R1bGUgaXMgdXNlZCBhcyBhIGZvdW5kYXRpb24gZm9yIHRoZSBodG1sLnBhcnNlciBtb2R1bGUuICBJdCBoYXMgbm8KZG9jdW1lbnRlZCBwdWJsaWMgQVBJIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHkuCgoiIiIKCmltcG9ydCByZQoKX2RlY2xuYW1lX21hdGNoID0gcmUuY29tcGlsZShyJ1thLXpBLVpdWy1fLmEtekEtWjAtOV0qXHMqJykubWF0Y2gKX2RlY2xzdHJpbmdsaXRfbWF0Y2ggPSByZS5jb21waWxlKHInKFwnW15cJ10qXCd8IlteIl0qIilccyonKS5tYXRjaApfY29tbWVudGNsb3NlID0gcmUuY29tcGlsZShyJy0tXHMqPicpCl9tYXJrZWRzZWN0aW9uY2xvc2UgPSByZS5jb21waWxlKHInXVxzKl1ccyo+JykKCiMgQW4gYW5hbHlzaXMgb2YgdGhlIE1TLVdvcmQgZXh0ZW5zaW9ucyBpcyBhdmFpbGFibGUgYXQKIyBodHRwOi8vd3d3LnBsYW5ldHB1Ymxpc2guY29tL3htbGFyZW5hL3hhcC9UaHVyc2RheS9Xb3JkdG9YTUwucGRmCgpfbXNtYXJrZWRzZWN0aW9uY2xvc2UgPSByZS5jb21waWxlKHInXVxzKj4nKQoKZGVsIHJlCgoKY2xhc3MgUGFyc2VyQmFzZToKICAgICIiIlBhcnNlciBiYXNlIGNsYXNzIHdoaWNoIHByb3ZpZGVzIHNvbWUgY29tbW9uIHN1cHBvcnQgbWV0aG9kcyB1c2VkCiAgICBieSB0aGUgU0dNTC9IVE1MIGFuZCBYSFRNTCBwYXJzZXJzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9fY2xhc3NfXyBpcyBQYXJzZXJCYXNlOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAiX21hcmt1cGJhc2UuUGFyc2VyQmFzZSBtdXN0IGJlIHN1YmNsYXNzZWQiKQoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBzZWxmLmxpbmVubyA9IDEKICAgICAgICBzZWxmLm9mZnNldCA9IDAKCiAgICBkZWYgZ2V0cG9zKHNlbGYpOgogICAgICAgICIiIlJldHVybiBjdXJyZW50IGxpbmUgbnVtYmVyIGFuZCBvZmZzZXQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYubGluZW5vLCBzZWxmLm9mZnNldAoKICAgICMgSW50ZXJuYWwgLS0gdXBkYXRlIGxpbmUgbnVtYmVyIGFuZCBvZmZzZXQuICBUaGlzIHNob3VsZCBiZQogICAgIyBjYWxsZWQgZm9yIGVhY2ggcGllY2Ugb2YgZGF0YSBleGFjdGx5IG9uY2UsIGluIG9yZGVyIC0tIGluIG90aGVyCiAgICAjIHdvcmRzIHRoZSBjb25jYXRlbmF0aW9uIG9mIGFsbCB0aGUgaW5wdXQgc3RyaW5ncyB0byB0aGlzCiAgICAjIGZ1bmN0aW9uIHNob3VsZCBiZSBleGFjdGx5IHRoZSBlbnRpcmUgaW5wdXQuCiAgICBkZWYgdXBkYXRlcG9zKHNlbGYsIGksIGopOgogICAgICAgIGlmIGkgPj0gajoKICAgICAgICAgICAgcmV0dXJuIGoKICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCiAgICAgICAgbmxpbmVzID0gcmF3ZGF0YS5jb3VudCgiXG4iLCBpLCBqKQogICAgICAgIGlmIG5saW5lczoKICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIG5saW5lcwogICAgICAgICAgICBwb3MgPSByYXdkYXRhLnJpbmRleCgiXG4iLCBpLCBqKSAjIFNob3VsZCBub3QgZmFpbAogICAgICAgICAgICBzZWxmLm9mZnNldCA9IGotKHBvcysxKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYub2Zmc2V0ID0gc2VsZi5vZmZzZXQgKyBqLWkKICAgICAgICByZXR1cm4gagoKICAgIF9kZWNsX290aGVyY2hhcnMgPSAnJwoKICAgICMgSW50ZXJuYWwgLS0gcGFyc2UgZGVjbGFyYXRpb24gKGZvciB1c2UgYnkgc3ViY2xhc3NlcykuCiAgICBkZWYgcGFyc2VfZGVjbGFyYXRpb24oc2VsZiwgaSk6CiAgICAgICAgIyBUaGlzIGlzIHNvbWUgc29ydCBvZiBkZWNsYXJhdGlvbjsgaW4gIkhUTUwgYXMKICAgICAgICAjIGRlcGxveWVkLCIgdGhpcyBzaG91bGQgb25seSBiZSB0aGUgZG9jdW1lbnQgdHlwZQogICAgICAgICMgZGVjbGFyYXRpb24gKCI8IURPQ1RZUEUgaHRtbC4uLj4iKS4KICAgICAgICAjIElTTyA4ODc5OjE5ODYsIGhvd2V2ZXIsIGhhcyBtb3JlIGNvbXBsZXgKICAgICAgICAjIGRlY2xhcmF0aW9uIHN5bnRheCBmb3IgZWxlbWVudHMgaW4gPCEuLi4+LCBpbmNsdWRpbmc6CiAgICAgICAgIyAtLWNvbW1lbnQtLQogICAgICAgICMgW21hcmtlZCBzZWN0aW9uXQogICAgICAgICMgbmFtZSBpbiB0aGUgZm9sbG93aW5nIGxpc3Q6IEVOVElUWSwgRE9DVFlQRSwgRUxFTUVOVCwKICAgICAgICAjIEFUVExJU1QsIE5PVEFUSU9OLCBTSE9SVFJFRiwgVVNFTUFQLAogICAgICAgICMgTElOS1RZUEUsIExJTkssIElETElOSywgVVNFTElOSywgU1lTVEVNCiAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQogICAgICAgIGogPSBpICsgMgogICAgICAgIGFzc2VydCByYXdkYXRhW2k6al0gPT0gIjwhIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBwYXJzZV9kZWNsYXJhdGlvbiIKICAgICAgICBpZiByYXdkYXRhW2o6aisxXSA9PSAiPiI6CiAgICAgICAgICAgICMgdGhlIGVtcHR5IGNvbW1lbnQgPCE+CiAgICAgICAgICAgIHJldHVybiBqICsgMQogICAgICAgIGlmIHJhd2RhdGFbajpqKzFdIGluICgiLSIsICIiKToKICAgICAgICAgICAgIyBTdGFydCBvZiBjb21tZW50IGZvbGxvd2VkIGJ5IGJ1ZmZlciBib3VuZGFyeSwKICAgICAgICAgICAgIyBvciBqdXN0IGEgYnVmZmVyIGJvdW5kYXJ5LgogICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAjIEEgc2ltcGxlLCBwcmFjdGljYWwgdmVyc2lvbiBjb3VsZCBsb29rIGxpa2U6ICgobmFtZXxzdHJpbmdsaXQpIFMqKSArICc+JwogICAgICAgIG4gPSBsZW4ocmF3ZGF0YSkKICAgICAgICBpZiByYXdkYXRhW2o6aisyXSA9PSAnLS0nOiAjY29tbWVudAogICAgICAgICAgICAjIExvY2F0ZSAtLS4qLS0gYXMgdGhlIGJvZHkgb2YgdGhlIGNvbW1lbnQKICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VfY29tbWVudChpKQogICAgICAgIGVsaWYgcmF3ZGF0YVtqXSA9PSAnWyc6ICNtYXJrZWQgc2VjdGlvbgogICAgICAgICAgICAjIExvY2F0ZSBbc3RhdHVzV29yZCBbLi4uYXJiaXRyYXJ5IFNHTUwuLi5dXSBhcyB0aGUgYm9keSBvZiB0aGUgbWFya2VkIHNlY3Rpb24KICAgICAgICAgICAgIyBXaGVyZSBzdGF0dXNXb3JkIGlzIG9uZSBvZiBURU1QLCBDREFUQSwgSUdOT1JFLCBJTkNMVURFLCBSQ0RBVEEKICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBpcyBleHRlbmRlZCBieSBNaWNyb3NvZnQgT2ZmaWNlICJTYXZlIGFzIFdlYiIgZnVuY3Rpb24KICAgICAgICAgICAgIyB0byBpbmNsdWRlIFtpZi4uLl0gYW5kIFtlbmRpZl0uCiAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX21hcmtlZF9zZWN0aW9uKGkpCiAgICAgICAgZWxzZTogI2FsbCBvdGhlciBkZWNsYXJhdGlvbiBlbGVtZW50cwogICAgICAgICAgICBkZWNsdHlwZSwgaiA9IHNlbGYuX3NjYW5fbmFtZShqLCBpKQogICAgICAgIGlmIGogPCAwOgogICAgICAgICAgICByZXR1cm4gagogICAgICAgIGlmIGRlY2x0eXBlID09ICJkb2N0eXBlIjoKICAgICAgICAgICAgc2VsZi5fZGVjbF9vdGhlcmNoYXJzID0gJycKICAgICAgICB3aGlsZSBqIDwgbjoKICAgICAgICAgICAgYyA9IHJhd2RhdGFbal0KICAgICAgICAgICAgaWYgYyA9PSAiPiI6CiAgICAgICAgICAgICAgICAjIGVuZCBvZiBkZWNsYXJhdGlvbiBzeW50YXgKICAgICAgICAgICAgICAgIGRhdGEgPSByYXdkYXRhW2krMjpqXQogICAgICAgICAgICAgICAgaWYgZGVjbHR5cGUgPT0gImRvY3R5cGUiOgogICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RlY2woZGF0YSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBBY2NvcmRpbmcgdG8gdGhlIEhUTUw1IHNwZWNzIHNlY3Rpb25zICI4LjIuNC40NCBCb2d1cwogICAgICAgICAgICAgICAgICAgICMgY29tbWVudCBzdGF0ZSIgYW5kICI4LjIuNC40NSBNYXJrdXAgZGVjbGFyYXRpb24gb3BlbgogICAgICAgICAgICAgICAgICAgICMgc3RhdGUiLCBhIGNvbW1lbnQgdG9rZW4gc2hvdWxkIGJlIGVtaXR0ZWQuCiAgICAgICAgICAgICAgICAgICAgIyBDYWxsaW5nIHVua25vd25fZGVjbCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IHRob3VnaC4KICAgICAgICAgICAgICAgICAgICBzZWxmLnVua25vd25fZGVjbChkYXRhKQogICAgICAgICAgICAgICAgcmV0dXJuIGogKyAxCiAgICAgICAgICAgIGlmIGMgaW4gIlwiJyI6CiAgICAgICAgICAgICAgICBtID0gX2RlY2xzdHJpbmdsaXRfbWF0Y2gocmF3ZGF0YSwgaikKICAgICAgICAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSAjIGluY29tcGxldGUKICAgICAgICAgICAgICAgIGogPSBtLmVuZCgpCiAgICAgICAgICAgIGVsaWYgYyBpbiAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI6CiAgICAgICAgICAgICAgICBuYW1lLCBqID0gc2VsZi5fc2Nhbl9uYW1lKGosIGkpCiAgICAgICAgICAgIGVsaWYgYyBpbiBzZWxmLl9kZWNsX290aGVyY2hhcnM6CiAgICAgICAgICAgICAgICBqID0gaiArIDEKICAgICAgICAgICAgZWxpZiBjID09ICJbIjoKICAgICAgICAgICAgICAgICMgdGhpcyBjb3VsZCBiZSBoYW5kbGVkIGluIGEgc2VwYXJhdGUgZG9jdHlwZSBwYXJzZXIKICAgICAgICAgICAgICAgIGlmIGRlY2x0eXBlID09ICJkb2N0eXBlIjoKICAgICAgICAgICAgICAgICAgICBqID0gc2VsZi5fcGFyc2VfZG9jdHlwZV9zdWJzZXQoaiArIDEsIGkpCiAgICAgICAgICAgICAgICBlbGlmIGRlY2x0eXBlIGluIHsiYXR0bGlzdCIsICJsaW5rdHlwZSIsICJsaW5rIiwgImVsZW1lbnQifToKICAgICAgICAgICAgICAgICAgICAjIG11c3QgdG9sZXJhdGUgW10nZCBncm91cHMgaW4gYSBjb250ZW50IG1vZGVsIGluIGFuIGVsZW1lbnQgZGVjbGFyYXRpb24KICAgICAgICAgICAgICAgICAgICAjIGFsc28gaW4gZGF0YSBhdHRyaWJ1dGUgc3BlY2lmaWNhdGlvbnMgb2YgYXR0bGlzdCBkZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgICAgICMgYWxzbyBsaW5rIHR5cGUgZGVjbGFyYXRpb24gc3Vic2V0cyBpbiBsaW5rdHlwZSBkZWNsYXJhdGlvbnMKICAgICAgICAgICAgICAgICAgICAjIGFsc28gbGluayBhdHRyaWJ1dGUgc3BlY2lmaWNhdGlvbiBsaXN0cyBpbiBsaW5rIGRlY2xhcmF0aW9ucwogICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ1bnN1cHBvcnRlZCAnWycgY2hhciBpbiAlcyBkZWNsYXJhdGlvbiIgJSBkZWNsdHlwZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuZXhwZWN0ZWQgJ1snIGNoYXIgaW4gZGVjbGFyYXRpb24iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuZXhwZWN0ZWQgJXIgY2hhciBpbiBkZWNsYXJhdGlvbiIgJSByYXdkYXRhW2pdKQogICAgICAgICAgICBpZiBqIDwgMDoKICAgICAgICAgICAgICAgIHJldHVybiBqCiAgICAgICAgcmV0dXJuIC0xICMgaW5jb21wbGV0ZQoKICAgICMgSW50ZXJuYWwgLS0gcGFyc2UgYSBtYXJrZWQgc2VjdGlvbgogICAgIyBPdmVycmlkZSB0aGlzIHRvIGhhbmRsZSBNUy13b3JkIGV4dGVuc2lvbiBzeW50YXggPCFbaWYgd29yZF0+Y29udGVudDwhW2VuZGlmXT4KICAgIGRlZiBwYXJzZV9tYXJrZWRfc2VjdGlvbihzZWxmLCBpLCByZXBvcnQ9MSk6CiAgICAgICAgcmF3ZGF0YT0gc2VsZi5yYXdkYXRhCiAgICAgICAgYXNzZXJ0IHJhd2RhdGFbaTppKzNdID09ICc8IVsnLCAidW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX21hcmtlZF9zZWN0aW9uKCkiCiAgICAgICAgc2VjdE5hbWUsIGogPSBzZWxmLl9zY2FuX25hbWUoIGkrMywgaSApCiAgICAgICAgaWYgaiA8IDA6CiAgICAgICAgICAgIHJldHVybiBqCiAgICAgICAgaWYgc2VjdE5hbWUgaW4geyJ0ZW1wIiwgImNkYXRhIiwgImlnbm9yZSIsICJpbmNsdWRlIiwgInJjZGF0YSJ9OgogICAgICAgICAgICAjIGxvb2sgZm9yIHN0YW5kYXJkIF1dPiBlbmRpbmcKICAgICAgICAgICAgbWF0Y2g9IF9tYXJrZWRzZWN0aW9uY2xvc2Uuc2VhcmNoKHJhd2RhdGEsIGkrMykKICAgICAgICBlbGlmIHNlY3ROYW1lIGluIHsiaWYiLCAiZWxzZSIsICJlbmRpZiJ9OgogICAgICAgICAgICAjIGxvb2sgZm9yIE1TIE9mZmljZSBdPiBlbmRpbmcKICAgICAgICAgICAgbWF0Y2g9IF9tc21hcmtlZHNlY3Rpb25jbG9zZS5zZWFyY2gocmF3ZGF0YSwgaSszKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgJ3Vua25vd24gc3RhdHVzIGtleXdvcmQgJXIgaW4gbWFya2VkIHNlY3Rpb24nICUgcmF3ZGF0YVtpKzM6al0KICAgICAgICAgICAgKQogICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgaWYgcmVwb3J0OgogICAgICAgICAgICBqID0gbWF0Y2guc3RhcnQoMCkKICAgICAgICAgICAgc2VsZi51bmtub3duX2RlY2wocmF3ZGF0YVtpKzM6IGpdKQogICAgICAgIHJldHVybiBtYXRjaC5lbmQoMCkKCiAgICAjIEludGVybmFsIC0tIHBhcnNlIGNvbW1lbnQsIHJldHVybiBsZW5ndGggb3IgLTEgaWYgbm90IHRlcm1pbmF0ZWQKICAgIGRlZiBwYXJzZV9jb21tZW50KHNlbGYsIGksIHJlcG9ydD0xKToKICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCiAgICAgICAgaWYgcmF3ZGF0YVtpOmkrNF0gIT0gJzwhLS0nOgogICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigndW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX2NvbW1lbnQoKScpCiAgICAgICAgbWF0Y2ggPSBfY29tbWVudGNsb3NlLnNlYXJjaChyYXdkYXRhLCBpKzQpCiAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICBpZiByZXBvcnQ6CiAgICAgICAgICAgIGogPSBtYXRjaC5zdGFydCgwKQogICAgICAgICAgICBzZWxmLmhhbmRsZV9jb21tZW50KHJhd2RhdGFbaSs0OiBqXSkKICAgICAgICByZXR1cm4gbWF0Y2guZW5kKDApCgogICAgIyBJbnRlcm5hbCAtLSBzY2FuIHBhc3QgdGhlIGludGVybmFsIHN1YnNldCBpbiBhIDwhRE9DVFlQRSBkZWNsYXJhdGlvbiwKICAgICMgcmV0dXJuaW5nIHRoZSBpbmRleCBqdXN0IHBhc3QgYW55IHdoaXRlc3BhY2UgZm9sbG93aW5nIHRoZSB0cmFpbGluZyAnXScuCiAgICBkZWYgX3BhcnNlX2RvY3R5cGVfc3Vic2V0KHNlbGYsIGksIGRlY2xzdGFydHBvcyk6CiAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQogICAgICAgIG4gPSBsZW4ocmF3ZGF0YSkKICAgICAgICBqID0gaQogICAgICAgIHdoaWxlIGogPCBuOgogICAgICAgICAgICBjID0gcmF3ZGF0YVtqXQogICAgICAgICAgICBpZiBjID09ICI8IjoKICAgICAgICAgICAgICAgIHMgPSByYXdkYXRhW2o6aisyXQogICAgICAgICAgICAgICAgaWYgcyA9PSAiPCI6CiAgICAgICAgICAgICAgICAgICAgIyBlbmQgb2YgYnVmZmVyOyBpbmNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICBpZiBzICE9ICI8ISI6CiAgICAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVwb3MoZGVjbHN0YXJ0cG9zLCBqICsgMSkKICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgY2hhciBpbiBpbnRlcm5hbCBzdWJzZXQgKGluICVyKSIgJSBzCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgaWYgKGogKyAyKSA9PSBuOgogICAgICAgICAgICAgICAgICAgICMgZW5kIG9mIGJ1ZmZlcjsgaW5jb21wbGV0ZQogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICAgICAgaWYgKGogKyA0KSA+IG46CiAgICAgICAgICAgICAgICAgICAgIyBlbmQgb2YgYnVmZmVyOyBpbmNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICBpZiByYXdkYXRhW2o6ais0XSA9PSAiPCEtLSI6CiAgICAgICAgICAgICAgICAgICAgaiA9IHNlbGYucGFyc2VfY29tbWVudChqLCByZXBvcnQ9MCkKICAgICAgICAgICAgICAgICAgICBpZiBqIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGoKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgbmFtZSwgaiA9IHNlbGYuX3NjYW5fbmFtZShqICsgMiwgZGVjbHN0YXJ0cG9zKQogICAgICAgICAgICAgICAgaWYgaiA9PSAtMToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHsiYXR0bGlzdCIsICJlbGVtZW50IiwgImVudGl0eSIsICJub3RhdGlvbiJ9OgogICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlcG9zKGRlY2xzdGFydHBvcywgaiArIDIpCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIGRlY2xhcmF0aW9uICVyIGluIGludGVybmFsIHN1YnNldCIgJSBuYW1lCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIyBoYW5kbGUgdGhlIGluZGl2aWR1YWwgbmFtZXMKICAgICAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICJfcGFyc2VfZG9jdHlwZV8iICsgbmFtZSkKICAgICAgICAgICAgICAgIGogPSBtZXRoKGosIGRlY2xzdGFydHBvcykKICAgICAgICAgICAgICAgIGlmIGogPCAwOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBqCiAgICAgICAgICAgIGVsaWYgYyA9PSAiJSI6CiAgICAgICAgICAgICAgICAjIHBhcmFtZXRlciBlbnRpdHkgcmVmZXJlbmNlCiAgICAgICAgICAgICAgICBpZiAoaiArIDEpID09IG46CiAgICAgICAgICAgICAgICAgICAgIyBlbmQgb2YgYnVmZmVyOyBpbmNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICBzLCBqID0gc2VsZi5fc2Nhbl9uYW1lKGogKyAxLCBkZWNsc3RhcnRwb3MpCiAgICAgICAgICAgICAgICBpZiBqIDwgMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gagogICAgICAgICAgICAgICAgaWYgcmF3ZGF0YVtqXSA9PSAiOyI6CiAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAxCiAgICAgICAgICAgIGVsaWYgYyA9PSAiXSI6CiAgICAgICAgICAgICAgICBqID0gaiArIDEKICAgICAgICAgICAgICAgIHdoaWxlIGogPCBuIGFuZCByYXdkYXRhW2pdLmlzc3BhY2UoKToKICAgICAgICAgICAgICAgICAgICBqID0gaiArIDEKICAgICAgICAgICAgICAgIGlmIGogPCBuOgogICAgICAgICAgICAgICAgICAgIGlmIHJhd2RhdGFbal0gPT0gIj4iOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gagogICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlcG9zKGRlY2xzdGFydHBvcywgaikKICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigidW5leHBlY3RlZCBjaGFyIGFmdGVyIGludGVybmFsIHN1YnNldCIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICBlbGlmIGMuaXNzcGFjZSgpOgogICAgICAgICAgICAgICAgaiA9IGogKyAxCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZXBvcyhkZWNsc3RhcnRwb3MsIGopCiAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigidW5leHBlY3RlZCBjaGFyICVyIGluIGludGVybmFsIHN1YnNldCIgJSBjKQogICAgICAgICMgZW5kIG9mIGJ1ZmZlciByZWFjaGVkCiAgICAgICAgcmV0dXJuIC0xCgogICAgIyBJbnRlcm5hbCAtLSBzY2FuIHBhc3QgPCFFTEVNRU5UIGRlY2xhcmF0aW9ucwogICAgZGVmIF9wYXJzZV9kb2N0eXBlX2VsZW1lbnQoc2VsZiwgaSwgZGVjbHN0YXJ0cG9zKToKICAgICAgICBuYW1lLCBqID0gc2VsZi5fc2Nhbl9uYW1lKGksIGRlY2xzdGFydHBvcykKICAgICAgICBpZiBqID09IC0xOgogICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAjIHN0eWxlIGNvbnRlbnQgbW9kZWw7IGp1c3Qgc2tpcCB1bnRpbCAnPicKICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCiAgICAgICAgaWYgJz4nIGluIHJhd2RhdGFbajpdOgogICAgICAgICAgICByZXR1cm4gcmF3ZGF0YS5maW5kKCI+IiwgaikgKyAxCiAgICAgICAgcmV0dXJuIC0xCgogICAgIyBJbnRlcm5hbCAtLSBzY2FuIHBhc3QgPCFBVFRMSVNUIGRlY2xhcmF0aW9ucwogICAgZGVmIF9wYXJzZV9kb2N0eXBlX2F0dGxpc3Qoc2VsZiwgaSwgZGVjbHN0YXJ0cG9zKToKICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCiAgICAgICAgbmFtZSwgaiA9IHNlbGYuX3NjYW5fbmFtZShpLCBkZWNsc3RhcnRwb3MpCiAgICAgICAgYyA9IHJhd2RhdGFbajpqKzFdCiAgICAgICAgaWYgYyA9PSAiIjoKICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgaWYgYyA9PSAiPiI6CiAgICAgICAgICAgIHJldHVybiBqICsgMQogICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICMgc2NhbiBhIHNlcmllcyBvZiBhdHRyaWJ1dGUgZGVzY3JpcHRpb25zOyBzaW1wbGlmaWVkOgogICAgICAgICAgICAjICAgbmFtZSB0eXBlIFt2YWx1ZV0gWyNjb25zdHJhaW50XQogICAgICAgICAgICBuYW1lLCBqID0gc2VsZi5fc2Nhbl9uYW1lKGosIGRlY2xzdGFydHBvcykKICAgICAgICAgICAgaWYgaiA8IDA6CiAgICAgICAgICAgICAgICByZXR1cm4gagogICAgICAgICAgICBjID0gcmF3ZGF0YVtqOmorMV0KICAgICAgICAgICAgaWYgYyA9PSAiIjoKICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICBpZiBjID09ICIoIjoKICAgICAgICAgICAgICAgICMgYW4gZW51bWVyYXRlZCB0eXBlOyBsb29rIGZvciAnKScKICAgICAgICAgICAgICAgIGlmICIpIiBpbiByYXdkYXRhW2o6XToKICAgICAgICAgICAgICAgICAgICBqID0gcmF3ZGF0YS5maW5kKCIpIiwgaikgKyAxCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICAgICAgd2hpbGUgcmF3ZGF0YVtqOmorMV0uaXNzcGFjZSgpOgogICAgICAgICAgICAgICAgICAgIGogPSBqICsgMQogICAgICAgICAgICAgICAgaWYgbm90IHJhd2RhdGFbajpdOgogICAgICAgICAgICAgICAgICAgICMgZW5kIG9mIGJ1ZmZlciwgaW5jb21wbGV0ZQogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbmFtZSwgaiA9IHNlbGYuX3NjYW5fbmFtZShqLCBkZWNsc3RhcnRwb3MpCiAgICAgICAgICAgIGMgPSByYXdkYXRhW2o6aisxXQogICAgICAgICAgICBpZiBub3QgYzoKICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICBpZiBjIGluICInXCIiOgogICAgICAgICAgICAgICAgbSA9IF9kZWNsc3RyaW5nbGl0X21hdGNoKHJhd2RhdGEsIGopCiAgICAgICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgICAgIGogPSBtLmVuZCgpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICAgICAgYyA9IHJhd2RhdGFbajpqKzFdCiAgICAgICAgICAgICAgICBpZiBub3QgYzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgaWYgYyA9PSAiIyI6CiAgICAgICAgICAgICAgICBpZiByYXdkYXRhW2o6XSA9PSAiIyI6CiAgICAgICAgICAgICAgICAgICAgIyBlbmQgb2YgYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICBuYW1lLCBqID0gc2VsZi5fc2Nhbl9uYW1lKGogKyAxLCBkZWNsc3RhcnRwb3MpCiAgICAgICAgICAgICAgICBpZiBqIDwgMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gagogICAgICAgICAgICAgICAgYyA9IHJhd2RhdGFbajpqKzFdCiAgICAgICAgICAgICAgICBpZiBub3QgYzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgaWYgYyA9PSAnPic6CiAgICAgICAgICAgICAgICAjIGFsbCBkb25lCiAgICAgICAgICAgICAgICByZXR1cm4gaiArIDEKCiAgICAjIEludGVybmFsIC0tIHNjYW4gcGFzdCA8IU5PVEFUSU9OIGRlY2xhcmF0aW9ucwogICAgZGVmIF9wYXJzZV9kb2N0eXBlX25vdGF0aW9uKHNlbGYsIGksIGRlY2xzdGFydHBvcyk6CiAgICAgICAgbmFtZSwgaiA9IHNlbGYuX3NjYW5fbmFtZShpLCBkZWNsc3RhcnRwb3MpCiAgICAgICAgaWYgaiA8IDA6CiAgICAgICAgICAgIHJldHVybiBqCiAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQogICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgIGMgPSByYXdkYXRhW2o6aisxXQogICAgICAgICAgICBpZiBub3QgYzoKICAgICAgICAgICAgICAgICMgZW5kIG9mIGJ1ZmZlcjsgaW5jb21wbGV0ZQogICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgIGlmIGMgPT0gJz4nOgogICAgICAgICAgICAgICAgcmV0dXJuIGogKyAxCiAgICAgICAgICAgIGlmIGMgaW4gIidcIiI6CiAgICAgICAgICAgICAgICBtID0gX2RlY2xzdHJpbmdsaXRfbWF0Y2gocmF3ZGF0YSwgaikKICAgICAgICAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICAgICAgaiA9IG0uZW5kKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG5hbWUsIGogPSBzZWxmLl9zY2FuX25hbWUoaiwgZGVjbHN0YXJ0cG9zKQogICAgICAgICAgICAgICAgaWYgaiA8IDA6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGoKCiAgICAjIEludGVybmFsIC0tIHNjYW4gcGFzdCA8IUVOVElUWSBkZWNsYXJhdGlvbnMKICAgIGRlZiBfcGFyc2VfZG9jdHlwZV9lbnRpdHkoc2VsZiwgaSwgZGVjbHN0YXJ0cG9zKToKICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCiAgICAgICAgaWYgcmF3ZGF0YVtpOmkrMV0gPT0gIiUiOgogICAgICAgICAgICBqID0gaSArIDEKICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgIGMgPSByYXdkYXRhW2o6aisxXQogICAgICAgICAgICAgICAgaWYgbm90IGM6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICBpZiBjLmlzc3BhY2UoKToKICAgICAgICAgICAgICAgICAgICBqID0gaiArIDEKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICBqID0gaQogICAgICAgIG5hbWUsIGogPSBzZWxmLl9zY2FuX25hbWUoaiwgZGVjbHN0YXJ0cG9zKQogICAgICAgIGlmIGogPCAwOgogICAgICAgICAgICByZXR1cm4gagogICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgIGMgPSBzZWxmLnJhd2RhdGFbajpqKzFdCiAgICAgICAgICAgIGlmIG5vdCBjOgogICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgIGlmIGMgaW4gIidcIiI6CiAgICAgICAgICAgICAgICBtID0gX2RlY2xzdHJpbmdsaXRfbWF0Y2gocmF3ZGF0YSwgaikKICAgICAgICAgICAgICAgIGlmIG06CiAgICAgICAgICAgICAgICAgICAgaiA9IG0uZW5kKCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xICAgICMgaW5jb21wbGV0ZQogICAgICAgICAgICBlbGlmIGMgPT0gIj4iOgogICAgICAgICAgICAgICAgcmV0dXJuIGogKyAxCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBuYW1lLCBqID0gc2VsZi5fc2Nhbl9uYW1lKGosIGRlY2xzdGFydHBvcykKICAgICAgICAgICAgICAgIGlmIGogPCAwOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBqCgogICAgIyBJbnRlcm5hbCAtLSBzY2FuIGEgbmFtZSB0b2tlbiBhbmQgdGhlIG5ldyBwb3NpdGlvbiBhbmQgdGhlIHRva2VuLCBvcgogICAgIyByZXR1cm4gLTEgaWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuCiAgICBkZWYgX3NjYW5fbmFtZShzZWxmLCBpLCBkZWNsc3RhcnRwb3MpOgogICAgICAgIHJhd2RhdGEgPSBzZWxmLnJhd2RhdGEKICAgICAgICBuID0gbGVuKHJhd2RhdGEpCiAgICAgICAgaWYgaSA9PSBuOgogICAgICAgICAgICByZXR1cm4gTm9uZSwgLTEKICAgICAgICBtID0gX2RlY2xuYW1lX21hdGNoKHJhd2RhdGEsIGkpCiAgICAgICAgaWYgbToKICAgICAgICAgICAgcyA9IG0uZ3JvdXAoKQogICAgICAgICAgICBuYW1lID0gcy5zdHJpcCgpCiAgICAgICAgICAgIGlmIChpICsgbGVuKHMpKSA9PSBuOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIC0xICAjIGVuZCBvZiBidWZmZXIKICAgICAgICAgICAgcmV0dXJuIG5hbWUubG93ZXIoKSwgbS5lbmQoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYudXBkYXRlcG9zKGRlY2xzdGFydHBvcywgaSkKICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbmFtZSB0b2tlbiBhdCAlciIgJSByYXdkYXRhW2RlY2xzdGFydHBvczpkZWNsc3RhcnRwb3MrMjBdCiAgICAgICAgICAgICkKCiAgICAjIFRvIGJlIG92ZXJyaWRkZW4gLS0gaGFuZGxlcnMgZm9yIHVua25vd24gb2JqZWN0cwogICAgZGVmIHVua25vd25fZGVjbChzZWxmLCBkYXRhKToKICAgICAgICBwYXNzClBLAwQUAAAAAAACIKNWbHKkiS0YAAAtGAAACgAAAF9weV9hYmMucHlmcm9tIF93ZWFrcmVmc2V0IGltcG9ydCBXZWFrU2V0CgoKZGVmIGdldF9jYWNoZV90b2tlbigpOgogICAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBBQkMgY2FjaGUgdG9rZW4uCgogICAgVGhlIHRva2VuIGlzIGFuIG9wYXF1ZSBvYmplY3QgKHN1cHBvcnRpbmcgZXF1YWxpdHkgdGVzdGluZykgaWRlbnRpZnlpbmcgdGhlCiAgICBjdXJyZW50IHZlcnNpb24gb2YgdGhlIEFCQyBjYWNoZSBmb3IgdmlydHVhbCBzdWJjbGFzc2VzLiBUaGUgdG9rZW4gY2hhbmdlcwogICAgd2l0aCBldmVyeSBjYWxsIHRvIGBgcmVnaXN0ZXIoKWBgIG9uIGFueSBBQkMuCiAgICAiIiIKICAgIHJldHVybiBBQkNNZXRhLl9hYmNfaW52YWxpZGF0aW9uX2NvdW50ZXIKCgpjbGFzcyBBQkNNZXRhKHR5cGUpOgogICAgIiIiTWV0YWNsYXNzIGZvciBkZWZpbmluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpLgoKICAgIFVzZSB0aGlzIG1ldGFjbGFzcyB0byBjcmVhdGUgYW4gQUJDLiAgQW4gQUJDIGNhbiBiZSBzdWJjbGFzc2VkCiAgICBkaXJlY3RseSwgYW5kIHRoZW4gYWN0cyBhcyBhIG1peC1pbiBjbGFzcy4gIFlvdSBjYW4gYWxzbyByZWdpc3RlcgogICAgdW5yZWxhdGVkIGNvbmNyZXRlIGNsYXNzZXMgKGV2ZW4gYnVpbHQtaW4gY2xhc3NlcykgYW5kIHVucmVsYXRlZAogICAgQUJDcyBhcyAndmlydHVhbCBzdWJjbGFzc2VzJyAtLSB0aGVzZSBhbmQgdGhlaXIgZGVzY2VuZGFudHMgd2lsbAogICAgYmUgY29uc2lkZXJlZCBzdWJjbGFzc2VzIG9mIHRoZSByZWdpc3RlcmluZyBBQkMgYnkgdGhlIGJ1aWx0LWluCiAgICBpc3N1YmNsYXNzKCkgZnVuY3Rpb24sIGJ1dCB0aGUgcmVnaXN0ZXJpbmcgQUJDIHdvbid0IHNob3cgdXAgaW4KICAgIHRoZWlyIE1STyAoTWV0aG9kIFJlc29sdXRpb24gT3JkZXIpIG5vciB3aWxsIG1ldGhvZAogICAgaW1wbGVtZW50YXRpb25zIGRlZmluZWQgYnkgdGhlIHJlZ2lzdGVyaW5nIEFCQyBiZSBjYWxsYWJsZSAobm90CiAgICBldmVuIHZpYSBzdXBlcigpKS4KICAgICIiIgoKICAgICMgQSBnbG9iYWwgY291bnRlciB0aGF0IGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIGNsYXNzIGlzCiAgICAjIHJlZ2lzdGVyZWQgYXMgYSB2aXJ0dWFsIHN1YmNsYXNzIG9mIGFueXRoaW5nLiAgSXQgZm9yY2VzIHRoZQogICAgIyBuZWdhdGl2ZSBjYWNoZSB0byBiZSBjbGVhcmVkIGJlZm9yZSBpdHMgbmV4dCB1c2UuCiAgICAjIE5vdGU6IHRoaXMgY291bnRlciBpcyBwcml2YXRlLiBVc2UgYGFiYy5nZXRfY2FjaGVfdG9rZW4oKWAgZm9yCiAgICAjICAgICAgIGV4dGVybmFsIGNvZGUuCiAgICBfYWJjX2ludmFsaWRhdGlvbl9jb3VudGVyID0gMAoKICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIC8sICoqa3dhcmdzKToKICAgICAgICBjbHMgPSBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2FyZ3MpCiAgICAgICAgIyBDb21wdXRlIHNldCBvZiBhYnN0cmFjdCBtZXRob2QgbmFtZXMKICAgICAgICBhYnN0cmFjdHMgPSB7bmFtZQogICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbmFtZXNwYWNlLml0ZW1zKCkKICAgICAgICAgICAgICAgICAgICAgaWYgZ2V0YXR0cih2YWx1ZSwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpfQogICAgICAgIGZvciBiYXNlIGluIGJhc2VzOgogICAgICAgICAgICBmb3IgbmFtZSBpbiBnZXRhdHRyKGJhc2UsICJfX2Fic3RyYWN0bWV0aG9kc19fIiwgc2V0KCkpOgogICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKGNscywgbmFtZSwgTm9uZSkKICAgICAgICAgICAgICAgIGlmIGdldGF0dHIodmFsdWUsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKToKICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdHMuYWRkKG5hbWUpCiAgICAgICAgY2xzLl9fYWJzdHJhY3RtZXRob2RzX18gPSBmcm96ZW5zZXQoYWJzdHJhY3RzKQogICAgICAgICMgU2V0IHVwIGluaGVyaXRhbmNlIHJlZ2lzdHJ5CiAgICAgICAgY2xzLl9hYmNfcmVnaXN0cnkgPSBXZWFrU2V0KCkKICAgICAgICBjbHMuX2FiY19jYWNoZSA9IFdlYWtTZXQoKQogICAgICAgIGNscy5fYWJjX25lZ2F0aXZlX2NhY2hlID0gV2Vha1NldCgpCiAgICAgICAgY2xzLl9hYmNfbmVnYXRpdmVfY2FjaGVfdmVyc2lvbiA9IEFCQ01ldGEuX2FiY19pbnZhbGlkYXRpb25fY291bnRlcgogICAgICAgIHJldHVybiBjbHMKCiAgICBkZWYgcmVnaXN0ZXIoY2xzLCBzdWJjbGFzcyk6CiAgICAgICAgIiIiUmVnaXN0ZXIgYSB2aXJ0dWFsIHN1YmNsYXNzIG9mIGFuIEFCQy4KCiAgICAgICAgUmV0dXJucyB0aGUgc3ViY2xhc3MsIHRvIGFsbG93IHVzYWdlIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1YmNsYXNzLCB0eXBlKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4gb25seSByZWdpc3RlciBjbGFzc2VzIikKICAgICAgICBpZiBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbHMpOgogICAgICAgICAgICByZXR1cm4gc3ViY2xhc3MgICMgQWxyZWFkeSBhIHN1YmNsYXNzCiAgICAgICAgIyBTdWJ0bGU6IHRlc3QgZm9yIGN5Y2xlcyAqYWZ0ZXIqIHRlc3RpbmcgZm9yICJhbHJlYWR5IGEgc3ViY2xhc3MiOwogICAgICAgICMgdGhpcyBtZWFucyB3ZSBhbGxvdyBYLnJlZ2lzdGVyKFgpIGFuZCBpbnRlcnByZXQgaXQgYXMgYSBuby1vcC4KICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgc3ViY2xhc3MpOgogICAgICAgICAgICAjIFRoaXMgd291bGQgY3JlYXRlIGEgY3ljbGUsIHdoaWNoIGlzIGJhZCBmb3IgdGhlIGFsZ29yaXRobSBiZWxvdwogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlJlZnVzaW5nIHRvIGNyZWF0ZSBhbiBpbmhlcml0YW5jZSBjeWNsZSIpCiAgICAgICAgY2xzLl9hYmNfcmVnaXN0cnkuYWRkKHN1YmNsYXNzKQogICAgICAgIEFCQ01ldGEuX2FiY19pbnZhbGlkYXRpb25fY291bnRlciArPSAxICAjIEludmFsaWRhdGUgbmVnYXRpdmUgY2FjaGUKICAgICAgICByZXR1cm4gc3ViY2xhc3MKCiAgICBkZWYgX2R1bXBfcmVnaXN0cnkoY2xzLCBmaWxlPU5vbmUpOgogICAgICAgICIiIkRlYnVnIGhlbHBlciB0byBwcmludCB0aGUgQUJDIHJlZ2lzdHJ5LiIiIgogICAgICAgIHByaW50KGYiQ2xhc3M6IHtjbHMuX19tb2R1bGVfX30ue2Nscy5fX3F1YWxuYW1lX199IiwgZmlsZT1maWxlKQogICAgICAgIHByaW50KGYiSW52LiBjb3VudGVyOiB7Z2V0X2NhY2hlX3Rva2VuKCl9IiwgZmlsZT1maWxlKQogICAgICAgIGZvciBuYW1lIGluIGNscy5fX2RpY3RfXzoKICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJfYWJjXyIpOgogICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKGNscywgbmFtZSkKICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIFdlYWtTZXQpOgogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2V0KHZhbHVlKQogICAgICAgICAgICAgICAgcHJpbnQoZiJ7bmFtZX06IHt2YWx1ZSFyfSIsIGZpbGU9ZmlsZSkKCiAgICBkZWYgX2FiY19yZWdpc3RyeV9jbGVhcihjbHMpOgogICAgICAgICIiIkNsZWFyIHRoZSByZWdpc3RyeSAoZm9yIGRlYnVnZ2luZyBvciB0ZXN0aW5nKS4iIiIKICAgICAgICBjbHMuX2FiY19yZWdpc3RyeS5jbGVhcigpCgogICAgZGVmIF9hYmNfY2FjaGVzX2NsZWFyKGNscyk6CiAgICAgICAgIiIiQ2xlYXIgdGhlIGNhY2hlcyAoZm9yIGRlYnVnZ2luZyBvciB0ZXN0aW5nKS4iIiIKICAgICAgICBjbHMuX2FiY19jYWNoZS5jbGVhcigpCiAgICAgICAgY2xzLl9hYmNfbmVnYXRpdmVfY2FjaGUuY2xlYXIoKQoKICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhjbHMsIGluc3RhbmNlKToKICAgICAgICAiIiJPdmVycmlkZSBmb3IgaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xzKS4iIiIKICAgICAgICAjIElubGluZSB0aGUgY2FjaGUgY2hlY2tpbmcKICAgICAgICBzdWJjbGFzcyA9IGluc3RhbmNlLl9fY2xhc3NfXwogICAgICAgIGlmIHN1YmNsYXNzIGluIGNscy5fYWJjX2NhY2hlOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHN1YnR5cGUgPSB0eXBlKGluc3RhbmNlKQogICAgICAgIGlmIHN1YnR5cGUgaXMgc3ViY2xhc3M6CiAgICAgICAgICAgIGlmIChjbHMuX2FiY19uZWdhdGl2ZV9jYWNoZV92ZXJzaW9uID09CiAgICAgICAgICAgICAgICBBQkNNZXRhLl9hYmNfaW52YWxpZGF0aW9uX2NvdW50ZXIgYW5kCiAgICAgICAgICAgICAgICBzdWJjbGFzcyBpbiBjbHMuX2FiY19uZWdhdGl2ZV9jYWNoZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIyBGYWxsIGJhY2sgdG8gdGhlIHN1YmNsYXNzIGNoZWNrLgogICAgICAgICAgICByZXR1cm4gY2xzLl9fc3ViY2xhc3NjaGVja19fKHN1YmNsYXNzKQogICAgICAgIHJldHVybiBhbnkoY2xzLl9fc3ViY2xhc3NjaGVja19fKGMpIGZvciBjIGluIChzdWJjbGFzcywgc3VidHlwZSkpCgogICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKGNscywgc3ViY2xhc3MpOgogICAgICAgICIiIk92ZXJyaWRlIGZvciBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbHMpLiIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1YmNsYXNzLCB0eXBlKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdpc3N1YmNsYXNzKCkgYXJnIDEgbXVzdCBiZSBhIGNsYXNzJykKICAgICAgICAjIENoZWNrIGNhY2hlCiAgICAgICAgaWYgc3ViY2xhc3MgaW4gY2xzLl9hYmNfY2FjaGU6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIyBDaGVjayBuZWdhdGl2ZSBjYWNoZTsgbWF5IGhhdmUgdG8gaW52YWxpZGF0ZQogICAgICAgIGlmIGNscy5fYWJjX25lZ2F0aXZlX2NhY2hlX3ZlcnNpb24gPCBBQkNNZXRhLl9hYmNfaW52YWxpZGF0aW9uX2NvdW50ZXI6CiAgICAgICAgICAgICMgSW52YWxpZGF0ZSB0aGUgbmVnYXRpdmUgY2FjaGUKICAgICAgICAgICAgY2xzLl9hYmNfbmVnYXRpdmVfY2FjaGUgPSBXZWFrU2V0KCkKICAgICAgICAgICAgY2xzLl9hYmNfbmVnYXRpdmVfY2FjaGVfdmVyc2lvbiA9IEFCQ01ldGEuX2FiY19pbnZhbGlkYXRpb25fY291bnRlcgogICAgICAgIGVsaWYgc3ViY2xhc3MgaW4gY2xzLl9hYmNfbmVnYXRpdmVfY2FjaGU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICMgQ2hlY2sgdGhlIHN1YmNsYXNzIGhvb2sKICAgICAgICBvayA9IGNscy5fX3N1YmNsYXNzaG9va19fKHN1YmNsYXNzKQogICAgICAgIGlmIG9rIGlzIG5vdCBOb3RJbXBsZW1lbnRlZDoKICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob2ssIGJvb2wpCiAgICAgICAgICAgIGlmIG9rOgogICAgICAgICAgICAgICAgY2xzLl9hYmNfY2FjaGUuYWRkKHN1YmNsYXNzKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgY2xzLl9hYmNfbmVnYXRpdmVfY2FjaGUuYWRkKHN1YmNsYXNzKQogICAgICAgICAgICByZXR1cm4gb2sKICAgICAgICAjIENoZWNrIGlmIGl0J3MgYSBkaXJlY3Qgc3ViY2xhc3MKICAgICAgICBpZiBjbHMgaW4gZ2V0YXR0cihzdWJjbGFzcywgJ19fbXJvX18nLCAoKSk6CiAgICAgICAgICAgIGNscy5fYWJjX2NhY2hlLmFkZChzdWJjbGFzcykKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAjIENoZWNrIGlmIGl0J3MgYSBzdWJjbGFzcyBvZiBhIHJlZ2lzdGVyZWQgY2xhc3MgKHJlY3Vyc2l2ZSkKICAgICAgICBmb3IgcmNscyBpbiBjbHMuX2FiY19yZWdpc3RyeToKICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhzdWJjbGFzcywgcmNscyk6CiAgICAgICAgICAgICAgICBjbHMuX2FiY19jYWNoZS5hZGQoc3ViY2xhc3MpCiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICMgQ2hlY2sgaWYgaXQncyBhIHN1YmNsYXNzIG9mIGEgc3ViY2xhc3MgKHJlY3Vyc2l2ZSkKICAgICAgICBmb3Igc2NscyBpbiBjbHMuX19zdWJjbGFzc2VzX18oKToKICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhzdWJjbGFzcywgc2Nscyk6CiAgICAgICAgICAgICAgICBjbHMuX2FiY19jYWNoZS5hZGQoc3ViY2xhc3MpCiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICMgTm8gZGljZTsgdXBkYXRlIG5lZ2F0aXZlIGNhY2hlCiAgICAgICAgY2xzLl9hYmNfbmVnYXRpdmVfY2FjaGUuYWRkKHN1YmNsYXNzKQogICAgICAgIHJldHVybiBGYWxzZQpQSwMEFAAAAAAAAiCjVvVXoGZUbwEAVG8BAAgAAABfcHlpby5weSIiIgpQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIGlvIG1vZHVsZS4KIiIiCgppbXBvcnQgb3MKaW1wb3J0IGFiYwppbXBvcnQgY29kZWNzCmltcG9ydCBlcnJubwppbXBvcnQgc3RhdAppbXBvcnQgc3lzCiMgSW1wb3J0IF90aHJlYWQgaW5zdGVhZCBvZiB0aHJlYWRpbmcgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdApmcm9tIF90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgTG9jawppZiBzeXMucGxhdGZvcm0gaW4geyd3aW4zMicsICdjeWd3aW4nfToKICAgIGZyb20gbXN2Y3J0IGltcG9ydCBzZXRtb2RlIGFzIF9zZXRtb2RlCmVsc2U6CiAgICBfc2V0bW9kZSA9IE5vbmUKCmltcG9ydCBpbwpmcm9tIGlvIGltcG9ydCAoX19hbGxfXywgU0VFS19TRVQsIFNFRUtfQ1VSLCBTRUVLX0VORCkKCnZhbGlkX3NlZWtfZmxhZ3MgPSB7MCwgMSwgMn0gICMgSGFyZHdpcmVkIHZhbHVlcwppZiBoYXNhdHRyKG9zLCAnU0VFS19IT0xFJykgOgogICAgdmFsaWRfc2Vla19mbGFncy5hZGQob3MuU0VFS19IT0xFKQogICAgdmFsaWRfc2Vla19mbGFncy5hZGQob3MuU0VFS19EQVRBKQoKIyBvcGVuKCkgdXNlcyBzdF9ibGtzaXplIHdoZW5ldmVyIHdlIGNhbgpERUZBVUxUX0JVRkZFUl9TSVpFID0gOCAqIDEwMjQgICMgYnl0ZXMKCiMgTk9URTogQmFzZSBjbGFzc2VzIGRlZmluZWQgaGVyZSBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSAib2ZmaWNpYWwiIEFCQ3MKIyBkZWZpbmVkIGluIGlvLnB5LiBXZSBkb24ndCB1c2UgcmVhbCBpbmhlcml0YW5jZSB0aG91Z2gsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudAojIHRvIGluaGVyaXQgdGhlIEMgaW1wbGVtZW50YXRpb25zLgoKIyBSZWJpbmQgZm9yIGNvbXBhdGliaWxpdHkKQmxvY2tpbmdJT0Vycm9yID0gQmxvY2tpbmdJT0Vycm9yCgojIERvZXMgaW8uSU9CYXNlIGZpbmFsaXplciBsb2cgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgY2xvc2UoKSBtZXRob2QgZmFpbHM/CiMgVGhlIGV4Y2VwdGlvbiBpcyBpZ25vcmVkIHNpbGVudGx5IGJ5IGRlZmF1bHQgaW4gcmVsZWFzZSBidWlsZC4KX0lPQkFTRV9FTUlUU19VTlJBSVNBQkxFID0gKGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpIG9yIHN5cy5mbGFncy5kZXZfbW9kZSkKIyBEb2VzIG9wZW4oKSBjaGVjayBpdHMgJ2Vycm9ycycgYXJndW1lbnQ/Cl9DSEVDS19FUlJPUlMgPSBfSU9CQVNFX0VNSVRTX1VOUkFJU0FCTEUKCgpkZWYgdGV4dF9lbmNvZGluZyhlbmNvZGluZywgc3RhY2tsZXZlbD0yKToKICAgICIiIgogICAgQSBoZWxwZXIgZnVuY3Rpb24gdG8gY2hvb3NlIHRoZSB0ZXh0IGVuY29kaW5nLgoKICAgIFdoZW4gZW5jb2RpbmcgaXMgbm90IE5vbmUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBpdC4KICAgIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBkZWZhdWx0IHRleHQgZW5jb2RpbmcKICAgIChpLmUuICJsb2NhbGUiIG9yICJ1dGYtOCIgZGVwZW5kcyBvbiBVVEYtOCBtb2RlKS4KCiAgICBUaGlzIGZ1bmN0aW9uIGVtaXRzIGFuIEVuY29kaW5nV2FybmluZyBpZiAqZW5jb2RpbmcqIGlzIE5vbmUgYW5kCiAgICBzeXMuZmxhZ3Mud2Fybl9kZWZhdWx0X2VuY29kaW5nIGlzIHRydWUuCgogICAgVGhpcyBjYW4gYmUgdXNlZCBpbiBBUElzIHdpdGggYW4gZW5jb2Rpbmc9Tm9uZSBwYXJhbWV0ZXIKICAgIHRoYXQgcGFzcyBpdCB0byBUZXh0SU9XcmFwcGVyIG9yIG9wZW4uCiAgICBIb3dldmVyLCBwbGVhc2UgY29uc2lkZXIgdXNpbmcgZW5jb2Rpbmc9InV0Zi04IiBmb3IgbmV3IEFQSXMuCiAgICAiIiIKICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgaWYgc3lzLmZsYWdzLnV0ZjhfbW9kZToKICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5jb2RpbmcgPSAibG9jYWxlIgogICAgICAgIGlmIHN5cy5mbGFncy53YXJuX2RlZmF1bHRfZW5jb2Rpbmc6CiAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICB3YXJuaW5ncy53YXJuKCInZW5jb2RpbmcnIGFyZ3VtZW50IG5vdCBzcGVjaWZpZWQuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGluZ1dhcm5pbmcsIHN0YWNrbGV2ZWwgKyAxKQogICAgcmV0dXJuIGVuY29kaW5nCgoKIyBXcmFwcGVyIGZvciBidWlsdGlucy5vcGVuCiMKIyBUcmljayBzbyB0aGF0IG9wZW4oKSB3b24ndCBiZWNvbWUgYSBib3VuZCBtZXRob2Qgd2hlbiBzdG9yZWQKIyBhcyBhIGNsYXNzIHZhcmlhYmxlIChhcyBkYm0uZHVtYiBkb2VzKS4KIwojIFNlZSBpbml0X3NldF9idWlsdGluc19vcGVuKCkgaW4gUHl0aG9uL3B5bGlmZWN5Y2xlLmMuCkBzdGF0aWNtZXRob2QKZGVmIG9wZW4oZmlsZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsCiAgICAgICAgIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSk6CgogICAgciIiIk9wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgT1NFcnJvciB1cG9uIGZhaWx1cmUuCgogICAgZmlsZSBpcyBlaXRoZXIgYSB0ZXh0IG9yIGJ5dGUgc3RyaW5nIGdpdmluZyB0aGUgbmFtZSAoYW5kIHRoZSBwYXRoCiAgICBpZiB0aGUgZmlsZSBpc24ndCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb2YgdGhlIGZpbGUgdG8KICAgIGJlIG9wZW5lZCBvciBhbiBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBiZQogICAgd3JhcHBlZC4gKElmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGUKICAgIHJldHVybmVkIEkvTyBvYmplY3QgaXMgY2xvc2VkLCB1bmxlc3MgY2xvc2VmZCBpcyBzZXQgdG8gRmFsc2UuKQoKICAgIG1vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlIGlzCiAgICBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQgbW9kZS4gT3RoZXIKICAgIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZiBpdCBhbHJlYWR5CiAgICBleGlzdHMpLCAneCcgZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvZiBhIG5ldyBmaWxlLCBhbmQgJ2EnIGZvciBhcHBlbmRpbmcKICAgICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCBhbGwgd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZQogICAgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiBJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzCiAgICBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZAogICAgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZQogICAgYXZhaWxhYmxlIG1vZGVzIGFyZToKCiAgICA9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBDaGFyYWN0ZXIgTWVhbmluZwogICAgLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgJ3InICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpCiAgICAndycgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdAogICAgJ3gnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nCiAgICAnYScgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzCiAgICAnYicgICAgICAgYmluYXJ5IG1vZGUKICAgICd0JyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpCiAgICAnKycgICAgICAgb3BlbiBhIGRpc2sgZmlsZSBmb3IgdXBkYXRpbmcgKHJlYWRpbmcgYW5kIHdyaXRpbmcpCiAgICA9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgVGhlIGRlZmF1bHQgbW9kZSBpcyAncnQnIChvcGVuIGZvciByZWFkaW5nIHRleHQpLiBGb3IgYmluYXJ5IHJhbmRvbQogICAgYWNjZXNzLCB0aGUgbW9kZSAndytiJyBvcGVucyBhbmQgdHJ1bmNhdGVzIHRoZSBmaWxlIHRvIDAgYnl0ZXMsIHdoaWxlCiAgICAncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSAneCcgbW9kZSBpbXBsaWVzICd3JyBhbmQKICAgIHJhaXNlcyBhbiBgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy4KCiAgICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsCiAgICBldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2Vzbid0LiBGaWxlcyBvcGVuZWQgaW4KICAgIGJpbmFyeSBtb2RlIChhcHBlbmRpbmcgJ2InIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSByZXR1cm4gY29udGVudHMgYXMKICAgIGJ5dGVzIG9iamVjdHMgd2l0aG91dCBhbnkgZGVjb2RpbmcuIEluIHRleHQgbW9kZSAodGhlIGRlZmF1bHQsIG9yIHdoZW4KICAgICd0JyBpcyBhcHBlbmRlZCB0byB0aGUgbW9kZSBhcmd1bWVudCksIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhcmUKICAgIHJldHVybmVkIGFzIHN0cmluZ3MsIHRoZSBieXRlcyBoYXZpbmcgYmVlbiBmaXJzdCBkZWNvZGVkIHVzaW5nIGEKICAgIHBsYXRmb3JtLWRlcGVuZGVudCBlbmNvZGluZyBvciB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGlmIGdpdmVuLgoKICAgIGJ1ZmZlcmluZyBpcyBhbiBvcHRpb25hbCBpbnRlZ2VyIHVzZWQgdG8gc2V0IHRoZSBidWZmZXJpbmcgcG9saWN5LgogICAgUGFzcyAwIHRvIHN3aXRjaCBidWZmZXJpbmcgb2ZmIChvbmx5IGFsbG93ZWQgaW4gYmluYXJ5IG1vZGUpLCAxIHRvIHNlbGVjdAogICAgbGluZSBidWZmZXJpbmcgKG9ubHkgdXNhYmxlIGluIHRleHQgbW9kZSksIGFuZCBhbiBpbnRlZ2VyID4gMSB0byBpbmRpY2F0ZQogICAgdGhlIHNpemUgb2YgYSBmaXhlZC1zaXplIGNodW5rIGJ1ZmZlci4gIFdoZW4gbm8gYnVmZmVyaW5nIGFyZ3VtZW50IGlzCiAgICBnaXZlbiwgdGhlIGRlZmF1bHQgYnVmZmVyaW5nIHBvbGljeSB3b3JrcyBhcyBmb2xsb3dzOgoKICAgICogQmluYXJ5IGZpbGVzIGFyZSBidWZmZXJlZCBpbiBmaXhlZC1zaXplIGNodW5rczsgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcgogICAgICBpcyBjaG9zZW4gdXNpbmcgYSBoZXVyaXN0aWMgdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdW5kZXJseWluZyBkZXZpY2UncwogICAgICAiYmxvY2sgc2l6ZSIgYW5kIGZhbGxpbmcgYmFjayBvbiBgaW8uREVGQVVMVF9CVUZGRVJfU0laRWAuCiAgICAgIE9uIG1hbnkgc3lzdGVtcywgdGhlIGJ1ZmZlciB3aWxsIHR5cGljYWxseSBiZSA0MDk2IG9yIDgxOTIgYnl0ZXMgbG9uZy4KCiAgICAqICJJbnRlcmFjdGl2ZSIgdGV4dCBmaWxlcyAoZmlsZXMgZm9yIHdoaWNoIGlzYXR0eSgpIHJldHVybnMgVHJ1ZSkKICAgICAgdXNlIGxpbmUgYnVmZmVyaW5nLiAgT3RoZXIgdGV4dCBmaWxlcyB1c2UgdGhlIHBvbGljeSBkZXNjcmliZWQgYWJvdmUKICAgICAgZm9yIGJpbmFyeSBmaWxlcy4KCiAgICBlbmNvZGluZyBpcyB0aGUgc3RyIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gZGVjb2RlIG9yIGVuY29kZSB0aGUKICAgIGZpbGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzCiAgICBwbGF0Zm9ybSBkZXBlbmRlbnQsIGJ1dCBhbnkgZW5jb2Rpbmcgc3VwcG9ydGVkIGJ5IFB5dGhvbiBjYW4gYmUKICAgIHBhc3NlZC4gIFNlZSB0aGUgY29kZWNzIG1vZHVsZSBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGVuY29kaW5ncy4KCiAgICBlcnJvcnMgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIGhvdyBlbmNvZGluZyBlcnJvcnMgYXJlIHRvCiAgICBiZSBoYW5kbGVkLS0tdGhpcyBhcmd1bWVudCBzaG91bGQgbm90IGJlIHVzZWQgaW4gYmluYXJ5IG1vZGUuIFBhc3MKICAgICdzdHJpY3QnIHRvIHJhaXNlIGEgVmFsdWVFcnJvciBleGNlcHRpb24gaWYgdGhlcmUgaXMgYW4gZW5jb2RpbmcgZXJyb3IKICAgICh0aGUgZGVmYXVsdCBvZiBOb25lIGhhcyB0aGUgc2FtZSBlZmZlY3QpLCBvciBwYXNzICdpZ25vcmUnIHRvIGlnbm9yZQogICAgZXJyb3JzLiAoTm90ZSB0aGF0IGlnbm9yaW5nIGVuY29kaW5nIGVycm9ycyBjYW4gbGVhZCB0byBkYXRhIGxvc3MuKQogICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb2RlY3MucmVnaXN0ZXIgZm9yIGEgbGlzdCBvZiB0aGUgcGVybWl0dGVkCiAgICBlbmNvZGluZyBlcnJvciBzdHJpbmdzLgoKICAgIG5ld2xpbmUgaXMgYSBzdHJpbmcgY29udHJvbGxpbmcgaG93IHVuaXZlcnNhbCBuZXdsaW5lcyB3b3JrcyAoaXQgb25seQogICAgYXBwbGllcyB0byB0ZXh0IG1vZGUpLiBJdCBjYW4gYmUgTm9uZSwgJycsICdcbicsICdccicsIGFuZCAnXHJcbicuICBJdCB3b3JrcwogICAgYXMgZm9sbG93czoKCiAgICAqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzCiAgICAgIGVuYWJsZWQuIExpbmVzIGluIHRoZSBpbnB1dCBjYW4gZW5kIGluICdcbicsICdccicsIG9yICdcclxuJywgYW5kCiAgICAgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gJ1xuJyBiZWZvcmUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlCiAgICAgIGNhbGxlci4gSWYgaXQgaXMgJycsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmUKICAgICAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2YKICAgICAgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgaW5wdXQgbGluZXMgYXJlIG9ubHkgdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4KICAgICAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLgoKICAgICogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUKICAgICAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmCiAgICAgIG5ld2xpbmUgaXMgJycsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueSBvZiB0aGUKICAgICAgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgJ1xuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlIHRyYW5zbGF0ZWQgdG8KICAgICAgdGhlIGdpdmVuIHN0cmluZy4KCiAgICBjbG9zZWRmZCBpcyBhIGJvb2wuIElmIGNsb3NlZmQgaXMgRmFsc2UsIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciB3aWxsCiAgICBiZSBrZXB0IG9wZW4gd2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzCiAgICBnaXZlbiBhbmQgbXVzdCBiZSBUcnVlIGluIHRoYXQgY2FzZS4KCiAgICBUaGUgbmV3bHkgY3JlYXRlZCBmaWxlIGlzIG5vbi1pbmhlcml0YWJsZS4KCiAgICBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUKICAgIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nCiAgICAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUKICAgIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0bwogICAgcGFzc2luZyBOb25lKS4KCiAgICBvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kCiAgICB0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nCiAgICBhcmUgcGVyZm9ybWVkLiBXaGVuIG9wZW4oKSBpcyB1c2VkIHRvIG9wZW4gYSBmaWxlIGluIGEgdGV4dCBtb2RlICgndycsCiAgICAncicsICd3dCcsICdydCcsIGV0Yy4pLCBpdCByZXR1cm5zIGEgVGV4dElPV3JhcHBlci4gV2hlbiB1c2VkIHRvIG9wZW4KICAgIGEgZmlsZSBpbiBhIGJpbmFyeSBtb2RlLCB0aGUgcmV0dXJuZWQgY2xhc3MgdmFyaWVzOiBpbiByZWFkIGJpbmFyeQogICAgbW9kZSwgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkUmVhZGVyOyBpbiB3cml0ZSBiaW5hcnkgYW5kIGFwcGVuZCBiaW5hcnkKICAgIG1vZGVzLCBpdCByZXR1cm5zIGEgQnVmZmVyZWRXcml0ZXIsIGFuZCBpbiByZWFkL3dyaXRlIG1vZGUsIGl0IHJldHVybnMKICAgIGEgQnVmZmVyZWRSYW5kb20uCgogICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgYSBzdHJpbmcgb3IgYnl0ZWFycmF5IGFzIGEgZmlsZSBmb3IgYm90aAogICAgcmVhZGluZyBhbmQgd3JpdGluZy4gRm9yIHN0cmluZ3MgU3RyaW5nSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGUKICAgIG9wZW5lZCBpbiBhIHRleHQgbW9kZSwgYW5kIGZvciBieXRlcyBhIEJ5dGVzSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGUKICAgIG9wZW5lZCBpbiBhIGJpbmFyeSBtb2RlLgogICAgIiIiCiAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlLCBpbnQpOgogICAgICAgIGZpbGUgPSBvcy5mc3BhdGgoZmlsZSkKICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGUsIChzdHIsIGJ5dGVzLCBpbnQpKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgZmlsZTogJXIiICUgZmlsZSkKICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vZGUsIHN0cik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIG1vZGU6ICVyIiAlIG1vZGUpCiAgICBpZiBub3QgaXNpbnN0YW5jZShidWZmZXJpbmcsIGludCk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGJ1ZmZlcmluZzogJXIiICUgYnVmZmVyaW5nKQogICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGVuY29kaW5nLCBzdHIpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBlbmNvZGluZzogJXIiICUgZW5jb2RpbmcpCiAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGVycm9ycywgc3RyKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgZXJyb3JzOiAlciIgJSBlcnJvcnMpCiAgICBtb2RlcyA9IHNldChtb2RlKQogICAgaWYgbW9kZXMgLSBzZXQoImF4cndiK3QiKSBvciBsZW4obW9kZSkgPiBsZW4obW9kZXMpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbW9kZTogJXIiICUgbW9kZSkKICAgIGNyZWF0aW5nID0gIngiIGluIG1vZGVzCiAgICByZWFkaW5nID0gInIiIGluIG1vZGVzCiAgICB3cml0aW5nID0gInciIGluIG1vZGVzCiAgICBhcHBlbmRpbmcgPSAiYSIgaW4gbW9kZXMKICAgIHVwZGF0aW5nID0gIisiIGluIG1vZGVzCiAgICB0ZXh0ID0gInQiIGluIG1vZGVzCiAgICBiaW5hcnkgPSAiYiIgaW4gbW9kZXMKICAgIGlmIHRleHQgYW5kIGJpbmFyeToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBoYXZlIHRleHQgYW5kIGJpbmFyeSBtb2RlIGF0IG9uY2UiKQogICAgaWYgY3JlYXRpbmcgKyByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDE6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgaGF2ZSByZWFkL3dyaXRlL2FwcGVuZCBtb2RlIGF0IG9uY2UiKQogICAgaWYgbm90IChjcmVhdGluZyBvciByZWFkaW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpCiAgICBpZiBiaW5hcnkgYW5kIGVuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhbiBlbmNvZGluZyBhcmd1bWVudCIpCiAgICBpZiBiaW5hcnkgYW5kIGVycm9ycyBpcyBub3QgTm9uZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZXJyb3JzIGFyZ3VtZW50IikKICAgIGlmIGJpbmFyeSBhbmQgbmV3bGluZSBpcyBub3QgTm9uZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYSBuZXdsaW5lIGFyZ3VtZW50IikKICAgIGlmIGJpbmFyeSBhbmQgYnVmZmVyaW5nID09IDE6CiAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgd2FybmluZ3Mud2FybigibGluZSBidWZmZXJpbmcgKGJ1ZmZlcmluZz0xKSBpc24ndCBzdXBwb3J0ZWQgaW4gYmluYXJ5ICIKICAgICAgICAgICAgICAgICAgICAgICJtb2RlLCB0aGUgZGVmYXVsdCBidWZmZXIgc2l6ZSB3aWxsIGJlIHVzZWQiLAogICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsIDIpCiAgICByYXcgPSBGaWxlSU8oZmlsZSwKICAgICAgICAgICAgICAgICAoY3JlYXRpbmcgYW5kICJ4IiBvciAiIikgKwogICAgICAgICAgICAgICAgIChyZWFkaW5nIGFuZCAiciIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAod3JpdGluZyBhbmQgInciIG9yICIiKSArCiAgICAgICAgICAgICAgICAgKGFwcGVuZGluZyBhbmQgImEiIG9yICIiKSArCiAgICAgICAgICAgICAgICAgKHVwZGF0aW5nIGFuZCAiKyIgb3IgIiIpLAogICAgICAgICAgICAgICAgIGNsb3NlZmQsIG9wZW5lcj1vcGVuZXIpCiAgICByZXN1bHQgPSByYXcKICAgIHRyeToKICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IEZhbHNlCiAgICAgICAgaWYgYnVmZmVyaW5nID09IDEgb3IgYnVmZmVyaW5nIDwgMCBhbmQgcmF3LmlzYXR0eSgpOgogICAgICAgICAgICBidWZmZXJpbmcgPSAtMQogICAgICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IFRydWUKICAgICAgICBpZiBidWZmZXJpbmcgPCAwOgogICAgICAgICAgICBidWZmZXJpbmcgPSBERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGJzID0gb3MuZnN0YXQocmF3LmZpbGVubygpKS5zdF9ibGtzaXplCiAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgYnMgPiAxOgogICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmluZyA9IGJzCiAgICAgICAgaWYgYnVmZmVyaW5nIDwgMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBidWZmZXJpbmcgc2l6ZSIpCiAgICAgICAgaWYgYnVmZmVyaW5nID09IDA6CiAgICAgICAgICAgIGlmIGJpbmFyeToKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgaGF2ZSB1bmJ1ZmZlcmVkIHRleHQgSS9PIikKICAgICAgICBpZiB1cGRhdGluZzoKICAgICAgICAgICAgYnVmZmVyID0gQnVmZmVyZWRSYW5kb20ocmF3LCBidWZmZXJpbmcpCiAgICAgICAgZWxpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZzoKICAgICAgICAgICAgYnVmZmVyID0gQnVmZmVyZWRXcml0ZXIocmF3LCBidWZmZXJpbmcpCiAgICAgICAgZWxpZiByZWFkaW5nOgogICAgICAgICAgICBidWZmZXIgPSBCdWZmZXJlZFJlYWRlcihyYXcsIGJ1ZmZlcmluZykKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIG1vZGU6ICVyIiAlIG1vZGUpCiAgICAgICAgcmVzdWx0ID0gYnVmZmVyCiAgICAgICAgaWYgYmluYXJ5OgogICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgZW5jb2RpbmcgPSB0ZXh0X2VuY29kaW5nKGVuY29kaW5nKQogICAgICAgIHRleHQgPSBUZXh0SU9XcmFwcGVyKGJ1ZmZlciwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgbGluZV9idWZmZXJpbmcpCiAgICAgICAgcmVzdWx0ID0gdGV4dAogICAgICAgIHRleHQubW9kZSA9IG1vZGUKICAgICAgICByZXR1cm4gcmVzdWx0CiAgICBleGNlcHQ6CiAgICAgICAgcmVzdWx0LmNsb3NlKCkKICAgICAgICByYWlzZQoKIyBEZWZpbmUgYSBkZWZhdWx0IHB1cmUtUHl0aG9uIGltcGxlbWVudGF0aW9uIGZvciBvcGVuX2NvZGUoKQojIHRoYXQgZG9lcyBub3QgYWxsb3cgaG9va3MuIFdhcm4gb24gZmlyc3QgdXNlLiBEZWZpbmVkIGZvciB0ZXN0cy4KZGVmIF9vcGVuX2NvZGVfd2l0aF93YXJuaW5nKHBhdGgpOgogICAgIiIiT3BlbnMgdGhlIHByb3ZpZGVkIGZpbGUgd2l0aCBtb2RlIGBgJ3JiJ2BgLiBUaGlzIGZ1bmN0aW9uCiAgICBzaG91bGQgYmUgdXNlZCB3aGVuIHRoZSBpbnRlbnQgaXMgdG8gdHJlYXQgdGhlIGNvbnRlbnRzIGFzCiAgICBleGVjdXRhYmxlIGNvZGUuCgogICAgYGBwYXRoYGAgc2hvdWxkIGJlIGFuIGFic29sdXRlIHBhdGguCgogICAgV2hlbiBzdXBwb3J0ZWQgYnkgdGhlIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGhvb2tlZAogICAgaW4gb3JkZXIgdG8gYWxsb3cgZW1iZWRkZXJzIG1vcmUgY29udHJvbCBvdmVyIGNvZGUgZmlsZXMuCiAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgY3VycmVudCBydW50aW1lLgogICAgIiIiCiAgICBpbXBvcnQgd2FybmluZ3MKICAgIHdhcm5pbmdzLndhcm4oIl9weWlvLm9wZW5fY29kZSgpIG1heSBub3QgYmUgdXNpbmcgaG9va3MiLAogICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZywgMikKICAgIHJldHVybiBvcGVuKHBhdGgsICJyYiIpCgp0cnk6CiAgICBvcGVuX2NvZGUgPSBpby5vcGVuX2NvZGUKZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgb3Blbl9jb2RlID0gX29wZW5fY29kZV93aXRoX3dhcm5pbmcKCgpkZWYgX19nZXRhdHRyX18obmFtZSk6CiAgICBpZiBuYW1lID09ICJPcGVuV3JhcHBlciI6CiAgICAgICAgIyBicG8tNDM2ODA6IFVudGlsIFB5dGhvbiAzLjksIF9weWlvLm9wZW4gd2FzIG5vdCBhIHN0YXRpYyBtZXRob2QgYW5kCiAgICAgICAgIyBidWlsdGlucy5vcGVuIHdhcyBzZXQgdG8gT3BlbldyYXBwZXIgdG8gbm90IGJlY29tZSBhIGJvdW5kIG1ldGhvZAogICAgICAgICMgd2hlbiBzZXQgdG8gYSBjbGFzcyB2YXJpYWJsZS4gX2lvLm9wZW4gaXMgYSBidWlsdC1pbiBmdW5jdGlvbiB3aGVyZWFzCiAgICAgICAgIyBfcHlpby5vcGVuIGlzIGEgUHl0aG9uIGZ1bmN0aW9uLiBJbiBQeXRob24gMy4xMCwgX3B5aW8ub3BlbigpIGlzIG5vdwogICAgICAgICMgYSBzdGF0aWMgbWV0aG9kLCBhbmQgYnVpbHRpbnMub3BlbigpIGlzIG5vdyBpby5vcGVuKCkuCiAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgd2FybmluZ3Mud2FybignT3BlbldyYXBwZXIgaXMgZGVwcmVjYXRlZCwgdXNlIG9wZW4gaW5zdGVhZCcsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICBnbG9iYWwgT3BlbldyYXBwZXIKICAgICAgICBPcGVuV3JhcHBlciA9IG9wZW4KICAgICAgICByZXR1cm4gT3BlbldyYXBwZXIKICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGYibW9kdWxlIHtfX25hbWVfXyFyfSBoYXMgbm8gYXR0cmlidXRlIHtuYW1lIXJ9IikKCgojIEluIG5vcm1hbCBvcGVyYXRpb24sIGJvdGggYFVuc3VwcG9ydGVkT3BlcmF0aW9uYHMgc2hvdWxkIGJlIGJvdW5kIHRvIHRoZQojIHNhbWUgb2JqZWN0Lgp0cnk6CiAgICBVbnN1cHBvcnRlZE9wZXJhdGlvbiA9IGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uCmV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgIGNsYXNzIFVuc3VwcG9ydGVkT3BlcmF0aW9uKE9TRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgIHBhc3MKCgpjbGFzcyBJT0Jhc2UobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKCiAgICAiIiJUaGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWxsIEkvTyBjbGFzc2VzLgoKICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgZHVtbXkgaW1wbGVtZW50YXRpb25zIGZvciBtYW55IG1ldGhvZHMgdGhhdAogICAgZGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSBzZWxlY3RpdmVseTsgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zCiAgICByZXByZXNlbnQgYSBmaWxlIHRoYXQgY2Fubm90IGJlIHJlYWQsIHdyaXR0ZW4gb3Igc2Vla2VkLgoKICAgIEV2ZW4gdGhvdWdoIElPQmFzZSBkb2VzIG5vdCBkZWNsYXJlIHJlYWQgb3Igd3JpdGUgYmVjYXVzZQogICAgdGhlaXIgc2lnbmF0dXJlcyB3aWxsIHZhcnksIGltcGxlbWVudGF0aW9ucyBhbmQgY2xpZW50cyBzaG91bGQKICAgIGNvbnNpZGVyIHRob3NlIG1ldGhvZHMgcGFydCBvZiB0aGUgaW50ZXJmYWNlLiBBbHNvLCBpbXBsZW1lbnRhdGlvbnMKICAgIG1heSByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbiB3aGVuIG9wZXJhdGlvbnMgdGhleSBkbyBub3Qgc3VwcG9ydCBhcmUKICAgIGNhbGxlZC4KCiAgICBUaGUgYmFzaWMgdHlwZSB1c2VkIGZvciBiaW5hcnkgZGF0YSByZWFkIGZyb20gb3Igd3JpdHRlbiB0byBhIGZpbGUgaXMKICAgIGJ5dGVzLiBPdGhlciBieXRlcy1saWtlIG9iamVjdHMgYXJlIGFjY2VwdGVkIGFzIG1ldGhvZCBhcmd1bWVudHMgdG9vLgogICAgVGV4dCBJL08gY2xhc3NlcyB3b3JrIHdpdGggc3RyIGRhdGEuCgogICAgTm90ZSB0aGF0IGNhbGxpbmcgYW55IG1ldGhvZCAoZXZlbiBpbnF1aXJpZXMpIG9uIGEgY2xvc2VkIHN0cmVhbSBpcwogICAgdW5kZWZpbmVkLiBJbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIE9TRXJyb3IgaW4gdGhpcyBjYXNlLgoKICAgIElPQmFzZSAoYW5kIGl0cyBzdWJjbGFzc2VzKSBzdXBwb3J0IHRoZSBpdGVyYXRvciBwcm90b2NvbCwgbWVhbmluZwogICAgdGhhdCBhbiBJT0Jhc2Ugb2JqZWN0IGNhbiBiZSBpdGVyYXRlZCBvdmVyIHlpZWxkaW5nIHRoZSBsaW5lcyBpbiBhCiAgICBzdHJlYW0uCgogICAgSU9CYXNlIGFsc28gc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuIEluIHRoaXMgZXhhbXBsZSwKICAgIGZwIGlzIGNsb3NlZCBhZnRlciB0aGUgc3VpdGUgb2YgdGhlIHdpdGggc3RhdGVtZW50IGlzIGNvbXBsZXRlOgoKICAgIHdpdGggb3Blbignc3BhbS50eHQnLCAncicpIGFzIGZwOgogICAgICAgIGZwLndyaXRlKCdTcGFtIGFuZCBlZ2dzIScpCiAgICAiIiIKCiAgICAjIyMgSW50ZXJuYWwgIyMjCgogICAgZGVmIF91bnN1cHBvcnRlZChzZWxmLCBuYW1lKToKICAgICAgICAiIiJJbnRlcm5hbDogcmFpc2UgYW4gT1NFcnJvciBleGNlcHRpb24gZm9yIHVuc3VwcG9ydGVkIG9wZXJhdGlvbnMuIiIiCiAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24oIiVzLiVzKCkgbm90IHN1cHBvcnRlZCIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSkpCgogICAgIyMjIFBvc2l0aW9uaW5nICMjIwoKICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgogICAgICAgICIiIkNoYW5nZSBzdHJlYW0gcG9zaXRpb24uCgogICAgICAgIENoYW5nZSB0aGUgc3RyZWFtIHBvc2l0aW9uIHRvIGJ5dGUgb2Zmc2V0IHBvcy4gQXJndW1lbnQgcG9zIGlzCiAgICAgICAgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2UuICBWYWx1ZXMKICAgICAgICBmb3Igd2hlbmNlIGFyZSBpbnRzOgoKICAgICAgICAqIDAgLS0gc3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCk7IG9mZnNldCBzaG91bGQgYmUgemVybyBvciBwb3NpdGl2ZQogICAgICAgICogMSAtLSBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbjsgb2Zmc2V0IG1heSBiZSBuZWdhdGl2ZQogICAgICAgICogMiAtLSBlbmQgb2Ygc3RyZWFtOyBvZmZzZXQgaXMgdXN1YWxseSBuZWdhdGl2ZQogICAgICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgLyBmaWxlIHN5c3RlbXMgY291bGQgcHJvdmlkZSBhZGRpdGlvbmFsIHZhbHVlcy4KCiAgICAgICAgUmV0dXJuIGFuIGludCBpbmRpY2F0aW5nIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWQoInNlZWsiKQoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhbiBpbnQgaW5kaWNhdGluZyB0aGUgY3VycmVudCBzdHJlYW0gcG9zaXRpb24uIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuc2VlaygwLCAxKQoKICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBwb3M9Tm9uZSk6CiAgICAgICAgIiIiVHJ1bmNhdGUgZmlsZSB0byBzaXplIGJ5dGVzLgoKICAgICAgICBTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IElPIHBvc2l0aW9uIGFzIHJlcG9ydGVkIGJ5IHRlbGwoKS4gIFJldHVybgogICAgICAgIHRoZSBuZXcgc2l6ZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl91bnN1cHBvcnRlZCgidHJ1bmNhdGUiKQoKICAgICMjIyBGbHVzaCBhbmQgY2xvc2UgIyMjCgogICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgICIiIkZsdXNoIHdyaXRlIGJ1ZmZlcnMsIGlmIGFwcGxpY2FibGUuCgogICAgICAgIFRoaXMgaXMgbm90IGltcGxlbWVudGVkIGZvciByZWFkLW9ubHkgYW5kIG5vbi1ibG9ja2luZyBzdHJlYW1zLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAjIFhYWCBTaG91bGQgdGhpcyByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuPz8/CgogICAgX19jbG9zZWQgPSBGYWxzZQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIElPIG9iamVjdC4KCiAgICAgICAgVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC4KICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc2VsZi5fX2Nsb3NlZDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLl9fY2xvc2VkID0gVHJ1ZQoKICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICIiIkRlc3RydWN0b3IuICBDYWxscyBjbG9zZSgpLiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgY2xvc2VkID0gc2VsZi5jbG9zZWQKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICMgSWYgZ2V0dGluZyBjbG9zZWQgZmFpbHMsIHRoZW4gdGhlIG9iamVjdCBpcyBwcm9iYWJseQogICAgICAgICAgICAjIGluIGFuIHVudXNhYmxlIHN0YXRlLCBzbyBpZ25vcmUuCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBjbG9zZWQ6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBfSU9CQVNFX0VNSVRTX1VOUkFJU0FCTEU6CiAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgVGhlIHRyeS9leGNlcHQgYmxvY2sgaXMgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBhdCBwcm9ncmFtCiAgICAgICAgICAgICMgZXhpdCB0aW1lLCB3aGVuIGl0J3MgcG9zc2libGUgdGhhdCBnbG9iYWxzIGhhdmUgYWxyZWFkeSBiZWVuCiAgICAgICAgICAgICMgZGVsZXRlZCwgYW5kIHRoZW4gdGhlIGNsb3NlKCkgY2FsbCBtaWdodCBmYWlsLiAgU2luY2UKICAgICAgICAgICAgIyB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IHN1Y2ggZmFpbHVyZXMgYW5kIHRoZXkgYW5ub3kKICAgICAgICAgICAgIyB0aGUgZW5kIHVzZXJzLCB3ZSBzdXBwcmVzcyB0aGUgdHJhY2ViYWNrLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgcGFzcwoKICAgICMjIyBJbnF1aXJpZXMgIyMjCgogICAgZGVmIHNlZWthYmxlKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIG9iamVjdCBzdXBwb3J0cyByYW5kb20gYWNjZXNzLgoKICAgICAgICBJZiBGYWxzZSwgc2VlaygpLCB0ZWxsKCkgYW5kIHRydW5jYXRlKCkgd2lsbCByYWlzZSBPU0Vycm9yLgogICAgICAgIFRoaXMgbWV0aG9kIG1heSBuZWVkIHRvIGRvIGEgdGVzdCBzZWVrKCkuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9jaGVja1NlZWthYmxlKHNlbGYsIG1zZz1Ob25lKToKICAgICAgICAiIiJJbnRlcm5hbDogcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24gaWYgZmlsZSBpcyBub3Qgc2Vla2FibGUKICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc2VsZi5zZWVrYWJsZSgpOgogICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBvciBzdHJlYW0gaXMgbm90IHNlZWthYmxlLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbXNnIGlzIE5vbmUgZWxzZSBtc2cpCgogICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciByZWFkaW5nLgoKICAgICAgICBJZiBGYWxzZSwgcmVhZCgpIHdpbGwgcmFpc2UgT1NFcnJvci4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgX2NoZWNrUmVhZGFibGUoc2VsZiwgbXNnPU5vbmUpOgogICAgICAgICIiIkludGVybmFsOiByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbiBpZiBmaWxlIGlzIG5vdCByZWFkYWJsZQogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CiAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG9yIHN0cmVhbSBpcyBub3QgcmVhZGFibGUuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtc2cgaXMgTm9uZSBlbHNlIG1zZykKCiAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuCgogICAgICAgIElmIEZhbHNlLCB3cml0ZSgpIGFuZCB0cnVuY2F0ZSgpIHdpbGwgcmFpc2UgT1NFcnJvci4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgX2NoZWNrV3JpdGFibGUoc2VsZiwgbXNnPU5vbmUpOgogICAgICAgICIiIkludGVybmFsOiByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbiBpZiBmaWxlIGlzIG5vdCB3cml0YWJsZQogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBzZWxmLndyaXRhYmxlKCk6CiAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG9yIHN0cmVhbSBpcyBub3Qgd3JpdGFibGUuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtc2cgaXMgTm9uZSBlbHNlIG1zZykKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjbG9zZWQoc2VsZik6CiAgICAgICAgIiIiY2xvc2VkOiBib29sLiAgVHJ1ZSBpZmYgdGhlIGZpbGUgaGFzIGJlZW4gY2xvc2VkLgoKICAgICAgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoaXMgaXMgYSBwcm9wZXJ0eSwgbm90IGEgcHJlZGljYXRlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9fY2xvc2VkCgogICAgZGVmIF9jaGVja0Nsb3NlZChzZWxmLCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiSW50ZXJuYWw6IHJhaXNlIGEgVmFsdWVFcnJvciBpZiBmaWxlIGlzIGNsb3NlZAogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtc2cgaXMgTm9uZSBlbHNlIG1zZykKCiAgICAjIyMgQ29udGV4dCBtYW5hZ2VyICMjIwoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6ICAjIFRoYXQncyBhIGZvcndhcmQgcmVmZXJlbmNlCiAgICAgICAgIiIiQ29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLiAgUmV0dXJucyBzZWxmIChhbiBpbnN0YW5jZSBvZiBJT0Jhc2UpLiIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgIiIiQ29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLiAgQ2FsbHMgY2xvc2UoKSIiIgogICAgICAgIHNlbGYuY2xvc2UoKQoKICAgICMjIyBMb3dlci1sZXZlbCBBUElzICMjIwoKICAgICMgWFhYIFNob3VsZCB0aGVzZSBiZSBwcmVzZW50IGV2ZW4gaWYgdW5pbXBsZW1lbnRlZD8KCiAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgICIiIlJldHVybnMgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludCkgaWYgb25lIGV4aXN0cy4KCiAgICAgICAgQW4gT1NFcnJvciBpcyByYWlzZWQgaWYgdGhlIElPIG9iamVjdCBkb2VzIG5vdCB1c2UgYSBmaWxlIGRlc2NyaXB0b3IuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWQoImZpbGVubyIpCgogICAgZGVmIGlzYXR0eShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGlzIGlzIGFuICdpbnRlcmFjdGl2ZScgc3RyZWFtLgoKICAgICAgICBSZXR1cm4gRmFsc2UgaWYgaXQgY2FuJ3QgYmUgZGV0ZXJtaW5lZC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgIyMjIFJlYWRsaW5lW3NdIGFuZCB3cml0ZWxpbmVzICMjIwoKICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKICAgICAgICByIiIiUmVhZCBhbmQgcmV0dXJuIGEgbGluZSBvZiBieXRlcyBmcm9tIHRoZSBzdHJlYW0uCgogICAgICAgIElmIHNpemUgaXMgc3BlY2lmaWVkLCBhdCBtb3N0IHNpemUgYnl0ZXMgd2lsbCBiZSByZWFkLgogICAgICAgIFNpemUgc2hvdWxkIGJlIGFuIGludC4KCiAgICAgICAgVGhlIGxpbmUgdGVybWluYXRvciBpcyBhbHdheXMgYidcbicgZm9yIGJpbmFyeSBmaWxlczsgZm9yIHRleHQKICAgICAgICBmaWxlcywgdGhlIG5ld2xpbmVzIGFyZ3VtZW50IHRvIG9wZW4gY2FuIGJlIHVzZWQgdG8gc2VsZWN0IHRoZSBsaW5lCiAgICAgICAgdGVybWluYXRvcihzKSByZWNvZ25pemVkLgogICAgICAgICIiIgogICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhIChzbG93aXNoKSByZWFkbGluZSgpLgogICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgInBlZWsiKToKICAgICAgICAgICAgZGVmIG5yZWFkYWhlYWQoKToKICAgICAgICAgICAgICAgIHJlYWRhaGVhZCA9IHNlbGYucGVlaygxKQogICAgICAgICAgICAgICAgaWYgbm90IHJlYWRhaGVhZDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAgICAgICAgbiA9IChyZWFkYWhlYWQuZmluZChiIlxuIikgKyAxKSBvciBsZW4ocmVhZGFoZWFkKQogICAgICAgICAgICAgICAgaWYgc2l6ZSA+PSAwOgogICAgICAgICAgICAgICAgICAgIG4gPSBtaW4obiwgc2l6ZSkKICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGVmIG5yZWFkYWhlYWQoKToKICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBzaXplID0gLTEKICAgICAgICBlbHNlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzaXplX2luZGV4ID0gc2l6ZS5fX2luZGV4X18KICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYie3NpemUhcn0gaXMgbm90IGFuIGludGVnZXIiKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2l6ZSA9IHNpemVfaW5kZXgoKQogICAgICAgIHJlcyA9IGJ5dGVhcnJheSgpCiAgICAgICAgd2hpbGUgc2l6ZSA8IDAgb3IgbGVuKHJlcykgPCBzaXplOgogICAgICAgICAgICBiID0gc2VsZi5yZWFkKG5yZWFkYWhlYWQoKSkKICAgICAgICAgICAgaWYgbm90IGI6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICByZXMgKz0gYgogICAgICAgICAgICBpZiByZXMuZW5kc3dpdGgoYiJcbiIpOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICByZXR1cm4gYnl0ZXMocmVzKQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQogICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgcmV0dXJuIGxpbmUKCiAgICBkZWYgcmVhZGxpbmVzKHNlbGYsIGhpbnQ9Tm9uZSk6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzdHJlYW0uCgogICAgICAgIGhpbnQgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8gbW9yZQogICAgICAgIGxpbmVzIHdpbGwgYmUgcmVhZCBpZiB0aGUgdG90YWwgc2l6ZSAoaW4gYnl0ZXMvY2hhcmFjdGVycykgb2YgYWxsCiAgICAgICAgbGluZXMgc28gZmFyIGV4Y2VlZHMgaGludC4KICAgICAgICAiIiIKICAgICAgICBpZiBoaW50IGlzIE5vbmUgb3IgaGludCA8PSAwOgogICAgICAgICAgICByZXR1cm4gbGlzdChzZWxmKQogICAgICAgIG4gPSAwCiAgICAgICAgbGluZXMgPSBbXQogICAgICAgIGZvciBsaW5lIGluIHNlbGY6CiAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQogICAgICAgICAgICBuICs9IGxlbihsaW5lKQogICAgICAgICAgICBpZiBuID49IGhpbnQ6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHJldHVybiBsaW5lcwoKICAgIGRlZiB3cml0ZWxpbmVzKHNlbGYsIGxpbmVzKToKICAgICAgICAiIiJXcml0ZSBhIGxpc3Qgb2YgbGluZXMgdG8gdGhlIHN0cmVhbS4KCiAgICAgICAgTGluZSBzZXBhcmF0b3JzIGFyZSBub3QgYWRkZWQsIHNvIGl0IGlzIHVzdWFsIGZvciBlYWNoIG9mIHRoZSBsaW5lcwogICAgICAgIHByb3ZpZGVkIHRvIGhhdmUgYSBsaW5lIHNlcGFyYXRvciBhdCB0aGUgZW5kLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICAgICAgc2VsZi53cml0ZShsaW5lKQoKaW8uSU9CYXNlLnJlZ2lzdGVyKElPQmFzZSkKCgpjbGFzcyBSYXdJT0Jhc2UoSU9CYXNlKToKCiAgICAiIiJCYXNlIGNsYXNzIGZvciByYXcgYmluYXJ5IEkvTy4iIiIKCiAgICAjIFRoZSByZWFkKCkgbWV0aG9kIGlzIGltcGxlbWVudGVkIGJ5IGNhbGxpbmcgcmVhZGludG8oKTsgZGVyaXZlZAogICAgIyBjbGFzc2VzIHRoYXQgd2FudCB0byBzdXBwb3J0IHJlYWQoKSBvbmx5IG5lZWQgdG8gaW1wbGVtZW50CiAgICAjIHJlYWRpbnRvKCkgYXMgYSBwcmltaXRpdmUgb3BlcmF0aW9uLiAgSW4gZ2VuZXJhbCwgcmVhZGludG8oKSBjYW4gYmUKICAgICMgbW9yZSBlZmZpY2llbnQgdGhhbiByZWFkKCkuCgogICAgIyAoSXQgd291bGQgYmUgdGVtcHRpbmcgdG8gYWxzbyBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mCiAgICAjIHJlYWRpbnRvKCkgaW4gdGVybXMgb2YgcmVhZCgpLCBpbiBjYXNlIHRoZSBsYXR0ZXIgaXMgYSBtb3JlIHN1aXRhYmxlCiAgICAjIHByaW1pdGl2ZSBvcGVyYXRpb24sIGJ1dCB0aGF0IHdvdWxkIGxlYWQgdG8gbmFzdHkgcmVjdXJzaW9uIGluIGNhc2UKICAgICMgYSBzdWJjbGFzcyBkb2Vzbid0IGltcGxlbWVudCBlaXRoZXIuKQoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICIiIlJlYWQgYW5kIHJldHVybiB1cCB0byBzaXplIGJ5dGVzLCB3aGVyZSBzaXplIGlzIGFuIGludC4KCiAgICAgICAgUmV0dXJucyBhbiBlbXB0eSBieXRlcyBvYmplY3Qgb24gRU9GLCBvciBOb25lIGlmIHRoZSBvYmplY3QgaXMKICAgICAgICBzZXQgbm90IHRvIGJsb2NrIGFuZCBoYXMgbm8gZGF0YSB0byByZWFkLgogICAgICAgICIiIgogICAgICAgIGlmIHNpemUgaXMgTm9uZToKICAgICAgICAgICAgc2l6ZSA9IC0xCiAgICAgICAgaWYgc2l6ZSA8IDA6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnJlYWRhbGwoKQogICAgICAgIGIgPSBieXRlYXJyYXkoc2l6ZS5fX2luZGV4X18oKSkKICAgICAgICBuID0gc2VsZi5yZWFkaW50byhiKQogICAgICAgIGlmIG4gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBkZWwgYltuOl0KICAgICAgICByZXR1cm4gYnl0ZXMoYikKCiAgICBkZWYgcmVhZGFsbChzZWxmKToKICAgICAgICAiIiJSZWFkIHVudGlsIEVPRiwgdXNpbmcgbXVsdGlwbGUgcmVhZCgpIGNhbGwuIiIiCiAgICAgICAgcmVzID0gYnl0ZWFycmF5KCkKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkKERFRkFVTFRfQlVGRkVSX1NJWkUpCiAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgcmVzICs9IGRhdGEKICAgICAgICBpZiByZXM6CiAgICAgICAgICAgIHJldHVybiBieXRlcyhyZXMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBiJycgb3IgTm9uZQogICAgICAgICAgICByZXR1cm4gZGF0YQoKICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKICAgICAgICAiIiJSZWFkIGJ5dGVzIGludG8gYSBwcmUtYWxsb2NhdGVkIGJ5dGVzLWxpa2Ugb2JqZWN0IGIuCgogICAgICAgIFJldHVybnMgYW4gaW50IHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRiksIG9yCiAgICAgICAgTm9uZSBpZiB0aGUgb2JqZWN0IGlzIHNldCBub3QgdG8gYmxvY2sgYW5kIGhhcyBubyBkYXRhIHRvIHJlYWQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWQoInJlYWRpbnRvIikKCiAgICBkZWYgd3JpdGUoc2VsZiwgYik6CiAgICAgICAgIiIiV3JpdGUgdGhlIGdpdmVuIGJ1ZmZlciB0byB0aGUgSU8gc3RyZWFtLgoKICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB0aGUKICAgICAgICBsZW5ndGggb2YgYiBpbiBieXRlcy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl91bnN1cHBvcnRlZCgid3JpdGUiKQoKaW8uUmF3SU9CYXNlLnJlZ2lzdGVyKFJhd0lPQmFzZSkKZnJvbSBfaW8gaW1wb3J0IEZpbGVJTwpSYXdJT0Jhc2UucmVnaXN0ZXIoRmlsZUlPKQoKCmNsYXNzIEJ1ZmZlcmVkSU9CYXNlKElPQmFzZSk6CgogICAgIiIiQmFzZSBjbGFzcyBmb3IgYnVmZmVyZWQgSU8gb2JqZWN0cy4KCiAgICBUaGUgbWFpbiBkaWZmZXJlbmNlIHdpdGggUmF3SU9CYXNlIGlzIHRoYXQgdGhlIHJlYWQoKSBtZXRob2QKICAgIHN1cHBvcnRzIG9taXR0aW5nIHRoZSBzaXplIGFyZ3VtZW50LCBhbmQgZG9lcyBub3QgaGF2ZSBhIGRlZmF1bHQKICAgIGltcGxlbWVudGF0aW9uIHRoYXQgZGVmZXJzIHRvIHJlYWRpbnRvKCkuCgogICAgSW4gYWRkaXRpb24sIHJlYWQoKSwgcmVhZGludG8oKSBhbmQgd3JpdGUoKSBtYXkgcmFpc2UKICAgIEJsb2NraW5nSU9FcnJvciBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluIG5vbi1ibG9ja2luZwogICAgbW9kZSBhbmQgbm90IHJlYWR5OyB1bmxpa2UgdGhlaXIgcmF3IGNvdW50ZXJwYXJ0cywgdGhleSB3aWxsIG5ldmVyCiAgICByZXR1cm4gTm9uZS4KCiAgICBBIHR5cGljYWwgaW1wbGVtZW50YXRpb24gc2hvdWxkIG5vdCBpbmhlcml0IGZyb20gYSBSYXdJT0Jhc2UKICAgIGltcGxlbWVudGF0aW9uLCBidXQgd3JhcCBvbmUuCiAgICAiIiIKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKICAgICAgICAiIiJSZWFkIGFuZCByZXR1cm4gdXAgdG8gc2l6ZSBieXRlcywgd2hlcmUgc2l6ZSBpcyBhbiBpbnQuCgogICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBOb25lLCBvciBuZWdhdGl2ZSwgcmVhZHMgYW5kCiAgICAgICAgcmV0dXJucyBhbGwgZGF0YSB1bnRpbCBFT0YuCgogICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBwb3NpdGl2ZSwgYW5kIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMKICAgICAgICBub3QgJ2ludGVyYWN0aXZlJywgbXVsdGlwbGUgcmF3IHJlYWRzIG1heSBiZSBpc3N1ZWQgdG8gc2F0aXNmeQogICAgICAgIHRoZSBieXRlIGNvdW50ICh1bmxlc3MgRU9GIGlzIHJlYWNoZWQgZmlyc3QpLiAgQnV0IGZvcgogICAgICAgIGludGVyYWN0aXZlIHJhdyBzdHJlYW1zIChYWFggYW5kIGZvciBwaXBlcz8pLCBhdCBtb3N0IG9uZSByYXcKICAgICAgICByZWFkIHdpbGwgYmUgaXNzdWVkLCBhbmQgYSBzaG9ydCByZXN1bHQgZG9lcyBub3QgaW1wbHkgdGhhdAogICAgICAgIEVPRiBpcyBpbW1pbmVudC4KCiAgICAgICAgUmV0dXJucyBhbiBlbXB0eSBieXRlcyBhcnJheSBvbiBFT0YuCgogICAgICAgIFJhaXNlcyBCbG9ja2luZ0lPRXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBoYXMgbm8KICAgICAgICBkYXRhIGF0IHRoZSBtb21lbnQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWQoInJlYWQiKQoKICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwsCiAgICAgICAgd2hlcmUgc2l6ZSBpcyBhbiBpbnQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWQoInJlYWQxIikKCiAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CiAgICAgICAgIiIiUmVhZCBieXRlcyBpbnRvIGEgcHJlLWFsbG9jYXRlZCBieXRlcy1saWtlIG9iamVjdCBiLgoKICAgICAgICBMaWtlIHJlYWQoKSwgdGhpcyBtYXkgaXNzdWUgbXVsdGlwbGUgcmVhZHMgdG8gdGhlIHVuZGVybHlpbmcgcmF3CiAgICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyAnaW50ZXJhY3RpdmUnLgoKICAgICAgICBSZXR1cm5zIGFuIGludCByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBieXRlcyByZWFkICgwIGZvciBFT0YpLgoKICAgICAgICBSYWlzZXMgQmxvY2tpbmdJT0Vycm9yIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaGFzIG5vCiAgICAgICAgZGF0YSBhdCB0aGUgbW9tZW50LgogICAgICAgICIiIgoKICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGludG8oYiwgcmVhZDE9RmFsc2UpCgogICAgZGVmIHJlYWRpbnRvMShzZWxmLCBiKToKICAgICAgICAiIiJSZWFkIGJ5dGVzIGludG8gYnVmZmVyICpiKiwgdXNpbmcgYXQgbW9zdCBvbmUgc3lzdGVtIGNhbGwKCiAgICAgICAgUmV0dXJucyBhbiBpbnQgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKS4KCiAgICAgICAgUmFpc2VzIEJsb2NraW5nSU9FcnJvciBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGhhcyBubwogICAgICAgIGRhdGEgYXQgdGhlIG1vbWVudC4KICAgICAgICAiIiIKCiAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRpbnRvKGIsIHJlYWQxPVRydWUpCgogICAgZGVmIF9yZWFkaW50byhzZWxmLCBiLCByZWFkMSk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYiwgbWVtb3J5dmlldyk6CiAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KGIpCiAgICAgICAgYiA9IGIuY2FzdCgnQicpCgogICAgICAgIGlmIHJlYWQxOgogICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShsZW4oYikpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZChsZW4oYikpCiAgICAgICAgbiA9IGxlbihkYXRhKQoKICAgICAgICBiWzpuXSA9IGRhdGEKCiAgICAgICAgcmV0dXJuIG4KCiAgICBkZWYgd3JpdGUoc2VsZiwgYik6CiAgICAgICAgIiIiV3JpdGUgdGhlIGdpdmVuIGJ5dGVzIGJ1ZmZlciB0byB0aGUgSU8gc3RyZWFtLgoKICAgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLCB3aGljaCBpcyBhbHdheXMgdGhlIGxlbmd0aCBvZiBiCiAgICAgICAgaW4gYnl0ZXMuCgogICAgICAgIFJhaXNlcyBCbG9ja2luZ0lPRXJyb3IgaWYgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB0aGUKICAgICAgICB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gY2Fubm90IGFjY2VwdCBtb3JlIGRhdGEgYXQgdGhlIG1vbWVudC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl91bnN1cHBvcnRlZCgid3JpdGUiKQoKICAgIGRlZiBkZXRhY2goc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgU2VwYXJhdGUgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBmcm9tIHRoZSBidWZmZXIgYW5kIHJldHVybiBpdC4KCiAgICAgICAgQWZ0ZXIgdGhlIHJhdyBzdHJlYW0gaGFzIGJlZW4gZGV0YWNoZWQsIHRoZSBidWZmZXIgaXMgaW4gYW4gdW51c2FibGUKICAgICAgICBzdGF0ZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl91bnN1cHBvcnRlZCgiZGV0YWNoIikKCmlvLkJ1ZmZlcmVkSU9CYXNlLnJlZ2lzdGVyKEJ1ZmZlcmVkSU9CYXNlKQoKCmNsYXNzIF9CdWZmZXJlZElPTWl4aW4oQnVmZmVyZWRJT0Jhc2UpOgoKICAgICIiIkEgbWl4aW4gaW1wbGVtZW50YXRpb24gb2YgQnVmZmVyZWRJT0Jhc2Ugd2l0aCBhbiB1bmRlcmx5aW5nIHJhdyBzdHJlYW0uCgogICAgVGhpcyBwYXNzZXMgbW9zdCByZXF1ZXN0cyBvbiB0byB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtLiAgSXQKICAgIGRvZXMgKm5vdCogcHJvdmlkZSBpbXBsZW1lbnRhdGlvbnMgb2YgcmVhZCgpLCByZWFkaW50bygpIG9yCiAgICB3cml0ZSgpLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhdyk6CiAgICAgICAgc2VsZi5fcmF3ID0gcmF3CgogICAgIyMjIFBvc2l0aW9uaW5nICMjIwoKICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgogICAgICAgIG5ld19wb3NpdGlvbiA9IHNlbGYucmF3LnNlZWsocG9zLCB3aGVuY2UpCiAgICAgICAgaWYgbmV3X3Bvc2l0aW9uIDwgMDoKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigic2VlaygpIHJldHVybmVkIGFuIGludmFsaWQgcG9zaXRpb24iKQogICAgICAgIHJldHVybiBuZXdfcG9zaXRpb24KCiAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICBwb3MgPSBzZWxmLnJhdy50ZWxsKCkKICAgICAgICBpZiBwb3MgPCAwOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJ0ZWxsKCkgcmV0dXJuZWQgYW4gaW52YWxpZCBwb3NpdGlvbiIpCiAgICAgICAgcmV0dXJuIHBvcwoKICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBwb3M9Tm9uZSk6CiAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgIHNlbGYuX2NoZWNrV3JpdGFibGUoKQoKICAgICAgICAjIEZsdXNoIHRoZSBzdHJlYW0uICBXZSdyZSBtaXhpbmcgYnVmZmVyZWQgSS9PIHdpdGggbG93ZXItbGV2ZWwgSS9PLAogICAgICAgICMgYW5kIGEgZmx1c2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBzeW5jaCBib3RoIHZpZXdzIG9mIHRoZSBjdXJyZW50CiAgICAgICAgIyBmaWxlIHN0YXRlLgogICAgICAgIHNlbGYuZmx1c2goKQoKICAgICAgICBpZiBwb3MgaXMgTm9uZToKICAgICAgICAgICAgcG9zID0gc2VsZi50ZWxsKCkKICAgICAgICAjIFhYWDogU2hvdWxkIHNlZWsoKSBiZSB1c2VkLCBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHBvc2l0aW9uCiAgICAgICAgIyBYWFggIGRpcmVjdGx5IHRvIHRydW5jYXRlPwogICAgICAgIHJldHVybiBzZWxmLnJhdy50cnVuY2F0ZShwb3MpCgogICAgIyMjIEZsdXNoIGFuZCBjbG9zZSAjIyMKCiAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZsdXNoIG9uIGNsb3NlZCBmaWxlIikKICAgICAgICBzZWxmLnJhdy5mbHVzaCgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYucmF3IGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICMgbWF5IHJhaXNlIEJsb2NraW5nSU9FcnJvciBvciBCcm9rZW5QaXBlRXJyb3IgZXRjCiAgICAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHNlbGYucmF3LmNsb3NlKCkKCiAgICBkZWYgZGV0YWNoKHNlbGYpOgogICAgICAgIGlmIHNlbGYucmF3IGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJhdyBzdHJlYW0gYWxyZWFkeSBkZXRhY2hlZCIpCiAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgcmF3ID0gc2VsZi5fcmF3CiAgICAgICAgc2VsZi5fcmF3ID0gTm9uZQogICAgICAgIHJldHVybiByYXcKCiAgICAjIyMgSW5xdWlyaWVzICMjIwoKICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5yYXcuc2Vla2FibGUoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHJhdyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fcmF3CgogICAgQHByb3BlcnR5CiAgICBkZWYgY2xvc2VkKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnJhdy5jbG9zZWQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnJhdy5uYW1lCgogICAgQHByb3BlcnR5CiAgICBkZWYgbW9kZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5yYXcubW9kZQoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiY2Fubm90IHBpY2tsZSB7c2VsZi5fX2NsYXNzX18uX19uYW1lX18hcn0gb2JqZWN0IikKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgbW9kbmFtZSA9IHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18KICAgICAgICBjbHNuYW1lID0gc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fCiAgICAgICAgdHJ5OgogICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gIjx7fS57fT4iLmZvcm1hdChtb2RuYW1lLCBjbHNuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAiPHt9Lnt9IG5hbWU9eyFyfT4iLmZvcm1hdChtb2RuYW1lLCBjbHNuYW1lLCBuYW1lKQoKICAgICMjIyBMb3dlci1sZXZlbCBBUElzICMjIwoKICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYucmF3LmZpbGVubygpCgogICAgZGVmIGlzYXR0eShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5yYXcuaXNhdHR5KCkKCgpjbGFzcyBCeXRlc0lPKEJ1ZmZlcmVkSU9CYXNlKToKCiAgICAiIiJCdWZmZXJlZCBJL08gaW1wbGVtZW50YXRpb24gdXNpbmcgYW4gaW4tbWVtb3J5IGJ5dGVzIGJ1ZmZlci4iIiIKCiAgICAjIEluaXRpYWxpemUgX2J1ZmZlciBhcyBzb29uIGFzIHBvc3NpYmxlIHNpbmNlIGl0J3MgdXNlZCBieSBfX2RlbF9fKCkKICAgICMgd2hpY2ggY2FsbHMgY2xvc2UoKQogICAgX2J1ZmZlciA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgaW5pdGlhbF9ieXRlcz1Ob25lKToKICAgICAgICBidWYgPSBieXRlYXJyYXkoKQogICAgICAgIGlmIGluaXRpYWxfYnl0ZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGJ1ZiArPSBpbml0aWFsX2J5dGVzCiAgICAgICAgc2VsZi5fYnVmZmVyID0gYnVmCiAgICAgICAgc2VsZi5fcG9zID0gMAoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIl9fZ2V0c3RhdGVfXyBvbiBjbG9zZWQgZmlsZSIpCiAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X18uY29weSgpCgogICAgZGVmIGdldHZhbHVlKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgYnl0ZXMgdmFsdWUgKGNvbnRlbnRzKSBvZiB0aGUgYnVmZmVyCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImdldHZhbHVlIG9uIGNsb3NlZCBmaWxlIikKICAgICAgICByZXR1cm4gYnl0ZXMoc2VsZi5fYnVmZmVyKQoKICAgIGRlZiBnZXRidWZmZXIoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgcmVhZGFibGUgYW5kIHdyaXRhYmxlIHZpZXcgb2YgdGhlIGJ1ZmZlci4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZ2V0YnVmZmVyIG9uIGNsb3NlZCBmaWxlIikKICAgICAgICByZXR1cm4gbWVtb3J5dmlldyhzZWxmLl9idWZmZXIpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2J1ZmZlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsZWFyKCkKICAgICAgICBzdXBlcigpLmNsb3NlKCkKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKICAgICAgICBpZiBzaXplIGlzIE5vbmU6CiAgICAgICAgICAgIHNpemUgPSAtMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNpemVfaW5kZXggPSBzaXplLl9faW5kZXhfXwogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJ7c2l6ZSFyfSBpcyBub3QgYW4gaW50ZWdlciIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzaXplID0gc2l6ZV9pbmRleCgpCiAgICAgICAgaWYgc2l6ZSA8IDA6CiAgICAgICAgICAgIHNpemUgPSBsZW4oc2VsZi5fYnVmZmVyKQogICAgICAgIGlmIGxlbihzZWxmLl9idWZmZXIpIDw9IHNlbGYuX3BvczoKICAgICAgICAgICAgcmV0dXJuIGIiIgogICAgICAgIG5ld3BvcyA9IG1pbihsZW4oc2VsZi5fYnVmZmVyKSwgc2VsZi5fcG9zICsgc2l6ZSkKICAgICAgICBiID0gc2VsZi5fYnVmZmVyW3NlbGYuX3BvcyA6IG5ld3Bvc10KICAgICAgICBzZWxmLl9wb3MgPSBuZXdwb3MKICAgICAgICByZXR1cm4gYnl0ZXMoYikKCiAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgIiIiVGhpcyBpcyB0aGUgc2FtZSBhcyByZWFkLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnJlYWQoc2l6ZSkKCiAgICBkZWYgd3JpdGUoc2VsZiwgYik6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKICAgICAgICBpZiBpc2luc3RhbmNlKGIsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2FuJ3Qgd3JpdGUgc3RyIHRvIGJpbmFyeSBzdHJlYW0iKQogICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyB2aWV3OgogICAgICAgICAgICBuID0gdmlldy5uYnl0ZXMgICMgU2l6ZSBvZiBhbnkgYnl0ZXMtbGlrZSBvYmplY3QKICAgICAgICBpZiBuID09IDA6CiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgcG9zID0gc2VsZi5fcG9zCiAgICAgICAgaWYgcG9zID4gbGVuKHNlbGYuX2J1ZmZlcik6CiAgICAgICAgICAgICMgSW5zZXJ0cyBudWxsIGJ5dGVzIGJldHdlZW4gdGhlIGN1cnJlbnQgZW5kIG9mIHRoZSBmaWxlCiAgICAgICAgICAgICMgYW5kIHRoZSBuZXcgd3JpdGUgcG9zaXRpb24uCiAgICAgICAgICAgIHBhZGRpbmcgPSBiJ1x4MDAnICogKHBvcyAtIGxlbihzZWxmLl9idWZmZXIpKQogICAgICAgICAgICBzZWxmLl9idWZmZXIgKz0gcGFkZGluZwogICAgICAgIHNlbGYuX2J1ZmZlcltwb3M6cG9zICsgbl0gPSBiCiAgICAgICAgc2VsZi5fcG9zICs9IG4KICAgICAgICByZXR1cm4gbgoKICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZWVrIG9uIGNsb3NlZCBmaWxlIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBvc19pbmRleCA9IHBvcy5fX2luZGV4X18KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIntwb3Mhcn0gaXMgbm90IGFuIGludGVnZXIiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBvcyA9IHBvc19pbmRleCgpCiAgICAgICAgaWYgd2hlbmNlID09IDA6CiAgICAgICAgICAgIGlmIHBvcyA8IDA6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBzZWVrIHBvc2l0aW9uICVyIiAlIChwb3MsKSkKICAgICAgICAgICAgc2VsZi5fcG9zID0gcG9zCiAgICAgICAgZWxpZiB3aGVuY2UgPT0gMToKICAgICAgICAgICAgc2VsZi5fcG9zID0gbWF4KDAsIHNlbGYuX3BvcyArIHBvcykKICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgogICAgICAgICAgICBzZWxmLl9wb3MgPSBtYXgoMCwgbGVuKHNlbGYuX2J1ZmZlcikgKyBwb3MpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgd2hlbmNlIHZhbHVlIikKICAgICAgICByZXR1cm4gc2VsZi5fcG9zCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRlbGwgb24gY2xvc2VkIGZpbGUiKQogICAgICAgIHJldHVybiBzZWxmLl9wb3MKCiAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgcG9zPU5vbmUpOgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0cnVuY2F0ZSBvbiBjbG9zZWQgZmlsZSIpCiAgICAgICAgaWYgcG9zIGlzIE5vbmU6CiAgICAgICAgICAgIHBvcyA9IHNlbGYuX3BvcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHBvc19pbmRleCA9IHBvcy5fX2luZGV4X18KICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYie3BvcyFyfSBpcyBub3QgYW4gaW50ZWdlciIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwb3MgPSBwb3NfaW5kZXgoKQogICAgICAgICAgICBpZiBwb3MgPCAwOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmVnYXRpdmUgdHJ1bmNhdGUgcG9zaXRpb24gJXIiICUgKHBvcywpKQogICAgICAgIGRlbCBzZWxmLl9idWZmZXJbcG9zOl0KICAgICAgICByZXR1cm4gcG9zCgogICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlLiIpCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUuIikKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZS4iKQogICAgICAgIHJldHVybiBUcnVlCgoKY2xhc3MgQnVmZmVyZWRSZWFkZXIoX0J1ZmZlcmVkSU9NaXhpbik6CgogICAgIiIiQnVmZmVyZWRSZWFkZXIocmF3WywgYnVmZmVyX3NpemVdKQoKICAgIEEgYnVmZmVyIGZvciBhIHJlYWRhYmxlLCBzZXF1ZW50aWFsIEJhc2VSYXdJTyBvYmplY3QuCgogICAgVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBCdWZmZXJlZFJlYWRlciBmb3IgdGhlIGdpdmVuIHJlYWRhYmxlIHJhdwogICAgc3RyZWFtIGFuZCBidWZmZXJfc2l6ZS4gSWYgYnVmZmVyX3NpemUgaXMgb21pdHRlZCwgREVGQVVMVF9CVUZGRVJfU0laRQogICAgaXMgdXNlZC4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpOgogICAgICAgICIiIkNyZWF0ZSBhIG5ldyBidWZmZXJlZCByZWFkZXIgdXNpbmcgdGhlIGdpdmVuIHJlYWRhYmxlIHJhdyBJTyBvYmplY3QuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHJhdy5yZWFkYWJsZSgpOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCcicmF3IiBhcmd1bWVudCBtdXN0IGJlIHJlYWRhYmxlLicpCgogICAgICAgIF9CdWZmZXJlZElPTWl4aW4uX19pbml0X18oc2VsZiwgcmF3KQogICAgICAgIGlmIGJ1ZmZlcl9zaXplIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgYnVmZmVyIHNpemUiKQogICAgICAgIHNlbGYuYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZQogICAgICAgIHNlbGYuX3Jlc2V0X3JlYWRfYnVmKCkKICAgICAgICBzZWxmLl9yZWFkX2xvY2sgPSBMb2NrKCkKCiAgICBkZWYgcmVhZGFibGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYucmF3LnJlYWRhYmxlKCkKCiAgICBkZWYgX3Jlc2V0X3JlYWRfYnVmKHNlbGYpOgogICAgICAgIHNlbGYuX3JlYWRfYnVmID0gYiIiCiAgICAgICAgc2VsZi5fcmVhZF9wb3MgPSAwCgogICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT1Ob25lKToKICAgICAgICAiIiJSZWFkIHNpemUgYnl0ZXMuCgogICAgICAgIFJldHVybnMgZXhhY3RseSBzaXplIGJ5dGVzIG9mIGRhdGEgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIHJhdyBJTwogICAgICAgIHN0cmVhbSByZWFjaGVzIEVPRiBvciBpZiB0aGUgY2FsbCB3b3VsZCBibG9jayBpbiBub24tYmxvY2tpbmcKICAgICAgICBtb2RlLiBJZiBzaXplIGlzIG5lZ2F0aXZlLCByZWFkIHVudGlsIEVPRiBvciB1bnRpbCByZWFkKCkgd291bGQKICAgICAgICBibG9jay4KICAgICAgICAiIiIKICAgICAgICBpZiBzaXplIGlzIG5vdCBOb25lIGFuZCBzaXplIDwgLTE6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQiKQogICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91bmxvY2tlZChzaXplKQoKICAgIGRlZiBfcmVhZF91bmxvY2tlZChzZWxmLCBuPU5vbmUpOgogICAgICAgIG5vZGF0YV92YWwgPSBiIiIKICAgICAgICBlbXB0eV92YWx1ZXMgPSAoYiIiLCBOb25lKQogICAgICAgIGJ1ZiA9IHNlbGYuX3JlYWRfYnVmCiAgICAgICAgcG9zID0gc2VsZi5fcmVhZF9wb3MKCiAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHdoZW4gdGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkIGlzIHVuc3BlY2lmaWVkLgogICAgICAgIGlmIG4gaXMgTm9uZSBvciBuID09IC0xOgogICAgICAgICAgICBzZWxmLl9yZXNldF9yZWFkX2J1ZigpCiAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5yYXcsICdyZWFkYWxsJyk6CiAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWRhbGwoKQogICAgICAgICAgICAgICAgaWYgY2h1bmsgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmW3BvczpdIG9yIE5vbmUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1Zltwb3M6XSArIGNodW5rCiAgICAgICAgICAgIGNodW5rcyA9IFtidWZbcG9zOl1dICAjIFN0cmlwIHRoZSBjb25zdW1lZCBieXRlcy4KICAgICAgICAgICAgY3VycmVudF9zaXplID0gMAogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIyBSZWFkIHVudGlsIEVPRiBvciB1bnRpbCByZWFkKCkgd291bGQgYmxvY2suCiAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQoKQogICAgICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBjdXJyZW50X3NpemUgKz0gbGVuKGNodW5rKQogICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChjaHVuaykKICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGNodW5rcykgb3Igbm9kYXRhX3ZhbAoKICAgICAgICAjIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBpcyBzcGVjaWZpZWQsIHJldHVybiBhdCBtb3N0IG4gYnl0ZXMuCiAgICAgICAgYXZhaWwgPSBsZW4oYnVmKSAtIHBvcyAgIyBMZW5ndGggb2YgdGhlIGF2YWlsYWJsZSBidWZmZXJlZCBkYXRhLgogICAgICAgIGlmIG4gPD0gYXZhaWw6CiAgICAgICAgICAgICMgRmFzdCBwYXRoOiB0aGUgZGF0YSB0byByZWFkIGlzIGZ1bGx5IGJ1ZmZlcmVkLgogICAgICAgICAgICBzZWxmLl9yZWFkX3BvcyArPSBuCiAgICAgICAgICAgIHJldHVybiBidWZbcG9zOnBvcytuXQogICAgICAgICMgU2xvdyBwYXRoOiByZWFkIGZyb20gdGhlIHN0cmVhbSB1bnRpbCBlbm91Z2ggYnl0ZXMgYXJlIHJlYWQsCiAgICAgICAgIyBvciB1bnRpbCBhbiBFT0Ygb2NjdXJzIG9yIHVudGlsIHJlYWQoKSB3b3VsZCBibG9jay4KICAgICAgICBjaHVua3MgPSBbYnVmW3BvczpdXQogICAgICAgIHdhbnRlZCA9IG1heChzZWxmLmJ1ZmZlcl9zaXplLCBuKQogICAgICAgIHdoaWxlIGF2YWlsIDwgbjoKICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKHdhbnRlZCkKICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgbm9kYXRhX3ZhbCA9IGNodW5rCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBhdmFpbCArPSBsZW4oY2h1bmspCiAgICAgICAgICAgIGNodW5rcy5hcHBlbmQoY2h1bmspCiAgICAgICAgIyBuIGlzIG1vcmUgdGhhbiBhdmFpbCBvbmx5IHdoZW4gYW4gRU9GIG9jY3VycmVkIG9yIHdoZW4KICAgICAgICAjIHJlYWQoKSB3b3VsZCBoYXZlIGJsb2NrZWQuCiAgICAgICAgbiA9IG1pbihuLCBhdmFpbCkKICAgICAgICBvdXQgPSBiIiIuam9pbihjaHVua3MpCiAgICAgICAgc2VsZi5fcmVhZF9idWYgPSBvdXRbbjpdICAjIFNhdmUgdGhlIGV4dHJhIGRhdGEgaW4gdGhlIGJ1ZmZlci4KICAgICAgICBzZWxmLl9yZWFkX3BvcyA9IDAKICAgICAgICByZXR1cm4gb3V0WzpuXSBpZiBvdXQgZWxzZSBub2RhdGFfdmFsCgogICAgZGVmIHBlZWsoc2VsZiwgc2l6ZT0wKToKICAgICAgICAiIiJSZXR1cm5zIGJ1ZmZlcmVkIGJ5dGVzIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBwb3NpdGlvbi4KCiAgICAgICAgVGhlIGFyZ3VtZW50IGluZGljYXRlcyBhIGRlc2lyZWQgbWluaW1hbCBudW1iZXIgb2YgYnl0ZXM7IHdlCiAgICAgICAgZG8gYXQgbW9zdCBvbmUgcmF3IHJlYWQgdG8gc2F0aXNmeSBpdC4gIFdlIG5ldmVyIHJldHVybiBtb3JlCiAgICAgICAgdGhhbiBzZWxmLmJ1ZmZlcl9zaXplLgogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcGVla191bmxvY2tlZChzaXplKQoKICAgIGRlZiBfcGVla191bmxvY2tlZChzZWxmLCBuPTApOgogICAgICAgIHdhbnQgPSBtaW4obiwgc2VsZi5idWZmZXJfc2l6ZSkKICAgICAgICBoYXZlID0gbGVuKHNlbGYuX3JlYWRfYnVmKSAtIHNlbGYuX3JlYWRfcG9zCiAgICAgICAgaWYgaGF2ZSA8IHdhbnQgb3IgaGF2ZSA8PSAwOgogICAgICAgICAgICB0b19yZWFkID0gc2VsZi5idWZmZXJfc2l6ZSAtIGhhdmUKICAgICAgICAgICAgY3VycmVudCA9IHNlbGYucmF3LnJlYWQodG9fcmVhZCkKICAgICAgICAgICAgaWYgY3VycmVudDoKICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfYnVmID0gc2VsZi5fcmVhZF9idWZbc2VsZi5fcmVhZF9wb3M6XSArIGN1cnJlbnQKICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zID0gMAogICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2J1ZltzZWxmLl9yZWFkX3BvczpdCgogICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgogICAgICAgICIiIlJlYWRzIHVwIHRvIHNpemUgYnl0ZXMsIHdpdGggYXQgbW9zdCBvbmUgcmVhZCgpIHN5c3RlbSBjYWxsLiIiIgogICAgICAgICMgUmV0dXJucyB1cCB0byBzaXplIGJ5dGVzLiAgSWYgYXQgbGVhc3Qgb25lIGJ5dGUgaXMgYnVmZmVyZWQsIHdlCiAgICAgICAgIyBvbmx5IHJldHVybiBidWZmZXJlZCBieXRlcy4gIE90aGVyd2lzZSwgd2UgZG8gb25lIHJhdyByZWFkLgogICAgICAgIGlmIHNpemUgPCAwOgogICAgICAgICAgICBzaXplID0gc2VsZi5idWZmZXJfc2l6ZQogICAgICAgIGlmIHNpemUgPT0gMDoKICAgICAgICAgICAgcmV0dXJuIGIiIgogICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgogICAgICAgICAgICBzZWxmLl9wZWVrX3VubG9ja2VkKDEpCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VubG9ja2VkKAogICAgICAgICAgICAgICAgbWluKHNpemUsIGxlbihzZWxmLl9yZWFkX2J1ZikgLSBzZWxmLl9yZWFkX3BvcykpCgogICAgIyBJbXBsZW1lbnRpbmcgcmVhZGludG8oKSBhbmQgcmVhZGludG8xKCkgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSAod2UKICAgICMgY291bGQgcmVseSBvbiB0aGUgYmFzZSBjbGFzcyB0aGF0IHByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIGluIHRlcm1zIG9mCiAgICAjIHJlYWQoKSBhbmQgcmVhZDEoKSkuIFdlIGRvIGl0IGFueXdheSB0byBrZWVwIHRoZSBfcHlpbyBpbXBsZW1lbnRhdGlvbgogICAgIyBzaW1pbGFyIHRvIHRoZSBpbyBpbXBsZW1lbnRhdGlvbiAod2hpY2ggaW1wbGVtZW50cyB0aGUgbWV0aG9kcyBmb3IKICAgICMgcGVyZm9ybWFuY2UgcmVhc29ucykuCiAgICBkZWYgX3JlYWRpbnRvKHNlbGYsIGJ1ZiwgcmVhZDEpOgogICAgICAgICIiIlJlYWQgZGF0YSBpbnRvICpidWYqIHdpdGggYXQgbW9zdCBvbmUgc3lzdGVtIGNhbGwuIiIiCgogICAgICAgICMgTmVlZCB0byBjcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCBvZiB0eXBlICdiJywgb3RoZXJ3aXNlCiAgICAgICAgIyB3ZSBtYXkgbm90IGJlIGFibGUgdG8gYXNzaWduIGJ5dGVzIHRvIGl0LCBhbmQgc2xpY2luZyBpdAogICAgICAgICMgd291bGQgY3JlYXRlIGEgbmV3IG9iamVjdC4KICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShidWYsIG1lbW9yeXZpZXcpOgogICAgICAgICAgICBidWYgPSBtZW1vcnl2aWV3KGJ1ZikKICAgICAgICBpZiBidWYubmJ5dGVzID09IDA6CiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgYnVmID0gYnVmLmNhc3QoJ0InKQoKICAgICAgICB3cml0dGVuID0gMAogICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgogICAgICAgICAgICB3aGlsZSB3cml0dGVuIDwgbGVuKGJ1Zik6CgogICAgICAgICAgICAgICAgIyBGaXJzdCB0cnkgdG8gcmVhZCBmcm9tIGludGVybmFsIGJ1ZmZlcgogICAgICAgICAgICAgICAgYXZhaWwgPSBtaW4obGVuKHNlbGYuX3JlYWRfYnVmKSAtIHNlbGYuX3JlYWRfcG9zLCBsZW4oYnVmKSkKICAgICAgICAgICAgICAgIGlmIGF2YWlsOgogICAgICAgICAgICAgICAgICAgIGJ1Zlt3cml0dGVuOndyaXR0ZW4rYXZhaWxdID0gXAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2J1ZltzZWxmLl9yZWFkX3BvczpzZWxmLl9yZWFkX3BvcythdmFpbF0KICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3BvcyArPSBhdmFpbAogICAgICAgICAgICAgICAgICAgIHdyaXR0ZW4gKz0gYXZhaWwKICAgICAgICAgICAgICAgICAgICBpZiB3cml0dGVuID09IGxlbihidWYpOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgICAgICMgSWYgcmVtYWluaW5nIHNwYWNlIGluIGNhbGxlcnMgYnVmZmVyIGlzIGxhcmdlciB0aGFuCiAgICAgICAgICAgICAgICAjIGludGVybmFsIGJ1ZmZlciwgcmVhZCBkaXJlY3RseSBpbnRvIGNhbGxlcnMgYnVmZmVyCiAgICAgICAgICAgICAgICBpZiBsZW4oYnVmKSAtIHdyaXR0ZW4gPiBzZWxmLmJ1ZmZlcl9zaXplOgogICAgICAgICAgICAgICAgICAgIG4gPSBzZWxmLnJhdy5yZWFkaW50byhidWZbd3JpdHRlbjpdKQogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhayAjIGVvZgogICAgICAgICAgICAgICAgICAgIHdyaXR0ZW4gKz0gbgoKICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlIHJlZmlsbCBpbnRlcm5hbCBidWZmZXIgLSB1bmxlc3Mgd2UncmUKICAgICAgICAgICAgICAgICMgaW4gcmVhZDEgbW9kZSBhbmQgYWxyZWFkeSBnb3Qgc29tZSBkYXRhCiAgICAgICAgICAgICAgICBlbGlmIG5vdCAocmVhZDEgYW5kIHdyaXR0ZW4pOgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wZWVrX3VubG9ja2VkKDEpOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhayAjIGVvZgoKICAgICAgICAgICAgICAgICMgSW4gcmVhZGludG8xIG1vZGUsIHJldHVybiBhcyBzb29uIGFzIHdlIGhhdmUgc29tZSBkYXRhCiAgICAgICAgICAgICAgICBpZiByZWFkMSBhbmQgd3JpdHRlbjoKICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICByZXR1cm4gd3JpdHRlbgoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnRlbGwoc2VsZikgLSBsZW4oc2VsZi5fcmVhZF9idWYpICsgc2VsZi5fcmVhZF9wb3MKCiAgICBkZWYgc2VlayhzZWxmLCBwb3MsIHdoZW5jZT0wKToKICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICB3aXRoIHNlbGYuX3JlYWRfbG9jazoKICAgICAgICAgICAgaWYgd2hlbmNlID09IDE6CiAgICAgICAgICAgICAgICBwb3MgLT0gbGVuKHNlbGYuX3JlYWRfYnVmKSAtIHNlbGYuX3JlYWRfcG9zCiAgICAgICAgICAgIHBvcyA9IF9CdWZmZXJlZElPTWl4aW4uc2VlayhzZWxmLCBwb3MsIHdoZW5jZSkKICAgICAgICAgICAgc2VsZi5fcmVzZXRfcmVhZF9idWYoKQogICAgICAgICAgICByZXR1cm4gcG9zCgpjbGFzcyBCdWZmZXJlZFdyaXRlcihfQnVmZmVyZWRJT01peGluKToKCiAgICAiIiJBIGJ1ZmZlciBmb3IgYSB3cml0ZWFibGUgc2VxdWVudGlhbCBSYXdJTyBvYmplY3QuCgogICAgVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBCdWZmZXJlZFdyaXRlciBmb3IgdGhlIGdpdmVuIHdyaXRlYWJsZSByYXcKICAgIHN0cmVhbS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8KICAgIERFRkFVTFRfQlVGRkVSX1NJWkUuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICBpZiBub3QgcmF3LndyaXRhYmxlKCk6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJyJyYXciIGFyZ3VtZW50IG11c3QgYmUgd3JpdGFibGUuJykKCiAgICAgICAgX0J1ZmZlcmVkSU9NaXhpbi5fX2luaXRfXyhzZWxmLCByYXcpCiAgICAgICAgaWYgYnVmZmVyX3NpemUgPD0gMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBidWZmZXIgc2l6ZSIpCiAgICAgICAgc2VsZi5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplCiAgICAgICAgc2VsZi5fd3JpdGVfYnVmID0gYnl0ZWFycmF5KCkKICAgICAgICBzZWxmLl93cml0ZV9sb2NrID0gTG9jaygpCgogICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnJhdy53cml0YWJsZSgpCgogICAgZGVmIHdyaXRlKHNlbGYsIGIpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoYiwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW4ndCB3cml0ZSBzdHIgdG8gYmluYXJ5IHN0cmVhbSIpCiAgICAgICAgd2l0aCBzZWxmLl93cml0ZV9sb2NrOgogICAgICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKICAgICAgICAgICAgIyBYWFggd2UgY2FuIGltcGxlbWVudCBzb21lIG1vcmUgdHJpY2tzIHRvIHRyeSBhbmQgYXZvaWQKICAgICAgICAgICAgIyBwYXJ0aWFsIHdyaXRlcwogICAgICAgICAgICBpZiBsZW4oc2VsZi5fd3JpdGVfYnVmKSA+IHNlbGYuYnVmZmVyX3NpemU6CiAgICAgICAgICAgICAgICAjIFdlJ3JlIGZ1bGwsIHNvIGxldCdzIHByZS1mbHVzaCB0aGUgYnVmZmVyLiAgKFRoaXMgbWF5CiAgICAgICAgICAgICAgICAjIHJhaXNlIEJsb2NraW5nSU9FcnJvciB3aXRoIGNoYXJhY3RlcnNfd3JpdHRlbiA9PSAwLikKICAgICAgICAgICAgICAgIHNlbGYuX2ZsdXNoX3VubG9ja2VkKCkKICAgICAgICAgICAgYmVmb3JlID0gbGVuKHNlbGYuX3dyaXRlX2J1ZikKICAgICAgICAgICAgc2VsZi5fd3JpdGVfYnVmLmV4dGVuZChiKQogICAgICAgICAgICB3cml0dGVuID0gbGVuKHNlbGYuX3dyaXRlX2J1ZikgLSBiZWZvcmUKICAgICAgICAgICAgaWYgbGVuKHNlbGYuX3dyaXRlX2J1ZikgPiBzZWxmLmJ1ZmZlcl9zaXplOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZsdXNoX3VubG9ja2VkKCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5fd3JpdGVfYnVmKSA+IHNlbGYuYnVmZmVyX3NpemU6CiAgICAgICAgICAgICAgICAgICAgICAgICMgV2UndmUgaGl0IHRoZSBidWZmZXJfc2l6ZS4gV2UgaGF2ZSB0byBhY2NlcHQgYSBwYXJ0aWFsCiAgICAgICAgICAgICAgICAgICAgICAgICMgd3JpdGUgYW5kIGN1dCBiYWNrIG91ciBidWZmZXIuCiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJhZ2UgPSBsZW4oc2VsZi5fd3JpdGVfYnVmKSAtIHNlbGYuYnVmZmVyX3NpemUKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdHRlbiAtPSBvdmVyYWdlCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2J1ZiA9IHNlbGYuX3dyaXRlX2J1Zls6c2VsZi5idWZmZXJfc2l6ZV0KICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmxvY2tpbmdJT0Vycm9yKGUuZXJybm8sIGUuc3RyZXJyb3IsIHdyaXR0ZW4pCiAgICAgICAgICAgIHJldHVybiB3cml0dGVuCgogICAgZGVmIHRydW5jYXRlKHNlbGYsIHBvcz1Ob25lKToKICAgICAgICB3aXRoIHNlbGYuX3dyaXRlX2xvY2s6CiAgICAgICAgICAgIHNlbGYuX2ZsdXNoX3VubG9ja2VkKCkKICAgICAgICAgICAgaWYgcG9zIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBwb3MgPSBzZWxmLnJhdy50ZWxsKCkKICAgICAgICAgICAgcmV0dXJuIHNlbGYucmF3LnRydW5jYXRlKHBvcykKCiAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgd2l0aCBzZWxmLl93cml0ZV9sb2NrOgogICAgICAgICAgICBzZWxmLl9mbHVzaF91bmxvY2tlZCgpCgogICAgZGVmIF9mbHVzaF91bmxvY2tlZChzZWxmKToKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZmx1c2ggb24gY2xvc2VkIGZpbGUiKQogICAgICAgIHdoaWxlIHNlbGYuX3dyaXRlX2J1ZjoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbiA9IHNlbGYucmF3LndyaXRlKHNlbGYuX3dyaXRlX2J1ZikKICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic2VsZi5yYXcgc2hvdWxkIGltcGxlbWVudCBSYXdJT0Jhc2U6IGl0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIG5vdCByYWlzZSBCbG9ja2luZ0lPRXJyb3IiKQogICAgICAgICAgICBpZiBuIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBCbG9ja2luZ0lPRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgZXJybm8uRUFHQUlOLAogICAgICAgICAgICAgICAgICAgICJ3cml0ZSBjb3VsZCBub3QgY29tcGxldGUgd2l0aG91dCBibG9ja2luZyIsIDApCiAgICAgICAgICAgIGlmIG4gPiBsZW4oc2VsZi5fd3JpdGVfYnVmKSBvciBuIDwgMDoKICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIndyaXRlKCkgcmV0dXJuZWQgaW5jb3JyZWN0IG51bWJlciBvZiBieXRlcyIpCiAgICAgICAgICAgIGRlbCBzZWxmLl93cml0ZV9idWZbOm5dCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgcmV0dXJuIF9CdWZmZXJlZElPTWl4aW4udGVsbChzZWxmKSArIGxlbihzZWxmLl93cml0ZV9idWYpCgogICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6CiAgICAgICAgaWYgd2hlbmNlIG5vdCBpbiB2YWxpZF9zZWVrX2ZsYWdzOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgd2l0aCBzZWxmLl93cml0ZV9sb2NrOgogICAgICAgICAgICBzZWxmLl9mbHVzaF91bmxvY2tlZCgpCiAgICAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnNlZWsoc2VsZiwgcG9zLCB3aGVuY2UpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHdpdGggc2VsZi5fd3JpdGVfbG9jazoKICAgICAgICAgICAgaWYgc2VsZi5yYXcgaXMgTm9uZSBvciBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICMgV2UgaGF2ZSB0byByZWxlYXNlIHRoZSBsb2NrIGFuZCBjYWxsIHNlbGYuZmx1c2goKSAod2hpY2ggd2lsbAogICAgICAgICMgcHJvYmFibHkganVzdCByZS10YWtlIHRoZSBsb2NrKSBpbiBjYXNlIGZsdXNoIGhhcyBiZWVuIG92ZXJyaWRkZW4gaW4KICAgICAgICAjIGEgc3ViY2xhc3Mgb3IgdGhlIHVzZXIgc2V0IHNlbGYuZmx1c2ggdG8gc29tZXRoaW5nLiBUaGlzIGlzIHRoZSBzYW1lCiAgICAgICAgIyBiZWhhdmlvciBhcyB0aGUgQyBpbXBsZW1lbnRhdGlvbi4KICAgICAgICB0cnk6CiAgICAgICAgICAgICMgbWF5IHJhaXNlIEJsb2NraW5nSU9FcnJvciBvciBCcm9rZW5QaXBlRXJyb3IgZXRjCiAgICAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfbG9jazoKICAgICAgICAgICAgICAgIHNlbGYucmF3LmNsb3NlKCkKCgpjbGFzcyBCdWZmZXJlZFJXUGFpcihCdWZmZXJlZElPQmFzZSk6CgogICAgIiIiQSBidWZmZXJlZCByZWFkZXIgYW5kIHdyaXRlciBvYmplY3QgdG9nZXRoZXIuCgogICAgQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0bwogICAgZm9ybSBhIHNlcXVlbnRpYWwgSU8gb2JqZWN0IHRoYXQgY2FuIHJlYWQgYW5kIHdyaXRlLiBUaGlzIGlzIHR5cGljYWxseQogICAgdXNlZCB3aXRoIGEgc29ja2V0IG9yIHR3by13YXkgcGlwZS4KCiAgICByZWFkZXIgYW5kIHdyaXRlciBhcmUgUmF3SU9CYXNlIG9iamVjdHMgdGhhdCBhcmUgcmVhZGFibGUgYW5kCiAgICB3cml0ZWFibGUgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0bwogICAgREVGQVVMVF9CVUZGRVJfU0laRS4KICAgICIiIgoKICAgICMgWFhYIFRoZSB1c2VmdWxuZXNzIG9mIHRoaXMgKGNvbXBhcmVkIHRvIGhhdmluZyB0d28gc2VwYXJhdGUgSU8KICAgICMgb2JqZWN0cykgaXMgcXVlc3Rpb25hYmxlLgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFkZXIsIHdyaXRlciwgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSk6CiAgICAgICAgIiIiQ29uc3RydWN0b3IuCgogICAgICAgIFRoZSBhcmd1bWVudHMgYXJlIHR3byBSYXdJTyBpbnN0YW5jZXMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHJlYWRlci5yZWFkYWJsZSgpOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCcicmVhZGVyIiBhcmd1bWVudCBtdXN0IGJlIHJlYWRhYmxlLicpCgogICAgICAgIGlmIG5vdCB3cml0ZXIud3JpdGFibGUoKToKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignIndyaXRlciIgYXJndW1lbnQgbXVzdCBiZSB3cml0YWJsZS4nKQoKICAgICAgICBzZWxmLnJlYWRlciA9IEJ1ZmZlcmVkUmVhZGVyKHJlYWRlciwgYnVmZmVyX3NpemUpCiAgICAgICAgc2VsZi53cml0ZXIgPSBCdWZmZXJlZFdyaXRlcih3cml0ZXIsIGJ1ZmZlcl9zaXplKQoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgIGlmIHNpemUgaXMgTm9uZToKICAgICAgICAgICAgc2l6ZSA9IC0xCiAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLnJlYWQoc2l6ZSkKCiAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CiAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLnJlYWRpbnRvKGIpCgogICAgZGVmIHdyaXRlKHNlbGYsIGIpOgogICAgICAgIHJldHVybiBzZWxmLndyaXRlci53cml0ZShiKQoKICAgIGRlZiBwZWVrKHNlbGYsIHNpemU9MCk6CiAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLnBlZWsoc2l6ZSkKCiAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLnJlYWQxKHNpemUpCgogICAgZGVmIHJlYWRpbnRvMShzZWxmLCBiKToKICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucmVhZGludG8xKGIpCgogICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5yZWFkYWJsZSgpCgogICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLndyaXRlci53cml0YWJsZSgpCgogICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLndyaXRlci5mbHVzaCgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi53cml0ZXIuY2xvc2UoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYucmVhZGVyLmNsb3NlKCkKCiAgICBkZWYgaXNhdHR5KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5pc2F0dHkoKSBvciBzZWxmLndyaXRlci5pc2F0dHkoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNsb3NlZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi53cml0ZXIuY2xvc2VkCgoKY2xhc3MgQnVmZmVyZWRSYW5kb20oQnVmZmVyZWRXcml0ZXIsIEJ1ZmZlcmVkUmVhZGVyKToKCiAgICAiIiJBIGJ1ZmZlcmVkIGludGVyZmFjZSB0byByYW5kb20gYWNjZXNzIHN0cmVhbXMuCgogICAgVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSByZWFkZXIgYW5kIHdyaXRlciBmb3IgYSBzZWVrYWJsZSBzdHJlYW0sCiAgICByYXcsIGdpdmVuIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXQKICAgIGRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICByYXcuX2NoZWNrU2Vla2FibGUoKQogICAgICAgIEJ1ZmZlcmVkUmVhZGVyLl9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemUpCiAgICAgICAgQnVmZmVyZWRXcml0ZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSkKCiAgICBkZWYgc2VlayhzZWxmLCBwb3MsIHdoZW5jZT0wKToKICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICBpZiBzZWxmLl9yZWFkX2J1ZjoKICAgICAgICAgICAgIyBVbmRvIHJlYWQgYWhlYWQuCiAgICAgICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgogICAgICAgICAgICAgICAgc2VsZi5yYXcuc2VlayhzZWxmLl9yZWFkX3BvcyAtIGxlbihzZWxmLl9yZWFkX2J1ZiksIDEpCiAgICAgICAgIyBGaXJzdCBkbyB0aGUgcmF3IHNlZWssIHRoZW4gZW1wdHkgdGhlIHJlYWQgYnVmZmVyLCBzbyB0aGF0CiAgICAgICAgIyBpZiB0aGUgcmF3IHNlZWsgZmFpbHMsIHdlIGRvbid0IGxvc2UgYnVmZmVyZWQgZGF0YSBmb3JldmVyLgogICAgICAgIHBvcyA9IHNlbGYucmF3LnNlZWsocG9zLCB3aGVuY2UpCiAgICAgICAgd2l0aCBzZWxmLl9yZWFkX2xvY2s6CiAgICAgICAgICAgIHNlbGYuX3Jlc2V0X3JlYWRfYnVmKCkKICAgICAgICBpZiBwb3MgPCAwOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJzZWVrKCkgcmV0dXJuZWQgaW52YWxpZCBwb3NpdGlvbiIpCiAgICAgICAgcmV0dXJuIHBvcwoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3dyaXRlX2J1ZjoKICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlcmVkV3JpdGVyLnRlbGwoc2VsZikKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gQnVmZmVyZWRSZWFkZXIudGVsbChzZWxmKQoKICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBwb3M9Tm9uZSk6CiAgICAgICAgaWYgcG9zIGlzIE5vbmU6CiAgICAgICAgICAgIHBvcyA9IHNlbGYudGVsbCgpCiAgICAgICAgIyBVc2Ugc2VlayB0byBmbHVzaCB0aGUgcmVhZCBidWZmZXIuCiAgICAgICAgcmV0dXJuIEJ1ZmZlcmVkV3JpdGVyLnRydW5jYXRlKHNlbGYsIHBvcykKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgogICAgICAgIGlmIHNpemUgaXMgTm9uZToKICAgICAgICAgICAgc2l6ZSA9IC0xCiAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgcmV0dXJuIEJ1ZmZlcmVkUmVhZGVyLnJlYWQoc2VsZiwgc2l6ZSkKCiAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CiAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgcmV0dXJuIEJ1ZmZlcmVkUmVhZGVyLnJlYWRpbnRvKHNlbGYsIGIpCgogICAgZGVmIHBlZWsoc2VsZiwgc2l6ZT0wKToKICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICByZXR1cm4gQnVmZmVyZWRSZWFkZXIucGVlayhzZWxmLCBzaXplKQoKICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICByZXR1cm4gQnVmZmVyZWRSZWFkZXIucmVhZDEoc2VsZiwgc2l6ZSkKCiAgICBkZWYgcmVhZGludG8xKHNlbGYsIGIpOgogICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgIHJldHVybiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bzEoc2VsZiwgYikKCiAgICBkZWYgd3JpdGUoc2VsZiwgYik6CiAgICAgICAgaWYgc2VsZi5fcmVhZF9idWY6CiAgICAgICAgICAgICMgVW5kbyByZWFkYWhlYWQKICAgICAgICAgICAgd2l0aCBzZWxmLl9yZWFkX2xvY2s6CiAgICAgICAgICAgICAgICBzZWxmLnJhdy5zZWVrKHNlbGYuX3JlYWRfcG9zIC0gbGVuKHNlbGYuX3JlYWRfYnVmKSwgMSkKICAgICAgICAgICAgICAgIHNlbGYuX3Jlc2V0X3JlYWRfYnVmKCkKICAgICAgICByZXR1cm4gQnVmZmVyZWRXcml0ZXIud3JpdGUoc2VsZiwgYikKCgpjbGFzcyBGaWxlSU8oUmF3SU9CYXNlKToKICAgIF9mZCA9IC0xCiAgICBfY3JlYXRlZCA9IEZhbHNlCiAgICBfcmVhZGFibGUgPSBGYWxzZQogICAgX3dyaXRhYmxlID0gRmFsc2UKICAgIF9hcHBlbmRpbmcgPSBGYWxzZQogICAgX3NlZWthYmxlID0gTm9uZQogICAgX2Nsb3NlZmQgPSBUcnVlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKToKICAgICAgICAiIiJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicgKGRlZmF1bHQpLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcsCiAgICAgICAgd3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdAogICAgICAgIGRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZAogICAgICAgIHdoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeQogICAgICAgIGV4aXN0cyB3aGVuIG9wZW5lZCBmb3IgY3JlYXRpbmcuIE9wZW5pbmcgYSBmaWxlIGZvciBjcmVhdGluZyBpbXBsaWVzCiAgICAgICAgd3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvICd3Jy4gQWRkIGEgJysnIHRvIHRoZSBtb2RlCiAgICAgICAgdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieQogICAgICAgIHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZQogICAgICAgIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuCiAgICAgICAgKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKgogICAgICAgIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fZmQgPj0gMDoKICAgICAgICAgICAgIyBIYXZlIHRvIGNsb3NlIHRoZSBleGlzdGluZyBmaWxlIGZpcnN0LgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZkOgogICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYuX2ZkKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5fZmQgPSAtMQoKICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIGZsb2F0KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQnKQogICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgaW50KToKICAgICAgICAgICAgZmQgPSBmaWxlCiAgICAgICAgICAgIGlmIGZkIDwgMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25lZ2F0aXZlIGZpbGUgZGVzY3JpcHRvcicpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZmQgPSAtMQoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtb2RlLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ludmFsaWQgbW9kZTogJXMnICUgKG1vZGUsKSkKICAgICAgICBpZiBub3Qgc2V0KG1vZGUpIDw9IHNldCgneHJ3YWIrJyk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgbW9kZTogJXMnICUgKG1vZGUsKSkKICAgICAgICBpZiBzdW0oYyBpbiAncndheCcgZm9yIGMgaW4gbW9kZSkgIT0gMSBvciBtb2RlLmNvdW50KCcrJykgPiAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgY3JlYXRlL3JlYWQvd3JpdGUvYXBwZW5kICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kZSBhbmQgYXQgbW9zdCBvbmUgcGx1cycpCgogICAgICAgIGlmICd4JyBpbiBtb2RlOgogICAgICAgICAgICBzZWxmLl9jcmVhdGVkID0gVHJ1ZQogICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKICAgICAgICAgICAgZmxhZ3MgPSBvcy5PX0VYQ0wgfCBvcy5PX0NSRUFUCiAgICAgICAgZWxpZiAncicgaW4gbW9kZToKICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBUcnVlCiAgICAgICAgICAgIGZsYWdzID0gMAogICAgICAgIGVsaWYgJ3cnIGluIG1vZGU6CiAgICAgICAgICAgIHNlbGYuX3dyaXRhYmxlID0gVHJ1ZQogICAgICAgICAgICBmbGFncyA9IG9zLk9fQ1JFQVQgfCBvcy5PX1RSVU5DCiAgICAgICAgZWxpZiAnYScgaW4gbW9kZToKICAgICAgICAgICAgc2VsZi5fd3JpdGFibGUgPSBUcnVlCiAgICAgICAgICAgIHNlbGYuX2FwcGVuZGluZyA9IFRydWUKICAgICAgICAgICAgZmxhZ3MgPSBvcy5PX0FQUEVORCB8IG9zLk9fQ1JFQVQKCiAgICAgICAgaWYgJysnIGluIG1vZGU6CiAgICAgICAgICAgIHNlbGYuX3JlYWRhYmxlID0gVHJ1ZQogICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKCiAgICAgICAgaWYgc2VsZi5fcmVhZGFibGUgYW5kIHNlbGYuX3dyaXRhYmxlOgogICAgICAgICAgICBmbGFncyB8PSBvcy5PX1JEV1IKICAgICAgICBlbGlmIHNlbGYuX3JlYWRhYmxlOgogICAgICAgICAgICBmbGFncyB8PSBvcy5PX1JET05MWQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZsYWdzIHw9IG9zLk9fV1JPTkxZCgogICAgICAgIGZsYWdzIHw9IGdldGF0dHIob3MsICdPX0JJTkFSWScsIDApCgogICAgICAgIG5vaW5oZXJpdF9mbGFnID0gKGdldGF0dHIob3MsICdPX05PSU5IRVJJVCcsIDApIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihvcywgJ09fQ0xPRVhFQycsIDApKQogICAgICAgIGZsYWdzIHw9IG5vaW5oZXJpdF9mbGFnCgogICAgICAgIG93bmVkX2ZkID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgZmQgPCAwOgogICAgICAgICAgICAgICAgaWYgbm90IGNsb3NlZmQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IHVzZSBjbG9zZWZkPUZhbHNlIHdpdGggZmlsZSBuYW1lJykKICAgICAgICAgICAgICAgIGlmIG9wZW5lciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihmaWxlLCBmbGFncywgMG82NjYpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGZkID0gb3BlbmVyKGZpbGUsIGZsYWdzKQogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZkLCBpbnQpOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGludGVnZXIgZnJvbSBvcGVuZXInKQogICAgICAgICAgICAgICAgICAgIGlmIGZkIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgZmlsZSBkZXNjcmlwdG9yJykKICAgICAgICAgICAgICAgIG93bmVkX2ZkID0gZmQKICAgICAgICAgICAgICAgIGlmIG5vdCBub2luaGVyaXRfZmxhZzoKICAgICAgICAgICAgICAgICAgICBvcy5zZXRfaW5oZXJpdGFibGUoZmQsIEZhbHNlKQoKICAgICAgICAgICAgc2VsZi5fY2xvc2VmZCA9IGNsb3NlZmQKICAgICAgICAgICAgZmRmc3RhdCA9IG9zLmZzdGF0KGZkKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIoZmRmc3RhdC5zdF9tb2RlKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBJc0FEaXJlY3RvcnlFcnJvcihlcnJuby5FSVNESVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RyZXJyb3IoZXJybm8uRUlTRElSKSwgZmlsZSkKICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgIyBJZ25vcmUgdGhlIEF0dHJpYnV0ZUVycm9yIGlmIHN0YXQuU19JU0RJUiBvciBlcnJuby5FSVNESVIKICAgICAgICAgICAgICAgICMgZG9uJ3QgZXhpc3QuCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHNlbGYuX2Jsa3NpemUgPSBnZXRhdHRyKGZkZnN0YXQsICdzdF9ibGtzaXplJywgMCkKICAgICAgICAgICAgaWYgc2VsZi5fYmxrc2l6ZSA8PSAxOgogICAgICAgICAgICAgICAgc2VsZi5fYmxrc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkUKCiAgICAgICAgICAgIGlmIF9zZXRtb2RlOgogICAgICAgICAgICAgICAgIyBkb24ndCB0cmFuc2xhdGUgbmV3bGluZXMgKFxyXG4gPD0+IFxuKQogICAgICAgICAgICAgICAgX3NldG1vZGUoZmQsIG9zLk9fQklOQVJZKQoKICAgICAgICAgICAgc2VsZi5uYW1lID0gZmlsZQogICAgICAgICAgICBpZiBzZWxmLl9hcHBlbmRpbmc6CiAgICAgICAgICAgICAgICAjIEZvciBjb25zaXN0ZW50IGJlaGF2aW91ciwgd2UgZXhwbGljaXRseSBzZWVrIHRvIHRoZQogICAgICAgICAgICAgICAgIyBlbmQgb2YgZmlsZSAob3RoZXJ3aXNlLCBpdCBtaWdodCBiZSBkb25lIG9ubHkgb24gdGhlCiAgICAgICAgICAgICAgICAjIGZpcnN0IHdyaXRlKCkpLgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBTRUVLX0VORCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FU1BJUEU6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBpZiBvd25lZF9mZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIG9zLmNsb3NlKG93bmVkX2ZkKQogICAgICAgICAgICByYWlzZQogICAgICAgIHNlbGYuX2ZkID0gZmQKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9mZCA+PSAwIGFuZCBzZWxmLl9jbG9zZWZkIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICB3YXJuaW5ncy53YXJuKCd1bmNsb3NlZCBmaWxlICVyJyAlIChzZWxmLCksIFJlc291cmNlV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsIHNvdXJjZT1zZWxmKQogICAgICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmImNhbm5vdCBwaWNrbGUge3NlbGYuX19jbGFzc19fLl9fbmFtZV9fIXJ9IG9iamVjdCIpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGNsYXNzX25hbWUgPSAnJXMuJXMnICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fKQogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByZXR1cm4gJzwlcyBbY2xvc2VkXT4nICUgY2xhc3NfbmFtZQogICAgICAgIHRyeToKICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuICgnPCVzIGZkPSVkIG1vZGU9JXIgY2xvc2VmZD0lcj4nICUKICAgICAgICAgICAgICAgICAgICAoY2xhc3NfbmFtZSwgc2VsZi5fZmQsIHNlbGYubW9kZSwgc2VsZi5fY2xvc2VmZCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICgnPCVzIG5hbWU9JXIgbW9kZT0lciBjbG9zZWZkPSVyPicgJQogICAgICAgICAgICAgICAgICAgIChjbGFzc19uYW1lLCBuYW1lLCBzZWxmLm1vZGUsIHNlbGYuX2Nsb3NlZmQpKQoKICAgIGRlZiBfY2hlY2tSZWFkYWJsZShzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZGFibGU6CiAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uKCdGaWxlIG5vdCBvcGVuIGZvciByZWFkaW5nJykKCiAgICBkZWYgX2NoZWNrV3JpdGFibGUoc2VsZiwgbXNnPU5vbmUpOgogICAgICAgIGlmIG5vdCBzZWxmLl93cml0YWJsZToKICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24oJ0ZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmcnKQoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgIiIiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLgoKICAgICAgICBPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZAogICAgICAgIEluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuCiAgICAgICAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgIHNlbGYuX2NoZWNrUmVhZGFibGUoKQogICAgICAgIGlmIHNpemUgaXMgTm9uZSBvciBzaXplIDwgMDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFsbCgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gb3MucmVhZChzZWxmLl9mZCwgc2l6ZSkKICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiByZWFkYWxsKHNlbGYpOgogICAgICAgICIiIlJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgZmlsZSwgcmV0dXJuZWQgYXMgYnl0ZXMuCgogICAgICAgIEluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIGFzIG11Y2ggYXMgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLAogICAgICAgIG9yIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuICBSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgc2VsZi5fY2hlY2tSZWFkYWJsZSgpCiAgICAgICAgYnVmc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBvcyA9IG9zLmxzZWVrKHNlbGYuX2ZkLCAwLCBTRUVLX0NVUikKICAgICAgICAgICAgZW5kID0gb3MuZnN0YXQoc2VsZi5fZmQpLnN0X3NpemUKICAgICAgICAgICAgaWYgZW5kID49IHBvczoKICAgICAgICAgICAgICAgIGJ1ZnNpemUgPSBlbmQgLSBwb3MgKyAxCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICAgICAgcmVzdWx0ID0gYnl0ZWFycmF5KCkKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBpZiBsZW4ocmVzdWx0KSA+PSBidWZzaXplOgogICAgICAgICAgICAgICAgYnVmc2l6ZSA9IGxlbihyZXN1bHQpCiAgICAgICAgICAgICAgICBidWZzaXplICs9IG1heChidWZzaXplLCBERUZBVUxUX0JVRkZFUl9TSVpFKQogICAgICAgICAgICBuID0gYnVmc2l6ZSAtIGxlbihyZXN1bHQpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGNodW5rID0gb3MucmVhZChzZWxmLl9mZCwgbikKICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgaWYgbm90IGNodW5rOiAjIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZmlsZQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgcmVzdWx0ICs9IGNodW5rCgogICAgICAgIHJldHVybiBieXRlcyhyZXN1bHQpCgogICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgogICAgICAgICIiIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIiIiCiAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikuY2FzdCgnQicpCiAgICAgICAgZGF0YSA9IHNlbGYucmVhZChsZW4obSkpCiAgICAgICAgbiA9IGxlbihkYXRhKQogICAgICAgIG1bOm5dID0gZGF0YQogICAgICAgIHJldHVybiBuCgogICAgZGVmIHdyaXRlKHNlbGYsIGIpOgogICAgICAgICIiIldyaXRlIGJ5dGVzIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciB3cml0dGVuLgoKICAgICAgICBPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuICBJbiBub24tYmxvY2tpbmcgbW9kZSwKICAgICAgICByZXR1cm5zIE5vbmUgaWYgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICBzZWxmLl9jaGVja1dyaXRhYmxlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBvcy53cml0ZShzZWxmLl9mZCwgYikKICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPVNFRUtfU0VUKToKICAgICAgICAiIiJNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uLgoKICAgICAgICBBcmd1bWVudCBvZmZzZXQgaXMgYSBieXRlIGNvdW50LiAgT3B0aW9uYWwgYXJndW1lbnQgd2hlbmNlIGRlZmF1bHRzIHRvCiAgICAgICAgU0VFS19TRVQgb3IgMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0IHNob3VsZCBiZSA+PSAwKTsgb3RoZXIgdmFsdWVzCiAgICAgICAgYXJlIFNFRUtfQ1VSIG9yIDEgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbiwgcG9zaXRpdmUgb3IgbmVnYXRpdmUpLAogICAgICAgIGFuZCBTRUVLX0VORCBvciAyIChtb3ZlIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlLCB1c3VhbGx5IG5lZ2F0aXZlLCBhbHRob3VnaAogICAgICAgIG1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS4KCiAgICAgICAgTm90ZSB0aGF0IG5vdCBhbGwgZmlsZSBvYmplY3RzIGFyZSBzZWVrYWJsZS4KICAgICAgICAiIiIKICAgICAgICBpZiBpc2luc3RhbmNlKHBvcywgZmxvYXQpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2FuIGludGVnZXIgaXMgcmVxdWlyZWQnKQogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICByZXR1cm4gb3MubHNlZWsoc2VsZi5fZmQsIHBvcywgd2hlbmNlKQoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICIiInRlbGwoKSAtPiBpbnQuICBDdXJyZW50IGZpbGUgcG9zaXRpb24uCgogICAgICAgIENhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuIiIiCiAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgIHJldHVybiBvcy5sc2VlayhzZWxmLl9mZCwgMCwgU0VFS19DVVIpCgogICAgZGVmIHRydW5jYXRlKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgIiIiVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzLgoKICAgICAgICBTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS4KICAgICAgICBUaGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGlzIGNoYW5nZWQgdG8gdGhlIHZhbHVlIG9mIHNpemUuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgIHNlbGYuX2NoZWNrV3JpdGFibGUoKQogICAgICAgIGlmIHNpemUgaXMgTm9uZToKICAgICAgICAgICAgc2l6ZSA9IHNlbGYudGVsbCgpCiAgICAgICAgb3MuZnRydW5jYXRlKHNlbGYuX2ZkLCBzaXplKQogICAgICAgIHJldHVybiBzaXplCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkNsb3NlIHRoZSBmaWxlLgoKICAgICAgICBBIGNsb3NlZCBmaWxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmUKICAgICAgICBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4KICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlZmQ6CiAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZmQpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKCiAgICBkZWYgc2Vla2FibGUoc2VsZik6CiAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlIHN1cHBvcnRzIHJhbmRvbS1hY2Nlc3MuIiIiCiAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgIGlmIHNlbGYuX3NlZWthYmxlIGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYudGVsbCgpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBGYWxzZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBUcnVlCiAgICAgICAgcmV0dXJuIHNlbGYuX3NlZWthYmxlCgogICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICIiIlRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgcmVhZCBtb2RlLiIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFibGUKCiAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSB3cml0ZSBtb2RlLiIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICByZXR1cm4gc2VsZi5fd3JpdGFibGUKCiAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLiIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICByZXR1cm4gc2VsZi5fZmQKCiAgICBkZWYgaXNhdHR5KHNlbGYpOgogICAgICAgICIiIlRydWUgaWYgdGhlIGZpbGUgaXMgY29ubmVjdGVkIHRvIGEgVFRZIGRldmljZS4iIiIKICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgcmV0dXJuIG9zLmlzYXR0eShzZWxmLl9mZCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjbG9zZWZkKHNlbGYpOgogICAgICAgICIiIlRydWUgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGNsb3NlZCBieSBjbG9zZSgpLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9jbG9zZWZkCgogICAgQHByb3BlcnR5CiAgICBkZWYgbW9kZShzZWxmKToKICAgICAgICAiIiJTdHJpbmcgZ2l2aW5nIHRoZSBmaWxlIG1vZGUiIiIKICAgICAgICBpZiBzZWxmLl9jcmVhdGVkOgogICAgICAgICAgICBpZiBzZWxmLl9yZWFkYWJsZToKICAgICAgICAgICAgICAgIHJldHVybiAneGIrJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuICd4YicKICAgICAgICBlbGlmIHNlbGYuX2FwcGVuZGluZzoKICAgICAgICAgICAgaWYgc2VsZi5fcmVhZGFibGU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ2FiKycKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiAnYWInCiAgICAgICAgZWxpZiBzZWxmLl9yZWFkYWJsZToKICAgICAgICAgICAgaWYgc2VsZi5fd3JpdGFibGU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ3JiKycKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiAncmInCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICd3YicKCgpjbGFzcyBUZXh0SU9CYXNlKElPQmFzZSk6CgogICAgIiIiQmFzZSBjbGFzcyBmb3IgdGV4dCBJL08uCgogICAgVGhpcyBjbGFzcyBwcm92aWRlcyBhIGNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBpbnRlcmZhY2UgdG8gc3RyZWFtCiAgICBJL08uCiAgICAiIiIKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKICAgICAgICAiIiJSZWFkIGF0IG1vc3Qgc2l6ZSBjaGFyYWN0ZXJzIGZyb20gc3RyZWFtLCB3aGVyZSBzaXplIGlzIGFuIGludC4KCiAgICAgICAgUmVhZCBmcm9tIHVuZGVybHlpbmcgYnVmZmVyIHVudGlsIHdlIGhhdmUgc2l6ZSBjaGFyYWN0ZXJzIG9yIHdlIGhpdCBFT0YuCiAgICAgICAgSWYgc2l6ZSBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRi4KCiAgICAgICAgUmV0dXJucyBhIHN0cmluZy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl91bnN1cHBvcnRlZCgicmVhZCIpCgogICAgZGVmIHdyaXRlKHNlbGYsIHMpOgogICAgICAgICIiIldyaXRlIHN0cmluZyBzIHRvIHN0cmVhbSBhbmQgcmV0dXJuaW5nIGFuIGludC4iIiIKICAgICAgICBzZWxmLl91bnN1cHBvcnRlZCgid3JpdGUiKQoKICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBwb3M9Tm9uZSk6CiAgICAgICAgIiIiVHJ1bmNhdGUgc2l6ZSB0byBwb3MsIHdoZXJlIHBvcyBpcyBhbiBpbnQuIiIiCiAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWQoInRydW5jYXRlIikKCiAgICBkZWYgcmVhZGxpbmUoc2VsZik6CiAgICAgICAgIiIiUmVhZCB1bnRpbCBuZXdsaW5lIG9yIEVPRi4KCiAgICAgICAgUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgRU9GIGlzIGhpdCBpbW1lZGlhdGVseS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl91bnN1cHBvcnRlZCgicmVhZGxpbmUiKQoKICAgIGRlZiBkZXRhY2goc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgU2VwYXJhdGUgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGZyb20gdGhlIFRleHRJT0Jhc2UgYW5kIHJldHVybiBpdC4KCiAgICAgICAgQWZ0ZXIgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkLCB0aGUgVGV4dElPIGlzIGluIGFuCiAgICAgICAgdW51c2FibGUgc3RhdGUuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWQoImRldGFjaCIpCgogICAgQHByb3BlcnR5CiAgICBkZWYgZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgIiIiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUuIiIiCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBuZXdsaW5lcyhzZWxmKToKICAgICAgICAiIiJMaW5lIGVuZGluZ3MgdHJhbnNsYXRlZCBzbyBmYXIuCgogICAgICAgIE9ubHkgbGluZSBlbmRpbmdzIHRyYW5zbGF0ZWQgZHVyaW5nIHJlYWRpbmcgYXJlIGNvbnNpZGVyZWQuCgogICAgICAgIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBOb25lCgogICAgQHByb3BlcnR5CiAgICBkZWYgZXJyb3JzKHNlbGYpOgogICAgICAgICIiIkVycm9yIHNldHRpbmcgb2YgdGhlIGRlY29kZXIgb3IgZW5jb2Rlci4KCiAgICAgICAgU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUuIiIiCiAgICAgICAgcmV0dXJuIE5vbmUKCmlvLlRleHRJT0Jhc2UucmVnaXN0ZXIoVGV4dElPQmFzZSkKCgpjbGFzcyBJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgciIiIkNvZGVjIHVzZWQgd2hlbiByZWFkaW5nIGEgZmlsZSBpbiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS4gIEl0IHdyYXBzCiAgICBhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxyXG4gYW5kIFxyIGludG8gXG4uICBJdCBhbHNvCiAgICByZWNvcmRzIHRoZSB0eXBlcyBvZiBuZXdsaW5lcyBlbmNvdW50ZXJlZC4gIFdoZW4gdXNlZCB3aXRoCiAgICB0cmFuc2xhdGU9RmFsc2UsIGl0IGVuc3VyZXMgdGhhdCB0aGUgbmV3bGluZSBzZXF1ZW5jZSBpcyByZXR1cm5lZCBpbgogICAgb25lIHBpZWNlLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZGVjb2RlciwgdHJhbnNsYXRlLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIuX19pbml0X18oc2VsZiwgZXJyb3JzPWVycm9ycykKICAgICAgICBzZWxmLnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZQogICAgICAgIHNlbGYuZGVjb2RlciA9IGRlY29kZXIKICAgICAgICBzZWxmLnNlZW5ubCA9IDAKICAgICAgICBzZWxmLnBlbmRpbmdjciA9IEZhbHNlCgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgICMgZGVjb2RlIGlucHV0ICh3aXRoIHRoZSBldmVudHVhbCBcciBmcm9tIGEgcHJldmlvdXMgcGFzcykKICAgICAgICBpZiBzZWxmLmRlY29kZXIgaXMgTm9uZToKICAgICAgICAgICAgb3V0cHV0ID0gaW5wdXQKICAgICAgICBlbHNlOgogICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmRlY29kZXIuZGVjb2RlKGlucHV0LCBmaW5hbD1maW5hbCkKICAgICAgICBpZiBzZWxmLnBlbmRpbmdjciBhbmQgKG91dHB1dCBvciBmaW5hbCk6CiAgICAgICAgICAgIG91dHB1dCA9ICJcciIgKyBvdXRwdXQKICAgICAgICAgICAgc2VsZi5wZW5kaW5nY3IgPSBGYWxzZQoKICAgICAgICAjIHJldGFpbiBsYXN0IFxyIGV2ZW4gd2hlbiBub3QgdHJhbnNsYXRpbmcgZGF0YToKICAgICAgICAjIHRoZW4gcmVhZGxpbmUoKSBpcyBzdXJlIHRvIGdldCBcclxuIGluIG9uZSBwYXNzCiAgICAgICAgaWYgb3V0cHV0LmVuZHN3aXRoKCJcciIpIGFuZCBub3QgZmluYWw6CiAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dFs6LTFdCiAgICAgICAgICAgIHNlbGYucGVuZGluZ2NyID0gVHJ1ZQoKICAgICAgICAjIFJlY29yZCB3aGljaCBuZXdsaW5lcyBhcmUgcmVhZAogICAgICAgIGNybGYgPSBvdXRwdXQuY291bnQoJ1xyXG4nKQogICAgICAgIGNyID0gb3V0cHV0LmNvdW50KCdccicpIC0gY3JsZgogICAgICAgIGxmID0gb3V0cHV0LmNvdW50KCdcbicpIC0gY3JsZgogICAgICAgIHNlbGYuc2Vlbm5sIHw9IChsZiBhbmQgc2VsZi5fTEYpIHwgKGNyIGFuZCBzZWxmLl9DUikgXAogICAgICAgICAgICAgICAgICAgIHwgKGNybGYgYW5kIHNlbGYuX0NSTEYpCgogICAgICAgIGlmIHNlbGYudHJhbnNsYXRlOgogICAgICAgICAgICBpZiBjcmxmOgogICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnJlcGxhY2UoIlxyXG4iLCAiXG4iKQogICAgICAgICAgICBpZiBjcjoKICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKCJcciIsICJcbiIpCgogICAgICAgIHJldHVybiBvdXRwdXQKCiAgICBkZWYgZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5kZWNvZGVyIGlzIE5vbmU6CiAgICAgICAgICAgIGJ1ZiA9IGIiIgogICAgICAgICAgICBmbGFnID0gMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJ1ZiwgZmxhZyA9IHNlbGYuZGVjb2Rlci5nZXRzdGF0ZSgpCiAgICAgICAgZmxhZyA8PD0gMQogICAgICAgIGlmIHNlbGYucGVuZGluZ2NyOgogICAgICAgICAgICBmbGFnIHw9IDEKICAgICAgICByZXR1cm4gYnVmLCBmbGFnCgogICAgZGVmIHNldHN0YXRlKHNlbGYsIHN0YXRlKToKICAgICAgICBidWYsIGZsYWcgPSBzdGF0ZQogICAgICAgIHNlbGYucGVuZGluZ2NyID0gYm9vbChmbGFnICYgMSkKICAgICAgICBpZiBzZWxmLmRlY29kZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuZGVjb2Rlci5zZXRzdGF0ZSgoYnVmLCBmbGFnID4+IDEpKQoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBzZWxmLnNlZW5ubCA9IDAKICAgICAgICBzZWxmLnBlbmRpbmdjciA9IEZhbHNlCiAgICAgICAgaWYgc2VsZi5kZWNvZGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLmRlY29kZXIucmVzZXQoKQoKICAgIF9MRiA9IDEKICAgIF9DUiA9IDIKICAgIF9DUkxGID0gNAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5ld2xpbmVzKHNlbGYpOgogICAgICAgIHJldHVybiAoTm9uZSwKICAgICAgICAgICAgICAgICJcbiIsCiAgICAgICAgICAgICAgICAiXHIiLAogICAgICAgICAgICAgICAgKCJcciIsICJcbiIpLAogICAgICAgICAgICAgICAgIlxyXG4iLAogICAgICAgICAgICAgICAgKCJcbiIsICJcclxuIiksCiAgICAgICAgICAgICAgICAoIlxyIiwgIlxyXG4iKSwKICAgICAgICAgICAgICAgICgiXHIiLCAiXG4iLCAiXHJcbiIpCiAgICAgICAgICAgICAgIClbc2VsZi5zZWVubmxdCgoKY2xhc3MgVGV4dElPV3JhcHBlcihUZXh0SU9CYXNlKToKCiAgICByIiIiQ2hhcmFjdGVyIGFuZCBsaW5lIGJhc2VkIGxheWVyIG92ZXIgYSBCdWZmZXJlZElPQmFzZSBvYmplY3QsIGJ1ZmZlci4KCiAgICBlbmNvZGluZyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmUKICAgIGRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0ZW5jb2RpbmcoKS4KCiAgICBlcnJvcnMgZGV0ZXJtaW5lcyB0aGUgc3RyaWN0bmVzcyBvZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKHNlZSB0aGUKICAgIGNvZGVjcy5yZWdpc3RlcikgYW5kIGRlZmF1bHRzIHRvICJzdHJpY3QiLgoKICAgIG5ld2xpbmUgY2FuIGJlIE5vbmUsICcnLCAnXG4nLCAnXHInLCBvciAnXHJcbicuICBJdCBjb250cm9scyB0aGUKICAgIGhhbmRsaW5nIG9mIGxpbmUgZW5kaW5ncy4gSWYgaXQgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIGlzCiAgICBlbmFibGVkLiAgV2l0aCB0aGlzIGVuYWJsZWQsIG9uIGlucHV0LCB0aGUgbGluZXMgZW5kaW5ncyAnXG4nLCAnXHInLAogICAgb3IgJ1xyXG4nIGFyZSB0cmFuc2xhdGVkIHRvICdcbicgYmVmb3JlIGJlaW5nIHJldHVybmVkIHRvIHRoZQogICAgY2FsbGVyLiBDb252ZXJzZWx5LCBvbiBvdXRwdXQsICdcbicgaXMgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtCiAgICBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZiBuZXdsaW5lIGlzIGFueSBvdGhlciBvZiBpdHMKICAgIGxlZ2FsIHZhbHVlcywgdGhhdCBuZXdsaW5lIGJlY29tZXMgdGhlIG5ld2xpbmUgd2hlbiB0aGUgZmlsZSBpcyByZWFkCiAgICBhbmQgaXQgaXMgcmV0dXJuZWQgdW50cmFuc2xhdGVkLiBPbiBvdXRwdXQsICdcbicgaXMgY29udmVydGVkIHRvIHRoZQogICAgbmV3bGluZS4KCiAgICBJZiBsaW5lX2J1ZmZlcmluZyBpcyBUcnVlLCBhIGNhbGwgdG8gZmx1c2ggaXMgaW1wbGllZCB3aGVuIGEgY2FsbCB0bwogICAgd3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3Rlci4KICAgICIiIgoKICAgIF9DSFVOS19TSVpFID0gMjA0OAoKICAgICMgSW5pdGlhbGl6ZSBfYnVmZmVyIGFzIHNvb24gYXMgcG9zc2libGUgc2luY2UgaXQncyB1c2VkIGJ5IF9fZGVsX18oKQogICAgIyB3aGljaCBjYWxscyBjbG9zZSgpCiAgICBfYnVmZmVyID0gTm9uZQoKICAgICMgVGhlIHdyaXRlX3Rocm91Z2ggYXJndW1lbnQgaGFzIG5vIGVmZmVjdCBoZXJlIHNpbmNlIHRoaXMKICAgICMgaW1wbGVtZW50YXRpb24gYWx3YXlzIHdyaXRlcyB0aHJvdWdoLiAgVGhlIGFyZ3VtZW50IGlzIHByZXNlbnQgb25seQogICAgIyBzbyB0aGF0IHRoZSBzaWduYXR1cmUgY2FuIG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgdGhlIEMgdmVyc2lvbi4KICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsCiAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9RmFsc2UsIHdyaXRlX3Rocm91Z2g9RmFsc2UpOgogICAgICAgIHNlbGYuX2NoZWNrX25ld2xpbmUobmV3bGluZSkKICAgICAgICBlbmNvZGluZyA9IHRleHRfZW5jb2RpbmcoZW5jb2RpbmcpCgogICAgICAgIGlmIGVuY29kaW5nID09ICJsb2NhbGUiOgogICAgICAgICAgICBlbmNvZGluZyA9IHNlbGYuX2dldF9sb2NhbGVfZW5jb2RpbmcoKQoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbmNvZGluZywgc3RyKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBlbmNvZGluZzogJXIiICUgZW5jb2RpbmcpCgogICAgICAgIGlmIG5vdCBjb2RlY3MubG9va3VwKGVuY29kaW5nKS5faXNfdGV4dF9lbmNvZGluZzoKICAgICAgICAgICAgbXNnID0gKCIlciBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCiAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5vcGVuKCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICByYWlzZSBMb29rdXBFcnJvcihtc2cgJSBlbmNvZGluZykKCiAgICAgICAgaWYgZXJyb3JzIGlzIE5vbmU6CiAgICAgICAgICAgIGVycm9ycyA9ICJzdHJpY3QiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXJyb3JzLCBzdHIpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBlcnJvcnM6ICVyIiAlIGVycm9ycykKICAgICAgICAgICAgaWYgX0NIRUNLX0VSUk9SUzoKICAgICAgICAgICAgICAgIGNvZGVjcy5sb29rdXBfZXJyb3IoZXJyb3JzKQoKICAgICAgICBzZWxmLl9idWZmZXIgPSBidWZmZXIKICAgICAgICBzZWxmLl9kZWNvZGVkX2NoYXJzID0gJycgICMgYnVmZmVyIGZvciB0ZXh0IHJldHVybmVkIGZyb20gZGVjb2RlcgogICAgICAgIHNlbGYuX2RlY29kZWRfY2hhcnNfdXNlZCA9IDAgICMgb2Zmc2V0IGludG8gX2RlY29kZWRfY2hhcnMgZm9yIHJlYWQoKQogICAgICAgIHNlbGYuX3NuYXBzaG90ID0gTm9uZSAgIyBpbmZvIGZvciByZWNvbnN0cnVjdGluZyBkZWNvZGVyIHN0YXRlCiAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBzZWxmLl90ZWxsaW5nID0gc2VsZi5idWZmZXIuc2Vla2FibGUoKQogICAgICAgIHNlbGYuX2hhc19yZWFkMSA9IGhhc2F0dHIoc2VsZi5idWZmZXIsICdyZWFkMScpCiAgICAgICAgc2VsZi5fY29uZmlndXJlKGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nLCB3cml0ZV90aHJvdWdoKQoKICAgIGRlZiBfY2hlY2tfbmV3bGluZShzZWxmLCBuZXdsaW5lKToKICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuZXdsaW5lLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImlsbGVnYWwgbmV3bGluZSB0eXBlOiAlciIgJSAodHlwZShuZXdsaW5lKSwpKQogICAgICAgIGlmIG5ld2xpbmUgbm90IGluIChOb25lLCAiIiwgIlxuIiwgIlxyIiwgIlxyXG4iKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaWxsZWdhbCBuZXdsaW5lIHZhbHVlOiAlciIgJSAobmV3bGluZSwpKQoKICAgIGRlZiBfY29uZmlndXJlKHNlbGYsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsCiAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1GYWxzZSwgd3JpdGVfdGhyb3VnaD1GYWxzZSk6CiAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSBlbmNvZGluZwogICAgICAgIHNlbGYuX2Vycm9ycyA9IGVycm9ycwogICAgICAgIHNlbGYuX2VuY29kZXIgPSBOb25lCiAgICAgICAgc2VsZi5fZGVjb2RlciA9IE5vbmUKICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IDAuMAoKICAgICAgICBzZWxmLl9yZWFkdW5pdmVyc2FsID0gbm90IG5ld2xpbmUKICAgICAgICBzZWxmLl9yZWFkdHJhbnNsYXRlID0gbmV3bGluZSBpcyBOb25lCiAgICAgICAgc2VsZi5fcmVhZG5sID0gbmV3bGluZQogICAgICAgIHNlbGYuX3dyaXRldHJhbnNsYXRlID0gbmV3bGluZSAhPSAnJwogICAgICAgIHNlbGYuX3dyaXRlbmwgPSBuZXdsaW5lIG9yIG9zLmxpbmVzZXAKCiAgICAgICAgc2VsZi5fbGluZV9idWZmZXJpbmcgPSBsaW5lX2J1ZmZlcmluZwogICAgICAgIHNlbGYuX3dyaXRlX3Rocm91Z2ggPSB3cml0ZV90aHJvdWdoCgogICAgICAgICMgZG9uJ3Qgd3JpdGUgYSBCT00gaW4gdGhlIG1pZGRsZSBvZiBhIGZpbGUKICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZSBhbmQgc2VsZi53cml0YWJsZSgpOgogICAgICAgICAgICBwb3NpdGlvbiA9IHNlbGYuYnVmZmVyLnRlbGwoKQogICAgICAgICAgICBpZiBwb3NpdGlvbiAhPSAwOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9lbmNvZGVyKCkuc2V0c3RhdGUoMCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIFNvbWV0aW1lcyB0aGUgZW5jb2RlciBkb2Vzbid0IGV4aXN0CiAgICAgICAgICAgICAgICAgICAgcGFzcwoKICAgICMgc2VsZi5fc25hcHNob3QgaXMgZWl0aGVyIE5vbmUsIG9yIGEgdHVwbGUgKGRlY19mbGFncywgbmV4dF9pbnB1dCkKICAgICMgd2hlcmUgZGVjX2ZsYWdzIGlzIHRoZSBzZWNvbmQgKGludGVnZXIpIGl0ZW0gb2YgdGhlIGRlY29kZXIgc3RhdGUKICAgICMgYW5kIG5leHRfaW5wdXQgaXMgdGhlIGNodW5rIG9mIGlucHV0IGJ5dGVzIHRoYXQgY29tZXMgbmV4dCBhZnRlciB0aGUKICAgICMgc25hcHNob3QgcG9pbnQuICBXZSB1c2UgdGhpcyB0byByZWNvbnN0cnVjdCBkZWNvZGVyIHN0YXRlcyBpbiB0ZWxsKCkuCgogICAgIyBOYW1pbmcgY29udmVudGlvbjoKICAgICMgICAtICJieXRlc18uLi4iIGZvciBpbnRlZ2VyIHZhcmlhYmxlcyB0aGF0IGNvdW50IGlucHV0IGJ5dGVzCiAgICAjICAgLSAiY2hhcnNfLi4uIiBmb3IgaW50ZWdlciB2YXJpYWJsZXMgdGhhdCBjb3VudCBkZWNvZGVkIGNoYXJhY3RlcnMKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmVzdWx0ID0gIjx7fS57fSIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXykKICAgICAgICB0cnk6CiAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQgKz0gIiBuYW1lPXswIXJ9Ii5mb3JtYXQobmFtZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1vZGUgPSBzZWxmLm1vZGUKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQgKz0gIiBtb2RlPXswIXJ9Ii5mb3JtYXQobW9kZSkKICAgICAgICByZXR1cm4gcmVzdWx0ICsgIiBlbmNvZGluZz17MCFyfT4iLmZvcm1hdChzZWxmLmVuY29kaW5nKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGVuY29kaW5nKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9lbmNvZGluZwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGVycm9ycyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZXJyb3JzCgogICAgQHByb3BlcnR5CiAgICBkZWYgbGluZV9idWZmZXJpbmcoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2xpbmVfYnVmZmVyaW5nCgogICAgQHByb3BlcnR5CiAgICBkZWYgd3JpdGVfdGhyb3VnaChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fd3JpdGVfdGhyb3VnaAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGJ1ZmZlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyCgogICAgZGVmIHJlY29uZmlndXJlKHNlbGYsICosCiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9RWxsaXBzaXMsCiAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9Tm9uZSwgd3JpdGVfdGhyb3VnaD1Ob25lKToKICAgICAgICAiIiJSZWNvbmZpZ3VyZSB0aGUgdGV4dCBzdHJlYW0gd2l0aCBuZXcgcGFyYW1ldGVycy4KCiAgICAgICAgVGhpcyBhbHNvIGZsdXNoZXMgdGhlIHN0cmVhbS4KICAgICAgICAiIiIKICAgICAgICBpZiAoc2VsZi5fZGVjb2RlciBpcyBub3QgTm9uZQogICAgICAgICAgICAgICAgYW5kIChlbmNvZGluZyBpcyBub3QgTm9uZSBvciBlcnJvcnMgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgICAgICAgb3IgbmV3bGluZSBpcyBub3QgRWxsaXBzaXMpKToKICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIHNldCB0aGUgZW5jb2Rpbmcgb3IgbmV3bGluZSBvZiBzdHJlYW0gIgogICAgICAgICAgICAgICAgImFmdGVyIHRoZSBmaXJzdCByZWFkIikKCiAgICAgICAgaWYgZXJyb3JzIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBlcnJvcnMgPSBzZWxmLl9lcnJvcnMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVycm9ycyA9ICdzdHJpY3QnCiAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShlcnJvcnMsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBlcnJvcnM6ICVyIiAlIGVycm9ycykKCiAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKICAgICAgICAgICAgZW5jb2RpbmcgPSBzZWxmLl9lbmNvZGluZwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVuY29kaW5nLCBzdHIpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGVuY29kaW5nOiAlciIgJSBlbmNvZGluZykKICAgICAgICAgICAgaWYgZW5jb2RpbmcgPT0gImxvY2FsZSI6CiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHNlbGYuX2dldF9sb2NhbGVfZW5jb2RpbmcoKQoKICAgICAgICBpZiBuZXdsaW5lIGlzIEVsbGlwc2lzOgogICAgICAgICAgICBuZXdsaW5lID0gc2VsZi5fcmVhZG5sCiAgICAgICAgc2VsZi5fY2hlY2tfbmV3bGluZShuZXdsaW5lKQoKICAgICAgICBpZiBsaW5lX2J1ZmZlcmluZyBpcyBOb25lOgogICAgICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IHNlbGYubGluZV9idWZmZXJpbmcKICAgICAgICBpZiB3cml0ZV90aHJvdWdoIGlzIE5vbmU6CiAgICAgICAgICAgIHdyaXRlX3Rocm91Z2ggPSBzZWxmLndyaXRlX3Rocm91Z2gKCiAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgc2VsZi5fY29uZmlndXJlKGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nLCB3cml0ZV90aHJvdWdoKQoKICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZS4iKQogICAgICAgIHJldHVybiBzZWxmLl9zZWVrYWJsZQoKICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIucmVhZGFibGUoKQoKICAgIGRlZiB3cml0YWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIud3JpdGFibGUoKQoKICAgIGRlZiBmbHVzaChzZWxmKToKICAgICAgICBzZWxmLmJ1ZmZlci5mbHVzaCgpCiAgICAgICAgc2VsZi5fdGVsbGluZyA9IHNlbGYuX3NlZWthYmxlCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuYnVmZmVyIGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5idWZmZXIuY2xvc2UoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNsb3NlZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIuY2xvc2VkCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIubmFtZQoKICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuYnVmZmVyLmZpbGVubygpCgogICAgZGVmIGlzYXR0eShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIuaXNhdHR5KCkKCiAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgJ1dyaXRlIGRhdGEsIHdoZXJlIHMgaXMgYSBzdHInCiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbid0IHdyaXRlICVzIHRvIHRleHQgc3RyZWFtIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICBsZW5ndGggPSBsZW4ocykKICAgICAgICBoYXNsZiA9IChzZWxmLl93cml0ZXRyYW5zbGF0ZSBvciBzZWxmLl9saW5lX2J1ZmZlcmluZykgYW5kICJcbiIgaW4gcwogICAgICAgIGlmIGhhc2xmIGFuZCBzZWxmLl93cml0ZXRyYW5zbGF0ZSBhbmQgc2VsZi5fd3JpdGVubCAhPSAiXG4iOgogICAgICAgICAgICBzID0gcy5yZXBsYWNlKCJcbiIsIHNlbGYuX3dyaXRlbmwpCiAgICAgICAgZW5jb2RlciA9IHNlbGYuX2VuY29kZXIgb3Igc2VsZi5fZ2V0X2VuY29kZXIoKQogICAgICAgICMgWFhYIFdoYXQgaWYgd2Ugd2VyZSBqdXN0IHJlYWRpbmc/CiAgICAgICAgYiA9IGVuY29kZXIuZW5jb2RlKHMpCiAgICAgICAgc2VsZi5idWZmZXIud3JpdGUoYikKICAgICAgICBpZiBzZWxmLl9saW5lX2J1ZmZlcmluZyBhbmQgKGhhc2xmIG9yICJcciIgaW4gcyk6CiAgICAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgIHNlbGYuX3NldF9kZWNvZGVkX2NoYXJzKCcnKQogICAgICAgIHNlbGYuX3NuYXBzaG90ID0gTm9uZQogICAgICAgIGlmIHNlbGYuX2RlY29kZXI6CiAgICAgICAgICAgIHNlbGYuX2RlY29kZXIucmVzZXQoKQogICAgICAgIHJldHVybiBsZW5ndGgKCiAgICBkZWYgX2dldF9lbmNvZGVyKHNlbGYpOgogICAgICAgIG1ha2VfZW5jb2RlciA9IGNvZGVjcy5nZXRpbmNyZW1lbnRhbGVuY29kZXIoc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgc2VsZi5fZW5jb2RlciA9IG1ha2VfZW5jb2RlcihzZWxmLl9lcnJvcnMpCiAgICAgICAgcmV0dXJuIHNlbGYuX2VuY29kZXIKCiAgICBkZWYgX2dldF9kZWNvZGVyKHNlbGYpOgogICAgICAgIG1ha2VfZGVjb2RlciA9IGNvZGVjcy5nZXRpbmNyZW1lbnRhbGRlY29kZXIoc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgZGVjb2RlciA9IG1ha2VfZGVjb2RlcihzZWxmLl9lcnJvcnMpCiAgICAgICAgaWYgc2VsZi5fcmVhZHVuaXZlcnNhbDoKICAgICAgICAgICAgZGVjb2RlciA9IEluY3JlbWVudGFsTmV3bGluZURlY29kZXIoZGVjb2Rlciwgc2VsZi5fcmVhZHRyYW5zbGF0ZSkKICAgICAgICBzZWxmLl9kZWNvZGVyID0gZGVjb2RlcgogICAgICAgIHJldHVybiBkZWNvZGVyCgogICAgIyBUaGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMgaW1wbGVtZW50IGFuIEFEVCBmb3IgX2RlY29kZWRfY2hhcnMuCiAgICAjIFRleHQgcmV0dXJuZWQgZnJvbSB0aGUgZGVjb2RlciBpcyBidWZmZXJlZCBoZXJlIHVudGlsIHRoZSBjbGllbnQKICAgICMgcmVxdWVzdHMgaXQgYnkgY2FsbGluZyBvdXIgcmVhZCgpIG9yIHJlYWRsaW5lKCkgbWV0aG9kLgogICAgZGVmIF9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBjaGFycyk6CiAgICAgICAgIiIiU2V0IHRoZSBfZGVjb2RlZF9jaGFycyBidWZmZXIuIiIiCiAgICAgICAgc2VsZi5fZGVjb2RlZF9jaGFycyA9IGNoYXJzCiAgICAgICAgc2VsZi5fZGVjb2RlZF9jaGFyc191c2VkID0gMAoKICAgIGRlZiBfZ2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgbj1Ob25lKToKICAgICAgICAiIiJBZHZhbmNlIGludG8gdGhlIF9kZWNvZGVkX2NoYXJzIGJ1ZmZlci4iIiIKICAgICAgICBvZmZzZXQgPSBzZWxmLl9kZWNvZGVkX2NoYXJzX3VzZWQKICAgICAgICBpZiBuIGlzIE5vbmU6CiAgICAgICAgICAgIGNoYXJzID0gc2VsZi5fZGVjb2RlZF9jaGFyc1tvZmZzZXQ6XQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNoYXJzID0gc2VsZi5fZGVjb2RlZF9jaGFyc1tvZmZzZXQ6b2Zmc2V0ICsgbl0KICAgICAgICBzZWxmLl9kZWNvZGVkX2NoYXJzX3VzZWQgKz0gbGVuKGNoYXJzKQogICAgICAgIHJldHVybiBjaGFycwoKICAgIGRlZiBfZ2V0X2xvY2FsZV9lbmNvZGluZyhzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltcG9ydCBsb2NhbGUKICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICMgSW1wb3J0aW5nIGxvY2FsZSBtYXkgZmFpbCBpZiBQeXRob24gaXMgYmVpbmcgYnVpbHQKICAgICAgICAgICAgcmV0dXJuICJ1dGYtOCIKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gbG9jYWxlLmdldGVuY29kaW5nKCkKCiAgICBkZWYgX3Jld2luZF9kZWNvZGVkX2NoYXJzKHNlbGYsIG4pOgogICAgICAgICIiIlJld2luZCB0aGUgX2RlY29kZWRfY2hhcnMgYnVmZmVyLiIiIgogICAgICAgIGlmIHNlbGYuX2RlY29kZWRfY2hhcnNfdXNlZCA8IG46CiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJyZXdpbmQgZGVjb2RlZF9jaGFycyBvdXQgb2YgYm91bmRzIikKICAgICAgICBzZWxmLl9kZWNvZGVkX2NoYXJzX3VzZWQgLT0gbgoKICAgIGRlZiBfcmVhZF9jaHVuayhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZWFkIGFuZCBkZWNvZGUgdGhlIG5leHQgY2h1bmsgb2YgZGF0YSBmcm9tIHRoZSBCdWZmZXJlZFJlYWRlci4KICAgICAgICAiIiIKCiAgICAgICAgIyBUaGUgcmV0dXJuIHZhbHVlIGlzIFRydWUgdW5sZXNzIEVPRiB3YXMgcmVhY2hlZC4gIFRoZSBkZWNvZGVkCiAgICAgICAgIyBzdHJpbmcgaXMgcGxhY2VkIGluIHNlbGYuX2RlY29kZWRfY2hhcnMgKHJlcGxhY2luZyBpdHMgcHJldmlvdXMKICAgICAgICAjIHZhbHVlKS4gIFRoZSBlbnRpcmUgaW5wdXQgY2h1bmsgaXMgc2VudCB0byB0aGUgZGVjb2RlciwgdGhvdWdoCiAgICAgICAgIyBzb21lIG9mIGl0IG1heSByZW1haW4gYnVmZmVyZWQgaW4gdGhlIGRlY29kZXIsIHlldCB0byBiZQogICAgICAgICMgY29udmVydGVkLgoKICAgICAgICBpZiBzZWxmLl9kZWNvZGVyIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIGRlY29kZXIiKQoKICAgICAgICBpZiBzZWxmLl90ZWxsaW5nOgogICAgICAgICAgICAjIFRvIHByZXBhcmUgZm9yIHRlbGwoKSwgd2UgbmVlZCB0byBzbmFwc2hvdCBhIHBvaW50IGluIHRoZQogICAgICAgICAgICAjIGZpbGUgd2hlcmUgdGhlIGRlY29kZXIncyBpbnB1dCBidWZmZXIgaXMgZW1wdHkuCgogICAgICAgICAgICBkZWNfYnVmZmVyLCBkZWNfZmxhZ3MgPSBzZWxmLl9kZWNvZGVyLmdldHN0YXRlKCkKICAgICAgICAgICAgIyBHaXZlbiB0aGlzLCB3ZSBrbm93IHRoZXJlIHdhcyBhIHZhbGlkIHNuYXBzaG90IHBvaW50CiAgICAgICAgICAgICMgbGVuKGRlY19idWZmZXIpIGJ5dGVzIGFnbyB3aXRoIGRlY29kZXIgc3RhdGUgKGInJywgZGVjX2ZsYWdzKS4KCiAgICAgICAgIyBSZWFkIGEgY2h1bmssIGRlY29kZSBpdCwgYW5kIHB1dCB0aGUgcmVzdWx0IGluIHNlbGYuX2RlY29kZWRfY2hhcnMuCiAgICAgICAgaWYgc2VsZi5faGFzX3JlYWQxOgogICAgICAgICAgICBpbnB1dF9jaHVuayA9IHNlbGYuYnVmZmVyLnJlYWQxKHNlbGYuX0NIVU5LX1NJWkUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaW5wdXRfY2h1bmsgPSBzZWxmLmJ1ZmZlci5yZWFkKHNlbGYuX0NIVU5LX1NJWkUpCiAgICAgICAgZW9mID0gbm90IGlucHV0X2NodW5rCiAgICAgICAgZGVjb2RlZF9jaGFycyA9IHNlbGYuX2RlY29kZXIuZGVjb2RlKGlucHV0X2NodW5rLCBlb2YpCiAgICAgICAgc2VsZi5fc2V0X2RlY29kZWRfY2hhcnMoZGVjb2RlZF9jaGFycykKICAgICAgICBpZiBkZWNvZGVkX2NoYXJzOgogICAgICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IGxlbihpbnB1dF9jaHVuaykgLyBsZW4oc2VsZi5fZGVjb2RlZF9jaGFycykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IDAuMAoKICAgICAgICBpZiBzZWxmLl90ZWxsaW5nOgogICAgICAgICAgICAjIEF0IHRoZSBzbmFwc2hvdCBwb2ludCwgbGVuKGRlY19idWZmZXIpIGJ5dGVzIGJlZm9yZSB0aGUgcmVhZCwKICAgICAgICAgICAgIyB0aGUgbmV4dCBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIGRlY19idWZmZXIgKyBpbnB1dF9jaHVuay4KICAgICAgICAgICAgc2VsZi5fc25hcHNob3QgPSAoZGVjX2ZsYWdzLCBkZWNfYnVmZmVyICsgaW5wdXRfY2h1bmspCgogICAgICAgIHJldHVybiBub3QgZW9mCgogICAgZGVmIF9wYWNrX2Nvb2tpZShzZWxmLCBwb3NpdGlvbiwgZGVjX2ZsYWdzPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RvX2ZlZWQ9MCwgbmVlZF9lb2Y9RmFsc2UsIGNoYXJzX3RvX3NraXA9MCk6CiAgICAgICAgIyBUaGUgbWVhbmluZyBvZiBhIHRlbGwoKSBjb29raWUgaXM6IHNlZWsgdG8gcG9zaXRpb24sIHNldCB0aGUKICAgICAgICAjIGRlY29kZXIgZmxhZ3MgdG8gZGVjX2ZsYWdzLCByZWFkIGJ5dGVzX3RvX2ZlZWQgYnl0ZXMsIGZlZWQgdGhlbQogICAgICAgICMgaW50byB0aGUgZGVjb2RlciB3aXRoIG5lZWRfZW9mIGFzIHRoZSBFT0YgZmxhZywgdGhlbiBza2lwCiAgICAgICAgIyBjaGFyc190b19za2lwIGNoYXJhY3RlcnMgb2YgdGhlIGRlY29kZWQgcmVzdWx0LiAgRm9yIG1vc3Qgc2ltcGxlCiAgICAgICAgIyBkZWNvZGVycywgdGVsbCgpIHdpbGwgb2Z0ZW4ganVzdCBnaXZlIGEgYnl0ZSBvZmZzZXQgaW4gdGhlIGZpbGUuCiAgICAgICAgcmV0dXJuIChwb3NpdGlvbiB8IChkZWNfZmxhZ3M8PDY0KSB8IChieXRlc190b19mZWVkPDwxMjgpIHwKICAgICAgICAgICAgICAgKGNoYXJzX3RvX3NraXA8PDE5MikgfCBib29sKG5lZWRfZW9mKTw8MjU2KQoKICAgIGRlZiBfdW5wYWNrX2Nvb2tpZShzZWxmLCBiaWdpbnQpOgogICAgICAgIHJlc3QsIHBvc2l0aW9uID0gZGl2bW9kKGJpZ2ludCwgMTw8NjQpCiAgICAgICAgcmVzdCwgZGVjX2ZsYWdzID0gZGl2bW9kKHJlc3QsIDE8PDY0KQogICAgICAgIHJlc3QsIGJ5dGVzX3RvX2ZlZWQgPSBkaXZtb2QocmVzdCwgMTw8NjQpCiAgICAgICAgbmVlZF9lb2YsIGNoYXJzX3RvX3NraXAgPSBkaXZtb2QocmVzdCwgMTw8NjQpCiAgICAgICAgcmV0dXJuIHBvc2l0aW9uLCBkZWNfZmxhZ3MsIGJ5dGVzX3RvX2ZlZWQsIGJvb2wobmVlZF9lb2YpLCBjaGFyc190b19za2lwCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuX3NlZWthYmxlOgogICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbigidW5kZXJseWluZyBzdHJlYW0gaXMgbm90IHNlZWthYmxlIikKICAgICAgICBpZiBub3Qgc2VsZi5fdGVsbGluZzoKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigidGVsbGluZyBwb3NpdGlvbiBkaXNhYmxlZCBieSBuZXh0KCkgY2FsbCIpCiAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgcG9zaXRpb24gPSBzZWxmLmJ1ZmZlci50ZWxsKCkKICAgICAgICBkZWNvZGVyID0gc2VsZi5fZGVjb2RlcgogICAgICAgIGlmIGRlY29kZXIgaXMgTm9uZSBvciBzZWxmLl9zbmFwc2hvdCBpcyBOb25lOgogICAgICAgICAgICBpZiBzZWxmLl9kZWNvZGVkX2NoYXJzOgogICAgICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uCiAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigicGVuZGluZyBkZWNvZGVkIHRleHQiKQogICAgICAgICAgICByZXR1cm4gcG9zaXRpb24KCiAgICAgICAgIyBTa2lwIGJhY2t3YXJkIHRvIHRoZSBzbmFwc2hvdCBwb2ludCAoc2VlIF9yZWFkX2NodW5rKS4KICAgICAgICBkZWNfZmxhZ3MsIG5leHRfaW5wdXQgPSBzZWxmLl9zbmFwc2hvdAogICAgICAgIHBvc2l0aW9uIC09IGxlbihuZXh0X2lucHV0KQoKICAgICAgICAjIEhvdyBtYW55IGRlY29kZWQgY2hhcmFjdGVycyBoYXZlIGJlZW4gdXNlZCB1cCBzaW5jZSB0aGUgc25hcHNob3Q/CiAgICAgICAgY2hhcnNfdG9fc2tpcCA9IHNlbGYuX2RlY29kZWRfY2hhcnNfdXNlZAogICAgICAgIGlmIGNoYXJzX3RvX3NraXAgPT0gMDoKICAgICAgICAgICAgIyBXZSBoYXZlbid0IG1vdmVkIGZyb20gdGhlIHNuYXBzaG90IHBvaW50LgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFja19jb29raWUocG9zaXRpb24sIGRlY19mbGFncykKCiAgICAgICAgIyBTdGFydGluZyBmcm9tIHRoZSBzbmFwc2hvdCBwb3NpdGlvbiwgd2Ugd2lsbCB3YWxrIHRoZSBkZWNvZGVyCiAgICAgICAgIyBmb3J3YXJkIHVudGlsIGl0IGdpdmVzIHVzIGVub3VnaCBkZWNvZGVkIGNoYXJhY3RlcnMuCiAgICAgICAgc2F2ZWRfc3RhdGUgPSBkZWNvZGVyLmdldHN0YXRlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgRmFzdCBzZWFyY2ggZm9yIGFuIGFjY2VwdGFibGUgc3RhcnQgcG9pbnQsIGNsb3NlIHRvIG91cgogICAgICAgICAgICAjIGN1cnJlbnQgcG9zLgogICAgICAgICAgICAjIFJhdGlvbmFsZTogY2FsbGluZyBkZWNvZGVyLmRlY29kZSgpIGhhcyBhIGxhcmdlIG92ZXJoZWFkCiAgICAgICAgICAgICMgcmVnYXJkbGVzcyBvZiBjaHVuayBzaXplOyB3ZSB3YW50IHRoZSBudW1iZXIgb2Ygc3VjaCBjYWxscyB0bwogICAgICAgICAgICAjIGJlIE8oMSkgaW4gbW9zdCBzaXR1YXRpb25zIChjb21tb24gZGVjb2RlcnMsIHNlbnNpYmxlIGlucHV0KS4KICAgICAgICAgICAgIyBBY3R1YWxseSwgaXQgd2lsbCBiZSBleGFjdGx5IDEgZm9yIGZpeGVkLXNpemUgY29kZWNzIChhbGwKICAgICAgICAgICAgIyA4LWJpdCBjb2RlY3MsIGFsc28gVVRGLTE2IGFuZCBVVEYtMzIpLgogICAgICAgICAgICBza2lwX2J5dGVzID0gaW50KHNlbGYuX2IyY3JhdGlvICogY2hhcnNfdG9fc2tpcCkKICAgICAgICAgICAgc2tpcF9iYWNrID0gMQogICAgICAgICAgICBhc3NlcnQgc2tpcF9ieXRlcyA8PSBsZW4obmV4dF9pbnB1dCkKICAgICAgICAgICAgd2hpbGUgc2tpcF9ieXRlcyA+IDA6CiAgICAgICAgICAgICAgICBkZWNvZGVyLnNldHN0YXRlKChiJycsIGRlY19mbGFncykpCiAgICAgICAgICAgICAgICAjIERlY29kZSB1cCB0byB0ZW1wdGF0aXZlIHN0YXJ0IHBvaW50CiAgICAgICAgICAgICAgICBuID0gbGVuKGRlY29kZXIuZGVjb2RlKG5leHRfaW5wdXRbOnNraXBfYnl0ZXNdKSkKICAgICAgICAgICAgICAgIGlmIG4gPD0gY2hhcnNfdG9fc2tpcDoKICAgICAgICAgICAgICAgICAgICBiLCBkID0gZGVjb2Rlci5nZXRzdGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGI6CiAgICAgICAgICAgICAgICAgICAgICAgICMgQmVmb3JlIHBvcyBhbmQgbm8gYnl0ZXMgYnVmZmVyZWQgaW4gZGVjb2RlciA9PiBPSwogICAgICAgICAgICAgICAgICAgICAgICBkZWNfZmxhZ3MgPSBkCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzX3RvX3NraXAgLT0gbgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICMgU2tpcCBiYWNrIGJ5IGJ1ZmZlcmVkIGFtb3VudCBhbmQgcmVzZXQgaGV1cmlzdGljCiAgICAgICAgICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBsZW4oYikKICAgICAgICAgICAgICAgICAgICBza2lwX2JhY2sgPSAxCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgV2UncmUgdG9vIGZhciBhaGVhZCwgc2tpcCBiYWNrIGEgYml0CiAgICAgICAgICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBza2lwX2JhY2sKICAgICAgICAgICAgICAgICAgICBza2lwX2JhY2sgPSBza2lwX2JhY2sgKiAyCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBza2lwX2J5dGVzID0gMAogICAgICAgICAgICAgICAgZGVjb2Rlci5zZXRzdGF0ZSgoYicnLCBkZWNfZmxhZ3MpKQoKICAgICAgICAgICAgIyBOb3RlIG91ciBpbml0aWFsIHN0YXJ0IHBvaW50LgogICAgICAgICAgICBzdGFydF9wb3MgPSBwb3NpdGlvbiArIHNraXBfYnl0ZXMKICAgICAgICAgICAgc3RhcnRfZmxhZ3MgPSBkZWNfZmxhZ3MKICAgICAgICAgICAgaWYgY2hhcnNfdG9fc2tpcCA9PSAwOgogICAgICAgICAgICAgICAgIyBXZSBoYXZlbid0IG1vdmVkIGZyb20gdGhlIHN0YXJ0IHBvaW50LgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tfY29va2llKHN0YXJ0X3Bvcywgc3RhcnRfZmxhZ3MpCgogICAgICAgICAgICAjIEZlZWQgdGhlIGRlY29kZXIgb25lIGJ5dGUgYXQgYSB0aW1lLiAgQXMgd2UgZ28sIG5vdGUgdGhlCiAgICAgICAgICAgICMgbmVhcmVzdCAic2FmZSBzdGFydCBwb2ludCIgYmVmb3JlIHRoZSBjdXJyZW50IGxvY2F0aW9uCiAgICAgICAgICAgICMgKGEgcG9pbnQgd2hlcmUgdGhlIGRlY29kZXIgaGFzIG5vdGhpbmcgYnVmZmVyZWQsIHNvIHNlZWsoKQogICAgICAgICAgICAjIGNhbiBzYWZlbHkgc3RhcnQgZnJvbSB0aGVyZSBhbmQgYWR2YW5jZSB0byB0aGlzIGxvY2F0aW9uKS4KICAgICAgICAgICAgYnl0ZXNfZmVkID0gMAogICAgICAgICAgICBuZWVkX2VvZiA9IEZhbHNlCiAgICAgICAgICAgICMgQ2hhcnMgZGVjb2RlZCBzaW5jZSBgc3RhcnRfcG9zYAogICAgICAgICAgICBjaGFyc19kZWNvZGVkID0gMAogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShza2lwX2J5dGVzLCBsZW4obmV4dF9pbnB1dCkpOgogICAgICAgICAgICAgICAgYnl0ZXNfZmVkICs9IDEKICAgICAgICAgICAgICAgIGNoYXJzX2RlY29kZWQgKz0gbGVuKGRlY29kZXIuZGVjb2RlKG5leHRfaW5wdXRbaTppKzFdKSkKICAgICAgICAgICAgICAgIGRlY19idWZmZXIsIGRlY19mbGFncyA9IGRlY29kZXIuZ2V0c3RhdGUoKQogICAgICAgICAgICAgICAgaWYgbm90IGRlY19idWZmZXIgYW5kIGNoYXJzX2RlY29kZWQgPD0gY2hhcnNfdG9fc2tpcDoKICAgICAgICAgICAgICAgICAgICAjIERlY29kZXIgYnVmZmVyIGlzIGVtcHR5LCBzbyB0aGlzIGlzIGEgc2FmZSBzdGFydCBwb2ludC4KICAgICAgICAgICAgICAgICAgICBzdGFydF9wb3MgKz0gYnl0ZXNfZmVkCiAgICAgICAgICAgICAgICAgICAgY2hhcnNfdG9fc2tpcCAtPSBjaGFyc19kZWNvZGVkCiAgICAgICAgICAgICAgICAgICAgc3RhcnRfZmxhZ3MsIGJ5dGVzX2ZlZCwgY2hhcnNfZGVjb2RlZCA9IGRlY19mbGFncywgMCwgMAogICAgICAgICAgICAgICAgaWYgY2hhcnNfZGVjb2RlZCA+PSBjaGFyc190b19za2lwOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIFdlIGRpZG4ndCBnZXQgZW5vdWdoIGRlY29kZWQgZGF0YTsgc2lnbmFsIEVPRiB0byBnZXQgbW9yZS4KICAgICAgICAgICAgICAgIGNoYXJzX2RlY29kZWQgKz0gbGVuKGRlY29kZXIuZGVjb2RlKGInJywgZmluYWw9VHJ1ZSkpCiAgICAgICAgICAgICAgICBuZWVkX2VvZiA9IFRydWUKICAgICAgICAgICAgICAgIGlmIGNoYXJzX2RlY29kZWQgPCBjaGFyc190b19za2lwOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoImNhbid0IHJlY29uc3RydWN0IGxvZ2ljYWwgZmlsZSBwb3NpdGlvbiIpCgogICAgICAgICAgICAjIFRoZSByZXR1cm5lZCBjb29raWUgY29ycmVzcG9uZHMgdG8gdGhlIGxhc3Qgc2FmZSBzdGFydCBwb2ludC4KICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tfY29va2llKAogICAgICAgICAgICAgICAgc3RhcnRfcG9zLCBzdGFydF9mbGFncywgYnl0ZXNfZmVkLCBuZWVkX2VvZiwgY2hhcnNfdG9fc2tpcCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBkZWNvZGVyLnNldHN0YXRlKHNhdmVkX3N0YXRlKQoKICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBwb3M9Tm9uZSk6CiAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgaWYgcG9zIGlzIE5vbmU6CiAgICAgICAgICAgIHBvcyA9IHNlbGYudGVsbCgpCiAgICAgICAgcmV0dXJuIHNlbGYuYnVmZmVyLnRydW5jYXRlKHBvcykKCiAgICBkZWYgZGV0YWNoKHNlbGYpOgogICAgICAgIGlmIHNlbGYuYnVmZmVyIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ1ZmZlciBpcyBhbHJlYWR5IGRldGFjaGVkIikKICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICBidWZmZXIgPSBzZWxmLl9idWZmZXIKICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCiAgICAgICAgcmV0dXJuIGJ1ZmZlcgoKICAgIGRlZiBzZWVrKHNlbGYsIGNvb2tpZSwgd2hlbmNlPTApOgogICAgICAgIGRlZiBfcmVzZXRfZW5jb2Rlcihwb3NpdGlvbik6CiAgICAgICAgICAgICIiIlJlc2V0IHRoZSBlbmNvZGVyIChtZXJlbHkgdXNlZnVsIGZvciBwcm9wZXIgQk9NIGhhbmRsaW5nKSIiIgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBlbmNvZGVyID0gc2VsZi5fZW5jb2RlciBvciBzZWxmLl9nZXRfZW5jb2RlcigpCiAgICAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKICAgICAgICAgICAgICAgICMgU29tZXRpbWVzIHRoZSBlbmNvZGVyIGRvZXNuJ3QgZXhpc3QKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIHBvc2l0aW9uICE9IDA6CiAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci5zZXRzdGF0ZSgwKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLnJlc2V0KCkKCiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRlbGwgb24gY2xvc2VkIGZpbGUiKQogICAgICAgIGlmIG5vdCBzZWxmLl9zZWVrYWJsZToKICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24oInVuZGVybHlpbmcgc3RyZWFtIGlzIG5vdCBzZWVrYWJsZSIpCiAgICAgICAgaWYgd2hlbmNlID09IFNFRUtfQ1VSOgogICAgICAgICAgICBpZiBjb29raWUgIT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uKCJjYW4ndCBkbyBub256ZXJvIGN1ci1yZWxhdGl2ZSBzZWVrcyIpCiAgICAgICAgICAgICMgU2Vla2luZyB0byB0aGUgY3VycmVudCBwb3NpdGlvbiBzaG91bGQgYXR0ZW1wdCB0bwogICAgICAgICAgICAjIHN5bmMgdGhlIHVuZGVybHlpbmcgYnVmZmVyIHdpdGggdGhlIGN1cnJlbnQgcG9zaXRpb24uCiAgICAgICAgICAgIHdoZW5jZSA9IDAKICAgICAgICAgICAgY29va2llID0gc2VsZi50ZWxsKCkKICAgICAgICBlbGlmIHdoZW5jZSA9PSBTRUVLX0VORDoKICAgICAgICAgICAgaWYgY29va2llICE9IDA6CiAgICAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbigiY2FuJ3QgZG8gbm9uemVybyBlbmQtcmVsYXRpdmUgc2Vla3MiKQogICAgICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICAgICAgcG9zaXRpb24gPSBzZWxmLmJ1ZmZlci5zZWVrKDAsIHdoZW5jZSkKICAgICAgICAgICAgc2VsZi5fc2V0X2RlY29kZWRfY2hhcnMoJycpCiAgICAgICAgICAgIHNlbGYuX3NuYXBzaG90ID0gTm9uZQogICAgICAgICAgICBpZiBzZWxmLl9kZWNvZGVyOgogICAgICAgICAgICAgICAgc2VsZi5fZGVjb2Rlci5yZXNldCgpCiAgICAgICAgICAgIF9yZXNldF9lbmNvZGVyKHBvc2l0aW9uKQogICAgICAgICAgICByZXR1cm4gcG9zaXRpb24KICAgICAgICBpZiB3aGVuY2UgIT0gMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgd2hlbmNlICglcikiICUgKHdoZW5jZSwpKQogICAgICAgIGlmIGNvb2tpZSA8IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIHNlZWsgcG9zaXRpb24gJXIiICUgKGNvb2tpZSwpKQogICAgICAgIHNlbGYuZmx1c2goKQoKICAgICAgICAjIFRoZSBzdHJhdGVneSBvZiBzZWVrKCkgaXMgdG8gZ28gYmFjayB0byB0aGUgc2FmZSBzdGFydCBwb2ludAogICAgICAgICMgYW5kIHJlcGxheSB0aGUgZWZmZWN0IG9mIHJlYWQoY2hhcnNfdG9fc2tpcCkgZnJvbSB0aGVyZS4KICAgICAgICBzdGFydF9wb3MsIGRlY19mbGFncywgYnl0ZXNfdG9fZmVlZCwgbmVlZF9lb2YsIGNoYXJzX3RvX3NraXAgPSBcCiAgICAgICAgICAgIHNlbGYuX3VucGFja19jb29raWUoY29va2llKQoKICAgICAgICAjIFNlZWsgYmFjayB0byB0aGUgc2FmZSBzdGFydCBwb2ludC4KICAgICAgICBzZWxmLmJ1ZmZlci5zZWVrKHN0YXJ0X3BvcykKICAgICAgICBzZWxmLl9zZXRfZGVjb2RlZF9jaGFycygnJykKICAgICAgICBzZWxmLl9zbmFwc2hvdCA9IE5vbmUKCiAgICAgICAgIyBSZXN0b3JlIHRoZSBkZWNvZGVyIHRvIGl0cyBzdGF0ZSBmcm9tIHRoZSBzYWZlIHN0YXJ0IHBvaW50LgogICAgICAgIGlmIGNvb2tpZSA9PSAwIGFuZCBzZWxmLl9kZWNvZGVyOgogICAgICAgICAgICBzZWxmLl9kZWNvZGVyLnJlc2V0KCkKICAgICAgICBlbGlmIHNlbGYuX2RlY29kZXIgb3IgZGVjX2ZsYWdzIG9yIGNoYXJzX3RvX3NraXA6CiAgICAgICAgICAgIHNlbGYuX2RlY29kZXIgPSBzZWxmLl9kZWNvZGVyIG9yIHNlbGYuX2dldF9kZWNvZGVyKCkKICAgICAgICAgICAgc2VsZi5fZGVjb2Rlci5zZXRzdGF0ZSgoYicnLCBkZWNfZmxhZ3MpKQogICAgICAgICAgICBzZWxmLl9zbmFwc2hvdCA9IChkZWNfZmxhZ3MsIGInJykKCiAgICAgICAgaWYgY2hhcnNfdG9fc2tpcDoKICAgICAgICAgICAgIyBKdXN0IGxpa2UgX3JlYWRfY2h1bmssIGZlZWQgdGhlIGRlY29kZXIgYW5kIHNhdmUgYSBzbmFwc2hvdC4KICAgICAgICAgICAgaW5wdXRfY2h1bmsgPSBzZWxmLmJ1ZmZlci5yZWFkKGJ5dGVzX3RvX2ZlZWQpCiAgICAgICAgICAgIHNlbGYuX3NldF9kZWNvZGVkX2NoYXJzKAogICAgICAgICAgICAgICAgc2VsZi5fZGVjb2Rlci5kZWNvZGUoaW5wdXRfY2h1bmssIG5lZWRfZW9mKSkKICAgICAgICAgICAgc2VsZi5fc25hcHNob3QgPSAoZGVjX2ZsYWdzLCBpbnB1dF9jaHVuaykKCiAgICAgICAgICAgICMgU2tpcCBjaGFyc190b19za2lwIG9mIHRoZSBkZWNvZGVkIGNoYXJhY3RlcnMuCiAgICAgICAgICAgIGlmIGxlbihzZWxmLl9kZWNvZGVkX2NoYXJzKSA8IGNoYXJzX3RvX3NraXA6CiAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJjYW4ndCByZXN0b3JlIGxvZ2ljYWwgZmlsZSBwb3NpdGlvbiIpCiAgICAgICAgICAgIHNlbGYuX2RlY29kZWRfY2hhcnNfdXNlZCA9IGNoYXJzX3RvX3NraXAKCiAgICAgICAgX3Jlc2V0X2VuY29kZXIoY29va2llKQogICAgICAgIHJldHVybiBjb29raWUKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgogICAgICAgIHNlbGYuX2NoZWNrUmVhZGFibGUoKQogICAgICAgIGlmIHNpemUgaXMgTm9uZToKICAgICAgICAgICAgc2l6ZSA9IC0xCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2l6ZV9pbmRleCA9IHNpemUuX19pbmRleF9fCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIntzaXplIXJ9IGlzIG5vdCBhbiBpbnRlZ2VyIikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNpemUgPSBzaXplX2luZGV4KCkKICAgICAgICBkZWNvZGVyID0gc2VsZi5fZGVjb2RlciBvciBzZWxmLl9nZXRfZGVjb2RlcigpCiAgICAgICAgaWYgc2l6ZSA8IDA6CiAgICAgICAgICAgICMgUmVhZCBldmVyeXRoaW5nLgogICAgICAgICAgICByZXN1bHQgPSAoc2VsZi5fZ2V0X2RlY29kZWRfY2hhcnMoKSArCiAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyLmRlY29kZShzZWxmLmJ1ZmZlci5yZWFkKCksIGZpbmFsPVRydWUpKQogICAgICAgICAgICBzZWxmLl9zZXRfZGVjb2RlZF9jaGFycygnJykKICAgICAgICAgICAgc2VsZi5fc25hcHNob3QgPSBOb25lCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEtlZXAgcmVhZGluZyBjaHVua3MgdW50aWwgd2UgaGF2ZSBzaXplIGNoYXJhY3RlcnMgdG8gcmV0dXJuLgogICAgICAgICAgICBlb2YgPSBGYWxzZQogICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9nZXRfZGVjb2RlZF9jaGFycyhzaXplKQogICAgICAgICAgICB3aGlsZSBsZW4ocmVzdWx0KSA8IHNpemUgYW5kIG5vdCBlb2Y6CiAgICAgICAgICAgICAgICBlb2YgPSBub3Qgc2VsZi5fcmVhZF9jaHVuaygpCiAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2VsZi5fZ2V0X2RlY29kZWRfY2hhcnMoc2l6ZSAtIGxlbihyZXN1bHQpKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIF9fbmV4dF9fKHNlbGYpOgogICAgICAgIHNlbGYuX3RlbGxpbmcgPSBGYWxzZQogICAgICAgIGxpbmUgPSBzZWxmLnJlYWRsaW5lKCkKICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgc2VsZi5fc25hcHNob3QgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX3RlbGxpbmcgPSBzZWxmLl9zZWVrYWJsZQogICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgcmV0dXJuIGxpbmUKCiAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT1Ob25lKToKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKICAgICAgICBpZiBzaXplIGlzIE5vbmU6CiAgICAgICAgICAgIHNpemUgPSAtMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNpemVfaW5kZXggPSBzaXplLl9faW5kZXhfXwogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJ7c2l6ZSFyfSBpcyBub3QgYW4gaW50ZWdlciIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzaXplID0gc2l6ZV9pbmRleCgpCgogICAgICAgICMgR3JhYiBhbGwgdGhlIGRlY29kZWQgdGV4dCAod2Ugd2lsbCByZXdpbmQgYW55IGV4dHJhIGJpdHMgbGF0ZXIpLgogICAgICAgIGxpbmUgPSBzZWxmLl9nZXRfZGVjb2RlZF9jaGFycygpCgogICAgICAgIHN0YXJ0ID0gMAogICAgICAgICMgTWFrZSB0aGUgZGVjb2RlciBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCiAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZXI6CiAgICAgICAgICAgIHNlbGYuX2dldF9kZWNvZGVyKCkKCiAgICAgICAgcG9zID0gZW5kcG9zID0gTm9uZQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGlmIHNlbGYuX3JlYWR0cmFuc2xhdGU6CiAgICAgICAgICAgICAgICAjIE5ld2xpbmVzIGFyZSBhbHJlYWR5IHRyYW5zbGF0ZWQsIG9ubHkgc2VhcmNoIGZvciBcbgogICAgICAgICAgICAgICAgcG9zID0gbGluZS5maW5kKCdcbicsIHN0YXJ0KQogICAgICAgICAgICAgICAgaWYgcG9zID49IDA6CiAgICAgICAgICAgICAgICAgICAgZW5kcG9zID0gcG9zICsgMQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gbGVuKGxpbmUpCgogICAgICAgICAgICBlbGlmIHNlbGYuX3JlYWR1bml2ZXJzYWw6CiAgICAgICAgICAgICAgICAjIFVuaXZlcnNhbCBuZXdsaW5lIHNlYXJjaC4gRmluZCBhbnkgb2YgXHIsIFxyXG4sIFxuCiAgICAgICAgICAgICAgICAjIFRoZSBkZWNvZGVyIGVuc3VyZXMgdGhhdCBcclxuIGFyZSBub3Qgc3BsaXQgaW4gdHdvIHBpZWNlcwoKICAgICAgICAgICAgICAgICMgSW4gQyB3ZSdkIGxvb2sgZm9yIHRoZXNlIGluIHBhcmFsbGVsIG9mIGNvdXJzZS4KICAgICAgICAgICAgICAgIG5scG9zID0gbGluZS5maW5kKCJcbiIsIHN0YXJ0KQogICAgICAgICAgICAgICAgY3Jwb3MgPSBsaW5lLmZpbmQoIlxyIiwgc3RhcnQpCiAgICAgICAgICAgICAgICBpZiBjcnBvcyA9PSAtMToKICAgICAgICAgICAgICAgICAgICBpZiBubHBvcyA9PSAtMToKICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3RoaW5nIGZvdW5kCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gbGVuKGxpbmUpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3VuZCBcbgogICAgICAgICAgICAgICAgICAgICAgICBlbmRwb3MgPSBubHBvcyArIDEKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGVsaWYgbmxwb3MgPT0gLTE6CiAgICAgICAgICAgICAgICAgICAgIyBGb3VuZCBsb25lIFxyCiAgICAgICAgICAgICAgICAgICAgZW5kcG9zID0gY3Jwb3MgKyAxCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGVsaWYgbmxwb3MgPCBjcnBvczoKICAgICAgICAgICAgICAgICAgICAjIEZvdW5kIFxuCiAgICAgICAgICAgICAgICAgICAgZW5kcG9zID0gbmxwb3MgKyAxCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGVsaWYgbmxwb3MgPT0gY3Jwb3MgKyAxOgogICAgICAgICAgICAgICAgICAgICMgRm91bmQgXHJcbgogICAgICAgICAgICAgICAgICAgIGVuZHBvcyA9IGNycG9zICsgMgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgRm91bmQgXHIKICAgICAgICAgICAgICAgICAgICBlbmRwb3MgPSBjcnBvcyArIDEKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBub24tdW5pdmVyc2FsCiAgICAgICAgICAgICAgICBwb3MgPSBsaW5lLmZpbmQoc2VsZi5fcmVhZG5sKQogICAgICAgICAgICAgICAgaWYgcG9zID49IDA6CiAgICAgICAgICAgICAgICAgICAgZW5kcG9zID0gcG9zICsgbGVuKHNlbGYuX3JlYWRubCkKICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBsZW4obGluZSkgPj0gc2l6ZToKICAgICAgICAgICAgICAgIGVuZHBvcyA9IHNpemUgICMgcmVhY2hlZCBsZW5ndGggc2l6ZQogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgICMgTm8gbGluZSBlbmRpbmcgc2VlbiB5ZXQgLSBnZXQgbW9yZSBkYXRhJwogICAgICAgICAgICB3aGlsZSBzZWxmLl9yZWFkX2NodW5rKCk6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9kZWNvZGVkX2NoYXJzOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlmIHNlbGYuX2RlY29kZWRfY2hhcnM6CiAgICAgICAgICAgICAgICBsaW5lICs9IHNlbGYuX2dldF9kZWNvZGVkX2NoYXJzKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgZW5kIG9mIGZpbGUKICAgICAgICAgICAgICAgIHNlbGYuX3NldF9kZWNvZGVkX2NoYXJzKCcnKQogICAgICAgICAgICAgICAgc2VsZi5fc25hcHNob3QgPSBOb25lCiAgICAgICAgICAgICAgICByZXR1cm4gbGluZQoKICAgICAgICBpZiBzaXplID49IDAgYW5kIGVuZHBvcyA+IHNpemU6CiAgICAgICAgICAgIGVuZHBvcyA9IHNpemUgICMgZG9uJ3QgZXhjZWVkIHNpemUKCiAgICAgICAgIyBSZXdpbmQgX2RlY29kZWRfY2hhcnMgdG8ganVzdCBhZnRlciB0aGUgbGluZSBlbmRpbmcgd2UgZm91bmQuCiAgICAgICAgc2VsZi5fcmV3aW5kX2RlY29kZWRfY2hhcnMobGVuKGxpbmUpIC0gZW5kcG9zKQogICAgICAgIHJldHVybiBsaW5lWzplbmRwb3NdCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmV3bGluZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2RlY29kZXIubmV3bGluZXMgaWYgc2VsZi5fZGVjb2RlciBlbHNlIE5vbmUKCgpjbGFzcyBTdHJpbmdJTyhUZXh0SU9XcmFwcGVyKToKICAgICIiIlRleHQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBidWZmZXIuCgogICAgVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmUKICAgIGFyZ3VtZW50IGlzIGxpa2UgdGhlIG9uZSBvZiBUZXh0SU9XcmFwcGVyJ3MgY29uc3RydWN0b3IuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgaW5pdGlhbF92YWx1ZT0iIiwgbmV3bGluZT0iXG4iKToKICAgICAgICBzdXBlcihTdHJpbmdJTywgc2VsZikuX19pbml0X18oQnl0ZXNJTygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0idXRmLTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9InN1cnJvZ2F0ZXBhc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPW5ld2xpbmUpCiAgICAgICAgIyBJc3N1ZSAjNTY0NTogbWFrZSB1bml2ZXJzYWwgbmV3bGluZXMgc2VtYW50aWNzIHRoZSBzYW1lIGFzIGluIHRoZQogICAgICAgICMgQyB2ZXJzaW9uLCBldmVuIHVuZGVyIFdpbmRvd3MuCiAgICAgICAgaWYgbmV3bGluZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl93cml0ZXRyYW5zbGF0ZSA9IEZhbHNlCiAgICAgICAgaWYgaW5pdGlhbF92YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5pdGlhbF92YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW5pdGlhbF92YWx1ZSBtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgezB9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodHlwZShpbml0aWFsX3ZhbHVlKS5fX25hbWVfXykpCiAgICAgICAgICAgIHNlbGYud3JpdGUoaW5pdGlhbF92YWx1ZSkKICAgICAgICAgICAgc2VsZi5zZWVrKDApCgogICAgZGVmIGdldHZhbHVlKHNlbGYpOgogICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgIGRlY29kZXIgPSBzZWxmLl9kZWNvZGVyIG9yIHNlbGYuX2dldF9kZWNvZGVyKCkKICAgICAgICBvbGRfc3RhdGUgPSBkZWNvZGVyLmdldHN0YXRlKCkKICAgICAgICBkZWNvZGVyLnJlc2V0KCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShzZWxmLmJ1ZmZlci5nZXR2YWx1ZSgpLCBmaW5hbD1UcnVlKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGRlY29kZXIuc2V0c3RhdGUob2xkX3N0YXRlKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAjIFRleHRJT1dyYXBwZXIgdGVsbHMgdGhlIGVuY29kaW5nIGluIGl0cyByZXByLiBJbiBTdHJpbmdJTywKICAgICAgICAjIHRoYXQncyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCiAgICAgICAgcmV0dXJuIG9iamVjdC5fX3JlcHJfXyhzZWxmKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGVycm9ycyhzZWxmKToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGVuY29kaW5nKHNlbGYpOgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGRldGFjaChzZWxmKToKICAgICAgICAjIFRoaXMgZG9lc24ndCBtYWtlIHNlbnNlIG9uIFN0cmluZ0lPLgogICAgICAgIHNlbGYuX3Vuc3VwcG9ydGVkKCJkZXRhY2giKQpQSwMEFAAAAAAAAiCjVvoxAZA4DAAAOAwAABAAAABfc2l0ZWJ1aWx0aW5zLnB5IiIiClRoZSBvYmplY3RzIHVzZWQgYnkgdGhlIHNpdGUgbW9kdWxlIHRvIGFkZCBjdXN0b20gYnVpbHRpbnMuCiIiIgoKIyBUaG9zZSBvYmplY3RzIGFyZSBhbG1vc3QgaW1tb3J0YWwgYW5kIHRoZXkga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVpciBtb2R1bGUKIyBnbG9iYWxzLiAgRGVmaW5pbmcgdGhlbSBpbiB0aGUgc2l0ZSBtb2R1bGUgd291bGQga2VlcCB0b28gbWFueSByZWZlcmVuY2VzCiMgYWxpdmUuCiMgTm90ZSB0aGlzIG1lYW5zIHRoaXMgbW9kdWxlIHNob3VsZCBhbHNvIGF2b2lkIGtlZXAgdGhpbmdzIGFsaXZlIGluIGl0cwojIGdsb2JhbHMuCgppbXBvcnQgc3lzCgpjbGFzcyBRdWl0dGVyKG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZW9mKToKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5lb2YgPSBlb2YKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJ1VzZSAlcygpIG9yICVzIHRvIGV4aXQnICUgKHNlbGYubmFtZSwgc2VsZi5lb2YpCiAgICBkZWYgX19jYWxsX18oc2VsZiwgY29kZT1Ob25lKToKICAgICAgICAjIFNoZWxscyBsaWtlIElETEUgY2F0Y2ggdGhlIFN5c3RlbUV4aXQsIGJ1dCBsaXN0ZW4gd2hlbiB0aGVpcgogICAgICAgICMgc3RkaW4gd3JhcHBlciBpcyBjbG9zZWQuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzeXMuc3RkaW4uY2xvc2UoKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgcGFzcwogICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoY29kZSkKCgpjbGFzcyBfUHJpbnRlcihvYmplY3QpOgogICAgIiIiaW50ZXJhY3RpdmUgcHJvbXB0IG9iamVjdHMgZm9yIHByaW50aW5nIHRoZSBsaWNlbnNlIHRleHQsIGEgbGlzdCBvZgogICAgY29udHJpYnV0b3JzIGFuZCB0aGUgY29weXJpZ2h0IG5vdGljZS4iIiIKCiAgICBNQVhMSU5FUyA9IDIzCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGRhdGEsIGZpbGVzPSgpLCBkaXJzPSgpKToKICAgICAgICBpbXBvcnQgb3MKICAgICAgICBzZWxmLl9fbmFtZSA9IG5hbWUKICAgICAgICBzZWxmLl9fZGF0YSA9IGRhdGEKICAgICAgICBzZWxmLl9fbGluZXMgPSBOb25lCiAgICAgICAgc2VsZi5fX2ZpbGVuYW1lcyA9IFtvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkaXIgaW4gZGlycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzXQoKICAgIGRlZiBfX3NldHVwKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX19saW5lczoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZGF0YSA9IE5vbmUKICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5fX2ZpbGVuYW1lczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoKICAgICAgICAgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgZGF0YSA9IHNlbGYuX19kYXRhCiAgICAgICAgc2VsZi5fX2xpbmVzID0gZGF0YS5zcGxpdCgnXG4nKQogICAgICAgIHNlbGYuX19saW5lY250ID0gbGVuKHNlbGYuX19saW5lcykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgc2VsZi5fX3NldHVwKCkKICAgICAgICBpZiBsZW4oc2VsZi5fX2xpbmVzKSA8PSBzZWxmLk1BWExJTkVTOgogICAgICAgICAgICByZXR1cm4gIlxuIi5qb2luKHNlbGYuX19saW5lcykKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gIlR5cGUgJXMoKSB0byBzZWUgdGhlIGZ1bGwgJXMgdGV4dCIgJSAoKHNlbGYuX19uYW1lLCkqMikKCiAgICBkZWYgX19jYWxsX18oc2VsZik6CiAgICAgICAgc2VsZi5fX3NldHVwKCkKICAgICAgICBwcm9tcHQgPSAnSGl0IFJldHVybiBmb3IgbW9yZSwgb3IgcSAoYW5kIFJldHVybikgdG8gcXVpdDogJwogICAgICAgIGxpbmVubyA9IDAKICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsaW5lbm8sIGxpbmVubyArIHNlbGYuTUFYTElORVMpOgogICAgICAgICAgICAgICAgICAgIHByaW50KHNlbGYuX19saW5lc1tpXSkKICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbGluZW5vICs9IHNlbGYuTUFYTElORVMKICAgICAgICAgICAgICAgIGtleSA9IE5vbmUKICAgICAgICAgICAgICAgIHdoaWxlIGtleSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGtleSA9IGlucHV0KHByb21wdCkKICAgICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluICgnJywgJ3EnKToKICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gTm9uZQogICAgICAgICAgICAgICAgaWYga2V5ID09ICdxJzoKICAgICAgICAgICAgICAgICAgICBicmVhawoKCmNsYXNzIF9IZWxwZXIob2JqZWN0KToKICAgICIiIkRlZmluZSB0aGUgYnVpbHRpbiAnaGVscCcuCgogICAgVGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIHB5ZG9jLmhlbHAgdGhhdCBwcm92aWRlcyBhIGhlbHBmdWwgbWVzc2FnZQogICAgd2hlbiAnaGVscCcgaXMgdHlwZWQgYXQgdGhlIFB5dGhvbiBpbnRlcmFjdGl2ZSBwcm9tcHQuCgogICAgQ2FsbGluZyBoZWxwKCkgYXQgdGhlIFB5dGhvbiBwcm9tcHQgc3RhcnRzIGFuIGludGVyYWN0aXZlIGhlbHAgc2Vzc2lvbi4KICAgIENhbGxpbmcgaGVscCh0aGluZykgcHJpbnRzIGhlbHAgZm9yIHRoZSBweXRob24gb2JqZWN0ICd0aGluZycuCiAgICAiIiIKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICJUeXBlIGhlbHAoKSBmb3IgaW50ZXJhY3RpdmUgaGVscCwgIiBcCiAgICAgICAgICAgICAgICJvciBoZWxwKG9iamVjdCkgZm9yIGhlbHAgYWJvdXQgb2JqZWN0LiIKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2RzKToKICAgICAgICBpbXBvcnQgcHlkb2MKICAgICAgICByZXR1cm4gcHlkb2MuaGVscCgqYXJncywgKiprd2RzKQpQSwMEFAAAAAAAAiCjVvcBs0a9YgAAvWIAAAwAAABfc3RycHRpbWUucHkiIiJTdHJwdGltZS1yZWxhdGVkIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KCkNMQVNTRVM6CiAgICBMb2NhbGVUaW1lIC0tIERpc2NvdmVycyBhbmQgc3RvcmVzIGxvY2FsZS1zcGVjaWZpYyB0aW1lIGluZm9ybWF0aW9uCiAgICBUaW1lUkUgLS0gQ3JlYXRlcyByZWdleGVzIGZvciBwYXR0ZXJuIG1hdGNoaW5nIGEgc3RyaW5nIG9mIHRleHQgY29udGFpbmluZwogICAgICAgICAgICAgICAgdGltZSBpbmZvcm1hdGlvbgoKRlVOQ1RJT05TOgogICAgX2dldGxhbmcgLS0gRmlndXJlIG91dCB3aGF0IGxhbmd1YWdlIGlzIGJlaW5nIHVzZWQgZm9yIHRoZSBsb2NhbGUKICAgIHN0cnB0aW1lIC0tIENhbGN1bGF0ZXMgdGhlIHRpbWUgc3RydWN0IHJlcHJlc2VudGVkIGJ5IHRoZSBwYXNzZWQtaW4gc3RyaW5nCgoiIiIKaW1wb3J0IHRpbWUKaW1wb3J0IGxvY2FsZQppbXBvcnQgY2FsZW5kYXIKZnJvbSByZSBpbXBvcnQgY29tcGlsZSBhcyByZV9jb21waWxlCmZyb20gcmUgaW1wb3J0IElHTk9SRUNBU0UKZnJvbSByZSBpbXBvcnQgZXNjYXBlIGFzIHJlX2VzY2FwZQpmcm9tIGRhdGV0aW1lIGltcG9ydCAoZGF0ZSBhcyBkYXRldGltZV9kYXRlLAogICAgICAgICAgICAgICAgICAgICAgdGltZWRlbHRhIGFzIGRhdGV0aW1lX3RpbWVkZWx0YSwKICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lIGFzIGRhdGV0aW1lX3RpbWV6b25lKQpmcm9tIF90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgX3RocmVhZF9hbGxvY2F0ZV9sb2NrCgpfX2FsbF9fID0gW10KCmRlZiBfZ2V0bGFuZygpOgogICAgIyBGaWd1cmUgb3V0IHdoYXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaXMgc2V0IHRvLgogICAgcmV0dXJuIGxvY2FsZS5nZXRsb2NhbGUobG9jYWxlLkxDX1RJTUUpCgpjbGFzcyBMb2NhbGVUaW1lKG9iamVjdCk6CiAgICAiIiJTdG9yZXMgYW5kIGhhbmRsZXMgbG9jYWxlLXNwZWNpZmljIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGltZS4KCiAgICBBVFRSSUJVVEVTOgogICAgICAgIGZfd2Vla2RheSAtLSBmdWxsIHdlZWtkYXkgbmFtZXMgKDctaXRlbSBsaXN0KQogICAgICAgIGFfd2Vla2RheSAtLSBhYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWVzICg3LWl0ZW0gbGlzdCkKICAgICAgICBmX21vbnRoIC0tIGZ1bGwgbW9udGggbmFtZXMgKDEzLWl0ZW0gbGlzdDsgZHVtbXkgdmFsdWUgaW4gWzBdLCB3aGljaAogICAgICAgICAgICAgICAgICAgIGlzIGFkZGVkIGJ5IGNvZGUpCiAgICAgICAgYV9tb250aCAtLSBhYmJyZXZpYXRlZCBtb250aCBuYW1lcyAoMTMtaXRlbSBsaXN0LCBkdW1teSB2YWx1ZSBpbgogICAgICAgICAgICAgICAgICAgIFswXSwgd2hpY2ggaXMgYWRkZWQgYnkgY29kZSkKICAgICAgICBhbV9wbSAtLSBBTS9QTSByZXByZXNlbnRhdGlvbiAoMi1pdGVtIGxpc3QpCiAgICAgICAgTENfZGF0ZV90aW1lIC0tIGZvcm1hdCBzdHJpbmcgZm9yIGRhdGUvdGltZSByZXByZXNlbnRhdGlvbiAoc3RyaW5nKQogICAgICAgIExDX2RhdGUgLS0gZm9ybWF0IHN0cmluZyBmb3IgZGF0ZSByZXByZXNlbnRhdGlvbiAoc3RyaW5nKQogICAgICAgIExDX3RpbWUgLS0gZm9ybWF0IHN0cmluZyBmb3IgdGltZSByZXByZXNlbnRhdGlvbiAoc3RyaW5nKQogICAgICAgIHRpbWV6b25lIC0tIGRheWxpZ2h0LSBhbmQgbm9uLWRheWxpZ2h0LXNhdmluZ3MgdGltZXpvbmUgcmVwcmVzZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAoMi1pdGVtIGxpc3Qgb2Ygc2V0cykKICAgICAgICBsYW5nIC0tIExhbmd1YWdlIHVzZWQgYnkgaW5zdGFuY2UgKDItaXRlbSB0dXBsZSkKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAiIiJTZXQgYWxsIGF0dHJpYnV0ZXMuCgogICAgICAgIE9yZGVyIG9mIG1ldGhvZHMgY2FsbGVkIG1hdHRlcnMgZm9yIGRlcGVuZGVuY3kgcmVhc29ucy4KCiAgICAgICAgVGhlIGxvY2FsZSBsYW5ndWFnZSBpcyBzZXQgYXQgdGhlIG9mZnNldCBhbmQgdGhlbiBjaGVja2VkIGFnYWluIGJlZm9yZQogICAgICAgIGV4aXRpbmcuICBUaGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIHdlcmUgbm90IHNldCB3aXRoIGEKICAgICAgICBtaXggb2YgaW5mb3JtYXRpb24gZnJvbSBtb3JlIHRoYW4gb25lIGxvY2FsZS4gIFRoaXMgd291bGQgbW9zdCBsaWtlbHkKICAgICAgICBoYXBwZW4gd2hlbiB1c2luZyB0aHJlYWRzIHdoZXJlIG9uZSB0aHJlYWQgY2FsbHMgYSBsb2NhbGUtZGVwZW5kZW50CiAgICAgICAgZnVuY3Rpb24gd2hpbGUgYW5vdGhlciB0aHJlYWQgY2hhbmdlcyB0aGUgbG9jYWxlIHdoaWxlIHRoZSBmdW5jdGlvbiBpbgogICAgICAgIHRoZSBvdGhlciB0aHJlYWQgaXMgc3RpbGwgcnVubmluZy4gIFByb3BlciBjb2Rpbmcgd291bGQgY2FsbCBmb3IKICAgICAgICBsb2NrcyB0byBwcmV2ZW50IGNoYW5naW5nIHRoZSBsb2NhbGUgd2hpbGUgbG9jYWxlLWRlcGVuZGVudCBjb2RlIGlzCiAgICAgICAgcnVubmluZy4gIFRoZSBjaGVjayBoZXJlIGlzIGRvbmUgaW4gY2FzZSBzb21lb25lIGRvZXMgbm90IHRoaW5rIGFib3V0CiAgICAgICAgZG9pbmcgdGhpcy4KCiAgICAgICAgT25seSBvdGhlciBwb3NzaWJsZSBpc3N1ZSBpcyBpZiBzb21lb25lIGNoYW5nZWQgdGhlIHRpbWV6b25lIGFuZCBkaWQKICAgICAgICBub3QgY2FsbCB0ei50enNldCAuICBUaGF0IGlzIGFuIGlzc3VlIGZvciB0aGUgcHJvZ3JhbW1lciwgdGhvdWdoLAogICAgICAgIHNpbmNlIGNoYW5naW5nIHRoZSB0aW1lem9uZSBpcyB3b3J0aGxlc3Mgd2l0aG91dCB0aGF0IGNhbGwuCgogICAgICAgICIiIgogICAgICAgIHNlbGYubGFuZyA9IF9nZXRsYW5nKCkKICAgICAgICBzZWxmLl9fY2FsY193ZWVrZGF5KCkKICAgICAgICBzZWxmLl9fY2FsY19tb250aCgpCiAgICAgICAgc2VsZi5fX2NhbGNfYW1fcG0oKQogICAgICAgIHNlbGYuX19jYWxjX3RpbWV6b25lKCkKICAgICAgICBzZWxmLl9fY2FsY19kYXRlX3RpbWUoKQogICAgICAgIGlmIF9nZXRsYW5nKCkgIT0gc2VsZi5sYW5nOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJsb2NhbGUgY2hhbmdlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24iKQogICAgICAgIGlmIHRpbWUudHpuYW1lICE9IHNlbGYudHpuYW1lIG9yIHRpbWUuZGF5bGlnaHQgIT0gc2VsZi5kYXlsaWdodDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidGltZXpvbmUgY2hhbmdlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24iKQoKICAgIGRlZiBfX2NhbGNfd2Vla2RheShzZWxmKToKICAgICAgICAjIFNldCBzZWxmLmFfd2Vla2RheSBhbmQgc2VsZi5mX3dlZWtkYXkgdXNpbmcgdGhlIGNhbGVuZGFyCiAgICAgICAgIyBtb2R1bGUuCiAgICAgICAgYV93ZWVrZGF5ID0gW2NhbGVuZGFyLmRheV9hYmJyW2ldLmxvd2VyKCkgZm9yIGkgaW4gcmFuZ2UoNyldCiAgICAgICAgZl93ZWVrZGF5ID0gW2NhbGVuZGFyLmRheV9uYW1lW2ldLmxvd2VyKCkgZm9yIGkgaW4gcmFuZ2UoNyldCiAgICAgICAgc2VsZi5hX3dlZWtkYXkgPSBhX3dlZWtkYXkKICAgICAgICBzZWxmLmZfd2Vla2RheSA9IGZfd2Vla2RheQoKICAgIGRlZiBfX2NhbGNfbW9udGgoc2VsZik6CiAgICAgICAgIyBTZXQgc2VsZi5mX21vbnRoIGFuZCBzZWxmLmFfbW9udGggdXNpbmcgdGhlIGNhbGVuZGFyIG1vZHVsZS4KICAgICAgICBhX21vbnRoID0gW2NhbGVuZGFyLm1vbnRoX2FiYnJbaV0ubG93ZXIoKSBmb3IgaSBpbiByYW5nZSgxMyldCiAgICAgICAgZl9tb250aCA9IFtjYWxlbmRhci5tb250aF9uYW1lW2ldLmxvd2VyKCkgZm9yIGkgaW4gcmFuZ2UoMTMpXQogICAgICAgIHNlbGYuYV9tb250aCA9IGFfbW9udGgKICAgICAgICBzZWxmLmZfbW9udGggPSBmX21vbnRoCgogICAgZGVmIF9fY2FsY19hbV9wbShzZWxmKToKICAgICAgICAjIFNldCBzZWxmLmFtX3BtIGJ5IHVzaW5nIHRpbWUuc3RyZnRpbWUoKS4KCiAgICAgICAgIyBUaGUgbWFnaWMgZGF0ZSAoMTk5OSwzLDE3LGhvdXIsNDQsNTUsMiw3NiwwKSBpcyBub3QgcmVhbGx5IHRoYXQKICAgICAgICAjIG1hZ2ljYWw7IGp1c3QgaGFwcGVuZWQgdG8gaGF2ZSB1c2VkIGl0IGV2ZXJ5d2hlcmUgZWxzZSB3aGVyZSBhCiAgICAgICAgIyBzdGF0aWMgZGF0ZSB3YXMgbmVlZGVkLgogICAgICAgIGFtX3BtID0gW10KICAgICAgICBmb3IgaG91ciBpbiAoMSwgMjIpOgogICAgICAgICAgICB0aW1lX3R1cGxlID0gdGltZS5zdHJ1Y3RfdGltZSgoMTk5OSwzLDE3LGhvdXIsNDQsNTUsMiw3NiwwKSkKICAgICAgICAgICAgYW1fcG0uYXBwZW5kKHRpbWUuc3RyZnRpbWUoIiVwIiwgdGltZV90dXBsZSkubG93ZXIoKSkKICAgICAgICBzZWxmLmFtX3BtID0gYW1fcG0KCiAgICBkZWYgX19jYWxjX2RhdGVfdGltZShzZWxmKToKICAgICAgICAjIFNldCBzZWxmLmRhdGVfdGltZSwgc2VsZi5kYXRlLCAmIHNlbGYudGltZSBieSB1c2luZwogICAgICAgICMgdGltZS5zdHJmdGltZSgpLgoKICAgICAgICAjIFVzZSAoMTk5OSwzLDE3LDIyLDQ0LDU1LDIsNzYsMCkgZm9yIG1hZ2ljIGRhdGUgYmVjYXVzZSB0aGUgYW1vdW50IG9mCiAgICAgICAgIyBvdmVybG9hZGVkIG51bWJlcnMgaXMgbWluaW1pemVkLiAgVGhlIG9yZGVyIGluIHdoaWNoIHNlYXJjaGVzIGZvcgogICAgICAgICMgdmFsdWVzIHdpdGhpbiB0aGUgZm9ybWF0IHN0cmluZyBpcyB2ZXJ5IGltcG9ydGFudDsgaXQgZWxpbWluYXRlcwogICAgICAgICMgcG9zc2libGUgYW1iaWd1aXR5IGZvciB3aGF0IHNvbWV0aGluZyByZXByZXNlbnRzLgogICAgICAgIHRpbWVfdHVwbGUgPSB0aW1lLnN0cnVjdF90aW1lKCgxOTk5LDMsMTcsMjIsNDQsNTUsMiw3NiwwKSkKICAgICAgICBkYXRlX3RpbWUgPSBbTm9uZSwgTm9uZSwgTm9uZV0KICAgICAgICBkYXRlX3RpbWVbMF0gPSB0aW1lLnN0cmZ0aW1lKCIlYyIsIHRpbWVfdHVwbGUpLmxvd2VyKCkKICAgICAgICBkYXRlX3RpbWVbMV0gPSB0aW1lLnN0cmZ0aW1lKCIleCIsIHRpbWVfdHVwbGUpLmxvd2VyKCkKICAgICAgICBkYXRlX3RpbWVbMl0gPSB0aW1lLnN0cmZ0aW1lKCIlWCIsIHRpbWVfdHVwbGUpLmxvd2VyKCkKICAgICAgICByZXBsYWNlbWVudF9wYWlycyA9IFsoJyUnLCAnJSUnKSwgKHNlbGYuZl93ZWVrZGF5WzJdLCAnJUEnKSwKICAgICAgICAgICAgICAgICAgICAoc2VsZi5mX21vbnRoWzNdLCAnJUInKSwgKHNlbGYuYV93ZWVrZGF5WzJdLCAnJWEnKSwKICAgICAgICAgICAgICAgICAgICAoc2VsZi5hX21vbnRoWzNdLCAnJWInKSwgKHNlbGYuYW1fcG1bMV0sICclcCcpLAogICAgICAgICAgICAgICAgICAgICgnMTk5OScsICclWScpLCAoJzk5JywgJyV5JyksICgnMjInLCAnJUgnKSwKICAgICAgICAgICAgICAgICAgICAoJzQ0JywgJyVNJyksICgnNTUnLCAnJVMnKSwgKCc3NicsICclaicpLAogICAgICAgICAgICAgICAgICAgICgnMTcnLCAnJWQnKSwgKCcwMycsICclbScpLCAoJzMnLCAnJW0nKSwKICAgICAgICAgICAgICAgICAgICAjICczJyBuZWVkZWQgZm9yIHdoZW4gbm8gbGVhZGluZyB6ZXJvLgogICAgICAgICAgICAgICAgICAgICgnMicsICcldycpLCAoJzEwJywgJyVJJyldCiAgICAgICAgcmVwbGFjZW1lbnRfcGFpcnMuZXh0ZW5kKFsodHosICIlWiIpIGZvciB0el92YWx1ZXMgaW4gc2VsZi50aW1lem9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdHogaW4gdHpfdmFsdWVzXSkKICAgICAgICBmb3Igb2Zmc2V0LGRpcmVjdGl2ZSBpbiAoKDAsJyVjJyksICgxLCcleCcpLCAoMiwnJVgnKSk6CiAgICAgICAgICAgIGN1cnJlbnRfZm9ybWF0ID0gZGF0ZV90aW1lW29mZnNldF0KICAgICAgICAgICAgZm9yIG9sZCwgbmV3IGluIHJlcGxhY2VtZW50X3BhaXJzOgogICAgICAgICAgICAgICAgIyBNdXN0IGRlYWwgd2l0aCBwb3NzaWJsZSBsYWNrIG9mIGxvY2FsZSBpbmZvCiAgICAgICAgICAgICAgICAjIG1hbmlmZXN0aW5nIGl0c2VsZiBhcyB0aGUgZW1wdHkgc3RyaW5nIChlLmcuLCBTd2VkaXNoJ3MKICAgICAgICAgICAgICAgICMgbGFjayBvZiBBTS9QTSBpbmZvKSBvciBhIHBsYXRmb3JtIHJldHVybmluZyBhIHR1cGxlIG9mIGVtcHR5CiAgICAgICAgICAgICAgICAjIHN0cmluZ3MgKGUuZy4sIE1hY09TIDkgaGF2aW5nIHRpbWV6b25lIGFzICgnJywnJykpLgogICAgICAgICAgICAgICAgaWYgb2xkOgogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZm9ybWF0ID0gY3VycmVudF9mb3JtYXQucmVwbGFjZShvbGQsIG5ldykKICAgICAgICAgICAgIyBJZiAlVyBpcyB1c2VkLCB0aGVuIFN1bmRheSwgMjAwNS0wMS0wMyB3aWxsIGZhbGwgb24gd2VlayAwIHNpbmNlCiAgICAgICAgICAgICMgMjAwNS0wMS0wMyBvY2N1cnMgYmVmb3JlIHRoZSBmaXJzdCBNb25kYXkgb2YgdGhlIHllYXIuICBPdGhlcndpc2UKICAgICAgICAgICAgIyAlVSBpcyB1c2VkLgogICAgICAgICAgICB0aW1lX3R1cGxlID0gdGltZS5zdHJ1Y3RfdGltZSgoMTk5OSwxLDMsMSwxLDEsNiwzLDApKQogICAgICAgICAgICBpZiAnMDAnIGluIHRpbWUuc3RyZnRpbWUoZGlyZWN0aXZlLCB0aW1lX3R1cGxlKToKICAgICAgICAgICAgICAgIFVfVyA9ICclVycKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIFVfVyA9ICclVScKICAgICAgICAgICAgZGF0ZV90aW1lW29mZnNldF0gPSBjdXJyZW50X2Zvcm1hdC5yZXBsYWNlKCcxMScsIFVfVykKICAgICAgICBzZWxmLkxDX2RhdGVfdGltZSA9IGRhdGVfdGltZVswXQogICAgICAgIHNlbGYuTENfZGF0ZSA9IGRhdGVfdGltZVsxXQogICAgICAgIHNlbGYuTENfdGltZSA9IGRhdGVfdGltZVsyXQoKICAgIGRlZiBfX2NhbGNfdGltZXpvbmUoc2VsZik6CiAgICAgICAgIyBTZXQgc2VsZi50aW1lem9uZSBieSB1c2luZyB0aW1lLnR6bmFtZS4KICAgICAgICAjIERvIG5vdCB3b3JyeSBhYm91dCBwb3NzaWJpbGl0eSBvZiB0aW1lLnR6bmFtZVswXSA9PSB0aW1lLnR6bmFtZVsxXQogICAgICAgICMgYW5kIHRpbWUuZGF5bGlnaHQ7IGhhbmRsZSB0aGF0IGluIHN0cnB0aW1lLgogICAgICAgIHRyeToKICAgICAgICAgICAgdGltZS50enNldCgpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgc2VsZi50em5hbWUgPSB0aW1lLnR6bmFtZQogICAgICAgIHNlbGYuZGF5bGlnaHQgPSB0aW1lLmRheWxpZ2h0CiAgICAgICAgbm9fc2F2aW5nID0gZnJvemVuc2V0KHsidXRjIiwgImdtdCIsIHNlbGYudHpuYW1lWzBdLmxvd2VyKCl9KQogICAgICAgIGlmIHNlbGYuZGF5bGlnaHQ6CiAgICAgICAgICAgIGhhc19zYXZpbmcgPSBmcm96ZW5zZXQoe3NlbGYudHpuYW1lWzFdLmxvd2VyKCl9KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGhhc19zYXZpbmcgPSBmcm96ZW5zZXQoKQogICAgICAgIHNlbGYudGltZXpvbmUgPSAobm9fc2F2aW5nLCBoYXNfc2F2aW5nKQoKCmNsYXNzIFRpbWVSRShkaWN0KToKICAgICIiIkhhbmRsZSBjb252ZXJzaW9uIGZyb20gZm9ybWF0IGRpcmVjdGl2ZXMgdG8gcmVnZXhlcy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYWxlX3RpbWU9Tm9uZSk6CiAgICAgICAgIiIiQ3JlYXRlIGtleXMvdmFsdWVzLgoKICAgICAgICBPcmRlciBvZiBleGVjdXRpb24gaXMgaW1wb3J0YW50IGZvciBkZXBlbmRlbmN5IHJlYXNvbnMuCgogICAgICAgICIiIgogICAgICAgIGlmIGxvY2FsZV90aW1lOgogICAgICAgICAgICBzZWxmLmxvY2FsZV90aW1lID0gbG9jYWxlX3RpbWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmxvY2FsZV90aW1lID0gTG9jYWxlVGltZSgpCiAgICAgICAgYmFzZSA9IHN1cGVyKCkKICAgICAgICBiYXNlLl9faW5pdF9fKHsKICAgICAgICAgICAgIyBUaGUgIiBbMS05XSIgcGFydCBvZiB0aGUgcmVnZXggaXMgdG8gbWFrZSAlYyBmcm9tIEFOU0kgQyB3b3JrCiAgICAgICAgICAgICdkJzogciIoP1A8ZD4zWzAtMV18WzEtMl1cZHwwWzEtOV18WzEtOV18IFsxLTldKSIsCiAgICAgICAgICAgICdmJzogciIoP1A8Zj5bMC05XXsxLDZ9KSIsCiAgICAgICAgICAgICdIJzogciIoP1A8SD4yWzAtM118WzAtMV1cZHxcZCkiLAogICAgICAgICAgICAnSSc6IHIiKD9QPEk+MVswLTJdfDBbMS05XXxbMS05XSkiLAogICAgICAgICAgICAnRyc6IHIiKD9QPEc+XGRcZFxkXGQpIiwKICAgICAgICAgICAgJ2onOiByIig/UDxqPjM2WzAtNl18M1swLTVdXGR8WzEtMl1cZFxkfDBbMS05XVxkfDAwWzEtOV18WzEtOV1cZHwwWzEtOV18WzEtOV0pIiwKICAgICAgICAgICAgJ20nOiByIig/UDxtPjFbMC0yXXwwWzEtOV18WzEtOV0pIiwKICAgICAgICAgICAgJ00nOiByIig/UDxNPlswLTVdXGR8XGQpIiwKICAgICAgICAgICAgJ1MnOiByIig/UDxTPjZbMC0xXXxbMC01XVxkfFxkKSIsCiAgICAgICAgICAgICdVJzogciIoP1A8VT41WzAtM118WzAtNF1cZHxcZCkiLAogICAgICAgICAgICAndyc6IHIiKD9QPHc+WzAtNl0pIiwKICAgICAgICAgICAgJ3UnOiByIig/UDx1PlsxLTddKSIsCiAgICAgICAgICAgICdWJzogciIoP1A8Vj41WzAtM118MFsxLTldfFsxLTRdXGR8XGQpIiwKICAgICAgICAgICAgIyBXIGlzIHNldCBiZWxvdyBieSB1c2luZyAnVScKICAgICAgICAgICAgJ3knOiByIig/UDx5PlxkXGQpIiwKICAgICAgICAgICAgI1hYWDogRG9lcyAnWScgbmVlZCB0byB3b3JyeSBhYm91dCBoYXZpbmcgbGVzcyBvciBtb3JlIHRoYW4KICAgICAgICAgICAgIyAgICAgNCBkaWdpdHM/CiAgICAgICAgICAgICdZJzogciIoP1A8WT5cZFxkXGRcZCkiLAogICAgICAgICAgICAneic6IHIiKD9QPHo+WystXVxkXGQ6P1swLTVdXGQoOj9bMC01XVxkKFwuXGR7MSw2fSk/KT98KD8taTpaKSkiLAogICAgICAgICAgICAnQSc6IHNlbGYuX19zZXFUb1JFKHNlbGYubG9jYWxlX3RpbWUuZl93ZWVrZGF5LCAnQScpLAogICAgICAgICAgICAnYSc6IHNlbGYuX19zZXFUb1JFKHNlbGYubG9jYWxlX3RpbWUuYV93ZWVrZGF5LCAnYScpLAogICAgICAgICAgICAnQic6IHNlbGYuX19zZXFUb1JFKHNlbGYubG9jYWxlX3RpbWUuZl9tb250aFsxOl0sICdCJyksCiAgICAgICAgICAgICdiJzogc2VsZi5fX3NlcVRvUkUoc2VsZi5sb2NhbGVfdGltZS5hX21vbnRoWzE6XSwgJ2InKSwKICAgICAgICAgICAgJ3AnOiBzZWxmLl9fc2VxVG9SRShzZWxmLmxvY2FsZV90aW1lLmFtX3BtLCAncCcpLAogICAgICAgICAgICAnWic6IHNlbGYuX19zZXFUb1JFKCh0eiBmb3IgdHpfbmFtZXMgaW4gc2VsZi5sb2NhbGVfdGltZS50aW1lem9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHR6IGluIHR6X25hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWicpLAogICAgICAgICAgICAnJSc6ICclJ30pCiAgICAgICAgYmFzZS5fX3NldGl0ZW1fXygnVycsIGJhc2UuX19nZXRpdGVtX18oJ1UnKS5yZXBsYWNlKCdVJywgJ1cnKSkKICAgICAgICBiYXNlLl9fc2V0aXRlbV9fKCdjJywgc2VsZi5wYXR0ZXJuKHNlbGYubG9jYWxlX3RpbWUuTENfZGF0ZV90aW1lKSkKICAgICAgICBiYXNlLl9fc2V0aXRlbV9fKCd4Jywgc2VsZi5wYXR0ZXJuKHNlbGYubG9jYWxlX3RpbWUuTENfZGF0ZSkpCiAgICAgICAgYmFzZS5fX3NldGl0ZW1fXygnWCcsIHNlbGYucGF0dGVybihzZWxmLmxvY2FsZV90aW1lLkxDX3RpbWUpKQoKICAgIGRlZiBfX3NlcVRvUkUoc2VsZiwgdG9fY29udmVydCwgZGlyZWN0aXZlKToKICAgICAgICAiIiJDb252ZXJ0IGEgbGlzdCB0byBhIHJlZ2V4IHN0cmluZyBmb3IgbWF0Y2hpbmcgYSBkaXJlY3RpdmUuCgogICAgICAgIFdhbnQgcG9zc2libGUgbWF0Y2hpbmcgdmFsdWVzIHRvIGJlIGZyb20gbG9uZ2VzdCB0byBzaG9ydGVzdC4gIFRoaXMKICAgICAgICBwcmV2ZW50cyB0aGUgcG9zc2liaWxpdHkgb2YgYSBtYXRjaCBvY2N1cnJpbmcgZm9yIGEgdmFsdWUgdGhhdCBhbHNvCiAgICAgICAgYSBzdWJzdHJpbmcgb2YgYSBsYXJnZXIgdmFsdWUgdGhhdCBzaG91bGQgaGF2ZSBtYXRjaGVkIChlLmcuLCAnYWJjJwogICAgICAgIG1hdGNoaW5nIHdoZW4gJ2FiY2RlZicgc2hvdWxkIGhhdmUgYmVlbiB0aGUgbWF0Y2gpLgoKICAgICAgICAiIiIKICAgICAgICB0b19jb252ZXJ0ID0gc29ydGVkKHRvX2NvbnZlcnQsIGtleT1sZW4sIHJldmVyc2U9VHJ1ZSkKICAgICAgICBmb3IgdmFsdWUgaW4gdG9fY29udmVydDoKICAgICAgICAgICAgaWYgdmFsdWUgIT0gJyc6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnJwogICAgICAgIHJlZ2V4ID0gJ3wnLmpvaW4ocmVfZXNjYXBlKHN0dWZmKSBmb3Igc3R1ZmYgaW4gdG9fY29udmVydCkKICAgICAgICByZWdleCA9ICcoP1A8JXM+JXMnICUgKGRpcmVjdGl2ZSwgcmVnZXgpCiAgICAgICAgcmV0dXJuICclcyknICUgcmVnZXgKCiAgICBkZWYgcGF0dGVybihzZWxmLCBmb3JtYXQpOgogICAgICAgICIiIlJldHVybiByZWdleCBwYXR0ZXJuIGZvciB0aGUgZm9ybWF0IHN0cmluZy4KCiAgICAgICAgTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbnkgY2hhcmFjdGVycyB0aGF0IG1pZ2h0IGJlIGludGVycHJldGVkIGFzCiAgICAgICAgcmVnZXggc3ludGF4IGFyZSBlc2NhcGVkLgoKICAgICAgICAiIiIKICAgICAgICBwcm9jZXNzZWRfZm9ybWF0ID0gJycKICAgICAgICAjIFRoZSBzdWIoKSBjYWxsIGVzY2FwZXMgYWxsIGNoYXJhY3RlcnMgdGhhdCBtaWdodCBiZSBtaXNjb25zdHJ1ZWQKICAgICAgICAjIGFzIHJlZ2V4IHN5bnRheC4gIENhbm5vdCB1c2UgcmUuZXNjYXBlIHNpbmNlIHdlIGhhdmUgdG8gZGVhbCB3aXRoCiAgICAgICAgIyBmb3JtYXQgZGlyZWN0aXZlcyAoJW0sIGV0Yy4pLgogICAgICAgIHJlZ2V4X2NoYXJzID0gcmVfY29tcGlsZShyIihbXFwuXiQqKz9cKFwpe31cW1xdfF0pIikKICAgICAgICBmb3JtYXQgPSByZWdleF9jaGFycy5zdWIociJcXFwxIiwgZm9ybWF0KQogICAgICAgIHdoaXRlc3BhY2VfcmVwbGFjZW1lbnQgPSByZV9jb21waWxlKHInXHMrJykKICAgICAgICBmb3JtYXQgPSB3aGl0ZXNwYWNlX3JlcGxhY2VtZW50LnN1YihyJ1xccysnLCBmb3JtYXQpCiAgICAgICAgd2hpbGUgJyUnIGluIGZvcm1hdDoKICAgICAgICAgICAgZGlyZWN0aXZlX2luZGV4ID0gZm9ybWF0LmluZGV4KCclJykrMQogICAgICAgICAgICBwcm9jZXNzZWRfZm9ybWF0ID0gIiVzJXMlcyIgJSAocHJvY2Vzc2VkX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFs6ZGlyZWN0aXZlX2luZGV4LTFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZltmb3JtYXRbZGlyZWN0aXZlX2luZGV4XV0pCiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdFtkaXJlY3RpdmVfaW5kZXgrMTpdCiAgICAgICAgcmV0dXJuICIlcyVzIiAlIChwcm9jZXNzZWRfZm9ybWF0LCBmb3JtYXQpCgogICAgZGVmIGNvbXBpbGUoc2VsZiwgZm9ybWF0KToKICAgICAgICAiIiJSZXR1cm4gYSBjb21waWxlZCByZSBvYmplY3QgZm9yIHRoZSBmb3JtYXQgc3RyaW5nLiIiIgogICAgICAgIHJldHVybiByZV9jb21waWxlKHNlbGYucGF0dGVybihmb3JtYXQpLCBJR05PUkVDQVNFKQoKX2NhY2hlX2xvY2sgPSBfdGhyZWFkX2FsbG9jYXRlX2xvY2soKQojIERPIE5PVCBtb2RpZnkgX1RpbWVSRV9jYWNoZSBvciBfcmVnZXhfY2FjaGUgd2l0aG91dCBhY3F1aXJpbmcgdGhlIGNhY2hlIGxvY2sKIyBmaXJzdCEKX1RpbWVSRV9jYWNoZSA9IFRpbWVSRSgpCl9DQUNIRV9NQVhfU0laRSA9IDUgIyBNYXggbnVtYmVyIG9mIHJlZ2V4ZXMgc3RvcmVkIGluIF9yZWdleF9jYWNoZQpfcmVnZXhfY2FjaGUgPSB7fQoKZGVmIF9jYWxjX2p1bGlhbl9mcm9tX1Vfb3JfVyh5ZWFyLCB3ZWVrX29mX3llYXIsIGRheV9vZl93ZWVrLCB3ZWVrX3N0YXJ0c19Nb24pOgogICAgIiIiQ2FsY3VsYXRlIHRoZSBKdWxpYW4gZGF5IGJhc2VkIG9uIHRoZSB5ZWFyLCB3ZWVrIG9mIHRoZSB5ZWFyLCBhbmQgZGF5IG9mCiAgICB0aGUgd2Vlaywgd2l0aCB3ZWVrX3N0YXJ0X2RheSByZXByZXNlbnRpbmcgd2hldGhlciB0aGUgd2VlayBvZiB0aGUgeWVhcgogICAgYXNzdW1lcyB0aGUgd2VlayBzdGFydHMgb24gU3VuZGF5IG9yIE1vbmRheSAoNiBvciAwKS4iIiIKICAgIGZpcnN0X3dlZWtkYXkgPSBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLndlZWtkYXkoKQogICAgIyBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoZSAlVSBkaXJlY3RpdmUgKHdlZWsgc3RhcnRzIG9uIFN1bmRheSksIGl0J3MKICAgICMgZWFzaWVyIHRvIGp1c3Qgc2hpZnQgdGhlIHZpZXcgdG8gU3VuZGF5IGJlaW5nIHRoZSBmaXJzdCBkYXkgb2YgdGhlCiAgICAjIHdlZWsuCiAgICBpZiBub3Qgd2Vla19zdGFydHNfTW9uOgogICAgICAgIGZpcnN0X3dlZWtkYXkgPSAoZmlyc3Rfd2Vla2RheSArIDEpICUgNwogICAgICAgIGRheV9vZl93ZWVrID0gKGRheV9vZl93ZWVrICsgMSkgJSA3CiAgICAjIE5lZWQgdG8gd2F0Y2ggb3V0IGZvciBhIHdlZWsgMCAod2hlbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGlzIG5vdAogICAgIyB0aGUgc2FtZSBhcyB0aGF0IHNwZWNpZmllZCBieSAlVSBvciAlVykuCiAgICB3ZWVrXzBfbGVuZ3RoID0gKDcgLSBmaXJzdF93ZWVrZGF5KSAlIDcKICAgIGlmIHdlZWtfb2ZfeWVhciA9PSAwOgogICAgICAgIHJldHVybiAxICsgZGF5X29mX3dlZWsgLSBmaXJzdF93ZWVrZGF5CiAgICBlbHNlOgogICAgICAgIGRheXNfdG9fd2VlayA9IHdlZWtfMF9sZW5ndGggKyAoNyAqICh3ZWVrX29mX3llYXIgLSAxKSkKICAgICAgICByZXR1cm4gMSArIGRheXNfdG9fd2VlayArIGRheV9vZl93ZWVrCgoKZGVmIF9jYWxjX2p1bGlhbl9mcm9tX1YoaXNvX3llYXIsIGlzb193ZWVrLCBpc29fd2Vla2RheSk6CiAgICAiIiJDYWxjdWxhdGUgdGhlIEp1bGlhbiBkYXkgYmFzZWQgb24gdGhlIElTTyA4NjAxIHllYXIsIHdlZWssIGFuZCB3ZWVrZGF5LgogICAgSVNPIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMsIHdpdGggd2VlayAwMSBiZWluZyB0aGUgd2VlayBjb250YWluaW5nIDQgSmFuLgogICAgSVNPIHdlZWsgZGF5cyByYW5nZSBmcm9tIDEgKE1vbmRheSkgdG8gNyAoU3VuZGF5KS4KICAgICIiIgogICAgY29ycmVjdGlvbiA9IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDQpLmlzb3dlZWtkYXkoKSArIDMKICAgIG9yZGluYWwgPSAoaXNvX3dlZWsgKiA3KSArIGlzb193ZWVrZGF5IC0gY29ycmVjdGlvbgogICAgIyBvcmRpbmFsIG1heSBiZSBuZWdhdGl2ZSBvciAwIG5vdywgd2hpY2ggbWVhbnMgdGhlIGRhdGUgaXMgaW4gdGhlIHByZXZpb3VzCiAgICAjIGNhbGVuZGFyIHllYXIKICAgIGlmIG9yZGluYWwgPCAxOgogICAgICAgIG9yZGluYWwgKz0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgMSkudG9vcmRpbmFsKCkKICAgICAgICBpc29feWVhciAtPSAxCiAgICAgICAgb3JkaW5hbCAtPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCAxKS50b29yZGluYWwoKQogICAgcmV0dXJuIGlzb195ZWFyLCBvcmRpbmFsCgoKZGVmIF9zdHJwdGltZShkYXRhX3N0cmluZywgZm9ybWF0PSIlYSAlYiAlZCAlSDolTTolUyAlWSIpOgogICAgIiIiUmV0dXJuIGEgMi10dXBsZSBjb25zaXN0aW5nIG9mIGEgdGltZSBzdHJ1Y3QgYW5kIGFuIGludCBjb250YWluaW5nCiAgICB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUKICAgIGZvcm1hdCBzdHJpbmcuIiIiCgogICAgZm9yIGluZGV4LCBhcmcgaW4gZW51bWVyYXRlKFtkYXRhX3N0cmluZywgZm9ybWF0XSk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJnLCBzdHIpOgogICAgICAgICAgICBtc2cgPSAic3RycHRpbWUoKSBhcmd1bWVudCB7fSBtdXN0IGJlIHN0ciwgbm90IHt9IgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnLmZvcm1hdChpbmRleCwgdHlwZShhcmcpKSkKCiAgICBnbG9iYWwgX1RpbWVSRV9jYWNoZSwgX3JlZ2V4X2NhY2hlCiAgICB3aXRoIF9jYWNoZV9sb2NrOgogICAgICAgIGxvY2FsZV90aW1lID0gX1RpbWVSRV9jYWNoZS5sb2NhbGVfdGltZQogICAgICAgIGlmIChfZ2V0bGFuZygpICE9IGxvY2FsZV90aW1lLmxhbmcgb3IKICAgICAgICAgICAgdGltZS50em5hbWUgIT0gbG9jYWxlX3RpbWUudHpuYW1lIG9yCiAgICAgICAgICAgIHRpbWUuZGF5bGlnaHQgIT0gbG9jYWxlX3RpbWUuZGF5bGlnaHQpOgogICAgICAgICAgICBfVGltZVJFX2NhY2hlID0gVGltZVJFKCkKICAgICAgICAgICAgX3JlZ2V4X2NhY2hlLmNsZWFyKCkKICAgICAgICAgICAgbG9jYWxlX3RpbWUgPSBfVGltZVJFX2NhY2hlLmxvY2FsZV90aW1lCiAgICAgICAgaWYgbGVuKF9yZWdleF9jYWNoZSkgPiBfQ0FDSEVfTUFYX1NJWkU6CiAgICAgICAgICAgIF9yZWdleF9jYWNoZS5jbGVhcigpCiAgICAgICAgZm9ybWF0X3JlZ2V4ID0gX3JlZ2V4X2NhY2hlLmdldChmb3JtYXQpCiAgICAgICAgaWYgbm90IGZvcm1hdF9yZWdleDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZm9ybWF0X3JlZ2V4ID0gX1RpbWVSRV9jYWNoZS5jb21waWxlKGZvcm1hdCkKICAgICAgICAgICAgIyBLZXlFcnJvciByYWlzZWQgd2hlbiBhIGJhZCBmb3JtYXQgaXMgZm91bmQ7IGNhbiBiZSBzcGVjaWZpZWQgYXMKICAgICAgICAgICAgIyBcXCwgaW4gd2hpY2ggY2FzZSBpdCB3YXMgYSBzdHJheSAlIGJ1dCB3aXRoIGEgc3BhY2UgYWZ0ZXIgaXQKICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgIGJhZF9kaXJlY3RpdmUgPSBlcnIuYXJnc1swXQogICAgICAgICAgICAgICAgaWYgYmFkX2RpcmVjdGl2ZSA9PSAiXFwiOgogICAgICAgICAgICAgICAgICAgIGJhZF9kaXJlY3RpdmUgPSAiJSIKICAgICAgICAgICAgICAgIGRlbCBlcnIKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiclcycgaXMgYSBiYWQgZGlyZWN0aXZlIGluIGZvcm1hdCAnJXMnIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWRfZGlyZWN0aXZlLCBmb3JtYXQpKSBmcm9tIE5vbmUKICAgICAgICAgICAgIyBJbmRleEVycm9yIG9ubHkgb2NjdXJzIHdoZW4gdGhlIGZvcm1hdCBzdHJpbmcgaXMgIiUiCiAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3RyYXkgJSUgaW4gZm9ybWF0ICclcyciICUgZm9ybWF0KSBmcm9tIE5vbmUKICAgICAgICAgICAgX3JlZ2V4X2NhY2hlW2Zvcm1hdF0gPSBmb3JtYXRfcmVnZXgKICAgIGZvdW5kID0gZm9ybWF0X3JlZ2V4Lm1hdGNoKGRhdGFfc3RyaW5nKQogICAgaWYgbm90IGZvdW5kOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRpbWUgZGF0YSAlciBkb2VzIG5vdCBtYXRjaCBmb3JtYXQgJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhX3N0cmluZywgZm9ybWF0KSkKICAgIGlmIGxlbihkYXRhX3N0cmluZykgIT0gZm91bmQuZW5kKCk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5jb252ZXJ0ZWQgZGF0YSByZW1haW5zOiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RyaW5nW2ZvdW5kLmVuZCgpOl0pCgogICAgaXNvX3llYXIgPSB5ZWFyID0gTm9uZQogICAgbW9udGggPSBkYXkgPSAxCiAgICBob3VyID0gbWludXRlID0gc2Vjb25kID0gZnJhY3Rpb24gPSAwCiAgICB0eiA9IC0xCiAgICBnbXRvZmYgPSBOb25lCiAgICBnbXRvZmZfZnJhY3Rpb24gPSAwCiAgICAjIERlZmF1bHQgdG8gLTEgdG8gc2lnbmlmeSB0aGF0IHZhbHVlcyBub3Qga25vd247IG5vdCBjcml0aWNhbCB0byBoYXZlLAogICAgIyB0aG91Z2gKICAgIGlzb193ZWVrID0gd2Vla19vZl95ZWFyID0gTm9uZQogICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gTm9uZQogICAgIyB3ZWVrZGF5IGFuZCBqdWxpYW4gZGVmYXVsdGVkIHRvIE5vbmUgc28gYXMgdG8gc2lnbmFsIG5lZWQgdG8gY2FsY3VsYXRlCiAgICAjIHZhbHVlcwogICAgd2Vla2RheSA9IGp1bGlhbiA9IE5vbmUKICAgIGZvdW5kX2RpY3QgPSBmb3VuZC5ncm91cGRpY3QoKQogICAgZm9yIGdyb3VwX2tleSBpbiBmb3VuZF9kaWN0LmtleXMoKToKICAgICAgICAjIERpcmVjdGl2ZXMgbm90IGV4cGxpY2l0bHkgaGFuZGxlZCBiZWxvdzoKICAgICAgICAjICAgYywgeCwgWAogICAgICAgICMgICAgICBoYW5kbGVkIGJ5IG1ha2luZyBvdXQgb2Ygb3RoZXIgZGlyZWN0aXZlcwogICAgICAgICMgICBVLCBXCiAgICAgICAgIyAgICAgIHdvcnRobGVzcyB3aXRob3V0IGRheSBvZiB0aGUgd2VlawogICAgICAgIGlmIGdyb3VwX2tleSA9PSAneSc6CiAgICAgICAgICAgIHllYXIgPSBpbnQoZm91bmRfZGljdFsneSddKQogICAgICAgICAgICAjIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3Igc3RycHRpbWUoKSBzdGF0ZXMgdGhhdCBhICV5CiAgICAgICAgICAgICN2YWx1ZSBpbiB0aGUgcmFuZ2Ugb2YgWzAwLCA2OF0gaXMgaW4gdGhlIGNlbnR1cnkgMjAwMCwgd2hpbGUKICAgICAgICAgICAgI1s2OSw5OV0gaXMgaW4gdGhlIGNlbnR1cnkgMTkwMAogICAgICAgICAgICBpZiB5ZWFyIDw9IDY4OgogICAgICAgICAgICAgICAgeWVhciArPSAyMDAwCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB5ZWFyICs9IDE5MDAKICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnWSc6CiAgICAgICAgICAgIHllYXIgPSBpbnQoZm91bmRfZGljdFsnWSddKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdHJzoKICAgICAgICAgICAgaXNvX3llYXIgPSBpbnQoZm91bmRfZGljdFsnRyddKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdtJzoKICAgICAgICAgICAgbW9udGggPSBpbnQoZm91bmRfZGljdFsnbSddKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdCJzoKICAgICAgICAgICAgbW9udGggPSBsb2NhbGVfdGltZS5mX21vbnRoLmluZGV4KGZvdW5kX2RpY3RbJ0InXS5sb3dlcigpKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdiJzoKICAgICAgICAgICAgbW9udGggPSBsb2NhbGVfdGltZS5hX21vbnRoLmluZGV4KGZvdW5kX2RpY3RbJ2InXS5sb3dlcigpKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdkJzoKICAgICAgICAgICAgZGF5ID0gaW50KGZvdW5kX2RpY3RbJ2QnXSkKICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnSCc6CiAgICAgICAgICAgIGhvdXIgPSBpbnQoZm91bmRfZGljdFsnSCddKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdJJzoKICAgICAgICAgICAgaG91ciA9IGludChmb3VuZF9kaWN0WydJJ10pCiAgICAgICAgICAgIGFtcG0gPSBmb3VuZF9kaWN0LmdldCgncCcsICcnKS5sb3dlcigpCiAgICAgICAgICAgICMgSWYgdGhlcmUgd2FzIG5vIEFNL1BNIGluZGljYXRvciwgd2UnbGwgdHJlYXQgdGhpcyBsaWtlIEFNCiAgICAgICAgICAgIGlmIGFtcG0gaW4gKCcnLCBsb2NhbGVfdGltZS5hbV9wbVswXSk6CiAgICAgICAgICAgICAgICAjIFdlJ3JlIGluIEFNIHNvIHRoZSBob3VyIGlzIGNvcnJlY3QgdW5sZXNzIHdlJ3JlCiAgICAgICAgICAgICAgICAjIGxvb2tpbmcgYXQgMTIgbWlkbmlnaHQuCiAgICAgICAgICAgICAgICAjIDEyIG1pZG5pZ2h0ID09IDEyIEFNID09IGhvdXIgMAogICAgICAgICAgICAgICAgaWYgaG91ciA9PSAxMjoKICAgICAgICAgICAgICAgICAgICBob3VyID0gMAogICAgICAgICAgICBlbGlmIGFtcG0gPT0gbG9jYWxlX3RpbWUuYW1fcG1bMV06CiAgICAgICAgICAgICAgICAjIFdlJ3JlIGluIFBNIHNvIHdlIG5lZWQgdG8gYWRkIDEyIHRvIHRoZSBob3VyIHVubGVzcwogICAgICAgICAgICAgICAgIyB3ZSdyZSBsb29raW5nIGF0IDEyIG5vb24uCiAgICAgICAgICAgICAgICAjIDEyIG5vb24gPT0gMTIgUE0gPT0gaG91ciAxMgogICAgICAgICAgICAgICAgaWYgaG91ciAhPSAxMjoKICAgICAgICAgICAgICAgICAgICBob3VyICs9IDEyCiAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ00nOgogICAgICAgICAgICBtaW51dGUgPSBpbnQoZm91bmRfZGljdFsnTSddKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdTJzoKICAgICAgICAgICAgc2Vjb25kID0gaW50KGZvdW5kX2RpY3RbJ1MnXSkKICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnZic6CiAgICAgICAgICAgIHMgPSBmb3VuZF9kaWN0WydmJ10KICAgICAgICAgICAgIyBQYWQgdG8gYWx3YXlzIHJldHVybiBtaWNyb3NlY29uZHMuCiAgICAgICAgICAgIHMgKz0gIjAiICogKDYgLSBsZW4ocykpCiAgICAgICAgICAgIGZyYWN0aW9uID0gaW50KHMpCiAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ0EnOgogICAgICAgICAgICB3ZWVrZGF5ID0gbG9jYWxlX3RpbWUuZl93ZWVrZGF5LmluZGV4KGZvdW5kX2RpY3RbJ0EnXS5sb3dlcigpKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdhJzoKICAgICAgICAgICAgd2Vla2RheSA9IGxvY2FsZV90aW1lLmFfd2Vla2RheS5pbmRleChmb3VuZF9kaWN0WydhJ10ubG93ZXIoKSkKICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAndyc6CiAgICAgICAgICAgIHdlZWtkYXkgPSBpbnQoZm91bmRfZGljdFsndyddKQogICAgICAgICAgICBpZiB3ZWVrZGF5ID09IDA6CiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gNgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgd2Vla2RheSAtPSAxCiAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ3UnOgogICAgICAgICAgICB3ZWVrZGF5ID0gaW50KGZvdW5kX2RpY3RbJ3UnXSkKICAgICAgICAgICAgd2Vla2RheSAtPSAxCiAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ2onOgogICAgICAgICAgICBqdWxpYW4gPSBpbnQoZm91bmRfZGljdFsnaiddKQogICAgICAgIGVsaWYgZ3JvdXBfa2V5IGluICgnVScsICdXJyk6CiAgICAgICAgICAgIHdlZWtfb2ZfeWVhciA9IGludChmb3VuZF9kaWN0W2dyb3VwX2tleV0pCiAgICAgICAgICAgIGlmIGdyb3VwX2tleSA9PSAnVSc6CiAgICAgICAgICAgICAgICAjIFUgc3RhcnRzIHdlZWsgb24gU3VuZGF5LgogICAgICAgICAgICAgICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gNgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBXIHN0YXJ0cyB3ZWVrIG9uIE1vbmRheS4KICAgICAgICAgICAgICAgIHdlZWtfb2ZfeWVhcl9zdGFydCA9IDAKICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnVic6CiAgICAgICAgICAgIGlzb193ZWVrID0gaW50KGZvdW5kX2RpY3RbJ1YnXSkKICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAneic6CiAgICAgICAgICAgIHogPSBmb3VuZF9kaWN0Wyd6J10KICAgICAgICAgICAgaWYgeiA9PSAnWic6CiAgICAgICAgICAgICAgICBnbXRvZmYgPSAwCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiB6WzNdID09ICc6JzoKICAgICAgICAgICAgICAgICAgICB6ID0gels6M10gKyB6WzQ6XQogICAgICAgICAgICAgICAgICAgIGlmIGxlbih6KSA+IDU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHpbNV0gIT0gJzonOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gZiJJbmNvbnNpc3RlbnQgdXNlIG9mIDogaW4ge2ZvdW5kX2RpY3RbJ3onXX0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKICAgICAgICAgICAgICAgICAgICAgICAgeiA9IHpbOjVdICsgels2Ol0KICAgICAgICAgICAgICAgIGhvdXJzID0gaW50KHpbMTozXSkKICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBpbnQoelszOjVdKQogICAgICAgICAgICAgICAgc2Vjb25kcyA9IGludCh6WzU6N10gb3IgMCkKICAgICAgICAgICAgICAgIGdtdG9mZiA9IChob3VycyAqIDYwICogNjApICsgKG1pbnV0ZXMgKiA2MCkgKyBzZWNvbmRzCiAgICAgICAgICAgICAgICBnbXRvZmZfcmVtYWluZGVyID0gels4Ol0KICAgICAgICAgICAgICAgICMgUGFkIHRvIGFsd2F5cyByZXR1cm4gbWljcm9zZWNvbmRzLgogICAgICAgICAgICAgICAgZ210b2ZmX3JlbWFpbmRlcl9wYWRkaW5nID0gIjAiICogKDYgLSBsZW4oZ210b2ZmX3JlbWFpbmRlcikpCiAgICAgICAgICAgICAgICBnbXRvZmZfZnJhY3Rpb24gPSBpbnQoZ210b2ZmX3JlbWFpbmRlciArIGdtdG9mZl9yZW1haW5kZXJfcGFkZGluZykKICAgICAgICAgICAgICAgIGlmIHouc3RhcnRzd2l0aCgiLSIpOgogICAgICAgICAgICAgICAgICAgIGdtdG9mZiA9IC1nbXRvZmYKICAgICAgICAgICAgICAgICAgICBnbXRvZmZfZnJhY3Rpb24gPSAtZ210b2ZmX2ZyYWN0aW9uCiAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ1onOgogICAgICAgICAgICAjIFNpbmNlIC0xIGlzIGRlZmF1bHQgdmFsdWUgb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0IHNldHRpbmcgdHogaWYKICAgICAgICAgICAgIyBpdCBjYW4gYmUgc29tZXRoaW5nIG90aGVyIHRoYW4gLTEuCiAgICAgICAgICAgIGZvdW5kX3pvbmUgPSBmb3VuZF9kaWN0WydaJ10ubG93ZXIoKQogICAgICAgICAgICBmb3IgdmFsdWUsIHR6X3ZhbHVlcyBpbiBlbnVtZXJhdGUobG9jYWxlX3RpbWUudGltZXpvbmUpOgogICAgICAgICAgICAgICAgaWYgZm91bmRfem9uZSBpbiB0el92YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIyBEZWFsIHdpdGggYmFkIGxvY2FsZSBzZXR1cCB3aGVyZSB0aW1lem9uZSBuYW1lcyBhcmUgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBzYW1lIGFuZCB5ZXQgdGltZS5kYXlsaWdodCBpcyB0cnVlOyB0b28gYW1iaWd1b3VzIHRvCiAgICAgICAgICAgICAgICAgICAgIyBiZSBhYmxlIHRvIHRlbGwgd2hhdCB0aW1lem9uZSBoYXMgZGF5bGlnaHQgc2F2aW5ncwogICAgICAgICAgICAgICAgICAgIGlmICh0aW1lLnR6bmFtZVswXSA9PSB0aW1lLnR6bmFtZVsxXSBhbmQKICAgICAgICAgICAgICAgICAgICAgICB0aW1lLmRheWxpZ2h0IGFuZCBmb3VuZF96b25lIG5vdCBpbiAoInV0YyIsICJnbXQiKSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdHogPSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgIyBEZWFsIHdpdGggdGhlIGNhc2VzIHdoZXJlIGFtYmlndWl0aWVzIGFyaXplCiAgICAjIGRvbid0IGFzc3VtZSBkZWZhdWx0IHZhbHVlcyBmb3IgSVNPIHdlZWsveWVhcgogICAgaWYgeWVhciBpcyBOb25lIGFuZCBpc29feWVhciBpcyBub3QgTm9uZToKICAgICAgICBpZiBpc29fd2VlayBpcyBOb25lIG9yIHdlZWtkYXkgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSVNPIHllYXIgZGlyZWN0aXZlICclRycgbXVzdCBiZSB1c2VkIHdpdGggIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgSVNPIHdlZWsgZGlyZWN0aXZlICclVicgYW5kIGEgd2Vla2RheSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGl2ZSAoJyVBJywgJyVhJywgJyV3Jywgb3IgJyV1JykuIikKICAgICAgICBpZiBqdWxpYW4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkRheSBvZiB0aGUgeWVhciBkaXJlY3RpdmUgJyVqJyBpcyBub3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wYXRpYmxlIHdpdGggSVNPIHllYXIgZGlyZWN0aXZlICclRycuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICclWScgaW5zdGVhZC4iKQogICAgZWxpZiB3ZWVrX29mX3llYXIgaXMgTm9uZSBhbmQgaXNvX3dlZWsgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgd2Vla2RheSBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBtdXN0IGJlIHVzZWQgd2l0aCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBJU08geWVhciBkaXJlY3RpdmUgJyVHJyBhbmQgYSB3ZWVrZGF5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aXZlICgnJUEnLCAnJWEnLCAnJXcnLCBvciAnJXUnKS4iKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIGlzIGluY29tcGF0aWJsZSB3aXRoICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHllYXIgZGlyZWN0aXZlICclWScuIFVzZSB0aGUgSVNPIHllYXIgJyVHJyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RlYWQuIikKCiAgICBsZWFwX3llYXJfZml4ID0gRmFsc2UKICAgIGlmIHllYXIgaXMgTm9uZSBhbmQgbW9udGggPT0gMiBhbmQgZGF5ID09IDI5OgogICAgICAgIHllYXIgPSAxOTA0ICAjIDE5MDQgaXMgZmlyc3QgbGVhcCB5ZWFyIG9mIDIwdGggY2VudHVyeQogICAgICAgIGxlYXBfeWVhcl9maXggPSBUcnVlCiAgICBlbGlmIHllYXIgaXMgTm9uZToKICAgICAgICB5ZWFyID0gMTkwMAoKCiAgICAjIElmIHdlIGtub3cgdGhlIHdlZWsgb2YgdGhlIHllYXIgYW5kIHdoYXQgZGF5IG9mIHRoYXQgd2Vlaywgd2UgY2FuIGZpZ3VyZQogICAgIyBvdXQgdGhlIEp1bGlhbiBkYXkgb2YgdGhlIHllYXIuCiAgICBpZiBqdWxpYW4gaXMgTm9uZSBhbmQgd2Vla2RheSBpcyBub3QgTm9uZToKICAgICAgICBpZiB3ZWVrX29mX3llYXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHdlZWtfc3RhcnRzX01vbiA9IFRydWUgaWYgd2Vla19vZl95ZWFyX3N0YXJ0ID09IDAgZWxzZSBGYWxzZQogICAgICAgICAgICBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9VX29yX1coeWVhciwgd2Vla19vZl95ZWFyLCB3ZWVrZGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24pCiAgICAgICAgZWxpZiBpc29feWVhciBpcyBub3QgTm9uZSBhbmQgaXNvX3dlZWsgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHllYXIsIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1YoaXNvX3llYXIsIGlzb193ZWVrLCB3ZWVrZGF5ICsgMSkKICAgICAgICBpZiBqdWxpYW4gaXMgbm90IE5vbmUgYW5kIGp1bGlhbiA8PSAwOgogICAgICAgICAgICB5ZWFyIC09IDEKICAgICAgICAgICAgeWRheSA9IDM2NiBpZiBjYWxlbmRhci5pc2xlYXAoeWVhcikgZWxzZSAzNjUKICAgICAgICAgICAganVsaWFuICs9IHlkYXkKCiAgICBpZiBqdWxpYW4gaXMgTm9uZToKICAgICAgICAjIENhbm5vdCBwcmUtY2FsY3VsYXRlIGRhdGV0aW1lX2RhdGUoKSBzaW5jZSBjYW4gY2hhbmdlIGluIEp1bGlhbgogICAgICAgICMgY2FsY3VsYXRpb24gYW5kIHRodXMgY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBkYXkgb2YKICAgICAgICAjIHRoZSB3ZWVrIGNhbGN1bGF0aW9uLgogICAgICAgICMgTmVlZCB0byBhZGQgMSB0byByZXN1bHQgc2luY2UgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGlzIDEsIG5vdCAwLgogICAgICAgIGp1bGlhbiA9IGRhdGV0aW1lX2RhdGUoeWVhciwgbW9udGgsIGRheSkudG9vcmRpbmFsKCkgLSBcCiAgICAgICAgICAgICAgICAgIGRhdGV0aW1lX2RhdGUoeWVhciwgMSwgMSkudG9vcmRpbmFsKCkgKyAxCiAgICBlbHNlOiAgIyBBc3N1bWUgdGhhdCBpZiB0aGV5IGJvdGhlcmVkIHRvIGluY2x1ZGUgSnVsaWFuIGRheSAob3IgaWYgaXQgd2FzCiAgICAgICAgICAgIyBjYWxjdWxhdGVkIGFib3ZlIHdpdGggeWVhci93ZWVrL3dlZWtkYXkpIGl0IHdpbGwgYmUgYWNjdXJhdGUuCiAgICAgICAgZGF0ZXRpbWVfcmVzdWx0ID0gZGF0ZXRpbWVfZGF0ZS5mcm9tb3JkaW5hbCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqdWxpYW4gLSAxKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpKQogICAgICAgIHllYXIgPSBkYXRldGltZV9yZXN1bHQueWVhcgogICAgICAgIG1vbnRoID0gZGF0ZXRpbWVfcmVzdWx0Lm1vbnRoCiAgICAgICAgZGF5ID0gZGF0ZXRpbWVfcmVzdWx0LmRheQogICAgaWYgd2Vla2RheSBpcyBOb25lOgogICAgICAgIHdlZWtkYXkgPSBkYXRldGltZV9kYXRlKHllYXIsIG1vbnRoLCBkYXkpLndlZWtkYXkoKQogICAgIyBBZGQgdGltZXpvbmUgaW5mbwogICAgdHpuYW1lID0gZm91bmRfZGljdC5nZXQoIloiKQoKICAgIGlmIGxlYXBfeWVhcl9maXg6CiAgICAgICAgIyB0aGUgY2FsbGVyIGRpZG4ndCBzdXBwbHkgYSB5ZWFyIGJ1dCBhc2tlZCBmb3IgRmViIDI5dGguIFdlIGNvdWxkbid0CiAgICAgICAgIyB1c2UgdGhlIGRlZmF1bHQgb2YgMTkwMCBmb3IgY29tcHV0YXRpb25zLiBXZSBzZXQgaXQgYmFjayB0byBlbnN1cmUKICAgICAgICAjIHRoYXQgRmVicnVhcnkgMjl0aCBpcyBzbWFsbGVyIHRoYW4gTWFyY2ggMXN0LgogICAgICAgIHllYXIgPSAxOTAwCgogICAgcmV0dXJuICh5ZWFyLCBtb250aCwgZGF5LAogICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwKICAgICAgICAgICAgd2Vla2RheSwganVsaWFuLCB0eiwgdHpuYW1lLCBnbXRvZmYpLCBmcmFjdGlvbiwgZ210b2ZmX2ZyYWN0aW9uCgpkZWYgX3N0cnB0aW1lX3RpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdD0iJWEgJWIgJWQgJUg6JU06JVMgJVkiKToKICAgICIiIlJldHVybiBhIHRpbWUgc3RydWN0IGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZQogICAgZm9ybWF0IHN0cmluZy4iIiIKICAgIHR0ID0gX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQpWzBdCiAgICByZXR1cm4gdGltZS5zdHJ1Y3RfdGltZSh0dFs6dGltZS5fU1RSVUNUX1RNX0lURU1TXSkKCmRlZiBfc3RycHRpbWVfZGF0ZXRpbWUoY2xzLCBkYXRhX3N0cmluZywgZm9ybWF0PSIlYSAlYiAlZCAlSDolTTolUyAlWSIpOgogICAgIiIiUmV0dXJuIGEgY2xhc3MgY2xzIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZQogICAgZm9ybWF0IHN0cmluZy4iIiIKICAgIHR0LCBmcmFjdGlvbiwgZ210b2ZmX2ZyYWN0aW9uID0gX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQpCiAgICB0em5hbWUsIGdtdG9mZiA9IHR0Wy0yOl0KICAgIGFyZ3MgPSB0dFs6Nl0gKyAoZnJhY3Rpb24sKQogICAgaWYgZ210b2ZmIGlzIG5vdCBOb25lOgogICAgICAgIHR6ZGVsdGEgPSBkYXRldGltZV90aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYsIG1pY3Jvc2Vjb25kcz1nbXRvZmZfZnJhY3Rpb24pCiAgICAgICAgaWYgdHpuYW1lOgogICAgICAgICAgICB0eiA9IGRhdGV0aW1lX3RpbWV6b25lKHR6ZGVsdGEsIHR6bmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0eiA9IGRhdGV0aW1lX3RpbWV6b25lKHR6ZGVsdGEpCiAgICAgICAgYXJncyArPSAodHosKQoKICAgIHJldHVybiBjbHMoKmFyZ3MpClBLAwQUAAAAAAACIKNW1O/UNDQcAAA0HAAAEwAAAF90aHJlYWRpbmdfbG9jYWwucHkiIiJUaHJlYWQtbG9jYWwgb2JqZWN0cy4KCihOb3RlIHRoYXQgdGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBQeXRob24gdmVyc2lvbiBvZiB0aGUgdGhyZWFkaW5nLmxvY2FsCiBjbGFzcy4gIERlcGVuZGluZyBvbiB0aGUgdmVyc2lvbiBvZiBQeXRob24geW91J3JlIHVzaW5nLCB0aGVyZSBtYXkgYmUgYQogZmFzdGVyIG9uZSBhdmFpbGFibGUuICBZb3Ugc2hvdWxkIGFsd2F5cyBpbXBvcnQgdGhlIGBsb2NhbGAgY2xhc3MgZnJvbQogYHRocmVhZGluZ2AuKQoKVGhyZWFkLWxvY2FsIG9iamVjdHMgc3VwcG9ydCB0aGUgbWFuYWdlbWVudCBvZiB0aHJlYWQtbG9jYWwgZGF0YS4KSWYgeW91IGhhdmUgZGF0YSB0aGF0IHlvdSB3YW50IHRvIGJlIGxvY2FsIHRvIGEgdGhyZWFkLCBzaW1wbHkgY3JlYXRlCmEgdGhyZWFkLWxvY2FsIG9iamVjdCBhbmQgdXNlIGl0cyBhdHRyaWJ1dGVzOgoKICA+Pj4gbXlkYXRhID0gbG9jYWwoKQogID4+PiBteWRhdGEubnVtYmVyID0gNDIKICA+Pj4gbXlkYXRhLm51bWJlcgogIDQyCgpZb3UgY2FuIGFsc28gYWNjZXNzIHRoZSBsb2NhbC1vYmplY3QncyBkaWN0aW9uYXJ5OgoKICA+Pj4gbXlkYXRhLl9fZGljdF9fCiAgeydudW1iZXInOiA0Mn0KICA+Pj4gbXlkYXRhLl9fZGljdF9fLnNldGRlZmF1bHQoJ3dpZGdldHMnLCBbXSkKICBbXQogID4+PiBteWRhdGEud2lkZ2V0cwogIFtdCgpXaGF0J3MgaW1wb3J0YW50IGFib3V0IHRocmVhZC1sb2NhbCBvYmplY3RzIGlzIHRoYXQgdGhlaXIgZGF0YSBhcmUKbG9jYWwgdG8gYSB0aHJlYWQuIElmIHdlIGFjY2VzcyB0aGUgZGF0YSBpbiBhIGRpZmZlcmVudCB0aHJlYWQ6CgogID4+PiBsb2cgPSBbXQogID4+PiBkZWYgZigpOgogIC4uLiAgICAgaXRlbXMgPSBzb3J0ZWQobXlkYXRhLl9fZGljdF9fLml0ZW1zKCkpCiAgLi4uICAgICBsb2cuYXBwZW5kKGl0ZW1zKQogIC4uLiAgICAgbXlkYXRhLm51bWJlciA9IDExCiAgLi4uICAgICBsb2cuYXBwZW5kKG15ZGF0YS5udW1iZXIpCgogID4+PiBpbXBvcnQgdGhyZWFkaW5nCiAgPj4+IHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWYpCiAgPj4+IHRocmVhZC5zdGFydCgpCiAgPj4+IHRocmVhZC5qb2luKCkKICA+Pj4gbG9nCiAgW1tdLCAxMV0KCndlIGdldCBkaWZmZXJlbnQgZGF0YS4gIEZ1cnRoZXJtb3JlLCBjaGFuZ2VzIG1hZGUgaW4gdGhlIG90aGVyIHRocmVhZApkb24ndCBhZmZlY3QgZGF0YSBzZWVuIGluIHRoaXMgdGhyZWFkOgoKICA+Pj4gbXlkYXRhLm51bWJlcgogIDQyCgpPZiBjb3Vyc2UsIHZhbHVlcyB5b3UgZ2V0IGZyb20gYSBsb2NhbCBvYmplY3QsIGluY2x1ZGluZyBhIF9fZGljdF9fCmF0dHJpYnV0ZSwgYXJlIGZvciB3aGF0ZXZlciB0aHJlYWQgd2FzIGN1cnJlbnQgYXQgdGhlIHRpbWUgdGhlCmF0dHJpYnV0ZSB3YXMgcmVhZC4gIEZvciB0aGF0IHJlYXNvbiwgeW91IGdlbmVyYWxseSBkb24ndCB3YW50IHRvIHNhdmUKdGhlc2UgdmFsdWVzIGFjcm9zcyB0aHJlYWRzLCBhcyB0aGV5IGFwcGx5IG9ubHkgdG8gdGhlIHRocmVhZCB0aGV5CmNhbWUgZnJvbS4KCllvdSBjYW4gY3JlYXRlIGN1c3RvbSBsb2NhbCBvYmplY3RzIGJ5IHN1YmNsYXNzaW5nIHRoZSBsb2NhbCBjbGFzczoKCiAgPj4+IGNsYXNzIE15TG9jYWwobG9jYWwpOgogIC4uLiAgICAgbnVtYmVyID0gMgogIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIC8sICoqa3cpOgogIC4uLiAgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGt3KQogIC4uLiAgICAgZGVmIHNxdWFyZWQoc2VsZik6CiAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYubnVtYmVyICoqIDIKClRoaXMgY2FuIGJlIHVzZWZ1bCB0byBzdXBwb3J0IGRlZmF1bHQgdmFsdWVzLCBtZXRob2RzIGFuZAppbml0aWFsaXphdGlvbi4gIE5vdGUgdGhhdCBpZiB5b3UgZGVmaW5lIGFuIF9faW5pdF9fIG1ldGhvZCwgaXQgd2lsbCBiZQpjYWxsZWQgZWFjaCB0aW1lIHRoZSBsb2NhbCBvYmplY3QgaXMgdXNlZCBpbiBhIHNlcGFyYXRlIHRocmVhZC4gIFRoaXMKaXMgbmVjZXNzYXJ5IHRvIGluaXRpYWxpemUgZWFjaCB0aHJlYWQncyBkaWN0aW9uYXJ5LgoKTm93IGlmIHdlIGNyZWF0ZSBhIGxvY2FsIG9iamVjdDoKCiAgPj4+IG15ZGF0YSA9IE15TG9jYWwoY29sb3I9J3JlZCcpCgpOb3cgd2UgaGF2ZSBhIGRlZmF1bHQgbnVtYmVyOgoKICA+Pj4gbXlkYXRhLm51bWJlcgogIDIKCmFuIGluaXRpYWwgY29sb3I6CgogID4+PiBteWRhdGEuY29sb3IKICAncmVkJwogID4+PiBkZWwgbXlkYXRhLmNvbG9yCgpBbmQgYSBtZXRob2QgdGhhdCBvcGVyYXRlcyBvbiB0aGUgZGF0YToKCiAgPj4+IG15ZGF0YS5zcXVhcmVkKCkKICA0CgpBcyBiZWZvcmUsIHdlIGNhbiBhY2Nlc3MgdGhlIGRhdGEgaW4gYSBzZXBhcmF0ZSB0aHJlYWQ6CgogID4+PiBsb2cgPSBbXQogID4+PiB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1mKQogID4+PiB0aHJlYWQuc3RhcnQoKQogID4+PiB0aHJlYWQuam9pbigpCiAgPj4+IGxvZwogIFtbKCdjb2xvcicsICdyZWQnKV0sIDExXQoKd2l0aG91dCBhZmZlY3RpbmcgdGhpcyB0aHJlYWQncyBkYXRhOgoKICA+Pj4gbXlkYXRhLm51bWJlcgogIDIKICA+Pj4gbXlkYXRhLmNvbG9yCiAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIC4uLgogIEF0dHJpYnV0ZUVycm9yOiAnTXlMb2NhbCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2NvbG9yJwoKTm90ZSB0aGF0IHN1YmNsYXNzZXMgY2FuIGRlZmluZSBzbG90cywgYnV0IHRoZXkgYXJlIG5vdCB0aHJlYWQKbG9jYWwuIFRoZXkgYXJlIHNoYXJlZCBhY3Jvc3MgdGhyZWFkczoKCiAgPj4+IGNsYXNzIE15TG9jYWwobG9jYWwpOgogIC4uLiAgICAgX19zbG90c19fID0gJ251bWJlcicKCiAgPj4+IG15ZGF0YSA9IE15TG9jYWwoKQogID4+PiBteWRhdGEubnVtYmVyID0gNDIKICA+Pj4gbXlkYXRhLmNvbG9yID0gJ3JlZCcKClNvLCB0aGUgc2VwYXJhdGUgdGhyZWFkOgoKICA+Pj4gdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZikKICA+Pj4gdGhyZWFkLnN0YXJ0KCkKICA+Pj4gdGhyZWFkLmpvaW4oKQoKYWZmZWN0cyB3aGF0IHdlIHNlZToKCiAgPj4+IG15ZGF0YS5udW1iZXIKICAxMQoKPj4+IGRlbCBteWRhdGEKIiIiCgpmcm9tIHdlYWtyZWYgaW1wb3J0IHJlZgpmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCgpfX2FsbF9fID0gWyJsb2NhbCJdCgojIFdlIG5lZWQgdG8gdXNlIG9iamVjdHMgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZSwgYnV0IHRoZSB0aHJlYWRpbmcKIyBtb2R1bGUgbWF5IGFsc28gd2FudCB0byB1c2Ugb3VyIGBsb2NhbGAgY2xhc3MsIGlmIHN1cHBvcnQgZm9yIGxvY2FscwojIGlzbid0IGNvbXBpbGVkIGluIHRvIHRoZSBgdGhyZWFkYCBtb2R1bGUuICBUaGlzIGNyZWF0ZXMgcG90ZW50aWFsIHByb2JsZW1zCiMgd2l0aCBjaXJjdWxhciBpbXBvcnRzLiAgRm9yIHRoYXQgcmVhc29uLCB3ZSBkb24ndCBpbXBvcnQgYHRocmVhZGluZ2AKIyB1bnRpbCB0aGUgYm90dG9tIG9mIHRoaXMgZmlsZSAoYSBoYWNrIHN1ZmZpY2llbnQgdG8gd29ybSBhcm91bmQgdGhlCiMgcG90ZW50aWFsIHByb2JsZW1zKS4gIE5vdGUgdGhhdCBhbGwgcGxhdGZvcm1zIG9uIENQeXRob24gZG8gaGF2ZSBzdXBwb3J0CiMgZm9yIGxvY2FscyBpbiB0aGUgYHRocmVhZGAgbW9kdWxlLCBhbmQgdGhlcmUgaXMgbm8gY2lyY3VsYXIgaW1wb3J0IHByb2JsZW0KIyB0aGVuLCBzbyBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IGZpZGRsaW5nIHRoZSBvcmRlciBvZiBpbXBvcnRzIGhlcmUgd29uJ3QKIyBtYW5pZmVzdC4KCmNsYXNzIF9sb2NhbGltcGw6CiAgICAiIiJBIGNsYXNzIG1hbmFnaW5nIHRocmVhZC1sb2NhbCBkaWN0cyIiIgogICAgX19zbG90c19fID0gJ2tleScsICdkaWN0cycsICdsb2NhbGFyZ3MnLCAnbG9jYWxsb2NrJywgJ19fd2Vha3JlZl9fJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAjIFRoZSBrZXkgdXNlZCBpbiB0aGUgVGhyZWFkIG9iamVjdHMnIGF0dHJpYnV0ZSBkaWN0cy4KICAgICAgICAjIFdlIGtlZXAgaXQgYSBzdHJpbmcgZm9yIHNwZWVkIGJ1dCBtYWtlIGl0IHVubGlrZWx5IHRvIGNsYXNoIHdpdGgKICAgICAgICAjIGEgInJlYWwiIGF0dHJpYnV0ZS4KICAgICAgICBzZWxmLmtleSA9ICdfdGhyZWFkaW5nX2xvY2FsLl9sb2NhbGltcGwuJyArIHN0cihpZChzZWxmKSkKICAgICAgICAjIHsgaWQoVGhyZWFkKSAtPiAocmVmKFRocmVhZCksIHRocmVhZC1sb2NhbCBkaWN0KSB9CiAgICAgICAgc2VsZi5kaWN0cyA9IHt9CgogICAgZGVmIGdldF9kaWN0KHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgZGljdCBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLiBSYWlzZXMgS2V5RXJyb3IgaWYgbm9uZQogICAgICAgIGRlZmluZWQuIiIiCiAgICAgICAgdGhyZWFkID0gY3VycmVudF90aHJlYWQoKQogICAgICAgIHJldHVybiBzZWxmLmRpY3RzW2lkKHRocmVhZCldWzFdCgogICAgZGVmIGNyZWF0ZV9kaWN0KHNlbGYpOgogICAgICAgICIiIkNyZWF0ZSBhIG5ldyBkaWN0IGZvciB0aGUgY3VycmVudCB0aHJlYWQsIGFuZCByZXR1cm4gaXQuIiIiCiAgICAgICAgbG9jYWxkaWN0ID0ge30KICAgICAgICBrZXkgPSBzZWxmLmtleQogICAgICAgIHRocmVhZCA9IGN1cnJlbnRfdGhyZWFkKCkKICAgICAgICBpZHQgPSBpZCh0aHJlYWQpCiAgICAgICAgZGVmIGxvY2FsX2RlbGV0ZWQoXywga2V5PWtleSk6CiAgICAgICAgICAgICMgV2hlbiB0aGUgbG9jYWxpbXBsIGlzIGRlbGV0ZWQsIHJlbW92ZSB0aGUgdGhyZWFkIGF0dHJpYnV0ZS4KICAgICAgICAgICAgdGhyZWFkID0gd3J0aHJlYWQoKQogICAgICAgICAgICBpZiB0aHJlYWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBkZWwgdGhyZWFkLl9fZGljdF9fW2tleV0KICAgICAgICBkZWYgdGhyZWFkX2RlbGV0ZWQoXywgaWR0PWlkdCk6CiAgICAgICAgICAgICMgV2hlbiB0aGUgdGhyZWFkIGlzIGRlbGV0ZWQsIHJlbW92ZSB0aGUgbG9jYWwgZGljdC4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBpcyBzdWJvcHRpbWFsIGlmIHRoZSB0aHJlYWQgb2JqZWN0IGdldHMKICAgICAgICAgICAgIyBjYXVnaHQgaW4gYSByZWZlcmVuY2UgbG9vcC4gV2Ugd291bGQgbGlrZSB0byBiZSBjYWxsZWQKICAgICAgICAgICAgIyBhcyBzb29uIGFzIHRoZSBPUy1sZXZlbCB0aHJlYWQgZW5kcyBpbnN0ZWFkLgogICAgICAgICAgICBsb2NhbCA9IHdybG9jYWwoKQogICAgICAgICAgICBpZiBsb2NhbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGRjdCA9IGxvY2FsLmRpY3RzLnBvcChpZHQpCiAgICAgICAgd3Jsb2NhbCA9IHJlZihzZWxmLCBsb2NhbF9kZWxldGVkKQogICAgICAgIHdydGhyZWFkID0gcmVmKHRocmVhZCwgdGhyZWFkX2RlbGV0ZWQpCiAgICAgICAgdGhyZWFkLl9fZGljdF9fW2tleV0gPSB3cmxvY2FsCiAgICAgICAgc2VsZi5kaWN0c1tpZHRdID0gd3J0aHJlYWQsIGxvY2FsZGljdAogICAgICAgIHJldHVybiBsb2NhbGRpY3QKCgpAY29udGV4dG1hbmFnZXIKZGVmIF9wYXRjaChzZWxmKToKICAgIGltcGwgPSBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCAnX2xvY2FsX19pbXBsJykKICAgIHRyeToKICAgICAgICBkY3QgPSBpbXBsLmdldF9kaWN0KCkKICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICBkY3QgPSBpbXBsLmNyZWF0ZV9kaWN0KCkKICAgICAgICBhcmdzLCBrdyA9IGltcGwubG9jYWxhcmdzCiAgICAgICAgc2VsZi5fX2luaXRfXygqYXJncywgKiprdykKICAgIHdpdGggaW1wbC5sb2NhbGxvY2s6CiAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsICdfX2RpY3RfXycsIGRjdCkKICAgICAgICB5aWVsZAoKCmNsYXNzIGxvY2FsOgogICAgX19zbG90c19fID0gJ19sb2NhbF9faW1wbCcsICdfX2RpY3RfXycKCiAgICBkZWYgX19uZXdfXyhjbHMsIC8sICphcmdzLCAqKmt3KToKICAgICAgICBpZiAoYXJncyBvciBrdykgYW5kIChjbHMuX19pbml0X18gaXMgb2JqZWN0Ll9faW5pdF9fKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJbml0aWFsaXphdGlvbiBhcmd1bWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQiKQogICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgaW1wbCA9IF9sb2NhbGltcGwoKQogICAgICAgIGltcGwubG9jYWxhcmdzID0gKGFyZ3MsIGt3KQogICAgICAgIGltcGwubG9jYWxsb2NrID0gUkxvY2soKQogICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCAnX2xvY2FsX19pbXBsJywgaW1wbCkKICAgICAgICAjIFdlIG5lZWQgdG8gY3JlYXRlIHRoZSB0aHJlYWQgZGljdCBpbiBhbnRpY2lwYXRpb24gb2YKICAgICAgICAjIF9faW5pdF9fIGJlaW5nIGNhbGxlZCwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNhbGwgaXQKICAgICAgICAjIGFnYWluIG91cnNlbHZlcy4KICAgICAgICBpbXBsLmNyZWF0ZV9kaWN0KCkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgogICAgICAgIHdpdGggX3BhdGNoKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkKCiAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgIGlmIG5hbWUgPT0gJ19fZGljdF9fJzoKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCiAgICAgICAgICAgICAgICAiJXIgb2JqZWN0IGF0dHJpYnV0ZSAnX19kaWN0X18nIGlzIHJlYWQtb25seSIKICAgICAgICAgICAgICAgICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgd2l0aCBfcGF0Y2goc2VsZik6CiAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCgogICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgIGlmIG5hbWUgPT0gJ19fZGljdF9fJzoKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCiAgICAgICAgICAgICAgICAiJXIgb2JqZWN0IGF0dHJpYnV0ZSAnX19kaWN0X18nIGlzIHJlYWQtb25seSIKICAgICAgICAgICAgICAgICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgd2l0aCBfcGF0Y2goc2VsZik6CiAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSkKCgpmcm9tIHRocmVhZGluZyBpbXBvcnQgY3VycmVudF90aHJlYWQsIFJMb2NrClBLAwQUAAAAAAACIKNWez2iKQUXAAAFFwAADgAAAF93ZWFrcmVmc2V0LnB5IyBBY2Nlc3MgV2Vha1NldCB0aHJvdWdoIHRoZSB3ZWFrcmVmIG1vZHVsZS4KIyBUaGlzIGNvZGUgaXMgc2VwYXJhdGVkLW91dCBiZWNhdXNlIGl0IGlzIG5lZWRlZAojIGJ5IGFiYy5weSB0byBsb2FkIGV2ZXJ5dGhpbmcgZWxzZSBhdCBzdGFydHVwLgoKZnJvbSBfd2Vha3JlZiBpbXBvcnQgcmVmCmZyb20gdHlwZXMgaW1wb3J0IEdlbmVyaWNBbGlhcwoKX19hbGxfXyA9IFsnV2Vha1NldCddCgoKY2xhc3MgX0l0ZXJhdGlvbkd1YXJkOgogICAgIyBUaGlzIGNvbnRleHQgbWFuYWdlciByZWdpc3RlcnMgaXRzZWxmIGluIHRoZSBjdXJyZW50IGl0ZXJhdG9ycyBvZiB0aGUKICAgICMgd2VhayBjb250YWluZXIsIHN1Y2ggYXMgdG8gZGVsYXkgYWxsIHJlbW92YWxzIHVudGlsIHRoZSBjb250ZXh0IG1hbmFnZXIKICAgICMgZXhpdHMuCiAgICAjIFRoaXMgdGVjaG5pcXVlIHNob3VsZCBiZSByZWxhdGl2ZWx5IHRocmVhZC1zYWZlIChzaW5jZSBzZXRzIGFyZSkuCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHdlYWtjb250YWluZXIpOgogICAgICAgICMgRG9uJ3QgY3JlYXRlIGN5Y2xlcwogICAgICAgIHNlbGYud2Vha2NvbnRhaW5lciA9IHJlZih3ZWFrY29udGFpbmVyKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgdyA9IHNlbGYud2Vha2NvbnRhaW5lcigpCiAgICAgICAgaWYgdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgdy5faXRlcmF0aW5nLmFkZChzZWxmKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGUsIHQsIGIpOgogICAgICAgIHcgPSBzZWxmLndlYWtjb250YWluZXIoKQogICAgICAgIGlmIHcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHMgPSB3Ll9pdGVyYXRpbmcKICAgICAgICAgICAgcy5yZW1vdmUoc2VsZikKICAgICAgICAgICAgaWYgbm90IHM6CiAgICAgICAgICAgICAgICB3Ll9jb21taXRfcmVtb3ZhbHMoKQoKCmNsYXNzIFdlYWtTZXQ6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YT1Ob25lKToKICAgICAgICBzZWxmLmRhdGEgPSBzZXQoKQogICAgICAgIGRlZiBfcmVtb3ZlKGl0ZW0sIHNlbGZyZWY9cmVmKHNlbGYpKToKICAgICAgICAgICAgc2VsZiA9IHNlbGZyZWYoKQogICAgICAgICAgICBpZiBzZWxmIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgc2VsZi5faXRlcmF0aW5nOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YS5kaXNjYXJkKGl0ZW0pCiAgICAgICAgc2VsZi5fcmVtb3ZlID0gX3JlbW92ZQogICAgICAgICMgQSBsaXN0IG9mIGtleXMgdG8gYmUgcmVtb3ZlZAogICAgICAgIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMgPSBbXQogICAgICAgIHNlbGYuX2l0ZXJhdGluZyA9IHNldCgpCiAgICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi51cGRhdGUoZGF0YSkKCiAgICBkZWYgX2NvbW1pdF9yZW1vdmFscyhzZWxmKToKICAgICAgICBwb3AgPSBzZWxmLl9wZW5kaW5nX3JlbW92YWxzLnBvcAogICAgICAgIGRpc2NhcmQgPSBzZWxmLmRhdGEuZGlzY2FyZAogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGl0ZW0gPSBwb3AoKQogICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBkaXNjYXJkKGl0ZW0pCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHdpdGggX0l0ZXJhdGlvbkd1YXJkKHNlbGYpOgogICAgICAgICAgICBmb3IgaXRlbXJlZiBpbiBzZWxmLmRhdGE6CiAgICAgICAgICAgICAgICBpdGVtID0gaXRlbXJlZigpCiAgICAgICAgICAgICAgICBpZiBpdGVtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICMgQ2F2ZWF0OiB0aGUgaXRlcmF0b3Igd2lsbCBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0bwogICAgICAgICAgICAgICAgICAgICMgYGl0ZW1gIHVudGlsIGl0IGlzIHJlc3VtZWQgb3IgY2xvc2VkLgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW0KCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YSkgLSBsZW4oc2VsZi5fcGVuZGluZ19yZW1vdmFscykKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgogICAgICAgIHRyeToKICAgICAgICAgICAgd3IgPSByZWYoaXRlbSkKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gd3IgaW4gc2VsZi5kYXRhCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAobGlzdChzZWxmKSwpLCBzZWxmLl9fZ2V0c3RhdGVfXygpCgogICAgZGVmIGFkZChzZWxmLCBpdGVtKToKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgIHNlbGYuZGF0YS5hZGQocmVmKGl0ZW0sIHNlbGYuX3JlbW92ZSkpCgogICAgZGVmIGNsZWFyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgc2VsZi5kYXRhLmNsZWFyKCkKCiAgICBkZWYgY29weShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZikKCiAgICBkZWYgcG9wKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaXRlbXJlZiA9IHNlbGYuZGF0YS5wb3AoKQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigncG9wIGZyb20gZW1wdHkgV2Vha1NldCcpIGZyb20gTm9uZQogICAgICAgICAgICBpdGVtID0gaXRlbXJlZigpCiAgICAgICAgICAgIGlmIGl0ZW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbQoKICAgIGRlZiByZW1vdmUoc2VsZiwgaXRlbSk6CiAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19yZW1vdmFsczoKICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICBzZWxmLmRhdGEucmVtb3ZlKHJlZihpdGVtKSkKCiAgICBkZWYgZGlzY2FyZChzZWxmLCBpdGVtKToKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgIHNlbGYuZGF0YS5kaXNjYXJkKHJlZihpdGVtKSkKCiAgICBkZWYgdXBkYXRlKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgIGZvciBlbGVtZW50IGluIG90aGVyOgogICAgICAgICAgICBzZWxmLmFkZChlbGVtZW50KQoKICAgIGRlZiBfX2lvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBzZWxmLnVwZGF0ZShvdGhlcikKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBkaWZmZXJlbmNlKHNlbGYsIG90aGVyKToKICAgICAgICBuZXdzZXQgPSBzZWxmLmNvcHkoKQogICAgICAgIG5ld3NldC5kaWZmZXJlbmNlX3VwZGF0ZShvdGhlcikKICAgICAgICByZXR1cm4gbmV3c2V0CiAgICBfX3N1Yl9fID0gZGlmZmVyZW5jZQoKICAgIGRlZiBkaWZmZXJlbmNlX3VwZGF0ZShzZWxmLCBvdGhlcik6CiAgICAgICAgc2VsZi5fX2lzdWJfXyhvdGhlcikKICAgIGRlZiBfX2lzdWJfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19yZW1vdmFsczoKICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICBpZiBzZWxmIGlzIG90aGVyOgogICAgICAgICAgICBzZWxmLmRhdGEuY2xlYXIoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuZGF0YS5kaWZmZXJlbmNlX3VwZGF0ZShyZWYoaXRlbSkgZm9yIGl0ZW0gaW4gb3RoZXIpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgaW50ZXJzZWN0aW9uKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaXRlbSBmb3IgaXRlbSBpbiBvdGhlciBpZiBpdGVtIGluIHNlbGYpCiAgICBfX2FuZF9fID0gaW50ZXJzZWN0aW9uCgogICAgZGVmIGludGVyc2VjdGlvbl91cGRhdGUoc2VsZiwgb3RoZXIpOgogICAgICAgIHNlbGYuX19pYW5kX18ob3RoZXIpCiAgICBkZWYgX19pYW5kX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgc2VsZi5kYXRhLmludGVyc2VjdGlvbl91cGRhdGUocmVmKGl0ZW0pIGZvciBpdGVtIGluIG90aGVyKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIGlzc3Vic2V0KHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmlzc3Vic2V0KHJlZihpdGVtKSBmb3IgaXRlbSBpbiBvdGhlcikKICAgIF9fbGVfXyA9IGlzc3Vic2V0CgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA8IHNldChtYXAocmVmLCBvdGhlcikpCgogICAgZGVmIGlzc3VwZXJzZXQoc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEuaXNzdXBlcnNldChyZWYoaXRlbSkgZm9yIGl0ZW0gaW4gb3RoZXIpCiAgICBfX2dlX18gPSBpc3N1cGVyc2V0CgogICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA+IHNldChtYXAocmVmLCBvdGhlcikpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA9PSBzZXQobWFwKHJlZiwgb3RoZXIpKQoKICAgIGRlZiBzeW1tZXRyaWNfZGlmZmVyZW5jZShzZWxmLCBvdGhlcik6CiAgICAgICAgbmV3c2V0ID0gc2VsZi5jb3B5KCkKICAgICAgICBuZXdzZXQuc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlKG90aGVyKQogICAgICAgIHJldHVybiBuZXdzZXQKICAgIF9feG9yX18gPSBzeW1tZXRyaWNfZGlmZmVyZW5jZQoKICAgIGRlZiBzeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUoc2VsZiwgb3RoZXIpOgogICAgICAgIHNlbGYuX19peG9yX18ob3RoZXIpCiAgICBkZWYgX19peG9yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgaWYgc2VsZiBpcyBvdGhlcjoKICAgICAgICAgICAgc2VsZi5kYXRhLmNsZWFyKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmRhdGEuc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlKHJlZihpdGVtLCBzZWxmLl9yZW1vdmUpIGZvciBpdGVtIGluIG90aGVyKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIHVuaW9uKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oZSBmb3IgcyBpbiAoc2VsZiwgb3RoZXIpIGZvciBlIGluIHMpCiAgICBfX29yX18gPSB1bmlvbgoKICAgIGRlZiBpc2Rpc2pvaW50KHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuaW50ZXJzZWN0aW9uKG90aGVyKSkgPT0gMAoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gcmVwcihzZWxmLmRhdGEpCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZChHZW5lcmljQWxpYXMpClBLAwQUAAAAAAACIKNWCIKpq30ZAAB9GQAABgAAAGFiYy5weSMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgoKIiIiQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhY2NvcmRpbmcgdG8gUEVQIDMxMTkuIiIiCgoKZGVmIGFic3RyYWN0bWV0aG9kKGZ1bmNvYmopOgogICAgIiIiQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBtZXRob2RzLgoKICAgIFJlcXVpcmVzIHRoYXQgdGhlIG1ldGFjbGFzcyBpcyBBQkNNZXRhIG9yIGRlcml2ZWQgZnJvbSBpdC4gIEEKICAgIGNsYXNzIHRoYXQgaGFzIGEgbWV0YWNsYXNzIGRlcml2ZWQgZnJvbSBBQkNNZXRhIGNhbm5vdCBiZQogICAgaW5zdGFudGlhdGVkIHVubGVzcyBhbGwgb2YgaXRzIGFic3RyYWN0IG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4uCiAgICBUaGUgYWJzdHJhY3QgbWV0aG9kcyBjYW4gYmUgY2FsbGVkIHVzaW5nIGFueSBvZiB0aGUgbm9ybWFsCiAgICAnc3VwZXInIGNhbGwgbWVjaGFuaXNtcy4gIGFic3RyYWN0bWV0aG9kKCkgbWF5IGJlIHVzZWQgdG8gZGVjbGFyZQogICAgYWJzdHJhY3QgbWV0aG9kcyBmb3IgcHJvcGVydGllcyBhbmQgZGVzY3JpcHRvcnMuCgogICAgVXNhZ2U6CgogICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUFCQ01ldGEpOgogICAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKICAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X21ldGhvZChzZWxmLCAuLi4pOgogICAgICAgICAgICAgICAgLi4uCiAgICAiIiIKICAgIGZ1bmNvYmouX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCiAgICByZXR1cm4gZnVuY29iagoKCmNsYXNzIGFic3RyYWN0Y2xhc3NtZXRob2QoY2xhc3NtZXRob2QpOgogICAgIiIiQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBjbGFzc21ldGhvZHMuCgogICAgRGVwcmVjYXRlZCwgdXNlICdjbGFzc21ldGhvZCcgd2l0aCAnYWJzdHJhY3RtZXRob2QnIGluc3RlYWQ6CgogICAgICAgIGNsYXNzIEMoQUJDKToKICAgICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAogICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfY2xhc3NtZXRob2QoY2xzLCAuLi4pOgogICAgICAgICAgICAgICAgLi4uCgogICAgIiIiCgogICAgX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhbGxhYmxlKToKICAgICAgICBjYWxsYWJsZS5fX2lzYWJzdHJhY3RtZXRob2RfXyA9IFRydWUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGNhbGxhYmxlKQoKCmNsYXNzIGFic3RyYWN0c3RhdGljbWV0aG9kKHN0YXRpY21ldGhvZCk6CiAgICAiIiJBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHN0YXRpY21ldGhvZHMuCgogICAgRGVwcmVjYXRlZCwgdXNlICdzdGF0aWNtZXRob2QnIHdpdGggJ2Fic3RyYWN0bWV0aG9kJyBpbnN0ZWFkOgoKICAgICAgICBjbGFzcyBDKEFCQyk6CiAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9zdGF0aWNtZXRob2QoLi4uKToKICAgICAgICAgICAgICAgIC4uLgoKICAgICIiIgoKICAgIF9faXNhYnN0cmFjdG1ldGhvZF9fID0gVHJ1ZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWxsYWJsZSk6CiAgICAgICAgY2FsbGFibGUuX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhjYWxsYWJsZSkKCgpjbGFzcyBhYnN0cmFjdHByb3BlcnR5KHByb3BlcnR5KToKICAgICIiIkEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgcHJvcGVydGllcy4KCiAgICBEZXByZWNhdGVkLCB1c2UgJ3Byb3BlcnR5JyB3aXRoICdhYnN0cmFjdG1ldGhvZCcgaW5zdGVhZDoKCiAgICAgICAgY2xhc3MgQyhBQkMpOgogICAgICAgICAgICBAcHJvcGVydHkKICAgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9wcm9wZXJ0eShzZWxmKToKICAgICAgICAgICAgICAgIC4uLgoKICAgICIiIgoKICAgIF9faXNhYnN0cmFjdG1ldGhvZF9fID0gVHJ1ZQoKCnRyeToKICAgIGZyb20gX2FiYyBpbXBvcnQgKGdldF9jYWNoZV90b2tlbiwgX2FiY19pbml0LCBfYWJjX3JlZ2lzdGVyLAogICAgICAgICAgICAgICAgICAgICAgX2FiY19pbnN0YW5jZWNoZWNrLCBfYWJjX3N1YmNsYXNzY2hlY2ssIF9nZXRfZHVtcCwKICAgICAgICAgICAgICAgICAgICAgIF9yZXNldF9yZWdpc3RyeSwgX3Jlc2V0X2NhY2hlcykKZXhjZXB0IEltcG9ydEVycm9yOgogICAgZnJvbSBfcHlfYWJjIGltcG9ydCBBQkNNZXRhLCBnZXRfY2FjaGVfdG9rZW4KICAgIEFCQ01ldGEuX19tb2R1bGVfXyA9ICdhYmMnCmVsc2U6CiAgICBjbGFzcyBBQkNNZXRhKHR5cGUpOgogICAgICAgICIiIk1ldGFjbGFzcyBmb3IgZGVmaW5pbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKS4KCiAgICAgICAgVXNlIHRoaXMgbWV0YWNsYXNzIHRvIGNyZWF0ZSBhbiBBQkMuICBBbiBBQkMgY2FuIGJlIHN1YmNsYXNzZWQKICAgICAgICBkaXJlY3RseSwgYW5kIHRoZW4gYWN0cyBhcyBhIG1peC1pbiBjbGFzcy4gIFlvdSBjYW4gYWxzbyByZWdpc3RlcgogICAgICAgIHVucmVsYXRlZCBjb25jcmV0ZSBjbGFzc2VzIChldmVuIGJ1aWx0LWluIGNsYXNzZXMpIGFuZCB1bnJlbGF0ZWQKICAgICAgICBBQkNzIGFzICd2aXJ0dWFsIHN1YmNsYXNzZXMnIC0tIHRoZXNlIGFuZCB0aGVpciBkZXNjZW5kYW50cyB3aWxsCiAgICAgICAgYmUgY29uc2lkZXJlZCBzdWJjbGFzc2VzIG9mIHRoZSByZWdpc3RlcmluZyBBQkMgYnkgdGhlIGJ1aWx0LWluCiAgICAgICAgaXNzdWJjbGFzcygpIGZ1bmN0aW9uLCBidXQgdGhlIHJlZ2lzdGVyaW5nIEFCQyB3b24ndCBzaG93IHVwIGluCiAgICAgICAgdGhlaXIgTVJPIChNZXRob2QgUmVzb2x1dGlvbiBPcmRlcikgbm9yIHdpbGwgbWV0aG9kCiAgICAgICAgaW1wbGVtZW50YXRpb25zIGRlZmluZWQgYnkgdGhlIHJlZ2lzdGVyaW5nIEFCQyBiZSBjYWxsYWJsZSAobm90CiAgICAgICAgZXZlbiB2aWEgc3VwZXIoKSkuCiAgICAgICAgIiIiCiAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgLywgKiprd2FyZ3MpOgogICAgICAgICAgICBjbHMgPSBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2FyZ3MpCiAgICAgICAgICAgIF9hYmNfaW5pdChjbHMpCiAgICAgICAgICAgIHJldHVybiBjbHMKCiAgICAgICAgZGVmIHJlZ2lzdGVyKGNscywgc3ViY2xhc3MpOgogICAgICAgICAgICAiIiJSZWdpc3RlciBhIHZpcnR1YWwgc3ViY2xhc3Mgb2YgYW4gQUJDLgoKICAgICAgICAgICAgUmV0dXJucyB0aGUgc3ViY2xhc3MsIHRvIGFsbG93IHVzYWdlIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgogICAgICAgICAgICAiIiIKICAgICAgICAgICAgcmV0dXJuIF9hYmNfcmVnaXN0ZXIoY2xzLCBzdWJjbGFzcykKCiAgICAgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKGNscywgaW5zdGFuY2UpOgogICAgICAgICAgICAiIiJPdmVycmlkZSBmb3IgaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xzKS4iIiIKICAgICAgICAgICAgcmV0dXJuIF9hYmNfaW5zdGFuY2VjaGVjayhjbHMsIGluc3RhbmNlKQoKICAgICAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oY2xzLCBzdWJjbGFzcyk6CiAgICAgICAgICAgICIiIk92ZXJyaWRlIGZvciBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbHMpLiIiIgogICAgICAgICAgICByZXR1cm4gX2FiY19zdWJjbGFzc2NoZWNrKGNscywgc3ViY2xhc3MpCgogICAgICAgIGRlZiBfZHVtcF9yZWdpc3RyeShjbHMsIGZpbGU9Tm9uZSk6CiAgICAgICAgICAgICIiIkRlYnVnIGhlbHBlciB0byBwcmludCB0aGUgQUJDIHJlZ2lzdHJ5LiIiIgogICAgICAgICAgICBwcmludChmIkNsYXNzOiB7Y2xzLl9fbW9kdWxlX199LntjbHMuX19xdWFsbmFtZV9ffSIsIGZpbGU9ZmlsZSkKICAgICAgICAgICAgcHJpbnQoZiJJbnYuIGNvdW50ZXI6IHtnZXRfY2FjaGVfdG9rZW4oKX0iLCBmaWxlPWZpbGUpCiAgICAgICAgICAgIChfYWJjX3JlZ2lzdHJ5LCBfYWJjX2NhY2hlLCBfYWJjX25lZ2F0aXZlX2NhY2hlLAogICAgICAgICAgICAgX2FiY19uZWdhdGl2ZV9jYWNoZV92ZXJzaW9uKSA9IF9nZXRfZHVtcChjbHMpCiAgICAgICAgICAgIHByaW50KGYiX2FiY19yZWdpc3RyeToge19hYmNfcmVnaXN0cnkhcn0iLCBmaWxlPWZpbGUpCiAgICAgICAgICAgIHByaW50KGYiX2FiY19jYWNoZToge19hYmNfY2FjaGUhcn0iLCBmaWxlPWZpbGUpCiAgICAgICAgICAgIHByaW50KGYiX2FiY19uZWdhdGl2ZV9jYWNoZToge19hYmNfbmVnYXRpdmVfY2FjaGUhcn0iLCBmaWxlPWZpbGUpCiAgICAgICAgICAgIHByaW50KGYiX2FiY19uZWdhdGl2ZV9jYWNoZV92ZXJzaW9uOiB7X2FiY19uZWdhdGl2ZV9jYWNoZV92ZXJzaW9uIXJ9IiwKICAgICAgICAgICAgICAgICAgZmlsZT1maWxlKQoKICAgICAgICBkZWYgX2FiY19yZWdpc3RyeV9jbGVhcihjbHMpOgogICAgICAgICAgICAiIiJDbGVhciB0aGUgcmVnaXN0cnkgKGZvciBkZWJ1Z2dpbmcgb3IgdGVzdGluZykuIiIiCiAgICAgICAgICAgIF9yZXNldF9yZWdpc3RyeShjbHMpCgogICAgICAgIGRlZiBfYWJjX2NhY2hlc19jbGVhcihjbHMpOgogICAgICAgICAgICAiIiJDbGVhciB0aGUgY2FjaGVzIChmb3IgZGVidWdnaW5nIG9yIHRlc3RpbmcpLiIiIgogICAgICAgICAgICBfcmVzZXRfY2FjaGVzKGNscykKCgpkZWYgdXBkYXRlX2Fic3RyYWN0bWV0aG9kcyhjbHMpOgogICAgIiIiUmVjYWxjdWxhdGUgdGhlIHNldCBvZiBhYnN0cmFjdCBtZXRob2RzIG9mIGFuIGFic3RyYWN0IGNsYXNzLgoKICAgIElmIGEgY2xhc3MgaGFzIGhhZCBvbmUgb2YgaXRzIGFic3RyYWN0IG1ldGhvZHMgaW1wbGVtZW50ZWQgYWZ0ZXIgdGhlCiAgICBjbGFzcyB3YXMgY3JlYXRlZCwgdGhlIG1ldGhvZCB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIGltcGxlbWVudGVkIHVudGlsCiAgICB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gQWx0ZXJuYXRpdmVseSwgaWYgYSBuZXcgYWJzdHJhY3QgbWV0aG9kIGhhcyBiZWVuCiAgICBhZGRlZCB0byB0aGUgY2xhc3MsIGl0IHdpbGwgb25seSBiZSBjb25zaWRlcmVkIGFuIGFic3RyYWN0IG1ldGhvZCBvZiB0aGUKICAgIGNsYXNzIGFmdGVyIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLgoKICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IHVzZSBpcyBtYWRlIG9mIHRoZSBjbGFzcywKICAgIHVzdWFsbHkgaW4gY2xhc3MgZGVjb3JhdG9ycyB0aGF0IGFkZCBtZXRob2RzIHRvIHRoZSBzdWJqZWN0IGNsYXNzLgoKICAgIFJldHVybnMgY2xzLCB0byBhbGxvdyB1c2FnZSBhcyBhIGNsYXNzIGRlY29yYXRvci4KCiAgICBJZiBjbHMgaXMgbm90IGFuIGluc3RhbmNlIG9mIEFCQ01ldGEsIGRvZXMgbm90aGluZy4KICAgICIiIgogICAgaWYgbm90IGhhc2F0dHIoY2xzLCAnX19hYnN0cmFjdG1ldGhvZHNfXycpOgogICAgICAgICMgV2UgY2hlY2sgZm9yIF9fYWJzdHJhY3RtZXRob2RzX18gaGVyZSBiZWNhdXNlIGNscyBtaWdodCBieSBhIEMKICAgICAgICAjIGltcGxlbWVudGF0aW9uIG9yIGEgcHl0aG9uIGltcGxlbWVudGF0aW9uIChlc3BlY2lhbGx5IGR1cmluZwogICAgICAgICMgdGVzdGluZyksIGFuZCB3ZSB3YW50IHRvIGhhbmRsZSBib3RoIGNhc2VzLgogICAgICAgIHJldHVybiBjbHMKCiAgICBhYnN0cmFjdHMgPSBzZXQoKQogICAgIyBDaGVjayB0aGUgZXhpc3RpbmcgYWJzdHJhY3QgbWV0aG9kcyBvZiB0aGUgcGFyZW50cywga2VlcCBvbmx5IHRoZSBvbmVzCiAgICAjIHRoYXQgYXJlIG5vdCBpbXBsZW1lbnRlZC4KICAgIGZvciBzY2xzIGluIGNscy5fX2Jhc2VzX186CiAgICAgICAgZm9yIG5hbWUgaW4gZ2V0YXR0cihzY2xzLCAnX19hYnN0cmFjdG1ldGhvZHNfXycsICgpKToKICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKGNscywgbmFtZSwgTm9uZSkKICAgICAgICAgICAgaWYgZ2V0YXR0cih2YWx1ZSwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpOgogICAgICAgICAgICAgICAgYWJzdHJhY3RzLmFkZChuYW1lKQogICAgIyBBbHNvIGFkZCBhbnkgb3RoZXIgbmV3bHkgYWRkZWQgYWJzdHJhY3QgbWV0aG9kcy4KICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBjbHMuX19kaWN0X18uaXRlbXMoKToKICAgICAgICBpZiBnZXRhdHRyKHZhbHVlLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSk6CiAgICAgICAgICAgIGFic3RyYWN0cy5hZGQobmFtZSkKICAgIGNscy5fX2Fic3RyYWN0bWV0aG9kc19fID0gZnJvemVuc2V0KGFic3RyYWN0cykKICAgIHJldHVybiBjbHMKCgpjbGFzcyBBQkMobWV0YWNsYXNzPUFCQ01ldGEpOgogICAgIiIiSGVscGVyIGNsYXNzIHRoYXQgcHJvdmlkZXMgYSBzdGFuZGFyZCB3YXkgdG8gY3JlYXRlIGFuIEFCQyB1c2luZwogICAgaW5oZXJpdGFuY2UuCiAgICAiIiIKICAgIF9fc2xvdHNfXyA9ICgpClBLAwQUAAAAAAACIKNWOO1/56OFAACjhQAABwAAAGFpZmMucHkiIiJTdHVmZiB0byBwYXJzZSBBSUZGLUMgYW5kIEFJRkYgZmlsZXMuCgpVbmxlc3MgZXhwbGljaXRseSBzdGF0ZWQgb3RoZXJ3aXNlLCB0aGUgZGVzY3JpcHRpb24gYmVsb3cgaXMgdHJ1ZQpib3RoIGZvciBBSUZGLUMgZmlsZXMgYW5kIEFJRkYgZmlsZXMuCgpBbiBBSUZGLUMgZmlsZSBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUuCgogICstLS0tLS0tLS0tLS0tLS0tLSsKICB8IEZPUk0gICAgICAgICAgICB8CiAgKy0tLS0tLS0tLS0tLS0tLS0tKwogIHwgPHNpemU+ICAgICAgICAgIHwKICArLS0tLSstLS0tLS0tLS0tLS0rCiAgfCAgICB8IEFJRkMgICAgICAgfAogIHwgICAgKy0tLS0tLS0tLS0tLSsKICB8ICAgIHwgPGNodW5rcz4gICB8CiAgfCAgICB8ICAgIC4gICAgICAgfAogIHwgICAgfCAgICAuICAgICAgIHwKICB8ICAgIHwgICAgLiAgICAgICB8CiAgKy0tLS0rLS0tLS0tLS0tLS0tKwoKQW4gQUlGRiBmaWxlIGhhcyB0aGUgc3RyaW5nICJBSUZGIiBpbnN0ZWFkIG9mICJBSUZDIi4KCkEgY2h1bmsgY29uc2lzdHMgb2YgYW4gaWRlbnRpZmllciAoNCBieXRlcykgZm9sbG93ZWQgYnkgYSBzaXplICg0IGJ5dGVzLApiaWcgZW5kaWFuIG9yZGVyKSwgZm9sbG93ZWQgYnkgdGhlIGRhdGEuICBUaGUgc2l6ZSBmaWVsZCBkb2VzIG5vdCBpbmNsdWRlCnRoZSBzaXplIG9mIHRoZSA4IGJ5dGUgaGVhZGVyLgoKVGhlIGZvbGxvd2luZyBjaHVuayB0eXBlcyBhcmUgcmVjb2duaXplZC4KCiAgRlZFUgogICAgICA8dmVyc2lvbiBudW1iZXIgb2YgQUlGRi1DIGRlZmluaW5nIGRvY3VtZW50PiAoQUlGRi1DIG9ubHkpLgogIE1BUksKICAgICAgPCMgb2YgbWFya2Vycz4gKDIgYnl0ZXMpCiAgICAgIGxpc3Qgb2YgbWFya2VyczoKICAgICAgICAgIDxtYXJrZXIgSUQ+ICgyIGJ5dGVzLCBtdXN0IGJlID4gMCkKICAgICAgICAgIDxwb3NpdGlvbj4gKDQgYnl0ZXMpCiAgICAgICAgICA8bWFya2VyIG5hbWU+ICgicHN0cmluZyIpCiAgQ09NTQogICAgICA8IyBvZiBjaGFubmVscz4gKDIgYnl0ZXMpCiAgICAgIDwjIG9mIHNvdW5kIGZyYW1lcz4gKDQgYnl0ZXMpCiAgICAgIDxzaXplIG9mIHRoZSBzYW1wbGVzPiAoMiBieXRlcykKICAgICAgPHNhbXBsaW5nIGZyZXF1ZW5jeT4gKDEwIGJ5dGVzLCBJRUVFIDgwLWJpdCBleHRlbmRlZAogICAgICAgICAgZmxvYXRpbmcgcG9pbnQpCiAgICAgIGluIEFJRkYtQyBmaWxlcyBvbmx5OgogICAgICA8Y29tcHJlc3Npb24gdHlwZT4gKDQgYnl0ZXMpCiAgICAgIDxodW1hbi1yZWFkYWJsZSB2ZXJzaW9uIG9mIGNvbXByZXNzaW9uIHR5cGU+ICgicHN0cmluZyIpCiAgU1NORAogICAgICA8b2Zmc2V0PiAoNCBieXRlcywgbm90IHVzZWQgYnkgdGhpcyBwcm9ncmFtKQogICAgICA8YmxvY2tzaXplPiAoNCBieXRlcywgbm90IHVzZWQgYnkgdGhpcyBwcm9ncmFtKQogICAgICA8c291bmQgZGF0YT4KCkEgcHN0cmluZyBjb25zaXN0cyBvZiAxIGJ5dGUgbGVuZ3RoLCBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzLCBhbmQgMCBvciAxCmJ5dGUgcGFkIHRvIG1ha2UgdGhlIHRvdGFsIGxlbmd0aCBldmVuLgoKVXNhZ2UuCgpSZWFkaW5nIEFJRkYgZmlsZXM6CiAgZiA9IGFpZmMub3BlbihmaWxlLCAncicpCndoZXJlIGZpbGUgaXMgZWl0aGVyIHRoZSBuYW1lIG9mIGEgZmlsZSBvciBhbiBvcGVuIGZpbGUgcG9pbnRlci4KVGhlIG9wZW4gZmlsZSBwb2ludGVyIG11c3QgaGF2ZSBtZXRob2RzIHJlYWQoKSwgc2VlaygpLCBhbmQgY2xvc2UoKS4KSW4gc29tZSB0eXBlcyBvZiBhdWRpbyBmaWxlcywgaWYgdGhlIHNldHBvcygpIG1ldGhvZCBpcyBub3QgdXNlZCwKdGhlIHNlZWsoKSBtZXRob2QgaXMgbm90IG5lY2Vzc2FyeS4KClRoaXMgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHdpdGggdGhlIGZvbGxvd2luZyBwdWJsaWMgbWV0aG9kczoKICBnZXRuY2hhbm5lbHMoKSAgLS0gcmV0dXJucyBudW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMgKDEgZm9yCiAgICAgICAgICAgICBtb25vLCAyIGZvciBzdGVyZW8pCiAgZ2V0c2FtcHdpZHRoKCkgIC0tIHJldHVybnMgc2FtcGxlIHdpZHRoIGluIGJ5dGVzCiAgZ2V0ZnJhbWVyYXRlKCkgIC0tIHJldHVybnMgc2FtcGxpbmcgZnJlcXVlbmN5CiAgZ2V0bmZyYW1lcygpICAgIC0tIHJldHVybnMgbnVtYmVyIG9mIGF1ZGlvIGZyYW1lcwogIGdldGNvbXB0eXBlKCkgICAtLSByZXR1cm5zIGNvbXByZXNzaW9uIHR5cGUgKCdOT05FJyBmb3IgQUlGRiBmaWxlcykKICBnZXRjb21wbmFtZSgpICAgLS0gcmV0dXJucyBodW1hbi1yZWFkYWJsZSB2ZXJzaW9uIG9mCiAgICAgICAgICAgICBjb21wcmVzc2lvbiB0eXBlICgnbm90IGNvbXByZXNzZWQnIGZvciBBSUZGIGZpbGVzKQogIGdldHBhcmFtcygpIC0tIHJldHVybnMgYSBuYW1lZHR1cGxlIGNvbnNpc3Rpbmcgb2YgYWxsIG9mIHRoZQogICAgICAgICAgICAgYWJvdmUgaW4gdGhlIGFib3ZlIG9yZGVyCiAgZ2V0bWFya2VycygpICAgIC0tIGdldCB0aGUgbGlzdCBvZiBtYXJrcyBpbiB0aGUgYXVkaW8gZmlsZSBvciBOb25lCiAgICAgICAgICAgICBpZiB0aGVyZSBhcmUgbm8gbWFya3MKICBnZXRtYXJrKGlkKSAtLSBnZXQgbWFyayB3aXRoIHRoZSBzcGVjaWZpZWQgaWQgKHJhaXNlcyBhbiBlcnJvcgogICAgICAgICAgICAgaWYgdGhlIG1hcmsgZG9lcyBub3QgZXhpc3QpCiAgcmVhZGZyYW1lcyhuKSAgIC0tIHJldHVybnMgYXQgbW9zdCBuIGZyYW1lcyBvZiBhdWRpbwogIHJld2luZCgpICAgIC0tIHJld2luZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhdWRpbyBzdHJlYW0KICBzZXRwb3MocG9zKSAtLSBzZWVrIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24KICB0ZWxsKCkgICAgICAtLSByZXR1cm4gdGhlIGN1cnJlbnQgcG9zaXRpb24KICBjbG9zZSgpICAgICAtLSBjbG9zZSB0aGUgaW5zdGFuY2UgKG1ha2UgaXQgdW51c2FibGUpClRoZSBwb3NpdGlvbiByZXR1cm5lZCBieSB0ZWxsKCksIHRoZSBwb3NpdGlvbiBnaXZlbiB0byBzZXRwb3MoKSBhbmQKdGhlIHBvc2l0aW9uIG9mIG1hcmtzIGFyZSBhbGwgY29tcGF0aWJsZSBhbmQgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGgKdGhlIGFjdHVhbCBwb3NpdGlvbiBpbiB0aGUgZmlsZS4KVGhlIGNsb3NlKCkgbWV0aG9kIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGNsYXNzIGluc3RhbmNlCmlzIGRlc3Ryb3llZC4KCldyaXRpbmcgQUlGRiBmaWxlczoKICBmID0gYWlmYy5vcGVuKGZpbGUsICd3JykKd2hlcmUgZmlsZSBpcyBlaXRoZXIgdGhlIG5hbWUgb2YgYSBmaWxlIG9yIGFuIG9wZW4gZmlsZSBwb2ludGVyLgpUaGUgb3BlbiBmaWxlIHBvaW50ZXIgbXVzdCBoYXZlIG1ldGhvZHMgd3JpdGUoKSwgdGVsbCgpLCBzZWVrKCksIGFuZApjbG9zZSgpLgoKVGhpcyByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCB0aGUgZm9sbG93aW5nIHB1YmxpYyBtZXRob2RzOgogIGFpZmYoKSAgICAgIC0tIGNyZWF0ZSBhbiBBSUZGIGZpbGUgKEFJRkYtQyBkZWZhdWx0KQogIGFpZmMoKSAgICAgIC0tIGNyZWF0ZSBhbiBBSUZGLUMgZmlsZQogIHNldG5jaGFubmVscyhuKSAtLSBzZXQgdGhlIG51bWJlciBvZiBjaGFubmVscwogIHNldHNhbXB3aWR0aChuKSAtLSBzZXQgdGhlIHNhbXBsZSB3aWR0aAogIHNldGZyYW1lcmF0ZShuKSAtLSBzZXQgdGhlIGZyYW1lIHJhdGUKICBzZXRuZnJhbWVzKG4pICAgLS0gc2V0IHRoZSBudW1iZXIgb2YgZnJhbWVzCiAgc2V0Y29tcHR5cGUodHlwZSwgbmFtZSkKICAgICAgICAgIC0tIHNldCB0aGUgY29tcHJlc3Npb24gdHlwZSBhbmQgdGhlCiAgICAgICAgICAgICBodW1hbi1yZWFkYWJsZSBjb21wcmVzc2lvbiB0eXBlCiAgc2V0cGFyYW1zKHR1cGxlKQogICAgICAgICAgLS0gc2V0IGFsbCBwYXJhbWV0ZXJzIGF0IG9uY2UKICBzZXRtYXJrKGlkLCBwb3MsIG5hbWUpCiAgICAgICAgICAtLSBhZGQgc3BlY2lmaWVkIG1hcmsgdG8gdGhlIGxpc3Qgb2YgbWFya3MKICB0ZWxsKCkgICAgICAtLSByZXR1cm4gY3VycmVudCBwb3NpdGlvbiBpbiBvdXRwdXQgZmlsZSAodXNlZnVsCiAgICAgICAgICAgICBpbiBjb21iaW5hdGlvbiB3aXRoIHNldG1hcmsoKSkKICB3cml0ZWZyYW1lc3JhdyhkYXRhKQogICAgICAgICAgLS0gd3JpdGUgYXVkaW8gZnJhbWVzIHdpdGhvdXQgcGF0aGluZyB1cCB0aGUKICAgICAgICAgICAgIGZpbGUgaGVhZGVyCiAgd3JpdGVmcmFtZXMoZGF0YSkKICAgICAgICAgIC0tIHdyaXRlIGF1ZGlvIGZyYW1lcyBhbmQgcGF0Y2ggdXAgdGhlIGZpbGUgaGVhZGVyCiAgY2xvc2UoKSAgICAgLS0gcGF0Y2ggdXAgdGhlIGZpbGUgaGVhZGVyIGFuZCBjbG9zZSB0aGUKICAgICAgICAgICAgIG91dHB1dCBmaWxlCllvdSBzaG91bGQgc2V0IHRoZSBwYXJhbWV0ZXJzIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGVmcmFtZXNyYXcgb3IKd3JpdGVmcmFtZXMuICBUaGUgdG90YWwgbnVtYmVyIG9mIGZyYW1lcyBkb2VzIG5vdCBuZWVkIHRvIGJlIHNldCwKYnV0IHdoZW4gaXQgaXMgc2V0IHRvIHRoZSBjb3JyZWN0IHZhbHVlLCB0aGUgaGVhZGVyIGRvZXMgbm90IGhhdmUgdG8KYmUgcGF0Y2hlZCB1cC4KSXQgaXMgYmVzdCB0byBmaXJzdCBzZXQgYWxsIHBhcmFtZXRlcnMsIHBlcmhhcHMgcG9zc2libHkgdGhlCmNvbXByZXNzaW9uIHR5cGUsIGFuZCB0aGVuIHdyaXRlIGF1ZGlvIGZyYW1lcyB1c2luZyB3cml0ZWZyYW1lc3Jhdy4KV2hlbiBhbGwgZnJhbWVzIGhhdmUgYmVlbiB3cml0dGVuLCBlaXRoZXIgY2FsbCB3cml0ZWZyYW1lcyhiJycpIG9yCmNsb3NlKCkgdG8gcGF0Y2ggdXAgdGhlIHNpemVzIGluIHRoZSBoZWFkZXIuCk1hcmtzIGNhbiBiZSBhZGRlZCBhbnl0aW1lLiAgSWYgdGhlcmUgYXJlIGFueSBtYXJrcywgeW91IG11c3QgY2FsbApjbG9zZSgpIGFmdGVyIGFsbCBmcmFtZXMgaGF2ZSBiZWVuIHdyaXR0ZW4uClRoZSBjbG9zZSgpIG1ldGhvZCBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBjbGFzcyBpbnN0YW5jZQppcyBkZXN0cm95ZWQuCgpXaGVuIGEgZmlsZSBpcyBvcGVuZWQgd2l0aCB0aGUgZXh0ZW5zaW9uICcuYWlmZicsIGFuIEFJRkYgZmlsZSBpcwp3cml0dGVuLCBvdGhlcndpc2UgYW4gQUlGRi1DIGZpbGUgaXMgd3JpdHRlbi4gIFRoaXMgZGVmYXVsdCBjYW4gYmUKY2hhbmdlZCBieSBjYWxsaW5nIGFpZmYoKSBvciBhaWZjKCkgYmVmb3JlIHRoZSBmaXJzdCB3cml0ZWZyYW1lcyBvcgp3cml0ZWZyYW1lc3Jhdy4KIiIiCgppbXBvcnQgc3RydWN0CmltcG9ydCBidWlsdGlucwppbXBvcnQgd2FybmluZ3MKCl9fYWxsX18gPSBbIkVycm9yIiwgIm9wZW4iXQoKCndhcm5pbmdzLl9kZXByZWNhdGVkKF9fbmFtZV9fLCByZW1vdmU9KDMsIDEzKSkKCgpjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgcGFzcwoKX0FJRkNfdmVyc2lvbiA9IDB4QTI4MDUxNDAgICAgICMgVmVyc2lvbiAxIG9mIEFJRkYtQwoKZGVmIF9yZWFkX2xvbmcoZmlsZSk6CiAgICB0cnk6CiAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJz5sJywgZmlsZS5yZWFkKDQpKVswXQogICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKICAgICAgICByYWlzZSBFT0ZFcnJvciBmcm9tIE5vbmUKCmRlZiBfcmVhZF91bG9uZyhmaWxlKToKICAgIHRyeToKICAgICAgICByZXR1cm4gc3RydWN0LnVucGFjaygnPkwnLCBmaWxlLnJlYWQoNCkpWzBdCiAgICBleGNlcHQgc3RydWN0LmVycm9yOgogICAgICAgIHJhaXNlIEVPRkVycm9yIGZyb20gTm9uZQoKZGVmIF9yZWFkX3Nob3J0KGZpbGUpOgogICAgdHJ5OgogICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCc+aCcsIGZpbGUucmVhZCgyKSlbMF0KICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CiAgICAgICAgcmFpc2UgRU9GRXJyb3IgZnJvbSBOb25lCgpkZWYgX3JlYWRfdXNob3J0KGZpbGUpOgogICAgdHJ5OgogICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCc+SCcsIGZpbGUucmVhZCgyKSlbMF0KICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CiAgICAgICAgcmFpc2UgRU9GRXJyb3IgZnJvbSBOb25lCgpkZWYgX3JlYWRfc3RyaW5nKGZpbGUpOgogICAgbGVuZ3RoID0gb3JkKGZpbGUucmVhZCgxKSkKICAgIGlmIGxlbmd0aCA9PSAwOgogICAgICAgIGRhdGEgPSBiJycKICAgIGVsc2U6CiAgICAgICAgZGF0YSA9IGZpbGUucmVhZChsZW5ndGgpCiAgICBpZiBsZW5ndGggJiAxID09IDA6CiAgICAgICAgZHVtbXkgPSBmaWxlLnJlYWQoMSkKICAgIHJldHVybiBkYXRhCgpfSFVHRV9WQUwgPSAxLjc5NzY5MzEzNDg2MjMxZSszMDggIyBTZWUgPGxpbWl0cy5oPgoKZGVmIF9yZWFkX2Zsb2F0KGYpOiAjIDEwIGJ5dGVzCiAgICBleHBvbiA9IF9yZWFkX3Nob3J0KGYpICMgMiBieXRlcwogICAgc2lnbiA9IDEKICAgIGlmIGV4cG9uIDwgMDoKICAgICAgICBzaWduID0gLTEKICAgICAgICBleHBvbiA9IGV4cG9uICsgMHg4MDAwCiAgICBoaW1hbnQgPSBfcmVhZF91bG9uZyhmKSAjIDQgYnl0ZXMKICAgIGxvbWFudCA9IF9yZWFkX3Vsb25nKGYpICMgNCBieXRlcwogICAgaWYgZXhwb24gPT0gaGltYW50ID09IGxvbWFudCA9PSAwOgogICAgICAgIGYgPSAwLjAKICAgIGVsaWYgZXhwb24gPT0gMHg3RkZGOgogICAgICAgIGYgPSBfSFVHRV9WQUwKICAgIGVsc2U6CiAgICAgICAgZXhwb24gPSBleHBvbiAtIDE2MzgzCiAgICAgICAgZiA9IChoaW1hbnQgKiAweDEwMDAwMDAwMCArIGxvbWFudCkgKiBwb3coMi4wLCBleHBvbiAtIDYzKQogICAgcmV0dXJuIHNpZ24gKiBmCgpkZWYgX3dyaXRlX3Nob3J0KGYsIHgpOgogICAgZi53cml0ZShzdHJ1Y3QucGFjaygnPmgnLCB4KSkKCmRlZiBfd3JpdGVfdXNob3J0KGYsIHgpOgogICAgZi53cml0ZShzdHJ1Y3QucGFjaygnPkgnLCB4KSkKCmRlZiBfd3JpdGVfbG9uZyhmLCB4KToKICAgIGYud3JpdGUoc3RydWN0LnBhY2soJz5sJywgeCkpCgpkZWYgX3dyaXRlX3Vsb25nKGYsIHgpOgogICAgZi53cml0ZShzdHJ1Y3QucGFjaygnPkwnLCB4KSkKCmRlZiBfd3JpdGVfc3RyaW5nKGYsIHMpOgogICAgaWYgbGVuKHMpID4gMjU1OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInN0cmluZyBleGNlZWRzIG1heGltdW0gcHN0cmluZyBsZW5ndGgiKQogICAgZi53cml0ZShzdHJ1Y3QucGFjaygnQicsIGxlbihzKSkpCiAgICBmLndyaXRlKHMpCiAgICBpZiBsZW4ocykgJiAxID09IDA6CiAgICAgICAgZi53cml0ZShiJ1x4MDAnKQoKZGVmIF93cml0ZV9mbG9hdChmLCB4KToKICAgIGltcG9ydCBtYXRoCiAgICBpZiB4IDwgMDoKICAgICAgICBzaWduID0gMHg4MDAwCiAgICAgICAgeCA9IHggKiAtMQogICAgZWxzZToKICAgICAgICBzaWduID0gMAogICAgaWYgeCA9PSAwOgogICAgICAgIGV4cG9uID0gMAogICAgICAgIGhpbWFudCA9IDAKICAgICAgICBsb21hbnQgPSAwCiAgICBlbHNlOgogICAgICAgIGZtYW50LCBleHBvbiA9IG1hdGguZnJleHAoeCkKICAgICAgICBpZiBleHBvbiA+IDE2Mzg0IG9yIGZtYW50ID49IDEgb3IgZm1hbnQgIT0gZm1hbnQ6ICMgSW5maW5pdHkgb3IgTmFOCiAgICAgICAgICAgIGV4cG9uID0gc2lnbnwweDdGRkYKICAgICAgICAgICAgaGltYW50ID0gMAogICAgICAgICAgICBsb21hbnQgPSAwCiAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgIyBGaW5pdGUKICAgICAgICAgICAgZXhwb24gPSBleHBvbiArIDE2MzgyCiAgICAgICAgICAgIGlmIGV4cG9uIDwgMDogICAgICAgICAgICMgZGVub3JtYWxpemVkCiAgICAgICAgICAgICAgICBmbWFudCA9IG1hdGgubGRleHAoZm1hbnQsIGV4cG9uKQogICAgICAgICAgICAgICAgZXhwb24gPSAwCiAgICAgICAgICAgIGV4cG9uID0gZXhwb24gfCBzaWduCiAgICAgICAgICAgIGZtYW50ID0gbWF0aC5sZGV4cChmbWFudCwgMzIpCiAgICAgICAgICAgIGZzbWFudCA9IG1hdGguZmxvb3IoZm1hbnQpCiAgICAgICAgICAgIGhpbWFudCA9IGludChmc21hbnQpCiAgICAgICAgICAgIGZtYW50ID0gbWF0aC5sZGV4cChmbWFudCAtIGZzbWFudCwgMzIpCiAgICAgICAgICAgIGZzbWFudCA9IG1hdGguZmxvb3IoZm1hbnQpCiAgICAgICAgICAgIGxvbWFudCA9IGludChmc21hbnQpCiAgICBfd3JpdGVfdXNob3J0KGYsIGV4cG9uKQogICAgX3dyaXRlX3Vsb25nKGYsIGhpbWFudCkKICAgIF93cml0ZV91bG9uZyhmLCBsb21hbnQpCgp3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKICAgIGZyb20gY2h1bmsgaW1wb3J0IENodW5rCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKCl9haWZjX3BhcmFtcyA9IG5hbWVkdHVwbGUoJ19haWZjX3BhcmFtcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25jaGFubmVscyBzYW1wd2lkdGggZnJhbWVyYXRlIG5mcmFtZXMgY29tcHR5cGUgY29tcG5hbWUnKQoKX2FpZmNfcGFyYW1zLm5jaGFubmVscy5fX2RvY19fID0gJ051bWJlciBvZiBhdWRpbyBjaGFubmVscyAoMSBmb3IgbW9ubywgMiBmb3Igc3RlcmVvKScKX2FpZmNfcGFyYW1zLnNhbXB3aWR0aC5fX2RvY19fID0gJ1NhbXBsZSB3aWR0aCBpbiBieXRlcycKX2FpZmNfcGFyYW1zLmZyYW1lcmF0ZS5fX2RvY19fID0gJ1NhbXBsaW5nIGZyZXF1ZW5jeScKX2FpZmNfcGFyYW1zLm5mcmFtZXMuX19kb2NfXyA9ICdOdW1iZXIgb2YgYXVkaW8gZnJhbWVzJwpfYWlmY19wYXJhbXMuY29tcHR5cGUuX19kb2NfXyA9ICdDb21wcmVzc2lvbiB0eXBlICgiTk9ORSIgZm9yIEFJRkYgZmlsZXMpJwpfYWlmY19wYXJhbXMuY29tcG5hbWUuX19kb2NfXyA9ICgiIiJcCkEgaHVtYW4tcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY29tcHJlc3Npb24gdHlwZQooJ25vdCBjb21wcmVzc2VkJyBmb3IgQUlGRiBmaWxlcykiIiIpCgoKY2xhc3MgQWlmY19yZWFkOgogICAgIyBWYXJpYWJsZXMgdXNlZCBpbiB0aGlzIGNsYXNzOgogICAgIwogICAgIyBUaGVzZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSB0byB0aGUgdXNlciB0aG91Z2ggYXBwcm9wcmlhdGUKICAgICMgbWV0aG9kcyBvZiB0aGlzIGNsYXNzOgogICAgIyBfZmlsZSAtLSB0aGUgb3BlbiBmaWxlIHdpdGggbWV0aG9kcyByZWFkKCksIGNsb3NlKCksIGFuZCBzZWVrKCkKICAgICMgICAgICAgc2V0IHRocm91Z2ggdGhlIF9faW5pdF9fKCkgbWV0aG9kCiAgICAjIF9uY2hhbm5lbHMgLS0gdGhlIG51bWJlciBvZiBhdWRpbyBjaGFubmVscwogICAgIyAgICAgICBhdmFpbGFibGUgdGhyb3VnaCB0aGUgZ2V0bmNoYW5uZWxzKCkgbWV0aG9kCiAgICAjIF9uZnJhbWVzIC0tIHRoZSBudW1iZXIgb2YgYXVkaW8gZnJhbWVzCiAgICAjICAgICAgIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnZXRuZnJhbWVzKCkgbWV0aG9kCiAgICAjIF9zYW1wd2lkdGggLS0gdGhlIG51bWJlciBvZiBieXRlcyBwZXIgYXVkaW8gc2FtcGxlCiAgICAjICAgICAgIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnZXRzYW1wd2lkdGgoKSBtZXRob2QKICAgICMgX2ZyYW1lcmF0ZSAtLSB0aGUgc2FtcGxpbmcgZnJlcXVlbmN5CiAgICAjICAgICAgIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnZXRmcmFtZXJhdGUoKSBtZXRob2QKICAgICMgX2NvbXB0eXBlIC0tIHRoZSBBSUZGLUMgY29tcHJlc3Npb24gdHlwZSAoJ05PTkUnIGlmIEFJRkYpCiAgICAjICAgICAgIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnZXRjb21wdHlwZSgpIG1ldGhvZAogICAgIyBfY29tcG5hbWUgLS0gdGhlIGh1bWFuLXJlYWRhYmxlIEFJRkYtQyBjb21wcmVzc2lvbiB0eXBlCiAgICAjICAgICAgIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnZXRjb21wdHlwZSgpIG1ldGhvZAogICAgIyBfbWFya2VycyAtLSB0aGUgbWFya3MgaW4gdGhlIGF1ZGlvIGZpbGUKICAgICMgICAgICAgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGdldG1hcmtlcnMoKSBhbmQgZ2V0bWFyaygpCiAgICAjICAgICAgIG1ldGhvZHMKICAgICMgX3NvdW5kcG9zIC0tIHRoZSBwb3NpdGlvbiBpbiB0aGUgYXVkaW8gc3RyZWFtCiAgICAjICAgICAgIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB0ZWxsKCkgbWV0aG9kLCBzZXQgdGhyb3VnaCB0aGUKICAgICMgICAgICAgc2V0cG9zKCkgbWV0aG9kCiAgICAjCiAgICAjIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IG9ubHk6CiAgICAjIF92ZXJzaW9uIC0tIHRoZSBBSUZGLUMgdmVyc2lvbiBudW1iZXIKICAgICMgX2RlY29tcCAtLSB0aGUgZGVjb21wcmVzc29yIGZyb20gYnVpbHRpbiBtb2R1bGUgY2wKICAgICMgX2NvbW1fY2h1bmtfcmVhZCAtLSAxIGlmZiB0aGUgQ09NTSBjaHVuayBoYXMgYmVlbiByZWFkCiAgICAjIF9haWZjIC0tIDEgaWZmIHJlYWRpbmcgYW4gQUlGRi1DIGZpbGUKICAgICMgX3NzbmRfc2Vla19uZWVkZWQgLS0gMSBpZmYgcG9zaXRpb25lZCBjb3JyZWN0bHkgaW4gYXVkaW8KICAgICMgICAgICAgZmlsZSBmb3IgcmVhZGZyYW1lcygpCiAgICAjIF9zc25kX2NodW5rIC0tIGluc3RhbnRpYXRpb24gb2YgYSBjaHVuayBjbGFzcyBmb3IgdGhlIFNTTkQgY2h1bmsKICAgICMgX2ZyYW1lc2l6ZSAtLSBzaXplIG9mIG9uZSBmcmFtZSBpbiB0aGUgZmlsZQoKICAgIF9maWxlID0gTm9uZSAgIyBTZXQgaGVyZSBzaW5jZSBfX2RlbF9fIGNoZWNrcyBpdAoKICAgIGRlZiBpbml0ZnAoc2VsZiwgZmlsZSk6CiAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDAKICAgICAgICBzZWxmLl9jb252ZXJ0ID0gTm9uZQogICAgICAgIHNlbGYuX21hcmtlcnMgPSBbXQogICAgICAgIHNlbGYuX3NvdW5kcG9zID0gMAogICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCiAgICAgICAgY2h1bmsgPSBDaHVuayhmaWxlKQogICAgICAgIGlmIGNodW5rLmdldG5hbWUoKSAhPSBiJ0ZPUk0nOgogICAgICAgICAgICByYWlzZSBFcnJvcignZmlsZSBkb2VzIG5vdCBzdGFydCB3aXRoIEZPUk0gaWQnKQogICAgICAgIGZvcm1kYXRhID0gY2h1bmsucmVhZCg0KQogICAgICAgIGlmIGZvcm1kYXRhID09IGInQUlGRic6CiAgICAgICAgICAgIHNlbGYuX2FpZmMgPSAwCiAgICAgICAgZWxpZiBmb3JtZGF0YSA9PSBiJ0FJRkMnOgogICAgICAgICAgICBzZWxmLl9haWZjID0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdub3QgYW4gQUlGRiBvciBBSUZGLUMgZmlsZScpCiAgICAgICAgc2VsZi5fY29tbV9jaHVua19yZWFkID0gMAogICAgICAgIHNlbGYuX3NzbmRfY2h1bmsgPSBOb25lCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgc2VsZi5fc3NuZF9zZWVrX25lZWRlZCA9IDEKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY2h1bmsgPSBDaHVuayhzZWxmLl9maWxlKQogICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBjaHVua25hbWUgPSBjaHVuay5nZXRuYW1lKCkKICAgICAgICAgICAgaWYgY2h1bmtuYW1lID09IGInQ09NTSc6CiAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2NvbW1fY2h1bmsoY2h1bmspCiAgICAgICAgICAgICAgICBzZWxmLl9jb21tX2NodW5rX3JlYWQgPSAxCiAgICAgICAgICAgIGVsaWYgY2h1bmtuYW1lID09IGInU1NORCc6CiAgICAgICAgICAgICAgICBzZWxmLl9zc25kX2NodW5rID0gY2h1bmsKICAgICAgICAgICAgICAgIGR1bW15ID0gY2h1bmsucmVhZCg4KQogICAgICAgICAgICAgICAgc2VsZi5fc3NuZF9zZWVrX25lZWRlZCA9IDAKICAgICAgICAgICAgZWxpZiBjaHVua25hbWUgPT0gYidGVkVSJzoKICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBfcmVhZF91bG9uZyhjaHVuaykKICAgICAgICAgICAgZWxpZiBjaHVua25hbWUgPT0gYidNQVJLJzoKICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRtYXJrKGNodW5rKQogICAgICAgICAgICBjaHVuay5za2lwKCkKICAgICAgICBpZiBub3Qgc2VsZi5fY29tbV9jaHVua19yZWFkIG9yIG5vdCBzZWxmLl9zc25kX2NodW5rOgogICAgICAgICAgICByYWlzZSBFcnJvcignQ09NTSBjaHVuayBhbmQvb3IgU1NORCBjaHVuayBtaXNzaW5nJykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBzdHIpOgogICAgICAgICAgICBmaWxlX29iamVjdCA9IGJ1aWx0aW5zLm9wZW4oZiwgJ3JiJykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5pbml0ZnAoZmlsZV9vYmplY3QpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIGZpbGVfb2JqZWN0LmNsb3NlKCkKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBhc3N1bWUgaXQgaXMgYW4gb3BlbiBmaWxlIG9iamVjdCBhbHJlYWR5CiAgICAgICAgICAgIHNlbGYuaW5pdGZwKGYpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgIwogICAgIyBVc2VyIHZpc2libGUgbWV0aG9kcy4KICAgICMKICAgIGRlZiBnZXRmcChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZQoKICAgIGRlZiByZXdpbmQoc2VsZik6CiAgICAgICAgc2VsZi5fc3NuZF9zZWVrX25lZWRlZCA9IDEKICAgICAgICBzZWxmLl9zb3VuZHBvcyA9IDAKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgZmlsZSA9IHNlbGYuX2ZpbGUKICAgICAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9maWxlID0gTm9uZQogICAgICAgICAgICBmaWxlLmNsb3NlKCkKCiAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc291bmRwb3MKCiAgICBkZWYgZ2V0bmNoYW5uZWxzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uY2hhbm5lbHMKCiAgICBkZWYgZ2V0bmZyYW1lcyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fbmZyYW1lcwoKICAgIGRlZiBnZXRzYW1wd2lkdGgoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NhbXB3aWR0aAoKICAgIGRlZiBnZXRmcmFtZXJhdGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZyYW1lcmF0ZQoKICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY29tcHR5cGUKCiAgICBkZWYgZ2V0Y29tcG5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXBuYW1lCgojIyAgZGVmIGdldHZlcnNpb24oc2VsZik6CiMjICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KCiAgICBkZWYgZ2V0cGFyYW1zKHNlbGYpOgogICAgICAgIHJldHVybiBfYWlmY19wYXJhbXMoc2VsZi5nZXRuY2hhbm5lbHMoKSwgc2VsZi5nZXRzYW1wd2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0ZnJhbWVyYXRlKCksIHNlbGYuZ2V0bmZyYW1lcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRjb21wdHlwZSgpLCBzZWxmLmdldGNvbXBuYW1lKCkpCgogICAgZGVmIGdldG1hcmtlcnMoc2VsZik6CiAgICAgICAgaWYgbGVuKHNlbGYuX21hcmtlcnMpID09IDA6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgcmV0dXJuIHNlbGYuX21hcmtlcnMKCiAgICBkZWYgZ2V0bWFyayhzZWxmLCBpZCk6CiAgICAgICAgZm9yIG1hcmtlciBpbiBzZWxmLl9tYXJrZXJzOgogICAgICAgICAgICBpZiBpZCA9PSBtYXJrZXJbMF06CiAgICAgICAgICAgICAgICByZXR1cm4gbWFya2VyCiAgICAgICAgcmFpc2UgRXJyb3IoJ21hcmtlciB7MCFyfSBkb2VzIG5vdCBleGlzdCcuZm9ybWF0KGlkKSkKCiAgICBkZWYgc2V0cG9zKHNlbGYsIHBvcyk6CiAgICAgICAgaWYgcG9zIDwgMCBvciBwb3MgPiBzZWxmLl9uZnJhbWVzOgogICAgICAgICAgICByYWlzZSBFcnJvcigncG9zaXRpb24gbm90IGluIHJhbmdlJykKICAgICAgICBzZWxmLl9zb3VuZHBvcyA9IHBvcwogICAgICAgIHNlbGYuX3NzbmRfc2Vla19uZWVkZWQgPSAxCgogICAgZGVmIHJlYWRmcmFtZXMoc2VsZiwgbmZyYW1lcyk6CiAgICAgICAgaWYgc2VsZi5fc3NuZF9zZWVrX25lZWRlZDoKICAgICAgICAgICAgc2VsZi5fc3NuZF9jaHVuay5zZWVrKDApCiAgICAgICAgICAgIGR1bW15ID0gc2VsZi5fc3NuZF9jaHVuay5yZWFkKDgpCiAgICAgICAgICAgIHBvcyA9IHNlbGYuX3NvdW5kcG9zICogc2VsZi5fZnJhbWVzaXplCiAgICAgICAgICAgIGlmIHBvczoKICAgICAgICAgICAgICAgIHNlbGYuX3NzbmRfY2h1bmsuc2Vlayhwb3MgKyA4KQogICAgICAgICAgICBzZWxmLl9zc25kX3NlZWtfbmVlZGVkID0gMAogICAgICAgIGlmIG5mcmFtZXMgPT0gMDoKICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgIGRhdGEgPSBzZWxmLl9zc25kX2NodW5rLnJlYWQobmZyYW1lcyAqIHNlbGYuX2ZyYW1lc2l6ZSkKICAgICAgICBpZiBzZWxmLl9jb252ZXJ0IGFuZCBkYXRhOgogICAgICAgICAgICBkYXRhID0gc2VsZi5fY29udmVydChkYXRhKQogICAgICAgIHNlbGYuX3NvdW5kcG9zID0gc2VsZi5fc291bmRwb3MgKyBsZW4oZGF0YSkgLy8gKHNlbGYuX25jaGFubmVscwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2VsZi5fc2FtcHdpZHRoKQogICAgICAgIHJldHVybiBkYXRhCgogICAgIwogICAgIyBJbnRlcm5hbCBtZXRob2RzLgogICAgIwoKICAgIGRlZiBfYWxhdzJsaW4oc2VsZiwgZGF0YSk6CiAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgaW1wb3J0IGF1ZGlvb3AKICAgICAgICByZXR1cm4gYXVkaW9vcC5hbGF3MmxpbihkYXRhLCAyKQoKICAgIGRlZiBfdWxhdzJsaW4oc2VsZiwgZGF0YSk6CiAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgaW1wb3J0IGF1ZGlvb3AKICAgICAgICByZXR1cm4gYXVkaW9vcC51bGF3MmxpbihkYXRhLCAyKQoKICAgIGRlZiBfYWRwY20ybGluKHNlbGYsIGRhdGEpOgogICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgIGltcG9ydCBhdWRpb29wCiAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19hZHBjbXN0YXRlJyk6CiAgICAgICAgICAgICMgZmlyc3QgdGltZQogICAgICAgICAgICBzZWxmLl9hZHBjbXN0YXRlID0gTm9uZQogICAgICAgIGRhdGEsIHNlbGYuX2FkcGNtc3RhdGUgPSBhdWRpb29wLmFkcGNtMmxpbihkYXRhLCAyLCBzZWxmLl9hZHBjbXN0YXRlKQogICAgICAgIHJldHVybiBkYXRhCgogICAgZGVmIF9zb3d0MmxpbihzZWxmLCBkYXRhKToKICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICBpbXBvcnQgYXVkaW9vcAogICAgICAgIHJldHVybiBhdWRpb29wLmJ5dGVzd2FwKGRhdGEsIDIpCgogICAgZGVmIF9yZWFkX2NvbW1fY2h1bmsoc2VsZiwgY2h1bmspOgogICAgICAgIHNlbGYuX25jaGFubmVscyA9IF9yZWFkX3Nob3J0KGNodW5rKQogICAgICAgIHNlbGYuX25mcmFtZXMgPSBfcmVhZF9sb25nKGNodW5rKQogICAgICAgIHNlbGYuX3NhbXB3aWR0aCA9IChfcmVhZF9zaG9ydChjaHVuaykgKyA3KSAvLyA4CiAgICAgICAgc2VsZi5fZnJhbWVyYXRlID0gaW50KF9yZWFkX2Zsb2F0KGNodW5rKSkKICAgICAgICBpZiBzZWxmLl9zYW1wd2lkdGggPD0gMDoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2JhZCBzYW1wbGUgd2lkdGgnKQogICAgICAgIGlmIHNlbGYuX25jaGFubmVscyA8PSAwOgogICAgICAgICAgICByYWlzZSBFcnJvcignYmFkICMgb2YgY2hhbm5lbHMnKQogICAgICAgIHNlbGYuX2ZyYW1lc2l6ZSA9IHNlbGYuX25jaGFubmVscyAqIHNlbGYuX3NhbXB3aWR0aAogICAgICAgIGlmIHNlbGYuX2FpZmM6CiAgICAgICAgICAgICNERUJVRzogU0dJJ3Mgc291bmRlZGl0b3IgcHJvZHVjZXMgYSBiYWQgc2l6ZSA6LSgKICAgICAgICAgICAga2x1ZGdlID0gMAogICAgICAgICAgICBpZiBjaHVuay5jaHVua3NpemUgPT0gMTg6CiAgICAgICAgICAgICAgICBrbHVkZ2UgPSAxCiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplJykKICAgICAgICAgICAgICAgIGNodW5rLmNodW5rc2l6ZSA9IDIzCiAgICAgICAgICAgICNERUJVRyBlbmQKICAgICAgICAgICAgc2VsZi5fY29tcHR5cGUgPSBjaHVuay5yZWFkKDQpCiAgICAgICAgICAgICNERUJVRyBzdGFydAogICAgICAgICAgICBpZiBrbHVkZ2U6CiAgICAgICAgICAgICAgICBsZW5ndGggPSBvcmQoY2h1bmsuZmlsZS5yZWFkKDEpKQogICAgICAgICAgICAgICAgaWYgbGVuZ3RoICYgMSA9PSAwOgogICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCArIDEKICAgICAgICAgICAgICAgIGNodW5rLmNodW5rc2l6ZSA9IGNodW5rLmNodW5rc2l6ZSArIGxlbmd0aAogICAgICAgICAgICAgICAgY2h1bmsuZmlsZS5zZWVrKC0xLCAxKQogICAgICAgICAgICAjREVCVUcgZW5kCiAgICAgICAgICAgIHNlbGYuX2NvbXBuYW1lID0gX3JlYWRfc3RyaW5nKGNodW5rKQogICAgICAgICAgICBpZiBzZWxmLl9jb21wdHlwZSAhPSBiJ05PTkUnOgogICAgICAgICAgICAgICAgaWYgc2VsZi5fY29tcHR5cGUgPT0gYidHNzIyJzoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb252ZXJ0ID0gc2VsZi5fYWRwY20ybGluCiAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX2NvbXB0eXBlIGluIChiJ3VsYXcnLCBiJ1VMQVcnKToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb252ZXJ0ID0gc2VsZi5fdWxhdzJsaW4KICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fY29tcHR5cGUgaW4gKGInYWxhdycsIGInQUxBVycpOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnZlcnQgPSBzZWxmLl9hbGF3MmxpbgogICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9jb21wdHlwZSBpbiAoYidzb3d0JywgYidTT1dUJyk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udmVydCA9IHNlbGYuX3Nvd3QybGluCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCd1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiB0eXBlJykKICAgICAgICAgICAgICAgIHNlbGYuX3NhbXB3aWR0aCA9IDIKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9jb21wdHlwZSA9IGInTk9ORScKICAgICAgICAgICAgc2VsZi5fY29tcG5hbWUgPSBiJ25vdCBjb21wcmVzc2VkJwoKICAgIGRlZiBfcmVhZG1hcmsoc2VsZiwgY2h1bmspOgogICAgICAgIG5tYXJrZXJzID0gX3JlYWRfc2hvcnQoY2h1bmspCiAgICAgICAgIyBTb21lIGZpbGVzIGFwcGVhciB0byBjb250YWluIGludmFsaWQgY291bnRzLgogICAgICAgICMgQ29wZSB3aXRoIHRoaXMgYnkgdGVzdGluZyBmb3IgRU9GLgogICAgICAgIHRyeToKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobm1hcmtlcnMpOgogICAgICAgICAgICAgICAgaWQgPSBfcmVhZF9zaG9ydChjaHVuaykKICAgICAgICAgICAgICAgIHBvcyA9IF9yZWFkX2xvbmcoY2h1bmspCiAgICAgICAgICAgICAgICBuYW1lID0gX3JlYWRfc3RyaW5nKGNodW5rKQogICAgICAgICAgICAgICAgaWYgcG9zIG9yIG5hbWU6CiAgICAgICAgICAgICAgICAgICAgIyBzb21lIGZpbGVzIGFwcGVhciB0byBoYXZlCiAgICAgICAgICAgICAgICAgICAgIyBkdW1teSBtYXJrZXJzIGNvbnNpc3Rpbmcgb2YKICAgICAgICAgICAgICAgICAgICAjIGEgcG9zaXRpb24gMCBhbmQgbmFtZSAnJwogICAgICAgICAgICAgICAgICAgIHNlbGYuX21hcmtlcnMuYXBwZW5kKChpZCwgcG9zLCBuYW1lKSkKICAgICAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgICAgIHcgPSAoJ1dhcm5pbmc6IE1BUksgY2h1bmsgY29udGFpbnMgb25seSAlcyBtYXJrZXIlcyBpbnN0ZWFkIG9mICVzJyAlCiAgICAgICAgICAgICAgICAgKGxlbihzZWxmLl9tYXJrZXJzKSwgJycgaWYgbGVuKHNlbGYuX21hcmtlcnMpID09IDEgZWxzZSAncycsCiAgICAgICAgICAgICAgICAgIG5tYXJrZXJzKSkKICAgICAgICAgICAgd2FybmluZ3Mud2Fybih3KQoKY2xhc3MgQWlmY193cml0ZToKICAgICMgVmFyaWFibGVzIHVzZWQgaW4gdGhpcyBjbGFzczoKICAgICMKICAgICMgVGhlc2UgdmFyaWFibGVzIGFyZSB1c2VyIHNldHRhYmxlIHRocm91Z2ggYXBwcm9wcmlhdGUgbWV0aG9kcwogICAgIyBvZiB0aGlzIGNsYXNzOgogICAgIyBfZmlsZSAtLSB0aGUgb3BlbiBmaWxlIHdpdGggbWV0aG9kcyB3cml0ZSgpLCBjbG9zZSgpLCB0ZWxsKCksIHNlZWsoKQogICAgIyAgICAgICBzZXQgdGhyb3VnaCB0aGUgX19pbml0X18oKSBtZXRob2QKICAgICMgX2NvbXB0eXBlIC0tIHRoZSBBSUZGLUMgY29tcHJlc3Npb24gdHlwZSAoJ05PTkUnIGluIEFJRkYpCiAgICAjICAgICAgIHNldCB0aHJvdWdoIHRoZSBzZXRjb21wdHlwZSgpIG9yIHNldHBhcmFtcygpIG1ldGhvZAogICAgIyBfY29tcG5hbWUgLS0gdGhlIGh1bWFuLXJlYWRhYmxlIEFJRkYtQyBjb21wcmVzc2lvbiB0eXBlCiAgICAjICAgICAgIHNldCB0aHJvdWdoIHRoZSBzZXRjb21wdHlwZSgpIG9yIHNldHBhcmFtcygpIG1ldGhvZAogICAgIyBfbmNoYW5uZWxzIC0tIHRoZSBudW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMKICAgICMgICAgICAgc2V0IHRocm91Z2ggdGhlIHNldG5jaGFubmVscygpIG9yIHNldHBhcmFtcygpIG1ldGhvZAogICAgIyBfc2FtcHdpZHRoIC0tIHRoZSBudW1iZXIgb2YgYnl0ZXMgcGVyIGF1ZGlvIHNhbXBsZQogICAgIyAgICAgICBzZXQgdGhyb3VnaCB0aGUgc2V0c2FtcHdpZHRoKCkgb3Igc2V0cGFyYW1zKCkgbWV0aG9kCiAgICAjIF9mcmFtZXJhdGUgLS0gdGhlIHNhbXBsaW5nIGZyZXF1ZW5jeQogICAgIyAgICAgICBzZXQgdGhyb3VnaCB0aGUgc2V0ZnJhbWVyYXRlKCkgb3Igc2V0cGFyYW1zKCkgbWV0aG9kCiAgICAjIF9uZnJhbWVzIC0tIHRoZSBudW1iZXIgb2YgYXVkaW8gZnJhbWVzIHdyaXR0ZW4gdG8gdGhlIGhlYWRlcgogICAgIyAgICAgICBzZXQgdGhyb3VnaCB0aGUgc2V0bmZyYW1lcygpIG9yIHNldHBhcmFtcygpIG1ldGhvZAogICAgIyBfYWlmYyAtLSB3aGV0aGVyIHdlJ3JlIHdyaXRpbmcgYW4gQUlGRi1DIGZpbGUgb3IgYW4gQUlGRiBmaWxlCiAgICAjICAgICAgIHNldCB0aHJvdWdoIHRoZSBhaWZjKCkgbWV0aG9kLCByZXNldCB0aHJvdWdoIHRoZQogICAgIyAgICAgICBhaWZmKCkgbWV0aG9kCiAgICAjCiAgICAjIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IG9ubHk6CiAgICAjIF92ZXJzaW9uIC0tIHRoZSBBSUZGLUMgdmVyc2lvbiBudW1iZXIKICAgICMgX2NvbXAgLS0gdGhlIGNvbXByZXNzb3IgZnJvbSBidWlsdGluIG1vZHVsZSBjbAogICAgIyBfbmZyYW1lc3dyaXR0ZW4gLS0gdGhlIG51bWJlciBvZiBhdWRpbyBmcmFtZXMgYWN0dWFsbHkgd3JpdHRlbgogICAgIyBfZGF0YWxlbmd0aCAtLSB0aGUgc2l6ZSBvZiB0aGUgYXVkaW8gc2FtcGxlcyB3cml0dGVuIHRvIHRoZSBoZWFkZXIKICAgICMgX2RhdGF3cml0dGVuIC0tIHRoZSBzaXplIG9mIHRoZSBhdWRpbyBzYW1wbGVzIGFjdHVhbGx5IHdyaXR0ZW4KCiAgICBfZmlsZSA9IE5vbmUgICMgU2V0IGhlcmUgc2luY2UgX19kZWxfXyBjaGVja3MgaXQKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBzdHIpOgogICAgICAgICAgICBmaWxlX29iamVjdCA9IGJ1aWx0aW5zLm9wZW4oZiwgJ3diJykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5pbml0ZnAoZmlsZV9vYmplY3QpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIGZpbGVfb2JqZWN0LmNsb3NlKCkKICAgICAgICAgICAgICAgIHJhaXNlCgogICAgICAgICAgICAjIHRyZWF0IC5haWZmIGZpbGUgZXh0ZW5zaW9ucyBhcyBub24tY29tcHJlc3NlZCBhdWRpbwogICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCcuYWlmZicpOgogICAgICAgICAgICAgICAgc2VsZi5fYWlmYyA9IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGFzc3VtZSBpdCBpcyBhbiBvcGVuIGZpbGUgb2JqZWN0IGFscmVhZHkKICAgICAgICAgICAgc2VsZi5pbml0ZnAoZikKCiAgICBkZWYgaW5pdGZwKHNlbGYsIGZpbGUpOgogICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCiAgICAgICAgc2VsZi5fdmVyc2lvbiA9IF9BSUZDX3ZlcnNpb24KICAgICAgICBzZWxmLl9jb21wdHlwZSA9IGInTk9ORScKICAgICAgICBzZWxmLl9jb21wbmFtZSA9IGInbm90IGNvbXByZXNzZWQnCiAgICAgICAgc2VsZi5fY29udmVydCA9IE5vbmUKICAgICAgICBzZWxmLl9uY2hhbm5lbHMgPSAwCiAgICAgICAgc2VsZi5fc2FtcHdpZHRoID0gMAogICAgICAgIHNlbGYuX2ZyYW1lcmF0ZSA9IDAKICAgICAgICBzZWxmLl9uZnJhbWVzID0gMAogICAgICAgIHNlbGYuX25mcmFtZXN3cml0dGVuID0gMAogICAgICAgIHNlbGYuX2RhdGF3cml0dGVuID0gMAogICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSAwCiAgICAgICAgc2VsZi5fbWFya2VycyA9IFtdCiAgICAgICAgc2VsZi5fbWFya2xlbmd0aCA9IDAKICAgICAgICBzZWxmLl9haWZjID0gMSAgICAgICMgQUlGRi1DIGlzIGRlZmF1bHQKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICAjCiAgICAjIFVzZXIgdmlzaWJsZSBtZXRob2RzLgogICAgIwogICAgZGVmIGFpZmYoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fbmZyYW1lc3dyaXR0ZW46CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdjYW5ub3QgY2hhbmdlIHBhcmFtZXRlcnMgYWZ0ZXIgc3RhcnRpbmcgdG8gd3JpdGUnKQogICAgICAgIHNlbGYuX2FpZmMgPSAwCgogICAgZGVmIGFpZmMoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fbmZyYW1lc3dyaXR0ZW46CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdjYW5ub3QgY2hhbmdlIHBhcmFtZXRlcnMgYWZ0ZXIgc3RhcnRpbmcgdG8gd3JpdGUnKQogICAgICAgIHNlbGYuX2FpZmMgPSAxCgogICAgZGVmIHNldG5jaGFubmVscyhzZWxmLCBuY2hhbm5lbHMpOgogICAgICAgIGlmIHNlbGYuX25mcmFtZXN3cml0dGVuOgogICAgICAgICAgICByYWlzZSBFcnJvcignY2Fubm90IGNoYW5nZSBwYXJhbWV0ZXJzIGFmdGVyIHN0YXJ0aW5nIHRvIHdyaXRlJykKICAgICAgICBpZiBuY2hhbm5lbHMgPCAxOgogICAgICAgICAgICByYWlzZSBFcnJvcignYmFkICMgb2YgY2hhbm5lbHMnKQogICAgICAgIHNlbGYuX25jaGFubmVscyA9IG5jaGFubmVscwoKICAgIGRlZiBnZXRuY2hhbm5lbHMoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuX25jaGFubmVsczoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ251bWJlciBvZiBjaGFubmVscyBub3Qgc2V0JykKICAgICAgICByZXR1cm4gc2VsZi5fbmNoYW5uZWxzCgogICAgZGVmIHNldHNhbXB3aWR0aChzZWxmLCBzYW1wd2lkdGgpOgogICAgICAgIGlmIHNlbGYuX25mcmFtZXN3cml0dGVuOgogICAgICAgICAgICByYWlzZSBFcnJvcignY2Fubm90IGNoYW5nZSBwYXJhbWV0ZXJzIGFmdGVyIHN0YXJ0aW5nIHRvIHdyaXRlJykKICAgICAgICBpZiBzYW1wd2lkdGggPCAxIG9yIHNhbXB3aWR0aCA+IDQ6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdiYWQgc2FtcGxlIHdpZHRoJykKICAgICAgICBzZWxmLl9zYW1wd2lkdGggPSBzYW1wd2lkdGgKCiAgICBkZWYgZ2V0c2FtcHdpZHRoKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9zYW1wd2lkdGg6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdzYW1wbGUgd2lkdGggbm90IHNldCcpCiAgICAgICAgcmV0dXJuIHNlbGYuX3NhbXB3aWR0aAoKICAgIGRlZiBzZXRmcmFtZXJhdGUoc2VsZiwgZnJhbWVyYXRlKToKICAgICAgICBpZiBzZWxmLl9uZnJhbWVzd3JpdHRlbjoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2Nhbm5vdCBjaGFuZ2UgcGFyYW1ldGVycyBhZnRlciBzdGFydGluZyB0byB3cml0ZScpCiAgICAgICAgaWYgZnJhbWVyYXRlIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdiYWQgZnJhbWUgcmF0ZScpCiAgICAgICAgc2VsZi5fZnJhbWVyYXRlID0gZnJhbWVyYXRlCgogICAgZGVmIGdldGZyYW1lcmF0ZShzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fZnJhbWVyYXRlOgogICAgICAgICAgICByYWlzZSBFcnJvcignZnJhbWUgcmF0ZSBub3Qgc2V0JykKICAgICAgICByZXR1cm4gc2VsZi5fZnJhbWVyYXRlCgogICAgZGVmIHNldG5mcmFtZXMoc2VsZiwgbmZyYW1lcyk6CiAgICAgICAgaWYgc2VsZi5fbmZyYW1lc3dyaXR0ZW46CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdjYW5ub3QgY2hhbmdlIHBhcmFtZXRlcnMgYWZ0ZXIgc3RhcnRpbmcgdG8gd3JpdGUnKQogICAgICAgIHNlbGYuX25mcmFtZXMgPSBuZnJhbWVzCgogICAgZGVmIGdldG5mcmFtZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX25mcmFtZXN3cml0dGVuCgogICAgZGVmIHNldGNvbXB0eXBlKHNlbGYsIGNvbXB0eXBlLCBjb21wbmFtZSk6CiAgICAgICAgaWYgc2VsZi5fbmZyYW1lc3dyaXR0ZW46CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdjYW5ub3QgY2hhbmdlIHBhcmFtZXRlcnMgYWZ0ZXIgc3RhcnRpbmcgdG8gd3JpdGUnKQogICAgICAgIGlmIGNvbXB0eXBlIG5vdCBpbiAoYidOT05FJywgYid1bGF3JywgYidVTEFXJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInYWxhdycsIGInQUxBVycsIGInRzcyMicsIGInc293dCcsIGInU09XVCcpOgogICAgICAgICAgICByYWlzZSBFcnJvcigndW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gdHlwZScpCiAgICAgICAgc2VsZi5fY29tcHR5cGUgPSBjb21wdHlwZQogICAgICAgIHNlbGYuX2NvbXBuYW1lID0gY29tcG5hbWUKCiAgICBkZWYgZ2V0Y29tcHR5cGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXB0eXBlCgogICAgZGVmIGdldGNvbXBuYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jb21wbmFtZQoKIyMgIGRlZiBzZXR2ZXJzaW9uKHNlbGYsIHZlcnNpb24pOgojIyAgICAgIGlmIHNlbGYuX25mcmFtZXN3cml0dGVuOgojIyAgICAgICAgICByYWlzZSBFcnJvciwgJ2Nhbm5vdCBjaGFuZ2UgcGFyYW1ldGVycyBhZnRlciBzdGFydGluZyB0byB3cml0ZScKIyMgICAgICBzZWxmLl92ZXJzaW9uID0gdmVyc2lvbgoKICAgIGRlZiBzZXRwYXJhbXMoc2VsZiwgcGFyYW1zKToKICAgICAgICBuY2hhbm5lbHMsIHNhbXB3aWR0aCwgZnJhbWVyYXRlLCBuZnJhbWVzLCBjb21wdHlwZSwgY29tcG5hbWUgPSBwYXJhbXMKICAgICAgICBpZiBzZWxmLl9uZnJhbWVzd3JpdHRlbjoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2Nhbm5vdCBjaGFuZ2UgcGFyYW1ldGVycyBhZnRlciBzdGFydGluZyB0byB3cml0ZScpCiAgICAgICAgaWYgY29tcHR5cGUgbm90IGluIChiJ05PTkUnLCBiJ3VsYXcnLCBiJ1VMQVcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYidhbGF3JywgYidBTEFXJywgYidHNzIyJywgYidzb3d0JywgYidTT1dUJyk6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCd1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiB0eXBlJykKICAgICAgICBzZWxmLnNldG5jaGFubmVscyhuY2hhbm5lbHMpCiAgICAgICAgc2VsZi5zZXRzYW1wd2lkdGgoc2FtcHdpZHRoKQogICAgICAgIHNlbGYuc2V0ZnJhbWVyYXRlKGZyYW1lcmF0ZSkKICAgICAgICBzZWxmLnNldG5mcmFtZXMobmZyYW1lcykKICAgICAgICBzZWxmLnNldGNvbXB0eXBlKGNvbXB0eXBlLCBjb21wbmFtZSkKCiAgICBkZWYgZ2V0cGFyYW1zKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9uY2hhbm5lbHMgb3Igbm90IHNlbGYuX3NhbXB3aWR0aCBvciBub3Qgc2VsZi5fZnJhbWVyYXRlOgogICAgICAgICAgICByYWlzZSBFcnJvcignbm90IGFsbCBwYXJhbWV0ZXJzIHNldCcpCiAgICAgICAgcmV0dXJuIF9haWZjX3BhcmFtcyhzZWxmLl9uY2hhbm5lbHMsIHNlbGYuX3NhbXB3aWR0aCwgc2VsZi5fZnJhbWVyYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmZyYW1lcywgc2VsZi5fY29tcHR5cGUsIHNlbGYuX2NvbXBuYW1lKQoKICAgIGRlZiBzZXRtYXJrKHNlbGYsIGlkLCBwb3MsIG5hbWUpOgogICAgICAgIGlmIGlkIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdtYXJrZXIgSUQgbXVzdCBiZSA+IDAnKQogICAgICAgIGlmIHBvcyA8IDA6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdtYXJrZXIgcG9zaXRpb24gbXVzdCBiZSA+PSAwJykKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBieXRlcyk6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdtYXJrZXIgbmFtZSBtdXN0IGJlIGJ5dGVzJykKICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oc2VsZi5fbWFya2VycykpOgogICAgICAgICAgICBpZiBpZCA9PSBzZWxmLl9tYXJrZXJzW2ldWzBdOgogICAgICAgICAgICAgICAgc2VsZi5fbWFya2Vyc1tpXSA9IGlkLCBwb3MsIG5hbWUKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX21hcmtlcnMuYXBwZW5kKChpZCwgcG9zLCBuYW1lKSkKCiAgICBkZWYgZ2V0bWFyayhzZWxmLCBpZCk6CiAgICAgICAgZm9yIG1hcmtlciBpbiBzZWxmLl9tYXJrZXJzOgogICAgICAgICAgICBpZiBpZCA9PSBtYXJrZXJbMF06CiAgICAgICAgICAgICAgICByZXR1cm4gbWFya2VyCiAgICAgICAgcmFpc2UgRXJyb3IoJ21hcmtlciB7MCFyfSBkb2VzIG5vdCBleGlzdCcuZm9ybWF0KGlkKSkKCiAgICBkZWYgZ2V0bWFya2VycyhzZWxmKToKICAgICAgICBpZiBsZW4oc2VsZi5fbWFya2VycykgPT0gMDoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5fbWFya2VycwoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uZnJhbWVzd3JpdHRlbgoKICAgIGRlZiB3cml0ZWZyYW1lc3JhdyhzZWxmLCBkYXRhKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgogICAgICAgICAgICBkYXRhID0gbWVtb3J5dmlldyhkYXRhKS5jYXN0KCdCJykKICAgICAgICBzZWxmLl9lbnN1cmVfaGVhZGVyX3dyaXR0ZW4obGVuKGRhdGEpKQogICAgICAgIG5mcmFtZXMgPSBsZW4oZGF0YSkgLy8gKHNlbGYuX3NhbXB3aWR0aCAqIHNlbGYuX25jaGFubmVscykKICAgICAgICBpZiBzZWxmLl9jb252ZXJ0OgogICAgICAgICAgICBkYXRhID0gc2VsZi5fY29udmVydChkYXRhKQogICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoZGF0YSkKICAgICAgICBzZWxmLl9uZnJhbWVzd3JpdHRlbiA9IHNlbGYuX25mcmFtZXN3cml0dGVuICsgbmZyYW1lcwogICAgICAgIHNlbGYuX2RhdGF3cml0dGVuID0gc2VsZi5fZGF0YXdyaXR0ZW4gKyBsZW4oZGF0YSkKCiAgICBkZWYgd3JpdGVmcmFtZXMoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi53cml0ZWZyYW1lc3JhdyhkYXRhKQogICAgICAgIGlmIHNlbGYuX25mcmFtZXN3cml0dGVuICE9IHNlbGYuX25mcmFtZXMgb3IgXAogICAgICAgICAgICAgIHNlbGYuX2RhdGFsZW5ndGggIT0gc2VsZi5fZGF0YXdyaXR0ZW46CiAgICAgICAgICAgIHNlbGYuX3BhdGNoaGVhZGVyKCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fZmlsZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2Vuc3VyZV9oZWFkZXJfd3JpdHRlbigwKQogICAgICAgICAgICBpZiBzZWxmLl9kYXRhd3JpdHRlbiAmIDE6CiAgICAgICAgICAgICAgICAjIHF1aWNrIHBhZCB0byBldmVuIHNpemUKICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoYidceDAwJykKICAgICAgICAgICAgICAgIHNlbGYuX2RhdGF3cml0dGVuID0gc2VsZi5fZGF0YXdyaXR0ZW4gKyAxCiAgICAgICAgICAgIHNlbGYuX3dyaXRlbWFya2VycygpCiAgICAgICAgICAgIGlmIHNlbGYuX25mcmFtZXN3cml0dGVuICE9IHNlbGYuX25mcmFtZXMgb3IgXAogICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhbGVuZ3RoICE9IHNlbGYuX2RhdGF3cml0dGVuIG9yIFwKICAgICAgICAgICAgICAgICAgc2VsZi5fbWFya2xlbmd0aDoKICAgICAgICAgICAgICAgIHNlbGYuX3BhdGNoaGVhZGVyKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIFByZXZlbnQgcmVmIGN5Y2xlcwogICAgICAgICAgICBzZWxmLl9jb252ZXJ0ID0gTm9uZQogICAgICAgICAgICBmID0gc2VsZi5fZmlsZQogICAgICAgICAgICBzZWxmLl9maWxlID0gTm9uZQogICAgICAgICAgICBmLmNsb3NlKCkKCiAgICAjCiAgICAjIEludGVybmFsIG1ldGhvZHMuCiAgICAjCgogICAgZGVmIF9saW4yYWxhdyhzZWxmLCBkYXRhKToKICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICBpbXBvcnQgYXVkaW9vcAogICAgICAgIHJldHVybiBhdWRpb29wLmxpbjJhbGF3KGRhdGEsIDIpCgogICAgZGVmIF9saW4ydWxhdyhzZWxmLCBkYXRhKToKICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICBpbXBvcnQgYXVkaW9vcAogICAgICAgIHJldHVybiBhdWRpb29wLmxpbjJ1bGF3KGRhdGEsIDIpCgogICAgZGVmIF9saW4yYWRwY20oc2VsZiwgZGF0YSk6CiAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgaW1wb3J0IGF1ZGlvb3AKICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2FkcGNtc3RhdGUnKToKICAgICAgICAgICAgc2VsZi5fYWRwY21zdGF0ZSA9IE5vbmUKICAgICAgICBkYXRhLCBzZWxmLl9hZHBjbXN0YXRlID0gYXVkaW9vcC5saW4yYWRwY20oZGF0YSwgMiwgc2VsZi5fYWRwY21zdGF0ZSkKICAgICAgICByZXR1cm4gZGF0YQoKICAgIGRlZiBfbGluMnNvd3Qoc2VsZiwgZGF0YSk6CiAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgaW1wb3J0IGF1ZGlvb3AKICAgICAgICByZXR1cm4gYXVkaW9vcC5ieXRlc3dhcChkYXRhLCAyKQoKICAgIGRlZiBfZW5zdXJlX2hlYWRlcl93cml0dGVuKHNlbGYsIGRhdGFzaXplKToKICAgICAgICBpZiBub3Qgc2VsZi5fbmZyYW1lc3dyaXR0ZW46CiAgICAgICAgICAgIGlmIHNlbGYuX2NvbXB0eXBlIGluIChiJ1VMQVcnLCBiJ3VsYXcnLAogICAgICAgICAgICAgICAgYidBTEFXJywgYidhbGF3JywgYidHNzIyJywKICAgICAgICAgICAgICAgIGInc293dCcsIGInU09XVCcpOgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NhbXB3aWR0aDoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9zYW1wd2lkdGggPSAyCiAgICAgICAgICAgICAgICBpZiBzZWxmLl9zYW1wd2lkdGggIT0gMjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcignc2FtcGxlIHdpZHRoIG11c3QgYmUgMiB3aGVuIGNvbXByZXNzaW5nICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCB1bGF3L1VMQVcsIGFsYXcvQUxBVywgc293dC9TT1dUICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3IgRzcuMjIgKEFEUENNKScpCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9uY2hhbm5lbHM6CiAgICAgICAgICAgICAgICByYWlzZSBFcnJvcignIyBjaGFubmVscyBub3Qgc3BlY2lmaWVkJykKICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NhbXB3aWR0aDoKICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCdzYW1wbGUgd2lkdGggbm90IHNwZWNpZmllZCcpCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9mcmFtZXJhdGU6CiAgICAgICAgICAgICAgICByYWlzZSBFcnJvcignc2FtcGxpbmcgcmF0ZSBub3Qgc3BlY2lmaWVkJykKICAgICAgICAgICAgc2VsZi5fd3JpdGVfaGVhZGVyKGRhdGFzaXplKQoKICAgIGRlZiBfaW5pdF9jb21wcmVzc2lvbihzZWxmKToKICAgICAgICBpZiBzZWxmLl9jb21wdHlwZSA9PSBiJ0c3MjInOgogICAgICAgICAgICBzZWxmLl9jb252ZXJ0ID0gc2VsZi5fbGluMmFkcGNtCiAgICAgICAgZWxpZiBzZWxmLl9jb21wdHlwZSBpbiAoYid1bGF3JywgYidVTEFXJyk6CiAgICAgICAgICAgIHNlbGYuX2NvbnZlcnQgPSBzZWxmLl9saW4ydWxhdwogICAgICAgIGVsaWYgc2VsZi5fY29tcHR5cGUgaW4gKGInYWxhdycsIGInQUxBVycpOgogICAgICAgICAgICBzZWxmLl9jb252ZXJ0ID0gc2VsZi5fbGluMmFsYXcKICAgICAgICBlbGlmIHNlbGYuX2NvbXB0eXBlIGluIChiJ3Nvd3QnLCBiJ1NPV1QnKToKICAgICAgICAgICAgc2VsZi5fY29udmVydCA9IHNlbGYuX2xpbjJzb3d0CgogICAgZGVmIF93cml0ZV9oZWFkZXIoc2VsZiwgaW5pdGxlbmd0aCk6CiAgICAgICAgaWYgc2VsZi5fYWlmYyBhbmQgc2VsZi5fY29tcHR5cGUgIT0gYidOT05FJzoKICAgICAgICAgICAgc2VsZi5faW5pdF9jb21wcmVzc2lvbigpCiAgICAgICAgc2VsZi5fZmlsZS53cml0ZShiJ0ZPUk0nKQogICAgICAgIGlmIG5vdCBzZWxmLl9uZnJhbWVzOgogICAgICAgICAgICBzZWxmLl9uZnJhbWVzID0gaW5pdGxlbmd0aCAvLyAoc2VsZi5fbmNoYW5uZWxzICogc2VsZi5fc2FtcHdpZHRoKQogICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSBzZWxmLl9uZnJhbWVzICogc2VsZi5fbmNoYW5uZWxzICogc2VsZi5fc2FtcHdpZHRoCiAgICAgICAgaWYgc2VsZi5fZGF0YWxlbmd0aCAmIDE6CiAgICAgICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSBzZWxmLl9kYXRhbGVuZ3RoICsgMQogICAgICAgIGlmIHNlbGYuX2FpZmM6CiAgICAgICAgICAgIGlmIHNlbGYuX2NvbXB0eXBlIGluIChiJ3VsYXcnLCBiJ1VMQVcnLCBiJ2FsYXcnLCBiJ0FMQVcnKToKICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSBzZWxmLl9kYXRhbGVuZ3RoIC8vIDIKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RhdGFsZW5ndGggJiAxOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSBzZWxmLl9kYXRhbGVuZ3RoICsgMQogICAgICAgICAgICBlbGlmIHNlbGYuX2NvbXB0eXBlID09IGInRzcyMic6CiAgICAgICAgICAgICAgICBzZWxmLl9kYXRhbGVuZ3RoID0gKHNlbGYuX2RhdGFsZW5ndGggKyAzKSAvLyA0CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9kYXRhbGVuZ3RoICYgMToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhbGVuZ3RoID0gc2VsZi5fZGF0YWxlbmd0aCArIDEKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2Zvcm1fbGVuZ3RoX3BvcyA9IHNlbGYuX2ZpbGUudGVsbCgpCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgICAgIHNlbGYuX2Zvcm1fbGVuZ3RoX3BvcyA9IE5vbmUKICAgICAgICBjb21tbGVuZ3RoID0gc2VsZi5fd3JpdGVfZm9ybV9sZW5ndGgoc2VsZi5fZGF0YWxlbmd0aCkKICAgICAgICBpZiBzZWxmLl9haWZjOgogICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGInQUlGQycpCiAgICAgICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoYidGVkVSJykKICAgICAgICAgICAgX3dyaXRlX3Vsb25nKHNlbGYuX2ZpbGUsIDQpCiAgICAgICAgICAgIF93cml0ZV91bG9uZyhzZWxmLl9maWxlLCBzZWxmLl92ZXJzaW9uKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoYidBSUZGJykKICAgICAgICBzZWxmLl9maWxlLndyaXRlKGInQ09NTScpCiAgICAgICAgX3dyaXRlX3Vsb25nKHNlbGYuX2ZpbGUsIGNvbW1sZW5ndGgpCiAgICAgICAgX3dyaXRlX3Nob3J0KHNlbGYuX2ZpbGUsIHNlbGYuX25jaGFubmVscykKICAgICAgICBpZiBzZWxmLl9mb3JtX2xlbmd0aF9wb3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX25mcmFtZXNfcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKICAgICAgICBfd3JpdGVfdWxvbmcoc2VsZi5fZmlsZSwgc2VsZi5fbmZyYW1lcykKICAgICAgICBpZiBzZWxmLl9jb21wdHlwZSBpbiAoYidVTEFXJywgYid1bGF3JywgYidBTEFXJywgYidhbGF3JywgYidHNzIyJyk6CiAgICAgICAgICAgIF93cml0ZV9zaG9ydChzZWxmLl9maWxlLCA4KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIF93cml0ZV9zaG9ydChzZWxmLl9maWxlLCBzZWxmLl9zYW1wd2lkdGggKiA4KQogICAgICAgIF93cml0ZV9mbG9hdChzZWxmLl9maWxlLCBzZWxmLl9mcmFtZXJhdGUpCiAgICAgICAgaWYgc2VsZi5fYWlmYzoKICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShzZWxmLl9jb21wdHlwZSkKICAgICAgICAgICAgX3dyaXRlX3N0cmluZyhzZWxmLl9maWxlLCBzZWxmLl9jb21wbmFtZSkKICAgICAgICBzZWxmLl9maWxlLndyaXRlKGInU1NORCcpCiAgICAgICAgaWYgc2VsZi5fZm9ybV9sZW5ndGhfcG9zIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9zc25kX2xlbmd0aF9wb3MgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgIF93cml0ZV91bG9uZyhzZWxmLl9maWxlLCBzZWxmLl9kYXRhbGVuZ3RoICsgOCkKICAgICAgICBfd3JpdGVfdWxvbmcoc2VsZi5fZmlsZSwgMCkKICAgICAgICBfd3JpdGVfdWxvbmcoc2VsZi5fZmlsZSwgMCkKCiAgICBkZWYgX3dyaXRlX2Zvcm1fbGVuZ3RoKHNlbGYsIGRhdGFsZW5ndGgpOgogICAgICAgIGlmIHNlbGYuX2FpZmM6CiAgICAgICAgICAgIGNvbW1sZW5ndGggPSAxOCArIDUgKyBsZW4oc2VsZi5fY29tcG5hbWUpCiAgICAgICAgICAgIGlmIGNvbW1sZW5ndGggJiAxOgogICAgICAgICAgICAgICAgY29tbWxlbmd0aCA9IGNvbW1sZW5ndGggKyAxCiAgICAgICAgICAgIHZlcnNsZW5ndGggPSAxMgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbW1sZW5ndGggPSAxOAogICAgICAgICAgICB2ZXJzbGVuZ3RoID0gMAogICAgICAgIF93cml0ZV91bG9uZyhzZWxmLl9maWxlLCA0ICsgdmVyc2xlbmd0aCArIHNlbGYuX21hcmtsZW5ndGggKyBcCiAgICAgICAgICAgICAgICAgICAgIDggKyBjb21tbGVuZ3RoICsgMTYgKyBkYXRhbGVuZ3RoKQogICAgICAgIHJldHVybiBjb21tbGVuZ3RoCgogICAgZGVmIF9wYXRjaGhlYWRlcihzZWxmKToKICAgICAgICBjdXJwb3MgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgIGlmIHNlbGYuX2RhdGF3cml0dGVuICYgMToKICAgICAgICAgICAgZGF0YWxlbmd0aCA9IHNlbGYuX2RhdGF3cml0dGVuICsgMQogICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGInXHgwMCcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YWxlbmd0aCA9IHNlbGYuX2RhdGF3cml0dGVuCiAgICAgICAgaWYgZGF0YWxlbmd0aCA9PSBzZWxmLl9kYXRhbGVuZ3RoIGFuZCBcCiAgICAgICAgICAgICAgc2VsZi5fbmZyYW1lcyA9PSBzZWxmLl9uZnJhbWVzd3JpdHRlbiBhbmQgXAogICAgICAgICAgICAgIHNlbGYuX21hcmtsZW5ndGggPT0gMDoKICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKGN1cnBvcywgMCkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX2Zvcm1fbGVuZ3RoX3BvcywgMCkKICAgICAgICBkdW1teSA9IHNlbGYuX3dyaXRlX2Zvcm1fbGVuZ3RoKGRhdGFsZW5ndGgpCiAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX25mcmFtZXNfcG9zLCAwKQogICAgICAgIF93cml0ZV91bG9uZyhzZWxmLl9maWxlLCBzZWxmLl9uZnJhbWVzd3JpdHRlbikKICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fc3NuZF9sZW5ndGhfcG9zLCAwKQogICAgICAgIF93cml0ZV91bG9uZyhzZWxmLl9maWxlLCBkYXRhbGVuZ3RoICsgOCkKICAgICAgICBzZWxmLl9maWxlLnNlZWsoY3VycG9zLCAwKQogICAgICAgIHNlbGYuX25mcmFtZXMgPSBzZWxmLl9uZnJhbWVzd3JpdHRlbgogICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSBkYXRhbGVuZ3RoCgogICAgZGVmIF93cml0ZW1hcmtlcnMoc2VsZik6CiAgICAgICAgaWYgbGVuKHNlbGYuX21hcmtlcnMpID09IDA6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoYidNQVJLJykKICAgICAgICBsZW5ndGggPSAyCiAgICAgICAgZm9yIG1hcmtlciBpbiBzZWxmLl9tYXJrZXJzOgogICAgICAgICAgICBpZCwgcG9zLCBuYW1lID0gbWFya2VyCiAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCArIGxlbihuYW1lKSArIDEgKyA2CiAgICAgICAgICAgIGlmIGxlbihuYW1lKSAmIDEgPT0gMDoKICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCArIDEKICAgICAgICBfd3JpdGVfdWxvbmcoc2VsZi5fZmlsZSwgbGVuZ3RoKQogICAgICAgIHNlbGYuX21hcmtsZW5ndGggPSBsZW5ndGggKyA4CiAgICAgICAgX3dyaXRlX3Nob3J0KHNlbGYuX2ZpbGUsIGxlbihzZWxmLl9tYXJrZXJzKSkKICAgICAgICBmb3IgbWFya2VyIGluIHNlbGYuX21hcmtlcnM6CiAgICAgICAgICAgIGlkLCBwb3MsIG5hbWUgPSBtYXJrZXIKICAgICAgICAgICAgX3dyaXRlX3Nob3J0KHNlbGYuX2ZpbGUsIGlkKQogICAgICAgICAgICBfd3JpdGVfdWxvbmcoc2VsZi5fZmlsZSwgcG9zKQogICAgICAgICAgICBfd3JpdGVfc3RyaW5nKHNlbGYuX2ZpbGUsIG5hbWUpCgpkZWYgb3BlbihmLCBtb2RlPU5vbmUpOgogICAgaWYgbW9kZSBpcyBOb25lOgogICAgICAgIGlmIGhhc2F0dHIoZiwgJ21vZGUnKToKICAgICAgICAgICAgbW9kZSA9IGYubW9kZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1vZGUgPSAncmInCiAgICBpZiBtb2RlIGluICgncicsICdyYicpOgogICAgICAgIHJldHVybiBBaWZjX3JlYWQoZikKICAgIGVsaWYgbW9kZSBpbiAoJ3cnLCAnd2InKToKICAgICAgICByZXR1cm4gQWlmY193cml0ZShmKQogICAgZWxzZToKICAgICAgICByYWlzZSBFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ3JiJywgJ3cnLCBvciAnd2InIikKCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgaW1wb3J0IHN5cwogICAgaWYgbm90IHN5cy5hcmd2WzE6XToKICAgICAgICBzeXMuYXJndi5hcHBlbmQoJy91c3IvZGVtb3MvZGF0YS9hdWRpby9iYWNoLmFpZmYnKQogICAgZm4gPSBzeXMuYXJndlsxXQogICAgd2l0aCBvcGVuKGZuLCAncicpIGFzIGY6CiAgICAgICAgcHJpbnQoIlJlYWRpbmciLCBmbikKICAgICAgICBwcmludCgibmNoYW5uZWxzID0iLCBmLmdldG5jaGFubmVscygpKQogICAgICAgIHByaW50KCJuZnJhbWVzICAgPSIsIGYuZ2V0bmZyYW1lcygpKQogICAgICAgIHByaW50KCJzYW1wd2lkdGggPSIsIGYuZ2V0c2FtcHdpZHRoKCkpCiAgICAgICAgcHJpbnQoImZyYW1lcmF0ZSA9IiwgZi5nZXRmcmFtZXJhdGUoKSkKICAgICAgICBwcmludCgiY29tcHR5cGUgID0iLCBmLmdldGNvbXB0eXBlKCkpCiAgICAgICAgcHJpbnQoImNvbXBuYW1lICA9IiwgZi5nZXRjb21wbmFtZSgpKQogICAgICAgIGlmIHN5cy5hcmd2WzI6XToKICAgICAgICAgICAgZ24gPSBzeXMuYXJndlsyXQogICAgICAgICAgICBwcmludCgiV3JpdGluZyIsIGduKQogICAgICAgICAgICB3aXRoIG9wZW4oZ24sICd3JykgYXMgZzoKICAgICAgICAgICAgICAgIGcuc2V0cGFyYW1zKGYuZ2V0cGFyYW1zKCkpCiAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWRmcmFtZXMoMTAyNCkKICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBnLndyaXRlZnJhbWVzKGRhdGEpCiAgICAgICAgICAgIHByaW50KCJEb25lLiIpClBLAwQUAAAAAAACIKNW3f3uhfQBAAD0AQAADgAAAGFudGlncmF2aXR5LnB5CmltcG9ydCB3ZWJicm93c2VyCmltcG9ydCBoYXNobGliCgp3ZWJicm93c2VyLm9wZW4oImh0dHBzOi8veGtjZC5jb20vMzUzLyIpCgpkZWYgZ2VvaGFzaChsYXRpdHVkZSwgbG9uZ2l0dWRlLCBkYXRlZG93KToKICAgICcnJ0NvbXB1dGUgZ2VvaGFzaCgpIHVzaW5nIHRoZSBNdW5yb2UgYWxnb3JpdGhtLgoKICAgID4+PiBnZW9oYXNoKDM3LjQyMTU0MiwgLTEyMi4wODU1ODksIGInMjAwNS0wNS0yNi0xMDQ1OC42OCcpCiAgICAzNy44NTc3MTMgLTEyMi41NDQ1NDMKCiAgICAnJycKICAgICMgaHR0cHM6Ly94a2NkLmNvbS80MjYvCiAgICBoID0gaGFzaGxpYi5tZDUoZGF0ZWRvdywgdXNlZGZvcnNlY3VyaXR5PUZhbHNlKS5oZXhkaWdlc3QoKQogICAgcCwgcSA9IFsoJyVmJyAlIGZsb2F0LmZyb21oZXgoJzAuJyArIHgpKSBmb3IgeCBpbiAoaFs6MTZdLCBoWzE2OjMyXSldCiAgICBwcmludCgnJWQlcyAlZCVzJyAlIChsYXRpdHVkZSwgcFsxOl0sIGxvbmdpdHVkZSwgcVsxOl0pKQpQSwMEFAAAAAAAAiCjVmbCdnr0gwEA9IMBAAsAAABhcmdwYXJzZS5weSMgQXV0aG9yOiBTdGV2ZW4gSi4gQmV0aGFyZCA8c3RldmVuLmJldGhhcmRAZ21haWwuY29tPi4KIyBOZXcgbWFpbnRhaW5lciBhcyBvZiAyOSBBdWd1c3QgMjAxOTogIFJheW1vbmQgSGV0dGluZ2VyIDxyYXltb25kLmhldHRpbmdlckBnbWFpbC5jb20+CgoiIiJDb21tYW5kLWxpbmUgcGFyc2luZyBsaWJyYXJ5CgpUaGlzIG1vZHVsZSBpcyBhbiBvcHRwYXJzZS1pbnNwaXJlZCBjb21tYW5kLWxpbmUgcGFyc2luZyBsaWJyYXJ5IHRoYXQ6CgogICAgLSBoYW5kbGVzIGJvdGggb3B0aW9uYWwgYW5kIHBvc2l0aW9uYWwgYXJndW1lbnRzCiAgICAtIHByb2R1Y2VzIGhpZ2hseSBpbmZvcm1hdGl2ZSB1c2FnZSBtZXNzYWdlcwogICAgLSBzdXBwb3J0cyBwYXJzZXJzIHRoYXQgZGlzcGF0Y2ggdG8gc3ViLXBhcnNlcnMKClRoZSBmb2xsb3dpbmcgaXMgYSBzaW1wbGUgdXNhZ2UgZXhhbXBsZSB0aGF0IHN1bXMgaW50ZWdlcnMgZnJvbSB0aGUKY29tbWFuZC1saW5lIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCB0byBhIGZpbGU6OgoKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAogICAgICAgIGRlc2NyaXB0aW9uPSdzdW0gdGhlIGludGVnZXJzIGF0IHRoZSBjb21tYW5kIGxpbmUnKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAnaW50ZWdlcnMnLCBtZXRhdmFyPSdpbnQnLCBuYXJncz0nKycsIHR5cGU9aW50LAogICAgICAgIGhlbHA9J2FuIGludGVnZXIgdG8gYmUgc3VtbWVkJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgJy0tbG9nJywgZGVmYXVsdD1zeXMuc3Rkb3V0LCB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCd3JyksCiAgICAgICAgaGVscD0ndGhlIGZpbGUgd2hlcmUgdGhlIHN1bSBzaG91bGQgYmUgd3JpdHRlbicpCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgYXJncy5sb2cud3JpdGUoJyVzJyAlIHN1bShhcmdzLmludGVnZXJzKSkKICAgIGFyZ3MubG9nLmNsb3NlKCkKClRoZSBtb2R1bGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBwdWJsaWMgY2xhc3NlczoKCiAgICAtIEFyZ3VtZW50UGFyc2VyIC0tIFRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBjb21tYW5kLWxpbmUgcGFyc2luZy4gQXMgdGhlCiAgICAgICAgZXhhbXBsZSBhYm92ZSBzaG93cywgdGhlIGFkZF9hcmd1bWVudCgpIG1ldGhvZCBpcyB1c2VkIHRvIHBvcHVsYXRlCiAgICAgICAgdGhlIHBhcnNlciB3aXRoIGFjdGlvbnMgZm9yIG9wdGlvbmFsIGFuZCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gVGhlbgogICAgICAgIHRoZSBwYXJzZV9hcmdzKCkgbWV0aG9kIGlzIGludm9rZWQgdG8gY29udmVydCB0aGUgYXJncyBhdCB0aGUKICAgICAgICBjb21tYW5kLWxpbmUgaW50byBhbiBvYmplY3Qgd2l0aCBhdHRyaWJ1dGVzLgoKICAgIC0gQXJndW1lbnRFcnJvciAtLSBUaGUgZXhjZXB0aW9uIHJhaXNlZCBieSBBcmd1bWVudFBhcnNlciBvYmplY3RzIHdoZW4KICAgICAgICB0aGVyZSBhcmUgZXJyb3JzIHdpdGggdGhlIHBhcnNlcidzIGFjdGlvbnMuIEVycm9ycyByYWlzZWQgd2hpbGUKICAgICAgICBwYXJzaW5nIHRoZSBjb21tYW5kLWxpbmUgYXJlIGNhdWdodCBieSBBcmd1bWVudFBhcnNlciBhbmQgZW1pdHRlZAogICAgICAgIGFzIGNvbW1hbmQtbGluZSBtZXNzYWdlcy4KCiAgICAtIEZpbGVUeXBlIC0tIEEgZmFjdG9yeSBmb3IgZGVmaW5pbmcgdHlwZXMgb2YgZmlsZXMgdG8gYmUgY3JlYXRlZC4gQXMgdGhlCiAgICAgICAgZXhhbXBsZSBhYm92ZSBzaG93cywgaW5zdGFuY2VzIG9mIEZpbGVUeXBlIGFyZSB0eXBpY2FsbHkgcGFzc2VkIGFzCiAgICAgICAgdGhlIHR5cGU9IGFyZ3VtZW50IG9mIGFkZF9hcmd1bWVudCgpIGNhbGxzLgoKICAgIC0gQWN0aW9uIC0tIFRoZSBiYXNlIGNsYXNzIGZvciBwYXJzZXIgYWN0aW9ucy4gVHlwaWNhbGx5IGFjdGlvbnMgYXJlCiAgICAgICAgc2VsZWN0ZWQgYnkgcGFzc2luZyBzdHJpbmdzIGxpa2UgJ3N0b3JlX3RydWUnIG9yICdhcHBlbmRfY29uc3QnIHRvCiAgICAgICAgdGhlIGFjdGlvbj0gYXJndW1lbnQgb2YgYWRkX2FyZ3VtZW50KCkuIEhvd2V2ZXIsIGZvciBncmVhdGVyCiAgICAgICAgY3VzdG9taXphdGlvbiBvZiBBcmd1bWVudFBhcnNlciBhY3Rpb25zLCBzdWJjbGFzc2VzIG9mIEFjdGlvbiBtYXkKICAgICAgICBiZSBkZWZpbmVkIGFuZCBwYXNzZWQgYXMgdGhlIGFjdGlvbj0gYXJndW1lbnQuCgogICAgLSBIZWxwRm9ybWF0dGVyLCBSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIsIFJhd1RleHRIZWxwRm9ybWF0dGVyLAogICAgICAgIEFyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyIC0tIEZvcm1hdHRlciBjbGFzc2VzIHdoaWNoCiAgICAgICAgbWF5IGJlIHBhc3NlZCBhcyB0aGUgZm9ybWF0dGVyX2NsYXNzPSBhcmd1bWVudCB0byB0aGUKICAgICAgICBBcmd1bWVudFBhcnNlciBjb25zdHJ1Y3Rvci4gSGVscEZvcm1hdHRlciBpcyB0aGUgZGVmYXVsdCwKICAgICAgICBSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIgYW5kIFJhd1RleHRIZWxwRm9ybWF0dGVyIHRlbGwgdGhlIHBhcnNlcgogICAgICAgIG5vdCB0byBjaGFuZ2UgdGhlIGZvcm1hdHRpbmcgZm9yIGhlbHAgdGV4dCwgYW5kCiAgICAgICAgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXIgYWRkcyBpbmZvcm1hdGlvbiBhYm91dCBhcmd1bWVudCBkZWZhdWx0cwogICAgICAgIHRvIHRoZSBoZWxwLgoKQWxsIG90aGVyIGNsYXNzZXMgaW4gdGhpcyBtb2R1bGUgYXJlIGNvbnNpZGVyZWQgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKEFsc28gbm90ZSB0aGF0IEhlbHBGb3JtYXR0ZXIgYW5kIFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlciBhcmUgb25seQpjb25zaWRlcmVkIHB1YmxpYyBhcyBvYmplY3QgbmFtZXMgLS0gdGhlIEFQSSBvZiB0aGUgZm9ybWF0dGVyIG9iamVjdHMgaXMKc3RpbGwgY29uc2lkZXJlZCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuKQoiIiIKCl9fdmVyc2lvbl9fID0gJzEuMScKX19hbGxfXyA9IFsKICAgICdBcmd1bWVudFBhcnNlcicsCiAgICAnQXJndW1lbnRFcnJvcicsCiAgICAnQXJndW1lbnRUeXBlRXJyb3InLAogICAgJ0Jvb2xlYW5PcHRpb25hbEFjdGlvbicsCiAgICAnRmlsZVR5cGUnLAogICAgJ0hlbHBGb3JtYXR0ZXInLAogICAgJ0FyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyJywKICAgICdSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXInLAogICAgJ1Jhd1RleHRIZWxwRm9ybWF0dGVyJywKICAgICdNZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXInLAogICAgJ05hbWVzcGFjZScsCiAgICAnQWN0aW9uJywKICAgICdPTkVfT1JfTU9SRScsCiAgICAnT1BUSU9OQUwnLAogICAgJ1BBUlNFUicsCiAgICAnUkVNQUlOREVSJywKICAgICdTVVBQUkVTUycsCiAgICAnWkVST19PUl9NT1JFJywKXQoKCmltcG9ydCBvcyBhcyBfb3MKaW1wb3J0IHJlIGFzIF9yZQppbXBvcnQgc3lzIGFzIF9zeXMKCmltcG9ydCB3YXJuaW5ncwoKZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0IGFzIF8sIG5nZXR0ZXh0CgpTVVBQUkVTUyA9ICc9PVNVUFBSRVNTPT0nCgpPUFRJT05BTCA9ICc/JwpaRVJPX09SX01PUkUgPSAnKicKT05FX09SX01PUkUgPSAnKycKUEFSU0VSID0gJ0EuLi4nClJFTUFJTkRFUiA9ICcuLi4nCl9VTlJFQ09HTklaRURfQVJHU19BVFRSID0gJ191bnJlY29nbml6ZWRfYXJncycKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBVdGlsaXR5IGZ1bmN0aW9ucyBhbmQgY2xhc3NlcwojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpjbGFzcyBfQXR0cmlidXRlSG9sZGVyKG9iamVjdCk6CiAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIHRoYXQgcHJvdmlkZXMgX19yZXByX18uCgogICAgVGhlIF9fcmVwcl9fIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQ6OgogICAgICAgIENsYXNzTmFtZShhdHRyPW5hbWUsIGF0dHI9bmFtZSwgLi4uKQogICAgVGhlIGF0dHJpYnV0ZXMgYXJlIGRldGVybWluZWQgZWl0aGVyIGJ5IGEgY2xhc3MtbGV2ZWwgYXR0cmlidXRlLAogICAgJ19rd2FyZ19uYW1lcycsIG9yIGJ5IGluc3BlY3RpbmcgdGhlIGluc3RhbmNlIF9fZGljdF9fLgogICAgIiIiCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHR5cGVfbmFtZSA9IHR5cGUoc2VsZikuX19uYW1lX18KICAgICAgICBhcmdfc3RyaW5ncyA9IFtdCiAgICAgICAgc3Rhcl9hcmdzID0ge30KICAgICAgICBmb3IgYXJnIGluIHNlbGYuX2dldF9hcmdzKCk6CiAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZChyZXByKGFyZykpCiAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX2dldF9rd2FyZ3MoKToKICAgICAgICAgICAgaWYgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHN0YXJfYXJnc1tuYW1lXSA9IHZhbHVlCiAgICAgICAgaWYgc3Rhcl9hcmdzOgogICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyoqJXMnICUgcmVwcihzdGFyX2FyZ3MpKQogICAgICAgIHJldHVybiAnJXMoJXMpJyAlICh0eXBlX25hbWUsICcsICcuam9pbihhcmdfc3RyaW5ncykpCgogICAgZGVmIF9nZXRfa3dhcmdzKHNlbGYpOgogICAgICAgIHJldHVybiBsaXN0KHNlbGYuX19kaWN0X18uaXRlbXMoKSkKCiAgICBkZWYgX2dldF9hcmdzKHNlbGYpOgogICAgICAgIHJldHVybiBbXQoKCmRlZiBfY29weV9pdGVtcyhpdGVtcyk6CiAgICBpZiBpdGVtcyBpcyBOb25lOgogICAgICAgIHJldHVybiBbXQogICAgIyBUaGUgY29weSBtb2R1bGUgaXMgdXNlZCBvbmx5IGluIHRoZSAnYXBwZW5kJyBhbmQgJ2FwcGVuZF9jb25zdCcKICAgICMgYWN0aW9ucywgYW5kIGl0IGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGRlZmF1bHQgdmFsdWUgaXNuJ3QgYSBsaXN0LgogICAgIyBEZWxheSBpdHMgaW1wb3J0IGZvciBzcGVlZGluZyB1cCB0aGUgY29tbW9uIGNhc2UuCiAgICBpZiB0eXBlKGl0ZW1zKSBpcyBsaXN0OgogICAgICAgIHJldHVybiBpdGVtc1s6XQogICAgaW1wb3J0IGNvcHkKICAgIHJldHVybiBjb3B5LmNvcHkoaXRlbXMpCgoKIyA9PT09PT09PT09PT09PT0KIyBGb3JtYXR0aW5nIEhlbHAKIyA9PT09PT09PT09PT09PT0KCgpjbGFzcyBIZWxwRm9ybWF0dGVyKG9iamVjdCk6CiAgICAiIiJGb3JtYXR0ZXIgZm9yIGdlbmVyYXRpbmcgdXNhZ2UgbWVzc2FnZXMgYW5kIGFyZ3VtZW50IGhlbHAgc3RyaW5ncy4KCiAgICBPbmx5IHRoZSBuYW1lIG9mIHRoaXMgY2xhc3MgaXMgY29uc2lkZXJlZCBhIHB1YmxpYyBBUEkuIEFsbCB0aGUgbWV0aG9kcwogICAgcHJvdmlkZWQgYnkgdGhlIGNsYXNzIGFyZSBjb25zaWRlcmVkIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgIHByb2csCiAgICAgICAgICAgICAgICAgaW5kZW50X2luY3JlbWVudD0yLAogICAgICAgICAgICAgICAgIG1heF9oZWxwX3Bvc2l0aW9uPTI0LAogICAgICAgICAgICAgICAgIHdpZHRoPU5vbmUpOgoKICAgICAgICAjIGRlZmF1bHQgc2V0dGluZyBmb3Igd2lkdGgKICAgICAgICBpZiB3aWR0aCBpcyBOb25lOgogICAgICAgICAgICBpbXBvcnQgc2h1dGlsCiAgICAgICAgICAgIHdpZHRoID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKCkuY29sdW1ucwogICAgICAgICAgICB3aWR0aCAtPSAyCgogICAgICAgIHNlbGYuX3Byb2cgPSBwcm9nCiAgICAgICAgc2VsZi5faW5kZW50X2luY3JlbWVudCA9IGluZGVudF9pbmNyZW1lbnQKICAgICAgICBzZWxmLl9tYXhfaGVscF9wb3NpdGlvbiA9IG1pbihtYXhfaGVscF9wb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgod2lkdGggLSAyMCwgaW5kZW50X2luY3JlbWVudCAqIDIpKQogICAgICAgIHNlbGYuX3dpZHRoID0gd2lkdGgKCiAgICAgICAgc2VsZi5fY3VycmVudF9pbmRlbnQgPSAwCiAgICAgICAgc2VsZi5fbGV2ZWwgPSAwCiAgICAgICAgc2VsZi5fYWN0aW9uX21heF9sZW5ndGggPSAwCgogICAgICAgIHNlbGYuX3Jvb3Rfc2VjdGlvbiA9IHNlbGYuX1NlY3Rpb24oc2VsZiwgTm9uZSkKICAgICAgICBzZWxmLl9jdXJyZW50X3NlY3Rpb24gPSBzZWxmLl9yb290X3NlY3Rpb24KCiAgICAgICAgc2VsZi5fd2hpdGVzcGFjZV9tYXRjaGVyID0gX3JlLmNvbXBpbGUocidccysnLCBfcmUuQVNDSUkpCiAgICAgICAgc2VsZi5fbG9uZ19icmVha19tYXRjaGVyID0gX3JlLmNvbXBpbGUocidcblxuXG4rJykKCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICMgU2VjdGlvbiBhbmQgaW5kZW50YXRpb24gbWV0aG9kcwogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBkZWYgX2luZGVudChzZWxmKToKICAgICAgICBzZWxmLl9jdXJyZW50X2luZGVudCArPSBzZWxmLl9pbmRlbnRfaW5jcmVtZW50CiAgICAgICAgc2VsZi5fbGV2ZWwgKz0gMQoKICAgIGRlZiBfZGVkZW50KHNlbGYpOgogICAgICAgIHNlbGYuX2N1cnJlbnRfaW5kZW50IC09IHNlbGYuX2luZGVudF9pbmNyZW1lbnQKICAgICAgICBhc3NlcnQgc2VsZi5fY3VycmVudF9pbmRlbnQgPj0gMCwgJ0luZGVudCBkZWNyZWFzZWQgYmVsb3cgMC4nCiAgICAgICAgc2VsZi5fbGV2ZWwgLT0gMQoKICAgIGNsYXNzIF9TZWN0aW9uKG9iamVjdCk6CgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb3JtYXR0ZXIsIHBhcmVudCwgaGVhZGluZz1Ob25lKToKICAgICAgICAgICAgc2VsZi5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXIKICAgICAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKICAgICAgICAgICAgc2VsZi5oZWFkaW5nID0gaGVhZGluZwogICAgICAgICAgICBzZWxmLml0ZW1zID0gW10KCiAgICAgICAgZGVmIGZvcm1hdF9oZWxwKHNlbGYpOgogICAgICAgICAgICAjIGZvcm1hdCB0aGUgaW5kZW50ZWQgc2VjdGlvbgogICAgICAgICAgICBpZiBzZWxmLnBhcmVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0dGVyLl9pbmRlbnQoKQogICAgICAgICAgICBqb2luID0gc2VsZi5mb3JtYXR0ZXIuX2pvaW5fcGFydHMKICAgICAgICAgICAgaXRlbV9oZWxwID0gam9pbihbZnVuYygqYXJncykgZm9yIGZ1bmMsIGFyZ3MgaW4gc2VsZi5pdGVtc10pCiAgICAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5mb3JtYXR0ZXIuX2RlZGVudCgpCgogICAgICAgICAgICAjIHJldHVybiBub3RoaW5nIGlmIHRoZSBzZWN0aW9uIHdhcyBlbXB0eQogICAgICAgICAgICBpZiBub3QgaXRlbV9oZWxwOgogICAgICAgICAgICAgICAgcmV0dXJuICcnCgogICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGluZyBpZiB0aGUgc2VjdGlvbiB3YXMgbm9uLWVtcHR5CiAgICAgICAgICAgIGlmIHNlbGYuaGVhZGluZyBpcyBub3QgU1VQUFJFU1MgYW5kIHNlbGYuaGVhZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGN1cnJlbnRfaW5kZW50ID0gc2VsZi5mb3JtYXR0ZXIuX2N1cnJlbnRfaW5kZW50CiAgICAgICAgICAgICAgICBoZWFkaW5nID0gJyUqcyVzOlxuJyAlIChjdXJyZW50X2luZGVudCwgJycsIHNlbGYuaGVhZGluZykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGhlYWRpbmcgPSAnJwoKICAgICAgICAgICAgIyBqb2luIHRoZSBzZWN0aW9uLWluaXRpYWwgbmV3bGluZSwgdGhlIGhlYWRpbmcgYW5kIHRoZSBoZWxwCiAgICAgICAgICAgIHJldHVybiBqb2luKFsnXG4nLCBoZWFkaW5nLCBpdGVtX2hlbHAsICdcbiddKQoKICAgIGRlZiBfYWRkX2l0ZW0oc2VsZiwgZnVuYywgYXJncyk6CiAgICAgICAgc2VsZi5fY3VycmVudF9zZWN0aW9uLml0ZW1zLmFwcGVuZCgoZnVuYywgYXJncykpCgogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT0KICAgICMgTWVzc2FnZSBidWlsZGluZyBtZXRob2RzCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PQogICAgZGVmIHN0YXJ0X3NlY3Rpb24oc2VsZiwgaGVhZGluZyk6CiAgICAgICAgc2VsZi5faW5kZW50KCkKICAgICAgICBzZWN0aW9uID0gc2VsZi5fU2VjdGlvbihzZWxmLCBzZWxmLl9jdXJyZW50X3NlY3Rpb24sIGhlYWRpbmcpCiAgICAgICAgc2VsZi5fYWRkX2l0ZW0oc2VjdGlvbi5mb3JtYXRfaGVscCwgW10pCiAgICAgICAgc2VsZi5fY3VycmVudF9zZWN0aW9uID0gc2VjdGlvbgoKICAgIGRlZiBlbmRfc2VjdGlvbihzZWxmKToKICAgICAgICBzZWxmLl9jdXJyZW50X3NlY3Rpb24gPSBzZWxmLl9jdXJyZW50X3NlY3Rpb24ucGFyZW50CiAgICAgICAgc2VsZi5fZGVkZW50KCkKCiAgICBkZWYgYWRkX3RleHQoc2VsZiwgdGV4dCk6CiAgICAgICAgaWYgdGV4dCBpcyBub3QgU1VQUFJFU1MgYW5kIHRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2FkZF9pdGVtKHNlbGYuX2Zvcm1hdF90ZXh0LCBbdGV4dF0pCgogICAgZGVmIGFkZF91c2FnZShzZWxmLCB1c2FnZSwgYWN0aW9ucywgZ3JvdXBzLCBwcmVmaXg9Tm9uZSk6CiAgICAgICAgaWYgdXNhZ2UgaXMgbm90IFNVUFBSRVNTOgogICAgICAgICAgICBhcmdzID0gdXNhZ2UsIGFjdGlvbnMsIGdyb3VwcywgcHJlZml4CiAgICAgICAgICAgIHNlbGYuX2FkZF9pdGVtKHNlbGYuX2Zvcm1hdF91c2FnZSwgYXJncykKCiAgICBkZWYgYWRkX2FyZ3VtZW50KHNlbGYsIGFjdGlvbik6CiAgICAgICAgaWYgYWN0aW9uLmhlbHAgaXMgbm90IFNVUFBSRVNTOgoKICAgICAgICAgICAgIyBmaW5kIGFsbCBpbnZvY2F0aW9ucwogICAgICAgICAgICBnZXRfaW52b2NhdGlvbiA9IHNlbGYuX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbgogICAgICAgICAgICBpbnZvY2F0aW9ucyA9IFtnZXRfaW52b2NhdGlvbihhY3Rpb24pXQogICAgICAgICAgICBmb3Igc3ViYWN0aW9uIGluIHNlbGYuX2l0ZXJfaW5kZW50ZWRfc3ViYWN0aW9ucyhhY3Rpb24pOgogICAgICAgICAgICAgICAgaW52b2NhdGlvbnMuYXBwZW5kKGdldF9pbnZvY2F0aW9uKHN1YmFjdGlvbikpCgogICAgICAgICAgICAjIHVwZGF0ZSB0aGUgbWF4aW11bSBpdGVtIGxlbmd0aAogICAgICAgICAgICBpbnZvY2F0aW9uX2xlbmd0aCA9IG1heChtYXAobGVuLCBpbnZvY2F0aW9ucykpCiAgICAgICAgICAgIGFjdGlvbl9sZW5ndGggPSBpbnZvY2F0aW9uX2xlbmd0aCArIHNlbGYuX2N1cnJlbnRfaW5kZW50CiAgICAgICAgICAgIHNlbGYuX2FjdGlvbl9tYXhfbGVuZ3RoID0gbWF4KHNlbGYuX2FjdGlvbl9tYXhfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGVuZ3RoKQoKICAgICAgICAgICAgIyBhZGQgdGhlIGl0ZW0gdG8gdGhlIGxpc3QKICAgICAgICAgICAgc2VsZi5fYWRkX2l0ZW0oc2VsZi5fZm9ybWF0X2FjdGlvbiwgW2FjdGlvbl0pCgogICAgZGVmIGFkZF9hcmd1bWVudHMoc2VsZiwgYWN0aW9ucyk6CiAgICAgICAgZm9yIGFjdGlvbiBpbiBhY3Rpb25zOgogICAgICAgICAgICBzZWxmLmFkZF9hcmd1bWVudChhY3Rpb24pCgogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBIZWxwLWZvcm1hdHRpbmcgbWV0aG9kcwogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PQogICAgZGVmIGZvcm1hdF9oZWxwKHNlbGYpOgogICAgICAgIGhlbHAgPSBzZWxmLl9yb290X3NlY3Rpb24uZm9ybWF0X2hlbHAoKQogICAgICAgIGlmIGhlbHA6CiAgICAgICAgICAgIGhlbHAgPSBzZWxmLl9sb25nX2JyZWFrX21hdGNoZXIuc3ViKCdcblxuJywgaGVscCkKICAgICAgICAgICAgaGVscCA9IGhlbHAuc3RyaXAoJ1xuJykgKyAnXG4nCiAgICAgICAgcmV0dXJuIGhlbHAKCiAgICBkZWYgX2pvaW5fcGFydHMoc2VsZiwgcGFydF9zdHJpbmdzKToKICAgICAgICByZXR1cm4gJycuam9pbihbcGFydAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFydCBpbiBwYXJ0X3N0cmluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFydCBhbmQgcGFydCBpcyBub3QgU1VQUFJFU1NdKQoKICAgIGRlZiBfZm9ybWF0X3VzYWdlKHNlbGYsIHVzYWdlLCBhY3Rpb25zLCBncm91cHMsIHByZWZpeCk6CiAgICAgICAgaWYgcHJlZml4IGlzIE5vbmU6CiAgICAgICAgICAgIHByZWZpeCA9IF8oJ3VzYWdlOiAnKQoKICAgICAgICAjIGlmIHVzYWdlIGlzIHNwZWNpZmllZCwgdXNlIHRoYXQKICAgICAgICBpZiB1c2FnZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgdXNhZ2UgPSB1c2FnZSAlIGRpY3QocHJvZz1zZWxmLl9wcm9nKQoKICAgICAgICAjIGlmIG5vIG9wdGlvbmFscyBvciBwb3NpdGlvbmFscyBhcmUgYXZhaWxhYmxlLCB1c2FnZSBpcyBqdXN0IHByb2cKICAgICAgICBlbGlmIHVzYWdlIGlzIE5vbmUgYW5kIG5vdCBhY3Rpb25zOgogICAgICAgICAgICB1c2FnZSA9ICclKHByb2cpcycgJSBkaWN0KHByb2c9c2VsZi5fcHJvZykKCiAgICAgICAgIyBpZiBvcHRpb25hbHMgYW5kIHBvc2l0aW9uYWxzIGFyZSBhdmFpbGFibGUsIGNhbGN1bGF0ZSB1c2FnZQogICAgICAgIGVsaWYgdXNhZ2UgaXMgTm9uZToKICAgICAgICAgICAgcHJvZyA9ICclKHByb2cpcycgJSBkaWN0KHByb2c9c2VsZi5fcHJvZykKCiAgICAgICAgICAgICMgc3BsaXQgb3B0aW9uYWxzIGZyb20gcG9zaXRpb25hbHMKICAgICAgICAgICAgb3B0aW9uYWxzID0gW10KICAgICAgICAgICAgcG9zaXRpb25hbHMgPSBbXQogICAgICAgICAgICBmb3IgYWN0aW9uIGluIGFjdGlvbnM6CiAgICAgICAgICAgICAgICBpZiBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxzLmFwcGVuZChhY3Rpb24pCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uYWxzLmFwcGVuZChhY3Rpb24pCgogICAgICAgICAgICAjIGJ1aWxkIGZ1bGwgdXNhZ2Ugc3RyaW5nCiAgICAgICAgICAgIGZvcm1hdCA9IHNlbGYuX2Zvcm1hdF9hY3Rpb25zX3VzYWdlCiAgICAgICAgICAgIGFjdGlvbl91c2FnZSA9IGZvcm1hdChvcHRpb25hbHMgKyBwb3NpdGlvbmFscywgZ3JvdXBzKQogICAgICAgICAgICB1c2FnZSA9ICcgJy5qb2luKFtzIGZvciBzIGluIFtwcm9nLCBhY3Rpb25fdXNhZ2VdIGlmIHNdKQoKICAgICAgICAgICAgIyB3cmFwIHRoZSB1c2FnZSBwYXJ0cyBpZiBpdCdzIHRvbyBsb25nCiAgICAgICAgICAgIHRleHRfd2lkdGggPSBzZWxmLl93aWR0aCAtIHNlbGYuX2N1cnJlbnRfaW5kZW50CiAgICAgICAgICAgIGlmIGxlbihwcmVmaXgpICsgbGVuKHVzYWdlKSA+IHRleHRfd2lkdGg6CgogICAgICAgICAgICAgICAgIyBicmVhayB1c2FnZSBpbnRvIHdyYXBwYWJsZSBwYXJ0cwogICAgICAgICAgICAgICAgcGFydF9yZWdleHAgPSAoCiAgICAgICAgICAgICAgICAgICAgcidcKC4qP1wpKyg/PVxzfCQpfCcKICAgICAgICAgICAgICAgICAgICByJ1xbLio/XF0rKD89XHN8JCl8JwogICAgICAgICAgICAgICAgICAgIHInXFMrJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgb3B0X3VzYWdlID0gZm9ybWF0KG9wdGlvbmFscywgZ3JvdXBzKQogICAgICAgICAgICAgICAgcG9zX3VzYWdlID0gZm9ybWF0KHBvc2l0aW9uYWxzLCBncm91cHMpCiAgICAgICAgICAgICAgICBvcHRfcGFydHMgPSBfcmUuZmluZGFsbChwYXJ0X3JlZ2V4cCwgb3B0X3VzYWdlKQogICAgICAgICAgICAgICAgcG9zX3BhcnRzID0gX3JlLmZpbmRhbGwocGFydF9yZWdleHAsIHBvc191c2FnZSkKICAgICAgICAgICAgICAgIGFzc2VydCAnICcuam9pbihvcHRfcGFydHMpID09IG9wdF91c2FnZQogICAgICAgICAgICAgICAgYXNzZXJ0ICcgJy5qb2luKHBvc19wYXJ0cykgPT0gcG9zX3VzYWdlCgogICAgICAgICAgICAgICAgIyBoZWxwZXIgZm9yIHdyYXBwaW5nIGxpbmVzCiAgICAgICAgICAgICAgICBkZWYgZ2V0X2xpbmVzKHBhcnRzLCBpbmRlbnQsIHByZWZpeD1Ob25lKToKICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgICAgICAgICAgICAgbGluZSA9IFtdCiAgICAgICAgICAgICAgICAgICAgaWYgcHJlZml4IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2xlbiA9IGxlbihwcmVmaXgpIC0gMQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbGVuID0gbGVuKGluZGVudCkgLSAxCiAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gcGFydHM6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVfbGVuICsgMSArIGxlbihwYXJ0KSA+IHRleHRfd2lkdGggYW5kIGxpbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoaW5kZW50ICsgJyAnLmpvaW4obGluZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbGVuID0gbGVuKGluZGVudCkgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kKHBhcnQpCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbGVuICs9IGxlbihwYXJ0KSArIDEKICAgICAgICAgICAgICAgICAgICBpZiBsaW5lOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoaW5kZW50ICsgJyAnLmpvaW4obGluZSkpCiAgICAgICAgICAgICAgICAgICAgaWYgcHJlZml4IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5lc1swXSA9IGxpbmVzWzBdW2xlbihpbmRlbnQpOl0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZXMKCiAgICAgICAgICAgICAgICAjIGlmIHByb2cgaXMgc2hvcnQsIGZvbGxvdyBpdCB3aXRoIG9wdGlvbmFscyBvciBwb3NpdGlvbmFscwogICAgICAgICAgICAgICAgaWYgbGVuKHByZWZpeCkgKyBsZW4ocHJvZykgPD0gMC43NSAqIHRleHRfd2lkdGg6CiAgICAgICAgICAgICAgICAgICAgaW5kZW50ID0gJyAnICogKGxlbihwcmVmaXgpICsgbGVuKHByb2cpICsgMSkKICAgICAgICAgICAgICAgICAgICBpZiBvcHRfcGFydHM6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzID0gZ2V0X2xpbmVzKFtwcm9nXSArIG9wdF9wYXJ0cywgaW5kZW50LCBwcmVmaXgpCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmV4dGVuZChnZXRfbGluZXMocG9zX3BhcnRzLCBpbmRlbnQpKQogICAgICAgICAgICAgICAgICAgIGVsaWYgcG9zX3BhcnRzOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IGdldF9saW5lcyhbcHJvZ10gKyBwb3NfcGFydHMsIGluZGVudCwgcHJlZml4KQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzID0gW3Byb2ddCgogICAgICAgICAgICAgICAgIyBpZiBwcm9nIGlzIGxvbmcsIHB1dCBpdCBvbiBpdHMgb3duIGxpbmUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaW5kZW50ID0gJyAnICogbGVuKHByZWZpeCkKICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9IG9wdF9wYXJ0cyArIHBvc19wYXJ0cwogICAgICAgICAgICAgICAgICAgIGxpbmVzID0gZ2V0X2xpbmVzKHBhcnRzLCBpbmRlbnQpCiAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDE6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuZXh0ZW5kKGdldF9saW5lcyhvcHRfcGFydHMsIGluZGVudCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmV4dGVuZChnZXRfbGluZXMocG9zX3BhcnRzLCBpbmRlbnQpKQogICAgICAgICAgICAgICAgICAgIGxpbmVzID0gW3Byb2ddICsgbGluZXMKCiAgICAgICAgICAgICAgICAjIGpvaW4gbGluZXMgaW50byB1c2FnZQogICAgICAgICAgICAgICAgdXNhZ2UgPSAnXG4nLmpvaW4obGluZXMpCgogICAgICAgICMgcHJlZml4IHdpdGggJ3VzYWdlOicKICAgICAgICByZXR1cm4gJyVzJXNcblxuJyAlIChwcmVmaXgsIHVzYWdlKQoKICAgIGRlZiBfZm9ybWF0X2FjdGlvbnNfdXNhZ2Uoc2VsZiwgYWN0aW9ucywgZ3JvdXBzKToKICAgICAgICAjIGZpbmQgZ3JvdXAgaW5kaWNlcyBhbmQgaWRlbnRpZnkgYWN0aW9ucyBpbiBncm91cHMKICAgICAgICBncm91cF9hY3Rpb25zID0gc2V0KCkKICAgICAgICBpbnNlcnRzID0ge30KICAgICAgICBmb3IgZ3JvdXAgaW4gZ3JvdXBzOgogICAgICAgICAgICBpZiBub3QgZ3JvdXAuX2dyb3VwX2FjdGlvbnM6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnZW1wdHkgZ3JvdXAge2dyb3VwfScpCgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzdGFydCA9IGFjdGlvbnMuaW5kZXgoZ3JvdXAuX2dyb3VwX2FjdGlvbnNbMF0pCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgbGVuKGdyb3VwLl9ncm91cF9hY3Rpb25zKQogICAgICAgICAgICAgICAgaWYgYWN0aW9uc1tzdGFydDplbmRdID09IGdyb3VwLl9ncm91cF9hY3Rpb25zOgogICAgICAgICAgICAgICAgICAgIGZvciBhY3Rpb24gaW4gZ3JvdXAuX2dyb3VwX2FjdGlvbnM6CiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2FjdGlvbnMuYWRkKGFjdGlvbikKICAgICAgICAgICAgICAgICAgICBpZiBub3QgZ3JvdXAucmVxdWlyZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXJ0IGluIGluc2VydHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzW3N0YXJ0XSArPSAnIFsnCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzW3N0YXJ0XSA9ICdbJwogICAgICAgICAgICAgICAgICAgICAgICBpZiBlbmQgaW4gaW5zZXJ0czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydHNbZW5kXSArPSAnXScKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydHNbZW5kXSA9ICddJwogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXJ0IGluIGluc2VydHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzW3N0YXJ0XSArPSAnICgnCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzW3N0YXJ0XSA9ICcoJwogICAgICAgICAgICAgICAgICAgICAgICBpZiBlbmQgaW4gaW5zZXJ0czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydHNbZW5kXSArPSAnKScKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydHNbZW5kXSA9ICcpJwogICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHN0YXJ0ICsgMSwgZW5kKToKICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0c1tpXSA9ICd8JwoKICAgICAgICAjIGNvbGxlY3QgYWxsIGFjdGlvbnMgZm9ybWF0IHN0cmluZ3MKICAgICAgICBwYXJ0cyA9IFtdCiAgICAgICAgZm9yIGksIGFjdGlvbiBpbiBlbnVtZXJhdGUoYWN0aW9ucyk6CgogICAgICAgICAgICAjIHN1cHByZXNzZWQgYXJndW1lbnRzIGFyZSBtYXJrZWQgd2l0aCBOb25lCiAgICAgICAgICAgICMgcmVtb3ZlIHwgc2VwYXJhdG9ycyBmb3Igc3VwcHJlc3NlZCBhcmd1bWVudHMKICAgICAgICAgICAgaWYgYWN0aW9uLmhlbHAgaXMgU1VQUFJFU1M6CiAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoTm9uZSkKICAgICAgICAgICAgICAgIGlmIGluc2VydHMuZ2V0KGkpID09ICd8JzoKICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnBvcChpKQogICAgICAgICAgICAgICAgZWxpZiBpbnNlcnRzLmdldChpICsgMSkgPT0gJ3wnOgogICAgICAgICAgICAgICAgICAgIGluc2VydHMucG9wKGkgKyAxKQoKICAgICAgICAgICAgIyBwcm9kdWNlIGFsbCBhcmcgc3RyaW5ncwogICAgICAgICAgICBlbGlmIG5vdCBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChhY3Rpb24pCiAgICAgICAgICAgICAgICBwYXJ0ID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBkZWZhdWx0KQoKICAgICAgICAgICAgICAgICMgaWYgaXQncyBpbiBhIGdyb3VwLCBzdHJpcCB0aGUgb3V0ZXIgW10KICAgICAgICAgICAgICAgIGlmIGFjdGlvbiBpbiBncm91cF9hY3Rpb25zOgogICAgICAgICAgICAgICAgICAgIGlmIHBhcnRbMF0gPT0gJ1snIGFuZCBwYXJ0Wy0xXSA9PSAnXSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQgPSBwYXJ0WzE6LTFdCgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIGFjdGlvbiBzdHJpbmcgdG8gdGhlIGxpc3QKICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChwYXJ0KQoKICAgICAgICAgICAgIyBwcm9kdWNlIHRoZSBmaXJzdCB3YXkgdG8gaW52b2tlIHRoZSBvcHRpb24gaW4gYnJhY2tldHMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG9wdGlvbl9zdHJpbmcgPSBhY3Rpb24ub3B0aW9uX3N0cmluZ3NbMF0KCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBPcHRpb25hbCBkb2Vzbid0IHRha2UgYSB2YWx1ZSwgZm9ybWF0IGlzOgogICAgICAgICAgICAgICAgIyAgICAtcyBvciAtLWxvbmcKICAgICAgICAgICAgICAgIGlmIGFjdGlvbi5uYXJncyA9PSAwOgogICAgICAgICAgICAgICAgICAgIHBhcnQgPSBhY3Rpb24uZm9ybWF0X3VzYWdlKCkKCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBPcHRpb25hbCB0YWtlcyBhIHZhbHVlLCBmb3JtYXQgaXM6CiAgICAgICAgICAgICAgICAjICAgIC1zIEFSR1Mgb3IgLS1sb25nIEFSR1MKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKGFjdGlvbikKICAgICAgICAgICAgICAgICAgICBhcmdzX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgZGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gJyVzICVzJyAlIChvcHRpb25fc3RyaW5nLCBhcmdzX3N0cmluZykKCiAgICAgICAgICAgICAgICAjIG1ha2UgaXQgbG9vayBvcHRpb25hbCBpZiBpdCdzIG5vdCByZXF1aXJlZCBvciBpbiBhIGdyb3VwCiAgICAgICAgICAgICAgICBpZiBub3QgYWN0aW9uLnJlcXVpcmVkIGFuZCBhY3Rpb24gbm90IGluIGdyb3VwX2FjdGlvbnM6CiAgICAgICAgICAgICAgICAgICAgcGFydCA9ICdbJXNdJyAlIHBhcnQKCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgYWN0aW9uIHN0cmluZyB0byB0aGUgbGlzdAogICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHBhcnQpCgogICAgICAgICMgaW5zZXJ0IHRoaW5ncyBhdCB0aGUgbmVjZXNzYXJ5IGluZGljZXMKICAgICAgICBmb3IgaSBpbiBzb3J0ZWQoaW5zZXJ0cywgcmV2ZXJzZT1UcnVlKToKICAgICAgICAgICAgcGFydHNbaTppXSA9IFtpbnNlcnRzW2ldXQoKICAgICAgICAjIGpvaW4gYWxsIHRoZSBhY3Rpb24gaXRlbXMgd2l0aCBzcGFjZXMKICAgICAgICB0ZXh0ID0gJyAnLmpvaW4oW2l0ZW0gZm9yIGl0ZW0gaW4gcGFydHMgaWYgaXRlbSBpcyBub3QgTm9uZV0pCgogICAgICAgICMgY2xlYW4gdXAgc2VwYXJhdG9ycyBmb3IgbXV0dWFsbHkgZXhjbHVzaXZlIGdyb3VwcwogICAgICAgIG9wZW4gPSByJ1tcWyhdJwogICAgICAgIGNsb3NlID0gcidbXF0pXScKICAgICAgICB0ZXh0ID0gX3JlLnN1YihyJyglcykgJyAlIG9wZW4sIHInXDEnLCB0ZXh0KQogICAgICAgIHRleHQgPSBfcmUuc3ViKHInICglcyknICUgY2xvc2UsIHInXDEnLCB0ZXh0KQogICAgICAgIHRleHQgPSBfcmUuc3ViKHInJXMgKiVzJyAlIChvcGVuLCBjbG9zZSksIHInJywgdGV4dCkKICAgICAgICB0ZXh0ID0gX3JlLnN1YihyJ1woKFtefF0qKVwpJywgcidcMScsIHRleHQpCiAgICAgICAgdGV4dCA9IHRleHQuc3RyaXAoKQoKICAgICAgICAjIHJldHVybiB0aGUgdGV4dAogICAgICAgIHJldHVybiB0ZXh0CgogICAgZGVmIF9mb3JtYXRfdGV4dChzZWxmLCB0ZXh0KToKICAgICAgICBpZiAnJShwcm9nKScgaW4gdGV4dDoKICAgICAgICAgICAgdGV4dCA9IHRleHQgJSBkaWN0KHByb2c9c2VsZi5fcHJvZykKICAgICAgICB0ZXh0X3dpZHRoID0gbWF4KHNlbGYuX3dpZHRoIC0gc2VsZi5fY3VycmVudF9pbmRlbnQsIDExKQogICAgICAgIGluZGVudCA9ICcgJyAqIHNlbGYuX2N1cnJlbnRfaW5kZW50CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGxfdGV4dCh0ZXh0LCB0ZXh0X3dpZHRoLCBpbmRlbnQpICsgJ1xuXG4nCgogICAgZGVmIF9mb3JtYXRfYWN0aW9uKHNlbGYsIGFjdGlvbik6CiAgICAgICAgIyBkZXRlcm1pbmUgdGhlIHJlcXVpcmVkIHdpZHRoIGFuZCB0aGUgZW50cnkgbGFiZWwKICAgICAgICBoZWxwX3Bvc2l0aW9uID0gbWluKHNlbGYuX2FjdGlvbl9tYXhfbGVuZ3RoICsgMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21heF9oZWxwX3Bvc2l0aW9uKQogICAgICAgIGhlbHBfd2lkdGggPSBtYXgoc2VsZi5fd2lkdGggLSBoZWxwX3Bvc2l0aW9uLCAxMSkKICAgICAgICBhY3Rpb25fd2lkdGggPSBoZWxwX3Bvc2l0aW9uIC0gc2VsZi5fY3VycmVudF9pbmRlbnQgLSAyCiAgICAgICAgYWN0aW9uX2hlYWRlciA9IHNlbGYuX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihhY3Rpb24pCgogICAgICAgICMgbm8gaGVscDsgc3RhcnQgb24gc2FtZSBsaW5lIGFuZCBhZGQgYSBmaW5hbCBuZXdsaW5lCiAgICAgICAgaWYgbm90IGFjdGlvbi5oZWxwOgogICAgICAgICAgICB0dXAgPSBzZWxmLl9jdXJyZW50X2luZGVudCwgJycsIGFjdGlvbl9oZWFkZXIKICAgICAgICAgICAgYWN0aW9uX2hlYWRlciA9ICclKnMlc1xuJyAlIHR1cAoKICAgICAgICAjIHNob3J0IGFjdGlvbiBuYW1lOyBzdGFydCBvbiB0aGUgc2FtZSBsaW5lIGFuZCBwYWQgdHdvIHNwYWNlcwogICAgICAgIGVsaWYgbGVuKGFjdGlvbl9oZWFkZXIpIDw9IGFjdGlvbl93aWR0aDoKICAgICAgICAgICAgdHVwID0gc2VsZi5fY3VycmVudF9pbmRlbnQsICcnLCBhY3Rpb25fd2lkdGgsIGFjdGlvbl9oZWFkZXIKICAgICAgICAgICAgYWN0aW9uX2hlYWRlciA9ICclKnMlLSpzICAnICUgdHVwCiAgICAgICAgICAgIGluZGVudF9maXJzdCA9IDAKCiAgICAgICAgIyBsb25nIGFjdGlvbiBuYW1lOyBzdGFydCBvbiB0aGUgbmV4dCBsaW5lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHVwID0gc2VsZi5fY3VycmVudF9pbmRlbnQsICcnLCBhY3Rpb25faGVhZGVyCiAgICAgICAgICAgIGFjdGlvbl9oZWFkZXIgPSAnJSpzJXNcbicgJSB0dXAKICAgICAgICAgICAgaW5kZW50X2ZpcnN0ID0gaGVscF9wb3NpdGlvbgoKICAgICAgICAjIGNvbGxlY3QgdGhlIHBpZWNlcyBvZiB0aGUgYWN0aW9uIGhlbHAKICAgICAgICBwYXJ0cyA9IFthY3Rpb25faGVhZGVyXQoKICAgICAgICAjIGlmIHRoZXJlIHdhcyBoZWxwIGZvciB0aGUgYWN0aW9uLCBhZGQgbGluZXMgb2YgaGVscCB0ZXh0CiAgICAgICAgaWYgYWN0aW9uLmhlbHAgYW5kIGFjdGlvbi5oZWxwLnN0cmlwKCk6CiAgICAgICAgICAgIGhlbHBfdGV4dCA9IHNlbGYuX2V4cGFuZF9oZWxwKGFjdGlvbikKICAgICAgICAgICAgaWYgaGVscF90ZXh0OgogICAgICAgICAgICAgICAgaGVscF9saW5lcyA9IHNlbGYuX3NwbGl0X2xpbmVzKGhlbHBfdGV4dCwgaGVscF93aWR0aCkKICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJSpzJXNcbicgJSAoaW5kZW50X2ZpcnN0LCAnJywgaGVscF9saW5lc1swXSkpCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBoZWxwX2xpbmVzWzE6XToKICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyUqcyVzXG4nICUgKGhlbHBfcG9zaXRpb24sICcnLCBsaW5lKSkKCiAgICAgICAgIyBvciBhZGQgYSBuZXdsaW5lIGlmIHRoZSBkZXNjcmlwdGlvbiBkb2Vzbid0IGVuZCB3aXRoIG9uZQogICAgICAgIGVsaWYgbm90IGFjdGlvbl9oZWFkZXIuZW5kc3dpdGgoJ1xuJyk6CiAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnXG4nKQoKICAgICAgICAjIGlmIHRoZXJlIGFyZSBhbnkgc3ViLWFjdGlvbnMsIGFkZCB0aGVpciBoZWxwIGFzIHdlbGwKICAgICAgICBmb3Igc3ViYWN0aW9uIGluIHNlbGYuX2l0ZXJfaW5kZW50ZWRfc3ViYWN0aW9ucyhhY3Rpb24pOgogICAgICAgICAgICBwYXJ0cy5hcHBlbmQoc2VsZi5fZm9ybWF0X2FjdGlvbihzdWJhY3Rpb24pKQoKICAgICAgICAjIHJldHVybiBhIHNpbmdsZSBzdHJpbmcKICAgICAgICByZXR1cm4gc2VsZi5fam9pbl9wYXJ0cyhwYXJ0cykKCiAgICBkZWYgX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihzZWxmLCBhY3Rpb24pOgogICAgICAgIGlmIG5vdCBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKGFjdGlvbikKICAgICAgICAgICAgbWV0YXZhciwgPSBzZWxmLl9tZXRhdmFyX2Zvcm1hdHRlcihhY3Rpb24sIGRlZmF1bHQpKDEpCiAgICAgICAgICAgIHJldHVybiBtZXRhdmFyCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcnRzID0gW10KCiAgICAgICAgICAgICMgaWYgdGhlIE9wdGlvbmFsIGRvZXNuJ3QgdGFrZSBhIHZhbHVlLCBmb3JtYXQgaXM6CiAgICAgICAgICAgICMgICAgLXMsIC0tbG9uZwogICAgICAgICAgICBpZiBhY3Rpb24ubmFyZ3MgPT0gMDoKICAgICAgICAgICAgICAgIHBhcnRzLmV4dGVuZChhY3Rpb24ub3B0aW9uX3N0cmluZ3MpCgogICAgICAgICAgICAjIGlmIHRoZSBPcHRpb25hbCB0YWtlcyBhIHZhbHVlLCBmb3JtYXQgaXM6CiAgICAgICAgICAgICMgICAgLXMgQVJHUywgLS1sb25nIEFSR1MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChhY3Rpb24pCiAgICAgICAgICAgICAgICBhcmdzX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgZGVmYXVsdCkKICAgICAgICAgICAgICAgIGZvciBvcHRpb25fc3RyaW5nIGluIGFjdGlvbi5vcHRpb25fc3RyaW5nczoKICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyVzICVzJyAlIChvcHRpb25fc3RyaW5nLCBhcmdzX3N0cmluZykpCgogICAgICAgICAgICByZXR1cm4gJywgJy5qb2luKHBhcnRzKQoKICAgIGRlZiBfbWV0YXZhcl9mb3JtYXR0ZXIoc2VsZiwgYWN0aW9uLCBkZWZhdWx0X21ldGF2YXIpOgogICAgICAgIGlmIGFjdGlvbi5tZXRhdmFyIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXN1bHQgPSBhY3Rpb24ubWV0YXZhcgogICAgICAgIGVsaWYgYWN0aW9uLmNob2ljZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGNob2ljZV9zdHJzID0gW3N0cihjaG9pY2UpIGZvciBjaG9pY2UgaW4gYWN0aW9uLmNob2ljZXNdCiAgICAgICAgICAgIHJlc3VsdCA9ICd7JXN9JyAlICcsJy5qb2luKGNob2ljZV9zdHJzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRfbWV0YXZhcgoKICAgICAgICBkZWYgZm9ybWF0KHR1cGxlX3NpemUpOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgdHVwbGUpOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQsICkgKiB0dXBsZV9zaXplCiAgICAgICAgcmV0dXJuIGZvcm1hdAoKICAgIGRlZiBfZm9ybWF0X2FyZ3Moc2VsZiwgYWN0aW9uLCBkZWZhdWx0X21ldGF2YXIpOgogICAgICAgIGdldF9tZXRhdmFyID0gc2VsZi5fbWV0YXZhcl9mb3JtYXR0ZXIoYWN0aW9uLCBkZWZhdWx0X21ldGF2YXIpCiAgICAgICAgaWYgYWN0aW9uLm5hcmdzIGlzIE5vbmU6CiAgICAgICAgICAgIHJlc3VsdCA9ICclcycgJSBnZXRfbWV0YXZhcigxKQogICAgICAgIGVsaWYgYWN0aW9uLm5hcmdzID09IE9QVElPTkFMOgogICAgICAgICAgICByZXN1bHQgPSAnWyVzXScgJSBnZXRfbWV0YXZhcigxKQogICAgICAgIGVsaWYgYWN0aW9uLm5hcmdzID09IFpFUk9fT1JfTU9SRToKICAgICAgICAgICAgbWV0YXZhciA9IGdldF9tZXRhdmFyKDEpCiAgICAgICAgICAgIGlmIGxlbihtZXRhdmFyKSA9PSAyOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1slcyBbJXMgLi4uXV0nICUgbWV0YXZhcgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1slcyAuLi5dJyAlIG1ldGF2YXIKICAgICAgICBlbGlmIGFjdGlvbi5uYXJncyA9PSBPTkVfT1JfTU9SRToKICAgICAgICAgICAgcmVzdWx0ID0gJyVzIFslcyAuLi5dJyAlIGdldF9tZXRhdmFyKDIpCiAgICAgICAgZWxpZiBhY3Rpb24ubmFyZ3MgPT0gUkVNQUlOREVSOgogICAgICAgICAgICByZXN1bHQgPSAnLi4uJwogICAgICAgIGVsaWYgYWN0aW9uLm5hcmdzID09IFBBUlNFUjoKICAgICAgICAgICAgcmVzdWx0ID0gJyVzIC4uLicgJSBnZXRfbWV0YXZhcigxKQogICAgICAgIGVsaWYgYWN0aW9uLm5hcmdzID09IFNVUFBSRVNTOgogICAgICAgICAgICByZXN1bHQgPSAnJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZvcm1hdHMgPSBbJyVzJyBmb3IgXyBpbiByYW5nZShhY3Rpb24ubmFyZ3MpXQogICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBuYXJncyB2YWx1ZSIpIGZyb20gTm9uZQogICAgICAgICAgICByZXN1bHQgPSAnICcuam9pbihmb3JtYXRzKSAlIGdldF9tZXRhdmFyKGFjdGlvbi5uYXJncykKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIF9leHBhbmRfaGVscChzZWxmLCBhY3Rpb24pOgogICAgICAgIHBhcmFtcyA9IGRpY3QodmFycyhhY3Rpb24pLCBwcm9nPXNlbGYuX3Byb2cpCiAgICAgICAgZm9yIG5hbWUgaW4gbGlzdChwYXJhbXMpOgogICAgICAgICAgICBpZiBwYXJhbXNbbmFtZV0gaXMgU1VQUFJFU1M6CiAgICAgICAgICAgICAgICBkZWwgcGFyYW1zW25hbWVdCiAgICAgICAgZm9yIG5hbWUgaW4gbGlzdChwYXJhbXMpOgogICAgICAgICAgICBpZiBoYXNhdHRyKHBhcmFtc1tuYW1lXSwgJ19fbmFtZV9fJyk6CiAgICAgICAgICAgICAgICBwYXJhbXNbbmFtZV0gPSBwYXJhbXNbbmFtZV0uX19uYW1lX18KICAgICAgICBpZiBwYXJhbXMuZ2V0KCdjaG9pY2VzJykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGNob2ljZXNfc3RyID0gJywgJy5qb2luKFtzdHIoYykgZm9yIGMgaW4gcGFyYW1zWydjaG9pY2VzJ11dKQogICAgICAgICAgICBwYXJhbXNbJ2Nob2ljZXMnXSA9IGNob2ljZXNfc3RyCiAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9oZWxwX3N0cmluZyhhY3Rpb24pICUgcGFyYW1zCgogICAgZGVmIF9pdGVyX2luZGVudGVkX3N1YmFjdGlvbnMoc2VsZiwgYWN0aW9uKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGdldF9zdWJhY3Rpb25zID0gYWN0aW9uLl9nZXRfc3ViYWN0aW9ucwogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2luZGVudCgpCiAgICAgICAgICAgIHlpZWxkIGZyb20gZ2V0X3N1YmFjdGlvbnMoKQogICAgICAgICAgICBzZWxmLl9kZWRlbnQoKQoKICAgIGRlZiBfc3BsaXRfbGluZXMoc2VsZiwgdGV4dCwgd2lkdGgpOgogICAgICAgIHRleHQgPSBzZWxmLl93aGl0ZXNwYWNlX21hdGNoZXIuc3ViKCcgJywgdGV4dCkuc3RyaXAoKQogICAgICAgICMgVGhlIHRleHR3cmFwIG1vZHVsZSBpcyB1c2VkIG9ubHkgZm9yIGZvcm1hdHRpbmcgaGVscC4KICAgICAgICAjIERlbGF5IGl0cyBpbXBvcnQgZm9yIHNwZWVkaW5nIHVwIHRoZSBjb21tb24gdXNhZ2Ugb2YgYXJncGFyc2UuCiAgICAgICAgaW1wb3J0IHRleHR3cmFwCiAgICAgICAgcmV0dXJuIHRleHR3cmFwLndyYXAodGV4dCwgd2lkdGgpCgogICAgZGVmIF9maWxsX3RleHQoc2VsZiwgdGV4dCwgd2lkdGgsIGluZGVudCk6CiAgICAgICAgdGV4dCA9IHNlbGYuX3doaXRlc3BhY2VfbWF0Y2hlci5zdWIoJyAnLCB0ZXh0KS5zdHJpcCgpCiAgICAgICAgaW1wb3J0IHRleHR3cmFwCiAgICAgICAgcmV0dXJuIHRleHR3cmFwLmZpbGwodGV4dCwgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9pbmRlbnQ9aW5kZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNlcXVlbnRfaW5kZW50PWluZGVudCkKCiAgICBkZWYgX2dldF9oZWxwX3N0cmluZyhzZWxmLCBhY3Rpb24pOgogICAgICAgIHJldHVybiBhY3Rpb24uaGVscAoKICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoc2VsZiwgYWN0aW9uKToKICAgICAgICByZXR1cm4gYWN0aW9uLmRlc3QudXBwZXIoKQoKICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChzZWxmLCBhY3Rpb24pOgogICAgICAgIHJldHVybiBhY3Rpb24uZGVzdAoKCmNsYXNzIFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcihIZWxwRm9ybWF0dGVyKToKICAgICIiIkhlbHAgbWVzc2FnZSBmb3JtYXR0ZXIgd2hpY2ggcmV0YWlucyBhbnkgZm9ybWF0dGluZyBpbiBkZXNjcmlwdGlvbnMuCgogICAgT25seSB0aGUgbmFtZSBvZiB0aGlzIGNsYXNzIGlzIGNvbnNpZGVyZWQgYSBwdWJsaWMgQVBJLiBBbGwgdGhlIG1ldGhvZHMKICAgIHByb3ZpZGVkIGJ5IHRoZSBjbGFzcyBhcmUgY29uc2lkZXJlZCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCiAgICAiIiIKCiAgICBkZWYgX2ZpbGxfdGV4dChzZWxmLCB0ZXh0LCB3aWR0aCwgaW5kZW50KToKICAgICAgICByZXR1cm4gJycuam9pbihpbmRlbnQgKyBsaW5lIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKCgpjbGFzcyBSYXdUZXh0SGVscEZvcm1hdHRlcihSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpOgogICAgIiIiSGVscCBtZXNzYWdlIGZvcm1hdHRlciB3aGljaCByZXRhaW5zIGZvcm1hdHRpbmcgb2YgYWxsIGhlbHAgdGV4dC4KCiAgICBPbmx5IHRoZSBuYW1lIG9mIHRoaXMgY2xhc3MgaXMgY29uc2lkZXJlZCBhIHB1YmxpYyBBUEkuIEFsbCB0aGUgbWV0aG9kcwogICAgcHJvdmlkZWQgYnkgdGhlIGNsYXNzIGFyZSBjb25zaWRlcmVkIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KICAgICIiIgoKICAgIGRlZiBfc3BsaXRfbGluZXMoc2VsZiwgdGV4dCwgd2lkdGgpOgogICAgICAgIHJldHVybiB0ZXh0LnNwbGl0bGluZXMoKQoKCmNsYXNzIEFyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyKEhlbHBGb3JtYXR0ZXIpOgogICAgIiIiSGVscCBtZXNzYWdlIGZvcm1hdHRlciB3aGljaCBhZGRzIGRlZmF1bHQgdmFsdWVzIHRvIGFyZ3VtZW50IGhlbHAuCgogICAgT25seSB0aGUgbmFtZSBvZiB0aGlzIGNsYXNzIGlzIGNvbnNpZGVyZWQgYSBwdWJsaWMgQVBJLiBBbGwgdGhlIG1ldGhvZHMKICAgIHByb3ZpZGVkIGJ5IHRoZSBjbGFzcyBhcmUgY29uc2lkZXJlZCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCiAgICAiIiIKCiAgICBkZWYgX2dldF9oZWxwX3N0cmluZyhzZWxmLCBhY3Rpb24pOgogICAgICAgICIiIgogICAgICAgIEFkZCB0aGUgZGVmYXVsdCB2YWx1ZSB0byB0aGUgb3B0aW9uIGhlbHAgbWVzc2FnZS4KCiAgICAgICAgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXIgYW5kIEJvb2xlYW5PcHRpb25hbEFjdGlvbiB3aGVuIGl0IGlzbid0CiAgICAgICAgYWxyZWFkeSBwcmVzZW50LiBUaGlzIGNvZGUgd2lsbCBkbyB0aGF0LCBkZXRlY3RpbmcgY29ybmVyY2FzZXMgdG8KICAgICAgICBwcmV2ZW50IGR1cGxpY2F0ZXMgb3IgY2FzZXMgd2hlcmUgaXQgd291bGRuJ3QgbWFrZSBzZW5zZSB0byB0aGUgZW5kCiAgICAgICAgdXNlci4KICAgICAgICAiIiIKICAgICAgICBoZWxwID0gYWN0aW9uLmhlbHAKICAgICAgICBpZiBoZWxwIGlzIE5vbmU6CiAgICAgICAgICAgIGhlbHAgPSAnJwoKICAgICAgICBpZiAnJShkZWZhdWx0KScgbm90IGluIGhlbHA6CiAgICAgICAgICAgIGlmIGFjdGlvbi5kZWZhdWx0IGlzIG5vdCBTVVBQUkVTUzoKICAgICAgICAgICAgICAgIGRlZmF1bHRpbmdfbmFyZ3MgPSBbT1BUSU9OQUwsIFpFUk9fT1JfTU9SRV0KICAgICAgICAgICAgICAgIGlmIGFjdGlvbi5vcHRpb25fc3RyaW5ncyBvciBhY3Rpb24ubmFyZ3MgaW4gZGVmYXVsdGluZ19uYXJnczoKICAgICAgICAgICAgICAgICAgICBoZWxwICs9ICcgKGRlZmF1bHQ6ICUoZGVmYXVsdClzKScKICAgICAgICByZXR1cm4gaGVscAoKCgpjbGFzcyBNZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIoSGVscEZvcm1hdHRlcik6CiAgICAiIiJIZWxwIG1lc3NhZ2UgZm9ybWF0dGVyIHdoaWNoIHVzZXMgdGhlIGFyZ3VtZW50ICd0eXBlJyBhcyB0aGUgZGVmYXVsdAogICAgbWV0YXZhciB2YWx1ZSAoaW5zdGVhZCBvZiB0aGUgYXJndW1lbnQgJ2Rlc3QnKQoKICAgIE9ubHkgdGhlIG5hbWUgb2YgdGhpcyBjbGFzcyBpcyBjb25zaWRlcmVkIGEgcHVibGljIEFQSS4gQWxsIHRoZSBtZXRob2RzCiAgICBwcm92aWRlZCBieSB0aGUgY2xhc3MgYXJlIGNvbnNpZGVyZWQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgogICAgIiIiCgogICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChzZWxmLCBhY3Rpb24pOgogICAgICAgIHJldHVybiBhY3Rpb24udHlwZS5fX25hbWVfXwoKICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChzZWxmLCBhY3Rpb24pOgogICAgICAgIHJldHVybiBhY3Rpb24udHlwZS5fX25hbWVfXwoKCiMgPT09PT09PT09PT09PT09PT09PT09CiMgT3B0aW9ucyBhbmQgQXJndW1lbnRzCiMgPT09PT09PT09PT09PT09PT09PT09CgpkZWYgX2dldF9hY3Rpb25fbmFtZShhcmd1bWVudCk6CiAgICBpZiBhcmd1bWVudCBpcyBOb25lOgogICAgICAgIHJldHVybiBOb25lCiAgICBlbGlmIGFyZ3VtZW50Lm9wdGlvbl9zdHJpbmdzOgogICAgICAgIHJldHVybiAnLycuam9pbihhcmd1bWVudC5vcHRpb25fc3RyaW5ncykKICAgIGVsaWYgYXJndW1lbnQubWV0YXZhciBub3QgaW4gKE5vbmUsIFNVUFBSRVNTKToKICAgICAgICByZXR1cm4gYXJndW1lbnQubWV0YXZhcgogICAgZWxpZiBhcmd1bWVudC5kZXN0IG5vdCBpbiAoTm9uZSwgU1VQUFJFU1MpOgogICAgICAgIHJldHVybiBhcmd1bWVudC5kZXN0CiAgICBlbGlmIGFyZ3VtZW50LmNob2ljZXM6CiAgICAgICAgcmV0dXJuICd7JyArICcsJy5qb2luKGFyZ3VtZW50LmNob2ljZXMpICsgJ30nCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCgoKY2xhc3MgQXJndW1lbnRFcnJvcihFeGNlcHRpb24pOgogICAgIiIiQW4gZXJyb3IgZnJvbSBjcmVhdGluZyBvciB1c2luZyBhbiBhcmd1bWVudCAob3B0aW9uYWwgb3IgcG9zaXRpb25hbCkuCgogICAgVGhlIHN0cmluZyB2YWx1ZSBvZiB0aGlzIGV4Y2VwdGlvbiBpcyB0aGUgbWVzc2FnZSwgYXVnbWVudGVkIHdpdGgKICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhcmd1bWVudCB0aGF0IGNhdXNlZCBpdC4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmd1bWVudCwgbWVzc2FnZSk6CiAgICAgICAgc2VsZi5hcmd1bWVudF9uYW1lID0gX2dldF9hY3Rpb25fbmFtZShhcmd1bWVudCkKICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5hcmd1bWVudF9uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIGZvcm1hdCA9ICclKG1lc3NhZ2UpcycKICAgICAgICBlbHNlOgogICAgICAgICAgICBmb3JtYXQgPSBfKCdhcmd1bWVudCAlKGFyZ3VtZW50X25hbWUpczogJShtZXNzYWdlKXMnKQogICAgICAgIHJldHVybiBmb3JtYXQgJSBkaWN0KG1lc3NhZ2U9c2VsZi5tZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50X25hbWU9c2VsZi5hcmd1bWVudF9uYW1lKQoKCmNsYXNzIEFyZ3VtZW50VHlwZUVycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJBbiBlcnJvciBmcm9tIHRyeWluZyB0byBjb252ZXJ0IGEgY29tbWFuZCBsaW5lIHN0cmluZyB0byBhIHR5cGUuIiIiCiAgICBwYXNzCgoKIyA9PT09PT09PT09PT09PQojIEFjdGlvbiBjbGFzc2VzCiMgPT09PT09PT09PT09PT0KCmNsYXNzIEFjdGlvbihfQXR0cmlidXRlSG9sZGVyKToKICAgICIiIkluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBjb252ZXJ0IGNvbW1hbmQgbGluZSBzdHJpbmdzIHRvIFB5dGhvbiBvYmplY3RzLgoKICAgIEFjdGlvbiBvYmplY3RzIGFyZSB1c2VkIGJ5IGFuIEFyZ3VtZW50UGFyc2VyIHRvIHJlcHJlc2VudCB0aGUgaW5mb3JtYXRpb24KICAgIG5lZWRlZCB0byBwYXJzZSBhIHNpbmdsZSBhcmd1bWVudCBmcm9tIG9uZSBvciBtb3JlIHN0cmluZ3MgZnJvbSB0aGUKICAgIGNvbW1hbmQgbGluZS4gVGhlIGtleXdvcmQgYXJndW1lbnRzIHRvIHRoZSBBY3Rpb24gY29uc3RydWN0b3IgYXJlIGFsc28KICAgIGFsbCBhdHRyaWJ1dGVzIG9mIEFjdGlvbiBpbnN0YW5jZXMuCgogICAgS2V5d29yZCBBcmd1bWVudHM6CgogICAgICAgIC0gb3B0aW9uX3N0cmluZ3MgLS0gQSBsaXN0IG9mIGNvbW1hbmQtbGluZSBvcHRpb24gc3RyaW5ncyB3aGljaAogICAgICAgICAgICBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWN0aW9uLgoKICAgICAgICAtIGRlc3QgLS0gVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB0byBob2xkIHRoZSBjcmVhdGVkIG9iamVjdChzKQoKICAgICAgICAtIG5hcmdzIC0tIFRoZSBudW1iZXIgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0aGF0IHNob3VsZCBiZQogICAgICAgICAgICBjb25zdW1lZC4gQnkgZGVmYXVsdCwgb25lIGFyZ3VtZW50IHdpbGwgYmUgY29uc3VtZWQgYW5kIGEgc2luZ2xlCiAgICAgICAgICAgIHZhbHVlIHdpbGwgYmUgcHJvZHVjZWQuICBPdGhlciB2YWx1ZXMgaW5jbHVkZToKICAgICAgICAgICAgICAgIC0gTiAoYW4gaW50ZWdlcikgY29uc3VtZXMgTiBhcmd1bWVudHMgKGFuZCBwcm9kdWNlcyBhIGxpc3QpCiAgICAgICAgICAgICAgICAtICc/JyBjb25zdW1lcyB6ZXJvIG9yIG9uZSBhcmd1bWVudHMKICAgICAgICAgICAgICAgIC0gJyonIGNvbnN1bWVzIHplcm8gb3IgbW9yZSBhcmd1bWVudHMgKGFuZCBwcm9kdWNlcyBhIGxpc3QpCiAgICAgICAgICAgICAgICAtICcrJyBjb25zdW1lcyBvbmUgb3IgbW9yZSBhcmd1bWVudHMgKGFuZCBwcm9kdWNlcyBhIGxpc3QpCiAgICAgICAgICAgIE5vdGUgdGhhdCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IGFuZCBuYXJncz0xIGlzIHRoYXQKICAgICAgICAgICAgd2l0aCB0aGUgZGVmYXVsdCwgYSBzaW5nbGUgdmFsdWUgd2lsbCBiZSBwcm9kdWNlZCwgd2hpbGUgd2l0aAogICAgICAgICAgICBuYXJncz0xLCBhIGxpc3QgY29udGFpbmluZyBhIHNpbmdsZSB2YWx1ZSB3aWxsIGJlIHByb2R1Y2VkLgoKICAgICAgICAtIGNvbnN0IC0tIFRoZSB2YWx1ZSB0byBiZSBwcm9kdWNlZCBpZiB0aGUgb3B0aW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlCiAgICAgICAgICAgIG9wdGlvbiB1c2VzIGFuIGFjdGlvbiB0aGF0IHRha2VzIG5vIHZhbHVlcy4KCiAgICAgICAgLSBkZWZhdWx0IC0tIFRoZSB2YWx1ZSB0byBiZSBwcm9kdWNlZCBpZiB0aGUgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQuCgogICAgICAgIC0gdHlwZSAtLSBBIGNhbGxhYmxlIHRoYXQgYWNjZXB0cyBhIHNpbmdsZSBzdHJpbmcgYXJndW1lbnQsIGFuZAogICAgICAgICAgICByZXR1cm5zIHRoZSBjb252ZXJ0ZWQgdmFsdWUuICBUaGUgc3RhbmRhcmQgUHl0aG9uIHR5cGVzIHN0ciwgaW50LAogICAgICAgICAgICBmbG9hdCwgYW5kIGNvbXBsZXggYXJlIHVzZWZ1bCBleGFtcGxlcyBvZiBzdWNoIGNhbGxhYmxlcy4gIElmIE5vbmUsCiAgICAgICAgICAgIHN0ciBpcyB1c2VkLgoKICAgICAgICAtIGNob2ljZXMgLS0gQSBjb250YWluZXIgb2YgdmFsdWVzIHRoYXQgc2hvdWxkIGJlIGFsbG93ZWQuIElmIG5vdCBOb25lLAogICAgICAgICAgICBhZnRlciBhIGNvbW1hbmQtbGluZSBhcmd1bWVudCBoYXMgYmVlbiBjb252ZXJ0ZWQgdG8gdGhlIGFwcHJvcHJpYXRlCiAgICAgICAgICAgIHR5cGUsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiBpdCBpcyBub3QgYSBtZW1iZXIgb2YgdGhpcwogICAgICAgICAgICBjb2xsZWN0aW9uLgoKICAgICAgICAtIHJlcXVpcmVkIC0tIFRydWUgaWYgdGhlIGFjdGlvbiBtdXN0IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXQgdGhlCiAgICAgICAgICAgIGNvbW1hbmQgbGluZS4gVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIG9wdGlvbmFsIGNvbW1hbmQtbGluZQogICAgICAgICAgICBhcmd1bWVudHMuCgogICAgICAgIC0gaGVscCAtLSBUaGUgaGVscCBzdHJpbmcgZGVzY3JpYmluZyB0aGUgYXJndW1lbnQuCgogICAgICAgIC0gbWV0YXZhciAtLSBUaGUgbmFtZSB0byBiZSB1c2VkIGZvciB0aGUgb3B0aW9uJ3MgYXJndW1lbnQgd2l0aCB0aGUKICAgICAgICAgICAgaGVscCBzdHJpbmcuIElmIE5vbmUsIHRoZSAnZGVzdCcgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIHRoZSBuYW1lLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgICAgICAgZGVzdCwKICAgICAgICAgICAgICAgICBuYXJncz1Ob25lLAogICAgICAgICAgICAgICAgIGNvbnN0PU5vbmUsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAogICAgICAgICAgICAgICAgIHR5cGU9Tm9uZSwKICAgICAgICAgICAgICAgICBjaG9pY2VzPU5vbmUsCiAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgaGVscD1Ob25lLAogICAgICAgICAgICAgICAgIG1ldGF2YXI9Tm9uZSk6CiAgICAgICAgc2VsZi5vcHRpb25fc3RyaW5ncyA9IG9wdGlvbl9zdHJpbmdzCiAgICAgICAgc2VsZi5kZXN0ID0gZGVzdAogICAgICAgIHNlbGYubmFyZ3MgPSBuYXJncwogICAgICAgIHNlbGYuY29uc3QgPSBjb25zdAogICAgICAgIHNlbGYuZGVmYXVsdCA9IGRlZmF1bHQKICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCiAgICAgICAgc2VsZi5jaG9pY2VzID0gY2hvaWNlcwogICAgICAgIHNlbGYucmVxdWlyZWQgPSByZXF1aXJlZAogICAgICAgIHNlbGYuaGVscCA9IGhlbHAKICAgICAgICBzZWxmLm1ldGF2YXIgPSBtZXRhdmFyCgogICAgZGVmIF9nZXRfa3dhcmdzKHNlbGYpOgogICAgICAgIG5hbWVzID0gWwogICAgICAgICAgICAnb3B0aW9uX3N0cmluZ3MnLAogICAgICAgICAgICAnZGVzdCcsCiAgICAgICAgICAgICduYXJncycsCiAgICAgICAgICAgICdjb25zdCcsCiAgICAgICAgICAgICdkZWZhdWx0JywKICAgICAgICAgICAgJ3R5cGUnLAogICAgICAgICAgICAnY2hvaWNlcycsCiAgICAgICAgICAgICdyZXF1aXJlZCcsCiAgICAgICAgICAgICdoZWxwJywKICAgICAgICAgICAgJ21ldGF2YXInLAogICAgICAgIF0KICAgICAgICByZXR1cm4gWyhuYW1lLCBnZXRhdHRyKHNlbGYsIG5hbWUpKSBmb3IgbmFtZSBpbiBuYW1lc10KCiAgICBkZWYgZm9ybWF0X3VzYWdlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLm9wdGlvbl9zdHJpbmdzWzBdCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9wdGlvbl9zdHJpbmc9Tm9uZSk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihfKCcuX19jYWxsX18oKSBub3QgZGVmaW5lZCcpKQoKCmNsYXNzIEJvb2xlYW5PcHRpb25hbEFjdGlvbihBY3Rpb24pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgICAgICAgZGVzdCwKICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgdHlwZT1Ob25lLAogICAgICAgICAgICAgICAgIGNob2ljZXM9Tm9uZSwKICAgICAgICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgICAgICBoZWxwPU5vbmUsCiAgICAgICAgICAgICAgICAgbWV0YXZhcj1Ob25lKToKCiAgICAgICAgX29wdGlvbl9zdHJpbmdzID0gW10KICAgICAgICBmb3Igb3B0aW9uX3N0cmluZyBpbiBvcHRpb25fc3RyaW5nczoKICAgICAgICAgICAgX29wdGlvbl9zdHJpbmdzLmFwcGVuZChvcHRpb25fc3RyaW5nKQoKICAgICAgICAgICAgaWYgb3B0aW9uX3N0cmluZy5zdGFydHN3aXRoKCctLScpOgogICAgICAgICAgICAgICAgb3B0aW9uX3N0cmluZyA9ICctLW5vLScgKyBvcHRpb25fc3RyaW5nWzI6XQogICAgICAgICAgICAgICAgX29wdGlvbl9zdHJpbmdzLmFwcGVuZChvcHRpb25fc3RyaW5nKQoKICAgICAgICBzdXBlcigpLl9faW5pdF9fKAogICAgICAgICAgICBvcHRpb25fc3RyaW5ncz1fb3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgIGRlc3Q9ZGVzdCwKICAgICAgICAgICAgbmFyZ3M9MCwKICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0LAogICAgICAgICAgICB0eXBlPXR5cGUsCiAgICAgICAgICAgIGNob2ljZXM9Y2hvaWNlcywKICAgICAgICAgICAgcmVxdWlyZWQ9cmVxdWlyZWQsCiAgICAgICAgICAgIGhlbHA9aGVscCwKICAgICAgICAgICAgbWV0YXZhcj1tZXRhdmFyKQoKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0aW9uX3N0cmluZz1Ob25lKToKICAgICAgICBpZiBvcHRpb25fc3RyaW5nIGluIHNlbGYub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIG5vdCBvcHRpb25fc3RyaW5nLnN0YXJ0c3dpdGgoJy0tbm8tJykpCgogICAgZGVmIGZvcm1hdF91c2FnZShzZWxmKToKICAgICAgICByZXR1cm4gJyB8ICcuam9pbihzZWxmLm9wdGlvbl9zdHJpbmdzKQoKCmNsYXNzIF9TdG9yZUFjdGlvbihBY3Rpb24pOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICAgICAgIGRlc3QsCiAgICAgICAgICAgICAgICAgbmFyZ3M9Tm9uZSwKICAgICAgICAgICAgICAgICBjb25zdD1Ob25lLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICB0eXBlPU5vbmUsCiAgICAgICAgICAgICAgICAgY2hvaWNlcz1Ob25lLAogICAgICAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICAgICAgIGhlbHA9Tm9uZSwKICAgICAgICAgICAgICAgICBtZXRhdmFyPU5vbmUpOgogICAgICAgIGlmIG5hcmdzID09IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25hcmdzIGZvciBzdG9yZSBhY3Rpb25zIG11c3QgYmUgIT0gMDsgaWYgeW91ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGF2ZSBub3RoaW5nIHRvIHN0b3JlLCBhY3Rpb25zIHN1Y2ggYXMgc3RvcmUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cnVlIG9yIHN0b3JlIGNvbnN0IG1heSBiZSBtb3JlIGFwcHJvcHJpYXRlJykKICAgICAgICBpZiBjb25zdCBpcyBub3QgTm9uZSBhbmQgbmFyZ3MgIT0gT1BUSU9OQUw6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25hcmdzIG11c3QgYmUgJXIgdG8gc3VwcGx5IGNvbnN0JyAlIE9QVElPTkFMKQogICAgICAgIHN1cGVyKF9TdG9yZUFjdGlvbiwgc2VsZikuX19pbml0X18oCiAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICBkZXN0PWRlc3QsCiAgICAgICAgICAgIG5hcmdzPW5hcmdzLAogICAgICAgICAgICBjb25zdD1jb25zdCwKICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0LAogICAgICAgICAgICB0eXBlPXR5cGUsCiAgICAgICAgICAgIGNob2ljZXM9Y2hvaWNlcywKICAgICAgICAgICAgcmVxdWlyZWQ9cmVxdWlyZWQsCiAgICAgICAgICAgIGhlbHA9aGVscCwKICAgICAgICAgICAgbWV0YXZhcj1tZXRhdmFyKQoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXJzZXIsIG5hbWVzcGFjZSwgdmFsdWVzLCBvcHRpb25fc3RyaW5nPU5vbmUpOgogICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIHZhbHVlcykKCgpjbGFzcyBfU3RvcmVDb25zdEFjdGlvbihBY3Rpb24pOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICAgICAgIGRlc3QsCiAgICAgICAgICAgICAgICAgY29uc3Q9Tm9uZSwKICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgaGVscD1Ob25lLAogICAgICAgICAgICAgICAgIG1ldGF2YXI9Tm9uZSk6CiAgICAgICAgc3VwZXIoX1N0b3JlQ29uc3RBY3Rpb24sIHNlbGYpLl9faW5pdF9fKAogICAgICAgICAgICBvcHRpb25fc3RyaW5ncz1vcHRpb25fc3RyaW5ncywKICAgICAgICAgICAgZGVzdD1kZXN0LAogICAgICAgICAgICBuYXJncz0wLAogICAgICAgICAgICBjb25zdD1jb25zdCwKICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0LAogICAgICAgICAgICByZXF1aXJlZD1yZXF1aXJlZCwKICAgICAgICAgICAgaGVscD1oZWxwKQoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXJzZXIsIG5hbWVzcGFjZSwgdmFsdWVzLCBvcHRpb25fc3RyaW5nPU5vbmUpOgogICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIHNlbGYuY29uc3QpCgoKY2xhc3MgX1N0b3JlVHJ1ZUFjdGlvbihfU3RvcmVDb25zdEFjdGlvbik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgICAgICAgZGVzdCwKICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICAgICAgIGhlbHA9Tm9uZSk6CiAgICAgICAgc3VwZXIoX1N0b3JlVHJ1ZUFjdGlvbiwgc2VsZikuX19pbml0X18oCiAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICBkZXN0PWRlc3QsCiAgICAgICAgICAgIGNvbnN0PVRydWUsCiAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdCwKICAgICAgICAgICAgcmVxdWlyZWQ9cmVxdWlyZWQsCiAgICAgICAgICAgIGhlbHA9aGVscCkKCgpjbGFzcyBfU3RvcmVGYWxzZUFjdGlvbihfU3RvcmVDb25zdEFjdGlvbik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgICAgICAgZGVzdCwKICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsCiAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgaGVscD1Ob25lKToKICAgICAgICBzdXBlcihfU3RvcmVGYWxzZUFjdGlvbiwgc2VsZikuX19pbml0X18oCiAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICBkZXN0PWRlc3QsCiAgICAgICAgICAgIGNvbnN0PUZhbHNlLAogICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQsCiAgICAgICAgICAgIHJlcXVpcmVkPXJlcXVpcmVkLAogICAgICAgICAgICBoZWxwPWhlbHApCgoKY2xhc3MgX0FwcGVuZEFjdGlvbihBY3Rpb24pOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICAgICAgIGRlc3QsCiAgICAgICAgICAgICAgICAgbmFyZ3M9Tm9uZSwKICAgICAgICAgICAgICAgICBjb25zdD1Ob25lLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICB0eXBlPU5vbmUsCiAgICAgICAgICAgICAgICAgY2hvaWNlcz1Ob25lLAogICAgICAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICAgICAgIGhlbHA9Tm9uZSwKICAgICAgICAgICAgICAgICBtZXRhdmFyPU5vbmUpOgogICAgICAgIGlmIG5hcmdzID09IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25hcmdzIGZvciBhcHBlbmQgYWN0aW9ucyBtdXN0IGJlICE9IDA7IGlmIGFyZyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgYXJlIG5vdCBzdXBwbHlpbmcgdGhlIHZhbHVlIHRvIGFwcGVuZCwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgYXBwZW5kIGNvbnN0IGFjdGlvbiBtYXkgYmUgbW9yZSBhcHByb3ByaWF0ZScpCiAgICAgICAgaWYgY29uc3QgaXMgbm90IE5vbmUgYW5kIG5hcmdzICE9IE9QVElPTkFMOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduYXJncyBtdXN0IGJlICVyIHRvIHN1cHBseSBjb25zdCcgJSBPUFRJT05BTCkKICAgICAgICBzdXBlcihfQXBwZW5kQWN0aW9uLCBzZWxmKS5fX2luaXRfXygKICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3M9b3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgIGRlc3Q9ZGVzdCwKICAgICAgICAgICAgbmFyZ3M9bmFyZ3MsCiAgICAgICAgICAgIGNvbnN0PWNvbnN0LAogICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQsCiAgICAgICAgICAgIHR5cGU9dHlwZSwKICAgICAgICAgICAgY2hvaWNlcz1jaG9pY2VzLAogICAgICAgICAgICByZXF1aXJlZD1yZXF1aXJlZCwKICAgICAgICAgICAgaGVscD1oZWxwLAogICAgICAgICAgICBtZXRhdmFyPW1ldGF2YXIpCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9wdGlvbl9zdHJpbmc9Tm9uZSk6CiAgICAgICAgaXRlbXMgPSBnZXRhdHRyKG5hbWVzcGFjZSwgc2VsZi5kZXN0LCBOb25lKQogICAgICAgIGl0ZW1zID0gX2NvcHlfaXRlbXMoaXRlbXMpCiAgICAgICAgaXRlbXMuYXBwZW5kKHZhbHVlcykKICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwgc2VsZi5kZXN0LCBpdGVtcykKCgpjbGFzcyBfQXBwZW5kQ29uc3RBY3Rpb24oQWN0aW9uKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICBvcHRpb25fc3RyaW5ncywKICAgICAgICAgICAgICAgICBkZXN0LAogICAgICAgICAgICAgICAgIGNvbnN0PU5vbmUsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAogICAgICAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICAgICAgIGhlbHA9Tm9uZSwKICAgICAgICAgICAgICAgICBtZXRhdmFyPU5vbmUpOgogICAgICAgIHN1cGVyKF9BcHBlbmRDb25zdEFjdGlvbiwgc2VsZikuX19pbml0X18oCiAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICBkZXN0PWRlc3QsCiAgICAgICAgICAgIG5hcmdzPTAsCiAgICAgICAgICAgIGNvbnN0PWNvbnN0LAogICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQsCiAgICAgICAgICAgIHJlcXVpcmVkPXJlcXVpcmVkLAogICAgICAgICAgICBoZWxwPWhlbHAsCiAgICAgICAgICAgIG1ldGF2YXI9bWV0YXZhcikKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0aW9uX3N0cmluZz1Ob25lKToKICAgICAgICBpdGVtcyA9IGdldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIE5vbmUpCiAgICAgICAgaXRlbXMgPSBfY29weV9pdGVtcyhpdGVtcykKICAgICAgICBpdGVtcy5hcHBlbmQoc2VsZi5jb25zdCkKICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwgc2VsZi5kZXN0LCBpdGVtcykKCgpjbGFzcyBfQ291bnRBY3Rpb24oQWN0aW9uKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICBvcHRpb25fc3RyaW5ncywKICAgICAgICAgICAgICAgICBkZXN0LAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgICAgICBoZWxwPU5vbmUpOgogICAgICAgIHN1cGVyKF9Db3VudEFjdGlvbiwgc2VsZikuX19pbml0X18oCiAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICBkZXN0PWRlc3QsCiAgICAgICAgICAgIG5hcmdzPTAsCiAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdCwKICAgICAgICAgICAgcmVxdWlyZWQ9cmVxdWlyZWQsCiAgICAgICAgICAgIGhlbHA9aGVscCkKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0aW9uX3N0cmluZz1Ob25lKToKICAgICAgICBjb3VudCA9IGdldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIE5vbmUpCiAgICAgICAgaWYgY291bnQgaXMgTm9uZToKICAgICAgICAgICAgY291bnQgPSAwCiAgICAgICAgc2V0YXR0cihuYW1lc3BhY2UsIHNlbGYuZGVzdCwgY291bnQgKyAxKQoKCmNsYXNzIF9IZWxwQWN0aW9uKEFjdGlvbik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgICAgICAgZGVzdD1TVVBQUkVTUywKICAgICAgICAgICAgICAgICBkZWZhdWx0PVNVUFBSRVNTLAogICAgICAgICAgICAgICAgIGhlbHA9Tm9uZSk6CiAgICAgICAgc3VwZXIoX0hlbHBBY3Rpb24sIHNlbGYpLl9faW5pdF9fKAogICAgICAgICAgICBvcHRpb25fc3RyaW5ncz1vcHRpb25fc3RyaW5ncywKICAgICAgICAgICAgZGVzdD1kZXN0LAogICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQsCiAgICAgICAgICAgIG5hcmdzPTAsCiAgICAgICAgICAgIGhlbHA9aGVscCkKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0aW9uX3N0cmluZz1Ob25lKToKICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCiAgICAgICAgcGFyc2VyLmV4aXQoKQoKCmNsYXNzIF9WZXJzaW9uQWN0aW9uKEFjdGlvbik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgICAgICAgdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgIGRlc3Q9U1VQUFJFU1MsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1TVVBQUkVTUywKICAgICAgICAgICAgICAgICBoZWxwPSJzaG93IHByb2dyYW0ncyB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdCIpOgogICAgICAgIHN1cGVyKF9WZXJzaW9uQWN0aW9uLCBzZWxmKS5fX2luaXRfXygKICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3M9b3B0aW9uX3N0cmluZ3MsCiAgICAgICAgICAgIGRlc3Q9ZGVzdCwKICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0LAogICAgICAgICAgICBuYXJncz0wLAogICAgICAgICAgICBoZWxwPWhlbHApCiAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXJzZXIsIG5hbWVzcGFjZSwgdmFsdWVzLCBvcHRpb25fc3RyaW5nPU5vbmUpOgogICAgICAgIHZlcnNpb24gPSBzZWxmLnZlcnNpb24KICAgICAgICBpZiB2ZXJzaW9uIGlzIE5vbmU6CiAgICAgICAgICAgIHZlcnNpb24gPSBwYXJzZXIudmVyc2lvbgogICAgICAgIGZvcm1hdHRlciA9IHBhcnNlci5fZ2V0X2Zvcm1hdHRlcigpCiAgICAgICAgZm9ybWF0dGVyLmFkZF90ZXh0KHZlcnNpb24pCiAgICAgICAgcGFyc2VyLl9wcmludF9tZXNzYWdlKGZvcm1hdHRlci5mb3JtYXRfaGVscCgpLCBfc3lzLnN0ZG91dCkKICAgICAgICBwYXJzZXIuZXhpdCgpCgoKY2xhc3MgX1N1YlBhcnNlcnNBY3Rpb24oQWN0aW9uKToKCiAgICBjbGFzcyBfQ2hvaWNlc1BzZXVkb0FjdGlvbihBY3Rpb24pOgoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYWxpYXNlcywgaGVscCk6CiAgICAgICAgICAgIG1ldGF2YXIgPSBkZXN0ID0gbmFtZQogICAgICAgICAgICBpZiBhbGlhc2VzOgogICAgICAgICAgICAgICAgbWV0YXZhciArPSAnICglcyknICUgJywgJy5qb2luKGFsaWFzZXMpCiAgICAgICAgICAgIHN1cCA9IHN1cGVyKF9TdWJQYXJzZXJzQWN0aW9uLl9DaG9pY2VzUHNldWRvQWN0aW9uLCBzZWxmKQogICAgICAgICAgICBzdXAuX19pbml0X18ob3B0aW9uX3N0cmluZ3M9W10sIGRlc3Q9ZGVzdCwgaGVscD1oZWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj1tZXRhdmFyKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzLAogICAgICAgICAgICAgICAgIHByb2csCiAgICAgICAgICAgICAgICAgcGFyc2VyX2NsYXNzLAogICAgICAgICAgICAgICAgIGRlc3Q9U1VQUFJFU1MsCiAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgaGVscD1Ob25lLAogICAgICAgICAgICAgICAgIG1ldGF2YXI9Tm9uZSk6CgogICAgICAgIHNlbGYuX3Byb2dfcHJlZml4ID0gcHJvZwogICAgICAgIHNlbGYuX3BhcnNlcl9jbGFzcyA9IHBhcnNlcl9jbGFzcwogICAgICAgIHNlbGYuX25hbWVfcGFyc2VyX21hcCA9IHt9CiAgICAgICAgc2VsZi5fY2hvaWNlc19hY3Rpb25zID0gW10KCiAgICAgICAgc3VwZXIoX1N1YlBhcnNlcnNBY3Rpb24sIHNlbGYpLl9faW5pdF9fKAogICAgICAgICAgICBvcHRpb25fc3RyaW5ncz1vcHRpb25fc3RyaW5ncywKICAgICAgICAgICAgZGVzdD1kZXN0LAogICAgICAgICAgICBuYXJncz1QQVJTRVIsCiAgICAgICAgICAgIGNob2ljZXM9c2VsZi5fbmFtZV9wYXJzZXJfbWFwLAogICAgICAgICAgICByZXF1aXJlZD1yZXF1aXJlZCwKICAgICAgICAgICAgaGVscD1oZWxwLAogICAgICAgICAgICBtZXRhdmFyPW1ldGF2YXIpCgogICAgZGVmIGFkZF9wYXJzZXIoc2VsZiwgbmFtZSwgKiprd2FyZ3MpOgogICAgICAgICMgc2V0IHByb2cgZnJvbSB0aGUgZXhpc3RpbmcgcHJlZml4CiAgICAgICAgaWYga3dhcmdzLmdldCgncHJvZycpIGlzIE5vbmU6CiAgICAgICAgICAgIGt3YXJnc1sncHJvZyddID0gJyVzICVzJyAlIChzZWxmLl9wcm9nX3ByZWZpeCwgbmFtZSkKCiAgICAgICAgYWxpYXNlcyA9IGt3YXJncy5wb3AoJ2FsaWFzZXMnLCAoKSkKCiAgICAgICAgaWYgbmFtZSBpbiBzZWxmLl9uYW1lX3BhcnNlcl9tYXA6CiAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3Ioc2VsZiwgXygnY29uZmxpY3Rpbmcgc3VicGFyc2VyOiAlcycpICUgbmFtZSkKICAgICAgICBmb3IgYWxpYXMgaW4gYWxpYXNlczoKICAgICAgICAgICAgaWYgYWxpYXMgaW4gc2VsZi5fbmFtZV9wYXJzZXJfbWFwOgogICAgICAgICAgICAgICAgcmFpc2UgQXJndW1lbnRFcnJvcigKICAgICAgICAgICAgICAgICAgICBzZWxmLCBfKCdjb25mbGljdGluZyBzdWJwYXJzZXIgYWxpYXM6ICVzJykgJSBhbGlhcykKCiAgICAgICAgIyBjcmVhdGUgYSBwc2V1ZG8tYWN0aW9uIHRvIGhvbGQgdGhlIGNob2ljZSBoZWxwCiAgICAgICAgaWYgJ2hlbHAnIGluIGt3YXJnczoKICAgICAgICAgICAgaGVscCA9IGt3YXJncy5wb3AoJ2hlbHAnKQogICAgICAgICAgICBjaG9pY2VfYWN0aW9uID0gc2VsZi5fQ2hvaWNlc1BzZXVkb0FjdGlvbihuYW1lLCBhbGlhc2VzLCBoZWxwKQogICAgICAgICAgICBzZWxmLl9jaG9pY2VzX2FjdGlvbnMuYXBwZW5kKGNob2ljZV9hY3Rpb24pCgogICAgICAgICMgY3JlYXRlIHRoZSBwYXJzZXIgYW5kIGFkZCBpdCB0byB0aGUgbWFwCiAgICAgICAgcGFyc2VyID0gc2VsZi5fcGFyc2VyX2NsYXNzKCoqa3dhcmdzKQogICAgICAgIHNlbGYuX25hbWVfcGFyc2VyX21hcFtuYW1lXSA9IHBhcnNlcgoKICAgICAgICAjIG1ha2UgcGFyc2VyIGF2YWlsYWJsZSB1bmRlciBhbGlhc2VzIGFsc28KICAgICAgICBmb3IgYWxpYXMgaW4gYWxpYXNlczoKICAgICAgICAgICAgc2VsZi5fbmFtZV9wYXJzZXJfbWFwW2FsaWFzXSA9IHBhcnNlcgoKICAgICAgICByZXR1cm4gcGFyc2VyCgogICAgZGVmIF9nZXRfc3ViYWN0aW9ucyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2hvaWNlc19hY3Rpb25zCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9wdGlvbl9zdHJpbmc9Tm9uZSk6CiAgICAgICAgcGFyc2VyX25hbWUgPSB2YWx1ZXNbMF0KICAgICAgICBhcmdfc3RyaW5ncyA9IHZhbHVlc1sxOl0KCiAgICAgICAgIyBzZXQgdGhlIHBhcnNlciBuYW1lIGlmIHJlcXVlc3RlZAogICAgICAgIGlmIHNlbGYuZGVzdCBpcyBub3QgU1VQUFJFU1M6CiAgICAgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIHBhcnNlcl9uYW1lKQoKICAgICAgICAjIHNlbGVjdCB0aGUgcGFyc2VyCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJzZXIgPSBzZWxmLl9uYW1lX3BhcnNlcl9tYXBbcGFyc2VyX25hbWVdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBhcmdzID0geydwYXJzZXJfbmFtZSc6IHBhcnNlcl9uYW1lLAogICAgICAgICAgICAgICAgICAgICdjaG9pY2VzJzogJywgJy5qb2luKHNlbGYuX25hbWVfcGFyc2VyX21hcCl9CiAgICAgICAgICAgIG1zZyA9IF8oJ3Vua25vd24gcGFyc2VyICUocGFyc2VyX25hbWUpciAoY2hvaWNlczogJShjaG9pY2VzKXMpJykgJSBhcmdzCiAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3Ioc2VsZiwgbXNnKQoKICAgICAgICAjIHBhcnNlIGFsbCB0aGUgcmVtYWluaW5nIG9wdGlvbnMgaW50byB0aGUgbmFtZXNwYWNlCiAgICAgICAgIyBzdG9yZSBhbnkgdW5yZWNvZ25pemVkIG9wdGlvbnMgb24gdGhlIG9iamVjdCwgc28gdGhhdCB0aGUgdG9wCiAgICAgICAgIyBsZXZlbCBwYXJzZXIgY2FuIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlbQoKICAgICAgICAjIEluIGNhc2UgdGhpcyBzdWJwYXJzZXIgZGVmaW5lcyBuZXcgZGVmYXVsdHMsIHdlIHBhcnNlIHRoZW0KICAgICAgICAjIGluIGEgbmV3IG5hbWVzcGFjZSBvYmplY3QgYW5kIHRoZW4gdXBkYXRlIHRoZSBvcmlnaW5hbAogICAgICAgICMgbmFtZXNwYWNlIGZvciB0aGUgcmVsZXZhbnQgcGFydHMuCiAgICAgICAgc3VibmFtZXNwYWNlLCBhcmdfc3RyaW5ncyA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ19zdHJpbmdzLCBOb25lKQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIHZhcnMoc3VibmFtZXNwYWNlKS5pdGVtcygpOgogICAgICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwga2V5LCB2YWx1ZSkKCiAgICAgICAgaWYgYXJnX3N0cmluZ3M6CiAgICAgICAgICAgIHZhcnMobmFtZXNwYWNlKS5zZXRkZWZhdWx0KF9VTlJFQ09HTklaRURfQVJHU19BVFRSLCBbXSkKICAgICAgICAgICAgZ2V0YXR0cihuYW1lc3BhY2UsIF9VTlJFQ09HTklaRURfQVJHU19BVFRSKS5leHRlbmQoYXJnX3N0cmluZ3MpCgpjbGFzcyBfRXh0ZW5kQWN0aW9uKF9BcHBlbmRBY3Rpb24pOgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9wdGlvbl9zdHJpbmc9Tm9uZSk6CiAgICAgICAgaXRlbXMgPSBnZXRhdHRyKG5hbWVzcGFjZSwgc2VsZi5kZXN0LCBOb25lKQogICAgICAgIGl0ZW1zID0gX2NvcHlfaXRlbXMoaXRlbXMpCiAgICAgICAgaXRlbXMuZXh0ZW5kKHZhbHVlcykKICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwgc2VsZi5kZXN0LCBpdGVtcykKCiMgPT09PT09PT09PT09PT0KIyBUeXBlIGNsYXNzZXMKIyA9PT09PT09PT09PT09PQoKY2xhc3MgRmlsZVR5cGUob2JqZWN0KToKICAgICIiIkZhY3RvcnkgZm9yIGNyZWF0aW5nIGZpbGUgb2JqZWN0IHR5cGVzCgogICAgSW5zdGFuY2VzIG9mIEZpbGVUeXBlIGFyZSB0eXBpY2FsbHkgcGFzc2VkIGFzIHR5cGU9IGFyZ3VtZW50cyB0byB0aGUKICAgIEFyZ3VtZW50UGFyc2VyIGFkZF9hcmd1bWVudCgpIG1ldGhvZC4KCiAgICBLZXl3b3JkIEFyZ3VtZW50czoKICAgICAgICAtIG1vZGUgLS0gQSBzdHJpbmcgaW5kaWNhdGluZyBob3cgdGhlIGZpbGUgaXMgdG8gYmUgb3BlbmVkLiBBY2NlcHRzIHRoZQogICAgICAgICAgICBzYW1lIHZhbHVlcyBhcyB0aGUgYnVpbHRpbiBvcGVuKCkgZnVuY3Rpb24uCiAgICAgICAgLSBidWZzaXplIC0tIFRoZSBmaWxlJ3MgZGVzaXJlZCBidWZmZXIgc2l6ZS4gQWNjZXB0cyB0aGUgc2FtZSB2YWx1ZXMgYXMKICAgICAgICAgICAgdGhlIGJ1aWx0aW4gb3BlbigpIGZ1bmN0aW9uLgogICAgICAgIC0gZW5jb2RpbmcgLS0gVGhlIGZpbGUncyBlbmNvZGluZy4gQWNjZXB0cyB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlCiAgICAgICAgICAgIGJ1aWx0aW4gb3BlbigpIGZ1bmN0aW9uLgogICAgICAgIC0gZXJyb3JzIC0tIEEgc3RyaW5nIGluZGljYXRpbmcgaG93IGVuY29kaW5nIGFuZCBkZWNvZGluZyBlcnJvcnMgYXJlIHRvCiAgICAgICAgICAgIGJlIGhhbmRsZWQuIEFjY2VwdHMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGJ1aWx0aW4gb3BlbigpIGZ1bmN0aW9uLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGU9J3InLCBidWZzaXplPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6CiAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGUKICAgICAgICBzZWxmLl9idWZzaXplID0gYnVmc2l6ZQogICAgICAgIHNlbGYuX2VuY29kaW5nID0gZW5jb2RpbmcKICAgICAgICBzZWxmLl9lcnJvcnMgPSBlcnJvcnMKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgc3RyaW5nKToKICAgICAgICAjIHRoZSBzcGVjaWFsIGFyZ3VtZW50ICItIiBtZWFucyBzeXMuc3Rke2luLG91dH0KICAgICAgICBpZiBzdHJpbmcgPT0gJy0nOgogICAgICAgICAgICBpZiAncicgaW4gc2VsZi5fbW9kZToKICAgICAgICAgICAgICAgIHJldHVybiBfc3lzLnN0ZGluLmJ1ZmZlciBpZiAnYicgaW4gc2VsZi5fbW9kZSBlbHNlIF9zeXMuc3RkaW4KICAgICAgICAgICAgZWxpZiBhbnkoYyBpbiBzZWxmLl9tb2RlIGZvciBjIGluICd3YXgnKToKICAgICAgICAgICAgICAgIHJldHVybiBfc3lzLnN0ZG91dC5idWZmZXIgaWYgJ2InIGluIHNlbGYuX21vZGUgZWxzZSBfc3lzLnN0ZG91dAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbXNnID0gXygnYXJndW1lbnQgIi0iIHdpdGggbW9kZSAlcicpICUgc2VsZi5fbW9kZQogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCgogICAgICAgICMgYWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgdXNlZCBhcyBmaWxlIG5hbWVzCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gb3BlbihzdHJpbmcsIHNlbGYuX21vZGUsIHNlbGYuX2J1ZnNpemUsIHNlbGYuX2VuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcnMpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgYXJncyA9IHsnZmlsZW5hbWUnOiBzdHJpbmcsICdlcnJvcic6IGV9CiAgICAgICAgICAgIG1lc3NhZ2UgPSBfKCJjYW4ndCBvcGVuICclKGZpbGVuYW1lKXMnOiAlKGVycm9yKXMiKQogICAgICAgICAgICByYWlzZSBBcmd1bWVudFR5cGVFcnJvcihtZXNzYWdlICUgYXJncykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgYXJncyA9IHNlbGYuX21vZGUsIHNlbGYuX2J1ZnNpemUKICAgICAgICBrd2FyZ3MgPSBbKCdlbmNvZGluZycsIHNlbGYuX2VuY29kaW5nKSwgKCdlcnJvcnMnLCBzZWxmLl9lcnJvcnMpXQogICAgICAgIGFyZ3Nfc3RyID0gJywgJy5qb2luKFtyZXByKGFyZykgZm9yIGFyZyBpbiBhcmdzIGlmIGFyZyAhPSAtMV0gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJXM9JXInICUgKGt3LCBhcmcpIGZvciBrdywgYXJnIGluIGt3YXJncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcmcgaXMgbm90IE5vbmVdKQogICAgICAgIHJldHVybiAnJXMoJXMpJyAlICh0eXBlKHNlbGYpLl9fbmFtZV9fLCBhcmdzX3N0cikKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgT3B0aW9uYWwgYW5kIFBvc2l0aW9uYWwgUGFyc2luZwojID09PT09PT09PT09PT09PT09PT09PT09PT09PQoKY2xhc3MgTmFtZXNwYWNlKF9BdHRyaWJ1dGVIb2xkZXIpOgogICAgIiIiU2ltcGxlIG9iamVjdCBmb3Igc3RvcmluZyBhdHRyaWJ1dGVzLgoKICAgIEltcGxlbWVudHMgZXF1YWxpdHkgYnkgYXR0cmlidXRlIG5hbWVzIGFuZCB2YWx1ZXMsIGFuZCBwcm92aWRlcyBhIHNpbXBsZQogICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICBmb3IgbmFtZSBpbiBrd2FyZ3M6CiAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgbmFtZSwga3dhcmdzW25hbWVdKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBOYW1lc3BhY2UpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gdmFycyhzZWxmKSA9PSB2YXJzKG90aGVyKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuX19kaWN0X18KCgpjbGFzcyBfQWN0aW9uc0NvbnRhaW5lcihvYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgIHByZWZpeF9jaGFycywKICAgICAgICAgICAgICAgICBhcmd1bWVudF9kZWZhdWx0LAogICAgICAgICAgICAgICAgIGNvbmZsaWN0X2hhbmRsZXIpOgogICAgICAgIHN1cGVyKF9BY3Rpb25zQ29udGFpbmVyLCBzZWxmKS5fX2luaXRfXygpCgogICAgICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgogICAgICAgIHNlbGYuYXJndW1lbnRfZGVmYXVsdCA9IGFyZ3VtZW50X2RlZmF1bHQKICAgICAgICBzZWxmLnByZWZpeF9jaGFycyA9IHByZWZpeF9jaGFycwogICAgICAgIHNlbGYuY29uZmxpY3RfaGFuZGxlciA9IGNvbmZsaWN0X2hhbmRsZXIKCiAgICAgICAgIyBzZXQgdXAgcmVnaXN0cmllcwogICAgICAgIHNlbGYuX3JlZ2lzdHJpZXMgPSB7fQoKICAgICAgICAjIHJlZ2lzdGVyIGFjdGlvbnMKICAgICAgICBzZWxmLnJlZ2lzdGVyKCdhY3Rpb24nLCBOb25lLCBfU3RvcmVBY3Rpb24pCiAgICAgICAgc2VsZi5yZWdpc3RlcignYWN0aW9uJywgJ3N0b3JlJywgX1N0b3JlQWN0aW9uKQogICAgICAgIHNlbGYucmVnaXN0ZXIoJ2FjdGlvbicsICdzdG9yZV9jb25zdCcsIF9TdG9yZUNvbnN0QWN0aW9uKQogICAgICAgIHNlbGYucmVnaXN0ZXIoJ2FjdGlvbicsICdzdG9yZV90cnVlJywgX1N0b3JlVHJ1ZUFjdGlvbikKICAgICAgICBzZWxmLnJlZ2lzdGVyKCdhY3Rpb24nLCAnc3RvcmVfZmFsc2UnLCBfU3RvcmVGYWxzZUFjdGlvbikKICAgICAgICBzZWxmLnJlZ2lzdGVyKCdhY3Rpb24nLCAnYXBwZW5kJywgX0FwcGVuZEFjdGlvbikKICAgICAgICBzZWxmLnJlZ2lzdGVyKCdhY3Rpb24nLCAnYXBwZW5kX2NvbnN0JywgX0FwcGVuZENvbnN0QWN0aW9uKQogICAgICAgIHNlbGYucmVnaXN0ZXIoJ2FjdGlvbicsICdjb3VudCcsIF9Db3VudEFjdGlvbikKICAgICAgICBzZWxmLnJlZ2lzdGVyKCdhY3Rpb24nLCAnaGVscCcsIF9IZWxwQWN0aW9uKQogICAgICAgIHNlbGYucmVnaXN0ZXIoJ2FjdGlvbicsICd2ZXJzaW9uJywgX1ZlcnNpb25BY3Rpb24pCiAgICAgICAgc2VsZi5yZWdpc3RlcignYWN0aW9uJywgJ3BhcnNlcnMnLCBfU3ViUGFyc2Vyc0FjdGlvbikKICAgICAgICBzZWxmLnJlZ2lzdGVyKCdhY3Rpb24nLCAnZXh0ZW5kJywgX0V4dGVuZEFjdGlvbikKCiAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGNvbmZsaWN0IGhhbmRsZXIgaXMgaW52YWxpZAogICAgICAgIHNlbGYuX2dldF9oYW5kbGVyKCkKCiAgICAgICAgIyBhY3Rpb24gc3RvcmFnZQogICAgICAgIHNlbGYuX2FjdGlvbnMgPSBbXQogICAgICAgIHNlbGYuX29wdGlvbl9zdHJpbmdfYWN0aW9ucyA9IHt9CgogICAgICAgICMgZ3JvdXBzCiAgICAgICAgc2VsZi5fYWN0aW9uX2dyb3VwcyA9IFtdCiAgICAgICAgc2VsZi5fbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwcyA9IFtdCgogICAgICAgICMgZGVmYXVsdHMgc3RvcmFnZQogICAgICAgIHNlbGYuX2RlZmF1bHRzID0ge30KCiAgICAgICAgIyBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gIm9wdGlvbiIgbG9va3MgbGlrZSBhIG5lZ2F0aXZlIG51bWJlcgogICAgICAgIHNlbGYuX25lZ2F0aXZlX251bWJlcl9tYXRjaGVyID0gX3JlLmNvbXBpbGUocideLVxkKyR8Xi1cZCpcLlxkKyQnKQoKICAgICAgICAjIHdoZXRoZXIgb3Igbm90IHRoZXJlIGFyZSBhbnkgb3B0aW9uYWxzIHRoYXQgbG9vayBsaWtlIG5lZ2F0aXZlCiAgICAgICAgIyBudW1iZXJzIC0tIHVzZXMgYSBsaXN0IHNvIGl0IGNhbiBiZSBzaGFyZWQgYW5kIGVkaXRlZAogICAgICAgIHNlbGYuX2hhc19uZWdhdGl2ZV9udW1iZXJfb3B0aW9uYWxzID0gW10KCiAgICAjID09PT09PT09PT09PT09PT09PT09CiAgICAjIFJlZ2lzdHJhdGlvbiBtZXRob2RzCiAgICAjID09PT09PT09PT09PT09PT09PT09CiAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgcmVnaXN0cnlfbmFtZSwgdmFsdWUsIG9iamVjdCk6CiAgICAgICAgcmVnaXN0cnkgPSBzZWxmLl9yZWdpc3RyaWVzLnNldGRlZmF1bHQocmVnaXN0cnlfbmFtZSwge30pCiAgICAgICAgcmVnaXN0cnlbdmFsdWVdID0gb2JqZWN0CgogICAgZGVmIF9yZWdpc3RyeV9nZXQoc2VsZiwgcmVnaXN0cnlfbmFtZSwgdmFsdWUsIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX3JlZ2lzdHJpZXNbcmVnaXN0cnlfbmFtZV0uZ2V0KHZhbHVlLCBkZWZhdWx0KQoKICAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBOYW1lc3BhY2UgZGVmYXVsdCBhY2Nlc3NvciBtZXRob2RzCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIGRlZiBzZXRfZGVmYXVsdHMoc2VsZiwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuX2RlZmF1bHRzLnVwZGF0ZShrd2FyZ3MpCgogICAgICAgICMgaWYgdGhlc2UgZGVmYXVsdHMgbWF0Y2ggYW55IGV4aXN0aW5nIGFyZ3VtZW50cywgcmVwbGFjZQogICAgICAgICMgdGhlIHByZXZpb3VzIGRlZmF1bHQgb24gdGhlIG9iamVjdCB3aXRoIHRoZSBuZXcgb25lCiAgICAgICAgZm9yIGFjdGlvbiBpbiBzZWxmLl9hY3Rpb25zOgogICAgICAgICAgICBpZiBhY3Rpb24uZGVzdCBpbiBrd2FyZ3M6CiAgICAgICAgICAgICAgICBhY3Rpb24uZGVmYXVsdCA9IGt3YXJnc1thY3Rpb24uZGVzdF0KCiAgICBkZWYgZ2V0X2RlZmF1bHQoc2VsZiwgZGVzdCk6CiAgICAgICAgZm9yIGFjdGlvbiBpbiBzZWxmLl9hY3Rpb25zOgogICAgICAgICAgICBpZiBhY3Rpb24uZGVzdCA9PSBkZXN0IGFuZCBhY3Rpb24uZGVmYXVsdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb24uZGVmYXVsdAogICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0cy5nZXQoZGVzdCwgTm9uZSkKCgogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBBZGRpbmcgYXJndW1lbnQgYWN0aW9ucwogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PQogICAgZGVmIGFkZF9hcmd1bWVudChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIgogICAgICAgIGFkZF9hcmd1bWVudChkZXN0LCAuLi4sIG5hbWU9dmFsdWUsIC4uLikKICAgICAgICBhZGRfYXJndW1lbnQob3B0aW9uX3N0cmluZywgb3B0aW9uX3N0cmluZywgLi4uLCBuYW1lPXZhbHVlLCAuLi4pCiAgICAgICAgIiIiCgogICAgICAgICMgaWYgbm8gcG9zaXRpb25hbCBhcmdzIGFyZSBzdXBwbGllZCBvciBvbmx5IG9uZSBpcyBzdXBwbGllZCBhbmQKICAgICAgICAjIGl0IGRvZXNuJ3QgbG9vayBsaWtlIGFuIG9wdGlvbiBzdHJpbmcsIHBhcnNlIGEgcG9zaXRpb25hbAogICAgICAgICMgYXJndW1lbnQKICAgICAgICBjaGFycyA9IHNlbGYucHJlZml4X2NoYXJzCiAgICAgICAgaWYgbm90IGFyZ3Mgb3IgbGVuKGFyZ3MpID09IDEgYW5kIGFyZ3NbMF1bMF0gbm90IGluIGNoYXJzOgogICAgICAgICAgICBpZiBhcmdzIGFuZCAnZGVzdCcgaW4ga3dhcmdzOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZGVzdCBzdXBwbGllZCB0d2ljZSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudCcpCiAgICAgICAgICAgIGt3YXJncyA9IHNlbGYuX2dldF9wb3NpdGlvbmFsX2t3YXJncygqYXJncywgKiprd2FyZ3MpCgogICAgICAgICMgb3RoZXJ3aXNlLCB3ZSdyZSBhZGRpbmcgYW4gb3B0aW9uYWwgYXJndW1lbnQKICAgICAgICBlbHNlOgogICAgICAgICAgICBrd2FyZ3MgPSBzZWxmLl9nZXRfb3B0aW9uYWxfa3dhcmdzKCphcmdzLCAqKmt3YXJncykKCiAgICAgICAgIyBpZiBubyBkZWZhdWx0IHdhcyBzdXBwbGllZCwgdXNlIHRoZSBwYXJzZXItbGV2ZWwgZGVmYXVsdAogICAgICAgIGlmICdkZWZhdWx0JyBub3QgaW4ga3dhcmdzOgogICAgICAgICAgICBkZXN0ID0ga3dhcmdzWydkZXN0J10KICAgICAgICAgICAgaWYgZGVzdCBpbiBzZWxmLl9kZWZhdWx0czoKICAgICAgICAgICAgICAgIGt3YXJnc1snZGVmYXVsdCddID0gc2VsZi5fZGVmYXVsdHNbZGVzdF0KICAgICAgICAgICAgZWxpZiBzZWxmLmFyZ3VtZW50X2RlZmF1bHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBrd2FyZ3NbJ2RlZmF1bHQnXSA9IHNlbGYuYXJndW1lbnRfZGVmYXVsdAoKICAgICAgICAjIGNyZWF0ZSB0aGUgYWN0aW9uIG9iamVjdCwgYW5kIGFkZCBpdCB0byB0aGUgcGFyc2VyCiAgICAgICAgYWN0aW9uX2NsYXNzID0gc2VsZi5fcG9wX2FjdGlvbl9jbGFzcyhrd2FyZ3MpCiAgICAgICAgaWYgbm90IGNhbGxhYmxlKGFjdGlvbl9jbGFzcyk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Vua25vd24gYWN0aW9uICIlcyInICUgKGFjdGlvbl9jbGFzcywpKQogICAgICAgIGFjdGlvbiA9IGFjdGlvbl9jbGFzcygqKmt3YXJncykKCiAgICAgICAgIyByYWlzZSBhbiBlcnJvciBpZiB0aGUgYWN0aW9uIHR5cGUgaXMgbm90IGNhbGxhYmxlCiAgICAgICAgdHlwZV9mdW5jID0gc2VsZi5fcmVnaXN0cnlfZ2V0KCd0eXBlJywgYWN0aW9uLnR5cGUsIGFjdGlvbi50eXBlKQogICAgICAgIGlmIG5vdCBjYWxsYWJsZSh0eXBlX2Z1bmMpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclciBpcyBub3QgY2FsbGFibGUnICUgKHR5cGVfZnVuYywpKQoKICAgICAgICBpZiB0eXBlX2Z1bmMgaXMgRmlsZVR5cGU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVyIGlzIGEgRmlsZVR5cGUgY2xhc3Mgb2JqZWN0LCBpbnN0YW5jZSBvZiBpdCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG11c3QgYmUgcGFzc2VkJyAlICh0eXBlX2Z1bmMsKSkKCiAgICAgICAgIyByYWlzZSBhbiBlcnJvciBpZiB0aGUgbWV0YXZhciBkb2VzIG5vdCBtYXRjaCB0aGUgdHlwZQogICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIl9nZXRfZm9ybWF0dGVyIik6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX2dldF9mb3JtYXR0ZXIoKS5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBOb25lKQogICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibGVuZ3RoIG9mIG1ldGF2YXIgdHVwbGUgZG9lcyBub3QgbWF0Y2ggbmFyZ3MiKQoKICAgICAgICByZXR1cm4gc2VsZi5fYWRkX2FjdGlvbihhY3Rpb24pCgogICAgZGVmIGFkZF9hcmd1bWVudF9ncm91cChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIGdyb3VwID0gX0FyZ3VtZW50R3JvdXAoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIHNlbGYuX2FjdGlvbl9ncm91cHMuYXBwZW5kKGdyb3VwKQogICAgICAgIHJldHVybiBncm91cAoKICAgIGRlZiBhZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKHNlbGYsICoqa3dhcmdzKToKICAgICAgICBncm91cCA9IF9NdXR1YWxseUV4Y2x1c2l2ZUdyb3VwKHNlbGYsICoqa3dhcmdzKQogICAgICAgIHNlbGYuX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cHMuYXBwZW5kKGdyb3VwKQogICAgICAgIHJldHVybiBncm91cAoKICAgIGRlZiBfYWRkX2FjdGlvbihzZWxmLCBhY3Rpb24pOgogICAgICAgICMgcmVzb2x2ZSBhbnkgY29uZmxpY3RzCiAgICAgICAgc2VsZi5fY2hlY2tfY29uZmxpY3QoYWN0aW9uKQoKICAgICAgICAjIGFkZCB0byBhY3Rpb25zIGxpc3QKICAgICAgICBzZWxmLl9hY3Rpb25zLmFwcGVuZChhY3Rpb24pCiAgICAgICAgYWN0aW9uLmNvbnRhaW5lciA9IHNlbGYKCiAgICAgICAgIyBpbmRleCB0aGUgYWN0aW9uIGJ5IGFueSBvcHRpb24gc3RyaW5ncyBpdCBoYXMKICAgICAgICBmb3Igb3B0aW9uX3N0cmluZyBpbiBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgIHNlbGYuX29wdGlvbl9zdHJpbmdfYWN0aW9uc1tvcHRpb25fc3RyaW5nXSA9IGFjdGlvbgoKICAgICAgICAjIHNldCB0aGUgZmxhZyBpZiBhbnkgb3B0aW9uIHN0cmluZ3MgbG9vayBsaWtlIG5lZ2F0aXZlIG51bWJlcnMKICAgICAgICBmb3Igb3B0aW9uX3N0cmluZyBpbiBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgIGlmIHNlbGYuX25lZ2F0aXZlX251bWJlcl9tYXRjaGVyLm1hdGNoKG9wdGlvbl9zdHJpbmcpOgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2hhc19uZWdhdGl2ZV9udW1iZXJfb3B0aW9uYWxzOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhc19uZWdhdGl2ZV9udW1iZXJfb3B0aW9uYWxzLmFwcGVuZChUcnVlKQoKICAgICAgICAjIHJldHVybiB0aGUgY3JlYXRlZCBhY3Rpb24KICAgICAgICByZXR1cm4gYWN0aW9uCgogICAgZGVmIF9yZW1vdmVfYWN0aW9uKHNlbGYsIGFjdGlvbik6CiAgICAgICAgc2VsZi5fYWN0aW9ucy5yZW1vdmUoYWN0aW9uKQoKICAgIGRlZiBfYWRkX2NvbnRhaW5lcl9hY3Rpb25zKHNlbGYsIGNvbnRhaW5lcik6CiAgICAgICAgIyBjb2xsZWN0IGdyb3VwcyBieSB0aXRsZXMKICAgICAgICB0aXRsZV9ncm91cF9tYXAgPSB7fQogICAgICAgIGZvciBncm91cCBpbiBzZWxmLl9hY3Rpb25fZ3JvdXBzOgogICAgICAgICAgICBpZiBncm91cC50aXRsZSBpbiB0aXRsZV9ncm91cF9tYXA6CiAgICAgICAgICAgICAgICBtc2cgPSBfKCdjYW5ub3QgbWVyZ2UgYWN0aW9ucyAtIHR3byBncm91cHMgYXJlIG5hbWVkICVyJykKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgKGdyb3VwLnRpdGxlKSkKICAgICAgICAgICAgdGl0bGVfZ3JvdXBfbWFwW2dyb3VwLnRpdGxlXSA9IGdyb3VwCgogICAgICAgICMgbWFwIGVhY2ggYWN0aW9uIHRvIGl0cyBncm91cAogICAgICAgIGdyb3VwX21hcCA9IHt9CiAgICAgICAgZm9yIGdyb3VwIGluIGNvbnRhaW5lci5fYWN0aW9uX2dyb3VwczoKCiAgICAgICAgICAgICMgaWYgYSBncm91cCB3aXRoIHRoZSB0aXRsZSBleGlzdHMsIHVzZSB0aGF0LCBvdGhlcndpc2UKICAgICAgICAgICAgIyBjcmVhdGUgYSBuZXcgZ3JvdXAgbWF0Y2hpbmcgdGhlIGNvbnRhaW5lcidzIGdyb3VwCiAgICAgICAgICAgIGlmIGdyb3VwLnRpdGxlIG5vdCBpbiB0aXRsZV9ncm91cF9tYXA6CiAgICAgICAgICAgICAgICB0aXRsZV9ncm91cF9tYXBbZ3JvdXAudGl0bGVdID0gc2VsZi5hZGRfYXJndW1lbnRfZ3JvdXAoCiAgICAgICAgICAgICAgICAgICAgdGl0bGU9Z3JvdXAudGl0bGUsCiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249Z3JvdXAuZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgY29uZmxpY3RfaGFuZGxlcj1ncm91cC5jb25mbGljdF9oYW5kbGVyKQoKICAgICAgICAgICAgIyBtYXAgdGhlIGFjdGlvbnMgdG8gdGhlaXIgbmV3IGdyb3VwCiAgICAgICAgICAgIGZvciBhY3Rpb24gaW4gZ3JvdXAuX2dyb3VwX2FjdGlvbnM6CiAgICAgICAgICAgICAgICBncm91cF9tYXBbYWN0aW9uXSA9IHRpdGxlX2dyb3VwX21hcFtncm91cC50aXRsZV0KCiAgICAgICAgIyBhZGQgY29udGFpbmVyJ3MgbXV0dWFsbHkgZXhjbHVzaXZlIGdyb3VwcwogICAgICAgICMgTk9URTogaWYgYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCBldmVyIGdhaW5zIHRpdGxlPSBhbmQKICAgICAgICAjIGRlc2NyaXB0aW9uPSB0aGVuIHRoaXMgY29kZSB3aWxsIG5lZWQgdG8gYmUgZXhwYW5kZWQgYXMgYWJvdmUKICAgICAgICBmb3IgZ3JvdXAgaW4gY29udGFpbmVyLl9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXBzOgogICAgICAgICAgICBtdXRleF9ncm91cCA9IHNlbGYuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgKICAgICAgICAgICAgICAgIHJlcXVpcmVkPWdyb3VwLnJlcXVpcmVkKQoKICAgICAgICAgICAgIyBtYXAgdGhlIGFjdGlvbnMgdG8gdGhlaXIgbmV3IG11dGV4IGdyb3VwCiAgICAgICAgICAgIGZvciBhY3Rpb24gaW4gZ3JvdXAuX2dyb3VwX2FjdGlvbnM6CiAgICAgICAgICAgICAgICBncm91cF9tYXBbYWN0aW9uXSA9IG11dGV4X2dyb3VwCgogICAgICAgICMgYWRkIGFsbCBhY3Rpb25zIHRvIHRoaXMgY29udGFpbmVyIG9yIHRoZWlyIGdyb3VwCiAgICAgICAgZm9yIGFjdGlvbiBpbiBjb250YWluZXIuX2FjdGlvbnM6CiAgICAgICAgICAgIGdyb3VwX21hcC5nZXQoYWN0aW9uLCBzZWxmKS5fYWRkX2FjdGlvbihhY3Rpb24pCgogICAgZGVmIF9nZXRfcG9zaXRpb25hbF9rd2FyZ3Moc2VsZiwgZGVzdCwgKiprd2FyZ3MpOgogICAgICAgICMgbWFrZSBzdXJlIHJlcXVpcmVkIGlzIG5vdCBzcGVjaWZpZWQKICAgICAgICBpZiAncmVxdWlyZWQnIGluIGt3YXJnczoKICAgICAgICAgICAgbXNnID0gXygiJ3JlcXVpcmVkJyBpcyBhbiBpbnZhbGlkIGFyZ3VtZW50IGZvciBwb3NpdGlvbmFscyIpCiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCgogICAgICAgICMgbWFyayBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcyByZXF1aXJlZCBpZiBhdCBsZWFzdCBvbmUgaXMKICAgICAgICAjIGFsd2F5cyByZXF1aXJlZAogICAgICAgIGlmIGt3YXJncy5nZXQoJ25hcmdzJykgbm90IGluIFtPUFRJT05BTCwgWkVST19PUl9NT1JFXToKICAgICAgICAgICAga3dhcmdzWydyZXF1aXJlZCddID0gVHJ1ZQogICAgICAgIGlmIGt3YXJncy5nZXQoJ25hcmdzJykgPT0gWkVST19PUl9NT1JFIGFuZCAnZGVmYXVsdCcgbm90IGluIGt3YXJnczoKICAgICAgICAgICAga3dhcmdzWydyZXF1aXJlZCddID0gVHJ1ZQoKICAgICAgICAjIHJldHVybiB0aGUga2V5d29yZCBhcmd1bWVudHMgd2l0aCBubyBvcHRpb24gc3RyaW5ncwogICAgICAgIHJldHVybiBkaWN0KGt3YXJncywgZGVzdD1kZXN0LCBvcHRpb25fc3RyaW5ncz1bXSkKCiAgICBkZWYgX2dldF9vcHRpb25hbF9rd2FyZ3Moc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAjIGRldGVybWluZSBzaG9ydCBhbmQgbG9uZyBvcHRpb24gc3RyaW5ncwogICAgICAgIG9wdGlvbl9zdHJpbmdzID0gW10KICAgICAgICBsb25nX29wdGlvbl9zdHJpbmdzID0gW10KICAgICAgICBmb3Igb3B0aW9uX3N0cmluZyBpbiBhcmdzOgogICAgICAgICAgICAjIGVycm9yIG9uIHN0cmluZ3MgdGhhdCBkb24ndCBzdGFydCB3aXRoIGFuIGFwcHJvcHJpYXRlIHByZWZpeAogICAgICAgICAgICBpZiBub3Qgb3B0aW9uX3N0cmluZ1swXSBpbiBzZWxmLnByZWZpeF9jaGFyczoKICAgICAgICAgICAgICAgIGFyZ3MgPSB7J29wdGlvbic6IG9wdGlvbl9zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICdwcmVmaXhfY2hhcnMnOiBzZWxmLnByZWZpeF9jaGFyc30KICAgICAgICAgICAgICAgIG1zZyA9IF8oJ2ludmFsaWQgb3B0aW9uIHN0cmluZyAlKG9wdGlvbilyOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdtdXN0IHN0YXJ0IHdpdGggYSBjaGFyYWN0ZXIgJShwcmVmaXhfY2hhcnMpcicpCiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIGFyZ3MpCgogICAgICAgICAgICAjIHN0cmluZ3Mgc3RhcnRpbmcgd2l0aCB0d28gcHJlZml4IGNoYXJhY3RlcnMgYXJlIGxvbmcgb3B0aW9ucwogICAgICAgICAgICBvcHRpb25fc3RyaW5ncy5hcHBlbmQob3B0aW9uX3N0cmluZykKICAgICAgICAgICAgaWYgbGVuKG9wdGlvbl9zdHJpbmcpID4gMSBhbmQgb3B0aW9uX3N0cmluZ1sxXSBpbiBzZWxmLnByZWZpeF9jaGFyczoKICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9uX3N0cmluZ3MuYXBwZW5kKG9wdGlvbl9zdHJpbmcpCgogICAgICAgICMgaW5mZXIgZGVzdGluYXRpb24sICctLWZvby1iYXInIC0+ICdmb29fYmFyJyBhbmQgJy14JyAtPiAneCcKICAgICAgICBkZXN0ID0ga3dhcmdzLnBvcCgnZGVzdCcsIE5vbmUpCiAgICAgICAgaWYgZGVzdCBpcyBOb25lOgogICAgICAgICAgICBpZiBsb25nX29wdGlvbl9zdHJpbmdzOgogICAgICAgICAgICAgICAgZGVzdF9vcHRpb25fc3RyaW5nID0gbG9uZ19vcHRpb25fc3RyaW5nc1swXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZGVzdF9vcHRpb25fc3RyaW5nID0gb3B0aW9uX3N0cmluZ3NbMF0KICAgICAgICAgICAgZGVzdCA9IGRlc3Rfb3B0aW9uX3N0cmluZy5sc3RyaXAoc2VsZi5wcmVmaXhfY2hhcnMpCiAgICAgICAgICAgIGlmIG5vdCBkZXN0OgogICAgICAgICAgICAgICAgbXNnID0gXygnZGVzdD0gaXMgcmVxdWlyZWQgZm9yIG9wdGlvbnMgbGlrZSAlcicpCiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9wdGlvbl9zdHJpbmcpCiAgICAgICAgICAgIGRlc3QgPSBkZXN0LnJlcGxhY2UoJy0nLCAnXycpCgogICAgICAgICMgcmV0dXJuIHRoZSB1cGRhdGVkIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgcmV0dXJuIGRpY3Qoa3dhcmdzLCBkZXN0PWRlc3QsIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9zdHJpbmdzKQoKICAgIGRlZiBfcG9wX2FjdGlvbl9jbGFzcyhzZWxmLCBrd2FyZ3MsIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgYWN0aW9uID0ga3dhcmdzLnBvcCgnYWN0aW9uJywgZGVmYXVsdCkKICAgICAgICByZXR1cm4gc2VsZi5fcmVnaXN0cnlfZ2V0KCdhY3Rpb24nLCBhY3Rpb24sIGFjdGlvbikKCiAgICBkZWYgX2dldF9oYW5kbGVyKHNlbGYpOgogICAgICAgICMgZGV0ZXJtaW5lIGZ1bmN0aW9uIGZyb20gY29uZmxpY3QgaGFuZGxlciBzdHJpbmcKICAgICAgICBoYW5kbGVyX2Z1bmNfbmFtZSA9ICdfaGFuZGxlX2NvbmZsaWN0XyVzJyAlIHNlbGYuY29uZmxpY3RfaGFuZGxlcgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgaGFuZGxlcl9mdW5jX25hbWUpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBtc2cgPSBfKCdpbnZhbGlkIGNvbmZsaWN0X3Jlc29sdXRpb24gdmFsdWU6ICVyJykKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBzZWxmLmNvbmZsaWN0X2hhbmRsZXIpCgogICAgZGVmIF9jaGVja19jb25mbGljdChzZWxmLCBhY3Rpb24pOgoKICAgICAgICAjIGZpbmQgYWxsIG9wdGlvbnMgdGhhdCBjb25mbGljdCB3aXRoIHRoaXMgb3B0aW9uCiAgICAgICAgY29uZmxfb3B0aW9uYWxzID0gW10KICAgICAgICBmb3Igb3B0aW9uX3N0cmluZyBpbiBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgIGlmIG9wdGlvbl9zdHJpbmcgaW4gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zOgogICAgICAgICAgICAgICAgY29uZmxfb3B0aW9uYWwgPSBzZWxmLl9vcHRpb25fc3RyaW5nX2FjdGlvbnNbb3B0aW9uX3N0cmluZ10KICAgICAgICAgICAgICAgIGNvbmZsX29wdGlvbmFscy5hcHBlbmQoKG9wdGlvbl9zdHJpbmcsIGNvbmZsX29wdGlvbmFsKSkKCiAgICAgICAgIyByZXNvbHZlIGFueSBjb25mbGljdHMKICAgICAgICBpZiBjb25mbF9vcHRpb25hbHM6CiAgICAgICAgICAgIGNvbmZsaWN0X2hhbmRsZXIgPSBzZWxmLl9nZXRfaGFuZGxlcigpCiAgICAgICAgICAgIGNvbmZsaWN0X2hhbmRsZXIoYWN0aW9uLCBjb25mbF9vcHRpb25hbHMpCgogICAgZGVmIF9oYW5kbGVfY29uZmxpY3RfZXJyb3Ioc2VsZiwgYWN0aW9uLCBjb25mbGljdGluZ19hY3Rpb25zKToKICAgICAgICBtZXNzYWdlID0gbmdldHRleHQoJ2NvbmZsaWN0aW5nIG9wdGlvbiBzdHJpbmc6ICVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZsaWN0aW5nIG9wdGlvbiBzdHJpbmdzOiAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjb25mbGljdGluZ19hY3Rpb25zKSkKICAgICAgICBjb25mbGljdF9zdHJpbmcgPSAnLCAnLmpvaW4oW29wdGlvbl9zdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBvcHRpb25fc3RyaW5nLCBhY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGNvbmZsaWN0aW5nX2FjdGlvbnNdKQogICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoYWN0aW9uLCBtZXNzYWdlICUgY29uZmxpY3Rfc3RyaW5nKQoKICAgIGRlZiBfaGFuZGxlX2NvbmZsaWN0X3Jlc29sdmUoc2VsZiwgYWN0aW9uLCBjb25mbGljdGluZ19hY3Rpb25zKToKCiAgICAgICAgIyByZW1vdmUgYWxsIGNvbmZsaWN0aW5nIG9wdGlvbnMKICAgICAgICBmb3Igb3B0aW9uX3N0cmluZywgYWN0aW9uIGluIGNvbmZsaWN0aW5nX2FjdGlvbnM6CgogICAgICAgICAgICAjIHJlbW92ZSB0aGUgY29uZmxpY3Rpbmcgb3B0aW9uCiAgICAgICAgICAgIGFjdGlvbi5vcHRpb25fc3RyaW5ncy5yZW1vdmUob3B0aW9uX3N0cmluZykKICAgICAgICAgICAgc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zLnBvcChvcHRpb25fc3RyaW5nLCBOb25lKQoKICAgICAgICAgICAgIyBpZiB0aGUgb3B0aW9uIG5vdyBoYXMgbm8gb3B0aW9uIHN0cmluZywgcmVtb3ZlIGl0IGZyb20gdGhlCiAgICAgICAgICAgICMgY29udGFpbmVyIGhvbGRpbmcgaXQKICAgICAgICAgICAgaWYgbm90IGFjdGlvbi5vcHRpb25fc3RyaW5nczoKICAgICAgICAgICAgICAgIGFjdGlvbi5jb250YWluZXIuX3JlbW92ZV9hY3Rpb24oYWN0aW9uKQoKCmNsYXNzIF9Bcmd1bWVudEdyb3VwKF9BY3Rpb25zQ29udGFpbmVyKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY29udGFpbmVyLCB0aXRsZT1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIyBhZGQgYW55IG1pc3Npbmcga2V5d29yZCBhcmd1bWVudHMgYnkgY2hlY2tpbmcgdGhlIGNvbnRhaW5lcgogICAgICAgIHVwZGF0ZSA9IGt3YXJncy5zZXRkZWZhdWx0CiAgICAgICAgdXBkYXRlKCdjb25mbGljdF9oYW5kbGVyJywgY29udGFpbmVyLmNvbmZsaWN0X2hhbmRsZXIpCiAgICAgICAgdXBkYXRlKCdwcmVmaXhfY2hhcnMnLCBjb250YWluZXIucHJlZml4X2NoYXJzKQogICAgICAgIHVwZGF0ZSgnYXJndW1lbnRfZGVmYXVsdCcsIGNvbnRhaW5lci5hcmd1bWVudF9kZWZhdWx0KQogICAgICAgIHN1cGVyX2luaXQgPSBzdXBlcihfQXJndW1lbnRHcm91cCwgc2VsZikuX19pbml0X18KICAgICAgICBzdXBlcl9pbml0KGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uLCAqKmt3YXJncykKCiAgICAgICAgIyBncm91cCBhdHRyaWJ1dGVzCiAgICAgICAgc2VsZi50aXRsZSA9IHRpdGxlCiAgICAgICAgc2VsZi5fZ3JvdXBfYWN0aW9ucyA9IFtdCgogICAgICAgICMgc2hhcmUgbW9zdCBhdHRyaWJ1dGVzIHdpdGggdGhlIGNvbnRhaW5lcgogICAgICAgIHNlbGYuX3JlZ2lzdHJpZXMgPSBjb250YWluZXIuX3JlZ2lzdHJpZXMKICAgICAgICBzZWxmLl9hY3Rpb25zID0gY29udGFpbmVyLl9hY3Rpb25zCiAgICAgICAgc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zID0gY29udGFpbmVyLl9vcHRpb25fc3RyaW5nX2FjdGlvbnMKICAgICAgICBzZWxmLl9kZWZhdWx0cyA9IGNvbnRhaW5lci5fZGVmYXVsdHMKICAgICAgICBzZWxmLl9oYXNfbmVnYXRpdmVfbnVtYmVyX29wdGlvbmFscyA9IFwKICAgICAgICAgICAgY29udGFpbmVyLl9oYXNfbmVnYXRpdmVfbnVtYmVyX29wdGlvbmFscwogICAgICAgIHNlbGYuX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cHMgPSBjb250YWluZXIuX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cHMKCiAgICBkZWYgX2FkZF9hY3Rpb24oc2VsZiwgYWN0aW9uKToKICAgICAgICBhY3Rpb24gPSBzdXBlcihfQXJndW1lbnRHcm91cCwgc2VsZikuX2FkZF9hY3Rpb24oYWN0aW9uKQogICAgICAgIHNlbGYuX2dyb3VwX2FjdGlvbnMuYXBwZW5kKGFjdGlvbikKICAgICAgICByZXR1cm4gYWN0aW9uCgogICAgZGVmIF9yZW1vdmVfYWN0aW9uKHNlbGYsIGFjdGlvbik6CiAgICAgICAgc3VwZXIoX0FyZ3VtZW50R3JvdXAsIHNlbGYpLl9yZW1vdmVfYWN0aW9uKGFjdGlvbikKICAgICAgICBzZWxmLl9ncm91cF9hY3Rpb25zLnJlbW92ZShhY3Rpb24pCgogICAgZGVmIGFkZF9hcmd1bWVudF9ncm91cChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICJOZXN0aW5nIGFyZ3VtZW50IGdyb3VwcyBpcyBkZXByZWNhdGVkLiIsCiAgICAgICAgICAgIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgc3RhY2tsZXZlbD0yCiAgICAgICAgKQogICAgICAgIHJldHVybiBzdXBlcigpLmFkZF9hcmd1bWVudF9ncm91cCgqYXJncywgKiprd2FyZ3MpCgoKY2xhc3MgX011dHVhbGx5RXhjbHVzaXZlR3JvdXAoX0FyZ3VtZW50R3JvdXApOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250YWluZXIsIHJlcXVpcmVkPUZhbHNlKToKICAgICAgICBzdXBlcihfTXV0dWFsbHlFeGNsdXNpdmVHcm91cCwgc2VsZikuX19pbml0X18oY29udGFpbmVyKQogICAgICAgIHNlbGYucmVxdWlyZWQgPSByZXF1aXJlZAogICAgICAgIHNlbGYuX2NvbnRhaW5lciA9IGNvbnRhaW5lcgoKICAgIGRlZiBfYWRkX2FjdGlvbihzZWxmLCBhY3Rpb24pOgogICAgICAgIGlmIGFjdGlvbi5yZXF1aXJlZDoKICAgICAgICAgICAgbXNnID0gXygnbXV0dWFsbHkgZXhjbHVzaXZlIGFyZ3VtZW50cyBtdXN0IGJlIG9wdGlvbmFsJykKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCiAgICAgICAgYWN0aW9uID0gc2VsZi5fY29udGFpbmVyLl9hZGRfYWN0aW9uKGFjdGlvbikKICAgICAgICBzZWxmLl9ncm91cF9hY3Rpb25zLmFwcGVuZChhY3Rpb24pCiAgICAgICAgcmV0dXJuIGFjdGlvbgoKICAgIGRlZiBfcmVtb3ZlX2FjdGlvbihzZWxmLCBhY3Rpb24pOgogICAgICAgIHNlbGYuX2NvbnRhaW5lci5fcmVtb3ZlX2FjdGlvbihhY3Rpb24pCiAgICAgICAgc2VsZi5fZ3JvdXBfYWN0aW9ucy5yZW1vdmUoYWN0aW9uKQoKICAgIGRlZiBhZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgIk5lc3RpbmcgbXV0dWFsbHkgZXhjbHVzaXZlIGdyb3VwcyBpcyBkZXByZWNhdGVkLiIsCiAgICAgICAgICAgIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgc3RhY2tsZXZlbD0yCiAgICAgICAgKQogICAgICAgIHJldHVybiBzdXBlcigpLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKmFyZ3MsICoqa3dhcmdzKQoKCmNsYXNzIEFyZ3VtZW50UGFyc2VyKF9BdHRyaWJ1dGVIb2xkZXIsIF9BY3Rpb25zQ29udGFpbmVyKToKICAgICIiIk9iamVjdCBmb3IgcGFyc2luZyBjb21tYW5kIGxpbmUgc3RyaW5ncyBpbnRvIFB5dGhvbiBvYmplY3RzLgoKICAgIEtleXdvcmQgQXJndW1lbnRzOgogICAgICAgIC0gcHJvZyAtLSBUaGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSAoZGVmYXVsdDoKICAgICAgICAgICAgYGBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKWBgKQogICAgICAgIC0gdXNhZ2UgLS0gQSB1c2FnZSBtZXNzYWdlIChkZWZhdWx0OiBhdXRvLWdlbmVyYXRlZCBmcm9tIGFyZ3VtZW50cykKICAgICAgICAtIGRlc2NyaXB0aW9uIC0tIEEgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgcHJvZ3JhbSBkb2VzCiAgICAgICAgLSBlcGlsb2cgLS0gVGV4dCBmb2xsb3dpbmcgdGhlIGFyZ3VtZW50IGRlc2NyaXB0aW9ucwogICAgICAgIC0gcGFyZW50cyAtLSBQYXJzZXJzIHdob3NlIGFyZ3VtZW50cyBzaG91bGQgYmUgY29waWVkIGludG8gdGhpcyBvbmUKICAgICAgICAtIGZvcm1hdHRlcl9jbGFzcyAtLSBIZWxwRm9ybWF0dGVyIGNsYXNzIGZvciBwcmludGluZyBoZWxwIG1lc3NhZ2VzCiAgICAgICAgLSBwcmVmaXhfY2hhcnMgLS0gQ2hhcmFjdGVycyB0aGF0IHByZWZpeCBvcHRpb25hbCBhcmd1bWVudHMKICAgICAgICAtIGZyb21maWxlX3ByZWZpeF9jaGFycyAtLSBDaGFyYWN0ZXJzIHRoYXQgcHJlZml4IGZpbGVzIGNvbnRhaW5pbmcKICAgICAgICAgICAgYWRkaXRpb25hbCBhcmd1bWVudHMKICAgICAgICAtIGFyZ3VtZW50X2RlZmF1bHQgLS0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGFsbCBhcmd1bWVudHMKICAgICAgICAtIGNvbmZsaWN0X2hhbmRsZXIgLS0gU3RyaW5nIGluZGljYXRpbmcgaG93IHRvIGhhbmRsZSBjb25mbGljdHMKICAgICAgICAtIGFkZF9oZWxwIC0tIEFkZCBhIC1oLy1oZWxwIG9wdGlvbgogICAgICAgIC0gYWxsb3dfYWJicmV2IC0tIEFsbG93IGxvbmcgb3B0aW9ucyB0byBiZSBhYmJyZXZpYXRlZCB1bmFtYmlndW91c2x5CiAgICAgICAgLSBleGl0X29uX2Vycm9yIC0tIERldGVybWluZXMgd2hldGhlciBvciBub3QgQXJndW1lbnRQYXJzZXIgZXhpdHMgd2l0aAogICAgICAgICAgICBlcnJvciBpbmZvIHdoZW4gYW4gZXJyb3Igb2NjdXJzCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwKICAgICAgICAgICAgICAgICBwcm9nPU5vbmUsCiAgICAgICAgICAgICAgICAgdXNhZ2U9Tm9uZSwKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25lLAogICAgICAgICAgICAgICAgIGVwaWxvZz1Ob25lLAogICAgICAgICAgICAgICAgIHBhcmVudHM9W10sCiAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPUhlbHBGb3JtYXR0ZXIsCiAgICAgICAgICAgICAgICAgcHJlZml4X2NoYXJzPSctJywKICAgICAgICAgICAgICAgICBmcm9tZmlsZV9wcmVmaXhfY2hhcnM9Tm9uZSwKICAgICAgICAgICAgICAgICBhcmd1bWVudF9kZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLAogICAgICAgICAgICAgICAgIGFkZF9oZWxwPVRydWUsCiAgICAgICAgICAgICAgICAgYWxsb3dfYWJicmV2PVRydWUsCiAgICAgICAgICAgICAgICAgZXhpdF9vbl9lcnJvcj1UcnVlKToKCiAgICAgICAgc3VwZXJpbml0ID0gc3VwZXIoQXJndW1lbnRQYXJzZXIsIHNlbGYpLl9faW5pdF9fCiAgICAgICAgc3VwZXJpbml0KGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICBwcmVmaXhfY2hhcnM9cHJlZml4X2NoYXJzLAogICAgICAgICAgICAgICAgICBhcmd1bWVudF9kZWZhdWx0PWFyZ3VtZW50X2RlZmF1bHQsCiAgICAgICAgICAgICAgICAgIGNvbmZsaWN0X2hhbmRsZXI9Y29uZmxpY3RfaGFuZGxlcikKCiAgICAgICAgIyBkZWZhdWx0IHNldHRpbmcgZm9yIHByb2cKICAgICAgICBpZiBwcm9nIGlzIE5vbmU6CiAgICAgICAgICAgIHByb2cgPSBfb3MucGF0aC5iYXNlbmFtZShfc3lzLmFyZ3ZbMF0pCgogICAgICAgIHNlbGYucHJvZyA9IHByb2cKICAgICAgICBzZWxmLnVzYWdlID0gdXNhZ2UKICAgICAgICBzZWxmLmVwaWxvZyA9IGVwaWxvZwogICAgICAgIHNlbGYuZm9ybWF0dGVyX2NsYXNzID0gZm9ybWF0dGVyX2NsYXNzCiAgICAgICAgc2VsZi5mcm9tZmlsZV9wcmVmaXhfY2hhcnMgPSBmcm9tZmlsZV9wcmVmaXhfY2hhcnMKICAgICAgICBzZWxmLmFkZF9oZWxwID0gYWRkX2hlbHAKICAgICAgICBzZWxmLmFsbG93X2FiYnJldiA9IGFsbG93X2FiYnJldgogICAgICAgIHNlbGYuZXhpdF9vbl9lcnJvciA9IGV4aXRfb25fZXJyb3IKCiAgICAgICAgYWRkX2dyb3VwID0gc2VsZi5hZGRfYXJndW1lbnRfZ3JvdXAKICAgICAgICBzZWxmLl9wb3NpdGlvbmFscyA9IGFkZF9ncm91cChfKCdwb3NpdGlvbmFsIGFyZ3VtZW50cycpKQogICAgICAgIHNlbGYuX29wdGlvbmFscyA9IGFkZF9ncm91cChfKCdvcHRpb25zJykpCiAgICAgICAgc2VsZi5fc3VicGFyc2VycyA9IE5vbmUKCiAgICAgICAgIyByZWdpc3RlciB0eXBlcwogICAgICAgIGRlZiBpZGVudGl0eShzdHJpbmcpOgogICAgICAgICAgICByZXR1cm4gc3RyaW5nCiAgICAgICAgc2VsZi5yZWdpc3RlcigndHlwZScsIE5vbmUsIGlkZW50aXR5KQoKICAgICAgICAjIGFkZCBoZWxwIGFyZ3VtZW50IGlmIG5lY2Vzc2FyeQogICAgICAgICMgKHVzaW5nIGV4cGxpY2l0IGRlZmF1bHQgdG8gb3ZlcnJpZGUgZ2xvYmFsIGFyZ3VtZW50X2RlZmF1bHQpCiAgICAgICAgZGVmYXVsdF9wcmVmaXggPSAnLScgaWYgJy0nIGluIHByZWZpeF9jaGFycyBlbHNlIHByZWZpeF9jaGFyc1swXQogICAgICAgIGlmIHNlbGYuYWRkX2hlbHA6CiAgICAgICAgICAgIHNlbGYuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAgICAgZGVmYXVsdF9wcmVmaXgrJ2gnLCBkZWZhdWx0X3ByZWZpeCoyKydoZWxwJywKICAgICAgICAgICAgICAgIGFjdGlvbj0naGVscCcsIGRlZmF1bHQ9U1VQUFJFU1MsCiAgICAgICAgICAgICAgICBoZWxwPV8oJ3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKSkKCiAgICAgICAgIyBhZGQgcGFyZW50IGFyZ3VtZW50cyBhbmQgZGVmYXVsdHMKICAgICAgICBmb3IgcGFyZW50IGluIHBhcmVudHM6CiAgICAgICAgICAgIHNlbGYuX2FkZF9jb250YWluZXJfYWN0aW9ucyhwYXJlbnQpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGRlZmF1bHRzID0gcGFyZW50Ll9kZWZhdWx0cwogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl9kZWZhdWx0cy51cGRhdGUoZGVmYXVsdHMpCgogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBQcmV0dHkgX19yZXByX18gbWV0aG9kcwogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PQogICAgZGVmIF9nZXRfa3dhcmdzKHNlbGYpOgogICAgICAgIG5hbWVzID0gWwogICAgICAgICAgICAncHJvZycsCiAgICAgICAgICAgICd1c2FnZScsCiAgICAgICAgICAgICdkZXNjcmlwdGlvbicsCiAgICAgICAgICAgICdmb3JtYXR0ZXJfY2xhc3MnLAogICAgICAgICAgICAnY29uZmxpY3RfaGFuZGxlcicsCiAgICAgICAgICAgICdhZGRfaGVscCcsCiAgICAgICAgXQogICAgICAgIHJldHVybiBbKG5hbWUsIGdldGF0dHIoc2VsZiwgbmFtZSkpIGZvciBuYW1lIGluIG5hbWVzXQoKICAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBPcHRpb25hbC9Qb3NpdGlvbmFsIGFkZGluZyBtZXRob2RzCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIGRlZiBhZGRfc3VicGFyc2VycyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgaWYgc2VsZi5fc3VicGFyc2VycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5lcnJvcihfKCdjYW5ub3QgaGF2ZSBtdWx0aXBsZSBzdWJwYXJzZXIgYXJndW1lbnRzJykpCgogICAgICAgICMgYWRkIHRoZSBwYXJzZXIgY2xhc3MgdG8gdGhlIGFyZ3VtZW50cyBpZiBpdCdzIG5vdCBwcmVzZW50CiAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoJ3BhcnNlcl9jbGFzcycsIHR5cGUoc2VsZikpCgogICAgICAgIGlmICd0aXRsZScgaW4ga3dhcmdzIG9yICdkZXNjcmlwdGlvbicgaW4ga3dhcmdzOgogICAgICAgICAgICB0aXRsZSA9IF8oa3dhcmdzLnBvcCgndGl0bGUnLCAnc3ViY29tbWFuZHMnKSkKICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBfKGt3YXJncy5wb3AoJ2Rlc2NyaXB0aW9uJywgTm9uZSkpCiAgICAgICAgICAgIHNlbGYuX3N1YnBhcnNlcnMgPSBzZWxmLmFkZF9hcmd1bWVudF9ncm91cCh0aXRsZSwgZGVzY3JpcHRpb24pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fc3VicGFyc2VycyA9IHNlbGYuX3Bvc2l0aW9uYWxzCgogICAgICAgICMgcHJvZyBkZWZhdWx0cyB0byB0aGUgdXNhZ2UgbWVzc2FnZSBvZiB0aGlzIHBhcnNlciwgc2tpcHBpbmcKICAgICAgICAjIG9wdGlvbmFsIGFyZ3VtZW50cyBhbmQgd2l0aCBubyAidXNhZ2U6IiBwcmVmaXgKICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdwcm9nJykgaXMgTm9uZToKICAgICAgICAgICAgZm9ybWF0dGVyID0gc2VsZi5fZ2V0X2Zvcm1hdHRlcigpCiAgICAgICAgICAgIHBvc2l0aW9uYWxzID0gc2VsZi5fZ2V0X3Bvc2l0aW9uYWxfYWN0aW9ucygpCiAgICAgICAgICAgIGdyb3VwcyA9IHNlbGYuX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cHMKICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF91c2FnZShzZWxmLnVzYWdlLCBwb3NpdGlvbmFscywgZ3JvdXBzLCAnJykKICAgICAgICAgICAga3dhcmdzWydwcm9nJ10gPSBmb3JtYXR0ZXIuZm9ybWF0X2hlbHAoKS5zdHJpcCgpCgogICAgICAgICMgY3JlYXRlIHRoZSBwYXJzZXJzIGFjdGlvbiBhbmQgYWRkIGl0IHRvIHRoZSBwb3NpdGlvbmFscyBsaXN0CiAgICAgICAgcGFyc2Vyc19jbGFzcyA9IHNlbGYuX3BvcF9hY3Rpb25fY2xhc3Moa3dhcmdzLCAncGFyc2VycycpCiAgICAgICAgYWN0aW9uID0gcGFyc2Vyc19jbGFzcyhvcHRpb25fc3RyaW5ncz1bXSwgKiprd2FyZ3MpCiAgICAgICAgc2VsZi5fc3VicGFyc2Vycy5fYWRkX2FjdGlvbihhY3Rpb24pCgogICAgICAgICMgcmV0dXJuIHRoZSBjcmVhdGVkIHBhcnNlcnMgYWN0aW9uCiAgICAgICAgcmV0dXJuIGFjdGlvbgoKICAgIGRlZiBfYWRkX2FjdGlvbihzZWxmLCBhY3Rpb24pOgogICAgICAgIGlmIGFjdGlvbi5vcHRpb25fc3RyaW5nczoKICAgICAgICAgICAgc2VsZi5fb3B0aW9uYWxzLl9hZGRfYWN0aW9uKGFjdGlvbikKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9wb3NpdGlvbmFscy5fYWRkX2FjdGlvbihhY3Rpb24pCiAgICAgICAgcmV0dXJuIGFjdGlvbgoKICAgIGRlZiBfZ2V0X29wdGlvbmFsX2FjdGlvbnMoc2VsZik6CiAgICAgICAgcmV0dXJuIFthY3Rpb24KICAgICAgICAgICAgICAgIGZvciBhY3Rpb24gaW4gc2VsZi5fYWN0aW9ucwogICAgICAgICAgICAgICAgaWYgYWN0aW9uLm9wdGlvbl9zdHJpbmdzXQoKICAgIGRlZiBfZ2V0X3Bvc2l0aW9uYWxfYWN0aW9ucyhzZWxmKToKICAgICAgICByZXR1cm4gW2FjdGlvbgogICAgICAgICAgICAgICAgZm9yIGFjdGlvbiBpbiBzZWxmLl9hY3Rpb25zCiAgICAgICAgICAgICAgICBpZiBub3QgYWN0aW9uLm9wdGlvbl9zdHJpbmdzXQoKICAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBDb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2luZyBtZXRob2RzCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIGRlZiBwYXJzZV9hcmdzKHNlbGYsIGFyZ3M9Tm9uZSwgbmFtZXNwYWNlPU5vbmUpOgogICAgICAgIGFyZ3MsIGFyZ3YgPSBzZWxmLnBhcnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlKQogICAgICAgIGlmIGFyZ3Y6CiAgICAgICAgICAgIG1zZyA9IF8oJ3VucmVjb2duaXplZCBhcmd1bWVudHM6ICVzJykKICAgICAgICAgICAgc2VsZi5lcnJvcihtc2cgJSAnICcuam9pbihhcmd2KSkKICAgICAgICByZXR1cm4gYXJncwoKICAgIGRlZiBwYXJzZV9rbm93bl9hcmdzKHNlbGYsIGFyZ3M9Tm9uZSwgbmFtZXNwYWNlPU5vbmUpOgogICAgICAgIGlmIGFyZ3MgaXMgTm9uZToKICAgICAgICAgICAgIyBhcmdzIGRlZmF1bHQgdG8gdGhlIHN5c3RlbSBhcmdzCiAgICAgICAgICAgIGFyZ3MgPSBfc3lzLmFyZ3ZbMTpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCBhcmdzIGFyZSBtdXRhYmxlCiAgICAgICAgICAgIGFyZ3MgPSBsaXN0KGFyZ3MpCgogICAgICAgICMgZGVmYXVsdCBOYW1lc3BhY2UgYnVpbHQgZnJvbSBwYXJzZXIgZGVmYXVsdHMKICAgICAgICBpZiBuYW1lc3BhY2UgaXMgTm9uZToKICAgICAgICAgICAgbmFtZXNwYWNlID0gTmFtZXNwYWNlKCkKCiAgICAgICAgIyBhZGQgYW55IGFjdGlvbiBkZWZhdWx0cyB0aGF0IGFyZW4ndCBwcmVzZW50CiAgICAgICAgZm9yIGFjdGlvbiBpbiBzZWxmLl9hY3Rpb25zOgogICAgICAgICAgICBpZiBhY3Rpb24uZGVzdCBpcyBub3QgU1VQUFJFU1M6CiAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KToKICAgICAgICAgICAgICAgICAgICBpZiBhY3Rpb24uZGVmYXVsdCBpcyBub3QgU1VQUFJFU1M6CiAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCwgYWN0aW9uLmRlZmF1bHQpCgogICAgICAgICMgYWRkIGFueSBwYXJzZXIgZGVmYXVsdHMgdGhhdCBhcmVuJ3QgcHJlc2VudAogICAgICAgIGZvciBkZXN0IGluIHNlbGYuX2RlZmF1bHRzOgogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihuYW1lc3BhY2UsIGRlc3QpOgogICAgICAgICAgICAgICAgc2V0YXR0cihuYW1lc3BhY2UsIGRlc3QsIHNlbGYuX2RlZmF1bHRzW2Rlc3RdKQoKICAgICAgICAjIHBhcnNlIHRoZSBhcmd1bWVudHMgYW5kIGV4aXQgaWYgdGhlcmUgYXJlIGFueSBlcnJvcnMKICAgICAgICBpZiBzZWxmLmV4aXRfb25fZXJyb3I6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG5hbWVzcGFjZSwgYXJncyA9IHNlbGYuX3BhcnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlKQogICAgICAgICAgICBleGNlcHQgQXJndW1lbnRFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICBzZWxmLmVycm9yKHN0cihlcnIpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5hbWVzcGFjZSwgYXJncyA9IHNlbGYuX3BhcnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlKQoKICAgICAgICBpZiBoYXNhdHRyKG5hbWVzcGFjZSwgX1VOUkVDT0dOSVpFRF9BUkdTX0FUVFIpOgogICAgICAgICAgICBhcmdzLmV4dGVuZChnZXRhdHRyKG5hbWVzcGFjZSwgX1VOUkVDT0dOSVpFRF9BUkdTX0FUVFIpKQogICAgICAgICAgICBkZWxhdHRyKG5hbWVzcGFjZSwgX1VOUkVDT0dOSVpFRF9BUkdTX0FUVFIpCiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSwgYXJncwoKICAgIGRlZiBfcGFyc2Vfa25vd25fYXJncyhzZWxmLCBhcmdfc3RyaW5ncywgbmFtZXNwYWNlKToKICAgICAgICAjIHJlcGxhY2UgYXJnIHN0cmluZ3MgdGhhdCBhcmUgZmlsZSByZWZlcmVuY2VzCiAgICAgICAgaWYgc2VsZi5mcm9tZmlsZV9wcmVmaXhfY2hhcnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGFyZ19zdHJpbmdzID0gc2VsZi5fcmVhZF9hcmdzX2Zyb21fZmlsZXMoYXJnX3N0cmluZ3MpCgogICAgICAgICMgbWFwIGFsbCBtdXR1YWxseSBleGNsdXNpdmUgYXJndW1lbnRzIHRvIHRoZSBvdGhlciBhcmd1bWVudHMKICAgICAgICAjIHRoZXkgY2FuJ3Qgb2NjdXIgd2l0aAogICAgICAgIGFjdGlvbl9jb25mbGljdHMgPSB7fQogICAgICAgIGZvciBtdXRleF9ncm91cCBpbiBzZWxmLl9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXBzOgogICAgICAgICAgICBncm91cF9hY3Rpb25zID0gbXV0ZXhfZ3JvdXAuX2dyb3VwX2FjdGlvbnMKICAgICAgICAgICAgZm9yIGksIG11dGV4X2FjdGlvbiBpbiBlbnVtZXJhdGUobXV0ZXhfZ3JvdXAuX2dyb3VwX2FjdGlvbnMpOgogICAgICAgICAgICAgICAgY29uZmxpY3RzID0gYWN0aW9uX2NvbmZsaWN0cy5zZXRkZWZhdWx0KG11dGV4X2FjdGlvbiwgW10pCiAgICAgICAgICAgICAgICBjb25mbGljdHMuZXh0ZW5kKGdyb3VwX2FjdGlvbnNbOmldKQogICAgICAgICAgICAgICAgY29uZmxpY3RzLmV4dGVuZChncm91cF9hY3Rpb25zW2kgKyAxOl0pCgogICAgICAgICMgZmluZCBhbGwgb3B0aW9uIGluZGljZXMsIGFuZCBkZXRlcm1pbmUgdGhlIGFyZ19zdHJpbmdfcGF0dGVybgogICAgICAgICMgd2hpY2ggaGFzIGFuICdPJyBpZiB0aGVyZSBpcyBhbiBvcHRpb24gYXQgYW4gaW5kZXgsCiAgICAgICAgIyBhbiAnQScgaWYgdGhlcmUgaXMgYW4gYXJndW1lbnQsIG9yIGEgJy0nIGlmIHRoZXJlIGlzIGEgJy0tJwogICAgICAgIG9wdGlvbl9zdHJpbmdfaW5kaWNlcyA9IHt9CiAgICAgICAgYXJnX3N0cmluZ19wYXR0ZXJuX3BhcnRzID0gW10KICAgICAgICBhcmdfc3RyaW5nc19pdGVyID0gaXRlcihhcmdfc3RyaW5ncykKICAgICAgICBmb3IgaSwgYXJnX3N0cmluZyBpbiBlbnVtZXJhdGUoYXJnX3N0cmluZ3NfaXRlcik6CgogICAgICAgICAgICAjIGFsbCBhcmdzIGFmdGVyIC0tIGFyZSBub24tb3B0aW9ucwogICAgICAgICAgICBpZiBhcmdfc3RyaW5nID09ICctLSc6CiAgICAgICAgICAgICAgICBhcmdfc3RyaW5nX3BhdHRlcm5fcGFydHMuYXBwZW5kKCctJykKICAgICAgICAgICAgICAgIGZvciBhcmdfc3RyaW5nIGluIGFyZ19zdHJpbmdzX2l0ZXI6CiAgICAgICAgICAgICAgICAgICAgYXJnX3N0cmluZ19wYXR0ZXJuX3BhcnRzLmFwcGVuZCgnQScpCgogICAgICAgICAgICAjIG90aGVyd2lzZSwgYWRkIHRoZSBhcmcgdG8gdGhlIGFyZyBzdHJpbmdzCiAgICAgICAgICAgICMgYW5kIG5vdGUgdGhlIGluZGV4IGlmIGl0IHdhcyBhbiBvcHRpb24KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG9wdGlvbl90dXBsZSA9IHNlbGYuX3BhcnNlX29wdGlvbmFsKGFyZ19zdHJpbmcpCiAgICAgICAgICAgICAgICBpZiBvcHRpb25fdHVwbGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuID0gJ0EnCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdfaW5kaWNlc1tpXSA9IG9wdGlvbl90dXBsZQogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gPSAnTycKICAgICAgICAgICAgICAgIGFyZ19zdHJpbmdfcGF0dGVybl9wYXJ0cy5hcHBlbmQocGF0dGVybikKCiAgICAgICAgIyBqb2luIHRoZSBwaWVjZXMgdG9nZXRoZXIgdG8gZm9ybSB0aGUgcGF0dGVybgogICAgICAgIGFyZ19zdHJpbmdzX3BhdHRlcm4gPSAnJy5qb2luKGFyZ19zdHJpbmdfcGF0dGVybl9wYXJ0cykKCiAgICAgICAgIyBjb252ZXJ0cyBhcmcgc3RyaW5ncyB0byB0aGUgYXBwcm9wcmlhdGUgYW5kIHRoZW4gdGFrZXMgdGhlIGFjdGlvbgogICAgICAgIHNlZW5fYWN0aW9ucyA9IHNldCgpCiAgICAgICAgc2Vlbl9ub25fZGVmYXVsdF9hY3Rpb25zID0gc2V0KCkKCiAgICAgICAgZGVmIHRha2VfYWN0aW9uKGFjdGlvbiwgYXJndW1lbnRfc3RyaW5ncywgb3B0aW9uX3N0cmluZz1Ob25lKToKICAgICAgICAgICAgc2Vlbl9hY3Rpb25zLmFkZChhY3Rpb24pCiAgICAgICAgICAgIGFyZ3VtZW50X3ZhbHVlcyA9IHNlbGYuX2dldF92YWx1ZXMoYWN0aW9uLCBhcmd1bWVudF9zdHJpbmdzKQoKICAgICAgICAgICAgIyBlcnJvciBpZiB0aGlzIGFyZ3VtZW50IGlzIG5vdCBhbGxvd2VkIHdpdGggb3RoZXIgcHJldmlvdXNseQogICAgICAgICAgICAjIHNlZW4gYXJndW1lbnRzLCBhc3N1bWluZyB0aGF0IGFjdGlvbnMgdGhhdCB1c2UgdGhlIGRlZmF1bHQKICAgICAgICAgICAgIyB2YWx1ZSBkb24ndCByZWFsbHkgY291bnQgYXMgInByZXNlbnQiCiAgICAgICAgICAgIGlmIGFyZ3VtZW50X3ZhbHVlcyBpcyBub3QgYWN0aW9uLmRlZmF1bHQ6CiAgICAgICAgICAgICAgICBzZWVuX25vbl9kZWZhdWx0X2FjdGlvbnMuYWRkKGFjdGlvbikKICAgICAgICAgICAgICAgIGZvciBjb25mbGljdF9hY3Rpb24gaW4gYWN0aW9uX2NvbmZsaWN0cy5nZXQoYWN0aW9uLCBbXSk6CiAgICAgICAgICAgICAgICAgICAgaWYgY29uZmxpY3RfYWN0aW9uIGluIHNlZW5fbm9uX2RlZmF1bHRfYWN0aW9uczoKICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gXygnbm90IGFsbG93ZWQgd2l0aCBhcmd1bWVudCAlcycpCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9uYW1lID0gX2dldF9hY3Rpb25fbmFtZShjb25mbGljdF9hY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoYWN0aW9uLCBtc2cgJSBhY3Rpb25fbmFtZSkKCiAgICAgICAgICAgICMgdGFrZSB0aGUgYWN0aW9uIGlmIHdlIGRpZG4ndCByZWNlaXZlIGEgU1VQUFJFU1MgdmFsdWUKICAgICAgICAgICAgIyAoZS5nLiBmcm9tIGEgZGVmYXVsdCkKICAgICAgICAgICAgaWYgYXJndW1lbnRfdmFsdWVzIGlzIG5vdCBTVVBQUkVTUzoKICAgICAgICAgICAgICAgIGFjdGlvbihzZWxmLCBuYW1lc3BhY2UsIGFyZ3VtZW50X3ZhbHVlcywgb3B0aW9uX3N0cmluZykKCiAgICAgICAgIyBmdW5jdGlvbiB0byBjb252ZXJ0IGFyZ19zdHJpbmdzIGludG8gYW4gb3B0aW9uYWwgYWN0aW9uCiAgICAgICAgZGVmIGNvbnN1bWVfb3B0aW9uYWwoc3RhcnRfaW5kZXgpOgoKICAgICAgICAgICAgIyBnZXQgdGhlIG9wdGlvbmFsIGlkZW50aWZpZWQgYXQgdGhpcyBpbmRleAogICAgICAgICAgICBvcHRpb25fdHVwbGUgPSBvcHRpb25fc3RyaW5nX2luZGljZXNbc3RhcnRfaW5kZXhdCiAgICAgICAgICAgIGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnID0gb3B0aW9uX3R1cGxlCgogICAgICAgICAgICAjIGlkZW50aWZ5IGFkZGl0aW9uYWwgb3B0aW9uYWxzIGluIHRoZSBzYW1lIGFyZyBzdHJpbmcKICAgICAgICAgICAgIyAoZS5nLiAteHl6IGlzIHRoZSBzYW1lIGFzIC14IC15IC16IGlmIG5vIGFyZ3MgYXJlIHJlcXVpcmVkKQogICAgICAgICAgICBtYXRjaF9hcmd1bWVudCA9IHNlbGYuX21hdGNoX2FyZ3VtZW50CiAgICAgICAgICAgIGFjdGlvbl90dXBsZXMgPSBbXQogICAgICAgICAgICB3aGlsZSBUcnVlOgoKICAgICAgICAgICAgICAgICMgaWYgd2UgZm91bmQgbm8gb3B0aW9uYWwgYWN0aW9uLCBza2lwIGl0CiAgICAgICAgICAgICAgICBpZiBhY3Rpb24gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBleHRyYXMuYXBwZW5kKGFyZ19zdHJpbmdzW3N0YXJ0X2luZGV4XSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRfaW5kZXggKyAxCgogICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiBleHBsaWNpdCBhcmd1bWVudCwgdHJ5IHRvIG1hdGNoIHRoZQogICAgICAgICAgICAgICAgIyBvcHRpb25hbCdzIHN0cmluZyBhcmd1bWVudHMgdG8gb25seSB0aGlzCiAgICAgICAgICAgICAgICBpZiBleHBsaWNpdF9hcmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgYXJnX2NvdW50ID0gbWF0Y2hfYXJndW1lbnQoYWN0aW9uLCAnQScpCgogICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIGFjdGlvbiBpcyBhIHNpbmdsZS1kYXNoIG9wdGlvbiBhbmQgdGFrZXMgbm8KICAgICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cywgdHJ5IHRvIHBhcnNlIG1vcmUgc2luZ2xlLWRhc2ggb3B0aW9ucyBvdXQKICAgICAgICAgICAgICAgICAgICAjIG9mIHRoZSB0YWlsIG9mIHRoZSBvcHRpb24gc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBzZWxmLnByZWZpeF9jaGFycwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgYXJnX2NvdW50ID09IDAKICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9wdGlvbl9zdHJpbmdbMV0gbm90IGluIGNoYXJzCiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBleHBsaWNpdF9hcmcgIT0gJycKICAgICAgICAgICAgICAgICAgICApOgogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fdHVwbGVzLmFwcGVuZCgoYWN0aW9uLCBbXSwgb3B0aW9uX3N0cmluZykpCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBvcHRpb25fc3RyaW5nWzBdCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbl9zdHJpbmcgPSBjaGFyICsgZXhwbGljaXRfYXJnWzBdCiAgICAgICAgICAgICAgICAgICAgICAgIG5ld19leHBsaWNpdF9hcmcgPSBleHBsaWNpdF9hcmdbMTpdIG9yIE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxzX21hcCA9IHNlbGYuX29wdGlvbl9zdHJpbmdfYWN0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb25fc3RyaW5nIGluIG9wdGlvbmFsc19tYXA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBvcHRpb25hbHNfbWFwW29wdGlvbl9zdHJpbmddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdF9hcmcgPSBuZXdfZXhwbGljaXRfYXJnCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBfKCdpZ25vcmVkIGV4cGxpY2l0IGFyZ3VtZW50ICVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoYWN0aW9uLCBtc2cgJSBleHBsaWNpdF9hcmcpCgogICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIGFjdGlvbiBleHBlY3QgZXhhY3RseSBvbmUgYXJndW1lbnQsIHdlJ3ZlCiAgICAgICAgICAgICAgICAgICAgIyBzdWNjZXNzZnVsbHkgbWF0Y2hlZCB0aGUgb3B0aW9uOyBleGl0IHRoZSBsb29wCiAgICAgICAgICAgICAgICAgICAgZWxpZiBhcmdfY291bnQgPT0gMToKICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCA9IHN0YXJ0X2luZGV4ICsgMQogICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gW2V4cGxpY2l0X2FyZ10KICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX3R1cGxlcy5hcHBlbmQoKGFjdGlvbiwgYXJncywgb3B0aW9uX3N0cmluZykpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgICAgICAgICAgICAgICMgZXJyb3IgaWYgYSBkb3VibGUtZGFzaCBvcHRpb24gZGlkIG5vdCB1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBleHBsaWNpdCBhcmd1bWVudAogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IF8oJ2lnbm9yZWQgZXhwbGljaXQgYXJndW1lbnQgJXInKQogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKGFjdGlvbiwgbXNnICUgZXhwbGljaXRfYXJnKQoKICAgICAgICAgICAgICAgICMgaWYgdGhlcmUgaXMgbm8gZXhwbGljaXQgYXJndW1lbnQsIHRyeSB0byBtYXRjaCB0aGUKICAgICAgICAgICAgICAgICMgb3B0aW9uYWwncyBzdHJpbmcgYXJndW1lbnRzIHdpdGggdGhlIGZvbGxvd2luZyBzdHJpbmdzCiAgICAgICAgICAgICAgICAjIGlmIHN1Y2Nlc3NmdWwsIGV4aXQgdGhlIGxvb3AKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBzdGFydF9pbmRleCArIDEKICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZF9wYXR0ZXJucyA9IGFyZ19zdHJpbmdzX3BhdHRlcm5bc3RhcnQ6XQogICAgICAgICAgICAgICAgICAgIGFyZ19jb3VudCA9IG1hdGNoX2FyZ3VtZW50KGFjdGlvbiwgc2VsZWN0ZWRfcGF0dGVybnMpCiAgICAgICAgICAgICAgICAgICAgc3RvcCA9IHN0YXJ0ICsgYXJnX2NvdW50CiAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ19zdHJpbmdzW3N0YXJ0OnN0b3BdCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uX3R1cGxlcy5hcHBlbmQoKGFjdGlvbiwgYXJncywgb3B0aW9uX3N0cmluZykpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgICMgYWRkIHRoZSBPcHRpb25hbCB0byB0aGUgbGlzdCBhbmQgcmV0dXJuIHRoZSBpbmRleCBhdCB3aGljaAogICAgICAgICAgICAjIHRoZSBPcHRpb25hbCdzIHN0cmluZyBhcmdzIHN0b3BwZWQKICAgICAgICAgICAgYXNzZXJ0IGFjdGlvbl90dXBsZXMKICAgICAgICAgICAgZm9yIGFjdGlvbiwgYXJncywgb3B0aW9uX3N0cmluZyBpbiBhY3Rpb25fdHVwbGVzOgogICAgICAgICAgICAgICAgdGFrZV9hY3Rpb24oYWN0aW9uLCBhcmdzLCBvcHRpb25fc3RyaW5nKQogICAgICAgICAgICByZXR1cm4gc3RvcAoKICAgICAgICAjIHRoZSBsaXN0IG9mIFBvc2l0aW9uYWxzIGxlZnQgdG8gYmUgcGFyc2VkOyB0aGlzIGlzIG1vZGlmaWVkCiAgICAgICAgIyBieSBjb25zdW1lX3Bvc2l0aW9uYWxzKCkKICAgICAgICBwb3NpdGlvbmFscyA9IHNlbGYuX2dldF9wb3NpdGlvbmFsX2FjdGlvbnMoKQoKICAgICAgICAjIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYXJnX3N0cmluZ3MgaW50byBwb3NpdGlvbmFsIGFjdGlvbnMKICAgICAgICBkZWYgY29uc3VtZV9wb3NpdGlvbmFscyhzdGFydF9pbmRleCk6CiAgICAgICAgICAgICMgbWF0Y2ggYXMgbWFueSBQb3NpdGlvbmFscyBhcyBwb3NzaWJsZQogICAgICAgICAgICBtYXRjaF9wYXJ0aWFsID0gc2VsZi5fbWF0Y2hfYXJndW1lbnRzX3BhcnRpYWwKICAgICAgICAgICAgc2VsZWN0ZWRfcGF0dGVybiA9IGFyZ19zdHJpbmdzX3BhdHRlcm5bc3RhcnRfaW5kZXg6XQogICAgICAgICAgICBhcmdfY291bnRzID0gbWF0Y2hfcGFydGlhbChwb3NpdGlvbmFscywgc2VsZWN0ZWRfcGF0dGVybikKCiAgICAgICAgICAgICMgc2xpY2Ugb2ZmIHRoZSBhcHByb3ByaWF0ZSBhcmcgc3RyaW5ncyBmb3IgZWFjaCBQb3NpdGlvbmFsCiAgICAgICAgICAgICMgYW5kIGFkZCB0aGUgUG9zaXRpb25hbCBhbmQgaXRzIGFyZ3MgdG8gdGhlIGxpc3QKICAgICAgICAgICAgZm9yIGFjdGlvbiwgYXJnX2NvdW50IGluIHppcChwb3NpdGlvbmFscywgYXJnX2NvdW50cyk6CiAgICAgICAgICAgICAgICBhcmdzID0gYXJnX3N0cmluZ3Nbc3RhcnRfaW5kZXg6IHN0YXJ0X2luZGV4ICsgYXJnX2NvdW50XQogICAgICAgICAgICAgICAgc3RhcnRfaW5kZXggKz0gYXJnX2NvdW50CiAgICAgICAgICAgICAgICB0YWtlX2FjdGlvbihhY3Rpb24sIGFyZ3MpCgogICAgICAgICAgICAjIHNsaWNlIG9mZiB0aGUgUG9zaXRpb25hbHMgdGhhdCB3ZSBqdXN0IHBhcnNlZCBhbmQgcmV0dXJuIHRoZQogICAgICAgICAgICAjIGluZGV4IGF0IHdoaWNoIHRoZSBQb3NpdGlvbmFscycgc3RyaW5nIGFyZ3Mgc3RvcHBlZAogICAgICAgICAgICBwb3NpdGlvbmFsc1s6XSA9IHBvc2l0aW9uYWxzW2xlbihhcmdfY291bnRzKTpdCiAgICAgICAgICAgIHJldHVybiBzdGFydF9pbmRleAoKICAgICAgICAjIGNvbnN1bWUgUG9zaXRpb25hbHMgYW5kIE9wdGlvbmFscyBhbHRlcm5hdGVseSwgdW50aWwgd2UgaGF2ZQogICAgICAgICMgcGFzc2VkIHRoZSBsYXN0IG9wdGlvbiBzdHJpbmcKICAgICAgICBleHRyYXMgPSBbXQogICAgICAgIHN0YXJ0X2luZGV4ID0gMAogICAgICAgIGlmIG9wdGlvbl9zdHJpbmdfaW5kaWNlczoKICAgICAgICAgICAgbWF4X29wdGlvbl9zdHJpbmdfaW5kZXggPSBtYXgob3B0aW9uX3N0cmluZ19pbmRpY2VzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1heF9vcHRpb25fc3RyaW5nX2luZGV4ID0gLTEKICAgICAgICB3aGlsZSBzdGFydF9pbmRleCA8PSBtYXhfb3B0aW9uX3N0cmluZ19pbmRleDoKCiAgICAgICAgICAgICMgY29uc3VtZSBhbnkgUG9zaXRpb25hbHMgcHJlY2VkaW5nIHRoZSBuZXh0IG9wdGlvbgogICAgICAgICAgICBuZXh0X29wdGlvbl9zdHJpbmdfaW5kZXggPSBtaW4oWwogICAgICAgICAgICAgICAgaW5kZXgKICAgICAgICAgICAgICAgIGZvciBpbmRleCBpbiBvcHRpb25fc3RyaW5nX2luZGljZXMKICAgICAgICAgICAgICAgIGlmIGluZGV4ID49IHN0YXJ0X2luZGV4XSkKICAgICAgICAgICAgaWYgc3RhcnRfaW5kZXggIT0gbmV4dF9vcHRpb25fc3RyaW5nX2luZGV4OgogICAgICAgICAgICAgICAgcG9zaXRpb25hbHNfZW5kX2luZGV4ID0gY29uc3VtZV9wb3NpdGlvbmFscyhzdGFydF9pbmRleCkKCiAgICAgICAgICAgICAgICAjIG9ubHkgdHJ5IHRvIHBhcnNlIHRoZSBuZXh0IG9wdGlvbmFsIGlmIHdlIGRpZG4ndCBjb25zdW1lCiAgICAgICAgICAgICAgICAjIHRoZSBvcHRpb24gc3RyaW5nIGR1cmluZyB0aGUgcG9zaXRpb25hbHMgcGFyc2luZwogICAgICAgICAgICAgICAgaWYgcG9zaXRpb25hbHNfZW5kX2luZGV4ID4gc3RhcnRfaW5kZXg6CiAgICAgICAgICAgICAgICAgICAgc3RhcnRfaW5kZXggPSBwb3NpdGlvbmFsc19lbmRfaW5kZXgKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzdGFydF9pbmRleCA9IHBvc2l0aW9uYWxzX2VuZF9pbmRleAoKICAgICAgICAgICAgIyBpZiB3ZSBjb25zdW1lZCBhbGwgdGhlIHBvc2l0aW9uYWxzIHdlIGNvdWxkIGFuZCB3ZSdyZSBub3QKICAgICAgICAgICAgIyBhdCB0aGUgaW5kZXggb2YgYW4gb3B0aW9uIHN0cmluZywgdGhlcmUgd2VyZSBleHRyYSBhcmd1bWVudHMKICAgICAgICAgICAgaWYgc3RhcnRfaW5kZXggbm90IGluIG9wdGlvbl9zdHJpbmdfaW5kaWNlczoKICAgICAgICAgICAgICAgIHN0cmluZ3MgPSBhcmdfc3RyaW5nc1tzdGFydF9pbmRleDpuZXh0X29wdGlvbl9zdHJpbmdfaW5kZXhdCiAgICAgICAgICAgICAgICBleHRyYXMuZXh0ZW5kKHN0cmluZ3MpCiAgICAgICAgICAgICAgICBzdGFydF9pbmRleCA9IG5leHRfb3B0aW9uX3N0cmluZ19pbmRleAoKICAgICAgICAgICAgIyBjb25zdW1lIHRoZSBuZXh0IG9wdGlvbmFsIGFuZCBhbnkgYXJndW1lbnRzIGZvciBpdAogICAgICAgICAgICBzdGFydF9pbmRleCA9IGNvbnN1bWVfb3B0aW9uYWwoc3RhcnRfaW5kZXgpCgogICAgICAgICMgY29uc3VtZSBhbnkgcG9zaXRpb25hbHMgZm9sbG93aW5nIHRoZSBsYXN0IE9wdGlvbmFsCiAgICAgICAgc3RvcF9pbmRleCA9IGNvbnN1bWVfcG9zaXRpb25hbHMoc3RhcnRfaW5kZXgpCgogICAgICAgICMgaWYgd2UgZGlkbid0IGNvbnN1bWUgYWxsIHRoZSBhcmd1bWVudCBzdHJpbmdzLCB0aGVyZSB3ZXJlIGV4dHJhcwogICAgICAgIGV4dHJhcy5leHRlbmQoYXJnX3N0cmluZ3Nbc3RvcF9pbmRleDpdKQoKICAgICAgICAjIG1ha2Ugc3VyZSBhbGwgcmVxdWlyZWQgYWN0aW9ucyB3ZXJlIHByZXNlbnQgYW5kIGFsc28gY29udmVydAogICAgICAgICMgYWN0aW9uIGRlZmF1bHRzIHdoaWNoIHdlcmUgbm90IGdpdmVuIGFzIGFyZ3VtZW50cwogICAgICAgIHJlcXVpcmVkX2FjdGlvbnMgPSBbXQogICAgICAgIGZvciBhY3Rpb24gaW4gc2VsZi5fYWN0aW9uczoKICAgICAgICAgICAgaWYgYWN0aW9uIG5vdCBpbiBzZWVuX2FjdGlvbnM6CiAgICAgICAgICAgICAgICBpZiBhY3Rpb24ucmVxdWlyZWQ6CiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRfYWN0aW9ucy5hcHBlbmQoX2dldF9hY3Rpb25fbmFtZShhY3Rpb24pKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIENvbnZlcnQgYWN0aW9uIGRlZmF1bHQgbm93IGluc3RlYWQgb2YgZG9pbmcgaXQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgIyBwYXJzaW5nIGFyZ3VtZW50cyB0byBhdm9pZCBjYWxsaW5nIGNvbnZlcnQgZnVuY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgIyB0d2ljZSAod2hpY2ggbWF5IGZhaWwpIGlmIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4sIGJ1dAogICAgICAgICAgICAgICAgICAgICMgb25seSBpZiBpdCB3YXMgZGVmaW5lZCBhbHJlYWR5IGluIHRoZSBuYW1lc3BhY2UKICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmRlZmF1bHQgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoYWN0aW9uLmRlZmF1bHQsIHN0cikgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kZWZhdWx0IGlzIGdldGF0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCkpOgogICAgICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3ZhbHVlKGFjdGlvbiwgYWN0aW9uLmRlZmF1bHQpKQoKICAgICAgICBpZiByZXF1aXJlZF9hY3Rpb25zOgogICAgICAgICAgICBzZWxmLmVycm9yKF8oJ3RoZSBmb2xsb3dpbmcgYXJndW1lbnRzIGFyZSByZXF1aXJlZDogJXMnKSAlCiAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHJlcXVpcmVkX2FjdGlvbnMpKQoKICAgICAgICAjIG1ha2Ugc3VyZSBhbGwgcmVxdWlyZWQgZ3JvdXBzIGhhZCBvbmUgb3B0aW9uIHByZXNlbnQKICAgICAgICBmb3IgZ3JvdXAgaW4gc2VsZi5fbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwczoKICAgICAgICAgICAgaWYgZ3JvdXAucmVxdWlyZWQ6CiAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGluIGdyb3VwLl9ncm91cF9hY3Rpb25zOgogICAgICAgICAgICAgICAgICAgIGlmIGFjdGlvbiBpbiBzZWVuX25vbl9kZWZhdWx0X2FjdGlvbnM6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgICAgICAgICAgIyBpZiBubyBhY3Rpb25zIHdlcmUgdXNlZCwgcmVwb3J0IHRoZSBlcnJvcgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IFtfZ2V0X2FjdGlvbl9uYW1lKGFjdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGluIGdyb3VwLl9ncm91cF9hY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYWN0aW9uLmhlbHAgaXMgbm90IFNVUFBSRVNTXQogICAgICAgICAgICAgICAgICAgIG1zZyA9IF8oJ29uZSBvZiB0aGUgYXJndW1lbnRzICVzIGlzIHJlcXVpcmVkJykKICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG1zZyAlICcgJy5qb2luKG5hbWVzKSkKCiAgICAgICAgIyByZXR1cm4gdGhlIHVwZGF0ZWQgbmFtZXNwYWNlIGFuZCB0aGUgZXh0cmEgYXJndW1lbnRzCiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSwgZXh0cmFzCgogICAgZGVmIF9yZWFkX2FyZ3NfZnJvbV9maWxlcyhzZWxmLCBhcmdfc3RyaW5ncyk6CiAgICAgICAgIyBleHBhbmQgYXJndW1lbnRzIHJlZmVyZW5jaW5nIGZpbGVzCiAgICAgICAgbmV3X2FyZ19zdHJpbmdzID0gW10KICAgICAgICBmb3IgYXJnX3N0cmluZyBpbiBhcmdfc3RyaW5nczoKCiAgICAgICAgICAgICMgZm9yIHJlZ3VsYXIgYXJndW1lbnRzLCBqdXN0IGFkZCB0aGVtIGJhY2sgaW50byB0aGUgbGlzdAogICAgICAgICAgICBpZiBub3QgYXJnX3N0cmluZyBvciBhcmdfc3RyaW5nWzBdIG5vdCBpbiBzZWxmLmZyb21maWxlX3ByZWZpeF9jaGFyczoKICAgICAgICAgICAgICAgIG5ld19hcmdfc3RyaW5ncy5hcHBlbmQoYXJnX3N0cmluZykKCiAgICAgICAgICAgICMgcmVwbGFjZSBhcmd1bWVudHMgcmVmZXJlbmNpbmcgZmlsZXMgd2l0aCB0aGUgZmlsZSBjb250ZW50CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGFyZ19zdHJpbmdbMTpdKSBhcyBhcmdzX2ZpbGU6CiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19zdHJpbmdzID0gW10KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZ19saW5lIGluIGFyZ3NfZmlsZS5yZWFkKCkuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBzZWxmLmNvbnZlcnRfYXJnX2xpbmVfdG9fYXJncyhhcmdfbGluZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKGFyZykKICAgICAgICAgICAgICAgICAgICAgICAgYXJnX3N0cmluZ3MgPSBzZWxmLl9yZWFkX2FyZ3NfZnJvbV9maWxlcyhhcmdfc3RyaW5ncykKICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2FyZ19zdHJpbmdzLmV4dGVuZChhcmdfc3RyaW5ncykKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKHN0cihlcnIpKQoKICAgICAgICAjIHJldHVybiB0aGUgbW9kaWZpZWQgYXJndW1lbnQgbGlzdAogICAgICAgIHJldHVybiBuZXdfYXJnX3N0cmluZ3MKCiAgICBkZWYgY29udmVydF9hcmdfbGluZV90b19hcmdzKHNlbGYsIGFyZ19saW5lKToKICAgICAgICByZXR1cm4gW2FyZ19saW5lXQoKICAgIGRlZiBfbWF0Y2hfYXJndW1lbnQoc2VsZiwgYWN0aW9uLCBhcmdfc3RyaW5nc19wYXR0ZXJuKToKICAgICAgICAjIG1hdGNoIHRoZSBwYXR0ZXJuIGZvciB0aGlzIGFjdGlvbiB0byB0aGUgYXJnIHN0cmluZ3MKICAgICAgICBuYXJnc19wYXR0ZXJuID0gc2VsZi5fZ2V0X25hcmdzX3BhdHRlcm4oYWN0aW9uKQogICAgICAgIG1hdGNoID0gX3JlLm1hdGNoKG5hcmdzX3BhdHRlcm4sIGFyZ19zdHJpbmdzX3BhdHRlcm4pCgogICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHdlIHdlcmVuJ3QgYWJsZSB0byBmaW5kIGEgbWF0Y2gKICAgICAgICBpZiBtYXRjaCBpcyBOb25lOgogICAgICAgICAgICBuYXJnc19lcnJvcnMgPSB7CiAgICAgICAgICAgICAgICBOb25lOiBfKCdleHBlY3RlZCBvbmUgYXJndW1lbnQnKSwKICAgICAgICAgICAgICAgIE9QVElPTkFMOiBfKCdleHBlY3RlZCBhdCBtb3N0IG9uZSBhcmd1bWVudCcpLAogICAgICAgICAgICAgICAgT05FX09SX01PUkU6IF8oJ2V4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCcpLAogICAgICAgICAgICB9CiAgICAgICAgICAgIG1zZyA9IG5hcmdzX2Vycm9ycy5nZXQoYWN0aW9uLm5hcmdzKQogICAgICAgICAgICBpZiBtc2cgaXMgTm9uZToKICAgICAgICAgICAgICAgIG1zZyA9IG5nZXR0ZXh0KCdleHBlY3RlZCAlcyBhcmd1bWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQgJXMgYXJndW1lbnRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5uYXJncykgJSBhY3Rpb24ubmFyZ3MKICAgICAgICAgICAgcmFpc2UgQXJndW1lbnRFcnJvcihhY3Rpb24sIG1zZykKCiAgICAgICAgIyByZXR1cm4gdGhlIG51bWJlciBvZiBhcmd1bWVudHMgbWF0Y2hlZAogICAgICAgIHJldHVybiBsZW4obWF0Y2guZ3JvdXAoMSkpCgogICAgZGVmIF9tYXRjaF9hcmd1bWVudHNfcGFydGlhbChzZWxmLCBhY3Rpb25zLCBhcmdfc3RyaW5nc19wYXR0ZXJuKToKICAgICAgICAjIHByb2dyZXNzaXZlbHkgc2hvcnRlbiB0aGUgYWN0aW9ucyBsaXN0IGJ5IHNsaWNpbmcgb2ZmIHRoZQogICAgICAgICMgZmluYWwgYWN0aW9ucyB1bnRpbCB3ZSBmaW5kIGEgbWF0Y2gKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihhY3Rpb25zKSwgMCwgLTEpOgogICAgICAgICAgICBhY3Rpb25zX3NsaWNlID0gYWN0aW9uc1s6aV0KICAgICAgICAgICAgcGF0dGVybiA9ICcnLmpvaW4oW3NlbGYuX2dldF9uYXJnc19wYXR0ZXJuKGFjdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhY3Rpb24gaW4gYWN0aW9uc19zbGljZV0pCiAgICAgICAgICAgIG1hdGNoID0gX3JlLm1hdGNoKHBhdHRlcm4sIGFyZ19zdHJpbmdzX3BhdHRlcm4pCiAgICAgICAgICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChbbGVuKHN0cmluZykgZm9yIHN0cmluZyBpbiBtYXRjaC5ncm91cHMoKV0pCiAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAjIHJldHVybiB0aGUgbGlzdCBvZiBhcmcgc3RyaW5nIGNvdW50cwogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX3BhcnNlX29wdGlvbmFsKHNlbGYsIGFyZ19zdHJpbmcpOgogICAgICAgICMgaWYgaXQncyBhbiBlbXB0eSBzdHJpbmcsIGl0IHdhcyBtZWFudCB0byBiZSBhIHBvc2l0aW9uYWwKICAgICAgICBpZiBub3QgYXJnX3N0cmluZzoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgIyBpZiBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBwcmVmaXgsIGl0IHdhcyBtZWFudCB0byBiZSBwb3NpdGlvbmFsCiAgICAgICAgaWYgbm90IGFyZ19zdHJpbmdbMF0gaW4gc2VsZi5wcmVmaXhfY2hhcnM6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgICMgaWYgdGhlIG9wdGlvbiBzdHJpbmcgaXMgcHJlc2VudCBpbiB0aGUgcGFyc2VyLCByZXR1cm4gdGhlIGFjdGlvbgogICAgICAgIGlmIGFyZ19zdHJpbmcgaW4gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zOgogICAgICAgICAgICBhY3Rpb24gPSBzZWxmLl9vcHRpb25fc3RyaW5nX2FjdGlvbnNbYXJnX3N0cmluZ10KICAgICAgICAgICAgcmV0dXJuIGFjdGlvbiwgYXJnX3N0cmluZywgTm9uZQoKICAgICAgICAjIGlmIGl0J3MganVzdCBhIHNpbmdsZSBjaGFyYWN0ZXIsIGl0IHdhcyBtZWFudCB0byBiZSBwb3NpdGlvbmFsCiAgICAgICAgaWYgbGVuKGFyZ19zdHJpbmcpID09IDE6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgICMgaWYgdGhlIG9wdGlvbiBzdHJpbmcgYmVmb3JlIHRoZSAiPSIgaXMgcHJlc2VudCwgcmV0dXJuIHRoZSBhY3Rpb24KICAgICAgICBpZiAnPScgaW4gYXJnX3N0cmluZzoKICAgICAgICAgICAgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnID0gYXJnX3N0cmluZy5zcGxpdCgnPScsIDEpCiAgICAgICAgICAgIGlmIG9wdGlvbl9zdHJpbmcgaW4gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zOgogICAgICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zW29wdGlvbl9zdHJpbmddCiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aW9uLCBvcHRpb25fc3RyaW5nLCBleHBsaWNpdF9hcmcKCiAgICAgICAgIyBzZWFyY2ggdGhyb3VnaCBhbGwgcG9zc2libGUgcHJlZml4ZXMgb2YgdGhlIG9wdGlvbiBzdHJpbmcKICAgICAgICAjIGFuZCBhbGwgYWN0aW9ucyBpbiB0aGUgcGFyc2VyIGZvciBwb3NzaWJsZSBpbnRlcnByZXRhdGlvbnMKICAgICAgICBvcHRpb25fdHVwbGVzID0gc2VsZi5fZ2V0X29wdGlvbl90dXBsZXMoYXJnX3N0cmluZykKCiAgICAgICAgIyBpZiBtdWx0aXBsZSBhY3Rpb25zIG1hdGNoLCB0aGUgb3B0aW9uIHN0cmluZyB3YXMgYW1iaWd1b3VzCiAgICAgICAgaWYgbGVuKG9wdGlvbl90dXBsZXMpID4gMToKICAgICAgICAgICAgb3B0aW9ucyA9ICcsICcuam9pbihbb3B0aW9uX3N0cmluZwogICAgICAgICAgICAgICAgZm9yIGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnIGluIG9wdGlvbl90dXBsZXNdKQogICAgICAgICAgICBhcmdzID0geydvcHRpb24nOiBhcmdfc3RyaW5nLCAnbWF0Y2hlcyc6IG9wdGlvbnN9CiAgICAgICAgICAgIG1zZyA9IF8oJ2FtYmlndW91cyBvcHRpb246ICUob3B0aW9uKXMgY291bGQgbWF0Y2ggJShtYXRjaGVzKXMnKQogICAgICAgICAgICBzZWxmLmVycm9yKG1zZyAlIGFyZ3MpCgogICAgICAgICMgaWYgZXhhY3RseSBvbmUgYWN0aW9uIG1hdGNoZWQsIHRoaXMgc2VnbWVudGF0aW9uIGlzIGdvb2QsCiAgICAgICAgIyBzbyByZXR1cm4gdGhlIHBhcnNlZCBhY3Rpb24KICAgICAgICBlbGlmIGxlbihvcHRpb25fdHVwbGVzKSA9PSAxOgogICAgICAgICAgICBvcHRpb25fdHVwbGUsID0gb3B0aW9uX3R1cGxlcwogICAgICAgICAgICByZXR1cm4gb3B0aW9uX3R1cGxlCgogICAgICAgICMgaWYgaXQgd2FzIG5vdCBmb3VuZCBhcyBhbiBvcHRpb24sIGJ1dCBpdCBsb29rcyBsaWtlIGEgbmVnYXRpdmUKICAgICAgICAjIG51bWJlciwgaXQgd2FzIG1lYW50IHRvIGJlIHBvc2l0aW9uYWwKICAgICAgICAjIHVubGVzcyB0aGVyZSBhcmUgbmVnYXRpdmUtbnVtYmVyLWxpa2Ugb3B0aW9ucwogICAgICAgIGlmIHNlbGYuX25lZ2F0aXZlX251bWJlcl9tYXRjaGVyLm1hdGNoKGFyZ19zdHJpbmcpOgogICAgICAgICAgICBpZiBub3Qgc2VsZi5faGFzX25lZ2F0aXZlX251bWJlcl9vcHRpb25hbHM6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICAjIGlmIGl0IGNvbnRhaW5zIGEgc3BhY2UsIGl0IHdhcyBtZWFudCB0byBiZSBhIHBvc2l0aW9uYWwKICAgICAgICBpZiAnICcgaW4gYXJnX3N0cmluZzoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgIyBpdCB3YXMgbWVhbnQgdG8gYmUgYW4gb3B0aW9uYWwgYnV0IHRoZXJlIGlzIG5vIHN1Y2ggb3B0aW9uCiAgICAgICAgIyBpbiB0aGlzIHBhcnNlciAodGhvdWdoIGl0IG1pZ2h0IGJlIGEgdmFsaWQgb3B0aW9uIGluIGEgc3VicGFyc2VyKQogICAgICAgIHJldHVybiBOb25lLCBhcmdfc3RyaW5nLCBOb25lCgogICAgZGVmIF9nZXRfb3B0aW9uX3R1cGxlcyhzZWxmLCBvcHRpb25fc3RyaW5nKToKICAgICAgICByZXN1bHQgPSBbXQoKICAgICAgICAjIG9wdGlvbiBzdHJpbmdzIHN0YXJ0aW5nIHdpdGggdHdvIHByZWZpeCBjaGFyYWN0ZXJzIGFyZSBvbmx5CiAgICAgICAgIyBzcGxpdCBhdCB0aGUgJz0nCiAgICAgICAgY2hhcnMgPSBzZWxmLnByZWZpeF9jaGFycwogICAgICAgIGlmIG9wdGlvbl9zdHJpbmdbMF0gaW4gY2hhcnMgYW5kIG9wdGlvbl9zdHJpbmdbMV0gaW4gY2hhcnM6CiAgICAgICAgICAgIGlmIHNlbGYuYWxsb3dfYWJicmV2OgogICAgICAgICAgICAgICAgaWYgJz0nIGluIG9wdGlvbl9zdHJpbmc6CiAgICAgICAgICAgICAgICAgICAgb3B0aW9uX3ByZWZpeCwgZXhwbGljaXRfYXJnID0gb3B0aW9uX3N0cmluZy5zcGxpdCgnPScsIDEpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG9wdGlvbl9wcmVmaXggPSBvcHRpb25fc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRfYXJnID0gTm9uZQogICAgICAgICAgICAgICAgZm9yIG9wdGlvbl9zdHJpbmcgaW4gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zOgogICAgICAgICAgICAgICAgICAgIGlmIG9wdGlvbl9zdHJpbmcuc3RhcnRzd2l0aChvcHRpb25fcHJlZml4KToKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zW29wdGlvbl9zdHJpbmddCiAgICAgICAgICAgICAgICAgICAgICAgIHR1cCA9IGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHVwKQoKICAgICAgICAjIHNpbmdsZSBjaGFyYWN0ZXIgb3B0aW9ucyBjYW4gYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhlaXIgYXJndW1lbnRzCiAgICAgICAgIyBidXQgbXVsdGlwbGUgY2hhcmFjdGVyIG9wdGlvbnMgYWx3YXlzIGhhdmUgdG8gaGF2ZSB0aGVpciBhcmd1bWVudAogICAgICAgICMgc2VwYXJhdGUKICAgICAgICBlbGlmIG9wdGlvbl9zdHJpbmdbMF0gaW4gY2hhcnMgYW5kIG9wdGlvbl9zdHJpbmdbMV0gbm90IGluIGNoYXJzOgogICAgICAgICAgICBvcHRpb25fcHJlZml4ID0gb3B0aW9uX3N0cmluZwogICAgICAgICAgICBleHBsaWNpdF9hcmcgPSBOb25lCiAgICAgICAgICAgIHNob3J0X29wdGlvbl9wcmVmaXggPSBvcHRpb25fc3RyaW5nWzoyXQogICAgICAgICAgICBzaG9ydF9leHBsaWNpdF9hcmcgPSBvcHRpb25fc3RyaW5nWzI6XQoKICAgICAgICAgICAgZm9yIG9wdGlvbl9zdHJpbmcgaW4gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zOgogICAgICAgICAgICAgICAgaWYgb3B0aW9uX3N0cmluZyA9PSBzaG9ydF9vcHRpb25fcHJlZml4OgogICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IHNlbGYuX29wdGlvbl9zdHJpbmdfYWN0aW9uc1tvcHRpb25fc3RyaW5nXQogICAgICAgICAgICAgICAgICAgIHR1cCA9IGFjdGlvbiwgb3B0aW9uX3N0cmluZywgc2hvcnRfZXhwbGljaXRfYXJnCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0dXApCiAgICAgICAgICAgICAgICBlbGlmIG9wdGlvbl9zdHJpbmcuc3RhcnRzd2l0aChvcHRpb25fcHJlZml4KToKICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBzZWxmLl9vcHRpb25fc3RyaW5nX2FjdGlvbnNbb3B0aW9uX3N0cmluZ10KICAgICAgICAgICAgICAgICAgICB0dXAgPSBhY3Rpb24sIG9wdGlvbl9zdHJpbmcsIGV4cGxpY2l0X2FyZwogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodHVwKQoKICAgICAgICAjIHNob3VsZG4ndCBldmVyIGdldCBoZXJlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5lcnJvcihfKCd1bmV4cGVjdGVkIG9wdGlvbiBzdHJpbmc6ICVzJykgJSBvcHRpb25fc3RyaW5nKQoKICAgICAgICAjIHJldHVybiB0aGUgY29sbGVjdGVkIG9wdGlvbiB0dXBsZXMKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIF9nZXRfbmFyZ3NfcGF0dGVybihzZWxmLCBhY3Rpb24pOgogICAgICAgICMgaW4gYWxsIGV4YW1wbGVzIGJlbG93LCB3ZSBoYXZlIHRvIGFsbG93IGZvciAnLS0nIGFyZ3MKICAgICAgICAjIHdoaWNoIGFyZSByZXByZXNlbnRlZCBhcyAnLScgaW4gdGhlIHBhdHRlcm4KICAgICAgICBuYXJncyA9IGFjdGlvbi5uYXJncwoKICAgICAgICAjIHRoZSBkZWZhdWx0IChOb25lKSBpcyBhc3N1bWVkIHRvIGJlIGEgc2luZ2xlIGFyZ3VtZW50CiAgICAgICAgaWYgbmFyZ3MgaXMgTm9uZToKICAgICAgICAgICAgbmFyZ3NfcGF0dGVybiA9ICcoLSpBLSopJwoKICAgICAgICAjIGFsbG93IHplcm8gb3Igb25lIGFyZ3VtZW50cwogICAgICAgIGVsaWYgbmFyZ3MgPT0gT1BUSU9OQUw6CiAgICAgICAgICAgIG5hcmdzX3BhdHRlcm4gPSAnKC0qQT8tKiknCgogICAgICAgICMgYWxsb3cgemVybyBvciBtb3JlIGFyZ3VtZW50cwogICAgICAgIGVsaWYgbmFyZ3MgPT0gWkVST19PUl9NT1JFOgogICAgICAgICAgICBuYXJnc19wYXR0ZXJuID0gJygtKltBLV0qKScKCiAgICAgICAgIyBhbGxvdyBvbmUgb3IgbW9yZSBhcmd1bWVudHMKICAgICAgICBlbGlmIG5hcmdzID09IE9ORV9PUl9NT1JFOgogICAgICAgICAgICBuYXJnc19wYXR0ZXJuID0gJygtKkFbQS1dKiknCgogICAgICAgICMgYWxsb3cgYW55IG51bWJlciBvZiBvcHRpb25zIG9yIGFyZ3VtZW50cwogICAgICAgIGVsaWYgbmFyZ3MgPT0gUkVNQUlOREVSOgogICAgICAgICAgICBuYXJnc19wYXR0ZXJuID0gJyhbLUFPXSopJwoKICAgICAgICAjIGFsbG93IG9uZSBhcmd1bWVudCBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIG9wdGlvbnMgb3IgYXJndW1lbnRzCiAgICAgICAgZWxpZiBuYXJncyA9PSBQQVJTRVI6CiAgICAgICAgICAgIG5hcmdzX3BhdHRlcm4gPSAnKC0qQVstQU9dKiknCgogICAgICAgICMgc3VwcHJlc3MgYWN0aW9uLCBsaWtlIG5hcmdzPTAKICAgICAgICBlbGlmIG5hcmdzID09IFNVUFBSRVNTOgogICAgICAgICAgICBuYXJnc19wYXR0ZXJuID0gJygtKi0qKScKCiAgICAgICAgIyBhbGwgb3RoZXJzIHNob3VsZCBiZSBpbnRlZ2VycwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5hcmdzX3BhdHRlcm4gPSAnKC0qJXMtKiknICUgJy0qJy5qb2luKCdBJyAqIG5hcmdzKQoKICAgICAgICAjIGlmIHRoaXMgaXMgYW4gb3B0aW9uYWwgYWN0aW9uLCAtLSBpcyBub3QgYWxsb3dlZAogICAgICAgIGlmIGFjdGlvbi5vcHRpb25fc3RyaW5nczoKICAgICAgICAgICAgbmFyZ3NfcGF0dGVybiA9IG5hcmdzX3BhdHRlcm4ucmVwbGFjZSgnLSonLCAnJykKICAgICAgICAgICAgbmFyZ3NfcGF0dGVybiA9IG5hcmdzX3BhdHRlcm4ucmVwbGFjZSgnLScsICcnKQoKICAgICAgICAjIHJldHVybiB0aGUgcGF0dGVybgogICAgICAgIHJldHVybiBuYXJnc19wYXR0ZXJuCgogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT0KICAgICMgQWx0IGNvbW1hbmQgbGluZSBhcmd1bWVudCBwYXJzaW5nLCBhbGxvd2luZyBmcmVlIGludGVybWl4CiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIGRlZiBwYXJzZV9pbnRlcm1peGVkX2FyZ3Moc2VsZiwgYXJncz1Ob25lLCBuYW1lc3BhY2U9Tm9uZSk6CiAgICAgICAgYXJncywgYXJndiA9IHNlbGYucGFyc2Vfa25vd25faW50ZXJtaXhlZF9hcmdzKGFyZ3MsIG5hbWVzcGFjZSkKICAgICAgICBpZiBhcmd2OgogICAgICAgICAgICBtc2cgPSBfKCd1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAlcycpCiAgICAgICAgICAgIHNlbGYuZXJyb3IobXNnICUgJyAnLmpvaW4oYXJndikpCiAgICAgICAgcmV0dXJuIGFyZ3MKCiAgICBkZWYgcGFyc2Vfa25vd25faW50ZXJtaXhlZF9hcmdzKHNlbGYsIGFyZ3M9Tm9uZSwgbmFtZXNwYWNlPU5vbmUpOgogICAgICAgICMgcmV0dXJucyBhIG5hbWVzcGFjZSBhbmQgbGlzdCBvZiBleHRyYXMKICAgICAgICAjCiAgICAgICAgIyBwb3NpdGlvbmFsIGNhbiBiZSBmcmVlbHkgaW50ZXJtaXhlZCB3aXRoIG9wdGlvbmFscy4gIG9wdGlvbmFscyBhcmUKICAgICAgICAjIGZpcnN0IHBhcnNlZCB3aXRoIGFsbCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBkZWFjdGl2YXRlZC4gIFRoZSAnZXh0cmFzJwogICAgICAgICMgYXJlIHRoZW4gcGFyc2VkLiAgSWYgdGhlIHBhcnNlciBkZWZpbml0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQogICAgICAgICMgaW50ZXJtaXhlZCBhc3N1bXB0aW9ucyAoZS5nLiB1c2Ugb2YgUkVNQUlOREVSLCBzdWJwYXJzZXJzKSBhCiAgICAgICAgIyBUeXBlRXJyb3IgaXMgcmFpc2VkLgogICAgICAgICMKICAgICAgICAjIHBvc2l0aW9uYWxzIGFyZSAnZGVhY3RpdmF0ZWQnIGJ5IHNldHRpbmcgbmFyZ3MgYW5kIGRlZmF1bHQgdG8KICAgICAgICAjIFNVUFBSRVNTLiAgVGhpcyBibG9ja3MgdGhlIGFkZGl0aW9uIG9mIHRoYXQgcG9zaXRpb25hbCB0byB0aGUKICAgICAgICAjIG5hbWVzcGFjZQoKICAgICAgICBwb3NpdGlvbmFscyA9IHNlbGYuX2dldF9wb3NpdGlvbmFsX2FjdGlvbnMoKQogICAgICAgIGEgPSBbYWN0aW9uIGZvciBhY3Rpb24gaW4gcG9zaXRpb25hbHMKICAgICAgICAgICAgIGlmIGFjdGlvbi5uYXJncyBpbiBbUEFSU0VSLCBSRU1BSU5ERVJdXQogICAgICAgIGlmIGE6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigncGFyc2VfaW50ZXJtaXhlZF9hcmdzOiBwb3NpdGlvbmFsIGFyZycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgd2l0aCBuYXJncz0lcyclYVswXS5uYXJncykKCiAgICAgICAgaWYgW2FjdGlvbi5kZXN0IGZvciBncm91cCBpbiBzZWxmLl9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXBzCiAgICAgICAgICAgIGZvciBhY3Rpb24gaW4gZ3JvdXAuX2dyb3VwX2FjdGlvbnMgaWYgYWN0aW9uIGluIHBvc2l0aW9uYWxzXToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdwYXJzZV9pbnRlcm1peGVkX2FyZ3M6IHBvc2l0aW9uYWwgaW4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG11dHVhbGx5RXhjbHVzaXZlR3JvdXAnKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNhdmVfdXNhZ2UgPSBzZWxmLnVzYWdlCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIHNlbGYudXNhZ2UgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAjIGNhcHR1cmUgdGhlIGZ1bGwgdXNhZ2UgZm9yIHVzZSBpbiBlcnJvciBtZXNzYWdlcwogICAgICAgICAgICAgICAgICAgIHNlbGYudXNhZ2UgPSBzZWxmLmZvcm1hdF91c2FnZSgpWzc6XQogICAgICAgICAgICAgICAgZm9yIGFjdGlvbiBpbiBwb3NpdGlvbmFsczoKICAgICAgICAgICAgICAgICAgICAjIGRlYWN0aXZhdGUgcG9zaXRpb25hbHMKICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2F2ZV9uYXJncyA9IGFjdGlvbi5uYXJncwogICAgICAgICAgICAgICAgICAgICMgYWN0aW9uLm5hcmdzID0gMAogICAgICAgICAgICAgICAgICAgIGFjdGlvbi5uYXJncyA9IFNVUFBSRVNTCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLnNhdmVfZGVmYXVsdCA9IGFjdGlvbi5kZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRlZmF1bHQgPSBTVVBQUkVTUwogICAgICAgICAgICAgICAgbmFtZXNwYWNlLCByZW1haW5pbmdfYXJncyA9IHNlbGYucGFyc2Vfa25vd25fYXJncyhhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UpCiAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGluIHBvc2l0aW9uYWxzOgogICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBlbXB0eSBwb3NpdGlvbmFsIHZhbHVlcyBmcm9tIG5hbWVzcGFjZQogICAgICAgICAgICAgICAgICAgIGlmIChoYXNhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZ2V0YXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KT09W10pOgogICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oJ0RvIG5vdCBleHBlY3QgJXMgaW4gJXMnICUgKGFjdGlvbi5kZXN0LCBuYW1lc3BhY2UpKQogICAgICAgICAgICAgICAgICAgICAgICBkZWxhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAjIHJlc3RvcmUgbmFyZ3MgYW5kIHVzYWdlIGJlZm9yZSBleGl0aW5nCiAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGluIHBvc2l0aW9uYWxzOgogICAgICAgICAgICAgICAgICAgIGFjdGlvbi5uYXJncyA9IGFjdGlvbi5zYXZlX25hcmdzCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRlZmF1bHQgPSBhY3Rpb24uc2F2ZV9kZWZhdWx0CiAgICAgICAgICAgIG9wdGlvbmFscyA9IHNlbGYuX2dldF9vcHRpb25hbF9hY3Rpb25zKCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIyBwYXJzZSBwb3NpdGlvbmFscy4gIG9wdGlvbmFscyBhcmVuJ3Qgbm9ybWFsbHkgcmVxdWlyZWQsIGJ1dAogICAgICAgICAgICAgICAgIyB0aGV5IGNvdWxkIGJlLCBzbyBtYWtlIHN1cmUgdGhleSBhcmVuJ3QuCiAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGluIG9wdGlvbmFsczoKICAgICAgICAgICAgICAgICAgICBhY3Rpb24uc2F2ZV9yZXF1aXJlZCA9IGFjdGlvbi5yZXF1aXJlZAogICAgICAgICAgICAgICAgICAgIGFjdGlvbi5yZXF1aXJlZCA9IEZhbHNlCiAgICAgICAgICAgICAgICBmb3IgZ3JvdXAgaW4gc2VsZi5fbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwczoKICAgICAgICAgICAgICAgICAgICBncm91cC5zYXZlX3JlcXVpcmVkID0gZ3JvdXAucmVxdWlyZWQKICAgICAgICAgICAgICAgICAgICBncm91cC5yZXF1aXJlZCA9IEZhbHNlCiAgICAgICAgICAgICAgICBuYW1lc3BhY2UsIGV4dHJhcyA9IHNlbGYucGFyc2Vfa25vd25fYXJncyhyZW1haW5pbmdfYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZSkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICMgcmVzdG9yZSBwYXJzZXIgdmFsdWVzIGJlZm9yZSBleGl0aW5nCiAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGluIG9wdGlvbmFsczoKICAgICAgICAgICAgICAgICAgICBhY3Rpb24ucmVxdWlyZWQgPSBhY3Rpb24uc2F2ZV9yZXF1aXJlZAogICAgICAgICAgICAgICAgZm9yIGdyb3VwIGluIHNlbGYuX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cHM6CiAgICAgICAgICAgICAgICAgICAgZ3JvdXAucmVxdWlyZWQgPSBncm91cC5zYXZlX3JlcXVpcmVkCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi51c2FnZSA9IHNhdmVfdXNhZ2UKICAgICAgICByZXR1cm4gbmFtZXNwYWNlLCBleHRyYXMKCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBWYWx1ZSBjb252ZXJzaW9uIG1ldGhvZHMKICAgICMgPT09PT09PT09PT09PT09PT09PT09PT09CiAgICBkZWYgX2dldF92YWx1ZXMoc2VsZiwgYWN0aW9uLCBhcmdfc3RyaW5ncyk6CiAgICAgICAgIyBmb3IgZXZlcnl0aGluZyBidXQgUEFSU0VSLCBSRU1BSU5ERVIgYXJncywgc3RyaXAgb3V0IGZpcnN0ICctLScKICAgICAgICBpZiBhY3Rpb24ubmFyZ3Mgbm90IGluIFtQQVJTRVIsIFJFTUFJTkRFUl06CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGFyZ19zdHJpbmdzLnJlbW92ZSgnLS0nKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgIyBvcHRpb25hbCBhcmd1bWVudCBwcm9kdWNlcyBhIGRlZmF1bHQgd2hlbiBub3QgcHJlc2VudAogICAgICAgIGlmIG5vdCBhcmdfc3RyaW5ncyBhbmQgYWN0aW9uLm5hcmdzID09IE9QVElPTkFMOgogICAgICAgICAgICBpZiBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGFjdGlvbi5jb25zdAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdmFsdWUgPSBhY3Rpb24uZGVmYXVsdAogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9nZXRfdmFsdWUoYWN0aW9uLCB2YWx1ZSkKICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3ZhbHVlKGFjdGlvbiwgdmFsdWUpCgogICAgICAgICMgd2hlbiBuYXJncz0nKicgb24gYSBwb3NpdGlvbmFsLCBpZiB0aGVyZSB3ZXJlIG5vIGNvbW1hbmQtbGluZQogICAgICAgICMgYXJncywgdXNlIHRoZSBkZWZhdWx0IGlmIGl0IGlzIGFueXRoaW5nIG90aGVyIHRoYW4gTm9uZQogICAgICAgIGVsaWYgKG5vdCBhcmdfc3RyaW5ncyBhbmQgYWN0aW9uLm5hcmdzID09IFpFUk9fT1JfTU9SRSBhbmQKICAgICAgICAgICAgICBub3QgYWN0aW9uLm9wdGlvbl9zdHJpbmdzKToKICAgICAgICAgICAgaWYgYWN0aW9uLmRlZmF1bHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGFjdGlvbi5kZWZhdWx0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGFyZ19zdHJpbmdzCiAgICAgICAgICAgIHNlbGYuX2NoZWNrX3ZhbHVlKGFjdGlvbiwgdmFsdWUpCgogICAgICAgICMgc2luZ2xlIGFyZ3VtZW50IG9yIG9wdGlvbmFsIGFyZ3VtZW50IHByb2R1Y2VzIGEgc2luZ2xlIHZhbHVlCiAgICAgICAgZWxpZiBsZW4oYXJnX3N0cmluZ3MpID09IDEgYW5kIGFjdGlvbi5uYXJncyBpbiBbTm9uZSwgT1BUSU9OQUxdOgogICAgICAgICAgICBhcmdfc3RyaW5nLCA9IGFyZ19zdHJpbmdzCiAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZ2V0X3ZhbHVlKGFjdGlvbiwgYXJnX3N0cmluZykKICAgICAgICAgICAgc2VsZi5fY2hlY2tfdmFsdWUoYWN0aW9uLCB2YWx1ZSkKCiAgICAgICAgIyBSRU1BSU5ERVIgYXJndW1lbnRzIGNvbnZlcnQgYWxsIHZhbHVlcywgY2hlY2tpbmcgbm9uZQogICAgICAgIGVsaWYgYWN0aW9uLm5hcmdzID09IFJFTUFJTkRFUjoKICAgICAgICAgICAgdmFsdWUgPSBbc2VsZi5fZ2V0X3ZhbHVlKGFjdGlvbiwgdikgZm9yIHYgaW4gYXJnX3N0cmluZ3NdCgogICAgICAgICMgUEFSU0VSIGFyZ3VtZW50cyBjb252ZXJ0IGFsbCB2YWx1ZXMsIGJ1dCBjaGVjayBvbmx5IHRoZSBmaXJzdAogICAgICAgIGVsaWYgYWN0aW9uLm5hcmdzID09IFBBUlNFUjoKICAgICAgICAgICAgdmFsdWUgPSBbc2VsZi5fZ2V0X3ZhbHVlKGFjdGlvbiwgdikgZm9yIHYgaW4gYXJnX3N0cmluZ3NdCiAgICAgICAgICAgIHNlbGYuX2NoZWNrX3ZhbHVlKGFjdGlvbiwgdmFsdWVbMF0pCgogICAgICAgICMgU1VQUFJFU1MgYXJndW1lbnQgZG9lcyBub3QgcHV0IGFueXRoaW5nIGluIHRoZSBuYW1lc3BhY2UKICAgICAgICBlbGlmIGFjdGlvbi5uYXJncyA9PSBTVVBQUkVTUzoKICAgICAgICAgICAgdmFsdWUgPSBTVVBQUkVTUwoKICAgICAgICAjIGFsbCBvdGhlciB0eXBlcyBvZiBuYXJncyBwcm9kdWNlIGEgbGlzdAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHZhbHVlID0gW3NlbGYuX2dldF92YWx1ZShhY3Rpb24sIHYpIGZvciB2IGluIGFyZ19zdHJpbmdzXQogICAgICAgICAgICBmb3IgdiBpbiB2YWx1ZToKICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3ZhbHVlKGFjdGlvbiwgdikKCiAgICAgICAgIyByZXR1cm4gdGhlIGNvbnZlcnRlZCB2YWx1ZQogICAgICAgIHJldHVybiB2YWx1ZQoKICAgIGRlZiBfZ2V0X3ZhbHVlKHNlbGYsIGFjdGlvbiwgYXJnX3N0cmluZyk6CiAgICAgICAgdHlwZV9mdW5jID0gc2VsZi5fcmVnaXN0cnlfZ2V0KCd0eXBlJywgYWN0aW9uLnR5cGUsIGFjdGlvbi50eXBlKQogICAgICAgIGlmIG5vdCBjYWxsYWJsZSh0eXBlX2Z1bmMpOgogICAgICAgICAgICBtc2cgPSBfKCclciBpcyBub3QgY2FsbGFibGUnKQogICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKGFjdGlvbiwgbXNnICUgdHlwZV9mdW5jKQoKICAgICAgICAjIGNvbnZlcnQgdGhlIHZhbHVlIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSB0eXBlX2Z1bmMoYXJnX3N0cmluZykKCiAgICAgICAgIyBBcmd1bWVudFR5cGVFcnJvcnMgaW5kaWNhdGUgZXJyb3JzCiAgICAgICAgZXhjZXB0IEFyZ3VtZW50VHlwZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgbmFtZSA9IGdldGF0dHIoYWN0aW9uLnR5cGUsICdfX25hbWVfXycsIHJlcHIoYWN0aW9uLnR5cGUpKQogICAgICAgICAgICBtc2cgPSBzdHIoZXJyKQogICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKGFjdGlvbiwgbXNnKQoKICAgICAgICAjIFR5cGVFcnJvcnMgb3IgVmFsdWVFcnJvcnMgYWxzbyBpbmRpY2F0ZSBlcnJvcnMKICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgIG5hbWUgPSBnZXRhdHRyKGFjdGlvbi50eXBlLCAnX19uYW1lX18nLCByZXByKGFjdGlvbi50eXBlKSkKICAgICAgICAgICAgYXJncyA9IHsndHlwZSc6IG5hbWUsICd2YWx1ZSc6IGFyZ19zdHJpbmd9CiAgICAgICAgICAgIG1zZyA9IF8oJ2ludmFsaWQgJSh0eXBlKXMgdmFsdWU6ICUodmFsdWUpcicpCiAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoYWN0aW9uLCBtc2cgJSBhcmdzKQoKICAgICAgICAjIHJldHVybiB0aGUgY29udmVydGVkIHZhbHVlCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBfY2hlY2tfdmFsdWUoc2VsZiwgYWN0aW9uLCB2YWx1ZSk6CiAgICAgICAgIyBjb252ZXJ0ZWQgdmFsdWUgbXVzdCBiZSBvbmUgb2YgdGhlIGNob2ljZXMgKGlmIHNwZWNpZmllZCkKICAgICAgICBpZiBhY3Rpb24uY2hvaWNlcyBpcyBub3QgTm9uZSBhbmQgdmFsdWUgbm90IGluIGFjdGlvbi5jaG9pY2VzOgogICAgICAgICAgICBhcmdzID0geyd2YWx1ZSc6IHZhbHVlLAogICAgICAgICAgICAgICAgICAgICdjaG9pY2VzJzogJywgJy5qb2luKG1hcChyZXByLCBhY3Rpb24uY2hvaWNlcykpfQogICAgICAgICAgICBtc2cgPSBfKCdpbnZhbGlkIGNob2ljZTogJSh2YWx1ZSlyIChjaG9vc2UgZnJvbSAlKGNob2ljZXMpcyknKQogICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKGFjdGlvbiwgbXNnICUgYXJncykKCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09CiAgICAjIEhlbHAtZm9ybWF0dGluZyBtZXRob2RzCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09CiAgICBkZWYgZm9ybWF0X3VzYWdlKHNlbGYpOgogICAgICAgIGZvcm1hdHRlciA9IHNlbGYuX2dldF9mb3JtYXR0ZXIoKQogICAgICAgIGZvcm1hdHRlci5hZGRfdXNhZ2Uoc2VsZi51c2FnZSwgc2VsZi5fYWN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cHMpCiAgICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXRfaGVscCgpCgogICAgZGVmIGZvcm1hdF9oZWxwKHNlbGYpOgogICAgICAgIGZvcm1hdHRlciA9IHNlbGYuX2dldF9mb3JtYXR0ZXIoKQoKICAgICAgICAjIHVzYWdlCiAgICAgICAgZm9ybWF0dGVyLmFkZF91c2FnZShzZWxmLnVzYWdlLCBzZWxmLl9hY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwcykKCiAgICAgICAgIyBkZXNjcmlwdGlvbgogICAgICAgIGZvcm1hdHRlci5hZGRfdGV4dChzZWxmLmRlc2NyaXB0aW9uKQoKICAgICAgICAjIHBvc2l0aW9uYWxzLCBvcHRpb25hbHMgYW5kIHVzZXItZGVmaW5lZCBncm91cHMKICAgICAgICBmb3IgYWN0aW9uX2dyb3VwIGluIHNlbGYuX2FjdGlvbl9ncm91cHM6CiAgICAgICAgICAgIGZvcm1hdHRlci5zdGFydF9zZWN0aW9uKGFjdGlvbl9ncm91cC50aXRsZSkKICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90ZXh0KGFjdGlvbl9ncm91cC5kZXNjcmlwdGlvbikKICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF9hcmd1bWVudHMoYWN0aW9uX2dyb3VwLl9ncm91cF9hY3Rpb25zKQogICAgICAgICAgICBmb3JtYXR0ZXIuZW5kX3NlY3Rpb24oKQoKICAgICAgICAjIGVwaWxvZwogICAgICAgIGZvcm1hdHRlci5hZGRfdGV4dChzZWxmLmVwaWxvZykKCiAgICAgICAgIyBkZXRlcm1pbmUgaGVscCBmcm9tIGZvcm1hdCBhYm92ZQogICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0X2hlbHAoKQoKICAgIGRlZiBfZ2V0X2Zvcm1hdHRlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5mb3JtYXR0ZXJfY2xhc3MocHJvZz1zZWxmLnByb2cpCgogICAgIyA9PT09PT09PT09PT09PT09PT09PT0KICAgICMgSGVscC1wcmludGluZyBtZXRob2RzCiAgICAjID09PT09PT09PT09PT09PT09PT09PQogICAgZGVmIHByaW50X3VzYWdlKHNlbGYsIGZpbGU9Tm9uZSk6CiAgICAgICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgICAgICBmaWxlID0gX3N5cy5zdGRvdXQKICAgICAgICBzZWxmLl9wcmludF9tZXNzYWdlKHNlbGYuZm9ybWF0X3VzYWdlKCksIGZpbGUpCgogICAgZGVmIHByaW50X2hlbHAoc2VsZiwgZmlsZT1Ob25lKToKICAgICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgICAgIGZpbGUgPSBfc3lzLnN0ZG91dAogICAgICAgIHNlbGYuX3ByaW50X21lc3NhZ2Uoc2VsZi5mb3JtYXRfaGVscCgpLCBmaWxlKQoKICAgIGRlZiBfcHJpbnRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBmaWxlPU5vbmUpOgogICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgICAgICAgIGZpbGUgPSBfc3lzLnN0ZGVycgogICAgICAgICAgICBmaWxlLndyaXRlKG1lc3NhZ2UpCgogICAgIyA9PT09PT09PT09PT09PT0KICAgICMgRXhpdGluZyBtZXRob2RzCiAgICAjID09PT09PT09PT09PT09PQogICAgZGVmIGV4aXQoc2VsZiwgc3RhdHVzPTAsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgc2VsZi5fcHJpbnRfbWVzc2FnZShtZXNzYWdlLCBfc3lzLnN0ZGVycikKICAgICAgICBfc3lzLmV4aXQoc3RhdHVzKQoKICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKICAgICAgICAiIiJlcnJvcihtZXNzYWdlOiBzdHJpbmcpCgogICAgICAgIFByaW50cyBhIHVzYWdlIG1lc3NhZ2UgaW5jb3Jwb3JhdGluZyB0aGUgbWVzc2FnZSB0byBzdGRlcnIgYW5kCiAgICAgICAgZXhpdHMuCgogICAgICAgIElmIHlvdSBvdmVycmlkZSB0aGlzIGluIGEgc3ViY2xhc3MsIGl0IHNob3VsZCBub3QgcmV0dXJuIC0tIGl0CiAgICAgICAgc2hvdWxkIGVpdGhlciBleGl0IG9yIHJhaXNlIGFuIGV4Y2VwdGlvbi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnByaW50X3VzYWdlKF9zeXMuc3RkZXJyKQogICAgICAgIGFyZ3MgPSB7J3Byb2cnOiBzZWxmLnByb2csICdtZXNzYWdlJzogbWVzc2FnZX0KICAgICAgICBzZWxmLmV4aXQoMiwgXygnJShwcm9nKXM6IGVycm9yOiAlKG1lc3NhZ2Upc1xuJykgJSBhcmdzKQpQSwMEFAAAAAAAAiCjVkXff+v77AAA++wAAAYAAABhc3QucHkiIiIKICAgIGFzdAogICAgfn5+CgogICAgVGhlIGBhc3RgIG1vZHVsZSBoZWxwcyBQeXRob24gYXBwbGljYXRpb25zIHRvIHByb2Nlc3MgdHJlZXMgb2YgdGhlIFB5dGhvbgogICAgYWJzdHJhY3Qgc3ludGF4IGdyYW1tYXIuICBUaGUgYWJzdHJhY3Qgc3ludGF4IGl0c2VsZiBtaWdodCBjaGFuZ2Ugd2l0aAogICAgZWFjaCBQeXRob24gcmVsZWFzZTsgdGhpcyBtb2R1bGUgaGVscHMgdG8gZmluZCBvdXQgcHJvZ3JhbW1hdGljYWxseSB3aGF0CiAgICB0aGUgY3VycmVudCBncmFtbWFyIGxvb2tzIGxpa2UgYW5kIGFsbG93cyBtb2RpZmljYXRpb25zIG9mIGl0LgoKICAgIEFuIGFic3RyYWN0IHN5bnRheCB0cmVlIGNhbiBiZSBnZW5lcmF0ZWQgYnkgcGFzc2luZyBgYXN0LlB5Q0ZfT05MWV9BU1RgIGFzCiAgICBhIGZsYWcgdG8gdGhlIGBjb21waWxlKClgIGJ1aWx0aW4gZnVuY3Rpb24gb3IgYnkgdXNpbmcgdGhlIGBwYXJzZSgpYAogICAgZnVuY3Rpb24gZnJvbSB0aGlzIG1vZHVsZS4gIFRoZSByZXN1bHQgd2lsbCBiZSBhIHRyZWUgb2Ygb2JqZWN0cyB3aG9zZQogICAgY2xhc3NlcyBhbGwgaW5oZXJpdCBmcm9tIGBhc3QuQVNUYC4KCiAgICBBIG1vZGlmaWVkIGFic3RyYWN0IHN5bnRheCB0cmVlIGNhbiBiZSBjb21waWxlZCBpbnRvIGEgUHl0aG9uIGNvZGUgb2JqZWN0CiAgICB1c2luZyB0aGUgYnVpbHQtaW4gYGNvbXBpbGUoKWAgZnVuY3Rpb24uCgogICAgQWRkaXRpb25hbGx5IHZhcmlvdXMgaGVscGVyIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgdGhhdCBtYWtlIHdvcmtpbmcgd2l0aAogICAgdGhlIHRyZWVzIHNpbXBsZXIuICBUaGUgbWFpbiBpbnRlbnRpb24gb2YgdGhlIGhlbHBlciBmdW5jdGlvbnMgYW5kIHRoaXMKICAgIG1vZHVsZSBpbiBnZW5lcmFsIGlzIHRvIHByb3ZpZGUgYW4gZWFzeSB0byB1c2UgaW50ZXJmYWNlIGZvciBsaWJyYXJpZXMKICAgIHRoYXQgd29yayB0aWdodGx5IHdpdGggdGhlIHB5dGhvbiBzeW50YXggKHRlbXBsYXRlIGVuZ2luZXMgZm9yIGV4YW1wbGUpLgoKCiAgICA6Y29weXJpZ2h0OiBDb3B5cmlnaHQgMjAwOCBieSBBcm1pbiBSb25hY2hlci4KICAgIDpsaWNlbnNlOiBQeXRob24gTGljZW5zZS4KIiIiCmltcG9ydCBzeXMKZnJvbSBfYXN0IGltcG9ydCAqCmZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIG51bGxjb250ZXh0CmZyb20gZW51bSBpbXBvcnQgSW50RW51bSwgYXV0bywgX3NpbXBsZV9lbnVtCgoKZGVmIHBhcnNlKHNvdXJjZSwgZmlsZW5hbWU9Jzx1bmtub3duPicsIG1vZGU9J2V4ZWMnLCAqLAogICAgICAgICAgdHlwZV9jb21tZW50cz1GYWxzZSwgZmVhdHVyZV92ZXJzaW9uPU5vbmUpOgogICAgIiIiCiAgICBQYXJzZSB0aGUgc291cmNlIGludG8gYW4gQVNUIG5vZGUuCiAgICBFcXVpdmFsZW50IHRvIGNvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgUHlDRl9PTkxZX0FTVCkuCiAgICBQYXNzIHR5cGVfY29tbWVudHM9VHJ1ZSB0byBnZXQgYmFjayB0eXBlIGNvbW1lbnRzIHdoZXJlIHRoZSBzeW50YXggYWxsb3dzLgogICAgIiIiCiAgICBmbGFncyA9IFB5Q0ZfT05MWV9BU1QKICAgIGlmIHR5cGVfY29tbWVudHM6CiAgICAgICAgZmxhZ3MgfD0gUHlDRl9UWVBFX0NPTU1FTlRTCiAgICBpZiBpc2luc3RhbmNlKGZlYXR1cmVfdmVyc2lvbiwgdHVwbGUpOgogICAgICAgIG1ham9yLCBtaW5vciA9IGZlYXR1cmVfdmVyc2lvbiAgIyBTaG91bGQgYmUgYSAyLXR1cGxlLgogICAgICAgIGFzc2VydCBtYWpvciA9PSAzCiAgICAgICAgZmVhdHVyZV92ZXJzaW9uID0gbWlub3IKICAgIGVsaWYgZmVhdHVyZV92ZXJzaW9uIGlzIE5vbmU6CiAgICAgICAgZmVhdHVyZV92ZXJzaW9uID0gLTEKICAgICMgRWxzZSBpdCBzaG91bGQgYmUgYW4gaW50IGdpdmluZyB0aGUgbWlub3IgdmVyc2lvbiBmb3IgMy54LgogICAgcmV0dXJuIGNvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICBfZmVhdHVyZV92ZXJzaW9uPWZlYXR1cmVfdmVyc2lvbikKCgpkZWYgbGl0ZXJhbF9ldmFsKG5vZGVfb3Jfc3RyaW5nKToKICAgICIiIgogICAgRXZhbHVhdGUgYW4gZXhwcmVzc2lvbiBub2RlIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgb25seSBhIFB5dGhvbgogICAgZXhwcmVzc2lvbi4gIFRoZSBzdHJpbmcgb3Igbm9kZSBwcm92aWRlZCBtYXkgb25seSBjb25zaXN0IG9mIHRoZSBmb2xsb3dpbmcKICAgIFB5dGhvbiBsaXRlcmFsIHN0cnVjdHVyZXM6IHN0cmluZ3MsIGJ5dGVzLCBudW1iZXJzLCB0dXBsZXMsIGxpc3RzLCBkaWN0cywKICAgIHNldHMsIGJvb2xlYW5zLCBhbmQgTm9uZS4KCiAgICBDYXV0aW9uOiBBIGNvbXBsZXggZXhwcmVzc2lvbiBjYW4gb3ZlcmZsb3cgdGhlIEMgc3RhY2sgYW5kIGNhdXNlIGEgY3Jhc2guCiAgICAiIiIKICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9vcl9zdHJpbmcsIHN0cik6CiAgICAgICAgbm9kZV9vcl9zdHJpbmcgPSBwYXJzZShub2RlX29yX3N0cmluZy5sc3RyaXAoIiBcdCIpLCBtb2RlPSdldmFsJykKICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9vcl9zdHJpbmcsIEV4cHJlc3Npb24pOgogICAgICAgIG5vZGVfb3Jfc3RyaW5nID0gbm9kZV9vcl9zdHJpbmcuYm9keQogICAgZGVmIF9yYWlzZV9tYWxmb3JtZWRfbm9kZShub2RlKToKICAgICAgICBtc2cgPSAibWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nIgogICAgICAgIGlmIGxubyA6PSBnZXRhdHRyKG5vZGUsICdsaW5lbm8nLCBOb25lKToKICAgICAgICAgICAgbXNnICs9IGYnIG9uIGxpbmUge2xub30nCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgKyBmJzoge25vZGUhcn0nKQogICAgZGVmIF9jb252ZXJ0X251bShub2RlKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCBDb25zdGFudCkgb3IgdHlwZShub2RlLnZhbHVlKSBub3QgaW4gKGludCwgZmxvYXQsIGNvbXBsZXgpOgogICAgICAgICAgICBfcmFpc2VfbWFsZm9ybWVkX25vZGUobm9kZSkKICAgICAgICByZXR1cm4gbm9kZS52YWx1ZQogICAgZGVmIF9jb252ZXJ0X3NpZ25lZF9udW0obm9kZSk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBVbmFyeU9wKSBhbmQgaXNpbnN0YW5jZShub2RlLm9wLCAoVUFkZCwgVVN1YikpOgogICAgICAgICAgICBvcGVyYW5kID0gX2NvbnZlcnRfbnVtKG5vZGUub3BlcmFuZCkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBVQWRkKToKICAgICAgICAgICAgICAgIHJldHVybiArIG9wZXJhbmQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiAtIG9wZXJhbmQKICAgICAgICByZXR1cm4gX2NvbnZlcnRfbnVtKG5vZGUpCiAgICBkZWYgX2NvbnZlcnQobm9kZSk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBDb25zdGFudCk6CiAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFR1cGxlKToKICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChfY29udmVydCwgbm9kZS5lbHRzKSkKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgTGlzdCk6CiAgICAgICAgICAgIHJldHVybiBsaXN0KG1hcChfY29udmVydCwgbm9kZS5lbHRzKSkKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgU2V0KToKICAgICAgICAgICAgcmV0dXJuIHNldChtYXAoX2NvbnZlcnQsIG5vZGUuZWx0cykpCiAgICAgICAgZWxpZiAoaXNpbnN0YW5jZShub2RlLCBDYWxsKSBhbmQgaXNpbnN0YW5jZShub2RlLmZ1bmMsIE5hbWUpIGFuZAogICAgICAgICAgICAgIG5vZGUuZnVuYy5pZCA9PSAnc2V0JyBhbmQgbm9kZS5hcmdzID09IG5vZGUua2V5d29yZHMgPT0gW10pOgogICAgICAgICAgICByZXR1cm4gc2V0KCkKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgRGljdCk6CiAgICAgICAgICAgIGlmIGxlbihub2RlLmtleXMpICE9IGxlbihub2RlLnZhbHVlcyk6CiAgICAgICAgICAgICAgICBfcmFpc2VfbWFsZm9ybWVkX25vZGUobm9kZSkKICAgICAgICAgICAgcmV0dXJuIGRpY3QoemlwKG1hcChfY29udmVydCwgbm9kZS5rZXlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChfY29udmVydCwgbm9kZS52YWx1ZXMpKSkKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQmluT3ApIGFuZCBpc2luc3RhbmNlKG5vZGUub3AsIChBZGQsIFN1YikpOgogICAgICAgICAgICBsZWZ0ID0gX2NvbnZlcnRfc2lnbmVkX251bShub2RlLmxlZnQpCiAgICAgICAgICAgIHJpZ2h0ID0gX2NvbnZlcnRfbnVtKG5vZGUucmlnaHQpCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGVmdCwgKGludCwgZmxvYXQpKSBhbmQgaXNpbnN0YW5jZShyaWdodCwgY29tcGxleCk6CiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIEFkZCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodAogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0CiAgICAgICAgcmV0dXJuIF9jb252ZXJ0X3NpZ25lZF9udW0obm9kZSkKICAgIHJldHVybiBfY29udmVydChub2RlX29yX3N0cmluZykKCgpkZWYgZHVtcChub2RlLCBhbm5vdGF0ZV9maWVsZHM9VHJ1ZSwgaW5jbHVkZV9hdHRyaWJ1dGVzPUZhbHNlLCAqLCBpbmRlbnQ9Tm9uZSk6CiAgICAiIiIKICAgIFJldHVybiBhIGZvcm1hdHRlZCBkdW1wIG9mIHRoZSB0cmVlIGluIG5vZGUuICBUaGlzIGlzIG1haW5seSB1c2VmdWwgZm9yCiAgICBkZWJ1Z2dpbmcgcHVycG9zZXMuICBJZiBhbm5vdGF0ZV9maWVsZHMgaXMgdHJ1ZSAoYnkgZGVmYXVsdCksCiAgICB0aGUgcmV0dXJuZWQgc3RyaW5nIHdpbGwgc2hvdyB0aGUgbmFtZXMgYW5kIHRoZSB2YWx1ZXMgZm9yIGZpZWxkcy4KICAgIElmIGFubm90YXRlX2ZpZWxkcyBpcyBmYWxzZSwgdGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSBtb3JlIGNvbXBhY3QgYnkKICAgIG9taXR0aW5nIHVuYW1iaWd1b3VzIGZpZWxkIG5hbWVzLiAgQXR0cmlidXRlcyBzdWNoIGFzIGxpbmUKICAgIG51bWJlcnMgYW5kIGNvbHVtbiBvZmZzZXRzIGFyZSBub3QgZHVtcGVkIGJ5IGRlZmF1bHQuICBJZiB0aGlzIGlzIHdhbnRlZCwKICAgIGluY2x1ZGVfYXR0cmlidXRlcyBjYW4gYmUgc2V0IHRvIHRydWUuICBJZiBpbmRlbnQgaXMgYSBub24tbmVnYXRpdmUKICAgIGludGVnZXIgb3Igc3RyaW5nLCB0aGVuIHRoZSB0cmVlIHdpbGwgYmUgcHJldHR5LXByaW50ZWQgd2l0aCB0aGF0IGluZGVudAogICAgbGV2ZWwuIE5vbmUgKHRoZSBkZWZhdWx0KSBzZWxlY3RzIHRoZSBzaW5nbGUgbGluZSByZXByZXNlbnRhdGlvbi4KICAgICIiIgogICAgZGVmIF9mb3JtYXQobm9kZSwgbGV2ZWw9MCk6CiAgICAgICAgaWYgaW5kZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICBsZXZlbCArPSAxCiAgICAgICAgICAgIHByZWZpeCA9ICdcbicgKyBpbmRlbnQgKiBsZXZlbAogICAgICAgICAgICBzZXAgPSAnLFxuJyArIGluZGVudCAqIGxldmVsCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJlZml4ID0gJycKICAgICAgICAgICAgc2VwID0gJywgJwogICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgQVNUKToKICAgICAgICAgICAgY2xzID0gdHlwZShub2RlKQogICAgICAgICAgICBhcmdzID0gW10KICAgICAgICAgICAgYWxsc2ltcGxlID0gVHJ1ZQogICAgICAgICAgICBrZXl3b3JkcyA9IGFubm90YXRlX2ZpZWxkcwogICAgICAgICAgICBmb3IgbmFtZSBpbiBub2RlLl9maWVsZHM6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKG5vZGUsIG5hbWUpCiAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAga2V5d29yZHMgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmUgYW5kIGdldGF0dHIoY2xzLCBuYW1lLCAuLi4pIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAga2V5d29yZHMgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIHZhbHVlLCBzaW1wbGUgPSBfZm9ybWF0KHZhbHVlLCBsZXZlbCkKICAgICAgICAgICAgICAgIGFsbHNpbXBsZSA9IGFsbHNpbXBsZSBhbmQgc2ltcGxlCiAgICAgICAgICAgICAgICBpZiBrZXl3b3JkczoKICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnJXM9JXMnICUgKG5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQodmFsdWUpCiAgICAgICAgICAgIGlmIGluY2x1ZGVfYXR0cmlidXRlcyBhbmQgbm9kZS5fYXR0cmlidXRlczoKICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIG5vZGUuX2F0dHJpYnV0ZXM6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldGF0dHIobm9kZSwgbmFtZSkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZSBhbmQgZ2V0YXR0cihjbHMsIG5hbWUsIC4uLikgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgc2ltcGxlID0gX2Zvcm1hdCh2YWx1ZSwgbGV2ZWwpCiAgICAgICAgICAgICAgICAgICAgYWxsc2ltcGxlID0gYWxsc2ltcGxlIGFuZCBzaW1wbGUKICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnJXM9JXMnICUgKG5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgaWYgYWxsc2ltcGxlIGFuZCBsZW4oYXJncykgPD0gMzoKICAgICAgICAgICAgICAgIHJldHVybiAnJXMoJXMpJyAlIChub2RlLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKGFyZ3MpKSwgbm90IGFyZ3MKICAgICAgICAgICAgcmV0dXJuICclcyglcyVzKScgJSAobm9kZS5fX2NsYXNzX18uX19uYW1lX18sIHByZWZpeCwgc2VwLmpvaW4oYXJncykpLCBGYWxzZQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBsaXN0KToKICAgICAgICAgICAgaWYgbm90IG5vZGU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1tdJywgVHJ1ZQogICAgICAgICAgICByZXR1cm4gJ1slcyVzXScgJSAocHJlZml4LCBzZXAuam9pbihfZm9ybWF0KHgsIGxldmVsKVswXSBmb3IgeCBpbiBub2RlKSksIEZhbHNlCiAgICAgICAgcmV0dXJuIHJlcHIobm9kZSksIFRydWUKCiAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCBBU1QpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXhwZWN0ZWQgQVNULCBnb3QgJXInICUgbm9kZS5fX2NsYXNzX18uX19uYW1lX18pCiAgICBpZiBpbmRlbnQgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGluZGVudCwgc3RyKToKICAgICAgICBpbmRlbnQgPSAnICcgKiBpbmRlbnQKICAgIHJldHVybiBfZm9ybWF0KG5vZGUpWzBdCgoKZGVmIGNvcHlfbG9jYXRpb24obmV3X25vZGUsIG9sZF9ub2RlKToKICAgICIiIgogICAgQ29weSBzb3VyY2UgbG9jYXRpb24gKGBsaW5lbm9gLCBgY29sX29mZnNldGAsIGBlbmRfbGluZW5vYCwgYW5kIGBlbmRfY29sX29mZnNldGAKICAgIGF0dHJpYnV0ZXMpIGZyb20gKm9sZF9ub2RlKiB0byAqbmV3X25vZGUqIGlmIHBvc3NpYmxlLCBhbmQgcmV0dXJuICpuZXdfbm9kZSouCiAgICAiIiIKICAgIGZvciBhdHRyIGluICdsaW5lbm8nLCAnY29sX29mZnNldCcsICdlbmRfbGluZW5vJywgJ2VuZF9jb2xfb2Zmc2V0JzoKICAgICAgICBpZiBhdHRyIGluIG9sZF9ub2RlLl9hdHRyaWJ1dGVzIGFuZCBhdHRyIGluIG5ld19ub2RlLl9hdHRyaWJ1dGVzOgogICAgICAgICAgICB2YWx1ZSA9IGdldGF0dHIob2xkX25vZGUsIGF0dHIsIE5vbmUpCiAgICAgICAgICAgICMgZW5kX2xpbmVubyBhbmQgZW5kX2NvbF9vZmZzZXQgYXJlIG9wdGlvbmFsIGF0dHJpYnV0ZXMsIGFuZCB0aGV5CiAgICAgICAgICAgICMgc2hvdWxkIGJlIGNvcGllZCB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBOb25lIG9yIG5vdC4KICAgICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmUgb3IgKAogICAgICAgICAgICAgICAgaGFzYXR0cihvbGRfbm9kZSwgYXR0cikgYW5kIGF0dHIuc3RhcnRzd2l0aCgiZW5kXyIpCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICBzZXRhdHRyKG5ld19ub2RlLCBhdHRyLCB2YWx1ZSkKICAgIHJldHVybiBuZXdfbm9kZQoKCmRlZiBmaXhfbWlzc2luZ19sb2NhdGlvbnMobm9kZSk6CiAgICAiIiIKICAgIFdoZW4geW91IGNvbXBpbGUgYSBub2RlIHRyZWUgd2l0aCBjb21waWxlKCksIHRoZSBjb21waWxlciBleHBlY3RzIGxpbmVubyBhbmQKICAgIGNvbF9vZmZzZXQgYXR0cmlidXRlcyBmb3IgZXZlcnkgbm9kZSB0aGF0IHN1cHBvcnRzIHRoZW0uICBUaGlzIGlzIHJhdGhlcgogICAgdGVkaW91cyB0byBmaWxsIGluIGZvciBnZW5lcmF0ZWQgbm9kZXMsIHNvIHRoaXMgaGVscGVyIGFkZHMgdGhlc2UgYXR0cmlidXRlcwogICAgcmVjdXJzaXZlbHkgd2hlcmUgbm90IGFscmVhZHkgc2V0LCBieSBzZXR0aW5nIHRoZW0gdG8gdGhlIHZhbHVlcyBvZiB0aGUKICAgIHBhcmVudCBub2RlLiAgSXQgd29ya3MgcmVjdXJzaXZlbHkgc3RhcnRpbmcgYXQgKm5vZGUqLgogICAgIiIiCiAgICBkZWYgX2ZpeChub2RlLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGVuZF9saW5lbm8sIGVuZF9jb2xfb2Zmc2V0KToKICAgICAgICBpZiAnbGluZW5vJyBpbiBub2RlLl9hdHRyaWJ1dGVzOgogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihub2RlLCAnbGluZW5vJyk6CiAgICAgICAgICAgICAgICBub2RlLmxpbmVubyA9IGxpbmVubwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbGluZW5vID0gbm9kZS5saW5lbm8KICAgICAgICBpZiAnZW5kX2xpbmVubycgaW4gbm9kZS5fYXR0cmlidXRlczoKICAgICAgICAgICAgaWYgZ2V0YXR0cihub2RlLCAnZW5kX2xpbmVubycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBub2RlLmVuZF9saW5lbm8gPSBlbmRfbGluZW5vCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbmRfbGluZW5vID0gbm9kZS5lbmRfbGluZW5vCiAgICAgICAgaWYgJ2NvbF9vZmZzZXQnIGluIG5vZGUuX2F0dHJpYnV0ZXM6CiAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG5vZGUsICdjb2xfb2Zmc2V0Jyk6CiAgICAgICAgICAgICAgICBub2RlLmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0ID0gbm9kZS5jb2xfb2Zmc2V0CiAgICAgICAgaWYgJ2VuZF9jb2xfb2Zmc2V0JyBpbiBub2RlLl9hdHRyaWJ1dGVzOgogICAgICAgICAgICBpZiBnZXRhdHRyKG5vZGUsICdlbmRfY29sX29mZnNldCcsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBub2RlLmVuZF9jb2xfb2Zmc2V0ID0gZW5kX2NvbF9vZmZzZXQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVuZF9jb2xfb2Zmc2V0ID0gbm9kZS5lbmRfY29sX29mZnNldAogICAgICAgIGZvciBjaGlsZCBpbiBpdGVyX2NoaWxkX25vZGVzKG5vZGUpOgogICAgICAgICAgICBfZml4KGNoaWxkLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGVuZF9saW5lbm8sIGVuZF9jb2xfb2Zmc2V0KQogICAgX2ZpeChub2RlLCAxLCAwLCAxLCAwKQogICAgcmV0dXJuIG5vZGUKCgpkZWYgaW5jcmVtZW50X2xpbmVubyhub2RlLCBuPTEpOgogICAgIiIiCiAgICBJbmNyZW1lbnQgdGhlIGxpbmUgbnVtYmVyIGFuZCBlbmQgbGluZSBudW1iZXIgb2YgZWFjaCBub2RlIGluIHRoZSB0cmVlCiAgICBzdGFydGluZyBhdCAqbm9kZSogYnkgKm4qLiBUaGlzIGlzIHVzZWZ1bCB0byAibW92ZSBjb2RlIiB0byBhIGRpZmZlcmVudAogICAgbG9jYXRpb24gaW4gYSBmaWxlLgogICAgIiIiCiAgICBmb3IgY2hpbGQgaW4gd2Fsayhub2RlKToKICAgICAgICAjIFR5cGVJZ25vcmUgaXMgYSBzcGVjaWFsIGNhc2Ugd2hlcmUgbGluZW5vIGlzIG5vdCBhbiBhdHRyaWJ1dGUKICAgICAgICAjIGJ1dCByYXRoZXIgYSBmaWVsZCBvZiB0aGUgbm9kZSBpdHNlbGYuCiAgICAgICAgaWYgaXNpbnN0YW5jZShjaGlsZCwgVHlwZUlnbm9yZSk6CiAgICAgICAgICAgIGNoaWxkLmxpbmVubyA9IGdldGF0dHIoY2hpbGQsICdsaW5lbm8nLCAwKSArIG4KICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgaWYgJ2xpbmVubycgaW4gY2hpbGQuX2F0dHJpYnV0ZXM6CiAgICAgICAgICAgIGNoaWxkLmxpbmVubyA9IGdldGF0dHIoY2hpbGQsICdsaW5lbm8nLCAwKSArIG4KICAgICAgICBpZiAoCiAgICAgICAgICAgICJlbmRfbGluZW5vIiBpbiBjaGlsZC5fYXR0cmlidXRlcwogICAgICAgICAgICBhbmQgKGVuZF9saW5lbm8gOj0gZ2V0YXR0cihjaGlsZCwgImVuZF9saW5lbm8iLCAwKSkgaXMgbm90IE5vbmUKICAgICAgICApOgogICAgICAgICAgICBjaGlsZC5lbmRfbGluZW5vID0gZW5kX2xpbmVubyArIG4KICAgIHJldHVybiBub2RlCgoKZGVmIGl0ZXJfZmllbGRzKG5vZGUpOgogICAgIiIiCiAgICBZaWVsZCBhIHR1cGxlIG9mIGBgKGZpZWxkbmFtZSwgdmFsdWUpYGAgZm9yIGVhY2ggZmllbGQgaW4gYGBub2RlLl9maWVsZHNgYAogICAgdGhhdCBpcyBwcmVzZW50IG9uICpub2RlKi4KICAgICIiIgogICAgZm9yIGZpZWxkIGluIG5vZGUuX2ZpZWxkczoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHlpZWxkIGZpZWxkLCBnZXRhdHRyKG5vZGUsIGZpZWxkKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwoKCmRlZiBpdGVyX2NoaWxkX25vZGVzKG5vZGUpOgogICAgIiIiCiAgICBZaWVsZCBhbGwgZGlyZWN0IGNoaWxkIG5vZGVzIG9mICpub2RlKiwgdGhhdCBpcywgYWxsIGZpZWxkcyB0aGF0IGFyZSBub2RlcwogICAgYW5kIGFsbCBpdGVtcyBvZiBmaWVsZHMgdGhhdCBhcmUgbGlzdHMgb2Ygbm9kZXMuCiAgICAiIiIKICAgIGZvciBuYW1lLCBmaWVsZCBpbiBpdGVyX2ZpZWxkcyhub2RlKToKICAgICAgICBpZiBpc2luc3RhbmNlKGZpZWxkLCBBU1QpOgogICAgICAgICAgICB5aWVsZCBmaWVsZAogICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWVsZCwgbGlzdCk6CiAgICAgICAgICAgIGZvciBpdGVtIGluIGZpZWxkOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCBBU1QpOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW0KCgpkZWYgZ2V0X2RvY3N0cmluZyhub2RlLCBjbGVhbj1UcnVlKToKICAgICIiIgogICAgUmV0dXJuIHRoZSBkb2NzdHJpbmcgZm9yIHRoZSBnaXZlbiBub2RlIG9yIE5vbmUgaWYgbm8gZG9jc3RyaW5nIGNhbgogICAgYmUgZm91bmQuICBJZiB0aGUgbm9kZSBwcm92aWRlZCBkb2VzIG5vdCBoYXZlIGRvY3N0cmluZ3MgYSBUeXBlRXJyb3IKICAgIHdpbGwgYmUgcmFpc2VkLgoKICAgIElmICpjbGVhbiogaXMgYFRydWVgLCBhbGwgdGFicyBhcmUgZXhwYW5kZWQgdG8gc3BhY2VzIGFuZCBhbnkgd2hpdGVzcGFjZQogICAgdGhhdCBjYW4gYmUgdW5pZm9ybWx5IHJlbW92ZWQgZnJvbSB0aGUgc2Vjb25kIGxpbmUgb253YXJkcyBpcyByZW1vdmVkLgogICAgIiIiCiAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCAoQXN5bmNGdW5jdGlvbkRlZiwgRnVuY3Rpb25EZWYsIENsYXNzRGVmLCBNb2R1bGUpKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVyIGNhbid0IGhhdmUgZG9jc3RyaW5ncyIgJSBub2RlLl9fY2xhc3NfXy5fX25hbWVfXykKICAgIGlmIG5vdChub2RlLmJvZHkgYW5kIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLCBFeHByKSk6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIG5vZGUgPSBub2RlLmJvZHlbMF0udmFsdWUKICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgU3RyKToKICAgICAgICB0ZXh0ID0gbm9kZS5zCiAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQ29uc3RhbnQpIGFuZCBpc2luc3RhbmNlKG5vZGUudmFsdWUsIHN0cik6CiAgICAgICAgdGV4dCA9IG5vZGUudmFsdWUKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGlmIGNsZWFuOgogICAgICAgIGltcG9ydCBpbnNwZWN0CiAgICAgICAgdGV4dCA9IGluc3BlY3QuY2xlYW5kb2ModGV4dCkKICAgIHJldHVybiB0ZXh0CgoKZGVmIF9zcGxpdGxpbmVzX25vX2ZmKHNvdXJjZSk6CiAgICAiIiJTcGxpdCBhIHN0cmluZyBpbnRvIGxpbmVzIGlnbm9yaW5nIGZvcm0gZmVlZCBhbmQgb3RoZXIgY2hhcnMuCgogICAgVGhpcyBtaW1pY3MgaG93IHRoZSBQeXRob24gcGFyc2VyIHNwbGl0cyBzb3VyY2UgY29kZS4KICAgICIiIgogICAgaWR4ID0gMAogICAgbGluZXMgPSBbXQogICAgbmV4dF9saW5lID0gJycKICAgIHdoaWxlIGlkeCA8IGxlbihzb3VyY2UpOgogICAgICAgIGMgPSBzb3VyY2VbaWR4XQogICAgICAgIG5leHRfbGluZSArPSBjCiAgICAgICAgaWR4ICs9IDEKICAgICAgICAjIEtlZXAgXHJcbiB0b2dldGhlcgogICAgICAgIGlmIGMgPT0gJ1xyJyBhbmQgaWR4IDwgbGVuKHNvdXJjZSkgYW5kIHNvdXJjZVtpZHhdID09ICdcbic6CiAgICAgICAgICAgIG5leHRfbGluZSArPSAnXG4nCiAgICAgICAgICAgIGlkeCArPSAxCiAgICAgICAgaWYgYyBpbiAnXHJcbic6CiAgICAgICAgICAgIGxpbmVzLmFwcGVuZChuZXh0X2xpbmUpCiAgICAgICAgICAgIG5leHRfbGluZSA9ICcnCgogICAgaWYgbmV4dF9saW5lOgogICAgICAgIGxpbmVzLmFwcGVuZChuZXh0X2xpbmUpCiAgICByZXR1cm4gbGluZXMKCgpkZWYgX3BhZF93aGl0ZXNwYWNlKHNvdXJjZSk6CiAgICByIiIiUmVwbGFjZSBhbGwgY2hhcnMgZXhjZXB0ICdcZlx0JyBpbiBhIGxpbmUgd2l0aCBzcGFjZXMuIiIiCiAgICByZXN1bHQgPSAnJwogICAgZm9yIGMgaW4gc291cmNlOgogICAgICAgIGlmIGMgaW4gJ1xmXHQnOgogICAgICAgICAgICByZXN1bHQgKz0gYwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlc3VsdCArPSAnICcKICAgIHJldHVybiByZXN1bHQKCgpkZWYgZ2V0X3NvdXJjZV9zZWdtZW50KHNvdXJjZSwgbm9kZSwgKiwgcGFkZGVkPUZhbHNlKToKICAgICIiIkdldCBzb3VyY2UgY29kZSBzZWdtZW50IG9mIHRoZSAqc291cmNlKiB0aGF0IGdlbmVyYXRlZCAqbm9kZSouCgogICAgSWYgc29tZSBsb2NhdGlvbiBpbmZvcm1hdGlvbiAoYGxpbmVub2AsIGBlbmRfbGluZW5vYCwgYGNvbF9vZmZzZXRgLAogICAgb3IgYGVuZF9jb2xfb2Zmc2V0YCkgaXMgbWlzc2luZywgcmV0dXJuIE5vbmUuCgogICAgSWYgKnBhZGRlZCogaXMgYFRydWVgLCB0aGUgZmlyc3QgbGluZSBvZiBhIG11bHRpLWxpbmUgc3RhdGVtZW50IHdpbGwKICAgIGJlIHBhZGRlZCB3aXRoIHNwYWNlcyB0byBtYXRjaCBpdHMgb3JpZ2luYWwgcG9zaXRpb24uCiAgICAiIiIKICAgIHRyeToKICAgICAgICBpZiBub2RlLmVuZF9saW5lbm8gaXMgTm9uZSBvciBub2RlLmVuZF9jb2xfb2Zmc2V0IGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgbGluZW5vID0gbm9kZS5saW5lbm8gLSAxCiAgICAgICAgZW5kX2xpbmVubyA9IG5vZGUuZW5kX2xpbmVubyAtIDEKICAgICAgICBjb2xfb2Zmc2V0ID0gbm9kZS5jb2xfb2Zmc2V0CiAgICAgICAgZW5kX2NvbF9vZmZzZXQgPSBub2RlLmVuZF9jb2xfb2Zmc2V0CiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBsaW5lcyA9IF9zcGxpdGxpbmVzX25vX2ZmKHNvdXJjZSkKICAgIGlmIGVuZF9saW5lbm8gPT0gbGluZW5vOgogICAgICAgIHJldHVybiBsaW5lc1tsaW5lbm9dLmVuY29kZSgpW2NvbF9vZmZzZXQ6ZW5kX2NvbF9vZmZzZXRdLmRlY29kZSgpCgogICAgaWYgcGFkZGVkOgogICAgICAgIHBhZGRpbmcgPSBfcGFkX3doaXRlc3BhY2UobGluZXNbbGluZW5vXS5lbmNvZGUoKVs6Y29sX29mZnNldF0uZGVjb2RlKCkpCiAgICBlbHNlOgogICAgICAgIHBhZGRpbmcgPSAnJwoKICAgIGZpcnN0ID0gcGFkZGluZyArIGxpbmVzW2xpbmVub10uZW5jb2RlKClbY29sX29mZnNldDpdLmRlY29kZSgpCiAgICBsYXN0ID0gbGluZXNbZW5kX2xpbmVub10uZW5jb2RlKClbOmVuZF9jb2xfb2Zmc2V0XS5kZWNvZGUoKQogICAgbGluZXMgPSBsaW5lc1tsaW5lbm8rMTplbmRfbGluZW5vXQoKICAgIGxpbmVzLmluc2VydCgwLCBmaXJzdCkKICAgIGxpbmVzLmFwcGVuZChsYXN0KQogICAgcmV0dXJuICcnLmpvaW4obGluZXMpCgoKZGVmIHdhbGsobm9kZSk6CiAgICAiIiIKICAgIFJlY3Vyc2l2ZWx5IHlpZWxkIGFsbCBkZXNjZW5kYW50IG5vZGVzIGluIHRoZSB0cmVlIHN0YXJ0aW5nIGF0ICpub2RlKgogICAgKGluY2x1ZGluZyAqbm9kZSogaXRzZWxmKSwgaW4gbm8gc3BlY2lmaWVkIG9yZGVyLiAgVGhpcyBpcyB1c2VmdWwgaWYgeW91CiAgICBvbmx5IHdhbnQgdG8gbW9kaWZ5IG5vZGVzIGluIHBsYWNlIGFuZCBkb24ndCBjYXJlIGFib3V0IHRoZSBjb250ZXh0LgogICAgIiIiCiAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogICAgdG9kbyA9IGRlcXVlKFtub2RlXSkKICAgIHdoaWxlIHRvZG86CiAgICAgICAgbm9kZSA9IHRvZG8ucG9wbGVmdCgpCiAgICAgICAgdG9kby5leHRlbmQoaXRlcl9jaGlsZF9ub2Rlcyhub2RlKSkKICAgICAgICB5aWVsZCBub2RlCgoKY2xhc3MgTm9kZVZpc2l0b3Iob2JqZWN0KToKICAgICIiIgogICAgQSBub2RlIHZpc2l0b3IgYmFzZSBjbGFzcyB0aGF0IHdhbGtzIHRoZSBhYnN0cmFjdCBzeW50YXggdHJlZSBhbmQgY2FsbHMgYQogICAgdmlzaXRvciBmdW5jdGlvbiBmb3IgZXZlcnkgbm9kZSBmb3VuZC4gIFRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBhIHZhbHVlCiAgICB3aGljaCBpcyBmb3J3YXJkZWQgYnkgdGhlIGB2aXNpdGAgbWV0aG9kLgoKICAgIFRoaXMgY2xhc3MgaXMgbWVhbnQgdG8gYmUgc3ViY2xhc3NlZCwgd2l0aCB0aGUgc3ViY2xhc3MgYWRkaW5nIHZpc2l0b3IKICAgIG1ldGhvZHMuCgogICAgUGVyIGRlZmF1bHQgdGhlIHZpc2l0b3IgZnVuY3Rpb25zIGZvciB0aGUgbm9kZXMgYXJlIGBgJ3Zpc2l0XydgYCArCiAgICBjbGFzcyBuYW1lIG9mIHRoZSBub2RlLiAgU28gYSBgVHJ5RmluYWxseWAgbm9kZSB2aXNpdCBmdW5jdGlvbiB3b3VsZAogICAgYmUgYHZpc2l0X1RyeUZpbmFsbHlgLiAgVGhpcyBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZCBieSBvdmVycmlkaW5nCiAgICB0aGUgYHZpc2l0YCBtZXRob2QuICBJZiBubyB2aXNpdG9yIGZ1bmN0aW9uIGV4aXN0cyBmb3IgYSBub2RlCiAgICAocmV0dXJuIHZhbHVlIGBOb25lYCkgdGhlIGBnZW5lcmljX3Zpc2l0YCB2aXNpdG9yIGlzIHVzZWQgaW5zdGVhZC4KCiAgICBEb24ndCB1c2UgdGhlIGBOb2RlVmlzaXRvcmAgaWYgeW91IHdhbnQgdG8gYXBwbHkgY2hhbmdlcyB0byBub2RlcyBkdXJpbmcKICAgIHRyYXZlcnNpbmcuICBGb3IgdGhpcyBhIHNwZWNpYWwgdmlzaXRvciBleGlzdHMgKGBOb2RlVHJhbnNmb3JtZXJgKSB0aGF0CiAgICBhbGxvd3MgbW9kaWZpY2F0aW9ucy4KICAgICIiIgoKICAgIGRlZiB2aXNpdChzZWxmLCBub2RlKToKICAgICAgICAiIiJWaXNpdCBhIG5vZGUuIiIiCiAgICAgICAgbWV0aG9kID0gJ3Zpc2l0XycgKyBub2RlLl9fY2xhc3NfXy5fX25hbWVfXwogICAgICAgIHZpc2l0b3IgPSBnZXRhdHRyKHNlbGYsIG1ldGhvZCwgc2VsZi5nZW5lcmljX3Zpc2l0KQogICAgICAgIHJldHVybiB2aXNpdG9yKG5vZGUpCgogICAgZGVmIGdlbmVyaWNfdmlzaXQoc2VsZiwgbm9kZSk6CiAgICAgICAgIiIiQ2FsbGVkIGlmIG5vIGV4cGxpY2l0IHZpc2l0b3IgZnVuY3Rpb24gZXhpc3RzIGZvciBhIG5vZGUuIiIiCiAgICAgICAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBpdGVyX2ZpZWxkcyhub2RlKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CiAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiB2YWx1ZToKICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIEFTVCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmlzaXQoaXRlbSkKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBBU1QpOgogICAgICAgICAgICAgICAgc2VsZi52aXNpdCh2YWx1ZSkKCiAgICBkZWYgdmlzaXRfQ29uc3RhbnQoc2VsZiwgbm9kZSk6CiAgICAgICAgdmFsdWUgPSBub2RlLnZhbHVlCiAgICAgICAgdHlwZV9uYW1lID0gX2NvbnN0X25vZGVfdHlwZV9uYW1lcy5nZXQodHlwZSh2YWx1ZSkpCiAgICAgICAgaWYgdHlwZV9uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIGZvciBjbHMsIG5hbWUgaW4gX2NvbnN0X25vZGVfdHlwZV9uYW1lcy5pdGVtcygpOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgY2xzKToKICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUgPSBuYW1lCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiB0eXBlX25hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG1ldGhvZCA9ICd2aXNpdF8nICsgdHlwZV9uYW1lCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHZpc2l0b3IgPSBnZXRhdHRyKHNlbGYsIG1ldGhvZCkKICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKGYie21ldGhvZH0gaXMgZGVwcmVjYXRlZDsgYWRkIHZpc2l0X0NvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iobm9kZSkKICAgICAgICByZXR1cm4gc2VsZi5nZW5lcmljX3Zpc2l0KG5vZGUpCgoKY2xhc3MgTm9kZVRyYW5zZm9ybWVyKE5vZGVWaXNpdG9yKToKICAgICIiIgogICAgQSA6Y2xhc3M6YE5vZGVWaXNpdG9yYCBzdWJjbGFzcyB0aGF0IHdhbGtzIHRoZSBhYnN0cmFjdCBzeW50YXggdHJlZSBhbmQKICAgIGFsbG93cyBtb2RpZmljYXRpb24gb2Ygbm9kZXMuCgogICAgVGhlIGBOb2RlVHJhbnNmb3JtZXJgIHdpbGwgd2FsayB0aGUgQVNUIGFuZCB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKICAgIHZpc2l0b3IgbWV0aG9kcyB0byByZXBsYWNlIG9yIHJlbW92ZSB0aGUgb2xkIG5vZGUuICBJZiB0aGUgcmV0dXJuIHZhbHVlIG9mCiAgICB0aGUgdmlzaXRvciBtZXRob2QgaXMgYGBOb25lYGAsIHRoZSBub2RlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGl0cyBsb2NhdGlvbiwKICAgIG90aGVyd2lzZSBpdCBpcyByZXBsYWNlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUuICBUaGUgcmV0dXJuIHZhbHVlIG1heSBiZSB0aGUKICAgIG9yaWdpbmFsIG5vZGUgaW4gd2hpY2ggY2FzZSBubyByZXBsYWNlbWVudCB0YWtlcyBwbGFjZS4KCiAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdHJhbnNmb3JtZXIgdGhhdCByZXdyaXRlcyBhbGwgb2NjdXJyZW5jZXMgb2YgbmFtZSBsb29rdXBzCiAgICAoYGBmb29gYCkgdG8gYGBkYXRhWydmb28nXWBgOjoKCiAgICAgICBjbGFzcyBSZXdyaXRlTmFtZShOb2RlVHJhbnNmb3JtZXIpOgoKICAgICAgICAgICBkZWYgdmlzaXRfTmFtZShzZWxmLCBub2RlKToKICAgICAgICAgICAgICAgcmV0dXJuIFN1YnNjcmlwdCgKICAgICAgICAgICAgICAgICAgIHZhbHVlPU5hbWUoaWQ9J2RhdGEnLCBjdHg9TG9hZCgpKSwKICAgICAgICAgICAgICAgICAgIHNsaWNlPUNvbnN0YW50KHZhbHVlPW5vZGUuaWQpLAogICAgICAgICAgICAgICAgICAgY3R4PW5vZGUuY3R4CiAgICAgICAgICAgICAgICkKCiAgICBLZWVwIGluIG1pbmQgdGhhdCBpZiB0aGUgbm9kZSB5b3UncmUgb3BlcmF0aW5nIG9uIGhhcyBjaGlsZCBub2RlcyB5b3UgbXVzdAogICAgZWl0aGVyIHRyYW5zZm9ybSB0aGUgY2hpbGQgbm9kZXMgeW91cnNlbGYgb3IgY2FsbCB0aGUgOm1ldGg6YGdlbmVyaWNfdmlzaXRgCiAgICBtZXRob2QgZm9yIHRoZSBub2RlIGZpcnN0LgoKICAgIEZvciBub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvbGxlY3Rpb24gb2Ygc3RhdGVtZW50cyAodGhhdCBhcHBsaWVzIHRvIGFsbAogICAgc3RhdGVtZW50IG5vZGVzKSwgdGhlIHZpc2l0b3IgbWF5IGFsc28gcmV0dXJuIGEgbGlzdCBvZiBub2RlcyByYXRoZXIgdGhhbgogICAganVzdCBhIHNpbmdsZSBub2RlLgoKICAgIFVzdWFsbHkgeW91IHVzZSB0aGUgdHJhbnNmb3JtZXIgbGlrZSB0aGlzOjoKCiAgICAgICBub2RlID0gWW91clRyYW5zZm9ybWVyKCkudmlzaXQobm9kZSkKICAgICIiIgoKICAgIGRlZiBnZW5lcmljX3Zpc2l0KHNlbGYsIG5vZGUpOgogICAgICAgIGZvciBmaWVsZCwgb2xkX3ZhbHVlIGluIGl0ZXJfZmllbGRzKG5vZGUpOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9sZF92YWx1ZSwgbGlzdCk6CiAgICAgICAgICAgICAgICBuZXdfdmFsdWVzID0gW10KICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBvbGRfdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgQVNUKToKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLnZpc2l0KHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgQVNUKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld192YWx1ZXMuZXh0ZW5kKHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBuZXdfdmFsdWVzLmFwcGVuZCh2YWx1ZSkKICAgICAgICAgICAgICAgIG9sZF92YWx1ZVs6XSA9IG5ld192YWx1ZXMKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9sZF92YWx1ZSwgQVNUKToKICAgICAgICAgICAgICAgIG5ld19ub2RlID0gc2VsZi52aXNpdChvbGRfdmFsdWUpCiAgICAgICAgICAgICAgICBpZiBuZXdfbm9kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGRlbGF0dHIobm9kZSwgZmllbGQpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNldGF0dHIobm9kZSwgZmllbGQsIG5ld19ub2RlKQogICAgICAgIHJldHVybiBub2RlCgoKIyBJZiB0aGUgYXN0IG1vZHVsZSBpcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2UsIG9ubHkgYWRkIGRlcHJlY2F0ZWQgbWV0aG9kcyBvbmNlCmlmIG5vdCBoYXNhdHRyKENvbnN0YW50LCAnbicpOgogICAgIyBUaGUgZm9sbG93aW5nIGNvZGUgaXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiAgICAjIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUuCgogICAgZGVmIF9nZXR0ZXIoc2VsZik6CiAgICAgICAgIiIiRGVwcmVjYXRlZC4gVXNlIHZhbHVlIGluc3RlYWQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKCiAgICBkZWYgX3NldHRlcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCgogICAgQ29uc3RhbnQubiA9IHByb3BlcnR5KF9nZXR0ZXIsIF9zZXR0ZXIpCiAgICBDb25zdGFudC5zID0gcHJvcGVydHkoX2dldHRlciwgX3NldHRlcikKCmNsYXNzIF9BQkModHlwZSk6CgogICAgZGVmIF9faW5pdF9fKGNscywgKmFyZ3MpOgogICAgICAgIGNscy5fX2RvY19fID0gIiIiRGVwcmVjYXRlZCBBU1Qgbm9kZSBjbGFzcy4gVXNlIGFzdC5Db25zdGFudCBpbnN0ZWFkIiIiCgogICAgZGVmIF9faW5zdGFuY2VjaGVja19fKGNscywgaW5zdCk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5zdCwgQ29uc3RhbnQpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBpZiBjbHMgaW4gX2NvbnN0X3R5cGVzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGluc3QudmFsdWUKICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gKAogICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UodmFsdWUsIF9jb25zdF90eXBlc1tjbHNdKSBhbmQKICAgICAgICAgICAgICAgICAgICBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgX2NvbnN0X3R5cGVzX25vdC5nZXQoY2xzLCAoKSkpCiAgICAgICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIHR5cGUuX19pbnN0YW5jZWNoZWNrX18oY2xzLCBpbnN0KQoKZGVmIF9uZXcoY2xzLCAqYXJncywgKiprd2FyZ3MpOgogICAgZm9yIGtleSBpbiBrd2FyZ3M6CiAgICAgICAgaWYga2V5IG5vdCBpbiBjbHMuX2ZpZWxkczoKICAgICAgICAgICAgIyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgYXJlIGFjY2VwdGVkCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgcG9zID0gY2xzLl9maWVsZHMuaW5kZXgoa2V5KQogICAgICAgIGlmIHBvcyA8IGxlbihhcmdzKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYie2Nscy5fX25hbWVfX30gZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQge2tleSFyfSIpCiAgICBpZiBjbHMgaW4gX2NvbnN0X3R5cGVzOgogICAgICAgIHJldHVybiBDb25zdGFudCgqYXJncywgKiprd2FyZ3MpCiAgICByZXR1cm4gQ29uc3RhbnQuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3YXJncykKCmNsYXNzIE51bShDb25zdGFudCwgbWV0YWNsYXNzPV9BQkMpOgogICAgX2ZpZWxkcyA9ICgnbicsKQogICAgX19uZXdfXyA9IF9uZXcKCmNsYXNzIFN0cihDb25zdGFudCwgbWV0YWNsYXNzPV9BQkMpOgogICAgX2ZpZWxkcyA9ICgncycsKQogICAgX19uZXdfXyA9IF9uZXcKCmNsYXNzIEJ5dGVzKENvbnN0YW50LCBtZXRhY2xhc3M9X0FCQyk6CiAgICBfZmllbGRzID0gKCdzJywpCiAgICBfX25ld19fID0gX25ldwoKY2xhc3MgTmFtZUNvbnN0YW50KENvbnN0YW50LCBtZXRhY2xhc3M9X0FCQyk6CiAgICBfX25ld19fID0gX25ldwoKY2xhc3MgRWxsaXBzaXMoQ29uc3RhbnQsIG1ldGFjbGFzcz1fQUJDKToKICAgIF9maWVsZHMgPSAoKQoKICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBjbHMgaXMgRWxsaXBzaXM6CiAgICAgICAgICAgIHJldHVybiBDb25zdGFudCguLi4sICphcmdzLCAqKmt3YXJncykKICAgICAgICByZXR1cm4gQ29uc3RhbnQuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3YXJncykKCl9jb25zdF90eXBlcyA9IHsKICAgIE51bTogKGludCwgZmxvYXQsIGNvbXBsZXgpLAogICAgU3RyOiAoc3RyLCksCiAgICBCeXRlczogKGJ5dGVzLCksCiAgICBOYW1lQ29uc3RhbnQ6ICh0eXBlKE5vbmUpLCBib29sKSwKICAgIEVsbGlwc2lzOiAodHlwZSguLi4pLCksCn0KX2NvbnN0X3R5cGVzX25vdCA9IHsKICAgIE51bTogKGJvb2wsKSwKfQoKX2NvbnN0X25vZGVfdHlwZV9uYW1lcyA9IHsKICAgIGJvb2w6ICdOYW1lQ29uc3RhbnQnLCAgIyBzaG91bGQgYmUgYmVmb3JlIGludAogICAgdHlwZShOb25lKTogJ05hbWVDb25zdGFudCcsCiAgICBpbnQ6ICdOdW0nLAogICAgZmxvYXQ6ICdOdW0nLAogICAgY29tcGxleDogJ051bScsCiAgICBzdHI6ICdTdHInLAogICAgYnl0ZXM6ICdCeXRlcycsCiAgICB0eXBlKC4uLik6ICdFbGxpcHNpcycsCn0KCmNsYXNzIHNsaWNlKEFTVCk6CiAgICAiIiJEZXByZWNhdGVkIEFTVCBub2RlIGNsYXNzLiIiIgoKY2xhc3MgSW5kZXgoc2xpY2UpOgogICAgIiIiRGVwcmVjYXRlZCBBU1Qgbm9kZSBjbGFzcy4gVXNlIHRoZSBpbmRleCB2YWx1ZSBkaXJlY3RseSBpbnN0ZWFkLiIiIgogICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSwgKiprd2FyZ3MpOgogICAgICAgIHJldHVybiB2YWx1ZQoKY2xhc3MgRXh0U2xpY2Uoc2xpY2UpOgogICAgIiIiRGVwcmVjYXRlZCBBU1Qgbm9kZSBjbGFzcy4gVXNlIGFzdC5UdXBsZSBpbnN0ZWFkLiIiIgogICAgZGVmIF9fbmV3X18oY2xzLCBkaW1zPSgpLCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIFR1cGxlKGxpc3QoZGltcyksIExvYWQoKSwgKiprd2FyZ3MpCgojIElmIHRoZSBhc3QgbW9kdWxlIGlzIGxvYWRlZCBtb3JlIHRoYW4gb25jZSwgb25seSBhZGQgZGVwcmVjYXRlZCBtZXRob2RzIG9uY2UKaWYgbm90IGhhc2F0dHIoVHVwbGUsICdkaW1zJyk6CiAgICAjIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KICAgICMgSXQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZS4KCiAgICBkZWYgX2RpbXNfZ2V0dGVyKHNlbGYpOgogICAgICAgICIiIkRlcHJlY2F0ZWQuIFVzZSBlbHRzIGluc3RlYWQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZWx0cwoKICAgIGRlZiBfZGltc19zZXR0ZXIoc2VsZiwgdmFsdWUpOgogICAgICAgIHNlbGYuZWx0cyA9IHZhbHVlCgogICAgVHVwbGUuZGltcyA9IHByb3BlcnR5KF9kaW1zX2dldHRlciwgX2RpbXNfc2V0dGVyKQoKY2xhc3MgU3VpdGUobW9kKToKICAgICIiIkRlcHJlY2F0ZWQgQVNUIG5vZGUgY2xhc3MuICBVbnVzZWQgaW4gUHl0aG9uIDMuIiIiCgpjbGFzcyBBdWdMb2FkKGV4cHJfY29udGV4dCk6CiAgICAiIiJEZXByZWNhdGVkIEFTVCBub2RlIGNsYXNzLiAgVW51c2VkIGluIFB5dGhvbiAzLiIiIgoKY2xhc3MgQXVnU3RvcmUoZXhwcl9jb250ZXh0KToKICAgICIiIkRlcHJlY2F0ZWQgQVNUIG5vZGUgY2xhc3MuICBVbnVzZWQgaW4gUHl0aG9uIDMuIiIiCgpjbGFzcyBQYXJhbShleHByX2NvbnRleHQpOgogICAgIiIiRGVwcmVjYXRlZCBBU1Qgbm9kZSBjbGFzcy4gIFVudXNlZCBpbiBQeXRob24gMy4iIiIKCgojIExhcmdlIGZsb2F0IGFuZCBpbWFnaW5hcnkgbGl0ZXJhbHMgZ2V0IHR1cm5lZCBpbnRvIGluZmluaXRpZXMgaW4gdGhlIEFTVC4KIyBXZSB1bnBhcnNlIHRob3NlIGluZmluaXRpZXMgdG8gSU5GU1RSLgpfSU5GU1RSID0gIjFlIiArIHJlcHIoc3lzLmZsb2F0X2luZm8ubWF4XzEwX2V4cCArIDEpCgpAX3NpbXBsZV9lbnVtKEludEVudW0pCmNsYXNzIF9QcmVjZWRlbmNlOgogICAgIiIiUHJlY2VkZW5jZSB0YWJsZSB0aGF0IG9yaWdpbmF0ZWQgZnJvbSBweXRob24gZ3JhbW1hci4iIiIKCiAgICBOQU1FRF9FWFBSID0gYXV0bygpICAgICAgIyA8dGFyZ2V0PiA6PSA8ZXhwcjE+CiAgICBUVVBMRSA9IGF1dG8oKSAgICAgICAgICAgIyA8ZXhwcjE+LCA8ZXhwcjI+CiAgICBZSUVMRCA9IGF1dG8oKSAgICAgICAgICAgIyAneWllbGQnLCAneWllbGQgZnJvbScKICAgIFRFU1QgPSBhdXRvKCkgICAgICAgICAgICAjICdpZictJ2Vsc2UnLCAnbGFtYmRhJwogICAgT1IgPSBhdXRvKCkgICAgICAgICAgICAgICMgJ29yJwogICAgQU5EID0gYXV0bygpICAgICAgICAgICAgICMgJ2FuZCcKICAgIE5PVCA9IGF1dG8oKSAgICAgICAgICAgICAjICdub3QnCiAgICBDTVAgPSBhdXRvKCkgICAgICAgICAgICAgIyAnPCcsICc+JywgJz09JywgJz49JywgJzw9JywgJyE9JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdpbicsICdub3QgaW4nLCAnaXMnLCAnaXMgbm90JwogICAgRVhQUiA9IGF1dG8oKQogICAgQk9SID0gRVhQUiAgICAgICAgICAgICAgICMgJ3wnCiAgICBCWE9SID0gYXV0bygpICAgICAgICAgICAgIyAnXicKICAgIEJBTkQgPSBhdXRvKCkgICAgICAgICAgICAjICcmJwogICAgU0hJRlQgPSBhdXRvKCkgICAgICAgICAgICMgJzw8JywgJz4+JwogICAgQVJJVEggPSBhdXRvKCkgICAgICAgICAgICMgJysnLCAnLScKICAgIFRFUk0gPSBhdXRvKCkgICAgICAgICAgICAjICcqJywgJ0AnLCAnLycsICclJywgJy8vJwogICAgRkFDVE9SID0gYXV0bygpICAgICAgICAgICMgdW5hcnkgJysnLCAnLScsICd+JwogICAgUE9XRVIgPSBhdXRvKCkgICAgICAgICAgICMgJyoqJwogICAgQVdBSVQgPSBhdXRvKCkgICAgICAgICAgICMgJ2F3YWl0JwogICAgQVRPTSA9IGF1dG8oKQoKICAgIGRlZiBuZXh0KHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYgKyAxKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gc2VsZgoKCl9TSU5HTEVfUVVPVEVTID0gKCInIiwgJyInKQpfTVVMVElfUVVPVEVTID0gKCciIiInLCAiJycnIikKX0FMTF9RVU9URVMgPSAoKl9TSU5HTEVfUVVPVEVTLCAqX01VTFRJX1FVT1RFUykKCmNsYXNzIF9VbnBhcnNlcihOb2RlVmlzaXRvcik6CiAgICAiIiJNZXRob2RzIGluIHRoaXMgY2xhc3MgcmVjdXJzaXZlbHkgdHJhdmVyc2UgYW4gQVNUIGFuZAogICAgb3V0cHV0IHNvdXJjZSBjb2RlIGZvciB0aGUgYWJzdHJhY3Qgc3ludGF4OyBvcmlnaW5hbCBmb3JtYXR0aW5nCiAgICBpcyBkaXNyZWdhcmRlZC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgX2F2b2lkX2JhY2tzbGFzaGVzPUZhbHNlKToKICAgICAgICBzZWxmLl9zb3VyY2UgPSBbXQogICAgICAgIHNlbGYuX3ByZWNlZGVuY2VzID0ge30KICAgICAgICBzZWxmLl90eXBlX2lnbm9yZXMgPSB7fQogICAgICAgIHNlbGYuX2luZGVudCA9IDAKICAgICAgICBzZWxmLl9hdm9pZF9iYWNrc2xhc2hlcyA9IF9hdm9pZF9iYWNrc2xhc2hlcwogICAgICAgIHNlbGYuX2luX3RyeV9zdGFyID0gRmFsc2UKCiAgICBkZWYgaW50ZXJsZWF2ZShzZWxmLCBpbnRlciwgZiwgc2VxKToKICAgICAgICAiIiJDYWxsIGYgb24gZWFjaCBpdGVtIGluIHNlcSwgY2FsbGluZyBpbnRlcigpIGluIGJldHdlZW4uIiIiCiAgICAgICAgc2VxID0gaXRlcihzZXEpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmKG5leHQoc2VxKSkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZvciB4IGluIHNlcToKICAgICAgICAgICAgICAgIGludGVyKCkKICAgICAgICAgICAgICAgIGYoeCkKCiAgICBkZWYgaXRlbXNfdmlldyhzZWxmLCB0cmF2ZXJzZXIsIGl0ZW1zKToKICAgICAgICAiIiJUcmF2ZXJzZSBhbmQgc2VwYXJhdGUgdGhlIGdpdmVuICppdGVtcyogd2l0aCBhIGNvbW1hIGFuZCBhcHBlbmQgaXQgdG8KICAgICAgICB0aGUgYnVmZmVyLiBJZiAqaXRlbXMqIGlzIGEgc2luZ2xlIGl0ZW0gc2VxdWVuY2UsIGEgdHJhaWxpbmcgY29tbWEKICAgICAgICB3aWxsIGJlIGFkZGVkLiIiIgogICAgICAgIGlmIGxlbihpdGVtcykgPT0gMToKICAgICAgICAgICAgdHJhdmVyc2VyKGl0ZW1zWzBdKQogICAgICAgICAgICBzZWxmLndyaXRlKCIsIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCB0cmF2ZXJzZXIsIGl0ZW1zKQoKICAgIGRlZiBtYXliZV9uZXdsaW5lKHNlbGYpOgogICAgICAgICIiIkFkZHMgYSBuZXdsaW5lIGlmIGl0IGlzbid0IHRoZSBzdGFydCBvZiBnZW5lcmF0ZWQgc291cmNlIiIiCiAgICAgICAgaWYgc2VsZi5fc291cmNlOgogICAgICAgICAgICBzZWxmLndyaXRlKCJcbiIpCgogICAgZGVmIGZpbGwoc2VsZiwgdGV4dD0iIik6CiAgICAgICAgIiIiSW5kZW50IGEgcGllY2Ugb2YgdGV4dCBhbmQgYXBwZW5kIGl0LCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQKICAgICAgICBpbmRlbnRhdGlvbiBsZXZlbCIiIgogICAgICAgIHNlbGYubWF5YmVfbmV3bGluZSgpCiAgICAgICAgc2VsZi53cml0ZSgiICAgICIgKiBzZWxmLl9pbmRlbnQgKyB0ZXh0KQoKICAgIGRlZiB3cml0ZShzZWxmLCAqdGV4dCk6CiAgICAgICAgIiIiQWRkIG5ldyBzb3VyY2UgcGFydHMiIiIKICAgICAgICBzZWxmLl9zb3VyY2UuZXh0ZW5kKHRleHQpCgogICAgQGNvbnRleHRtYW5hZ2VyCiAgICBkZWYgYnVmZmVyZWQoc2VsZiwgYnVmZmVyID0gTm9uZSk6CiAgICAgICAgaWYgYnVmZmVyIGlzIE5vbmU6CiAgICAgICAgICAgIGJ1ZmZlciA9IFtdCgogICAgICAgIG9yaWdpbmFsX3NvdXJjZSA9IHNlbGYuX3NvdXJjZQogICAgICAgIHNlbGYuX3NvdXJjZSA9IGJ1ZmZlcgogICAgICAgIHlpZWxkIGJ1ZmZlcgogICAgICAgIHNlbGYuX3NvdXJjZSA9IG9yaWdpbmFsX3NvdXJjZQoKICAgIEBjb250ZXh0bWFuYWdlcgogICAgZGVmIGJsb2NrKHNlbGYsICosIGV4dHJhID0gTm9uZSk6CiAgICAgICAgIiIiQSBjb250ZXh0IG1hbmFnZXIgZm9yIHByZXBhcmluZyB0aGUgc291cmNlIGZvciBibG9ja3MuIEl0IGFkZHMKICAgICAgICB0aGUgY2hhcmFjdGVyJzonLCBpbmNyZWFzZXMgdGhlIGluZGVudGF0aW9uIG9uIGVudGVyIGFuZCBkZWNyZWFzZXMKICAgICAgICB0aGUgaW5kZW50YXRpb24gb24gZXhpdC4gSWYgKmV4dHJhKiBpcyBnaXZlbiwgaXQgd2lsbCBiZSBkaXJlY3RseQogICAgICAgIGFwcGVuZGVkIGFmdGVyIHRoZSBjb2xvbiBjaGFyYWN0ZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi53cml0ZSgiOiIpCiAgICAgICAgaWYgZXh0cmE6CiAgICAgICAgICAgIHNlbGYud3JpdGUoZXh0cmEpCiAgICAgICAgc2VsZi5faW5kZW50ICs9IDEKICAgICAgICB5aWVsZAogICAgICAgIHNlbGYuX2luZGVudCAtPSAxCgogICAgQGNvbnRleHRtYW5hZ2VyCiAgICBkZWYgZGVsaW1pdChzZWxmLCBzdGFydCwgZW5kKToKICAgICAgICAiIiJBIGNvbnRleHQgbWFuYWdlciBmb3IgcHJlcGFyaW5nIHRoZSBzb3VyY2UgZm9yIGV4cHJlc3Npb25zLiBJdCBhZGRzCiAgICAgICAgKnN0YXJ0KiB0byB0aGUgYnVmZmVyIGFuZCBlbnRlcnMsIGFmdGVyIGV4aXQgaXQgYWRkcyAqZW5kKi4iIiIKCiAgICAgICAgc2VsZi53cml0ZShzdGFydCkKICAgICAgICB5aWVsZAogICAgICAgIHNlbGYud3JpdGUoZW5kKQoKICAgIGRlZiBkZWxpbWl0X2lmKHNlbGYsIHN0YXJ0LCBlbmQsIGNvbmRpdGlvbik6CiAgICAgICAgaWYgY29uZGl0aW9uOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kZWxpbWl0KHN0YXJ0LCBlbmQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIG51bGxjb250ZXh0KCkKCiAgICBkZWYgcmVxdWlyZV9wYXJlbnMoc2VsZiwgcHJlY2VkZW5jZSwgbm9kZSk6CiAgICAgICAgIiIiU2hvcnRjdXQgdG8gYWRkaW5nIHByZWNlZGVuY2UgcmVsYXRlZCBwYXJlbnMiIiIKICAgICAgICByZXR1cm4gc2VsZi5kZWxpbWl0X2lmKCIoIiwgIikiLCBzZWxmLmdldF9wcmVjZWRlbmNlKG5vZGUpID4gcHJlY2VkZW5jZSkKCiAgICBkZWYgZ2V0X3ByZWNlZGVuY2Uoc2VsZiwgbm9kZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX3ByZWNlZGVuY2VzLmdldChub2RlLCBfUHJlY2VkZW5jZS5URVNUKQoKICAgIGRlZiBzZXRfcHJlY2VkZW5jZShzZWxmLCBwcmVjZWRlbmNlLCAqbm9kZXMpOgogICAgICAgIGZvciBub2RlIGluIG5vZGVzOgogICAgICAgICAgICBzZWxmLl9wcmVjZWRlbmNlc1tub2RlXSA9IHByZWNlZGVuY2UKCiAgICBkZWYgZ2V0X3Jhd19kb2NzdHJpbmcoc2VsZiwgbm9kZSk6CiAgICAgICAgIiIiSWYgYSBkb2NzdHJpbmcgbm9kZSBpcyBmb3VuZCBpbiB0aGUgYm9keSBvZiB0aGUgKm5vZGUqIHBhcmFtZXRlciwKICAgICAgICByZXR1cm4gdGhhdCBkb2NzdHJpbmcgbm9kZSwgTm9uZSBvdGhlcndpc2UuCgogICAgICAgIExvZ2ljIG1pcnJvcmVkIGZyb20gYGBfUHlBU1RfR2V0RG9jU3RyaW5nYGAuIiIiCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoCiAgICAgICAgICAgIG5vZGUsIChBc3luY0Z1bmN0aW9uRGVmLCBGdW5jdGlvbkRlZiwgQ2xhc3NEZWYsIE1vZHVsZSkKICAgICAgICApIG9yIGxlbihub2RlLmJvZHkpIDwgMToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBub2RlID0gbm9kZS5ib2R5WzBdCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgRXhwcik6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgbm9kZSA9IG5vZGUudmFsdWUKICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIENvbnN0YW50KSBhbmQgaXNpbnN0YW5jZShub2RlLnZhbHVlLCBzdHIpOgogICAgICAgICAgICByZXR1cm4gbm9kZQoKICAgIGRlZiBnZXRfdHlwZV9jb21tZW50KHNlbGYsIG5vZGUpOgogICAgICAgIGNvbW1lbnQgPSBzZWxmLl90eXBlX2lnbm9yZXMuZ2V0KG5vZGUubGluZW5vKSBvciBub2RlLnR5cGVfY29tbWVudAogICAgICAgIGlmIGNvbW1lbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBmIiAjIHR5cGU6IHtjb21tZW50fSIKCiAgICBkZWYgdHJhdmVyc2Uoc2VsZiwgbm9kZSk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBsaXN0KToKICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbm9kZToKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoaXRlbSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzdXBlcigpLnZpc2l0KG5vZGUpCgogICAgIyBOb3RlOiBhcyB2aXNpdCgpIHJlc2V0cyB0aGUgb3V0cHV0IHRleHQsIGRvIE5PVCByZWx5IG9uCiAgICAjIE5vZGVWaXNpdG9yLmdlbmVyaWNfdmlzaXQgdG8gaGFuZGxlIGFueSBub2RlcyAoYXMgaXQgY2FsbHMgYmFjayBpbiB0bwogICAgIyB0aGUgc3ViY2xhc3MgdmlzaXQoKSBtZXRob2QsIHdoaWNoIHJlc2V0cyBzZWxmLl9zb3VyY2UgdG8gYW4gZW1wdHkgbGlzdCkKICAgIGRlZiB2aXNpdChzZWxmLCBub2RlKToKICAgICAgICAiIiJPdXRwdXRzIGEgc291cmNlIGNvZGUgc3RyaW5nIHRoYXQsIGlmIGNvbnZlcnRlZCBiYWNrIHRvIGFuIGFzdAogICAgICAgICh1c2luZyBhc3QucGFyc2UpIHdpbGwgZ2VuZXJhdGUgYW4gQVNUIGVxdWl2YWxlbnQgdG8gKm5vZGUqIiIiCiAgICAgICAgc2VsZi5fc291cmNlID0gW10KICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUpCiAgICAgICAgcmV0dXJuICIiLmpvaW4oc2VsZi5fc291cmNlKQoKICAgIGRlZiBfd3JpdGVfZG9jc3RyaW5nX2FuZF90cmF2ZXJzZV9ib2R5KHNlbGYsIG5vZGUpOgogICAgICAgIGlmIChkb2NzdHJpbmcgOj0gc2VsZi5nZXRfcmF3X2RvY3N0cmluZyhub2RlKSk6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RvY3N0cmluZyhkb2NzdHJpbmcpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5ib2R5WzE6XSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuYm9keSkKCiAgICBkZWYgdmlzaXRfTW9kdWxlKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuX3R5cGVfaWdub3JlcyA9IHsKICAgICAgICAgICAgaWdub3JlLmxpbmVubzogZiJpZ25vcmV7aWdub3JlLnRhZ30iCiAgICAgICAgICAgIGZvciBpZ25vcmUgaW4gbm9kZS50eXBlX2lnbm9yZXMKICAgICAgICB9CiAgICAgICAgc2VsZi5fd3JpdGVfZG9jc3RyaW5nX2FuZF90cmF2ZXJzZV9ib2R5KG5vZGUpCiAgICAgICAgc2VsZi5fdHlwZV9pZ25vcmVzLmNsZWFyKCkKCiAgICBkZWYgdmlzaXRfRnVuY3Rpb25UeXBlKHNlbGYsIG5vZGUpOgogICAgICAgIHdpdGggc2VsZi5kZWxpbWl0KCIoIiwgIikiKToKICAgICAgICAgICAgc2VsZi5pbnRlcmxlYXZlKAogICAgICAgICAgICAgICAgbGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLnRyYXZlcnNlLCBub2RlLmFyZ3R5cGVzCiAgICAgICAgICAgICkKCiAgICAgICAgc2VsZi53cml0ZSgiIC0+ICIpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnJldHVybnMpCgogICAgZGVmIHZpc2l0X0V4cHIoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCkKICAgICAgICBzZWxmLnNldF9wcmVjZWRlbmNlKF9QcmVjZWRlbmNlLllJRUxELCBub2RlLnZhbHVlKQogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS52YWx1ZSkKCiAgICBkZWYgdmlzaXRfTmFtZWRFeHByKHNlbGYsIG5vZGUpOgogICAgICAgIHdpdGggc2VsZi5yZXF1aXJlX3BhcmVucyhfUHJlY2VkZW5jZS5OQU1FRF9FWFBSLCBub2RlKToKICAgICAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShfUHJlY2VkZW5jZS5BVE9NLCBub2RlLnRhcmdldCwgbm9kZS52YWx1ZSkKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnRhcmdldCkKICAgICAgICAgICAgc2VsZi53cml0ZSgiIDo9ICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS52YWx1ZSkKCiAgICBkZWYgdmlzaXRfSW1wb3J0KHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuZmlsbCgiaW1wb3J0ICIpCiAgICAgICAgc2VsZi5pbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi50cmF2ZXJzZSwgbm9kZS5uYW1lcykKCiAgICBkZWYgdmlzaXRfSW1wb3J0RnJvbShzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoImZyb20gIikKICAgICAgICBzZWxmLndyaXRlKCIuIiAqIChub2RlLmxldmVsIG9yIDApKQogICAgICAgIGlmIG5vZGUubW9kdWxlOgogICAgICAgICAgICBzZWxmLndyaXRlKG5vZGUubW9kdWxlKQogICAgICAgIHNlbGYud3JpdGUoIiBpbXBvcnQgIikKICAgICAgICBzZWxmLmludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLnRyYXZlcnNlLCBub2RlLm5hbWVzKQoKICAgIGRlZiB2aXNpdF9Bc3NpZ24oc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCkKICAgICAgICBmb3IgdGFyZ2V0IGluIG5vZGUudGFyZ2V0czoKICAgICAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShfUHJlY2VkZW5jZS5UVVBMRSwgdGFyZ2V0KQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKHRhcmdldCkKICAgICAgICAgICAgc2VsZi53cml0ZSgiID0gIikKICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUudmFsdWUpCiAgICAgICAgaWYgdHlwZV9jb21tZW50IDo9IHNlbGYuZ2V0X3R5cGVfY29tbWVudChub2RlKToKICAgICAgICAgICAgc2VsZi53cml0ZSh0eXBlX2NvbW1lbnQpCgogICAgZGVmIHZpc2l0X0F1Z0Fzc2lnbihzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoKQogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS50YXJnZXQpCiAgICAgICAgc2VsZi53cml0ZSgiICIgKyBzZWxmLmJpbm9wW25vZGUub3AuX19jbGFzc19fLl9fbmFtZV9fXSArICI9ICIpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnZhbHVlKQoKICAgIGRlZiB2aXNpdF9Bbm5Bc3NpZ24oc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCkKICAgICAgICB3aXRoIHNlbGYuZGVsaW1pdF9pZigiKCIsICIpIiwgbm90IG5vZGUuc2ltcGxlIGFuZCBpc2luc3RhbmNlKG5vZGUudGFyZ2V0LCBOYW1lKSk6CiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS50YXJnZXQpCiAgICAgICAgc2VsZi53cml0ZSgiOiAiKQogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5hbm5vdGF0aW9uKQogICAgICAgIGlmIG5vZGUudmFsdWU6CiAgICAgICAgICAgIHNlbGYud3JpdGUoIiA9ICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS52YWx1ZSkKCiAgICBkZWYgdmlzaXRfUmV0dXJuKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuZmlsbCgicmV0dXJuIikKICAgICAgICBpZiBub2RlLnZhbHVlOgogICAgICAgICAgICBzZWxmLndyaXRlKCIgIikKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnZhbHVlKQoKICAgIGRlZiB2aXNpdF9QYXNzKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuZmlsbCgicGFzcyIpCgogICAgZGVmIHZpc2l0X0JyZWFrKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuZmlsbCgiYnJlYWsiKQoKICAgIGRlZiB2aXNpdF9Db250aW51ZShzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoImNvbnRpbnVlIikKCiAgICBkZWYgdmlzaXRfRGVsZXRlKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuZmlsbCgiZGVsICIpCiAgICAgICAgc2VsZi5pbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi50cmF2ZXJzZSwgbm9kZS50YXJnZXRzKQoKICAgIGRlZiB2aXNpdF9Bc3NlcnQoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCJhc3NlcnQgIikKICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUudGVzdCkKICAgICAgICBpZiBub2RlLm1zZzoKICAgICAgICAgICAgc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUubXNnKQoKICAgIGRlZiB2aXNpdF9HbG9iYWwoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCJnbG9iYWwgIikKICAgICAgICBzZWxmLmludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLndyaXRlLCBub2RlLm5hbWVzKQoKICAgIGRlZiB2aXNpdF9Ob25sb2NhbChzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoIm5vbmxvY2FsICIpCiAgICAgICAgc2VsZi5pbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi53cml0ZSwgbm9kZS5uYW1lcykKCiAgICBkZWYgdmlzaXRfQXdhaXQoc2VsZiwgbm9kZSk6CiAgICAgICAgd2l0aCBzZWxmLnJlcXVpcmVfcGFyZW5zKF9QcmVjZWRlbmNlLkFXQUlULCBub2RlKToKICAgICAgICAgICAgc2VsZi53cml0ZSgiYXdhaXQiKQogICAgICAgICAgICBpZiBub2RlLnZhbHVlOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCiAgICAgICAgICAgICAgICBzZWxmLnNldF9wcmVjZWRlbmNlKF9QcmVjZWRlbmNlLkFUT00sIG5vZGUudmFsdWUpCiAgICAgICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUudmFsdWUpCgogICAgZGVmIHZpc2l0X1lpZWxkKHNlbGYsIG5vZGUpOgogICAgICAgIHdpdGggc2VsZi5yZXF1aXJlX3BhcmVucyhfUHJlY2VkZW5jZS5ZSUVMRCwgbm9kZSk6CiAgICAgICAgICAgIHNlbGYud3JpdGUoInlpZWxkIikKICAgICAgICAgICAgaWYgbm9kZS52YWx1ZToKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQogICAgICAgICAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShfUHJlY2VkZW5jZS5BVE9NLCBub2RlLnZhbHVlKQogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnZhbHVlKQoKICAgIGRlZiB2aXNpdF9ZaWVsZEZyb20oc2VsZiwgbm9kZSk6CiAgICAgICAgd2l0aCBzZWxmLnJlcXVpcmVfcGFyZW5zKF9QcmVjZWRlbmNlLllJRUxELCBub2RlKToKICAgICAgICAgICAgc2VsZi53cml0ZSgieWllbGQgZnJvbSAiKQogICAgICAgICAgICBpZiBub3Qgbm9kZS52YWx1ZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vZGUgY2FuJ3QgYmUgdXNlZCB3aXRob3V0IGEgdmFsdWUgYXR0cmlidXRlLiIpCiAgICAgICAgICAgIHNlbGYuc2V0X3ByZWNlZGVuY2UoX1ByZWNlZGVuY2UuQVRPTSwgbm9kZS52YWx1ZSkKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnZhbHVlKQoKICAgIGRlZiB2aXNpdF9SYWlzZShzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoInJhaXNlIikKICAgICAgICBpZiBub3Qgbm9kZS5leGM6CiAgICAgICAgICAgIGlmIG5vZGUuY2F1c2U6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiTm9kZSBjYW4ndCB1c2UgY2F1c2Ugd2l0aG91dCBhbiBleGNlcHRpb24uIikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi53cml0ZSgiICIpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmV4YykKICAgICAgICBpZiBub2RlLmNhdXNlOgogICAgICAgICAgICBzZWxmLndyaXRlKCIgZnJvbSAiKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuY2F1c2UpCgogICAgZGVmIGRvX3Zpc2l0X3RyeShzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoInRyeSIpCiAgICAgICAgd2l0aCBzZWxmLmJsb2NrKCk6CiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5ib2R5KQogICAgICAgIGZvciBleCBpbiBub2RlLmhhbmRsZXJzOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKGV4KQogICAgICAgIGlmIG5vZGUub3JlbHNlOgogICAgICAgICAgICBzZWxmLmZpbGwoImVsc2UiKQogICAgICAgICAgICB3aXRoIHNlbGYuYmxvY2soKToKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5vcmVsc2UpCiAgICAgICAgaWYgbm9kZS5maW5hbGJvZHk6CiAgICAgICAgICAgIHNlbGYuZmlsbCgiZmluYWxseSIpCiAgICAgICAgICAgIHdpdGggc2VsZi5ibG9jaygpOgogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmZpbmFsYm9keSkKCiAgICBkZWYgdmlzaXRfVHJ5KHNlbGYsIG5vZGUpOgogICAgICAgIHByZXZfaW5fdHJ5X3N0YXIgPSBzZWxmLl9pbl90cnlfc3RhcgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5faW5fdHJ5X3N0YXIgPSBGYWxzZQogICAgICAgICAgICBzZWxmLmRvX3Zpc2l0X3RyeShub2RlKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX2luX3RyeV9zdGFyID0gcHJldl9pbl90cnlfc3RhcgoKICAgIGRlZiB2aXNpdF9UcnlTdGFyKHNlbGYsIG5vZGUpOgogICAgICAgIHByZXZfaW5fdHJ5X3N0YXIgPSBzZWxmLl9pbl90cnlfc3RhcgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5faW5fdHJ5X3N0YXIgPSBUcnVlCiAgICAgICAgICAgIHNlbGYuZG9fdmlzaXRfdHJ5KG5vZGUpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5faW5fdHJ5X3N0YXIgPSBwcmV2X2luX3RyeV9zdGFyCgogICAgZGVmIHZpc2l0X0V4Y2VwdEhhbmRsZXIoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCJleGNlcHQqIiBpZiBzZWxmLl9pbl90cnlfc3RhciBlbHNlICJleGNlcHQiKQogICAgICAgIGlmIG5vZGUudHlwZToKICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS50eXBlKQogICAgICAgIGlmIG5vZGUubmFtZToKICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIpCiAgICAgICAgICAgIHNlbGYud3JpdGUobm9kZS5uYW1lKQogICAgICAgIHdpdGggc2VsZi5ibG9jaygpOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuYm9keSkKCiAgICBkZWYgdmlzaXRfQ2xhc3NEZWYoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5tYXliZV9uZXdsaW5lKCkKICAgICAgICBmb3IgZGVjbyBpbiBub2RlLmRlY29yYXRvcl9saXN0OgogICAgICAgICAgICBzZWxmLmZpbGwoIkAiKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKGRlY28pCiAgICAgICAgc2VsZi5maWxsKCJjbGFzcyAiICsgbm9kZS5uYW1lKQogICAgICAgIHdpdGggc2VsZi5kZWxpbWl0X2lmKCIoIiwgIikiLCBjb25kaXRpb24gPSBub2RlLmJhc2VzIG9yIG5vZGUua2V5d29yZHMpOgogICAgICAgICAgICBjb21tYSA9IEZhbHNlCiAgICAgICAgICAgIGZvciBlIGluIG5vZGUuYmFzZXM6CiAgICAgICAgICAgICAgICBpZiBjb21tYToKICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCIsICIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGNvbW1hID0gVHJ1ZQogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShlKQogICAgICAgICAgICBmb3IgZSBpbiBub2RlLmtleXdvcmRzOgogICAgICAgICAgICAgICAgaWYgY29tbWE6CiAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBjb21tYSA9IFRydWUKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoZSkKCiAgICAgICAgd2l0aCBzZWxmLmJsb2NrKCk6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RvY3N0cmluZ19hbmRfdHJhdmVyc2VfYm9keShub2RlKQoKICAgIGRlZiB2aXNpdF9GdW5jdGlvbkRlZihzZWxmLCBub2RlKToKICAgICAgICBzZWxmLl9mdW5jdGlvbl9oZWxwZXIobm9kZSwgImRlZiIpCgogICAgZGVmIHZpc2l0X0FzeW5jRnVuY3Rpb25EZWYoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5fZnVuY3Rpb25faGVscGVyKG5vZGUsICJhc3luYyBkZWYiKQoKICAgIGRlZiBfZnVuY3Rpb25faGVscGVyKHNlbGYsIG5vZGUsIGZpbGxfc3VmZml4KToKICAgICAgICBzZWxmLm1heWJlX25ld2xpbmUoKQogICAgICAgIGZvciBkZWNvIGluIG5vZGUuZGVjb3JhdG9yX2xpc3Q6CiAgICAgICAgICAgIHNlbGYuZmlsbCgiQCIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoZGVjbykKICAgICAgICBkZWZfc3RyID0gZmlsbF9zdWZmaXggKyAiICIgKyBub2RlLm5hbWUKICAgICAgICBzZWxmLmZpbGwoZGVmX3N0cikKICAgICAgICB3aXRoIHNlbGYuZGVsaW1pdCgiKCIsICIpIik6CiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5hcmdzKQogICAgICAgIGlmIG5vZGUucmV0dXJuczoKICAgICAgICAgICAgc2VsZi53cml0ZSgiIC0+ICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5yZXR1cm5zKQogICAgICAgIHdpdGggc2VsZi5ibG9jayhleHRyYT1zZWxmLmdldF90eXBlX2NvbW1lbnQobm9kZSkpOgogICAgICAgICAgICBzZWxmLl93cml0ZV9kb2NzdHJpbmdfYW5kX3RyYXZlcnNlX2JvZHkobm9kZSkKCiAgICBkZWYgdmlzaXRfRm9yKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuX2Zvcl9oZWxwZXIoImZvciAiLCBub2RlKQoKICAgIGRlZiB2aXNpdF9Bc3luY0ZvcihzZWxmLCBub2RlKToKICAgICAgICBzZWxmLl9mb3JfaGVscGVyKCJhc3luYyBmb3IgIiwgbm9kZSkKCiAgICBkZWYgX2Zvcl9oZWxwZXIoc2VsZiwgZmlsbCwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKGZpbGwpCiAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShfUHJlY2VkZW5jZS5UVVBMRSwgbm9kZS50YXJnZXQpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnRhcmdldCkKICAgICAgICBzZWxmLndyaXRlKCIgaW4gIikKICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuaXRlcikKICAgICAgICB3aXRoIHNlbGYuYmxvY2soZXh0cmE9c2VsZi5nZXRfdHlwZV9jb21tZW50KG5vZGUpKToKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmJvZHkpCiAgICAgICAgaWYgbm9kZS5vcmVsc2U6CiAgICAgICAgICAgIHNlbGYuZmlsbCgiZWxzZSIpCiAgICAgICAgICAgIHdpdGggc2VsZi5ibG9jaygpOgogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLm9yZWxzZSkKCiAgICBkZWYgdmlzaXRfSWYoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCJpZiAiKQogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS50ZXN0KQogICAgICAgIHdpdGggc2VsZi5ibG9jaygpOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuYm9keSkKICAgICAgICAjIGNvbGxhcHNlIG5lc3RlZCBpZnMgaW50byBlcXVpdmFsZW50IGVsaWZzLgogICAgICAgIHdoaWxlIG5vZGUub3JlbHNlIGFuZCBsZW4obm9kZS5vcmVsc2UpID09IDEgYW5kIGlzaW5zdGFuY2Uobm9kZS5vcmVsc2VbMF0sIElmKToKICAgICAgICAgICAgbm9kZSA9IG5vZGUub3JlbHNlWzBdCiAgICAgICAgICAgIHNlbGYuZmlsbCgiZWxpZiAiKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUudGVzdCkKICAgICAgICAgICAgd2l0aCBzZWxmLmJsb2NrKCk6CiAgICAgICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuYm9keSkKICAgICAgICAjIGZpbmFsIGVsc2UKICAgICAgICBpZiBub2RlLm9yZWxzZToKICAgICAgICAgICAgc2VsZi5maWxsKCJlbHNlIikKICAgICAgICAgICAgd2l0aCBzZWxmLmJsb2NrKCk6CiAgICAgICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUub3JlbHNlKQoKICAgIGRlZiB2aXNpdF9XaGlsZShzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoIndoaWxlICIpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnRlc3QpCiAgICAgICAgd2l0aCBzZWxmLmJsb2NrKCk6CiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5ib2R5KQogICAgICAgIGlmIG5vZGUub3JlbHNlOgogICAgICAgICAgICBzZWxmLmZpbGwoImVsc2UiKQogICAgICAgICAgICB3aXRoIHNlbGYuYmxvY2soKToKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5vcmVsc2UpCgogICAgZGVmIHZpc2l0X1dpdGgoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCJ3aXRoICIpCiAgICAgICAgc2VsZi5pbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi50cmF2ZXJzZSwgbm9kZS5pdGVtcykKICAgICAgICB3aXRoIHNlbGYuYmxvY2soZXh0cmE9c2VsZi5nZXRfdHlwZV9jb21tZW50KG5vZGUpKToKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmJvZHkpCgogICAgZGVmIHZpc2l0X0FzeW5jV2l0aChzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoImFzeW5jIHdpdGggIikKICAgICAgICBzZWxmLmludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLnRyYXZlcnNlLCBub2RlLml0ZW1zKQogICAgICAgIHdpdGggc2VsZi5ibG9jayhleHRyYT1zZWxmLmdldF90eXBlX2NvbW1lbnQobm9kZSkpOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuYm9keSkKCiAgICBkZWYgX3N0cl9saXRlcmFsX2hlbHBlcigKICAgICAgICBzZWxmLCBzdHJpbmcsICosIHF1b3RlX3R5cGVzPV9BTExfUVVPVEVTLCBlc2NhcGVfc3BlY2lhbF93aGl0ZXNwYWNlPUZhbHNlCiAgICApOgogICAgICAgICIiIkhlbHBlciBmb3Igd3JpdGluZyBzdHJpbmcgbGl0ZXJhbHMsIG1pbmltaXppbmcgZXNjYXBlcy4KICAgICAgICBSZXR1cm5zIHRoZSB0dXBsZSAoc3RyaW5nIGxpdGVyYWwgdG8gd3JpdGUsIHBvc3NpYmxlIHF1b3RlIHR5cGVzKS4KICAgICAgICAiIiIKICAgICAgICBkZWYgZXNjYXBlX2NoYXIoYyk6CiAgICAgICAgICAgICMgXG4gYW5kIFx0IGFyZSBub24tcHJpbnRhYmxlLCBidXQgd2Ugb25seSBlc2NhcGUgdGhlbSBpZgogICAgICAgICAgICAjIGVzY2FwZV9zcGVjaWFsX3doaXRlc3BhY2UgaXMgVHJ1ZQogICAgICAgICAgICBpZiBub3QgZXNjYXBlX3NwZWNpYWxfd2hpdGVzcGFjZSBhbmQgYyBpbiAiXG5cdCI6CiAgICAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICAgICAjIEFsd2F5cyBlc2NhcGUgYmFja3NsYXNoZXMgYW5kIG90aGVyIG5vbi1wcmludGFibGUgY2hhcmFjdGVycwogICAgICAgICAgICBpZiBjID09ICJcXCIgb3Igbm90IGMuaXNwcmludGFibGUoKToKICAgICAgICAgICAgICAgIHJldHVybiBjLmVuY29kZSgidW5pY29kZV9lc2NhcGUiKS5kZWNvZGUoImFzY2lpIikKICAgICAgICAgICAgcmV0dXJuIGMKCiAgICAgICAgZXNjYXBlZF9zdHJpbmcgPSAiIi5qb2luKG1hcChlc2NhcGVfY2hhciwgc3RyaW5nKSkKICAgICAgICBwb3NzaWJsZV9xdW90ZXMgPSBxdW90ZV90eXBlcwogICAgICAgIGlmICJcbiIgaW4gZXNjYXBlZF9zdHJpbmc6CiAgICAgICAgICAgIHBvc3NpYmxlX3F1b3RlcyA9IFtxIGZvciBxIGluIHBvc3NpYmxlX3F1b3RlcyBpZiBxIGluIF9NVUxUSV9RVU9URVNdCiAgICAgICAgcG9zc2libGVfcXVvdGVzID0gW3EgZm9yIHEgaW4gcG9zc2libGVfcXVvdGVzIGlmIHEgbm90IGluIGVzY2FwZWRfc3RyaW5nXQogICAgICAgIGlmIG5vdCBwb3NzaWJsZV9xdW90ZXM6CiAgICAgICAgICAgICMgSWYgdGhlcmUgYXJlbid0IGFueSBwb3NzaWJsZV9xdW90ZXMsIGZhbGxiYWNrIHRvIHVzaW5nIHJlcHIKICAgICAgICAgICAgIyBvbiB0aGUgb3JpZ2luYWwgc3RyaW5nLiBUcnkgdG8gdXNlIGEgcXVvdGUgZnJvbSBxdW90ZV90eXBlcywKICAgICAgICAgICAgIyBlLmcuLCBzbyB0aGF0IHdlIHVzZSB0cmlwbGUgcXVvdGVzIGZvciBkb2NzdHJpbmdzLgogICAgICAgICAgICBzdHJpbmcgPSByZXByKHN0cmluZykKICAgICAgICAgICAgcXVvdGUgPSBuZXh0KChxIGZvciBxIGluIHF1b3RlX3R5cGVzIGlmIHN0cmluZ1swXSBpbiBxKSwgc3RyaW5nWzBdKQogICAgICAgICAgICByZXR1cm4gc3RyaW5nWzE6LTFdLCBbcXVvdGVdCiAgICAgICAgaWYgZXNjYXBlZF9zdHJpbmc6CiAgICAgICAgICAgICMgU29ydCBzbyB0aGF0IHdlIHByZWZlciAnJyciJycnIG92ZXIgIiIiXCIiIiIKICAgICAgICAgICAgcG9zc2libGVfcXVvdGVzLnNvcnQoa2V5PWxhbWJkYSBxOiBxWzBdID09IGVzY2FwZWRfc3RyaW5nWy0xXSkKICAgICAgICAgICAgIyBJZiB3ZSdyZSB1c2luZyB0cmlwbGUgcXVvdGVzIGFuZCB3ZSdkIG5lZWQgdG8gZXNjYXBlIGEgZmluYWwKICAgICAgICAgICAgIyBxdW90ZSwgZXNjYXBlIGl0CiAgICAgICAgICAgIGlmIHBvc3NpYmxlX3F1b3Rlc1swXVswXSA9PSBlc2NhcGVkX3N0cmluZ1stMV06CiAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKHBvc3NpYmxlX3F1b3Rlc1swXSkgPT0gMwogICAgICAgICAgICAgICAgZXNjYXBlZF9zdHJpbmcgPSBlc2NhcGVkX3N0cmluZ1s6LTFdICsgIlxcIiArIGVzY2FwZWRfc3RyaW5nWy0xXQogICAgICAgIHJldHVybiBlc2NhcGVkX3N0cmluZywgcG9zc2libGVfcXVvdGVzCgogICAgZGVmIF93cml0ZV9zdHJfYXZvaWRpbmdfYmFja3NsYXNoZXMoc2VsZiwgc3RyaW5nLCAqLCBxdW90ZV90eXBlcz1fQUxMX1FVT1RFUyk6CiAgICAgICAgIiIiV3JpdGUgc3RyaW5nIGxpdGVyYWwgdmFsdWUgd2l0aCBhIGJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gYXZvaWQgYmFja3NsYXNoZXMuIiIiCiAgICAgICAgc3RyaW5nLCBxdW90ZV90eXBlcyA9IHNlbGYuX3N0cl9saXRlcmFsX2hlbHBlcihzdHJpbmcsIHF1b3RlX3R5cGVzPXF1b3RlX3R5cGVzKQogICAgICAgIHF1b3RlX3R5cGUgPSBxdW90ZV90eXBlc1swXQogICAgICAgIHNlbGYud3JpdGUoZiJ7cXVvdGVfdHlwZX17c3RyaW5nfXtxdW90ZV90eXBlfSIpCgogICAgZGVmIHZpc2l0X0pvaW5lZFN0cihzZWxmLCBub2RlKToKICAgICAgICBzZWxmLndyaXRlKCJmIikKICAgICAgICBpZiBzZWxmLl9hdm9pZF9iYWNrc2xhc2hlczoKICAgICAgICAgICAgd2l0aCBzZWxmLmJ1ZmZlcmVkKCkgYXMgYnVmZmVyOgogICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfZnN0cmluZ19pbm5lcihub2RlKQogICAgICAgICAgICByZXR1cm4gc2VsZi5fd3JpdGVfc3RyX2F2b2lkaW5nX2JhY2tzbGFzaGVzKCIiLmpvaW4oYnVmZmVyKSkKCiAgICAgICAgIyBJZiB3ZSBkb24ndCBuZWVkIHRvIGF2b2lkIGJhY2tzbGFzaGVzIGdsb2JhbGx5IChpLmUuLCB3ZSBvbmx5IG5lZWQKICAgICAgICAjIHRvIGF2b2lkIHRoZW0gaW5zaWRlIEZvcm1hdHRlZFZhbHVlcyksIGl0J3MgY29zbWV0aWNhbGx5IHByZWZlcnJlZAogICAgICAgICMgdG8gdXNlIGVzY2FwZWQgd2hpdGVzcGFjZS4gVGhhdCBpcywgaXQncyBwcmVmZXJyZWQgdG8gdXNlIGJhY2tzbGFzaGVzCiAgICAgICAgIyBmb3IgY2FzZXMgbGlrZTogZiJ7eH1cbiIuIFRvIGFjY29tcGxpc2ggdGhpcywgd2Uga2VlcCB0cmFjayBvZiB3aGF0CiAgICAgICAgIyBpbiBvdXIgYnVmZmVyIGNvcnJlc3BvbmRzIHRvIEZvcm1hdHRlZFZhbHVlcyBhbmQgd2hhdCBjb3JyZXNwb25kcyB0bwogICAgICAgICMgQ29uc3RhbnQgcGFydHMgb2YgdGhlIGYtc3RyaW5nLCBhbmQgYWxsb3cgZXNjYXBlcyBhY2NvcmRpbmdseS4KICAgICAgICBmc3RyaW5nX3BhcnRzID0gW10KICAgICAgICBmb3IgdmFsdWUgaW4gbm9kZS52YWx1ZXM6CiAgICAgICAgICAgIHdpdGggc2VsZi5idWZmZXJlZCgpIGFzIGJ1ZmZlcjoKICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2ZzdHJpbmdfaW5uZXIodmFsdWUpCiAgICAgICAgICAgIGZzdHJpbmdfcGFydHMuYXBwZW5kKAogICAgICAgICAgICAgICAgKCIiLmpvaW4oYnVmZmVyKSwgaXNpbnN0YW5jZSh2YWx1ZSwgQ29uc3RhbnQpKQogICAgICAgICAgICApCgogICAgICAgIG5ld19mc3RyaW5nX3BhcnRzID0gW10KICAgICAgICBxdW90ZV90eXBlcyA9IGxpc3QoX0FMTF9RVU9URVMpCiAgICAgICAgZm9yIHZhbHVlLCBpc19jb25zdGFudCBpbiBmc3RyaW5nX3BhcnRzOgogICAgICAgICAgICB2YWx1ZSwgcXVvdGVfdHlwZXMgPSBzZWxmLl9zdHJfbGl0ZXJhbF9oZWxwZXIoCiAgICAgICAgICAgICAgICB2YWx1ZSwKICAgICAgICAgICAgICAgIHF1b3RlX3R5cGVzPXF1b3RlX3R5cGVzLAogICAgICAgICAgICAgICAgZXNjYXBlX3NwZWNpYWxfd2hpdGVzcGFjZT1pc19jb25zdGFudCwKICAgICAgICAgICAgKQogICAgICAgICAgICBuZXdfZnN0cmluZ19wYXJ0cy5hcHBlbmQodmFsdWUpCgogICAgICAgIHZhbHVlID0gIiIuam9pbihuZXdfZnN0cmluZ19wYXJ0cykKICAgICAgICBxdW90ZV90eXBlID0gcXVvdGVfdHlwZXNbMF0KICAgICAgICBzZWxmLndyaXRlKGYie3F1b3RlX3R5cGV9e3ZhbHVlfXtxdW90ZV90eXBlfSIpCgogICAgZGVmIF93cml0ZV9mc3RyaW5nX2lubmVyKHNlbGYsIG5vZGUpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgSm9pbmVkU3RyKToKICAgICAgICAgICAgIyBmb3IgYm90aCB0aGUgZi1zdHJpbmcgaXRzZWxmLCBhbmQgZm9ybWF0X3NwZWMKICAgICAgICAgICAgZm9yIHZhbHVlIGluIG5vZGUudmFsdWVzOgogICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfZnN0cmluZ19pbm5lcih2YWx1ZSkKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQ29uc3RhbnQpIGFuZCBpc2luc3RhbmNlKG5vZGUudmFsdWUsIHN0cik6CiAgICAgICAgICAgIHZhbHVlID0gbm9kZS52YWx1ZS5yZXBsYWNlKCJ7IiwgInt7IikucmVwbGFjZSgifSIsICJ9fSIpCiAgICAgICAgICAgIHNlbGYud3JpdGUodmFsdWUpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIEZvcm1hdHRlZFZhbHVlKToKICAgICAgICAgICAgc2VsZi52aXNpdF9Gb3JtYXR0ZWRWYWx1ZShub2RlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJVbmV4cGVjdGVkIG5vZGUgaW5zaWRlIEpvaW5lZFN0ciwge25vZGUhcn0iKQoKICAgIGRlZiB2aXNpdF9Gb3JtYXR0ZWRWYWx1ZShzZWxmLCBub2RlKToKICAgICAgICBkZWYgdW5wYXJzZV9pbm5lcihpbm5lcik6CiAgICAgICAgICAgIHVucGFyc2VyID0gdHlwZShzZWxmKShfYXZvaWRfYmFja3NsYXNoZXM9VHJ1ZSkKICAgICAgICAgICAgdW5wYXJzZXIuc2V0X3ByZWNlZGVuY2UoX1ByZWNlZGVuY2UuVEVTVC5uZXh0KCksIGlubmVyKQogICAgICAgICAgICByZXR1cm4gdW5wYXJzZXIudmlzaXQoaW5uZXIpCgogICAgICAgIHdpdGggc2VsZi5kZWxpbWl0KCJ7IiwgIn0iKToKICAgICAgICAgICAgZXhwciA9IHVucGFyc2VfaW5uZXIobm9kZS52YWx1ZSkKICAgICAgICAgICAgaWYgIlxcIiBpbiBleHByOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGF2b2lkIGJhY2tzbGFzaCBpbiBmLXN0cmluZyBleHByZXNzaW9uIHBhcnQiCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlmIGV4cHIuc3RhcnRzd2l0aCgieyIpOgogICAgICAgICAgICAgICAgIyBTZXBhcmF0ZSBwYWlyIG9mIG9wZW5pbmcgYnJhY2tldHMgYXMgInsgeyIKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQogICAgICAgICAgICBzZWxmLndyaXRlKGV4cHIpCiAgICAgICAgICAgIGlmIG5vZGUuY29udmVyc2lvbiAhPSAtMToKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoZiIhe2Nocihub2RlLmNvbnZlcnNpb24pfSIpCiAgICAgICAgICAgIGlmIG5vZGUuZm9ybWF0X3NwZWM6CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCI6IikKICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2ZzdHJpbmdfaW5uZXIobm9kZS5mb3JtYXRfc3BlYykKCiAgICBkZWYgdmlzaXRfTmFtZShzZWxmLCBub2RlKToKICAgICAgICBzZWxmLndyaXRlKG5vZGUuaWQpCgogICAgZGVmIF93cml0ZV9kb2NzdHJpbmcoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCkKICAgICAgICBpZiBub2RlLmtpbmQgPT0gInUiOgogICAgICAgICAgICBzZWxmLndyaXRlKCJ1IikKICAgICAgICBzZWxmLl93cml0ZV9zdHJfYXZvaWRpbmdfYmFja3NsYXNoZXMobm9kZS52YWx1ZSwgcXVvdGVfdHlwZXM9X01VTFRJX1FVT1RFUykKCiAgICBkZWYgX3dyaXRlX2NvbnN0YW50KHNlbGYsIHZhbHVlKToKICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAoZmxvYXQsIGNvbXBsZXgpKToKICAgICAgICAgICAgIyBTdWJzdGl0dXRlIG92ZXJmbG93aW5nIGRlY2ltYWwgbGl0ZXJhbCBmb3IgQVNUIGluZmluaXRpZXMsCiAgICAgICAgICAgICMgYW5kIGluZiAtIGluZiBmb3IgTmFOcy4KICAgICAgICAgICAgc2VsZi53cml0ZSgKICAgICAgICAgICAgICAgIHJlcHIodmFsdWUpCiAgICAgICAgICAgICAgICAucmVwbGFjZSgiaW5mIiwgX0lORlNUUikKICAgICAgICAgICAgICAgIC5yZXBsYWNlKCJuYW4iLCBmIih7X0lORlNUUn0te19JTkZTVFJ9KSIpCiAgICAgICAgICAgICkKICAgICAgICBlbGlmIHNlbGYuX2F2b2lkX2JhY2tzbGFzaGVzIGFuZCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICBzZWxmLl93cml0ZV9zdHJfYXZvaWRpbmdfYmFja3NsYXNoZXModmFsdWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKHZhbHVlKSkKCiAgICBkZWYgdmlzaXRfQ29uc3RhbnQoc2VsZiwgbm9kZSk6CiAgICAgICAgdmFsdWUgPSBub2RlLnZhbHVlCiAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgICAgICB3aXRoIHNlbGYuZGVsaW1pdCgiKCIsICIpIik6CiAgICAgICAgICAgICAgICBzZWxmLml0ZW1zX3ZpZXcoc2VsZi5fd3JpdGVfY29uc3RhbnQsIHZhbHVlKQogICAgICAgIGVsaWYgdmFsdWUgaXMgLi4uOgogICAgICAgICAgICBzZWxmLndyaXRlKCIuLi4iKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIG5vZGUua2luZCA9PSAidSI6CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCJ1IikKICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uc3RhbnQobm9kZS52YWx1ZSkKCiAgICBkZWYgdmlzaXRfTGlzdChzZWxmLCBub2RlKToKICAgICAgICB3aXRoIHNlbGYuZGVsaW1pdCgiWyIsICJdIik6CiAgICAgICAgICAgIHNlbGYuaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYudHJhdmVyc2UsIG5vZGUuZWx0cykKCiAgICBkZWYgdmlzaXRfTGlzdENvbXAoc2VsZiwgbm9kZSk6CiAgICAgICAgd2l0aCBzZWxmLmRlbGltaXQoIlsiLCAiXSIpOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuZWx0KQogICAgICAgICAgICBmb3IgZ2VuIGluIG5vZGUuZ2VuZXJhdG9yczoKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoZ2VuKQoKICAgIGRlZiB2aXNpdF9HZW5lcmF0b3JFeHAoc2VsZiwgbm9kZSk6CiAgICAgICAgd2l0aCBzZWxmLmRlbGltaXQoIigiLCAiKSIpOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuZWx0KQogICAgICAgICAgICBmb3IgZ2VuIGluIG5vZGUuZ2VuZXJhdG9yczoKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoZ2VuKQoKICAgIGRlZiB2aXNpdF9TZXRDb21wKHNlbGYsIG5vZGUpOgogICAgICAgIHdpdGggc2VsZi5kZWxpbWl0KCJ7IiwgIn0iKToKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmVsdCkKICAgICAgICAgICAgZm9yIGdlbiBpbiBub2RlLmdlbmVyYXRvcnM6CiAgICAgICAgICAgICAgICBzZWxmLnRyYXZlcnNlKGdlbikKCiAgICBkZWYgdmlzaXRfRGljdENvbXAoc2VsZiwgbm9kZSk6CiAgICAgICAgd2l0aCBzZWxmLmRlbGltaXQoInsiLCAifSIpOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUua2V5KQogICAgICAgICAgICBzZWxmLndyaXRlKCI6ICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS52YWx1ZSkKICAgICAgICAgICAgZm9yIGdlbiBpbiBub2RlLmdlbmVyYXRvcnM6CiAgICAgICAgICAgICAgICBzZWxmLnRyYXZlcnNlKGdlbikKCiAgICBkZWYgdmlzaXRfY29tcHJlaGVuc2lvbihzZWxmLCBub2RlKToKICAgICAgICBpZiBub2RlLmlzX2FzeW5jOgogICAgICAgICAgICBzZWxmLndyaXRlKCIgYXN5bmMgZm9yICIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi53cml0ZSgiIGZvciAiKQogICAgICAgIHNlbGYuc2V0X3ByZWNlZGVuY2UoX1ByZWNlZGVuY2UuVFVQTEUsIG5vZGUudGFyZ2V0KQogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS50YXJnZXQpCiAgICAgICAgc2VsZi53cml0ZSgiIGluICIpCiAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShfUHJlY2VkZW5jZS5URVNULm5leHQoKSwgbm9kZS5pdGVyLCAqbm9kZS5pZnMpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLml0ZXIpCiAgICAgICAgZm9yIGlmX2NsYXVzZSBpbiBub2RlLmlmczoKICAgICAgICAgICAgc2VsZi53cml0ZSgiIGlmICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoaWZfY2xhdXNlKQoKICAgIGRlZiB2aXNpdF9JZkV4cChzZWxmLCBub2RlKToKICAgICAgICB3aXRoIHNlbGYucmVxdWlyZV9wYXJlbnMoX1ByZWNlZGVuY2UuVEVTVCwgbm9kZSk6CiAgICAgICAgICAgIHNlbGYuc2V0X3ByZWNlZGVuY2UoX1ByZWNlZGVuY2UuVEVTVC5uZXh0KCksIG5vZGUuYm9keSwgbm9kZS50ZXN0KQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuYm9keSkKICAgICAgICAgICAgc2VsZi53cml0ZSgiIGlmICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS50ZXN0KQogICAgICAgICAgICBzZWxmLndyaXRlKCIgZWxzZSAiKQogICAgICAgICAgICBzZWxmLnNldF9wcmVjZWRlbmNlKF9QcmVjZWRlbmNlLlRFU1QsIG5vZGUub3JlbHNlKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUub3JlbHNlKQoKICAgIGRlZiB2aXNpdF9TZXQoc2VsZiwgbm9kZSk6CiAgICAgICAgaWYgbm9kZS5lbHRzOgogICAgICAgICAgICB3aXRoIHNlbGYuZGVsaW1pdCgieyIsICJ9Iik6CiAgICAgICAgICAgICAgICBzZWxmLmludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLnRyYXZlcnNlLCBub2RlLmVsdHMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBge31gIHdvdWxkIGJlIGludGVycHJldGVkIGFzIGEgZGljdGlvbmFyeSBsaXRlcmFsLCBhbmQKICAgICAgICAgICAgIyBgc2V0YCBtaWdodCBiZSBzaGFkb3dlZC4gVGh1czoKICAgICAgICAgICAgc2VsZi53cml0ZSgneyooKX0nKQoKICAgIGRlZiB2aXNpdF9EaWN0KHNlbGYsIG5vZGUpOgogICAgICAgIGRlZiB3cml0ZV9rZXlfdmFsdWVfcGFpcihrLCB2KToKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShrKQogICAgICAgICAgICBzZWxmLndyaXRlKCI6ICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2UodikKCiAgICAgICAgZGVmIHdyaXRlX2l0ZW0oaXRlbSk6CiAgICAgICAgICAgIGssIHYgPSBpdGVtCiAgICAgICAgICAgIGlmIGsgaXMgTm9uZToKICAgICAgICAgICAgICAgICMgZm9yIGRpY3Rpb25hcnkgdW5wYWNraW5nIG9wZXJhdG9yIGluIGRpY3RzIHsqKnsneSc6IDJ9fQogICAgICAgICAgICAgICAgIyBzZWUgUEVQIDQ0OCBmb3IgZGV0YWlscwogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiKioiKQogICAgICAgICAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShfUHJlY2VkZW5jZS5FWFBSLCB2KQogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZSh2KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgd3JpdGVfa2V5X3ZhbHVlX3BhaXIoaywgdikKCiAgICAgICAgd2l0aCBzZWxmLmRlbGltaXQoInsiLCAifSIpOgogICAgICAgICAgICBzZWxmLmludGVybGVhdmUoCiAgICAgICAgICAgICAgICBsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHdyaXRlX2l0ZW0sIHppcChub2RlLmtleXMsIG5vZGUudmFsdWVzKQogICAgICAgICAgICApCgogICAgZGVmIHZpc2l0X1R1cGxlKHNlbGYsIG5vZGUpOgogICAgICAgIHdpdGggc2VsZi5kZWxpbWl0X2lmKAogICAgICAgICAgICAiKCIsCiAgICAgICAgICAgICIpIiwKICAgICAgICAgICAgbGVuKG5vZGUuZWx0cykgPT0gMCBvciBzZWxmLmdldF9wcmVjZWRlbmNlKG5vZGUpID4gX1ByZWNlZGVuY2UuVFVQTEUKICAgICAgICApOgogICAgICAgICAgICBzZWxmLml0ZW1zX3ZpZXcoc2VsZi50cmF2ZXJzZSwgbm9kZS5lbHRzKQoKICAgIHVub3AgPSB7IkludmVydCI6ICJ+IiwgIk5vdCI6ICJub3QiLCAiVUFkZCI6ICIrIiwgIlVTdWIiOiAiLSJ9CiAgICB1bm9wX3ByZWNlZGVuY2UgPSB7CiAgICAgICAgIm5vdCI6IF9QcmVjZWRlbmNlLk5PVCwKICAgICAgICAifiI6IF9QcmVjZWRlbmNlLkZBQ1RPUiwKICAgICAgICAiKyI6IF9QcmVjZWRlbmNlLkZBQ1RPUiwKICAgICAgICAiLSI6IF9QcmVjZWRlbmNlLkZBQ1RPUiwKICAgIH0KCiAgICBkZWYgdmlzaXRfVW5hcnlPcChzZWxmLCBub2RlKToKICAgICAgICBvcGVyYXRvciA9IHNlbGYudW5vcFtub2RlLm9wLl9fY2xhc3NfXy5fX25hbWVfX10KICAgICAgICBvcGVyYXRvcl9wcmVjZWRlbmNlID0gc2VsZi51bm9wX3ByZWNlZGVuY2Vbb3BlcmF0b3JdCiAgICAgICAgd2l0aCBzZWxmLnJlcXVpcmVfcGFyZW5zKG9wZXJhdG9yX3ByZWNlZGVuY2UsIG5vZGUpOgogICAgICAgICAgICBzZWxmLndyaXRlKG9wZXJhdG9yKQogICAgICAgICAgICAjIGZhY3RvciBwcmVmaXhlcyAoKywgLSwgfikgc2hvdWxkbid0IGJlIHNlcGFyYXRlZAogICAgICAgICAgICAjIGZyb20gdGhlIHZhbHVlIHRoZXkgYmVsb25nLCAoZS5nOiArMSBpbnN0ZWFkIG9mICsgMSkKICAgICAgICAgICAgaWYgb3BlcmF0b3JfcHJlY2VkZW5jZSBpcyBub3QgX1ByZWNlZGVuY2UuRkFDVE9SOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCiAgICAgICAgICAgIHNlbGYuc2V0X3ByZWNlZGVuY2Uob3BlcmF0b3JfcHJlY2VkZW5jZSwgbm9kZS5vcGVyYW5kKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUub3BlcmFuZCkKCiAgICBiaW5vcCA9IHsKICAgICAgICAiQWRkIjogIisiLAogICAgICAgICJTdWIiOiAiLSIsCiAgICAgICAgIk11bHQiOiAiKiIsCiAgICAgICAgIk1hdE11bHQiOiAiQCIsCiAgICAgICAgIkRpdiI6ICIvIiwKICAgICAgICAiTW9kIjogIiUiLAogICAgICAgICJMU2hpZnQiOiAiPDwiLAogICAgICAgICJSU2hpZnQiOiAiPj4iLAogICAgICAgICJCaXRPciI6ICJ8IiwKICAgICAgICAiQml0WG9yIjogIl4iLAogICAgICAgICJCaXRBbmQiOiAiJiIsCiAgICAgICAgIkZsb29yRGl2IjogIi8vIiwKICAgICAgICAiUG93IjogIioqIiwKICAgIH0KCiAgICBiaW5vcF9wcmVjZWRlbmNlID0gewogICAgICAgICIrIjogX1ByZWNlZGVuY2UuQVJJVEgsCiAgICAgICAgIi0iOiBfUHJlY2VkZW5jZS5BUklUSCwKICAgICAgICAiKiI6IF9QcmVjZWRlbmNlLlRFUk0sCiAgICAgICAgIkAiOiBfUHJlY2VkZW5jZS5URVJNLAogICAgICAgICIvIjogX1ByZWNlZGVuY2UuVEVSTSwKICAgICAgICAiJSI6IF9QcmVjZWRlbmNlLlRFUk0sCiAgICAgICAgIjw8IjogX1ByZWNlZGVuY2UuU0hJRlQsCiAgICAgICAgIj4+IjogX1ByZWNlZGVuY2UuU0hJRlQsCiAgICAgICAgInwiOiBfUHJlY2VkZW5jZS5CT1IsCiAgICAgICAgIl4iOiBfUHJlY2VkZW5jZS5CWE9SLAogICAgICAgICImIjogX1ByZWNlZGVuY2UuQkFORCwKICAgICAgICAiLy8iOiBfUHJlY2VkZW5jZS5URVJNLAogICAgICAgICIqKiI6IF9QcmVjZWRlbmNlLlBPV0VSLAogICAgfQoKICAgIGJpbm9wX3Jhc3NvYyA9IGZyb3plbnNldCgoIioqIiwpKQogICAgZGVmIHZpc2l0X0Jpbk9wKHNlbGYsIG5vZGUpOgogICAgICAgIG9wZXJhdG9yID0gc2VsZi5iaW5vcFtub2RlLm9wLl9fY2xhc3NfXy5fX25hbWVfX10KICAgICAgICBvcGVyYXRvcl9wcmVjZWRlbmNlID0gc2VsZi5iaW5vcF9wcmVjZWRlbmNlW29wZXJhdG9yXQogICAgICAgIHdpdGggc2VsZi5yZXF1aXJlX3BhcmVucyhvcGVyYXRvcl9wcmVjZWRlbmNlLCBub2RlKToKICAgICAgICAgICAgaWYgb3BlcmF0b3IgaW4gc2VsZi5iaW5vcF9yYXNzb2M6CiAgICAgICAgICAgICAgICBsZWZ0X3ByZWNlZGVuY2UgPSBvcGVyYXRvcl9wcmVjZWRlbmNlLm5leHQoKQogICAgICAgICAgICAgICAgcmlnaHRfcHJlY2VkZW5jZSA9IG9wZXJhdG9yX3ByZWNlZGVuY2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGxlZnRfcHJlY2VkZW5jZSA9IG9wZXJhdG9yX3ByZWNlZGVuY2UKICAgICAgICAgICAgICAgIHJpZ2h0X3ByZWNlZGVuY2UgPSBvcGVyYXRvcl9wcmVjZWRlbmNlLm5leHQoKQoKICAgICAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShsZWZ0X3ByZWNlZGVuY2UsIG5vZGUubGVmdCkKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmxlZnQpCiAgICAgICAgICAgIHNlbGYud3JpdGUoZiIge29wZXJhdG9yfSAiKQogICAgICAgICAgICBzZWxmLnNldF9wcmVjZWRlbmNlKHJpZ2h0X3ByZWNlZGVuY2UsIG5vZGUucmlnaHQpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5yaWdodCkKCiAgICBjbXBvcHMgPSB7CiAgICAgICAgIkVxIjogIj09IiwKICAgICAgICAiTm90RXEiOiAiIT0iLAogICAgICAgICJMdCI6ICI8IiwKICAgICAgICAiTHRFIjogIjw9IiwKICAgICAgICAiR3QiOiAiPiIsCiAgICAgICAgIkd0RSI6ICI+PSIsCiAgICAgICAgIklzIjogImlzIiwKICAgICAgICAiSXNOb3QiOiAiaXMgbm90IiwKICAgICAgICAiSW4iOiAiaW4iLAogICAgICAgICJOb3RJbiI6ICJub3QgaW4iLAogICAgfQoKICAgIGRlZiB2aXNpdF9Db21wYXJlKHNlbGYsIG5vZGUpOgogICAgICAgIHdpdGggc2VsZi5yZXF1aXJlX3BhcmVucyhfUHJlY2VkZW5jZS5DTVAsIG5vZGUpOgogICAgICAgICAgICBzZWxmLnNldF9wcmVjZWRlbmNlKF9QcmVjZWRlbmNlLkNNUC5uZXh0KCksIG5vZGUubGVmdCwgKm5vZGUuY29tcGFyYXRvcnMpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5sZWZ0KQogICAgICAgICAgICBmb3IgbywgZSBpbiB6aXAobm9kZS5vcHMsIG5vZGUuY29tcGFyYXRvcnMpOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiICIgKyBzZWxmLmNtcG9wc1tvLl9fY2xhc3NfXy5fX25hbWVfX10gKyAiICIpCiAgICAgICAgICAgICAgICBzZWxmLnRyYXZlcnNlKGUpCgogICAgYm9vbG9wcyA9IHsiQW5kIjogImFuZCIsICJPciI6ICJvciJ9CiAgICBib29sb3BfcHJlY2VkZW5jZSA9IHsiYW5kIjogX1ByZWNlZGVuY2UuQU5ELCAib3IiOiBfUHJlY2VkZW5jZS5PUn0KCiAgICBkZWYgdmlzaXRfQm9vbE9wKHNlbGYsIG5vZGUpOgogICAgICAgIG9wZXJhdG9yID0gc2VsZi5ib29sb3BzW25vZGUub3AuX19jbGFzc19fLl9fbmFtZV9fXQogICAgICAgIG9wZXJhdG9yX3ByZWNlZGVuY2UgPSBzZWxmLmJvb2xvcF9wcmVjZWRlbmNlW29wZXJhdG9yXQoKICAgICAgICBkZWYgaW5jcmVhc2luZ19sZXZlbF90cmF2ZXJzZShub2RlKToKICAgICAgICAgICAgbm9ubG9jYWwgb3BlcmF0b3JfcHJlY2VkZW5jZQogICAgICAgICAgICBvcGVyYXRvcl9wcmVjZWRlbmNlID0gb3BlcmF0b3JfcHJlY2VkZW5jZS5uZXh0KCkKICAgICAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShvcGVyYXRvcl9wcmVjZWRlbmNlLCBub2RlKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUpCgogICAgICAgIHdpdGggc2VsZi5yZXF1aXJlX3BhcmVucyhvcGVyYXRvcl9wcmVjZWRlbmNlLCBub2RlKToKICAgICAgICAgICAgcyA9IGYiIHtvcGVyYXRvcn0gIgogICAgICAgICAgICBzZWxmLmludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKHMpLCBpbmNyZWFzaW5nX2xldmVsX3RyYXZlcnNlLCBub2RlLnZhbHVlcykKCiAgICBkZWYgdmlzaXRfQXR0cmlidXRlKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuc2V0X3ByZWNlZGVuY2UoX1ByZWNlZGVuY2UuQVRPTSwgbm9kZS52YWx1ZSkKICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUudmFsdWUpCiAgICAgICAgIyBTcGVjaWFsIGNhc2U6IDMuX19hYnNfXygpIGlzIGEgc3ludGF4IGVycm9yLCBzbyBpZiBub2RlLnZhbHVlCiAgICAgICAgIyBpcyBhbiBpbnRlZ2VyIGxpdGVyYWwgdGhlbiB3ZSBuZWVkIHRvIGVpdGhlciBwYXJlbnRoZXNpemUKICAgICAgICAjIGl0IG9yIGFkZCBhbiBleHRyYSBzcGFjZSB0byBnZXQgMyAuX19hYnNfXygpLgogICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS52YWx1ZSwgQ29uc3RhbnQpIGFuZCBpc2luc3RhbmNlKG5vZGUudmFsdWUudmFsdWUsIGludCk6CiAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQogICAgICAgIHNlbGYud3JpdGUoIi4iKQogICAgICAgIHNlbGYud3JpdGUobm9kZS5hdHRyKQoKICAgIGRlZiB2aXNpdF9DYWxsKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuc2V0X3ByZWNlZGVuY2UoX1ByZWNlZGVuY2UuQVRPTSwgbm9kZS5mdW5jKQogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5mdW5jKQogICAgICAgIHdpdGggc2VsZi5kZWxpbWl0KCIoIiwgIikiKToKICAgICAgICAgICAgY29tbWEgPSBGYWxzZQogICAgICAgICAgICBmb3IgZSBpbiBub2RlLmFyZ3M6CiAgICAgICAgICAgICAgICBpZiBjb21tYToKICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCIsICIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGNvbW1hID0gVHJ1ZQogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShlKQogICAgICAgICAgICBmb3IgZSBpbiBub2RlLmtleXdvcmRzOgogICAgICAgICAgICAgICAgaWYgY29tbWE6CiAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBjb21tYSA9IFRydWUKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoZSkKCiAgICBkZWYgdmlzaXRfU3Vic2NyaXB0KHNlbGYsIG5vZGUpOgogICAgICAgIGRlZiBpc19ub25fZW1wdHlfdHVwbGUoc2xpY2VfdmFsdWUpOgogICAgICAgICAgICByZXR1cm4gKAogICAgICAgICAgICAgICAgaXNpbnN0YW5jZShzbGljZV92YWx1ZSwgVHVwbGUpCiAgICAgICAgICAgICAgICBhbmQgc2xpY2VfdmFsdWUuZWx0cwogICAgICAgICAgICApCgogICAgICAgIHNlbGYuc2V0X3ByZWNlZGVuY2UoX1ByZWNlZGVuY2UuQVRPTSwgbm9kZS52YWx1ZSkKICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUudmFsdWUpCiAgICAgICAgd2l0aCBzZWxmLmRlbGltaXQoIlsiLCAiXSIpOgogICAgICAgICAgICBpZiBpc19ub25fZW1wdHlfdHVwbGUobm9kZS5zbGljZSk6CiAgICAgICAgICAgICAgICAjIHBhcmVudGhlc2VzIGNhbiBiZSBvbWl0dGVkIGlmIHRoZSB0dXBsZSBpc24ndCBlbXB0eQogICAgICAgICAgICAgICAgc2VsZi5pdGVtc192aWV3KHNlbGYudHJhdmVyc2UsIG5vZGUuc2xpY2UuZWx0cykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5zbGljZSkKCiAgICBkZWYgdmlzaXRfU3RhcnJlZChzZWxmLCBub2RlKToKICAgICAgICBzZWxmLndyaXRlKCIqIikKICAgICAgICBzZWxmLnNldF9wcmVjZWRlbmNlKF9QcmVjZWRlbmNlLkVYUFIsIG5vZGUudmFsdWUpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnZhbHVlKQoKICAgIGRlZiB2aXNpdF9FbGxpcHNpcyhzZWxmLCBub2RlKToKICAgICAgICBzZWxmLndyaXRlKCIuLi4iKQoKICAgIGRlZiB2aXNpdF9TbGljZShzZWxmLCBub2RlKToKICAgICAgICBpZiBub2RlLmxvd2VyOgogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUubG93ZXIpCiAgICAgICAgc2VsZi53cml0ZSgiOiIpCiAgICAgICAgaWYgbm9kZS51cHBlcjoKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnVwcGVyKQogICAgICAgIGlmIG5vZGUuc3RlcDoKICAgICAgICAgICAgc2VsZi53cml0ZSgiOiIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5zdGVwKQoKICAgIGRlZiB2aXNpdF9NYXRjaChzZWxmLCBub2RlKToKICAgICAgICBzZWxmLmZpbGwoIm1hdGNoICIpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnN1YmplY3QpCiAgICAgICAgd2l0aCBzZWxmLmJsb2NrKCk6CiAgICAgICAgICAgIGZvciBjYXNlIGluIG5vZGUuY2FzZXM6CiAgICAgICAgICAgICAgICBzZWxmLnRyYXZlcnNlKGNhc2UpCgogICAgZGVmIHZpc2l0X2FyZyhzZWxmLCBub2RlKToKICAgICAgICBzZWxmLndyaXRlKG5vZGUuYXJnKQogICAgICAgIGlmIG5vZGUuYW5ub3RhdGlvbjoKICAgICAgICAgICAgc2VsZi53cml0ZSgiOiAiKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuYW5ub3RhdGlvbikKCiAgICBkZWYgdmlzaXRfYXJndW1lbnRzKHNlbGYsIG5vZGUpOgogICAgICAgIGZpcnN0ID0gVHJ1ZQogICAgICAgICMgbm9ybWFsIGFyZ3VtZW50cwogICAgICAgIGFsbF9hcmdzID0gbm9kZS5wb3Nvbmx5YXJncyArIG5vZGUuYXJncwogICAgICAgIGRlZmF1bHRzID0gW05vbmVdICogKGxlbihhbGxfYXJncykgLSBsZW4obm9kZS5kZWZhdWx0cykpICsgbm9kZS5kZWZhdWx0cwogICAgICAgIGZvciBpbmRleCwgZWxlbWVudHMgaW4gZW51bWVyYXRlKHppcChhbGxfYXJncywgZGVmYXVsdHMpLCAxKToKICAgICAgICAgICAgYSwgZCA9IGVsZW1lbnRzCiAgICAgICAgICAgIGlmIGZpcnN0OgogICAgICAgICAgICAgICAgZmlyc3QgPSBGYWxzZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKGEpCiAgICAgICAgICAgIGlmIGQ6CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCI9IikKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoZCkKICAgICAgICAgICAgaWYgaW5kZXggPT0gbGVuKG5vZGUucG9zb25seWFyZ3MpOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCAvIikKCiAgICAgICAgIyB2YXJhcmdzLCBvciBiYXJlICcqJyBpZiBubyB2YXJhcmdzIGJ1dCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIHByZXNlbnQKICAgICAgICBpZiBub2RlLnZhcmFyZyBvciBub2RlLmt3b25seWFyZ3M6CiAgICAgICAgICAgIGlmIGZpcnN0OgogICAgICAgICAgICAgICAgZmlyc3QgPSBGYWxzZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICBzZWxmLndyaXRlKCIqIikKICAgICAgICAgICAgaWYgbm9kZS52YXJhcmc6CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKG5vZGUudmFyYXJnLmFyZykKICAgICAgICAgICAgICAgIGlmIG5vZGUudmFyYXJnLmFubm90YXRpb246CiAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiOiAiKQogICAgICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS52YXJhcmcuYW5ub3RhdGlvbikKCiAgICAgICAgIyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzCiAgICAgICAgaWYgbm9kZS5rd29ubHlhcmdzOgogICAgICAgICAgICBmb3IgYSwgZCBpbiB6aXAobm9kZS5rd29ubHlhcmdzLCBub2RlLmt3X2RlZmF1bHRzKToKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiwgIikKICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2UoYSkKICAgICAgICAgICAgICAgIGlmIGQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiPSIpCiAgICAgICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShkKQoKICAgICAgICAjIGt3YXJncwogICAgICAgIGlmIG5vZGUua3dhcmc6CiAgICAgICAgICAgIGlmIGZpcnN0OgogICAgICAgICAgICAgICAgZmlyc3QgPSBGYWxzZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIgKyBub2RlLmt3YXJnLmFyZykKICAgICAgICAgICAgaWYgbm9kZS5rd2FyZy5hbm5vdGF0aW9uOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiOiAiKQogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmt3YXJnLmFubm90YXRpb24pCgogICAgZGVmIHZpc2l0X2tleXdvcmQoc2VsZiwgbm9kZSk6CiAgICAgICAgaWYgbm9kZS5hcmcgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi53cml0ZSgiKioiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYud3JpdGUobm9kZS5hcmcpCiAgICAgICAgICAgIHNlbGYud3JpdGUoIj0iKQogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS52YWx1ZSkKCiAgICBkZWYgdmlzaXRfTGFtYmRhKHNlbGYsIG5vZGUpOgogICAgICAgIHdpdGggc2VsZi5yZXF1aXJlX3BhcmVucyhfUHJlY2VkZW5jZS5URVNULCBub2RlKToKICAgICAgICAgICAgc2VsZi53cml0ZSgibGFtYmRhIikKICAgICAgICAgICAgd2l0aCBzZWxmLmJ1ZmZlcmVkKCkgYXMgYnVmZmVyOgogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmFyZ3MpCiAgICAgICAgICAgIGlmIGJ1ZmZlcjoKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiLCAqYnVmZmVyKQogICAgICAgICAgICBzZWxmLndyaXRlKCI6ICIpCiAgICAgICAgICAgIHNlbGYuc2V0X3ByZWNlZGVuY2UoX1ByZWNlZGVuY2UuVEVTVCwgbm9kZS5ib2R5KQogICAgICAgICAgICBzZWxmLnRyYXZlcnNlKG5vZGUuYm9keSkKCiAgICBkZWYgdmlzaXRfYWxpYXMoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi53cml0ZShub2RlLm5hbWUpCiAgICAgICAgaWYgbm9kZS5hc25hbWU6CiAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhcyAiICsgbm9kZS5hc25hbWUpCgogICAgZGVmIHZpc2l0X3dpdGhpdGVtKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5jb250ZXh0X2V4cHIpCiAgICAgICAgaWYgbm9kZS5vcHRpb25hbF92YXJzOgogICAgICAgICAgICBzZWxmLndyaXRlKCIgYXMgIikKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLm9wdGlvbmFsX3ZhcnMpCgogICAgZGVmIHZpc2l0X21hdGNoX2Nhc2Uoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi5maWxsKCJjYXNlICIpCiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnBhdHRlcm4pCiAgICAgICAgaWYgbm9kZS5ndWFyZDoKICAgICAgICAgICAgc2VsZi53cml0ZSgiIGlmICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5ndWFyZCkKICAgICAgICB3aXRoIHNlbGYuYmxvY2soKToKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLmJvZHkpCgogICAgZGVmIHZpc2l0X01hdGNoVmFsdWUoc2VsZiwgbm9kZSk6CiAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnZhbHVlKQoKICAgIGRlZiB2aXNpdF9NYXRjaFNpbmdsZXRvbihzZWxmLCBub2RlKToKICAgICAgICBzZWxmLl93cml0ZV9jb25zdGFudChub2RlLnZhbHVlKQoKICAgIGRlZiB2aXNpdF9NYXRjaFNlcXVlbmNlKHNlbGYsIG5vZGUpOgogICAgICAgIHdpdGggc2VsZi5kZWxpbWl0KCJbIiwgIl0iKToKICAgICAgICAgICAgc2VsZi5pbnRlcmxlYXZlKAogICAgICAgICAgICAgICAgbGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLnRyYXZlcnNlLCBub2RlLnBhdHRlcm5zCiAgICAgICAgICAgICkKCiAgICBkZWYgdmlzaXRfTWF0Y2hTdGFyKHNlbGYsIG5vZGUpOgogICAgICAgIG5hbWUgPSBub2RlLm5hbWUKICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIG5hbWUgPSAiXyIKICAgICAgICBzZWxmLndyaXRlKGYiKntuYW1lfSIpCgogICAgZGVmIHZpc2l0X01hdGNoTWFwcGluZyhzZWxmLCBub2RlKToKICAgICAgICBkZWYgd3JpdGVfa2V5X3BhdHRlcm5fcGFpcihwYWlyKToKICAgICAgICAgICAgaywgcCA9IHBhaXIKICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShrKQogICAgICAgICAgICBzZWxmLndyaXRlKCI6ICIpCiAgICAgICAgICAgIHNlbGYudHJhdmVyc2UocCkKCiAgICAgICAgd2l0aCBzZWxmLmRlbGltaXQoInsiLCAifSIpOgogICAgICAgICAgICBrZXlzID0gbm9kZS5rZXlzCiAgICAgICAgICAgIHNlbGYuaW50ZXJsZWF2ZSgKICAgICAgICAgICAgICAgIGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwKICAgICAgICAgICAgICAgIHdyaXRlX2tleV9wYXR0ZXJuX3BhaXIsCiAgICAgICAgICAgICAgICB6aXAoa2V5cywgbm9kZS5wYXR0ZXJucywgc3RyaWN0PVRydWUpLAogICAgICAgICAgICApCiAgICAgICAgICAgIHJlc3QgPSBub2RlLnJlc3QKICAgICAgICAgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGlmIGtleXM6CiAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICAgICAgc2VsZi53cml0ZShmIioqe3Jlc3R9IikKCiAgICBkZWYgdmlzaXRfTWF0Y2hDbGFzcyhzZWxmLCBub2RlKToKICAgICAgICBzZWxmLnNldF9wcmVjZWRlbmNlKF9QcmVjZWRlbmNlLkFUT00sIG5vZGUuY2xzKQogICAgICAgIHNlbGYudHJhdmVyc2Uobm9kZS5jbHMpCiAgICAgICAgd2l0aCBzZWxmLmRlbGltaXQoIigiLCAiKSIpOgogICAgICAgICAgICBwYXR0ZXJucyA9IG5vZGUucGF0dGVybnMKICAgICAgICAgICAgc2VsZi5pbnRlcmxlYXZlKAogICAgICAgICAgICAgICAgbGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLnRyYXZlcnNlLCBwYXR0ZXJucwogICAgICAgICAgICApCiAgICAgICAgICAgIGF0dHJzID0gbm9kZS5rd2RfYXR0cnMKICAgICAgICAgICAgaWYgYXR0cnM6CiAgICAgICAgICAgICAgICBkZWYgd3JpdGVfYXR0cl9wYXR0ZXJuKHBhaXIpOgogICAgICAgICAgICAgICAgICAgIGF0dHIsIHBhdHRlcm4gPSBwYWlyCiAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShmInthdHRyfT0iKQogICAgICAgICAgICAgICAgICAgIHNlbGYudHJhdmVyc2UocGF0dGVybikKCiAgICAgICAgICAgICAgICBpZiBwYXR0ZXJuczoKICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCIsICIpCiAgICAgICAgICAgICAgICBzZWxmLmludGVybGVhdmUoCiAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLAogICAgICAgICAgICAgICAgICAgIHdyaXRlX2F0dHJfcGF0dGVybiwKICAgICAgICAgICAgICAgICAgICB6aXAoYXR0cnMsIG5vZGUua3dkX3BhdHRlcm5zLCBzdHJpY3Q9VHJ1ZSksCiAgICAgICAgICAgICAgICApCgogICAgZGVmIHZpc2l0X01hdGNoQXMoc2VsZiwgbm9kZSk6CiAgICAgICAgbmFtZSA9IG5vZGUubmFtZQogICAgICAgIHBhdHRlcm4gPSBub2RlLnBhdHRlcm4KICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYud3JpdGUoIl8iKQogICAgICAgIGVsaWYgcGF0dGVybiBpcyBOb25lOgogICAgICAgICAgICBzZWxmLndyaXRlKG5vZGUubmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB3aXRoIHNlbGYucmVxdWlyZV9wYXJlbnMoX1ByZWNlZGVuY2UuVEVTVCwgbm9kZSk6CiAgICAgICAgICAgICAgICBzZWxmLnNldF9wcmVjZWRlbmNlKF9QcmVjZWRlbmNlLkJPUiwgbm9kZS5wYXR0ZXJuKQogICAgICAgICAgICAgICAgc2VsZi50cmF2ZXJzZShub2RlLnBhdHRlcm4pCiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGYiIGFzIHtub2RlLm5hbWV9IikKCiAgICBkZWYgdmlzaXRfTWF0Y2hPcihzZWxmLCBub2RlKToKICAgICAgICB3aXRoIHNlbGYucmVxdWlyZV9wYXJlbnMoX1ByZWNlZGVuY2UuQk9SLCBub2RlKToKICAgICAgICAgICAgc2VsZi5zZXRfcHJlY2VkZW5jZShfUHJlY2VkZW5jZS5CT1IubmV4dCgpLCAqbm9kZS5wYXR0ZXJucykKICAgICAgICAgICAgc2VsZi5pbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiIHwgIiksIHNlbGYudHJhdmVyc2UsIG5vZGUucGF0dGVybnMpCgpkZWYgdW5wYXJzZShhc3Rfb2JqKToKICAgIHVucGFyc2VyID0gX1VucGFyc2VyKCkKICAgIHJldHVybiB1bnBhcnNlci52aXNpdChhc3Rfb2JqKQoKCmRlZiBtYWluKCk6CiAgICBpbXBvcnQgYXJncGFyc2UKCiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdweXRob24gLW0gYXN0JykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2luZmlsZScsIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUobW9kZT0ncmInKSwgbmFyZ3M9Jz8nLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSctJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndGhlIGZpbGUgdG8gcGFyc2U7IGRlZmF1bHRzIHRvIHN0ZGluJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1tJywgJy0tbW9kZScsIGRlZmF1bHQ9J2V4ZWMnLAogICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPSgnZXhlYycsICdzaW5nbGUnLCAnZXZhbCcsICdmdW5jX3R5cGUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3BlY2lmeSB3aGF0IGtpbmQgb2YgY29kZSBtdXN0IGJlIHBhcnNlZCcpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vLXR5cGUtY29tbWVudHMnLCBkZWZhdWx0PVRydWUsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCBhZGQgaW5mb3JtYXRpb24gYWJvdXQgdHlwZSBjb21tZW50cyIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLWluY2x1ZGUtYXR0cmlidXRlcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2luY2x1ZGUgYXR0cmlidXRlcyBzdWNoIGFzIGxpbmUgbnVtYmVycyBhbmQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2x1bW4gb2Zmc2V0cycpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaScsICctLWluZGVudCcsIHR5cGU9aW50LCBkZWZhdWx0PTMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2luZGVudGF0aW9uIG9mIG5vZGVzIChudW1iZXIgb2Ygc3BhY2VzKScpCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQoKICAgIHdpdGggYXJncy5pbmZpbGUgYXMgaW5maWxlOgogICAgICAgIHNvdXJjZSA9IGluZmlsZS5yZWFkKCkKICAgIHRyZWUgPSBwYXJzZShzb3VyY2UsIGFyZ3MuaW5maWxlLm5hbWUsIGFyZ3MubW9kZSwgdHlwZV9jb21tZW50cz1hcmdzLm5vX3R5cGVfY29tbWVudHMpCiAgICBwcmludChkdW1wKHRyZWUsIGluY2x1ZGVfYXR0cmlidXRlcz1hcmdzLmluY2x1ZGVfYXR0cmlidXRlcywgaW5kZW50PWFyZ3MuaW5kZW50KSkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBtYWluKCkKUEsDBBQAAAAAAAIgo1ZjXOe/Mi0AADItAAALAAAAYXN5bmNoYXQucHkjIC0qLSBNb2RlOiBQeXRob247IHRhYi13aWR0aDogNCAtKi0KIyAgICAgICBJZDogYXN5bmNoYXQucHksdiAyLjI2IDIwMDAvMDkvMDcgMjI6Mjk6MjYgcnVzaGluZyBFeHAKIyAgICAgICBBdXRob3I6IFNhbSBSdXNoaW5nIDxydXNoaW5nQG5pZ2h0bWFyZS5jb20+CgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBDb3B5cmlnaHQgMTk5NiBieSBTYW0gUnVzaGluZwojCiMgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAojCiMgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKIyBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQojIGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbAojIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCiMgbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIFNhbQojIFJ1c2hpbmcgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8KIyBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKIyBwZXJtaXNzaW9uLgojCiMgU0FNIFJVU0hJTkcgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCiMgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTgojIE5PIEVWRU5UIFNIQUxMIFNBTSBSVVNISU5HIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCiMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUwojIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKIyBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4KIyBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCnIiIiJBIGNsYXNzIHN1cHBvcnRpbmcgY2hhdC1zdHlsZSAoY29tbWFuZC9yZXNwb25zZSkgcHJvdG9jb2xzLgoKVGhpcyBjbGFzcyBhZGRzIHN1cHBvcnQgZm9yICdjaGF0JyBzdHlsZSBwcm90b2NvbHMgLSB3aGVyZSBvbmUgc2lkZQpzZW5kcyBhICdjb21tYW5kJywgYW5kIHRoZSBvdGhlciBzZW5kcyBhIHJlc3BvbnNlIChleGFtcGxlcyB3b3VsZCBiZQp0aGUgY29tbW9uIGludGVybmV0IHByb3RvY29scyAtIHNtdHAsIG5udHAsIGZ0cCwgZXRjLi4pLgoKVGhlIGhhbmRsZV9yZWFkKCkgbWV0aG9kIGxvb2tzIGF0IHRoZSBpbnB1dCBzdHJlYW0gZm9yIHRoZSBjdXJyZW50Cid0ZXJtaW5hdG9yJyAodXN1YWxseSAnXHJcbicgZm9yIHNpbmdsZS1saW5lIHJlc3BvbnNlcywgJ1xyXG4uXHJcbicKZm9yIG11bHRpLWxpbmUgb3V0cHV0KSwgY2FsbGluZyBzZWxmLmZvdW5kX3Rlcm1pbmF0b3IoKSBvbiBpdHMKcmVjZWlwdC4KCmZvciBleGFtcGxlOgpTYXkgeW91IGJ1aWxkIGFuIGFzeW5jIG5udHAgY2xpZW50IHVzaW5nIHRoaXMgY2xhc3MuICBBdCB0aGUgc3RhcnQKb2YgdGhlIGNvbm5lY3Rpb24sIHlvdSdsbCBoYXZlIHNlbGYudGVybWluYXRvciBzZXQgdG8gJ1xyXG4nLCBpbgpvcmRlciB0byBwcm9jZXNzIHRoZSBzaW5nbGUtbGluZSBncmVldGluZy4gIEp1c3QgYmVmb3JlIGlzc3VpbmcgYQonTElTVCcgY29tbWFuZCB5b3UnbGwgc2V0IGl0IHRvICdcclxuLlxyXG4nLiAgVGhlIG91dHB1dCBvZiB0aGUgTElTVApjb21tYW5kIHdpbGwgYmUgYWNjdW11bGF0ZWQgKHVzaW5nIHlvdXIgb3duICdjb2xsZWN0X2luY29taW5nX2RhdGEnCm1ldGhvZCkgdXAgdG8gdGhlIHRlcm1pbmF0b3IsIGFuZCB0aGVuIGNvbnRyb2wgd2lsbCBiZSByZXR1cm5lZCB0bwp5b3UgLSBieSBjYWxsaW5nIHlvdXIgc2VsZi5mb3VuZF90ZXJtaW5hdG9yKCkgbWV0aG9kLgoiIiIKaW1wb3J0IGFzeW5jb3JlCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCgpmcm9tIHdhcm5pbmdzIGltcG9ydCBfZGVwcmVjYXRlZAoKX0RFUFJFQ0FUSU9OX01TRyA9ICgnVGhlIHtuYW1lfSBtb2R1bGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcKICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIHtyZW1vdmV9LiBUaGUgcmVjb21tZW5kZWQgcmVwbGFjZW1lbnQgaXMgYXN5bmNpbycpCl9kZXByZWNhdGVkKF9fbmFtZV9fLCBfREVQUkVDQVRJT05fTVNHLCByZW1vdmU9KDMsIDEyKSkKCgoKY2xhc3MgYXN5bmNfY2hhdChhc3luY29yZS5kaXNwYXRjaGVyKToKICAgICIiIlRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MuICBZb3UgbXVzdCBkZXJpdmUgZnJvbSB0aGlzIGNsYXNzLCBhbmQgYWRkCiAgICB0aGUgdHdvIG1ldGhvZHMgY29sbGVjdF9pbmNvbWluZ19kYXRhKCkgYW5kIGZvdW5kX3Rlcm1pbmF0b3IoKSIiIgoKICAgICMgdGhlc2UgYXJlIG92ZXJyaWRhYmxlIGRlZmF1bHRzCgogICAgYWNfaW5fYnVmZmVyX3NpemUgPSA2NTUzNgogICAgYWNfb3V0X2J1ZmZlcl9zaXplID0gNjU1MzYKCiAgICAjIHdlIGRvbid0IHdhbnQgdG8gZW5hYmxlIHRoZSB1c2Ugb2YgZW5jb2RpbmcgYnkgZGVmYXVsdCwgYmVjYXVzZSB0aGF0IGlzIGEKICAgICMgc2lnbiBvZiBhbiBhcHBsaWNhdGlvbiBidWcgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHBhc3Mgc2lsZW50bHkKCiAgICB1c2VfZW5jb2RpbmcgPSAwCiAgICBlbmNvZGluZyA9ICdsYXRpbi0xJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICAjIGZvciBzdHJpbmcgdGVybWluYXRvciBtYXRjaGluZwogICAgICAgIHNlbGYuYWNfaW5fYnVmZmVyID0gYicnCgogICAgICAgICMgd2UgdXNlIGEgbGlzdCBoZXJlIHJhdGhlciB0aGFuIGlvLkJ5dGVzSU8gZm9yIGEgZmV3IHJlYXNvbnMuLi4KICAgICAgICAjIGRlbCBsc3RbOl0gaXMgZmFzdGVyIHRoYW4gYmlvLnRydW5jYXRlKDApCiAgICAgICAgIyBsc3QgPSBbXSBpcyBmYXN0ZXIgdGhhbiBiaW8udHJ1bmNhdGUoMCkKICAgICAgICBzZWxmLmluY29taW5nID0gW10KCiAgICAgICAgIyB3ZSB0b3NzIHRoZSB1c2Ugb2YgdGhlICJzaW1wbGUgcHJvZHVjZXIiIGFuZCByZXBsYWNlIGl0IHdpdGgKICAgICAgICAjIGEgcHVyZSBkZXF1ZSwgd2hpY2ggdGhlIG9yaWdpbmFsIGZpZm8gd2FzIGEgd3JhcHBpbmcgb2YKICAgICAgICBzZWxmLnByb2R1Y2VyX2ZpZm8gPSBkZXF1ZSgpCiAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBzb2NrLCBtYXApCgogICAgZGVmIGNvbGxlY3RfaW5jb21pbmdfZGF0YShzZWxmLCBkYXRhKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJtdXN0IGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzIikKCiAgICBkZWYgX2NvbGxlY3RfaW5jb21pbmdfZGF0YShzZWxmLCBkYXRhKToKICAgICAgICBzZWxmLmluY29taW5nLmFwcGVuZChkYXRhKQoKICAgIGRlZiBfZ2V0X2RhdGEoc2VsZik6CiAgICAgICAgZCA9IGInJy5qb2luKHNlbGYuaW5jb21pbmcpCiAgICAgICAgZGVsIHNlbGYuaW5jb21pbmdbOl0KICAgICAgICByZXR1cm4gZAoKICAgIGRlZiBmb3VuZF90ZXJtaW5hdG9yKHNlbGYpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIm11c3QgYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3MiKQoKICAgIGRlZiBzZXRfdGVybWluYXRvcihzZWxmLCB0ZXJtKToKICAgICAgICAiIiJTZXQgdGhlIGlucHV0IGRlbGltaXRlci4KCiAgICAgICAgQ2FuIGJlIGEgZml4ZWQgc3RyaW5nIG9mIGFueSBsZW5ndGgsIGFuIGludGVnZXIsIG9yIE5vbmUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXJtLCBzdHIpIGFuZCBzZWxmLnVzZV9lbmNvZGluZzoKICAgICAgICAgICAgdGVybSA9IGJ5dGVzKHRlcm0sIHNlbGYuZW5jb2RpbmcpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHRlcm0sIGludCkgYW5kIHRlcm0gPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0aGUgbnVtYmVyIG9mIHJlY2VpdmVkIGJ5dGVzIG11c3QgYmUgcG9zaXRpdmUnKQogICAgICAgIHNlbGYudGVybWluYXRvciA9IHRlcm0KCiAgICBkZWYgZ2V0X3Rlcm1pbmF0b3Ioc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYudGVybWluYXRvcgoKICAgICMgZ3JhYiBzb21lIG1vcmUgZGF0YSBmcm9tIHRoZSBzb2NrZXQsCiAgICAjIHRocm93IGl0IHRvIHRoZSBjb2xsZWN0b3IgbWV0aG9kLAogICAgIyBjaGVjayBmb3IgdGhlIHRlcm1pbmF0b3IsCiAgICAjIGlmIGZvdW5kLCB0cmFuc2l0aW9uIHRvIHRoZSBuZXh0IHN0YXRlLgoKICAgIGRlZiBoYW5kbGVfcmVhZChzZWxmKToKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBkYXRhID0gc2VsZi5yZWN2KHNlbGYuYWNfaW5fYnVmZmVyX3NpemUpCiAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKCkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKSBhbmQgc2VsZi51c2VfZW5jb2Rpbmc6CiAgICAgICAgICAgIGRhdGEgPSBieXRlcyhzdHIsIHNlbGYuZW5jb2RpbmcpCiAgICAgICAgc2VsZi5hY19pbl9idWZmZXIgPSBzZWxmLmFjX2luX2J1ZmZlciArIGRhdGEKCiAgICAgICAgIyBDb250aW51ZSB0byBzZWFyY2ggZm9yIHNlbGYudGVybWluYXRvciBpbiBzZWxmLmFjX2luX2J1ZmZlciwKICAgICAgICAjIHdoaWxlIGNhbGxpbmcgc2VsZi5jb2xsZWN0X2luY29taW5nX2RhdGEuICBUaGUgd2hpbGUgbG9vcAogICAgICAgICMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbWlnaHQgcmVhZCBzZXZlcmFsIGRhdGErdGVybWluYXRvcgogICAgICAgICMgY29tYm9zIHdpdGggYSBzaW5nbGUgcmVjdig0MDk2KS4KCiAgICAgICAgd2hpbGUgc2VsZi5hY19pbl9idWZmZXI6CiAgICAgICAgICAgIGxiID0gbGVuKHNlbGYuYWNfaW5fYnVmZmVyKQogICAgICAgICAgICB0ZXJtaW5hdG9yID0gc2VsZi5nZXRfdGVybWluYXRvcigpCiAgICAgICAgICAgIGlmIG5vdCB0ZXJtaW5hdG9yOgogICAgICAgICAgICAgICAgIyBubyB0ZXJtaW5hdG9yLCBjb2xsZWN0IGl0IGFsbAogICAgICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2luY29taW5nX2RhdGEoc2VsZi5hY19pbl9idWZmZXIpCiAgICAgICAgICAgICAgICBzZWxmLmFjX2luX2J1ZmZlciA9IGInJwogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodGVybWluYXRvciwgaW50KToKICAgICAgICAgICAgICAgICMgbnVtZXJpYyB0ZXJtaW5hdG9yCiAgICAgICAgICAgICAgICBuID0gdGVybWluYXRvcgogICAgICAgICAgICAgICAgaWYgbGIgPCBuOgogICAgICAgICAgICAgICAgICAgIHNlbGYuY29sbGVjdF9pbmNvbWluZ19kYXRhKHNlbGYuYWNfaW5fYnVmZmVyKQogICAgICAgICAgICAgICAgICAgIHNlbGYuYWNfaW5fYnVmZmVyID0gYicnCiAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXJtaW5hdG9yID0gc2VsZi50ZXJtaW5hdG9yIC0gbGIKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2luY29taW5nX2RhdGEoc2VsZi5hY19pbl9idWZmZXJbOm5dKQogICAgICAgICAgICAgICAgICAgIHNlbGYuYWNfaW5fYnVmZmVyID0gc2VsZi5hY19pbl9idWZmZXJbbjpdCiAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXJtaW5hdG9yID0gMAogICAgICAgICAgICAgICAgICAgIHNlbGYuZm91bmRfdGVybWluYXRvcigpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIDMgY2FzZXM6CiAgICAgICAgICAgICAgICAjIDEpIGVuZCBvZiBidWZmZXIgbWF0Y2hlcyB0ZXJtaW5hdG9yIGV4YWN0bHk6CiAgICAgICAgICAgICAgICAjICAgIGNvbGxlY3QgZGF0YSwgdHJhbnNpdGlvbgogICAgICAgICAgICAgICAgIyAyKSBlbmQgb2YgYnVmZmVyIG1hdGNoZXMgc29tZSBwcmVmaXg6CiAgICAgICAgICAgICAgICAjICAgIGNvbGxlY3QgZGF0YSB0byB0aGUgcHJlZml4CiAgICAgICAgICAgICAgICAjIDMpIGVuZCBvZiBidWZmZXIgZG9lcyBub3QgbWF0Y2ggYW55IHByZWZpeDoKICAgICAgICAgICAgICAgICMgICAgY29sbGVjdCBkYXRhCiAgICAgICAgICAgICAgICB0ZXJtaW5hdG9yX2xlbiA9IGxlbih0ZXJtaW5hdG9yKQogICAgICAgICAgICAgICAgaW5kZXggPSBzZWxmLmFjX2luX2J1ZmZlci5maW5kKHRlcm1pbmF0b3IpCiAgICAgICAgICAgICAgICBpZiBpbmRleCAhPSAtMToKICAgICAgICAgICAgICAgICAgICAjIHdlIGZvdW5kIHRoZSB0ZXJtaW5hdG9yCiAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPiAwOgogICAgICAgICAgICAgICAgICAgICAgICAjIGRvbid0IGJvdGhlciByZXBvcnRpbmcgdGhlIGVtcHR5IHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAjIChzb3VyY2Ugb2Ygc3VidGxlIGJ1Z3MpCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29sbGVjdF9pbmNvbWluZ19kYXRhKHNlbGYuYWNfaW5fYnVmZmVyWzppbmRleF0pCiAgICAgICAgICAgICAgICAgICAgc2VsZi5hY19pbl9idWZmZXIgPSBzZWxmLmFjX2luX2J1ZmZlcltpbmRleCt0ZXJtaW5hdG9yX2xlbjpdCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGRvZXMgdGhlIFJpZ2h0IFRoaW5nIGlmIHRoZSB0ZXJtaW5hdG9yCiAgICAgICAgICAgICAgICAgICAgIyBpcyBjaGFuZ2VkIGhlcmUuCiAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3VuZF90ZXJtaW5hdG9yKCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYSBwcmVmaXggb2YgdGhlIHRlcm1pbmF0b3IKICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGZpbmRfcHJlZml4X2F0X2VuZChzZWxmLmFjX2luX2J1ZmZlciwgdGVybWluYXRvcikKICAgICAgICAgICAgICAgICAgICBpZiBpbmRleDoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggIT0gbGI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdlIGZvdW5kIGEgcHJlZml4LCBjb2xsZWN0IHVwIHRvIHRoZSBwcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29sbGVjdF9pbmNvbWluZ19kYXRhKHNlbGYuYWNfaW5fYnVmZmVyWzotaW5kZXhdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hY19pbl9idWZmZXIgPSBzZWxmLmFjX2luX2J1ZmZlclstaW5kZXg6XQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gcHJlZml4LCBjb2xsZWN0IGl0IGFsbAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbGxlY3RfaW5jb21pbmdfZGF0YShzZWxmLmFjX2luX2J1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hY19pbl9idWZmZXIgPSBiJycKCiAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgogICAgICAgIHNlbGYuaW5pdGlhdGVfc2VuZCgpCgogICAgZGVmIGhhbmRsZV9jbG9zZShzZWxmKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgcHVzaChzZWxmLCBkYXRhKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSwgbWVtb3J5dmlldykpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2RhdGEgYXJndW1lbnQgbXVzdCBiZSBieXRlLWlzaCAoJXIpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUoZGF0YSkpCiAgICAgICAgc2FicyA9IHNlbGYuYWNfb3V0X2J1ZmZlcl9zaXplCiAgICAgICAgaWYgbGVuKGRhdGEpID4gc2FiczoKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGRhdGEpLCBzYWJzKToKICAgICAgICAgICAgICAgIHNlbGYucHJvZHVjZXJfZmlmby5hcHBlbmQoZGF0YVtpOmkrc2Fic10pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5wcm9kdWNlcl9maWZvLmFwcGVuZChkYXRhKQogICAgICAgIHNlbGYuaW5pdGlhdGVfc2VuZCgpCgogICAgZGVmIHB1c2hfd2l0aF9wcm9kdWNlcihzZWxmLCBwcm9kdWNlcik6CiAgICAgICAgc2VsZi5wcm9kdWNlcl9maWZvLmFwcGVuZChwcm9kdWNlcikKICAgICAgICBzZWxmLmluaXRpYXRlX3NlbmQoKQoKICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAicHJlZGljYXRlIGZvciBpbmNsdXNpb24gaW4gdGhlIHJlYWRhYmxlIGZvciBzZWxlY3QoKSIKICAgICAgICAjIGNhbm5vdCB1c2UgdGhlIG9sZCBwcmVkaWNhdGUsIGl0IHZpb2xhdGVzIHRoZSBjbGFpbSBvZiB0aGUKICAgICAgICAjIHNldF90ZXJtaW5hdG9yIG1ldGhvZC4KCiAgICAgICAgIyByZXR1cm4gKGxlbihzZWxmLmFjX2luX2J1ZmZlcikgPD0gc2VsZi5hY19pbl9idWZmZXJfc2l6ZSkKICAgICAgICByZXR1cm4gMQoKICAgIGRlZiB3cml0YWJsZShzZWxmKToKICAgICAgICAicHJlZGljYXRlIGZvciBpbmNsdXNpb24gaW4gdGhlIHdyaXRhYmxlIGZvciBzZWxlY3QoKSIKICAgICAgICByZXR1cm4gc2VsZi5wcm9kdWNlcl9maWZvIG9yIChub3Qgc2VsZi5jb25uZWN0ZWQpCgogICAgZGVmIGNsb3NlX3doZW5fZG9uZShzZWxmKToKICAgICAgICAiYXV0b21hdGljYWxseSBjbG9zZSB0aGlzIGNoYW5uZWwgb25jZSB0aGUgb3V0Z29pbmcgcXVldWUgaXMgZW1wdHkiCiAgICAgICAgc2VsZi5wcm9kdWNlcl9maWZvLmFwcGVuZChOb25lKQoKICAgIGRlZiBpbml0aWF0ZV9zZW5kKHNlbGYpOgogICAgICAgIHdoaWxlIHNlbGYucHJvZHVjZXJfZmlmbyBhbmQgc2VsZi5jb25uZWN0ZWQ6CiAgICAgICAgICAgIGZpcnN0ID0gc2VsZi5wcm9kdWNlcl9maWZvWzBdCiAgICAgICAgICAgICMgaGFuZGxlIGVtcHR5IHN0cmluZy9idWZmZXIgb3IgTm9uZSBlbnRyeQogICAgICAgICAgICBpZiBub3QgZmlyc3Q6CiAgICAgICAgICAgICAgICBkZWwgc2VsZi5wcm9kdWNlcl9maWZvWzBdCiAgICAgICAgICAgICAgICBpZiBmaXJzdCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nsb3NlKCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgICMgaGFuZGxlIGNsYXNzaWMgcHJvZHVjZXIgYmVoYXZpb3IKICAgICAgICAgICAgb2JzID0gc2VsZi5hY19vdXRfYnVmZmVyX3NpemUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZGF0YSA9IGZpcnN0WzpvYnNdCiAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICBkYXRhID0gZmlyc3QubW9yZSgpCiAgICAgICAgICAgICAgICBpZiBkYXRhOgogICAgICAgICAgICAgICAgICAgIHNlbGYucHJvZHVjZXJfZmlmby5hcHBlbmRsZWZ0KGRhdGEpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLnByb2R1Y2VyX2ZpZm9bMF0KICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cikgYW5kIHNlbGYudXNlX2VuY29kaW5nOgogICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzKGRhdGEsIHNlbGYuZW5jb2RpbmcpCgogICAgICAgICAgICAjIHNlbmQgdGhlIGRhdGEKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbnVtX3NlbnQgPSBzZWxmLnNlbmQoZGF0YSkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcigpCiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgIGlmIG51bV9zZW50OgogICAgICAgICAgICAgICAgaWYgbnVtX3NlbnQgPCBsZW4oZGF0YSkgb3Igb2JzIDwgbGVuKGZpcnN0KToKICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2R1Y2VyX2ZpZm9bMF0gPSBmaXJzdFtudW1fc2VudDpdCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLnByb2R1Y2VyX2ZpZm9bMF0KICAgICAgICAgICAgIyB3ZSB0cmllZCB0byBzZW5kIHNvbWUgYWN0dWFsIGRhdGEKICAgICAgICAgICAgcmV0dXJuCgogICAgZGVmIGRpc2NhcmRfYnVmZmVycyhzZWxmKToKICAgICAgICAjIEVtZXJnZW5jaWVzIG9ubHkhCiAgICAgICAgc2VsZi5hY19pbl9idWZmZXIgPSBiJycKICAgICAgICBkZWwgc2VsZi5pbmNvbWluZ1s6XQogICAgICAgIHNlbGYucHJvZHVjZXJfZmlmby5jbGVhcigpCgoKY2xhc3Mgc2ltcGxlX3Byb2R1Y2VyOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhLCBidWZmZXJfc2l6ZT01MTIpOgogICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKICAgICAgICBzZWxmLmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemUKCiAgICBkZWYgbW9yZShzZWxmKToKICAgICAgICBpZiBsZW4oc2VsZi5kYXRhKSA+IHNlbGYuYnVmZmVyX3NpemU6CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZGF0YVs6c2VsZi5idWZmZXJfc2l6ZV0KICAgICAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5kYXRhW3NlbGYuYnVmZmVyX3NpemU6XQogICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5kYXRhCiAgICAgICAgICAgIHNlbGYuZGF0YSA9IGInJwogICAgICAgICAgICByZXR1cm4gcmVzdWx0CgoKIyBHaXZlbiAnaGF5c3RhY2snLCBzZWUgaWYgYW55IHByZWZpeCBvZiAnbmVlZGxlJyBpcyBhdCBpdHMgZW5kLiAgVGhpcwojIGFzc3VtZXMgYW4gZXhhY3QgbWF0Y2ggaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YKIyBjaGFyYWN0ZXJzIG1hdGNoZWQuCiMgZm9yIGV4YW1wbGU6CiMgZl9wX2FfZSgicXdlcnR5XHIiLCAiXHJcbiIpID0+IDEKIyBmX3BfYV9lKCJxd2VydHlka2pmIiwgIlxyXG4iKSA9PiAwCiMgZl9wX2FfZSgicXdlcnR5XHJcbiIsICJcclxuIikgPT4gPHVuZGVmaW5lZD4KCiMgdGhpcyBjb3VsZCBtYXliZSBiZSBtYWRlIGZhc3RlciB3aXRoIGEgY29tcHV0ZWQgcmVnZXg/CiMgW2Fuc3dlcjogbm87IGNpcmNhIFB5dGhvbi0yLjAsIEphbiAyMDAxXQojIG5ldyBweXRob246ICAgMjg5NjEvcwojIG9sZCBweXRob246ICAgMTgzMDcvcwojIHJlOiAgICAgICAgMTI4MjAvcwojIHJlZ2V4OiAgICAgMTQwMzUvcwoKZGVmIGZpbmRfcHJlZml4X2F0X2VuZChoYXlzdGFjaywgbmVlZGxlKToKICAgIGwgPSBsZW4obmVlZGxlKSAtIDEKICAgIHdoaWxlIGwgYW5kIG5vdCBoYXlzdGFjay5lbmRzd2l0aChuZWVkbGVbOmxdKToKICAgICAgICBsIC09IDEKICAgIHJldHVybiBsClBLAwQUAAAAAAACIKNWAWTvb1ZPAABWTwAACwAAAGFzeW5jb3JlLnB5IyAtKi0gTW9kZTogUHl0aG9uIC0qLQojICAgSWQ6IGFzeW5jb3JlLnB5LHYgMi41MSAyMDAwLzA5LzA3IDIyOjI5OjI2IHJ1c2hpbmcgRXhwCiMgICBBdXRob3I6IFNhbSBSdXNoaW5nIDxydXNoaW5nQG5pZ2h0bWFyZS5jb20+CgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBDb3B5cmlnaHQgMTk5NiBieSBTYW0gUnVzaGluZwojCiMgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAojCiMgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKIyBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQojIGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbAojIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCiMgbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIFNhbQojIFJ1c2hpbmcgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8KIyBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKIyBwZXJtaXNzaW9uLgojCiMgU0FNIFJVU0hJTkcgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCiMgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTgojIE5PIEVWRU5UIFNIQUxMIFNBTSBSVVNISU5HIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCiMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUwojIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKIyBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4KIyBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiIiIkJhc2ljIGluZnJhc3RydWN0dXJlIGZvciBhc3luY2hyb25vdXMgc29ja2V0IHNlcnZpY2UgY2xpZW50cyBhbmQgc2VydmVycy4KClRoZXJlIGFyZSBvbmx5IHR3byB3YXlzIHRvIGhhdmUgYSBwcm9ncmFtIG9uIGEgc2luZ2xlIHByb2Nlc3NvciBkbyAibW9yZQp0aGFuIG9uZSB0aGluZyBhdCBhIHRpbWUiLiAgTXVsdGktdGhyZWFkZWQgcHJvZ3JhbW1pbmcgaXMgdGhlIHNpbXBsZXN0IGFuZAptb3N0IHBvcHVsYXIgd2F5IHRvIGRvIGl0LCBidXQgdGhlcmUgaXMgYW5vdGhlciB2ZXJ5IGRpZmZlcmVudCB0ZWNobmlxdWUsCnRoYXQgbGV0cyB5b3UgaGF2ZSBuZWFybHkgYWxsIHRoZSBhZHZhbnRhZ2VzIG9mIG11bHRpLXRocmVhZGluZywgd2l0aG91dAphY3R1YWxseSB1c2luZyBtdWx0aXBsZSB0aHJlYWRzLiBpdCdzIHJlYWxseSBvbmx5IHByYWN0aWNhbCBpZiB5b3VyIHByb2dyYW0KaXMgbGFyZ2VseSBJL08gYm91bmQuIElmIHlvdXIgcHJvZ3JhbSBpcyBDUFUgYm91bmQsIHRoZW4gcHJlLWVtcHRpdmUKc2NoZWR1bGVkIHRocmVhZHMgYXJlIHByb2JhYmx5IHdoYXQgeW91IHJlYWxseSBuZWVkLiBOZXR3b3JrIHNlcnZlcnMgYXJlCnJhcmVseSBDUFUtYm91bmQsIGhvd2V2ZXIuCgpJZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gc3VwcG9ydHMgdGhlIHNlbGVjdCgpIHN5c3RlbSBjYWxsIGluIGl0cyBJL08KbGlicmFyeSAoYW5kIG5lYXJseSBhbGwgZG8pLCB0aGVuIHlvdSBjYW4gdXNlIGl0IHRvIGp1Z2dsZSBtdWx0aXBsZQpjb21tdW5pY2F0aW9uIGNoYW5uZWxzIGF0IG9uY2U7IGRvaW5nIG90aGVyIHdvcmsgd2hpbGUgeW91ciBJL08gaXMgdGFraW5nCnBsYWNlIGluIHRoZSAiYmFja2dyb3VuZC4iICBBbHRob3VnaCB0aGlzIHN0cmF0ZWd5IGNhbiBzZWVtIHN0cmFuZ2UgYW5kCmNvbXBsZXgsIGVzcGVjaWFsbHkgYXQgZmlyc3QsIGl0IGlzIGluIG1hbnkgd2F5cyBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbmQKY29udHJvbCB0aGFuIG11bHRpLXRocmVhZGVkIHByb2dyYW1taW5nLiBUaGUgbW9kdWxlIGRvY3VtZW50ZWQgaGVyZSBzb2x2ZXMKbWFueSBvZiB0aGUgZGlmZmljdWx0IHByb2JsZW1zIGZvciB5b3UsIG1ha2luZyB0aGUgdGFzayBvZiBidWlsZGluZwpzb3BoaXN0aWNhdGVkIGhpZ2gtcGVyZm9ybWFuY2UgbmV0d29yayBzZXJ2ZXJzIGFuZCBjbGllbnRzIGEgc25hcC4KIiIiCgppbXBvcnQgc2VsZWN0CmltcG9ydCBzb2NrZXQKaW1wb3J0IHN5cwppbXBvcnQgdGltZQppbXBvcnQgd2FybmluZ3MKCmltcG9ydCBvcwpmcm9tIGVycm5vIGltcG9ydCBFQUxSRUFEWSwgRUlOUFJPR1JFU1MsIEVXT1VMREJMT0NLLCBFQ09OTlJFU0VULCBFSU5WQUwsIFwKICAgICBFTk9UQ09OTiwgRVNIVVRET1dOLCBFSVNDT05OLCBFQkFERiwgRUNPTk5BQk9SVEVELCBFUElQRSwgRUFHQUlOLCBcCiAgICAgZXJyb3Jjb2RlCgpfREVQUkVDQVRJT05fTVNHID0gKCdUaGUge25hbWV9IG1vZHVsZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICdQeXRob24ge3JlbW92ZX0uIFRoZSByZWNvbW1lbmRlZCByZXBsYWNlbWVudCBpcyBhc3luY2lvJykKd2FybmluZ3MuX2RlcHJlY2F0ZWQoX19uYW1lX18sIF9ERVBSRUNBVElPTl9NU0csIHJlbW92ZT0oMywgMTIpKQoKCl9ESVNDT05ORUNURUQgPSBmcm96ZW5zZXQoe0VDT05OUkVTRVQsIEVOT1RDT05OLCBFU0hVVERPV04sIEVDT05OQUJPUlRFRCwgRVBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEVCQURGfSkKCnRyeToKICAgIHNvY2tldF9tYXAKZXhjZXB0IE5hbWVFcnJvcjoKICAgIHNvY2tldF9tYXAgPSB7fQoKZGVmIF9zdHJlcnJvcihlcnIpOgogICAgdHJ5OgogICAgICAgIHJldHVybiBvcy5zdHJlcnJvcihlcnIpCiAgICBleGNlcHQgKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIE5hbWVFcnJvcik6CiAgICAgICAgaWYgZXJyIGluIGVycm9yY29kZToKICAgICAgICAgICAgcmV0dXJuIGVycm9yY29kZVtlcnJdCiAgICAgICAgcmV0dXJuICJVbmtub3duIGVycm9yICVzIiAlZXJyCgpjbGFzcyBFeGl0Tm93KEV4Y2VwdGlvbik6CiAgICBwYXNzCgpfcmVyYWlzZWRfZXhjZXB0aW9ucyA9IChFeGl0Tm93LCBLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCkKCmRlZiByZWFkKG9iaik6CiAgICB0cnk6CiAgICAgICAgb2JqLmhhbmRsZV9yZWFkX2V2ZW50KCkKICAgIGV4Y2VwdCBfcmVyYWlzZWRfZXhjZXB0aW9uczoKICAgICAgICByYWlzZQogICAgZXhjZXB0OgogICAgICAgIG9iai5oYW5kbGVfZXJyb3IoKQoKZGVmIHdyaXRlKG9iaik6CiAgICB0cnk6CiAgICAgICAgb2JqLmhhbmRsZV93cml0ZV9ldmVudCgpCiAgICBleGNlcHQgX3JlcmFpc2VkX2V4Y2VwdGlvbnM6CiAgICAgICAgcmFpc2UKICAgIGV4Y2VwdDoKICAgICAgICBvYmouaGFuZGxlX2Vycm9yKCkKCmRlZiBfZXhjZXB0aW9uKG9iaik6CiAgICB0cnk6CiAgICAgICAgb2JqLmhhbmRsZV9leHB0X2V2ZW50KCkKICAgIGV4Y2VwdCBfcmVyYWlzZWRfZXhjZXB0aW9uczoKICAgICAgICByYWlzZQogICAgZXhjZXB0OgogICAgICAgIG9iai5oYW5kbGVfZXJyb3IoKQoKZGVmIHJlYWR3cml0ZShvYmosIGZsYWdzKToKICAgIHRyeToKICAgICAgICBpZiBmbGFncyAmIHNlbGVjdC5QT0xMSU46CiAgICAgICAgICAgIG9iai5oYW5kbGVfcmVhZF9ldmVudCgpCiAgICAgICAgaWYgZmxhZ3MgJiBzZWxlY3QuUE9MTE9VVDoKICAgICAgICAgICAgb2JqLmhhbmRsZV93cml0ZV9ldmVudCgpCiAgICAgICAgaWYgZmxhZ3MgJiBzZWxlY3QuUE9MTFBSSToKICAgICAgICAgICAgb2JqLmhhbmRsZV9leHB0X2V2ZW50KCkKICAgICAgICBpZiBmbGFncyAmIChzZWxlY3QuUE9MTEhVUCB8IHNlbGVjdC5QT0xMRVJSIHwgc2VsZWN0LlBPTExOVkFMKToKICAgICAgICAgICAgb2JqLmhhbmRsZV9jbG9zZSgpCiAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgIGlmIGUuZXJybm8gbm90IGluIF9ESVNDT05ORUNURUQ6CiAgICAgICAgICAgIG9iai5oYW5kbGVfZXJyb3IoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9iai5oYW5kbGVfY2xvc2UoKQogICAgZXhjZXB0IF9yZXJhaXNlZF9leGNlcHRpb25zOgogICAgICAgIHJhaXNlCiAgICBleGNlcHQ6CiAgICAgICAgb2JqLmhhbmRsZV9lcnJvcigpCgpkZWYgcG9sbCh0aW1lb3V0PTAuMCwgbWFwPU5vbmUpOgogICAgaWYgbWFwIGlzIE5vbmU6CiAgICAgICAgbWFwID0gc29ja2V0X21hcAogICAgaWYgbWFwOgogICAgICAgIHIgPSBbXTsgdyA9IFtdOyBlID0gW10KICAgICAgICBmb3IgZmQsIG9iaiBpbiBsaXN0KG1hcC5pdGVtcygpKToKICAgICAgICAgICAgaXNfciA9IG9iai5yZWFkYWJsZSgpCiAgICAgICAgICAgIGlzX3cgPSBvYmoud3JpdGFibGUoKQogICAgICAgICAgICBpZiBpc19yOgogICAgICAgICAgICAgICAgci5hcHBlbmQoZmQpCiAgICAgICAgICAgICMgYWNjZXB0aW5nIHNvY2tldHMgc2hvdWxkIG5vdCBiZSB3cml0YWJsZQogICAgICAgICAgICBpZiBpc193IGFuZCBub3Qgb2JqLmFjY2VwdGluZzoKICAgICAgICAgICAgICAgIHcuYXBwZW5kKGZkKQogICAgICAgICAgICBpZiBpc19yIG9yIGlzX3c6CiAgICAgICAgICAgICAgICBlLmFwcGVuZChmZCkKICAgICAgICBpZiBbXSA9PSByID09IHcgPT0gZToKICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0KQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKCiAgICAgICAgZm9yIGZkIGluIHI6CiAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCiAgICAgICAgICAgIGlmIG9iaiBpcyBOb25lOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgcmVhZChvYmopCgogICAgICAgIGZvciBmZCBpbiB3OgogICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQogICAgICAgICAgICBpZiBvYmogaXMgTm9uZToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIHdyaXRlKG9iaikKCiAgICAgICAgZm9yIGZkIGluIGU6CiAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCiAgICAgICAgICAgIGlmIG9iaiBpcyBOb25lOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgX2V4Y2VwdGlvbihvYmopCgpkZWYgcG9sbDIodGltZW91dD0wLjAsIG1hcD1Ob25lKToKICAgICMgVXNlIHRoZSBwb2xsKCkgc3VwcG9ydCBhZGRlZCB0byB0aGUgc2VsZWN0IG1vZHVsZSBpbiBQeXRob24gMi4wCiAgICBpZiBtYXAgaXMgTm9uZToKICAgICAgICBtYXAgPSBzb2NrZXRfbWFwCiAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICMgdGltZW91dCBpcyBpbiBtaWxsaXNlY29uZHMKICAgICAgICB0aW1lb3V0ID0gaW50KHRpbWVvdXQqMTAwMCkKICAgIHBvbGxzdGVyID0gc2VsZWN0LnBvbGwoKQogICAgaWYgbWFwOgogICAgICAgIGZvciBmZCwgb2JqIGluIGxpc3QobWFwLml0ZW1zKCkpOgogICAgICAgICAgICBmbGFncyA9IDAKICAgICAgICAgICAgaWYgb2JqLnJlYWRhYmxlKCk6CiAgICAgICAgICAgICAgICBmbGFncyB8PSBzZWxlY3QuUE9MTElOIHwgc2VsZWN0LlBPTExQUkkKICAgICAgICAgICAgIyBhY2NlcHRpbmcgc29ja2V0cyBzaG91bGQgbm90IGJlIHdyaXRhYmxlCiAgICAgICAgICAgIGlmIG9iai53cml0YWJsZSgpIGFuZCBub3Qgb2JqLmFjY2VwdGluZzoKICAgICAgICAgICAgICAgIGZsYWdzIHw9IHNlbGVjdC5QT0xMT1VUCiAgICAgICAgICAgIGlmIGZsYWdzOgogICAgICAgICAgICAgICAgcG9sbHN0ZXIucmVnaXN0ZXIoZmQsIGZsYWdzKQoKICAgICAgICByID0gcG9sbHN0ZXIucG9sbCh0aW1lb3V0KQogICAgICAgIGZvciBmZCwgZmxhZ3MgaW4gcjoKICAgICAgICAgICAgb2JqID0gbWFwLmdldChmZCkKICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICByZWFkd3JpdGUob2JqLCBmbGFncykKCnBvbGwzID0gcG9sbDIgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFsaWFzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CgpkZWYgbG9vcCh0aW1lb3V0PTMwLjAsIHVzZV9wb2xsPUZhbHNlLCBtYXA9Tm9uZSwgY291bnQ9Tm9uZSk6CiAgICBpZiBtYXAgaXMgTm9uZToKICAgICAgICBtYXAgPSBzb2NrZXRfbWFwCgogICAgaWYgdXNlX3BvbGwgYW5kIGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpOgogICAgICAgIHBvbGxfZnVuID0gcG9sbDIKICAgIGVsc2U6CiAgICAgICAgcG9sbF9mdW4gPSBwb2xsCgogICAgaWYgY291bnQgaXMgTm9uZToKICAgICAgICB3aGlsZSBtYXA6CiAgICAgICAgICAgIHBvbGxfZnVuKHRpbWVvdXQsIG1hcCkKCiAgICBlbHNlOgogICAgICAgIHdoaWxlIG1hcCBhbmQgY291bnQgPiAwOgogICAgICAgICAgICBwb2xsX2Z1bih0aW1lb3V0LCBtYXApCiAgICAgICAgICAgIGNvdW50ID0gY291bnQgLSAxCgpjbGFzcyBkaXNwYXRjaGVyOgoKICAgIGRlYnVnID0gRmFsc2UKICAgIGNvbm5lY3RlZCA9IEZhbHNlCiAgICBhY2NlcHRpbmcgPSBGYWxzZQogICAgY29ubmVjdGluZyA9IEZhbHNlCiAgICBjbG9zaW5nID0gRmFsc2UKICAgIGFkZHIgPSBOb25lCiAgICBpZ25vcmVfbG9nX3R5cGVzID0gZnJvemVuc2V0KHsnd2FybmluZyd9KQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICBpZiBtYXAgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fbWFwID0gc29ja2V0X21hcAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX21hcCA9IG1hcAoKICAgICAgICBzZWxmLl9maWxlbm8gPSBOb25lCgogICAgICAgIGlmIHNvY2s6CiAgICAgICAgICAgICMgU2V0IHRvIG5vbmJsb2NraW5nIGp1c3QgdG8gbWFrZSBzdXJlIGZvciBjYXNlcyB3aGVyZSB3ZQogICAgICAgICAgICAjIGdldCBhIHNvY2tldCBmcm9tIGEgYmxvY2tpbmcgc291cmNlLgogICAgICAgICAgICBzb2NrLnNldGJsb2NraW5nKEZhbHNlKQogICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQoc29jaywgbWFwKQogICAgICAgICAgICBzZWxmLmNvbm5lY3RlZCA9IFRydWUKICAgICAgICAgICAgIyBUaGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlcXVpcmVzIHRoYXQgdGhlIHNvY2tldAogICAgICAgICAgICAjIHBhc3NlZCBiZSBjb25uZWN0ZWQuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuYWRkciA9IHNvY2suZ2V0cGVlcm5hbWUoKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gaW4gKEVOT1RDT05OLCBFSU5WQUwpOgogICAgICAgICAgICAgICAgICAgICMgVG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGdvdCBhbiB1bmNvbm5lY3RlZAogICAgICAgICAgICAgICAgICAgICMgc29ja2V0LgogICAgICAgICAgICAgICAgICAgIHNlbGYuY29ubmVjdGVkID0gRmFsc2UKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBUaGUgc29ja2V0IGlzIGJyb2tlbiBpbiBzb21lIHVua25vd24gd2F5LCBhbGVydAogICAgICAgICAgICAgICAgICAgICMgdGhlIHVzZXIgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBtYXAgKHRvIHByZXZlbnQKICAgICAgICAgICAgICAgICAgICAjIHBvbGxpbmcgb2YgYnJva2VuIHNvY2tldHMpLgogICAgICAgICAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwobWFwKQogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHN0YXR1cyA9IFtzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fKyIuIitzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX19dCiAgICAgICAgaWYgc2VsZi5hY2NlcHRpbmcgYW5kIHNlbGYuYWRkcjoKICAgICAgICAgICAgc3RhdHVzLmFwcGVuZCgnbGlzdGVuaW5nJykKICAgICAgICBlbGlmIHNlbGYuY29ubmVjdGVkOgogICAgICAgICAgICBzdGF0dXMuYXBwZW5kKCdjb25uZWN0ZWQnKQogICAgICAgIGlmIHNlbGYuYWRkciBpcyBub3QgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc3RhdHVzLmFwcGVuZCgnJXM6JWQnICUgc2VsZi5hZGRyKQogICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgc3RhdHVzLmFwcGVuZChyZXByKHNlbGYuYWRkcikpCiAgICAgICAgcmV0dXJuICc8JXMgYXQgJSN4PicgJSAoJyAnLmpvaW4oc3RhdHVzKSwgaWQoc2VsZikpCgogICAgZGVmIGFkZF9jaGFubmVsKHNlbGYsIG1hcD1Ob25lKToKICAgICAgICAjc2VsZi5sb2dfaW5mbygnYWRkaW5nIGNoYW5uZWwgJXMnICUgc2VsZikKICAgICAgICBpZiBtYXAgaXMgTm9uZToKICAgICAgICAgICAgbWFwID0gc2VsZi5fbWFwCiAgICAgICAgbWFwW3NlbGYuX2ZpbGVub10gPSBzZWxmCgogICAgZGVmIGRlbF9jaGFubmVsKHNlbGYsIG1hcD1Ob25lKToKICAgICAgICBmZCA9IHNlbGYuX2ZpbGVubwogICAgICAgIGlmIG1hcCBpcyBOb25lOgogICAgICAgICAgICBtYXAgPSBzZWxmLl9tYXAKICAgICAgICBpZiBmZCBpbiBtYXA6CiAgICAgICAgICAgICNzZWxmLmxvZ19pbmZvKCdjbG9zaW5nIGNoYW5uZWwgJWQ6JXMnICUgKGZkLCBzZWxmKSkKICAgICAgICAgICAgZGVsIG1hcFtmZF0KICAgICAgICBzZWxmLl9maWxlbm8gPSBOb25lCgogICAgZGVmIGNyZWF0ZV9zb2NrZXQoc2VsZiwgZmFtaWx5PXNvY2tldC5BRl9JTkVULCB0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSk6CiAgICAgICAgc2VsZi5mYW1pbHlfYW5kX3R5cGUgPSBmYW1pbHksIHR5cGUKICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUpCiAgICAgICAgc29jay5zZXRibG9ja2luZyhGYWxzZSkKICAgICAgICBzZWxmLnNldF9zb2NrZXQoc29jaykKCiAgICBkZWYgc2V0X3NvY2tldChzZWxmLCBzb2NrLCBtYXA9Tm9uZSk6CiAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrCiAgICAgICAgc2VsZi5fZmlsZW5vID0gc29jay5maWxlbm8oKQogICAgICAgIHNlbGYuYWRkX2NoYW5uZWwobWFwKQoKICAgIGRlZiBzZXRfcmV1c2VfYWRkcihzZWxmKToKICAgICAgICAjIHRyeSB0byByZS11c2UgYSBzZXJ2ZXIgcG9ydCBpZiBwb3NzaWJsZQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2V0c29ja29wdCgKICAgICAgICAgICAgICAgIHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSLAogICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuZ2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPX1JFVVNFQUREUikgfCAxCiAgICAgICAgICAgICAgICApCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAjIHByZWRpY2F0ZXMgZm9yIHNlbGVjdCgpCiAgICAjIHRoZXNlIGFyZSB1c2VkIGFzIGZpbHRlcnMgZm9yIHRoZSBsaXN0cyBvZiBzb2NrZXRzCiAgICAjIHRvIHBhc3MgdG8gc2VsZWN0KCkuCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBzb2NrZXQgb2JqZWN0IG1ldGhvZHMuCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgZGVmIGxpc3RlbihzZWxmLCBudW0pOgogICAgICAgIHNlbGYuYWNjZXB0aW5nID0gVHJ1ZQogICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgbnVtID4gNToKICAgICAgICAgICAgbnVtID0gNQogICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5saXN0ZW4obnVtKQoKICAgIGRlZiBiaW5kKHNlbGYsIGFkZHIpOgogICAgICAgIHNlbGYuYWRkciA9IGFkZHIKICAgICAgICByZXR1cm4gc2VsZi5zb2NrZXQuYmluZChhZGRyKQoKICAgIGRlZiBjb25uZWN0KHNlbGYsIGFkZHJlc3MpOgogICAgICAgIHNlbGYuY29ubmVjdGVkID0gRmFsc2UKICAgICAgICBzZWxmLmNvbm5lY3RpbmcgPSBUcnVlCiAgICAgICAgZXJyID0gc2VsZi5zb2NrZXQuY29ubmVjdF9leChhZGRyZXNzKQogICAgICAgIGlmIGVyciBpbiAoRUlOUFJPR1JFU1MsIEVBTFJFQURZLCBFV09VTERCTE9DSykgXAogICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgICAgc2VsZi5hZGRyID0gYWRkcmVzcwogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBlcnIgaW4gKDAsIEVJU0NPTk4pOgogICAgICAgICAgICBzZWxmLmFkZHIgPSBhZGRyZXNzCiAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3RfZXZlbnQoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJyLCBlcnJvcmNvZGVbZXJyXSkKCiAgICBkZWYgYWNjZXB0KHNlbGYpOgogICAgICAgICMgWFhYIGNhbiByZXR1cm4gZWl0aGVyIGFuIGFkZHJlc3MgcGFpciBvciBOb25lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zb2NrZXQuYWNjZXB0KCkKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgaWYgd2h5LmVycm5vIGluIChFV09VTERCTE9DSywgRUNPTk5BQk9SVEVELCBFQUdBSU4pOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGNvbm4sIGFkZHIKCiAgICBkZWYgc2VuZChzZWxmLCBkYXRhKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuc29ja2V0LnNlbmQoZGF0YSkKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgaWYgd2h5LmVycm5vID09IEVXT1VMREJMT0NLOgogICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgZWxpZiB3aHkuZXJybm8gaW4gX0RJU0NPTk5FQ1RFRDoKICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nsb3NlKCkKICAgICAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZQoKICAgIGRlZiByZWN2KHNlbGYsIGJ1ZmZlcl9zaXplKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRhdGEgPSBzZWxmLnNvY2tldC5yZWN2KGJ1ZmZlcl9zaXplKQogICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICMgYSBjbG9zZWQgY29ubmVjdGlvbiBpcyBpbmRpY2F0ZWQgYnkgc2lnbmFsaW5nCiAgICAgICAgICAgICAgICAjIGEgcmVhZCBjb25kaXRpb24sIGFuZCBoYXZpbmcgcmVjdigpIHJldHVybiAwLgogICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfY2xvc2UoKQogICAgICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB3aHk6CiAgICAgICAgICAgICMgd2luc29jayBzb21ldGltZXMgcmFpc2VzIEVOT1RDT05OCiAgICAgICAgICAgIGlmIHdoeS5lcnJubyBpbiBfRElTQ09OTkVDVEVEOgogICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfY2xvc2UoKQogICAgICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgc2VsZi5jb25uZWN0ZWQgPSBGYWxzZQogICAgICAgIHNlbGYuYWNjZXB0aW5nID0gRmFsc2UKICAgICAgICBzZWxmLmNvbm5lY3RpbmcgPSBGYWxzZQogICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgIGlmIHNlbGYuc29ja2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgICAgIGlmIHdoeS5lcnJubyBub3QgaW4gKEVOT1RDT05OLCBFQkFERik6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKCiAgICAjIGxvZyBhbmQgbG9nX2luZm8gbWF5IGJlIG92ZXJyaWRkZW4gdG8gcHJvdmlkZSBtb3JlIHNvcGhpc3RpY2F0ZWQKICAgICMgbG9nZ2luZyBhbmQgd2FybmluZyBtZXRob2RzLiBJbiBnZW5lcmFsLCBsb2cgaXMgZm9yICdoaXQnIGxvZ2dpbmcKICAgICMgYW5kICdsb2dfaW5mbycgaXMgZm9yIGluZm9ybWF0aW9uYWwsIHdhcm5pbmcgYW5kIGVycm9yIGxvZ2dpbmcuCgogICAgZGVmIGxvZyhzZWxmLCBtZXNzYWdlKToKICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdsb2c6ICVzXG4nICUgc3RyKG1lc3NhZ2UpKQoKICAgIGRlZiBsb2dfaW5mbyhzZWxmLCBtZXNzYWdlLCB0eXBlPSdpbmZvJyk6CiAgICAgICAgaWYgdHlwZSBub3QgaW4gc2VsZi5pZ25vcmVfbG9nX3R5cGVzOgogICAgICAgICAgICBwcmludCgnJXM6ICVzJyAlICh0eXBlLCBtZXNzYWdlKSkKCiAgICBkZWYgaGFuZGxlX3JlYWRfZXZlbnQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5hY2NlcHRpbmc6CiAgICAgICAgICAgICMgYWNjZXB0aW5nIHNvY2tldHMgYXJlIG5ldmVyIGNvbm5lY3RlZCwgdGhleSAic3Bhd24iIG5ldwogICAgICAgICAgICAjIHNvY2tldHMgdGhhdCBhcmUgY29ubmVjdGVkCiAgICAgICAgICAgIHNlbGYuaGFuZGxlX2FjY2VwdCgpCiAgICAgICAgZWxpZiBub3Qgc2VsZi5jb25uZWN0ZWQ6CiAgICAgICAgICAgIGlmIHNlbGYuY29ubmVjdGluZzoKICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3RfZXZlbnQoKQogICAgICAgICAgICBzZWxmLmhhbmRsZV9yZWFkKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmhhbmRsZV9yZWFkKCkKCiAgICBkZWYgaGFuZGxlX2Nvbm5lY3RfZXZlbnQoc2VsZik6CiAgICAgICAgZXJyID0gc2VsZi5zb2NrZXQuZ2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX0VSUk9SKQogICAgICAgIGlmIGVyciAhPSAwOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVyciwgX3N0cmVycm9yKGVycikpCiAgICAgICAgc2VsZi5oYW5kbGVfY29ubmVjdCgpCiAgICAgICAgc2VsZi5jb25uZWN0ZWQgPSBUcnVlCiAgICAgICAgc2VsZi5jb25uZWN0aW5nID0gRmFsc2UKCiAgICBkZWYgaGFuZGxlX3dyaXRlX2V2ZW50KHNlbGYpOgogICAgICAgIGlmIHNlbGYuYWNjZXB0aW5nOgogICAgICAgICAgICAjIEFjY2VwdGluZyBzb2NrZXRzIHNob3VsZG4ndCBnZXQgYSB3cml0ZSBldmVudC4KICAgICAgICAgICAgIyBXZSB3aWxsIHByZXRlbmQgaXQgZGlkbid0IGhhcHBlbi4KICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIG5vdCBzZWxmLmNvbm5lY3RlZDoKICAgICAgICAgICAgaWYgc2VsZi5jb25uZWN0aW5nOgogICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfY29ubmVjdF9ldmVudCgpCiAgICAgICAgc2VsZi5oYW5kbGVfd3JpdGUoKQoKICAgIGRlZiBoYW5kbGVfZXhwdF9ldmVudChzZWxmKToKICAgICAgICAjIGhhbmRsZV9leHB0X2V2ZW50KCkgaXMgY2FsbGVkIGlmIHRoZXJlIG1pZ2h0IGJlIGFuIGVycm9yIG9uIHRoZQogICAgICAgICMgc29ja2V0LCBvciBpZiB0aGVyZSBpcyBPT0IgZGF0YQogICAgICAgICMgY2hlY2sgZm9yIHRoZSBlcnJvciBjb25kaXRpb24gZmlyc3QKICAgICAgICBlcnIgPSBzZWxmLnNvY2tldC5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fRVJST1IpCiAgICAgICAgaWYgZXJyICE9IDA6CiAgICAgICAgICAgICMgd2UgY2FuIGdldCBoZXJlIHdoZW4gc2VsZWN0LnNlbGVjdCgpIHNheXMgdGhhdCB0aGVyZSBpcyBhbgogICAgICAgICAgICAjIGV4Y2VwdGlvbmFsIGNvbmRpdGlvbiBvbiB0aGUgc29ja2V0CiAgICAgICAgICAgICMgc2luY2UgdGhlcmUgaXMgYW4gZXJyb3IsIHdlJ2xsIGdvIGFoZWFkIGFuZCBjbG9zZSB0aGUgc29ja2V0CiAgICAgICAgICAgICMgbGlrZSB3ZSB3b3VsZCBpbiBhIHN1YmNsYXNzZWQgaGFuZGxlX3JlYWQoKSB0aGF0IHJlY2VpdmVkIG5vCiAgICAgICAgICAgICMgZGF0YQogICAgICAgICAgICBzZWxmLmhhbmRsZV9jbG9zZSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXhwdCgpCgogICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKICAgICAgICBuaWwsIHQsIHYsIHRiaW5mbyA9IGNvbXBhY3RfdHJhY2ViYWNrKCkKCiAgICAgICAgIyBzb21ldGltZXMgYSB1c2VyIHJlcHIgbWV0aG9kIHdpbGwgY3Jhc2guCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmX3JlcHIgPSByZXByKHNlbGYpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBzZWxmX3JlcHIgPSAnPF9fcmVwcl9fKHNlbGYpIGZhaWxlZCBmb3Igb2JqZWN0IGF0ICUweD4nICUgaWQoc2VsZikKCiAgICAgICAgc2VsZi5sb2dfaW5mbygKICAgICAgICAgICAgJ3VuY2FwdHVyZWQgcHl0aG9uIGV4Y2VwdGlvbiwgY2xvc2luZyBjaGFubmVsICVzICglczolcyAlcyknICUgKAogICAgICAgICAgICAgICAgc2VsZl9yZXByLAogICAgICAgICAgICAgICAgdCwKICAgICAgICAgICAgICAgIHYsCiAgICAgICAgICAgICAgICB0YmluZm8KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICdlcnJvcicKICAgICAgICAgICAgKQogICAgICAgIHNlbGYuaGFuZGxlX2Nsb3NlKCkKCiAgICBkZWYgaGFuZGxlX2V4cHQoc2VsZik6CiAgICAgICAgc2VsZi5sb2dfaW5mbygndW5oYW5kbGVkIGluY29taW5nIHByaW9yaXR5IGV2ZW50JywgJ3dhcm5pbmcnKQoKICAgIGRlZiBoYW5kbGVfcmVhZChzZWxmKToKICAgICAgICBzZWxmLmxvZ19pbmZvKCd1bmhhbmRsZWQgcmVhZCBldmVudCcsICd3YXJuaW5nJykKCiAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgogICAgICAgIHNlbGYubG9nX2luZm8oJ3VuaGFuZGxlZCB3cml0ZSBldmVudCcsICd3YXJuaW5nJykKCiAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgc2VsZi5sb2dfaW5mbygndW5oYW5kbGVkIGNvbm5lY3QgZXZlbnQnLCAnd2FybmluZycpCgogICAgZGVmIGhhbmRsZV9hY2NlcHQoc2VsZik6CiAgICAgICAgcGFpciA9IHNlbGYuYWNjZXB0KCkKICAgICAgICBpZiBwYWlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLmhhbmRsZV9hY2NlcHRlZCgqcGFpcikKCiAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIHNvY2ssIGFkZHIpOgogICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgIHNlbGYubG9nX2luZm8oJ3VuaGFuZGxlZCBhY2NlcHRlZCBldmVudCcsICd3YXJuaW5nJykKCiAgICBkZWYgaGFuZGxlX2Nsb3NlKHNlbGYpOgogICAgICAgIHNlbGYubG9nX2luZm8oJ3VuaGFuZGxlZCBjbG9zZSBldmVudCcsICd3YXJuaW5nJykKICAgICAgICBzZWxmLmNsb3NlKCkKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgYWRkcyBzaW1wbGUgYnVmZmVyZWQgb3V0cHV0IGNhcGFiaWxpdHksIHVzZWZ1bCBmb3Igc2ltcGxlIGNsaWVudHMuCiMgW2ZvciBtb3JlIHNvcGhpc3RpY2F0ZWQgdXNhZ2UgdXNlIGFzeW5jaGF0LmFzeW5jX2NoYXRdCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpjbGFzcyBkaXNwYXRjaGVyX3dpdGhfc2VuZChkaXNwYXRjaGVyKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc29jaz1Ob25lLCBtYXA9Tm9uZSk6CiAgICAgICAgZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBzb2NrLCBtYXApCiAgICAgICAgc2VsZi5vdXRfYnVmZmVyID0gYicnCgogICAgZGVmIGluaXRpYXRlX3NlbmQoc2VsZik6CiAgICAgICAgbnVtX3NlbnQgPSAwCiAgICAgICAgbnVtX3NlbnQgPSBkaXNwYXRjaGVyLnNlbmQoc2VsZiwgc2VsZi5vdXRfYnVmZmVyWzo2NTUzNl0pCiAgICAgICAgc2VsZi5vdXRfYnVmZmVyID0gc2VsZi5vdXRfYnVmZmVyW251bV9zZW50Ol0KCiAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgogICAgICAgIHNlbGYuaW5pdGlhdGVfc2VuZCgpCgogICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiAobm90IHNlbGYuY29ubmVjdGVkKSBvciBsZW4oc2VsZi5vdXRfYnVmZmVyKQoKICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEpOgogICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgIHNlbGYubG9nX2luZm8oJ3NlbmRpbmcgJXMnICUgcmVwcihkYXRhKSkKICAgICAgICBzZWxmLm91dF9idWZmZXIgPSBzZWxmLm91dF9idWZmZXIgKyBkYXRhCiAgICAgICAgc2VsZi5pbml0aWF0ZV9zZW5kKCkKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgdXNlZCBmb3IgZGVidWdnaW5nLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZGVmIGNvbXBhY3RfdHJhY2ViYWNrKCk6CiAgICB0LCB2LCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICB0YmluZm8gPSBbXQogICAgaWYgbm90IHRiOiAjIE11c3QgaGF2ZSBhIHRyYWNlYmFjawogICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ0cmFjZWJhY2sgZG9lcyBub3QgZXhpc3QiKQogICAgd2hpbGUgdGI6CiAgICAgICAgdGJpbmZvLmFwcGVuZCgoCiAgICAgICAgICAgIHRiLnRiX2ZyYW1lLmZfY29kZS5jb19maWxlbmFtZSwKICAgICAgICAgICAgdGIudGJfZnJhbWUuZl9jb2RlLmNvX25hbWUsCiAgICAgICAgICAgIHN0cih0Yi50Yl9saW5lbm8pCiAgICAgICAgICAgICkpCiAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CgogICAgIyBqdXN0IHRvIGJlIHNhZmUKICAgIGRlbCB0YgoKICAgIGZpbGUsIGZ1bmN0aW9uLCBsaW5lID0gdGJpbmZvWy0xXQogICAgaW5mbyA9ICcgJy5qb2luKFsnWyVzfCVzfCVzXScgJSB4IGZvciB4IGluIHRiaW5mb10pCiAgICByZXR1cm4gKGZpbGUsIGZ1bmN0aW9uLCBsaW5lKSwgdCwgdiwgaW5mbwoKZGVmIGNsb3NlX2FsbChtYXA9Tm9uZSwgaWdub3JlX2FsbD1GYWxzZSk6CiAgICBpZiBtYXAgaXMgTm9uZToKICAgICAgICBtYXAgPSBzb2NrZXRfbWFwCiAgICBmb3IgeCBpbiBsaXN0KG1hcC52YWx1ZXMoKSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB4LmNsb3NlKCkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB4OgogICAgICAgICAgICBpZiB4LmVycm5vID09IEVCQURGOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbGlmIG5vdCBpZ25vcmVfYWxsOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgX3JlcmFpc2VkX2V4Y2VwdGlvbnM6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBpZiBub3QgaWdub3JlX2FsbDoKICAgICAgICAgICAgICAgIHJhaXNlCiAgICBtYXAuY2xlYXIoKQoKIyBBc3luY2hyb25vdXMgRmlsZSBJL086CiMKIyBBZnRlciBhIGxpdHRsZSByZXNlYXJjaCAocmVhZGluZyBtYW4gcGFnZXMgb24gdmFyaW91cyB1bml4ZW4sIGFuZAojIGRpZ2dpbmcgdGhyb3VnaCB0aGUgbGludXgga2VybmVsKSwgSSd2ZSBkZXRlcm1pbmVkIHRoYXQgc2VsZWN0KCkKIyBpc24ndCBtZWFudCBmb3IgZG9pbmcgYXN5bmNocm9ub3VzIGZpbGUgaS9vLgojIEhlYXJ0ZW5pbmcsIHRob3VnaCAtIHJlYWRpbmcgbGludXgvbW0vZmlsZW1hcC5jIHNob3dzIHRoYXQgbGludXgKIyBzdXBwb3J0cyBhc3luY2hyb25vdXMgcmVhZC1haGVhZC4gIFNvIF9NT1NUXyBvZiB0aGUgdGltZSwgdGhlIGRhdGEKIyB3aWxsIGJlIHNpdHRpbmcgaW4gbWVtb3J5IGZvciB1cyBhbHJlYWR5IHdoZW4gd2UgZ28gdG8gcmVhZCBpdC4KIwojIFdoYXQgb3RoZXIgT1MncyAoYmVzaWRlcyBOVCkgc3VwcG9ydCBhc3luYyBmaWxlIGkvbz8gIFtWTVM/XQojCiMgUmVnYXJkbGVzcywgdGhpcyBpcyB1c2VmdWwgZm9yIHBpcGVzLCBhbmQgc3RkaW4vc3Rkb3V0Li4uCgppZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICBjbGFzcyBmaWxlX3dyYXBwZXI6CiAgICAgICAgIyBIZXJlIHdlIG92ZXJyaWRlIGp1c3QgZW5vdWdoIHRvIG1ha2UgYSBmaWxlCiAgICAgICAgIyBsb29rIGxpa2UgYSBzb2NrZXQgZm9yIHRoZSBwdXJwb3NlcyBvZiBhc3luY29yZS4KICAgICAgICAjIFRoZSBwYXNzZWQgZmQgaXMgYXV0b21hdGljYWxseSBvcy5kdXAoKSdkCgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZCk6CiAgICAgICAgICAgIHNlbGYuZmQgPSBvcy5kdXAoZmQpCgogICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICBpZiBzZWxmLmZkID49IDA6CiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBmaWxlICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgIHNlbGYuY2xvc2UoKQoKICAgICAgICBkZWYgcmVjdihzZWxmLCAqYXJncyk6CiAgICAgICAgICAgIHJldHVybiBvcy5yZWFkKHNlbGYuZmQsICphcmdzKQoKICAgICAgICBkZWYgc2VuZChzZWxmLCAqYXJncyk6CiAgICAgICAgICAgIHJldHVybiBvcy53cml0ZShzZWxmLmZkLCAqYXJncykKCiAgICAgICAgZGVmIGdldHNvY2tvcHQoc2VsZiwgbGV2ZWwsIG9wdG5hbWUsIGJ1Zmxlbj1Ob25lKToKICAgICAgICAgICAgaWYgKGxldmVsID09IHNvY2tldC5TT0xfU09DS0VUIGFuZAogICAgICAgICAgICAgICAgb3B0bmFtZSA9PSBzb2NrZXQuU09fRVJST1IgYW5kCiAgICAgICAgICAgICAgICBub3QgYnVmbGVuKToKICAgICAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIk9ubHkgYXN5bmNvcmUgc3BlY2lmaWMgYmVoYXZpb3VyICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wbGVtZW50ZWQuIikKCiAgICAgICAgcmVhZCA9IHJlY3YKICAgICAgICB3cml0ZSA9IHNlbmQKCiAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAgICBpZiBzZWxmLmZkIDwgMDoKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBmZCA9IHNlbGYuZmQKICAgICAgICAgICAgc2VsZi5mZCA9IC0xCiAgICAgICAgICAgIG9zLmNsb3NlKGZkKQoKICAgICAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5mZAoKICAgIGNsYXNzIGZpbGVfZGlzcGF0Y2hlcihkaXNwYXRjaGVyKToKCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkLCBtYXA9Tm9uZSk6CiAgICAgICAgICAgIGRpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgTm9uZSwgbWFwKQogICAgICAgICAgICBzZWxmLmNvbm5lY3RlZCA9IFRydWUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZmQgPSBmZC5maWxlbm8oKQogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHNlbGYuc2V0X2ZpbGUoZmQpCiAgICAgICAgICAgICMgc2V0IGl0IHRvIG5vbi1ibG9ja2luZyBtb2RlCiAgICAgICAgICAgIG9zLnNldF9ibG9ja2luZyhmZCwgRmFsc2UpCgogICAgICAgIGRlZiBzZXRfZmlsZShzZWxmLCBmZCk6CiAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gZmlsZV93cmFwcGVyKGZkKQogICAgICAgICAgICBzZWxmLl9maWxlbm8gPSBzZWxmLnNvY2tldC5maWxlbm8oKQogICAgICAgICAgICBzZWxmLmFkZF9jaGFubmVsKCkKUEsDBBQAAAAAAAIgo1bEpWAPJFIAACRSAAAJAAAAYmFzZTY0LnB5IyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKCiIiIkJhc2UxNiwgQmFzZTMyLCBCYXNlNjQgKFJGQyAzNTQ4KSwgQmFzZTg1IGFuZCBBc2NpaTg1IGRhdGEgZW5jb2RpbmdzIiIiCgojIE1vZGlmaWVkIDA0LU9jdC0xOTk1IGJ5IEphY2sgSmFuc2VuIHRvIHVzZSBiaW5hc2NpaSBtb2R1bGUKIyBNb2RpZmllZCAzMC1EZWMtMjAwMyBieSBCYXJyeSBXYXJzYXcgdG8gYWRkIGZ1bGwgUkZDIDM1NDggc3VwcG9ydAojIE1vZGlmaWVkIDIyLU1heS0yMDA3IGJ5IEd1aWRvIHZhbiBSb3NzdW0gdG8gdXNlIGJ5dGVzIGV2ZXJ5d2hlcmUKCmltcG9ydCByZQppbXBvcnQgc3RydWN0CmltcG9ydCBiaW5hc2NpaQoKCl9fYWxsX18gPSBbCiAgICAjIExlZ2FjeSBpbnRlcmZhY2UgZXhwb3J0cyB0cmFkaXRpb25hbCBSRkMgMjA0NSBCYXNlNjQgZW5jb2RpbmdzCiAgICAnZW5jb2RlJywgJ2RlY29kZScsICdlbmNvZGVieXRlcycsICdkZWNvZGVieXRlcycsCiAgICAjIEdlbmVyYWxpemVkIGludGVyZmFjZSBmb3Igb3RoZXIgZW5jb2RpbmdzCiAgICAnYjY0ZW5jb2RlJywgJ2I2NGRlY29kZScsICdiMzJlbmNvZGUnLCAnYjMyZGVjb2RlJywKICAgICdiMzJoZXhlbmNvZGUnLCAnYjMyaGV4ZGVjb2RlJywgJ2IxNmVuY29kZScsICdiMTZkZWNvZGUnLAogICAgIyBCYXNlODUgYW5kIEFzY2lpODUgZW5jb2RpbmdzCiAgICAnYjg1ZW5jb2RlJywgJ2I4NWRlY29kZScsICdhODVlbmNvZGUnLCAnYTg1ZGVjb2RlJywKICAgICMgU3RhbmRhcmQgQmFzZTY0IGVuY29kaW5nCiAgICAnc3RhbmRhcmRfYjY0ZW5jb2RlJywgJ3N0YW5kYXJkX2I2NGRlY29kZScsCiAgICAjIFNvbWUgY29tbW9uIEJhc2U2NCBhbHRlcm5hdGl2ZXMuICBBcyByZWZlcmVuY2VkIGJ5IFJGQyAzNDU4LCBzZWUgdGhyZWFkCiAgICAjIHN0YXJ0aW5nIGF0OgogICAgIwogICAgIyBodHRwOi8vemdwLm9yZy9waXBlcm1haWwvcDJwLWhhY2tlcnMvMjAwMS1TZXB0ZW1iZXIvMDAwMzE2Lmh0bWwKICAgICd1cmxzYWZlX2I2NGVuY29kZScsICd1cmxzYWZlX2I2NGRlY29kZScsCiAgICBdCgoKYnl0ZXNfdHlwZXMgPSAoYnl0ZXMsIGJ5dGVhcnJheSkgICMgVHlwZXMgYWNjZXB0YWJsZSBhcyBiaW5hcnkgZGF0YQoKZGVmIF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpOgogICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3RyaW5nIGFyZ3VtZW50IHNob3VsZCBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVycycpCiAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKICAgICAgICByZXR1cm4gcwogICAgdHJ5OgogICAgICAgIHJldHVybiBtZW1vcnl2aWV3KHMpLnRvYnl0ZXMoKQogICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIGJ5dGVzLWxpa2Ugb2JqZWN0IG9yIEFTQ0lJICIKICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZywgbm90ICVyIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKSBmcm9tIE5vbmUKCgojIEJhc2U2NCBlbmNvZGluZy9kZWNvZGluZyB1c2VzIGJpbmFzY2lpCgpkZWYgYjY0ZW5jb2RlKHMsIGFsdGNoYXJzPU5vbmUpOgogICAgIiIiRW5jb2RlIHRoZSBieXRlcy1saWtlIG9iamVjdCBzIHVzaW5nIEJhc2U2NCBhbmQgcmV0dXJuIGEgYnl0ZXMgb2JqZWN0LgoKICAgIE9wdGlvbmFsIGFsdGNoYXJzIHNob3VsZCBiZSBhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAyIHdoaWNoIHNwZWNpZmllcyBhbgogICAgYWx0ZXJuYXRpdmUgYWxwaGFiZXQgZm9yIHRoZSAnKycgYW5kICcvJyBjaGFyYWN0ZXJzLiAgVGhpcyBhbGxvd3MgYW4KICAgIGFwcGxpY2F0aW9uIHRvIGUuZy4gZ2VuZXJhdGUgdXJsIG9yIGZpbGVzeXN0ZW0gc2FmZSBCYXNlNjQgc3RyaW5ncy4KICAgICIiIgogICAgZW5jb2RlZCA9IGJpbmFzY2lpLmIyYV9iYXNlNjQocywgbmV3bGluZT1GYWxzZSkKICAgIGlmIGFsdGNoYXJzIGlzIG5vdCBOb25lOgogICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCiAgICAgICAgcmV0dXJuIGVuY29kZWQudHJhbnNsYXRlKGJ5dGVzLm1ha2V0cmFucyhiJysvJywgYWx0Y2hhcnMpKQogICAgcmV0dXJuIGVuY29kZWQKCgpkZWYgYjY0ZGVjb2RlKHMsIGFsdGNoYXJzPU5vbmUsIHZhbGlkYXRlPUZhbHNlKToKICAgICIiIkRlY29kZSB0aGUgQmFzZTY0IGVuY29kZWQgYnl0ZXMtbGlrZSBvYmplY3Qgb3IgQVNDSUkgc3RyaW5nIHMuCgogICAgT3B0aW9uYWwgYWx0Y2hhcnMgbXVzdCBiZSBhIGJ5dGVzLWxpa2Ugb2JqZWN0IG9yIEFTQ0lJIHN0cmluZyBvZiBsZW5ndGggMgogICAgd2hpY2ggc3BlY2lmaWVzIHRoZSBhbHRlcm5hdGl2ZSBhbHBoYWJldCB1c2VkIGluc3RlYWQgb2YgdGhlICcrJyBhbmQgJy8nCiAgICBjaGFyYWN0ZXJzLgoKICAgIFRoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuICBBIGJpbmFzY2lpLkVycm9yIGlzIHJhaXNlZCBpZgogICAgcyBpcyBpbmNvcnJlY3RseSBwYWRkZWQuCgogICAgSWYgdmFsaWRhdGUgaXMgRmFsc2UgKHRoZSBkZWZhdWx0KSwgY2hhcmFjdGVycyB0aGF0IGFyZSBuZWl0aGVyIGluIHRoZQogICAgbm9ybWFsIGJhc2UtNjQgYWxwaGFiZXQgbm9yIHRoZSBhbHRlcm5hdGl2ZSBhbHBoYWJldCBhcmUgZGlzY2FyZGVkIHByaW9yCiAgICB0byB0aGUgcGFkZGluZyBjaGVjay4gIElmIHZhbGlkYXRlIGlzIFRydWUsIHRoZXNlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzCiAgICBpbiB0aGUgaW5wdXQgcmVzdWx0IGluIGEgYmluYXNjaWkuRXJyb3IuCiAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RyaWN0IGJhc2U2NCBjaGVjaywgc2VlOgoKICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuMTEvbGlicmFyeS9iaW5hc2NpaS5odG1sI2JpbmFzY2lpLmEyYl9iYXNlNjQKICAgICIiIgogICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCiAgICBpZiBhbHRjaGFycyBpcyBub3QgTm9uZToKICAgICAgICBhbHRjaGFycyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKGFsdGNoYXJzKQogICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCiAgICAgICAgcyA9IHMudHJhbnNsYXRlKGJ5dGVzLm1ha2V0cmFucyhhbHRjaGFycywgYicrLycpKQogICAgcmV0dXJuIGJpbmFzY2lpLmEyYl9iYXNlNjQocywgc3RyaWN0X21vZGU9dmFsaWRhdGUpCgoKZGVmIHN0YW5kYXJkX2I2NGVuY29kZShzKToKICAgICIiIkVuY29kZSBieXRlcy1saWtlIG9iamVjdCBzIHVzaW5nIHRoZSBzdGFuZGFyZCBCYXNlNjQgYWxwaGFiZXQuCgogICAgVGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC4KICAgICIiIgogICAgcmV0dXJuIGI2NGVuY29kZShzKQoKZGVmIHN0YW5kYXJkX2I2NGRlY29kZShzKToKICAgICIiIkRlY29kZSBieXRlcyBlbmNvZGVkIHdpdGggdGhlIHN0YW5kYXJkIEJhc2U2NCBhbHBoYWJldC4KCiAgICBBcmd1bWVudCBzIGlzIGEgYnl0ZXMtbGlrZSBvYmplY3Qgb3IgQVNDSUkgc3RyaW5nIHRvIGRlY29kZS4gIFRoZSByZXN1bHQKICAgIGlzIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LiAgQSBiaW5hc2NpaS5FcnJvciBpcyByYWlzZWQgaWYgdGhlIGlucHV0CiAgICBpcyBpbmNvcnJlY3RseSBwYWRkZWQuICBDaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBpbiB0aGUgc3RhbmRhcmQgYWxwaGFiZXQKICAgIGFyZSBkaXNjYXJkZWQgcHJpb3IgdG8gdGhlIHBhZGRpbmcgY2hlY2suCiAgICAiIiIKICAgIHJldHVybiBiNjRkZWNvZGUocykKCgpfdXJsc2FmZV9lbmNvZGVfdHJhbnNsYXRpb24gPSBieXRlcy5tYWtldHJhbnMoYicrLycsIGInLV8nKQpfdXJsc2FmZV9kZWNvZGVfdHJhbnNsYXRpb24gPSBieXRlcy5tYWtldHJhbnMoYictXycsIGInKy8nKQoKZGVmIHVybHNhZmVfYjY0ZW5jb2RlKHMpOgogICAgIiIiRW5jb2RlIGJ5dGVzIHVzaW5nIHRoZSBVUkwtIGFuZCBmaWxlc3lzdGVtLXNhZmUgQmFzZTY0IGFscGhhYmV0LgoKICAgIEFyZ3VtZW50IHMgaXMgYSBieXRlcy1saWtlIG9iamVjdCB0byBlbmNvZGUuICBUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEKICAgIGJ5dGVzIG9iamVjdC4gIFRoZSBhbHBoYWJldCB1c2VzICctJyBpbnN0ZWFkIG9mICcrJyBhbmQgJ18nIGluc3RlYWQgb2YKICAgICcvJy4KICAgICIiIgogICAgcmV0dXJuIGI2NGVuY29kZShzKS50cmFuc2xhdGUoX3VybHNhZmVfZW5jb2RlX3RyYW5zbGF0aW9uKQoKZGVmIHVybHNhZmVfYjY0ZGVjb2RlKHMpOgogICAgIiIiRGVjb2RlIGJ5dGVzIHVzaW5nIHRoZSBVUkwtIGFuZCBmaWxlc3lzdGVtLXNhZmUgQmFzZTY0IGFscGhhYmV0LgoKICAgIEFyZ3VtZW50IHMgaXMgYSBieXRlcy1saWtlIG9iamVjdCBvciBBU0NJSSBzdHJpbmcgdG8gZGVjb2RlLiAgVGhlIHJlc3VsdAogICAgaXMgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuICBBIGJpbmFzY2lpLkVycm9yIGlzIHJhaXNlZCBpZiB0aGUgaW5wdXQKICAgIGlzIGluY29ycmVjdGx5IHBhZGRlZC4gIENoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBVUkwtc2FmZSBiYXNlLTY0CiAgICBhbHBoYWJldCwgYW5kIGFyZSBub3QgYSBwbHVzICcrJyBvciBzbGFzaCAnLycsIGFyZSBkaXNjYXJkZWQgcHJpb3IgdG8gdGhlCiAgICBwYWRkaW5nIGNoZWNrLgoKICAgIFRoZSBhbHBoYWJldCB1c2VzICctJyBpbnN0ZWFkIG9mICcrJyBhbmQgJ18nIGluc3RlYWQgb2YgJy8nLgogICAgIiIiCiAgICBzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEocykKICAgIHMgPSBzLnRyYW5zbGF0ZShfdXJsc2FmZV9kZWNvZGVfdHJhbnNsYXRpb24pCiAgICByZXR1cm4gYjY0ZGVjb2RlKHMpCgoKCiMgQmFzZTMyIGVuY29kaW5nL2RlY29kaW5nIG11c3QgYmUgZG9uZSBpbiBQeXRob24KX0IzMl9FTkNPREVfRE9DU1RSSU5HID0gJycnCkVuY29kZSB0aGUgYnl0ZXMtbGlrZSBvYmplY3RzIHVzaW5nIHtlbmNvZGluZ30gYW5kIHJldHVybiBhIGJ5dGVzIG9iamVjdC4KJycnCl9CMzJfREVDT0RFX0RPQ1NUUklORyA9ICcnJwpEZWNvZGUgdGhlIHtlbmNvZGluZ30gZW5jb2RlZCBieXRlcy1saWtlIG9iamVjdCBvciBBU0NJSSBzdHJpbmcgcy4KCk9wdGlvbmFsIGNhc2Vmb2xkIGlzIGEgZmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgYSBsb3dlcmNhc2UgYWxwaGFiZXQgaXMKYWNjZXB0YWJsZSBhcyBpbnB1dC4gIEZvciBzZWN1cml0eSBwdXJwb3NlcywgdGhlIGRlZmF1bHQgaXMgRmFsc2UuCntleHRyYV9hcmdzfQpUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LiAgQSBiaW5hc2NpaS5FcnJvciBpcyByYWlzZWQgaWYKdGhlIGlucHV0IGlzIGluY29ycmVjdGx5IHBhZGRlZCBvciBpZiB0aGVyZSBhcmUgbm9uLWFscGhhYmV0CmNoYXJhY3RlcnMgcHJlc2VudCBpbiB0aGUgaW5wdXQuCicnJwpfQjMyX0RFQ09ERV9NQVAwMV9ET0NTVFJJTkcgPSAnJycKUkZDIDM1NDggYWxsb3dzIGZvciBvcHRpb25hbCBtYXBwaW5nIG9mIHRoZSBkaWdpdCAwICh6ZXJvKSB0byB0aGUKbGV0dGVyIE8gKG9oKSwgYW5kIGZvciBvcHRpb25hbCBtYXBwaW5nIG9mIHRoZSBkaWdpdCAxIChvbmUpIHRvCmVpdGhlciB0aGUgbGV0dGVyIEkgKGV5ZSkgb3IgbGV0dGVyIEwgKGVsKS4gIFRoZSBvcHRpb25hbCBhcmd1bWVudAptYXAwMSB3aGVuIG5vdCBOb25lLCBzcGVjaWZpZXMgd2hpY2ggbGV0dGVyIHRoZSBkaWdpdCAxIHNob3VsZCBiZQptYXBwZWQgdG8gKHdoZW4gbWFwMDEgaXMgbm90IE5vbmUsIHRoZSBkaWdpdCAwIGlzIGFsd2F5cyBtYXBwZWQgdG8KdGhlIGxldHRlciBPKS4gIEZvciBzZWN1cml0eSBwdXJwb3NlcyB0aGUgZGVmYXVsdCBpcyBOb25lLCBzbyB0aGF0CjAgYW5kIDEgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBpbnB1dC4KJycnCl9iMzJhbHBoYWJldCA9IGInQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1NjcnCl9iMzJoZXhhbHBoYWJldCA9IGInMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVYnCl9iMzJ0YWIyID0ge30KX2IzMnJldiA9IHt9CgpkZWYgX2IzMmVuY29kZShhbHBoYWJldCwgcyk6CiAgICBnbG9iYWwgX2IzMnRhYjIKICAgICMgRGVsYXkgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSB0YWJsZSB0byBub3Qgd2FzdGUgbWVtb3J5CiAgICAjIGlmIHRoZSBmdW5jdGlvbiBpcyBuZXZlciBjYWxsZWQKICAgIGlmIGFscGhhYmV0IG5vdCBpbiBfYjMydGFiMjoKICAgICAgICBiMzJ0YWIgPSBbYnl0ZXMoKGksKSkgZm9yIGkgaW4gYWxwaGFiZXRdCiAgICAgICAgX2IzMnRhYjJbYWxwaGFiZXRdID0gW2EgKyBiIGZvciBhIGluIGIzMnRhYiBmb3IgYiBpbiBiMzJ0YWJdCiAgICAgICAgYjMydGFiID0gTm9uZQoKICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKICAgICAgICBzID0gbWVtb3J5dmlldyhzKS50b2J5dGVzKCkKICAgIGxlZnRvdmVyID0gbGVuKHMpICUgNQogICAgIyBQYWQgdGhlIGxhc3QgcXVhbnR1bSB3aXRoIHplcm8gYml0cyBpZiBuZWNlc3NhcnkKICAgIGlmIGxlZnRvdmVyOgogICAgICAgIHMgPSBzICsgYidcMCcgKiAoNSAtIGxlZnRvdmVyKSAgIyBEb24ndCB1c2UgKz0gIQogICAgZW5jb2RlZCA9IGJ5dGVhcnJheSgpCiAgICBmcm9tX2J5dGVzID0gaW50LmZyb21fYnl0ZXMKICAgIGIzMnRhYjIgPSBfYjMydGFiMlthbHBoYWJldF0KICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihzKSwgNSk6CiAgICAgICAgYyA9IGZyb21fYnl0ZXMoc1tpOiBpICsgNV0pICAgICAgICAgICAgICAjIGJpZyBlbmRpYW4KICAgICAgICBlbmNvZGVkICs9IChiMzJ0YWIyW2MgPj4gMzBdICsgICAgICAgICAgICMgYml0cyAxIC0gMTAKICAgICAgICAgICAgICAgICAgICBiMzJ0YWIyWyhjID4+IDIwKSAmIDB4M2ZmXSArICMgYml0cyAxMSAtIDIwCiAgICAgICAgICAgICAgICAgICAgYjMydGFiMlsoYyA+PiAxMCkgJiAweDNmZl0gKyAjIGJpdHMgMjEgLSAzMAogICAgICAgICAgICAgICAgICAgIGIzMnRhYjJbYyAmIDB4M2ZmXSAgICAgICAgICAgIyBiaXRzIDMxIC0gNDAKICAgICAgICAgICAgICAgICAgICkKICAgICMgQWRqdXN0IGZvciBhbnkgbGVmdG92ZXIgcGFydGlhbCBxdWFudGEKICAgIGlmIGxlZnRvdmVyID09IDE6CiAgICAgICAgZW5jb2RlZFstNjpdID0gYic9PT09PT0nCiAgICBlbGlmIGxlZnRvdmVyID09IDI6CiAgICAgICAgZW5jb2RlZFstNDpdID0gYic9PT09JwogICAgZWxpZiBsZWZ0b3ZlciA9PSAzOgogICAgICAgIGVuY29kZWRbLTM6XSA9IGInPT09JwogICAgZWxpZiBsZWZ0b3ZlciA9PSA0OgogICAgICAgIGVuY29kZWRbLTE6XSA9IGInPScKICAgIHJldHVybiBieXRlcyhlbmNvZGVkKQoKZGVmIF9iMzJkZWNvZGUoYWxwaGFiZXQsIHMsIGNhc2Vmb2xkPUZhbHNlLCBtYXAwMT1Ob25lKToKICAgIGdsb2JhbCBfYjMycmV2CiAgICAjIERlbGF5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdGFibGUgdG8gbm90IHdhc3RlIG1lbW9yeQogICAgIyBpZiB0aGUgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkCiAgICBpZiBhbHBoYWJldCBub3QgaW4gX2IzMnJldjoKICAgICAgICBfYjMycmV2W2FscGhhYmV0XSA9IHt2OiBrIGZvciBrLCB2IGluIGVudW1lcmF0ZShhbHBoYWJldCl9CiAgICBzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEocykKICAgIGlmIGxlbihzKSAlIDg6CiAgICAgICAgcmFpc2UgYmluYXNjaWkuRXJyb3IoJ0luY29ycmVjdCBwYWRkaW5nJykKICAgICMgSGFuZGxlIHNlY3Rpb24gMi40IHplcm8gYW5kIG9uZSBtYXBwaW5nLiAgVGhlIGZsYWcgbWFwMDEgd2lsbCBiZSBlaXRoZXIKICAgICMgRmFsc2UsIG9yIHRoZSBjaGFyYWN0ZXIgdG8gbWFwIHRoZSBkaWdpdCAxIChvbmUpIHRvLiAgSXQgc2hvdWxkIGJlCiAgICAjIGVpdGhlciBMIChlbCkgb3IgSSAoZXllKS4KICAgIGlmIG1hcDAxIGlzIG5vdCBOb25lOgogICAgICAgIG1hcDAxID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEobWFwMDEpCiAgICAgICAgYXNzZXJ0IGxlbihtYXAwMSkgPT0gMSwgcmVwcihtYXAwMSkKICAgICAgICBzID0gcy50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInMDEnLCBiJ08nICsgbWFwMDEpKQogICAgaWYgY2FzZWZvbGQ6CiAgICAgICAgcyA9IHMudXBwZXIoKQogICAgIyBTdHJpcCBvZmYgcGFkIGNoYXJhY3RlcnMgZnJvbSB0aGUgcmlnaHQuICBXZSBuZWVkIHRvIGNvdW50IHRoZSBwYWQKICAgICMgY2hhcmFjdGVycyBiZWNhdXNlIHRoaXMgd2lsbCB0ZWxsIHVzIGhvdyBtYW55IG51bGwgYnl0ZXMgdG8gcmVtb3ZlIGZyb20KICAgICMgdGhlIGVuZCBvZiB0aGUgZGVjb2RlZCBzdHJpbmcuCiAgICBsID0gbGVuKHMpCiAgICBzID0gcy5yc3RyaXAoYic9JykKICAgIHBhZGNoYXJzID0gbCAtIGxlbihzKQogICAgIyBOb3cgZGVjb2RlIHRoZSBmdWxsIHF1YW50YQogICAgZGVjb2RlZCA9IGJ5dGVhcnJheSgpCiAgICBiMzJyZXYgPSBfYjMycmV2W2FscGhhYmV0XQogICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHMpLCA4KToKICAgICAgICBxdWFudGEgPSBzW2k6IGkgKyA4XQogICAgICAgIGFjYyA9IDAKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZvciBjIGluIHF1YW50YToKICAgICAgICAgICAgICAgIGFjYyA9IChhY2MgPDwgNSkgKyBiMzJyZXZbY10KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIGJpbmFzY2lpLkVycm9yKCdOb24tYmFzZTMyIGRpZ2l0IGZvdW5kJykgZnJvbSBOb25lCiAgICAgICAgZGVjb2RlZCArPSBhY2MudG9fYnl0ZXMoNSkgICMgYmlnIGVuZGlhbgogICAgIyBQcm9jZXNzIHRoZSBsYXN0LCBwYXJ0aWFsIHF1YW50YQogICAgaWYgbCAlIDggb3IgcGFkY2hhcnMgbm90IGluIHswLCAxLCAzLCA0LCA2fToKICAgICAgICByYWlzZSBiaW5hc2NpaS5FcnJvcignSW5jb3JyZWN0IHBhZGRpbmcnKQogICAgaWYgcGFkY2hhcnMgYW5kIGRlY29kZWQ6CiAgICAgICAgYWNjIDw8PSA1ICogcGFkY2hhcnMKICAgICAgICBsYXN0ID0gYWNjLnRvX2J5dGVzKDUpICAjIGJpZyBlbmRpYW4KICAgICAgICBsZWZ0b3ZlciA9ICg0MyAtIDUgKiBwYWRjaGFycykgLy8gOCAgIyAxOiA0LCAzOiAzLCA0OiAyLCA2OiAxCiAgICAgICAgZGVjb2RlZFstNTpdID0gbGFzdFs6bGVmdG92ZXJdCiAgICByZXR1cm4gYnl0ZXMoZGVjb2RlZCkKCgpkZWYgYjMyZW5jb2RlKHMpOgogICAgcmV0dXJuIF9iMzJlbmNvZGUoX2IzMmFscGhhYmV0LCBzKQpiMzJlbmNvZGUuX19kb2NfXyA9IF9CMzJfRU5DT0RFX0RPQ1NUUklORy5mb3JtYXQoZW5jb2Rpbmc9J2Jhc2UzMicpCgpkZWYgYjMyZGVjb2RlKHMsIGNhc2Vmb2xkPUZhbHNlLCBtYXAwMT1Ob25lKToKICAgIHJldHVybiBfYjMyZGVjb2RlKF9iMzJhbHBoYWJldCwgcywgY2FzZWZvbGQsIG1hcDAxKQpiMzJkZWNvZGUuX19kb2NfXyA9IF9CMzJfREVDT0RFX0RPQ1NUUklORy5mb3JtYXQoZW5jb2Rpbmc9J2Jhc2UzMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzPV9CMzJfREVDT0RFX01BUDAxX0RPQ1NUUklORykKCmRlZiBiMzJoZXhlbmNvZGUocyk6CiAgICByZXR1cm4gX2IzMmVuY29kZShfYjMyaGV4YWxwaGFiZXQsIHMpCmIzMmhleGVuY29kZS5fX2RvY19fID0gX0IzMl9FTkNPREVfRE9DU1RSSU5HLmZvcm1hdChlbmNvZGluZz0nYmFzZTMyaGV4JykKCmRlZiBiMzJoZXhkZWNvZGUocywgY2FzZWZvbGQ9RmFsc2UpOgogICAgIyBiYXNlMzJoZXggZG9lcyBub3QgaGF2ZSB0aGUgMDEgbWFwcGluZwogICAgcmV0dXJuIF9iMzJkZWNvZGUoX2IzMmhleGFscGhhYmV0LCBzLCBjYXNlZm9sZCkKYjMyaGV4ZGVjb2RlLl9fZG9jX18gPSBfQjMyX0RFQ09ERV9ET0NTVFJJTkcuZm9ybWF0KGVuY29kaW5nPSdiYXNlMzJoZXgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncz0nJykKCgojIFJGQyAzNTQ4LCBCYXNlIDE2IEFscGhhYmV0IHNwZWNpZmllcyB1cHBlcmNhc2UsIGJ1dCBoZXhsaWZ5KCkgcmV0dXJucwojIGxvd2VyY2FzZS4gIFRoZSBSRkMgYWxzbyByZWNvbW1lbmRzIGFnYWluc3QgYWNjZXB0aW5nIGlucHV0IGNhc2UKIyBpbnNlbnNpdGl2ZWx5LgpkZWYgYjE2ZW5jb2RlKHMpOgogICAgIiIiRW5jb2RlIHRoZSBieXRlcy1saWtlIG9iamVjdCBzIHVzaW5nIEJhc2UxNiBhbmQgcmV0dXJuIGEgYnl0ZXMgb2JqZWN0LgogICAgIiIiCiAgICByZXR1cm4gYmluYXNjaWkuaGV4bGlmeShzKS51cHBlcigpCgoKZGVmIGIxNmRlY29kZShzLCBjYXNlZm9sZD1GYWxzZSk6CiAgICAiIiJEZWNvZGUgdGhlIEJhc2UxNiBlbmNvZGVkIGJ5dGVzLWxpa2Ugb2JqZWN0IG9yIEFTQ0lJIHN0cmluZyBzLgoKICAgIE9wdGlvbmFsIGNhc2Vmb2xkIGlzIGEgZmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgYSBsb3dlcmNhc2UgYWxwaGFiZXQgaXMKICAgIGFjY2VwdGFibGUgYXMgaW5wdXQuICBGb3Igc2VjdXJpdHkgcHVycG9zZXMsIHRoZSBkZWZhdWx0IGlzIEZhbHNlLgoKICAgIFRoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuICBBIGJpbmFzY2lpLkVycm9yIGlzIHJhaXNlZCBpZgogICAgcyBpcyBpbmNvcnJlY3RseSBwYWRkZWQgb3IgaWYgdGhlcmUgYXJlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzIHByZXNlbnQKICAgIGluIHRoZSBpbnB1dC4KICAgICIiIgogICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCiAgICBpZiBjYXNlZm9sZDoKICAgICAgICBzID0gcy51cHBlcigpCiAgICBpZiByZS5zZWFyY2goYidbXjAtOUEtRl0nLCBzKToKICAgICAgICByYWlzZSBiaW5hc2NpaS5FcnJvcignTm9uLWJhc2UxNiBkaWdpdCBmb3VuZCcpCiAgICByZXR1cm4gYmluYXNjaWkudW5oZXhsaWZ5KHMpCgojCiMgQXNjaWk4NSBlbmNvZGluZy9kZWNvZGluZwojCgpfYTg1Y2hhcnMgPSBOb25lCl9hODVjaGFyczIgPSBOb25lCl9BODVTVEFSVCA9IGIiPH4iCl9BODVFTkQgPSBiIn4+IgoKZGVmIF84NWVuY29kZShiLCBjaGFycywgY2hhcnMyLCBwYWQ9RmFsc2UsIGZvbGRudWxzPUZhbHNlLCBmb2xkc3BhY2VzPUZhbHNlKToKICAgICMgSGVscGVyIGZ1bmN0aW9uIGZvciBhODVlbmNvZGUgYW5kIGI4NWVuY29kZQogICAgaWYgbm90IGlzaW5zdGFuY2UoYiwgYnl0ZXNfdHlwZXMpOgogICAgICAgIGIgPSBtZW1vcnl2aWV3KGIpLnRvYnl0ZXMoKQoKICAgIHBhZGRpbmcgPSAoLWxlbihiKSkgJSA0CiAgICBpZiBwYWRkaW5nOgogICAgICAgIGIgPSBiICsgYidcMCcgKiBwYWRkaW5nCiAgICB3b3JkcyA9IHN0cnVjdC5TdHJ1Y3QoJyElZEknICUgKGxlbihiKSAvLyA0KSkudW5wYWNrKGIpCgogICAgY2h1bmtzID0gW2IneicgaWYgZm9sZG51bHMgYW5kIG5vdCB3b3JkIGVsc2UKICAgICAgICAgICAgICBiJ3knIGlmIGZvbGRzcGFjZXMgYW5kIHdvcmQgPT0gMHgyMDIwMjAyMCBlbHNlCiAgICAgICAgICAgICAgKGNoYXJzMlt3b3JkIC8vIDYxNDEyNV0gKwogICAgICAgICAgICAgICBjaGFyczJbd29yZCAvLyA4NSAlIDcyMjVdICsKICAgICAgICAgICAgICAgY2hhcnNbd29yZCAlIDg1XSkKICAgICAgICAgICAgICBmb3Igd29yZCBpbiB3b3Jkc10KCiAgICBpZiBwYWRkaW5nIGFuZCBub3QgcGFkOgogICAgICAgIGlmIGNodW5rc1stMV0gPT0gYid6JzoKICAgICAgICAgICAgY2h1bmtzWy0xXSA9IGNoYXJzWzBdICogNQogICAgICAgIGNodW5rc1stMV0gPSBjaHVua3NbLTFdWzotcGFkZGluZ10KCiAgICByZXR1cm4gYicnLmpvaW4oY2h1bmtzKQoKZGVmIGE4NWVuY29kZShiLCAqLCBmb2xkc3BhY2VzPUZhbHNlLCB3cmFwY29sPTAsIHBhZD1GYWxzZSwgYWRvYmU9RmFsc2UpOgogICAgIiIiRW5jb2RlIGJ5dGVzLWxpa2Ugb2JqZWN0IGIgdXNpbmcgQXNjaWk4NSBhbmQgcmV0dXJuIGEgYnl0ZXMgb2JqZWN0LgoKICAgIGZvbGRzcGFjZXMgaXMgYW4gb3B0aW9uYWwgZmxhZyB0aGF0IHVzZXMgdGhlIHNwZWNpYWwgc2hvcnQgc2VxdWVuY2UgJ3knCiAgICBpbnN0ZWFkIG9mIDQgY29uc2VjdXRpdmUgc3BhY2VzIChBU0NJSSAweDIwKSBhcyBzdXBwb3J0ZWQgYnkgJ2J0b2EnLiBUaGlzCiAgICBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlICJzdGFuZGFyZCIgQWRvYmUgZW5jb2RpbmcuCgogICAgd3JhcGNvbCBjb250cm9scyB3aGV0aGVyIHRoZSBvdXRwdXQgc2hvdWxkIGhhdmUgbmV3bGluZSAoYidcXG4nKSBjaGFyYWN0ZXJzCiAgICBhZGRlZCB0byBpdC4gSWYgdGhpcyBpcyBub24temVybywgZWFjaCBvdXRwdXQgbGluZSB3aWxsIGJlIGF0IG1vc3QgdGhpcwogICAgbWFueSBjaGFyYWN0ZXJzIGxvbmcuCgogICAgcGFkIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGlucHV0IGlzIHBhZGRlZCB0byBhIG11bHRpcGxlIG9mIDQgYmVmb3JlCiAgICBlbmNvZGluZy4gTm90ZSB0aGF0IHRoZSBidG9hIGltcGxlbWVudGF0aW9uIGFsd2F5cyBwYWRzLgoKICAgIGFkb2JlIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGVuY29kZWQgYnl0ZSBzZXF1ZW5jZSBpcyBmcmFtZWQgd2l0aCA8fiBhbmQgfj4sCiAgICB3aGljaCBpcyB1c2VkIGJ5IHRoZSBBZG9iZSBpbXBsZW1lbnRhdGlvbi4KICAgICIiIgogICAgZ2xvYmFsIF9hODVjaGFycywgX2E4NWNoYXJzMgogICAgIyBEZWxheSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGFibGVzIHRvIG5vdCB3YXN0ZSBtZW1vcnkKICAgICMgaWYgdGhlIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZAogICAgaWYgX2E4NWNoYXJzMiBpcyBOb25lOgogICAgICAgIF9hODVjaGFycyA9IFtieXRlcygoaSwpKSBmb3IgaSBpbiByYW5nZSgzMywgMTE4KV0KICAgICAgICBfYTg1Y2hhcnMyID0gWyhhICsgYikgZm9yIGEgaW4gX2E4NWNoYXJzIGZvciBiIGluIF9hODVjaGFyc10KCiAgICByZXN1bHQgPSBfODVlbmNvZGUoYiwgX2E4NWNoYXJzLCBfYTg1Y2hhcnMyLCBwYWQsIFRydWUsIGZvbGRzcGFjZXMpCgogICAgaWYgYWRvYmU6CiAgICAgICAgcmVzdWx0ID0gX0E4NVNUQVJUICsgcmVzdWx0CiAgICBpZiB3cmFwY29sOgogICAgICAgIHdyYXBjb2wgPSBtYXgoMiBpZiBhZG9iZSBlbHNlIDEsIHdyYXBjb2wpCiAgICAgICAgY2h1bmtzID0gW3Jlc3VsdFtpOiBpICsgd3JhcGNvbF0KICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHJlc3VsdCksIHdyYXBjb2wpXQogICAgICAgIGlmIGFkb2JlOgogICAgICAgICAgICBpZiBsZW4oY2h1bmtzWy0xXSkgKyAyID4gd3JhcGNvbDoKICAgICAgICAgICAgICAgIGNodW5rcy5hcHBlbmQoYicnKQogICAgICAgIHJlc3VsdCA9IGInXG4nLmpvaW4oY2h1bmtzKQogICAgaWYgYWRvYmU6CiAgICAgICAgcmVzdWx0ICs9IF9BODVFTkQKCiAgICByZXR1cm4gcmVzdWx0CgpkZWYgYTg1ZGVjb2RlKGIsICosIGZvbGRzcGFjZXM9RmFsc2UsIGFkb2JlPUZhbHNlLCBpZ25vcmVjaGFycz1iJyBcdFxuXHJcdicpOgogICAgIiIiRGVjb2RlIHRoZSBBc2NpaTg1IGVuY29kZWQgYnl0ZXMtbGlrZSBvYmplY3Qgb3IgQVNDSUkgc3RyaW5nIGIuCgogICAgZm9sZHNwYWNlcyBpcyBhIGZsYWcgdGhhdCBzcGVjaWZpZXMgd2hldGhlciB0aGUgJ3knIHNob3J0IHNlcXVlbmNlIHNob3VsZCBiZQogICAgYWNjZXB0ZWQgYXMgc2hvcnRoYW5kIGZvciA0IGNvbnNlY3V0aXZlIHNwYWNlcyAoQVNDSUkgMHgyMCkuIFRoaXMgZmVhdHVyZSBpcwogICAgbm90IHN1cHBvcnRlZCBieSB0aGUgInN0YW5kYXJkIiBBZG9iZSBlbmNvZGluZy4KCiAgICBhZG9iZSBjb250cm9scyB3aGV0aGVyIHRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBpbiBBZG9iZSBBc2NpaTg1IGZvcm1hdCAoaS5lLgogICAgaXMgZnJhbWVkIHdpdGggPH4gYW5kIH4+KS4KCiAgICBpZ25vcmVjaGFycyBzaG91bGQgYmUgYSBieXRlIHN0cmluZyBjb250YWluaW5nIGNoYXJhY3RlcnMgdG8gaWdub3JlIGZyb20gdGhlCiAgICBpbnB1dC4gVGhpcyBzaG91bGQgb25seSBjb250YWluIHdoaXRlc3BhY2UgY2hhcmFjdGVycywgYW5kIGJ5IGRlZmF1bHQKICAgIGNvbnRhaW5zIGFsbCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gQVNDSUkuCgogICAgVGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC4KICAgICIiIgogICAgYiA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKGIpCiAgICBpZiBhZG9iZToKICAgICAgICBpZiBub3QgYi5lbmRzd2l0aChfQTg1RU5EKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJBc2NpaTg1IGVuY29kZWQgYnl0ZSBzZXF1ZW5jZXMgbXVzdCBlbmQgIgogICAgICAgICAgICAgICAgIndpdGggeyFyfSIuZm9ybWF0KF9BODVFTkQpCiAgICAgICAgICAgICAgICApCiAgICAgICAgaWYgYi5zdGFydHN3aXRoKF9BODVTVEFSVCk6CiAgICAgICAgICAgIGIgPSBiWzI6LTJdICAjIFN0cmlwIG9mZiBzdGFydC9lbmQgbWFya2VycwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGIgPSBiWzotMl0KICAgICMKICAgICMgV2UgaGF2ZSB0byBnbyB0aHJvdWdoIHRoaXMgc3RlcHdpc2UsIHNvIGFzIHRvIGlnbm9yZSBzcGFjZXMgYW5kIGhhbmRsZQogICAgIyBzcGVjaWFsIHNob3J0IHNlcXVlbmNlcwogICAgIwogICAgcGFja0kgPSBzdHJ1Y3QuU3RydWN0KCchSScpLnBhY2sKICAgIGRlY29kZWQgPSBbXQogICAgZGVjb2RlZF9hcHBlbmQgPSBkZWNvZGVkLmFwcGVuZAogICAgY3VyciA9IFtdCiAgICBjdXJyX2FwcGVuZCA9IGN1cnIuYXBwZW5kCiAgICBjdXJyX2NsZWFyID0gY3Vyci5jbGVhcgogICAgZm9yIHggaW4gYiArIGIndScgKiA0OgogICAgICAgIGlmIGInISdbMF0gPD0geCA8PSBiJ3UnWzBdOgogICAgICAgICAgICBjdXJyX2FwcGVuZCh4KQogICAgICAgICAgICBpZiBsZW4oY3VycikgPT0gNToKICAgICAgICAgICAgICAgIGFjYyA9IDAKICAgICAgICAgICAgICAgIGZvciB4IGluIGN1cnI6CiAgICAgICAgICAgICAgICAgICAgYWNjID0gODUgKiBhY2MgKyAoeCAtIDMzKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGRlY29kZWRfYXBwZW5kKHBhY2tJKGFjYykpCiAgICAgICAgICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0FzY2lpODUgb3ZlcmZsb3cnKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgIGN1cnJfY2xlYXIoKQogICAgICAgIGVsaWYgeCA9PSBiJ3onWzBdOgogICAgICAgICAgICBpZiBjdXJyOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneiBpbnNpZGUgQXNjaWk4NSA1LXR1cGxlJykKICAgICAgICAgICAgZGVjb2RlZF9hcHBlbmQoYidcMFwwXDBcMCcpCiAgICAgICAgZWxpZiBmb2xkc3BhY2VzIGFuZCB4ID09IGIneSdbMF06CiAgICAgICAgICAgIGlmIGN1cnI6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5IGluc2lkZSBBc2NpaTg1IDUtdHVwbGUnKQogICAgICAgICAgICBkZWNvZGVkX2FwcGVuZChiJ1x4MjBceDIwXHgyMFx4MjAnKQogICAgICAgIGVsaWYgeCBpbiBpZ25vcmVjaGFyczoKICAgICAgICAgICAgIyBTa2lwIHdoaXRlc3BhY2UKICAgICAgICAgICAgY29udGludWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdOb24tQXNjaWk4NSBkaWdpdCBmb3VuZDogJWMnICUgeCkKCiAgICByZXN1bHQgPSBiJycuam9pbihkZWNvZGVkKQogICAgcGFkZGluZyA9IDQgLSBsZW4oY3VycikKICAgIGlmIHBhZGRpbmc6CiAgICAgICAgIyBUaHJvdyBhd2F5IHRoZSBleHRyYSBwYWRkaW5nCiAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzotcGFkZGluZ10KICAgIHJldHVybiByZXN1bHQKCiMgVGhlIGZvbGxvd2luZyBjb2RlIGlzIG9yaWdpbmFsbHkgdGFrZW4gKHdpdGggcGVybWlzc2lvbikgZnJvbSBNZXJjdXJpYWwKCl9iODVhbHBoYWJldCA9IChiIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKICAgICAgICAgICAgICAgIGIiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXohIyQlJigpKistOzw9Pj9AXl9ge3x9fiIpCl9iODVjaGFycyA9IE5vbmUKX2I4NWNoYXJzMiA9IE5vbmUKX2I4NWRlYyA9IE5vbmUKCmRlZiBiODVlbmNvZGUoYiwgcGFkPUZhbHNlKToKICAgICIiIkVuY29kZSBieXRlcy1saWtlIG9iamVjdCBiIGluIGJhc2U4NSBmb3JtYXQgYW5kIHJldHVybiBhIGJ5dGVzIG9iamVjdC4KCiAgICBJZiBwYWQgaXMgdHJ1ZSwgdGhlIGlucHV0IGlzIHBhZGRlZCB3aXRoIGInXFwwJyBzbyBpdHMgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YKICAgIDQgYnl0ZXMgYmVmb3JlIGVuY29kaW5nLgogICAgIiIiCiAgICBnbG9iYWwgX2I4NWNoYXJzLCBfYjg1Y2hhcnMyCiAgICAjIERlbGF5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0YWJsZXMgdG8gbm90IHdhc3RlIG1lbW9yeQogICAgIyBpZiB0aGUgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkCiAgICBpZiBfYjg1Y2hhcnMyIGlzIE5vbmU6CiAgICAgICAgX2I4NWNoYXJzID0gW2J5dGVzKChpLCkpIGZvciBpIGluIF9iODVhbHBoYWJldF0KICAgICAgICBfYjg1Y2hhcnMyID0gWyhhICsgYikgZm9yIGEgaW4gX2I4NWNoYXJzIGZvciBiIGluIF9iODVjaGFyc10KICAgIHJldHVybiBfODVlbmNvZGUoYiwgX2I4NWNoYXJzLCBfYjg1Y2hhcnMyLCBwYWQpCgpkZWYgYjg1ZGVjb2RlKGIpOgogICAgIiIiRGVjb2RlIHRoZSBiYXNlODUtZW5jb2RlZCBieXRlcy1saWtlIG9iamVjdCBvciBBU0NJSSBzdHJpbmcgYgoKICAgIFRoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuCiAgICAiIiIKICAgIGdsb2JhbCBfYjg1ZGVjCiAgICAjIERlbGF5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0YWJsZXMgdG8gbm90IHdhc3RlIG1lbW9yeQogICAgIyBpZiB0aGUgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkCiAgICBpZiBfYjg1ZGVjIGlzIE5vbmU6CiAgICAgICAgX2I4NWRlYyA9IFtOb25lXSAqIDI1NgogICAgICAgIGZvciBpLCBjIGluIGVudW1lcmF0ZShfYjg1YWxwaGFiZXQpOgogICAgICAgICAgICBfYjg1ZGVjW2NdID0gaQoKICAgIGIgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShiKQogICAgcGFkZGluZyA9ICgtbGVuKGIpKSAlIDUKICAgIGIgPSBiICsgYid+JyAqIHBhZGRpbmcKICAgIG91dCA9IFtdCiAgICBwYWNrSSA9IHN0cnVjdC5TdHJ1Y3QoJyFJJykucGFjawogICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGIpLCA1KToKICAgICAgICBjaHVuayA9IGJbaTppICsgNV0KICAgICAgICBhY2MgPSAwCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmb3IgYyBpbiBjaHVuazoKICAgICAgICAgICAgICAgIGFjYyA9IGFjYyAqIDg1ICsgX2I4NWRlY1tjXQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgIGZvciBqLCBjIGluIGVudW1lcmF0ZShjaHVuayk6CiAgICAgICAgICAgICAgICBpZiBfYjg1ZGVjW2NdIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYmFkIGJhc2U4NSBjaGFyYWN0ZXIgYXQgcG9zaXRpb24gJWQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGkgKyBqKSkgZnJvbSBOb25lCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvdXQuYXBwZW5kKHBhY2tJKGFjYykpCiAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYmFzZTg1IG92ZXJmbG93IGluIGh1bmsgc3RhcnRpbmcgYXQgYnl0ZSAlZCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGkpIGZyb20gTm9uZQoKICAgIHJlc3VsdCA9IGInJy5qb2luKG91dCkKICAgIGlmIHBhZGRpbmc6CiAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzotcGFkZGluZ10KICAgIHJldHVybiByZXN1bHQKCiMgTGVnYWN5IGludGVyZmFjZS4gIFRoaXMgY29kZSBjb3VsZCBiZSBjbGVhbmVkIHVwIHNpbmNlIEkgZG9uJ3QgYmVsaWV2ZQojIGJpbmFzY2lpIGhhcyBhbnkgbGluZSBsZW5ndGggbGltaXRhdGlvbnMuICBJdCBqdXN0IGRvZXNuJ3Qgc2VlbSB3b3J0aCBpdAojIHRob3VnaC4gIFRoZSBmaWxlcyBzaG91bGQgYmUgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgoKTUFYTElORVNJWkUgPSA3NiAjIEV4Y2x1ZGluZyB0aGUgQ1JMRgpNQVhCSU5TSVpFID0gKE1BWExJTkVTSVpFLy80KSozCgpkZWYgZW5jb2RlKGlucHV0LCBvdXRwdXQpOgogICAgIiIiRW5jb2RlIGEgZmlsZTsgaW5wdXQgYW5kIG91dHB1dCBhcmUgYmluYXJ5IGZpbGVzLiIiIgogICAgd2hpbGUgVHJ1ZToKICAgICAgICBzID0gaW5wdXQucmVhZChNQVhCSU5TSVpFKQogICAgICAgIGlmIG5vdCBzOgogICAgICAgICAgICBicmVhawogICAgICAgIHdoaWxlIGxlbihzKSA8IE1BWEJJTlNJWkU6CiAgICAgICAgICAgIG5zID0gaW5wdXQucmVhZChNQVhCSU5TSVpFLWxlbihzKSkKICAgICAgICAgICAgaWYgbm90IG5zOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgcyArPSBucwogICAgICAgIGxpbmUgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMpCiAgICAgICAgb3V0cHV0LndyaXRlKGxpbmUpCgoKZGVmIGRlY29kZShpbnB1dCwgb3V0cHV0KToKICAgICIiIkRlY29kZSBhIGZpbGU7IGlucHV0IGFuZCBvdXRwdXQgYXJlIGJpbmFyeSBmaWxlcy4iIiIKICAgIHdoaWxlIFRydWU6CiAgICAgICAgbGluZSA9IGlucHV0LnJlYWRsaW5lKCkKICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgYnJlYWsKICAgICAgICBzID0gYmluYXNjaWkuYTJiX2Jhc2U2NChsaW5lKQogICAgICAgIG91dHB1dC53cml0ZShzKQoKZGVmIF9pbnB1dF90eXBlX2NoZWNrKHMpOgogICAgdHJ5OgogICAgICAgIG0gPSBtZW1vcnl2aWV3KHMpCiAgICBleGNlcHQgVHlwZUVycm9yIGFzIGVycjoKICAgICAgICBtc2cgPSAiZXhwZWN0ZWQgYnl0ZXMtbGlrZSBvYmplY3QsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXwogICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gZXJyCiAgICBpZiBtLmZvcm1hdCBub3QgaW4gKCdjJywgJ2InLCAnQicpOgogICAgICAgIG1zZyA9ICgiZXhwZWN0ZWQgc2luZ2xlIGJ5dGUgZWxlbWVudHMsIG5vdCAlciBmcm9tICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtLmZvcm1hdCwgcy5fX2NsYXNzX18uX19uYW1lX18pKQogICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICBpZiBtLm5kaW0gIT0gMToKICAgICAgICBtc2cgPSAoImV4cGVjdGVkIDEtRCBkYXRhLCBub3QgJWQtRCBkYXRhIGZyb20gJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0ubmRpbSwgcy5fX2NsYXNzX18uX19uYW1lX18pKQogICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCgoKZGVmIGVuY29kZWJ5dGVzKHMpOgogICAgIiIiRW5jb2RlIGEgYnl0ZXN0cmluZyBpbnRvIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgbXVsdGlwbGUgbGluZXMKICAgIG9mIGJhc2UtNjQgZGF0YS4iIiIKICAgIF9pbnB1dF90eXBlX2NoZWNrKHMpCiAgICBwaWVjZXMgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHMpLCBNQVhCSU5TSVpFKToKICAgICAgICBjaHVuayA9IHNbaSA6IGkgKyBNQVhCSU5TSVpFXQogICAgICAgIHBpZWNlcy5hcHBlbmQoYmluYXNjaWkuYjJhX2Jhc2U2NChjaHVuaykpCiAgICByZXR1cm4gYiIiLmpvaW4ocGllY2VzKQoKCmRlZiBkZWNvZGVieXRlcyhzKToKICAgICIiIkRlY29kZSBhIGJ5dGVzdHJpbmcgb2YgYmFzZS02NCBkYXRhIGludG8gYSBieXRlcyBvYmplY3QuIiIiCiAgICBfaW5wdXRfdHlwZV9jaGVjayhzKQogICAgcmV0dXJuIGJpbmFzY2lpLmEyYl9iYXNlNjQocykKCgojIFVzYWJsZSBhcyBhIHNjcmlwdC4uLgpkZWYgbWFpbigpOgogICAgIiIiU21hbGwgbWFpbiBwcm9ncmFtIiIiCiAgICBpbXBvcnQgc3lzLCBnZXRvcHQKICAgIHVzYWdlID0gIiIidXNhZ2U6ICVzIFstaHwtZHwtZXwtdXwtdF0gW2ZpbGV8LV0KICAgICAgICAtaDogcHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKICAgICAgICAtZCwgLXU6IGRlY29kZQogICAgICAgIC1lOiBlbmNvZGUgKGRlZmF1bHQpCiAgICAgICAgLXQ6IGVuY29kZSBhbmQgZGVjb2RlIHN0cmluZyAnQWxhZGRpbjpvcGVuIHNlc2FtZSciIiIlc3lzLmFyZ3ZbMF0KICAgIHRyeToKICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdoZGV1dCcpCiAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKICAgICAgICBzeXMuc3Rkb3V0ID0gc3lzLnN0ZGVycgogICAgICAgIHByaW50KG1zZykKICAgICAgICBwcmludCh1c2FnZSkKICAgICAgICBzeXMuZXhpdCgyKQogICAgZnVuYyA9IGVuY29kZQogICAgZm9yIG8sIGEgaW4gb3B0czoKICAgICAgICBpZiBvID09ICctZSc6IGZ1bmMgPSBlbmNvZGUKICAgICAgICBpZiBvID09ICctZCc6IGZ1bmMgPSBkZWNvZGUKICAgICAgICBpZiBvID09ICctdSc6IGZ1bmMgPSBkZWNvZGUKICAgICAgICBpZiBvID09ICctdCc6IHRlc3QoKTsgcmV0dXJuCiAgICAgICAgaWYgbyA9PSAnLWgnOiBwcmludCh1c2FnZSk7IHJldHVybgogICAgaWYgYXJncyBhbmQgYXJnc1swXSAhPSAnLSc6CiAgICAgICAgd2l0aCBvcGVuKGFyZ3NbMF0sICdyYicpIGFzIGY6CiAgICAgICAgICAgIGZ1bmMoZiwgc3lzLnN0ZG91dC5idWZmZXIpCiAgICBlbHNlOgogICAgICAgIGZ1bmMoc3lzLnN0ZGluLmJ1ZmZlciwgc3lzLnN0ZG91dC5idWZmZXIpCgoKZGVmIHRlc3QoKToKICAgIHMwID0gYiJBbGFkZGluOm9wZW4gc2VzYW1lIgogICAgcHJpbnQocmVwcihzMCkpCiAgICBzMSA9IGVuY29kZWJ5dGVzKHMwKQogICAgcHJpbnQocmVwcihzMSkpCiAgICBzMiA9IGRlY29kZWJ5dGVzKHMxKQogICAgcHJpbnQocmVwcihzMikpCiAgICBhc3NlcnQgczAgPT0gczIKCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigpClBLAwQUAAAAAAACIKNW7cpkzGF+AABhfgAABgAAAGJkYi5weSIiIkRlYnVnZ2VyIGJhc2ljcyIiIgoKaW1wb3J0IGZubWF0Y2gKaW1wb3J0IHN5cwppbXBvcnQgb3MKZnJvbSBpbnNwZWN0IGltcG9ydCBDT19HRU5FUkFUT1IsIENPX0NPUk9VVElORSwgQ09fQVNZTkNfR0VORVJBVE9SCgpfX2FsbF9fID0gWyJCZGJRdWl0IiwgIkJkYiIsICJCcmVha3BvaW50Il0KCkdFTkVSQVRPUl9BTkRfQ09ST1VUSU5FX0ZMQUdTID0gQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SCgoKY2xhc3MgQmRiUXVpdChFeGNlcHRpb24pOgogICAgIiIiRXhjZXB0aW9uIHRvIGdpdmUgdXAgY29tcGxldGVseS4iIiIKCgpjbGFzcyBCZGI6CiAgICAiIiJHZW5lcmljIFB5dGhvbiBkZWJ1Z2dlciBiYXNlIGNsYXNzLgoKICAgIFRoaXMgY2xhc3MgdGFrZXMgY2FyZSBvZiBkZXRhaWxzIG9mIHRoZSB0cmFjZSBmYWNpbGl0eTsKICAgIGEgZGVyaXZlZCBjbGFzcyBzaG91bGQgaW1wbGVtZW50IHVzZXIgaW50ZXJhY3Rpb24uCiAgICBUaGUgc3RhbmRhcmQgZGVidWdnZXIgY2xhc3MgKHBkYi5QZGIpIGlzIGFuIGV4YW1wbGUuCgogICAgVGhlIG9wdGlvbmFsIHNraXAgYXJndW1lbnQgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBnbG9iLXN0eWxlCiAgICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzCiAgICB0aGF0IG9yaWdpbmF0ZSBpbiBhIG1vZHVsZSB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZXNlIHBhdHRlcm5zLgogICAgV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiBtb2R1bGUKICAgIGlzIGRldGVybWluZWQgYnkgdGhlIF9fbmFtZV9fIGluIHRoZSBmcmFtZSBnbG9iYWxzLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNraXA9Tm9uZSk6CiAgICAgICAgc2VsZi5za2lwID0gc2V0KHNraXApIGlmIHNraXAgZWxzZSBOb25lCiAgICAgICAgc2VsZi5icmVha3MgPSB7fQogICAgICAgIHNlbGYuZm5jYWNoZSA9IHt9CiAgICAgICAgc2VsZi5mcmFtZV9yZXR1cm5pbmcgPSBOb25lCgogICAgICAgIHNlbGYuX2xvYWRfYnJlYWtzKCkKCiAgICBkZWYgY2Fub25pYyhzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIGNhbm9uaWNhbCBmb3JtIG9mIGZpbGVuYW1lLgoKICAgICAgICBGb3IgcmVhbCBmaWxlbmFtZXMsIHRoZSBjYW5vbmljYWwgZm9ybSBpcyBhIGNhc2Utbm9ybWFsaXplZCAob24KICAgICAgICBjYXNlIGluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zKSBhYnNvbHV0ZSBwYXRoLiAgJ0ZpbGVuYW1lcycgd2l0aAogICAgICAgIGFuZ2xlIGJyYWNrZXRzLCBzdWNoIGFzICI8c3RkaW4+IiwgZ2VuZXJhdGVkIGluIGludGVyYWN0aXZlCiAgICAgICAgbW9kZSwgYXJlIHJldHVybmVkIHVuY2hhbmdlZC4KICAgICAgICAiIiIKICAgICAgICBpZiBmaWxlbmFtZSA9PSAiPCIgKyBmaWxlbmFtZVsxOi0xXSArICI+IjoKICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgICAgY2Fub25pYyA9IHNlbGYuZm5jYWNoZS5nZXQoZmlsZW5hbWUpCiAgICAgICAgaWYgbm90IGNhbm9uaWM6CiAgICAgICAgICAgIGNhbm9uaWMgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCiAgICAgICAgICAgIGNhbm9uaWMgPSBvcy5wYXRoLm5vcm1jYXNlKGNhbm9uaWMpCiAgICAgICAgICAgIHNlbGYuZm5jYWNoZVtmaWxlbmFtZV0gPSBjYW5vbmljCiAgICAgICAgcmV0dXJuIGNhbm9uaWMKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgIiIiU2V0IHZhbHVlcyBvZiBhdHRyaWJ1dGVzIGFzIHJlYWR5IHRvIHN0YXJ0IGRlYnVnZ2luZy4iIiIKICAgICAgICBpbXBvcnQgbGluZWNhY2hlCiAgICAgICAgbGluZWNhY2hlLmNoZWNrY2FjaGUoKQogICAgICAgIHNlbGYuYm90ZnJhbWUgPSBOb25lCiAgICAgICAgc2VsZi5fc2V0X3N0b3BpbmZvKE5vbmUsIE5vbmUpCgogICAgZGVmIHRyYWNlX2Rpc3BhdGNoKHNlbGYsIGZyYW1lLCBldmVudCwgYXJnKToKICAgICAgICAiIiJEaXNwYXRjaCBhIHRyYWNlIGZ1bmN0aW9uIGZvciBkZWJ1Z2dlZCBmcmFtZXMgYmFzZWQgb24gdGhlIGV2ZW50LgoKICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGluc3RhbGxlZCBhcyB0aGUgdHJhY2UgZnVuY3Rpb24gZm9yIGRlYnVnZ2VkCiAgICAgICAgZnJhbWVzLiBJdHMgcmV0dXJuIHZhbHVlIGlzIHRoZSBuZXcgdHJhY2UgZnVuY3Rpb24sIHdoaWNoIGlzCiAgICAgICAgdXN1YWxseSBpdHNlbGYuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlY2lkZXMgaG93IHRvCiAgICAgICAgZGlzcGF0Y2ggYSBmcmFtZSwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGV2ZW50IChwYXNzZWQgaW4gYXMgYQogICAgICAgIHN0cmluZykgdGhhdCBpcyBhYm91dCB0byBiZSBleGVjdXRlZC4KCiAgICAgICAgVGhlIGV2ZW50IGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgbGluZTogQSBuZXcgbGluZSBvZiBjb2RlIGlzIGdvaW5nIHRvIGJlIGV4ZWN1dGVkLgogICAgICAgICAgICBjYWxsOiBBIGZ1bmN0aW9uIGlzIGFib3V0IHRvIGJlIGNhbGxlZCBvciBhbm90aGVyIGNvZGUgYmxvY2sKICAgICAgICAgICAgICAgICAgaXMgZW50ZXJlZC4KICAgICAgICAgICAgcmV0dXJuOiBBIGZ1bmN0aW9uIG9yIG90aGVyIGNvZGUgYmxvY2sgaXMgYWJvdXQgdG8gcmV0dXJuLgogICAgICAgICAgICBleGNlcHRpb246IEFuIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQuCiAgICAgICAgICAgIGNfY2FsbDogQSBDIGZ1bmN0aW9uIGlzIGFib3V0IHRvIGJlIGNhbGxlZC4KICAgICAgICAgICAgY19yZXR1cm46IEEgQyBmdW5jdGlvbiBoYXMgcmV0dXJuZWQuCiAgICAgICAgICAgIGNfZXhjZXB0aW9uOiBBIEMgZnVuY3Rpb24gaGFzIHJhaXNlZCBhbiBleGNlcHRpb24uCgogICAgICAgIEZvciB0aGUgUHl0aG9uIGV2ZW50cywgc3BlY2lhbGl6ZWQgZnVuY3Rpb25zIChzZWUgdGhlIGRpc3BhdGNoXyooKQogICAgICAgIG1ldGhvZHMpIGFyZSBjYWxsZWQuICBGb3IgdGhlIEMgZXZlbnRzLCBubyBhY3Rpb24gaXMgdGFrZW4uCgogICAgICAgIFRoZSBhcmcgcGFyYW1ldGVyIGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGV2ZW50LgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYucXVpdHRpbmc6CiAgICAgICAgICAgIHJldHVybiAjIE5vbmUKICAgICAgICBpZiBldmVudCA9PSAnbGluZSc6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRpc3BhdGNoX2xpbmUoZnJhbWUpCiAgICAgICAgaWYgZXZlbnQgPT0gJ2NhbGwnOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kaXNwYXRjaF9jYWxsKGZyYW1lLCBhcmcpCiAgICAgICAgaWYgZXZlbnQgPT0gJ3JldHVybic6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRpc3BhdGNoX3JldHVybihmcmFtZSwgYXJnKQogICAgICAgIGlmIGV2ZW50ID09ICdleGNlcHRpb24nOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kaXNwYXRjaF9leGNlcHRpb24oZnJhbWUsIGFyZykKICAgICAgICBpZiBldmVudCA9PSAnY19jYWxsJzoKICAgICAgICAgICAgcmV0dXJuIHNlbGYudHJhY2VfZGlzcGF0Y2gKICAgICAgICBpZiBldmVudCA9PSAnY19leGNlcHRpb24nOgogICAgICAgICAgICByZXR1cm4gc2VsZi50cmFjZV9kaXNwYXRjaAogICAgICAgIGlmIGV2ZW50ID09ICdjX3JldHVybic6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnRyYWNlX2Rpc3BhdGNoCiAgICAgICAgcHJpbnQoJ2JkYi5CZGIuZGlzcGF0Y2g6IHVua25vd24gZGVidWdnaW5nIGV2ZW50OicsIHJlcHIoZXZlbnQpKQogICAgICAgIHJldHVybiBzZWxmLnRyYWNlX2Rpc3BhdGNoCgogICAgZGVmIGRpc3BhdGNoX2xpbmUoc2VsZiwgZnJhbWUpOgogICAgICAgICIiIkludm9rZSB1c2VyIGZ1bmN0aW9uIGFuZCByZXR1cm4gdHJhY2UgZnVuY3Rpb24gZm9yIGxpbmUgZXZlbnQuCgogICAgICAgIElmIHRoZSBkZWJ1Z2dlciBzdG9wcyBvbiB0aGUgY3VycmVudCBsaW5lLCBpbnZva2UKICAgICAgICBzZWxmLnVzZXJfbGluZSgpLiBSYWlzZSBCZGJRdWl0IGlmIHNlbGYucXVpdHRpbmcgaXMgc2V0LgogICAgICAgIFJldHVybiBzZWxmLnRyYWNlX2Rpc3BhdGNoIHRvIGNvbnRpbnVlIHRyYWNpbmcgaW4gdGhpcyBzY29wZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLnN0b3BfaGVyZShmcmFtZSkgb3Igc2VsZi5icmVha19oZXJlKGZyYW1lKToKICAgICAgICAgICAgc2VsZi51c2VyX2xpbmUoZnJhbWUpCiAgICAgICAgICAgIGlmIHNlbGYucXVpdHRpbmc6IHJhaXNlIEJkYlF1aXQKICAgICAgICByZXR1cm4gc2VsZi50cmFjZV9kaXNwYXRjaAoKICAgIGRlZiBkaXNwYXRjaF9jYWxsKHNlbGYsIGZyYW1lLCBhcmcpOgogICAgICAgICIiIkludm9rZSB1c2VyIGZ1bmN0aW9uIGFuZCByZXR1cm4gdHJhY2UgZnVuY3Rpb24gZm9yIGNhbGwgZXZlbnQuCgogICAgICAgIElmIHRoZSBkZWJ1Z2dlciBzdG9wcyBvbiB0aGlzIGZ1bmN0aW9uIGNhbGwsIGludm9rZQogICAgICAgIHNlbGYudXNlcl9jYWxsKCkuIFJhaXNlIEJkYlF1aXQgaWYgc2VsZi5xdWl0dGluZyBpcyBzZXQuCiAgICAgICAgUmV0dXJuIHNlbGYudHJhY2VfZGlzcGF0Y2ggdG8gY29udGludWUgdHJhY2luZyBpbiB0aGlzIHNjb3BlLgogICAgICAgICIiIgogICAgICAgICMgWFhYICdhcmcnIGlzIG5vIGxvbmdlciB1c2VkCiAgICAgICAgaWYgc2VsZi5ib3RmcmFtZSBpcyBOb25lOgogICAgICAgICAgICAjIEZpcnN0IGNhbGwgb2YgZGlzcGF0Y2ggc2luY2UgcmVzZXQoKQogICAgICAgICAgICBzZWxmLmJvdGZyYW1lID0gZnJhbWUuZl9iYWNrICMgKENUKSBOb3RlIHRoYXQgdGhpcyBtYXkgYWxzbyBiZSBOb25lIQogICAgICAgICAgICByZXR1cm4gc2VsZi50cmFjZV9kaXNwYXRjaAogICAgICAgIGlmIG5vdCAoc2VsZi5zdG9wX2hlcmUoZnJhbWUpIG9yIHNlbGYuYnJlYWtfYW55d2hlcmUoZnJhbWUpKToKICAgICAgICAgICAgIyBObyBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24KICAgICAgICAgICAgcmV0dXJuICMgTm9uZQogICAgICAgICMgSWdub3JlIGNhbGwgZXZlbnRzIGluIGdlbmVyYXRvciBleGNlcHQgd2hlbiBzdGVwcGluZy4KICAgICAgICBpZiBzZWxmLnN0b3BmcmFtZSBhbmQgZnJhbWUuZl9jb2RlLmNvX2ZsYWdzICYgR0VORVJBVE9SX0FORF9DT1JPVVRJTkVfRkxBR1M6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnRyYWNlX2Rpc3BhdGNoCiAgICAgICAgc2VsZi51c2VyX2NhbGwoZnJhbWUsIGFyZykKICAgICAgICBpZiBzZWxmLnF1aXR0aW5nOiByYWlzZSBCZGJRdWl0CiAgICAgICAgcmV0dXJuIHNlbGYudHJhY2VfZGlzcGF0Y2gKCiAgICBkZWYgZGlzcGF0Y2hfcmV0dXJuKHNlbGYsIGZyYW1lLCBhcmcpOgogICAgICAgICIiIkludm9rZSB1c2VyIGZ1bmN0aW9uIGFuZCByZXR1cm4gdHJhY2UgZnVuY3Rpb24gZm9yIHJldHVybiBldmVudC4KCiAgICAgICAgSWYgdGhlIGRlYnVnZ2VyIHN0b3BzIG9uIHRoaXMgZnVuY3Rpb24gcmV0dXJuLCBpbnZva2UKICAgICAgICBzZWxmLnVzZXJfcmV0dXJuKCkuIFJhaXNlIEJkYlF1aXQgaWYgc2VsZi5xdWl0dGluZyBpcyBzZXQuCiAgICAgICAgUmV0dXJuIHNlbGYudHJhY2VfZGlzcGF0Y2ggdG8gY29udGludWUgdHJhY2luZyBpbiB0aGlzIHNjb3BlLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuc3RvcF9oZXJlKGZyYW1lKSBvciBmcmFtZSA9PSBzZWxmLnJldHVybmZyYW1lOgogICAgICAgICAgICAjIElnbm9yZSByZXR1cm4gZXZlbnRzIGluIGdlbmVyYXRvciBleGNlcHQgd2hlbiBzdGVwcGluZy4KICAgICAgICAgICAgaWYgc2VsZi5zdG9wZnJhbWUgYW5kIGZyYW1lLmZfY29kZS5jb19mbGFncyAmIEdFTkVSQVRPUl9BTkRfQ09ST1VUSU5FX0ZMQUdTOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudHJhY2VfZGlzcGF0Y2gKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5mcmFtZV9yZXR1cm5pbmcgPSBmcmFtZQogICAgICAgICAgICAgICAgc2VsZi51c2VyX3JldHVybihmcmFtZSwgYXJnKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5mcmFtZV9yZXR1cm5pbmcgPSBOb25lCiAgICAgICAgICAgIGlmIHNlbGYucXVpdHRpbmc6IHJhaXNlIEJkYlF1aXQKICAgICAgICAgICAgIyBUaGUgdXNlciBpc3N1ZWQgYSAnbmV4dCcgb3IgJ3VudGlsJyBjb21tYW5kLgogICAgICAgICAgICBpZiBzZWxmLnN0b3BmcmFtZSBpcyBmcmFtZSBhbmQgc2VsZi5zdG9wbGluZW5vICE9IC0xOgogICAgICAgICAgICAgICAgc2VsZi5fc2V0X3N0b3BpbmZvKE5vbmUsIE5vbmUpCiAgICAgICAgcmV0dXJuIHNlbGYudHJhY2VfZGlzcGF0Y2gKCiAgICBkZWYgZGlzcGF0Y2hfZXhjZXB0aW9uKHNlbGYsIGZyYW1lLCBhcmcpOgogICAgICAgICIiIkludm9rZSB1c2VyIGZ1bmN0aW9uIGFuZCByZXR1cm4gdHJhY2UgZnVuY3Rpb24gZm9yIGV4Y2VwdGlvbiBldmVudC4KCiAgICAgICAgSWYgdGhlIGRlYnVnZ2VyIHN0b3BzIG9uIHRoaXMgZXhjZXB0aW9uLCBpbnZva2UKICAgICAgICBzZWxmLnVzZXJfZXhjZXB0aW9uKCkuIFJhaXNlIEJkYlF1aXQgaWYgc2VsZi5xdWl0dGluZyBpcyBzZXQuCiAgICAgICAgUmV0dXJuIHNlbGYudHJhY2VfZGlzcGF0Y2ggdG8gY29udGludWUgdHJhY2luZyBpbiB0aGlzIHNjb3BlLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuc3RvcF9oZXJlKGZyYW1lKToKICAgICAgICAgICAgIyBXaGVuIHN0ZXBwaW5nIHdpdGggbmV4dC91bnRpbC9yZXR1cm4gaW4gYSBnZW5lcmF0b3IgZnJhbWUsIHNraXAKICAgICAgICAgICAgIyB0aGUgaW50ZXJuYWwgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24gKHdpdGggbm8gdHJhY2ViYWNrKQogICAgICAgICAgICAjIHRyaWdnZXJlZCBieSBhIHN1Yml0ZXJhdG9yIHJ1biB3aXRoIHRoZSAneWllbGQgZnJvbScgc3RhdGVtZW50LgogICAgICAgICAgICBpZiBub3QgKGZyYW1lLmZfY29kZS5jb19mbGFncyAmIEdFTkVSQVRPUl9BTkRfQ09ST1VUSU5FX0ZMQUdTCiAgICAgICAgICAgICAgICAgICAgYW5kIGFyZ1swXSBpcyBTdG9wSXRlcmF0aW9uIGFuZCBhcmdbMl0gaXMgTm9uZSk6CiAgICAgICAgICAgICAgICBzZWxmLnVzZXJfZXhjZXB0aW9uKGZyYW1lLCBhcmcpCiAgICAgICAgICAgICAgICBpZiBzZWxmLnF1aXR0aW5nOiByYWlzZSBCZGJRdWl0CiAgICAgICAgIyBTdG9wIGF0IHRoZSBTdG9wSXRlcmF0aW9uIG9yIEdlbmVyYXRvckV4aXQgZXhjZXB0aW9uIHdoZW4gdGhlIHVzZXIKICAgICAgICAjIGhhcyBzZXQgc3RvcGZyYW1lIGluIGEgZ2VuZXJhdG9yIGJ5IGlzc3VpbmcgYSByZXR1cm4gY29tbWFuZCwgb3IgYQogICAgICAgICMgbmV4dC91bnRpbCBjb21tYW5kIGF0IHRoZSBsYXN0IHN0YXRlbWVudCBpbiB0aGUgZ2VuZXJhdG9yIGJlZm9yZSB0aGUKICAgICAgICAjIGV4Y2VwdGlvbi4KICAgICAgICBlbGlmIChzZWxmLnN0b3BmcmFtZSBhbmQgZnJhbWUgaXMgbm90IHNlbGYuc3RvcGZyYW1lCiAgICAgICAgICAgICAgICBhbmQgc2VsZi5zdG9wZnJhbWUuZl9jb2RlLmNvX2ZsYWdzICYgR0VORVJBVE9SX0FORF9DT1JPVVRJTkVfRkxBR1MKICAgICAgICAgICAgICAgIGFuZCBhcmdbMF0gaW4gKFN0b3BJdGVyYXRpb24sIEdlbmVyYXRvckV4aXQpKToKICAgICAgICAgICAgc2VsZi51c2VyX2V4Y2VwdGlvbihmcmFtZSwgYXJnKQogICAgICAgICAgICBpZiBzZWxmLnF1aXR0aW5nOiByYWlzZSBCZGJRdWl0CgogICAgICAgIHJldHVybiBzZWxmLnRyYWNlX2Rpc3BhdGNoCgogICAgIyBOb3JtYWxseSBkZXJpdmVkIGNsYXNzZXMgZG9uJ3Qgb3ZlcnJpZGUgdGhlIGZvbGxvd2luZwogICAgIyBtZXRob2RzLCBidXQgdGhleSBtYXkgaWYgdGhleSB3YW50IHRvIHJlZGVmaW5lIHRoZQogICAgIyBkZWZpbml0aW9uIG9mIHN0b3BwaW5nIGFuZCBicmVha3BvaW50cy4KCiAgICBkZWYgaXNfc2tpcHBlZF9tb2R1bGUoc2VsZiwgbW9kdWxlX25hbWUpOgogICAgICAgICJSZXR1cm4gVHJ1ZSBpZiBtb2R1bGVfbmFtZSBtYXRjaGVzIGFueSBza2lwIHBhdHRlcm4uIgogICAgICAgIGlmIG1vZHVsZV9uYW1lIGlzIE5vbmU6ICAjIHNvbWUgbW9kdWxlcyBkbyBub3QgaGF2ZSBuYW1lcwogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBmb3IgcGF0dGVybiBpbiBzZWxmLnNraXA6CiAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChtb2R1bGVfbmFtZSwgcGF0dGVybik6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBzdG9wX2hlcmUoc2VsZiwgZnJhbWUpOgogICAgICAgICJSZXR1cm4gVHJ1ZSBpZiBmcmFtZSBpcyBiZWxvdyB0aGUgc3RhcnRpbmcgZnJhbWUgaW4gdGhlIHN0YWNrLiIKICAgICAgICAjIChDVCkgc3RvcGZyYW1lIG1heSBub3cgYWxzbyBiZSBOb25lLCBzZWUgZGlzcGF0Y2hfY2FsbC4KICAgICAgICAjIChDVCkgdGhlIGZvcm1lciB0ZXN0IGZvciBOb25lIGlzIHRoZXJlZm9yZSByZW1vdmVkIGZyb20gaGVyZS4KICAgICAgICBpZiBzZWxmLnNraXAgYW5kIFwKICAgICAgICAgICAgICAgc2VsZi5pc19za2lwcGVkX21vZHVsZShmcmFtZS5mX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycpKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgaWYgZnJhbWUgaXMgc2VsZi5zdG9wZnJhbWU6CiAgICAgICAgICAgIGlmIHNlbGYuc3RvcGxpbmVubyA9PSAtMToKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICByZXR1cm4gZnJhbWUuZl9saW5lbm8gPj0gc2VsZi5zdG9wbGluZW5vCiAgICAgICAgaWYgbm90IHNlbGYuc3RvcGZyYW1lOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBicmVha19oZXJlKHNlbGYsIGZyYW1lKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGVyZSBpcyBhbiBlZmZlY3RpdmUgYnJlYWtwb2ludCBmb3IgdGhpcyBsaW5lLgoKICAgICAgICBDaGVjayBmb3IgbGluZSBvciBmdW5jdGlvbiBicmVha3BvaW50IGFuZCBpZiBpbiBlZmZlY3QuCiAgICAgICAgRGVsZXRlIHRlbXBvcmFyeSBicmVha3BvaW50cyBpZiBlZmZlY3RpdmUoKSBzYXlzIHRvLgogICAgICAgICIiIgogICAgICAgIGZpbGVuYW1lID0gc2VsZi5jYW5vbmljKGZyYW1lLmZfY29kZS5jb19maWxlbmFtZSkKICAgICAgICBpZiBmaWxlbmFtZSBub3QgaW4gc2VsZi5icmVha3M6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGxpbmVubyA9IGZyYW1lLmZfbGluZW5vCiAgICAgICAgaWYgbGluZW5vIG5vdCBpbiBzZWxmLmJyZWFrc1tmaWxlbmFtZV06CiAgICAgICAgICAgICMgVGhlIGxpbmUgaXRzZWxmIGhhcyBubyBicmVha3BvaW50LCBidXQgbWF5YmUgdGhlIGxpbmUgaXMgdGhlCiAgICAgICAgICAgICMgZmlyc3QgbGluZSBvZiBhIGZ1bmN0aW9uIHdpdGggYnJlYWtwb2ludCBzZXQgYnkgZnVuY3Rpb24gbmFtZS4KICAgICAgICAgICAgbGluZW5vID0gZnJhbWUuZl9jb2RlLmNvX2ZpcnN0bGluZW5vCiAgICAgICAgICAgIGlmIGxpbmVubyBub3QgaW4gc2VsZi5icmVha3NbZmlsZW5hbWVdOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgICMgZmxhZyBzYXlzIG9rIHRvIGRlbGV0ZSB0ZW1wLiBicAogICAgICAgIChicCwgZmxhZykgPSBlZmZlY3RpdmUoZmlsZW5hbWUsIGxpbmVubywgZnJhbWUpCiAgICAgICAgaWYgYnA6CiAgICAgICAgICAgIHNlbGYuY3VycmVudGJwID0gYnAubnVtYmVyCiAgICAgICAgICAgIGlmIChmbGFnIGFuZCBicC50ZW1wb3JhcnkpOgogICAgICAgICAgICAgICAgc2VsZi5kb19jbGVhcihzdHIoYnAubnVtYmVyKSkKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgZG9fY2xlYXIoc2VsZiwgYXJnKToKICAgICAgICAiIiJSZW1vdmUgdGVtcG9yYXJ5IGJyZWFrcG9pbnQuCgogICAgICAgIE11c3QgaW1wbGVtZW50IGluIGRlcml2ZWQgY2xhc3NlcyBvciBnZXQgTm90SW1wbGVtZW50ZWRFcnJvci4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzcyBvZiBiZGIgbXVzdCBpbXBsZW1lbnQgZG9fY2xlYXIoKSIpCgogICAgZGVmIGJyZWFrX2FueXdoZXJlKHNlbGYsIGZyYW1lKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGVyZSBpcyBhbnkgYnJlYWtwb2ludCBmb3IgZnJhbWUncyBmaWxlbmFtZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmljKGZyYW1lLmZfY29kZS5jb19maWxlbmFtZSkgaW4gc2VsZi5icmVha3MKCiAgICAjIERlcml2ZWQgY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhlIHVzZXJfKiBtZXRob2RzCiAgICAjIHRvIGdhaW4gY29udHJvbC4KCiAgICBkZWYgdXNlcl9jYWxsKHNlbGYsIGZyYW1lLCBhcmd1bWVudF9saXN0KToKICAgICAgICAiIiJDYWxsZWQgaWYgd2UgbWlnaHQgc3RvcCBpbiBhIGZ1bmN0aW9uLiIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgdXNlcl9saW5lKHNlbGYsIGZyYW1lKToKICAgICAgICAiIiJDYWxsZWQgd2hlbiB3ZSBzdG9wIG9yIGJyZWFrIGF0IGEgbGluZS4iIiIKICAgICAgICBwYXNzCgogICAgZGVmIHVzZXJfcmV0dXJuKHNlbGYsIGZyYW1lLCByZXR1cm5fdmFsdWUpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIGEgcmV0dXJuIHRyYXAgaXMgc2V0IGhlcmUuIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiB1c2VyX2V4Y2VwdGlvbihzZWxmLCBmcmFtZSwgZXhjX2luZm8pOgogICAgICAgICIiIkNhbGxlZCB3aGVuIHdlIHN0b3Agb24gYW4gZXhjZXB0aW9uLiIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgX3NldF9zdG9waW5mbyhzZWxmLCBzdG9wZnJhbWUsIHJldHVybmZyYW1lLCBzdG9wbGluZW5vPTApOgogICAgICAgICIiIlNldCB0aGUgYXR0cmlidXRlcyBmb3Igc3RvcHBpbmcuCgogICAgICAgIElmIHN0b3BsaW5lbm8gaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIHRoZW4gc3RvcCBhdCBsaW5lCiAgICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzdG9wbGluZS4gIElmIHN0b3BsaW5lbm8gaXMgLTEsIHRoZW4KICAgICAgICBkb24ndCBzdG9wIGF0IGFsbC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnN0b3BmcmFtZSA9IHN0b3BmcmFtZQogICAgICAgIHNlbGYucmV0dXJuZnJhbWUgPSByZXR1cm5mcmFtZQogICAgICAgIHNlbGYucXVpdHRpbmcgPSBGYWxzZQogICAgICAgICMgc3RvcGxpbmVubyA+PSAwIG1lYW5zOiBzdG9wIGF0IGxpbmUgPj0gdGhlIHN0b3BsaW5lbm8KICAgICAgICAjIHN0b3BsaW5lbm8gLTEgbWVhbnM6IGRvbid0IHN0b3AgYXQgYWxsCiAgICAgICAgc2VsZi5zdG9wbGluZW5vID0gc3RvcGxpbmVubwoKICAgICMgRGVyaXZlZCBjbGFzc2VzIGFuZCBjbGllbnRzIGNhbiBjYWxsIHRoZSBmb2xsb3dpbmcgbWV0aG9kcwogICAgIyB0byBhZmZlY3QgdGhlIHN0ZXBwaW5nIHN0YXRlLgoKICAgIGRlZiBzZXRfdW50aWwoc2VsZiwgZnJhbWUsIGxpbmVubz1Ob25lKToKICAgICAgICAiIiJTdG9wIHdoZW4gdGhlIGxpbmUgd2l0aCB0aGUgbGluZW5vIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMKICAgICAgICByZWFjaGVkIG9yIHdoZW4gcmV0dXJuaW5nIGZyb20gY3VycmVudCBmcmFtZS4iIiIKICAgICAgICAjIHRoZSBuYW1lICJ1bnRpbCIgaXMgYm9ycm93ZWQgZnJvbSBnZGIKICAgICAgICBpZiBsaW5lbm8gaXMgTm9uZToKICAgICAgICAgICAgbGluZW5vID0gZnJhbWUuZl9saW5lbm8gKyAxCiAgICAgICAgc2VsZi5fc2V0X3N0b3BpbmZvKGZyYW1lLCBmcmFtZSwgbGluZW5vKQoKICAgIGRlZiBzZXRfc3RlcChzZWxmKToKICAgICAgICAiIiJTdG9wIGFmdGVyIG9uZSBsaW5lIG9mIGNvZGUuIiIiCiAgICAgICAgIyBJc3N1ZSAjMTMxODM6IHBkYiBza2lwcyBmcmFtZXMgYWZ0ZXIgaGl0dGluZyBhIGJyZWFrcG9pbnQgYW5kIHJ1bm5pbmcKICAgICAgICAjIHN0ZXAgY29tbWFuZHMuCiAgICAgICAgIyBSZXN0b3JlIHRoZSB0cmFjZSBmdW5jdGlvbiBpbiB0aGUgY2FsbGVyICh0aGF0IG1heSBub3QgaGF2ZSBiZWVuIHNldAogICAgICAgICMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMpIHdoZW4gcmV0dXJuaW5nIGZyb20gdGhlIGN1cnJlbnQgZnJhbWUuCiAgICAgICAgaWYgc2VsZi5mcmFtZV9yZXR1cm5pbmc6CiAgICAgICAgICAgIGNhbGxlcl9mcmFtZSA9IHNlbGYuZnJhbWVfcmV0dXJuaW5nLmZfYmFjawogICAgICAgICAgICBpZiBjYWxsZXJfZnJhbWUgYW5kIG5vdCBjYWxsZXJfZnJhbWUuZl90cmFjZToKICAgICAgICAgICAgICAgIGNhbGxlcl9mcmFtZS5mX3RyYWNlID0gc2VsZi50cmFjZV9kaXNwYXRjaAogICAgICAgIHNlbGYuX3NldF9zdG9waW5mbyhOb25lLCBOb25lKQoKICAgIGRlZiBzZXRfbmV4dChzZWxmLCBmcmFtZSk6CiAgICAgICAgIiIiU3RvcCBvbiB0aGUgbmV4dCBsaW5lIGluIG9yIGJlbG93IHRoZSBnaXZlbiBmcmFtZS4iIiIKICAgICAgICBzZWxmLl9zZXRfc3RvcGluZm8oZnJhbWUsIE5vbmUpCgogICAgZGVmIHNldF9yZXR1cm4oc2VsZiwgZnJhbWUpOgogICAgICAgICIiIlN0b3Agd2hlbiByZXR1cm5pbmcgZnJvbSB0aGUgZ2l2ZW4gZnJhbWUuIiIiCiAgICAgICAgaWYgZnJhbWUuZl9jb2RlLmNvX2ZsYWdzICYgR0VORVJBVE9SX0FORF9DT1JPVVRJTkVfRkxBR1M6CiAgICAgICAgICAgIHNlbGYuX3NldF9zdG9waW5mbyhmcmFtZSwgTm9uZSwgLTEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fc2V0X3N0b3BpbmZvKGZyYW1lLmZfYmFjaywgZnJhbWUpCgogICAgZGVmIHNldF90cmFjZShzZWxmLCBmcmFtZT1Ob25lKToKICAgICAgICAiIiJTdGFydCBkZWJ1Z2dpbmcgZnJvbSBmcmFtZS4KCiAgICAgICAgSWYgZnJhbWUgaXMgbm90IHNwZWNpZmllZCwgZGVidWdnaW5nIHN0YXJ0cyBmcm9tIGNhbGxlcidzIGZyYW1lLgogICAgICAgICIiIgogICAgICAgIGlmIGZyYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjawogICAgICAgIHNlbGYucmVzZXQoKQogICAgICAgIHdoaWxlIGZyYW1lOgogICAgICAgICAgICBmcmFtZS5mX3RyYWNlID0gc2VsZi50cmFjZV9kaXNwYXRjaAogICAgICAgICAgICBzZWxmLmJvdGZyYW1lID0gZnJhbWUKICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5mX2JhY2sKICAgICAgICBzZWxmLnNldF9zdGVwKCkKICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi50cmFjZV9kaXNwYXRjaCkKCiAgICBkZWYgc2V0X2NvbnRpbnVlKHNlbGYpOgogICAgICAgICIiIlN0b3Agb25seSBhdCBicmVha3BvaW50cyBvciB3aGVuIGZpbmlzaGVkLgoKICAgICAgICBJZiB0aGVyZSBhcmUgbm8gYnJlYWtwb2ludHMsIHNldCB0aGUgc3lzdGVtIHRyYWNlIGZ1bmN0aW9uIHRvIE5vbmUuCiAgICAgICAgIiIiCiAgICAgICAgIyBEb24ndCBzdG9wIGV4Y2VwdCBhdCBicmVha3BvaW50cyBvciB3aGVuIGZpbmlzaGVkCiAgICAgICAgc2VsZi5fc2V0X3N0b3BpbmZvKHNlbGYuYm90ZnJhbWUsIE5vbmUsIC0xKQogICAgICAgIGlmIG5vdCBzZWxmLmJyZWFrczoKICAgICAgICAgICAgIyBubyBicmVha3BvaW50czsgcnVuIHdpdGhvdXQgZGVidWdnZXIgb3ZlcmhlYWQKICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCiAgICAgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjawogICAgICAgICAgICB3aGlsZSBmcmFtZSBhbmQgZnJhbWUgaXMgbm90IHNlbGYuYm90ZnJhbWU6CiAgICAgICAgICAgICAgICBkZWwgZnJhbWUuZl90cmFjZQogICAgICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5mX2JhY2sKCiAgICBkZWYgc2V0X3F1aXQoc2VsZik6CiAgICAgICAgIiIiU2V0IHF1aXR0aW5nIGF0dHJpYnV0ZSB0byBUcnVlLgoKICAgICAgICBSYWlzZXMgQmRiUXVpdCBleGNlcHRpb24gaW4gdGhlIG5leHQgY2FsbCB0byBhIGRpc3BhdGNoXyooKSBtZXRob2QuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5zdG9wZnJhbWUgPSBzZWxmLmJvdGZyYW1lCiAgICAgICAgc2VsZi5yZXR1cm5mcmFtZSA9IE5vbmUKICAgICAgICBzZWxmLnF1aXR0aW5nID0gVHJ1ZQogICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQoKICAgICMgRGVyaXZlZCBjbGFzc2VzIGFuZCBjbGllbnRzIGNhbiBjYWxsIHRoZSBmb2xsb3dpbmcgbWV0aG9kcwogICAgIyB0byBtYW5pcHVsYXRlIGJyZWFrcG9pbnRzLiAgVGhlc2UgbWV0aG9kcyByZXR1cm4gYW4KICAgICMgZXJyb3IgbWVzc2FnZSBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywgTm9uZSBpZiBhbGwgaXMgd2VsbC4KICAgICMgU2V0X2JyZWFrIHByaW50cyBvdXQgdGhlIGJyZWFrcG9pbnQgbGluZSBhbmQgZmlsZTpsaW5lbm8uCiAgICAjIENhbGwgc2VsZi5nZXRfKmJyZWFrKigpIHRvIHNlZSB0aGUgYnJlYWtwb2ludHMgb3IgYmV0dGVyCiAgICAjIGZvciBicCBpbiBCcmVha3BvaW50LmJwYnludW1iZXI6IGlmIGJwOiBicC5icHByaW50KCkuCgogICAgZGVmIF9hZGRfdG9fYnJlYWtzKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgogICAgICAgICIiIkFkZCBicmVha3BvaW50IHRvIGJyZWFrcywgaWYgbm90IGFscmVhZHkgdGhlcmUuIiIiCiAgICAgICAgYnBfbGluZW5vcyA9IHNlbGYuYnJlYWtzLnNldGRlZmF1bHQoZmlsZW5hbWUsIFtdKQogICAgICAgIGlmIGxpbmVubyBub3QgaW4gYnBfbGluZW5vczoKICAgICAgICAgICAgYnBfbGluZW5vcy5hcHBlbmQobGluZW5vKQoKICAgIGRlZiBzZXRfYnJlYWsoc2VsZiwgZmlsZW5hbWUsIGxpbmVubywgdGVtcG9yYXJ5PUZhbHNlLCBjb25kPU5vbmUsCiAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lPU5vbmUpOgogICAgICAgICIiIlNldCBhIG5ldyBicmVha3BvaW50IGZvciBmaWxlbmFtZTpsaW5lbm8uCgogICAgICAgIElmIGxpbmVubyBkb2Vzbid0IGV4aXN0IGZvciB0aGUgZmlsZW5hbWUsIHJldHVybiBhbiBlcnJvciBtZXNzYWdlLgogICAgICAgIFRoZSBmaWxlbmFtZSBzaG91bGQgYmUgaW4gY2Fub25pY2FsIGZvcm0uCiAgICAgICAgIiIiCiAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNhbm9uaWMoZmlsZW5hbWUpCiAgICAgICAgaW1wb3J0IGxpbmVjYWNoZSAjIEltcG9ydCBhcyBsYXRlIGFzIHBvc3NpYmxlCiAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCiAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgIHJldHVybiAnTGluZSAlczolZCBkb2VzIG5vdCBleGlzdCcgJSAoZmlsZW5hbWUsIGxpbmVubykKICAgICAgICBzZWxmLl9hZGRfdG9fYnJlYWtzKGZpbGVuYW1lLCBsaW5lbm8pCiAgICAgICAgYnAgPSBCcmVha3BvaW50KGZpbGVuYW1lLCBsaW5lbm8sIHRlbXBvcmFyeSwgY29uZCwgZnVuY25hbWUpCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgX2xvYWRfYnJlYWtzKHNlbGYpOgogICAgICAgICIiIkFwcGx5IGFsbCBicmVha3BvaW50cyAoc2V0IGluIG90aGVyIGluc3RhbmNlcykgdG8gdGhpcyBvbmUuCgogICAgICAgIFBvcHVsYXRlcyB0aGlzIGluc3RhbmNlJ3MgYnJlYWtzIGxpc3QgZnJvbSB0aGUgQnJlYWtwb2ludCBjbGFzcydzCiAgICAgICAgbGlzdCwgd2hpY2ggY2FuIGhhdmUgYnJlYWtwb2ludHMgc2V0IGJ5IGFub3RoZXIgQmRiIGluc3RhbmNlLiBUaGlzCiAgICAgICAgaXMgbmVjZXNzYXJ5IGZvciBpbnRlcmFjdGl2ZSBzZXNzaW9ucyB0byBrZWVwIHRoZSBicmVha3BvaW50cwogICAgICAgIGFjdGl2ZSBhY3Jvc3MgbXVsdGlwbGUgY2FsbHMgdG8gcnVuKCkuCiAgICAgICAgIiIiCiAgICAgICAgZm9yIChmaWxlbmFtZSwgbGluZW5vKSBpbiBCcmVha3BvaW50LmJwbGlzdC5rZXlzKCk6CiAgICAgICAgICAgIHNlbGYuX2FkZF90b19icmVha3MoZmlsZW5hbWUsIGxpbmVubykKCiAgICBkZWYgX3BydW5lX2JyZWFrcyhzZWxmLCBmaWxlbmFtZSwgbGluZW5vKToKICAgICAgICAiIiJQcnVuZSBicmVha3BvaW50cyBmb3IgZmlsZW5hbWU6bGluZW5vLgoKICAgICAgICBBIGxpc3Qgb2YgYnJlYWtwb2ludHMgaXMgbWFpbnRhaW5lZCBpbiB0aGUgQmRiIGluc3RhbmNlIGFuZCBpbgogICAgICAgIHRoZSBCcmVha3BvaW50IGNsYXNzLiAgSWYgYSBicmVha3BvaW50IGluIHRoZSBCZGIgaW5zdGFuY2Ugbm8KICAgICAgICBsb25nZXIgZXhpc3RzIGluIHRoZSBCcmVha3BvaW50IGNsYXNzLCB0aGVuIGl0J3MgcmVtb3ZlZCBmcm9tIHRoZQogICAgICAgIEJkYiBpbnN0YW5jZS4KICAgICAgICAiIiIKICAgICAgICBpZiAoZmlsZW5hbWUsIGxpbmVubykgbm90IGluIEJyZWFrcG9pbnQuYnBsaXN0OgogICAgICAgICAgICBzZWxmLmJyZWFrc1tmaWxlbmFtZV0ucmVtb3ZlKGxpbmVubykKICAgICAgICBpZiBub3Qgc2VsZi5icmVha3NbZmlsZW5hbWVdOgogICAgICAgICAgICBkZWwgc2VsZi5icmVha3NbZmlsZW5hbWVdCgogICAgZGVmIGNsZWFyX2JyZWFrKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgogICAgICAgICIiIkRlbGV0ZSBicmVha3BvaW50cyBmb3IgZmlsZW5hbWU6bGluZW5vLgoKICAgICAgICBJZiBubyBicmVha3BvaW50cyB3ZXJlIHNldCwgcmV0dXJuIGFuIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgIiIiCiAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNhbm9uaWMoZmlsZW5hbWUpCiAgICAgICAgaWYgZmlsZW5hbWUgbm90IGluIHNlbGYuYnJlYWtzOgogICAgICAgICAgICByZXR1cm4gJ1RoZXJlIGFyZSBubyBicmVha3BvaW50cyBpbiAlcycgJSBmaWxlbmFtZQogICAgICAgIGlmIGxpbmVubyBub3QgaW4gc2VsZi5icmVha3NbZmlsZW5hbWVdOgogICAgICAgICAgICByZXR1cm4gJ1RoZXJlIGlzIG5vIGJyZWFrcG9pbnQgYXQgJXM6JWQnICUgKGZpbGVuYW1lLCBsaW5lbm8pCiAgICAgICAgIyBJZiB0aGVyZSdzIG9ubHkgb25lIGJwIGluIHRoZSBsaXN0IGZvciB0aGF0IGZpbGUsbGluZQogICAgICAgICMgcGFpciwgdGhlbiByZW1vdmUgdGhlIGJyZWFrcyBlbnRyeQogICAgICAgIGZvciBicCBpbiBCcmVha3BvaW50LmJwbGlzdFtmaWxlbmFtZSwgbGluZW5vXVs6XToKICAgICAgICAgICAgYnAuZGVsZXRlTWUoKQogICAgICAgIHNlbGYuX3BydW5lX2JyZWFrcyhmaWxlbmFtZSwgbGluZW5vKQogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGNsZWFyX2JwYnludW1iZXIoc2VsZiwgYXJnKToKICAgICAgICAiIiJEZWxldGUgYSBicmVha3BvaW50IGJ5IGl0cyBpbmRleCBpbiBCcmVha3BvaW50LmJwYnludW1iZXIuCgogICAgICAgIElmIGFyZyBpcyBpbnZhbGlkLCByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGJwID0gc2VsZi5nZXRfYnBieW51bWJlcihhcmcpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgogICAgICAgICAgICByZXR1cm4gc3RyKGVycikKICAgICAgICBicC5kZWxldGVNZSgpCiAgICAgICAgc2VsZi5fcHJ1bmVfYnJlYWtzKGJwLmZpbGUsIGJwLmxpbmUpCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgY2xlYXJfYWxsX2ZpbGVfYnJlYWtzKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAiIiJEZWxldGUgYWxsIGJyZWFrcG9pbnRzIGluIGZpbGVuYW1lLgoKICAgICAgICBJZiBub25lIHdlcmUgc2V0LCByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KICAgICAgICAiIiIKICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY2Fub25pYyhmaWxlbmFtZSkKICAgICAgICBpZiBmaWxlbmFtZSBub3QgaW4gc2VsZi5icmVha3M6CiAgICAgICAgICAgIHJldHVybiAnVGhlcmUgYXJlIG5vIGJyZWFrcG9pbnRzIGluICVzJyAlIGZpbGVuYW1lCiAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5icmVha3NbZmlsZW5hbWVdOgogICAgICAgICAgICBibGlzdCA9IEJyZWFrcG9pbnQuYnBsaXN0W2ZpbGVuYW1lLCBsaW5lXQogICAgICAgICAgICBmb3IgYnAgaW4gYmxpc3Q6CiAgICAgICAgICAgICAgICBicC5kZWxldGVNZSgpCiAgICAgICAgZGVsIHNlbGYuYnJlYWtzW2ZpbGVuYW1lXQogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGNsZWFyX2FsbF9icmVha3Moc2VsZik6CiAgICAgICAgIiIiRGVsZXRlIGFsbCBleGlzdGluZyBicmVha3BvaW50cy4KCiAgICAgICAgSWYgbm9uZSB3ZXJlIHNldCwgcmV0dXJuIGFuIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYuYnJlYWtzOgogICAgICAgICAgICByZXR1cm4gJ1RoZXJlIGFyZSBubyBicmVha3BvaW50cycKICAgICAgICBmb3IgYnAgaW4gQnJlYWtwb2ludC5icGJ5bnVtYmVyOgogICAgICAgICAgICBpZiBicDoKICAgICAgICAgICAgICAgIGJwLmRlbGV0ZU1lKCkKICAgICAgICBzZWxmLmJyZWFrcyA9IHt9CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgZ2V0X2JwYnludW1iZXIoc2VsZiwgYXJnKToKICAgICAgICAiIiJSZXR1cm4gYSBicmVha3BvaW50IGJ5IGl0cyBpbmRleCBpbiBCcmVha3BvaW50LmJ5YnBudW1iZXIuCgogICAgICAgIEZvciBpbnZhbGlkIGFyZyB2YWx1ZXMgb3IgaWYgdGhlIGJyZWFrcG9pbnQgZG9lc24ndCBleGlzdCwKICAgICAgICByYWlzZSBhIFZhbHVlRXJyb3IuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGFyZzoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQnJlYWtwb2ludCBudW1iZXIgZXhwZWN0ZWQnKQogICAgICAgIHRyeToKICAgICAgICAgICAgbnVtYmVyID0gaW50KGFyZykKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm9uLW51bWVyaWMgYnJlYWtwb2ludCBudW1iZXIgJXMnICUgYXJnKSBmcm9tIE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGJwID0gQnJlYWtwb2ludC5icGJ5bnVtYmVyW251bWJlcl0KICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQnJlYWtwb2ludCBudW1iZXIgJWQgb3V0IG9mIHJhbmdlJyAlIG51bWJlcikgZnJvbSBOb25lCiAgICAgICAgaWYgYnAgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQnJlYWtwb2ludCAlZCBhbHJlYWR5IGRlbGV0ZWQnICUgbnVtYmVyKQogICAgICAgIHJldHVybiBicAoKICAgIGRlZiBnZXRfYnJlYWsoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlcmUgaXMgYSBicmVha3BvaW50IGZvciBmaWxlbmFtZTpsaW5lbm8uIiIiCiAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNhbm9uaWMoZmlsZW5hbWUpCiAgICAgICAgcmV0dXJuIGZpbGVuYW1lIGluIHNlbGYuYnJlYWtzIGFuZCBcCiAgICAgICAgICAgIGxpbmVubyBpbiBzZWxmLmJyZWFrc1tmaWxlbmFtZV0KCiAgICBkZWYgZ2V0X2JyZWFrcyhzZWxmLCBmaWxlbmFtZSwgbGluZW5vKToKICAgICAgICAiIiJSZXR1cm4gYWxsIGJyZWFrcG9pbnRzIGZvciBmaWxlbmFtZTpsaW5lbm8uCgogICAgICAgIElmIG5vIGJyZWFrcG9pbnRzIGFyZSBzZXQsIHJldHVybiBhbiBlbXB0eSBsaXN0LgogICAgICAgICIiIgogICAgICAgIGZpbGVuYW1lID0gc2VsZi5jYW5vbmljKGZpbGVuYW1lKQogICAgICAgIHJldHVybiBmaWxlbmFtZSBpbiBzZWxmLmJyZWFrcyBhbmQgXAogICAgICAgICAgICBsaW5lbm8gaW4gc2VsZi5icmVha3NbZmlsZW5hbWVdIGFuZCBcCiAgICAgICAgICAgIEJyZWFrcG9pbnQuYnBsaXN0W2ZpbGVuYW1lLCBsaW5lbm9dIG9yIFtdCgogICAgZGVmIGdldF9maWxlX2JyZWFrcyhzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIGFsbCBsaW5lcyB3aXRoIGJyZWFrcG9pbnRzIGZvciBmaWxlbmFtZS4KCiAgICAgICAgSWYgbm8gYnJlYWtwb2ludHMgYXJlIHNldCwgcmV0dXJuIGFuIGVtcHR5IGxpc3QuCiAgICAgICAgIiIiCiAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNhbm9uaWMoZmlsZW5hbWUpCiAgICAgICAgaWYgZmlsZW5hbWUgaW4gc2VsZi5icmVha3M6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmJyZWFrc1tmaWxlbmFtZV0KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gW10KCiAgICBkZWYgZ2V0X2FsbF9icmVha3Moc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGFsbCBicmVha3BvaW50cyB0aGF0IGFyZSBzZXQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuYnJlYWtzCgogICAgIyBEZXJpdmVkIGNsYXNzZXMgYW5kIGNsaWVudHMgY2FuIGNhbGwgdGhlIGZvbGxvd2luZyBtZXRob2QKICAgICMgdG8gZ2V0IGEgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3RhY2sgdHJhY2UuCgogICAgZGVmIGdldF9zdGFjayhzZWxmLCBmLCB0KToKICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIChmcmFtZSwgbGluZW5vKSBpbiBhIHN0YWNrIHRyYWNlIGFuZCBhIHNpemUuCgogICAgICAgIExpc3Qgc3RhcnRzIHdpdGggb3JpZ2luYWwgY2FsbGluZyBmcmFtZSwgaWYgdGhlcmUgaXMgb25lLgogICAgICAgIFNpemUgbWF5IGJlIG51bWJlciBvZiBmcmFtZXMgYWJvdmUgb3IgYmVsb3cgZi4KICAgICAgICAiIiIKICAgICAgICBzdGFjayA9IFtdCiAgICAgICAgaWYgdCBhbmQgdC50Yl9mcmFtZSBpcyBmOgogICAgICAgICAgICB0ID0gdC50Yl9uZXh0CiAgICAgICAgd2hpbGUgZiBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3RhY2suYXBwZW5kKChmLCBmLmZfbGluZW5vKSkKICAgICAgICAgICAgaWYgZiBpcyBzZWxmLmJvdGZyYW1lOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZiA9IGYuZl9iYWNrCiAgICAgICAgc3RhY2sucmV2ZXJzZSgpCiAgICAgICAgaSA9IG1heCgwLCBsZW4oc3RhY2spIC0gMSkKICAgICAgICB3aGlsZSB0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBzdGFjay5hcHBlbmQoKHQudGJfZnJhbWUsIHQudGJfbGluZW5vKSkKICAgICAgICAgICAgdCA9IHQudGJfbmV4dAogICAgICAgIGlmIGYgaXMgTm9uZToKICAgICAgICAgICAgaSA9IG1heCgwLCBsZW4oc3RhY2spIC0gMSkKICAgICAgICByZXR1cm4gc3RhY2ssIGkKCiAgICBkZWYgZm9ybWF0X3N0YWNrX2VudHJ5KHNlbGYsIGZyYW1lX2xpbmVubywgbHByZWZpeD0nOiAnKToKICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBhIHN0YWNrIGVudHJ5LgoKICAgICAgICBUaGUgc3RhY2sgZW50cnkgZnJhbWVfbGluZW5vIGlzIGEgKGZyYW1lLCBsaW5lbm8pIHR1cGxlLiAgVGhlCiAgICAgICAgcmV0dXJuIHN0cmluZyBjb250YWlucyB0aGUgY2Fub25pY2FsIGZpbGVuYW1lLCB0aGUgZnVuY3Rpb24gbmFtZQogICAgICAgIG9yICc8bGFtYmRhPicsIHRoZSBpbnB1dCBhcmd1bWVudHMsIHRoZSByZXR1cm4gdmFsdWUsIGFuZCB0aGUKICAgICAgICBsaW5lIG9mIGNvZGUgKGlmIGl0IGV4aXN0cykuCgogICAgICAgICIiIgogICAgICAgIGltcG9ydCBsaW5lY2FjaGUsIHJlcHJsaWIKICAgICAgICBmcmFtZSwgbGluZW5vID0gZnJhbWVfbGluZW5vCiAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNhbm9uaWMoZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lKQogICAgICAgIHMgPSAnJXMoJXIpJyAlIChmaWxlbmFtZSwgbGluZW5vKQogICAgICAgIGlmIGZyYW1lLmZfY29kZS5jb19uYW1lOgogICAgICAgICAgICBzICs9IGZyYW1lLmZfY29kZS5jb19uYW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcyArPSAiPGxhbWJkYT4iCiAgICAgICAgcyArPSAnKCknCiAgICAgICAgaWYgJ19fcmV0dXJuX18nIGluIGZyYW1lLmZfbG9jYWxzOgogICAgICAgICAgICBydiA9IGZyYW1lLmZfbG9jYWxzWydfX3JldHVybl9fJ10KICAgICAgICAgICAgcyArPSAnLT4nCiAgICAgICAgICAgIHMgKz0gcmVwcmxpYi5yZXByKHJ2KQogICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vLCBmcmFtZS5mX2dsb2JhbHMpCiAgICAgICAgaWYgbGluZToKICAgICAgICAgICAgcyArPSBscHJlZml4ICsgbGluZS5zdHJpcCgpCiAgICAgICAgcmV0dXJuIHMKCiAgICAjIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgY2FsbGVkIGJ5IGNsaWVudHMgdG8gdXNlCiAgICAjIGEgZGVidWdnZXIgdG8gZGVidWcgYSBzdGF0ZW1lbnQgb3IgYW4gZXhwcmVzc2lvbi4KICAgICMgQm90aCBjYW4gYmUgZ2l2ZW4gYXMgYSBzdHJpbmcsIG9yIGEgY29kZSBvYmplY3QuCgogICAgZGVmIHJ1bihzZWxmLCBjbWQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpOgogICAgICAgICIiIkRlYnVnIGEgc3RhdGVtZW50IGV4ZWN1dGVkIHZpYSB0aGUgZXhlYygpIGZ1bmN0aW9uLgoKICAgICAgICBnbG9iYWxzIGRlZmF1bHRzIHRvIF9fbWFpbl9fLmRpY3Q7IGxvY2FscyBkZWZhdWx0cyB0byBnbG9iYWxzLgogICAgICAgICIiIgogICAgICAgIGlmIGdsb2JhbHMgaXMgTm9uZToKICAgICAgICAgICAgaW1wb3J0IF9fbWFpbl9fCiAgICAgICAgICAgIGdsb2JhbHMgPSBfX21haW5fXy5fX2RpY3RfXwogICAgICAgIGlmIGxvY2FscyBpcyBOb25lOgogICAgICAgICAgICBsb2NhbHMgPSBnbG9iYWxzCiAgICAgICAgc2VsZi5yZXNldCgpCiAgICAgICAgaWYgaXNpbnN0YW5jZShjbWQsIHN0cik6CiAgICAgICAgICAgIGNtZCA9IGNvbXBpbGUoY21kLCAiPHN0cmluZz4iLCAiZXhlYyIpCiAgICAgICAgc3lzLnNldHRyYWNlKHNlbGYudHJhY2VfZGlzcGF0Y2gpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBleGVjKGNtZCwgZ2xvYmFscywgbG9jYWxzKQogICAgICAgIGV4Y2VwdCBCZGJRdWl0OgogICAgICAgICAgICBwYXNzCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5xdWl0dGluZyA9IFRydWUKICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCgogICAgZGVmIHJ1bmV2YWwoc2VsZiwgZXhwciwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSk6CiAgICAgICAgIiIiRGVidWcgYW4gZXhwcmVzc2lvbiBleGVjdXRlZCB2aWEgdGhlIGV2YWwoKSBmdW5jdGlvbi4KCiAgICAgICAgZ2xvYmFscyBkZWZhdWx0cyB0byBfX21haW5fXy5kaWN0OyBsb2NhbHMgZGVmYXVsdHMgdG8gZ2xvYmFscy4KICAgICAgICAiIiIKICAgICAgICBpZiBnbG9iYWxzIGlzIE5vbmU6CiAgICAgICAgICAgIGltcG9ydCBfX21haW5fXwogICAgICAgICAgICBnbG9iYWxzID0gX19tYWluX18uX19kaWN0X18KICAgICAgICBpZiBsb2NhbHMgaXMgTm9uZToKICAgICAgICAgICAgbG9jYWxzID0gZ2xvYmFscwogICAgICAgIHNlbGYucmVzZXQoKQogICAgICAgIHN5cy5zZXR0cmFjZShzZWxmLnRyYWNlX2Rpc3BhdGNoKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGV2YWwoZXhwciwgZ2xvYmFscywgbG9jYWxzKQogICAgICAgIGV4Y2VwdCBCZGJRdWl0OgogICAgICAgICAgICBwYXNzCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5xdWl0dGluZyA9IFRydWUKICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCgogICAgZGVmIHJ1bmN0eChzZWxmLCBjbWQsIGdsb2JhbHMsIGxvY2Fscyk6CiAgICAgICAgIiIiRm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LiAgRGVmZXJzIHRvIHJ1bigpLiIiIgogICAgICAgICMgQi9XIGNvbXBhdGliaWxpdHkKICAgICAgICBzZWxmLnJ1bihjbWQsIGdsb2JhbHMsIGxvY2FscykKCiAgICAjIFRoaXMgbWV0aG9kIGlzIG1vcmUgdXNlZnVsIHRvIGRlYnVnIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuCgogICAgZGVmIHJ1bmNhbGwoc2VsZiwgZnVuYywgLywgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIiIiRGVidWcgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbC4KCiAgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5yZXNldCgpCiAgICAgICAgc3lzLnNldHRyYWNlKHNlbGYudHJhY2VfZGlzcGF0Y2gpCiAgICAgICAgcmVzID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgcmVzID0gZnVuYygqYXJncywgKiprd2RzKQogICAgICAgIGV4Y2VwdCBCZGJRdWl0OgogICAgICAgICAgICBwYXNzCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5xdWl0dGluZyA9IFRydWUKICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCiAgICAgICAgcmV0dXJuIHJlcwoKCmRlZiBzZXRfdHJhY2UoKToKICAgICIiIlN0YXJ0IGRlYnVnZ2luZyB3aXRoIGEgQmRiIGluc3RhbmNlIGZyb20gdGhlIGNhbGxlcidzIGZyYW1lLiIiIgogICAgQmRiKCkuc2V0X3RyYWNlKCkKCgpjbGFzcyBCcmVha3BvaW50OgogICAgIiIiQnJlYWtwb2ludCBjbGFzcy4KCiAgICBJbXBsZW1lbnRzIHRlbXBvcmFyeSBicmVha3BvaW50cywgaWdub3JlIGNvdW50cywgZGlzYWJsaW5nIGFuZAogICAgKHJlKS1lbmFibGluZywgYW5kIGNvbmRpdGlvbmFscy4KCiAgICBCcmVha3BvaW50cyBhcmUgaW5kZXhlZCBieSBudW1iZXIgdGhyb3VnaCBicGJ5bnVtYmVyIGFuZCBieQogICAgdGhlIChmaWxlLCBsaW5lKSB0dXBsZSB1c2luZyBicGxpc3QuICBUaGUgZm9ybWVyIHBvaW50cyB0byBhCiAgICBzaW5nbGUgaW5zdGFuY2Ugb2YgY2xhc3MgQnJlYWtwb2ludC4gIFRoZSBsYXR0ZXIgcG9pbnRzIHRvIGEKICAgIGxpc3Qgb2Ygc3VjaCBpbnN0YW5jZXMgc2luY2UgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUKICAgIGJyZWFrcG9pbnQgcGVyIGxpbmUuCgogICAgV2hlbiBjcmVhdGluZyBhIGJyZWFrcG9pbnQsIGl0cyBhc3NvY2lhdGVkIGZpbGVuYW1lIHNob3VsZCBiZQogICAgaW4gY2Fub25pY2FsIGZvcm0uICBJZiBmdW5jbmFtZSBpcyBkZWZpbmVkLCBhIGJyZWFrcG9pbnQgaGl0IHdpbGwgYmUKICAgIGNvdW50ZWQgd2hlbiB0aGUgZmlyc3QgbGluZSBvZiB0aGF0IGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLiAgQQogICAgY29uZGl0aW9uYWwgYnJlYWtwb2ludCBhbHdheXMgY291bnRzIGEgaGl0LgogICAgIiIiCgogICAgIyBYWFggS2VlcGluZyBzdGF0ZSBpbiB0aGUgY2xhc3MgaXMgYSBtaXN0YWtlIC0tIHRoaXMgbWVhbnMKICAgICMgeW91IGNhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgYWN0aXZlIEJkYiBpbnN0YW5jZS4KCiAgICBuZXh0ID0gMSAgICAgICAgIyBOZXh0IGJwIHRvIGJlIGFzc2lnbmVkCiAgICBicGxpc3QgPSB7fSAgICAgIyBpbmRleGVkIGJ5IChmaWxlLCBsaW5lbm8pIHR1cGxlCiAgICBicGJ5bnVtYmVyID0gW05vbmVdICMgRWFjaCBlbnRyeSBpcyBOb25lIG9yIGFuIGluc3RhbmNlIG9mIEJwdAogICAgICAgICAgICAgICAgIyBpbmRleCAwIGlzIHVudXNlZCwgZXhjZXB0IGZvciBtYXJraW5nIGFuCiAgICAgICAgICAgICAgICAjIGVmZmVjdGl2ZSBicmVhayAuLi4uIHNlZSBlZmZlY3RpdmUoKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBsaW5lLCB0ZW1wb3Jhcnk9RmFsc2UsIGNvbmQ9Tm9uZSwgZnVuY25hbWU9Tm9uZSk6CiAgICAgICAgc2VsZi5mdW5jbmFtZSA9IGZ1bmNuYW1lCiAgICAgICAgIyBOZWVkZWQgaWYgZnVuY25hbWUgaXMgbm90IE5vbmUuCiAgICAgICAgc2VsZi5mdW5jX2ZpcnN0X2V4ZWN1dGFibGVfbGluZSA9IE5vbmUKICAgICAgICBzZWxmLmZpbGUgPSBmaWxlICAgICMgVGhpcyBiZXR0ZXIgYmUgaW4gY2Fub25pY2FsIGZvcm0hCiAgICAgICAgc2VsZi5saW5lID0gbGluZQogICAgICAgIHNlbGYudGVtcG9yYXJ5ID0gdGVtcG9yYXJ5CiAgICAgICAgc2VsZi5jb25kID0gY29uZAogICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUKICAgICAgICBzZWxmLmlnbm9yZSA9IDAKICAgICAgICBzZWxmLmhpdHMgPSAwCiAgICAgICAgc2VsZi5udW1iZXIgPSBCcmVha3BvaW50Lm5leHQKICAgICAgICBCcmVha3BvaW50Lm5leHQgKz0gMQogICAgICAgICMgQnVpbGQgdGhlIHR3byBsaXN0cwogICAgICAgIHNlbGYuYnBieW51bWJlci5hcHBlbmQoc2VsZikKICAgICAgICBpZiAoZmlsZSwgbGluZSkgaW4gc2VsZi5icGxpc3Q6CiAgICAgICAgICAgIHNlbGYuYnBsaXN0W2ZpbGUsIGxpbmVdLmFwcGVuZChzZWxmKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuYnBsaXN0W2ZpbGUsIGxpbmVdID0gW3NlbGZdCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIGNsZWFyQnJlYWtwb2ludHMoKToKICAgICAgICBCcmVha3BvaW50Lm5leHQgPSAxCiAgICAgICAgQnJlYWtwb2ludC5icGxpc3QgPSB7fQogICAgICAgIEJyZWFrcG9pbnQuYnBieW51bWJlciA9IFtOb25lXQoKICAgIGRlZiBkZWxldGVNZShzZWxmKToKICAgICAgICAiIiJEZWxldGUgdGhlIGJyZWFrcG9pbnQgZnJvbSB0aGUgbGlzdCBhc3NvY2lhdGVkIHRvIGEgZmlsZTpsaW5lLgoKICAgICAgICBJZiBpdCBpcyB0aGUgbGFzdCBicmVha3BvaW50IGluIHRoYXQgcG9zaXRpb24sIGl0IGFsc28gZGVsZXRlcwogICAgICAgIHRoZSBlbnRyeSBmb3IgdGhlIGZpbGU6bGluZS4KICAgICAgICAiIiIKCiAgICAgICAgaW5kZXggPSAoc2VsZi5maWxlLCBzZWxmLmxpbmUpCiAgICAgICAgc2VsZi5icGJ5bnVtYmVyW3NlbGYubnVtYmVyXSA9IE5vbmUgICAjIE5vIGxvbmdlciBpbiBsaXN0CiAgICAgICAgc2VsZi5icGxpc3RbaW5kZXhdLnJlbW92ZShzZWxmKQogICAgICAgIGlmIG5vdCBzZWxmLmJwbGlzdFtpbmRleF06CiAgICAgICAgICAgICMgTm8gbW9yZSBicCBmb3IgdGhpcyBmOmwgY29tYm8KICAgICAgICAgICAgZGVsIHNlbGYuYnBsaXN0W2luZGV4XQoKICAgIGRlZiBlbmFibGUoc2VsZik6CiAgICAgICAgIiIiTWFyayB0aGUgYnJlYWtwb2ludCBhcyBlbmFibGVkLiIiIgogICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUKCiAgICBkZWYgZGlzYWJsZShzZWxmKToKICAgICAgICAiIiJNYXJrIHRoZSBicmVha3BvaW50IGFzIGRpc2FibGVkLiIiIgogICAgICAgIHNlbGYuZW5hYmxlZCA9IEZhbHNlCgogICAgZGVmIGJwcHJpbnQoc2VsZiwgb3V0PU5vbmUpOgogICAgICAgICIiIlByaW50IHRoZSBvdXRwdXQgb2YgYnBmb3JtYXQoKS4KCiAgICAgICAgVGhlIG9wdGlvbmFsIG91dCBhcmd1bWVudCBkaXJlY3RzIHdoZXJlIHRoZSBvdXRwdXQgaXMgc2VudAogICAgICAgIGFuZCBkZWZhdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgb3V0IGlzIE5vbmU6CiAgICAgICAgICAgIG91dCA9IHN5cy5zdGRvdXQKICAgICAgICBwcmludChzZWxmLmJwZm9ybWF0KCksIGZpbGU9b3V0KQoKICAgIGRlZiBicGZvcm1hdChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJlYWtwb2ludC4KCiAgICAgICAgVGhlIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBicmVha3BvaW50IG51bWJlciwgdGVtcG9yYXJ5CiAgICAgICAgc3RhdHVzLCBmaWxlOmxpbmUgcG9zaXRpb24sIGJyZWFrIGNvbmRpdGlvbiwgbnVtYmVyIG9mIHRpbWVzIHRvCiAgICAgICAgaWdub3JlLCBhbmQgbnVtYmVyIG9mIHRpbWVzIGhpdC4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi50ZW1wb3Jhcnk6CiAgICAgICAgICAgIGRpc3AgPSAnZGVsICAnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGlzcCA9ICdrZWVwICcKICAgICAgICBpZiBzZWxmLmVuYWJsZWQ6CiAgICAgICAgICAgIGRpc3AgPSBkaXNwICsgJ3llcyAgJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRpc3AgPSBkaXNwICsgJ25vICAgJwogICAgICAgIHJldCA9ICclLTRkYnJlYWtwb2ludCAgICVzIGF0ICVzOiVkJyAlIChzZWxmLm51bWJlciwgZGlzcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlLCBzZWxmLmxpbmUpCiAgICAgICAgaWYgc2VsZi5jb25kOgogICAgICAgICAgICByZXQgKz0gJ1xuXHRzdG9wIG9ubHkgaWYgJXMnICUgKHNlbGYuY29uZCwpCiAgICAgICAgaWYgc2VsZi5pZ25vcmU6CiAgICAgICAgICAgIHJldCArPSAnXG5cdGlnbm9yZSBuZXh0ICVkIGhpdHMnICUgKHNlbGYuaWdub3JlLCkKICAgICAgICBpZiBzZWxmLmhpdHM6CiAgICAgICAgICAgIGlmIHNlbGYuaGl0cyA+IDE6CiAgICAgICAgICAgICAgICBzcyA9ICdzJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc3MgPSAnJwogICAgICAgICAgICByZXQgKz0gJ1xuXHRicmVha3BvaW50IGFscmVhZHkgaGl0ICVkIHRpbWUlcycgJSAoc2VsZi5oaXRzLCBzcykKICAgICAgICByZXR1cm4gcmV0CgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIlJldHVybiBhIGNvbmRlbnNlZCBkZXNjcmlwdGlvbiBvZiB0aGUgYnJlYWtwb2ludC4iCiAgICAgICAgcmV0dXJuICdicmVha3BvaW50ICVzIGF0ICVzOiVzJyAlIChzZWxmLm51bWJlciwgc2VsZi5maWxlLCBzZWxmLmxpbmUpCgojIC0tLS0tLS0tLS0tZW5kIG9mIEJyZWFrcG9pbnQgY2xhc3MtLS0tLS0tLS0tCgoKZGVmIGNoZWNrZnVuY25hbWUoYiwgZnJhbWUpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgYnJlYWsgc2hvdWxkIGhhcHBlbiBoZXJlLgoKICAgIFdoZXRoZXIgYSBicmVhayBzaG91bGQgaGFwcGVuIGRlcGVuZHMgb24gdGhlIHdheSB0aGF0IGIgKHRoZSBicmVha3BvaW50KQogICAgd2FzIHNldC4gIElmIGl0IHdhcyBzZXQgdmlhIGxpbmUgbnVtYmVyLCBjaGVjayBpZiBiLmxpbmUgaXMgdGhlIHNhbWUgYXMKICAgIHRoZSBvbmUgaW4gdGhlIGZyYW1lLiAgSWYgaXQgd2FzIHNldCB2aWEgZnVuY3Rpb24gbmFtZSwgY2hlY2sgaWYgdGhpcyBpcwogICAgdGhlIHJpZ2h0IGZ1bmN0aW9uIGFuZCBpZiBpdCBpcyBvbiB0aGUgZmlyc3QgZXhlY3V0YWJsZSBsaW5lLgogICAgIiIiCiAgICBpZiBub3QgYi5mdW5jbmFtZToKICAgICAgICAjIEJyZWFrcG9pbnQgd2FzIHNldCB2aWEgbGluZSBudW1iZXIuCiAgICAgICAgaWYgYi5saW5lICE9IGZyYW1lLmZfbGluZW5vOgogICAgICAgICAgICAjIEJyZWFrcG9pbnQgd2FzIHNldCBhdCBhIGxpbmUgd2l0aCBhIGRlZiBzdGF0ZW1lbnQgYW5kIHRoZSBmdW5jdGlvbgogICAgICAgICAgICAjIGRlZmluZWQgaXMgY2FsbGVkOiBkb24ndCBicmVhay4KICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICAjIEJyZWFrcG9pbnQgc2V0IHZpYSBmdW5jdGlvbiBuYW1lLgogICAgaWYgZnJhbWUuZl9jb2RlLmNvX25hbWUgIT0gYi5mdW5jbmFtZToKICAgICAgICAjIEl0J3Mgbm90IGEgZnVuY3Rpb24gY2FsbCwgYnV0IHJhdGhlciBleGVjdXRpb24gb2YgZGVmIHN0YXRlbWVudC4KICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAjIFdlIGFyZSBpbiB0aGUgcmlnaHQgZnJhbWUuCiAgICBpZiBub3QgYi5mdW5jX2ZpcnN0X2V4ZWN1dGFibGVfbGluZToKICAgICAgICAjIFRoZSBmdW5jdGlvbiBpcyBlbnRlcmVkIGZvciB0aGUgMXN0IHRpbWUuCiAgICAgICAgYi5mdW5jX2ZpcnN0X2V4ZWN1dGFibGVfbGluZSA9IGZyYW1lLmZfbGluZW5vCgogICAgaWYgYi5mdW5jX2ZpcnN0X2V4ZWN1dGFibGVfbGluZSAhPSBmcmFtZS5mX2xpbmVubzoKICAgICAgICAjIEJ1dCB3ZSBhcmUgbm90IGF0IHRoZSBmaXJzdCBsaW5lIG51bWJlcjogZG9uJ3QgYnJlYWsuCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gVHJ1ZQoKCmRlZiBlZmZlY3RpdmUoZmlsZSwgbGluZSwgZnJhbWUpOgogICAgIiIiUmV0dXJuIChhY3RpdmUgYnJlYWtwb2ludCwgZGVsZXRlIHRlbXBvcmFyeSBmbGFnKSBvciAoTm9uZSwgTm9uZSkgYXMKICAgICAgIGJyZWFrcG9pbnQgdG8gYWN0IHVwb24uCgogICAgICAgVGhlICJhY3RpdmUgYnJlYWtwb2ludCIgaXMgdGhlIGZpcnN0IGVudHJ5IGluIGJwbGlzdFtsaW5lLCBmaWxlXSAod2hpY2gKICAgICAgIG11c3QgZXhpc3QpIHRoYXQgaXMgZW5hYmxlZCwgZm9yIHdoaWNoIGNoZWNrZnVuY25hbWUgaXMgVHJ1ZSwgYW5kIHRoYXQKICAgICAgIGhhcyBuZWl0aGVyIGEgRmFsc2UgY29uZGl0aW9uIG5vciBhIHBvc2l0aXZlIGlnbm9yZSBjb3VudC4gIFRoZSBmbGFnLAogICAgICAgbWVhbmluZyB0aGF0IGEgdGVtcG9yYXJ5IGJyZWFrcG9pbnQgc2hvdWxkIGJlIGRlbGV0ZWQsIGlzIEZhbHNlIG9ubHkKICAgICAgIHdoZW4gdGhlIGNvbmRpaW9uIGNhbm5vdCBiZSBldmFsdWF0ZWQgKGluIHdoaWNoIGNhc2UsIGlnbm9yZSBjb3VudCBpcwogICAgICAgaWdub3JlZCkuCgogICAgICAgSWYgbm8gc3VjaCBlbnRyeSBleGlzdHMsIHRoZW4gKE5vbmUsIE5vbmUpIGlzIHJldHVybmVkLgogICAgIiIiCiAgICBwb3NzaWJsZXMgPSBCcmVha3BvaW50LmJwbGlzdFtmaWxlLCBsaW5lXQogICAgZm9yIGIgaW4gcG9zc2libGVzOgogICAgICAgIGlmIG5vdCBiLmVuYWJsZWQ6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgbm90IGNoZWNrZnVuY25hbWUoYiwgZnJhbWUpOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgICMgQ291bnQgZXZlcnkgaGl0IHdoZW4gYnAgaXMgZW5hYmxlZAogICAgICAgIGIuaGl0cyArPSAxCiAgICAgICAgaWYgbm90IGIuY29uZDoKICAgICAgICAgICAgIyBJZiB1bmNvbmRpdGlvbmFsLCBhbmQgaWdub3JpbmcgZ28gb24gdG8gbmV4dCwgZWxzZSBicmVhawogICAgICAgICAgICBpZiBiLmlnbm9yZSA+IDA6CiAgICAgICAgICAgICAgICBiLmlnbm9yZSAtPSAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBicmVha3BvaW50IGFuZCBtYXJrZXIgdGhhdCBpdCdzIG9rIHRvIGRlbGV0ZSBpZiB0ZW1wb3JhcnkKICAgICAgICAgICAgICAgIHJldHVybiAoYiwgVHJ1ZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIENvbmRpdGlvbmFsIGJwLgogICAgICAgICAgICAjIElnbm9yZSBjb3VudCBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgYnB0IGhpdHMgd2hlcmUgdGhlCiAgICAgICAgICAgICMgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB2YWwgPSBldmFsKGIuY29uZCwgZnJhbWUuZl9nbG9iYWxzLCBmcmFtZS5mX2xvY2FscykKICAgICAgICAgICAgICAgIGlmIHZhbDoKICAgICAgICAgICAgICAgICAgICBpZiBiLmlnbm9yZSA+IDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGIuaWdub3JlIC09IDEKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoYiwgVHJ1ZSkKICAgICAgICAgICAgICAgICMgZWxzZToKICAgICAgICAgICAgICAgICMgICBjb250aW51ZQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAjIGlmIGV2YWwgZmFpbHMsIG1vc3QgY29uc2VydmF0aXZlIHRoaW5nIGlzIHRvIHN0b3Agb24KICAgICAgICAgICAgICAgICMgYnJlYWtwb2ludCByZWdhcmRsZXNzIG9mIGlnbm9yZSBjb3VudC4gIERvbid0IGRlbGV0ZQogICAgICAgICAgICAgICAgIyB0ZW1wb3JhcnksIGFzIGFub3RoZXIgaGludCB0byB1c2VyLgogICAgICAgICAgICAgICAgcmV0dXJuIChiLCBGYWxzZSkKICAgIHJldHVybiAoTm9uZSwgTm9uZSkKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tIHRlc3RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNsYXNzIFRkYihCZGIpOgogICAgZGVmIHVzZXJfY2FsbChzZWxmLCBmcmFtZSwgYXJncyk6CiAgICAgICAgbmFtZSA9IGZyYW1lLmZfY29kZS5jb19uYW1lCiAgICAgICAgaWYgbm90IG5hbWU6IG5hbWUgPSAnPz8/JwogICAgICAgIHByaW50KCcrKysgY2FsbCcsIG5hbWUsIGFyZ3MpCiAgICBkZWYgdXNlcl9saW5lKHNlbGYsIGZyYW1lKToKICAgICAgICBpbXBvcnQgbGluZWNhY2hlCiAgICAgICAgbmFtZSA9IGZyYW1lLmZfY29kZS5jb19uYW1lCiAgICAgICAgaWYgbm90IG5hbWU6IG5hbWUgPSAnPz8/JwogICAgICAgIGZuID0gc2VsZi5jYW5vbmljKGZyYW1lLmZfY29kZS5jb19maWxlbmFtZSkKICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZm4sIGZyYW1lLmZfbGluZW5vLCBmcmFtZS5mX2dsb2JhbHMpCiAgICAgICAgcHJpbnQoJysrKycsIGZuLCBmcmFtZS5mX2xpbmVubywgbmFtZSwgJzonLCBsaW5lLnN0cmlwKCkpCiAgICBkZWYgdXNlcl9yZXR1cm4oc2VsZiwgZnJhbWUsIHJldHZhbCk6CiAgICAgICAgcHJpbnQoJysrKyByZXR1cm4nLCByZXR2YWwpCiAgICBkZWYgdXNlcl9leGNlcHRpb24oc2VsZiwgZnJhbWUsIGV4Y19zdHVmZik6CiAgICAgICAgcHJpbnQoJysrKyBleGNlcHRpb24nLCBleGNfc3R1ZmYpCiAgICAgICAgc2VsZi5zZXRfY29udGludWUoKQoKZGVmIGZvbyhuKToKICAgIHByaW50KCdmb28oJywgbiwgJyknKQogICAgeCA9IGJhcihuKjEwKQogICAgcHJpbnQoJ2JhciByZXR1cm5lZCcsIHgpCgpkZWYgYmFyKGEpOgogICAgcHJpbnQoJ2JhcignLCBhLCAnKScpCiAgICByZXR1cm4gYS8yCgpkZWYgdGVzdCgpOgogICAgdCA9IFRkYigpCiAgICB0LnJ1bignaW1wb3J0IGJkYjsgYmRiLmZvbygxMCknKQpQSwMEFAAAAAAAAiCjVov7WZU/DAAAPwwAAAkAAABiaXNlY3QucHkiIiJCaXNlY3Rpb24gYWxnb3JpdGhtcy4iIiIKCgpkZWYgaW5zb3J0X3JpZ2h0KGEsIHgsIGxvPTAsIGhpPU5vbmUsICosIGtleT1Ob25lKToKICAgICIiIkluc2VydCBpdGVtIHggaW4gbGlzdCBhLCBhbmQga2VlcCBpdCBzb3J0ZWQgYXNzdW1pbmcgYSBpcyBzb3J0ZWQuCgogICAgSWYgeCBpcyBhbHJlYWR5IGluIGEsIGluc2VydCBpdCB0byB0aGUgcmlnaHQgb2YgdGhlIHJpZ2h0bW9zdCB4LgoKICAgIE9wdGlvbmFsIGFyZ3MgbG8gKGRlZmF1bHQgMCkgYW5kIGhpIChkZWZhdWx0IGxlbihhKSkgYm91bmQgdGhlCiAgICBzbGljZSBvZiBhIHRvIGJlIHNlYXJjaGVkLgogICAgIiIiCiAgICBpZiBrZXkgaXMgTm9uZToKICAgICAgICBsbyA9IGJpc2VjdF9yaWdodChhLCB4LCBsbywgaGkpCiAgICBlbHNlOgogICAgICAgIGxvID0gYmlzZWN0X3JpZ2h0KGEsIGtleSh4KSwgbG8sIGhpLCBrZXk9a2V5KQogICAgYS5pbnNlcnQobG8sIHgpCgoKZGVmIGJpc2VjdF9yaWdodChhLCB4LCBsbz0wLCBoaT1Ob25lLCAqLCBrZXk9Tm9uZSk6CiAgICAiIiJSZXR1cm4gdGhlIGluZGV4IHdoZXJlIHRvIGluc2VydCBpdGVtIHggaW4gbGlzdCBhLCBhc3N1bWluZyBhIGlzIHNvcnRlZC4KCiAgICBUaGUgcmV0dXJuIHZhbHVlIGkgaXMgc3VjaCB0aGF0IGFsbCBlIGluIGFbOmldIGhhdmUgZSA8PSB4LCBhbmQgYWxsIGUgaW4KICAgIGFbaTpdIGhhdmUgZSA+IHguICBTbyBpZiB4IGFscmVhZHkgYXBwZWFycyBpbiB0aGUgbGlzdCwgYS5pbnNlcnQoaSwgeCkgd2lsbAogICAgaW5zZXJ0IGp1c3QgYWZ0ZXIgdGhlIHJpZ2h0bW9zdCB4IGFscmVhZHkgdGhlcmUuCgogICAgT3B0aW9uYWwgYXJncyBsbyAoZGVmYXVsdCAwKSBhbmQgaGkgKGRlZmF1bHQgbGVuKGEpKSBib3VuZCB0aGUKICAgIHNsaWNlIG9mIGEgdG8gYmUgc2VhcmNoZWQuCiAgICAiIiIKCiAgICBpZiBsbyA8IDA6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbG8gbXVzdCBiZSBub24tbmVnYXRpdmUnKQogICAgaWYgaGkgaXMgTm9uZToKICAgICAgICBoaSA9IGxlbihhKQogICAgIyBOb3RlLCB0aGUgY29tcGFyaXNvbiB1c2VzICI8IiB0byBtYXRjaCB0aGUKICAgICMgX19sdF9fKCkgbG9naWMgaW4gbGlzdC5zb3J0KCkgYW5kIGluIGhlYXBxLgogICAgaWYga2V5IGlzIE5vbmU6CiAgICAgICAgd2hpbGUgbG8gPCBoaToKICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpIC8vIDIKICAgICAgICAgICAgaWYgeCA8IGFbbWlkXToKICAgICAgICAgICAgICAgIGhpID0gbWlkCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDEKICAgIGVsc2U6CiAgICAgICAgd2hpbGUgbG8gPCBoaToKICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpIC8vIDIKICAgICAgICAgICAgaWYgeCA8IGtleShhW21pZF0pOgogICAgICAgICAgICAgICAgaGkgPSBtaWQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGxvID0gbWlkICsgMQogICAgcmV0dXJuIGxvCgoKZGVmIGluc29ydF9sZWZ0KGEsIHgsIGxvPTAsIGhpPU5vbmUsICosIGtleT1Ob25lKToKICAgICIiIkluc2VydCBpdGVtIHggaW4gbGlzdCBhLCBhbmQga2VlcCBpdCBzb3J0ZWQgYXNzdW1pbmcgYSBpcyBzb3J0ZWQuCgogICAgSWYgeCBpcyBhbHJlYWR5IGluIGEsIGluc2VydCBpdCB0byB0aGUgbGVmdCBvZiB0aGUgbGVmdG1vc3QgeC4KCiAgICBPcHRpb25hbCBhcmdzIGxvIChkZWZhdWx0IDApIGFuZCBoaSAoZGVmYXVsdCBsZW4oYSkpIGJvdW5kIHRoZQogICAgc2xpY2Ugb2YgYSB0byBiZSBzZWFyY2hlZC4KICAgICIiIgoKICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgIGxvID0gYmlzZWN0X2xlZnQoYSwgeCwgbG8sIGhpKQogICAgZWxzZToKICAgICAgICBsbyA9IGJpc2VjdF9sZWZ0KGEsIGtleSh4KSwgbG8sIGhpLCBrZXk9a2V5KQogICAgYS5pbnNlcnQobG8sIHgpCgpkZWYgYmlzZWN0X2xlZnQoYSwgeCwgbG89MCwgaGk9Tm9uZSwgKiwga2V5PU5vbmUpOgogICAgIiIiUmV0dXJuIHRoZSBpbmRleCB3aGVyZSB0byBpbnNlcnQgaXRlbSB4IGluIGxpc3QgYSwgYXNzdW1pbmcgYSBpcyBzb3J0ZWQuCgogICAgVGhlIHJldHVybiB2YWx1ZSBpIGlzIHN1Y2ggdGhhdCBhbGwgZSBpbiBhWzppXSBoYXZlIGUgPCB4LCBhbmQgYWxsIGUgaW4KICAgIGFbaTpdIGhhdmUgZSA+PSB4LiAgU28gaWYgeCBhbHJlYWR5IGFwcGVhcnMgaW4gdGhlIGxpc3QsIGEuaW5zZXJ0KGksIHgpIHdpbGwKICAgIGluc2VydCBqdXN0IGJlZm9yZSB0aGUgbGVmdG1vc3QgeCBhbHJlYWR5IHRoZXJlLgoKICAgIE9wdGlvbmFsIGFyZ3MgbG8gKGRlZmF1bHQgMCkgYW5kIGhpIChkZWZhdWx0IGxlbihhKSkgYm91bmQgdGhlCiAgICBzbGljZSBvZiBhIHRvIGJlIHNlYXJjaGVkLgogICAgIiIiCgogICAgaWYgbG8gPCAwOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xvIG11c3QgYmUgbm9uLW5lZ2F0aXZlJykKICAgIGlmIGhpIGlzIE5vbmU6CiAgICAgICAgaGkgPSBsZW4oYSkKICAgICMgTm90ZSwgdGhlIGNvbXBhcmlzb24gdXNlcyAiPCIgdG8gbWF0Y2ggdGhlCiAgICAjIF9fbHRfXygpIGxvZ2ljIGluIGxpc3Quc29ydCgpIGFuZCBpbiBoZWFwcS4KICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgIHdoaWxlIGxvIDwgaGk6CiAgICAgICAgICAgIG1pZCA9IChsbyArIGhpKSAvLyAyCiAgICAgICAgICAgIGlmIGFbbWlkXSA8IHg6CiAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGhpID0gbWlkCiAgICBlbHNlOgogICAgICAgIHdoaWxlIGxvIDwgaGk6CiAgICAgICAgICAgIG1pZCA9IChsbyArIGhpKSAvLyAyCiAgICAgICAgICAgIGlmIGtleShhW21pZF0pIDwgeDoKICAgICAgICAgICAgICAgIGxvID0gbWlkICsgMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaGkgPSBtaWQKICAgIHJldHVybiBsbwoKCiMgT3ZlcndyaXRlIGFib3ZlIGRlZmluaXRpb25zIHdpdGggYSBmYXN0IEMgaW1wbGVtZW50YXRpb24KdHJ5OgogICAgZnJvbSBfYmlzZWN0IGltcG9ydCAqCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKCiMgQ3JlYXRlIGFsaWFzZXMKYmlzZWN0ID0gYmlzZWN0X3JpZ2h0Cmluc29ydCA9IGluc29ydF9yaWdodApQSwMEFAAAAAAAAiCjVpfVAVtHLgAARy4AAAYAAABiejIucHkiIiJJbnRlcmZhY2UgdG8gdGhlIGxpYmJ6aXAyIGNvbXByZXNzaW9uIGxpYnJhcnkuCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGZpbGUgaW50ZXJmYWNlLCBjbGFzc2VzIGZvciBpbmNyZW1lbnRhbAooZGUpY29tcHJlc3Npb24sIGFuZCBmdW5jdGlvbnMgZm9yIG9uZS1zaG90IChkZSljb21wcmVzc2lvbi4KIiIiCgpfX2FsbF9fID0gWyJCWjJGaWxlIiwgIkJaMkNvbXByZXNzb3IiLCAiQloyRGVjb21wcmVzc29yIiwKICAgICAgICAgICAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIl0KCl9fYXV0aG9yX18gPSAiTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPiIKCmZyb20gYnVpbHRpbnMgaW1wb3J0IG9wZW4gYXMgX2J1aWx0aW5fb3BlbgppbXBvcnQgaW8KaW1wb3J0IG9zCmltcG9ydCBfY29tcHJlc3Npb24KCmZyb20gX2J6MiBpbXBvcnQgQloyQ29tcHJlc3NvciwgQloyRGVjb21wcmVzc29yCgoKX01PREVfQ0xPU0VEICAgPSAwCl9NT0RFX1JFQUQgICAgID0gMQojIFZhbHVlIDIgbm8gbG9uZ2VyIHVzZWQKX01PREVfV1JJVEUgICAgPSAzCgoKY2xhc3MgQloyRmlsZShfY29tcHJlc3Npb24uQmFzZVN0cmVhbSk6CgogICAgIiIiQSBmaWxlIG9iamVjdCBwcm92aWRpbmcgdHJhbnNwYXJlbnQgYnppcDIgKGRlKWNvbXByZXNzaW9uLgoKICAgIEEgQloyRmlsZSBjYW4gYWN0IGFzIGEgd3JhcHBlciBmb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIG9yIHJlZmVyCiAgICBkaXJlY3RseSB0byBhIG5hbWVkIGZpbGUgb24gZGlzay4KCiAgICBOb3RlIHRoYXQgQloyRmlsZSBwcm92aWRlcyBhICpiaW5hcnkqIGZpbGUgaW50ZXJmYWNlIC0gZGF0YSByZWFkIGlzCiAgICByZXR1cm5lZCBhcyBieXRlcywgYW5kIGRhdGEgdG8gYmUgd3JpdHRlbiBzaG91bGQgYmUgZ2l2ZW4gYXMgYnl0ZXMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9InIiLCAqLCBjb21wcmVzc2xldmVsPTkpOgogICAgICAgICIiIk9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUuCgogICAgICAgIElmIGZpbGVuYW1lIGlzIGEgc3RyLCBieXRlcywgb3IgUGF0aExpa2Ugb2JqZWN0LCBpdCBnaXZlcyB0aGUKICAgICAgICBuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlCiAgICAgICAgb2JqZWN0LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgoKICAgICAgICBtb2RlIGNhbiBiZSAncicgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAndycgZm9yIChvdmVyKXdyaXRpbmcsCiAgICAgICAgJ3gnIGZvciBjcmVhdGluZyBleGNsdXNpdmVseSwgb3IgJ2EnIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbgogICAgICAgIGVxdWl2YWxlbnRseSBiZSBnaXZlbiBhcyAncmInLCAnd2InLCAneGInLCBhbmQgJ2FiJy4KCiAgICAgICAgSWYgbW9kZSBpcyAndycsICd4JyBvciAnYScsIGNvbXByZXNzbGV2ZWwgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gMQogICAgICAgIGFuZCA5IHNwZWNpZnlpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOiAxIHByb2R1Y2VzIHRoZSBsZWFzdAogICAgICAgIGNvbXByZXNzaW9uLCBhbmQgOSAoZGVmYXVsdCkgcHJvZHVjZXMgdGhlIG1vc3QgY29tcHJlc3Npb24uCgogICAgICAgIElmIG1vZGUgaXMgJ3InLCB0aGUgaW5wdXQgZmlsZSBtYXkgYmUgdGhlIGNvbmNhdGVuYXRpb24gb2YKICAgICAgICBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fZnAgPSBOb25lCiAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCiAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAoKICAgICAgICBpZiBub3QgKDEgPD0gY29tcHJlc3NsZXZlbCA8PSA5KToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpCgogICAgICAgIGlmIG1vZGUgaW4gKCIiLCAiciIsICJyYiIpOgogICAgICAgICAgICBtb2RlID0gInJiIgogICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9SRUFECiAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIpOgogICAgICAgICAgICBtb2RlID0gIndiIgogICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQogICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsKQogICAgICAgIGVsaWYgbW9kZSBpbiAoIngiLCAieGIiKToKICAgICAgICAgICAgbW9kZSA9ICJ4YiIKICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfV1JJVEUKICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKICAgICAgICBlbGlmIG1vZGUgaW4gKCJhIiwgImFiIik6CiAgICAgICAgICAgIG1vZGUgPSAiYWIiCiAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCiAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQoKICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgICAgc2VsZi5fZnAgPSBfYnVpbHRpbl9vcGVuKGZpbGVuYW1lLCBtb2RlKQogICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gVHJ1ZQogICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCiAgICAgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgogICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCiAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIsIGJ5dGVzLCBmaWxlIG9yIFBhdGhMaWtlIG9iamVjdCIpCgogICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKICAgICAgICAgICAgcmF3ID0gX2NvbXByZXNzaW9uLkRlY29tcHJlc3NSZWFkZXIoc2VsZi5fZnAsCiAgICAgICAgICAgICAgICBCWjJEZWNvbXByZXNzb3IsIHRyYWlsaW5nX2Vycm9yPU9TRXJyb3IpCiAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9wb3MgPSAwCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkZsdXNoIGFuZCBjbG9zZSB0aGUgZmlsZS4KCiAgICAgICAgTWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiBPbmNlIHRoZSBmaWxlIGlzCiAgICAgICAgY2xvc2VkLCBhbnkgb3RoZXIgb3BlcmF0aW9uIG9uIGl0IHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgogICAgICAgICAgICByZXR1cm4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5jbG9zZSgpCiAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBOb25lCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VmcDoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5jbG9zZSgpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQogICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAogICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNsb3NlZChzZWxmKToKICAgICAgICAiIiJUcnVlIGlmIHRoaXMgZmlsZSBpcyBjbG9zZWQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VECgogICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIHVuZGVybHlpbmcgZmlsZS4iIiIKICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICByZXR1cm4gc2VsZi5fZnAuZmlsZW5vKCkKCiAgICBkZWYgc2Vla2FibGUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9idWZmZXIuc2Vla2FibGUoKQoKICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgogICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQKCiAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4iIiIKICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQoKICAgIGRlZiBwZWVrKHNlbGYsIG49MCk6CiAgICAgICAgIiIiUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCgogICAgICAgIEFsd2F5cyByZXR1cm5zIGF0IGxlYXN0IG9uZSBieXRlIG9mIGRhdGEsIHVubGVzcyBhdCBFT0YuCiAgICAgICAgVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCiAgICAgICAgIyBSZWxpZXMgb24gdGhlIHVuZG9jdW1lbnRlZCBmYWN0IHRoYXQgQnVmZmVyZWRSZWFkZXIucGVlaygpCiAgICAgICAgIyBhbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSAoZXhjZXB0IGF0IEVPRiksIGluZGVwZW5kZW50CiAgICAgICAgIyBvZiB0aGUgdmFsdWUgb2YgbgogICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucGVlayhuKQoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KCiAgICAgICAgSWYgc2l6ZSBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgogICAgICAgIFJldHVybnMgYicnIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgYXQgRU9GLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWQoc2l6ZSkKCiAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcywgd2hpbGUgdHJ5aW5nIHRvIGF2b2lkCiAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLiBSZWFkcyB1cCB0byBhCiAgICAgICAgYnVmZmVyJ3Mgd29ydGggb2YgZGF0YSBpZiBzaXplIGlzIG5lZ2F0aXZlLgoKICAgICAgICBSZXR1cm5zIGInJyBpZiB0aGUgZmlsZSBpcyBhdCBFT0YuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQogICAgICAgIGlmIHNpemUgPCAwOgogICAgICAgICAgICBzaXplID0gaW8uREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKCiAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CiAgICAgICAgIiIiUmVhZCBieXRlcyBpbnRvIGIuCgogICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkICgwIGZvciBFT0YpLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWRpbnRvKGIpCgogICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgogICAgICAgICIiIlJlYWQgYSBsaW5lIG9mIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgoKICAgICAgICBUaGUgdGVybWluYXRpbmcgbmV3bGluZSAoaWYgcHJlc2VudCkgaXMgcmV0YWluZWQuIElmIHNpemUgaXMKICAgICAgICBub24tbmVnYXRpdmUsIG5vIG1vcmUgdGhhbiBzaXplIGJ5dGVzIHdpbGwgYmUgcmVhZCAoaW4gd2hpY2gKICAgICAgICBjYXNlIHRoZSBsaW5lIG1heSBiZSBpbmNvbXBsZXRlKS4gUmV0dXJucyBiJycgaWYgYWxyZWFkeSBhdCBFT0YuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2l6ZSwgIl9faW5kZXhfXyIpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkIikKICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCiAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZShzaXplKQoKICAgIGRlZiByZWFkbGluZXMoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgIiIiUmVhZCBhIGxpc3Qgb2YgbGluZXMgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCgogICAgICAgIHNpemUgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8KICAgICAgICBmdXJ0aGVyIGxpbmVzIHdpbGwgYmUgcmVhZCBvbmNlIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBsaW5lcyByZWFkCiAgICAgICAgc28gZmFyIGVxdWFscyBvciBleGNlZWRzIHNpemUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2l6ZSwgIl9faW5kZXhfXyIpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkIikKICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCiAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZXMoc2l6ZSkKCiAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgIiIiV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgZmlsZS4KCiAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuLCB3aGljaCBpcwogICAgICAgIGFsd2F5cyB0aGUgbGVuZ3RoIG9mIGRhdGEgaW4gYnl0ZXMuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLAogICAgICAgIHRoZSBmaWxlIG9uIGRpc2sgbWF5IG5vdCByZWZsZWN0IHRoZSBkYXRhIHdyaXR0ZW4gdW50aWwgY2xvc2UoKQogICAgICAgIGlzIGNhbGxlZC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9jaGVja19jYW5fd3JpdGUoKQogICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKICAgICAgICAgICAgbGVuZ3RoID0gbGVuKGRhdGEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBhY2NlcHQgYW55IGRhdGEgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sCiAgICAgICAgICAgIGRhdGEgPSBtZW1vcnl2aWV3KGRhdGEpCiAgICAgICAgICAgIGxlbmd0aCA9IGRhdGEubmJ5dGVzCgogICAgICAgIGNvbXByZXNzZWQgPSBzZWxmLl9jb21wcmVzc29yLmNvbXByZXNzKGRhdGEpCiAgICAgICAgc2VsZi5fZnAud3JpdGUoY29tcHJlc3NlZCkKICAgICAgICBzZWxmLl9wb3MgKz0gbGVuZ3RoCiAgICAgICAgcmV0dXJuIGxlbmd0aAoKICAgIGRlZiB3cml0ZWxpbmVzKHNlbGYsIHNlcSk6CiAgICAgICAgIiIiV3JpdGUgYSBzZXF1ZW5jZSBvZiBieXRlIHN0cmluZ3MgdG8gdGhlIGZpbGUuCgogICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbi4KICAgICAgICBzZXEgY2FuIGJlIGFueSBpdGVyYWJsZSB5aWVsZGluZyBieXRlIHN0cmluZ3MuCgogICAgICAgIExpbmUgc2VwYXJhdG9ycyBhcmUgbm90IGFkZGVkIGJldHdlZW4gdGhlIHdyaXR0ZW4gYnl0ZSBzdHJpbmdzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBfY29tcHJlc3Npb24uQmFzZVN0cmVhbS53cml0ZWxpbmVzKHNlbGYsIHNlcSkKCiAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgIiIiQ2hhbmdlIHRoZSBmaWxlIHBvc2l0aW9uLgoKICAgICAgICBUaGUgbmV3IHBvc2l0aW9uIGlzIHNwZWNpZmllZCBieSBvZmZzZXQsIHJlbGF0aXZlIHRvIHRoZQogICAgICAgIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2UuIFZhbHVlcyBmb3Igd2hlbmNlIGFyZToKCiAgICAgICAgICAgIDA6IHN0YXJ0IG9mIHN0cmVhbSAoZGVmYXVsdCk7IG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQogICAgICAgICAgICAxOiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbgogICAgICAgICAgICAyOiBlbmQgb2Ygc3RyZWFtOyBvZmZzZXQgbXVzdCBub3QgYmUgcG9zaXRpdmUKCiAgICAgICAgUmV0dXJucyB0aGUgbmV3IGZpbGUgcG9zaXRpb24uCgogICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzbyBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCiAgICAgICAgdGhpcyBvcGVyYXRpb24gbWF5IGJlIGV4dHJlbWVseSBzbG93LgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9zZWVrKCkKICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnNlZWsob2Zmc2V0LCB3aGVuY2UpCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIiIiCiAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnRlbGwoKQogICAgICAgIHJldHVybiBzZWxmLl9wb3MKCgpkZWYgb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBjb21wcmVzc2xldmVsPTksCiAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgogICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgoKICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIHN0ciwgYnl0ZXMsIG9yCiAgICBQYXRoTGlrZSBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUKICAgIHRvLgoKICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgIngiLCAieGIiLCAiYSIgb3IKICAgICJhYiIgZm9yIGJpbmFyeSBtb2RlLCBvciAicnQiLCAid3QiLCAieHQiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4KICAgIFRoZSBkZWZhdWx0IG1vZGUgaXMgInJiIiwgYW5kIHRoZSBkZWZhdWx0IGNvbXByZXNzbGV2ZWwgaXMgOS4KCiAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgQloyRmlsZQogICAgY29uc3RydWN0b3I6IEJaMkZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLiBJbiB0aGlzIGNhc2UsCiAgICB0aGUgZW5jb2RpbmcsIGVycm9ycyBhbmQgbmV3bGluZSBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCgogICAgRm9yIHRleHQgbW9kZSwgYSBCWjJGaWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgogICAgaW8uVGV4dElPV3JhcHBlciBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yCiAgICBoYW5kbGluZyBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgoKICAgICIiIgogICAgaWYgInQiIGluIG1vZGU6CiAgICAgICAgaWYgImIiIGluIG1vZGU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKICAgIGVsc2U6CiAgICAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlbmNvZGluZycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCiAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZXJyb3JzJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCgogICAgYnpfbW9kZSA9IG1vZGUucmVwbGFjZSgidCIsICIiKQogICAgYmluYXJ5X2ZpbGUgPSBCWjJGaWxlKGZpbGVuYW1lLCBiel9tb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCgogICAgaWYgInQiIGluIG1vZGU6CiAgICAgICAgZW5jb2RpbmcgPSBpby50ZXh0X2VuY29kaW5nKGVuY29kaW5nKQogICAgICAgIHJldHVybiBpby5UZXh0SU9XcmFwcGVyKGJpbmFyeV9maWxlLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lKQogICAgZWxzZToKICAgICAgICByZXR1cm4gYmluYXJ5X2ZpbGUKCgpkZWYgY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KToKICAgICIiIkNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KCiAgICBjb21wcmVzc2xldmVsLCBpZiBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuCgogICAgRm9yIGluY3JlbWVudGFsIGNvbXByZXNzaW9uLCB1c2UgYSBCWjJDb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgogICAgIiIiCiAgICBjb21wID0gQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsKQogICAgcmV0dXJuIGNvbXAuY29tcHJlc3MoZGF0YSkgKyBjb21wLmZsdXNoKCkKCgpkZWYgZGVjb21wcmVzcyhkYXRhKToKICAgICIiIkRlY29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgoKICAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSBCWjJEZWNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCiAgICAiIiIKICAgIHJlc3VsdHMgPSBbXQogICAgd2hpbGUgZGF0YToKICAgICAgICBkZWNvbXAgPSBCWjJEZWNvbXByZXNzb3IoKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmVzID0gZGVjb21wLmRlY29tcHJlc3MoZGF0YSkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgaWYgcmVzdWx0czoKICAgICAgICAgICAgICAgIGJyZWFrICAjIExlZnRvdmVyIGRhdGEgaXMgbm90IGEgdmFsaWQgYnppcDIgc3RyZWFtOyBpZ25vcmUgaXQuCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSAgIyBFcnJvciBvbiB0aGUgZmlyc3QgaXRlcmF0aW9uOyBiYWlsIG91dC4KICAgICAgICByZXN1bHRzLmFwcGVuZChyZXMpCiAgICAgICAgaWYgbm90IGRlY29tcC5lb2Y6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvbXByZXNzZWQgZGF0YSBlbmRlZCBiZWZvcmUgdGhlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQogICAgICAgIGRhdGEgPSBkZWNvbXAudW51c2VkX2RhdGEKICAgIHJldHVybiBiIiIuam9pbihyZXN1bHRzKQpQSwMEFAAAAAAAAiCjVotDRPC+GAAAvhgAAAsAAABjUHJvZmlsZS5weSMhIC91c3IvYmluL2VudiBweXRob24zCgoiIiJQeXRob24gaW50ZXJmYWNlIGZvciB0aGUgJ2xzcHJvZicgcHJvZmlsZXIuCiAgIENvbXBhdGlibGUgd2l0aCB0aGUgJ3Byb2ZpbGUnIG1vZHVsZS4KIiIiCgpfX2FsbF9fID0gWyJydW4iLCAicnVuY3R4IiwgIlByb2ZpbGUiXQoKaW1wb3J0IF9sc3Byb2YKaW1wb3J0IHByb2ZpbGUgYXMgX3B5cHJvZmlsZQoKIyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIyBTaW1wbGUgaW50ZXJmYWNlCgpkZWYgcnVuKHN0YXRlbWVudCwgZmlsZW5hbWU9Tm9uZSwgc29ydD0tMSk6CiAgICByZXR1cm4gX3B5cHJvZmlsZS5fVXRpbHMoUHJvZmlsZSkucnVuKHN0YXRlbWVudCwgZmlsZW5hbWUsIHNvcnQpCgpkZWYgcnVuY3R4KHN0YXRlbWVudCwgZ2xvYmFscywgbG9jYWxzLCBmaWxlbmFtZT1Ob25lLCBzb3J0PS0xKToKICAgIHJldHVybiBfcHlwcm9maWxlLl9VdGlscyhQcm9maWxlKS5ydW5jdHgoc3RhdGVtZW50LCBnbG9iYWxzLCBsb2NhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBzb3J0KQoKcnVuLl9fZG9jX18gPSBfcHlwcm9maWxlLnJ1bi5fX2RvY19fCnJ1bmN0eC5fX2RvY19fID0gX3B5cHJvZmlsZS5ydW5jdHguX19kb2NfXwoKIyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCmNsYXNzIFByb2ZpbGUoX2xzcHJvZi5Qcm9maWxlcik6CiAgICAiIiJQcm9maWxlKHRpbWVyPU5vbmUsIHRpbWV1bml0PU5vbmUsIHN1YmNhbGxzPVRydWUsIGJ1aWx0aW5zPVRydWUpCgogICAgQnVpbGRzIGEgcHJvZmlsZXIgb2JqZWN0IHVzaW5nIHRoZSBzcGVjaWZpZWQgdGltZXIgZnVuY3Rpb24uCiAgICBUaGUgZGVmYXVsdCB0aW1lciBpcyBhIGZhc3QgYnVpbHQtaW4gb25lIGJhc2VkIG9uIHJlYWwgdGltZS4KICAgIEZvciBjdXN0b20gdGltZXIgZnVuY3Rpb25zIHJldHVybmluZyBpbnRlZ2VycywgdGltZXVuaXQgY2FuCiAgICBiZSBhIGZsb2F0IHNwZWNpZnlpbmcgYSBzY2FsZSAoaS5lLiBob3cgbG9uZyBlYWNoIGludGVnZXIgdW5pdAogICAgaXMsIGluIHNlY29uZHMpLgogICAgIiIiCgogICAgIyBNb3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGluIHRoZSBiYXNlIGNsYXNzLgogICAgIyBUaGlzIHN1YmNsYXNzIG9ubHkgYWRkcyBjb252ZW5pZW50IGFuZCBiYWNrd2FyZC1jb21wYXRpYmxlIG1ldGhvZHMuCgogICAgZGVmIHByaW50X3N0YXRzKHNlbGYsIHNvcnQ9LTEpOgogICAgICAgIGltcG9ydCBwc3RhdHMKICAgICAgICBwc3RhdHMuU3RhdHMoc2VsZikuc3RyaXBfZGlycygpLnNvcnRfc3RhdHMoc29ydCkucHJpbnRfc3RhdHMoKQoKICAgIGRlZiBkdW1wX3N0YXRzKHNlbGYsIGZpbGUpOgogICAgICAgIGltcG9ydCBtYXJzaGFsCiAgICAgICAgd2l0aCBvcGVuKGZpbGUsICd3YicpIGFzIGY6CiAgICAgICAgICAgIHNlbGYuY3JlYXRlX3N0YXRzKCkKICAgICAgICAgICAgbWFyc2hhbC5kdW1wKHNlbGYuc3RhdHMsIGYpCgogICAgZGVmIGNyZWF0ZV9zdGF0cyhzZWxmKToKICAgICAgICBzZWxmLmRpc2FibGUoKQogICAgICAgIHNlbGYuc25hcHNob3Rfc3RhdHMoKQoKICAgIGRlZiBzbmFwc2hvdF9zdGF0cyhzZWxmKToKICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRzdGF0cygpCiAgICAgICAgc2VsZi5zdGF0cyA9IHt9CiAgICAgICAgY2FsbGVyc2RpY3RzID0ge30KICAgICAgICAjIGNhbGwgaW5mb3JtYXRpb24KICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKICAgICAgICAgICAgZnVuYyA9IGxhYmVsKGVudHJ5LmNvZGUpCiAgICAgICAgICAgIG5jID0gZW50cnkuY2FsbGNvdW50ICAgICAgICAgIyBuY2FsbHMgY29sdW1uIG9mIHBzdGF0cyAoYmVmb3JlICcvJykKICAgICAgICAgICAgY2MgPSBuYyAtIGVudHJ5LnJlY2NhbGxjb3VudCAjIG5jYWxscyBjb2x1bW4gb2YgcHN0YXRzIChhZnRlciAnLycpCiAgICAgICAgICAgIHR0ID0gZW50cnkuaW5saW5ldGltZSAgICAgICAgIyB0b3R0aW1lIGNvbHVtbiBvZiBwc3RhdHMKICAgICAgICAgICAgY3QgPSBlbnRyeS50b3RhbHRpbWUgICAgICAgICAjIGN1bXRpbWUgY29sdW1uIG9mIHBzdGF0cwogICAgICAgICAgICBjYWxsZXJzID0ge30KICAgICAgICAgICAgY2FsbGVyc2RpY3RzW2lkKGVudHJ5LmNvZGUpXSA9IGNhbGxlcnMKICAgICAgICAgICAgc2VsZi5zdGF0c1tmdW5jXSA9IGNjLCBuYywgdHQsIGN0LCBjYWxsZXJzCiAgICAgICAgIyBzdWJjYWxsIGluZm9ybWF0aW9uCiAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CiAgICAgICAgICAgIGlmIGVudHJ5LmNhbGxzOgogICAgICAgICAgICAgICAgZnVuYyA9IGxhYmVsKGVudHJ5LmNvZGUpCiAgICAgICAgICAgICAgICBmb3Igc3ViZW50cnkgaW4gZW50cnkuY2FsbHM6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJzID0gY2FsbGVyc2RpY3RzW2lkKHN1YmVudHJ5LmNvZGUpXQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBuYyA9IHN1YmVudHJ5LmNhbGxjb3VudAogICAgICAgICAgICAgICAgICAgIGNjID0gbmMgLSBzdWJlbnRyeS5yZWNjYWxsY291bnQKICAgICAgICAgICAgICAgICAgICB0dCA9IHN1YmVudHJ5LmlubGluZXRpbWUKICAgICAgICAgICAgICAgICAgICBjdCA9IHN1YmVudHJ5LnRvdGFsdGltZQogICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMgaW4gY2FsbGVyczoKICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGNhbGxlcnNbZnVuY10KICAgICAgICAgICAgICAgICAgICAgICAgbmMgKz0gcHJldlswXQogICAgICAgICAgICAgICAgICAgICAgICBjYyArPSBwcmV2WzFdCiAgICAgICAgICAgICAgICAgICAgICAgIHR0ICs9IHByZXZbMl0KICAgICAgICAgICAgICAgICAgICAgICAgY3QgKz0gcHJldlszXQogICAgICAgICAgICAgICAgICAgIGNhbGxlcnNbZnVuY10gPSBuYywgY2MsIHR0LCBjdAoKICAgICMgVGhlIGZvbGxvd2luZyB0d28gbWV0aG9kcyBjYW4gYmUgY2FsbGVkIGJ5IGNsaWVudHMgdG8gdXNlCiAgICAjIGEgcHJvZmlsZXIgdG8gcHJvZmlsZSBhIHN0YXRlbWVudCwgZ2l2ZW4gYXMgYSBzdHJpbmcuCgogICAgZGVmIHJ1bihzZWxmLCBjbWQpOgogICAgICAgIGltcG9ydCBfX21haW5fXwogICAgICAgIGRpY3QgPSBfX21haW5fXy5fX2RpY3RfXwogICAgICAgIHJldHVybiBzZWxmLnJ1bmN0eChjbWQsIGRpY3QsIGRpY3QpCgogICAgZGVmIHJ1bmN0eChzZWxmLCBjbWQsIGdsb2JhbHMsIGxvY2Fscyk6CiAgICAgICAgc2VsZi5lbmFibGUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgZXhlYyhjbWQsIGdsb2JhbHMsIGxvY2FscykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLmRpc2FibGUoKQogICAgICAgIHJldHVybiBzZWxmCgogICAgIyBUaGlzIG1ldGhvZCBpcyBtb3JlIHVzZWZ1bCB0byBwcm9maWxlIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuCiAgICBkZWYgcnVuY2FsbChzZWxmLCBmdW5jLCAvLCAqYXJncywgKiprdyk6CiAgICAgICAgc2VsZi5lbmFibGUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3cpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5kaXNhYmxlKCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHNlbGYuZW5hYmxlKCkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgogICAgICAgIHNlbGYuZGlzYWJsZSgpCgojIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKZGVmIGxhYmVsKGNvZGUpOgogICAgaWYgaXNpbnN0YW5jZShjb2RlLCBzdHIpOgogICAgICAgIHJldHVybiAoJ34nLCAwLCBjb2RlKSAgICAjIGJ1aWx0LWluIGZ1bmN0aW9ucyAoJ34nIHNvcnRzIGF0IHRoZSBlbmQpCiAgICBlbHNlOgogICAgICAgIHJldHVybiAoY29kZS5jb19maWxlbmFtZSwgY29kZS5jb19maXJzdGxpbmVubywgY29kZS5jb19uYW1lKQoKIyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCmRlZiBtYWluKCk6CiAgICBpbXBvcnQgb3MKICAgIGltcG9ydCBzeXMKICAgIGltcG9ydCBydW5weQogICAgaW1wb3J0IHBzdGF0cwogICAgZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCiAgICB1c2FnZSA9ICJjUHJvZmlsZS5weSBbLW8gb3V0cHV0X2ZpbGVfcGF0aF0gWy1zIHNvcnRdIFstbSBtb2R1bGUgfCBzY3JpcHRmaWxlXSBbYXJnXSAuLi4iCiAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCiAgICBwYXJzZXIuYWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3MgPSBGYWxzZQogICAgcGFyc2VyLmFkZF9vcHRpb24oJy1vJywgJy0tb3V0ZmlsZScsIGRlc3Q9Im91dGZpbGUiLAogICAgICAgIGhlbHA9IlNhdmUgc3RhdHMgdG8gPG91dGZpbGU+IiwgZGVmYXVsdD1Ob25lKQogICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywgJy0tc29ydCcsIGRlc3Q9InNvcnQiLAogICAgICAgIGhlbHA9IlNvcnQgb3JkZXIgd2hlbiBwcmludGluZyB0byBzdGRvdXQsIGJhc2VkIG9uIHBzdGF0cy5TdGF0cyBjbGFzcyIsCiAgICAgICAgZGVmYXVsdD0yLAogICAgICAgIGNob2ljZXM9c29ydGVkKHBzdGF0cy5TdGF0cy5zb3J0X2FyZ19kaWN0X2RlZmF1bHQpKQogICAgcGFyc2VyLmFkZF9vcHRpb24oJy1tJywgZGVzdD0ibW9kdWxlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICBoZWxwPSJQcm9maWxlIGEgbGlicmFyeSBtb2R1bGUiLCBkZWZhdWx0PUZhbHNlKQoKICAgIGlmIG5vdCBzeXMuYXJndlsxOl06CiAgICAgICAgcGFyc2VyLnByaW50X3VzYWdlKCkKICAgICAgICBzeXMuZXhpdCgyKQoKICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIHN5cy5hcmd2WzpdID0gYXJncwoKICAgICMgVGhlIHNjcmlwdCB0aGF0IHdlJ3JlIHByb2ZpbGluZyBtYXkgY2hkaXIsIHNvIGNhcHR1cmUgdGhlIGFic29sdXRlIHBhdGgKICAgICMgdG8gdGhlIG91dHB1dCBmaWxlIGF0IHN0YXJ0dXAuCiAgICBpZiBvcHRpb25zLm91dGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgb3B0aW9ucy5vdXRmaWxlID0gb3MucGF0aC5hYnNwYXRoKG9wdGlvbnMub3V0ZmlsZSkKCiAgICBpZiBsZW4oYXJncykgPiAwOgogICAgICAgIGlmIG9wdGlvbnMubW9kdWxlOgogICAgICAgICAgICBjb2RlID0gInJ1bl9tb2R1bGUobW9kbmFtZSwgcnVuX25hbWU9J19fbWFpbl9fJykiCiAgICAgICAgICAgIGdsb2JzID0gewogICAgICAgICAgICAgICAgJ3J1bl9tb2R1bGUnOiBydW5weS5ydW5fbW9kdWxlLAogICAgICAgICAgICAgICAgJ21vZG5hbWUnOiBhcmdzWzBdCiAgICAgICAgICAgIH0KICAgICAgICBlbHNlOgogICAgICAgICAgICBwcm9nbmFtZSA9IGFyZ3NbMF0KICAgICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguZGlybmFtZShwcm9nbmFtZSkpCiAgICAgICAgICAgIHdpdGggb3Blbihwcm9nbmFtZSwgJ3JiJykgYXMgZnA6CiAgICAgICAgICAgICAgICBjb2RlID0gY29tcGlsZShmcC5yZWFkKCksIHByb2duYW1lLCAnZXhlYycpCiAgICAgICAgICAgIGdsb2JzID0gewogICAgICAgICAgICAgICAgJ19fZmlsZV9fJzogcHJvZ25hbWUsCiAgICAgICAgICAgICAgICAnX19uYW1lX18nOiAnX19tYWluX18nLAogICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogTm9uZSwKICAgICAgICAgICAgICAgICdfX2NhY2hlZF9fJzogTm9uZSwKICAgICAgICAgICAgfQogICAgICAgIHRyeToKICAgICAgICAgICAgcnVuY3R4KGNvZGUsIGdsb2JzLCBOb25lLCBvcHRpb25zLm91dGZpbGUsIG9wdGlvbnMuc29ydCkKICAgICAgICBleGNlcHQgQnJva2VuUGlwZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgIyBQcmV2ZW50ICJFeGNlcHRpb24gaWdub3JlZCIgZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duLgogICAgICAgICAgICBzeXMuc3Rkb3V0ID0gTm9uZQogICAgICAgICAgICBzeXMuZXhpdChleGMuZXJybm8pCiAgICBlbHNlOgogICAgICAgIHBhcnNlci5wcmludF91c2FnZSgpCiAgICByZXR1cm4gcGFyc2VyCgojIFdoZW4gaW52b2tlZCBhcyBtYWluIHByb2dyYW0sIGludm9rZSB0aGUgcHJvZmlsZXIgb24gYSBzY3JpcHQKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQpQSwMEFAAAAAAAAiCjVg6jBeapYAAAqWAAAAsAAABjYWxlbmRhci5weSIiIkNhbGVuZGFyIHByaW50aW5nIGZ1bmN0aW9ucwoKTm90ZSB3aGVuIGNvbXBhcmluZyB0aGVzZSBjYWxlbmRhcnMgdG8gdGhlIG9uZXMgcHJpbnRlZCBieSBjYWwoMSk6IEJ5CmRlZmF1bHQsIHRoZXNlIGNhbGVuZGFycyBoYXZlIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLCBhbmQKU3VuZGF5IGFzIHRoZSBsYXN0ICh0aGUgRXVyb3BlYW4gY29udmVudGlvbikuIFVzZSBzZXRmaXJzdHdlZWtkYXkoKSB0bwpzZXQgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMD1Nb25kYXksIDY9U3VuZGF5KS4iIiIKCmltcG9ydCBzeXMKaW1wb3J0IGRhdGV0aW1lCmltcG9ydCBsb2NhbGUgYXMgX2xvY2FsZQpmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcmVwZWF0CgpfX2FsbF9fID0gWyJJbGxlZ2FsTW9udGhFcnJvciIsICJJbGxlZ2FsV2Vla2RheUVycm9yIiwgInNldGZpcnN0d2Vla2RheSIsCiAgICAgICAgICAgImZpcnN0d2Vla2RheSIsICJpc2xlYXAiLCAibGVhcGRheXMiLCAid2Vla2RheSIsICJtb250aHJhbmdlIiwKICAgICAgICAgICAibW9udGhjYWxlbmRhciIsICJwcm1vbnRoIiwgIm1vbnRoIiwgInByY2FsIiwgImNhbGVuZGFyIiwKICAgICAgICAgICAidGltZWdtIiwgIm1vbnRoX25hbWUiLCAibW9udGhfYWJiciIsICJkYXlfbmFtZSIsICJkYXlfYWJiciIsCiAgICAgICAgICAgIkNhbGVuZGFyIiwgIlRleHRDYWxlbmRhciIsICJIVE1MQ2FsZW5kYXIiLCAiTG9jYWxlVGV4dENhbGVuZGFyIiwKICAgICAgICAgICAiTG9jYWxlSFRNTENhbGVuZGFyIiwgIndlZWtoZWFkZXIiLAogICAgICAgICAgICJNT05EQVkiLCAiVFVFU0RBWSIsICJXRURORVNEQVkiLCAiVEhVUlNEQVkiLCAiRlJJREFZIiwKICAgICAgICAgICAiU0FUVVJEQVkiLCAiU1VOREFZIl0KCiMgRXhjZXB0aW9uIHJhaXNlZCBmb3IgYmFkIGlucHV0ICh3aXRoIHN0cmluZyBwYXJhbWV0ZXIgZm9yIGRldGFpbHMpCmVycm9yID0gVmFsdWVFcnJvcgoKIyBFeGNlcHRpb25zIHJhaXNlZCBmb3IgYmFkIGlucHV0CmNsYXNzIElsbGVnYWxNb250aEVycm9yKFZhbHVlRXJyb3IpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vbnRoKToKICAgICAgICBzZWxmLm1vbnRoID0gbW9udGgKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiYmFkIG1vbnRoIG51bWJlciAlcjsgbXVzdCBiZSAxLTEyIiAlIHNlbGYubW9udGgKCgpjbGFzcyBJbGxlZ2FsV2Vla2RheUVycm9yKFZhbHVlRXJyb3IpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHdlZWtkYXkpOgogICAgICAgIHNlbGYud2Vla2RheSA9IHdlZWtkYXkKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiYmFkIHdlZWtkYXkgbnVtYmVyICVyOyBtdXN0IGJlIDAgKE1vbmRheSkgdG8gNiAoU3VuZGF5KSIgJSBzZWxmLndlZWtkYXkKCgojIENvbnN0YW50cyBmb3IgbW9udGhzIHJlZmVyZW5jZWQgbGF0ZXIKSmFudWFyeSA9IDEKRmVicnVhcnkgPSAyCgojIE51bWJlciBvZiBkYXlzIHBlciBtb250aCAoZXhjZXB0IGZvciBGZWJydWFyeSBpbiBsZWFwIHllYXJzKQptZGF5cyA9IFswLCAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXQoKIyBUaGlzIG1vZHVsZSB1c2VkIHRvIGhhdmUgaGFyZC1jb2RlZCBsaXN0cyBvZiBkYXkgYW5kIG1vbnRoIG5hbWVzLCBhcwojIEVuZ2xpc2ggc3RyaW5ncy4gIFRoZSBjbGFzc2VzIGZvbGxvd2luZyBlbXVsYXRlIGEgcmVhZC1vbmx5IHZlcnNpb24gb2YKIyB0aGF0LCBidXQgc3VwcGx5IGxvY2FsaXplZCBuYW1lcy4gIE5vdGUgdGhhdCB0aGUgdmFsdWVzIGFyZSBjb21wdXRlZAojIGZyZXNoIG9uIGVhY2ggY2FsbCwgaW4gY2FzZSB0aGUgdXNlciBjaGFuZ2VzIGxvY2FsZSBiZXR3ZWVuIGNhbGxzLgoKY2xhc3MgX2xvY2FsaXplZF9tb250aDoKCiAgICBfbW9udGhzID0gW2RhdGV0aW1lLmRhdGUoMjAwMSwgaSsxLCAxKS5zdHJmdGltZSBmb3IgaSBpbiByYW5nZSgxMildCiAgICBfbW9udGhzLmluc2VydCgwLCBsYW1iZGEgeDogIiIpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvcm1hdCk6CiAgICAgICAgc2VsZi5mb3JtYXQgPSBmb3JtYXQKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CiAgICAgICAgZnVuY3MgPSBzZWxmLl9tb250aHNbaV0KICAgICAgICBpZiBpc2luc3RhbmNlKGksIHNsaWNlKToKICAgICAgICAgICAgcmV0dXJuIFtmKHNlbGYuZm9ybWF0KSBmb3IgZiBpbiBmdW5jc10KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gZnVuY3Moc2VsZi5mb3JtYXQpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIDEzCgoKY2xhc3MgX2xvY2FsaXplZF9kYXk6CgogICAgIyBKYW51YXJ5IDEsIDIwMDEsIHdhcyBhIE1vbmRheS4KICAgIF9kYXlzID0gW2RhdGV0aW1lLmRhdGUoMjAwMSwgMSwgaSsxKS5zdHJmdGltZSBmb3IgaSBpbiByYW5nZSg3KV0KCiAgICBkZWYgX19pbml0X18oc2VsZiwgZm9ybWF0KToKICAgICAgICBzZWxmLmZvcm1hdCA9IGZvcm1hdAoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKToKICAgICAgICBmdW5jcyA9IHNlbGYuX2RheXNbaV0KICAgICAgICBpZiBpc2luc3RhbmNlKGksIHNsaWNlKToKICAgICAgICAgICAgcmV0dXJuIFtmKHNlbGYuZm9ybWF0KSBmb3IgZiBpbiBmdW5jc10KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gZnVuY3Moc2VsZi5mb3JtYXQpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIDcKCgojIEZ1bGwgYW5kIGFiYnJldmlhdGVkIG5hbWVzIG9mIHdlZWtkYXlzCmRheV9uYW1lID0gX2xvY2FsaXplZF9kYXkoJyVBJykKZGF5X2FiYnIgPSBfbG9jYWxpemVkX2RheSgnJWEnKQoKIyBGdWxsIGFuZCBhYmJyZXZpYXRlZCBuYW1lcyBvZiBtb250aHMgKDEtYmFzZWQgYXJyYXlzISEhKQptb250aF9uYW1lID0gX2xvY2FsaXplZF9tb250aCgnJUInKQptb250aF9hYmJyID0gX2xvY2FsaXplZF9tb250aCgnJWInKQoKIyBDb25zdGFudHMgZm9yIHdlZWtkYXlzCihNT05EQVksIFRVRVNEQVksIFdFRE5FU0RBWSwgVEhVUlNEQVksIEZSSURBWSwgU0FUVVJEQVksIFNVTkRBWSkgPSByYW5nZSg3KQoKCmRlZiBpc2xlYXAoeWVhcik6CiAgICAiIiJSZXR1cm4gVHJ1ZSBmb3IgbGVhcCB5ZWFycywgRmFsc2UgZm9yIG5vbi1sZWFwIHllYXJzLiIiIgogICAgcmV0dXJuIHllYXIgJSA0ID09IDAgYW5kICh5ZWFyICUgMTAwICE9IDAgb3IgeWVhciAlIDQwMCA9PSAwKQoKCmRlZiBsZWFwZGF5cyh5MSwgeTIpOgogICAgIiIiUmV0dXJuIG51bWJlciBvZiBsZWFwIHllYXJzIGluIHJhbmdlIFt5MSwgeTIpLgogICAgICAgQXNzdW1lIHkxIDw9IHkyLiIiIgogICAgeTEgLT0gMQogICAgeTIgLT0gMQogICAgcmV0dXJuICh5Mi8vNCAtIHkxLy80KSAtICh5Mi8vMTAwIC0geTEvLzEwMCkgKyAoeTIvLzQwMCAtIHkxLy80MDApCgoKZGVmIHdlZWtkYXkoeWVhciwgbW9udGgsIGRheSk6CiAgICAiIiJSZXR1cm4gd2Vla2RheSAoMC02IH4gTW9uLVN1bikgZm9yIHllYXIsIG1vbnRoICgxLTEyKSwgZGF5ICgxLTMxKS4iIiIKICAgIGlmIG5vdCBkYXRldGltZS5NSU5ZRUFSIDw9IHllYXIgPD0gZGF0ZXRpbWUuTUFYWUVBUjoKICAgICAgICB5ZWFyID0gMjAwMCArIHllYXIgJSA0MDAKICAgIHJldHVybiBkYXRldGltZS5kYXRlKHllYXIsIG1vbnRoLCBkYXkpLndlZWtkYXkoKQoKCmRlZiBtb250aHJhbmdlKHllYXIsIG1vbnRoKToKICAgICIiIlJldHVybiB3ZWVrZGF5ICgwLTYgfiBNb24tU3VuKSBhbmQgbnVtYmVyIG9mIGRheXMgKDI4LTMxKSBmb3IKICAgICAgIHllYXIsIG1vbnRoLiIiIgogICAgaWYgbm90IDEgPD0gbW9udGggPD0gMTI6CiAgICAgICAgcmFpc2UgSWxsZWdhbE1vbnRoRXJyb3IobW9udGgpCiAgICBkYXkxID0gd2Vla2RheSh5ZWFyLCBtb250aCwgMSkKICAgIG5kYXlzID0gbWRheXNbbW9udGhdICsgKG1vbnRoID09IEZlYnJ1YXJ5IGFuZCBpc2xlYXAoeWVhcikpCiAgICByZXR1cm4gZGF5MSwgbmRheXMKCgpkZWYgX21vbnRobGVuKHllYXIsIG1vbnRoKToKICAgIHJldHVybiBtZGF5c1ttb250aF0gKyAobW9udGggPT0gRmVicnVhcnkgYW5kIGlzbGVhcCh5ZWFyKSkKCgpkZWYgX3ByZXZtb250aCh5ZWFyLCBtb250aCk6CiAgICBpZiBtb250aCA9PSAxOgogICAgICAgIHJldHVybiB5ZWFyLTEsIDEyCiAgICBlbHNlOgogICAgICAgIHJldHVybiB5ZWFyLCBtb250aC0xCgoKZGVmIF9uZXh0bW9udGgoeWVhciwgbW9udGgpOgogICAgaWYgbW9udGggPT0gMTI6CiAgICAgICAgcmV0dXJuIHllYXIrMSwgMQogICAgZWxzZToKICAgICAgICByZXR1cm4geWVhciwgbW9udGgrMQoKCmNsYXNzIENhbGVuZGFyKG9iamVjdCk6CiAgICAiIiIKICAgIEJhc2UgY2FsZW5kYXIgY2xhc3MuIFRoaXMgY2xhc3MgZG9lc24ndCBkbyBhbnkgZm9ybWF0dGluZy4gSXQgc2ltcGx5CiAgICBwcm92aWRlcyBkYXRhIHRvIHN1YmNsYXNzZXMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlyc3R3ZWVrZGF5PTApOgogICAgICAgIHNlbGYuZmlyc3R3ZWVrZGF5ID0gZmlyc3R3ZWVrZGF5ICMgMCA9IE1vbmRheSwgNiA9IFN1bmRheQoKICAgIGRlZiBnZXRmaXJzdHdlZWtkYXkoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpcnN0d2Vla2RheSAlIDcKCiAgICBkZWYgc2V0Zmlyc3R3ZWVrZGF5KHNlbGYsIGZpcnN0d2Vla2RheSk6CiAgICAgICAgc2VsZi5fZmlyc3R3ZWVrZGF5ID0gZmlyc3R3ZWVrZGF5CgogICAgZmlyc3R3ZWVrZGF5ID0gcHJvcGVydHkoZ2V0Zmlyc3R3ZWVrZGF5LCBzZXRmaXJzdHdlZWtkYXkpCgogICAgZGVmIGl0ZXJ3ZWVrZGF5cyhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gYW4gaXRlcmF0b3IgZm9yIG9uZSB3ZWVrIG9mIHdlZWtkYXkgbnVtYmVycyBzdGFydGluZyB3aXRoIHRoZQogICAgICAgIGNvbmZpZ3VyZWQgZmlyc3Qgb25lLgogICAgICAgICIiIgogICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYuZmlyc3R3ZWVrZGF5LCBzZWxmLmZpcnN0d2Vla2RheSArIDcpOgogICAgICAgICAgICB5aWVsZCBpJTcKCiAgICBkZWYgaXRlcm1vbnRoZGF0ZXMoc2VsZiwgeWVhciwgbW9udGgpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhbiBpdGVyYXRvciBmb3Igb25lIG1vbnRoLiBUaGUgaXRlcmF0b3Igd2lsbCB5aWVsZCBkYXRldGltZS5kYXRlCiAgICAgICAgdmFsdWVzIGFuZCB3aWxsIGFsd2F5cyBpdGVyYXRlIHRocm91Z2ggY29tcGxldGUgd2Vla3MsIHNvIGl0IHdpbGwgeWllbGQKICAgICAgICBkYXRlcyBvdXRzaWRlIHRoZSBzcGVjaWZpZWQgbW9udGguCiAgICAgICAgIiIiCiAgICAgICAgZm9yIHksIG0sIGQgaW4gc2VsZi5pdGVybW9udGhkYXlzMyh5ZWFyLCBtb250aCk6CiAgICAgICAgICAgIHlpZWxkIGRhdGV0aW1lLmRhdGUoeSwgbSwgZCkKCiAgICBkZWYgaXRlcm1vbnRoZGF5cyhzZWxmLCB5ZWFyLCBtb250aCk6CiAgICAgICAgIiIiCiAgICAgICAgTGlrZSBpdGVybW9udGhkYXRlcygpLCBidXQgd2lsbCB5aWVsZCBkYXkgbnVtYmVycy4gRm9yIGRheXMgb3V0c2lkZQogICAgICAgIHRoZSBzcGVjaWZpZWQgbW9udGggdGhlIGRheSBudW1iZXIgaXMgMC4KICAgICAgICAiIiIKICAgICAgICBkYXkxLCBuZGF5cyA9IG1vbnRocmFuZ2UoeWVhciwgbW9udGgpCiAgICAgICAgZGF5c19iZWZvcmUgPSAoZGF5MSAtIHNlbGYuZmlyc3R3ZWVrZGF5KSAlIDcKICAgICAgICB5aWVsZCBmcm9tIHJlcGVhdCgwLCBkYXlzX2JlZm9yZSkKICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDEsIG5kYXlzICsgMSkKICAgICAgICBkYXlzX2FmdGVyID0gKHNlbGYuZmlyc3R3ZWVrZGF5IC0gZGF5MSAtIG5kYXlzKSAlIDcKICAgICAgICB5aWVsZCBmcm9tIHJlcGVhdCgwLCBkYXlzX2FmdGVyKQoKICAgIGRlZiBpdGVybW9udGhkYXlzMihzZWxmLCB5ZWFyLCBtb250aCk6CiAgICAgICAgIiIiCiAgICAgICAgTGlrZSBpdGVybW9udGhkYXRlcygpLCBidXQgd2lsbCB5aWVsZCAoZGF5IG51bWJlciwgd2Vla2RheSBudW1iZXIpCiAgICAgICAgdHVwbGVzLiBGb3IgZGF5cyBvdXRzaWRlIHRoZSBzcGVjaWZpZWQgbW9udGggdGhlIGRheSBudW1iZXIgaXMgMC4KICAgICAgICAiIiIKICAgICAgICBmb3IgaSwgZCBpbiBlbnVtZXJhdGUoc2VsZi5pdGVybW9udGhkYXlzKHllYXIsIG1vbnRoKSwgc2VsZi5maXJzdHdlZWtkYXkpOgogICAgICAgICAgICB5aWVsZCBkLCBpICUgNwoKICAgIGRlZiBpdGVybW9udGhkYXlzMyhzZWxmLCB5ZWFyLCBtb250aCk6CiAgICAgICAgIiIiCiAgICAgICAgTGlrZSBpdGVybW9udGhkYXRlcygpLCBidXQgd2lsbCB5aWVsZCAoeWVhciwgbW9udGgsIGRheSkgdHVwbGVzLiAgQ2FuIGJlCiAgICAgICAgdXNlZCBmb3IgZGF0ZXMgb3V0c2lkZSBvZiBkYXRldGltZS5kYXRlIHJhbmdlLgogICAgICAgICIiIgogICAgICAgIGRheTEsIG5kYXlzID0gbW9udGhyYW5nZSh5ZWFyLCBtb250aCkKICAgICAgICBkYXlzX2JlZm9yZSA9IChkYXkxIC0gc2VsZi5maXJzdHdlZWtkYXkpICUgNwogICAgICAgIGRheXNfYWZ0ZXIgPSAoc2VsZi5maXJzdHdlZWtkYXkgLSBkYXkxIC0gbmRheXMpICUgNwogICAgICAgIHksIG0gPSBfcHJldm1vbnRoKHllYXIsIG1vbnRoKQogICAgICAgIGVuZCA9IF9tb250aGxlbih5LCBtKSArIDEKICAgICAgICBmb3IgZCBpbiByYW5nZShlbmQtZGF5c19iZWZvcmUsIGVuZCk6CiAgICAgICAgICAgIHlpZWxkIHksIG0sIGQKICAgICAgICBmb3IgZCBpbiByYW5nZSgxLCBuZGF5cyArIDEpOgogICAgICAgICAgICB5aWVsZCB5ZWFyLCBtb250aCwgZAogICAgICAgIHksIG0gPSBfbmV4dG1vbnRoKHllYXIsIG1vbnRoKQogICAgICAgIGZvciBkIGluIHJhbmdlKDEsIGRheXNfYWZ0ZXIgKyAxKToKICAgICAgICAgICAgeWllbGQgeSwgbSwgZAoKICAgIGRlZiBpdGVybW9udGhkYXlzNChzZWxmLCB5ZWFyLCBtb250aCk6CiAgICAgICAgIiIiCiAgICAgICAgTGlrZSBpdGVybW9udGhkYXRlcygpLCBidXQgd2lsbCB5aWVsZCAoeWVhciwgbW9udGgsIGRheSwgZGF5X29mX3dlZWspIHR1cGxlcy4KICAgICAgICBDYW4gYmUgdXNlZCBmb3IgZGF0ZXMgb3V0c2lkZSBvZiBkYXRldGltZS5kYXRlIHJhbmdlLgogICAgICAgICIiIgogICAgICAgIGZvciBpLCAoeSwgbSwgZCkgaW4gZW51bWVyYXRlKHNlbGYuaXRlcm1vbnRoZGF5czMoeWVhciwgbW9udGgpKToKICAgICAgICAgICAgeWllbGQgeSwgbSwgZCwgKHNlbGYuZmlyc3R3ZWVrZGF5ICsgaSkgJSA3CgogICAgZGVmIG1vbnRoZGF0ZXNjYWxlbmRhcihzZWxmLCB5ZWFyLCBtb250aCk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIGEgbWF0cml4IChsaXN0IG9mIGxpc3RzKSByZXByZXNlbnRpbmcgYSBtb250aCdzIGNhbGVuZGFyLgogICAgICAgIEVhY2ggcm93IHJlcHJlc2VudHMgYSB3ZWVrOyB3ZWVrIGVudHJpZXMgYXJlIGRhdGV0aW1lLmRhdGUgdmFsdWVzLgogICAgICAgICIiIgogICAgICAgIGRhdGVzID0gbGlzdChzZWxmLml0ZXJtb250aGRhdGVzKHllYXIsIG1vbnRoKSkKICAgICAgICByZXR1cm4gWyBkYXRlc1tpOmkrN10gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGRhdGVzKSwgNykgXQoKICAgIGRlZiBtb250aGRheXMyY2FsZW5kYXIoc2VsZiwgeWVhciwgbW9udGgpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhIG1hdHJpeCByZXByZXNlbnRpbmcgYSBtb250aCdzIGNhbGVuZGFyLgogICAgICAgIEVhY2ggcm93IHJlcHJlc2VudHMgYSB3ZWVrOyB3ZWVrIGVudHJpZXMgYXJlCiAgICAgICAgKGRheSBudW1iZXIsIHdlZWtkYXkgbnVtYmVyKSB0dXBsZXMuIERheSBudW1iZXJzIG91dHNpZGUgdGhpcyBtb250aAogICAgICAgIGFyZSB6ZXJvLgogICAgICAgICIiIgogICAgICAgIGRheXMgPSBsaXN0KHNlbGYuaXRlcm1vbnRoZGF5czIoeWVhciwgbW9udGgpKQogICAgICAgIHJldHVybiBbIGRheXNbaTppKzddIGZvciBpIGluIHJhbmdlKDAsIGxlbihkYXlzKSwgNykgXQoKICAgIGRlZiBtb250aGRheXNjYWxlbmRhcihzZWxmLCB5ZWFyLCBtb250aCk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIGEgbWF0cml4IHJlcHJlc2VudGluZyBhIG1vbnRoJ3MgY2FsZW5kYXIuCiAgICAgICAgRWFjaCByb3cgcmVwcmVzZW50cyBhIHdlZWs7IGRheXMgb3V0c2lkZSB0aGlzIG1vbnRoIGFyZSB6ZXJvLgogICAgICAgICIiIgogICAgICAgIGRheXMgPSBsaXN0KHNlbGYuaXRlcm1vbnRoZGF5cyh5ZWFyLCBtb250aCkpCiAgICAgICAgcmV0dXJuIFsgZGF5c1tpOmkrN10gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGRheXMpLCA3KSBdCgogICAgZGVmIHllYXJkYXRlc2NhbGVuZGFyKHNlbGYsIHllYXIsIHdpZHRoPTMpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCB5ZWFyIHJlYWR5IGZvciBmb3JtYXR0aW5nLiBUaGUgcmV0dXJuCiAgICAgICAgdmFsdWUgaXMgYSBsaXN0IG9mIG1vbnRoIHJvd3MuIEVhY2ggbW9udGggcm93IGNvbnRhaW5zIHVwIHRvIHdpZHRoIG1vbnRocy4KICAgICAgICBFYWNoIG1vbnRoIGNvbnRhaW5zIGJldHdlZW4gNCBhbmQgNiB3ZWVrcyBhbmQgZWFjaCB3ZWVrIGNvbnRhaW5zIDEtNwogICAgICAgIGRheXMuIERheXMgYXJlIGRhdGV0aW1lLmRhdGUgb2JqZWN0cy4KICAgICAgICAiIiIKICAgICAgICBtb250aHMgPSBbCiAgICAgICAgICAgIHNlbGYubW9udGhkYXRlc2NhbGVuZGFyKHllYXIsIGkpCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKEphbnVhcnksIEphbnVhcnkrMTIpCiAgICAgICAgXQogICAgICAgIHJldHVybiBbbW9udGhzW2k6aSt3aWR0aF0gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKG1vbnRocyksIHdpZHRoKSBdCgogICAgZGVmIHllYXJkYXlzMmNhbGVuZGFyKHNlbGYsIHllYXIsIHdpZHRoPTMpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCB5ZWFyIHJlYWR5IGZvciBmb3JtYXR0aW5nIChzaW1pbGFyIHRvCiAgICAgICAgeWVhcmRhdGVzY2FsZW5kYXIoKSkuIEVudHJpZXMgaW4gdGhlIHdlZWsgbGlzdHMgYXJlCiAgICAgICAgKGRheSBudW1iZXIsIHdlZWtkYXkgbnVtYmVyKSB0dXBsZXMuIERheSBudW1iZXJzIG91dHNpZGUgdGhpcyBtb250aCBhcmUKICAgICAgICB6ZXJvLgogICAgICAgICIiIgogICAgICAgIG1vbnRocyA9IFsKICAgICAgICAgICAgc2VsZi5tb250aGRheXMyY2FsZW5kYXIoeWVhciwgaSkKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoSmFudWFyeSwgSmFudWFyeSsxMikKICAgICAgICBdCiAgICAgICAgcmV0dXJuIFttb250aHNbaTppK3dpZHRoXSBmb3IgaSBpbiByYW5nZSgwLCBsZW4obW9udGhzKSwgd2lkdGgpIF0KCiAgICBkZWYgeWVhcmRheXNjYWxlbmRhcihzZWxmLCB5ZWFyLCB3aWR0aD0zKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIGRhdGEgZm9yIHRoZSBzcGVjaWZpZWQgeWVhciByZWFkeSBmb3IgZm9ybWF0dGluZyAoc2ltaWxhciB0bwogICAgICAgIHllYXJkYXRlc2NhbGVuZGFyKCkpLiBFbnRyaWVzIGluIHRoZSB3ZWVrIGxpc3RzIGFyZSBkYXkgbnVtYmVycy4KICAgICAgICBEYXkgbnVtYmVycyBvdXRzaWRlIHRoaXMgbW9udGggYXJlIHplcm8uCiAgICAgICAgIiIiCiAgICAgICAgbW9udGhzID0gWwogICAgICAgICAgICBzZWxmLm1vbnRoZGF5c2NhbGVuZGFyKHllYXIsIGkpCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKEphbnVhcnksIEphbnVhcnkrMTIpCiAgICAgICAgXQogICAgICAgIHJldHVybiBbbW9udGhzW2k6aSt3aWR0aF0gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKG1vbnRocyksIHdpZHRoKSBdCgoKY2xhc3MgVGV4dENhbGVuZGFyKENhbGVuZGFyKToKICAgICIiIgogICAgU3ViY2xhc3Mgb2YgQ2FsZW5kYXIgdGhhdCBvdXRwdXRzIGEgY2FsZW5kYXIgYXMgYSBzaW1wbGUgcGxhaW4gdGV4dAogICAgc2ltaWxhciB0byB0aGUgVU5JWCBwcm9ncmFtIGNhbC4KICAgICIiIgoKICAgIGRlZiBwcndlZWsoc2VsZiwgdGhld2Vlaywgd2lkdGgpOgogICAgICAgICIiIgogICAgICAgIFByaW50IGEgc2luZ2xlIHdlZWsgKG5vIG5ld2xpbmUpLgogICAgICAgICIiIgogICAgICAgIHByaW50KHNlbGYuZm9ybWF0d2Vlayh0aGV3ZWVrLCB3aWR0aCksIGVuZD0nJykKCiAgICBkZWYgZm9ybWF0ZGF5KHNlbGYsIGRheSwgd2Vla2RheSwgd2lkdGgpOgogICAgICAgICIiIgogICAgICAgIFJldHVybnMgYSBmb3JtYXR0ZWQgZGF5LgogICAgICAgICIiIgogICAgICAgIGlmIGRheSA9PSAwOgogICAgICAgICAgICBzID0gJycKICAgICAgICBlbHNlOgogICAgICAgICAgICBzID0gJyUyaScgJSBkYXkgICAgICAgICAgICAgIyByaWdodC1hbGlnbiBzaW5nbGUtZGlnaXQgZGF5cwogICAgICAgIHJldHVybiBzLmNlbnRlcih3aWR0aCkKCiAgICBkZWYgZm9ybWF0d2VlayhzZWxmLCB0aGV3ZWVrLCB3aWR0aCk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJucyBhIHNpbmdsZSB3ZWVrIGluIGEgc3RyaW5nIChubyBuZXdsaW5lKS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gJyAnLmpvaW4oc2VsZi5mb3JtYXRkYXkoZCwgd2QsIHdpZHRoKSBmb3IgKGQsIHdkKSBpbiB0aGV3ZWVrKQoKICAgIGRlZiBmb3JtYXR3ZWVrZGF5KHNlbGYsIGRheSwgd2lkdGgpOgogICAgICAgICIiIgogICAgICAgIFJldHVybnMgYSBmb3JtYXR0ZWQgd2VlayBkYXkgbmFtZS4KICAgICAgICAiIiIKICAgICAgICBpZiB3aWR0aCA+PSA5OgogICAgICAgICAgICBuYW1lcyA9IGRheV9uYW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbmFtZXMgPSBkYXlfYWJicgogICAgICAgIHJldHVybiBuYW1lc1tkYXldWzp3aWR0aF0uY2VudGVyKHdpZHRoKQoKICAgIGRlZiBmb3JtYXR3ZWVraGVhZGVyKHNlbGYsIHdpZHRoKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gYSBoZWFkZXIgZm9yIGEgd2Vlay4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gJyAnLmpvaW4oc2VsZi5mb3JtYXR3ZWVrZGF5KGksIHdpZHRoKSBmb3IgaSBpbiBzZWxmLml0ZXJ3ZWVrZGF5cygpKQoKICAgIGRlZiBmb3JtYXRtb250aG5hbWUoc2VsZiwgdGhleWVhciwgdGhlbW9udGgsIHdpZHRoLCB3aXRoeWVhcj1UcnVlKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gYSBmb3JtYXR0ZWQgbW9udGggbmFtZS4KICAgICAgICAiIiIKICAgICAgICBzID0gbW9udGhfbmFtZVt0aGVtb250aF0KICAgICAgICBpZiB3aXRoeWVhcjoKICAgICAgICAgICAgcyA9ICIlcyAlciIgJSAocywgdGhleWVhcikKICAgICAgICByZXR1cm4gcy5jZW50ZXIod2lkdGgpCgogICAgZGVmIHBybW9udGgoc2VsZiwgdGhleWVhciwgdGhlbW9udGgsIHc9MCwgbD0wKToKICAgICAgICAiIiIKICAgICAgICBQcmludCBhIG1vbnRoJ3MgY2FsZW5kYXIuCiAgICAgICAgIiIiCiAgICAgICAgcHJpbnQoc2VsZi5mb3JtYXRtb250aCh0aGV5ZWFyLCB0aGVtb250aCwgdywgbCksIGVuZD0nJykKCiAgICBkZWYgZm9ybWF0bW9udGgoc2VsZiwgdGhleWVhciwgdGhlbW9udGgsIHc9MCwgbD0wKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gYSBtb250aCdzIGNhbGVuZGFyIHN0cmluZyAobXVsdGktbGluZSkuCiAgICAgICAgIiIiCiAgICAgICAgdyA9IG1heCgyLCB3KQogICAgICAgIGwgPSBtYXgoMSwgbCkKICAgICAgICBzID0gc2VsZi5mb3JtYXRtb250aG5hbWUodGhleWVhciwgdGhlbW9udGgsIDcgKiAodyArIDEpIC0gMSkKICAgICAgICBzID0gcy5yc3RyaXAoKQogICAgICAgIHMgKz0gJ1xuJyAqIGwKICAgICAgICBzICs9IHNlbGYuZm9ybWF0d2Vla2hlYWRlcih3KS5yc3RyaXAoKQogICAgICAgIHMgKz0gJ1xuJyAqIGwKICAgICAgICBmb3Igd2VlayBpbiBzZWxmLm1vbnRoZGF5czJjYWxlbmRhcih0aGV5ZWFyLCB0aGVtb250aCk6CiAgICAgICAgICAgIHMgKz0gc2VsZi5mb3JtYXR3ZWVrKHdlZWssIHcpLnJzdHJpcCgpCiAgICAgICAgICAgIHMgKz0gJ1xuJyAqIGwKICAgICAgICByZXR1cm4gcwoKICAgIGRlZiBmb3JtYXR5ZWFyKHNlbGYsIHRoZXllYXIsIHc9MiwgbD0xLCBjPTYsIG09Myk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJucyBhIHllYXIncyBjYWxlbmRhciBhcyBhIG11bHRpLWxpbmUgc3RyaW5nLgogICAgICAgICIiIgogICAgICAgIHcgPSBtYXgoMiwgdykKICAgICAgICBsID0gbWF4KDEsIGwpCiAgICAgICAgYyA9IG1heCgyLCBjKQogICAgICAgIGNvbHdpZHRoID0gKHcgKyAxKSAqIDcgLSAxCiAgICAgICAgdiA9IFtdCiAgICAgICAgYSA9IHYuYXBwZW5kCiAgICAgICAgYShyZXByKHRoZXllYXIpLmNlbnRlcihjb2x3aWR0aCptK2MqKG0tMSkpLnJzdHJpcCgpKQogICAgICAgIGEoJ1xuJypsKQogICAgICAgIGhlYWRlciA9IHNlbGYuZm9ybWF0d2Vla2hlYWRlcih3KQogICAgICAgIGZvciAoaSwgcm93KSBpbiBlbnVtZXJhdGUoc2VsZi55ZWFyZGF5czJjYWxlbmRhcih0aGV5ZWFyLCBtKSk6CiAgICAgICAgICAgICMgbW9udGhzIGluIHRoaXMgcm93CiAgICAgICAgICAgIG1vbnRocyA9IHJhbmdlKG0qaSsxLCBtaW4obSooaSsxKSsxLCAxMykpCiAgICAgICAgICAgIGEoJ1xuJypsKQogICAgICAgICAgICBuYW1lcyA9IChzZWxmLmZvcm1hdG1vbnRobmFtZSh0aGV5ZWFyLCBrLCBjb2x3aWR0aCwgRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIG1vbnRocykKICAgICAgICAgICAgYShmb3JtYXRzdHJpbmcobmFtZXMsIGNvbHdpZHRoLCBjKS5yc3RyaXAoKSkKICAgICAgICAgICAgYSgnXG4nKmwpCiAgICAgICAgICAgIGhlYWRlcnMgPSAoaGVhZGVyIGZvciBrIGluIG1vbnRocykKICAgICAgICAgICAgYShmb3JtYXRzdHJpbmcoaGVhZGVycywgY29sd2lkdGgsIGMpLnJzdHJpcCgpKQogICAgICAgICAgICBhKCdcbicqbCkKICAgICAgICAgICAgIyBtYXggbnVtYmVyIG9mIHdlZWtzIGZvciB0aGlzIHJvdwogICAgICAgICAgICBoZWlnaHQgPSBtYXgobGVuKGNhbCkgZm9yIGNhbCBpbiByb3cpCiAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKGhlaWdodCk6CiAgICAgICAgICAgICAgICB3ZWVrcyA9IFtdCiAgICAgICAgICAgICAgICBmb3IgY2FsIGluIHJvdzoKICAgICAgICAgICAgICAgICAgICBpZiBqID49IGxlbihjYWwpOgogICAgICAgICAgICAgICAgICAgICAgICB3ZWVrcy5hcHBlbmQoJycpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgd2Vla3MuYXBwZW5kKHNlbGYuZm9ybWF0d2VlayhjYWxbal0sIHcpKQogICAgICAgICAgICAgICAgYShmb3JtYXRzdHJpbmcod2Vla3MsIGNvbHdpZHRoLCBjKS5yc3RyaXAoKSkKICAgICAgICAgICAgICAgIGEoJ1xuJyAqIGwpCiAgICAgICAgcmV0dXJuICcnLmpvaW4odikKCiAgICBkZWYgcHJ5ZWFyKHNlbGYsIHRoZXllYXIsIHc9MCwgbD0wLCBjPTYsIG09Myk6CiAgICAgICAgIiIiUHJpbnQgYSB5ZWFyJ3MgY2FsZW5kYXIuIiIiCiAgICAgICAgcHJpbnQoc2VsZi5mb3JtYXR5ZWFyKHRoZXllYXIsIHcsIGwsIGMsIG0pLCBlbmQ9JycpCgoKY2xhc3MgSFRNTENhbGVuZGFyKENhbGVuZGFyKToKICAgICIiIgogICAgVGhpcyBjYWxlbmRhciByZXR1cm5zIGNvbXBsZXRlIEhUTUwgcGFnZXMuCiAgICAiIiIKCiAgICAjIENTUyBjbGFzc2VzIGZvciB0aGUgZGF5IDx0ZD5zCiAgICBjc3NjbGFzc2VzID0gWyJtb24iLCAidHVlIiwgIndlZCIsICJ0aHUiLCAiZnJpIiwgInNhdCIsICJzdW4iXQoKICAgICMgQ1NTIGNsYXNzZXMgZm9yIHRoZSBkYXkgPHRoPnMKICAgIGNzc2NsYXNzZXNfd2Vla2RheV9oZWFkID0gY3NzY2xhc3NlcwoKICAgICMgQ1NTIGNsYXNzIGZvciB0aGUgZGF5cyBiZWZvcmUgYW5kIGFmdGVyIGN1cnJlbnQgbW9udGgKICAgIGNzc2NsYXNzX25vZGF5ID0gIm5vZGF5IgoKICAgICMgQ1NTIGNsYXNzIGZvciB0aGUgbW9udGgncyBoZWFkCiAgICBjc3NjbGFzc19tb250aF9oZWFkID0gIm1vbnRoIgoKICAgICMgQ1NTIGNsYXNzIGZvciB0aGUgbW9udGgKICAgIGNzc2NsYXNzX21vbnRoID0gIm1vbnRoIgoKICAgICMgQ1NTIGNsYXNzIGZvciB0aGUgeWVhcidzIHRhYmxlIGhlYWQKICAgIGNzc2NsYXNzX3llYXJfaGVhZCA9ICJ5ZWFyIgoKICAgICMgQ1NTIGNsYXNzIGZvciB0aGUgd2hvbGUgeWVhciB0YWJsZQogICAgY3NzY2xhc3NfeWVhciA9ICJ5ZWFyIgoKICAgIGRlZiBmb3JtYXRkYXkoc2VsZiwgZGF5LCB3ZWVrZGF5KToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gYSBkYXkgYXMgYSB0YWJsZSBjZWxsLgogICAgICAgICIiIgogICAgICAgIGlmIGRheSA9PSAwOgogICAgICAgICAgICAjIGRheSBvdXRzaWRlIG1vbnRoCiAgICAgICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSIlcyI+Jm5ic3A7PC90ZD4nICUgc2VsZi5jc3NjbGFzc19ub2RheQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSIlcyI+JWQ8L3RkPicgJSAoc2VsZi5jc3NjbGFzc2VzW3dlZWtkYXldLCBkYXkpCgogICAgZGVmIGZvcm1hdHdlZWsoc2VsZiwgdGhld2Vlayk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIGEgY29tcGxldGUgd2VlayBhcyBhIHRhYmxlIHJvdy4KICAgICAgICAiIiIKICAgICAgICBzID0gJycuam9pbihzZWxmLmZvcm1hdGRheShkLCB3ZCkgZm9yIChkLCB3ZCkgaW4gdGhld2VlaykKICAgICAgICByZXR1cm4gJzx0cj4lczwvdHI+JyAlIHMKCiAgICBkZWYgZm9ybWF0d2Vla2RheShzZWxmLCBkYXkpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhIHdlZWtkYXkgbmFtZSBhcyBhIHRhYmxlIGhlYWRlci4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gJzx0aCBjbGFzcz0iJXMiPiVzPC90aD4nICUgKAogICAgICAgICAgICBzZWxmLmNzc2NsYXNzZXNfd2Vla2RheV9oZWFkW2RheV0sIGRheV9hYmJyW2RheV0pCgogICAgZGVmIGZvcm1hdHdlZWtoZWFkZXIoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIGEgaGVhZGVyIGZvciBhIHdlZWsgYXMgYSB0YWJsZSByb3cuCiAgICAgICAgIiIiCiAgICAgICAgcyA9ICcnLmpvaW4oc2VsZi5mb3JtYXR3ZWVrZGF5KGkpIGZvciBpIGluIHNlbGYuaXRlcndlZWtkYXlzKCkpCiAgICAgICAgcmV0dXJuICc8dHI+JXM8L3RyPicgJSBzCgogICAgZGVmIGZvcm1hdG1vbnRobmFtZShzZWxmLCB0aGV5ZWFyLCB0aGVtb250aCwgd2l0aHllYXI9VHJ1ZSk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIGEgbW9udGggbmFtZSBhcyBhIHRhYmxlIHJvdy4KICAgICAgICAiIiIKICAgICAgICBpZiB3aXRoeWVhcjoKICAgICAgICAgICAgcyA9ICclcyAlcycgJSAobW9udGhfbmFtZVt0aGVtb250aF0sIHRoZXllYXIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcyA9ICclcycgJSBtb250aF9uYW1lW3RoZW1vbnRoXQogICAgICAgIHJldHVybiAnPHRyPjx0aCBjb2xzcGFuPSI3IiBjbGFzcz0iJXMiPiVzPC90aD48L3RyPicgJSAoCiAgICAgICAgICAgIHNlbGYuY3NzY2xhc3NfbW9udGhfaGVhZCwgcykKCiAgICBkZWYgZm9ybWF0bW9udGgoc2VsZiwgdGhleWVhciwgdGhlbW9udGgsIHdpdGh5ZWFyPVRydWUpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhIGZvcm1hdHRlZCBtb250aCBhcyBhIHRhYmxlLgogICAgICAgICIiIgogICAgICAgIHYgPSBbXQogICAgICAgIGEgPSB2LmFwcGVuZAogICAgICAgIGEoJzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9IiVzIj4nICUgKAogICAgICAgICAgICBzZWxmLmNzc2NsYXNzX21vbnRoKSkKICAgICAgICBhKCdcbicpCiAgICAgICAgYShzZWxmLmZvcm1hdG1vbnRobmFtZSh0aGV5ZWFyLCB0aGVtb250aCwgd2l0aHllYXI9d2l0aHllYXIpKQogICAgICAgIGEoJ1xuJykKICAgICAgICBhKHNlbGYuZm9ybWF0d2Vla2hlYWRlcigpKQogICAgICAgIGEoJ1xuJykKICAgICAgICBmb3Igd2VlayBpbiBzZWxmLm1vbnRoZGF5czJjYWxlbmRhcih0aGV5ZWFyLCB0aGVtb250aCk6CiAgICAgICAgICAgIGEoc2VsZi5mb3JtYXR3ZWVrKHdlZWspKQogICAgICAgICAgICBhKCdcbicpCiAgICAgICAgYSgnPC90YWJsZT4nKQogICAgICAgIGEoJ1xuJykKICAgICAgICByZXR1cm4gJycuam9pbih2KQoKICAgIGRlZiBmb3JtYXR5ZWFyKHNlbGYsIHRoZXllYXIsIHdpZHRoPTMpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhIGZvcm1hdHRlZCB5ZWFyIGFzIGEgdGFibGUgb2YgdGFibGVzLgogICAgICAgICIiIgogICAgICAgIHYgPSBbXQogICAgICAgIGEgPSB2LmFwcGVuZAogICAgICAgIHdpZHRoID0gbWF4KHdpZHRoLCAxKQogICAgICAgIGEoJzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9IiVzIj4nICUKICAgICAgICAgIHNlbGYuY3NzY2xhc3NfeWVhcikKICAgICAgICBhKCdcbicpCiAgICAgICAgYSgnPHRyPjx0aCBjb2xzcGFuPSIlZCIgY2xhc3M9IiVzIj4lczwvdGg+PC90cj4nICUgKAogICAgICAgICAgICB3aWR0aCwgc2VsZi5jc3NjbGFzc195ZWFyX2hlYWQsIHRoZXllYXIpKQogICAgICAgIGZvciBpIGluIHJhbmdlKEphbnVhcnksIEphbnVhcnkrMTIsIHdpZHRoKToKICAgICAgICAgICAgIyBtb250aHMgaW4gdGhpcyByb3cKICAgICAgICAgICAgbW9udGhzID0gcmFuZ2UoaSwgbWluKGkrd2lkdGgsIDEzKSkKICAgICAgICAgICAgYSgnPHRyPicpCiAgICAgICAgICAgIGZvciBtIGluIG1vbnRoczoKICAgICAgICAgICAgICAgIGEoJzx0ZD4nKQogICAgICAgICAgICAgICAgYShzZWxmLmZvcm1hdG1vbnRoKHRoZXllYXIsIG0sIHdpdGh5ZWFyPUZhbHNlKSkKICAgICAgICAgICAgICAgIGEoJzwvdGQ+JykKICAgICAgICAgICAgYSgnPC90cj4nKQogICAgICAgIGEoJzwvdGFibGU+JykKICAgICAgICByZXR1cm4gJycuam9pbih2KQoKICAgIGRlZiBmb3JtYXR5ZWFycGFnZShzZWxmLCB0aGV5ZWFyLCB3aWR0aD0zLCBjc3M9J2NhbGVuZGFyLmNzcycsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhIGZvcm1hdHRlZCB5ZWFyIGFzIGEgY29tcGxldGUgSFRNTCBwYWdlLgogICAgICAgICIiIgogICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgIGVuY29kaW5nID0gc3lzLmdldGRlZmF1bHRlbmNvZGluZygpCiAgICAgICAgdiA9IFtdCiAgICAgICAgYSA9IHYuYXBwZW5kCiAgICAgICAgYSgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iJXMiPz5cbicgJSBlbmNvZGluZykKICAgICAgICBhKCc8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+XG4nKQogICAgICAgIGEoJzxodG1sPlxuJykKICAgICAgICBhKCc8aGVhZD5cbicpCiAgICAgICAgYSgnPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JXMiIC8+XG4nICUgZW5jb2RpbmcpCiAgICAgICAgaWYgY3NzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBhKCc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIlcyIgLz5cbicgJSBjc3MpCiAgICAgICAgYSgnPHRpdGxlPkNhbGVuZGFyIGZvciAlZDwvdGl0bGU+XG4nICUgdGhleWVhcikKICAgICAgICBhKCc8L2hlYWQ+XG4nKQogICAgICAgIGEoJzxib2R5PlxuJykKICAgICAgICBhKHNlbGYuZm9ybWF0eWVhcih0aGV5ZWFyLCB3aWR0aCkpCiAgICAgICAgYSgnPC9ib2R5PlxuJykKICAgICAgICBhKCc8L2h0bWw+XG4nKQogICAgICAgIHJldHVybiAnJy5qb2luKHYpLmVuY29kZShlbmNvZGluZywgInhtbGNoYXJyZWZyZXBsYWNlIikKCgpjbGFzcyBkaWZmZXJlbnRfbG9jYWxlOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsZSk6CiAgICAgICAgc2VsZi5sb2NhbGUgPSBsb2NhbGUKICAgICAgICBzZWxmLm9sZGxvY2FsZSA9IE5vbmUKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHNlbGYub2xkbG9jYWxlID0gX2xvY2FsZS5zZXRsb2NhbGUoX2xvY2FsZS5MQ19USU1FLCBOb25lKQogICAgICAgIF9sb2NhbGUuc2V0bG9jYWxlKF9sb2NhbGUuTENfVElNRSwgc2VsZi5sb2NhbGUpCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBpZiBzZWxmLm9sZGxvY2FsZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBfbG9jYWxlLnNldGxvY2FsZShfbG9jYWxlLkxDX1RJTUUsIHNlbGYub2xkbG9jYWxlKQoKCmRlZiBfZ2V0X2RlZmF1bHRfbG9jYWxlKCk6CiAgICBsb2NhbGUgPSBfbG9jYWxlLnNldGxvY2FsZShfbG9jYWxlLkxDX1RJTUUsIE5vbmUpCiAgICBpZiBsb2NhbGUgPT0gIkMiOgogICAgICAgIHdpdGggZGlmZmVyZW50X2xvY2FsZSgiIik6CiAgICAgICAgICAgICMgVGhlIExDX1RJTUUgbG9jYWxlIGRvZXMgbm90IHNlZW0gdG8gYmUgY29uZmlndXJlZDoKICAgICAgICAgICAgIyBnZXQgdGhlIHVzZXIgcHJlZmVycmVkIGxvY2FsZS4KICAgICAgICAgICAgbG9jYWxlID0gX2xvY2FsZS5zZXRsb2NhbGUoX2xvY2FsZS5MQ19USU1FLCBOb25lKQogICAgcmV0dXJuIGxvY2FsZQoKCmNsYXNzIExvY2FsZVRleHRDYWxlbmRhcihUZXh0Q2FsZW5kYXIpOgogICAgIiIiCiAgICBUaGlzIGNsYXNzIGNhbiBiZSBwYXNzZWQgYSBsb2NhbGUgbmFtZSBpbiB0aGUgY29uc3RydWN0b3IgYW5kIHdpbGwgcmV0dXJuCiAgICBtb250aCBhbmQgd2Vla2RheSBuYW1lcyBpbiB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaXJzdHdlZWtkYXk9MCwgbG9jYWxlPU5vbmUpOgogICAgICAgIFRleHRDYWxlbmRhci5fX2luaXRfXyhzZWxmLCBmaXJzdHdlZWtkYXkpCiAgICAgICAgaWYgbG9jYWxlIGlzIE5vbmU6CiAgICAgICAgICAgIGxvY2FsZSA9IF9nZXRfZGVmYXVsdF9sb2NhbGUoKQogICAgICAgIHNlbGYubG9jYWxlID0gbG9jYWxlCgogICAgZGVmIGZvcm1hdHdlZWtkYXkoc2VsZiwgZGF5LCB3aWR0aCk6CiAgICAgICAgd2l0aCBkaWZmZXJlbnRfbG9jYWxlKHNlbGYubG9jYWxlKToKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZm9ybWF0d2Vla2RheShkYXksIHdpZHRoKQoKICAgIGRlZiBmb3JtYXRtb250aG5hbWUoc2VsZiwgdGhleWVhciwgdGhlbW9udGgsIHdpZHRoLCB3aXRoeWVhcj1UcnVlKToKICAgICAgICB3aXRoIGRpZmZlcmVudF9sb2NhbGUoc2VsZi5sb2NhbGUpOgogICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5mb3JtYXRtb250aG5hbWUodGhleWVhciwgdGhlbW9udGgsIHdpZHRoLCB3aXRoeWVhcikKCgpjbGFzcyBMb2NhbGVIVE1MQ2FsZW5kYXIoSFRNTENhbGVuZGFyKToKICAgICIiIgogICAgVGhpcyBjbGFzcyBjYW4gYmUgcGFzc2VkIGEgbG9jYWxlIG5hbWUgaW4gdGhlIGNvbnN0cnVjdG9yIGFuZCB3aWxsIHJldHVybgogICAgbW9udGggYW5kIHdlZWtkYXkgbmFtZXMgaW4gdGhlIHNwZWNpZmllZCBsb2NhbGUuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaXJzdHdlZWtkYXk9MCwgbG9jYWxlPU5vbmUpOgogICAgICAgIEhUTUxDYWxlbmRhci5fX2luaXRfXyhzZWxmLCBmaXJzdHdlZWtkYXkpCiAgICAgICAgaWYgbG9jYWxlIGlzIE5vbmU6CiAgICAgICAgICAgIGxvY2FsZSA9IF9nZXRfZGVmYXVsdF9sb2NhbGUoKQogICAgICAgIHNlbGYubG9jYWxlID0gbG9jYWxlCgogICAgZGVmIGZvcm1hdHdlZWtkYXkoc2VsZiwgZGF5KToKICAgICAgICB3aXRoIGRpZmZlcmVudF9sb2NhbGUoc2VsZi5sb2NhbGUpOgogICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5mb3JtYXR3ZWVrZGF5KGRheSkKCiAgICBkZWYgZm9ybWF0bW9udGhuYW1lKHNlbGYsIHRoZXllYXIsIHRoZW1vbnRoLCB3aXRoeWVhcj1UcnVlKToKICAgICAgICB3aXRoIGRpZmZlcmVudF9sb2NhbGUoc2VsZi5sb2NhbGUpOgogICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5mb3JtYXRtb250aG5hbWUodGhleWVhciwgdGhlbW9udGgsIHdpdGh5ZWFyKQoKIyBTdXBwb3J0IGZvciBvbGQgbW9kdWxlIGxldmVsIGludGVyZmFjZQpjID0gVGV4dENhbGVuZGFyKCkKCmZpcnN0d2Vla2RheSA9IGMuZ2V0Zmlyc3R3ZWVrZGF5CgpkZWYgc2V0Zmlyc3R3ZWVrZGF5KGZpcnN0d2Vla2RheSk6CiAgICBpZiBub3QgTU9OREFZIDw9IGZpcnN0d2Vla2RheSA8PSBTVU5EQVk6CiAgICAgICAgcmFpc2UgSWxsZWdhbFdlZWtkYXlFcnJvcihmaXJzdHdlZWtkYXkpCiAgICBjLmZpcnN0d2Vla2RheSA9IGZpcnN0d2Vla2RheQoKbW9udGhjYWxlbmRhciA9IGMubW9udGhkYXlzY2FsZW5kYXIKcHJ3ZWVrID0gYy5wcndlZWsKd2VlayA9IGMuZm9ybWF0d2Vlawp3ZWVraGVhZGVyID0gYy5mb3JtYXR3ZWVraGVhZGVyCnBybW9udGggPSBjLnBybW9udGgKbW9udGggPSBjLmZvcm1hdG1vbnRoCmNhbGVuZGFyID0gYy5mb3JtYXR5ZWFyCnByY2FsID0gYy5wcnllYXIKCgojIFNwYWNpbmcgb2YgbW9udGggY29sdW1ucyBmb3IgbXVsdGktY29sdW1uIHllYXIgY2FsZW5kYXIKX2NvbHdpZHRoID0gNyozIC0gMSAgICAgICAgICMgQW1vdW50IHByaW50ZWQgYnkgcHJ3ZWVrKCkKX3NwYWNpbmcgPSA2ICAgICAgICAgICAgICAgICMgTnVtYmVyIG9mIHNwYWNlcyBiZXR3ZWVuIGNvbHVtbnMKCgpkZWYgZm9ybWF0KGNvbHMsIGNvbHdpZHRoPV9jb2x3aWR0aCwgc3BhY2luZz1fc3BhY2luZyk6CiAgICAiIiJQcmludHMgbXVsdGktY29sdW1uIGZvcm1hdHRpbmcgZm9yIHllYXIgY2FsZW5kYXJzIiIiCiAgICBwcmludChmb3JtYXRzdHJpbmcoY29scywgY29sd2lkdGgsIHNwYWNpbmcpKQoKCmRlZiBmb3JtYXRzdHJpbmcoY29scywgY29sd2lkdGg9X2NvbHdpZHRoLCBzcGFjaW5nPV9zcGFjaW5nKToKICAgICIiIlJldHVybnMgYSBzdHJpbmcgZm9ybWF0dGVkIGZyb20gbiBzdHJpbmdzLCBjZW50ZXJlZCB3aXRoaW4gbiBjb2x1bW5zLiIiIgogICAgc3BhY2luZyAqPSAnICcKICAgIHJldHVybiBzcGFjaW5nLmpvaW4oYy5jZW50ZXIoY29sd2lkdGgpIGZvciBjIGluIGNvbHMpCgoKRVBPQ0ggPSAxOTcwCl9FUE9DSF9PUkQgPSBkYXRldGltZS5kYXRlKEVQT0NILCAxLCAxKS50b29yZGluYWwoKQoKCmRlZiB0aW1lZ20odHVwbGUpOgogICAgIiIiVW5yZWxhdGVkIGJ1dCBoYW5keSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgVW5peCB0aW1lc3RhbXAgZnJvbSBHTVQuIiIiCiAgICB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCA9IHR1cGxlWzo2XQogICAgZGF5cyA9IGRhdGV0aW1lLmRhdGUoeWVhciwgbW9udGgsIDEpLnRvb3JkaW5hbCgpIC0gX0VQT0NIX09SRCArIGRheSAtIDEKICAgIGhvdXJzID0gZGF5cyoyNCArIGhvdXIKICAgIG1pbnV0ZXMgPSBob3Vycyo2MCArIG1pbnV0ZQogICAgc2Vjb25kcyA9IG1pbnV0ZXMqNjAgKyBzZWNvbmQKICAgIHJldHVybiBzZWNvbmRzCgoKZGVmIG1haW4oYXJncyk6CiAgICBpbXBvcnQgYXJncGFyc2UKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgIHRleHRncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ3RleHQgb25seSBhcmd1bWVudHMnKQogICAgaHRtbGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnaHRtbCBvbmx5IGFyZ3VtZW50cycpCiAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICItdyIsICItLXdpZHRoIiwKICAgICAgICB0eXBlPWludCwgZGVmYXVsdD0yLAogICAgICAgIGhlbHA9IndpZHRoIG9mIGRhdGUgY29sdW1uIChkZWZhdWx0IDIpIgogICAgKQogICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAiLWwiLCAiLS1saW5lcyIsCiAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9MSwKICAgICAgICBoZWxwPSJudW1iZXIgb2YgbGluZXMgZm9yIGVhY2ggd2VlayAoZGVmYXVsdCAxKSIKICAgICkKICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgIi1zIiwgIi0tc3BhY2luZyIsCiAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9NiwKICAgICAgICBoZWxwPSJzcGFjaW5nIGJldHdlZW4gbW9udGhzIChkZWZhdWx0IDYpIgogICAgKQogICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAiLW0iLCAiLS1tb250aHMiLAogICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTMsCiAgICAgICAgaGVscD0ibW9udGhzIHBlciByb3cgKGRlZmF1bHQgMykiCiAgICApCiAgICBodG1sZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICItYyIsICItLWNzcyIsCiAgICAgICAgZGVmYXVsdD0iY2FsZW5kYXIuY3NzIiwKICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIgogICAgKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAiLUwiLCAiLS1sb2NhbGUiLAogICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICBoZWxwPSJsb2NhbGUgdG8gYmUgdXNlZCBmcm9tIG1vbnRoIGFuZCB3ZWVrZGF5IG5hbWVzIgogICAgKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAiLWUiLCAiLS1lbmNvZGluZyIsCiAgICAgICAgZGVmYXVsdD1Ob25lLAogICAgICAgIGhlbHA9ImVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0IgogICAgKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAiLXQiLCAiLS10eXBlIiwKICAgICAgICBkZWZhdWx0PSJ0ZXh0IiwKICAgICAgICBjaG9pY2VzPSgidGV4dCIsICJodG1sIiksCiAgICAgICAgaGVscD0ib3V0cHV0IHR5cGUgKHRleHQgb3IgaHRtbCkiCiAgICApCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICJ5ZWFyIiwKICAgICAgICBuYXJncz0nPycsIHR5cGU9aW50LAogICAgICAgIGhlbHA9InllYXIgbnVtYmVyICgxLTk5OTkpIgogICAgKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAibW9udGgiLAogICAgICAgIG5hcmdzPSc/JywgdHlwZT1pbnQsCiAgICAgICAgaGVscD0ibW9udGggbnVtYmVyICgxLTEyLCB0ZXh0IG9ubHkpIgogICAgKQoKICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzWzE6XSkKCiAgICBpZiBvcHRpb25zLmxvY2FsZSBhbmQgbm90IG9wdGlvbnMuZW5jb2Rpbmc6CiAgICAgICAgcGFyc2VyLmVycm9yKCJpZiAtLWxvY2FsZSBpcyBzcGVjaWZpZWQgLS1lbmNvZGluZyBpcyByZXF1aXJlZCIpCiAgICAgICAgc3lzLmV4aXQoMSkKCiAgICBsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSwgb3B0aW9ucy5lbmNvZGluZwoKICAgIGlmIG9wdGlvbnMudHlwZSA9PSAiaHRtbCI6CiAgICAgICAgaWYgb3B0aW9ucy5sb2NhbGU6CiAgICAgICAgICAgIGNhbCA9IExvY2FsZUhUTUxDYWxlbmRhcihsb2NhbGU9bG9jYWxlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNhbCA9IEhUTUxDYWxlbmRhcigpCiAgICAgICAgZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nCiAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKICAgICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkKICAgICAgICBvcHRkaWN0ID0gZGljdChlbmNvZGluZz1lbmNvZGluZywgY3NzPW9wdGlvbnMuY3NzKQogICAgICAgIHdyaXRlID0gc3lzLnN0ZG91dC5idWZmZXIud3JpdGUKICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgd3JpdGUoY2FsLmZvcm1hdHllYXJwYWdlKGRhdGV0aW1lLmRhdGUudG9kYXkoKS55ZWFyLCAqKm9wdGRpY3QpKQogICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgogICAgICAgICAgICB3cml0ZShjYWwuZm9ybWF0eWVhcnBhZ2Uob3B0aW9ucy55ZWFyLCAqKm9wdGRpY3QpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcnNlci5lcnJvcigiaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMiKQogICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgZWxzZToKICAgICAgICBpZiBvcHRpb25zLmxvY2FsZToKICAgICAgICAgICAgY2FsID0gTG9jYWxlVGV4dENhbGVuZGFyKGxvY2FsZT1sb2NhbGUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY2FsID0gVGV4dENhbGVuZGFyKCkKICAgICAgICBvcHRkaWN0ID0gZGljdCh3PW9wdGlvbnMud2lkdGgsIGw9b3B0aW9ucy5saW5lcykKICAgICAgICBpZiBvcHRpb25zLm1vbnRoIGlzIE5vbmU6CiAgICAgICAgICAgIG9wdGRpY3RbImMiXSA9IG9wdGlvbnMuc3BhY2luZwogICAgICAgICAgICBvcHRkaWN0WyJtIl0gPSBvcHRpb25zLm1vbnRocwogICAgICAgIGlmIG9wdGlvbnMueWVhciBpcyBOb25lOgogICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0eWVhcihkYXRldGltZS5kYXRlLnRvZGF5KCkueWVhciwgKipvcHRkaWN0KQogICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgogICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0eWVhcihvcHRpb25zLnllYXIsICoqb3B0ZGljdCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0bW9udGgob3B0aW9ucy55ZWFyLCBvcHRpb25zLm1vbnRoLCAqKm9wdGRpY3QpCiAgICAgICAgd3JpdGUgPSBzeXMuc3Rkb3V0LndyaXRlCiAgICAgICAgaWYgb3B0aW9ucy5lbmNvZGluZzoKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmVuY29kZShvcHRpb25zLmVuY29kaW5nKQogICAgICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlCiAgICAgICAgd3JpdGUocmVzdWx0KQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBtYWluKHN5cy5hcmd2KQpQSwMEFAAAAAAAAiCjVin54P50hgAAdIYAAAYAAABjZ2kucHkjISAvdXNyL2xvY2FsL2Jpbi9weXRob24KCiMgTk9URTogdGhlIGFib3ZlICIvdXNyL2xvY2FsL2Jpbi9weXRob24iIGlzIE5PVCBhIG1pc3Rha2UuICBJdCBpcwojIGludGVudGlvbmFsbHkgTk9UICIvdXNyL2Jpbi9lbnYgcHl0aG9uIi4gIE9uIG1hbnkgc3lzdGVtcwojIChlLmcuIFNvbGFyaXMpLCAvdXNyL2xvY2FsL2JpbiBpcyBub3QgaW4gJFBBVEggYXMgcGFzc2VkIHRvIENHSQojIHNjcmlwdHMsIGFuZCAvdXNyL2xvY2FsL2JpbiBpcyB0aGUgZGVmYXVsdCBkaXJlY3Rvcnkgd2hlcmUgUHl0aG9uIGlzCiMgaW5zdGFsbGVkLCBzbyAvdXNyL2Jpbi9lbnYgd291bGQgYmUgdW5hYmxlIHRvIGZpbmQgcHl0aG9uLiAgR3JhbnRlZCwKIyBiaW5hcnkgaW5zdGFsbGF0aW9ucyBieSBMaW51eCB2ZW5kb3JzIG9mdGVuIGluc3RhbGwgUHl0aG9uIGluCiMgL3Vzci9iaW4uICBTbyBsZXQgdGhvc2UgdmVuZG9ycyBwYXRjaCBjZ2kucHkgdG8gbWF0Y2ggdGhlaXIgY2hvaWNlCiMgb2YgaW5zdGFsbGF0aW9uLgoKIiIiU3VwcG9ydCBtb2R1bGUgZm9yIENHSSAoQ29tbW9uIEdhdGV3YXkgSW50ZXJmYWNlKSBzY3JpcHRzLgoKVGhpcyBtb2R1bGUgZGVmaW5lcyBhIG51bWJlciBvZiB1dGlsaXRpZXMgZm9yIHVzZSBieSBDR0kgc2NyaXB0cwp3cml0dGVuIGluIFB5dGhvbi4KClRoZSBnbG9iYWwgdmFyaWFibGUgbWF4bGVuIGNhbiBiZSBzZXQgdG8gYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtIHNpemUKb2YgYSBQT1NUIHJlcXVlc3QuIFBPU1QgcmVxdWVzdHMgbGFyZ2VyIHRoYW4gdGhpcyBzaXplIHdpbGwgcmVzdWx0IGluIGEKVmFsdWVFcnJvciBiZWluZyByYWlzZWQgZHVyaW5nIHBhcnNpbmcuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgMCwKbWVhbmluZyB0aGUgcmVxdWVzdCBzaXplIGlzIHVubGltaXRlZC4KIiIiCgojIEhpc3RvcnkKIyAtLS0tLS0tCiMKIyBNaWNoYWVsIE1jTGF5IHN0YXJ0ZWQgdGhpcyBtb2R1bGUuICBTdGV2ZSBNYWpld3NraSBjaGFuZ2VkIHRoZQojIGludGVyZmFjZSB0byBTdkZvcm1Db250ZW50RGljdCBhbmQgRm9ybUNvbnRlbnREaWN0LiAgVGhlIG11bHRpcGFydAojIHBhcnNpbmcgd2FzIGluc3BpcmVkIGJ5IGNvZGUgc3VibWl0dGVkIGJ5IEFuZHJlYXMgUGFlcGNrZS4gIEd1aWRvIHZhbgojIFJvc3N1bSByZXdyb3RlLCByZWZvcm1hdHRlZCBhbmQgZG9jdW1lbnRlZCB0aGUgbW9kdWxlIGFuZCBpcyBjdXJyZW50bHkKIyByZXNwb25zaWJsZSBmb3IgaXRzIG1haW50ZW5hbmNlLgojCgpfX3ZlcnNpb25fXyA9ICIyLjYiCgoKIyBJbXBvcnRzCiMgPT09PT09PQoKZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIEJ5dGVzSU8sIFRleHRJT1dyYXBwZXIKZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcKaW1wb3J0IHN5cwppbXBvcnQgb3MKaW1wb3J0IHVybGxpYi5wYXJzZQpmcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgRmVlZFBhcnNlcgpmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKaW1wb3J0IGh0bWwKaW1wb3J0IGxvY2FsZQppbXBvcnQgdGVtcGZpbGUKaW1wb3J0IHdhcm5pbmdzCgpfX2FsbF9fID0gWyJNaW5pRmllbGRTdG9yYWdlIiwgIkZpZWxkU3RvcmFnZSIsICJwYXJzZSIsICJwYXJzZV9tdWx0aXBhcnQiLAogICAgICAgICAgICJwYXJzZV9oZWFkZXIiLCAidGVzdCIsICJwcmludF9leGNlcHRpb24iLCAicHJpbnRfZW52aXJvbiIsCiAgICAgICAgICAgInByaW50X2Zvcm0iLCAicHJpbnRfZGlyZWN0b3J5IiwgInByaW50X2FyZ3VtZW50cyIsCiAgICAgICAgICAgInByaW50X2Vudmlyb25fdXNhZ2UiXQoKCndhcm5pbmdzLl9kZXByZWNhdGVkKF9fbmFtZV9fLCByZW1vdmU9KDMsMTMpKQoKIyBMb2dnaW5nIHN1cHBvcnQKIyA9PT09PT09PT09PT09PT0KCmxvZ2ZpbGUgPSAiIiAgICAgICAgICAgICMgRmlsZW5hbWUgdG8gbG9nIHRvLCBpZiBub3QgZW1wdHkKbG9nZnAgPSBOb25lICAgICAgICAgICAgIyBGaWxlIG9iamVjdCB0byBsb2cgdG8sIGlmIG5vdCBOb25lCgpkZWYgaW5pdGxvZygqYWxsYXJncyk6CiAgICAiIiJXcml0ZSBhIGxvZyBtZXNzYWdlLCBpZiB0aGVyZSBpcyBhIGxvZyBmaWxlLgoKICAgIEV2ZW4gdGhvdWdoIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluaXRsb2coKSwgeW91IHNob3VsZCBhbHdheXMKICAgIHVzZSBsb2coKTsgbG9nIGlzIGEgdmFyaWFibGUgdGhhdCBpcyBzZXQgZWl0aGVyIHRvIGluaXRsb2cKICAgIChpbml0aWFsbHkpLCB0byBkb2xvZyAob25jZSB0aGUgbG9nIGZpbGUgaGFzIGJlZW4gb3BlbmVkKSwgb3IgdG8KICAgIG5vbG9nICh3aGVuIGxvZ2dpbmcgaXMgZGlzYWJsZWQpLgoKICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGZvcm1hdCBzdHJpbmc7IHRoZSByZW1haW5pbmcgYXJndW1lbnRzIChpZgogICAgYW55KSBhcmUgYXJndW1lbnRzIHRvIHRoZSAlIG9wZXJhdG9yLCBzbyBlLmcuCiAgICAgICAgbG9nKCIlczogJXMiLCAiYSIsICJiIikKICAgIHdpbGwgd3JpdGUgImE6IGIiIHRvIHRoZSBsb2cgZmlsZSwgZm9sbG93ZWQgYnkgYSBuZXdsaW5lLgoKICAgIElmIHRoZSBnbG9iYWwgbG9nZnAgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgb2JqZWN0IHRvCiAgICB3aGljaCBsb2cgZGF0YSBpcyB3cml0dGVuLgoKICAgIElmIHRoZSBnbG9iYWwgbG9nZnAgaXMgTm9uZSwgdGhlIGdsb2JhbCBsb2dmaWxlIG1heSBiZSBhIHN0cmluZwogICAgZ2l2aW5nIGEgZmlsZW5hbWUgdG8gb3BlbiwgaW4gYXBwZW5kIG1vZGUuICBUaGlzIGZpbGUgc2hvdWxkIGJlCiAgICB3b3JsZCB3cml0YWJsZSEhISAgSWYgdGhlIGZpbGUgY2FuJ3QgYmUgb3BlbmVkLCBsb2dnaW5nIGlzCiAgICBzaWxlbnRseSBkaXNhYmxlZCAoc2luY2UgdGhlcmUgaXMgbm8gc2FmZSBwbGFjZSB3aGVyZSB3ZSBjb3VsZAogICAgc2VuZCBhbiBlcnJvciBtZXNzYWdlKS4KCiAgICAiIiIKICAgIGdsb2JhbCBsb2csIGxvZ2ZpbGUsIGxvZ2ZwCiAgICB3YXJuaW5ncy53YXJuKCJjZ2kubG9nKCkgaXMgZGVwcmVjYXRlZCBhcyBvZiAzLjEwLiBVc2UgbG9nZ2luZyBpbnN0ZWFkIiwKICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICBpZiBsb2dmaWxlIGFuZCBub3QgbG9nZnA6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBsb2dmcCA9IG9wZW4obG9nZmlsZSwgImEiLCBlbmNvZGluZz0ibG9jYWxlIikKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgaWYgbm90IGxvZ2ZwOgogICAgICAgIGxvZyA9IG5vbG9nCiAgICBlbHNlOgogICAgICAgIGxvZyA9IGRvbG9nCiAgICBsb2coKmFsbGFyZ3MpCgpkZWYgZG9sb2coZm10LCAqYXJncyk6CiAgICAiIiJXcml0ZSBhIGxvZyBtZXNzYWdlIHRvIHRoZSBsb2cgZmlsZS4gIFNlZSBpbml0bG9nKCkgZm9yIGRvY3MuIiIiCiAgICBsb2dmcC53cml0ZShmbXQlYXJncyArICJcbiIpCgpkZWYgbm9sb2coKmFsbGFyZ3MpOgogICAgIiIiRHVtbXkgZnVuY3Rpb24sIGFzc2lnbmVkIHRvIGxvZyB3aGVuIGxvZ2dpbmcgaXMgZGlzYWJsZWQuIiIiCiAgICBwYXNzCgpkZWYgY2xvc2Vsb2coKToKICAgICIiIkNsb3NlIHRoZSBsb2cgZmlsZS4iIiIKICAgIGdsb2JhbCBsb2csIGxvZ2ZpbGUsIGxvZ2ZwCiAgICBsb2dmaWxlID0gJycKICAgIGlmIGxvZ2ZwOgogICAgICAgIGxvZ2ZwLmNsb3NlKCkKICAgICAgICBsb2dmcCA9IE5vbmUKICAgIGxvZyA9IGluaXRsb2cKCmxvZyA9IGluaXRsb2cgICAgICAgICAgICMgVGhlIGN1cnJlbnQgbG9nZ2luZyBmdW5jdGlvbgoKCiMgUGFyc2luZyBmdW5jdGlvbnMKIyA9PT09PT09PT09PT09PT09PQoKIyBNYXhpbXVtIGlucHV0IHdlIHdpbGwgYWNjZXB0IHdoZW4gUkVRVUVTVF9NRVRIT0QgaXMgUE9TVAojIDAgPT0+IHVubGltaXRlZCBpbnB1dAptYXhsZW4gPSAwCgpkZWYgcGFyc2UoZnA9Tm9uZSwgZW52aXJvbj1vcy5lbnZpcm9uLCBrZWVwX2JsYW5rX3ZhbHVlcz0wLAogICAgICAgICAgc3RyaWN0X3BhcnNpbmc9MCwgc2VwYXJhdG9yPScmJyk6CiAgICAiIiJQYXJzZSBhIHF1ZXJ5IGluIHRoZSBlbnZpcm9ubWVudCBvciBmcm9tIGEgZmlsZSAoZGVmYXVsdCBzdGRpbikKCiAgICAgICAgQXJndW1lbnRzLCBhbGwgb3B0aW9uYWw6CgogICAgICAgIGZwICAgICAgICAgICAgICA6IGZpbGUgcG9pbnRlcjsgZGVmYXVsdDogc3lzLnN0ZGluLmJ1ZmZlcgoKICAgICAgICBlbnZpcm9uICAgICAgICAgOiBlbnZpcm9ubWVudCBkaWN0aW9uYXJ5OyBkZWZhdWx0OiBvcy5lbnZpcm9uCgogICAgICAgIGtlZXBfYmxhbmtfdmFsdWVzOiBmbGFnIGluZGljYXRpbmcgd2hldGhlciBibGFuayB2YWx1ZXMgaW4KICAgICAgICAgICAgcGVyY2VudC1lbmNvZGVkIGZvcm1zIHNob3VsZCBiZSB0cmVhdGVkIGFzIGJsYW5rIHN0cmluZ3MuCiAgICAgICAgICAgIEEgdHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBibGFua3Mgc2hvdWxkIGJlIHJldGFpbmVkIGFzCiAgICAgICAgICAgIGJsYW5rIHN0cmluZ3MuICBUaGUgZGVmYXVsdCBmYWxzZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdAogICAgICAgICAgICBibGFuayB2YWx1ZXMgYXJlIHRvIGJlIGlnbm9yZWQgYW5kIHRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlCiAgICAgICAgICAgIG5vdCBpbmNsdWRlZC4KCiAgICAgICAgc3RyaWN0X3BhcnNpbmc6IGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGRvIHdpdGggcGFyc2luZyBlcnJvcnMuCiAgICAgICAgICAgIElmIGZhbHNlICh0aGUgZGVmYXVsdCksIGVycm9ycyBhcmUgc2lsZW50bHkgaWdub3JlZC4KICAgICAgICAgICAgSWYgdHJ1ZSwgZXJyb3JzIHJhaXNlIGEgVmFsdWVFcnJvciBleGNlcHRpb24uCgogICAgICAgIHNlcGFyYXRvcjogc3RyLiBUaGUgc3ltYm9sIHRvIHVzZSBmb3Igc2VwYXJhdGluZyB0aGUgcXVlcnkgYXJndW1lbnRzLgogICAgICAgICAgICBEZWZhdWx0cyB0byAmLgogICAgIiIiCiAgICBpZiBmcCBpcyBOb25lOgogICAgICAgIGZwID0gc3lzLnN0ZGluCgogICAgIyBmaWVsZCBrZXlzIGFuZCB2YWx1ZXMgKGV4Y2VwdCBmb3IgZmlsZXMpIGFyZSByZXR1cm5lZCBhcyBzdHJpbmdzCiAgICAjIGFuIGVuY29kaW5nIGlzIHJlcXVpcmVkIHRvIGRlY29kZSB0aGUgYnl0ZXMgcmVhZCBmcm9tIHNlbGYuZnAKICAgIGlmIGhhc2F0dHIoZnAsJ2VuY29kaW5nJyk6CiAgICAgICAgZW5jb2RpbmcgPSBmcC5lbmNvZGluZwogICAgZWxzZToKICAgICAgICBlbmNvZGluZyA9ICdsYXRpbi0xJwoKICAgICMgZnAucmVhZCgpIG11c3QgcmV0dXJuIGJ5dGVzCiAgICBpZiBpc2luc3RhbmNlKGZwLCBUZXh0SU9XcmFwcGVyKToKICAgICAgICBmcCA9IGZwLmJ1ZmZlcgoKICAgIGlmIG5vdCAnUkVRVUVTVF9NRVRIT0QnIGluIGVudmlyb246CiAgICAgICAgZW52aXJvblsnUkVRVUVTVF9NRVRIT0QnXSA9ICdHRVQnICAgICAgICMgRm9yIHRlc3Rpbmcgc3RhbmQtYWxvbmUKICAgIGlmIGVudmlyb25bJ1JFUVVFU1RfTUVUSE9EJ10gPT0gJ1BPU1QnOgogICAgICAgIGN0eXBlLCBwZGljdCA9IHBhcnNlX2hlYWRlcihlbnZpcm9uWydDT05URU5UX1RZUEUnXSkKICAgICAgICBpZiBjdHlwZSA9PSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc6CiAgICAgICAgICAgIHJldHVybiBwYXJzZV9tdWx0aXBhcnQoZnAsIHBkaWN0LCBzZXBhcmF0b3I9c2VwYXJhdG9yKQogICAgICAgIGVsaWYgY3R5cGUgPT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc6CiAgICAgICAgICAgIGNsZW5ndGggPSBpbnQoZW52aXJvblsnQ09OVEVOVF9MRU5HVEgnXSkKICAgICAgICAgICAgaWYgbWF4bGVuIGFuZCBjbGVuZ3RoID4gbWF4bGVuOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTWF4aW11bSBjb250ZW50IGxlbmd0aCBleGNlZWRlZCcpCiAgICAgICAgICAgIHFzID0gZnAucmVhZChjbGVuZ3RoKS5kZWNvZGUoZW5jb2RpbmcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcXMgPSAnJyAgICAgICAgICAgICAgICAgICAgICMgVW5rbm93biBjb250ZW50LXR5cGUKICAgICAgICBpZiAnUVVFUllfU1RSSU5HJyBpbiBlbnZpcm9uOgogICAgICAgICAgICBpZiBxczogcXMgPSBxcyArICcmJwogICAgICAgICAgICBxcyA9IHFzICsgZW52aXJvblsnUVVFUllfU1RSSU5HJ10KICAgICAgICBlbGlmIHN5cy5hcmd2WzE6XToKICAgICAgICAgICAgaWYgcXM6IHFzID0gcXMgKyAnJicKICAgICAgICAgICAgcXMgPSBxcyArIHN5cy5hcmd2WzFdCiAgICAgICAgZW52aXJvblsnUVVFUllfU1RSSU5HJ10gPSBxcyAgICAjIFhYWCBTaG91bGRuJ3QsIHJlYWxseQogICAgZWxpZiAnUVVFUllfU1RSSU5HJyBpbiBlbnZpcm9uOgogICAgICAgIHFzID0gZW52aXJvblsnUVVFUllfU1RSSU5HJ10KICAgIGVsc2U6CiAgICAgICAgaWYgc3lzLmFyZ3ZbMTpdOgogICAgICAgICAgICBxcyA9IHN5cy5hcmd2WzFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcXMgPSAiIgogICAgICAgIGVudmlyb25bJ1FVRVJZX1NUUklORyddID0gcXMgICAgIyBYWFggU2hvdWxkbid0LCByZWFsbHkKICAgIHJldHVybiB1cmxsaWIucGFyc2UucGFyc2VfcXMocXMsIGtlZXBfYmxhbmtfdmFsdWVzLCBzdHJpY3RfcGFyc2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIHNlcGFyYXRvcj1zZXBhcmF0b3IpCgoKZGVmIHBhcnNlX211bHRpcGFydChmcCwgcGRpY3QsIGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0icmVwbGFjZSIsIHNlcGFyYXRvcj0nJicpOgogICAgIiIiUGFyc2UgbXVsdGlwYXJ0IGlucHV0LgoKICAgIEFyZ3VtZW50czoKICAgIGZwICAgOiBpbnB1dCBmaWxlCiAgICBwZGljdDogZGljdGlvbmFyeSBjb250YWluaW5nIG90aGVyIHBhcmFtZXRlcnMgb2YgY29udGVudC10eXBlIGhlYWRlcgogICAgZW5jb2RpbmcsIGVycm9yczogcmVxdWVzdCBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlciwgcGFzc2VkIHRvCiAgICAgICAgRmllbGRTdG9yYWdlCgogICAgUmV0dXJucyBhIGRpY3Rpb25hcnkganVzdCBsaWtlIHBhcnNlX3FzKCk6IGtleXMgYXJlIHRoZSBmaWVsZCBuYW1lcywgZWFjaAogICAgdmFsdWUgaXMgYSBsaXN0IG9mIHZhbHVlcyBmb3IgdGhhdCBmaWVsZC4gRm9yIG5vbi1maWxlIGZpZWxkcywgdGhlIHZhbHVlCiAgICBpcyBhIGxpc3Qgb2Ygc3RyaW5ncy4KICAgICIiIgogICAgIyBSRkMgMjA0NiwgU2VjdGlvbiA1LjEgOiBUaGUgIm11bHRpcGFydCIgYm91bmRhcnkgZGVsaW1pdGVycyBhcmUgYWx3YXlzCiAgICAjIHJlcHJlc2VudGVkIGFzIDdiaXQgVVMtQVNDSUkuCiAgICBib3VuZGFyeSA9IHBkaWN0Wydib3VuZGFyeSddLmRlY29kZSgnYXNjaWknKQogICAgY3R5cGUgPSAibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9e30iLmZvcm1hdChib3VuZGFyeSkKICAgIGhlYWRlcnMgPSBNZXNzYWdlKCkKICAgIGhlYWRlcnMuc2V0X3R5cGUoY3R5cGUpCiAgICB0cnk6CiAgICAgICAgaGVhZGVyc1snQ29udGVudC1MZW5ndGgnXSA9IHBkaWN0WydDT05URU5ULUxFTkdUSCddCiAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgcGFzcwogICAgZnMgPSBGaWVsZFN0b3JhZ2UoZnAsIGhlYWRlcnM9aGVhZGVycywgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMsCiAgICAgICAgZW52aXJvbj17J1JFUVVFU1RfTUVUSE9EJzogJ1BPU1QnfSwgc2VwYXJhdG9yPXNlcGFyYXRvcikKICAgIHJldHVybiB7azogZnMuZ2V0bGlzdChrKSBmb3IgayBpbiBmc30KCmRlZiBfcGFyc2VwYXJhbShzKToKICAgIHdoaWxlIHNbOjFdID09ICc7JzoKICAgICAgICBzID0gc1sxOl0KICAgICAgICBlbmQgPSBzLmZpbmQoJzsnKQogICAgICAgIHdoaWxlIGVuZCA+IDAgYW5kIChzLmNvdW50KCciJywgMCwgZW5kKSAtIHMuY291bnQoJ1xcIicsIDAsIGVuZCkpICUgMjoKICAgICAgICAgICAgZW5kID0gcy5maW5kKCc7JywgZW5kICsgMSkKICAgICAgICBpZiBlbmQgPCAwOgogICAgICAgICAgICBlbmQgPSBsZW4ocykKICAgICAgICBmID0gc1s6ZW5kXQogICAgICAgIHlpZWxkIGYuc3RyaXAoKQogICAgICAgIHMgPSBzW2VuZDpdCgpkZWYgcGFyc2VfaGVhZGVyKGxpbmUpOgogICAgIiIiUGFyc2UgYSBDb250ZW50LXR5cGUgbGlrZSBoZWFkZXIuCgogICAgUmV0dXJuIHRoZSBtYWluIGNvbnRlbnQtdHlwZSBhbmQgYSBkaWN0aW9uYXJ5IG9mIG9wdGlvbnMuCgogICAgIiIiCiAgICBwYXJ0cyA9IF9wYXJzZXBhcmFtKCc7JyArIGxpbmUpCiAgICBrZXkgPSBwYXJ0cy5fX25leHRfXygpCiAgICBwZGljdCA9IHt9CiAgICBmb3IgcCBpbiBwYXJ0czoKICAgICAgICBpID0gcC5maW5kKCc9JykKICAgICAgICBpZiBpID49IDA6CiAgICAgICAgICAgIG5hbWUgPSBwWzppXS5zdHJpcCgpLmxvd2VyKCkKICAgICAgICAgICAgdmFsdWUgPSBwW2krMTpdLnN0cmlwKCkKICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSA+PSAyIGFuZCB2YWx1ZVswXSA9PSB2YWx1ZVstMV0gPT0gJyInOgogICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOi0xXQogICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdcXFxcJywgJ1xcJykucmVwbGFjZSgnXFwiJywgJyInKQogICAgICAgICAgICBwZGljdFtuYW1lXSA9IHZhbHVlCiAgICByZXR1cm4ga2V5LCBwZGljdAoKCiMgQ2xhc3NlcyBmb3IgZmllbGQgc3RvcmFnZQojID09PT09PT09PT09PT09PT09PT09PT09PT0KCmNsYXNzIE1pbmlGaWVsZFN0b3JhZ2U6CgogICAgIiIiTGlrZSBGaWVsZFN0b3JhZ2UsIGZvciB1c2Ugd2hlbiBubyBmaWxlIHVwbG9hZHMgYXJlIHBvc3NpYmxlLiIiIgoKICAgICMgRHVtbXkgYXR0cmlidXRlcwogICAgZmlsZW5hbWUgPSBOb25lCiAgICBsaXN0ID0gTm9uZQogICAgdHlwZSA9IE5vbmUKICAgIGZpbGUgPSBOb25lCiAgICB0eXBlX29wdGlvbnMgPSB7fQogICAgZGlzcG9zaXRpb24gPSBOb25lCiAgICBkaXNwb3NpdGlvbl9vcHRpb25zID0ge30KICAgIGhlYWRlcnMgPSB7fQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgIiIiQ29uc3RydWN0b3IgZnJvbSBmaWVsZCBuYW1lIGFuZCB2YWx1ZS4iIiIKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCiAgICAgICAgIyBzZWxmLmZpbGUgPSBTdHJpbmdJTyh2YWx1ZSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHByaW50YWJsZSByZXByZXNlbnRhdGlvbi4iIiIKICAgICAgICByZXR1cm4gIk1pbmlGaWVsZFN0b3JhZ2UoJXIsICVyKSIgJSAoc2VsZi5uYW1lLCBzZWxmLnZhbHVlKQoKCmNsYXNzIEZpZWxkU3RvcmFnZToKCiAgICAiIiJTdG9yZSBhIHNlcXVlbmNlIG9mIGZpZWxkcywgcmVhZGluZyBtdWx0aXBhcnQvZm9ybS1kYXRhLgoKICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgbmFtaW5nLCB0eXBpbmcsIGZpbGVzIHN0b3JlZCBvbiBkaXNrLCBhbmQKICAgIG1vcmUuICBBdCB0aGUgdG9wIGxldmVsLCBpdCBpcyBhY2Nlc3NpYmxlIGxpa2UgYSBkaWN0aW9uYXJ5LCB3aG9zZQogICAga2V5cyBhcmUgdGhlIGZpZWxkIG5hbWVzLiAgKE5vdGU6IE5vbmUgY2FuIG9jY3VyIGFzIGEgZmllbGQgbmFtZS4pCiAgICBUaGUgaXRlbXMgYXJlIGVpdGhlciBhIFB5dGhvbiBsaXN0IChpZiB0aGVyZSdzIG11bHRpcGxlIHZhbHVlcykgb3IKICAgIGFub3RoZXIgRmllbGRTdG9yYWdlIG9yIE1pbmlGaWVsZFN0b3JhZ2Ugb2JqZWN0LiAgSWYgaXQncyBhIHNpbmdsZQogICAgb2JqZWN0LCBpdCBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgoKICAgIG5hbWU6IHRoZSBmaWVsZCBuYW1lLCBpZiBzcGVjaWZpZWQ7IG90aGVyd2lzZSBOb25lCgogICAgZmlsZW5hbWU6IHRoZSBmaWxlbmFtZSwgaWYgc3BlY2lmaWVkOyBvdGhlcndpc2UgTm9uZTsgdGhpcyBpcyB0aGUKICAgICAgICBjbGllbnQgc2lkZSBmaWxlbmFtZSwgKm5vdCogdGhlIGZpbGUgbmFtZSBvbiB3aGljaCBpdCBpcwogICAgICAgIHN0b3JlZCAodGhhdCdzIGEgdGVtcG9yYXJ5IGZpbGUgeW91IGRvbid0IGRlYWwgd2l0aCkKCiAgICB2YWx1ZTogdGhlIHZhbHVlIGFzIGEgKnN0cmluZyo7IGZvciBmaWxlIHVwbG9hZHMsIHRoaXMKICAgICAgICB0cmFuc3BhcmVudGx5IHJlYWRzIHRoZSBmaWxlIGV2ZXJ5IHRpbWUgeW91IHJlcXVlc3QgdGhlIHZhbHVlCiAgICAgICAgYW5kIHJldHVybnMgKmJ5dGVzKgoKICAgIGZpbGU6IHRoZSBmaWxlKC1saWtlKSBvYmplY3QgZnJvbSB3aGljaCB5b3UgY2FuIHJlYWQgdGhlIGRhdGEgKmFzCiAgICAgICAgYnl0ZXMqIDsgTm9uZSBpZiB0aGUgZGF0YSBpcyBzdG9yZWQgYSBzaW1wbGUgc3RyaW5nCgogICAgdHlwZTogdGhlIGNvbnRlbnQtdHlwZSwgb3IgTm9uZSBpZiBub3Qgc3BlY2lmaWVkCgogICAgdHlwZV9vcHRpb25zOiBkaWN0aW9uYXJ5IG9mIG9wdGlvbnMgc3BlY2lmaWVkIG9uIHRoZSBjb250ZW50LXR5cGUKICAgICAgICBsaW5lCgogICAgZGlzcG9zaXRpb246IGNvbnRlbnQtZGlzcG9zaXRpb24sIG9yIE5vbmUgaWYgbm90IHNwZWNpZmllZAoKICAgIGRpc3Bvc2l0aW9uX29wdGlvbnM6IGRpY3Rpb25hcnkgb2YgY29ycmVzcG9uZGluZyBvcHRpb25zCgogICAgaGVhZGVyczogYSBkaWN0aW9uYXJ5KC1saWtlKSBvYmplY3QgKHNvbWV0aW1lcyBlbWFpbC5tZXNzYWdlLk1lc3NhZ2Ugb3IgYQogICAgICAgIHN1YmNsYXNzIHRoZXJlb2YpIGNvbnRhaW5pbmcgKmFsbCogaGVhZGVycwoKICAgIFRoZSBjbGFzcyBpcyBzdWJjbGFzc2FibGUsIG1vc3RseSBmb3IgdGhlIHB1cnBvc2Ugb2Ygb3ZlcnJpZGluZwogICAgdGhlIG1ha2VfZmlsZSgpIG1ldGhvZCwgd2hpY2ggaXMgY2FsbGVkIGludGVybmFsbHkgdG8gY29tZSB1cCB3aXRoCiAgICBhIGZpbGUgb3BlbiBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4gIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8KICAgIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNob2ljZSBvZiBzdG9yaW5nIGFsbCBmaWxlcyBpbiBhIHRlbXBvcmFyeQogICAgZGlyZWN0b3J5IGFuZCB1bmxpbmtpbmcgdGhlbSBhcyBzb29uIGFzIHRoZXkgaGF2ZSBiZWVuIG9wZW5lZC4KCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcD1Ob25lLCBoZWFkZXJzPU5vbmUsIG91dGVyYm91bmRhcnk9YicnLAogICAgICAgICAgICAgICAgIGVudmlyb249b3MuZW52aXJvbiwga2VlcF9ibGFua192YWx1ZXM9MCwgc3RyaWN0X3BhcnNpbmc9MCwKICAgICAgICAgICAgICAgICBsaW1pdD1Ob25lLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3JlcGxhY2UnLAogICAgICAgICAgICAgICAgIG1heF9udW1fZmllbGRzPU5vbmUsIHNlcGFyYXRvcj0nJicpOgogICAgICAgICIiIkNvbnN0cnVjdG9yLiAgUmVhZCBtdWx0aXBhcnQvKiB1bnRpbCBsYXN0IHBhcnQuCgogICAgICAgIEFyZ3VtZW50cywgYWxsIG9wdGlvbmFsOgoKICAgICAgICBmcCAgICAgICAgICAgICAgOiBmaWxlIHBvaW50ZXI7IGRlZmF1bHQ6IHN5cy5zdGRpbi5idWZmZXIKICAgICAgICAgICAgKG5vdCB1c2VkIHdoZW4gdGhlIHJlcXVlc3QgbWV0aG9kIGlzIEdFVCkKICAgICAgICAgICAgQ2FuIGJlIDoKICAgICAgICAgICAgMS4gYSBUZXh0SU9XcmFwcGVyIG9iamVjdAogICAgICAgICAgICAyLiBhbiBvYmplY3Qgd2hvc2UgcmVhZCgpIGFuZCByZWFkbGluZSgpIG1ldGhvZHMgcmV0dXJuIGJ5dGVzCgogICAgICAgIGhlYWRlcnMgICAgICAgICA6IGhlYWRlciBkaWN0aW9uYXJ5LWxpa2Ugb2JqZWN0OyBkZWZhdWx0OgogICAgICAgICAgICB0YWtlbiBmcm9tIGVudmlyb24gYXMgcGVyIENHSSBzcGVjCgogICAgICAgIG91dGVyYm91bmRhcnkgICA6IHRlcm1pbmF0aW5nIG11bHRpcGFydCBib3VuZGFyeQogICAgICAgICAgICAoZm9yIGludGVybmFsIHVzZSBvbmx5KQoKICAgICAgICBlbnZpcm9uICAgICAgICAgOiBlbnZpcm9ubWVudCBkaWN0aW9uYXJ5OyBkZWZhdWx0OiBvcy5lbnZpcm9uCgogICAgICAgIGtlZXBfYmxhbmtfdmFsdWVzOiBmbGFnIGluZGljYXRpbmcgd2hldGhlciBibGFuayB2YWx1ZXMgaW4KICAgICAgICAgICAgcGVyY2VudC1lbmNvZGVkIGZvcm1zIHNob3VsZCBiZSB0cmVhdGVkIGFzIGJsYW5rIHN0cmluZ3MuCiAgICAgICAgICAgIEEgdHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBibGFua3Mgc2hvdWxkIGJlIHJldGFpbmVkIGFzCiAgICAgICAgICAgIGJsYW5rIHN0cmluZ3MuICBUaGUgZGVmYXVsdCBmYWxzZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdAogICAgICAgICAgICBibGFuayB2YWx1ZXMgYXJlIHRvIGJlIGlnbm9yZWQgYW5kIHRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlCiAgICAgICAgICAgIG5vdCBpbmNsdWRlZC4KCiAgICAgICAgc3RyaWN0X3BhcnNpbmc6IGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGRvIHdpdGggcGFyc2luZyBlcnJvcnMuCiAgICAgICAgICAgIElmIGZhbHNlICh0aGUgZGVmYXVsdCksIGVycm9ycyBhcmUgc2lsZW50bHkgaWdub3JlZC4KICAgICAgICAgICAgSWYgdHJ1ZSwgZXJyb3JzIHJhaXNlIGEgVmFsdWVFcnJvciBleGNlcHRpb24uCgogICAgICAgIGxpbWl0IDogdXNlZCBpbnRlcm5hbGx5IHRvIHJlYWQgcGFydHMgb2YgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBmb3JtcywKICAgICAgICAgICAgdG8gZXhpdCBmcm9tIHRoZSByZWFkaW5nIGxvb3Agd2hlbiByZWFjaGVkLiBJdCBpcyB0aGUgZGlmZmVyZW5jZQogICAgICAgICAgICBiZXR3ZWVuIHRoZSBmb3JtIGNvbnRlbnQtbGVuZ3RoIGFuZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFscmVhZHkKICAgICAgICAgICAgcmVhZAoKICAgICAgICBlbmNvZGluZywgZXJyb3JzIDogdGhlIGVuY29kaW5nIGFuZCBlcnJvciBoYW5kbGVyIHVzZWQgdG8gZGVjb2RlIHRoZQogICAgICAgICAgICBiaW5hcnkgc3RyZWFtIHRvIHN0cmluZ3MuIE11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIGNoYXJzZXQgZGVmaW5lZAogICAgICAgICAgICBmb3IgdGhlIHBhZ2Ugc2VuZGluZyB0aGUgZm9ybSAoY29udGVudC10eXBlIDogbWV0YSBodHRwLWVxdWl2IG9yCiAgICAgICAgICAgIGhlYWRlcikKCiAgICAgICAgbWF4X251bV9maWVsZHM6IGludC4gSWYgc2V0LCB0aGVuIF9faW5pdF9fIHRocm93cyBhIFZhbHVlRXJyb3IKICAgICAgICAgICAgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBuIGZpZWxkcyByZWFkIGJ5IHBhcnNlX3FzbCgpLgoKICAgICAgICAiIiIKICAgICAgICBtZXRob2QgPSAnR0VUJwogICAgICAgIHNlbGYua2VlcF9ibGFua192YWx1ZXMgPSBrZWVwX2JsYW5rX3ZhbHVlcwogICAgICAgIHNlbGYuc3RyaWN0X3BhcnNpbmcgPSBzdHJpY3RfcGFyc2luZwogICAgICAgIHNlbGYubWF4X251bV9maWVsZHMgPSBtYXhfbnVtX2ZpZWxkcwogICAgICAgIHNlbGYuc2VwYXJhdG9yID0gc2VwYXJhdG9yCiAgICAgICAgaWYgJ1JFUVVFU1RfTUVUSE9EJyBpbiBlbnZpcm9uOgogICAgICAgICAgICBtZXRob2QgPSBlbnZpcm9uWydSRVFVRVNUX01FVEhPRCddLnVwcGVyKCkKICAgICAgICBzZWxmLnFzX29uX3Bvc3QgPSBOb25lCiAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnIG9yIG1ldGhvZCA9PSAnSEVBRCc6CiAgICAgICAgICAgIGlmICdRVUVSWV9TVFJJTkcnIGluIGVudmlyb246CiAgICAgICAgICAgICAgICBxcyA9IGVudmlyb25bJ1FVRVJZX1NUUklORyddCiAgICAgICAgICAgIGVsaWYgc3lzLmFyZ3ZbMTpdOgogICAgICAgICAgICAgICAgcXMgPSBzeXMuYXJndlsxXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcXMgPSAiIgogICAgICAgICAgICBxcyA9IHFzLmVuY29kZShsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKSwgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgIGZwID0gQnl0ZXNJTyhxcykKICAgICAgICAgICAgaWYgaGVhZGVycyBpcyBOb25lOgogICAgICAgICAgICAgICAgaGVhZGVycyA9IHsnY29udGVudC10eXBlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9CiAgICAgICAgaWYgaGVhZGVycyBpcyBOb25lOgogICAgICAgICAgICBoZWFkZXJzID0ge30KICAgICAgICAgICAgaWYgbWV0aG9kID09ICdQT1NUJzoKICAgICAgICAgICAgICAgICMgU2V0IGRlZmF1bHQgY29udGVudC10eXBlIGZvciBQT1NUIHRvIHdoYXQncyB0cmFkaXRpb25hbAogICAgICAgICAgICAgICAgaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgogICAgICAgICAgICBpZiAnQ09OVEVOVF9UWVBFJyBpbiBlbnZpcm9uOgogICAgICAgICAgICAgICAgaGVhZGVyc1snY29udGVudC10eXBlJ10gPSBlbnZpcm9uWydDT05URU5UX1RZUEUnXQogICAgICAgICAgICBpZiAnUVVFUllfU1RSSU5HJyBpbiBlbnZpcm9uOgogICAgICAgICAgICAgICAgc2VsZi5xc19vbl9wb3N0ID0gZW52aXJvblsnUVVFUllfU1RSSU5HJ10KICAgICAgICAgICAgaWYgJ0NPTlRFTlRfTEVOR1RIJyBpbiBlbnZpcm9uOgogICAgICAgICAgICAgICAgaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSA9IGVudmlyb25bJ0NPTlRFTlRfTEVOR1RIJ10KICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UoaGVhZGVycywgKE1hcHBpbmcsIE1lc3NhZ2UpKSk6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImhlYWRlcnMgbXVzdCBiZSBtYXBwaW5nIG9yIGFuIGluc3RhbmNlIG9mICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1haWwubWVzc2FnZS5NZXNzYWdlIikKICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCiAgICAgICAgaWYgZnAgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5mcCA9IHN5cy5zdGRpbi5idWZmZXIKICAgICAgICAjIHNlbGYuZnAucmVhZCgpIG11c3QgcmV0dXJuIGJ5dGVzCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZwLCBUZXh0SU9XcmFwcGVyKToKICAgICAgICAgICAgc2VsZi5mcCA9IGZwLmJ1ZmZlcgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIG5vdCAoaGFzYXR0cihmcCwgJ3JlYWQnKSBhbmQgaGFzYXR0cihmcCwgJ3JlYWRsaW5lJykpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmcCBtdXN0IGJlIGZpbGUgcG9pbnRlciIpCiAgICAgICAgICAgIHNlbGYuZnAgPSBmcAoKICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdXRlcmJvdW5kYXJ5LCBieXRlcyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignb3V0ZXJib3VuZGFyeSBtdXN0IGJlIGJ5dGVzLCBub3QgJXMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUob3V0ZXJib3VuZGFyeSkuX19uYW1lX18pCiAgICAgICAgc2VsZi5vdXRlcmJvdW5kYXJ5ID0gb3V0ZXJib3VuZGFyeQoKICAgICAgICBzZWxmLmJ5dGVzX3JlYWQgPSAwCiAgICAgICAgc2VsZi5saW1pdCA9IGxpbWl0CgogICAgICAgICMgUHJvY2VzcyBjb250ZW50LWRpc3Bvc2l0aW9uIGhlYWRlcgogICAgICAgIGNkaXNwLCBwZGljdCA9ICIiLCB7fQogICAgICAgIGlmICdjb250ZW50LWRpc3Bvc2l0aW9uJyBpbiBzZWxmLmhlYWRlcnM6CiAgICAgICAgICAgIGNkaXNwLCBwZGljdCA9IHBhcnNlX2hlYWRlcihzZWxmLmhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkKICAgICAgICBzZWxmLmRpc3Bvc2l0aW9uID0gY2Rpc3AKICAgICAgICBzZWxmLmRpc3Bvc2l0aW9uX29wdGlvbnMgPSBwZGljdAogICAgICAgIHNlbGYubmFtZSA9IE5vbmUKICAgICAgICBpZiAnbmFtZScgaW4gcGRpY3Q6CiAgICAgICAgICAgIHNlbGYubmFtZSA9IHBkaWN0WyduYW1lJ10KICAgICAgICBzZWxmLmZpbGVuYW1lID0gTm9uZQogICAgICAgIGlmICdmaWxlbmFtZScgaW4gcGRpY3Q6CiAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBwZGljdFsnZmlsZW5hbWUnXQogICAgICAgIHNlbGYuX2JpbmFyeV9maWxlID0gc2VsZi5maWxlbmFtZSBpcyBub3QgTm9uZQoKICAgICAgICAjIFByb2Nlc3MgY29udGVudC10eXBlIGhlYWRlcgogICAgICAgICMKICAgICAgICAjIEhvbm9yIGFueSBleGlzdGluZyBjb250ZW50LXR5cGUgaGVhZGVyLiAgQnV0IGlmIHRoZXJlIGlzIG5vCiAgICAgICAgIyBjb250ZW50LXR5cGUgaGVhZGVyLCB1c2Ugc29tZSBzZW5zaWJsZSBkZWZhdWx0cy4gIEFzc3VtZQogICAgICAgICMgb3V0ZXJib3VuZGFyeSBpcyAiIiBhdCB0aGUgb3V0ZXIgbGV2ZWwsIGJ1dCBzb21ldGhpbmcgbm9uLWZhbHNlCiAgICAgICAgIyBpbnNpZGUgYSBtdWx0aS1wYXJ0LiAgVGhlIGRlZmF1bHQgZm9yIGFuIGlubmVyIHBhcnQgaXMgdGV4dC9wbGFpbiwKICAgICAgICAjIGJ1dCBmb3IgYW4gb3V0ZXIgcGFydCBpdCBzaG91bGQgYmUgdXJsZW5jb2RlZC4gIFRoaXMgc2hvdWxkIGNhdGNoCiAgICAgICAgIyBib2d1cyBjbGllbnRzIHdoaWNoIGVycm9uZW91c2x5IGZvcmdldCB0byBpbmNsdWRlIGEgY29udGVudC10eXBlCiAgICAgICAgIyBoZWFkZXIuCiAgICAgICAgIwogICAgICAgICMgU2VlIGJlbG93IGZvciB3aGF0IHdlIGRvIGlmIHRoZXJlIGRvZXMgZXhpc3QgYSBjb250ZW50LXR5cGUgaGVhZGVyLAogICAgICAgICMgYnV0IGl0IGhhcHBlbnMgdG8gYmUgc29tZXRoaW5nIHdlIGRvbid0IHVuZGVyc3RhbmQuCiAgICAgICAgaWYgJ2NvbnRlbnQtdHlwZScgaW4gc2VsZi5oZWFkZXJzOgogICAgICAgICAgICBjdHlwZSwgcGRpY3QgPSBwYXJzZV9oZWFkZXIoc2VsZi5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkKICAgICAgICBlbGlmIHNlbGYub3V0ZXJib3VuZGFyeSBvciBtZXRob2QgIT0gJ1BPU1QnOgogICAgICAgICAgICBjdHlwZSwgcGRpY3QgPSAidGV4dC9wbGFpbiIsIHt9CiAgICAgICAgZWxzZToKICAgICAgICAgICAgY3R5cGUsIHBkaWN0ID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsIHt9CiAgICAgICAgc2VsZi50eXBlID0gY3R5cGUKICAgICAgICBzZWxmLnR5cGVfb3B0aW9ucyA9IHBkaWN0CiAgICAgICAgaWYgJ2JvdW5kYXJ5JyBpbiBwZGljdDoKICAgICAgICAgICAgc2VsZi5pbm5lcmJvdW5kYXJ5ID0gcGRpY3RbJ2JvdW5kYXJ5J10uZW5jb2RlKHNlbGYuZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9ycykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmlubmVyYm91bmRhcnkgPSBiIiIKCiAgICAgICAgY2xlbiA9IC0xCiAgICAgICAgaWYgJ2NvbnRlbnQtbGVuZ3RoJyBpbiBzZWxmLmhlYWRlcnM6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGNsZW4gPSBpbnQoc2VsZi5oZWFkZXJzWydjb250ZW50LWxlbmd0aCddKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgaWYgbWF4bGVuIGFuZCBjbGVuID4gbWF4bGVuOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTWF4aW11bSBjb250ZW50IGxlbmd0aCBleGNlZWRlZCcpCiAgICAgICAgc2VsZi5sZW5ndGggPSBjbGVuCiAgICAgICAgaWYgc2VsZi5saW1pdCBpcyBOb25lIGFuZCBjbGVuID49IDA6CiAgICAgICAgICAgIHNlbGYubGltaXQgPSBjbGVuCgogICAgICAgIHNlbGYubGlzdCA9IHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICBzZWxmLmRvbmUgPSAwCiAgICAgICAgaWYgY3R5cGUgPT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc6CiAgICAgICAgICAgIHNlbGYucmVhZF91cmxlbmNvZGVkKCkKICAgICAgICBlbGlmIGN0eXBlWzoxMF0gPT0gJ211bHRpcGFydC8nOgogICAgICAgICAgICBzZWxmLnJlYWRfbXVsdGkoZW52aXJvbiwga2VlcF9ibGFua192YWx1ZXMsIHN0cmljdF9wYXJzaW5nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYucmVhZF9zaW5nbGUoKQoKICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBwcmludGFibGUgcmVwcmVzZW50YXRpb24uIiIiCiAgICAgICAgcmV0dXJuICJGaWVsZFN0b3JhZ2UoJXIsICVyLCAlcikiICUgKAogICAgICAgICAgICAgICAgc2VsZi5uYW1lLCBzZWxmLmZpbGVuYW1lLCBzZWxmLnZhbHVlKQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gaXRlcihzZWxmLmtleXMoKSkKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgaWYgbmFtZSAhPSAndmFsdWUnOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQogICAgICAgIGlmIHNlbGYuZmlsZToKICAgICAgICAgICAgc2VsZi5maWxlLnNlZWsoMCkKICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmZpbGUucmVhZCgpCiAgICAgICAgICAgIHNlbGYuZmlsZS5zZWVrKDApCiAgICAgICAgZWxpZiBzZWxmLmxpc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHZhbHVlID0gc2VsZi5saXN0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgdmFsdWUgPSBOb25lCiAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIiIiRGljdGlvbmFyeSBzdHlsZSBpbmRleGluZy4iIiIKICAgICAgICBpZiBzZWxmLmxpc3QgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgaW5kZXhhYmxlIikKICAgICAgICBmb3VuZCA9IFtdCiAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5saXN0OgogICAgICAgICAgICBpZiBpdGVtLm5hbWUgPT0ga2V5OiBmb3VuZC5hcHBlbmQoaXRlbSkKICAgICAgICBpZiBub3QgZm91bmQ6CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKICAgICAgICBpZiBsZW4oZm91bmQpID09IDE6CiAgICAgICAgICAgIHJldHVybiBmb3VuZFswXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBmb3VuZAoKICAgIGRlZiBnZXR2YWx1ZShzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgIiIiRGljdGlvbmFyeSBzdHlsZSBnZXQoKSBtZXRob2QsIGluY2x1ZGluZyAndmFsdWUnIGxvb2t1cC4iIiIKICAgICAgICBpZiBrZXkgaW4gc2VsZjoKICAgICAgICAgICAgdmFsdWUgPSBzZWxmW2tleV0KICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CiAgICAgICAgICAgICAgICByZXR1cm4gW3gudmFsdWUgZm9yIHggaW4gdmFsdWVdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gZGVmYXVsdAoKICAgIGRlZiBnZXRmaXJzdChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgIiIiIFJldHVybiB0aGUgZmlyc3QgdmFsdWUgcmVjZWl2ZWQuIiIiCiAgICAgICAgaWYga2V5IGluIHNlbGY6CiAgICAgICAgICAgIHZhbHVlID0gc2VsZltrZXldCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdLnZhbHVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gZGVmYXVsdAoKICAgIGRlZiBnZXRsaXN0KHNlbGYsIGtleSk6CiAgICAgICAgIiIiIFJldHVybiBsaXN0IG9mIHJlY2VpdmVkIHZhbHVlcy4iIiIKICAgICAgICBpZiBrZXkgaW4gc2VsZjoKICAgICAgICAgICAgdmFsdWUgPSBzZWxmW2tleV0KICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CiAgICAgICAgICAgICAgICByZXR1cm4gW3gudmFsdWUgZm9yIHggaW4gdmFsdWVdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gW3ZhbHVlLnZhbHVlXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBbXQoKICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgICIiIkRpY3Rpb25hcnkgc3R5bGUga2V5cygpIG1ldGhvZC4iIiIKICAgICAgICBpZiBzZWxmLmxpc3QgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgaW5kZXhhYmxlIikKICAgICAgICByZXR1cm4gbGlzdChzZXQoaXRlbS5uYW1lIGZvciBpdGVtIGluIHNlbGYubGlzdCkpCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgICIiIkRpY3Rpb25hcnkgc3R5bGUgX19jb250YWluc19fIG1ldGhvZC4iIiIKICAgICAgICBpZiBzZWxmLmxpc3QgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3QgaW5kZXhhYmxlIikKICAgICAgICByZXR1cm4gYW55KGl0ZW0ubmFtZSA9PSBrZXkgZm9yIGl0ZW0gaW4gc2VsZi5saXN0KQoKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICIiIkRpY3Rpb25hcnkgc3R5bGUgbGVuKHgpIHN1cHBvcnQuIiIiCiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmtleXMoKSkKCiAgICBkZWYgX19ib29sX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5saXN0IGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGJlIGNvbnZlcnRlZCB0byBib29sLiIpCiAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5saXN0KQoKICAgIGRlZiByZWFkX3VybGVuY29kZWQoc2VsZik6CiAgICAgICAgIiIiSW50ZXJuYWw6IHJlYWQgZGF0YSBpbiBxdWVyeSBzdHJpbmcgZm9ybWF0LiIiIgogICAgICAgIHFzID0gc2VsZi5mcC5yZWFkKHNlbGYubGVuZ3RoKQogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHFzLCBieXRlcyk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIHNob3VsZCByZXR1cm4gYnl0ZXMsIGdvdCAlcyIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYuZnAsIHR5cGUocXMpLl9fbmFtZV9fKSkKICAgICAgICBxcyA9IHFzLmRlY29kZShzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycykKICAgICAgICBpZiBzZWxmLnFzX29uX3Bvc3Q6CiAgICAgICAgICAgIHFzICs9ICcmJyArIHNlbGYucXNfb25fcG9zdAogICAgICAgIHF1ZXJ5ID0gdXJsbGliLnBhcnNlLnBhcnNlX3FzbCgKICAgICAgICAgICAgcXMsIHNlbGYua2VlcF9ibGFua192YWx1ZXMsIHNlbGYuc3RyaWN0X3BhcnNpbmcsCiAgICAgICAgICAgIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcsIGVycm9ycz1zZWxmLmVycm9ycywKICAgICAgICAgICAgbWF4X251bV9maWVsZHM9c2VsZi5tYXhfbnVtX2ZpZWxkcywgc2VwYXJhdG9yPXNlbGYuc2VwYXJhdG9yKQogICAgICAgIHNlbGYubGlzdCA9IFtNaW5pRmllbGRTdG9yYWdlKGtleSwgdmFsdWUpIGZvciBrZXksIHZhbHVlIGluIHF1ZXJ5XQogICAgICAgIHNlbGYuc2tpcF9saW5lcygpCgogICAgRmllbGRTdG9yYWdlQ2xhc3MgPSBOb25lCgogICAgZGVmIHJlYWRfbXVsdGkoc2VsZiwgZW52aXJvbiwga2VlcF9ibGFua192YWx1ZXMsIHN0cmljdF9wYXJzaW5nKToKICAgICAgICAiIiJJbnRlcm5hbDogcmVhZCBhIHBhcnQgdGhhdCBpcyBpdHNlbGYgbXVsdGlwYXJ0LiIiIgogICAgICAgIGliID0gc2VsZi5pbm5lcmJvdW5kYXJ5CiAgICAgICAgaWYgbm90IHZhbGlkX2JvdW5kYXJ5KGliKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBib3VuZGFyeSBpbiBtdWx0aXBhcnQgZm9ybTogJXInICUgKGliLCkpCiAgICAgICAgc2VsZi5saXN0ID0gW10KICAgICAgICBpZiBzZWxmLnFzX29uX3Bvc3Q6CiAgICAgICAgICAgIHF1ZXJ5ID0gdXJsbGliLnBhcnNlLnBhcnNlX3FzbCgKICAgICAgICAgICAgICAgIHNlbGYucXNfb25fcG9zdCwgc2VsZi5rZWVwX2JsYW5rX3ZhbHVlcywgc2VsZi5zdHJpY3RfcGFyc2luZywKICAgICAgICAgICAgICAgIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcsIGVycm9ycz1zZWxmLmVycm9ycywKICAgICAgICAgICAgICAgIG1heF9udW1fZmllbGRzPXNlbGYubWF4X251bV9maWVsZHMsIHNlcGFyYXRvcj1zZWxmLnNlcGFyYXRvcikKICAgICAgICAgICAgc2VsZi5saXN0LmV4dGVuZChNaW5pRmllbGRTdG9yYWdlKGtleSwgdmFsdWUpIGZvciBrZXksIHZhbHVlIGluIHF1ZXJ5KQoKICAgICAgICBrbGFzcyA9IHNlbGYuRmllbGRTdG9yYWdlQ2xhc3Mgb3Igc2VsZi5fX2NsYXNzX18KICAgICAgICBmaXJzdF9saW5lID0gc2VsZi5mcC5yZWFkbGluZSgpICMgYnl0ZXMKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmaXJzdF9saW5lLCBieXRlcyk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIHNob3VsZCByZXR1cm4gYnl0ZXMsIGdvdCAlcyIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYuZnAsIHR5cGUoZmlyc3RfbGluZSkuX19uYW1lX18pKQogICAgICAgIHNlbGYuYnl0ZXNfcmVhZCArPSBsZW4oZmlyc3RfbGluZSkKCiAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBjb25zdW1lIHRoZSBmaWxlIHVudGlsIHdlJ3ZlIGhpdCBvdXIgaW5uZXIgYm91bmRhcnkKICAgICAgICB3aGlsZSAoZmlyc3RfbGluZS5zdHJpcCgpICE9IChiIi0tIiArIHNlbGYuaW5uZXJib3VuZGFyeSkgYW5kCiAgICAgICAgICAgICAgICBmaXJzdF9saW5lKToKICAgICAgICAgICAgZmlyc3RfbGluZSA9IHNlbGYuZnAucmVhZGxpbmUoKQogICAgICAgICAgICBzZWxmLmJ5dGVzX3JlYWQgKz0gbGVuKGZpcnN0X2xpbmUpCgogICAgICAgICMgUHJvcGFnYXRlIG1heF9udW1fZmllbGRzIGludG8gdGhlIHN1YiBjbGFzcyBhcHByb3ByaWF0ZWx5CiAgICAgICAgbWF4X251bV9maWVsZHMgPSBzZWxmLm1heF9udW1fZmllbGRzCiAgICAgICAgaWYgbWF4X251bV9maWVsZHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG1heF9udW1fZmllbGRzIC09IGxlbihzZWxmLmxpc3QpCgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHBhcnNlciA9IEZlZWRQYXJzZXIoKQogICAgICAgICAgICBoZHJfdGV4dCA9IGIiIgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZnAucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgaGRyX3RleHQgKz0gZGF0YQogICAgICAgICAgICAgICAgaWYgbm90IGRhdGEuc3RyaXAoKToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiBub3QgaGRyX3RleHQ6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAjIHBhcnNlciB0YWtlcyBzdHJpbmdzLCBub3QgYnl0ZXMKICAgICAgICAgICAgc2VsZi5ieXRlc19yZWFkICs9IGxlbihoZHJfdGV4dCkKICAgICAgICAgICAgcGFyc2VyLmZlZWQoaGRyX3RleHQuZGVjb2RlKHNlbGYuZW5jb2RpbmcsIHNlbGYuZXJyb3JzKSkKICAgICAgICAgICAgaGVhZGVycyA9IHBhcnNlci5jbG9zZSgpCgogICAgICAgICAgICAjIFNvbWUgY2xpZW50cyBhZGQgQ29udGVudC1MZW5ndGggZm9yIHBhcnQgaGVhZGVycywgaWdub3JlIHRoZW0KICAgICAgICAgICAgaWYgJ2NvbnRlbnQtbGVuZ3RoJyBpbiBoZWFkZXJzOgogICAgICAgICAgICAgICAgZGVsIGhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ10KCiAgICAgICAgICAgIGxpbWl0ID0gTm9uZSBpZiBzZWxmLmxpbWl0IGlzIE5vbmUgXAogICAgICAgICAgICAgICAgZWxzZSBzZWxmLmxpbWl0IC0gc2VsZi5ieXRlc19yZWFkCiAgICAgICAgICAgIHBhcnQgPSBrbGFzcyhzZWxmLmZwLCBoZWFkZXJzLCBpYiwgZW52aXJvbiwga2VlcF9ibGFua192YWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RfcGFyc2luZywgbGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycywgbWF4X251bV9maWVsZHMsIHNlbGYuc2VwYXJhdG9yKQoKICAgICAgICAgICAgaWYgbWF4X251bV9maWVsZHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBtYXhfbnVtX2ZpZWxkcyAtPSAxCiAgICAgICAgICAgICAgICBpZiBwYXJ0Lmxpc3Q6CiAgICAgICAgICAgICAgICAgICAgbWF4X251bV9maWVsZHMgLT0gbGVuKHBhcnQubGlzdCkKICAgICAgICAgICAgICAgIGlmIG1heF9udW1fZmllbGRzIDwgMDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNYXggbnVtYmVyIG9mIGZpZWxkcyBleGNlZWRlZCcpCgogICAgICAgICAgICBzZWxmLmJ5dGVzX3JlYWQgKz0gcGFydC5ieXRlc19yZWFkCiAgICAgICAgICAgIHNlbGYubGlzdC5hcHBlbmQocGFydCkKICAgICAgICAgICAgaWYgcGFydC5kb25lIG9yIHNlbGYuYnl0ZXNfcmVhZCA+PSBzZWxmLmxlbmd0aCA+IDA6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHNlbGYuc2tpcF9saW5lcygpCgogICAgZGVmIHJlYWRfc2luZ2xlKHNlbGYpOgogICAgICAgICIiIkludGVybmFsOiByZWFkIGFuIGF0b21pYyBwYXJ0LiIiIgogICAgICAgIGlmIHNlbGYubGVuZ3RoID49IDA6CiAgICAgICAgICAgIHNlbGYucmVhZF9iaW5hcnkoKQogICAgICAgICAgICBzZWxmLnNraXBfbGluZXMoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYucmVhZF9saW5lcygpCiAgICAgICAgc2VsZi5maWxlLnNlZWsoMCkKCiAgICBidWZzaXplID0gOCoxMDI0ICAgICAgICAgICAgIyBJL08gYnVmZmVyaW5nIHNpemUgZm9yIGNvcHkgdG8gZmlsZQoKICAgIGRlZiByZWFkX2JpbmFyeShzZWxmKToKICAgICAgICAiIiJJbnRlcm5hbDogcmVhZCBiaW5hcnkgZGF0YS4iIiIKICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLm1ha2VfZmlsZSgpCiAgICAgICAgdG9kbyA9IHNlbGYubGVuZ3RoCiAgICAgICAgaWYgdG9kbyA+PSAwOgogICAgICAgICAgICB3aGlsZSB0b2RvID4gMDoKICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmZwLnJlYWQobWluKHRvZG8sIHNlbGYuYnVmc2l6ZSkpICMgYnl0ZXMKICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIGJ5dGVzKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBzaG91bGQgcmV0dXJuIGJ5dGVzLCBnb3QgJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmZwLCB0eXBlKGRhdGEpLl9fbmFtZV9fKSkKICAgICAgICAgICAgICAgIHNlbGYuYnl0ZXNfcmVhZCArPSBsZW4oZGF0YSkKICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgIHNlbGYuZG9uZSA9IC0xCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHNlbGYuZmlsZS53cml0ZShkYXRhKQogICAgICAgICAgICAgICAgdG9kbyA9IHRvZG8gLSBsZW4oZGF0YSkKCiAgICBkZWYgcmVhZF9saW5lcyhzZWxmKToKICAgICAgICAiIiJJbnRlcm5hbDogcmVhZCBsaW5lcyB1bnRpbCBFT0Ygb3Igb3V0ZXJib3VuZGFyeS4iIiIKICAgICAgICBpZiBzZWxmLl9iaW5hcnlfZmlsZToKICAgICAgICAgICAgc2VsZi5maWxlID0gc2VsZi5fX2ZpbGUgPSBCeXRlc0lPKCkgIyBzdG9yZSBkYXRhIGFzIGJ5dGVzIGZvciBmaWxlcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuX19maWxlID0gU3RyaW5nSU8oKSAjIGFzIHN0cmluZ3MgZm9yIG90aGVyIGZpZWxkcwogICAgICAgIGlmIHNlbGYub3V0ZXJib3VuZGFyeToKICAgICAgICAgICAgc2VsZi5yZWFkX2xpbmVzX3RvX291dGVyYm91bmRhcnkoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYucmVhZF9saW5lc190b19lb2YoKQoKICAgIGRlZiBfX3dyaXRlKHNlbGYsIGxpbmUpOgogICAgICAgICIiImxpbmUgaXMgYWx3YXlzIGJ5dGVzLCBub3Qgc3RyaW5nIiIiCiAgICAgICAgaWYgc2VsZi5fX2ZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYuX19maWxlLnRlbGwoKSArIGxlbihsaW5lKSA+IDEwMDA6CiAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLm1ha2VfZmlsZSgpCiAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fX2ZpbGUuZ2V0dmFsdWUoKQogICAgICAgICAgICAgICAgc2VsZi5maWxlLndyaXRlKGRhdGEpCiAgICAgICAgICAgICAgICBzZWxmLl9fZmlsZSA9IE5vbmUKICAgICAgICBpZiBzZWxmLl9iaW5hcnlfZmlsZToKICAgICAgICAgICAgIyBrZWVwIGJ5dGVzCiAgICAgICAgICAgIHNlbGYuZmlsZS53cml0ZShsaW5lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgZGVjb2RlIHRvIHN0cmluZwogICAgICAgICAgICBzZWxmLmZpbGUud3JpdGUobGluZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgc2VsZi5lcnJvcnMpKQoKICAgIGRlZiByZWFkX2xpbmVzX3RvX2VvZihzZWxmKToKICAgICAgICAiIiJJbnRlcm5hbDogcmVhZCBsaW5lcyB1bnRpbCBFT0YuIiIiCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgbGluZSA9IHNlbGYuZnAucmVhZGxpbmUoMTw8MTYpICMgYnl0ZXMKICAgICAgICAgICAgc2VsZi5ieXRlc19yZWFkICs9IGxlbihsaW5lKQogICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgIHNlbGYuZG9uZSA9IC0xCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBzZWxmLl9fd3JpdGUobGluZSkKCiAgICBkZWYgcmVhZF9saW5lc190b19vdXRlcmJvdW5kYXJ5KHNlbGYpOgogICAgICAgICIiIkludGVybmFsOiByZWFkIGxpbmVzIHVudGlsIG91dGVyYm91bmRhcnkuCiAgICAgICAgRGF0YSBpcyByZWFkIGFzIGJ5dGVzOiBib3VuZGFyaWVzIGFuZCBsaW5lIGVuZHMgbXVzdCBiZSBjb252ZXJ0ZWQKICAgICAgICB0byBieXRlcyBmb3IgY29tcGFyaXNvbnMuCiAgICAgICAgIiIiCiAgICAgICAgbmV4dF9ib3VuZGFyeSA9IGIiLS0iICsgc2VsZi5vdXRlcmJvdW5kYXJ5CiAgICAgICAgbGFzdF9ib3VuZGFyeSA9IG5leHRfYm91bmRhcnkgKyBiIi0tIgogICAgICAgIGRlbGltID0gYiIiCiAgICAgICAgbGFzdF9saW5lX2xmZW5kID0gVHJ1ZQogICAgICAgIF9yZWFkID0gMAogICAgICAgIHdoaWxlIDE6CgogICAgICAgICAgICBpZiBzZWxmLmxpbWl0IGlzIG5vdCBOb25lIGFuZCAwIDw9IHNlbGYubGltaXQgPD0gX3JlYWQ6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBsaW5lID0gc2VsZi5mcC5yZWFkbGluZSgxPDwxNikgIyBieXRlcwogICAgICAgICAgICBzZWxmLmJ5dGVzX3JlYWQgKz0gbGVuKGxpbmUpCiAgICAgICAgICAgIF9yZWFkICs9IGxlbihsaW5lKQogICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgIHNlbGYuZG9uZSA9IC0xCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiBkZWxpbSA9PSBiIlxyIjoKICAgICAgICAgICAgICAgIGxpbmUgPSBkZWxpbSArIGxpbmUKICAgICAgICAgICAgICAgIGRlbGltID0gYiIiCiAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChiIi0tIikgYW5kIGxhc3RfbGluZV9sZmVuZDoKICAgICAgICAgICAgICAgIHN0cmlwcGVkbGluZSA9IGxpbmUucnN0cmlwKCkKICAgICAgICAgICAgICAgIGlmIHN0cmlwcGVkbGluZSA9PSBuZXh0X2JvdW5kYXJ5OgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBpZiBzdHJpcHBlZGxpbmUgPT0gbGFzdF9ib3VuZGFyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLmRvbmUgPSAxCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgb2RlbGltID0gZGVsaW0KICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aChiIlxyXG4iKToKICAgICAgICAgICAgICAgIGRlbGltID0gYiJcclxuIgogICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXQogICAgICAgICAgICAgICAgbGFzdF9saW5lX2xmZW5kID0gVHJ1ZQogICAgICAgICAgICBlbGlmIGxpbmUuZW5kc3dpdGgoYiJcbiIpOgogICAgICAgICAgICAgICAgZGVsaW0gPSBiIlxuIgogICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQogICAgICAgICAgICAgICAgbGFzdF9saW5lX2xmZW5kID0gVHJ1ZQogICAgICAgICAgICBlbGlmIGxpbmUuZW5kc3dpdGgoYiJcciIpOgogICAgICAgICAgICAgICAgIyBXZSBtYXkgaW50ZXJydXB0IFxyXG4gc2VxdWVuY2VzIGlmIHRoZXkgc3BhbiB0aGUgMioqMTYKICAgICAgICAgICAgICAgICMgYnl0ZSBib3VuZGFyeQogICAgICAgICAgICAgICAgZGVsaW0gPSBiIlxyIgogICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQogICAgICAgICAgICAgICAgbGFzdF9saW5lX2xmZW5kID0gRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGRlbGltID0gYiIiCiAgICAgICAgICAgICAgICBsYXN0X2xpbmVfbGZlbmQgPSBGYWxzZQogICAgICAgICAgICBzZWxmLl9fd3JpdGUob2RlbGltICsgbGluZSkKCiAgICBkZWYgc2tpcF9saW5lcyhzZWxmKToKICAgICAgICAiIiJJbnRlcm5hbDogc2tpcCBsaW5lcyB1bnRpbCBvdXRlciBib3VuZGFyeSBpZiBkZWZpbmVkLiIiIgogICAgICAgIGlmIG5vdCBzZWxmLm91dGVyYm91bmRhcnkgb3Igc2VsZi5kb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBuZXh0X2JvdW5kYXJ5ID0gYiItLSIgKyBzZWxmLm91dGVyYm91bmRhcnkKICAgICAgICBsYXN0X2JvdW5kYXJ5ID0gbmV4dF9ib3VuZGFyeSArIGIiLS0iCiAgICAgICAgbGFzdF9saW5lX2xmZW5kID0gVHJ1ZQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGxpbmUgPSBzZWxmLmZwLnJlYWRsaW5lKDE8PDE2KQogICAgICAgICAgICBzZWxmLmJ5dGVzX3JlYWQgKz0gbGVuKGxpbmUpCiAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgc2VsZi5kb25lID0gLTEKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlmIGxpbmUuZW5kc3dpdGgoYiItLSIpIGFuZCBsYXN0X2xpbmVfbGZlbmQ6CiAgICAgICAgICAgICAgICBzdHJpcHBlZGxpbmUgPSBsaW5lLnN0cmlwKCkKICAgICAgICAgICAgICAgIGlmIHN0cmlwcGVkbGluZSA9PSBuZXh0X2JvdW5kYXJ5OgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBpZiBzdHJpcHBlZGxpbmUgPT0gbGFzdF9ib3VuZGFyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLmRvbmUgPSAxCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgbGFzdF9saW5lX2xmZW5kID0gbGluZS5lbmRzd2l0aChiJ1xuJykKCiAgICBkZWYgbWFrZV9maWxlKHNlbGYpOgogICAgICAgICIiIk92ZXJyaWRhYmxlOiByZXR1cm4gYSByZWFkYWJsZSAmIHdyaXRhYmxlIGZpbGUuCgogICAgICAgIFRoZSBmaWxlIHdpbGwgYmUgdXNlZCBhcyBmb2xsb3dzOgogICAgICAgIC0gZGF0YSBpcyB3cml0dGVuIHRvIGl0CiAgICAgICAgLSBzZWVrKDApCiAgICAgICAgLSBkYXRhIGlzIHJlYWQgZnJvbSBpdAoKICAgICAgICBUaGUgZmlsZSBpcyBvcGVuZWQgaW4gYmluYXJ5IG1vZGUgZm9yIGZpbGVzLCBpbiB0ZXh0IG1vZGUKICAgICAgICBmb3Igb3RoZXIgZmllbGRzCgogICAgICAgIFRoaXMgdmVyc2lvbiBvcGVucyBhIHRlbXBvcmFyeSBmaWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLAogICAgICAgIGFuZCBpbW1lZGlhdGVseSBkZWxldGVzICh1bmxpbmtzKSBpdC4gIFRoZSB0cmljayAob24gVW5peCEpIGlzCiAgICAgICAgdGhhdCB0aGUgZmlsZSBjYW4gc3RpbGwgYmUgdXNlZCwgYnV0IGl0IGNhbid0IGJlIG9wZW5lZCBieQogICAgICAgIGFub3RoZXIgcHJvY2VzcywgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBiZSBkZWxldGVkIHdoZW4gaXQKICAgICAgICBpcyBjbG9zZWQgb3Igd2hlbiB0aGUgY3VycmVudCBwcm9jZXNzIHRlcm1pbmF0ZXMuCgogICAgICAgIElmIHlvdSB3YW50IGEgbW9yZSBwZXJtYW5lbnQgZmlsZSwgeW91IGRlcml2ZSBhIGNsYXNzIHdoaWNoCiAgICAgICAgb3ZlcnJpZGVzIHRoaXMgbWV0aG9kLiAgSWYgeW91IHdhbnQgYSB2aXNpYmxlIHRlbXBvcmFyeSBmaWxlCiAgICAgICAgdGhhdCBpcyBuZXZlcnRoZWxlc3MgYXV0b21hdGljYWxseSBkZWxldGVkIHdoZW4gdGhlIHNjcmlwdAogICAgICAgIHRlcm1pbmF0ZXMsIHRyeSBkZWZpbmluZyBhIF9fZGVsX18gbWV0aG9kIGluIGEgZGVyaXZlZCBjbGFzcwogICAgICAgIHdoaWNoIHVubGlua3MgdGhlIHRlbXBvcmFyeSBmaWxlcyB5b3UgaGF2ZSBjcmVhdGVkLgoKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9iaW5hcnlfZmlsZToKICAgICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoIndiKyIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoIncrIiwKICAgICAgICAgICAgICAgIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcsIG5ld2xpbmUgPSAnXG4nKQoKCiMgVGVzdC9kZWJ1ZyBjb2RlCiMgPT09PT09PT09PT09PT09CgpkZWYgdGVzdChlbnZpcm9uPW9zLmVudmlyb24pOgogICAgIiIiUm9idXN0IHRlc3QgQ0dJIHNjcmlwdCwgdXNhYmxlIGFzIG1haW4gcHJvZ3JhbS4KCiAgICBXcml0ZSBtaW5pbWFsIEhUVFAgaGVhZGVycyBhbmQgZHVtcCBhbGwgaW5mb3JtYXRpb24gcHJvdmlkZWQgdG8KICAgIHRoZSBzY3JpcHQgaW4gSFRNTCBmb3JtLgoKICAgICIiIgogICAgcHJpbnQoIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sIikKICAgIHByaW50KCkKICAgIHN5cy5zdGRlcnIgPSBzeXMuc3Rkb3V0CiAgICB0cnk6CiAgICAgICAgZm9ybSA9IEZpZWxkU3RvcmFnZSgpICAgIyBSZXBsYWNlIHdpdGggb3RoZXIgY2xhc3NlcyB0byB0ZXN0IHRob3NlCiAgICAgICAgcHJpbnRfZGlyZWN0b3J5KCkKICAgICAgICBwcmludF9hcmd1bWVudHMoKQogICAgICAgIHByaW50X2Zvcm0oZm9ybSkKICAgICAgICBwcmludF9lbnZpcm9uKGVudmlyb24pCiAgICAgICAgcHJpbnRfZW52aXJvbl91c2FnZSgpCiAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgZXhlYygidGVzdGluZyBwcmludF9leGNlcHRpb24oKSAtLSA8ST5pdGFsaWNzPzwvST4iKQogICAgICAgIGRlZiBnKGY9Zik6CiAgICAgICAgICAgIGYoKQogICAgICAgIHByaW50KCI8SDM+V2hhdCBmb2xsb3dzIGlzIGEgdGVzdCwgbm90IGFuIGFjdHVhbCBleGNlcHRpb246PC9IMz4iKQogICAgICAgIGcoKQogICAgZXhjZXB0OgogICAgICAgIHByaW50X2V4Y2VwdGlvbigpCgogICAgcHJpbnQoIjxIMT5TZWNvbmQgdHJ5IHdpdGggYSBzbWFsbCBtYXhsZW4uLi48L0gxPiIpCgogICAgZ2xvYmFsIG1heGxlbgogICAgbWF4bGVuID0gNTAKICAgIHRyeToKICAgICAgICBmb3JtID0gRmllbGRTdG9yYWdlKCkgICAjIFJlcGxhY2Ugd2l0aCBvdGhlciBjbGFzc2VzIHRvIHRlc3QgdGhvc2UKICAgICAgICBwcmludF9kaXJlY3RvcnkoKQogICAgICAgIHByaW50X2FyZ3VtZW50cygpCiAgICAgICAgcHJpbnRfZm9ybShmb3JtKQogICAgICAgIHByaW50X2Vudmlyb24oZW52aXJvbikKICAgIGV4Y2VwdDoKICAgICAgICBwcmludF9leGNlcHRpb24oKQoKZGVmIHByaW50X2V4Y2VwdGlvbih0eXBlPU5vbmUsIHZhbHVlPU5vbmUsIHRiPU5vbmUsIGxpbWl0PU5vbmUpOgogICAgaWYgdHlwZSBpcyBOb25lOgogICAgICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICBwcmludCgpCiAgICBwcmludCgiPEgzPlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8L0gzPiIpCiAgICBsaXN0ID0gdHJhY2ViYWNrLmZvcm1hdF90Yih0YiwgbGltaXQpICsgXAogICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZSwgdmFsdWUpCiAgICBwcmludCgiPFBSRT4lczxCPiVzPC9CPjwvUFJFPiIgJSAoCiAgICAgICAgaHRtbC5lc2NhcGUoIiIuam9pbihsaXN0WzotMV0pKSwKICAgICAgICBodG1sLmVzY2FwZShsaXN0Wy0xXSksCiAgICAgICAgKSkKICAgIGRlbCB0YgoKZGVmIHByaW50X2Vudmlyb24oZW52aXJvbj1vcy5lbnZpcm9uKToKICAgICIiIkR1bXAgdGhlIHNoZWxsIGVudmlyb25tZW50IGFzIEhUTUwuIiIiCiAgICBrZXlzID0gc29ydGVkKGVudmlyb24ua2V5cygpKQogICAgcHJpbnQoKQogICAgcHJpbnQoIjxIMz5TaGVsbCBFbnZpcm9ubWVudDo8L0gzPiIpCiAgICBwcmludCgiPERMPiIpCiAgICBmb3Iga2V5IGluIGtleXM6CiAgICAgICAgcHJpbnQoIjxEVD4iLCBodG1sLmVzY2FwZShrZXkpLCAiPEREPiIsIGh0bWwuZXNjYXBlKGVudmlyb25ba2V5XSkpCiAgICBwcmludCgiPC9ETD4iKQogICAgcHJpbnQoKQoKZGVmIHByaW50X2Zvcm0oZm9ybSk6CiAgICAiIiJEdW1wIHRoZSBjb250ZW50cyBvZiBhIGZvcm0gYXMgSFRNTC4iIiIKICAgIGtleXMgPSBzb3J0ZWQoZm9ybS5rZXlzKCkpCiAgICBwcmludCgpCiAgICBwcmludCgiPEgzPkZvcm0gQ29udGVudHM6PC9IMz4iKQogICAgaWYgbm90IGtleXM6CiAgICAgICAgcHJpbnQoIjxQPk5vIGZvcm0gZmllbGRzLiIpCiAgICBwcmludCgiPERMPiIpCiAgICBmb3Iga2V5IGluIGtleXM6CiAgICAgICAgcHJpbnQoIjxEVD4iICsgaHRtbC5lc2NhcGUoa2V5KSArICI6IiwgZW5kPScgJykKICAgICAgICB2YWx1ZSA9IGZvcm1ba2V5XQogICAgICAgIHByaW50KCI8aT4iICsgaHRtbC5lc2NhcGUocmVwcih0eXBlKHZhbHVlKSkpICsgIjwvaT4iKQogICAgICAgIHByaW50KCI8REQ+IiArIGh0bWwuZXNjYXBlKHJlcHIodmFsdWUpKSkKICAgIHByaW50KCI8L0RMPiIpCiAgICBwcmludCgpCgpkZWYgcHJpbnRfZGlyZWN0b3J5KCk6CiAgICAiIiJEdW1wIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhcyBIVE1MLiIiIgogICAgcHJpbnQoKQogICAgcHJpbnQoIjxIMz5DdXJyZW50IFdvcmtpbmcgRGlyZWN0b3J5OjwvSDM+IikKICAgIHRyeToKICAgICAgICBwd2QgPSBvcy5nZXRjd2QoKQogICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgIHByaW50KCJPU0Vycm9yOiIsIGh0bWwuZXNjYXBlKHN0cihtc2cpKSkKICAgIGVsc2U6CiAgICAgICAgcHJpbnQoaHRtbC5lc2NhcGUocHdkKSkKICAgIHByaW50KCkKCmRlZiBwcmludF9hcmd1bWVudHMoKToKICAgIHByaW50KCkKICAgIHByaW50KCI8SDM+Q29tbWFuZCBMaW5lIEFyZ3VtZW50czo8L0gzPiIpCiAgICBwcmludCgpCiAgICBwcmludChzeXMuYXJndikKICAgIHByaW50KCkKCmRlZiBwcmludF9lbnZpcm9uX3VzYWdlKCk6CiAgICAiIiJEdW1wIGEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdXNlZCBieSBDR0kgYXMgSFRNTC4iIiIKICAgIHByaW50KCIiIgo8SDM+VGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNvdWxkIGhhdmUgYmVlbiBzZXQ6PC9IMz4KPFVMPgo8TEk+QVVUSF9UWVBFCjxMST5DT05URU5UX0xFTkdUSAo8TEk+Q09OVEVOVF9UWVBFCjxMST5EQVRFX0dNVAo8TEk+REFURV9MT0NBTAo8TEk+RE9DVU1FTlRfTkFNRQo8TEk+RE9DVU1FTlRfUk9PVAo8TEk+RE9DVU1FTlRfVVJJCjxMST5HQVRFV0FZX0lOVEVSRkFDRQo8TEk+TEFTVF9NT0RJRklFRAo8TEk+UEFUSAo8TEk+UEFUSF9JTkZPCjxMST5QQVRIX1RSQU5TTEFURUQKPExJPlFVRVJZX1NUUklORwo8TEk+UkVNT1RFX0FERFIKPExJPlJFTU9URV9IT1NUCjxMST5SRU1PVEVfSURFTlQKPExJPlJFTU9URV9VU0VSCjxMST5SRVFVRVNUX01FVEhPRAo8TEk+U0NSSVBUX05BTUUKPExJPlNFUlZFUl9OQU1FCjxMST5TRVJWRVJfUE9SVAo8TEk+U0VSVkVSX1BST1RPQ09MCjxMST5TRVJWRVJfUk9PVAo8TEk+U0VSVkVSX1NPRlRXQVJFCjwvVUw+CkluIGFkZGl0aW9uLCBIVFRQIGhlYWRlcnMgc2VudCBieSB0aGUgc2VydmVyIG1heSBiZSBwYXNzZWQgaW4gdGhlCmVudmlyb25tZW50IGFzIHdlbGwuICBIZXJlIGFyZSBzb21lIGNvbW1vbiB2YXJpYWJsZSBuYW1lczoKPFVMPgo8TEk+SFRUUF9BQ0NFUFQKPExJPkhUVFBfQ09OTkVDVElPTgo8TEk+SFRUUF9IT1NUCjxMST5IVFRQX1BSQUdNQQo8TEk+SFRUUF9SRUZFUkVSCjxMST5IVFRQX1VTRVJfQUdFTlQKPC9VTD4KIiIiKQoKCiMgVXRpbGl0aWVzCiMgPT09PT09PT09CgpkZWYgdmFsaWRfYm91bmRhcnkocyk6CiAgICBpbXBvcnQgcmUKICAgIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgogICAgICAgIF92Yl9wYXR0ZXJuID0gYiJeWyAtfl17MCwyMDB9WyEtfl0kIgogICAgZWxzZToKICAgICAgICBfdmJfcGF0dGVybiA9ICJeWyAtfl17MCwyMDB9WyEtfl0kIgogICAgcmV0dXJuIHJlLm1hdGNoKF92Yl9wYXR0ZXJuLCBzKQoKIyBJbnZva2UgbWFpbmxpbmUKIyA9PT09PT09PT09PT09PT0KCiMgQ2FsbCB0ZXN0KCkgd2hlbiB0aGlzIGZpbGUgaXMgcnVuIGFzIGEgc2NyaXB0IChub3QgaW1wb3J0ZWQgYXMgYSBtb2R1bGUpCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB0ZXN0KCkKUEsDBBQAAAAAAAIgo1a13AWwhTAAAIUwAAAIAAAAY2dpdGIucHkiIiJNb3JlIGNvbXByZWhlbnNpdmUgdHJhY2ViYWNrIGZvcm1hdHRpbmcgZm9yIFB5dGhvbiBzY3JpcHRzLgoKVG8gZW5hYmxlIHRoaXMgbW9kdWxlLCBkbzoKCiAgICBpbXBvcnQgY2dpdGI7IGNnaXRiLmVuYWJsZSgpCgphdCB0aGUgdG9wIG9mIHlvdXIgc2NyaXB0LiAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBlbmFibGUoKSBhcmU6CgogICAgZGlzcGxheSAgICAgLSBpZiB0cnVlLCB0cmFjZWJhY2tzIGFyZSBkaXNwbGF5ZWQgaW4gdGhlIHdlYiBicm93c2VyCiAgICBsb2dkaXIgICAgICAtIGlmIHNldCwgdHJhY2ViYWNrcyBhcmUgd3JpdHRlbiB0byBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeQogICAgY29udGV4dCAgICAgLSBudW1iZXIgb2YgbGluZXMgb2Ygc291cmNlIGNvZGUgdG8gc2hvdyBmb3IgZWFjaCBzdGFjayBmcmFtZQogICAgZm9ybWF0ICAgICAgLSAndGV4dCcgb3IgJ2h0bWwnIGNvbnRyb2xzIHRoZSBvdXRwdXQgZm9ybWF0CgpCeSBkZWZhdWx0LCB0cmFjZWJhY2tzIGFyZSBkaXNwbGF5ZWQgYnV0IG5vdCBzYXZlZCwgdGhlIGNvbnRleHQgaXMgNSBsaW5lcwphbmQgdGhlIG91dHB1dCBmb3JtYXQgaXMgJ2h0bWwnIChmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKb3JpZ2luYWwgdXNlIG9mIHRoaXMgbW9kdWxlKQoKQWx0ZXJuYXRpdmVseSwgaWYgeW91IGhhdmUgY2F1Z2h0IGFuIGV4Y2VwdGlvbiBhbmQgd2FudCBjZ2l0YiB0byBkaXNwbGF5IGl0CmZvciB5b3UsIGNhbGwgY2dpdGIuaGFuZGxlcigpLiAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRvIGhhbmRsZXIoKSBpcyBhCjMtaXRlbSB0dXBsZSAoZXR5cGUsIGV2YWx1ZSwgZXRiKSBqdXN0IGxpa2UgdGhlIHZhbHVlIG9mIHN5cy5leGNfaW5mbygpLgpUaGUgZGVmYXVsdCBoYW5kbGVyIGRpc3BsYXlzIG91dHB1dCBhcyBIVE1MLgoKIiIiCmltcG9ydCBpbnNwZWN0CmltcG9ydCBrZXl3b3JkCmltcG9ydCBsaW5lY2FjaGUKaW1wb3J0IG9zCmltcG9ydCBweWRvYwppbXBvcnQgc3lzCmltcG9ydCB0ZW1wZmlsZQppbXBvcnQgdGltZQppbXBvcnQgdG9rZW5pemUKaW1wb3J0IHRyYWNlYmFjawppbXBvcnQgd2FybmluZ3MKZnJvbSBodG1sIGltcG9ydCBlc2NhcGUgYXMgaHRtbF9lc2NhcGUKCndhcm5pbmdzLl9kZXByZWNhdGVkKF9fbmFtZV9fLCByZW1vdmU9KDMsIDEzKSkKCgpkZWYgcmVzZXQoKToKICAgICIiIlJldHVybiBhIHN0cmluZyB0aGF0IHJlc2V0cyB0aGUgQ0dJIGFuZCBicm93c2VyIHRvIGEga25vd24gc3RhdGUuIiIiCiAgICByZXR1cm4gJycnPCEtLTogc3BhbQpDb250ZW50LVR5cGU6IHRleHQvaHRtbAoKPGJvZHkgYmdjb2xvcj0iI2YwZjBmOCI+PGZvbnQgY29sb3I9IiNmMGYwZjgiIHNpemU9Ii01Ij4gLS0+Cjxib2R5IGJnY29sb3I9IiNmMGYwZjgiPjxmb250IGNvbG9yPSIjZjBmMGY4IiBzaXplPSItNSI+IC0tPiAtLT4KPC9mb250PiA8L2ZvbnQ+IDwvZm9udD4gPC9zY3JpcHQ+IDwvb2JqZWN0PiA8L2Jsb2NrcXVvdGU+IDwvcHJlPgo8L3RhYmxlPiA8L3RhYmxlPiA8L3RhYmxlPiA8L3RhYmxlPiA8L3RhYmxlPiA8L2ZvbnQ+IDwvZm9udD4gPC9mb250PicnJwoKX19VTkRFRl9fID0gW10gICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBzcGVjaWFsIHNlbnRpbmVsIG9iamVjdApkZWYgc21hbGwodGV4dCk6CiAgICBpZiB0ZXh0OgogICAgICAgIHJldHVybiAnPHNtYWxsPicgKyB0ZXh0ICsgJzwvc21hbGw+JwogICAgZWxzZToKICAgICAgICByZXR1cm4gJycKCmRlZiBzdHJvbmcodGV4dCk6CiAgICBpZiB0ZXh0OgogICAgICAgIHJldHVybiAnPHN0cm9uZz4nICsgdGV4dCArICc8L3N0cm9uZz4nCiAgICBlbHNlOgogICAgICAgIHJldHVybiAnJwoKZGVmIGdyZXkodGV4dCk6CiAgICBpZiB0ZXh0OgogICAgICAgIHJldHVybiAnPGZvbnQgY29sb3I9IiM5MDkwOTAiPicgKyB0ZXh0ICsgJzwvZm9udD4nCiAgICBlbHNlOgogICAgICAgIHJldHVybiAnJwoKZGVmIGxvb2t1cChuYW1lLCBmcmFtZSwgbG9jYWxzKToKICAgICIiIkZpbmQgdGhlIHZhbHVlIGZvciBhIGdpdmVuIG5hbWUgaW4gdGhlIGdpdmVuIGVudmlyb25tZW50LiIiIgogICAgaWYgbmFtZSBpbiBsb2NhbHM6CiAgICAgICAgcmV0dXJuICdsb2NhbCcsIGxvY2Fsc1tuYW1lXQogICAgaWYgbmFtZSBpbiBmcmFtZS5mX2dsb2JhbHM6CiAgICAgICAgcmV0dXJuICdnbG9iYWwnLCBmcmFtZS5mX2dsb2JhbHNbbmFtZV0KICAgIGlmICdfX2J1aWx0aW5zX18nIGluIGZyYW1lLmZfZ2xvYmFsczoKICAgICAgICBidWlsdGlucyA9IGZyYW1lLmZfZ2xvYmFsc1snX19idWlsdGluc19fJ10KICAgICAgICBpZiB0eXBlKGJ1aWx0aW5zKSBpcyB0eXBlKHt9KToKICAgICAgICAgICAgaWYgbmFtZSBpbiBidWlsdGluczoKICAgICAgICAgICAgICAgIHJldHVybiAnYnVpbHRpbicsIGJ1aWx0aW5zW25hbWVdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgaGFzYXR0cihidWlsdGlucywgbmFtZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gJ2J1aWx0aW4nLCBnZXRhdHRyKGJ1aWx0aW5zLCBuYW1lKQogICAgcmV0dXJuIE5vbmUsIF9fVU5ERUZfXwoKZGVmIHNjYW52YXJzKHJlYWRlciwgZnJhbWUsIGxvY2Fscyk6CiAgICAiIiJTY2FuIG9uZSBsb2dpY2FsIGxpbmUgb2YgUHl0aG9uIGFuZCBsb29rIHVwIHZhbHVlcyBvZiB2YXJpYWJsZXMgdXNlZC4iIiIKICAgIHZhcnMsIGxhc3R0b2tlbiwgcGFyZW50LCBwcmVmaXgsIHZhbHVlID0gW10sIE5vbmUsIE5vbmUsICcnLCBfX1VOREVGX18KICAgIGZvciB0dHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUgaW4gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKHJlYWRlcik6CiAgICAgICAgaWYgdHR5cGUgPT0gdG9rZW5pemUuTkVXTElORTogYnJlYWsKICAgICAgICBpZiB0dHlwZSA9PSB0b2tlbml6ZS5OQU1FIGFuZCB0b2tlbiBub3QgaW4ga2V5d29yZC5rd2xpc3Q6CiAgICAgICAgICAgIGlmIGxhc3R0b2tlbiA9PSAnLic6CiAgICAgICAgICAgICAgICBpZiBwYXJlbnQgaXMgbm90IF9fVU5ERUZfXzoKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldGF0dHIocGFyZW50LCB0b2tlbiwgX19VTkRFRl9fKQogICAgICAgICAgICAgICAgICAgIHZhcnMuYXBwZW5kKChwcmVmaXggKyB0b2tlbiwgcHJlZml4LCB2YWx1ZSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB3aGVyZSwgdmFsdWUgPSBsb29rdXAodG9rZW4sIGZyYW1lLCBsb2NhbHMpCiAgICAgICAgICAgICAgICB2YXJzLmFwcGVuZCgodG9rZW4sIHdoZXJlLCB2YWx1ZSkpCiAgICAgICAgZWxpZiB0b2tlbiA9PSAnLic6CiAgICAgICAgICAgIHByZWZpeCArPSBsYXN0dG9rZW4gKyAnLicKICAgICAgICAgICAgcGFyZW50ID0gdmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXJlbnQsIHByZWZpeCA9IE5vbmUsICcnCiAgICAgICAgbGFzdHRva2VuID0gdG9rZW4KICAgIHJldHVybiB2YXJzCgpkZWYgaHRtbChlaW5mbywgY29udGV4dD01KToKICAgICIiIlJldHVybiBhIG5pY2UgSFRNTCBkb2N1bWVudCBkZXNjcmliaW5nIGEgZ2l2ZW4gdHJhY2ViYWNrLiIiIgogICAgZXR5cGUsIGV2YWx1ZSwgZXRiID0gZWluZm8KICAgIGlmIGlzaW5zdGFuY2UoZXR5cGUsIHR5cGUpOgogICAgICAgIGV0eXBlID0gZXR5cGUuX19uYW1lX18KICAgIHB5dmVyID0gJ1B5dGhvbiAnICsgc3lzLnZlcnNpb24uc3BsaXQoKVswXSArICc6ICcgKyBzeXMuZXhlY3V0YWJsZQogICAgZGF0ZSA9IHRpbWUuY3RpbWUodGltZS50aW1lKCkpCiAgICBoZWFkID0gZicnJwo8Ym9keSBiZ2NvbG9yPSIjZjBmMGY4Ij4KPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTIgYm9yZGVyPTAgc3VtbWFyeT0iaGVhZGluZyI+Cjx0ciBiZ2NvbG9yPSIjNjYyMmFhIj4KPHRkIHZhbGlnbj1ib3R0b20+Jm5ic3A7PGJyPgo8Zm9udCBjb2xvcj0iI2ZmZmZmZiIgZmFjZT0iaGVsdmV0aWNhLCBhcmlhbCI+Jm5ic3A7PGJyPgo8YmlnPjxiaWc+PHN0cm9uZz57aHRtbF9lc2NhcGUoc3RyKGV0eXBlKSl9PC9zdHJvbmc+PC9iaWc+PC9iaWc+PC9mb250PjwvdGQ+Cjx0ZCBhbGlnbj1yaWdodCB2YWxpZ249Ym90dG9tPgo8Zm9udCBjb2xvcj0iI2ZmZmZmZiIgZmFjZT0iaGVsdmV0aWNhLCBhcmlhbCI+e3B5dmVyfTxicj57ZGF0ZX08L2ZvbnQ+PC90ZD4KPC90cj48L3RhYmxlPgo8cD5BIHByb2JsZW0gb2NjdXJyZWQgaW4gYSBQeXRob24gc2NyaXB0LiAgSGVyZSBpcyB0aGUgc2VxdWVuY2Ugb2YKZnVuY3Rpb24gY2FsbHMgbGVhZGluZyB1cCB0byB0aGUgZXJyb3IsIGluIHRoZSBvcmRlciB0aGV5IG9jY3VycmVkLjwvcD4nJycKCiAgICBpbmRlbnQgPSAnPHR0PicgKyBzbWFsbCgnJm5ic3A7JyAqIDUpICsgJyZuYnNwOzwvdHQ+JwogICAgZnJhbWVzID0gW10KICAgIHJlY29yZHMgPSBpbnNwZWN0LmdldGlubmVyZnJhbWVzKGV0YiwgY29udGV4dCkKICAgIGZvciBmcmFtZSwgZmlsZSwgbG51bSwgZnVuYywgbGluZXMsIGluZGV4IGluIHJlY29yZHM6CiAgICAgICAgaWYgZmlsZToKICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguYWJzcGF0aChmaWxlKQogICAgICAgICAgICBsaW5rID0gJzxhIGhyZWY9ImZpbGU6Ly8lcyI+JXM8L2E+JyAlIChmaWxlLCBweWRvYy5odG1sLmVzY2FwZShmaWxlKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBmaWxlID0gbGluayA9ICc/JwogICAgICAgIGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBsb2NhbHMgPSBpbnNwZWN0LmdldGFyZ3ZhbHVlcyhmcmFtZSkKICAgICAgICBjYWxsID0gJycKICAgICAgICBpZiBmdW5jICE9ICc/JzoKICAgICAgICAgICAgY2FsbCA9ICdpbiAnICsgc3Ryb25nKHB5ZG9jLmh0bWwuZXNjYXBlKGZ1bmMpKQogICAgICAgICAgICBpZiBmdW5jICE9ICI8bW9kdWxlPiI6CiAgICAgICAgICAgICAgICBjYWxsICs9IGluc3BlY3QuZm9ybWF0YXJndmFsdWVzKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBsb2NhbHMsCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dmFsdWU9bGFtYmRhIHZhbHVlOiAnPScgKyBweWRvYy5odG1sLnJlcHIodmFsdWUpKQoKICAgICAgICBoaWdobGlnaHQgPSB7fQogICAgICAgIGRlZiByZWFkZXIobG51bT1bbG51bV0pOgogICAgICAgICAgICBoaWdobGlnaHRbbG51bVswXV0gPSAxCiAgICAgICAgICAgIHRyeTogcmV0dXJuIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGUsIGxudW1bMF0pCiAgICAgICAgICAgIGZpbmFsbHk6IGxudW1bMF0gKz0gMQogICAgICAgIHZhcnMgPSBzY2FudmFycyhyZWFkZXIsIGZyYW1lLCBsb2NhbHMpCgogICAgICAgIHJvd3MgPSBbJzx0cj48dGQgYmdjb2xvcj0iI2Q4YmJmZiI+JXMlcyAlczwvdGQ+PC90cj4nICUKICAgICAgICAgICAgICAgICgnPGJpZz4mbmJzcDs8L2JpZz4nLCBsaW5rLCBjYWxsKV0KICAgICAgICBpZiBpbmRleCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaSA9IGxudW0gLSBpbmRleAogICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICAgICAgICAgIG51bSA9IHNtYWxsKCcmbmJzcDsnICogKDUtbGVuKHN0cihpKSkpICsgc3RyKGkpKSArICcmbmJzcDsnCiAgICAgICAgICAgICAgICBpZiBpIGluIGhpZ2hsaWdodDoKICAgICAgICAgICAgICAgICAgICBsaW5lID0gJzx0dD49Jmd0OyVzJXM8L3R0PicgJSAobnVtLCBweWRvYy5odG1sLnByZWZvcm1hdChsaW5lKSkKICAgICAgICAgICAgICAgICAgICByb3dzLmFwcGVuZCgnPHRyPjx0ZCBiZ2NvbG9yPSIjZmZjY2VlIj4lczwvdGQ+PC90cj4nICUgbGluZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9ICc8dHQ+Jm5ic3A7Jm5ic3A7JXMlczwvdHQ+JyAlIChudW0sIHB5ZG9jLmh0bWwucHJlZm9ybWF0KGxpbmUpKQogICAgICAgICAgICAgICAgICAgIHJvd3MuYXBwZW5kKCc8dHI+PHRkPiVzPC90ZD48L3RyPicgJSBncmV5KGxpbmUpKQogICAgICAgICAgICAgICAgaSArPSAxCgogICAgICAgIGRvbmUsIGR1bXAgPSB7fSwgW10KICAgICAgICBmb3IgbmFtZSwgd2hlcmUsIHZhbHVlIGluIHZhcnM6CiAgICAgICAgICAgIGlmIG5hbWUgaW4gZG9uZTogY29udGludWUKICAgICAgICAgICAgZG9uZVtuYW1lXSA9IDEKICAgICAgICAgICAgaWYgdmFsdWUgaXMgbm90IF9fVU5ERUZfXzoKICAgICAgICAgICAgICAgIGlmIHdoZXJlIGluICgnZ2xvYmFsJywgJ2J1aWx0aW4nKToKICAgICAgICAgICAgICAgICAgICBuYW1lID0gKCc8ZW0+JXM8L2VtPiAnICUgd2hlcmUpICsgc3Ryb25nKG5hbWUpCiAgICAgICAgICAgICAgICBlbGlmIHdoZXJlID09ICdsb2NhbCc6CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHN0cm9uZyhuYW1lKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBuYW1lID0gd2hlcmUgKyBzdHJvbmcobmFtZS5zcGxpdCgnLicpWy0xXSkKICAgICAgICAgICAgICAgIGR1bXAuYXBwZW5kKCclcyZuYnNwOz0gJXMnICUgKG5hbWUsIHB5ZG9jLmh0bWwucmVwcih2YWx1ZSkpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZHVtcC5hcHBlbmQobmFtZSArICcgPGVtPnVuZGVmaW5lZDwvZW0+JykKCiAgICAgICAgcm93cy5hcHBlbmQoJzx0cj48dGQ+JXM8L3RkPjwvdHI+JyAlIHNtYWxsKGdyZXkoJywgJy5qb2luKGR1bXApKSkpCiAgICAgICAgZnJhbWVzLmFwcGVuZCgnJycKPHRhYmxlIHdpZHRoPSIxMDAlJSIgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0wIGJvcmRlcj0wPgolczwvdGFibGU+JycnICUgJ1xuJy5qb2luKHJvd3MpKQoKICAgIGV4Y2VwdGlvbiA9IFsnPHA+JXM6ICVzJyAlIChzdHJvbmcocHlkb2MuaHRtbC5lc2NhcGUoc3RyKGV0eXBlKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5ZG9jLmh0bWwuZXNjYXBlKHN0cihldmFsdWUpKSldCiAgICBmb3IgbmFtZSBpbiBkaXIoZXZhbHVlKToKICAgICAgICBpZiBuYW1lWzoxXSA9PSAnXyc6IGNvbnRpbnVlCiAgICAgICAgdmFsdWUgPSBweWRvYy5odG1sLnJlcHIoZ2V0YXR0cihldmFsdWUsIG5hbWUpKQogICAgICAgIGV4Y2VwdGlvbi5hcHBlbmQoJ1xuPGJyPiVzJXMmbmJzcDs9XG4lcycgJSAoaW5kZW50LCBuYW1lLCB2YWx1ZSkpCgogICAgcmV0dXJuIGhlYWQgKyAnJy5qb2luKGZyYW1lcykgKyAnJy5qb2luKGV4Y2VwdGlvbikgKyAnJycKCgo8IS0tIFRoZSBhYm92ZSBpcyBhIGRlc2NyaXB0aW9uIG9mIGFuIGVycm9yIGluIGEgUHl0aG9uIHByb2dyYW0sIGZvcm1hdHRlZAogICAgIGZvciBhIHdlYiBicm93c2VyIGJlY2F1c2UgdGhlICdjZ2l0YicgbW9kdWxlIHdhcyBlbmFibGVkLiAgSW4gY2FzZSB5b3UKICAgICBhcmUgbm90IHJlYWRpbmcgdGhpcyBpbiBhIHdlYiBicm93c2VyLCBoZXJlIGlzIHRoZSBvcmlnaW5hbCB0cmFjZWJhY2s6CgolcwotLT4KJycnICUgcHlkb2MuaHRtbC5lc2NhcGUoCiAgICAgICAgICAnJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKGV0eXBlLCBldmFsdWUsIGV0YikpKQoKZGVmIHRleHQoZWluZm8sIGNvbnRleHQ9NSk6CiAgICAiIiJSZXR1cm4gYSBwbGFpbiB0ZXh0IGRvY3VtZW50IGRlc2NyaWJpbmcgYSBnaXZlbiB0cmFjZWJhY2suIiIiCiAgICBldHlwZSwgZXZhbHVlLCBldGIgPSBlaW5mbwogICAgaWYgaXNpbnN0YW5jZShldHlwZSwgdHlwZSk6CiAgICAgICAgZXR5cGUgPSBldHlwZS5fX25hbWVfXwogICAgcHl2ZXIgPSAnUHl0aG9uICcgKyBzeXMudmVyc2lvbi5zcGxpdCgpWzBdICsgJzogJyArIHN5cy5leGVjdXRhYmxlCiAgICBkYXRlID0gdGltZS5jdGltZSh0aW1lLnRpbWUoKSkKICAgIGhlYWQgPSAiJXNcbiVzXG4lc1xuIiAlIChzdHIoZXR5cGUpLCBweXZlciwgZGF0ZSkgKyAnJycKQSBwcm9ibGVtIG9jY3VycmVkIGluIGEgUHl0aG9uIHNjcmlwdC4gIEhlcmUgaXMgdGhlIHNlcXVlbmNlIG9mCmZ1bmN0aW9uIGNhbGxzIGxlYWRpbmcgdXAgdG8gdGhlIGVycm9yLCBpbiB0aGUgb3JkZXIgdGhleSBvY2N1cnJlZC4KJycnCgogICAgZnJhbWVzID0gW10KICAgIHJlY29yZHMgPSBpbnNwZWN0LmdldGlubmVyZnJhbWVzKGV0YiwgY29udGV4dCkKICAgIGZvciBmcmFtZSwgZmlsZSwgbG51bSwgZnVuYywgbGluZXMsIGluZGV4IGluIHJlY29yZHM6CiAgICAgICAgZmlsZSA9IGZpbGUgYW5kIG9zLnBhdGguYWJzcGF0aChmaWxlKSBvciAnPycKICAgICAgICBhcmdzLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzID0gaW5zcGVjdC5nZXRhcmd2YWx1ZXMoZnJhbWUpCiAgICAgICAgY2FsbCA9ICcnCiAgICAgICAgaWYgZnVuYyAhPSAnPyc6CiAgICAgICAgICAgIGNhbGwgPSAnaW4gJyArIGZ1bmMKICAgICAgICAgICAgaWYgZnVuYyAhPSAiPG1vZHVsZT4iOgogICAgICAgICAgICAgICAgY2FsbCArPSBpbnNwZWN0LmZvcm1hdGFyZ3ZhbHVlcyhhcmdzLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzLAogICAgICAgICAgICAgICAgICAgIGZvcm1hdHZhbHVlPWxhbWJkYSB2YWx1ZTogJz0nICsgcHlkb2MudGV4dC5yZXByKHZhbHVlKSkKCiAgICAgICAgaGlnaGxpZ2h0ID0ge30KICAgICAgICBkZWYgcmVhZGVyKGxudW09W2xudW1dKToKICAgICAgICAgICAgaGlnaGxpZ2h0W2xudW1bMF1dID0gMQogICAgICAgICAgICB0cnk6IHJldHVybiBsaW5lY2FjaGUuZ2V0bGluZShmaWxlLCBsbnVtWzBdKQogICAgICAgICAgICBmaW5hbGx5OiBsbnVtWzBdICs9IDEKICAgICAgICB2YXJzID0gc2NhbnZhcnMocmVhZGVyLCBmcmFtZSwgbG9jYWxzKQoKICAgICAgICByb3dzID0gWycgJXMgJXMnICUgKGZpbGUsIGNhbGwpXQogICAgICAgIGlmIGluZGV4IGlzIG5vdCBOb25lOgogICAgICAgICAgICBpID0gbG51bSAtIGluZGV4CiAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgogICAgICAgICAgICAgICAgbnVtID0gJyU1ZCAnICUgaQogICAgICAgICAgICAgICAgcm93cy5hcHBlbmQobnVtK2xpbmUucnN0cmlwKCkpCiAgICAgICAgICAgICAgICBpICs9IDEKCiAgICAgICAgZG9uZSwgZHVtcCA9IHt9LCBbXQogICAgICAgIGZvciBuYW1lLCB3aGVyZSwgdmFsdWUgaW4gdmFyczoKICAgICAgICAgICAgaWYgbmFtZSBpbiBkb25lOiBjb250aW51ZQogICAgICAgICAgICBkb25lW25hbWVdID0gMQogICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgX19VTkRFRl9fOgogICAgICAgICAgICAgICAgaWYgd2hlcmUgPT0gJ2dsb2JhbCc6IG5hbWUgPSAnZ2xvYmFsICcgKyBuYW1lCiAgICAgICAgICAgICAgICBlbGlmIHdoZXJlICE9ICdsb2NhbCc6IG5hbWUgPSB3aGVyZSArIG5hbWUuc3BsaXQoJy4nKVstMV0KICAgICAgICAgICAgICAgIGR1bXAuYXBwZW5kKCclcyA9ICVzJyAlIChuYW1lLCBweWRvYy50ZXh0LnJlcHIodmFsdWUpKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGR1bXAuYXBwZW5kKG5hbWUgKyAnIHVuZGVmaW5lZCcpCgogICAgICAgIHJvd3MuYXBwZW5kKCdcbicuam9pbihkdW1wKSkKICAgICAgICBmcmFtZXMuYXBwZW5kKCdcbiVzXG4nICUgJ1xuJy5qb2luKHJvd3MpKQoKICAgIGV4Y2VwdGlvbiA9IFsnJXM6ICVzJyAlIChzdHIoZXR5cGUpLCBzdHIoZXZhbHVlKSldCiAgICBmb3IgbmFtZSBpbiBkaXIoZXZhbHVlKToKICAgICAgICB2YWx1ZSA9IHB5ZG9jLnRleHQucmVwcihnZXRhdHRyKGV2YWx1ZSwgbmFtZSkpCiAgICAgICAgZXhjZXB0aW9uLmFwcGVuZCgnXG4lcyVzID0gJXMnICUgKCIgIio0LCBuYW1lLCB2YWx1ZSkpCgogICAgcmV0dXJuIGhlYWQgKyAnJy5qb2luKGZyYW1lcykgKyAnJy5qb2luKGV4Y2VwdGlvbikgKyAnJycKClRoZSBhYm92ZSBpcyBhIGRlc2NyaXB0aW9uIG9mIGFuIGVycm9yIGluIGEgUHl0aG9uIHByb2dyYW0uICBIZXJlIGlzCnRoZSBvcmlnaW5hbCB0cmFjZWJhY2s6CgolcwonJycgJSAnJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKGV0eXBlLCBldmFsdWUsIGV0YikpCgpjbGFzcyBIb29rOgogICAgIiIiQSBob29rIHRvIHJlcGxhY2Ugc3lzLmV4Y2VwdGhvb2sgdGhhdCBzaG93cyB0cmFjZWJhY2tzIGluIEhUTUwuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3BsYXk9MSwgbG9nZGlyPU5vbmUsIGNvbnRleHQ9NSwgZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgIGZvcm1hdD0iaHRtbCIpOgogICAgICAgIHNlbGYuZGlzcGxheSA9IGRpc3BsYXkgICAgICAgICAgIyBzZW5kIHRyYWNlYmFja3MgdG8gYnJvd3NlciBpZiB0cnVlCiAgICAgICAgc2VsZi5sb2dkaXIgPSBsb2dkaXIgICAgICAgICAgICAjIGxvZyB0cmFjZWJhY2tzIHRvIGZpbGVzIGlmIG5vdCBOb25lCiAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dCAgICAgICAgICAjIG51bWJlciBvZiBzb3VyY2UgY29kZSBsaW5lcyBwZXIgZnJhbWUKICAgICAgICBzZWxmLmZpbGUgPSBmaWxlIG9yIHN5cy5zdGRvdXQgICMgcGxhY2UgdG8gc2VuZCB0aGUgb3V0cHV0CiAgICAgICAgc2VsZi5mb3JtYXQgPSBmb3JtYXQKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgZXR5cGUsIGV2YWx1ZSwgZXRiKToKICAgICAgICBzZWxmLmhhbmRsZSgoZXR5cGUsIGV2YWx1ZSwgZXRiKSkKCiAgICBkZWYgaGFuZGxlKHNlbGYsIGluZm89Tm9uZSk6CiAgICAgICAgaW5mbyA9IGluZm8gb3Igc3lzLmV4Y19pbmZvKCkKICAgICAgICBpZiBzZWxmLmZvcm1hdCA9PSAiaHRtbCI6CiAgICAgICAgICAgIHNlbGYuZmlsZS53cml0ZShyZXNldCgpKQoKICAgICAgICBmb3JtYXR0ZXIgPSAoc2VsZi5mb3JtYXQ9PSJodG1sIikgYW5kIGh0bWwgb3IgdGV4dAogICAgICAgIHBsYWluID0gRmFsc2UKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRvYyA9IGZvcm1hdHRlcihpbmZvLCBzZWxmLmNvbnRleHQpCiAgICAgICAgZXhjZXB0OiAgICAgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZwogICAgICAgICAgICBkb2MgPSAnJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKCppbmZvKSkKICAgICAgICAgICAgcGxhaW4gPSBUcnVlCgogICAgICAgIGlmIHNlbGYuZGlzcGxheToKICAgICAgICAgICAgaWYgcGxhaW46CiAgICAgICAgICAgICAgICBkb2MgPSBweWRvYy5odG1sLmVzY2FwZShkb2MpCiAgICAgICAgICAgICAgICBzZWxmLmZpbGUud3JpdGUoJzxwcmU+JyArIGRvYyArICc8L3ByZT5cbicpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLmZpbGUud3JpdGUoZG9jICsgJ1xuJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmZpbGUud3JpdGUoJzxwPkEgcHJvYmxlbSBvY2N1cnJlZCBpbiBhIFB5dGhvbiBzY3JpcHQuXG4nKQoKICAgICAgICBpZiBzZWxmLmxvZ2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3VmZml4ID0gWycudHh0JywgJy5odG1sJ11bc2VsZi5mb3JtYXQ9PSJodG1sIl0KICAgICAgICAgICAgKGZkLCBwYXRoKSA9IHRlbXBmaWxlLm1rc3RlbXAoc3VmZml4PXN1ZmZpeCwgZGlyPXNlbGYubG9nZGlyKQoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2l0aCBvcy5mZG9wZW4oZmQsICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKGRvYykKICAgICAgICAgICAgICAgIG1zZyA9ICclcyBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhpcyBlcnJvci4nICUgcGF0aAogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBtc2cgPSAnVHJpZWQgdG8gc2F2ZSB0cmFjZWJhY2sgdG8gJXMsIGJ1dCBmYWlsZWQuJyAlIHBhdGgKCiAgICAgICAgICAgIGlmIHNlbGYuZm9ybWF0ID09ICdodG1sJzoKICAgICAgICAgICAgICAgIHNlbGYuZmlsZS53cml0ZSgnPHA+JXM8L3A+XG4nICUgbXNnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5maWxlLndyaXRlKG1zZyArICdcbicpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmZpbGUuZmx1c2goKQogICAgICAgIGV4Y2VwdDogcGFzcwoKaGFuZGxlciA9IEhvb2soKS5oYW5kbGUKZGVmIGVuYWJsZShkaXNwbGF5PTEsIGxvZ2Rpcj1Ob25lLCBjb250ZXh0PTUsIGZvcm1hdD0iaHRtbCIpOgogICAgIiIiSW5zdGFsbCBhbiBleGNlcHRpb24gaGFuZGxlciB0aGF0IGZvcm1hdHMgdHJhY2ViYWNrcyBhcyBIVE1MLgoKICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAnZGlzcGxheScgY2FuIGJlIHNldCB0byAwIHRvIHN1cHByZXNzIHNlbmRpbmcgdGhlCiAgICB0cmFjZWJhY2sgdG8gdGhlIGJyb3dzZXIsIGFuZCAnbG9nZGlyJyBjYW4gYmUgc2V0IHRvIGEgZGlyZWN0b3J5IHRvIGNhdXNlCiAgICB0cmFjZWJhY2tzIHRvIGJlIHdyaXR0ZW4gdG8gZmlsZXMgdGhlcmUuIiIiCiAgICBzeXMuZXhjZXB0aG9vayA9IEhvb2soZGlzcGxheT1kaXNwbGF5LCBsb2dkaXI9bG9nZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgZm9ybWF0PWZvcm1hdCkKUEsDBBQAAAAAAAIgo1YgWbQqfBUAAHwVAAAIAAAAY2h1bmsucHkiIiJTaW1wbGUgY2xhc3MgdG8gcmVhZCBJRkYgY2h1bmtzLgoKQW4gSUZGIGNodW5rICh1c2VkIGluIGZvcm1hdHMgc3VjaCBhcyBBSUZGLCBUSUZGLCBSTUZGIChSZWFsTWVkaWEgRmlsZQpGb3JtYXQpKSBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CgorLS0tLS0tLS0tLS0tLS0tLSsKfCBJRCAoNCBieXRlcykgICB8CistLS0tLS0tLS0tLS0tLS0tKwp8IHNpemUgKDQgYnl0ZXMpIHwKKy0tLS0tLS0tLS0tLS0tLS0rCnwgZGF0YSAgICAgICAgICAgfAp8IC4uLiAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0rCgpUaGUgSUQgaXMgYSA0LWJ5dGUgc3RyaW5nIHdoaWNoIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgY2h1bmsuCgpUaGUgc2l6ZSBmaWVsZCAoYSAzMi1iaXQgdmFsdWUsIGVuY29kZWQgdXNpbmcgYmlnLWVuZGlhbiBieXRlIG9yZGVyKQpnaXZlcyB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUgY2h1bmssIGluY2x1ZGluZyB0aGUgOC1ieXRlIGhlYWRlci4KClVzdWFsbHkgYW4gSUZGLXR5cGUgZmlsZSBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBjaHVua3MuICBUaGUgcHJvcG9zZWQKdXNhZ2Ugb2YgdGhlIENodW5rIGNsYXNzIGRlZmluZWQgaGVyZSBpcyB0byBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBhdAp0aGUgc3RhcnQgb2YgZWFjaCBjaHVuayBhbmQgcmVhZCBmcm9tIHRoZSBpbnN0YW5jZSB1bnRpbCBpdCByZWFjaGVzCnRoZSBlbmQsIGFmdGVyIHdoaWNoIGEgbmV3IGluc3RhbmNlIGNhbiBiZSBpbnN0YW50aWF0ZWQuICBBdCB0aGUgZW5kCm9mIHRoZSBmaWxlLCBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZSB3aWxsIGZhaWwgd2l0aCBhbiBFT0ZFcnJvcgpleGNlcHRpb24uCgpVc2FnZToKd2hpbGUgVHJ1ZToKICAgIHRyeToKICAgICAgICBjaHVuayA9IENodW5rKGZpbGUpCiAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgYnJlYWsKICAgIGNodW5rdHlwZSA9IGNodW5rLmdldG5hbWUoKQogICAgd2hpbGUgVHJ1ZToKICAgICAgICBkYXRhID0gY2h1bmsucmVhZChuYnl0ZXMpCiAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgIHBhc3MKICAgICAgICAjIGRvIHNvbWV0aGluZyB3aXRoIGRhdGEKClRoZSBpbnRlcmZhY2UgaXMgZmlsZS1saWtlLiAgVGhlIGltcGxlbWVudGVkIG1ldGhvZHMgYXJlOgpyZWFkLCBjbG9zZSwgc2VlaywgdGVsbCwgaXNhdHR5LgpFeHRyYSBtZXRob2RzIGFyZTogc2tpcCgpIChjYWxsZWQgYnkgY2xvc2UsIHNraXBzIHRvIHRoZSBlbmQgb2YgdGhlIGNodW5rKSwKZ2V0bmFtZSgpIChyZXR1cm5zIHRoZSBuYW1lIChJRCkgb2YgdGhlIGNodW5rKQoKVGhlIF9faW5pdF9fIG1ldGhvZCBoYXMgb25lIHJlcXVpcmVkIGFyZ3VtZW50LCBhIGZpbGUtbGlrZSBvYmplY3QKKGluY2x1ZGluZyBhIGNodW5rIGluc3RhbmNlKSwgYW5kIG9uZSBvcHRpb25hbCBhcmd1bWVudCwgYSBmbGFnIHdoaWNoCnNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCBjaHVua3MgYXJlIGFsaWduZWQgb24gMi1ieXRlIGJvdW5kYXJpZXMuICBUaGUKZGVmYXVsdCBpcyAxLCBpLmUuIGFsaWduZWQuCiIiIgoKaW1wb3J0IHdhcm5pbmdzCgp3YXJuaW5ncy5fZGVwcmVjYXRlZChfX25hbWVfXywgcmVtb3ZlPSgzLCAxMykpCgpjbGFzcyBDaHVuazoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBhbGlnbj1UcnVlLCBiaWdlbmRpYW49VHJ1ZSwgaW5jbGhlYWRlcj1GYWxzZSk6CiAgICAgICAgaW1wb3J0IHN0cnVjdAogICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKICAgICAgICBzZWxmLmFsaWduID0gYWxpZ24gICAgICAjIHdoZXRoZXIgdG8gYWxpZ24gdG8gd29yZCAoMi1ieXRlKSBib3VuZGFyaWVzCiAgICAgICAgaWYgYmlnZW5kaWFuOgogICAgICAgICAgICBzdHJmbGFnID0gJz4nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3RyZmxhZyA9ICc8JwogICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKICAgICAgICBzZWxmLmNodW5rbmFtZSA9IGZpbGUucmVhZCg0KQogICAgICAgIGlmIGxlbihzZWxmLmNodW5rbmFtZSkgPCA0OgogICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5jaHVua3NpemUgPSBzdHJ1Y3QudW5wYWNrX2Zyb20oc3RyZmxhZysnTCcsIGZpbGUucmVhZCg0KSlbMF0KICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yOgogICAgICAgICAgICByYWlzZSBFT0ZFcnJvciBmcm9tIE5vbmUKICAgICAgICBpZiBpbmNsaGVhZGVyOgogICAgICAgICAgICBzZWxmLmNodW5rc2l6ZSA9IHNlbGYuY2h1bmtzaXplIC0gOCAjIHN1YnRyYWN0IGhlYWRlcgogICAgICAgIHNlbGYuc2l6ZV9yZWFkID0gMAogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5vZmZzZXQgPSBzZWxmLmZpbGUudGVsbCgpCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgICAgIHNlbGYuc2Vla2FibGUgPSBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuc2Vla2FibGUgPSBUcnVlCgogICAgZGVmIGdldG5hbWUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIChJRCkgb2YgdGhlIGN1cnJlbnQgY2h1bmsuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuY2h1bmtuYW1lCgogICAgZGVmIGdldHNpemUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IGNodW5rLiIiIgogICAgICAgIHJldHVybiBzZWxmLmNodW5rc2l6ZQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc2tpcCgpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKCiAgICBkZWYgaXNhdHR5KHNlbGYpOgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgc2VlayhzZWxmLCBwb3MsIHdoZW5jZT0wKToKICAgICAgICAiIiJTZWVrIHRvIHNwZWNpZmllZCBwb3NpdGlvbiBpbnRvIHRoZSBjaHVuay4KICAgICAgICBEZWZhdWx0IHBvc2l0aW9uIGlzIDAgKHN0YXJ0IG9mIGNodW5rKS4KICAgICAgICBJZiB0aGUgZmlsZSBpcyBub3Qgc2Vla2FibGUsIHRoaXMgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IuCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKICAgICAgICBpZiBub3Qgc2VsZi5zZWVrYWJsZToKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiY2Fubm90IHNlZWsiKQogICAgICAgIGlmIHdoZW5jZSA9PSAxOgogICAgICAgICAgICBwb3MgPSBwb3MgKyBzZWxmLnNpemVfcmVhZAogICAgICAgIGVsaWYgd2hlbmNlID09IDI6CiAgICAgICAgICAgIHBvcyA9IHBvcyArIHNlbGYuY2h1bmtzaXplCiAgICAgICAgaWYgcG9zIDwgMCBvciBwb3MgPiBzZWxmLmNodW5rc2l6ZToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCiAgICAgICAgc2VsZi5maWxlLnNlZWsoc2VsZi5vZmZzZXQgKyBwb3MsIDApCiAgICAgICAgc2VsZi5zaXplX3JlYWQgPSBwb3MKCiAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCiAgICAgICAgcmV0dXJuIHNlbGYuc2l6ZV9yZWFkCgogICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgIiIiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMgZnJvbSB0aGUgY2h1bmsuCiAgICAgICAgSWYgc2l6ZSBpcyBvbWl0dGVkIG9yIG5lZ2F0aXZlLCByZWFkIHVudGlsIHRoZSBlbmQKICAgICAgICBvZiB0aGUgY2h1bmsuCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKICAgICAgICBpZiBzZWxmLnNpemVfcmVhZCA+PSBzZWxmLmNodW5rc2l6ZToKICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgIGlmIHNpemUgPCAwOgogICAgICAgICAgICBzaXplID0gc2VsZi5jaHVua3NpemUgLSBzZWxmLnNpemVfcmVhZAogICAgICAgIGlmIHNpemUgPiBzZWxmLmNodW5rc2l6ZSAtIHNlbGYuc2l6ZV9yZWFkOgogICAgICAgICAgICBzaXplID0gc2VsZi5jaHVua3NpemUgLSBzZWxmLnNpemVfcmVhZAogICAgICAgIGRhdGEgPSBzZWxmLmZpbGUucmVhZChzaXplKQogICAgICAgIHNlbGYuc2l6ZV9yZWFkID0gc2VsZi5zaXplX3JlYWQgKyBsZW4oZGF0YSkKICAgICAgICBpZiBzZWxmLnNpemVfcmVhZCA9PSBzZWxmLmNodW5rc2l6ZSBhbmQgXAogICAgICAgICAgIHNlbGYuYWxpZ24gYW5kIFwKICAgICAgICAgICAoc2VsZi5jaHVua3NpemUgJiAxKToKICAgICAgICAgICAgZHVtbXkgPSBzZWxmLmZpbGUucmVhZCgxKQogICAgICAgICAgICBzZWxmLnNpemVfcmVhZCA9IHNlbGYuc2l6ZV9yZWFkICsgbGVuKGR1bW15KQogICAgICAgIHJldHVybiBkYXRhCgogICAgZGVmIHNraXAoc2VsZik6CiAgICAgICAgIiIiU2tpcCB0aGUgcmVzdCBvZiB0aGUgY2h1bmsuCiAgICAgICAgSWYgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGNodW5rLAogICAgICAgIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgc28gdGhhdCB0aGUgZmlsZSBwb2ludHMgdG8KICAgICAgICB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY2h1bmsuCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKICAgICAgICBpZiBzZWxmLnNlZWthYmxlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBuID0gc2VsZi5jaHVua3NpemUgLSBzZWxmLnNpemVfcmVhZAogICAgICAgICAgICAgICAgIyBtYXliZSBmaXggYWxpZ25tZW50CiAgICAgICAgICAgICAgICBpZiBzZWxmLmFsaWduIGFuZCAoc2VsZi5jaHVua3NpemUgJiAxKToKICAgICAgICAgICAgICAgICAgICBuID0gbiArIDEKICAgICAgICAgICAgICAgIHNlbGYuZmlsZS5zZWVrKG4sIDEpCiAgICAgICAgICAgICAgICBzZWxmLnNpemVfcmVhZCA9IHNlbGYuc2l6ZV9yZWFkICsgbgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIHdoaWxlIHNlbGYuc2l6ZV9yZWFkIDwgc2VsZi5jaHVua3NpemU6CiAgICAgICAgICAgIG4gPSBtaW4oODE5Miwgc2VsZi5jaHVua3NpemUgLSBzZWxmLnNpemVfcmVhZCkKICAgICAgICAgICAgZHVtbXkgPSBzZWxmLnJlYWQobikKICAgICAgICAgICAgaWYgbm90IGR1bW15OgogICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKUEsDBBQAAAAAAAIgo1Y8gomGGToAABk6AAAGAAAAY21kLnB5IiIiQSBnZW5lcmljIGNsYXNzIHRvIGJ1aWxkIGxpbmUtb3JpZW50ZWQgY29tbWFuZCBpbnRlcnByZXRlcnMuCgpJbnRlcnByZXRlcnMgY29uc3RydWN0ZWQgd2l0aCB0aGlzIGNsYXNzIG9iZXkgdGhlIGZvbGxvd2luZyBjb252ZW50aW9uczoKCjEuIEVuZCBvZiBmaWxlIG9uIGlucHV0IGlzIHByb2Nlc3NlZCBhcyB0aGUgY29tbWFuZCAnRU9GJy4KMi4gQSBjb21tYW5kIGlzIHBhcnNlZCBvdXQgb2YgZWFjaCBsaW5lIGJ5IGNvbGxlY3RpbmcgdGhlIHByZWZpeCBjb21wb3NlZAogICBvZiBjaGFyYWN0ZXJzIGluIHRoZSBpZGVudGNoYXJzIG1lbWJlci4KMy4gQSBjb21tYW5kIGBmb28nIGlzIGRpc3BhdGNoZWQgdG8gYSBtZXRob2QgJ2RvX2ZvbygpJzsgdGhlIGRvXyBtZXRob2QKICAgaXMgcGFzc2VkIGEgc2luZ2xlIGFyZ3VtZW50IGNvbnNpc3Rpbmcgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGUgbGluZS4KNC4gVHlwaW5nIGFuIGVtcHR5IGxpbmUgcmVwZWF0cyB0aGUgbGFzdCBjb21tYW5kLiAgKEFjdHVhbGx5LCBpdCBjYWxscyB0aGUKICAgbWV0aG9kIGBlbXB0eWxpbmUnLCB3aGljaCBtYXkgYmUgb3ZlcnJpZGRlbiBpbiBhIHN1YmNsYXNzLikKNS4gVGhlcmUgaXMgYSBwcmVkZWZpbmVkIGBoZWxwJyBtZXRob2QuICBHaXZlbiBhbiBhcmd1bWVudCBgdG9waWMnLCBpdAogICBjYWxscyB0aGUgY29tbWFuZCBgaGVscF90b3BpYycuICBXaXRoIG5vIGFyZ3VtZW50cywgaXQgbGlzdHMgYWxsIHRvcGljcwogICB3aXRoIGRlZmluZWQgaGVscF8gZnVuY3Rpb25zLCBicm9rZW4gaW50byB1cCB0byB0aHJlZSB0b3BpY3M7IGRvY3VtZW50ZWQKICAgY29tbWFuZHMsIG1pc2NlbGxhbmVvdXMgaGVscCB0b3BpY3MsIGFuZCB1bmRvY3VtZW50ZWQgY29tbWFuZHMuCjYuIFRoZSBjb21tYW5kICc/JyBpcyBhIHN5bm9ueW0gZm9yIGBoZWxwJy4gIFRoZSBjb21tYW5kICchJyBpcyBhIHN5bm9ueW0KICAgZm9yIGBzaGVsbCcsIGlmIGEgZG9fc2hlbGwgbWV0aG9kIGV4aXN0cy4KNy4gSWYgY29tcGxldGlvbiBpcyBlbmFibGVkLCBjb21wbGV0aW5nIGNvbW1hbmRzIHdpbGwgYmUgZG9uZSBhdXRvbWF0aWNhbGx5LAogICBhbmQgY29tcGxldGluZyBvZiBjb21tYW5kcyBhcmdzIGlzIGRvbmUgYnkgY2FsbGluZyBjb21wbGV0ZV9mb28oKSB3aXRoCiAgIGFyZ3VtZW50cyB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeC4gIHRleHQgaXMgc3RyaW5nIHdlIGFyZSBtYXRjaGluZwogICBhZ2FpbnN0LCBhbGwgcmV0dXJuZWQgbWF0Y2hlcyBtdXN0IGJlZ2luIHdpdGggaXQuICBsaW5lIGlzIHRoZSBjdXJyZW50CiAgIGlucHV0IGxpbmUgKGxzdHJpcHBlZCksIGJlZ2lkeCBhbmQgZW5kaWR4IGFyZSB0aGUgYmVnaW5uaW5nIGFuZCBlbmQKICAgaW5kZXhlcyBvZiB0aGUgdGV4dCBiZWluZyBtYXRjaGVkLCB3aGljaCBjb3VsZCBiZSB1c2VkIHRvIHByb3ZpZGUKICAgZGlmZmVyZW50IGNvbXBsZXRpb24gZGVwZW5kaW5nIHVwb24gd2hpY2ggcG9zaXRpb24gdGhlIGFyZ3VtZW50IGlzIGluLgoKVGhlIGBkZWZhdWx0JyBtZXRob2QgbWF5IGJlIG92ZXJyaWRkZW4gdG8gaW50ZXJjZXB0IGNvbW1hbmRzIGZvciB3aGljaCB0aGVyZQppcyBubyBkb18gbWV0aG9kLgoKVGhlIGBjb21wbGV0ZWRlZmF1bHQnIG1ldGhvZCBtYXkgYmUgb3ZlcnJpZGRlbiB0byBpbnRlcmNlcHQgY29tcGxldGlvbnMgZm9yCmNvbW1hbmRzIHRoYXQgaGF2ZSBubyBjb21wbGV0ZV8gbWV0aG9kLgoKVGhlIGRhdGEgbWVtYmVyIGBzZWxmLnJ1bGVyJyBzZXRzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBkcmF3IHNlcGFyYXRvciBsaW5lcwppbiB0aGUgaGVscCBtZXNzYWdlcy4gIElmIGVtcHR5LCBubyBydWxlciBsaW5lIGlzIGRyYXduLiAgSXQgZGVmYXVsdHMgdG8gIj0iLgoKSWYgdGhlIHZhbHVlIG9mIGBzZWxmLmludHJvJyBpcyBub25lbXB0eSB3aGVuIHRoZSBjbWRsb29wIG1ldGhvZCBpcyBjYWxsZWQsCml0IGlzIHByaW50ZWQgb3V0IG9uIGludGVycHJldGVyIHN0YXJ0dXAuICBUaGlzIHZhbHVlIG1heSBiZSBvdmVycmlkZGVuCnZpYSBhbiBvcHRpb25hbCBhcmd1bWVudCB0byB0aGUgY21kbG9vcCgpIG1ldGhvZC4KClRoZSBkYXRhIG1lbWJlcnMgYHNlbGYuZG9jX2hlYWRlcicsIGBzZWxmLm1pc2NfaGVhZGVyJywgYW5kCmBzZWxmLnVuZG9jX2hlYWRlcicgc2V0IHRoZSBoZWFkZXJzIHVzZWQgZm9yIHRoZSBoZWxwIGZ1bmN0aW9uJ3MKbGlzdGluZ3Mgb2YgZG9jdW1lbnRlZCBmdW5jdGlvbnMsIG1pc2NlbGxhbmVvdXMgdG9waWNzLCBhbmQgdW5kb2N1bWVudGVkCmZ1bmN0aW9ucyByZXNwZWN0aXZlbHkuCiIiIgoKaW1wb3J0IHN0cmluZywgc3lzCgpfX2FsbF9fID0gWyJDbWQiXQoKUFJPTVBUID0gJyhDbWQpICcKSURFTlRDSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfJwoKY2xhc3MgQ21kOgogICAgIiIiQSBzaW1wbGUgZnJhbWV3b3JrIGZvciB3cml0aW5nIGxpbmUtb3JpZW50ZWQgY29tbWFuZCBpbnRlcnByZXRlcnMuCgogICAgVGhlc2UgYXJlIG9mdGVuIHVzZWZ1bCBmb3IgdGVzdCBoYXJuZXNzZXMsIGFkbWluaXN0cmF0aXZlIHRvb2xzLCBhbmQKICAgIHByb3RvdHlwZXMgdGhhdCB3aWxsIGxhdGVyIGJlIHdyYXBwZWQgaW4gYSBtb3JlIHNvcGhpc3RpY2F0ZWQgaW50ZXJmYWNlLgoKICAgIEEgQ21kIGluc3RhbmNlIG9yIHN1YmNsYXNzIGluc3RhbmNlIGlzIGEgbGluZS1vcmllbnRlZCBpbnRlcnByZXRlcgogICAgZnJhbWV3b3JrLiAgVGhlcmUgaXMgbm8gZ29vZCByZWFzb24gdG8gaW5zdGFudGlhdGUgQ21kIGl0c2VsZjsgcmF0aGVyLAogICAgaXQncyB1c2VmdWwgYXMgYSBzdXBlcmNsYXNzIG9mIGFuIGludGVycHJldGVyIGNsYXNzIHlvdSBkZWZpbmUgeW91cnNlbGYKICAgIGluIG9yZGVyIHRvIGluaGVyaXQgQ21kJ3MgbWV0aG9kcyBhbmQgZW5jYXBzdWxhdGUgYWN0aW9uIG1ldGhvZHMuCgogICAgIiIiCiAgICBwcm9tcHQgPSBQUk9NUFQKICAgIGlkZW50Y2hhcnMgPSBJREVOVENIQVJTCiAgICBydWxlciA9ICc9JwogICAgbGFzdGNtZCA9ICcnCiAgICBpbnRybyA9IE5vbmUKICAgIGRvY19sZWFkZXIgPSAiIgogICAgZG9jX2hlYWRlciA9ICJEb2N1bWVudGVkIGNvbW1hbmRzICh0eXBlIGhlbHAgPHRvcGljPik6IgogICAgbWlzY19oZWFkZXIgPSAiTWlzY2VsbGFuZW91cyBoZWxwIHRvcGljczoiCiAgICB1bmRvY19oZWFkZXIgPSAiVW5kb2N1bWVudGVkIGNvbW1hbmRzOiIKICAgIG5vaGVscCA9ICIqKiogTm8gaGVscCBvbiAlcyIKICAgIHVzZV9yYXdpbnB1dCA9IDEKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY29tcGxldGVrZXk9J3RhYicsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lKToKICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIGxpbmUtb3JpZW50ZWQgaW50ZXJwcmV0ZXIgZnJhbWV3b3JrLgoKICAgICAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgJ2NvbXBsZXRla2V5JyBpcyB0aGUgcmVhZGxpbmUgbmFtZSBvZiBhCiAgICAgICAgY29tcGxldGlvbiBrZXk7IGl0IGRlZmF1bHRzIHRvIHRoZSBUYWIga2V5LiBJZiBjb21wbGV0ZWtleSBpcwogICAgICAgIG5vdCBOb25lIGFuZCB0aGUgcmVhZGxpbmUgbW9kdWxlIGlzIGF2YWlsYWJsZSwgY29tbWFuZCBjb21wbGV0aW9uCiAgICAgICAgaXMgZG9uZSBhdXRvbWF0aWNhbGx5LiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIHN0ZGluIGFuZCBzdGRvdXQKICAgICAgICBzcGVjaWZ5IGFsdGVybmF0ZSBpbnB1dCBhbmQgb3V0cHV0IGZpbGUgb2JqZWN0czsgaWYgbm90IHNwZWNpZmllZCwKICAgICAgICBzeXMuc3RkaW4gYW5kIHN5cy5zdGRvdXQgYXJlIHVzZWQuCgogICAgICAgICIiIgogICAgICAgIGlmIHN0ZGluIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLnN0ZGluID0gc3RkaW4KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnN0ZGluID0gc3lzLnN0ZGluCiAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLnN0ZG91dCA9IHN0ZG91dAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgIHNlbGYuY21kcXVldWUgPSBbXQogICAgICAgIHNlbGYuY29tcGxldGVrZXkgPSBjb21wbGV0ZWtleQoKICAgIGRlZiBjbWRsb29wKHNlbGYsIGludHJvPU5vbmUpOgogICAgICAgICIiIlJlcGVhdGVkbHkgaXNzdWUgYSBwcm9tcHQsIGFjY2VwdCBpbnB1dCwgcGFyc2UgYW4gaW5pdGlhbCBwcmVmaXgKICAgICAgICBvZmYgdGhlIHJlY2VpdmVkIGlucHV0LCBhbmQgZGlzcGF0Y2ggdG8gYWN0aW9uIG1ldGhvZHMsIHBhc3NpbmcgdGhlbQogICAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpbmUgYXMgYXJndW1lbnQuCgogICAgICAgICIiIgoKICAgICAgICBzZWxmLnByZWxvb3AoKQogICAgICAgIGlmIHNlbGYudXNlX3Jhd2lucHV0IGFuZCBzZWxmLmNvbXBsZXRla2V5OgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgICAgICAgICAgICAgIHNlbGYub2xkX2NvbXBsZXRlciA9IHJlYWRsaW5lLmdldF9jb21wbGV0ZXIoKQogICAgICAgICAgICAgICAgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcihzZWxmLmNvbXBsZXRlKQogICAgICAgICAgICAgICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQoc2VsZi5jb21wbGV0ZWtleSsiOiBjb21wbGV0ZSIpCiAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGludHJvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5pbnRybyA9IGludHJvCiAgICAgICAgICAgIGlmIHNlbGYuaW50cm86CiAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC53cml0ZShzdHIoc2VsZi5pbnRybykrIlxuIikKICAgICAgICAgICAgc3RvcCA9IE5vbmUKICAgICAgICAgICAgd2hpbGUgbm90IHN0b3A6CiAgICAgICAgICAgICAgICBpZiBzZWxmLmNtZHF1ZXVlOgogICAgICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLmNtZHF1ZXVlLnBvcCgwKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnVzZV9yYXdpbnB1dDoKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGlucHV0KHNlbGYucHJvbXB0KQogICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gJ0VPRicKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC53cml0ZShzZWxmLnByb21wdCkKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zdGRpbi5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsZW4obGluZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gJ0VPRicKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgnXHJcbicpCiAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5wcmVjbWQobGluZSkKICAgICAgICAgICAgICAgIHN0b3AgPSBzZWxmLm9uZWNtZChsaW5lKQogICAgICAgICAgICAgICAgc3RvcCA9IHNlbGYucG9zdGNtZChzdG9wLCBsaW5lKQogICAgICAgICAgICBzZWxmLnBvc3Rsb29wKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBzZWxmLnVzZV9yYXdpbnB1dCBhbmQgc2VsZi5jb21wbGV0ZWtleToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgICAgICAgICAgICAgICAgICByZWFkbGluZS5zZXRfY29tcGxldGVyKHNlbGYub2xkX2NvbXBsZXRlcikKICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCgoKICAgIGRlZiBwcmVjbWQoc2VsZiwgbGluZSk6CiAgICAgICAgIiIiSG9vayBtZXRob2QgZXhlY3V0ZWQganVzdCBiZWZvcmUgdGhlIGNvbW1hbmQgbGluZSBpcwogICAgICAgIGludGVycHJldGVkLCBidXQgYWZ0ZXIgdGhlIGlucHV0IHByb21wdCBpcyBnZW5lcmF0ZWQgYW5kIGlzc3VlZC4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGxpbmUKCiAgICBkZWYgcG9zdGNtZChzZWxmLCBzdG9wLCBsaW5lKToKICAgICAgICAiIiJIb29rIG1ldGhvZCBleGVjdXRlZCBqdXN0IGFmdGVyIGEgY29tbWFuZCBkaXNwYXRjaCBpcyBmaW5pc2hlZC4iIiIKICAgICAgICByZXR1cm4gc3RvcAoKICAgIGRlZiBwcmVsb29wKHNlbGYpOgogICAgICAgICIiIkhvb2sgbWV0aG9kIGV4ZWN1dGVkIG9uY2Ugd2hlbiB0aGUgY21kbG9vcCgpIG1ldGhvZCBpcyBjYWxsZWQuIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiBwb3N0bG9vcChzZWxmKToKICAgICAgICAiIiJIb29rIG1ldGhvZCBleGVjdXRlZCBvbmNlIHdoZW4gdGhlIGNtZGxvb3AoKSBtZXRob2QgaXMgYWJvdXQgdG8KICAgICAgICByZXR1cm4uCgogICAgICAgICIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgcGFyc2VsaW5lKHNlbGYsIGxpbmUpOgogICAgICAgICIiIlBhcnNlIHRoZSBsaW5lIGludG8gYSBjb21tYW5kIG5hbWUgYW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcKICAgICAgICB0aGUgYXJndW1lbnRzLiAgUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgKGNvbW1hbmQsIGFyZ3MsIGxpbmUpLgogICAgICAgICdjb21tYW5kJyBhbmQgJ2FyZ3MnIG1heSBiZSBOb25lIGlmIHRoZSBsaW5lIGNvdWxkbid0IGJlIHBhcnNlZC4KICAgICAgICAiIiIKICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBsaW5lCiAgICAgICAgZWxpZiBsaW5lWzBdID09ICc/JzoKICAgICAgICAgICAgbGluZSA9ICdoZWxwICcgKyBsaW5lWzE6XQogICAgICAgIGVsaWYgbGluZVswXSA9PSAnISc6CiAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2RvX3NoZWxsJyk6CiAgICAgICAgICAgICAgICBsaW5lID0gJ3NoZWxsICcgKyBsaW5lWzE6XQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIGxpbmUKICAgICAgICBpLCBuID0gMCwgbGVuKGxpbmUpCiAgICAgICAgd2hpbGUgaSA8IG4gYW5kIGxpbmVbaV0gaW4gc2VsZi5pZGVudGNoYXJzOiBpID0gaSsxCiAgICAgICAgY21kLCBhcmcgPSBsaW5lWzppXSwgbGluZVtpOl0uc3RyaXAoKQogICAgICAgIHJldHVybiBjbWQsIGFyZywgbGluZQoKICAgIGRlZiBvbmVjbWQoc2VsZiwgbGluZSk6CiAgICAgICAgIiIiSW50ZXJwcmV0IHRoZSBhcmd1bWVudCBhcyB0aG91Z2ggaXQgaGFkIGJlZW4gdHlwZWQgaW4gcmVzcG9uc2UKICAgICAgICB0byB0aGUgcHJvbXB0LgoKICAgICAgICBUaGlzIG1heSBiZSBvdmVycmlkZGVuLCBidXQgc2hvdWxkIG5vdCBub3JtYWxseSBuZWVkIHRvIGJlOwogICAgICAgIHNlZSB0aGUgcHJlY21kKCkgYW5kIHBvc3RjbWQoKSBtZXRob2RzIGZvciB1c2VmdWwgZXhlY3V0aW9uIGhvb2tzLgogICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciBpbnRlcnByZXRhdGlvbiBvZgogICAgICAgIGNvbW1hbmRzIGJ5IHRoZSBpbnRlcnByZXRlciBzaG91bGQgc3RvcC4KCiAgICAgICAgIiIiCiAgICAgICAgY21kLCBhcmcsIGxpbmUgPSBzZWxmLnBhcnNlbGluZShsaW5lKQogICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5lbXB0eWxpbmUoKQogICAgICAgIGlmIGNtZCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0KGxpbmUpCiAgICAgICAgc2VsZi5sYXN0Y21kID0gbGluZQogICAgICAgIGlmIGxpbmUgPT0gJ0VPRicgOgogICAgICAgICAgICBzZWxmLmxhc3RjbWQgPSAnJwogICAgICAgIGlmIGNtZCA9PSAnJzoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdChsaW5lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsICdkb18nICsgY21kKQogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0KGxpbmUpCiAgICAgICAgICAgIHJldHVybiBmdW5jKGFyZykKCiAgICBkZWYgZW1wdHlsaW5lKHNlbGYpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIGFuIGVtcHR5IGxpbmUgaXMgZW50ZXJlZCBpbiByZXNwb25zZSB0byB0aGUgcHJvbXB0LgoKICAgICAgICBJZiB0aGlzIG1ldGhvZCBpcyBub3Qgb3ZlcnJpZGRlbiwgaXQgcmVwZWF0cyB0aGUgbGFzdCBub25lbXB0eQogICAgICAgIGNvbW1hbmQgZW50ZXJlZC4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5sYXN0Y21kOgogICAgICAgICAgICByZXR1cm4gc2VsZi5vbmVjbWQoc2VsZi5sYXN0Y21kKQoKICAgIGRlZiBkZWZhdWx0KHNlbGYsIGxpbmUpOgogICAgICAgICIiIkNhbGxlZCBvbiBhbiBpbnB1dCBsaW5lIHdoZW4gdGhlIGNvbW1hbmQgcHJlZml4IGlzIG5vdCByZWNvZ25pemVkLgoKICAgICAgICBJZiB0aGlzIG1ldGhvZCBpcyBub3Qgb3ZlcnJpZGRlbiwgaXQgcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UgYW5kCiAgICAgICAgcmV0dXJucy4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5zdGRvdXQud3JpdGUoJyoqKiBVbmtub3duIHN5bnRheDogJXNcbiclbGluZSkKCiAgICBkZWYgY29tcGxldGVkZWZhdWx0KHNlbGYsICppZ25vcmVkKToKICAgICAgICAiIiJNZXRob2QgY2FsbGVkIHRvIGNvbXBsZXRlIGFuIGlucHV0IGxpbmUgd2hlbiBubyBjb21tYW5kLXNwZWNpZmljCiAgICAgICAgY29tcGxldGVfKigpIG1ldGhvZCBpcyBhdmFpbGFibGUuCgogICAgICAgIEJ5IGRlZmF1bHQsIGl0IHJldHVybnMgYW4gZW1wdHkgbGlzdC4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIFtdCgogICAgZGVmIGNvbXBsZXRlbmFtZXMoc2VsZiwgdGV4dCwgKmlnbm9yZWQpOgogICAgICAgIGRvdGV4dCA9ICdkb18nK3RleHQKICAgICAgICByZXR1cm4gW2FbMzpdIGZvciBhIGluIHNlbGYuZ2V0X25hbWVzKCkgaWYgYS5zdGFydHN3aXRoKGRvdGV4dCldCgogICAgZGVmIGNvbXBsZXRlKHNlbGYsIHRleHQsIHN0YXRlKToKICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgcG9zc2libGUgY29tcGxldGlvbiBmb3IgJ3RleHQnLgoKICAgICAgICBJZiBhIGNvbW1hbmQgaGFzIG5vdCBiZWVuIGVudGVyZWQsIHRoZW4gY29tcGxldGUgYWdhaW5zdCBjb21tYW5kIGxpc3QuCiAgICAgICAgT3RoZXJ3aXNlIHRyeSB0byBjYWxsIGNvbXBsZXRlXzxjb21tYW5kPiB0byBnZXQgbGlzdCBvZiBjb21wbGV0aW9ucy4KICAgICAgICAiIiIKICAgICAgICBpZiBzdGF0ZSA9PSAwOgogICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgICAgICAgICAgb3JpZ2xpbmUgPSByZWFkbGluZS5nZXRfbGluZV9idWZmZXIoKQogICAgICAgICAgICBsaW5lID0gb3JpZ2xpbmUubHN0cmlwKCkKICAgICAgICAgICAgc3RyaXBwZWQgPSBsZW4ob3JpZ2xpbmUpIC0gbGVuKGxpbmUpCiAgICAgICAgICAgIGJlZ2lkeCA9IHJlYWRsaW5lLmdldF9iZWdpZHgoKSAtIHN0cmlwcGVkCiAgICAgICAgICAgIGVuZGlkeCA9IHJlYWRsaW5lLmdldF9lbmRpZHgoKSAtIHN0cmlwcGVkCiAgICAgICAgICAgIGlmIGJlZ2lkeD4wOgogICAgICAgICAgICAgICAgY21kLCBhcmdzLCBmb28gPSBzZWxmLnBhcnNlbGluZShsaW5lKQogICAgICAgICAgICAgICAgaWYgY21kID09ICcnOgogICAgICAgICAgICAgICAgICAgIGNvbXBmdW5jID0gc2VsZi5jb21wbGV0ZWRlZmF1bHQKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBjb21wZnVuYyA9IGdldGF0dHIoc2VsZiwgJ2NvbXBsZXRlXycgKyBjbWQpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBjb21wZnVuYyA9IHNlbGYuY29tcGxldGVkZWZhdWx0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjb21wZnVuYyA9IHNlbGYuY29tcGxldGVuYW1lcwogICAgICAgICAgICBzZWxmLmNvbXBsZXRpb25fbWF0Y2hlcyA9IGNvbXBmdW5jKHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tcGxldGlvbl9tYXRjaGVzW3N0YXRlXQogICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBnZXRfbmFtZXMoc2VsZik6CiAgICAgICAgIyBUaGlzIG1ldGhvZCB1c2VkIHRvIHB1bGwgaW4gYmFzZSBjbGFzcyBhdHRyaWJ1dGVzCiAgICAgICAgIyBhdCBhIHRpbWUgZGlyKCkgZGlkbid0IGRvIGl0IHlldC4KICAgICAgICByZXR1cm4gZGlyKHNlbGYuX19jbGFzc19fKQoKICAgIGRlZiBjb21wbGV0ZV9oZWxwKHNlbGYsICphcmdzKToKICAgICAgICBjb21tYW5kcyA9IHNldChzZWxmLmNvbXBsZXRlbmFtZXMoKmFyZ3MpKQogICAgICAgIHRvcGljcyA9IHNldChhWzU6XSBmb3IgYSBpbiBzZWxmLmdldF9uYW1lcygpCiAgICAgICAgICAgICAgICAgICAgIGlmIGEuc3RhcnRzd2l0aCgnaGVscF8nICsgYXJnc1swXSkpCiAgICAgICAgcmV0dXJuIGxpc3QoY29tbWFuZHMgfCB0b3BpY3MpCgogICAgZGVmIGRvX2hlbHAoc2VsZiwgYXJnKToKICAgICAgICAnTGlzdCBhdmFpbGFibGUgY29tbWFuZHMgd2l0aCAiaGVscCIgb3IgZGV0YWlsZWQgaGVscCB3aXRoICJoZWxwIGNtZCIuJwogICAgICAgIGlmIGFyZzoKICAgICAgICAgICAgIyBYWFggY2hlY2sgYXJnIHN5bnRheAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzZWxmLCAnaGVscF8nICsgYXJnKQogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZG9jPWdldGF0dHIoc2VsZiwgJ2RvXycgKyBhcmcpLl9fZG9jX18KICAgICAgICAgICAgICAgICAgICBpZiBkb2M6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LndyaXRlKCIlc1xuIiVzdHIoZG9jKSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQud3JpdGUoIiVzXG4iJXN0cihzZWxmLm5vaGVscCAlIChhcmcsKSkpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZnVuYygpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbmFtZXMgPSBzZWxmLmdldF9uYW1lcygpCiAgICAgICAgICAgIGNtZHNfZG9jID0gW10KICAgICAgICAgICAgY21kc191bmRvYyA9IFtdCiAgICAgICAgICAgIHRvcGljcyA9IHNldCgpCiAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgICAgaWYgbmFtZVs6NV0gPT0gJ2hlbHBfJzoKICAgICAgICAgICAgICAgICAgICB0b3BpY3MuYWRkKG5hbWVbNTpdKQogICAgICAgICAgICBuYW1lcy5zb3J0KCkKICAgICAgICAgICAgIyBUaGVyZSBjYW4gYmUgZHVwbGljYXRlcyBpZiByb3V0aW5lcyBvdmVycmlkZGVuCiAgICAgICAgICAgIHByZXZuYW1lID0gJycKICAgICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICAgICBpZiBuYW1lWzozXSA9PSAnZG9fJzoKICAgICAgICAgICAgICAgICAgICBpZiBuYW1lID09IHByZXZuYW1lOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIHByZXZuYW1lID0gbmFtZQogICAgICAgICAgICAgICAgICAgIGNtZD1uYW1lWzM6XQogICAgICAgICAgICAgICAgICAgIGlmIGNtZCBpbiB0b3BpY3M6CiAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfZG9jLmFwcGVuZChjbWQpCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcGljcy5yZW1vdmUoY21kKQogICAgICAgICAgICAgICAgICAgIGVsaWYgZ2V0YXR0cihzZWxmLCBuYW1lKS5fX2RvY19fOgogICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2RvYy5hcHBlbmQoY21kKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfdW5kb2MuYXBwZW5kKGNtZCkKICAgICAgICAgICAgc2VsZi5zdGRvdXQud3JpdGUoIiVzXG4iJXN0cihzZWxmLmRvY19sZWFkZXIpKQogICAgICAgICAgICBzZWxmLnByaW50X3RvcGljcyhzZWxmLmRvY19oZWFkZXIsICAgY21kc19kb2MsICAgMTUsODApCiAgICAgICAgICAgIHNlbGYucHJpbnRfdG9waWNzKHNlbGYubWlzY19oZWFkZXIsICBzb3J0ZWQodG9waWNzKSwxNSw4MCkKICAgICAgICAgICAgc2VsZi5wcmludF90b3BpY3Moc2VsZi51bmRvY19oZWFkZXIsIGNtZHNfdW5kb2MsIDE1LDgwKQoKICAgIGRlZiBwcmludF90b3BpY3Moc2VsZiwgaGVhZGVyLCBjbWRzLCBjbWRsZW4sIG1heGNvbCk6CiAgICAgICAgaWYgY21kczoKICAgICAgICAgICAgc2VsZi5zdGRvdXQud3JpdGUoIiVzXG4iJXN0cihoZWFkZXIpKQogICAgICAgICAgICBpZiBzZWxmLnJ1bGVyOgogICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQud3JpdGUoIiVzXG4iJXN0cihzZWxmLnJ1bGVyICogbGVuKGhlYWRlcikpKQogICAgICAgICAgICBzZWxmLmNvbHVtbml6ZShjbWRzLCBtYXhjb2wtMSkKICAgICAgICAgICAgc2VsZi5zdGRvdXQud3JpdGUoIlxuIikKCiAgICBkZWYgY29sdW1uaXplKHNlbGYsIGxpc3QsIGRpc3BsYXl3aWR0aD04MCk6CiAgICAgICAgIiIiRGlzcGxheSBhIGxpc3Qgb2Ygc3RyaW5ncyBhcyBhIGNvbXBhY3Qgc2V0IG9mIGNvbHVtbnMuCgogICAgICAgIEVhY2ggY29sdW1uIGlzIG9ubHkgYXMgd2lkZSBhcyBuZWNlc3NhcnkuCiAgICAgICAgQ29sdW1ucyBhcmUgc2VwYXJhdGVkIGJ5IHR3byBzcGFjZXMgKG9uZSB3YXMgbm90IGxlZ2libGUgZW5vdWdoKS4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgbGlzdDoKICAgICAgICAgICAgc2VsZi5zdGRvdXQud3JpdGUoIjxlbXB0eT5cbiIpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBub25zdHJpbmdzID0gW2kgZm9yIGkgaW4gcmFuZ2UobGVuKGxpc3QpKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsaXN0W2ldLCBzdHIpXQogICAgICAgIGlmIG5vbnN0cmluZ3M6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibGlzdFtpXSBub3QgYSBzdHJpbmcgZm9yIGkgaW4gJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICIsICIuam9pbihtYXAoc3RyLCBub25zdHJpbmdzKSkpCiAgICAgICAgc2l6ZSA9IGxlbihsaXN0KQogICAgICAgIGlmIHNpemUgPT0gMToKICAgICAgICAgICAgc2VsZi5zdGRvdXQud3JpdGUoJyVzXG4nJXN0cihsaXN0WzBdKSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIyBUcnkgZXZlcnkgcm93IGNvdW50IGZyb20gMSB1cHdhcmRzCiAgICAgICAgZm9yIG5yb3dzIGluIHJhbmdlKDEsIGxlbihsaXN0KSk6CiAgICAgICAgICAgIG5jb2xzID0gKHNpemUrbnJvd3MtMSkgLy8gbnJvd3MKICAgICAgICAgICAgY29sd2lkdGhzID0gW10KICAgICAgICAgICAgdG90d2lkdGggPSAtMgogICAgICAgICAgICBmb3IgY29sIGluIHJhbmdlKG5jb2xzKToKICAgICAgICAgICAgICAgIGNvbHdpZHRoID0gMAogICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByYW5nZShucm93cyk6CiAgICAgICAgICAgICAgICAgICAgaSA9IHJvdyArIG5yb3dzKmNvbAogICAgICAgICAgICAgICAgICAgIGlmIGkgPj0gc2l6ZToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB4ID0gbGlzdFtpXQogICAgICAgICAgICAgICAgICAgIGNvbHdpZHRoID0gbWF4KGNvbHdpZHRoLCBsZW4oeCkpCiAgICAgICAgICAgICAgICBjb2x3aWR0aHMuYXBwZW5kKGNvbHdpZHRoKQogICAgICAgICAgICAgICAgdG90d2lkdGggKz0gY29sd2lkdGggKyAyCiAgICAgICAgICAgICAgICBpZiB0b3R3aWR0aCA+IGRpc3BsYXl3aWR0aDoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiB0b3R3aWR0aCA8PSBkaXNwbGF5d2lkdGg6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5yb3dzID0gbGVuKGxpc3QpCiAgICAgICAgICAgIG5jb2xzID0gMQogICAgICAgICAgICBjb2x3aWR0aHMgPSBbMF0KICAgICAgICBmb3Igcm93IGluIHJhbmdlKG5yb3dzKToKICAgICAgICAgICAgdGV4dHMgPSBbXQogICAgICAgICAgICBmb3IgY29sIGluIHJhbmdlKG5jb2xzKToKICAgICAgICAgICAgICAgIGkgPSByb3cgKyBucm93cypjb2wKICAgICAgICAgICAgICAgIGlmIGkgPj0gc2l6ZToKICAgICAgICAgICAgICAgICAgICB4ID0gIiIKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgeCA9IGxpc3RbaV0KICAgICAgICAgICAgICAgIHRleHRzLmFwcGVuZCh4KQogICAgICAgICAgICB3aGlsZSB0ZXh0cyBhbmQgbm90IHRleHRzWy0xXToKICAgICAgICAgICAgICAgIGRlbCB0ZXh0c1stMV0KICAgICAgICAgICAgZm9yIGNvbCBpbiByYW5nZShsZW4odGV4dHMpKToKICAgICAgICAgICAgICAgIHRleHRzW2NvbF0gPSB0ZXh0c1tjb2xdLmxqdXN0KGNvbHdpZHRoc1tjb2xdKQogICAgICAgICAgICBzZWxmLnN0ZG91dC53cml0ZSgiJXNcbiIlc3RyKCIgICIuam9pbih0ZXh0cykpKQpQSwMEFAAAAAAAAiCjVp9B8gh+KQAAfikAAAcAAABjb2RlLnB5IiIiVXRpbGl0aWVzIG5lZWRlZCB0byBlbXVsYXRlIFB5dGhvbidzIGludGVyYWN0aXZlIGludGVycHJldGVyLgoKIiIiCgojIEluc3BpcmVkIGJ5IHNpbWlsYXIgY29kZSBieSBKZWZmIEVwbGVyIGFuZCBGcmVkcmlrIEx1bmRoLgoKCmltcG9ydCBzeXMKaW1wb3J0IHRyYWNlYmFjawpmcm9tIGNvZGVvcCBpbXBvcnQgQ29tbWFuZENvbXBpbGVyLCBjb21waWxlX2NvbW1hbmQKCl9fYWxsX18gPSBbIkludGVyYWN0aXZlSW50ZXJwcmV0ZXIiLCAiSW50ZXJhY3RpdmVDb25zb2xlIiwgImludGVyYWN0IiwKICAgICAgICAgICAiY29tcGlsZV9jb21tYW5kIl0KCmNsYXNzIEludGVyYWN0aXZlSW50ZXJwcmV0ZXI6CiAgICAiIiJCYXNlIGNsYXNzIGZvciBJbnRlcmFjdGl2ZUNvbnNvbGUuCgogICAgVGhpcyBjbGFzcyBkZWFscyB3aXRoIHBhcnNpbmcgYW5kIGludGVycHJldGVyIHN0YXRlICh0aGUgdXNlcidzCiAgICBuYW1lc3BhY2UpOyBpdCBkb2Vzbid0IGRlYWwgd2l0aCBpbnB1dCBidWZmZXJpbmcgb3IgcHJvbXB0aW5nIG9yCiAgICBpbnB1dCBmaWxlIG5hbWluZyAodGhlIGZpbGVuYW1lIGlzIGFsd2F5cyBwYXNzZWQgaW4gZXhwbGljaXRseSkuCgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2Fscz1Ob25lKToKICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KCiAgICAgICAgVGhlIG9wdGlvbmFsICdsb2NhbHMnIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgZGljdGlvbmFyeSBpbgogICAgICAgIHdoaWNoIGNvZGUgd2lsbCBiZSBleGVjdXRlZDsgaXQgZGVmYXVsdHMgdG8gYSBuZXdseSBjcmVhdGVkCiAgICAgICAgZGljdGlvbmFyeSB3aXRoIGtleSAiX19uYW1lX18iIHNldCB0byAiX19jb25zb2xlX18iIGFuZCBrZXkKICAgICAgICAiX19kb2NfXyIgc2V0IHRvIE5vbmUuCgogICAgICAgICIiIgogICAgICAgIGlmIGxvY2FscyBpcyBOb25lOgogICAgICAgICAgICBsb2NhbHMgPSB7Il9fbmFtZV9fIjogIl9fY29uc29sZV9fIiwgIl9fZG9jX18iOiBOb25lfQogICAgICAgIHNlbGYubG9jYWxzID0gbG9jYWxzCiAgICAgICAgc2VsZi5jb21waWxlID0gQ29tbWFuZENvbXBpbGVyKCkKCiAgICBkZWYgcnVuc291cmNlKHNlbGYsIHNvdXJjZSwgZmlsZW5hbWU9IjxpbnB1dD4iLCBzeW1ib2w9InNpbmdsZSIpOgogICAgICAgICIiIkNvbXBpbGUgYW5kIHJ1biBzb21lIHNvdXJjZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCgogICAgICAgIEFyZ3VtZW50cyBhcmUgYXMgZm9yIGNvbXBpbGVfY29tbWFuZCgpLgoKICAgICAgICBPbmUgb2Ygc2V2ZXJhbCB0aGluZ3MgY2FuIGhhcHBlbjoKCiAgICAgICAgMSkgVGhlIGlucHV0IGlzIGluY29ycmVjdDsgY29tcGlsZV9jb21tYW5kKCkgcmFpc2VkIGFuCiAgICAgICAgZXhjZXB0aW9uIChTeW50YXhFcnJvciBvciBPdmVyZmxvd0Vycm9yKS4gIEEgc3ludGF4IHRyYWNlYmFjawogICAgICAgIHdpbGwgYmUgcHJpbnRlZCBieSBjYWxsaW5nIHRoZSBzaG93c3ludGF4ZXJyb3IoKSBtZXRob2QuCgogICAgICAgIDIpIFRoZSBpbnB1dCBpcyBpbmNvbXBsZXRlLCBhbmQgbW9yZSBpbnB1dCBpcyByZXF1aXJlZDsKICAgICAgICBjb21waWxlX2NvbW1hbmQoKSByZXR1cm5lZCBOb25lLiAgTm90aGluZyBoYXBwZW5zLgoKICAgICAgICAzKSBUaGUgaW5wdXQgaXMgY29tcGxldGU7IGNvbXBpbGVfY29tbWFuZCgpIHJldHVybmVkIGEgY29kZQogICAgICAgIG9iamVjdC4gIFRoZSBjb2RlIGlzIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgc2VsZi5ydW5jb2RlKCkgKHdoaWNoCiAgICAgICAgYWxzbyBoYW5kbGVzIHJ1bi10aW1lIGV4Y2VwdGlvbnMsIGV4Y2VwdCBmb3IgU3lzdGVtRXhpdCkuCgogICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgVHJ1ZSBpbiBjYXNlIDIsIEZhbHNlIGluIHRoZSBvdGhlciBjYXNlcyAodW5sZXNzCiAgICAgICAgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCkuICBUaGUgcmV0dXJuIHZhbHVlIGNhbiBiZSB1c2VkIHRvCiAgICAgICAgZGVjaWRlIHdoZXRoZXIgdG8gdXNlIHN5cy5wczEgb3Igc3lzLnBzMiB0byBwcm9tcHQgdGhlIG5leHQKICAgICAgICBsaW5lLgoKICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNvZGUgPSBzZWxmLmNvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgc3ltYm9sKQogICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgU3ludGF4RXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAjIENhc2UgMQogICAgICAgICAgICBzZWxmLnNob3dzeW50YXhlcnJvcihmaWxlbmFtZSkKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIGlmIGNvZGUgaXMgTm9uZToKICAgICAgICAgICAgIyBDYXNlIDIKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgIyBDYXNlIDMKICAgICAgICBzZWxmLnJ1bmNvZGUoY29kZSkKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgcnVuY29kZShzZWxmLCBjb2RlKToKICAgICAgICAiIiJFeGVjdXRlIGEgY29kZSBvYmplY3QuCgogICAgICAgIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycywgc2VsZi5zaG93dHJhY2ViYWNrKCkgaXMgY2FsbGVkIHRvCiAgICAgICAgZGlzcGxheSBhIHRyYWNlYmFjay4gIEFsbCBleGNlcHRpb25zIGFyZSBjYXVnaHQgZXhjZXB0CiAgICAgICAgU3lzdGVtRXhpdCwgd2hpY2ggaXMgcmVyYWlzZWQuCgogICAgICAgIEEgbm90ZSBhYm91dCBLZXlib2FyZEludGVycnVwdDogdGhpcyBleGNlcHRpb24gbWF5IG9jY3VyCiAgICAgICAgZWxzZXdoZXJlIGluIHRoaXMgY29kZSwgYW5kIG1heSBub3QgYWx3YXlzIGJlIGNhdWdodC4gIFRoZQogICAgICAgIGNhbGxlciBzaG91bGQgYmUgcHJlcGFyZWQgdG8gZGVhbCB3aXRoIGl0LgoKICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGV4ZWMoY29kZSwgc2VsZi5sb2NhbHMpCiAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBzZWxmLnNob3d0cmFjZWJhY2soKQoKICAgIGRlZiBzaG93c3ludGF4ZXJyb3Ioc2VsZiwgZmlsZW5hbWU9Tm9uZSk6CiAgICAgICAgIiIiRGlzcGxheSB0aGUgc3ludGF4IGVycm9yIHRoYXQganVzdCBvY2N1cnJlZC4KCiAgICAgICAgVGhpcyBkb2Vzbid0IGRpc3BsYXkgYSBzdGFjayB0cmFjZSBiZWNhdXNlIHRoZXJlIGlzbid0IG9uZS4KCiAgICAgICAgSWYgYSBmaWxlbmFtZSBpcyBnaXZlbiwgaXQgaXMgc3R1ZmZlZCBpbiB0aGUgZXhjZXB0aW9uIGluc3RlYWQKICAgICAgICBvZiB3aGF0IHdhcyB0aGVyZSBiZWZvcmUgKGJlY2F1c2UgUHl0aG9uJ3MgcGFyc2VyIGFsd2F5cyB1c2VzCiAgICAgICAgIjxzdHJpbmc+IiB3aGVuIHJlYWRpbmcgZnJvbSBhIHN0cmluZykuCgogICAgICAgIFRoZSBvdXRwdXQgaXMgd3JpdHRlbiBieSBzZWxmLndyaXRlKCksIGJlbG93LgoKICAgICAgICAiIiIKICAgICAgICB0eXBlLCB2YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQogICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0eXBlCiAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQogICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCiAgICAgICAgaWYgZmlsZW5hbWUgYW5kIHR5cGUgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICMgV29yayBoYXJkIHRvIHN0dWZmIHRoZSBjb3JyZWN0IGZpbGVuYW1lIGluIHRoZSBleGNlcHRpb24KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbXNnLCAoZHVtbXlfZmlsZW5hbWUsIGxpbmVubywgb2Zmc2V0LCBsaW5lKSA9IHZhbHVlLmFyZ3MKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAjIE5vdCB0aGUgZm9ybWF0IHdlIGV4cGVjdDsgbGVhdmUgaXQgYWxvbmUKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgU3R1ZmYgaW4gdGhlIHJpZ2h0IGZpbGVuYW1lCiAgICAgICAgICAgICAgICB2YWx1ZSA9IFN5bnRheEVycm9yKG1zZywgKGZpbGVuYW1lLCBsaW5lbm8sIG9mZnNldCwgbGluZSkpCiAgICAgICAgICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbHVlCiAgICAgICAgaWYgc3lzLmV4Y2VwdGhvb2sgaXMgc3lzLl9fZXhjZXB0aG9va19fOgogICAgICAgICAgICBsaW5lcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZSwgdmFsdWUpCiAgICAgICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQogICAgICAgICAgICAjIG92ZXIgc2VsZi53cml0ZQogICAgICAgICAgICBzeXMuZXhjZXB0aG9vayh0eXBlLCB2YWx1ZSwgdGIpCgogICAgZGVmIHNob3d0cmFjZWJhY2soc2VsZik6CiAgICAgICAgIiIiRGlzcGxheSB0aGUgZXhjZXB0aW9uIHRoYXQganVzdCBvY2N1cnJlZC4KCiAgICAgICAgV2UgcmVtb3ZlIHRoZSBmaXJzdCBzdGFjayBpdGVtIGJlY2F1c2UgaXQgaXMgb3VyIG93biBjb2RlLgoKICAgICAgICBUaGUgb3V0cHV0IGlzIHdyaXR0ZW4gYnkgc2VsZi53cml0ZSgpLCBiZWxvdy4KCiAgICAgICAgIiIiCiAgICAgICAgc3lzLmxhc3RfdHlwZSwgc3lzLmxhc3RfdmFsdWUsIGxhc3RfdGIgPSBlaSA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gbGFzdF90YgogICAgICAgIHRyeToKICAgICAgICAgICAgbGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbihlaVswXSwgZWlbMV0sIGxhc3RfdGIudGJfbmV4dCkKICAgICAgICAgICAgaWYgc3lzLmV4Y2VwdGhvb2sgaXMgc3lzLl9fZXhjZXB0aG9va19fOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgSWYgc29tZW9uZSBoYXMgc2V0IHN5cy5leGNlcHRob29rLCB3ZSBsZXQgdGhhdCB0YWtlIHByZWNlZGVuY2UKICAgICAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCiAgICAgICAgICAgICAgICBzeXMuZXhjZXB0aG9vayhlaVswXSwgZWlbMV0sIGxhc3RfdGIpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgbGFzdF90YiA9IGVpID0gTm9uZQoKICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAiIiJXcml0ZSBhIHN0cmluZy4KCiAgICAgICAgVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gd3JpdGVzIHRvIHN5cy5zdGRlcnI7IGEgc3ViY2xhc3MgbWF5CiAgICAgICAgcmVwbGFjZSB0aGlzIHdpdGggYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24uCgogICAgICAgICIiIgogICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZGF0YSkKCgpjbGFzcyBJbnRlcmFjdGl2ZUNvbnNvbGUoSW50ZXJhY3RpdmVJbnRlcnByZXRlcik6CiAgICAiIiJDbG9zZWx5IGVtdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gaW50ZXJwcmV0ZXIuCgogICAgVGhpcyBjbGFzcyBidWlsZHMgb24gSW50ZXJhY3RpdmVJbnRlcnByZXRlciBhbmQgYWRkcyBwcm9tcHRpbmcKICAgIHVzaW5nIHRoZSBmYW1pbGlhciBzeXMucHMxIGFuZCBzeXMucHMyLCBhbmQgaW5wdXQgYnVmZmVyaW5nLgoKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbHM9Tm9uZSwgZmlsZW5hbWU9Ijxjb25zb2xlPiIpOgogICAgICAgICIiIkNvbnN0cnVjdG9yLgoKICAgICAgICBUaGUgb3B0aW9uYWwgbG9jYWxzIGFyZ3VtZW50IHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgICAgIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIgYmFzZSBjbGFzcy4KCiAgICAgICAgVGhlIG9wdGlvbmFsIGZpbGVuYW1lIGFyZ3VtZW50IHNob3VsZCBzcGVjaWZ5IHRoZSAoZmlsZSluYW1lCiAgICAgICAgb2YgdGhlIGlucHV0IHN0cmVhbTsgaXQgd2lsbCBzaG93IHVwIGluIHRyYWNlYmFja3MuCgogICAgICAgICIiIgogICAgICAgIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIuX19pbml0X18oc2VsZiwgbG9jYWxzKQogICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICAgIHNlbGYucmVzZXRidWZmZXIoKQoKICAgIGRlZiByZXNldGJ1ZmZlcihzZWxmKToKICAgICAgICAiIiJSZXNldCB0aGUgaW5wdXQgYnVmZmVyLiIiIgogICAgICAgIHNlbGYuYnVmZmVyID0gW10KCiAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUsIGV4aXRtc2c9Tm9uZSk6CiAgICAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4KCiAgICAgICAgVGhlIG9wdGlvbmFsIGJhbm5lciBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGJhbm5lciB0byBwcmludAogICAgICAgIGJlZm9yZSB0aGUgZmlyc3QgaW50ZXJhY3Rpb247IGJ5IGRlZmF1bHQgaXQgcHJpbnRzIGEgYmFubmVyCiAgICAgICAgc2ltaWxhciB0byB0aGUgb25lIHByaW50ZWQgYnkgdGhlIHJlYWwgUHl0aG9uIGludGVycHJldGVyLAogICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBjdXJyZW50IGNsYXNzIG5hbWUgaW4gcGFyZW50aGVzZXMgKHNvIGFzIG5vdAogICAgICAgIHRvIGNvbmZ1c2UgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28KICAgICAgICBjbG9zZSEpLgoKICAgICAgICBUaGUgb3B0aW9uYWwgZXhpdG1zZyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGV4aXQgbWVzc2FnZQogICAgICAgIHByaW50ZWQgd2hlbiBleGl0aW5nLiBQYXNzIHRoZSBlbXB0eSBzdHJpbmcgdG8gc3VwcHJlc3MKICAgICAgICBwcmludGluZyBhbiBleGl0IG1lc3NhZ2UuIElmIGV4aXRtc2cgaXMgbm90IGdpdmVuIG9yIE5vbmUsCiAgICAgICAgYSBkZWZhdWx0IG1lc3NhZ2UgaXMgcHJpbnRlZC4KCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzeXMucHMxCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBzeXMucHMxID0gIj4+PiAiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzeXMucHMyCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBzeXMucHMyID0gIi4uLiAiCiAgICAgICAgY3BydCA9ICdUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uJwogICAgICAgIGlmIGJhbm5lciBpcyBOb25lOgogICAgICAgICAgICBzZWxmLndyaXRlKCJQeXRob24gJXMgb24gJXNcbiVzXG4oJXMpXG4iICUKICAgICAgICAgICAgICAgICAgICAgICAoc3lzLnZlcnNpb24sIHN5cy5wbGF0Zm9ybSwgY3BydCwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pKQogICAgICAgIGVsaWYgYmFubmVyOgogICAgICAgICAgICBzZWxmLndyaXRlKCIlc1xuIiAlIHN0cihiYW5uZXIpKQogICAgICAgIG1vcmUgPSAwCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgbW9yZToKICAgICAgICAgICAgICAgICAgICBwcm9tcHQgPSBzeXMucHMyCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHByb21wdCA9IHN5cy5wczEKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5yYXdfaW5wdXQocHJvbXB0KQogICAgICAgICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgogICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIlxuIikKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBtb3JlID0gc2VsZi5wdXNoKGxpbmUpCiAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIlxuS2V5Ym9hcmRJbnRlcnJ1cHRcbiIpCiAgICAgICAgICAgICAgICBzZWxmLnJlc2V0YnVmZmVyKCkKICAgICAgICAgICAgICAgIG1vcmUgPSAwCiAgICAgICAgaWYgZXhpdG1zZyBpcyBOb25lOgogICAgICAgICAgICBzZWxmLndyaXRlKCdub3cgZXhpdGluZyAlcy4uLlxuJyAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgIGVsaWYgZXhpdG1zZyAhPSAnJzoKICAgICAgICAgICAgc2VsZi53cml0ZSgnJXNcbicgJSBleGl0bXNnKQoKICAgIGRlZiBwdXNoKHNlbGYsIGxpbmUpOgogICAgICAgICIiIlB1c2ggYSBsaW5lIHRvIHRoZSBpbnRlcnByZXRlci4KCiAgICAgICAgVGhlIGxpbmUgc2hvdWxkIG5vdCBoYXZlIGEgdHJhaWxpbmcgbmV3bGluZTsgaXQgbWF5IGhhdmUKICAgICAgICBpbnRlcm5hbCBuZXdsaW5lcy4gIFRoZSBsaW5lIGlzIGFwcGVuZGVkIHRvIGEgYnVmZmVyIGFuZCB0aGUKICAgICAgICBpbnRlcnByZXRlcidzIHJ1bnNvdXJjZSgpIG1ldGhvZCBpcyBjYWxsZWQgd2l0aCB0aGUKICAgICAgICBjb25jYXRlbmF0ZWQgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBhcyBzb3VyY2UuICBJZiB0aGlzCiAgICAgICAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbW1hbmQgd2FzIGV4ZWN1dGVkIG9yIGludmFsaWQsIHRoZSBidWZmZXIKICAgICAgICBpcyByZXNldDsgb3RoZXJ3aXNlLCB0aGUgY29tbWFuZCBpcyBpbmNvbXBsZXRlLCBhbmQgdGhlIGJ1ZmZlcgogICAgICAgIGlzIGxlZnQgYXMgaXQgd2FzIGFmdGVyIHRoZSBsaW5lIHdhcyBhcHBlbmRlZC4gIFRoZSByZXR1cm4KICAgICAgICB2YWx1ZSBpcyAxIGlmIG1vcmUgaW5wdXQgaXMgcmVxdWlyZWQsIDAgaWYgdGhlIGxpbmUgd2FzIGRlYWx0CiAgICAgICAgd2l0aCBpbiBzb21lIHdheSAodGhpcyBpcyB0aGUgc2FtZSBhcyBydW5zb3VyY2UoKSkuCgogICAgICAgICIiIgogICAgICAgIHNlbGYuYnVmZmVyLmFwcGVuZChsaW5lKQogICAgICAgIHNvdXJjZSA9ICJcbiIuam9pbihzZWxmLmJ1ZmZlcikKICAgICAgICBtb3JlID0gc2VsZi5ydW5zb3VyY2Uoc291cmNlLCBzZWxmLmZpbGVuYW1lKQogICAgICAgIGlmIG5vdCBtb3JlOgogICAgICAgICAgICBzZWxmLnJlc2V0YnVmZmVyKCkKICAgICAgICByZXR1cm4gbW9yZQoKICAgIGRlZiByYXdfaW5wdXQoc2VsZiwgcHJvbXB0PSIiKToKICAgICAgICAiIiJXcml0ZSBhIHByb21wdCBhbmQgcmVhZCBhIGxpbmUuCgogICAgICAgIFRoZSByZXR1cm5lZCBsaW5lIGRvZXMgbm90IGluY2x1ZGUgdGhlIHRyYWlsaW5nIG5ld2xpbmUuCiAgICAgICAgV2hlbiB0aGUgdXNlciBlbnRlcnMgdGhlIEVPRiBrZXkgc2VxdWVuY2UsIEVPRkVycm9yIGlzIHJhaXNlZC4KCiAgICAgICAgVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgYnVpbHQtaW4gZnVuY3Rpb24KICAgICAgICBpbnB1dCgpOyBhIHN1YmNsYXNzIG1heSByZXBsYWNlIHRoaXMgd2l0aCBhIGRpZmZlcmVudAogICAgICAgIGltcGxlbWVudGF0aW9uLgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gaW5wdXQocHJvbXB0KQoKCgpkZWYgaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUsIGV4aXRtc2c9Tm9uZSk6CiAgICAiIiJDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBpbnRlcnByZXRlci4KCiAgICBUaGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgaW50ZXJmYWNlIHRvIHRoZSBJbnRlcmFjdGl2ZUNvbnNvbGUKICAgIGNsYXNzLiAgV2hlbiByZWFkZnVuYyBpcyBub3Qgc3BlY2lmaWVkLCBpdCBhdHRlbXB0cyB0byBpbXBvcnQgdGhlCiAgICByZWFkbGluZSBtb2R1bGUgdG8gZW5hYmxlIEdOVSByZWFkbGluZSBpZiBpdCBpcyBhdmFpbGFibGUuCgogICAgQXJndW1lbnRzIChhbGwgb3B0aW9uYWwsIGFsbCBkZWZhdWx0IHRvIE5vbmUpOgoKICAgIGJhbm5lciAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKICAgIHJlYWRmdW5jIC0tIGlmIG5vdCBOb25lLCByZXBsYWNlcyBJbnRlcmFjdGl2ZUNvbnNvbGUucmF3X2lucHV0KCkKICAgIGxvY2FsIC0tIHBhc3NlZCB0byBJbnRlcmFjdGl2ZUludGVycHJldGVyLl9faW5pdF9fKCkKICAgIGV4aXRtc2cgLS0gcGFzc2VkIHRvIEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdCgpCgogICAgIiIiCiAgICBjb25zb2xlID0gSW50ZXJhY3RpdmVDb25zb2xlKGxvY2FsKQogICAgaWYgcmVhZGZ1bmMgaXMgbm90IE5vbmU6CiAgICAgICAgY29uc29sZS5yYXdfaW5wdXQgPSByZWFkZnVuYwogICAgZWxzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIsIGV4aXRtc2cpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIGltcG9ydCBhcmdwYXJzZQoKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCBwcmludCB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMiKQogICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIGlmIGFyZ3MucSBvciBzeXMuZmxhZ3MucXVpZXQ6CiAgICAgICAgYmFubmVyID0gJycKICAgIGVsc2U6CiAgICAgICAgYmFubmVyID0gTm9uZQogICAgaW50ZXJhY3QoYmFubmVyKQpQSwMEFAAAAAAAAiCjVpfmtbtqjwAAao8AAAkAAABjb2RlY3MucHkiIiIgY29kZWNzIC0tIFB5dGhvbiBDb2RlYyBSZWdpc3RyeSwgQVBJIGFuZCBoZWxwZXJzLgoKCldyaXR0ZW4gYnkgTWFyYy1BbmRyZSBMZW1idXJnIChtYWxAbGVtYnVyZy5jb20pLgoKKGMpIENvcHlyaWdodCBDTlJJLCBBbGwgUmlnaHRzIFJlc2VydmVkLiBOTyBXQVJSQU5UWS4KCiIiIgoKaW1wb3J0IGJ1aWx0aW5zCmltcG9ydCBzeXMKCiMjIyBSZWdpc3RyeSBhbmQgYnVpbHRpbiBzdGF0ZWxlc3MgY29kZWMgZnVuY3Rpb25zCgp0cnk6CiAgICBmcm9tIF9jb2RlY3MgaW1wb3J0ICoKZXhjZXB0IEltcG9ydEVycm9yIGFzIHdoeToKICAgIHJhaXNlIFN5c3RlbUVycm9yKCdGYWlsZWQgdG8gbG9hZCB0aGUgYnVpbHRpbiBjb2RlY3M6ICVzJyAlIHdoeSkKCl9fYWxsX18gPSBbInJlZ2lzdGVyIiwgImxvb2t1cCIsICJvcGVuIiwgIkVuY29kZWRGaWxlIiwgIkJPTSIsICJCT01fQkUiLAogICAgICAgICAgICJCT01fTEUiLCAiQk9NMzJfQkUiLCAiQk9NMzJfTEUiLCAiQk9NNjRfQkUiLCAiQk9NNjRfTEUiLAogICAgICAgICAgICJCT01fVVRGOCIsICJCT01fVVRGMTYiLCAiQk9NX1VURjE2X0xFIiwgIkJPTV9VVEYxNl9CRSIsCiAgICAgICAgICAgIkJPTV9VVEYzMiIsICJCT01fVVRGMzJfTEUiLCAiQk9NX1VURjMyX0JFIiwKICAgICAgICAgICAiQ29kZWNJbmZvIiwgIkNvZGVjIiwgIkluY3JlbWVudGFsRW5jb2RlciIsICJJbmNyZW1lbnRhbERlY29kZXIiLAogICAgICAgICAgICJTdHJlYW1SZWFkZXIiLCAiU3RyZWFtV3JpdGVyIiwKICAgICAgICAgICAiU3RyZWFtUmVhZGVyV3JpdGVyIiwgIlN0cmVhbVJlY29kZXIiLAogICAgICAgICAgICJnZXRlbmNvZGVyIiwgImdldGRlY29kZXIiLCAiZ2V0aW5jcmVtZW50YWxlbmNvZGVyIiwKICAgICAgICAgICAiZ2V0aW5jcmVtZW50YWxkZWNvZGVyIiwgImdldHJlYWRlciIsICJnZXR3cml0ZXIiLAogICAgICAgICAgICJlbmNvZGUiLCAiZGVjb2RlIiwgIml0ZXJlbmNvZGUiLCAiaXRlcmRlY29kZSIsCiAgICAgICAgICAgInN0cmljdF9lcnJvcnMiLCAiaWdub3JlX2Vycm9ycyIsICJyZXBsYWNlX2Vycm9ycyIsCiAgICAgICAgICAgInhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycyIsCiAgICAgICAgICAgImJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzIiwgIm5hbWVyZXBsYWNlX2Vycm9ycyIsCiAgICAgICAgICAgInJlZ2lzdGVyX2Vycm9yIiwgImxvb2t1cF9lcnJvciJdCgojIyMgQ29uc3RhbnRzCgojCiMgQnl0ZSBPcmRlciBNYXJrIChCT00gPSBaRVJPIFdJRFRIIE5PLUJSRUFLIFNQQUNFID0gVStGRUZGKQojIGFuZCBpdHMgcG9zc2libGUgYnl0ZSBzdHJpbmcgdmFsdWVzCiMgZm9yIFVURjgvVVRGMTYvVVRGMzIgb3V0cHV0IGFuZCBsaXR0bGUvYmlnIGVuZGlhbiBtYWNoaW5lcwojCgojIFVURi04CkJPTV9VVEY4ID0gYidceGVmXHhiYlx4YmYnCgojIFVURi0xNiwgbGl0dGxlIGVuZGlhbgpCT01fTEUgPSBCT01fVVRGMTZfTEUgPSBiJ1x4ZmZceGZlJwoKIyBVVEYtMTYsIGJpZyBlbmRpYW4KQk9NX0JFID0gQk9NX1VURjE2X0JFID0gYidceGZlXHhmZicKCiMgVVRGLTMyLCBsaXR0bGUgZW5kaWFuCkJPTV9VVEYzMl9MRSA9IGInXHhmZlx4ZmVceDAwXHgwMCcKCiMgVVRGLTMyLCBiaWcgZW5kaWFuCkJPTV9VVEYzMl9CRSA9IGInXHgwMFx4MDBceGZlXHhmZicKCmlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CgogICAgIyBVVEYtMTYsIG5hdGl2ZSBlbmRpYW5uZXNzCiAgICBCT00gPSBCT01fVVRGMTYgPSBCT01fVVRGMTZfTEUKCiAgICAjIFVURi0zMiwgbmF0aXZlIGVuZGlhbm5lc3MKICAgIEJPTV9VVEYzMiA9IEJPTV9VVEYzMl9MRQoKZWxzZToKCiAgICAjIFVURi0xNiwgbmF0aXZlIGVuZGlhbm5lc3MKICAgIEJPTSA9IEJPTV9VVEYxNiA9IEJPTV9VVEYxNl9CRQoKICAgICMgVVRGLTMyLCBuYXRpdmUgZW5kaWFubmVzcwogICAgQk9NX1VURjMyID0gQk9NX1VURjMyX0JFCgojIE9sZCBicm9rZW4gbmFtZXMgKGRvbid0IHVzZSBpbiBuZXcgY29kZSkKQk9NMzJfTEUgPSBCT01fVVRGMTZfTEUKQk9NMzJfQkUgPSBCT01fVVRGMTZfQkUKQk9NNjRfTEUgPSBCT01fVVRGMzJfTEUKQk9NNjRfQkUgPSBCT01fVVRGMzJfQkUKCgojIyMgQ29kZWMgYmFzZSBjbGFzc2VzIChkZWZpbmluZyB0aGUgQVBJKQoKY2xhc3MgQ29kZWNJbmZvKHR1cGxlKToKICAgICIiIkNvZGVjIGRldGFpbHMgd2hlbiBsb29raW5nIHVwIHRoZSBjb2RlYyByZWdpc3RyeSIiIgoKICAgICMgUHJpdmF0ZSBBUEkgdG8gYWxsb3cgUHl0aG9uIDMuNCB0byBkZW55bGlzdCB0aGUga25vd24gbm9uLVVuaWNvZGUKICAgICMgY29kZWNzIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiBBIG1vcmUgZ2VuZXJhbCBtZWNoYW5pc20gdG8KICAgICMgcmVsaWFibHkgZGlzdGluZ3Vpc2ggdGVzdCBlbmNvZGluZ3MgZnJvbSBvdGhlciBjb2RlY3Mgd2lsbCBob3BlZnVsbHkKICAgICMgYmUgZGVmaW5lZCBmb3IgUHl0aG9uIDMuNQogICAgIwogICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE5NjE5CiAgICBfaXNfdGV4dF9lbmNvZGluZyA9IFRydWUgIyBBc3N1bWUgY29kZWNzIGFyZSB0ZXh0IGVuY29kaW5ncyBieSBkZWZhdWx0CgogICAgZGVmIF9fbmV3X18oY2xzLCBlbmNvZGUsIGRlY29kZSwgc3RyZWFtcmVhZGVyPU5vbmUsIHN0cmVhbXdyaXRlcj1Ob25lLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1Ob25lLCBpbmNyZW1lbnRhbGRlY29kZXI9Tm9uZSwgbmFtZT1Ob25lLAogICAgICAgICosIF9pc190ZXh0X2VuY29kaW5nPU5vbmUpOgogICAgICAgIHNlbGYgPSB0dXBsZS5fX25ld19fKGNscywgKGVuY29kZSwgZGVjb2RlLCBzdHJlYW1yZWFkZXIsIHN0cmVhbXdyaXRlcikpCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIHNlbGYuZW5jb2RlID0gZW5jb2RlCiAgICAgICAgc2VsZi5kZWNvZGUgPSBkZWNvZGUKICAgICAgICBzZWxmLmluY3JlbWVudGFsZW5jb2RlciA9IGluY3JlbWVudGFsZW5jb2RlcgogICAgICAgIHNlbGYuaW5jcmVtZW50YWxkZWNvZGVyID0gaW5jcmVtZW50YWxkZWNvZGVyCiAgICAgICAgc2VsZi5zdHJlYW13cml0ZXIgPSBzdHJlYW13cml0ZXIKICAgICAgICBzZWxmLnN0cmVhbXJlYWRlciA9IHN0cmVhbXJlYWRlcgogICAgICAgIGlmIF9pc190ZXh0X2VuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9pc190ZXh0X2VuY29kaW5nID0gX2lzX3RleHRfZW5jb2RpbmcKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIjwlcy4lcyBvYmplY3QgZm9yIGVuY29kaW5nICVzIGF0ICUjeD4iICUgXAogICAgICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIGlkKHNlbGYpKQoKY2xhc3MgQ29kZWM6CgogICAgIiIiIERlZmluZXMgdGhlIGludGVyZmFjZSBmb3Igc3RhdGVsZXNzIGVuY29kZXJzL2RlY29kZXJzLgoKICAgICAgICBUaGUgLmVuY29kZSgpLy5kZWNvZGUoKSBtZXRob2RzIG1heSB1c2UgZGlmZmVyZW50IGVycm9yCiAgICAgICAgaGFuZGxpbmcgc2NoZW1lcyBieSBwcm92aWRpbmcgdGhlIGVycm9ycyBhcmd1bWVudC4gVGhlc2UKICAgICAgICBzdHJpbmcgdmFsdWVzIGFyZSBwcmVkZWZpbmVkOgoKICAgICAgICAgJ3N0cmljdCcgLSByYWlzZSBhIFZhbHVlRXJyb3IgZXJyb3IgKG9yIGEgc3ViY2xhc3MpCiAgICAgICAgICdpZ25vcmUnIC0gaWdub3JlIHRoZSBjaGFyYWN0ZXIgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQKICAgICAgICAgJ3JlcGxhY2UnIC0gcmVwbGFjZSB3aXRoIGEgc3VpdGFibGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyOwogICAgICAgICAgICAgICAgICAgIFB5dGhvbiB3aWxsIHVzZSB0aGUgb2ZmaWNpYWwgVStGRkZEIFJFUExBQ0VNRU5UCiAgICAgICAgICAgICAgICAgICAgQ0hBUkFDVEVSIGZvciB0aGUgYnVpbHRpbiBVbmljb2RlIGNvZGVjcyBvbgogICAgICAgICAgICAgICAgICAgIGRlY29kaW5nIGFuZCAnPycgb24gZW5jb2RpbmcuCiAgICAgICAgICdzdXJyb2dhdGVlc2NhcGUnIC0gcmVwbGFjZSB3aXRoIHByaXZhdGUgY29kZSBwb2ludHMgVStEQ25uLgogICAgICAgICAneG1sY2hhcnJlZnJlcGxhY2UnIC0gUmVwbGFjZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBYTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciByZWZlcmVuY2UgKG9ubHkgZm9yIGVuY29kaW5nKS4KICAgICAgICAgJ2JhY2tzbGFzaHJlcGxhY2UnICAtIFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2VzLgogICAgICAgICAnbmFtZXJlcGxhY2UnICAgICAgIC0gUmVwbGFjZSB3aXRoIFxcTnsuLi59IGVzY2FwZSBzZXF1ZW5jZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGZvciBlbmNvZGluZykuCgogICAgICAgIFRoZSBzZXQgb2YgYWxsb3dlZCB2YWx1ZXMgY2FuIGJlIGV4dGVuZGVkIHZpYSByZWdpc3Rlcl9lcnJvci4KCiAgICAiIiIKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CgogICAgICAgICIiIiBFbmNvZGVzIHRoZSBvYmplY3QgaW5wdXQgYW5kIHJldHVybnMgYSB0dXBsZSAob3V0cHV0CiAgICAgICAgICAgIG9iamVjdCwgbGVuZ3RoIGNvbnN1bWVkKS4KCiAgICAgICAgICAgIGVycm9ycyBkZWZpbmVzIHRoZSBlcnJvciBoYW5kbGluZyB0byBhcHBseS4gSXQgZGVmYXVsdHMgdG8KICAgICAgICAgICAgJ3N0cmljdCcgaGFuZGxpbmcuCgogICAgICAgICAgICBUaGUgbWV0aG9kIG1heSBub3Qgc3RvcmUgc3RhdGUgaW4gdGhlIENvZGVjIGluc3RhbmNlLiBVc2UKICAgICAgICAgICAgU3RyZWFtV3JpdGVyIGZvciBjb2RlY3Mgd2hpY2ggaGF2ZSB0byBrZWVwIHN0YXRlIGluIG9yZGVyIHRvCiAgICAgICAgICAgIG1ha2UgZW5jb2RpbmcgZWZmaWNpZW50LgoKICAgICAgICAgICAgVGhlIGVuY29kZXIgbXVzdCBiZSBhYmxlIHRvIGhhbmRsZSB6ZXJvIGxlbmd0aCBpbnB1dCBhbmQKICAgICAgICAgICAgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCBvZiB0aGUgb3V0cHV0IG9iamVjdCB0eXBlIGluIHRoaXMKICAgICAgICAgICAgc2l0dWF0aW9uLgoKICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKCiAgICAgICAgIiIiIERlY29kZXMgdGhlIG9iamVjdCBpbnB1dCBhbmQgcmV0dXJucyBhIHR1cGxlIChvdXRwdXQKICAgICAgICAgICAgb2JqZWN0LCBsZW5ndGggY29uc3VtZWQpLgoKICAgICAgICAgICAgaW5wdXQgbXVzdCBiZSBhbiBvYmplY3Qgd2hpY2ggcHJvdmlkZXMgdGhlIGJmX2dldHJlYWRidWYKICAgICAgICAgICAgYnVmZmVyIHNsb3QuIFB5dGhvbiBzdHJpbmdzLCBidWZmZXIgb2JqZWN0cyBhbmQgbWVtb3J5CiAgICAgICAgICAgIG1hcHBlZCBmaWxlcyBhcmUgZXhhbXBsZXMgb2Ygb2JqZWN0cyBwcm92aWRpbmcgdGhpcyBzbG90LgoKICAgICAgICAgICAgZXJyb3JzIGRlZmluZXMgdGhlIGVycm9yIGhhbmRsaW5nIHRvIGFwcGx5LiBJdCBkZWZhdWx0cyB0bwogICAgICAgICAgICAnc3RyaWN0JyBoYW5kbGluZy4KCiAgICAgICAgICAgIFRoZSBtZXRob2QgbWF5IG5vdCBzdG9yZSBzdGF0ZSBpbiB0aGUgQ29kZWMgaW5zdGFuY2UuIFVzZQogICAgICAgICAgICBTdHJlYW1SZWFkZXIgZm9yIGNvZGVjcyB3aGljaCBoYXZlIHRvIGtlZXAgc3RhdGUgaW4gb3JkZXIgdG8KICAgICAgICAgICAgbWFrZSBkZWNvZGluZyBlZmZpY2llbnQuCgogICAgICAgICAgICBUaGUgZGVjb2RlciBtdXN0IGJlIGFibGUgdG8gaGFuZGxlIHplcm8gbGVuZ3RoIGlucHV0IGFuZAogICAgICAgICAgICByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IG9mIHRoZSBvdXRwdXQgb2JqZWN0IHR5cGUgaW4gdGhpcwogICAgICAgICAgICBzaXR1YXRpb24uCgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihvYmplY3QpOgogICAgIiIiCiAgICBBbiBJbmNyZW1lbnRhbEVuY29kZXIgZW5jb2RlcyBhbiBpbnB1dCBpbiBtdWx0aXBsZSBzdGVwcy4gVGhlIGlucHV0IGNhbgogICAgYmUgcGFzc2VkIHBpZWNlIGJ5IHBpZWNlIHRvIHRoZSBlbmNvZGUoKSBtZXRob2QuIFRoZSBJbmNyZW1lbnRhbEVuY29kZXIKICAgIHJlbWVtYmVycyB0aGUgc3RhdGUgb2YgdGhlIGVuY29kaW5nIHByb2Nlc3MgYmV0d2VlbiBjYWxscyB0byBlbmNvZGUoKS4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgIiIiCiAgICAgICAgQ3JlYXRlcyBhbiBJbmNyZW1lbnRhbEVuY29kZXIgaW5zdGFuY2UuCgogICAgICAgIFRoZSBJbmNyZW1lbnRhbEVuY29kZXIgbWF5IHVzZSBkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lcyBieQogICAgICAgIHByb3ZpZGluZyB0aGUgZXJyb3JzIGtleXdvcmQgYXJndW1lbnQuIFNlZSB0aGUgbW9kdWxlIGRvY3N0cmluZwogICAgICAgIGZvciBhIGxpc3Qgb2YgcG9zc2libGUgdmFsdWVzLgogICAgICAgICIiIgogICAgICAgIHNlbGYuZXJyb3JzID0gZXJyb3JzCiAgICAgICAgc2VsZi5idWZmZXIgPSAiIgoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICAiIiIKICAgICAgICBFbmNvZGVzIGlucHV0IGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgb2JqZWN0LgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmVzZXRzIHRoZSBlbmNvZGVyIHRvIHRoZSBpbml0aWFsIHN0YXRlLgogICAgICAgICIiIgoKICAgIGRlZiBnZXRzdGF0ZShzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGVuY29kZXIuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIDAKCiAgICBkZWYgc2V0c3RhdGUoc2VsZiwgc3RhdGUpOgogICAgICAgICIiIgogICAgICAgIFNldCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZW5jb2Rlci4gc3RhdGUgbXVzdCBoYXZlIGJlZW4KICAgICAgICByZXR1cm5lZCBieSBnZXRzdGF0ZSgpLgogICAgICAgICIiIgoKY2xhc3MgQnVmZmVyZWRJbmNyZW1lbnRhbEVuY29kZXIoSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICIiIgogICAgVGhpcyBzdWJjbGFzcyBvZiBJbmNyZW1lbnRhbEVuY29kZXIgY2FuIGJlIHVzZWQgYXMgdGhlIGJhc2VjbGFzcyBmb3IgYW4KICAgIGluY3JlbWVudGFsIGVuY29kZXIgaWYgdGhlIGVuY29kZXIgbXVzdCBrZWVwIHNvbWUgb2YgdGhlIG91dHB1dCBpbiBhCiAgICBidWZmZXIgYmV0d2VlbiBjYWxscyB0byBlbmNvZGUoKS4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgSW5jcmVtZW50YWxFbmNvZGVyLl9faW5pdF9fKHNlbGYsIGVycm9ycykKICAgICAgICAjIHVuZW5jb2RlZCBpbnB1dCB0aGF0IGlzIGtlcHQgYmV0d2VlbiBjYWxscyB0byBlbmNvZGUoKQogICAgICAgIHNlbGYuYnVmZmVyID0gIiIKCiAgICBkZWYgX2J1ZmZlcl9lbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycywgZmluYWwpOgogICAgICAgICMgT3ZlcndyaXRlIHRoaXMgbWV0aG9kIGluIHN1YmNsYXNzZXM6IEl0IG11c3QgZW5jb2RlIGlucHV0CiAgICAgICAgIyBhbmQgcmV0dXJuIGFuIChvdXRwdXQsIGxlbmd0aCBjb25zdW1lZCkgdHVwbGUKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgICMgZW5jb2RlIGlucHV0ICh0YWtpbmcgdGhlIGJ1ZmZlciBpbnRvIGFjY291bnQpCiAgICAgICAgZGF0YSA9IHNlbGYuYnVmZmVyICsgaW5wdXQKICAgICAgICAocmVzdWx0LCBjb25zdW1lZCkgPSBzZWxmLl9idWZmZXJfZW5jb2RlKGRhdGEsIHNlbGYuZXJyb3JzLCBmaW5hbCkKICAgICAgICAjIGtlZXAgdW5lbmNvZGVkIGlucHV0IHVudGlsIHRoZSBuZXh0IGNhbGwKICAgICAgICBzZWxmLmJ1ZmZlciA9IGRhdGFbY29uc3VtZWQ6XQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgSW5jcmVtZW50YWxFbmNvZGVyLnJlc2V0KHNlbGYpCiAgICAgICAgc2VsZi5idWZmZXIgPSAiIgoKICAgIGRlZiBnZXRzdGF0ZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5idWZmZXIgb3IgMAoKICAgIGRlZiBzZXRzdGF0ZShzZWxmLCBzdGF0ZSk6CiAgICAgICAgc2VsZi5idWZmZXIgPSBzdGF0ZSBvciAiIgoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG9iamVjdCk6CiAgICAiIiIKICAgIEFuIEluY3JlbWVudGFsRGVjb2RlciBkZWNvZGVzIGFuIGlucHV0IGluIG11bHRpcGxlIHN0ZXBzLiBUaGUgaW5wdXQgY2FuCiAgICBiZSBwYXNzZWQgcGllY2UgYnkgcGllY2UgdG8gdGhlIGRlY29kZSgpIG1ldGhvZC4gVGhlIEluY3JlbWVudGFsRGVjb2RlcgogICAgcmVtZW1iZXJzIHRoZSBzdGF0ZSBvZiB0aGUgZGVjb2RpbmcgcHJvY2VzcyBiZXR3ZWVuIGNhbGxzIHRvIGRlY29kZSgpLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICAiIiIKICAgICAgICBDcmVhdGUgYW4gSW5jcmVtZW50YWxEZWNvZGVyIGluc3RhbmNlLgoKICAgICAgICBUaGUgSW5jcmVtZW50YWxEZWNvZGVyIG1heSB1c2UgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZXMgYnkKICAgICAgICBwcm92aWRpbmcgdGhlIGVycm9ycyBrZXl3b3JkIGFyZ3VtZW50LiBTZWUgdGhlIG1vZHVsZSBkb2NzdHJpbmcKICAgICAgICBmb3IgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwoKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICAiIiIKICAgICAgICBEZWNvZGUgaW5wdXQgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZyBvYmplY3QuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZXNldCB0aGUgZGVjb2RlciB0byB0aGUgaW5pdGlhbCBzdGF0ZS4KICAgICAgICAiIiIKCiAgICBkZWYgZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkZWNvZGVyLgoKICAgICAgICBUaGlzIG11c3QgYmUgYSAoYnVmZmVyZWRfaW5wdXQsIGFkZGl0aW9uYWxfc3RhdGVfaW5mbykgdHVwbGUuCiAgICAgICAgYnVmZmVyZWRfaW5wdXQgbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGJ5dGVzIHRoYXQKICAgICAgICB3ZXJlIHBhc3NlZCB0byBkZWNvZGUoKSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIGNvbnZlcnRlZC4KICAgICAgICBhZGRpdGlvbmFsX3N0YXRlX2luZm8gbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyCiAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSBvZiB0aGUgZGVjb2RlciBXSVRIT1VUIHlldCBoYXZpbmcKICAgICAgICBwcm9jZXNzZWQgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlcmVkX2lucHV0LiAgSW4gdGhlIGluaXRpYWwgc3RhdGUKICAgICAgICBhbmQgYWZ0ZXIgcmVzZXQoKSwgZ2V0c3RhdGUoKSBtdXN0IHJldHVybiAoYiIiLCAwKS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gKGIiIiwgMCkKCiAgICBkZWYgc2V0c3RhdGUoc2VsZiwgc3RhdGUpOgogICAgICAgICIiIgogICAgICAgIFNldCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZGVjb2Rlci4KCiAgICAgICAgc3RhdGUgbXVzdCBoYXZlIGJlZW4gcmV0dXJuZWQgYnkgZ2V0c3RhdGUoKS4gIFRoZSBlZmZlY3Qgb2YKICAgICAgICBzZXRzdGF0ZSgoYiIiLCAwKSkgbXVzdCBiZSBlcXVpdmFsZW50IHRvIHJlc2V0KCkuCiAgICAgICAgIiIiCgpjbGFzcyBCdWZmZXJlZEluY3JlbWVudGFsRGVjb2RlcihJbmNyZW1lbnRhbERlY29kZXIpOgogICAgIiIiCiAgICBUaGlzIHN1YmNsYXNzIG9mIEluY3JlbWVudGFsRGVjb2RlciBjYW4gYmUgdXNlZCBhcyB0aGUgYmFzZWNsYXNzIGZvciBhbgogICAgaW5jcmVtZW50YWwgZGVjb2RlciBpZiB0aGUgZGVjb2RlciBtdXN0IGJlIGFibGUgdG8gaGFuZGxlIGluY29tcGxldGUKICAgIGJ5dGUgc2VxdWVuY2VzLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICBJbmNyZW1lbnRhbERlY29kZXIuX19pbml0X18oc2VsZiwgZXJyb3JzKQogICAgICAgICMgdW5kZWNvZGVkIGlucHV0IHRoYXQgaXMga2VwdCBiZXR3ZWVuIGNhbGxzIHRvIGRlY29kZSgpCiAgICAgICAgc2VsZi5idWZmZXIgPSBiIiIKCiAgICBkZWYgX2J1ZmZlcl9kZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycywgZmluYWwpOgogICAgICAgICMgT3ZlcndyaXRlIHRoaXMgbWV0aG9kIGluIHN1YmNsYXNzZXM6IEl0IG11c3QgZGVjb2RlIGlucHV0CiAgICAgICAgIyBhbmQgcmV0dXJuIGFuIChvdXRwdXQsIGxlbmd0aCBjb25zdW1lZCkgdHVwbGUKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgICMgZGVjb2RlIGlucHV0ICh0YWtpbmcgdGhlIGJ1ZmZlciBpbnRvIGFjY291bnQpCiAgICAgICAgZGF0YSA9IHNlbGYuYnVmZmVyICsgaW5wdXQKICAgICAgICAocmVzdWx0LCBjb25zdW1lZCkgPSBzZWxmLl9idWZmZXJfZGVjb2RlKGRhdGEsIHNlbGYuZXJyb3JzLCBmaW5hbCkKICAgICAgICAjIGtlZXAgdW5kZWNvZGVkIGlucHV0IHVudGlsIHRoZSBuZXh0IGNhbGwKICAgICAgICBzZWxmLmJ1ZmZlciA9IGRhdGFbY29uc3VtZWQ6XQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgSW5jcmVtZW50YWxEZWNvZGVyLnJlc2V0KHNlbGYpCiAgICAgICAgc2VsZi5idWZmZXIgPSBiIiIKCiAgICBkZWYgZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIyBhZGRpdGlvbmFsIHN0YXRlIGluZm8gaXMgYWx3YXlzIDAKICAgICAgICByZXR1cm4gKHNlbGYuYnVmZmVyLCAwKQoKICAgIGRlZiBzZXRzdGF0ZShzZWxmLCBzdGF0ZSk6CiAgICAgICAgIyBpZ25vcmUgYWRkaXRpb25hbCBzdGF0ZSBpbmZvCiAgICAgICAgc2VsZi5idWZmZXIgPSBzdGF0ZVswXQoKIwojIFRoZSBTdHJlYW1Xcml0ZXIgYW5kIFN0cmVhbVJlYWRlciBjbGFzcyBwcm92aWRlIGdlbmVyaWMgd29ya2luZwojIGludGVyZmFjZXMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50IG5ldyBlbmNvZGluZyBzdWJtb2R1bGVzCiMgdmVyeSBlYXNpbHkuIFNlZSBlbmNvZGluZ3MvdXRmXzgucHkgZm9yIGFuIGV4YW1wbGUgb24gaG93IHRoaXMgaXMKIyBkb25lLgojCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIGVycm9ycz0nc3RyaWN0Jyk6CgogICAgICAgICIiIiBDcmVhdGVzIGEgU3RyZWFtV3JpdGVyIGluc3RhbmNlLgoKICAgICAgICAgICAgc3RyZWFtIG11c3QgYmUgYSBmaWxlLWxpa2Ugb2JqZWN0IG9wZW4gZm9yIHdyaXRpbmcuCgogICAgICAgICAgICBUaGUgU3RyZWFtV3JpdGVyIG1heSB1c2UgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nCiAgICAgICAgICAgIHNjaGVtZXMgYnkgcHJvdmlkaW5nIHRoZSBlcnJvcnMga2V5d29yZCBhcmd1bWVudC4gVGhlc2UKICAgICAgICAgICAgcGFyYW1ldGVycyBhcmUgcHJlZGVmaW5lZDoKCiAgICAgICAgICAgICAnc3RyaWN0JyAtIHJhaXNlIGEgVmFsdWVFcnJvciAob3IgYSBzdWJjbGFzcykKICAgICAgICAgICAgICdpZ25vcmUnIC0gaWdub3JlIHRoZSBjaGFyYWN0ZXIgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQKICAgICAgICAgICAgICdyZXBsYWNlJy0gcmVwbGFjZSB3aXRoIGEgc3VpdGFibGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyCiAgICAgICAgICAgICAneG1sY2hhcnJlZnJlcGxhY2UnIC0gUmVwbGFjZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBYTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgcmVmZXJlbmNlLgogICAgICAgICAgICAgJ2JhY2tzbGFzaHJlcGxhY2UnICAtIFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZXMuCiAgICAgICAgICAgICAnbmFtZXJlcGxhY2UnICAgICAgIC0gUmVwbGFjZSB3aXRoIFxcTnsuLi59IGVzY2FwZSBzZXF1ZW5jZXMuCgogICAgICAgICAgICBUaGUgc2V0IG9mIGFsbG93ZWQgcGFyYW1ldGVyIHZhbHVlcyBjYW4gYmUgZXh0ZW5kZWQgdmlhCiAgICAgICAgICAgIHJlZ2lzdGVyX2Vycm9yLgogICAgICAgICIiIgogICAgICAgIHNlbGYuc3RyZWFtID0gc3RyZWFtCiAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKCiAgICBkZWYgd3JpdGUoc2VsZiwgb2JqZWN0KToKCiAgICAgICAgIiIiIFdyaXRlcyB0aGUgb2JqZWN0J3MgY29udGVudHMgZW5jb2RlZCB0byBzZWxmLnN0cmVhbS4KICAgICAgICAiIiIKICAgICAgICBkYXRhLCBjb25zdW1lZCA9IHNlbGYuZW5jb2RlKG9iamVjdCwgc2VsZi5lcnJvcnMpCiAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoZGF0YSkKCiAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBsaXN0KToKCiAgICAgICAgIiIiIFdyaXRlcyB0aGUgY29uY2F0ZW5hdGVkIGxpc3Qgb2Ygc3RyaW5ncyB0byB0aGUgc3RyZWFtCiAgICAgICAgICAgIHVzaW5nIC53cml0ZSgpLgogICAgICAgICIiIgogICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaXN0KSkKCiAgICBkZWYgcmVzZXQoc2VsZik6CgogICAgICAgICIiIiBSZXNldHMgdGhlIGNvZGVjIGJ1ZmZlcnMgdXNlZCBmb3Iga2VlcGluZyBpbnRlcm5hbCBzdGF0ZS4KCiAgICAgICAgICAgIENhbGxpbmcgdGhpcyBtZXRob2Qgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBkYXRhIG9uIHRoZQogICAgICAgICAgICBvdXRwdXQgaXMgcHV0IGludG8gYSBjbGVhbiBzdGF0ZSwgdGhhdCBhbGxvd3MgYXBwZW5kaW5nCiAgICAgICAgICAgIG9mIG5ldyBmcmVzaCBkYXRhIHdpdGhvdXQgaGF2aW5nIHRvIHJlc2NhbiB0aGUgd2hvbGUKICAgICAgICAgICAgc3RyZWFtIHRvIHJlY292ZXIgc3RhdGUuCgogICAgICAgICIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKICAgICAgICBzZWxmLnN0cmVhbS5zZWVrKG9mZnNldCwgd2hlbmNlKQogICAgICAgIGlmIHdoZW5jZSA9PSAwIGFuZCBvZmZzZXQgPT0gMDoKICAgICAgICAgICAgc2VsZi5yZXNldCgpCgogICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cj1nZXRhdHRyKToKCiAgICAgICAgIiIiIEluaGVyaXQgYWxsIG90aGVyIG1ldGhvZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5zdHJlYW0sIG5hbWUpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdGIpOgogICAgICAgIHNlbGYuc3RyZWFtLmNsb3NlKCkKCiMjIwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjKToKCiAgICBjaGFyYnVmZmVydHlwZSA9IHN0cgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIGVycm9ycz0nc3RyaWN0Jyk6CgogICAgICAgICIiIiBDcmVhdGVzIGEgU3RyZWFtUmVhZGVyIGluc3RhbmNlLgoKICAgICAgICAgICAgc3RyZWFtIG11c3QgYmUgYSBmaWxlLWxpa2Ugb2JqZWN0IG9wZW4gZm9yIHJlYWRpbmcuCgogICAgICAgICAgICBUaGUgU3RyZWFtUmVhZGVyIG1heSB1c2UgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nCiAgICAgICAgICAgIHNjaGVtZXMgYnkgcHJvdmlkaW5nIHRoZSBlcnJvcnMga2V5d29yZCBhcmd1bWVudC4gVGhlc2UKICAgICAgICAgICAgcGFyYW1ldGVycyBhcmUgcHJlZGVmaW5lZDoKCiAgICAgICAgICAgICAnc3RyaWN0JyAtIHJhaXNlIGEgVmFsdWVFcnJvciAob3IgYSBzdWJjbGFzcykKICAgICAgICAgICAgICdpZ25vcmUnIC0gaWdub3JlIHRoZSBjaGFyYWN0ZXIgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQKICAgICAgICAgICAgICdyZXBsYWNlJy0gcmVwbGFjZSB3aXRoIGEgc3VpdGFibGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyCiAgICAgICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlczsKCiAgICAgICAgICAgIFRoZSBzZXQgb2YgYWxsb3dlZCBwYXJhbWV0ZXIgdmFsdWVzIGNhbiBiZSBleHRlbmRlZCB2aWEKICAgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0KICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwogICAgICAgIHNlbGYuYnl0ZWJ1ZmZlciA9IGIiIgogICAgICAgIHNlbGYuX2VtcHR5X2NoYXJidWZmZXIgPSBzZWxmLmNoYXJidWZmZXJ0eXBlKCkKICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLl9lbXB0eV9jaGFyYnVmZmVyCiAgICAgICAgc2VsZi5saW5lYnVmZmVyID0gTm9uZQoKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEsIGNoYXJzPS0xLCBmaXJzdGxpbmU9RmFsc2UpOgoKICAgICAgICAiIiIgRGVjb2RlcyBkYXRhIGZyb20gdGhlIHN0cmVhbSBzZWxmLnN0cmVhbSBhbmQgcmV0dXJucyB0aGUKICAgICAgICAgICAgcmVzdWx0aW5nIG9iamVjdC4KCiAgICAgICAgICAgIGNoYXJzIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRlY29kZWQgY29kZSBwb2ludHMgb3IgYnl0ZXMgdG8KICAgICAgICAgICAgcmV0dXJuLiByZWFkKCkgd2lsbCBuZXZlciByZXR1cm4gbW9yZSBkYXRhIHRoYW4gcmVxdWVzdGVkLAogICAgICAgICAgICBidXQgaXQgbWlnaHQgcmV0dXJuIGxlc3MsIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggYXZhaWxhYmxlLgoKICAgICAgICAgICAgc2l6ZSBpbmRpY2F0ZXMgdGhlIGFwcHJveGltYXRlIG1heGltdW0gbnVtYmVyIG9mIGRlY29kZWQKICAgICAgICAgICAgYnl0ZXMgb3IgY29kZSBwb2ludHMgdG8gcmVhZCBmb3IgZGVjb2RpbmcuIFRoZSBkZWNvZGVyCiAgICAgICAgICAgIGNhbiBtb2RpZnkgdGhpcyBzZXR0aW5nIGFzIGFwcHJvcHJpYXRlLiBUaGUgZGVmYXVsdCB2YWx1ZQogICAgICAgICAgICAtMSBpbmRpY2F0ZXMgdG8gcmVhZCBhbmQgZGVjb2RlIGFzIG11Y2ggYXMgcG9zc2libGUuICBzaXplCiAgICAgICAgICAgIGlzIGludGVuZGVkIHRvIHByZXZlbnQgaGF2aW5nIHRvIGRlY29kZSBodWdlIGZpbGVzIGluIG9uZQogICAgICAgICAgICBzdGVwLgoKICAgICAgICAgICAgSWYgZmlyc3RsaW5lIGlzIHRydWUsIGFuZCBhIFVuaWNvZGVEZWNvZGVFcnJvciBoYXBwZW5zCiAgICAgICAgICAgIGFmdGVyIHRoZSBmaXJzdCBsaW5lIHRlcm1pbmF0b3IgaW4gdGhlIGlucHV0IG9ubHkgdGhlIGZpcnN0IGxpbmUKICAgICAgICAgICAgd2lsbCBiZSByZXR1cm5lZCwgdGhlIHJlc3Qgb2YgdGhlIGlucHV0IHdpbGwgYmUga2VwdCB1bnRpbCB0aGUKICAgICAgICAgICAgbmV4dCBjYWxsIHRvIHJlYWQoKS4KCiAgICAgICAgICAgIFRoZSBtZXRob2Qgc2hvdWxkIHVzZSBhIGdyZWVkeSByZWFkIHN0cmF0ZWd5LCBtZWFuaW5nIHRoYXQKICAgICAgICAgICAgaXQgc2hvdWxkIHJlYWQgYXMgbXVjaCBkYXRhIGFzIGlzIGFsbG93ZWQgd2l0aGluIHRoZQogICAgICAgICAgICBkZWZpbml0aW9uIG9mIHRoZSBlbmNvZGluZyBhbmQgdGhlIGdpdmVuIHNpemUsIGUuZy4gIGlmCiAgICAgICAgICAgIG9wdGlvbmFsIGVuY29kaW5nIGVuZGluZ3Mgb3Igc3RhdGUgbWFya2VycyBhcmUgYXZhaWxhYmxlCiAgICAgICAgICAgIG9uIHRoZSBzdHJlYW0sIHRoZXNlIHNob3VsZCBiZSByZWFkIHRvby4KICAgICAgICAiIiIKICAgICAgICAjIElmIHdlIGhhdmUgbGluZXMgY2FjaGVkLCBmaXJzdCBtZXJnZSB0aGVtIGJhY2sgaW50byBjaGFyYWN0ZXJzCiAgICAgICAgaWYgc2VsZi5saW5lYnVmZmVyOgogICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLl9lbXB0eV9jaGFyYnVmZmVyLmpvaW4oc2VsZi5saW5lYnVmZmVyKQogICAgICAgICAgICBzZWxmLmxpbmVidWZmZXIgPSBOb25lCgogICAgICAgIGlmIGNoYXJzIDwgMDoKICAgICAgICAgICAgIyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIHJlYWQoKSBtZXRob2RzIHRoYXQgdGFrZSBhCiAgICAgICAgICAgICMgc2luZ2xlIGFyZ3VtZW50CiAgICAgICAgICAgIGNoYXJzID0gc2l6ZQoKICAgICAgICAjIHJlYWQgdW50aWwgd2UgZ2V0IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgY2hhcmFjdGVycyAoaWYgYXZhaWxhYmxlKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICMgY2FuIHRoZSByZXF1ZXN0IGJlIHNhdGlzZmllZCBmcm9tIHRoZSBjaGFyYWN0ZXIgYnVmZmVyPwogICAgICAgICAgICBpZiBjaGFycyA+PSAwOgogICAgICAgICAgICAgICAgaWYgbGVuKHNlbGYuY2hhcmJ1ZmZlcikgPj0gY2hhcnM6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIyB3ZSBuZWVkIG1vcmUgZGF0YQogICAgICAgICAgICBpZiBzaXplIDwgMDoKICAgICAgICAgICAgICAgIG5ld2RhdGEgPSBzZWxmLnN0cmVhbS5yZWFkKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG5ld2RhdGEgPSBzZWxmLnN0cmVhbS5yZWFkKHNpemUpCiAgICAgICAgICAgICMgZGVjb2RlIGJ5dGVzICh0aG9zZSByZW1haW5pbmcgZnJvbSB0aGUgbGFzdCBjYWxsIGluY2x1ZGVkKQogICAgICAgICAgICBkYXRhID0gc2VsZi5ieXRlYnVmZmVyICsgbmV3ZGF0YQogICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG5ld2NoYXJzLCBkZWNvZGVkYnl0ZXMgPSBzZWxmLmRlY29kZShkYXRhLCBzZWxmLmVycm9ycykKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICBpZiBmaXJzdGxpbmU6CiAgICAgICAgICAgICAgICAgICAgbmV3Y2hhcnMsIGRlY29kZWRieXRlcyA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWNvZGUoZGF0YVs6ZXhjLnN0YXJ0XSwgc2VsZi5lcnJvcnMpCiAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBuZXdjaGFycy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKTw9MToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIyBrZWVwIHVuZGVjb2RlZCBieXRlcyB1bnRpbCB0aGUgbmV4dCBjYWxsCiAgICAgICAgICAgIHNlbGYuYnl0ZWJ1ZmZlciA9IGRhdGFbZGVjb2RlZGJ5dGVzOl0KICAgICAgICAgICAgIyBwdXQgbmV3IGNoYXJhY3RlcnMgaW4gdGhlIGNoYXJhY3RlciBidWZmZXIKICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyICs9IG5ld2NoYXJzCiAgICAgICAgICAgICMgdGhlcmUgd2FzIG5vIGRhdGEgYXZhaWxhYmxlCiAgICAgICAgICAgIGlmIG5vdCBuZXdkYXRhOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBjaGFycyA8IDA6CiAgICAgICAgICAgICMgUmV0dXJuIGV2ZXJ5dGhpbmcgd2UndmUgZ290CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuY2hhcmJ1ZmZlcgogICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLl9lbXB0eV9jaGFyYnVmZmVyCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBSZXR1cm4gdGhlIGZpcnN0IGNoYXJzIGNoYXJhY3RlcnMKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jaGFyYnVmZmVyWzpjaGFyc10KICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gc2VsZi5jaGFyYnVmZmVyW2NoYXJzOl0KICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9Tm9uZSwga2VlcGVuZHM9VHJ1ZSk6CgogICAgICAgICIiIiBSZWFkIG9uZSBsaW5lIGZyb20gdGhlIGlucHV0IHN0cmVhbSBhbmQgcmV0dXJuIHRoZQogICAgICAgICAgICBkZWNvZGVkIGRhdGEuCgogICAgICAgICAgICBzaXplLCBpZiBnaXZlbiwgaXMgcGFzc2VkIGFzIHNpemUgYXJndW1lbnQgdG8gdGhlCiAgICAgICAgICAgIHJlYWQoKSBtZXRob2QuCgogICAgICAgICIiIgogICAgICAgICMgSWYgd2UgaGF2ZSBsaW5lcyBjYWNoZWQgZnJvbSBhbiBlYXJsaWVyIHJlYWQsIHJldHVybgogICAgICAgICMgdGhlbSB1bmNvbmRpdGlvbmFsbHkKICAgICAgICBpZiBzZWxmLmxpbmVidWZmZXI6CiAgICAgICAgICAgIGxpbmUgPSBzZWxmLmxpbmVidWZmZXJbMF0KICAgICAgICAgICAgZGVsIHNlbGYubGluZWJ1ZmZlclswXQogICAgICAgICAgICBpZiBsZW4oc2VsZi5saW5lYnVmZmVyKSA9PSAxOgogICAgICAgICAgICAgICAgIyByZXZlcnQgdG8gY2hhcmJ1ZmZlciBtb2RlOyB3ZSBtaWdodCBuZWVkIG1vcmUgZGF0YQogICAgICAgICAgICAgICAgIyBuZXh0IHRpbWUKICAgICAgICAgICAgICAgIHNlbGYuY2hhcmJ1ZmZlciA9IHNlbGYubGluZWJ1ZmZlclswXQogICAgICAgICAgICAgICAgc2VsZi5saW5lYnVmZmVyID0gTm9uZQogICAgICAgICAgICBpZiBub3Qga2VlcGVuZHM6CiAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICByZXR1cm4gbGluZQoKICAgICAgICByZWFkc2l6ZSA9IHNpemUgb3IgNzIKICAgICAgICBsaW5lID0gc2VsZi5fZW1wdHlfY2hhcmJ1ZmZlcgogICAgICAgICMgSWYgc2l6ZSBpcyBnaXZlbiwgd2UgY2FsbCByZWFkKCkgb25seSBvbmNlCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZChyZWFkc2l6ZSwgZmlyc3RsaW5lPVRydWUpCiAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIGF0IGEgIlxyIiByZWFkIG9uZSBleHRyYSBjaGFyYWN0ZXIgKHdoaWNoIG1pZ2h0CiAgICAgICAgICAgICAgICAjIGJlIGEgIlxuIikgdG8gZ2V0IGEgcHJvcGVyIGxpbmUgZW5kaW5nLiBJZiB0aGUgc3RyZWFtIGlzCiAgICAgICAgICAgICAgICAjIHRlbXBvcmFyaWx5IGV4aGF1c3RlZCB3ZSByZXR1cm4gdGhlIHdyb25nIGxpbmUgZW5kaW5nLgogICAgICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoZGF0YSwgc3RyKSBhbmQgZGF0YS5lbmRzd2l0aCgiXHIiKSkgb3IgXAogICAgICAgICAgICAgICAgICAgKGlzaW5zdGFuY2UoZGF0YSwgYnl0ZXMpIGFuZCBkYXRhLmVuZHN3aXRoKGIiXHIiKSk6CiAgICAgICAgICAgICAgICAgICAgZGF0YSArPSBzZWxmLnJlYWQoc2l6ZT0xLCBjaGFycz0xKQoKICAgICAgICAgICAgbGluZSArPSBkYXRhCiAgICAgICAgICAgIGxpbmVzID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgIGlmIGxpbmVzOgogICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDE6CiAgICAgICAgICAgICAgICAgICAgIyBNb3JlIHRoYW4gb25lIGxpbmUgcmVzdWx0OyB0aGUgZmlyc3QgbGluZSBpcyBhIGZ1bGwgbGluZQogICAgICAgICAgICAgICAgICAgICMgdG8gcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVzWzBdCiAgICAgICAgICAgICAgICAgICAgZGVsIGxpbmVzWzBdCiAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDE6CiAgICAgICAgICAgICAgICAgICAgICAgICMgY2FjaGUgdGhlIHJlbWFpbmluZyBsaW5lcwogICAgICAgICAgICAgICAgICAgICAgICBsaW5lc1stMV0gKz0gc2VsZi5jaGFyYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZWJ1ZmZlciA9IGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhcmJ1ZmZlciA9IE5vbmUKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAjIG9ubHkgb25lIHJlbWFpbmluZyBsaW5lLCBwdXQgaXQgYmFjayBpbnRvIGNoYXJidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gbGluZXNbMF0gKyBzZWxmLmNoYXJidWZmZXIKICAgICAgICAgICAgICAgICAgICBpZiBub3Qga2VlcGVuZHM6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGxpbmUwd2l0aGVuZCA9IGxpbmVzWzBdCiAgICAgICAgICAgICAgICBsaW5lMHdpdGhvdXRlbmQgPSBsaW5lc1swXS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgICAgaWYgbGluZTB3aXRoZW5kICE9IGxpbmUwd2l0aG91dGVuZDogIyBXZSByZWFsbHkgaGF2ZSBhIGxpbmUgZW5kCiAgICAgICAgICAgICAgICAgICAgIyBQdXQgdGhlIHJlc3QgYmFjayB0b2dldGhlciBhbmQga2VlcCBpdCB1bnRpbCB0aGUgbmV4dCBjYWxsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gc2VsZi5fZW1wdHlfY2hhcmJ1ZmZlci5qb2luKGxpbmVzWzE6XSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgaWYga2VlcGVuZHM6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lMHdpdGhlbmQKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZTB3aXRob3V0ZW5kCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIyB3ZSBkaWRuJ3QgZ2V0IGFueXRoaW5nIG9yIHRoaXMgd2FzIG91ciBvbmx5IHRyeQogICAgICAgICAgICBpZiBub3QgZGF0YSBvciBzaXplIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgbGluZSBhbmQgbm90IGtlZXBlbmRzOgogICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiByZWFkc2l6ZSA8IDgwMDA6CiAgICAgICAgICAgICAgICByZWFkc2l6ZSAqPSAyCiAgICAgICAgcmV0dXJuIGxpbmUKCiAgICBkZWYgcmVhZGxpbmVzKHNlbGYsIHNpemVoaW50PU5vbmUsIGtlZXBlbmRzPVRydWUpOgoKICAgICAgICAiIiIgUmVhZCBhbGwgbGluZXMgYXZhaWxhYmxlIG9uIHRoZSBpbnB1dCBzdHJlYW0KICAgICAgICAgICAgYW5kIHJldHVybiB0aGVtIGFzIGEgbGlzdC4KCiAgICAgICAgICAgIExpbmUgYnJlYWtzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyB0aGUgY29kZWMncyBkZWNvZGVyCiAgICAgICAgICAgIG1ldGhvZCBhbmQgYXJlIGluY2x1ZGVkIGluIHRoZSBsaXN0IGVudHJpZXMuCgogICAgICAgICAgICBzaXplaGludCwgaWYgZ2l2ZW4sIGlzIGlnbm9yZWQgc2luY2UgdGhlcmUgaXMgbm8gZWZmaWNpZW50CiAgICAgICAgICAgIHdheSB0byBmaW5kaW5nIHRoZSB0cnVlIGVuZC1vZi1saW5lLgoKICAgICAgICAiIiIKICAgICAgICBkYXRhID0gc2VsZi5yZWFkKCkKICAgICAgICByZXR1cm4gZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzKQoKICAgIGRlZiByZXNldChzZWxmKToKCiAgICAgICAgIiIiIFJlc2V0cyB0aGUgY29kZWMgYnVmZmVycyB1c2VkIGZvciBrZWVwaW5nIGludGVybmFsIHN0YXRlLgoKICAgICAgICAgICAgTm90ZSB0aGF0IG5vIHN0cmVhbSByZXBvc2l0aW9uaW5nIHNob3VsZCB0YWtlIHBsYWNlLgogICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBwcmltYXJpbHkgaW50ZW5kZWQgdG8gYmUgYWJsZSB0byByZWNvdmVyCiAgICAgICAgICAgIGZyb20gZGVjb2RpbmcgZXJyb3JzLgoKICAgICAgICAiIiIKICAgICAgICBzZWxmLmJ5dGVidWZmZXIgPSBiIiIKICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLl9lbXB0eV9jaGFyYnVmZmVyCiAgICAgICAgc2VsZi5saW5lYnVmZmVyID0gTm9uZQoKICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgogICAgICAgICIiIiBTZXQgdGhlIGlucHV0IHN0cmVhbSdzIGN1cnJlbnQgcG9zaXRpb24uCgogICAgICAgICAgICBSZXNldHMgdGhlIGNvZGVjIGJ1ZmZlcnMgdXNlZCBmb3Iga2VlcGluZyBzdGF0ZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnN0cmVhbS5zZWVrKG9mZnNldCwgd2hlbmNlKQogICAgICAgIHNlbGYucmVzZXQoKQoKICAgIGRlZiBfX25leHRfXyhzZWxmKToKCiAgICAgICAgIiIiIFJldHVybiB0aGUgbmV4dCBkZWNvZGVkIGxpbmUgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLiIiIgogICAgICAgIGxpbmUgPSBzZWxmLnJlYWRsaW5lKCkKICAgICAgICBpZiBsaW5lOgogICAgICAgICAgICByZXR1cm4gbGluZQogICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSwKICAgICAgICAgICAgICAgICAgICBnZXRhdHRyPWdldGF0dHIpOgoKICAgICAgICAiIiIgSW5oZXJpdCBhbGwgb3RoZXIgbWV0aG9kcyBmcm9tIHRoZSB1bmRlcmx5aW5nIHN0cmVhbS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnN0cmVhbSwgbmFtZSkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0Yik6CiAgICAgICAgc2VsZi5zdHJlYW0uY2xvc2UoKQoKIyMjCgpjbGFzcyBTdHJlYW1SZWFkZXJXcml0ZXI6CgogICAgIiIiIFN0cmVhbVJlYWRlcldyaXRlciBpbnN0YW5jZXMgYWxsb3cgd3JhcHBpbmcgc3RyZWFtcyB3aGljaAogICAgICAgIHdvcmsgaW4gYm90aCByZWFkIGFuZCB3cml0ZSBtb2Rlcy4KCiAgICAgICAgVGhlIGRlc2lnbiBpcyBzdWNoIHRoYXQgb25lIGNhbiB1c2UgdGhlIGZhY3RvcnkgZnVuY3Rpb25zCiAgICAgICAgcmV0dXJuZWQgYnkgdGhlIGNvZGVjLmxvb2t1cCgpIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCB0aGUKICAgICAgICBpbnN0YW5jZS4KCiAgICAiIiIKICAgICMgT3B0aW9uYWwgYXR0cmlidXRlcyBzZXQgYnkgdGhlIGZpbGUgd3JhcHBlcnMgYmVsb3cKICAgIGVuY29kaW5nID0gJ3Vua25vd24nCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmVhbSwgUmVhZGVyLCBXcml0ZXIsIGVycm9ycz0nc3RyaWN0Jyk6CgogICAgICAgICIiIiBDcmVhdGVzIGEgU3RyZWFtUmVhZGVyV3JpdGVyIGluc3RhbmNlLgoKICAgICAgICAgICAgc3RyZWFtIG11c3QgYmUgYSBTdHJlYW0tbGlrZSBvYmplY3QuCgogICAgICAgICAgICBSZWFkZXIsIFdyaXRlciBtdXN0IGJlIGZhY3RvcnkgZnVuY3Rpb25zIG9yIGNsYXNzZXMKICAgICAgICAgICAgcHJvdmlkaW5nIHRoZSBTdHJlYW1SZWFkZXIsIFN0cmVhbVdyaXRlciBpbnRlcmZhY2UgcmVzcC4KCiAgICAgICAgICAgIEVycm9yIGhhbmRsaW5nIGlzIGRvbmUgaW4gdGhlIHNhbWUgd2F5IGFzIGRlZmluZWQgZm9yIHRoZQogICAgICAgICAgICBTdHJlYW1Xcml0ZXIvUmVhZGVycy4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0KICAgICAgICBzZWxmLnJlYWRlciA9IFJlYWRlcihzdHJlYW0sIGVycm9ycykKICAgICAgICBzZWxmLndyaXRlciA9IFdyaXRlcihzdHJlYW0sIGVycm9ycykKICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgoKICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucmVhZChzaXplKQoKICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPU5vbmUpOgoKICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucmVhZGxpbmUoc2l6ZSkKCiAgICBkZWYgcmVhZGxpbmVzKHNlbGYsIHNpemVoaW50PU5vbmUpOgoKICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucmVhZGxpbmVzKHNpemVoaW50KQoKICAgIGRlZiBfX25leHRfXyhzZWxmKToKCiAgICAgICAgIiIiIFJldHVybiB0aGUgbmV4dCBkZWNvZGVkIGxpbmUgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLiIiIgogICAgICAgIHJldHVybiBuZXh0KHNlbGYucmVhZGVyKQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKCiAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyLndyaXRlKGRhdGEpCgogICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgbGlzdCk6CgogICAgICAgIHJldHVybiBzZWxmLndyaXRlci53cml0ZWxpbmVzKGxpc3QpCgogICAgZGVmIHJlc2V0KHNlbGYpOgoKICAgICAgICBzZWxmLnJlYWRlci5yZXNldCgpCiAgICAgICAgc2VsZi53cml0ZXIucmVzZXQoKQoKICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgogICAgICAgIHNlbGYuc3RyZWFtLnNlZWsob2Zmc2V0LCB3aGVuY2UpCiAgICAgICAgc2VsZi5yZWFkZXIucmVzZXQoKQogICAgICAgIGlmIHdoZW5jZSA9PSAwIGFuZCBvZmZzZXQgPT0gMDoKICAgICAgICAgICAgc2VsZi53cml0ZXIucmVzZXQoKQoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lLAogICAgICAgICAgICAgICAgICAgIGdldGF0dHI9Z2V0YXR0cik6CgogICAgICAgICIiIiBJbmhlcml0IGFsbCBvdGhlciBtZXRob2RzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuc3RyZWFtLCBuYW1lKQoKICAgICMgdGhlc2UgYXJlIG5lZWRlZCB0byBtYWtlICJ3aXRoIFN0cmVhbVJlYWRlcldyaXRlciguLi4pIiB3b3JrIHByb3Blcmx5CgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdGIpOgogICAgICAgIHNlbGYuc3RyZWFtLmNsb3NlKCkKCiMjIwoKY2xhc3MgU3RyZWFtUmVjb2RlcjoKCiAgICAiIiIgU3RyZWFtUmVjb2RlciBpbnN0YW5jZXMgdHJhbnNsYXRlIGRhdGEgZnJvbSBvbmUgZW5jb2RpbmcgdG8gYW5vdGhlci4KCiAgICAgICAgVGhleSB1c2UgdGhlIGNvbXBsZXRlIHNldCBvZiBBUElzIHJldHVybmVkIGJ5IHRoZQogICAgICAgIGNvZGVjcy5sb29rdXAoKSBmdW5jdGlvbiB0byBpbXBsZW1lbnQgdGhlaXIgdGFzay4KCiAgICAgICAgRGF0YSB3cml0dGVuIHRvIHRoZSBTdHJlYW1SZWNvZGVyIGlzIGZpcnN0IGRlY29kZWQgaW50byBhbgogICAgICAgIGludGVybWVkaWF0ZSBmb3JtYXQgKGRlcGVuZGluZyBvbiB0aGUgImRlY29kZSIgY29kZWMpIGFuZCB0aGVuCiAgICAgICAgd3JpdHRlbiB0byB0aGUgdW5kZXJseWluZyBzdHJlYW0gdXNpbmcgYW4gaW5zdGFuY2Ugb2YgdGhlIHByb3ZpZGVkCiAgICAgICAgV3JpdGVyIGNsYXNzLgoKICAgICAgICBJbiB0aGUgb3RoZXIgZGlyZWN0aW9uLCBkYXRhIGlzIHJlYWQgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0gdXNpbmcKICAgICAgICBhIFJlYWRlciBpbnN0YW5jZSBhbmQgdGhlbiBlbmNvZGVkIGFuZCByZXR1cm5lZCB0byB0aGUgY2FsbGVyLgoKICAgICIiIgogICAgIyBPcHRpb25hbCBhdHRyaWJ1dGVzIHNldCBieSB0aGUgZmlsZSB3cmFwcGVycyBiZWxvdwogICAgZGF0YV9lbmNvZGluZyA9ICd1bmtub3duJwogICAgZmlsZV9lbmNvZGluZyA9ICd1bmtub3duJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIGVuY29kZSwgZGVjb2RlLCBSZWFkZXIsIFdyaXRlciwKICAgICAgICAgICAgICAgICBlcnJvcnM9J3N0cmljdCcpOgoKICAgICAgICAiIiIgQ3JlYXRlcyBhIFN0cmVhbVJlY29kZXIgaW5zdGFuY2Ugd2hpY2ggaW1wbGVtZW50cyBhIHR3by13YXkKICAgICAgICAgICAgY29udmVyc2lvbjogZW5jb2RlIGFuZCBkZWNvZGUgd29yayBvbiB0aGUgZnJvbnRlbmQgKHRoZQogICAgICAgICAgICBkYXRhIHZpc2libGUgdG8gLnJlYWQoKSBhbmQgLndyaXRlKCkpIHdoaWxlIFJlYWRlciBhbmQgV3JpdGVyCiAgICAgICAgICAgIHdvcmsgb24gdGhlIGJhY2tlbmQgKHRoZSBkYXRhIGluIHN0cmVhbSkuCgogICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGVzZSBvYmplY3RzIHRvIGRvIHRyYW5zcGFyZW50CiAgICAgICAgICAgIHRyYW5zY29kaW5ncyBmcm9tIGUuZy4gbGF0aW4tMSB0byB1dGYtOCBhbmQgYmFjay4KCiAgICAgICAgICAgIHN0cmVhbSBtdXN0IGJlIGEgZmlsZS1saWtlIG9iamVjdC4KCiAgICAgICAgICAgIGVuY29kZSBhbmQgZGVjb2RlIG11c3QgYWRoZXJlIHRvIHRoZSBDb2RlYyBpbnRlcmZhY2U7IFJlYWRlciBhbmQKICAgICAgICAgICAgV3JpdGVyIG11c3QgYmUgZmFjdG9yeSBmdW5jdGlvbnMgb3IgY2xhc3NlcyBwcm92aWRpbmcgdGhlCiAgICAgICAgICAgIFN0cmVhbVJlYWRlciBhbmQgU3RyZWFtV3JpdGVyIGludGVyZmFjZXMgcmVzcC4KCiAgICAgICAgICAgIEVycm9yIGhhbmRsaW5nIGlzIGRvbmUgaW4gdGhlIHNhbWUgd2F5IGFzIGRlZmluZWQgZm9yIHRoZQogICAgICAgICAgICBTdHJlYW1Xcml0ZXIvUmVhZGVycy4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0KICAgICAgICBzZWxmLmVuY29kZSA9IGVuY29kZQogICAgICAgIHNlbGYuZGVjb2RlID0gZGVjb2RlCiAgICAgICAgc2VsZi5yZWFkZXIgPSBSZWFkZXIoc3RyZWFtLCBlcnJvcnMpCiAgICAgICAgc2VsZi53cml0ZXIgPSBXcml0ZXIoc3RyZWFtLCBlcnJvcnMpCiAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKCiAgICAgICAgZGF0YSA9IHNlbGYucmVhZGVyLnJlYWQoc2l6ZSkKICAgICAgICBkYXRhLCBieXRlc2VuY29kZWQgPSBzZWxmLmVuY29kZShkYXRhLCBzZWxmLmVycm9ycykKICAgICAgICByZXR1cm4gZGF0YQoKICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPU5vbmUpOgoKICAgICAgICBpZiBzaXplIGlzIE5vbmU6CiAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlYWRlci5yZWFkbGluZSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZGVyLnJlYWRsaW5lKHNpemUpCiAgICAgICAgZGF0YSwgYnl0ZXNlbmNvZGVkID0gc2VsZi5lbmNvZGUoZGF0YSwgc2VsZi5lcnJvcnMpCiAgICAgICAgcmV0dXJuIGRhdGEKCiAgICBkZWYgcmVhZGxpbmVzKHNlbGYsIHNpemVoaW50PU5vbmUpOgoKICAgICAgICBkYXRhID0gc2VsZi5yZWFkZXIucmVhZCgpCiAgICAgICAgZGF0YSwgYnl0ZXNlbmNvZGVkID0gc2VsZi5lbmNvZGUoZGF0YSwgc2VsZi5lcnJvcnMpCiAgICAgICAgcmV0dXJuIGRhdGEuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQoKICAgIGRlZiBfX25leHRfXyhzZWxmKToKCiAgICAgICAgIiIiIFJldHVybiB0aGUgbmV4dCBkZWNvZGVkIGxpbmUgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLiIiIgogICAgICAgIGRhdGEgPSBuZXh0KHNlbGYucmVhZGVyKQogICAgICAgIGRhdGEsIGJ5dGVzZW5jb2RlZCA9IHNlbGYuZW5jb2RlKGRhdGEsIHNlbGYuZXJyb3JzKQogICAgICAgIHJldHVybiBkYXRhCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgoKICAgICAgICBkYXRhLCBieXRlc2RlY29kZWQgPSBzZWxmLmRlY29kZShkYXRhLCBzZWxmLmVycm9ycykKICAgICAgICByZXR1cm4gc2VsZi53cml0ZXIud3JpdGUoZGF0YSkKCiAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBsaXN0KToKCiAgICAgICAgZGF0YSA9IGInJy5qb2luKGxpc3QpCiAgICAgICAgZGF0YSwgYnl0ZXNkZWNvZGVkID0gc2VsZi5kZWNvZGUoZGF0YSwgc2VsZi5lcnJvcnMpCiAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyLndyaXRlKGRhdGEpCgogICAgZGVmIHJlc2V0KHNlbGYpOgoKICAgICAgICBzZWxmLnJlYWRlci5yZXNldCgpCiAgICAgICAgc2VsZi53cml0ZXIucmVzZXQoKQoKICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgogICAgICAgICMgU2Vla3MgbXVzdCBiZSBwcm9wYWdhdGVkIHRvIGJvdGggdGhlIHJlYWRlcnMgYW5kIHdyaXRlcnMKICAgICAgICAjIGFzIHRoZXkgbWlnaHQgbmVlZCB0byByZXNldCB0aGVpciBpbnRlcm5hbCBidWZmZXJzLgogICAgICAgIHNlbGYucmVhZGVyLnNlZWsob2Zmc2V0LCB3aGVuY2UpCiAgICAgICAgc2VsZi53cml0ZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSwKICAgICAgICAgICAgICAgICAgICBnZXRhdHRyPWdldGF0dHIpOgoKICAgICAgICAiIiIgSW5oZXJpdCBhbGwgb3RoZXIgbWV0aG9kcyBmcm9tIHRoZSB1bmRlcmx5aW5nIHN0cmVhbS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnN0cmVhbSwgbmFtZSkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0Yik6CiAgICAgICAgc2VsZi5zdHJlYW0uY2xvc2UoKQoKIyMjIFNob3J0Y3V0cwoKZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9J3InLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9J3N0cmljdCcsIGJ1ZmZlcmluZz0tMSk6CgogICAgIiIiIE9wZW4gYW4gZW5jb2RlZCBmaWxlIHVzaW5nIHRoZSBnaXZlbiBtb2RlIGFuZCByZXR1cm4KICAgICAgICBhIHdyYXBwZWQgdmVyc2lvbiBwcm92aWRpbmcgdHJhbnNwYXJlbnQgZW5jb2RpbmcvZGVjb2RpbmcuCgogICAgICAgIE5vdGU6IFRoZSB3cmFwcGVkIHZlcnNpb24gd2lsbCBvbmx5IGFjY2VwdCB0aGUgb2JqZWN0IGZvcm1hdAogICAgICAgIGRlZmluZWQgYnkgdGhlIGNvZGVjcywgaS5lLiBVbmljb2RlIG9iamVjdHMgZm9yIG1vc3QgYnVpbHRpbgogICAgICAgIGNvZGVjcy4gT3V0cHV0IGlzIGFsc28gY29kZWMgZGVwZW5kZW50IGFuZCB3aWxsIHVzdWFsbHkgYmUKICAgICAgICBVbmljb2RlIGFzIHdlbGwuCgogICAgICAgIElmIGVuY29kaW5nIGlzIG5vdCBOb25lLCB0aGVuIHRoZQogICAgICAgIHVuZGVybHlpbmcgZW5jb2RlZCBmaWxlcyBhcmUgYWx3YXlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4KICAgICAgICBUaGUgZGVmYXVsdCBmaWxlIG1vZGUgaXMgJ3InLCBtZWFuaW5nIHRvIG9wZW4gdGhlIGZpbGUgaW4gcmVhZCBtb2RlLgoKICAgICAgICBlbmNvZGluZyBzcGVjaWZpZXMgdGhlIGVuY29kaW5nIHdoaWNoIGlzIHRvIGJlIHVzZWQgZm9yIHRoZQogICAgICAgIGZpbGUuCgogICAgICAgIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gZGVmaW5lIHRoZSBlcnJvciBoYW5kbGluZy4gSXQgZGVmYXVsdHMKICAgICAgICB0byAnc3RyaWN0JyB3aGljaCBjYXVzZXMgVmFsdWVFcnJvcnMgdG8gYmUgcmFpc2VkIGluIGNhc2UgYW4KICAgICAgICBlbmNvZGluZyBlcnJvciBvY2N1cnMuCgogICAgICAgIGJ1ZmZlcmluZyBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgdGhlIGJ1aWx0aW4gb3BlbigpIEFQSS4KICAgICAgICBJdCBkZWZhdWx0cyB0byAtMSB3aGljaCBtZWFucyB0aGF0IHRoZSBkZWZhdWx0IGJ1ZmZlciBzaXplIHdpbGwKICAgICAgICBiZSB1c2VkLgoKICAgICAgICBUaGUgcmV0dXJuZWQgd3JhcHBlZCBmaWxlIG9iamVjdCBwcm92aWRlcyBhbiBleHRyYSBhdHRyaWJ1dGUKICAgICAgICAuZW5jb2Rpbmcgd2hpY2ggYWxsb3dzIHF1ZXJ5aW5nIHRoZSB1c2VkIGVuY29kaW5nLiBUaGlzCiAgICAgICAgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIGlmIGFuIGVuY29kaW5nIHdhcyBzcGVjaWZpZWQgYXMKICAgICAgICBwYXJhbWV0ZXIuCgogICAgIiIiCiAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZSBhbmQgXAogICAgICAgJ2InIG5vdCBpbiBtb2RlOgogICAgICAgICMgRm9yY2Ugb3BlbmluZyBvZiB0aGUgZmlsZSBpbiBiaW5hcnkgbW9kZQogICAgICAgIG1vZGUgPSBtb2RlICsgJ2InCiAgICBmaWxlID0gYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgbW9kZSwgYnVmZmVyaW5nKQogICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKICAgICAgICByZXR1cm4gZmlsZQoKICAgIHRyeToKICAgICAgICBpbmZvID0gbG9va3VwKGVuY29kaW5nKQogICAgICAgIHNydyA9IFN0cmVhbVJlYWRlcldyaXRlcihmaWxlLCBpbmZvLnN0cmVhbXJlYWRlciwgaW5mby5zdHJlYW13cml0ZXIsIGVycm9ycykKICAgICAgICAjIEFkZCBhdHRyaWJ1dGVzIHRvIHNpbXBsaWZ5IGludHJvc3BlY3Rpb24KICAgICAgICBzcncuZW5jb2RpbmcgPSBlbmNvZGluZwogICAgICAgIHJldHVybiBzcncKICAgIGV4Y2VwdDoKICAgICAgICBmaWxlLmNsb3NlKCkKICAgICAgICByYWlzZQoKZGVmIEVuY29kZWRGaWxlKGZpbGUsIGRhdGFfZW5jb2RpbmcsIGZpbGVfZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPSdzdHJpY3QnKToKCiAgICAiIiIgUmV0dXJuIGEgd3JhcHBlZCB2ZXJzaW9uIG9mIGZpbGUgd2hpY2ggcHJvdmlkZXMgdHJhbnNwYXJlbnQKICAgICAgICBlbmNvZGluZyB0cmFuc2xhdGlvbi4KCiAgICAgICAgRGF0YSB3cml0dGVuIHRvIHRoZSB3cmFwcGVkIGZpbGUgaXMgZGVjb2RlZCBhY2NvcmRpbmcKICAgICAgICB0byB0aGUgZ2l2ZW4gZGF0YV9lbmNvZGluZyBhbmQgdGhlbiBlbmNvZGVkIHRvIHRoZSB1bmRlcmx5aW5nCiAgICAgICAgZmlsZSB1c2luZyBmaWxlX2VuY29kaW5nLiBUaGUgaW50ZXJtZWRpYXRlIGRhdGEgdHlwZQogICAgICAgIHdpbGwgdXN1YWxseSBiZSBVbmljb2RlIGJ1dCBkZXBlbmRzIG9uIHRoZSBzcGVjaWZpZWQgY29kZWNzLgoKICAgICAgICBCeXRlcyByZWFkIGZyb20gdGhlIGZpbGUgYXJlIGRlY29kZWQgdXNpbmcgZmlsZV9lbmNvZGluZyBhbmQgdGhlbgogICAgICAgIHBhc3NlZCBiYWNrIHRvIHRoZSBjYWxsZXIgZW5jb2RlZCB1c2luZyBkYXRhX2VuY29kaW5nLgoKICAgICAgICBJZiBmaWxlX2VuY29kaW5nIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gZGF0YV9lbmNvZGluZy4KCiAgICAgICAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBkZWZpbmUgdGhlIGVycm9yIGhhbmRsaW5nLiBJdCBkZWZhdWx0cwogICAgICAgIHRvICdzdHJpY3QnIHdoaWNoIGNhdXNlcyBWYWx1ZUVycm9ycyB0byBiZSByYWlzZWQgaW4gY2FzZSBhbgogICAgICAgIGVuY29kaW5nIGVycm9yIG9jY3Vycy4KCiAgICAgICAgVGhlIHJldHVybmVkIHdyYXBwZWQgZmlsZSBvYmplY3QgcHJvdmlkZXMgdHdvIGV4dHJhIGF0dHJpYnV0ZXMKICAgICAgICAuZGF0YV9lbmNvZGluZyBhbmQgLmZpbGVfZW5jb2Rpbmcgd2hpY2ggcmVmbGVjdCB0aGUgZ2l2ZW4KICAgICAgICBwYXJhbWV0ZXJzIG9mIHRoZSBzYW1lIG5hbWUuIFRoZSBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGZvcgogICAgICAgIGludHJvc3BlY3Rpb24gYnkgUHl0aG9uIHByb2dyYW1zLgoKICAgICIiIgogICAgaWYgZmlsZV9lbmNvZGluZyBpcyBOb25lOgogICAgICAgIGZpbGVfZW5jb2RpbmcgPSBkYXRhX2VuY29kaW5nCiAgICBkYXRhX2luZm8gPSBsb29rdXAoZGF0YV9lbmNvZGluZykKICAgIGZpbGVfaW5mbyA9IGxvb2t1cChmaWxlX2VuY29kaW5nKQogICAgc3IgPSBTdHJlYW1SZWNvZGVyKGZpbGUsIGRhdGFfaW5mby5lbmNvZGUsIGRhdGFfaW5mby5kZWNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9pbmZvLnN0cmVhbXJlYWRlciwgZmlsZV9pbmZvLnN0cmVhbXdyaXRlciwgZXJyb3JzKQogICAgIyBBZGQgYXR0cmlidXRlcyB0byBzaW1wbGlmeSBpbnRyb3NwZWN0aW9uCiAgICBzci5kYXRhX2VuY29kaW5nID0gZGF0YV9lbmNvZGluZwogICAgc3IuZmlsZV9lbmNvZGluZyA9IGZpbGVfZW5jb2RpbmcKICAgIHJldHVybiBzcgoKIyMjIEhlbHBlcnMgZm9yIGNvZGVjIGxvb2t1cAoKZGVmIGdldGVuY29kZXIoZW5jb2RpbmcpOgoKICAgICIiIiBMb29rdXAgdXAgdGhlIGNvZGVjIGZvciB0aGUgZ2l2ZW4gZW5jb2RpbmcgYW5kIHJldHVybgogICAgICAgIGl0cyBlbmNvZGVyIGZ1bmN0aW9uLgoKICAgICAgICBSYWlzZXMgYSBMb29rdXBFcnJvciBpbiBjYXNlIHRoZSBlbmNvZGluZyBjYW5ub3QgYmUgZm91bmQuCgogICAgIiIiCiAgICByZXR1cm4gbG9va3VwKGVuY29kaW5nKS5lbmNvZGUKCmRlZiBnZXRkZWNvZGVyKGVuY29kaW5nKToKCiAgICAiIiIgTG9va3VwIHVwIHRoZSBjb2RlYyBmb3IgdGhlIGdpdmVuIGVuY29kaW5nIGFuZCByZXR1cm4KICAgICAgICBpdHMgZGVjb2RlciBmdW5jdGlvbi4KCiAgICAgICAgUmFpc2VzIGEgTG9va3VwRXJyb3IgaW4gY2FzZSB0aGUgZW5jb2RpbmcgY2Fubm90IGJlIGZvdW5kLgoKICAgICIiIgogICAgcmV0dXJuIGxvb2t1cChlbmNvZGluZykuZGVjb2RlCgpkZWYgZ2V0aW5jcmVtZW50YWxlbmNvZGVyKGVuY29kaW5nKToKCiAgICAiIiIgTG9va3VwIHVwIHRoZSBjb2RlYyBmb3IgdGhlIGdpdmVuIGVuY29kaW5nIGFuZCByZXR1cm4KICAgICAgICBpdHMgSW5jcmVtZW50YWxFbmNvZGVyIGNsYXNzIG9yIGZhY3RvcnkgZnVuY3Rpb24uCgogICAgICAgIFJhaXNlcyBhIExvb2t1cEVycm9yIGluIGNhc2UgdGhlIGVuY29kaW5nIGNhbm5vdCBiZSBmb3VuZAogICAgICAgIG9yIHRoZSBjb2RlY3MgZG9lc24ndCBwcm92aWRlIGFuIGluY3JlbWVudGFsIGVuY29kZXIuCgogICAgIiIiCiAgICBlbmNvZGVyID0gbG9va3VwKGVuY29kaW5nKS5pbmNyZW1lbnRhbGVuY29kZXIKICAgIGlmIGVuY29kZXIgaXMgTm9uZToKICAgICAgICByYWlzZSBMb29rdXBFcnJvcihlbmNvZGluZykKICAgIHJldHVybiBlbmNvZGVyCgpkZWYgZ2V0aW5jcmVtZW50YWxkZWNvZGVyKGVuY29kaW5nKToKCiAgICAiIiIgTG9va3VwIHVwIHRoZSBjb2RlYyBmb3IgdGhlIGdpdmVuIGVuY29kaW5nIGFuZCByZXR1cm4KICAgICAgICBpdHMgSW5jcmVtZW50YWxEZWNvZGVyIGNsYXNzIG9yIGZhY3RvcnkgZnVuY3Rpb24uCgogICAgICAgIFJhaXNlcyBhIExvb2t1cEVycm9yIGluIGNhc2UgdGhlIGVuY29kaW5nIGNhbm5vdCBiZSBmb3VuZAogICAgICAgIG9yIHRoZSBjb2RlY3MgZG9lc24ndCBwcm92aWRlIGFuIGluY3JlbWVudGFsIGRlY29kZXIuCgogICAgIiIiCiAgICBkZWNvZGVyID0gbG9va3VwKGVuY29kaW5nKS5pbmNyZW1lbnRhbGRlY29kZXIKICAgIGlmIGRlY29kZXIgaXMgTm9uZToKICAgICAgICByYWlzZSBMb29rdXBFcnJvcihlbmNvZGluZykKICAgIHJldHVybiBkZWNvZGVyCgpkZWYgZ2V0cmVhZGVyKGVuY29kaW5nKToKCiAgICAiIiIgTG9va3VwIHVwIHRoZSBjb2RlYyBmb3IgdGhlIGdpdmVuIGVuY29kaW5nIGFuZCByZXR1cm4KICAgICAgICBpdHMgU3RyZWFtUmVhZGVyIGNsYXNzIG9yIGZhY3RvcnkgZnVuY3Rpb24uCgogICAgICAgIFJhaXNlcyBhIExvb2t1cEVycm9yIGluIGNhc2UgdGhlIGVuY29kaW5nIGNhbm5vdCBiZSBmb3VuZC4KCiAgICAiIiIKICAgIHJldHVybiBsb29rdXAoZW5jb2RpbmcpLnN0cmVhbXJlYWRlcgoKZGVmIGdldHdyaXRlcihlbmNvZGluZyk6CgogICAgIiIiIExvb2t1cCB1cCB0aGUgY29kZWMgZm9yIHRoZSBnaXZlbiBlbmNvZGluZyBhbmQgcmV0dXJuCiAgICAgICAgaXRzIFN0cmVhbVdyaXRlciBjbGFzcyBvciBmYWN0b3J5IGZ1bmN0aW9uLgoKICAgICAgICBSYWlzZXMgYSBMb29rdXBFcnJvciBpbiBjYXNlIHRoZSBlbmNvZGluZyBjYW5ub3QgYmUgZm91bmQuCgogICAgIiIiCiAgICByZXR1cm4gbG9va3VwKGVuY29kaW5nKS5zdHJlYW13cml0ZXIKCmRlZiBpdGVyZW5jb2RlKGl0ZXJhdG9yLCBlbmNvZGluZywgZXJyb3JzPSdzdHJpY3QnLCAqKmt3YXJncyk6CiAgICAiIiIKICAgIEVuY29kaW5nIGl0ZXJhdG9yLgoKICAgIEVuY29kZXMgdGhlIGlucHV0IHN0cmluZ3MgZnJvbSB0aGUgaXRlcmF0b3IgdXNpbmcgYW4gSW5jcmVtZW50YWxFbmNvZGVyLgoKICAgIGVycm9ycyBhbmQga3dhcmdzIGFyZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgSW5jcmVtZW50YWxFbmNvZGVyCiAgICBjb25zdHJ1Y3Rvci4KICAgICIiIgogICAgZW5jb2RlciA9IGdldGluY3JlbWVudGFsZW5jb2RlcihlbmNvZGluZykoZXJyb3JzLCAqKmt3YXJncykKICAgIGZvciBpbnB1dCBpbiBpdGVyYXRvcjoKICAgICAgICBvdXRwdXQgPSBlbmNvZGVyLmVuY29kZShpbnB1dCkKICAgICAgICBpZiBvdXRwdXQ6CiAgICAgICAgICAgIHlpZWxkIG91dHB1dAogICAgb3V0cHV0ID0gZW5jb2Rlci5lbmNvZGUoIiIsIFRydWUpCiAgICBpZiBvdXRwdXQ6CiAgICAgICAgeWllbGQgb3V0cHV0CgpkZWYgaXRlcmRlY29kZShpdGVyYXRvciwgZW5jb2RpbmcsIGVycm9ycz0nc3RyaWN0JywgKiprd2FyZ3MpOgogICAgIiIiCiAgICBEZWNvZGluZyBpdGVyYXRvci4KCiAgICBEZWNvZGVzIHRoZSBpbnB1dCBzdHJpbmdzIGZyb20gdGhlIGl0ZXJhdG9yIHVzaW5nIGFuIEluY3JlbWVudGFsRGVjb2Rlci4KCiAgICBlcnJvcnMgYW5kIGt3YXJncyBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIEluY3JlbWVudGFsRGVjb2RlcgogICAgY29uc3RydWN0b3IuCiAgICAiIiIKICAgIGRlY29kZXIgPSBnZXRpbmNyZW1lbnRhbGRlY29kZXIoZW5jb2RpbmcpKGVycm9ycywgKiprd2FyZ3MpCiAgICBmb3IgaW5wdXQgaW4gaXRlcmF0b3I6CiAgICAgICAgb3V0cHV0ID0gZGVjb2Rlci5kZWNvZGUoaW5wdXQpCiAgICAgICAgaWYgb3V0cHV0OgogICAgICAgICAgICB5aWVsZCBvdXRwdXQKICAgIG91dHB1dCA9IGRlY29kZXIuZGVjb2RlKGIiIiwgVHJ1ZSkKICAgIGlmIG91dHB1dDoKICAgICAgICB5aWVsZCBvdXRwdXQKCiMjIyBIZWxwZXJzIGZvciBjaGFybWFwLWJhc2VkIGNvZGVjcwoKZGVmIG1ha2VfaWRlbnRpdHlfZGljdChybmcpOgoKICAgICIiIiBtYWtlX2lkZW50aXR5X2RpY3Qocm5nKSAtPiBkaWN0CgogICAgICAgIFJldHVybiBhIGRpY3Rpb25hcnkgd2hlcmUgZWxlbWVudHMgb2YgdGhlIHJuZyBzZXF1ZW5jZSBhcmUKICAgICAgICBtYXBwZWQgdG8gdGhlbXNlbHZlcy4KCiAgICAiIiIKICAgIHJldHVybiB7aTppIGZvciBpIGluIHJuZ30KCmRlZiBtYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApOgoKICAgICIiIiBDcmVhdGVzIGFuIGVuY29kaW5nIG1hcCBmcm9tIGEgZGVjb2RpbmcgbWFwLgoKICAgICAgICBJZiBhIHRhcmdldCBtYXBwaW5nIGluIHRoZSBkZWNvZGluZyBtYXAgb2NjdXJzIG11bHRpcGxlCiAgICAgICAgdGltZXMsIHRoZW4gdGhhdCB0YXJnZXQgaXMgbWFwcGVkIHRvIE5vbmUgKHVuZGVmaW5lZCBtYXBwaW5nKSwKICAgICAgICBjYXVzaW5nIGFuIGV4Y2VwdGlvbiB3aGVuIGVuY291bnRlcmVkIGJ5IHRoZSBjaGFybWFwIGNvZGVjCiAgICAgICAgZHVyaW5nIHRyYW5zbGF0aW9uLgoKICAgICAgICBPbmUgZXhhbXBsZSB3aGVyZSB0aGlzIGhhcHBlbnMgaXMgY3A4NzUucHkgd2hpY2ggZGVjb2RlcwogICAgICAgIG11bHRpcGxlIGNoYXJhY3RlciB0byBcXHUwMDFhLgoKICAgICIiIgogICAgbSA9IHt9CiAgICBmb3Igayx2IGluIGRlY29kaW5nX21hcC5pdGVtcygpOgogICAgICAgIGlmIG5vdCB2IGluIG06CiAgICAgICAgICAgIG1bdl0gPSBrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbVt2XSA9IE5vbmUKICAgIHJldHVybiBtCgojIyMgZXJyb3IgaGFuZGxlcnMKCnRyeToKICAgIHN0cmljdF9lcnJvcnMgPSBsb29rdXBfZXJyb3IoInN0cmljdCIpCiAgICBpZ25vcmVfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJpZ25vcmUiKQogICAgcmVwbGFjZV9lcnJvcnMgPSBsb29rdXBfZXJyb3IoInJlcGxhY2UiKQogICAgeG1sY2hhcnJlZnJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJ4bWxjaGFycmVmcmVwbGFjZSIpCiAgICBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyA9IGxvb2t1cF9lcnJvcigiYmFja3NsYXNocmVwbGFjZSIpCiAgICBuYW1lcmVwbGFjZV9lcnJvcnMgPSBsb29rdXBfZXJyb3IoIm5hbWVyZXBsYWNlIikKZXhjZXB0IExvb2t1cEVycm9yOgogICAgIyBJbiAtLWRpc2FibGUtdW5pY29kZSBidWlsZHMsIHRoZXNlIGVycm9yIGhhbmRsZXIgYXJlIG1pc3NpbmcKICAgIHN0cmljdF9lcnJvcnMgPSBOb25lCiAgICBpZ25vcmVfZXJyb3JzID0gTm9uZQogICAgcmVwbGFjZV9lcnJvcnMgPSBOb25lCiAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBOb25lCiAgICBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyA9IE5vbmUKICAgIG5hbWVyZXBsYWNlX2Vycm9ycyA9IE5vbmUKCiMgVGVsbCBtb2R1bGVmaW5kZXIgdGhhdCB1c2luZyBjb2RlY3MgcHJvYmFibHkgbmVlZHMgdGhlIGVuY29kaW5ncwojIHBhY2thZ2UKX2ZhbHNlID0gMAppZiBfZmFsc2U6CiAgICBpbXBvcnQgZW5jb2RpbmdzCgojIyMgVGVzdHMKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CgogICAgIyBNYWtlIHN0ZG91dCB0cmFuc2xhdGUgTGF0aW4tMSBvdXRwdXQgaW50byBVVEYtOCBvdXRwdXQKICAgIHN5cy5zdGRvdXQgPSBFbmNvZGVkRmlsZShzeXMuc3Rkb3V0LCAnbGF0aW4tMScsICd1dGYtOCcpCgogICAgIyBIYXZlIHN0ZGluIHRyYW5zbGF0ZSBMYXRpbi0xIGlucHV0IGludG8gVVRGLTggaW5wdXQKICAgIHN5cy5zdGRpbiA9IEVuY29kZWRGaWxlKHN5cy5zdGRpbiwgJ3V0Zi04JywgJ2xhdGluLTEnKQpQSwMEFAAAAAAAAiCjVhWMOh/fFQAA3xUAAAkAAABjb2Rlb3AucHlyIiIiVXRpbGl0aWVzIHRvIGNvbXBpbGUgcG9zc2libHkgaW5jb21wbGV0ZSBQeXRob24gc291cmNlIGNvZGUuCgpUaGlzIG1vZHVsZSBwcm92aWRlcyB0d28gaW50ZXJmYWNlcywgYnJvYWRseSBzaW1pbGFyIHRvIHRoZSBidWlsdGluCmZ1bmN0aW9uIGNvbXBpbGUoKSwgd2hpY2ggdGFrZSBwcm9ncmFtIHRleHQsIGEgZmlsZW5hbWUgYW5kIGEgJ21vZGUnCmFuZDoKCi0gUmV0dXJuIGNvZGUgb2JqZWN0IGlmIHRoZSBjb21tYW5kIGlzIGNvbXBsZXRlIGFuZCB2YWxpZAotIFJldHVybiBOb25lIGlmIHRoZSBjb21tYW5kIGlzIGluY29tcGxldGUKLSBSYWlzZSBTeW50YXhFcnJvciwgVmFsdWVFcnJvciBvciBPdmVyZmxvd0Vycm9yIGlmIHRoZSBjb21tYW5kIGlzIGEKICBzeW50YXggZXJyb3IgKE92ZXJmbG93RXJyb3IgYW5kIFZhbHVlRXJyb3IgY2FuIGJlIHByb2R1Y2VkIGJ5CiAgbWFsZm9ybWVkIGxpdGVyYWxzKS4KClRoZSB0d28gaW50ZXJmYWNlcyBhcmU6Cgpjb21waWxlX2NvbW1hbmQoc291cmNlLCBmaWxlbmFtZSwgc3ltYm9sKToKCiAgICBDb21waWxlcyBhIHNpbmdsZSBjb21tYW5kIGluIHRoZSBtYW5uZXIgZGVzY3JpYmVkIGFib3ZlLgoKQ29tbWFuZENvbXBpbGVyKCk6CgogICAgSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgaGF2ZSBfX2NhbGxfXyBtZXRob2RzIGlkZW50aWNhbCBpbgogICAgc2lnbmF0dXJlIHRvIGNvbXBpbGVfY29tbWFuZDsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBpZiB0aGUKICAgIGluc3RhbmNlIGNvbXBpbGVzIHByb2dyYW0gdGV4dCBjb250YWluaW5nIGEgX19mdXR1cmVfXyBzdGF0ZW1lbnQsCiAgICB0aGUgaW5zdGFuY2UgJ3JlbWVtYmVycycgYW5kIGNvbXBpbGVzIGFsbCBzdWJzZXF1ZW50IHByb2dyYW0gdGV4dHMKICAgIHdpdGggdGhlIHN0YXRlbWVudCBpbiBmb3JjZS4KClRoZSBtb2R1bGUgYWxzbyBwcm92aWRlcyBhbm90aGVyIGNsYXNzOgoKQ29tcGlsZSgpOgoKICAgIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFjdCBsaWtlIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBjb21waWxlLAogICAgYnV0IHdpdGggJ21lbW9yeScgaW4gdGhlIHNlbnNlIGRlc2NyaWJlZCBhYm92ZS4KIiIiCgppbXBvcnQgX19mdXR1cmVfXwppbXBvcnQgd2FybmluZ3MKCl9mZWF0dXJlcyA9IFtnZXRhdHRyKF9fZnV0dXJlX18sIGZuYW1lKQogICAgICAgICAgICAgZm9yIGZuYW1lIGluIF9fZnV0dXJlX18uYWxsX2ZlYXR1cmVfbmFtZXNdCgpfX2FsbF9fID0gWyJjb21waWxlX2NvbW1hbmQiLCAiQ29tcGlsZSIsICJDb21tYW5kQ29tcGlsZXIiXQoKIyBUaGUgZm9sbG93aW5nIGZsYWdzIG1hdGNoIHRoZSB2YWx1ZXMgZnJvbSBJbmNsdWRlL2NweXRob24vY29tcGlsZS5oCiMgQ2F2ZWF0IGVtcHRvcjogVGhlc2UgZmxhZ3MgYXJlIHVuZG9jdW1lbnRlZCBvbiBwdXJwb3NlIGFuZCBkZXBlbmRpbmcKIyBvbiB0aGVpciBlZmZlY3Qgb3V0c2lkZSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpcyAqKnVuc3VwcG9ydGVkKiouClB5Q0ZfRE9OVF9JTVBMWV9ERURFTlQgPSAweDIwMApQeUNGX0FMTE9XX0lOQ09NUExFVEVfSU5QVVQgPSAweDQwMDAKCmRlZiBfbWF5YmVfY29tcGlsZShjb21waWxlciwgc291cmNlLCBmaWxlbmFtZSwgc3ltYm9sKToKICAgICMgQ2hlY2sgZm9yIHNvdXJjZSBjb25zaXN0aW5nIG9mIG9ubHkgYmxhbmsgbGluZXMgYW5kIGNvbW1lbnRzLgogICAgZm9yIGxpbmUgaW4gc291cmNlLnNwbGl0KCJcbiIpOgogICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKICAgICAgICBpZiBsaW5lIGFuZCBsaW5lWzBdICE9ICcjJzoKICAgICAgICAgICAgYnJlYWsgICAgICAgICAgICAgICAjIExlYXZlIGl0IGFsb25lLgogICAgZWxzZToKICAgICAgICBpZiBzeW1ib2wgIT0gImV2YWwiOgogICAgICAgICAgICBzb3VyY2UgPSAicGFzcyIgICAgICMgUmVwbGFjZSBpdCB3aXRoIGEgJ3Bhc3MnIHN0YXRlbWVudAoKICAgICMgRGlzYWJsZSBjb21waWxlciB3YXJuaW5ncyB3aGVuIGNoZWNraW5nIGZvciBpbmNvbXBsZXRlIGlucHV0LgogICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgKFN5bnRheFdhcm5pbmcsIERlcHJlY2F0aW9uV2FybmluZykpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjb21waWxlcihzb3VyY2UsIGZpbGVuYW1lLCBzeW1ib2wpCiAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yOiAgIyBMZXQgb3RoZXIgY29tcGlsZSgpIGVycm9ycyBwcm9wYWdhdGUuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGNvbXBpbGVyKHNvdXJjZSArICJcbiIsIGZpbGVuYW1lLCBzeW1ib2wpCiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGlmICJpbmNvbXBsZXRlIGlucHV0IiBpbiBzdHIoZSk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICMgZmFsbHRocm91Z2gKCiAgICByZXR1cm4gY29tcGlsZXIoc291cmNlLCBmaWxlbmFtZSwgc3ltYm9sKQoKCmRlZiBfaXNfc3ludGF4X2Vycm9yKGVycjEsIGVycjIpOgogICAgcmVwMSA9IHJlcHIoZXJyMSkKICAgIHJlcDIgPSByZXByKGVycjIpCiAgICBpZiAid2FzIG5ldmVyIGNsb3NlZCIgaW4gcmVwMSBhbmQgIndhcyBuZXZlciBjbG9zZWQiIGluIHJlcDI6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiByZXAxID09IHJlcDI6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIHJldHVybiBGYWxzZQoKZGVmIF9jb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIHN5bWJvbCk6CiAgICByZXR1cm4gY29tcGlsZShzb3VyY2UsIGZpbGVuYW1lLCBzeW1ib2wsIFB5Q0ZfRE9OVF9JTVBMWV9ERURFTlQgfCBQeUNGX0FMTE9XX0lOQ09NUExFVEVfSU5QVVQpCgpkZWYgY29tcGlsZV9jb21tYW5kKHNvdXJjZSwgZmlsZW5hbWU9IjxpbnB1dD4iLCBzeW1ib2w9InNpbmdsZSIpOgogICAgciIiIkNvbXBpbGUgYSBjb21tYW5kIGFuZCBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBpbmNvbXBsZXRlLgoKICAgIEFyZ3VtZW50czoKCiAgICBzb3VyY2UgLS0gdGhlIHNvdXJjZSBzdHJpbmc7IG1heSBjb250YWluIFxuIGNoYXJhY3RlcnMKICAgIGZpbGVuYW1lIC0tIG9wdGlvbmFsIGZpbGVuYW1lIGZyb20gd2hpY2ggc291cmNlIHdhcyByZWFkOyBkZWZhdWx0CiAgICAgICAgICAgICAgICAiPGlucHV0PiIKICAgIHN5bWJvbCAtLSBvcHRpb25hbCBncmFtbWFyIHN0YXJ0IHN5bWJvbDsgInNpbmdsZSIgKGRlZmF1bHQpLCAiZXhlYyIKICAgICAgICAgICAgICBvciAiZXZhbCIKCiAgICBSZXR1cm4gdmFsdWUgLyBleGNlcHRpb25zIHJhaXNlZDoKCiAgICAtIFJldHVybiBhIGNvZGUgb2JqZWN0IGlmIHRoZSBjb21tYW5kIGlzIGNvbXBsZXRlIGFuZCB2YWxpZAogICAgLSBSZXR1cm4gTm9uZSBpZiB0aGUgY29tbWFuZCBpcyBpbmNvbXBsZXRlCiAgICAtIFJhaXNlIFN5bnRheEVycm9yLCBWYWx1ZUVycm9yIG9yIE92ZXJmbG93RXJyb3IgaWYgdGhlIGNvbW1hbmQgaXMgYQogICAgICBzeW50YXggZXJyb3IgKE92ZXJmbG93RXJyb3IgYW5kIFZhbHVlRXJyb3IgY2FuIGJlIHByb2R1Y2VkIGJ5CiAgICAgIG1hbGZvcm1lZCBsaXRlcmFscykuCiAgICAiIiIKICAgIHJldHVybiBfbWF5YmVfY29tcGlsZShfY29tcGlsZSwgc291cmNlLCBmaWxlbmFtZSwgc3ltYm9sKQoKY2xhc3MgQ29tcGlsZToKICAgICIiIkluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGJlaGF2ZSBtdWNoIGxpa2UgdGhlIGJ1aWx0LWluIGNvbXBpbGUKICAgIGZ1bmN0aW9uLCBidXQgaWYgb25lIGlzIHVzZWQgdG8gY29tcGlsZSB0ZXh0IGNvbnRhaW5pbmcgYSBmdXR1cmUKICAgIHN0YXRlbWVudCwgaXQgInJlbWVtYmVycyIgYW5kIGNvbXBpbGVzIGFsbCBzdWJzZXF1ZW50IHByb2dyYW0gdGV4dHMKICAgIHdpdGggdGhlIHN0YXRlbWVudCBpbiBmb3JjZS4iIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLmZsYWdzID0gUHlDRl9ET05UX0lNUExZX0RFREVOVCB8IFB5Q0ZfQUxMT1dfSU5DT01QTEVURV9JTlBVVAoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBzb3VyY2UsIGZpbGVuYW1lLCBzeW1ib2wpOgogICAgICAgIGNvZGVvYiA9IGNvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgc3ltYm9sLCBzZWxmLmZsYWdzLCBUcnVlKQogICAgICAgIGZvciBmZWF0dXJlIGluIF9mZWF0dXJlczoKICAgICAgICAgICAgaWYgY29kZW9iLmNvX2ZsYWdzICYgZmVhdHVyZS5jb21waWxlcl9mbGFnOgogICAgICAgICAgICAgICAgc2VsZi5mbGFncyB8PSBmZWF0dXJlLmNvbXBpbGVyX2ZsYWcKICAgICAgICByZXR1cm4gY29kZW9iCgpjbGFzcyBDb21tYW5kQ29tcGlsZXI6CiAgICAiIiJJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBoYXZlIF9fY2FsbF9fIG1ldGhvZHMgaWRlbnRpY2FsIGluCiAgICBzaWduYXR1cmUgdG8gY29tcGlsZV9jb21tYW5kOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGlmIHRoZQogICAgaW5zdGFuY2UgY29tcGlsZXMgcHJvZ3JhbSB0ZXh0IGNvbnRhaW5pbmcgYSBfX2Z1dHVyZV9fIHN0YXRlbWVudCwKICAgIHRoZSBpbnN0YW5jZSAncmVtZW1iZXJzJyBhbmQgY29tcGlsZXMgYWxsIHN1YnNlcXVlbnQgcHJvZ3JhbSB0ZXh0cwogICAgd2l0aCB0aGUgc3RhdGVtZW50IGluIGZvcmNlLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCk6CiAgICAgICAgc2VsZi5jb21waWxlciA9IENvbXBpbGUoKQoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBzb3VyY2UsIGZpbGVuYW1lPSI8aW5wdXQ+Iiwgc3ltYm9sPSJzaW5nbGUiKToKICAgICAgICByIiIiQ29tcGlsZSBhIGNvbW1hbmQgYW5kIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGluY29tcGxldGUuCgogICAgICAgIEFyZ3VtZW50czoKCiAgICAgICAgc291cmNlIC0tIHRoZSBzb3VyY2Ugc3RyaW5nOyBtYXkgY29udGFpbiBcbiBjaGFyYWN0ZXJzCiAgICAgICAgZmlsZW5hbWUgLS0gb3B0aW9uYWwgZmlsZW5hbWUgZnJvbSB3aGljaCBzb3VyY2Ugd2FzIHJlYWQ7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCAiPGlucHV0PiIKICAgICAgICBzeW1ib2wgLS0gb3B0aW9uYWwgZ3JhbW1hciBzdGFydCBzeW1ib2w7ICJzaW5nbGUiIChkZWZhdWx0KSBvcgogICAgICAgICAgICAgICAgICAiZXZhbCIKCiAgICAgICAgUmV0dXJuIHZhbHVlIC8gZXhjZXB0aW9ucyByYWlzZWQ6CgogICAgICAgIC0gUmV0dXJuIGEgY29kZSBvYmplY3QgaWYgdGhlIGNvbW1hbmQgaXMgY29tcGxldGUgYW5kIHZhbGlkCiAgICAgICAgLSBSZXR1cm4gTm9uZSBpZiB0aGUgY29tbWFuZCBpcyBpbmNvbXBsZXRlCiAgICAgICAgLSBSYWlzZSBTeW50YXhFcnJvciwgVmFsdWVFcnJvciBvciBPdmVyZmxvd0Vycm9yIGlmIHRoZSBjb21tYW5kIGlzIGEKICAgICAgICAgIHN5bnRheCBlcnJvciAoT3ZlcmZsb3dFcnJvciBhbmQgVmFsdWVFcnJvciBjYW4gYmUgcHJvZHVjZWQgYnkKICAgICAgICAgIG1hbGZvcm1lZCBsaXRlcmFscykuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIF9tYXliZV9jb21waWxlKHNlbGYuY29tcGlsZXIsIHNvdXJjZSwgZmlsZW5hbWUsIHN5bWJvbCkKUEsDBBQAAAAAAAIgo1b1k/BItg8AALYPAAALAAAAY29sb3JzeXMucHkiIiJDb252ZXJzaW9uIGZ1bmN0aW9ucyBiZXR3ZWVuIFJHQiBhbmQgb3RoZXIgY29sb3Igc3lzdGVtcy4KClRoaXMgbW9kdWxlcyBwcm92aWRlcyB0d28gZnVuY3Rpb25zIGZvciBlYWNoIGNvbG9yIHN5c3RlbSBBQkM6CgogIHJnYl90b19hYmMociwgZywgYikgLS0+IGEsIGIsIGMKICBhYmNfdG9fcmdiKGEsIGIsIGMpIC0tPiByLCBnLCBiCgpBbGwgaW5wdXRzIGFuZCBvdXRwdXRzIGFyZSB0cmlwbGVzIG9mIGZsb2F0cyBpbiB0aGUgcmFuZ2UgWzAuMC4uLjEuMF0KKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBJIGFuZCBRLCB3aGljaCBjb3ZlcnMgYSBzbGlnaHRseSBsYXJnZXIgcmFuZ2UpLgpJbnB1dHMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgbWF5IGNhdXNlIGV4Y2VwdGlvbnMgb3IgaW52YWxpZCBvdXRwdXRzLgoKU3VwcG9ydGVkIGNvbG9yIHN5c3RlbXM6ClJHQjogUmVkLCBHcmVlbiwgQmx1ZSBjb21wb25lbnRzCllJUTogTHVtaW5hbmNlLCBDaHJvbWluYW5jZSAodXNlZCBieSBjb21wb3NpdGUgdmlkZW8gc2lnbmFscykKSExTOiBIdWUsIEx1bWluYW5jZSwgU2F0dXJhdGlvbgpIU1Y6IEh1ZSwgU2F0dXJhdGlvbiwgVmFsdWUKIiIiCgojIFJlZmVyZW5jZXM6CiMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9ZSVEKIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hMU19jb2xvcl9zcGFjZQojIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNWX2NvbG9yX3NwYWNlCgpfX2FsbF9fID0gWyJyZ2JfdG9feWlxIiwieWlxX3RvX3JnYiIsInJnYl90b19obHMiLCJobHNfdG9fcmdiIiwKICAgICAgICAgICAicmdiX3RvX2hzdiIsImhzdl90b19yZ2IiXQoKIyBTb21lIGZsb2F0aW5nIHBvaW50IGNvbnN0YW50cwoKT05FX1RISVJEID0gMS4wLzMuMApPTkVfU0lYVEggPSAxLjAvNi4wClRXT19USElSRCA9IDIuMC8zLjAKCiMgWUlROiB1c2VkIGJ5IGNvbXBvc2l0ZSB2aWRlbyBzaWduYWxzIChsaW5lYXIgY29tYmluYXRpb25zIG9mIFJHQikKIyBZOiBwZXJjZWl2ZWQgZ3JleSBsZXZlbCAoMC4wID09IGJsYWNrLCAxLjAgPT0gd2hpdGUpCiMgSSwgUTogY29sb3IgY29tcG9uZW50cwojCiMgVGhlcmUgYXJlIGEgZ3JlYXQgbWFueSB2ZXJzaW9ucyBvZiB0aGUgY29uc3RhbnRzIHVzZWQgaW4gdGhlc2UgZm9ybXVsYWUuCiMgVGhlIG9uZXMgaW4gdGhpcyBsaWJyYXJ5IHVzZXMgY29uc3RhbnRzIGZyb20gdGhlIEZDQyB2ZXJzaW9uIG9mIE5UU0MuCgpkZWYgcmdiX3RvX3lpcShyLCBnLCBiKToKICAgIHkgPSAwLjMwKnIgKyAwLjU5KmcgKyAwLjExKmIKICAgIGkgPSAwLjc0KihyLXkpIC0gMC4yNyooYi15KQogICAgcSA9IDAuNDgqKHIteSkgKyAwLjQxKihiLXkpCiAgICByZXR1cm4gKHksIGksIHEpCgpkZWYgeWlxX3RvX3JnYih5LCBpLCBxKToKICAgICMgciA9IHkgKyAoMC4yNypxICsgMC40MSppKSAvICgwLjc0KjAuNDEgKyAwLjI3KjAuNDgpCiAgICAjIGIgPSB5ICsgKDAuNzQqcSAtIDAuNDgqaSkgLyAoMC43NCowLjQxICsgMC4yNyowLjQ4KQogICAgIyBnID0geSAtICgwLjMwKihyLXkpICsgMC4xMSooYi15KSkgLyAwLjU5CgogICAgciA9IHkgKyAwLjk0Njg4MjIxNzA5MDA2OTMqaSArIDAuNjIzNTU2NTgxOTg2MTQzMypxCiAgICBnID0geSAtIDAuMjc0Nzg3NjQ2Mjk4OTc4MzQqaSAtIDAuNjM1NjkxMDc5MTg3MzgwMSpxCiAgICBiID0geSAtIDEuMTA4NTQ1MDM0NjQyMDMyMippICsgMS43MDkwMDY5Mjg0MDY0NjY2KnEKCiAgICBpZiByIDwgMC4wOgogICAgICAgIHIgPSAwLjAKICAgIGlmIGcgPCAwLjA6CiAgICAgICAgZyA9IDAuMAogICAgaWYgYiA8IDAuMDoKICAgICAgICBiID0gMC4wCiAgICBpZiByID4gMS4wOgogICAgICAgIHIgPSAxLjAKICAgIGlmIGcgPiAxLjA6CiAgICAgICAgZyA9IDEuMAogICAgaWYgYiA+IDEuMDoKICAgICAgICBiID0gMS4wCiAgICByZXR1cm4gKHIsIGcsIGIpCgoKIyBITFM6IEh1ZSwgTHVtaW5hbmNlLCBTYXR1cmF0aW9uCiMgSDogcG9zaXRpb24gaW4gdGhlIHNwZWN0cnVtCiMgTDogY29sb3IgbGlnaHRuZXNzCiMgUzogY29sb3Igc2F0dXJhdGlvbgoKZGVmIHJnYl90b19obHMociwgZywgYik6CiAgICBtYXhjID0gbWF4KHIsIGcsIGIpCiAgICBtaW5jID0gbWluKHIsIGcsIGIpCiAgICBzdW1jID0gKG1heGMrbWluYykKICAgIHJhbmdlYyA9IChtYXhjLW1pbmMpCiAgICBsID0gc3VtYy8yLjAKICAgIGlmIG1pbmMgPT0gbWF4YzoKICAgICAgICByZXR1cm4gMC4wLCBsLCAwLjAKICAgIGlmIGwgPD0gMC41OgogICAgICAgIHMgPSByYW5nZWMgLyBzdW1jCiAgICBlbHNlOgogICAgICAgIHMgPSByYW5nZWMgLyAoMi4wLXN1bWMpCiAgICByYyA9IChtYXhjLXIpIC8gcmFuZ2VjCiAgICBnYyA9IChtYXhjLWcpIC8gcmFuZ2VjCiAgICBiYyA9IChtYXhjLWIpIC8gcmFuZ2VjCiAgICBpZiByID09IG1heGM6CiAgICAgICAgaCA9IGJjLWdjCiAgICBlbGlmIGcgPT0gbWF4YzoKICAgICAgICBoID0gMi4wK3JjLWJjCiAgICBlbHNlOgogICAgICAgIGggPSA0LjArZ2MtcmMKICAgIGggPSAoaC82LjApICUgMS4wCiAgICByZXR1cm4gaCwgbCwgcwoKZGVmIGhsc190b19yZ2IoaCwgbCwgcyk6CiAgICBpZiBzID09IDAuMDoKICAgICAgICByZXR1cm4gbCwgbCwgbAogICAgaWYgbCA8PSAwLjU6CiAgICAgICAgbTIgPSBsICogKDEuMCtzKQogICAgZWxzZToKICAgICAgICBtMiA9IGwrcy0obCpzKQogICAgbTEgPSAyLjAqbCAtIG0yCiAgICByZXR1cm4gKF92KG0xLCBtMiwgaCtPTkVfVEhJUkQpLCBfdihtMSwgbTIsIGgpLCBfdihtMSwgbTIsIGgtT05FX1RISVJEKSkKCmRlZiBfdihtMSwgbTIsIGh1ZSk6CiAgICBodWUgPSBodWUgJSAxLjAKICAgIGlmIGh1ZSA8IE9ORV9TSVhUSDoKICAgICAgICByZXR1cm4gbTEgKyAobTItbTEpKmh1ZSo2LjAKICAgIGlmIGh1ZSA8IDAuNToKICAgICAgICByZXR1cm4gbTIKICAgIGlmIGh1ZSA8IFRXT19USElSRDoKICAgICAgICByZXR1cm4gbTEgKyAobTItbTEpKihUV09fVEhJUkQtaHVlKSo2LjAKICAgIHJldHVybiBtMQoKCiMgSFNWOiBIdWUsIFNhdHVyYXRpb24sIFZhbHVlCiMgSDogcG9zaXRpb24gaW4gdGhlIHNwZWN0cnVtCiMgUzogY29sb3Igc2F0dXJhdGlvbiAoInB1cml0eSIpCiMgVjogY29sb3IgYnJpZ2h0bmVzcwoKZGVmIHJnYl90b19oc3YociwgZywgYik6CiAgICBtYXhjID0gbWF4KHIsIGcsIGIpCiAgICBtaW5jID0gbWluKHIsIGcsIGIpCiAgICByYW5nZWMgPSAobWF4Yy1taW5jKQogICAgdiA9IG1heGMKICAgIGlmIG1pbmMgPT0gbWF4YzoKICAgICAgICByZXR1cm4gMC4wLCAwLjAsIHYKICAgIHMgPSByYW5nZWMgLyBtYXhjCiAgICByYyA9IChtYXhjLXIpIC8gcmFuZ2VjCiAgICBnYyA9IChtYXhjLWcpIC8gcmFuZ2VjCiAgICBiYyA9IChtYXhjLWIpIC8gcmFuZ2VjCiAgICBpZiByID09IG1heGM6CiAgICAgICAgaCA9IGJjLWdjCiAgICBlbGlmIGcgPT0gbWF4YzoKICAgICAgICBoID0gMi4wK3JjLWJjCiAgICBlbHNlOgogICAgICAgIGggPSA0LjArZ2MtcmMKICAgIGggPSAoaC82LjApICUgMS4wCiAgICByZXR1cm4gaCwgcywgdgoKZGVmIGhzdl90b19yZ2IoaCwgcywgdik6CiAgICBpZiBzID09IDAuMDoKICAgICAgICByZXR1cm4gdiwgdiwgdgogICAgaSA9IGludChoKjYuMCkgIyBYWFggYXNzdW1lIGludCgpIHRydW5jYXRlcyEKICAgIGYgPSAoaCo2LjApIC0gaQogICAgcCA9IHYqKDEuMCAtIHMpCiAgICBxID0gdiooMS4wIC0gcypmKQogICAgdCA9IHYqKDEuMCAtIHMqKDEuMC1mKSkKICAgIGkgPSBpJTYKICAgIGlmIGkgPT0gMDoKICAgICAgICByZXR1cm4gdiwgdCwgcAogICAgaWYgaSA9PSAxOgogICAgICAgIHJldHVybiBxLCB2LCBwCiAgICBpZiBpID09IDI6CiAgICAgICAgcmV0dXJuIHAsIHYsIHQKICAgIGlmIGkgPT0gMzoKICAgICAgICByZXR1cm4gcCwgcSwgdgogICAgaWYgaSA9PSA0OgogICAgICAgIHJldHVybiB0LCBwLCB2CiAgICBpZiBpID09IDU6CiAgICAgICAgcmV0dXJuIHYsIHAsIHEKICAgICMgQ2Fubm90IGdldCBoZXJlClBLAwQUAAAAAAACIKNWiBd+kxxPAAAcTwAADQAAAGNvbXBpbGVhbGwucHkiIiJNb2R1bGUvc2NyaXB0IHRvIGJ5dGUtY29tcGlsZSBhbGwgLnB5IGZpbGVzIHRvIC5weWMgZmlsZXMuCgpXaGVuIGNhbGxlZCBhcyBhIHNjcmlwdCB3aXRoIGFyZ3VtZW50cywgdGhpcyBjb21waWxlcyB0aGUgZGlyZWN0b3JpZXMKZ2l2ZW4gYXMgYXJndW1lbnRzIHJlY3Vyc2l2ZWx5OyB0aGUgLWwgb3B0aW9uIHByZXZlbnRzIGl0IGZyb20KcmVjdXJzaW5nIGludG8gZGlyZWN0b3JpZXMuCgpXaXRob3V0IGFyZ3VtZW50cywgaXQgY29tcGlsZXMgYWxsIG1vZHVsZXMgb24gc3lzLnBhdGgsIHdpdGhvdXQKcmVjdXJzaW5nIGludG8gc3ViZGlyZWN0b3JpZXMuICAoRXZlbiB0aG91Z2ggaXQgc2hvdWxkIGRvIHNvIGZvcgpwYWNrYWdlcyAtLSBmb3Igbm93LCB5b3UnbGwgaGF2ZSB0byBkZWFsIHdpdGggcGFja2FnZXMgc2VwYXJhdGVseS4pCgpTZWUgbW9kdWxlIHB5X2NvbXBpbGUgZm9yIGRldGFpbHMgb2YgdGhlIGFjdHVhbCBieXRlLWNvbXBpbGF0aW9uLgoiIiIKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IGltcG9ydGxpYi51dGlsCmltcG9ydCBweV9jb21waWxlCmltcG9ydCBzdHJ1Y3QKaW1wb3J0IGZpbGVjbXAKCmZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAoKX19hbGxfXyA9IFsiY29tcGlsZV9kaXIiLCJjb21waWxlX2ZpbGUiLCJjb21waWxlX3BhdGgiXQoKZGVmIF93YWxrX2RpcihkaXIsIG1heGxldmVscywgcXVpZXQ9MCk6CiAgICBpZiBxdWlldCA8IDIgYW5kIGlzaW5zdGFuY2UoZGlyLCBvcy5QYXRoTGlrZSk6CiAgICAgICAgZGlyID0gb3MuZnNwYXRoKGRpcikKICAgIGlmIG5vdCBxdWlldDoKICAgICAgICBwcmludCgnTGlzdGluZyB7IXJ9Li4uJy5mb3JtYXQoZGlyKSkKICAgIHRyeToKICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgaWYgcXVpZXQgPCAyOgogICAgICAgICAgICBwcmludCgiQ2FuJ3QgbGlzdCB7IXJ9Ii5mb3JtYXQoZGlyKSkKICAgICAgICBuYW1lcyA9IFtdCiAgICBuYW1lcy5zb3J0KCkKICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgIGlmIG5hbWUgPT0gJ19fcHljYWNoZV9fJzoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihkaXIsIG5hbWUpCiAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZnVsbG5hbWUpOgogICAgICAgICAgICB5aWVsZCBmdWxsbmFtZQogICAgICAgIGVsaWYgKG1heGxldmVscyA+IDAgYW5kIG5hbWUgIT0gb3MuY3VyZGlyIGFuZCBuYW1lICE9IG9zLnBhcmRpciBhbmQKICAgICAgICAgICAgICBvcy5wYXRoLmlzZGlyKGZ1bGxuYW1lKSBhbmQgbm90IG9zLnBhdGguaXNsaW5rKGZ1bGxuYW1lKSk6CiAgICAgICAgICAgIHlpZWxkIGZyb20gX3dhbGtfZGlyKGZ1bGxuYW1lLCBtYXhsZXZlbHM9bWF4bGV2ZWxzIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9cXVpZXQpCgpkZWYgY29tcGlsZV9kaXIoZGlyLCBtYXhsZXZlbHM9Tm9uZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwKICAgICAgICAgICAgICAgIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEsIHdvcmtlcnM9MSwKICAgICAgICAgICAgICAgIGludmFsaWRhdGlvbl9tb2RlPU5vbmUsICosIHN0cmlwZGlyPU5vbmUsCiAgICAgICAgICAgICAgICBwcmVwZW5kZGlyPU5vbmUsIGxpbWl0X3NsX2Rlc3Q9Tm9uZSwgaGFyZGxpbmtfZHVwZXM9RmFsc2UpOgogICAgIiIiQnl0ZS1jb21waWxlIGFsbCBtb2R1bGVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgdHJlZS4KCiAgICBBcmd1bWVudHMgKG9ubHkgZGlyIGlzIHJlcXVpcmVkKToKCiAgICBkaXI6ICAgICAgIHRoZSBkaXJlY3RvcnkgdG8gYnl0ZS1jb21waWxlCiAgICBtYXhsZXZlbHM6IG1heGltdW0gcmVjdXJzaW9uIGxldmVsIChkZWZhdWx0IGBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKWApCiAgICBkZGlyOiAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUKICAgICAgICAgICAgICAgZmlsZSBhcyBpdCBpcyBjb21waWxlZCBpbnRvIGVhY2ggYnl0ZS1jb2RlIGZpbGUuCiAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCiAgICAgICAgICAgICAgIG5vIG91dHB1dCB3aXRoIDIKICAgIGxlZ2FjeTogICAgaWYgVHJ1ZSwgcHJvZHVjZSBsZWdhY3kgcHljIHBhdGhzIGluc3RlYWQgb2YgUEVQIDMxNDcgcGF0aHMKICAgIG9wdGltaXplOiAgaW50IG9yIGxpc3Qgb2Ygb3B0aW1pemF0aW9uIGxldmVscyBvciAtMSBmb3IgbGV2ZWwgb2YKICAgICAgICAgICAgICAgdGhlIGludGVycHJldGVyLiBNdWx0aXBsZSBsZXZlbHMgbGVhZHMgdG8gbXVsdGlwbGUgY29tcGlsZWQKICAgICAgICAgICAgICAgZmlsZXMgZWFjaCB3aXRoIG9uZSBvcHRpbWl6YXRpb24gbGV2ZWwuCiAgICB3b3JrZXJzOiAgIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKICAgIGludmFsaWRhdGlvbl9tb2RlOiBob3cgdGhlIHVwLXRvLWRhdGVuZXNzIG9mIHRoZSBweWMgd2lsbCBiZSBjaGVja2VkCiAgICBzdHJpcGRpcjogIHBhcnQgb2YgcGF0aCB0byBsZWZ0LXN0cmlwIGZyb20gc291cmNlIGZpbGUgcGF0aAogICAgcHJlcGVuZGRpcjogcGF0aCB0byBwcmVwZW5kIHRvIGJlZ2lubmluZyBvZiBvcmlnaW5hbCBmaWxlIHBhdGgsIGFwcGxpZWQKICAgICAgICAgICAgICAgYWZ0ZXIgc3RyaXBkaXIKICAgIGxpbWl0X3NsX2Rlc3Q6IGlnbm9yZSBzeW1saW5rcyBpZiB0aGV5IGFyZSBwb2ludGluZyBvdXRzaWRlIG9mCiAgICAgICAgICAgICAgICAgICB0aGUgZGVmaW5lZCBwYXRoCiAgICBoYXJkbGlua19kdXBlczogaGFyZGxpbmsgZHVwbGljYXRlZCBweWMgZmlsZXMKICAgICIiIgogICAgUHJvY2Vzc1Bvb2xFeGVjdXRvciA9IE5vbmUKICAgIGlmIGRkaXIgaXMgbm90IE5vbmUgYW5kIChzdHJpcGRpciBpcyBub3QgTm9uZSBvciBwcmVwZW5kZGlyIGlzIG5vdCBOb25lKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCgiRGVzdGluYXRpb24gZGlyIChkZGlyKSBjYW5ub3QgYmUgdXNlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNvbWJpbmF0aW9uIHdpdGggc3RyaXBkaXIgb3IgcHJlcGVuZGRpciIpKQogICAgaWYgZGRpciBpcyBub3QgTm9uZToKICAgICAgICBzdHJpcGRpciA9IGRpcgogICAgICAgIHByZXBlbmRkaXIgPSBkZGlyCiAgICAgICAgZGRpciA9IE5vbmUKICAgIGlmIHdvcmtlcnMgPCAwOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dvcmtlcnMgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIDAnKQogICAgaWYgd29ya2VycyAhPSAxOgogICAgICAgICMgQ2hlY2sgaWYgdGhpcyBpcyBhIHN5c3RlbSB3aGVyZSBQcm9jZXNzUG9vbEV4ZWN1dG9yIGNhbiBmdW5jdGlvbi4KICAgICAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcy5wcm9jZXNzIGltcG9ydCBfY2hlY2tfc3lzdGVtX2xpbWl0cwogICAgICAgIHRyeToKICAgICAgICAgICAgX2NoZWNrX3N5c3RlbV9saW1pdHMoKQogICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICB3b3JrZXJzID0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZyb20gY29uY3VycmVudC5mdXR1cmVzIGltcG9ydCBQcm9jZXNzUG9vbEV4ZWN1dG9yCiAgICBpZiBtYXhsZXZlbHMgaXMgTm9uZToKICAgICAgICBtYXhsZXZlbHMgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQogICAgZmlsZXMgPSBfd2Fsa19kaXIoZGlyLCBxdWlldD1xdWlldCwgbWF4bGV2ZWxzPW1heGxldmVscykKICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICBpZiB3b3JrZXJzICE9IDEgYW5kIFByb2Nlc3NQb29sRXhlY3V0b3IgaXMgbm90IE5vbmU6CiAgICAgICAgIyBJZiB3b3JrZXJzID09IDAsIGxldCBQcm9jZXNzUG9vbEV4ZWN1dG9yIGNob29zZQogICAgICAgIHdvcmtlcnMgPSB3b3JrZXJzIG9yIE5vbmUKICAgICAgICB3aXRoIFByb2Nlc3NQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9d29ya2VycykgYXMgZXhlY3V0b3I6CiAgICAgICAgICAgIHJlc3VsdHMgPSBleGVjdXRvci5tYXAocGFydGlhbChjb21waWxlX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZGlyPWRkaXIsIGZvcmNlPWZvcmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcng9cngsIHF1aWV0PXF1aWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5PWxlZ2FjeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uX21vZGU9aW52YWxpZGF0aW9uX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcGRpcj1zdHJpcGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmRkaXI9cHJlcGVuZGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0X3NsX2Rlc3Q9bGltaXRfc2xfZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmRsaW5rX2R1cGVzPWhhcmRsaW5rX2R1cGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcykKICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PVRydWUpCiAgICBlbHNlOgogICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICBpZiBub3QgY29tcGlsZV9maWxlKGZpbGUsIGRkaXIsIGZvcmNlLCByeCwgcXVpZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5LCBvcHRpbWl6ZSwgaW52YWxpZGF0aW9uX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBkaXI9c3RyaXBkaXIsIHByZXBlbmRkaXI9cHJlcGVuZGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdF9zbF9kZXN0PWxpbWl0X3NsX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFyZGxpbmtfZHVwZXM9aGFyZGxpbmtfZHVwZXMpOgogICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICByZXR1cm4gc3VjY2VzcwoKZGVmIGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwKICAgICAgICAgICAgICAgICBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLAogICAgICAgICAgICAgICAgIGludmFsaWRhdGlvbl9tb2RlPU5vbmUsICosIHN0cmlwZGlyPU5vbmUsIHByZXBlbmRkaXI9Tm9uZSwKICAgICAgICAgICAgICAgICBsaW1pdF9zbF9kZXN0PU5vbmUsIGhhcmRsaW5rX2R1cGVzPUZhbHNlKToKICAgICIiIkJ5dGUtY29tcGlsZSBvbmUgZmlsZS4KCiAgICBBcmd1bWVudHMgKG9ubHkgZnVsbG5hbWUgaXMgcmVxdWlyZWQpOgoKICAgIGZ1bGxuYW1lOiAgdGhlIGZpbGUgdG8gYnl0ZS1jb21waWxlCiAgICBkZGlyOiAgICAgIGlmIGdpdmVuLCB0aGUgZGlyZWN0b3J5IG5hbWUgY29tcGlsZWQgaW4gdG8gdGhlCiAgICAgICAgICAgICAgIGJ5dGUtY29kZSBmaWxlLgogICAgZm9yY2U6ICAgICBpZiBUcnVlLCBmb3JjZSBjb21waWxhdGlvbiwgZXZlbiBpZiB0aW1lc3RhbXBzIGFyZSB1cC10by1kYXRlCiAgICBxdWlldDogICAgIGZ1bGwgb3V0cHV0IHdpdGggRmFsc2Ugb3IgMCwgZXJyb3JzIG9ubHkgd2l0aCAxLAogICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCiAgICBsZWdhY3k6ICAgIGlmIFRydWUsIHByb2R1Y2UgbGVnYWN5IHB5YyBwYXRocyBpbnN0ZWFkIG9mIFBFUCAzMTQ3IHBhdGhzCiAgICBvcHRpbWl6ZTogIGludCBvciBsaXN0IG9mIG9wdGltaXphdGlvbiBsZXZlbHMgb3IgLTEgZm9yIGxldmVsIG9mCiAgICAgICAgICAgICAgIHRoZSBpbnRlcnByZXRlci4gTXVsdGlwbGUgbGV2ZWxzIGxlYWRzIHRvIG11bHRpcGxlIGNvbXBpbGVkCiAgICAgICAgICAgICAgIGZpbGVzIGVhY2ggd2l0aCBvbmUgb3B0aW1pemF0aW9uIGxldmVsLgogICAgaW52YWxpZGF0aW9uX21vZGU6IGhvdyB0aGUgdXAtdG8tZGF0ZW5lc3Mgb2YgdGhlIHB5YyB3aWxsIGJlIGNoZWNrZWQKICAgIHN0cmlwZGlyOiAgcGFydCBvZiBwYXRoIHRvIGxlZnQtc3RyaXAgZnJvbSBzb3VyY2UgZmlsZSBwYXRoCiAgICBwcmVwZW5kZGlyOiBwYXRoIHRvIHByZXBlbmQgdG8gYmVnaW5uaW5nIG9mIG9yaWdpbmFsIGZpbGUgcGF0aCwgYXBwbGllZAogICAgICAgICAgICAgICBhZnRlciBzdHJpcGRpcgogICAgbGltaXRfc2xfZGVzdDogaWdub3JlIHN5bWxpbmtzIGlmIHRoZXkgYXJlIHBvaW50aW5nIG91dHNpZGUgb2YKICAgICAgICAgICAgICAgICAgIHRoZSBkZWZpbmVkIHBhdGguCiAgICBoYXJkbGlua19kdXBlczogaGFyZGxpbmsgZHVwbGljYXRlZCBweWMgZmlsZXMKICAgICIiIgoKICAgIGlmIGRkaXIgaXMgbm90IE5vbmUgYW5kIChzdHJpcGRpciBpcyBub3QgTm9uZSBvciBwcmVwZW5kZGlyIGlzIG5vdCBOb25lKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCgiRGVzdGluYXRpb24gZGlyIChkZGlyKSBjYW5ub3QgYmUgdXNlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNvbWJpbmF0aW9uIHdpdGggc3RyaXBkaXIgb3IgcHJlcGVuZGRpciIpKQoKICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICBmdWxsbmFtZSA9IG9zLmZzcGF0aChmdWxsbmFtZSkKICAgIHN0cmlwZGlyID0gb3MuZnNwYXRoKHN0cmlwZGlyKSBpZiBzdHJpcGRpciBpcyBub3QgTm9uZSBlbHNlIE5vbmUKICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZ1bGxuYW1lKQoKICAgIGRmaWxlID0gTm9uZQoKICAgIGlmIGRkaXIgaXMgbm90IE5vbmU6CiAgICAgICAgZGZpbGUgPSBvcy5wYXRoLmpvaW4oZGRpciwgbmFtZSkKCiAgICBpZiBzdHJpcGRpciBpcyBub3QgTm9uZToKICAgICAgICBmdWxsbmFtZV9wYXJ0cyA9IGZ1bGxuYW1lLnNwbGl0KG9zLnBhdGguc2VwKQogICAgICAgIHN0cmlwZGlyX3BhcnRzID0gc3RyaXBkaXIuc3BsaXQob3MucGF0aC5zZXApCiAgICAgICAgZGRpcl9wYXJ0cyA9IGxpc3QoZnVsbG5hbWVfcGFydHMpCgogICAgICAgIGZvciBzcGFydCwgb3BhcnQgaW4gemlwKHN0cmlwZGlyX3BhcnRzLCBmdWxsbmFtZV9wYXJ0cyk6CiAgICAgICAgICAgIGlmIHNwYXJ0ID09IG9wYXJ0OgogICAgICAgICAgICAgICAgZGRpcl9wYXJ0cy5yZW1vdmUoc3BhcnQpCgogICAgICAgIGRmaWxlID0gb3MucGF0aC5qb2luKCpkZGlyX3BhcnRzKQoKICAgIGlmIHByZXBlbmRkaXIgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgZGZpbGUgaXMgTm9uZToKICAgICAgICAgICAgZGZpbGUgPSBvcy5wYXRoLmpvaW4ocHJlcGVuZGRpciwgZnVsbG5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGZpbGUgPSBvcy5wYXRoLmpvaW4ocHJlcGVuZGRpciwgZGZpbGUpCgogICAgaWYgaXNpbnN0YW5jZShvcHRpbWl6ZSwgaW50KToKICAgICAgICBvcHRpbWl6ZSA9IFtvcHRpbWl6ZV0KCiAgICAjIFVzZSBzZXQoKSB0byByZW1vdmUgZHVwbGljYXRlcy4KICAgICMgVXNlIHNvcnRlZCgpIHRvIGNyZWF0ZSBweWMgZmlsZXMgaW4gYSBkZXRlcm1pbmlzdGljIG9yZGVyLgogICAgb3B0aW1pemUgPSBzb3J0ZWQoc2V0KG9wdGltaXplKSkKCiAgICBpZiBoYXJkbGlua19kdXBlcyBhbmQgbGVuKG9wdGltaXplKSA8IDI6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSGFyZGxpbmtpbmcgb2YgZHVwbGljYXRlZCBieXRlY29kZSBtYWtlcyBzZW5zZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgZm9yIG1vcmUgdGhhbiBvbmUgb3B0aW1pemF0aW9uIGxldmVsIikKCiAgICBpZiByeCBpcyBub3QgTm9uZToKICAgICAgICBtbyA9IHJ4LnNlYXJjaChmdWxsbmFtZSkKICAgICAgICBpZiBtbzoKICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKCiAgICBpZiBsaW1pdF9zbF9kZXN0IGlzIG5vdCBOb25lIGFuZCBvcy5wYXRoLmlzbGluayhmdWxsbmFtZSk6CiAgICAgICAgaWYgUGF0aChsaW1pdF9zbF9kZXN0KS5yZXNvbHZlKCkgbm90IGluIFBhdGgoZnVsbG5hbWUpLnJlc29sdmUoKS5wYXJlbnRzOgogICAgICAgICAgICByZXR1cm4gc3VjY2VzcwoKICAgIG9wdF9jZmlsZXMgPSB7fQoKICAgIGlmIG9zLnBhdGguaXNmaWxlKGZ1bGxuYW1lKToKICAgICAgICBmb3Igb3B0X2xldmVsIGluIG9wdGltaXplOgogICAgICAgICAgICBpZiBsZWdhY3k6CiAgICAgICAgICAgICAgICBvcHRfY2ZpbGVzW29wdF9sZXZlbF0gPSBmdWxsbmFtZSArICdjJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgb3B0X2xldmVsID49IDA6CiAgICAgICAgICAgICAgICAgICAgb3B0ID0gb3B0X2xldmVsIGlmIG9wdF9sZXZlbCA+PSAxIGVsc2UgJycKICAgICAgICAgICAgICAgICAgICBjZmlsZSA9IChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgb3B0aW1pemF0aW9uPW9wdCkpCiAgICAgICAgICAgICAgICAgICAgb3B0X2NmaWxlc1tvcHRfbGV2ZWxdID0gY2ZpbGUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmdWxsbmFtZSkKICAgICAgICAgICAgICAgICAgICBvcHRfY2ZpbGVzW29wdF9sZXZlbF0gPSBjZmlsZQoKICAgICAgICBoZWFkLCB0YWlsID0gbmFtZVs6LTNdLCBuYW1lWy0zOl0KICAgICAgICBpZiB0YWlsID09ICcucHknOgogICAgICAgICAgICBpZiBub3QgZm9yY2U6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgbXRpbWUgPSBpbnQob3Muc3RhdChmdWxsbmFtZSkuc3RfbXRpbWUpCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0ID0gc3RydWN0LnBhY2soJzw0c0xMJywgaW1wb3J0bGliLnV0aWwuTUFHSUNfTlVNQkVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG10aW1lICYgMHhGRkZGX0ZGRkYpCiAgICAgICAgICAgICAgICAgICAgZm9yIGNmaWxlIGluIG9wdF9jZmlsZXMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihjZmlsZSwgJ3JiJykgYXMgY2hhbmRsZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCA9IGNoYW5kbGUucmVhZCgxMikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0ICE9IGFjdHVhbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgaWYgbm90IHF1aWV0OgogICAgICAgICAgICAgICAgcHJpbnQoJ0NvbXBpbGluZyB7IXJ9Li4uJy5mb3JtYXQoZnVsbG5hbWUpKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmb3IgaW5kZXgsIG9wdF9sZXZlbCBpbiBlbnVtZXJhdGUob3B0aW1pemUpOgogICAgICAgICAgICAgICAgICAgIGNmaWxlID0gb3B0X2NmaWxlc1tvcHRfbGV2ZWxdCiAgICAgICAgICAgICAgICAgICAgb2sgPSBweV9jb21waWxlLmNvbXBpbGUoZnVsbG5hbWUsIGNmaWxlLCBkZmlsZSwgVHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRfbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uX21vZGU9aW52YWxpZGF0aW9uX21vZGUpCiAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPiAwIGFuZCBoYXJkbGlua19kdXBlczoKICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNfY2ZpbGUgPSBvcHRfY2ZpbGVzW29wdGltaXplW2luZGV4IC0gMV1dCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVjbXAuY21wKGNmaWxlLCBwcmV2aW91c19jZmlsZSwgc2hhbGxvdz1GYWxzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoY2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saW5rKHByZXZpb3VzX2NmaWxlLCBjZmlsZSkKICAgICAgICAgICAgZXhjZXB0IHB5X2NvbXBpbGUuUHlDb21waWxlRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgogICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogRXJyb3IgY29tcGlsaW5nIHshcn0uLi4nLmZvcm1hdChmdWxsbmFtZSkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogJywgZW5kPScnKQogICAgICAgICAgICAgICAgIyBlc2NhcGUgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzIGluIG1zZwogICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBzeXMuc3Rkb3V0LmVuY29kaW5nIG9yIHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQogICAgICAgICAgICAgICAgbXNnID0gZXJyLm1zZy5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycz0nYmFja3NsYXNocmVwbGFjZScpLmRlY29kZShlbmNvZGluZykKICAgICAgICAgICAgICAgIHByaW50KG1zZykKICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgogICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogRXJyb3IgY29tcGlsaW5nIHshcn0uLi4nLmZvcm1hdChmdWxsbmFtZSkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogJywgZW5kPScnKQogICAgICAgICAgICAgICAgcHJpbnQoZS5fX2NsYXNzX18uX19uYW1lX18gKyAnOicsIGUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBvayA9PSAwOgogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgcmV0dXJuIHN1Y2Nlc3MKCmRlZiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9MSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLAogICAgICAgICAgICAgICAgIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEsCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uX21vZGU9Tm9uZSk6CiAgICAiIiJCeXRlLWNvbXBpbGUgYWxsIG1vZHVsZSBvbiBzeXMucGF0aC4KCiAgICBBcmd1bWVudHMgKGFsbCBvcHRpb25hbCk6CgogICAgc2tpcF9jdXJkaXI6IGlmIHRydWUsIHNraXAgY3VycmVudCBkaXJlY3RvcnkgKGRlZmF1bHQgVHJ1ZSkKICAgIG1heGxldmVsczogICBtYXggcmVjdXJzaW9uIGxldmVsIChkZWZhdWx0IDApCiAgICBmb3JjZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICBxdWlldDogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgMCkKICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICBvcHRpbWl6ZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgLTEpCiAgICBpbnZhbGlkYXRpb25fbW9kZTogYXMgZm9yIGNvbXBpbGVyX2RpcigpCiAgICAiIiIKICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgogICAgICAgIGlmIChub3QgZGlyIG9yIGRpciA9PSBvcy5jdXJkaXIpIGFuZCBza2lwX2N1cmRpcjoKICAgICAgICAgICAgaWYgcXVpZXQgPCAyOgogICAgICAgICAgICAgICAgcHJpbnQoJ1NraXBwaW5nIGN1cnJlbnQgZGlyZWN0b3J5JykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyBhbmQgY29tcGlsZV9kaXIoCiAgICAgICAgICAgICAgICBkaXIsCiAgICAgICAgICAgICAgICBtYXhsZXZlbHMsCiAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgZm9yY2UsCiAgICAgICAgICAgICAgICBxdWlldD1xdWlldCwKICAgICAgICAgICAgICAgIGxlZ2FjeT1sZWdhY3ksCiAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSwKICAgICAgICAgICAgICAgIGludmFsaWRhdGlvbl9tb2RlPWludmFsaWRhdGlvbl9tb2RlLAogICAgICAgICAgICApCiAgICByZXR1cm4gc3VjY2VzcwoKCmRlZiBtYWluKCk6CiAgICAiIiJTY3JpcHQgbWFpbiBwcm9ncmFtLiIiIgogICAgaW1wb3J0IGFyZ3BhcnNlCgogICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCiAgICAgICAgZGVzY3JpcHRpb249J1V0aWxpdGllcyB0byBzdXBwb3J0IGluc3RhbGxpbmcgUHl0aG9uIGxpYnJhcmllcy4nKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWwnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9MCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLCBkZXN0PSdtYXhsZXZlbHMnLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCByZWN1cnNlIGludG8gc3ViZGlyZWN0b3JpZXMiKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXInLCB0eXBlPWludCwgZGVzdD0ncmVjdXJzaW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ2NvbnRyb2wgdGhlIG1heGltdW0gcmVjdXJzaW9uIGxldmVsLiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZiBgLWxgIGFuZCBgLXJgIG9wdGlvbnMgYXJlIHNwZWNpZmllZCwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlbiBgLXJgIHRha2VzIHByZWNlZGVuY2UuJykpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J2ZvcmNlJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZm9yY2UgcmVidWlsZCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwIHRvIGRhdGUnKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCBhY3Rpb249J2NvdW50JywgZGVzdD0ncXVpZXQnLCBkZWZhdWx0PTAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCBvbmx5IGVycm9yIG1lc3NhZ2VzOyAtcXEgd2lsbCBzdXBwcmVzcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBlcnJvciBtZXNzYWdlcyBhcyB3ZWxsLicpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J2xlZ2FjeScsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3VzZSBsZWdhY3kgKHByZS1QRVAzMTQ3KSBjb21waWxlZCBmaWxlIGxvY2F0aW9ucycpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsIG1ldGF2YXI9J0RFU1RESVInLCAgZGVzdD0nZGRpcicsIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ2RpcmVjdG9yeSB0byBwcmVwZW5kIHRvIGZpbGUgcGF0aHMgZm9yIHVzZSBpbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21waWxlLXRpbWUgdHJhY2ViYWNrcyBhbmQgaW4gcnVudGltZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZWJhY2tzIGluIGNhc2VzIHdoZXJlIHRoZSBzb3VyY2UgZmlsZSBpcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmF2YWlsYWJsZScpKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCBtZXRhdmFyPSdTVFJJUERJUicsICBkZXN0PSdzdHJpcGRpcicsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ3BhcnQgb2YgcGF0aCB0byBsZWZ0LXN0cmlwIGZyb20gcGF0aCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBzb3VyY2UgZmlsZSAtIGZvciBleGFtcGxlIGJ1aWxkcm9vdC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYC1kYCBhbmQgYC1zYCBvcHRpb25zIGNhbm5vdCBiZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgdG9nZXRoZXIuJykpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcCcsIG1ldGF2YXI9J1BSRVBFTkRESVInLCAgZGVzdD0ncHJlcGVuZGRpcicsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ3BhdGggdG8gYWRkIGFzIHByZWZpeCB0byBwYXRoICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIHNvdXJjZSBmaWxlIC0gZm9yIGV4YW1wbGUgLyB0byBtYWtlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0IGFic29sdXRlIHdoZW4gc29tZSBwYXJ0IGlzIHJlbW92ZWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnkgYC1zYCBvcHRpb24uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2AtZGAgYW5kIGAtcGAgb3B0aW9ucyBjYW5ub3QgYmUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIHRvZ2V0aGVyLicpKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXgnLCBtZXRhdmFyPSdSRUdFWFAnLCBkZXN0PSdyeCcsIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ3NraXAgZmlsZXMgbWF0Y2hpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbjsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHJlZ2V4cCBpcyBzZWFyY2hlZCBmb3IgaW4gdGhlIGZ1bGwgcGF0aCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBlYWNoIGZpbGUgY29uc2lkZXJlZCBmb3IgY29tcGlsYXRpb24nKSkKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1pJywgbWV0YXZhcj0nRklMRScsIGRlc3Q9J2ZsaXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ2FkZCBhbGwgdGhlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRklMRSB0byB0aGUgbGlzdCBjb25zaWRlcmVkIGZvciBjb21waWxhdGlvbjsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWYgIi0iLCBuYW1lcyBhcmUgcmVhZCBmcm9tIHN0ZGluJykpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdjb21waWxlX2Rlc3QnLCBtZXRhdmFyPSdGSUxFfERJUicsIG5hcmdzPScqJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ3plcm8gb3IgbW9yZSBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gY29tcGlsZTsgaWYgbm8gYXJndW1lbnRzIGdpdmVuLCBkZWZhdWx0cyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgZXF1aXZhbGVudCBvZiAtbCBzeXMucGF0aCcpKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWonLCAnLS13b3JrZXJzJywgZGVmYXVsdD0xLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWludCwgaGVscD0nUnVuIGNvbXBpbGVhbGwgY29uY3VycmVudGx5JykKICAgIGludmFsaWRhdGlvbl9tb2RlcyA9IFttb2RlLm5hbWUubG93ZXIoKS5yZXBsYWNlKCdfJywgJy0nKQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtb2RlIGluIHB5X2NvbXBpbGUuUHljSW52YWxpZGF0aW9uTW9kZV0KICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taW52YWxpZGF0aW9uLW1vZGUnLAogICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPXNvcnRlZChpbnZhbGlkYXRpb25fbW9kZXMpLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnc2V0IC5weWMgaW52YWxpZGF0aW9uIG1vZGU7IGRlZmF1bHRzIHRvICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJjaGVja2VkLWhhc2giIGlmIHRoZSBTT1VSQ0VfREFURV9FUE9DSCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIGFuZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcidGltZXN0YW1wIiBvdGhlcndpc2UuJykpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbycsIGFjdGlvbj0nYXBwZW5kJywgdHlwZT1pbnQsIGRlc3Q9J29wdF9sZXZlbHMnLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnT3B0aW1pemF0aW9uIGxldmVscyB0byBydW4gY29tcGlsYXRpb24gd2l0aC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVmYXVsdCBpcyAtMSB3aGljaCB1c2VzIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2YgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBpdHNlbGYgKHNlZSAtTykuJykpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZScsIG1ldGF2YXI9J0RJUicsIGRlc3Q9J2xpbWl0X3NsX2Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdJZ25vcmUgc3ltbGlua3MgcG9pbnRpbmcgb3V0c2l0ZSBvZiB0aGUgRElSJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taGFyZGxpbmstZHVwZXMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdoYXJkbGlua19kdXBlcycsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0hhcmRsaW5rIGR1cGxpY2F0ZWQgcHljIGZpbGVzJykKCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgY29tcGlsZV9kZXN0cyA9IGFyZ3MuY29tcGlsZV9kZXN0CgogICAgaWYgYXJncy5yeDoKICAgICAgICBpbXBvcnQgcmUKICAgICAgICBhcmdzLnJ4ID0gcmUuY29tcGlsZShhcmdzLnJ4KQoKICAgIGlmIGFyZ3MubGltaXRfc2xfZGVzdCA9PSAiIjoKICAgICAgICBhcmdzLmxpbWl0X3NsX2Rlc3QgPSBOb25lCgogICAgaWYgYXJncy5yZWN1cnNpb24gaXMgbm90IE5vbmU6CiAgICAgICAgbWF4bGV2ZWxzID0gYXJncy5yZWN1cnNpb24KICAgIGVsc2U6CiAgICAgICAgbWF4bGV2ZWxzID0gYXJncy5tYXhsZXZlbHMKCiAgICBpZiBhcmdzLm9wdF9sZXZlbHMgaXMgTm9uZToKICAgICAgICBhcmdzLm9wdF9sZXZlbHMgPSBbLTFdCgogICAgaWYgbGVuKGFyZ3Mub3B0X2xldmVscykgPT0gMSBhbmQgYXJncy5oYXJkbGlua19kdXBlczoKICAgICAgICBwYXJzZXIuZXJyb3IoKCJIYXJkbGlua2luZyBvZiBkdXBsaWNhdGVkIGJ5dGVjb2RlIG1ha2VzIHNlbnNlICIKICAgICAgICAgICAgICAgICAgICAgICJvbmx5IGZvciBtb3JlIHRoYW4gb25lIG9wdGltaXphdGlvbiBsZXZlbC4iKSkKCiAgICBpZiBhcmdzLmRkaXIgaXMgbm90IE5vbmUgYW5kICgKICAgICAgICBhcmdzLnN0cmlwZGlyIGlzIG5vdCBOb25lIG9yIGFyZ3MucHJlcGVuZGRpciBpcyBub3QgTm9uZQogICAgKToKICAgICAgICBwYXJzZXIuZXJyb3IoIi1kIGNhbm5vdCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggLXMgb3IgLXAiKQoKICAgICMgaWYgZmxpc3QgaXMgcHJvdmlkZWQgdGhlbiBsb2FkIGl0CiAgICBpZiBhcmdzLmZsaXN0OgogICAgICAgIHRyeToKICAgICAgICAgICAgd2l0aCAoc3lzLnN0ZGluIGlmIGFyZ3MuZmxpc3Q9PSctJyBlbHNlCiAgICAgICAgICAgICAgICAgICAgb3BlbihhcmdzLmZsaXN0LCBlbmNvZGluZz0idXRmLTgiKSkgYXMgZjoKICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CiAgICAgICAgICAgICAgICAgICAgY29tcGlsZV9kZXN0cy5hcHBlbmQobGluZS5zdHJpcCgpKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBpZiBhcmdzLnF1aWV0IDwgMjoKICAgICAgICAgICAgICAgIHByaW50KCJFcnJvciByZWFkaW5nIGZpbGUgbGlzdCB7fSIuZm9ybWF0KGFyZ3MuZmxpc3QpKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBpZiBhcmdzLmludmFsaWRhdGlvbl9tb2RlOgogICAgICAgIGl2bF9tb2RlID0gYXJncy5pbnZhbGlkYXRpb25fbW9kZS5yZXBsYWNlKCctJywgJ18nKS51cHBlcigpCiAgICAgICAgaW52YWxpZGF0aW9uX21vZGUgPSBweV9jb21waWxlLlB5Y0ludmFsaWRhdGlvbk1vZGVbaXZsX21vZGVdCiAgICBlbHNlOgogICAgICAgIGludmFsaWRhdGlvbl9tb2RlID0gTm9uZQoKICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICB0cnk6CiAgICAgICAgaWYgY29tcGlsZV9kZXN0czoKICAgICAgICAgICAgZm9yIGRlc3QgaW4gY29tcGlsZV9kZXN0czoKICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGRlc3QpOgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb21waWxlX2ZpbGUoZGVzdCwgYXJncy5kZGlyLCBhcmdzLmZvcmNlLCBhcmdzLnJ4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5xdWlldCwgYXJncy5sZWdhY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25fbW9kZT1pbnZhbGlkYXRpb25fbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwZGlyPWFyZ3Muc3RyaXBkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kZGlyPWFyZ3MucHJlcGVuZGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPWFyZ3Mub3B0X2xldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0X3NsX2Rlc3Q9YXJncy5saW1pdF9zbF9kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFyZGxpbmtfZHVwZXM9YXJncy5oYXJkbGlua19kdXBlcyk6CiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9kaXIoZGVzdCwgbWF4bGV2ZWxzLCBhcmdzLmRkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuZm9yY2UsIGFyZ3MucngsIGFyZ3MucXVpZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5LCB3b3JrZXJzPWFyZ3Mud29ya2VycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uX21vZGU9aW52YWxpZGF0aW9uX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwZGlyPWFyZ3Muc3RyaXBkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmRkaXI9YXJncy5wcmVwZW5kZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1hcmdzLm9wdF9sZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0X3NsX2Rlc3Q9YXJncy5saW1pdF9zbF9kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJkbGlua19kdXBlcz1hcmdzLmhhcmRsaW5rX2R1cGVzKToKICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVfcGF0aChsZWdhY3k9YXJncy5sZWdhY3ksIGZvcmNlPWFyZ3MuZm9yY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9YXJncy5xdWlldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25fbW9kZT1pbnZhbGlkYXRpb25fbW9kZSkKICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICBpZiBhcmdzLnF1aWV0IDwgMjoKICAgICAgICAgICAgcHJpbnQoIlxuW2ludGVycnVwdGVkXSIpCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gVHJ1ZQoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBleGl0X3N0YXR1cyA9IGludChub3QgbWFpbigpKQogICAgc3lzLmV4aXQoZXhpdF9zdGF0dXMpClBLAwQUAAAAAAACIKNWjtahY9bXAADW1wAADwAAAGNvbmZpZ3BhcnNlci5weSIiIkNvbmZpZ3VyYXRpb24gZmlsZSBwYXJzZXIuCgpBIGNvbmZpZ3VyYXRpb24gZmlsZSBjb25zaXN0cyBvZiBzZWN0aW9ucywgbGVhZCBieSBhICJbc2VjdGlvbl0iIGhlYWRlciwKYW5kIGZvbGxvd2VkIGJ5ICJuYW1lOiB2YWx1ZSIgZW50cmllcywgd2l0aCBjb250aW51YXRpb25zIGFuZCBzdWNoIGluCnRoZSBzdHlsZSBvZiBSRkMgODIyLgoKSW50cmluc2ljIGRlZmF1bHRzIGNhbiBiZSBzcGVjaWZpZWQgYnkgcGFzc2luZyB0aGVtIGludG8gdGhlCkNvbmZpZ1BhcnNlciBjb25zdHJ1Y3RvciBhcyBhIGRpY3Rpb25hcnkuCgpjbGFzczoKCkNvbmZpZ1BhcnNlciAtLSByZXNwb25zaWJsZSBmb3IgcGFyc2luZyBhIGxpc3Qgb2YKICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgbWFuYWdpbmcgdGhlIHBhcnNlZCBkYXRhYmFzZS4KCiAgICBtZXRob2RzOgoKICAgIF9faW5pdF9fKGRlZmF1bHRzPU5vbmUsIGRpY3RfdHlwZT1fZGVmYXVsdF9kaWN0LCBhbGxvd19ub192YWx1ZT1GYWxzZSwKICAgICAgICAgICAgIGRlbGltaXRlcnM9KCc9JywgJzonKSwgY29tbWVudF9wcmVmaXhlcz0oJyMnLCAnOycpLAogICAgICAgICAgICAgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwgc3RyaWN0PVRydWUsCiAgICAgICAgICAgICBlbXB0eV9saW5lc19pbl92YWx1ZXM9VHJ1ZSwgZGVmYXVsdF9zZWN0aW9uPSdERUZBVUxUJywKICAgICAgICAgICAgIGludGVycG9sYXRpb249PHVuc2V0PiwgY29udmVydGVycz08dW5zZXQ+KToKCiAgICAgICAgQ3JlYXRlIHRoZSBwYXJzZXIuIFdoZW4gYGRlZmF1bHRzYCBpcyBnaXZlbiwgaXQgaXMgaW5pdGlhbGl6ZWQgaW50byB0aGUKICAgICAgICBkaWN0aW9uYXJ5IG9yIGludHJpbnNpYyBkZWZhdWx0cy4gVGhlIGtleXMgbXVzdCBiZSBzdHJpbmdzLCB0aGUgdmFsdWVzCiAgICAgICAgbXVzdCBiZSBhcHByb3ByaWF0ZSBmb3IgJSgpcyBzdHJpbmcgaW50ZXJwb2xhdGlvbi4KCiAgICAgICAgV2hlbiBgZGljdF90eXBlYCBpcyBnaXZlbiwgaXQgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgZGljdGlvbmFyeQogICAgICAgIG9iamVjdHMgZm9yIHRoZSBsaXN0IG9mIHNlY3Rpb25zLCBmb3IgdGhlIG9wdGlvbnMgd2l0aGluIGEgc2VjdGlvbiwgYW5kCiAgICAgICAgZm9yIHRoZSBkZWZhdWx0IHZhbHVlcy4KCiAgICAgICAgV2hlbiBgZGVsaW1pdGVyc2AgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgc2V0IG9mIHN1YnN0cmluZ3MKICAgICAgICB0aGF0IGRpdmlkZSBrZXlzIGZyb20gdmFsdWVzLgoKICAgICAgICBXaGVuIGBjb21tZW50X3ByZWZpeGVzYCBpcyBnaXZlbiwgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBzZXQgb2YKICAgICAgICBzdWJzdHJpbmdzIHRoYXQgcHJlZml4IGNvbW1lbnRzIGluIGVtcHR5IGxpbmVzLiBDb21tZW50cyBjYW4gYmUKICAgICAgICBpbmRlbnRlZC4KCiAgICAgICAgV2hlbiBgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXNgIGlzIGdpdmVuLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHNldCBvZgogICAgICAgIHN1YnN0cmluZ3MgdGhhdCBwcmVmaXggY29tbWVudHMgaW4gbm9uLWVtcHR5IGxpbmVzLgoKICAgICAgICBXaGVuIGBzdHJpY3RgIGlzIFRydWUsIHRoZSBwYXJzZXIgd29uJ3QgYWxsb3cgZm9yIGFueSBzZWN0aW9uIG9yIG9wdGlvbgogICAgICAgIGR1cGxpY2F0ZXMgd2hpbGUgcmVhZGluZyBmcm9tIGEgc2luZ2xlIHNvdXJjZSAoZmlsZSwgc3RyaW5nIG9yCiAgICAgICAgZGljdGlvbmFyeSkuIERlZmF1bHQgaXMgVHJ1ZS4KCiAgICAgICAgV2hlbiBgZW1wdHlfbGluZXNfaW5fdmFsdWVzYCBpcyBGYWxzZSAoZGVmYXVsdDogVHJ1ZSksIGVhY2ggZW1wdHkgbGluZQogICAgICAgIG1hcmtzIHRoZSBlbmQgb2YgYW4gb3B0aW9uLiBPdGhlcndpc2UsIGludGVybmFsIGVtcHR5IGxpbmVzIG9mCiAgICAgICAgYSBtdWx0aWxpbmUgb3B0aW9uIGFyZSBrZXB0IGFzIHBhcnQgb2YgdGhlIHZhbHVlLgoKICAgICAgICBXaGVuIGBhbGxvd19ub192YWx1ZWAgaXMgVHJ1ZSAoZGVmYXVsdDogRmFsc2UpLCBvcHRpb25zIHdpdGhvdXQKICAgICAgICB2YWx1ZXMgYXJlIGFjY2VwdGVkOyB0aGUgdmFsdWUgcHJlc2VudGVkIGZvciB0aGVzZSBpcyBOb25lLgoKICAgICAgICBXaGVuIGBkZWZhdWx0X3NlY3Rpb25gIGlzIGdpdmVuLCB0aGUgbmFtZSBvZiB0aGUgc3BlY2lhbCBzZWN0aW9uIGlzCiAgICAgICAgbmFtZWQgYWNjb3JkaW5nbHkuIEJ5IGRlZmF1bHQgaXQgaXMgY2FsbGVkIGBgIkRFRkFVTFQiYGAgYnV0IHRoaXMgY2FuCiAgICAgICAgYmUgY3VzdG9taXplZCB0byBwb2ludCB0byBhbnkgb3RoZXIgdmFsaWQgc2VjdGlvbiBuYW1lLiBJdHMgY3VycmVudAogICAgICAgIHZhbHVlIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlIGBgcGFyc2VyX2luc3RhbmNlLmRlZmF1bHRfc2VjdGlvbmBgCiAgICAgICAgYXR0cmlidXRlIGFuZCBtYXkgYmUgbW9kaWZpZWQgYXQgcnVudGltZS4KCiAgICAgICAgV2hlbiBgaW50ZXJwb2xhdGlvbmAgaXMgZ2l2ZW4sIGl0IHNob3VsZCBiZSBhbiBJbnRlcnBvbGF0aW9uIHN1YmNsYXNzCiAgICAgICAgaW5zdGFuY2UuIEl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgaGFuZGxlciBmb3Igb3B0aW9uIHZhbHVlCiAgICAgICAgcHJlLXByb2Nlc3Npbmcgd2hlbiB1c2luZyBnZXR0ZXJzLiBSYXdDb25maWdQYXJzZXIgb2JqZWN0cyBkb24ndCBkbwogICAgICAgIGFueSBzb3J0IG9mIGludGVycG9sYXRpb24sIHdoZXJlYXMgQ29uZmlnUGFyc2VyIHVzZXMgYW4gaW5zdGFuY2Ugb2YKICAgICAgICBCYXNpY0ludGVycG9sYXRpb24uIFRoZSBsaWJyYXJ5IGFsc28gcHJvdmlkZXMgYSBgYHpjLmJ1aWxkYm90YGAKICAgICAgICBpbnNwaXJlZCBFeHRlbmRlZEludGVycG9sYXRpb24gaW1wbGVtZW50YXRpb24uCgogICAgICAgIFdoZW4gYGNvbnZlcnRlcnNgIGlzIGdpdmVuLCBpdCBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IHdoZXJlIGVhY2gga2V5CiAgICAgICAgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiBhIHR5cGUgY29udmVydGVyIGFuZCBlYWNoIHZhbHVlIGlzIGEgY2FsbGFibGUKICAgICAgICBpbXBsZW1lbnRpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBzdHJpbmcgdG8gdGhlIGRlc2lyZWQgZGF0YXR5cGUuIEV2ZXJ5CiAgICAgICAgY29udmVydGVyIGdldHMgaXRzIGNvcnJlc3BvbmRpbmcgZ2V0KigpIG1ldGhvZCBvbiB0aGUgcGFyc2VyIG9iamVjdCBhbmQKICAgICAgICBzZWN0aW9uIHByb3hpZXMuCgogICAgc2VjdGlvbnMoKQogICAgICAgIFJldHVybiBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBuYW1lcywgc2FucyBERUZBVUxULgoKICAgIGhhc19zZWN0aW9uKHNlY3Rpb24pCiAgICAgICAgUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIHNlY3Rpb24gZXhpc3RzLgoKICAgIGhhc19vcHRpb24oc2VjdGlvbiwgb3B0aW9uKQogICAgICAgIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvcHRpb24gZXhpc3RzIGluIHRoZSBnaXZlbiBzZWN0aW9uLgoKICAgIG9wdGlvbnMoc2VjdGlvbikKICAgICAgICBSZXR1cm4gbGlzdCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBuYW1lZCBzZWN0aW9uLgoKICAgIHJlYWQoZmlsZW5hbWVzLCBlbmNvZGluZz1Ob25lKQogICAgICAgIFJlYWQgYW5kIHBhcnNlIHRoZSBpdGVyYWJsZSBvZiBuYW1lZCBjb25maWd1cmF0aW9uIGZpbGVzLCBnaXZlbiBieQogICAgICAgIG5hbWUuICBBIHNpbmdsZSBmaWxlbmFtZSBpcyBhbHNvIGFsbG93ZWQuICBOb24tZXhpc3RpbmcgZmlsZXMKICAgICAgICBhcmUgaWdub3JlZC4gIFJldHVybiBsaXN0IG9mIHN1Y2Nlc3NmdWxseSByZWFkIGZpbGVzLgoKICAgIHJlYWRfZmlsZShmLCBmaWxlbmFtZT1Ob25lKQogICAgICAgIFJlYWQgYW5kIHBhcnNlIG9uZSBjb25maWd1cmF0aW9uIGZpbGUsIGdpdmVuIGFzIGEgZmlsZSBvYmplY3QuCiAgICAgICAgVGhlIGZpbGVuYW1lIGRlZmF1bHRzIHRvIGYubmFtZTsgaXQgaXMgb25seSB1c2VkIGluIGVycm9yCiAgICAgICAgbWVzc2FnZXMgKGlmIGYgaGFzIG5vIGBuYW1lYCBhdHRyaWJ1dGUsIHRoZSBzdHJpbmcgYDw/Pz8+YCBpcyB1c2VkKS4KCiAgICByZWFkX3N0cmluZyhzdHJpbmcpCiAgICAgICAgUmVhZCBjb25maWd1cmF0aW9uIGZyb20gYSBnaXZlbiBzdHJpbmcuCgogICAgcmVhZF9kaWN0KGRpY3Rpb25hcnkpCiAgICAgICAgUmVhZCBjb25maWd1cmF0aW9uIGZyb20gYSBkaWN0aW9uYXJ5LiBLZXlzIGFyZSBzZWN0aW9uIG5hbWVzLAogICAgICAgIHZhbHVlcyBhcmUgZGljdGlvbmFyaWVzIHdpdGgga2V5cyBhbmQgdmFsdWVzIHRoYXQgc2hvdWxkIGJlIHByZXNlbnQKICAgICAgICBpbiB0aGUgc2VjdGlvbi4gSWYgdGhlIHVzZWQgZGljdGlvbmFyeSB0eXBlIHByZXNlcnZlcyBvcmRlciwgc2VjdGlvbnMKICAgICAgICBhbmQgdGhlaXIga2V5cyB3aWxsIGJlIGFkZGVkIGluIG9yZGVyLiBWYWx1ZXMgYXJlIGF1dG9tYXRpY2FsbHkKICAgICAgICBjb252ZXJ0ZWQgdG8gc3RyaW5ncy4KCiAgICBnZXQoc2VjdGlvbiwgb3B0aW9uLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwgZmFsbGJhY2s9X1VOU0VUKQogICAgICAgIFJldHVybiBhIHN0cmluZyB2YWx1ZSBmb3IgdGhlIG5hbWVkIG9wdGlvbi4gIEFsbCAlIGludGVycG9sYXRpb25zIGFyZQogICAgICAgIGV4cGFuZGVkIGluIHRoZSByZXR1cm4gdmFsdWVzLCBiYXNlZCBvbiB0aGUgZGVmYXVsdHMgcGFzc2VkIGludG8gdGhlCiAgICAgICAgY29uc3RydWN0b3IgYW5kIHRoZSBERUZBVUxUIHNlY3Rpb24uICBBZGRpdGlvbmFsIHN1YnN0aXR1dGlvbnMgbWF5IGJlCiAgICAgICAgcHJvdmlkZWQgdXNpbmcgdGhlIGB2YXJzYCBhcmd1bWVudCwgd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgd2hvc2UKICAgICAgICBjb250ZW50cyBvdmVycmlkZSBhbnkgcHJlLWV4aXN0aW5nIGRlZmF1bHRzLiBJZiBgb3B0aW9uYCBpcyBhIGtleSBpbgogICAgICAgIGB2YXJzYCwgdGhlIHZhbHVlIGZyb20gYHZhcnNgIGlzIHVzZWQuCgogICAgZ2V0aW50KHNlY3Rpb24sIG9wdGlvbnMsIHJhdz1GYWxzZSwgdmFycz1Ob25lLCBmYWxsYmFjaz1fVU5TRVQpCiAgICAgICAgTGlrZSBnZXQoKSwgYnV0IGNvbnZlcnQgdmFsdWUgdG8gYW4gaW50ZWdlci4KCiAgICBnZXRmbG9hdChzZWN0aW9uLCBvcHRpb25zLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwgZmFsbGJhY2s9X1VOU0VUKQogICAgICAgIExpa2UgZ2V0KCksIGJ1dCBjb252ZXJ0IHZhbHVlIHRvIGEgZmxvYXQuCgogICAgZ2V0Ym9vbGVhbihzZWN0aW9uLCBvcHRpb25zLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwgZmFsbGJhY2s9X1VOU0VUKQogICAgICAgIExpa2UgZ2V0KCksIGJ1dCBjb252ZXJ0IHZhbHVlIHRvIGEgYm9vbGVhbiAoY3VycmVudGx5IGNhc2UKICAgICAgICBpbnNlbnNpdGl2ZWx5IGRlZmluZWQgYXMgMCwgZmFsc2UsIG5vLCBvZmYgZm9yIEZhbHNlLCBhbmQgMSwgdHJ1ZSwKICAgICAgICB5ZXMsIG9uIGZvciBUcnVlKS4gIFJldHVybnMgRmFsc2Ugb3IgVHJ1ZS4KCiAgICBpdGVtcyhzZWN0aW9uPV9VTlNFVCwgcmF3PUZhbHNlLCB2YXJzPU5vbmUpCiAgICAgICAgSWYgc2VjdGlvbiBpcyBnaXZlbiwgcmV0dXJuIGEgbGlzdCBvZiB0dXBsZXMgd2l0aCAobmFtZSwgdmFsdWUpIGZvcgogICAgICAgIGVhY2ggb3B0aW9uIGluIHRoZSBzZWN0aW9uLiBPdGhlcndpc2UsIHJldHVybiBhIGxpc3Qgb2YgdHVwbGVzIHdpdGgKICAgICAgICAoc2VjdGlvbl9uYW1lLCBzZWN0aW9uX3Byb3h5KSBmb3IgZWFjaCBzZWN0aW9uLCBpbmNsdWRpbmcgREVGQVVMVFNFQ1QuCgogICAgcmVtb3ZlX3NlY3Rpb24oc2VjdGlvbikKICAgICAgICBSZW1vdmUgdGhlIGdpdmVuIGZpbGUgc2VjdGlvbiBhbmQgYWxsIGl0cyBvcHRpb25zLgoKICAgIHJlbW92ZV9vcHRpb24oc2VjdGlvbiwgb3B0aW9uKQogICAgICAgIFJlbW92ZSB0aGUgZ2l2ZW4gb3B0aW9uIGZyb20gdGhlIGdpdmVuIHNlY3Rpb24uCgogICAgc2V0KHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUpCiAgICAgICAgU2V0IHRoZSBnaXZlbiBvcHRpb24uCgogICAgd3JpdGUoZnAsIHNwYWNlX2Fyb3VuZF9kZWxpbWl0ZXJzPVRydWUpCiAgICAgICAgV3JpdGUgdGhlIGNvbmZpZ3VyYXRpb24gc3RhdGUgaW4gLmluaSBmb3JtYXQuIElmCiAgICAgICAgYHNwYWNlX2Fyb3VuZF9kZWxpbWl0ZXJzYCBpcyBUcnVlICh0aGUgZGVmYXVsdCksIGRlbGltaXRlcnMKICAgICAgICBiZXR3ZWVuIGtleXMgYW5kIHZhbHVlcyBhcmUgc3Vycm91bmRlZCBieSBzcGFjZXMuCiIiIgoKZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwIGFzIF9DaGFpbk1hcAppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCBpbwppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCBvcwppbXBvcnQgcmUKaW1wb3J0IHN5cwppbXBvcnQgd2FybmluZ3MKCl9fYWxsX18gPSBbIk5vU2VjdGlvbkVycm9yIiwgIkR1cGxpY2F0ZU9wdGlvbkVycm9yIiwgIkR1cGxpY2F0ZVNlY3Rpb25FcnJvciIsCiAgICAgICAgICAgIk5vT3B0aW9uRXJyb3IiLCAiSW50ZXJwb2xhdGlvbkVycm9yIiwgIkludGVycG9sYXRpb25EZXB0aEVycm9yIiwKICAgICAgICAgICAiSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvciIsICJJbnRlcnBvbGF0aW9uU3ludGF4RXJyb3IiLAogICAgICAgICAgICJQYXJzaW5nRXJyb3IiLCAiTWlzc2luZ1NlY3Rpb25IZWFkZXJFcnJvciIsCiAgICAgICAgICAgIkNvbmZpZ1BhcnNlciIsICJTYWZlQ29uZmlnUGFyc2VyIiwgIlJhd0NvbmZpZ1BhcnNlciIsCiAgICAgICAgICAgIkludGVycG9sYXRpb24iLCAiQmFzaWNJbnRlcnBvbGF0aW9uIiwgICJFeHRlbmRlZEludGVycG9sYXRpb24iLAogICAgICAgICAgICJMZWdhY3lJbnRlcnBvbGF0aW9uIiwgIlNlY3Rpb25Qcm94eSIsICJDb252ZXJ0ZXJNYXBwaW5nIiwKICAgICAgICAgICAiREVGQVVMVFNFQ1QiLCAiTUFYX0lOVEVSUE9MQVRJT05fREVQVEgiXQoKX2RlZmF1bHRfZGljdCA9IGRpY3QKREVGQVVMVFNFQ1QgPSAiREVGQVVMVCIKCk1BWF9JTlRFUlBPTEFUSU9OX0RFUFRIID0gMTAKCgoKIyBleGNlcHRpb24gY2xhc3NlcwpjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgIiIiQmFzZSBjbGFzcyBmb3IgQ29uZmlnUGFyc2VyIGV4Y2VwdGlvbnMuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZz0nJyk6CiAgICAgICAgc2VsZi5tZXNzYWdlID0gbXNnCiAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubWVzc2FnZQoKICAgIF9fc3RyX18gPSBfX3JlcHJfXwoKCmNsYXNzIE5vU2VjdGlvbkVycm9yKEVycm9yKToKICAgICIiIlJhaXNlZCB3aGVuIG5vIHNlY3Rpb24gbWF0Y2hlcyBhIHJlcXVlc3RlZCBvcHRpb24uIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlY3Rpb24pOgogICAgICAgIEVycm9yLl9faW5pdF9fKHNlbGYsICdObyBzZWN0aW9uOiAlcicgJSAoc2VjdGlvbiwpKQogICAgICAgIHNlbGYuc2VjdGlvbiA9IHNlY3Rpb24KICAgICAgICBzZWxmLmFyZ3MgPSAoc2VjdGlvbiwgKQoKCmNsYXNzIER1cGxpY2F0ZVNlY3Rpb25FcnJvcihFcnJvcik6CiAgICAiIiJSYWlzZWQgd2hlbiBhIHNlY3Rpb24gaXMgcmVwZWF0ZWQgaW4gYW4gaW5wdXQgc291cmNlLgoKICAgIFBvc3NpYmxlIHJlcGV0aXRpb25zIHRoYXQgcmFpc2UgdGhpcyBleGNlcHRpb24gYXJlOiBtdWx0aXBsZSBjcmVhdGlvbgogICAgdXNpbmcgdGhlIEFQSSBvciBpbiBzdHJpY3QgcGFyc2VycyB3aGVuIGEgc2VjdGlvbiBpcyBmb3VuZCBtb3JlIHRoYW4gb25jZQogICAgaW4gYSBzaW5nbGUgaW5wdXQgZmlsZSwgc3RyaW5nIG9yIGRpY3Rpb25hcnkuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc2VjdGlvbiwgc291cmNlPU5vbmUsIGxpbmVubz1Ob25lKToKICAgICAgICBtc2cgPSBbcmVwcihzZWN0aW9uKSwgIiBhbHJlYWR5IGV4aXN0cyJdCiAgICAgICAgaWYgc291cmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBtZXNzYWdlID0gWyJXaGlsZSByZWFkaW5nIGZyb20gIiwgcmVwcihzb3VyY2UpXQogICAgICAgICAgICBpZiBsaW5lbm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZCgiIFtsaW5lIHswOjJkfV0iLmZvcm1hdChsaW5lbm8pKQogICAgICAgICAgICBtZXNzYWdlLmFwcGVuZCgiOiBzZWN0aW9uICIpCiAgICAgICAgICAgIG1lc3NhZ2UuZXh0ZW5kKG1zZykKICAgICAgICAgICAgbXNnID0gbWVzc2FnZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1zZy5pbnNlcnQoMCwgIlNlY3Rpb24gIikKICAgICAgICBFcnJvci5fX2luaXRfXyhzZWxmLCAiIi5qb2luKG1zZykpCiAgICAgICAgc2VsZi5zZWN0aW9uID0gc2VjdGlvbgogICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCiAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KICAgICAgICBzZWxmLmFyZ3MgPSAoc2VjdGlvbiwgc291cmNlLCBsaW5lbm8pCgoKY2xhc3MgRHVwbGljYXRlT3B0aW9uRXJyb3IoRXJyb3IpOgogICAgIiIiUmFpc2VkIGJ5IHN0cmljdCBwYXJzZXJzIHdoZW4gYW4gb3B0aW9uIGlzIHJlcGVhdGVkIGluIGFuIGlucHV0IHNvdXJjZS4KCiAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIHJhaXNlcyB0aGlzIGV4Y2VwdGlvbiBvbmx5IHdoZW4gYW4gb3B0aW9uIGlzIGZvdW5kCiAgICBtb3JlIHRoYW4gb25jZSBpbiBhIHNpbmdsZSBmaWxlLCBzdHJpbmcgb3IgZGljdGlvbmFyeS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZWN0aW9uLCBvcHRpb24sIHNvdXJjZT1Ob25lLCBsaW5lbm89Tm9uZSk6CiAgICAgICAgbXNnID0gW3JlcHIob3B0aW9uKSwgIiBpbiBzZWN0aW9uICIsIHJlcHIoc2VjdGlvbiksCiAgICAgICAgICAgICAgICIgYWxyZWFkeSBleGlzdHMiXQogICAgICAgIGlmIHNvdXJjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgbWVzc2FnZSA9IFsiV2hpbGUgcmVhZGluZyBmcm9tICIsIHJlcHIoc291cmNlKV0KICAgICAgICAgICAgaWYgbGluZW5vIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQoIiBbbGluZSB7MDoyZH1dIi5mb3JtYXQobGluZW5vKSkKICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQoIjogb3B0aW9uICIpCiAgICAgICAgICAgIG1lc3NhZ2UuZXh0ZW5kKG1zZykKICAgICAgICAgICAgbXNnID0gbWVzc2FnZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1zZy5pbnNlcnQoMCwgIk9wdGlvbiAiKQogICAgICAgIEVycm9yLl9faW5pdF9fKHNlbGYsICIiLmpvaW4obXNnKSkKICAgICAgICBzZWxmLnNlY3Rpb24gPSBzZWN0aW9uCiAgICAgICAgc2VsZi5vcHRpb24gPSBvcHRpb24KICAgICAgICBzZWxmLnNvdXJjZSA9IHNvdXJjZQogICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgc2VsZi5hcmdzID0gKHNlY3Rpb24sIG9wdGlvbiwgc291cmNlLCBsaW5lbm8pCgoKY2xhc3MgTm9PcHRpb25FcnJvcihFcnJvcik6CiAgICAiIiJBIHJlcXVlc3RlZCBvcHRpb24gd2FzIG5vdCBmb3VuZC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9uLCBzZWN0aW9uKToKICAgICAgICBFcnJvci5fX2luaXRfXyhzZWxmLCAiTm8gb3B0aW9uICVyIGluIHNlY3Rpb246ICVyIiAlCiAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbiwgc2VjdGlvbikpCiAgICAgICAgc2VsZi5vcHRpb24gPSBvcHRpb24KICAgICAgICBzZWxmLnNlY3Rpb24gPSBzZWN0aW9uCiAgICAgICAgc2VsZi5hcmdzID0gKG9wdGlvbiwgc2VjdGlvbikKCgpjbGFzcyBJbnRlcnBvbGF0aW9uRXJyb3IoRXJyb3IpOgogICAgIiIiQmFzZSBjbGFzcyBmb3IgaW50ZXJwb2xhdGlvbi1yZWxhdGVkIGV4Y2VwdGlvbnMuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbiwgc2VjdGlvbiwgbXNnKToKICAgICAgICBFcnJvci5fX2luaXRfXyhzZWxmLCBtc2cpCiAgICAgICAgc2VsZi5vcHRpb24gPSBvcHRpb24KICAgICAgICBzZWxmLnNlY3Rpb24gPSBzZWN0aW9uCiAgICAgICAgc2VsZi5hcmdzID0gKG9wdGlvbiwgc2VjdGlvbiwgbXNnKQoKCmNsYXNzIEludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IoSW50ZXJwb2xhdGlvbkVycm9yKToKICAgICIiIkEgc3RyaW5nIHN1YnN0aXR1dGlvbiByZXF1aXJlZCBhIHNldHRpbmcgd2hpY2ggd2FzIG5vdCBhdmFpbGFibGUuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCByZWZlcmVuY2UpOgogICAgICAgIG1zZyA9ICgiQmFkIHZhbHVlIHN1YnN0aXR1dGlvbjogb3B0aW9uIHshcn0gaW4gc2VjdGlvbiB7IXJ9IGNvbnRhaW5zICIKICAgICAgICAgICAgICAgImFuIGludGVycG9sYXRpb24ga2V5IHshcn0gd2hpY2ggaXMgbm90IGEgdmFsaWQgb3B0aW9uIG5hbWUuICIKICAgICAgICAgICAgICAgIlJhdyB2YWx1ZTogeyFyfSIuZm9ybWF0KG9wdGlvbiwgc2VjdGlvbiwgcmVmZXJlbmNlLCByYXd2YWwpKQogICAgICAgIEludGVycG9sYXRpb25FcnJvci5fX2luaXRfXyhzZWxmLCBvcHRpb24sIHNlY3Rpb24sIG1zZykKICAgICAgICBzZWxmLnJlZmVyZW5jZSA9IHJlZmVyZW5jZQogICAgICAgIHNlbGYuYXJncyA9IChvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCwgcmVmZXJlbmNlKQoKCmNsYXNzIEludGVycG9sYXRpb25TeW50YXhFcnJvcihJbnRlcnBvbGF0aW9uRXJyb3IpOgogICAgIiIiUmFpc2VkIHdoZW4gdGhlIHNvdXJjZSB0ZXh0IGNvbnRhaW5zIGludmFsaWQgc3ludGF4LgoKICAgIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmFpc2VzIHRoaXMgZXhjZXB0aW9uIHdoZW4gdGhlIHNvdXJjZSB0ZXh0IGludG8KICAgIHdoaWNoIHN1YnN0aXR1dGlvbnMgYXJlIG1hZGUgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgcmVxdWlyZWQgc3ludGF4LgogICAgIiIiCgoKY2xhc3MgSW50ZXJwb2xhdGlvbkRlcHRoRXJyb3IoSW50ZXJwb2xhdGlvbkVycm9yKToKICAgICIiIlJhaXNlZCB3aGVuIHN1YnN0aXR1dGlvbnMgYXJlIG5lc3RlZCB0b28gZGVlcGx5LiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCk6CiAgICAgICAgbXNnID0gKCJSZWN1cnNpb24gbGltaXQgZXhjZWVkZWQgaW4gdmFsdWUgc3Vic3RpdHV0aW9uOiBvcHRpb24geyFyfSAiCiAgICAgICAgICAgICAgICJpbiBzZWN0aW9uIHshcn0gY29udGFpbnMgYW4gaW50ZXJwb2xhdGlvbiBrZXkgd2hpY2ggIgogICAgICAgICAgICAgICAiY2Fubm90IGJlIHN1YnN0aXR1dGVkIGluIHt9IHN0ZXBzLiBSYXcgdmFsdWU6IHshcn0iCiAgICAgICAgICAgICAgICIiLmZvcm1hdChvcHRpb24sIHNlY3Rpb24sIE1BWF9JTlRFUlBPTEFUSU9OX0RFUFRILAogICAgICAgICAgICAgICAgICAgICAgICAgcmF3dmFsKSkKICAgICAgICBJbnRlcnBvbGF0aW9uRXJyb3IuX19pbml0X18oc2VsZiwgb3B0aW9uLCBzZWN0aW9uLCBtc2cpCiAgICAgICAgc2VsZi5hcmdzID0gKG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsKQoKCmNsYXNzIFBhcnNpbmdFcnJvcihFcnJvcik6CiAgICAiIiJSYWlzZWQgd2hlbiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBkb2VzIG5vdCBmb2xsb3cgbGVnYWwgc3ludGF4LiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb3VyY2U9Tm9uZSwgZmlsZW5hbWU9Tm9uZSk6CiAgICAgICAgIyBFeGFjdGx5IG9uZSBvZiBgc291cmNlJy9gZmlsZW5hbWUnIGFyZ3VtZW50cyBoYXMgdG8gYmUgZ2l2ZW4uCiAgICAgICAgIyBgZmlsZW5hbWUnIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAgICAgaWYgZmlsZW5hbWUgYW5kIHNvdXJjZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBgZmlsZW5hbWUnIGFuZCBgc291cmNlJy4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgYHNvdXJjZScuIikKICAgICAgICBlbGlmIG5vdCBmaWxlbmFtZSBhbmQgbm90IHNvdXJjZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUmVxdWlyZWQgYXJndW1lbnQgYHNvdXJjZScgbm90IGdpdmVuLiIpCiAgICAgICAgZWxpZiBmaWxlbmFtZToKICAgICAgICAgICAgc291cmNlID0gZmlsZW5hbWUKICAgICAgICBFcnJvci5fX2luaXRfXyhzZWxmLCAnU291cmNlIGNvbnRhaW5zIHBhcnNpbmcgZXJyb3JzOiAlcicgJSBzb3VyY2UpCiAgICAgICAgc2VsZi5zb3VyY2UgPSBzb3VyY2UKICAgICAgICBzZWxmLmVycm9ycyA9IFtdCiAgICAgICAgc2VsZi5hcmdzID0gKHNvdXJjZSwgKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGZpbGVuYW1lKHNlbGYpOgogICAgICAgICIiIkRlcHJlY2F0ZWQsIHVzZSBgc291cmNlJy4iIiIKICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAiVGhlICdmaWxlbmFtZScgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy4xMi4gIgogICAgICAgICAgICAiVXNlICdzb3VyY2UnIGluc3RlYWQuIiwKICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIKICAgICAgICApCiAgICAgICAgcmV0dXJuIHNlbGYuc291cmNlCgogICAgQGZpbGVuYW1lLnNldHRlcgogICAgZGVmIGZpbGVuYW1lKHNlbGYsIHZhbHVlKToKICAgICAgICAiIiJEZXByZWNhdGVkLCB1c2VyIGBzb3VyY2UnLiIiIgogICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICJUaGUgJ2ZpbGVuYW1lJyBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjEyLiAiCiAgICAgICAgICAgICJVc2UgJ3NvdXJjZScgaW5zdGVhZC4iLAogICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MgogICAgICAgICkKICAgICAgICBzZWxmLnNvdXJjZSA9IHZhbHVlCgogICAgZGVmIGFwcGVuZChzZWxmLCBsaW5lbm8sIGxpbmUpOgogICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZCgobGluZW5vLCBsaW5lKSkKICAgICAgICBzZWxmLm1lc3NhZ2UgKz0gJ1xuXHRbbGluZSAlMmRdOiAlcycgJSAobGluZW5vLCBsaW5lKQoKCmNsYXNzIE1pc3NpbmdTZWN0aW9uSGVhZGVyRXJyb3IoUGFyc2luZ0Vycm9yKToKICAgICIiIlJhaXNlZCB3aGVuIGEga2V5LXZhbHVlIHBhaXIgaXMgZm91bmQgYmVmb3JlIGFueSBzZWN0aW9uIGhlYWRlci4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIGxpbmVubywgbGluZSk6CiAgICAgICAgRXJyb3IuX19pbml0X18oCiAgICAgICAgICAgIHNlbGYsCiAgICAgICAgICAgICdGaWxlIGNvbnRhaW5zIG5vIHNlY3Rpb24gaGVhZGVycy5cbmZpbGU6ICVyLCBsaW5lOiAlZFxuJXInICUKICAgICAgICAgICAgKGZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpKQogICAgICAgIHNlbGYuc291cmNlID0gZmlsZW5hbWUKICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwogICAgICAgIHNlbGYubGluZSA9IGxpbmUKICAgICAgICBzZWxmLmFyZ3MgPSAoZmlsZW5hbWUsIGxpbmVubywgbGluZSkKCgojIFVzZWQgaW4gcGFyc2VyIGdldHRlcnMgdG8gaW5kaWNhdGUgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIHdoZW4gYSBzcGVjaWZpYwojIG9wdGlvbiBpcyBub3QgZm91bmQgaXQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uLiBDcmVhdGVkIHRvIGVuYWJsZSBgTm9uZWAgYXMKIyBhIHZhbGlkIGZhbGxiYWNrIHZhbHVlLgpfVU5TRVQgPSBvYmplY3QoKQoKCmNsYXNzIEludGVycG9sYXRpb246CiAgICAiIiJEdW1teSBpbnRlcnBvbGF0aW9uIHRoYXQgcGFzc2VzIHRoZSB2YWx1ZSB0aHJvdWdoIHdpdGggbm8gY2hhbmdlcy4iIiIKCiAgICBkZWYgYmVmb3JlX2dldChzZWxmLCBwYXJzZXIsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUsIGRlZmF1bHRzKToKICAgICAgICByZXR1cm4gdmFsdWUKCiAgICBkZWYgYmVmb3JlX3NldChzZWxmLCBwYXJzZXIsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUpOgogICAgICAgIHJldHVybiB2YWx1ZQoKICAgIGRlZiBiZWZvcmVfcmVhZChzZWxmLCBwYXJzZXIsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUpOgogICAgICAgIHJldHVybiB2YWx1ZQoKICAgIGRlZiBiZWZvcmVfd3JpdGUoc2VsZiwgcGFyc2VyLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlKToKICAgICAgICByZXR1cm4gdmFsdWUKCgpjbGFzcyBCYXNpY0ludGVycG9sYXRpb24oSW50ZXJwb2xhdGlvbik6CiAgICAiIiJJbnRlcnBvbGF0aW9uIGFzIGltcGxlbWVudGVkIGluIHRoZSBjbGFzc2ljIENvbmZpZ1BhcnNlci4KCiAgICBUaGUgb3B0aW9uIHZhbHVlcyBjYW4gY29udGFpbiBmb3JtYXQgc3RyaW5ncyB3aGljaCByZWZlciB0byBvdGhlciB2YWx1ZXMgaW4KICAgIHRoZSBzYW1lIHNlY3Rpb24sIG9yIHZhbHVlcyBpbiB0aGUgc3BlY2lhbCBkZWZhdWx0IHNlY3Rpb24uCgogICAgRm9yIGV4YW1wbGU6CgogICAgICAgIHNvbWV0aGluZzogJShkaXIpcy93aGF0ZXZlcgoKICAgIHdvdWxkIHJlc29sdmUgdGhlICIlKGRpcilzIiB0byB0aGUgdmFsdWUgb2YgZGlyLiAgQWxsIHJlZmVyZW5jZQogICAgZXhwYW5zaW9ucyBhcmUgZG9uZSBsYXRlLCBvbiBkZW1hbmQuIElmIGEgdXNlciBuZWVkcyB0byB1c2UgYSBiYXJlICUgaW4KICAgIGEgY29uZmlndXJhdGlvbiBmaWxlLCBzaGUgY2FuIGVzY2FwZSBpdCBieSB3cml0aW5nICUlLiBPdGhlciAlIHVzYWdlCiAgICBpcyBjb25zaWRlcmVkIGEgdXNlciBlcnJvciBhbmQgcmFpc2VzIGBJbnRlcnBvbGF0aW9uU3ludGF4RXJyb3JgLiIiIgoKICAgIF9LRVlDUkUgPSByZS5jb21waWxlKHIiJVwoKFteKV0rKVwpcyIpCgogICAgZGVmIGJlZm9yZV9nZXQoc2VsZiwgcGFyc2VyLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlLCBkZWZhdWx0cyk6CiAgICAgICAgTCA9IFtdCiAgICAgICAgc2VsZi5faW50ZXJwb2xhdGVfc29tZShwYXJzZXIsIG9wdGlvbiwgTCwgdmFsdWUsIHNlY3Rpb24sIGRlZmF1bHRzLCAxKQogICAgICAgIHJldHVybiAnJy5qb2luKEwpCgogICAgZGVmIGJlZm9yZV9zZXQoc2VsZiwgcGFyc2VyLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlKToKICAgICAgICB0bXBfdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCclJScsICcnKSAjIGVzY2FwZWQgcGVyY2VudCBzaWducwogICAgICAgIHRtcF92YWx1ZSA9IHNlbGYuX0tFWUNSRS5zdWIoJycsIHRtcF92YWx1ZSkgIyB2YWxpZCBzeW50YXgKICAgICAgICBpZiAnJScgaW4gdG1wX3ZhbHVlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGludGVycG9sYXRpb24gc3ludGF4IGluICVyIGF0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb24gJWQiICUgKHZhbHVlLCB0bXBfdmFsdWUuZmluZCgnJScpKSkKICAgICAgICByZXR1cm4gdmFsdWUKCiAgICBkZWYgX2ludGVycG9sYXRlX3NvbWUoc2VsZiwgcGFyc2VyLCBvcHRpb24sIGFjY3VtLCByZXN0LCBzZWN0aW9uLCBtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgpOgogICAgICAgIHJhd3ZhbCA9IHBhcnNlci5nZXQoc2VjdGlvbiwgb3B0aW9uLCByYXc9VHJ1ZSwgZmFsbGJhY2s9cmVzdCkKICAgICAgICBpZiBkZXB0aCA+IE1BWF9JTlRFUlBPTEFUSU9OX0RFUFRIOgogICAgICAgICAgICByYWlzZSBJbnRlcnBvbGF0aW9uRGVwdGhFcnJvcihvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCkKICAgICAgICB3aGlsZSByZXN0OgogICAgICAgICAgICBwID0gcmVzdC5maW5kKCIlIikKICAgICAgICAgICAgaWYgcCA8IDA6CiAgICAgICAgICAgICAgICBhY2N1bS5hcHBlbmQocmVzdCkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpZiBwID4gMDoKICAgICAgICAgICAgICAgIGFjY3VtLmFwcGVuZChyZXN0WzpwXSkKICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0W3A6XQogICAgICAgICAgICAjIHAgaXMgbm8gbG9uZ2VyIHVzZWQKICAgICAgICAgICAgYyA9IHJlc3RbMToyXQogICAgICAgICAgICBpZiBjID09ICIlIjoKICAgICAgICAgICAgICAgIGFjY3VtLmFwcGVuZCgiJSIpCiAgICAgICAgICAgICAgICByZXN0ID0gcmVzdFsyOl0KICAgICAgICAgICAgZWxpZiBjID09ICIoIjoKICAgICAgICAgICAgICAgIG0gPSBzZWxmLl9LRVlDUkUubWF0Y2gocmVzdCkKICAgICAgICAgICAgICAgIGlmIG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnBvbGF0aW9uU3ludGF4RXJyb3Iob3B0aW9uLCBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGludGVycG9sYXRpb24gdmFyaWFibGUgcmVmZXJlbmNlICVyIiAlIHJlc3QpCiAgICAgICAgICAgICAgICB2YXIgPSBwYXJzZXIub3B0aW9ueGZvcm0obS5ncm91cCgxKSkKICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0W20uZW5kKCk6XQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHYgPSBtYXBbdmFyXQogICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCB2YXIpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgaWYgIiUiIGluIHY6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGVfc29tZShwYXJzZXIsIG9wdGlvbiwgYWNjdW0sIHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBtYXAsIGRlcHRoICsgMSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYWNjdW0uYXBwZW5kKHYpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnBvbGF0aW9uU3ludGF4RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICInJSUnIG11c3QgYmUgZm9sbG93ZWQgYnkgJyUlJyBvciAnKCcsICIKICAgICAgICAgICAgICAgICAgICAiZm91bmQ6ICVyIiAlIChyZXN0LCkpCgoKY2xhc3MgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKEludGVycG9sYXRpb24pOgogICAgIiIiQWR2YW5jZWQgdmFyaWFudCBvZiBpbnRlcnBvbGF0aW9uLCBzdXBwb3J0cyB0aGUgc3ludGF4IHVzZWQgYnkKICAgIGB6Yy5idWlsZG91dGAuIEVuYWJsZXMgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHNlY3Rpb25zLiIiIgoKICAgIF9LRVlDUkUgPSByZS5jb21waWxlKHIiXCRceyhbXn1dKylcfSIpCgogICAgZGVmIGJlZm9yZV9nZXQoc2VsZiwgcGFyc2VyLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlLCBkZWZhdWx0cyk6CiAgICAgICAgTCA9IFtdCiAgICAgICAgc2VsZi5faW50ZXJwb2xhdGVfc29tZShwYXJzZXIsIG9wdGlvbiwgTCwgdmFsdWUsIHNlY3Rpb24sIGRlZmF1bHRzLCAxKQogICAgICAgIHJldHVybiAnJy5qb2luKEwpCgogICAgZGVmIGJlZm9yZV9zZXQoc2VsZiwgcGFyc2VyLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlKToKICAgICAgICB0bXBfdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJCcsICcnKSAjIGVzY2FwZWQgZG9sbGFyIHNpZ25zCiAgICAgICAgdG1wX3ZhbHVlID0gc2VsZi5fS0VZQ1JFLnN1YignJywgdG1wX3ZhbHVlKSAjIHZhbGlkIHN5bnRheAogICAgICAgIGlmICckJyBpbiB0bXBfdmFsdWU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgaW50ZXJwb2xhdGlvbiBzeW50YXggaW4gJXIgYXQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbiAlZCIgJSAodmFsdWUsIHRtcF92YWx1ZS5maW5kKCckJykpKQogICAgICAgIHJldHVybiB2YWx1ZQoKICAgIGRlZiBfaW50ZXJwb2xhdGVfc29tZShzZWxmLCBwYXJzZXIsIG9wdGlvbiwgYWNjdW0sIHJlc3QsIHNlY3Rpb24sIG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCk6CiAgICAgICAgcmF3dmFsID0gcGFyc2VyLmdldChzZWN0aW9uLCBvcHRpb24sIHJhdz1UcnVlLCBmYWxsYmFjaz1yZXN0KQogICAgICAgIGlmIGRlcHRoID4gTUFYX0lOVEVSUE9MQVRJT05fREVQVEg6CiAgICAgICAgICAgIHJhaXNlIEludGVycG9sYXRpb25EZXB0aEVycm9yKG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsKQogICAgICAgIHdoaWxlIHJlc3Q6CiAgICAgICAgICAgIHAgPSByZXN0LmZpbmQoIiQiKQogICAgICAgICAgICBpZiBwIDwgMDoKICAgICAgICAgICAgICAgIGFjY3VtLmFwcGVuZChyZXN0KQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmIHAgPiAwOgogICAgICAgICAgICAgICAgYWNjdW0uYXBwZW5kKHJlc3RbOnBdKQogICAgICAgICAgICAgICAgcmVzdCA9IHJlc3RbcDpdCiAgICAgICAgICAgICMgcCBpcyBubyBsb25nZXIgdXNlZAogICAgICAgICAgICBjID0gcmVzdFsxOjJdCiAgICAgICAgICAgIGlmIGMgPT0gIiQiOgogICAgICAgICAgICAgICAgYWNjdW0uYXBwZW5kKCIkIikKICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0WzI6XQogICAgICAgICAgICBlbGlmIGMgPT0gInsiOgogICAgICAgICAgICAgICAgbSA9IHNlbGYuX0tFWUNSRS5tYXRjaChyZXN0KQogICAgICAgICAgICAgICAgaWYgbSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEludGVycG9sYXRpb25TeW50YXhFcnJvcihvcHRpb24sIHNlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgaW50ZXJwb2xhdGlvbiB2YXJpYWJsZSByZWZlcmVuY2UgJXIiICUgcmVzdCkKICAgICAgICAgICAgICAgIHBhdGggPSBtLmdyb3VwKDEpLnNwbGl0KCc6JykKICAgICAgICAgICAgICAgIHJlc3QgPSByZXN0W20uZW5kKCk6XQogICAgICAgICAgICAgICAgc2VjdCA9IHNlY3Rpb24KICAgICAgICAgICAgICAgIG9wdCA9IG9wdGlvbgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGlmIGxlbihwYXRoKSA9PSAxOgogICAgICAgICAgICAgICAgICAgICAgICBvcHQgPSBwYXJzZXIub3B0aW9ueGZvcm0ocGF0aFswXSkKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IG1hcFtvcHRdCiAgICAgICAgICAgICAgICAgICAgZWxpZiBsZW4ocGF0aCkgPT0gMjoKICAgICAgICAgICAgICAgICAgICAgICAgc2VjdCA9IHBhdGhbMF0KICAgICAgICAgICAgICAgICAgICAgICAgb3B0ID0gcGFyc2VyLm9wdGlvbnhmb3JtKHBhdGhbMV0pCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBwYXJzZXIuZ2V0KHNlY3QsIG9wdCwgcmF3PVRydWUpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW50ZXJwb2xhdGlvblN5bnRheEVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUgdGhhbiBvbmUgJzonIGZvdW5kOiAlciIgJSAocmVzdCwpKQogICAgICAgICAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgTm9TZWN0aW9uRXJyb3IsIE5vT3B0aW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCAiOiIuam9pbihwYXRoKSkgZnJvbSBOb25lCiAgICAgICAgICAgICAgICBpZiAiJCIgaW4gdjoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnRlcnBvbGF0ZV9zb21lKHBhcnNlciwgb3B0LCBhY2N1bSwgdiwgc2VjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QocGFyc2VyLml0ZW1zKHNlY3QsIHJhdz1UcnVlKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCArIDEpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGFjY3VtLmFwcGVuZCh2KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgSW50ZXJwb2xhdGlvblN5bnRheEVycm9yKAogICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwKICAgICAgICAgICAgICAgICAgICAiJyQnIG11c3QgYmUgZm9sbG93ZWQgYnkgJyQnIG9yICd7JywgIgogICAgICAgICAgICAgICAgICAgICJmb3VuZDogJXIiICUgKHJlc3QsKSkKCgpjbGFzcyBMZWdhY3lJbnRlcnBvbGF0aW9uKEludGVycG9sYXRpb24pOgogICAgIiIiRGVwcmVjYXRlZCBpbnRlcnBvbGF0aW9uIHVzZWQgaW4gb2xkIHZlcnNpb25zIG9mIENvbmZpZ1BhcnNlci4KICAgIFVzZSBCYXNpY0ludGVycG9sYXRpb24gb3IgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGluc3RlYWQuIiIiCgogICAgX0tFWUNSRSA9IHJlLmNvbXBpbGUociIlXCgoW14pXSopXClzfC4iKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICJMZWdhY3lJbnRlcnBvbGF0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuMiAiCiAgICAgICAgICAgICJhbmQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGNvbmZpZ3BhcnNlciBtb2R1bGUgaW4gUHl0aG9uIDMuMTMuICIKICAgICAgICAgICAgIlVzZSBCYXNpY0ludGVycG9sYXRpb24gb3IgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGluc3RlYWQuIiwKICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIKICAgICAgICApCgogICAgZGVmIGJlZm9yZV9nZXQoc2VsZiwgcGFyc2VyLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlLCB2YXJzKToKICAgICAgICByYXd2YWwgPSB2YWx1ZQogICAgICAgIGRlcHRoID0gTUFYX0lOVEVSUE9MQVRJT05fREVQVEgKICAgICAgICB3aGlsZSBkZXB0aDogICAgICAgICAgICAgICAgICAgICMgTG9vcCB0aHJvdWdoIHRoaXMgdW50aWwgaXQncyBkb25lCiAgICAgICAgICAgIGRlcHRoIC09IDEKICAgICAgICAgICAgaWYgdmFsdWUgYW5kICIlKCIgaW4gdmFsdWU6CiAgICAgICAgICAgICAgICByZXBsYWNlID0gZnVuY3Rvb2xzLnBhcnRpYWwoc2VsZi5faW50ZXJwb2xhdGlvbl9yZXBsYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcj1wYXJzZXIpCiAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX0tFWUNSRS5zdWIocmVwbGFjZSwgdmFsdWUpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAlIHZhcnMKICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCBlLmFyZ3NbMF0pIGZyb20gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiB2YWx1ZSBhbmQgIiUoIiBpbiB2YWx1ZToKICAgICAgICAgICAgcmFpc2UgSW50ZXJwb2xhdGlvbkRlcHRoRXJyb3Iob3B0aW9uLCBzZWN0aW9uLCByYXd2YWwpCiAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgZGVmIGJlZm9yZV9zZXQoc2VsZiwgcGFyc2VyLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlKToKICAgICAgICByZXR1cm4gdmFsdWUKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2ludGVycG9sYXRpb25fcmVwbGFjZShtYXRjaCwgcGFyc2VyKToKICAgICAgICBzID0gbWF0Y2guZ3JvdXAoMSkKICAgICAgICBpZiBzIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICIlJSglcylzIiAlIHBhcnNlci5vcHRpb254Zm9ybShzKQoKCmNsYXNzIFJhd0NvbmZpZ1BhcnNlcihNdXRhYmxlTWFwcGluZyk6CiAgICAiIiJDb25maWdQYXJzZXIgdGhhdCBkb2VzIG5vdCBkbyBpbnRlcnBvbGF0aW9uLiIiIgoKICAgICMgUmVndWxhciBleHByZXNzaW9ucyBmb3IgcGFyc2luZyBzZWN0aW9uIGhlYWRlcnMgYW5kIG9wdGlvbnMKICAgIF9TRUNUX1RNUEwgPSByIiIiCiAgICAgICAgXFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFsKICAgICAgICAoP1A8aGVhZGVyPi4rKSAgICAgICAgICAgICAgICAgICAgICMgdmVyeSBwZXJtaXNzaXZlIQogICAgICAgIFxdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBdCiAgICAgICAgIiIiCiAgICBfT1BUX1RNUEwgPSByIiIiCiAgICAgICAgKD9QPG9wdGlvbj4uKj8pICAgICAgICAgICAgICAgICAgICAjIHZlcnkgcGVybWlzc2l2ZSEKICAgICAgICBccyooP1A8dmk+e2RlbGltfSlccyogICAgICAgICAgICAgICMgYW55IG51bWJlciBvZiBzcGFjZS90YWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvbGxvd2VkIGJ5IGFueSBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3dlZCBkZWxpbWl0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb2xsb3dlZCBieSBhbnkgc3BhY2UvdGFiCiAgICAgICAgKD9QPHZhbHVlPi4qKSQgICAgICAgICAgICAgICAgICAgICAjIGV2ZXJ5dGhpbmcgdXAgdG8gZW9sCiAgICAgICAgIiIiCiAgICBfT1BUX05WX1RNUEwgPSByIiIiCiAgICAgICAgKD9QPG9wdGlvbj4uKj8pICAgICAgICAgICAgICAgICAgICAjIHZlcnkgcGVybWlzc2l2ZSEKICAgICAgICBccyooPzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYW55IG51bWJlciBvZiBzcGFjZS90YWIsCiAgICAgICAgKD9QPHZpPntkZWxpbX0pXHMqICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYW55IG9mIHRoZSBhbGxvd2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRlbGltaXRlcnMsIGZvbGxvd2VkIGJ5IGFueQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGFjZS90YWIKICAgICAgICAoP1A8dmFsdWU+LiopKT8kICAgICAgICAgICAgICAgICAgICMgZXZlcnl0aGluZyB1cCB0byBlb2wKICAgICAgICAiIiIKICAgICMgSW50ZXJwb2xhdGlvbiBhbGdvcml0aG0gdG8gYmUgdXNlZCBpZiB0aGUgdXNlciBkb2VzIG5vdCBzcGVjaWZ5IGFub3RoZXIKICAgIF9ERUZBVUxUX0lOVEVSUE9MQVRJT04gPSBJbnRlcnBvbGF0aW9uKCkKICAgICMgQ29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIGZvciBtYXRjaGluZyBzZWN0aW9ucwogICAgU0VDVENSRSA9IHJlLmNvbXBpbGUoX1NFQ1RfVE1QTCwgcmUuVkVSQk9TRSkKICAgICMgQ29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIGZvciBtYXRjaGluZyBvcHRpb25zIHdpdGggdHlwaWNhbCBzZXBhcmF0b3JzCiAgICBPUFRDUkUgPSByZS5jb21waWxlKF9PUFRfVE1QTC5mb3JtYXQoZGVsaW09Ij18OiIpLCByZS5WRVJCT1NFKQogICAgIyBDb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gZm9yIG1hdGNoaW5nIG9wdGlvbnMgd2l0aCBvcHRpb25hbCB2YWx1ZXMKICAgICMgZGVsaW1pdGVkIHVzaW5nIHR5cGljYWwgc2VwYXJhdG9ycwogICAgT1BUQ1JFX05WID0gcmUuY29tcGlsZShfT1BUX05WX1RNUEwuZm9ybWF0KGRlbGltPSI9fDoiKSwgcmUuVkVSQk9TRSkKICAgICMgQ29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIGZvciBtYXRjaGluZyBsZWFkaW5nIHdoaXRlc3BhY2UgaW4gYSBsaW5lCiAgICBOT05TUEFDRUNSRSA9IHJlLmNvbXBpbGUociJcUyIpCiAgICAjIFBvc3NpYmxlIGJvb2xlYW4gdmFsdWVzIGluIHRoZSBjb25maWd1cmF0aW9uLgogICAgQk9PTEVBTl9TVEFURVMgPSB7JzEnOiBUcnVlLCAneWVzJzogVHJ1ZSwgJ3RydWUnOiBUcnVlLCAnb24nOiBUcnVlLAogICAgICAgICAgICAgICAgICAgICAgJzAnOiBGYWxzZSwgJ25vJzogRmFsc2UsICdmYWxzZSc6IEZhbHNlLCAnb2ZmJzogRmFsc2V9CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlZmF1bHRzPU5vbmUsIGRpY3RfdHlwZT1fZGVmYXVsdF9kaWN0LAogICAgICAgICAgICAgICAgIGFsbG93X25vX3ZhbHVlPUZhbHNlLCAqLCBkZWxpbWl0ZXJzPSgnPScsICc6JyksCiAgICAgICAgICAgICAgICAgY29tbWVudF9wcmVmaXhlcz0oJyMnLCAnOycpLCBpbmxpbmVfY29tbWVudF9wcmVmaXhlcz1Ob25lLAogICAgICAgICAgICAgICAgIHN0cmljdD1UcnVlLCBlbXB0eV9saW5lc19pbl92YWx1ZXM9VHJ1ZSwKICAgICAgICAgICAgICAgICBkZWZhdWx0X3NlY3Rpb249REVGQVVMVFNFQ1QsCiAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbj1fVU5TRVQsIGNvbnZlcnRlcnM9X1VOU0VUKToKCiAgICAgICAgc2VsZi5fZGljdCA9IGRpY3RfdHlwZQogICAgICAgIHNlbGYuX3NlY3Rpb25zID0gc2VsZi5fZGljdCgpCiAgICAgICAgc2VsZi5fZGVmYXVsdHMgPSBzZWxmLl9kaWN0KCkKICAgICAgICBzZWxmLl9jb252ZXJ0ZXJzID0gQ29udmVydGVyTWFwcGluZyhzZWxmKQogICAgICAgIHNlbGYuX3Byb3hpZXMgPSBzZWxmLl9kaWN0KCkKICAgICAgICBzZWxmLl9wcm94aWVzW2RlZmF1bHRfc2VjdGlvbl0gPSBTZWN0aW9uUHJveHkoc2VsZiwgZGVmYXVsdF9zZWN0aW9uKQogICAgICAgIHNlbGYuX2RlbGltaXRlcnMgPSB0dXBsZShkZWxpbWl0ZXJzKQogICAgICAgIGlmIGRlbGltaXRlcnMgPT0gKCc9JywgJzonKToKICAgICAgICAgICAgc2VsZi5fb3B0Y3JlID0gc2VsZi5PUFRDUkVfTlYgaWYgYWxsb3dfbm9fdmFsdWUgZWxzZSBzZWxmLk9QVENSRQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGQgPSAifCIuam9pbihyZS5lc2NhcGUoZCkgZm9yIGQgaW4gZGVsaW1pdGVycykKICAgICAgICAgICAgaWYgYWxsb3dfbm9fdmFsdWU6CiAgICAgICAgICAgICAgICBzZWxmLl9vcHRjcmUgPSByZS5jb21waWxlKHNlbGYuX09QVF9OVl9UTVBMLmZvcm1hdChkZWxpbT1kKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuVkVSQk9TRSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX29wdGNyZSA9IHJlLmNvbXBpbGUoc2VsZi5fT1BUX1RNUEwuZm9ybWF0KGRlbGltPWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5WRVJCT1NFKQogICAgICAgIHNlbGYuX2NvbW1lbnRfcHJlZml4ZXMgPSB0dXBsZShjb21tZW50X3ByZWZpeGVzIG9yICgpKQogICAgICAgIHNlbGYuX2lubGluZV9jb21tZW50X3ByZWZpeGVzID0gdHVwbGUoaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMgb3IgKCkpCiAgICAgICAgc2VsZi5fc3RyaWN0ID0gc3RyaWN0CiAgICAgICAgc2VsZi5fYWxsb3dfbm9fdmFsdWUgPSBhbGxvd19ub192YWx1ZQogICAgICAgIHNlbGYuX2VtcHR5X2xpbmVzX2luX3ZhbHVlcyA9IGVtcHR5X2xpbmVzX2luX3ZhbHVlcwogICAgICAgIHNlbGYuZGVmYXVsdF9zZWN0aW9uPWRlZmF1bHRfc2VjdGlvbgogICAgICAgIHNlbGYuX2ludGVycG9sYXRpb24gPSBpbnRlcnBvbGF0aW9uCiAgICAgICAgaWYgc2VsZi5faW50ZXJwb2xhdGlvbiBpcyBfVU5TRVQ6CiAgICAgICAgICAgIHNlbGYuX2ludGVycG9sYXRpb24gPSBzZWxmLl9ERUZBVUxUX0lOVEVSUE9MQVRJT04KICAgICAgICBpZiBzZWxmLl9pbnRlcnBvbGF0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2ludGVycG9sYXRpb24gPSBJbnRlcnBvbGF0aW9uKCkKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLl9pbnRlcnBvbGF0aW9uLCBJbnRlcnBvbGF0aW9uKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgZiJpbnRlcnBvbGF0aW9uPSBtdXN0IGJlIE5vbmUgb3IgYW4gaW5zdGFuY2Ugb2YgSW50ZXJwb2xhdGlvbjsiCiAgICAgICAgICAgICAgICBmIiBnb3QgYW4gb2JqZWN0IG9mIHR5cGUge3R5cGUoc2VsZi5faW50ZXJwb2xhdGlvbil9IgogICAgICAgICAgICApCiAgICAgICAgaWYgY29udmVydGVycyBpcyBub3QgX1VOU0VUOgogICAgICAgICAgICBzZWxmLl9jb252ZXJ0ZXJzLnVwZGF0ZShjb252ZXJ0ZXJzKQogICAgICAgIGlmIGRlZmF1bHRzOgogICAgICAgICAgICBzZWxmLl9yZWFkX2RlZmF1bHRzKGRlZmF1bHRzKQoKICAgIGRlZiBkZWZhdWx0cyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdHMKCiAgICBkZWYgc2VjdGlvbnMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBzZWN0aW9uIG5hbWVzLCBleGNsdWRpbmcgW0RFRkFVTFRdIiIiCiAgICAgICAgIyBzZWxmLl9zZWN0aW9ucyB3aWxsIG5ldmVyIGhhdmUgW0RFRkFVTFRdIGluIGl0CiAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fc2VjdGlvbnMua2V5cygpKQoKICAgIGRlZiBhZGRfc2VjdGlvbihzZWxmLCBzZWN0aW9uKToKICAgICAgICAiIiJDcmVhdGUgYSBuZXcgc2VjdGlvbiBpbiB0aGUgY29uZmlndXJhdGlvbi4KCiAgICAgICAgUmFpc2UgRHVwbGljYXRlU2VjdGlvbkVycm9yIGlmIGEgc2VjdGlvbiBieSB0aGUgc3BlY2lmaWVkIG5hbWUKICAgICAgICBhbHJlYWR5IGV4aXN0cy4gUmFpc2UgVmFsdWVFcnJvciBpZiBuYW1lIGlzIERFRkFVTFQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VjdGlvbiA9PSBzZWxmLmRlZmF1bHRfc2VjdGlvbjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBzZWN0aW9uIG5hbWU6ICVyJyAlIHNlY3Rpb24pCgogICAgICAgIGlmIHNlY3Rpb24gaW4gc2VsZi5fc2VjdGlvbnM6CiAgICAgICAgICAgIHJhaXNlIER1cGxpY2F0ZVNlY3Rpb25FcnJvcihzZWN0aW9uKQogICAgICAgIHNlbGYuX3NlY3Rpb25zW3NlY3Rpb25dID0gc2VsZi5fZGljdCgpCiAgICAgICAgc2VsZi5fcHJveGllc1tzZWN0aW9uXSA9IFNlY3Rpb25Qcm94eShzZWxmLCBzZWN0aW9uKQoKICAgIGRlZiBoYXNfc2VjdGlvbihzZWxmLCBzZWN0aW9uKToKICAgICAgICAiIiJJbmRpY2F0ZSB3aGV0aGVyIHRoZSBuYW1lZCBzZWN0aW9uIGlzIHByZXNlbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uCgogICAgICAgIFRoZSBERUZBVUxUIHNlY3Rpb24gaXMgbm90IGFja25vd2xlZGdlZC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VjdGlvbiBpbiBzZWxmLl9zZWN0aW9ucwoKICAgIGRlZiBvcHRpb25zKHNlbGYsIHNlY3Rpb24pOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2Ygb3B0aW9uIG5hbWVzIGZvciB0aGUgZ2l2ZW4gc2VjdGlvbiBuYW1lLiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgb3B0cyA9IHNlbGYuX3NlY3Rpb25zW3NlY3Rpb25dLmNvcHkoKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgTm9TZWN0aW9uRXJyb3Ioc2VjdGlvbikgZnJvbSBOb25lCiAgICAgICAgb3B0cy51cGRhdGUoc2VsZi5fZGVmYXVsdHMpCiAgICAgICAgcmV0dXJuIGxpc3Qob3B0cy5rZXlzKCkpCgogICAgZGVmIHJlYWQoc2VsZiwgZmlsZW5hbWVzLCBlbmNvZGluZz1Ob25lKToKICAgICAgICAiIiJSZWFkIGFuZCBwYXJzZSBhIGZpbGVuYW1lIG9yIGFuIGl0ZXJhYmxlIG9mIGZpbGVuYW1lcy4KCiAgICAgICAgRmlsZXMgdGhhdCBjYW5ub3QgYmUgb3BlbmVkIGFyZSBzaWxlbnRseSBpZ25vcmVkOyB0aGlzIGlzCiAgICAgICAgZGVzaWduZWQgc28gdGhhdCB5b3UgY2FuIHNwZWNpZnkgYW4gaXRlcmFibGUgb2YgcG90ZW50aWFsCiAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGxvY2F0aW9ucyAoZS5nLiBjdXJyZW50IGRpcmVjdG9yeSwgdXNlcidzCiAgICAgICAgaG9tZSBkaXJlY3RvcnksIHN5c3RlbXdpZGUgZGlyZWN0b3J5KSwgYW5kIGFsbCBleGlzdGluZwogICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gdGhlIGl0ZXJhYmxlIHdpbGwgYmUgcmVhZC4gIEEgc2luZ2xlCiAgICAgICAgZmlsZW5hbWUgbWF5IGFsc28gYmUgZ2l2ZW4uCgogICAgICAgIFJldHVybiBsaXN0IG9mIHN1Y2Nlc3NmdWxseSByZWFkIGZpbGVzLgogICAgICAgICIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWVzLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgICAgZmlsZW5hbWVzID0gW2ZpbGVuYW1lc10KICAgICAgICBlbmNvZGluZyA9IGlvLnRleHRfZW5jb2RpbmcoZW5jb2RpbmcpCiAgICAgICAgcmVhZF9vayA9IFtdCiAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCBlbmNvZGluZz1lbmNvZGluZykgYXMgZnA6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZChmcCwgZmlsZW5hbWUpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgb3MuUGF0aExpa2UpOgogICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5mc3BhdGgoZmlsZW5hbWUpCiAgICAgICAgICAgIHJlYWRfb2suYXBwZW5kKGZpbGVuYW1lKQogICAgICAgIHJldHVybiByZWFkX29rCgogICAgZGVmIHJlYWRfZmlsZShzZWxmLCBmLCBzb3VyY2U9Tm9uZSk6CiAgICAgICAgIiIiTGlrZSByZWFkKCkgYnV0IHRoZSBhcmd1bWVudCBtdXN0IGJlIGEgZmlsZS1saWtlIG9iamVjdC4KCiAgICAgICAgVGhlIGBmYCBhcmd1bWVudCBtdXN0IGJlIGl0ZXJhYmxlLCByZXR1cm5pbmcgb25lIGxpbmUgYXQgYSB0aW1lLgogICAgICAgIE9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgYHNvdXJjZWAgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUKICAgICAgICBmaWxlIGJlaW5nIHJlYWQuIElmIG5vdCBnaXZlbiwgaXQgaXMgdGFrZW4gZnJvbSBmLm5hbWUuIElmIGBmYCBoYXMgbm8KICAgICAgICBgbmFtZWAgYXR0cmlidXRlLCBgPD8/Pz5gIGlzIHVzZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc291cmNlIGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNvdXJjZSA9IGYubmFtZQogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBzb3VyY2UgPSAnPD8/Pz4nCiAgICAgICAgc2VsZi5fcmVhZChmLCBzb3VyY2UpCgogICAgZGVmIHJlYWRfc3RyaW5nKHNlbGYsIHN0cmluZywgc291cmNlPSc8c3RyaW5nPicpOgogICAgICAgICIiIlJlYWQgY29uZmlndXJhdGlvbiBmcm9tIGEgZ2l2ZW4gc3RyaW5nLiIiIgogICAgICAgIHNmaWxlID0gaW8uU3RyaW5nSU8oc3RyaW5nKQogICAgICAgIHNlbGYucmVhZF9maWxlKHNmaWxlLCBzb3VyY2UpCgogICAgZGVmIHJlYWRfZGljdChzZWxmLCBkaWN0aW9uYXJ5LCBzb3VyY2U9JzxkaWN0PicpOgogICAgICAgICIiIlJlYWQgY29uZmlndXJhdGlvbiBmcm9tIGEgZGljdGlvbmFyeS4KCiAgICAgICAgS2V5cyBhcmUgc2VjdGlvbiBuYW1lcywgdmFsdWVzIGFyZSBkaWN0aW9uYXJpZXMgd2l0aCBrZXlzIGFuZCB2YWx1ZXMKICAgICAgICB0aGF0IHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBzZWN0aW9uLiBJZiB0aGUgdXNlZCBkaWN0aW9uYXJ5IHR5cGUKICAgICAgICBwcmVzZXJ2ZXMgb3JkZXIsIHNlY3Rpb25zIGFuZCB0aGVpciBrZXlzIHdpbGwgYmUgYWRkZWQgaW4gb3JkZXIuCgogICAgICAgIEFsbCB0eXBlcyBoZWxkIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBkdXJpbmcKICAgICAgICByZWFkaW5nLCBpbmNsdWRpbmcgc2VjdGlvbiBuYW1lcywgb3B0aW9uIG5hbWVzIGFuZCBrZXlzLgoKICAgICAgICBPcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIGBzb3VyY2VgIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgZGljdGlvbmFyeSBiZWluZyByZWFkLgogICAgICAgICIiIgogICAgICAgIGVsZW1lbnRzX2FkZGVkID0gc2V0KCkKICAgICAgICBmb3Igc2VjdGlvbiwga2V5cyBpbiBkaWN0aW9uYXJ5Lml0ZW1zKCk6CiAgICAgICAgICAgIHNlY3Rpb24gPSBzdHIoc2VjdGlvbikKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5hZGRfc2VjdGlvbihzZWN0aW9uKQogICAgICAgICAgICBleGNlcHQgKER1cGxpY2F0ZVNlY3Rpb25FcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9zdHJpY3QgYW5kIHNlY3Rpb24gaW4gZWxlbWVudHNfYWRkZWQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgZWxlbWVudHNfYWRkZWQuYWRkKHNlY3Rpb24pCiAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGtleXMuaXRlbXMoKToKICAgICAgICAgICAgICAgIGtleSA9IHNlbGYub3B0aW9ueGZvcm0oc3RyKGtleSkpCiAgICAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0cih2YWx1ZSkKICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N0cmljdCBhbmQgKHNlY3Rpb24sIGtleSkgaW4gZWxlbWVudHNfYWRkZWQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgRHVwbGljYXRlT3B0aW9uRXJyb3Ioc2VjdGlvbiwga2V5LCBzb3VyY2UpCiAgICAgICAgICAgICAgICBlbGVtZW50c19hZGRlZC5hZGQoKHNlY3Rpb24sIGtleSkpCiAgICAgICAgICAgICAgICBzZWxmLnNldChzZWN0aW9uLCBrZXksIHZhbHVlKQoKICAgIGRlZiByZWFkZnAoc2VsZiwgZnAsIGZpbGVuYW1lPU5vbmUpOgogICAgICAgICIiIkRlcHJlY2F0ZWQsIHVzZSByZWFkX2ZpbGUgaW5zdGVhZC4iIiIKICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAiVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjEyLiAiCiAgICAgICAgICAgICJVc2UgJ3BhcnNlci5yZWFkX2ZpbGUoKScgaW5zdGVhZC4iLAogICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MgogICAgICAgICkKICAgICAgICBzZWxmLnJlYWRfZmlsZShmcCwgc291cmNlPWZpbGVuYW1lKQoKICAgIGRlZiBnZXQoc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwgZmFsbGJhY2s9X1VOU0VUKToKICAgICAgICAiIiJHZXQgYW4gb3B0aW9uIHZhbHVlIGZvciBhIGdpdmVuIHNlY3Rpb24uCgogICAgICAgIElmIGB2YXJzYCBpcyBwcm92aWRlZCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIFRoZSBvcHRpb24gaXMgbG9va2VkIHVwCiAgICAgICAgaW4gYHZhcnNgIChpZiBwcm92aWRlZCksIGBzZWN0aW9uYCwgYW5kIGluIGBERUZBVUxUU0VDVGAgaW4gdGhhdCBvcmRlci4KICAgICAgICBJZiB0aGUga2V5IGlzIG5vdCBmb3VuZCBhbmQgYGZhbGxiYWNrYCBpcyBwcm92aWRlZCwgaXQgaXMgdXNlZCBhcwogICAgICAgIGEgZmFsbGJhY2sgdmFsdWUuIGBOb25lYCBjYW4gYmUgcHJvdmlkZWQgYXMgYSBgZmFsbGJhY2tgIHZhbHVlLgoKICAgICAgICBJZiBpbnRlcnBvbGF0aW9uIGlzIGVuYWJsZWQgYW5kIHRoZSBvcHRpb25hbCBhcmd1bWVudCBgcmF3YCBpcyBGYWxzZSwKICAgICAgICBhbGwgaW50ZXJwb2xhdGlvbnMgYXJlIGV4cGFuZGVkIGluIHRoZSByZXR1cm4gdmFsdWVzLgoKICAgICAgICBBcmd1bWVudHMgYHJhd2AsIGB2YXJzYCwgYW5kIGBmYWxsYmFja2AgYXJlIGtleXdvcmQgb25seS4KCiAgICAgICAgVGhlIHNlY3Rpb24gREVGQVVMVCBpcyBzcGVjaWFsLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgZCA9IHNlbGYuX3VuaWZ5X3ZhbHVlcyhzZWN0aW9uLCB2YXJzKQogICAgICAgIGV4Y2VwdCBOb1NlY3Rpb25FcnJvcjoKICAgICAgICAgICAgaWYgZmFsbGJhY2sgaXMgX1VOU0VUOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFjawogICAgICAgIG9wdGlvbiA9IHNlbGYub3B0aW9ueGZvcm0ob3B0aW9uKQogICAgICAgIHRyeToKICAgICAgICAgICAgdmFsdWUgPSBkW29wdGlvbl0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIGlmIGZhbGxiYWNrIGlzIF9VTlNFVDoKICAgICAgICAgICAgICAgIHJhaXNlIE5vT3B0aW9uRXJyb3Iob3B0aW9uLCBzZWN0aW9uKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrCgogICAgICAgIGlmIHJhdyBvciB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJwb2xhdGlvbi5iZWZvcmVfZ2V0KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCkKCiAgICBkZWYgX2dldChzZWxmLCBzZWN0aW9uLCBjb252LCBvcHRpb24sICoqa3dhcmdzKToKICAgICAgICByZXR1cm4gY29udihzZWxmLmdldChzZWN0aW9uLCBvcHRpb24sICoqa3dhcmdzKSkKCiAgICBkZWYgX2dldF9jb252KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgY29udiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCwgKiprd2FyZ3MpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldChzZWN0aW9uLCBjb252LCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKICAgICAgICBleGNlcHQgKE5vU2VjdGlvbkVycm9yLCBOb09wdGlvbkVycm9yKToKICAgICAgICAgICAgaWYgZmFsbGJhY2sgaXMgX1VOU0VUOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrCgogICAgIyBnZXRpbnQsIGdldGZsb2F0IGFuZCBnZXRib29sZWFuIHByb3ZpZGVkIGRpcmVjdGx5IGZvciBiYWNrd2FyZHMgY29tcGF0CiAgICBkZWYgZ2V0aW50KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCiAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCwgKiprd2FyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIGludCwgcmF3PXJhdywgdmFycz12YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaywgKiprd2FyZ3MpCgogICAgZGVmIGdldGZsb2F0KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9jb252KHNlY3Rpb24sIG9wdGlvbiwgZmxvYXQsIHJhdz1yYXcsIHZhcnM9dmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2ssICoqa3dhcmdzKQoKICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1fVU5TRVQsICoqa3dhcmdzKToKICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2NvbnYoc2VjdGlvbiwgb3B0aW9uLCBzZWxmLl9jb252ZXJ0X3RvX2Jvb2xlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdz1yYXcsIHZhcnM9dmFycywgZmFsbGJhY2s9ZmFsbGJhY2ssICoqa3dhcmdzKQoKICAgIGRlZiBpdGVtcyhzZWxmLCBzZWN0aW9uPV9VTlNFVCwgcmF3PUZhbHNlLCB2YXJzPU5vbmUpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgKG5hbWUsIHZhbHVlKSB0dXBsZXMgZm9yIGVhY2ggb3B0aW9uIGluIGEgc2VjdGlvbi4KCiAgICAgICAgQWxsICUgaW50ZXJwb2xhdGlvbnMgYXJlIGV4cGFuZGVkIGluIHRoZSByZXR1cm4gdmFsdWVzLCBiYXNlZCBvbiB0aGUKICAgICAgICBkZWZhdWx0cyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3IsIHVubGVzcyB0aGUgb3B0aW9uYWwgYXJndW1lbnQKICAgICAgICBgcmF3YCBpcyB0cnVlLiAgQWRkaXRpb25hbCBzdWJzdGl0dXRpb25zIG1heSBiZSBwcm92aWRlZCB1c2luZyB0aGUKICAgICAgICBgdmFyc2AgYXJndW1lbnQsIHdoaWNoIG11c3QgYmUgYSBkaWN0aW9uYXJ5IHdob3NlIGNvbnRlbnRzIG92ZXJyaWRlcwogICAgICAgIGFueSBwcmUtZXhpc3RpbmcgZGVmYXVsdHMuCgogICAgICAgIFRoZSBzZWN0aW9uIERFRkFVTFQgaXMgc3BlY2lhbC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWN0aW9uIGlzIF9VTlNFVDoKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuaXRlbXMoKQogICAgICAgIGQgPSBzZWxmLl9kZWZhdWx0cy5jb3B5KCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGQudXBkYXRlKHNlbGYuX3NlY3Rpb25zW3NlY3Rpb25dKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgaWYgc2VjdGlvbiAhPSBzZWxmLmRlZmF1bHRfc2VjdGlvbjoKICAgICAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pCiAgICAgICAgb3JpZ19rZXlzID0gbGlzdChkLmtleXMoKSkKICAgICAgICAjIFVwZGF0ZSB3aXRoIHRoZSBlbnRyeSBzcGVjaWZpYyB2YXJpYWJsZXMKICAgICAgICBpZiB2YXJzOgogICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiB2YXJzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBkW3NlbGYub3B0aW9ueGZvcm0oa2V5KV0gPSB2YWx1ZQogICAgICAgIHZhbHVlX2dldHRlciA9IGxhbWJkYSBvcHRpb246IHNlbGYuX2ludGVycG9sYXRpb24uYmVmb3JlX2dldChzZWxmLAogICAgICAgICAgICBzZWN0aW9uLCBvcHRpb24sIGRbb3B0aW9uXSwgZCkKICAgICAgICBpZiByYXc6CiAgICAgICAgICAgIHZhbHVlX2dldHRlciA9IGxhbWJkYSBvcHRpb246IGRbb3B0aW9uXQogICAgICAgIHJldHVybiBbKG9wdGlvbiwgdmFsdWVfZ2V0dGVyKG9wdGlvbikpIGZvciBvcHRpb24gaW4gb3JpZ19rZXlzXQoKICAgIGRlZiBwb3BpdGVtKHNlbGYpOgogICAgICAgICIiIlJlbW92ZSBhIHNlY3Rpb24gZnJvbSB0aGUgcGFyc2VyIGFuZCByZXR1cm4gaXQgYXMKICAgICAgICBhIChzZWN0aW9uX25hbWUsIHNlY3Rpb25fcHJveHkpIHR1cGxlLiBJZiBubyBzZWN0aW9uIGlzIHByZXNlbnQsIHJhaXNlCiAgICAgICAgS2V5RXJyb3IuCgogICAgICAgIFRoZSBzZWN0aW9uIERFRkFVTFQgaXMgbmV2ZXIgcmV0dXJuZWQgYmVjYXVzZSBpdCBjYW5ub3QgYmUgcmVtb3ZlZC4KICAgICAgICAiIiIKICAgICAgICBmb3Iga2V5IGluIHNlbGYuc2VjdGlvbnMoKToKICAgICAgICAgICAgdmFsdWUgPSBzZWxmW2tleV0KICAgICAgICAgICAgZGVsIHNlbGZba2V5XQogICAgICAgICAgICByZXR1cm4ga2V5LCB2YWx1ZQogICAgICAgIHJhaXNlIEtleUVycm9yCgogICAgZGVmIG9wdGlvbnhmb3JtKHNlbGYsIG9wdGlvbnN0cik6CiAgICAgICAgcmV0dXJuIG9wdGlvbnN0ci5sb3dlcigpCgogICAgZGVmIGhhc19vcHRpb24oc2VsZiwgc2VjdGlvbiwgb3B0aW9uKToKICAgICAgICAiIiJDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhIGdpdmVuIG9wdGlvbiBpbiBhIGdpdmVuIHNlY3Rpb24uCiAgICAgICAgSWYgdGhlIHNwZWNpZmllZCBgc2VjdGlvbmAgaXMgTm9uZSBvciBhbiBlbXB0eSBzdHJpbmcsIERFRkFVTFQgaXMKICAgICAgICBhc3N1bWVkLiBJZiB0aGUgc3BlY2lmaWVkIGBzZWN0aW9uYCBkb2VzIG5vdCBleGlzdCwgcmV0dXJucyBGYWxzZS4iIiIKICAgICAgICBpZiBub3Qgc2VjdGlvbiBvciBzZWN0aW9uID09IHNlbGYuZGVmYXVsdF9zZWN0aW9uOgogICAgICAgICAgICBvcHRpb24gPSBzZWxmLm9wdGlvbnhmb3JtKG9wdGlvbikKICAgICAgICAgICAgcmV0dXJuIG9wdGlvbiBpbiBzZWxmLl9kZWZhdWx0cwogICAgICAgIGVsaWYgc2VjdGlvbiBub3QgaW4gc2VsZi5fc2VjdGlvbnM6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9wdGlvbiA9IHNlbGYub3B0aW9ueGZvcm0ob3B0aW9uKQogICAgICAgICAgICByZXR1cm4gKG9wdGlvbiBpbiBzZWxmLl9zZWN0aW9uc1tzZWN0aW9uXQogICAgICAgICAgICAgICAgICAgIG9yIG9wdGlvbiBpbiBzZWxmLl9kZWZhdWx0cykKCiAgICBkZWYgc2V0KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWU9Tm9uZSk6CiAgICAgICAgIiIiU2V0IGFuIG9wdGlvbi4iIiIKICAgICAgICBpZiB2YWx1ZToKICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9pbnRlcnBvbGF0aW9uLmJlZm9yZV9zZXQoc2VsZiwgc2VjdGlvbiwgb3B0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkKICAgICAgICBpZiBub3Qgc2VjdGlvbiBvciBzZWN0aW9uID09IHNlbGYuZGVmYXVsdF9zZWN0aW9uOgogICAgICAgICAgICBzZWN0ZGljdCA9IHNlbGYuX2RlZmF1bHRzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VjdGRpY3QgPSBzZWxmLl9zZWN0aW9uc1tzZWN0aW9uXQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKSBmcm9tIE5vbmUKICAgICAgICBzZWN0ZGljdFtzZWxmLm9wdGlvbnhmb3JtKG9wdGlvbildID0gdmFsdWUKCiAgICBkZWYgd3JpdGUoc2VsZiwgZnAsIHNwYWNlX2Fyb3VuZF9kZWxpbWl0ZXJzPVRydWUpOgogICAgICAgICIiIldyaXRlIGFuIC5pbmktZm9ybWF0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIHN0YXRlLgoKICAgICAgICBJZiBgc3BhY2VfYXJvdW5kX2RlbGltaXRlcnNgIGlzIFRydWUgKHRoZSBkZWZhdWx0KSwgZGVsaW1pdGVycwogICAgICAgIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzIGFyZSBzdXJyb3VuZGVkIGJ5IHNwYWNlcy4KCiAgICAgICAgUGxlYXNlIG5vdGUgdGhhdCBjb21tZW50cyBpbiB0aGUgb3JpZ2luYWwgY29uZmlndXJhdGlvbiBmaWxlIGFyZSBub3QKICAgICAgICBwcmVzZXJ2ZWQgd2hlbiB3cml0aW5nIHRoZSBjb25maWd1cmF0aW9uIGJhY2suCiAgICAgICAgIiIiCiAgICAgICAgaWYgc3BhY2VfYXJvdW5kX2RlbGltaXRlcnM6CiAgICAgICAgICAgIGQgPSAiIHt9ICIuZm9ybWF0KHNlbGYuX2RlbGltaXRlcnNbMF0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZCA9IHNlbGYuX2RlbGltaXRlcnNbMF0KICAgICAgICBpZiBzZWxmLl9kZWZhdWx0czoKICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2VjdGlvbihmcCwgc2VsZi5kZWZhdWx0X3NlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlZmF1bHRzLml0ZW1zKCksIGQpCiAgICAgICAgZm9yIHNlY3Rpb24gaW4gc2VsZi5fc2VjdGlvbnM6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NlY3Rpb24oZnAsIHNlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VjdGlvbnNbc2VjdGlvbl0uaXRlbXMoKSwgZCkKCiAgICBkZWYgX3dyaXRlX3NlY3Rpb24oc2VsZiwgZnAsIHNlY3Rpb25fbmFtZSwgc2VjdGlvbl9pdGVtcywgZGVsaW1pdGVyKToKICAgICAgICAiIiJXcml0ZSBhIHNpbmdsZSBzZWN0aW9uIHRvIHRoZSBzcGVjaWZpZWQgYGZwYC4iIiIKICAgICAgICBmcC53cml0ZSgiW3t9XVxuIi5mb3JtYXQoc2VjdGlvbl9uYW1lKSkKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWN0aW9uX2l0ZW1zOgogICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2ludGVycG9sYXRpb24uYmVmb3JlX3dyaXRlKHNlbGYsIHNlY3Rpb25fbmFtZSwga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKQogICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZSBvciBub3Qgc2VsZi5fYWxsb3dfbm9fdmFsdWU6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlbGltaXRlciArIHN0cih2YWx1ZSkucmVwbGFjZSgnXG4nLCAnXG5cdCcpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB2YWx1ZSA9ICIiCiAgICAgICAgICAgIGZwLndyaXRlKCJ7fXt9XG4iLmZvcm1hdChrZXksIHZhbHVlKSkKICAgICAgICBmcC53cml0ZSgiXG4iKQoKICAgIGRlZiByZW1vdmVfb3B0aW9uKHNlbGYsIHNlY3Rpb24sIG9wdGlvbik6CiAgICAgICAgIiIiUmVtb3ZlIGFuIG9wdGlvbi4iIiIKICAgICAgICBpZiBub3Qgc2VjdGlvbiBvciBzZWN0aW9uID09IHNlbGYuZGVmYXVsdF9zZWN0aW9uOgogICAgICAgICAgICBzZWN0ZGljdCA9IHNlbGYuX2RlZmF1bHRzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VjdGRpY3QgPSBzZWxmLl9zZWN0aW9uc1tzZWN0aW9uXQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKSBmcm9tIE5vbmUKICAgICAgICBvcHRpb24gPSBzZWxmLm9wdGlvbnhmb3JtKG9wdGlvbikKICAgICAgICBleGlzdGVkID0gb3B0aW9uIGluIHNlY3RkaWN0CiAgICAgICAgaWYgZXhpc3RlZDoKICAgICAgICAgICAgZGVsIHNlY3RkaWN0W29wdGlvbl0KICAgICAgICByZXR1cm4gZXhpc3RlZAoKICAgIGRlZiByZW1vdmVfc2VjdGlvbihzZWxmLCBzZWN0aW9uKToKICAgICAgICAiIiJSZW1vdmUgYSBmaWxlIHNlY3Rpb24uIiIiCiAgICAgICAgZXhpc3RlZCA9IHNlY3Rpb24gaW4gc2VsZi5fc2VjdGlvbnMKICAgICAgICBpZiBleGlzdGVkOgogICAgICAgICAgICBkZWwgc2VsZi5fc2VjdGlvbnNbc2VjdGlvbl0KICAgICAgICAgICAgZGVsIHNlbGYuX3Byb3hpZXNbc2VjdGlvbl0KICAgICAgICByZXR1cm4gZXhpc3RlZAoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIGlmIGtleSAhPSBzZWxmLmRlZmF1bHRfc2VjdGlvbiBhbmQgbm90IHNlbGYuaGFzX3NlY3Rpb24oa2V5KToKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQogICAgICAgIHJldHVybiBzZWxmLl9wcm94aWVzW2tleV0KCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIyBUbyBjb25mb3JtIHdpdGggdGhlIG1hcHBpbmcgcHJvdG9jb2wsIG92ZXJ3cml0ZXMgZXhpc3RpbmcgdmFsdWVzIGluCiAgICAgICAgIyB0aGUgc2VjdGlvbi4KICAgICAgICBpZiBrZXkgaW4gc2VsZiBhbmQgc2VsZltrZXldIGlzIHZhbHVlOgogICAgICAgICAgICByZXR1cm4KICAgICAgICAjIFhYWCB0aGlzIGlzIG5vdCBhdG9taWMgaWYgcmVhZF9kaWN0IGZhaWxzIGF0IGFueSBwb2ludC4gVGhlbiBhZ2FpbiwKICAgICAgICAjIG5vIHVwZGF0ZSBtZXRob2QgaW4gY29uZmlncGFyc2VyIGlzIGF0b21pYyBpbiB0aGlzIGltcGxlbWVudGF0aW9uLgogICAgICAgIGlmIGtleSA9PSBzZWxmLmRlZmF1bHRfc2VjdGlvbjoKICAgICAgICAgICAgc2VsZi5fZGVmYXVsdHMuY2xlYXIoKQogICAgICAgIGVsaWYga2V5IGluIHNlbGYuX3NlY3Rpb25zOgogICAgICAgICAgICBzZWxmLl9zZWN0aW9uc1trZXldLmNsZWFyKCkKICAgICAgICBzZWxmLnJlYWRfZGljdCh7a2V5OiB2YWx1ZX0pCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgaWYga2V5ID09IHNlbGYuZGVmYXVsdF9zZWN0aW9uOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgcmVtb3ZlIHRoZSBkZWZhdWx0IHNlY3Rpb24uIikKICAgICAgICBpZiBub3Qgc2VsZi5oYXNfc2VjdGlvbihrZXkpOgogICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkpCiAgICAgICAgc2VsZi5yZW1vdmVfc2VjdGlvbihrZXkpCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgIHJldHVybiBrZXkgPT0gc2VsZi5kZWZhdWx0X3NlY3Rpb24gb3Igc2VsZi5oYXNfc2VjdGlvbihrZXkpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9zZWN0aW9ucykgKyAxICMgdGhlIGRlZmF1bHQgc2VjdGlvbgoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAjIFhYWCBkb2VzIGl0IGJyZWFrIHdoZW4gdW5kZXJseWluZyBjb250YWluZXIgc3RhdGUgY2hhbmdlZD8KICAgICAgICByZXR1cm4gaXRlcnRvb2xzLmNoYWluKChzZWxmLmRlZmF1bHRfc2VjdGlvbiwpLCBzZWxmLl9zZWN0aW9ucy5rZXlzKCkpCgogICAgZGVmIF9yZWFkKHNlbGYsIGZwLCBmcG5hbWUpOgogICAgICAgICIiIlBhcnNlIGEgc2VjdGlvbmVkIGNvbmZpZ3VyYXRpb24gZmlsZS4KCiAgICAgICAgRWFjaCBzZWN0aW9uIGluIGEgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5zIGEgaGVhZGVyLCBpbmRpY2F0ZWQgYnkKICAgICAgICBhIG5hbWUgaW4gc3F1YXJlIGJyYWNrZXRzIChgW11gKSwgcGx1cyBrZXkvdmFsdWUgb3B0aW9ucywgaW5kaWNhdGVkIGJ5CiAgICAgICAgYG5hbWVgIGFuZCBgdmFsdWVgIGRlbGltaXRlZCB3aXRoIGEgc3BlY2lmaWMgc3Vic3RyaW5nIChgPWAgb3IgYDpgIGJ5CiAgICAgICAgZGVmYXVsdCkuCgogICAgICAgIFZhbHVlcyBjYW4gc3BhbiBtdWx0aXBsZSBsaW5lcywgYXMgbG9uZyBhcyB0aGV5IGFyZSBpbmRlbnRlZCBkZWVwZXIKICAgICAgICB0aGFuIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB2YWx1ZS4gRGVwZW5kaW5nIG9uIHRoZSBwYXJzZXIncyBtb2RlLCBibGFuawogICAgICAgIGxpbmVzIG1heSBiZSB0cmVhdGVkIGFzIHBhcnRzIG9mIG11bHRpbGluZSB2YWx1ZXMgb3IgaWdub3JlZC4KCiAgICAgICAgQ29uZmlndXJhdGlvbiBmaWxlcyBtYXkgaW5jbHVkZSBjb21tZW50cywgcHJlZml4ZWQgYnkgc3BlY2lmaWMKICAgICAgICBjaGFyYWN0ZXJzIChgI2AgYW5kIGA7YCBieSBkZWZhdWx0KS4gQ29tbWVudHMgbWF5IGFwcGVhciBvbiB0aGVpciBvd24KICAgICAgICBpbiBhbiBvdGhlcndpc2UgZW1wdHkgbGluZSBvciBtYXkgYmUgZW50ZXJlZCBpbiBsaW5lcyBob2xkaW5nIHZhbHVlcyBvcgogICAgICAgIHNlY3Rpb24gbmFtZXMuIFBsZWFzZSBub3RlIHRoYXQgY29tbWVudHMgZ2V0IHN0cmlwcGVkIG9mZiB3aGVuIHJlYWRpbmcgY29uZmlndXJhdGlvbiBmaWxlcy4KICAgICAgICAiIiIKICAgICAgICBlbGVtZW50c19hZGRlZCA9IHNldCgpCiAgICAgICAgY3Vyc2VjdCA9IE5vbmUgICAgICAgICAgICAgICAgICAgICAgICAjIE5vbmUsIG9yIGEgZGljdGlvbmFyeQogICAgICAgIHNlY3RuYW1lID0gTm9uZQogICAgICAgIG9wdG5hbWUgPSBOb25lCiAgICAgICAgbGluZW5vID0gMAogICAgICAgIGluZGVudF9sZXZlbCA9IDAKICAgICAgICBlID0gTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm9uZSwgb3IgYW4gZXhjZXB0aW9uCiAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUoZnAsIHN0YXJ0PTEpOgogICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gc3lzLm1heHNpemUKICAgICAgICAgICAgIyBzdHJpcCBpbmxpbmUgY29tbWVudHMKICAgICAgICAgICAgaW5saW5lX3ByZWZpeGVzID0ge3A6IC0xIGZvciBwIGluIHNlbGYuX2lubGluZV9jb21tZW50X3ByZWZpeGVzfQogICAgICAgICAgICB3aGlsZSBjb21tZW50X3N0YXJ0ID09IHN5cy5tYXhzaXplIGFuZCBpbmxpbmVfcHJlZml4ZXM6CiAgICAgICAgICAgICAgICBuZXh0X3ByZWZpeGVzID0ge30KICAgICAgICAgICAgICAgIGZvciBwcmVmaXgsIGluZGV4IGluIGlubGluZV9wcmVmaXhlcy5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgIGluZGV4ID0gbGluZS5maW5kKHByZWZpeCwgaW5kZXgrMSkKICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCA9PSAtMToKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBuZXh0X3ByZWZpeGVzW3ByZWZpeF0gPSBpbmRleAogICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID09IDAgb3IgKGluZGV4ID4gMCBhbmQgbGluZVtpbmRleC0xXS5pc3NwYWNlKCkpOgogICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gbWluKGNvbW1lbnRfc3RhcnQsIGluZGV4KQogICAgICAgICAgICAgICAgaW5saW5lX3ByZWZpeGVzID0gbmV4dF9wcmVmaXhlcwogICAgICAgICAgICAjIHN0cmlwIGZ1bGwgbGluZSBjb21tZW50cwogICAgICAgICAgICBmb3IgcHJlZml4IGluIHNlbGYuX2NvbW1lbnRfcHJlZml4ZXM6CiAgICAgICAgICAgICAgICBpZiBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aChwcmVmaXgpOgogICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSAwCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgaWYgY29tbWVudF9zdGFydCA9PSBzeXMubWF4c2l6ZToKICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBOb25lCiAgICAgICAgICAgIHZhbHVlID0gbGluZVs6Y29tbWVudF9zdGFydF0uc3RyaXAoKQogICAgICAgICAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9lbXB0eV9saW5lc19pbl92YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIyBhZGQgZW1wdHkgbGluZSB0byB0aGUgdmFsdWUsIGJ1dCBvbmx5IGlmIHRoZXJlIHdhcyBubwogICAgICAgICAgICAgICAgICAgICMgY29tbWVudCBvbiB0aGUgbGluZQogICAgICAgICAgICAgICAgICAgIGlmIChjb21tZW50X3N0YXJ0IGlzIE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNlY3QgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdG5hbWUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNlY3Rbb3B0bmFtZV0gaXMgbm90IE5vbmUpOgogICAgICAgICAgICAgICAgICAgICAgICBjdXJzZWN0W29wdG5hbWVdLmFwcGVuZCgnJykgIyBuZXdsaW5lcyBhZGRlZCBhdCBqb2luCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgZW1wdHkgbGluZSBtYXJrcyBlbmQgb2YgdmFsdWUKICAgICAgICAgICAgICAgICAgICBpbmRlbnRfbGV2ZWwgPSBzeXMubWF4c2l6ZQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIyBjb250aW51YXRpb24gbGluZT8KICAgICAgICAgICAgZmlyc3Rfbm9uc3BhY2UgPSBzZWxmLk5PTlNQQUNFQ1JFLnNlYXJjaChsaW5lKQogICAgICAgICAgICBjdXJfaW5kZW50X2xldmVsID0gZmlyc3Rfbm9uc3BhY2Uuc3RhcnQoKSBpZiBmaXJzdF9ub25zcGFjZSBlbHNlIDAKICAgICAgICAgICAgaWYgKGN1cnNlY3QgaXMgbm90IE5vbmUgYW5kIG9wdG5hbWUgYW5kCiAgICAgICAgICAgICAgICBjdXJfaW5kZW50X2xldmVsID4gaW5kZW50X2xldmVsKToKICAgICAgICAgICAgICAgIGN1cnNlY3Rbb3B0bmFtZV0uYXBwZW5kKHZhbHVlKQogICAgICAgICAgICAjIGEgc2VjdGlvbiBoZWFkZXIgb3Igb3B0aW9uIGhlYWRlcj8KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGluZGVudF9sZXZlbCA9IGN1cl9pbmRlbnRfbGV2ZWwKICAgICAgICAgICAgICAgICMgaXMgaXQgYSBzZWN0aW9uIGhlYWRlcj8KICAgICAgICAgICAgICAgIG1vID0gc2VsZi5TRUNUQ1JFLm1hdGNoKHZhbHVlKQogICAgICAgICAgICAgICAgaWYgbW86CiAgICAgICAgICAgICAgICAgICAgc2VjdG5hbWUgPSBtby5ncm91cCgnaGVhZGVyJykKICAgICAgICAgICAgICAgICAgICBpZiBzZWN0bmFtZSBpbiBzZWxmLl9zZWN0aW9uczoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fc3RyaWN0IGFuZCBzZWN0bmFtZSBpbiBlbGVtZW50c19hZGRlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIER1cGxpY2F0ZVNlY3Rpb25FcnJvcihzZWN0bmFtZSwgZnBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubykKICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc2VjdCA9IHNlbGYuX3NlY3Rpb25zW3NlY3RuYW1lXQogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50c19hZGRlZC5hZGQoc2VjdG5hbWUpCiAgICAgICAgICAgICAgICAgICAgZWxpZiBzZWN0bmFtZSA9PSBzZWxmLmRlZmF1bHRfc2VjdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc2VjdCA9IHNlbGYuX2RlZmF1bHRzCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc2VjdCA9IHNlbGYuX2RpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWN0aW9uc1tzZWN0bmFtZV0gPSBjdXJzZWN0CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Byb3hpZXNbc2VjdG5hbWVdID0gU2VjdGlvblByb3h5KHNlbGYsIHNlY3RuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50c19hZGRlZC5hZGQoc2VjdG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIyBTbyBzZWN0aW9ucyBjYW4ndCBzdGFydCB3aXRoIGEgY29udGludWF0aW9uIGxpbmUKICAgICAgICAgICAgICAgICAgICBvcHRuYW1lID0gTm9uZQogICAgICAgICAgICAgICAgIyBubyBzZWN0aW9uIGhlYWRlciBpbiB0aGUgZmlsZT8KICAgICAgICAgICAgICAgIGVsaWYgY3Vyc2VjdCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIE1pc3NpbmdTZWN0aW9uSGVhZGVyRXJyb3IoZnBuYW1lLCBsaW5lbm8sIGxpbmUpCiAgICAgICAgICAgICAgICAjIGFuIG9wdGlvbiBsaW5lPwogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBtbyA9IHNlbGYuX29wdGNyZS5tYXRjaCh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICBpZiBtbzoKICAgICAgICAgICAgICAgICAgICAgICAgb3B0bmFtZSwgdmksIG9wdHZhbCA9IG1vLmdyb3VwKCdvcHRpb24nLCAndmknLCAndmFsdWUnKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3B0bmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBzZWxmLl9oYW5kbGVfZXJyb3IoZSwgZnBuYW1lLCBsaW5lbm8sIGxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdG5hbWUgPSBzZWxmLm9wdGlvbnhmb3JtKG9wdG5hbWUucnN0cmlwKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLl9zdHJpY3QgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VjdG5hbWUsIG9wdG5hbWUpIGluIGVsZW1lbnRzX2FkZGVkKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIER1cGxpY2F0ZU9wdGlvbkVycm9yKHNlY3RuYW1lLCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnBuYW1lLCBsaW5lbm8pCiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzX2FkZGVkLmFkZCgoc2VjdG5hbWUsIG9wdG5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgY2hlY2sgaXMgZmluZSBiZWNhdXNlIHRoZSBPUFRDUkUgY2Fubm90CiAgICAgICAgICAgICAgICAgICAgICAgICMgbWF0Y2ggaWYgaXQgd291bGQgc2V0IG9wdHZhbCB0byBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9wdHZhbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHZhbCA9IG9wdHZhbC5zdHJpcCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzZWN0W29wdG5hbWVdID0gW29wdHZhbF0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFsdWVsZXNzIG9wdGlvbiBoYW5kbGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc2VjdFtvcHRuYW1lXSA9IE5vbmUKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAjIGEgbm9uLWZhdGFsIHBhcnNpbmcgZXJyb3Igb2NjdXJyZWQuIHNldCB1cCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIyBleGNlcHRpb24gYnV0IGtlZXAgZ29pbmcuIHRoZSBleGNlcHRpb24gd2lsbCBiZQogICAgICAgICAgICAgICAgICAgICAgICAjIHJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlIGFuZCB3aWxsIGNvbnRhaW4gYQogICAgICAgICAgICAgICAgICAgICAgICAjIGxpc3Qgb2YgYWxsIGJvZ3VzIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBzZWxmLl9oYW5kbGVfZXJyb3IoZSwgZnBuYW1lLCBsaW5lbm8sIGxpbmUpCiAgICAgICAgc2VsZi5fam9pbl9tdWx0aWxpbmVfdmFsdWVzKCkKICAgICAgICAjIGlmIGFueSBwYXJzaW5nIGVycm9ycyBvY2N1cnJlZCwgcmFpc2UgYW4gZXhjZXB0aW9uCiAgICAgICAgaWYgZToKICAgICAgICAgICAgcmFpc2UgZQoKICAgIGRlZiBfam9pbl9tdWx0aWxpbmVfdmFsdWVzKHNlbGYpOgogICAgICAgIGRlZmF1bHRzID0gc2VsZi5kZWZhdWx0X3NlY3Rpb24sIHNlbGYuX2RlZmF1bHRzCiAgICAgICAgYWxsX3NlY3Rpb25zID0gaXRlcnRvb2xzLmNoYWluKChkZWZhdWx0cywpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWN0aW9ucy5pdGVtcygpKQogICAgICAgIGZvciBzZWN0aW9uLCBvcHRpb25zIGluIGFsbF9zZWN0aW9uczoKICAgICAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBvcHRpb25zLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgbGlzdCk6CiAgICAgICAgICAgICAgICAgICAgdmFsID0gJ1xuJy5qb2luKHZhbCkucnN0cmlwKCkKICAgICAgICAgICAgICAgIG9wdGlvbnNbbmFtZV0gPSBzZWxmLl9pbnRlcnBvbGF0aW9uLmJlZm9yZV9yZWFkKHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdmFsKQoKICAgIGRlZiBfcmVhZF9kZWZhdWx0cyhzZWxmLCBkZWZhdWx0cyk6CiAgICAgICAgIiIiUmVhZCB0aGUgZGVmYXVsdHMgcGFzc2VkIGluIHRoZSBpbml0aWFsaXplci4KICAgICAgICBOb3RlOiB2YWx1ZXMgY2FuIGJlIG5vbi1zdHJpbmcuIiIiCiAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGVmYXVsdHMuaXRlbXMoKToKICAgICAgICAgICAgc2VsZi5fZGVmYXVsdHNbc2VsZi5vcHRpb254Zm9ybShrZXkpXSA9IHZhbHVlCgogICAgZGVmIF9oYW5kbGVfZXJyb3Ioc2VsZiwgZXhjLCBmcG5hbWUsIGxpbmVubywgbGluZSk6CiAgICAgICAgaWYgbm90IGV4YzoKICAgICAgICAgICAgZXhjID0gUGFyc2luZ0Vycm9yKGZwbmFtZSkKICAgICAgICBleGMuYXBwZW5kKGxpbmVubywgcmVwcihsaW5lKSkKICAgICAgICByZXR1cm4gZXhjCgogICAgZGVmIF91bmlmeV92YWx1ZXMoc2VsZiwgc2VjdGlvbiwgdmFycyk6CiAgICAgICAgIiIiQ3JlYXRlIGEgc2VxdWVuY2Ugb2YgbG9va3VwcyB3aXRoICd2YXJzJyB0YWtpbmcgcHJpb3JpdHkgb3ZlcgogICAgICAgIHRoZSAnc2VjdGlvbicgd2hpY2ggdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGUgREVGQVVMVFNFQ1QuCgogICAgICAgICIiIgogICAgICAgIHNlY3Rpb25kaWN0ID0ge30KICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlY3Rpb25kaWN0ID0gc2VsZi5fc2VjdGlvbnNbc2VjdGlvbl0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIGlmIHNlY3Rpb24gIT0gc2VsZi5kZWZhdWx0X3NlY3Rpb246CiAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKSBmcm9tIE5vbmUKICAgICAgICAjIFVwZGF0ZSB3aXRoIHRoZSBlbnRyeSBzcGVjaWZpYyB2YXJpYWJsZXMKICAgICAgICB2YXJkaWN0ID0ge30KICAgICAgICBpZiB2YXJzOgogICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiB2YXJzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0cih2YWx1ZSkKICAgICAgICAgICAgICAgIHZhcmRpY3Rbc2VsZi5vcHRpb254Zm9ybShrZXkpXSA9IHZhbHVlCiAgICAgICAgcmV0dXJuIF9DaGFpbk1hcCh2YXJkaWN0LCBzZWN0aW9uZGljdCwgc2VsZi5fZGVmYXVsdHMpCgogICAgZGVmIF9jb252ZXJ0X3RvX2Jvb2xlYW4oc2VsZiwgdmFsdWUpOgogICAgICAgICIiIlJldHVybiBhIGJvb2xlYW4gdmFsdWUgdHJhbnNsYXRpbmcgZnJvbSBvdGhlciB0eXBlcyBpZiBuZWNlc3NhcnkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgdmFsdWUubG93ZXIoKSBub3QgaW4gc2VsZi5CT09MRUFOX1NUQVRFUzoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm90IGEgYm9vbGVhbjogJXMnICUgdmFsdWUpCiAgICAgICAgcmV0dXJuIHNlbGYuQk9PTEVBTl9TVEFURVNbdmFsdWUubG93ZXIoKV0KCiAgICBkZWYgX3ZhbGlkYXRlX3ZhbHVlX3R5cGVzKHNlbGYsICosIHNlY3Rpb249IiIsIG9wdGlvbj0iIiwgdmFsdWU9IiIpOgogICAgICAgICIiIlJhaXNlcyBhIFR5cGVFcnJvciBmb3Igbm9uLXN0cmluZyB2YWx1ZXMuCgogICAgICAgIFRoZSBvbmx5IGxlZ2FsIG5vbi1zdHJpbmcgdmFsdWUgaWYgd2UgYWxsb3cgdmFsdWVsZXNzCiAgICAgICAgb3B0aW9ucyBpcyBOb25lLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhCiAgICAgICAgc3RyaW5nIGlmOgogICAgICAgIC0gd2UgZG8gbm90IGFsbG93IHZhbHVlbGVzcyBvcHRpb25zLCBvcgogICAgICAgIC0gd2UgYWxsb3cgdmFsdWVsZXNzIG9wdGlvbnMgYnV0IHRoZSB2YWx1ZSBpcyBub3QgTm9uZQoKICAgICAgICBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zIHRoaXMgbWV0aG9kIGlzIG5vdCB1c2VkIGluIGNsYXNzaWMgc2V0KCkKICAgICAgICBmb3IgUmF3Q29uZmlnUGFyc2Vycy4gSXQgaXMgaW52b2tlZCBpbiBldmVyeSBjYXNlIGZvciBtYXBwaW5nIHByb3RvY29sCiAgICAgICAgYWNjZXNzIGFuZCBpbiBDb25maWdQYXJzZXIuc2V0KCkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VjdGlvbiwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJzZWN0aW9uIG5hbWVzIG11c3QgYmUgc3RyaW5ncyIpCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3B0aW9uLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm9wdGlvbiBrZXlzIG11c3QgYmUgc3RyaW5ncyIpCiAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93X25vX3ZhbHVlIG9yIHZhbHVlOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigib3B0aW9uIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNvbnZlcnRlcnMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnZlcnRlcnMKCgpjbGFzcyBDb25maWdQYXJzZXIoUmF3Q29uZmlnUGFyc2VyKToKICAgICIiIkNvbmZpZ1BhcnNlciBpbXBsZW1lbnRpbmcgaW50ZXJwb2xhdGlvbi4iIiIKCiAgICBfREVGQVVMVF9JTlRFUlBPTEFUSU9OID0gQmFzaWNJbnRlcnBvbGF0aW9uKCkKCiAgICBkZWYgc2V0KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWU9Tm9uZSk6CiAgICAgICAgIiIiU2V0IGFuIG9wdGlvbi4gIEV4dGVuZHMgUmF3Q29uZmlnUGFyc2VyLnNldCBieSB2YWxpZGF0aW5nIHR5cGUgYW5kCiAgICAgICAgaW50ZXJwb2xhdGlvbiBzeW50YXggb24gdGhlIHZhbHVlLiIiIgogICAgICAgIHNlbGYuX3ZhbGlkYXRlX3ZhbHVlX3R5cGVzKG9wdGlvbj1vcHRpb24sIHZhbHVlPXZhbHVlKQogICAgICAgIHN1cGVyKCkuc2V0KHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUpCgogICAgZGVmIGFkZF9zZWN0aW9uKHNlbGYsIHNlY3Rpb24pOgogICAgICAgICIiIkNyZWF0ZSBhIG5ldyBzZWN0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uLiAgRXh0ZW5kcwogICAgICAgIFJhd0NvbmZpZ1BhcnNlci5hZGRfc2VjdGlvbiBieSB2YWxpZGF0aW5nIGlmIHRoZSBzZWN0aW9uIG5hbWUgaXMKICAgICAgICBhIHN0cmluZy4iIiIKICAgICAgICBzZWxmLl92YWxpZGF0ZV92YWx1ZV90eXBlcyhzZWN0aW9uPXNlY3Rpb24pCiAgICAgICAgc3VwZXIoKS5hZGRfc2VjdGlvbihzZWN0aW9uKQoKICAgIGRlZiBfcmVhZF9kZWZhdWx0cyhzZWxmLCBkZWZhdWx0cyk6CiAgICAgICAgIiIiUmVhZHMgdGhlIGRlZmF1bHRzIHBhc3NlZCBpbiB0aGUgaW5pdGlhbGl6ZXIsIGltcGxpY2l0bHkgY29udmVydGluZwogICAgICAgIHZhbHVlcyB0byBzdHJpbmdzIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIEFQSS4KCiAgICAgICAgRG9lcyBub3QgcGVyZm9ybSBpbnRlcnBvbGF0aW9uIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGhvbGRfaW50ZXJwb2xhdGlvbiA9IHNlbGYuX2ludGVycG9sYXRpb24KICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGlvbiA9IEludGVycG9sYXRpb24oKQogICAgICAgICAgICBzZWxmLnJlYWRfZGljdCh7c2VsZi5kZWZhdWx0X3NlY3Rpb246IGRlZmF1bHRzfSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl9pbnRlcnBvbGF0aW9uID0gaG9sZF9pbnRlcnBvbGF0aW9uCgoKY2xhc3MgU2FmZUNvbmZpZ1BhcnNlcihDb25maWdQYXJzZXIpOgogICAgIiIiQ29uZmlnUGFyc2VyIGFsaWFzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAiVGhlIFNhZmVDb25maWdQYXJzZXIgY2xhc3MgaGFzIGJlZW4gcmVuYW1lZCB0byBDb25maWdQYXJzZXIgIgogICAgICAgICAgICAiaW4gUHl0aG9uIDMuMi4gVGhpcyBhbGlhcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuMTIuIgogICAgICAgICAgICAiIFVzZSBDb25maWdQYXJzZXIgZGlyZWN0bHkgaW5zdGVhZC4iLAogICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MgogICAgICAgICkKCgpjbGFzcyBTZWN0aW9uUHJveHkoTXV0YWJsZU1hcHBpbmcpOgogICAgIiIiQSBwcm94eSBmb3IgYSBzaW5nbGUgc2VjdGlvbiBmcm9tIGEgcGFyc2VyLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIG5hbWUpOgogICAgICAgICIiIkNyZWF0ZXMgYSB2aWV3IG9uIGEgc2VjdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGBuYW1lYCBpbiBgcGFyc2VyYC4iIiIKICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgIGZvciBjb252IGluIHBhcnNlci5jb252ZXJ0ZXJzOgogICAgICAgICAgICBrZXkgPSAnZ2V0JyArIGNvbnYKICAgICAgICAgICAgZ2V0dGVyID0gZnVuY3Rvb2xzLnBhcnRpYWwoc2VsZi5nZXQsIF9pbXBsPWdldGF0dHIocGFyc2VyLCBrZXkpKQogICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGtleSwgZ2V0dGVyKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzxTZWN0aW9uOiB7fT4nLmZvcm1hdChzZWxmLl9uYW1lKQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIGlmIG5vdCBzZWxmLl9wYXJzZXIuaGFzX29wdGlvbihzZWxmLl9uYW1lLCBrZXkpOgogICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkpCiAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5nZXQoc2VsZi5fbmFtZSwga2V5KQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICBzZWxmLl9wYXJzZXIuX3ZhbGlkYXRlX3ZhbHVlX3R5cGVzKG9wdGlvbj1rZXksIHZhbHVlPXZhbHVlKQogICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuc2V0KHNlbGYuX25hbWUsIGtleSwgdmFsdWUpCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgaWYgbm90IChzZWxmLl9wYXJzZXIuaGFzX29wdGlvbihzZWxmLl9uYW1lLCBrZXkpIGFuZAogICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyLnJlbW92ZV9vcHRpb24oc2VsZi5fbmFtZSwga2V5KSk6CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5oYXNfb3B0aW9uKHNlbGYuX25hbWUsIGtleSkKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX29wdGlvbnMoKSkKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX29wdGlvbnMoKS5fX2l0ZXJfXygpCgogICAgZGVmIF9vcHRpb25zKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX25hbWUgIT0gc2VsZi5fcGFyc2VyLmRlZmF1bHRfc2VjdGlvbjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5vcHRpb25zKHNlbGYuX25hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5kZWZhdWx0cygpCgogICAgQHByb3BlcnR5CiAgICBkZWYgcGFyc2VyKHNlbGYpOgogICAgICAgICMgVGhlIHBhcnNlciBvYmplY3Qgb2YgdGhlIHByb3h5IGlzIHJlYWQtb25seS4KICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSBzZWN0aW9uIG9uIGEgcHJveHkgaXMgcmVhZC1vbmx5LgogICAgICAgIHJldHVybiBzZWxmLl9uYW1lCgogICAgZGVmIGdldChzZWxmLCBvcHRpb24sIGZhbGxiYWNrPU5vbmUsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAogICAgICAgICAgICBfaW1wbD1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIiIiR2V0IGFuIG9wdGlvbiB2YWx1ZS4KCiAgICAgICAgVW5sZXNzIGBmYWxsYmFja2AgaXMgcHJvdmlkZWQsIGBOb25lYCB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBvcHRpb24KICAgICAgICBpcyBub3QgZm91bmQuCgogICAgICAgICIiIgogICAgICAgICMgSWYgYF9pbXBsYCBpcyBwcm92aWRlZCwgaXQgc2hvdWxkIGJlIGEgZ2V0dGVyIG1ldGhvZCBvbiB0aGUgcGFyc2VyCiAgICAgICAgIyBvYmplY3QgdGhhdCBwcm92aWRlcyB0aGUgZGVzaXJlZCB0eXBlIGNvbnZlcnNpb24uCiAgICAgICAgaWYgbm90IF9pbXBsOgogICAgICAgICAgICBfaW1wbCA9IHNlbGYuX3BhcnNlci5nZXQKICAgICAgICByZXR1cm4gX2ltcGwoc2VsZi5fbmFtZSwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCiAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrLCAqKmt3YXJncykKCgpjbGFzcyBDb252ZXJ0ZXJNYXBwaW5nKE11dGFibGVNYXBwaW5nKToKICAgICIiIkVuYWJsZXMgcmV1c2Ugb2YgZ2V0KigpIG1ldGhvZHMgYmV0d2VlbiB0aGUgcGFyc2VyIGFuZCBzZWN0aW9uIHByb3hpZXMuCgogICAgSWYgYSBwYXJzZXIgY2xhc3MgaW1wbGVtZW50cyBhIGdldHRlciBkaXJlY3RseSwgdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4KICAgIGtleSB3aWxsIGJlIGBgTm9uZWBgLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIGNvbnZlcnRlciBuYW1lIGhlcmUgZW5hYmxlcwogICAgc2VjdGlvbiBwcm94aWVzIHRvIGZpbmQgYW5kIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gb24gdGhlIHBhcnNlciBjbGFzcy4KICAgICIiIgoKICAgIEdFVFRFUkNSRSA9IHJlLmNvbXBpbGUociJeZ2V0KD9QPG5hbWU+LispJCIpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlcik6CiAgICAgICAgc2VsZi5fcGFyc2VyID0gcGFyc2VyCiAgICAgICAgc2VsZi5fZGF0YSA9IHt9CiAgICAgICAgZm9yIGdldHRlciBpbiBkaXIoc2VsZi5fcGFyc2VyKToKICAgICAgICAgICAgbSA9IHNlbGYuR0VUVEVSQ1JFLm1hdGNoKGdldHRlcikKICAgICAgICAgICAgaWYgbm90IG0gb3Igbm90IGNhbGxhYmxlKGdldGF0dHIoc2VsZi5fcGFyc2VyLCBnZXR0ZXIpKToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIHNlbGYuX2RhdGFbbS5ncm91cCgnbmFtZScpXSA9IE5vbmUgICAjIFNlZSBjbGFzcyBkb2NzdHJpbmcuCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGFba2V5XQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGsgPSAnZ2V0JyArIGtleQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0luY29tcGF0aWJsZSBrZXk6IHt9ICh0eXBlOiB7fSknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycuZm9ybWF0KGtleSwgdHlwZShrZXkpKSkKICAgICAgICBpZiBrID09ICdnZXQnOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbmNvbXBhdGlibGUga2V5OiBjYW5ub3QgdXNlICIiIGFzIGEgbmFtZScpCiAgICAgICAgc2VsZi5fZGF0YVtrZXldID0gdmFsdWUKICAgICAgICBmdW5jID0gZnVuY3Rvb2xzLnBhcnRpYWwoc2VsZi5fcGFyc2VyLl9nZXRfY29udiwgY29udj12YWx1ZSkKICAgICAgICBmdW5jLmNvbnZlcnRlciA9IHZhbHVlCiAgICAgICAgc2V0YXR0cihzZWxmLl9wYXJzZXIsIGssIGZ1bmMpCiAgICAgICAgZm9yIHByb3h5IGluIHNlbGYuX3BhcnNlci52YWx1ZXMoKToKICAgICAgICAgICAgZ2V0dGVyID0gZnVuY3Rvb2xzLnBhcnRpYWwocHJveHkuZ2V0LCBfaW1wbD1mdW5jKQogICAgICAgICAgICBzZXRhdHRyKHByb3h5LCBrLCBnZXR0ZXIpCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBrID0gJ2dldCcgKyAoa2V5IG9yIE5vbmUpCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQogICAgICAgIGRlbCBzZWxmLl9kYXRhW2tleV0KICAgICAgICBmb3IgaW5zdCBpbiBpdGVydG9vbHMuY2hhaW4oKHNlbGYuX3BhcnNlciwpLCBzZWxmLl9wYXJzZXIudmFsdWVzKCkpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBkZWxhdHRyKGluc3QsIGspCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICMgZG9uJ3QgcmFpc2Ugc2luY2UgdGhlIGVudHJ5IHdhcyBwcmVzZW50IGluIF9kYXRhLCBzaWxlbnRseQogICAgICAgICAgICAgICAgIyBjbGVhbiB1cAogICAgICAgICAgICAgICAgY29udGludWUKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fZGF0YSkKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2RhdGEpClBLAwQUAAAAAAACIKNWAiAZn8RpAADEaQAADQAAAGNvbnRleHRsaWIucHkiIiJVdGlsaXRpZXMgZm9yIHdpdGgtc3RhdGVtZW50IGNvbnRleHRzLiAgU2VlIFBFUCAzNDMuIiIiCmltcG9ydCBhYmMKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IF9jb2xsZWN0aW9uc19hYmMKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCmZyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUsIEdlbmVyaWNBbGlhcwoKX19hbGxfXyA9IFsiYXN5bmNjb250ZXh0bWFuYWdlciIsICJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIm51bGxjb250ZXh0IiwKICAgICAgICAgICAiQWJzdHJhY3RDb250ZXh0TWFuYWdlciIsICJBYnN0cmFjdEFzeW5jQ29udGV4dE1hbmFnZXIiLAogICAgICAgICAgICJBc3luY0V4aXRTdGFjayIsICJDb250ZXh0RGVjb3JhdG9yIiwgIkV4aXRTdGFjayIsCiAgICAgICAgICAgInJlZGlyZWN0X3N0ZG91dCIsICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiLCAiYWNsb3NpbmciLAogICAgICAgICAgICJjaGRpciJdCgoKY2xhc3MgQWJzdHJhY3RDb250ZXh0TWFuYWdlcihhYmMuQUJDKToKCiAgICAiIiJBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjb250ZXh0IG1hbmFnZXJzLiIiIgoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGBzZWxmYCB1cG9uIGVudGVyaW5nIHRoZSBydW50aW1lIGNvbnRleHQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKToKICAgICAgICAiIiJSYWlzZSBhbnkgZXhjZXB0aW9uIHRyaWdnZXJlZCB3aXRoaW4gdGhlIHJ1bnRpbWUgY29udGV4dC4iIiIKICAgICAgICByZXR1cm4gTm9uZQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICBpZiBjbHMgaXMgQWJzdHJhY3RDb250ZXh0TWFuYWdlcjoKICAgICAgICAgICAgcmV0dXJuIF9jb2xsZWN0aW9uc19hYmMuX2NoZWNrX21ldGhvZHMoQywgIl9fZW50ZXJfXyIsICJfX2V4aXRfXyIpCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgoKY2xhc3MgQWJzdHJhY3RBc3luY0NvbnRleHRNYW5hZ2VyKGFiYy5BQkMpOgoKICAgICIiIkFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXJzLiIiIgoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgogICAgICAgICIiIlJldHVybiBgc2VsZmAgdXBvbiBlbnRlcmluZyB0aGUgcnVudGltZSBjb250ZXh0LiIiIgogICAgICAgIHJldHVybiBzZWxmCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOgogICAgICAgICIiIlJhaXNlIGFueSBleGNlcHRpb24gdHJpZ2dlcmVkIHdpdGhpbiB0aGUgcnVudGltZSBjb250ZXh0LiIiIgogICAgICAgIHJldHVybiBOb25lCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgIGlmIGNscyBpcyBBYnN0cmFjdEFzeW5jQ29udGV4dE1hbmFnZXI6CiAgICAgICAgICAgIHJldHVybiBfY29sbGVjdGlvbnNfYWJjLl9jaGVja19tZXRob2RzKEMsICJfX2FlbnRlcl9fIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYWV4aXRfXyIpCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgoKY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgogICAgIkEgYmFzZSBjbGFzcyBvciBtaXhpbiB0aGF0IGVuYWJsZXMgY29udGV4dCBtYW5hZ2VycyB0byB3b3JrIGFzIGRlY29yYXRvcnMuIgoKICAgIGRlZiBfcmVjcmVhdGVfY20oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgcmVjcmVhdGVkIGluc3RhbmNlIG9mIHNlbGYuCgogICAgICAgIEFsbG93cyBhbiBvdGhlcndpc2Ugb25lLXNob3QgY29udGV4dCBtYW5hZ2VyIGxpa2UKICAgICAgICBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIgdG8gc3VwcG9ydCB1c2UgYXMKICAgICAgICBhIGRlY29yYXRvciB2aWEgaW1wbGljaXQgcmVjcmVhdGlvbi4KCiAgICAgICAgVGhpcyBpcyBhIHByaXZhdGUgaW50ZXJmYWNlIGp1c3QgZm9yIF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlci4KICAgICAgICBTZWUgaXNzdWUgIzExNjQ3IGZvciBkZXRhaWxzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmMpOgogICAgICAgIEB3cmFwcyhmdW5jKQogICAgICAgIGRlZiBpbm5lcigqYXJncywgKiprd2RzKToKICAgICAgICAgICAgd2l0aCBzZWxmLl9yZWNyZWF0ZV9jbSgpOgogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dkcykKICAgICAgICByZXR1cm4gaW5uZXIKCgpjbGFzcyBBc3luY0NvbnRleHREZWNvcmF0b3Iob2JqZWN0KToKICAgICJBIGJhc2UgY2xhc3Mgb3IgbWl4aW4gdGhhdCBlbmFibGVzIGFzeW5jIGNvbnRleHQgbWFuYWdlcnMgdG8gd29yayBhcyBkZWNvcmF0b3JzLiIKCiAgICBkZWYgX3JlY3JlYXRlX2NtKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHJlY3JlYXRlZCBpbnN0YW5jZSBvZiBzZWxmLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmMpOgogICAgICAgIEB3cmFwcyhmdW5jKQogICAgICAgIGFzeW5jIGRlZiBpbm5lcigqYXJncywgKiprd2RzKToKICAgICAgICAgICAgYXN5bmMgd2l0aCBzZWxmLl9yZWNyZWF0ZV9jbSgpOgogICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZ1bmMoKmFyZ3MsICoqa3dkcykKICAgICAgICByZXR1cm4gaW5uZXIKCgpjbGFzcyBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJCYXNlOgogICAgIiIiU2hhcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIEBjb250ZXh0bWFuYWdlciBhbmQgQGFzeW5jY29udGV4dG1hbmFnZXIuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMsIGFyZ3MsIGt3ZHMpOgogICAgICAgIHNlbGYuZ2VuID0gZnVuYygqYXJncywgKiprd2RzKQogICAgICAgIHNlbGYuZnVuYywgc2VsZi5hcmdzLCBzZWxmLmt3ZHMgPSBmdW5jLCBhcmdzLCBrd2RzCiAgICAgICAgIyBJc3N1ZSAxOTMzMDogZW5zdXJlIGNvbnRleHQgbWFuYWdlciBpbnN0YW5jZXMgaGF2ZSBnb29kIGRvY3N0cmluZ3MKICAgICAgICBkb2MgPSBnZXRhdHRyKGZ1bmMsICJfX2RvY19fIiwgTm9uZSkKICAgICAgICBpZiBkb2MgaXMgTm9uZToKICAgICAgICAgICAgZG9jID0gdHlwZShzZWxmKS5fX2RvY19fCiAgICAgICAgc2VsZi5fX2RvY19fID0gZG9jCiAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0aGlzIHN0aWxsIGRvZXNuJ3QgcHJvdmlkZSBnb29kIGhlbHAgb3V0cHV0IHdoZW4KICAgICAgICAjIGluc3BlY3RpbmcgdGhlIGNyZWF0ZWQgY29udGV4dCBtYW5hZ2VyIGluc3RhbmNlcywgc2luY2UgcHlkb2MKICAgICAgICAjIGN1cnJlbnRseSBieXBhc3NlcyB0aGUgaW5zdGFuY2UgZG9jc3RyaW5nIGFuZCBzaG93cyB0aGUgZG9jc3RyaW5nCiAgICAgICAgIyBmb3IgdGhlIGNsYXNzIGluc3RlYWQuCiAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE5NDA0IGZvciBtb3JlIGRldGFpbHMuCgogICAgZGVmIF9yZWNyZWF0ZV9jbShzZWxmKToKICAgICAgICAjIF9HQ01CIGluc3RhbmNlcyBhcmUgb25lLXNob3QgY29udGV4dCBtYW5hZ2Vycywgc28gdGhlCiAgICAgICAgIyBDTSBtdXN0IGJlIHJlY3JlYXRlZCBlYWNoIHRpbWUgYSBkZWNvcmF0ZWQgZnVuY3Rpb24gaXMKICAgICAgICAjIGNhbGxlZAogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmZ1bmMsIHNlbGYuYXJncywgc2VsZi5rd2RzKQoKCmNsYXNzIF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlcigKICAgIF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlckJhc2UsCiAgICBBYnN0cmFjdENvbnRleHRNYW5hZ2VyLAogICAgQ29udGV4dERlY29yYXRvciwKKToKICAgICIiIkhlbHBlciBmb3IgQGNvbnRleHRtYW5hZ2VyIGRlY29yYXRvci4iIiIKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICMgZG8gbm90IGtlZXAgYXJncyBhbmQga3dkcyBhbGl2ZSB1bm5lY2Vzc2FyaWx5CiAgICAgICAgIyB0aGV5IGFyZSBvbmx5IG5lZWRlZCBmb3IgcmVjcmVhdGlvbiwgd2hpY2ggaXMgbm90IHBvc3NpYmxlIGFueW1vcmUKICAgICAgICBkZWwgc2VsZi5hcmdzLCBzZWxmLmt3ZHMsIHNlbGYuZnVuYwogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5nZW4pCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiZ2VuZXJhdG9yIGRpZG4ndCB5aWVsZCIpIGZyb20gTm9uZQoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXAsIHZhbHVlLCB0cmFjZWJhY2spOgogICAgICAgIGlmIHR5cCBpcyBOb25lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBuZXh0KHNlbGYuZ2VuKQogICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJnZW5lcmF0b3IgZGlkbid0IHN0b3AiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAjIE5lZWQgdG8gZm9yY2UgaW5zdGFudGlhdGlvbiBzbyB3ZSBjYW4gcmVsaWFibHkKICAgICAgICAgICAgICAgICMgdGVsbCBpZiB3ZSBnZXQgdGhlIHNhbWUgZXhjZXB0aW9uIGJhY2sKICAgICAgICAgICAgICAgIHZhbHVlID0gdHlwKCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5nZW4udGhyb3codHlwLCB2YWx1ZSwgdHJhY2ViYWNrKQogICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICAjIFN1cHByZXNzIFN0b3BJdGVyYXRpb24gKnVubGVzcyogaXQncyB0aGUgc2FtZSBleGNlcHRpb24gdGhhdAogICAgICAgICAgICAgICAgIyB3YXMgcGFzc2VkIHRvIHRocm93KCkuICBUaGlzIHByZXZlbnRzIGEgU3RvcEl0ZXJhdGlvbgogICAgICAgICAgICAgICAgIyByYWlzZWQgaW5zaWRlIHRoZSAid2l0aCIgc3RhdGVtZW50IGZyb20gYmVpbmcgc3VwcHJlc3NlZC4KICAgICAgICAgICAgICAgIHJldHVybiBleGMgaXMgbm90IHZhbHVlCiAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgIyBEb24ndCByZS1yYWlzZSB0aGUgcGFzc2VkIGluIGV4Y2VwdGlvbi4gKGlzc3VlMjcxMjIpCiAgICAgICAgICAgICAgICBpZiBleGMgaXMgdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgZXhjLl9fdHJhY2ViYWNrX18gPSB0cmFjZWJhY2sKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgICMgQXZvaWQgc3VwcHJlc3NpbmcgaWYgYSBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbgogICAgICAgICAgICAgICAgIyB3YXMgcGFzc2VkIHRvIHRocm93KCkgYW5kIGxhdGVyIHdyYXBwZWQgaW50byBhIFJ1bnRpbWVFcnJvcgogICAgICAgICAgICAgICAgIyAoc2VlIFBFUCA0NzkgZm9yIHN5bmMgZ2VuZXJhdG9yczsgYXN5bmMgZ2VuZXJhdG9ycyBhbHNvCiAgICAgICAgICAgICAgICAjIGhhdmUgdGhpcyBiZWhhdmlvcikuIEJ1dCBkbyB0aGlzIG9ubHkgaWYgdGhlIGV4Y2VwdGlvbiB3cmFwcGVkCiAgICAgICAgICAgICAgICAjIGJ5IHRoZSBSdW50aW1lRXJyb3IgaXMgYWN0dWFsbHkgU3RvcChBc3luYylJdGVyYXRpb24gKHNlZQogICAgICAgICAgICAgICAgIyBpc3N1ZTI5NjkyKS4KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHZhbHVlLCBTdG9wSXRlcmF0aW9uKQogICAgICAgICAgICAgICAgICAgIGFuZCBleGMuX19jYXVzZV9fIGlzIHZhbHVlCiAgICAgICAgICAgICAgICApOgogICAgICAgICAgICAgICAgICAgIHZhbHVlLl9fdHJhY2ViYWNrX18gPSB0cmFjZWJhY2sKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgICAgICMgb25seSByZS1yYWlzZSBpZiBpdCdzICpub3QqIHRoZSBleGNlcHRpb24gdGhhdCB3YXMKICAgICAgICAgICAgICAgICMgcGFzc2VkIHRvIHRocm93KCksIGJlY2F1c2UgX19leGl0X18oKSBtdXN0IG5vdCByYWlzZQogICAgICAgICAgICAgICAgIyBhbiBleGNlcHRpb24gdW5sZXNzIF9fZXhpdF9fKCkgaXRzZWxmIGZhaWxlZC4gIEJ1dCB0aHJvdygpCiAgICAgICAgICAgICAgICAjIGhhcyB0byByYWlzZSB0aGUgZXhjZXB0aW9uIHRvIHNpZ25hbCBwcm9wYWdhdGlvbiwgc28gdGhpcwogICAgICAgICAgICAgICAgIyBmaXhlcyB0aGUgaW1wZWRhbmNlIG1pc21hdGNoIGJldHdlZW4gdGhlIHRocm93KCkgcHJvdG9jb2wKICAgICAgICAgICAgICAgICMgYW5kIHRoZSBfX2V4aXRfXygpIHByb3RvY29sLgogICAgICAgICAgICAgICAgaWYgZXhjIGlzIG5vdCB2YWx1ZToKICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgZXhjLl9fdHJhY2ViYWNrX18gPSB0cmFjZWJhY2sKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImdlbmVyYXRvciBkaWRuJ3Qgc3RvcCBhZnRlciB0aHJvdygpIikKCmNsYXNzIF9Bc3luY0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKAogICAgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyQmFzZSwKICAgIEFic3RyYWN0QXN5bmNDb250ZXh0TWFuYWdlciwKICAgIEFzeW5jQ29udGV4dERlY29yYXRvciwKKToKICAgICIiIkhlbHBlciBmb3IgQGFzeW5jY29udGV4dG1hbmFnZXIgZGVjb3JhdG9yLiIiIgoKICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgogICAgICAgICMgZG8gbm90IGtlZXAgYXJncyBhbmQga3dkcyBhbGl2ZSB1bm5lY2Vzc2FyaWx5CiAgICAgICAgIyB0aGV5IGFyZSBvbmx5IG5lZWRlZCBmb3IgcmVjcmVhdGlvbiwgd2hpY2ggaXMgbm90IHBvc3NpYmxlIGFueW1vcmUKICAgICAgICBkZWwgc2VsZi5hcmdzLCBzZWxmLmt3ZHMsIHNlbGYuZnVuYwogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGFuZXh0KHNlbGYuZ2VuKQogICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiZ2VuZXJhdG9yIGRpZG4ndCB5aWVsZCIpIGZyb20gTm9uZQoKICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgdHlwLCB2YWx1ZSwgdHJhY2ViYWNrKToKICAgICAgICBpZiB0eXAgaXMgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYXdhaXQgYW5leHQoc2VsZi5nZW4pCiAgICAgICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiZ2VuZXJhdG9yIGRpZG4ndCBzdG9wIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBOZWVkIHRvIGZvcmNlIGluc3RhbnRpYXRpb24gc28gd2UgY2FuIHJlbGlhYmx5CiAgICAgICAgICAgICAgICAjIHRlbGwgaWYgd2UgZ2V0IHRoZSBzYW1lIGV4Y2VwdGlvbiBiYWNrCiAgICAgICAgICAgICAgICB2YWx1ZSA9IHR5cCgpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYuZ2VuLmF0aHJvdyh0eXAsIHZhbHVlLCB0cmFjZWJhY2spCiAgICAgICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb24gYXMgZXhjOgogICAgICAgICAgICAgICAgIyBTdXBwcmVzcyBTdG9wSXRlcmF0aW9uICp1bmxlc3MqIGl0J3MgdGhlIHNhbWUgZXhjZXB0aW9uIHRoYXQKICAgICAgICAgICAgICAgICMgd2FzIHBhc3NlZCB0byB0aHJvdygpLiAgVGhpcyBwcmV2ZW50cyBhIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgICAgICMgcmFpc2VkIGluc2lkZSB0aGUgIndpdGgiIHN0YXRlbWVudCBmcm9tIGJlaW5nIHN1cHByZXNzZWQuCiAgICAgICAgICAgICAgICByZXR1cm4gZXhjIGlzIG5vdCB2YWx1ZQogICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICMgRG9uJ3QgcmUtcmFpc2UgdGhlIHBhc3NlZCBpbiBleGNlcHRpb24uIChpc3N1ZTI3MTIyKQogICAgICAgICAgICAgICAgaWYgZXhjIGlzIHZhbHVlOgogICAgICAgICAgICAgICAgICAgIGV4Yy5fX3RyYWNlYmFja19fID0gdHJhY2ViYWNrCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAgICAjIEF2b2lkIHN1cHByZXNzaW5nIGlmIGEgU3RvcChBc3luYylJdGVyYXRpb24gZXhjZXB0aW9uCiAgICAgICAgICAgICAgICAjIHdhcyBwYXNzZWQgdG8gYXRocm93KCkgYW5kIGxhdGVyIHdyYXBwZWQgaW50byBhIFJ1bnRpbWVFcnJvcgogICAgICAgICAgICAgICAgIyAoc2VlIFBFUCA0NzkgZm9yIHN5bmMgZ2VuZXJhdG9yczsgYXN5bmMgZ2VuZXJhdG9ycyBhbHNvCiAgICAgICAgICAgICAgICAjIGhhdmUgdGhpcyBiZWhhdmlvcikuIEJ1dCBkbyB0aGlzIG9ubHkgaWYgdGhlIGV4Y2VwdGlvbiB3cmFwcGVkCiAgICAgICAgICAgICAgICAjIGJ5IHRoZSBSdW50aW1lRXJyb3IgaXMgYWN0dWFsbHkgU3RvcChBc3luYylJdGVyYXRpb24gKHNlZQogICAgICAgICAgICAgICAgIyBpc3N1ZTI5NjkyKS4KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHZhbHVlLCAoU3RvcEl0ZXJhdGlvbiwgU3RvcEFzeW5jSXRlcmF0aW9uKSkKICAgICAgICAgICAgICAgICAgICBhbmQgZXhjLl9fY2F1c2VfXyBpcyB2YWx1ZQogICAgICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgICAgICB2YWx1ZS5fX3RyYWNlYmFja19fID0gdHJhY2ViYWNrCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICAjIG9ubHkgcmUtcmFpc2UgaWYgaXQncyAqbm90KiB0aGUgZXhjZXB0aW9uIHRoYXQgd2FzCiAgICAgICAgICAgICAgICAjIHBhc3NlZCB0byB0aHJvdygpLCBiZWNhdXNlIF9fZXhpdF9fKCkgbXVzdCBub3QgcmFpc2UKICAgICAgICAgICAgICAgICMgYW4gZXhjZXB0aW9uIHVubGVzcyBfX2V4aXRfXygpIGl0c2VsZiBmYWlsZWQuICBCdXQgdGhyb3coKQogICAgICAgICAgICAgICAgIyBoYXMgdG8gcmFpc2UgdGhlIGV4Y2VwdGlvbiB0byBzaWduYWwgcHJvcGFnYXRpb24sIHNvIHRoaXMKICAgICAgICAgICAgICAgICMgZml4ZXMgdGhlIGltcGVkYW5jZSBtaXNtYXRjaCBiZXR3ZWVuIHRoZSB0aHJvdygpIHByb3RvY29sCiAgICAgICAgICAgICAgICAjIGFuZCB0aGUgX19leGl0X18oKSBwcm90b2NvbC4KICAgICAgICAgICAgICAgIGlmIGV4YyBpcyBub3QgdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgIGV4Yy5fX3RyYWNlYmFja19fID0gdHJhY2ViYWNrCiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJnZW5lcmF0b3IgZGlkbid0IHN0b3AgYWZ0ZXIgYXRocm93KCkiKQoKCmRlZiBjb250ZXh0bWFuYWdlcihmdW5jKToKICAgICIiIkBjb250ZXh0bWFuYWdlciBkZWNvcmF0b3IuCgogICAgVHlwaWNhbCB1c2FnZToKCiAgICAgICAgQGNvbnRleHRtYW5hZ2VyCiAgICAgICAgZGVmIHNvbWVfZ2VuZXJhdG9yKDxhcmd1bWVudHM+KToKICAgICAgICAgICAgPHNldHVwPgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB5aWVsZCA8dmFsdWU+CiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICA8Y2xlYW51cD4KCiAgICBUaGlzIG1ha2VzIHRoaXM6CgogICAgICAgIHdpdGggc29tZV9nZW5lcmF0b3IoPGFyZ3VtZW50cz4pIGFzIDx2YXJpYWJsZT46CiAgICAgICAgICAgIDxib2R5PgoKICAgIGVxdWl2YWxlbnQgdG8gdGhpczoKCiAgICAgICAgPHNldHVwPgogICAgICAgIHRyeToKICAgICAgICAgICAgPHZhcmlhYmxlPiA9IDx2YWx1ZT4KICAgICAgICAgICAgPGJvZHk+CiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgPGNsZWFudXA+CiAgICAiIiIKICAgIEB3cmFwcyhmdW5jKQogICAgZGVmIGhlbHBlcigqYXJncywgKiprd2RzKToKICAgICAgICByZXR1cm4gX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKGZ1bmMsIGFyZ3MsIGt3ZHMpCiAgICByZXR1cm4gaGVscGVyCgoKZGVmIGFzeW5jY29udGV4dG1hbmFnZXIoZnVuYyk6CiAgICAiIiJAYXN5bmNjb250ZXh0bWFuYWdlciBkZWNvcmF0b3IuCgogICAgVHlwaWNhbCB1c2FnZToKCiAgICAgICAgQGFzeW5jY29udGV4dG1hbmFnZXIKICAgICAgICBhc3luYyBkZWYgc29tZV9hc3luY19nZW5lcmF0b3IoPGFyZ3VtZW50cz4pOgogICAgICAgICAgICA8c2V0dXA+CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHlpZWxkIDx2YWx1ZT4KICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIDxjbGVhbnVwPgoKICAgIFRoaXMgbWFrZXMgdGhpczoKCiAgICAgICAgYXN5bmMgd2l0aCBzb21lX2FzeW5jX2dlbmVyYXRvcig8YXJndW1lbnRzPikgYXMgPHZhcmlhYmxlPjoKICAgICAgICAgICAgPGJvZHk+CgogICAgZXF1aXZhbGVudCB0byB0aGlzOgoKICAgICAgICA8c2V0dXA+CiAgICAgICAgdHJ5OgogICAgICAgICAgICA8dmFyaWFibGU+ID0gPHZhbHVlPgogICAgICAgICAgICA8Ym9keT4KICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICA8Y2xlYW51cD4KICAgICIiIgogICAgQHdyYXBzKGZ1bmMpCiAgICBkZWYgaGVscGVyKCphcmdzLCAqKmt3ZHMpOgogICAgICAgIHJldHVybiBfQXN5bmNHZW5lcmF0b3JDb250ZXh0TWFuYWdlcihmdW5jLCBhcmdzLCBrd2RzKQogICAgcmV0dXJuIGhlbHBlcgoKCmNsYXNzIGNsb3NpbmcoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAiIiJDb250ZXh0IHRvIGF1dG9tYXRpY2FsbHkgY2xvc2Ugc29tZXRoaW5nIGF0IHRoZSBlbmQgb2YgYSBibG9jay4KCiAgICBDb2RlIGxpa2UgdGhpczoKCiAgICAgICAgd2l0aCBjbG9zaW5nKDxtb2R1bGU+Lm9wZW4oPGFyZ3VtZW50cz4pKSBhcyBmOgogICAgICAgICAgICA8YmxvY2s+CgogICAgaXMgZXF1aXZhbGVudCB0byB0aGlzOgoKICAgICAgICBmID0gPG1vZHVsZT4ub3Blbig8YXJndW1lbnRzPikKICAgICAgICB0cnk6CiAgICAgICAgICAgIDxibG9jaz4KICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBmLmNsb3NlKCkKCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aGluZyk6CiAgICAgICAgc2VsZi50aGluZyA9IHRoaW5nCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnRoaW5nCiAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19pbmZvKToKICAgICAgICBzZWxmLnRoaW5nLmNsb3NlKCkKCgpjbGFzcyBhY2xvc2luZyhBYnN0cmFjdEFzeW5jQ29udGV4dE1hbmFnZXIpOgogICAgIiIiQXN5bmMgY29udGV4dCBtYW5hZ2VyIGZvciBzYWZlbHkgZmluYWxpemluZyBhbiBhc3luY2hyb25vdXNseSBjbGVhbmVkLXVwCiAgICByZXNvdXJjZSBzdWNoIGFzIGFuIGFzeW5jIGdlbmVyYXRvciwgY2FsbGluZyBpdHMgYGBhY2xvc2UoKWBgIG1ldGhvZC4KCiAgICBDb2RlIGxpa2UgdGhpczoKCiAgICAgICAgYXN5bmMgd2l0aCBhY2xvc2luZyg8bW9kdWxlPi5mZXRjaCg8YXJndW1lbnRzPikpIGFzIGFnZW46CiAgICAgICAgICAgIDxibG9jaz4KCiAgICBpcyBlcXVpdmFsZW50IHRvIHRoaXM6CgogICAgICAgIGFnZW4gPSA8bW9kdWxlPi5mZXRjaCg8YXJndW1lbnRzPikKICAgICAgICB0cnk6CiAgICAgICAgICAgIDxibG9jaz4KICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBhd2FpdCBhZ2VuLmFjbG9zZSgpCgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGhpbmcpOgogICAgICAgIHNlbGYudGhpbmcgPSB0aGluZwogICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmV4Y19pbmZvKToKICAgICAgICBhd2FpdCBzZWxmLnRoaW5nLmFjbG9zZSgpCgoKY2xhc3MgX1JlZGlyZWN0U3RyZWFtKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgoKICAgIF9zdHJlYW0gPSBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5ld190YXJnZXQpOgogICAgICAgIHNlbGYuX25ld190YXJnZXQgPSBuZXdfdGFyZ2V0CiAgICAgICAgIyBXZSB1c2UgYSBsaXN0IG9mIG9sZCB0YXJnZXRzIHRvIG1ha2UgdGhpcyBDTSByZS1lbnRyYW50CiAgICAgICAgc2VsZi5fb2xkX3RhcmdldHMgPSBbXQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgc2VsZi5fb2xkX3RhcmdldHMuYXBwZW5kKGdldGF0dHIoc3lzLCBzZWxmLl9zdHJlYW0pKQogICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLl9zdHJlYW0sIHNlbGYuX25ld190YXJnZXQpCiAgICAgICAgcmV0dXJuIHNlbGYuX25ld190YXJnZXQKCiAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjdHlwZSwgZXhjaW5zdCwgZXhjdGIpOgogICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLl9zdHJlYW0sIHNlbGYuX29sZF90YXJnZXRzLnBvcCgpKQoKCmNsYXNzIHJlZGlyZWN0X3N0ZG91dChfUmVkaXJlY3RTdHJlYW0pOgogICAgIiIiQ29udGV4dCBtYW5hZ2VyIGZvciB0ZW1wb3JhcmlseSByZWRpcmVjdGluZyBzdGRvdXQgdG8gYW5vdGhlciBmaWxlLgoKICAgICAgICAjIEhvdyB0byBzZW5kIGhlbHAoKSB0byBzdGRlcnIKICAgICAgICB3aXRoIHJlZGlyZWN0X3N0ZG91dChzeXMuc3RkZXJyKToKICAgICAgICAgICAgaGVscChkaXIpCgogICAgICAgICMgSG93IHRvIHdyaXRlIGhlbHAoKSB0byBhIGZpbGUKICAgICAgICB3aXRoIG9wZW4oJ2hlbHAudHh0JywgJ3cnKSBhcyBmOgogICAgICAgICAgICB3aXRoIHJlZGlyZWN0X3N0ZG91dChmKToKICAgICAgICAgICAgICAgIGhlbHAocG93KQogICAgIiIiCgogICAgX3N0cmVhbSA9ICJzdGRvdXQiCgoKY2xhc3MgcmVkaXJlY3Rfc3RkZXJyKF9SZWRpcmVjdFN0cmVhbSk6CiAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRlbXBvcmFyaWx5IHJlZGlyZWN0aW5nIHN0ZGVyciB0byBhbm90aGVyIGZpbGUuIiIiCgogICAgX3N0cmVhbSA9ICJzdGRlcnIiCgoKY2xhc3Mgc3VwcHJlc3MoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gc3VwcHJlc3Mgc3BlY2lmaWVkIGV4Y2VwdGlvbnMKCiAgICBBZnRlciB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGV4ZWN1dGlvbiBwcm9jZWVkcyB3aXRoIHRoZSBuZXh0CiAgICBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSB3aXRoIHN0YXRlbWVudC4KCiAgICAgICAgIHdpdGggc3VwcHJlc3MoRmlsZU5vdEZvdW5kRXJyb3IpOgogICAgICAgICAgICAgb3MucmVtb3ZlKHNvbWVmaWxlKQogICAgICAgICAjIEV4ZWN1dGlvbiBzdGlsbCByZXN1bWVzIGhlcmUgaWYgdGhlIGZpbGUgd2FzIGFscmVhZHkgcmVtb3ZlZAogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICpleGNlcHRpb25zKToKICAgICAgICBzZWxmLl9leGNlcHRpb25zID0gZXhjZXB0aW9ucwoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcGFzcwoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGN0eXBlLCBleGNpbnN0LCBleGN0Yik6CiAgICAgICAgIyBVbmxpa2UgaXNpbnN0YW5jZSBhbmQgaXNzdWJjbGFzcywgQ1B5dGhvbiBleGNlcHRpb24gaGFuZGxpbmcKICAgICAgICAjIGN1cnJlbnRseSBvbmx5IGxvb2tzIGF0IHRoZSBjb25jcmV0ZSB0eXBlIGhpZXJhcmNoeSAoaWdub3JpbmcKICAgICAgICAjIHRoZSBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tpbmcgaG9va3MpLiBXaGlsZSBHdWlkbyBjb25zaWRlcnMKICAgICAgICAjIHRoYXQgYSBidWcgcmF0aGVyIHRoYW4gYSBmZWF0dXJlLCBpdCdzIGEgZmFpcmx5IGhhcmQgb25lIHRvIGZpeAogICAgICAgICMgZHVlIHRvIHZhcmlvdXMgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gc3VwcHJlc3MgcHJvdmlkZXMKICAgICAgICAjIHRoZSBzaW1wbGVyIGlzc3ViY2xhc3MgYmFzZWQgc2VtYW50aWNzLCByYXRoZXIgdGhhbiB0cnlpbmcgdG8KICAgICAgICAjIGV4YWN0bHkgcmVwcm9kdWNlIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgQ1B5dGhvbiBpbnRlcnByZXRlci4KICAgICAgICAjCiAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEyMDI5IGZvciBtb3JlIGRldGFpbHMKICAgICAgICByZXR1cm4gZXhjdHlwZSBpcyBub3QgTm9uZSBhbmQgaXNzdWJjbGFzcyhleGN0eXBlLCBzZWxmLl9leGNlcHRpb25zKQoKCmNsYXNzIF9CYXNlRXhpdFN0YWNrOgogICAgIiIiQSBiYXNlIGNsYXNzIGZvciBFeGl0U3RhY2sgYW5kIEFzeW5jRXhpdFN0YWNrLiIiIgoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfY3JlYXRlX2V4aXRfd3JhcHBlcihjbSwgY21fZXhpdCk6CiAgICAgICAgcmV0dXJuIE1ldGhvZFR5cGUoY21fZXhpdCwgY20pCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9jcmVhdGVfY2Jfd3JhcHBlcihjYWxsYmFjaywgLywgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgZGVmIF9leGl0X3dyYXBwZXIoZXhjX3R5cGUsIGV4YywgdGIpOgogICAgICAgICAgICBjYWxsYmFjaygqYXJncywgKiprd2RzKQogICAgICAgIHJldHVybiBfZXhpdF93cmFwcGVyCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX2V4aXRfY2FsbGJhY2tzID0gZGVxdWUoKQoKICAgIGRlZiBwb3BfYWxsKHNlbGYpOgogICAgICAgICIiIlByZXNlcnZlIHRoZSBjb250ZXh0IHN0YWNrIGJ5IHRyYW5zZmVycmluZyBpdCB0byBhIG5ldyBpbnN0YW5jZS4iIiIKICAgICAgICBuZXdfc3RhY2sgPSB0eXBlKHNlbGYpKCkKICAgICAgICBuZXdfc3RhY2suX2V4aXRfY2FsbGJhY2tzID0gc2VsZi5fZXhpdF9jYWxsYmFja3MKICAgICAgICBzZWxmLl9leGl0X2NhbGxiYWNrcyA9IGRlcXVlKCkKICAgICAgICByZXR1cm4gbmV3X3N0YWNrCgogICAgZGVmIHB1c2goc2VsZiwgZXhpdCk6CiAgICAgICAgIiIiUmVnaXN0ZXJzIGEgY2FsbGJhY2sgd2l0aCB0aGUgc3RhbmRhcmQgX19leGl0X18gbWV0aG9kIHNpZ25hdHVyZS4KCiAgICAgICAgQ2FuIHN1cHByZXNzIGV4Y2VwdGlvbnMgdGhlIHNhbWUgd2F5IF9fZXhpdF9fIG1ldGhvZCBjYW4uCiAgICAgICAgQWxzbyBhY2NlcHRzIGFueSBvYmplY3Qgd2l0aCBhbiBfX2V4aXRfXyBtZXRob2QgKHJlZ2lzdGVyaW5nIGEgY2FsbAogICAgICAgIHRvIHRoZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IGl0c2VsZikuCiAgICAgICAgIiIiCiAgICAgICAgIyBXZSB1c2UgYW4gdW5ib3VuZCBtZXRob2QgcmF0aGVyIHRoYW4gYSBib3VuZCBtZXRob2QgdG8gZm9sbG93CiAgICAgICAgIyB0aGUgc3RhbmRhcmQgbG9va3VwIGJlaGF2aW91ciBmb3Igc3BlY2lhbCBtZXRob2RzLgogICAgICAgIF9jYl90eXBlID0gdHlwZShleGl0KQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGV4aXRfbWV0aG9kID0gX2NiX3R5cGUuX19leGl0X18KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICMgTm90IGEgY29udGV4dCBtYW5hZ2VyLCBzbyBhc3N1bWUgaXQncyBhIGNhbGxhYmxlLgogICAgICAgICAgICBzZWxmLl9wdXNoX2V4aXRfY2FsbGJhY2soZXhpdCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9wdXNoX2NtX2V4aXQoZXhpdCwgZXhpdF9tZXRob2QpCiAgICAgICAgcmV0dXJuIGV4aXQgICMgQWxsb3cgdXNlIGFzIGEgZGVjb3JhdG9yLgoKICAgIGRlZiBlbnRlcl9jb250ZXh0KHNlbGYsIGNtKToKICAgICAgICAiIiJFbnRlcnMgdGhlIHN1cHBsaWVkIGNvbnRleHQgbWFuYWdlci4KCiAgICAgICAgSWYgc3VjY2Vzc2Z1bCwgYWxzbyBwdXNoZXMgaXRzIF9fZXhpdF9fIG1ldGhvZCBhcyBhIGNhbGxiYWNrIGFuZAogICAgICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgX19lbnRlcl9fIG1ldGhvZC4KICAgICAgICAiIiIKICAgICAgICAjIFdlIGxvb2sgdXAgdGhlIHNwZWNpYWwgbWV0aG9kcyBvbiB0aGUgdHlwZSB0byBtYXRjaCB0aGUgd2l0aAogICAgICAgICMgc3RhdGVtZW50LgogICAgICAgIGNscyA9IHR5cGUoY20pCiAgICAgICAgdHJ5OgogICAgICAgICAgICBfZW50ZXIgPSBjbHMuX19lbnRlcl9fCiAgICAgICAgICAgIF9leGl0ID0gY2xzLl9fZXhpdF9fCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiIne2Nscy5fX21vZHVsZV9ffS57Y2xzLl9fcXVhbG5hbWVfX30nIG9iamVjdCBkb2VzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYibm90IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCIpIGZyb20gTm9uZQogICAgICAgIHJlc3VsdCA9IF9lbnRlcihjbSkKICAgICAgICBzZWxmLl9wdXNoX2NtX2V4aXQoY20sIF9leGl0KQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgY2FsbGJhY2soc2VsZiwgY2FsbGJhY2ssIC8sICphcmdzLCAqKmt3ZHMpOgogICAgICAgICIiIlJlZ2lzdGVycyBhbiBhcmJpdHJhcnkgY2FsbGJhY2sgYW5kIGFyZ3VtZW50cy4KCiAgICAgICAgQ2Fubm90IHN1cHByZXNzIGV4Y2VwdGlvbnMuCiAgICAgICAgIiIiCiAgICAgICAgX2V4aXRfd3JhcHBlciA9IHNlbGYuX2NyZWF0ZV9jYl93cmFwcGVyKGNhbGxiYWNrLCAqYXJncywgKiprd2RzKQoKICAgICAgICAjIFdlIGNoYW5nZWQgdGhlIHNpZ25hdHVyZSwgc28gdXNpbmcgQHdyYXBzIGlzIG5vdCBhcHByb3ByaWF0ZSwgYnV0CiAgICAgICAgIyBzZXR0aW5nIF9fd3JhcHBlZF9fIG1heSBzdGlsbCBoZWxwIHdpdGggaW50cm9zcGVjdGlvbi4KICAgICAgICBfZXhpdF93cmFwcGVyLl9fd3JhcHBlZF9fID0gY2FsbGJhY2sKICAgICAgICBzZWxmLl9wdXNoX2V4aXRfY2FsbGJhY2soX2V4aXRfd3JhcHBlcikKICAgICAgICByZXR1cm4gY2FsbGJhY2sgICMgQWxsb3cgdXNlIGFzIGEgZGVjb3JhdG9yCgogICAgZGVmIF9wdXNoX2NtX2V4aXQoc2VsZiwgY20sIGNtX2V4aXQpOgogICAgICAgICIiIkhlbHBlciB0byBjb3JyZWN0bHkgcmVnaXN0ZXIgY2FsbGJhY2tzIHRvIF9fZXhpdF9fIG1ldGhvZHMuIiIiCiAgICAgICAgX2V4aXRfd3JhcHBlciA9IHNlbGYuX2NyZWF0ZV9leGl0X3dyYXBwZXIoY20sIGNtX2V4aXQpCiAgICAgICAgc2VsZi5fcHVzaF9leGl0X2NhbGxiYWNrKF9leGl0X3dyYXBwZXIsIFRydWUpCgogICAgZGVmIF9wdXNoX2V4aXRfY2FsbGJhY2soc2VsZiwgY2FsbGJhY2ssIGlzX3N5bmM9VHJ1ZSk6CiAgICAgICAgc2VsZi5fZXhpdF9jYWxsYmFja3MuYXBwZW5kKChpc19zeW5jLCBjYWxsYmFjaykpCgoKIyBJbnNwaXJlZCBieSBkaXNjdXNzaW9ucyBvbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTM1ODUKY2xhc3MgRXhpdFN0YWNrKF9CYXNlRXhpdFN0YWNrLCBBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgZHluYW1pYyBtYW5hZ2VtZW50IG9mIGEgc3RhY2sgb2YgZXhpdCBjYWxsYmFja3MuCgogICAgRm9yIGV4YW1wbGU6CiAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKICAgICAgICAgICAgZmlsZXMgPSBbc3RhY2suZW50ZXJfY29udGV4dChvcGVuKGZuYW1lKSkgZm9yIGZuYW1lIGluIGZpbGVuYW1lc10KICAgICAgICAgICAgIyBBbGwgb3BlbmVkIGZpbGVzIHdpbGwgYXV0b21hdGljYWxseSBiZSBjbG9zZWQgYXQgdGhlIGVuZCBvZgogICAgICAgICAgICAjIHRoZSB3aXRoIHN0YXRlbWVudCwgZXZlbiBpZiBhdHRlbXB0cyB0byBvcGVuIGZpbGVzIGxhdGVyCiAgICAgICAgICAgICMgaW4gdGhlIGxpc3QgcmFpc2UgYW4gZXhjZXB0aW9uLgogICAgIiIiCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgogICAgICAgIHJlY2VpdmVkX2V4YyA9IGV4Y19kZXRhaWxzWzBdIGlzIG5vdCBOb25lCgogICAgICAgICMgV2UgbWFuaXB1bGF0ZSB0aGUgZXhjZXB0aW9uIHN0YXRlIHNvIGl0IGJlaGF2ZXMgYXMgdGhvdWdoCiAgICAgICAgIyB3ZSB3ZXJlIGFjdHVhbGx5IG5lc3RpbmcgbXVsdGlwbGUgd2l0aCBzdGF0ZW1lbnRzCiAgICAgICAgZnJhbWVfZXhjID0gc3lzLmV4Y19pbmZvKClbMV0KICAgICAgICBkZWYgX2ZpeF9leGNlcHRpb25fY29udGV4dChuZXdfZXhjLCBvbGRfZXhjKToKICAgICAgICAgICAgIyBDb250ZXh0IG1heSBub3QgYmUgY29ycmVjdCwgc28gZmluZCB0aGUgZW5kIG9mIHRoZSBjaGFpbgogICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgZXhjX2NvbnRleHQgPSBuZXdfZXhjLl9fY29udGV4dF9fCiAgICAgICAgICAgICAgICBpZiBleGNfY29udGV4dCBpcyBOb25lIG9yIGV4Y19jb250ZXh0IGlzIG9sZF9leGM6CiAgICAgICAgICAgICAgICAgICAgIyBDb250ZXh0IGlzIGFscmVhZHkgc2V0IGNvcnJlY3RseSAoc2VlIGlzc3VlIDIwMzE3KQogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgaWYgZXhjX2NvbnRleHQgaXMgZnJhbWVfZXhjOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBuZXdfZXhjID0gZXhjX2NvbnRleHQKICAgICAgICAgICAgIyBDaGFuZ2UgdGhlIGVuZCBvZiB0aGUgY2hhaW4gdG8gcG9pbnQgdG8gdGhlIGV4Y2VwdGlvbgogICAgICAgICAgICAjIHdlIGV4cGVjdCBpdCB0byByZWZlcmVuY2UKICAgICAgICAgICAgbmV3X2V4Yy5fX2NvbnRleHRfXyA9IG9sZF9leGMKCiAgICAgICAgIyBDYWxsYmFja3MgYXJlIGludm9rZWQgaW4gTElGTyBvcmRlciB0byBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mCiAgICAgICAgIyBuZXN0ZWQgY29udGV4dCBtYW5hZ2VycwogICAgICAgIHN1cHByZXNzZWRfZXhjID0gRmFsc2UKICAgICAgICBwZW5kaW5nX3JhaXNlID0gRmFsc2UKICAgICAgICB3aGlsZSBzZWxmLl9leGl0X2NhbGxiYWNrczoKICAgICAgICAgICAgaXNfc3luYywgY2IgPSBzZWxmLl9leGl0X2NhbGxiYWNrcy5wb3AoKQogICAgICAgICAgICBhc3NlcnQgaXNfc3luYwogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBjYigqZXhjX2RldGFpbHMpOgogICAgICAgICAgICAgICAgICAgIHN1cHByZXNzZWRfZXhjID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgIHBlbmRpbmdfcmFpc2UgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzID0gKE5vbmUsIE5vbmUsIE5vbmUpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIG5ld19leGNfZGV0YWlscyA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgICAgICAgICAjIHNpbXVsYXRlIHRoZSBzdGFjayBvZiBleGNlcHRpb25zIGJ5IHNldHRpbmcgdGhlIGNvbnRleHQKICAgICAgICAgICAgICAgIF9maXhfZXhjZXB0aW9uX2NvbnRleHQobmV3X2V4Y19kZXRhaWxzWzFdLCBleGNfZGV0YWlsc1sxXSkKICAgICAgICAgICAgICAgIHBlbmRpbmdfcmFpc2UgPSBUcnVlCiAgICAgICAgICAgICAgICBleGNfZGV0YWlscyA9IG5ld19leGNfZGV0YWlscwogICAgICAgIGlmIHBlbmRpbmdfcmFpc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICMgYmFyZSAicmFpc2UgZXhjX2RldGFpbHNbMV0iIHJlcGxhY2VzIG91ciBjYXJlZnVsbHkKICAgICAgICAgICAgICAgICMgc2V0LXVwIGNvbnRleHQKICAgICAgICAgICAgICAgIGZpeGVkX2N0eCA9IGV4Y19kZXRhaWxzWzFdLl9fY29udGV4dF9fCiAgICAgICAgICAgICAgICByYWlzZSBleGNfZGV0YWlsc1sxXQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzWzFdLl9fY29udGV4dF9fID0gZml4ZWRfY3R4CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIHJldHVybiByZWNlaXZlZF9leGMgYW5kIHN1cHByZXNzZWRfZXhjCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkltbWVkaWF0ZWx5IHVud2luZCB0aGUgY29udGV4dCBzdGFjay4iIiIKICAgICAgICBzZWxmLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCgoKIyBJbnNwaXJlZCBieSBkaXNjdXNzaW9ucyBvbiBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI5MzAyCmNsYXNzIEFzeW5jRXhpdFN0YWNrKF9CYXNlRXhpdFN0YWNrLCBBYnN0cmFjdEFzeW5jQ29udGV4dE1hbmFnZXIpOgogICAgIiIiQXN5bmMgY29udGV4dCBtYW5hZ2VyIGZvciBkeW5hbWljIG1hbmFnZW1lbnQgb2YgYSBzdGFjayBvZiBleGl0CiAgICBjYWxsYmFja3MuCgogICAgRm9yIGV4YW1wbGU6CiAgICAgICAgYXN5bmMgd2l0aCBBc3luY0V4aXRTdGFjaygpIGFzIHN0YWNrOgogICAgICAgICAgICBjb25uZWN0aW9ucyA9IFthd2FpdCBzdGFjay5lbnRlcl9hc3luY19jb250ZXh0KGdldF9jb25uZWN0aW9uKCkpCiAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KV0KICAgICAgICAgICAgIyBBbGwgb3BlbmVkIGNvbm5lY3Rpb25zIHdpbGwgYXV0b21hdGljYWxseSBiZSByZWxlYXNlZCBhdCB0aGUKICAgICAgICAgICAgIyBlbmQgb2YgdGhlIGFzeW5jIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gYQogICAgICAgICAgICAjIGNvbm5lY3Rpb24gbGF0ZXIgaW4gdGhlIGxpc3QgcmFpc2UgYW4gZXhjZXB0aW9uLgogICAgIiIiCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9jcmVhdGVfYXN5bmNfZXhpdF93cmFwcGVyKGNtLCBjbV9leGl0KToKICAgICAgICByZXR1cm4gTWV0aG9kVHlwZShjbV9leGl0LCBjbSkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2NyZWF0ZV9hc3luY19jYl93cmFwcGVyKGNhbGxiYWNrLCAvLCAqYXJncywgKiprd2RzKToKICAgICAgICBhc3luYyBkZWYgX2V4aXRfd3JhcHBlcihleGNfdHlwZSwgZXhjLCB0Yik6CiAgICAgICAgICAgIGF3YWl0IGNhbGxiYWNrKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgcmV0dXJuIF9leGl0X3dyYXBwZXIKCiAgICBhc3luYyBkZWYgZW50ZXJfYXN5bmNfY29udGV4dChzZWxmLCBjbSk6CiAgICAgICAgIiIiRW50ZXJzIHRoZSBzdXBwbGllZCBhc3luYyBjb250ZXh0IG1hbmFnZXIuCgogICAgICAgIElmIHN1Y2Nlc3NmdWwsIGFsc28gcHVzaGVzIGl0cyBfX2FleGl0X18gbWV0aG9kIGFzIGEgY2FsbGJhY2sgYW5kCiAgICAgICAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBfX2FlbnRlcl9fIG1ldGhvZC4KICAgICAgICAiIiIKICAgICAgICBjbHMgPSB0eXBlKGNtKQogICAgICAgIHRyeToKICAgICAgICAgICAgX2VudGVyID0gY2xzLl9fYWVudGVyX18KICAgICAgICAgICAgX2V4aXQgPSBjbHMuX19hZXhpdF9fCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiIne2Nscy5fX21vZHVsZV9ffS57Y2xzLl9fcXVhbG5hbWVfX30nIG9iamVjdCBkb2VzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYibm90IHN1cHBvcnQgdGhlIGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkgZnJvbSBOb25lCiAgICAgICAgcmVzdWx0ID0gYXdhaXQgX2VudGVyKGNtKQogICAgICAgIHNlbGYuX3B1c2hfYXN5bmNfY21fZXhpdChjbSwgX2V4aXQpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBwdXNoX2FzeW5jX2V4aXQoc2VsZiwgZXhpdCk6CiAgICAgICAgIiIiUmVnaXN0ZXJzIGEgY29yb3V0aW5lIGZ1bmN0aW9uIHdpdGggdGhlIHN0YW5kYXJkIF9fYWV4aXRfXyBtZXRob2QKICAgICAgICBzaWduYXR1cmUuCgogICAgICAgIENhbiBzdXBwcmVzcyBleGNlcHRpb25zIHRoZSBzYW1lIHdheSBfX2FleGl0X18gbWV0aG9kIGNhbi4KICAgICAgICBBbHNvIGFjY2VwdHMgYW55IG9iamVjdCB3aXRoIGFuIF9fYWV4aXRfXyBtZXRob2QgKHJlZ2lzdGVyaW5nIGEgY2FsbAogICAgICAgIHRvIHRoZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IGl0c2VsZikuCiAgICAgICAgIiIiCiAgICAgICAgX2NiX3R5cGUgPSB0eXBlKGV4aXQpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBleGl0X21ldGhvZCA9IF9jYl90eXBlLl9fYWV4aXRfXwogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIyBOb3QgYW4gYXN5bmMgY29udGV4dCBtYW5hZ2VyLCBzbyBhc3N1bWUgaXQncyBhIGNvcm91dGluZSBmdW5jdGlvbgogICAgICAgICAgICBzZWxmLl9wdXNoX2V4aXRfY2FsbGJhY2soZXhpdCwgRmFsc2UpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fcHVzaF9hc3luY19jbV9leGl0KGV4aXQsIGV4aXRfbWV0aG9kKQogICAgICAgIHJldHVybiBleGl0ICAjIEFsbG93IHVzZSBhcyBhIGRlY29yYXRvcgoKICAgIGRlZiBwdXNoX2FzeW5jX2NhbGxiYWNrKHNlbGYsIGNhbGxiYWNrLCAvLCAqYXJncywgKiprd2RzKToKICAgICAgICAiIiJSZWdpc3RlcnMgYW4gYXJiaXRyYXJ5IGNvcm91dGluZSBmdW5jdGlvbiBhbmQgYXJndW1lbnRzLgoKICAgICAgICBDYW5ub3Qgc3VwcHJlc3MgZXhjZXB0aW9ucy4KICAgICAgICAiIiIKICAgICAgICBfZXhpdF93cmFwcGVyID0gc2VsZi5fY3JlYXRlX2FzeW5jX2NiX3dyYXBwZXIoY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCgogICAgICAgICMgV2UgY2hhbmdlZCB0aGUgc2lnbmF0dXJlLCBzbyB1c2luZyBAd3JhcHMgaXMgbm90IGFwcHJvcHJpYXRlLCBidXQKICAgICAgICAjIHNldHRpbmcgX193cmFwcGVkX18gbWF5IHN0aWxsIGhlbHAgd2l0aCBpbnRyb3NwZWN0aW9uLgogICAgICAgIF9leGl0X3dyYXBwZXIuX193cmFwcGVkX18gPSBjYWxsYmFjawogICAgICAgIHNlbGYuX3B1c2hfZXhpdF9jYWxsYmFjayhfZXhpdF93cmFwcGVyLCBGYWxzZSkKICAgICAgICByZXR1cm4gY2FsbGJhY2sgICMgQWxsb3cgdXNlIGFzIGEgZGVjb3JhdG9yCgogICAgYXN5bmMgZGVmIGFjbG9zZShzZWxmKToKICAgICAgICAiIiJJbW1lZGlhdGVseSB1bndpbmQgdGhlIGNvbnRleHQgc3RhY2suIiIiCiAgICAgICAgYXdhaXQgc2VsZi5fX2FleGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKCiAgICBkZWYgX3B1c2hfYXN5bmNfY21fZXhpdChzZWxmLCBjbSwgY21fZXhpdCk6CiAgICAgICAgIiIiSGVscGVyIHRvIGNvcnJlY3RseSByZWdpc3RlciBjb3JvdXRpbmUgZnVuY3Rpb24gdG8gX19hZXhpdF9fCiAgICAgICAgbWV0aG9kLiIiIgogICAgICAgIF9leGl0X3dyYXBwZXIgPSBzZWxmLl9jcmVhdGVfYXN5bmNfZXhpdF93cmFwcGVyKGNtLCBjbV9leGl0KQogICAgICAgIHNlbGYuX3B1c2hfZXhpdF9jYWxsYmFjayhfZXhpdF93cmFwcGVyLCBGYWxzZSkKCiAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKICAgICAgICByZWNlaXZlZF9leGMgPSBleGNfZGV0YWlsc1swXSBpcyBub3QgTm9uZQoKICAgICAgICAjIFdlIG1hbmlwdWxhdGUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSBzbyBpdCBiZWhhdmVzIGFzIHRob3VnaAogICAgICAgICMgd2Ugd2VyZSBhY3R1YWxseSBuZXN0aW5nIG11bHRpcGxlIHdpdGggc3RhdGVtZW50cwogICAgICAgIGZyYW1lX2V4YyA9IHN5cy5leGNfaW5mbygpWzFdCiAgICAgICAgZGVmIF9maXhfZXhjZXB0aW9uX2NvbnRleHQobmV3X2V4Yywgb2xkX2V4Yyk6CiAgICAgICAgICAgICMgQ29udGV4dCBtYXkgbm90IGJlIGNvcnJlY3QsIHNvIGZpbmQgdGhlIGVuZCBvZiB0aGUgY2hhaW4KICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgIGV4Y19jb250ZXh0ID0gbmV3X2V4Yy5fX2NvbnRleHRfXwogICAgICAgICAgICAgICAgaWYgZXhjX2NvbnRleHQgaXMgTm9uZSBvciBleGNfY29udGV4dCBpcyBvbGRfZXhjOgogICAgICAgICAgICAgICAgICAgICMgQ29udGV4dCBpcyBhbHJlYWR5IHNldCBjb3JyZWN0bHkgKHNlZSBpc3N1ZSAyMDMxNykKICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgIGlmIGV4Y19jb250ZXh0IGlzIGZyYW1lX2V4YzoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgbmV3X2V4YyA9IGV4Y19jb250ZXh0CiAgICAgICAgICAgICMgQ2hhbmdlIHRoZSBlbmQgb2YgdGhlIGNoYWluIHRvIHBvaW50IHRvIHRoZSBleGNlcHRpb24KICAgICAgICAgICAgIyB3ZSBleHBlY3QgaXQgdG8gcmVmZXJlbmNlCiAgICAgICAgICAgIG5ld19leGMuX19jb250ZXh0X18gPSBvbGRfZXhjCgogICAgICAgICMgQ2FsbGJhY2tzIGFyZSBpbnZva2VkIGluIExJRk8gb3JkZXIgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZgogICAgICAgICMgbmVzdGVkIGNvbnRleHQgbWFuYWdlcnMKICAgICAgICBzdXBwcmVzc2VkX2V4YyA9IEZhbHNlCiAgICAgICAgcGVuZGluZ19yYWlzZSA9IEZhbHNlCiAgICAgICAgd2hpbGUgc2VsZi5fZXhpdF9jYWxsYmFja3M6CiAgICAgICAgICAgIGlzX3N5bmMsIGNiID0gc2VsZi5fZXhpdF9jYWxsYmFja3MucG9wKCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgaXNfc3luYzoKICAgICAgICAgICAgICAgICAgICBjYl9zdXBwcmVzcyA9IGNiKCpleGNfZGV0YWlscykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgY2Jfc3VwcHJlc3MgPSBhd2FpdCBjYigqZXhjX2RldGFpbHMpCgogICAgICAgICAgICAgICAgaWYgY2Jfc3VwcHJlc3M6CiAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NlZF9leGMgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ19yYWlzZSA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgZXhjX2RldGFpbHMgPSAoTm9uZSwgTm9uZSwgTm9uZSkKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgbmV3X2V4Y19kZXRhaWxzID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgICAgICMgc2ltdWxhdGUgdGhlIHN0YWNrIG9mIGV4Y2VwdGlvbnMgYnkgc2V0dGluZyB0aGUgY29udGV4dAogICAgICAgICAgICAgICAgX2ZpeF9leGNlcHRpb25fY29udGV4dChuZXdfZXhjX2RldGFpbHNbMV0sIGV4Y19kZXRhaWxzWzFdKQogICAgICAgICAgICAgICAgcGVuZGluZ19yYWlzZSA9IFRydWUKICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzID0gbmV3X2V4Y19kZXRhaWxzCiAgICAgICAgaWYgcGVuZGluZ19yYWlzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIyBiYXJlICJyYWlzZSBleGNfZGV0YWlsc1sxXSIgcmVwbGFjZXMgb3VyIGNhcmVmdWxseQogICAgICAgICAgICAgICAgIyBzZXQtdXAgY29udGV4dAogICAgICAgICAgICAgICAgZml4ZWRfY3R4ID0gZXhjX2RldGFpbHNbMV0uX19jb250ZXh0X18KICAgICAgICAgICAgICAgIHJhaXNlIGV4Y19kZXRhaWxzWzFdCiAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgZXhjX2RldGFpbHNbMV0uX19jb250ZXh0X18gPSBmaXhlZF9jdHgKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgcmV0dXJuIHJlY2VpdmVkX2V4YyBhbmQgc3VwcHJlc3NlZF9leGMKCgpjbGFzcyBudWxsY29udGV4dChBYnN0cmFjdENvbnRleHRNYW5hZ2VyLCBBYnN0cmFjdEFzeW5jQ29udGV4dE1hbmFnZXIpOgogICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgZG9lcyBubyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcuCgogICAgVXNlZCBhcyBhIHN0YW5kLWluIGZvciBhIG5vcm1hbCBjb250ZXh0IG1hbmFnZXIsIHdoZW4gYSBwYXJ0aWN1bGFyCiAgICBibG9jayBvZiBjb2RlIGlzIG9ubHkgc29tZXRpbWVzIHVzZWQgd2l0aCBhIG5vcm1hbCBjb250ZXh0IG1hbmFnZXI6CgogICAgY20gPSBvcHRpb25hbF9jbSBpZiBjb25kaXRpb24gZWxzZSBudWxsY29udGV4dCgpCiAgICB3aXRoIGNtOgogICAgICAgICMgUGVyZm9ybSBvcGVyYXRpb24sIHVzaW5nIG9wdGlvbmFsX2NtIGlmIGNvbmRpdGlvbiBpcyBUcnVlCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZW50ZXJfcmVzdWx0PU5vbmUpOgogICAgICAgIHNlbGYuZW50ZXJfcmVzdWx0ID0gZW50ZXJfcmVzdWx0CgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5lbnRlcl9yZXN1bHQKCiAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y2luZm8pOgogICAgICAgIHBhc3MKCiAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5lbnRlcl9yZXN1bHQKCiAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICpleGNpbmZvKToKICAgICAgICBwYXNzCgoKY2xhc3MgY2hkaXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAiIiJOb24gdGhyZWFkLXNhZmUgY29udGV4dCBtYW5hZ2VyIHRvIGNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CiAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogICAgICAgIHNlbGYuX29sZF9jd2QgPSBbXQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgc2VsZi5fb2xkX2N3ZC5hcHBlbmQob3MuZ2V0Y3dkKCkpCiAgICAgICAgb3MuY2hkaXIoc2VsZi5wYXRoKQoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjaW5mbyk6CiAgICAgICAgb3MuY2hkaXIoc2VsZi5fb2xkX2N3ZC5wb3AoKSkKUEsDBBQAAAAAAAIgo1b0yDCSgQAAAIEAAAAOAAAAY29udGV4dHZhcnMucHlmcm9tIF9jb250ZXh0dmFycyBpbXBvcnQgQ29udGV4dCwgQ29udGV4dFZhciwgVG9rZW4sIGNvcHlfY29udGV4dAoKCl9fYWxsX18gPSAoJ0NvbnRleHQnLCAnQ29udGV4dFZhcicsICdUb2tlbicsICdjb3B5X2NvbnRleHQnKQpQSwMEFAAAAAAAAiCjVsPbOj3pIQAA6SEAAAcAAABjb3B5LnB5IiIiR2VuZXJpYyAoc2hhbGxvdyBhbmQgZGVlcCkgY29weWluZyBvcGVyYXRpb25zLgoKSW50ZXJmYWNlIHN1bW1hcnk6CgogICAgICAgIGltcG9ydCBjb3B5CgogICAgICAgIHggPSBjb3B5LmNvcHkoeSkgICAgICAgICMgbWFrZSBhIHNoYWxsb3cgY29weSBvZiB5CiAgICAgICAgeCA9IGNvcHkuZGVlcGNvcHkoeSkgICAgIyBtYWtlIGEgZGVlcCBjb3B5IG9mIHkKCkZvciBtb2R1bGUgc3BlY2lmaWMgZXJyb3JzLCBjb3B5LkVycm9yIGlzIHJhaXNlZC4KClRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc2hhbGxvdyBhbmQgZGVlcCBjb3B5aW5nIGlzIG9ubHkgcmVsZXZhbnQgZm9yCmNvbXBvdW5kIG9iamVjdHMgKG9iamVjdHMgdGhhdCBjb250YWluIG90aGVyIG9iamVjdHMsIGxpa2UgbGlzdHMgb3IKY2xhc3MgaW5zdGFuY2VzKS4KCi0gQSBzaGFsbG93IGNvcHkgY29uc3RydWN0cyBhIG5ldyBjb21wb3VuZCBvYmplY3QgYW5kIHRoZW4gKHRvIHRoZQogIGV4dGVudCBwb3NzaWJsZSkgaW5zZXJ0cyAqdGhlIHNhbWUgb2JqZWN0cyogaW50byBpdCB0aGF0IHRoZQogIG9yaWdpbmFsIGNvbnRhaW5zLgoKLSBBIGRlZXAgY29weSBjb25zdHJ1Y3RzIGEgbmV3IGNvbXBvdW5kIG9iamVjdCBhbmQgdGhlbiwgcmVjdXJzaXZlbHksCiAgaW5zZXJ0cyAqY29waWVzKiBpbnRvIGl0IG9mIHRoZSBvYmplY3RzIGZvdW5kIGluIHRoZSBvcmlnaW5hbC4KClR3byBwcm9ibGVtcyBvZnRlbiBleGlzdCB3aXRoIGRlZXAgY29weSBvcGVyYXRpb25zIHRoYXQgZG9uJ3QgZXhpc3QKd2l0aCBzaGFsbG93IGNvcHkgb3BlcmF0aW9uczoKCiBhKSByZWN1cnNpdmUgb2JqZWN0cyAoY29tcG91bmQgb2JqZWN0cyB0aGF0LCBkaXJlY3RseSBvciBpbmRpcmVjdGx5LAogICAgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVtc2VsdmVzKSBtYXkgY2F1c2UgYSByZWN1cnNpdmUgbG9vcAoKIGIpIGJlY2F1c2UgZGVlcCBjb3B5IGNvcGllcyAqZXZlcnl0aGluZyogaXQgbWF5IGNvcHkgdG9vIG11Y2gsIGUuZy4KICAgIGFkbWluaXN0cmF0aXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0IHNob3VsZCBiZSBzaGFyZWQgZXZlbiBiZXR3ZWVuCiAgICBjb3BpZXMKClB5dGhvbidzIGRlZXAgY29weSBvcGVyYXRpb24gYXZvaWRzIHRoZXNlIHByb2JsZW1zIGJ5OgoKIGEpIGtlZXBpbmcgYSB0YWJsZSBvZiBvYmplY3RzIGFscmVhZHkgY29waWVkIGR1cmluZyB0aGUgY3VycmVudAogICAgY29weWluZyBwYXNzCgogYikgbGV0dGluZyB1c2VyLWRlZmluZWQgY2xhc3NlcyBvdmVycmlkZSB0aGUgY29weWluZyBvcGVyYXRpb24gb3IgdGhlCiAgICBzZXQgb2YgY29tcG9uZW50cyBjb3BpZWQKClRoaXMgdmVyc2lvbiBkb2VzIG5vdCBjb3B5IHR5cGVzIGxpa2UgbW9kdWxlLCBjbGFzcywgZnVuY3Rpb24sIG1ldGhvZCwKbm9yIHN0YWNrIHRyYWNlLCBzdGFjayBmcmFtZSwgbm9yIGZpbGUsIHNvY2tldCwgd2luZG93LCBub3IgYW55CnNpbWlsYXIgdHlwZXMuCgpDbGFzc2VzIGNhbiB1c2UgdGhlIHNhbWUgaW50ZXJmYWNlcyB0byBjb250cm9sIGNvcHlpbmcgdGhhdCB0aGV5IHVzZQp0byBjb250cm9sIHBpY2tsaW5nOiB0aGV5IGNhbiBkZWZpbmUgbWV0aG9kcyBjYWxsZWQgX19nZXRpbml0YXJnc19fKCksCl9fZ2V0c3RhdGVfXygpIGFuZCBfX3NldHN0YXRlX18oKS4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9kdWxlCiJwaWNrbGUiIGZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBtZXRob2RzLgoiIiIKCmltcG9ydCB0eXBlcwppbXBvcnQgd2Vha3JlZgpmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCgpjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgcGFzcwplcnJvciA9IEVycm9yICAgIyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Cgp0cnk6CiAgICBmcm9tIG9yZy5weXRob24uY29yZSBpbXBvcnQgUHlTdHJpbmdNYXAKZXhjZXB0IEltcG9ydEVycm9yOgogICAgUHlTdHJpbmdNYXAgPSBOb25lCgpfX2FsbF9fID0gWyJFcnJvciIsICJjb3B5IiwgImRlZXBjb3B5Il0KCmRlZiBjb3B5KHgpOgogICAgIiIiU2hhbGxvdyBjb3B5IG9wZXJhdGlvbiBvbiBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuCgogICAgU2VlIHRoZSBtb2R1bGUncyBfX2RvY19fIHN0cmluZyBmb3IgbW9yZSBpbmZvLgogICAgIiIiCgogICAgY2xzID0gdHlwZSh4KQoKICAgIGNvcGllciA9IF9jb3B5X2Rpc3BhdGNoLmdldChjbHMpCiAgICBpZiBjb3BpZXI6CiAgICAgICAgcmV0dXJuIGNvcGllcih4KQoKICAgIGlmIGlzc3ViY2xhc3MoY2xzLCB0eXBlKToKICAgICAgICAjIHRyZWF0IGl0IGFzIGEgcmVndWxhciBjbGFzczoKICAgICAgICByZXR1cm4gX2NvcHlfaW1tdXRhYmxlKHgpCgogICAgY29waWVyID0gZ2V0YXR0cihjbHMsICJfX2NvcHlfXyIsIE5vbmUpCiAgICBpZiBjb3BpZXIgaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIGNvcGllcih4KQoKICAgIHJlZHVjdG9yID0gZGlzcGF0Y2hfdGFibGUuZ2V0KGNscykKICAgIGlmIHJlZHVjdG9yIGlzIG5vdCBOb25lOgogICAgICAgIHJ2ID0gcmVkdWN0b3IoeCkKICAgIGVsc2U6CiAgICAgICAgcmVkdWN0b3IgPSBnZXRhdHRyKHgsICJfX3JlZHVjZV9leF9fIiwgTm9uZSkKICAgICAgICBpZiByZWR1Y3RvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgcnYgPSByZWR1Y3Rvcig0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlZHVjdG9yID0gZ2V0YXR0cih4LCAiX19yZWR1Y2VfXyIsIE5vbmUpCiAgICAgICAgICAgIGlmIHJlZHVjdG9yOgogICAgICAgICAgICAgICAgcnYgPSByZWR1Y3RvcigpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigidW4oc2hhbGxvdyljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCgogICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKICAgICAgICByZXR1cm4geAogICAgcmV0dXJuIF9yZWNvbnN0cnVjdCh4LCBOb25lLCAqcnYpCgoKX2NvcHlfZGlzcGF0Y2ggPSBkID0ge30KCmRlZiBfY29weV9pbW11dGFibGUoeCk6CiAgICByZXR1cm4geApmb3IgdCBpbiAodHlwZShOb25lKSwgaW50LCBmbG9hdCwgYm9vbCwgY29tcGxleCwgc3RyLCB0dXBsZSwKICAgICAgICAgIGJ5dGVzLCBmcm96ZW5zZXQsIHR5cGUsIHJhbmdlLCBzbGljZSwgcHJvcGVydHksCiAgICAgICAgICB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlLCB0eXBlKEVsbGlwc2lzKSwgdHlwZShOb3RJbXBsZW1lbnRlZCksCiAgICAgICAgICB0eXBlcy5GdW5jdGlvblR5cGUsIHdlYWtyZWYucmVmKToKICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKdCA9IGdldGF0dHIodHlwZXMsICJDb2RlVHlwZSIsIE5vbmUpCmlmIHQgaXMgbm90IE5vbmU6CiAgICBkW3RdID0gX2NvcHlfaW1tdXRhYmxlCgpkW2xpc3RdID0gbGlzdC5jb3B5CmRbZGljdF0gPSBkaWN0LmNvcHkKZFtzZXRdID0gc2V0LmNvcHkKZFtieXRlYXJyYXldID0gYnl0ZWFycmF5LmNvcHkKCmlmIFB5U3RyaW5nTWFwIGlzIG5vdCBOb25lOgogICAgZFtQeVN0cmluZ01hcF0gPSBQeVN0cmluZ01hcC5jb3B5CgpkZWwgZCwgdAoKZGVmIGRlZXBjb3B5KHgsIG1lbW89Tm9uZSwgX25pbD1bXSk6CiAgICAiIiJEZWVwIGNvcHkgb3BlcmF0aW9uIG9uIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4KCiAgICBTZWUgdGhlIG1vZHVsZSdzIF9fZG9jX18gc3RyaW5nIGZvciBtb3JlIGluZm8uCiAgICAiIiIKCiAgICBpZiBtZW1vIGlzIE5vbmU6CiAgICAgICAgbWVtbyA9IHt9CgogICAgZCA9IGlkKHgpCiAgICB5ID0gbWVtby5nZXQoZCwgX25pbCkKICAgIGlmIHkgaXMgbm90IF9uaWw6CiAgICAgICAgcmV0dXJuIHkKCiAgICBjbHMgPSB0eXBlKHgpCgogICAgY29waWVyID0gX2RlZXBjb3B5X2Rpc3BhdGNoLmdldChjbHMpCiAgICBpZiBjb3BpZXIgaXMgbm90IE5vbmU6CiAgICAgICAgeSA9IGNvcGllcih4LCBtZW1vKQogICAgZWxzZToKICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgdHlwZSk6CiAgICAgICAgICAgIHkgPSBfZGVlcGNvcHlfYXRvbWljKHgsIG1lbW8pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY29waWVyID0gZ2V0YXR0cih4LCAiX19kZWVwY29weV9fIiwgTm9uZSkKICAgICAgICAgICAgaWYgY29waWVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgeSA9IGNvcGllcihtZW1vKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVkdWN0b3IgPSBkaXNwYXRjaF90YWJsZS5nZXQoY2xzKQogICAgICAgICAgICAgICAgaWYgcmVkdWN0b3I6CiAgICAgICAgICAgICAgICAgICAgcnYgPSByZWR1Y3Rvcih4KQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByZWR1Y3RvciA9IGdldGF0dHIoeCwgIl9fcmVkdWNlX2V4X18iLCBOb25lKQogICAgICAgICAgICAgICAgICAgIGlmIHJlZHVjdG9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBydiA9IHJlZHVjdG9yKDQpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcmVkdWN0b3IgPSBnZXRhdHRyKHgsICJfX3JlZHVjZV9fIiwgTm9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVkdWN0b3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydiA9IHJlZHVjdG9yKCkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bihkZWVwKWNvcHlhYmxlIG9iamVjdCBvZiB0eXBlICVzIiAlIGNscykKICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocnYsIHN0cik6CiAgICAgICAgICAgICAgICAgICAgeSA9IHgKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgeSA9IF9yZWNvbnN0cnVjdCh4LCBtZW1vLCAqcnYpCgogICAgIyBJZiBpcyBpdHMgb3duIGNvcHksIGRvbid0IG1lbW9pemUuCiAgICBpZiB5IGlzIG5vdCB4OgogICAgICAgIG1lbW9bZF0gPSB5CiAgICAgICAgX2tlZXBfYWxpdmUoeCwgbWVtbykgIyBNYWtlIHN1cmUgeCBsaXZlcyBhdCBsZWFzdCBhcyBsb25nIGFzIGQKICAgIHJldHVybiB5CgpfZGVlcGNvcHlfZGlzcGF0Y2ggPSBkID0ge30KCmRlZiBfZGVlcGNvcHlfYXRvbWljKHgsIG1lbW8pOgogICAgcmV0dXJuIHgKZFt0eXBlKE5vbmUpXSA9IF9kZWVwY29weV9hdG9taWMKZFt0eXBlKEVsbGlwc2lzKV0gPSBfZGVlcGNvcHlfYXRvbWljCmRbdHlwZShOb3RJbXBsZW1lbnRlZCldID0gX2RlZXBjb3B5X2F0b21pYwpkW2ludF0gPSBfZGVlcGNvcHlfYXRvbWljCmRbZmxvYXRdID0gX2RlZXBjb3B5X2F0b21pYwpkW2Jvb2xdID0gX2RlZXBjb3B5X2F0b21pYwpkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwpkW2J5dGVzXSA9IF9kZWVwY29weV9hdG9taWMKZFtzdHJdID0gX2RlZXBjb3B5X2F0b21pYwpkW3R5cGVzLkNvZGVUeXBlXSA9IF9kZWVwY29weV9hdG9taWMKZFt0eXBlXSA9IF9kZWVwY29weV9hdG9taWMKZFtyYW5nZV0gPSBfZGVlcGNvcHlfYXRvbWljCmRbdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZV0gPSBfZGVlcGNvcHlfYXRvbWljCmRbdHlwZXMuRnVuY3Rpb25UeXBlXSA9IF9kZWVwY29weV9hdG9taWMKZFt3ZWFrcmVmLnJlZl0gPSBfZGVlcGNvcHlfYXRvbWljCmRbcHJvcGVydHldID0gX2RlZXBjb3B5X2F0b21pYwoKZGVmIF9kZWVwY29weV9saXN0KHgsIG1lbW8sIGRlZXBjb3B5PWRlZXBjb3B5KToKICAgIHkgPSBbXQogICAgbWVtb1tpZCh4KV0gPSB5CiAgICBhcHBlbmQgPSB5LmFwcGVuZAogICAgZm9yIGEgaW4geDoKICAgICAgICBhcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCiAgICByZXR1cm4geQpkW2xpc3RdID0gX2RlZXBjb3B5X2xpc3QKCmRlZiBfZGVlcGNvcHlfdHVwbGUoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgeSA9IFtkZWVwY29weShhLCBtZW1vKSBmb3IgYSBpbiB4XQogICAgIyBXZSdyZSBub3QgZ29pbmcgdG8gcHV0IHRoZSB0dXBsZSBpbiB0aGUgbWVtbywgYnV0IGl0J3Mgc3RpbGwgaW1wb3J0YW50IHdlCiAgICAjIGNoZWNrIGZvciBpdCwgaW4gY2FzZSB0aGUgdHVwbGUgY29udGFpbnMgcmVjdXJzaXZlIG11dGFibGUgc3RydWN0dXJlcy4KICAgIHRyeToKICAgICAgICByZXR1cm4gbWVtb1tpZCh4KV0KICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICBwYXNzCiAgICBmb3IgaywgaiBpbiB6aXAoeCwgeSk6CiAgICAgICAgaWYgayBpcyBub3QgajoKICAgICAgICAgICAgeSA9IHR1cGxlKHkpCiAgICAgICAgICAgIGJyZWFrCiAgICBlbHNlOgogICAgICAgIHkgPSB4CiAgICByZXR1cm4geQpkW3R1cGxlXSA9IF9kZWVwY29weV90dXBsZQoKZGVmIF9kZWVwY29weV9kaWN0KHgsIG1lbW8sIGRlZXBjb3B5PWRlZXBjb3B5KToKICAgIHkgPSB7fQogICAgbWVtb1tpZCh4KV0gPSB5CiAgICBmb3Iga2V5LCB2YWx1ZSBpbiB4Lml0ZW1zKCk6CiAgICAgICAgeVtkZWVwY29weShrZXksIG1lbW8pXSA9IGRlZXBjb3B5KHZhbHVlLCBtZW1vKQogICAgcmV0dXJuIHkKZFtkaWN0XSA9IF9kZWVwY29weV9kaWN0CmlmIFB5U3RyaW5nTWFwIGlzIG5vdCBOb25lOgogICAgZFtQeVN0cmluZ01hcF0gPSBfZGVlcGNvcHlfZGljdAoKZGVmIF9kZWVwY29weV9tZXRob2QoeCwgbWVtbyk6ICMgQ29weSBpbnN0YW5jZSBtZXRob2RzCiAgICByZXR1cm4gdHlwZSh4KSh4Ll9fZnVuY19fLCBkZWVwY29weSh4Ll9fc2VsZl9fLCBtZW1vKSkKZFt0eXBlcy5NZXRob2RUeXBlXSA9IF9kZWVwY29weV9tZXRob2QKCmRlbCBkCgpkZWYgX2tlZXBfYWxpdmUoeCwgbWVtbyk6CiAgICAiIiJLZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHggaW4gdGhlIG1lbW8uCgogICAgQmVjYXVzZSB3ZSByZW1lbWJlciBvYmplY3RzIGJ5IHRoZWlyIGlkLCB3ZSBoYXZlCiAgICB0byBhc3N1cmUgdGhhdCBwb3NzaWJseSB0ZW1wb3Jhcnkgb2JqZWN0cyBhcmUga2VwdAogICAgYWxpdmUgYnkgcmVmZXJlbmNpbmcgdGhlbS4KICAgIFdlIHN0b3JlIGEgcmVmZXJlbmNlIGF0IHRoZSBpZCBvZiB0aGUgbWVtbywgd2hpY2ggc2hvdWxkCiAgICBub3JtYWxseSBub3QgYmUgdXNlZCB1bmxlc3Mgc29tZW9uZSB0cmllcyB0byBkZWVwY29weQogICAgdGhlIG1lbW8gaXRzZWxmLi4uCiAgICAiIiIKICAgIHRyeToKICAgICAgICBtZW1vW2lkKG1lbW8pXS5hcHBlbmQoeCkKICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAjIGFoYSwgdGhpcyBpcyB0aGUgZmlyc3Qgb25lIDotKQogICAgICAgIG1lbW9baWQobWVtbyldPVt4XQoKZGVmIF9yZWNvbnN0cnVjdCh4LCBtZW1vLCBmdW5jLCBhcmdzLAogICAgICAgICAgICAgICAgIHN0YXRlPU5vbmUsIGxpc3RpdGVyPU5vbmUsIGRpY3RpdGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgKiwgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgZGVlcCA9IG1lbW8gaXMgbm90IE5vbmUKICAgIGlmIGRlZXAgYW5kIGFyZ3M6CiAgICAgICAgYXJncyA9IChkZWVwY29weShhcmcsIG1lbW8pIGZvciBhcmcgaW4gYXJncykKICAgIHkgPSBmdW5jKCphcmdzKQogICAgaWYgZGVlcDoKICAgICAgICBtZW1vW2lkKHgpXSA9IHkKCiAgICBpZiBzdGF0ZSBpcyBub3QgTm9uZToKICAgICAgICBpZiBkZWVwOgogICAgICAgICAgICBzdGF0ZSA9IGRlZXBjb3B5KHN0YXRlLCBtZW1vKQogICAgICAgIGlmIGhhc2F0dHIoeSwgJ19fc2V0c3RhdGVfXycpOgogICAgICAgICAgICB5Ll9fc2V0c3RhdGVfXyhzdGF0ZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHN0YXRlLCB0dXBsZSkgYW5kIGxlbihzdGF0ZSkgPT0gMjoKICAgICAgICAgICAgICAgIHN0YXRlLCBzbG90c3RhdGUgPSBzdGF0ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2xvdHN0YXRlID0gTm9uZQogICAgICAgICAgICBpZiBzdGF0ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHkuX19kaWN0X18udXBkYXRlKHN0YXRlKQogICAgICAgICAgICBpZiBzbG90c3RhdGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzbG90c3RhdGUuaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHksIGtleSwgdmFsdWUpCgogICAgaWYgbGlzdGl0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgZGVlcDoKICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CiAgICAgICAgICAgICAgICBpdGVtID0gZGVlcGNvcHkoaXRlbSwgbWVtbykKICAgICAgICAgICAgICAgIHkuYXBwZW5kKGl0ZW0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CiAgICAgICAgICAgICAgICB5LmFwcGVuZChpdGVtKQogICAgaWYgZGljdGl0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgZGVlcDoKICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6CiAgICAgICAgICAgICAgICBrZXkgPSBkZWVwY29weShrZXksIG1lbW8pCiAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlZXBjb3B5KHZhbHVlLCBtZW1vKQogICAgICAgICAgICAgICAgeVtrZXldID0gdmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKICAgICAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCiAgICByZXR1cm4geQoKZGVsIHR5cGVzLCB3ZWFrcmVmLCBQeVN0cmluZ01hcApQSwMEFAAAAAAAAiCjVmL9tbT9HQAA/R0AAAoAAABjb3B5cmVnLnB5IiIiSGVscGVyIHRvIHByb3ZpZGUgZXh0ZW5zaWJpbGl0eSBmb3IgcGlja2xlLgoKVGhpcyBpcyBvbmx5IHVzZWZ1bCB0byBhZGQgcGlja2xlIHN1cHBvcnQgZm9yIGV4dGVuc2lvbiB0eXBlcyBkZWZpbmVkIGluCkMsIG5vdCBmb3IgaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLgoiIiIKCl9fYWxsX18gPSBbInBpY2tsZSIsICJjb25zdHJ1Y3RvciIsCiAgICAgICAgICAgImFkZF9leHRlbnNpb24iLCAicmVtb3ZlX2V4dGVuc2lvbiIsICJjbGVhcl9leHRlbnNpb25fY2FjaGUiXQoKZGlzcGF0Y2hfdGFibGUgPSB7fQoKZGVmIHBpY2tsZShvYl90eXBlLCBwaWNrbGVfZnVuY3Rpb24sIGNvbnN0cnVjdG9yX29iPU5vbmUpOgogICAgaWYgbm90IGNhbGxhYmxlKHBpY2tsZV9mdW5jdGlvbik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJyZWR1Y3Rpb24gZnVuY3Rpb25zIG11c3QgYmUgY2FsbGFibGUiKQogICAgZGlzcGF0Y2hfdGFibGVbb2JfdHlwZV0gPSBwaWNrbGVfZnVuY3Rpb24KCiAgICAjIFRoZSBjb25zdHJ1Y3Rvcl9vYiBmdW5jdGlvbiBpcyBhIHZlc3RpZ2Ugb2Ygc2FmZSBmb3IgdW5waWNrbGluZy4KICAgICMgVGhlcmUgaXMgbm8gcmVhc29uIGZvciB0aGUgY2FsbGVyIHRvIHBhc3MgaXQgYW55bW9yZS4KICAgIGlmIGNvbnN0cnVjdG9yX29iIGlzIG5vdCBOb25lOgogICAgICAgIGNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yX29iKQoKZGVmIGNvbnN0cnVjdG9yKG9iamVjdCk6CiAgICBpZiBub3QgY2FsbGFibGUob2JqZWN0KToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNvbnN0cnVjdG9ycyBtdXN0IGJlIGNhbGxhYmxlIikKCiMgRXhhbXBsZTogcHJvdmlkZSBwaWNrbGluZyBzdXBwb3J0IGZvciBjb21wbGV4IG51bWJlcnMuCgp0cnk6CiAgICBjb21wbGV4CmV4Y2VwdCBOYW1lRXJyb3I6CiAgICBwYXNzCmVsc2U6CgogICAgZGVmIHBpY2tsZV9jb21wbGV4KGMpOgogICAgICAgIHJldHVybiBjb21wbGV4LCAoYy5yZWFsLCBjLmltYWcpCgogICAgcGlja2xlKGNvbXBsZXgsIHBpY2tsZV9jb21wbGV4LCBjb21wbGV4KQoKZGVmIHBpY2tsZV91bmlvbihvYmopOgogICAgaW1wb3J0IGZ1bmN0b29scywgb3BlcmF0b3IKICAgIHJldHVybiBmdW5jdG9vbHMucmVkdWNlLCAob3BlcmF0b3Iub3JfLCBvYmouX19hcmdzX18pCgpwaWNrbGUodHlwZShpbnQgfCBzdHIpLCBwaWNrbGVfdW5pb24pCgojIFN1cHBvcnQgZm9yIHBpY2tsaW5nIG5ldy1zdHlsZSBvYmplY3RzCgpkZWYgX3JlY29uc3RydWN0b3IoY2xzLCBiYXNlLCBzdGF0ZSk6CiAgICBpZiBiYXNlIGlzIG9iamVjdDoKICAgICAgICBvYmogPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICBlbHNlOgogICAgICAgIG9iaiA9IGJhc2UuX19uZXdfXyhjbHMsIHN0YXRlKQogICAgICAgIGlmIGJhc2UuX19pbml0X18gIT0gb2JqZWN0Ll9faW5pdF9fOgogICAgICAgICAgICBiYXNlLl9faW5pdF9fKG9iaiwgc3RhdGUpCiAgICByZXR1cm4gb2JqCgpfSEVBUFRZUEUgPSAxPDw5Cl9uZXdfdHlwZSA9IHR5cGUoaW50Ll9fbmV3X18pCgojIFB5dGhvbiBjb2RlIGZvciBvYmplY3QuX19yZWR1Y2VfZXhfXyBmb3IgcHJvdG9jb2xzIDAgYW5kIDEKCmRlZiBfcmVkdWNlX2V4KHNlbGYsIHByb3RvKToKICAgIGFzc2VydCBwcm90byA8IDIKICAgIGNscyA9IHNlbGYuX19jbGFzc19fCiAgICBmb3IgYmFzZSBpbiBjbHMuX19tcm9fXzoKICAgICAgICBpZiBoYXNhdHRyKGJhc2UsICdfX2ZsYWdzX18nKSBhbmQgbm90IGJhc2UuX19mbGFnc19fICYgX0hFQVBUWVBFOgogICAgICAgICAgICBicmVhawogICAgICAgIG5ldyA9IGJhc2UuX19uZXdfXwogICAgICAgIGlmIGlzaW5zdGFuY2UobmV3LCBfbmV3X3R5cGUpIGFuZCBuZXcuX19zZWxmX18gaXMgYmFzZToKICAgICAgICAgICAgYnJlYWsKICAgIGVsc2U6CiAgICAgICAgYmFzZSA9IG9iamVjdCAjIG5vdCByZWFsbHkgcmVhY2hhYmxlCiAgICBpZiBiYXNlIGlzIG9iamVjdDoKICAgICAgICBzdGF0ZSA9IE5vbmUKICAgIGVsc2U6CiAgICAgICAgaWYgYmFzZSBpcyBjbHM6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmImNhbm5vdCBwaWNrbGUge2Nscy5fX25hbWVfXyFyfSBvYmplY3QiKQogICAgICAgIHN0YXRlID0gYmFzZShzZWxmKQogICAgYXJncyA9IChjbHMsIGJhc2UsIHN0YXRlKQogICAgdHJ5OgogICAgICAgIGdldHN0YXRlID0gc2VsZi5fX2dldHN0YXRlX18KICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICJfX3Nsb3RzX18iLCBOb25lKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiY2Fubm90IHBpY2tsZSB7Y2xzLl9fbmFtZV9fIXJ9IG9iamVjdDogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJhIGNsYXNzIHRoYXQgZGVmaW5lcyBfX3Nsb3RzX18gd2l0aG91dCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmImRlZmluaW5nIF9fZ2V0c3RhdGVfXyBjYW5ub3QgYmUgcGlja2xlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIndpdGggcHJvdG9jb2wge3Byb3RvfSIpIGZyb20gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgZGljdCA9IHNlbGYuX19kaWN0X18KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIGRpY3QgPSBOb25lCiAgICBlbHNlOgogICAgICAgIGlmICh0eXBlKHNlbGYpLl9fZ2V0c3RhdGVfXyBpcyBvYmplY3QuX19nZXRzdGF0ZV9fIGFuZAogICAgICAgICAgICBnZXRhdHRyKHNlbGYsICJfX3Nsb3RzX18iLCBOb25lKSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYSBjbGFzcyB0aGF0IGRlZmluZXMgX19zbG90c19fIHdpdGhvdXQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluaW5nIF9fZ2V0c3RhdGVfXyBjYW5ub3QgYmUgcGlja2xlZCIpCiAgICAgICAgZGljdCA9IGdldHN0YXRlKCkKICAgIGlmIGRpY3Q6CiAgICAgICAgcmV0dXJuIF9yZWNvbnN0cnVjdG9yLCBhcmdzLCBkaWN0CiAgICBlbHNlOgogICAgICAgIHJldHVybiBfcmVjb25zdHJ1Y3RvciwgYXJncwoKIyBIZWxwZXIgZm9yIF9fcmVkdWNlX2V4X18gcHJvdG9jb2wgMgoKZGVmIF9fbmV3b2JqX18oY2xzLCAqYXJncyk6CiAgICByZXR1cm4gY2xzLl9fbmV3X18oY2xzLCAqYXJncykKCmRlZiBfX25ld29ial9leF9fKGNscywgYXJncywga3dhcmdzKToKICAgICIiIlVzZWQgYnkgcGlja2xlIHByb3RvY29sIDQsIGluc3RlYWQgb2YgX19uZXdvYmpfXyB0byBhbGxvdyBjbGFzc2VzIHdpdGgKICAgIGtleXdvcmQtb25seSBhcmd1bWVudHMgdG8gYmUgcGlja2xlZCBjb3JyZWN0bHkuCiAgICAiIiIKICAgIHJldHVybiBjbHMuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3YXJncykKCmRlZiBfc2xvdG5hbWVzKGNscyk6CiAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHNsb3QgbmFtZXMgZm9yIGEgZ2l2ZW4gY2xhc3MuCgogICAgVGhpcyBuZWVkcyB0byBmaW5kIHNsb3RzIGRlZmluZWQgYnkgdGhlIGNsYXNzIGFuZCBpdHMgYmFzZXMsIHNvIHdlCiAgICBjYW4ndCBzaW1wbHkgcmV0dXJuIHRoZSBfX3Nsb3RzX18gYXR0cmlidXRlLiAgV2UgbXVzdCB3YWxrIGRvd24KICAgIHRoZSBNZXRob2QgUmVzb2x1dGlvbiBPcmRlciBhbmQgY29uY2F0ZW5hdGUgdGhlIF9fc2xvdHNfXyBvZiBlYWNoCiAgICBjbGFzcyBmb3VuZCB0aGVyZS4gIChUaGlzIGFzc3VtZXMgY2xhc3NlcyBkb24ndCBtb2RpZnkgdGhlaXIKICAgIF9fc2xvdHNfXyBhdHRyaWJ1dGUgdG8gbWlzcmVwcmVzZW50IHRoZWlyIHNsb3RzIGFmdGVyIHRoZSBjbGFzcyBpcwogICAgZGVmaW5lZC4pCiAgICAiIiIKCiAgICAjIEdldCB0aGUgdmFsdWUgZnJvbSBhIGNhY2hlIGluIHRoZSBjbGFzcyBpZiBwb3NzaWJsZQogICAgbmFtZXMgPSBjbHMuX19kaWN0X18uZ2V0KCJfX3Nsb3RuYW1lc19fIikKICAgIGlmIG5hbWVzIGlzIG5vdCBOb25lOgogICAgICAgIHJldHVybiBuYW1lcwoKICAgICMgTm90IGNhY2hlZCAtLSBjYWxjdWxhdGUgdGhlIHZhbHVlCiAgICBuYW1lcyA9IFtdCiAgICBpZiBub3QgaGFzYXR0cihjbHMsICJfX3Nsb3RzX18iKToKICAgICAgICAjIFRoaXMgY2xhc3MgaGFzIG5vIHNsb3RzCiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICAjIFNsb3RzIGZvdW5kIC0tIGdhdGhlciBzbG90IG5hbWVzIGZyb20gYWxsIGJhc2UgY2xhc3NlcwogICAgICAgIGZvciBjIGluIGNscy5fX21yb19fOgogICAgICAgICAgICBpZiAiX19zbG90c19fIiBpbiBjLl9fZGljdF9fOgogICAgICAgICAgICAgICAgc2xvdHMgPSBjLl9fZGljdF9fWydfX3Nsb3RzX18nXQogICAgICAgICAgICAgICAgIyBpZiBjbGFzcyBoYXMgYSBzaW5nbGUgc2xvdCwgaXQgY2FuIGJlIGdpdmVuIGFzIGEgc3RyaW5nCiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNsb3RzLCBzdHIpOgogICAgICAgICAgICAgICAgICAgIHNsb3RzID0gKHNsb3RzLCkKICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHNsb3RzOgogICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCBkZXNjcmlwdG9ycwogICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gKCJfX2RpY3RfXyIsICJfX3dlYWtyZWZfXyIpOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICMgbWFuZ2xlZCBuYW1lcwogICAgICAgICAgICAgICAgICAgIGVsaWYgbmFtZS5zdGFydHN3aXRoKCdfXycpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgnX18nKToKICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBwZWQgPSBjLl9fbmFtZV9fLmxzdHJpcCgnXycpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cmlwcGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKCdfJXMlcycgJSAoc3RyaXBwZWQsIG5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG5hbWUpCgogICAgIyBDYWNoZSB0aGUgb3V0Y29tZSBpbiB0aGUgY2xhc3MgaWYgYXQgYWxsIHBvc3NpYmxlCiAgICB0cnk6CiAgICAgICAgY2xzLl9fc2xvdG5hbWVzX18gPSBuYW1lcwogICAgZXhjZXB0OgogICAgICAgIHBhc3MgIyBCdXQgZG9uJ3QgZGllIGlmIHdlIGNhbid0CgogICAgcmV0dXJuIG5hbWVzCgojIEEgcmVnaXN0cnkgb2YgZXh0ZW5zaW9uIGNvZGVzLiAgVGhpcyBpcyBhbiBhZC1ob2MgY29tcHJlc3Npb24KIyBtZWNoYW5pc20uICBXaGVuZXZlciBhIGdsb2JhbCByZWZlcmVuY2UgdG8gPG1vZHVsZT4sIDxuYW1lPiBpcyBhYm91dAojIHRvIGJlIHBpY2tsZWQsIHRoZSAoPG1vZHVsZT4sIDxuYW1lPikgdHVwbGUgaXMgbG9va2VkIHVwIGhlcmUgdG8gc2VlCiMgaWYgaXQgaXMgYSByZWdpc3RlcmVkIGV4dGVuc2lvbiBjb2RlIGZvciBpdC4gIEV4dGVuc2lvbiBjb2RlcyBhcmUKIyB1bml2ZXJzYWwsIHNvIHRoYXQgdGhlIG1lYW5pbmcgb2YgYSBwaWNrbGUgZG9lcyBub3QgZGVwZW5kIG9uCiMgY29udGV4dC4gIChUaGVyZSBhcmUgYWxzbyBzb21lIGNvZGVzIHJlc2VydmVkIGZvciBsb2NhbCB1c2UgdGhhdAojIGRvbid0IGhhdmUgdGhpcyByZXN0cmljdGlvbi4pICBDb2RlcyBhcmUgcG9zaXRpdmUgaW50czsgMCBpcwojIHJlc2VydmVkLgoKX2V4dGVuc2lvbl9yZWdpc3RyeSA9IHt9ICAgICAgICAgICAgICAgICMga2V5IC0+IGNvZGUKX2ludmVydGVkX3JlZ2lzdHJ5ID0ge30gICAgICAgICAgICAgICAgICMgY29kZSAtPiBrZXkKX2V4dGVuc2lvbl9jYWNoZSA9IHt9ICAgICAgICAgICAgICAgICAgICMgY29kZSAtPiBvYmplY3QKIyBEb24ndCBldmVyIHJlYmluZCB0aG9zZSBuYW1lczogIHBpY2tsaW5nIGdyYWJzIGEgcmVmZXJlbmNlIHRvIHRoZW0gd2hlbgojIGl0J3MgaW5pdGlhbGl6ZWQsIGFuZCB3b24ndCBzZWUgYSByZWJpbmRpbmcuCgpkZWYgYWRkX2V4dGVuc2lvbihtb2R1bGUsIG5hbWUsIGNvZGUpOgogICAgIiIiUmVnaXN0ZXIgYW4gZXh0ZW5zaW9uIGNvZGUuIiIiCiAgICBjb2RlID0gaW50KGNvZGUpCiAgICBpZiBub3QgMSA8PSBjb2RlIDw9IDB4N2ZmZmZmZmY6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29kZSBvdXQgb2YgcmFuZ2UiKQogICAga2V5ID0gKG1vZHVsZSwgbmFtZSkKICAgIGlmIChfZXh0ZW5zaW9uX3JlZ2lzdHJ5LmdldChrZXkpID09IGNvZGUgYW5kCiAgICAgICAgX2ludmVydGVkX3JlZ2lzdHJ5LmdldChjb2RlKSA9PSBrZXkpOgogICAgICAgIHJldHVybiAjIFJlZHVuZGFudCByZWdpc3RyYXRpb25zIGFyZSBiZW5pZ24KICAgIGlmIGtleSBpbiBfZXh0ZW5zaW9uX3JlZ2lzdHJ5OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImtleSAlcyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCBjb2RlICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5LCBfZXh0ZW5zaW9uX3JlZ2lzdHJ5W2tleV0pKQogICAgaWYgY29kZSBpbiBfaW52ZXJ0ZWRfcmVnaXN0cnk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29kZSAlcyBpcyBhbHJlYWR5IGluIHVzZSBmb3Iga2V5ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoY29kZSwgX2ludmVydGVkX3JlZ2lzdHJ5W2NvZGVdKSkKICAgIF9leHRlbnNpb25fcmVnaXN0cnlba2V5XSA9IGNvZGUKICAgIF9pbnZlcnRlZF9yZWdpc3RyeVtjb2RlXSA9IGtleQoKZGVmIHJlbW92ZV9leHRlbnNpb24obW9kdWxlLCBuYW1lLCBjb2RlKToKICAgICIiIlVucmVnaXN0ZXIgYW4gZXh0ZW5zaW9uIGNvZGUuICBGb3IgdGVzdGluZyBvbmx5LiIiIgogICAga2V5ID0gKG1vZHVsZSwgbmFtZSkKICAgIGlmIChfZXh0ZW5zaW9uX3JlZ2lzdHJ5LmdldChrZXkpICE9IGNvZGUgb3IKICAgICAgICBfaW52ZXJ0ZWRfcmVnaXN0cnkuZ2V0KGNvZGUpICE9IGtleSk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigia2V5ICVzIGlzIG5vdCByZWdpc3RlcmVkIHdpdGggY29kZSAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgKGtleSwgY29kZSkpCiAgICBkZWwgX2V4dGVuc2lvbl9yZWdpc3RyeVtrZXldCiAgICBkZWwgX2ludmVydGVkX3JlZ2lzdHJ5W2NvZGVdCiAgICBpZiBjb2RlIGluIF9leHRlbnNpb25fY2FjaGU6CiAgICAgICAgZGVsIF9leHRlbnNpb25fY2FjaGVbY29kZV0KCmRlZiBjbGVhcl9leHRlbnNpb25fY2FjaGUoKToKICAgIF9leHRlbnNpb25fY2FjaGUuY2xlYXIoKQoKIyBTdGFuZGFyZCBleHRlbnNpb24gY29kZSBhc3NpZ25tZW50cwoKIyBSZXNlcnZlZCByYW5nZXMKCiMgRmlyc3QgIExhc3QgQ291bnQgIFB1cnBvc2UKIyAgICAgMSAgIDEyNyAgIDEyNyAgUmVzZXJ2ZWQgZm9yIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5CiMgICAxMjggICAxOTEgICAgNjQgIFJlc2VydmVkIGZvciBab3BlCiMgICAxOTIgICAyMzkgICAgNDggIFJlc2VydmVkIGZvciAzcmQgcGFydGllcwojICAgMjQwICAgMjU1ICAgIDE2ICBSZXNlcnZlZCBmb3IgcHJpdmF0ZSB1c2UgKHdpbGwgbmV2ZXIgYmUgYXNzaWduZWQpCiMgICAyNTYgICBJbmYgICBJbmYgIFJlc2VydmVkIGZvciBmdXR1cmUgYXNzaWdubWVudAoKIyBFeHRlbnNpb24gY29kZXMgYXJlIGFzc2lnbmVkIGJ5IHRoZSBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KUEsDBBQAAAAAAAIgo1bWXoeBSQ8AAEkPAAAIAAAAY3J5cHQucHkiIiJXcmFwcGVyIHRvIHRoZSBQT1NJWCBjcnlwdCBsaWJyYXJ5IGNhbGwgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25hbGl0eS4iIiIKCmltcG9ydCBzeXMgYXMgX3N5cwoKdHJ5OgogICAgaW1wb3J0IF9jcnlwdApleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvcjoKICAgIGlmIF9zeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiVGhlIGNyeXB0IG1vZHVsZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MiKQogICAgZWxzZToKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiVGhlIHJlcXVpcmVkIF9jcnlwdCBtb2R1bGUgd2FzIG5vdCBidWlsdCBhcyBwYXJ0IG9mIENQeXRob24iKQoKaW1wb3J0IGVycm5vCmltcG9ydCBzdHJpbmcgYXMgX3N0cmluZwppbXBvcnQgd2FybmluZ3MKZnJvbSByYW5kb20gaW1wb3J0IFN5c3RlbVJhbmRvbSBhcyBfU3lzdGVtUmFuZG9tCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUgYXMgX25hbWVkdHVwbGUKCgp3YXJuaW5ncy5fZGVwcmVjYXRlZChfX25hbWVfXywgcmVtb3ZlPSgzLCAxMykpCgoKX3NhbHRjaGFycyA9IF9zdHJpbmcuYXNjaWlfbGV0dGVycyArIF9zdHJpbmcuZGlnaXRzICsgJy4vJwpfc3IgPSBfU3lzdGVtUmFuZG9tKCkKCgpjbGFzcyBfTWV0aG9kKF9uYW1lZHR1cGxlKCdfTWV0aG9kJywgJ25hbWUgaWRlbnQgc2FsdF9jaGFycyB0b3RhbF9zaXplJykpOgoKICAgICIiIkNsYXNzIHJlcHJlc2VudGluZyBhIHNhbHQgbWV0aG9kIHBlciB0aGUgTW9kdWxhciBDcnlwdCBGb3JtYXQgb3IgdGhlCiAgICBsZWdhY3kgMi1jaGFyYWN0ZXIgY3J5cHQgbWV0aG9kLiIiIgoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzxjcnlwdC5NRVRIT0Rfe30+Jy5mb3JtYXQoc2VsZi5uYW1lKQoKCmRlZiBta3NhbHQobWV0aG9kPU5vbmUsICosIHJvdW5kcz1Ob25lKToKICAgICIiIkdlbmVyYXRlIGEgc2FsdCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuCgogICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIHN0cm9uZ2VzdCBhdmFpbGFibGUgbWV0aG9kIHdpbGwgYmUgdXNlZC4KCiAgICAiIiIKICAgIGlmIG1ldGhvZCBpcyBOb25lOgogICAgICAgIG1ldGhvZCA9IG1ldGhvZHNbMF0KICAgIGlmIHJvdW5kcyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2Uocm91bmRzLCBpbnQpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ3tyb3VuZHMuX19jbGFzc19fLl9fbmFtZV9ffSBvYmplY3QgY2Fubm90IGJlICcKICAgICAgICAgICAgICAgICAgICAgICAgZidpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyJykKICAgIGlmIG5vdCBtZXRob2QuaWRlbnQ6ICAjIHRyYWRpdGlvbmFsCiAgICAgICAgcyA9ICcnCiAgICBlbHNlOiAgIyBtb2R1bGFyCiAgICAgICAgcyA9IGYnJHttZXRob2QuaWRlbnR9JCcKCiAgICBpZiBtZXRob2QuaWRlbnQgYW5kIG1ldGhvZC5pZGVudFswXSA9PSAnMic6ICAjIEJsb3dmaXNoIHZhcmlhbnRzCiAgICAgICAgaWYgcm91bmRzIGlzIE5vbmU6CiAgICAgICAgICAgIGxvZ19yb3VuZHMgPSAxMgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxvZ19yb3VuZHMgPSBpbnQuYml0X2xlbmd0aChyb3VuZHMtMSkKICAgICAgICAgICAgaWYgcm91bmRzICE9IDEgPDwgbG9nX3JvdW5kczoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3JvdW5kcyBtdXN0IGJlIGEgcG93ZXIgb2YgMicpCiAgICAgICAgICAgIGlmIG5vdCA0IDw9IGxvZ19yb3VuZHMgPD0gMzE6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdyb3VuZHMgb3V0IG9mIHRoZSByYW5nZSAyKio0IHRvIDIqKjMxJykKICAgICAgICBzICs9IGYne2xvZ19yb3VuZHM6MDJkfSQnCiAgICBlbGlmIG1ldGhvZC5pZGVudCBpbiAoJzUnLCAnNicpOiAgIyBTSEEtMgogICAgICAgIGlmIHJvdW5kcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbm90IDEwMDAgPD0gcm91bmRzIDw9IDk5OV85OTlfOTk5OgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigncm91bmRzIG91dCBvZiB0aGUgcmFuZ2UgMTAwMCB0byA5OTlfOTk5Xzk5OScpCiAgICAgICAgICAgIHMgKz0gZidyb3VuZHM9e3JvdW5kc30kJwogICAgZWxpZiByb3VuZHMgaXMgbm90IE5vbmU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmInttZXRob2R9IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgcm91bmRzIGFyZ3VtZW50IikKCiAgICBzICs9ICcnLmpvaW4oX3NyLmNob2ljZShfc2FsdGNoYXJzKSBmb3IgY2hhciBpbiByYW5nZShtZXRob2Quc2FsdF9jaGFycykpCiAgICByZXR1cm4gcwoKCmRlZiBjcnlwdCh3b3JkLCBzYWx0PU5vbmUpOgogICAgIiIiUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb25lLXdheSBoYXNoIG9mIGEgcGFzc3dvcmQsIHdpdGggYSBzYWx0CiAgICBwcmVwZW5kZWQuCgogICAgSWYgYGBzYWx0YGAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgdGhlIHN0cm9uZ2VzdAogICAgYXZhaWxhYmxlIG1ldGhvZCB3aWxsIGJlIHNlbGVjdGVkIGFuZCBhIHNhbHQgZ2VuZXJhdGVkLiAgT3RoZXJ3aXNlLAogICAgYGBzYWx0YGAgbWF5IGJlIG9uZSBvZiB0aGUgYGBjcnlwdC5NRVRIT0RfKmBgIHZhbHVlcywgb3IgYSBzdHJpbmcgYXMKICAgIHJldHVybmVkIGJ5IGBgY3J5cHQubWtzYWx0KClgYC4KCiAgICAiIiIKICAgIGlmIHNhbHQgaXMgTm9uZSBvciBpc2luc3RhbmNlKHNhbHQsIF9NZXRob2QpOgogICAgICAgIHNhbHQgPSBta3NhbHQoc2FsdCkKICAgIHJldHVybiBfY3J5cHQuY3J5cHQod29yZCwgc2FsdCkKCgojICBhdmFpbGFibGUgc2FsdGluZy9jcnlwdG8gbWV0aG9kcwptZXRob2RzID0gW10KCmRlZiBfYWRkX21ldGhvZChuYW1lLCAqYXJncywgcm91bmRzPU5vbmUpOgogICAgbWV0aG9kID0gX01ldGhvZChuYW1lLCAqYXJncykKICAgIGdsb2JhbHMoKVsnTUVUSE9EXycgKyBuYW1lXSA9IG1ldGhvZAogICAgc2FsdCA9IG1rc2FsdChtZXRob2QsIHJvdW5kcz1yb3VuZHMpCiAgICByZXN1bHQgPSBOb25lCiAgICB0cnk6CiAgICAgICAgcmVzdWx0ID0gY3J5cHQoJycsIHNhbHQpCiAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICMgTm90IGFsbCBsaWJjIGxpYnJhcmllcyBzdXBwb3J0IGFsbCBlbmNyeXB0aW9uIG1ldGhvZHMuCiAgICAgICAgaWYgZS5lcnJubyBpbiB7ZXJybm8uRUlOVkFMLCBlcnJuby5FUEVSTSwgZXJybm8uRU5PU1lTfToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmFpc2UKICAgIGlmIHJlc3VsdCBhbmQgbGVuKHJlc3VsdCkgPT0gbWV0aG9kLnRvdGFsX3NpemU6CiAgICAgICAgbWV0aG9kcy5hcHBlbmQobWV0aG9kKQogICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCl9hZGRfbWV0aG9kKCdTSEE1MTInLCAnNicsIDE2LCAxMDYpCl9hZGRfbWV0aG9kKCdTSEEyNTYnLCAnNScsIDE2LCA2MykKCiMgQ2hvb3NlIHRoZSBzdHJvbmdlc3Qgc3VwcG9ydGVkIHZlcnNpb24gb2YgQmxvd2Zpc2ggaGFzaGluZy4KIyBFYXJseSB2ZXJzaW9ucyBoYXZlIGZsYXdzLiAgVmVyc2lvbiAnYScgZml4ZXMgZmxhd3Mgb2YKIyB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgJ2InIGZpeGVzIGZsYXdzIG9mICdhJy4KIyAneScgaXMgdGhlIHNhbWUgYXMgJ2InLCBmb3IgY29tcGF0aWJpbGl0eQojIHdpdGggb3BlbndhbGwgY3J5cHRfYmxvd2Zpc2guCmZvciBfdiBpbiAnYicsICd5JywgJ2EnLCAnJzoKICAgIGlmIF9hZGRfbWV0aG9kKCdCTE9XRklTSCcsICcyJyArIF92LCAyMiwgNTkgKyBsZW4oX3YpLCByb3VuZHM9MTw8NCk6CiAgICAgICAgYnJlYWsKCl9hZGRfbWV0aG9kKCdNRDUnLCAnMScsIDgsIDM0KQpfYWRkX21ldGhvZCgnQ1JZUFQnLCBOb25lLCAyLCAxMykKCmRlbCBfdiwgX2FkZF9tZXRob2QKUEsDBBQAAAAAAAIgo1ZJUJGunj4AAJ4+AAAGAAAAY3N2LnB5CiIiIgpjc3YucHkgLSByZWFkL3dyaXRlL2ludmVzdGlnYXRlIENTViBmaWxlcwoiIiIKCmltcG9ydCByZQpmcm9tIF9jc3YgaW1wb3J0IEVycm9yLCBfX3ZlcnNpb25fXywgd3JpdGVyLCByZWFkZXIsIHJlZ2lzdGVyX2RpYWxlY3QsIFwKICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyX2RpYWxlY3QsIGdldF9kaWFsZWN0LCBsaXN0X2RpYWxlY3RzLCBcCiAgICAgICAgICAgICAgICAgZmllbGRfc2l6ZV9saW1pdCwgXAogICAgICAgICAgICAgICAgIFFVT1RFX01JTklNQUwsIFFVT1RFX0FMTCwgUVVPVEVfTk9OTlVNRVJJQywgUVVPVEVfTk9ORSwgXAogICAgICAgICAgICAgICAgIF9fZG9jX18KZnJvbSBfY3N2IGltcG9ydCBEaWFsZWN0IGFzIF9EaWFsZWN0Cgpmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwoKX19hbGxfXyA9IFsiUVVPVEVfTUlOSU1BTCIsICJRVU9URV9BTEwiLCAiUVVPVEVfTk9OTlVNRVJJQyIsICJRVU9URV9OT05FIiwKICAgICAgICAgICAiRXJyb3IiLCAiRGlhbGVjdCIsICJfX2RvY19fIiwgImV4Y2VsIiwgImV4Y2VsX3RhYiIsCiAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCiAgICAgICAgICAgInJlZ2lzdGVyX2RpYWxlY3QiLCAiZ2V0X2RpYWxlY3QiLCAibGlzdF9kaWFsZWN0cyIsICJTbmlmZmVyIiwKICAgICAgICAgICAidW5yZWdpc3Rlcl9kaWFsZWN0IiwgIl9fdmVyc2lvbl9fIiwgIkRpY3RSZWFkZXIiLCAiRGljdFdyaXRlciIsCiAgICAgICAgICAgInVuaXhfZGlhbGVjdCJdCgpjbGFzcyBEaWFsZWN0OgogICAgIiIiRGVzY3JpYmUgYSBDU1YgZGlhbGVjdC4KCiAgICBUaGlzIG11c3QgYmUgc3ViY2xhc3NlZCAoc2VlIGNzdi5leGNlbCkuICBWYWxpZCBhdHRyaWJ1dGVzIGFyZToKICAgIGRlbGltaXRlciwgcXVvdGVjaGFyLCBlc2NhcGVjaGFyLCBkb3VibGVxdW90ZSwgc2tpcGluaXRpYWxzcGFjZSwKICAgIGxpbmV0ZXJtaW5hdG9yLCBxdW90aW5nLgoKICAgICIiIgogICAgX25hbWUgPSAiIgogICAgX3ZhbGlkID0gRmFsc2UKICAgICMgcGxhY2Vob2xkZXJzCiAgICBkZWxpbWl0ZXIgPSBOb25lCiAgICBxdW90ZWNoYXIgPSBOb25lCiAgICBlc2NhcGVjaGFyID0gTm9uZQogICAgZG91YmxlcXVvdGUgPSBOb25lCiAgICBza2lwaW5pdGlhbHNwYWNlID0gTm9uZQogICAgbGluZXRlcm1pbmF0b3IgPSBOb25lCiAgICBxdW90aW5nID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9fY2xhc3NfXyAhPSBEaWFsZWN0OgogICAgICAgICAgICBzZWxmLl92YWxpZCA9IFRydWUKICAgICAgICBzZWxmLl92YWxpZGF0ZSgpCgogICAgZGVmIF92YWxpZGF0ZShzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIF9EaWFsZWN0KHNlbGYpCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgogICAgICAgICAgICAjIFdlIGRvIHRoaXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBweTIuMwogICAgICAgICAgICByYWlzZSBFcnJvcihzdHIoZSkpCgpjbGFzcyBleGNlbChEaWFsZWN0KToKICAgICIiIkRlc2NyaWJlIHRoZSB1c3VhbCBwcm9wZXJ0aWVzIG9mIEV4Y2VsLWdlbmVyYXRlZCBDU1YgZmlsZXMuIiIiCiAgICBkZWxpbWl0ZXIgPSAnLCcKICAgIHF1b3RlY2hhciA9ICciJwogICAgZG91YmxlcXVvdGUgPSBUcnVlCiAgICBza2lwaW5pdGlhbHNwYWNlID0gRmFsc2UKICAgIGxpbmV0ZXJtaW5hdG9yID0gJ1xyXG4nCiAgICBxdW90aW5nID0gUVVPVEVfTUlOSU1BTApyZWdpc3Rlcl9kaWFsZWN0KCJleGNlbCIsIGV4Y2VsKQoKY2xhc3MgZXhjZWxfdGFiKGV4Y2VsKToKICAgICIiIkRlc2NyaWJlIHRoZSB1c3VhbCBwcm9wZXJ0aWVzIG9mIEV4Y2VsLWdlbmVyYXRlZCBUQUItZGVsaW1pdGVkIGZpbGVzLiIiIgogICAgZGVsaW1pdGVyID0gJ1x0JwpyZWdpc3Rlcl9kaWFsZWN0KCJleGNlbC10YWIiLCBleGNlbF90YWIpCgpjbGFzcyB1bml4X2RpYWxlY3QoRGlhbGVjdCk6CiAgICAiIiJEZXNjcmliZSB0aGUgdXN1YWwgcHJvcGVydGllcyBvZiBVbml4LWdlbmVyYXRlZCBDU1YgZmlsZXMuIiIiCiAgICBkZWxpbWl0ZXIgPSAnLCcKICAgIHF1b3RlY2hhciA9ICciJwogICAgZG91YmxlcXVvdGUgPSBUcnVlCiAgICBza2lwaW5pdGlhbHNwYWNlID0gRmFsc2UKICAgIGxpbmV0ZXJtaW5hdG9yID0gJ1xuJwogICAgcXVvdGluZyA9IFFVT1RFX0FMTApyZWdpc3Rlcl9kaWFsZWN0KCJ1bml4IiwgdW5peF9kaWFsZWN0KQoKCmNsYXNzIERpY3RSZWFkZXI6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZiwgZmllbGRuYW1lcz1Ob25lLCByZXN0a2V5PU5vbmUsIHJlc3R2YWw9Tm9uZSwKICAgICAgICAgICAgICAgICBkaWFsZWN0PSJleGNlbCIsICphcmdzLCAqKmt3ZHMpOgogICAgICAgIHNlbGYuX2ZpZWxkbmFtZXMgPSBmaWVsZG5hbWVzICAgIyBsaXN0IG9mIGtleXMgZm9yIHRoZSBkaWN0CiAgICAgICAgc2VsZi5yZXN0a2V5ID0gcmVzdGtleSAgICAgICAgICAjIGtleSB0byBjYXRjaCBsb25nIHJvd3MKICAgICAgICBzZWxmLnJlc3R2YWwgPSByZXN0dmFsICAgICAgICAgICMgZGVmYXVsdCB2YWx1ZSBmb3Igc2hvcnQgcm93cwogICAgICAgIHNlbGYucmVhZGVyID0gcmVhZGVyKGYsIGRpYWxlY3QsICphcmdzLCAqKmt3ZHMpCiAgICAgICAgc2VsZi5kaWFsZWN0ID0gZGlhbGVjdAogICAgICAgIHNlbGYubGluZV9udW0gPSAwCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgQHByb3BlcnR5CiAgICBkZWYgZmllbGRuYW1lcyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9maWVsZG5hbWVzIGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX2ZpZWxkbmFtZXMgPSBuZXh0KHNlbGYucmVhZGVyKQogICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBzZWxmLmxpbmVfbnVtID0gc2VsZi5yZWFkZXIubGluZV9udW0KICAgICAgICByZXR1cm4gc2VsZi5fZmllbGRuYW1lcwoKICAgIEBmaWVsZG5hbWVzLnNldHRlcgogICAgZGVmIGZpZWxkbmFtZXMoc2VsZiwgdmFsdWUpOgogICAgICAgIHNlbGYuX2ZpZWxkbmFtZXMgPSB2YWx1ZQoKICAgIGRlZiBfX25leHRfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLmxpbmVfbnVtID09IDA6CiAgICAgICAgICAgICMgVXNlZCBvbmx5IGZvciBpdHMgc2lkZSBlZmZlY3QuCiAgICAgICAgICAgIHNlbGYuZmllbGRuYW1lcwogICAgICAgIHJvdyA9IG5leHQoc2VsZi5yZWFkZXIpCiAgICAgICAgc2VsZi5saW5lX251bSA9IHNlbGYucmVhZGVyLmxpbmVfbnVtCgogICAgICAgICMgdW5saWtlIHRoZSBiYXNpYyByZWFkZXIsIHdlIHByZWZlciBub3QgdG8gcmV0dXJuIGJsYW5rcywKICAgICAgICAjIGJlY2F1c2Ugd2Ugd2lsbCB0eXBpY2FsbHkgd2luZCB1cCB3aXRoIGEgZGljdCBmdWxsIG9mIE5vbmUKICAgICAgICAjIHZhbHVlcwogICAgICAgIHdoaWxlIHJvdyA9PSBbXToKICAgICAgICAgICAgcm93ID0gbmV4dChzZWxmLnJlYWRlcikKICAgICAgICBkID0gZGljdCh6aXAoc2VsZi5maWVsZG5hbWVzLCByb3cpKQogICAgICAgIGxmID0gbGVuKHNlbGYuZmllbGRuYW1lcykKICAgICAgICBsciA9IGxlbihyb3cpCiAgICAgICAgaWYgbGYgPCBscjoKICAgICAgICAgICAgZFtzZWxmLnJlc3RrZXldID0gcm93W2xmOl0KICAgICAgICBlbGlmIGxmID4gbHI6CiAgICAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5maWVsZG5hbWVzW2xyOl06CiAgICAgICAgICAgICAgICBkW2tleV0gPSBzZWxmLnJlc3R2YWwKICAgICAgICByZXR1cm4gZAoKCmNsYXNzIERpY3RXcml0ZXI6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZiwgZmllbGRuYW1lcywgcmVzdHZhbD0iIiwgZXh0cmFzYWN0aW9uPSJyYWlzZSIsCiAgICAgICAgICAgICAgICAgZGlhbGVjdD0iZXhjZWwiLCAqYXJncywgKiprd2RzKToKICAgICAgICBzZWxmLmZpZWxkbmFtZXMgPSBmaWVsZG5hbWVzICAgICMgbGlzdCBvZiBrZXlzIGZvciB0aGUgZGljdAogICAgICAgIHNlbGYucmVzdHZhbCA9IHJlc3R2YWwgICAgICAgICAgIyBmb3Igd3JpdGluZyBzaG9ydCBkaWN0cwogICAgICAgIGlmIGV4dHJhc2FjdGlvbi5sb3dlcigpIG5vdCBpbiAoInJhaXNlIiwgImlnbm9yZSIpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJleHRyYXNhY3Rpb24gKCVzKSBtdXN0IGJlICdyYWlzZScgb3IgJ2lnbm9yZSciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBleHRyYXNhY3Rpb24pCiAgICAgICAgc2VsZi5leHRyYXNhY3Rpb24gPSBleHRyYXNhY3Rpb24KICAgICAgICBzZWxmLndyaXRlciA9IHdyaXRlcihmLCBkaWFsZWN0LCAqYXJncywgKiprd2RzKQoKICAgIGRlZiB3cml0ZWhlYWRlcihzZWxmKToKICAgICAgICBoZWFkZXIgPSBkaWN0KHppcChzZWxmLmZpZWxkbmFtZXMsIHNlbGYuZmllbGRuYW1lcykpCiAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyb3coaGVhZGVyKQoKICAgIGRlZiBfZGljdF90b19saXN0KHNlbGYsIHJvd2RpY3QpOgogICAgICAgIGlmIHNlbGYuZXh0cmFzYWN0aW9uID09ICJyYWlzZSI6CiAgICAgICAgICAgIHdyb25nX2ZpZWxkcyA9IHJvd2RpY3Qua2V5cygpIC0gc2VsZi5maWVsZG5hbWVzCiAgICAgICAgICAgIGlmIHdyb25nX2ZpZWxkczoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRpY3QgY29udGFpbnMgZmllbGRzIG5vdCBpbiBmaWVsZG5hbWVzOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgIi5qb2luKFtyZXByKHgpIGZvciB4IGluIHdyb25nX2ZpZWxkc10pKQogICAgICAgIHJldHVybiAocm93ZGljdC5nZXQoa2V5LCBzZWxmLnJlc3R2YWwpIGZvciBrZXkgaW4gc2VsZi5maWVsZG5hbWVzKQoKICAgIGRlZiB3cml0ZXJvdyhzZWxmLCByb3dkaWN0KToKICAgICAgICByZXR1cm4gc2VsZi53cml0ZXIud3JpdGVyb3coc2VsZi5fZGljdF90b19saXN0KHJvd2RpY3QpKQoKICAgIGRlZiB3cml0ZXJvd3Moc2VsZiwgcm93ZGljdHMpOgogICAgICAgIHJldHVybiBzZWxmLndyaXRlci53cml0ZXJvd3MobWFwKHNlbGYuX2RpY3RfdG9fbGlzdCwgcm93ZGljdHMpKQoKIyBHdWFyZCBTbmlmZmVyJ3MgdHlwZSBjaGVja2luZyBhZ2FpbnN0IGJ1aWxkcyB0aGF0IGV4Y2x1ZGUgY29tcGxleCgpCnRyeToKICAgIGNvbXBsZXgKZXhjZXB0IE5hbWVFcnJvcjoKICAgIGNvbXBsZXggPSBmbG9hdAoKY2xhc3MgU25pZmZlcjoKICAgICcnJwogICAgIlNuaWZmcyIgdGhlIGZvcm1hdCBvZiBhIENTViBmaWxlIChpLmUuIGRlbGltaXRlciwgcXVvdGVjaGFyKQogICAgUmV0dXJucyBhIERpYWxlY3Qgb2JqZWN0LgogICAgJycnCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIyBpbiBjYXNlIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgcG9zc2libGUgZGVsaW1pdGVyCiAgICAgICAgc2VsZi5wcmVmZXJyZWQgPSBbJywnLCAnXHQnLCAnOycsICcgJywgJzonXQoKCiAgICBkZWYgc25pZmYoc2VsZiwgc2FtcGxlLCBkZWxpbWl0ZXJzPU5vbmUpOgogICAgICAgICIiIgogICAgICAgIFJldHVybnMgYSBkaWFsZWN0IChvciBOb25lKSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzYW1wbGUKICAgICAgICAiIiIKCiAgICAgICAgcXVvdGVjaGFyLCBkb3VibGVxdW90ZSwgZGVsaW1pdGVyLCBza2lwaW5pdGlhbHNwYWNlID0gXAogICAgICAgICAgICAgICAgICAgc2VsZi5fZ3Vlc3NfcXVvdGVfYW5kX2RlbGltaXRlcihzYW1wbGUsIGRlbGltaXRlcnMpCiAgICAgICAgaWYgbm90IGRlbGltaXRlcjoKICAgICAgICAgICAgZGVsaW1pdGVyLCBza2lwaW5pdGlhbHNwYWNlID0gc2VsZi5fZ3Vlc3NfZGVsaW1pdGVyKHNhbXBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltaXRlcnMpCgogICAgICAgIGlmIG5vdCBkZWxpbWl0ZXI6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCJDb3VsZCBub3QgZGV0ZXJtaW5lIGRlbGltaXRlciIpCgogICAgICAgIGNsYXNzIGRpYWxlY3QoRGlhbGVjdCk6CiAgICAgICAgICAgIF9uYW1lID0gInNuaWZmZWQiCiAgICAgICAgICAgIGxpbmV0ZXJtaW5hdG9yID0gJ1xyXG4nCiAgICAgICAgICAgIHF1b3RpbmcgPSBRVU9URV9NSU5JTUFMCiAgICAgICAgICAgICMgZXNjYXBlY2hhciA9ICcnCgogICAgICAgIGRpYWxlY3QuZG91YmxlcXVvdGUgPSBkb3VibGVxdW90ZQogICAgICAgIGRpYWxlY3QuZGVsaW1pdGVyID0gZGVsaW1pdGVyCiAgICAgICAgIyBfY3N2LnJlYWRlciB3b24ndCBhY2NlcHQgYSBxdW90ZWNoYXIgb2YgJycKICAgICAgICBkaWFsZWN0LnF1b3RlY2hhciA9IHF1b3RlY2hhciBvciAnIicKICAgICAgICBkaWFsZWN0LnNraXBpbml0aWFsc3BhY2UgPSBza2lwaW5pdGlhbHNwYWNlCgogICAgICAgIHJldHVybiBkaWFsZWN0CgoKICAgIGRlZiBfZ3Vlc3NfcXVvdGVfYW5kX2RlbGltaXRlcihzZWxmLCBkYXRhLCBkZWxpbWl0ZXJzKToKICAgICAgICAiIiIKICAgICAgICBMb29rcyBmb3IgdGV4dCBlbmNsb3NlZCBiZXR3ZWVuIHR3byBpZGVudGljYWwgcXVvdGVzCiAgICAgICAgKHRoZSBwcm9iYWJsZSBxdW90ZWNoYXIpIHdoaWNoIGFyZSBwcmVjZWRlZCBhbmQgZm9sbG93ZWQKICAgICAgICBieSB0aGUgc2FtZSBjaGFyYWN0ZXIgKHRoZSBwcm9iYWJsZSBkZWxpbWl0ZXIpLgogICAgICAgIEZvciBleGFtcGxlOgogICAgICAgICAgICAgICAgICAgICAgICAgLCdzb21lIHRleHQnLAogICAgICAgIFRoZSBxdW90ZSB3aXRoIHRoZSBtb3N0IHdpbnMsIHNhbWUgd2l0aCB0aGUgZGVsaW1pdGVyLgogICAgICAgIElmIHRoZXJlIGlzIG5vIHF1b3RlY2hhciB0aGUgZGVsaW1pdGVyIGNhbid0IGJlIGRldGVybWluZWQKICAgICAgICB0aGlzIHdheS4KICAgICAgICAiIiIKCiAgICAgICAgbWF0Y2hlcyA9IFtdCiAgICAgICAgZm9yIHJlc3RyIGluIChyJyg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UD1kZWxpbSknLCAjICwiLio/IiwKICAgICAgICAgICAgICAgICAgICAgIHInKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPyknLCAgICMgICIuKj8iLAogICAgICAgICAgICAgICAgICAgICAgcicoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScsICAgIyAsIi4qPyIKICAgICAgICAgICAgICAgICAgICAgIHInKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJyk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICIuKj8iIChubyBkZWxpbSwgbm8gc3BhY2UpCiAgICAgICAgICAgIHJlZ2V4cCA9IHJlLmNvbXBpbGUocmVzdHIsIHJlLkRPVEFMTCB8IHJlLk1VTFRJTElORSkKICAgICAgICAgICAgbWF0Y2hlcyA9IHJlZ2V4cC5maW5kYWxsKGRhdGEpCiAgICAgICAgICAgIGlmIG1hdGNoZXM6CiAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICBpZiBub3QgbWF0Y2hlczoKICAgICAgICAgICAgIyAocXVvdGVjaGFyLCBkb3VibGVxdW90ZSwgZGVsaW1pdGVyLCBza2lwaW5pdGlhbHNwYWNlKQogICAgICAgICAgICByZXR1cm4gKCcnLCBGYWxzZSwgTm9uZSwgMCkKICAgICAgICBxdW90ZXMgPSB7fQogICAgICAgIGRlbGltcyA9IHt9CiAgICAgICAgc3BhY2VzID0gMAogICAgICAgIGdyb3VwaW5kZXggPSByZWdleHAuZ3JvdXBpbmRleAogICAgICAgIGZvciBtIGluIG1hdGNoZXM6CiAgICAgICAgICAgIG4gPSBncm91cGluZGV4WydxdW90ZSddIC0gMQogICAgICAgICAgICBrZXkgPSBtW25dCiAgICAgICAgICAgIGlmIGtleToKICAgICAgICAgICAgICAgIHF1b3Rlc1trZXldID0gcXVvdGVzLmdldChrZXksIDApICsgMQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBuID0gZ3JvdXBpbmRleFsnZGVsaW0nXSAtIDEKICAgICAgICAgICAgICAgIGtleSA9IG1bbl0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaWYga2V5IGFuZCAoZGVsaW1pdGVycyBpcyBOb25lIG9yIGtleSBpbiBkZWxpbWl0ZXJzKToKICAgICAgICAgICAgICAgIGRlbGltc1trZXldID0gZGVsaW1zLmdldChrZXksIDApICsgMQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBuID0gZ3JvdXBpbmRleFsnc3BhY2UnXSAtIDEKICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaWYgbVtuXToKICAgICAgICAgICAgICAgIHNwYWNlcyArPSAxCgogICAgICAgIHF1b3RlY2hhciA9IG1heChxdW90ZXMsIGtleT1xdW90ZXMuZ2V0KQoKICAgICAgICBpZiBkZWxpbXM6CiAgICAgICAgICAgIGRlbGltID0gbWF4KGRlbGltcywga2V5PWRlbGltcy5nZXQpCiAgICAgICAgICAgIHNraXBpbml0aWFsc3BhY2UgPSBkZWxpbXNbZGVsaW1dID09IHNwYWNlcwogICAgICAgICAgICBpZiBkZWxpbSA9PSAnXG4nOiAjIG1vc3QgbGlrZWx5IGEgZmlsZSB3aXRoIGEgc2luZ2xlIGNvbHVtbgogICAgICAgICAgICAgICAgZGVsaW0gPSAnJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgdGhlcmUgaXMgKm5vKiBkZWxpbWl0ZXIsIGl0J3MgYSBzaW5nbGUgY29sdW1uIG9mIHF1b3RlZCBkYXRhCiAgICAgICAgICAgIGRlbGltID0gJycKICAgICAgICAgICAgc2tpcGluaXRpYWxzcGFjZSA9IDAKCiAgICAgICAgIyBpZiB3ZSBzZWUgYW4gZXh0cmEgcXVvdGUgYmV0d2VlbiBkZWxpbWl0ZXJzLCB3ZSd2ZSBnb3QgYQogICAgICAgICMgZG91YmxlIHF1b3RlZCBmb3JtYXQKICAgICAgICBkcV9yZWdleHAgPSByZS5jb21waWxlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIoKCUoZGVsaW0pcyl8XilcVyolKHF1b3RlKXNbXiUoZGVsaW0pc1xuXSolKHF1b3RlKXNbXiUoZGVsaW0pc1xuXSolKHF1b3RlKXNcVyooKCUoZGVsaW0pcyl8JCkiICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydkZWxpbSc6cmUuZXNjYXBlKGRlbGltKSwgJ3F1b3RlJzpxdW90ZWNoYXJ9LCByZS5NVUxUSUxJTkUpCgoKCiAgICAgICAgaWYgZHFfcmVnZXhwLnNlYXJjaChkYXRhKToKICAgICAgICAgICAgZG91YmxlcXVvdGUgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZG91YmxlcXVvdGUgPSBGYWxzZQoKICAgICAgICByZXR1cm4gKHF1b3RlY2hhciwgZG91YmxlcXVvdGUsIGRlbGltLCBza2lwaW5pdGlhbHNwYWNlKQoKCiAgICBkZWYgX2d1ZXNzX2RlbGltaXRlcihzZWxmLCBkYXRhLCBkZWxpbWl0ZXJzKToKICAgICAgICAiIiIKICAgICAgICBUaGUgZGVsaW1pdGVyIC9zaG91bGQvIG9jY3VyIHRoZSBzYW1lIG51bWJlciBvZiB0aW1lcyBvbgogICAgICAgIGVhY2ggcm93LiBIb3dldmVyLCBkdWUgdG8gbWFsZm9ybWVkIGRhdGEsIGl0IG1heSBub3QuIFdlIGRvbid0IHdhbnQKICAgICAgICBhbiBhbGwgb3Igbm90aGluZyBhcHByb2FjaCwgc28gd2UgYWxsb3cgZm9yIHNtYWxsIHZhcmlhdGlvbnMgaW4gdGhpcwogICAgICAgIG51bWJlci4KICAgICAgICAgIDEpIGJ1aWxkIGEgdGFibGUgb2YgdGhlIGZyZXF1ZW5jeSBvZiBlYWNoIGNoYXJhY3RlciBvbiBldmVyeSBsaW5lLgogICAgICAgICAgMikgYnVpbGQgYSB0YWJsZSBvZiBmcmVxdWVuY2llcyBvZiB0aGlzIGZyZXF1ZW5jeSAobWV0YS1mcmVxdWVuY3k/KSwKICAgICAgICAgICAgIGUuZy4gICd4IG9jY3VycmVkIDUgdGltZXMgaW4gMTAgcm93cywgNiB0aW1lcyBpbiAxMDAwIHJvd3MsCiAgICAgICAgICAgICA3IHRpbWVzIGluIDIgcm93cycKICAgICAgICAgIDMpIHVzZSB0aGUgbW9kZSBvZiB0aGUgbWV0YS1mcmVxdWVuY3kgdG8gZGV0ZXJtaW5lIHRoZSAvZXhwZWN0ZWQvCiAgICAgICAgICAgICBmcmVxdWVuY3kgZm9yIHRoYXQgY2hhcmFjdGVyCiAgICAgICAgICA0KSBmaW5kIG91dCBob3cgb2Z0ZW4gdGhlIGNoYXJhY3RlciBhY3R1YWxseSBtZWV0cyB0aGF0IGdvYWwKICAgICAgICAgIDUpIHRoZSBjaGFyYWN0ZXIgdGhhdCBiZXN0IG1lZXRzIGl0cyBnb2FsIGlzIHRoZSBkZWxpbWl0ZXIKICAgICAgICBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhlIGRhdGEgaXMgZXZhbHVhdGVkIGluIGNodW5rcywgc28gaXQgY2FuCiAgICAgICAgdHJ5IGFuZCBldmFsdWF0ZSB0aGUgc21hbGxlc3QgcG9ydGlvbiBvZiB0aGUgZGF0YSBwb3NzaWJsZSwgZXZhbHVhdGluZwogICAgICAgIGFkZGl0aW9uYWwgY2h1bmtzIGFzIG5lY2Vzc2FyeS4KICAgICAgICAiIiIKCiAgICAgICAgZGF0YSA9IGxpc3QoZmlsdGVyKE5vbmUsIGRhdGEuc3BsaXQoJ1xuJykpKQoKICAgICAgICBhc2NpaSA9IFtjaHIoYykgZm9yIGMgaW4gcmFuZ2UoMTI3KV0gIyA3LWJpdCBBU0NJSQoKICAgICAgICAjIGJ1aWxkIGZyZXF1ZW5jeSB0YWJsZXMKICAgICAgICBjaHVua0xlbmd0aCA9IG1pbigxMCwgbGVuKGRhdGEpKQogICAgICAgIGl0ZXJhdGlvbiA9IDAKICAgICAgICBjaGFyRnJlcXVlbmN5ID0ge30KICAgICAgICBtb2RlcyA9IHt9CiAgICAgICAgZGVsaW1zID0ge30KICAgICAgICBzdGFydCwgZW5kID0gMCwgY2h1bmtMZW5ndGgKICAgICAgICB3aGlsZSBzdGFydCA8IGxlbihkYXRhKToKICAgICAgICAgICAgaXRlcmF0aW9uICs9IDEKICAgICAgICAgICAgZm9yIGxpbmUgaW4gZGF0YVtzdGFydDplbmRdOgogICAgICAgICAgICAgICAgZm9yIGNoYXIgaW4gYXNjaWk6CiAgICAgICAgICAgICAgICAgICAgbWV0YUZyZXF1ZW5jeSA9IGNoYXJGcmVxdWVuY3kuZ2V0KGNoYXIsIHt9KQogICAgICAgICAgICAgICAgICAgICMgbXVzdCBjb3VudCBldmVuIGlmIGZyZXF1ZW5jeSBpcyAwCiAgICAgICAgICAgICAgICAgICAgZnJlcSA9IGxpbmUuY291bnQoY2hhcikKICAgICAgICAgICAgICAgICAgICAjIHZhbHVlIGlzIHRoZSBtb2RlCiAgICAgICAgICAgICAgICAgICAgbWV0YUZyZXF1ZW5jeVtmcmVxXSA9IG1ldGFGcmVxdWVuY3kuZ2V0KGZyZXEsIDApICsgMQogICAgICAgICAgICAgICAgICAgIGNoYXJGcmVxdWVuY3lbY2hhcl0gPSBtZXRhRnJlcXVlbmN5CgogICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyRnJlcXVlbmN5LmtleXMoKToKICAgICAgICAgICAgICAgIGl0ZW1zID0gbGlzdChjaGFyRnJlcXVlbmN5W2NoYXJdLml0ZW1zKCkpCiAgICAgICAgICAgICAgICBpZiBsZW4oaXRlbXMpID09IDEgYW5kIGl0ZW1zWzBdWzBdID09IDA6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBtb2RlIG9mIHRoZSBmcmVxdWVuY2llcwogICAgICAgICAgICAgICAgaWYgbGVuKGl0ZW1zKSA+IDE6CiAgICAgICAgICAgICAgICAgICAgbW9kZXNbY2hhcl0gPSBtYXgoaXRlbXMsIGtleT1sYW1iZGEgeDogeFsxXSkKICAgICAgICAgICAgICAgICAgICAjIGFkanVzdCB0aGUgbW9kZSAtIHN1YnRyYWN0IHRoZSBzdW0gb2YgYWxsCiAgICAgICAgICAgICAgICAgICAgIyBvdGhlciBmcmVxdWVuY2llcwogICAgICAgICAgICAgICAgICAgIGl0ZW1zLnJlbW92ZShtb2Rlc1tjaGFyXSkKICAgICAgICAgICAgICAgICAgICBtb2Rlc1tjaGFyXSA9IChtb2Rlc1tjaGFyXVswXSwgbW9kZXNbY2hhcl1bMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHN1bShpdGVtWzFdIGZvciBpdGVtIGluIGl0ZW1zKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbW9kZXNbY2hhcl0gPSBpdGVtc1swXQoKICAgICAgICAgICAgIyBidWlsZCBhIGxpc3Qgb2YgcG9zc2libGUgZGVsaW1pdGVycwogICAgICAgICAgICBtb2RlTGlzdCA9IG1vZGVzLml0ZW1zKCkKICAgICAgICAgICAgdG90YWwgPSBmbG9hdChtaW4oY2h1bmtMZW5ndGggKiBpdGVyYXRpb24sIGxlbihkYXRhKSkpCiAgICAgICAgICAgICMgKHJvd3Mgb2YgY29uc2lzdGVudCBkYXRhKSAvIChudW1iZXIgb2Ygcm93cykgPSAxMDAlCiAgICAgICAgICAgIGNvbnNpc3RlbmN5ID0gMS4wCiAgICAgICAgICAgICMgbWluaW11bSBjb25zaXN0ZW5jeSB0aHJlc2hvbGQKICAgICAgICAgICAgdGhyZXNob2xkID0gMC45CiAgICAgICAgICAgIHdoaWxlIGxlbihkZWxpbXMpID09IDAgYW5kIGNvbnNpc3RlbmN5ID49IHRocmVzaG9sZDoKICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIG1vZGVMaXN0OgogICAgICAgICAgICAgICAgICAgIGlmIHZbMF0gPiAwIGFuZCB2WzFdID4gMDoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2WzFdL3RvdGFsKSA+PSBjb25zaXN0ZW5jeSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxpbWl0ZXJzIGlzIE5vbmUgb3IgayBpbiBkZWxpbWl0ZXJzKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbXNba10gPSB2CiAgICAgICAgICAgICAgICBjb25zaXN0ZW5jeSAtPSAwLjAxCgogICAgICAgICAgICBpZiBsZW4oZGVsaW1zKSA9PSAxOgogICAgICAgICAgICAgICAgZGVsaW0gPSBsaXN0KGRlbGltcy5rZXlzKCkpWzBdCiAgICAgICAgICAgICAgICBza2lwaW5pdGlhbHNwYWNlID0gKGRhdGFbMF0uY291bnQoZGVsaW0pID09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbMF0uY291bnQoIiVjICIgJSBkZWxpbSkpCiAgICAgICAgICAgICAgICByZXR1cm4gKGRlbGltLCBza2lwaW5pdGlhbHNwYWNlKQoKICAgICAgICAgICAgIyBhbmFseXplIGFub3RoZXIgY2h1bmtMZW5ndGggbGluZXMKICAgICAgICAgICAgc3RhcnQgPSBlbmQKICAgICAgICAgICAgZW5kICs9IGNodW5rTGVuZ3RoCgogICAgICAgIGlmIG5vdCBkZWxpbXM6CiAgICAgICAgICAgIHJldHVybiAoJycsIDApCgogICAgICAgICMgaWYgdGhlcmUncyBtb3JlIHRoYW4gb25lLCBmYWxsIGJhY2sgdG8gYSAncHJlZmVycmVkJyBsaXN0CiAgICAgICAgaWYgbGVuKGRlbGltcykgPiAxOgogICAgICAgICAgICBmb3IgZCBpbiBzZWxmLnByZWZlcnJlZDoKICAgICAgICAgICAgICAgIGlmIGQgaW4gZGVsaW1zLmtleXMoKToKICAgICAgICAgICAgICAgICAgICBza2lwaW5pdGlhbHNwYWNlID0gKGRhdGFbMF0uY291bnQoZCkgPT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbMF0uY291bnQoIiVjICIgJSBkKSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGQsIHNraXBpbml0aWFsc3BhY2UpCgogICAgICAgICMgbm90aGluZyBlbHNlIGluZGljYXRlcyBhIHByZWZlcmVuY2UsIHBpY2sgdGhlIGNoYXJhY3RlciB0aGF0CiAgICAgICAgIyBkb21pbmF0ZXMoPykKICAgICAgICBpdGVtcyA9IFsodixrKSBmb3IgKGssdikgaW4gZGVsaW1zLml0ZW1zKCldCiAgICAgICAgaXRlbXMuc29ydCgpCiAgICAgICAgZGVsaW0gPSBpdGVtc1stMV1bMV0KCiAgICAgICAgc2tpcGluaXRpYWxzcGFjZSA9IChkYXRhWzBdLmNvdW50KGRlbGltKSA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVswXS5jb3VudCgiJWMgIiAlIGRlbGltKSkKICAgICAgICByZXR1cm4gKGRlbGltLCBza2lwaW5pdGlhbHNwYWNlKQoKCiAgICBkZWYgaGFzX2hlYWRlcihzZWxmLCBzYW1wbGUpOgogICAgICAgICMgQ3JlYXRlcyBhIGRpY3Rpb25hcnkgb2YgdHlwZXMgb2YgZGF0YSBpbiBlYWNoIGNvbHVtbi4gSWYgYW55CiAgICAgICAgIyBjb2x1bW4gaXMgb2YgYSBzaW5nbGUgdHlwZSAoc2F5LCBpbnRlZ2VycyksICpleGNlcHQqIGZvciB0aGUgZmlyc3QKICAgICAgICAjIHJvdywgdGhlbiB0aGUgZmlyc3Qgcm93IGlzIHByZXN1bWVkIHRvIGJlIGxhYmVscy4gSWYgdGhlIHR5cGUKICAgICAgICAjIGNhbid0IGJlIGRldGVybWluZWQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgYSBzdHJpbmcgaW4gd2hpY2ggY2FzZQogICAgICAgICMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzIHRoZSBkZXRlcm1pbmluZyBmYWN0b3I6IGlmIGFsbCBvZiB0aGUKICAgICAgICAjIHJvd3MgZXhjZXB0IGZvciB0aGUgZmlyc3QgYXJlIHRoZSBzYW1lIGxlbmd0aCwgaXQncyBhIGhlYWRlci4KICAgICAgICAjIEZpbmFsbHksIGEgJ3ZvdGUnIGlzIHRha2VuIGF0IHRoZSBlbmQgZm9yIGVhY2ggY29sdW1uLCBhZGRpbmcgb3IKICAgICAgICAjIHN1YnRyYWN0aW5nIGZyb20gdGhlIGxpa2VsaWhvb2Qgb2YgdGhlIGZpcnN0IHJvdyBiZWluZyBhIGhlYWRlci4KCiAgICAgICAgcmRyID0gcmVhZGVyKFN0cmluZ0lPKHNhbXBsZSksIHNlbGYuc25pZmYoc2FtcGxlKSkKCiAgICAgICAgaGVhZGVyID0gbmV4dChyZHIpICMgYXNzdW1lIGZpcnN0IHJvdyBpcyBoZWFkZXIKCiAgICAgICAgY29sdW1ucyA9IGxlbihoZWFkZXIpCiAgICAgICAgY29sdW1uVHlwZXMgPSB7fQogICAgICAgIGZvciBpIGluIHJhbmdlKGNvbHVtbnMpOiBjb2x1bW5UeXBlc1tpXSA9IE5vbmUKCiAgICAgICAgY2hlY2tlZCA9IDAKICAgICAgICBmb3Igcm93IGluIHJkcjoKICAgICAgICAgICAgIyBhcmJpdHJhcnkgbnVtYmVyIG9mIHJvd3MgdG8gY2hlY2ssIHRvIGtlZXAgaXQgc2FuZQogICAgICAgICAgICBpZiBjaGVja2VkID4gMjA6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBjaGVja2VkICs9IDEKCiAgICAgICAgICAgIGlmIGxlbihyb3cpICE9IGNvbHVtbnM6CiAgICAgICAgICAgICAgICBjb250aW51ZSAjIHNraXAgcm93cyB0aGF0IGhhdmUgaXJyZWd1bGFyIG51bWJlciBvZiBjb2x1bW5zCgogICAgICAgICAgICBmb3IgY29sIGluIGxpc3QoY29sdW1uVHlwZXMua2V5cygpKToKICAgICAgICAgICAgICAgIHRoaXNUeXBlID0gY29tcGxleAogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRoaXNUeXBlKHJvd1tjb2xdKQogICAgICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKToKICAgICAgICAgICAgICAgICAgICAjIGZhbGxiYWNrIHRvIGxlbmd0aCBvZiBzdHJpbmcKICAgICAgICAgICAgICAgICAgICB0aGlzVHlwZSA9IGxlbihyb3dbY29sXSkKCiAgICAgICAgICAgICAgICBpZiB0aGlzVHlwZSAhPSBjb2x1bW5UeXBlc1tjb2xdOgogICAgICAgICAgICAgICAgICAgIGlmIGNvbHVtblR5cGVzW2NvbF0gaXMgTm9uZTogIyBhZGQgbmV3IGNvbHVtbiB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblR5cGVzW2NvbF0gPSB0aGlzVHlwZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICMgdHlwZSBpcyBpbmNvbnNpc3RlbnQsIHJlbW92ZSBjb2x1bW4gZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnNpZGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGNvbHVtblR5cGVzW2NvbF0KCiAgICAgICAgIyBmaW5hbGx5LCBjb21wYXJlIHJlc3VsdHMgYWdhaW5zdCBmaXJzdCByb3cgYW5kICJ2b3RlIgogICAgICAgICMgb24gd2hldGhlciBpdCdzIGEgaGVhZGVyCiAgICAgICAgaGFzSGVhZGVyID0gMAogICAgICAgIGZvciBjb2wsIGNvbFR5cGUgaW4gY29sdW1uVHlwZXMuaXRlbXMoKToKICAgICAgICAgICAgaWYgdHlwZShjb2xUeXBlKSA9PSB0eXBlKDApOiAjIGl0J3MgYSBsZW5ndGgKICAgICAgICAgICAgICAgIGlmIGxlbihoZWFkZXJbY29sXSkgIT0gY29sVHlwZToKICAgICAgICAgICAgICAgICAgICBoYXNIZWFkZXIgKz0gMQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBoYXNIZWFkZXIgLT0gMQogICAgICAgICAgICBlbHNlOiAjIGF0dGVtcHQgdHlwZWNhc3QKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBjb2xUeXBlKGhlYWRlcltjb2xdKQogICAgICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgIGhhc0hlYWRlciArPSAxCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGhhc0hlYWRlciAtPSAxCgogICAgICAgIHJldHVybiBoYXNIZWFkZXIgPiAwClBLAwQUAAAAAAACIKNWatdi6fzhAAD84QAADgAAAGRhdGFjbGFzc2VzLnB5aW1wb3J0IHJlCmltcG9ydCBzeXMKaW1wb3J0IGNvcHkKaW1wb3J0IHR5cGVzCmltcG9ydCBpbnNwZWN0CmltcG9ydCBrZXl3b3JkCmltcG9ydCBidWlsdGlucwppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCBpdGVydG9vbHMKaW1wb3J0IGFiYwppbXBvcnQgX3RocmVhZApmcm9tIHR5cGVzIGltcG9ydCBGdW5jdGlvblR5cGUsIEdlbmVyaWNBbGlhcwoKCl9fYWxsX18gPSBbJ2RhdGFjbGFzcycsCiAgICAgICAgICAgJ2ZpZWxkJywKICAgICAgICAgICAnRmllbGQnLAogICAgICAgICAgICdGcm96ZW5JbnN0YW5jZUVycm9yJywKICAgICAgICAgICAnSW5pdFZhcicsCiAgICAgICAgICAgJ0tXX09OTFknLAogICAgICAgICAgICdNSVNTSU5HJywKCiAgICAgICAgICAgIyBIZWxwZXIgZnVuY3Rpb25zLgogICAgICAgICAgICdmaWVsZHMnLAogICAgICAgICAgICdhc2RpY3QnLAogICAgICAgICAgICdhc3R1cGxlJywKICAgICAgICAgICAnbWFrZV9kYXRhY2xhc3MnLAogICAgICAgICAgICdyZXBsYWNlJywKICAgICAgICAgICAnaXNfZGF0YWNsYXNzJywKICAgICAgICAgICBdCgojIENvbmRpdGlvbnMgZm9yIGFkZGluZyBtZXRob2RzLiAgVGhlIGJveGVzIGluZGljYXRlIHdoYXQgYWN0aW9uIHRoZQojIGRhdGFjbGFzcyBkZWNvcmF0b3IgdGFrZXMuICBGb3IgYWxsIG9mIHRoZXNlIHRhYmxlcywgd2hlbiBJIHRhbGsKIyBhYm91dCBpbml0PSwgcmVwcj0sIGVxPSwgb3JkZXI9LCB1bnNhZmVfaGFzaD0sIG9yIGZyb3plbj0sIEknbQojIHJlZmVycmluZyB0byB0aGUgYXJndW1lbnRzIHRvIHRoZSBAZGF0YWNsYXNzIGRlY29yYXRvci4gIFdoZW4KIyBjaGVja2luZyBpZiBhIGR1bmRlciBtZXRob2QgYWxyZWFkeSBleGlzdHMsIEkgbWVhbiBjaGVjayBmb3IgYW4KIyBlbnRyeSBpbiB0aGUgY2xhc3MncyBfX2RpY3RfXy4gIEkgbmV2ZXIgY2hlY2sgdG8gc2VlIGlmIGFuIGF0dHJpYnV0ZQojIGlzIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLgoKIyBLZXk6CiMgKz09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKIyArIFZhbHVlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICs9PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCiMgfCA8Ymxhbms+IHwgTm8gYWN0aW9uOiBubyBtZXRob2QgaXMgYWRkZWQuICAgICAgICAgIHwKIyArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwojIHwgYWRkICAgICB8IEdlbmVyYXRlZCBtZXRob2QgaXMgYWRkZWQuICAgICAgICAgICAgICB8CiMgKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIyB8IHJhaXNlICAgfCBUeXBlRXJyb3IgaXMgcmFpc2VkLiAgICAgICAgICAgICAgICAgICAgfAojICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiMgfCBOb25lICAgIHwgQXR0cmlidXRlIGlzIHNldCB0byBOb25lLiAgICAgICAgICAgICAgIHwKIyArPT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwoKIyBfX2luaXRfXwojCiMgICArLS0tIGluaXQ9IHBhcmFtZXRlcgojICAgfAojICAgdiAgICAgfCAgICAgICB8ICAgICAgIHwKIyAgICAgICAgIHwgIG5vICAgfCAgeWVzICB8ICA8LS0tIGNsYXNzIGhhcyBfX2luaXRfXyBpbiBfX2RpY3RfXz8KIyArPT09PT09PSs9PT09PT09Kz09PT09PT0rCiMgfCBGYWxzZSB8ICAgICAgIHwgICAgICAgfAojICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSsKIyB8IFRydWUgIHwgYWRkICAgfCAgICAgICB8ICA8LSB0aGUgZGVmYXVsdAojICs9PT09PT09Kz09PT09PT0rPT09PT09PSsKCiMgX19yZXByX18KIwojICAgICstLS0gcmVwcj0gcGFyYW1ldGVyCiMgICAgfAojICAgIHYgICAgfCAgICAgICB8ICAgICAgIHwKIyAgICAgICAgIHwgIG5vICAgfCAgeWVzICB8ICA8LS0tIGNsYXNzIGhhcyBfX3JlcHJfXyBpbiBfX2RpY3RfXz8KIyArPT09PT09PSs9PT09PT09Kz09PT09PT0rCiMgfCBGYWxzZSB8ICAgICAgIHwgICAgICAgfAojICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSsKIyB8IFRydWUgIHwgYWRkICAgfCAgICAgICB8ICA8LSB0aGUgZGVmYXVsdAojICs9PT09PT09Kz09PT09PT0rPT09PT09PSsKCgojIF9fc2V0YXR0cl9fCiMgX19kZWxhdHRyX18KIwojICAgICstLS0gZnJvemVuPSBwYXJhbWV0ZXIKIyAgICB8CiMgICAgdiAgICB8ICAgICAgIHwgICAgICAgfAojICAgICAgICAgfCAgbm8gICB8ICB5ZXMgIHwgIDwtLS0gY2xhc3MgaGFzIF9fc2V0YXR0cl9fIG9yIF9fZGVsYXR0cl9fIGluIF9fZGljdF9fPwojICs9PT09PT09Kz09PT09PT0rPT09PT09PSsKIyB8IEZhbHNlIHwgICAgICAgfCAgICAgICB8ICA8LSB0aGUgZGVmYXVsdAojICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSsKIyB8IFRydWUgIHwgYWRkICAgfCByYWlzZSB8CiMgKz09PT09PT0rPT09PT09PSs9PT09PT09KwojIFJhaXNlIGJlY2F1c2Ugbm90IGFkZGluZyB0aGVzZSBtZXRob2RzIHdvdWxkIGJyZWFrIHRoZSAiZnJvemVuLW5lc3MiCiMgb2YgdGhlIGNsYXNzLgoKIyBfX2VxX18KIwojICAgICstLS0gZXE9IHBhcmFtZXRlcgojICAgIHwKIyAgICB2ICAgIHwgICAgICAgfCAgICAgICB8CiMgICAgICAgICB8ICBubyAgIHwgIHllcyAgfCAgPC0tLSBjbGFzcyBoYXMgX19lcV9fIGluIF9fZGljdF9fPwojICs9PT09PT09Kz09PT09PT0rPT09PT09PSsKIyB8IEZhbHNlIHwgICAgICAgfCAgICAgICB8CiMgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKwojIHwgVHJ1ZSAgfCBhZGQgICB8ICAgICAgIHwgIDwtIHRoZSBkZWZhdWx0CiMgKz09PT09PT0rPT09PT09PSs9PT09PT09KwoKIyBfX2x0X18KIyBfX2xlX18KIyBfX2d0X18KIyBfX2dlX18KIwojICAgICstLS0gb3JkZXI9IHBhcmFtZXRlcgojICAgIHwKIyAgICB2ICAgIHwgICAgICAgfCAgICAgICB8CiMgICAgICAgICB8ICBubyAgIHwgIHllcyAgfCAgPC0tLSBjbGFzcyBoYXMgYW55IGNvbXBhcmlzb24gbWV0aG9kIGluIF9fZGljdF9fPwojICs9PT09PT09Kz09PT09PT0rPT09PT09PSsKIyB8IEZhbHNlIHwgICAgICAgfCAgICAgICB8ICA8LSB0aGUgZGVmYXVsdAojICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSsKIyB8IFRydWUgIHwgYWRkICAgfCByYWlzZSB8CiMgKz09PT09PT0rPT09PT09PSs9PT09PT09KwojIFJhaXNlIGJlY2F1c2UgdG8gYWxsb3cgdGhpcyBjYXNlIHdvdWxkIGludGVyZmVyZSB3aXRoIHVzaW5nCiMgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nLgoKIyBfX2hhc2hfXwoKIyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSB1bnNhZmVfaGFzaD0gcGFyYW1ldGVyCiMgICAgfCAgICAgICArLS0tLS0tLS0tLS0gZXE9IHBhcmFtZXRlcgojICAgIHwgICAgICAgfCAgICAgICArLS0tIGZyb3plbj0gcGFyYW1ldGVyCiMgICAgfCAgICAgICB8ICAgICAgIHwKIyAgICB2ICAgICAgIHYgICAgICAgdiAgICB8ICAgICAgICB8ICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIG5vICAgfCAgeWVzICAgfCAgPC0tLSBjbGFzcyBoYXMgZXhwbGljaXRseSBkZWZpbmVkIF9faGFzaF9fCiMgKz09PT09PT0rPT09PT09PSs9PT09PT09Kz09PT09PT09Kz09PT09PT09KwojIHwgRmFsc2UgfCBGYWxzZSB8IEZhbHNlIHwgICAgICAgIHwgICAgICAgIHwgTm8gX19lcV9fLCB1c2UgdGhlIGJhc2UgY2xhc3MgX19oYXNoX18KIyArLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCiMgfCBGYWxzZSB8IEZhbHNlIHwgVHJ1ZSAgfCAgICAgICAgfCAgICAgICAgfCBObyBfX2VxX18sIHVzZSB0aGUgYmFzZSBjbGFzcyBfX2hhc2hfXwojICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsKIyB8IEZhbHNlIHwgVHJ1ZSAgfCBGYWxzZSB8IE5vbmUgICB8ICAgICAgICB8IDwtLSB0aGUgZGVmYXVsdCwgbm90IGhhc2hhYmxlCiMgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKwojIHwgRmFsc2UgfCBUcnVlICB8IFRydWUgIHwgYWRkICAgIHwgICAgICAgIHwgRnJvemVuLCBzbyBoYXNoYWJsZSwgYWxsb3dzIG92ZXJyaWRlCiMgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKwojIHwgVHJ1ZSAgfCBGYWxzZSB8IEZhbHNlIHwgYWRkICAgIHwgcmFpc2UgIHwgSGFzIG5vIF9fZXFfXywgYnV0IGhhc2hhYmxlCiMgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKwojIHwgVHJ1ZSAgfCBGYWxzZSB8IFRydWUgIHwgYWRkICAgIHwgcmFpc2UgIHwgSGFzIG5vIF9fZXFfXywgYnV0IGhhc2hhYmxlCiMgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKwojIHwgVHJ1ZSAgfCBUcnVlICB8IEZhbHNlIHwgYWRkICAgIHwgcmFpc2UgIHwgTm90IGZyb3plbiwgYnV0IGhhc2hhYmxlCiMgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKwojIHwgVHJ1ZSAgfCBUcnVlICB8IFRydWUgIHwgYWRkICAgIHwgcmFpc2UgIHwgRnJvemVuLCBzbyBoYXNoYWJsZQojICs9PT09PT09Kz09PT09PT0rPT09PT09PSs9PT09PT09PSs9PT09PT09PSsKIyBGb3IgYm94ZXMgdGhhdCBhcmUgYmxhbmssIF9faGFzaF9fIGlzIHVudG91Y2hlZCBhbmQgdGhlcmVmb3JlCiMgaW5oZXJpdGVkIGZyb20gdGhlIGJhc2UgY2xhc3MuICBJZiB0aGUgYmFzZSBpcyBvYmplY3QsIHRoZW4KIyBpZC1iYXNlZCBoYXNoaW5nIGlzIHVzZWQuCiMKIyBOb3RlIHRoYXQgYSBjbGFzcyBtYXkgYWxyZWFkeSBoYXZlIF9faGFzaF9fPU5vbmUgaWYgaXQgc3BlY2lmaWVkIGFuCiMgX19lcV9fIG1ldGhvZCBpbiB0aGUgY2xhc3MgYm9keSAobm90IG9uZSB0aGF0IHdhcyBjcmVhdGVkIGJ5CiMgQGRhdGFjbGFzcykuCiMKIyBTZWUgX2hhc2hfYWN0aW9uIChiZWxvdykgZm9yIGEgY29kZWQgdmVyc2lvbiBvZiB0aGlzIHRhYmxlLgoKIyBfX21hdGNoX2FyZ3NfXwojCiMgICAgKy0tLSBtYXRjaF9hcmdzPSBwYXJhbWV0ZXIKIyAgICB8CiMgICAgdiAgICB8ICAgICAgIHwgICAgICAgfAojICAgICAgICAgfCAgbm8gICB8ICB5ZXMgIHwgIDwtLS0gY2xhc3MgaGFzIF9fbWF0Y2hfYXJnc19fIGluIF9fZGljdF9fPwojICs9PT09PT09Kz09PT09PT0rPT09PT09PSsKIyB8IEZhbHNlIHwgICAgICAgfCAgICAgICB8CiMgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKwojIHwgVHJ1ZSAgfCBhZGQgICB8ICAgICAgIHwgIDwtIHRoZSBkZWZhdWx0CiMgKz09PT09PT0rPT09PT09PSs9PT09PT09KwojIF9fbWF0Y2hfYXJnc19fIGlzIGFsd2F5cyBhZGRlZCB1bmxlc3MgdGhlIGNsYXNzIGFscmVhZHkgZGVmaW5lcyBpdC4gSXQgaXMgYQojIHR1cGxlIG9mIF9faW5pdF9fIHBhcmFtZXRlciBuYW1lczsgbm9uLWluaXQgZmllbGRzIG11c3QgYmUgbWF0Y2hlZCBieSBrZXl3b3JkLgoKCiMgUmFpc2VkIHdoZW4gYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSBhIGZyb3plbiBjbGFzcy4KY2xhc3MgRnJvemVuSW5zdGFuY2VFcnJvcihBdHRyaWJ1dGVFcnJvcik6IHBhc3MKCiMgQSBzZW50aW5lbCBvYmplY3QgZm9yIGRlZmF1bHQgdmFsdWVzIHRvIHNpZ25hbCB0aGF0IGEgZGVmYXVsdAojIGZhY3Rvcnkgd2lsbCBiZSB1c2VkLiAgVGhpcyBpcyBnaXZlbiBhIG5pY2UgcmVwcigpIHdoaWNoIHdpbGwgYXBwZWFyCiMgaW4gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBkYXRhY2xhc3NlcycgY29uc3RydWN0b3JzLgpjbGFzcyBfSEFTX0RFRkFVTFRfRkFDVE9SWV9DTEFTUzoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzxmYWN0b3J5PicKX0hBU19ERUZBVUxUX0ZBQ1RPUlkgPSBfSEFTX0RFRkFVTFRfRkFDVE9SWV9DTEFTUygpCgojIEEgc2VudGluZWwgb2JqZWN0IHRvIGRldGVjdCBpZiBhIHBhcmFtZXRlciBpcyBzdXBwbGllZCBvciBub3QuICBVc2UKIyBhIGNsYXNzIHRvIGdpdmUgaXQgYSBiZXR0ZXIgcmVwci4KY2xhc3MgX01JU1NJTkdfVFlQRToKICAgIHBhc3MKTUlTU0lORyA9IF9NSVNTSU5HX1RZUEUoKQoKIyBBIHNlbnRpbmVsIG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGZvbGxvd2luZyBmaWVsZHMgYXJlIGtleXdvcmQtb25seSBieQojIGRlZmF1bHQuICBVc2UgYSBjbGFzcyB0byBnaXZlIGl0IGEgYmV0dGVyIHJlcHIuCmNsYXNzIF9LV19PTkxZX1RZUEU6CiAgICBwYXNzCktXX09OTFkgPSBfS1dfT05MWV9UWVBFKCkKCiMgU2luY2UgbW9zdCBwZXItZmllbGQgbWV0YWRhdGEgd2lsbCBiZSB1bnVzZWQsIGNyZWF0ZSBhbiBlbXB0eQojIHJlYWQtb25seSBwcm94eSB0aGF0IGNhbiBiZSBzaGFyZWQgYW1vbmcgYWxsIGZpZWxkcy4KX0VNUFRZX01FVEFEQVRBID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZSh7fSkKCiMgTWFya2VycyBmb3IgdGhlIHZhcmlvdXMga2luZHMgb2YgZmllbGRzIGFuZCBwc2V1ZG8tZmllbGRzLgpjbGFzcyBfRklFTERfQkFTRToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubmFtZQpfRklFTEQgPSBfRklFTERfQkFTRSgnX0ZJRUxEJykKX0ZJRUxEX0NMQVNTVkFSID0gX0ZJRUxEX0JBU0UoJ19GSUVMRF9DTEFTU1ZBUicpCl9GSUVMRF9JTklUVkFSID0gX0ZJRUxEX0JBU0UoJ19GSUVMRF9JTklUVkFSJykKCiMgVGhlIG5hbWUgb2YgYW4gYXR0cmlidXRlIG9uIHRoZSBjbGFzcyB3aGVyZSB3ZSBzdG9yZSB0aGUgRmllbGQKIyBvYmplY3RzLiAgQWxzbyB1c2VkIHRvIGNoZWNrIGlmIGEgY2xhc3MgaXMgYSBEYXRhIENsYXNzLgpfRklFTERTID0gJ19fZGF0YWNsYXNzX2ZpZWxkc19fJwoKIyBUaGUgbmFtZSBvZiBhbiBhdHRyaWJ1dGUgb24gdGhlIGNsYXNzIHRoYXQgc3RvcmVzIHRoZSBwYXJhbWV0ZXJzIHRvCiMgQGRhdGFjbGFzcy4KX1BBUkFNUyA9ICdfX2RhdGFjbGFzc19wYXJhbXNfXycKCiMgVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLCB0aGF0IGlmIGl0IGV4aXN0cywgaXMgY2FsbGVkIGF0IHRoZSBlbmQgb2YKIyBfX2luaXRfXy4KX1BPU1RfSU5JVF9OQU1FID0gJ19fcG9zdF9pbml0X18nCgojIFN0cmluZyByZWdleCB0aGF0IHN0cmluZyBhbm5vdGF0aW9ucyBmb3IgQ2xhc3NWYXIgb3IgSW5pdFZhciBtdXN0IG1hdGNoLgojIEFsbG93cyAiaWRlbnRpZmllci5pZGVudGlmaWVyWyIgb3IgImlkZW50aWZpZXJbIi4KIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMzNDUzIGZvciBkZXRhaWxzLgpfTU9EVUxFX0lERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHInXig/OlxzKihcdyspXHMqXC4pP1xzKihcdyspJykKCiMgVGhpcyBmdW5jdGlvbidzIGxvZ2ljIGlzIGNvcGllZCBmcm9tICJyZWN1cnNpdmVfcmVwciIgZnVuY3Rpb24gaW4KIyByZXBybGliIG1vZHVsZSB0byBhdm9pZCBkZXBlbmRlbmN5LgpkZWYgX3JlY3Vyc2l2ZV9yZXByKHVzZXJfZnVuY3Rpb24pOgogICAgIyBEZWNvcmF0b3IgdG8gbWFrZSBhIHJlcHIgZnVuY3Rpb24gcmV0dXJuICIuLi4iIGZvciBhIHJlY3Vyc2l2ZQogICAgIyBjYWxsLgogICAgcmVwcl9ydW5uaW5nID0gc2V0KCkKCiAgICBAZnVuY3Rvb2xzLndyYXBzKHVzZXJfZnVuY3Rpb24pCiAgICBkZWYgd3JhcHBlcihzZWxmKToKICAgICAgICBrZXkgPSBpZChzZWxmKSwgX3RocmVhZC5nZXRfaWRlbnQoKQogICAgICAgIGlmIGtleSBpbiByZXByX3J1bm5pbmc6CiAgICAgICAgICAgIHJldHVybiAnLi4uJwogICAgICAgIHJlcHJfcnVubmluZy5hZGQoa2V5KQogICAgICAgIHRyeToKICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbihzZWxmKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHJlcHJfcnVubmluZy5kaXNjYXJkKGtleSkKICAgICAgICByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gd3JhcHBlcgoKY2xhc3MgSW5pdFZhcjoKICAgIF9fc2xvdHNfXyA9ICgndHlwZScsICkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZSk6CiAgICAgICAgc2VsZi50eXBlID0gdHlwZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYudHlwZSwgdHlwZSk6CiAgICAgICAgICAgIHR5cGVfbmFtZSA9IHNlbGYudHlwZS5fX25hbWVfXwogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgdHlwaW5nIG9iamVjdHMsIGUuZy4gTGlzdFtpbnRdCiAgICAgICAgICAgIHR5cGVfbmFtZSA9IHJlcHIoc2VsZi50eXBlKQogICAgICAgIHJldHVybiBmJ2RhdGFjbGFzc2VzLkluaXRWYXJbe3R5cGVfbmFtZX1dJwoKICAgIGRlZiBfX2NsYXNzX2dldGl0ZW1fXyhjbHMsIHR5cGUpOgogICAgICAgIHJldHVybiBJbml0VmFyKHR5cGUpCgojIEluc3RhbmNlcyBvZiBGaWVsZCBhcmUgb25seSBldmVyIGNyZWF0ZWQgZnJvbSB3aXRoaW4gdGhpcyBtb2R1bGUsCiMgYW5kIG9ubHkgZnJvbSB0aGUgZmllbGQoKSBmdW5jdGlvbiwgYWx0aG91Z2ggRmllbGQgaW5zdGFuY2VzIGFyZQojIGV4cG9zZWQgZXh0ZXJuYWxseSBhcyAoY29uY2VwdHVhbGx5KSByZWFkLW9ubHkgb2JqZWN0cy4KIwojIG5hbWUgYW5kIHR5cGUgYXJlIGZpbGxlZCBpbiBhZnRlciB0aGUgZmFjdCwgbm90IGluIF9faW5pdF9fLgojIFRoZXkncmUgbm90IGtub3duIGF0IHRoZSB0aW1lIHRoaXMgY2xhc3MgaXMgaW5zdGFudGlhdGVkLCBidXQgaXQncwojIGNvbnZlbmllbnQgaWYgdGhleSdyZSBhdmFpbGFibGUgbGF0ZXIuCiMKIyBXaGVuIGNscy5fRklFTERTIGlzIGZpbGxlZCBpbiB3aXRoIGEgbGlzdCBvZiBGaWVsZCBvYmplY3RzLCB0aGUgbmFtZQojIGFuZCB0eXBlIGZpZWxkcyB3aWxsIGhhdmUgYmVlbiBwb3B1bGF0ZWQuCmNsYXNzIEZpZWxkOgogICAgX19zbG90c19fID0gKCduYW1lJywKICAgICAgICAgICAgICAgICAndHlwZScsCiAgICAgICAgICAgICAgICAgJ2RlZmF1bHQnLAogICAgICAgICAgICAgICAgICdkZWZhdWx0X2ZhY3RvcnknLAogICAgICAgICAgICAgICAgICdyZXByJywKICAgICAgICAgICAgICAgICAnaGFzaCcsCiAgICAgICAgICAgICAgICAgJ2luaXQnLAogICAgICAgICAgICAgICAgICdjb21wYXJlJywKICAgICAgICAgICAgICAgICAnbWV0YWRhdGEnLAogICAgICAgICAgICAgICAgICdrd19vbmx5JywKICAgICAgICAgICAgICAgICAnX2ZpZWxkX3R5cGUnLCAgIyBQcml2YXRlOiBub3QgdG8gYmUgdXNlZCBieSB1c2VyIGNvZGUuCiAgICAgICAgICAgICAgICAgKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZhdWx0LCBkZWZhdWx0X2ZhY3RvcnksIGluaXQsIHJlcHIsIGhhc2gsIGNvbXBhcmUsCiAgICAgICAgICAgICAgICAgbWV0YWRhdGEsIGt3X29ubHkpOgogICAgICAgIHNlbGYubmFtZSA9IE5vbmUKICAgICAgICBzZWxmLnR5cGUgPSBOb25lCiAgICAgICAgc2VsZi5kZWZhdWx0ID0gZGVmYXVsdAogICAgICAgIHNlbGYuZGVmYXVsdF9mYWN0b3J5ID0gZGVmYXVsdF9mYWN0b3J5CiAgICAgICAgc2VsZi5pbml0ID0gaW5pdAogICAgICAgIHNlbGYucmVwciA9IHJlcHIKICAgICAgICBzZWxmLmhhc2ggPSBoYXNoCiAgICAgICAgc2VsZi5jb21wYXJlID0gY29tcGFyZQogICAgICAgIHNlbGYubWV0YWRhdGEgPSAoX0VNUFRZX01FVEFEQVRBCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtZXRhZGF0YSBpcyBOb25lIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLk1hcHBpbmdQcm94eVR5cGUobWV0YWRhdGEpKQogICAgICAgIHNlbGYua3dfb25seSA9IGt3X29ubHkKICAgICAgICBzZWxmLl9maWVsZF90eXBlID0gTm9uZQoKICAgIEBfcmVjdXJzaXZlX3JlcHIKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gKCdGaWVsZCgnCiAgICAgICAgICAgICAgICBmJ25hbWU9e3NlbGYubmFtZSFyfSwnCiAgICAgICAgICAgICAgICBmJ3R5cGU9e3NlbGYudHlwZSFyfSwnCiAgICAgICAgICAgICAgICBmJ2RlZmF1bHQ9e3NlbGYuZGVmYXVsdCFyfSwnCiAgICAgICAgICAgICAgICBmJ2RlZmF1bHRfZmFjdG9yeT17c2VsZi5kZWZhdWx0X2ZhY3Rvcnkhcn0sJwogICAgICAgICAgICAgICAgZidpbml0PXtzZWxmLmluaXQhcn0sJwogICAgICAgICAgICAgICAgZidyZXByPXtzZWxmLnJlcHIhcn0sJwogICAgICAgICAgICAgICAgZidoYXNoPXtzZWxmLmhhc2ghcn0sJwogICAgICAgICAgICAgICAgZidjb21wYXJlPXtzZWxmLmNvbXBhcmUhcn0sJwogICAgICAgICAgICAgICAgZidtZXRhZGF0YT17c2VsZi5tZXRhZGF0YSFyfSwnCiAgICAgICAgICAgICAgICBmJ2t3X29ubHk9e3NlbGYua3dfb25seSFyfSwnCiAgICAgICAgICAgICAgICBmJ19maWVsZF90eXBlPXtzZWxmLl9maWVsZF90eXBlfScKICAgICAgICAgICAgICAgICcpJykKCiAgICAjIFRoaXMgaXMgdXNlZCB0byBzdXBwb3J0IHRoZSBQRVAgNDg3IF9fc2V0X25hbWVfXyBwcm90b2NvbCBpbiB0aGUKICAgICMgY2FzZSB3aGVyZSB3ZSdyZSB1c2luZyBhIGZpZWxkIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdG9yIGFzIGEKICAgICMgZGVmYXVsdCB2YWx1ZS4gIEZvciBkZXRhaWxzIG9uIF9fc2V0X25hbWVfXywgc2VlCiAgICAjIGh0dHBzOi8vcGVwcy5weXRob24ub3JnL3BlcC0wNDg3LyNpbXBsZW1lbnRhdGlvbi1kZXRhaWxzLgogICAgIwogICAgIyBOb3RlIHRoYXQgaW4gX3Byb2Nlc3NfY2xhc3MsIHRoaXMgRmllbGQgb2JqZWN0IGlzIG92ZXJ3cml0dGVuCiAgICAjIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUsIHNvIHRoZSBlbmQgcmVzdWx0IGlzIGEgZGVzY3JpcHRvciB0aGF0CiAgICAjIGhhZCBfX3NldF9uYW1lX18gY2FsbGVkIG9uIGl0IGF0IHRoZSByaWdodCB0aW1lLgogICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CiAgICAgICAgZnVuYyA9IGdldGF0dHIodHlwZShzZWxmLmRlZmF1bHQpLCAnX19zZXRfbmFtZV9fJywgTm9uZSkKICAgICAgICBpZiBmdW5jOgogICAgICAgICAgICAjIFRoZXJlIGlzIGEgX19zZXRfbmFtZV9fIG1ldGhvZCBvbiB0aGUgZGVzY3JpcHRvciwgY2FsbAogICAgICAgICAgICAjIGl0LgogICAgICAgICAgICBmdW5jKHNlbGYuZGVmYXVsdCwgb3duZXIsIG5hbWUpCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZChHZW5lcmljQWxpYXMpCgoKY2xhc3MgX0RhdGFjbGFzc1BhcmFtczoKICAgIF9fc2xvdHNfXyA9ICgnaW5pdCcsCiAgICAgICAgICAgICAgICAgJ3JlcHInLAogICAgICAgICAgICAgICAgICdlcScsCiAgICAgICAgICAgICAgICAgJ29yZGVyJywKICAgICAgICAgICAgICAgICAndW5zYWZlX2hhc2gnLAogICAgICAgICAgICAgICAgICdmcm96ZW4nLAogICAgICAgICAgICAgICAgICkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgaW5pdCwgcmVwciwgZXEsIG9yZGVyLCB1bnNhZmVfaGFzaCwgZnJvemVuKToKICAgICAgICBzZWxmLmluaXQgPSBpbml0CiAgICAgICAgc2VsZi5yZXByID0gcmVwcgogICAgICAgIHNlbGYuZXEgPSBlcQogICAgICAgIHNlbGYub3JkZXIgPSBvcmRlcgogICAgICAgIHNlbGYudW5zYWZlX2hhc2ggPSB1bnNhZmVfaGFzaAogICAgICAgIHNlbGYuZnJvemVuID0gZnJvemVuCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAoJ19EYXRhY2xhc3NQYXJhbXMoJwogICAgICAgICAgICAgICAgZidpbml0PXtzZWxmLmluaXQhcn0sJwogICAgICAgICAgICAgICAgZidyZXByPXtzZWxmLnJlcHIhcn0sJwogICAgICAgICAgICAgICAgZidlcT17c2VsZi5lcSFyfSwnCiAgICAgICAgICAgICAgICBmJ29yZGVyPXtzZWxmLm9yZGVyIXJ9LCcKICAgICAgICAgICAgICAgIGYndW5zYWZlX2hhc2g9e3NlbGYudW5zYWZlX2hhc2ghcn0sJwogICAgICAgICAgICAgICAgZidmcm96ZW49e3NlbGYuZnJvemVuIXJ9JwogICAgICAgICAgICAgICAgJyknKQoKCiMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluc3RlYWQgb2YgZXhwb3NpbmcgRmllbGQgY3JlYXRpb24gZGlyZWN0bHksCiMgc28gdGhhdCBhIHR5cGUgY2hlY2tlciBjYW4gYmUgdG9sZCAodmlhIG92ZXJsb2FkcykgdGhhdCB0aGlzIGlzIGEKIyBmdW5jdGlvbiB3aG9zZSB0eXBlIGRlcGVuZHMgb24gaXRzIHBhcmFtZXRlcnMuCmRlZiBmaWVsZCgqLCBkZWZhdWx0PU1JU1NJTkcsIGRlZmF1bHRfZmFjdG9yeT1NSVNTSU5HLCBpbml0PVRydWUsIHJlcHI9VHJ1ZSwKICAgICAgICAgIGhhc2g9Tm9uZSwgY29tcGFyZT1UcnVlLCBtZXRhZGF0YT1Ob25lLCBrd19vbmx5PU1JU1NJTkcpOgogICAgIiIiUmV0dXJuIGFuIG9iamVjdCB0byBpZGVudGlmeSBkYXRhY2xhc3MgZmllbGRzLgoKICAgIGRlZmF1bHQgaXMgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZpZWxkLiAgZGVmYXVsdF9mYWN0b3J5IGlzIGEKICAgIDAtYXJndW1lbnQgZnVuY3Rpb24gY2FsbGVkIHRvIGluaXRpYWxpemUgYSBmaWVsZCdzIHZhbHVlLiAgSWYgaW5pdAogICAgaXMgdHJ1ZSwgdGhlIGZpZWxkIHdpbGwgYmUgYSBwYXJhbWV0ZXIgdG8gdGhlIGNsYXNzJ3MgX19pbml0X18oKQogICAgZnVuY3Rpb24uICBJZiByZXByIGlzIHRydWUsIHRoZSBmaWVsZCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQogICAgb2JqZWN0J3MgcmVwcigpLiAgSWYgaGFzaCBpcyB0cnVlLCB0aGUgZmllbGQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKICAgIG9iamVjdCdzIGhhc2goKS4gIElmIGNvbXBhcmUgaXMgdHJ1ZSwgdGhlIGZpZWxkIHdpbGwgYmUgdXNlZCBpbgogICAgY29tcGFyaXNvbiBmdW5jdGlvbnMuICBtZXRhZGF0YSwgaWYgc3BlY2lmaWVkLCBtdXN0IGJlIGEgbWFwcGluZwogICAgd2hpY2ggaXMgc3RvcmVkIGJ1dCBub3Qgb3RoZXJ3aXNlIGV4YW1pbmVkIGJ5IGRhdGFjbGFzcy4gIElmIGt3X29ubHkKICAgIGlzIHRydWUsIHRoZSBmaWVsZCB3aWxsIGJlY29tZSBhIGtleXdvcmQtb25seSBwYXJhbWV0ZXIgdG8KICAgIF9faW5pdF9fKCkuCgogICAgSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeSBib3RoIGRlZmF1bHQgYW5kIGRlZmF1bHRfZmFjdG9yeS4KICAgICIiIgoKICAgIGlmIGRlZmF1bHQgaXMgbm90IE1JU1NJTkcgYW5kIGRlZmF1bHRfZmFjdG9yeSBpcyBub3QgTUlTU0lORzoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYW5ub3Qgc3BlY2lmeSBib3RoIGRlZmF1bHQgYW5kIGRlZmF1bHRfZmFjdG9yeScpCiAgICByZXR1cm4gRmllbGQoZGVmYXVsdCwgZGVmYXVsdF9mYWN0b3J5LCBpbml0LCByZXByLCBoYXNoLCBjb21wYXJlLAogICAgICAgICAgICAgICAgIG1ldGFkYXRhLCBrd19vbmx5KQoKCmRlZiBfZmllbGRzX2luX2luaXRfb3JkZXIoZmllbGRzKToKICAgICMgUmV0dXJucyB0aGUgZmllbGRzIGFzIF9faW5pdF9fIHdpbGwgb3V0cHV0IHRoZW0uICBJdCByZXR1cm5zIDIgdHVwbGVzOgogICAgIyB0aGUgZmlyc3QgZm9yIG5vcm1hbCBhcmdzLCBhbmQgdGhlIHNlY29uZCBmb3Iga2V5d29yZCBhcmdzLgoKICAgIHJldHVybiAodHVwbGUoZiBmb3IgZiBpbiBmaWVsZHMgaWYgZi5pbml0IGFuZCBub3QgZi5rd19vbmx5KSwKICAgICAgICAgICAgdHVwbGUoZiBmb3IgZiBpbiBmaWVsZHMgaWYgZi5pbml0IGFuZCBmLmt3X29ubHkpCiAgICAgICAgICAgICkKCgpkZWYgX3R1cGxlX3N0cihvYmpfbmFtZSwgZmllbGRzKToKICAgICMgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyBlYWNoIGZpZWxkIG9mIG9ial9uYW1lIGFzIGEgdHVwbGUKICAgICMgbWVtYmVyLiAgU28sIGlmIGZpZWxkcyBpcyBbJ3gnLCAneSddIGFuZCBvYmpfbmFtZSBpcyAic2VsZiIsCiAgICAjIHJldHVybiAiKHNlbGYueCxzZWxmLnkpIi4KCiAgICAjIFNwZWNpYWwgY2FzZSBmb3IgdGhlIDAtdHVwbGUuCiAgICBpZiBub3QgZmllbGRzOgogICAgICAgIHJldHVybiAnKCknCiAgICAjIE5vdGUgdGhlIHRyYWlsaW5nIGNvbW1hLCBuZWVkZWQgaWYgdGhpcyB0dXJucyBvdXQgdG8gYmUgYSAxLXR1cGxlLgogICAgcmV0dXJuIGYnKHsiLCIuam9pbihbZiJ7b2JqX25hbWV9LntmLm5hbWV9IiBmb3IgZiBpbiBmaWVsZHNdKX0sKScKCgpkZWYgX2NyZWF0ZV9mbihuYW1lLCBhcmdzLCBib2R5LCAqLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLAogICAgICAgICAgICAgICByZXR1cm5fdHlwZT1NSVNTSU5HKToKICAgICMgTm90ZSB0aGF0IHdlIG1heSBtdXRhdGUgbG9jYWxzLiBDYWxsZXJzIGJld2FyZSEKICAgICMgVGhlIG9ubHkgY2FsbGVycyBhcmUgaW50ZXJuYWwgdG8gdGhpcyBtb2R1bGUsIHNvIG5vCiAgICAjIHdvcnJpZXMgYWJvdXQgZXh0ZXJuYWwgY2FsbGVycy4KICAgIGlmIGxvY2FscyBpcyBOb25lOgogICAgICAgIGxvY2FscyA9IHt9CiAgICByZXR1cm5fYW5ub3RhdGlvbiA9ICcnCiAgICBpZiByZXR1cm5fdHlwZSBpcyBub3QgTUlTU0lORzoKICAgICAgICBsb2NhbHNbJ19yZXR1cm5fdHlwZSddID0gcmV0dXJuX3R5cGUKICAgICAgICByZXR1cm5fYW5ub3RhdGlvbiA9ICctPl9yZXR1cm5fdHlwZScKICAgIGFyZ3MgPSAnLCcuam9pbihhcmdzKQogICAgYm9keSA9ICdcbicuam9pbihmJyAge2J9JyBmb3IgYiBpbiBib2R5KQoKICAgICMgQ29tcHV0ZSB0aGUgdGV4dCBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uLgogICAgdHh0ID0gZicgZGVmIHtuYW1lfSh7YXJnc30pe3JldHVybl9hbm5vdGF0aW9ufTpcbntib2R5fScKCiAgICBsb2NhbF92YXJzID0gJywgJy5qb2luKGxvY2Fscy5rZXlzKCkpCiAgICB0eHQgPSBmImRlZiBfX2NyZWF0ZV9mbl9fKHtsb2NhbF92YXJzfSk6XG57dHh0fVxuIHJldHVybiB7bmFtZX0iCiAgICBucyA9IHt9CiAgICBleGVjKHR4dCwgZ2xvYmFscywgbnMpCiAgICByZXR1cm4gbnNbJ19fY3JlYXRlX2ZuX18nXSgqKmxvY2FscykKCgpkZWYgX2ZpZWxkX2Fzc2lnbihmcm96ZW4sIG5hbWUsIHZhbHVlLCBzZWxmX25hbWUpOgogICAgIyBJZiB3ZSdyZSBhIGZyb3plbiBjbGFzcywgdGhlbiBhc3NpZ24gdG8gb3VyIGZpZWxkcyBpbiBfX2luaXRfXwogICAgIyB2aWEgb2JqZWN0Ll9fc2V0YXR0cl9fLiAgT3RoZXJ3aXNlLCBqdXN0IHVzZSBhIHNpbXBsZQogICAgIyBhc3NpZ25tZW50LgogICAgIwogICAgIyBzZWxmX25hbWUgaXMgd2hhdCAic2VsZiIgaXMgY2FsbGVkIGluIHRoaXMgZnVuY3Rpb246IGRvbid0CiAgICAjIGhhcmQtY29kZSAic2VsZiIsIHNpbmNlIHRoYXQgbWlnaHQgYmUgYSBmaWVsZCBuYW1lLgogICAgaWYgZnJvemVuOgogICAgICAgIHJldHVybiBmJ19fZGF0YWNsYXNzX2J1aWx0aW5zX29iamVjdF9fLl9fc2V0YXR0cl9fKHtzZWxmX25hbWV9LHtuYW1lIXJ9LHt2YWx1ZX0pJwogICAgcmV0dXJuIGYne3NlbGZfbmFtZX0ue25hbWV9PXt2YWx1ZX0nCgoKZGVmIF9maWVsZF9pbml0KGYsIGZyb3plbiwgZ2xvYmFscywgc2VsZl9uYW1lLCBzbG90cyk6CiAgICAjIFJldHVybiB0aGUgdGV4dCBvZiB0aGUgbGluZSBpbiB0aGUgYm9keSBvZiBfX2luaXRfXyB0aGF0IHdpbGwKICAgICMgaW5pdGlhbGl6ZSB0aGlzIGZpZWxkLgoKICAgIGRlZmF1bHRfbmFtZSA9IGYnX2RmbHRfe2YubmFtZX0nCiAgICBpZiBmLmRlZmF1bHRfZmFjdG9yeSBpcyBub3QgTUlTU0lORzoKICAgICAgICBpZiBmLmluaXQ6CiAgICAgICAgICAgICMgVGhpcyBmaWVsZCBoYXMgYSBkZWZhdWx0IGZhY3RvcnkuICBJZiBhIHBhcmFtZXRlciBpcwogICAgICAgICAgICAjIGdpdmVuLCB1c2UgaXQuICBJZiBub3QsIGNhbGwgdGhlIGZhY3RvcnkuCiAgICAgICAgICAgIGdsb2JhbHNbZGVmYXVsdF9uYW1lXSA9IGYuZGVmYXVsdF9mYWN0b3J5CiAgICAgICAgICAgIHZhbHVlID0gKGYne2RlZmF1bHRfbmFtZX0oKSAnCiAgICAgICAgICAgICAgICAgICAgIGYnaWYge2YubmFtZX0gaXMgX0hBU19ERUZBVUxUX0ZBQ1RPUlkgJwogICAgICAgICAgICAgICAgICAgICBmJ2Vsc2Uge2YubmFtZX0nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgVGhpcyBpcyBhIGZpZWxkIHRoYXQncyBub3QgaW4gdGhlIF9faW5pdF9fIHBhcmFtcywgYnV0CiAgICAgICAgICAgICMgaGFzIGEgZGVmYXVsdCBmYWN0b3J5IGZ1bmN0aW9uLiAgSXQgbmVlZHMgdG8gYmUKICAgICAgICAgICAgIyBpbml0aWFsaXplZCBoZXJlIGJ5IGNhbGxpbmcgdGhlIGZhY3RvcnkgZnVuY3Rpb24sCiAgICAgICAgICAgICMgYmVjYXVzZSB0aGVyZSdzIG5vIG90aGVyIHdheSB0byBpbml0aWFsaXplIGl0LgoKICAgICAgICAgICAgIyBGb3IgYSBmaWVsZCBpbml0aWFsaXplZCB3aXRoIGEgZGVmYXVsdD1kZWZhdWx0dmFsdWUsIHRoZQogICAgICAgICAgICAjIGNsYXNzIGRpY3QganVzdCBoYXMgdGhlIGRlZmF1bHQgdmFsdWUKICAgICAgICAgICAgIyAoY2xzLmZpZWxkbmFtZT1kZWZhdWx0dmFsdWUpLiAgQnV0IHRoYXQgd29uJ3Qgd29yayBmb3IgYQogICAgICAgICAgICAjIGRlZmF1bHQgZmFjdG9yeSwgdGhlIGZhY3RvcnkgbXVzdCBiZSBjYWxsZWQgaW4gX19pbml0X18KICAgICAgICAgICAgIyBhbmQgd2UgbXVzdCBhc3NpZ24gdGhhdCB0byBzZWxmLmZpZWxkbmFtZS4gIFdlIGNhbid0CiAgICAgICAgICAgICMgZmFsbCBiYWNrIHRvIHRoZSBjbGFzcyBkaWN0J3MgdmFsdWUsIGJvdGggYmVjYXVzZSBpdCdzCiAgICAgICAgICAgICMgbm90IHNldCwgYW5kIGJlY2F1c2UgaXQgbWlnaHQgYmUgZGlmZmVyZW50IHBlci1jbGFzcwogICAgICAgICAgICAjICh3aGljaCwgYWZ0ZXIgYWxsLCBpcyB3aHkgd2UgaGF2ZSBhIGZhY3RvcnkgZnVuY3Rpb24hKS4KCiAgICAgICAgICAgIGdsb2JhbHNbZGVmYXVsdF9uYW1lXSA9IGYuZGVmYXVsdF9mYWN0b3J5CiAgICAgICAgICAgIHZhbHVlID0gZid7ZGVmYXVsdF9uYW1lfSgpJwogICAgZWxzZToKICAgICAgICAjIE5vIGRlZmF1bHQgZmFjdG9yeS4KICAgICAgICBpZiBmLmluaXQ6CiAgICAgICAgICAgIGlmIGYuZGVmYXVsdCBpcyBNSVNTSU5HOgogICAgICAgICAgICAgICAgIyBUaGVyZSdzIG5vIGRlZmF1bHQsIGp1c3QgZG8gYW4gYXNzaWdubWVudC4KICAgICAgICAgICAgICAgIHZhbHVlID0gZi5uYW1lCiAgICAgICAgICAgIGVsaWYgZi5kZWZhdWx0IGlzIG5vdCBNSVNTSU5HOgogICAgICAgICAgICAgICAgZ2xvYmFsc1tkZWZhdWx0X25hbWVdID0gZi5kZWZhdWx0CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGYubmFtZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgSWYgdGhlIGNsYXNzIGhhcyBzbG90cywgdGhlbiBpbml0aWFsaXplIHRoaXMgZmllbGQuCiAgICAgICAgICAgIGlmIHNsb3RzIGFuZCBmLmRlZmF1bHQgaXMgbm90IE1JU1NJTkc6CiAgICAgICAgICAgICAgICBnbG9iYWxzW2RlZmF1bHRfbmFtZV0gPSBmLmRlZmF1bHQKICAgICAgICAgICAgICAgIHZhbHVlID0gZGVmYXVsdF9uYW1lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIFRoaXMgZmllbGQgZG9lcyBub3QgbmVlZCBpbml0aWFsaXphdGlvbjogcmVhZGluZyBmcm9tIGl0IHdpbGwKICAgICAgICAgICAgICAgICMganVzdCB1c2UgdGhlIGNsYXNzIGF0dHJpYnV0ZSB0aGF0IGNvbnRhaW5zIHRoZSBkZWZhdWx0LgogICAgICAgICAgICAgICAgIyBTaWduaWZ5IHRoYXQgdG8gdGhlIGNhbGxlciBieSByZXR1cm5pbmcgTm9uZS4KICAgICAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgIyBPbmx5IHRlc3QgdGhpcyBub3csIHNvIHRoYXQgd2UgY2FuIGNyZWF0ZSB2YXJpYWJsZXMgZm9yIHRoZQogICAgIyBkZWZhdWx0LiAgSG93ZXZlciwgcmV0dXJuIE5vbmUgdG8gc2lnbmlmeSB0aGF0IHdlJ3JlIG5vdCBnb2luZwogICAgIyB0byBhY3R1YWxseSBkbyB0aGUgYXNzaWdubWVudCBzdGF0ZW1lbnQgZm9yIEluaXRWYXJzLgogICAgaWYgZi5fZmllbGRfdHlwZSBpcyBfRklFTERfSU5JVFZBUjoKICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgTm93LCBhY3R1YWxseSBnZW5lcmF0ZSB0aGUgZmllbGQgYXNzaWdubWVudC4KICAgIHJldHVybiBfZmllbGRfYXNzaWduKGZyb3plbiwgZi5uYW1lLCB2YWx1ZSwgc2VsZl9uYW1lKQoKCmRlZiBfaW5pdF9wYXJhbShmKToKICAgICMgUmV0dXJuIHRoZSBfX2luaXRfXyBwYXJhbWV0ZXIgc3RyaW5nIGZvciB0aGlzIGZpZWxkLiAgRm9yCiAgICAjIGV4YW1wbGUsIHRoZSBlcXVpdmFsZW50IG9mICd4OmludD0zJyAoZXhjZXB0IGluc3RlYWQgb2YgJ2ludCcsCiAgICAjIHJlZmVyZW5jZSBhIHZhcmlhYmxlIHNldCB0byBpbnQsIGFuZCBpbnN0ZWFkIG9mICczJywgcmVmZXJlbmNlIGEKICAgICMgdmFyaWFibGUgc2V0IHRvIDMpLgogICAgaWYgZi5kZWZhdWx0IGlzIE1JU1NJTkcgYW5kIGYuZGVmYXVsdF9mYWN0b3J5IGlzIE1JU1NJTkc6CiAgICAgICAgIyBUaGVyZSdzIG5vIGRlZmF1bHQsIGFuZCBubyBkZWZhdWx0X2ZhY3RvcnksIGp1c3Qgb3V0cHV0IHRoZQogICAgICAgICMgdmFyaWFibGUgbmFtZSBhbmQgdHlwZS4KICAgICAgICBkZWZhdWx0ID0gJycKICAgIGVsaWYgZi5kZWZhdWx0IGlzIG5vdCBNSVNTSU5HOgogICAgICAgICMgVGhlcmUncyBhIGRlZmF1bHQsIHRoaXMgd2lsbCBiZSB0aGUgbmFtZSB0aGF0J3MgdXNlZCB0byBsb29rCiAgICAgICAgIyBpdCB1cC4KICAgICAgICBkZWZhdWx0ID0gZic9X2RmbHRfe2YubmFtZX0nCiAgICBlbGlmIGYuZGVmYXVsdF9mYWN0b3J5IGlzIG5vdCBNSVNTSU5HOgogICAgICAgICMgVGhlcmUncyBhIGZhY3RvcnkgZnVuY3Rpb24uICBTZXQgYSBtYXJrZXIuCiAgICAgICAgZGVmYXVsdCA9ICc9X0hBU19ERUZBVUxUX0ZBQ1RPUlknCiAgICByZXR1cm4gZid7Zi5uYW1lfTpfdHlwZV97Zi5uYW1lfXtkZWZhdWx0fScKCgpkZWYgX2luaXRfZm4oZmllbGRzLCBzdGRfZmllbGRzLCBrd19vbmx5X2ZpZWxkcywgZnJvemVuLCBoYXNfcG9zdF9pbml0LAogICAgICAgICAgICAgc2VsZl9uYW1lLCBnbG9iYWxzLCBzbG90cyk6CiAgICAjIGZpZWxkcyBjb250YWlucyBib3RoIHJlYWwgZmllbGRzIGFuZCBJbml0VmFyIHBzZXVkby1maWVsZHMuCgogICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBmaWVsZHMgd2l0aG91dCBkZWZhdWx0cyBmb2xsb3dpbmcgZmllbGRzCiAgICAjIHdpdGggZGVmYXVsdHMuICBUaGlzIGFjdHVhbGx5IHdvdWxkIGJlIGNhdWdodCB3aGVuIGV4ZWMtaW5nIHRoZQogICAgIyBmdW5jdGlvbiBzb3VyY2UgY29kZSwgYnV0IGNhdGNoaW5nIGl0IGhlcmUgZ2l2ZXMgYSBiZXR0ZXIgZXJyb3IKICAgICMgbWVzc2FnZSwgYW5kIGZ1dHVyZS1wcm9vZnMgdXMgaW4gY2FzZSB3ZSBidWlsZCB1cCB0aGUgZnVuY3Rpb24KICAgICMgdXNpbmcgYXN0LgoKICAgIHNlZW5fZGVmYXVsdCA9IEZhbHNlCiAgICBmb3IgZiBpbiBzdGRfZmllbGRzOgogICAgICAgICMgT25seSBjb25zaWRlciB0aGUgbm9uLWt3LW9ubHkgZmllbGRzIGluIHRoZSBfX2luaXRfXyBjYWxsLgogICAgICAgIGlmIGYuaW5pdDoKICAgICAgICAgICAgaWYgbm90IChmLmRlZmF1bHQgaXMgTUlTU0lORyBhbmQgZi5kZWZhdWx0X2ZhY3RvcnkgaXMgTUlTU0lORyk6CiAgICAgICAgICAgICAgICBzZWVuX2RlZmF1bHQgPSBUcnVlCiAgICAgICAgICAgIGVsaWYgc2Vlbl9kZWZhdWx0OgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnbm9uLWRlZmF1bHQgYXJndW1lbnQge2YubmFtZSFyfSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd3MgZGVmYXVsdCBhcmd1bWVudCcpCgogICAgbG9jYWxzID0ge2YnX3R5cGVfe2YubmFtZX0nOiBmLnR5cGUgZm9yIGYgaW4gZmllbGRzfQogICAgbG9jYWxzLnVwZGF0ZSh7CiAgICAgICAgJ01JU1NJTkcnOiBNSVNTSU5HLAogICAgICAgICdfSEFTX0RFRkFVTFRfRkFDVE9SWSc6IF9IQVNfREVGQVVMVF9GQUNUT1JZLAogICAgICAgICdfX2RhdGFjbGFzc19idWlsdGluc19vYmplY3RfXyc6IG9iamVjdCwKICAgIH0pCgogICAgYm9keV9saW5lcyA9IFtdCiAgICBmb3IgZiBpbiBmaWVsZHM6CiAgICAgICAgbGluZSA9IF9maWVsZF9pbml0KGYsIGZyb3plbiwgbG9jYWxzLCBzZWxmX25hbWUsIHNsb3RzKQogICAgICAgICMgbGluZSBpcyBOb25lIG1lYW5zIHRoYXQgdGhpcyBmaWVsZCBkb2Vzbid0IHJlcXVpcmUKICAgICAgICAjIGluaXRpYWxpemF0aW9uIChpdCdzIGEgcHNldWRvLWZpZWxkKS4gIEp1c3Qgc2tpcCBpdC4KICAgICAgICBpZiBsaW5lOgogICAgICAgICAgICBib2R5X2xpbmVzLmFwcGVuZChsaW5lKQoKICAgICMgRG9lcyB0aGlzIGNsYXNzIGhhdmUgYSBwb3N0LWluaXQgZnVuY3Rpb24/CiAgICBpZiBoYXNfcG9zdF9pbml0OgogICAgICAgIHBhcmFtc19zdHIgPSAnLCcuam9pbihmLm5hbWUgZm9yIGYgaW4gZmllbGRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGYuX2ZpZWxkX3R5cGUgaXMgX0ZJRUxEX0lOSVRWQVIpCiAgICAgICAgYm9keV9saW5lcy5hcHBlbmQoZid7c2VsZl9uYW1lfS57X1BPU1RfSU5JVF9OQU1FfSh7cGFyYW1zX3N0cn0pJykKCiAgICAjIElmIG5vIGJvZHkgbGluZXMsIHVzZSAncGFzcycuCiAgICBpZiBub3QgYm9keV9saW5lczoKICAgICAgICBib2R5X2xpbmVzID0gWydwYXNzJ10KCiAgICBfaW5pdF9wYXJhbXMgPSBbX2luaXRfcGFyYW0oZikgZm9yIGYgaW4gc3RkX2ZpZWxkc10KICAgIGlmIGt3X29ubHlfZmllbGRzOgogICAgICAgICMgQWRkIHRoZSBrZXl3b3JkLW9ubHkgYXJncy4gIEJlY2F1c2UgdGhlICogY2FuIG9ubHkgYmUgYWRkZWQgaWYKICAgICAgICAjIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGtleXdvcmQtb25seSBhcmcsIHRoZXJlIG5lZWRzIHRvIGJlIGEgdGVzdCBoZXJlCiAgICAgICAgIyAoaW5zdGVhZCBvZiBqdXN0IGNvbmNhdGVudGluZyB0aGUgbGlzdHMgdG9nZXRoZXIpLgogICAgICAgIF9pbml0X3BhcmFtcyArPSBbJyonXQogICAgICAgIF9pbml0X3BhcmFtcyArPSBbX2luaXRfcGFyYW0oZikgZm9yIGYgaW4ga3dfb25seV9maWVsZHNdCiAgICByZXR1cm4gX2NyZWF0ZV9mbignX19pbml0X18nLAogICAgICAgICAgICAgICAgICAgICAgW3NlbGZfbmFtZV0gKyBfaW5pdF9wYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICBib2R5X2xpbmVzLAogICAgICAgICAgICAgICAgICAgICAgbG9jYWxzPWxvY2FscywKICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgIHJldHVybl90eXBlPU5vbmUpCgoKZGVmIF9yZXByX2ZuKGZpZWxkcywgZ2xvYmFscyk6CiAgICBmbiA9IF9jcmVhdGVfZm4oJ19fcmVwcl9fJywKICAgICAgICAgICAgICAgICAgICAoJ3NlbGYnLCksCiAgICAgICAgICAgICAgICAgICAgWydyZXR1cm4gc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fICsgZiIoJyArCiAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihbZiJ7Zi5uYW1lfT17e3NlbGYue2YubmFtZX0hcn19IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluIGZpZWxkc10pICsKICAgICAgICAgICAgICAgICAgICAgJykiJ10sCiAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscykKICAgIHJldHVybiBfcmVjdXJzaXZlX3JlcHIoZm4pCgoKZGVmIF9mcm96ZW5fZ2V0X2RlbF9hdHRyKGNscywgZmllbGRzLCBnbG9iYWxzKToKICAgIGxvY2FscyA9IHsnY2xzJzogY2xzLAogICAgICAgICAgICAgICdGcm96ZW5JbnN0YW5jZUVycm9yJzogRnJvemVuSW5zdGFuY2VFcnJvcn0KICAgIGlmIGZpZWxkczoKICAgICAgICBmaWVsZHNfc3RyID0gJygnICsgJywnLmpvaW4ocmVwcihmLm5hbWUpIGZvciBmIGluIGZpZWxkcykgKyAnLCknCiAgICBlbHNlOgogICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB0aGUgemVyby1sZW5ndGggdHVwbGUuCiAgICAgICAgZmllbGRzX3N0ciA9ICcoKScKICAgIHJldHVybiAoX2NyZWF0ZV9mbignX19zZXRhdHRyX18nLAogICAgICAgICAgICAgICAgICAgICAgKCdzZWxmJywgJ25hbWUnLCAndmFsdWUnKSwKICAgICAgICAgICAgICAgICAgICAgIChmJ2lmIHR5cGUoc2VsZikgaXMgY2xzIG9yIG5hbWUgaW4ge2ZpZWxkc19zdHJ9OicsCiAgICAgICAgICAgICAgICAgICAgICAgICcgcmFpc2UgRnJvemVuSW5zdGFuY2VFcnJvcihmImNhbm5vdCBhc3NpZ24gdG8gZmllbGQge25hbWUhcn0iKScsCiAgICAgICAgICAgICAgICAgICAgICAgZidzdXBlcihjbHMsIHNlbGYpLl9fc2V0YXR0cl9fKG5hbWUsIHZhbHVlKScpLAogICAgICAgICAgICAgICAgICAgICAgIGxvY2Fscz1sb2NhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKSwKICAgICAgICAgICAgX2NyZWF0ZV9mbignX19kZWxhdHRyX18nLAogICAgICAgICAgICAgICAgICAgICAgKCdzZWxmJywgJ25hbWUnKSwKICAgICAgICAgICAgICAgICAgICAgIChmJ2lmIHR5cGUoc2VsZikgaXMgY2xzIG9yIG5hbWUgaW4ge2ZpZWxkc19zdHJ9OicsCiAgICAgICAgICAgICAgICAgICAgICAgICcgcmFpc2UgRnJvemVuSW5zdGFuY2VFcnJvcihmImNhbm5vdCBkZWxldGUgZmllbGQge25hbWUhcn0iKScsCiAgICAgICAgICAgICAgICAgICAgICAgZidzdXBlcihjbHMsIHNlbGYpLl9fZGVsYXR0cl9fKG5hbWUpJyksCiAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzPWxvY2FscywKICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMpLAogICAgICAgICAgICApCgoKZGVmIF9jbXBfZm4obmFtZSwgb3AsIHNlbGZfdHVwbGUsIG90aGVyX3R1cGxlLCBnbG9iYWxzKToKICAgICMgQ3JlYXRlIGEgY29tcGFyaXNvbiBmdW5jdGlvbi4gIElmIHRoZSBmaWVsZHMgaW4gdGhlIG9iamVjdCBhcmUKICAgICMgbmFtZWQgJ3gnIGFuZCAneScsIHRoZW4gc2VsZl90dXBsZSBpcyB0aGUgc3RyaW5nCiAgICAjICcoc2VsZi54LHNlbGYueSknIGFuZCBvdGhlcl90dXBsZSBpcyB0aGUgc3RyaW5nCiAgICAjICcob3RoZXIueCxvdGhlci55KScuCgogICAgcmV0dXJuIF9jcmVhdGVfZm4obmFtZSwKICAgICAgICAgICAgICAgICAgICAgICgnc2VsZicsICdvdGhlcicpLAogICAgICAgICAgICAgICAgICAgICAgWyAnaWYgb3RoZXIuX19jbGFzc19fIGlzIHNlbGYuX19jbGFzc19fOicsCiAgICAgICAgICAgICAgICAgICAgICAgZicgcmV0dXJuIHtzZWxmX3R1cGxlfXtvcH17b3RoZXJfdHVwbGV9JywKICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybiBOb3RJbXBsZW1lbnRlZCddLAogICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKQoKCmRlZiBfaGFzaF9mbihmaWVsZHMsIGdsb2JhbHMpOgogICAgc2VsZl90dXBsZSA9IF90dXBsZV9zdHIoJ3NlbGYnLCBmaWVsZHMpCiAgICByZXR1cm4gX2NyZWF0ZV9mbignX19oYXNoX18nLAogICAgICAgICAgICAgICAgICAgICAgKCdzZWxmJywpLAogICAgICAgICAgICAgICAgICAgICAgW2YncmV0dXJuIGhhc2goe3NlbGZfdHVwbGV9KSddLAogICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKQoKCmRlZiBfaXNfY2xhc3N2YXIoYV90eXBlLCB0eXBpbmcpOgogICAgIyBUaGlzIHRlc3QgdXNlcyBhIHR5cGluZyBpbnRlcm5hbCBjbGFzcywgYnV0IGl0J3MgdGhlIGJlc3Qgd2F5IHRvCiAgICAjIHRlc3QgaWYgdGhpcyBpcyBhIENsYXNzVmFyLgogICAgcmV0dXJuIChhX3R5cGUgaXMgdHlwaW5nLkNsYXNzVmFyCiAgICAgICAgICAgIG9yICh0eXBlKGFfdHlwZSkgaXMgdHlwaW5nLl9HZW5lcmljQWxpYXMKICAgICAgICAgICAgICAgIGFuZCBhX3R5cGUuX19vcmlnaW5fXyBpcyB0eXBpbmcuQ2xhc3NWYXIpKQoKCmRlZiBfaXNfaW5pdHZhcihhX3R5cGUsIGRhdGFjbGFzc2VzKToKICAgICMgVGhlIG1vZHVsZSB3ZSdyZSBjaGVja2luZyBhZ2FpbnN0IGlzIHRoZSBtb2R1bGUgd2UncmUKICAgICMgY3VycmVudGx5IGluIChkYXRhY2xhc3Nlcy5weSkuCiAgICByZXR1cm4gKGFfdHlwZSBpcyBkYXRhY2xhc3Nlcy5Jbml0VmFyCiAgICAgICAgICAgIG9yIHR5cGUoYV90eXBlKSBpcyBkYXRhY2xhc3Nlcy5Jbml0VmFyKQoKZGVmIF9pc19rd19vbmx5KGFfdHlwZSwgZGF0YWNsYXNzZXMpOgogICAgcmV0dXJuIGFfdHlwZSBpcyBkYXRhY2xhc3Nlcy5LV19PTkxZCgoKZGVmIF9pc190eXBlKGFubm90YXRpb24sIGNscywgYV9tb2R1bGUsIGFfdHlwZSwgaXNfdHlwZV9wcmVkaWNhdGUpOgogICAgIyBHaXZlbiBhIHR5cGUgYW5ub3RhdGlvbiBzdHJpbmcsIGRvZXMgaXQgcmVmZXIgdG8gYV90eXBlIGluCiAgICAjIGFfbW9kdWxlPyAgRm9yIGV4YW1wbGUsIHdoZW4gY2hlY2tpbmcgdGhhdCBhbm5vdGF0aW9uIGRlbm90ZXMgYQogICAgIyBDbGFzc1ZhciwgdGhlbiBhX21vZHVsZSBpcyB0eXBpbmcsIGFuZCBhX3R5cGUgaXMKICAgICMgdHlwaW5nLkNsYXNzVmFyLgoKICAgICMgSXQncyBwb3NzaWJsZSB0byBsb29rIHVwIGFfbW9kdWxlIGdpdmVuIGFfdHlwZSwgYnV0IGl0IGludm9sdmVzCiAgICAjIGxvb2tpbmcgaW4gc3lzLm1vZHVsZXMgKGFnYWluISksIGFuZCBzZWVtcyBsaWtlIGEgd2FzdGUgc2luY2UKICAgICMgdGhlIGNhbGxlciBhbHJlYWR5IGtub3dzIGFfbW9kdWxlLgoKICAgICMgLSBhbm5vdGF0aW9uIGlzIGEgc3RyaW5nIHR5cGUgYW5ub3RhdGlvbgogICAgIyAtIGNscyBpcyB0aGUgY2xhc3MgdGhhdCB0aGlzIGFubm90YXRpb24gd2FzIGZvdW5kIGluCiAgICAjIC0gYV9tb2R1bGUgaXMgdGhlIG1vZHVsZSB3ZSB3YW50IHRvIG1hdGNoCiAgICAjIC0gYV90eXBlIGlzIHRoZSB0eXBlIGluIHRoYXQgbW9kdWxlIHdlIHdhbnQgdG8gbWF0Y2gKICAgICMgLSBpc190eXBlX3ByZWRpY2F0ZSBpcyBhIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIChvYmosIGFfbW9kdWxlKQogICAgIyAgIHRoYXQgZGV0ZXJtaW5lcyBpZiBvYmogaXMgb2YgdGhlIGRlc2lyZWQgdHlwZS4KCiAgICAjIFNpbmNlIHRoaXMgdGVzdCBkb2VzIG5vdCBkbyBhIGxvY2FsIG5hbWVzcGFjZSBsb29rdXAgKGFuZAogICAgIyBpbnN0ZWFkIG9ubHkgYSBtb2R1bGUgKGdsb2JhbCkgbG9va3VwKSwgdGhlcmUgYXJlIHNvbWUgdGhpbmdzIGl0CiAgICAjIGdldHMgd3JvbmcuCgogICAgIyBXaXRoIHN0cmluZyBhbm5vdGF0aW9ucywgY3YwIHdpbGwgYmUgZGV0ZWN0ZWQgYXMgYSBDbGFzc1ZhcjoKICAgICMgICBDViA9IENsYXNzVmFyCiAgICAjICAgQGRhdGFjbGFzcwogICAgIyAgIGNsYXNzIEMwOgogICAgIyAgICAgY3YwOiBDVgoKICAgICMgQnV0IGluIHRoaXMgZXhhbXBsZSBjdjEgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgYXMgYSBDbGFzc1ZhcjoKICAgICMgICBAZGF0YWNsYXNzCiAgICAjICAgY2xhc3MgQzE6CiAgICAjICAgICBDViA9IENsYXNzVmFyCiAgICAjICAgICBjdjE6IENWCgogICAgIyBJbiBDMSwgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiAoX2lzX3R5cGUpIHdpbGwgbG9vayB1cCAiQ1YiIGluCiAgICAjIHRoZSBtb2R1bGUgYW5kIG5vdCBmaW5kIGl0LCBzbyBpdCB3aWxsIG5vdCBjb25zaWRlciBjdjEgYXMgYQogICAgIyBDbGFzc1Zhci4gIFRoaXMgaXMgYSBmYWlybHkgb2JzY3VyZSBjb3JuZXIgY2FzZSwgYW5kIHRoZSBiZXN0CiAgICAjIHdheSB0byBmaXggaXQgd291bGQgYmUgdG8gZXZhbCgpIHRoZSBzdHJpbmcgIkNWIiB3aXRoIHRoZQogICAgIyBjb3JyZWN0IGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlcy4gIEhvd2V2ZXIgdGhhdCB3b3VsZCBpbnZvbHZlCiAgICAjIGEgZXZhbCgpIHBlbmFsdHkgZm9yIGV2ZXJ5IHNpbmdsZSBmaWVsZCBvZiBldmVyeSBkYXRhY2xhc3MKICAgICMgdGhhdCdzIGRlZmluZWQuICBJdCB3YXMganVkZ2VkIG5vdCB3b3J0aCBpdC4KCiAgICBtYXRjaCA9IF9NT0RVTEVfSURFTlRJRklFUl9SRS5tYXRjaChhbm5vdGF0aW9uKQogICAgaWYgbWF0Y2g6CiAgICAgICAgbnMgPSBOb25lCiAgICAgICAgbW9kdWxlX25hbWUgPSBtYXRjaC5ncm91cCgxKQogICAgICAgIGlmIG5vdCBtb2R1bGVfbmFtZToKICAgICAgICAgICAgIyBObyBtb2R1bGUgbmFtZSwgYXNzdW1lIHRoZSBjbGFzcydzIG1vZHVsZSBkaWQKICAgICAgICAgICAgIyAiZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgSW5pdFZhciIuCiAgICAgICAgICAgIG5zID0gc3lzLm1vZHVsZXMuZ2V0KGNscy5fX21vZHVsZV9fKS5fX2RpY3RfXwogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgTG9vayB1cCBtb2R1bGVfbmFtZSBpbiB0aGUgY2xhc3MncyBtb2R1bGUuCiAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzLmdldChjbHMuX19tb2R1bGVfXykKICAgICAgICAgICAgaWYgbW9kdWxlIGFuZCBtb2R1bGUuX19kaWN0X18uZ2V0KG1vZHVsZV9uYW1lKSBpcyBhX21vZHVsZToKICAgICAgICAgICAgICAgIG5zID0gc3lzLm1vZHVsZXMuZ2V0KGFfdHlwZS5fX21vZHVsZV9fKS5fX2RpY3RfXwogICAgICAgIGlmIG5zIGFuZCBpc190eXBlX3ByZWRpY2F0ZShucy5nZXQobWF0Y2guZ3JvdXAoMikpLCBhX21vZHVsZSk6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCgpkZWYgX2dldF9maWVsZChjbHMsIGFfbmFtZSwgYV90eXBlLCBkZWZhdWx0X2t3X29ubHkpOgogICAgIyBSZXR1cm4gYSBGaWVsZCBvYmplY3QgZm9yIHRoaXMgZmllbGQgbmFtZSBhbmQgdHlwZS4gIENsYXNzVmFycyBhbmQKICAgICMgSW5pdFZhcnMgYXJlIGFsc28gcmV0dXJuZWQsIGJ1dCBtYXJrZWQgYXMgc3VjaCAoc2VlIGYuX2ZpZWxkX3R5cGUpLgogICAgIyBkZWZhdWx0X2t3X29ubHkgaXMgdGhlIHZhbHVlIG9mIGt3X29ubHkgdG8gdXNlIGlmIHRoZXJlIGlzbid0IGEgZmllbGQoKQogICAgIyB0aGF0IGRlZmluZXMgaXQuCgogICAgIyBJZiB0aGUgZGVmYXVsdCB2YWx1ZSBpc24ndCBkZXJpdmVkIGZyb20gRmllbGQsIHRoZW4gaXQncyBvbmx5IGEKICAgICMgbm9ybWFsIGRlZmF1bHQgdmFsdWUuICBDb252ZXJ0IGl0IHRvIGEgRmllbGQoKS4KICAgIGRlZmF1bHQgPSBnZXRhdHRyKGNscywgYV9uYW1lLCBNSVNTSU5HKQogICAgaWYgaXNpbnN0YW5jZShkZWZhdWx0LCBGaWVsZCk6CiAgICAgICAgZiA9IGRlZmF1bHQKICAgIGVsc2U6CiAgICAgICAgaWYgaXNpbnN0YW5jZShkZWZhdWx0LCB0eXBlcy5NZW1iZXJEZXNjcmlwdG9yVHlwZSk6CiAgICAgICAgICAgICMgVGhpcyBpcyBhIGZpZWxkIGluIF9fc2xvdHNfXywgc28gaXQgaGFzIG5vIGRlZmF1bHQgdmFsdWUuCiAgICAgICAgICAgIGRlZmF1bHQgPSBNSVNTSU5HCiAgICAgICAgZiA9IGZpZWxkKGRlZmF1bHQ9ZGVmYXVsdCkKCiAgICAjIE9ubHkgYXQgdGhpcyBwb2ludCBkbyB3ZSBrbm93IHRoZSBuYW1lIGFuZCB0aGUgdHlwZS4gIFNldCB0aGVtLgogICAgZi5uYW1lID0gYV9uYW1lCiAgICBmLnR5cGUgPSBhX3R5cGUKCiAgICAjIEFzc3VtZSBpdCdzIGEgbm9ybWFsIGZpZWxkIHVudGlsIHByb3ZlbiBvdGhlcndpc2UuICBXZSdyZSBuZXh0CiAgICAjIGdvaW5nIHRvIGRlY2lkZSBpZiBpdCdzIGEgQ2xhc3NWYXIgb3IgSW5pdFZhciwgZXZlcnl0aGluZyBlbHNlCiAgICAjIGlzIGp1c3QgYSBub3JtYWwgZmllbGQuCiAgICBmLl9maWVsZF90eXBlID0gX0ZJRUxECgogICAgIyBJbiBhZGRpdGlvbiB0byBjaGVja2luZyBmb3IgYWN0dWFsIHR5cGVzIGhlcmUsIGFsc28gY2hlY2sgZm9yCiAgICAjIHN0cmluZyBhbm5vdGF0aW9ucy4gIGdldF90eXBlX2hpbnRzKCkgd29uJ3QgYWx3YXlzIHdvcmsgZm9yIHVzCiAgICAjIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmcvaXNzdWVzLzUwOCBmb3IgZXhhbXBsZSksCiAgICAjIHBsdXMgaXQncyBleHBlbnNpdmUgYW5kIHdvdWxkIHJlcXVpcmUgYW4gZXZhbCBmb3IgZXZlcnkgc3RyaW5nCiAgICAjIGFubm90YXRpb24uICBTbywgbWFrZSBhIGJlc3QgZWZmb3J0IHRvIHNlZSBpZiB0aGlzIGlzIGEgQ2xhc3NWYXIKICAgICMgb3IgSW5pdFZhciB1c2luZyByZWdleCdzIGFuZCBjaGVja2luZyB0aGF0IHRoZSB0aGluZyByZWZlcmVuY2VkCiAgICAjIGlzIGFjdHVhbGx5IG9mIHRoZSBjb3JyZWN0IHR5cGUuCgogICAgIyBGb3IgdGhlIGNvbXBsZXRlIGRpc2N1c3Npb24sIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMzNDUzCgogICAgIyBJZiB0eXBpbmcgaGFzIG5vdCBiZWVuIGltcG9ydGVkLCB0aGVuIGl0J3MgaW1wb3NzaWJsZSBmb3IgYW55CiAgICAjIGFubm90YXRpb24gdG8gYmUgYSBDbGFzc1Zhci4gIFNvLCBvbmx5IGxvb2sgZm9yIENsYXNzVmFyIGlmCiAgICAjIHR5cGluZyBoYXMgYmVlbiBpbXBvcnRlZCBieSBhbnkgbW9kdWxlIChub3QgbmVjZXNzYXJpbHkgY2xzJ3MKICAgICMgbW9kdWxlKS4KICAgIHR5cGluZyA9IHN5cy5tb2R1bGVzLmdldCgndHlwaW5nJykKICAgIGlmIHR5cGluZzoKICAgICAgICBpZiAoX2lzX2NsYXNzdmFyKGFfdHlwZSwgdHlwaW5nKQogICAgICAgICAgICBvciAoaXNpbnN0YW5jZShmLnR5cGUsIHN0cikKICAgICAgICAgICAgICAgIGFuZCBfaXNfdHlwZShmLnR5cGUsIGNscywgdHlwaW5nLCB0eXBpbmcuQ2xhc3NWYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lzX2NsYXNzdmFyKSkpOgogICAgICAgICAgICBmLl9maWVsZF90eXBlID0gX0ZJRUxEX0NMQVNTVkFSCgogICAgIyBJZiB0aGUgdHlwZSBpcyBJbml0VmFyLCBvciBpZiBpdCdzIGEgbWF0Y2hpbmcgc3RyaW5nIGFubm90YXRpb24sCiAgICAjIHRoZW4gaXQncyBhbiBJbml0VmFyLgogICAgaWYgZi5fZmllbGRfdHlwZSBpcyBfRklFTEQ6CiAgICAgICAgIyBUaGUgbW9kdWxlIHdlJ3JlIGNoZWNraW5nIGFnYWluc3QgaXMgdGhlIG1vZHVsZSB3ZSdyZQogICAgICAgICMgY3VycmVudGx5IGluIChkYXRhY2xhc3Nlcy5weSkuCiAgICAgICAgZGF0YWNsYXNzZXMgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KICAgICAgICBpZiAoX2lzX2luaXR2YXIoYV90eXBlLCBkYXRhY2xhc3NlcykKICAgICAgICAgICAgb3IgKGlzaW5zdGFuY2UoZi50eXBlLCBzdHIpCiAgICAgICAgICAgICAgICBhbmQgX2lzX3R5cGUoZi50eXBlLCBjbHMsIGRhdGFjbGFzc2VzLCBkYXRhY2xhc3Nlcy5Jbml0VmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pc19pbml0dmFyKSkpOgogICAgICAgICAgICBmLl9maWVsZF90eXBlID0gX0ZJRUxEX0lOSVRWQVIKCiAgICAjIFZhbGlkYXRpb25zIGZvciBpbmRpdmlkdWFsIGZpZWxkcy4gIFRoaXMgaXMgZGVsYXllZCB1bnRpbCBub3csCiAgICAjIGluc3RlYWQgb2YgaW4gdGhlIEZpZWxkKCkgY29uc3RydWN0b3IsIHNpbmNlIG9ubHkgaGVyZSBkbyB3ZQogICAgIyBrbm93IHRoZSBmaWVsZCBuYW1lLCB3aGljaCBhbGxvd3MgZm9yIGJldHRlciBlcnJvciByZXBvcnRpbmcuCgogICAgIyBTcGVjaWFsIHJlc3RyaWN0aW9ucyBmb3IgQ2xhc3NWYXIgYW5kIEluaXRWYXIuCiAgICBpZiBmLl9maWVsZF90eXBlIGluIChfRklFTERfQ0xBU1NWQVIsIF9GSUVMRF9JTklUVkFSKToKICAgICAgICBpZiBmLmRlZmF1bHRfZmFjdG9yeSBpcyBub3QgTUlTU0lORzoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnZmllbGQge2YubmFtZX0gY2Fubm90IGhhdmUgYSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCBmYWN0b3J5JykKICAgICAgICAjIFNob3VsZCBJIGNoZWNrIGZvciBvdGhlciBmaWVsZCBzZXR0aW5ncz8gZGVmYXVsdF9mYWN0b3J5CiAgICAgICAgIyBzZWVtcyB0aGUgbW9zdCBzZXJpb3VzIHRvIGNoZWNrIGZvci4gIE1heWJlIGFkZCBvdGhlcnMuICBGb3IKICAgICAgICAjIGV4YW1wbGUsIGhvdyBhYm91dCBpbml0PUZhbHNlIChvciByZWFsbHksCiAgICAgICAgIyBpbml0PTxub3QtdGhlLWRlZmF1bHQtaW5pdC12YWx1ZT4pPyAgSXQgbWFrZXMgbm8gc2Vuc2UgZm9yCiAgICAgICAgIyBDbGFzc1ZhciBhbmQgSW5pdFZhciB0byBzcGVjaWZ5IGluaXQ9PGFueXRoaW5nPi4KCiAgICAjIGt3X29ubHkgdmFsaWRhdGlvbiBhbmQgYXNzaWdubWVudC4KICAgIGlmIGYuX2ZpZWxkX3R5cGUgaW4gKF9GSUVMRCwgX0ZJRUxEX0lOSVRWQVIpOgogICAgICAgICMgRm9yIHJlYWwgYW5kIEluaXRWYXIgZmllbGRzLCBpZiBrd19vbmx5IHdhc24ndCBzcGVjaWZpZWQgdXNlIHRoZQogICAgICAgICMgZGVmYXVsdCB2YWx1ZS4KICAgICAgICBpZiBmLmt3X29ubHkgaXMgTUlTU0lORzoKICAgICAgICAgICAgZi5rd19vbmx5ID0gZGVmYXVsdF9rd19vbmx5CiAgICBlbHNlOgogICAgICAgICMgTWFrZSBzdXJlIGt3X29ubHkgaXNuJ3Qgc2V0IGZvciBDbGFzc1ZhcnMKICAgICAgICBhc3NlcnQgZi5fZmllbGRfdHlwZSBpcyBfRklFTERfQ0xBU1NWQVIKICAgICAgICBpZiBmLmt3X29ubHkgaXMgbm90IE1JU1NJTkc6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ2ZpZWxkIHtmLm5hbWV9IGlzIGEgQ2xhc3NWYXIgYnV0IHNwZWNpZmllcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3dfb25seScpCgogICAgIyBGb3IgcmVhbCBmaWVsZHMsIGRpc2FsbG93IG11dGFibGUgZGVmYXVsdHMuICBVc2UgdW5oYXNoYWJsZSBhcyBhIHByb3h5CiAgICAjIGluZGljYXRvciBmb3IgbXV0YWJpbGl0eS4gIFJlYWQgdGhlIF9faGFzaF9fIGF0dHJpYnV0ZSBmcm9tIHRoZSBjbGFzcywKICAgICMgbm90IHRoZSBpbnN0YW5jZS4KICAgIGlmIGYuX2ZpZWxkX3R5cGUgaXMgX0ZJRUxEIGFuZCBmLmRlZmF1bHQuX19jbGFzc19fLl9faGFzaF9fIGlzIE5vbmU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ211dGFibGUgZGVmYXVsdCB7dHlwZShmLmRlZmF1bHQpfSBmb3IgZmllbGQgJwogICAgICAgICAgICAgICAgICAgICAgICAgZid7Zi5uYW1lfSBpcyBub3QgYWxsb3dlZDogdXNlIGRlZmF1bHRfZmFjdG9yeScpCgogICAgcmV0dXJuIGYKCmRlZiBfc2V0X3F1YWxuYW1lKGNscywgdmFsdWUpOgogICAgIyBFbnN1cmUgdGhhdCB0aGUgZnVuY3Rpb25zIHJldHVybmVkIGZyb20gX2NyZWF0ZV9mbiB1c2VzIHRoZSBwcm9wZXIKICAgICMgX19xdWFsbmFtZV9fICh0aGUgY2xhc3MgdGhleSBiZWxvbmcgdG8pLgogICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgRnVuY3Rpb25UeXBlKToKICAgICAgICB2YWx1ZS5fX3F1YWxuYW1lX18gPSBmIntjbHMuX19xdWFsbmFtZV9ffS57dmFsdWUuX19uYW1lX199IgogICAgcmV0dXJuIHZhbHVlCgpkZWYgX3NldF9uZXdfYXR0cmlidXRlKGNscywgbmFtZSwgdmFsdWUpOgogICAgIyBOZXZlciBvdmVyd3JpdGVzIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZS4gIFJldHVybnMgVHJ1ZSBpZiB0aGUKICAgICMgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzLgogICAgaWYgbmFtZSBpbiBjbHMuX19kaWN0X186CiAgICAgICAgcmV0dXJuIFRydWUKICAgIF9zZXRfcXVhbG5hbWUoY2xzLCB2YWx1ZSkKICAgIHNldGF0dHIoY2xzLCBuYW1lLCB2YWx1ZSkKICAgIHJldHVybiBGYWxzZQoKCiMgRGVjaWRlIGlmL2hvdyB3ZSdyZSBnb2luZyB0byBjcmVhdGUgYSBoYXNoIGZ1bmN0aW9uLiAgS2V5IGlzCiMgKHVuc2FmZV9oYXNoLCBlcSwgZnJvemVuLCBkb2VzLWhhc2gtZXhpc3QpLiAgVmFsdWUgaXMgdGhlIGFjdGlvbiB0bwojIHRha2UuICBUaGUgY29tbW9uIGNhc2UgaXMgdG8gZG8gbm90aGluZywgc28gaW5zdGVhZCBvZiBwcm92aWRpbmcgYQojIGZ1bmN0aW9uIHRoYXQgaXMgYSBuby1vcCwgdXNlIE5vbmUgdG8gc2lnbmlmeSB0aGF0LgoKZGVmIF9oYXNoX3NldF9ub25lKGNscywgZmllbGRzLCBnbG9iYWxzKToKICAgIHJldHVybiBOb25lCgpkZWYgX2hhc2hfYWRkKGNscywgZmllbGRzLCBnbG9iYWxzKToKICAgIGZsZHMgPSBbZiBmb3IgZiBpbiBmaWVsZHMgaWYgKGYuY29tcGFyZSBpZiBmLmhhc2ggaXMgTm9uZSBlbHNlIGYuaGFzaCldCiAgICByZXR1cm4gX3NldF9xdWFsbmFtZShjbHMsIF9oYXNoX2ZuKGZsZHMsIGdsb2JhbHMpKQoKZGVmIF9oYXNoX2V4Y2VwdGlvbihjbHMsIGZpZWxkcywgZ2xvYmFscyk6CiAgICAjIFJhaXNlIGFuIGV4Y2VwdGlvbi4KICAgIHJhaXNlIFR5cGVFcnJvcihmJ0Nhbm5vdCBvdmVyd3JpdGUgYXR0cmlidXRlIF9faGFzaF9fICcKICAgICAgICAgICAgICAgICAgICBmJ2luIGNsYXNzIHtjbHMuX19uYW1lX199JykKCiMKIyAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdW5zYWZlX2hhc2g/CiMgICAgICAgICAgICAgICAgfCAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGVxPwojICAgICAgICAgICAgICAgIHwgICAgICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmcm96ZW4/CiMgICAgICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0gIGhhcy1leHBsaWNpdC1oYXNoPwojICAgICAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwKIyAgICAgICAgICAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICArLS0tLS0tLSAgYWN0aW9uCiMgICAgICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgfAojICAgICAgICAgICAgICAgIHYgICAgICB2ICAgICAgdiAgICAgIHYgICAgICAgIHYKX2hhc2hfYWN0aW9uID0geyhGYWxzZSwgRmFsc2UsIEZhbHNlLCBGYWxzZSk6IE5vbmUsCiAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlLCBGYWxzZSwgVHJ1ZSApOiBOb25lLAogICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSwgVHJ1ZSwgIEZhbHNlKTogTm9uZSwKICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UsIFRydWUsICBUcnVlICk6IE5vbmUsCiAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUsICBGYWxzZSwgRmFsc2UpOiBfaGFzaF9zZXRfbm9uZSwKICAgICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSwgIEZhbHNlLCBUcnVlICk6IE5vbmUsCiAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUsICBUcnVlLCAgRmFsc2UpOiBfaGFzaF9hZGQsCiAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUsICBUcnVlLCAgVHJ1ZSApOiBOb25lLAogICAgICAgICAgICAgICAgKFRydWUsICBGYWxzZSwgRmFsc2UsIEZhbHNlKTogX2hhc2hfYWRkLAogICAgICAgICAgICAgICAgKFRydWUsICBGYWxzZSwgRmFsc2UsIFRydWUgKTogX2hhc2hfZXhjZXB0aW9uLAogICAgICAgICAgICAgICAgKFRydWUsICBGYWxzZSwgVHJ1ZSwgIEZhbHNlKTogX2hhc2hfYWRkLAogICAgICAgICAgICAgICAgKFRydWUsICBGYWxzZSwgVHJ1ZSwgIFRydWUgKTogX2hhc2hfZXhjZXB0aW9uLAogICAgICAgICAgICAgICAgKFRydWUsICBUcnVlLCAgRmFsc2UsIEZhbHNlKTogX2hhc2hfYWRkLAogICAgICAgICAgICAgICAgKFRydWUsICBUcnVlLCAgRmFsc2UsIFRydWUgKTogX2hhc2hfZXhjZXB0aW9uLAogICAgICAgICAgICAgICAgKFRydWUsICBUcnVlLCAgVHJ1ZSwgIEZhbHNlKTogX2hhc2hfYWRkLAogICAgICAgICAgICAgICAgKFRydWUsICBUcnVlLCAgVHJ1ZSwgIFRydWUgKTogX2hhc2hfZXhjZXB0aW9uLAogICAgICAgICAgICAgICAgfQojIFNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMyOTI5I21zZzMxMjgyOSBmb3IgYW4gaWYtc3RhdGVtZW50CiMgdmVyc2lvbiBvZiB0aGlzIHRhYmxlLgoKCmRlZiBfcHJvY2Vzc19jbGFzcyhjbHMsIGluaXQsIHJlcHIsIGVxLCBvcmRlciwgdW5zYWZlX2hhc2gsIGZyb3plbiwKICAgICAgICAgICAgICAgICAgIG1hdGNoX2FyZ3MsIGt3X29ubHksIHNsb3RzLCB3ZWFrcmVmX3Nsb3QpOgogICAgIyBOb3cgdGhhdCBkaWN0cyByZXRhaW4gaW5zZXJ0aW9uIG9yZGVyLCB0aGVyZSdzIG5vIHJlYXNvbiB0byB1c2UKICAgICMgYW4gb3JkZXJlZCBkaWN0LiAgSSBhbSBsZXZlcmFnaW5nIHRoYXQgb3JkZXJpbmcgaGVyZSwgYmVjYXVzZQogICAgIyBkZXJpdmVkIGNsYXNzIGZpZWxkcyBvdmVyd3JpdGUgYmFzZSBjbGFzcyBmaWVsZHMsIGJ1dCB0aGUgb3JkZXIKICAgICMgaXMgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcywgd2hpY2ggaXMgZm91bmQgZmlyc3QuCiAgICBmaWVsZHMgPSB7fQoKICAgIGlmIGNscy5fX21vZHVsZV9fIGluIHN5cy5tb2R1bGVzOgogICAgICAgIGdsb2JhbHMgPSBzeXMubW9kdWxlc1tjbHMuX19tb2R1bGVfX10uX19kaWN0X18KICAgIGVsc2U6CiAgICAgICAgIyBUaGVvcmV0aWNhbGx5IHRoaXMgY2FuIGhhcHBlbiBpZiBzb21lb25lIHdyaXRlcwogICAgICAgICMgYSBjdXN0b20gc3RyaW5nIHRvIGNscy5fX21vZHVsZV9fLiAgSW4gd2hpY2ggY2FzZQogICAgICAgICMgc3VjaCBkYXRhY2xhc3Mgd29uJ3QgYmUgZnVsbHkgaW50cm9zcGVjdGFibGUKICAgICAgICAjICh3LnIudC4gdHlwaW5nLmdldF90eXBlX2hpbnRzKSBidXQgd2lsbCBzdGlsbCBmdW5jdGlvbgogICAgICAgICMgY29ycmVjdGx5LgogICAgICAgIGdsb2JhbHMgPSB7fQoKICAgIHNldGF0dHIoY2xzLCBfUEFSQU1TLCBfRGF0YWNsYXNzUGFyYW1zKGluaXQsIHJlcHIsIGVxLCBvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2FmZV9oYXNoLCBmcm96ZW4pKQoKICAgICMgRmluZCBvdXIgYmFzZSBjbGFzc2VzIGluIHJldmVyc2UgTVJPIG9yZGVyLCBhbmQgZXhjbHVkZQogICAgIyBvdXJzZWx2ZXMuICBJbiByZXZlcnNlZCBvcmRlciBzbyB0aGF0IG1vcmUgZGVyaXZlZCBjbGFzc2VzCiAgICAjIG92ZXJyaWRlIGVhcmxpZXIgZmllbGQgZGVmaW5pdGlvbnMgaW4gYmFzZSBjbGFzc2VzLiAgQXMgbG9uZyBhcwogICAgIyB3ZSdyZSBpdGVyYXRpbmcgb3ZlciB0aGVtLCBzZWUgaWYgYW55IGFyZSBmcm96ZW4uCiAgICBhbnlfZnJvemVuX2Jhc2UgPSBGYWxzZQogICAgaGFzX2RhdGFjbGFzc19iYXNlcyA9IEZhbHNlCiAgICBmb3IgYiBpbiBjbHMuX19tcm9fX1stMTowOi0xXToKICAgICAgICAjIE9ubHkgcHJvY2VzcyBjbGFzc2VzIHRoYXQgaGF2ZSBiZWVuIHByb2Nlc3NlZCBieSBvdXIKICAgICAgICAjIGRlY29yYXRvci4gIFRoYXQgaXMsIHRoZXkgaGF2ZSBhIF9GSUVMRFMgYXR0cmlidXRlLgogICAgICAgIGJhc2VfZmllbGRzID0gZ2V0YXR0cihiLCBfRklFTERTLCBOb25lKQogICAgICAgIGlmIGJhc2VfZmllbGRzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBoYXNfZGF0YWNsYXNzX2Jhc2VzID0gVHJ1ZQogICAgICAgICAgICBmb3IgZiBpbiBiYXNlX2ZpZWxkcy52YWx1ZXMoKToKICAgICAgICAgICAgICAgIGZpZWxkc1tmLm5hbWVdID0gZgogICAgICAgICAgICBpZiBnZXRhdHRyKGIsIF9QQVJBTVMpLmZyb3plbjoKICAgICAgICAgICAgICAgIGFueV9mcm96ZW5fYmFzZSA9IFRydWUKCiAgICAjIEFubm90YXRpb25zIHRoYXQgYXJlIGRlZmluZWQgaW4gdGhpcyBjbGFzcyAobm90IGluIGJhc2UKICAgICMgY2xhc3NlcykuICBJZiBfX2Fubm90YXRpb25zX18gaXNuJ3QgcHJlc2VudCwgdGhlbiB0aGlzIGNsYXNzCiAgICAjIGFkZHMgbm8gbmV3IGFubm90YXRpb25zLiAgV2UgdXNlIHRoaXMgdG8gY29tcHV0ZSBmaWVsZHMgdGhhdCBhcmUKICAgICMgYWRkZWQgYnkgdGhpcyBjbGFzcy4KICAgICMKICAgICMgRmllbGRzIGFyZSBmb3VuZCBmcm9tIGNsc19hbm5vdGF0aW9ucywgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBiZQogICAgIyBvcmRlcmVkLiAgRGVmYXVsdCB2YWx1ZXMgYXJlIGZyb20gY2xhc3MgYXR0cmlidXRlcywgaWYgYSBmaWVsZAogICAgIyBoYXMgYSBkZWZhdWx0LiAgSWYgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBGaWVsZCgpLCB0aGVuIGl0CiAgICAjIGNvbnRhaW5zIGFkZGl0aW9uYWwgaW5mbyBiZXlvbmQgKGFuZCBwb3NzaWJseSBpbmNsdWRpbmcpIHRoZQogICAgIyBhY3R1YWwgZGVmYXVsdCB2YWx1ZS4gIFBzZXVkby1maWVsZHMgQ2xhc3NWYXJzIGFuZCBJbml0VmFycyBhcmUKICAgICMgaW5jbHVkZWQsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGV5J3JlIG5vdCByZWFsIGZpZWxkcy4gIFRoYXQncwogICAgIyBkZWFsdCB3aXRoIGxhdGVyLgogICAgY2xzX2Fubm90YXRpb25zID0gY2xzLl9fZGljdF9fLmdldCgnX19hbm5vdGF0aW9uc19fJywge30pCgogICAgIyBOb3cgZmluZCBmaWVsZHMgaW4gb3VyIGNsYXNzLiAgV2hpbGUgZG9pbmcgc28sIHZhbGlkYXRlIHNvbWUKICAgICMgdGhpbmdzLCBhbmQgc2V0IHRoZSBkZWZhdWx0IHZhbHVlcyAoYXMgY2xhc3MgYXR0cmlidXRlcykgd2hlcmUKICAgICMgd2UgY2FuLgogICAgY2xzX2ZpZWxkcyA9IFtdCiAgICAjIEdldCBhIHJlZmVyZW5jZSB0byB0aGlzIG1vZHVsZSBmb3IgdGhlIF9pc19rd19vbmx5KCkgdGVzdC4KICAgIEtXX09OTFlfc2VlbiA9IEZhbHNlCiAgICBkYXRhY2xhc3NlcyA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQogICAgZm9yIG5hbWUsIHR5cGUgaW4gY2xzX2Fubm90YXRpb25zLml0ZW1zKCk6CiAgICAgICAgIyBTZWUgaWYgdGhpcyBpcyBhIG1hcmtlciB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIGt3X29ubHkuCiAgICAgICAgaWYgKF9pc19rd19vbmx5KHR5cGUsIGRhdGFjbGFzc2VzKQogICAgICAgICAgICBvciAoaXNpbnN0YW5jZSh0eXBlLCBzdHIpCiAgICAgICAgICAgICAgICBhbmQgX2lzX3R5cGUodHlwZSwgY2xzLCBkYXRhY2xhc3NlcywgZGF0YWNsYXNzZXMuS1dfT05MWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaXNfa3dfb25seSkpKToKICAgICAgICAgICAgIyBTd2l0Y2ggdGhlIGRlZmF1bHQgdG8ga3dfb25seT1UcnVlLCBhbmQgaWdub3JlIHRoaXMKICAgICAgICAgICAgIyBhbm5vdGF0aW9uOiBpdCdzIG5vdCBhIHJlYWwgZmllbGQuCiAgICAgICAgICAgIGlmIEtXX09OTFlfc2VlbjoKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ3tuYW1lIXJ9IGlzIEtXX09OTFksIGJ1dCBLV19PTkxZICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGFscmVhZHkgYmVlbiBzcGVjaWZpZWQnKQogICAgICAgICAgICBLV19PTkxZX3NlZW4gPSBUcnVlCiAgICAgICAgICAgIGt3X29ubHkgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBPdGhlcndpc2UgaXQncyBhIGZpZWxkIG9mIHNvbWUgdHlwZS4KICAgICAgICAgICAgY2xzX2ZpZWxkcy5hcHBlbmQoX2dldF9maWVsZChjbHMsIG5hbWUsIHR5cGUsIGt3X29ubHkpKQoKICAgIGZvciBmIGluIGNsc19maWVsZHM6CiAgICAgICAgZmllbGRzW2YubmFtZV0gPSBmCgogICAgICAgICMgSWYgdGhlIGNsYXNzIGF0dHJpYnV0ZSAod2hpY2ggaXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMKICAgICAgICAjIGZpZWxkKSBleGlzdHMgYW5kIGlzIG9mIHR5cGUgJ0ZpZWxkJywgcmVwbGFjZSBpdCB3aXRoIHRoZQogICAgICAgICMgcmVhbCBkZWZhdWx0LiAgVGhpcyBpcyBzbyB0aGF0IG5vcm1hbCBjbGFzcyBpbnRyb3NwZWN0aW9uCiAgICAgICAgIyBzZWVzIGEgcmVhbCBkZWZhdWx0IHZhbHVlLCBub3QgYSBGaWVsZC4KICAgICAgICBpZiBpc2luc3RhbmNlKGdldGF0dHIoY2xzLCBmLm5hbWUsIE5vbmUpLCBGaWVsZCk6CiAgICAgICAgICAgIGlmIGYuZGVmYXVsdCBpcyBNSVNTSU5HOgogICAgICAgICAgICAgICAgIyBJZiB0aGVyZSdzIG5vIGRlZmF1bHQsIGRlbGV0ZSB0aGUgY2xhc3MgYXR0cmlidXRlLgogICAgICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgaWYgd2Ugc3BlY2lmeSBmaWVsZChyZXByPUZhbHNlKSwgZm9yCiAgICAgICAgICAgICAgICAjIGV4YW1wbGUgKHRoYXQgaXMsIHdlIHNwZWNpZmllZCBhIGZpZWxkIG9iamVjdCwgYnV0CiAgICAgICAgICAgICAgICAjIG5vIGRlZmF1bHQgdmFsdWUpLiAgQWxzbyBpZiB3ZSdyZSB1c2luZyBhIGRlZmF1bHQKICAgICAgICAgICAgICAgICMgZmFjdG9yeS4gIFRoZSBjbGFzcyBhdHRyaWJ1dGUgc2hvdWxkIG5vdCBiZSBzZXQgYXQKICAgICAgICAgICAgICAgICMgYWxsIGluIHRoZSBwb3N0LXByb2Nlc3NlZCBjbGFzcy4KICAgICAgICAgICAgICAgIGRlbGF0dHIoY2xzLCBmLm5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZXRhdHRyKGNscywgZi5uYW1lLCBmLmRlZmF1bHQpCgogICAgIyBEbyB3ZSBoYXZlIGFueSBGaWVsZCBtZW1iZXJzIHRoYXQgZG9uJ3QgYWxzbyBoYXZlIGFubm90YXRpb25zPwogICAgZm9yIG5hbWUsIHZhbHVlIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgogICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIEZpZWxkKSBhbmQgbm90IG5hbWUgaW4gY2xzX2Fubm90YXRpb25zOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZid7bmFtZSFyfSBpcyBhIGZpZWxkIGJ1dCBoYXMgbm8gdHlwZSBhbm5vdGF0aW9uJykKCiAgICAjIENoZWNrIHJ1bGVzIHRoYXQgYXBwbHkgaWYgd2UgYXJlIGRlcml2ZWQgZnJvbSBhbnkgZGF0YWNsYXNzZXMuCiAgICBpZiBoYXNfZGF0YWNsYXNzX2Jhc2VzOgogICAgICAgICMgUmFpc2UgYW4gZXhjZXB0aW9uIGlmIGFueSBvZiBvdXIgYmFzZXMgYXJlIGZyb3plbiwgYnV0IHdlJ3JlIG5vdC4KICAgICAgICBpZiBhbnlfZnJvemVuX2Jhc2UgYW5kIG5vdCBmcm96ZW46CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignY2Fubm90IGluaGVyaXQgbm9uLWZyb3plbiBkYXRhY2xhc3MgZnJvbSBhICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm96ZW4gb25lJykKCiAgICAgICAgIyBSYWlzZSBhbiBleGNlcHRpb24gaWYgd2UncmUgZnJvemVuLCBidXQgbm9uZSBvZiBvdXIgYmFzZXMgYXJlLgogICAgICAgIGlmIG5vdCBhbnlfZnJvemVuX2Jhc2UgYW5kIGZyb3plbjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdjYW5ub3QgaW5oZXJpdCBmcm96ZW4gZGF0YWNsYXNzIGZyb20gYSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9uLWZyb3plbiBvbmUnKQoKICAgICMgUmVtZW1iZXIgYWxsIG9mIHRoZSBmaWVsZHMgb24gb3VyIGNsYXNzIChpbmNsdWRpbmcgYmFzZXMpLiAgVGhpcwogICAgIyBhbHNvIG1hcmtzIHRoaXMgY2xhc3MgYXMgYmVpbmcgYSBkYXRhY2xhc3MuCiAgICBzZXRhdHRyKGNscywgX0ZJRUxEUywgZmllbGRzKQoKICAgICMgV2FzIHRoaXMgY2xhc3MgZGVmaW5lZCB3aXRoIGFuIGV4cGxpY2l0IF9faGFzaF9fPyAgTm90ZSB0aGF0IGlmCiAgICAjIF9fZXFfXyBpcyBkZWZpbmVkIGluIHRoaXMgY2xhc3MsIHRoZW4gcHl0aG9uIHdpbGwgYXV0b21hdGljYWxseQogICAgIyBzZXQgX19oYXNoX18gdG8gTm9uZS4gIFRoaXMgaXMgYSBoZXVyaXN0aWMsIGFzIGl0J3MgcG9zc2libGUKICAgICMgdGhhdCBzdWNoIGEgX19oYXNoX18gPT0gTm9uZSB3YXMgbm90IGF1dG8tZ2VuZXJhdGVkLCBidXQgaXQKICAgICMgY2xvc2UgZW5vdWdoLgogICAgY2xhc3NfaGFzaCA9IGNscy5fX2RpY3RfXy5nZXQoJ19faGFzaF9fJywgTUlTU0lORykKICAgIGhhc19leHBsaWNpdF9oYXNoID0gbm90IChjbGFzc19oYXNoIGlzIE1JU1NJTkcgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3NfaGFzaCBpcyBOb25lIGFuZCAnX19lcV9fJyBpbiBjbHMuX19kaWN0X18pKQoKICAgICMgSWYgd2UncmUgZ2VuZXJhdGluZyBvcmRlcmluZyBtZXRob2RzLCB3ZSBtdXN0IGJlIGdlbmVyYXRpbmcgdGhlCiAgICAjIGVxIG1ldGhvZHMuCiAgICBpZiBvcmRlciBhbmQgbm90IGVxOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2VxIG11c3QgYmUgdHJ1ZSBpZiBvcmRlciBpcyB0cnVlJykKCiAgICAjIEluY2x1ZGUgSW5pdFZhcnMgYW5kIHJlZ3VsYXIgZmllbGRzIChzbywgbm90IENsYXNzVmFycykuICBUaGlzIGlzCiAgICAjIGluaXRpYWxpemVkIGhlcmUsIG91dHNpZGUgb2YgdGhlICJpZiBpbml0OiIgdGVzdCwgYmVjYXVzZSBzdGRfaW5pdF9maWVsZHMKICAgICMgaXMgdXNlZCB3aXRoIG1hdGNoX2FyZ3MsIGJlbG93LgogICAgYWxsX2luaXRfZmllbGRzID0gW2YgZm9yIGYgaW4gZmllbGRzLnZhbHVlcygpCiAgICAgICAgICAgICAgICAgICAgICAgaWYgZi5fZmllbGRfdHlwZSBpbiAoX0ZJRUxELCBfRklFTERfSU5JVFZBUildCiAgICAoc3RkX2luaXRfZmllbGRzLAogICAgIGt3X29ubHlfaW5pdF9maWVsZHMpID0gX2ZpZWxkc19pbl9pbml0X29yZGVyKGFsbF9pbml0X2ZpZWxkcykKCiAgICBpZiBpbml0OgogICAgICAgICMgRG9lcyB0aGlzIGNsYXNzIGhhdmUgYSBwb3N0LWluaXQgZnVuY3Rpb24/CiAgICAgICAgaGFzX3Bvc3RfaW5pdCA9IGhhc2F0dHIoY2xzLCBfUE9TVF9JTklUX05BTUUpCgogICAgICAgIF9zZXRfbmV3X2F0dHJpYnV0ZShjbHMsICdfX2luaXRfXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbml0X2ZuKGFsbF9pbml0X2ZpZWxkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkX2luaXRfZmllbGRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd19vbmx5X2luaXRfZmllbGRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm96ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19wb3N0X2luaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgInNlbGYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGFyYW0gaW4gX19pbml0X18uICBVc2UgInNlbGYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgcG9zc2libGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2RhdGFjbGFzc19zZWxmX18nIGlmICdzZWxmJyBpbiBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICdzZWxmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKCiAgICAjIEdldCB0aGUgZmllbGRzIGFzIGEgbGlzdCwgYW5kIGluY2x1ZGUgb25seSByZWFsIGZpZWxkcy4gIFRoaXMgaXMKICAgICMgdXNlZCBpbiBhbGwgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzLgogICAgZmllbGRfbGlzdCA9IFtmIGZvciBmIGluIGZpZWxkcy52YWx1ZXMoKSBpZiBmLl9maWVsZF90eXBlIGlzIF9GSUVMRF0KCiAgICBpZiByZXByOgogICAgICAgIGZsZHMgPSBbZiBmb3IgZiBpbiBmaWVsZF9saXN0IGlmIGYucmVwcl0KICAgICAgICBfc2V0X25ld19hdHRyaWJ1dGUoY2xzLCAnX19yZXByX18nLCBfcmVwcl9mbihmbGRzLCBnbG9iYWxzKSkKCiAgICBpZiBlcToKICAgICAgICAjIENyZWF0ZSBfX2VxX18gbWV0aG9kLiAgVGhlcmUncyBubyBuZWVkIGZvciBhIF9fbmVfXyBtZXRob2QsCiAgICAgICAgIyBzaW5jZSBweXRob24gd2lsbCBjYWxsIF9fZXFfXyBhbmQgbmVnYXRlIGl0LgogICAgICAgIGZsZHMgPSBbZiBmb3IgZiBpbiBmaWVsZF9saXN0IGlmIGYuY29tcGFyZV0KICAgICAgICBzZWxmX3R1cGxlID0gX3R1cGxlX3N0cignc2VsZicsIGZsZHMpCiAgICAgICAgb3RoZXJfdHVwbGUgPSBfdHVwbGVfc3RyKCdvdGhlcicsIGZsZHMpCiAgICAgICAgX3NldF9uZXdfYXR0cmlidXRlKGNscywgJ19fZXFfXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbXBfZm4oJ19fZXFfXycsICc9PScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZl90dXBsZSwgb3RoZXJfdHVwbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKSkKCiAgICBpZiBvcmRlcjoKICAgICAgICAjIENyZWF0ZSBhbmQgc2V0IHRoZSBvcmRlcmluZyBtZXRob2RzLgogICAgICAgIGZsZHMgPSBbZiBmb3IgZiBpbiBmaWVsZF9saXN0IGlmIGYuY29tcGFyZV0KICAgICAgICBzZWxmX3R1cGxlID0gX3R1cGxlX3N0cignc2VsZicsIGZsZHMpCiAgICAgICAgb3RoZXJfdHVwbGUgPSBfdHVwbGVfc3RyKCdvdGhlcicsIGZsZHMpCiAgICAgICAgZm9yIG5hbWUsIG9wIGluIFsoJ19fbHRfXycsICc8JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAoJ19fbGVfXycsICc8PScpLAogICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2d0X18nLCAnPicpLAogICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2dlX18nLCAnPj0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgIF06CiAgICAgICAgICAgIGlmIF9zZXRfbmV3X2F0dHJpYnV0ZShjbHMsIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY21wX2ZuKG5hbWUsIG9wLCBzZWxmX3R1cGxlLCBvdGhlcl90dXBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKSk6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidDYW5ub3Qgb3ZlcndyaXRlIGF0dHJpYnV0ZSB7bmFtZX0gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYnaW4gY2xhc3Mge2Nscy5fX25hbWVfX30uIENvbnNpZGVyIHVzaW5nICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nJykKCiAgICBpZiBmcm96ZW46CiAgICAgICAgZm9yIGZuIGluIF9mcm96ZW5fZ2V0X2RlbF9hdHRyKGNscywgZmllbGRfbGlzdCwgZ2xvYmFscyk6CiAgICAgICAgICAgIGlmIF9zZXRfbmV3X2F0dHJpYnV0ZShjbHMsIGZuLl9fbmFtZV9fLCBmbik6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidDYW5ub3Qgb3ZlcndyaXRlIGF0dHJpYnV0ZSB7Zm4uX19uYW1lX199ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJ2luIGNsYXNzIHtjbHMuX19uYW1lX199JykKCiAgICAjIERlY2lkZSBpZi9ob3cgd2UncmUgZ29pbmcgdG8gY3JlYXRlIGEgaGFzaCBmdW5jdGlvbi4KICAgIGhhc2hfYWN0aW9uID0gX2hhc2hfYWN0aW9uW2Jvb2wodW5zYWZlX2hhc2gpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbChlcSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKGZyb3plbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfZXhwbGljaXRfaGFzaF0KICAgIGlmIGhhc2hfYWN0aW9uOgogICAgICAgICMgTm8gbmVlZCB0byBjYWxsIF9zZXRfbmV3X2F0dHJpYnV0ZSBoZXJlLCBzaW5jZSBieSB0aGUgdGltZQogICAgICAgICMgd2UncmUgaGVyZSB0aGUgb3ZlcndyaXRpbmcgaXMgdW5jb25kaXRpb25hbC4KICAgICAgICBjbHMuX19oYXNoX18gPSBoYXNoX2FjdGlvbihjbHMsIGZpZWxkX2xpc3QsIGdsb2JhbHMpCgogICAgaWYgbm90IGdldGF0dHIoY2xzLCAnX19kb2NfXycpOgogICAgICAgICMgQ3JlYXRlIGEgY2xhc3MgZG9jLXN0cmluZy4KICAgICAgICBjbHMuX19kb2NfXyA9IChjbHMuX19uYW1lX18gKwogICAgICAgICAgICAgICAgICAgICAgIHN0cihpbnNwZWN0LnNpZ25hdHVyZShjbHMpKS5yZXBsYWNlKCcgLT4gTm9uZScsICcnKSkKCiAgICBpZiBtYXRjaF9hcmdzOgogICAgICAgICMgSSBjb3VsZCBwcm9iYWJseSBjb21wdXRlIHRoaXMgb25jZQogICAgICAgIF9zZXRfbmV3X2F0dHJpYnV0ZShjbHMsICdfX21hdGNoX2FyZ3NfXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlKGYubmFtZSBmb3IgZiBpbiBzdGRfaW5pdF9maWVsZHMpKQoKICAgICMgSXQncyBhbiBlcnJvciB0byBzcGVjaWZ5IHdlYWtyZWZfc2xvdCBpZiBzbG90cyBpcyBGYWxzZS4KICAgIGlmIHdlYWtyZWZfc2xvdCBhbmQgbm90IHNsb3RzOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignd2Vha3JlZl9zbG90IGlzIFRydWUgYnV0IHNsb3RzIGlzIEZhbHNlJykKICAgIGlmIHNsb3RzOgogICAgICAgIGNscyA9IF9hZGRfc2xvdHMoY2xzLCBmcm96ZW4sIHdlYWtyZWZfc2xvdCkKCiAgICBhYmMudXBkYXRlX2Fic3RyYWN0bWV0aG9kcyhjbHMpCgogICAgcmV0dXJuIGNscwoKCiMgX2RhdGFjbGFzc19nZXRzdGF0ZSBhbmQgX2RhdGFjbGFzc19zZXRzdGF0ZSBhcmUgbmVlZGVkIGZvciBwaWNrbGluZyBmcm96ZW4KIyBjbGFzc2VzIHdpdGggc2xvdHMuICBUaGVzZSBjb3VsZCBiZSBzbGlnaHRseSBtb3JlIHBlcmZvcm1hbnQgaWYgd2UgZ2VuZXJhdGVkCiMgdGhlIGNvZGUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgb3ZlciBmaWVsZHMuICBCdXQgdGhhdCBjYW4gYmUgYSBwcm9qZWN0IGZvcgojIGFub3RoZXIgZGF5LCBpZiBwZXJmb3JtYW5jZSBiZWNvbWVzIGFuIGlzc3VlLgpkZWYgX2RhdGFjbGFzc19nZXRzdGF0ZShzZWxmKToKICAgIHJldHVybiBbZ2V0YXR0cihzZWxmLCBmLm5hbWUpIGZvciBmIGluIGZpZWxkcyhzZWxmKV0KCgpkZWYgX2RhdGFjbGFzc19zZXRzdGF0ZShzZWxmLCBzdGF0ZSk6CiAgICBmb3IgZmllbGQsIHZhbHVlIGluIHppcChmaWVsZHMoc2VsZiksIHN0YXRlKToKICAgICAgICAjIHVzZSBzZXRhdHRyIGJlY2F1c2UgZGF0YWNsYXNzIG1heSBiZSBmcm96ZW4KICAgICAgICBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgZmllbGQubmFtZSwgdmFsdWUpCgoKZGVmIF9nZXRfc2xvdHMoY2xzKToKICAgIG1hdGNoIGNscy5fX2RpY3RfXy5nZXQoJ19fc2xvdHNfXycpOgogICAgICAgIGNhc2UgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgY2FzZSBzdHIoc2xvdCk6CiAgICAgICAgICAgIHlpZWxkIHNsb3QKICAgICAgICAjIFNsb3RzIG1heSBiZSBhbnkgaXRlcmFibGUsIGJ1dCB3ZSBjYW5ub3QgaGFuZGxlIGFuIGl0ZXJhdG9yCiAgICAgICAgIyBiZWNhdXNlIGl0IHdpbGwgYWxyZWFkeSBiZSAocGFydGlhbGx5KSBjb25zdW1lZC4KICAgICAgICBjYXNlIGl0ZXJhYmxlIGlmIG5vdCBoYXNhdHRyKGl0ZXJhYmxlLCAnX19uZXh0X18nKToKICAgICAgICAgICAgeWllbGQgZnJvbSBpdGVyYWJsZQogICAgICAgIGNhc2UgXzoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiU2xvdHMgb2YgJ3tjbHMuX19uYW1lX199JyBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIpCgoKZGVmIF9hZGRfc2xvdHMoY2xzLCBpc19mcm96ZW4sIHdlYWtyZWZfc2xvdCk6CiAgICAjIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGNsYXNzLCBzaW5jZSB3ZSBjYW4ndCBzZXQgX19zbG90c19fCiAgICAjICBhZnRlciBhIGNsYXNzIGhhcyBiZWVuIGNyZWF0ZWQuCgogICAgIyBNYWtlIHN1cmUgX19zbG90c19fIGlzbid0IGFscmVhZHkgc2V0LgogICAgaWYgJ19fc2xvdHNfXycgaW4gY2xzLl9fZGljdF9fOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ3tjbHMuX19uYW1lX199IGFscmVhZHkgc3BlY2lmaWVzIF9fc2xvdHNfXycpCgogICAgIyBDcmVhdGUgYSBuZXcgZGljdCBmb3Igb3VyIG5ldyBjbGFzcy4KICAgIGNsc19kaWN0ID0gZGljdChjbHMuX19kaWN0X18pCiAgICBmaWVsZF9uYW1lcyA9IHR1cGxlKGYubmFtZSBmb3IgZiBpbiBmaWVsZHMoY2xzKSkKICAgICMgTWFrZSBzdXJlIHNsb3RzIGRvbid0IG92ZXJsYXAgd2l0aCB0aG9zZSBpbiBiYXNlIGNsYXNzZXMuCiAgICBpbmhlcml0ZWRfc2xvdHMgPSBzZXQoCiAgICAgICAgaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUobWFwKF9nZXRfc2xvdHMsIGNscy5fX21yb19fWzE6LTFdKSkKICAgICkKICAgICMgVGhlIHNsb3RzIGZvciBvdXIgY2xhc3MuICBSZW1vdmUgc2xvdHMgZnJvbSBvdXIgYmFzZSBjbGFzc2VzLiAgQWRkCiAgICAjICdfX3dlYWtyZWZfXycgaWYgd2Vha3JlZl9zbG90IHdhcyBnaXZlbiwgdW5sZXNzIGl0IGlzIGFscmVhZHkgcHJlc2VudC4KICAgIGNsc19kaWN0WyJfX3Nsb3RzX18iXSA9IHR1cGxlKAogICAgICAgIGl0ZXJ0b29scy5maWx0ZXJmYWxzZSgKICAgICAgICAgICAgaW5oZXJpdGVkX3Nsb3RzLl9fY29udGFpbnNfXywKICAgICAgICAgICAgaXRlcnRvb2xzLmNoYWluKAogICAgICAgICAgICAgICAgIyBnaC05MzUyMTogJ19fd2Vha3JlZl9fJyBhbHNvIG5lZWRzIHRvIGJlIGZpbHRlcmVkIG91dCBpZgogICAgICAgICAgICAgICAgIyBhbHJlYWR5IHByZXNlbnQgaW4gaW5oZXJpdGVkX3Nsb3RzCiAgICAgICAgICAgICAgICBmaWVsZF9uYW1lcywgKCdfX3dlYWtyZWZfXycsKSBpZiB3ZWFrcmVmX3Nsb3QgZWxzZSAoKQogICAgICAgICAgICApCiAgICAgICAgKSwKICAgICkKCiAgICBmb3IgZmllbGRfbmFtZSBpbiBmaWVsZF9uYW1lczoKICAgICAgICAjIFJlbW92ZSBvdXIgYXR0cmlidXRlcywgaWYgcHJlc2VudC4gVGhleSdsbCBzdGlsbCBiZQogICAgICAgICMgIGF2YWlsYWJsZSBpbiBfTUFSS0VSLgogICAgICAgIGNsc19kaWN0LnBvcChmaWVsZF9uYW1lLCBOb25lKQoKICAgICMgUmVtb3ZlIF9fZGljdF9fIGl0c2VsZi4KICAgIGNsc19kaWN0LnBvcCgnX19kaWN0X18nLCBOb25lKQoKICAgICMgQW5kIGZpbmFsbHkgY3JlYXRlIHRoZSBjbGFzcy4KICAgIHF1YWxuYW1lID0gZ2V0YXR0cihjbHMsICdfX3F1YWxuYW1lX18nLCBOb25lKQogICAgY2xzID0gdHlwZShjbHMpKGNscy5fX25hbWVfXywgY2xzLl9fYmFzZXNfXywgY2xzX2RpY3QpCiAgICBpZiBxdWFsbmFtZSBpcyBub3QgTm9uZToKICAgICAgICBjbHMuX19xdWFsbmFtZV9fID0gcXVhbG5hbWUKCiAgICBpZiBpc19mcm96ZW46CiAgICAgICAgIyBOZWVkIHRoaXMgZm9yIHBpY2tsaW5nIGZyb3plbiBjbGFzc2VzIHdpdGggc2xvdHMuCiAgICAgICAgY2xzLl9fZ2V0c3RhdGVfXyA9IF9kYXRhY2xhc3NfZ2V0c3RhdGUKICAgICAgICBjbHMuX19zZXRzdGF0ZV9fID0gX2RhdGFjbGFzc19zZXRzdGF0ZQoKICAgIHJldHVybiBjbHMKCgpkZWYgZGF0YWNsYXNzKGNscz1Ob25lLCAvLCAqLCBpbml0PVRydWUsIHJlcHI9VHJ1ZSwgZXE9VHJ1ZSwgb3JkZXI9RmFsc2UsCiAgICAgICAgICAgICAgdW5zYWZlX2hhc2g9RmFsc2UsIGZyb3plbj1GYWxzZSwgbWF0Y2hfYXJncz1UcnVlLAogICAgICAgICAgICAgIGt3X29ubHk9RmFsc2UsIHNsb3RzPUZhbHNlLCB3ZWFrcmVmX3Nsb3Q9RmFsc2UpOgogICAgIiIiQWRkIGR1bmRlciBtZXRob2RzIGJhc2VkIG9uIHRoZSBmaWVsZHMgZGVmaW5lZCBpbiB0aGUgY2xhc3MuCgogICAgRXhhbWluZXMgUEVQIDUyNiBfX2Fubm90YXRpb25zX18gdG8gZGV0ZXJtaW5lIGZpZWxkcy4KCiAgICBJZiBpbml0IGlzIHRydWUsIGFuIF9faW5pdF9fKCkgbWV0aG9kIGlzIGFkZGVkIHRvIHRoZSBjbGFzcy4gSWYgcmVwcgogICAgaXMgdHJ1ZSwgYSBfX3JlcHJfXygpIG1ldGhvZCBpcyBhZGRlZC4gSWYgb3JkZXIgaXMgdHJ1ZSwgcmljaAogICAgY29tcGFyaXNvbiBkdW5kZXIgbWV0aG9kcyBhcmUgYWRkZWQuIElmIHVuc2FmZV9oYXNoIGlzIHRydWUsIGEKICAgIF9faGFzaF9fKCkgbWV0aG9kIGlzIGFkZGVkLiBJZiBmcm96ZW4gaXMgdHJ1ZSwgZmllbGRzIG1heSBub3QgYmUKICAgIGFzc2lnbmVkIHRvIGFmdGVyIGluc3RhbmNlIGNyZWF0aW9uLiBJZiBtYXRjaF9hcmdzIGlzIHRydWUsIHRoZQogICAgX19tYXRjaF9hcmdzX18gdHVwbGUgaXMgYWRkZWQuIElmIGt3X29ubHkgaXMgdHJ1ZSwgdGhlbiBieSBkZWZhdWx0CiAgICBhbGwgZmllbGRzIGFyZSBrZXl3b3JkLW9ubHkuIElmIHNsb3RzIGlzIHRydWUsIGEgbmV3IGNsYXNzIHdpdGggYQogICAgX19zbG90c19fIGF0dHJpYnV0ZSBpcyByZXR1cm5lZC4KICAgICIiIgoKICAgIGRlZiB3cmFwKGNscyk6CiAgICAgICAgcmV0dXJuIF9wcm9jZXNzX2NsYXNzKGNscywgaW5pdCwgcmVwciwgZXEsIG9yZGVyLCB1bnNhZmVfaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvemVuLCBtYXRjaF9hcmdzLCBrd19vbmx5LCBzbG90cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha3JlZl9zbG90KQoKICAgICMgU2VlIGlmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBAZGF0YWNsYXNzIG9yIEBkYXRhY2xhc3MoKS4KICAgIGlmIGNscyBpcyBOb25lOgogICAgICAgICMgV2UncmUgY2FsbGVkIHdpdGggcGFyZW5zLgogICAgICAgIHJldHVybiB3cmFwCgogICAgIyBXZSdyZSBjYWxsZWQgYXMgQGRhdGFjbGFzcyB3aXRob3V0IHBhcmVucy4KICAgIHJldHVybiB3cmFwKGNscykKCgpkZWYgZmllbGRzKGNsYXNzX29yX2luc3RhbmNlKToKICAgICIiIlJldHVybiBhIHR1cGxlIGRlc2NyaWJpbmcgdGhlIGZpZWxkcyBvZiB0aGlzIGRhdGFjbGFzcy4KCiAgICBBY2NlcHRzIGEgZGF0YWNsYXNzIG9yIGFuIGluc3RhbmNlIG9mIG9uZS4gVHVwbGUgZWxlbWVudHMgYXJlIG9mCiAgICB0eXBlIEZpZWxkLgogICAgIiIiCgogICAgIyBNaWdodCBpdCBiZSB3b3J0aCBjYWNoaW5nIHRoaXMsIHBlciBjbGFzcz8KICAgIHRyeToKICAgICAgICBmaWVsZHMgPSBnZXRhdHRyKGNsYXNzX29yX2luc3RhbmNlLCBfRklFTERTKQogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGRhdGFjbGFzcyB0eXBlIG9yIGluc3RhbmNlJykKCiAgICAjIEV4Y2x1ZGUgcHNldWRvLWZpZWxkcy4gIE5vdGUgdGhhdCBmaWVsZHMgaXMgc29ydGVkIGJ5IGluc2VydGlvbgogICAgIyBvcmRlciwgc28gdGhlIG9yZGVyIG9mIHRoZSB0dXBsZSBpcyBhcyB0aGUgZmllbGRzIHdlcmUgZGVmaW5lZC4KICAgIHJldHVybiB0dXBsZShmIGZvciBmIGluIGZpZWxkcy52YWx1ZXMoKSBpZiBmLl9maWVsZF90eXBlIGlzIF9GSUVMRCkKCgpkZWYgX2lzX2RhdGFjbGFzc19pbnN0YW5jZShvYmopOgogICAgIiIiUmV0dXJucyBUcnVlIGlmIG9iaiBpcyBhbiBpbnN0YW5jZSBvZiBhIGRhdGFjbGFzcy4iIiIKICAgIHJldHVybiBoYXNhdHRyKHR5cGUob2JqKSwgX0ZJRUxEUykKCgpkZWYgaXNfZGF0YWNsYXNzKG9iaik6CiAgICAiIiJSZXR1cm5zIFRydWUgaWYgb2JqIGlzIGEgZGF0YWNsYXNzIG9yIGFuIGluc3RhbmNlIG9mIGEKICAgIGRhdGFjbGFzcy4iIiIKICAgIGNscyA9IG9iaiBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZSkgZWxzZSB0eXBlKG9iaikKICAgIHJldHVybiBoYXNhdHRyKGNscywgX0ZJRUxEUykKCgpkZWYgYXNkaWN0KG9iaiwgKiwgZGljdF9mYWN0b3J5PWRpY3QpOgogICAgIiIiUmV0dXJuIHRoZSBmaWVsZHMgb2YgYSBkYXRhY2xhc3MgaW5zdGFuY2UgYXMgYSBuZXcgZGljdGlvbmFyeSBtYXBwaW5nCiAgICBmaWVsZCBuYW1lcyB0byBmaWVsZCB2YWx1ZXMuCgogICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICBAZGF0YWNsYXNzCiAgICAgIGNsYXNzIEM6CiAgICAgICAgICB4OiBpbnQKICAgICAgICAgIHk6IGludAoKICAgICAgYyA9IEMoMSwgMikKICAgICAgYXNzZXJ0IGFzZGljdChjKSA9PSB7J3gnOiAxLCAneSc6IDJ9CgogICAgSWYgZ2l2ZW4sICdkaWN0X2ZhY3RvcnknIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGJ1aWx0LWluIGRpY3QuCiAgICBUaGUgZnVuY3Rpb24gYXBwbGllcyByZWN1cnNpdmVseSB0byBmaWVsZCB2YWx1ZXMgdGhhdCBhcmUKICAgIGRhdGFjbGFzcyBpbnN0YW5jZXMuIFRoaXMgd2lsbCBhbHNvIGxvb2sgaW50byBidWlsdC1pbiBjb250YWluZXJzOgogICAgdHVwbGVzLCBsaXN0cywgYW5kIGRpY3RzLgogICAgIiIiCiAgICBpZiBub3QgX2lzX2RhdGFjbGFzc19pbnN0YW5jZShvYmopOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXNkaWN0KCkgc2hvdWxkIGJlIGNhbGxlZCBvbiBkYXRhY2xhc3MgaW5zdGFuY2VzIikKICAgIHJldHVybiBfYXNkaWN0X2lubmVyKG9iaiwgZGljdF9mYWN0b3J5KQoKCmRlZiBfYXNkaWN0X2lubmVyKG9iaiwgZGljdF9mYWN0b3J5KToKICAgIGlmIF9pc19kYXRhY2xhc3NfaW5zdGFuY2Uob2JqKToKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIGZvciBmIGluIGZpZWxkcyhvYmopOgogICAgICAgICAgICB2YWx1ZSA9IF9hc2RpY3RfaW5uZXIoZ2V0YXR0cihvYmosIGYubmFtZSksIGRpY3RfZmFjdG9yeSkKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoZi5uYW1lLCB2YWx1ZSkpCiAgICAgICAgcmV0dXJuIGRpY3RfZmFjdG9yeShyZXN1bHQpCiAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCB0dXBsZSkgYW5kIGhhc2F0dHIob2JqLCAnX2ZpZWxkcycpOgogICAgICAgICMgb2JqIGlzIGEgbmFtZWR0dXBsZS4gIFJlY3Vyc2UgaW50byBpdCwgYnV0IHRoZSByZXR1cm5lZAogICAgICAgICMgb2JqZWN0IGlzIGFub3RoZXIgbmFtZWR0dXBsZSBvZiB0aGUgc2FtZSB0eXBlLiAgVGhpcyBpcwogICAgICAgICMgc2ltaWxhciB0byBob3cgb3RoZXIgbGlzdC0gb3IgdHVwbGUtZGVyaXZlZCBjbGFzc2VzIGFyZQogICAgICAgICMgdHJlYXRlZCAoc2VlIGJlbG93KSwgYnV0IHdlIGp1c3QgbmVlZCB0byBjcmVhdGUgdGhlbQogICAgICAgICMgZGlmZmVyZW50bHkgYmVjYXVzZSBhIG5hbWVkdHVwbGUncyBfX2luaXRfXyBuZWVkcyB0byBiZQogICAgICAgICMgY2FsbGVkIGRpZmZlcmVudGx5IChzZWUgYnBvLTM0MzYzKS4KCiAgICAgICAgIyBJJ20gbm90IHVzaW5nIG5hbWVkdHVwbGUncyBfYXNkaWN0KCkKICAgICAgICAjIG1ldGhvZCwgYmVjYXVzZToKICAgICAgICAjIC0gaXQgZG9lcyBub3QgcmVjdXJzZSBpbiB0byB0aGUgbmFtZWR0dXBsZSBmaWVsZHMgYW5kCiAgICAgICAgIyAgIGNvbnZlcnQgdGhlbSB0byBkaWN0cyAodXNpbmcgZGljdF9mYWN0b3J5KS4KICAgICAgICAjIC0gSSBkb24ndCBhY3R1YWxseSB3YW50IHRvIHJldHVybiBhIGRpY3QgaGVyZS4gIFRoZSBtYWluCiAgICAgICAgIyAgIHVzZSBjYXNlIGhlcmUgaXMganNvbi5kdW1wcywgYW5kIGl0IGhhbmRsZXMgY29udmVydGluZwogICAgICAgICMgICBuYW1lZHR1cGxlcyB0byBsaXN0cy4gIEFkbWl0dGVkbHkgd2UncmUgbG9zaW5nIHNvbWUKICAgICAgICAjICAgaW5mb3JtYXRpb24gaGVyZSB3aGVuIHdlIHByb2R1Y2UgYSBqc29uIGxpc3QgaW5zdGVhZCBvZiBhCiAgICAgICAgIyAgIGRpY3QuICBOb3RlIHRoYXQgaWYgd2UgcmV0dXJuZWQgZGljdHMgaGVyZSBpbnN0ZWFkIG9mCiAgICAgICAgIyAgIG5hbWVkdHVwbGVzLCB3ZSBjb3VsZCBubyBsb25nZXIgY2FsbCBhc2RpY3QoKSBvbiBhIGRhdGEKICAgICAgICAjICAgc3RydWN0dXJlIHdoZXJlIGEgbmFtZWR0dXBsZSB3YXMgdXNlZCBhcyBhIGRpY3Qga2V5LgoKICAgICAgICByZXR1cm4gdHlwZShvYmopKCpbX2FzZGljdF9pbm5lcih2LCBkaWN0X2ZhY3RvcnkpIGZvciB2IGluIG9ial0pCiAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCAobGlzdCwgdHVwbGUpKToKICAgICAgICAjIEFzc3VtZSB3ZSBjYW4gY3JlYXRlIGFuIG9iamVjdCBvZiB0aGlzIHR5cGUgYnkgcGFzc2luZyBpbiBhCiAgICAgICAgIyBnZW5lcmF0b3IgKHdoaWNoIGlzIG5vdCB0cnVlIGZvciBuYW1lZHR1cGxlcywgaGFuZGxlZAogICAgICAgICMgYWJvdmUpLgogICAgICAgIHJldHVybiB0eXBlKG9iaikoX2FzZGljdF9pbm5lcih2LCBkaWN0X2ZhY3RvcnkpIGZvciB2IGluIG9iaikKICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIGRpY3QpOgogICAgICAgIHJldHVybiB0eXBlKG9iaikoKF9hc2RpY3RfaW5uZXIoaywgZGljdF9mYWN0b3J5KSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfYXNkaWN0X2lubmVyKHYsIGRpY3RfZmFjdG9yeSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBvYmouaXRlbXMoKSkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGNvcHkuZGVlcGNvcHkob2JqKQoKCmRlZiBhc3R1cGxlKG9iaiwgKiwgdHVwbGVfZmFjdG9yeT10dXBsZSk6CiAgICAiIiJSZXR1cm4gdGhlIGZpZWxkcyBvZiBhIGRhdGFjbGFzcyBpbnN0YW5jZSBhcyBhIG5ldyB0dXBsZSBvZiBmaWVsZCB2YWx1ZXMuCgogICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICBAZGF0YWNsYXNzCiAgICAgIGNsYXNzIEM6CiAgICAgICAgICB4OiBpbnQKICAgICAgICAgIHk6IGludAoKICAgICAgYyA9IEMoMSwgMikKICAgICAgYXNzZXJ0IGFzdHVwbGUoYykgPT0gKDEsIDIpCgogICAgSWYgZ2l2ZW4sICd0dXBsZV9mYWN0b3J5JyB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBidWlsdC1pbiB0dXBsZS4KICAgIFRoZSBmdW5jdGlvbiBhcHBsaWVzIHJlY3Vyc2l2ZWx5IHRvIGZpZWxkIHZhbHVlcyB0aGF0IGFyZQogICAgZGF0YWNsYXNzIGluc3RhbmNlcy4gVGhpcyB3aWxsIGFsc28gbG9vayBpbnRvIGJ1aWx0LWluIGNvbnRhaW5lcnM6CiAgICB0dXBsZXMsIGxpc3RzLCBhbmQgZGljdHMuCiAgICAiIiIKCiAgICBpZiBub3QgX2lzX2RhdGFjbGFzc19pbnN0YW5jZShvYmopOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXN0dXBsZSgpIHNob3VsZCBiZSBjYWxsZWQgb24gZGF0YWNsYXNzIGluc3RhbmNlcyIpCiAgICByZXR1cm4gX2FzdHVwbGVfaW5uZXIob2JqLCB0dXBsZV9mYWN0b3J5KQoKCmRlZiBfYXN0dXBsZV9pbm5lcihvYmosIHR1cGxlX2ZhY3RvcnkpOgogICAgaWYgX2lzX2RhdGFjbGFzc19pbnN0YW5jZShvYmopOgogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgZm9yIGYgaW4gZmllbGRzKG9iaik6CiAgICAgICAgICAgIHZhbHVlID0gX2FzdHVwbGVfaW5uZXIoZ2V0YXR0cihvYmosIGYubmFtZSksIHR1cGxlX2ZhY3RvcnkpCiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWUpCiAgICAgICAgcmV0dXJuIHR1cGxlX2ZhY3RvcnkocmVzdWx0KQogICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgdHVwbGUpIGFuZCBoYXNhdHRyKG9iaiwgJ19maWVsZHMnKToKICAgICAgICAjIG9iaiBpcyBhIG5hbWVkdHVwbGUuICBSZWN1cnNlIGludG8gaXQsIGJ1dCB0aGUgcmV0dXJuZWQKICAgICAgICAjIG9iamVjdCBpcyBhbm90aGVyIG5hbWVkdHVwbGUgb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaXMKICAgICAgICAjIHNpbWlsYXIgdG8gaG93IG90aGVyIGxpc3QtIG9yIHR1cGxlLWRlcml2ZWQgY2xhc3NlcyBhcmUKICAgICAgICAjIHRyZWF0ZWQgKHNlZSBiZWxvdyksIGJ1dCB3ZSBqdXN0IG5lZWQgdG8gY3JlYXRlIHRoZW0KICAgICAgICAjIGRpZmZlcmVudGx5IGJlY2F1c2UgYSBuYW1lZHR1cGxlJ3MgX19pbml0X18gbmVlZHMgdG8gYmUKICAgICAgICAjIGNhbGxlZCBkaWZmZXJlbnRseSAoc2VlIGJwby0zNDM2MykuCiAgICAgICAgcmV0dXJuIHR5cGUob2JqKSgqW19hc3R1cGxlX2lubmVyKHYsIHR1cGxlX2ZhY3RvcnkpIGZvciB2IGluIG9ial0pCiAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCAobGlzdCwgdHVwbGUpKToKICAgICAgICAjIEFzc3VtZSB3ZSBjYW4gY3JlYXRlIGFuIG9iamVjdCBvZiB0aGlzIHR5cGUgYnkgcGFzc2luZyBpbiBhCiAgICAgICAgIyBnZW5lcmF0b3IgKHdoaWNoIGlzIG5vdCB0cnVlIGZvciBuYW1lZHR1cGxlcywgaGFuZGxlZAogICAgICAgICMgYWJvdmUpLgogICAgICAgIHJldHVybiB0eXBlKG9iaikoX2FzdHVwbGVfaW5uZXIodiwgdHVwbGVfZmFjdG9yeSkgZm9yIHYgaW4gb2JqKQogICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CiAgICAgICAgcmV0dXJuIHR5cGUob2JqKSgoX2FzdHVwbGVfaW5uZXIoaywgdHVwbGVfZmFjdG9yeSksIF9hc3R1cGxlX2lubmVyKHYsIHR1cGxlX2ZhY3RvcnkpKQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIG9iai5pdGVtcygpKQogICAgZWxzZToKICAgICAgICByZXR1cm4gY29weS5kZWVwY29weShvYmopCgoKZGVmIG1ha2VfZGF0YWNsYXNzKGNsc19uYW1lLCBmaWVsZHMsICosIGJhc2VzPSgpLCBuYW1lc3BhY2U9Tm9uZSwgaW5pdD1UcnVlLAogICAgICAgICAgICAgICAgICAgcmVwcj1UcnVlLCBlcT1UcnVlLCBvcmRlcj1GYWxzZSwgdW5zYWZlX2hhc2g9RmFsc2UsCiAgICAgICAgICAgICAgICAgICBmcm96ZW49RmFsc2UsIG1hdGNoX2FyZ3M9VHJ1ZSwga3dfb25seT1GYWxzZSwgc2xvdHM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICB3ZWFrcmVmX3Nsb3Q9RmFsc2UpOgogICAgIiIiUmV0dXJuIGEgbmV3IGR5bmFtaWNhbGx5IGNyZWF0ZWQgZGF0YWNsYXNzLgoKICAgIFRoZSBkYXRhY2xhc3MgbmFtZSB3aWxsIGJlICdjbHNfbmFtZScuICAnZmllbGRzJyBpcyBhbiBpdGVyYWJsZQogICAgb2YgZWl0aGVyIChuYW1lKSwgKG5hbWUsIHR5cGUpIG9yIChuYW1lLCB0eXBlLCBGaWVsZCkgb2JqZWN0cy4gSWYgdHlwZSBpcwogICAgb21pdHRlZCwgdXNlIHRoZSBzdHJpbmcgJ3R5cGluZy5BbnknLiAgRmllbGQgb2JqZWN0cyBhcmUgY3JlYXRlZCBieQogICAgdGhlIGVxdWl2YWxlbnQgb2YgY2FsbGluZyAnZmllbGQobmFtZSwgdHlwZSBbLCBGaWVsZC1pbmZvXSknLjo6CgogICAgICBDID0gbWFrZV9kYXRhY2xhc3MoJ0MnLCBbJ3gnLCAoJ3knLCBpbnQpLCAoJ3onLCBpbnQsIGZpZWxkKGluaXQ9RmFsc2UpKV0sIGJhc2VzPShCYXNlLCkpCgogICAgaXMgZXF1aXZhbGVudCB0bzo6CgogICAgICBAZGF0YWNsYXNzCiAgICAgIGNsYXNzIEMoQmFzZSk6CiAgICAgICAgICB4OiAndHlwaW5nLkFueScKICAgICAgICAgIHk6IGludAogICAgICAgICAgejogaW50ID0gZmllbGQoaW5pdD1GYWxzZSkKCiAgICBGb3IgdGhlIGJhc2VzIGFuZCBuYW1lc3BhY2UgcGFyYW1ldGVycywgc2VlIHRoZSBidWlsdGluIHR5cGUoKSBmdW5jdGlvbi4KCiAgICBUaGUgcGFyYW1ldGVycyBpbml0LCByZXByLCBlcSwgb3JkZXIsIHVuc2FmZV9oYXNoLCBhbmQgZnJvemVuIGFyZSBwYXNzZWQgdG8KICAgIGRhdGFjbGFzcygpLgogICAgIiIiCgogICAgaWYgbmFtZXNwYWNlIGlzIE5vbmU6CiAgICAgICAgbmFtZXNwYWNlID0ge30KCiAgICAjIFdoaWxlIHdlJ3JlIGxvb2tpbmcgdGhyb3VnaCB0aGUgZmllbGQgbmFtZXMsIHZhbGlkYXRlIHRoYXQgdGhleQogICAgIyBhcmUgaWRlbnRpZmllcnMsIGFyZSBub3Qga2V5d29yZHMsIGFuZCBub3QgZHVwbGljYXRlcy4KICAgIHNlZW4gPSBzZXQoKQogICAgYW5ub3RhdGlvbnMgPSB7fQogICAgZGVmYXVsdHMgPSB7fQogICAgZm9yIGl0ZW0gaW4gZmllbGRzOgogICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgc3RyKToKICAgICAgICAgICAgbmFtZSA9IGl0ZW0KICAgICAgICAgICAgdHAgPSAndHlwaW5nLkFueScKICAgICAgICBlbGlmIGxlbihpdGVtKSA9PSAyOgogICAgICAgICAgICBuYW1lLCB0cCwgPSBpdGVtCiAgICAgICAgZWxpZiBsZW4oaXRlbSkgPT0gMzoKICAgICAgICAgICAgbmFtZSwgdHAsIHNwZWMgPSBpdGVtCiAgICAgICAgICAgIGRlZmF1bHRzW25hbWVdID0gc3BlYwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0ludmFsaWQgZmllbGQ6IHtpdGVtIXJ9JykKCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKSBvciBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRmllbGQgbmFtZXMgbXVzdCBiZSB2YWxpZCBpZGVudGlmaWVyczoge25hbWUhcn0nKQogICAgICAgIGlmIGtleXdvcmQuaXNrZXl3b3JkKG5hbWUpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidGaWVsZCBuYW1lcyBtdXN0IG5vdCBiZSBrZXl3b3Jkczoge25hbWUhcn0nKQogICAgICAgIGlmIG5hbWUgaW4gc2VlbjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnRmllbGQgbmFtZSBkdXBsaWNhdGVkOiB7bmFtZSFyfScpCgogICAgICAgIHNlZW4uYWRkKG5hbWUpCiAgICAgICAgYW5ub3RhdGlvbnNbbmFtZV0gPSB0cAoKICAgICMgVXBkYXRlICducycgd2l0aCB0aGUgdXNlci1zdXBwbGllZCBuYW1lc3BhY2UgcGx1cyBvdXIgY2FsY3VsYXRlZCB2YWx1ZXMuCiAgICBkZWYgZXhlY19ib2R5X2NhbGxiYWNrKG5zKToKICAgICAgICBucy51cGRhdGUobmFtZXNwYWNlKQogICAgICAgIG5zLnVwZGF0ZShkZWZhdWx0cykKICAgICAgICBuc1snX19hbm5vdGF0aW9uc19fJ10gPSBhbm5vdGF0aW9ucwoKICAgICMgV2UgdXNlIGB0eXBlcy5uZXdfY2xhc3MoKWAgaW5zdGVhZCBvZiBzaW1wbHkgYHR5cGUoKWAgdG8gYWxsb3cgZHluYW1pYyBjcmVhdGlvbgogICAgIyBvZiBnZW5lcmljIGRhdGFjbGFzc2VzLgogICAgY2xzID0gdHlwZXMubmV3X2NsYXNzKGNsc19uYW1lLCBiYXNlcywge30sIGV4ZWNfYm9keV9jYWxsYmFjaykKCiAgICAjIEFwcGx5IHRoZSBub3JtYWwgZGVjb3JhdG9yLgogICAgcmV0dXJuIGRhdGFjbGFzcyhjbHMsIGluaXQ9aW5pdCwgcmVwcj1yZXByLCBlcT1lcSwgb3JkZXI9b3JkZXIsCiAgICAgICAgICAgICAgICAgICAgIHVuc2FmZV9oYXNoPXVuc2FmZV9oYXNoLCBmcm96ZW49ZnJvemVuLAogICAgICAgICAgICAgICAgICAgICBtYXRjaF9hcmdzPW1hdGNoX2FyZ3MsIGt3X29ubHk9a3dfb25seSwgc2xvdHM9c2xvdHMsCiAgICAgICAgICAgICAgICAgICAgIHdlYWtyZWZfc2xvdD13ZWFrcmVmX3Nsb3QpCgoKZGVmIHJlcGxhY2Uob2JqLCAvLCAqKmNoYW5nZXMpOgogICAgIiIiUmV0dXJuIGEgbmV3IG9iamVjdCByZXBsYWNpbmcgc3BlY2lmaWVkIGZpZWxkcyB3aXRoIG5ldyB2YWx1ZXMuCgogICAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgZnJvemVuIGNsYXNzZXMuICBFeGFtcGxlIHVzYWdlOjoKCiAgICAgIEBkYXRhY2xhc3MoZnJvemVuPVRydWUpCiAgICAgIGNsYXNzIEM6CiAgICAgICAgICB4OiBpbnQKICAgICAgICAgIHk6IGludAoKICAgICAgYyA9IEMoMSwgMikKICAgICAgYzEgPSByZXBsYWNlKGMsIHg9MykKICAgICAgYXNzZXJ0IGMxLnggPT0gMyBhbmQgYzEueSA9PSAyCiAgICAiIiIKCiAgICAjIFdlJ3JlIGdvaW5nIHRvIG11dGF0ZSAnY2hhbmdlcycsIGJ1dCB0aGF0J3Mgb2theSBiZWNhdXNlIGl0J3MgYQogICAgIyBuZXcgZGljdCwgZXZlbiBpZiBjYWxsZWQgd2l0aCAncmVwbGFjZShvYmosICoqbXlfY2hhbmdlcyknLgoKICAgIGlmIG5vdCBfaXNfZGF0YWNsYXNzX2luc3RhbmNlKG9iaik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJyZXBsYWNlKCkgc2hvdWxkIGJlIGNhbGxlZCBvbiBkYXRhY2xhc3MgaW5zdGFuY2VzIikKCiAgICAjIEl0J3MgYW4gZXJyb3IgdG8gaGF2ZSBpbml0PUZhbHNlIGZpZWxkcyBpbiAnY2hhbmdlcycuCiAgICAjIElmIGEgZmllbGQgaXMgbm90IGluICdjaGFuZ2VzJywgcmVhZCBpdHMgdmFsdWUgZnJvbSB0aGUgcHJvdmlkZWQgb2JqLgoKICAgIGZvciBmIGluIGdldGF0dHIob2JqLCBfRklFTERTKS52YWx1ZXMoKToKICAgICAgICAjIE9ubHkgY29uc2lkZXIgbm9ybWFsIGZpZWxkcyBvciBJbml0VmFycy4KICAgICAgICBpZiBmLl9maWVsZF90eXBlIGlzIF9GSUVMRF9DTEFTU1ZBUjoKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgaWYgbm90IGYuaW5pdDoKICAgICAgICAgICAgIyBFcnJvciBpZiB0aGlzIGZpZWxkIGlzIHNwZWNpZmllZCBpbiBjaGFuZ2VzLgogICAgICAgICAgICBpZiBmLm5hbWUgaW4gY2hhbmdlczoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidmaWVsZCB7Zi5uYW1lfSBpcyBkZWNsYXJlZCB3aXRoICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luaXQ9RmFsc2UsIGl0IGNhbm5vdCBiZSBzcGVjaWZpZWQgd2l0aCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlKCknKQogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBpZiBmLm5hbWUgbm90IGluIGNoYW5nZXM6CiAgICAgICAgICAgIGlmIGYuX2ZpZWxkX3R5cGUgaXMgX0ZJRUxEX0lOSVRWQVIgYW5kIGYuZGVmYXVsdCBpcyBNSVNTSU5HOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIkluaXRWYXIge2YubmFtZSFyfSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtdXN0IGJlIHNwZWNpZmllZCB3aXRoIHJlcGxhY2UoKScpCiAgICAgICAgICAgIGNoYW5nZXNbZi5uYW1lXSA9IGdldGF0dHIob2JqLCBmLm5hbWUpCgogICAgIyBDcmVhdGUgdGhlIG5ldyBvYmplY3QsIHdoaWNoIGNhbGxzIF9faW5pdF9fKCkgYW5kCiAgICAjIF9fcG9zdF9pbml0X18oKSAoaWYgZGVmaW5lZCksIHVzaW5nIGFsbCBvZiB0aGUgaW5pdCBmaWVsZHMgd2UndmUKICAgICMgYWRkZWQgYW5kL29yIGxlZnQgaW4gJ2NoYW5nZXMnLiAgSWYgdGhlcmUgYXJlIHZhbHVlcyBzdXBwbGllZCBpbgogICAgIyBjaGFuZ2VzIHRoYXQgYXJlbid0IGZpZWxkcywgdGhpcyB3aWxsIGNvcnJlY3RseSByYWlzZSBhCiAgICAjIFR5cGVFcnJvci4KICAgIHJldHVybiBvYmouX19jbGFzc19fKCoqY2hhbmdlcykKUEsDBBQAAAAAAAIgo1bu0H3AY2cBAGNnAQALAAAAZGF0ZXRpbWUucHkiIiJDb25jcmV0ZSBkYXRlL3RpbWUgYW5kIHJlbGF0ZWQgdHlwZXMuCgpTZWUgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvdHotbGluay5odG1sIGZvcgp0aW1lIHpvbmUgYW5kIERTVCBkYXRhIHNvdXJjZXMuCiIiIgoKX19hbGxfXyA9ICgiZGF0ZSIsICJkYXRldGltZSIsICJ0aW1lIiwgInRpbWVkZWx0YSIsICJ0aW1lem9uZSIsICJ0emluZm8iLAogICAgICAgICAgICJNSU5ZRUFSIiwgIk1BWFlFQVIiLCAiVVRDIikKCgppbXBvcnQgdGltZSBhcyBfdGltZQppbXBvcnQgbWF0aCBhcyBfbWF0aAppbXBvcnQgc3lzCmZyb20gb3BlcmF0b3IgaW1wb3J0IGluZGV4IGFzIF9pbmRleAoKZGVmIF9jbXAoeCwgeSk6CiAgICByZXR1cm4gMCBpZiB4ID09IHkgZWxzZSAxIGlmIHggPiB5IGVsc2UgLTEKCk1JTllFQVIgPSAxCk1BWFlFQVIgPSA5OTk5Cl9NQVhPUkRJTkFMID0gMzY1MjA1OSAgIyBkYXRlLm1heC50b29yZGluYWwoKQoKIyBVdGlsaXR5IGZ1bmN0aW9ucywgYWRhcHRlZCBmcm9tIFB5dGhvbidzIERlbW8vY2xhc3Nlcy9EYXRlcy5weSwgd2hpY2gKIyBhbHNvIGFzc3VtZXMgdGhlIGN1cnJlbnQgR3JlZ29yaWFuIGNhbGVuZGFyIGluZGVmaW5pdGVseSBleHRlbmRlZCBpbgojIGJvdGggZGlyZWN0aW9ucy4gIERpZmZlcmVuY2U6ICBEYXRlcy5weSBjYWxscyBKYW51YXJ5IDEgb2YgeWVhciAwIGRheQojIG51bWJlciAxLiAgVGhlIGNvZGUgaGVyZSBjYWxscyBKYW51YXJ5IDEgb2YgeWVhciAxIGRheSBudW1iZXIgMS4gIFRoaXMgaXMKIyB0byBtYXRjaCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgInByb2xlcHRpYyBHcmVnb3JpYW4iIGNhbGVuZGFyIGluIERlcnNob3dpdHoKIyBhbmQgUmVpbmdvbGQncyAiQ2FsZW5kcmljYWwgQ2FsY3VsYXRpb25zIiwgd2hlcmUgaXQncyB0aGUgYmFzZSBjYWxlbmRhcgojIGZvciBhbGwgY29tcHV0YXRpb25zLiAgU2VlIHRoZSBib29rIGZvciBhbGdvcml0aG1zIGZvciBjb252ZXJ0aW5nIGJldHdlZW4KIyBwcm9sZXB0aWMgR3JlZ29yaWFuIG9yZGluYWxzIGFuZCBtYW55IG90aGVyIGNhbGVuZGFyIHN5c3RlbXMuCgojIC0xIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGluZGV4aW5nIHB1cnBvc2VzLgpfREFZU19JTl9NT05USCA9IFstMSwgMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0KCl9EQVlTX0JFRk9SRV9NT05USCA9IFstMV0gICMgLTEgaXMgYSBwbGFjZWhvbGRlciBmb3IgaW5kZXhpbmcgcHVycG9zZXMuCmRibSA9IDAKZm9yIGRpbSBpbiBfREFZU19JTl9NT05USFsxOl06CiAgICBfREFZU19CRUZPUkVfTU9OVEguYXBwZW5kKGRibSkKICAgIGRibSArPSBkaW0KZGVsIGRibSwgZGltCgpkZWYgX2lzX2xlYXAoeWVhcik6CiAgICAieWVhciAtPiAxIGlmIGxlYXAgeWVhciwgZWxzZSAwLiIKICAgIHJldHVybiB5ZWFyICUgNCA9PSAwIGFuZCAoeWVhciAlIDEwMCAhPSAwIG9yIHllYXIgJSA0MDAgPT0gMCkKCmRlZiBfZGF5c19iZWZvcmVfeWVhcih5ZWFyKToKICAgICJ5ZWFyIC0+IG51bWJlciBvZiBkYXlzIGJlZm9yZSBKYW51YXJ5IDFzdCBvZiB5ZWFyLiIKICAgIHkgPSB5ZWFyIC0gMQogICAgcmV0dXJuIHkqMzY1ICsgeS8vNCAtIHkvLzEwMCArIHkvLzQwMAoKZGVmIF9kYXlzX2luX21vbnRoKHllYXIsIG1vbnRoKToKICAgICJ5ZWFyLCBtb250aCAtPiBudW1iZXIgb2YgZGF5cyBpbiB0aGF0IG1vbnRoIGluIHRoYXQgeWVhci4iCiAgICBhc3NlcnQgMSA8PSBtb250aCA8PSAxMiwgbW9udGgKICAgIGlmIG1vbnRoID09IDIgYW5kIF9pc19sZWFwKHllYXIpOgogICAgICAgIHJldHVybiAyOQogICAgcmV0dXJuIF9EQVlTX0lOX01PTlRIW21vbnRoXQoKZGVmIF9kYXlzX2JlZm9yZV9tb250aCh5ZWFyLCBtb250aCk6CiAgICAieWVhciwgbW9udGggLT4gbnVtYmVyIG9mIGRheXMgaW4geWVhciBwcmVjZWRpbmcgZmlyc3QgZGF5IG9mIG1vbnRoLiIKICAgIGFzc2VydCAxIDw9IG1vbnRoIDw9IDEyLCAnbW9udGggbXVzdCBiZSBpbiAxLi4xMicKICAgIHJldHVybiBfREFZU19CRUZPUkVfTU9OVEhbbW9udGhdICsgKG1vbnRoID4gMiBhbmQgX2lzX2xlYXAoeWVhcikpCgpkZWYgX3ltZDJvcmQoeWVhciwgbW9udGgsIGRheSk6CiAgICAieWVhciwgbW9udGgsIGRheSAtPiBvcmRpbmFsLCBjb25zaWRlcmluZyAwMS1KYW4tMDAwMSBhcyBkYXkgMS4iCiAgICBhc3NlcnQgMSA8PSBtb250aCA8PSAxMiwgJ21vbnRoIG11c3QgYmUgaW4gMS4uMTInCiAgICBkaW0gPSBfZGF5c19pbl9tb250aCh5ZWFyLCBtb250aCkKICAgIGFzc2VydCAxIDw9IGRheSA8PSBkaW0sICgnZGF5IG11c3QgYmUgaW4gMS4uJWQnICUgZGltKQogICAgcmV0dXJuIChfZGF5c19iZWZvcmVfeWVhcih5ZWFyKSArCiAgICAgICAgICAgIF9kYXlzX2JlZm9yZV9tb250aCh5ZWFyLCBtb250aCkgKwogICAgICAgICAgICBkYXkpCgpfREk0MDBZID0gX2RheXNfYmVmb3JlX3llYXIoNDAxKSAgICAjIG51bWJlciBvZiBkYXlzIGluIDQwMCB5ZWFycwpfREkxMDBZID0gX2RheXNfYmVmb3JlX3llYXIoMTAxKSAgICAjICAgICIgICAgIiAgICIgICAiIDEwMCAgICIKX0RJNFkgICA9IF9kYXlzX2JlZm9yZV95ZWFyKDUpICAgICAgIyAgICAiICAgICIgICAiICAgIiAgIDQgICAiCgojIEEgNC15ZWFyIGN5Y2xlIGhhcyBhbiBleHRyYSBsZWFwIGRheSBvdmVyIHdoYXQgd2UnZCBnZXQgZnJvbSBwYXN0aW5nCiMgdG9nZXRoZXIgNCBzaW5nbGUgeWVhcnMuCmFzc2VydCBfREk0WSA9PSA0ICogMzY1ICsgMQoKIyBTaW1pbGFybHksIGEgNDAwLXllYXIgY3ljbGUgaGFzIGFuIGV4dHJhIGxlYXAgZGF5IG92ZXIgd2hhdCB3ZSdkIGdldCBmcm9tCiMgcGFzdGluZyB0b2dldGhlciA0IDEwMC15ZWFyIGN5Y2xlcy4KYXNzZXJ0IF9ESTQwMFkgPT0gNCAqIF9ESTEwMFkgKyAxCgojIE9UT0gsIGEgMTAwLXllYXIgY3ljbGUgaGFzIG9uZSBmZXdlciBsZWFwIGRheSB0aGFuIHdlJ2QgZ2V0IGZyb20KIyBwYXN0aW5nIHRvZ2V0aGVyIDI1IDQteWVhciBjeWNsZXMuCmFzc2VydCBfREkxMDBZID09IDI1ICogX0RJNFkgLSAxCgpkZWYgX29yZDJ5bWQobik6CiAgICAib3JkaW5hbCAtPiAoeWVhciwgbW9udGgsIGRheSksIGNvbnNpZGVyaW5nIDAxLUphbi0wMDAxIGFzIGRheSAxLiIKCiAgICAjIG4gaXMgYSAxLWJhc2VkIGluZGV4LCBzdGFydGluZyBhdCAxLUphbi0xLiAgVGhlIHBhdHRlcm4gb2YgbGVhcCB5ZWFycwogICAgIyByZXBlYXRzIGV4YWN0bHkgZXZlcnkgNDAwIHllYXJzLiAgVGhlIGJhc2ljIHN0cmF0ZWd5IGlzIHRvIGZpbmQgdGhlCiAgICAjIGNsb3Nlc3QgNDAwLXllYXIgYm91bmRhcnkgYXQgb3IgYmVmb3JlIG4sIHRoZW4gd29yayB3aXRoIHRoZSBvZmZzZXQKICAgICMgZnJvbSB0aGF0IGJvdW5kYXJ5IHRvIG4uICBMaWZlIGlzIG11Y2ggY2xlYXJlciBpZiB3ZSBzdWJ0cmFjdCAxIGZyb20KICAgICMgbiBmaXJzdCAtLSB0aGVuIHRoZSB2YWx1ZXMgb2YgbiBhdCA0MDAteWVhciBib3VuZGFyaWVzIGFyZSBleGFjdGx5CiAgICAjIHRob3NlIGRpdmlzaWJsZSBieSBfREk0MDBZOgogICAgIwogICAgIyAgICAgRCAgTSAgIFkgICAgICAgICAgICBuICAgICAgICAgICAgICBuLTEKICAgICMgICAgIC0tIC0tLSAtLS0tICAgICAgICAtLS0tLS0tLS0tICAgICAtLS0tLS0tLS0tLS0tLS0tCiAgICAjICAgICAzMSBEZWMgLTQwMCAgICAgICAgLV9ESTQwMFkgICAgICAgLV9ESTQwMFkgLTEKICAgICMgICAgICAxIEphbiAtMzk5ICAgICAgICAgLV9ESTQwMFkgKzEgICAtX0RJNDAwWSAgICAgIDQwMC15ZWFyIGJvdW5kYXJ5CiAgICAjICAgICAuLi4KICAgICMgICAgIDMwIERlYyAgMDAwICAgICAgICAtMSAgICAgICAgICAgICAtMgogICAgIyAgICAgMzEgRGVjICAwMDAgICAgICAgICAwICAgICAgICAgICAgIC0xCiAgICAjICAgICAgMSBKYW4gIDAwMSAgICAgICAgIDEgICAgICAgICAgICAgIDAgICAgICAgICAgICA0MDAteWVhciBib3VuZGFyeQogICAgIyAgICAgIDIgSmFuICAwMDEgICAgICAgICAyICAgICAgICAgICAgICAxCiAgICAjICAgICAgMyBKYW4gIDAwMSAgICAgICAgIDMgICAgICAgICAgICAgIDIKICAgICMgICAgIC4uLgogICAgIyAgICAgMzEgRGVjICA0MDAgICAgICAgICBfREk0MDBZICAgICAgICBfREk0MDBZIC0xCiAgICAjICAgICAgMSBKYW4gIDQwMSAgICAgICAgIF9ESTQwMFkgKzEgICAgIF9ESTQwMFkgICAgICA0MDAteWVhciBib3VuZGFyeQogICAgbiAtPSAxCiAgICBuNDAwLCBuID0gZGl2bW9kKG4sIF9ESTQwMFkpCiAgICB5ZWFyID0gbjQwMCAqIDQwMCArIDEgICAjIC4uLiwgLTM5OSwgMSwgNDAxLCAuLi4KCiAgICAjIE5vdyBuIGlzIHRoZSAobm9uLW5lZ2F0aXZlKSBvZmZzZXQsIGluIGRheXMsIGZyb20gSmFudWFyeSAxIG9mIHllYXIsIHRvCiAgICAjIHRoZSBkZXNpcmVkIGRhdGUuICBOb3cgY29tcHV0ZSBob3cgbWFueSAxMDAteWVhciBjeWNsZXMgcHJlY2VkZSBuLgogICAgIyBOb3RlIHRoYXQgaXQncyBwb3NzaWJsZSBmb3IgbjEwMCB0byBlcXVhbCA0ISAgSW4gdGhhdCBjYXNlIDQgZnVsbAogICAgIyAxMDAteWVhciBjeWNsZXMgcHJlY2VkZSB0aGUgZGVzaXJlZCBkYXksIHdoaWNoIGltcGxpZXMgdGhlIGRlc2lyZWQKICAgICMgZGF5IGlzIERlY2VtYmVyIDMxIGF0IHRoZSBlbmQgb2YgYSA0MDAteWVhciBjeWNsZS4KICAgIG4xMDAsIG4gPSBkaXZtb2QobiwgX0RJMTAwWSkKCiAgICAjIE5vdyBjb21wdXRlIGhvdyBtYW55IDQteWVhciBjeWNsZXMgcHJlY2VkZSBpdC4KICAgIG40LCBuID0gZGl2bW9kKG4sIF9ESTRZKQoKICAgICMgQW5kIG5vdyBob3cgbWFueSBzaW5nbGUgeWVhcnMuICBBZ2FpbiBuMSBjYW4gYmUgNCwgYW5kIGFnYWluIG1lYW5pbmcKICAgICMgdGhhdCB0aGUgZGVzaXJlZCBkYXkgaXMgRGVjZW1iZXIgMzEgYXQgdGhlIGVuZCBvZiB0aGUgNC15ZWFyIGN5Y2xlLgogICAgbjEsIG4gPSBkaXZtb2QobiwgMzY1KQoKICAgIHllYXIgKz0gbjEwMCAqIDEwMCArIG40ICogNCArIG4xCiAgICBpZiBuMSA9PSA0IG9yIG4xMDAgPT0gNDoKICAgICAgICBhc3NlcnQgbiA9PSAwCiAgICAgICAgcmV0dXJuIHllYXItMSwgMTIsIDMxCgogICAgIyBOb3cgdGhlIHllYXIgaXMgY29ycmVjdCwgYW5kIG4gaXMgdGhlIG9mZnNldCBmcm9tIEphbnVhcnkgMS4gIFdlIGZpbmQKICAgICMgdGhlIG1vbnRoIHZpYSBhbiBlc3RpbWF0ZSB0aGF0J3MgZWl0aGVyIGV4YWN0IG9yIG9uZSB0b28gbGFyZ2UuCiAgICBsZWFweWVhciA9IG4xID09IDMgYW5kIChuNCAhPSAyNCBvciBuMTAwID09IDMpCiAgICBhc3NlcnQgbGVhcHllYXIgPT0gX2lzX2xlYXAoeWVhcikKICAgIG1vbnRoID0gKG4gKyA1MCkgPj4gNQogICAgcHJlY2VkaW5nID0gX0RBWVNfQkVGT1JFX01PTlRIW21vbnRoXSArIChtb250aCA+IDIgYW5kIGxlYXB5ZWFyKQogICAgaWYgcHJlY2VkaW5nID4gbjogICMgZXN0aW1hdGUgaXMgdG9vIGxhcmdlCiAgICAgICAgbW9udGggLT0gMQogICAgICAgIHByZWNlZGluZyAtPSBfREFZU19JTl9NT05USFttb250aF0gKyAobW9udGggPT0gMiBhbmQgbGVhcHllYXIpCiAgICBuIC09IHByZWNlZGluZwogICAgYXNzZXJ0IDAgPD0gbiA8IF9kYXlzX2luX21vbnRoKHllYXIsIG1vbnRoKQoKICAgICMgTm93IHRoZSB5ZWFyIGFuZCBtb250aCBhcmUgY29ycmVjdCwgYW5kIG4gaXMgdGhlIG9mZnNldCBmcm9tIHRoZQogICAgIyBzdGFydCBvZiB0aGF0IG1vbnRoOiAgd2UncmUgZG9uZSEKICAgIHJldHVybiB5ZWFyLCBtb250aCwgbisxCgojIE1vbnRoIGFuZCBkYXkgbmFtZXMuICBGb3IgbG9jYWxpemVkIHZlcnNpb25zLCBzZWUgdGhlIGNhbGVuZGFyIG1vZHVsZS4KX01PTlRITkFNRVMgPSBbTm9uZSwgIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwKICAgICAgICAgICAgICAgICAgICAgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIl0KX0RBWU5BTUVTID0gW05vbmUsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iXQoKCmRlZiBfYnVpbGRfc3RydWN0X3RpbWUoeSwgbSwgZCwgaGgsIG1tLCBzcywgZHN0ZmxhZyk6CiAgICB3ZGF5ID0gKF95bWQyb3JkKHksIG0sIGQpICsgNikgJSA3CiAgICBkbnVtID0gX2RheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZAogICAgcmV0dXJuIF90aW1lLnN0cnVjdF90aW1lKCh5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZGF5LCBkbnVtLCBkc3RmbGFnKSkKCmRlZiBfZm9ybWF0X3RpbWUoaGgsIG1tLCBzcywgdXMsIHRpbWVzcGVjPSdhdXRvJyk6CiAgICBzcGVjcyA9IHsKICAgICAgICAnaG91cnMnOiAnezowMmR9JywKICAgICAgICAnbWludXRlcyc6ICd7OjAyZH06ezowMmR9JywKICAgICAgICAnc2Vjb25kcyc6ICd7OjAyZH06ezowMmR9Ons6MDJkfScsCiAgICAgICAgJ21pbGxpc2Vjb25kcyc6ICd7OjAyZH06ezowMmR9Ons6MDJkfS57OjAzZH0nLAogICAgICAgICdtaWNyb3NlY29uZHMnOiAnezowMmR9Ons6MDJkfTp7OjAyZH0uezowNmR9JwogICAgfQoKICAgIGlmIHRpbWVzcGVjID09ICdhdXRvJzoKICAgICAgICAjIFNraXAgdHJhaWxpbmcgbWljcm9zZWNvbmRzIHdoZW4gdXM9PTAuCiAgICAgICAgdGltZXNwZWMgPSAnbWljcm9zZWNvbmRzJyBpZiB1cyBlbHNlICdzZWNvbmRzJwogICAgZWxpZiB0aW1lc3BlYyA9PSAnbWlsbGlzZWNvbmRzJzoKICAgICAgICB1cyAvLz0gMTAwMAogICAgdHJ5OgogICAgICAgIGZtdCA9IHNwZWNzW3RpbWVzcGVjXQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Vua25vd24gdGltZXNwZWMgdmFsdWUnKQogICAgZWxzZToKICAgICAgICByZXR1cm4gZm10LmZvcm1hdChoaCwgbW0sIHNzLCB1cykKCmRlZiBfZm9ybWF0X29mZnNldChvZmYpOgogICAgcyA9ICcnCiAgICBpZiBvZmYgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgb2ZmLmRheXMgPCAwOgogICAgICAgICAgICBzaWduID0gIi0iCiAgICAgICAgICAgIG9mZiA9IC1vZmYKICAgICAgICBlbHNlOgogICAgICAgICAgICBzaWduID0gIisiCiAgICAgICAgaGgsIG1tID0gZGl2bW9kKG9mZiwgdGltZWRlbHRhKGhvdXJzPTEpKQogICAgICAgIG1tLCBzcyA9IGRpdm1vZChtbSwgdGltZWRlbHRhKG1pbnV0ZXM9MSkpCiAgICAgICAgcyArPSAiJXMlMDJkOiUwMmQiICUgKHNpZ24sIGhoLCBtbSkKICAgICAgICBpZiBzcyBvciBzcy5taWNyb3NlY29uZHM6CiAgICAgICAgICAgIHMgKz0gIjolMDJkIiAlIHNzLnNlY29uZHMKCiAgICAgICAgICAgIGlmIHNzLm1pY3Jvc2Vjb25kczoKICAgICAgICAgICAgICAgIHMgKz0gJy4lMDZkJyAlIHNzLm1pY3Jvc2Vjb25kcwogICAgcmV0dXJuIHMKCiMgQ29ycmVjdGx5IHN1YnN0aXR1dGUgZm9yICV6IGFuZCAlWiBlc2NhcGVzIGluIHN0cmZ0aW1lIGZvcm1hdHMuCmRlZiBfd3JhcF9zdHJmdGltZShvYmplY3QsIGZvcm1hdCwgdGltZXR1cGxlKToKICAgICMgRG9uJ3QgY2FsbCB1dGNvZmZzZXQoKSBvciB0em5hbWUoKSB1bmxlc3MgYWN0dWFsbHkgbmVlZGVkLgogICAgZnJlcGxhY2UgPSBOb25lICAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlZgogICAgenJlcGxhY2UgPSBOb25lICAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlegogICAgWnJlcGxhY2UgPSBOb25lICAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlWgoKICAgICMgU2NhbiBmb3JtYXQgZm9yICV6IGFuZCAlWiBlc2NhcGVzLCByZXBsYWNpbmcgYXMgbmVlZGVkLgogICAgbmV3Zm9ybWF0ID0gW10KICAgIHB1c2ggPSBuZXdmb3JtYXQuYXBwZW5kCiAgICBpLCBuID0gMCwgbGVuKGZvcm1hdCkKICAgIHdoaWxlIGkgPCBuOgogICAgICAgIGNoID0gZm9ybWF0W2ldCiAgICAgICAgaSArPSAxCiAgICAgICAgaWYgY2ggPT0gJyUnOgogICAgICAgICAgICBpZiBpIDwgbjoKICAgICAgICAgICAgICAgIGNoID0gZm9ybWF0W2ldCiAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgICAgIGlmIGNoID09ICdmJzoKICAgICAgICAgICAgICAgICAgICBpZiBmcmVwbGFjZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBmcmVwbGFjZSA9ICclMDZkJyAlIGdldGF0dHIob2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pY3Jvc2Vjb25kJywgMCkKICAgICAgICAgICAgICAgICAgICBuZXdmb3JtYXQuYXBwZW5kKGZyZXBsYWNlKQogICAgICAgICAgICAgICAgZWxpZiBjaCA9PSAneic6CiAgICAgICAgICAgICAgICAgICAgaWYgenJlcGxhY2UgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgenJlcGxhY2UgPSAiIgogICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9iamVjdCwgInV0Y29mZnNldCIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gb2JqZWN0LnV0Y29mZnNldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcrJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldC5kYXlzIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCwgcmVzdCA9IGRpdm1vZChvZmZzZXQsIHRpbWVkZWx0YShob3Vycz0xKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLCByZXN0ID0gZGl2bW9kKHJlc3QsIHRpbWVkZWx0YShtaW51dGVzPTEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByZXN0LnNlY29uZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gb2Zmc2V0Lm1pY3Jvc2Vjb25kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpyZXBsYWNlID0gJyVjJTAyZCUwMmQlMDJkLiUwNmQnICUgKHNpZ24sIGgsIG0sIHMsIHUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6cmVwbGFjZSA9ICclYyUwMmQlMDJkJTAyZCcgJSAoc2lnbiwgaCwgbSwgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6cmVwbGFjZSA9ICclYyUwMmQlMDJkJyAlIChzaWduLCBoLCBtKQogICAgICAgICAgICAgICAgICAgIGFzc2VydCAnJScgbm90IGluIHpyZXBsYWNlCiAgICAgICAgICAgICAgICAgICAgbmV3Zm9ybWF0LmFwcGVuZCh6cmVwbGFjZSkKICAgICAgICAgICAgICAgIGVsaWYgY2ggPT0gJ1onOgogICAgICAgICAgICAgICAgICAgIGlmIFpyZXBsYWNlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIFpyZXBsYWNlID0gIiIKICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihvYmplY3QsICJ0em5hbWUiKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBvYmplY3QudHpuYW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdHJmdGltZSBpcyBnb2luZyB0byBoYXZlIGF0IHRoaXM6IGVzY2FwZSAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWnJlcGxhY2UgPSBzLnJlcGxhY2UoJyUnLCAnJSUnKQogICAgICAgICAgICAgICAgICAgIG5ld2Zvcm1hdC5hcHBlbmQoWnJlcGxhY2UpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHB1c2goJyUnKQogICAgICAgICAgICAgICAgICAgIHB1c2goY2gpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwdXNoKCclJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBwdXNoKGNoKQogICAgbmV3Zm9ybWF0ID0gIiIuam9pbihuZXdmb3JtYXQpCiAgICByZXR1cm4gX3RpbWUuc3RyZnRpbWUobmV3Zm9ybWF0LCB0aW1ldHVwbGUpCgojIEhlbHBlcnMgZm9yIHBhcnNpbmcgdGhlIHJlc3VsdCBvZiBpc29mb3JtYXQoKQpkZWYgX2lzX2FzY2lpX2RpZ2l0KGMpOgogICAgcmV0dXJuIGMgaW4gIjAxMjM0NTY3ODkiCgpkZWYgX2ZpbmRfaXNvZm9ybWF0X2RhdGV0aW1lX3NlcGFyYXRvcihkdHN0cik6CiAgICAjIFNlZSB0aGUgY29tbWVudCBpbiBfZGF0ZXRpbWVtb2R1bGUuYzpfZmluZF9pc29mb3JtYXRfZGF0ZXRpbWVfc2VwYXJhdG9yCiAgICBsZW5fZHRzdHIgPSBsZW4oZHRzdHIpCiAgICBpZiBsZW5fZHRzdHIgPT0gNzoKICAgICAgICByZXR1cm4gNwoKICAgIGFzc2VydCBsZW5fZHRzdHIgPiA3CiAgICBkYXRlX3NlcGFyYXRvciA9ICItIgogICAgd2Vla19pbmRpY2F0b3IgPSAiVyIKCiAgICBpZiBkdHN0cls0XSA9PSBkYXRlX3NlcGFyYXRvcjoKICAgICAgICBpZiBkdHN0cls1XSA9PSB3ZWVrX2luZGljYXRvcjoKICAgICAgICAgICAgaWYgbGVuX2R0c3RyIDwgODoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgSVNPIHN0cmluZyIpCiAgICAgICAgICAgIGlmIGxlbl9kdHN0ciA+IDggYW5kIGR0c3RyWzhdID09IGRhdGVfc2VwYXJhdG9yOgogICAgICAgICAgICAgICAgaWYgbGVuX2R0c3RyID09IDk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBJU08gc3RyaW5nIikKICAgICAgICAgICAgICAgIGlmIGxlbl9kdHN0ciA+IDEwIGFuZCBfaXNfYXNjaWlfZGlnaXQoZHRzdHJbMTBdKToKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYXMgZmFyIGFzIHdlIG5lZWQgdG8gcmVzb2x2ZSB0aGUgYW1iaWd1aXR5IGZvcgogICAgICAgICAgICAgICAgICAgICMgdGhlIG1vbWVudCAtIGlmIHdlIGhhdmUgWVlZWS1Xd3ctIyMsIHRoZSBzZXBhcmF0b3IgaXMKICAgICAgICAgICAgICAgICAgICAjIGVpdGhlciBhIGh5cGhlbiBhdCA4IG9yIGEgbnVtYmVyIGF0IDEwLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFdlJ2xsIGFzc3VtZSBpdCdzIGEgaHlwaGVuIGF0IDggYmVjYXVzZSBpdCdzIHdheSBtb3JlCiAgICAgICAgICAgICAgICAgICAgIyBsaWtlbHkgdGhhdCBzb21lb25lIHdpbGwgdXNlIGEgaHlwaGVuIGFzIGEgc2VwYXJhdG9yIHRoYW4KICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyLCBidXQgYXQgdGhpcyBwb2ludCBpdCdzIHJlYWxseSBiZXN0IGVmZm9ydAogICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSB0aGlzIGlzIGFuIGV4dGVuc2lvbiBvZiB0aGUgc3BlYyBhbnl3YXkuCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPKHBnYW5zc2xlKTogRG9jdW1lbnQgdGhpcwogICAgICAgICAgICAgICAgICAgIHJldHVybiA4CiAgICAgICAgICAgICAgICByZXR1cm4gMTAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgWVlZWS1Xd3cgKDgpCiAgICAgICAgICAgICAgICByZXR1cm4gOAogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgWVlZWS1NTS1ERCAoMTApCiAgICAgICAgICAgIHJldHVybiAxMAogICAgZWxzZToKICAgICAgICBpZiBkdHN0cls0XSA9PSB3ZWVrX2luZGljYXRvcjoKICAgICAgICAgICAgIyBZWVlZV3d3ICg3KSBvciBZWVlZV3d3ZCAoOCkKICAgICAgICAgICAgaWR4ID0gNwogICAgICAgICAgICB3aGlsZSBpZHggPCBsZW5fZHRzdHI6CiAgICAgICAgICAgICAgICBpZiBub3QgX2lzX2FzY2lpX2RpZ2l0KGR0c3RyW2lkeF0pOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBpZHggKz0gMQoKICAgICAgICAgICAgaWYgaWR4IDwgOToKICAgICAgICAgICAgICAgIHJldHVybiBpZHgKCiAgICAgICAgICAgIGlmIGlkeCAlIDIgPT0gMDoKICAgICAgICAgICAgICAgICMgSWYgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG51bWJlciBpcyBldmVuLCBpdCdzIFlZWVlXd3dkCiAgICAgICAgICAgICAgICByZXR1cm4gNwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIDgKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFlZWVlNTUREICg4KQogICAgICAgICAgICByZXR1cm4gOAoKCmRlZiBfcGFyc2VfaXNvZm9ybWF0X2RhdGUoZHRzdHIpOgogICAgIyBJdCBpcyBhc3N1bWVkIHRoYXQgdGhpcyBpcyBhbiBBU0NJSS1vbmx5IHN0cmluZyBvZiBsZW5ndGhzIDcsIDggb3IgMTAsCiAgICAjIHNlZSB0aGUgY29tbWVudCBvbiBNb2R1bGVzL19kYXRldGltZW1vZHVsZS5jOl9maW5kX2lzb2Zvcm1hdF9kYXRldGltZV9zZXBhcmF0b3IKICAgIGFzc2VydCBsZW4oZHRzdHIpIGluICg3LCA4LCAxMCkKICAgIHllYXIgPSBpbnQoZHRzdHJbMDo0XSkKICAgIGhhc19zZXAgPSBkdHN0cls0XSA9PSAnLScKCiAgICBwb3MgPSA0ICsgaGFzX3NlcAogICAgaWYgZHRzdHJbcG9zOnBvcyArIDFdID09ICJXIjoKICAgICAgICAjIFlZWVktP1d3dy0/RD8KICAgICAgICBwb3MgKz0gMQogICAgICAgIHdlZWtubyA9IGludChkdHN0cltwb3M6cG9zICsgMl0pCiAgICAgICAgcG9zICs9IDIKCiAgICAgICAgZGF5bm8gPSAxCiAgICAgICAgaWYgbGVuKGR0c3RyKSA+IHBvczoKICAgICAgICAgICAgaWYgKGR0c3RyW3Bvczpwb3MgKyAxXSA9PSAnLScpICE9IGhhc19zZXA6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbmNvbnNpc3RlbnQgdXNlIG9mIGRhc2ggc2VwYXJhdG9yIikKCiAgICAgICAgICAgIHBvcyArPSBoYXNfc2VwCgogICAgICAgICAgICBkYXlubyA9IGludChkdHN0cltwb3M6cG9zICsgMV0pCgogICAgICAgIHJldHVybiBsaXN0KF9pc293ZWVrX3RvX2dyZWdvcmlhbih5ZWFyLCB3ZWVrbm8sIGRheW5vKSkKICAgIGVsc2U6CiAgICAgICAgbW9udGggPSBpbnQoZHRzdHJbcG9zOnBvcyArIDJdKQogICAgICAgIHBvcyArPSAyCiAgICAgICAgaWYgKGR0c3RyW3Bvczpwb3MgKyAxXSA9PSAiLSIpICE9IGhhc19zZXA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkluY29uc2lzdGVudCB1c2Ugb2YgZGFzaCBzZXBhcmF0b3IiKQoKICAgICAgICBwb3MgKz0gaGFzX3NlcAogICAgICAgIGRheSA9IGludChkdHN0cltwb3M6cG9zICsgMl0pCgogICAgICAgIHJldHVybiBbeWVhciwgbW9udGgsIGRheV0KCgpfRlJBQ1RJT05fQ09SUkVDVElPTiA9IFsxMDAwMDAsIDEwMDAwLCAxMDAwLCAxMDAsIDEwXQoKCmRlZiBfcGFyc2VfaGhfbW1fc3NfZmYodHN0cik6CiAgICAjIFBhcnNlcyB0aGluZ3Mgb2YgdGhlIGZvcm0gSEhbOj9NTVs6P1NTW3suLH1mZmZbZmZmXV1dXQogICAgbGVuX3N0ciA9IGxlbih0c3RyKQoKICAgIHRpbWVfY29tcHMgPSBbMCwgMCwgMCwgMF0KICAgIHBvcyA9IDAKICAgIGZvciBjb21wIGluIHJhbmdlKDAsIDMpOgogICAgICAgIGlmIChsZW5fc3RyIC0gcG9zKSA8IDI6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkluY29tcGxldGUgdGltZSBjb21wb25lbnQiKQoKICAgICAgICB0aW1lX2NvbXBzW2NvbXBdID0gaW50KHRzdHJbcG9zOnBvcysyXSkKCiAgICAgICAgcG9zICs9IDIKICAgICAgICBuZXh0X2NoYXIgPSB0c3RyW3Bvczpwb3MrMV0KCiAgICAgICAgaWYgY29tcCA9PSAwOgogICAgICAgICAgICBoYXNfc2VwID0gbmV4dF9jaGFyID09ICc6JwoKICAgICAgICBpZiBub3QgbmV4dF9jaGFyIG9yIGNvbXAgPj0gMjoKICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgaWYgaGFzX3NlcCBhbmQgbmV4dF9jaGFyICE9ICc6JzoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCB0aW1lIHNlcGFyYXRvcjogJWMiICUgbmV4dF9jaGFyKQoKICAgICAgICBwb3MgKz0gaGFzX3NlcAoKICAgIGlmIHBvcyA8IGxlbl9zdHI6CiAgICAgICAgaWYgdHN0cltwb3NdIG5vdCBpbiAnLiwnOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1pY3Jvc2Vjb25kIGNvbXBvbmVudCIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcG9zICs9IDEKCiAgICAgICAgICAgIGxlbl9yZW1haW5kZXIgPSBsZW5fc3RyIC0gcG9zCgogICAgICAgICAgICBpZiBsZW5fcmVtYWluZGVyID49IDY6CiAgICAgICAgICAgICAgICB0b19wYXJzZSA9IDYKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRvX3BhcnNlID0gbGVuX3JlbWFpbmRlcgoKICAgICAgICAgICAgdGltZV9jb21wc1szXSA9IGludCh0c3RyW3BvczoocG9zK3RvX3BhcnNlKV0pCiAgICAgICAgICAgIGlmIHRvX3BhcnNlIDwgNjoKICAgICAgICAgICAgICAgIHRpbWVfY29tcHNbM10gKj0gX0ZSQUNUSU9OX0NPUlJFQ1RJT05bdG9fcGFyc2UtMV0KICAgICAgICAgICAgaWYgKGxlbl9yZW1haW5kZXIgPiB0b19wYXJzZQogICAgICAgICAgICAgICAgICAgIGFuZCBub3QgYWxsKG1hcChfaXNfYXNjaWlfZGlnaXQsIHRzdHJbKHBvcyt0b19wYXJzZSk6XSkpKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vbi1kaWdpdCB2YWx1ZXMgaW4gdW5wYXJzZWQgZnJhY3Rpb24iKQoKICAgIHJldHVybiB0aW1lX2NvbXBzCgpkZWYgX3BhcnNlX2lzb2Zvcm1hdF90aW1lKHRzdHIpOgogICAgIyBGb3JtYXQgc3VwcG9ydGVkIGlzIEhIWzpNTVs6U1NbLmZmZltmZmZdXV1dWytISDpNTVs6U1NbLmZmZmZmZl1dXQogICAgbGVuX3N0ciA9IGxlbih0c3RyKQogICAgaWYgbGVuX3N0ciA8IDI6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSXNvZm9ybWF0IHRpbWUgdG9vIHNob3J0IikKCiAgICAjIFRoaXMgaXMgZXF1aXZhbGVudCB0byByZS5zZWFyY2goJ1srLVpdJywgdHN0ciksIGJ1dCBmYXN0ZXIKICAgIHR6X3BvcyA9ICh0c3RyLmZpbmQoJy0nKSArIDEgb3IgdHN0ci5maW5kKCcrJykgKyAxIG9yIHRzdHIuZmluZCgnWicpICsgMSkKICAgIHRpbWVzdHIgPSB0c3RyWzp0el9wb3MtMV0gaWYgdHpfcG9zID4gMCBlbHNlIHRzdHIKCiAgICB0aW1lX2NvbXBzID0gX3BhcnNlX2hoX21tX3NzX2ZmKHRpbWVzdHIpCgogICAgdHppID0gTm9uZQogICAgaWYgdHpfcG9zID09IGxlbl9zdHIgYW5kIHRzdHJbLTFdID09ICdaJzoKICAgICAgICB0emkgPSB0aW1lem9uZS51dGMKICAgIGVsaWYgdHpfcG9zID4gMDoKICAgICAgICB0enN0ciA9IHRzdHJbdHpfcG9zOl0KCiAgICAgICAgIyBWYWxpZCB0aW1lIHpvbmUgc3RyaW5ncyBhcmU6CiAgICAgICAgIyBISCAgICAgICAgICAgICAgICAgIGxlbjogMgogICAgICAgICMgSEhNTSAgICAgICAgICAgICAgICBsZW46IDQKICAgICAgICAjIEhIOk1NICAgICAgICAgICAgICAgbGVuOiA1CiAgICAgICAgIyBISE1NU1MgICAgICAgICAgICAgIGxlbjogNgogICAgICAgICMgSEhNTVNTLmYrICAgICAgICAgICBsZW46IDcrCiAgICAgICAgIyBISDpNTTpTUyAgICAgICAgICAgIGxlbjogOAogICAgICAgICMgSEg6TU06U1MuZisgICAgICAgICBsZW46IDEwKwoKICAgICAgICBpZiBsZW4odHpzdHIpIGluICgwLCAxLCAzKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTWFsZm9ybWVkIHRpbWUgem9uZSBzdHJpbmciKQoKICAgICAgICB0el9jb21wcyA9IF9wYXJzZV9oaF9tbV9zc19mZih0enN0cikKCiAgICAgICAgaWYgYWxsKHggPT0gMCBmb3IgeCBpbiB0el9jb21wcyk6CiAgICAgICAgICAgIHR6aSA9IHRpbWV6b25lLnV0YwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHR6c2lnbiA9IC0xIGlmIHRzdHJbdHpfcG9zIC0gMV0gPT0gJy0nIGVsc2UgMQoKICAgICAgICAgICAgdGQgPSB0aW1lZGVsdGEoaG91cnM9dHpfY29tcHNbMF0sIG1pbnV0ZXM9dHpfY29tcHNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9dHpfY29tcHNbMl0sIG1pY3Jvc2Vjb25kcz10el9jb21wc1szXSkKCiAgICAgICAgICAgIHR6aSA9IHRpbWV6b25lKHR6c2lnbiAqIHRkKQoKICAgIHRpbWVfY29tcHMuYXBwZW5kKHR6aSkKCiAgICByZXR1cm4gdGltZV9jb21wcwoKIyB0dXBsZVtpbnQsIGludCwgaW50XSAtPiB0dXBsZVtpbnQsIGludCwgaW50XSB2ZXJzaW9uIG9mIGRhdGUuZnJvbWlzb2NhbGVuZGFyCmRlZiBfaXNvd2Vla190b19ncmVnb3JpYW4oeWVhciwgd2VlaywgZGF5KToKICAgICMgWWVhciBpcyBib3VuZGVkIHRoaXMgd2F5IGJlY2F1c2UgOTk5OS0xMi0zMSBpcyAoOTk5OSwgNTIsIDUpCiAgICBpZiBub3QgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVI6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIlllYXIgaXMgb3V0IG9mIHJhbmdlOiB7eWVhcn0iKQoKICAgIGlmIG5vdCAwIDwgd2VlayA8IDUzOgogICAgICAgIG91dF9vZl9yYW5nZSA9IFRydWUKCiAgICAgICAgaWYgd2VlayA9PSA1MzoKICAgICAgICAgICAgIyBJU08geWVhcnMgaGF2ZSA1MyB3ZWVrcyBpbiB0aGVtIG9uIHllYXJzIHN0YXJ0aW5nIHdpdGggYQogICAgICAgICAgICAjIFRodXJzZGF5IGFuZCBsZWFwIHllYXJzIHN0YXJ0aW5nIG9uIGEgV2VkbmVzZGF5CiAgICAgICAgICAgIGZpcnN0X3dlZWtkYXkgPSBfeW1kMm9yZCh5ZWFyLCAxLCAxKSAlIDcKICAgICAgICAgICAgaWYgKGZpcnN0X3dlZWtkYXkgPT0gNCBvciAoZmlyc3Rfd2Vla2RheSA9PSAzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaXNfbGVhcCh5ZWFyKSkpOgogICAgICAgICAgICAgICAgb3V0X29mX3JhbmdlID0gRmFsc2UKCiAgICAgICAgaWYgb3V0X29mX3JhbmdlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiSW52YWxpZCB3ZWVrOiB7d2Vla30iKQoKICAgIGlmIG5vdCAwIDwgZGF5IDwgODoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiSW52YWxpZCB3ZWVrZGF5OiB7ZGF5fSAocmFuZ2UgaXMgWzEsIDddKSIpCgogICAgIyBOb3cgY29tcHV0ZSB0aGUgb2Zmc2V0IGZyb20gKFksIDEsIDEpIGluIGRheXM6CiAgICBkYXlfb2Zmc2V0ID0gKHdlZWsgLSAxKSAqIDcgKyAoZGF5IC0gMSkKCiAgICAjIENhbGN1bGF0ZSB0aGUgb3JkaW5hbCBkYXkgZm9yIG1vbmRheSwgd2VlayAxCiAgICBkYXlfMSA9IF9pc293ZWVrMW1vbmRheSh5ZWFyKQogICAgb3JkX2RheSA9IGRheV8xICsgZGF5X29mZnNldAoKICAgIHJldHVybiBfb3JkMnltZChvcmRfZGF5KQoKCiMgSnVzdCByYWlzZSBUeXBlRXJyb3IgaWYgdGhlIGFyZyBpc24ndCBOb25lIG9yIGEgc3RyaW5nLgpkZWYgX2NoZWNrX3R6bmFtZShuYW1lKToKICAgIGlmIG5hbWUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0emluZm8udHpuYW1lKCkgbXVzdCByZXR1cm4gTm9uZSBvciBzdHJpbmcsICIKICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJXMnIiAlIHR5cGUobmFtZSkpCgojIG5hbWUgaXMgdGhlIG9mZnNldC1wcm9kdWNpbmcgbWV0aG9kLCAidXRjb2Zmc2V0IiBvciAiZHN0Ii4KIyBvZmZzZXQgaXMgd2hhdCBpdCByZXR1cm5lZC4KIyBJZiBvZmZzZXQgaXNuJ3QgTm9uZSBvciB0aW1lZGVsdGEsIHJhaXNlcyBUeXBlRXJyb3IuCiMgSWYgb2Zmc2V0IGlzIE5vbmUsIHJldHVybnMgTm9uZS4KIyBFbHNlIG9mZnNldCBpcyBjaGVja2VkIGZvciBiZWluZyBpbiByYW5nZS4KIyBJZiBpdCBpcywgaXRzIGludGVnZXIgdmFsdWUgaXMgcmV0dXJuZWQuICBFbHNlIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgpkZWYgX2NoZWNrX3V0Y19vZmZzZXQobmFtZSwgb2Zmc2V0KToKICAgIGFzc2VydCBuYW1lIGluICgidXRjb2Zmc2V0IiwgImRzdCIpCiAgICBpZiBvZmZzZXQgaXMgTm9uZToKICAgICAgICByZXR1cm4KICAgIGlmIG5vdCBpc2luc3RhbmNlKG9mZnNldCwgdGltZWRlbHRhKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6aW5mby4lcygpIG11c3QgcmV0dXJuIE5vbmUgIgogICAgICAgICAgICAgICAgICAgICAgICAib3IgdGltZWRlbHRhLCBub3QgJyVzJyIgJSAobmFtZSwgdHlwZShvZmZzZXQpKSkKICAgIGlmIG5vdCAtdGltZWRlbHRhKDEpIDwgb2Zmc2V0IDwgdGltZWRlbHRhKDEpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgc3RyaWN0bHkgYmV0d2VlbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiICUKICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBvZmZzZXQpKQoKZGVmIF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KToKICAgIHllYXIgPSBfaW5kZXgoeWVhcikKICAgIG1vbnRoID0gX2luZGV4KG1vbnRoKQogICAgZGF5ID0gX2luZGV4KGRheSkKICAgIGlmIG5vdCBNSU5ZRUFSIDw9IHllYXIgPD0gTUFYWUVBUjoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5ZWFyIG11c3QgYmUgaW4gJWQuLiVkJyAlIChNSU5ZRUFSLCBNQVhZRUFSKSwgeWVhcikKICAgIGlmIG5vdCAxIDw9IG1vbnRoIDw9IDEyOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21vbnRoIG11c3QgYmUgaW4gMS4uMTInLCBtb250aCkKICAgIGRpbSA9IF9kYXlzX2luX21vbnRoKHllYXIsIG1vbnRoKQogICAgaWYgbm90IDEgPD0gZGF5IDw9IGRpbToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkYXkgbXVzdCBiZSBpbiAxLi4lZCcgJSBkaW0sIGRheSkKICAgIHJldHVybiB5ZWFyLCBtb250aCwgZGF5CgpkZWYgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCk6CiAgICBob3VyID0gX2luZGV4KGhvdXIpCiAgICBtaW51dGUgPSBfaW5kZXgobWludXRlKQogICAgc2Vjb25kID0gX2luZGV4KHNlY29uZCkKICAgIG1pY3Jvc2Vjb25kID0gX2luZGV4KG1pY3Jvc2Vjb25kKQogICAgaWYgbm90IDAgPD0gaG91ciA8PSAyMzoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdob3VyIG11c3QgYmUgaW4gMC4uMjMnLCBob3VyKQogICAgaWYgbm90IDAgPD0gbWludXRlIDw9IDU5OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21pbnV0ZSBtdXN0IGJlIGluIDAuLjU5JywgbWludXRlKQogICAgaWYgbm90IDAgPD0gc2Vjb25kIDw9IDU5OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlY29uZCBtdXN0IGJlIGluIDAuLjU5Jywgc2Vjb25kKQogICAgaWYgbm90IDAgPD0gbWljcm9zZWNvbmQgPD0gOTk5OTk5OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21pY3Jvc2Vjb25kIG11c3QgYmUgaW4gMC4uOTk5OTk5JywgbWljcm9zZWNvbmQpCiAgICBpZiBmb2xkIG5vdCBpbiAoMCwgMSk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZm9sZCBtdXN0IGJlIGVpdGhlciAwIG9yIDEnLCBmb2xkKQogICAgcmV0dXJuIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZAoKZGVmIF9jaGVja190emluZm9fYXJnKHR6KToKICAgIGlmIHR6IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6aW5mbyBhcmd1bWVudCBtdXN0IGJlIE5vbmUgb3Igb2YgYSB0emluZm8gc3ViY2xhc3MiKQoKZGVmIF9jbXBlcnJvcih4LCB5KToKICAgIHJhaXNlIFR5cGVFcnJvcigiY2FuJ3QgY29tcGFyZSAnJXMnIHRvICclcyciICUgKAogICAgICAgICAgICAgICAgICAgIHR5cGUoeCkuX19uYW1lX18sIHR5cGUoeSkuX19uYW1lX18pKQoKZGVmIF9kaXZpZGVfYW5kX3JvdW5kKGEsIGIpOgogICAgIiIiZGl2aWRlIGEgYnkgYiBhbmQgcm91bmQgcmVzdWx0IHRvIHRoZSBuZWFyZXN0IGludGVnZXIKCiAgICBXaGVuIHRoZSByYXRpbyBpcyBleGFjdGx5IGhhbGYtd2F5IGJldHdlZW4gdHdvIGludGVnZXJzLAogICAgdGhlIGV2ZW4gaW50ZWdlciBpcyByZXR1cm5lZC4KICAgICIiIgogICAgIyBCYXNlZCBvbiB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBkaXZtb2RfbmVhcgogICAgIyBpbiBPYmplY3RzL2xvbmdvYmplY3QuYy4KICAgIHEsIHIgPSBkaXZtb2QoYSwgYikKICAgICMgcm91bmQgdXAgaWYgZWl0aGVyIHIgLyBiID4gMC41LCBvciByIC8gYiA9PSAwLjUgYW5kIHEgaXMgb2RkLgogICAgIyBUaGUgZXhwcmVzc2lvbiByIC8gYiA+IDAuNSBpcyBlcXVpdmFsZW50IHRvIDIgKiByID4gYiBpZiBiIGlzCiAgICAjIHBvc2l0aXZlLCAyICogciA8IGIgaWYgYiBuZWdhdGl2ZS4KICAgIHIgKj0gMgogICAgZ3JlYXRlcl90aGFuX2hhbGYgPSByID4gYiBpZiBiID4gMCBlbHNlIHIgPCBiCiAgICBpZiBncmVhdGVyX3RoYW5faGFsZiBvciByID09IGIgYW5kIHEgJSAyID09IDE6CiAgICAgICAgcSArPSAxCgogICAgcmV0dXJuIHEKCgpjbGFzcyB0aW1lZGVsdGE6CiAgICAiIiJSZXByZXNlbnQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXRpbWUgb2JqZWN0cy4KCiAgICBTdXBwb3J0ZWQgb3BlcmF0b3JzOgoKICAgIC0gYWRkLCBzdWJ0cmFjdCB0aW1lZGVsdGEKICAgIC0gdW5hcnkgcGx1cywgbWludXMsIGFicwogICAgLSBjb21wYXJlIHRvIHRpbWVkZWx0YQogICAgLSBtdWx0aXBseSwgZGl2aWRlIGJ5IGludAoKICAgIEluIGFkZGl0aW9uLCBkYXRldGltZSBzdXBwb3J0cyBzdWJ0cmFjdGlvbiBvZiB0d28gZGF0ZXRpbWUgb2JqZWN0cwogICAgcmV0dXJuaW5nIGEgdGltZWRlbHRhLCBhbmQgYWRkaXRpb24gb3Igc3VidHJhY3Rpb24gb2YgYSBkYXRldGltZQogICAgYW5kIGEgdGltZWRlbHRhIGdpdmluZyBhIGRhdGV0aW1lLgoKICAgIFJlcHJlc2VudGF0aW9uOiAoZGF5cywgc2Vjb25kcywgbWljcm9zZWNvbmRzKS4gIFdoeT8gIEJlY2F1c2UgSQogICAgZmVsdCBsaWtlIGl0LgogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAnX2RheXMnLCAnX3NlY29uZHMnLCAnX21pY3Jvc2Vjb25kcycsICdfaGFzaGNvZGUnCgogICAgZGVmIF9fbmV3X18oY2xzLCBkYXlzPTAsIHNlY29uZHM9MCwgbWljcm9zZWNvbmRzPTAsCiAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM9MCwgbWludXRlcz0wLCBob3Vycz0wLCB3ZWVrcz0wKToKICAgICAgICAjIERvaW5nIHRoaXMgZWZmaWNpZW50bHkgYW5kIGFjY3VyYXRlbHkgaW4gQyBpcyBnb2luZyB0byBiZSBkaWZmaWN1bHQKICAgICAgICAjIGFuZCBlcnJvci1wcm9uZSwgZHVlIHRvIHViaXF1aXRvdXMgb3ZlcmZsb3cgcG9zc2liaWxpdGllcywgYW5kIHRoYXQKICAgICAgICAjIEMgZG91YmxlIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggYml0cyBvZiBwcmVjaXNpb24gdG8gcmVwcmVzZW50CiAgICAgICAgIyBtaWNyb3NlY29uZHMgb3ZlciAxMEsgeWVhcnMgZmFpdGhmdWxseS4gIFRoZSBjb2RlIGhlcmUgdHJpZXMgdG8gbWFrZQogICAgICAgICMgZXhwbGljaXQgd2hlcmUgZ28tZmFzdCBhc3N1bXB0aW9ucyBjYW4gYmUgcmVsaWVkIG9uLCBpbiBvcmRlciB0bwogICAgICAgICMgZ3VpZGUgdGhlIEMgaW1wbGVtZW50YXRpb247IGl0J3Mgd2F5IG1vcmUgY29udm9sdXRlZCB0aGFuIHNwZWVkLQogICAgICAgICMgaWdub3JpbmcgYXV0by1vdmVyZmxvdy10by1sb25nIGlkaW9tYXRpYyBQeXRob24gY291bGQgYmUuCgogICAgICAgICMgWFhYIENoZWNrIHRoYXQgYWxsIGlucHV0cyBhcmUgaW50cyBvciBmbG9hdHMuCgogICAgICAgICMgRmluYWwgdmFsdWVzLCBhbGwgaW50ZWdlci4KICAgICAgICAjIHMgYW5kIHVzIGZpdCBpbiAzMi1iaXQgc2lnbmVkIGludHM7IGQgaXNuJ3QgYm91bmRlZC4KICAgICAgICBkID0gcyA9IHVzID0gMAoKICAgICAgICAjIE5vcm1hbGl6ZSBldmVyeXRoaW5nIHRvIGRheXMsIHNlY29uZHMsIG1pY3Jvc2Vjb25kcy4KICAgICAgICBkYXlzICs9IHdlZWtzKjcKICAgICAgICBzZWNvbmRzICs9IG1pbnV0ZXMqNjAgKyBob3VycyozNjAwCiAgICAgICAgbWljcm9zZWNvbmRzICs9IG1pbGxpc2Vjb25kcyoxMDAwCgogICAgICAgICMgR2V0IHJpZCBvZiBhbGwgZnJhY3Rpb25zLCBhbmQgbm9ybWFsaXplIHMgYW5kIHVzLgogICAgICAgICMgVGFrZSBhIGRlZXAgYnJlYXRoIDx3aW5rPi4KICAgICAgICBpZiBpc2luc3RhbmNlKGRheXMsIGZsb2F0KToKICAgICAgICAgICAgZGF5ZnJhYywgZGF5cyA9IF9tYXRoLm1vZGYoZGF5cykKICAgICAgICAgICAgZGF5c2Vjb25kc2ZyYWMsIGRheXNlY29uZHN3aG9sZSA9IF9tYXRoLm1vZGYoZGF5ZnJhYyAqICgyNC4qMzYwMC4pKQogICAgICAgICAgICBhc3NlcnQgZGF5c2Vjb25kc3dob2xlID09IGludChkYXlzZWNvbmRzd2hvbGUpICAjIGNhbid0IG92ZXJmbG93CiAgICAgICAgICAgIHMgPSBpbnQoZGF5c2Vjb25kc3dob2xlKQogICAgICAgICAgICBhc3NlcnQgZGF5cyA9PSBpbnQoZGF5cykKICAgICAgICAgICAgZCA9IGludChkYXlzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRheXNlY29uZHNmcmFjID0gMC4wCiAgICAgICAgICAgIGQgPSBkYXlzCiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGF5c2Vjb25kc2ZyYWMsIGZsb2F0KQogICAgICAgIGFzc2VydCBhYnMoZGF5c2Vjb25kc2ZyYWMpIDw9IDEuMAogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGQsIGludCkKICAgICAgICBhc3NlcnQgYWJzKHMpIDw9IDI0ICogMzYwMAogICAgICAgICMgZGF5cyBpc24ndCByZWZlcmVuY2VkIGFnYWluIGJlZm9yZSByZWRlZmluaXRpb24KCiAgICAgICAgaWYgaXNpbnN0YW5jZShzZWNvbmRzLCBmbG9hdCk6CiAgICAgICAgICAgIHNlY29uZHNmcmFjLCBzZWNvbmRzID0gX21hdGgubW9kZihzZWNvbmRzKQogICAgICAgICAgICBhc3NlcnQgc2Vjb25kcyA9PSBpbnQoc2Vjb25kcykKICAgICAgICAgICAgc2Vjb25kcyA9IGludChzZWNvbmRzKQogICAgICAgICAgICBzZWNvbmRzZnJhYyArPSBkYXlzZWNvbmRzZnJhYwogICAgICAgICAgICBhc3NlcnQgYWJzKHNlY29uZHNmcmFjKSA8PSAyLjAKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWNvbmRzZnJhYyA9IGRheXNlY29uZHNmcmFjCiAgICAgICAgIyBkYXlzZWNvbmRzZnJhYyBpc24ndCByZWZlcmVuY2VkIGFnYWluCiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2Vjb25kc2ZyYWMsIGZsb2F0KQogICAgICAgIGFzc2VydCBhYnMoc2Vjb25kc2ZyYWMpIDw9IDIuMAoKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWNvbmRzLCBpbnQpCiAgICAgICAgZGF5cywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCAyNCozNjAwKQogICAgICAgIGQgKz0gZGF5cwogICAgICAgIHMgKz0gaW50KHNlY29uZHMpICAgICMgY2FuJ3Qgb3ZlcmZsb3cKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBpbnQpCiAgICAgICAgYXNzZXJ0IGFicyhzKSA8PSAyICogMjQgKiAzNjAwCiAgICAgICAgIyBzZWNvbmRzIGlzbid0IHJlZmVyZW5jZWQgYWdhaW4gYmVmb3JlIHJlZGVmaW5pdGlvbgoKICAgICAgICB1c2RvdWJsZSA9IHNlY29uZHNmcmFjICogMWU2CiAgICAgICAgYXNzZXJ0IGFicyh1c2RvdWJsZSkgPCAyLjFlNiAgICAjIGV4YWN0IHZhbHVlIG5vdCBjcml0aWNhbAogICAgICAgICMgc2Vjb25kc2ZyYWMgaXNuJ3QgcmVmZXJlbmNlZCBhZ2FpbgoKICAgICAgICBpZiBpc2luc3RhbmNlKG1pY3Jvc2Vjb25kcywgZmxvYXQpOgogICAgICAgICAgICBtaWNyb3NlY29uZHMgPSByb3VuZChtaWNyb3NlY29uZHMgKyB1c2RvdWJsZSkKICAgICAgICAgICAgc2Vjb25kcywgbWljcm9zZWNvbmRzID0gZGl2bW9kKG1pY3Jvc2Vjb25kcywgMTAwMDAwMCkKICAgICAgICAgICAgZGF5cywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCAyNCozNjAwKQogICAgICAgICAgICBkICs9IGRheXMKICAgICAgICAgICAgcyArPSBzZWNvbmRzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gaW50KG1pY3Jvc2Vjb25kcykKICAgICAgICAgICAgc2Vjb25kcywgbWljcm9zZWNvbmRzID0gZGl2bW9kKG1pY3Jvc2Vjb25kcywgMTAwMDAwMCkKICAgICAgICAgICAgZGF5cywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCAyNCozNjAwKQogICAgICAgICAgICBkICs9IGRheXMKICAgICAgICAgICAgcyArPSBzZWNvbmRzCiAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcyArIHVzZG91YmxlKQogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGludCkKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtaWNyb3NlY29uZHMsIGludCkKICAgICAgICBhc3NlcnQgYWJzKHMpIDw9IDMgKiAyNCAqIDM2MDAKICAgICAgICBhc3NlcnQgYWJzKG1pY3Jvc2Vjb25kcykgPCAzLjFlNgoKICAgICAgICAjIEp1c3QgYSBsaXR0bGUgYml0IG9mIGNhcnJ5aW5nIHBvc3NpYmxlIGZvciBtaWNyb3NlY29uZHMgYW5kIHNlY29uZHMuCiAgICAgICAgc2Vjb25kcywgdXMgPSBkaXZtb2QobWljcm9zZWNvbmRzLCAxMDAwMDAwKQogICAgICAgIHMgKz0gc2Vjb25kcwogICAgICAgIGRheXMsIHMgPSBkaXZtb2QocywgMjQqMzYwMCkKICAgICAgICBkICs9IGRheXMKCiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZCwgaW50KQogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGludCkgYW5kIDAgPD0gcyA8IDI0KjM2MDAKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh1cywgaW50KSBhbmQgMCA8PSB1cyA8IDEwMDAwMDAKCiAgICAgICAgaWYgYWJzKGQpID4gOTk5OTk5OTk5OgogICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJ0aW1lZGVsdGEgIyBvZiBkYXlzIGlzIHRvbyBsYXJnZTogJWQiICUgZCkKCiAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICBzZWxmLl9kYXlzID0gZAogICAgICAgIHNlbGYuX3NlY29uZHMgPSBzCiAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzID0gdXMKICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgYXJncyA9IFtdCiAgICAgICAgaWYgc2VsZi5fZGF5czoKICAgICAgICAgICAgYXJncy5hcHBlbmQoImRheXM9JWQiICUgc2VsZi5fZGF5cykKICAgICAgICBpZiBzZWxmLl9zZWNvbmRzOgogICAgICAgICAgICBhcmdzLmFwcGVuZCgic2Vjb25kcz0lZCIgJSBzZWxmLl9zZWNvbmRzKQogICAgICAgIGlmIHNlbGYuX21pY3Jvc2Vjb25kczoKICAgICAgICAgICAgYXJncy5hcHBlbmQoIm1pY3Jvc2Vjb25kcz0lZCIgJSBzZWxmLl9taWNyb3NlY29uZHMpCiAgICAgICAgaWYgbm90IGFyZ3M6CiAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCcwJykKICAgICAgICByZXR1cm4gIiVzLiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oYXJncykpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgbW0sIHNzID0gZGl2bW9kKHNlbGYuX3NlY29uZHMsIDYwKQogICAgICAgIGhoLCBtbSA9IGRpdm1vZChtbSwgNjApCiAgICAgICAgcyA9ICIlZDolMDJkOiUwMmQiICUgKGhoLCBtbSwgc3MpCiAgICAgICAgaWYgc2VsZi5fZGF5czoKICAgICAgICAgICAgZGVmIHBsdXJhbChuKToKICAgICAgICAgICAgICAgIHJldHVybiBuLCBhYnMobikgIT0gMSBhbmQgInMiIG9yICIiCiAgICAgICAgICAgIHMgPSAoIiVkIGRheSVzLCAiICUgcGx1cmFsKHNlbGYuX2RheXMpKSArIHMKICAgICAgICBpZiBzZWxmLl9taWNyb3NlY29uZHM6CiAgICAgICAgICAgIHMgPSBzICsgIi4lMDZkIiAlIHNlbGYuX21pY3Jvc2Vjb25kcwogICAgICAgIHJldHVybiBzCgogICAgZGVmIHRvdGFsX3NlY29uZHMoc2VsZik6CiAgICAgICAgIiIiVG90YWwgc2Vjb25kcyBpbiB0aGUgZHVyYXRpb24uIiIiCiAgICAgICAgcmV0dXJuICgoc2VsZi5kYXlzICogODY0MDAgKyBzZWxmLnNlY29uZHMpICogMTAqKjYgKwogICAgICAgICAgICAgICAgc2VsZi5taWNyb3NlY29uZHMpIC8gMTAqKjYKCiAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRheXMoc2VsZik6CiAgICAgICAgIiIiZGF5cyIiIgogICAgICAgIHJldHVybiBzZWxmLl9kYXlzCgogICAgQHByb3BlcnR5CiAgICBkZWYgc2Vjb25kcyhzZWxmKToKICAgICAgICAiIiJzZWNvbmRzIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3NlY29uZHMKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtaWNyb3NlY29uZHMoc2VsZik6CiAgICAgICAgIiIibWljcm9zZWNvbmRzIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX21pY3Jvc2Vjb25kcwoKICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAjIGZvciBDUHl0aG9uIGNvbXBhdGliaWxpdHksIHdlIGNhbm5vdCB1c2UKICAgICAgICAgICAgIyBvdXIgX19jbGFzc19fIGhlcmUsIGJ1dCBuZWVkIGEgcmVhbCB0aW1lZGVsdGEKICAgICAgICAgICAgcmV0dXJuIHRpbWVkZWx0YShzZWxmLl9kYXlzICsgb3RoZXIuX2RheXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Vjb25kcyArIG90aGVyLl9zZWNvbmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kcyArIG90aGVyLl9taWNyb3NlY29uZHMpCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgX19yYWRkX18gPSBfX2FkZF9fCgogICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgICMgZm9yIENQeXRob24gY29tcGF0aWJpbGl0eSwgd2UgY2Fubm90IHVzZQogICAgICAgICAgICAjIG91ciBfX2NsYXNzX18gaGVyZSwgYnV0IG5lZWQgYSByZWFsIHRpbWVkZWx0YQogICAgICAgICAgICByZXR1cm4gdGltZWRlbHRhKHNlbGYuX2RheXMgLSBvdGhlci5fZGF5cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzIC0gb3RoZXIuX3NlY29uZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzIC0gb3RoZXIuX21pY3Jvc2Vjb25kcykKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgIHJldHVybiAtc2VsZiArIG90aGVyCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fbmVnX18oc2VsZik6CiAgICAgICAgIyBmb3IgQ1B5dGhvbiBjb21wYXRpYmlsaXR5LCB3ZSBjYW5ub3QgdXNlCiAgICAgICAgIyBvdXIgX19jbGFzc19fIGhlcmUsIGJ1dCBuZWVkIGEgcmVhbCB0aW1lZGVsdGEKICAgICAgICByZXR1cm4gdGltZWRlbHRhKC1zZWxmLl9kYXlzLAogICAgICAgICAgICAgICAgICAgICAgICAgLXNlbGYuX3NlY29uZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAtc2VsZi5fbWljcm9zZWNvbmRzKQoKICAgIGRlZiBfX3Bvc19fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fYWJzX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fZGF5cyA8IDA6CiAgICAgICAgICAgIHJldHVybiAtc2VsZgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fbXVsX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGludCk6CiAgICAgICAgICAgICMgZm9yIENQeXRob24gY29tcGF0aWJpbGl0eSwgd2UgY2Fubm90IHVzZQogICAgICAgICAgICAjIG91ciBfX2NsYXNzX18gaGVyZSwgYnV0IG5lZWQgYSByZWFsIHRpbWVkZWx0YQogICAgICAgICAgICByZXR1cm4gdGltZWRlbHRhKHNlbGYuX2RheXMgKiBvdGhlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzICogb3RoZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzICogb3RoZXIpCiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgogICAgICAgICAgICB1c2VjID0gc2VsZi5fdG9fbWljcm9zZWNvbmRzKCkKICAgICAgICAgICAgYSwgYiA9IG90aGVyLmFzX2ludGVnZXJfcmF0aW8oKQogICAgICAgICAgICByZXR1cm4gdGltZWRlbHRhKDAsIDAsIF9kaXZpZGVfYW5kX3JvdW5kKHVzZWMgKiBhLCBiKSkKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBfX3JtdWxfXyA9IF9fbXVsX18KCiAgICBkZWYgX3RvX21pY3Jvc2Vjb25kcyhzZWxmKToKICAgICAgICByZXR1cm4gKChzZWxmLl9kYXlzICogKDI0KjM2MDApICsgc2VsZi5fc2Vjb25kcykgKiAxMDAwMDAwICsKICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kcykKCiAgICBkZWYgX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgKGludCwgdGltZWRlbHRhKSk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHVzZWMgPSBzZWxmLl90b19taWNyb3NlY29uZHMoKQogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgIHJldHVybiB1c2VjIC8vIG90aGVyLl90b19taWNyb3NlY29uZHMoKQogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGludCk6CiAgICAgICAgICAgIHJldHVybiB0aW1lZGVsdGEoMCwgMCwgdXNlYyAvLyBvdGhlcikKCiAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoaW50LCBmbG9hdCwgdGltZWRlbHRhKSk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHVzZWMgPSBzZWxmLl90b19taWNyb3NlY29uZHMoKQogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgIHJldHVybiB1c2VjIC8gb3RoZXIuX3RvX21pY3Jvc2Vjb25kcygpCiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgaW50KToKICAgICAgICAgICAgcmV0dXJuIHRpbWVkZWx0YSgwLCAwLCBfZGl2aWRlX2FuZF9yb3VuZCh1c2VjLCBvdGhlcikpCiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgogICAgICAgICAgICBhLCBiID0gb3RoZXIuYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgICAgIHJldHVybiB0aW1lZGVsdGEoMCwgMCwgX2RpdmlkZV9hbmRfcm91bmQoYiAqIHVzZWMsIGEpKQoKICAgIGRlZiBfX21vZF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICByID0gc2VsZi5fdG9fbWljcm9zZWNvbmRzKCkgJSBvdGhlci5fdG9fbWljcm9zZWNvbmRzKCkKICAgICAgICAgICAgcmV0dXJuIHRpbWVkZWx0YSgwLCAwLCByKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2Rpdm1vZF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICBxLCByID0gZGl2bW9kKHNlbGYuX3RvX21pY3Jvc2Vjb25kcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl90b19taWNyb3NlY29uZHMoKSkKICAgICAgICAgICAgcmV0dXJuIHEsIHRpbWVkZWx0YSgwLCAwLCByKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICMgQ29tcGFyaXNvbnMgb2YgdGltZWRlbHRhIG9iamVjdHMgd2l0aCBvdGhlci4KCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZWRlbHRhKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDwgMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID49IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA+IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6CiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSkKICAgICAgICByZXR1cm4gX2NtcChzZWxmLl9nZXRzdGF0ZSgpLCBvdGhlci5fZ2V0c3RhdGUoKSkKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6CiAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQogICAgICAgIHJldHVybiBzZWxmLl9oYXNoY29kZQoKICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKICAgICAgICByZXR1cm4gKHNlbGYuX2RheXMgIT0gMCBvcgogICAgICAgICAgICAgICAgc2VsZi5fc2Vjb25kcyAhPSAwIG9yCiAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZHMgIT0gMCkKCiAgICAjIFBpY2tsZSBzdXBwb3J0LgoKICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgcmV0dXJuIChzZWxmLl9kYXlzLCBzZWxmLl9zZWNvbmRzLCBzZWxmLl9taWNyb3NlY29uZHMpCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKCnRpbWVkZWx0YS5taW4gPSB0aW1lZGVsdGEoLTk5OTk5OTk5OSkKdGltZWRlbHRhLm1heCA9IHRpbWVkZWx0YShkYXlzPTk5OTk5OTk5OSwgaG91cnM9MjMsIG1pbnV0ZXM9NTksIHNlY29uZHM9NTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmRzPTk5OTk5OSkKdGltZWRlbHRhLnJlc29sdXRpb24gPSB0aW1lZGVsdGEobWljcm9zZWNvbmRzPTEpCgpjbGFzcyBkYXRlOgogICAgIiIiQ29uY3JldGUgZGF0ZSB0eXBlLgoKICAgIENvbnN0cnVjdG9yczoKCiAgICBfX25ld19fKCkKICAgIGZyb210aW1lc3RhbXAoKQogICAgdG9kYXkoKQogICAgZnJvbW9yZGluYWwoKQoKICAgIE9wZXJhdG9yczoKCiAgICBfX3JlcHJfXywgX19zdHJfXwogICAgX19lcV9fLCBfX2xlX18sIF9fbHRfXywgX19nZV9fLCBfX2d0X18sIF9faGFzaF9fCiAgICBfX2FkZF9fLCBfX3JhZGRfXywgX19zdWJfXyAoYWRkL3JhZGQgb25seSB3aXRoIHRpbWVkZWx0YSBhcmcpCgogICAgTWV0aG9kczoKCiAgICB0aW1ldHVwbGUoKQogICAgdG9vcmRpbmFsKCkKICAgIHdlZWtkYXkoKQogICAgaXNvd2Vla2RheSgpLCBpc29jYWxlbmRhcigpLCBpc29mb3JtYXQoKQogICAgY3RpbWUoKQogICAgc3RyZnRpbWUoKQoKICAgIFByb3BlcnRpZXMgKHJlYWRvbmx5KToKICAgIHllYXIsIG1vbnRoLCBkYXkKICAgICIiIgogICAgX19zbG90c19fID0gJ195ZWFyJywgJ19tb250aCcsICdfZGF5JywgJ19oYXNoY29kZScKCiAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lKToKICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KCiAgICAgICAgQXJndW1lbnRzOgoKICAgICAgICB5ZWFyLCBtb250aCwgZGF5IChyZXF1aXJlZCwgYmFzZSAxKQogICAgICAgICIiIgogICAgICAgIGlmIChtb250aCBpcyBOb25lIGFuZAogICAgICAgICAgICBpc2luc3RhbmNlKHllYXIsIChieXRlcywgc3RyKSkgYW5kIGxlbih5ZWFyKSA9PSA0IGFuZAogICAgICAgICAgICAxIDw9IG9yZCh5ZWFyWzI6M10pIDw9IDEyKToKICAgICAgICAgICAgIyBQaWNrbGUgc3VwcG9ydAogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIHN0cik6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgeWVhciA9IHllYXIuZW5jb2RlKCdsYXRpbjEnKQogICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIE1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS4KICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGVuY29kZSBsYXRpbjEgc3RyaW5nIHdoZW4gdW5waWNrbGluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICJhIGRhdGUgb2JqZWN0LiAiCiAgICAgICAgICAgICAgICAgICAgICAgICJwaWNrbGUubG9hZChkYXRhLCBlbmNvZGluZz0nbGF0aW4xJykgaXMgYXNzdW1lZC4iKQogICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhcikKICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgIHllYXIsIG1vbnRoLCBkYXkgPSBfY2hlY2tfZGF0ZV9maWVsZHMoeWVhciwgbW9udGgsIGRheSkKICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgIHNlbGYuX3llYXIgPSB5ZWFyCiAgICAgICAgc2VsZi5fbW9udGggPSBtb250aAogICAgICAgIHNlbGYuX2RheSA9IGRheQogICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICByZXR1cm4gc2VsZgoKICAgICMgQWRkaXRpb25hbCBjb25zdHJ1Y3RvcnMKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tdGltZXN0YW1wKGNscywgdCk6CiAgICAgICAgIkNvbnN0cnVjdCBhIGRhdGUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuIgogICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MsIHdlZWtkYXksIGpkYXksIGRzdCA9IF90aW1lLmxvY2FsdGltZSh0KQogICAgICAgIHJldHVybiBjbHMoeSwgbSwgZCkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiB0b2RheShjbHMpOgogICAgICAgICJDb25zdHJ1Y3QgYSBkYXRlIGZyb20gdGltZS50aW1lKCkuIgogICAgICAgIHQgPSBfdGltZS50aW1lKCkKICAgICAgICByZXR1cm4gY2xzLmZyb210aW1lc3RhbXAodCkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tb3JkaW5hbChjbHMsIG4pOgogICAgICAgICIiIkNvbnN0cnVjdCBhIGRhdGUgZnJvbSBhIHByb2xlcHRpYyBHcmVnb3JpYW4gb3JkaW5hbC4KCiAgICAgICAgSmFudWFyeSAxIG9mIHllYXIgMSBpcyBkYXkgMS4gIE9ubHkgdGhlIHllYXIsIG1vbnRoIGFuZCBkYXkgYXJlCiAgICAgICAgbm9uLXplcm8gaW4gdGhlIHJlc3VsdC4KICAgICAgICAiIiIKICAgICAgICB5LCBtLCBkID0gX29yZDJ5bWQobikKICAgICAgICByZXR1cm4gY2xzKHksIG0sIGQpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbWlzb2Zvcm1hdChjbHMsIGRhdGVfc3RyaW5nKToKICAgICAgICAiIiJDb25zdHJ1Y3QgYSBkYXRlIGZyb20gYSBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LiIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGVfc3RyaW5nLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2Zyb21pc29mb3JtYXQ6IGFyZ3VtZW50IG11c3QgYmUgc3RyJykKCiAgICAgICAgaWYgbGVuKGRhdGVfc3RyaW5nKSBub3QgaW4gKDcsIDgsIDEwKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ0ludmFsaWQgaXNvZm9ybWF0IHN0cmluZzoge2RhdGVfc3RyaW5nIXJ9JykKCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gY2xzKCpfcGFyc2VfaXNvZm9ybWF0X2RhdGUoZGF0ZV9zdHJpbmcpKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidJbnZhbGlkIGlzb2Zvcm1hdCBzdHJpbmc6IHtkYXRlX3N0cmluZyFyfScpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbWlzb2NhbGVuZGFyKGNscywgeWVhciwgd2VlaywgZGF5KToKICAgICAgICAiIiJDb25zdHJ1Y3QgYSBkYXRlIGZyb20gdGhlIElTTyB5ZWFyLCB3ZWVrIG51bWJlciBhbmQgd2Vla2RheS4KCiAgICAgICAgVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgZGF0ZS5pc29jYWxlbmRhcigpIGZ1bmN0aW9uIiIiCiAgICAgICAgcmV0dXJuIGNscygqX2lzb3dlZWtfdG9fZ3JlZ29yaWFuKHllYXIsIHdlZWssIGRheSkpCgogICAgIyBDb252ZXJzaW9ucyB0byBzdHJpbmcKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIiIiQ29udmVydCB0byBmb3JtYWwgc3RyaW5nLCBmb3IgcmVwcigpLgoKICAgICAgICA+Pj4gZHQgPSBkYXRldGltZSgyMDEwLCAxLCAxKQogICAgICAgID4+PiByZXByKGR0KQogICAgICAgICdkYXRldGltZS5kYXRldGltZSgyMDEwLCAxLCAxLCAwLCAwKScKCiAgICAgICAgPj4+IGR0ID0gZGF0ZXRpbWUoMjAxMCwgMSwgMSwgdHppbmZvPXRpbWV6b25lLnV0YykKICAgICAgICA+Pj4gcmVwcihkdCkKICAgICAgICAnZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgMSwgMSwgMCwgMCwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YyknCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuICIlcy4lcyglZCwgJWQsICVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5feWVhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb250aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXkpCiAgICAjIFhYWCBUaGVzZSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRpbWUubG9jYWx0aW1lKCksIGJlY2F1c2UgdGhhdAogICAgIyBjbGlwcyB0aGUgdXNhYmxlIGRhdGVzIHRvIFsxOTcwIC4uIDIwMzgpLiAgQXQgbGVhc3QgY3RpbWUoKSBpcwogICAgIyBlYXNpbHkgZG9uZSB3aXRob3V0IHVzaW5nIHN0cmZ0aW1lKCkgLS0gdGhhdCdzIGJldHRlciB0b28gYmVjYXVzZQogICAgIyBzdHJmdGltZSgiJWMiLCAuLi4pIGlzIGxvY2FsZSBzcGVjaWZpYy4KCgogICAgZGVmIGN0aW1lKHNlbGYpOgogICAgICAgICJSZXR1cm4gY3RpbWUoKSBzdHlsZSBzdHJpbmcuIgogICAgICAgIHdlZWtkYXkgPSBzZWxmLnRvb3JkaW5hbCgpICUgNyBvciA3CiAgICAgICAgcmV0dXJuICIlcyAlcyAlMmQgMDA6MDA6MDAgJTA0ZCIgJSAoCiAgICAgICAgICAgIF9EQVlOQU1FU1t3ZWVrZGF5XSwKICAgICAgICAgICAgX01PTlRITkFNRVNbc2VsZi5fbW9udGhdLAogICAgICAgICAgICBzZWxmLl9kYXksIHNlbGYuX3llYXIpCgogICAgZGVmIHN0cmZ0aW1lKHNlbGYsIGZtdCk6CiAgICAgICAgIiIiCiAgICAgICAgRm9ybWF0IHVzaW5nIHN0cmZ0aW1lKCkuCgogICAgICAgIEV4YW1wbGU6ICIlZC8lbS8lWSwgJUg6JU06JVMiCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIF93cmFwX3N0cmZ0aW1lKHNlbGYsIGZtdCwgc2VsZi50aW1ldHVwbGUoKSkKCiAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBmbXQpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZtdCwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtdXN0IGJlIHN0ciwgbm90ICVzIiAlIHR5cGUoZm10KS5fX25hbWVfXykKICAgICAgICBpZiBsZW4oZm10KSAhPSAwOgogICAgICAgICAgICByZXR1cm4gc2VsZi5zdHJmdGltZShmbXQpCiAgICAgICAgcmV0dXJuIHN0cihzZWxmKQoKICAgIGRlZiBpc29mb3JtYXQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gSVNPLgoKICAgICAgICBUaGlzIGlzICdZWVlZLU1NLUREJy4KCiAgICAgICAgUmVmZXJlbmNlczoKICAgICAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL05PVEUtZGF0ZXRpbWUKICAgICAgICAtIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS9pc28tdGltZS5odG1sCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuICIlMDRkLSUwMmQtJTAyZCIgJSAoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSkKCiAgICBfX3N0cl9fID0gaXNvZm9ybWF0CgogICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCiAgICBAcHJvcGVydHkKICAgIGRlZiB5ZWFyKHNlbGYpOgogICAgICAgICIiInllYXIgKDEtOTk5OSkiIiIKICAgICAgICByZXR1cm4gc2VsZi5feWVhcgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1vbnRoKHNlbGYpOgogICAgICAgICIiIm1vbnRoICgxLTEyKSIiIgogICAgICAgIHJldHVybiBzZWxmLl9tb250aAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRheShzZWxmKToKICAgICAgICAiIiJkYXkgKDEtMzEpIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2RheQoKICAgICMgU3RhbmRhcmQgY29udmVyc2lvbnMsIF9fZXFfXywgX19sZV9fLCBfX2x0X18sIF9fZ2VfXywgX19ndF9fLAogICAgIyBfX2hhc2hfXyAoYW5kIGhlbHBlcnMpCgogICAgZGVmIHRpbWV0dXBsZShzZWxmKToKICAgICAgICAiUmV0dXJuIGxvY2FsIHRpbWUgdHVwbGUgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIgogICAgICAgIHJldHVybiBfYnVpbGRfc3RydWN0X3RpbWUoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIC0xKQoKICAgIGRlZiB0b29yZGluYWwoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHByb2xlcHRpYyBHcmVnb3JpYW4gb3JkaW5hbCBmb3IgdGhlIHllYXIsIG1vbnRoIGFuZCBkYXkuCgogICAgICAgIEphbnVhcnkgMSBvZiB5ZWFyIDEgaXMgZGF5IDEuICBPbmx5IHRoZSB5ZWFyLCBtb250aCBhbmQgZGF5IHZhbHVlcwogICAgICAgIGNvbnRyaWJ1dGUgdG8gdGhlIHJlc3VsdC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gX3ltZDJvcmQoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSkKCiAgICBkZWYgcmVwbGFjZShzZWxmLCB5ZWFyPU5vbmUsIG1vbnRoPU5vbmUsIGRheT1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gYSBuZXcgZGF0ZSB3aXRoIG5ldyB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGRzLiIiIgogICAgICAgIGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgICAgeWVhciA9IHNlbGYuX3llYXIKICAgICAgICBpZiBtb250aCBpcyBOb25lOgogICAgICAgICAgICBtb250aCA9IHNlbGYuX21vbnRoCiAgICAgICAgaWYgZGF5IGlzIE5vbmU6CiAgICAgICAgICAgIGRheSA9IHNlbGYuX2RheQogICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHllYXIsIG1vbnRoLCBkYXkpCgogICAgIyBDb21wYXJpc29ucyBvZiBkYXRlIG9iamVjdHMgd2l0aCBvdGhlci4KCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPT0gMAogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDwgMAogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA+PSAwCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID4gMAogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfY21wKHNlbGYsIG90aGVyKToKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSkKICAgICAgICB5LCBtLCBkID0gc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheQogICAgICAgIHkyLCBtMiwgZDIgPSBvdGhlci5feWVhciwgb3RoZXIuX21vbnRoLCBvdGhlci5fZGF5CiAgICAgICAgcmV0dXJuIF9jbXAoKHksIG0sIGQpLCAoeTIsIG0yLCBkMikpCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICJIYXNoLiIKICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKCkpCiAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2hjb2RlCgogICAgIyBDb21wdXRhdGlvbnMKCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIkFkZCBhIGRhdGUgdG8gYSB0aW1lZGVsdGEuIgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgIG8gPSBzZWxmLnRvb3JkaW5hbCgpICsgb3RoZXIuZGF5cwogICAgICAgICAgICBpZiAwIDwgbyA8PSBfTUFYT1JESU5BTDoKICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpLmZyb21vcmRpbmFsKG8pCiAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoInJlc3VsdCBvdXQgb2YgcmFuZ2UiKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIF9fcmFkZF9fID0gX19hZGRfXwoKICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJTdWJ0cmFjdCB0d28gZGF0ZXMsIG9yIGEgZGF0ZSBhbmQgYSB0aW1lZGVsdGEuIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZWRlbHRhKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYgKyB0aW1lZGVsdGEoLW90aGVyLmRheXMpCiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgIGRheXMxID0gc2VsZi50b29yZGluYWwoKQogICAgICAgICAgICBkYXlzMiA9IG90aGVyLnRvb3JkaW5hbCgpCiAgICAgICAgICAgIHJldHVybiB0aW1lZGVsdGEoZGF5czEgLSBkYXlzMikKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgd2Vla2RheShzZWxmKToKICAgICAgICAiUmV0dXJuIGRheSBvZiB0aGUgd2Vlaywgd2hlcmUgTW9uZGF5ID09IDAgLi4uIFN1bmRheSA9PSA2LiIKICAgICAgICByZXR1cm4gKHNlbGYudG9vcmRpbmFsKCkgKyA2KSAlIDcKCiAgICAjIERheS1vZi10aGUtd2VlayBhbmQgd2Vlay1vZi10aGUteWVhciwgYWNjb3JkaW5nIHRvIElTTwoKICAgIGRlZiBpc293ZWVrZGF5KHNlbGYpOgogICAgICAgICJSZXR1cm4gZGF5IG9mIHRoZSB3ZWVrLCB3aGVyZSBNb25kYXkgPT0gMSAuLi4gU3VuZGF5ID09IDcuIgogICAgICAgICMgMS1KYW4tMDAwMSBpcyBhIE1vbmRheQogICAgICAgIHJldHVybiBzZWxmLnRvb3JkaW5hbCgpICUgNyBvciA3CgogICAgZGVmIGlzb2NhbGVuZGFyKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIG5hbWVkIHR1cGxlIGNvbnRhaW5pbmcgSVNPIHllYXIsIHdlZWsgbnVtYmVyLCBhbmQgd2Vla2RheS4KCiAgICAgICAgVGhlIGZpcnN0IElTTyB3ZWVrIG9mIHRoZSB5ZWFyIGlzIHRoZSAoTW9uLVN1bikgd2VlawogICAgICAgIGNvbnRhaW5pbmcgdGhlIHllYXIncyBmaXJzdCBUaHVyc2RheTsgZXZlcnl0aGluZyBlbHNlIGRlcml2ZXMKICAgICAgICBmcm9tIHRoYXQuCgogICAgICAgIFRoZSBmaXJzdCB3ZWVrIGlzIDE7IE1vbmRheSBpcyAxIC4uLiBTdW5kYXkgaXMgNy4KCiAgICAgICAgSVNPIGNhbGVuZGFyIGFsZ29yaXRobSB0YWtlbiBmcm9tCiAgICAgICAgaHR0cDovL3d3dy5waHlzLnV1Lm5sL352Z2VudC9jYWxlbmRhci9pc29jYWxlbmRhci5odG0KICAgICAgICAodXNlZCB3aXRoIHBlcm1pc3Npb24pCiAgICAgICAgIiIiCiAgICAgICAgeWVhciA9IHNlbGYuX3llYXIKICAgICAgICB3ZWVrMW1vbmRheSA9IF9pc293ZWVrMW1vbmRheSh5ZWFyKQogICAgICAgIHRvZGF5ID0gX3ltZDJvcmQoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSkKICAgICAgICAjIEludGVybmFsbHksIHdlZWsgYW5kIGRheSBoYXZlIG9yaWdpbiAwCiAgICAgICAgd2VlaywgZGF5ID0gZGl2bW9kKHRvZGF5IC0gd2VlazFtb25kYXksIDcpCiAgICAgICAgaWYgd2VlayA8IDA6CiAgICAgICAgICAgIHllYXIgLT0gMQogICAgICAgICAgICB3ZWVrMW1vbmRheSA9IF9pc293ZWVrMW1vbmRheSh5ZWFyKQogICAgICAgICAgICB3ZWVrLCBkYXkgPSBkaXZtb2QodG9kYXkgLSB3ZWVrMW1vbmRheSwgNykKICAgICAgICBlbGlmIHdlZWsgPj0gNTI6CiAgICAgICAgICAgIGlmIHRvZGF5ID49IF9pc293ZWVrMW1vbmRheSh5ZWFyKzEpOgogICAgICAgICAgICAgICAgeWVhciArPSAxCiAgICAgICAgICAgICAgICB3ZWVrID0gMAogICAgICAgIHJldHVybiBfSXNvQ2FsZW5kYXJEYXRlKHllYXIsIHdlZWsrMSwgZGF5KzEpCgogICAgIyBQaWNrbGUgc3VwcG9ydC4KCiAgICBkZWYgX2dldHN0YXRlKHNlbGYpOgogICAgICAgIHloaSwgeWxvID0gZGl2bW9kKHNlbGYuX3llYXIsIDI1NikKICAgICAgICByZXR1cm4gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5XSksCgogICAgZGVmIF9fc2V0c3RhdGUoc2VsZiwgc3RyaW5nKToKICAgICAgICB5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSA9IHN0cmluZwogICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZSgpKQoKX2RhdGVfY2xhc3MgPSBkYXRlICAjIHNvIGZ1bmN0aW9ucyB3LyBhcmdzIG5hbWVkICJkYXRlIiBjYW4gZ2V0IGF0IHRoZSBjbGFzcwoKZGF0ZS5taW4gPSBkYXRlKDEsIDEsIDEpCmRhdGUubWF4ID0gZGF0ZSg5OTk5LCAxMiwgMzEpCmRhdGUucmVzb2x1dGlvbiA9IHRpbWVkZWx0YShkYXlzPTEpCgoKY2xhc3MgdHppbmZvOgogICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGltZSB6b25lIGluZm8gY2xhc3Nlcy4KCiAgICBTdWJjbGFzc2VzIG11c3Qgb3ZlcnJpZGUgdGhlIG5hbWUoKSwgdXRjb2Zmc2V0KCkgYW5kIGRzdCgpIG1ldGhvZHMuCiAgICAiIiIKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CiAgICAgICAgImRhdGV0aW1lIC0+IHN0cmluZyBuYW1lIG9mIHRpbWUgem9uZS4iCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigidHppbmZvIHN1YmNsYXNzIG11c3Qgb3ZlcnJpZGUgdHpuYW1lKCkiKQoKICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgogICAgICAgICJkYXRldGltZSAtPiB0aW1lZGVsdGEsIHBvc2l0aXZlIGZvciBlYXN0IG9mIFVUQywgbmVnYXRpdmUgZm9yIHdlc3Qgb2YgVVRDIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInR6aW5mbyBzdWJjbGFzcyBtdXN0IG92ZXJyaWRlIHV0Y29mZnNldCgpIikKCiAgICBkZWYgZHN0KHNlbGYsIGR0KToKICAgICAgICAiIiJkYXRldGltZSAtPiBEU1Qgb2Zmc2V0IGFzIHRpbWVkZWx0YSwgcG9zaXRpdmUgZm9yIGVhc3Qgb2YgVVRDLgoKICAgICAgICBSZXR1cm4gMCBpZiBEU1Qgbm90IGluIGVmZmVjdC4gIHV0Y29mZnNldCgpIG11c3QgaW5jbHVkZSB0aGUgRFNUCiAgICAgICAgb2Zmc2V0LgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInR6aW5mbyBzdWJjbGFzcyBtdXN0IG92ZXJyaWRlIGRzdCgpIikKCiAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CiAgICAgICAgImRhdGV0aW1lIGluIFVUQyAtPiBkYXRldGltZSBpbiBsb2NhbCB0aW1lLiIKCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZHQsIGRhdGV0aW1lKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmcm9tdXRjKCkgcmVxdWlyZXMgYSBkYXRldGltZSBhcmd1bWVudCIpCiAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdC50emluZm8gaXMgbm90IHNlbGYiKQoKICAgICAgICBkdG9mZiA9IGR0LnV0Y29mZnNldCgpCiAgICAgICAgaWYgZHRvZmYgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZnJvbXV0YygpIHJlcXVpcmVzIGEgbm9uLU5vbmUgdXRjb2Zmc2V0KCkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHQiKQoKICAgICAgICAjIFNlZSB0aGUgbG9uZyBjb21tZW50IGJsb2NrIGF0IHRoZSBlbmQgb2YgdGhpcyBmaWxlIGZvciBhbgogICAgICAgICMgZXhwbGFuYXRpb24gb2YgdGhpcyBhbGdvcml0aG0uCiAgICAgICAgZHRkc3QgPSBkdC5kc3QoKQogICAgICAgIGlmIGR0ZHN0IGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIG5vbi1Ob25lIGRzdCgpIHJlc3VsdCIpCiAgICAgICAgZGVsdGEgPSBkdG9mZiAtIGR0ZHN0CiAgICAgICAgaWYgZGVsdGE6CiAgICAgICAgICAgIGR0ICs9IGRlbHRhCiAgICAgICAgICAgIGR0ZHN0ID0gZHQuZHN0KCkKICAgICAgICAgICAgaWYgZHRkc3QgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZyb211dGMoKTogZHQuZHN0IGdhdmUgaW5jb25zaXN0ZW50ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc3VsdHM7IGNhbm5vdCBjb252ZXJ0IikKICAgICAgICByZXR1cm4gZHQgKyBkdGRzdAoKICAgICMgUGlja2xlIHN1cHBvcnQuCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgZ2V0aW5pdGFyZ3MgPSBnZXRhdHRyKHNlbGYsICJfX2dldGluaXRhcmdzX18iLCBOb25lKQogICAgICAgIGlmIGdldGluaXRhcmdzOgogICAgICAgICAgICBhcmdzID0gZ2V0aW5pdGFyZ3MoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGFyZ3MgPSAoKQogICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIGFyZ3MsIHNlbGYuX19nZXRzdGF0ZV9fKCkpCgoKY2xhc3MgSXNvQ2FsZW5kYXJEYXRlKHR1cGxlKToKCiAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIHdlZWssIHdlZWtkYXksIC8pOgogICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCAoeWVhciwgd2Vlaywgd2Vla2RheSkpCgogICAgQHByb3BlcnR5CiAgICBkZWYgeWVhcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZlswXQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHdlZWsoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGZbMV0KCiAgICBAcHJvcGVydHkKICAgIGRlZiB3ZWVrZGF5KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmWzJdCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgIyBUaGlzIGNvZGUgaXMgaW50ZW5kZWQgdG8gcGlja2xlIHRoZSBvYmplY3Qgd2l0aG91dCBtYWtpbmcgdGhlCiAgICAgICAgIyBjbGFzcyBwdWJsaWMuIFNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9tc2czNTIzODEKICAgICAgICByZXR1cm4gKHR1cGxlLCAodHVwbGUoc2VsZiksKSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIChmJ3tzZWxmLl9fY2xhc3NfXy5fX25hbWVfX30nCiAgICAgICAgICAgICAgICBmJyh5ZWFyPXtzZWxmWzBdfSwgd2Vlaz17c2VsZlsxXX0sIHdlZWtkYXk9e3NlbGZbMl19KScpCgoKX0lzb0NhbGVuZGFyRGF0ZSA9IElzb0NhbGVuZGFyRGF0ZQpkZWwgSXNvQ2FsZW5kYXJEYXRlCl90emluZm9fY2xhc3MgPSB0emluZm8KCmNsYXNzIHRpbWU6CiAgICAiIiJUaW1lIHdpdGggdGltZSB6b25lLgoKICAgIENvbnN0cnVjdG9yczoKCiAgICBfX25ld19fKCkKCiAgICBPcGVyYXRvcnM6CgogICAgX19yZXByX18sIF9fc3RyX18KICAgIF9fZXFfXywgX19sZV9fLCBfX2x0X18sIF9fZ2VfXywgX19ndF9fLCBfX2hhc2hfXwoKICAgIE1ldGhvZHM6CgogICAgc3RyZnRpbWUoKQogICAgaXNvZm9ybWF0KCkKICAgIHV0Y29mZnNldCgpCiAgICB0em5hbWUoKQogICAgZHN0KCkKCiAgICBQcm9wZXJ0aWVzIChyZWFkb25seSk6CiAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbywgZm9sZAogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJywgJ19oYXNoY29kZScsICdfZm9sZCcKCiAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKToKICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KCiAgICAgICAgQXJndW1lbnRzOgoKICAgICAgICBob3VyLCBtaW51dGUgKHJlcXVpcmVkKQogICAgICAgIHNlY29uZCwgbWljcm9zZWNvbmQgKGRlZmF1bHQgdG8gemVybykKICAgICAgICB0emluZm8gKGRlZmF1bHQgdG8gTm9uZSkKICAgICAgICBmb2xkIChrZXl3b3JkIG9ubHksIGRlZmF1bHQgdG8gemVybykKICAgICAgICAiIiIKICAgICAgICBpZiAoaXNpbnN0YW5jZShob3VyLCAoYnl0ZXMsIHN0cikpIGFuZCBsZW4oaG91cikgPT0gNiBhbmQKICAgICAgICAgICAgb3JkKGhvdXJbMDoxXSkmMHg3RiA8IDI0KToKICAgICAgICAgICAgIyBQaWNrbGUgc3VwcG9ydAogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIHN0cik6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaG91ciA9IGhvdXIuZW5jb2RlKCdsYXRpbjEnKQogICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIE1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS4KICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGVuY29kZSBsYXRpbjEgc3RyaW5nIHdoZW4gdW5waWNrbGluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICJhIHRpbWUgb2JqZWN0LiAiCiAgICAgICAgICAgICAgICAgICAgICAgICJwaWNrbGUubG9hZChkYXRhLCBlbmNvZGluZz0nbGF0aW4xJykgaXMgYXNzdW1lZC4iKQogICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoaG91ciwgbWludXRlIG9yIE5vbmUpCiAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQgPSBfY2hlY2tfdGltZV9maWVsZHMoCiAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCkKICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCiAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICBzZWxmLl9ob3VyID0gaG91cgogICAgICAgIHNlbGYuX21pbnV0ZSA9IG1pbnV0ZQogICAgICAgIHNlbGYuX3NlY29uZCA9IHNlY29uZAogICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gbWljcm9zZWNvbmQKICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgc2VsZi5fZm9sZCA9IGZvbGQKICAgICAgICByZXR1cm4gc2VsZgoKICAgICMgUmVhZC1vbmx5IGZpZWxkIGFjY2Vzc29ycwogICAgQHByb3BlcnR5CiAgICBkZWYgaG91cihzZWxmKToKICAgICAgICAiIiJob3VyICgwLTIzKSIiIgogICAgICAgIHJldHVybiBzZWxmLl9ob3VyCgogICAgQHByb3BlcnR5CiAgICBkZWYgbWludXRlKHNlbGYpOgogICAgICAgICIiIm1pbnV0ZSAoMC01OSkiIiIKICAgICAgICByZXR1cm4gc2VsZi5fbWludXRlCgogICAgQHByb3BlcnR5CiAgICBkZWYgc2Vjb25kKHNlbGYpOgogICAgICAgICIiInNlY29uZCAoMC01OSkiIiIKICAgICAgICByZXR1cm4gc2VsZi5fc2Vjb25kCgogICAgQHByb3BlcnR5CiAgICBkZWYgbWljcm9zZWNvbmQoc2VsZik6CiAgICAgICAgIiIibWljcm9zZWNvbmQgKDAtOTk5OTk5KSIiIgogICAgICAgIHJldHVybiBzZWxmLl9taWNyb3NlY29uZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHR6aW5mbyhzZWxmKToKICAgICAgICAiIiJ0aW1lem9uZSBpbmZvIG9iamVjdCIiIgogICAgICAgIHJldHVybiBzZWxmLl90emluZm8KCiAgICBAcHJvcGVydHkKICAgIGRlZiBmb2xkKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9mb2xkCgogICAgIyBTdGFuZGFyZCBjb252ZXJzaW9ucywgX19oYXNoX18gKGFuZCBoZWxwZXJzKQoKICAgICMgQ29tcGFyaXNvbnMgb2YgdGltZSBvYmplY3RzIHdpdGggb3RoZXIuCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpID09IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPj0gMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA+IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX2NtcChzZWxmLCBvdGhlciwgYWxsb3dfbWl4ZWQ9RmFsc2UpOgogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG90aGVyLCB0aW1lKQogICAgICAgIG15dHogPSBzZWxmLl90emluZm8KICAgICAgICBvdHR6ID0gb3RoZXIuX3R6aW5mbwogICAgICAgIG15b2ZmID0gb3RvZmYgPSBOb25lCgogICAgICAgIGlmIG15dHogaXMgb3R0ejoKICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICAgICBvdG9mZiA9IG90aGVyLnV0Y29mZnNldCgpCiAgICAgICAgICAgIGJhc2VfY29tcGFyZSA9IG15b2ZmID09IG90b2ZmCgogICAgICAgIGlmIGJhc2VfY29tcGFyZToKICAgICAgICAgICAgcmV0dXJuIF9jbXAoKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpLAogICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQogICAgICAgIGlmIG15b2ZmIGlzIE5vbmUgb3Igb3RvZmYgaXMgTm9uZToKICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CiAgICAgICAgICAgICAgICByZXR1cm4gMiAjIGFyYml0cmFyeSBub24temVybyB2YWx1ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgY29tcGFyZSBuYWl2ZSBhbmQgYXdhcmUgdGltZXMiKQogICAgICAgIG15aGhtbSA9IHNlbGYuX2hvdXIgKiA2MCArIHNlbGYuX21pbnV0ZSAtIG15b2ZmLy90aW1lZGVsdGEobWludXRlcz0xKQogICAgICAgIG90aGhtbSA9IG90aGVyLl9ob3VyICogNjAgKyBvdGhlci5fbWludXRlIC0gb3RvZmYvL3RpbWVkZWx0YShtaW51dGVzPTEpCiAgICAgICAgcmV0dXJuIF9jbXAoKG15aGhtbSwgc2VsZi5fc2Vjb25kLCBzZWxmLl9taWNyb3NlY29uZCksCiAgICAgICAgICAgICAgICAgICAgKG90aGhtbSwgb3RoZXIuX3NlY29uZCwgb3RoZXIuX21pY3Jvc2Vjb25kKSkKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIiIiSGFzaC4iIiIKICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKICAgICAgICAgICAgaWYgc2VsZi5mb2xkOgogICAgICAgICAgICAgICAgdCA9IHNlbGYucmVwbGFjZShmb2xkPTApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0ID0gc2VsZgogICAgICAgICAgICB0em9mZiA9IHQudXRjb2Zmc2V0KCkKICAgICAgICAgICAgaWYgbm90IHR6b2ZmOiAgIyB6ZXJvIG9yIE5vbmUKICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0Ll9nZXRzdGF0ZSgpWzBdKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaCwgbSA9IGRpdm1vZCh0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAtIHR6b2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoaG91cnM9MSkpCiAgICAgICAgICAgICAgICBhc3NlcnQgbm90IG0gJSB0aW1lZGVsdGEobWludXRlcz0xKSwgIndob2xlIG1pbnV0ZSIKICAgICAgICAgICAgICAgIG0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCiAgICAgICAgICAgICAgICBpZiAwIDw9IGggPCAyNDoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2godGltZShoLCBtLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCgoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQogICAgICAgIHJldHVybiBzZWxmLl9oYXNoY29kZQoKICAgICMgQ29udmVyc2lvbiB0byBzdHJpbmcKCiAgICBkZWYgX3R6c3RyKHNlbGYpOgogICAgICAgICIiIlJldHVybiBmb3JtYXR0ZWQgdGltZXpvbmUgb2Zmc2V0ICgreHg6eHgpIG9yIGFuIGVtcHR5IHN0cmluZy4iIiIKICAgICAgICBvZmYgPSBzZWxmLnV0Y29mZnNldCgpCiAgICAgICAgcmV0dXJuIF9mb3JtYXRfb2Zmc2V0KG9mZikKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIiIiQ29udmVydCB0byBmb3JtYWwgc3RyaW5nLCBmb3IgcmVwcigpLiIiIgogICAgICAgIGlmIHNlbGYuX21pY3Jvc2Vjb25kICE9IDA6CiAgICAgICAgICAgIHMgPSAiLCAlZCwgJWQiICUgKHNlbGYuX3NlY29uZCwgc2VsZi5fbWljcm9zZWNvbmQpCiAgICAgICAgZWxpZiBzZWxmLl9zZWNvbmQgIT0gMDoKICAgICAgICAgICAgcyA9ICIsICVkIiAlIHNlbGYuX3NlY29uZAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHMgPSAiIgogICAgICAgIHM9ICIlcy4lcyglZCwgJWQlcykiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgcykKICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCiAgICAgICAgaWYgc2VsZi5fZm9sZDoKICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIGZvbGQ9MSkiCiAgICAgICAgcmV0dXJuIHMKCiAgICBkZWYgaXNvZm9ybWF0KHNlbGYsIHRpbWVzcGVjPSdhdXRvJyk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gSVNPLgoKICAgICAgICBUaGUgZnVsbCBmb3JtYXQgaXMgJ0hIOk1NOlNTLm1tbW1tbSt6ejp6eicuIEJ5IGRlZmF1bHQsIHRoZSBmcmFjdGlvbmFsCiAgICAgICAgcGFydCBpcyBvbWl0dGVkIGlmIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KCiAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKICAgICAgICB0ZXJtcyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLiBWYWxpZCBvcHRpb25zIGFyZSAnYXV0bycsICdob3VycycsCiAgICAgICAgJ21pbnV0ZXMnLCAnc2Vjb25kcycsICdtaWxsaXNlY29uZHMnIGFuZCAnbWljcm9zZWNvbmRzJy4KICAgICAgICAiIiIKICAgICAgICBzID0gX2Zvcm1hdF90aW1lKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kLCB0aW1lc3BlYykKICAgICAgICB0eiA9IHNlbGYuX3R6c3RyKCkKICAgICAgICBpZiB0ejoKICAgICAgICAgICAgcyArPSB0egogICAgICAgIHJldHVybiBzCgogICAgX19zdHJfXyA9IGlzb2Zvcm1hdAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGZyb21pc29mb3JtYXQoY2xzLCB0aW1lX3N0cmluZyk6CiAgICAgICAgIiIiQ29uc3RydWN0IGEgdGltZSBmcm9tIGEgc3RyaW5nIGluIG9uZSBvZiB0aGUgSVNPIDg2MDEgZm9ybWF0cy4iIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0aW1lX3N0cmluZywgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdmcm9taXNvZm9ybWF0OiBhcmd1bWVudCBtdXN0IGJlIHN0cicpCgogICAgICAgICMgVGhlIHNwZWMgYWN0dWFsbHkgcmVxdWlyZXMgdGhhdCB0aW1lLW9ubHkgSVNPIDg2MDEgc3RyaW5ncyBzdGFydCB3aXRoCiAgICAgICAgIyBULCBidXQgdGhlIGV4dGVuZGVkIGZvcm1hdCBhbGxvd3MgdGhpcyB0byBiZSBvbWl0dGVkIGFzIGxvbmcgYXMgdGhlcmUKICAgICAgICAjIGlzIG5vIGFtYmlndWl0eSB3aXRoIGRhdGUgc3RyaW5ncy4KICAgICAgICB0aW1lX3N0cmluZyA9IHRpbWVfc3RyaW5nLnJlbW92ZXByZWZpeCgnVCcpCgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGNscygqX3BhcnNlX2lzb2Zvcm1hdF90aW1lKHRpbWVfc3RyaW5nKSkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnSW52YWxpZCBpc29mb3JtYXQgc3RyaW5nOiB7dGltZV9zdHJpbmchcn0nKQoKCiAgICBkZWYgc3RyZnRpbWUoc2VsZiwgZm10KToKICAgICAgICAiIiJGb3JtYXQgdXNpbmcgc3RyZnRpbWUoKS4gIFRoZSBkYXRlIHBhcnQgb2YgdGhlIHRpbWVzdGFtcCBwYXNzZWQKICAgICAgICB0byB1bmRlcmx5aW5nIHN0cmZ0aW1lIHNob3VsZCBub3QgYmUgdXNlZC4KICAgICAgICAiIiIKICAgICAgICAjIFRoZSB5ZWFyIG11c3QgYmUgPj0gMTAwMCBlbHNlIFB5dGhvbidzIHN0cmZ0aW1lIGltcGxlbWVudGF0aW9uCiAgICAgICAgIyBjYW4gcmFpc2UgYSBib2d1cyBleGNlcHRpb24uCiAgICAgICAgdGltZXR1cGxlID0gKDE5MDAsIDEsIDEsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAwLCAxLCAtMSkKICAgICAgICByZXR1cm4gX3dyYXBfc3RyZnRpbWUoc2VsZiwgZm10LCB0aW1ldHVwbGUpCgogICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm10KToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmbXQsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibXVzdCBiZSBzdHIsIG5vdCAlcyIgJSB0eXBlKGZtdCkuX19uYW1lX18pCiAgICAgICAgaWYgbGVuKGZtdCkgIT0gMDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RyZnRpbWUoZm10KQogICAgICAgIHJldHVybiBzdHIoc2VsZikKCiAgICAjIFRpbWV6b25lIGZ1bmN0aW9ucwoKICAgIGRlZiB1dGNvZmZzZXQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lem9uZSBvZmZzZXQgYXMgdGltZWRlbHRhLCBwb3NpdGl2ZSBlYXN0IG9mIFVUQwogICAgICAgICAobmVnYXRpdmUgd2VzdCBvZiBVVEMpLiIiIgogICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIG9mZnNldCA9IHNlbGYuX3R6aW5mby51dGNvZmZzZXQoTm9uZSkKICAgICAgICBfY2hlY2tfdXRjX29mZnNldCgidXRjb2Zmc2V0Iiwgb2Zmc2V0KQogICAgICAgIHJldHVybiBvZmZzZXQKCiAgICBkZWYgdHpuYW1lKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgdGltZXpvbmUgbmFtZS4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSBuYW1lIGlzIDEwMCUgaW5mb3JtYXRpb25hbCAtLSB0aGVyZSdzIG5vIHJlcXVpcmVtZW50IHRoYXQKICAgICAgICBpdCBtZWFuIGFueXRoaW5nIGluIHBhcnRpY3VsYXIuIEZvciBleGFtcGxlLCAiR01UIiwgIlVUQyIsICItNTAwIiwKICAgICAgICAiLTU6MDAiLCAiRURUIiwgIlVTL0Vhc3Rlcm4iLCAiQW1lcmljYS9OZXcgWW9yayIgYXJlIGFsbCB2YWxpZCByZXBsaWVzLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIG5hbWUgPSBzZWxmLl90emluZm8udHpuYW1lKE5vbmUpCiAgICAgICAgX2NoZWNrX3R6bmFtZShuYW1lKQogICAgICAgIHJldHVybiBuYW1lCgogICAgZGVmIGRzdChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gMCBpZiBEU1QgaXMgbm90IGluIGVmZmVjdCwgb3IgdGhlIERTVCBvZmZzZXQgKGFzIHRpbWVkZWx0YQogICAgICAgIHBvc2l0aXZlIGVhc3R3YXJkKSBpZiBEU1QgaXMgaW4gZWZmZWN0LgoKICAgICAgICBUaGlzIGlzIHB1cmVseSBpbmZvcm1hdGlvbmFsOyB0aGUgRFNUIG9mZnNldCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvCiAgICAgICAgdGhlIFVUQyBvZmZzZXQgcmV0dXJuZWQgYnkgdXRjb2Zmc2V0KCkgaWYgYXBwbGljYWJsZSwgc28gdGhlcmUncyBubwogICAgICAgIG5lZWQgdG8gY29uc3VsdCBkc3QoKSB1bmxlc3MgeW91J3JlIGludGVyZXN0ZWQgaW4gZGlzcGxheWluZyB0aGUgRFNUCiAgICAgICAgaW5mby4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBvZmZzZXQgPSBzZWxmLl90emluZm8uZHN0KE5vbmUpCiAgICAgICAgX2NoZWNrX3V0Y19vZmZzZXQoImRzdCIsIG9mZnNldCkKICAgICAgICByZXR1cm4gb2Zmc2V0CgogICAgZGVmIHJlcGxhY2Uoc2VsZiwgaG91cj1Ob25lLCBtaW51dGU9Tm9uZSwgc2Vjb25kPU5vbmUsIG1pY3Jvc2Vjb25kPU5vbmUsCiAgICAgICAgICAgICAgICB0emluZm89VHJ1ZSwgKiwgZm9sZD1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gYSBuZXcgdGltZSB3aXRoIG5ldyB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGRzLiIiIgogICAgICAgIGlmIGhvdXIgaXMgTm9uZToKICAgICAgICAgICAgaG91ciA9IHNlbGYuaG91cgogICAgICAgIGlmIG1pbnV0ZSBpcyBOb25lOgogICAgICAgICAgICBtaW51dGUgPSBzZWxmLm1pbnV0ZQogICAgICAgIGlmIHNlY29uZCBpcyBOb25lOgogICAgICAgICAgICBzZWNvbmQgPSBzZWxmLnNlY29uZAogICAgICAgIGlmIG1pY3Jvc2Vjb25kIGlzIE5vbmU6CiAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICB0emluZm8gPSBzZWxmLnR6aW5mbwogICAgICAgIGlmIGZvbGQgaXMgTm9uZToKICAgICAgICAgICAgZm9sZCA9IHNlbGYuX2ZvbGQKICAgICAgICByZXR1cm4gdHlwZShzZWxmKShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbywgZm9sZD1mb2xkKQoKICAgICMgUGlja2xlIHN1cHBvcnQuCgogICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICB1czIsIHVzMyA9IGRpdm1vZChzZWxmLl9taWNyb3NlY29uZCwgMjU2KQogICAgICAgIHVzMSwgdXMyID0gZGl2bW9kKHVzMiwgMjU2KQogICAgICAgIGggPSBzZWxmLl9ob3VyCiAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgogICAgICAgICAgICBoICs9IDEyOAogICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFtoLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMxLCB1czIsIHVzM10pCiAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gKGJhc2VzdGF0ZSwgc2VsZi5fdHppbmZvKQoKICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKICAgICAgICBpZiB0emluZm8gaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQogICAgICAgIGgsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCiAgICAgICAgaWYgaCA+IDEyNzoKICAgICAgICAgICAgc2VsZi5fZm9sZCA9IDEKICAgICAgICAgICAgc2VsZi5faG91ciA9IGggLSAxMjgKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9mb2xkID0gMAogICAgICAgICAgICBzZWxmLl9ob3VyID0gaAogICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gKCgodXMxIDw8IDgpIHwgdXMyKSA8PCA4KSB8IHVzMwogICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwoKICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvY29sKToKICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19yZWR1Y2VfZXhfXygyKQoKX3RpbWVfY2xhc3MgPSB0aW1lICAjIHNvIGZ1bmN0aW9ucyB3LyBhcmdzIG5hbWVkICJ0aW1lIiBjYW4gZ2V0IGF0IHRoZSBjbGFzcwoKdGltZS5taW4gPSB0aW1lKDAsIDAsIDApCnRpbWUubWF4ID0gdGltZSgyMywgNTksIDU5LCA5OTk5OTkpCnRpbWUucmVzb2x1dGlvbiA9IHRpbWVkZWx0YShtaWNyb3NlY29uZHM9MSkKCgpjbGFzcyBkYXRldGltZShkYXRlKToKICAgICIiImRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXlbLCBob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLHR6aW5mb11dXV1dKQoKICAgIFRoZSB5ZWFyLCBtb250aCBhbmQgZGF5IGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQuIHR6aW5mbyBtYXkgYmUgTm9uZSwgb3IgYW4KICAgIGluc3RhbmNlIG9mIGEgdHppbmZvIHN1YmNsYXNzLiBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50cy4KICAgICIiIgogICAgX19zbG90c19fID0gZGF0ZS5fX3Nsb3RzX18gKyB0aW1lLl9fc2xvdHNfXwoKICAgIGRlZiBfX25ld19fKGNscywgeWVhciwgbW9udGg9Tm9uZSwgZGF5PU5vbmUsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLAogICAgICAgICAgICAgICAgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCk6CiAgICAgICAgaWYgKGlzaW5zdGFuY2UoeWVhciwgKGJ5dGVzLCBzdHIpKSBhbmQgbGVuKHllYXIpID09IDEwIGFuZAogICAgICAgICAgICAxIDw9IG9yZCh5ZWFyWzI6M10pJjB4N0YgPD0gMTIpOgogICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgc3RyKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICB5ZWFyID0gYnl0ZXMoeWVhciwgJ2xhdGluMScpCiAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgICAgICAgICMgTW9yZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZW5jb2RlIGxhdGluMSBzdHJpbmcgd2hlbiB1bnBpY2tsaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgImEgZGF0ZXRpbWUgb2JqZWN0LiAiCiAgICAgICAgICAgICAgICAgICAgICAgICJwaWNrbGUubG9hZChkYXRhLCBlbmNvZGluZz0nbGF0aW4xJykgaXMgYXNzdW1lZC4iKQogICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhciwgbW9udGgpCiAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCiAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkID0gX2NoZWNrX3RpbWVfZmllbGRzKAogICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQpCiAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgc2VsZi5feWVhciA9IHllYXIKICAgICAgICBzZWxmLl9tb250aCA9IG1vbnRoCiAgICAgICAgc2VsZi5fZGF5ID0gZGF5CiAgICAgICAgc2VsZi5faG91ciA9IGhvdXIKICAgICAgICBzZWxmLl9taW51dGUgPSBtaW51dGUKICAgICAgICBzZWxmLl9zZWNvbmQgPSBzZWNvbmQKICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgIHNlbGYuX2ZvbGQgPSBmb2xkCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKICAgIEBwcm9wZXJ0eQogICAgZGVmIGhvdXIoc2VsZik6CiAgICAgICAgIiIiaG91ciAoMC0yMykiIiIKICAgICAgICByZXR1cm4gc2VsZi5faG91cgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1pbnV0ZShzZWxmKToKICAgICAgICAiIiJtaW51dGUgKDAtNTkpIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX21pbnV0ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHNlY29uZChzZWxmKToKICAgICAgICAiIiJzZWNvbmQgKDAtNTkpIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3NlY29uZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1pY3Jvc2Vjb25kKHNlbGYpOgogICAgICAgICIiIm1pY3Jvc2Vjb25kICgwLTk5OTk5OSkiIiIKICAgICAgICByZXR1cm4gc2VsZi5fbWljcm9zZWNvbmQKCiAgICBAcHJvcGVydHkKICAgIGRlZiB0emluZm8oc2VsZik6CiAgICAgICAgIiIidGltZXpvbmUgaW5mbyBvYmplY3QiIiIKICAgICAgICByZXR1cm4gc2VsZi5fdHppbmZvCgogICAgQHByb3BlcnR5CiAgICBkZWYgZm9sZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZm9sZAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9mcm9tdGltZXN0YW1wKGNscywgdCwgdXRjLCB0eik6CiAgICAgICAgIiIiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuCgogICAgICAgIEEgdGltZXpvbmUgaW5mbyBvYmplY3QgbWF5IGJlIHBhc3NlZCBpbiBhcyB3ZWxsLgogICAgICAgICIiIgogICAgICAgIGZyYWMsIHQgPSBfbWF0aC5tb2RmKHQpCiAgICAgICAgdXMgPSByb3VuZChmcmFjICogMWU2KQogICAgICAgIGlmIHVzID49IDEwMDAwMDA6CiAgICAgICAgICAgIHQgKz0gMQogICAgICAgICAgICB1cyAtPSAxMDAwMDAwCiAgICAgICAgZWxpZiB1cyA8IDA6CiAgICAgICAgICAgIHQgLT0gMQogICAgICAgICAgICB1cyArPSAxMDAwMDAwCgogICAgICAgIGNvbnZlcnRlciA9IF90aW1lLmdtdGltZSBpZiB1dGMgZWxzZSBfdGltZS5sb2NhbHRpbWUKICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZWVrZGF5LCBqZGF5LCBkc3QgPSBjb252ZXJ0ZXIodCkKICAgICAgICBzcyA9IG1pbihzcywgNTkpICAgICMgY2xhbXAgb3V0IGxlYXAgc2Vjb25kcyBpZiB0aGUgcGxhdGZvcm0gaGFzIHRoZW0KICAgICAgICByZXN1bHQgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQogICAgICAgIGlmIHR6IGlzIE5vbmUgYW5kIG5vdCB1dGM6CiAgICAgICAgICAgICMgQXMgb2YgdmVyc2lvbiAyMDE1ZiBtYXggZm9sZCBpbiBJQU5BIGRhdGFiYXNlIGlzCiAgICAgICAgICAgICMgMjMgaG91cnMgYXQgMTk2OS0wOS0zMCAxMzowMDowMCBpbiBLd2FqYWxlaW4uCiAgICAgICAgICAgICMgTGV0J3MgcHJvYmUgMjQgaG91cnMgaW4gdGhlIHBhc3QgdG8gZGV0ZWN0IGEgdHJhbnNpdGlvbjoKICAgICAgICAgICAgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMAoKICAgICAgICAgICAgIyBPbiBXaW5kb3dzIGxvY2FsdGltZV9zIHRocm93cyBhbiBPU0Vycm9yIGZvciBuZWdhdGl2ZSB2YWx1ZXMsCiAgICAgICAgICAgICMgdGh1cyB3ZSBjYW4ndCBwZXJmb3JtIGZvbGQgZGV0ZWN0aW9uIGZvciB2YWx1ZXMgb2YgdGltZSBsZXNzCiAgICAgICAgICAgICMgdGhhbiB0aGUgbWF4IHRpbWUgZm9sZC4gU2VlIGNvbW1lbnRzIGluIF9kYXRldGltZW1vZHVsZSdzCiAgICAgICAgICAgICMgdmVyc2lvbiBvZiB0aGlzIG1ldGhvZCBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAgICAgICBpZiB0IDwgbWF4X2ZvbGRfc2Vjb25kcyBhbmQgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IGNvbnZlcnRlcih0IC0gbWF4X2ZvbGRfc2Vjb25kcylbOjZdCiAgICAgICAgICAgIHByb2JlMSA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCiAgICAgICAgICAgIHRyYW5zID0gcmVzdWx0IC0gcHJvYmUxIC0gdGltZWRlbHRhKDAsIG1heF9mb2xkX3NlY29uZHMpCiAgICAgICAgICAgIGlmIHRyYW5zLmRheXMgPCAwOgogICAgICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IGNvbnZlcnRlcih0ICsgdHJhbnMgLy8gdGltZWRlbHRhKDAsIDEpKVs6Nl0KICAgICAgICAgICAgICAgIHByb2JlMiA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCiAgICAgICAgICAgICAgICBpZiBwcm9iZTIgPT0gcmVzdWx0OgogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5fZm9sZCA9IDEKICAgICAgICBlbGlmIHR6IGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXN1bHQgPSB0ei5mcm9tdXRjKHJlc3VsdCkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbXRpbWVzdGFtcChjbHMsIHQsIHR6PU5vbmUpOgogICAgICAgICIiIkNvbnN0cnVjdCBhIGRhdGV0aW1lIGZyb20gYSBQT1NJWCB0aW1lc3RhbXAgKGxpa2UgdGltZS50aW1lKCkpLgoKICAgICAgICBBIHRpbWV6b25lIGluZm8gb2JqZWN0IG1heSBiZSBwYXNzZWQgaW4gYXMgd2VsbC4KICAgICAgICAiIiIKICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0eikKCiAgICAgICAgcmV0dXJuIGNscy5fZnJvbXRpbWVzdGFtcCh0LCB0eiBpcyBub3QgTm9uZSwgdHopCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgdXRjZnJvbXRpbWVzdGFtcChjbHMsIHQpOgogICAgICAgICIiIkNvbnN0cnVjdCBhIG5haXZlIFVUQyBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wLiIiIgogICAgICAgIHJldHVybiBjbHMuX2Zyb210aW1lc3RhbXAodCwgVHJ1ZSwgTm9uZSkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBub3coY2xzLCB0ej1Ob25lKToKICAgICAgICAiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSB0aW1lLnRpbWUoKSBhbmQgb3B0aW9uYWwgdGltZSB6b25lIGluZm8uIgogICAgICAgIHQgPSBfdGltZS50aW1lKCkKICAgICAgICByZXR1cm4gY2xzLmZyb210aW1lc3RhbXAodCwgdHopCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgdXRjbm93KGNscyk6CiAgICAgICAgIkNvbnN0cnVjdCBhIFVUQyBkYXRldGltZSBmcm9tIHRpbWUudGltZSgpLiIKICAgICAgICB0ID0gX3RpbWUudGltZSgpCiAgICAgICAgcmV0dXJuIGNscy51dGNmcm9tdGltZXN0YW1wKHQpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgY29tYmluZShjbHMsIGRhdGUsIHRpbWUsIHR6aW5mbz1UcnVlKToKICAgICAgICAiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIGdpdmVuIGRhdGUgYW5kIGEgZ2l2ZW4gdGltZS4iCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0ZSwgX2RhdGVfY2xhc3MpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRhdGUgYXJndW1lbnQgbXVzdCBiZSBhIGRhdGUgaW5zdGFuY2UiKQogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRpbWUsIF90aW1lX2NsYXNzKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0aW1lIGFyZ3VtZW50IG11c3QgYmUgYSB0aW1lIGluc3RhbmNlIikKICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgdHppbmZvID0gdGltZS50emluZm8KICAgICAgICByZXR1cm4gY2xzKGRhdGUueWVhciwgZGF0ZS5tb250aCwgZGF0ZS5kYXksCiAgICAgICAgICAgICAgICAgICB0aW1lLmhvdXIsIHRpbWUubWludXRlLCB0aW1lLnNlY29uZCwgdGltZS5taWNyb3NlY29uZCwKICAgICAgICAgICAgICAgICAgIHR6aW5mbywgZm9sZD10aW1lLmZvbGQpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbWlzb2Zvcm1hdChjbHMsIGRhdGVfc3RyaW5nKToKICAgICAgICAiIiJDb25zdHJ1Y3QgYSBkYXRldGltZSBmcm9tIGEgc3RyaW5nIGluIG9uZSBvZiB0aGUgSVNPIDg2MDEgZm9ybWF0cy4iIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRlX3N0cmluZywgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdmcm9taXNvZm9ybWF0OiBhcmd1bWVudCBtdXN0IGJlIHN0cicpCgogICAgICAgIGlmIGxlbihkYXRlX3N0cmluZykgPCA3OgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnSW52YWxpZCBpc29mb3JtYXQgc3RyaW5nOiB7ZGF0ZV9zdHJpbmchcn0nKQoKICAgICAgICAjIFNwbGl0IHRoaXMgYXQgdGhlIHNlcGFyYXRvcgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VwYXJhdG9yX2xvY2F0aW9uID0gX2ZpbmRfaXNvZm9ybWF0X2RhdGV0aW1lX3NlcGFyYXRvcihkYXRlX3N0cmluZykKICAgICAgICAgICAgZHN0ciA9IGRhdGVfc3RyaW5nWzA6c2VwYXJhdG9yX2xvY2F0aW9uXQogICAgICAgICAgICB0c3RyID0gZGF0ZV9zdHJpbmdbKHNlcGFyYXRvcl9sb2NhdGlvbisxKTpdCgogICAgICAgICAgICBkYXRlX2NvbXBvbmVudHMgPSBfcGFyc2VfaXNvZm9ybWF0X2RhdGUoZHN0cikKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgIGYnSW52YWxpZCBpc29mb3JtYXQgc3RyaW5nOiB7ZGF0ZV9zdHJpbmchcn0nKSBmcm9tIE5vbmUKCiAgICAgICAgaWYgdHN0cjoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdGltZV9jb21wb25lbnRzID0gX3BhcnNlX2lzb2Zvcm1hdF90aW1lKHRzdHIpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmJ0ludmFsaWQgaXNvZm9ybWF0IHN0cmluZzoge2RhdGVfc3RyaW5nIXJ9JykgZnJvbSBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGltZV9jb21wb25lbnRzID0gWzAsIDAsIDAsIDAsIE5vbmVdCgogICAgICAgIHJldHVybiBjbHMoKihkYXRlX2NvbXBvbmVudHMgKyB0aW1lX2NvbXBvbmVudHMpKQoKICAgIGRlZiB0aW1ldHVwbGUoc2VsZik6CiAgICAgICAgIlJldHVybiBsb2NhbCB0aW1lIHR1cGxlIGNvbXBhdGlibGUgd2l0aCB0aW1lLmxvY2FsdGltZSgpLiIKICAgICAgICBkc3QgPSBzZWxmLmRzdCgpCiAgICAgICAgaWYgZHN0IGlzIE5vbmU6CiAgICAgICAgICAgIGRzdCA9IC0xCiAgICAgICAgZWxpZiBkc3Q6CiAgICAgICAgICAgIGRzdCA9IDEKICAgICAgICBlbHNlOgogICAgICAgICAgICBkc3QgPSAwCiAgICAgICAgcmV0dXJuIF9idWlsZF9zdHJ1Y3RfdGltZShzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QpCgogICAgZGVmIF9ta3RpbWUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGludGVnZXIgUE9TSVggdGltZXN0YW1wLiIiIgogICAgICAgIGVwb2NoID0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkKICAgICAgICBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwCiAgICAgICAgdCA9IChzZWxmIC0gZXBvY2gpIC8vIHRpbWVkZWx0YSgwLCAxKQogICAgICAgIGRlZiBsb2NhbCh1KToKICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IF90aW1lLmxvY2FsdGltZSh1KVs6Nl0KICAgICAgICAgICAgcmV0dXJuIChkYXRldGltZSh5LCBtLCBkLCBoaCwgbW0sIHNzKSAtIGVwb2NoKSAvLyB0aW1lZGVsdGEoMCwgMSkKCiAgICAgICAgIyBPdXIgZ29hbCBpcyB0byBzb2x2ZSB0ID0gbG9jYWwodSkgZm9yIHUuCiAgICAgICAgYSA9IGxvY2FsKHQpIC0gdAogICAgICAgIHUxID0gdCAtIGEKICAgICAgICB0MSA9IGxvY2FsKHUxKQogICAgICAgIGlmIHQxID09IHQ6CiAgICAgICAgICAgICMgV2UgZm91bmQgb25lIHNvbHV0aW9uLCBidXQgaXQgbWF5IG5vdCBiZSB0aGUgb25lIHdlIG5lZWQuCiAgICAgICAgICAgICMgTG9vayBmb3IgYW4gZWFybGllciBzb2x1dGlvbiAoaWYgYGZvbGRgIGlzIDApLCBvciBhCiAgICAgICAgICAgICMgbGF0ZXIgb25lIChpZiBgZm9sZGAgaXMgMSkuCiAgICAgICAgICAgIHUyID0gdTEgKyAoLW1heF9mb2xkX3NlY29uZHMsIG1heF9mb2xkX3NlY29uZHMpW3NlbGYuZm9sZF0KICAgICAgICAgICAgYiA9IGxvY2FsKHUyKSAtIHUyCiAgICAgICAgICAgIGlmIGEgPT0gYjoKICAgICAgICAgICAgICAgIHJldHVybiB1MQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGIgPSB0MSAtIHUxCiAgICAgICAgICAgIGFzc2VydCBhICE9IGIKICAgICAgICB1MiA9IHQgLSBiCiAgICAgICAgdDIgPSBsb2NhbCh1MikKICAgICAgICBpZiB0MiA9PSB0OgogICAgICAgICAgICByZXR1cm4gdTIKICAgICAgICBpZiB0MSA9PSB0OgogICAgICAgICAgICByZXR1cm4gdTEKICAgICAgICAjIFdlIGhhdmUgZm91bmQgYm90aCBvZmZzZXRzIGEgYW5kIGIsIGJ1dCBuZWl0aGVyIHQgLSBhIG5vciB0IC0gYiBpcwogICAgICAgICMgYSBzb2x1dGlvbi4gIFRoaXMgbWVhbnMgdCBpcyBpbiB0aGUgZ2FwLgogICAgICAgIHJldHVybiAobWF4LCBtaW4pW3NlbGYuZm9sZF0odTEsIHUyKQoKCiAgICBkZWYgdGltZXN0YW1wKHNlbGYpOgogICAgICAgICJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0IgogICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgogICAgICAgICAgICBzID0gc2VsZi5fbWt0aW1lKCkKICAgICAgICAgICAgcmV0dXJuIHMgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIChzZWxmIC0gX0VQT0NIKS50b3RhbF9zZWNvbmRzKCkKCiAgICBkZWYgdXRjdGltZXR1cGxlKHNlbGYpOgogICAgICAgICJSZXR1cm4gVVRDIHRpbWUgdHVwbGUgY29tcGF0aWJsZSB3aXRoIHRpbWUuZ210aW1lKCkuIgogICAgICAgIG9mZnNldCA9IHNlbGYudXRjb2Zmc2V0KCkKICAgICAgICBpZiBvZmZzZXQ6CiAgICAgICAgICAgIHNlbGYgLT0gb2Zmc2V0CiAgICAgICAgeSwgbSwgZCA9IHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXkKICAgICAgICBoaCwgbW0sIHNzID0gc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQKICAgICAgICByZXR1cm4gX2J1aWxkX3N0cnVjdF90aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MsIDApCgogICAgZGVmIGRhdGUoc2VsZik6CiAgICAgICAgIlJldHVybiB0aGUgZGF0ZSBwYXJ0LiIKICAgICAgICByZXR1cm4gZGF0ZShzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5KQoKICAgIGRlZiB0aW1lKHNlbGYpOgogICAgICAgICJSZXR1cm4gdGhlIHRpbWUgcGFydCwgd2l0aCB0emluZm8gTm9uZS4iCiAgICAgICAgcmV0dXJuIHRpbWUoc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQsIGZvbGQ9c2VsZi5mb2xkKQoKICAgIGRlZiB0aW1ldHooc2VsZik6CiAgICAgICAgIlJldHVybiB0aGUgdGltZSBwYXJ0LCB3aXRoIHNhbWUgdHppbmZvLiIKICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwKICAgICAgICAgICAgICAgICAgICBzZWxmLl90emluZm8sIGZvbGQ9c2VsZi5mb2xkKQoKICAgIGRlZiByZXBsYWNlKHNlbGYsIHllYXI9Tm9uZSwgbW9udGg9Tm9uZSwgZGF5PU5vbmUsIGhvdXI9Tm9uZSwKICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUsCiAgICAgICAgICAgICAgICAqLCBmb2xkPU5vbmUpOgogICAgICAgICIiIlJldHVybiBhIG5ldyBkYXRldGltZSB3aXRoIG5ldyB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGRzLiIiIgogICAgICAgIGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgICAgeWVhciA9IHNlbGYueWVhcgogICAgICAgIGlmIG1vbnRoIGlzIE5vbmU6CiAgICAgICAgICAgIG1vbnRoID0gc2VsZi5tb250aAogICAgICAgIGlmIGRheSBpcyBOb25lOgogICAgICAgICAgICBkYXkgPSBzZWxmLmRheQogICAgICAgIGlmIGhvdXIgaXMgTm9uZToKICAgICAgICAgICAgaG91ciA9IHNlbGYuaG91cgogICAgICAgIGlmIG1pbnV0ZSBpcyBOb25lOgogICAgICAgICAgICBtaW51dGUgPSBzZWxmLm1pbnV0ZQogICAgICAgIGlmIHNlY29uZCBpcyBOb25lOgogICAgICAgICAgICBzZWNvbmQgPSBzZWxmLnNlY29uZAogICAgICAgIGlmIG1pY3Jvc2Vjb25kIGlzIE5vbmU6CiAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICB0emluZm8gPSBzZWxmLnR6aW5mbwogICAgICAgIGlmIGZvbGQgaXMgTm9uZToKICAgICAgICAgICAgZm9sZCA9IHNlbGYuZm9sZAogICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQ9Zm9sZCkKCiAgICBkZWYgX2xvY2FsX3RpbWV6b25lKHNlbGYpOgogICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6CiAgICAgICAgICAgIHRzID0gc2VsZi5fbWt0aW1lKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0cyA9IChzZWxmIC0gX0VQT0NIKSAvLyB0aW1lZGVsdGEoc2Vjb25kcz0xKQogICAgICAgIGxvY2FsdG0gPSBfdGltZS5sb2NhbHRpbWUodHMpCiAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCiAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEKICAgICAgICBnbXRvZmYgPSBsb2NhbHRtLnRtX2dtdG9mZgogICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKICAgICAgICByZXR1cm4gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKCiAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKICAgICAgICBpZiB0eiBpcyBOb25lOgogICAgICAgICAgICB0eiA9IHNlbGYuX2xvY2FsX3RpbWV6b25lKCkKICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6IGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdHppbmZvIikKCiAgICAgICAgbXl0eiA9IHNlbGYudHppbmZvCiAgICAgICAgaWYgbXl0eiBpcyBOb25lOgogICAgICAgICAgICBteXR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogICAgICAgICAgICBteW9mZnNldCA9IG15dHoudXRjb2Zmc2V0KHNlbGYpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbXlvZmZzZXQgPSBteXR6LnV0Y29mZnNldChzZWxmKQogICAgICAgICAgICBpZiBteW9mZnNldCBpcyBOb25lOgogICAgICAgICAgICAgICAgbXl0eiA9IHNlbGYucmVwbGFjZSh0emluZm89Tm9uZSkuX2xvY2FsX3RpbWV6b25lKCkKICAgICAgICAgICAgICAgIG15b2Zmc2V0ID0gbXl0ei51dGNvZmZzZXQoc2VsZikKCiAgICAgICAgaWYgdHogaXMgbXl0ejoKICAgICAgICAgICAgcmV0dXJuIHNlbGYKCiAgICAgICAgIyBDb252ZXJ0IHNlbGYgdG8gVVRDLCBhbmQgYXR0YWNoIHRoZSBuZXcgdGltZSB6b25lIG9iamVjdC4KICAgICAgICB1dGMgPSAoc2VsZiAtIG15b2Zmc2V0KS5yZXBsYWNlKHR6aW5mbz10eikKCiAgICAgICAgIyBDb252ZXJ0IGZyb20gVVRDIHRvIHR6J3MgbG9jYWwgdGltZS4KICAgICAgICByZXR1cm4gdHouZnJvbXV0Yyh1dGMpCgogICAgIyBXYXlzIHRvIHByb2R1Y2UgYSBzdHJpbmcuCgogICAgZGVmIGN0aW1lKHNlbGYpOgogICAgICAgICJSZXR1cm4gY3RpbWUoKSBzdHlsZSBzdHJpbmcuIgogICAgICAgIHdlZWtkYXkgPSBzZWxmLnRvb3JkaW5hbCgpICUgNyBvciA3CiAgICAgICAgcmV0dXJuICIlcyAlcyAlMmQgJTAyZDolMDJkOiUwMmQgJTA0ZCIgJSAoCiAgICAgICAgICAgIF9EQVlOQU1FU1t3ZWVrZGF5XSwKICAgICAgICAgICAgX01PTlRITkFNRVNbc2VsZi5fbW9udGhdLAogICAgICAgICAgICBzZWxmLl9kYXksCiAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICBzZWxmLl95ZWFyKQoKICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgc2VwPSdUJywgdGltZXNwZWM9J2F1dG8nKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBJU08uCgogICAgICAgIFRoZSBmdWxsIGZvcm1hdCBsb29rcyBsaWtlICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbScuCiAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGZyYWN0aW9uYWwgcGFydCBpcyBvbWl0dGVkIGlmIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KCiAgICAgICAgSWYgc2VsZi50emluZm8gaXMgbm90IE5vbmUsIHRoZSBVVEMgb2Zmc2V0IGlzIGFsc28gYXR0YWNoZWQsIGdpdmluZwogICAgICAgIGdpdmluZyBhIGZ1bGwgZm9ybWF0IG9mICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbStISDpNTScuCgogICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50IHNlcCBzcGVjaWZpZXMgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIGRhdGUgYW5kCiAgICAgICAgdGltZSwgZGVmYXVsdCAnVCcuCgogICAgICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCB0aW1lc3BlYyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCiAgICAgICAgdGVybXMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS4gVmFsaWQgb3B0aW9ucyBhcmUgJ2F1dG8nLCAnaG91cnMnLAogICAgICAgICdtaW51dGVzJywgJ3NlY29uZHMnLCAnbWlsbGlzZWNvbmRzJyBhbmQgJ21pY3Jvc2Vjb25kcycuCiAgICAgICAgIiIiCiAgICAgICAgcyA9ICgiJTA0ZC0lMDJkLSUwMmQlYyIgJSAoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VwKSArCiAgICAgICAgICAgICBfZm9ybWF0X3RpbWUoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQsIHRpbWVzcGVjKSkKCiAgICAgICAgb2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgIHR6ID0gX2Zvcm1hdF9vZmZzZXQob2ZmKQogICAgICAgIGlmIHR6OgogICAgICAgICAgICBzICs9IHR6CgogICAgICAgIHJldHVybiBzCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICIiIkNvbnZlcnQgdG8gZm9ybWFsIHN0cmluZywgZm9yIHJlcHIoKS4iIiIKICAgICAgICBMID0gW3NlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksICAjIFRoZXNlIGFyZSBuZXZlciB6ZXJvCiAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgc2VsZi5fbWljcm9zZWNvbmRdCiAgICAgICAgaWYgTFstMV0gPT0gMDoKICAgICAgICAgICAgZGVsIExbLTFdCiAgICAgICAgaWYgTFstMV0gPT0gMDoKICAgICAgICAgICAgZGVsIExbLTFdCiAgICAgICAgcyA9ICIlcy4lcyglcykiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgIi5qb2luKG1hcChzdHIsIEwpKSkKICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCiAgICAgICAgaWYgc2VsZi5fZm9sZDoKICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIGZvbGQ9MSkiCiAgICAgICAgcmV0dXJuIHMKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAiQ29udmVydCB0byBzdHJpbmcsIGZvciBzdHIoKS4iCiAgICAgICAgcmV0dXJuIHNlbGYuaXNvZm9ybWF0KHNlcD0nICcpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgc3RycHRpbWUoY2xzLCBkYXRlX3N0cmluZywgZm9ybWF0KToKICAgICAgICAnc3RyaW5nLCBmb3JtYXQgLT4gbmV3IGRhdGV0aW1lIHBhcnNlZCBmcm9tIGEgc3RyaW5nIChsaWtlIHRpbWUuc3RycHRpbWUoKSkuJwogICAgICAgIGltcG9ydCBfc3RycHRpbWUKICAgICAgICByZXR1cm4gX3N0cnB0aW1lLl9zdHJwdGltZV9kYXRldGltZShjbHMsIGRhdGVfc3RyaW5nLCBmb3JtYXQpCgogICAgZGVmIHV0Y29mZnNldChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWV6b25lIG9mZnNldCBhcyB0aW1lZGVsdGEgcG9zaXRpdmUgZWFzdCBvZiBVVEMgKG5lZ2F0aXZlIHdlc3Qgb2YKICAgICAgICBVVEMpLiIiIgogICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIG9mZnNldCA9IHNlbGYuX3R6aW5mby51dGNvZmZzZXQoc2VsZikKICAgICAgICBfY2hlY2tfdXRjX29mZnNldCgidXRjb2Zmc2V0Iiwgb2Zmc2V0KQogICAgICAgIHJldHVybiBvZmZzZXQKCiAgICBkZWYgdHpuYW1lKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgdGltZXpvbmUgbmFtZS4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSBuYW1lIGlzIDEwMCUgaW5mb3JtYXRpb25hbCAtLSB0aGVyZSdzIG5vIHJlcXVpcmVtZW50IHRoYXQKICAgICAgICBpdCBtZWFuIGFueXRoaW5nIGluIHBhcnRpY3VsYXIuIEZvciBleGFtcGxlLCAiR01UIiwgIlVUQyIsICItNTAwIiwKICAgICAgICAiLTU6MDAiLCAiRURUIiwgIlVTL0Vhc3Rlcm4iLCAiQW1lcmljYS9OZXcgWW9yayIgYXJlIGFsbCB2YWxpZCByZXBsaWVzLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIG5hbWUgPSBzZWxmLl90emluZm8udHpuYW1lKHNlbGYpCiAgICAgICAgX2NoZWNrX3R6bmFtZShuYW1lKQogICAgICAgIHJldHVybiBuYW1lCgogICAgZGVmIGRzdChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gMCBpZiBEU1QgaXMgbm90IGluIGVmZmVjdCwgb3IgdGhlIERTVCBvZmZzZXQgKGFzIHRpbWVkZWx0YQogICAgICAgIHBvc2l0aXZlIGVhc3R3YXJkKSBpZiBEU1QgaXMgaW4gZWZmZWN0LgoKICAgICAgICBUaGlzIGlzIHB1cmVseSBpbmZvcm1hdGlvbmFsOyB0aGUgRFNUIG9mZnNldCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvCiAgICAgICAgdGhlIFVUQyBvZmZzZXQgcmV0dXJuZWQgYnkgdXRjb2Zmc2V0KCkgaWYgYXBwbGljYWJsZSwgc28gdGhlcmUncyBubwogICAgICAgIG5lZWQgdG8gY29uc3VsdCBkc3QoKSB1bmxlc3MgeW91J3JlIGludGVyZXN0ZWQgaW4gZGlzcGxheWluZyB0aGUgRFNUCiAgICAgICAgaW5mby4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBvZmZzZXQgPSBzZWxmLl90emluZm8uZHN0KHNlbGYpCiAgICAgICAgX2NoZWNrX3V0Y19vZmZzZXQoImRzdCIsIG9mZnNldCkKICAgICAgICByZXR1cm4gb2Zmc2V0CgogICAgIyBDb21wYXJpc29ucyBvZiBkYXRldGltZSBvYmplY3RzIHdpdGggb3RoZXIuCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSA9PSAwCiAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMAogICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICBlbHNlOgogICAgICAgICAgICBfY21wZXJyb3Ioc2VsZiwgb3RoZXIpCgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8IDAKICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgZWxzZToKICAgICAgICAgICAgX2NtcGVycm9yKHNlbGYsIG90aGVyKQoKICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPj0gMAogICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICBlbHNlOgogICAgICAgICAgICBfY21wZXJyb3Ioc2VsZiwgb3RoZXIpCgogICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA+IDAKICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgZWxzZToKICAgICAgICAgICAgX2NtcGVycm9yKHNlbGYsIG90aGVyKQoKICAgIGRlZiBfY21wKHNlbGYsIG90aGVyLCBhbGxvd19taXhlZD1GYWxzZSk6CiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKQogICAgICAgIG15dHogPSBzZWxmLl90emluZm8KICAgICAgICBvdHR6ID0gb3RoZXIuX3R6aW5mbwogICAgICAgIG15b2ZmID0gb3RvZmYgPSBOb25lCgogICAgICAgIGlmIG15dHogaXMgb3R0ejoKICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICAgICBvdG9mZiA9IG90aGVyLnV0Y29mZnNldCgpCiAgICAgICAgICAgICMgQXNzdW1lIHRoYXQgYWxsb3dfbWl4ZWQgbWVhbnMgdGhhdCB3ZSBhcmUgY2FsbGVkIGZyb20gX19lcV9fCiAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgogICAgICAgICAgICAgICAgaWYgbXlvZmYgIT0gc2VsZi5yZXBsYWNlKGZvbGQ9bm90IHNlbGYuZm9sZCkudXRjb2Zmc2V0KCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIKICAgICAgICAgICAgICAgIGlmIG90b2ZmICE9IG90aGVyLnJlcGxhY2UoZm9sZD1ub3Qgb3RoZXIuZm9sZCkudXRjb2Zmc2V0KCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIKICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gbXlvZmYgPT0gb3RvZmYKCiAgICAgICAgaWYgYmFzZV9jb21wYXJlOgogICAgICAgICAgICByZXR1cm4gX2NtcCgoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpLAogICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX3llYXIsIG90aGVyLl9tb250aCwgb3RoZXIuX2RheSwKICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICBpZiBteW9mZiBpcyBOb25lIG9yIG90b2ZmIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgogICAgICAgICAgICAgICAgcmV0dXJuIDIgIyBhcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIGRhdGV0aW1lcyIpCiAgICAgICAgIyBYWFggV2hhdCBmb2xsb3dzIGNvdWxkIGJlIGRvbmUgbW9yZSBlZmZpY2llbnRseS4uLgogICAgICAgIGRpZmYgPSBzZWxmIC0gb3RoZXIgICAgICMgdGhpcyB3aWxsIHRha2Ugb2Zmc2V0cyBpbnRvIGFjY291bnQKICAgICAgICBpZiBkaWZmLmRheXMgPCAwOgogICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICByZXR1cm4gZGlmZiBhbmQgMSBvciAwCgogICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgogICAgICAgICJBZGQgYSBkYXRldGltZSBhbmQgYSB0aW1lZGVsdGEuIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICBkZWx0YSA9IHRpbWVkZWx0YShzZWxmLnRvb3JkaW5hbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzPXNlbGYuX2hvdXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlcz1zZWxmLl9taW51dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmRzPXNlbGYuX21pY3Jvc2Vjb25kKQogICAgICAgIGRlbHRhICs9IG90aGVyCiAgICAgICAgaG91ciwgcmVtID0gZGl2bW9kKGRlbHRhLnNlY29uZHMsIDM2MDApCiAgICAgICAgbWludXRlLCBzZWNvbmQgPSBkaXZtb2QocmVtLCA2MCkKICAgICAgICBpZiAwIDwgZGVsdGEuZGF5cyA8PSBfTUFYT1JESU5BTDoKICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikuY29tYmluZShkYXRlLmZyb21vcmRpbmFsKGRlbHRhLmRheXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YS5taWNyb3NlY29uZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89c2VsZi5fdHppbmZvKSkKICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJyZXN1bHQgb3V0IG9mIHJhbmdlIikKCiAgICBfX3JhZGRfXyA9IF9fYWRkX18KCiAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIlN1YnRyYWN0IHR3byBkYXRldGltZXMsIG9yIGEgZGF0ZXRpbWUgYW5kIGEgdGltZWRlbHRhLiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYgKyAtb3RoZXIKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgICAgIGRheXMxID0gc2VsZi50b29yZGluYWwoKQogICAgICAgIGRheXMyID0gb3RoZXIudG9vcmRpbmFsKCkKICAgICAgICBzZWNzMSA9IHNlbGYuX3NlY29uZCArIHNlbGYuX21pbnV0ZSAqIDYwICsgc2VsZi5faG91ciAqIDM2MDAKICAgICAgICBzZWNzMiA9IG90aGVyLl9zZWNvbmQgKyBvdGhlci5fbWludXRlICogNjAgKyBvdGhlci5faG91ciAqIDM2MDAKICAgICAgICBiYXNlID0gdGltZWRlbHRhKGRheXMxIC0gZGF5czIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWNzMSAtIHNlY3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgLSBvdGhlci5fbWljcm9zZWNvbmQpCiAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG90aGVyLl90emluZm86CiAgICAgICAgICAgIHJldHVybiBiYXNlCiAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCiAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQogICAgICAgIGlmIG15b2ZmID09IG90b2ZmOgogICAgICAgICAgICByZXR1cm4gYmFzZQogICAgICAgIGlmIG15b2ZmIGlzIE5vbmUgb3Igb3RvZmYgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgbWl4IG5haXZlIGFuZCB0aW1lem9uZS1hd2FyZSB0aW1lIikKICAgICAgICByZXR1cm4gYmFzZSArIG90b2ZmIC0gbXlvZmYKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6CiAgICAgICAgICAgIGlmIHNlbGYuZm9sZDoKICAgICAgICAgICAgICAgIHQgPSBzZWxmLnJlcGxhY2UoZm9sZD0wKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdCA9IHNlbGYKICAgICAgICAgICAgdHpvZmYgPSB0LnV0Y29mZnNldCgpCiAgICAgICAgICAgIGlmIHR6b2ZmIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2godC5fZ2V0c3RhdGUoKVswXSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGRheXMgPSBfeW1kMm9yZChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5KQogICAgICAgICAgICAgICAgc2Vjb25kcyA9IHNlbGYuaG91ciAqIDM2MDAgKyBzZWxmLm1pbnV0ZSAqIDYwICsgc2VsZi5zZWNvbmQKICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0aW1lZGVsdGEoZGF5cywgc2Vjb25kcywgc2VsZi5taWNyb3NlY29uZCkgLSB0em9mZikKICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKCiAgICAjIFBpY2tsZSBzdXBwb3J0LgoKICAgIGRlZiBfZ2V0c3RhdGUoc2VsZiwgcHJvdG9jb2w9Myk6CiAgICAgICAgeWhpLCB5bG8gPSBkaXZtb2Qoc2VsZi5feWVhciwgMjU2KQogICAgICAgIHVzMiwgdXMzID0gZGl2bW9kKHNlbGYuX21pY3Jvc2Vjb25kLCAyNTYpCiAgICAgICAgdXMxLCB1czIgPSBkaXZtb2QodXMyLCAyNTYpCiAgICAgICAgbSA9IHNlbGYuX21vbnRoCiAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgogICAgICAgICAgICBtICs9IDEyOAogICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFt5aGksIHlsbywgbSwgc2VsZi5fZGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMxLCB1czIsIHVzM10pCiAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gKGJhc2VzdGF0ZSwgc2VsZi5fdHppbmZvKQoKICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKICAgICAgICBpZiB0emluZm8gaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQogICAgICAgICh5aGksIHlsbywgbSwgc2VsZi5fZGF5LCBzZWxmLl9ob3VyLAogICAgICAgICBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMykgPSBzdHJpbmcKICAgICAgICBpZiBtID4gMTI3OgogICAgICAgICAgICBzZWxmLl9mb2xkID0gMQogICAgICAgICAgICBzZWxmLl9tb250aCA9IG0gLSAxMjgKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9mb2xkID0gMAogICAgICAgICAgICBzZWxmLl9tb250aCA9IG0KICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCiAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCgogICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG9jb2wpOgogICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKHByb3RvY29sKSkKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX3JlZHVjZV9leF9fKDIpCgoKZGF0ZXRpbWUubWluID0gZGF0ZXRpbWUoMSwgMSwgMSkKZGF0ZXRpbWUubWF4ID0gZGF0ZXRpbWUoOTk5OSwgMTIsIDMxLCAyMywgNTksIDU5LCA5OTk5OTkpCmRhdGV0aW1lLnJlc29sdXRpb24gPSB0aW1lZGVsdGEobWljcm9zZWNvbmRzPTEpCgoKZGVmIF9pc293ZWVrMW1vbmRheSh5ZWFyKToKICAgICMgSGVscGVyIHRvIGNhbGN1bGF0ZSB0aGUgZGF5IG51bWJlciBvZiB0aGUgTW9uZGF5IHN0YXJ0aW5nIHdlZWsgMQogICAgIyBYWFggVGhpcyBjb3VsZCBiZSBkb25lIG1vcmUgZWZmaWNpZW50bHkKICAgIFRIVVJTREFZID0gMwogICAgZmlyc3RkYXkgPSBfeW1kMm9yZCh5ZWFyLCAxLCAxKQogICAgZmlyc3R3ZWVrZGF5ID0gKGZpcnN0ZGF5ICsgNikgJSA3ICAjIFNlZSB3ZWVrZGF5KCkgYWJvdmUKICAgIHdlZWsxbW9uZGF5ID0gZmlyc3RkYXkgLSBmaXJzdHdlZWtkYXkKICAgIGlmIGZpcnN0d2Vla2RheSA+IFRIVVJTREFZOgogICAgICAgIHdlZWsxbW9uZGF5ICs9IDcKICAgIHJldHVybiB3ZWVrMW1vbmRheQoKCmNsYXNzIHRpbWV6b25lKHR6aW5mbyk6CiAgICBfX3Nsb3RzX18gPSAnX29mZnNldCcsICdfbmFtZScKCiAgICAjIFNlbnRpbmVsIHZhbHVlIHRvIGRpc2FsbG93IE5vbmUKICAgIF9PbWl0dGVkID0gb2JqZWN0KCkKICAgIGRlZiBfX25ld19fKGNscywgb2Zmc2V0LCBuYW1lPV9PbWl0dGVkKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvZmZzZXQsIHRpbWVkZWx0YSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiKQogICAgICAgIGlmIG5hbWUgaXMgY2xzLl9PbWl0dGVkOgogICAgICAgICAgICBpZiBub3Qgb2Zmc2V0OgogICAgICAgICAgICAgICAgcmV0dXJuIGNscy51dGMKICAgICAgICAgICAgbmFtZSA9IE5vbmUKICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibmFtZSBtdXN0IGJlIGEgc3RyaW5nIikKICAgICAgICBpZiBub3QgY2xzLl9taW5vZmZzZXQgPD0gb2Zmc2V0IDw9IGNscy5fbWF4b2Zmc2V0OgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmljdGx5IGJldHdlZW4gLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZWRlbHRhKGhvdXJzPTI0KS4iKQogICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZShvZmZzZXQsIG5hbWUpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2NyZWF0ZShjbHMsIG9mZnNldCwgbmFtZT1Ob25lKToKICAgICAgICBzZWxmID0gdHppbmZvLl9fbmV3X18oY2xzKQogICAgICAgIHNlbGYuX29mZnNldCA9IG9mZnNldAogICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19nZXRpbml0YXJnc19fKHNlbGYpOgogICAgICAgICIiInBpY2tsZSBzdXBwb3J0IiIiCiAgICAgICAgaWYgc2VsZi5fbmFtZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gKHNlbGYuX29mZnNldCwpCiAgICAgICAgcmV0dXJuIChzZWxmLl9vZmZzZXQsIHNlbGYuX25hbWUpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZXpvbmUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fb2Zmc2V0ID09IG90aGVyLl9vZmZzZXQKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fb2Zmc2V0KQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAiIiJDb252ZXJ0IHRvIGZvcm1hbCBzdHJpbmcsIGZvciByZXByKCkuCgogICAgICAgID4+PiB0eiA9IHRpbWV6b25lLnV0YwogICAgICAgID4+PiByZXByKHR6KQogICAgICAgICdkYXRldGltZS50aW1lem9uZS51dGMnCiAgICAgICAgPj4+IHR6ID0gdGltZXpvbmUodGltZWRlbHRhKGhvdXJzPS01KSwgJ0VTVCcpCiAgICAgICAgPj4+IHJlcHIodHopCiAgICAgICAgImRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YSgtMSwgNjg0MDApLCAnRVNUJykiCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZiBpcyBzZWxmLnV0YzoKICAgICAgICAgICAgcmV0dXJuICdkYXRldGltZS50aW1lem9uZS51dGMnCiAgICAgICAgaWYgc2VsZi5fbmFtZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gIiVzLiVzKCVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCkKICAgICAgICByZXR1cm4gIiVzLiVzKCVyLCAlcikiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQsIHNlbGYuX25hbWUpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYudHpuYW1lKE5vbmUpCgogICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShkdCwgZGF0ZXRpbWUpIG9yIGR0IGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9vZmZzZXQKICAgICAgICByYWlzZSBUeXBlRXJyb3IoInV0Y29mZnNldCgpIGFyZ3VtZW50IG11c3QgYmUgYSBkYXRldGltZSBpbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgIiBvciBOb25lIikKCiAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKICAgICAgICBpZiBpc2luc3RhbmNlKGR0LCBkYXRldGltZSkgb3IgZHQgaXMgTm9uZToKICAgICAgICAgICAgaWYgc2VsZi5fbmFtZSBpcyBOb25lOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWVfZnJvbV9vZmZzZXQoc2VsZi5fb2Zmc2V0KQogICAgICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHpuYW1lKCkgYXJndW1lbnQgbXVzdCBiZSBhIGRhdGV0aW1lIGluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAiIG9yIE5vbmUiKQoKICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoZHQsIGRhdGV0aW1lKSBvciBkdCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZHN0KCkgYXJndW1lbnQgbXVzdCBiZSBhIGRhdGV0aW1lIGluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAiIG9yIE5vbmUiKQoKICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKICAgICAgICBpZiBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CiAgICAgICAgICAgIGlmIGR0LnR6aW5mbyBpcyBub3Qgc2VsZjoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZyb211dGM6IGR0LnR6aW5mbyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcyBub3Qgc2VsZiIpCiAgICAgICAgICAgIHJldHVybiBkdCArIHNlbGYuX29mZnNldAogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZnJvbXV0YygpIGFyZ3VtZW50IG11c3QgYmUgYSBkYXRldGltZSBpbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgIiBvciBOb25lIikKCiAgICBfbWF4b2Zmc2V0ID0gdGltZWRlbHRhKGhvdXJzPTI0LCBtaWNyb3NlY29uZHM9LTEpCiAgICBfbWlub2Zmc2V0ID0gLV9tYXhvZmZzZXQKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX25hbWVfZnJvbV9vZmZzZXQoZGVsdGEpOgogICAgICAgIGlmIG5vdCBkZWx0YToKICAgICAgICAgICAgcmV0dXJuICdVVEMnCiAgICAgICAgaWYgZGVsdGEgPCB0aW1lZGVsdGEoMCk6CiAgICAgICAgICAgIHNpZ24gPSAnLScKICAgICAgICAgICAgZGVsdGEgPSAtZGVsdGEKICAgICAgICBlbHNlOgogICAgICAgICAgICBzaWduID0gJysnCiAgICAgICAgaG91cnMsIHJlc3QgPSBkaXZtb2QoZGVsdGEsIHRpbWVkZWx0YShob3Vycz0xKSkKICAgICAgICBtaW51dGVzLCByZXN0ID0gZGl2bW9kKHJlc3QsIHRpbWVkZWx0YShtaW51dGVzPTEpKQogICAgICAgIHNlY29uZHMgPSByZXN0LnNlY29uZHMKICAgICAgICBtaWNyb3NlY29uZHMgPSByZXN0Lm1pY3Jvc2Vjb25kcwogICAgICAgIGlmIG1pY3Jvc2Vjb25kczoKICAgICAgICAgICAgcmV0dXJuIChmJ1VUQ3tzaWdufXtob3VyczowMmR9OnttaW51dGVzOjAyZH06e3NlY29uZHM6MDJkfScKICAgICAgICAgICAgICAgICAgICBmJy57bWljcm9zZWNvbmRzOjA2ZH0nKQogICAgICAgIGlmIHNlY29uZHM6CiAgICAgICAgICAgIHJldHVybiBmJ1VUQ3tzaWdufXtob3VyczowMmR9OnttaW51dGVzOjAyZH06e3NlY29uZHM6MDJkfScKICAgICAgICByZXR1cm4gZidVVEN7c2lnbn17aG91cnM6MDJkfTp7bWludXRlczowMmR9JwoKVVRDID0gdGltZXpvbmUudXRjID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lZGVsdGEoMCkpCgojIGJwby0zNzY0MjogVGhlc2UgYXR0cmlidXRlcyBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtaW51dGUgZm9yIGJhY2t3YXJkcwojIGNvbXBhdGliaWxpdHksIGV2ZW4gdGhvdWdoIHRoZSBjb25zdHJ1Y3RvciB3aWxsIGFjY2VwdCBhIHdpZGVyIHJhbmdlIG9mCiMgdmFsdWVzLiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KdGltZXpvbmUubWluID0gdGltZXpvbmUuX2NyZWF0ZSgtdGltZWRlbHRhKGhvdXJzPTIzLCBtaW51dGVzPTU5KSkKdGltZXpvbmUubWF4ID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lZGVsdGEoaG91cnM9MjMsIG1pbnV0ZXM9NTkpKQpfRVBPQ0ggPSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKQoKIyBTb21lIHRpbWUgem9uZSBhbGdlYnJhLiAgRm9yIGEgZGF0ZXRpbWUgeCwgbGV0CiMgICAgIHgubiA9IHggc3RyaXBwZWQgb2YgaXRzIHRpbWV6b25lIC0tIGl0cyBuYWl2ZSB0aW1lLgojICAgICB4Lm8gPSB4LnV0Y29mZnNldCgpLCBhbmQgYXNzdW1pbmcgdGhhdCBkb2Vzbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvcgojICAgICAgICAgICByZXR1cm4gTm9uZQojICAgICB4LmQgPSB4LmRzdCgpLCBhbmQgYXNzdW1pbmcgdGhhdCBkb2Vzbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvcgojICAgICAgICAgICByZXR1cm4gTm9uZQojICAgICB4LnMgPSB4J3Mgc3RhbmRhcmQgb2Zmc2V0LCB4Lm8gLSB4LmQKIwojIE5vdyBzb21lIGRlcml2ZWQgcnVsZXMsIHdoZXJlIGsgaXMgYSBkdXJhdGlvbiAodGltZWRlbHRhKS4KIwojIDEuIHgubyA9IHgucyArIHguZAojICAgIFRoaXMgZm9sbG93cyBmcm9tIHRoZSBkZWZpbml0aW9uIG9mIHgucy4KIwojIDIuIElmIHggYW5kIHkgaGF2ZSB0aGUgc2FtZSB0emluZm8gbWVtYmVyLCB4LnMgPSB5LnMuCiMgICAgVGhpcyBpcyBhY3R1YWxseSBhIHJlcXVpcmVtZW50LCBhbiBhc3N1bXB0aW9uIHdlIG5lZWQgdG8gbWFrZSBhYm91dAojICAgIHNhbmUgdHppbmZvIGNsYXNzZXMuCiMKIyAzLiBUaGUgbmFpdmUgVVRDIHRpbWUgY29ycmVzcG9uZGluZyB0byB4IGlzIHgubiAtIHguby4KIyAgICBUaGlzIGlzIGFnYWluIGEgcmVxdWlyZW1lbnQgZm9yIGEgc2FuZSB0emluZm8gY2xhc3MuCiMKIyA0LiAoeCtrKS5zID0geC5zCiMgICAgVGhpcyBmb2xsb3dzIGZyb20gIzIsIGFuZCB0aGF0IGRhdGV0aW1lLnRpbWV0eit0aW1lZGVsdGEgcHJlc2VydmVzIHR6aW5mby4KIwojIDUuICh4K2spLm4gPSB4Lm4gKyBrCiMgICAgQWdhaW4gZm9sbG93cyBmcm9tIGhvdyBhcml0aG1ldGljIGlzIGRlZmluZWQuCiMKIyBOb3cgd2UgY2FuIGV4cGxhaW4gdHouZnJvbXV0Yyh4KS4gIExldCdzIGFzc3VtZSBpdCdzIGFuIGludGVyZXN0aW5nIGNhc2UKIyAobWVhbmluZyB0aGF0IHRoZSB2YXJpb3VzIHR6aW5mbyBtZXRob2RzIGV4aXN0LCBhbmQgZG9uJ3QgYmxvdyB1cCBvciByZXR1cm4KIyBOb25lIHdoZW4gY2FsbGVkKS4KIwojIFRoZSBmdW5jdGlvbiB3YW50cyB0byByZXR1cm4gYSBkYXRldGltZSB5IHdpdGggdGltZXpvbmUgdHosIGVxdWl2YWxlbnQgdG8geC4KIyB4IGlzIGFscmVhZHkgaW4gVVRDLgojCiMgQnkgIzMsIHdlIHdhbnQKIwojICAgICB5Lm4gLSB5Lm8gPSB4Lm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxXQojCiMgVGhlIGFsZ29yaXRobSBzdGFydHMgYnkgYXR0YWNoaW5nIHR6IHRvIHgubiwgYW5kIGNhbGxpbmcgdGhhdCB5LiAgU28KIyB4Lm4gPSB5Lm4gYXQgdGhlIHN0YXJ0LiAgVGhlbiBpdCB3YW50cyB0byBhZGQgYSBkdXJhdGlvbiBrIHRvIHksIHNvIHRoYXQgWzFdCiMgYmVjb21lcyB0cnVlOyBpbiBlZmZlY3QsIHdlIHdhbnQgdG8gc29sdmUgWzJdIGZvciBrOgojCiMgICAgKHkraykubiAtICh5K2spLm8gPSB4Lm4gICAgICAgICAgICAgICAgICAgICAgWzJdCiMKIyBCeSAjMSwgdGhpcyBpcyB0aGUgc2FtZSBhcwojCiMgICAgKHkraykubiAtICgoeStrKS5zICsgKHkraykuZCkgPSB4Lm4gICAgICAgICAgWzNdCiMKIyBCeSAjNSwgKHkraykubiA9IHkubiArIGssIHdoaWNoIGVxdWFscyB4Lm4gKyBrIGJlY2F1c2UgeC5uPXkubiBhdCB0aGUgc3RhcnQuCiMgU3Vic3RpdHV0aW5nIHRoYXQgaW50byBbM10sCiMKIyAgICB4Lm4gKyBrIC0gKHkraykucyAtICh5K2spLmQgPSB4Lm47IHRoZSB4Lm4gdGVybXMgY2FuY2VsLCBsZWF2aW5nCiMgICAgayAtICh5K2spLnMgLSAoeStrKS5kID0gMDsgcmVhcnJhbmdpbmcsCiMgICAgayA9ICh5K2spLnMgLSAoeStrKS5kOyBieSAjNCwgKHkraykucyA9PSB5LnMsIHNvCiMgICAgayA9IHkucyAtICh5K2spLmQKIwojIE9uIHRoZSBSSFMsICh5K2spLmQgY2FuJ3QgYmUgY29tcHV0ZWQgZGlyZWN0bHksIGJ1dCB5LnMgY2FuIGJlLCBhbmQgd2UKIyBhcHByb3hpbWF0ZSBrIGJ5IGlnbm9yaW5nIHRoZSAoeStrKS5kIHRlcm0gYXQgZmlyc3QuICBOb3RlIHRoYXQgayBjYW4ndCBiZQojIHZlcnkgbGFyZ2UsIHNpbmNlIGFsbCBvZmZzZXQtcmV0dXJuaW5nIG1ldGhvZHMgcmV0dXJuIGEgZHVyYXRpb24gb2YgbWFnbml0dWRlCiMgbGVzcyB0aGFuIDI0IGhvdXJzLiAgRm9yIHRoYXQgcmVhc29uLCBpZiB5IGlzIGZpcm1seSBpbiBzdGQgdGltZSwgKHkraykuZCBtdXN0CiMgYmUgMCwgc28gaWdub3JpbmcgaXQgaGFzIG5vIGNvbnNlcXVlbmNlIHRoZW4uCiMKIyBJbiBhbnkgY2FzZSwgdGhlIG5ldyB2YWx1ZSBpcwojCiMgICAgIHogPSB5ICsgeS5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzRdCiMKIyBJdCdzIGhlbHBmdWwgdG8gc3RlcCBiYWNrIGF0IGxvb2sgYXQgWzRdIGZyb20gYSBoaWdoZXIgbGV2ZWw6ICBpdCdzIHNpbXBseQojIG1hcHBpbmcgZnJvbSBVVEMgdG8gdHoncyBzdGFuZGFyZCB0aW1lLgojCiMgQXQgdGhpcyBwb2ludCwgaWYKIwojICAgICB6Lm4gLSB6Lm8gPSB4Lm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs1XQojCiMgd2UgaGF2ZSBhbiBlcXVpdmFsZW50IHRpbWUsIGFuZCBhcmUgYWxtb3N0IGRvbmUuICBUaGUgaW5zZWN1cml0eSBoZXJlIGlzCiMgYXQgdGhlIHN0YXJ0IG9mIGRheWxpZ2h0IHRpbWUuICBQaWN0dXJlIFVTIEVhc3Rlcm4gZm9yIGNvbmNyZXRlbmVzcy4gIFRoZSB3YWxsCiMgdGltZSBqdW1wcyBmcm9tIDE6NTkgdG8gMzowMCwgYW5kIHdhbGwgaG91cnMgb2YgdGhlIGZvcm0gMjpNTSBkb24ndCBtYWtlIGdvb2QKIyBzZW5zZSB0aGVuLiAgVGhlIGRvY3MgYXNrIHRoYXQgYW4gRWFzdGVybiB0emluZm8gY2xhc3MgY29uc2lkZXIgc3VjaCBhIHRpbWUgdG8KIyBiZSBFRFQgKGJlY2F1c2UgaXQncyAiYWZ0ZXIgMiIpLCB3aGljaCBpcyBhIHJlZHVuZGFudCBzcGVsbGluZyBvZiAxOk1NIEVTVAojIG9uIHRoZSBkYXkgRFNUIHN0YXJ0cy4gIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSAxOk1NIEVTVCBzcGVsbGluZyBiZWNhdXNlIHRoYXQncwojIHRoZSBvbmx5IHNwZWxsaW5nIHRoYXQgbWFrZXMgc2Vuc2Ugb24gdGhlIGxvY2FsIHdhbGwgY2xvY2suCiMKIyBJbiBmYWN0LCBpZiBbNV0gaG9sZHMgYXQgdGhpcyBwb2ludCwgd2UgZG8gaGF2ZSB0aGUgc3RhbmRhcmQtdGltZSBzcGVsbGluZywKIyBidXQgdGhhdCB0YWtlcyBhIGJpdCBvZiBwcm9vZi4gIFdlIGZpcnN0IHByb3ZlIGEgc3Ryb25nZXIgcmVzdWx0LiAgV2hhdCdzIHRoZQojIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgTEhTIGFuZCBSSFMgb2YgWzVdPyAgTGV0CiMKIyAgICAgZGlmZiA9IHgubiAtICh6Lm4gLSB6Lm8pICAgICAgICAgICAgICAgICAgICBbNl0KIwojIE5vdwojICAgICB6Lm4gPSAgICAgICAgICAgICAgICAgICAgICAgYnkgWzRdCiMgICAgICh5ICsgeS5zKS5uID0gICAgICAgICAgICAgICBieSAjNQojICAgICB5Lm4gKyB5LnMgPSAgICAgICAgICAgICAgICAgc2luY2UgeS5uID0geC5uCiMgICAgIHgubiArIHkucyA9ICAgICAgICAgICAgICAgICBzaW5jZSB6IGFuZCB5IGFyZSBoYXZlIHRoZSBzYW1lIHR6aW5mbyBtZW1iZXIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeS5zID0gei5zIGJ5ICMyCiMgICAgIHgubiArIHoucwojCiMgUGx1Z2dpbmcgdGhhdCBiYWNrIGludG8gWzZdIGdpdmVzCiMKIyAgICAgZGlmZiA9CiMgICAgIHgubiAtICgoeC5uICsgei5zKSAtIHoubykgPSAgICAgZXhwYW5kaW5nCiMgICAgIHgubiAtIHgubiAtIHoucyArIHoubyA9ICAgICAgICAgY2FuY2VsbGluZwojICAgICAtIHoucyArIHoubyA9ICAgICAgICAgICAgICAgICAgIGJ5ICMyCiMgICAgIHouZAojCiMgU28gZGlmZiA9IHouZC4KIwojIElmIFs1XSBpcyB0cnVlIG5vdywgZGlmZiA9IDAsIHNvIHouZCA9IDAgdG9vLCBhbmQgd2UgaGF2ZSB0aGUgc3RhbmRhcmQtdGltZQojIHNwZWxsaW5nIHdlIHdhbnRlZCBpbiB0aGUgZW5kY2FzZSBkZXNjcmliZWQgYWJvdmUuICBXZSdyZSBkb25lLiAgQ29udHJhcmlseSwKIyBpZiB6LmQgPSAwLCB0aGVuIHdlIGhhdmUgYSBVVEMgZXF1aXZhbGVudCwgYW5kIGFyZSBhbHNvIGRvbmUuCiMKIyBJZiBbNV0gaXMgbm90IHRydWUgbm93LCBkaWZmID0gei5kICE9IDAsIGFuZCB6LmQgaXMgdGhlIG9mZnNldCB3ZSBuZWVkIHRvCiMgYWRkIHRvIHogKGluIGVmZmVjdCwgeiBpcyBpbiB0eidzIHN0YW5kYXJkIHRpbWUsIGFuZCB3ZSBuZWVkIHRvIHNoaWZ0IHRoZQojIGxvY2FsIGNsb2NrIGludG8gdHoncyBkYXlsaWdodCB0aW1lKS4KIwojIExldAojCiMgICAgIHonID0geiArIHouZCA9IHogKyBkaWZmICAgICAgICAgICAgICAgICAgICAgWzddCiMKIyBhbmQgd2UgY2FuIGFnYWluIGFzayB3aGV0aGVyCiMKIyAgICAgeicubiAtIHonLm8gPSB4Lm4gICAgICAgICAgICAgICAgICAgICAgICAgICBbOF0KIwojIElmIHNvLCB3ZSdyZSBkb25lLiAgSWYgbm90LCB0aGUgdHppbmZvIGNsYXNzIGlzIGluc2FuZSwgYWNjb3JkaW5nIHRvIHRoZQojIGFzc3VtcHRpb25zIHdlJ3ZlIG1hZGUuICBUaGlzIGFsc28gcmVxdWlyZXMgYSBiaXQgb2YgcHJvb2YuICBBcyBiZWZvcmUsIGxldCdzCiMgY29tcHV0ZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBMSFMgYW5kIFJIUyBvZiBbOF0gKGFuZCBza2lwcGluZyBzb21lIG9mCiMgdGhlIGp1c3RpZmljYXRpb25zIGZvciB0aGUga2luZHMgb2Ygc3Vic3RpdHV0aW9ucyB3ZSd2ZSBkb25lIHNldmVyYWwgdGltZXMKIyBhbHJlYWR5KToKIwojICAgICBkaWZmJyA9IHgubiAtICh6Jy5uIC0geicubykgPSAgICAgICAgICAgcmVwbGFjaW5nIHonLm4gdmlhIFs3XQojICAgICAgICAgICAgIHgubiAgLSAoei5uICsgZGlmZiAtIHonLm8pID0gICAgcmVwbGFjaW5nIGRpZmYgdmlhIFs2XQojICAgICAgICAgICAgIHgubiAtICh6Lm4gKyB4Lm4gLSAoei5uIC0gei5vKSAtIHonLm8pID0KIyAgICAgICAgICAgICB4Lm4gLSB6Lm4gLSB4Lm4gKyB6Lm4gLSB6Lm8gKyB6Jy5vID0gICAgY2FuY2VsIHgubgojICAgICAgICAgICAgIC0gei5uICsgei5uIC0gei5vICsgeicubyA9ICAgICAgICAgICAgICBjYW5jZWwgei5uCiMgICAgICAgICAgICAgLSB6Lm8gKyB6Jy5vID0gICAgICAgICAgICAgICAgICAgICAgIzEgdHdpY2UKIyAgICAgICAgICAgICAtei5zIC0gei5kICsgeicucyArIHonLmQgPSAgICAgICAgICB6IGFuZCB6JyBoYXZlIHNhbWUgdHppbmZvCiMgICAgICAgICAgICAgeicuZCAtIHouZAojCiMgU28geicgaXMgVVRDLWVxdWl2YWxlbnQgdG8geCBpZmYgeicuZCA9IHouZCBhdCB0aGlzIHBvaW50LiAgSWYgdGhleSBhcmUgZXF1YWwsCiMgd2UndmUgZm91bmQgdGhlIFVUQy1lcXVpdmFsZW50IHNvIGFyZSBkb25lLiAgSW4gZmFjdCwgd2Ugc3RvcCB3aXRoIFs3XSBhbmQKIyByZXR1cm4geicsIG5vdCBib3RoZXJpbmcgdG8gY29tcHV0ZSB6Jy5kLgojCiMgSG93IGNvdWxkIHouZCBhbmQgeidkIGRpZmZlcj8gIHonID0geiArIHouZCBbN10sIHNvIG1lcmVseSBtb3ZpbmcgeicgYnkKIyBhIGRzdCgpIG9mZnNldCwgYW5kIHN0YXJ0aW5nICpmcm9tKiBhIHRpbWUgYWxyZWFkeSBpbiBEU1QgKHdlIGtub3cgei5kICE9IDApLAojIHdvdWxkIGhhdmUgdG8gY2hhbmdlIHRoZSByZXN1bHQgZHN0KCkgcmV0dXJuczogIHdlIHN0YXJ0IGluIERTVCwgYW5kIG1vdmluZwojIGEgbGl0dGxlIGZ1cnRoZXIgaW50byBpdCB0YWtlcyB1cyBvdXQgb2YgRFNULgojCiMgVGhlcmUgaXNuJ3QgYSBzYW5lIGNhc2Ugd2hlcmUgdGhpcyBjYW4gaGFwcGVuLiAgVGhlIGNsb3Nlc3QgaXQgZ2V0cyBpcyBhdAojIHRoZSBlbmQgb2YgRFNULCB3aGVyZSB0aGVyZSdzIGFuIGhvdXIgaW4gVVRDIHdpdGggbm8gc3BlbGxpbmcgaW4gYSBoeWJyaWQKIyB0emluZm8gY2xhc3MuICBJbiBVUyBFYXN0ZXJuLCB0aGF0J3MgNTpNTSBVVEMgPSAwOk1NIEVTVCA9IDE6TU0gRURULiAgRHVyaW5nCiMgdGhhdCBob3VyLCBvbiBhbiBFYXN0ZXJuIGNsb2NrIDE6TU0gaXMgdGFrZW4gYXMgYmVpbmcgaW4gc3RhbmRhcmQgdGltZSAoNjpNTQojIFVUQykgYmVjYXVzZSB0aGUgZG9jcyBpbnNpc3Qgb24gdGhhdCwgYnV0IDA6TU0gaXMgdGFrZW4gYXMgYmVpbmcgaW4gZGF5bGlnaHQKIyB0aW1lICg0Ok1NIFVUQykuICBUaGVyZSBpcyBubyBsb2NhbCB0aW1lIG1hcHBpbmcgdG8gNTpNTSBVVEMuICBUaGUgbG9jYWwKIyBjbG9jayBqdW1wcyBmcm9tIDE6NTkgYmFjayB0byAxOjAwIGFnYWluLCBhbmQgcmVwZWF0cyB0aGUgMTpNTSBob3VyIGluCiMgc3RhbmRhcmQgdGltZS4gIFNpbmNlIHRoYXQncyB3aGF0IHRoZSBsb2NhbCBjbG9jayAqZG9lcyosIHdlIHdhbnQgdG8gbWFwIGJvdGgKIyBVVEMgaG91cnMgNTpNTSBhbmQgNjpNTSB0byAxOk1NIEVhc3Rlcm4uICBUaGUgcmVzdWx0IGlzIGFtYmlndW91cwojIGluIGxvY2FsIHRpbWUsIGJ1dCBzbyBpdCBnb2VzIC0tIGl0J3MgdGhlIHdheSB0aGUgbG9jYWwgY2xvY2sgd29ya3MuCiMKIyBXaGVuIHggPSA1Ok1NIFVUQyBpcyB0aGUgaW5wdXQgdG8gdGhpcyBhbGdvcml0aG0sIHgubz0wLCB5Lm89LTUgYW5kIHkuZD0wLAojIHNvIHo9MDpNTS4gIHouZD02MCAobWludXRlcykgdGhlbiwgc28gWzVdIGRvZXNuJ3QgaG9sZCBhbmQgd2Uga2VlcCBnb2luZy4KIyB6JyA9IHogKyB6LmQgPSAxOk1NIHRoZW4sIGFuZCB6Jy5kPTAsIGFuZCB6Jy5kIC0gei5kID0gLTYwICE9IDAgc28gWzhdCiMgKGNvcnJlY3RseSkgY29uY2x1ZGVzIHRoYXQgeicgaXMgbm90IFVUQy1lcXVpdmFsZW50IHRvIHguCiMKIyBCZWNhdXNlIHdlIGtub3cgei5kIHNhaWQgeiB3YXMgaW4gZGF5bGlnaHQgdGltZSAoZWxzZSBbNV0gd291bGQgaGF2ZSBoZWxkIGFuZAojIHdlIHdvdWxkIGhhdmUgc3RvcHBlZCB0aGVuKSwgYW5kIHdlIGtub3cgei5kICE9IHonLmQgKGVsc2UgWzhdIHdvdWxkIGhhdmUgaGVsZAojIGFuZCB3ZSBoYXZlIHN0b3BwZWQgdGhlbiksIGFuZCB0aGVyZSBhcmUgb25seSAyIHBvc3NpYmxlIHZhbHVlcyBkc3QoKSBjYW4KIyByZXR1cm4gaW4gRWFzdGVybiwgaXQgZm9sbG93cyB0aGF0IHonLmQgbXVzdCBiZSAwICh3aGljaCBpdCBpcyBpbiB0aGUgZXhhbXBsZSwKIyBidXQgdGhlIHJlYXNvbmluZyBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgZXhhbXBsZSAtLSBpdCBkZXBlbmRzIG9uIHRoZXJlIGJlaW5nCiMgdHdvIHBvc3NpYmxlIGRzdCgpIG91dGNvbWVzLCBvbmUgemVybyBhbmQgdGhlIG90aGVyIG5vbi16ZXJvKS4gIFRoZXJlZm9yZQojIHonIG11c3QgYmUgaW4gc3RhbmRhcmQgdGltZSwgYW5kIGlzIHRoZSBzcGVsbGluZyB3ZSB3YW50IGluIHRoaXMgY2FzZS4KIwojIE5vdGUgYWdhaW4gdGhhdCB6JyBpcyBub3QgVVRDLWVxdWl2YWxlbnQgYXMgZmFyIGFzIHRoZSBoeWJyaWQgdHppbmZvIGNsYXNzIGlzCiMgY29uY2VybmVkIChiZWNhdXNlIGl0IHRha2VzIHonIGFzIGJlaW5nIGluIHN0YW5kYXJkIHRpbWUgcmF0aGVyIHRoYW4gdGhlCiMgZGF5bGlnaHQgdGltZSB3ZSBpbnRlbmQgaGVyZSksIGJ1dCByZXR1cm5pbmcgaXQgZ2l2ZXMgdGhlIHJlYWwtbGlmZSAibG9jYWwKIyBjbG9jayByZXBlYXRzIGFuIGhvdXIiIGJlaGF2aW9yIHdoZW4gbWFwcGluZyB0aGUgInVuc3BlbGxhYmxlIiBVVEMgaG91ciBpbnRvCiMgdHouCiMKIyBXaGVuIHRoZSBpbnB1dCBpcyA2Ok1NLCB6PTE6TU0gYW5kIHouZD0wLCBhbmQgd2Ugc3RvcCBhdCBvbmNlLCBhZ2FpbiB3aXRoCiMgdGhlIDE6TU0gc3RhbmRhcmQgdGltZSBzcGVsbGluZyB3ZSB3YW50LgojCiMgU28gaG93IGNhbiB0aGlzIGJyZWFrPyAgT25lIG9mIHRoZSBhc3N1bXB0aW9ucyBtdXN0IGJlIHZpb2xhdGVkLiAgVHdvCiMgcG9zc2liaWxpdGllczoKIwojIDEpIFsyXSBlZmZlY3RpdmVseSBzYXlzIHRoYXQgeS5zIGlzIGludmFyaWFudCBhY3Jvc3MgYWxsIHkgYmVsb25nIHRvIGEgZ2l2ZW4KIyAgICB0aW1lIHpvbmUuICBUaGlzIGlzbid0IHRydWUgaWYsIGZvciBwb2xpdGljYWwgcmVhc29ucyBvciBjb250aW5lbnRhbCBkcmlmdCwKIyAgICBhIHJlZ2lvbiBkZWNpZGVzIHRvIGNoYW5nZSBpdHMgYmFzZSBvZmZzZXQgZnJvbSBVVEMuCiMKIyAyKSBUaGVyZSBtYXkgYmUgdmVyc2lvbnMgb2YgImRvdWJsZSBkYXlsaWdodCIgdGltZSB3aGVyZSB0aGUgdGFpbCBlbmQgb2YKIyAgICB0aGUgYW5hbHlzaXMgZ2l2ZXMgdXAgYSBzdGVwIHRvbyBlYXJseS4gIEkgaGF2ZW4ndCB0aG91Z2h0IGFib3V0IHRoYXQKIyAgICBlbm91Z2ggdG8gc2F5LgojCiMgSW4gYW55IGNhc2UsIGl0J3MgY2xlYXIgdGhhdCB0aGUgZGVmYXVsdCBmcm9tdXRjKCkgaXMgc3Ryb25nIGVub3VnaCB0byBoYW5kbGUKIyAiYWxtb3N0IGFsbCIgdGltZSB6b25lczogIHNvIGxvbmcgYXMgdGhlIHN0YW5kYXJkIG9mZnNldCBpcyBpbnZhcmlhbnQsIGl0CiMgZG9lc24ndCBtYXR0ZXIgaWYgZGF5bGlnaHQgdGltZSB0cmFuc2l0aW9uIHBvaW50cyBjaGFuZ2UgZnJvbSB5ZWFyIHRvIHllYXIsIG9yCiMgaWYgZGF5bGlnaHQgdGltZSBpcyBza2lwcGVkIGluIHNvbWUgeWVhcnM7IGl0IGRvZXNuJ3QgbWF0dGVyIGhvdyBsYXJnZSBvcgojIHNtYWxsIGRzdCgpIG1heSBnZXQgd2l0aGluIGl0cyBib3VuZHM7IGFuZCBpdCBkb2Vzbid0IGV2ZW4gbWF0dGVyIGlmIHNvbWUKIyBwZXJ2ZXJzZSB0aW1lIHpvbmUgcmV0dXJucyBhIG5lZ2F0aXZlIGRzdCgpKS4gIFNvIGEgYnJlYWtpbmcgY2FzZSBtdXN0IGJlCiMgcHJldHR5IGJpemFycmUsIGFuZCBhIHR6aW5mbyBzdWJjbGFzcyBjYW4gb3ZlcnJpZGUgZnJvbXV0YygpIGlmIGl0IGlzLgoKdHJ5OgogICAgZnJvbSBfZGF0ZXRpbWUgaW1wb3J0ICoKZXhjZXB0IEltcG9ydEVycm9yOgogICAgcGFzcwplbHNlOgogICAgIyBDbGVhbiB1cCB1bnVzZWQgbmFtZXMKICAgIGRlbCAoX0RBWU5BTUVTLCBfREFZU19CRUZPUkVfTU9OVEgsIF9EQVlTX0lOX01PTlRILCBfREkxMDBZLCBfREk0MDBZLAogICAgICAgICBfREk0WSwgX0VQT0NILCBfTUFYT1JESU5BTCwgX01PTlRITkFNRVMsIF9idWlsZF9zdHJ1Y3RfdGltZSwKICAgICAgICAgX2NoZWNrX2RhdGVfZmllbGRzLCBfY2hlY2tfdGltZV9maWVsZHMsCiAgICAgICAgIF9jaGVja190emluZm9fYXJnLCBfY2hlY2tfdHpuYW1lLCBfY2hlY2tfdXRjX29mZnNldCwgX2NtcCwgX2NtcGVycm9yLAogICAgICAgICBfZGF0ZV9jbGFzcywgX2RheXNfYmVmb3JlX21vbnRoLCBfZGF5c19iZWZvcmVfeWVhciwgX2RheXNfaW5fbW9udGgsCiAgICAgICAgIF9mb3JtYXRfdGltZSwgX2Zvcm1hdF9vZmZzZXQsIF9pbmRleCwgX2lzX2xlYXAsIF9pc293ZWVrMW1vbmRheSwgX21hdGgsCiAgICAgICAgIF9vcmQyeW1kLCBfdGltZSwgX3RpbWVfY2xhc3MsIF90emluZm9fY2xhc3MsIF93cmFwX3N0cmZ0aW1lLCBfeW1kMm9yZCwKICAgICAgICAgX2RpdmlkZV9hbmRfcm91bmQsIF9wYXJzZV9pc29mb3JtYXRfZGF0ZSwgX3BhcnNlX2lzb2Zvcm1hdF90aW1lLAogICAgICAgICBfcGFyc2VfaGhfbW1fc3NfZmYsIF9Jc29DYWxlbmRhckRhdGUsIF9pc293ZWVrX3RvX2dyZWdvcmlhbiwKICAgICAgICAgX2ZpbmRfaXNvZm9ybWF0X2RhdGV0aW1lX3NlcGFyYXRvciwgX0ZSQUNUSU9OX0NPUlJFQ1RJT04sCiAgICAgICAgIF9pc19hc2NpaV9kaWdpdCkKICAgICMgWFhYIFNpbmNlIGltcG9ydCAqIGFib3ZlIGV4Y2x1ZGVzIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBfLAogICAgIyBkb2NzdHJpbmcgZG9lcyBub3QgZ2V0IG92ZXJ3cml0dGVuLiBJbiB0aGUgZnV0dXJlLCBpdCBtYXkgYmUKICAgICMgYXBwcm9wcmlhdGUgdG8gbWFpbnRhaW4gYSBzaW5nbGUgbW9kdWxlIGxldmVsIGRvY3N0cmluZyBhbmQKICAgICMgcmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZS4KICAgIGZyb20gX2RhdGV0aW1lIGltcG9ydCBfX2RvY19fClBLAwQUAAAAAAACIKNWRSA54kABAABAAQAACgAAAGRlY2ltYWwucHkKdHJ5OgogICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgKgogICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgX19kb2NfXwogICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgX192ZXJzaW9uX18KICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0IF9fbGlibXBkZWNfdmVyc2lvbl9fCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGZyb20gX3B5ZGVjaW1hbCBpbXBvcnQgKgogICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCBfX2RvY19fCiAgICBmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9fdmVyc2lvbl9fCiAgICBmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9fbGlibXBkZWNfdmVyc2lvbl9fClBLAwQUAAAAAAACIKNWhR9wB2xFAQBsRQEACgAAAGRpZmZsaWIucHkiIiIKTW9kdWxlIGRpZmZsaWIgLS0gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMuCgpGdW5jdGlvbiBnZXRfY2xvc2VfbWF0Y2hlcyh3b3JkLCBwb3NzaWJpbGl0aWVzLCBuPTMsIGN1dG9mZj0wLjYpOgogICAgVXNlIFNlcXVlbmNlTWF0Y2hlciB0byByZXR1cm4gbGlzdCBvZiB0aGUgYmVzdCAiZ29vZCBlbm91Z2giIG1hdGNoZXMuCgpGdW5jdGlvbiBjb250ZXh0X2RpZmYoYSwgYik6CiAgICBGb3IgdHdvIGxpc3RzIG9mIHN0cmluZ3MsIHJldHVybiBhIGRlbHRhIGluIGNvbnRleHQgZGlmZiBmb3JtYXQuCgpGdW5jdGlvbiBuZGlmZihhLCBiKToKICAgIFJldHVybiBhIGRlbHRhOiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBhYCBhbmQgYGJgIChsaXN0cyBvZiBzdHJpbmdzKS4KCkZ1bmN0aW9uIHJlc3RvcmUoZGVsdGEsIHdoaWNoKToKICAgIFJldHVybiBvbmUgb2YgdGhlIHR3byBzZXF1ZW5jZXMgdGhhdCBnZW5lcmF0ZWQgYW4gbmRpZmYgZGVsdGEuCgpGdW5jdGlvbiB1bmlmaWVkX2RpZmYoYSwgYik6CiAgICBGb3IgdHdvIGxpc3RzIG9mIHN0cmluZ3MsIHJldHVybiBhIGRlbHRhIGluIHVuaWZpZWQgZGlmZiBmb3JtYXQuCgpDbGFzcyBTZXF1ZW5jZU1hdGNoZXI6CiAgICBBIGZsZXhpYmxlIGNsYXNzIGZvciBjb21wYXJpbmcgcGFpcnMgb2Ygc2VxdWVuY2VzIG9mIGFueSB0eXBlLgoKQ2xhc3MgRGlmZmVyOgogICAgRm9yIHByb2R1Y2luZyBodW1hbi1yZWFkYWJsZSBkZWx0YXMgZnJvbSBzZXF1ZW5jZXMgb2YgbGluZXMgb2YgdGV4dC4KCkNsYXNzIEh0bWxEaWZmOgogICAgRm9yIHByb2R1Y2luZyBIVE1MIHNpZGUgYnkgc2lkZSBjb21wYXJpc29uIHdpdGggY2hhbmdlIGhpZ2hsaWdodHMuCiIiIgoKX19hbGxfXyA9IFsnZ2V0X2Nsb3NlX21hdGNoZXMnLCAnbmRpZmYnLCAncmVzdG9yZScsICdTZXF1ZW5jZU1hdGNoZXInLAogICAgICAgICAgICdEaWZmZXInLCdJU19DSEFSQUNURVJfSlVOSycsICdJU19MSU5FX0pVTksnLCAnY29udGV4dF9kaWZmJywKICAgICAgICAgICAndW5pZmllZF9kaWZmJywgJ2RpZmZfYnl0ZXMnLCAnSHRtbERpZmYnLCAnTWF0Y2gnXQoKZnJvbSBoZWFwcSBpbXBvcnQgbmxhcmdlc3QgYXMgX25sYXJnZXN0CmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUgYXMgX25hbWVkdHVwbGUKZnJvbSB0eXBlcyBpbXBvcnQgR2VuZXJpY0FsaWFzCgpNYXRjaCA9IF9uYW1lZHR1cGxlKCdNYXRjaCcsICdhIGIgc2l6ZScpCgpkZWYgX2NhbGN1bGF0ZV9yYXRpbyhtYXRjaGVzLCBsZW5ndGgpOgogICAgaWYgbGVuZ3RoOgogICAgICAgIHJldHVybiAyLjAgKiBtYXRjaGVzIC8gbGVuZ3RoCiAgICByZXR1cm4gMS4wCgpjbGFzcyBTZXF1ZW5jZU1hdGNoZXI6CgogICAgIiIiCiAgICBTZXF1ZW5jZU1hdGNoZXIgaXMgYSBmbGV4aWJsZSBjbGFzcyBmb3IgY29tcGFyaW5nIHBhaXJzIG9mIHNlcXVlbmNlcyBvZgogICAgYW55IHR5cGUsIHNvIGxvbmcgYXMgdGhlIHNlcXVlbmNlIGVsZW1lbnRzIGFyZSBoYXNoYWJsZS4gIFRoZSBiYXNpYwogICAgYWxnb3JpdGhtIHByZWRhdGVzLCBhbmQgaXMgYSBsaXR0bGUgZmFuY2llciB0aGFuLCBhbiBhbGdvcml0aG0KICAgIHB1Ymxpc2hlZCBpbiB0aGUgbGF0ZSAxOTgwJ3MgYnkgUmF0Y2xpZmYgYW5kIE9iZXJzaGVscCB1bmRlciB0aGUKICAgIGh5cGVyYm9saWMgbmFtZSAiZ2VzdGFsdCBwYXR0ZXJuIG1hdGNoaW5nIi4gIFRoZSBiYXNpYyBpZGVhIGlzIHRvIGZpbmQKICAgIHRoZSBsb25nZXN0IGNvbnRpZ3VvdXMgbWF0Y2hpbmcgc3Vic2VxdWVuY2UgdGhhdCBjb250YWlucyBubyAianVuayIKICAgIGVsZW1lbnRzIChSLU8gZG9lc24ndCBhZGRyZXNzIGp1bmspLiAgVGhlIHNhbWUgaWRlYSBpcyB0aGVuIGFwcGxpZWQKICAgIHJlY3Vyc2l2ZWx5IHRvIHRoZSBwaWVjZXMgb2YgdGhlIHNlcXVlbmNlcyB0byB0aGUgbGVmdCBhbmQgdG8gdGhlIHJpZ2h0CiAgICBvZiB0aGUgbWF0Y2hpbmcgc3Vic2VxdWVuY2UuICBUaGlzIGRvZXMgbm90IHlpZWxkIG1pbmltYWwgZWRpdAogICAgc2VxdWVuY2VzLCBidXQgZG9lcyB0ZW5kIHRvIHlpZWxkIG1hdGNoZXMgdGhhdCAibG9vayByaWdodCIgdG8gcGVvcGxlLgoKICAgIFNlcXVlbmNlTWF0Y2hlciB0cmllcyB0byBjb21wdXRlIGEgImh1bWFuLWZyaWVuZGx5IGRpZmYiIGJldHdlZW4gdHdvCiAgICBzZXF1ZW5jZXMuICBVbmxpa2UgZS5nLiBVTklYKHRtKSBkaWZmLCB0aGUgZnVuZGFtZW50YWwgbm90aW9uIGlzIHRoZQogICAgbG9uZ2VzdCAqY29udGlndW91cyogJiBqdW5rLWZyZWUgbWF0Y2hpbmcgc3Vic2VxdWVuY2UuICBUaGF0J3Mgd2hhdAogICAgY2F0Y2hlcyBwZW9wbGVzJyBleWVzLiAgVGhlIFdpbmRvd3ModG0pIHdpbmRpZmYgaGFzIGFub3RoZXIgaW50ZXJlc3RpbmcKICAgIG5vdGlvbiwgcGFpcmluZyB1cCBlbGVtZW50cyB0aGF0IGFwcGVhciB1bmlxdWVseSBpbiBlYWNoIHNlcXVlbmNlLgogICAgVGhhdCwgYW5kIHRoZSBtZXRob2QgaGVyZSwgYXBwZWFyIHRvIHlpZWxkIG1vcmUgaW50dWl0aXZlIGRpZmZlcmVuY2UKICAgIHJlcG9ydHMgdGhhbiBkb2VzIGRpZmYuICBUaGlzIG1ldGhvZCBhcHBlYXJzIHRvIGJlIHRoZSBsZWFzdCB2dWxuZXJhYmxlCiAgICB0byBzeW5jaW5nIHVwIG9uIGJsb2NrcyBvZiAianVuayBsaW5lcyIsIHRob3VnaCAobGlrZSBibGFuayBsaW5lcyBpbgogICAgb3JkaW5hcnkgdGV4dCBmaWxlcywgb3IgbWF5YmUgIjxQPiIgbGluZXMgaW4gSFRNTCBmaWxlcykuICBUaGF0IG1heSBiZQogICAgYmVjYXVzZSB0aGlzIGlzIHRoZSBvbmx5IG1ldGhvZCBvZiB0aGUgMyB0aGF0IGhhcyBhICpjb25jZXB0KiBvZgogICAgImp1bmsiIDx3aW5rPi4KCiAgICBFeGFtcGxlLCBjb21wYXJpbmcgdHdvIHN0cmluZ3MsIGFuZCBjb25zaWRlcmluZyBibGFua3MgdG8gYmUgImp1bmsiOgoKICAgID4+PiBzID0gU2VxdWVuY2VNYXRjaGVyKGxhbWJkYSB4OiB4ID09ICIgIiwKICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICJwcml2YXRlIFRocmVhZCBjdXJyZW50VGhyZWFkOyIsCiAgICAuLi4gICAgICAgICAgICAgICAgICAgICAicHJpdmF0ZSB2b2xhdGlsZSBUaHJlYWQgY3VycmVudFRocmVhZDsiKQogICAgPj4+CgogICAgLnJhdGlvKCkgcmV0dXJucyBhIGZsb2F0IGluIFswLCAxXSwgbWVhc3VyaW5nIHRoZSAic2ltaWxhcml0eSIgb2YgdGhlCiAgICBzZXF1ZW5jZXMuICBBcyBhIHJ1bGUgb2YgdGh1bWIsIGEgLnJhdGlvKCkgdmFsdWUgb3ZlciAwLjYgbWVhbnMgdGhlCiAgICBzZXF1ZW5jZXMgYXJlIGNsb3NlIG1hdGNoZXM6CgogICAgPj4+IHByaW50KHJvdW5kKHMucmF0aW8oKSwgMykpCiAgICAwLjg2NgogICAgPj4+CgogICAgSWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB3aGVyZSB0aGUgc2VxdWVuY2VzIG1hdGNoLAogICAgLmdldF9tYXRjaGluZ19ibG9ja3MoKSBpcyBoYW5keToKCiAgICA+Pj4gZm9yIGJsb2NrIGluIHMuZ2V0X21hdGNoaW5nX2Jsb2NrcygpOgogICAgLi4uICAgICBwcmludCgiYVslZF0gYW5kIGJbJWRdIG1hdGNoIGZvciAlZCBlbGVtZW50cyIgJSBibG9jaykKICAgIGFbMF0gYW5kIGJbMF0gbWF0Y2ggZm9yIDggZWxlbWVudHMKICAgIGFbOF0gYW5kIGJbMTddIG1hdGNoIGZvciAyMSBlbGVtZW50cwogICAgYVsyOV0gYW5kIGJbMzhdIG1hdGNoIGZvciAwIGVsZW1lbnRzCgogICAgTm90ZSB0aGF0IHRoZSBsYXN0IHR1cGxlIHJldHVybmVkIGJ5IC5nZXRfbWF0Y2hpbmdfYmxvY2tzKCkgaXMgYWx3YXlzIGEKICAgIGR1bW15LCAobGVuKGEpLCBsZW4oYiksIDApLCBhbmQgdGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIHRoZSBsYXN0CiAgICB0dXBsZSBlbGVtZW50IChudW1iZXIgb2YgZWxlbWVudHMgbWF0Y2hlZCkgaXMgMC4KCiAgICBJZiB5b3Ugd2FudCB0byBrbm93IGhvdyB0byBjaGFuZ2UgdGhlIGZpcnN0IHNlcXVlbmNlIGludG8gdGhlIHNlY29uZCwKICAgIHVzZSAuZ2V0X29wY29kZXMoKToKCiAgICA+Pj4gZm9yIG9wY29kZSBpbiBzLmdldF9vcGNvZGVzKCk6CiAgICAuLi4gICAgIHByaW50KCIlNnMgYVslZDolZF0gYlslZDolZF0iICUgb3Bjb2RlKQogICAgIGVxdWFsIGFbMDo4XSBiWzA6OF0KICAgIGluc2VydCBhWzg6OF0gYls4OjE3XQogICAgIGVxdWFsIGFbODoyOV0gYlsxNzozOF0KCiAgICBTZWUgdGhlIERpZmZlciBjbGFzcyBmb3IgYSBmYW5jeSBodW1hbi1mcmllbmRseSBmaWxlIGRpZmZlcmVuY2VyLCB3aGljaAogICAgdXNlcyBTZXF1ZW5jZU1hdGNoZXIgYm90aCB0byBjb21wYXJlIHNlcXVlbmNlcyBvZiBsaW5lcywgYW5kIHRvIGNvbXBhcmUKICAgIHNlcXVlbmNlcyBvZiBjaGFyYWN0ZXJzIHdpdGhpbiBzaW1pbGFyIChuZWFyLW1hdGNoaW5nKSBsaW5lcy4KCiAgICBTZWUgYWxzbyBmdW5jdGlvbiBnZXRfY2xvc2VfbWF0Y2hlcygpIGluIHRoaXMgbW9kdWxlLCB3aGljaCBzaG93cyBob3cKICAgIHNpbXBsZSBjb2RlIGJ1aWxkaW5nIG9uIFNlcXVlbmNlTWF0Y2hlciBjYW4gYmUgdXNlZCB0byBkbyB1c2VmdWwgd29yay4KCiAgICBUaW1pbmc6ICBCYXNpYyBSLU8gaXMgY3ViaWMgdGltZSB3b3JzdCBjYXNlIGFuZCBxdWFkcmF0aWMgdGltZSBleHBlY3RlZAogICAgY2FzZS4gIFNlcXVlbmNlTWF0Y2hlciBpcyBxdWFkcmF0aWMgdGltZSBmb3IgdGhlIHdvcnN0IGNhc2UgYW5kIGhhcwogICAgZXhwZWN0ZWQtY2FzZSBiZWhhdmlvciBkZXBlbmRlbnQgaW4gYSBjb21wbGljYXRlZCB3YXkgb24gaG93IG1hbnkKICAgIGVsZW1lbnRzIHRoZSBzZXF1ZW5jZXMgaGF2ZSBpbiBjb21tb247IGJlc3QgY2FzZSB0aW1lIGlzIGxpbmVhci4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpc2p1bms9Tm9uZSwgYT0nJywgYj0nJywgYXV0b2p1bms9VHJ1ZSk6CiAgICAgICAgIiIiQ29uc3RydWN0IGEgU2VxdWVuY2VNYXRjaGVyLgoKICAgICAgICBPcHRpb25hbCBhcmcgaXNqdW5rIGlzIE5vbmUgKHRoZSBkZWZhdWx0KSwgb3IgYSBvbmUtYXJndW1lbnQKICAgICAgICBmdW5jdGlvbiB0aGF0IHRha2VzIGEgc2VxdWVuY2UgZWxlbWVudCBhbmQgcmV0dXJucyB0cnVlIGlmZiB0aGUKICAgICAgICBlbGVtZW50IGlzIGp1bmsuICBOb25lIGlzIGVxdWl2YWxlbnQgdG8gcGFzc2luZyAibGFtYmRhIHg6IDAiLCBpLmUuCiAgICAgICAgbm8gZWxlbWVudHMgYXJlIGNvbnNpZGVyZWQgdG8gYmUganVuay4gIEZvciBleGFtcGxlLCBwYXNzCiAgICAgICAgICAgIGxhbWJkYSB4OiB4IGluICIgXFx0IgogICAgICAgIGlmIHlvdSdyZSBjb21wYXJpbmcgbGluZXMgYXMgc2VxdWVuY2VzIG9mIGNoYXJhY3RlcnMsIGFuZCBkb24ndAogICAgICAgIHdhbnQgdG8gc3luY2ggdXAgb24gYmxhbmtzIG9yIGhhcmQgdGFicy4KCiAgICAgICAgT3B0aW9uYWwgYXJnIGEgaXMgdGhlIGZpcnN0IG9mIHR3byBzZXF1ZW5jZXMgdG8gYmUgY29tcGFyZWQuICBCeQogICAgICAgIGRlZmF1bHQsIGFuIGVtcHR5IHN0cmluZy4gIFRoZSBlbGVtZW50cyBvZiBhIG11c3QgYmUgaGFzaGFibGUuICBTZWUKICAgICAgICBhbHNvIC5zZXRfc2VxcygpIGFuZCAuc2V0X3NlcTEoKS4KCiAgICAgICAgT3B0aW9uYWwgYXJnIGIgaXMgdGhlIHNlY29uZCBvZiB0d28gc2VxdWVuY2VzIHRvIGJlIGNvbXBhcmVkLiAgQnkKICAgICAgICBkZWZhdWx0LCBhbiBlbXB0eSBzdHJpbmcuICBUaGUgZWxlbWVudHMgb2YgYiBtdXN0IGJlIGhhc2hhYmxlLiBTZWUKICAgICAgICBhbHNvIC5zZXRfc2VxcygpIGFuZCAuc2V0X3NlcTIoKS4KCiAgICAgICAgT3B0aW9uYWwgYXJnIGF1dG9qdW5rIHNob3VsZCBiZSBzZXQgdG8gRmFsc2UgdG8gZGlzYWJsZSB0aGUKICAgICAgICAiYXV0b21hdGljIGp1bmsgaGV1cmlzdGljIiB0aGF0IHRyZWF0cyBwb3B1bGFyIGVsZW1lbnRzIGFzIGp1bmsKICAgICAgICAoc2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uKS4KICAgICAgICAiIiIKCiAgICAgICAgIyBNZW1iZXJzOgogICAgICAgICMgYQogICAgICAgICMgICAgICBmaXJzdCBzZXF1ZW5jZQogICAgICAgICMgYgogICAgICAgICMgICAgICBzZWNvbmQgc2VxdWVuY2U7IGRpZmZlcmVuY2VzIGFyZSBjb21wdXRlZCBhcyAid2hhdCBkbwogICAgICAgICMgICAgICB3ZSBuZWVkIHRvIGRvIHRvICdhJyB0byBjaGFuZ2UgaXQgaW50byAnYic/IgogICAgICAgICMgYjJqCiAgICAgICAgIyAgICAgIGZvciB4IGluIGIsIGIyalt4XSBpcyBhIGxpc3Qgb2YgdGhlIGluZGljZXMgKGludG8gYikKICAgICAgICAjICAgICAgYXQgd2hpY2ggeCBhcHBlYXJzOyBqdW5rIGFuZCBwb3B1bGFyIGVsZW1lbnRzIGRvIG5vdCBhcHBlYXIKICAgICAgICAjIGZ1bGxiY291bnQKICAgICAgICAjICAgICAgZm9yIHggaW4gYiwgZnVsbGJjb3VudFt4XSA9PSB0aGUgbnVtYmVyIG9mIHRpbWVzIHgKICAgICAgICAjICAgICAgYXBwZWFycyBpbiBiOyBvbmx5IG1hdGVyaWFsaXplZCBpZiByZWFsbHkgbmVlZGVkICh1c2VkCiAgICAgICAgIyAgICAgIG9ubHkgZm9yIGNvbXB1dGluZyBxdWlja19yYXRpbygpKQogICAgICAgICMgbWF0Y2hpbmdfYmxvY2tzCiAgICAgICAgIyAgICAgIGEgbGlzdCBvZiAoaSwgaiwgaykgdHJpcGxlcywgd2hlcmUgYVtpOmkra10gPT0gYltqOmora107CiAgICAgICAgIyAgICAgIGFzY2VuZGluZyAmIG5vbi1vdmVybGFwcGluZyBpbiBpIGFuZCBpbiBqOyB0ZXJtaW5hdGVkIGJ5CiAgICAgICAgIyAgICAgIGEgZHVtbXkgKGxlbihhKSwgbGVuKGIpLCAwKSBzZW50aW5lbAogICAgICAgICMgb3Bjb2RlcwogICAgICAgICMgICAgICBhIGxpc3Qgb2YgKHRhZywgaTEsIGkyLCBqMSwgajIpIHR1cGxlcywgd2hlcmUgdGFnIGlzCiAgICAgICAgIyAgICAgIG9uZSBvZgogICAgICAgICMgICAgICAgICAgJ3JlcGxhY2UnICAgYVtpMTppMl0gc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGJbajE6ajJdCiAgICAgICAgIyAgICAgICAgICAnZGVsZXRlJyAgICBhW2kxOmkyXSBzaG91bGQgYmUgZGVsZXRlZAogICAgICAgICMgICAgICAgICAgJ2luc2VydCcgICAgYltqMTpqMl0gc2hvdWxkIGJlIGluc2VydGVkCiAgICAgICAgIyAgICAgICAgICAnZXF1YWwnICAgICBhW2kxOmkyXSA9PSBiW2oxOmoyXQogICAgICAgICMgaXNqdW5rCiAgICAgICAgIyAgICAgIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0YWtpbmcgYSBzZXF1ZW5jZSBlbGVtZW50IGFuZAogICAgICAgICMgICAgICByZXR1cm5pbmcgdHJ1ZSBpZmYgdGhlIGVsZW1lbnQgaXMgImp1bmsiIC0tIHRoaXMgaGFzCiAgICAgICAgIyAgICAgIHN1YnRsZSBidXQgaGVscGZ1bCBlZmZlY3RzIG9uIHRoZSBhbGdvcml0aG0sIHdoaWNoIEknbGwKICAgICAgICAjICAgICAgZ2V0IGFyb3VuZCB0byB3cml0aW5nIHVwIHNvbWVkYXkgPDAuOSB3aW5rPi4KICAgICAgICAjICAgICAgRE9OJ1QgVVNFISAgT25seSBfX2NoYWluX2IgdXNlcyB0aGlzLiAgVXNlICJpbiBzZWxmLmJqdW5rIi4KICAgICAgICAjIGJqdW5rCiAgICAgICAgIyAgICAgIHRoZSBpdGVtcyBpbiBiIGZvciB3aGljaCBpc2p1bmsgaXMgVHJ1ZS4KICAgICAgICAjIGJwb3B1bGFyCiAgICAgICAgIyAgICAgIG5vbmp1bmsgaXRlbXMgaW4gYiB0cmVhdGVkIGFzIGp1bmsgYnkgdGhlIGhldXJpc3RpYyAoaWYgdXNlZCkuCgogICAgICAgIHNlbGYuaXNqdW5rID0gaXNqdW5rCiAgICAgICAgc2VsZi5hID0gc2VsZi5iID0gTm9uZQogICAgICAgIHNlbGYuYXV0b2p1bmsgPSBhdXRvanVuawogICAgICAgIHNlbGYuc2V0X3NlcXMoYSwgYikKCiAgICBkZWYgc2V0X3NlcXMoc2VsZiwgYSwgYik6CiAgICAgICAgIiIiU2V0IHRoZSB0d28gc2VxdWVuY2VzIHRvIGJlIGNvbXBhcmVkLgoKICAgICAgICA+Pj4gcyA9IFNlcXVlbmNlTWF0Y2hlcigpCiAgICAgICAgPj4+IHMuc2V0X3NlcXMoImFiY2QiLCAiYmNkZSIpCiAgICAgICAgPj4+IHMucmF0aW8oKQogICAgICAgIDAuNzUKICAgICAgICAiIiIKCiAgICAgICAgc2VsZi5zZXRfc2VxMShhKQogICAgICAgIHNlbGYuc2V0X3NlcTIoYikKCiAgICBkZWYgc2V0X3NlcTEoc2VsZiwgYSk6CiAgICAgICAgIiIiU2V0IHRoZSBmaXJzdCBzZXF1ZW5jZSB0byBiZSBjb21wYXJlZC4KCiAgICAgICAgVGhlIHNlY29uZCBzZXF1ZW5jZSB0byBiZSBjb21wYXJlZCBpcyBub3QgY2hhbmdlZC4KCiAgICAgICAgPj4+IHMgPSBTZXF1ZW5jZU1hdGNoZXIoTm9uZSwgImFiY2QiLCAiYmNkZSIpCiAgICAgICAgPj4+IHMucmF0aW8oKQogICAgICAgIDAuNzUKICAgICAgICA+Pj4gcy5zZXRfc2VxMSgiYmNkZSIpCiAgICAgICAgPj4+IHMucmF0aW8oKQogICAgICAgIDEuMAogICAgICAgID4+PgoKICAgICAgICBTZXF1ZW5jZU1hdGNoZXIgY29tcHV0ZXMgYW5kIGNhY2hlcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKICAgICAgICBzZWNvbmQgc2VxdWVuY2UsIHNvIGlmIHlvdSB3YW50IHRvIGNvbXBhcmUgb25lIHNlcXVlbmNlIFMgYWdhaW5zdAogICAgICAgIG1hbnkgc2VxdWVuY2VzLCB1c2UgLnNldF9zZXEyKFMpIG9uY2UgYW5kIGNhbGwgLnNldF9zZXExKHgpCiAgICAgICAgcmVwZWF0ZWRseSBmb3IgZWFjaCBvZiB0aGUgb3RoZXIgc2VxdWVuY2VzLgoKICAgICAgICBTZWUgYWxzbyBzZXRfc2VxcygpIGFuZCBzZXRfc2VxMigpLgogICAgICAgICIiIgoKICAgICAgICBpZiBhIGlzIHNlbGYuYToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5hID0gYQogICAgICAgIHNlbGYubWF0Y2hpbmdfYmxvY2tzID0gc2VsZi5vcGNvZGVzID0gTm9uZQoKICAgIGRlZiBzZXRfc2VxMihzZWxmLCBiKToKICAgICAgICAiIiJTZXQgdGhlIHNlY29uZCBzZXF1ZW5jZSB0byBiZSBjb21wYXJlZC4KCiAgICAgICAgVGhlIGZpcnN0IHNlcXVlbmNlIHRvIGJlIGNvbXBhcmVkIGlzIG5vdCBjaGFuZ2VkLgoKICAgICAgICA+Pj4gcyA9IFNlcXVlbmNlTWF0Y2hlcihOb25lLCAiYWJjZCIsICJiY2RlIikKICAgICAgICA+Pj4gcy5yYXRpbygpCiAgICAgICAgMC43NQogICAgICAgID4+PiBzLnNldF9zZXEyKCJhYmNkIikKICAgICAgICA+Pj4gcy5yYXRpbygpCiAgICAgICAgMS4wCiAgICAgICAgPj4+CgogICAgICAgIFNlcXVlbmNlTWF0Y2hlciBjb21wdXRlcyBhbmQgY2FjaGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZQogICAgICAgIHNlY29uZCBzZXF1ZW5jZSwgc28gaWYgeW91IHdhbnQgdG8gY29tcGFyZSBvbmUgc2VxdWVuY2UgUyBhZ2FpbnN0CiAgICAgICAgbWFueSBzZXF1ZW5jZXMsIHVzZSAuc2V0X3NlcTIoUykgb25jZSBhbmQgY2FsbCAuc2V0X3NlcTEoeCkKICAgICAgICByZXBlYXRlZGx5IGZvciBlYWNoIG9mIHRoZSBvdGhlciBzZXF1ZW5jZXMuCgogICAgICAgIFNlZSBhbHNvIHNldF9zZXFzKCkgYW5kIHNldF9zZXExKCkuCiAgICAgICAgIiIiCgogICAgICAgIGlmIGIgaXMgc2VsZi5iOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLmIgPSBiCiAgICAgICAgc2VsZi5tYXRjaGluZ19ibG9ja3MgPSBzZWxmLm9wY29kZXMgPSBOb25lCiAgICAgICAgc2VsZi5mdWxsYmNvdW50ID0gTm9uZQogICAgICAgIHNlbGYuX19jaGFpbl9iKCkKCiAgICAjIEZvciBlYWNoIGVsZW1lbnQgeCBpbiBiLCBzZXQgYjJqW3hdIHRvIGEgbGlzdCBvZiB0aGUgaW5kaWNlcyBpbgogICAgIyBiIHdoZXJlIHggYXBwZWFyczsgdGhlIGluZGljZXMgYXJlIGluIGluY3JlYXNpbmcgb3JkZXI7IG5vdGUgdGhhdAogICAgIyB0aGUgbnVtYmVyIG9mIHRpbWVzIHggYXBwZWFycyBpbiBiIGlzIGxlbihiMmpbeF0pIC4uLgogICAgIyB3aGVuIHNlbGYuaXNqdW5rIGlzIGRlZmluZWQsIGp1bmsgZWxlbWVudHMgZG9uJ3Qgc2hvdyB1cCBpbiB0aGlzCiAgICAjIG1hcCBhdCBhbGwsIHdoaWNoIHN0b3BzIHRoZSBjZW50cmFsIGZpbmRfbG9uZ2VzdF9tYXRjaCBtZXRob2QKICAgICMgZnJvbSBzdGFydGluZyBhbnkgbWF0Y2hpbmcgYmxvY2sgYXQgYSBqdW5rIGVsZW1lbnQgLi4uCiAgICAjIGIyaiBhbHNvIGRvZXMgbm90IGNvbnRhaW4gZW50cmllcyBmb3IgInBvcHVsYXIiIGVsZW1lbnRzLCBtZWFuaW5nCiAgICAjIGVsZW1lbnRzIHRoYXQgYWNjb3VudCBmb3IgbW9yZSB0aGFuIDEgKyAxJSBvZiB0aGUgdG90YWwgZWxlbWVudHMsIGFuZAogICAgIyB3aGVuIHRoZSBzZXF1ZW5jZSBpcyByZWFzb25hYmx5IGxhcmdlICg+PSAyMDAgZWxlbWVudHMpOyB0aGlzIGNhbgogICAgIyBiZSB2aWV3ZWQgYXMgYW4gYWRhcHRpdmUgbm90aW9uIG9mIHNlbWktanVuaywgYW5kIHlpZWxkcyBhbiBlbm9ybW91cwogICAgIyBzcGVlZHVwIHdoZW4sIGUuZy4sIGNvbXBhcmluZyBwcm9ncmFtIGZpbGVzIHdpdGggaHVuZHJlZHMgb2YKICAgICMgaW5zdGFuY2VzIG9mICJyZXR1cm4gTlVMTDsiIC4uLgogICAgIyBub3RlIHRoYXQgdGhpcyBpcyBvbmx5IGNhbGxlZCB3aGVuIGIgY2hhbmdlczsgc28gZm9yIGNyb3NzLXByb2R1Y3QKICAgICMga2luZHMgb2YgbWF0Y2hlcywgaXQncyBiZXN0IHRvIGNhbGwgc2V0X3NlcTIgb25jZSwgdGhlbiBzZXRfc2VxMQogICAgIyByZXBlYXRlZGx5CgogICAgZGVmIF9fY2hhaW5fYihzZWxmKToKICAgICAgICAjIEJlY2F1c2UgaXNqdW5rIGlzIGEgdXNlci1kZWZpbmVkIChub3QgQykgZnVuY3Rpb24sIGFuZCB3ZSB0ZXN0CiAgICAgICAgIyBmb3IganVuayBhIExPVCwgaXQncyBpbXBvcnRhbnQgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBjYWxscy4KICAgICAgICAjIEJlZm9yZSB0aGUgdHJpY2tzIGRlc2NyaWJlZCBoZXJlLCBfX2NoYWluX2Igd2FzIGJ5IGZhciB0aGUgbW9zdAogICAgICAgICMgdGltZS1jb25zdW1pbmcgcm91dGluZSBpbiB0aGUgd2hvbGUgbW9kdWxlISAgSWYgYW55b25lIHNlZXMKICAgICAgICAjIEppbSBSb3NraW5kLCB0aGFuayBoaW0gYWdhaW4gZm9yIHByb2ZpbGUucHkgLS0gSSBuZXZlciB3b3VsZAogICAgICAgICMgaGF2ZSBndWVzc2VkIHRoYXQuCiAgICAgICAgIyBUaGUgZmlyc3QgdHJpY2sgaXMgdG8gYnVpbGQgYjJqIGlnbm9yaW5nIHRoZSBwb3NzaWJpbGl0eQogICAgICAgICMgb2YganVuay4gIEkuZS4sIHdlIGRvbid0IGNhbGwgaXNqdW5rIGF0IGFsbCB5ZXQuICBUaHJvd2luZwogICAgICAgICMgb3V0IHRoZSBqdW5rIGxhdGVyIGlzIG11Y2ggY2hlYXBlciB0aGFuIGJ1aWxkaW5nIGIyaiAicmlnaHQiCiAgICAgICAgIyBmcm9tIHRoZSBzdGFydC4KICAgICAgICBiID0gc2VsZi5iCiAgICAgICAgc2VsZi5iMmogPSBiMmogPSB7fQoKICAgICAgICBmb3IgaSwgZWx0IGluIGVudW1lcmF0ZShiKToKICAgICAgICAgICAgaW5kaWNlcyA9IGIyai5zZXRkZWZhdWx0KGVsdCwgW10pCiAgICAgICAgICAgIGluZGljZXMuYXBwZW5kKGkpCgogICAgICAgICMgUHVyZ2UganVuayBlbGVtZW50cwogICAgICAgIHNlbGYuYmp1bmsgPSBqdW5rID0gc2V0KCkKICAgICAgICBpc2p1bmsgPSBzZWxmLmlzanVuawogICAgICAgIGlmIGlzanVuazoKICAgICAgICAgICAgZm9yIGVsdCBpbiBiMmoua2V5cygpOgogICAgICAgICAgICAgICAgaWYgaXNqdW5rKGVsdCk6CiAgICAgICAgICAgICAgICAgICAganVuay5hZGQoZWx0KQogICAgICAgICAgICBmb3IgZWx0IGluIGp1bms6ICMgc2VwYXJhdGUgbG9vcCBhdm9pZHMgc2VwYXJhdGUgbGlzdCBvZiBrZXlzCiAgICAgICAgICAgICAgICBkZWwgYjJqW2VsdF0KCiAgICAgICAgIyBQdXJnZSBwb3B1bGFyIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBqdW5rCiAgICAgICAgc2VsZi5icG9wdWxhciA9IHBvcHVsYXIgPSBzZXQoKQogICAgICAgIG4gPSBsZW4oYikKICAgICAgICBpZiBzZWxmLmF1dG9qdW5rIGFuZCBuID49IDIwMDoKICAgICAgICAgICAgbnRlc3QgPSBuIC8vIDEwMCArIDEKICAgICAgICAgICAgZm9yIGVsdCwgaWR4cyBpbiBiMmouaXRlbXMoKToKICAgICAgICAgICAgICAgIGlmIGxlbihpZHhzKSA+IG50ZXN0OgogICAgICAgICAgICAgICAgICAgIHBvcHVsYXIuYWRkKGVsdCkKICAgICAgICAgICAgZm9yIGVsdCBpbiBwb3B1bGFyOiAjIGRpdHRvOyBhcyBmYXN0IGZvciAxJSBkZWxldGlvbgogICAgICAgICAgICAgICAgZGVsIGIyaltlbHRdCgogICAgZGVmIGZpbmRfbG9uZ2VzdF9tYXRjaChzZWxmLCBhbG89MCwgYWhpPU5vbmUsIGJsbz0wLCBiaGk9Tm9uZSk6CiAgICAgICAgIiIiRmluZCBsb25nZXN0IG1hdGNoaW5nIGJsb2NrIGluIGFbYWxvOmFoaV0gYW5kIGJbYmxvOmJoaV0uCgogICAgICAgIEJ5IGRlZmF1bHQgaXQgd2lsbCBmaW5kIHRoZSBsb25nZXN0IG1hdGNoIGluIHRoZSBlbnRpcmV0eSBvZiBhIGFuZCBiLgoKICAgICAgICBJZiBpc2p1bmsgaXMgbm90IGRlZmluZWQ6CgogICAgICAgIFJldHVybiAoaSxqLGspIHN1Y2ggdGhhdCBhW2k6aStrXSBpcyBlcXVhbCB0byBiW2o6aitrXSwgd2hlcmUKICAgICAgICAgICAgYWxvIDw9IGkgPD0gaStrIDw9IGFoaQogICAgICAgICAgICBibG8gPD0gaiA8PSBqK2sgPD0gYmhpCiAgICAgICAgYW5kIGZvciBhbGwgKGknLGonLGsnKSBtZWV0aW5nIHRob3NlIGNvbmRpdGlvbnMsCiAgICAgICAgICAgIGsgPj0gaycKICAgICAgICAgICAgaSA8PSBpJwogICAgICAgICAgICBhbmQgaWYgaSA9PSBpJywgaiA8PSBqJwoKICAgICAgICBJbiBvdGhlciB3b3Jkcywgb2YgYWxsIG1heGltYWwgbWF0Y2hpbmcgYmxvY2tzLCByZXR1cm4gb25lIHRoYXQKICAgICAgICBzdGFydHMgZWFybGllc3QgaW4gYSwgYW5kIG9mIGFsbCB0aG9zZSBtYXhpbWFsIG1hdGNoaW5nIGJsb2NrcyB0aGF0CiAgICAgICAgc3RhcnQgZWFybGllc3QgaW4gYSwgcmV0dXJuIHRoZSBvbmUgdGhhdCBzdGFydHMgZWFybGllc3QgaW4gYi4KCiAgICAgICAgPj4+IHMgPSBTZXF1ZW5jZU1hdGNoZXIoTm9uZSwgIiBhYmNkIiwgImFiY2QgYWJjZCIpCiAgICAgICAgPj4+IHMuZmluZF9sb25nZXN0X21hdGNoKDAsIDUsIDAsIDkpCiAgICAgICAgTWF0Y2goYT0wLCBiPTQsIHNpemU9NSkKCiAgICAgICAgSWYgaXNqdW5rIGlzIGRlZmluZWQsIGZpcnN0IHRoZSBsb25nZXN0IG1hdGNoaW5nIGJsb2NrIGlzCiAgICAgICAgZGV0ZXJtaW5lZCBhcyBhYm92ZSwgYnV0IHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBubwogICAgICAgIGp1bmsgZWxlbWVudCBhcHBlYXJzIGluIHRoZSBibG9jay4gIFRoZW4gdGhhdCBibG9jayBpcyBleHRlbmRlZCBhcwogICAgICAgIGZhciBhcyBwb3NzaWJsZSBieSBtYXRjaGluZyAob25seSkganVuayBlbGVtZW50cyBvbiBib3RoIHNpZGVzLiAgU28KICAgICAgICB0aGUgcmVzdWx0aW5nIGJsb2NrIG5ldmVyIG1hdGNoZXMgb24ganVuayBleGNlcHQgYXMgaWRlbnRpY2FsIGp1bmsKICAgICAgICBoYXBwZW5zIHRvIGJlIGFkamFjZW50IHRvIGFuICJpbnRlcmVzdGluZyIgbWF0Y2guCgogICAgICAgIEhlcmUncyB0aGUgc2FtZSBleGFtcGxlIGFzIGJlZm9yZSwgYnV0IGNvbnNpZGVyaW5nIGJsYW5rcyB0byBiZQogICAgICAgIGp1bmsuICBUaGF0IHByZXZlbnRzICIgYWJjZCIgZnJvbSBtYXRjaGluZyB0aGUgIiBhYmNkIiBhdCB0aGUgdGFpbAogICAgICAgIGVuZCBvZiB0aGUgc2Vjb25kIHNlcXVlbmNlIGRpcmVjdGx5LiAgSW5zdGVhZCBvbmx5IHRoZSAiYWJjZCIgY2FuCiAgICAgICAgbWF0Y2gsIGFuZCBtYXRjaGVzIHRoZSBsZWZ0bW9zdCAiYWJjZCIgaW4gdGhlIHNlY29uZCBzZXF1ZW5jZToKCiAgICAgICAgPj4+IHMgPSBTZXF1ZW5jZU1hdGNoZXIobGFtYmRhIHg6IHg9PSIgIiwgIiBhYmNkIiwgImFiY2QgYWJjZCIpCiAgICAgICAgPj4+IHMuZmluZF9sb25nZXN0X21hdGNoKDAsIDUsIDAsIDkpCiAgICAgICAgTWF0Y2goYT0xLCBiPTAsIHNpemU9NCkKCiAgICAgICAgSWYgbm8gYmxvY2tzIG1hdGNoLCByZXR1cm4gKGFsbywgYmxvLCAwKS4KCiAgICAgICAgPj4+IHMgPSBTZXF1ZW5jZU1hdGNoZXIoTm9uZSwgImFiIiwgImMiKQogICAgICAgID4+PiBzLmZpbmRfbG9uZ2VzdF9tYXRjaCgwLCAyLCAwLCAxKQogICAgICAgIE1hdGNoKGE9MCwgYj0wLCBzaXplPTApCiAgICAgICAgIiIiCgogICAgICAgICMgQ0FVVElPTjogIHN0cmlwcGluZyBjb21tb24gcHJlZml4IG9yIHN1ZmZpeCB3b3VsZCBiZSBpbmNvcnJlY3QuCiAgICAgICAgIyBFLmcuLAogICAgICAgICMgICAgYWIKICAgICAgICAjICAgIGFjYWIKICAgICAgICAjIExvbmdlc3QgbWF0Y2hpbmcgYmxvY2sgaXMgImFiIiwgYnV0IGlmIGNvbW1vbiBwcmVmaXggaXMKICAgICAgICAjIHN0cmlwcGVkLCBpdCdzICJhIiAodGllZCB3aXRoICJiIikuICBVTklYKHRtKSBkaWZmIGRvZXMgc28KICAgICAgICAjIHN0cmlwLCBzbyBlbmRzIHVwIGNsYWltaW5nIHRoYXQgYWIgaXMgY2hhbmdlZCB0byBhY2FiIGJ5CiAgICAgICAgIyBpbnNlcnRpbmcgImNhIiBpbiB0aGUgbWlkZGxlLiAgVGhhdCdzIG1pbmltYWwgYnV0IHVuaW50dWl0aXZlOgogICAgICAgICMgIml0J3Mgb2J2aW91cyIgdGhhdCBzb21lb25lIGluc2VydGVkICJhYyIgYXQgdGhlIGZyb250LgogICAgICAgICMgV2luZGlmZiBlbmRzIHVwIGF0IHRoZSBzYW1lIHBsYWNlIGFzIGRpZmYsIGJ1dCBieSBwYWlyaW5nIHVwCiAgICAgICAgIyB0aGUgdW5pcXVlICdiJ3MgYW5kIHRoZW4gbWF0Y2hpbmcgdGhlIGZpcnN0IHR3byAnYSdzLgoKICAgICAgICBhLCBiLCBiMmosIGlzYmp1bmsgPSBzZWxmLmEsIHNlbGYuYiwgc2VsZi5iMmosIHNlbGYuYmp1bmsuX19jb250YWluc19fCiAgICAgICAgaWYgYWhpIGlzIE5vbmU6CiAgICAgICAgICAgIGFoaSA9IGxlbihhKQogICAgICAgIGlmIGJoaSBpcyBOb25lOgogICAgICAgICAgICBiaGkgPSBsZW4oYikKICAgICAgICBiZXN0aSwgYmVzdGosIGJlc3RzaXplID0gYWxvLCBibG8sIDAKICAgICAgICAjIGZpbmQgbG9uZ2VzdCBqdW5rLWZyZWUgbWF0Y2gKICAgICAgICAjIGR1cmluZyBhbiBpdGVyYXRpb24gb2YgdGhlIGxvb3AsIGoybGVuW2pdID0gbGVuZ3RoIG9mIGxvbmdlc3QKICAgICAgICAjIGp1bmstZnJlZSBtYXRjaCBlbmRpbmcgd2l0aCBhW2ktMV0gYW5kIGJbal0KICAgICAgICBqMmxlbiA9IHt9CiAgICAgICAgbm90aGluZyA9IFtdCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UoYWxvLCBhaGkpOgogICAgICAgICAgICAjIGxvb2sgYXQgYWxsIGluc3RhbmNlcyBvZiBhW2ldIGluIGI7IG5vdGUgdGhhdCBiZWNhdXNlCiAgICAgICAgICAgICMgYjJqIGhhcyBubyBqdW5rIGtleXMsIHRoZSBsb29wIGlzIHNraXBwZWQgaWYgYVtpXSBpcyBqdW5rCiAgICAgICAgICAgIGoybGVuZ2V0ID0gajJsZW4uZ2V0CiAgICAgICAgICAgIG5ld2oybGVuID0ge30KICAgICAgICAgICAgZm9yIGogaW4gYjJqLmdldChhW2ldLCBub3RoaW5nKToKICAgICAgICAgICAgICAgICMgYVtpXSBtYXRjaGVzIGJbal0KICAgICAgICAgICAgICAgIGlmIGogPCBibG86CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGlmIGogPj0gYmhpOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBrID0gbmV3ajJsZW5bal0gPSBqMmxlbmdldChqLTEsIDApICsgMQogICAgICAgICAgICAgICAgaWYgayA+IGJlc3RzaXplOgogICAgICAgICAgICAgICAgICAgIGJlc3RpLCBiZXN0aiwgYmVzdHNpemUgPSBpLWsrMSwgai1rKzEsIGsKICAgICAgICAgICAgajJsZW4gPSBuZXdqMmxlbgoKICAgICAgICAjIEV4dGVuZCB0aGUgYmVzdCBieSBub24tanVuayBlbGVtZW50cyBvbiBlYWNoIGVuZC4gIEluIHBhcnRpY3VsYXIsCiAgICAgICAgIyAicG9wdWxhciIgbm9uLWp1bmsgZWxlbWVudHMgYXJlbid0IGluIGIyaiwgd2hpY2ggZ3JlYXRseSBzcGVlZHMKICAgICAgICAjIHRoZSBpbm5lciBsb29wIGFib3ZlLCBidXQgYWxzbyBtZWFucyAidGhlIGJlc3QiIG1hdGNoIHNvIGZhcgogICAgICAgICMgZG9lc24ndCBjb250YWluIGFueSBqdW5rICpvciogcG9wdWxhciBub24tanVuayBlbGVtZW50cy4KICAgICAgICB3aGlsZSBiZXN0aSA+IGFsbyBhbmQgYmVzdGogPiBibG8gYW5kIFwKICAgICAgICAgICAgICBub3QgaXNianVuayhiW2Jlc3RqLTFdKSBhbmQgXAogICAgICAgICAgICAgIGFbYmVzdGktMV0gPT0gYltiZXN0ai0xXToKICAgICAgICAgICAgYmVzdGksIGJlc3RqLCBiZXN0c2l6ZSA9IGJlc3RpLTEsIGJlc3RqLTEsIGJlc3RzaXplKzEKICAgICAgICB3aGlsZSBiZXN0aStiZXN0c2l6ZSA8IGFoaSBhbmQgYmVzdGorYmVzdHNpemUgPCBiaGkgYW5kIFwKICAgICAgICAgICAgICBub3QgaXNianVuayhiW2Jlc3RqK2Jlc3RzaXplXSkgYW5kIFwKICAgICAgICAgICAgICBhW2Jlc3RpK2Jlc3RzaXplXSA9PSBiW2Jlc3RqK2Jlc3RzaXplXToKICAgICAgICAgICAgYmVzdHNpemUgKz0gMQoKICAgICAgICAjIE5vdyB0aGF0IHdlIGhhdmUgYSB3aG9sbHkgaW50ZXJlc3RpbmcgbWF0Y2ggKGFsYmVpdCBwb3NzaWJseQogICAgICAgICMgZW1wdHkhKSwgd2UgbWF5IGFzIHdlbGwgc3VjayB1cCB0aGUgbWF0Y2hpbmcganVuayBvbiBlYWNoCiAgICAgICAgIyBzaWRlIG9mIGl0IHRvby4gIENhbid0IHRoaW5rIG9mIGEgZ29vZCByZWFzb24gbm90IHRvLCBhbmQgaXQKICAgICAgICAjIHNhdmVzIHBvc3QtcHJvY2Vzc2luZyB0aGUgKHBvc3NpYmx5IGNvbnNpZGVyYWJsZSkgZXhwZW5zZSBvZgogICAgICAgICMgZmlndXJpbmcgb3V0IHdoYXQgdG8gZG8gd2l0aCBpdC4gIEluIHRoZSBjYXNlIG9mIGFuIGVtcHR5CiAgICAgICAgIyBpbnRlcmVzdGluZyBtYXRjaCwgdGhpcyBpcyBjbGVhcmx5IHRoZSByaWdodCB0aGluZyB0byBkbywKICAgICAgICAjIGJlY2F1c2Ugbm8gb3RoZXIga2luZCBvZiBtYXRjaCBpcyBwb3NzaWJsZSBpbiB0aGUgcmVnaW9ucy4KICAgICAgICB3aGlsZSBiZXN0aSA+IGFsbyBhbmQgYmVzdGogPiBibG8gYW5kIFwKICAgICAgICAgICAgICBpc2JqdW5rKGJbYmVzdGotMV0pIGFuZCBcCiAgICAgICAgICAgICAgYVtiZXN0aS0xXSA9PSBiW2Jlc3RqLTFdOgogICAgICAgICAgICBiZXN0aSwgYmVzdGosIGJlc3RzaXplID0gYmVzdGktMSwgYmVzdGotMSwgYmVzdHNpemUrMQogICAgICAgIHdoaWxlIGJlc3RpK2Jlc3RzaXplIDwgYWhpIGFuZCBiZXN0aitiZXN0c2l6ZSA8IGJoaSBhbmQgXAogICAgICAgICAgICAgIGlzYmp1bmsoYltiZXN0aitiZXN0c2l6ZV0pIGFuZCBcCiAgICAgICAgICAgICAgYVtiZXN0aStiZXN0c2l6ZV0gPT0gYltiZXN0aitiZXN0c2l6ZV06CiAgICAgICAgICAgIGJlc3RzaXplID0gYmVzdHNpemUgKyAxCgogICAgICAgIHJldHVybiBNYXRjaChiZXN0aSwgYmVzdGosIGJlc3RzaXplKQoKICAgIGRlZiBnZXRfbWF0Y2hpbmdfYmxvY2tzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBsaXN0IG9mIHRyaXBsZXMgZGVzY3JpYmluZyBtYXRjaGluZyBzdWJzZXF1ZW5jZXMuCgogICAgICAgIEVhY2ggdHJpcGxlIGlzIG9mIHRoZSBmb3JtIChpLCBqLCBuKSwgYW5kIG1lYW5zIHRoYXQKICAgICAgICBhW2k6aStuXSA9PSBiW2o6aituXS4gIFRoZSB0cmlwbGVzIGFyZSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW4KICAgICAgICBpIGFuZCBpbiBqLiAgTmV3IGluIFB5dGhvbiAyLjUsIGl0J3MgYWxzbyBndWFyYW50ZWVkIHRoYXQgaWYKICAgICAgICAoaSwgaiwgbikgYW5kIChpJywgaicsIG4nKSBhcmUgYWRqYWNlbnQgdHJpcGxlcyBpbiB0aGUgbGlzdCwgYW5kCiAgICAgICAgdGhlIHNlY29uZCBpcyBub3QgdGhlIGxhc3QgdHJpcGxlIGluIHRoZSBsaXN0LCB0aGVuIGkrbiAhPSBpJyBvcgogICAgICAgIGorbiAhPSBqJy4gIElPVywgYWRqYWNlbnQgdHJpcGxlcyBuZXZlciBkZXNjcmliZSBhZGphY2VudCBlcXVhbAogICAgICAgIGJsb2Nrcy4KCiAgICAgICAgVGhlIGxhc3QgdHJpcGxlIGlzIGEgZHVtbXksIChsZW4oYSksIGxlbihiKSwgMCksIGFuZCBpcyB0aGUgb25seQogICAgICAgIHRyaXBsZSB3aXRoIG49PTAuCgogICAgICAgID4+PiBzID0gU2VxdWVuY2VNYXRjaGVyKE5vbmUsICJhYnhjZCIsICJhYmNkIikKICAgICAgICA+Pj4gbGlzdChzLmdldF9tYXRjaGluZ19ibG9ja3MoKSkKICAgICAgICBbTWF0Y2goYT0wLCBiPTAsIHNpemU9MiksIE1hdGNoKGE9MywgYj0yLCBzaXplPTIpLCBNYXRjaChhPTUsIGI9NCwgc2l6ZT0wKV0KICAgICAgICAiIiIKCiAgICAgICAgaWYgc2VsZi5tYXRjaGluZ19ibG9ja3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm1hdGNoaW5nX2Jsb2NrcwogICAgICAgIGxhLCBsYiA9IGxlbihzZWxmLmEpLCBsZW4oc2VsZi5iKQoKICAgICAgICAjIFRoaXMgaXMgbW9zdCBuYXR1cmFsbHkgZXhwcmVzc2VkIGFzIGEgcmVjdXJzaXZlIGFsZ29yaXRobSwgYnV0CiAgICAgICAgIyBhdCBsZWFzdCBvbmUgdXNlciBidW1wZWQgaW50byBleHRyZW1lIHVzZSBjYXNlcyB0aGF0IGV4Y2VlZGVkCiAgICAgICAgIyB0aGUgcmVjdXJzaW9uIGxpbWl0IG9uIHRoZWlyIGJveC4gIFNvLCBub3cgd2UgbWFpbnRhaW4gYSBsaXN0CiAgICAgICAgIyAoJ3F1ZXVlYCkgb2YgYmxvY2tzIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBhdCwgYW5kIGFwcGVuZCBwYXJ0aWFsCiAgICAgICAgIyByZXN1bHRzIHRvIGBtYXRjaGluZ19ibG9ja3NgIGluIGEgbG9vcDsgdGhlIG1hdGNoZXMgYXJlIHNvcnRlZAogICAgICAgICMgYXQgdGhlIGVuZC4KICAgICAgICBxdWV1ZSA9IFsoMCwgbGEsIDAsIGxiKV0KICAgICAgICBtYXRjaGluZ19ibG9ja3MgPSBbXQogICAgICAgIHdoaWxlIHF1ZXVlOgogICAgICAgICAgICBhbG8sIGFoaSwgYmxvLCBiaGkgPSBxdWV1ZS5wb3AoKQogICAgICAgICAgICBpLCBqLCBrID0geCA9IHNlbGYuZmluZF9sb25nZXN0X21hdGNoKGFsbywgYWhpLCBibG8sIGJoaSkKICAgICAgICAgICAgIyBhW2FsbzppXSB2cyBiW2JsbzpqXSB1bmtub3duCiAgICAgICAgICAgICMgYVtpOmkra10gc2FtZSBhcyBiW2o6aitrXQogICAgICAgICAgICAjIGFbaStrOmFoaV0gdnMgYltqK2s6YmhpXSB1bmtub3duCiAgICAgICAgICAgIGlmIGs6ICAgIyBpZiBrIGlzIDAsIHRoZXJlIHdhcyBubyBtYXRjaGluZyBibG9jawogICAgICAgICAgICAgICAgbWF0Y2hpbmdfYmxvY2tzLmFwcGVuZCh4KQogICAgICAgICAgICAgICAgaWYgYWxvIDwgaSBhbmQgYmxvIDwgajoKICAgICAgICAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoKGFsbywgaSwgYmxvLCBqKSkKICAgICAgICAgICAgICAgIGlmIGkrayA8IGFoaSBhbmQgaitrIDwgYmhpOgogICAgICAgICAgICAgICAgICAgIHF1ZXVlLmFwcGVuZCgoaStrLCBhaGksIGoraywgYmhpKSkKICAgICAgICBtYXRjaGluZ19ibG9ja3Muc29ydCgpCgogICAgICAgICMgSXQncyBwb3NzaWJsZSB0aGF0IHdlIGhhdmUgYWRqYWNlbnQgZXF1YWwgYmxvY2tzIGluIHRoZQogICAgICAgICMgbWF0Y2hpbmdfYmxvY2tzIGxpc3Qgbm93LiAgU3RhcnRpbmcgd2l0aCAyLjUsIHRoaXMgY29kZSB3YXMgYWRkZWQKICAgICAgICAjIHRvIGNvbGxhcHNlIHRoZW0uCiAgICAgICAgaTEgPSBqMSA9IGsxID0gMAogICAgICAgIG5vbl9hZGphY2VudCA9IFtdCiAgICAgICAgZm9yIGkyLCBqMiwgazIgaW4gbWF0Y2hpbmdfYmxvY2tzOgogICAgICAgICAgICAjIElzIHRoaXMgYmxvY2sgYWRqYWNlbnQgdG8gaTEsIGoxLCBrMT8KICAgICAgICAgICAgaWYgaTEgKyBrMSA9PSBpMiBhbmQgajEgKyBrMSA9PSBqMjoKICAgICAgICAgICAgICAgICMgWWVzLCBzbyBjb2xsYXBzZSB0aGVtIC0tIHRoaXMganVzdCBpbmNyZWFzZXMgdGhlIGxlbmd0aCBvZgogICAgICAgICAgICAgICAgIyB0aGUgZmlyc3QgYmxvY2sgYnkgdGhlIGxlbmd0aCBvZiB0aGUgc2Vjb25kLCBhbmQgdGhlIGZpcnN0CiAgICAgICAgICAgICAgICAjIGJsb2NrIHNvIGxlbmd0aGVuZWQgcmVtYWlucyB0aGUgYmxvY2sgdG8gY29tcGFyZSBhZ2FpbnN0LgogICAgICAgICAgICAgICAgazEgKz0gazIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgTm90IGFkamFjZW50LiAgUmVtZW1iZXIgdGhlIGZpcnN0IGJsb2NrIChrMT09MCBtZWFucyBpdCdzCiAgICAgICAgICAgICAgICAjIHRoZSBkdW1teSB3ZSBzdGFydGVkIHdpdGgpLCBhbmQgbWFrZSB0aGUgc2Vjb25kIGJsb2NrIHRoZQogICAgICAgICAgICAgICAgIyBuZXcgYmxvY2sgdG8gY29tcGFyZSBhZ2FpbnN0LgogICAgICAgICAgICAgICAgaWYgazE6CiAgICAgICAgICAgICAgICAgICAgbm9uX2FkamFjZW50LmFwcGVuZCgoaTEsIGoxLCBrMSkpCiAgICAgICAgICAgICAgICBpMSwgajEsIGsxID0gaTIsIGoyLCBrMgogICAgICAgIGlmIGsxOgogICAgICAgICAgICBub25fYWRqYWNlbnQuYXBwZW5kKChpMSwgajEsIGsxKSkKCiAgICAgICAgbm9uX2FkamFjZW50LmFwcGVuZCggKGxhLCBsYiwgMCkgKQogICAgICAgIHNlbGYubWF0Y2hpbmdfYmxvY2tzID0gbGlzdChtYXAoTWF0Y2guX21ha2UsIG5vbl9hZGphY2VudCkpCiAgICAgICAgcmV0dXJuIHNlbGYubWF0Y2hpbmdfYmxvY2tzCgogICAgZGVmIGdldF9vcGNvZGVzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBsaXN0IG9mIDUtdHVwbGVzIGRlc2NyaWJpbmcgaG93IHRvIHR1cm4gYSBpbnRvIGIuCgogICAgICAgIEVhY2ggdHVwbGUgaXMgb2YgdGhlIGZvcm0gKHRhZywgaTEsIGkyLCBqMSwgajIpLiAgVGhlIGZpcnN0IHR1cGxlCiAgICAgICAgaGFzIGkxID09IGoxID09IDAsIGFuZCByZW1haW5pbmcgdHVwbGVzIGhhdmUgaTEgPT0gdGhlIGkyIGZyb20gdGhlCiAgICAgICAgdHVwbGUgcHJlY2VkaW5nIGl0LCBhbmQgbGlrZXdpc2UgZm9yIGoxID09IHRoZSBwcmV2aW91cyBqMi4KCiAgICAgICAgVGhlIHRhZ3MgYXJlIHN0cmluZ3MsIHdpdGggdGhlc2UgbWVhbmluZ3M6CgogICAgICAgICdyZXBsYWNlJzogIGFbaTE6aTJdIHNob3VsZCBiZSByZXBsYWNlZCBieSBiW2oxOmoyXQogICAgICAgICdkZWxldGUnOiAgIGFbaTE6aTJdIHNob3VsZCBiZSBkZWxldGVkLgogICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBqMT09ajIgaW4gdGhpcyBjYXNlLgogICAgICAgICdpbnNlcnQnOiAgIGJbajE6ajJdIHNob3VsZCBiZSBpbnNlcnRlZCBhdCBhW2kxOmkxXS4KICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgaTE9PWkyIGluIHRoaXMgY2FzZS4KICAgICAgICAnZXF1YWwnOiAgICBhW2kxOmkyXSA9PSBiW2oxOmoyXQoKICAgICAgICA+Pj4gYSA9ICJxYWJ4Y2QiCiAgICAgICAgPj4+IGIgPSAiYWJ5Y2RmIgogICAgICAgID4+PiBzID0gU2VxdWVuY2VNYXRjaGVyKE5vbmUsIGEsIGIpCiAgICAgICAgPj4+IGZvciB0YWcsIGkxLCBpMiwgajEsIGoyIGluIHMuZ2V0X29wY29kZXMoKToKICAgICAgICAuLi4gICAgcHJpbnQoKCIlN3MgYVslZDolZF0gKCVzKSBiWyVkOiVkXSAoJXMpIiAlCiAgICAgICAgLi4uICAgICAgICAgICAodGFnLCBpMSwgaTIsIGFbaTE6aTJdLCBqMSwgajIsIGJbajE6ajJdKSkpCiAgICAgICAgIGRlbGV0ZSBhWzA6MV0gKHEpIGJbMDowXSAoKQogICAgICAgICAgZXF1YWwgYVsxOjNdIChhYikgYlswOjJdIChhYikKICAgICAgICByZXBsYWNlIGFbMzo0XSAoeCkgYlsyOjNdICh5KQogICAgICAgICAgZXF1YWwgYVs0OjZdIChjZCkgYlszOjVdIChjZCkKICAgICAgICAgaW5zZXJ0IGFbNjo2XSAoKSBiWzU6Nl0gKGYpCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYub3Bjb2RlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYub3Bjb2RlcwogICAgICAgIGkgPSBqID0gMAogICAgICAgIHNlbGYub3Bjb2RlcyA9IGFuc3dlciA9IFtdCiAgICAgICAgZm9yIGFpLCBiaiwgc2l6ZSBpbiBzZWxmLmdldF9tYXRjaGluZ19ibG9ja3MoKToKICAgICAgICAgICAgIyBpbnZhcmlhbnQ6ICB3ZSd2ZSBwdW1wZWQgb3V0IGNvcnJlY3QgZGlmZnMgdG8gY2hhbmdlCiAgICAgICAgICAgICMgYVs6aV0gaW50byBiWzpqXSwgYW5kIHRoZSBuZXh0IG1hdGNoaW5nIGJsb2NrIGlzCiAgICAgICAgICAgICMgYVthaTphaStzaXplXSA9PSBiW2JqOmJqK3NpemVdLiAgU28gd2UgbmVlZCB0byBwdW1wCiAgICAgICAgICAgICMgb3V0IGEgZGlmZiB0byBjaGFuZ2UgYVtpOmFpXSBpbnRvIGJbajpial0sIHB1bXAgb3V0CiAgICAgICAgICAgICMgdGhlIG1hdGNoaW5nIGJsb2NrLCBhbmQgbW92ZSAoaSxqKSBiZXlvbmQgdGhlIG1hdGNoCiAgICAgICAgICAgIHRhZyA9ICcnCiAgICAgICAgICAgIGlmIGkgPCBhaSBhbmQgaiA8IGJqOgogICAgICAgICAgICAgICAgdGFnID0gJ3JlcGxhY2UnCiAgICAgICAgICAgIGVsaWYgaSA8IGFpOgogICAgICAgICAgICAgICAgdGFnID0gJ2RlbGV0ZScKICAgICAgICAgICAgZWxpZiBqIDwgYmo6CiAgICAgICAgICAgICAgICB0YWcgPSAnaW5zZXJ0JwogICAgICAgICAgICBpZiB0YWc6CiAgICAgICAgICAgICAgICBhbnN3ZXIuYXBwZW5kKCAodGFnLCBpLCBhaSwgaiwgYmopICkKICAgICAgICAgICAgaSwgaiA9IGFpK3NpemUsIGJqK3NpemUKICAgICAgICAgICAgIyB0aGUgbGlzdCBvZiBtYXRjaGluZyBibG9ja3MgaXMgdGVybWluYXRlZCBieSBhCiAgICAgICAgICAgICMgc2VudGluZWwgd2l0aCBzaXplIDAKICAgICAgICAgICAgaWYgc2l6ZToKICAgICAgICAgICAgICAgIGFuc3dlci5hcHBlbmQoICgnZXF1YWwnLCBhaSwgaSwgYmosIGopICkKICAgICAgICByZXR1cm4gYW5zd2VyCgogICAgZGVmIGdldF9ncm91cGVkX29wY29kZXMoc2VsZiwgbj0zKToKICAgICAgICAiIiIgSXNvbGF0ZSBjaGFuZ2UgY2x1c3RlcnMgYnkgZWxpbWluYXRpbmcgcmFuZ2VzIHdpdGggbm8gY2hhbmdlcy4KCiAgICAgICAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9mIGdyb3VwcyB3aXRoIHVwIHRvIG4gbGluZXMgb2YgY29udGV4dC4KICAgICAgICBFYWNoIGdyb3VwIGlzIGluIHRoZSBzYW1lIGZvcm1hdCBhcyByZXR1cm5lZCBieSBnZXRfb3Bjb2RlcygpLgoKICAgICAgICA+Pj4gZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludAogICAgICAgID4+PiBhID0gbGlzdChtYXAoc3RyLCByYW5nZSgxLDQwKSkpCiAgICAgICAgPj4+IGIgPSBhWzpdCiAgICAgICAgPj4+IGJbODo4XSA9IFsnaSddICAgICAjIE1ha2UgYW4gaW5zZXJ0aW9uCiAgICAgICAgPj4+IGJbMjBdICs9ICd4JyAgICAgICAjIE1ha2UgYSByZXBsYWNlbWVudAogICAgICAgID4+PiBiWzIzOjI4XSA9IFtdICAgICAgIyBNYWtlIGEgZGVsZXRpb24KICAgICAgICA+Pj4gYlszMF0gKz0gJ3knICAgICAgICMgTWFrZSBhbm90aGVyIHJlcGxhY2VtZW50CiAgICAgICAgPj4+IHBwcmludChsaXN0KFNlcXVlbmNlTWF0Y2hlcihOb25lLGEsYikuZ2V0X2dyb3VwZWRfb3Bjb2RlcygpKSkKICAgICAgICBbWygnZXF1YWwnLCA1LCA4LCA1LCA4KSwgKCdpbnNlcnQnLCA4LCA4LCA4LCA5KSwgKCdlcXVhbCcsIDgsIDExLCA5LCAxMildLAogICAgICAgICBbKCdlcXVhbCcsIDE2LCAxOSwgMTcsIDIwKSwKICAgICAgICAgICgncmVwbGFjZScsIDE5LCAyMCwgMjAsIDIxKSwKICAgICAgICAgICgnZXF1YWwnLCAyMCwgMjIsIDIxLCAyMyksCiAgICAgICAgICAoJ2RlbGV0ZScsIDIyLCAyNywgMjMsIDIzKSwKICAgICAgICAgICgnZXF1YWwnLCAyNywgMzAsIDIzLCAyNildLAogICAgICAgICBbKCdlcXVhbCcsIDMxLCAzNCwgMjcsIDMwKSwKICAgICAgICAgICgncmVwbGFjZScsIDM0LCAzNSwgMzAsIDMxKSwKICAgICAgICAgICgnZXF1YWwnLCAzNSwgMzgsIDMxLCAzNCldXQogICAgICAgICIiIgoKICAgICAgICBjb2RlcyA9IHNlbGYuZ2V0X29wY29kZXMoKQogICAgICAgIGlmIG5vdCBjb2RlczoKICAgICAgICAgICAgY29kZXMgPSBbKCJlcXVhbCIsIDAsIDEsIDAsIDEpXQogICAgICAgICMgRml4dXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgZ3JvdXBzIGlmIHRoZXkgc2hvdyBubyBjaGFuZ2VzLgogICAgICAgIGlmIGNvZGVzWzBdWzBdID09ICdlcXVhbCc6CiAgICAgICAgICAgIHRhZywgaTEsIGkyLCBqMSwgajIgPSBjb2Rlc1swXQogICAgICAgICAgICBjb2Rlc1swXSA9IHRhZywgbWF4KGkxLCBpMi1uKSwgaTIsIG1heChqMSwgajItbiksIGoyCiAgICAgICAgaWYgY29kZXNbLTFdWzBdID09ICdlcXVhbCc6CiAgICAgICAgICAgIHRhZywgaTEsIGkyLCBqMSwgajIgPSBjb2Rlc1stMV0KICAgICAgICAgICAgY29kZXNbLTFdID0gdGFnLCBpMSwgbWluKGkyLCBpMStuKSwgajEsIG1pbihqMiwgajErbikKCiAgICAgICAgbm4gPSBuICsgbgogICAgICAgIGdyb3VwID0gW10KICAgICAgICBmb3IgdGFnLCBpMSwgaTIsIGoxLCBqMiBpbiBjb2RlczoKICAgICAgICAgICAgIyBFbmQgdGhlIGN1cnJlbnQgZ3JvdXAgYW5kIHN0YXJ0IGEgbmV3IG9uZSB3aGVuZXZlcgogICAgICAgICAgICAjIHRoZXJlIGlzIGEgbGFyZ2UgcmFuZ2Ugd2l0aCBubyBjaGFuZ2VzLgogICAgICAgICAgICBpZiB0YWcgPT0gJ2VxdWFsJyBhbmQgaTItaTEgPiBubjoKICAgICAgICAgICAgICAgIGdyb3VwLmFwcGVuZCgodGFnLCBpMSwgbWluKGkyLCBpMStuKSwgajEsIG1pbihqMiwgajErbikpKQogICAgICAgICAgICAgICAgeWllbGQgZ3JvdXAKICAgICAgICAgICAgICAgIGdyb3VwID0gW10KICAgICAgICAgICAgICAgIGkxLCBqMSA9IG1heChpMSwgaTItbiksIG1heChqMSwgajItbikKICAgICAgICAgICAgZ3JvdXAuYXBwZW5kKCh0YWcsIGkxLCBpMiwgajEgLGoyKSkKICAgICAgICBpZiBncm91cCBhbmQgbm90IChsZW4oZ3JvdXApPT0xIGFuZCBncm91cFswXVswXSA9PSAnZXF1YWwnKToKICAgICAgICAgICAgeWllbGQgZ3JvdXAKCiAgICBkZWYgcmF0aW8oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbWVhc3VyZSBvZiB0aGUgc2VxdWVuY2VzJyBzaW1pbGFyaXR5IChmbG9hdCBpbiBbMCwxXSkuCgogICAgICAgIFdoZXJlIFQgaXMgdGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiBib3RoIHNlcXVlbmNlcywgYW5kCiAgICAgICAgTSBpcyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMsIHRoaXMgaXMgMi4wKk0gLyBULgogICAgICAgIE5vdGUgdGhhdCB0aGlzIGlzIDEgaWYgdGhlIHNlcXVlbmNlcyBhcmUgaWRlbnRpY2FsLCBhbmQgMCBpZgogICAgICAgIHRoZXkgaGF2ZSBub3RoaW5nIGluIGNvbW1vbi4KCiAgICAgICAgLnJhdGlvKCkgaXMgZXhwZW5zaXZlIHRvIGNvbXB1dGUgaWYgeW91IGhhdmVuJ3QgYWxyZWFkeSBjb21wdXRlZAogICAgICAgIC5nZXRfbWF0Y2hpbmdfYmxvY2tzKCkgb3IgLmdldF9vcGNvZGVzKCksIGluIHdoaWNoIGNhc2UgeW91IG1heQogICAgICAgIHdhbnQgdG8gdHJ5IC5xdWlja19yYXRpbygpIG9yIC5yZWFsX3F1aWNrX3JhdGlvKCkgZmlyc3QgdG8gZ2V0IGFuCiAgICAgICAgdXBwZXIgYm91bmQuCgogICAgICAgID4+PiBzID0gU2VxdWVuY2VNYXRjaGVyKE5vbmUsICJhYmNkIiwgImJjZGUiKQogICAgICAgID4+PiBzLnJhdGlvKCkKICAgICAgICAwLjc1CiAgICAgICAgPj4+IHMucXVpY2tfcmF0aW8oKQogICAgICAgIDAuNzUKICAgICAgICA+Pj4gcy5yZWFsX3F1aWNrX3JhdGlvKCkKICAgICAgICAxLjAKICAgICAgICAiIiIKCiAgICAgICAgbWF0Y2hlcyA9IHN1bSh0cmlwbGVbLTFdIGZvciB0cmlwbGUgaW4gc2VsZi5nZXRfbWF0Y2hpbmdfYmxvY2tzKCkpCiAgICAgICAgcmV0dXJuIF9jYWxjdWxhdGVfcmF0aW8obWF0Y2hlcywgbGVuKHNlbGYuYSkgKyBsZW4oc2VsZi5iKSkKCiAgICBkZWYgcXVpY2tfcmF0aW8oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGFuIHVwcGVyIGJvdW5kIG9uIHJhdGlvKCkgcmVsYXRpdmVseSBxdWlja2x5LgoKICAgICAgICBUaGlzIGlzbid0IGRlZmluZWQgYmV5b25kIHRoYXQgaXQgaXMgYW4gdXBwZXIgYm91bmQgb24gLnJhdGlvKCksIGFuZAogICAgICAgIGlzIGZhc3RlciB0byBjb21wdXRlLgogICAgICAgICIiIgoKICAgICAgICAjIHZpZXdpbmcgYSBhbmQgYiBhcyBtdWx0aXNldHMsIHNldCBtYXRjaGVzIHRvIHRoZSBjYXJkaW5hbGl0eQogICAgICAgICMgb2YgdGhlaXIgaW50ZXJzZWN0aW9uOyB0aGlzIGNvdW50cyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMKICAgICAgICAjIHdpdGhvdXQgcmVnYXJkIHRvIG9yZGVyLCBzbyBpcyBjbGVhcmx5IGFuIHVwcGVyIGJvdW5kCiAgICAgICAgaWYgc2VsZi5mdWxsYmNvdW50IGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuZnVsbGJjb3VudCA9IGZ1bGxiY291bnQgPSB7fQogICAgICAgICAgICBmb3IgZWx0IGluIHNlbGYuYjoKICAgICAgICAgICAgICAgIGZ1bGxiY291bnRbZWx0XSA9IGZ1bGxiY291bnQuZ2V0KGVsdCwgMCkgKyAxCiAgICAgICAgZnVsbGJjb3VudCA9IHNlbGYuZnVsbGJjb3VudAogICAgICAgICMgYXZhaWxbeF0gaXMgdGhlIG51bWJlciBvZiB0aW1lcyB4IGFwcGVhcnMgaW4gJ2InIGxlc3MgdGhlCiAgICAgICAgIyBudW1iZXIgb2YgdGltZXMgd2UndmUgc2VlbiBpdCBpbiAnYScgc28gZmFyIC4uLiBraW5kYQogICAgICAgIGF2YWlsID0ge30KICAgICAgICBhdmFpbGhhcywgbWF0Y2hlcyA9IGF2YWlsLl9fY29udGFpbnNfXywgMAogICAgICAgIGZvciBlbHQgaW4gc2VsZi5hOgogICAgICAgICAgICBpZiBhdmFpbGhhcyhlbHQpOgogICAgICAgICAgICAgICAgbnVtYiA9IGF2YWlsW2VsdF0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG51bWIgPSBmdWxsYmNvdW50LmdldChlbHQsIDApCiAgICAgICAgICAgIGF2YWlsW2VsdF0gPSBudW1iIC0gMQogICAgICAgICAgICBpZiBudW1iID4gMDoKICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaGVzICsgMQogICAgICAgIHJldHVybiBfY2FsY3VsYXRlX3JhdGlvKG1hdGNoZXMsIGxlbihzZWxmLmEpICsgbGVuKHNlbGYuYikpCgogICAgZGVmIHJlYWxfcXVpY2tfcmF0aW8oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGFuIHVwcGVyIGJvdW5kIG9uIHJhdGlvKCkgdmVyeSBxdWlja2x5LgoKICAgICAgICBUaGlzIGlzbid0IGRlZmluZWQgYmV5b25kIHRoYXQgaXQgaXMgYW4gdXBwZXIgYm91bmQgb24gLnJhdGlvKCksIGFuZAogICAgICAgIGlzIGZhc3RlciB0byBjb21wdXRlIHRoYW4gZWl0aGVyIC5yYXRpbygpIG9yIC5xdWlja19yYXRpbygpLgogICAgICAgICIiIgoKICAgICAgICBsYSwgbGIgPSBsZW4oc2VsZi5hKSwgbGVuKHNlbGYuYikKICAgICAgICAjIGNhbid0IGhhdmUgbW9yZSBtYXRjaGVzIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUKICAgICAgICAjIHNob3J0ZXIgc2VxdWVuY2UKICAgICAgICByZXR1cm4gX2NhbGN1bGF0ZV9yYXRpbyhtaW4obGEsIGxiKSwgbGEgKyBsYikKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKEdlbmVyaWNBbGlhcykKCgpkZWYgZ2V0X2Nsb3NlX21hdGNoZXMod29yZCwgcG9zc2liaWxpdGllcywgbj0zLCBjdXRvZmY9MC42KToKICAgICIiIlVzZSBTZXF1ZW5jZU1hdGNoZXIgdG8gcmV0dXJuIGxpc3Qgb2YgdGhlIGJlc3QgImdvb2QgZW5vdWdoIiBtYXRjaGVzLgoKICAgIHdvcmQgaXMgYSBzZXF1ZW5jZSBmb3Igd2hpY2ggY2xvc2UgbWF0Y2hlcyBhcmUgZGVzaXJlZCAodHlwaWNhbGx5IGEKICAgIHN0cmluZykuCgogICAgcG9zc2liaWxpdGllcyBpcyBhIGxpc3Qgb2Ygc2VxdWVuY2VzIGFnYWluc3Qgd2hpY2ggdG8gbWF0Y2ggd29yZAogICAgKHR5cGljYWxseSBhIGxpc3Qgb2Ygc3RyaW5ncykuCgogICAgT3B0aW9uYWwgYXJnIG4gKGRlZmF1bHQgMykgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNsb3NlIG1hdGNoZXMgdG8KICAgIHJldHVybi4gIG4gbXVzdCBiZSA+IDAuCgogICAgT3B0aW9uYWwgYXJnIGN1dG9mZiAoZGVmYXVsdCAwLjYpIGlzIGEgZmxvYXQgaW4gWzAsIDFdLiAgUG9zc2liaWxpdGllcwogICAgdGhhdCBkb24ndCBzY29yZSBhdCBsZWFzdCB0aGF0IHNpbWlsYXIgdG8gd29yZCBhcmUgaWdub3JlZC4KCiAgICBUaGUgYmVzdCAobm8gbW9yZSB0aGFuIG4pIG1hdGNoZXMgYW1vbmcgdGhlIHBvc3NpYmlsaXRpZXMgYXJlIHJldHVybmVkCiAgICBpbiBhIGxpc3QsIHNvcnRlZCBieSBzaW1pbGFyaXR5IHNjb3JlLCBtb3N0IHNpbWlsYXIgZmlyc3QuCgogICAgPj4+IGdldF9jbG9zZV9tYXRjaGVzKCJhcHBlbCIsIFsiYXBlIiwgImFwcGxlIiwgInBlYWNoIiwgInB1cHB5Il0pCiAgICBbJ2FwcGxlJywgJ2FwZSddCiAgICA+Pj4gaW1wb3J0IGtleXdvcmQgYXMgX2tleXdvcmQKICAgID4+PiBnZXRfY2xvc2VfbWF0Y2hlcygid2hlZWwiLCBfa2V5d29yZC5rd2xpc3QpCiAgICBbJ3doaWxlJ10KICAgID4+PiBnZXRfY2xvc2VfbWF0Y2hlcygiQXBwbGUiLCBfa2V5d29yZC5rd2xpc3QpCiAgICBbXQogICAgPj4+IGdldF9jbG9zZV9tYXRjaGVzKCJhY2NlcHQiLCBfa2V5d29yZC5rd2xpc3QpCiAgICBbJ2V4Y2VwdCddCiAgICAiIiIKCiAgICBpZiBub3QgbiA+ICAwOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm4gbXVzdCBiZSA+IDA6ICVyIiAlIChuLCkpCiAgICBpZiBub3QgMC4wIDw9IGN1dG9mZiA8PSAxLjA6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY3V0b2ZmIG11c3QgYmUgaW4gWzAuMCwgMS4wXTogJXIiICUgKGN1dG9mZiwpKQogICAgcmVzdWx0ID0gW10KICAgIHMgPSBTZXF1ZW5jZU1hdGNoZXIoKQogICAgcy5zZXRfc2VxMih3b3JkKQogICAgZm9yIHggaW4gcG9zc2liaWxpdGllczoKICAgICAgICBzLnNldF9zZXExKHgpCiAgICAgICAgaWYgcy5yZWFsX3F1aWNrX3JhdGlvKCkgPj0gY3V0b2ZmIGFuZCBcCiAgICAgICAgICAgcy5xdWlja19yYXRpbygpID49IGN1dG9mZiBhbmQgXAogICAgICAgICAgIHMucmF0aW8oKSA+PSBjdXRvZmY6CiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKHMucmF0aW8oKSwgeCkpCgogICAgIyBNb3ZlIHRoZSBiZXN0IHNjb3JlcnMgdG8gaGVhZCBvZiBsaXN0CiAgICByZXN1bHQgPSBfbmxhcmdlc3QobiwgcmVzdWx0KQogICAgIyBTdHJpcCBzY29yZXMgZm9yIHRoZSBiZXN0IG4gbWF0Y2hlcwogICAgcmV0dXJuIFt4IGZvciBzY29yZSwgeCBpbiByZXN1bHRdCgoKZGVmIF9rZWVwX29yaWdpbmFsX3dzKHMsIHRhZ19zKToKICAgICIiIlJlcGxhY2Ugd2hpdGVzcGFjZSB3aXRoIHRoZSBvcmlnaW5hbCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gYHNgIiIiCiAgICByZXR1cm4gJycuam9pbigKICAgICAgICBjIGlmIHRhZ19jID09ICIgIiBhbmQgYy5pc3NwYWNlKCkgZWxzZSB0YWdfYwogICAgICAgIGZvciBjLCB0YWdfYyBpbiB6aXAocywgdGFnX3MpCiAgICApCgoKCmNsYXNzIERpZmZlcjoKICAgIHIiIiIKICAgIERpZmZlciBpcyBhIGNsYXNzIGZvciBjb21wYXJpbmcgc2VxdWVuY2VzIG9mIGxpbmVzIG9mIHRleHQsIGFuZAogICAgcHJvZHVjaW5nIGh1bWFuLXJlYWRhYmxlIGRpZmZlcmVuY2VzIG9yIGRlbHRhcy4gIERpZmZlciB1c2VzCiAgICBTZXF1ZW5jZU1hdGNoZXIgYm90aCB0byBjb21wYXJlIHNlcXVlbmNlcyBvZiBsaW5lcywgYW5kIHRvIGNvbXBhcmUKICAgIHNlcXVlbmNlcyBvZiBjaGFyYWN0ZXJzIHdpdGhpbiBzaW1pbGFyIChuZWFyLW1hdGNoaW5nKSBsaW5lcy4KCiAgICBFYWNoIGxpbmUgb2YgYSBEaWZmZXIgZGVsdGEgYmVnaW5zIHdpdGggYSB0d28tbGV0dGVyIGNvZGU6CgogICAgICAgICctICcgICAgbGluZSB1bmlxdWUgdG8gc2VxdWVuY2UgMQogICAgICAgICcrICcgICAgbGluZSB1bmlxdWUgdG8gc2VxdWVuY2UgMgogICAgICAgICcgICcgICAgbGluZSBjb21tb24gdG8gYm90aCBzZXF1ZW5jZXMKICAgICAgICAnPyAnICAgIGxpbmUgbm90IHByZXNlbnQgaW4gZWl0aGVyIGlucHV0IHNlcXVlbmNlCgogICAgTGluZXMgYmVnaW5uaW5nIHdpdGggJz8gJyBhdHRlbXB0IHRvIGd1aWRlIHRoZSBleWUgdG8gaW50cmFsaW5lCiAgICBkaWZmZXJlbmNlcywgYW5kIHdlcmUgbm90IHByZXNlbnQgaW4gZWl0aGVyIGlucHV0IHNlcXVlbmNlLiAgVGhlc2UgbGluZXMKICAgIGNhbiBiZSBjb25mdXNpbmcgaWYgdGhlIHNlcXVlbmNlcyBjb250YWluIHRhYiBjaGFyYWN0ZXJzLgoKICAgIE5vdGUgdGhhdCBEaWZmZXIgbWFrZXMgbm8gY2xhaW0gdG8gcHJvZHVjZSBhICptaW5pbWFsKiBkaWZmLiAgVG8gdGhlCiAgICBjb250cmFyeSwgbWluaW1hbCBkaWZmcyBhcmUgb2Z0ZW4gY291bnRlci1pbnR1aXRpdmUsIGJlY2F1c2UgdGhleSBzeW5jaAogICAgdXAgYW55d2hlcmUgcG9zc2libGUsIHNvbWV0aW1lcyBhY2NpZGVudGFsIG1hdGNoZXMgMTAwIHBhZ2VzIGFwYXJ0LgogICAgUmVzdHJpY3Rpbmcgc3luY2ggcG9pbnRzIHRvIGNvbnRpZ3VvdXMgbWF0Y2hlcyBwcmVzZXJ2ZXMgc29tZSBub3Rpb24gb2YKICAgIGxvY2FsaXR5LCBhdCB0aGUgb2NjYXNpb25hbCBjb3N0IG9mIHByb2R1Y2luZyBhIGxvbmdlciBkaWZmLgoKICAgIEV4YW1wbGU6IENvbXBhcmluZyB0d28gdGV4dHMuCgogICAgRmlyc3Qgd2Ugc2V0IHVwIHRoZSB0ZXh0cywgc2VxdWVuY2VzIG9mIGluZGl2aWR1YWwgc2luZ2xlLWxpbmUgc3RyaW5ncwogICAgZW5kaW5nIHdpdGggbmV3bGluZXMgKHN1Y2ggc2VxdWVuY2VzIGNhbiBhbHNvIGJlIG9idGFpbmVkIGZyb20gdGhlCiAgICBgcmVhZGxpbmVzKClgIG1ldGhvZCBvZiBmaWxlLWxpa2Ugb2JqZWN0cyk6CgogICAgPj4+IHRleHQxID0gJycnICAxLiBCZWF1dGlmdWwgaXMgYmV0dGVyIHRoYW4gdWdseS4KICAgIC4uLiAgIDIuIEV4cGxpY2l0IGlzIGJldHRlciB0aGFuIGltcGxpY2l0LgogICAgLi4uICAgMy4gU2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCiAgICAuLi4gICA0LiBDb21wbGV4IGlzIGJldHRlciB0aGFuIGNvbXBsaWNhdGVkLgogICAgLi4uICcnJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICA+Pj4gbGVuKHRleHQxKQogICAgNAogICAgPj4+IHRleHQxWzBdWy0xXQogICAgJ1xuJwogICAgPj4+IHRleHQyID0gJycnICAxLiBCZWF1dGlmdWwgaXMgYmV0dGVyIHRoYW4gdWdseS4KICAgIC4uLiAgIDMuICAgU2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCiAgICAuLi4gICA0LiBDb21wbGljYXRlZCBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgogICAgLi4uICAgNS4gRmxhdCBpcyBiZXR0ZXIgdGhhbiBuZXN0ZWQuCiAgICAuLi4gJycnLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKCiAgICBOZXh0IHdlIGluc3RhbnRpYXRlIGEgRGlmZmVyIG9iamVjdDoKCiAgICA+Pj4gZCA9IERpZmZlcigpCgogICAgTm90ZSB0aGF0IHdoZW4gaW5zdGFudGlhdGluZyBhIERpZmZlciBvYmplY3Qgd2UgbWF5IHBhc3MgZnVuY3Rpb25zIHRvCiAgICBmaWx0ZXIgb3V0IGxpbmUgYW5kIGNoYXJhY3RlciAnanVuaycuICBTZWUgRGlmZmVyLl9faW5pdF9fIGZvciBkZXRhaWxzLgoKICAgIEZpbmFsbHksIHdlIGNvbXBhcmUgdGhlIHR3bzoKCiAgICA+Pj4gcmVzdWx0ID0gbGlzdChkLmNvbXBhcmUodGV4dDEsIHRleHQyKSkKCiAgICAncmVzdWx0JyBpcyBhIGxpc3Qgb2Ygc3RyaW5ncywgc28gbGV0J3MgcHJldHR5LXByaW50IGl0OgoKICAgID4+PiBmcm9tIHBwcmludCBpbXBvcnQgcHByaW50IGFzIF9wcHJpbnQKICAgID4+PiBfcHByaW50KHJlc3VsdCkKICAgIFsnICAgIDEuIEJlYXV0aWZ1bCBpcyBiZXR0ZXIgdGhhbiB1Z2x5LlxuJywKICAgICAnLSAgIDIuIEV4cGxpY2l0IGlzIGJldHRlciB0aGFuIGltcGxpY2l0LlxuJywKICAgICAnLSAgIDMuIFNpbXBsZSBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LlxuJywKICAgICAnKyAgIDMuICAgU2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguXG4nLAogICAgICc/ICAgICArK1xuJywKICAgICAnLSAgIDQuIENvbXBsZXggaXMgYmV0dGVyIHRoYW4gY29tcGxpY2F0ZWQuXG4nLAogICAgICc/ICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgIC0tLS0gXlxuJywKICAgICAnKyAgIDQuIENvbXBsaWNhdGVkIGlzIGJldHRlciB0aGFuIGNvbXBsZXguXG4nLAogICAgICc/ICAgICAgICAgICArKysrIF4gICAgICAgICAgICAgICAgICAgICAgXlxuJywKICAgICAnKyAgIDUuIEZsYXQgaXMgYmV0dGVyIHRoYW4gbmVzdGVkLlxuJ10KCiAgICBBcyBhIHNpbmdsZSBtdWx0aS1saW5lIHN0cmluZyBpdCBsb29rcyBsaWtlIHRoaXM6CgogICAgPj4+IHByaW50KCcnLmpvaW4ocmVzdWx0KSwgZW5kPSIiKQogICAgICAgIDEuIEJlYXV0aWZ1bCBpcyBiZXR0ZXIgdGhhbiB1Z2x5LgogICAgLSAgIDIuIEV4cGxpY2l0IGlzIGJldHRlciB0aGFuIGltcGxpY2l0LgogICAgLSAgIDMuIFNpbXBsZSBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgogICAgKyAgIDMuICAgU2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCiAgICA/ICAgICArKwogICAgLSAgIDQuIENvbXBsZXggaXMgYmV0dGVyIHRoYW4gY29tcGxpY2F0ZWQuCiAgICA/ICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgIC0tLS0gXgogICAgKyAgIDQuIENvbXBsaWNhdGVkIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCiAgICA/ICAgICAgICAgICArKysrIF4gICAgICAgICAgICAgICAgICAgICAgXgogICAgKyAgIDUuIEZsYXQgaXMgYmV0dGVyIHRoYW4gbmVzdGVkLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVqdW5rPU5vbmUsIGNoYXJqdW5rPU5vbmUpOgogICAgICAgICIiIgogICAgICAgIENvbnN0cnVjdCBhIHRleHQgZGlmZmVyZW5jZXIsIHdpdGggb3B0aW9uYWwgZmlsdGVycy4KCiAgICAgICAgVGhlIHR3byBvcHRpb25hbCBrZXl3b3JkIHBhcmFtZXRlcnMgYXJlIGZvciBmaWx0ZXIgZnVuY3Rpb25zOgoKICAgICAgICAtIGBsaW5lanVua2A6IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCwKICAgICAgICAgIGFuZCByZXR1cm4gdHJ1ZSBpZmYgdGhlIHN0cmluZyBpcyBqdW5rLiBUaGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uCiAgICAgICAgICBgSVNfTElORV9KVU5LYCBtYXkgYmUgdXNlZCB0byBmaWx0ZXIgb3V0IGxpbmVzIHdpdGhvdXQgdmlzaWJsZQogICAgICAgICAgY2hhcmFjdGVycywgZXhjZXB0IGZvciBhdCBtb3N0IG9uZSBzcGxhdCAoJyMnKS4gIEl0IGlzIHJlY29tbWVuZGVkCiAgICAgICAgICB0byBsZWF2ZSBsaW5lanVuayBOb25lOyB0aGUgdW5kZXJseWluZyBTZXF1ZW5jZU1hdGNoZXIgY2xhc3MgaGFzCiAgICAgICAgICBhbiBhZGFwdGl2ZSBub3Rpb24gb2YgIm5vaXNlIiBsaW5lcyB0aGF0J3MgYmV0dGVyIHRoYW4gYW55IHN0YXRpYwogICAgICAgICAgZGVmaW5pdGlvbiB0aGUgYXV0aG9yIGhhcyBldmVyIGJlZW4gYWJsZSB0byBjcmFmdC4KCiAgICAgICAgLSBgY2hhcmp1bmtgOiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGFjY2VwdCBhIHN0cmluZyBvZiBsZW5ndGggMS4gVGhlCiAgICAgICAgICBtb2R1bGUtbGV2ZWwgZnVuY3Rpb24gYElTX0NIQVJBQ1RFUl9KVU5LYCBtYXkgYmUgdXNlZCB0byBmaWx0ZXIgb3V0CiAgICAgICAgICB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGEgYmxhbmsgb3IgdGFiOyAqKm5vdGUqKjogYmFkIGlkZWEgdG8gaW5jbHVkZQogICAgICAgICAgbmV3bGluZSBpbiB0aGlzISkuICBVc2Ugb2YgSVNfQ0hBUkFDVEVSX0pVTksgaXMgcmVjb21tZW5kZWQuCiAgICAgICAgIiIiCgogICAgICAgIHNlbGYubGluZWp1bmsgPSBsaW5lanVuawogICAgICAgIHNlbGYuY2hhcmp1bmsgPSBjaGFyanVuawoKICAgIGRlZiBjb21wYXJlKHNlbGYsIGEsIGIpOgogICAgICAgIHIiIiIKICAgICAgICBDb21wYXJlIHR3byBzZXF1ZW5jZXMgb2YgbGluZXM7IGdlbmVyYXRlIHRoZSByZXN1bHRpbmcgZGVsdGEuCgogICAgICAgIEVhY2ggc2VxdWVuY2UgbXVzdCBjb250YWluIGluZGl2aWR1YWwgc2luZ2xlLWxpbmUgc3RyaW5ncyBlbmRpbmcgd2l0aAogICAgICAgIG5ld2xpbmVzLiBTdWNoIHNlcXVlbmNlcyBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgYHJlYWRsaW5lcygpYCBtZXRob2QKICAgICAgICBvZiBmaWxlLWxpa2Ugb2JqZWN0cy4gIFRoZSBkZWx0YSBnZW5lcmF0ZWQgYWxzbyBjb25zaXN0cyBvZiBuZXdsaW5lLQogICAgICAgIHRlcm1pbmF0ZWQgc3RyaW5ncywgcmVhZHkgdG8gYmUgcHJpbnRlZCBhcy1pcyB2aWEgdGhlIHdyaXRlbGluZXMoKQogICAgICAgIG1ldGhvZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuCgogICAgICAgIEV4YW1wbGU6CgogICAgICAgID4+PiBwcmludCgnJy5qb2luKERpZmZlcigpLmNvbXBhcmUoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKFRydWUpLAogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoVHJ1ZSkpKSwKICAgICAgICAuLi4gICAgICAgZW5kPSIiKQogICAgICAgIC0gb25lCiAgICAgICAgPyAgXgogICAgICAgICsgb3JlCiAgICAgICAgPyAgXgogICAgICAgIC0gdHdvCiAgICAgICAgLSB0aHJlZQogICAgICAgID8gIC0KICAgICAgICArIHRyZWUKICAgICAgICArIGVtdQogICAgICAgICIiIgoKICAgICAgICBjcnVuY2hlciA9IFNlcXVlbmNlTWF0Y2hlcihzZWxmLmxpbmVqdW5rLCBhLCBiKQogICAgICAgIGZvciB0YWcsIGFsbywgYWhpLCBibG8sIGJoaSBpbiBjcnVuY2hlci5nZXRfb3Bjb2RlcygpOgogICAgICAgICAgICBpZiB0YWcgPT0gJ3JlcGxhY2UnOgogICAgICAgICAgICAgICAgZyA9IHNlbGYuX2ZhbmN5X3JlcGxhY2UoYSwgYWxvLCBhaGksIGIsIGJsbywgYmhpKQogICAgICAgICAgICBlbGlmIHRhZyA9PSAnZGVsZXRlJzoKICAgICAgICAgICAgICAgIGcgPSBzZWxmLl9kdW1wKCctJywgYSwgYWxvLCBhaGkpCiAgICAgICAgICAgIGVsaWYgdGFnID09ICdpbnNlcnQnOgogICAgICAgICAgICAgICAgZyA9IHNlbGYuX2R1bXAoJysnLCBiLCBibG8sIGJoaSkKICAgICAgICAgICAgZWxpZiB0YWcgPT0gJ2VxdWFsJzoKICAgICAgICAgICAgICAgIGcgPSBzZWxmLl9kdW1wKCcgJywgYSwgYWxvLCBhaGkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bmtub3duIHRhZyAlcicgJSAodGFnLCkpCgogICAgICAgICAgICB5aWVsZCBmcm9tIGcKCiAgICBkZWYgX2R1bXAoc2VsZiwgdGFnLCB4LCBsbywgaGkpOgogICAgICAgICIiIkdlbmVyYXRlIGNvbXBhcmlzb24gcmVzdWx0cyBmb3IgYSBzYW1lLXRhZ2dlZCByYW5nZS4iIiIKICAgICAgICBmb3IgaSBpbiByYW5nZShsbywgaGkpOgogICAgICAgICAgICB5aWVsZCAnJXMgJXMnICUgKHRhZywgeFtpXSkKCiAgICBkZWYgX3BsYWluX3JlcGxhY2Uoc2VsZiwgYSwgYWxvLCBhaGksIGIsIGJsbywgYmhpKToKICAgICAgICBhc3NlcnQgYWxvIDwgYWhpIGFuZCBibG8gPCBiaGkKICAgICAgICAjIGR1bXAgdGhlIHNob3J0ZXIgYmxvY2sgZmlyc3QgLS0gcmVkdWNlcyB0aGUgYnVyZGVuIG9uIHNob3J0LXRlcm0KICAgICAgICAjIG1lbW9yeSBpZiB0aGUgYmxvY2tzIGFyZSBvZiB2ZXJ5IGRpZmZlcmVudCBzaXplcwogICAgICAgIGlmIGJoaSAtIGJsbyA8IGFoaSAtIGFsbzoKICAgICAgICAgICAgZmlyc3QgID0gc2VsZi5fZHVtcCgnKycsIGIsIGJsbywgYmhpKQogICAgICAgICAgICBzZWNvbmQgPSBzZWxmLl9kdW1wKCctJywgYSwgYWxvLCBhaGkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZmlyc3QgID0gc2VsZi5fZHVtcCgnLScsIGEsIGFsbywgYWhpKQogICAgICAgICAgICBzZWNvbmQgPSBzZWxmLl9kdW1wKCcrJywgYiwgYmxvLCBiaGkpCgogICAgICAgIGZvciBnIGluIGZpcnN0LCBzZWNvbmQ6CiAgICAgICAgICAgIHlpZWxkIGZyb20gZwoKICAgIGRlZiBfZmFuY3lfcmVwbGFjZShzZWxmLCBhLCBhbG8sIGFoaSwgYiwgYmxvLCBiaGkpOgogICAgICAgIHIiIiIKICAgICAgICBXaGVuIHJlcGxhY2luZyBvbmUgYmxvY2sgb2YgbGluZXMgd2l0aCBhbm90aGVyLCBzZWFyY2ggdGhlIGJsb2NrcwogICAgICAgIGZvciAqc2ltaWxhciogbGluZXM7IHRoZSBiZXN0LW1hdGNoaW5nIHBhaXIgKGlmIGFueSkgaXMgdXNlZCBhcyBhCiAgICAgICAgc3luY2ggcG9pbnQsIGFuZCBpbnRyYWxpbmUgZGlmZmVyZW5jZSBtYXJraW5nIGlzIGRvbmUgb24gdGhlCiAgICAgICAgc2ltaWxhciBwYWlyLiBMb3RzIG9mIHdvcmssIGJ1dCBvZnRlbiB3b3J0aCBpdC4KCiAgICAgICAgRXhhbXBsZToKCiAgICAgICAgPj4+IGQgPSBEaWZmZXIoKQogICAgICAgID4+PiByZXN1bHRzID0gZC5fZmFuY3lfcmVwbGFjZShbJ2FiY0RlZmdoaUprbFxuJ10sIDAsIDEsCiAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYWJjZGVmR2hpamtsXG4nXSwgMCwgMSkKICAgICAgICA+Pj4gcHJpbnQoJycuam9pbihyZXN1bHRzKSwgZW5kPSIiKQogICAgICAgIC0gYWJjRGVmZ2hpSmtsCiAgICAgICAgPyAgICBeICBeICBeCiAgICAgICAgKyBhYmNkZWZHaGlqa2wKICAgICAgICA/ICAgIF4gIF4gIF4KICAgICAgICAiIiIKCiAgICAgICAgIyBkb24ndCBzeW5jaCB1cCB1bmxlc3MgdGhlIGxpbmVzIGhhdmUgYSBzaW1pbGFyaXR5IHNjb3JlIG9mIGF0CiAgICAgICAgIyBsZWFzdCBjdXRvZmY7IGJlc3RfcmF0aW8gdHJhY2tzIHRoZSBiZXN0IHNjb3JlIHNlZW4gc28gZmFyCiAgICAgICAgYmVzdF9yYXRpbywgY3V0b2ZmID0gMC43NCwgMC43NQogICAgICAgIGNydW5jaGVyID0gU2VxdWVuY2VNYXRjaGVyKHNlbGYuY2hhcmp1bmspCiAgICAgICAgZXFpLCBlcWogPSBOb25lLCBOb25lICAgIyAxc3QgaW5kaWNlcyBvZiBlcXVhbCBsaW5lcyAoaWYgYW55KQoKICAgICAgICAjIHNlYXJjaCBmb3IgdGhlIHBhaXIgdGhhdCBtYXRjaGVzIGJlc3Qgd2l0aG91dCBiZWluZyBpZGVudGljYWwKICAgICAgICAjIChpZGVudGljYWwgbGluZXMgbXVzdCBiZSBqdW5rIGxpbmVzLCAmIHdlIGRvbid0IHdhbnQgdG8gc3luY2ggdXAKICAgICAgICAjIG9uIGp1bmsgLS0gdW5sZXNzIHdlIGhhdmUgdG8pCiAgICAgICAgZm9yIGogaW4gcmFuZ2UoYmxvLCBiaGkpOgogICAgICAgICAgICBiaiA9IGJbal0KICAgICAgICAgICAgY3J1bmNoZXIuc2V0X3NlcTIoYmopCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGFsbywgYWhpKToKICAgICAgICAgICAgICAgIGFpID0gYVtpXQogICAgICAgICAgICAgICAgaWYgYWkgPT0gYmo6CiAgICAgICAgICAgICAgICAgICAgaWYgZXFpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGVxaSwgZXFqID0gaSwgagogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBjcnVuY2hlci5zZXRfc2VxMShhaSkKICAgICAgICAgICAgICAgICMgY29tcHV0aW5nIHNpbWlsYXJpdHkgaXMgZXhwZW5zaXZlLCBzbyB1c2UgdGhlIHF1aWNrCiAgICAgICAgICAgICAgICAjIHVwcGVyIGJvdW5kcyBmaXJzdCAtLSBoYXZlIHNlZW4gdGhpcyBzcGVlZCB1cCBtZXNzeQogICAgICAgICAgICAgICAgIyBjb21wYXJlcyBieSBhIGZhY3RvciBvZiAzLgogICAgICAgICAgICAgICAgIyBub3RlIHRoYXQgcmF0aW8oKSBpcyBvbmx5IGV4cGVuc2l2ZSB0byBjb21wdXRlIHRoZSBmaXJzdAogICAgICAgICAgICAgICAgIyB0aW1lIGl0J3MgY2FsbGVkIG9uIGEgc2VxdWVuY2UgcGFpcjsgdGhlIGV4cGVuc2l2ZSBwYXJ0CiAgICAgICAgICAgICAgICAjIG9mIHRoZSBjb21wdXRhdGlvbiBpcyBjYWNoZWQgYnkgY3J1bmNoZXIKICAgICAgICAgICAgICAgIGlmIGNydW5jaGVyLnJlYWxfcXVpY2tfcmF0aW8oKSA+IGJlc3RfcmF0aW8gYW5kIFwKICAgICAgICAgICAgICAgICAgICAgIGNydW5jaGVyLnF1aWNrX3JhdGlvKCkgPiBiZXN0X3JhdGlvIGFuZCBcCiAgICAgICAgICAgICAgICAgICAgICBjcnVuY2hlci5yYXRpbygpID4gYmVzdF9yYXRpbzoKICAgICAgICAgICAgICAgICAgICBiZXN0X3JhdGlvLCBiZXN0X2ksIGJlc3RfaiA9IGNydW5jaGVyLnJhdGlvKCksIGksIGoKICAgICAgICBpZiBiZXN0X3JhdGlvIDwgY3V0b2ZmOgogICAgICAgICAgICAjIG5vIG5vbi1pZGVudGljYWwgInByZXR0eSBjbG9zZSIgcGFpcgogICAgICAgICAgICBpZiBlcWkgaXMgTm9uZToKICAgICAgICAgICAgICAgICMgbm8gaWRlbnRpY2FsIHBhaXIgZWl0aGVyIC0tIHRyZWF0IGl0IGFzIGEgc3RyYWlnaHQgcmVwbGFjZQogICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9wbGFpbl9yZXBsYWNlKGEsIGFsbywgYWhpLCBiLCBibG8sIGJoaSkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAjIG5vIGNsb3NlIHBhaXIsIGJ1dCBhbiBpZGVudGljYWwgcGFpciAtLSBzeW5jaCB1cCBvbiB0aGF0CiAgICAgICAgICAgIGJlc3RfaSwgYmVzdF9qLCBiZXN0X3JhdGlvID0gZXFpLCBlcWosIDEuMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgdGhlcmUncyBhIGNsb3NlIHBhaXIsIHNvIGZvcmdldCB0aGUgaWRlbnRpY2FsIHBhaXIgKGlmIGFueSkKICAgICAgICAgICAgZXFpID0gTm9uZQoKICAgICAgICAjIGFbYmVzdF9pXSB2ZXJ5IHNpbWlsYXIgdG8gYltiZXN0X2pdOyBlcWkgaXMgTm9uZSBpZmYgdGhleSdyZSBub3QKICAgICAgICAjIGlkZW50aWNhbAoKICAgICAgICAjIHB1bXAgb3V0IGRpZmZzIGZyb20gYmVmb3JlIHRoZSBzeW5jaCBwb2ludAogICAgICAgIHlpZWxkIGZyb20gc2VsZi5fZmFuY3lfaGVscGVyKGEsIGFsbywgYmVzdF9pLCBiLCBibG8sIGJlc3RfaikKCiAgICAgICAgIyBkbyBpbnRyYWxpbmUgbWFya2luZyBvbiB0aGUgc3luY2ggcGFpcgogICAgICAgIGFlbHQsIGJlbHQgPSBhW2Jlc3RfaV0sIGJbYmVzdF9qXQogICAgICAgIGlmIGVxaSBpcyBOb25lOgogICAgICAgICAgICAjIHB1bXAgb3V0IGEgJy0nLCAnPycsICcrJywgJz8nIHF1YWQgZm9yIHRoZSBzeW5jaGVkIGxpbmVzCiAgICAgICAgICAgIGF0YWdzID0gYnRhZ3MgPSAiIgogICAgICAgICAgICBjcnVuY2hlci5zZXRfc2VxcyhhZWx0LCBiZWx0KQogICAgICAgICAgICBmb3IgdGFnLCBhaTEsIGFpMiwgYmoxLCBiajIgaW4gY3J1bmNoZXIuZ2V0X29wY29kZXMoKToKICAgICAgICAgICAgICAgIGxhLCBsYiA9IGFpMiAtIGFpMSwgYmoyIC0gYmoxCiAgICAgICAgICAgICAgICBpZiB0YWcgPT0gJ3JlcGxhY2UnOgogICAgICAgICAgICAgICAgICAgIGF0YWdzICs9ICdeJyAqIGxhCiAgICAgICAgICAgICAgICAgICAgYnRhZ3MgKz0gJ14nICogbGIKICAgICAgICAgICAgICAgIGVsaWYgdGFnID09ICdkZWxldGUnOgogICAgICAgICAgICAgICAgICAgIGF0YWdzICs9ICctJyAqIGxhCiAgICAgICAgICAgICAgICBlbGlmIHRhZyA9PSAnaW5zZXJ0JzoKICAgICAgICAgICAgICAgICAgICBidGFncyArPSAnKycgKiBsYgogICAgICAgICAgICAgICAgZWxpZiB0YWcgPT0gJ2VxdWFsJzoKICAgICAgICAgICAgICAgICAgICBhdGFncyArPSAnICcgKiBsYQogICAgICAgICAgICAgICAgICAgIGJ0YWdzICs9ICcgJyAqIGxiCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Vua25vd24gdGFnICVyJyAlICh0YWcsKSkKICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9xZm9ybWF0KGFlbHQsIGJlbHQsIGF0YWdzLCBidGFncykKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIHRoZSBzeW5jaCBwYWlyIGlzIGlkZW50aWNhbAogICAgICAgICAgICB5aWVsZCAnICAnICsgYWVsdAoKICAgICAgICAjIHB1bXAgb3V0IGRpZmZzIGZyb20gYWZ0ZXIgdGhlIHN5bmNoIHBvaW50CiAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9mYW5jeV9oZWxwZXIoYSwgYmVzdF9pKzEsIGFoaSwgYiwgYmVzdF9qKzEsIGJoaSkKCiAgICBkZWYgX2ZhbmN5X2hlbHBlcihzZWxmLCBhLCBhbG8sIGFoaSwgYiwgYmxvLCBiaGkpOgogICAgICAgIGcgPSBbXQogICAgICAgIGlmIGFsbyA8IGFoaToKICAgICAgICAgICAgaWYgYmxvIDwgYmhpOgogICAgICAgICAgICAgICAgZyA9IHNlbGYuX2ZhbmN5X3JlcGxhY2UoYSwgYWxvLCBhaGksIGIsIGJsbywgYmhpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZyA9IHNlbGYuX2R1bXAoJy0nLCBhLCBhbG8sIGFoaSkKICAgICAgICBlbGlmIGJsbyA8IGJoaToKICAgICAgICAgICAgZyA9IHNlbGYuX2R1bXAoJysnLCBiLCBibG8sIGJoaSkKCiAgICAgICAgeWllbGQgZnJvbSBnCgogICAgZGVmIF9xZm9ybWF0KHNlbGYsIGFsaW5lLCBibGluZSwgYXRhZ3MsIGJ0YWdzKToKICAgICAgICByIiIiCiAgICAgICAgRm9ybWF0ICI/IiBvdXRwdXQgYW5kIGRlYWwgd2l0aCB0YWJzLgoKICAgICAgICBFeGFtcGxlOgoKICAgICAgICA+Pj4gZCA9IERpZmZlcigpCiAgICAgICAgPj4+IHJlc3VsdHMgPSBkLl9xZm9ybWF0KCdcdGFiY0RlZmdoaUprbFxuJywgJ1x0YWJjZGVmR2hpamtsXG4nLAogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAnICBeIF4gIF4gICAgICAnLCAnICBeIF4gIF4gICAgICAnKQogICAgICAgID4+PiBmb3IgbGluZSBpbiByZXN1bHRzOiBwcmludChyZXByKGxpbmUpKQogICAgICAgIC4uLgogICAgICAgICctIFx0YWJjRGVmZ2hpSmtsXG4nCiAgICAgICAgJz8gXHQgXiBeICBeXG4nCiAgICAgICAgJysgXHRhYmNkZWZHaGlqa2xcbicKICAgICAgICAnPyBcdCBeIF4gIF5cbicKICAgICAgICAiIiIKICAgICAgICBhdGFncyA9IF9rZWVwX29yaWdpbmFsX3dzKGFsaW5lLCBhdGFncykucnN0cmlwKCkKICAgICAgICBidGFncyA9IF9rZWVwX29yaWdpbmFsX3dzKGJsaW5lLCBidGFncykucnN0cmlwKCkKCiAgICAgICAgeWllbGQgIi0gIiArIGFsaW5lCiAgICAgICAgaWYgYXRhZ3M6CiAgICAgICAgICAgIHlpZWxkIGYiPyB7YXRhZ3N9XG4iCgogICAgICAgIHlpZWxkICIrICIgKyBibGluZQogICAgICAgIGlmIGJ0YWdzOgogICAgICAgICAgICB5aWVsZCBmIj8ge2J0YWdzfVxuIgoKIyBXaXRoIHJlc3BlY3QgdG8ganVuaywgYW4gZWFybGllciB2ZXJzaW9uIG9mIG5kaWZmIHNpbXBseSByZWZ1c2VkIHRvCiMgKnN0YXJ0KiBhIG1hdGNoIHdpdGggYSBqdW5rIGVsZW1lbnQuICBUaGUgcmVzdWx0IHdhcyBjYXNlcyBsaWtlIHRoaXM6CiMgICAgIGJlZm9yZTogcHJpdmF0ZSBUaHJlYWQgY3VycmVudFRocmVhZDsKIyAgICAgYWZ0ZXI6ICBwcml2YXRlIHZvbGF0aWxlIFRocmVhZCBjdXJyZW50VGhyZWFkOwojIElmIHlvdSBjb25zaWRlciB3aGl0ZXNwYWNlIHRvIGJlIGp1bmssIHRoZSBsb25nZXN0IGNvbnRpZ3VvdXMgbWF0Y2gKIyBub3Qgc3RhcnRpbmcgd2l0aCBqdW5rIGlzICJlIFRocmVhZCBjdXJyZW50VGhyZWFkIi4gIFNvIG5kaWZmIHJlcG9ydGVkCiMgdGhhdCAiZSB2b2xhdGlsIiB3YXMgaW5zZXJ0ZWQgYmV0d2VlbiB0aGUgJ3QnIGFuZCB0aGUgJ2UnIGluICJwcml2YXRlIi4KIyBXaGlsZSBhbiBhY2N1cmF0ZSB2aWV3LCB0byBwZW9wbGUgdGhhdCdzIGFic3VyZC4gIFRoZSBjdXJyZW50IHZlcnNpb24KIyBsb29rcyBmb3IgbWF0Y2hpbmcgYmxvY2tzIHRoYXQgYXJlIGVudGlyZWx5IGp1bmstZnJlZSwgdGhlbiBleHRlbmRzIHRoZQojIGxvbmdlc3Qgb25lIG9mIHRob3NlIGFzIGZhciBhcyBwb3NzaWJsZSBidXQgb25seSB3aXRoIG1hdGNoaW5nIGp1bmsuCiMgU28gbm93ICJjdXJyZW50VGhyZWFkIiBpcyBtYXRjaGVkLCB0aGVuIGV4dGVuZGVkIHRvIHN1Y2sgdXAgdGhlCiMgcHJlY2VkaW5nIGJsYW5rOyB0aGVuICJwcml2YXRlIiBpcyBtYXRjaGVkLCBhbmQgZXh0ZW5kZWQgdG8gc3VjayB1cCB0aGUKIyBmb2xsb3dpbmcgYmxhbms7IHRoZW4gIlRocmVhZCIgaXMgbWF0Y2hlZDsgYW5kIGZpbmFsbHkgbmRpZmYgcmVwb3J0cwojIHRoYXQgInZvbGF0aWxlICIgd2FzIGluc2VydGVkIGJlZm9yZSAiVGhyZWFkIi4gIFRoZSBvbmx5IHF1aWJibGUKIyByZW1haW5pbmcgaXMgdGhhdCBwZXJoYXBzIGl0IHdhcyByZWFsbHkgdGhlIGNhc2UgdGhhdCAiIHZvbGF0aWxlIgojIHdhcyBpbnNlcnRlZCBhZnRlciAicHJpdmF0ZSIuICBJIGNhbiBsaXZlIHdpdGggdGhhdCA8d2luaz4uCgppbXBvcnQgcmUKCmRlZiBJU19MSU5FX0pVTksobGluZSwgcGF0PXJlLmNvbXBpbGUociJccyooPzojXHMqKT8kIikubWF0Y2gpOgogICAgciIiIgogICAgUmV0dXJuIFRydWUgZm9yIGlnbm9yYWJsZSBsaW5lOiBpZmYgYGxpbmVgIGlzIGJsYW5rIG9yIGNvbnRhaW5zIGEgc2luZ2xlICcjJy4KCiAgICBFeGFtcGxlczoKCiAgICA+Pj4gSVNfTElORV9KVU5LKCdcbicpCiAgICBUcnVlCiAgICA+Pj4gSVNfTElORV9KVU5LKCcgICMgICBcbicpCiAgICBUcnVlCiAgICA+Pj4gSVNfTElORV9KVU5LKCdoZWxsb1xuJykKICAgIEZhbHNlCiAgICAiIiIKCiAgICByZXR1cm4gcGF0KGxpbmUpIGlzIG5vdCBOb25lCgpkZWYgSVNfQ0hBUkFDVEVSX0pVTksoY2gsIHdzPSIgXHQiKToKICAgIHIiIiIKICAgIFJldHVybiBUcnVlIGZvciBpZ25vcmFibGUgY2hhcmFjdGVyOiBpZmYgYGNoYCBpcyBhIHNwYWNlIG9yIHRhYi4KCiAgICBFeGFtcGxlczoKCiAgICA+Pj4gSVNfQ0hBUkFDVEVSX0pVTksoJyAnKQogICAgVHJ1ZQogICAgPj4+IElTX0NIQVJBQ1RFUl9KVU5LKCdcdCcpCiAgICBUcnVlCiAgICA+Pj4gSVNfQ0hBUkFDVEVSX0pVTksoJ1xuJykKICAgIEZhbHNlCiAgICA+Pj4gSVNfQ0hBUkFDVEVSX0pVTksoJ3gnKQogICAgRmFsc2UKICAgICIiIgoKICAgIHJldHVybiBjaCBpbiB3cwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgIFVuaWZpZWQgRGlmZgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmRlZiBfZm9ybWF0X3JhbmdlX3VuaWZpZWQoc3RhcnQsIHN0b3ApOgogICAgJ0NvbnZlcnQgcmFuZ2UgdG8gdGhlICJlZCIgZm9ybWF0JwogICAgIyBQZXIgdGhlIGRpZmYgc3BlYyBhdCBodHRwOi8vd3d3LnVuaXgub3JnL3NpbmdsZV91bml4X3NwZWNpZmljYXRpb24vCiAgICBiZWdpbm5pbmcgPSBzdGFydCArIDEgICAgICMgbGluZXMgc3RhcnQgbnVtYmVyaW5nIHdpdGggb25lCiAgICBsZW5ndGggPSBzdG9wIC0gc3RhcnQKICAgIGlmIGxlbmd0aCA9PSAxOgogICAgICAgIHJldHVybiAne30nLmZvcm1hdChiZWdpbm5pbmcpCiAgICBpZiBub3QgbGVuZ3RoOgogICAgICAgIGJlZ2lubmluZyAtPSAxICAgICAgICAjIGVtcHR5IHJhbmdlcyBiZWdpbiBhdCBsaW5lIGp1c3QgYmVmb3JlIHRoZSByYW5nZQogICAgcmV0dXJuICd7fSx7fScuZm9ybWF0KGJlZ2lubmluZywgbGVuZ3RoKQoKZGVmIHVuaWZpZWRfZGlmZihhLCBiLCBmcm9tZmlsZT0nJywgdG9maWxlPScnLCBmcm9tZmlsZWRhdGU9JycsCiAgICAgICAgICAgICAgICAgdG9maWxlZGF0ZT0nJywgbj0zLCBsaW5ldGVybT0nXG4nKToKICAgIHIiIiIKICAgIENvbXBhcmUgdHdvIHNlcXVlbmNlcyBvZiBsaW5lczsgZ2VuZXJhdGUgdGhlIGRlbHRhIGFzIGEgdW5pZmllZCBkaWZmLgoKICAgIFVuaWZpZWQgZGlmZnMgYXJlIGEgY29tcGFjdCB3YXkgb2Ygc2hvd2luZyBsaW5lIGNoYW5nZXMgYW5kIGEgZmV3CiAgICBsaW5lcyBvZiBjb250ZXh0LiAgVGhlIG51bWJlciBvZiBjb250ZXh0IGxpbmVzIGlzIHNldCBieSAnbicgd2hpY2gKICAgIGRlZmF1bHRzIHRvIHRocmVlLgoKICAgIEJ5IGRlZmF1bHQsIHRoZSBkaWZmIGNvbnRyb2wgbGluZXMgKHRob3NlIHdpdGggLS0tLCArKyssIG9yIEBAKSBhcmUKICAgIGNyZWF0ZWQgd2l0aCBhIHRyYWlsaW5nIG5ld2xpbmUuICBUaGlzIGlzIGhlbHBmdWwgc28gdGhhdCBpbnB1dHMKICAgIGNyZWF0ZWQgZnJvbSBmaWxlLnJlYWRsaW5lcygpIHJlc3VsdCBpbiBkaWZmcyB0aGF0IGFyZSBzdWl0YWJsZSBmb3IKICAgIGZpbGUud3JpdGVsaW5lcygpIHNpbmNlIGJvdGggdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBoYXZlIHRyYWlsaW5nCiAgICBuZXdsaW5lcy4KCiAgICBGb3IgaW5wdXRzIHRoYXQgZG8gbm90IGhhdmUgdHJhaWxpbmcgbmV3bGluZXMsIHNldCB0aGUgbGluZXRlcm0KICAgIGFyZ3VtZW50IHRvICIiIHNvIHRoYXQgdGhlIG91dHB1dCB3aWxsIGJlIHVuaWZvcm1seSBuZXdsaW5lIGZyZWUuCgogICAgVGhlIHVuaWRpZmYgZm9ybWF0IG5vcm1hbGx5IGhhcyBhIGhlYWRlciBmb3IgZmlsZW5hbWVzIGFuZCBtb2RpZmljYXRpb24KICAgIHRpbWVzLiAgQW55IG9yIGFsbCBvZiB0aGVzZSBtYXkgYmUgc3BlY2lmaWVkIHVzaW5nIHN0cmluZ3MgZm9yCiAgICAnZnJvbWZpbGUnLCAndG9maWxlJywgJ2Zyb21maWxlZGF0ZScsIGFuZCAndG9maWxlZGF0ZScuCiAgICBUaGUgbW9kaWZpY2F0aW9uIHRpbWVzIGFyZSBub3JtYWxseSBleHByZXNzZWQgaW4gdGhlIElTTyA4NjAxIGZvcm1hdC4KCiAgICBFeGFtcGxlOgoKICAgID4+PiBmb3IgbGluZSBpbiB1bmlmaWVkX2RpZmYoJ29uZSB0d28gdGhyZWUgZm91cicuc3BsaXQoKSwKICAgIC4uLiAgICAgICAgICAgICAnemVybyBvbmUgdHJlZSBmb3VyJy5zcGxpdCgpLCAnT3JpZ2luYWwnLCAnQ3VycmVudCcsCiAgICAuLi4gICAgICAgICAgICAgJzIwMDUtMDEtMjYgMjM6MzA6NTAnLCAnMjAxMC0wNC0wMiAxMDoyMDo1MicsCiAgICAuLi4gICAgICAgICAgICAgbGluZXRlcm09JycpOgogICAgLi4uICAgICBwcmludChsaW5lKSAgICAgICAgICAgICAgICAgIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKICAgIC0tLSBPcmlnaW5hbCAgICAgICAgMjAwNS0wMS0yNiAyMzozMDo1MAogICAgKysrIEN1cnJlbnQgICAgICAgICAyMDEwLTA0LTAyIDEwOjIwOjUyCiAgICBAQCAtMSw0ICsxLDQgQEAKICAgICt6ZXJvCiAgICAgb25lCiAgICAtdHdvCiAgICAtdGhyZWUKICAgICt0cmVlCiAgICAgZm91cgogICAgIiIiCgogICAgX2NoZWNrX3R5cGVzKGEsIGIsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbGluZXRlcm0pCiAgICBzdGFydGVkID0gRmFsc2UKICAgIGZvciBncm91cCBpbiBTZXF1ZW5jZU1hdGNoZXIoTm9uZSxhLGIpLmdldF9ncm91cGVkX29wY29kZXMobik6CiAgICAgICAgaWYgbm90IHN0YXJ0ZWQ6CiAgICAgICAgICAgIHN0YXJ0ZWQgPSBUcnVlCiAgICAgICAgICAgIGZyb21kYXRlID0gJ1x0e30nLmZvcm1hdChmcm9tZmlsZWRhdGUpIGlmIGZyb21maWxlZGF0ZSBlbHNlICcnCiAgICAgICAgICAgIHRvZGF0ZSA9ICdcdHt9Jy5mb3JtYXQodG9maWxlZGF0ZSkgaWYgdG9maWxlZGF0ZSBlbHNlICcnCiAgICAgICAgICAgIHlpZWxkICctLS0ge317fXt9Jy5mb3JtYXQoZnJvbWZpbGUsIGZyb21kYXRlLCBsaW5ldGVybSkKICAgICAgICAgICAgeWllbGQgJysrKyB7fXt9e30nLmZvcm1hdCh0b2ZpbGUsIHRvZGF0ZSwgbGluZXRlcm0pCgogICAgICAgIGZpcnN0LCBsYXN0ID0gZ3JvdXBbMF0sIGdyb3VwWy0xXQogICAgICAgIGZpbGUxX3JhbmdlID0gX2Zvcm1hdF9yYW5nZV91bmlmaWVkKGZpcnN0WzFdLCBsYXN0WzJdKQogICAgICAgIGZpbGUyX3JhbmdlID0gX2Zvcm1hdF9yYW5nZV91bmlmaWVkKGZpcnN0WzNdLCBsYXN0WzRdKQogICAgICAgIHlpZWxkICdAQCAte30gK3t9IEBAe30nLmZvcm1hdChmaWxlMV9yYW5nZSwgZmlsZTJfcmFuZ2UsIGxpbmV0ZXJtKQoKICAgICAgICBmb3IgdGFnLCBpMSwgaTIsIGoxLCBqMiBpbiBncm91cDoKICAgICAgICAgICAgaWYgdGFnID09ICdlcXVhbCc6CiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBhW2kxOmkyXToKICAgICAgICAgICAgICAgICAgICB5aWVsZCAnICcgKyBsaW5lCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiB0YWcgaW4geydyZXBsYWNlJywgJ2RlbGV0ZSd9OgogICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gYVtpMTppMl06CiAgICAgICAgICAgICAgICAgICAgeWllbGQgJy0nICsgbGluZQogICAgICAgICAgICBpZiB0YWcgaW4geydyZXBsYWNlJywgJ2luc2VydCd9OgogICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gYltqMTpqMl06CiAgICAgICAgICAgICAgICAgICAgeWllbGQgJysnICsgbGluZQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgIENvbnRleHQgRGlmZgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmRlZiBfZm9ybWF0X3JhbmdlX2NvbnRleHQoc3RhcnQsIHN0b3ApOgogICAgJ0NvbnZlcnQgcmFuZ2UgdG8gdGhlICJlZCIgZm9ybWF0JwogICAgIyBQZXIgdGhlIGRpZmYgc3BlYyBhdCBodHRwOi8vd3d3LnVuaXgub3JnL3NpbmdsZV91bml4X3NwZWNpZmljYXRpb24vCiAgICBiZWdpbm5pbmcgPSBzdGFydCArIDEgICAgICMgbGluZXMgc3RhcnQgbnVtYmVyaW5nIHdpdGggb25lCiAgICBsZW5ndGggPSBzdG9wIC0gc3RhcnQKICAgIGlmIG5vdCBsZW5ndGg6CiAgICAgICAgYmVnaW5uaW5nIC09IDEgICAgICAgICMgZW1wdHkgcmFuZ2VzIGJlZ2luIGF0IGxpbmUganVzdCBiZWZvcmUgdGhlIHJhbmdlCiAgICBpZiBsZW5ndGggPD0gMToKICAgICAgICByZXR1cm4gJ3t9Jy5mb3JtYXQoYmVnaW5uaW5nKQogICAgcmV0dXJuICd7fSx7fScuZm9ybWF0KGJlZ2lubmluZywgYmVnaW5uaW5nICsgbGVuZ3RoIC0gMSkKCiMgU2VlIGh0dHA6Ly93d3cudW5peC5vcmcvc2luZ2xlX3VuaXhfc3BlY2lmaWNhdGlvbi8KZGVmIGNvbnRleHRfZGlmZihhLCBiLCBmcm9tZmlsZT0nJywgdG9maWxlPScnLAogICAgICAgICAgICAgICAgIGZyb21maWxlZGF0ZT0nJywgdG9maWxlZGF0ZT0nJywgbj0zLCBsaW5ldGVybT0nXG4nKToKICAgIHIiIiIKICAgIENvbXBhcmUgdHdvIHNlcXVlbmNlcyBvZiBsaW5lczsgZ2VuZXJhdGUgdGhlIGRlbHRhIGFzIGEgY29udGV4dCBkaWZmLgoKICAgIENvbnRleHQgZGlmZnMgYXJlIGEgY29tcGFjdCB3YXkgb2Ygc2hvd2luZyBsaW5lIGNoYW5nZXMgYW5kIGEgZmV3CiAgICBsaW5lcyBvZiBjb250ZXh0LiAgVGhlIG51bWJlciBvZiBjb250ZXh0IGxpbmVzIGlzIHNldCBieSAnbicgd2hpY2gKICAgIGRlZmF1bHRzIHRvIHRocmVlLgoKICAgIEJ5IGRlZmF1bHQsIHRoZSBkaWZmIGNvbnRyb2wgbGluZXMgKHRob3NlIHdpdGggKioqIG9yIC0tLSkgYXJlCiAgICBjcmVhdGVkIHdpdGggYSB0cmFpbGluZyBuZXdsaW5lLiAgVGhpcyBpcyBoZWxwZnVsIHNvIHRoYXQgaW5wdXRzCiAgICBjcmVhdGVkIGZyb20gZmlsZS5yZWFkbGluZXMoKSByZXN1bHQgaW4gZGlmZnMgdGhhdCBhcmUgc3VpdGFibGUgZm9yCiAgICBmaWxlLndyaXRlbGluZXMoKSBzaW5jZSBib3RoIHRoZSBpbnB1dHMgYW5kIG91dHB1dHMgaGF2ZSB0cmFpbGluZwogICAgbmV3bGluZXMuCgogICAgRm9yIGlucHV0cyB0aGF0IGRvIG5vdCBoYXZlIHRyYWlsaW5nIG5ld2xpbmVzLCBzZXQgdGhlIGxpbmV0ZXJtCiAgICBhcmd1bWVudCB0byAiIiBzbyB0aGF0IHRoZSBvdXRwdXQgd2lsbCBiZSB1bmlmb3JtbHkgbmV3bGluZSBmcmVlLgoKICAgIFRoZSBjb250ZXh0IGRpZmYgZm9ybWF0IG5vcm1hbGx5IGhhcyBhIGhlYWRlciBmb3IgZmlsZW5hbWVzIGFuZAogICAgbW9kaWZpY2F0aW9uIHRpbWVzLiAgQW55IG9yIGFsbCBvZiB0aGVzZSBtYXkgYmUgc3BlY2lmaWVkIHVzaW5nCiAgICBzdHJpbmdzIGZvciAnZnJvbWZpbGUnLCAndG9maWxlJywgJ2Zyb21maWxlZGF0ZScsIGFuZCAndG9maWxlZGF0ZScuCiAgICBUaGUgbW9kaWZpY2F0aW9uIHRpbWVzIGFyZSBub3JtYWxseSBleHByZXNzZWQgaW4gdGhlIElTTyA4NjAxIGZvcm1hdC4KICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBzdHJpbmdzIGRlZmF1bHQgdG8gYmxhbmtzLgoKICAgIEV4YW1wbGU6CgogICAgPj4+IHByaW50KCcnLmpvaW4oY29udGV4dF9kaWZmKCdvbmVcbnR3b1xudGhyZWVcbmZvdXJcbicuc3BsaXRsaW5lcyhUcnVlKSwKICAgIC4uLiAgICAgICAnemVyb1xub25lXG50cmVlXG5mb3VyXG4nLnNwbGl0bGluZXMoVHJ1ZSksICdPcmlnaW5hbCcsICdDdXJyZW50JykpLAogICAgLi4uICAgICAgIGVuZD0iIikKICAgICoqKiBPcmlnaW5hbAogICAgLS0tIEN1cnJlbnQKICAgICoqKioqKioqKioqKioqKgogICAgKioqIDEsNCAqKioqCiAgICAgIG9uZQogICAgISB0d28KICAgICEgdGhyZWUKICAgICAgZm91cgogICAgLS0tIDEsNCAtLS0tCiAgICArIHplcm8KICAgICAgb25lCiAgICAhIHRyZWUKICAgICAgZm91cgogICAgIiIiCgogICAgX2NoZWNrX3R5cGVzKGEsIGIsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbGluZXRlcm0pCiAgICBwcmVmaXggPSBkaWN0KGluc2VydD0nKyAnLCBkZWxldGU9Jy0gJywgcmVwbGFjZT0nISAnLCBlcXVhbD0nICAnKQogICAgc3RhcnRlZCA9IEZhbHNlCiAgICBmb3IgZ3JvdXAgaW4gU2VxdWVuY2VNYXRjaGVyKE5vbmUsYSxiKS5nZXRfZ3JvdXBlZF9vcGNvZGVzKG4pOgogICAgICAgIGlmIG5vdCBzdGFydGVkOgogICAgICAgICAgICBzdGFydGVkID0gVHJ1ZQogICAgICAgICAgICBmcm9tZGF0ZSA9ICdcdHt9Jy5mb3JtYXQoZnJvbWZpbGVkYXRlKSBpZiBmcm9tZmlsZWRhdGUgZWxzZSAnJwogICAgICAgICAgICB0b2RhdGUgPSAnXHR7fScuZm9ybWF0KHRvZmlsZWRhdGUpIGlmIHRvZmlsZWRhdGUgZWxzZSAnJwogICAgICAgICAgICB5aWVsZCAnKioqIHt9e317fScuZm9ybWF0KGZyb21maWxlLCBmcm9tZGF0ZSwgbGluZXRlcm0pCiAgICAgICAgICAgIHlpZWxkICctLS0ge317fXt9Jy5mb3JtYXQodG9maWxlLCB0b2RhdGUsIGxpbmV0ZXJtKQoKICAgICAgICBmaXJzdCwgbGFzdCA9IGdyb3VwWzBdLCBncm91cFstMV0KICAgICAgICB5aWVsZCAnKioqKioqKioqKioqKioqJyArIGxpbmV0ZXJtCgogICAgICAgIGZpbGUxX3JhbmdlID0gX2Zvcm1hdF9yYW5nZV9jb250ZXh0KGZpcnN0WzFdLCBsYXN0WzJdKQogICAgICAgIHlpZWxkICcqKioge30gKioqKnt9Jy5mb3JtYXQoZmlsZTFfcmFuZ2UsIGxpbmV0ZXJtKQoKICAgICAgICBpZiBhbnkodGFnIGluIHsncmVwbGFjZScsICdkZWxldGUnfSBmb3IgdGFnLCBfLCBfLCBfLCBfIGluIGdyb3VwKToKICAgICAgICAgICAgZm9yIHRhZywgaTEsIGkyLCBfLCBfIGluIGdyb3VwOgogICAgICAgICAgICAgICAgaWYgdGFnICE9ICdpbnNlcnQnOgogICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGFbaTE6aTJdOgogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwcmVmaXhbdGFnXSArIGxpbmUKCiAgICAgICAgZmlsZTJfcmFuZ2UgPSBfZm9ybWF0X3JhbmdlX2NvbnRleHQoZmlyc3RbM10sIGxhc3RbNF0pCiAgICAgICAgeWllbGQgJy0tLSB7fSAtLS0te30nLmZvcm1hdChmaWxlMl9yYW5nZSwgbGluZXRlcm0pCgogICAgICAgIGlmIGFueSh0YWcgaW4geydyZXBsYWNlJywgJ2luc2VydCd9IGZvciB0YWcsIF8sIF8sIF8sIF8gaW4gZ3JvdXApOgogICAgICAgICAgICBmb3IgdGFnLCBfLCBfLCBqMSwgajIgaW4gZ3JvdXA6CiAgICAgICAgICAgICAgICBpZiB0YWcgIT0gJ2RlbGV0ZSc6CiAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gYltqMTpqMl06CiAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHByZWZpeFt0YWddICsgbGluZQoKZGVmIF9jaGVja190eXBlcyhhLCBiLCAqYXJncyk6CiAgICAjIENoZWNraW5nIHR5cGVzIGlzIHdlaXJkLCBidXQgdGhlIGFsdGVybmF0aXZlIGlzIGdhcmJsZWQgb3V0cHV0IHdoZW4KICAgICMgc29tZW9uZSBwYXNzZXMgbWl4ZWQgYnl0ZXMgYW5kIHN0ciB0byB7dW5pZmllZCxjb250ZXh0fV9kaWZmKCkuIEUuZy4KICAgICMgd2l0aG91dCB0aGlzIGNoZWNrLCBwYXNzaW5nIGZpbGVuYW1lcyBhcyBieXRlcyByZXN1bHRzIGluIG91dHB1dCBsaWtlCiAgICAjICAgLS0tIGInb2xkZmlsZS50eHQnCiAgICAjICAgKysrIGInbmV3ZmlsZS50eHQnCiAgICAjIGJlY2F1c2Ugb2YgaG93IHN0ci5mb3JtYXQoKSBpbmNvcnBvcmF0ZXMgYnl0ZXMgb2JqZWN0cy4KICAgIGlmIGEgYW5kIG5vdCBpc2luc3RhbmNlKGFbMF0sIHN0cik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdsaW5lcyB0byBjb21wYXJlIG11c3QgYmUgc3RyLCBub3QgJXMgKCVyKScgJQogICAgICAgICAgICAgICAgICAgICAgICAodHlwZShhWzBdKS5fX25hbWVfXywgYVswXSkpCiAgICBpZiBiIGFuZCBub3QgaXNpbnN0YW5jZShiWzBdLCBzdHIpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignbGluZXMgdG8gY29tcGFyZSBtdXN0IGJlIHN0ciwgbm90ICVzICglciknICUKICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUoYlswXSkuX19uYW1lX18sIGJbMF0pKQogICAgZm9yIGFyZyBpbiBhcmdzOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZywgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdhbGwgYXJndW1lbnRzIG11c3QgYmUgc3RyLCBub3Q6ICVyJyAlIChhcmcsKSkKCmRlZiBkaWZmX2J5dGVzKGRmdW5jLCBhLCBiLCBmcm9tZmlsZT1iJycsIHRvZmlsZT1iJycsCiAgICAgICAgICAgICAgIGZyb21maWxlZGF0ZT1iJycsIHRvZmlsZWRhdGU9YicnLCBuPTMsIGxpbmV0ZXJtPWInXG4nKToKICAgIHIiIiIKICAgIENvbXBhcmUgYGFgIGFuZCBgYmAsIHR3byBzZXF1ZW5jZXMgb2YgbGluZXMgcmVwcmVzZW50ZWQgYXMgYnl0ZXMgcmF0aGVyCiAgICB0aGFuIHN0ci4gVGhpcyBpcyBhIHdyYXBwZXIgZm9yIGBkZnVuY2AsIHdoaWNoIGlzIHR5cGljYWxseSBlaXRoZXIKICAgIHVuaWZpZWRfZGlmZigpIG9yIGNvbnRleHRfZGlmZigpLiBJbnB1dHMgYXJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvCiAgICBzdHJpbmdzIHNvIHRoYXQgYGRmdW5jYCBvbmx5IGhhcyB0byB3b3JyeSBhYm91dCBzdHJpbmdzLCBhbmQgZW5jb2RlZAogICAgYmFjayB0byBieXRlcyBvbiByZXR1cm4uIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGNvbXBhcmUgZmlsZXMgd2l0aAogICAgdW5rbm93biBvciBpbmNvbnNpc3RlbnQgZW5jb2RpbmcuIEFsbCBvdGhlciBpbnB1dHMgKGV4Y2VwdCBgbmApIG11c3QgYmUKICAgIGJ5dGVzIHJhdGhlciB0aGFuIHN0ci4KICAgICIiIgogICAgZGVmIGRlY29kZShzKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZXJyOgogICAgICAgICAgICBtc2cgPSAoJ2FsbCBhcmd1bWVudHMgbXVzdCBiZSBieXRlcywgbm90ICVzICglciknICUKICAgICAgICAgICAgICAgICAgICh0eXBlKHMpLl9fbmFtZV9fLCBzKSkKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBlcnIKICAgIGEgPSBsaXN0KG1hcChkZWNvZGUsIGEpKQogICAgYiA9IGxpc3QobWFwKGRlY29kZSwgYikpCiAgICBmcm9tZmlsZSA9IGRlY29kZShmcm9tZmlsZSkKICAgIHRvZmlsZSA9IGRlY29kZSh0b2ZpbGUpCiAgICBmcm9tZmlsZWRhdGUgPSBkZWNvZGUoZnJvbWZpbGVkYXRlKQogICAgdG9maWxlZGF0ZSA9IGRlY29kZSh0b2ZpbGVkYXRlKQogICAgbGluZXRlcm0gPSBkZWNvZGUobGluZXRlcm0pCgogICAgbGluZXMgPSBkZnVuYyhhLCBiLCBmcm9tZmlsZSwgdG9maWxlLCBmcm9tZmlsZWRhdGUsIHRvZmlsZWRhdGUsIG4sIGxpbmV0ZXJtKQogICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgeWllbGQgbGluZS5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCgpkZWYgbmRpZmYoYSwgYiwgbGluZWp1bms9Tm9uZSwgY2hhcmp1bms9SVNfQ0hBUkFDVEVSX0pVTkspOgogICAgciIiIgogICAgQ29tcGFyZSBgYWAgYW5kIGBiYCAobGlzdHMgb2Ygc3RyaW5ncyk7IHJldHVybiBhIGBEaWZmZXJgLXN0eWxlIGRlbHRhLgoKICAgIE9wdGlvbmFsIGtleXdvcmQgcGFyYW1ldGVycyBgbGluZWp1bmtgIGFuZCBgY2hhcmp1bmtgIGFyZSBmb3IgZmlsdGVyCiAgICBmdW5jdGlvbnMsIG9yIGNhbiBiZSBOb25lOgoKICAgIC0gbGluZWp1bms6IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCBhbmQKICAgICAgcmV0dXJuIHRydWUgaWZmIHRoZSBzdHJpbmcgaXMganVuay4gIFRoZSBkZWZhdWx0IGlzIE5vbmUsIGFuZCBpcwogICAgICByZWNvbW1lbmRlZDsgdGhlIHVuZGVybHlpbmcgU2VxdWVuY2VNYXRjaGVyIGNsYXNzIGhhcyBhbiBhZGFwdGl2ZQogICAgICBub3Rpb24gb2YgIm5vaXNlIiBsaW5lcy4KCiAgICAtIGNoYXJqdW5rOiBBIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIGNoYXJhY3RlciAoc3RyaW5nIG9mIGxlbmd0aAogICAgICAxKSwgYW5kIHJldHVybnMgdHJ1ZSBpZmYgdGhlIGNoYXJhY3RlciBpcyBqdW5rLiBUaGUgZGVmYXVsdCBpcwogICAgICB0aGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uIElTX0NIQVJBQ1RFUl9KVU5LLCB3aGljaCBmaWx0ZXJzIG91dAogICAgICB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGEgYmxhbmsgb3IgdGFiOyBub3RlOiBpdCdzIGEgYmFkIGlkZWEgdG8KICAgICAgaW5jbHVkZSBuZXdsaW5lIGluIHRoaXMhKS4KCiAgICBUb29scy9zY3JpcHRzL25kaWZmLnB5IGlzIGEgY29tbWFuZC1saW5lIGZyb250LWVuZCB0byB0aGlzIGZ1bmN0aW9uLgoKICAgIEV4YW1wbGU6CgogICAgPj4+IGRpZmYgPSBuZGlmZignb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSksCiAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogICAgPj4+IHByaW50KCcnLmpvaW4oZGlmZiksIGVuZD0iIikKICAgIC0gb25lCiAgICA/ICBeCiAgICArIG9yZQogICAgPyAgXgogICAgLSB0d28KICAgIC0gdGhyZWUKICAgID8gIC0KICAgICsgdHJlZQogICAgKyBlbXUKICAgICIiIgogICAgcmV0dXJuIERpZmZlcihsaW5lanVuaywgY2hhcmp1bmspLmNvbXBhcmUoYSwgYikKCmRlZiBfbWRpZmYoZnJvbWxpbmVzLCB0b2xpbmVzLCBjb250ZXh0PU5vbmUsIGxpbmVqdW5rPU5vbmUsCiAgICAgICAgICAgY2hhcmp1bms9SVNfQ0hBUkFDVEVSX0pVTkspOgogICAgciIiIlJldHVybnMgZ2VuZXJhdG9yIHlpZWxkaW5nIG1hcmtlZCB1cCBmcm9tL3RvIHNpZGUgYnkgc2lkZSBkaWZmZXJlbmNlcy4KCiAgICBBcmd1bWVudHM6CiAgICBmcm9tbGluZXMgLS0gbGlzdCBvZiB0ZXh0IGxpbmVzIHRvIGNvbXBhcmVkIHRvIHRvbGluZXMKICAgIHRvbGluZXMgLS0gbGlzdCBvZiB0ZXh0IGxpbmVzIHRvIGJlIGNvbXBhcmVkIHRvIGZyb21saW5lcwogICAgY29udGV4dCAtLSBudW1iZXIgb2YgY29udGV4dCBsaW5lcyB0byBkaXNwbGF5IG9uIGVhY2ggc2lkZSBvZiBkaWZmZXJlbmNlLAogICAgICAgICAgICAgICBpZiBOb25lLCBhbGwgZnJvbS90byB0ZXh0IGxpbmVzIHdpbGwgYmUgZ2VuZXJhdGVkLgogICAgbGluZWp1bmsgLS0gcGFzc2VkIG9uIHRvIG5kaWZmIChzZWUgbmRpZmYgZG9jdW1lbnRhdGlvbikKICAgIGNoYXJqdW5rIC0tIHBhc3NlZCBvbiB0byBuZGlmZiAoc2VlIG5kaWZmIGRvY3VtZW50YXRpb24pCgogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGl0ZXJhdG9yIHdoaWNoIHJldHVybnMgYSB0dXBsZToKICAgIChmcm9tIGxpbmUgdHVwbGUsIHRvIGxpbmUgdHVwbGUsIGJvb2xlYW4gZmxhZykKCiAgICBmcm9tL3RvIGxpbmUgdHVwbGUgLS0gKGxpbmUgbnVtLCBsaW5lIHRleHQpCiAgICAgICAgbGluZSBudW0gLS0gaW50ZWdlciBvciBOb25lICh0byBpbmRpY2F0ZSBhIGNvbnRleHQgc2VwYXJhdGlvbikKICAgICAgICBsaW5lIHRleHQgLS0gb3JpZ2luYWwgbGluZSB0ZXh0IHdpdGggZm9sbG93aW5nIG1hcmtlcnMgaW5zZXJ0ZWQ6CiAgICAgICAgICAgICdcMCsnIC0tIG1hcmtzIHN0YXJ0IG9mIGFkZGVkIHRleHQKICAgICAgICAgICAgJ1wwLScgLS0gbWFya3Mgc3RhcnQgb2YgZGVsZXRlZCB0ZXh0CiAgICAgICAgICAgICdcMF4nIC0tIG1hcmtzIHN0YXJ0IG9mIGNoYW5nZWQgdGV4dAogICAgICAgICAgICAnXDEnIC0tIG1hcmtzIGVuZCBvZiBhZGRlZC9kZWxldGVkL2NoYW5nZWQgdGV4dAoKICAgIGJvb2xlYW4gZmxhZyAtLSBOb25lIGluZGljYXRlcyBjb250ZXh0IHNlcGFyYXRpb24sIFRydWUgaW5kaWNhdGVzCiAgICAgICAgZWl0aGVyICJmcm9tIiBvciAidG8iIGxpbmUgY29udGFpbnMgYSBjaGFuZ2UsIG90aGVyd2lzZSBGYWxzZS4KCiAgICBUaGlzIGZ1bmN0aW9uL2l0ZXJhdG9yIHdhcyBvcmlnaW5hbGx5IGRldmVsb3BlZCB0byBnZW5lcmF0ZSBzaWRlIGJ5IHNpZGUKICAgIGZpbGUgZGlmZmVyZW5jZSBmb3IgbWFraW5nIEhUTUwgcGFnZXMgKHNlZSBIdG1sRGlmZiBjbGFzcyBmb3IgZXhhbXBsZQogICAgdXNhZ2UpLgoKICAgIE5vdGUsIHRoaXMgZnVuY3Rpb24gdXRpbGl6ZXMgdGhlIG5kaWZmIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHRoZSBzaWRlIGJ5CiAgICBzaWRlIGRpZmZlcmVuY2UgbWFya3VwLiAgT3B0aW9uYWwgbmRpZmYgYXJndW1lbnRzIG1heSBiZSBwYXNzZWQgdG8gdGhpcwogICAgZnVuY3Rpb24gYW5kIHRoZXkgaW4gdHVybiB3aWxsIGJlIHBhc3NlZCB0byBuZGlmZi4KICAgICIiIgogICAgaW1wb3J0IHJlCgogICAgIyByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGZpbmRpbmcgaW50cmFsaW5lIGNoYW5nZSBpbmRpY2VzCiAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKHInKFwrK3xcLSt8XF4rKScpCgogICAgIyBjcmVhdGUgdGhlIGRpZmZlcmVuY2UgaXRlcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGRpZmZlcmVuY2VzCiAgICBkaWZmX2xpbmVzX2l0ZXJhdG9yID0gbmRpZmYoZnJvbWxpbmVzLHRvbGluZXMsbGluZWp1bmssY2hhcmp1bmspCgogICAgZGVmIF9tYWtlX2xpbmUobGluZXMsIGZvcm1hdF9rZXksIHNpZGUsIG51bV9saW5lcz1bMCwwXSk6CiAgICAgICAgIiIiUmV0dXJucyBsaW5lIG9mIHRleHQgd2l0aCB1c2VyJ3MgY2hhbmdlIG1hcmt1cCBhbmQgbGluZSBmb3JtYXR0aW5nLgoKICAgICAgICBsaW5lcyAtLSBsaXN0IG9mIGxpbmVzIGZyb20gdGhlIG5kaWZmIGdlbmVyYXRvciB0byBwcm9kdWNlIGEgbGluZSBvZgogICAgICAgICAgICAgICAgIHRleHQgZnJvbS4gIFdoZW4gcHJvZHVjaW5nIHRoZSBsaW5lIG9mIHRleHQgdG8gcmV0dXJuLCB0aGUKICAgICAgICAgICAgICAgICBsaW5lcyB1c2VkIGFyZSByZW1vdmVkIGZyb20gdGhpcyBsaXN0LgogICAgICAgIGZvcm1hdF9rZXkgLS0gJysnIHJldHVybiBmaXJzdCBsaW5lIGluIGxpc3Qgd2l0aCAiYWRkIiBtYXJrdXAgYXJvdW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGVudGlyZSBsaW5lLgogICAgICAgICAgICAgICAgICAgICAgJy0nIHJldHVybiBmaXJzdCBsaW5lIGluIGxpc3Qgd2l0aCAiZGVsZXRlIiBtYXJrdXAgYXJvdW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGVudGlyZSBsaW5lLgogICAgICAgICAgICAgICAgICAgICAgJz8nIHJldHVybiBmaXJzdCBsaW5lIGluIGxpc3Qgd2l0aCBhZGQvZGVsZXRlL2NoYW5nZQogICAgICAgICAgICAgICAgICAgICAgICAgIGludHJhbGluZSBtYXJrdXAgKGluZGljZXMgb2J0YWluZWQgZnJvbSBzZWNvbmQgbGluZSkKICAgICAgICAgICAgICAgICAgICAgIE5vbmUgcmV0dXJuIGZpcnN0IGxpbmUgaW4gbGlzdCB3aXRoIG5vIG1hcmt1cAogICAgICAgIHNpZGUgLS0gaW5kaWNlIGludG8gdGhlIG51bV9saW5lcyBsaXN0ICgwPWZyb20sMT10bykKICAgICAgICBudW1fbGluZXMgLS0gZnJvbS90byBjdXJyZW50IGxpbmUgbnVtYmVyLiAgVGhpcyBpcyBOT1QgaW50ZW5kZWQgdG8gYmUgYQogICAgICAgICAgICAgICAgICAgICBwYXNzZWQgcGFyYW1ldGVyLiAgSXQgaXMgcHJlc2VudCBhcyBhIGtleXdvcmQgYXJndW1lbnQgdG8KICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW4gbWVtb3J5IG9mIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVycyBiZXR3ZWVuIGNhbGxzCiAgICAgICAgICAgICAgICAgICAgIG9mIHRoaXMgZnVuY3Rpb24uCgogICAgICAgIE5vdGUsIHRoaXMgZnVuY3Rpb24gaXMgcHVycG9zZWZ1bGx5IG5vdCBkZWZpbmVkIGF0IHRoZSBtb2R1bGUgc2NvcGUgc28KICAgICAgICB0aGF0IGRhdGEgaXQgbmVlZHMgZnJvbSBpdHMgcGFyZW50IGZ1bmN0aW9uICh3aXRoaW4gd2hvc2UgY29udGV4dCBpdAogICAgICAgIGlzIGRlZmluZWQpIGRvZXMgbm90IG5lZWQgdG8gYmUgb2YgbW9kdWxlIHNjb3BlLgogICAgICAgICIiIgogICAgICAgIG51bV9saW5lc1tzaWRlXSArPSAxCiAgICAgICAgIyBIYW5kbGUgY2FzZSB3aGVyZSBubyB1c2VyIG1hcmt1cCBpcyB0byBiZSBhZGRlZCwganVzdCByZXR1cm4gbGluZSBvZgogICAgICAgICMgdGV4dCB3aXRoIHVzZXIncyBsaW5lIGZvcm1hdCB0byBhbGxvdyBmb3IgdXNhZ2Ugb2YgdGhlIGxpbmUgbnVtYmVyLgogICAgICAgIGlmIGZvcm1hdF9rZXkgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIChudW1fbGluZXNbc2lkZV0sbGluZXMucG9wKDApWzI6XSkKICAgICAgICAjIEhhbmRsZSBjYXNlIG9mIGludHJhbGluZSBjaGFuZ2VzCiAgICAgICAgaWYgZm9ybWF0X2tleSA9PSAnPyc6CiAgICAgICAgICAgIHRleHQsIG1hcmtlcnMgPSBsaW5lcy5wb3AoMCksIGxpbmVzLnBvcCgwKQogICAgICAgICAgICAjIGZpbmQgaW50cmFsaW5lIGNoYW5nZXMgKHN0b3JlIGNoYW5nZSB0eXBlIGFuZCBpbmRpY2VzIGluIHR1cGxlcykKICAgICAgICAgICAgc3ViX2luZm8gPSBbXQogICAgICAgICAgICBkZWYgcmVjb3JkX3N1Yl9pbmZvKG1hdGNoX29iamVjdCxzdWJfaW5mbz1zdWJfaW5mbyk6CiAgICAgICAgICAgICAgICBzdWJfaW5mby5hcHBlbmQoW21hdGNoX29iamVjdC5ncm91cCgxKVswXSxtYXRjaF9vYmplY3Quc3BhbigpXSkKICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaF9vYmplY3QuZ3JvdXAoMSkKICAgICAgICAgICAgY2hhbmdlX3JlLnN1YihyZWNvcmRfc3ViX2luZm8sbWFya2VycykKICAgICAgICAgICAgIyBwcm9jZXNzIGVhY2ggdHVwbGUgaW5zZXJ0aW5nIG91ciBzcGVjaWFsIG1hcmtzIHRoYXQgd29uJ3QgYmUKICAgICAgICAgICAgIyBub3RpY2VkIGJ5IGFuIHhtbC9odG1sIGVzY2FwZXIuCiAgICAgICAgICAgIGZvciBrZXksKGJlZ2luLGVuZCkgaW4gcmV2ZXJzZWQoc3ViX2luZm8pOgogICAgICAgICAgICAgICAgdGV4dCA9IHRleHRbMDpiZWdpbl0rJ1wwJytrZXkrdGV4dFtiZWdpbjplbmRdKydcMScrdGV4dFtlbmQ6XQogICAgICAgICAgICB0ZXh0ID0gdGV4dFsyOl0KICAgICAgICAjIEhhbmRsZSBjYXNlIG9mIGFkZC9kZWxldGUgZW50aXJlIGxpbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICB0ZXh0ID0gbGluZXMucG9wKDApWzI6XQogICAgICAgICAgICAjIGlmIGxpbmUgb2YgdGV4dCBpcyBqdXN0IGEgbmV3bGluZSwgaW5zZXJ0IGEgc3BhY2Ugc28gdGhlcmUgaXMKICAgICAgICAgICAgIyBzb21ldGhpbmcgZm9yIHRoZSB1c2VyIHRvIGhpZ2hsaWdodCBhbmQgc2VlLgogICAgICAgICAgICBpZiBub3QgdGV4dDoKICAgICAgICAgICAgICAgIHRleHQgPSAnICcKICAgICAgICAgICAgIyBpbnNlcnQgbWFya3MgdGhhdCB3b24ndCBiZSBub3RpY2VkIGJ5IGFuIHhtbC9odG1sIGVzY2FwZXIuCiAgICAgICAgICAgIHRleHQgPSAnXDAnICsgZm9ybWF0X2tleSArIHRleHQgKyAnXDEnCiAgICAgICAgIyBSZXR1cm4gbGluZSBvZiB0ZXh0LCBmaXJzdCBhbGxvdyB1c2VyJ3MgbGluZSBmb3JtYXR0ZXIgdG8gZG8gaXRzCiAgICAgICAgIyB0aGluZyAoc3VjaCBhcyBhZGRpbmcgdGhlIGxpbmUgbnVtYmVyKSB0aGVuIHJlcGxhY2UgdGhlIHNwZWNpYWwKICAgICAgICAjIG1hcmtzIHdpdGggd2hhdCB0aGUgdXNlcidzIGNoYW5nZSBtYXJrdXAuCiAgICAgICAgcmV0dXJuIChudW1fbGluZXNbc2lkZV0sdGV4dCkKCiAgICBkZWYgX2xpbmVfaXRlcmF0b3IoKToKICAgICAgICAiIiJZaWVsZHMgZnJvbS90byBsaW5lcyBvZiB0ZXh0IHdpdGggYSBjaGFuZ2UgaW5kaWNhdGlvbi4KCiAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBhbiBpdGVyYXRvci4gIEl0IGl0c2VsZiBwdWxscyBsaW5lcyBmcm9tIGEKICAgICAgICBkaWZmZXJlbmNpbmcgaXRlcmF0b3IsIHByb2Nlc3NlcyB0aGVtIGFuZCB5aWVsZHMgdGhlbS4gIFdoZW4gaXQgY2FuCiAgICAgICAgaXQgeWllbGRzIGJvdGggYSAiZnJvbSIgYW5kIGEgInRvIiBsaW5lLCBvdGhlcndpc2UgaXQgd2lsbCB5aWVsZCBvbmUKICAgICAgICBvciB0aGUgb3RoZXIuICBJbiBhZGRpdGlvbiB0byB5aWVsZGluZyB0aGUgbGluZXMgb2YgZnJvbS90byB0ZXh0LCBhCiAgICAgICAgYm9vbGVhbiBmbGFnIGlzIHlpZWxkZWQgdG8gaW5kaWNhdGUgaWYgdGhlIHRleHQgbGluZShzKSBoYXZlCiAgICAgICAgZGlmZmVyZW5jZXMgaW4gdGhlbS4KCiAgICAgICAgTm90ZSwgdGhpcyBmdW5jdGlvbiBpcyBwdXJwb3NlZnVsbHkgbm90IGRlZmluZWQgYXQgdGhlIG1vZHVsZSBzY29wZSBzbwogICAgICAgIHRoYXQgZGF0YSBpdCBuZWVkcyBmcm9tIGl0cyBwYXJlbnQgZnVuY3Rpb24gKHdpdGhpbiB3aG9zZSBjb250ZXh0IGl0CiAgICAgICAgaXMgZGVmaW5lZCkgZG9lcyBub3QgbmVlZCB0byBiZSBvZiBtb2R1bGUgc2NvcGUuCiAgICAgICAgIiIiCiAgICAgICAgbGluZXMgPSBbXQogICAgICAgIG51bV9ibGFua3NfcGVuZGluZywgbnVtX2JsYW5rc190b195aWVsZCA9IDAsIDAKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAjIExvYWQgdXAgbmV4dCA0IGxpbmVzIHNvIHdlIGNhbiBsb29rIGFoZWFkLCBjcmVhdGUgc3RyaW5ncyB3aGljaAogICAgICAgICAgICAjIGFyZSBhIGNvbmNhdGVuYXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBlYWNoIG9mIHRoZSA0IGxpbmVzCiAgICAgICAgICAgICMgc28gd2UgY2FuIGRvIHNvbWUgdmVyeSByZWFkYWJsZSBjb21wYXJpc29ucy4KICAgICAgICAgICAgd2hpbGUgbGVuKGxpbmVzKSA8IDQ6CiAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobmV4dChkaWZmX2xpbmVzX2l0ZXJhdG9yLCAnWCcpKQogICAgICAgICAgICBzID0gJycuam9pbihbbGluZVswXSBmb3IgbGluZSBpbiBsaW5lc10pCiAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnWCcpOgogICAgICAgICAgICAgICAgIyBXaGVuIG5vIG1vcmUgbGluZXMsIHB1bXAgb3V0IGFueSByZW1haW5pbmcgYmxhbmsgbGluZXMgc28gdGhlCiAgICAgICAgICAgICAgICAjIGNvcnJlc3BvbmRpbmcgYWRkL2RlbGV0ZSBsaW5lcyBnZXQgYSBtYXRjaGluZyBibGFuayBsaW5lIHNvCiAgICAgICAgICAgICAgICAjIGFsbCBsaW5lIHBhaXJzIGdldCB5aWVsZGVkIGF0IHRoZSBuZXh0IGxldmVsLgogICAgICAgICAgICAgICAgbnVtX2JsYW5rc190b195aWVsZCA9IG51bV9ibGFua3NfcGVuZGluZwogICAgICAgICAgICBlbGlmIHMuc3RhcnRzd2l0aCgnLT8rPycpOgogICAgICAgICAgICAgICAgIyBzaW1wbGUgaW50cmFsaW5lIGNoYW5nZQogICAgICAgICAgICAgICAgeWllbGQgX21ha2VfbGluZShsaW5lcywnPycsMCksIF9tYWtlX2xpbmUobGluZXMsJz8nLDEpLCBUcnVlCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbGlmIHMuc3RhcnRzd2l0aCgnLS0rKycpOgogICAgICAgICAgICAgICAgIyBpbiBkZWxldGUgYmxvY2ssIGFkZCBibG9jayBjb21pbmc6IHdlIGRvIE5PVCB3YW50IHRvIGdldAogICAgICAgICAgICAgICAgIyBjYXVnaHQgdXAgb24gYmxhbmsgbGluZXMgeWV0LCBqdXN0IHByb2Nlc3MgdGhlIGRlbGV0ZSBsaW5lCiAgICAgICAgICAgICAgICBudW1fYmxhbmtzX3BlbmRpbmcgLT0gMQogICAgICAgICAgICAgICAgeWllbGQgX21ha2VfbGluZShsaW5lcywnLScsMCksIE5vbmUsIFRydWUKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgcy5zdGFydHN3aXRoKCgnLS0/KycsICctLSsnLCAnLSAnKSk6CiAgICAgICAgICAgICAgICAjIGluIGRlbGV0ZSBibG9jayBhbmQgc2VlIGFuIGludHJhbGluZSBjaGFuZ2Ugb3IgdW5jaGFuZ2VkIGxpbmUKICAgICAgICAgICAgICAgICMgY29taW5nOiB5aWVsZCB0aGUgZGVsZXRlIGxpbmUgYW5kIHRoZW4gYmxhbmtzCiAgICAgICAgICAgICAgICBmcm9tX2xpbmUsdG9fbGluZSA9IF9tYWtlX2xpbmUobGluZXMsJy0nLDApLCBOb25lCiAgICAgICAgICAgICAgICBudW1fYmxhbmtzX3RvX3lpZWxkLG51bV9ibGFua3NfcGVuZGluZyA9IG51bV9ibGFua3NfcGVuZGluZy0xLDAKICAgICAgICAgICAgZWxpZiBzLnN0YXJ0c3dpdGgoJy0rPycpOgogICAgICAgICAgICAgICAgIyBpbnRyYWxpbmUgY2hhbmdlCiAgICAgICAgICAgICAgICB5aWVsZCBfbWFrZV9saW5lKGxpbmVzLE5vbmUsMCksIF9tYWtlX2xpbmUobGluZXMsJz8nLDEpLCBUcnVlCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbGlmIHMuc3RhcnRzd2l0aCgnLT8rJyk6CiAgICAgICAgICAgICAgICAjIGludHJhbGluZSBjaGFuZ2UKICAgICAgICAgICAgICAgIHlpZWxkIF9tYWtlX2xpbmUobGluZXMsJz8nLDApLCBfbWFrZV9saW5lKGxpbmVzLE5vbmUsMSksIFRydWUKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgcy5zdGFydHN3aXRoKCctJyk6CiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBGUk9NIGxpbmUKICAgICAgICAgICAgICAgIG51bV9ibGFua3NfcGVuZGluZyAtPSAxCiAgICAgICAgICAgICAgICB5aWVsZCBfbWFrZV9saW5lKGxpbmVzLCctJywwKSwgTm9uZSwgVHJ1ZQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZWxpZiBzLnN0YXJ0c3dpdGgoJystLScpOgogICAgICAgICAgICAgICAgIyBpbiBhZGQgYmxvY2ssIGRlbGV0ZSBibG9jayBjb21pbmc6IHdlIGRvIE5PVCB3YW50IHRvIGdldAogICAgICAgICAgICAgICAgIyBjYXVnaHQgdXAgb24gYmxhbmsgbGluZXMgeWV0LCBqdXN0IHByb2Nlc3MgdGhlIGFkZCBsaW5lCiAgICAgICAgICAgICAgICBudW1fYmxhbmtzX3BlbmRpbmcgKz0gMQogICAgICAgICAgICAgICAgeWllbGQgTm9uZSwgX21ha2VfbGluZShsaW5lcywnKycsMSksIFRydWUKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgcy5zdGFydHN3aXRoKCgnKyAnLCAnKy0nKSk6CiAgICAgICAgICAgICAgICAjIHdpbGwgYmUgbGVhdmluZyBhbiBhZGQgYmxvY2s6IHlpZWxkIGJsYW5rcyB0aGVuIGFkZCBsaW5lCiAgICAgICAgICAgICAgICBmcm9tX2xpbmUsIHRvX2xpbmUgPSBOb25lLCBfbWFrZV9saW5lKGxpbmVzLCcrJywxKQogICAgICAgICAgICAgICAgbnVtX2JsYW5rc190b195aWVsZCxudW1fYmxhbmtzX3BlbmRpbmcgPSBudW1fYmxhbmtzX3BlbmRpbmcrMSwwCiAgICAgICAgICAgIGVsaWYgcy5zdGFydHN3aXRoKCcrJyk6CiAgICAgICAgICAgICAgICAjIGluc2lkZSBhbiBhZGQgYmxvY2ssIHlpZWxkIHRoZSBhZGQgbGluZQogICAgICAgICAgICAgICAgbnVtX2JsYW5rc19wZW5kaW5nICs9IDEKICAgICAgICAgICAgICAgIHlpZWxkIE5vbmUsIF9tYWtlX2xpbmUobGluZXMsJysnLDEpLCBUcnVlCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbGlmIHMuc3RhcnRzd2l0aCgnICcpOgogICAgICAgICAgICAgICAgIyB1bmNoYW5nZWQgdGV4dCwgeWllbGQgaXQgdG8gYm90aCBzaWRlcwogICAgICAgICAgICAgICAgeWllbGQgX21ha2VfbGluZShsaW5lc1s6XSxOb25lLDApLF9tYWtlX2xpbmUobGluZXMsTm9uZSwxKSxGYWxzZQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIyBDYXRjaCB1cCBvbiB0aGUgYmxhbmsgbGluZXMgc28gd2hlbiB3ZSB5aWVsZCB0aGUgbmV4dCBmcm9tL3RvCiAgICAgICAgICAgICMgcGFpciwgdGhleSBhcmUgbGluZWQgdXAuCiAgICAgICAgICAgIHdoaWxlKG51bV9ibGFua3NfdG9feWllbGQgPCAwKToKICAgICAgICAgICAgICAgIG51bV9ibGFua3NfdG9feWllbGQgKz0gMQogICAgICAgICAgICAgICAgeWllbGQgTm9uZSwoJycsJ1xuJyksVHJ1ZQogICAgICAgICAgICB3aGlsZShudW1fYmxhbmtzX3RvX3lpZWxkID4gMCk6CiAgICAgICAgICAgICAgICBudW1fYmxhbmtzX3RvX3lpZWxkIC09IDEKICAgICAgICAgICAgICAgIHlpZWxkICgnJywnXG4nKSxOb25lLFRydWUKICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKCdYJyk6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHlpZWxkIGZyb21fbGluZSx0b19saW5lLFRydWUKCiAgICBkZWYgX2xpbmVfcGFpcl9pdGVyYXRvcigpOgogICAgICAgICIiIllpZWxkcyBmcm9tL3RvIGxpbmVzIG9mIHRleHQgd2l0aCBhIGNoYW5nZSBpbmRpY2F0aW9uLgoKICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGFuIGl0ZXJhdG9yLiAgSXQgaXRzZWxmIHB1bGxzIGxpbmVzIGZyb20gdGhlIGxpbmUKICAgICAgICBpdGVyYXRvci4gIEl0cyBkaWZmZXJlbmNlIGZyb20gdGhhdCBpdGVyYXRvciBpcyB0aGF0IHRoaXMgZnVuY3Rpb24KICAgICAgICBhbHdheXMgeWllbGRzIGEgcGFpciBvZiBmcm9tL3RvIHRleHQgbGluZXMgKHdpdGggdGhlIGNoYW5nZQogICAgICAgIGluZGljYXRpb24pLiAgSWYgbmVjZXNzYXJ5IGl0IHdpbGwgY29sbGVjdCBzaW5nbGUgZnJvbS90byBsaW5lcwogICAgICAgIHVudGlsIGl0IGhhcyBhIG1hdGNoaW5nIHBhaXIgZnJvbS90byBwYWlyIHRvIHlpZWxkLgoKICAgICAgICBOb3RlLCB0aGlzIGZ1bmN0aW9uIGlzIHB1cnBvc2VmdWxseSBub3QgZGVmaW5lZCBhdCB0aGUgbW9kdWxlIHNjb3BlIHNvCiAgICAgICAgdGhhdCBkYXRhIGl0IG5lZWRzIGZyb20gaXRzIHBhcmVudCBmdW5jdGlvbiAod2l0aGluIHdob3NlIGNvbnRleHQgaXQKICAgICAgICBpcyBkZWZpbmVkKSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9mIG1vZHVsZSBzY29wZS4KICAgICAgICAiIiIKICAgICAgICBsaW5lX2l0ZXJhdG9yID0gX2xpbmVfaXRlcmF0b3IoKQogICAgICAgIGZyb21saW5lcyx0b2xpbmVzPVtdLFtdCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIyBDb2xsZWN0aW5nIGxpbmVzIG9mIHRleHQgdW50aWwgd2UgaGF2ZSBhIGZyb20vdG8gcGFpcgogICAgICAgICAgICB3aGlsZSAobGVuKGZyb21saW5lcyk9PTAgb3IgbGVuKHRvbGluZXMpPT0wKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBmcm9tX2xpbmUsIHRvX2xpbmUsIGZvdW5kX2RpZmYgPSBuZXh0KGxpbmVfaXRlcmF0b3IpCiAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgIGlmIGZyb21fbGluZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBmcm9tbGluZXMuYXBwZW5kKChmcm9tX2xpbmUsZm91bmRfZGlmZikpCiAgICAgICAgICAgICAgICBpZiB0b19saW5lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHRvbGluZXMuYXBwZW5kKCh0b19saW5lLGZvdW5kX2RpZmYpKQogICAgICAgICAgICAjIE9uY2Ugd2UgaGF2ZSBhIHBhaXIsIHJlbW92ZSB0aGVtIGZyb20gdGhlIGNvbGxlY3Rpb24gYW5kIHlpZWxkIGl0CiAgICAgICAgICAgIGZyb21fbGluZSwgZnJvbURpZmYgPSBmcm9tbGluZXMucG9wKDApCiAgICAgICAgICAgIHRvX2xpbmUsIHRvX2RpZmYgPSB0b2xpbmVzLnBvcCgwKQogICAgICAgICAgICB5aWVsZCAoZnJvbV9saW5lLHRvX2xpbmUsZnJvbURpZmYgb3IgdG9fZGlmZikKCiAgICAjIEhhbmRsZSBjYXNlIHdoZXJlIHVzZXIgZG9lcyBub3Qgd2FudCBjb250ZXh0IGRpZmZlcmVuY2luZywganVzdCB5aWVsZAogICAgIyB0aGVtIHVwIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZSB3aXRoIHRoZW0uCiAgICBsaW5lX3BhaXJfaXRlcmF0b3IgPSBfbGluZV9wYWlyX2l0ZXJhdG9yKCkKICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICB5aWVsZCBmcm9tIGxpbmVfcGFpcl9pdGVyYXRvcgogICAgIyBIYW5kbGUgY2FzZSB3aGVyZSB1c2VyIHdhbnRzIGNvbnRleHQgZGlmZmVyZW5jaW5nLiAgV2UgbXVzdCBkbyBzb21lCiAgICAjIHN0b3JhZ2Ugb2YgbGluZXMgdW50aWwgd2Uga25vdyBmb3Igc3VyZSB0aGF0IHRoZXkgYXJlIHRvIGJlIHlpZWxkZWQuCiAgICBlbHNlOgogICAgICAgIGNvbnRleHQgKz0gMQogICAgICAgIGxpbmVzX3RvX3dyaXRlID0gMAogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICMgU3RvcmUgbGluZXMgdXAgdW50aWwgd2UgZmluZCBhIGRpZmZlcmVuY2UsIG5vdGUgdXNlIG9mIGEKICAgICAgICAgICAgIyBjaXJjdWxhciBxdWV1ZSBiZWNhdXNlIHdlIG9ubHkgbmVlZCB0byBrZWVwIGFyb3VuZCB3aGF0CiAgICAgICAgICAgICMgd2UgbmVlZCBmb3IgY29udGV4dC4KICAgICAgICAgICAgaW5kZXgsIGNvbnRleHRMaW5lcyA9IDAsIFtOb25lXSooY29udGV4dCkKICAgICAgICAgICAgZm91bmRfZGlmZiA9IEZhbHNlCiAgICAgICAgICAgIHdoaWxlKGZvdW5kX2RpZmYgaXMgRmFsc2UpOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9wYWlyX2l0ZXJhdG9yKQogICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICBpID0gaW5kZXggJSBjb250ZXh0CiAgICAgICAgICAgICAgICBjb250ZXh0TGluZXNbaV0gPSAoZnJvbV9saW5lLCB0b19saW5lLCBmb3VuZF9kaWZmKQogICAgICAgICAgICAgICAgaW5kZXggKz0gMQogICAgICAgICAgICAjIFlpZWxkIGxpbmVzIHRoYXQgd2UgaGF2ZSBjb2xsZWN0ZWQgc28gZmFyLCBidXQgZmlyc3QgeWllbGQKICAgICAgICAgICAgIyB0aGUgdXNlcidzIHNlcGFyYXRvci4KICAgICAgICAgICAgaWYgaW5kZXggPiBjb250ZXh0OgogICAgICAgICAgICAgICAgeWllbGQgTm9uZSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgICAgbGluZXNfdG9fd3JpdGUgPSBjb250ZXh0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBsaW5lc190b193cml0ZSA9IGluZGV4CiAgICAgICAgICAgICAgICBpbmRleCA9IDAKICAgICAgICAgICAgd2hpbGUobGluZXNfdG9fd3JpdGUpOgogICAgICAgICAgICAgICAgaSA9IGluZGV4ICUgY29udGV4dAogICAgICAgICAgICAgICAgaW5kZXggKz0gMQogICAgICAgICAgICAgICAgeWllbGQgY29udGV4dExpbmVzW2ldCiAgICAgICAgICAgICAgICBsaW5lc190b193cml0ZSAtPSAxCiAgICAgICAgICAgICMgTm93IHlpZWxkIHRoZSBjb250ZXh0IGxpbmVzIGFmdGVyIHRoZSBjaGFuZ2UKICAgICAgICAgICAgbGluZXNfdG9fd3JpdGUgPSBjb250ZXh0LTEKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2hpbGUobGluZXNfdG9fd3JpdGUpOgogICAgICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9wYWlyX2l0ZXJhdG9yKQogICAgICAgICAgICAgICAgICAgICMgSWYgYW5vdGhlciBjaGFuZ2Ugd2l0aGluIHRoZSBjb250ZXh0LCBleHRlbmQgdGhlIGNvbnRleHQKICAgICAgICAgICAgICAgICAgICBpZiBmb3VuZF9kaWZmOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5lc190b193cml0ZSA9IGNvbnRleHQtMQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzX3RvX3dyaXRlIC09IDEKICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tX2xpbmUsIHRvX2xpbmUsIGZvdW5kX2RpZmYKICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICAgICAjIENhdGNoIGV4Y2VwdGlvbiBmcm9tIG5leHQoKSBhbmQgcmV0dXJuIG5vcm1hbGx5CiAgICAgICAgICAgICAgICByZXR1cm4KCgpfZmlsZV90ZW1wbGF0ZSA9ICIiIgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgogICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgoKPGh0bWw+Cgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIKICAgICAgICAgIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0lKGNoYXJzZXQpcyIgLz4KICAgIDx0aXRsZT48L3RpdGxlPgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4lKHN0eWxlcylzCiAgICA8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KICAgICUodGFibGUpcyUobGVnZW5kKXMKPC9ib2R5PgoKPC9odG1sPiIiIgoKX3N0eWxlcyA9ICIiIgogICAgICAgIHRhYmxlLmRpZmYge2ZvbnQtZmFtaWx5OkNvdXJpZXI7IGJvcmRlcjptZWRpdW07fQogICAgICAgIC5kaWZmX2hlYWRlciB7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwfQogICAgICAgIHRkLmRpZmZfaGVhZGVyIHt0ZXh0LWFsaWduOnJpZ2h0fQogICAgICAgIC5kaWZmX25leHQge2JhY2tncm91bmQtY29sb3I6I2MwYzBjMH0KICAgICAgICAuZGlmZl9hZGQge2JhY2tncm91bmQtY29sb3I6I2FhZmZhYX0KICAgICAgICAuZGlmZl9jaGcge2JhY2tncm91bmQtY29sb3I6I2ZmZmY3N30KICAgICAgICAuZGlmZl9zdWIge2JhY2tncm91bmQtY29sb3I6I2ZmYWFhYX0iIiIKCl90YWJsZV90ZW1wbGF0ZSA9ICIiIgogICAgPHRhYmxlIGNsYXNzPSJkaWZmIiBpZD0iZGlmZmxpYl9jaGdfJShwcmVmaXgpc190b3AiCiAgICAgICAgICAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBydWxlcz0iZ3JvdXBzIiA+CiAgICAgICAgPGNvbGdyb3VwPjwvY29sZ3JvdXA+IDxjb2xncm91cD48L2NvbGdyb3VwPiA8Y29sZ3JvdXA+PC9jb2xncm91cD4KICAgICAgICA8Y29sZ3JvdXA+PC9jb2xncm91cD4gPGNvbGdyb3VwPjwvY29sZ3JvdXA+IDxjb2xncm91cD48L2NvbGdyb3VwPgogICAgICAgICUoaGVhZGVyX3JvdylzCiAgICAgICAgPHRib2R5PgolKGRhdGFfcm93cylzICAgICAgICA8L3Rib2R5PgogICAgPC90YWJsZT4iIiIKCl9sZWdlbmQgPSAiIiIKICAgIDx0YWJsZSBjbGFzcz0iZGlmZiIgc3VtbWFyeT0iTGVnZW5kcyI+CiAgICAgICAgPHRyPiA8dGggY29sc3Bhbj0iMiI+IExlZ2VuZHMgPC90aD4gPC90cj4KICAgICAgICA8dHI+IDx0ZD4gPHRhYmxlIGJvcmRlcj0iIiBzdW1tYXJ5PSJDb2xvcnMiPgogICAgICAgICAgICAgICAgICAgICAgPHRyPjx0aD4gQ29sb3JzIDwvdGg+IDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX2FkZCI+Jm5ic3A7QWRkZWQmbmJzcDs8L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX2NoZyI+Q2hhbmdlZDwvdGQ+IDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX3N1YiI+RGVsZXRlZDwvdGQ+IDwvdHI+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4KICAgICAgICAgICAgIDx0ZD4gPHRhYmxlIGJvcmRlcj0iIiBzdW1tYXJ5PSJMaW5rcyI+CiAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRoIGNvbHNwYW49IjIiPiBMaW5rcyA8L3RoPiA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4oZilpcnN0IGNoYW5nZTwvdGQ+IDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPihuKWV4dCBjaGFuZ2U8L3RkPiA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4odClvcDwvdGQ+IDwvdHI+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC90ZD4gPC90cj4KICAgIDwvdGFibGU+IiIiCgpjbGFzcyBIdG1sRGlmZihvYmplY3QpOgogICAgIiIiRm9yIHByb2R1Y2luZyBIVE1MIHNpZGUgYnkgc2lkZSBjb21wYXJpc29uIHdpdGggY2hhbmdlIGhpZ2hsaWdodHMuCgogICAgVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW4gSFRNTCB0YWJsZSAob3IgYSBjb21wbGV0ZSBIVE1MIGZpbGUKICAgIGNvbnRhaW5pbmcgdGhlIHRhYmxlKSBzaG93aW5nIGEgc2lkZSBieSBzaWRlLCBsaW5lIGJ5IGxpbmUgY29tcGFyaXNvbgogICAgb2YgdGV4dCB3aXRoIGludGVyLWxpbmUgYW5kIGludHJhLWxpbmUgY2hhbmdlIGhpZ2hsaWdodHMuICBUaGUgdGFibGUgY2FuCiAgICBiZSBnZW5lcmF0ZWQgaW4gZWl0aGVyIGZ1bGwgb3IgY29udGV4dHVhbCBkaWZmZXJlbmNlIG1vZGUuCgogICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBwcm92aWRlZCBmb3IgSFRNTCBnZW5lcmF0aW9uOgoKICAgIG1ha2VfdGFibGUgLS0gZ2VuZXJhdGVzIEhUTUwgZm9yIGEgc2luZ2xlIHNpZGUgYnkgc2lkZSB0YWJsZQogICAgbWFrZV9maWxlIC0tIGdlbmVyYXRlcyBjb21wbGV0ZSBIVE1MIGZpbGUgd2l0aCBhIHNpbmdsZSBzaWRlIGJ5IHNpZGUgdGFibGUKCiAgICBTZWUgdG9vbHMvc2NyaXB0cy9kaWZmLnB5IGZvciBhbiBleGFtcGxlIHVzYWdlIG9mIHRoaXMgY2xhc3MuCiAgICAiIiIKCiAgICBfZmlsZV90ZW1wbGF0ZSA9IF9maWxlX3RlbXBsYXRlCiAgICBfc3R5bGVzID0gX3N0eWxlcwogICAgX3RhYmxlX3RlbXBsYXRlID0gX3RhYmxlX3RlbXBsYXRlCiAgICBfbGVnZW5kID0gX2xlZ2VuZAogICAgX2RlZmF1bHRfcHJlZml4ID0gMAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLHRhYnNpemU9OCx3cmFwY29sdW1uPU5vbmUsbGluZWp1bms9Tm9uZSwKICAgICAgICAgICAgICAgICBjaGFyanVuaz1JU19DSEFSQUNURVJfSlVOSyk6CiAgICAgICAgIiIiSHRtbERpZmYgaW5zdGFuY2UgaW5pdGlhbGl6ZXIKCiAgICAgICAgQXJndW1lbnRzOgogICAgICAgIHRhYnNpemUgLS0gdGFiIHN0b3Agc3BhY2luZywgZGVmYXVsdHMgdG8gOC4KICAgICAgICB3cmFwY29sdW1uIC0tIGNvbHVtbiBudW1iZXIgd2hlcmUgbGluZXMgYXJlIGJyb2tlbiBhbmQgd3JhcHBlZCwKICAgICAgICAgICAgZGVmYXVsdHMgdG8gTm9uZSB3aGVyZSBsaW5lcyBhcmUgbm90IHdyYXBwZWQuCiAgICAgICAgbGluZWp1bmssY2hhcmp1bmsgLS0ga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8gbmRpZmYoKSAodXNlZCBieQogICAgICAgICAgICBIdG1sRGlmZigpIHRvIGdlbmVyYXRlIHRoZSBzaWRlIGJ5IHNpZGUgSFRNTCBkaWZmZXJlbmNlcykuICBTZWUKICAgICAgICAgICAgbmRpZmYoKSBkb2N1bWVudGF0aW9uIGZvciBhcmd1bWVudCBkZWZhdWx0IHZhbHVlcyBhbmQgZGVzY3JpcHRpb25zLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX3RhYnNpemUgPSB0YWJzaXplCiAgICAgICAgc2VsZi5fd3JhcGNvbHVtbiA9IHdyYXBjb2x1bW4KICAgICAgICBzZWxmLl9saW5lanVuayA9IGxpbmVqdW5rCiAgICAgICAgc2VsZi5fY2hhcmp1bmsgPSBjaGFyanVuawoKICAgIGRlZiBtYWtlX2ZpbGUoc2VsZiwgZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZGVzYz0nJywgdG9kZXNjPScnLAogICAgICAgICAgICAgICAgICBjb250ZXh0PUZhbHNlLCBudW1saW5lcz01LCAqLCBjaGFyc2V0PSd1dGYtOCcpOgogICAgICAgICIiIlJldHVybnMgSFRNTCBmaWxlIG9mIHNpZGUgYnkgc2lkZSBjb21wYXJpc29uIHdpdGggY2hhbmdlIGhpZ2hsaWdodHMKCiAgICAgICAgQXJndW1lbnRzOgogICAgICAgIGZyb21saW5lcyAtLSBsaXN0IG9mICJmcm9tIiBsaW5lcwogICAgICAgIHRvbGluZXMgLS0gbGlzdCBvZiAidG8iIGxpbmVzCiAgICAgICAgZnJvbWRlc2MgLS0gImZyb20iIGZpbGUgY29sdW1uIGhlYWRlciBzdHJpbmcKICAgICAgICB0b2Rlc2MgLS0gInRvIiBmaWxlIGNvbHVtbiBoZWFkZXIgc3RyaW5nCiAgICAgICAgY29udGV4dCAtLSBzZXQgdG8gVHJ1ZSBmb3IgY29udGV4dHVhbCBkaWZmZXJlbmNlcyAoZGVmYXVsdHMgdG8gRmFsc2UKICAgICAgICAgICAgd2hpY2ggc2hvd3MgZnVsbCBkaWZmZXJlbmNlcykuCiAgICAgICAgbnVtbGluZXMgLS0gbnVtYmVyIG9mIGNvbnRleHQgbGluZXMuICBXaGVuIGNvbnRleHQgaXMgc2V0IFRydWUsCiAgICAgICAgICAgIGNvbnRyb2xzIG51bWJlciBvZiBsaW5lcyBkaXNwbGF5ZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgY2hhbmdlLgogICAgICAgICAgICBXaGVuIGNvbnRleHQgaXMgRmFsc2UsIGNvbnRyb2xzIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gcGxhY2UKICAgICAgICAgICAgdGhlICJuZXh0IiBsaW5rIGFuY2hvcnMgYmVmb3JlIHRoZSBuZXh0IGNoYW5nZSAoc28gY2xpY2sgb2YKICAgICAgICAgICAgIm5leHQiIGxpbmsganVtcHMgdG8ganVzdCBiZWZvcmUgdGhlIGNoYW5nZSkuCiAgICAgICAgY2hhcnNldCAtLSBjaGFyc2V0IG9mIHRoZSBIVE1MIGRvY3VtZW50CiAgICAgICAgIiIiCgogICAgICAgIHJldHVybiAoc2VsZi5fZmlsZV90ZW1wbGF0ZSAlIGRpY3QoCiAgICAgICAgICAgIHN0eWxlcz1zZWxmLl9zdHlsZXMsCiAgICAgICAgICAgIGxlZ2VuZD1zZWxmLl9sZWdlbmQsCiAgICAgICAgICAgIHRhYmxlPXNlbGYubWFrZV90YWJsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21kZXNjLCB0b2Rlc2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsIG51bWxpbmVzPW51bWxpbmVzKSwKICAgICAgICAgICAgY2hhcnNldD1jaGFyc2V0CiAgICAgICAgKSkuZW5jb2RlKGNoYXJzZXQsICd4bWxjaGFycmVmcmVwbGFjZScpLmRlY29kZShjaGFyc2V0KQoKICAgIGRlZiBfdGFiX25ld2xpbmVfcmVwbGFjZShzZWxmLGZyb21saW5lcyx0b2xpbmVzKToKICAgICAgICAiIiJSZXR1cm5zIGZyb20vdG8gbGluZSBsaXN0cyB3aXRoIHRhYnMgZXhwYW5kZWQgYW5kIG5ld2xpbmVzIHJlbW92ZWQuCgogICAgICAgIEluc3RlYWQgb2YgdGFiIGNoYXJhY3RlcnMgYmVpbmcgcmVwbGFjZWQgYnkgdGhlIG51bWJlciBvZiBzcGFjZXMKICAgICAgICBuZWVkZWQgdG8gZmlsbCBpbiB0byB0aGUgbmV4dCB0YWIgc3RvcCwgdGhpcyBmdW5jdGlvbiB3aWxsIGZpbGwKICAgICAgICB0aGUgc3BhY2Ugd2l0aCB0YWIgY2hhcmFjdGVycy4gIFRoaXMgaXMgZG9uZSBzbyB0aGF0IHRoZSBkaWZmZXJlbmNlCiAgICAgICAgYWxnb3JpdGhtcyBjYW4gaWRlbnRpZnkgY2hhbmdlcyBpbiBhIGZpbGUgd2hlbiB0YWJzIGFyZSByZXBsYWNlZCBieQogICAgICAgIHNwYWNlcyBhbmQgdmljZSB2ZXJzYS4gIEF0IHRoZSBlbmQgb2YgdGhlIEhUTUwgZ2VuZXJhdGlvbiwgdGhlIHRhYgogICAgICAgIGNoYXJhY3RlcnMgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGEgbm9uYnJlYWthYmxlIHNwYWNlLgogICAgICAgICIiIgogICAgICAgIGRlZiBleHBhbmRfdGFicyhsaW5lKToKICAgICAgICAgICAgIyBoaWRlIHJlYWwgc3BhY2VzCiAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJyAnLCdcMCcpCiAgICAgICAgICAgICMgZXhwYW5kIHRhYnMgaW50byBzcGFjZXMKICAgICAgICAgICAgbGluZSA9IGxpbmUuZXhwYW5kdGFicyhzZWxmLl90YWJzaXplKQogICAgICAgICAgICAjIHJlcGxhY2Ugc3BhY2VzIGZyb20gZXhwYW5kZWQgdGFicyBiYWNrIGludG8gdGFiIGNoYXJhY3RlcnMKICAgICAgICAgICAgIyAod2UnbGwgcmVwbGFjZSB0aGVtIHdpdGggbWFya3VwIGFmdGVyIHdlIGRvIGRpZmZlcmVuY2luZykKICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnICcsJ1x0JykKICAgICAgICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZSgnXDAnLCcgJykucnN0cmlwKCdcbicpCiAgICAgICAgZnJvbWxpbmVzID0gW2V4cGFuZF90YWJzKGxpbmUpIGZvciBsaW5lIGluIGZyb21saW5lc10KICAgICAgICB0b2xpbmVzID0gW2V4cGFuZF90YWJzKGxpbmUpIGZvciBsaW5lIGluIHRvbGluZXNdCiAgICAgICAgcmV0dXJuIGZyb21saW5lcyx0b2xpbmVzCgogICAgZGVmIF9zcGxpdF9saW5lKHNlbGYsZGF0YV9saXN0LGxpbmVfbnVtLHRleHQpOgogICAgICAgICIiIkJ1aWxkcyBsaXN0IG9mIHRleHQgbGluZXMgYnkgc3BsaXR0aW5nIHRleHQgbGluZXMgYXQgd3JhcCBwb2ludAoKICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZGV0ZXJtaW5lIGlmIHRoZSBpbnB1dCB0ZXh0IGxpbmUgbmVlZHMgdG8gYmUKICAgICAgICB3cmFwcGVkIChzcGxpdCkgaW50byBzZXBhcmF0ZSBsaW5lcy4gIElmIHNvLCB0aGUgZmlyc3Qgd3JhcCBwb2ludAogICAgICAgIHdpbGwgYmUgZGV0ZXJtaW5lZCBhbmQgdGhlIGZpcnN0IGxpbmUgYXBwZW5kZWQgdG8gdGhlIG91dHB1dAogICAgICAgIHRleHQgbGluZSBsaXN0LiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IHRvIGhhbmRsZQogICAgICAgIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgc3BsaXQgbGluZSB0byBmdXJ0aGVyIHNwbGl0IGl0LgogICAgICAgICIiIgogICAgICAgICMgaWYgYmxhbmsgbGluZSBvciBjb250ZXh0IHNlcGFyYXRvciwganVzdCBhZGQgaXQgdG8gdGhlIG91dHB1dCBsaXN0CiAgICAgICAgaWYgbm90IGxpbmVfbnVtOgogICAgICAgICAgICBkYXRhX2xpc3QuYXBwZW5kKChsaW5lX251bSx0ZXh0KSkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgaWYgbGluZSB0ZXh0IGRvZXNuJ3QgbmVlZCB3cmFwcGluZywganVzdCBhZGQgaXQgdG8gdGhlIG91dHB1dCBsaXN0CiAgICAgICAgc2l6ZSA9IGxlbih0ZXh0KQogICAgICAgIG1heCA9IHNlbGYuX3dyYXBjb2x1bW4KICAgICAgICBpZiAoc2l6ZSA8PSBtYXgpIG9yICgoc2l6ZSAtKHRleHQuY291bnQoJ1wwJykqMykpIDw9IG1heCk6CiAgICAgICAgICAgIGRhdGFfbGlzdC5hcHBlbmQoKGxpbmVfbnVtLHRleHQpKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBzY2FuIHRleHQgbG9va2luZyBmb3IgdGhlIHdyYXAgcG9pbnQsIGtlZXBpbmcgdHJhY2sgaWYgdGhlIHdyYXAKICAgICAgICAjIHBvaW50IGlzIGluc2lkZSBtYXJrZXJzCiAgICAgICAgaSA9IDAKICAgICAgICBuID0gMAogICAgICAgIG1hcmsgPSAnJwogICAgICAgIHdoaWxlIG4gPCBtYXggYW5kIGkgPCBzaXplOgogICAgICAgICAgICBpZiB0ZXh0W2ldID09ICdcMCc6CiAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgICAgIG1hcmsgPSB0ZXh0W2ldCiAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgZWxpZiB0ZXh0W2ldID09ICdcMSc6CiAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgICAgIG1hcmsgPSAnJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICBuICs9IDEKCiAgICAgICAgIyB3cmFwIHBvaW50IGlzIGluc2lkZSB0ZXh0LCBicmVhayBpdCB1cCBpbnRvIHNlcGFyYXRlIGxpbmVzCiAgICAgICAgbGluZTEgPSB0ZXh0WzppXQogICAgICAgIGxpbmUyID0gdGV4dFtpOl0KCiAgICAgICAgIyBpZiB3cmFwIHBvaW50IGlzIGluc2lkZSBtYXJrZXJzLCBwbGFjZSBlbmQgbWFya2VyIGF0IGVuZCBvZiBmaXJzdAogICAgICAgICMgbGluZSBhbmQgc3RhcnQgbWFya2VyIGF0IGJlZ2lubmluZyBvZiBzZWNvbmQgbGluZSBiZWNhdXNlIGVhY2gKICAgICAgICAjIGxpbmUgd2lsbCBoYXZlIGl0cyBvd24gdGFibGUgdGFnIG1hcmt1cCBhcm91bmQgaXQuCiAgICAgICAgaWYgbWFyazoKICAgICAgICAgICAgbGluZTEgPSBsaW5lMSArICdcMScKICAgICAgICAgICAgbGluZTIgPSAnXDAnICsgbWFyayArIGxpbmUyCgogICAgICAgICMgdGFjayBvbiBmaXJzdCBsaW5lIG9udG8gdGhlIG91dHB1dCBsaXN0CiAgICAgICAgZGF0YV9saXN0LmFwcGVuZCgobGluZV9udW0sbGluZTEpKQoKICAgICAgICAjIHVzZSB0aGlzIHJvdXRpbmUgYWdhaW4gdG8gd3JhcCB0aGUgcmVtYWluaW5nIHRleHQKICAgICAgICBzZWxmLl9zcGxpdF9saW5lKGRhdGFfbGlzdCwnPicsbGluZTIpCgogICAgZGVmIF9saW5lX3dyYXBwZXIoc2VsZixkaWZmcyk6CiAgICAgICAgIiIiUmV0dXJucyBpdGVyYXRvciB0aGF0IHNwbGl0cyAod3JhcHMpIG1kaWZmIHRleHQgbGluZXMiIiIKCiAgICAgICAgIyBwdWxsIGZyb20vdG8gZGF0YSBhbmQgZmxhZ3MgZnJvbSBtZGlmZiBpdGVyYXRvcgogICAgICAgIGZvciBmcm9tZGF0YSx0b2RhdGEsZmxhZyBpbiBkaWZmczoKICAgICAgICAgICAgIyBjaGVjayBmb3IgY29udGV4dCBzZXBhcmF0b3JzIGFuZCBwYXNzIHRoZW0gdGhyb3VnaAogICAgICAgICAgICBpZiBmbGFnIGlzIE5vbmU6CiAgICAgICAgICAgICAgICB5aWVsZCBmcm9tZGF0YSx0b2RhdGEsZmxhZwogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgKGZyb21saW5lLGZyb210ZXh0KSwodG9saW5lLHRvdGV4dCkgPSBmcm9tZGF0YSx0b2RhdGEKICAgICAgICAgICAgIyBmb3IgZWFjaCBmcm9tL3RvIGxpbmUgc3BsaXQgaXQgYXQgdGhlIHdyYXAgY29sdW1uIHRvIGZvcm0KICAgICAgICAgICAgIyBsaXN0IG9mIHRleHQgbGluZXMuCiAgICAgICAgICAgIGZyb21saXN0LHRvbGlzdCA9IFtdLFtdCiAgICAgICAgICAgIHNlbGYuX3NwbGl0X2xpbmUoZnJvbWxpc3QsZnJvbWxpbmUsZnJvbXRleHQpCiAgICAgICAgICAgIHNlbGYuX3NwbGl0X2xpbmUodG9saXN0LHRvbGluZSx0b3RleHQpCiAgICAgICAgICAgICMgeWllbGQgZnJvbS90byBsaW5lIGluIHBhaXJzIGluc2VydGluZyBibGFuayBsaW5lcyBhcwogICAgICAgICAgICAjIG5lY2Vzc2FyeSB3aGVuIG9uZSBzaWRlIGhhcyBtb3JlIHdyYXBwZWQgbGluZXMKICAgICAgICAgICAgd2hpbGUgZnJvbWxpc3Qgb3IgdG9saXN0OgogICAgICAgICAgICAgICAgaWYgZnJvbWxpc3Q6CiAgICAgICAgICAgICAgICAgICAgZnJvbWRhdGEgPSBmcm9tbGlzdC5wb3AoMCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZnJvbWRhdGEgPSAoJycsJyAnKQogICAgICAgICAgICAgICAgaWYgdG9saXN0OgogICAgICAgICAgICAgICAgICAgIHRvZGF0YSA9IHRvbGlzdC5wb3AoMCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdG9kYXRhID0gKCcnLCcgJykKICAgICAgICAgICAgICAgIHlpZWxkIGZyb21kYXRhLHRvZGF0YSxmbGFnCgogICAgZGVmIF9jb2xsZWN0X2xpbmVzKHNlbGYsZGlmZnMpOgogICAgICAgICIiIkNvbGxlY3RzIG1kaWZmIG91dHB1dCBpbnRvIHNlcGFyYXRlIGxpc3RzCgogICAgICAgIEJlZm9yZSBzdG9yaW5nIHRoZSBtZGlmZiBmcm9tL3RvIGRhdGEgaW50byBhIGxpc3QsIGl0IGlzIGNvbnZlcnRlZAogICAgICAgIGludG8gYSBzaW5nbGUgbGluZSBvZiB0ZXh0IHdpdGggSFRNTCBtYXJrdXAuCiAgICAgICAgIiIiCgogICAgICAgIGZyb21saXN0LHRvbGlzdCxmbGFnbGlzdCA9IFtdLFtdLFtdCiAgICAgICAgIyBwdWxsIGZyb20vdG8gZGF0YSBhbmQgZmxhZ3MgZnJvbSBtZGlmZiBzdHlsZSBpdGVyYXRvcgogICAgICAgIGZvciBmcm9tZGF0YSx0b2RhdGEsZmxhZyBpbiBkaWZmczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIyBzdG9yZSBIVE1MIG1hcmt1cCBvZiB0aGUgbGluZXMgaW50byB0aGUgbGlzdHMKICAgICAgICAgICAgICAgIGZyb21saXN0LmFwcGVuZChzZWxmLl9mb3JtYXRfbGluZSgwLGZsYWcsKmZyb21kYXRhKSkKICAgICAgICAgICAgICAgIHRvbGlzdC5hcHBlbmQoc2VsZi5fZm9ybWF0X2xpbmUoMSxmbGFnLCp0b2RhdGEpKQogICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgIyBleGNlcHRpb25zIG9jY3VyIGZvciBsaW5lcyB3aGVyZSBjb250ZXh0IHNlcGFyYXRvcnMgZ28KICAgICAgICAgICAgICAgIGZyb21saXN0LmFwcGVuZChOb25lKQogICAgICAgICAgICAgICAgdG9saXN0LmFwcGVuZChOb25lKQogICAgICAgICAgICBmbGFnbGlzdC5hcHBlbmQoZmxhZykKICAgICAgICByZXR1cm4gZnJvbWxpc3QsdG9saXN0LGZsYWdsaXN0CgogICAgZGVmIF9mb3JtYXRfbGluZShzZWxmLHNpZGUsZmxhZyxsaW5lbnVtLHRleHQpOgogICAgICAgICIiIlJldHVybnMgSFRNTCBtYXJrdXAgb2YgImZyb20iIC8gInRvIiB0ZXh0IGxpbmVzCgogICAgICAgIHNpZGUgLS0gMCBvciAxIGluZGljYXRpbmcgImZyb20iIG9yICJ0byIgdGV4dAogICAgICAgIGZsYWcgLS0gaW5kaWNhdGVzIGlmIGRpZmZlcmVuY2Ugb24gbGluZQogICAgICAgIGxpbmVudW0gLS0gbGluZSBudW1iZXIgKHVzZWQgZm9yIGxpbmUgbnVtYmVyIGNvbHVtbikKICAgICAgICB0ZXh0IC0tIGxpbmUgdGV4dCB0byBiZSBtYXJrZWQgdXAKICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGxpbmVudW0gPSAnJWQnICUgbGluZW51bQogICAgICAgICAgICBpZCA9ICcgaWQ9IiVzJXMiJyAlIChzZWxmLl9wcmVmaXhbc2lkZV0sbGluZW51bSkKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAjIGhhbmRsZSBibGFuayBsaW5lcyB3aGVyZSBsaW5lbnVtIGlzICc+JyBvciAnJwogICAgICAgICAgICBpZCA9ICcnCiAgICAgICAgIyByZXBsYWNlIHRob3NlIHRoaW5ncyB0aGF0IHdvdWxkIGdldCBjb25mdXNlZCB3aXRoIEhUTUwgc3ltYm9scwogICAgICAgIHRleHQ9dGV4dC5yZXBsYWNlKCImIiwiJmFtcDsiKS5yZXBsYWNlKCI+IiwiJmd0OyIpLnJlcGxhY2UoIjwiLCImbHQ7IikKCiAgICAgICAgIyBtYWtlIHNwYWNlIG5vbi1icmVha2FibGUgc28gdGhleSBkb24ndCBnZXQgY29tcHJlc3NlZCBvciBsaW5lIHdyYXBwZWQKICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCcgJywnJm5ic3A7JykucnN0cmlwKCkKCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiVzPiVzPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiVzPC90ZD4nIFwKICAgICAgICAgICAgICAgJSAoaWQsbGluZW51bSx0ZXh0KQoKICAgIGRlZiBfbWFrZV9wcmVmaXgoc2VsZik6CiAgICAgICAgIiIiQ3JlYXRlIHVuaXF1ZSBhbmNob3IgcHJlZml4ZXMiIiIKCiAgICAgICAgIyBHZW5lcmF0ZSBhIHVuaXF1ZSBhbmNob3IgcHJlZml4IHNvIG11bHRpcGxlIHRhYmxlcwogICAgICAgICMgY2FuIGV4aXN0IG9uIHRoZSBzYW1lIEhUTUwgcGFnZSB3aXRob3V0IGNvbmZsaWN0cy4KICAgICAgICBmcm9tcHJlZml4ID0gImZyb20lZF8iICUgSHRtbERpZmYuX2RlZmF1bHRfcHJlZml4CiAgICAgICAgdG9wcmVmaXggPSAidG8lZF8iICUgSHRtbERpZmYuX2RlZmF1bHRfcHJlZml4CiAgICAgICAgSHRtbERpZmYuX2RlZmF1bHRfcHJlZml4ICs9IDEKICAgICAgICAjIHN0b3JlIHByZWZpeGVzIHNvIGxpbmUgZm9ybWF0IG1ldGhvZCBoYXMgYWNjZXNzCiAgICAgICAgc2VsZi5fcHJlZml4ID0gW2Zyb21wcmVmaXgsdG9wcmVmaXhdCgogICAgZGVmIF9jb252ZXJ0X2ZsYWdzKHNlbGYsZnJvbWxpc3QsdG9saXN0LGZsYWdsaXN0LGNvbnRleHQsbnVtbGluZXMpOgogICAgICAgICIiIk1ha2VzIGxpc3Qgb2YgIm5leHQiIGxpbmtzIiIiCgogICAgICAgICMgYWxsIGFuY2hvciBuYW1lcyB3aWxsIGJlIGdlbmVyYXRlZCB1c2luZyB0aGUgdW5pcXVlICJ0byIgcHJlZml4CiAgICAgICAgdG9wcmVmaXggPSBzZWxmLl9wcmVmaXhbMV0KCiAgICAgICAgIyBwcm9jZXNzIGNoYW5nZSBmbGFncywgZ2VuZXJhdGluZyBtaWRkbGUgY29sdW1uIG9mIG5leHQgYW5jaG9ycy9saW5rcwogICAgICAgIG5leHRfaWQgPSBbJyddKmxlbihmbGFnbGlzdCkKICAgICAgICBuZXh0X2hyZWYgPSBbJyddKmxlbihmbGFnbGlzdCkKICAgICAgICBudW1fY2hnLCBpbl9jaGFuZ2UgPSAwLCBGYWxzZQogICAgICAgIGxhc3QgPSAwCiAgICAgICAgZm9yIGksZmxhZyBpbiBlbnVtZXJhdGUoZmxhZ2xpc3QpOgogICAgICAgICAgICBpZiBmbGFnOgogICAgICAgICAgICAgICAgaWYgbm90IGluX2NoYW5nZToKICAgICAgICAgICAgICAgICAgICBpbl9jaGFuZ2UgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGkKICAgICAgICAgICAgICAgICAgICAjIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjaGFuZ2UsIGRyb3AgYW4gYW5jaG9yIGEgZmV3IGxpbmVzCiAgICAgICAgICAgICAgICAgICAgIyAodGhlIGNvbnRleHQgbGluZXMpIGJlZm9yZSB0aGUgY2hhbmdlIGZvciB0aGUgcHJldmlvdXMKICAgICAgICAgICAgICAgICAgICAjIGxpbmsKICAgICAgICAgICAgICAgICAgICBpID0gbWF4KFswLGktbnVtbGluZXNdKQogICAgICAgICAgICAgICAgICAgIG5leHRfaWRbaV0gPSAnIGlkPSJkaWZmbGliX2NoZ18lc18lZCInICUgKHRvcHJlZml4LG51bV9jaGcpCiAgICAgICAgICAgICAgICAgICAgIyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgY2hhbmdlLCBkcm9wIGEgbGluayB0byB0aGUgbmV4dAogICAgICAgICAgICAgICAgICAgICMgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgbnVtX2NoZyArPSAxCiAgICAgICAgICAgICAgICAgICAgbmV4dF9ocmVmW2xhc3RdID0gJzxhIGhyZWY9IiNkaWZmbGliX2NoZ18lc18lZCI+bjwvYT4nICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgdG9wcmVmaXgsbnVtX2NoZykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGluX2NoYW5nZSA9IEZhbHNlCiAgICAgICAgIyBjaGVjayBmb3IgY2FzZXMgd2hlcmUgdGhlcmUgaXMgbm8gY29udGVudCB0byBhdm9pZCBleGNlcHRpb25zCiAgICAgICAgaWYgbm90IGZsYWdsaXN0OgogICAgICAgICAgICBmbGFnbGlzdCA9IFtGYWxzZV0KICAgICAgICAgICAgbmV4dF9pZCA9IFsnJ10KICAgICAgICAgICAgbmV4dF9ocmVmID0gWycnXQogICAgICAgICAgICBsYXN0ID0gMAogICAgICAgICAgICBpZiBjb250ZXh0OgogICAgICAgICAgICAgICAgZnJvbWxpc3QgPSBbJzx0ZD48L3RkPjx0ZD4mbmJzcDtObyBEaWZmZXJlbmNlcyBGb3VuZCZuYnNwOzwvdGQ+J10KICAgICAgICAgICAgICAgIHRvbGlzdCA9IGZyb21saXN0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmcm9tbGlzdCA9IHRvbGlzdCA9IFsnPHRkPjwvdGQ+PHRkPiZuYnNwO0VtcHR5IEZpbGUmbmJzcDs8L3RkPiddCiAgICAgICAgIyBpZiBub3QgYSBjaGFuZ2Ugb24gZmlyc3QgbGluZSwgZHJvcCBhIGxpbmsKICAgICAgICBpZiBub3QgZmxhZ2xpc3RbMF06CiAgICAgICAgICAgIG5leHRfaHJlZlswXSA9ICc8YSBocmVmPSIjZGlmZmxpYl9jaGdfJXNfMCI+ZjwvYT4nICUgdG9wcmVmaXgKICAgICAgICAjIHJlZG8gdGhlIGxhc3QgbGluayB0byBsaW5rIHRvIHRoZSB0b3AKICAgICAgICBuZXh0X2hyZWZbbGFzdF0gPSAnPGEgaHJlZj0iI2RpZmZsaWJfY2hnXyVzX3RvcCI+dDwvYT4nICUgKHRvcHJlZml4KQoKICAgICAgICByZXR1cm4gZnJvbWxpc3QsdG9saXN0LGZsYWdsaXN0LG5leHRfaHJlZixuZXh0X2lkCgogICAgZGVmIG1ha2VfdGFibGUoc2VsZixmcm9tbGluZXMsdG9saW5lcyxmcm9tZGVzYz0nJyx0b2Rlc2M9JycsY29udGV4dD1GYWxzZSwKICAgICAgICAgICAgICAgICAgIG51bWxpbmVzPTUpOgogICAgICAgICIiIlJldHVybnMgSFRNTCB0YWJsZSBvZiBzaWRlIGJ5IHNpZGUgY29tcGFyaXNvbiB3aXRoIGNoYW5nZSBoaWdobGlnaHRzCgogICAgICAgIEFyZ3VtZW50czoKICAgICAgICBmcm9tbGluZXMgLS0gbGlzdCBvZiAiZnJvbSIgbGluZXMKICAgICAgICB0b2xpbmVzIC0tIGxpc3Qgb2YgInRvIiBsaW5lcwogICAgICAgIGZyb21kZXNjIC0tICJmcm9tIiBmaWxlIGNvbHVtbiBoZWFkZXIgc3RyaW5nCiAgICAgICAgdG9kZXNjIC0tICJ0byIgZmlsZSBjb2x1bW4gaGVhZGVyIHN0cmluZwogICAgICAgIGNvbnRleHQgLS0gc2V0IHRvIFRydWUgZm9yIGNvbnRleHR1YWwgZGlmZmVyZW5jZXMgKGRlZmF1bHRzIHRvIEZhbHNlCiAgICAgICAgICAgIHdoaWNoIHNob3dzIGZ1bGwgZGlmZmVyZW5jZXMpLgogICAgICAgIG51bWxpbmVzIC0tIG51bWJlciBvZiBjb250ZXh0IGxpbmVzLiAgV2hlbiBjb250ZXh0IGlzIHNldCBUcnVlLAogICAgICAgICAgICBjb250cm9scyBudW1iZXIgb2YgbGluZXMgZGlzcGxheWVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNoYW5nZS4KICAgICAgICAgICAgV2hlbiBjb250ZXh0IGlzIEZhbHNlLCBjb250cm9scyB0aGUgbnVtYmVyIG9mIGxpbmVzIHRvIHBsYWNlCiAgICAgICAgICAgIHRoZSAibmV4dCIgbGluayBhbmNob3JzIGJlZm9yZSB0aGUgbmV4dCBjaGFuZ2UgKHNvIGNsaWNrIG9mCiAgICAgICAgICAgICJuZXh0IiBsaW5rIGp1bXBzIHRvIGp1c3QgYmVmb3JlIHRoZSBjaGFuZ2UpLgogICAgICAgICIiIgoKICAgICAgICAjIG1ha2UgdW5pcXVlIGFuY2hvciBwcmVmaXhlcyBzbyB0aGF0IG11bHRpcGxlIHRhYmxlcyBtYXkgZXhpc3QKICAgICAgICAjIG9uIHRoZSBzYW1lIHBhZ2Ugd2l0aG91dCBjb25mbGljdC4KICAgICAgICBzZWxmLl9tYWtlX3ByZWZpeCgpCgogICAgICAgICMgY2hhbmdlIHRhYnMgdG8gc3BhY2VzIGJlZm9yZSBpdCBnZXRzIG1vcmUgZGlmZmljdWx0IGFmdGVyIHdlIGluc2VydAogICAgICAgICMgbWFya3VwCiAgICAgICAgZnJvbWxpbmVzLHRvbGluZXMgPSBzZWxmLl90YWJfbmV3bGluZV9yZXBsYWNlKGZyb21saW5lcyx0b2xpbmVzKQoKICAgICAgICAjIGNyZWF0ZSBkaWZmcyBpdGVyYXRvciB3aGljaCBnZW5lcmF0ZXMgc2lkZSBieSBzaWRlIGZyb20vdG8gZGF0YQogICAgICAgIGlmIGNvbnRleHQ6CiAgICAgICAgICAgIGNvbnRleHRfbGluZXMgPSBudW1saW5lcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbnRleHRfbGluZXMgPSBOb25lCiAgICAgICAgZGlmZnMgPSBfbWRpZmYoZnJvbWxpbmVzLHRvbGluZXMsY29udGV4dF9saW5lcyxsaW5lanVuaz1zZWxmLl9saW5lanVuaywKICAgICAgICAgICAgICAgICAgICAgIGNoYXJqdW5rPXNlbGYuX2NoYXJqdW5rKQoKICAgICAgICAjIHNldCB1cCBpdGVyYXRvciB0byB3cmFwIGxpbmVzIHRoYXQgZXhjZWVkIGRlc2lyZWQgd2lkdGgKICAgICAgICBpZiBzZWxmLl93cmFwY29sdW1uOgogICAgICAgICAgICBkaWZmcyA9IHNlbGYuX2xpbmVfd3JhcHBlcihkaWZmcykKCiAgICAgICAgIyBjb2xsZWN0IHVwIGZyb20vdG8gbGluZXMgYW5kIGZsYWdzIGludG8gbGlzdHMgKGFsc28gZm9ybWF0IHRoZSBsaW5lcykKICAgICAgICBmcm9tbGlzdCx0b2xpc3QsZmxhZ2xpc3QgPSBzZWxmLl9jb2xsZWN0X2xpbmVzKGRpZmZzKQoKICAgICAgICAjIHByb2Nlc3MgY2hhbmdlIGZsYWdzLCBnZW5lcmF0aW5nIG1pZGRsZSBjb2x1bW4gb2YgbmV4dCBhbmNob3JzL2xpbmtzCiAgICAgICAgZnJvbWxpc3QsdG9saXN0LGZsYWdsaXN0LG5leHRfaHJlZixuZXh0X2lkID0gc2VsZi5fY29udmVydF9mbGFncygKICAgICAgICAgICAgZnJvbWxpc3QsdG9saXN0LGZsYWdsaXN0LGNvbnRleHQsbnVtbGluZXMpCgogICAgICAgIHMgPSBbXQogICAgICAgIGZtdCA9ICcgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiJXM+JXM8L3RkPiVzJyArIFwKICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJkaWZmX25leHQiPiVzPC90ZD4lczwvdHI+XG4nCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGZsYWdsaXN0KSk6CiAgICAgICAgICAgIGlmIGZsYWdsaXN0W2ldIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAjIG1kaWZmIHlpZWxkcyBOb25lIG9uIHNlcGFyYXRvciBsaW5lcyBza2lwIHRoZSBib2d1cyBvbmVzCiAgICAgICAgICAgICAgICAjIGdlbmVyYXRlZCBmb3IgdGhlIGZpcnN0IGxpbmUKICAgICAgICAgICAgICAgIGlmIGkgPiAwOgogICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgICAgICAgIDwvdGJvZHk+ICAgICAgICBcbiAgICAgICAgPHRib2R5PlxuJykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHMuYXBwZW5kKCBmbXQgJSAobmV4dF9pZFtpXSxuZXh0X2hyZWZbaV0sZnJvbWxpc3RbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2hyZWZbaV0sdG9saXN0W2ldKSkKICAgICAgICBpZiBmcm9tZGVzYyBvciB0b2Rlc2M6CiAgICAgICAgICAgIGhlYWRlcl9yb3cgPSAnPHRoZWFkPjx0cj4lcyVzJXMlczwvdHI+PC90aGVhZD4nICUgKAogICAgICAgICAgICAgICAgJzx0aCBjbGFzcz0iZGlmZl9uZXh0Ij48YnIgLz48L3RoPicsCiAgICAgICAgICAgICAgICAnPHRoIGNvbHNwYW49IjIiIGNsYXNzPSJkaWZmX2hlYWRlciI+JXM8L3RoPicgJSBmcm9tZGVzYywKICAgICAgICAgICAgICAgICc8dGggY2xhc3M9ImRpZmZfbmV4dCI+PGJyIC8+PC90aD4nLAogICAgICAgICAgICAgICAgJzx0aCBjb2xzcGFuPSIyIiBjbGFzcz0iZGlmZl9oZWFkZXIiPiVzPC90aD4nICUgdG9kZXNjKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGhlYWRlcl9yb3cgPSAnJwoKICAgICAgICB0YWJsZSA9IHNlbGYuX3RhYmxlX3RlbXBsYXRlICUgZGljdCgKICAgICAgICAgICAgZGF0YV9yb3dzPScnLmpvaW4ocyksCiAgICAgICAgICAgIGhlYWRlcl9yb3c9aGVhZGVyX3JvdywKICAgICAgICAgICAgcHJlZml4PXNlbGYuX3ByZWZpeFsxXSkKCiAgICAgICAgcmV0dXJuIHRhYmxlLnJlcGxhY2UoJ1wwKycsJzxzcGFuIGNsYXNzPSJkaWZmX2FkZCI+JykuIFwKICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSgnXDAtJywnPHNwYW4gY2xhc3M9ImRpZmZfc3ViIj4nKS4gXAogICAgICAgICAgICAgICAgICAgICByZXBsYWNlKCdcMF4nLCc8c3BhbiBjbGFzcz0iZGlmZl9jaGciPicpLiBcCiAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UoJ1wxJywnPC9zcGFuPicpLiBcCiAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UoJ1x0JywnJm5ic3A7JykKCmRlbCByZQoKZGVmIHJlc3RvcmUoZGVsdGEsIHdoaWNoKToKICAgIHIiIiIKICAgIEdlbmVyYXRlIG9uZSBvZiB0aGUgdHdvIHNlcXVlbmNlcyB0aGF0IGdlbmVyYXRlZCBhIGRlbHRhLgoKICAgIEdpdmVuIGEgYGRlbHRhYCBwcm9kdWNlZCBieSBgRGlmZmVyLmNvbXBhcmUoKWAgb3IgYG5kaWZmKClgLCBleHRyYWN0CiAgICBsaW5lcyBvcmlnaW5hdGluZyBmcm9tIGZpbGUgMSBvciAyIChwYXJhbWV0ZXIgYHdoaWNoYCksIHN0cmlwcGluZyBvZmYgbGluZQogICAgcHJlZml4ZXMuCgogICAgRXhhbXBsZXM6CgogICAgPj4+IGRpZmYgPSBuZGlmZignb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSksCiAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogICAgPj4+IGRpZmYgPSBsaXN0KGRpZmYpCiAgICA+Pj4gcHJpbnQoJycuam9pbihyZXN0b3JlKGRpZmYsIDEpKSwgZW5kPSIiKQogICAgb25lCiAgICB0d28KICAgIHRocmVlCiAgICA+Pj4gcHJpbnQoJycuam9pbihyZXN0b3JlKGRpZmYsIDIpKSwgZW5kPSIiKQogICAgb3JlCiAgICB0cmVlCiAgICBlbXUKICAgICIiIgogICAgdHJ5OgogICAgICAgIHRhZyA9IHsxOiAiLSAiLCAyOiAiKyAifVtpbnQod2hpY2gpXQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Vua25vd24gZGVsdGEgY2hvaWNlIChtdXN0IGJlIDEgb3IgMik6ICVyJwogICAgICAgICAgICAgICAgICAgICAgICAgICAlIHdoaWNoKSBmcm9tIE5vbmUKICAgIHByZWZpeGVzID0gKCIgICIsIHRhZykKICAgIGZvciBsaW5lIGluIGRlbHRhOgogICAgICAgIGlmIGxpbmVbOjJdIGluIHByZWZpeGVzOgogICAgICAgICAgICB5aWVsZCBsaW5lWzI6XQoKZGVmIF90ZXN0KCk6CiAgICBpbXBvcnQgZG9jdGVzdCwgZGlmZmxpYgogICAgcmV0dXJuIGRvY3Rlc3QudGVzdG1vZChkaWZmbGliKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIF90ZXN0KCkKUEsDBBQAAAAAAAIgo1YVAoEfIXEAACFxAAAGAAAAZGlzLnB5IiIiRGlzYXNzZW1ibGVyIG9mIFB5dGhvbiBieXRlIGNvZGUgaW50byBtbmVtb25pY3MuIiIiCgppbXBvcnQgc3lzCmltcG9ydCB0eXBlcwppbXBvcnQgY29sbGVjdGlvbnMKaW1wb3J0IGlvCgpmcm9tIG9wY29kZSBpbXBvcnQgKgpmcm9tIG9wY29kZSBpbXBvcnQgKAogICAgX19hbGxfXyBhcyBfb3Bjb2Rlc19hbGwsCiAgICBfY2FjaGVfZm9ybWF0LAogICAgX2lubGluZV9jYWNoZV9lbnRyaWVzLAogICAgX25iX29wcywKICAgIF9zcGVjaWFsaXphdGlvbnMsCiAgICBfc3BlY2lhbGl6ZWRfaW5zdHJ1Y3Rpb25zLAopCgpfX2FsbF9fID0gWyJjb2RlX2luZm8iLCAiZGlzIiwgImRpc2Fzc2VtYmxlIiwgImRpc3RiIiwgImRpc2NvIiwKICAgICAgICAgICAiZmluZGxpbmVzdGFydHMiLCAiZmluZGxhYmVscyIsICJzaG93X2NvZGUiLAogICAgICAgICAgICJnZXRfaW5zdHJ1Y3Rpb25zIiwgIkluc3RydWN0aW9uIiwgIkJ5dGVjb2RlIl0gKyBfb3Bjb2Rlc19hbGwKZGVsIF9vcGNvZGVzX2FsbAoKX2hhdmVfY29kZSA9ICh0eXBlcy5NZXRob2RUeXBlLCB0eXBlcy5GdW5jdGlvblR5cGUsIHR5cGVzLkNvZGVUeXBlLAogICAgICAgICAgICAgIGNsYXNzbWV0aG9kLCBzdGF0aWNtZXRob2QsIHR5cGUpCgpGT1JNQVRfVkFMVUUgPSBvcG1hcFsnRk9STUFUX1ZBTFVFJ10KRk9STUFUX1ZBTFVFX0NPTlZFUlRFUlMgPSAoCiAgICAoTm9uZSwgJycpLAogICAgKHN0ciwgJ3N0cicpLAogICAgKHJlcHIsICdyZXByJyksCiAgICAoYXNjaWksICdhc2NpaScpLAopCk1BS0VfRlVOQ1RJT04gPSBvcG1hcFsnTUFLRV9GVU5DVElPTiddCk1BS0VfRlVOQ1RJT05fRkxBR1MgPSAoJ2RlZmF1bHRzJywgJ2t3ZGVmYXVsdHMnLCAnYW5ub3RhdGlvbnMnLCAnY2xvc3VyZScpCgpMT0FEX0NPTlNUID0gb3BtYXBbJ0xPQURfQ09OU1QnXQpMT0FEX0dMT0JBTCA9IG9wbWFwWydMT0FEX0dMT0JBTCddCkJJTkFSWV9PUCA9IG9wbWFwWydCSU5BUllfT1AnXQpKVU1QX0JBQ0tXQVJEID0gb3BtYXBbJ0pVTVBfQkFDS1dBUkQnXQoKQ0FDSEUgPSBvcG1hcFsiQ0FDSEUiXQoKX2FsbF9vcG5hbWUgPSBsaXN0KG9wbmFtZSkKX2FsbF9vcG1hcCA9IGRpY3Qob3BtYXApCl9lbXB0eV9zbG90ID0gW3Nsb3QgZm9yIHNsb3QsIG5hbWUgaW4gZW51bWVyYXRlKF9hbGxfb3BuYW1lKSBpZiBuYW1lLnN0YXJ0c3dpdGgoIjwiKV0KZm9yIHNwZWNfb3AsIHNwZWNpYWxpemVkIGluIHppcChfZW1wdHlfc2xvdCwgX3NwZWNpYWxpemVkX2luc3RydWN0aW9ucyk6CiAgICAjIGZpbGwgb3BuYW1lIGFuZCBvcG1hcAogICAgX2FsbF9vcG5hbWVbc3BlY19vcF0gPSBzcGVjaWFsaXplZAogICAgX2FsbF9vcG1hcFtzcGVjaWFsaXplZF0gPSBzcGVjX29wCgpkZW9wdG1hcCA9IHsKICAgIHNwZWNpYWxpemVkOiBiYXNlIGZvciBiYXNlLCBmYW1pbHkgaW4gX3NwZWNpYWxpemF0aW9ucy5pdGVtcygpIGZvciBzcGVjaWFsaXplZCBpbiBmYW1pbHkKfQoKZGVmIF90cnlfY29tcGlsZShzb3VyY2UsIG5hbWUpOgogICAgIiIiQXR0ZW1wdHMgdG8gY29tcGlsZSB0aGUgZ2l2ZW4gc291cmNlLCBmaXJzdCBhcyBhbiBleHByZXNzaW9uIGFuZAogICAgICAgdGhlbiBhcyBhIHN0YXRlbWVudCBpZiB0aGUgZmlyc3QgYXBwcm9hY2ggZmFpbHMuCgogICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBhY2NlcHQgc3RyaW5ncyBpbiBmdW5jdGlvbnMgdGhhdCBvdGhlcndpc2UKICAgICAgIGV4cGVjdCBjb2RlIG9iamVjdHMKICAgICIiIgogICAgdHJ5OgogICAgICAgIGMgPSBjb21waWxlKHNvdXJjZSwgbmFtZSwgJ2V2YWwnKQogICAgZXhjZXB0IFN5bnRheEVycm9yOgogICAgICAgIGMgPSBjb21waWxlKHNvdXJjZSwgbmFtZSwgJ2V4ZWMnKQogICAgcmV0dXJuIGMKCmRlZiBkaXMoeD1Ob25lLCAqLCBmaWxlPU5vbmUsIGRlcHRoPU5vbmUsIHNob3dfY2FjaGVzPUZhbHNlLCBhZGFwdGl2ZT1GYWxzZSk6CiAgICAiIiJEaXNhc3NlbWJsZSBjbGFzc2VzLCBtZXRob2RzLCBmdW5jdGlvbnMsIGFuZCBvdGhlciBjb21waWxlZCBvYmplY3RzLgoKICAgIFdpdGggbm8gYXJndW1lbnQsIGRpc2Fzc2VtYmxlIHRoZSBsYXN0IHRyYWNlYmFjay4KCiAgICBDb21waWxlZCBvYmplY3RzIGN1cnJlbnRseSBpbmNsdWRlIGdlbmVyYXRvciBvYmplY3RzLCBhc3luYyBnZW5lcmF0b3IKICAgIG9iamVjdHMsIGFuZCBjb3JvdXRpbmUgb2JqZWN0cywgYWxsIG9mIHdoaWNoIHN0b3JlIHRoZWlyIGNvZGUgb2JqZWN0CiAgICBpbiBhIHNwZWNpYWwgYXR0cmlidXRlLgogICAgIiIiCiAgICBpZiB4IGlzIE5vbmU6CiAgICAgICAgZGlzdGIoZmlsZT1maWxlLCBzaG93X2NhY2hlcz1zaG93X2NhY2hlcywgYWRhcHRpdmU9YWRhcHRpdmUpCiAgICAgICAgcmV0dXJuCiAgICAjIEV4dHJhY3QgZnVuY3Rpb25zIGZyb20gbWV0aG9kcy4KICAgIGlmIGhhc2F0dHIoeCwgJ19fZnVuY19fJyk6CiAgICAgICAgeCA9IHguX19mdW5jX18KICAgICMgRXh0cmFjdCBjb21waWxlZCBjb2RlIG9iamVjdHMgZnJvbS4uLgogICAgaWYgaGFzYXR0cih4LCAnX19jb2RlX18nKTogICMgLi4uYSBmdW5jdGlvbiwgb3IKICAgICAgICB4ID0geC5fX2NvZGVfXwogICAgZWxpZiBoYXNhdHRyKHgsICdnaV9jb2RlJyk6ICAjLi4uYSBnZW5lcmF0b3Igb2JqZWN0LCBvcgogICAgICAgIHggPSB4LmdpX2NvZGUKICAgIGVsaWYgaGFzYXR0cih4LCAnYWdfY29kZScpOiAgIy4uLmFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3Igb2JqZWN0LCBvcgogICAgICAgIHggPSB4LmFnX2NvZGUKICAgIGVsaWYgaGFzYXR0cih4LCAnY3JfY29kZScpOiAgIy4uLmEgY29yb3V0aW5lLgogICAgICAgIHggPSB4LmNyX2NvZGUKICAgICMgUGVyZm9ybSB0aGUgZGlzYXNzZW1ibHkuCiAgICBpZiBoYXNhdHRyKHgsICdfX2RpY3RfXycpOiAgIyBDbGFzcyBvciBtb2R1bGUKICAgICAgICBpdGVtcyA9IHNvcnRlZCh4Ll9fZGljdF9fLml0ZW1zKCkpCiAgICAgICAgZm9yIG5hbWUsIHgxIGluIGl0ZW1zOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHgxLCBfaGF2ZV9jb2RlKToKICAgICAgICAgICAgICAgIHByaW50KCJEaXNhc3NlbWJseSBvZiAlczoiICUgbmFtZSwgZmlsZT1maWxlKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGRpcyh4MSwgZmlsZT1maWxlLCBkZXB0aD1kZXB0aCwgc2hvd19jYWNoZXM9c2hvd19jYWNoZXMsIGFkYXB0aXZlPWFkYXB0aXZlKQogICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoIlNvcnJ5OiIsIG1zZywgZmlsZT1maWxlKQogICAgICAgICAgICAgICAgcHJpbnQoZmlsZT1maWxlKQogICAgZWxpZiBoYXNhdHRyKHgsICdjb19jb2RlJyk6ICMgQ29kZSBvYmplY3QKICAgICAgICBfZGlzYXNzZW1ibGVfcmVjdXJzaXZlKHgsIGZpbGU9ZmlsZSwgZGVwdGg9ZGVwdGgsIHNob3dfY2FjaGVzPXNob3dfY2FjaGVzLCBhZGFwdGl2ZT1hZGFwdGl2ZSkKICAgIGVsaWYgaXNpbnN0YW5jZSh4LCAoYnl0ZXMsIGJ5dGVhcnJheSkpOiAjIFJhdyBieXRlY29kZQogICAgICAgIF9kaXNhc3NlbWJsZV9ieXRlcyh4LCBmaWxlPWZpbGUsIHNob3dfY2FjaGVzPXNob3dfY2FjaGVzKQogICAgZWxpZiBpc2luc3RhbmNlKHgsIHN0cik6ICAgICMgU291cmNlIGNvZGUKICAgICAgICBfZGlzYXNzZW1ibGVfc3RyKHgsIGZpbGU9ZmlsZSwgZGVwdGg9ZGVwdGgsIHNob3dfY2FjaGVzPXNob3dfY2FjaGVzLCBhZGFwdGl2ZT1hZGFwdGl2ZSkKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkb24ndCBrbm93IGhvdyB0byBkaXNhc3NlbWJsZSAlcyBvYmplY3RzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUoeCkuX19uYW1lX18pCgpkZWYgZGlzdGIodGI9Tm9uZSwgKiwgZmlsZT1Ob25lLCBzaG93X2NhY2hlcz1GYWxzZSwgYWRhcHRpdmU9RmFsc2UpOgogICAgIiIiRGlzYXNzZW1ibGUgYSB0cmFjZWJhY2sgKGRlZmF1bHQ6IGxhc3QgdHJhY2ViYWNrKS4iIiIKICAgIGlmIHRiIGlzIE5vbmU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0YiA9IHN5cy5sYXN0X3RyYWNlYmFjawogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJubyBsYXN0IHRyYWNlYmFjayB0byBkaXNhc3NlbWJsZSIpIGZyb20gTm9uZQogICAgICAgIHdoaWxlIHRiLnRiX25leHQ6IHRiID0gdGIudGJfbmV4dAogICAgZGlzYXNzZW1ibGUodGIudGJfZnJhbWUuZl9jb2RlLCB0Yi50Yl9sYXN0aSwgZmlsZT1maWxlLCBzaG93X2NhY2hlcz1zaG93X2NhY2hlcywgYWRhcHRpdmU9YWRhcHRpdmUpCgojIFRoZSBpbnNwZWN0IG1vZHVsZSBpbnRlcnJvZ2F0ZXMgdGhpcyBkaWN0aW9uYXJ5IHRvIGJ1aWxkIGl0cwojIGxpc3Qgb2YgQ09fKiBjb25zdGFudHMuIEl0IGlzIGFsc28gdXNlZCBieSBwcmV0dHlfZmxhZ3MgdG8KIyB0dXJuIHRoZSBjb19mbGFncyBmaWVsZCBpbnRvIGEgaHVtYW4gcmVhZGFibGUgbGlzdC4KQ09NUElMRVJfRkxBR19OQU1FUyA9IHsKICAgICAxOiAiT1BUSU1JWkVEIiwKICAgICAyOiAiTkVXTE9DQUxTIiwKICAgICA0OiAiVkFSQVJHUyIsCiAgICAgODogIlZBUktFWVdPUkRTIiwKICAgIDE2OiAiTkVTVEVEIiwKICAgIDMyOiAiR0VORVJBVE9SIiwKICAgIDY0OiAiTk9GUkVFIiwKICAgMTI4OiAiQ09ST1VUSU5FIiwKICAgMjU2OiAiSVRFUkFCTEVfQ09ST1VUSU5FIiwKICAgNTEyOiAiQVNZTkNfR0VORVJBVE9SIiwKfQoKZGVmIHByZXR0eV9mbGFncyhmbGFncyk6CiAgICAiIiJSZXR1cm4gcHJldHR5IHJlcHJlc2VudGF0aW9uIG9mIGNvZGUgZmxhZ3MuIiIiCiAgICBuYW1lcyA9IFtdCiAgICBmb3IgaSBpbiByYW5nZSgzMik6CiAgICAgICAgZmxhZyA9IDE8PGkKICAgICAgICBpZiBmbGFncyAmIGZsYWc6CiAgICAgICAgICAgIG5hbWVzLmFwcGVuZChDT01QSUxFUl9GTEFHX05BTUVTLmdldChmbGFnLCBoZXgoZmxhZykpKQogICAgICAgICAgICBmbGFncyBePSBmbGFnCiAgICAgICAgICAgIGlmIG5vdCBmbGFnczoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICBlbHNlOgogICAgICAgIG5hbWVzLmFwcGVuZChoZXgoZmxhZ3MpKQogICAgcmV0dXJuICIsICIuam9pbihuYW1lcykKCmNsYXNzIF9Vbmtub3duOgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPHVua25vd24+IgoKIyBTZW50aW5lbCB0byByZXByZXNlbnQgdmFsdWVzIHRoYXQgY2Fubm90IGJlIGNhbGN1bGF0ZWQKVU5LTk9XTiA9IF9Vbmtub3duKCkKCmRlZiBfZ2V0X2NvZGVfb2JqZWN0KHgpOgogICAgIiIiSGVscGVyIHRvIGhhbmRsZSBtZXRob2RzLCBjb21waWxlZCBvciByYXcgY29kZSBvYmplY3RzLCBhbmQgc3RyaW5ncy4iIiIKICAgICMgRXh0cmFjdCBmdW5jdGlvbnMgZnJvbSBtZXRob2RzLgogICAgaWYgaGFzYXR0cih4LCAnX19mdW5jX18nKToKICAgICAgICB4ID0geC5fX2Z1bmNfXwogICAgIyBFeHRyYWN0IGNvbXBpbGVkIGNvZGUgb2JqZWN0cyBmcm9tLi4uCiAgICBpZiBoYXNhdHRyKHgsICdfX2NvZGVfXycpOiAgIyAuLi5hIGZ1bmN0aW9uLCBvcgogICAgICAgIHggPSB4Ll9fY29kZV9fCiAgICBlbGlmIGhhc2F0dHIoeCwgJ2dpX2NvZGUnKTogICMuLi5hIGdlbmVyYXRvciBvYmplY3QsIG9yCiAgICAgICAgeCA9IHguZ2lfY29kZQogICAgZWxpZiBoYXNhdHRyKHgsICdhZ19jb2RlJyk6ICAjLi4uYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBvYmplY3QsIG9yCiAgICAgICAgeCA9IHguYWdfY29kZQogICAgZWxpZiBoYXNhdHRyKHgsICdjcl9jb2RlJyk6ICAjLi4uYSBjb3JvdXRpbmUuCiAgICAgICAgeCA9IHguY3JfY29kZQogICAgIyBIYW5kbGUgc291cmNlIGNvZGUuCiAgICBpZiBpc2luc3RhbmNlKHgsIHN0cik6CiAgICAgICAgeCA9IF90cnlfY29tcGlsZSh4LCAiPGRpc2Fzc2VtYmx5PiIpCiAgICAjIEJ5IG5vdywgaWYgd2UgZG9uJ3QgaGF2ZSBhIGNvZGUgb2JqZWN0LCB3ZSBjYW4ndCBkaXNhc3NlbWJsZSB4LgogICAgaWYgaGFzYXR0cih4LCAnY29fY29kZScpOgogICAgICAgIHJldHVybiB4CiAgICByYWlzZSBUeXBlRXJyb3IoImRvbid0IGtub3cgaG93IHRvIGRpc2Fzc2VtYmxlICVzIG9iamVjdHMiICUKICAgICAgICAgICAgICAgICAgICB0eXBlKHgpLl9fbmFtZV9fKQoKZGVmIF9kZW9wdG9wKG9wKToKICAgIG5hbWUgPSBfYWxsX29wbmFtZVtvcF0KICAgIHJldHVybiBfYWxsX29wbWFwW2Rlb3B0bWFwW25hbWVdXSBpZiBuYW1lIGluIGRlb3B0bWFwIGVsc2Ugb3AKCmRlZiBfZ2V0X2NvZGVfYXJyYXkoY28sIGFkYXB0aXZlKToKICAgIHJldHVybiBjby5fY29fY29kZV9hZGFwdGl2ZSBpZiBhZGFwdGl2ZSBlbHNlIGNvLmNvX2NvZGUKCmRlZiBjb2RlX2luZm8oeCk6CiAgICAiIiJGb3JtYXR0ZWQgZGV0YWlscyBvZiBtZXRob2RzLCBmdW5jdGlvbnMsIG9yIGNvZGUuIiIiCiAgICByZXR1cm4gX2Zvcm1hdF9jb2RlX2luZm8oX2dldF9jb2RlX29iamVjdCh4KSkKCmRlZiBfZm9ybWF0X2NvZGVfaW5mbyhjbyk6CiAgICBsaW5lcyA9IFtdCiAgICBsaW5lcy5hcHBlbmQoIk5hbWU6ICAgICAgICAgICAgICAlcyIgJSBjby5jb19uYW1lKQogICAgbGluZXMuYXBwZW5kKCJGaWxlbmFtZTogICAgICAgICAgJXMiICUgY28uY29fZmlsZW5hbWUpCiAgICBsaW5lcy5hcHBlbmQoIkFyZ3VtZW50IGNvdW50OiAgICAlcyIgJSBjby5jb19hcmdjb3VudCkKICAgIGxpbmVzLmFwcGVuZCgiUG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50czogJXMiICUgY28uY29fcG9zb25seWFyZ2NvdW50KQogICAgbGluZXMuYXBwZW5kKCJLdy1vbmx5IGFyZ3VtZW50czogJXMiICUgY28uY29fa3dvbmx5YXJnY291bnQpCiAgICBsaW5lcy5hcHBlbmQoIk51bWJlciBvZiBsb2NhbHM6ICAlcyIgJSBjby5jb19ubG9jYWxzKQogICAgbGluZXMuYXBwZW5kKCJTdGFjayBzaXplOiAgICAgICAgJXMiICUgY28uY29fc3RhY2tzaXplKQogICAgbGluZXMuYXBwZW5kKCJGbGFnczogICAgICAgICAgICAgJXMiICUgcHJldHR5X2ZsYWdzKGNvLmNvX2ZsYWdzKSkKICAgIGlmIGNvLmNvX2NvbnN0czoKICAgICAgICBsaW5lcy5hcHBlbmQoIkNvbnN0YW50czoiKQogICAgICAgIGZvciBpX2MgaW4gZW51bWVyYXRlKGNvLmNvX2NvbnN0cyk6CiAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiJTRkOiAlciIgJSBpX2MpCiAgICBpZiBjby5jb19uYW1lczoKICAgICAgICBsaW5lcy5hcHBlbmQoIk5hbWVzOiIpCiAgICAgICAgZm9yIGlfbiBpbiBlbnVtZXJhdGUoY28uY29fbmFtZXMpOgogICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiU0ZDogJXMiICUgaV9uKQogICAgaWYgY28uY29fdmFybmFtZXM6CiAgICAgICAgbGluZXMuYXBwZW5kKCJWYXJpYWJsZSBuYW1lczoiKQogICAgICAgIGZvciBpX24gaW4gZW51bWVyYXRlKGNvLmNvX3Zhcm5hbWVzKToKICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIlNGQ6ICVzIiAlIGlfbikKICAgIGlmIGNvLmNvX2ZyZWV2YXJzOgogICAgICAgIGxpbmVzLmFwcGVuZCgiRnJlZSB2YXJpYWJsZXM6IikKICAgICAgICBmb3IgaV9uIGluIGVudW1lcmF0ZShjby5jb19mcmVldmFycyk6CiAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiJTRkOiAlcyIgJSBpX24pCiAgICBpZiBjby5jb19jZWxsdmFyczoKICAgICAgICBsaW5lcy5hcHBlbmQoIkNlbGwgdmFyaWFibGVzOiIpCiAgICAgICAgZm9yIGlfbiBpbiBlbnVtZXJhdGUoY28uY29fY2VsbHZhcnMpOgogICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiU0ZDogJXMiICUgaV9uKQogICAgcmV0dXJuICJcbiIuam9pbihsaW5lcykKCmRlZiBzaG93X2NvZGUoY28sICosIGZpbGU9Tm9uZSk6CiAgICAiIiJQcmludCBkZXRhaWxzIG9mIG1ldGhvZHMsIGZ1bmN0aW9ucywgb3IgY29kZSB0byAqZmlsZSouCgogICAgSWYgKmZpbGUqIGlzIG5vdCBwcm92aWRlZCwgdGhlIG91dHB1dCBpcyBwcmludGVkIG9uIHN0ZG91dC4KICAgICIiIgogICAgcHJpbnQoY29kZV9pbmZvKGNvKSwgZmlsZT1maWxlKQoKUG9zaXRpb25zID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgKICAgICdQb3NpdGlvbnMnLAogICAgWwogICAgICAgICdsaW5lbm8nLAogICAgICAgICdlbmRfbGluZW5vJywKICAgICAgICAnY29sX29mZnNldCcsCiAgICAgICAgJ2VuZF9jb2xfb2Zmc2V0JywKICAgIF0sCiAgICBkZWZhdWx0cz1bTm9uZV0gKiA0CikKCl9JbnN0cnVjdGlvbiA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoCiAgICAiX0luc3RydWN0aW9uIiwKICAgIFsKICAgICAgICAnb3BuYW1lJywKICAgICAgICAnb3Bjb2RlJywKICAgICAgICAnYXJnJywKICAgICAgICAnYXJndmFsJywKICAgICAgICAnYXJncmVwcicsCiAgICAgICAgJ29mZnNldCcsCiAgICAgICAgJ3N0YXJ0c19saW5lJywKICAgICAgICAnaXNfanVtcF90YXJnZXQnLAogICAgICAgICdwb3NpdGlvbnMnCiAgICBdLAogICAgZGVmYXVsdHM9W05vbmVdCikKCl9JbnN0cnVjdGlvbi5vcG5hbWUuX19kb2NfXyA9ICJIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBvcGVyYXRpb24iCl9JbnN0cnVjdGlvbi5vcGNvZGUuX19kb2NfXyA9ICJOdW1lcmljIGNvZGUgZm9yIG9wZXJhdGlvbiIKX0luc3RydWN0aW9uLmFyZy5fX2RvY19fID0gIk51bWVyaWMgYXJndW1lbnQgdG8gb3BlcmF0aW9uIChpZiBhbnkpLCBvdGhlcndpc2UgTm9uZSIKX0luc3RydWN0aW9uLmFyZ3ZhbC5fX2RvY19fID0gIlJlc29sdmVkIGFyZyB2YWx1ZSAoaWYga25vd24pLCBvdGhlcndpc2Ugc2FtZSBhcyBhcmciCl9JbnN0cnVjdGlvbi5hcmdyZXByLl9fZG9jX18gPSAiSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygb3BlcmF0aW9uIGFyZ3VtZW50IgpfSW5zdHJ1Y3Rpb24ub2Zmc2V0Ll9fZG9jX18gPSAiU3RhcnQgaW5kZXggb2Ygb3BlcmF0aW9uIHdpdGhpbiBieXRlY29kZSBzZXF1ZW5jZSIKX0luc3RydWN0aW9uLnN0YXJ0c19saW5lLl9fZG9jX18gPSAiTGluZSBzdGFydGVkIGJ5IHRoaXMgb3Bjb2RlIChpZiBhbnkpLCBvdGhlcndpc2UgTm9uZSIKX0luc3RydWN0aW9uLmlzX2p1bXBfdGFyZ2V0Ll9fZG9jX18gPSAiVHJ1ZSBpZiBvdGhlciBjb2RlIGp1bXBzIHRvIGhlcmUsIG90aGVyd2lzZSBGYWxzZSIKX0luc3RydWN0aW9uLnBvc2l0aW9ucy5fX2RvY19fID0gImRpcy5Qb3NpdGlvbnMgb2JqZWN0IGhvbGRpbmcgdGhlIHNwYW4gb2Ygc291cmNlIGNvZGUgY292ZXJlZCBieSB0aGlzIGluc3RydWN0aW9uIgoKX0V4Y2VwdGlvblRhYmxlRW50cnkgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJfRXhjZXB0aW9uVGFibGVFbnRyeSIsCiAgICAic3RhcnQgZW5kIHRhcmdldCBkZXB0aCBsYXN0aSIpCgpfT1BOQU1FX1dJRFRIID0gMjAKX09QQVJHX1dJRFRIID0gNQoKY2xhc3MgSW5zdHJ1Y3Rpb24oX0luc3RydWN0aW9uKToKICAgICIiIkRldGFpbHMgZm9yIGEgYnl0ZWNvZGUgb3BlcmF0aW9uCgogICAgICAgRGVmaW5lZCBmaWVsZHM6CiAgICAgICAgIG9wbmFtZSAtIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIG9wZXJhdGlvbgogICAgICAgICBvcGNvZGUgLSBudW1lcmljIGNvZGUgZm9yIG9wZXJhdGlvbgogICAgICAgICBhcmcgLSBudW1lcmljIGFyZ3VtZW50IHRvIG9wZXJhdGlvbiAoaWYgYW55KSwgb3RoZXJ3aXNlIE5vbmUKICAgICAgICAgYXJndmFsIC0gcmVzb2x2ZWQgYXJnIHZhbHVlIChpZiBrbm93biksIG90aGVyd2lzZSBzYW1lIGFzIGFyZwogICAgICAgICBhcmdyZXByIC0gaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygb3BlcmF0aW9uIGFyZ3VtZW50CiAgICAgICAgIG9mZnNldCAtIHN0YXJ0IGluZGV4IG9mIG9wZXJhdGlvbiB3aXRoaW4gYnl0ZWNvZGUgc2VxdWVuY2UKICAgICAgICAgc3RhcnRzX2xpbmUgLSBsaW5lIHN0YXJ0ZWQgYnkgdGhpcyBvcGNvZGUgKGlmIGFueSksIG90aGVyd2lzZSBOb25lCiAgICAgICAgIGlzX2p1bXBfdGFyZ2V0IC0gVHJ1ZSBpZiBvdGhlciBjb2RlIGp1bXBzIHRvIGhlcmUsIG90aGVyd2lzZSBGYWxzZQogICAgICAgICBwb3NpdGlvbnMgLSBPcHRpb25hbCBkaXMuUG9zaXRpb25zIG9iamVjdCBob2xkaW5nIHRoZSBzcGFuIG9mIHNvdXJjZSBjb2RlCiAgICAgICAgICAgICAgICAgICAgIGNvdmVyZWQgYnkgdGhpcyBpbnN0cnVjdGlvbgogICAgIiIiCgogICAgZGVmIF9kaXNhc3NlbWJsZShzZWxmLCBsaW5lbm9fd2lkdGg9MywgbWFya19hc19jdXJyZW50PUZhbHNlLCBvZmZzZXRfd2lkdGg9NCk6CiAgICAgICAgIiIiRm9ybWF0IGluc3RydWN0aW9uIGRldGFpbHMgZm9yIGluY2x1c2lvbiBpbiBkaXNhc3NlbWJseSBvdXRwdXQKCiAgICAgICAgKmxpbmVub193aWR0aCogc2V0cyB0aGUgd2lkdGggb2YgdGhlIGxpbmUgbnVtYmVyIGZpZWxkICgwIG9taXRzIGl0KQogICAgICAgICptYXJrX2FzX2N1cnJlbnQqIGluc2VydHMgYSAnLS0+JyBtYXJrZXIgYXJyb3cgYXMgcGFydCBvZiB0aGUgbGluZQogICAgICAgICpvZmZzZXRfd2lkdGgqIHNldHMgdGhlIHdpZHRoIG9mIHRoZSBpbnN0cnVjdGlvbiBvZmZzZXQgZmllbGQKICAgICAgICAiIiIKICAgICAgICBmaWVsZHMgPSBbXQogICAgICAgICMgQ29sdW1uOiBTb3VyY2UgY29kZSBsaW5lIG51bWJlcgogICAgICAgIGlmIGxpbmVub193aWR0aDoKICAgICAgICAgICAgaWYgc2VsZi5zdGFydHNfbGluZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGxpbmVub19mbXQgPSAiJSUlZGQiICUgbGluZW5vX3dpZHRoCiAgICAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKGxpbmVub19mbXQgJSBzZWxmLnN0YXJ0c19saW5lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnICcgKiBsaW5lbm9fd2lkdGgpCiAgICAgICAgIyBDb2x1bW46IEN1cnJlbnQgaW5zdHJ1Y3Rpb24gaW5kaWNhdG9yCiAgICAgICAgaWYgbWFya19hc19jdXJyZW50OgogICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCctLT4nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJyAgICcpCiAgICAgICAgIyBDb2x1bW46IEp1bXAgdGFyZ2V0IG1hcmtlcgogICAgICAgIGlmIHNlbGYuaXNfanVtcF90YXJnZXQ6CiAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJz4+JykKICAgICAgICBlbHNlOgogICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCcgICcpCiAgICAgICAgIyBDb2x1bW46IEluc3RydWN0aW9uIG9mZnNldCBmcm9tIHN0YXJ0IG9mIGNvZGUgc2VxdWVuY2UKICAgICAgICBmaWVsZHMuYXBwZW5kKHJlcHIoc2VsZi5vZmZzZXQpLnJqdXN0KG9mZnNldF93aWR0aCkpCiAgICAgICAgIyBDb2x1bW46IE9wY29kZSBuYW1lCiAgICAgICAgZmllbGRzLmFwcGVuZChzZWxmLm9wbmFtZS5sanVzdChfT1BOQU1FX1dJRFRIKSkKICAgICAgICAjIENvbHVtbjogT3Bjb2RlIGFyZ3VtZW50CiAgICAgICAgaWYgc2VsZi5hcmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQocmVwcihzZWxmLmFyZykucmp1c3QoX09QQVJHX1dJRFRIKSkKICAgICAgICAgICAgIyBDb2x1bW46IE9wY29kZSBhcmd1bWVudCBkZXRhaWxzCiAgICAgICAgICAgIGlmIHNlbGYuYXJncmVwcjoKICAgICAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJygnICsgc2VsZi5hcmdyZXByICsgJyknKQogICAgICAgIHJldHVybiAnICcuam9pbihmaWVsZHMpLnJzdHJpcCgpCgoKZGVmIGdldF9pbnN0cnVjdGlvbnMoeCwgKiwgZmlyc3RfbGluZT1Ob25lLCBzaG93X2NhY2hlcz1GYWxzZSwgYWRhcHRpdmU9RmFsc2UpOgogICAgIiIiSXRlcmF0b3IgZm9yIHRoZSBvcGNvZGVzIGluIG1ldGhvZHMsIGZ1bmN0aW9ucyBvciBjb2RlCgogICAgR2VuZXJhdGVzIGEgc2VyaWVzIG9mIEluc3RydWN0aW9uIG5hbWVkIHR1cGxlcyBnaXZpbmcgdGhlIGRldGFpbHMgb2YKICAgIGVhY2ggb3BlcmF0aW9ucyBpbiB0aGUgc3VwcGxpZWQgY29kZS4KCiAgICBJZiAqZmlyc3RfbGluZSogaXMgbm90IE5vbmUsIGl0IGluZGljYXRlcyB0aGUgbGluZSBudW1iZXIgdGhhdCBzaG91bGQKICAgIGJlIHJlcG9ydGVkIGZvciB0aGUgZmlyc3Qgc291cmNlIGxpbmUgaW4gdGhlIGRpc2Fzc2VtYmxlZCBjb2RlLgogICAgT3RoZXJ3aXNlLCB0aGUgc291cmNlIGxpbmUgaW5mb3JtYXRpb24gKGlmIGFueSkgaXMgdGFrZW4gZGlyZWN0bHkgZnJvbQogICAgdGhlIGRpc2Fzc2VtYmxlZCBjb2RlIG9iamVjdC4KICAgICIiIgogICAgY28gPSBfZ2V0X2NvZGVfb2JqZWN0KHgpCiAgICBsaW5lc3RhcnRzID0gZGljdChmaW5kbGluZXN0YXJ0cyhjbykpCiAgICBpZiBmaXJzdF9saW5lIGlzIG5vdCBOb25lOgogICAgICAgIGxpbmVfb2Zmc2V0ID0gZmlyc3RfbGluZSAtIGNvLmNvX2ZpcnN0bGluZW5vCiAgICBlbHNlOgogICAgICAgIGxpbmVfb2Zmc2V0ID0gMAogICAgcmV0dXJuIF9nZXRfaW5zdHJ1Y3Rpb25zX2J5dGVzKF9nZXRfY29kZV9hcnJheShjbywgYWRhcHRpdmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvLl92YXJuYW1lX2Zyb21fb3BhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY28uY29fbmFtZXMsIGNvLmNvX2NvbnN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc3RhcnRzLCBsaW5lX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb19wb3NpdGlvbnM9Y28uY29fcG9zaXRpb25zKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19jYWNoZXM9c2hvd19jYWNoZXMpCgpkZWYgX2dldF9jb25zdF92YWx1ZShvcCwgYXJnLCBjb19jb25zdHMpOgogICAgIiIiSGVscGVyIHRvIGdldCB0aGUgdmFsdWUgb2YgdGhlIGNvbnN0IGluIGEgaGFzY29uc3Qgb3AuCgogICAgICAgUmV0dXJucyB0aGUgZGVyZWZlcmVuY2VkIGNvbnN0YW50IGlmIHRoaXMgaXMgcG9zc2libGUuCiAgICAgICBPdGhlcndpc2UgKGlmIGl0IGlzIGEgTE9BRF9DT05TVCBhbmQgY29fY29uc3RzIGlzIG5vdAogICAgICAgcHJvdmlkZWQpIHJldHVybnMgdGhlIGRpcy5VTktOT1dOIHNlbnRpbmVsLgogICAgIiIiCiAgICBhc3NlcnQgb3AgaW4gaGFzY29uc3QKCiAgICBhcmd2YWwgPSBVTktOT1dOCiAgICBpZiBvcCA9PSBMT0FEX0NPTlNUOgogICAgICAgIGlmIGNvX2NvbnN0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgYXJndmFsID0gY29fY29uc3RzW2FyZ10KICAgIHJldHVybiBhcmd2YWwKCmRlZiBfZ2V0X2NvbnN0X2luZm8ob3AsIGFyZywgY29fY29uc3RzKToKICAgICIiIkhlbHBlciB0byBnZXQgb3B0aW9uYWwgZGV0YWlscyBhYm91dCBjb25zdCByZWZlcmVuY2VzCgogICAgICAgUmV0dXJucyB0aGUgZGVyZWZlcmVuY2VkIGNvbnN0YW50IGFuZCBpdHMgcmVwciBpZiB0aGUgdmFsdWUKICAgICAgIGNhbiBiZSBjYWxjdWxhdGVkLgogICAgICAgT3RoZXJ3aXNlIHJldHVybnMgdGhlIHNlbnRpbmVsIHZhbHVlIGRpcy5VTktOT1dOIGZvciB0aGUgdmFsdWUKICAgICAgIGFuZCBhbiBlbXB0eSBzdHJpbmcgZm9yIGl0cyByZXByLgogICAgIiIiCiAgICBhcmd2YWwgPSBfZ2V0X2NvbnN0X3ZhbHVlKG9wLCBhcmcsIGNvX2NvbnN0cykKICAgIGFyZ3JlcHIgPSByZXByKGFyZ3ZhbCkgaWYgYXJndmFsIGlzIG5vdCBVTktOT1dOIGVsc2UgJycKICAgIHJldHVybiBhcmd2YWwsIGFyZ3JlcHIKCmRlZiBfZ2V0X25hbWVfaW5mbyhuYW1lX2luZGV4LCBnZXRfbmFtZSwgKipleHRyYWluZm8pOgogICAgIiIiSGVscGVyIHRvIGdldCBvcHRpb25hbCBkZXRhaWxzIGFib3V0IG5hbWVkIHJlZmVyZW5jZXMKCiAgICAgICBSZXR1cm5zIHRoZSBkZXJlZmVyZW5jZWQgbmFtZSBhcyBib3RoIHZhbHVlIGFuZCByZXByIGlmIHRoZSBuYW1lCiAgICAgICBsaXN0IGlzIGRlZmluZWQuCiAgICAgICBPdGhlcndpc2UgcmV0dXJucyB0aGUgc2VudGluZWwgdmFsdWUgZGlzLlVOS05PV04gZm9yIHRoZSB2YWx1ZQogICAgICAgYW5kIGFuIGVtcHR5IHN0cmluZyBmb3IgaXRzIHJlcHIuCiAgICAiIiIKICAgIGlmIGdldF9uYW1lIGlzIG5vdCBOb25lOgogICAgICAgIGFyZ3ZhbCA9IGdldF9uYW1lKG5hbWVfaW5kZXgsICoqZXh0cmFpbmZvKQogICAgICAgIHJldHVybiBhcmd2YWwsIGFyZ3ZhbAogICAgZWxzZToKICAgICAgICByZXR1cm4gVU5LTk9XTiwgJycKCmRlZiBfcGFyc2VfdmFyaW50KGl0ZXJhdG9yKToKICAgIGIgPSBuZXh0KGl0ZXJhdG9yKQogICAgdmFsID0gYiAmIDYzCiAgICB3aGlsZSBiJjY0OgogICAgICAgIHZhbCA8PD0gNgogICAgICAgIGIgPSBuZXh0KGl0ZXJhdG9yKQogICAgICAgIHZhbCB8PSBiJjYzCiAgICByZXR1cm4gdmFsCgpkZWYgX3BhcnNlX2V4Y2VwdGlvbl90YWJsZShjb2RlKToKICAgIGl0ZXJhdG9yID0gaXRlcihjb2RlLmNvX2V4Y2VwdGlvbnRhYmxlKQogICAgZW50cmllcyA9IFtdCiAgICB0cnk6CiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgc3RhcnQgPSBfcGFyc2VfdmFyaW50KGl0ZXJhdG9yKSoyCiAgICAgICAgICAgIGxlbmd0aCA9IF9wYXJzZV92YXJpbnQoaXRlcmF0b3IpKjIKICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBsZW5ndGgKICAgICAgICAgICAgdGFyZ2V0ID0gX3BhcnNlX3ZhcmludChpdGVyYXRvcikqMgogICAgICAgICAgICBkbCA9IF9wYXJzZV92YXJpbnQoaXRlcmF0b3IpCiAgICAgICAgICAgIGRlcHRoID0gZGwgPj4gMQogICAgICAgICAgICBsYXN0aSA9IGJvb2woZGwmMSkKICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoX0V4Y2VwdGlvblRhYmxlRW50cnkoc3RhcnQsIGVuZCwgdGFyZ2V0LCBkZXB0aCwgbGFzdGkpKQogICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgcmV0dXJuIGVudHJpZXMKCmRlZiBfaXNfYmFja3dhcmRfanVtcChvcCk6CiAgICByZXR1cm4gJ0pVTVBfQkFDS1dBUkQnIGluIG9wbmFtZVtvcF0KCmRlZiBfZ2V0X2luc3RydWN0aW9uc19ieXRlcyhjb2RlLCB2YXJuYW1lX2Zyb21fb3Bhcmc9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzPU5vbmUsIGNvX2NvbnN0cz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXN0YXJ0cz1Ob25lLCBsaW5lX29mZnNldD0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2VudHJpZXM9KCksIGNvX3Bvc2l0aW9ucz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19jYWNoZXM9RmFsc2UpOgogICAgIiIiSXRlcmF0ZSBvdmVyIHRoZSBpbnN0cnVjdGlvbnMgaW4gYSBieXRlY29kZSBzdHJpbmcuCgogICAgR2VuZXJhdGVzIGEgc2VxdWVuY2Ugb2YgSW5zdHJ1Y3Rpb24gbmFtZWR0dXBsZXMgZ2l2aW5nIHRoZSBkZXRhaWxzIG9mIGVhY2gKICAgIG9wY29kZS4gIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvZGUncyBydW50aW1lIGVudmlyb25tZW50CiAgICAoZS5nLiB2YXJpYWJsZSBuYW1lcywgY29fY29uc3RzKSBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIG9wdGlvbmFsCiAgICBhcmd1bWVudHMuCgogICAgIiIiCiAgICBjb19wb3NpdGlvbnMgPSBjb19wb3NpdGlvbnMgb3IgaXRlcigoKSkKICAgIGdldF9uYW1lID0gTm9uZSBpZiBuYW1lcyBpcyBOb25lIGVsc2UgbmFtZXMuX19nZXRpdGVtX18KICAgIGxhYmVscyA9IHNldChmaW5kbGFiZWxzKGNvZGUpKQogICAgZm9yIHN0YXJ0LCBlbmQsIHRhcmdldCwgXywgXyBpbiBleGNlcHRpb25fZW50cmllczoKICAgICAgICBmb3IgaSBpbiByYW5nZShzdGFydCwgZW5kKToKICAgICAgICAgICAgbGFiZWxzLmFkZCh0YXJnZXQpCiAgICBzdGFydHNfbGluZSA9IE5vbmUKICAgIGZvciBvZmZzZXQsIG9wLCBhcmcgaW4gX3VucGFja19vcGFyZ3MoY29kZSk6CiAgICAgICAgaWYgbGluZXN0YXJ0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3RhcnRzX2xpbmUgPSBsaW5lc3RhcnRzLmdldChvZmZzZXQsIE5vbmUpCiAgICAgICAgICAgIGlmIHN0YXJ0c19saW5lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc3RhcnRzX2xpbmUgKz0gbGluZV9vZmZzZXQKICAgICAgICBpc19qdW1wX3RhcmdldCA9IG9mZnNldCBpbiBsYWJlbHMKICAgICAgICBhcmd2YWwgPSBOb25lCiAgICAgICAgYXJncmVwciA9ICcnCiAgICAgICAgcG9zaXRpb25zID0gUG9zaXRpb25zKCpuZXh0KGNvX3Bvc2l0aW9ucywgKCkpKQogICAgICAgIGRlb3AgPSBfZGVvcHRvcChvcCkKICAgICAgICBpZiBhcmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgIFNldCBhcmd2YWwgdG8gdGhlIGRlcmVmZXJlbmNlZCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQgd2hlbgogICAgICAgICAgICAjICBhdmFpbGFibGUsIGFuZCBhcmdyZXByIHRvIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYXJndmFsLgogICAgICAgICAgICAjICAgIF9kaXNhc3NlbWJsZV9ieXRlcyBuZWVkcyB0aGUgc3RyaW5nIHJlcHIgb2YgdGhlCiAgICAgICAgICAgICMgICAgcmF3IG5hbWUgaW5kZXggZm9yIExPQURfR0xPQkFMLCBMT0FEX0NPTlNULCBldGMuCiAgICAgICAgICAgIGFyZ3ZhbCA9IGFyZwogICAgICAgICAgICBpZiBkZW9wIGluIGhhc2NvbnN0OgogICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9jb25zdF9pbmZvKGRlb3AsIGFyZywgY29fY29uc3RzKQogICAgICAgICAgICBlbGlmIGRlb3AgaW4gaGFzbmFtZToKICAgICAgICAgICAgICAgIGlmIGRlb3AgPT0gTE9BRF9HTE9CQUw6CiAgICAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLy8yLCBnZXRfbmFtZSkKICAgICAgICAgICAgICAgICAgICBpZiAoYXJnICYgMSkgYW5kIGFyZ3JlcHI6CiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAiTlVMTCArICIgKyBhcmdyZXByCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgZ2V0X25hbWUpCiAgICAgICAgICAgIGVsaWYgZGVvcCBpbiBoYXNqYWJzOgogICAgICAgICAgICAgICAgYXJndmFsID0gYXJnKjIKICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAidG8gIiArIHJlcHIoYXJndmFsKQogICAgICAgICAgICBlbGlmIGRlb3AgaW4gaGFzanJlbDoKICAgICAgICAgICAgICAgIHNpZ25lZF9hcmcgPSAtYXJnIGlmIF9pc19iYWNrd2FyZF9qdW1wKGRlb3ApIGVsc2UgYXJnCiAgICAgICAgICAgICAgICBhcmd2YWwgPSBvZmZzZXQgKyAyICsgc2lnbmVkX2FyZyoyCiAgICAgICAgICAgICAgICBhcmdyZXByID0gInRvICIgKyByZXByKGFyZ3ZhbCkKICAgICAgICAgICAgZWxpZiBkZW9wIGluIGhhc2xvY2FsIG9yIGRlb3AgaW4gaGFzZnJlZToKICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgdmFybmFtZV9mcm9tX29wYXJnKQogICAgICAgICAgICBlbGlmIGRlb3AgaW4gaGFzY29tcGFyZToKICAgICAgICAgICAgICAgIGFyZ3ZhbCA9IGNtcF9vcFthcmddCiAgICAgICAgICAgICAgICBhcmdyZXByID0gYXJndmFsCiAgICAgICAgICAgIGVsaWYgZGVvcCA9PSBGT1JNQVRfVkFMVUU6CiAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBGT1JNQVRfVkFMVUVfQ09OVkVSVEVSU1thcmcgJiAweDNdCiAgICAgICAgICAgICAgICBhcmd2YWwgPSAoYXJndmFsLCBib29sKGFyZyAmIDB4NCkpCiAgICAgICAgICAgICAgICBpZiBhcmd2YWxbMV06CiAgICAgICAgICAgICAgICAgICAgaWYgYXJncmVwcjoKICAgICAgICAgICAgICAgICAgICAgICAgYXJncmVwciArPSAnLCAnCiAgICAgICAgICAgICAgICAgICAgYXJncmVwciArPSAnd2l0aCBmb3JtYXQnCiAgICAgICAgICAgIGVsaWYgZGVvcCA9PSBNQUtFX0ZVTkNUSU9OOgogICAgICAgICAgICAgICAgYXJncmVwciA9ICcsICcuam9pbihzIGZvciBpLCBzIGluIGVudW1lcmF0ZShNQUtFX0ZVTkNUSU9OX0ZMQUdTKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcmcgJiAoMTw8aSkpCiAgICAgICAgICAgIGVsaWYgZGVvcCA9PSBCSU5BUllfT1A6CiAgICAgICAgICAgICAgICBfLCBhcmdyZXByID0gX25iX29wc1thcmddCiAgICAgICAgeWllbGQgSW5zdHJ1Y3Rpb24oX2FsbF9vcG5hbWVbb3BdLCBvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIGFyZ3ZhbCwgYXJncmVwciwKICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIHN0YXJ0c19saW5lLCBpc19qdW1wX3RhcmdldCwgcG9zaXRpb25zKQogICAgICAgIGNhY2hlcyA9IF9pbmxpbmVfY2FjaGVfZW50cmllc1tkZW9wXQogICAgICAgIGlmIG5vdCBjYWNoZXM6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgbm90IHNob3dfY2FjaGVzOgogICAgICAgICAgICAjIFdlIHN0aWxsIG5lZWQgdG8gYWR2YW5jZSB0aGUgY29fcG9zaXRpb25zIGl0ZXJhdG9yOgogICAgICAgICAgICBmb3IgXyBpbiByYW5nZShjYWNoZXMpOgogICAgICAgICAgICAgICAgbmV4dChjb19wb3NpdGlvbnMsICgpKQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGZvciBuYW1lLCBzaXplIGluIF9jYWNoZV9mb3JtYXRbb3BuYW1lW2Rlb3BdXS5pdGVtcygpOgogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShzaXplKToKICAgICAgICAgICAgICAgIG9mZnNldCArPSAyCiAgICAgICAgICAgICAgICAjIE9ubHkgc2hvdyB0aGUgZmFuY3kgYXJncmVwciBmb3IgYSBDQUNIRSBpbnN0cnVjdGlvbiB3aGVuIGl0J3MKICAgICAgICAgICAgICAgICMgdGhlIGZpcnN0IGVudHJ5IGZvciBhIHBhcnRpY3VsYXIgY2FjaGUgdmFsdWUgYW5kIHRoZQogICAgICAgICAgICAgICAgIyBpbnN0cnVjdGlvbiB1c2luZyBpdCBpcyBhY3R1YWxseSBxdWlja2VuZWQ6CiAgICAgICAgICAgICAgICBpZiBpID09IDAgYW5kIG9wICE9IGRlb3A6CiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGNvZGVbb2Zmc2V0OiBvZmZzZXQgKyAyICogc2l6ZV0KICAgICAgICAgICAgICAgICAgICBhcmdyZXByID0gZiJ7bmFtZX06IHtpbnQuZnJvbV9ieXRlcyhkYXRhLCBzeXMuYnl0ZW9yZGVyKX0iCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAiIgogICAgICAgICAgICAgICAgeWllbGQgSW5zdHJ1Y3Rpb24oCiAgICAgICAgICAgICAgICAgICAgIkNBQ0hFIiwgQ0FDSEUsIDAsIE5vbmUsIGFyZ3JlcHIsIG9mZnNldCwgTm9uZSwgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgUG9zaXRpb25zKCpuZXh0KGNvX3Bvc2l0aW9ucywgKCkpKQogICAgICAgICAgICAgICAgKQoKZGVmIGRpc2Fzc2VtYmxlKGNvLCBsYXN0aT0tMSwgKiwgZmlsZT1Ob25lLCBzaG93X2NhY2hlcz1GYWxzZSwgYWRhcHRpdmU9RmFsc2UpOgogICAgIiIiRGlzYXNzZW1ibGUgYSBjb2RlIG9iamVjdC4iIiIKICAgIGxpbmVzdGFydHMgPSBkaWN0KGZpbmRsaW5lc3RhcnRzKGNvKSkKICAgIGV4Y2VwdGlvbl9lbnRyaWVzID0gX3BhcnNlX2V4Y2VwdGlvbl90YWJsZShjbykKICAgIF9kaXNhc3NlbWJsZV9ieXRlcyhfZ2V0X2NvZGVfYXJyYXkoY28sIGFkYXB0aXZlKSwKICAgICAgICAgICAgICAgICAgICAgICBsYXN0aSwgY28uX3Zhcm5hbWVfZnJvbV9vcGFyZywKICAgICAgICAgICAgICAgICAgICAgICBjby5jb19uYW1lcywgY28uY29fY29uc3RzLCBsaW5lc3RhcnRzLCBmaWxlPWZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2VudHJpZXM9ZXhjZXB0aW9uX2VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgY29fcG9zaXRpb25zPWNvLmNvX3Bvc2l0aW9ucygpLCBzaG93X2NhY2hlcz1zaG93X2NhY2hlcykKCmRlZiBfZGlzYXNzZW1ibGVfcmVjdXJzaXZlKGNvLCAqLCBmaWxlPU5vbmUsIGRlcHRoPU5vbmUsIHNob3dfY2FjaGVzPUZhbHNlLCBhZGFwdGl2ZT1GYWxzZSk6CiAgICBkaXNhc3NlbWJsZShjbywgZmlsZT1maWxlLCBzaG93X2NhY2hlcz1zaG93X2NhY2hlcywgYWRhcHRpdmU9YWRhcHRpdmUpCiAgICBpZiBkZXB0aCBpcyBOb25lIG9yIGRlcHRoID4gMDoKICAgICAgICBpZiBkZXB0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKICAgICAgICBmb3IgeCBpbiBjby5jb19jb25zdHM6CiAgICAgICAgICAgIGlmIGhhc2F0dHIoeCwgJ2NvX2NvZGUnKToKICAgICAgICAgICAgICAgIHByaW50KGZpbGU9ZmlsZSkKICAgICAgICAgICAgICAgIHByaW50KCJEaXNhc3NlbWJseSBvZiAlcjoiICUgKHgsKSwgZmlsZT1maWxlKQogICAgICAgICAgICAgICAgX2Rpc2Fzc2VtYmxlX3JlY3Vyc2l2ZSgKICAgICAgICAgICAgICAgICAgICB4LCBmaWxlPWZpbGUsIGRlcHRoPWRlcHRoLCBzaG93X2NhY2hlcz1zaG93X2NhY2hlcywgYWRhcHRpdmU9YWRhcHRpdmUKICAgICAgICAgICAgICAgICkKCmRlZiBfZGlzYXNzZW1ibGVfYnl0ZXMoY29kZSwgbGFzdGk9LTEsIHZhcm5hbWVfZnJvbV9vcGFyZz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgIG5hbWVzPU5vbmUsIGNvX2NvbnN0cz1Ob25lLCBsaW5lc3RhcnRzPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgKiwgZmlsZT1Ob25lLCBsaW5lX29mZnNldD0wLCBleGNlcHRpb25fZW50cmllcz0oKSwKICAgICAgICAgICAgICAgICAgICAgICBjb19wb3NpdGlvbnM9Tm9uZSwgc2hvd19jYWNoZXM9RmFsc2UpOgogICAgIyBPbWl0IHRoZSBsaW5lIG51bWJlciBjb2x1bW4gZW50aXJlbHkgaWYgd2UgaGF2ZSBubyBsaW5lIG51bWJlciBpbmZvCiAgICBzaG93X2xpbmVubyA9IGJvb2wobGluZXN0YXJ0cykKICAgIGlmIHNob3dfbGluZW5vOgogICAgICAgIG1heGxpbmVubyA9IG1heChsaW5lc3RhcnRzLnZhbHVlcygpKSArIGxpbmVfb2Zmc2V0CiAgICAgICAgaWYgbWF4bGluZW5vID49IDEwMDA6CiAgICAgICAgICAgIGxpbmVub193aWR0aCA9IGxlbihzdHIobWF4bGluZW5vKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBsaW5lbm9fd2lkdGggPSAzCiAgICBlbHNlOgogICAgICAgIGxpbmVub193aWR0aCA9IDAKICAgIG1heG9mZnNldCA9IGxlbihjb2RlKSAtIDIKICAgIGlmIG1heG9mZnNldCA+PSAxMDAwMDoKICAgICAgICBvZmZzZXRfd2lkdGggPSBsZW4oc3RyKG1heG9mZnNldCkpCiAgICBlbHNlOgogICAgICAgIG9mZnNldF93aWR0aCA9IDQKICAgIGZvciBpbnN0ciBpbiBfZ2V0X2luc3RydWN0aW9uc19ieXRlcyhjb2RlLCB2YXJuYW1lX2Zyb21fb3BhcmcsIG5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvX2NvbnN0cywgbGluZXN0YXJ0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX29mZnNldD1saW5lX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25fZW50cmllcz1leGNlcHRpb25fZW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb19wb3NpdGlvbnM9Y29fcG9zaXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfY2FjaGVzPXNob3dfY2FjaGVzKToKICAgICAgICBuZXdfc291cmNlX2xpbmUgPSAoc2hvd19saW5lbm8gYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RyLnN0YXJ0c19saW5lIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ci5vZmZzZXQgPiAwKQogICAgICAgIGlmIG5ld19zb3VyY2VfbGluZToKICAgICAgICAgICAgcHJpbnQoZmlsZT1maWxlKQogICAgICAgIGlzX2N1cnJlbnRfaW5zdHIgPSBpbnN0ci5vZmZzZXQgPT0gbGFzdGkKICAgICAgICBwcmludChpbnN0ci5fZGlzYXNzZW1ibGUobGluZW5vX3dpZHRoLCBpc19jdXJyZW50X2luc3RyLCBvZmZzZXRfd2lkdGgpLAogICAgICAgICAgICAgIGZpbGU9ZmlsZSkKICAgIGlmIGV4Y2VwdGlvbl9lbnRyaWVzOgogICAgICAgIHByaW50KCJFeGNlcHRpb25UYWJsZToiLCBmaWxlPWZpbGUpCiAgICAgICAgZm9yIGVudHJ5IGluIGV4Y2VwdGlvbl9lbnRyaWVzOgogICAgICAgICAgICBsYXN0aSA9ICIgbGFzdGkiIGlmIGVudHJ5Lmxhc3RpIGVsc2UgIiIKICAgICAgICAgICAgZW5kID0gZW50cnkuZW5kLTIKICAgICAgICAgICAgcHJpbnQoZiIgIHtlbnRyeS5zdGFydH0gdG8ge2VuZH0gLT4ge2VudHJ5LnRhcmdldH0gW3tlbnRyeS5kZXB0aH1de2xhc3RpfSIsIGZpbGU9ZmlsZSkKCmRlZiBfZGlzYXNzZW1ibGVfc3RyKHNvdXJjZSwgKiprd2FyZ3MpOgogICAgIiIiQ29tcGlsZSB0aGUgc291cmNlIHN0cmluZywgdGhlbiBkaXNhc3NlbWJsZSB0aGUgY29kZSBvYmplY3QuIiIiCiAgICBfZGlzYXNzZW1ibGVfcmVjdXJzaXZlKF90cnlfY29tcGlsZShzb3VyY2UsICc8ZGlzPicpLCAqKmt3YXJncykKCmRpc2NvID0gZGlzYXNzZW1ibGUgICAgICAgICAgICAgICAgICAgICAjIFhYWCBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKCgojIFJlbHkgb24gQyBgaW50YCBiZWluZyAzMiBiaXRzIGZvciBvcGFyZwpfSU5UX0JJVFMgPSAzMgojIFZhbHVlIGZvciBjIGludCB3aGVuIGl0IG92ZXJmbG93cwpfSU5UX09WRVJGTE9XID0gMiAqKiAoX0lOVF9CSVRTIC0gMSkKCmRlZiBfdW5wYWNrX29wYXJncyhjb2RlKToKICAgIGV4dGVuZGVkX2FyZyA9IDAKICAgIGNhY2hlcyA9IDAKICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjb2RlKSwgMik6CiAgICAgICAgIyBTa2lwIGlubGluZSBDQUNIRSBlbnRyaWVzOgogICAgICAgIGlmIGNhY2hlczoKICAgICAgICAgICAgY2FjaGVzIC09IDEKICAgICAgICAgICAgY29udGludWUKICAgICAgICBvcCA9IGNvZGVbaV0KICAgICAgICBkZW9wID0gX2Rlb3B0b3Aob3ApCiAgICAgICAgY2FjaGVzID0gX2lubGluZV9jYWNoZV9lbnRyaWVzW2Rlb3BdCiAgICAgICAgaWYgZGVvcCA+PSBIQVZFX0FSR1VNRU5UOgogICAgICAgICAgICBhcmcgPSBjb2RlW2krMV0gfCBleHRlbmRlZF9hcmcKICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gKGFyZyA8PCA4KSBpZiBkZW9wID09IEVYVEVOREVEX0FSRyBlbHNlIDAKICAgICAgICAgICAgIyBUaGUgb3BhcmcgaXMgc3RvcmVkIGFzIGEgc2lnbmVkIGludGVnZXIKICAgICAgICAgICAgIyBJZiB0aGUgdmFsdWUgZXhjZWVkcyBpdHMgdXBwZXIgbGltaXQsIGl0IHdpbGwgb3ZlcmZsb3cgYW5kIHdyYXAKICAgICAgICAgICAgIyB0byBhIG5lZ2F0aXZlIGludGVnZXIKICAgICAgICAgICAgaWYgZXh0ZW5kZWRfYXJnID49IF9JTlRfT1ZFUkZMT1c6CiAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmcgLT0gMiAqIF9JTlRfT1ZFUkZMT1cKICAgICAgICBlbHNlOgogICAgICAgICAgICBhcmcgPSBOb25lCiAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IDAKICAgICAgICB5aWVsZCAoaSwgb3AsIGFyZykKCmRlZiBmaW5kbGFiZWxzKGNvZGUpOgogICAgIiIiRGV0ZWN0IGFsbCBvZmZzZXRzIGluIGEgYnl0ZSBjb2RlIHdoaWNoIGFyZSBqdW1wIHRhcmdldHMuCgogICAgUmV0dXJuIHRoZSBsaXN0IG9mIG9mZnNldHMuCgogICAgIiIiCiAgICBsYWJlbHMgPSBbXQogICAgZm9yIG9mZnNldCwgb3AsIGFyZyBpbiBfdW5wYWNrX29wYXJncyhjb2RlKToKICAgICAgICBpZiBhcmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIG9wIGluIGhhc2pyZWw6CiAgICAgICAgICAgICAgICBpZiBfaXNfYmFja3dhcmRfanVtcChvcCk6CiAgICAgICAgICAgICAgICAgICAgYXJnID0gLWFyZwogICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAyICsgYXJnKjIKICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNqYWJzOgogICAgICAgICAgICAgICAgbGFiZWwgPSBhcmcqMgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIGxhYmVsczoKICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQobGFiZWwpCiAgICByZXR1cm4gbGFiZWxzCgpkZWYgZmluZGxpbmVzdGFydHMoY29kZSk6CiAgICAiIiJGaW5kIHRoZSBvZmZzZXRzIGluIGEgYnl0ZSBjb2RlIHdoaWNoIGFyZSBzdGFydCBvZiBsaW5lcyBpbiB0aGUgc291cmNlLgoKICAgIEdlbmVyYXRlIHBhaXJzIChvZmZzZXQsIGxpbmVubykKICAgICIiIgogICAgbGFzdGxpbmUgPSBOb25lCiAgICBmb3Igc3RhcnQsIGVuZCwgbGluZSBpbiBjb2RlLmNvX2xpbmVzKCk6CiAgICAgICAgaWYgbGluZSBpcyBub3QgTm9uZSBhbmQgbGluZSAhPSBsYXN0bGluZToKICAgICAgICAgICAgbGFzdGxpbmUgPSBsaW5lCiAgICAgICAgICAgIHlpZWxkIHN0YXJ0LCBsaW5lCiAgICByZXR1cm4KCmRlZiBfZmluZF9pbXBvcnRzKGNvKToKICAgICIiIkZpbmQgaW1wb3J0IHN0YXRlbWVudHMgaW4gdGhlIGNvZGUKCiAgICBHZW5lcmF0ZSB0cmlwbGV0cyAobmFtZSwgbGV2ZWwsIGZyb21saXN0KSB3aGVyZQogICAgbmFtZSBpcyB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFuZCBsZXZlbCwgZnJvbWxpc3QgYXJlCiAgICB0aGUgY29ycmVzcG9uZGluZyBhcmdzIHRvIF9faW1wb3J0X18uCiAgICAiIiIKICAgIElNUE9SVF9OQU1FID0gb3BtYXBbJ0lNUE9SVF9OQU1FJ10KICAgIExPQURfQ09OU1QgPSBvcG1hcFsnTE9BRF9DT05TVCddCgogICAgY29uc3RzID0gY28uY29fY29uc3RzCiAgICBuYW1lcyA9IGNvLmNvX25hbWVzCiAgICBvcGFyZ3MgPSBbKG9wLCBhcmcpIGZvciBfLCBvcCwgYXJnIGluIF91bnBhY2tfb3BhcmdzKGNvLmNvX2NvZGUpCiAgICAgICAgICAgICAgICAgIGlmIG9wICE9IEVYVEVOREVEX0FSR10KICAgIGZvciBpLCAob3AsIG9wYXJnKSBpbiBlbnVtZXJhdGUob3BhcmdzKToKICAgICAgICBpZiBvcCA9PSBJTVBPUlRfTkFNRSBhbmQgaSA+PSAyOgogICAgICAgICAgICBmcm9tX29wID0gb3BhcmdzW2ktMV0KICAgICAgICAgICAgbGV2ZWxfb3AgPSBvcGFyZ3NbaS0yXQogICAgICAgICAgICBpZiAoZnJvbV9vcFswXSBpbiBoYXNjb25zdCBhbmQgbGV2ZWxfb3BbMF0gaW4gaGFzY29uc3QpOgogICAgICAgICAgICAgICAgbGV2ZWwgPSBfZ2V0X2NvbnN0X3ZhbHVlKGxldmVsX29wWzBdLCBsZXZlbF9vcFsxXSwgY29uc3RzKQogICAgICAgICAgICAgICAgZnJvbWxpc3QgPSBfZ2V0X2NvbnN0X3ZhbHVlKGZyb21fb3BbMF0sIGZyb21fb3BbMV0sIGNvbnN0cykKICAgICAgICAgICAgICAgIHlpZWxkIChuYW1lc1tvcGFyZ10sIGxldmVsLCBmcm9tbGlzdCkKCmRlZiBfZmluZF9zdG9yZV9uYW1lcyhjbyk6CiAgICAiIiJGaW5kIG5hbWVzIG9mIHZhcmlhYmxlcyB3aGljaCBhcmUgd3JpdHRlbiBpbiB0aGUgY29kZQoKICAgIEdlbmVyYXRlIHNlcXVlbmNlIG9mIHN0cmluZ3MKICAgICIiIgogICAgU1RPUkVfT1BTID0gewogICAgICAgIG9wbWFwWydTVE9SRV9OQU1FJ10sCiAgICAgICAgb3BtYXBbJ1NUT1JFX0dMT0JBTCddCiAgICB9CgogICAgbmFtZXMgPSBjby5jb19uYW1lcwogICAgZm9yIF8sIG9wLCBhcmcgaW4gX3VucGFja19vcGFyZ3MoY28uY29fY29kZSk6CiAgICAgICAgaWYgb3AgaW4gU1RPUkVfT1BTOgogICAgICAgICAgICB5aWVsZCBuYW1lc1thcmddCgoKY2xhc3MgQnl0ZWNvZGU6CiAgICAiIiJUaGUgYnl0ZWNvZGUgb3BlcmF0aW9ucyBvZiBhIHBpZWNlIG9mIGNvZGUKCiAgICBJbnN0YW50aWF0ZSB0aGlzIHdpdGggYSBmdW5jdGlvbiwgbWV0aG9kLCBvdGhlciBjb21waWxlZCBvYmplY3QsIHN0cmluZyBvZgogICAgY29kZSwgb3IgYSBjb2RlIG9iamVjdCAoYXMgcmV0dXJuZWQgYnkgY29tcGlsZSgpKS4KCiAgICBJdGVyYXRpbmcgb3ZlciB0aGlzIHlpZWxkcyB0aGUgYnl0ZWNvZGUgb3BlcmF0aW9ucyBhcyBJbnN0cnVjdGlvbiBpbnN0YW5jZXMuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCAqLCBmaXJzdF9saW5lPU5vbmUsIGN1cnJlbnRfb2Zmc2V0PU5vbmUsIHNob3dfY2FjaGVzPUZhbHNlLCBhZGFwdGl2ZT1GYWxzZSk6CiAgICAgICAgc2VsZi5jb2Rlb2JqID0gY28gPSBfZ2V0X2NvZGVfb2JqZWN0KHgpCiAgICAgICAgaWYgZmlyc3RfbGluZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmZpcnN0X2xpbmUgPSBjby5jb19maXJzdGxpbmVubwogICAgICAgICAgICBzZWxmLl9saW5lX29mZnNldCA9IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmZpcnN0X2xpbmUgPSBmaXJzdF9saW5lCiAgICAgICAgICAgIHNlbGYuX2xpbmVfb2Zmc2V0ID0gZmlyc3RfbGluZSAtIGNvLmNvX2ZpcnN0bGluZW5vCiAgICAgICAgc2VsZi5fbGluZXN0YXJ0cyA9IGRpY3QoZmluZGxpbmVzdGFydHMoY28pKQogICAgICAgIHNlbGYuX29yaWdpbmFsX29iamVjdCA9IHgKICAgICAgICBzZWxmLmN1cnJlbnRfb2Zmc2V0ID0gY3VycmVudF9vZmZzZXQKICAgICAgICBzZWxmLmV4Y2VwdGlvbl9lbnRyaWVzID0gX3BhcnNlX2V4Y2VwdGlvbl90YWJsZShjbykKICAgICAgICBzZWxmLnNob3dfY2FjaGVzID0gc2hvd19jYWNoZXMKICAgICAgICBzZWxmLmFkYXB0aXZlID0gYWRhcHRpdmUKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgY28gPSBzZWxmLmNvZGVvYmoKICAgICAgICByZXR1cm4gX2dldF9pbnN0cnVjdGlvbnNfYnl0ZXMoX2dldF9jb2RlX2FycmF5KGNvLCBzZWxmLmFkYXB0aXZlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY28uX3Zhcm5hbWVfZnJvbV9vcGFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY28uY29fbmFtZXMsIGNvLmNvX2NvbnN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbGluZXN0YXJ0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQ9c2VsZi5fbGluZV9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9lbnRyaWVzPXNlbGYuZXhjZXB0aW9uX2VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvX3Bvc2l0aW9ucz1jby5jb19wb3NpdGlvbnMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19jYWNoZXM9c2VsZi5zaG93X2NhY2hlcykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICJ7fSh7IXJ9KSIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9vYmplY3QpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbV90cmFjZWJhY2soY2xzLCB0YiwgKiwgc2hvd19jYWNoZXM9RmFsc2UsIGFkYXB0aXZlPUZhbHNlKToKICAgICAgICAiIiIgQ29uc3RydWN0IGEgQnl0ZWNvZGUgZnJvbSB0aGUgZ2l2ZW4gdHJhY2ViYWNrICIiIgogICAgICAgIHdoaWxlIHRiLnRiX25leHQ6CiAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgICAgIHJldHVybiBjbHMoCiAgICAgICAgICAgIHRiLnRiX2ZyYW1lLmZfY29kZSwgY3VycmVudF9vZmZzZXQ9dGIudGJfbGFzdGksIHNob3dfY2FjaGVzPXNob3dfY2FjaGVzLCBhZGFwdGl2ZT1hZGFwdGl2ZQogICAgICAgICkKCiAgICBkZWYgaW5mbyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gZm9ybWF0dGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2RlIG9iamVjdC4iIiIKICAgICAgICByZXR1cm4gX2Zvcm1hdF9jb2RlX2luZm8oc2VsZi5jb2Rlb2JqKQoKICAgIGRlZiBkaXMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgZm9ybWF0dGVkIHZpZXcgb2YgdGhlIGJ5dGVjb2RlIG9wZXJhdGlvbnMuIiIiCiAgICAgICAgY28gPSBzZWxmLmNvZGVvYmoKICAgICAgICBpZiBzZWxmLmN1cnJlbnRfb2Zmc2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBvZmZzZXQgPSBzZWxmLmN1cnJlbnRfb2Zmc2V0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgb2Zmc2V0ID0gLTEKICAgICAgICB3aXRoIGlvLlN0cmluZ0lPKCkgYXMgb3V0cHV0OgogICAgICAgICAgICBfZGlzYXNzZW1ibGVfYnl0ZXMoX2dldF9jb2RlX2FycmF5KGNvLCBzZWxmLmFkYXB0aXZlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcm5hbWVfZnJvbV9vcGFyZz1jby5fdmFybmFtZV9mcm9tX29wYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXM9Y28uY29fbmFtZXMsIGNvX2NvbnN0cz1jby5jb19jb25zdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc3RhcnRzPXNlbGYuX2xpbmVzdGFydHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX29mZnNldD1zZWxmLl9saW5lX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9b3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdGk9b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2VudHJpZXM9c2VsZi5leGNlcHRpb25fZW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvX3Bvc2l0aW9ucz1jby5jb19wb3NpdGlvbnMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfY2FjaGVzPXNlbGYuc2hvd19jYWNoZXMpCiAgICAgICAgICAgIHJldHVybiBvdXRwdXQuZ2V0dmFsdWUoKQoKCmRlZiBfdGVzdCgpOgogICAgIiIiU2ltcGxlIHRlc3QgcHJvZ3JhbSB0byBkaXNhc3NlbWJsZSBhIGZpbGUuIiIiCiAgICBpbXBvcnQgYXJncGFyc2UKCiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdpbmZpbGUnLCB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCdyYicpLCBuYXJncz0nPycsIGRlZmF1bHQ9Jy0nKQogICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIHdpdGggYXJncy5pbmZpbGUgYXMgaW5maWxlOgogICAgICAgIHNvdXJjZSA9IGluZmlsZS5yZWFkKCkKICAgIGNvZGUgPSBjb21waWxlKHNvdXJjZSwgYXJncy5pbmZpbGUubmFtZSwgImV4ZWMiKQogICAgZGlzKGNvZGUpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgX3Rlc3QoKQpQSwMEFAAAAAAAAiCjVkiiZcDamgEA2poBAAoAAABkb2N0ZXN0LnB5IyBNb2R1bGUgZG9jdGVzdC4KIyBSZWxlYXNlZCB0byB0aGUgcHVibGljIGRvbWFpbiAxNi1KYW4tMjAwMSwgYnkgVGltIFBldGVycyAodGltQHB5dGhvbi5vcmcpLgojIE1ham9yIGVuaGFuY2VtZW50cyBhbmQgcmVmYWN0b3JpbmcgYnk6CiMgICAgIEppbSBGdWx0b24KIyAgICAgRWR3YXJkIExvcGVyCgojIFByb3ZpZGVkIGFzLWlzOyB1c2UgYXQgeW91ciBvd24gcmlzazsgbm8gd2FycmFudHk7IG5vIHByb21pc2VzOyBlbmpveSEKCnIiIiJNb2R1bGUgZG9jdGVzdCAtLSBhIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzLgoKSW4gc2ltcGxlc3QgdXNlLCBlbmQgZWFjaCBtb2R1bGUgTSB0byBiZSB0ZXN0ZWQgd2l0aDoKCmRlZiBfdGVzdCgpOgogICAgaW1wb3J0IGRvY3Rlc3QKICAgIGRvY3Rlc3QudGVzdG1vZCgpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgX3Rlc3QoKQoKVGhlbiBydW5uaW5nIHRoZSBtb2R1bGUgYXMgYSBzY3JpcHQgd2lsbCBjYXVzZSB0aGUgZXhhbXBsZXMgaW4gdGhlCmRvY3N0cmluZ3MgdG8gZ2V0IGV4ZWN1dGVkIGFuZCB2ZXJpZmllZDoKCnB5dGhvbiBNLnB5CgpUaGlzIHdvbid0IGRpc3BsYXkgYW55dGhpbmcgdW5sZXNzIGFuIGV4YW1wbGUgZmFpbHMsIGluIHdoaWNoIGNhc2UgdGhlCmZhaWxpbmcgZXhhbXBsZShzKSBhbmQgdGhlIGNhdXNlKHMpIG9mIHRoZSBmYWlsdXJlKHMpIGFyZSBwcmludGVkIHRvIHN0ZG91dAood2h5IG5vdCBzdGRlcnI/IGJlY2F1c2Ugc3RkZXJyIGlzIGEgbGFtZSBoYWNrIDwwLjIgd2luaz4pLCBhbmQgdGhlIGZpbmFsCmxpbmUgb2Ygb3V0cHV0IGlzICJUZXN0IGZhaWxlZC4iLgoKUnVuIGl0IHdpdGggdGhlIC12IHN3aXRjaCBpbnN0ZWFkOgoKcHl0aG9uIE0ucHkgLXYKCmFuZCBhIGRldGFpbGVkIHJlcG9ydCBvZiBhbGwgZXhhbXBsZXMgdHJpZWQgaXMgcHJpbnRlZCB0byBzdGRvdXQsIGFsb25nCndpdGggYXNzb3J0ZWQgc3VtbWFyaWVzIGF0IHRoZSBlbmQuCgpZb3UgY2FuIGZvcmNlIHZlcmJvc2UgbW9kZSBieSBwYXNzaW5nICJ2ZXJib3NlPVRydWUiIHRvIHRlc3Rtb2QsIG9yIHByb2hpYml0Cml0IGJ5IHBhc3NpbmcgInZlcmJvc2U9RmFsc2UiLiAgSW4gZWl0aGVyIG9mIHRob3NlIGNhc2VzLCBzeXMuYXJndiBpcyBub3QKZXhhbWluZWQgYnkgdGVzdG1vZC4KClRoZXJlIGFyZSBhIHZhcmlldHkgb2Ygb3RoZXIgd2F5cyB0byBydW4gZG9jdGVzdHMsIGluY2x1ZGluZyBpbnRlZ3JhdGlvbgp3aXRoIHRoZSB1bml0dGVzdCBmcmFtZXdvcmssIGFuZCBzdXBwb3J0IGZvciBydW5uaW5nIG5vbi1QeXRob24gdGV4dApmaWxlcyBjb250YWluaW5nIGRvY3Rlc3RzLiAgVGhlcmUgYXJlIGFsc28gbWFueSB3YXlzIHRvIG92ZXJyaWRlIHBhcnRzCm9mIGRvY3Rlc3QncyBkZWZhdWx0IGJlaGF2aW9ycy4gIFNlZSB0aGUgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIGZvcgpkZXRhaWxzLgoiIiIKCl9fZG9jZm9ybWF0X18gPSAncmVTdHJ1Y3R1cmVkVGV4dCBlbicKCl9fYWxsX18gPSBbCiAgICAjIDAsIE9wdGlvbiBGbGFncwogICAgJ3JlZ2lzdGVyX29wdGlvbmZsYWcnLAogICAgJ0RPTlRfQUNDRVBUX1RSVUVfRk9SXzEnLAogICAgJ0RPTlRfQUNDRVBUX0JMQU5LTElORScsCiAgICAnTk9STUFMSVpFX1dISVRFU1BBQ0UnLAogICAgJ0VMTElQU0lTJywKICAgICdTS0lQJywKICAgICdJR05PUkVfRVhDRVBUSU9OX0RFVEFJTCcsCiAgICAnQ09NUEFSSVNPTl9GTEFHUycsCiAgICAnUkVQT1JUX1VESUZGJywKICAgICdSRVBPUlRfQ0RJRkYnLAogICAgJ1JFUE9SVF9ORElGRicsCiAgICAnUkVQT1JUX09OTFlfRklSU1RfRkFJTFVSRScsCiAgICAnUkVQT1JUSU5HX0ZMQUdTJywKICAgICdGQUlMX0ZBU1QnLAogICAgIyAxLiBVdGlsaXR5IEZ1bmN0aW9ucwogICAgIyAyLiBFeGFtcGxlICYgRG9jVGVzdAogICAgJ0V4YW1wbGUnLAogICAgJ0RvY1Rlc3QnLAogICAgIyAzLiBEb2N0ZXN0IFBhcnNlcgogICAgJ0RvY1Rlc3RQYXJzZXInLAogICAgIyA0LiBEb2N0ZXN0IEZpbmRlcgogICAgJ0RvY1Rlc3RGaW5kZXInLAogICAgIyA1LiBEb2N0ZXN0IFJ1bm5lcgogICAgJ0RvY1Rlc3RSdW5uZXInLAogICAgJ091dHB1dENoZWNrZXInLAogICAgJ0RvY1Rlc3RGYWlsdXJlJywKICAgICdVbmV4cGVjdGVkRXhjZXB0aW9uJywKICAgICdEZWJ1Z1J1bm5lcicsCiAgICAjIDYuIFRlc3QgRnVuY3Rpb25zCiAgICAndGVzdG1vZCcsCiAgICAndGVzdGZpbGUnLAogICAgJ3J1bl9kb2NzdHJpbmdfZXhhbXBsZXMnLAogICAgIyA3LiBVbml0dGVzdCBTdXBwb3J0CiAgICAnRG9jVGVzdFN1aXRlJywKICAgICdEb2NGaWxlU3VpdGUnLAogICAgJ3NldF91bml0dGVzdF9yZXBvcnRmbGFncycsCiAgICAjIDguIERlYnVnZ2luZyBTdXBwb3J0CiAgICAnc2NyaXB0X2Zyb21fZXhhbXBsZXMnLAogICAgJ3Rlc3Rzb3VyY2UnLAogICAgJ2RlYnVnX3NyYycsCiAgICAnZGVidWcnLApdCgppbXBvcnQgX19mdXR1cmVfXwppbXBvcnQgZGlmZmxpYgppbXBvcnQgaW5zcGVjdAppbXBvcnQgbGluZWNhY2hlCmltcG9ydCBvcwppbXBvcnQgcGRiCmltcG9ydCByZQppbXBvcnQgc3lzCmltcG9ydCB0cmFjZWJhY2sKaW1wb3J0IHVuaXR0ZXN0CmZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKClRlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCgojIFRoZXJlIGFyZSA0IGJhc2ljIGNsYXNzZXM6CiMgIC0gRXhhbXBsZTogYSA8c291cmNlLCB3YW50PiBwYWlyLCBwbHVzIGFuIGludHJhLWRvY3N0cmluZyBsaW5lIG51bWJlci4KIyAgLSBEb2NUZXN0OiBhIGNvbGxlY3Rpb24gb2YgZXhhbXBsZXMsIHBhcnNlZCBmcm9tIGEgZG9jc3RyaW5nLCBwbHVzCiMgICAgaW5mbyBhYm91dCB3aGVyZSB0aGUgZG9jc3RyaW5nIGNhbWUgZnJvbSAobmFtZSwgZmlsZW5hbWUsIGxpbmVubykuCiMgIC0gRG9jVGVzdEZpbmRlcjogZXh0cmFjdHMgRG9jVGVzdHMgZnJvbSBhIGdpdmVuIG9iamVjdCdzIGRvY3N0cmluZyBhbmQKIyAgICBpdHMgY29udGFpbmVkIG9iamVjdHMnIGRvY3N0cmluZ3MuCiMgIC0gRG9jVGVzdFJ1bm5lcjogcnVucyBEb2NUZXN0IGNhc2VzLCBhbmQgYWNjdW11bGF0ZXMgc3RhdGlzdGljcy4KIwojIFNvIHRoZSBiYXNpYyBwaWN0dXJlIGlzOgojCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qgb2Y6CiMgKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0rCiMgfG9iamVjdHwgLS1Eb2NUZXN0RmluZGVyLT4gfCBEb2NUZXN0IHwgLS1Eb2NUZXN0UnVubmVyLT4gfHJlc3VsdHN8CiMgKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0rCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlIHwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgLi4uICAgfAojICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhhbXBsZSB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLSsKCiMgT3B0aW9uIGNvbnN0YW50cy4KCk9QVElPTkZMQUdTX0JZX05BTUUgPSB7fQpkZWYgcmVnaXN0ZXJfb3B0aW9uZmxhZyhuYW1lKToKICAgICMgQ3JlYXRlIGEgbmV3IGZsYWcgdW5sZXNzIGBuYW1lYCBpcyBhbHJlYWR5IGtub3duLgogICAgcmV0dXJuIE9QVElPTkZMQUdTX0JZX05BTUUuc2V0ZGVmYXVsdChuYW1lLCAxIDw8IGxlbihPUFRJT05GTEFHU19CWV9OQU1FKSkKCkRPTlRfQUNDRVBUX1RSVUVfRk9SXzEgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdET05UX0FDQ0VQVF9UUlVFX0ZPUl8xJykKRE9OVF9BQ0NFUFRfQkxBTktMSU5FID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnRE9OVF9BQ0NFUFRfQkxBTktMSU5FJykKTk9STUFMSVpFX1dISVRFU1BBQ0UgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdOT1JNQUxJWkVfV0hJVEVTUEFDRScpCkVMTElQU0lTID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnRUxMSVBTSVMnKQpTS0lQID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnU0tJUCcpCklHTk9SRV9FWENFUFRJT05fREVUQUlMID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwnKQoKQ09NUEFSSVNPTl9GTEFHUyA9IChET05UX0FDQ0VQVF9UUlVFX0ZPUl8xIHwKICAgICAgICAgICAgICAgICAgICBET05UX0FDQ0VQVF9CTEFOS0xJTkUgfAogICAgICAgICAgICAgICAgICAgIE5PUk1BTElaRV9XSElURVNQQUNFIHwKICAgICAgICAgICAgICAgICAgICBFTExJUFNJUyB8CiAgICAgICAgICAgICAgICAgICAgU0tJUCB8CiAgICAgICAgICAgICAgICAgICAgSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwpCgpSRVBPUlRfVURJRkYgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdSRVBPUlRfVURJRkYnKQpSRVBPUlRfQ0RJRkYgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdSRVBPUlRfQ0RJRkYnKQpSRVBPUlRfTkRJRkYgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdSRVBPUlRfTkRJRkYnKQpSRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnUkVQT1JUX09OTFlfRklSU1RfRkFJTFVSRScpCkZBSUxfRkFTVCA9IHJlZ2lzdGVyX29wdGlvbmZsYWcoJ0ZBSUxfRkFTVCcpCgpSRVBPUlRJTkdfRkxBR1MgPSAoUkVQT1JUX1VESUZGIHwKICAgICAgICAgICAgICAgICAgIFJFUE9SVF9DRElGRiB8CiAgICAgICAgICAgICAgICAgICBSRVBPUlRfTkRJRkYgfAogICAgICAgICAgICAgICAgICAgUkVQT1JUX09OTFlfRklSU1RfRkFJTFVSRSB8CiAgICAgICAgICAgICAgICAgICBGQUlMX0ZBU1QpCgojIFNwZWNpYWwgc3RyaW5nIG1hcmtlcnMgZm9yIHVzZSBpbiBgd2FudGAgc3RyaW5nczoKQkxBTktMSU5FX01BUktFUiA9ICc8QkxBTktMSU5FPicKRUxMSVBTSVNfTUFSS0VSID0gJy4uLicKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMgVGFibGUgb2YgQ29udGVudHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAxLiBVdGlsaXR5IEZ1bmN0aW9ucwojICAyLiBFeGFtcGxlICYgRG9jVGVzdCAtLSBzdG9yZSB0ZXN0IGNhc2VzCiMgIDMuIERvY1Rlc3QgUGFyc2VyIC0tIGV4dHJhY3RzIGV4YW1wbGVzIGZyb20gc3RyaW5ncwojICA0LiBEb2NUZXN0IEZpbmRlciAtLSBleHRyYWN0cyB0ZXN0IGNhc2VzIGZyb20gb2JqZWN0cwojICA1LiBEb2NUZXN0IFJ1bm5lciAtLSBydW5zIHRlc3QgY2FzZXMKIyAgNi4gVGVzdCBGdW5jdGlvbnMgLS0gY29udmVuaWVudCB3cmFwcGVycyBmb3IgdGVzdGluZwojICA3LiBVbml0dGVzdCBTdXBwb3J0CiMgIDguIERlYnVnZ2luZyBTdXBwb3J0CiMgIDkuIEV4YW1wbGUgVXNhZ2UKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMgMS4gVXRpbGl0eSBGdW5jdGlvbnMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZGVmIF9leHRyYWN0X2Z1dHVyZV9mbGFncyhnbG9icyk6CiAgICAiIiIKICAgIFJldHVybiB0aGUgY29tcGlsZXItZmxhZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdXR1cmUgZmVhdHVyZXMgdGhhdAogICAgaGF2ZSBiZWVuIGltcG9ydGVkIGludG8gdGhlIGdpdmVuIG5hbWVzcGFjZSAoZ2xvYnMpLgogICAgIiIiCiAgICBmbGFncyA9IDAKICAgIGZvciBmbmFtZSBpbiBfX2Z1dHVyZV9fLmFsbF9mZWF0dXJlX25hbWVzOgogICAgICAgIGZlYXR1cmUgPSBnbG9icy5nZXQoZm5hbWUsIE5vbmUpCiAgICAgICAgaWYgZmVhdHVyZSBpcyBnZXRhdHRyKF9fZnV0dXJlX18sIGZuYW1lKToKICAgICAgICAgICAgZmxhZ3MgfD0gZmVhdHVyZS5jb21waWxlcl9mbGFnCiAgICByZXR1cm4gZmxhZ3MKCmRlZiBfbm9ybWFsaXplX21vZHVsZShtb2R1bGUsIGRlcHRoPTIpOgogICAgIiIiCiAgICBSZXR1cm4gdGhlIG1vZHVsZSBzcGVjaWZpZWQgYnkgYG1vZHVsZWAuICBJbiBwYXJ0aWN1bGFyOgogICAgICAtIElmIGBtb2R1bGVgIGlzIGEgbW9kdWxlLCB0aGVuIHJldHVybiBtb2R1bGUuCiAgICAgIC0gSWYgYG1vZHVsZWAgaXMgYSBzdHJpbmcsIHRoZW4gaW1wb3J0IGFuZCByZXR1cm4gdGhlCiAgICAgICAgbW9kdWxlIHdpdGggdGhhdCBuYW1lLgogICAgICAtIElmIGBtb2R1bGVgIGlzIE5vbmUsIHRoZW4gcmV0dXJuIHRoZSBjYWxsaW5nIG1vZHVsZS4KICAgICAgICBUaGUgY2FsbGluZyBtb2R1bGUgaXMgYXNzdW1lZCB0byBiZSB0aGUgbW9kdWxlIG9mCiAgICAgICAgdGhlIHN0YWNrIGZyYW1lIGF0IHRoZSBnaXZlbiBkZXB0aCBpbiB0aGUgY2FsbCBzdGFjay4KICAgICIiIgogICAgaWYgaW5zcGVjdC5pc21vZHVsZShtb2R1bGUpOgogICAgICAgIHJldHVybiBtb2R1bGUKICAgIGVsaWYgaXNpbnN0YW5jZShtb2R1bGUsIHN0cik6CiAgICAgICAgcmV0dXJuIF9faW1wb3J0X18obW9kdWxlLCBnbG9iYWxzKCksIGxvY2FscygpLCBbIioiXSkKICAgIGVsaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW3N5cy5fZ2V0ZnJhbWUoZGVwdGgpLmZfZ2xvYmFsc1snX19uYW1lX18nXV0KICAgIGVsc2U6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJFeHBlY3RlZCBhIG1vZHVsZSwgc3RyaW5nLCBvciBOb25lIikKCmRlZiBfbmV3bGluZV9jb252ZXJ0KGRhdGEpOgogICAgIyBUaGUgSU8gbW9kdWxlIHByb3ZpZGVzIGEgaGFuZHkgZGVjb2RlciBmb3IgdW5pdmVyc2FsIG5ld2xpbmUgY29udmVyc2lvbgogICAgcmV0dXJuIEluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkuZGVjb2RlKGRhdGEsIFRydWUpCgpkZWYgX2xvYWRfdGVzdGZpbGUoZmlsZW5hbWUsIHBhY2thZ2UsIG1vZHVsZV9yZWxhdGl2ZSwgZW5jb2RpbmcpOgogICAgaWYgbW9kdWxlX3JlbGF0aXZlOgogICAgICAgIHBhY2thZ2UgPSBfbm9ybWFsaXplX21vZHVsZShwYWNrYWdlLCAzKQogICAgICAgIGZpbGVuYW1lID0gX21vZHVsZV9yZWxhdGl2ZV9wYXRoKHBhY2thZ2UsIGZpbGVuYW1lKQogICAgICAgIGlmIChsb2FkZXIgOj0gZ2V0YXR0cihwYWNrYWdlLCAnX19sb2FkZXJfXycsIE5vbmUpKSBpcyBOb25lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsb2FkZXIgPSBwYWNrYWdlLl9fc3BlY19fLmxvYWRlcgogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfZGF0YScpOgogICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gbG9hZGVyLmdldF9kYXRhKGZpbGVuYW1lKQogICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gZmlsZV9jb250ZW50cy5kZWNvZGUoZW5jb2RpbmcpCiAgICAgICAgICAgICMgZ2V0X2RhdGEoKSBvcGVucyBmaWxlcyBhcyAncmInLCBzbyBvbmUgbXVzdCBkbyB0aGUgZXF1aXZhbGVudAogICAgICAgICAgICAjIGNvbnZlcnNpb24gYXMgdW5pdmVyc2FsIG5ld2xpbmVzIHdvdWxkIGRvLgogICAgICAgICAgICByZXR1cm4gX25ld2xpbmVfY29udmVydChmaWxlX2NvbnRlbnRzKSwgZmlsZW5hbWUKICAgIHdpdGggb3BlbihmaWxlbmFtZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpIGFzIGY6CiAgICAgICAgcmV0dXJuIGYucmVhZCgpLCBmaWxlbmFtZQoKZGVmIF9pbmRlbnQocywgaW5kZW50PTQpOgogICAgIiIiCiAgICBBZGQgdGhlIGdpdmVuIG51bWJlciBvZiBzcGFjZSBjaGFyYWN0ZXJzIHRvIHRoZSBiZWdpbm5pbmcgb2YKICAgIGV2ZXJ5IG5vbi1ibGFuayBsaW5lIGluIGBzYCwgYW5kIHJldHVybiB0aGUgcmVzdWx0LgogICAgIiIiCiAgICAjIFRoaXMgcmVnZXhwIG1hdGNoZXMgdGhlIHN0YXJ0IG9mIG5vbi1ibGFuayBsaW5lczoKICAgIHJldHVybiByZS5zdWIoJyg/bSleKD8hJCknLCBpbmRlbnQqJyAnLCBzKQoKZGVmIF9leGNlcHRpb25fdHJhY2ViYWNrKGV4Y19pbmZvKToKICAgICIiIgogICAgUmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB0cmFjZWJhY2sgbWVzc2FnZSBmb3IgdGhlIGdpdmVuCiAgICBleGNfaW5mbyB0dXBsZSAoYXMgcmV0dXJuZWQgYnkgc3lzLmV4Y19pbmZvKCkpLgogICAgIiIiCiAgICAjIEdldCBhIHRyYWNlYmFjayBtZXNzYWdlLgogICAgZXhjb3V0ID0gU3RyaW5nSU8oKQogICAgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190YiA9IGV4Y19pbmZvCiAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIsIGZpbGU9ZXhjb3V0KQogICAgcmV0dXJuIGV4Y291dC5nZXR2YWx1ZSgpCgojIE92ZXJyaWRlIHNvbWUgU3RyaW5nSU8gbWV0aG9kcy4KY2xhc3MgX1Nwb29mT3V0KFN0cmluZ0lPKToKICAgIGRlZiBnZXR2YWx1ZShzZWxmKToKICAgICAgICByZXN1bHQgPSBTdHJpbmdJTy5nZXR2YWx1ZShzZWxmKQogICAgICAgICMgSWYgYW55dGhpbmcgYXQgYWxsIHdhcyB3cml0dGVuLCBtYWtlIHN1cmUgdGhlcmUncyBhIHRyYWlsaW5nCiAgICAgICAgIyBuZXdsaW5lLiAgVGhlcmUncyBubyB3YXkgZm9yIHRoZSBleHBlY3RlZCBvdXRwdXQgdG8gaW5kaWNhdGUKICAgICAgICAjIHRoYXQgYSB0cmFpbGluZyBuZXdsaW5lIGlzIG1pc3NpbmcuCiAgICAgICAgaWYgcmVzdWx0IGFuZCBub3QgcmVzdWx0LmVuZHN3aXRoKCJcbiIpOgogICAgICAgICAgICByZXN1bHQgKz0gIlxuIgogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgc2l6ZT1Ob25lKToKICAgICAgICBzZWxmLnNlZWsoc2l6ZSkKICAgICAgICBTdHJpbmdJTy50cnVuY2F0ZShzZWxmKQoKIyBXb3JzdC1jYXNlIGxpbmVhci10aW1lIGVsbGlwc2lzIG1hdGNoaW5nLgpkZWYgX2VsbGlwc2lzX21hdGNoKHdhbnQsIGdvdCk6CiAgICAiIiIKICAgIEVzc2VudGlhbGx5IHRoZSBvbmx5IHN1YnRsZSBjYXNlOgogICAgPj4+IF9lbGxpcHNpc19tYXRjaCgnYWEuLi5hYScsICdhYWEnKQogICAgRmFsc2UKICAgICIiIgogICAgaWYgRUxMSVBTSVNfTUFSS0VSIG5vdCBpbiB3YW50OgogICAgICAgIHJldHVybiB3YW50ID09IGdvdAoKICAgICMgRmluZCAidGhlIHJlYWwiIHN0cmluZ3MuCiAgICB3cyA9IHdhbnQuc3BsaXQoRUxMSVBTSVNfTUFSS0VSKQogICAgYXNzZXJ0IGxlbih3cykgPj0gMgoKICAgICMgRGVhbCB3aXRoIGV4YWN0IG1hdGNoZXMgcG9zc2libHkgbmVlZGVkIGF0IG9uZSBvciBib3RoIGVuZHMuCiAgICBzdGFydHBvcywgZW5kcG9zID0gMCwgbGVuKGdvdCkKICAgIHcgPSB3c1swXQogICAgaWYgdzogICAjIHN0YXJ0cyB3aXRoIGV4YWN0IG1hdGNoCiAgICAgICAgaWYgZ290LnN0YXJ0c3dpdGgodyk6CiAgICAgICAgICAgIHN0YXJ0cG9zID0gbGVuKHcpCiAgICAgICAgICAgIGRlbCB3c1swXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgdyA9IHdzWy0xXQogICAgaWYgdzogICAjIGVuZHMgd2l0aCBleGFjdCBtYXRjaAogICAgICAgIGlmIGdvdC5lbmRzd2l0aCh3KToKICAgICAgICAgICAgZW5kcG9zIC09IGxlbih3KQogICAgICAgICAgICBkZWwgd3NbLTFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgaWYgc3RhcnRwb3MgPiBlbmRwb3M6CiAgICAgICAgIyBFeGFjdCBlbmQgbWF0Y2hlcyByZXF1aXJlZCBtb3JlIGNoYXJhY3RlcnMgdGhhbiB3ZSBoYXZlLCBhcyBpbgogICAgICAgICMgX2VsbGlwc2lzX21hdGNoKCdhYS4uLmFhJywgJ2FhYScpCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgIyBGb3IgdGhlIHJlc3QsIHdlIG9ubHkgbmVlZCB0byBmaW5kIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcKICAgICMgbWF0Y2ggZm9yIGVhY2ggcGllY2UuICBJZiB0aGVyZSdzIG5vIG92ZXJhbGwgbWF0Y2ggdGhhdCB3YXkgYWxvbmUsCiAgICAjIHRoZXJlJ3Mgbm8gb3ZlcmFsbCBtYXRjaCBwZXJpb2QuCiAgICBmb3IgdyBpbiB3czoKICAgICAgICAjIHcgbWF5IGJlICcnIGF0IHRpbWVzLCBpZiB0aGVyZSBhcmUgY29uc2VjdXRpdmUgZWxsaXBzZXMsIG9yCiAgICAgICAgIyBkdWUgdG8gYW4gZWxsaXBzaXMgYXQgdGhlIHN0YXJ0IG9yIGVuZCBvZiBgd2FudGAuICBUaGF0J3MgT0suCiAgICAgICAgIyBTZWFyY2ggZm9yIGFuIGVtcHR5IHN0cmluZyBzdWNjZWVkcywgYW5kIGRvZXNuJ3QgY2hhbmdlIHN0YXJ0cG9zLgogICAgICAgIHN0YXJ0cG9zID0gZ290LmZpbmQodywgc3RhcnRwb3MsIGVuZHBvcykKICAgICAgICBpZiBzdGFydHBvcyA8IDA6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHN0YXJ0cG9zICs9IGxlbih3KQoKICAgIHJldHVybiBUcnVlCgpkZWYgX2NvbW1lbnRfbGluZShsaW5lKToKICAgICJSZXR1cm4gYSBjb21tZW50ZWQgZm9ybSBvZiB0aGUgZ2l2ZW4gbGluZSIKICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgICBpZiBsaW5lOgogICAgICAgIHJldHVybiAnIyAnK2xpbmUKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuICcjJwoKZGVmIF9zdHJpcF9leGNlcHRpb25fZGV0YWlscyhtc2cpOgogICAgIyBTdXBwb3J0IGZvciBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTC4KICAgICMgR2V0IHJpZCBvZiBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgZXhjZXB0aW9uIG5hbWU7IGluIHBhcnRpY3VsYXIsIGRyb3AKICAgICMgdGhlIHBvc3NpYmx5IGRvdHRlZCBtb2R1bGUgcGF0aCAoaWYgYW55KSBhbmQgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIChpZgogICAgIyBhbnkpLiAgV2UgYXNzdW1lIHRoYXQgYSBjb2xvbiBpcyBuZXZlciBwYXJ0IG9mIGEgZG90dGVkIG5hbWUsIG9yIG9mIGFuCiAgICAjIGV4Y2VwdGlvbiBuYW1lLgogICAgIyBFLmcuLCBnaXZlbgogICAgIyAgICAiZm9vLmJhci5NeUVycm9yOiBsYSBkaSBkYSIKICAgICMgcmV0dXJuICJNeUVycm9yIgogICAgIyBPciBmb3IgImFiYy5kZWYiIG9yICJhYmMuZGVmOlxuIiByZXR1cm4gImRlZiIuCgogICAgc3RhcnQsIGVuZCA9IDAsIGxlbihtc2cpCiAgICAjIFRoZSBleGNlcHRpb24gbmFtZSBtdXN0IGFwcGVhciBvbiB0aGUgZmlyc3QgbGluZS4KICAgIGkgPSBtc2cuZmluZCgiXG4iKQogICAgaWYgaSA+PSAwOgogICAgICAgIGVuZCA9IGkKICAgICMgcmV0YWluIHVwIHRvIHRoZSBmaXJzdCBjb2xvbiAoaWYgYW55KQogICAgaSA9IG1zZy5maW5kKCc6JywgMCwgZW5kKQogICAgaWYgaSA+PSAwOgogICAgICAgIGVuZCA9IGkKICAgICMgcmV0YWluIGp1c3QgdGhlIGV4Y2VwdGlvbiBuYW1lCiAgICBpID0gbXNnLnJmaW5kKCcuJywgMCwgZW5kKQogICAgaWYgaSA+PSAwOgogICAgICAgIHN0YXJ0ID0gaSsxCiAgICByZXR1cm4gbXNnW3N0YXJ0OiBlbmRdCgpjbGFzcyBfT3V0cHV0UmVkaXJlY3RpbmdQZGIocGRiLlBkYik6CiAgICAiIiIKICAgIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgcHl0aG9uIGRlYnVnZ2VyIHRoYXQgcmVkaXJlY3RzIHN0ZG91dAogICAgdG8gYSBnaXZlbiBzdHJlYW0gd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSB1c2VyLiAgU3Rkb3V0IGlzICpub3QqCiAgICByZWRpcmVjdGVkIHdoZW4gdHJhY2VkIGNvZGUgaXMgZXhlY3V0ZWQuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXQpOgogICAgICAgIHNlbGYuX19vdXQgPSBvdXQKICAgICAgICBzZWxmLl9fZGVidWdnZXJfdXNlZCA9IEZhbHNlCiAgICAgICAgIyBkbyBub3QgcGxheSBzaWduYWwgZ2FtZXMgaW4gdGhlIHBkYgogICAgICAgIHBkYi5QZGIuX19pbml0X18oc2VsZiwgc3Rkb3V0PW91dCwgbm9zaWdpbnQ9VHJ1ZSkKICAgICAgICAjIHN0aWxsIHVzZSBpbnB1dCgpIHRvIGdldCB1c2VyIGlucHV0CiAgICAgICAgc2VsZi51c2VfcmF3aW5wdXQgPSAxCgogICAgZGVmIHNldF90cmFjZShzZWxmLCBmcmFtZT1Ob25lKToKICAgICAgICBzZWxmLl9fZGVidWdnZXJfdXNlZCA9IFRydWUKICAgICAgICBpZiBmcmFtZSBpcyBOb25lOgogICAgICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKICAgICAgICBwZGIuUGRiLnNldF90cmFjZShzZWxmLCBmcmFtZSkKCiAgICBkZWYgc2V0X2NvbnRpbnVlKHNlbGYpOgogICAgICAgICMgQ2FsbGluZyBzZXRfY29udGludWUgdW5jb25kaXRpb25hbGx5IHdvdWxkIGJyZWFrIHVuaXQgdGVzdAogICAgICAgICMgY292ZXJhZ2UgcmVwb3J0aW5nLCBhcyBCZGIuc2V0X2NvbnRpbnVlIGNhbGxzIHN5cy5zZXR0cmFjZShOb25lKS4KICAgICAgICBpZiBzZWxmLl9fZGVidWdnZXJfdXNlZDoKICAgICAgICAgICAgcGRiLlBkYi5zZXRfY29udGludWUoc2VsZikKCiAgICBkZWYgdHJhY2VfZGlzcGF0Y2goc2VsZiwgKmFyZ3MpOgogICAgICAgICMgUmVkaXJlY3Qgc3Rkb3V0IHRvIHRoZSBnaXZlbiBzdHJlYW0uCiAgICAgICAgc2F2ZV9zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX19vdXQKICAgICAgICAjIENhbGwgUGRiJ3MgdHJhY2UgZGlzcGF0Y2ggbWV0aG9kLgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHBkYi5QZGIudHJhY2VfZGlzcGF0Y2goc2VsZiwgKmFyZ3MpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVfc3Rkb3V0CgojIFtYWF0gTm9ybWFsaXplIHdpdGggcmVzcGVjdCB0byBvcy5wYXRoLnBhcmRpcj8KZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHRlc3RfcGF0aCk6CiAgICBpZiBub3QgaW5zcGVjdC5pc21vZHVsZShtb2R1bGUpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignRXhwZWN0ZWQgYSBtb2R1bGU6ICVyJyAlIG1vZHVsZSkKICAgIGlmIHRlc3RfcGF0aC5zdGFydHN3aXRoKCcvJyk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTW9kdWxlLXJlbGF0aXZlIGZpbGVzIG1heSBub3QgaGF2ZSBhYnNvbHV0ZSBwYXRocycpCgogICAgIyBOb3JtYWxpemUgdGhlIHBhdGguIE9uIFdpbmRvd3MsIHJlcGxhY2UgIi8iIHdpdGggIlwiLgogICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKCoodGVzdF9wYXRoLnNwbGl0KCcvJykpKQoKICAgICMgRmluZCB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBwYXRoLgogICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpOgogICAgICAgICMgQSBub3JtYWwgbW9kdWxlL3BhY2thZ2UKICAgICAgICBiYXNlZGlyID0gb3MucGF0aC5zcGxpdChtb2R1bGUuX19maWxlX18pWzBdCiAgICBlbGlmIG1vZHVsZS5fX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICMgQW4gaW50ZXJhY3RpdmUgc2Vzc2lvbi4KICAgICAgICBpZiBsZW4oc3lzLmFyZ3YpPjAgYW5kIHN5cy5hcmd2WzBdICE9ICcnOgogICAgICAgICAgICBiYXNlZGlyID0gb3MucGF0aC5zcGxpdChzeXMuYXJndlswXSlbMF0KICAgICAgICBlbHNlOgogICAgICAgICAgICBiYXNlZGlyID0gb3MuY3VyZGlyCiAgICBlbHNlOgogICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBtb2R1bGUuX19wYXRoX186CiAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIHRlc3RfcGF0aCkKICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZ1bGxwYXRoKToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVsbHBhdGgKCiAgICAgICAgIyBBIG1vZHVsZSB3L28gX19maWxlX18gKHRoaXMgaW5jbHVkZXMgYnVpbHRpbnMpCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgcmVzb2x2ZSBwYXRocyByZWxhdGl2ZSB0byB0aGUgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICIlciAoaXQgaGFzIG5vIF9fZmlsZV9fKSIKICAgICAgICAgICAgICAgICAgICAgICAgICUgbW9kdWxlLl9fbmFtZV9fKQoKICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSB0ZXN0IHBhdGguCiAgICByZXR1cm4gb3MucGF0aC5qb2luKGJhc2VkaXIsIHRlc3RfcGF0aCkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMgMi4gRXhhbXBsZSAmIERvY1Rlc3QKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyAtIEFuICJleGFtcGxlIiBpcyBhIDxzb3VyY2UsIHdhbnQ+IHBhaXIsIHdoZXJlICJzb3VyY2UiIGlzIGEKIyMgICBmcmFnbWVudCBvZiBzb3VyY2UgY29kZSwgYW5kICJ3YW50IiBpcyB0aGUgZXhwZWN0ZWQgb3V0cHV0IGZvcgojIyAgICJzb3VyY2UuIiAgVGhlIEV4YW1wbGUgY2xhc3MgYWxzbyBpbmNsdWRlcyBpbmZvcm1hdGlvbiBhYm91dAojIyAgIHdoZXJlIHRoZSBleGFtcGxlIHdhcyBleHRyYWN0ZWQgZnJvbS4KIyMKIyMgLSBBICJkb2N0ZXN0IiBpcyBhIGNvbGxlY3Rpb24gb2YgZXhhbXBsZXMsIHR5cGljYWxseSBleHRyYWN0ZWQgZnJvbQojIyAgIGEgc3RyaW5nIChzdWNoIGFzIGFuIG9iamVjdCdzIGRvY3N0cmluZykuICBUaGUgRG9jVGVzdCBjbGFzcyBhbHNvCiMjICAgaW5jbHVkZXMgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlIHN0cmluZyB3YXMgZXh0cmFjdGVkIGZyb20uCgpjbGFzcyBFeGFtcGxlOgogICAgIiIiCiAgICBBIHNpbmdsZSBkb2N0ZXN0IGV4YW1wbGUsIGNvbnNpc3Rpbmcgb2Ygc291cmNlIGNvZGUgYW5kIGV4cGVjdGVkCiAgICBvdXRwdXQuICBgRXhhbXBsZWAgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CgogICAgICAtIHNvdXJjZTogQSBzaW5nbGUgUHl0aG9uIHN0YXRlbWVudCwgYWx3YXlzIGVuZGluZyB3aXRoIGEgbmV3bGluZS4KICAgICAgICBUaGUgY29uc3RydWN0b3IgYWRkcyBhIG5ld2xpbmUgaWYgbmVlZGVkLgoKICAgICAgLSB3YW50OiBUaGUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gcnVubmluZyB0aGUgc291cmNlIGNvZGUgKGVpdGhlcgogICAgICAgIGZyb20gc3Rkb3V0LCBvciBhIHRyYWNlYmFjayBpbiBjYXNlIG9mIGV4Y2VwdGlvbikuICBgd2FudGAgZW5kcwogICAgICAgIHdpdGggYSBuZXdsaW5lIHVubGVzcyBpdCdzIGVtcHR5LCBpbiB3aGljaCBjYXNlIGl0J3MgYW4gZW1wdHkKICAgICAgICBzdHJpbmcuICBUaGUgY29uc3RydWN0b3IgYWRkcyBhIG5ld2xpbmUgaWYgbmVlZGVkLgoKICAgICAgLSBleGNfbXNnOiBUaGUgZXhjZXB0aW9uIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBleGFtcGxlLCBpZgogICAgICAgIHRoZSBleGFtcGxlIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRlIGFuIGV4Y2VwdGlvbjsgb3IgYE5vbmVgIGlmCiAgICAgICAgaXQgaXMgbm90IGV4cGVjdGVkIHRvIGdlbmVyYXRlIGFuIGV4Y2VwdGlvbi4gIFRoaXMgZXhjZXB0aW9uCiAgICAgICAgbWVzc2FnZSBpcyBjb21wYXJlZCBhZ2FpbnN0IHRoZSByZXR1cm4gdmFsdWUgb2YKICAgICAgICBgdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSgpYC4gIGBleGNfbXNnYCBlbmRzIHdpdGggYQogICAgICAgIG5ld2xpbmUgdW5sZXNzIGl0J3MgYE5vbmVgLiAgVGhlIGNvbnN0cnVjdG9yIGFkZHMgYSBuZXdsaW5lCiAgICAgICAgaWYgbmVlZGVkLgoKICAgICAgLSBsaW5lbm86IFRoZSBsaW5lIG51bWJlciB3aXRoaW4gdGhlIERvY1Rlc3Qgc3RyaW5nIGNvbnRhaW5pbmcKICAgICAgICB0aGlzIEV4YW1wbGUgd2hlcmUgdGhlIEV4YW1wbGUgYmVnaW5zLiAgVGhpcyBsaW5lIG51bWJlciBpcwogICAgICAgIHplcm8tYmFzZWQsIHdpdGggcmVzcGVjdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBEb2NUZXN0LgoKICAgICAgLSBpbmRlbnQ6IFRoZSBleGFtcGxlJ3MgaW5kZW50YXRpb24gaW4gdGhlIERvY1Rlc3Qgc3RyaW5nLgogICAgICAgIEkuZS4sIHRoZSBudW1iZXIgb2Ygc3BhY2UgY2hhcmFjdGVycyB0aGF0IHByZWNlZGUgdGhlCiAgICAgICAgZXhhbXBsZSdzIGZpcnN0IHByb21wdC4KCiAgICAgIC0gb3B0aW9uczogQSBkaWN0aW9uYXJ5IG1hcHBpbmcgZnJvbSBvcHRpb24gZmxhZ3MgdG8gVHJ1ZSBvcgogICAgICAgIEZhbHNlLCB3aGljaCBpcyB1c2VkIHRvIG92ZXJyaWRlIGRlZmF1bHQgb3B0aW9ucyBmb3IgdGhpcwogICAgICAgIGV4YW1wbGUuICBBbnkgb3B0aW9uIGZsYWdzIG5vdCBjb250YWluZWQgaW4gdGhpcyBkaWN0aW9uYXJ5CiAgICAgICAgYXJlIGxlZnQgYXQgdGhlaXIgZGVmYXVsdCB2YWx1ZSAoYXMgc3BlY2lmaWVkIGJ5IHRoZQogICAgICAgIERvY1Rlc3RSdW5uZXIncyBvcHRpb25mbGFncykuICBCeSBkZWZhdWx0LCBubyBvcHRpb25zIGFyZSBzZXQuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb3VyY2UsIHdhbnQsIGV4Y19tc2c9Tm9uZSwgbGluZW5vPTAsIGluZGVudD0wLAogICAgICAgICAgICAgICAgIG9wdGlvbnM9Tm9uZSk6CiAgICAgICAgIyBOb3JtYWxpemUgaW5wdXRzLgogICAgICAgIGlmIG5vdCBzb3VyY2UuZW5kc3dpdGgoJ1xuJyk6CiAgICAgICAgICAgIHNvdXJjZSArPSAnXG4nCiAgICAgICAgaWYgd2FudCBhbmQgbm90IHdhbnQuZW5kc3dpdGgoJ1xuJyk6CiAgICAgICAgICAgIHdhbnQgKz0gJ1xuJwogICAgICAgIGlmIGV4Y19tc2cgaXMgbm90IE5vbmUgYW5kIG5vdCBleGNfbXNnLmVuZHN3aXRoKCdcbicpOgogICAgICAgICAgICBleGNfbXNnICs9ICdcbicKICAgICAgICAjIFN0b3JlIHByb3BlcnRpZXMuCiAgICAgICAgc2VsZi5zb3VyY2UgPSBzb3VyY2UKICAgICAgICBzZWxmLndhbnQgPSB3YW50CiAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KICAgICAgICBzZWxmLmluZGVudCA9IGluZGVudAogICAgICAgIGlmIG9wdGlvbnMgaXMgTm9uZTogb3B0aW9ucyA9IHt9CiAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgIHNlbGYuZXhjX21zZyA9IGV4Y19tc2cKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIG5vdCB0eXBlKG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgICAgIHJldHVybiBzZWxmLnNvdXJjZSA9PSBvdGhlci5zb3VyY2UgYW5kIFwKICAgICAgICAgICAgICAgc2VsZi53YW50ID09IG90aGVyLndhbnQgYW5kIFwKICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPT0gb3RoZXIubGluZW5vIGFuZCBcCiAgICAgICAgICAgICAgIHNlbGYuaW5kZW50ID09IG90aGVyLmluZGVudCBhbmQgXAogICAgICAgICAgICAgICBzZWxmLm9wdGlvbnMgPT0gb3RoZXIub3B0aW9ucyBhbmQgXAogICAgICAgICAgICAgICBzZWxmLmV4Y19tc2cgPT0gb3RoZXIuZXhjX21zZwoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5zb3VyY2UsIHNlbGYud2FudCwgc2VsZi5saW5lbm8sIHNlbGYuaW5kZW50LAogICAgICAgICAgICAgICAgICAgICBzZWxmLmV4Y19tc2cpKQoKY2xhc3MgRG9jVGVzdDoKICAgICIiIgogICAgQSBjb2xsZWN0aW9uIG9mIGRvY3Rlc3QgZXhhbXBsZXMgdGhhdCBzaG91bGQgYmUgcnVuIGluIGEgc2luZ2xlCiAgICBuYW1lc3BhY2UuICBFYWNoIGBEb2NUZXN0YCBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKCiAgICAgIC0gZXhhbXBsZXM6IHRoZSBsaXN0IG9mIGV4YW1wbGVzLgoKICAgICAgLSBnbG9iczogVGhlIG5hbWVzcGFjZSAoYWthIGdsb2JhbHMpIHRoYXQgdGhlIGV4YW1wbGVzIHNob3VsZAogICAgICAgIGJlIHJ1biBpbi4KCiAgICAgIC0gbmFtZTogQSBuYW1lIGlkZW50aWZ5aW5nIHRoZSBEb2NUZXN0ICh0eXBpY2FsbHksIHRoZSBuYW1lIG9mCiAgICAgICAgdGhlIG9iamVjdCB3aG9zZSBkb2NzdHJpbmcgdGhpcyBEb2NUZXN0IHdhcyBleHRyYWN0ZWQgZnJvbSkuCgogICAgICAtIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0aGF0IHRoaXMgRG9jVGVzdCB3YXMgZXh0cmFjdGVkCiAgICAgICAgZnJvbSwgb3IgYE5vbmVgIGlmIHRoZSBmaWxlbmFtZSBpcyB1bmtub3duLgoKICAgICAgLSBsaW5lbm86IFRoZSBsaW5lIG51bWJlciB3aXRoaW4gZmlsZW5hbWUgd2hlcmUgdGhpcyBEb2NUZXN0CiAgICAgICAgYmVnaW5zLCBvciBgTm9uZWAgaWYgdGhlIGxpbmUgbnVtYmVyIGlzIHVuYXZhaWxhYmxlLiAgVGhpcwogICAgICAgIGxpbmUgbnVtYmVyIGlzIHplcm8tYmFzZWQsIHdpdGggcmVzcGVjdCB0byB0aGUgYmVnaW5uaW5nIG9mCiAgICAgICAgdGhlIGZpbGUuCgogICAgICAtIGRvY3N0cmluZzogVGhlIHN0cmluZyB0aGF0IHRoZSBleGFtcGxlcyB3ZXJlIGV4dHJhY3RlZCBmcm9tLAogICAgICAgIG9yIGBOb25lYCBpZiB0aGUgc3RyaW5nIGlzIHVuYXZhaWxhYmxlLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZXhhbXBsZXMsIGdsb2JzLCBuYW1lLCBmaWxlbmFtZSwgbGluZW5vLCBkb2NzdHJpbmcpOgogICAgICAgICIiIgogICAgICAgIENyZWF0ZSBhIG5ldyBEb2NUZXN0IGNvbnRhaW5pbmcgdGhlIGdpdmVuIGV4YW1wbGVzLiAgVGhlCiAgICAgICAgRG9jVGVzdCdzIGdsb2JhbHMgYXJlIGluaXRpYWxpemVkIHdpdGggYSBjb3B5IG9mIGBnbG9ic2AuCiAgICAgICAgIiIiCiAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKGV4YW1wbGVzLCBzdHIpLCBcCiAgICAgICAgICAgICAgICJEb2NUZXN0IG5vIGxvbmdlciBhY2NlcHRzIHN0cjsgdXNlIERvY1Rlc3RQYXJzZXIgaW5zdGVhZCIKICAgICAgICBzZWxmLmV4YW1wbGVzID0gZXhhbXBsZXMKICAgICAgICBzZWxmLmRvY3N0cmluZyA9IGRvY3N0cmluZwogICAgICAgIHNlbGYuZ2xvYnMgPSBnbG9icy5jb3B5KCkKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaWYgbGVuKHNlbGYuZXhhbXBsZXMpID09IDA6CiAgICAgICAgICAgIGV4YW1wbGVzID0gJ25vIGV4YW1wbGVzJwogICAgICAgIGVsaWYgbGVuKHNlbGYuZXhhbXBsZXMpID09IDE6CiAgICAgICAgICAgIGV4YW1wbGVzID0gJzEgZXhhbXBsZScKICAgICAgICBlbHNlOgogICAgICAgICAgICBleGFtcGxlcyA9ICclZCBleGFtcGxlcycgJSBsZW4oc2VsZi5leGFtcGxlcykKICAgICAgICByZXR1cm4gKCc8JXMgJXMgZnJvbSAlczolcyAoJXMpPicgJQogICAgICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgIHNlbGYubmFtZSwgc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIGV4YW1wbGVzKSkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIG5vdCB0eXBlKG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgICAgIHJldHVybiBzZWxmLmV4YW1wbGVzID09IG90aGVyLmV4YW1wbGVzIGFuZCBcCiAgICAgICAgICAgICAgIHNlbGYuZG9jc3RyaW5nID09IG90aGVyLmRvY3N0cmluZyBhbmQgXAogICAgICAgICAgICAgICBzZWxmLmdsb2JzID09IG90aGVyLmdsb2JzIGFuZCBcCiAgICAgICAgICAgICAgIHNlbGYubmFtZSA9PSBvdGhlci5uYW1lIGFuZCBcCiAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPT0gb3RoZXIuZmlsZW5hbWUgYW5kIFwKICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPT0gb3RoZXIubGluZW5vCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHJldHVybiBoYXNoKChzZWxmLmRvY3N0cmluZywgc2VsZi5uYW1lLCBzZWxmLmZpbGVuYW1lLCBzZWxmLmxpbmVubykpCgogICAgIyBUaGlzIGxldHMgdXMgc29ydCB0ZXN0cyBieSBuYW1lOgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIERvY1Rlc3QpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKChzZWxmLm5hbWUsIHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBpZChzZWxmKSkKICAgICAgICAgICAgICAgIDwKICAgICAgICAgICAgICAgIChvdGhlci5uYW1lLCBvdGhlci5maWxlbmFtZSwgb3RoZXIubGluZW5vLCBpZChvdGhlcikpKQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyAzLiBEb2NUZXN0UGFyc2VyCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmNsYXNzIERvY1Rlc3RQYXJzZXI6CiAgICAiIiIKICAgIEEgY2xhc3MgdXNlZCB0byBwYXJzZSBzdHJpbmdzIGNvbnRhaW5pbmcgZG9jdGVzdCBleGFtcGxlcy4KICAgICIiIgogICAgIyBUaGlzIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyB1c2VkIHRvIGZpbmQgZG9jdGVzdCBleGFtcGxlcyBpbiBhCiAgICAjIHN0cmluZy4gIEl0IGRlZmluZXMgdGhyZWUgZ3JvdXBzOiBgc291cmNlYCBpcyB0aGUgc291cmNlIGNvZGUKICAgICMgKGluY2x1ZGluZyBsZWFkaW5nIGluZGVudGF0aW9uIGFuZCBwcm9tcHRzKTsgYGluZGVudGAgaXMgdGhlCiAgICAjIGluZGVudGF0aW9uIG9mIHRoZSBmaXJzdCAoUFMxKSBsaW5lIG9mIHRoZSBzb3VyY2UgY29kZTsgYW5kCiAgICAjIGB3YW50YCBpcyB0aGUgZXhwZWN0ZWQgb3V0cHV0IChpbmNsdWRpbmcgbGVhZGluZyBpbmRlbnRhdGlvbikuCiAgICBfRVhBTVBMRV9SRSA9IHJlLmNvbXBpbGUocicnJwogICAgICAgICMgU291cmNlIGNvbnNpc3RzIG9mIGEgUFMxIGxpbmUgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIFBTMiBsaW5lcy4KICAgICAgICAoP1A8c291cmNlPgogICAgICAgICAgICAoPzpeKD9QPGluZGVudD4gWyBdKikgPj4+ICAgIC4qKSAgICAjIFBTMSBsaW5lCiAgICAgICAgICAgICg/OlxuICAgICAgICAgICBbIF0qICBcLlwuXC4gLiopKikgICMgUFMyIGxpbmVzCiAgICAgICAgXG4/CiAgICAgICAgIyBXYW50IGNvbnNpc3RzIG9mIGFueSBub24tYmxhbmsgbGluZXMgdGhhdCBkbyBub3Qgc3RhcnQgd2l0aCBQUzEuCiAgICAgICAgKD9QPHdhbnQ+ICg/Oig/IVsgXSokKSAgICAjIE5vdCBhIGJsYW5rIGxpbmUKICAgICAgICAgICAgICAgICAgICAgKD8hWyBdKj4+PikgICMgTm90IGEgbGluZSBzdGFydGluZyB3aXRoIFBTMQogICAgICAgICAgICAgICAgICAgICAuKyRcbj8gICAgICAgIyBCdXQgYW55IG90aGVyIGxpbmUKICAgICAgICAgICAgICAgICAgKSopCiAgICAgICAgJycnLCByZS5NVUxUSUxJTkUgfCByZS5WRVJCT1NFKQoKICAgICMgQSByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGhhbmRsaW5nIGB3YW50YCBzdHJpbmdzIHRoYXQgY29udGFpbgogICAgIyBleHBlY3RlZCBleGNlcHRpb25zLiAgSXQgZGl2aWRlcyBgd2FudGAgaW50byB0aHJlZSBwaWVjZXM6CiAgICAjICAgIC0gdGhlIHRyYWNlYmFjayBoZWFkZXIgbGluZSAoYGhkcmApCiAgICAjICAgIC0gdGhlIHRyYWNlYmFjayBzdGFjayAoYHN0YWNrYCkKICAgICMgICAgLSB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UgKGBtc2dgKSwgYXMgZ2VuZXJhdGVkIGJ5CiAgICAjICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSgpCiAgICAjIGBtc2dgIG1heSBoYXZlIG11bHRpcGxlIGxpbmVzLiAgV2UgYXNzdW1lL3JlcXVpcmUgdGhhdCB0aGUKICAgICMgZXhjZXB0aW9uIG1lc3NhZ2UgaXMgdGhlIGZpcnN0IG5vbi1pbmRlbnRlZCBsaW5lIHN0YXJ0aW5nIHdpdGggYSB3b3JkCiAgICAjIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHRyYWNlYmFjayBoZWFkZXIgbGluZS4KICAgIF9FWENFUFRJT05fUkUgPSByZS5jb21waWxlKHIiIiIKICAgICAgICAjIEdyYWIgdGhlIHRyYWNlYmFjayBoZWFkZXIuICBEaWZmZXJlbnQgdmVyc2lvbnMgb2YgUHl0aG9uIGhhdmUKICAgICAgICAjIHNhaWQgZGlmZmVyZW50IHRoaW5ncyBvbiB0aGUgZmlyc3QgdHJhY2ViYWNrIGxpbmUuCiAgICAgICAgXig/UDxoZHI+IFRyYWNlYmFja1wgXCgKICAgICAgICAgICAgKD86IG1vc3RcIHJlY2VudFwgY2FsbFwgbGFzdAogICAgICAgICAgICB8ICAgaW5uZXJtb3N0XCBsYXN0CiAgICAgICAgICAgICkgXCkgOgogICAgICAgICkKICAgICAgICBccyogJCAgICAgICAgICAgICAgICAjIHRvc3MgdHJhaWxpbmcgd2hpdGVzcGFjZSBvbiB0aGUgaGVhZGVyLgogICAgICAgICg/UDxzdGFjaz4gLio/KSAgICAgICMgZG9uJ3QgYmxpbms6IGFic29yYiBzdHVmZiB1bnRpbC4uLgogICAgICAgIF4gKD9QPG1zZz4gXHcrIC4qKSAgICMgICAgIGEgbGluZSAqc3RhcnRzKiB3aXRoIGFscGhhbnVtLgogICAgICAgICIiIiwgcmUuVkVSQk9TRSB8IHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTCkKCiAgICAjIEEgY2FsbGFibGUgcmV0dXJuaW5nIGEgdHJ1ZSB2YWx1ZSBpZmYgaXRzIGFyZ3VtZW50IGlzIGEgYmxhbmsgbGluZQogICAgIyBvciBjb250YWlucyBhIHNpbmdsZSBjb21tZW50LgogICAgX0lTX0JMQU5LX09SX0NPTU1FTlQgPSByZS5jb21waWxlKHInXlsgXSooIy4qKT8kJykubWF0Y2gKCiAgICBkZWYgcGFyc2Uoc2VsZiwgc3RyaW5nLCBuYW1lPSc8c3RyaW5nPicpOgogICAgICAgICIiIgogICAgICAgIERpdmlkZSB0aGUgZ2l2ZW4gc3RyaW5nIGludG8gZXhhbXBsZXMgYW5kIGludGVydmVuaW5nIHRleHQsCiAgICAgICAgYW5kIHJldHVybiB0aGVtIGFzIGEgbGlzdCBvZiBhbHRlcm5hdGluZyBFeGFtcGxlcyBhbmQgc3RyaW5ncy4KICAgICAgICBMaW5lIG51bWJlcnMgZm9yIHRoZSBFeGFtcGxlcyBhcmUgMC1iYXNlZC4gIFRoZSBvcHRpb25hbAogICAgICAgIGFyZ3VtZW50IGBuYW1lYCBpcyBhIG5hbWUgaWRlbnRpZnlpbmcgdGhpcyBzdHJpbmcsIGFuZCBpcyBvbmx5CiAgICAgICAgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuCiAgICAgICAgIiIiCiAgICAgICAgc3RyaW5nID0gc3RyaW5nLmV4cGFuZHRhYnMoKQogICAgICAgICMgSWYgYWxsIGxpbmVzIGJlZ2luIHdpdGggdGhlIHNhbWUgaW5kZW50YXRpb24sIHRoZW4gc3RyaXAgaXQuCiAgICAgICAgbWluX2luZGVudCA9IHNlbGYuX21pbl9pbmRlbnQoc3RyaW5nKQogICAgICAgIGlmIG1pbl9pbmRlbnQgPiAwOgogICAgICAgICAgICBzdHJpbmcgPSAnXG4nLmpvaW4oW2xbbWluX2luZGVudDpdIGZvciBsIGluIHN0cmluZy5zcGxpdCgnXG4nKV0pCgogICAgICAgIG91dHB1dCA9IFtdCiAgICAgICAgY2hhcm5vLCBsaW5lbm8gPSAwLCAwCiAgICAgICAgIyBGaW5kIGFsbCBkb2N0ZXN0IGV4YW1wbGVzIGluIHRoZSBzdHJpbmc6CiAgICAgICAgZm9yIG0gaW4gc2VsZi5fRVhBTVBMRV9SRS5maW5kaXRlcihzdHJpbmcpOgogICAgICAgICAgICAjIEFkZCB0aGUgcHJlLWV4YW1wbGUgdGV4dCB0byBgb3V0cHV0YC4KICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChzdHJpbmdbY2hhcm5vOm0uc3RhcnQoKV0pCiAgICAgICAgICAgICMgVXBkYXRlIGxpbmVubyAobGluZXMgYmVmb3JlIHRoaXMgZXhhbXBsZSkKICAgICAgICAgICAgbGluZW5vICs9IHN0cmluZy5jb3VudCgnXG4nLCBjaGFybm8sIG0uc3RhcnQoKSkKICAgICAgICAgICAgIyBFeHRyYWN0IGluZm8gZnJvbSB0aGUgcmVnZXhwIG1hdGNoLgogICAgICAgICAgICAoc291cmNlLCBvcHRpb25zLCB3YW50LCBleGNfbXNnKSA9IFwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VfZXhhbXBsZShtLCBuYW1lLCBsaW5lbm8pCiAgICAgICAgICAgICMgQ3JlYXRlIGFuIEV4YW1wbGUsIGFuZCBhZGQgaXQgdG8gdGhlIGxpc3QuCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9JU19CTEFOS19PUl9DT01NRU5UKHNvdXJjZSk6CiAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCBFeGFtcGxlKHNvdXJjZSwgd2FudCwgZXhjX21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vPWxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50PW1pbl9pbmRlbnQrbGVuKG0uZ3JvdXAoJ2luZGVudCcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1vcHRpb25zKSApCiAgICAgICAgICAgICMgVXBkYXRlIGxpbmVubyAobGluZXMgaW5zaWRlIHRoaXMgZXhhbXBsZSkKICAgICAgICAgICAgbGluZW5vICs9IHN0cmluZy5jb3VudCgnXG4nLCBtLnN0YXJ0KCksIG0uZW5kKCkpCiAgICAgICAgICAgICMgVXBkYXRlIGNoYXJuby4KICAgICAgICAgICAgY2hhcm5vID0gbS5lbmQoKQogICAgICAgICMgQWRkIGFueSByZW1haW5pbmcgcG9zdC1leGFtcGxlIHRleHQgdG8gYG91dHB1dGAuCiAgICAgICAgb3V0cHV0LmFwcGVuZChzdHJpbmdbY2hhcm5vOl0pCiAgICAgICAgcmV0dXJuIG91dHB1dAoKICAgIGRlZiBnZXRfZG9jdGVzdChzZWxmLCBzdHJpbmcsIGdsb2JzLCBuYW1lLCBmaWxlbmFtZSwgbGluZW5vKToKICAgICAgICAiIiIKICAgICAgICBFeHRyYWN0IGFsbCBkb2N0ZXN0IGV4YW1wbGVzIGZyb20gdGhlIGdpdmVuIHN0cmluZywgYW5kCiAgICAgICAgY29sbGVjdCB0aGVtIGludG8gYSBgRG9jVGVzdGAgb2JqZWN0LgoKICAgICAgICBgZ2xvYnNgLCBgbmFtZWAsIGBmaWxlbmFtZWAsIGFuZCBgbGluZW5vYCBhcmUgYXR0cmlidXRlcyBmb3IKICAgICAgICB0aGUgbmV3IGBEb2NUZXN0YCBvYmplY3QuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGBEb2NUZXN0YAogICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBEb2NUZXN0KHNlbGYuZ2V0X2V4YW1wbGVzKHN0cmluZywgbmFtZSksIGdsb2JzLAogICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGZpbGVuYW1lLCBsaW5lbm8sIHN0cmluZykKCiAgICBkZWYgZ2V0X2V4YW1wbGVzKHNlbGYsIHN0cmluZywgbmFtZT0nPHN0cmluZz4nKToKICAgICAgICAiIiIKICAgICAgICBFeHRyYWN0IGFsbCBkb2N0ZXN0IGV4YW1wbGVzIGZyb20gdGhlIGdpdmVuIHN0cmluZywgYW5kIHJldHVybgogICAgICAgIHRoZW0gYXMgYSBsaXN0IG9mIGBFeGFtcGxlYCBvYmplY3RzLiAgTGluZSBudW1iZXJzIGFyZQogICAgICAgIDAtYmFzZWQsIGJlY2F1c2UgaXQncyBtb3N0IGNvbW1vbiBpbiBkb2N0ZXN0cyB0aGF0IG5vdGhpbmcKICAgICAgICBpbnRlcmVzdGluZyBhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMgb3BlbmluZyB0cmlwbGUtcXVvdGUsCiAgICAgICAgYW5kIHNvIHRoZSBmaXJzdCBpbnRlcmVzdGluZyBsaW5lIGlzIGNhbGxlZCBcImxpbmUgMVwiIHRoZW4uCgogICAgICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCBgbmFtZWAgaXMgYSBuYW1lIGlkZW50aWZ5aW5nIHRoaXMKICAgICAgICBzdHJpbmcsIGFuZCBpcyBvbmx5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBzZWxmLnBhcnNlKHN0cmluZywgbmFtZSkKICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoeCwgRXhhbXBsZSldCgogICAgZGVmIF9wYXJzZV9leGFtcGxlKHNlbGYsIG0sIG5hbWUsIGxpbmVubyk6CiAgICAgICAgIiIiCiAgICAgICAgR2l2ZW4gYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2ggZnJvbSBgX0VYQU1QTEVfUkVgIChgbWApLAogICAgICAgIHJldHVybiBhIHBhaXIgYChzb3VyY2UsIHdhbnQpYCwgd2hlcmUgYHNvdXJjZWAgaXMgdGhlIG1hdGNoZWQKICAgICAgICBleGFtcGxlJ3Mgc291cmNlIGNvZGUgKHdpdGggcHJvbXB0cyBhbmQgaW5kZW50YXRpb24gc3RyaXBwZWQpOwogICAgICAgIGFuZCBgd2FudGAgaXMgdGhlIGV4YW1wbGUncyBleHBlY3RlZCBvdXRwdXQgKHdpdGggaW5kZW50YXRpb24KICAgICAgICBzdHJpcHBlZCkuCgogICAgICAgIGBuYW1lYCBpcyB0aGUgc3RyaW5nJ3MgbmFtZSwgYW5kIGBsaW5lbm9gIGlzIHRoZSBsaW5lIG51bWJlcgogICAgICAgIHdoZXJlIHRoZSBleGFtcGxlIHN0YXJ0czsgYm90aCBhcmUgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuCiAgICAgICAgIiIiCiAgICAgICAgIyBHZXQgdGhlIGV4YW1wbGUncyBpbmRlbnRhdGlvbiBsZXZlbC4KICAgICAgICBpbmRlbnQgPSBsZW4obS5ncm91cCgnaW5kZW50JykpCgogICAgICAgICMgRGl2aWRlIHNvdXJjZSBpbnRvIGxpbmVzOyBjaGVjayB0aGF0IHRoZXkncmUgcHJvcGVybHkKICAgICAgICAjIGluZGVudGVkOyBhbmQgdGhlbiBzdHJpcCB0aGVpciBpbmRlbnRhdGlvbiAmIHByb21wdHMuCiAgICAgICAgc291cmNlX2xpbmVzID0gbS5ncm91cCgnc291cmNlJykuc3BsaXQoJ1xuJykKICAgICAgICBzZWxmLl9jaGVja19wcm9tcHRfYmxhbmsoc291cmNlX2xpbmVzLCBpbmRlbnQsIG5hbWUsIGxpbmVubykKICAgICAgICBzZWxmLl9jaGVja19wcmVmaXgoc291cmNlX2xpbmVzWzE6XSwgJyAnKmluZGVudCArICcuJywgbmFtZSwgbGluZW5vKQogICAgICAgIHNvdXJjZSA9ICdcbicuam9pbihbc2xbaW5kZW50KzQ6XSBmb3Igc2wgaW4gc291cmNlX2xpbmVzXSkKCiAgICAgICAgIyBEaXZpZGUgd2FudCBpbnRvIGxpbmVzOyBjaGVjayB0aGF0IGl0J3MgcHJvcGVybHkgaW5kZW50ZWQ7IGFuZAogICAgICAgICMgdGhlbiBzdHJpcCB0aGUgaW5kZW50YXRpb24uICBTcGFjZXMgYmVmb3JlIHRoZSBsYXN0IG5ld2xpbmUgc2hvdWxkCiAgICAgICAgIyBiZSBwcmVzZXJ2ZWQsIHNvIHBsYWluIHJzdHJpcCgpIGlzbid0IGdvb2QgZW5vdWdoLgogICAgICAgIHdhbnQgPSBtLmdyb3VwKCd3YW50JykKICAgICAgICB3YW50X2xpbmVzID0gd2FudC5zcGxpdCgnXG4nKQogICAgICAgIGlmIGxlbih3YW50X2xpbmVzKSA+IDEgYW5kIHJlLm1hdGNoKHInICokJywgd2FudF9saW5lc1stMV0pOgogICAgICAgICAgICBkZWwgd2FudF9saW5lc1stMV0gICMgZm9yZ2V0IGZpbmFsIG5ld2xpbmUgJiBzcGFjZXMgYWZ0ZXIgaXQKICAgICAgICBzZWxmLl9jaGVja19wcmVmaXgod2FudF9saW5lcywgJyAnKmluZGVudCwgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vICsgbGVuKHNvdXJjZV9saW5lcykpCiAgICAgICAgd2FudCA9ICdcbicuam9pbihbd2xbaW5kZW50Ol0gZm9yIHdsIGluIHdhbnRfbGluZXNdKQoKICAgICAgICAjIElmIGB3YW50YCBjb250YWlucyBhIHRyYWNlYmFjayBtZXNzYWdlLCB0aGVuIGV4dHJhY3QgaXQuCiAgICAgICAgbSA9IHNlbGYuX0VYQ0VQVElPTl9SRS5tYXRjaCh3YW50KQogICAgICAgIGlmIG06CiAgICAgICAgICAgIGV4Y19tc2cgPSBtLmdyb3VwKCdtc2cnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGV4Y19tc2cgPSBOb25lCgogICAgICAgICMgRXh0cmFjdCBvcHRpb25zIGZyb20gdGhlIHNvdXJjZS4KICAgICAgICBvcHRpb25zID0gc2VsZi5fZmluZF9vcHRpb25zKHNvdXJjZSwgbmFtZSwgbGluZW5vKQoKICAgICAgICByZXR1cm4gc291cmNlLCBvcHRpb25zLCB3YW50LCBleGNfbXNnCgogICAgIyBUaGlzIHJlZ3VsYXIgZXhwcmVzc2lvbiBsb29rcyBmb3Igb3B0aW9uIGRpcmVjdGl2ZXMgaW4gdGhlCiAgICAjIHNvdXJjZSBjb2RlIG9mIGFuIGV4YW1wbGUuICBPcHRpb24gZGlyZWN0aXZlcyBhcmUgY29tbWVudHMKICAgICMgc3RhcnRpbmcgd2l0aCAiZG9jdGVzdDoiLiAgV2FybmluZzogdGhpcyBtYXkgZ2l2ZSBmYWxzZQogICAgIyBwb3NpdGl2ZXMgZm9yIHN0cmluZy1saXRlcmFscyB0aGF0IGNvbnRhaW4gdGhlIHN0cmluZwogICAgIyAiI2RvY3Rlc3Q6Ii4gIEVsaW1pbmF0aW5nIHRoZXNlIGZhbHNlIHBvc2l0aXZlcyB3b3VsZCByZXF1aXJlCiAgICAjIGFjdHVhbGx5IHBhcnNpbmcgdGhlIHN0cmluZzsgYnV0IHdlIGxpbWl0IHRoZW0gYnkgaWdub3JpbmcgYW55CiAgICAjIGxpbmUgY29udGFpbmluZyAiI2RvY3Rlc3Q6IiB0aGF0IGlzICpmb2xsb3dlZCogYnkgYSBxdW90ZSBtYXJrLgogICAgX09QVElPTl9ESVJFQ1RJVkVfUkUgPSByZS5jb21waWxlKHInI1xzKmRvY3Rlc3Q6XHMqKFteXG5cJyJdKikkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5NVUxUSUxJTkUpCgogICAgZGVmIF9maW5kX29wdGlvbnMoc2VsZiwgc291cmNlLCBuYW1lLCBsaW5lbm8pOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBvcHRpb24gb3ZlcnJpZGVzIGV4dHJhY3RlZCBmcm9tCiAgICAgICAgb3B0aW9uIGRpcmVjdGl2ZXMgaW4gdGhlIGdpdmVuIHNvdXJjZSBzdHJpbmcuCgogICAgICAgIGBuYW1lYCBpcyB0aGUgc3RyaW5nJ3MgbmFtZSwgYW5kIGBsaW5lbm9gIGlzIHRoZSBsaW5lIG51bWJlcgogICAgICAgIHdoZXJlIHRoZSBleGFtcGxlIHN0YXJ0czsgYm90aCBhcmUgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuCiAgICAgICAgIiIiCiAgICAgICAgb3B0aW9ucyA9IHt9CiAgICAgICAgIyAobm90ZTogd2l0aCB0aGUgY3VycmVudCByZWdleHAsIHRoaXMgd2lsbCBtYXRjaCBhdCBtb3N0IG9uY2U6KQogICAgICAgIGZvciBtIGluIHNlbGYuX09QVElPTl9ESVJFQ1RJVkVfUkUuZmluZGl0ZXIoc291cmNlKToKICAgICAgICAgICAgb3B0aW9uX3N0cmluZ3MgPSBtLmdyb3VwKDEpLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKICAgICAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25fc3RyaW5nczoKICAgICAgICAgICAgICAgIGlmIChvcHRpb25bMF0gbm90IGluICcrLScgb3IKICAgICAgICAgICAgICAgICAgICBvcHRpb25bMTpdIG5vdCBpbiBPUFRJT05GTEFHU19CWV9OQU1FKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsaW5lICVyIG9mIHRoZSBkb2N0ZXN0IGZvciAlcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGFuIGludmFsaWQgb3B0aW9uOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmVubysxLCBuYW1lLCBvcHRpb24pKQogICAgICAgICAgICAgICAgZmxhZyA9IE9QVElPTkZMQUdTX0JZX05BTUVbb3B0aW9uWzE6XV0KICAgICAgICAgICAgICAgIG9wdGlvbnNbZmxhZ10gPSAob3B0aW9uWzBdID09ICcrJykKICAgICAgICBpZiBvcHRpb25zIGFuZCBzZWxmLl9JU19CTEFOS19PUl9DT01NRU5UKHNvdXJjZSk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xpbmUgJXIgb2YgdGhlIGRvY3Rlc3QgZm9yICVzIGhhcyBhbiBvcHRpb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RpdmUgb24gYSBsaW5lIHdpdGggbm8gZXhhbXBsZTogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZW5vLCBuYW1lLCBzb3VyY2UpKQogICAgICAgIHJldHVybiBvcHRpb25zCgogICAgIyBUaGlzIHJlZ3VsYXIgZXhwcmVzc2lvbiBmaW5kcyB0aGUgaW5kZW50YXRpb24gb2YgZXZlcnkgbm9uLWJsYW5rCiAgICAjIGxpbmUgaW4gYSBzdHJpbmcuCiAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZShyJ14oWyBdKikoPz1cUyknLCByZS5NVUxUSUxJTkUpCgogICAgZGVmIF9taW5faW5kZW50KHNlbGYsIHMpOgogICAgICAgICJSZXR1cm4gdGhlIG1pbmltdW0gaW5kZW50YXRpb24gb2YgYW55IG5vbi1ibGFuayBsaW5lIGluIGBzYCIKICAgICAgICBpbmRlbnRzID0gW2xlbihpbmRlbnQpIGZvciBpbmRlbnQgaW4gc2VsZi5fSU5ERU5UX1JFLmZpbmRhbGwocyldCiAgICAgICAgaWYgbGVuKGluZGVudHMpID4gMDoKICAgICAgICAgICAgcmV0dXJuIG1pbihpbmRlbnRzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAwCgogICAgZGVmIF9jaGVja19wcm9tcHRfYmxhbmsoc2VsZiwgbGluZXMsIGluZGVudCwgbmFtZSwgbGluZW5vKToKICAgICAgICAiIiIKICAgICAgICBHaXZlbiB0aGUgbGluZXMgb2YgYSBzb3VyY2Ugc3RyaW5nIChpbmNsdWRpbmcgcHJvbXB0cyBhbmQKICAgICAgICBsZWFkaW5nIGluZGVudGF0aW9uKSwgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnkgcHJvbXB0IGlzCiAgICAgICAgZm9sbG93ZWQgYnkgYSBzcGFjZSBjaGFyYWN0ZXIuICBJZiBhbnkgbGluZSBpcyBub3QgZm9sbG93ZWQgYnkKICAgICAgICBhIHNwYWNlIGNoYXJhY3RlciwgdGhlbiByYWlzZSBWYWx1ZUVycm9yLgogICAgICAgICIiIgogICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6CiAgICAgICAgICAgIGlmIGxlbihsaW5lKSA+PSBpbmRlbnQrNCBhbmQgbGluZVtpbmRlbnQrM10gIT0gJyAnOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbGluZSAlciBvZiB0aGUgZG9jc3RyaW5nIGZvciAlcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYWNrcyBibGFuayBhZnRlciAlczogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmVubytpKzEsIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lW2luZGVudDppbmRlbnQrM10sIGxpbmUpKQoKICAgIGRlZiBfY2hlY2tfcHJlZml4KHNlbGYsIGxpbmVzLCBwcmVmaXgsIG5hbWUsIGxpbmVubyk6CiAgICAgICAgIiIiCiAgICAgICAgQ2hlY2sgdGhhdCBldmVyeSBsaW5lIGluIHRoZSBnaXZlbiBsaXN0IHN0YXJ0cyB3aXRoIHRoZSBnaXZlbgogICAgICAgIHByZWZpeDsgaWYgYW55IGxpbmUgZG9lcyBub3QsIHRoZW4gcmFpc2UgYSBWYWx1ZUVycm9yLgogICAgICAgICIiIgogICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6CiAgICAgICAgICAgIGlmIGxpbmUgYW5kIG5vdCBsaW5lLnN0YXJ0c3dpdGgocHJlZml4KToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xpbmUgJXIgb2YgdGhlIGRvY3N0cmluZyBmb3IgJXMgaGFzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY29uc2lzdGVudCBsZWFkaW5nIHdoaXRlc3BhY2U6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lbm8raSsxLCBuYW1lLCBsaW5lKSkKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIDQuIERvY1Rlc3QgRmluZGVyCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmNsYXNzIERvY1Rlc3RGaW5kZXI6CiAgICAiIiIKICAgIEEgY2xhc3MgdXNlZCB0byBleHRyYWN0IHRoZSBEb2NUZXN0cyB0aGF0IGFyZSByZWxldmFudCB0byBhIGdpdmVuCiAgICBvYmplY3QsIGZyb20gaXRzIGRvY3N0cmluZyBhbmQgdGhlIGRvY3N0cmluZ3Mgb2YgaXRzIGNvbnRhaW5lZAogICAgb2JqZWN0cy4gIERvY3Rlc3RzIGNhbiBjdXJyZW50bHkgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGZvbGxvd2luZwogICAgb2JqZWN0IHR5cGVzOiBtb2R1bGVzLCBmdW5jdGlvbnMsIGNsYXNzZXMsIG1ldGhvZHMsIHN0YXRpY21ldGhvZHMsCiAgICBjbGFzc21ldGhvZHMsIGFuZCBwcm9wZXJ0aWVzLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcmJvc2U9RmFsc2UsIHBhcnNlcj1Eb2NUZXN0UGFyc2VyKCksCiAgICAgICAgICAgICAgICAgcmVjdXJzZT1UcnVlLCBleGNsdWRlX2VtcHR5PVRydWUpOgogICAgICAgICIiIgogICAgICAgIENyZWF0ZSBhIG5ldyBkb2N0ZXN0IGZpbmRlci4KCiAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IGBwYXJzZXJgIHNwZWNpZmllcyBhIGNsYXNzIG9yCiAgICAgICAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUgbmV3IERvY1Rlc3Qgb2JqZWN0cyAob3IKICAgICAgICBvYmplY3RzIHRoYXQgaW1wbGVtZW50IHRoZSBzYW1lIGludGVyZmFjZSBhcyBEb2NUZXN0KS4gIFRoZQogICAgICAgIHNpZ25hdHVyZSBmb3IgdGhpcyBmYWN0b3J5IGZ1bmN0aW9uIHNob3VsZCBtYXRjaCB0aGUgc2lnbmF0dXJlCiAgICAgICAgb2YgdGhlIERvY1Rlc3QgY29uc3RydWN0b3IuCgogICAgICAgIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBgcmVjdXJzZWAgaXMgZmFsc2UsIHRoZW4gYGZpbmRgIHdpbGwKICAgICAgICBvbmx5IGV4YW1pbmUgdGhlIGdpdmVuIG9iamVjdCwgYW5kIG5vdCBhbnkgY29udGFpbmVkIG9iamVjdHMuCgogICAgICAgIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBgZXhjbHVkZV9lbXB0eWAgaXMgZmFsc2UsIHRoZW4gYGZpbmRgCiAgICAgICAgd2lsbCBpbmNsdWRlIHRlc3RzIGZvciBvYmplY3RzIHdpdGggZW1wdHkgZG9jc3RyaW5ncy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKICAgICAgICBzZWxmLl92ZXJib3NlID0gdmVyYm9zZQogICAgICAgIHNlbGYuX3JlY3Vyc2UgPSByZWN1cnNlCiAgICAgICAgc2VsZi5fZXhjbHVkZV9lbXB0eSA9IGV4Y2x1ZGVfZW1wdHkKCiAgICBkZWYgZmluZChzZWxmLCBvYmosIG5hbWU9Tm9uZSwgbW9kdWxlPU5vbmUsIGdsb2JzPU5vbmUsIGV4dHJhZ2xvYnM9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgRG9jVGVzdHMgdGhhdCBhcmUgZGVmaW5lZCBieSB0aGUgZ2l2ZW4KICAgICAgICBvYmplY3QncyBkb2NzdHJpbmcsIG9yIGJ5IGFueSBvZiBpdHMgY29udGFpbmVkIG9iamVjdHMnCiAgICAgICAgZG9jc3RyaW5ncy4KCiAgICAgICAgVGhlIG9wdGlvbmFsIHBhcmFtZXRlciBgbW9kdWxlYCBpcyB0aGUgbW9kdWxlIHRoYXQgY29udGFpbnMKICAgICAgICB0aGUgZ2l2ZW4gb2JqZWN0LiAgSWYgdGhlIG1vZHVsZSBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIE5vbmUsIHRoZW4KICAgICAgICB0aGUgdGVzdCBmaW5kZXIgd2lsbCBhdHRlbXB0IHRvIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHRoZQogICAgICAgIGNvcnJlY3QgbW9kdWxlLiAgVGhlIG9iamVjdCdzIG1vZHVsZSBpcyB1c2VkOgoKICAgICAgICAgICAgLSBBcyBhIGRlZmF1bHQgbmFtZXNwYWNlLCBpZiBgZ2xvYnNgIGlzIG5vdCBzcGVjaWZpZWQuCiAgICAgICAgICAgIC0gVG8gcHJldmVudCB0aGUgRG9jVGVzdEZpbmRlciBmcm9tIGV4dHJhY3RpbmcgRG9jVGVzdHMKICAgICAgICAgICAgICBmcm9tIG9iamVjdHMgdGhhdCBhcmUgaW1wb3J0ZWQgZnJvbSBvdGhlciBtb2R1bGVzLgogICAgICAgICAgICAtIFRvIGZpbmQgdGhlIG5hbWUgb2YgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgb2JqZWN0LgogICAgICAgICAgICAtIFRvIGhlbHAgZmluZCB0aGUgbGluZSBudW1iZXIgb2YgdGhlIG9iamVjdCB3aXRoaW4gaXRzCiAgICAgICAgICAgICAgZmlsZS4KCiAgICAgICAgQ29udGFpbmVkIG9iamVjdHMgd2hvc2UgbW9kdWxlIGRvZXMgbm90IG1hdGNoIGBtb2R1bGVgIGFyZSBpZ25vcmVkLgoKICAgICAgICBJZiBgbW9kdWxlYCBpcyBGYWxzZSwgbm8gYXR0ZW1wdCB0byBmaW5kIHRoZSBtb2R1bGUgd2lsbCBiZSBtYWRlLgogICAgICAgIFRoaXMgaXMgb2JzY3VyZSwgb2YgdXNlIG1vc3RseSBpbiB0ZXN0czogIGlmIGBtb2R1bGVgIGlzIEZhbHNlLCBvcgogICAgICAgIGlzIE5vbmUgYnV0IGNhbm5vdCBiZSBmb3VuZCBhdXRvbWF0aWNhbGx5LCB0aGVuIGFsbCBvYmplY3RzIGFyZQogICAgICAgIGNvbnNpZGVyZWQgdG8gYmVsb25nIHRvIHRoZSAobm9uLWV4aXN0ZW50KSBtb2R1bGUsIHNvIGFsbCBjb250YWluZWQKICAgICAgICBvYmplY3RzIHdpbGwgKHJlY3Vyc2l2ZWx5KSBiZSBzZWFyY2hlZCBmb3IgZG9jdGVzdHMuCgogICAgICAgIFRoZSBnbG9iYWxzIGZvciBlYWNoIERvY1Rlc3QgaXMgZm9ybWVkIGJ5IGNvbWJpbmluZyBgZ2xvYnNgCiAgICAgICAgYW5kIGBleHRyYWdsb2JzYCAoYmluZGluZ3MgaW4gYGV4dHJhZ2xvYnNgIG92ZXJyaWRlIGJpbmRpbmdzCiAgICAgICAgaW4gYGdsb2JzYCkuICBBIG5ldyBjb3B5IG9mIHRoZSBnbG9iYWxzIGRpY3Rpb25hcnkgaXMgY3JlYXRlZAogICAgICAgIGZvciBlYWNoIERvY1Rlc3QuICBJZiBgZ2xvYnNgIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gaXQKICAgICAgICBkZWZhdWx0cyB0byB0aGUgbW9kdWxlJ3MgYF9fZGljdF9fYCwgaWYgc3BlY2lmaWVkLCBvciB7fQogICAgICAgIG90aGVyd2lzZS4gIElmIGBleHRyYWdsb2JzYCBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGl0IGRlZmF1bHRzCiAgICAgICAgdG8ge30uCgogICAgICAgICIiIgogICAgICAgICMgSWYgbmFtZSB3YXMgbm90IHNwZWNpZmllZCwgdGhlbiBleHRyYWN0IGl0IGZyb20gdGhlIG9iamVjdC4KICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIG5hbWUgPSBnZXRhdHRyKG9iaiwgJ19fbmFtZV9fJywgTm9uZSkKICAgICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRG9jVGVzdEZpbmRlci5maW5kOiBuYW1lIG11c3QgYmUgZ2l2ZW4gIgogICAgICAgICAgICAgICAgICAgICAgICAid2hlbiBvYmouX19uYW1lX18gZG9lc24ndCBleGlzdDogJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUob2JqKSwpKQoKICAgICAgICAjIEZpbmQgdGhlIG1vZHVsZSB0aGF0IGNvbnRhaW5zIHRoZSBnaXZlbiBvYmplY3QgKGlmIG9iaiBpcwogICAgICAgICMgYSBtb2R1bGUsIHRoZW4gbW9kdWxlPW9iai4pLiAgTm90ZTogdGhpcyBtYXkgZmFpbCwgaW4gd2hpY2gKICAgICAgICAjIGNhc2UgbW9kdWxlIHdpbGwgYmUgTm9uZS4KICAgICAgICBpZiBtb2R1bGUgaXMgRmFsc2U6CiAgICAgICAgICAgIG1vZHVsZSA9IE5vbmUKICAgICAgICBlbGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICAgICBtb2R1bGUgPSBpbnNwZWN0LmdldG1vZHVsZShvYmopCgogICAgICAgICMgUmVhZCB0aGUgbW9kdWxlJ3Mgc291cmNlIGNvZGUuICBUaGlzIGlzIHVzZWQgYnkKICAgICAgICAjIERvY1Rlc3RGaW5kZXIuX2ZpbmRfbGluZW5vIHRvIGZpbmQgdGhlIGxpbmUgbnVtYmVyIGZvciBhCiAgICAgICAgIyBnaXZlbiBvYmplY3QncyBkb2NzdHJpbmcuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWxlID0gaW5zcGVjdC5nZXRzb3VyY2VmaWxlKG9iaikKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICBzb3VyY2VfbGluZXMgPSBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbm90IGZpbGU6CiAgICAgICAgICAgICAgICAjIENoZWNrIHRvIHNlZSBpZiBpdCdzIG9uZSBvZiBvdXIgc3BlY2lhbCBpbnRlcm5hbCAiZmlsZXMiCiAgICAgICAgICAgICAgICAjIChzZWUgX19wYXRjaGVkX2xpbmVjYWNoZV9nZXRsaW5lcykuCiAgICAgICAgICAgICAgICBmaWxlID0gaW5zcGVjdC5nZXRmaWxlKG9iaikKICAgICAgICAgICAgICAgIGlmIG5vdCBmaWxlWzBdK2ZpbGVbLTI6XSA9PSAnPF0+JzogZmlsZSA9IE5vbmUKICAgICAgICAgICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgICAgICAgICAgc291cmNlX2xpbmVzID0gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgbW9kdWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICMgU3VwcGx5IHRoZSBtb2R1bGUgZ2xvYmFscyBpbiBjYXNlIHRoZSBtb2R1bGUgd2FzCiAgICAgICAgICAgICAgICAgICAgIyBvcmlnaW5hbGx5IGxvYWRlZCB2aWEgYSBQRVAgMzAyIGxvYWRlciBhbmQKICAgICAgICAgICAgICAgICAgICAjIGZpbGUgaXMgbm90IGEgdmFsaWQgZmlsZXN5c3RlbSBwYXRoCiAgICAgICAgICAgICAgICAgICAgc291cmNlX2xpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKGZpbGUsIG1vZHVsZS5fX2RpY3RfXykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBObyBhY2Nlc3MgdG8gYSBsb2FkZXIsIHNvIGFzc3VtZSBpdCdzIGEgbm9ybWFsCiAgICAgICAgICAgICAgICAgICAgIyBmaWxlc3lzdGVtIHBhdGgKICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoZmlsZSkKICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VfbGluZXM6CiAgICAgICAgICAgICAgICAgICAgc291cmNlX2xpbmVzID0gTm9uZQoKICAgICAgICAjIEluaXRpYWxpemUgZ2xvYmFscywgYW5kIG1lcmdlIGluIGV4dHJhZ2xvYnMuCiAgICAgICAgaWYgZ2xvYnMgaXMgTm9uZToKICAgICAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBnbG9icyA9IHt9CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBnbG9icyA9IG1vZHVsZS5fX2RpY3RfXy5jb3B5KCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBnbG9icyA9IGdsb2JzLmNvcHkoKQogICAgICAgIGlmIGV4dHJhZ2xvYnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGdsb2JzLnVwZGF0ZShleHRyYWdsb2JzKQogICAgICAgIGlmICdfX25hbWVfXycgbm90IGluIGdsb2JzOgogICAgICAgICAgICBnbG9ic1snX19uYW1lX18nXSA9ICdfX21haW5fXycgICMgcHJvdmlkZSBhIGRlZmF1bHQgbW9kdWxlIG5hbWUKCiAgICAgICAgIyBSZWN1cnNpdmVseSBleHBsb3JlIGBvYmpgLCBleHRyYWN0aW5nIERvY1Rlc3RzLgogICAgICAgIHRlc3RzID0gW10KICAgICAgICBzZWxmLl9maW5kKHRlc3RzLCBvYmosIG5hbWUsIG1vZHVsZSwgc291cmNlX2xpbmVzLCBnbG9icywge30pCiAgICAgICAgIyBTb3J0IHRoZSB0ZXN0cyBieSBhbHBoYSBvcmRlciBvZiBuYW1lcywgZm9yIGNvbnNpc3RlbmN5IGluCiAgICAgICAgIyB2ZXJib3NlLW1vZGUgb3V0cHV0LiAgVGhpcyB3YXMgYSBmZWF0dXJlIG9mIGRvY3Rlc3QgaW4gUHl0aG9ucwogICAgICAgICMgPD0gMi4zIHRoYXQgZ290IGxvc3QgYnkgYWNjaWRlbnQgaW4gMi40LiAgSXQgd2FzIHJlcGFpcmVkIGluCiAgICAgICAgIyAyLjQuNCBhbmQgMi41LgogICAgICAgIHRlc3RzLnNvcnQoKQogICAgICAgIHJldHVybiB0ZXN0cwoKICAgIGRlZiBfZnJvbV9tb2R1bGUoc2VsZiwgbW9kdWxlLCBvYmplY3QpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgZGVmaW5lZCBpbiB0aGUgZ2l2ZW4KICAgICAgICBtb2R1bGUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgZWxpZiBpbnNwZWN0LmdldG1vZHVsZShvYmplY3QpIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gbW9kdWxlIGlzIGluc3BlY3QuZ2V0bW9kdWxlKG9iamVjdCkKICAgICAgICBlbGlmIGluc3BlY3QuaXNmdW5jdGlvbihvYmplY3QpOgogICAgICAgICAgICByZXR1cm4gbW9kdWxlLl9fZGljdF9fIGlzIG9iamVjdC5fX2dsb2JhbHNfXwogICAgICAgIGVsaWYgKGluc3BlY3QuaXNtZXRob2RkZXNjcmlwdG9yKG9iamVjdCkgb3IKICAgICAgICAgICAgICBpbnNwZWN0LmlzbWV0aG9kd3JhcHBlcihvYmplY3QpKToKICAgICAgICAgICAgaWYgaGFzYXR0cihvYmplY3QsICdfX29iamNsYXNzX18nKToKICAgICAgICAgICAgICAgIG9ial9tb2QgPSBvYmplY3QuX19vYmpjbGFzc19fLl9fbW9kdWxlX18KICAgICAgICAgICAgZWxpZiBoYXNhdHRyKG9iamVjdCwgJ19fbW9kdWxlX18nKToKICAgICAgICAgICAgICAgIG9ial9tb2QgPSBvYmplY3QuX19tb2R1bGVfXwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUgIyBbWFhdIG5vIGVhc3kgd2F5IHRvIHRlbGwgb3RoZXJ3aXNlCiAgICAgICAgICAgIHJldHVybiBtb2R1bGUuX19uYW1lX18gPT0gb2JqX21vZAogICAgICAgIGVsaWYgaW5zcGVjdC5pc2NsYXNzKG9iamVjdCk6CiAgICAgICAgICAgIHJldHVybiBtb2R1bGUuX19uYW1lX18gPT0gb2JqZWN0Ll9fbW9kdWxlX18KICAgICAgICBlbGlmIGhhc2F0dHIob2JqZWN0LCAnX19tb2R1bGVfXycpOgogICAgICAgICAgICByZXR1cm4gbW9kdWxlLl9fbmFtZV9fID09IG9iamVjdC5fX21vZHVsZV9fCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9iamVjdCwgcHJvcGVydHkpOgogICAgICAgICAgICByZXR1cm4gVHJ1ZSAjIFtYWF0gbm8gd2F5IG5vdCBiZSBzdXJlLgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9iamVjdCBtdXN0IGJlIGEgY2xhc3Mgb3IgZnVuY3Rpb24iKQoKICAgIGRlZiBfaXNfcm91dGluZShzZWxmLCBvYmopOgogICAgICAgICIiIgogICAgICAgIFNhZmVseSB1bndyYXAgb2JqZWN0cyBhbmQgZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGZ1bmN0aW9ucy4KICAgICAgICAiIiIKICAgICAgICBtYXliZV9yb3V0aW5lID0gb2JqCiAgICAgICAgdHJ5OgogICAgICAgICAgICBtYXliZV9yb3V0aW5lID0gaW5zcGVjdC51bndyYXAobWF5YmVfcm91dGluZSkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIHJldHVybiBpbnNwZWN0Lmlzcm91dGluZShtYXliZV9yb3V0aW5lKQoKICAgIGRlZiBfZmluZChzZWxmLCB0ZXN0cywgb2JqLCBuYW1lLCBtb2R1bGUsIHNvdXJjZV9saW5lcywgZ2xvYnMsIHNlZW4pOgogICAgICAgICIiIgogICAgICAgIEZpbmQgdGVzdHMgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGFueSBjb250YWluZWQgb2JqZWN0cywgYW5kCiAgICAgICAgYWRkIHRoZW0gdG8gYHRlc3RzYC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl92ZXJib3NlOgogICAgICAgICAgICBwcmludCgnRmluZGluZyB0ZXN0cyBpbiAlcycgJSBuYW1lKQoKICAgICAgICAjIElmIHdlJ3ZlIGFscmVhZHkgcHJvY2Vzc2VkIHRoaXMgb2JqZWN0LCB0aGVuIGlnbm9yZSBpdC4KICAgICAgICBpZiBpZChvYmopIGluIHNlZW46CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlZW5baWQob2JqKV0gPSAxCgogICAgICAgICMgRmluZCBhIHRlc3QgZm9yIHRoaXMgb2JqZWN0LCBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHRlc3RzLgogICAgICAgIHRlc3QgPSBzZWxmLl9nZXRfdGVzdChvYmosIG5hbWUsIG1vZHVsZSwgZ2xvYnMsIHNvdXJjZV9saW5lcykKICAgICAgICBpZiB0ZXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICB0ZXN0cy5hcHBlbmQodGVzdCkKCiAgICAgICAgIyBMb29rIGZvciB0ZXN0cyBpbiBhIG1vZHVsZSdzIGNvbnRhaW5lZCBvYmplY3RzLgogICAgICAgIGlmIGluc3BlY3QuaXNtb2R1bGUob2JqKSBhbmQgc2VsZi5fcmVjdXJzZToKICAgICAgICAgICAgZm9yIHZhbG5hbWUsIHZhbCBpbiBvYmouX19kaWN0X18uaXRlbXMoKToKICAgICAgICAgICAgICAgIHZhbG5hbWUgPSAnJXMuJXMnICUgKG5hbWUsIHZhbG5hbWUpCgogICAgICAgICAgICAgICAgIyBSZWN1cnNlIHRvIGZ1bmN0aW9ucyAmIGNsYXNzZXMuCiAgICAgICAgICAgICAgICBpZiAoKHNlbGYuX2lzX3JvdXRpbmUodmFsKSBvciBpbnNwZWN0LmlzY2xhc3ModmFsKSkgYW5kCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnJvbV9tb2R1bGUobW9kdWxlLCB2YWwpKToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9maW5kKHRlc3RzLCB2YWwsIHZhbG5hbWUsIG1vZHVsZSwgc291cmNlX2xpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnMsIHNlZW4pCgogICAgICAgICMgTG9vayBmb3IgdGVzdHMgaW4gYSBtb2R1bGUncyBfX3Rlc3RfXyBkaWN0aW9uYXJ5LgogICAgICAgIGlmIGluc3BlY3QuaXNtb2R1bGUob2JqKSBhbmQgc2VsZi5fcmVjdXJzZToKICAgICAgICAgICAgZm9yIHZhbG5hbWUsIHZhbCBpbiBnZXRhdHRyKG9iaiwgJ19fdGVzdF9fJywge30pLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWxuYW1lLCBzdHIpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkRvY1Rlc3RGaW5kZXIuZmluZDogX190ZXN0X18ga2V5cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHJpbmdzOiAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUodmFsbmFtZSksKSkKICAgICAgICAgICAgICAgIGlmIG5vdCAoaW5zcGVjdC5pc3JvdXRpbmUodmFsKSBvciBpbnNwZWN0LmlzY2xhc3ModmFsKSBvcgogICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzbW9kdWxlKHZhbCkgb3IgaXNpbnN0YW5jZSh2YWwsIHN0cikpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkRvY1Rlc3RGaW5kZXIuZmluZDogX190ZXN0X18gdmFsdWVzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIHN0cmluZ3MsIGZ1bmN0aW9ucywgbWV0aG9kcywgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsYXNzZXMsIG9yIG1vZHVsZXM6ICVyIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZSh2YWwpLCkpCiAgICAgICAgICAgICAgICB2YWxuYW1lID0gJyVzLl9fdGVzdF9fLiVzJyAlIChuYW1lLCB2YWxuYW1lKQogICAgICAgICAgICAgICAgc2VsZi5fZmluZCh0ZXN0cywgdmFsLCB2YWxuYW1lLCBtb2R1bGUsIHNvdXJjZV9saW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnMsIHNlZW4pCgogICAgICAgICMgTG9vayBmb3IgdGVzdHMgaW4gYSBjbGFzcydzIGNvbnRhaW5lZCBvYmplY3RzLgogICAgICAgIGlmIGluc3BlY3QuaXNjbGFzcyhvYmopIGFuZCBzZWxmLl9yZWN1cnNlOgogICAgICAgICAgICBmb3IgdmFsbmFtZSwgdmFsIGluIG9iai5fX2RpY3RfXy5pdGVtcygpOgogICAgICAgICAgICAgICAgIyBTcGVjaWFsIGhhbmRsaW5nIGZvciBzdGF0aWNtZXRob2QvY2xhc3NtZXRob2QuCiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgKHN0YXRpY21ldGhvZCwgY2xhc3NtZXRob2QpKToKICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuX19mdW5jX18KCiAgICAgICAgICAgICAgICAjIFJlY3Vyc2UgdG8gbWV0aG9kcywgcHJvcGVydGllcywgYW5kIG5lc3RlZCBjbGFzc2VzLgogICAgICAgICAgICAgICAgaWYgKChpbnNwZWN0Lmlzcm91dGluZSh2YWwpIG9yIGluc3BlY3QuaXNjbGFzcyh2YWwpIG9yCiAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHZhbCwgcHJvcGVydHkpKSBhbmQKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Zyb21fbW9kdWxlKG1vZHVsZSwgdmFsKSk6CiAgICAgICAgICAgICAgICAgICAgdmFsbmFtZSA9ICclcy4lcycgJSAobmFtZSwgdmFsbmFtZSkKICAgICAgICAgICAgICAgICAgICBzZWxmLl9maW5kKHRlc3RzLCB2YWwsIHZhbG5hbWUsIG1vZHVsZSwgc291cmNlX2xpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnMsIHNlZW4pCgogICAgZGVmIF9nZXRfdGVzdChzZWxmLCBvYmosIG5hbWUsIG1vZHVsZSwgZ2xvYnMsIHNvdXJjZV9saW5lcyk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIGEgRG9jVGVzdCBmb3IgdGhlIGdpdmVuIG9iamVjdCwgaWYgaXQgZGVmaW5lcyBhIGRvY3N0cmluZzsKICAgICAgICBvdGhlcndpc2UsIHJldHVybiBOb25lLgogICAgICAgICIiIgogICAgICAgICMgRXh0cmFjdCB0aGUgb2JqZWN0J3MgZG9jc3RyaW5nLiAgSWYgaXQgZG9lc24ndCBoYXZlIG9uZSwKICAgICAgICAjIHRoZW4gcmV0dXJuIE5vbmUgKG5vIHRlc3QgZm9yIHRoaXMgb2JqZWN0KS4KICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgc3RyKToKICAgICAgICAgICAgZG9jc3RyaW5nID0gb2JqCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgb2JqLl9fZG9jX18gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBkb2NzdHJpbmcgPSAnJwogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBkb2NzdHJpbmcgPSBvYmouX19kb2NfXwogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRvY3N0cmluZywgc3RyKToKICAgICAgICAgICAgICAgICAgICAgICAgZG9jc3RyaW5nID0gc3RyKGRvY3N0cmluZykKICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgICAgIGRvY3N0cmluZyA9ICcnCgogICAgICAgICMgRmluZCB0aGUgZG9jc3RyaW5nJ3MgbG9jYXRpb24gaW4gdGhlIGZpbGUuCiAgICAgICAgbGluZW5vID0gc2VsZi5fZmluZF9saW5lbm8ob2JqLCBzb3VyY2VfbGluZXMpCgogICAgICAgICMgRG9uJ3QgYm90aGVyIGlmIHRoZSBkb2NzdHJpbmcgaXMgZW1wdHkuCiAgICAgICAgaWYgc2VsZi5fZXhjbHVkZV9lbXB0eSBhbmQgbm90IGRvY3N0cmluZzoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgIyBSZXR1cm4gYSBEb2NUZXN0IGZvciB0aGlzIG9iamVjdC4KICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgZmlsZW5hbWUgPSBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBfX2ZpbGVfXyBjYW4gYmUgTm9uZSBmb3IgbmFtZXNwYWNlIHBhY2thZ2VzLgogICAgICAgICAgICBmaWxlbmFtZSA9IGdldGF0dHIobW9kdWxlLCAnX19maWxlX18nLCBOb25lKSBvciBtb2R1bGUuX19uYW1lX18KICAgICAgICAgICAgaWYgZmlsZW5hbWVbLTQ6XSA9PSAiLnB5YyI6CiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lWzotMV0KICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLmdldF9kb2N0ZXN0KGRvY3N0cmluZywgZ2xvYnMsIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vKQoKICAgIGRlZiBfZmluZF9saW5lbm8oc2VsZiwgb2JqLCBzb3VyY2VfbGluZXMpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhIGxpbmUgbnVtYmVyIG9mIHRoZSBnaXZlbiBvYmplY3QncyBkb2NzdHJpbmcuCgogICAgICAgIFJldHVybnMgYE5vbmVgIGlmIHRoZSBnaXZlbiBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIGRvY3N0cmluZy4KICAgICAgICAiIiIKICAgICAgICBsaW5lbm8gPSBOb25lCiAgICAgICAgZG9jc3RyaW5nID0gZ2V0YXR0cihvYmosICdfX2RvY19fJywgTm9uZSkKCiAgICAgICAgIyBGaW5kIHRoZSBsaW5lIG51bWJlciBmb3IgbW9kdWxlcy4KICAgICAgICBpZiBpbnNwZWN0LmlzbW9kdWxlKG9iaikgYW5kIGRvY3N0cmluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgbGluZW5vID0gMAoKICAgICAgICAjIEZpbmQgdGhlIGxpbmUgbnVtYmVyIGZvciBjbGFzc2VzLgogICAgICAgICMgTm90ZTogdGhpcyBjb3VsZCBiZSBmb29sZWQgaWYgYSBjbGFzcyBpcyBkZWZpbmVkIG11bHRpcGxlCiAgICAgICAgIyB0aW1lcyBpbiBhIHNpbmdsZSBmaWxlLgogICAgICAgIGlmIGluc3BlY3QuaXNjbGFzcyhvYmopIGFuZCBkb2NzdHJpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHNvdXJjZV9saW5lcyBpcyBOb25lOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ15ccypjbGFzc1xzKiVzXGInICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKG9iaiwgJ19fbmFtZV9fJywgJy0nKSkKICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKHNvdXJjZV9saW5lcyk6CiAgICAgICAgICAgICAgICBpZiBwYXQubWF0Y2gobGluZSk6CiAgICAgICAgICAgICAgICAgICAgbGluZW5vID0gaQogICAgICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgICMgRmluZCB0aGUgbGluZSBudW1iZXIgZm9yIGZ1bmN0aW9ucyAmIG1ldGhvZHMuCiAgICAgICAgaWYgaW5zcGVjdC5pc21ldGhvZChvYmopOiBvYmogPSBvYmouX19mdW5jX18KICAgICAgICBpZiBpbnNwZWN0LmlzZnVuY3Rpb24ob2JqKSBhbmQgZ2V0YXR0cihvYmosICdfX2RvY19fJywgTm9uZSk6CiAgICAgICAgICAgICMgV2UgZG9uJ3QgdXNlIGBkb2NzdHJpbmdgIHZhciBoZXJlLCBiZWNhdXNlIGBvYmpgIGNhbiBiZSBjaGFuZ2VkLgogICAgICAgICAgICBvYmogPSBvYmouX19jb2RlX18KICAgICAgICBpZiBpbnNwZWN0LmlzdHJhY2ViYWNrKG9iaik6IG9iaiA9IG9iai50Yl9mcmFtZQogICAgICAgIGlmIGluc3BlY3QuaXNmcmFtZShvYmopOiBvYmogPSBvYmouZl9jb2RlCiAgICAgICAgaWYgaW5zcGVjdC5pc2NvZGUob2JqKToKICAgICAgICAgICAgbGluZW5vID0gb2JqLmNvX2ZpcnN0bGluZW5vIC0gMQoKICAgICAgICAjIEZpbmQgdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBkb2NzdHJpbmcgc3RhcnRzLiAgQXNzdW1lCiAgICAgICAgIyB0aGF0IGl0J3MgdGhlIGZpcnN0IGxpbmUgdGhhdCBiZWdpbnMgd2l0aCBhIHF1b3RlIG1hcmsuCiAgICAgICAgIyBOb3RlOiB0aGlzIGNvdWxkIGJlIGZvb2xlZCBieSBhIG11bHRpbGluZSBmdW5jdGlvbgogICAgICAgICMgc2lnbmF0dXJlLCB3aGVyZSBhIGNvbnRpbnVhdGlvbiBsaW5lIGJlZ2lucyB3aXRoIGEgcXVvdGUKICAgICAgICAjIG1hcmsuCiAgICAgICAgaWYgbGluZW5vIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBzb3VyY2VfbGluZXMgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8rMQogICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKHInKF58Lio6KVxzKlx3KigifFwnKScpCiAgICAgICAgICAgIGZvciBsaW5lbm8gaW4gcmFuZ2UobGluZW5vLCBsZW4oc291cmNlX2xpbmVzKSk6CiAgICAgICAgICAgICAgICBpZiBwYXQubWF0Y2goc291cmNlX2xpbmVzW2xpbmVub10pOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8KCiAgICAgICAgIyBXZSBjb3VsZG4ndCBmaW5kIHRoZSBsaW5lIG51bWJlci4KICAgICAgICByZXR1cm4gTm9uZQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyA1LiBEb2NUZXN0IFJ1bm5lcgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpjbGFzcyBEb2NUZXN0UnVubmVyOgogICAgIiIiCiAgICBBIGNsYXNzIHVzZWQgdG8gcnVuIERvY1Rlc3QgdGVzdCBjYXNlcywgYW5kIGFjY3VtdWxhdGUgc3RhdGlzdGljcy4KICAgIFRoZSBgcnVuYCBtZXRob2QgaXMgdXNlZCB0byBwcm9jZXNzIGEgc2luZ2xlIERvY1Rlc3QgY2FzZS4gIEl0CiAgICByZXR1cm5zIGEgdHVwbGUgYChmLCB0KWAsIHdoZXJlIGB0YCBpcyB0aGUgbnVtYmVyIG9mIHRlc3QgY2FzZXMKICAgIHRyaWVkLCBhbmQgYGZgIGlzIHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlcyB0aGF0IGZhaWxlZC4KCiAgICAgICAgPj4+IHRlc3RzID0gRG9jVGVzdEZpbmRlcigpLmZpbmQoX1Rlc3RDbGFzcykKICAgICAgICA+Pj4gcnVubmVyID0gRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQogICAgICAgID4+PiB0ZXN0cy5zb3J0KGtleSA9IGxhbWJkYSB0ZXN0OiB0ZXN0Lm5hbWUpCiAgICAgICAgPj4+IGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgIC4uLiAgICAgcHJpbnQodGVzdC5uYW1lLCAnLT4nLCBydW5uZXIucnVuKHRlc3QpKQogICAgICAgIF9UZXN0Q2xhc3MgLT4gVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD0yKQogICAgICAgIF9UZXN0Q2xhc3MuX19pbml0X18gLT4gVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD0yKQogICAgICAgIF9UZXN0Q2xhc3MuZ2V0IC0+IFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKICAgICAgICBfVGVzdENsYXNzLnNxdWFyZSAtPiBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTEpCgogICAgVGhlIGBzdW1tYXJpemVgIG1ldGhvZCBwcmludHMgYSBzdW1tYXJ5IG9mIGFsbCB0aGUgdGVzdCBjYXNlcyB0aGF0CiAgICBoYXZlIGJlZW4gcnVuIGJ5IHRoZSBydW5uZXIsIGFuZCByZXR1cm5zIGFuIGFnZ3JlZ2F0ZWQgYChmLCB0KWAKICAgIHR1cGxlOgoKICAgICAgICA+Pj4gcnVubmVyLnN1bW1hcml6ZSh2ZXJib3NlPTEpCiAgICAgICAgNCBpdGVtcyBwYXNzZWQgYWxsIHRlc3RzOgogICAgICAgICAgIDIgdGVzdHMgaW4gX1Rlc3RDbGFzcwogICAgICAgICAgIDIgdGVzdHMgaW4gX1Rlc3RDbGFzcy5fX2luaXRfXwogICAgICAgICAgIDIgdGVzdHMgaW4gX1Rlc3RDbGFzcy5nZXQKICAgICAgICAgICAxIHRlc3RzIGluIF9UZXN0Q2xhc3Muc3F1YXJlCiAgICAgICAgNyB0ZXN0cyBpbiA0IGl0ZW1zLgogICAgICAgIDcgcGFzc2VkIGFuZCAwIGZhaWxlZC4KICAgICAgICBUZXN0IHBhc3NlZC4KICAgICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTcpCgogICAgVGhlIGFnZ3JlZ2F0ZWQgbnVtYmVyIG9mIHRyaWVkIGV4YW1wbGVzIGFuZCBmYWlsZWQgZXhhbXBsZXMgaXMKICAgIGFsc28gYXZhaWxhYmxlIHZpYSB0aGUgYHRyaWVzYCBhbmQgYGZhaWx1cmVzYCBhdHRyaWJ1dGVzOgoKICAgICAgICA+Pj4gcnVubmVyLnRyaWVzCiAgICAgICAgNwogICAgICAgID4+PiBydW5uZXIuZmFpbHVyZXMKICAgICAgICAwCgogICAgVGhlIGNvbXBhcmlzb24gYmV0d2VlbiBleHBlY3RlZCBvdXRwdXRzIGFuZCBhY3R1YWwgb3V0cHV0cyBpcyBkb25lCiAgICBieSBhbiBgT3V0cHV0Q2hlY2tlcmAuICBUaGlzIGNvbXBhcmlzb24gbWF5IGJlIGN1c3RvbWl6ZWQgd2l0aCBhCiAgICBudW1iZXIgb2Ygb3B0aW9uIGZsYWdzOyBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGB0ZXN0bW9kYCBmb3IKICAgIG1vcmUgaW5mb3JtYXRpb24uICBJZiB0aGUgb3B0aW9uIGZsYWdzIGFyZSBpbnN1ZmZpY2llbnQsIHRoZW4gdGhlCiAgICBjb21wYXJpc29uIG1heSBhbHNvIGJlIGN1c3RvbWl6ZWQgYnkgcGFzc2luZyBhIHN1YmNsYXNzIG9mCiAgICBgT3V0cHV0Q2hlY2tlcmAgdG8gdGhlIGNvbnN0cnVjdG9yLgoKICAgIFRoZSB0ZXN0IHJ1bm5lcidzIGRpc3BsYXkgb3V0cHV0IGNhbiBiZSBjb250cm9sbGVkIGluIHR3byB3YXlzLgogICAgRmlyc3QsIGFuIG91dHB1dCBmdW5jdGlvbiAoYG91dCkgY2FuIGJlIHBhc3NlZCB0bwogICAgYFRlc3RSdW5uZXIucnVuYDsgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHN0cmluZ3MgdGhhdAogICAgc2hvdWxkIGJlIGRpc3BsYXllZC4gIEl0IGRlZmF1bHRzIHRvIGBzeXMuc3Rkb3V0LndyaXRlYC4gIElmCiAgICBjYXB0dXJpbmcgdGhlIG91dHB1dCBpcyBub3Qgc3VmZmljaWVudCwgdGhlbiB0aGUgZGlzcGxheSBvdXRwdXQKICAgIGNhbiBiZSBhbHNvIGN1c3RvbWl6ZWQgYnkgc3ViY2xhc3NpbmcgRG9jVGVzdFJ1bm5lciwgYW5kCiAgICBvdmVycmlkaW5nIHRoZSBtZXRob2RzIGByZXBvcnRfc3RhcnRgLCBgcmVwb3J0X3N1Y2Nlc3NgLAogICAgYHJlcG9ydF91bmV4cGVjdGVkX2V4Y2VwdGlvbmAsIGFuZCBgcmVwb3J0X2ZhaWx1cmVgLgogICAgIiIiCiAgICAjIFRoaXMgZGl2aWRlciBzdHJpbmcgaXMgdXNlZCB0byBzZXBhcmF0ZSBmYWlsdXJlIG1lc3NhZ2VzLCBhbmQgdG8KICAgICMgc2VwYXJhdGUgc2VjdGlvbnMgb2YgdGhlIHN1bW1hcnkuCiAgICBESVZJREVSID0gIioiICogNzAKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY2hlY2tlcj1Ob25lLCB2ZXJib3NlPU5vbmUsIG9wdGlvbmZsYWdzPTApOgogICAgICAgICIiIgogICAgICAgIENyZWF0ZSBhIG5ldyB0ZXN0IHJ1bm5lci4KCiAgICAgICAgT3B0aW9uYWwga2V5d29yZCBhcmcgYGNoZWNrZXJgIGlzIHRoZSBgT3V0cHV0Q2hlY2tlcmAgdGhhdAogICAgICAgIHNob3VsZCBiZSB1c2VkIHRvIGNvbXBhcmUgdGhlIGV4cGVjdGVkIG91dHB1dHMgYW5kIGFjdHVhbAogICAgICAgIG91dHB1dHMgb2YgZG9jdGVzdCBleGFtcGxlcy4KCiAgICAgICAgT3B0aW9uYWwga2V5d29yZCBhcmcgJ3ZlcmJvc2UnIHByaW50cyBsb3RzIG9mIHN0dWZmIGlmIHRydWUsCiAgICAgICAgb25seSBmYWlsdXJlcyBpZiBmYWxzZTsgYnkgZGVmYXVsdCwgaXQncyB0cnVlIGlmZiAnLXYnIGlzIGluCiAgICAgICAgc3lzLmFyZ3YuCgogICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50IGBvcHRpb25mbGFnc2AgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBob3cgdGhlCiAgICAgICAgdGVzdCBydW5uZXIgY29tcGFyZXMgZXhwZWN0ZWQgb3V0cHV0IHRvIGFjdHVhbCBvdXRwdXQsIGFuZCBob3cKICAgICAgICBpdCBkaXNwbGF5cyBmYWlsdXJlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgYHRlc3Rtb2RgIGZvcgogICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2tlciA9IGNoZWNrZXIgb3IgT3V0cHV0Q2hlY2tlcigpCiAgICAgICAgaWYgdmVyYm9zZSBpcyBOb25lOgogICAgICAgICAgICB2ZXJib3NlID0gJy12JyBpbiBzeXMuYXJndgogICAgICAgIHNlbGYuX3ZlcmJvc2UgPSB2ZXJib3NlCiAgICAgICAgc2VsZi5vcHRpb25mbGFncyA9IG9wdGlvbmZsYWdzCiAgICAgICAgc2VsZi5vcmlnaW5hbF9vcHRpb25mbGFncyA9IG9wdGlvbmZsYWdzCgogICAgICAgICMgS2VlcCB0cmFjayBvZiB0aGUgZXhhbXBsZXMgd2UndmUgcnVuLgogICAgICAgIHNlbGYudHJpZXMgPSAwCiAgICAgICAgc2VsZi5mYWlsdXJlcyA9IDAKICAgICAgICBzZWxmLl9uYW1lMmZ0ID0ge30KCiAgICAgICAgIyBDcmVhdGUgYSBmYWtlIG91dHB1dCB0YXJnZXQgZm9yIGNhcHR1cmluZyBkb2N0ZXN0IG91dHB1dC4KICAgICAgICBzZWxmLl9mYWtlb3V0ID0gX1Nwb29mT3V0KCkKCiAgICAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICMgUmVwb3J0aW5nIG1ldGhvZHMKICAgICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIGRlZiByZXBvcnRfc3RhcnQoc2VsZiwgb3V0LCB0ZXN0LCBleGFtcGxlKToKICAgICAgICAiIiIKICAgICAgICBSZXBvcnQgdGhhdCB0aGUgdGVzdCBydW5uZXIgaXMgYWJvdXQgdG8gcHJvY2VzcyB0aGUgZ2l2ZW4KICAgICAgICBleGFtcGxlLiAgKE9ubHkgZGlzcGxheXMgYSBtZXNzYWdlIGlmIHZlcmJvc2U9VHJ1ZSkKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl92ZXJib3NlOgogICAgICAgICAgICBpZiBleGFtcGxlLndhbnQ6CiAgICAgICAgICAgICAgICBvdXQoJ1RyeWluZzpcbicgKyBfaW5kZW50KGV4YW1wbGUuc291cmNlKSArCiAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGluZzpcbicgKyBfaW5kZW50KGV4YW1wbGUud2FudCkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBvdXQoJ1RyeWluZzpcbicgKyBfaW5kZW50KGV4YW1wbGUuc291cmNlKSArCiAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGluZyBub3RoaW5nXG4nKQoKICAgIGRlZiByZXBvcnRfc3VjY2VzcyhzZWxmLCBvdXQsIHRlc3QsIGV4YW1wbGUsIGdvdCk6CiAgICAgICAgIiIiCiAgICAgICAgUmVwb3J0IHRoYXQgdGhlIGdpdmVuIGV4YW1wbGUgcmFuIHN1Y2Nlc3NmdWxseS4gIChPbmx5CiAgICAgICAgZGlzcGxheXMgYSBtZXNzYWdlIGlmIHZlcmJvc2U9VHJ1ZSkKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl92ZXJib3NlOgogICAgICAgICAgICBvdXQoIm9rXG4iKQoKICAgIGRlZiByZXBvcnRfZmFpbHVyZShzZWxmLCBvdXQsIHRlc3QsIGV4YW1wbGUsIGdvdCk6CiAgICAgICAgIiIiCiAgICAgICAgUmVwb3J0IHRoYXQgdGhlIGdpdmVuIGV4YW1wbGUgZmFpbGVkLgogICAgICAgICIiIgogICAgICAgIG91dChzZWxmLl9mYWlsdXJlX2hlYWRlcih0ZXN0LCBleGFtcGxlKSArCiAgICAgICAgICAgIHNlbGYuX2NoZWNrZXIub3V0cHV0X2RpZmZlcmVuY2UoZXhhbXBsZSwgZ290LCBzZWxmLm9wdGlvbmZsYWdzKSkKCiAgICBkZWYgcmVwb3J0X3VuZXhwZWN0ZWRfZXhjZXB0aW9uKHNlbGYsIG91dCwgdGVzdCwgZXhhbXBsZSwgZXhjX2luZm8pOgogICAgICAgICIiIgogICAgICAgIFJlcG9ydCB0aGF0IHRoZSBnaXZlbiBleGFtcGxlIHJhaXNlZCBhbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbi4KICAgICAgICAiIiIKICAgICAgICBvdXQoc2VsZi5fZmFpbHVyZV9oZWFkZXIodGVzdCwgZXhhbXBsZSkgKwogICAgICAgICAgICAnRXhjZXB0aW9uIHJhaXNlZDpcbicgKyBfaW5kZW50KF9leGNlcHRpb25fdHJhY2ViYWNrKGV4Y19pbmZvKSkpCgogICAgZGVmIF9mYWlsdXJlX2hlYWRlcihzZWxmLCB0ZXN0LCBleGFtcGxlKToKICAgICAgICBvdXQgPSBbc2VsZi5ESVZJREVSXQogICAgICAgIGlmIHRlc3QuZmlsZW5hbWU6CiAgICAgICAgICAgIGlmIHRlc3QubGluZW5vIGlzIG5vdCBOb25lIGFuZCBleGFtcGxlLmxpbmVubyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGxpbmVubyA9IHRlc3QubGluZW5vICsgZXhhbXBsZS5saW5lbm8gKyAxCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBsaW5lbm8gPSAnPycKICAgICAgICAgICAgb3V0LmFwcGVuZCgnRmlsZSAiJXMiLCBsaW5lICVzLCBpbiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICh0ZXN0LmZpbGVuYW1lLCBsaW5lbm8sIHRlc3QubmFtZSkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb3V0LmFwcGVuZCgnTGluZSAlcywgaW4gJXMnICUgKGV4YW1wbGUubGluZW5vKzEsIHRlc3QubmFtZSkpCiAgICAgICAgb3V0LmFwcGVuZCgnRmFpbGVkIGV4YW1wbGU6JykKICAgICAgICBzb3VyY2UgPSBleGFtcGxlLnNvdXJjZQogICAgICAgIG91dC5hcHBlbmQoX2luZGVudChzb3VyY2UpKQogICAgICAgIHJldHVybiAnXG4nLmpvaW4ob3V0KQoKICAgICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIyBEb2NUZXN0IFJ1bm5pbmcKICAgICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIGRlZiBfX3J1bihzZWxmLCB0ZXN0LCBjb21waWxlZmxhZ3MsIG91dCk6CiAgICAgICAgIiIiCiAgICAgICAgUnVuIHRoZSBleGFtcGxlcyBpbiBgdGVzdGAuICBXcml0ZSB0aGUgb3V0Y29tZSBvZiBlYWNoIGV4YW1wbGUKICAgICAgICB3aXRoIG9uZSBvZiB0aGUgYERvY1Rlc3RSdW5uZXIucmVwb3J0XypgIG1ldGhvZHMsIHVzaW5nIHRoZQogICAgICAgIHdyaXRlciBmdW5jdGlvbiBgb3V0YC4gIGBjb21waWxlZmxhZ3NgIGlzIHRoZSBzZXQgb2YgY29tcGlsZXIKICAgICAgICBmbGFncyB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGV4ZWN1dGUgZXhhbXBsZXMuICBSZXR1cm4gYSB0dXBsZQogICAgICAgIGAoZiwgdClgLCB3aGVyZSBgdGAgaXMgdGhlIG51bWJlciBvZiBleGFtcGxlcyB0cmllZCwgYW5kIGBmYAogICAgICAgIGlzIHRoZSBudW1iZXIgb2YgZXhhbXBsZXMgdGhhdCBmYWlsZWQuICBUaGUgZXhhbXBsZXMgYXJlIHJ1bgogICAgICAgIGluIHRoZSBuYW1lc3BhY2UgYHRlc3QuZ2xvYnNgLgogICAgICAgICIiIgogICAgICAgICMgS2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGZhaWx1cmVzIGFuZCB0cmllcy4KICAgICAgICBmYWlsdXJlcyA9IHRyaWVzID0gMAoKICAgICAgICAjIFNhdmUgdGhlIG9wdGlvbiBmbGFncyAoc2luY2Ugb3B0aW9uIGRpcmVjdGl2ZXMgY2FuIGJlIHVzZWQKICAgICAgICAjIHRvIG1vZGlmeSB0aGVtKS4KICAgICAgICBvcmlnaW5hbF9vcHRpb25mbGFncyA9IHNlbGYub3B0aW9uZmxhZ3MKCiAgICAgICAgU1VDQ0VTUywgRkFJTFVSRSwgQk9PTSA9IHJhbmdlKDMpICMgYG91dGNvbWVgIHN0YXRlCgogICAgICAgIGNoZWNrID0gc2VsZi5fY2hlY2tlci5jaGVja19vdXRwdXQKCiAgICAgICAgIyBQcm9jZXNzIGVhY2ggZXhhbXBsZS4KICAgICAgICBmb3IgZXhhbXBsZW51bSwgZXhhbXBsZSBpbiBlbnVtZXJhdGUodGVzdC5leGFtcGxlcyk6CgogICAgICAgICAgICAjIElmIFJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUgaXMgc2V0LCB0aGVuIHN1cHByZXNzCiAgICAgICAgICAgICMgcmVwb3J0aW5nIGFmdGVyIHRoZSBmaXJzdCBmYWlsdXJlLgogICAgICAgICAgICBxdWlldCA9IChzZWxmLm9wdGlvbmZsYWdzICYgUkVQT1JUX09OTFlfRklSU1RfRkFJTFVSRSBhbmQKICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXMgPiAwKQoKICAgICAgICAgICAgIyBNZXJnZSBpbiB0aGUgZXhhbXBsZSdzIG9wdGlvbnMuCiAgICAgICAgICAgIHNlbGYub3B0aW9uZmxhZ3MgPSBvcmlnaW5hbF9vcHRpb25mbGFncwogICAgICAgICAgICBpZiBleGFtcGxlLm9wdGlvbnM6CiAgICAgICAgICAgICAgICBmb3IgKG9wdGlvbmZsYWcsIHZhbCkgaW4gZXhhbXBsZS5vcHRpb25zLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgaWYgdmFsOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9wdGlvbmZsYWdzIHw9IG9wdGlvbmZsYWcKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9wdGlvbmZsYWdzICY9IH5vcHRpb25mbGFnCgogICAgICAgICAgICAjIElmICdTS0lQJyBpcyBzZXQsIHRoZW4gc2tpcCB0aGlzIGV4YW1wbGUuCiAgICAgICAgICAgIGlmIHNlbGYub3B0aW9uZmxhZ3MgJiBTS0lQOgogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgd2Ugc3RhcnRlZCB0aGlzIGV4YW1wbGUuCiAgICAgICAgICAgIHRyaWVzICs9IDEKICAgICAgICAgICAgaWYgbm90IHF1aWV0OgogICAgICAgICAgICAgICAgc2VsZi5yZXBvcnRfc3RhcnQob3V0LCB0ZXN0LCBleGFtcGxlKQoKICAgICAgICAgICAgIyBVc2UgYSBzcGVjaWFsIGZpbGVuYW1lIGZvciBjb21waWxlKCksIHNvIHdlIGNhbiByZXRyaWV2ZQogICAgICAgICAgICAjIHRoZSBzb3VyY2UgY29kZSBkdXJpbmcgaW50ZXJhY3RpdmUgZGVidWdnaW5nIChzZWUKICAgICAgICAgICAgIyBfX3BhdGNoZWRfbGluZWNhY2hlX2dldGxpbmVzKS4KICAgICAgICAgICAgZmlsZW5hbWUgPSAnPGRvY3Rlc3QgJXNbJWRdPicgJSAodGVzdC5uYW1lLCBleGFtcGxlbnVtKQoKICAgICAgICAgICAgIyBSdW4gdGhlIGV4YW1wbGUgaW4gdGhlIGdpdmVuIGNvbnRleHQgKGdsb2JzKSwgYW5kIHJlY29yZAogICAgICAgICAgICAjIGFueSBleGNlcHRpb24gdGhhdCBnZXRzIHJhaXNlZC4gIChCdXQgZG9uJ3QgaW50ZXJjZXB0CiAgICAgICAgICAgICMga2V5Ym9hcmQgaW50ZXJydXB0cy4pCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICMgRG9uJ3QgYmxpbmshICBUaGlzIGlzIHdoZXJlIHRoZSB1c2VyJ3MgY29kZSBnZXRzIHJ1bi4KICAgICAgICAgICAgICAgIGV4ZWMoY29tcGlsZShleGFtcGxlLnNvdXJjZSwgZmlsZW5hbWUsICJzaW5nbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVmbGFncywgVHJ1ZSksIHRlc3QuZ2xvYnMpCiAgICAgICAgICAgICAgICBzZWxmLmRlYnVnZ2VyLnNldF9jb250aW51ZSgpICMgPT09PSBFeGFtcGxlIEZpbmlzaGVkID09PT0KICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IE5vbmUKICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgICAgIHNlbGYuZGVidWdnZXIuc2V0X2NvbnRpbnVlKCkgIyA9PT09IEV4YW1wbGUgRmluaXNoZWQgPT09PQoKICAgICAgICAgICAgZ290ID0gc2VsZi5fZmFrZW91dC5nZXR2YWx1ZSgpICAjIHRoZSBhY3R1YWwgb3V0cHV0CiAgICAgICAgICAgIHNlbGYuX2Zha2VvdXQudHJ1bmNhdGUoMCkKICAgICAgICAgICAgb3V0Y29tZSA9IEZBSUxVUkUgICAjIGd1aWx0eSB1bnRpbCBwcm92ZWQgaW5ub2NlbnQgb3IgaW5zYW5lCgogICAgICAgICAgICAjIElmIHRoZSBleGFtcGxlIGV4ZWN1dGVkIHdpdGhvdXQgcmFpc2luZyBhbnkgZXhjZXB0aW9ucywKICAgICAgICAgICAgIyB2ZXJpZnkgaXRzIG91dHB1dC4KICAgICAgICAgICAgaWYgZXhjZXB0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBpZiBjaGVjayhleGFtcGxlLndhbnQsIGdvdCwgc2VsZi5vcHRpb25mbGFncyk6CiAgICAgICAgICAgICAgICAgICAgb3V0Y29tZSA9IFNVQ0NFU1MKCiAgICAgICAgICAgICMgVGhlIGV4YW1wbGUgcmFpc2VkIGFuIGV4Y2VwdGlvbjogIGNoZWNrIGlmIGl0IHdhcyBleHBlY3RlZC4KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGV4Y19tc2cgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCpleGNlcHRpb25bOjJdKVstMV0KICAgICAgICAgICAgICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgICAgICAgICAgICBnb3QgKz0gX2V4Y2VwdGlvbl90cmFjZWJhY2soZXhjZXB0aW9uKQoKICAgICAgICAgICAgICAgICMgSWYgYGV4YW1wbGUuZXhjX21zZ2AgaXMgTm9uZSwgdGhlbiB3ZSB3ZXJlbid0IGV4cGVjdGluZwogICAgICAgICAgICAgICAgIyBhbiBleGNlcHRpb24uCiAgICAgICAgICAgICAgICBpZiBleGFtcGxlLmV4Y19tc2cgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBvdXRjb21lID0gQk9PTQoKICAgICAgICAgICAgICAgICMgV2UgZXhwZWN0ZWQgYW4gZXhjZXB0aW9uOiAgc2VlIHdoZXRoZXIgaXQgbWF0Y2hlcy4KICAgICAgICAgICAgICAgIGVsaWYgY2hlY2soZXhhbXBsZS5leGNfbXNnLCBleGNfbXNnLCBzZWxmLm9wdGlvbmZsYWdzKToKICAgICAgICAgICAgICAgICAgICBvdXRjb21lID0gU1VDQ0VTUwoKICAgICAgICAgICAgICAgICMgQW5vdGhlciBjaGFuY2UgaWYgdGhleSBkaWRuJ3QgY2FyZSBhYm91dCB0aGUgZGV0YWlsLgogICAgICAgICAgICAgICAgZWxpZiBzZWxmLm9wdGlvbmZsYWdzICYgSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUw6CiAgICAgICAgICAgICAgICAgICAgaWYgY2hlY2soX3N0cmlwX2V4Y2VwdGlvbl9kZXRhaWxzKGV4YW1wbGUuZXhjX21zZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3N0cmlwX2V4Y2VwdGlvbl9kZXRhaWxzKGV4Y19tc2cpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3B0aW9uZmxhZ3MpOgogICAgICAgICAgICAgICAgICAgICAgICBvdXRjb21lID0gU1VDQ0VTUwoKICAgICAgICAgICAgIyBSZXBvcnQgdGhlIG91dGNvbWUuCiAgICAgICAgICAgIGlmIG91dGNvbWUgaXMgU1VDQ0VTUzoKICAgICAgICAgICAgICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcG9ydF9zdWNjZXNzKG91dCwgdGVzdCwgZXhhbXBsZSwgZ290KQogICAgICAgICAgICBlbGlmIG91dGNvbWUgaXMgRkFJTFVSRToKICAgICAgICAgICAgICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcG9ydF9mYWlsdXJlKG91dCwgdGVzdCwgZXhhbXBsZSwgZ290KQogICAgICAgICAgICAgICAgZmFpbHVyZXMgKz0gMQogICAgICAgICAgICBlbGlmIG91dGNvbWUgaXMgQk9PTToKICAgICAgICAgICAgICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcG9ydF91bmV4cGVjdGVkX2V4Y2VwdGlvbihvdXQsIHRlc3QsIGV4YW1wbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgZmFpbHVyZXMgKz0gMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAoInVua25vd24gb3V0Y29tZSIsIG91dGNvbWUpCgogICAgICAgICAgICBpZiBmYWlsdXJlcyBhbmQgc2VsZi5vcHRpb25mbGFncyAmIEZBSUxfRkFTVDoKICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgICMgUmVzdG9yZSB0aGUgb3B0aW9uIGZsYWdzIChpbiBjYXNlIHRoZXkgd2VyZSBtb2RpZmllZCkKICAgICAgICBzZWxmLm9wdGlvbmZsYWdzID0gb3JpZ2luYWxfb3B0aW9uZmxhZ3MKCiAgICAgICAgIyBSZWNvcmQgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGZhaWx1cmVzIGFuZCB0cmllcy4KICAgICAgICBzZWxmLl9fcmVjb3JkX291dGNvbWUodGVzdCwgZmFpbHVyZXMsIHRyaWVzKQogICAgICAgIHJldHVybiBUZXN0UmVzdWx0cyhmYWlsdXJlcywgdHJpZXMpCgogICAgZGVmIF9fcmVjb3JkX291dGNvbWUoc2VsZiwgdGVzdCwgZiwgdCk6CiAgICAgICAgIiIiCiAgICAgICAgUmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIGdpdmVuIERvY1Rlc3QgKGB0ZXN0YCkgZ2VuZXJhdGVkIGBmYAogICAgICAgIGZhaWx1cmVzIG91dCBvZiBgdGAgdHJpZWQgZXhhbXBsZXMuCiAgICAgICAgIiIiCiAgICAgICAgZjIsIHQyID0gc2VsZi5fbmFtZTJmdC5nZXQodGVzdC5uYW1lLCAoMCwwKSkKICAgICAgICBzZWxmLl9uYW1lMmZ0W3Rlc3QubmFtZV0gPSAoZitmMiwgdCt0MikKICAgICAgICBzZWxmLmZhaWx1cmVzICs9IGYKICAgICAgICBzZWxmLnRyaWVzICs9IHQKCiAgICBfX0xJTkVDQUNIRV9GSUxFTkFNRV9SRSA9IHJlLmNvbXBpbGUocic8ZG9jdGVzdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicoP1A8bmFtZT4uKyknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcWyg/UDxleGFtcGxlbnVtPlxkKylcXT4kJykKICAgIGRlZiBfX3BhdGNoZWRfbGluZWNhY2hlX2dldGxpbmVzKHNlbGYsIGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKICAgICAgICBtID0gc2VsZi5fX0xJTkVDQUNIRV9GSUxFTkFNRV9SRS5tYXRjaChmaWxlbmFtZSkKICAgICAgICBpZiBtIGFuZCBtLmdyb3VwKCduYW1lJykgPT0gc2VsZi50ZXN0Lm5hbWU6CiAgICAgICAgICAgIGV4YW1wbGUgPSBzZWxmLnRlc3QuZXhhbXBsZXNbaW50KG0uZ3JvdXAoJ2V4YW1wbGVudW0nKSldCiAgICAgICAgICAgIHJldHVybiBleGFtcGxlLnNvdXJjZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2F2ZV9saW5lY2FjaGVfZ2V0bGluZXMoZmlsZW5hbWUsIG1vZHVsZV9nbG9iYWxzKQoKICAgIGRlZiBydW4oc2VsZiwgdGVzdCwgY29tcGlsZWZsYWdzPU5vbmUsIG91dD1Ob25lLCBjbGVhcl9nbG9icz1UcnVlKToKICAgICAgICAiIiIKICAgICAgICBSdW4gdGhlIGV4YW1wbGVzIGluIGB0ZXN0YCwgYW5kIGRpc3BsYXkgdGhlIHJlc3VsdHMgdXNpbmcgdGhlCiAgICAgICAgd3JpdGVyIGZ1bmN0aW9uIGBvdXRgLgoKICAgICAgICBUaGUgZXhhbXBsZXMgYXJlIHJ1biBpbiB0aGUgbmFtZXNwYWNlIGB0ZXN0Lmdsb2JzYC4gIElmCiAgICAgICAgYGNsZWFyX2dsb2JzYCBpcyB0cnVlICh0aGUgZGVmYXVsdCksIHRoZW4gdGhpcyBuYW1lc3BhY2Ugd2lsbAogICAgICAgIGJlIGNsZWFyZWQgYWZ0ZXIgdGhlIHRlc3QgcnVucywgdG8gaGVscCB3aXRoIGdhcmJhZ2UKICAgICAgICBjb2xsZWN0aW9uLiAgSWYgeW91IHdvdWxkIGxpa2UgdG8gZXhhbWluZSB0aGUgbmFtZXNwYWNlIGFmdGVyCiAgICAgICAgdGhlIHRlc3QgY29tcGxldGVzLCB0aGVuIHVzZSBgY2xlYXJfZ2xvYnM9RmFsc2VgLgoKICAgICAgICBgY29tcGlsZWZsYWdzYCBnaXZlcyB0aGUgc2V0IG9mIGZsYWdzIHRoYXQgc2hvdWxkIGJlIHVzZWQgYnkKICAgICAgICB0aGUgUHl0aG9uIGNvbXBpbGVyIHdoZW4gcnVubmluZyB0aGUgZXhhbXBsZXMuICBJZiBub3QKICAgICAgICBzcGVjaWZpZWQsIHRoZW4gaXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBzZXQgb2YgZnV0dXJlLWltcG9ydAogICAgICAgIGZsYWdzIHRoYXQgYXBwbHkgdG8gYGdsb2JzYC4KCiAgICAgICAgVGhlIG91dHB1dCBvZiBlYWNoIGV4YW1wbGUgaXMgY2hlY2tlZCB1c2luZwogICAgICAgIGBEb2NUZXN0UnVubmVyLmNoZWNrX291dHB1dGAsIGFuZCB0aGUgcmVzdWx0cyBhcmUgZm9ybWF0dGVkIGJ5CiAgICAgICAgdGhlIGBEb2NUZXN0UnVubmVyLnJlcG9ydF8qYCBtZXRob2RzLgogICAgICAgICIiIgogICAgICAgIHNlbGYudGVzdCA9IHRlc3QKCiAgICAgICAgaWYgY29tcGlsZWZsYWdzIGlzIE5vbmU6CiAgICAgICAgICAgIGNvbXBpbGVmbGFncyA9IF9leHRyYWN0X2Z1dHVyZV9mbGFncyh0ZXN0Lmdsb2JzKQoKICAgICAgICBzYXZlX3N0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICBpZiBvdXQgaXMgTm9uZToKICAgICAgICAgICAgZW5jb2RpbmcgPSBzYXZlX3N0ZG91dC5lbmNvZGluZwogICAgICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lIG9yIGVuY29kaW5nLmxvd2VyKCkgPT0gJ3V0Zi04JzoKICAgICAgICAgICAgICAgIG91dCA9IHNhdmVfc3Rkb3V0LndyaXRlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIFVzZSBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsaW5nIG9uIHdyaXRlCiAgICAgICAgICAgICAgICBkZWYgb3V0KHMpOgogICAgICAgICAgICAgICAgICAgIHMgPSBzdHIocy5lbmNvZGUoZW5jb2RpbmcsICdiYWNrc2xhc2hyZXBsYWNlJyksIGVuY29kaW5nKQogICAgICAgICAgICAgICAgICAgIHNhdmVfc3Rkb3V0LndyaXRlKHMpCiAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX2Zha2VvdXQKCiAgICAgICAgIyBQYXRjaCBwZGIuc2V0X3RyYWNlIHRvIHJlc3RvcmUgc3lzLnN0ZG91dCBkdXJpbmcgaW50ZXJhY3RpdmUKICAgICAgICAjIGRlYnVnZ2luZyAoc28gaXQncyBub3Qgc3RpbGwgcmVkaXJlY3RlZCB0byBzZWxmLl9mYWtlb3V0KS4KICAgICAgICAjIE5vdGUgdGhhdCB0aGUgaW50ZXJhY3RpdmUgb3V0cHV0IHdpbGwgZ28gdG8gKm91cioKICAgICAgICAjIHNhdmVfc3Rkb3V0LCBldmVuIGlmIHRoYXQncyBub3QgdGhlIHJlYWwgc3lzLnN0ZG91dDsgdGhpcwogICAgICAgICMgYWxsb3dzIHVzIHRvIHdyaXRlIHRlc3QgY2FzZXMgZm9yIHRoZSBzZXRfdHJhY2UgYmVoYXZpb3IuCiAgICAgICAgc2F2ZV90cmFjZSA9IHN5cy5nZXR0cmFjZSgpCiAgICAgICAgc2F2ZV9zZXRfdHJhY2UgPSBwZGIuc2V0X3RyYWNlCiAgICAgICAgc2VsZi5kZWJ1Z2dlciA9IF9PdXRwdXRSZWRpcmVjdGluZ1BkYihzYXZlX3N0ZG91dCkKICAgICAgICBzZWxmLmRlYnVnZ2VyLnJlc2V0KCkKICAgICAgICBwZGIuc2V0X3RyYWNlID0gc2VsZi5kZWJ1Z2dlci5zZXRfdHJhY2UKCiAgICAgICAgIyBQYXRjaCBsaW5lY2FjaGUuZ2V0bGluZXMsIHNvIHdlIGNhbiBzZWUgdGhlIGV4YW1wbGUncyBzb3VyY2UKICAgICAgICAjIHdoZW4gd2UncmUgaW5zaWRlIHRoZSBkZWJ1Z2dlci4KICAgICAgICBzZWxmLnNhdmVfbGluZWNhY2hlX2dldGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzCiAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzID0gc2VsZi5fX3BhdGNoZWRfbGluZWNhY2hlX2dldGxpbmVzCgogICAgICAgICMgTWFrZSBzdXJlIHN5cy5kaXNwbGF5aG9vayBqdXN0IHByaW50cyB0aGUgdmFsdWUgdG8gc3Rkb3V0CiAgICAgICAgc2F2ZV9kaXNwbGF5aG9vayA9IHN5cy5kaXNwbGF5aG9vawogICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHN5cy5fX2Rpc3BsYXlob29rX18KCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fX3J1bih0ZXN0LCBjb21waWxlZmxhZ3MsIG91dCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZV9zdGRvdXQKICAgICAgICAgICAgcGRiLnNldF90cmFjZSA9IHNhdmVfc2V0X3RyYWNlCiAgICAgICAgICAgIHN5cy5zZXR0cmFjZShzYXZlX3RyYWNlKQogICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMgPSBzZWxmLnNhdmVfbGluZWNhY2hlX2dldGxpbmVzCiAgICAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHNhdmVfZGlzcGxheWhvb2sKICAgICAgICAgICAgaWYgY2xlYXJfZ2xvYnM6CiAgICAgICAgICAgICAgICB0ZXN0Lmdsb2JzLmNsZWFyKCkKICAgICAgICAgICAgICAgIGltcG9ydCBidWlsdGlucwogICAgICAgICAgICAgICAgYnVpbHRpbnMuXyA9IE5vbmUKCiAgICAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICMgU3VtbWFyaXphdGlvbgogICAgIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICBkZWYgc3VtbWFyaXplKHNlbGYsIHZlcmJvc2U9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgUHJpbnQgYSBzdW1tYXJ5IG9mIGFsbCB0aGUgdGVzdCBjYXNlcyB0aGF0IGhhdmUgYmVlbiBydW4gYnkKICAgICAgICB0aGlzIERvY1Rlc3RSdW5uZXIsIGFuZCByZXR1cm4gYSB0dXBsZSBgKGYsIHQpYCwgd2hlcmUgYGZgIGlzCiAgICAgICAgdGhlIHRvdGFsIG51bWJlciBvZiBmYWlsZWQgZXhhbXBsZXMsIGFuZCBgdGAgaXMgdGhlIHRvdGFsCiAgICAgICAgbnVtYmVyIG9mIHRyaWVkIGV4YW1wbGVzLgoKICAgICAgICBUaGUgb3B0aW9uYWwgYHZlcmJvc2VgIGFyZ3VtZW50IGNvbnRyb2xzIGhvdyBkZXRhaWxlZCB0aGUKICAgICAgICBzdW1tYXJ5IGlzLiAgSWYgdGhlIHZlcmJvc2l0eSBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHRoZQogICAgICAgIERvY1Rlc3RSdW5uZXIncyB2ZXJib3NpdHkgaXMgdXNlZC4KICAgICAgICAiIiIKICAgICAgICBpZiB2ZXJib3NlIGlzIE5vbmU6CiAgICAgICAgICAgIHZlcmJvc2UgPSBzZWxmLl92ZXJib3NlCiAgICAgICAgbm90ZXN0cyA9IFtdCiAgICAgICAgcGFzc2VkID0gW10KICAgICAgICBmYWlsZWQgPSBbXQogICAgICAgIHRvdGFsdCA9IHRvdGFsZiA9IDAKICAgICAgICBmb3IgeCBpbiBzZWxmLl9uYW1lMmZ0Lml0ZW1zKCk6CiAgICAgICAgICAgIG5hbWUsIChmLCB0KSA9IHgKICAgICAgICAgICAgYXNzZXJ0IGYgPD0gdAogICAgICAgICAgICB0b3RhbHQgKz0gdAogICAgICAgICAgICB0b3RhbGYgKz0gZgogICAgICAgICAgICBpZiB0ID09IDA6CiAgICAgICAgICAgICAgICBub3Rlc3RzLmFwcGVuZChuYW1lKQogICAgICAgICAgICBlbGlmIGYgPT0gMDoKICAgICAgICAgICAgICAgIHBhc3NlZC5hcHBlbmQoIChuYW1lLCB0KSApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmYWlsZWQuYXBwZW5kKHgpCiAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgaWYgbm90ZXN0czoKICAgICAgICAgICAgICAgIHByaW50KGxlbihub3Rlc3RzKSwgIml0ZW1zIGhhZCBubyB0ZXN0czoiKQogICAgICAgICAgICAgICAgbm90ZXN0cy5zb3J0KCkKICAgICAgICAgICAgICAgIGZvciB0aGluZyBpbiBub3Rlc3RzOgogICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAiLCB0aGluZykKICAgICAgICAgICAgaWYgcGFzc2VkOgogICAgICAgICAgICAgICAgcHJpbnQobGVuKHBhc3NlZCksICJpdGVtcyBwYXNzZWQgYWxsIHRlc3RzOiIpCiAgICAgICAgICAgICAgICBwYXNzZWQuc29ydCgpCiAgICAgICAgICAgICAgICBmb3IgdGhpbmcsIGNvdW50IGluIHBhc3NlZDoKICAgICAgICAgICAgICAgICAgICBwcmludCgiICUzZCB0ZXN0cyBpbiAlcyIgJSAoY291bnQsIHRoaW5nKSkKICAgICAgICBpZiBmYWlsZWQ6CiAgICAgICAgICAgIHByaW50KHNlbGYuRElWSURFUikKICAgICAgICAgICAgcHJpbnQobGVuKGZhaWxlZCksICJpdGVtcyBoYWQgZmFpbHVyZXM6IikKICAgICAgICAgICAgZmFpbGVkLnNvcnQoKQogICAgICAgICAgICBmb3IgdGhpbmcsIChmLCB0KSBpbiBmYWlsZWQ6CiAgICAgICAgICAgICAgICBwcmludCgiICUzZCBvZiAlM2QgaW4gJXMiICUgKGYsIHQsIHRoaW5nKSkKICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICBwcmludCh0b3RhbHQsICJ0ZXN0cyBpbiIsIGxlbihzZWxmLl9uYW1lMmZ0KSwgIml0ZW1zLiIpCiAgICAgICAgICAgIHByaW50KHRvdGFsdCAtIHRvdGFsZiwgInBhc3NlZCBhbmQiLCB0b3RhbGYsICJmYWlsZWQuIikKICAgICAgICBpZiB0b3RhbGY6CiAgICAgICAgICAgIHByaW50KCIqKipUZXN0IEZhaWxlZCoqKiIsIHRvdGFsZiwgImZhaWx1cmVzLiIpCiAgICAgICAgZWxpZiB2ZXJib3NlOgogICAgICAgICAgICBwcmludCgiVGVzdCBwYXNzZWQuIikKICAgICAgICByZXR1cm4gVGVzdFJlc3VsdHModG90YWxmLCB0b3RhbHQpCgogICAgIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAjIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgY3J1ZnQgdG8gbWFpbnRhaW4gZG9jdGVzdC5tYXN0ZXIuCiAgICAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIGRlZiBtZXJnZShzZWxmLCBvdGhlcik6CiAgICAgICAgZCA9IHNlbGYuX25hbWUyZnQKICAgICAgICBmb3IgbmFtZSwgKGYsIHQpIGluIG90aGVyLl9uYW1lMmZ0Lml0ZW1zKCk6CiAgICAgICAgICAgIGlmIG5hbWUgaW4gZDoKICAgICAgICAgICAgICAgICMgRG9uJ3QgcHJpbnQgaGVyZSBieSBkZWZhdWx0LCBzaW5jZSBkb2luZwogICAgICAgICAgICAgICAgIyAgICAgc28gYnJlYWtzIHNvbWUgb2YgdGhlIGJ1aWxkYm90cwogICAgICAgICAgICAgICAgI3ByaW50KCIqKiogRG9jVGVzdFJ1bm5lci5tZXJnZTogJyIgKyBuYW1lICsgIicgaW4gYm90aCIgXAogICAgICAgICAgICAgICAgIyAgICAiIHRlc3RlcnM7IHN1bW1pbmcgb3V0Y29tZXMuIikKICAgICAgICAgICAgICAgIGYyLCB0MiA9IGRbbmFtZV0KICAgICAgICAgICAgICAgIGYgPSBmICsgZjIKICAgICAgICAgICAgICAgIHQgPSB0ICsgdDIKICAgICAgICAgICAgZFtuYW1lXSA9IGYsIHQKCmNsYXNzIE91dHB1dENoZWNrZXI6CiAgICAiIiIKICAgIEEgY2xhc3MgdXNlZCB0byBjaGVjayB0aGUgd2hldGhlciB0aGUgYWN0dWFsIG91dHB1dCBmcm9tIGEgZG9jdGVzdAogICAgZXhhbXBsZSBtYXRjaGVzIHRoZSBleHBlY3RlZCBvdXRwdXQuICBgT3V0cHV0Q2hlY2tlcmAgZGVmaW5lcyB0d28KICAgIG1ldGhvZHM6IGBjaGVja19vdXRwdXRgLCB3aGljaCBjb21wYXJlcyBhIGdpdmVuIHBhaXIgb2Ygb3V0cHV0cywKICAgIGFuZCByZXR1cm5zIHRydWUgaWYgdGhleSBtYXRjaDsgYW5kIGBvdXRwdXRfZGlmZmVyZW5jZWAsIHdoaWNoCiAgICByZXR1cm5zIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIG91dHB1dHMuCiAgICAiIiIKICAgIGRlZiBfdG9Bc2NpaShzZWxmLCBzKToKICAgICAgICAiIiIKICAgICAgICBDb252ZXJ0IHN0cmluZyB0byBoZXgtZXNjYXBlZCBBU0NJSSBzdHJpbmcuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHN0cihzLmVuY29kZSgnQVNDSUknLCAnYmFja3NsYXNocmVwbGFjZScpLCAiQVNDSUkiKQoKICAgIGRlZiBjaGVja19vdXRwdXQoc2VsZiwgd2FudCwgZ290LCBvcHRpb25mbGFncyk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIFRydWUgaWZmIHRoZSBhY3R1YWwgb3V0cHV0IGZyb20gYW4gZXhhbXBsZSAoYGdvdGApCiAgICAgICAgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgb3V0cHV0IChgd2FudGApLiAgVGhlc2Ugc3RyaW5ncyBhcmUKICAgICAgICBhbHdheXMgY29uc2lkZXJlZCB0byBtYXRjaCBpZiB0aGV5IGFyZSBpZGVudGljYWw7IGJ1dAogICAgICAgIGRlcGVuZGluZyBvbiB3aGF0IG9wdGlvbiBmbGFncyB0aGUgdGVzdCBydW5uZXIgaXMgdXNpbmcsCiAgICAgICAgc2V2ZXJhbCBub24tZXhhY3QgbWF0Y2ggdHlwZXMgYXJlIGFsc28gcG9zc2libGUuICBTZWUgdGhlCiAgICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgYFRlc3RSdW5uZXJgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0CiAgICAgICAgb3B0aW9uIGZsYWdzLgogICAgICAgICIiIgoKICAgICAgICAjIElmIGB3YW50YCBjb250YWlucyBoZXgtZXNjYXBlZCBjaGFyYWN0ZXIgc3VjaCBhcyAiXHUxMjM0IiwKICAgICAgICAjIHRoZW4gYHdhbnRgIGlzIGEgc3RyaW5nIG9mIHNpeCBjaGFyYWN0ZXJzKGUuZy4gW1wsdSwxLDIsMyw0XSkuCiAgICAgICAgIyBPbiB0aGUgb3RoZXIgaGFuZCwgYGdvdGAgY291bGQgYmUgYW5vdGhlciBzZXF1ZW5jZSBvZgogICAgICAgICMgY2hhcmFjdGVycyBzdWNoIGFzIFtcdTEyMzRdLCBzbyBgd2FudGAgYW5kIGBnb3RgIHNob3VsZAogICAgICAgICMgYmUgZm9sZGVkIHRvIGhleC1lc2NhcGVkIEFTQ0lJIHN0cmluZyB0byBjb21wYXJlLgogICAgICAgIGdvdCA9IHNlbGYuX3RvQXNjaWkoZ290KQogICAgICAgIHdhbnQgPSBzZWxmLl90b0FzY2lpKHdhbnQpCgogICAgICAgICMgSGFuZGxlIHRoZSBjb21tb24gY2FzZSBmaXJzdCwgZm9yIGVmZmljaWVuY3k6CiAgICAgICAgIyBpZiB0aGV5J3JlIHN0cmluZy1pZGVudGljYWwsIGFsd2F5cyByZXR1cm4gdHJ1ZS4KICAgICAgICBpZiBnb3QgPT0gd2FudDoKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgIyBUaGUgdmFsdWVzIFRydWUgYW5kIEZhbHNlIHJlcGxhY2VkIDEgYW5kIDAgYXMgdGhlIHJldHVybgogICAgICAgICMgdmFsdWUgZm9yIGJvb2xlYW4gY29tcGFyaXNvbnMgaW4gUHl0aG9uIDIuMy4KICAgICAgICBpZiBub3QgKG9wdGlvbmZsYWdzICYgRE9OVF9BQ0NFUFRfVFJVRV9GT1JfMSk6CiAgICAgICAgICAgIGlmIChnb3Qsd2FudCkgPT0gKCJUcnVlXG4iLCAiMVxuIik6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICBpZiAoZ290LHdhbnQpID09ICgiRmFsc2VcbiIsICIwXG4iKToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgICAgICMgPEJMQU5LTElORT4gY2FuIGJlIHVzZWQgYXMgYSBzcGVjaWFsIHNlcXVlbmNlIHRvIHNpZ25pZnkgYQogICAgICAgICMgYmxhbmsgbGluZSwgdW5sZXNzIHRoZSBET05UX0FDQ0VQVF9CTEFOS0xJTkUgZmxhZyBpcyB1c2VkLgogICAgICAgIGlmIG5vdCAob3B0aW9uZmxhZ3MgJiBET05UX0FDQ0VQVF9CTEFOS0xJTkUpOgogICAgICAgICAgICAjIFJlcGxhY2UgPEJMQU5LTElORT4gaW4gd2FudCB3aXRoIGEgYmxhbmsgbGluZS4KICAgICAgICAgICAgd2FudCA9IHJlLnN1YihyJyg/bSleJXNccyo/JCcgJSByZS5lc2NhcGUoQkxBTktMSU5FX01BUktFUiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIHdhbnQpCiAgICAgICAgICAgICMgSWYgYSBsaW5lIGluIGdvdCBjb250YWlucyBvbmx5IHNwYWNlcywgdGhlbiByZW1vdmUgdGhlCiAgICAgICAgICAgICMgc3BhY2VzLgogICAgICAgICAgICBnb3QgPSByZS5zdWIocicoP20pXlteXFNcbl0rJCcsICcnLCBnb3QpCiAgICAgICAgICAgIGlmIGdvdCA9PSB3YW50OgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgIyBUaGlzIGZsYWcgY2F1c2VzIGRvY3Rlc3QgdG8gaWdub3JlIGFueSBkaWZmZXJlbmNlcyBpbiB0aGUKICAgICAgICAjIGNvbnRlbnRzIG9mIHdoaXRlc3BhY2Ugc3RyaW5ncy4gIE5vdGUgdGhhdCB0aGlzIGNhbiBiZSB1c2VkCiAgICAgICAgIyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBFTExJUFNJUyBmbGFnLgogICAgICAgIGlmIG9wdGlvbmZsYWdzICYgTk9STUFMSVpFX1dISVRFU1BBQ0U6CiAgICAgICAgICAgIGdvdCA9ICcgJy5qb2luKGdvdC5zcGxpdCgpKQogICAgICAgICAgICB3YW50ID0gJyAnLmpvaW4od2FudC5zcGxpdCgpKQogICAgICAgICAgICBpZiBnb3QgPT0gd2FudDoKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgICAgICMgVGhlIEVMTElQU0lTIGZsYWcgc2F5cyB0byBsZXQgdGhlIHNlcXVlbmNlICIuLi4iIGluIGB3YW50YAogICAgICAgICMgbWF0Y2ggYW55IHN1YnN0cmluZyBpbiBgZ290YC4KICAgICAgICBpZiBvcHRpb25mbGFncyAmIEVMTElQU0lTOgogICAgICAgICAgICBpZiBfZWxsaXBzaXNfbWF0Y2god2FudCwgZ290KToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgICAgICMgV2UgZGlkbid0IGZpbmQgYW55IG1hdGNoOyByZXR1cm4gZmFsc2UuCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgIyBTaG91bGQgd2UgZG8gYSBmYW5jeSBkaWZmPwogICAgZGVmIF9kb19hX2ZhbmN5X2RpZmYoc2VsZiwgd2FudCwgZ290LCBvcHRpb25mbGFncyk6CiAgICAgICAgIyBOb3QgdW5sZXNzIHRoZXkgYXNrZWQgZm9yIGEgZmFuY3kgZGlmZi4KICAgICAgICBpZiBub3Qgb3B0aW9uZmxhZ3MgJiAoUkVQT1JUX1VESUZGIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVQT1JUX0NESUZGIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVQT1JUX05ESUZGKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgICMgSWYgZXhwZWN0ZWQgb3V0cHV0IHVzZXMgZWxsaXBzaXMsIGEgbWVhbmluZ2Z1bCBmYW5jeSBkaWZmIGlzCiAgICAgICAgIyB0b28gaGFyZCAuLi4gb3IgbWF5YmUgbm90LiAgSW4gdHdvIHJlYWwtbGlmZSBmYWlsdXJlcyBUaW0gc2F3LAogICAgICAgICMgYSBkaWZmIHdhcyBhIG1ham9yIGhlbHAgYW55d2F5LCBzbyB0aGlzIGlzIGNvbW1lbnRlZCBvdXQuCiAgICAgICAgIyBbdG9kb10gX2VsbGlwc2lzX21hdGNoKCkga25vd3Mgd2hpY2ggcGllY2VzIGRvIGFuZCBkb24ndCBtYXRjaCwKICAgICAgICAjIGFuZCBjb3VsZCBiZSB0aGUgYmFzaXMgZm9yIGEga2ljay1hc3MgZGlmZiBpbiB0aGlzIGNhc2UuCiAgICAgICAgIyNpZiBvcHRpb25mbGFncyAmIEVMTElQU0lTIGFuZCBFTExJUFNJU19NQVJLRVIgaW4gd2FudDoKICAgICAgICAjIyAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgIyBuZGlmZiBkb2VzIGludHJhbGluZSBkaWZmZXJlbmNlIG1hcmtpbmcsIHNvIGNhbiBiZSB1c2VmdWwgZXZlbgogICAgICAgICMgZm9yIDEtbGluZSBkaWZmZXJlbmNlcy4KICAgICAgICBpZiBvcHRpb25mbGFncyAmIFJFUE9SVF9ORElGRjoKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgIyBUaGUgb3RoZXIgZGlmZiB0eXBlcyBuZWVkIGF0IGxlYXN0IGEgZmV3IGxpbmVzIHRvIGJlIGhlbHBmdWwuCiAgICAgICAgcmV0dXJuIHdhbnQuY291bnQoJ1xuJykgPiAyIGFuZCBnb3QuY291bnQoJ1xuJykgPiAyCgogICAgZGVmIG91dHB1dF9kaWZmZXJlbmNlKHNlbGYsIGV4YW1wbGUsIGdvdCwgb3B0aW9uZmxhZ3MpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZQogICAgICAgIGV4cGVjdGVkIG91dHB1dCBmb3IgYSBnaXZlbiBleGFtcGxlIChgZXhhbXBsZWApIGFuZCB0aGUgYWN0dWFsCiAgICAgICAgb3V0cHV0IChgZ290YCkuICBgb3B0aW9uZmxhZ3NgIGlzIHRoZSBzZXQgb2Ygb3B0aW9uIGZsYWdzIHVzZWQKICAgICAgICB0byBjb21wYXJlIGB3YW50YCBhbmQgYGdvdGAuCiAgICAgICAgIiIiCiAgICAgICAgd2FudCA9IGV4YW1wbGUud2FudAogICAgICAgICMgSWYgPEJMQU5LTElORT5zIGFyZSBiZWluZyB1c2VkLCB0aGVuIHJlcGxhY2UgYmxhbmsgbGluZXMKICAgICAgICAjIHdpdGggPEJMQU5LTElORT4gaW4gdGhlIGFjdHVhbCBvdXRwdXQgc3RyaW5nLgogICAgICAgIGlmIG5vdCAob3B0aW9uZmxhZ3MgJiBET05UX0FDQ0VQVF9CTEFOS0xJTkUpOgogICAgICAgICAgICBnb3QgPSByZS5zdWIoJyg/bSleWyBdKig/PVxuKScsIEJMQU5LTElORV9NQVJLRVIsIGdvdCkKCiAgICAgICAgIyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIGRpZmYuCiAgICAgICAgaWYgc2VsZi5fZG9fYV9mYW5jeV9kaWZmKHdhbnQsIGdvdCwgb3B0aW9uZmxhZ3MpOgogICAgICAgICAgICAjIFNwbGl0IHdhbnQgJiBnb3QgaW50byBsaW5lcy4KICAgICAgICAgICAgd2FudF9saW5lcyA9IHdhbnQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICBnb3RfbGluZXMgPSBnb3Quc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAjIFVzZSBkaWZmbGliIHRvIGZpbmQgdGhlaXIgZGlmZmVyZW5jZXMuCiAgICAgICAgICAgIGlmIG9wdGlvbmZsYWdzICYgUkVQT1JUX1VESUZGOgogICAgICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKHdhbnRfbGluZXMsIGdvdF9saW5lcywgbj0yKQogICAgICAgICAgICAgICAgZGlmZiA9IGxpc3QoZGlmZilbMjpdICMgc3RyaXAgdGhlIGRpZmYgaGVhZGVyCiAgICAgICAgICAgICAgICBraW5kID0gJ3VuaWZpZWQgZGlmZiB3aXRoIC1leHBlY3RlZCArYWN0dWFsJwogICAgICAgICAgICBlbGlmIG9wdGlvbmZsYWdzICYgUkVQT1JUX0NESUZGOgogICAgICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIuY29udGV4dF9kaWZmKHdhbnRfbGluZXMsIGdvdF9saW5lcywgbj0yKQogICAgICAgICAgICAgICAgZGlmZiA9IGxpc3QoZGlmZilbMjpdICMgc3RyaXAgdGhlIGRpZmYgaGVhZGVyCiAgICAgICAgICAgICAgICBraW5kID0gJ2NvbnRleHQgZGlmZiB3aXRoIGV4cGVjdGVkIGZvbGxvd2VkIGJ5IGFjdHVhbCcKICAgICAgICAgICAgZWxpZiBvcHRpb25mbGFncyAmIFJFUE9SVF9ORElGRjoKICAgICAgICAgICAgICAgIGVuZ2luZSA9IGRpZmZsaWIuRGlmZmVyKGNoYXJqdW5rPWRpZmZsaWIuSVNfQ0hBUkFDVEVSX0pVTkspCiAgICAgICAgICAgICAgICBkaWZmID0gbGlzdChlbmdpbmUuY29tcGFyZSh3YW50X2xpbmVzLCBnb3RfbGluZXMpKQogICAgICAgICAgICAgICAga2luZCA9ICduZGlmZiB3aXRoIC1leHBlY3RlZCArYWN0dWFsJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXNzZXJ0IDAsICdCYWQgZGlmZiBvcHRpb24nCiAgICAgICAgICAgIHJldHVybiAnRGlmZmVyZW5jZXMgKCVzKTpcbicgJSBraW5kICsgX2luZGVudCgnJy5qb2luKGRpZmYpKQoKICAgICAgICAjIElmIHdlJ3JlIG5vdCB1c2luZyBkaWZmLCB0aGVuIHNpbXBseSBsaXN0IHRoZSBleHBlY3RlZAogICAgICAgICMgb3V0cHV0IGZvbGxvd2VkIGJ5IHRoZSBhY3R1YWwgb3V0cHV0LgogICAgICAgIGlmIHdhbnQgYW5kIGdvdDoKICAgICAgICAgICAgcmV0dXJuICdFeHBlY3RlZDpcbiVzR290OlxuJXMnICUgKF9pbmRlbnQod2FudCksIF9pbmRlbnQoZ290KSkKICAgICAgICBlbGlmIHdhbnQ6CiAgICAgICAgICAgIHJldHVybiAnRXhwZWN0ZWQ6XG4lc0dvdCBub3RoaW5nXG4nICUgX2luZGVudCh3YW50KQogICAgICAgIGVsaWYgZ290OgogICAgICAgICAgICByZXR1cm4gJ0V4cGVjdGVkIG5vdGhpbmdcbkdvdDpcbiVzJyAlIF9pbmRlbnQoZ290KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnRXhwZWN0ZWQgbm90aGluZ1xuR290IG5vdGhpbmdcbicKCmNsYXNzIERvY1Rlc3RGYWlsdXJlKEV4Y2VwdGlvbik6CiAgICAiIiJBIERvY1Rlc3QgZXhhbXBsZSBoYXMgZmFpbGVkIGluIGRlYnVnZ2luZyBtb2RlLgoKICAgIFRoZSBleGNlcHRpb24gaW5zdGFuY2UgaGFzIHZhcmlhYmxlczoKCiAgICAtIHRlc3Q6IHRoZSBEb2NUZXN0IG9iamVjdCBiZWluZyBydW4KCiAgICAtIGV4YW1wbGU6IHRoZSBFeGFtcGxlIG9iamVjdCB0aGF0IGZhaWxlZAoKICAgIC0gZ290OiB0aGUgYWN0dWFsIG91dHB1dAogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdCwgZXhhbXBsZSwgZ290KToKICAgICAgICBzZWxmLnRlc3QgPSB0ZXN0CiAgICAgICAgc2VsZi5leGFtcGxlID0gZXhhbXBsZQogICAgICAgIHNlbGYuZ290ID0gZ290CgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHN0cihzZWxmLnRlc3QpCgpjbGFzcyBVbmV4cGVjdGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAgICAiIiJBIERvY1Rlc3QgZXhhbXBsZSBoYXMgZW5jb3VudGVyZWQgYW4gdW5leHBlY3RlZCBleGNlcHRpb24KCiAgICBUaGUgZXhjZXB0aW9uIGluc3RhbmNlIGhhcyB2YXJpYWJsZXM6CgogICAgLSB0ZXN0OiB0aGUgRG9jVGVzdCBvYmplY3QgYmVpbmcgcnVuCgogICAgLSBleGFtcGxlOiB0aGUgRXhhbXBsZSBvYmplY3QgdGhhdCBmYWlsZWQKCiAgICAtIGV4Y19pbmZvOiB0aGUgZXhjZXB0aW9uIGluZm8KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3QsIGV4YW1wbGUsIGV4Y19pbmZvKToKICAgICAgICBzZWxmLnRlc3QgPSB0ZXN0CiAgICAgICAgc2VsZi5leGFtcGxlID0gZXhhbXBsZQogICAgICAgIHNlbGYuZXhjX2luZm8gPSBleGNfaW5mbwoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzdHIoc2VsZi50ZXN0KQoKY2xhc3MgRGVidWdSdW5uZXIoRG9jVGVzdFJ1bm5lcik6CiAgICByIiIiUnVuIGRvYyB0ZXN0cyBidXQgcmFpc2UgYW4gZXhjZXB0aW9uIGFzIHNvb24gYXMgdGhlcmUgaXMgYSBmYWlsdXJlLgoKICAgICAgIElmIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9jY3VycywgYW4gVW5leHBlY3RlZEV4Y2VwdGlvbiBpcyByYWlzZWQuCiAgICAgICBJdCBjb250YWlucyB0aGUgdGVzdCwgdGhlIGV4YW1wbGUsIGFuZCB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uOgoKICAgICAgICAgPj4+IHJ1bm5lciA9IERlYnVnUnVubmVyKHZlcmJvc2U9RmFsc2UpCiAgICAgICAgID4+PiB0ZXN0ID0gRG9jVGVzdFBhcnNlcigpLmdldF9kb2N0ZXN0KCc+Pj4gcmFpc2UgS2V5RXJyb3JcbjQyJywKICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sICdmb28nLCAnZm9vLnB5JywgMCkKICAgICAgICAgPj4+IHRyeToKICAgICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCiAgICAgICAgIC4uLiBleGNlcHQgVW5leHBlY3RlZEV4Y2VwdGlvbiBhcyBmOgogICAgICAgICAuLi4gICAgIGZhaWx1cmUgPSBmCgogICAgICAgICA+Pj4gZmFpbHVyZS50ZXN0IGlzIHRlc3QKICAgICAgICAgVHJ1ZQoKICAgICAgICAgPj4+IGZhaWx1cmUuZXhhbXBsZS53YW50CiAgICAgICAgICc0MlxuJwoKICAgICAgICAgPj4+IGV4Y19pbmZvID0gZmFpbHVyZS5leGNfaW5mbwogICAgICAgICA+Pj4gcmFpc2UgZXhjX2luZm9bMV0gIyBBbHJlYWR5IGhhcyB0aGUgdHJhY2ViYWNrCiAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgLi4uCiAgICAgICAgIEtleUVycm9yCgogICAgICAgV2Ugd3JhcCB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIHRvIGdpdmUgdGhlIGNhbGxpbmcgYXBwbGljYXRpb24KICAgICAgIGFjY2VzcyB0byB0aGUgdGVzdCBhbmQgZXhhbXBsZSBpbmZvcm1hdGlvbi4KCiAgICAgICBJZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2gsIHRoZW4gYSBEb2NUZXN0RmFpbHVyZSBpcyByYWlzZWQ6CgogICAgICAgICA+Pj4gdGVzdCA9IERvY1Rlc3RQYXJzZXIoKS5nZXRfZG9jdGVzdCgnJycKICAgICAgICAgLi4uICAgICAgPj4+IHggPSAxCiAgICAgICAgIC4uLiAgICAgID4+PiB4CiAgICAgICAgIC4uLiAgICAgIDIKICAgICAgICAgLi4uICAgICAgJycnLCB7fSwgJ2ZvbycsICdmb28ucHknLCAwKQoKICAgICAgICAgPj4+IHRyeToKICAgICAgICAgLi4uICAgIHJ1bm5lci5ydW4odGVzdCkKICAgICAgICAgLi4uIGV4Y2VwdCBEb2NUZXN0RmFpbHVyZSBhcyBmOgogICAgICAgICAuLi4gICAgZmFpbHVyZSA9IGYKCiAgICAgICBEb2NUZXN0RmFpbHVyZSBvYmplY3RzIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSB0ZXN0OgoKICAgICAgICAgPj4+IGZhaWx1cmUudGVzdCBpcyB0ZXN0CiAgICAgICAgIFRydWUKCiAgICAgICBBcyB3ZWxsIGFzIHRvIHRoZSBleGFtcGxlOgoKICAgICAgICAgPj4+IGZhaWx1cmUuZXhhbXBsZS53YW50CiAgICAgICAgICcyXG4nCgogICAgICAgYW5kIHRoZSBhY3R1YWwgb3V0cHV0OgoKICAgICAgICAgPj4+IGZhaWx1cmUuZ290CiAgICAgICAgICcxXG4nCgogICAgICAgSWYgYSBmYWlsdXJlIG9yIGVycm9yIG9jY3VycywgdGhlIGdsb2JhbHMgYXJlIGxlZnQgaW50YWN0OgoKICAgICAgICAgPj4+IGRlbCB0ZXN0Lmdsb2JzWydfX2J1aWx0aW5zX18nXQogICAgICAgICA+Pj4gdGVzdC5nbG9icwogICAgICAgICB7J3gnOiAxfQoKICAgICAgICAgPj4+IHRlc3QgPSBEb2NUZXN0UGFyc2VyKCkuZ2V0X2RvY3Rlc3QoJycnCiAgICAgICAgIC4uLiAgICAgID4+PiB4ID0gMgogICAgICAgICAuLi4gICAgICA+Pj4gcmFpc2UgS2V5RXJyb3IKICAgICAgICAgLi4uICAgICAgJycnLCB7fSwgJ2ZvbycsICdmb28ucHknLCAwKQoKICAgICAgICAgPj4+IHJ1bm5lci5ydW4odGVzdCkKICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICAuLi4KICAgICAgICAgZG9jdGVzdC5VbmV4cGVjdGVkRXhjZXB0aW9uOiA8RG9jVGVzdCBmb28gZnJvbSBmb28ucHk6MCAoMiBleGFtcGxlcyk+CgogICAgICAgICA+Pj4gZGVsIHRlc3QuZ2xvYnNbJ19fYnVpbHRpbnNfXyddCiAgICAgICAgID4+PiB0ZXN0Lmdsb2JzCiAgICAgICAgIHsneCc6IDJ9CgogICAgICAgQnV0IHRoZSBnbG9iYWxzIGFyZSBjbGVhcmVkIGlmIHRoZXJlIGlzIG5vIGVycm9yOgoKICAgICAgICAgPj4+IHRlc3QgPSBEb2NUZXN0UGFyc2VyKCkuZ2V0X2RvY3Rlc3QoJycnCiAgICAgICAgIC4uLiAgICAgID4+PiB4ID0gMgogICAgICAgICAuLi4gICAgICAnJycsIHt9LCAnZm9vJywgJ2Zvby5weScsIDApCgogICAgICAgICA+Pj4gcnVubmVyLnJ1bih0ZXN0KQogICAgICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTEpCgogICAgICAgICA+Pj4gdGVzdC5nbG9icwogICAgICAgICB7fQoKICAgICAgICIiIgoKICAgIGRlZiBydW4oc2VsZiwgdGVzdCwgY29tcGlsZWZsYWdzPU5vbmUsIG91dD1Ob25lLCBjbGVhcl9nbG9icz1UcnVlKToKICAgICAgICByID0gRG9jVGVzdFJ1bm5lci5ydW4oc2VsZiwgdGVzdCwgY29tcGlsZWZsYWdzLCBvdXQsIEZhbHNlKQogICAgICAgIGlmIGNsZWFyX2dsb2JzOgogICAgICAgICAgICB0ZXN0Lmdsb2JzLmNsZWFyKCkKICAgICAgICByZXR1cm4gcgoKICAgIGRlZiByZXBvcnRfdW5leHBlY3RlZF9leGNlcHRpb24oc2VsZiwgb3V0LCB0ZXN0LCBleGFtcGxlLCBleGNfaW5mbyk6CiAgICAgICAgcmFpc2UgVW5leHBlY3RlZEV4Y2VwdGlvbih0ZXN0LCBleGFtcGxlLCBleGNfaW5mbykKCiAgICBkZWYgcmVwb3J0X2ZhaWx1cmUoc2VsZiwgb3V0LCB0ZXN0LCBleGFtcGxlLCBnb3QpOgogICAgICAgIHJhaXNlIERvY1Rlc3RGYWlsdXJlKHRlc3QsIGV4YW1wbGUsIGdvdCkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMgNi4gVGVzdCBGdW5jdGlvbnMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRoZXNlIHNob3VsZCBiZSBiYWNrd2FyZHMgY29tcGF0aWJsZS4KCiMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGEgZ2xvYmFsIGluc3RhbmNlIG9mIGEgRG9jVGVzdFJ1bm5lcgojIGNsYXNzLCB1cGRhdGVkIGJ5IHRlc3Rtb2QuCm1hc3RlciA9IE5vbmUKCmRlZiB0ZXN0bW9kKG09Tm9uZSwgbmFtZT1Ob25lLCBnbG9icz1Ob25lLCB2ZXJib3NlPU5vbmUsCiAgICAgICAgICAgIHJlcG9ydD1UcnVlLCBvcHRpb25mbGFncz0wLCBleHRyYWdsb2JzPU5vbmUsCiAgICAgICAgICAgIHJhaXNlX29uX2Vycm9yPUZhbHNlLCBleGNsdWRlX2VtcHR5PUZhbHNlKToKICAgICIiIm09Tm9uZSwgbmFtZT1Ob25lLCBnbG9icz1Ob25lLCB2ZXJib3NlPU5vbmUsIHJlcG9ydD1UcnVlLAogICAgICAgb3B0aW9uZmxhZ3M9MCwgZXh0cmFnbG9icz1Ob25lLCByYWlzZV9vbl9lcnJvcj1GYWxzZSwKICAgICAgIGV4Y2x1ZGVfZW1wdHk9RmFsc2UKCiAgICBUZXN0IGV4YW1wbGVzIGluIGRvY3N0cmluZ3MgaW4gZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHJlYWNoYWJsZQogICAgZnJvbSBtb2R1bGUgbSAob3IgdGhlIGN1cnJlbnQgbW9kdWxlIGlmIG0gaXMgbm90IHN1cHBsaWVkKSwgc3RhcnRpbmcKICAgIHdpdGggbS5fX2RvY19fLgoKICAgIEFsc28gdGVzdCBleGFtcGxlcyByZWFjaGFibGUgZnJvbSBkaWN0IG0uX190ZXN0X18gaWYgaXQgZXhpc3RzIGFuZCBpcwogICAgbm90IE5vbmUuICBtLl9fdGVzdF9fIG1hcHMgbmFtZXMgdG8gZnVuY3Rpb25zLCBjbGFzc2VzIGFuZCBzdHJpbmdzOwogICAgZnVuY3Rpb24gYW5kIGNsYXNzIGRvY3N0cmluZ3MgYXJlIHRlc3RlZCBldmVuIGlmIHRoZSBuYW1lIGlzIHByaXZhdGU7CiAgICBzdHJpbmdzIGFyZSB0ZXN0ZWQgZGlyZWN0bHksIGFzIGlmIHRoZXkgd2VyZSBkb2NzdHJpbmdzLgoKICAgIFJldHVybiAoI2ZhaWx1cmVzLCAjdGVzdHMpLgoKICAgIFNlZSBoZWxwKGRvY3Rlc3QpIGZvciBhbiBvdmVydmlldy4KCiAgICBPcHRpb25hbCBrZXl3b3JkIGFyZyAibmFtZSIgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZTsgYnkgZGVmYXVsdAogICAgdXNlIG0uX19uYW1lX18uCgogICAgT3B0aW9uYWwga2V5d29yZCBhcmcgImdsb2JzIiBnaXZlcyBhIGRpY3QgdG8gYmUgdXNlZCBhcyB0aGUgZ2xvYmFscwogICAgd2hlbiBleGVjdXRpbmcgZXhhbXBsZXM7IGJ5IGRlZmF1bHQsIHVzZSBtLl9fZGljdF9fLiAgQSBjb3B5IG9mIHRoaXMKICAgIGRpY3QgaXMgYWN0dWFsbHkgdXNlZCBmb3IgZWFjaCBkb2NzdHJpbmcsIHNvIHRoYXQgZWFjaCBkb2NzdHJpbmcncwogICAgZXhhbXBsZXMgc3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlLgoKICAgIE9wdGlvbmFsIGtleXdvcmQgYXJnICJleHRyYWdsb2JzIiBnaXZlcyBhIGRpY3Rpb25hcnkgdGhhdCBzaG91bGQgYmUKICAgIG1lcmdlZCBpbnRvIHRoZSBnbG9iYWxzIHRoYXQgYXJlIHVzZWQgdG8gZXhlY3V0ZSBleGFtcGxlcy4gIEJ5CiAgICBkZWZhdWx0LCBubyBleHRyYSBnbG9iYWxzIGFyZSB1c2VkLiAgVGhpcyBpcyBuZXcgaW4gMi40LgoKICAgIE9wdGlvbmFsIGtleXdvcmQgYXJnICJ2ZXJib3NlIiBwcmludHMgbG90cyBvZiBzdHVmZiBpZiB0cnVlLCBwcmludHMKICAgIG9ubHkgZmFpbHVyZXMgaWYgZmFsc2U7IGJ5IGRlZmF1bHQsIGl0J3MgdHJ1ZSBpZmYgIi12IiBpcyBpbiBzeXMuYXJndi4KCiAgICBPcHRpb25hbCBrZXl3b3JkIGFyZyAicmVwb3J0IiBwcmludHMgYSBzdW1tYXJ5IGF0IHRoZSBlbmQgd2hlbiB0cnVlLAogICAgZWxzZSBwcmludHMgbm90aGluZyBhdCB0aGUgZW5kLiAgSW4gdmVyYm9zZSBtb2RlLCB0aGUgc3VtbWFyeSBpcwogICAgZGV0YWlsZWQsIGVsc2UgdmVyeSBicmllZiAoaW4gZmFjdCwgZW1wdHkgaWYgYWxsIHRlc3RzIHBhc3NlZCkuCgogICAgT3B0aW9uYWwga2V5d29yZCBhcmcgIm9wdGlvbmZsYWdzIiBvcidzIHRvZ2V0aGVyIG1vZHVsZSBjb25zdGFudHMsCiAgICBhbmQgZGVmYXVsdHMgdG8gMC4gIFRoaXMgaXMgbmV3IGluIDIuMy4gIFBvc3NpYmxlIHZhbHVlcyAoc2VlIHRoZQogICAgZG9jcyBmb3IgZGV0YWlscyk6CgogICAgICAgIERPTlRfQUNDRVBUX1RSVUVfRk9SXzEKICAgICAgICBET05UX0FDQ0VQVF9CTEFOS0xJTkUKICAgICAgICBOT1JNQUxJWkVfV0hJVEVTUEFDRQogICAgICAgIEVMTElQU0lTCiAgICAgICAgU0tJUAogICAgICAgIElHTk9SRV9FWENFUFRJT05fREVUQUlMCiAgICAgICAgUkVQT1JUX1VESUZGCiAgICAgICAgUkVQT1JUX0NESUZGCiAgICAgICAgUkVQT1JUX05ESUZGCiAgICAgICAgUkVQT1JUX09OTFlfRklSU1RfRkFJTFVSRQoKICAgIE9wdGlvbmFsIGtleXdvcmQgYXJnICJyYWlzZV9vbl9lcnJvciIgcmFpc2VzIGFuIGV4Y2VwdGlvbiBvbiB0aGUKICAgIGZpcnN0IHVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9yIGZhaWx1cmUuIFRoaXMgYWxsb3dzIGZhaWx1cmVzIHRvIGJlCiAgICBwb3N0LW1vcnRlbSBkZWJ1Z2dlZC4KCiAgICBBZHZhbmNlZCB0b21mb29sZXJ5OiAgdGVzdG1vZCBydW5zIG1ldGhvZHMgb2YgYSBsb2NhbCBpbnN0YW5jZSBvZgogICAgY2xhc3MgZG9jdGVzdC5UZXN0ZXIsIHRoZW4gbWVyZ2VzIHRoZSByZXN1bHRzIGludG8gKG9yIGNyZWF0ZXMpCiAgICBnbG9iYWwgVGVzdGVyIGluc3RhbmNlIGRvY3Rlc3QubWFzdGVyLiAgTWV0aG9kcyBvZiBkb2N0ZXN0Lm1hc3RlcgogICAgY2FuIGJlIGNhbGxlZCBkaXJlY3RseSB0b28sIGlmIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyB1bnVzdWFsLgogICAgUGFzc2luZyByZXBvcnQ9MCB0byB0ZXN0bW9kIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRoZW4sIHRvIGRlbGF5CiAgICBkaXNwbGF5aW5nIGEgc3VtbWFyeS4gIEludm9rZSBkb2N0ZXN0Lm1hc3Rlci5zdW1tYXJpemUodmVyYm9zZSkKICAgIHdoZW4geW91J3JlIGRvbmUgZmlkZGxpbmcuCiAgICAiIiIKICAgIGdsb2JhbCBtYXN0ZXIKCiAgICAjIElmIG5vIG1vZHVsZSB3YXMgZ2l2ZW4sIHRoZW4gdXNlIF9fbWFpbl9fLgogICAgaWYgbSBpcyBOb25lOgogICAgICAgICMgRFdBIC0gbSB3aWxsIHN0aWxsIGJlIE5vbmUgaWYgdGhpcyB3YXNuJ3QgaW52b2tlZCBmcm9tIHRoZSBjb21tYW5kCiAgICAgICAgIyBsaW5lLCBpbiB3aGljaCBjYXNlIHRoZSBmb2xsb3dpbmcgVHlwZUVycm9yIGlzIGFib3V0IGFzIGdvb2QgYW4gZXJyb3IKICAgICAgICAjIGFzIHdlIHNob3VsZCBleHBlY3QKICAgICAgICBtID0gc3lzLm1vZHVsZXMuZ2V0KCdfX21haW5fXycpCgogICAgIyBDaGVjayB0aGF0IHdlIHdlcmUgYWN0dWFsbHkgZ2l2ZW4gYSBtb2R1bGUuCiAgICBpZiBub3QgaW5zcGVjdC5pc21vZHVsZShtKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRlc3Rtb2Q6IG1vZHVsZSByZXF1aXJlZDsgJXIiICUgKG0sKSkKCiAgICAjIElmIG5vIG5hbWUgd2FzIGdpdmVuLCB0aGVuIHVzZSB0aGUgbW9kdWxlJ3MgbmFtZS4KICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICBuYW1lID0gbS5fX25hbWVfXwoKICAgICMgRmluZCwgcGFyc2UsIGFuZCBydW4gYWxsIHRlc3RzIGluIHRoZSBnaXZlbiBtb2R1bGUuCiAgICBmaW5kZXIgPSBEb2NUZXN0RmluZGVyKGV4Y2x1ZGVfZW1wdHk9ZXhjbHVkZV9lbXB0eSkKCiAgICBpZiByYWlzZV9vbl9lcnJvcjoKICAgICAgICBydW5uZXIgPSBEZWJ1Z1J1bm5lcih2ZXJib3NlPXZlcmJvc2UsIG9wdGlvbmZsYWdzPW9wdGlvbmZsYWdzKQogICAgZWxzZToKICAgICAgICBydW5uZXIgPSBEb2NUZXN0UnVubmVyKHZlcmJvc2U9dmVyYm9zZSwgb3B0aW9uZmxhZ3M9b3B0aW9uZmxhZ3MpCgogICAgZm9yIHRlc3QgaW4gZmluZGVyLmZpbmQobSwgbmFtZSwgZ2xvYnM9Z2xvYnMsIGV4dHJhZ2xvYnM9ZXh0cmFnbG9icyk6CiAgICAgICAgcnVubmVyLnJ1bih0ZXN0KQoKICAgIGlmIHJlcG9ydDoKICAgICAgICBydW5uZXIuc3VtbWFyaXplKCkKCiAgICBpZiBtYXN0ZXIgaXMgTm9uZToKICAgICAgICBtYXN0ZXIgPSBydW5uZXIKICAgIGVsc2U6CiAgICAgICAgbWFzdGVyLm1lcmdlKHJ1bm5lcikKCiAgICByZXR1cm4gVGVzdFJlc3VsdHMocnVubmVyLmZhaWx1cmVzLCBydW5uZXIudHJpZXMpCgpkZWYgdGVzdGZpbGUoZmlsZW5hbWUsIG1vZHVsZV9yZWxhdGl2ZT1UcnVlLCBuYW1lPU5vbmUsIHBhY2thZ2U9Tm9uZSwKICAgICAgICAgICAgIGdsb2JzPU5vbmUsIHZlcmJvc2U9Tm9uZSwgcmVwb3J0PVRydWUsIG9wdGlvbmZsYWdzPTAsCiAgICAgICAgICAgICBleHRyYWdsb2JzPU5vbmUsIHJhaXNlX29uX2Vycm9yPUZhbHNlLCBwYXJzZXI9RG9jVGVzdFBhcnNlcigpLAogICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSk6CiAgICAiIiIKICAgIFRlc3QgZXhhbXBsZXMgaW4gdGhlIGdpdmVuIGZpbGUuICBSZXR1cm4gKCNmYWlsdXJlcywgI3Rlc3RzKS4KCiAgICBPcHRpb25hbCBrZXl3b3JkIGFyZyAibW9kdWxlX3JlbGF0aXZlIiBzcGVjaWZpZXMgaG93IGZpbGVuYW1lcwogICAgc2hvdWxkIGJlIGludGVycHJldGVkOgoKICAgICAgLSBJZiAibW9kdWxlX3JlbGF0aXZlIiBpcyBUcnVlICh0aGUgZGVmYXVsdCksIHRoZW4gImZpbGVuYW1lIgogICAgICAgICBzcGVjaWZpZXMgYSBtb2R1bGUtcmVsYXRpdmUgcGF0aC4gIEJ5IGRlZmF1bHQsIHRoaXMgcGF0aCBpcwogICAgICAgICByZWxhdGl2ZSB0byB0aGUgY2FsbGluZyBtb2R1bGUncyBkaXJlY3Rvcnk7IGJ1dCBpZiB0aGUKICAgICAgICAgInBhY2thZ2UiIGFyZ3VtZW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBpcyByZWxhdGl2ZSB0byB0aGF0CiAgICAgICAgIHBhY2thZ2UuICBUbyBlbnN1cmUgb3MtaW5kZXBlbmRlbmNlLCAiZmlsZW5hbWUiIHNob3VsZCB1c2UKICAgICAgICAgIi8iIGNoYXJhY3RlcnMgdG8gc2VwYXJhdGUgcGF0aCBzZWdtZW50cywgYW5kIHNob3VsZCBub3QKICAgICAgICAgYmUgYW4gYWJzb2x1dGUgcGF0aCAoaS5lLiwgaXQgbWF5IG5vdCBiZWdpbiB3aXRoICIvIikuCgogICAgICAtIElmICJtb2R1bGVfcmVsYXRpdmUiIGlzIEZhbHNlLCB0aGVuICJmaWxlbmFtZSIgc3BlY2lmaWVzIGFuCiAgICAgICAgb3Mtc3BlY2lmaWMgcGF0aC4gIFRoZSBwYXRoIG1heSBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZSAodG8KICAgICAgICB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkuCgogICAgT3B0aW9uYWwga2V5d29yZCBhcmcgIm5hbWUiIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSB0ZXN0OyBieSBkZWZhdWx0CiAgICB1c2UgdGhlIGZpbGUncyBiYXNlbmFtZS4KCiAgICBPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICJwYWNrYWdlIiBpcyBhIFB5dGhvbiBwYWNrYWdlIG9yIHRoZQogICAgbmFtZSBvZiBhIFB5dGhvbiBwYWNrYWdlIHdob3NlIGRpcmVjdG9yeSBzaG91bGQgYmUgdXNlZCBhcyB0aGUKICAgIGJhc2UgZGlyZWN0b3J5IGZvciBhIG1vZHVsZSByZWxhdGl2ZSBmaWxlbmFtZS4gIElmIG5vIHBhY2thZ2UgaXMKICAgIHNwZWNpZmllZCwgdGhlbiB0aGUgY2FsbGluZyBtb2R1bGUncyBkaXJlY3RvcnkgaXMgdXNlZCBhcyB0aGUgYmFzZQogICAgZGlyZWN0b3J5IGZvciBtb2R1bGUgcmVsYXRpdmUgZmlsZW5hbWVzLiAgSXQgaXMgYW4gZXJyb3IgdG8KICAgIHNwZWNpZnkgInBhY2thZ2UiIGlmICJtb2R1bGVfcmVsYXRpdmUiIGlzIEZhbHNlLgoKICAgIE9wdGlvbmFsIGtleXdvcmQgYXJnICJnbG9icyIgZ2l2ZXMgYSBkaWN0IHRvIGJlIHVzZWQgYXMgdGhlIGdsb2JhbHMKICAgIHdoZW4gZXhlY3V0aW5nIGV4YW1wbGVzOyBieSBkZWZhdWx0LCB1c2Uge30uICBBIGNvcHkgb2YgdGhpcyBkaWN0CiAgICBpcyBhY3R1YWxseSB1c2VkIGZvciBlYWNoIGRvY3N0cmluZywgc28gdGhhdCBlYWNoIGRvY3N0cmluZydzCiAgICBleGFtcGxlcyBzdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUuCgogICAgT3B0aW9uYWwga2V5d29yZCBhcmcgImV4dHJhZ2xvYnMiIGdpdmVzIGEgZGljdGlvbmFyeSB0aGF0IHNob3VsZCBiZQogICAgbWVyZ2VkIGludG8gdGhlIGdsb2JhbHMgdGhhdCBhcmUgdXNlZCB0byBleGVjdXRlIGV4YW1wbGVzLiAgQnkKICAgIGRlZmF1bHQsIG5vIGV4dHJhIGdsb2JhbHMgYXJlIHVzZWQuCgogICAgT3B0aW9uYWwga2V5d29yZCBhcmcgInZlcmJvc2UiIHByaW50cyBsb3RzIG9mIHN0dWZmIGlmIHRydWUsIHByaW50cwogICAgb25seSBmYWlsdXJlcyBpZiBmYWxzZTsgYnkgZGVmYXVsdCwgaXQncyB0cnVlIGlmZiAiLXYiIGlzIGluIHN5cy5hcmd2LgoKICAgIE9wdGlvbmFsIGtleXdvcmQgYXJnICJyZXBvcnQiIHByaW50cyBhIHN1bW1hcnkgYXQgdGhlIGVuZCB3aGVuIHRydWUsCiAgICBlbHNlIHByaW50cyBub3RoaW5nIGF0IHRoZSBlbmQuICBJbiB2ZXJib3NlIG1vZGUsIHRoZSBzdW1tYXJ5IGlzCiAgICBkZXRhaWxlZCwgZWxzZSB2ZXJ5IGJyaWVmIChpbiBmYWN0LCBlbXB0eSBpZiBhbGwgdGVzdHMgcGFzc2VkKS4KCiAgICBPcHRpb25hbCBrZXl3b3JkIGFyZyAib3B0aW9uZmxhZ3MiIG9yJ3MgdG9nZXRoZXIgbW9kdWxlIGNvbnN0YW50cywKICAgIGFuZCBkZWZhdWx0cyB0byAwLiAgUG9zc2libGUgdmFsdWVzIChzZWUgdGhlIGRvY3MgZm9yIGRldGFpbHMpOgoKICAgICAgICBET05UX0FDQ0VQVF9UUlVFX0ZPUl8xCiAgICAgICAgRE9OVF9BQ0NFUFRfQkxBTktMSU5FCiAgICAgICAgTk9STUFMSVpFX1dISVRFU1BBQ0UKICAgICAgICBFTExJUFNJUwogICAgICAgIFNLSVAKICAgICAgICBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTAogICAgICAgIFJFUE9SVF9VRElGRgogICAgICAgIFJFUE9SVF9DRElGRgogICAgICAgIFJFUE9SVF9ORElGRgogICAgICAgIFJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUKCiAgICBPcHRpb25hbCBrZXl3b3JkIGFyZyAicmFpc2Vfb25fZXJyb3IiIHJhaXNlcyBhbiBleGNlcHRpb24gb24gdGhlCiAgICBmaXJzdCB1bmV4cGVjdGVkIGV4Y2VwdGlvbiBvciBmYWlsdXJlLiBUaGlzIGFsbG93cyBmYWlsdXJlcyB0byBiZQogICAgcG9zdC1tb3J0ZW0gZGVidWdnZWQuCgogICAgT3B0aW9uYWwga2V5d29yZCBhcmcgInBhcnNlciIgc3BlY2lmaWVzIGEgRG9jVGVzdFBhcnNlciAob3IKICAgIHN1YmNsYXNzKSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGV4dHJhY3QgdGVzdHMgZnJvbSB0aGUgZmlsZXMuCgogICAgT3B0aW9uYWwga2V5d29yZCBhcmcgImVuY29kaW5nIiBzcGVjaWZpZXMgYW4gZW5jb2RpbmcgdGhhdCBzaG91bGQKICAgIGJlIHVzZWQgdG8gY29udmVydCB0aGUgZmlsZSB0byB1bmljb2RlLgoKICAgIEFkdmFuY2VkIHRvbWZvb2xlcnk6ICB0ZXN0bW9kIHJ1bnMgbWV0aG9kcyBvZiBhIGxvY2FsIGluc3RhbmNlIG9mCiAgICBjbGFzcyBkb2N0ZXN0LlRlc3RlciwgdGhlbiBtZXJnZXMgdGhlIHJlc3VsdHMgaW50byAob3IgY3JlYXRlcykKICAgIGdsb2JhbCBUZXN0ZXIgaW5zdGFuY2UgZG9jdGVzdC5tYXN0ZXIuICBNZXRob2RzIG9mIGRvY3Rlc3QubWFzdGVyCiAgICBjYW4gYmUgY2FsbGVkIGRpcmVjdGx5IHRvbywgaWYgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIHVudXN1YWwuCiAgICBQYXNzaW5nIHJlcG9ydD0wIHRvIHRlc3Rtb2QgaXMgZXNwZWNpYWxseSB1c2VmdWwgdGhlbiwgdG8gZGVsYXkKICAgIGRpc3BsYXlpbmcgYSBzdW1tYXJ5LiAgSW52b2tlIGRvY3Rlc3QubWFzdGVyLnN1bW1hcml6ZSh2ZXJib3NlKQogICAgd2hlbiB5b3UncmUgZG9uZSBmaWRkbGluZy4KICAgICIiIgogICAgZ2xvYmFsIG1hc3RlcgoKICAgIGlmIHBhY2thZ2UgYW5kIG5vdCBtb2R1bGVfcmVsYXRpdmU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2FnZSBtYXkgb25seSBiZSBzcGVjaWZpZWQgZm9yIG1vZHVsZS0iCiAgICAgICAgICAgICAgICAgICAgICAgICAicmVsYXRpdmUgcGF0aHMuIikKCiAgICAjIFJlbGF0aXZpemUgdGhlIHBhdGgKICAgIHRleHQsIGZpbGVuYW1lID0gX2xvYWRfdGVzdGZpbGUoZmlsZW5hbWUsIHBhY2thZ2UsIG1vZHVsZV9yZWxhdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmcgb3IgInV0Zi04IikKCiAgICAjIElmIG5vIG5hbWUgd2FzIGdpdmVuLCB0aGVuIHVzZSB0aGUgZmlsZSdzIG5hbWUuCiAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpCgogICAgIyBBc3NlbWJsZSB0aGUgZ2xvYmFscy4KICAgIGlmIGdsb2JzIGlzIE5vbmU6CiAgICAgICAgZ2xvYnMgPSB7fQogICAgZWxzZToKICAgICAgICBnbG9icyA9IGdsb2JzLmNvcHkoKQogICAgaWYgZXh0cmFnbG9icyBpcyBub3QgTm9uZToKICAgICAgICBnbG9icy51cGRhdGUoZXh0cmFnbG9icykKICAgIGlmICdfX25hbWVfXycgbm90IGluIGdsb2JzOgogICAgICAgIGdsb2JzWydfX25hbWVfXyddID0gJ19fbWFpbl9fJwoKICAgIGlmIHJhaXNlX29uX2Vycm9yOgogICAgICAgIHJ1bm5lciA9IERlYnVnUnVubmVyKHZlcmJvc2U9dmVyYm9zZSwgb3B0aW9uZmxhZ3M9b3B0aW9uZmxhZ3MpCiAgICBlbHNlOgogICAgICAgIHJ1bm5lciA9IERvY1Rlc3RSdW5uZXIodmVyYm9zZT12ZXJib3NlLCBvcHRpb25mbGFncz1vcHRpb25mbGFncykKCiAgICAjIFJlYWQgdGhlIGZpbGUsIGNvbnZlcnQgaXQgdG8gYSB0ZXN0LCBhbmQgcnVuIGl0LgogICAgdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdCh0ZXh0LCBnbG9icywgbmFtZSwgZmlsZW5hbWUsIDApCiAgICBydW5uZXIucnVuKHRlc3QpCgogICAgaWYgcmVwb3J0OgogICAgICAgIHJ1bm5lci5zdW1tYXJpemUoKQoKICAgIGlmIG1hc3RlciBpcyBOb25lOgogICAgICAgIG1hc3RlciA9IHJ1bm5lcgogICAgZWxzZToKICAgICAgICBtYXN0ZXIubWVyZ2UocnVubmVyKQoKICAgIHJldHVybiBUZXN0UmVzdWx0cyhydW5uZXIuZmFpbHVyZXMsIHJ1bm5lci50cmllcykKCmRlZiBydW5fZG9jc3RyaW5nX2V4YW1wbGVzKGYsIGdsb2JzLCB2ZXJib3NlPUZhbHNlLCBuYW1lPSJOb05hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlZmxhZ3M9Tm9uZSwgb3B0aW9uZmxhZ3M9MCk6CiAgICAiIiIKICAgIFRlc3QgZXhhbXBsZXMgaW4gdGhlIGdpdmVuIG9iamVjdCdzIGRvY3N0cmluZyAoYGZgKSwgdXNpbmcgYGdsb2JzYAogICAgYXMgZ2xvYmFscy4gIE9wdGlvbmFsIGFyZ3VtZW50IGBuYW1lYCBpcyB1c2VkIGluIGZhaWx1cmUgbWVzc2FnZXMuCiAgICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgYHZlcmJvc2VgIGlzIHRydWUsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0CiAgICBldmVuIGlmIHRoZXJlIGFyZSBubyBmYWlsdXJlcy4KCiAgICBgY29tcGlsZWZsYWdzYCBnaXZlcyB0aGUgc2V0IG9mIGZsYWdzIHRoYXQgc2hvdWxkIGJlIHVzZWQgYnkgdGhlCiAgICBQeXRob24gY29tcGlsZXIgd2hlbiBydW5uaW5nIHRoZSBleGFtcGxlcy4gIElmIG5vdCBzcGVjaWZpZWQsIHRoZW4KICAgIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgc2V0IG9mIGZ1dHVyZS1pbXBvcnQgZmxhZ3MgdGhhdCBhcHBseSB0bwogICAgYGdsb2JzYC4KCiAgICBPcHRpb25hbCBrZXl3b3JkIGFyZyBgb3B0aW9uZmxhZ3NgIHNwZWNpZmllcyBvcHRpb25zIGZvciB0aGUKICAgIHRlc3RpbmcgYW5kIG91dHB1dC4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgYHRlc3Rtb2RgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbi4KICAgICIiIgogICAgIyBGaW5kLCBwYXJzZSwgYW5kIHJ1biBhbGwgdGVzdHMgaW4gdGhlIGdpdmVuIG1vZHVsZS4KICAgIGZpbmRlciA9IERvY1Rlc3RGaW5kZXIodmVyYm9zZT12ZXJib3NlLCByZWN1cnNlPUZhbHNlKQogICAgcnVubmVyID0gRG9jVGVzdFJ1bm5lcih2ZXJib3NlPXZlcmJvc2UsIG9wdGlvbmZsYWdzPW9wdGlvbmZsYWdzKQogICAgZm9yIHRlc3QgaW4gZmluZGVyLmZpbmQoZiwgbmFtZSwgZ2xvYnM9Z2xvYnMpOgogICAgICAgIHJ1bm5lci5ydW4odGVzdCwgY29tcGlsZWZsYWdzPWNvbXBpbGVmbGFncykKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMgNy4gVW5pdHRlc3QgU3VwcG9ydAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpfdW5pdHRlc3RfcmVwb3J0ZmxhZ3MgPSAwCgpkZWYgc2V0X3VuaXR0ZXN0X3JlcG9ydGZsYWdzKGZsYWdzKToKICAgICIiIlNldHMgdGhlIHVuaXR0ZXN0IG9wdGlvbiBmbGFncy4KCiAgICBUaGUgb2xkIGZsYWcgaXMgcmV0dXJuZWQgc28gdGhhdCBhIHJ1bm5lciBjb3VsZCByZXN0b3JlIHRoZSBvbGQKICAgIHZhbHVlIGlmIGl0IHdpc2hlZCB0bzoKCiAgICAgID4+PiBpbXBvcnQgZG9jdGVzdAogICAgICA+Pj4gb2xkID0gZG9jdGVzdC5fdW5pdHRlc3RfcmVwb3J0ZmxhZ3MKICAgICAgPj4+IGRvY3Rlc3Quc2V0X3VuaXR0ZXN0X3JlcG9ydGZsYWdzKFJFUE9SVF9ORElGRiB8CiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgUkVQT1JUX09OTFlfRklSU1RfRkFJTFVSRSkgPT0gb2xkCiAgICAgIFRydWUKCiAgICAgID4+PiBkb2N0ZXN0Ll91bml0dGVzdF9yZXBvcnRmbGFncyA9PSAoUkVQT1JUX05ESUZGIHwKICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFKQogICAgICBUcnVlCgogICAgT25seSByZXBvcnRpbmcgZmxhZ3MgY2FuIGJlIHNldDoKCiAgICAgID4+PiBkb2N0ZXN0LnNldF91bml0dGVzdF9yZXBvcnRmbGFncyhFTExJUFNJUykKICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAuLi4KICAgICAgVmFsdWVFcnJvcjogKCdPbmx5IHJlcG9ydGluZyBmbGFncyBhbGxvd2VkJywgOCkKCiAgICAgID4+PiBkb2N0ZXN0LnNldF91bml0dGVzdF9yZXBvcnRmbGFncyhvbGQpID09IChSRVBPUlRfTkRJRkYgfAogICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUpCiAgICAgIFRydWUKICAgICIiIgogICAgZ2xvYmFsIF91bml0dGVzdF9yZXBvcnRmbGFncwoKICAgIGlmIChmbGFncyAmIFJFUE9SVElOR19GTEFHUykgIT0gZmxhZ3M6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSByZXBvcnRpbmcgZmxhZ3MgYWxsb3dlZCIsIGZsYWdzKQogICAgb2xkID0gX3VuaXR0ZXN0X3JlcG9ydGZsYWdzCiAgICBfdW5pdHRlc3RfcmVwb3J0ZmxhZ3MgPSBmbGFncwogICAgcmV0dXJuIG9sZAoKCmNsYXNzIERvY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdCwgb3B0aW9uZmxhZ3M9MCwgc2V0VXA9Tm9uZSwgdGVhckRvd249Tm9uZSwKICAgICAgICAgICAgICAgICBjaGVja2VyPU5vbmUpOgoKICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmKQogICAgICAgIHNlbGYuX2R0X29wdGlvbmZsYWdzID0gb3B0aW9uZmxhZ3MKICAgICAgICBzZWxmLl9kdF9jaGVja2VyID0gY2hlY2tlcgogICAgICAgIHNlbGYuX2R0X2dsb2JzID0gdGVzdC5nbG9icy5jb3B5KCkKICAgICAgICBzZWxmLl9kdF90ZXN0ID0gdGVzdAogICAgICAgIHNlbGYuX2R0X3NldFVwID0gc2V0VXAKICAgICAgICBzZWxmLl9kdF90ZWFyRG93biA9IHRlYXJEb3duCgogICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgIHRlc3QgPSBzZWxmLl9kdF90ZXN0CgogICAgICAgIGlmIHNlbGYuX2R0X3NldFVwIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9kdF9zZXRVcCh0ZXN0KQoKICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICB0ZXN0ID0gc2VsZi5fZHRfdGVzdAoKICAgICAgICBpZiBzZWxmLl9kdF90ZWFyRG93biBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fZHRfdGVhckRvd24odGVzdCkKCiAgICAgICAgIyByZXN0b3JlIHRoZSBvcmlnaW5hbCBnbG9icwogICAgICAgIHRlc3QuZ2xvYnMuY2xlYXIoKQogICAgICAgIHRlc3QuZ2xvYnMudXBkYXRlKHNlbGYuX2R0X2dsb2JzKQoKICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgIHRlc3QgPSBzZWxmLl9kdF90ZXN0CiAgICAgICAgb2xkID0gc3lzLnN0ZG91dAogICAgICAgIG5ldyA9IFN0cmluZ0lPKCkKICAgICAgICBvcHRpb25mbGFncyA9IHNlbGYuX2R0X29wdGlvbmZsYWdzCgogICAgICAgIGlmIG5vdCAob3B0aW9uZmxhZ3MgJiBSRVBPUlRJTkdfRkxBR1MpOgogICAgICAgICAgICAjIFRoZSBvcHRpb24gZmxhZ3MgZG9uJ3QgaW5jbHVkZSBhbnkgcmVwb3J0aW5nIGZsYWdzLAogICAgICAgICAgICAjIHNvIGFkZCB0aGUgZGVmYXVsdCByZXBvcnRpbmcgZmxhZ3MKICAgICAgICAgICAgb3B0aW9uZmxhZ3MgfD0gX3VuaXR0ZXN0X3JlcG9ydGZsYWdzCgogICAgICAgIHJ1bm5lciA9IERvY1Rlc3RSdW5uZXIob3B0aW9uZmxhZ3M9b3B0aW9uZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VyPXNlbGYuX2R0X2NoZWNrZXIsIHZlcmJvc2U9RmFsc2UpCgogICAgICAgIHRyeToKICAgICAgICAgICAgcnVubmVyLkRJVklERVIgPSAiLSIqNzAKICAgICAgICAgICAgZmFpbHVyZXMsIHRyaWVzID0gcnVubmVyLnJ1bigKICAgICAgICAgICAgICAgIHRlc3QsIG91dD1uZXcud3JpdGUsIGNsZWFyX2dsb2JzPUZhbHNlKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBvbGQKCiAgICAgICAgaWYgZmFpbHVyZXM6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihzZWxmLmZvcm1hdF9mYWlsdXJlKG5ldy5nZXR2YWx1ZSgpKSkKCiAgICBkZWYgZm9ybWF0X2ZhaWx1cmUoc2VsZiwgZXJyKToKICAgICAgICB0ZXN0ID0gc2VsZi5fZHRfdGVzdAogICAgICAgIGlmIHRlc3QubGluZW5vIGlzIE5vbmU6CiAgICAgICAgICAgIGxpbmVubyA9ICd1bmtub3duIGxpbmUgbnVtYmVyJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxpbmVubyA9ICclcycgJSB0ZXN0LmxpbmVubwogICAgICAgIGxuYW1lID0gJy4nLmpvaW4odGVzdC5uYW1lLnNwbGl0KCcuJylbLTE6XSkKICAgICAgICByZXR1cm4gKCdGYWlsZWQgZG9jdGVzdCB0ZXN0IGZvciAlc1xuJwogICAgICAgICAgICAgICAgJyAgRmlsZSAiJXMiLCBsaW5lICVzLCBpbiAlc1xuXG4lcycKICAgICAgICAgICAgICAgICUgKHRlc3QubmFtZSwgdGVzdC5maWxlbmFtZSwgbGluZW5vLCBsbmFtZSwgZXJyKQogICAgICAgICAgICAgICAgKQoKICAgIGRlZiBkZWJ1ZyhzZWxmKToKICAgICAgICByIiIiUnVuIHRoZSB0ZXN0IGNhc2Ugd2l0aG91dCByZXN1bHRzIGFuZCB3aXRob3V0IGNhdGNoaW5nIGV4Y2VwdGlvbnMKCiAgICAgICAgICAgVGhlIHVuaXQgdGVzdCBmcmFtZXdvcmsgaW5jbHVkZXMgYSBkZWJ1ZyBtZXRob2Qgb24gdGVzdCBjYXNlcwogICAgICAgICAgIGFuZCB0ZXN0IHN1aXRlcyB0byBzdXBwb3J0IHBvc3QtbW9ydGVtIGRlYnVnZ2luZy4gIFRoZSB0ZXN0IGNvZGUKICAgICAgICAgICBpcyBydW4gaW4gc3VjaCBhIHdheSB0aGF0IGVycm9ycyBhcmUgbm90IGNhdWdodC4gIFRoaXMgd2F5IGEKICAgICAgICAgICBjYWxsZXIgY2FuIGNhdGNoIHRoZSBlcnJvcnMgYW5kIGluaXRpYXRlIHBvc3QtbW9ydGVtIGRlYnVnZ2luZy4KCiAgICAgICAgICAgVGhlIERvY1Rlc3RDYXNlIHByb3ZpZGVzIGEgZGVidWcgbWV0aG9kIHRoYXQgcmFpc2VzCiAgICAgICAgICAgVW5leHBlY3RlZEV4Y2VwdGlvbiBlcnJvcnMgaWYgdGhlcmUgaXMgYW4gdW5leHBlY3RlZAogICAgICAgICAgIGV4Y2VwdGlvbjoKCiAgICAgICAgICAgICA+Pj4gdGVzdCA9IERvY1Rlc3RQYXJzZXIoKS5nZXRfZG9jdGVzdCgnPj4+IHJhaXNlIEtleUVycm9yXG40MicsCiAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAge30sICdmb28nLCAnZm9vLnB5JywgMCkKICAgICAgICAgICAgID4+PiBjYXNlID0gRG9jVGVzdENhc2UodGVzdCkKICAgICAgICAgICAgID4+PiB0cnk6CiAgICAgICAgICAgICAuLi4gICAgIGNhc2UuZGVidWcoKQogICAgICAgICAgICAgLi4uIGV4Y2VwdCBVbmV4cGVjdGVkRXhjZXB0aW9uIGFzIGY6CiAgICAgICAgICAgICAuLi4gICAgIGZhaWx1cmUgPSBmCgogICAgICAgICAgIFRoZSBVbmV4cGVjdGVkRXhjZXB0aW9uIGNvbnRhaW5zIHRoZSB0ZXN0LCB0aGUgZXhhbXBsZSwgYW5kCiAgICAgICAgICAgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbjoKCiAgICAgICAgICAgICA+Pj4gZmFpbHVyZS50ZXN0IGlzIHRlc3QKICAgICAgICAgICAgIFRydWUKCiAgICAgICAgICAgICA+Pj4gZmFpbHVyZS5leGFtcGxlLndhbnQKICAgICAgICAgICAgICc0MlxuJwoKICAgICAgICAgICAgID4+PiBleGNfaW5mbyA9IGZhaWx1cmUuZXhjX2luZm8KICAgICAgICAgICAgID4+PiByYWlzZSBleGNfaW5mb1sxXSAjIEFscmVhZHkgaGFzIHRoZSB0cmFjZWJhY2sKICAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgICAgIC4uLgogICAgICAgICAgICAgS2V5RXJyb3IKCiAgICAgICAgICAgSWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoLCB0aGVuIGEgRG9jVGVzdEZhaWx1cmUgaXMgcmFpc2VkOgoKICAgICAgICAgICAgID4+PiB0ZXN0ID0gRG9jVGVzdFBhcnNlcigpLmdldF9kb2N0ZXN0KCcnJwogICAgICAgICAgICAgLi4uICAgICAgPj4+IHggPSAxCiAgICAgICAgICAgICAuLi4gICAgICA+Pj4geAogICAgICAgICAgICAgLi4uICAgICAgMgogICAgICAgICAgICAgLi4uICAgICAgJycnLCB7fSwgJ2ZvbycsICdmb28ucHknLCAwKQogICAgICAgICAgICAgPj4+IGNhc2UgPSBEb2NUZXN0Q2FzZSh0ZXN0KQoKICAgICAgICAgICAgID4+PiB0cnk6CiAgICAgICAgICAgICAuLi4gICAgY2FzZS5kZWJ1ZygpCiAgICAgICAgICAgICAuLi4gZXhjZXB0IERvY1Rlc3RGYWlsdXJlIGFzIGY6CiAgICAgICAgICAgICAuLi4gICAgZmFpbHVyZSA9IGYKCiAgICAgICAgICAgRG9jVGVzdEZhaWx1cmUgb2JqZWN0cyBwcm92aWRlIGFjY2VzcyB0byB0aGUgdGVzdDoKCiAgICAgICAgICAgICA+Pj4gZmFpbHVyZS50ZXN0IGlzIHRlc3QKICAgICAgICAgICAgIFRydWUKCiAgICAgICAgICAgQXMgd2VsbCBhcyB0byB0aGUgZXhhbXBsZToKCiAgICAgICAgICAgICA+Pj4gZmFpbHVyZS5leGFtcGxlLndhbnQKICAgICAgICAgICAgICcyXG4nCgogICAgICAgICAgIGFuZCB0aGUgYWN0dWFsIG91dHB1dDoKCiAgICAgICAgICAgICA+Pj4gZmFpbHVyZS5nb3QKICAgICAgICAgICAgICcxXG4nCgogICAgICAgICAgICIiIgoKICAgICAgICBzZWxmLnNldFVwKCkKICAgICAgICBydW5uZXIgPSBEZWJ1Z1J1bm5lcihvcHRpb25mbGFncz1zZWxmLl9kdF9vcHRpb25mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VyPXNlbGYuX2R0X2NoZWNrZXIsIHZlcmJvc2U9RmFsc2UpCiAgICAgICAgcnVubmVyLnJ1bihzZWxmLl9kdF90ZXN0LCBjbGVhcl9nbG9icz1GYWxzZSkKICAgICAgICBzZWxmLnRlYXJEb3duKCkKCiAgICBkZWYgaWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2R0X3Rlc3QubmFtZQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIHR5cGUoc2VsZikgaXMgbm90IHR5cGUob3RoZXIpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICAgICAgcmV0dXJuIHNlbGYuX2R0X3Rlc3QgPT0gb3RoZXIuX2R0X3Rlc3QgYW5kIFwKICAgICAgICAgICAgICAgc2VsZi5fZHRfb3B0aW9uZmxhZ3MgPT0gb3RoZXIuX2R0X29wdGlvbmZsYWdzIGFuZCBcCiAgICAgICAgICAgICAgIHNlbGYuX2R0X3NldFVwID09IG90aGVyLl9kdF9zZXRVcCBhbmQgXAogICAgICAgICAgICAgICBzZWxmLl9kdF90ZWFyRG93biA9PSBvdGhlci5fZHRfdGVhckRvd24gYW5kIFwKICAgICAgICAgICAgICAgc2VsZi5fZHRfY2hlY2tlciA9PSBvdGhlci5fZHRfY2hlY2tlcgoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fZHRfb3B0aW9uZmxhZ3MsIHNlbGYuX2R0X3NldFVwLCBzZWxmLl9kdF90ZWFyRG93biwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZHRfY2hlY2tlcikpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIG5hbWUgPSBzZWxmLl9kdF90ZXN0Lm5hbWUuc3BsaXQoJy4nKQogICAgICAgIHJldHVybiAiJXMgKCVzKSIgJSAobmFtZVstMV0sICcuJy5qb2luKG5hbWVbOi0xXSkpCgogICAgX19zdHJfXyA9IG9iamVjdC5fX3N0cl9fCgogICAgZGVmIHNob3J0RGVzY3JpcHRpb24oc2VsZik6CiAgICAgICAgcmV0dXJuICJEb2N0ZXN0OiAiICsgc2VsZi5fZHRfdGVzdC5uYW1lCgpjbGFzcyBTa2lwRG9jVGVzdENhc2UoRG9jVGVzdENhc2UpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgc2VsZi5tb2R1bGUgPSBtb2R1bGUKICAgICAgICBEb2NUZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCBOb25lKQoKICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICBzZWxmLnNraXBUZXN0KCJEb2NUZXN0U3VpdGUgd2lsbCBub3Qgd29yayB3aXRoIC1PMiBhbmQgYWJvdmUiKQoKICAgIGRlZiB0ZXN0X3NraXAoc2VsZik6CiAgICAgICAgcGFzcwoKICAgIGRlZiBzaG9ydERlc2NyaXB0aW9uKHNlbGYpOgogICAgICAgIHJldHVybiAiU2tpcHBpbmcgdGVzdHMgZnJvbSAlcyIgJSBzZWxmLm1vZHVsZS5fX25hbWVfXwoKICAgIF9fc3RyX18gPSBzaG9ydERlc2NyaXB0aW9uCgoKY2xhc3MgX0RvY1Rlc3RTdWl0ZSh1bml0dGVzdC5UZXN0U3VpdGUpOgoKICAgIGRlZiBfcmVtb3ZlVGVzdEF0SW5kZXgoc2VsZiwgaW5kZXgpOgogICAgICAgIHBhc3MKCgpkZWYgRG9jVGVzdFN1aXRlKG1vZHVsZT1Ob25lLCBnbG9icz1Ob25lLCBleHRyYWdsb2JzPU5vbmUsIHRlc3RfZmluZGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgKipvcHRpb25zKToKICAgICIiIgogICAgQ29udmVydCBkb2N0ZXN0IHRlc3RzIGZvciBhIG1vZHVsZSB0byBhIHVuaXR0ZXN0IHRlc3Qgc3VpdGUuCgogICAgVGhpcyBjb252ZXJ0cyBlYWNoIGRvY3VtZW50YXRpb24gc3RyaW5nIGluIGEgbW9kdWxlIHRoYXQKICAgIGNvbnRhaW5zIGRvY3Rlc3QgdGVzdHMgdG8gYSB1bml0dGVzdCB0ZXN0IGNhc2UuICBJZiBhbnkgb2YgdGhlCiAgICB0ZXN0cyBpbiBhIGRvYyBzdHJpbmcgZmFpbCwgdGhlbiB0aGUgdGVzdCBjYXNlIGZhaWxzLiAgQW4gZXhjZXB0aW9uCiAgICBpcyByYWlzZWQgc2hvd2luZyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSB0ZXN0IGFuZCBhCiAgICAoc29tZXRpbWVzIGFwcHJveGltYXRlKSBsaW5lIG51bWJlci4KCiAgICBUaGUgYG1vZHVsZWAgYXJndW1lbnQgcHJvdmlkZXMgdGhlIG1vZHVsZSB0byBiZSB0ZXN0ZWQuICBUaGUgYXJndW1lbnQKICAgIGNhbiBiZSBlaXRoZXIgYSBtb2R1bGUgb3IgYSBtb2R1bGUgbmFtZS4KCiAgICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNhbGxpbmcgbW9kdWxlIGlzIHVzZWQuCgogICAgQSBudW1iZXIgb2Ygb3B0aW9ucyBtYXkgYmUgcHJvdmlkZWQgYXMga2V5d29yZCBhcmd1bWVudHM6CgogICAgc2V0VXAKICAgICAgQSBzZXQtdXAgZnVuY3Rpb24uICBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgcnVubmluZyB0aGUKICAgICAgdGVzdHMgaW4gZWFjaCBmaWxlLiBUaGUgc2V0VXAgZnVuY3Rpb24gd2lsbCBiZSBwYXNzZWQgYSBEb2NUZXN0CiAgICAgIG9iamVjdC4gIFRoZSBzZXRVcCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSB0ZXN0IGdsb2JhbHMgYXMgdGhlCiAgICAgIGdsb2JzIGF0dHJpYnV0ZSBvZiB0aGUgdGVzdCBwYXNzZWQuCgogICAgdGVhckRvd24KICAgICAgQSB0ZWFyLWRvd24gZnVuY3Rpb24uICBUaGlzIGlzIGNhbGxlZCBhZnRlciBydW5uaW5nIHRoZQogICAgICB0ZXN0cyBpbiBlYWNoIGZpbGUuICBUaGUgdGVhckRvd24gZnVuY3Rpb24gd2lsbCBiZSBwYXNzZWQgYSBEb2NUZXN0CiAgICAgIG9iamVjdC4gIFRoZSB0ZWFyRG93biBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSB0ZXN0IGdsb2JhbHMgYXMgdGhlCiAgICAgIGdsb2JzIGF0dHJpYnV0ZSBvZiB0aGUgdGVzdCBwYXNzZWQuCgogICAgZ2xvYnMKICAgICAgQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgaW5pdGlhbCBnbG9iYWwgdmFyaWFibGVzIGZvciB0aGUgdGVzdHMuCgogICAgb3B0aW9uZmxhZ3MKICAgICAgIEEgc2V0IG9mIGRvY3Rlc3Qgb3B0aW9uIGZsYWdzIGV4cHJlc3NlZCBhcyBhbiBpbnRlZ2VyLgogICAgIiIiCgogICAgaWYgdGVzdF9maW5kZXIgaXMgTm9uZToKICAgICAgICB0ZXN0X2ZpbmRlciA9IERvY1Rlc3RGaW5kZXIoKQoKICAgIG1vZHVsZSA9IF9ub3JtYWxpemVfbW9kdWxlKG1vZHVsZSkKICAgIHRlc3RzID0gdGVzdF9maW5kZXIuZmluZChtb2R1bGUsIGdsb2JzPWdsb2JzLCBleHRyYWdsb2JzPWV4dHJhZ2xvYnMpCgogICAgaWYgbm90IHRlc3RzIGFuZCBzeXMuZmxhZ3Mub3B0aW1pemUgPj0yOgogICAgICAgICMgU2tpcCBkb2N0ZXN0cyB3aGVuIHJ1bm5pbmcgd2l0aCAtTzIKICAgICAgICBzdWl0ZSA9IF9Eb2NUZXN0U3VpdGUoKQogICAgICAgIHN1aXRlLmFkZFRlc3QoU2tpcERvY1Rlc3RDYXNlKG1vZHVsZSkpCiAgICAgICAgcmV0dXJuIHN1aXRlCgogICAgdGVzdHMuc29ydCgpCiAgICBzdWl0ZSA9IF9Eb2NUZXN0U3VpdGUoKQoKICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgIGlmIGxlbih0ZXN0LmV4YW1wbGVzKSA9PSAwOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIG5vdCB0ZXN0LmZpbGVuYW1lOgogICAgICAgICAgICBmaWxlbmFtZSA9IG1vZHVsZS5fX2ZpbGVfXwogICAgICAgICAgICBpZiBmaWxlbmFtZVstNDpdID09ICIucHljIjoKICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogICAgICAgICAgICB0ZXN0LmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgICBzdWl0ZS5hZGRUZXN0KERvY1Rlc3RDYXNlKHRlc3QsICoqb3B0aW9ucykpCgogICAgcmV0dXJuIHN1aXRlCgpjbGFzcyBEb2NGaWxlQ2FzZShEb2NUZXN0Q2FzZSk6CgogICAgZGVmIGlkKHNlbGYpOgogICAgICAgIHJldHVybiAnXycuam9pbihzZWxmLl9kdF90ZXN0Lm5hbWUuc3BsaXQoJy4nKSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2R0X3Rlc3QuZmlsZW5hbWUKCiAgICBkZWYgZm9ybWF0X2ZhaWx1cmUoc2VsZiwgZXJyKToKICAgICAgICByZXR1cm4gKCdGYWlsZWQgZG9jdGVzdCB0ZXN0IGZvciAlc1xuICBGaWxlICIlcyIsIGxpbmUgMFxuXG4lcycKICAgICAgICAgICAgICAgICUgKHNlbGYuX2R0X3Rlc3QubmFtZSwgc2VsZi5fZHRfdGVzdC5maWxlbmFtZSwgZXJyKQogICAgICAgICAgICAgICAgKQoKZGVmIERvY0ZpbGVUZXN0KHBhdGgsIG1vZHVsZV9yZWxhdGl2ZT1UcnVlLCBwYWNrYWdlPU5vbmUsCiAgICAgICAgICAgICAgICBnbG9icz1Ob25lLCBwYXJzZXI9RG9jVGVzdFBhcnNlcigpLAogICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgKipvcHRpb25zKToKICAgIGlmIGdsb2JzIGlzIE5vbmU6CiAgICAgICAgZ2xvYnMgPSB7fQogICAgZWxzZToKICAgICAgICBnbG9icyA9IGdsb2JzLmNvcHkoKQoKICAgIGlmIHBhY2thZ2UgYW5kIG5vdCBtb2R1bGVfcmVsYXRpdmU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2FnZSBtYXkgb25seSBiZSBzcGVjaWZpZWQgZm9yIG1vZHVsZS0iCiAgICAgICAgICAgICAgICAgICAgICAgICAicmVsYXRpdmUgcGF0aHMuIikKCiAgICAjIFJlbGF0aXZpemUgdGhlIHBhdGguCiAgICBkb2MsIHBhdGggPSBfbG9hZF90ZXN0ZmlsZShwYXRoLCBwYWNrYWdlLCBtb2R1bGVfcmVsYXRpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyBvciAidXRmLTgiKQoKICAgIGlmICJfX2ZpbGVfXyIgbm90IGluIGdsb2JzOgogICAgICAgIGdsb2JzWyJfX2ZpbGVfXyJdID0gcGF0aAoKICAgICMgRmluZCB0aGUgZmlsZSBhbmQgcmVhZCBpdC4KICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCgogICAgIyBDb252ZXJ0IGl0IHRvIGEgdGVzdCwgYW5kIHdyYXAgaXQgaW4gYSBEb2NGaWxlQ2FzZS4KICAgIHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9icywgbmFtZSwgcGF0aCwgMCkKICAgIHJldHVybiBEb2NGaWxlQ2FzZSh0ZXN0LCAqKm9wdGlvbnMpCgpkZWYgRG9jRmlsZVN1aXRlKCpwYXRocywgKiprdyk6CiAgICAiIiJBIHVuaXR0ZXN0IHN1aXRlIGZvciBvbmUgb3IgbW9yZSBkb2N0ZXN0IGZpbGVzLgoKICAgIFRoZSBwYXRoIHRvIGVhY2ggZG9jdGVzdCBmaWxlIGlzIGdpdmVuIGFzIGEgc3RyaW5nOyB0aGUKICAgIGludGVycHJldGF0aW9uIG9mIHRoYXQgc3RyaW5nIGRlcGVuZHMgb24gdGhlIGtleXdvcmQgYXJndW1lbnQKICAgICJtb2R1bGVfcmVsYXRpdmUiLgoKICAgIEEgbnVtYmVyIG9mIG9wdGlvbnMgbWF5IGJlIHByb3ZpZGVkIGFzIGtleXdvcmQgYXJndW1lbnRzOgoKICAgIG1vZHVsZV9yZWxhdGl2ZQogICAgICBJZiAibW9kdWxlX3JlbGF0aXZlIiBpcyBUcnVlLCB0aGVuIHRoZSBnaXZlbiBmaWxlIHBhdGhzIGFyZQogICAgICBpbnRlcnByZXRlZCBhcyBvcy1pbmRlcGVuZGVudCBtb2R1bGUtcmVsYXRpdmUgcGF0aHMuICBCeQogICAgICBkZWZhdWx0LCB0aGVzZSBwYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIGNhbGxpbmcgbW9kdWxlJ3MKICAgICAgZGlyZWN0b3J5OyBidXQgaWYgdGhlICJwYWNrYWdlIiBhcmd1bWVudCBpcyBzcGVjaWZpZWQsIHRoZW4KICAgICAgdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhhdCBwYWNrYWdlLiAgVG8gZW5zdXJlIG9zLWluZGVwZW5kZW5jZSwKICAgICAgImZpbGVuYW1lIiBzaG91bGQgdXNlICIvIiBjaGFyYWN0ZXJzIHRvIHNlcGFyYXRlIHBhdGgKICAgICAgc2VnbWVudHMsIGFuZCBtYXkgbm90IGJlIGFuIGFic29sdXRlIHBhdGggKGkuZS4sIGl0IG1heSBub3QKICAgICAgYmVnaW4gd2l0aCAiLyIpLgoKICAgICAgSWYgIm1vZHVsZV9yZWxhdGl2ZSIgaXMgRmFsc2UsIHRoZW4gdGhlIGdpdmVuIGZpbGUgcGF0aHMgYXJlCiAgICAgIGludGVycHJldGVkIGFzIG9zLXNwZWNpZmljIHBhdGhzLiAgVGhlc2UgcGF0aHMgbWF5IGJlIGFic29sdXRlCiAgICAgIG9yIHJlbGF0aXZlICh0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkuCgogICAgcGFja2FnZQogICAgICBBIFB5dGhvbiBwYWNrYWdlIG9yIHRoZSBuYW1lIG9mIGEgUHl0aG9uIHBhY2thZ2Ugd2hvc2UgZGlyZWN0b3J5CiAgICAgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBiYXNlIGRpcmVjdG9yeSBmb3IgbW9kdWxlIHJlbGF0aXZlIHBhdGhzLgogICAgICBJZiAicGFja2FnZSIgaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGUgY2FsbGluZyBtb2R1bGUncwogICAgICBkaXJlY3RvcnkgaXMgdXNlZCBhcyB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIG1vZHVsZSByZWxhdGl2ZQogICAgICBmaWxlbmFtZXMuICBJdCBpcyBhbiBlcnJvciB0byBzcGVjaWZ5ICJwYWNrYWdlIiBpZgogICAgICAibW9kdWxlX3JlbGF0aXZlIiBpcyBGYWxzZS4KCiAgICBzZXRVcAogICAgICBBIHNldC11cCBmdW5jdGlvbi4gIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSBydW5uaW5nIHRoZQogICAgICB0ZXN0cyBpbiBlYWNoIGZpbGUuIFRoZSBzZXRVcCBmdW5jdGlvbiB3aWxsIGJlIHBhc3NlZCBhIERvY1Rlc3QKICAgICAgb2JqZWN0LiAgVGhlIHNldFVwIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIHRlc3QgZ2xvYmFscyBhcyB0aGUKICAgICAgZ2xvYnMgYXR0cmlidXRlIG9mIHRoZSB0ZXN0IHBhc3NlZC4KCiAgICB0ZWFyRG93bgogICAgICBBIHRlYXItZG93biBmdW5jdGlvbi4gIFRoaXMgaXMgY2FsbGVkIGFmdGVyIHJ1bm5pbmcgdGhlCiAgICAgIHRlc3RzIGluIGVhY2ggZmlsZS4gIFRoZSB0ZWFyRG93biBmdW5jdGlvbiB3aWxsIGJlIHBhc3NlZCBhIERvY1Rlc3QKICAgICAgb2JqZWN0LiAgVGhlIHRlYXJEb3duIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIHRlc3QgZ2xvYmFscyBhcyB0aGUKICAgICAgZ2xvYnMgYXR0cmlidXRlIG9mIHRoZSB0ZXN0IHBhc3NlZC4KCiAgICBnbG9icwogICAgICBBIGRpY3Rpb25hcnkgY29udGFpbmluZyBpbml0aWFsIGdsb2JhbCB2YXJpYWJsZXMgZm9yIHRoZSB0ZXN0cy4KCiAgICBvcHRpb25mbGFncwogICAgICBBIHNldCBvZiBkb2N0ZXN0IG9wdGlvbiBmbGFncyBleHByZXNzZWQgYXMgYW4gaW50ZWdlci4KCiAgICBwYXJzZXIKICAgICAgQSBEb2NUZXN0UGFyc2VyIChvciBzdWJjbGFzcykgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBleHRyYWN0CiAgICAgIHRlc3RzIGZyb20gdGhlIGZpbGVzLgoKICAgIGVuY29kaW5nCiAgICAgIEFuIGVuY29kaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNvbnZlcnQgdGhlIGZpbGVzIHRvIHVuaWNvZGUuCiAgICAiIiIKICAgIHN1aXRlID0gX0RvY1Rlc3RTdWl0ZSgpCgogICAgIyBXZSBkbyB0aGlzIGhlcmUgc28gdGhhdCBfbm9ybWFsaXplX21vZHVsZSBpcyBjYWxsZWQgYXQgdGhlIHJpZ2h0CiAgICAjIGxldmVsLiAgSWYgaXQgd2VyZSBjYWxsZWQgaW4gRG9jRmlsZVRlc3QsIHRoZW4gdGhpcyBmdW5jdGlvbgogICAgIyB3b3VsZCBiZSB0aGUgY2FsbGVyIGFuZCB3ZSBtaWdodCBndWVzcyB0aGUgcGFja2FnZSBpbmNvcnJlY3RseS4KICAgIGlmIGt3LmdldCgnbW9kdWxlX3JlbGF0aXZlJywgVHJ1ZSk6CiAgICAgICAga3dbJ3BhY2thZ2UnXSA9IF9ub3JtYWxpemVfbW9kdWxlKGt3LmdldCgncGFja2FnZScpKQoKICAgIGZvciBwYXRoIGluIHBhdGhzOgogICAgICAgIHN1aXRlLmFkZFRlc3QoRG9jRmlsZVRlc3QocGF0aCwgKiprdykpCgogICAgcmV0dXJuIHN1aXRlCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIDguIERlYnVnZ2luZyBTdXBwb3J0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmRlZiBzY3JpcHRfZnJvbV9leGFtcGxlcyhzKToKICAgIHIiIiJFeHRyYWN0IHNjcmlwdCBmcm9tIHRleHQgd2l0aCBleGFtcGxlcy4KCiAgICAgICBDb252ZXJ0cyB0ZXh0IHdpdGggZXhhbXBsZXMgdG8gYSBQeXRob24gc2NyaXB0LiAgRXhhbXBsZSBpbnB1dCBpcwogICAgICAgY29udmVydGVkIHRvIHJlZ3VsYXIgY29kZS4gIEV4YW1wbGUgb3V0cHV0IGFuZCBhbGwgb3RoZXIgd29yZHMKICAgICAgIGFyZSBjb252ZXJ0ZWQgdG8gY29tbWVudHM6CgogICAgICAgPj4+IHRleHQgPSAnJycKICAgICAgIC4uLiAgICAgICBIZXJlIGFyZSBleGFtcGxlcyBvZiBzaW1wbGUgbWF0aC4KICAgICAgIC4uLgogICAgICAgLi4uICAgICAgICAgICBQeXRob24gaGFzIHN1cGVyIGFjY3VyYXRlIGludGVnZXIgYWRkaXRpb24KICAgICAgIC4uLgogICAgICAgLi4uICAgICAgICAgICA+Pj4gMiArIDIKICAgICAgIC4uLiAgICAgICAgICAgNQogICAgICAgLi4uCiAgICAgICAuLi4gICAgICAgICAgIEFuZCB2ZXJ5IGZyaWVuZGx5IGVycm9yIG1lc3NhZ2VzOgogICAgICAgLi4uCiAgICAgICAuLi4gICAgICAgICAgID4+PiAxLzAKICAgICAgIC4uLiAgICAgICAgICAgVG8gSW5maW5pdHkKICAgICAgIC4uLiAgICAgICAgICAgQW5kCiAgICAgICAuLi4gICAgICAgICAgIEJleW9uZAogICAgICAgLi4uCiAgICAgICAuLi4gICAgICAgICAgIFlvdSBjYW4gdXNlIGxvZ2ljIGlmIHlvdSB3YW50OgogICAgICAgLi4uCiAgICAgICAuLi4gICAgICAgICAgID4+PiBpZiAwOgogICAgICAgLi4uICAgICAgICAgICAuLi4gICAgYmxhaAogICAgICAgLi4uICAgICAgICAgICAuLi4gICAgYmxhaAogICAgICAgLi4uICAgICAgICAgICAuLi4KICAgICAgIC4uLgogICAgICAgLi4uICAgICAgICAgICBIbyBodW0KICAgICAgIC4uLiAgICAgICAgICAgJycnCgogICAgICAgPj4+IHByaW50KHNjcmlwdF9mcm9tX2V4YW1wbGVzKHRleHQpKQogICAgICAgIyBIZXJlIGFyZSBleGFtcGxlcyBvZiBzaW1wbGUgbWF0aC4KICAgICAgICMKICAgICAgICMgICAgIFB5dGhvbiBoYXMgc3VwZXIgYWNjdXJhdGUgaW50ZWdlciBhZGRpdGlvbgogICAgICAgIwogICAgICAgMiArIDIKICAgICAgICMgRXhwZWN0ZWQ6CiAgICAgICAjIyA1CiAgICAgICAjCiAgICAgICAjICAgICBBbmQgdmVyeSBmcmllbmRseSBlcnJvciBtZXNzYWdlczoKICAgICAgICMKICAgICAgIDEvMAogICAgICAgIyBFeHBlY3RlZDoKICAgICAgICMjIFRvIEluZmluaXR5CiAgICAgICAjIyBBbmQKICAgICAgICMjIEJleW9uZAogICAgICAgIwogICAgICAgIyAgICAgWW91IGNhbiB1c2UgbG9naWMgaWYgeW91IHdhbnQ6CiAgICAgICAjCiAgICAgICBpZiAwOgogICAgICAgICAgYmxhaAogICAgICAgICAgYmxhaAogICAgICAgIwogICAgICAgIyAgICAgSG8gaHVtCiAgICAgICA8QkxBTktMSU5FPgogICAgICAgIiIiCiAgICBvdXRwdXQgPSBbXQogICAgZm9yIHBpZWNlIGluIERvY1Rlc3RQYXJzZXIoKS5wYXJzZShzKToKICAgICAgICBpZiBpc2luc3RhbmNlKHBpZWNlLCBFeGFtcGxlKToKICAgICAgICAgICAgIyBBZGQgdGhlIGV4YW1wbGUncyBzb3VyY2UgY29kZSAoc3RyaXAgdHJhaWxpbmcgTkwpCiAgICAgICAgICAgIG91dHB1dC5hcHBlbmQocGllY2Uuc291cmNlWzotMV0pCiAgICAgICAgICAgICMgQWRkIHRoZSBleHBlY3RlZCBvdXRwdXQ6CiAgICAgICAgICAgIHdhbnQgPSBwaWVjZS53YW50CiAgICAgICAgICAgIGlmIHdhbnQ6CiAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcjIEV4cGVjdGVkOicpCiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gWycjIyAnK2wgZm9yIGwgaW4gd2FudC5zcGxpdCgnXG4nKVs6LTFdXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgQWRkIG5vbi1leGFtcGxlIHRleHQuCiAgICAgICAgICAgIG91dHB1dCArPSBbX2NvbW1lbnRfbGluZShsKQogICAgICAgICAgICAgICAgICAgICAgIGZvciBsIGluIHBpZWNlLnNwbGl0KCdcbicpWzotMV1dCgogICAgIyBUcmltIGp1bmsgb24gYm90aCBlbmRzLgogICAgd2hpbGUgb3V0cHV0IGFuZCBvdXRwdXRbLTFdID09ICcjJzoKICAgICAgICBvdXRwdXQucG9wKCkKICAgIHdoaWxlIG91dHB1dCBhbmQgb3V0cHV0WzBdID09ICcjJzoKICAgICAgICBvdXRwdXQucG9wKDApCiAgICAjIENvbWJpbmUgdGhlIG91dHB1dCwgYW5kIHJldHVybiBpdC4KICAgICMgQWRkIGEgY291cnRlc3kgbmV3bGluZSB0byBwcmV2ZW50IGV4ZWMgZnJvbSBjaG9raW5nIChzZWUgYnVnICMxMTcyNzg1KQogICAgcmV0dXJuICdcbicuam9pbihvdXRwdXQpICsgJ1xuJwoKZGVmIHRlc3Rzb3VyY2UobW9kdWxlLCBuYW1lKToKICAgICIiIkV4dHJhY3QgdGhlIHRlc3Qgc291cmNlcyBmcm9tIGEgZG9jdGVzdCBkb2NzdHJpbmcgYXMgYSBzY3JpcHQuCgogICAgUHJvdmlkZSB0aGUgbW9kdWxlIChvciBkb3R0ZWQgbmFtZSBvZiB0aGUgbW9kdWxlKSBjb250YWluaW5nIHRoZQogICAgdGVzdCB0byBiZSBkZWJ1Z2dlZCBhbmQgdGhlIG5hbWUgKHdpdGhpbiB0aGUgbW9kdWxlKSBvZiB0aGUgb2JqZWN0CiAgICB3aXRoIHRoZSBkb2Mgc3RyaW5nIHdpdGggdGVzdHMgdG8gYmUgZGVidWdnZWQuCiAgICAiIiIKICAgIG1vZHVsZSA9IF9ub3JtYWxpemVfbW9kdWxlKG1vZHVsZSkKICAgIHRlc3RzID0gRG9jVGVzdEZpbmRlcigpLmZpbmQobW9kdWxlKQogICAgdGVzdCA9IFt0IGZvciB0IGluIHRlc3RzIGlmIHQubmFtZSA9PSBuYW1lXQogICAgaWYgbm90IHRlc3Q6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihuYW1lLCAibm90IGZvdW5kIGluIHRlc3RzIikKICAgIHRlc3QgPSB0ZXN0WzBdCiAgICB0ZXN0c3JjID0gc2NyaXB0X2Zyb21fZXhhbXBsZXModGVzdC5kb2NzdHJpbmcpCiAgICByZXR1cm4gdGVzdHNyYwoKZGVmIGRlYnVnX3NyYyhzcmMsIHBtPUZhbHNlLCBnbG9icz1Ob25lKToKICAgICIiIkRlYnVnIGEgc2luZ2xlIGRvY3Rlc3QgZG9jc3RyaW5nLCBpbiBhcmd1bWVudCBgc3JjYCciIiIKICAgIHRlc3RzcmMgPSBzY3JpcHRfZnJvbV9leGFtcGxlcyhzcmMpCiAgICBkZWJ1Z19zY3JpcHQodGVzdHNyYywgcG0sIGdsb2JzKQoKZGVmIGRlYnVnX3NjcmlwdChzcmMsIHBtPUZhbHNlLCBnbG9icz1Ob25lKToKICAgICJEZWJ1ZyBhIHRlc3Qgc2NyaXB0LiAgYHNyY2AgaXMgdGhlIHNjcmlwdCwgYXMgYSBzdHJpbmcuIgogICAgaW1wb3J0IHBkYgoKICAgIGlmIGdsb2JzOgogICAgICAgIGdsb2JzID0gZ2xvYnMuY29weSgpCiAgICBlbHNlOgogICAgICAgIGdsb2JzID0ge30KCiAgICBpZiBwbToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGV4ZWMoc3JjLCBnbG9icywgZ2xvYnMpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBwcmludChzeXMuZXhjX2luZm8oKVsxXSkKICAgICAgICAgICAgcCA9IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkKICAgICAgICAgICAgcC5yZXNldCgpCiAgICAgICAgICAgIHAuaW50ZXJhY3Rpb24oTm9uZSwgc3lzLmV4Y19pbmZvKClbMl0pCiAgICBlbHNlOgogICAgICAgIHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkucnVuKCJleGVjKCVyKSIgJSBzcmMsIGdsb2JzLCBnbG9icykKCmRlZiBkZWJ1Zyhtb2R1bGUsIG5hbWUsIHBtPUZhbHNlKToKICAgICIiIkRlYnVnIGEgc2luZ2xlIGRvY3Rlc3QgZG9jc3RyaW5nLgoKICAgIFByb3ZpZGUgdGhlIG1vZHVsZSAob3IgZG90dGVkIG5hbWUgb2YgdGhlIG1vZHVsZSkgY29udGFpbmluZyB0aGUKICAgIHRlc3QgdG8gYmUgZGVidWdnZWQgYW5kIHRoZSBuYW1lICh3aXRoaW4gdGhlIG1vZHVsZSkgb2YgdGhlIG9iamVjdAogICAgd2l0aCB0aGUgZG9jc3RyaW5nIHdpdGggdGVzdHMgdG8gYmUgZGVidWdnZWQuCiAgICAiIiIKICAgIG1vZHVsZSA9IF9ub3JtYWxpemVfbW9kdWxlKG1vZHVsZSkKICAgIHRlc3RzcmMgPSB0ZXN0c291cmNlKG1vZHVsZSwgbmFtZSkKICAgIGRlYnVnX3NjcmlwdCh0ZXN0c3JjLCBwbSwgbW9kdWxlLl9fZGljdF9fKQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyA5LiBFeGFtcGxlIFVzYWdlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKY2xhc3MgX1Rlc3RDbGFzczoKICAgICIiIgogICAgQSBwb2ludGxlc3MgY2xhc3MsIGZvciBzYW5pdHktY2hlY2tpbmcgb2YgZG9jc3RyaW5nIHRlc3RpbmcuCgogICAgTWV0aG9kczoKICAgICAgICBzcXVhcmUoKQogICAgICAgIGdldCgpCgogICAgPj4+IF9UZXN0Q2xhc3MoMTMpLmdldCgpICsgX1Rlc3RDbGFzcygtMTIpLmdldCgpCiAgICAxCiAgICA+Pj4gaGV4KF9UZXN0Q2xhc3MoMTMpLnNxdWFyZSgpLmdldCgpKQogICAgJzB4YTknCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKICAgICAgICAiIiJ2YWwgLT4gX1Rlc3RDbGFzcyBvYmplY3Qgd2l0aCBhc3NvY2lhdGVkIHZhbHVlIHZhbC4KCiAgICAgICAgPj4+IHQgPSBfVGVzdENsYXNzKDEyMykKICAgICAgICA+Pj4gcHJpbnQodC5nZXQoKSkKICAgICAgICAxMjMKICAgICAgICAiIiIKCiAgICAgICAgc2VsZi52YWwgPSB2YWwKCiAgICBkZWYgc3F1YXJlKHNlbGYpOgogICAgICAgICIiInNxdWFyZSgpIC0+IHNxdWFyZSBUZXN0Q2xhc3MncyBhc3NvY2lhdGVkIHZhbHVlCgogICAgICAgID4+PiBfVGVzdENsYXNzKDEzKS5zcXVhcmUoKS5nZXQoKQogICAgICAgIDE2OQogICAgICAgICIiIgoKICAgICAgICBzZWxmLnZhbCA9IHNlbGYudmFsICoqIDIKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgIiIiZ2V0KCkgLT4gcmV0dXJuIFRlc3RDbGFzcydzIGFzc29jaWF0ZWQgdmFsdWUuCgogICAgICAgID4+PiB4ID0gX1Rlc3RDbGFzcygtNDIpCiAgICAgICAgPj4+IHByaW50KHguZ2V0KCkpCiAgICAgICAgLTQyCiAgICAgICAgIiIiCgogICAgICAgIHJldHVybiBzZWxmLnZhbAoKX190ZXN0X18gPSB7Il9UZXN0Q2xhc3MiOiBfVGVzdENsYXNzLAogICAgICAgICAgICAic3RyaW5nIjogciIiIgogICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZSBvZiBhIHN0cmluZyBvYmplY3QsIHNlYXJjaGVkIGFzLWlzLgogICAgICAgICAgICAgICAgICAgICAgPj4+IHggPSAxOyB5ID0gMgogICAgICAgICAgICAgICAgICAgICAgPj4+IHggKyB5LCB4ICogeQogICAgICAgICAgICAgICAgICAgICAgKDMsIDIpCiAgICAgICAgICAgICAgICAgICAgICAiIiIsCgogICAgICAgICAgICAiYm9vbC1pbnQgZXF1aXZhbGVuY2UiOiByIiIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIDIuMiwgYm9vbGVhbiBleHByZXNzaW9ucyBkaXNwbGF5ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCBvciAxLiAgQnkgZGVmYXVsdCwgd2Ugc3RpbGwgYWNjZXB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW0uICBUaGlzIGNhbiBiZSBkaXNhYmxlZCBieSBwYXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTlRfQUNDRVBUX1RSVUVfRk9SXzEgdG8gdGhlIG5ldwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25mbGFncyBhcmd1bWVudC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4+IDQgPT0gNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+PiA0ID09IDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Pj4gNCA+IDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Pj4gNCA+IDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIiLAoKICAgICAgICAgICAgImJsYW5rIGxpbmVzIjogciIiIgogICAgICAgICAgICAgICAgQmxhbmsgbGluZXMgY2FuIGJlIG1hcmtlZCB3aXRoIDxCTEFOS0xJTkU+OgogICAgICAgICAgICAgICAgICAgID4+PiBwcmludCgnZm9vXG5cbmJhclxuJykKICAgICAgICAgICAgICAgICAgICBmb28KICAgICAgICAgICAgICAgICAgICA8QkxBTktMSU5FPgogICAgICAgICAgICAgICAgICAgIGJhcgogICAgICAgICAgICAgICAgICAgIDxCTEFOS0xJTkU+CiAgICAgICAgICAgICIiIiwKCiAgICAgICAgICAgICJlbGxpcHNpcyI6IHIiIiIKICAgICAgICAgICAgICAgIElmIHRoZSBlbGxpcHNpcyBmbGFnIGlzIHVzZWQsIHRoZW4gJy4uLicgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgIGVsaWRlIHN1YnN0cmluZ3MgaW4gdGhlIGRlc2lyZWQgb3V0cHV0OgogICAgICAgICAgICAgICAgICAgID4+PiBwcmludChsaXN0KHJhbmdlKDEwMDApKSkgI2RvY3Rlc3Q6ICtFTExJUFNJUwogICAgICAgICAgICAgICAgICAgIFswLCAxLCAyLCAuLi4sIDk5OV0KICAgICAgICAgICAgIiIiLAoKICAgICAgICAgICAgIndoaXRlc3BhY2Ugbm9ybWFsaXphdGlvbiI6IHIiIiIKICAgICAgICAgICAgICAgIElmIHRoZSB3aGl0ZXNwYWNlIG5vcm1hbGl6YXRpb24gZmxhZyBpcyB1c2VkLCB0aGVuCiAgICAgICAgICAgICAgICBkaWZmZXJlbmNlcyBpbiB3aGl0ZXNwYWNlIGFyZSBpZ25vcmVkLgogICAgICAgICAgICAgICAgICAgID4+PiBwcmludChsaXN0KHJhbmdlKDMwKSkpICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LAogICAgICAgICAgICAgICAgICAgICAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LAogICAgICAgICAgICAgICAgICAgICAyNywgMjgsIDI5XQogICAgICAgICAgICAiIiIsCiAgICAgICAgICAgfQoKCmRlZiBfdGVzdCgpOgogICAgaW1wb3J0IGFyZ3BhcnNlCgogICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249ImRvY3Rlc3QgcnVubmVyIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IHZlcnkgdmVyYm9zZSBvdXRwdXQgZm9yIGFsbCB0ZXN0cycpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbycsICctLW9wdGlvbicsIGFjdGlvbj0nYXBwZW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1PUFRJT05GTEFHU19CWV9OQU1FLmtleXMoKSwgZGVmYXVsdD1bXSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ3NwZWNpZnkgYSBkb2N0ZXN0IG9wdGlvbiBmbGFnIHRvIGFwcGx5JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHRvIHRoZSB0ZXN0IHJ1bjsgbWF5IGJlIHNwZWNpZmllZCBtb3JlJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHRoYW4gb25jZSB0byBhcHBseSBtdWx0aXBsZSBvcHRpb25zJykpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZicsICctLWZhaWwtZmFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdzdG9wIHJ1bm5pbmcgdGVzdHMgYWZ0ZXIgZmlyc3QgZmFpbHVyZSAodGhpcycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBpcyBhIHNob3J0aGFuZCBmb3IgLW8gRkFJTF9GQVNULCBhbmQgaXMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgaW4gYWRkaXRpb24gdG8gYW55IG90aGVyIC1vIG9wdGlvbnMpJykpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdmaWxlJywgbmFyZ3M9JysnLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmaWxlIGNvbnRhaW5pbmcgdGhlIHRlc3RzIHRvIHJ1bicpCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgdGVzdGZpbGVzID0gYXJncy5maWxlCiAgICAjIFZlcmJvc2UgdXNlZCB0byBiZSBoYW5kbGVkIGJ5IHRoZSAiaW5zcGVjdCBhcmd2IiBtYWdpYyBpbiBEb2NUZXN0UnVubmVyLAogICAgIyBidXQgc2luY2Ugd2UgYXJlIHVzaW5nIGFyZ3BhcnNlIHdlIGFyZSBwYXNzaW5nIGl0IG1hbnVhbGx5IG5vdy4KICAgIHZlcmJvc2UgPSBhcmdzLnZlcmJvc2UKICAgIG9wdGlvbnMgPSAwCiAgICBmb3Igb3B0aW9uIGluIGFyZ3Mub3B0aW9uOgogICAgICAgIG9wdGlvbnMgfD0gT1BUSU9ORkxBR1NfQllfTkFNRVtvcHRpb25dCiAgICBpZiBhcmdzLmZhaWxfZmFzdDoKICAgICAgICBvcHRpb25zIHw9IEZBSUxfRkFTVAogICAgZm9yIGZpbGVuYW1lIGluIHRlc3RmaWxlczoKICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgiLnB5Iik6CiAgICAgICAgICAgICMgSXQgaXMgYSBtb2R1bGUgLS0gaW5zZXJ0IGl0cyBkaXIgaW50byBzeXMucGF0aCBhbmQgdHJ5IHRvCiAgICAgICAgICAgICMgaW1wb3J0IGl0LiBJZiBpdCBpcyBwYXJ0IG9mIGEgcGFja2FnZSwgdGhhdCBwb3NzaWJseQogICAgICAgICAgICAjIHdvbid0IHdvcmsgYmVjYXVzZSBvZiBwYWNrYWdlIGltcG9ydHMuCiAgICAgICAgICAgIGRpcm5hbWUsIGZpbGVuYW1lID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIGRpcm5hbWUpCiAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKGZpbGVuYW1lWzotM10pCiAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQogICAgICAgICAgICBmYWlsdXJlcywgXyA9IHRlc3Rtb2QobSwgdmVyYm9zZT12ZXJib3NlLCBvcHRpb25mbGFncz1vcHRpb25zKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZhaWx1cmVzLCBfID0gdGVzdGZpbGUoZmlsZW5hbWUsIG1vZHVsZV9yZWxhdGl2ZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2U9dmVyYm9zZSwgb3B0aW9uZmxhZ3M9b3B0aW9ucykKICAgICAgICBpZiBmYWlsdXJlczoKICAgICAgICAgICAgcmV0dXJuIDEKICAgIHJldHVybiAwCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHN5cy5leGl0KF90ZXN0KCkpClBLAwQUAAAAAAACIKNWJtvlfDkzAQA5MwEABwAAAGVudW0ucHlpbXBvcnQgc3lzCmltcG9ydCBidWlsdGlucyBhcyBibHRucwpmcm9tIHR5cGVzIGltcG9ydCBNYXBwaW5nUHJveHlUeXBlLCBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKZnJvbSBvcGVyYXRvciBpbXBvcnQgb3JfIGFzIF9vcl8KZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQoKCl9fYWxsX18gPSBbCiAgICAgICAgJ0VudW1UeXBlJywgJ0VudW1NZXRhJywKICAgICAgICAnRW51bScsICdJbnRFbnVtJywgJ1N0ckVudW0nLCAnRmxhZycsICdJbnRGbGFnJywgJ1JlcHJFbnVtJywKICAgICAgICAnYXV0bycsICd1bmlxdWUnLCAncHJvcGVydHknLCAndmVyaWZ5JywgJ21lbWJlcicsICdub25tZW1iZXInLAogICAgICAgICdGbGFnQm91bmRhcnknLCAnU1RSSUNUJywgJ0NPTkZPUk0nLCAnRUpFQ1QnLCAnS0VFUCcsCiAgICAgICAgJ2dsb2JhbF9mbGFnX3JlcHInLCAnZ2xvYmFsX2VudW1fcmVwcicsICdnbG9iYWxfc3RyJywgJ2dsb2JhbF9lbnVtJywKICAgICAgICAnRW51bUNoZWNrJywgJ0NPTlRJTlVPVVMnLCAnTkFNRURfRkxBR1MnLCAnVU5JUVVFJywKICAgICAgICBdCgoKIyBEdW1teSB2YWx1ZSBmb3IgRW51bSBhbmQgRmxhZyBhcyB0aGVyZSBhcmUgZXhwbGljaXQgY2hlY2tzIGZvciB0aGVtCiMgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGNyZWF0ZWQuCiMgVGhpcyBpcyBhbHNvIHdoeSB0aGVyZSBhcmUgY2hlY2tzIGluIEVudW1UeXBlIGxpa2UgYGlmIEVudW0gaXMgbm90IE5vbmVgCkVudW0gPSBGbGFnID0gRUpFQ1QgPSBfc3RkbGliX2VudW1zID0gUmVwckVudW0gPSBOb25lCgpjbGFzcyBub25tZW1iZXIob2JqZWN0KToKICAgICIiIgogICAgUHJvdGVjdHMgaXRlbSBmcm9tIGJlY29taW5nIGFuIEVudW0gbWVtYmVyIGR1cmluZyBjbGFzcyBjcmVhdGlvbi4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKCmNsYXNzIG1lbWJlcihvYmplY3QpOgogICAgIiIiCiAgICBGb3JjZXMgaXRlbSB0byBiZWNvbWUgYW4gRW51bSBtZW1iZXIgZHVyaW5nIGNsYXNzIGNyZWF0aW9uLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgogICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQoKZGVmIF9pc19kZXNjcmlwdG9yKG9iaik6CiAgICAiIiIKICAgIFJldHVybnMgVHJ1ZSBpZiBvYmogaXMgYSBkZXNjcmlwdG9yLCBGYWxzZSBvdGhlcndpc2UuCiAgICAiIiIKICAgIHJldHVybiAoCiAgICAgICAgICAgIGhhc2F0dHIob2JqLCAnX19nZXRfXycpIG9yCiAgICAgICAgICAgIGhhc2F0dHIob2JqLCAnX19zZXRfXycpIG9yCiAgICAgICAgICAgIGhhc2F0dHIob2JqLCAnX19kZWxldGVfXycpCiAgICAgICAgICAgICkKCmRlZiBfaXNfZHVuZGVyKG5hbWUpOgogICAgIiIiCiAgICBSZXR1cm5zIFRydWUgaWYgYSBfX2R1bmRlcl9fIG5hbWUsIEZhbHNlIG90aGVyd2lzZS4KICAgICIiIgogICAgcmV0dXJuICgKICAgICAgICAgICAgbGVuKG5hbWUpID4gNCBhbmQKICAgICAgICAgICAgbmFtZVs6Ml0gPT0gbmFtZVstMjpdID09ICdfXycgYW5kCiAgICAgICAgICAgIG5hbWVbMl0gIT0gJ18nIGFuZAogICAgICAgICAgICBuYW1lWy0zXSAhPSAnXycKICAgICAgICAgICAgKQoKZGVmIF9pc19zdW5kZXIobmFtZSk6CiAgICAiIiIKICAgIFJldHVybnMgVHJ1ZSBpZiBhIF9zdW5kZXJfIG5hbWUsIEZhbHNlIG90aGVyd2lzZS4KICAgICIiIgogICAgcmV0dXJuICgKICAgICAgICAgICAgbGVuKG5hbWUpID4gMiBhbmQKICAgICAgICAgICAgbmFtZVswXSA9PSBuYW1lWy0xXSA9PSAnXycgYW5kCiAgICAgICAgICAgIG5hbWVbMToyXSAhPSAnXycgYW5kCiAgICAgICAgICAgIG5hbWVbLTI6LTFdICE9ICdfJwogICAgICAgICAgICApCgpkZWYgX2lzX2ludGVybmFsX2NsYXNzKGNsc19uYW1lLCBvYmopOgogICAgIyBkbyBub3QgdXNlIGByZWAgYXMgYHJlYCBpbXBvcnRzIGBlbnVtYAogICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHF1YWxuYW1lID0gZ2V0YXR0cihvYmosICdfX3F1YWxuYW1lX18nLCAnJykKICAgIHNfcGF0dGVybiA9IGNsc19uYW1lICsgJy4nICsgZ2V0YXR0cihvYmosICdfX25hbWVfXycsICcnKQogICAgZV9wYXR0ZXJuID0gJy4nICsgc19wYXR0ZXJuCiAgICByZXR1cm4gcXVhbG5hbWUgPT0gc19wYXR0ZXJuIG9yIHF1YWxuYW1lLmVuZHN3aXRoKGVfcGF0dGVybikKCmRlZiBfaXNfcHJpdmF0ZShjbHNfbmFtZSwgbmFtZSk6CiAgICAjIGRvIG5vdCB1c2UgYHJlYCBhcyBgcmVgIGltcG9ydHMgYGVudW1gCiAgICBwYXR0ZXJuID0gJ18lc19fJyAlIChjbHNfbmFtZSwgKQogICAgcGF0X2xlbiA9IGxlbihwYXR0ZXJuKQogICAgaWYgKAogICAgICAgICAgICBsZW4obmFtZSkgPiBwYXRfbGVuCiAgICAgICAgICAgIGFuZCBuYW1lLnN0YXJ0c3dpdGgocGF0dGVybikKICAgICAgICAgICAgYW5kIG5hbWVbcGF0X2xlbjpwYXRfbGVuKzFdICE9IFsnXyddCiAgICAgICAgICAgIGFuZCAobmFtZVstMV0gIT0gJ18nIG9yIG5hbWVbLTJdICE9ICdfJykKICAgICAgICApOgogICAgICAgIHJldHVybiBUcnVlCiAgICBlbHNlOgogICAgICAgIHJldHVybiBGYWxzZQoKZGVmIF9pc19zaW5nbGVfYml0KG51bSk6CiAgICAiIiIKICAgIFRydWUgaWYgb25seSBvbmUgYml0IHNldCBpbiBudW0gKHNob3VsZCBiZSBhbiBpbnQpCiAgICAiIiIKICAgIGlmIG51bSA9PSAwOgogICAgICAgIHJldHVybiBGYWxzZQogICAgbnVtICY9IG51bSAtIDEKICAgIHJldHVybiBudW0gPT0gMAoKZGVmIF9tYWtlX2NsYXNzX3VucGlja2xhYmxlKG9iaik6CiAgICAiIiIKICAgIE1ha2UgdGhlIGdpdmVuIG9iaiB1bi1waWNrbGFibGUuCgogICAgb2JqIHNob3VsZCBiZSBlaXRoZXIgYSBkaWN0aW9uYXJ5LCBvciBhbiBFbnVtCiAgICAiIiIKICAgIGRlZiBfYnJlYWtfb25fY2FsbF9yZWR1Y2Uoc2VsZiwgcHJvdG8pOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXIgY2Fubm90IGJlIHBpY2tsZWQnICUgc2VsZikKICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBkaWN0KToKICAgICAgICBvYmpbJ19fcmVkdWNlX2V4X18nXSA9IF9icmVha19vbl9jYWxsX3JlZHVjZQogICAgICAgIG9ialsnX19tb2R1bGVfXyddID0gJzx1bmtub3duPicKICAgIGVsc2U6CiAgICAgICAgc2V0YXR0cihvYmosICdfX3JlZHVjZV9leF9fJywgX2JyZWFrX29uX2NhbGxfcmVkdWNlKQogICAgICAgIHNldGF0dHIob2JqLCAnX19tb2R1bGVfXycsICc8dW5rbm93bj4nKQoKZGVmIF9pdGVyX2JpdHNfbHNiKG51bSk6CiAgICAjIG51bSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcgogICAgb3JpZ2luYWwgPSBudW0KICAgIGlmIGlzaW5zdGFuY2UobnVtLCBFbnVtKToKICAgICAgICBudW0gPSBudW0udmFsdWUKICAgIGlmIG51bSA8IDA6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgaXMgbm90IGEgcG9zaXRpdmUgaW50ZWdlcicgJSBvcmlnaW5hbCkKICAgIHdoaWxlIG51bToKICAgICAgICBiID0gbnVtICYgKH5udW0gKyAxKQogICAgICAgIHlpZWxkIGIKICAgICAgICBudW0gXj0gYgoKZGVmIHNob3dfZmxhZ192YWx1ZXModmFsdWUpOgogICAgcmV0dXJuIGxpc3QoX2l0ZXJfYml0c19sc2IodmFsdWUpKQoKZGVmIGJpbihudW0sIG1heF9iaXRzPU5vbmUpOgogICAgIiIiCiAgICBMaWtlIGJ1aWx0LWluIGJpbigpLCBleGNlcHQgbmVnYXRpdmUgdmFsdWVzIGFyZSByZXByZXNlbnRlZCBpbgogICAgdHdvcy1jb21wbGltZW50LCBhbmQgdGhlIGxlYWRpbmcgYml0IGFsd2F5cyBpbmRpY2F0ZXMgc2lnbgogICAgKDA9cG9zaXRpdmUsIDE9bmVnYXRpdmUpLgoKICAgID4+PiBiaW4oMTApCiAgICAnMGIwIDEwMTAnCiAgICA+Pj4gYmluKH4xMCkgICAjIH4xMCBpcyAtMTEKICAgICcwYjEgMDEwMScKICAgICIiIgoKICAgIGNlaWxpbmcgPSAyICoqIChudW0pLmJpdF9sZW5ndGgoKQogICAgaWYgbnVtID49IDA6CiAgICAgICAgcyA9IGJsdG5zLmJpbihudW0gKyBjZWlsaW5nKS5yZXBsYWNlKCcxJywgJzAnLCAxKQogICAgZWxzZToKICAgICAgICBzID0gYmx0bnMuYmluKH5udW0gXiAoY2VpbGluZyAtIDEpICsgY2VpbGluZykKICAgIHNpZ24gPSBzWzozXQogICAgZGlnaXRzID0gc1szOl0KICAgIGlmIG1heF9iaXRzIGlzIG5vdCBOb25lOgogICAgICAgIGlmIGxlbihkaWdpdHMpIDwgbWF4X2JpdHM6CiAgICAgICAgICAgIGRpZ2l0cyA9IChzaWduWy0xXSAqIG1heF9iaXRzICsgZGlnaXRzKVstbWF4X2JpdHM6XQogICAgcmV0dXJuICIlcyAlcyIgJSAoc2lnbiwgZGlnaXRzKQoKZGVmIF9kZWRlbnQodGV4dCk6CiAgICAiIiIKICAgIExpa2UgdGV4dHdyYXAuZGVkZW50LiAgUmV3cml0dGVuIGJlY2F1c2Ugd2UgY2Fubm90IGltcG9ydCB0ZXh0d3JhcC4KICAgICIiIgogICAgbGluZXMgPSB0ZXh0LnNwbGl0KCdcbicpCiAgICBibGFua3MgPSAwCiAgICBmb3IgaSwgY2ggaW4gZW51bWVyYXRlKGxpbmVzWzBdKToKICAgICAgICBpZiBjaCAhPSAnICc6CiAgICAgICAgICAgIGJyZWFrCiAgICBmb3IgaiwgbCBpbiBlbnVtZXJhdGUobGluZXMpOgogICAgICAgIGxpbmVzW2pdID0gbFtpOl0KICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCgpjbGFzcyBfYXV0b19udWxsOgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnX2F1dG9fbnVsbCcKX2F1dG9fbnVsbCA9IF9hdXRvX251bGwoKQoKY2xhc3MgYXV0bzoKICAgICIiIgogICAgSW5zdGFuY2VzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGluIEVudW0gY2xhc3Mgc3VpdGVzLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9X2F1dG9fbnVsbCk6CiAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiYXV0byglcikiICUgc2VsZi52YWx1ZQoKY2xhc3MgcHJvcGVydHkoRHluYW1pY0NsYXNzQXR0cmlidXRlKToKICAgICIiIgogICAgVGhpcyBpcyBhIGRlc2NyaXB0b3IsIHVzZWQgdG8gZGVmaW5lIGF0dHJpYnV0ZXMgdGhhdCBhY3QgZGlmZmVyZW50bHkKICAgIHdoZW4gYWNjZXNzZWQgdGhyb3VnaCBhbiBlbnVtIG1lbWJlciBhbmQgdGhyb3VnaCBhbiBlbnVtIGNsYXNzLgogICAgSW5zdGFuY2UgYWNjZXNzIGlzIHRoZSBzYW1lIGFzIHByb3BlcnR5KCksIGJ1dCBhY2Nlc3MgdG8gYW4gYXR0cmlidXRlCiAgICB0aHJvdWdoIHRoZSBlbnVtIGNsYXNzIHdpbGwgaW5zdGVhZCBsb29rIGluIHRoZSBjbGFzcycgX21lbWJlcl9tYXBfIGZvcgogICAgYSBjb3JyZXNwb25kaW5nIGVudW0gbWVtYmVyLgogICAgIiIiCgogICAgZGVmIF9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyY2xhc3M9Tm9uZSk6CiAgICAgICAgaWYgaW5zdGFuY2UgaXMgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIG93bmVyY2xhc3MuX21lbWJlcl9tYXBfW3NlbGYubmFtZV0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICclciBoYXMgbm8gYXR0cmlidXRlICVyJyAlIChvd25lcmNsYXNzLCBzZWxmLm5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzZWxmLmZnZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAnJXIgbWVtYmVyIGhhcyBubyBhdHRyaWJ1dGUgJXInICUgKG93bmVyY2xhc3MsIHNlbGYubmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmdldChpbnN0YW5jZSkKCiAgICBkZWYgX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpOgogICAgICAgIGlmIHNlbGYuZnNldCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiPGVudW0gJXI+IGNhbm5vdCBzZXQgYXR0cmlidXRlICVyIiAlIChzZWxmLmNsc25hbWUsIHNlbGYubmFtZSkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZnNldChpbnN0YW5jZSwgdmFsdWUpCgogICAgZGVmIF9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpOgogICAgICAgIGlmIHNlbGYuZmRlbCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiPGVudW0gJXI+IGNhbm5vdCBkZWxldGUgYXR0cmlidXRlICVyIiAlIChzZWxmLmNsc25hbWUsIHNlbGYubmFtZSkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmRlbChpbnN0YW5jZSkKCiAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyY2xhc3MsIG5hbWUpOgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICBzZWxmLmNsc25hbWUgPSBvd25lcmNsYXNzLl9fbmFtZV9fCgoKY2xhc3MgX3Byb3RvX21lbWJlcjoKICAgICIiIgogICAgaW50ZXJtZWRpYXRlIHN0ZXAgZm9yIGVudW0gbWVtYmVycyBiZXR3ZWVuIGNsYXNzIGV4ZWN1dGlvbiBhbmQgZmluYWwgY3JlYXRpb24KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCgogICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBlbnVtX2NsYXNzLCBtZW1iZXJfbmFtZSk6CiAgICAgICAgIiIiCiAgICAgICAgY29udmVydCBlYWNoIHF1YXNpLW1lbWJlciBpbnRvIGFuIGluc3RhbmNlIG9mIHRoZSBuZXcgZW51bSBjbGFzcwogICAgICAgICIiIgogICAgICAgICMgZmlyc3Qgc3RlcDogcmVtb3ZlIG91cnNlbGYgZnJvbSBlbnVtX2NsYXNzCiAgICAgICAgZGVsYXR0cihlbnVtX2NsYXNzLCBtZW1iZXJfbmFtZSkKICAgICAgICAjIHNlY29uZCBzdGVwOiBjcmVhdGUgbWVtYmVyIGJhc2VkIG9uIGVudW1fY2xhc3MKICAgICAgICB2YWx1ZSA9IHNlbGYudmFsdWUKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgICAgICBhcmdzID0gKHZhbHVlLCApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYXJncyA9IHZhbHVlCiAgICAgICAgaWYgZW51bV9jbGFzcy5fbWVtYmVyX3R5cGVfIGlzIHR1cGxlOiAgICMgc3BlY2lhbCBjYXNlIGZvciB0dXBsZSBlbnVtcwogICAgICAgICAgICBhcmdzID0gKGFyZ3MsICkgICAgICMgd3JhcCBpdCBvbmUgbW9yZSB0aW1lCiAgICAgICAgaWYgbm90IGVudW1fY2xhc3MuX3VzZV9hcmdzXzoKICAgICAgICAgICAgZW51bV9tZW1iZXIgPSBlbnVtX2NsYXNzLl9uZXdfbWVtYmVyXyhlbnVtX2NsYXNzKQogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihlbnVtX21lbWJlciwgJ192YWx1ZV8nKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlci5fdmFsdWVfID0gZW51bV9jbGFzcy5fbWVtYmVyX3R5cGVfKCphcmdzKQogICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW51bV9tZW1iZXIgPSBlbnVtX2NsYXNzLl9uZXdfbWVtYmVyXyhlbnVtX2NsYXNzLCAqYXJncykKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZW51bV9tZW1iZXIsICdfdmFsdWVfJyk6CiAgICAgICAgICAgICAgICBpZiBlbnVtX2NsYXNzLl9tZW1iZXJfdHlwZV8gaXMgb2JqZWN0OgogICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSBlbnVtX2NsYXNzLl9tZW1iZXJfdHlwZV8oKmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX3ZhbHVlXyBub3Qgc2V0IGluIF9fbmV3X18sIHVuYWJsZSB0byBjcmVhdGUgaXQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBmcm9tIE5vbmUKICAgICAgICB2YWx1ZSA9IGVudW1fbWVtYmVyLl92YWx1ZV8KICAgICAgICBlbnVtX21lbWJlci5fbmFtZV8gPSBtZW1iZXJfbmFtZQogICAgICAgIGVudW1fbWVtYmVyLl9fb2JqY2xhc3NfXyA9IGVudW1fY2xhc3MKICAgICAgICBlbnVtX21lbWJlci5fX2luaXRfXygqYXJncykKICAgICAgICBlbnVtX21lbWJlci5fc29ydF9vcmRlcl8gPSBsZW4oZW51bV9jbGFzcy5fbWVtYmVyX25hbWVzXykKICAgICAgICAjIElmIGFub3RoZXIgbWVtYmVyIHdpdGggdGhlIHNhbWUgdmFsdWUgd2FzIGFscmVhZHkgZGVmaW5lZCwgdGhlCiAgICAgICAgIyBuZXcgbWVtYmVyIGJlY29tZXMgYW4gYWxpYXMgdG8gdGhlIGV4aXN0aW5nIG9uZS4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICMgdHJ5IHRvIGRvIGEgZmFzdCBsb29rdXAgdG8gYXZvaWQgdGhlIHF1YWRyYXRpYyBsb29wCiAgICAgICAgICAgICAgICBlbnVtX21lbWJlciA9IGVudW1fY2xhc3MuX3ZhbHVlMm1lbWJlcl9tYXBfW3ZhbHVlXQogICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgZm9yIG5hbWUsIGNhbm9uaWNhbF9tZW1iZXIgaW4gZW51bV9jbGFzcy5fbWVtYmVyX21hcF8uaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICBpZiBjYW5vbmljYWxfbWVtYmVyLl92YWx1ZV8gPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyID0gY2Fub25pY2FsX21lbWJlcgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcgogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIyB0aGlzIGNvdWxkIHN0aWxsIGJlIGFuIGFsaWFzIGlmIHRoZSB2YWx1ZSBpcyBtdWx0aS1iaXQgYW5kIHRoZQogICAgICAgICAgICAjIGNsYXNzIGlzIGEgZmxhZyBjbGFzcwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgRmxhZyBpcyBOb25lCiAgICAgICAgICAgICAgICAgICAgb3Igbm90IGlzc3ViY2xhc3MoZW51bV9jbGFzcywgRmxhZykKICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAjIG5vIG90aGVyIGluc3RhbmNlcyBmb3VuZCwgcmVjb3JkIHRoaXMgbWVtYmVyIGluIF9tZW1iZXJfbmFtZXNfCiAgICAgICAgICAgICAgICBlbnVtX2NsYXNzLl9tZW1iZXJfbmFtZXNfLmFwcGVuZChtZW1iZXJfbmFtZSkKICAgICAgICAgICAgZWxpZiAoCiAgICAgICAgICAgICAgICAgICAgRmxhZyBpcyBub3QgTm9uZQogICAgICAgICAgICAgICAgICAgIGFuZCBpc3N1YmNsYXNzKGVudW1fY2xhc3MsIEZsYWcpCiAgICAgICAgICAgICAgICAgICAgYW5kIF9pc19zaW5nbGVfYml0KHZhbHVlKQogICAgICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgICMgbm8gb3RoZXIgaW5zdGFuY2VzIGZvdW5kLCByZWNvcmQgdGhpcyBtZW1iZXIgaW4gX21lbWJlcl9uYW1lc18KICAgICAgICAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc18uYXBwZW5kKG1lbWJlcl9uYW1lKQogICAgICAgICMgZ2V0IHJlZGlyZWN0IGluIHBsYWNlIGJlZm9yZSBhZGRpbmcgdG8gX21lbWJlcl9tYXBfCiAgICAgICAgIyBidXQgY2hlY2sgZm9yIG90aGVyIGluc3RhbmNlcyBpbiBwYXJlbnQgY2xhc3NlcyBmaXJzdAogICAgICAgIG5lZWRfb3ZlcnJpZGUgPSBGYWxzZQogICAgICAgIGRlc2NyaXB0b3IgPSBOb25lCiAgICAgICAgZm9yIGJhc2UgaW4gZW51bV9jbGFzcy5fX21yb19fWzE6XToKICAgICAgICAgICAgZGVzY3JpcHRvciA9IGJhc2UuX19kaWN0X18uZ2V0KG1lbWJlcl9uYW1lKQogICAgICAgICAgICBpZiBkZXNjcmlwdG9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkZXNjcmlwdG9yLCAocHJvcGVydHksIER5bmFtaWNDbGFzc0F0dHJpYnV0ZSkpOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG5lZWRfb3ZlcnJpZGUgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIyBrZWVwIGxvb2tpbmcgZm9yIGFuIGVudW0ucHJvcGVydHkKICAgICAgICBpZiBkZXNjcmlwdG9yIGFuZCBub3QgbmVlZF9vdmVycmlkZToKICAgICAgICAgICAgIyBwcmV2aW91cyBlbnVtLnByb3BlcnR5IGZvdW5kLCBubyBmdXJ0aGVyIGFjdGlvbiBuZWVkZWQKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsaWYgZGVzY3JpcHRvciBhbmQgbmVlZF9vdmVycmlkZToKICAgICAgICAgICAgcmVkaXJlY3QgPSBwcm9wZXJ0eSgpCiAgICAgICAgICAgIHJlZGlyZWN0Ll9fc2V0X25hbWVfXyhlbnVtX2NsYXNzLCBtZW1iZXJfbmFtZSkKICAgICAgICAgICAgIyBQcmV2aW91cyBlbnVtLnByb3BlcnR5IGZvdW5kLCBidXQgc29tZSBvdGhlciBpbmhlcml0ZWQgYXR0cmlidXRlCiAgICAgICAgICAgICMgaXMgaW4gdGhlIHdheTsgY29weSBmZ2V0LCBmc2V0LCBmZGVsIHRvIHRoaXMgb25lLgogICAgICAgICAgICByZWRpcmVjdC5mZ2V0ID0gZGVzY3JpcHRvci5mZ2V0CiAgICAgICAgICAgIHJlZGlyZWN0LmZzZXQgPSBkZXNjcmlwdG9yLmZzZXQKICAgICAgICAgICAgcmVkaXJlY3QuZmRlbCA9IGRlc2NyaXB0b3IuZmRlbAogICAgICAgICAgICBzZXRhdHRyKGVudW1fY2xhc3MsIG1lbWJlcl9uYW1lLCByZWRpcmVjdCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZXRhdHRyKGVudW1fY2xhc3MsIG1lbWJlcl9uYW1lLCBlbnVtX21lbWJlcikKICAgICAgICAjIG5vdyBhZGQgdG8gX21lbWJlcl9tYXBfIChldmVuIGFsaWFzZXMpCiAgICAgICAgZW51bV9jbGFzcy5fbWVtYmVyX21hcF9bbWVtYmVyX25hbWVdID0gZW51bV9tZW1iZXIKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgVGhpcyBtYXkgZmFpbCBpZiB2YWx1ZSBpcyBub3QgaGFzaGFibGUuIFdlIGNhbid0IGFkZCB0aGUgdmFsdWUKICAgICAgICAgICAgIyB0byB0aGUgbWFwLCBhbmQgYnktdmFsdWUgbG9va3VwcyBmb3IgdGhpcyB2YWx1ZSB3aWxsIGJlCiAgICAgICAgICAgICMgbGluZWFyLgogICAgICAgICAgICBlbnVtX2NsYXNzLl92YWx1ZTJtZW1iZXJfbWFwXy5zZXRkZWZhdWx0KHZhbHVlLCBlbnVtX21lbWJlcikKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAjIGtlZXAgdHJhY2sgb2YgdGhlIHZhbHVlIGluIGEgbGlzdCBzbyBjb250YWlubWVudCBjaGVja3MgYXJlIHF1aWNrCiAgICAgICAgICAgIGVudW1fY2xhc3MuX3VuaGFzaGFibGVfdmFsdWVzXy5hcHBlbmQodmFsdWUpCgoKY2xhc3MgX0VudW1EaWN0KGRpY3QpOgogICAgIiIiCiAgICBUcmFjayBlbnVtIG1lbWJlciBvcmRlciBhbmQgZW5zdXJlIG1lbWJlciBuYW1lcyBhcmUgbm90IHJldXNlZC4KCiAgICBFbnVtVHlwZSB3aWxsIHVzZSB0aGUgbmFtZXMgZm91bmQgaW4gc2VsZi5fbWVtYmVyX25hbWVzIGFzIHRoZQogICAgZW51bWVyYXRpb24gbWVtYmVyIG5hbWVzLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5fbWVtYmVyX25hbWVzID0ge30gIyB1c2UgYSBkaWN0IHRvIGtlZXAgaW5zZXJ0aW9uIG9yZGVyCiAgICAgICAgc2VsZi5fbGFzdF92YWx1ZXMgPSBbXQogICAgICAgIHNlbGYuX2lnbm9yZSA9IFtdCiAgICAgICAgc2VsZi5fYXV0b19jYWxsZWQgPSBGYWxzZQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAiIiIKICAgICAgICBDaGFuZ2VzIGFueXRoaW5nIG5vdCBkdW5kZXJlZCBvciBub3QgYSBkZXNjcmlwdG9yLgoKICAgICAgICBJZiBhbiBlbnVtIG1lbWJlciBuYW1lIGlzIHVzZWQgdHdpY2UsIGFuIGVycm9yIGlzIHJhaXNlZDsgZHVwbGljYXRlCiAgICAgICAgdmFsdWVzIGFyZSBub3QgY2hlY2tlZCBmb3IuCgogICAgICAgIFNpbmdsZSB1bmRlcnNjb3JlIChzdW5kZXIpIG5hbWVzIGFyZSByZXNlcnZlZC4KICAgICAgICAiIiIKICAgICAgICBpZiBfaXNfaW50ZXJuYWxfY2xhc3Moc2VsZi5fY2xzX25hbWUsIHZhbHVlKToKICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICAgICAgIkluIDMuMTMgY2xhc3NlcyBjcmVhdGVkIGluc2lkZSBhbiBlbnVtIHdpbGwgbm90IGJlY29tZSBhIG1lbWJlci4gICIKICAgICAgICAgICAgICAgICAgICAiVXNlIHRoZSBgbWVtYmVyYCBkZWNvcmF0b3IgdG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvci4iLAogICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgIGlmIF9pc19wcml2YXRlKHNlbGYuX2Nsc19uYW1lLCBrZXkpOgogICAgICAgICAgICAjIGFsc28gZG8gbm90aGluZywgbmFtZSB3aWxsIGJlIGEgbm9ybWFsIGF0dHJpYnV0ZQogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxpZiBfaXNfc3VuZGVyKGtleSk6CiAgICAgICAgICAgIGlmIGtleSBub3QgaW4gKAogICAgICAgICAgICAgICAgICAgICdfb3JkZXJfJywKICAgICAgICAgICAgICAgICAgICAnX2dlbmVyYXRlX25leHRfdmFsdWVfJywgJ19udW1lcmljX3JlcHJfJywgJ19taXNzaW5nXycsICdfaWdub3JlXycsCiAgICAgICAgICAgICAgICAgICAgJ19pdGVyX21lbWJlcl8nLCAnX2l0ZXJfbWVtYmVyX2J5X3ZhbHVlXycsICdfaXRlcl9tZW1iZXJfYnlfZGVmXycsCiAgICAgICAgICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICdfc3VuZGVyXyBuYW1lcywgc3VjaCBhcyAlciwgYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgRW51bSB1c2UnCiAgICAgICAgICAgICAgICAgICAgICAgICUgKGtleSwgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlmIGtleSA9PSAnX2dlbmVyYXRlX25leHRfdmFsdWVfJzoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgbWVtYmVycyBhbHJlYWR5IGRlZmluZWQgYXMgYXV0bygpCiAgICAgICAgICAgICAgICBpZiBzZWxmLl9hdXRvX2NhbGxlZDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIG1lbWJlcnMiKQogICAgICAgICAgICAgICAgX2dudiA9IHZhbHVlLl9fZnVuY19fIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0YXRpY21ldGhvZCkgZWxzZSB2YWx1ZQogICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAnX2dlbmVyYXRlX25leHRfdmFsdWUnLCBfZ252KQogICAgICAgICAgICBlbGlmIGtleSA9PSAnX2lnbm9yZV8nOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJywnLCcgJykuc3BsaXQoKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGxpc3QodmFsdWUpCiAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmUgPSB2YWx1ZQogICAgICAgICAgICAgICAgYWxyZWFkeSA9IHNldCh2YWx1ZSkgJiBzZXQoc2VsZi5fbWVtYmVyX25hbWVzKQogICAgICAgICAgICAgICAgaWYgYWxyZWFkeToKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19pZ25vcmVfIGNhbm5vdCBzcGVjaWZ5IGFscmVhZHkgc2V0IG5hbWVzOiAlcicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGFscmVhZHksICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICBlbGlmIF9pc19kdW5kZXIoa2V5KToKICAgICAgICAgICAgaWYga2V5ID09ICdfX29yZGVyX18nOgogICAgICAgICAgICAgICAga2V5ID0gJ19vcmRlcl8nCiAgICAgICAgZWxpZiBrZXkgaW4gc2VsZi5fbWVtYmVyX25hbWVzOgogICAgICAgICAgICAjIGRlc2NyaXB0b3Igb3ZlcndyaXRpbmcgYW4gZW51bT8KICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBhbHJlYWR5IGRlZmluZWQgYXMgJXInICUgKGtleSwgc2VsZltrZXldKSkKICAgICAgICBlbGlmIGtleSBpbiBzZWxmLl9pZ25vcmU6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIG5vbm1lbWJlcik6CiAgICAgICAgICAgICMgdW53cmFwIHZhbHVlIGhlcmU7IGl0IHdvbid0IGJlIHByb2Nlc3NlZCBieSB0aGUgYmVsb3cgYGVsc2VgCiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWUKICAgICAgICBlbGlmIF9pc19kZXNjcmlwdG9yKHZhbHVlKToKICAgICAgICAgICAgcGFzcwogICAgICAgICMgVE9ETzogdW5jb21tZW50IG5leHQgdGhyZWUgbGluZXMgaW4gMy4xMwogICAgICAgICMgZWxpZiBfaXNfaW50ZXJuYWxfY2xhc3Moc2VsZi5fY2xzX25hbWUsIHZhbHVlKToKICAgICAgICAjICAgICAjIGRvIG5vdGhpbmcsIG5hbWUgd2lsbCBiZSBhIG5vcm1hbCBhdHRyaWJ1dGUKICAgICAgICAjICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYga2V5IGluIHNlbGY6CiAgICAgICAgICAgICAgICAjIGVudW0gb3ZlcndyaXRpbmcgYSBkZXNjcmlwdG9yPwogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBhbHJlYWR5IGRlZmluZWQgYXMgJXInICUgKGtleSwgc2VsZltrZXldKSkKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBtZW1iZXIpOgogICAgICAgICAgICAgICAgIyB1bndyYXAgdmFsdWUgaGVyZSAtLSBpdCB3aWxsIGJlY29tZSBhIG1lbWJlcgogICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZQogICAgICAgICAgICBub25fYXV0b19zdG9yZSA9IFRydWUKICAgICAgICAgICAgc2luZ2xlID0gRmFsc2UKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgYXV0byk6CiAgICAgICAgICAgICAgICBzaW5nbGUgPSBUcnVlCiAgICAgICAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSwgKQogICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyB0dXBsZSBhbmQgYW55KGlzaW5zdGFuY2UodiwgYXV0bykgZm9yIHYgaW4gdmFsdWUpOgogICAgICAgICAgICAgICAgIyBpbnNpc3Qgb24gYW4gYWN0dWFsIHR1cGxlLCBubyBzdWJjbGFzc2VzLCBpbiBrZWVwaW5nIHdpdGggb25seSBzdXBwb3J0aW5nCiAgICAgICAgICAgICAgICAjIHRvcC1sZXZlbCBhdXRvKCkgdXNhZ2UgKG5vdCBjb250YWluZWQgaW4gYW55IG90aGVyIGRhdGEgc3RydWN0dXJlKQogICAgICAgICAgICAgICAgYXV0b192YWx1ZWQgPSBbXQogICAgICAgICAgICAgICAgZm9yIHYgaW4gdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBhdXRvKToKICAgICAgICAgICAgICAgICAgICAgICAgbm9uX2F1dG9fc3RvcmUgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICAgICBpZiB2LnZhbHVlID09IF9hdXRvX251bGw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LnZhbHVlID0gc2VsZi5fZ2VuZXJhdGVfbmV4dF92YWx1ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LCAxLCBsZW4oc2VsZi5fbWVtYmVyX25hbWVzKSwgc2VsZi5fbGFzdF92YWx1ZXNbOl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2F1dG9fY2FsbGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICB2ID0gdi52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sYXN0X3ZhbHVlcy5hcHBlbmQodikKICAgICAgICAgICAgICAgICAgICBhdXRvX3ZhbHVlZC5hcHBlbmQodikKICAgICAgICAgICAgICAgIGlmIHNpbmdsZToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGF1dG9fdmFsdWVkWzBdCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdHVwbGUoYXV0b192YWx1ZWQpCiAgICAgICAgICAgIHNlbGYuX21lbWJlcl9uYW1lc1trZXldID0gTm9uZQogICAgICAgICAgICBpZiBub25fYXV0b19zdG9yZToKICAgICAgICAgICAgICAgIHNlbGYuX2xhc3RfdmFsdWVzLmFwcGVuZCh2YWx1ZSkKICAgICAgICBzdXBlcigpLl9fc2V0aXRlbV9fKGtleSwgdmFsdWUpCgogICAgZGVmIHVwZGF0ZShzZWxmLCBtZW1iZXJzLCAqKm1vcmVfbWVtYmVycyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmb3IgbmFtZSBpbiBtZW1iZXJzLmtleXMoKToKICAgICAgICAgICAgICAgIHNlbGZbbmFtZV0gPSBtZW1iZXJzW25hbWVdCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbWVtYmVyczoKICAgICAgICAgICAgICAgIHNlbGZbbmFtZV0gPSB2YWx1ZQogICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBtb3JlX21lbWJlcnMuaXRlbXMoKToKICAgICAgICAgICAgc2VsZltuYW1lXSA9IHZhbHVlCgoKY2xhc3MgRW51bVR5cGUodHlwZSk6CiAgICAiIiIKICAgIE1ldGFjbGFzcyBmb3IgRW51bQogICAgIiIiCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgY2xzLCBiYXNlcywgKiprd2RzKToKICAgICAgICAjIGNoZWNrIHRoYXQgcHJldmlvdXMgZW51bSBtZW1iZXJzIGRvIG5vdCBleGlzdAogICAgICAgIG1ldGFjbHMuX2NoZWNrX2Zvcl9leGlzdGluZ19tZW1iZXJzXyhjbHMsIGJhc2VzKQogICAgICAgICMgY3JlYXRlIHRoZSBuYW1lc3BhY2UgZGljdAogICAgICAgIGVudW1fZGljdCA9IF9FbnVtRGljdCgpCiAgICAgICAgZW51bV9kaWN0Ll9jbHNfbmFtZSA9IGNscwogICAgICAgICMgaW5oZXJpdCBwcmV2aW91cyBmbGFncyBhbmQgX2dlbmVyYXRlX25leHRfdmFsdWVfIGZ1bmN0aW9uCiAgICAgICAgbWVtYmVyX3R5cGUsIGZpcnN0X2VudW0gPSBtZXRhY2xzLl9nZXRfbWl4aW5zXyhjbHMsIGJhc2VzKQogICAgICAgIGlmIGZpcnN0X2VudW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGVudW1fZGljdFsnX2dlbmVyYXRlX25leHRfdmFsdWVfJ10gPSBnZXRhdHRyKAogICAgICAgICAgICAgICAgICAgIGZpcnN0X2VudW0sICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nLCBOb25lLAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICByZXR1cm4gZW51bV9kaWN0CgogICAgZGVmIF9fbmV3X18obWV0YWNscywgY2xzLCBiYXNlcywgY2xhc3NkaWN0LCAqLCBib3VuZGFyeT1Ob25lLCBfc2ltcGxlPUZhbHNlLCAqKmt3ZHMpOgogICAgICAgICMgYW4gRW51bSBjbGFzcyBpcyBmaW5hbCBvbmNlIGVudW1lcmF0aW9uIGl0ZW1zIGhhdmUgYmVlbiBkZWZpbmVkOyBpdAogICAgICAgICMgY2Fubm90IGJlIG1peGVkIHdpdGggb3RoZXIgdHlwZXMgKGludCwgZmxvYXQsIGV0Yy4pIGlmIGl0IGhhcyBhbgogICAgICAgICMgaW5oZXJpdGVkIF9fbmV3X18gdW5sZXNzIGEgbmV3IF9fbmV3X18gaXMgZGVmaW5lZCAob3IgdGhlIHJlc3VsdGluZwogICAgICAgICMgY2xhc3Mgd2lsbCBmYWlsKS4KICAgICAgICAjCiAgICAgICAgaWYgX3NpbXBsZToKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtZXRhY2xzLCBjbHMsIGJhc2VzLCBjbGFzc2RpY3QsICoqa3dkcykKICAgICAgICAjCiAgICAgICAgIyByZW1vdmUgYW55IGtleXMgbGlzdGVkIGluIF9pZ25vcmVfCiAgICAgICAgY2xhc3NkaWN0LnNldGRlZmF1bHQoJ19pZ25vcmVfJywgW10pLmFwcGVuZCgnX2lnbm9yZV8nKQogICAgICAgIGlnbm9yZSA9IGNsYXNzZGljdFsnX2lnbm9yZV8nXQogICAgICAgIGZvciBrZXkgaW4gaWdub3JlOgogICAgICAgICAgICBjbGFzc2RpY3QucG9wKGtleSwgTm9uZSkKICAgICAgICAjCiAgICAgICAgIyBncmFiIG1lbWJlciBuYW1lcwogICAgICAgIG1lbWJlcl9uYW1lcyA9IGNsYXNzZGljdC5fbWVtYmVyX25hbWVzCiAgICAgICAgIwogICAgICAgICMgY2hlY2sgZm9yIGlsbGVnYWwgZW51bSBuYW1lcyAoYW55IG90aGVycz8pCiAgICAgICAgaW52YWxpZF9uYW1lcyA9IHNldChtZW1iZXJfbmFtZXMpICYgeydtcm8nLCAnJ30KICAgICAgICBpZiBpbnZhbGlkX25hbWVzOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbnZhbGlkIGVudW0gbWVtYmVyIG5hbWUocykgJXMnICAlICgKICAgICAgICAgICAgICAgICAgICAnLCcuam9pbihyZXByKG4pIGZvciBuIGluIGludmFsaWRfbmFtZXMpCiAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAjCiAgICAgICAgIyBhZGp1c3QgdGhlIHN1bmRlcnMKICAgICAgICBfb3JkZXJfID0gY2xhc3NkaWN0LnBvcCgnX29yZGVyXycsIE5vbmUpCiAgICAgICAgIyBjb252ZXJ0IHRvIG5vcm1hbCBkaWN0CiAgICAgICAgY2xhc3NkaWN0ID0gZGljdChjbGFzc2RpY3QuaXRlbXMoKSkKICAgICAgICAjCiAgICAgICAgIyBkYXRhIHR5cGUgb2YgbWVtYmVyIGFuZCB0aGUgY29udHJvbGxpbmcgRW51bSBjbGFzcwogICAgICAgIG1lbWJlcl90eXBlLCBmaXJzdF9lbnVtID0gbWV0YWNscy5fZ2V0X21peGluc18oY2xzLCBiYXNlcykKICAgICAgICBfX25ld19fLCBzYXZlX25ldywgdXNlX2FyZ3MgPSBtZXRhY2xzLl9maW5kX25ld18oCiAgICAgICAgICAgICAgICBjbGFzc2RpY3QsIG1lbWJlcl90eXBlLCBmaXJzdF9lbnVtLAogICAgICAgICAgICAgICAgKQogICAgICAgIGNsYXNzZGljdFsnX25ld19tZW1iZXJfJ10gPSBfX25ld19fCiAgICAgICAgY2xhc3NkaWN0WydfdXNlX2FyZ3NfJ10gPSB1c2VfYXJncwogICAgICAgICMKICAgICAgICAjIGNvbnZlcnQgZnV0dXJlIGVudW0gbWVtYmVycyBpbnRvIHRlbXBvcmFyeSBfcHJvdG9fbWVtYmVycwogICAgICAgICMgYW5kIHJlY29yZCBpbnRlZ2VyIHZhbHVlcyBpbiBjYXNlIHRoaXMgd2lsbCBiZSBhIEZsYWcKICAgICAgICBmbGFnX21hc2sgPSAwCiAgICAgICAgZm9yIG5hbWUgaW4gbWVtYmVyX25hbWVzOgogICAgICAgICAgICB2YWx1ZSA9IGNsYXNzZGljdFtuYW1lXQogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgogICAgICAgICAgICAgICAgZmxhZ19tYXNrIHw9IHZhbHVlCiAgICAgICAgICAgIGNsYXNzZGljdFtuYW1lXSA9IF9wcm90b19tZW1iZXIodmFsdWUpCiAgICAgICAgIwogICAgICAgICMgaG91c2Uta2VlcGluZyBzdHJ1Y3R1cmVzCiAgICAgICAgY2xhc3NkaWN0WydfbWVtYmVyX25hbWVzXyddID0gW10KICAgICAgICBjbGFzc2RpY3RbJ19tZW1iZXJfbWFwXyddID0ge30KICAgICAgICBjbGFzc2RpY3RbJ192YWx1ZTJtZW1iZXJfbWFwXyddID0ge30KICAgICAgICBjbGFzc2RpY3RbJ191bmhhc2hhYmxlX3ZhbHVlc18nXSA9IFtdCiAgICAgICAgY2xhc3NkaWN0WydfbWVtYmVyX3R5cGVfJ10gPSBtZW1iZXJfdHlwZQogICAgICAgICMgbm93IHNldCB0aGUgX19yZXByX18gZm9yIHRoZSB2YWx1ZQogICAgICAgIGNsYXNzZGljdFsnX3ZhbHVlX3JlcHJfJ10gPSBtZXRhY2xzLl9maW5kX2RhdGFfcmVwcl8oY2xzLCBiYXNlcykKICAgICAgICAjCiAgICAgICAgIyBGbGFnIHN0cnVjdHVyZXMgKHdpbGwgYmUgcmVtb3ZlZCBpZiBmaW5hbCBjbGFzcyBpcyBub3QgYSBGbGFnCiAgICAgICAgY2xhc3NkaWN0WydfYm91bmRhcnlfJ10gPSAoCiAgICAgICAgICAgICAgICBib3VuZGFyeQogICAgICAgICAgICAgICAgb3IgZ2V0YXR0cihmaXJzdF9lbnVtLCAnX2JvdW5kYXJ5XycsIE5vbmUpCiAgICAgICAgICAgICAgICApCiAgICAgICAgY2xhc3NkaWN0WydfZmxhZ19tYXNrXyddID0gZmxhZ19tYXNrCiAgICAgICAgY2xhc3NkaWN0WydfYWxsX2JpdHNfJ10gPSAyICoqICgoZmxhZ19tYXNrKS5iaXRfbGVuZ3RoKCkpIC0gMQogICAgICAgIGNsYXNzZGljdFsnX2ludmVydGVkXyddID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgZXhjID0gTm9uZQogICAgICAgICAgICBlbnVtX2NsYXNzID0gc3VwZXIoKS5fX25ld19fKG1ldGFjbHMsIGNscywgYmFzZXMsIGNsYXNzZGljdCwgKiprd2RzKQogICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKICAgICAgICAgICAgIyBhbnkgZXhjZXB0aW9ucyByYWlzZWQgYnkgbWVtYmVyLl9fbmV3X18gd2lsbCBnZXQgY29udmVydGVkIHRvIGEKICAgICAgICAgICAgIyBSdW50aW1lRXJyb3IsIHNvIGdldCB0aGF0IG9yaWdpbmFsIGV4Y2VwdGlvbiBiYWNrIGFuZCByYWlzZSBpdCBpbnN0ZWFkCiAgICAgICAgICAgIGV4YyA9IGUuX19jYXVzZV9fIG9yIGUKICAgICAgICBpZiBleGMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIGV4YwogICAgICAgICMKICAgICAgICAjIHVwZGF0ZSBjbGFzc2RpY3Qgd2l0aCBhbnkgY2hhbmdlcyBtYWRlIGJ5IF9faW5pdF9zdWJjbGFzc19fCiAgICAgICAgY2xhc3NkaWN0LnVwZGF0ZShlbnVtX2NsYXNzLl9fZGljdF9fKQogICAgICAgICMKICAgICAgICAjIGRvdWJsZSBjaGVjayB0aGF0IHJlcHIgYW5kIGZyaWVuZHMgYXJlIG5vdCB0aGUgbWl4aW4ncyBvciB2YXJpb3VzCiAgICAgICAgIyB0aGluZ3MgYnJlYWsgKHN1Y2ggYXMgcGlja2xlKQogICAgICAgICMgaG93ZXZlciwgaWYgdGhlIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSBFbnVtIGl0c2VsZiwgZG9uJ3QgcmVwbGFjZQogICAgICAgICMgaXQKICAgICAgICAjCiAgICAgICAgIyBBbHNvLCBzcGVjaWFsIGhhbmRsaW5nIGZvciBSZXByRW51bQogICAgICAgIGlmIFJlcHJFbnVtIGlzIG5vdCBOb25lIGFuZCBSZXByRW51bSBpbiBiYXNlczoKICAgICAgICAgICAgaWYgbWVtYmVyX3R5cGUgaXMgb2JqZWN0OgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAnUmVwckVudW0gc3ViY2xhc3NlcyBtdXN0IGJlIG1peGVkIHdpdGggYSBkYXRhIHR5cGUgKGkuZS4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgaW50LCBzdHIsIGZsb2F0LCBldGMuKScKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICBpZiAnX19mb3JtYXRfXycgbm90IGluIGNsYXNzZGljdDoKICAgICAgICAgICAgICAgIGVudW1fY2xhc3MuX19mb3JtYXRfXyA9IG1lbWJlcl90eXBlLl9fZm9ybWF0X18KICAgICAgICAgICAgICAgIGNsYXNzZGljdFsnX19mb3JtYXRfXyddID0gZW51bV9jbGFzcy5fX2Zvcm1hdF9fCiAgICAgICAgICAgIGlmICdfX3N0cl9fJyBub3QgaW4gY2xhc3NkaWN0OgogICAgICAgICAgICAgICAgbWV0aG9kID0gbWVtYmVyX3R5cGUuX19zdHJfXwogICAgICAgICAgICAgICAgaWYgbWV0aG9kIGlzIG9iamVjdC5fX3N0cl9fOgogICAgICAgICAgICAgICAgICAgICMgaWYgbWVtYmVyX3R5cGUgZG9lcyBub3QgZGVmaW5lIF9fc3RyX18sIG9iamVjdC5fX3N0cl9fIHdpbGwgdXNlCiAgICAgICAgICAgICAgICAgICAgIyBpdHMgX19yZXByX18gaW5zdGVhZCwgc28gd2UnbGwgYWxzbyB1c2UgaXRzIF9fcmVwcl9fCiAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gbWVtYmVyX3R5cGUuX19yZXByX18KICAgICAgICAgICAgICAgIGVudW1fY2xhc3MuX19zdHJfXyA9IG1ldGhvZAogICAgICAgICAgICAgICAgY2xhc3NkaWN0WydfX3N0cl9fJ10gPSBlbnVtX2NsYXNzLl9fc3RyX18KICAgICAgICBmb3IgbmFtZSBpbiAoJ19fcmVwcl9fJywgJ19fc3RyX18nLCAnX19mb3JtYXRfXycsICdfX3JlZHVjZV9leF9fJyk6CiAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIGNsYXNzZGljdDoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIG1peGluIG92ZXJyaWRlcyBiZWZvcmUgcmVwbGFjaW5nCiAgICAgICAgICAgICAgICBlbnVtX21ldGhvZCA9IGdldGF0dHIoZmlyc3RfZW51bSwgbmFtZSkKICAgICAgICAgICAgICAgIGZvdW5kX21ldGhvZCA9IGdldGF0dHIoZW51bV9jbGFzcywgbmFtZSkKICAgICAgICAgICAgICAgIG9iamVjdF9tZXRob2QgPSBnZXRhdHRyKG9iamVjdCwgbmFtZSkKICAgICAgICAgICAgICAgIGRhdGFfdHlwZV9tZXRob2QgPSBnZXRhdHRyKG1lbWJlcl90eXBlLCBuYW1lKQogICAgICAgICAgICAgICAgaWYgZm91bmRfbWV0aG9kIGluIChkYXRhX3R5cGVfbWV0aG9kLCBvYmplY3RfbWV0aG9kKToKICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKGVudW1fY2xhc3MsIG5hbWUsIGVudW1fbWV0aG9kKQogICAgICAgICMKICAgICAgICAjIGZvciBGbGFnLCBhZGQgX19vcl9fLCBfX2FuZF9fLCBfX3hvcl9fLCBhbmQgX19pbnZlcnRfXwogICAgICAgIGlmIEZsYWcgaXMgbm90IE5vbmUgYW5kIGlzc3ViY2xhc3MoZW51bV9jbGFzcywgRmxhZyk6CiAgICAgICAgICAgIGZvciBuYW1lIGluICgKICAgICAgICAgICAgICAgICAgICAnX19vcl9fJywgJ19fYW5kX18nLCAnX194b3JfXycsCiAgICAgICAgICAgICAgICAgICAgJ19fcm9yX18nLCAnX19yYW5kX18nLCAnX19yeG9yX18nLAogICAgICAgICAgICAgICAgICAgICdfX2ludmVydF9fJwogICAgICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIGNsYXNzZGljdDoKICAgICAgICAgICAgICAgICAgICBlbnVtX21ldGhvZCA9IGdldGF0dHIoRmxhZywgbmFtZSkKICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKGVudW1fY2xhc3MsIG5hbWUsIGVudW1fbWV0aG9kKQogICAgICAgICAgICAgICAgICAgIGNsYXNzZGljdFtuYW1lXSA9IGVudW1fbWV0aG9kCiAgICAgICAgIwogICAgICAgICMgcmVwbGFjZSBhbnkgb3RoZXIgX19uZXdfXyB3aXRoIG91ciBvd24gKGFzIGxvbmcgYXMgRW51bSBpcyBub3QgTm9uZSwKICAgICAgICAjIGFueXdheSkgLS0gYWdhaW4sIHRoaXMgaXMgdG8gc3VwcG9ydCBwaWNrbGUKICAgICAgICBpZiBFbnVtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIGlmIHRoZSB1c2VyIGRlZmluZWQgdGhlaXIgb3duIF9fbmV3X18sIHNhdmUgaXQgYmVmb3JlIGl0IGdldHMKICAgICAgICAgICAgIyBjbG9iYmVyZWQgaW4gY2FzZSB0aGV5IHN1YmNsYXNzIGxhdGVyCiAgICAgICAgICAgIGlmIHNhdmVfbmV3OgogICAgICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19tZW1iZXJfXyA9IF9fbmV3X18KICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19fID0gRW51bS5fX25ld19fCiAgICAgICAgIwogICAgICAgICMgcHkzIHN1cHBvcnQgZm9yIGRlZmluaXRpb24gb3JkZXIgKGhlbHBzIGtlZXAgcHkyL3B5MyBjb2RlIGluIHN5bmMpCiAgICAgICAgIwogICAgICAgICMgX29yZGVyXyBjaGVja2luZyBpcyBzcHJlYWQgb3V0IGludG8gdGhyZWUvZm91ciBzdGVwcwogICAgICAgICMgLSBpZiBlbnVtX2NsYXNzIGlzIGEgRmxhZzoKICAgICAgICAjICAgLSByZW1vdmUgYW55IG5vbi1zaW5nbGUtYml0IGZsYWdzIGZyb20gX29yZGVyXwogICAgICAgICMgLSByZW1vdmUgYW55IGFsaWFzZXMgZnJvbSBfb3JkZXJfCiAgICAgICAgIyAtIGNoZWNrIHRoYXQgX29yZGVyXyBhbmQgX21lbWJlcl9uYW1lc18gbWF0Y2gKICAgICAgICAjCiAgICAgICAgIyBzdGVwIDE6IGVuc3VyZSB3ZSBoYXZlIGEgbGlzdAogICAgICAgIGlmIF9vcmRlcl8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX29yZGVyXywgc3RyKToKICAgICAgICAgICAgICAgIF9vcmRlcl8gPSBfb3JkZXJfLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKICAgICAgICAjCiAgICAgICAgIyByZW1vdmUgRmxhZyBzdHJ1Y3R1cmVzIGlmIGZpbmFsIGNsYXNzIGlzIG5vdCBhIEZsYWcKICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBGbGFnIGlzIE5vbmUgYW5kIGNscyAhPSAnRmxhZycKICAgICAgICAgICAgICAgIG9yIEZsYWcgaXMgbm90IE5vbmUgYW5kIG5vdCBpc3N1YmNsYXNzKGVudW1fY2xhc3MsIEZsYWcpCiAgICAgICAgICAgICk6CiAgICAgICAgICAgIGRlbGF0dHIoZW51bV9jbGFzcywgJ19ib3VuZGFyeV8nKQogICAgICAgICAgICBkZWxhdHRyKGVudW1fY2xhc3MsICdfZmxhZ19tYXNrXycpCiAgICAgICAgICAgIGRlbGF0dHIoZW51bV9jbGFzcywgJ19hbGxfYml0c18nKQogICAgICAgICAgICBkZWxhdHRyKGVudW1fY2xhc3MsICdfaW52ZXJ0ZWRfJykKICAgICAgICBlbGlmIEZsYWcgaXMgbm90IE5vbmUgYW5kIGlzc3ViY2xhc3MoZW51bV9jbGFzcywgRmxhZyk6CiAgICAgICAgICAgICMgZW5zdXJlIF9hbGxfYml0c18gaXMgY29ycmVjdCBhbmQgdGhlcmUgYXJlIG5vIG1pc3NpbmcgZmxhZ3MKICAgICAgICAgICAgc2luZ2xlX2JpdF90b3RhbCA9IDAKICAgICAgICAgICAgbXVsdGlfYml0X3RvdGFsID0gMAogICAgICAgICAgICBmb3IgZmxhZyBpbiBlbnVtX2NsYXNzLl9tZW1iZXJfbWFwXy52YWx1ZXMoKToKICAgICAgICAgICAgICAgIGZsYWdfdmFsdWUgPSBmbGFnLl92YWx1ZV8KICAgICAgICAgICAgICAgIGlmIF9pc19zaW5nbGVfYml0KGZsYWdfdmFsdWUpOgogICAgICAgICAgICAgICAgICAgIHNpbmdsZV9iaXRfdG90YWwgfD0gZmxhZ192YWx1ZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIG11bHRpLWJpdCBmbGFncyBhcmUgY29uc2lkZXJlZCBhbGlhc2VzCiAgICAgICAgICAgICAgICAgICAgbXVsdGlfYml0X3RvdGFsIHw9IGZsYWdfdmFsdWUKICAgICAgICAgICAgZW51bV9jbGFzcy5fZmxhZ19tYXNrXyA9IHNpbmdsZV9iaXRfdG90YWwKICAgICAgICAgICAgIwogICAgICAgICAgICAjIHNldCBjb3JyZWN0IF9faXRlcl9fCiAgICAgICAgICAgIG1lbWJlcl9saXN0ID0gW20uX3ZhbHVlXyBmb3IgbSBpbiBlbnVtX2NsYXNzXQogICAgICAgICAgICBpZiBtZW1iZXJfbGlzdCAhPSBzb3J0ZWQobWVtYmVyX2xpc3QpOgogICAgICAgICAgICAgICAgZW51bV9jbGFzcy5faXRlcl9tZW1iZXJfID0gZW51bV9jbGFzcy5faXRlcl9tZW1iZXJfYnlfZGVmXwogICAgICAgICAgICBpZiBfb3JkZXJfOgogICAgICAgICAgICAgICAgIyBfb3JkZXJfIHN0ZXAgMjogcmVtb3ZlIGFueSBpdGVtcyBmcm9tIF9vcmRlcl8gdGhhdCBhcmUgbm90IHNpbmdsZS1iaXQKICAgICAgICAgICAgICAgIF9vcmRlcl8gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgIG8KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG8gaW4gX29yZGVyXwogICAgICAgICAgICAgICAgICAgICAgICBpZiBvIG5vdCBpbiBlbnVtX2NsYXNzLl9tZW1iZXJfbWFwXyBvciBfaXNfc2luZ2xlX2JpdChlbnVtX2NsYXNzW29dLl92YWx1ZV8pCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAjCiAgICAgICAgaWYgX29yZGVyXzoKICAgICAgICAgICAgIyBfb3JkZXJfIHN0ZXAgMzogcmVtb3ZlIGFsaWFzZXMgZnJvbSBfb3JkZXJfCiAgICAgICAgICAgIF9vcmRlcl8gPSBbCiAgICAgICAgICAgICAgICAgICAgbwogICAgICAgICAgICAgICAgICAgIGZvciBvIGluIF9vcmRlcl8KICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIG8gbm90IGluIGVudW1fY2xhc3MuX21lbWJlcl9tYXBfCiAgICAgICAgICAgICAgICAgICAgICAgIG9yCiAgICAgICAgICAgICAgICAgICAgICAgIChvIGluIGVudW1fY2xhc3MuX21lbWJlcl9tYXBfIGFuZCBvIGluIGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc18pCiAgICAgICAgICAgICAgICAgICAgICAgICldCiAgICAgICAgICAgICMgX29yZGVyXyBzdGVwIDQ6IHZlcmlmeSB0aGF0IF9vcmRlcl8gYW5kIF9tZW1iZXJfbmFtZXNfIG1hdGNoCiAgICAgICAgICAgIGlmIF9vcmRlcl8gIT0gZW51bV9jbGFzcy5fbWVtYmVyX25hbWVzXzoKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfOlxuICAlclxuICAlcicKICAgICAgICAgICAgICAgICAgICAgICAgJSAoZW51bV9jbGFzcy5fbWVtYmVyX25hbWVzXywgX29yZGVyXykKICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4gZW51bV9jbGFzcwoKICAgIGRlZiBfX2Jvb2xfXyhjbHMpOgogICAgICAgICIiIgogICAgICAgIGNsYXNzZXMvdHlwZXMgc2hvdWxkIGFsd2F5cyBiZSBUcnVlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIF9fY2FsbF9fKGNscywgdmFsdWUsIG5hbWVzPU5vbmUsICosIG1vZHVsZT1Ob25lLCBxdWFsbmFtZT1Ob25lLCB0eXBlPU5vbmUsIHN0YXJ0PTEsIGJvdW5kYXJ5PU5vbmUpOgogICAgICAgICIiIgogICAgICAgIEVpdGhlciByZXR1cm5zIGFuIGV4aXN0aW5nIG1lbWJlciwgb3IgY3JlYXRlcyBhIG5ldyBlbnVtIGNsYXNzLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIGJvdGggd2hlbiBhbiBlbnVtIGNsYXNzIGlzIGdpdmVuIGEgdmFsdWUgdG8gbWF0Y2gKICAgICAgICB0byBhbiBlbnVtZXJhdGlvbiBtZW1iZXIgKGkuZS4gQ29sb3IoMykpIGFuZCBmb3IgdGhlIGZ1bmN0aW9uYWwgQVBJCiAgICAgICAgKGkuZS4gQ29sb3IgPSBFbnVtKCdDb2xvcicsIG5hbWVzPSdSRUQgR1JFRU4gQkxVRScpKS4KCiAgICAgICAgV2hlbiB1c2VkIGZvciB0aGUgZnVuY3Rpb25hbCBBUEk6CgogICAgICAgIGB2YWx1ZWAgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgbmV3IGNsYXNzLgoKICAgICAgICBgbmFtZXNgIHNob3VsZCBiZSBlaXRoZXIgYSBzdHJpbmcgb2Ygd2hpdGUtc3BhY2UvY29tbWEgZGVsaW1pdGVkIG5hbWVzCiAgICAgICAgKHZhbHVlcyB3aWxsIHN0YXJ0IGF0IGBzdGFydGApLCBvciBhbiBpdGVyYXRvci9tYXBwaW5nIG9mIG5hbWUsIHZhbHVlIHBhaXJzLgoKICAgICAgICBgbW9kdWxlYCBzaG91bGQgYmUgc2V0IHRvIHRoZSBtb2R1bGUgdGhpcyBjbGFzcyBpcyBiZWluZyBjcmVhdGVkIGluOwogICAgICAgIGlmIGl0IGlzIG5vdCBzZXQsIGFuIGF0dGVtcHQgdG8gZmluZCB0aGF0IG1vZHVsZSB3aWxsIGJlIG1hZGUsIGJ1dCBpZgogICAgICAgIGl0IGZhaWxzIHRoZSBjbGFzcyB3aWxsIG5vdCBiZSBwaWNrbGFibGUuCgogICAgICAgIGBxdWFsbmFtZWAgc2hvdWxkIGJlIHNldCB0byB0aGUgYWN0dWFsIGxvY2F0aW9uIHRoaXMgY2xhc3MgY2FuIGJlIGZvdW5kCiAgICAgICAgYXQgaW4gaXRzIG1vZHVsZTsgYnkgZGVmYXVsdCBpdCBpcyBzZXQgdG8gdGhlIGdsb2JhbCBzY29wZS4gIElmIHRoaXMgaXMKICAgICAgICBub3QgY29ycmVjdCwgdW5waWNrbGluZyB3aWxsIGZhaWwgaW4gc29tZSBjaXJjdW1zdGFuY2VzLgoKICAgICAgICBgdHlwZWAsIGlmIHNldCwgd2lsbCBiZSBtaXhlZCBpbiBhcyB0aGUgZmlyc3QgYmFzZSBjbGFzcy4KICAgICAgICAiIiIKICAgICAgICBpZiBuYW1lcyBpcyBOb25lOiAgIyBzaW1wbGUgdmFsdWUgbG9va3VwCiAgICAgICAgICAgIHJldHVybiBjbHMuX19uZXdfXyhjbHMsIHZhbHVlKQogICAgICAgICMgb3RoZXJ3aXNlLCBmdW5jdGlvbmFsIEFQSTogd2UncmUgY3JlYXRpbmcgYSBuZXcgRW51bSB0eXBlCiAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlXygKICAgICAgICAgICAgICAgIHZhbHVlLAogICAgICAgICAgICAgICAgbmFtZXMsCiAgICAgICAgICAgICAgICBtb2R1bGU9bW9kdWxlLAogICAgICAgICAgICAgICAgcXVhbG5hbWU9cXVhbG5hbWUsCiAgICAgICAgICAgICAgICB0eXBlPXR5cGUsCiAgICAgICAgICAgICAgICBzdGFydD1zdGFydCwKICAgICAgICAgICAgICAgIGJvdW5kYXJ5PWJvdW5kYXJ5LAogICAgICAgICAgICAgICAgKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oY2xzLCBtZW1iZXIpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBUcnVlIGlmIG1lbWJlciBpcyBhIG1lbWJlciBvZiB0aGlzIGVudW0KICAgICAgICByYWlzZXMgVHlwZUVycm9yIGlmIG1lbWJlciBpcyBub3QgYW4gZW51bSBtZW1iZXIKCiAgICAgICAgbm90ZTogaW4gMy4xMiBUeXBlRXJyb3Igd2lsbCBubyBsb25nZXIgYmUgcmFpc2VkLCBhbmQgVHJ1ZSB3aWxsIGFsc28gYmUKICAgICAgICByZXR1cm5lZCBpZiBtZW1iZXIgaXMgdGhlIHZhbHVlIG9mIGEgbWVtYmVyIGluIHRoaXMgZW51bQogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1lbWJlciwgRW51bSk6CiAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgICAgICJpbiAzLjEyIF9fY29udGFpbnNfXyB3aWxsIG5vIGxvbmdlciByYWlzZSBUeXBlRXJyb3IsIGJ1dCB3aWxsIHJldHVybiBUcnVlIG9yXG4iCiAgICAgICAgICAgICAgICAgICAgIkZhbHNlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBhIG1lbWJlciBvciB0aGUgdmFsdWUgb2YgYSBtZW1iZXIiLAogICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMpIGZvciAnaW4nOiAnJXMnIGFuZCAnJXMnIiAlICgKICAgICAgICAgICAgICAgICAgICB0eXBlKG1lbWJlcikuX19xdWFsbmFtZV9fLCBjbHMuX19jbGFzc19fLl9fcXVhbG5hbWVfXykpCiAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2UobWVtYmVyLCBjbHMpIGFuZCBtZW1iZXIuX25hbWVfIGluIGNscy5fbWVtYmVyX21hcF8KCiAgICBkZWYgX19kZWxhdHRyX18oY2xzLCBhdHRyKToKICAgICAgICAjIG5pY2VyIGVycm9yIG1lc3NhZ2Ugd2hlbiBzb21lb25lIHRyaWVzIHRvIGRlbGV0ZSBhbiBhdHRyaWJ1dGUKICAgICAgICAjIChzZWUgaXNzdWUxOTAyNSkuCiAgICAgICAgaWYgYXR0ciBpbiBjbHMuX21lbWJlcl9tYXBfOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXIgY2Fubm90IGRlbGV0ZSBtZW1iZXIgJXIuIiAlIChjbHMuX19uYW1lX18sIGF0dHIpKQogICAgICAgIHN1cGVyKCkuX19kZWxhdHRyX18oYXR0cikKCiAgICBkZWYgX19kaXJfXyhjbHMpOgogICAgICAgIGludGVyZXN0aW5nID0gc2V0KFsKICAgICAgICAgICAgICAgICdfX2NsYXNzX18nLCAnX19jb250YWluc19fJywgJ19fZG9jX18nLCAnX19nZXRpdGVtX18nLAogICAgICAgICAgICAgICAgJ19faXRlcl9fJywgJ19fbGVuX18nLCAnX19tZW1iZXJzX18nLCAnX19tb2R1bGVfXycsCiAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICsgY2xzLl9tZW1iZXJfbmFtZXNfCiAgICAgICAgICAgICAgICApCiAgICAgICAgaWYgY2xzLl9uZXdfbWVtYmVyXyBpcyBub3Qgb2JqZWN0Ll9fbmV3X186CiAgICAgICAgICAgIGludGVyZXN0aW5nLmFkZCgnX19uZXdfXycpCiAgICAgICAgaWYgY2xzLl9faW5pdF9zdWJjbGFzc19fIGlzIG5vdCBvYmplY3QuX19pbml0X3N1YmNsYXNzX186CiAgICAgICAgICAgIGludGVyZXN0aW5nLmFkZCgnX19pbml0X3N1YmNsYXNzX18nKQogICAgICAgIGlmIGNscy5fbWVtYmVyX3R5cGVfIGlzIG9iamVjdDoKICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChpbnRlcmVzdGluZykKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIHJldHVybiB3aGF0ZXZlciBtaXhlZC1pbiBkYXRhIHR5cGUgaGFzCiAgICAgICAgICAgIHJldHVybiBzb3J0ZWQoc2V0KGRpcihjbHMuX21lbWJlcl90eXBlXykpIHwgaW50ZXJlc3RpbmcpCgogICAgZGVmIF9fZ2V0YXR0cl9fKGNscywgbmFtZSk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSBlbnVtIG1lbWJlciBtYXRjaGluZyBgbmFtZWAKCiAgICAgICAgV2UgdXNlIF9fZ2V0YXR0cl9fIGluc3RlYWQgb2YgZGVzY3JpcHRvcnMgb3IgaW5zZXJ0aW5nIGludG8gdGhlIGVudW0KICAgICAgICBjbGFzcycgX19kaWN0X18gaW4gb3JkZXIgdG8gc3VwcG9ydCBgbmFtZWAgYW5kIGB2YWx1ZWAgYmVpbmcgYm90aAogICAgICAgIHByb3BlcnRpZXMgZm9yIGVudW0gbWVtYmVycyAod2hpY2ggbGl2ZSBpbiB0aGUgY2xhc3MnIF9fZGljdF9fKSBhbmQKICAgICAgICBlbnVtIG1lbWJlcnMgdGhlbXNlbHZlcy4KICAgICAgICAiIiIKICAgICAgICBpZiBfaXNfZHVuZGVyKG5hbWUpOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGNscy5fbWVtYmVyX21hcF9bbmFtZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpIGZyb20gTm9uZQoKICAgIGRlZiBfX2dldGl0ZW1fXyhjbHMsIG5hbWUpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0aGUgbWVtYmVyIG1hdGNoaW5nIGBuYW1lYC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gY2xzLl9tZW1iZXJfbWFwX1tuYW1lXQoKICAgIGRlZiBfX2l0ZXJfXyhjbHMpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBtZW1iZXJzIGluIGRlZmluaXRpb24gb3JkZXIuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIChjbHMuX21lbWJlcl9tYXBfW25hbWVdIGZvciBuYW1lIGluIGNscy5fbWVtYmVyX25hbWVzXykKCiAgICBkZWYgX19sZW5fXyhjbHMpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG1lbWJlcnMgKG5vIGFsaWFzZXMpCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGxlbihjbHMuX21lbWJlcl9uYW1lc18pCgogICAgQGJsdG5zLnByb3BlcnR5CiAgICBkZWYgX19tZW1iZXJzX18oY2xzKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm5zIGEgbWFwcGluZyBvZiBtZW1iZXIgbmFtZS0+dmFsdWUuCgogICAgICAgIFRoaXMgbWFwcGluZyBsaXN0cyBhbGwgZW51bSBtZW1iZXJzLCBpbmNsdWRpbmcgYWxpYXNlcy4gTm90ZSB0aGF0IHRoaXMKICAgICAgICBpcyBhIHJlYWQtb25seSB2aWV3IG9mIHRoZSBpbnRlcm5hbCBtYXBwaW5nLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBNYXBwaW5nUHJveHlUeXBlKGNscy5fbWVtYmVyX21hcF8pCgogICAgZGVmIF9fcmVwcl9fKGNscyk6CiAgICAgICAgaWYgRmxhZyBpcyBub3QgTm9uZSBhbmQgaXNzdWJjbGFzcyhjbHMsIEZsYWcpOgogICAgICAgICAgICByZXR1cm4gIjxmbGFnICVyPiIgJSBjbHMuX19uYW1lX18KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gIjxlbnVtICVyPiIgJSBjbHMuX19uYW1lX18KCiAgICBkZWYgX19yZXZlcnNlZF9fKGNscyk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIG1lbWJlcnMgaW4gcmV2ZXJzZSBkZWZpbml0aW9uIG9yZGVyLgogICAgICAgICIiIgogICAgICAgIHJldHVybiAoY2xzLl9tZW1iZXJfbWFwX1tuYW1lXSBmb3IgbmFtZSBpbiByZXZlcnNlZChjbHMuX21lbWJlcl9uYW1lc18pKQoKICAgIGRlZiBfX3NldGF0dHJfXyhjbHMsIG5hbWUsIHZhbHVlKToKICAgICAgICAiIiIKICAgICAgICBCbG9jayBhdHRlbXB0cyB0byByZWFzc2lnbiBFbnVtIG1lbWJlcnMuCgogICAgICAgIEEgc2ltcGxlIGFzc2lnbm1lbnQgdG8gdGhlIGNsYXNzIG5hbWVzcGFjZSBvbmx5IGNoYW5nZXMgb25lIG9mIHRoZQogICAgICAgIHNldmVyYWwgcG9zc2libGUgd2F5cyB0byBnZXQgYW4gRW51bSBtZW1iZXIgZnJvbSB0aGUgRW51bSBjbGFzcywKICAgICAgICByZXN1bHRpbmcgaW4gYW4gaW5jb25zaXN0ZW50IEVudW1lcmF0aW9uLgogICAgICAgICIiIgogICAgICAgIG1lbWJlcl9tYXAgPSBjbHMuX19kaWN0X18uZ2V0KCdfbWVtYmVyX21hcF8nLCB7fSkKICAgICAgICBpZiBuYW1lIGluIG1lbWJlcl9tYXA6CiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdjYW5ub3QgcmVhc3NpZ24gbWVtYmVyICVyJyAlIChuYW1lLCApKQogICAgICAgIHN1cGVyKCkuX19zZXRhdHRyX18obmFtZSwgdmFsdWUpCgogICAgZGVmIF9jcmVhdGVfKGNscywgY2xhc3NfbmFtZSwgbmFtZXMsICosIG1vZHVsZT1Ob25lLCBxdWFsbmFtZT1Ob25lLCB0eXBlPU5vbmUsIHN0YXJ0PTEsIGJvdW5kYXJ5PU5vbmUpOgogICAgICAgICIiIgogICAgICAgIENvbnZlbmllbmNlIG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgRW51bSBjbGFzcy4KCiAgICAgICAgYG5hbWVzYCBjYW4gYmU6CgogICAgICAgICogQSBzdHJpbmcgY29udGFpbmluZyBtZW1iZXIgbmFtZXMsIHNlcGFyYXRlZCBlaXRoZXIgd2l0aCBzcGFjZXMgb3IKICAgICAgICAgIGNvbW1hcy4gIFZhbHVlcyBhcmUgaW5jcmVtZW50ZWQgYnkgMSBmcm9tIGBzdGFydGAuCiAgICAgICAgKiBBbiBpdGVyYWJsZSBvZiBtZW1iZXIgbmFtZXMuICBWYWx1ZXMgYXJlIGluY3JlbWVudGVkIGJ5IDEgZnJvbSBgc3RhcnRgLgogICAgICAgICogQW4gaXRlcmFibGUgb2YgKG1lbWJlciBuYW1lLCB2YWx1ZSkgcGFpcnMuCiAgICAgICAgKiBBIG1hcHBpbmcgb2YgbWVtYmVyIG5hbWUgLT4gdmFsdWUgcGFpcnMuCiAgICAgICAgIiIiCiAgICAgICAgbWV0YWNscyA9IGNscy5fX2NsYXNzX18KICAgICAgICBiYXNlcyA9IChjbHMsICkgaWYgdHlwZSBpcyBOb25lIGVsc2UgKHR5cGUsIGNscykKICAgICAgICBfLCBmaXJzdF9lbnVtID0gY2xzLl9nZXRfbWl4aW5zXyhjbGFzc19uYW1lLCBiYXNlcykKICAgICAgICBjbGFzc2RpY3QgPSBtZXRhY2xzLl9fcHJlcGFyZV9fKGNsYXNzX25hbWUsIGJhc2VzKQoKICAgICAgICAjIHNwZWNpYWwgcHJvY2Vzc2luZyBuZWVkZWQgZm9yIG5hbWVzPwogICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZXMsIHN0cik6CiAgICAgICAgICAgIG5hbWVzID0gbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZXMsICh0dXBsZSwgbGlzdCkpIGFuZCBuYW1lcyBhbmQgaXNpbnN0YW5jZShuYW1lc1swXSwgc3RyKToKICAgICAgICAgICAgb3JpZ2luYWxfbmFtZXMsIG5hbWVzID0gbmFtZXMsIFtdCiAgICAgICAgICAgIGxhc3RfdmFsdWVzID0gW10KICAgICAgICAgICAgZm9yIGNvdW50LCBuYW1lIGluIGVudW1lcmF0ZShvcmlnaW5hbF9uYW1lcyk6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpcnN0X2VudW0uX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXNbOl0pCiAgICAgICAgICAgICAgICBsYXN0X3ZhbHVlcy5hcHBlbmQodmFsdWUpCiAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKCiAgICAgICAgIyBIZXJlLCBuYW1lcyBpcyBlaXRoZXIgYW4gaXRlcmFibGUgb2YgKG5hbWUsIHZhbHVlKSBvciBhIG1hcHBpbmcuCiAgICAgICAgZm9yIGl0ZW0gaW4gbmFtZXM6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwgc3RyKToKICAgICAgICAgICAgICAgIG1lbWJlcl9uYW1lLCBtZW1iZXJfdmFsdWUgPSBpdGVtLCBuYW1lc1tpdGVtXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbWVtYmVyX25hbWUsIG1lbWJlcl92YWx1ZSA9IGl0ZW0KICAgICAgICAgICAgY2xhc3NkaWN0W21lbWJlcl9uYW1lXSA9IG1lbWJlcl92YWx1ZQoKICAgICAgICAjIFRPRE86IHJlcGxhY2UgdGhlIGZyYW1lIGhhY2sgaWYgYSBibGVzc2VkIHdheSB0byBrbm93IHRoZSBjYWxsaW5nCiAgICAgICAgIyBtb2R1bGUgaXMgZXZlciBkZXZlbG9wZWQKICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbW9kdWxlID0gc3lzLl9nZXRmcmFtZSgyKS5mX2dsb2JhbHNbJ19fbmFtZV9fJ10KICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvciwgS2V5RXJyb3IpOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICAgICBfbWFrZV9jbGFzc191bnBpY2tsYWJsZShjbGFzc2RpY3QpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY2xhc3NkaWN0WydfX21vZHVsZV9fJ10gPSBtb2R1bGUKICAgICAgICBpZiBxdWFsbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgY2xhc3NkaWN0WydfX3F1YWxuYW1lX18nXSA9IHF1YWxuYW1lCgogICAgICAgIHJldHVybiBtZXRhY2xzLl9fbmV3X18obWV0YWNscywgY2xhc3NfbmFtZSwgYmFzZXMsIGNsYXNzZGljdCwgYm91bmRhcnk9Ym91bmRhcnkpCgogICAgZGVmIF9jb252ZXJ0XyhjbHMsIG5hbWUsIG1vZHVsZSwgZmlsdGVyLCBzb3VyY2U9Tm9uZSwgKiwgYm91bmRhcnk9Tm9uZSwgYXNfZ2xvYmFsPUZhbHNlKToKICAgICAgICAiIiIKICAgICAgICBDcmVhdGUgYSBuZXcgRW51bSBzdWJjbGFzcyB0aGF0IHJlcGxhY2VzIGEgY29sbGVjdGlvbiBvZiBnbG9iYWwgY29uc3RhbnRzCiAgICAgICAgIiIiCiAgICAgICAgIyBjb252ZXJ0IGFsbCBjb25zdGFudHMgZnJvbSBzb3VyY2UgKG9yIG1vZHVsZSkgdGhhdCBwYXNzIGZpbHRlcigpIHRvCiAgICAgICAgIyBhIG5ldyBFbnVtIGNhbGxlZCBuYW1lLCBhbmQgZXhwb3J0IHRoZSBlbnVtIGFuZCBpdHMgbWVtYmVycyBiYWNrIHRvCiAgICAgICAgIyBtb2R1bGU7CiAgICAgICAgIyBhbHNvLCByZXBsYWNlIHRoZSBfX3JlZHVjZV9leF9fIG1ldGhvZCBzbyB1bnBpY2tsaW5nIHdvcmtzIGluCiAgICAgICAgIyBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMKICAgICAgICBtb2R1bGVfZ2xvYmFscyA9IHN5cy5tb2R1bGVzW21vZHVsZV0uX19kaWN0X18KICAgICAgICBpZiBzb3VyY2U6CiAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5fX2RpY3RfXwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNvdXJjZSA9IG1vZHVsZV9nbG9iYWxzCiAgICAgICAgIyBfdmFsdWUybWVtYmVyX21hcF8gaXMgcG9wdWxhdGVkIGluIHRoZSBzYW1lIG9yZGVyIGV2ZXJ5IHRpbWUKICAgICAgICAjIGZvciBhIGNvbnNpc3RlbnQgcmV2ZXJzZSBtYXBwaW5nIG9mIG51bWJlciB0byBuYW1lIHdoZW4gdGhlcmUKICAgICAgICAjIGFyZSBtdWx0aXBsZSBuYW1lcyBmb3IgdGhlIHNhbWUgbnVtYmVyLgogICAgICAgIG1lbWJlcnMgPSBbCiAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWUpCiAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc291cmNlLml0ZW1zKCkKICAgICAgICAgICAgICAgIGlmIGZpbHRlcihuYW1lKV0KICAgICAgICB0cnk6CiAgICAgICAgICAgICMgc29ydCBieSB2YWx1ZQogICAgICAgICAgICBtZW1iZXJzLnNvcnQoa2V5PWxhbWJkYSB0OiAodFsxXSwgdFswXSkpCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIyB1bmxlc3Mgc29tZSB2YWx1ZXMgYXJlbid0IGNvbXBhcmFibGUsIGluIHdoaWNoIGNhc2Ugc29ydCBieSBuYW1lCiAgICAgICAgICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIHQ6IHRbMF0pCiAgICAgICAgYm9keSA9IHt0WzBdOiB0WzFdIGZvciB0IGluIG1lbWJlcnN9CiAgICAgICAgYm9keVsnX19tb2R1bGVfXyddID0gbW9kdWxlCiAgICAgICAgdG1wX2NscyA9IHR5cGUobmFtZSwgKG9iamVjdCwgKSwgYm9keSkKICAgICAgICBjbHMgPSBfc2ltcGxlX2VudW0oZXR5cGU9Y2xzLCBib3VuZGFyeT1ib3VuZGFyeSBvciBLRUVQKSh0bXBfY2xzKQogICAgICAgIGNscy5fX3JlZHVjZV9leF9fID0gX3JlZHVjZV9leF9ieV9nbG9iYWxfbmFtZQogICAgICAgIGlmIGFzX2dsb2JhbDoKICAgICAgICAgICAgZ2xvYmFsX2VudW0oY2xzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN5cy5tb2R1bGVzW2Nscy5fX21vZHVsZV9fXS5fX2RpY3RfXy51cGRhdGUoY2xzLl9fbWVtYmVyc19fKQogICAgICAgIG1vZHVsZV9nbG9iYWxzW25hbWVdID0gY2xzCiAgICAgICAgcmV0dXJuIGNscwoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9jaGVja19mb3JfZXhpc3RpbmdfbWVtYmVyc18obWNscywgY2xhc3NfbmFtZSwgYmFzZXMpOgogICAgICAgIGZvciBjaGFpbiBpbiBiYXNlczoKICAgICAgICAgICAgZm9yIGJhc2UgaW4gY2hhaW4uX19tcm9fXzoKICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoYmFzZSwgRW51bSkgYW5kIGJhc2UuX21lbWJlcl9uYW1lc186CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxlbnVtICVyPiBjYW5ub3QgZXh0ZW5kICVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2xhc3NfbmFtZSwgYmFzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfZ2V0X21peGluc18obWNscywgY2xhc3NfbmFtZSwgYmFzZXMpOgogICAgICAgICIiIgogICAgICAgIFJldHVybnMgdGhlIHR5cGUgZm9yIGNyZWF0aW5nIGVudW0gbWVtYmVycywgYW5kIHRoZSBmaXJzdCBpbmhlcml0ZWQKICAgICAgICBlbnVtIGNsYXNzLgoKICAgICAgICBiYXNlczogdGhlIHR1cGxlIG9mIGJhc2VzIHRoYXQgd2FzIGdpdmVuIHRvIF9fbmV3X18KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgYmFzZXM6CiAgICAgICAgICAgIHJldHVybiBvYmplY3QsIEVudW0KCiAgICAgICAgbWNscy5fY2hlY2tfZm9yX2V4aXN0aW5nX21lbWJlcnNfKGNsYXNzX25hbWUsIGJhc2VzKQoKICAgICAgICAjIGVuc3VyZSBmaW5hbCBwYXJlbnQgY2xhc3MgaXMgYW4gRW51bSBkZXJpdmF0aXZlLCBmaW5kIGFueSBjb25jcmV0ZQogICAgICAgICMgZGF0YSB0eXBlLCBhbmQgY2hlY2sgdGhhdCBFbnVtIGhhcyBubyBtZW1iZXJzCiAgICAgICAgZmlyc3RfZW51bSA9IGJhc2VzWy0xXQogICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGZpcnN0X2VudW0sIEVudW0pOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5ldyBlbnVtZXJhdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgYXMgIgogICAgICAgICAgICAgICAgICAgICJgRW51bU5hbWUoW21peGluX3R5cGUsIC4uLl0gW2RhdGFfdHlwZSxdIGVudW1fdHlwZSlgIikKICAgICAgICBtZW1iZXJfdHlwZSA9IG1jbHMuX2ZpbmRfZGF0YV90eXBlXyhjbGFzc19uYW1lLCBiYXNlcykgb3Igb2JqZWN0CiAgICAgICAgcmV0dXJuIG1lbWJlcl90eXBlLCBmaXJzdF9lbnVtCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2ZpbmRfZGF0YV9yZXByXyhtY2xzLCBjbGFzc19uYW1lLCBiYXNlcyk6CiAgICAgICAgZm9yIGNoYWluIGluIGJhc2VzOgogICAgICAgICAgICBmb3IgYmFzZSBpbiBjaGFpbi5fX21yb19fOgogICAgICAgICAgICAgICAgaWYgYmFzZSBpcyBvYmplY3Q6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhiYXNlLCBFbnVtKToKICAgICAgICAgICAgICAgICAgICAjIGlmIHdlIGhpdCBhbiBFbnVtLCB1c2UgaXQncyBfdmFsdWVfcmVwcl8KICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZS5fdmFsdWVfcmVwcl8KICAgICAgICAgICAgICAgIGVsaWYgJ19fcmVwcl9fJyBpbiBiYXNlLl9fZGljdF9fOgogICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBvdXIgZGF0YSByZXByCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2UuX19kaWN0X19bJ19fcmVwcl9fJ10KICAgICAgICByZXR1cm4gTm9uZQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9maW5kX2RhdGFfdHlwZV8obWNscywgY2xhc3NfbmFtZSwgYmFzZXMpOgogICAgICAgIGRhdGFfdHlwZXMgPSBzZXQoKQogICAgICAgIGJhc2VfY2hhaW4gPSBzZXQoKQogICAgICAgIGZvciBjaGFpbiBpbiBiYXNlczoKICAgICAgICAgICAgY2FuZGlkYXRlID0gTm9uZQogICAgICAgICAgICBmb3IgYmFzZSBpbiBjaGFpbi5fX21yb19fOgogICAgICAgICAgICAgICAgYmFzZV9jaGFpbi5hZGQoYmFzZSkKICAgICAgICAgICAgICAgIGlmIGJhc2UgaXMgb2JqZWN0OgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBlbGlmIGlzc3ViY2xhc3MoYmFzZSwgRW51bSk6CiAgICAgICAgICAgICAgICAgICAgaWYgYmFzZS5fbWVtYmVyX3R5cGVfIGlzIG5vdCBvYmplY3Q6CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfdHlwZXMuYWRkKGJhc2UuX21lbWJlcl90eXBlXykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGVsaWYgJ19fbmV3X18nIGluIGJhc2UuX19kaWN0X18gb3IgJ19faW5pdF9fJyBpbiBiYXNlLl9fZGljdF9fOgogICAgICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoYmFzZSwgRW51bSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgZGF0YV90eXBlcy5hZGQoY2FuZGlkYXRlIG9yIGJhc2UpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlIG9yIGJhc2UKICAgICAgICBpZiBsZW4oZGF0YV90eXBlcykgPiAxOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IGRhdGEgdHlwZXMgZm9yICVyOiAlcicgJSAoY2xhc3NfbmFtZSwgZGF0YV90eXBlcykpCiAgICAgICAgZWxpZiBkYXRhX3R5cGVzOgogICAgICAgICAgICByZXR1cm4gZGF0YV90eXBlcy5wb3AoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2ZpbmRfbmV3XyhtY2xzLCBjbGFzc2RpY3QsIG1lbWJlcl90eXBlLCBmaXJzdF9lbnVtKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm5zIHRoZSBfX25ld19fIHRvIGJlIHVzZWQgZm9yIGNyZWF0aW5nIHRoZSBlbnVtIG1lbWJlcnMuCgogICAgICAgIGNsYXNzZGljdDogdGhlIGNsYXNzIGRpY3Rpb25hcnkgZ2l2ZW4gdG8gX19uZXdfXwogICAgICAgIG1lbWJlcl90eXBlOiB0aGUgZGF0YSB0eXBlIHdob3NlIF9fbmV3X18gd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQKICAgICAgICBmaXJzdF9lbnVtOiBlbnVtZXJhdGlvbiB0byBjaGVjayBmb3IgYW4gb3ZlcnJpZGluZyBfX25ld19fCiAgICAgICAgIiIiCiAgICAgICAgIyBub3cgZmluZCB0aGUgY29ycmVjdCBfX25ld19fLCBjaGVja2luZyB0byBzZWUgb2Ygb25lIHdhcyBkZWZpbmVkCiAgICAgICAgIyBieSB0aGUgdXNlcjsgYWxzbyBjaGVjayBlYXJsaWVyIGVudW0gY2xhc3NlcyBpbiBjYXNlIGEgX19uZXdfXyB3YXMKICAgICAgICAjIHNhdmVkIGFzIF9fbmV3X21lbWJlcl9fCiAgICAgICAgX19uZXdfXyA9IGNsYXNzZGljdC5nZXQoJ19fbmV3X18nLCBOb25lKQoKICAgICAgICAjIHNob3VsZCBfX25ld19fIGJlIHNhdmVkIGFzIF9fbmV3X21lbWJlcl9fIGxhdGVyPwogICAgICAgIHNhdmVfbmV3ID0gZmlyc3RfZW51bSBpcyBub3QgTm9uZSBhbmQgX19uZXdfXyBpcyBub3QgTm9uZQoKICAgICAgICBpZiBfX25ld19fIGlzIE5vbmU6CiAgICAgICAgICAgICMgY2hlY2sgYWxsIHBvc3NpYmxlcyBmb3IgX19uZXdfbWVtYmVyX18gYmVmb3JlIGZhbGxpbmcgYmFjayB0bwogICAgICAgICAgICAjIF9fbmV3X18KICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ19fbmV3X21lbWJlcl9fJywgJ19fbmV3X18nKToKICAgICAgICAgICAgICAgIGZvciBwb3NzaWJsZSBpbiAobWVtYmVyX3R5cGUsIGZpcnN0X2VudW0pOgogICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGdldGF0dHIocG9zc2libGUsIG1ldGhvZCwgTm9uZSkKICAgICAgICAgICAgICAgICAgICBpZiB0YXJnZXQgbm90IGluIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLl9fbmV3X18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QuX19uZXdfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW0uX19uZXdfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06CiAgICAgICAgICAgICAgICAgICAgICAgIF9fbmV3X18gPSB0YXJnZXQKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGlmIF9fbmV3X18gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIF9fbmV3X18gPSBvYmplY3QuX19uZXdfXwoKICAgICAgICAjIGlmIGEgbm9uLW9iamVjdC5fX25ld19fIGlzIHVzZWQgdGhlbiB3aGF0ZXZlciB2YWx1ZS90dXBsZSB3YXMKICAgICAgICAjIGFzc2lnbmVkIHRvIHRoZSBlbnVtIG1lbWJlciBuYW1lIHdpbGwgYmUgcGFzc2VkIHRvIF9fbmV3X18gYW5kIHRvIHRoZQogICAgICAgICMgbmV3IGVudW0gbWVtYmVyJ3MgX19pbml0X18KICAgICAgICBpZiBmaXJzdF9lbnVtIGlzIE5vbmUgb3IgX19uZXdfXyBpbiAoRW51bS5fX25ld19fLCBvYmplY3QuX19uZXdfXyk6CiAgICAgICAgICAgIHVzZV9hcmdzID0gRmFsc2UKICAgICAgICBlbHNlOgogICAgICAgICAgICB1c2VfYXJncyA9IFRydWUKICAgICAgICByZXR1cm4gX19uZXdfXywgc2F2ZV9uZXcsIHVzZV9hcmdzCkVudW1NZXRhID0gRW51bVR5cGUKCgpjbGFzcyBFbnVtKG1ldGFjbGFzcz1FbnVtVHlwZSk6CiAgICAiIiIKICAgIENyZWF0ZSBhIGNvbGxlY3Rpb24gb2YgbmFtZS92YWx1ZSBwYWlycy4KCiAgICBFeGFtcGxlIGVudW1lcmF0aW9uOgoKICAgID4+PiBjbGFzcyBDb2xvcihFbnVtKToKICAgIC4uLiAgICAgUkVEID0gMQogICAgLi4uICAgICBCTFVFID0gMgogICAgLi4uICAgICBHUkVFTiA9IDMKCiAgICBBY2Nlc3MgdGhlbSBieToKCiAgICAtIGF0dHJpYnV0ZSBhY2Nlc3M6OgoKICAgID4+PiBDb2xvci5SRUQKICAgIDxDb2xvci5SRUQ6IDE+CgogICAgLSB2YWx1ZSBsb29rdXA6CgogICAgPj4+IENvbG9yKDEpCiAgICA8Q29sb3IuUkVEOiAxPgoKICAgIC0gbmFtZSBsb29rdXA6CgogICAgPj4+IENvbG9yWydSRUQnXQogICAgPENvbG9yLlJFRDogMT4KCiAgICBFbnVtZXJhdGlvbnMgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCBrbm93IGhvdyBtYW55IG1lbWJlcnMgdGhleSBoYXZlOgoKICAgID4+PiBsZW4oQ29sb3IpCiAgICAzCgogICAgPj4+IGxpc3QoQ29sb3IpCiAgICBbPENvbG9yLlJFRDogMT4sIDxDb2xvci5CTFVFOiAyPiwgPENvbG9yLkdSRUVOOiAzPl0KCiAgICBNZXRob2RzIGNhbiBiZSBhZGRlZCB0byBlbnVtZXJhdGlvbnMsIGFuZCBtZW1iZXJzIGNhbiBoYXZlIHRoZWlyIG93bgogICAgYXR0cmlidXRlcyAtLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCiAgICAiIiIKCiAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlKToKICAgICAgICAjIGFsbCBlbnVtIGluc3RhbmNlcyBhcmUgYWN0dWFsbHkgY3JlYXRlZCBkdXJpbmcgY2xhc3MgY29uc3RydWN0aW9uCiAgICAgICAgIyB3aXRob3V0IGNhbGxpbmcgdGhpcyBtZXRob2Q7IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgbWV0YWNsYXNzJwogICAgICAgICMgX19jYWxsX18gKGkuZS4gQ29sb3IoMykgKSwgYW5kIGJ5IHBpY2tsZQogICAgICAgIGlmIHR5cGUodmFsdWUpIGlzIGNsczoKICAgICAgICAgICAgIyBGb3IgbG9va3VwcyBsaWtlIENvbG9yKENvbG9yLlJFRCkKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgIyBieS12YWx1ZSBzZWFyY2ggZm9yIGEgbWF0Y2hpbmcgZW51bSBtZW1iZXIKICAgICAgICAjIHNlZSBpZiBpdCdzIGluIHRoZSByZXZlcnNlIG1hcHBpbmcgKGZvciBoYXNoYWJsZSB2YWx1ZXMpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gY2xzLl92YWx1ZTJtZW1iZXJfbWFwX1t2YWx1ZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICMgTm90IGZvdW5kLCBubyBuZWVkIHRvIGRvIGxvbmcgTyhuKSBzZWFyY2gKICAgICAgICAgICAgcGFzcwogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICMgbm90IHRoZXJlLCBub3cgZG8gbG9uZyBzZWFyY2ggLS0gTyhuKSBiZWhhdmlvcgogICAgICAgICAgICBmb3IgbWVtYmVyIGluIGNscy5fbWVtYmVyX21hcF8udmFsdWVzKCk6CiAgICAgICAgICAgICAgICBpZiBtZW1iZXIuX3ZhbHVlXyA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtYmVyCiAgICAgICAgIyBzdGlsbCBub3QgZm91bmQgLS0gdHJ5IF9taXNzaW5nXyBob29rCiAgICAgICAgdHJ5OgogICAgICAgICAgICBleGMgPSBOb25lCiAgICAgICAgICAgIHJlc3VsdCA9IGNscy5fbWlzc2luZ18odmFsdWUpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBleGMgPSBlCiAgICAgICAgICAgIHJlc3VsdCA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBjbHMpOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgICAgICBlbGlmICgKICAgICAgICAgICAgICAgICAgICBGbGFnIGlzIG5vdCBOb25lIGFuZCBpc3N1YmNsYXNzKGNscywgRmxhZykKICAgICAgICAgICAgICAgICAgICBhbmQgY2xzLl9ib3VuZGFyeV8gaXMgRUpFQ1QgYW5kIGlzaW5zdGFuY2UocmVzdWx0LCBpbnQpCiAgICAgICAgICAgICAgICApOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdmVfZXhjID0gVmFsdWVFcnJvcigiJXIgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19xdWFsbmFtZV9fKSkKICAgICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBOb25lIGFuZCBleGMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByYWlzZSB2ZV9leGMKICAgICAgICAgICAgICAgIGVsaWYgZXhjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgZXhjID0gVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yIGluICVzLl9taXNzaW5nXzogcmV0dXJuZWQgJXIgaW5zdGVhZCBvZiBOb25lIG9yIGEgdmFsaWQgbWVtYmVyJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2xzLl9fbmFtZV9fLCByZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGMsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgIGV4Yy5fX2NvbnRleHRfXyA9IHZlX2V4YwogICAgICAgICAgICAgICAgcmFpc2UgZXhjCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIyBlbnN1cmUgYWxsIHZhcmlhYmxlcyB0aGF0IGNvdWxkIGhvbGQgYW4gZXhjZXB0aW9uIGFyZSBkZXN0cm95ZWQKICAgICAgICAgICAgZXhjID0gTm9uZQogICAgICAgICAgICB2ZV9leGMgPSBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgIHBhc3MKCiAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgogICAgICAgICIiIgogICAgICAgIEdlbmVyYXRlIHRoZSBuZXh0IHZhbHVlIHdoZW4gbm90IGdpdmVuLgoKICAgICAgICBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgbWVtYmVyCiAgICAgICAgc3RhcnQ6IHRoZSBpbml0aWFsIHN0YXJ0IHZhbHVlIG9yIE5vbmUKICAgICAgICBjb3VudDogdGhlIG51bWJlciBvZiBleGlzdGluZyBtZW1iZXJzCiAgICAgICAgbGFzdF92YWx1ZXM6IHRoZSBsaXN0IG9mIHZhbHVlcyBhc3NpZ25lZAogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBsYXN0X3ZhbHVlczoKICAgICAgICAgICAgcmV0dXJuIHN0YXJ0CiAgICAgICAgdHJ5OgogICAgICAgICAgICBsYXN0ID0gbGFzdF92YWx1ZXNbLTFdCiAgICAgICAgICAgIGxhc3RfdmFsdWVzLnNvcnQoKQogICAgICAgICAgICBpZiBsYXN0ID09IGxhc3RfdmFsdWVzWy0xXToKICAgICAgICAgICAgICAgICMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIG9sZCBhbmQgbmV3IG1ldGhvZHMKICAgICAgICAgICAgICAgIHJldHVybiBsYXN0ICsgMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyB0cmlnZ2VyIG9sZCBtZXRob2QgKHdpdGggd2FybmluZykKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgICAgICJJbiAzLjEzIHRoZSBkZWZhdWx0IGBhdXRvKClgL2BfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gIHdpbGwgcmVxdWlyZSBhbGwgdmFsdWVzIHRvIGJlIHNvcnRhYmxlIGFuZCBzdXBwb3J0IGFkZGluZyArMVxuIgogICAgICAgICAgICAgICAgICAgICJhbmQgdGhlIHZhbHVlIHJldHVybmVkIHdpbGwgYmUgdGhlIGxhcmdlc3QgdmFsdWUgaW4gdGhlIGVudW0gaW5jcmVtZW50ZWQgYnkgMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MywKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGZvciB2IGluIGxhc3RfdmFsdWVzOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHJldHVybiB2ICsgMQogICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHJldHVybiBzdGFydAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICB2X3JlcHIgPSBzZWxmLl9fY2xhc3NfXy5fdmFsdWVfcmVwcl8gb3IgcmVwcgogICAgICAgIHJldHVybiAiPCVzLiVzOiAlcz4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9uYW1lXywgdl9yZXByKHNlbGYuX3ZhbHVlXykpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICIlcy4lcyIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX25hbWVfLCApCgogICAgZGVmIF9fZGlyX18oc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJucyBhbGwgbWVtYmVycyBhbmQgYWxsIHB1YmxpYyBtZXRob2RzCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fX2NsYXNzX18uX21lbWJlcl90eXBlXyBpcyBvYmplY3Q6CiAgICAgICAgICAgIGludGVyZXN0aW5nID0gc2V0KFsnX19jbGFzc19fJywgJ19fZG9jX18nLCAnX19lcV9fJywgJ19faGFzaF9fJywgJ19fbW9kdWxlX18nLCAnbmFtZScsICd2YWx1ZSddKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGludGVyZXN0aW5nID0gc2V0KG9iamVjdC5fX2Rpcl9fKHNlbGYpKQogICAgICAgIGZvciBuYW1lIGluIGdldGF0dHIoc2VsZiwgJ19fZGljdF9fJywgW10pOgogICAgICAgICAgICBpZiBuYW1lWzBdICE9ICdfJzoKICAgICAgICAgICAgICAgIGludGVyZXN0aW5nLmFkZChuYW1lKQogICAgICAgIGZvciBjbHMgaW4gc2VsZi5fX2NsYXNzX18ubXJvKCk6CiAgICAgICAgICAgIGZvciBuYW1lLCBvYmogaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiBuYW1lWzBdID09ICdfJzoKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHByb3BlcnR5KToKICAgICAgICAgICAgICAgICAgICAjIHRoYXQncyBhbiBlbnVtLnByb3BlcnR5CiAgICAgICAgICAgICAgICAgICAgaWYgb2JqLmZnZXQgaXMgbm90IE5vbmUgb3IgbmFtZSBub3QgaW4gc2VsZi5fbWVtYmVyX21hcF86CiAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZXN0aW5nLmFkZChuYW1lKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBpdCB3YXMgYWRkZWQgYnkgYGRpcihzZWxmKWAKICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJlc3RpbmcuZGlzY2FyZChuYW1lKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGluZy5hZGQobmFtZSkKICAgICAgICBuYW1lcyA9IHNvcnRlZCgKICAgICAgICAgICAgICAgIHNldChbJ19fY2xhc3NfXycsICdfX2RvY19fJywgJ19fZXFfXycsICdfX2hhc2hfXycsICdfX21vZHVsZV9fJ10pCiAgICAgICAgICAgICAgICB8IGludGVyZXN0aW5nCiAgICAgICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIG5hbWVzCgogICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpOgogICAgICAgIHJldHVybiBzdHIuX19mb3JtYXRfXyhzdHIoc2VsZiksIGZvcm1hdF9zcGVjKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9uYW1lXykKCiAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90byk6CiAgICAgICAgcmV0dXJuIGdldGF0dHIsIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fbmFtZV8pCgogICAgIyBlbnVtLnByb3BlcnR5IGlzIHVzZWQgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGBuYW1lYCBhbmQKICAgICMgYHZhbHVlYCBhdHRyaWJ1dGVzIG9mIGVudW0gbWVtYmVycyB3aGlsZSBrZWVwaW5nIHNvbWUgbWVhc3VyZSBvZgogICAgIyBwcm90ZWN0aW9uIGZyb20gbW9kaWZpY2F0aW9uLCB3aGlsZSBzdGlsbCBhbGxvd2luZyBmb3IgYW4gZW51bWVyYXRpb24KICAgICMgdG8gaGF2ZSBtZW1iZXJzIG5hbWVkIGBuYW1lYCBhbmQgYHZhbHVlYC4gIFRoaXMgd29ya3MgYmVjYXVzZSBlbnVtZXJhdGlvbgogICAgIyBtZW1iZXJzIGFyZSBub3Qgc2V0IGRpcmVjdGx5IG9uIHRoZSBlbnVtIGNsYXNzOyB0aGV5IGFyZSBrZXB0IGluIGEKICAgICMgc2VwYXJhdGUgc3RydWN0dXJlLCBfbWVtYmVyX21hcF8sIHdoaWNoIGlzIHdoZXJlIGVudW0ucHJvcGVydHkgbG9va3MgZm9yCiAgICAjIHRoZW0KCiAgICBAcHJvcGVydHkKICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgICIiIlRoZSBuYW1lIG9mIHRoZSBFbnVtIG1lbWJlci4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fbmFtZV8KCiAgICBAcHJvcGVydHkKICAgIGRlZiB2YWx1ZShzZWxmKToKICAgICAgICAiIiJUaGUgdmFsdWUgb2YgdGhlIEVudW0gbWVtYmVyLiIiIgogICAgICAgIHJldHVybiBzZWxmLl92YWx1ZV8KCgpjbGFzcyBSZXByRW51bShFbnVtKToKICAgICIiIgogICAgT25seSBjaGFuZ2VzIHRoZSByZXByKCksIGxlYXZpbmcgc3RyKCkgYW5kIGZvcm1hdCgpIHRvIHRoZSBtaXhlZC1pbiB0eXBlLgogICAgIiIiCgoKY2xhc3MgSW50RW51bShpbnQsIFJlcHJFbnVtKToKICAgICIiIgogICAgRW51bSB3aGVyZSBtZW1iZXJzIGFyZSBhbHNvIChhbmQgbXVzdCBiZSkgaW50cwogICAgIiIiCgoKY2xhc3MgU3RyRW51bShzdHIsIFJlcHJFbnVtKToKICAgICIiIgogICAgRW51bSB3aGVyZSBtZW1iZXJzIGFyZSBhbHNvIChhbmQgbXVzdCBiZSkgc3RyaW5ncwogICAgIiIiCgogICAgZGVmIF9fbmV3X18oY2xzLCAqdmFsdWVzKToKICAgICAgICAidmFsdWVzIG11c3QgYWxyZWFkeSBiZSBvZiB0eXBlIGBzdHJgIgogICAgICAgIGlmIGxlbih2YWx1ZXMpID4gMzoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBhcmd1bWVudHMgZm9yIHN0cigpOiAlcicgJSAodmFsdWVzLCApKQogICAgICAgIGlmIGxlbih2YWx1ZXMpID09IDE6CiAgICAgICAgICAgICMgaXQgbXVzdCBiZSBhIHN0cmluZwogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZXNbMF0sIHN0cik6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVyIGlzIG5vdCBhIHN0cmluZycgJSAodmFsdWVzWzBdLCApKQogICAgICAgIGlmIGxlbih2YWx1ZXMpID49IDI6CiAgICAgICAgICAgICMgY2hlY2sgdGhhdCBlbmNvZGluZyBhcmd1bWVudCBpcyBhIHN0cmluZwogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZXNbMV0sIHN0cik6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAlcicgJSAodmFsdWVzWzFdLCApKQogICAgICAgIGlmIGxlbih2YWx1ZXMpID09IDM6CiAgICAgICAgICAgICMgY2hlY2sgdGhhdCBlcnJvcnMgYXJndW1lbnQgaXMgYSBzdHJpbmcKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWVzWzJdLCBzdHIpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdlcnJvcnMgbXVzdCBiZSBhIHN0cmluZywgbm90ICVyJyAlICh2YWx1ZXNbMl0pKQogICAgICAgIHZhbHVlID0gc3RyKCp2YWx1ZXMpCiAgICAgICAgbWVtYmVyID0gc3RyLl9fbmV3X18oY2xzLCB2YWx1ZSkKICAgICAgICBtZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCiAgICAgICAgcmV0dXJuIG1lbWJlcgoKICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlcyk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSBsb3dlci1jYXNlZCB2ZXJzaW9uIG9mIHRoZSBtZW1iZXIgbmFtZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gbmFtZS5sb3dlcigpCgoKZGVmIF9yZWR1Y2VfZXhfYnlfZ2xvYmFsX25hbWUoc2VsZiwgcHJvdG8pOgogICAgcmV0dXJuIHNlbGYubmFtZQoKY2xhc3MgRmxhZ0JvdW5kYXJ5KFN0ckVudW0pOgogICAgIiIiCiAgICBjb250cm9sIGhvdyBvdXQgb2YgcmFuZ2UgdmFsdWVzIGFyZSBoYW5kbGVkCiAgICAic3RyaWN0IiAtPiBlcnJvciBpcyByYWlzZWQgIFtkZWZhdWx0IGZvciBGbGFnXQogICAgImNvbmZvcm0iIC0+IGV4dHJhIGJpdHMgYXJlIGRpc2NhcmRlZAogICAgImVqZWN0IiAtPiBsb3NlIGZsYWcgc3RhdHVzIFtkZWZhdWx0IGZvciBJbnRGbGFnXQogICAgImtlZXAiIC0+IGtlZXAgZmxhZyBzdGF0dXMgYW5kIGFsbCBiaXRzCiAgICAiIiIKICAgIFNUUklDVCA9IGF1dG8oKQogICAgQ09ORk9STSA9IGF1dG8oKQogICAgRUpFQ1QgPSBhdXRvKCkKICAgIEtFRVAgPSBhdXRvKCkKU1RSSUNULCBDT05GT1JNLCBFSkVDVCwgS0VFUCA9IEZsYWdCb3VuZGFyeQoKCmNsYXNzIEZsYWcoRW51bSwgYm91bmRhcnk9Q09ORk9STSk6CiAgICAiIiIKICAgIFN1cHBvcnQgZm9yIGZsYWdzCiAgICAiIiIKCiAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90byk6CiAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KICAgICAgICB1bmtub3duID0gc2VsZi5fdmFsdWVfICYgfmNscy5fZmxhZ19tYXNrXwogICAgICAgIG1lbWJlcl92YWx1ZSA9IHNlbGYuX3ZhbHVlXyAmIGNscy5fZmxhZ19tYXNrXwogICAgICAgIGlmIHVua25vd24gYW5kIG1lbWJlcl92YWx1ZToKICAgICAgICAgICAgcmV0dXJuIF9vcl8sIChjbHMobWVtYmVyX3ZhbHVlKSwgdW5rbm93bikKICAgICAgICBmb3IgdmFsIGluIF9pdGVyX2JpdHNfbHNiKG1lbWJlcl92YWx1ZSk6CiAgICAgICAgICAgIHJlc3QgPSBtZW1iZXJfdmFsdWUgJiB+dmFsCiAgICAgICAgICAgIGlmIHJlc3Q6CiAgICAgICAgICAgICAgICByZXR1cm4gX29yXywgKGNscyhyZXN0KSwgY2xzLl92YWx1ZTJtZW1iZXJfbWFwXy5nZXQodmFsKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgaWYgc2VsZi5fbmFtZV8gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIGNscywgKHNlbGYuX3ZhbHVlXywpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIsIChjbHMsIHNlbGYuX25hbWVfKQoKICAgIF9udW1lcmljX3JlcHJfID0gcmVwcgoKICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlcyk6CiAgICAgICAgIiIiCiAgICAgICAgR2VuZXJhdGUgdGhlIG5leHQgdmFsdWUgd2hlbiBub3QgZ2l2ZW4uCgogICAgICAgIG5hbWU6IHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIKICAgICAgICBzdGFydDogdGhlIGluaXRpYWwgc3RhcnQgdmFsdWUgb3IgTm9uZQogICAgICAgIGNvdW50OiB0aGUgbnVtYmVyIG9mIGV4aXN0aW5nIG1lbWJlcnMKICAgICAgICBsYXN0X3ZhbHVlczogdGhlIGxhc3QgdmFsdWUgYXNzaWduZWQgb3IgTm9uZQogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBjb3VudDoKICAgICAgICAgICAgcmV0dXJuIHN0YXJ0IGlmIHN0YXJ0IGlzIG5vdCBOb25lIGVsc2UgMQogICAgICAgIGxhc3RfdmFsdWUgPSBtYXgobGFzdF92YWx1ZXMpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBoaWdoX2JpdCA9IF9oaWdoX2JpdChsYXN0X3ZhbHVlKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignaW52YWxpZCBmbGFnIHZhbHVlICVyJyAlIGxhc3RfdmFsdWUpIGZyb20gTm9uZQogICAgICAgIHJldHVybiAyICoqIChoaWdoX2JpdCsxKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9pdGVyX21lbWJlcl9ieV92YWx1ZV8oY2xzLCB2YWx1ZSk6CiAgICAgICAgIiIiCiAgICAgICAgRXh0cmFjdCBhbGwgbWVtYmVycyBmcm9tIHRoZSB2YWx1ZSBpbiBkZWZpbml0aW9uIChpLmUuIGluY3JlYXNpbmcgdmFsdWUpIG9yZGVyLgogICAgICAgICIiIgogICAgICAgIGZvciB2YWwgaW4gX2l0ZXJfYml0c19sc2IodmFsdWUgJiBjbHMuX2ZsYWdfbWFza18pOgogICAgICAgICAgICB5aWVsZCBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfLmdldCh2YWwpCgogICAgX2l0ZXJfbWVtYmVyXyA9IF9pdGVyX21lbWJlcl9ieV92YWx1ZV8KCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfaXRlcl9tZW1iZXJfYnlfZGVmXyhjbHMsIHZhbHVlKToKICAgICAgICAiIiIKICAgICAgICBFeHRyYWN0IGFsbCBtZW1iZXJzIGZyb20gdGhlIHZhbHVlIGluIGRlZmluaXRpb24gb3JkZXIuCiAgICAgICAgIiIiCiAgICAgICAgeWllbGQgZnJvbSBzb3J0ZWQoCiAgICAgICAgICAgICAgICBjbHMuX2l0ZXJfbWVtYmVyX2J5X3ZhbHVlXyh2YWx1ZSksCiAgICAgICAgICAgICAgICBrZXk9bGFtYmRhIG06IG0uX3NvcnRfb3JkZXJfLAogICAgICAgICAgICAgICAgKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKICAgICAgICAiIiIKICAgICAgICBDcmVhdGUgYSBjb21wb3NpdGUgbWVtYmVyIGNvbnRhaW5pbmcgYWxsIGNhbm9uaWNhbCBtZW1iZXJzIHByZXNlbnQgaW4gYHZhbHVlYC4KCiAgICAgICAgSWYgbm9uLW1lbWJlciB2YWx1ZXMgYXJlIHByZXNlbnQsIHJlc3VsdCBkZXBlbmRzIG9uIGBfYm91bmRhcnlfYCBzZXR0aW5nLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICIlciBpcyBub3QgYSB2YWxpZCAlcyIgJSAodmFsdWUsIGNscy5fX3F1YWxuYW1lX18pCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICMgY2hlY2sgYm91bmRhcmllcwogICAgICAgICMgLSB2YWx1ZSBtdXN0IGJlIGluIHJhbmdlIChlLmcuIC0xNiA8LT4gKzE1LCBpLmUuIH4xNSA8LT4gMTUpCiAgICAgICAgIyAtIHZhbHVlIG11c3Qgbm90IGluY2x1ZGUgYW55IHNraXBwZWQgZmxhZ3MgKGUuZy4gaWYgYml0IDIgaXMgbm90CiAgICAgICAgIyAgIGRlZmluZWQsIHRoZW4gMGQxMCBpcyBpbnZhbGlkKQogICAgICAgIGZsYWdfbWFzayA9IGNscy5fZmxhZ19tYXNrXwogICAgICAgIGFsbF9iaXRzID0gY2xzLl9hbGxfYml0c18KICAgICAgICBuZWdfdmFsdWUgPSBOb25lCiAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgbm90IH5hbGxfYml0cyA8PSB2YWx1ZSA8PSBhbGxfYml0cwogICAgICAgICAgICAgICAgb3IgdmFsdWUgJiAoYWxsX2JpdHMgXiBmbGFnX21hc2spCiAgICAgICAgICAgICk6CiAgICAgICAgICAgIGlmIGNscy5fYm91bmRhcnlfIGlzIFNUUklDVDoKICAgICAgICAgICAgICAgIG1heF9iaXRzID0gbWF4KHZhbHVlLmJpdF9sZW5ndGgoKSwgZmxhZ19tYXNrLmJpdF9sZW5ndGgoKSkKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICIlciBpbnZhbGlkIHZhbHVlICVyXG4gICAgZ2l2ZW4gJXNcbiAgYWxsb3dlZCAlcyIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMsIHZhbHVlLCBiaW4odmFsdWUsIG1heF9iaXRzKSwgYmluKGZsYWdfbWFzaywgbWF4X2JpdHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgZWxpZiBjbHMuX2JvdW5kYXJ5XyBpcyBDT05GT1JNOgogICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSAmIGZsYWdfbWFzawogICAgICAgICAgICBlbGlmIGNscy5fYm91bmRhcnlfIGlzIEVKRUNUOgogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgICAgIGVsaWYgY2xzLl9ib3VuZGFyeV8gaXMgS0VFUDoKICAgICAgICAgICAgICAgIGlmIHZhbHVlIDwgMDoKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heChhbGxfYml0cysxLCAyKioodmFsdWUuYml0X2xlbmd0aCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICclciB1bmtub3duIGZsYWcgYm91bmRhcnkgJXInICUgKGNscywgY2xzLl9ib3VuZGFyeV8sICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgIGlmIHZhbHVlIDwgMDoKICAgICAgICAgICAgbmVnX3ZhbHVlID0gdmFsdWUKICAgICAgICAgICAgdmFsdWUgPSBhbGxfYml0cyArIDEgKyB2YWx1ZQogICAgICAgICMgZ2V0IG1lbWJlcnMgYW5kIHVua25vd24KICAgICAgICB1bmtub3duID0gdmFsdWUgJiB+ZmxhZ19tYXNrCiAgICAgICAgbWVtYmVyX3ZhbHVlID0gdmFsdWUgJiBmbGFnX21hc2sKICAgICAgICBpZiB1bmtub3duIGFuZCBjbHMuX2JvdW5kYXJ5XyBpcyBub3QgS0VFUDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAnJXMoJXIpIC0tPiAgdW5rbm93biB2YWx1ZXMgJXIgWyVzXScKICAgICAgICAgICAgICAgICAgICAlIChjbHMuX19uYW1lX18sIHZhbHVlLCB1bmtub3duLCBiaW4odW5rbm93bikpCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICMgbm9ybWFsIEZsYWc/CiAgICAgICAgaWYgY2xzLl9tZW1iZXJfdHlwZV8gaXMgb2JqZWN0OgogICAgICAgICAgICAjIGNvbnN0cnVjdCBhIHNpbmdsZXRvbiBlbnVtIHBzZXVkby1tZW1iZXIKICAgICAgICAgICAgcHNldWRvX21lbWJlciA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICBlbHNlOgogICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gY2xzLl9tZW1iZXJfdHlwZV8uX19uZXdfXyhjbHMsIHZhbHVlKQogICAgICAgIGlmIG5vdCBoYXNhdHRyKHBzZXVkb19tZW1iZXIsICdfdmFsdWVfJyk6CiAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCiAgICAgICAgaWYgbWVtYmVyX3ZhbHVlOgogICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl9uYW1lXyA9ICd8Jy5qb2luKFsKICAgICAgICAgICAgICAgIG0uX25hbWVfIGZvciBtIGluIGNscy5faXRlcl9tZW1iZXJfKG1lbWJlcl92YWx1ZSkKICAgICAgICAgICAgICAgIF0pCiAgICAgICAgICAgIGlmIHVua25vd246CiAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl9uYW1lXyArPSAnfCVzJyAlIGNscy5fbnVtZXJpY19yZXByXyh1bmtub3duKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX25hbWVfID0gTm9uZQogICAgICAgICMgdXNlIHNldGRlZmF1bHQgaW4gY2FzZSBhbm90aGVyIHRocmVhZCBhbHJlYWR5IGNyZWF0ZWQgYSBjb21wb3NpdGUKICAgICAgICAjIHdpdGggdGhpcyB2YWx1ZSwgYnV0IG9ubHkgaWYgYWxsIG1lbWJlcnMgYXJlIGtub3duCiAgICAgICAgIyBub3RlOiB6ZXJvIGlzIGEgc3BlY2lhbCBjYXNlIC0tIGFkZCBpdAogICAgICAgIGlmIG5vdCB1bmtub3duOgogICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gY2xzLl92YWx1ZTJtZW1iZXJfbWFwXy5zZXRkZWZhdWx0KHZhbHVlLCBwc2V1ZG9fbWVtYmVyKQogICAgICAgICAgICBpZiBuZWdfdmFsdWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfW25lZ192YWx1ZV0gPSBwc2V1ZG9fbWVtYmVyCiAgICAgICAgcmV0dXJuIHBzZXVkb19tZW1iZXIKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIG90aGVyKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm5zIFRydWUgaWYgc2VsZiBoYXMgYXQgbGVhc3QgdGhlIHNhbWUgZmxhZ3Mgc2V0IGFzIG90aGVyLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUocykgZm9yICdpbic6ICVyIGFuZCAlciIgJSAoCiAgICAgICAgICAgICAgICAgICAgdHlwZShvdGhlcikuX19xdWFsbmFtZV9fLCBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pKQogICAgICAgIHJldHVybiBvdGhlci5fdmFsdWVfICYgc2VsZi5fdmFsdWVfID09IG90aGVyLl92YWx1ZV8KCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJucyBmbGFncyBpbiBkZWZpbml0aW9uIG9yZGVyLgogICAgICAgICIiIgogICAgICAgIHlpZWxkIGZyb20gc2VsZi5faXRlcl9tZW1iZXJfKHNlbGYuX3ZhbHVlXykKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWVfLmJpdF9jb3VudCgpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGNsc19uYW1lID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX18KICAgICAgICB2X3JlcHIgPSBzZWxmLl9fY2xhc3NfXy5fdmFsdWVfcmVwcl8gb3IgcmVwcgogICAgICAgIGlmIHNlbGYuX25hbWVfIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiAiPCVzOiAlcz4iICUgKGNsc19uYW1lLCB2X3JlcHIoc2VsZi5fdmFsdWVfKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gIjwlcy4lczogJXM+IiAlIChjbHNfbmFtZSwgc2VsZi5fbmFtZV8sIHZfcmVwcihzZWxmLl92YWx1ZV8pKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIGNsc19uYW1lID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX18KICAgICAgICBpZiBzZWxmLl9uYW1lXyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gJyVzKCVyKScgJSAoY2xzX25hbWUsIHNlbGYuX3ZhbHVlXykKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gIiVzLiVzIiAlIChjbHNfbmFtZSwgc2VsZi5fbmFtZV8pCgogICAgZGVmIF9fYm9vbF9fKHNlbGYpOgogICAgICAgIHJldHVybiBib29sKHNlbGYuX3ZhbHVlXykKCiAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CiAgICAgICAgICAgIG90aGVyID0gb3RoZXIuX3ZhbHVlXwogICAgICAgIGVsaWYgc2VsZi5fbWVtYmVyX3R5cGVfIGlzIG5vdCBvYmplY3QgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX21lbWJlcl90eXBlXyk6CiAgICAgICAgICAgIG90aGVyID0gb3RoZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICB2YWx1ZSA9IHNlbGYuX3ZhbHVlXwogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyh2YWx1ZSB8IG90aGVyKQoKICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CiAgICAgICAgICAgIG90aGVyID0gb3RoZXIuX3ZhbHVlXwogICAgICAgIGVsaWYgc2VsZi5fbWVtYmVyX3R5cGVfIGlzIG5vdCBvYmplY3QgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX21lbWJlcl90eXBlXyk6CiAgICAgICAgICAgIG90aGVyID0gb3RoZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICB2YWx1ZSA9IHNlbGYuX3ZhbHVlXwogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyh2YWx1ZSAmIG90aGVyKQoKICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CiAgICAgICAgICAgIG90aGVyID0gb3RoZXIuX3ZhbHVlXwogICAgICAgIGVsaWYgc2VsZi5fbWVtYmVyX3R5cGVfIGlzIG5vdCBvYmplY3QgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX21lbWJlcl90eXBlXyk6CiAgICAgICAgICAgIG90aGVyID0gb3RoZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICB2YWx1ZSA9IHNlbGYuX3ZhbHVlXwogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyh2YWx1ZSBeIG90aGVyKQoKICAgIGRlZiBfX2ludmVydF9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2ludmVydGVkXyBpcyBOb25lOgogICAgICAgICAgICBpZiBzZWxmLl9ib3VuZGFyeV8gaXMgS0VFUDoKICAgICAgICAgICAgICAgICMgdXNlIGFsbCBiaXRzCiAgICAgICAgICAgICAgICBzZWxmLl9pbnZlcnRlZF8gPSBzZWxmLl9fY2xhc3NfXyh+c2VsZi5fdmFsdWVfKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBjYWxjdWxhdGUgZmxhZ3Mgbm90IGluIHRoaXMgbWVtYmVyCiAgICAgICAgICAgICAgICBzZWxmLl9pbnZlcnRlZF8gPSBzZWxmLl9fY2xhc3NfXyhzZWxmLl9mbGFnX21hc2tfIF4gc2VsZi5fdmFsdWVfKQogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuX2ludmVydGVkXywgc2VsZi5fX2NsYXNzX18pOgogICAgICAgICAgICAgICAgc2VsZi5faW52ZXJ0ZWRfLl9pbnZlcnRlZF8gPSBzZWxmCiAgICAgICAgcmV0dXJuIHNlbGYuX2ludmVydGVkXwoKICAgIF9fcmFuZF9fID0gX19hbmRfXwogICAgX19yb3JfXyA9IF9fb3JfXwogICAgX19yeG9yX18gPSBfX3hvcl9fCgoKY2xhc3MgSW50RmxhZyhpbnQsIFJlcHJFbnVtLCBGbGFnLCBib3VuZGFyeT1LRUVQKToKICAgICIiIgogICAgU3VwcG9ydCBmb3IgaW50ZWdlci1iYXNlZCBGbGFncwogICAgIiIiCgoKZGVmIF9oaWdoX2JpdCh2YWx1ZSk6CiAgICAiIiIKICAgIHJldHVybnMgaW5kZXggb2YgaGlnaGVzdCBiaXQsIG9yIC0xIGlmIHZhbHVlIGlzIHplcm8gb3IgbmVnYXRpdmUKICAgICIiIgogICAgcmV0dXJuIHZhbHVlLmJpdF9sZW5ndGgoKSAtIDEKCmRlZiB1bmlxdWUoZW51bWVyYXRpb24pOgogICAgIiIiCiAgICBDbGFzcyBkZWNvcmF0b3IgZm9yIGVudW1lcmF0aW9ucyBlbnN1cmluZyB1bmlxdWUgbWVtYmVyIHZhbHVlcy4KICAgICIiIgogICAgZHVwbGljYXRlcyA9IFtdCiAgICBmb3IgbmFtZSwgbWVtYmVyIGluIGVudW1lcmF0aW9uLl9fbWVtYmVyc19fLml0ZW1zKCk6CiAgICAgICAgaWYgbmFtZSAhPSBtZW1iZXIubmFtZToKICAgICAgICAgICAgZHVwbGljYXRlcy5hcHBlbmQoKG5hbWUsIG1lbWJlci5uYW1lKSkKICAgIGlmIGR1cGxpY2F0ZXM6CiAgICAgICAgYWxpYXNfZGV0YWlscyA9ICcsICcuam9pbigKICAgICAgICAgICAgICAgIFsiJXMgLT4gJXMiICUgKGFsaWFzLCBuYW1lKSBmb3IgKGFsaWFzLCBuYW1lKSBpbiBkdXBsaWNhdGVzXSkKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkdXBsaWNhdGUgdmFsdWVzIGZvdW5kIGluICVyOiAlcycgJQogICAgICAgICAgICAgICAgKGVudW1lcmF0aW9uLCBhbGlhc19kZXRhaWxzKSkKICAgIHJldHVybiBlbnVtZXJhdGlvbgoKZGVmIF9wb3dlcl9vZl90d28odmFsdWUpOgogICAgaWYgdmFsdWUgPCAxOgogICAgICAgIHJldHVybiBGYWxzZQogICAgcmV0dXJuIHZhbHVlID09IDIgKiogX2hpZ2hfYml0KHZhbHVlKQoKZGVmIGdsb2JhbF9lbnVtX3JlcHIoc2VsZik6CiAgICAiIiIKICAgIHVzZSBtb2R1bGUuZW51bV9uYW1lIGluc3RlYWQgb2YgY2xhc3MuZW51bV9uYW1lCgogICAgdGhlIG1vZHVsZSBpcyB0aGUgbGFzdCBtb2R1bGUgaW4gY2FzZSBvZiBhIG11bHRpLW1vZHVsZSBuYW1lCiAgICAiIiIKICAgIG1vZHVsZSA9IHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18uc3BsaXQoJy4nKVstMV0KICAgIHJldHVybiAnJXMuJXMnICUgKG1vZHVsZSwgc2VsZi5fbmFtZV8pCgpkZWYgZ2xvYmFsX2ZsYWdfcmVwcihzZWxmKToKICAgICIiIgogICAgdXNlIG1vZHVsZS5mbGFnX25hbWUgaW5zdGVhZCBvZiBjbGFzcy5mbGFnX25hbWUKCiAgICB0aGUgbW9kdWxlIGlzIHRoZSBsYXN0IG1vZHVsZSBpbiBjYXNlIG9mIGEgbXVsdGktbW9kdWxlIG5hbWUKICAgICIiIgogICAgbW9kdWxlID0gc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXy5zcGxpdCgnLicpWy0xXQogICAgY2xzX25hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogICAgaWYgc2VsZi5fbmFtZV8gaXMgTm9uZToKICAgICAgICByZXR1cm4gIiVzLiVzKCVyKSIgJSAobW9kdWxlLCBjbHNfbmFtZSwgc2VsZi5fdmFsdWVfKQogICAgaWYgX2lzX3NpbmdsZV9iaXQoc2VsZik6CiAgICAgICAgcmV0dXJuICclcy4lcycgJSAobW9kdWxlLCBzZWxmLl9uYW1lXykKICAgIGlmIHNlbGYuX2JvdW5kYXJ5XyBpcyBub3QgRmxhZ0JvdW5kYXJ5LktFRVA6CiAgICAgICAgcmV0dXJuICd8Jy5qb2luKFsnJXMuJXMnICUgKG1vZHVsZSwgbmFtZSkgZm9yIG5hbWUgaW4gc2VsZi5uYW1lLnNwbGl0KCd8JyldKQogICAgZWxzZToKICAgICAgICBuYW1lID0gW10KICAgICAgICBmb3IgbiBpbiBzZWxmLl9uYW1lXy5zcGxpdCgnfCcpOgogICAgICAgICAgICBpZiBuWzBdLmlzZGlnaXQoKToKICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKG4pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBuYW1lLmFwcGVuZCgnJXMuJXMnICUgKG1vZHVsZSwgbikpCiAgICAgICAgcmV0dXJuICd8Jy5qb2luKG5hbWUpCgpkZWYgZ2xvYmFsX3N0cihzZWxmKToKICAgICIiIgogICAgdXNlIGVudW1fbmFtZSBpbnN0ZWFkIG9mIGNsYXNzLmVudW1fbmFtZQogICAgIiIiCiAgICBpZiBzZWxmLl9uYW1lXyBpcyBOb25lOgogICAgICAgIGNsc19uYW1lID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX18KICAgICAgICByZXR1cm4gIiVzKCVyKSIgJSAoY2xzX25hbWUsIHNlbGYuX3ZhbHVlXykKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIHNlbGYuX25hbWVfCgpkZWYgZ2xvYmFsX2VudW0oY2xzLCB1cGRhdGVfc3RyPUZhbHNlKToKICAgICIiIgogICAgZGVjb3JhdG9yIHRoYXQgbWFrZXMgdGhlIHJlcHIoKSBvZiBhbiBlbnVtIG1lbWJlciByZWZlcmVuY2UgaXRzIG1vZHVsZQogICAgaW5zdGVhZCBvZiBpdHMgY2xhc3M7IGFsc28gZXhwb3J0cyBhbGwgbWVtYmVycyB0byB0aGUgZW51bSdzIG1vZHVsZSdzCiAgICBnbG9iYWwgbmFtZXNwYWNlCiAgICAiIiIKICAgIGlmIGlzc3ViY2xhc3MoY2xzLCBGbGFnKToKICAgICAgICBjbHMuX19yZXByX18gPSBnbG9iYWxfZmxhZ19yZXByCiAgICBlbHNlOgogICAgICAgIGNscy5fX3JlcHJfXyA9IGdsb2JhbF9lbnVtX3JlcHIKICAgIGlmIG5vdCBpc3N1YmNsYXNzKGNscywgUmVwckVudW0pIG9yIHVwZGF0ZV9zdHI6CiAgICAgICAgY2xzLl9fc3RyX18gPSBnbG9iYWxfc3RyCiAgICBzeXMubW9kdWxlc1tjbHMuX19tb2R1bGVfX10uX19kaWN0X18udXBkYXRlKGNscy5fX21lbWJlcnNfXykKICAgIHJldHVybiBjbHMKCmRlZiBfc2ltcGxlX2VudW0oZXR5cGU9RW51bSwgKiwgYm91bmRhcnk9Tm9uZSwgdXNlX2FyZ3M9Tm9uZSk6CiAgICAiIiIKICAgIENsYXNzIGRlY29yYXRvciB0aGF0IGNvbnZlcnRzIGEgbm9ybWFsIGNsYXNzIGludG8gYW4gOmNsYXNzOmBFbnVtYC4gIE5vCiAgICBzYWZldHkgY2hlY2tzIGFyZSBkb25lLCBhbmQgc29tZSBhZHZhbmNlZCBiZWhhdmlvciAoc3VjaCBhcwogICAgOmZ1bmM6YF9faW5pdF9zdWJjbGFzc19fYCkgaXMgbm90IGF2YWlsYWJsZS4gIEVudW0gY3JlYXRpb24gY2FuIGJlIGZhc3RlcgogICAgdXNpbmcgOmZ1bmM6YHNpbXBsZV9lbnVtYC4KCiAgICAgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgRW51bSwgX3NpbXBsZV9lbnVtCiAgICAgICAgPj4+IEBfc2ltcGxlX2VudW0oRW51bSkKICAgICAgICAuLi4gY2xhc3MgQ29sb3I6CiAgICAgICAgLi4uICAgICBSRUQgPSBhdXRvKCkKICAgICAgICAuLi4gICAgIEdSRUVOID0gYXV0bygpCiAgICAgICAgLi4uICAgICBCTFVFID0gYXV0bygpCiAgICAgICAgPj4+IENvbG9yCiAgICAgICAgPGVudW0gJ0NvbG9yJz4KICAgICIiIgogICAgZGVmIGNvbnZlcnRfY2xhc3MoY2xzKToKICAgICAgICBub25sb2NhbCB1c2VfYXJncwogICAgICAgIGNsc19uYW1lID0gY2xzLl9fbmFtZV9fCiAgICAgICAgaWYgdXNlX2FyZ3MgaXMgTm9uZToKICAgICAgICAgICAgdXNlX2FyZ3MgPSBldHlwZS5fdXNlX2FyZ3NfCiAgICAgICAgX19uZXdfXyA9IGNscy5fX2RpY3RfXy5nZXQoJ19fbmV3X18nKQogICAgICAgIGlmIF9fbmV3X18gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG5ld19tZW1iZXIgPSBfX25ld19fLl9fZnVuY19fCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbmV3X21lbWJlciA9IGV0eXBlLl9tZW1iZXJfdHlwZV8uX19uZXdfXwogICAgICAgIGF0dHJzID0ge30KICAgICAgICBib2R5ID0ge30KICAgICAgICBpZiBfX25ld19fIGlzIG5vdCBOb25lOgogICAgICAgICAgICBib2R5WydfX25ld19tZW1iZXJfXyddID0gbmV3X21lbWJlcgogICAgICAgIGJvZHlbJ19uZXdfbWVtYmVyXyddID0gbmV3X21lbWJlcgogICAgICAgIGJvZHlbJ191c2VfYXJnc18nXSA9IHVzZV9hcmdzCiAgICAgICAgYm9keVsnX2dlbmVyYXRlX25leHRfdmFsdWVfJ10gPSBnbnYgPSBldHlwZS5fZ2VuZXJhdGVfbmV4dF92YWx1ZV8KICAgICAgICBib2R5WydfbWVtYmVyX25hbWVzXyddID0gbWVtYmVyX25hbWVzID0gW10KICAgICAgICBib2R5WydfbWVtYmVyX21hcF8nXSA9IG1lbWJlcl9tYXAgPSB7fQogICAgICAgIGJvZHlbJ192YWx1ZTJtZW1iZXJfbWFwXyddID0gdmFsdWUybWVtYmVyX21hcCA9IHt9CiAgICAgICAgYm9keVsnX3VuaGFzaGFibGVfdmFsdWVzXyddID0gW10KICAgICAgICBib2R5WydfbWVtYmVyX3R5cGVfJ10gPSBtZW1iZXJfdHlwZSA9IGV0eXBlLl9tZW1iZXJfdHlwZV8KICAgICAgICBib2R5WydfdmFsdWVfcmVwcl8nXSA9IGV0eXBlLl92YWx1ZV9yZXByXwogICAgICAgIGlmIGlzc3ViY2xhc3MoZXR5cGUsIEZsYWcpOgogICAgICAgICAgICBib2R5WydfYm91bmRhcnlfJ10gPSBib3VuZGFyeSBvciBldHlwZS5fYm91bmRhcnlfCiAgICAgICAgICAgIGJvZHlbJ19mbGFnX21hc2tfJ10gPSBOb25lCiAgICAgICAgICAgIGJvZHlbJ19hbGxfYml0c18nXSA9IE5vbmUKICAgICAgICAgICAgYm9keVsnX2ludmVydGVkXyddID0gTm9uZQogICAgICAgICAgICBib2R5WydfX29yX18nXSA9IEZsYWcuX19vcl9fCiAgICAgICAgICAgIGJvZHlbJ19feG9yX18nXSA9IEZsYWcuX194b3JfXwogICAgICAgICAgICBib2R5WydfX2FuZF9fJ10gPSBGbGFnLl9fYW5kX18KICAgICAgICAgICAgYm9keVsnX19yb3JfXyddID0gRmxhZy5fX3Jvcl9fCiAgICAgICAgICAgIGJvZHlbJ19fcnhvcl9fJ10gPSBGbGFnLl9fcnhvcl9fCiAgICAgICAgICAgIGJvZHlbJ19fcmFuZF9fJ10gPSBGbGFnLl9fcmFuZF9fCiAgICAgICAgICAgIGJvZHlbJ19faW52ZXJ0X18nXSA9IEZsYWcuX19pbnZlcnRfXwogICAgICAgIGZvciBuYW1lLCBvYmogaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CiAgICAgICAgICAgIGlmIG5hbWUgaW4gKCdfX2RpY3RfXycsICdfX3dlYWtyZWZfXycpOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaWYgX2lzX2R1bmRlcihuYW1lKSBvciBfaXNfcHJpdmF0ZShjbHNfbmFtZSwgbmFtZSkgb3IgX2lzX3N1bmRlcihuYW1lKSBvciBfaXNfZGVzY3JpcHRvcihvYmopOgogICAgICAgICAgICAgICAgYm9keVtuYW1lXSA9IG9iagogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXR0cnNbbmFtZV0gPSBvYmoKICAgICAgICBpZiBjbHMuX19kaWN0X18uZ2V0KCdfX2RvY19fJykgaXMgTm9uZToKICAgICAgICAgICAgYm9keVsnX19kb2NfXyddID0gJ0FuIGVudW1lcmF0aW9uLicKICAgICAgICAjCiAgICAgICAgIyBkb3VibGUgY2hlY2sgdGhhdCByZXByIGFuZCBmcmllbmRzIGFyZSBub3QgdGhlIG1peGluJ3Mgb3IgdmFyaW91cwogICAgICAgICMgdGhpbmdzIGJyZWFrIChzdWNoIGFzIHBpY2tsZSkKICAgICAgICAjIGhvd2V2ZXIsIGlmIHRoZSBtZXRob2QgaXMgZGVmaW5lZCBpbiB0aGUgRW51bSBpdHNlbGYsIGRvbid0IHJlcGxhY2UKICAgICAgICAjIGl0CiAgICAgICAgZW51bV9jbGFzcyA9IHR5cGUoY2xzX25hbWUsIChldHlwZSwgKSwgYm9keSwgYm91bmRhcnk9Ym91bmRhcnksIF9zaW1wbGU9VHJ1ZSkKICAgICAgICBmb3IgbmFtZSBpbiAoJ19fcmVwcl9fJywgJ19fc3RyX18nLCAnX19mb3JtYXRfXycsICdfX3JlZHVjZV9leF9fJyk6CiAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIGJvZHk6CiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBtaXhpbiBvdmVycmlkZXMgYmVmb3JlIHJlcGxhY2luZwogICAgICAgICAgICAgICAgZW51bV9tZXRob2QgPSBnZXRhdHRyKGV0eXBlLCBuYW1lKQogICAgICAgICAgICAgICAgZm91bmRfbWV0aG9kID0gZ2V0YXR0cihlbnVtX2NsYXNzLCBuYW1lKQogICAgICAgICAgICAgICAgb2JqZWN0X21ldGhvZCA9IGdldGF0dHIob2JqZWN0LCBuYW1lKQogICAgICAgICAgICAgICAgZGF0YV90eXBlX21ldGhvZCA9IGdldGF0dHIobWVtYmVyX3R5cGUsIG5hbWUpCiAgICAgICAgICAgICAgICBpZiBmb3VuZF9tZXRob2QgaW4gKGRhdGFfdHlwZV9tZXRob2QsIG9iamVjdF9tZXRob2QpOgogICAgICAgICAgICAgICAgICAgIHNldGF0dHIoZW51bV9jbGFzcywgbmFtZSwgZW51bV9tZXRob2QpCiAgICAgICAgZ252X2xhc3RfdmFsdWVzID0gW10KICAgICAgICBpZiBpc3N1YmNsYXNzKGVudW1fY2xhc3MsIEZsYWcpOgogICAgICAgICAgICAjIEZsYWcgLyBJbnRGbGFnCiAgICAgICAgICAgIHNpbmdsZV9iaXRzID0gbXVsdGlfYml0cyA9IDAKICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGF0dHJzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBhdXRvKSBhbmQgYXV0by52YWx1ZSBpcyBfYXV0b19udWxsOgogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ252KG5hbWUsIDEsIGxlbihtZW1iZXJfbmFtZXMpLCBnbnZfbGFzdF92YWx1ZXMpCiAgICAgICAgICAgICAgICBpZiB2YWx1ZSBpbiB2YWx1ZTJtZW1iZXJfbWFwOgogICAgICAgICAgICAgICAgICAgICMgYW4gYWxpYXMgdG8gYW4gZXhpc3RpbmcgbWVtYmVyCiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3QgPSBwcm9wZXJ0eSgpCiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3QuX19zZXRfbmFtZV9fKGVudW1fY2xhc3MsIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihlbnVtX2NsYXNzLCBuYW1lLCByZWRpcmVjdCkKICAgICAgICAgICAgICAgICAgICBtZW1iZXJfbWFwW25hbWVdID0gdmFsdWUybWVtYmVyX21hcFt2YWx1ZV0KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIG1lbWJlcgogICAgICAgICAgICAgICAgICAgIGlmIHVzZV9hcmdzOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAodmFsdWUsICkKICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyID0gbmV3X21lbWJlcihlbnVtX2NsYXNzLCAqdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMF0KICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIgPSBuZXdfbWVtYmVyKGVudW1fY2xhc3MpCiAgICAgICAgICAgICAgICAgICAgaWYgX19uZXdfXyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgbWVtYmVyLl9uYW1lXyA9IG5hbWUKICAgICAgICAgICAgICAgICAgICBtZW1iZXIuX19vYmpjbGFzc19fID0gZW51bV9jbGFzcwogICAgICAgICAgICAgICAgICAgIG1lbWJlci5fX2luaXRfXyh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICByZWRpcmVjdCA9IHByb3BlcnR5KCkKICAgICAgICAgICAgICAgICAgICByZWRpcmVjdC5fX3NldF9uYW1lX18oZW51bV9jbGFzcywgbmFtZSkKICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKGVudW1fY2xhc3MsIG5hbWUsIHJlZGlyZWN0KQogICAgICAgICAgICAgICAgICAgIG1lbWJlcl9tYXBbbmFtZV0gPSBtZW1iZXIKICAgICAgICAgICAgICAgICAgICBtZW1iZXIuX3NvcnRfb3JkZXJfID0gbGVuKG1lbWJlcl9uYW1lcykKICAgICAgICAgICAgICAgICAgICB2YWx1ZTJtZW1iZXJfbWFwW3ZhbHVlXSA9IG1lbWJlcgogICAgICAgICAgICAgICAgICAgIGlmIF9pc19zaW5nbGVfYml0KHZhbHVlKToKICAgICAgICAgICAgICAgICAgICAgICAgIyBub3QgYSBtdWx0aS1iaXQgYWxpYXMsIHJlY29yZCBpbiBfbWVtYmVyX25hbWVzXyBhbmQgX2ZsYWdfbWFza18KICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyX25hbWVzLmFwcGVuZChuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVfYml0cyB8PSB2YWx1ZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpX2JpdHMgfD0gdmFsdWUKICAgICAgICAgICAgICAgICAgICBnbnZfbGFzdF92YWx1ZXMuYXBwZW5kKHZhbHVlKQogICAgICAgICAgICBlbnVtX2NsYXNzLl9mbGFnX21hc2tfID0gc2luZ2xlX2JpdHMKICAgICAgICAgICAgZW51bV9jbGFzcy5fYWxsX2JpdHNfID0gMiAqKiAoKHNpbmdsZV9iaXRzfG11bHRpX2JpdHMpLmJpdF9sZW5ndGgoKSkgLSAxCiAgICAgICAgICAgICMgc2V0IGNvcnJlY3QgX19pdGVyX18KICAgICAgICAgICAgbWVtYmVyX2xpc3QgPSBbbS5fdmFsdWVfIGZvciBtIGluIGVudW1fY2xhc3NdCiAgICAgICAgICAgIGlmIG1lbWJlcl9saXN0ICE9IHNvcnRlZChtZW1iZXJfbGlzdCk6CiAgICAgICAgICAgICAgICBlbnVtX2NsYXNzLl9pdGVyX21lbWJlcl8gPSBlbnVtX2NsYXNzLl9pdGVyX21lbWJlcl9ieV9kZWZfCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBFbnVtIC8gSW50RW51bSAvIFN0ckVudW0KICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGF0dHJzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBhdXRvKToKICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS52YWx1ZSBpcyBfYXV0b19udWxsOgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IGdudihuYW1lLCAxLCBsZW4obWVtYmVyX25hbWVzKSwgZ252X2xhc3RfdmFsdWVzKQogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWUKICAgICAgICAgICAgICAgIGlmIHZhbHVlIGluIHZhbHVlMm1lbWJlcl9tYXA6CiAgICAgICAgICAgICAgICAgICAgIyBhbiBhbGlhcyB0byBhbiBleGlzdGluZyBtZW1iZXIKICAgICAgICAgICAgICAgICAgICByZWRpcmVjdCA9IHByb3BlcnR5KCkKICAgICAgICAgICAgICAgICAgICByZWRpcmVjdC5fX3NldF9uYW1lX18oZW51bV9jbGFzcywgbmFtZSkKICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKGVudW1fY2xhc3MsIG5hbWUsIHJlZGlyZWN0KQogICAgICAgICAgICAgICAgICAgIG1lbWJlcl9tYXBbbmFtZV0gPSB2YWx1ZTJtZW1iZXJfbWFwW3ZhbHVlXQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgbWVtYmVyCiAgICAgICAgICAgICAgICAgICAgaWYgdXNlX2FyZ3M6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSwgKQogICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIgPSBuZXdfbWVtYmVyKGVudW1fY2xhc3MsICp2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVswXQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlciA9IG5ld19tZW1iZXIoZW51bV9jbGFzcykKICAgICAgICAgICAgICAgICAgICBpZiBfX25ld19fIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlci5fdmFsdWVfID0gdmFsdWUKICAgICAgICAgICAgICAgICAgICBtZW1iZXIuX25hbWVfID0gbmFtZQogICAgICAgICAgICAgICAgICAgIG1lbWJlci5fX29iamNsYXNzX18gPSBlbnVtX2NsYXNzCiAgICAgICAgICAgICAgICAgICAgbWVtYmVyLl9faW5pdF9fKHZhbHVlKQogICAgICAgICAgICAgICAgICAgIG1lbWJlci5fc29ydF9vcmRlcl8gPSBsZW4obWVtYmVyX25hbWVzKQogICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0ID0gcHJvcGVydHkoKQogICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0Ll9fc2V0X25hbWVfXyhlbnVtX2NsYXNzLCBuYW1lKQogICAgICAgICAgICAgICAgICAgIHNldGF0dHIoZW51bV9jbGFzcywgbmFtZSwgcmVkaXJlY3QpCiAgICAgICAgICAgICAgICAgICAgbWVtYmVyX21hcFtuYW1lXSA9IG1lbWJlcgogICAgICAgICAgICAgICAgICAgIHZhbHVlMm1lbWJlcl9tYXBbdmFsdWVdID0gbWVtYmVyCiAgICAgICAgICAgICAgICAgICAgbWVtYmVyX25hbWVzLmFwcGVuZChuYW1lKQogICAgICAgICAgICAgICAgICAgIGdudl9sYXN0X3ZhbHVlcy5hcHBlbmQodmFsdWUpCiAgICAgICAgaWYgJ19fbmV3X18nIGluIGJvZHk6CiAgICAgICAgICAgIGVudW1fY2xhc3MuX19uZXdfbWVtYmVyX18gPSBlbnVtX2NsYXNzLl9fbmV3X18KICAgICAgICBlbnVtX2NsYXNzLl9fbmV3X18gPSBFbnVtLl9fbmV3X18KICAgICAgICByZXR1cm4gZW51bV9jbGFzcwogICAgcmV0dXJuIGNvbnZlcnRfY2xhc3MKCkBfc2ltcGxlX2VudW0oU3RyRW51bSkKY2xhc3MgRW51bUNoZWNrOgogICAgIiIiCiAgICB2YXJpb3VzIGNvbmRpdGlvbnMgdG8gY2hlY2sgYW4gZW51bWVyYXRpb24gZm9yCiAgICAiIiIKICAgIENPTlRJTlVPVVMgPSAibm8gc2tpcHBlZCBpbnRlZ2VyIHZhbHVlcyIKICAgIE5BTUVEX0ZMQUdTID0gIm11bHRpLWZsYWcgYWxpYXNlcyBtYXkgbm90IGNvbnRhaW4gdW5uYW1lZCBmbGFncyIKICAgIFVOSVFVRSA9ICJvbmUgbmFtZSBwZXIgdmFsdWUiCkNPTlRJTlVPVVMsIE5BTUVEX0ZMQUdTLCBVTklRVUUgPSBFbnVtQ2hlY2sKCgpjbGFzcyB2ZXJpZnk6CiAgICAiIiIKICAgIENoZWNrIGFuIGVudW1lcmF0aW9uIGZvciB2YXJpb3VzIGNvbnN0cmFpbnRzLiAoc2VlIEVudW1DaGVjaykKICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsICpjaGVja3MpOgogICAgICAgIHNlbGYuY2hlY2tzID0gY2hlY2tzCiAgICBkZWYgX19jYWxsX18oc2VsZiwgZW51bWVyYXRpb24pOgogICAgICAgIGNoZWNrcyA9IHNlbGYuY2hlY2tzCiAgICAgICAgY2xzX25hbWUgPSBlbnVtZXJhdGlvbi5fX25hbWVfXwogICAgICAgIGlmIEZsYWcgaXMgbm90IE5vbmUgYW5kIGlzc3ViY2xhc3MoZW51bWVyYXRpb24sIEZsYWcpOgogICAgICAgICAgICBlbnVtX3R5cGUgPSAnZmxhZycKICAgICAgICBlbGlmIGlzc3ViY2xhc3MoZW51bWVyYXRpb24sIEVudW0pOgogICAgICAgICAgICBlbnVtX3R5cGUgPSAnZW51bScKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRoZSAndmVyaWZ5JyBkZWNvcmF0b3Igb25seSB3b3JrcyB3aXRoIEVudW0gYW5kIEZsYWciKQogICAgICAgIGZvciBjaGVjayBpbiBjaGVja3M6CiAgICAgICAgICAgIGlmIGNoZWNrIGlzIFVOSVFVRToKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZSBuYW1lcwogICAgICAgICAgICAgICAgZHVwbGljYXRlcyA9IFtdCiAgICAgICAgICAgICAgICBmb3IgbmFtZSwgbWVtYmVyIGluIGVudW1lcmF0aW9uLl9fbWVtYmVyc19fLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSAhPSBtZW1iZXIubmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlcy5hcHBlbmQoKG5hbWUsIG1lbWJlci5uYW1lKSkKICAgICAgICAgICAgICAgIGlmIGR1cGxpY2F0ZXM6CiAgICAgICAgICAgICAgICAgICAgYWxpYXNfZGV0YWlscyA9ICcsICcuam9pbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiJXMgLT4gJXMiICUgKGFsaWFzLCBuYW1lKSBmb3IgKGFsaWFzLCBuYW1lKSBpbiBkdXBsaWNhdGVzXSkKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdhbGlhc2VzIGZvdW5kIGluICVyOiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVudW1lcmF0aW9uLCBhbGlhc19kZXRhaWxzKSkKICAgICAgICAgICAgZWxpZiBjaGVjayBpcyBDT05USU5VT1VTOgogICAgICAgICAgICAgICAgdmFsdWVzID0gc2V0KGUudmFsdWUgZm9yIGUgaW4gZW51bWVyYXRpb24pCiAgICAgICAgICAgICAgICBpZiBsZW4odmFsdWVzKSA8IDI6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGxvdywgaGlnaCA9IG1pbih2YWx1ZXMpLCBtYXgodmFsdWVzKQogICAgICAgICAgICAgICAgbWlzc2luZyA9IFtdCiAgICAgICAgICAgICAgICBpZiBlbnVtX3R5cGUgPT0gJ2ZsYWcnOgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIHBvd2VycyBvZiB0d28KICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShfaGlnaF9iaXQobG93KSsxLCBfaGlnaF9iaXQoaGlnaCkpOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAyKippIG5vdCBpbiB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgyKippKQogICAgICAgICAgICAgICAgZWxpZiBlbnVtX3R5cGUgPT0gJ2VudW0nOgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIHBvd2VycyBvZiBvbmUKICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsb3crMSwgaGlnaCk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGkgbm90IGluIHZhbHVlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKGkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigndmVyaWZ5OiB1bmtub3duIHR5cGUgJXInICUgZW51bV90eXBlKQogICAgICAgICAgICAgICAgaWYgbWlzc2luZzoKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCgnaW52YWxpZCAlcyAlcjogbWlzc2luZyB2YWx1ZXMgJXMnICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bV90eXBlLCBjbHNfbmFtZSwgJywgJy5qb2luKChzdHIobSkgZm9yIG0gaW4gbWlzc2luZykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKVs6MjU2XSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGltaXQgbWF4IGxlbmd0aCB0byBwcm90ZWN0IGFnYWluc3QgRE9TIGF0dGFja3MKICAgICAgICAgICAgZWxpZiBjaGVjayBpcyBOQU1FRF9GTEFHUzoKICAgICAgICAgICAgICAgICMgZXhhbWluZSBlYWNoIGFsaWFzIGFuZCBjaGVjayBmb3IgdW5uYW1lZCBmbGFncwogICAgICAgICAgICAgICAgbWVtYmVyX25hbWVzID0gZW51bWVyYXRpb24uX21lbWJlcl9uYW1lc18KICAgICAgICAgICAgICAgIG1lbWJlcl92YWx1ZXMgPSBbbS52YWx1ZSBmb3IgbSBpbiBlbnVtZXJhdGlvbl0KICAgICAgICAgICAgICAgIG1pc3NpbmdfbmFtZXMgPSBbXQogICAgICAgICAgICAgICAgbWlzc2luZ192YWx1ZSA9IDAKICAgICAgICAgICAgICAgIGZvciBuYW1lLCBhbGlhcyBpbiBlbnVtZXJhdGlvbi5fbWVtYmVyX21hcF8uaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIGluIG1lbWJlcl9uYW1lczoKICAgICAgICAgICAgICAgICAgICAgICAgIyBub3QgYW4gYWxpYXMKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBpZiBhbGlhcy52YWx1ZSA8IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICMgbmVnYXRpdmUgbnVtYmVycyBhcmUgbm90IGNoZWNrZWQKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBsaXN0KF9pdGVyX2JpdHNfbHNiKGFsaWFzLnZhbHVlKSkKICAgICAgICAgICAgICAgICAgICBtaXNzZWQgPSBbdiBmb3IgdiBpbiB2YWx1ZXMgaWYgdiBub3QgaW4gbWVtYmVyX3ZhbHVlc10KICAgICAgICAgICAgICAgICAgICBpZiBtaXNzZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmdfbmFtZXMuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmdfdmFsdWUgfD0gcmVkdWNlKF9vcl8sIG1pc3NlZCkKICAgICAgICAgICAgICAgIGlmIG1pc3NpbmdfbmFtZXM6CiAgICAgICAgICAgICAgICAgICAgaWYgbGVuKG1pc3NpbmdfbmFtZXMpID09IDE6CiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzID0gJ2FsaWFzICVzIGlzIG1pc3NpbmcnICUgbWlzc2luZ19uYW1lc1swXQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzID0gJ2FsaWFzZXMgJXMgYW5kICVzIGFyZSBtaXNzaW5nJyAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4obWlzc2luZ19uYW1lc1s6LTFdKSwgbWlzc2luZ19uYW1lc1stMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgaWYgX2lzX3NpbmdsZV9iaXQobWlzc2luZ192YWx1ZSk6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJ3ZhbHVlIDB4JXgnICUgbWlzc2luZ192YWx1ZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJ2NvbWJpbmVkIHZhbHVlcyBvZiAweCV4JyAlIG1pc3NpbmdfdmFsdWUKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgRmxhZyAlcjogJXMgJXMgW3VzZSBlbnVtLnNob3dfZmxhZ192YWx1ZXModmFsdWUpIGZvciBkZXRhaWxzXScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNsc19uYW1lLCBhbGlhcywgdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIGVudW1lcmF0aW9uCgpkZWYgX3Rlc3Rfc2ltcGxlX2VudW0oY2hlY2tlZF9lbnVtLCBzaW1wbGVfZW51bSk6CiAgICAiIiIKICAgIEEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0IGFuIGVudW0gY3JlYXRlZCB3aXRoIDpmdW5jOmBfc2ltcGxlX2VudW1gCiAgICBhZ2FpbnN0IHRoZSB2ZXJzaW9uIGNyZWF0ZWQgYnkgc3ViY2xhc3NpbmcgOmNsYXNzOmBFbnVtYDo6CgogICAgICAgID4+PiBmcm9tIGVudW0gaW1wb3J0IEVudW0sIF9zaW1wbGVfZW51bSwgX3Rlc3Rfc2ltcGxlX2VudW0KICAgICAgICA+Pj4gQF9zaW1wbGVfZW51bShFbnVtKQogICAgICAgIC4uLiBjbGFzcyBDb2xvcjoKICAgICAgICAuLi4gICAgIFJFRCA9IGF1dG8oKQogICAgICAgIC4uLiAgICAgR1JFRU4gPSBhdXRvKCkKICAgICAgICAuLi4gICAgIEJMVUUgPSBhdXRvKCkKICAgICAgICA+Pj4gY2xhc3MgQ2hlY2tlZENvbG9yKEVudW0pOgogICAgICAgIC4uLiAgICAgUkVEID0gYXV0bygpCiAgICAgICAgLi4uICAgICBHUkVFTiA9IGF1dG8oKQogICAgICAgIC4uLiAgICAgQkxVRSA9IGF1dG8oKQogICAgICAgID4+PiBfdGVzdF9zaW1wbGVfZW51bShDaGVja2VkQ29sb3IsIENvbG9yKQoKICAgIElmIGRpZmZlcmVuY2VzIGFyZSBmb3VuZCwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KICAgICIiIgogICAgZmFpbGVkID0gW10KICAgIGlmIGNoZWNrZWRfZW51bS5fX2RpY3RfXyAhPSBzaW1wbGVfZW51bS5fX2RpY3RfXzoKICAgICAgICBjaGVja2VkX2RpY3QgPSBjaGVja2VkX2VudW0uX19kaWN0X18KICAgICAgICBjaGVja2VkX2tleXMgPSBsaXN0KGNoZWNrZWRfZGljdC5rZXlzKCkpCiAgICAgICAgc2ltcGxlX2RpY3QgPSBzaW1wbGVfZW51bS5fX2RpY3RfXwogICAgICAgIHNpbXBsZV9rZXlzID0gbGlzdChzaW1wbGVfZGljdC5rZXlzKCkpCiAgICAgICAgbWVtYmVyX25hbWVzID0gc2V0KAogICAgICAgICAgICAgICAgbGlzdChjaGVja2VkX2VudW0uX21lbWJlcl9tYXBfLmtleXMoKSkKICAgICAgICAgICAgICAgICsgbGlzdChzaW1wbGVfZW51bS5fbWVtYmVyX21hcF8ua2V5cygpKQogICAgICAgICAgICAgICAgKQogICAgICAgIGZvciBrZXkgaW4gc2V0KGNoZWNrZWRfa2V5cyArIHNpbXBsZV9rZXlzKToKICAgICAgICAgICAgaWYga2V5IGluICgnX19tb2R1bGVfXycsICdfbWVtYmVyX21hcF8nLCAnX3ZhbHVlMm1lbWJlcl9tYXBfJywgJ19fZG9jX18nKToKICAgICAgICAgICAgICAgICMga2V5cyBrbm93biB0byBiZSBkaWZmZXJlbnQsIG9yIHZlcnkgbG9uZwogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZWxpZiBrZXkgaW4gbWVtYmVyX25hbWVzOgogICAgICAgICAgICAgICAgIyBtZW1iZXJzIGFyZSBjaGVja2VkIGJlbG93CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbGlmIGtleSBub3QgaW4gc2ltcGxlX2tleXM6CiAgICAgICAgICAgICAgICBmYWlsZWQuYXBwZW5kKCJtaXNzaW5nIGtleTogJXIiICUgKGtleSwgKSkKICAgICAgICAgICAgZWxpZiBrZXkgbm90IGluIGNoZWNrZWRfa2V5czoKICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQoImV4dHJhIGtleTogICAlciIgJSAoa2V5LCApKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgY2hlY2tlZF92YWx1ZSA9IGNoZWNrZWRfZGljdFtrZXldCiAgICAgICAgICAgICAgICBzaW1wbGVfdmFsdWUgPSBzaW1wbGVfZGljdFtrZXldCiAgICAgICAgICAgICAgICBpZiBjYWxsYWJsZShjaGVja2VkX3ZhbHVlKSBvciBpc2luc3RhbmNlKGNoZWNrZWRfdmFsdWUsIGJsdG5zLnByb3BlcnR5KToKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgaWYga2V5ID09ICdfX2RvY19fJzoKICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSBhbGwgc3BhY2VzL3RhYnMKICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2NoZWNrZWRfdmFsdWUgPSBjaGVja2VkX3ZhbHVlLnJlcGxhY2UoJyAnLCcnKS5yZXBsYWNlKCdcdCcsJycpCiAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9zaW1wbGVfdmFsdWUgPSBzaW1wbGVfdmFsdWUucmVwbGFjZSgnICcsJycpLnJlcGxhY2UoJ1x0JywnJykKICAgICAgICAgICAgICAgICAgICBpZiBjb21wcmVzc2VkX2NoZWNrZWRfdmFsdWUgIT0gY29tcHJlc3NlZF9zaW1wbGVfdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQoIiVyOlxuICAgICAgICAgJXNcbiAgICAgICAgICVzIiAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrZWQgLT4gJXIiICUgKGNoZWNrZWRfdmFsdWUsICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpbXBsZSAgLT4gJXIiICUgKHNpbXBsZV92YWx1ZSwgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgZWxpZiBjaGVja2VkX3ZhbHVlICE9IHNpbXBsZV92YWx1ZToKICAgICAgICAgICAgICAgICAgICBmYWlsZWQuYXBwZW5kKCIlcjpcbiAgICAgICAgICVzXG4gICAgICAgICAlcyIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hlY2tlZCAtPiAlciIgJSAoY2hlY2tlZF92YWx1ZSwgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaW1wbGUgIC0+ICVyIiAlIChzaW1wbGVfdmFsdWUsICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgIGZhaWxlZC5zb3J0KCkKICAgICAgICBmb3IgbmFtZSBpbiBtZW1iZXJfbmFtZXM6CiAgICAgICAgICAgIGZhaWxlZF9tZW1iZXIgPSBbXQogICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzaW1wbGVfa2V5czoKICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQoJ21pc3NpbmcgbWVtYmVyIGZyb20gc2ltcGxlIGVudW06ICVyJyAlIG5hbWUpCiAgICAgICAgICAgIGVsaWYgbmFtZSBub3QgaW4gY2hlY2tlZF9rZXlzOgogICAgICAgICAgICAgICAgZmFpbGVkLmFwcGVuZCgnZXh0cmEgbWVtYmVyIGluIHNpbXBsZSBlbnVtOiAlcicgJSBuYW1lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgY2hlY2tlZF9tZW1iZXJfZGljdCA9IGNoZWNrZWRfZW51bVtuYW1lXS5fX2RpY3RfXwogICAgICAgICAgICAgICAgY2hlY2tlZF9tZW1iZXJfa2V5cyA9IGxpc3QoY2hlY2tlZF9tZW1iZXJfZGljdC5rZXlzKCkpCiAgICAgICAgICAgICAgICBzaW1wbGVfbWVtYmVyX2RpY3QgPSBzaW1wbGVfZW51bVtuYW1lXS5fX2RpY3RfXwogICAgICAgICAgICAgICAgc2ltcGxlX21lbWJlcl9rZXlzID0gbGlzdChzaW1wbGVfbWVtYmVyX2RpY3Qua2V5cygpKQogICAgICAgICAgICAgICAgZm9yIGtleSBpbiBzZXQoY2hlY2tlZF9tZW1iZXJfa2V5cyArIHNpbXBsZV9tZW1iZXJfa2V5cyk6CiAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluICgnX19tb2R1bGVfXycsICdfX29iamNsYXNzX18nLCAnX2ludmVydGVkXycpOgogICAgICAgICAgICAgICAgICAgICAgICAjIGtleXMga25vd24gdG8gYmUgZGlmZmVyZW50IG9yIGFic2VudAogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIGVsaWYga2V5IG5vdCBpbiBzaW1wbGVfbWVtYmVyX2tleXM6CiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9tZW1iZXIuYXBwZW5kKCJtaXNzaW5nIGtleSAlciBub3QgaW4gdGhlIHNpbXBsZSBlbnVtIG1lbWJlciAlciIgJSAoa2V5LCBuYW1lKSkKICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSBub3QgaW4gY2hlY2tlZF9tZW1iZXJfa2V5czoKICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX21lbWJlci5hcHBlbmQoImV4dHJhIGtleSAlciBpbiBzaW1wbGUgZW51bSBtZW1iZXIgJXIiICUgKGtleSwgbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZF92YWx1ZSA9IGNoZWNrZWRfbWVtYmVyX2RpY3Rba2V5XQogICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGVfdmFsdWUgPSBzaW1wbGVfbWVtYmVyX2RpY3Rba2V5XQogICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGVja2VkX3ZhbHVlICE9IHNpbXBsZV92YWx1ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9tZW1iZXIuYXBwZW5kKCIlcjpcbiAgICAgICAgICVzXG4gICAgICAgICAlcyIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrZWQgbWVtYmVyIC0+ICVyIiAlIChjaGVja2VkX3ZhbHVlLCApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2ltcGxlIG1lbWJlciAgLT4gJXIiICUgKHNpbXBsZV92YWx1ZSwgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgaWYgZmFpbGVkX21lbWJlcjoKICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQoJyVyIG1lbWJlciBtaXNtYXRjaDpcbiAgICAgICVzJyAlICgKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgJ1xuICAgICAgJy5qb2luKGZhaWxlZF9tZW1iZXIpLAogICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgIGZvciBtZXRob2QgaW4gKAogICAgICAgICAgICAgICAgJ19fc3RyX18nLCAnX19yZXByX18nLCAnX19yZWR1Y2VfZXhfXycsICdfX2Zvcm1hdF9fJywKICAgICAgICAgICAgICAgICdfX2dldG5ld2FyZ3NfZXhfXycsICdfX2dldG5ld2FyZ3NfXycsICdfX3JlZHVjZV9leF9fJywgJ19fcmVkdWNlX18nCiAgICAgICAgICAgICk6CiAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBzaW1wbGVfa2V5cyBhbmQgbWV0aG9kIGluIGNoZWNrZWRfa2V5czoKICAgICAgICAgICAgICAgICMgY2Fubm90IGNvbXBhcmUgZnVuY3Rpb25zLCBhbmQgaXQgZXhpc3RzIGluIGJvdGgsIHNvIHdlJ3JlIGdvb2QKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgbWV0aG9kIG5vdCBpbiBzaW1wbGVfa2V5cyBhbmQgbWV0aG9kIG5vdCBpbiBjaGVja2VkX2tleXM6CiAgICAgICAgICAgICAgICAjIG1ldGhvZCBpcyBpbmhlcml0ZWQgLS0gY2hlY2sgaXQgb3V0CiAgICAgICAgICAgICAgICBjaGVja2VkX21ldGhvZCA9IGdldGF0dHIoY2hlY2tlZF9lbnVtLCBtZXRob2QsIE5vbmUpCiAgICAgICAgICAgICAgICBzaW1wbGVfbWV0aG9kID0gZ2V0YXR0cihzaW1wbGVfZW51bSwgbWV0aG9kLCBOb25lKQogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihjaGVja2VkX21ldGhvZCwgJ19fZnVuY19fJyk6CiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZF9tZXRob2QgPSBjaGVja2VkX21ldGhvZC5fX2Z1bmNfXwogICAgICAgICAgICAgICAgICAgIHNpbXBsZV9tZXRob2QgPSBzaW1wbGVfbWV0aG9kLl9fZnVuY19fCiAgICAgICAgICAgICAgICBpZiBjaGVja2VkX21ldGhvZCAhPSBzaW1wbGVfbWV0aG9kOgogICAgICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQoIiVyOiAgJS0zMHMgJXMiICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrZWQgLT4gJXIiICUgKGNoZWNrZWRfbWV0aG9kLCApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpbXBsZSAtPiAlciIgJSAoc2ltcGxlX21ldGhvZCwgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIGlmIHRoZSBtZXRob2QgZXhpc3RlZCBpbiBvbmx5IG9uZSBvZiB0aGUgZW51bXMsIGl0IHdpbGwgaGF2ZSBiZWVuIGNhdWdodAogICAgICAgICAgICAgICAgIyBpbiB0aGUgZmlyc3QgY2hlY2tzIGFib3ZlCiAgICAgICAgICAgICAgICBwYXNzCiAgICBpZiBmYWlsZWQ6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdlbnVtIG1pc21hdGNoOlxuICAgJXMnICUgJ1xuICAgJy5qb2luKGZhaWxlZCkpCgpkZWYgX29sZF9jb252ZXJ0XyhldHlwZSwgbmFtZSwgbW9kdWxlLCBmaWx0ZXIsIHNvdXJjZT1Ob25lLCAqLCBib3VuZGFyeT1Ob25lKToKICAgICIiIgogICAgQ3JlYXRlIGEgbmV3IEVudW0gc3ViY2xhc3MgdGhhdCByZXBsYWNlcyBhIGNvbGxlY3Rpb24gb2YgZ2xvYmFsIGNvbnN0YW50cwogICAgIiIiCiAgICAjIGNvbnZlcnQgYWxsIGNvbnN0YW50cyBmcm9tIHNvdXJjZSAob3IgbW9kdWxlKSB0aGF0IHBhc3MgZmlsdGVyKCkgdG8KICAgICMgYSBuZXcgRW51bSBjYWxsZWQgbmFtZSwgYW5kIGV4cG9ydCB0aGUgZW51bSBhbmQgaXRzIG1lbWJlcnMgYmFjayB0bwogICAgIyBtb2R1bGU7CiAgICAjIGFsc28sIHJlcGxhY2UgdGhlIF9fcmVkdWNlX2V4X18gbWV0aG9kIHNvIHVucGlja2xpbmcgd29ya3MgaW4KICAgICMgcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zCiAgICBtb2R1bGVfZ2xvYmFscyA9IHN5cy5tb2R1bGVzW21vZHVsZV0uX19kaWN0X18KICAgIGlmIHNvdXJjZToKICAgICAgICBzb3VyY2UgPSBzb3VyY2UuX19kaWN0X18KICAgIGVsc2U6CiAgICAgICAgc291cmNlID0gbW9kdWxlX2dsb2JhbHMKICAgICMgX3ZhbHVlMm1lbWJlcl9tYXBfIGlzIHBvcHVsYXRlZCBpbiB0aGUgc2FtZSBvcmRlciBldmVyeSB0aW1lCiAgICAjIGZvciBhIGNvbnNpc3RlbnQgcmV2ZXJzZSBtYXBwaW5nIG9mIG51bWJlciB0byBuYW1lIHdoZW4gdGhlcmUKICAgICMgYXJlIG11bHRpcGxlIG5hbWVzIGZvciB0aGUgc2FtZSBudW1iZXIuCiAgICBtZW1iZXJzID0gWwogICAgICAgICAgICAobmFtZSwgdmFsdWUpCiAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzb3VyY2UuaXRlbXMoKQogICAgICAgICAgICBpZiBmaWx0ZXIobmFtZSldCiAgICB0cnk6CiAgICAgICAgIyBzb3J0IGJ5IHZhbHVlCiAgICAgICAgbWVtYmVycy5zb3J0KGtleT1sYW1iZGEgdDogKHRbMV0sIHRbMF0pKQogICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAjIHVubGVzcyBzb21lIHZhbHVlcyBhcmVuJ3QgY29tcGFyYWJsZSwgaW4gd2hpY2ggY2FzZSBzb3J0IGJ5IG5hbWUKICAgICAgICBtZW1iZXJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQogICAgY2xzID0gZXR5cGUobmFtZSwgbWVtYmVycywgbW9kdWxlPW1vZHVsZSwgYm91bmRhcnk9Ym91bmRhcnkgb3IgS0VFUCkKICAgIGNscy5fX3JlZHVjZV9leF9fID0gX3JlZHVjZV9leF9ieV9nbG9iYWxfbmFtZQogICAgcmV0dXJuIGNscwoKX3N0ZGxpYl9lbnVtcyA9IEludEVudW0sIFN0ckVudW0sIEludEZsYWcKUEsDBBQAAAAAAAIgo1ZO7s9ZwicAAMInAAAKAAAAZmlsZWNtcC5weSIiIlV0aWxpdGllcyBmb3IgY29tcGFyaW5nIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KCkNsYXNzZXM6CiAgICBkaXJjbXAKCkZ1bmN0aW9uczoKICAgIGNtcChmMSwgZjIsIHNoYWxsb3c9VHJ1ZSkgLT4gaW50CiAgICBjbXBmaWxlcyhhLCBiLCBjb21tb24pIC0+IChbXSwgW10sIFtdKQogICAgY2xlYXJfY2FjaGUoKQoKIiIiCgppbXBvcnQgb3MKaW1wb3J0IHN0YXQKZnJvbSBpdGVydG9vbHMgaW1wb3J0IGZpbHRlcmZhbHNlCmZyb20gdHlwZXMgaW1wb3J0IEdlbmVyaWNBbGlhcwoKX19hbGxfXyA9IFsnY2xlYXJfY2FjaGUnLCAnY21wJywgJ2RpcmNtcCcsICdjbXBmaWxlcycsICdERUZBVUxUX0lHTk9SRVMnXQoKX2NhY2hlID0ge30KQlVGU0laRSA9IDgqMTAyNAoKREVGQVVMVF9JR05PUkVTID0gWwogICAgJ1JDUycsICdDVlMnLCAndGFncycsICcuZ2l0JywgJy5oZycsICcuYnpyJywgJ19kYXJjcycsICdfX3B5Y2FjaGVfXyddCgpkZWYgY2xlYXJfY2FjaGUoKToKICAgICIiIkNsZWFyIHRoZSBmaWxlY21wIGNhY2hlLiIiIgogICAgX2NhY2hlLmNsZWFyKCkKCmRlZiBjbXAoZjEsIGYyLCBzaGFsbG93PVRydWUpOgogICAgIiIiQ29tcGFyZSB0d28gZmlsZXMuCgogICAgQXJndW1lbnRzOgoKICAgIGYxIC0tIEZpcnN0IGZpbGUgbmFtZQoKICAgIGYyIC0tIFNlY29uZCBmaWxlIG5hbWUKCiAgICBzaGFsbG93IC0tIHRyZWF0IGZpbGVzIGFzIGlkZW50aWNhbCBpZiB0aGVpciBzdGF0IHNpZ25hdHVyZXMgKHR5cGUsIHNpemUsCiAgICAgICAgICAgICAgIG10aW1lKSBhcmUgaWRlbnRpY2FsLiBPdGhlcndpc2UsIGZpbGVzIGFyZSBjb25zaWRlcmVkIGRpZmZlcmVudAogICAgICAgICAgICAgICBpZiB0aGVpciBzaXplcyBvciBjb250ZW50cyBkaWZmZXIuICBbZGVmYXVsdDogVHJ1ZV0KCiAgICBSZXR1cm4gdmFsdWU6CgogICAgVHJ1ZSBpZiB0aGUgZmlsZXMgYXJlIHRoZSBzYW1lLCBGYWxzZSBvdGhlcndpc2UuCgogICAgVGhpcyBmdW5jdGlvbiB1c2VzIGEgY2FjaGUgZm9yIHBhc3QgY29tcGFyaXNvbnMgYW5kIHRoZSByZXN1bHRzLAogICAgd2l0aCBjYWNoZSBlbnRyaWVzIGludmFsaWRhdGVkIGlmIHRoZWlyIHN0YXQgaW5mb3JtYXRpb24KICAgIGNoYW5nZXMuICBUaGUgY2FjaGUgbWF5IGJlIGNsZWFyZWQgYnkgY2FsbGluZyBjbGVhcl9jYWNoZSgpLgoKICAgICIiIgoKICAgIHMxID0gX3NpZyhvcy5zdGF0KGYxKSkKICAgIHMyID0gX3NpZyhvcy5zdGF0KGYyKSkKICAgIGlmIHMxWzBdICE9IHN0YXQuU19JRlJFRyBvciBzMlswXSAhPSBzdGF0LlNfSUZSRUc6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBzaGFsbG93IGFuZCBzMSA9PSBzMjoKICAgICAgICByZXR1cm4gVHJ1ZQogICAgaWYgczFbMV0gIT0gczJbMV06CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgb3V0Y29tZSA9IF9jYWNoZS5nZXQoKGYxLCBmMiwgczEsIHMyKSkKICAgIGlmIG91dGNvbWUgaXMgTm9uZToKICAgICAgICBvdXRjb21lID0gX2RvX2NtcChmMSwgZjIpCiAgICAgICAgaWYgbGVuKF9jYWNoZSkgPiAxMDA6ICAgICAgIyBsaW1pdCB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBjYWNoZQogICAgICAgICAgICBjbGVhcl9jYWNoZSgpCiAgICAgICAgX2NhY2hlW2YxLCBmMiwgczEsIHMyXSA9IG91dGNvbWUKICAgIHJldHVybiBvdXRjb21lCgpkZWYgX3NpZyhzdCk6CiAgICByZXR1cm4gKHN0YXQuU19JRk1UKHN0LnN0X21vZGUpLAogICAgICAgICAgICBzdC5zdF9zaXplLAogICAgICAgICAgICBzdC5zdF9tdGltZSkKCmRlZiBfZG9fY21wKGYxLCBmMik6CiAgICBidWZzaXplID0gQlVGU0laRQogICAgd2l0aCBvcGVuKGYxLCAncmInKSBhcyBmcDEsIG9wZW4oZjIsICdyYicpIGFzIGZwMjoKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBiMSA9IGZwMS5yZWFkKGJ1ZnNpemUpCiAgICAgICAgICAgIGIyID0gZnAyLnJlYWQoYnVmc2l6ZSkKICAgICAgICAgICAgaWYgYjEgIT0gYjI6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgaWYgbm90IGIxOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKCiMgRGlyZWN0b3J5IGNvbXBhcmlzb24gY2xhc3MuCiMKY2xhc3MgZGlyY21wOgogICAgIiIiQSBjbGFzcyB0aGF0IG1hbmFnZXMgdGhlIGNvbXBhcmlzb24gb2YgMiBkaXJlY3Rvcmllcy4KCiAgICBkaXJjbXAoYSwgYiwgaWdub3JlPU5vbmUsIGhpZGU9Tm9uZSkKICAgICAgQSBhbmQgQiBhcmUgZGlyZWN0b3JpZXMuCiAgICAgIElHTk9SRSBpcyBhIGxpc3Qgb2YgbmFtZXMgdG8gaWdub3JlLAogICAgICAgIGRlZmF1bHRzIHRvIERFRkFVTFRfSUdOT1JFUy4KICAgICAgSElERSBpcyBhIGxpc3Qgb2YgbmFtZXMgdG8gaGlkZSwKICAgICAgICBkZWZhdWx0cyB0byBbb3MuY3VyZGlyLCBvcy5wYXJkaXJdLgoKICAgIEhpZ2ggbGV2ZWwgdXNhZ2U6CiAgICAgIHggPSBkaXJjbXAoZGlyMSwgZGlyMikKICAgICAgeC5yZXBvcnQoKSAtPiBwcmludHMgYSByZXBvcnQgb24gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gZGlyMSBhbmQgZGlyMgogICAgICAgb3IKICAgICAgeC5yZXBvcnRfcGFydGlhbF9jbG9zdXJlKCkgLT4gcHJpbnRzIHJlcG9ydCBvbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIGRpcjEKICAgICAgICAgICAgYW5kIGRpcjIsIGFuZCByZXBvcnRzIG9uIGNvbW1vbiBpbW1lZGlhdGUgc3ViZGlyZWN0b3JpZXMuCiAgICAgIHgucmVwb3J0X2Z1bGxfY2xvc3VyZSgpIC0+IGxpa2UgcmVwb3J0X3BhcnRpYWxfY2xvc3VyZSwKICAgICAgICAgICAgYnV0IGZ1bGx5IHJlY3Vyc2l2ZS4KCiAgICBBdHRyaWJ1dGVzOgogICAgIGxlZnRfbGlzdCwgcmlnaHRfbGlzdDogVGhlIGZpbGVzIGluIGRpcjEgYW5kIGRpcjIsCiAgICAgICAgZmlsdGVyZWQgYnkgaGlkZSBhbmQgaWdub3JlLgogICAgIGNvbW1vbjogYSBsaXN0IG9mIG5hbWVzIGluIGJvdGggZGlyMSBhbmQgZGlyMi4KICAgICBsZWZ0X29ubHksIHJpZ2h0X29ubHk6IG5hbWVzIG9ubHkgaW4gZGlyMSwgZGlyMi4KICAgICBjb21tb25fZGlyczogc3ViZGlyZWN0b3JpZXMgaW4gYm90aCBkaXIxIGFuZCBkaXIyLgogICAgIGNvbW1vbl9maWxlczogZmlsZXMgaW4gYm90aCBkaXIxIGFuZCBkaXIyLgogICAgIGNvbW1vbl9mdW5ueTogbmFtZXMgaW4gYm90aCBkaXIxIGFuZCBkaXIyIHdoZXJlIHRoZSB0eXBlIGRpZmZlcnMgYmV0d2VlbgogICAgICAgIGRpcjEgYW5kIGRpcjIsIG9yIHRoZSBuYW1lIGlzIG5vdCBzdGF0LWFibGUuCiAgICAgc2FtZV9maWxlczogbGlzdCBvZiBpZGVudGljYWwgZmlsZXMuCiAgICAgZGlmZl9maWxlczogbGlzdCBvZiBmaWxlbmFtZXMgd2hpY2ggZGlmZmVyLgogICAgIGZ1bm55X2ZpbGVzOiBsaXN0IG9mIGZpbGVzIHdoaWNoIGNvdWxkIG5vdCBiZSBjb21wYXJlZC4KICAgICBzdWJkaXJzOiBhIGRpY3Rpb25hcnkgb2YgZGlyY21wIGluc3RhbmNlcyAob3IgTXlEaXJDbXAgaW5zdGFuY2VzIGlmIHRoaXMKICAgICAgIG9iamVjdCBpcyBvZiB0eXBlIE15RGlyQ21wLCBhIHN1YmNsYXNzIG9mIGRpcmNtcCksIGtleWVkIGJ5IG5hbWVzCiAgICAgICBpbiBjb21tb25fZGlycy4KICAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYSwgYiwgaWdub3JlPU5vbmUsIGhpZGU9Tm9uZSk6ICMgSW5pdGlhbGl6ZQogICAgICAgIHNlbGYubGVmdCA9IGEKICAgICAgICBzZWxmLnJpZ2h0ID0gYgogICAgICAgIGlmIGhpZGUgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5oaWRlID0gW29zLmN1cmRpciwgb3MucGFyZGlyXSAjIE5hbWVzIG5ldmVyIHRvIGJlIHNob3duCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5oaWRlID0gaGlkZQogICAgICAgIGlmIGlnbm9yZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmlnbm9yZSA9IERFRkFVTFRfSUdOT1JFUwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuaWdub3JlID0gaWdub3JlCgogICAgZGVmIHBoYXNlMChzZWxmKTogIyBDb21wYXJlIGV2ZXJ5dGhpbmcgZXhjZXB0IGNvbW1vbiBzdWJkaXJlY3RvcmllcwogICAgICAgIHNlbGYubGVmdF9saXN0ID0gX2ZpbHRlcihvcy5saXN0ZGlyKHNlbGYubGVmdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGlkZStzZWxmLmlnbm9yZSkKICAgICAgICBzZWxmLnJpZ2h0X2xpc3QgPSBfZmlsdGVyKG9zLmxpc3RkaXIoc2VsZi5yaWdodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhpZGUrc2VsZi5pZ25vcmUpCiAgICAgICAgc2VsZi5sZWZ0X2xpc3Quc29ydCgpCiAgICAgICAgc2VsZi5yaWdodF9saXN0LnNvcnQoKQoKICAgIGRlZiBwaGFzZTEoc2VsZik6ICMgQ29tcHV0ZSBjb21tb24gbmFtZXMKICAgICAgICBhID0gZGljdCh6aXAobWFwKG9zLnBhdGgubm9ybWNhc2UsIHNlbGYubGVmdF9saXN0KSwgc2VsZi5sZWZ0X2xpc3QpKQogICAgICAgIGIgPSBkaWN0KHppcChtYXAob3MucGF0aC5ub3JtY2FzZSwgc2VsZi5yaWdodF9saXN0KSwgc2VsZi5yaWdodF9saXN0KSkKICAgICAgICBzZWxmLmNvbW1vbiA9IGxpc3QobWFwKGEuX19nZXRpdGVtX18sIGZpbHRlcihiLl9fY29udGFpbnNfXywgYSkpKQogICAgICAgIHNlbGYubGVmdF9vbmx5ID0gbGlzdChtYXAoYS5fX2dldGl0ZW1fXywgZmlsdGVyZmFsc2UoYi5fX2NvbnRhaW5zX18sIGEpKSkKICAgICAgICBzZWxmLnJpZ2h0X29ubHkgPSBsaXN0KG1hcChiLl9fZ2V0aXRlbV9fLCBmaWx0ZXJmYWxzZShhLl9fY29udGFpbnNfXywgYikpKQoKICAgIGRlZiBwaGFzZTIoc2VsZik6ICMgRGlzdGluZ3Vpc2ggZmlsZXMsIGRpcmVjdG9yaWVzLCBmdW5uaWVzCiAgICAgICAgc2VsZi5jb21tb25fZGlycyA9IFtdCiAgICAgICAgc2VsZi5jb21tb25fZmlsZXMgPSBbXQogICAgICAgIHNlbGYuY29tbW9uX2Z1bm55ID0gW10KCiAgICAgICAgZm9yIHggaW4gc2VsZi5jb21tb246CiAgICAgICAgICAgIGFfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmxlZnQsIHgpCiAgICAgICAgICAgIGJfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnJpZ2h0LCB4KQoKICAgICAgICAgICAgb2sgPSAxCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGFfc3RhdCA9IG9zLnN0YXQoYV9wYXRoKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICMgcHJpbnQoJ0NhblwndCBzdGF0JywgYV9wYXRoLCAnOicsIHdoeS5hcmdzWzFdKQogICAgICAgICAgICAgICAgb2sgPSAwCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGJfc3RhdCA9IG9zLnN0YXQoYl9wYXRoKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICMgcHJpbnQoJ0NhblwndCBzdGF0JywgYl9wYXRoLCAnOicsIHdoeS5hcmdzWzFdKQogICAgICAgICAgICAgICAgb2sgPSAwCgogICAgICAgICAgICBpZiBvazoKICAgICAgICAgICAgICAgIGFfdHlwZSA9IHN0YXQuU19JRk1UKGFfc3RhdC5zdF9tb2RlKQogICAgICAgICAgICAgICAgYl90eXBlID0gc3RhdC5TX0lGTVQoYl9zdGF0LnN0X21vZGUpCiAgICAgICAgICAgICAgICBpZiBhX3R5cGUgIT0gYl90eXBlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbW9uX2Z1bm55LmFwcGVuZCh4KQogICAgICAgICAgICAgICAgZWxpZiBzdGF0LlNfSVNESVIoYV90eXBlKToKICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1vbl9kaXJzLmFwcGVuZCh4KQogICAgICAgICAgICAgICAgZWxpZiBzdGF0LlNfSVNSRUcoYV90eXBlKToKICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1vbl9maWxlcy5hcHBlbmQoeCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21tb25fZnVubnkuYXBwZW5kKHgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLmNvbW1vbl9mdW5ueS5hcHBlbmQoeCkKCiAgICBkZWYgcGhhc2UzKHNlbGYpOiAjIEZpbmQgb3V0IGRpZmZlcmVuY2VzIGJldHdlZW4gY29tbW9uIGZpbGVzCiAgICAgICAgeHggPSBjbXBmaWxlcyhzZWxmLmxlZnQsIHNlbGYucmlnaHQsIHNlbGYuY29tbW9uX2ZpbGVzKQogICAgICAgIHNlbGYuc2FtZV9maWxlcywgc2VsZi5kaWZmX2ZpbGVzLCBzZWxmLmZ1bm55X2ZpbGVzID0geHgKCiAgICBkZWYgcGhhc2U0KHNlbGYpOiAjIEZpbmQgb3V0IGRpZmZlcmVuY2VzIGJldHdlZW4gY29tbW9uIHN1YmRpcmVjdG9yaWVzCiAgICAgICAgIyBBIG5ldyBkaXJjbXAgKG9yIE15RGlyQ21wIGlmIGRpcmNtcCB3YXMgc3ViY2xhc3NlZCkgb2JqZWN0IGlzIGNyZWF0ZWQKICAgICAgICAjIGZvciBlYWNoIGNvbW1vbiBzdWJkaXJlY3RvcnksCiAgICAgICAgIyB0aGVzZSBhcmUgc3RvcmVkIGluIGEgZGljdGlvbmFyeSBpbmRleGVkIGJ5IGZpbGVuYW1lLgogICAgICAgICMgVGhlIGhpZGUgYW5kIGlnbm9yZSBwcm9wZXJ0aWVzIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50CiAgICAgICAgc2VsZi5zdWJkaXJzID0ge30KICAgICAgICBmb3IgeCBpbiBzZWxmLmNvbW1vbl9kaXJzOgogICAgICAgICAgICBhX3ggPSBvcy5wYXRoLmpvaW4oc2VsZi5sZWZ0LCB4KQogICAgICAgICAgICBiX3ggPSBvcy5wYXRoLmpvaW4oc2VsZi5yaWdodCwgeCkKICAgICAgICAgICAgc2VsZi5zdWJkaXJzW3hdICA9IHNlbGYuX19jbGFzc19fKGFfeCwgYl94LCBzZWxmLmlnbm9yZSwgc2VsZi5oaWRlKQoKICAgIGRlZiBwaGFzZTRfY2xvc3VyZShzZWxmKTogIyBSZWN1cnNpdmVseSBjYWxsIHBoYXNlNCgpIG9uIHN1YmRpcmVjdG9yaWVzCiAgICAgICAgc2VsZi5waGFzZTQoKQogICAgICAgIGZvciBzZCBpbiBzZWxmLnN1YmRpcnMudmFsdWVzKCk6CiAgICAgICAgICAgIHNkLnBoYXNlNF9jbG9zdXJlKCkKCiAgICBkZWYgcmVwb3J0KHNlbGYpOiAjIFByaW50IGEgcmVwb3J0IG9uIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGEgYW5kIGIKICAgICAgICAjIE91dHB1dCBmb3JtYXQgaXMgcHVycG9zZWx5IGxvdXN5CiAgICAgICAgcHJpbnQoJ2RpZmYnLCBzZWxmLmxlZnQsIHNlbGYucmlnaHQpCiAgICAgICAgaWYgc2VsZi5sZWZ0X29ubHk6CiAgICAgICAgICAgIHNlbGYubGVmdF9vbmx5LnNvcnQoKQogICAgICAgICAgICBwcmludCgnT25seSBpbicsIHNlbGYubGVmdCwgJzonLCBzZWxmLmxlZnRfb25seSkKICAgICAgICBpZiBzZWxmLnJpZ2h0X29ubHk6CiAgICAgICAgICAgIHNlbGYucmlnaHRfb25seS5zb3J0KCkKICAgICAgICAgICAgcHJpbnQoJ09ubHkgaW4nLCBzZWxmLnJpZ2h0LCAnOicsIHNlbGYucmlnaHRfb25seSkKICAgICAgICBpZiBzZWxmLnNhbWVfZmlsZXM6CiAgICAgICAgICAgIHNlbGYuc2FtZV9maWxlcy5zb3J0KCkKICAgICAgICAgICAgcHJpbnQoJ0lkZW50aWNhbCBmaWxlcyA6Jywgc2VsZi5zYW1lX2ZpbGVzKQogICAgICAgIGlmIHNlbGYuZGlmZl9maWxlczoKICAgICAgICAgICAgc2VsZi5kaWZmX2ZpbGVzLnNvcnQoKQogICAgICAgICAgICBwcmludCgnRGlmZmVyaW5nIGZpbGVzIDonLCBzZWxmLmRpZmZfZmlsZXMpCiAgICAgICAgaWYgc2VsZi5mdW5ueV9maWxlczoKICAgICAgICAgICAgc2VsZi5mdW5ueV9maWxlcy5zb3J0KCkKICAgICAgICAgICAgcHJpbnQoJ1Ryb3VibGUgd2l0aCBjb21tb24gZmlsZXMgOicsIHNlbGYuZnVubnlfZmlsZXMpCiAgICAgICAgaWYgc2VsZi5jb21tb25fZGlyczoKICAgICAgICAgICAgc2VsZi5jb21tb25fZGlycy5zb3J0KCkKICAgICAgICAgICAgcHJpbnQoJ0NvbW1vbiBzdWJkaXJlY3RvcmllcyA6Jywgc2VsZi5jb21tb25fZGlycykKICAgICAgICBpZiBzZWxmLmNvbW1vbl9mdW5ueToKICAgICAgICAgICAgc2VsZi5jb21tb25fZnVubnkuc29ydCgpCiAgICAgICAgICAgIHByaW50KCdDb21tb24gZnVubnkgY2FzZXMgOicsIHNlbGYuY29tbW9uX2Z1bm55KQoKICAgIGRlZiByZXBvcnRfcGFydGlhbF9jbG9zdXJlKHNlbGYpOiAjIFByaW50IHJlcG9ydHMgb24gc2VsZiBhbmQgb24gc3ViZGlycwogICAgICAgIHNlbGYucmVwb3J0KCkKICAgICAgICBmb3Igc2QgaW4gc2VsZi5zdWJkaXJzLnZhbHVlcygpOgogICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgIHNkLnJlcG9ydCgpCgogICAgZGVmIHJlcG9ydF9mdWxsX2Nsb3N1cmUoc2VsZik6ICMgUmVwb3J0IG9uIHNlbGYgYW5kIHN1YmRpcnMgcmVjdXJzaXZlbHkKICAgICAgICBzZWxmLnJlcG9ydCgpCiAgICAgICAgZm9yIHNkIGluIHNlbGYuc3ViZGlycy52YWx1ZXMoKToKICAgICAgICAgICAgcHJpbnQoKQogICAgICAgICAgICBzZC5yZXBvcnRfZnVsbF9jbG9zdXJlKCkKCiAgICBtZXRob2RtYXAgPSBkaWN0KHN1YmRpcnM9cGhhc2U0LAogICAgICAgICAgICAgICAgICAgICBzYW1lX2ZpbGVzPXBoYXNlMywgZGlmZl9maWxlcz1waGFzZTMsIGZ1bm55X2ZpbGVzPXBoYXNlMywKICAgICAgICAgICAgICAgICAgICAgY29tbW9uX2RpcnMgPSBwaGFzZTIsIGNvbW1vbl9maWxlcz1waGFzZTIsIGNvbW1vbl9mdW5ueT1waGFzZTIsCiAgICAgICAgICAgICAgICAgICAgIGNvbW1vbj1waGFzZTEsIGxlZnRfb25seT1waGFzZTEsIHJpZ2h0X29ubHk9cGhhc2UxLAogICAgICAgICAgICAgICAgICAgICBsZWZ0X2xpc3Q9cGhhc2UwLCByaWdodF9saXN0PXBoYXNlMCkKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CiAgICAgICAgaWYgYXR0ciBub3QgaW4gc2VsZi5tZXRob2RtYXA6CiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpCiAgICAgICAgc2VsZi5tZXRob2RtYXBbYXR0cl0oc2VsZikKICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBhdHRyKQoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKCmRlZiBjbXBmaWxlcyhhLCBiLCBjb21tb24sIHNoYWxsb3c9VHJ1ZSk6CiAgICAiIiJDb21wYXJlIGNvbW1vbiBmaWxlcyBpbiB0d28gZGlyZWN0b3JpZXMuCgogICAgYSwgYiAtLSBkaXJlY3RvcnkgbmFtZXMKICAgIGNvbW1vbiAtLSBsaXN0IG9mIGZpbGUgbmFtZXMgZm91bmQgaW4gYm90aCBkaXJlY3RvcmllcwogICAgc2hhbGxvdyAtLSBpZiB0cnVlLCBkbyBjb21wYXJpc29uIGJhc2VkIHNvbGVseSBvbiBzdGF0KCkgaW5mb3JtYXRpb24KCiAgICBSZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgbGlzdHM6CiAgICAgIGZpbGVzIHRoYXQgY29tcGFyZSBlcXVhbAogICAgICBmaWxlcyB0aGF0IGFyZSBkaWZmZXJlbnQKICAgICAgZmlsZW5hbWVzIHRoYXQgYXJlbid0IHJlZ3VsYXIgZmlsZXMuCgogICAgIiIiCiAgICByZXMgPSAoW10sIFtdLCBbXSkKICAgIGZvciB4IGluIGNvbW1vbjoKICAgICAgICBheCA9IG9zLnBhdGguam9pbihhLCB4KQogICAgICAgIGJ4ID0gb3MucGF0aC5qb2luKGIsIHgpCiAgICAgICAgcmVzW19jbXAoYXgsIGJ4LCBzaGFsbG93KV0uYXBwZW5kKHgpCiAgICByZXR1cm4gcmVzCgoKIyBDb21wYXJlIHR3byBmaWxlcy4KIyBSZXR1cm46CiMgICAgICAgMCBmb3IgZXF1YWwKIyAgICAgICAxIGZvciBkaWZmZXJlbnQKIyAgICAgICAyIGZvciBmdW5ueSBjYXNlcyAoY2FuJ3Qgc3RhdCwgZXRjLikKIwpkZWYgX2NtcChhLCBiLCBzaCwgYWJzPWFicywgY21wPWNtcCk6CiAgICB0cnk6CiAgICAgICAgcmV0dXJuIG5vdCBhYnMoY21wKGEsIGIsIHNoKSkKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHJldHVybiAyCgoKIyBSZXR1cm4gYSBjb3B5IHdpdGggaXRlbXMgdGhhdCBvY2N1ciBpbiBza2lwIHJlbW92ZWQuCiMKZGVmIF9maWx0ZXIoZmxpc3QsIHNraXApOgogICAgcmV0dXJuIGxpc3QoZmlsdGVyZmFsc2Uoc2tpcC5fX2NvbnRhaW5zX18sIGZsaXN0KSkKCgojIERlbW9uc3RyYXRpb24gYW5kIHRlc3RpbmcuCiMKZGVmIGRlbW8oKToKICAgIGltcG9ydCBzeXMKICAgIGltcG9ydCBnZXRvcHQKICAgIG9wdGlvbnMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ3InKQogICAgaWYgbGVuKGFyZ3MpICE9IDI6CiAgICAgICAgcmFpc2UgZ2V0b3B0LkdldG9wdEVycm9yKCduZWVkIGV4YWN0bHkgdHdvIGFyZ3MnLCBOb25lKQogICAgZGQgPSBkaXJjbXAoYXJnc1swXSwgYXJnc1sxXSkKICAgIGlmICgnLXInLCAnJykgaW4gb3B0aW9uczoKICAgICAgICBkZC5yZXBvcnRfZnVsbF9jbG9zdXJlKCkKICAgIGVsc2U6CiAgICAgICAgZGQucmVwb3J0KCkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBkZW1vKCkKUEsDBBQAAAAAAAIgo1b4/BuHTj0AAE49AAAMAAAAZmlsZWlucHV0LnB5IiIiSGVscGVyIGNsYXNzIHRvIHF1aWNrbHkgd3JpdGUgYSBsb29wIG92ZXIgYWxsIHN0YW5kYXJkIGlucHV0IGZpbGVzLgoKVHlwaWNhbCB1c2UgaXM6CgogICAgaW1wb3J0IGZpbGVpbnB1dAogICAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGVuY29kaW5nPSJ1dGYtOCIpOgogICAgICAgIHByb2Nlc3MobGluZSkKClRoaXMgaXRlcmF0ZXMgb3ZlciB0aGUgbGluZXMgb2YgYWxsIGZpbGVzIGxpc3RlZCBpbiBzeXMuYXJndlsxOl0sCmRlZmF1bHRpbmcgdG8gc3lzLnN0ZGluIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAgSWYgYSBmaWxlbmFtZSBpcyAnLScgaXQKaXMgYWxzbyByZXBsYWNlZCBieSBzeXMuc3RkaW4gYW5kIHRoZSBvcHRpb25hbCBhcmd1bWVudHMgbW9kZSBhbmQKb3Blbmhvb2sgYXJlIGlnbm9yZWQuICBUbyBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIGxpc3Qgb2YgZmlsZW5hbWVzLApwYXNzIGl0IGFzIHRoZSBhcmd1bWVudCB0byBpbnB1dCgpLiAgQSBzaW5nbGUgZmlsZSBuYW1lIGlzIGFsc28gYWxsb3dlZC4KCkZ1bmN0aW9ucyBmaWxlbmFtZSgpLCBsaW5lbm8oKSByZXR1cm4gdGhlIGZpbGVuYW1lIGFuZCBjdW11bGF0aXZlIGxpbmUKbnVtYmVyIG9mIHRoZSBsaW5lIHRoYXQgaGFzIGp1c3QgYmVlbiByZWFkOyBmaWxlbGluZW5vKCkgcmV0dXJucyBpdHMKbGluZSBudW1iZXIgaW4gdGhlIGN1cnJlbnQgZmlsZTsgaXNmaXJzdGxpbmUoKSByZXR1cm5zIHRydWUgaWZmIHRoZQpsaW5lIGp1c3QgcmVhZCBpcyB0aGUgZmlyc3QgbGluZSBvZiBpdHMgZmlsZTsgaXNzdGRpbigpIHJldHVybnMgdHJ1ZQppZmYgdGhlIGxpbmUgd2FzIHJlYWQgZnJvbSBzeXMuc3RkaW4uICBGdW5jdGlvbiBuZXh0ZmlsZSgpIGNsb3NlcyB0aGUKY3VycmVudCBmaWxlIHNvIHRoYXQgdGhlIG5leHQgaXRlcmF0aW9uIHdpbGwgcmVhZCB0aGUgZmlyc3QgbGluZSBmcm9tCnRoZSBuZXh0IGZpbGUgKGlmIGFueSk7IGxpbmVzIG5vdCByZWFkIGZyb20gdGhlIGZpbGUgd2lsbCBub3QgY291bnQKdG93YXJkcyB0aGUgY3VtdWxhdGl2ZSBsaW5lIGNvdW50OyB0aGUgZmlsZW5hbWUgaXMgbm90IGNoYW5nZWQgdW50aWwKYWZ0ZXIgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG5leHQgZmlsZSBoYXMgYmVlbiByZWFkLiAgRnVuY3Rpb24gY2xvc2UoKQpjbG9zZXMgdGhlIHNlcXVlbmNlLgoKQmVmb3JlIGFueSBsaW5lcyBoYXZlIGJlZW4gcmVhZCwgZmlsZW5hbWUoKSByZXR1cm5zIE5vbmUgYW5kIGJvdGggbGluZQpudW1iZXJzIGFyZSB6ZXJvOyBuZXh0ZmlsZSgpIGhhcyBubyBlZmZlY3QuICBBZnRlciBhbGwgbGluZXMgaGF2ZSBiZWVuCnJlYWQsIGZpbGVuYW1lKCkgYW5kIHRoZSBsaW5lIG51bWJlciBmdW5jdGlvbnMgcmV0dXJuIHRoZSB2YWx1ZXMKcGVydGFpbmluZyB0byB0aGUgbGFzdCBsaW5lIHJlYWQ7IG5leHRmaWxlKCkgaGFzIG5vIGVmZmVjdC4KCkFsbCBmaWxlcyBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSBieSBkZWZhdWx0LCB5b3UgY2FuIG92ZXJyaWRlIHRoaXMgYnkKc2V0dGluZyB0aGUgbW9kZSBwYXJhbWV0ZXIgdG8gaW5wdXQoKSBvciBGaWxlSW5wdXQuX19pbml0X18oKS4KSWYgYW4gSS9PIGVycm9yIG9jY3VycyBkdXJpbmcgb3BlbmluZyBvciByZWFkaW5nIGEgZmlsZSwgdGhlIE9TRXJyb3IKZXhjZXB0aW9uIGlzIHJhaXNlZC4KCklmIHN5cy5zdGRpbiBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlLCB0aGUgc2Vjb25kIGFuZCBmdXJ0aGVyIHVzZSB3aWxsCnJldHVybiBubyBsaW5lcywgZXhjZXB0IHBlcmhhcHMgZm9yIGludGVyYWN0aXZlIHVzZSwgb3IgaWYgaXQgaGFzIGJlZW4KZXhwbGljaXRseSByZXNldCAoZS5nLiB1c2luZyBzeXMuc3RkaW4uc2VlaygwKSkuCgpFbXB0eSBmaWxlcyBhcmUgb3BlbmVkIGFuZCBpbW1lZGlhdGVseSBjbG9zZWQ7IHRoZSBvbmx5IHRpbWUgdGhlaXIKcHJlc2VuY2UgaW4gdGhlIGxpc3Qgb2YgZmlsZW5hbWVzIGlzIG5vdGljZWFibGUgYXQgYWxsIGlzIHdoZW4gdGhlCmxhc3QgZmlsZSBvcGVuZWQgaXMgZW1wdHkuCgpJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIGRvZXNuJ3QgZW5kIGluIGEgbmV3bGluZQpjaGFyYWN0ZXI7IG90aGVyd2lzZSBsaW5lcyBhcmUgcmV0dXJuZWQgaW5jbHVkaW5nIHRoZSB0cmFpbGluZwpuZXdsaW5lLgoKQ2xhc3MgRmlsZUlucHV0IGlzIHRoZSBpbXBsZW1lbnRhdGlvbjsgaXRzIG1ldGhvZHMgZmlsZW5hbWUoKSwKbGluZW5vKCksIGZpbGVsaW5lKCksIGlzZmlyc3RsaW5lKCksIGlzc3RkaW4oKSwgbmV4dGZpbGUoKSBhbmQgY2xvc2UoKQpjb3JyZXNwb25kIHRvIHRoZSBmdW5jdGlvbnMgaW4gdGhlIG1vZHVsZS4gIEluIGFkZGl0aW9uIGl0IGhhcyBhCnJlYWRsaW5lKCkgbWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIG5leHQgaW5wdXQgbGluZSwgYW5kIGEKX19nZXRpdGVtX18oKSBtZXRob2Qgd2hpY2ggaW1wbGVtZW50cyB0aGUgc2VxdWVuY2UgYmVoYXZpb3IuICBUaGUKc2VxdWVuY2UgbXVzdCBiZSBhY2Nlc3NlZCBpbiBzdHJpY3RseSBzZXF1ZW50aWFsIG9yZGVyOyBzZXF1ZW5jZQphY2Nlc3MgYW5kIHJlYWRsaW5lKCkgY2Fubm90IGJlIG1peGVkLgoKT3B0aW9uYWwgaW4tcGxhY2UgZmlsdGVyaW5nOiBpZiB0aGUga2V5d29yZCBhcmd1bWVudCBpbnBsYWNlPTEgaXMKcGFzc2VkIHRvIGlucHV0KCkgb3IgdG8gdGhlIEZpbGVJbnB1dCBjb25zdHJ1Y3RvciwgdGhlIGZpbGUgaXMgbW92ZWQKdG8gYSBiYWNrdXAgZmlsZSBhbmQgc3RhbmRhcmQgb3V0cHV0IGlzIGRpcmVjdGVkIHRvIHRoZSBpbnB1dCBmaWxlLgpUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHdyaXRlIGEgZmlsdGVyIHRoYXQgcmV3cml0ZXMgaXRzIGlucHV0IGZpbGUKaW4gcGxhY2UuICBJZiB0aGUga2V5d29yZCBhcmd1bWVudCBiYWNrdXA9Ii48c29tZSBleHRlbnNpb24+IiBpcyBhbHNvCmdpdmVuLCBpdCBzcGVjaWZpZXMgdGhlIGV4dGVuc2lvbiBmb3IgdGhlIGJhY2t1cCBmaWxlLCBhbmQgdGhlIGJhY2t1cApmaWxlIHJlbWFpbnMgYXJvdW5kOyBieSBkZWZhdWx0LCB0aGUgZXh0ZW5zaW9uIGlzICIuYmFrIiBhbmQgaXQgaXMKZGVsZXRlZCB3aGVuIHRoZSBvdXRwdXQgZmlsZSBpcyBjbG9zZWQuICBJbi1wbGFjZSBmaWx0ZXJpbmcgaXMKZGlzYWJsZWQgd2hlbiBzdGFuZGFyZCBpbnB1dCBpcyByZWFkLiAgWFhYIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCmRvZXMgbm90IHdvcmsgZm9yIE1TLURPUyA4KzMgZmlsZXN5c3RlbXMuCiIiIgoKaW1wb3J0IGlvCmltcG9ydCBzeXMsIG9zCmZyb20gdHlwZXMgaW1wb3J0IEdlbmVyaWNBbGlhcwoKX19hbGxfXyA9IFsiaW5wdXQiLCAiY2xvc2UiLCAibmV4dGZpbGUiLCAiZmlsZW5hbWUiLCAibGluZW5vIiwgImZpbGVsaW5lbm8iLAogICAgICAgICAgICJmaWxlbm8iLCAiaXNmaXJzdGxpbmUiLCAiaXNzdGRpbiIsICJGaWxlSW5wdXQiLCAiaG9va19jb21wcmVzc2VkIiwKICAgICAgICAgICAiaG9va19lbmNvZGVkIl0KCl9zdGF0ZSA9IE5vbmUKCmRlZiBpbnB1dChmaWxlcz1Ob25lLCBpbnBsYWNlPUZhbHNlLCBiYWNrdXA9IiIsICosIG1vZGU9InIiLCBvcGVuaG9vaz1Ob25lLAogICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgogICAgIiIiUmV0dXJuIGFuIGluc3RhbmNlIG9mIHRoZSBGaWxlSW5wdXQgY2xhc3MsIHdoaWNoIGNhbiBiZSBpdGVyYXRlZC4KCiAgICBUaGUgcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgRmlsZUlucHV0IGNsYXNzLgogICAgVGhlIHJldHVybmVkIGluc3RhbmNlLCBpbiBhZGRpdGlvbiB0byBiZWluZyBhbiBpdGVyYXRvciwKICAgIGtlZXBzIGdsb2JhbCBzdGF0ZSBmb3IgdGhlIGZ1bmN0aW9ucyBvZiB0aGlzIG1vZHVsZSwuCiAgICAiIiIKICAgIGdsb2JhbCBfc3RhdGUKICAgIGlmIF9zdGF0ZSBhbmQgX3N0YXRlLl9maWxlOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiaW5wdXQoKSBhbHJlYWR5IGFjdGl2ZSIpCiAgICBfc3RhdGUgPSBGaWxlSW5wdXQoZmlsZXMsIGlucGxhY2UsIGJhY2t1cCwgbW9kZT1tb2RlLCBvcGVuaG9vaz1vcGVuaG9vaywKICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKICAgIHJldHVybiBfc3RhdGUKCmRlZiBjbG9zZSgpOgogICAgIiIiQ2xvc2UgdGhlIHNlcXVlbmNlLiIiIgogICAgZ2xvYmFsIF9zdGF0ZQogICAgc3RhdGUgPSBfc3RhdGUKICAgIF9zdGF0ZSA9IE5vbmUKICAgIGlmIHN0YXRlOgogICAgICAgIHN0YXRlLmNsb3NlKCkKCmRlZiBuZXh0ZmlsZSgpOgogICAgIiIiCiAgICBDbG9zZSB0aGUgY3VycmVudCBmaWxlIHNvIHRoYXQgdGhlIG5leHQgaXRlcmF0aW9uIHdpbGwgcmVhZCB0aGUgZmlyc3QKICAgIGxpbmUgZnJvbSB0aGUgbmV4dCBmaWxlIChpZiBhbnkpOyBsaW5lcyBub3QgcmVhZCBmcm9tIHRoZSBmaWxlIHdpbGwKICAgIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBjdW11bGF0aXZlIGxpbmUgY291bnQuIFRoZSBmaWxlbmFtZSBpcyBub3QKICAgIGNoYW5nZWQgdW50aWwgYWZ0ZXIgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG5leHQgZmlsZSBoYXMgYmVlbiByZWFkLgogICAgQmVmb3JlIHRoZSBmaXJzdCBsaW5lIGhhcyBiZWVuIHJlYWQsIHRoaXMgZnVuY3Rpb24gaGFzIG5vIGVmZmVjdDsKICAgIGl0IGNhbm5vdCBiZSB1c2VkIHRvIHNraXAgdGhlIGZpcnN0IGZpbGUuIEFmdGVyIHRoZSBsYXN0IGxpbmUgb2YgdGhlCiAgICBsYXN0IGZpbGUgaGFzIGJlZW4gcmVhZCwgdGhpcyBmdW5jdGlvbiBoYXMgbm8gZWZmZWN0LgogICAgIiIiCiAgICBpZiBub3QgX3N0YXRlOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigibm8gYWN0aXZlIGlucHV0KCkiKQogICAgcmV0dXJuIF9zdGF0ZS5uZXh0ZmlsZSgpCgpkZWYgZmlsZW5hbWUoKToKICAgICIiIgogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGN1cnJlbnRseSBiZWluZyByZWFkLgogICAgQmVmb3JlIHRoZSBmaXJzdCBsaW5lIGhhcyBiZWVuIHJlYWQsIHJldHVybnMgTm9uZS4KICAgICIiIgogICAgaWYgbm90IF9zdGF0ZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIm5vIGFjdGl2ZSBpbnB1dCgpIikKICAgIHJldHVybiBfc3RhdGUuZmlsZW5hbWUoKQoKZGVmIGxpbmVubygpOgogICAgIiIiCiAgICBSZXR1cm4gdGhlIGN1bXVsYXRpdmUgbGluZSBudW1iZXIgb2YgdGhlIGxpbmUgdGhhdCBoYXMganVzdCBiZWVuIHJlYWQuCiAgICBCZWZvcmUgdGhlIGZpcnN0IGxpbmUgaGFzIGJlZW4gcmVhZCwgcmV0dXJucyAwLiBBZnRlciB0aGUgbGFzdCBsaW5lCiAgICBvZiB0aGUgbGFzdCBmaWxlIGhhcyBiZWVuIHJlYWQsIHJldHVybnMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoYXQgbGluZS4KICAgICIiIgogICAgaWYgbm90IF9zdGF0ZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIm5vIGFjdGl2ZSBpbnB1dCgpIikKICAgIHJldHVybiBfc3RhdGUubGluZW5vKCkKCmRlZiBmaWxlbGluZW5vKCk6CiAgICAiIiIKICAgIFJldHVybiB0aGUgbGluZSBudW1iZXIgaW4gdGhlIGN1cnJlbnQgZmlsZS4gQmVmb3JlIHRoZSBmaXJzdCBsaW5lCiAgICBoYXMgYmVlbiByZWFkLCByZXR1cm5zIDAuIEFmdGVyIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGxhc3QgZmlsZSBoYXMKICAgIGJlZW4gcmVhZCwgcmV0dXJucyB0aGUgbGluZSBudW1iZXIgb2YgdGhhdCBsaW5lIHdpdGhpbiB0aGUgZmlsZS4KICAgICIiIgogICAgaWYgbm90IF9zdGF0ZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIm5vIGFjdGl2ZSBpbnB1dCgpIikKICAgIHJldHVybiBfc3RhdGUuZmlsZWxpbmVubygpCgpkZWYgZmlsZW5vKCk6CiAgICAiIiIKICAgIFJldHVybiB0aGUgZmlsZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgZmlsZS4gV2hlbiBubyBmaWxlIGlzIGN1cnJlbnRseQogICAgb3BlbmVkLCByZXR1cm5zIC0xLgogICAgIiIiCiAgICBpZiBub3QgX3N0YXRlOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigibm8gYWN0aXZlIGlucHV0KCkiKQogICAgcmV0dXJuIF9zdGF0ZS5maWxlbm8oKQoKZGVmIGlzZmlyc3RsaW5lKCk6CiAgICAiIiIKICAgIFJldHVybnMgdHJ1ZSB0aGUgbGluZSBqdXN0IHJlYWQgaXMgdGhlIGZpcnN0IGxpbmUgb2YgaXRzIGZpbGUsCiAgICBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KICAgICIiIgogICAgaWYgbm90IF9zdGF0ZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIm5vIGFjdGl2ZSBpbnB1dCgpIikKICAgIHJldHVybiBfc3RhdGUuaXNmaXJzdGxpbmUoKQoKZGVmIGlzc3RkaW4oKToKICAgICIiIgogICAgUmV0dXJucyB0cnVlIGlmIHRoZSBsYXN0IGxpbmUgd2FzIHJlYWQgZnJvbSBzeXMuc3RkaW4sCiAgICBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KICAgICIiIgogICAgaWYgbm90IF9zdGF0ZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIm5vIGFjdGl2ZSBpbnB1dCgpIikKICAgIHJldHVybiBfc3RhdGUuaXNzdGRpbigpCgpjbGFzcyBGaWxlSW5wdXQ6CiAgICAiIiJGaWxlSW5wdXQoW2ZpbGVzWywgaW5wbGFjZVssIGJhY2t1cF1dXSwgKiwgbW9kZT1Ob25lLCBvcGVuaG9vaz1Ob25lKQoKICAgIENsYXNzIEZpbGVJbnB1dCBpcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZHVsZTsgaXRzIG1ldGhvZHMKICAgIGZpbGVuYW1lKCksIGxpbmVubygpLCBmaWxlbGluZSgpLCBpc2ZpcnN0bGluZSgpLCBpc3N0ZGluKCksIGZpbGVubygpLAogICAgbmV4dGZpbGUoKSBhbmQgY2xvc2UoKSBjb3JyZXNwb25kIHRvIHRoZSBmdW5jdGlvbnMgb2YgdGhlIHNhbWUgbmFtZQogICAgaW4gdGhlIG1vZHVsZS4KICAgIEluIGFkZGl0aW9uIGl0IGhhcyBhIHJlYWRsaW5lKCkgbWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIG5leHQKICAgIGlucHV0IGxpbmUsIGFuZCBhIF9fZ2V0aXRlbV9fKCkgbWV0aG9kIHdoaWNoIGltcGxlbWVudHMgdGhlCiAgICBzZXF1ZW5jZSBiZWhhdmlvci4gVGhlIHNlcXVlbmNlIG11c3QgYmUgYWNjZXNzZWQgaW4gc3RyaWN0bHkKICAgIHNlcXVlbnRpYWwgb3JkZXI7IHJhbmRvbSBhY2Nlc3MgYW5kIHJlYWRsaW5lKCkgY2Fubm90IGJlIG1peGVkLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzPU5vbmUsIGlucGxhY2U9RmFsc2UsIGJhY2t1cD0iIiwgKiwKICAgICAgICAgICAgICAgICBtb2RlPSJyIiwgb3Blbmhvb2s9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZXMsIHN0cik6CiAgICAgICAgICAgIGZpbGVzID0gKGZpbGVzLCkKICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmlsZXMsIG9zLlBhdGhMaWtlKToKICAgICAgICAgICAgZmlsZXMgPSAob3MuZnNwYXRoKGZpbGVzKSwgKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGZpbGVzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBmaWxlcyA9IHN5cy5hcmd2WzE6XQogICAgICAgICAgICBpZiBub3QgZmlsZXM6CiAgICAgICAgICAgICAgICBmaWxlcyA9ICgnLScsKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZmlsZXMgPSB0dXBsZShmaWxlcykKICAgICAgICBzZWxmLl9maWxlcyA9IGZpbGVzCiAgICAgICAgc2VsZi5faW5wbGFjZSA9IGlucGxhY2UKICAgICAgICBzZWxmLl9iYWNrdXAgPSBiYWNrdXAKICAgICAgICBzZWxmLl9zYXZlc3Rkb3V0ID0gTm9uZQogICAgICAgIHNlbGYuX291dHB1dCA9IE5vbmUKICAgICAgICBzZWxmLl9maWxlbmFtZSA9IE5vbmUKICAgICAgICBzZWxmLl9zdGFydGxpbmVubyA9IDAKICAgICAgICBzZWxmLl9maWxlbGluZW5vID0gMAogICAgICAgIHNlbGYuX2ZpbGUgPSBOb25lCiAgICAgICAgc2VsZi5faXNzdGRpbiA9IEZhbHNlCiAgICAgICAgc2VsZi5fYmFja3VwZmlsZW5hbWUgPSBOb25lCiAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSBlbmNvZGluZwogICAgICAgIHNlbGYuX2Vycm9ycyA9IGVycm9ycwoKICAgICAgICAjIFdlIGNhbiBub3QgdXNlIGlvLnRleHRfZW5jb2RpbmcoKSBoZXJlIGJlY2F1c2Ugb2xkIG9wZW5ob29rIGRvZXNuJ3QKICAgICAgICAjIHRha2UgZW5jb2RpbmcgcGFyYW1ldGVyLgogICAgICAgIGlmIChzeXMuZmxhZ3Mud2Fybl9kZWZhdWx0X2VuY29kaW5nIGFuZAogICAgICAgICAgICAgICAgImIiIG5vdCBpbiBtb2RlIGFuZCBlbmNvZGluZyBpcyBOb25lIGFuZCBvcGVuaG9vayBpcyBOb25lKToKICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIidlbmNvZGluZycgYXJndW1lbnQgbm90IHNwZWNpZmllZC4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIEVuY29kaW5nV2FybmluZywgMikKCiAgICAgICAgIyByZXN0cmljdCBtb2RlIGFyZ3VtZW50IHRvIHJlYWRpbmcgbW9kZXMKICAgICAgICBpZiBtb2RlIG5vdCBpbiAoJ3InLCAncmInKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRmlsZUlucHV0IG9wZW5pbmcgbW9kZSBtdXN0IGJlICdyJyBvciAncmInIikKICAgICAgICBzZWxmLl9tb2RlID0gbW9kZQogICAgICAgIHNlbGYuX3dyaXRlX21vZGUgPSBtb2RlLnJlcGxhY2UoJ3InLCAndycpCiAgICAgICAgaWYgb3Blbmhvb2s6CiAgICAgICAgICAgIGlmIGlucGxhY2U6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJGaWxlSW5wdXQgY2Fubm90IHVzZSBhbiBvcGVuaW5nIGhvb2sgaW4gaW5wbGFjZSBtb2RlIikKICAgICAgICAgICAgaWYgbm90IGNhbGxhYmxlKG9wZW5ob29rKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZpbGVJbnB1dCBvcGVuaG9vayBtdXN0IGJlIGNhbGxhYmxlIikKICAgICAgICBzZWxmLl9vcGVuaG9vayA9IG9wZW5ob29rCgogICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5uZXh0ZmlsZSgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fZmlsZXMgPSAoKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CiAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fbmV4dF9fKHNlbGYpOgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9yZWFkbGluZSgpCiAgICAgICAgICAgIGlmIGxpbmU6CiAgICAgICAgICAgICAgICBzZWxmLl9maWxlbGluZW5vICs9IDEKICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlOgogICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICAgICBzZWxmLm5leHRmaWxlKCkKICAgICAgICAgICAgIyByZXBlYXQgd2l0aCBuZXh0IGZpbGUKCiAgICBkZWYgbmV4dGZpbGUoc2VsZik6CiAgICAgICAgc2F2ZXN0ZG91dCA9IHNlbGYuX3NhdmVzdGRvdXQKICAgICAgICBzZWxmLl9zYXZlc3Rkb3V0ID0gTm9uZQogICAgICAgIGlmIHNhdmVzdGRvdXQ6CiAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlc3Rkb3V0CgogICAgICAgIG91dHB1dCA9IHNlbGYuX291dHB1dAogICAgICAgIHNlbGYuX291dHB1dCA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIG91dHB1dDoKICAgICAgICAgICAgICAgIG91dHB1dC5jbG9zZSgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgZmlsZSA9IHNlbGYuX2ZpbGUKICAgICAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZGVsIHNlbGYuX3JlYWRsaW5lICAjIHJlc3RvcmUgRmlsZUlucHV0Ll9yZWFkbGluZQogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGZpbGUgYW5kIG5vdCBzZWxmLl9pc3N0ZGluOgogICAgICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgYmFja3VwZmlsZW5hbWUgPSBzZWxmLl9iYWNrdXBmaWxlbmFtZQogICAgICAgICAgICAgICAgc2VsZi5fYmFja3VwZmlsZW5hbWUgPSBOb25lCiAgICAgICAgICAgICAgICBpZiBiYWNrdXBmaWxlbmFtZSBhbmQgbm90IHNlbGYuX2JhY2t1cDoKICAgICAgICAgICAgICAgICAgICB0cnk6IG9zLnVubGluayhiYWNrdXBmaWxlbmFtZSkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjogcGFzcwoKICAgICAgICAgICAgICAgIHNlbGYuX2lzc3RkaW4gPSBGYWxzZQoKICAgIGRlZiByZWFkbGluZShzZWxmKToKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBsaW5lID0gc2VsZi5fcmVhZGxpbmUoKQogICAgICAgICAgICBpZiBsaW5lOgogICAgICAgICAgICAgICAgc2VsZi5fZmlsZWxpbmVubyArPSAxCiAgICAgICAgICAgICAgICByZXR1cm4gbGluZQogICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZToKICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCiAgICAgICAgICAgIHNlbGYubmV4dGZpbGUoKQogICAgICAgICAgICAjIHJlcGVhdCB3aXRoIG5leHQgZmlsZQoKICAgIGRlZiBfcmVhZGxpbmUoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzOgogICAgICAgICAgICBpZiAnYicgaW4gc2VsZi5fbW9kZToKICAgICAgICAgICAgICAgIHJldHVybiBiJycKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiAnJwogICAgICAgIHNlbGYuX2ZpbGVuYW1lID0gc2VsZi5fZmlsZXNbMF0KICAgICAgICBzZWxmLl9maWxlcyA9IHNlbGYuX2ZpbGVzWzE6XQogICAgICAgIHNlbGYuX3N0YXJ0bGluZW5vID0gc2VsZi5saW5lbm8oKQogICAgICAgIHNlbGYuX2ZpbGVsaW5lbm8gPSAwCiAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKICAgICAgICBzZWxmLl9pc3N0ZGluID0gRmFsc2UKICAgICAgICBzZWxmLl9iYWNrdXBmaWxlbmFtZSA9IDAKCiAgICAgICAgIyBFbmNvZGluZ1dhcm5pbmcgaXMgZW1pdHRlZCBpbiBfX2luaXRfXygpIGFscmVhZHkKICAgICAgICBpZiAiYiIgbm90IGluIHNlbGYuX21vZGU6CiAgICAgICAgICAgIGVuY29kaW5nID0gc2VsZi5fZW5jb2Rpbmcgb3IgImxvY2FsZSIKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKCiAgICAgICAgaWYgc2VsZi5fZmlsZW5hbWUgPT0gJy0nOgogICAgICAgICAgICBzZWxmLl9maWxlbmFtZSA9ICc8c3RkaW4+JwogICAgICAgICAgICBpZiAnYicgaW4gc2VsZi5fbW9kZToKICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBnZXRhdHRyKHN5cy5zdGRpbiwgJ2J1ZmZlcicsIHN5cy5zdGRpbikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBzeXMuc3RkaW4KICAgICAgICAgICAgc2VsZi5faXNzdGRpbiA9IFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzZWxmLl9pbnBsYWNlOgogICAgICAgICAgICAgICAgc2VsZi5fYmFja3VwZmlsZW5hbWUgPSAoCiAgICAgICAgICAgICAgICAgICAgb3MuZnNwYXRoKHNlbGYuX2ZpbGVuYW1lKSArIChzZWxmLl9iYWNrdXAgb3IgIi5iYWsiKSkKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5fYmFja3VwZmlsZW5hbWUpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAjIFRoZSBuZXh0IGZldyBsaW5lcyBtYXkgcmFpc2UgT1NFcnJvcgogICAgICAgICAgICAgICAgb3MucmVuYW1lKHNlbGYuX2ZpbGVuYW1lLCBzZWxmLl9iYWNrdXBmaWxlbmFtZSkKICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBvcGVuKHNlbGYuX2JhY2t1cGZpbGVuYW1lLCBzZWxmLl9tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1zZWxmLl9lcnJvcnMpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcGVybSA9IG9zLmZzdGF0KHNlbGYuX2ZpbGUuZmlsZW5vKCkpLnN0X21vZGUKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX291dHB1dCA9IG9wZW4oc2VsZi5fZmlsZW5hbWUsIHNlbGYuX3dyaXRlX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPXNlbGYuX2Vycm9ycykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbW9kZSA9IG9zLk9fQ1JFQVQgfCBvcy5PX1dST05MWSB8IG9zLk9fVFJVTkMKICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9zLCAnT19CSU5BUlknKToKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSB8PSBvcy5PX0JJTkFSWQoKICAgICAgICAgICAgICAgICAgICBmZCA9IG9zLm9wZW4oc2VsZi5fZmlsZW5hbWUsIG1vZGUsIHBlcm0pCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3V0cHV0ID0gb3MuZmRvcGVuKGZkLCBzZWxmLl93cml0ZV9tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPXNlbGYuX2Vycm9ycykKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuX2ZpbGVuYW1lLCBwZXJtKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBzZWxmLl9zYXZlc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX291dHB1dAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBUaGlzIG1heSByYWlzZSBPU0Vycm9yCiAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcGVuaG9vazoKICAgICAgICAgICAgICAgICAgICAjIEN1c3RvbSBob29rcyBtYWRlIHByZXZpb3VzIHRvIFB5dGhvbiAzLjEwIGRpZG4ndCBoYXZlCiAgICAgICAgICAgICAgICAgICAgIyBlbmNvZGluZyBhcmd1bWVudAogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2VuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBzZWxmLl9vcGVuaG9vayhzZWxmLl9maWxlbmFtZSwgc2VsZi5fbW9kZSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlID0gc2VsZi5fb3Blbmhvb2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlbmFtZSwgc2VsZi5fbW9kZSwgZW5jb2Rpbmc9c2VsZi5fZW5jb2RpbmcsIGVycm9ycz1zZWxmLl9lcnJvcnMpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVuYW1lLCBzZWxmLl9tb2RlLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPXNlbGYuX2Vycm9ycykKICAgICAgICBzZWxmLl9yZWFkbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxpbmUgICMgaGlkZSBGaWxlSW5wdXQuX3JlYWRsaW5lCiAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRsaW5lKCkKCiAgICBkZWYgZmlsZW5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVuYW1lCgogICAgZGVmIGxpbmVubyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc3RhcnRsaW5lbm8gKyBzZWxmLl9maWxlbGluZW5vCgogICAgZGVmIGZpbGVsaW5lbm8oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVsaW5lbm8KCiAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2ZpbGU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maWxlLmZpbGVubygpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIC0xCgogICAgZGVmIGlzZmlyc3RsaW5lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9maWxlbGluZW5vID09IDEKCiAgICBkZWYgaXNzdGRpbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5faXNzdGRpbgoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKCmRlZiBob29rX2NvbXByZXNzZWQoZmlsZW5hbWUsIG1vZGUsICosIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6ICAjIEVuY29kaW5nV2FybmluZyBpcyBlbWl0dGVkIGluIEZpbGVJbnB1dCgpIGFscmVhZHkuCiAgICAgICAgZW5jb2RpbmcgPSAibG9jYWxlIgogICAgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0KICAgIGlmIGV4dCA9PSAnLmd6JzoKICAgICAgICBpbXBvcnQgZ3ppcAogICAgICAgIHN0cmVhbSA9IGd6aXAub3BlbihmaWxlbmFtZSwgbW9kZSkKICAgIGVsaWYgZXh0ID09ICcuYnoyJzoKICAgICAgICBpbXBvcnQgYnoyCiAgICAgICAgc3RyZWFtID0gYnoyLkJaMkZpbGUoZmlsZW5hbWUsIG1vZGUpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBvcGVuKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKCiAgICAjIGd6aXAgYW5kIGJ6MiBhcmUgYmluYXJ5IG1vZGUgYnkgZGVmYXVsdC4KICAgIGlmICJiIiBub3QgaW4gbW9kZToKICAgICAgICBzdHJlYW0gPSBpby5UZXh0SU9XcmFwcGVyKHN0cmVhbSwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAgICByZXR1cm4gc3RyZWFtCgoKZGVmIGhvb2tfZW5jb2RlZChlbmNvZGluZywgZXJyb3JzPU5vbmUpOgogICAgZGVmIG9wZW5ob29rKGZpbGVuYW1lLCBtb2RlKToKICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAgICByZXR1cm4gb3Blbmhvb2sKCgpkZWYgX3Rlc3QoKToKICAgIGltcG9ydCBnZXRvcHQKICAgIGlucGxhY2UgPSBGYWxzZQogICAgYmFja3VwID0gRmFsc2UKICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgImliOiIpCiAgICBmb3IgbywgYSBpbiBvcHRzOgogICAgICAgIGlmIG8gPT0gJy1pJzogaW5wbGFjZSA9IFRydWUKICAgICAgICBpZiBvID09ICctYic6IGJhY2t1cCA9IGEKICAgIGZvciBsaW5lIGluIGlucHV0KGFyZ3MsIGlucGxhY2U9aW5wbGFjZSwgYmFja3VwPWJhY2t1cCk6CiAgICAgICAgaWYgbGluZVstMTpdID09ICdcbic6IGxpbmUgPSBsaW5lWzotMV0KICAgICAgICBpZiBsaW5lWy0xOl0gPT0gJ1xyJzogbGluZSA9IGxpbmVbOi0xXQogICAgICAgIHByaW50KCIlZDogJXNbJWRdJXMgJXMiICUgKGxpbmVubygpLCBmaWxlbmFtZSgpLCBmaWxlbGluZW5vKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNmaXJzdGxpbmUoKSBhbmQgIioiIG9yICIiLCBsaW5lKSkKICAgIHByaW50KCIlZDogJXNbJWRdIiAlIChsaW5lbm8oKSwgZmlsZW5hbWUoKSwgZmlsZWxpbmVubygpKSkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBfdGVzdCgpClBLAwQUAAAAAAACIKNWjWdF8G8XAABvFwAACgAAAGZubWF0Y2gucHkiIiJGaWxlbmFtZSBtYXRjaGluZyB3aXRoIHNoZWxsIHBhdHRlcm5zLgoKZm5tYXRjaChGSUxFTkFNRSwgUEFUVEVSTikgbWF0Y2hlcyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIGNvbnZlbnRpb24uCmZubWF0Y2hjYXNlKEZJTEVOQU1FLCBQQVRURVJOKSBhbHdheXMgdGFrZXMgY2FzZSBpbiBhY2NvdW50LgoKVGhlIGZ1bmN0aW9ucyBvcGVyYXRlIGJ5IHRyYW5zbGF0aW5nIHRoZSBwYXR0ZXJuIGludG8gYSByZWd1bGFyCmV4cHJlc3Npb24uICBUaGV5IGNhY2hlIHRoZSBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zIGZvciBzcGVlZC4KClRoZSBmdW5jdGlvbiB0cmFuc2xhdGUoUEFUVEVSTikgcmV0dXJucyBhIHJlZ3VsYXIgZXhwcmVzc2lvbgpjb3JyZXNwb25kaW5nIHRvIFBBVFRFUk4uICAoSXQgZG9lcyBub3QgY29tcGlsZSBpdC4pCiIiIgppbXBvcnQgb3MKaW1wb3J0IHBvc2l4cGF0aAppbXBvcnQgcmUKaW1wb3J0IGZ1bmN0b29scwoKX19hbGxfXyA9IFsiZmlsdGVyIiwgImZubWF0Y2giLCAiZm5tYXRjaGNhc2UiLCAidHJhbnNsYXRlIl0KCmRlZiBmbm1hdGNoKG5hbWUsIHBhdCk6CiAgICAiIiJUZXN0IHdoZXRoZXIgRklMRU5BTUUgbWF0Y2hlcyBQQVRURVJOLgoKICAgIFBhdHRlcm5zIGFyZSBVbml4IHNoZWxsIHN0eWxlOgoKICAgICogICAgICAgbWF0Y2hlcyBldmVyeXRoaW5nCiAgICA/ICAgICAgIG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIKICAgIFtzZXFdICAgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIGluIHNlcQogICAgWyFzZXFdICBtYXRjaGVzIGFueSBjaGFyIG5vdCBpbiBzZXEKCiAgICBBbiBpbml0aWFsIHBlcmlvZCBpbiBGSUxFTkFNRSBpcyBub3Qgc3BlY2lhbC4KICAgIEJvdGggRklMRU5BTUUgYW5kIFBBVFRFUk4gYXJlIGZpcnN0IGNhc2Utbm9ybWFsaXplZAogICAgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmVxdWlyZXMgaXQuCiAgICBJZiB5b3UgZG9uJ3Qgd2FudCB0aGlzLCB1c2UgZm5tYXRjaGNhc2UoRklMRU5BTUUsIFBBVFRFUk4pLgogICAgIiIiCiAgICBuYW1lID0gb3MucGF0aC5ub3JtY2FzZShuYW1lKQogICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCiAgICByZXR1cm4gZm5tYXRjaGNhc2UobmFtZSwgcGF0KQoKQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT0zMjc2OCwgdHlwZWQ9VHJ1ZSkKZGVmIF9jb21waWxlX3BhdHRlcm4ocGF0KToKICAgIGlmIGlzaW5zdGFuY2UocGF0LCBieXRlcyk6CiAgICAgICAgcGF0X3N0ciA9IHN0cihwYXQsICdJU08tODg1OS0xJykKICAgICAgICByZXNfc3RyID0gdHJhbnNsYXRlKHBhdF9zdHIpCiAgICAgICAgcmVzID0gYnl0ZXMocmVzX3N0ciwgJ0lTTy04ODU5LTEnKQogICAgZWxzZToKICAgICAgICByZXMgPSB0cmFuc2xhdGUocGF0KQogICAgcmV0dXJuIHJlLmNvbXBpbGUocmVzKS5tYXRjaAoKZGVmIGZpbHRlcihuYW1lcywgcGF0KToKICAgICIiIkNvbnN0cnVjdCBhIGxpc3QgZnJvbSB0aG9zZSBlbGVtZW50cyBvZiB0aGUgaXRlcmFibGUgTkFNRVMgdGhhdCBtYXRjaCBQQVQuIiIiCiAgICByZXN1bHQgPSBbXQogICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCiAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0KQogICAgaWYgb3MucGF0aCBpcyBwb3NpeHBhdGg6CiAgICAgICAgIyBub3JtY2FzZSBvbiBwb3NpeCBpcyBOT1AuIE9wdGltaXplIGl0IGF3YXkgZnJvbSB0aGUgbG9vcC4KICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgICAgaWYgbWF0Y2gobmFtZSk6CiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5hbWUpCiAgICBlbHNlOgogICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICAgICBpZiBtYXRjaChvcy5wYXRoLm5vcm1jYXNlKG5hbWUpKToKICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobmFtZSkKICAgIHJldHVybiByZXN1bHQKCmRlZiBmbm1hdGNoY2FzZShuYW1lLCBwYXQpOgogICAgIiIiVGVzdCB3aGV0aGVyIEZJTEVOQU1FIG1hdGNoZXMgUEFUVEVSTiwgaW5jbHVkaW5nIGNhc2UuCgogICAgVGhpcyBpcyBhIHZlcnNpb24gb2YgZm5tYXRjaCgpIHdoaWNoIGRvZXNuJ3QgY2FzZS1ub3JtYWxpemUKICAgIGl0cyBhcmd1bWVudHMuCiAgICAiIiIKICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQpCiAgICByZXR1cm4gbWF0Y2gobmFtZSkgaXMgbm90IE5vbmUKCgpkZWYgdHJhbnNsYXRlKHBhdCk6CiAgICAiIiJUcmFuc2xhdGUgYSBzaGVsbCBQQVRURVJOIHRvIGEgcmVndWxhciBleHByZXNzaW9uLgoKICAgIFRoZXJlIGlzIG5vIHdheSB0byBxdW90ZSBtZXRhLWNoYXJhY3RlcnMuCiAgICAiIiIKCiAgICBTVEFSID0gb2JqZWN0KCkKICAgIHJlcyA9IFtdCiAgICBhZGQgPSByZXMuYXBwZW5kCiAgICBpLCBuID0gMCwgbGVuKHBhdCkKICAgIHdoaWxlIGkgPCBuOgogICAgICAgIGMgPSBwYXRbaV0KICAgICAgICBpID0gaSsxCiAgICAgICAgaWYgYyA9PSAnKic6CiAgICAgICAgICAgICMgY29tcHJlc3MgY29uc2VjdXRpdmUgYCpgIGludG8gb25lCiAgICAgICAgICAgIGlmIChub3QgcmVzKSBvciByZXNbLTFdIGlzIG5vdCBTVEFSOgogICAgICAgICAgICAgICAgYWRkKFNUQVIpCiAgICAgICAgZWxpZiBjID09ICc/JzoKICAgICAgICAgICAgYWRkKCcuJykKICAgICAgICBlbGlmIGMgPT0gJ1snOgogICAgICAgICAgICBqID0gaQogICAgICAgICAgICBpZiBqIDwgbiBhbmQgcGF0W2pdID09ICchJzoKICAgICAgICAgICAgICAgIGogPSBqKzEKICAgICAgICAgICAgaWYgaiA8IG4gYW5kIHBhdFtqXSA9PSAnXSc6CiAgICAgICAgICAgICAgICBqID0gaisxCiAgICAgICAgICAgIHdoaWxlIGogPCBuIGFuZCBwYXRbal0gIT0gJ10nOgogICAgICAgICAgICAgICAgaiA9IGorMQogICAgICAgICAgICBpZiBqID49IG46CiAgICAgICAgICAgICAgICBhZGQoJ1xcWycpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzdHVmZiA9IHBhdFtpOmpdCiAgICAgICAgICAgICAgICBpZiAnLScgbm90IGluIHN0dWZmOgogICAgICAgICAgICAgICAgICAgIHN0dWZmID0gc3R1ZmYucmVwbGFjZSgnXFwnLCByJ1xcJykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gW10KICAgICAgICAgICAgICAgICAgICBrID0gaSsyIGlmIHBhdFtpXSA9PSAnIScgZWxzZSBpKzEKICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgICAgICBrID0gcGF0LmZpbmQoJy0nLCBrLCBqKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBrIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rcy5hcHBlbmQocGF0W2k6a10pCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBrKzEKICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsrMwogICAgICAgICAgICAgICAgICAgIGNodW5rID0gcGF0W2k6al0KICAgICAgICAgICAgICAgICAgICBpZiBjaHVuazoKICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChjaHVuaykKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBjaHVua3NbLTFdICs9ICctJwogICAgICAgICAgICAgICAgICAgICMgUmVtb3ZlIGVtcHR5IHJhbmdlcyAtLSBpbnZhbGlkIGluIFJFLgogICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGxlbihjaHVua3MpLTEsIDAsIC0xKToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtzW2stMV1bLTFdID4gY2h1bmtzW2tdWzBdOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzW2stMV0gPSBjaHVua3Nbay0xXVs6LTFdICsgY2h1bmtzW2tdWzE6XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGNodW5rc1trXQogICAgICAgICAgICAgICAgICAgICMgRXNjYXBlIGJhY2tzbGFzaGVzIGFuZCBoeXBoZW5zIGZvciBzZXQgZGlmZmVyZW5jZSAoLS0pLgogICAgICAgICAgICAgICAgICAgICMgSHlwaGVucyB0aGF0IGNyZWF0ZSByYW5nZXMgc2hvdWxkbid0IGJlIGVzY2FwZWQuCiAgICAgICAgICAgICAgICAgICAgc3R1ZmYgPSAnLScuam9pbihzLnJlcGxhY2UoJ1xcJywgcidcXCcpLnJlcGxhY2UoJy0nLCByJ1wtJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGNodW5rcykKICAgICAgICAgICAgICAgICMgRXNjYXBlIHNldCBvcGVyYXRpb25zICgmJiwgfn4gYW5kIHx8KS4KICAgICAgICAgICAgICAgIHN0dWZmID0gcmUuc3ViKHInKFsmfnxdKScsIHInXFxcMScsIHN0dWZmKQogICAgICAgICAgICAgICAgaSA9IGorMQogICAgICAgICAgICAgICAgaWYgbm90IHN0dWZmOgogICAgICAgICAgICAgICAgICAgICMgRW1wdHkgcmFuZ2U6IG5ldmVyIG1hdGNoLgogICAgICAgICAgICAgICAgICAgIGFkZCgnKD8hKScpCiAgICAgICAgICAgICAgICBlbGlmIHN0dWZmID09ICchJzoKICAgICAgICAgICAgICAgICAgICAjIE5lZ2F0ZWQgZW1wdHkgcmFuZ2U6IG1hdGNoIGFueSBjaGFyYWN0ZXIuCiAgICAgICAgICAgICAgICAgICAgYWRkKCcuJykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaWYgc3R1ZmZbMF0gPT0gJyEnOgogICAgICAgICAgICAgICAgICAgICAgICBzdHVmZiA9ICdeJyArIHN0dWZmWzE6XQogICAgICAgICAgICAgICAgICAgIGVsaWYgc3R1ZmZbMF0gaW4gKCdeJywgJ1snKToKICAgICAgICAgICAgICAgICAgICAgICAgc3R1ZmYgPSAnXFwnICsgc3R1ZmYKICAgICAgICAgICAgICAgICAgICBhZGQoZidbe3N0dWZmfV0nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGFkZChyZS5lc2NhcGUoYykpCiAgICBhc3NlcnQgaSA9PSBuCgogICAgIyBEZWFsIHdpdGggU1RBUnMuCiAgICBpbnAgPSByZXMKICAgIHJlcyA9IFtdCiAgICBhZGQgPSByZXMuYXBwZW5kCiAgICBpLCBuID0gMCwgbGVuKGlucCkKICAgICMgRml4ZWQgcGllY2VzIGF0IHRoZSBzdGFydD8KICAgIHdoaWxlIGkgPCBuIGFuZCBpbnBbaV0gaXMgbm90IFNUQVI6CiAgICAgICAgYWRkKGlucFtpXSkKICAgICAgICBpICs9IDEKICAgICMgTm93IGRlYWwgd2l0aCBTVEFSIGZpeGVkIFNUQVIgZml4ZWQgLi4uCiAgICAjIEZvciBhbiBpbnRlcmlvciBgU1RBUiBmaXhlZGAgcGFpcmluZywgd2Ugd2FudCB0byBkbyBhIG1pbmltYWwKICAgICMgLio/IG1hdGNoIGZvbGxvd2VkIGJ5IGBmaXhlZGAsIHdpdGggbm8gcG9zc2liaWxpdHkgb2YgYmFja3RyYWNraW5nLgogICAgIyBBdG9taWMgZ3JvdXBzICgiKD8+Li4uKSIpIGFsbG93IHVzIHRvIHNwZWxsIHRoYXQgZGlyZWN0bHkuCiAgICAjIE5vdGU6IHBlb3BsZSByZWx5IG9uIHRoZSB1bmRvY3VtZW50ZWQgYWJpbGl0eSB0byBqb2luIG11bHRpcGxlCiAgICAjIHRyYW5zbGF0ZSgpIHJlc3VsdHMgdG9nZXRoZXIgdmlhICJ8IiB0byBidWlsZCBsYXJnZSByZWdleHBzIG1hdGNoaW5nCiAgICAjICJvbmUgb2YgbWFueSIgc2hlbGwgcGF0dGVybnMuCiAgICB3aGlsZSBpIDwgbjoKICAgICAgICBhc3NlcnQgaW5wW2ldIGlzIFNUQVIKICAgICAgICBpICs9IDEKICAgICAgICBpZiBpID09IG46CiAgICAgICAgICAgIGFkZCgiLioiKQogICAgICAgICAgICBicmVhawogICAgICAgIGFzc2VydCBpbnBbaV0gaXMgbm90IFNUQVIKICAgICAgICBmaXhlZCA9IFtdCiAgICAgICAgd2hpbGUgaSA8IG4gYW5kIGlucFtpXSBpcyBub3QgU1RBUjoKICAgICAgICAgICAgZml4ZWQuYXBwZW5kKGlucFtpXSkKICAgICAgICAgICAgaSArPSAxCiAgICAgICAgZml4ZWQgPSAiIi5qb2luKGZpeGVkKQogICAgICAgIGlmIGkgPT0gbjoKICAgICAgICAgICAgYWRkKCIuKiIpCiAgICAgICAgICAgIGFkZChmaXhlZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBhZGQoZiIoPz4uKj97Zml4ZWR9KSIpCiAgICBhc3NlcnQgaSA9PSBuCiAgICByZXMgPSAiIi5qb2luKHJlcykKICAgIHJldHVybiBmcicoP3M6e3Jlc30pXFonClBLAwQUAAAAAAACIKNWufMYu/tvAAD7bwAADAAAAGZyYWN0aW9ucy5weSMgT3JpZ2luYWxseSBjb250cmlidXRlZCBieSBTam9lcmQgTXVsbGVuZGVyLgojIFNpZ25pZmljYW50bHkgbW9kaWZpZWQgYnkgSmVmZnJleSBZYXNza2luIDxqeWFzc2tpbiBhdCBnbWFpbC5jb20+LgoKIiIiRnJhY3Rpb24sIGluZmluaXRlLXByZWNpc2lvbiwgcmF0aW9uYWwgbnVtYmVycy4iIiIKCmZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAppbXBvcnQgbWF0aAppbXBvcnQgbnVtYmVycwppbXBvcnQgb3BlcmF0b3IKaW1wb3J0IHJlCmltcG9ydCBzeXMKCl9fYWxsX18gPSBbJ0ZyYWN0aW9uJ10KCgojIENvbnN0YW50cyByZWxhdGVkIHRvIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uOyAgaGFzaCh4KSBpcyBiYXNlZAojIG9uIHRoZSByZWR1Y3Rpb24gb2YgeCBtb2R1bG8gdGhlIHByaW1lIF9QeUhBU0hfTU9EVUxVUy4KX1B5SEFTSF9NT0RVTFVTID0gc3lzLmhhc2hfaW5mby5tb2R1bHVzCiMgVmFsdWUgdG8gYmUgdXNlZCBmb3IgcmF0aW9uYWxzIHRoYXQgcmVkdWNlIHRvIGluZmluaXR5IG1vZHVsbwojIF9QeUhBU0hfTU9EVUxVUy4KX1B5SEFTSF9JTkYgPSBzeXMuaGFzaF9pbmZvLmluZgoKX1JBVElPTkFMX0ZPUk1BVCA9IHJlLmNvbXBpbGUociIiIgogICAgXEFccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0LAogICAgKD9QPHNpZ24+Wy0rXT8pICAgICAgICAgICAgICAgICAgICAgICAjIGFuIG9wdGlvbmFsIHNpZ24sIHRoZW4KICAgICg/PVxkfFwuXGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29rYWhlYWQgZm9yIGRpZ2l0IG9yIC5kaWdpdAogICAgKD9QPG51bT5cZCp8XGQrKF9cZCspKikgICAgICAgICAgICAgICAjIG51bWVyYXRvciAocG9zc2libHkgZW1wdHkpCiAgICAoPzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9sbG93ZWQgYnkKICAgICAgICg/Oi8oP1A8ZGVub20+XGQrKF9cZCspKikpPyAgICAgICAgIyBhbiBvcHRpb25hbCBkZW5vbWluYXRvcgogICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yCiAgICAgICAoPzpcLig/UDxkZWNpbWFsPmQqfFxkKyhfXGQrKSopKT8gICMgYW4gb3B0aW9uYWwgZnJhY3Rpb25hbCBwYXJ0CiAgICAgICAoPzpFKD9QPGV4cD5bLStdP1xkKyhfXGQrKSopKT8gICAgICMgYW5kIG9wdGlvbmFsIGV4cG9uZW50CiAgICApCiAgICBccypcWiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIG9wdGlvbmFsIHdoaXRlc3BhY2UgdG8gZmluaXNoCiIiIiwgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UpCgoKY2xhc3MgRnJhY3Rpb24obnVtYmVycy5SYXRpb25hbCk6CiAgICAiIiJUaGlzIGNsYXNzIGltcGxlbWVudHMgcmF0aW9uYWwgbnVtYmVycy4KCiAgICBJbiB0aGUgdHdvLWFyZ3VtZW50IGZvcm0gb2YgdGhlIGNvbnN0cnVjdG9yLCBGcmFjdGlvbig4LCA2KSB3aWxsCiAgICBwcm9kdWNlIGEgcmF0aW9uYWwgbnVtYmVyIGVxdWl2YWxlbnQgdG8gNC8zLiBCb3RoIGFyZ3VtZW50cyBtdXN0CiAgICBiZSBSYXRpb25hbC4gVGhlIG51bWVyYXRvciBkZWZhdWx0cyB0byAwIGFuZCB0aGUgZGVub21pbmF0b3IKICAgIGRlZmF1bHRzIHRvIDEgc28gdGhhdCBGcmFjdGlvbigzKSA9PSAzIGFuZCBGcmFjdGlvbigpID09IDAuCgogICAgRnJhY3Rpb25zIGNhbiBhbHNvIGJlIGNvbnN0cnVjdGVkIGZyb206CgogICAgICAtIG51bWVyaWMgc3RyaW5ncyBzaW1pbGFyIHRvIHRob3NlIGFjY2VwdGVkIGJ5IHRoZQogICAgICAgIGZsb2F0IGNvbnN0cnVjdG9yIChmb3IgZXhhbXBsZSwgJy0yLjMnIG9yICcxZTEwJykKCiAgICAgIC0gc3RyaW5ncyBvZiB0aGUgZm9ybSAnMTIzLzQ1NicKCiAgICAgIC0gZmxvYXQgYW5kIERlY2ltYWwgaW5zdGFuY2VzCgogICAgICAtIG90aGVyIFJhdGlvbmFsIGluc3RhbmNlcyAoaW5jbHVkaW5nIGludGVnZXJzKQoKICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgnX251bWVyYXRvcicsICdfZGVub21pbmF0b3InKQoKICAgICMgV2UncmUgaW1tdXRhYmxlLCBzbyB1c2UgX19uZXdfXyBub3QgX19pbml0X18KICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUsICosIF9ub3JtYWxpemU9VHJ1ZSk6CiAgICAgICAgIiIiQ29uc3RydWN0cyBhIFJhdGlvbmFsLgoKICAgICAgICBUYWtlcyBhIHN0cmluZyBsaWtlICczLzInIG9yICcxLjUnLCBhbm90aGVyIFJhdGlvbmFsIGluc3RhbmNlLCBhCiAgICAgICAgbnVtZXJhdG9yL2Rlbm9taW5hdG9yIHBhaXIsIG9yIGEgZmxvYXQuCgogICAgICAgIEV4YW1wbGVzCiAgICAgICAgLS0tLS0tLS0KCiAgICAgICAgPj4+IEZyYWN0aW9uKDEwLCAtOCkKICAgICAgICBGcmFjdGlvbigtNSwgNCkKICAgICAgICA+Pj4gRnJhY3Rpb24oRnJhY3Rpb24oMSwgNyksIDUpCiAgICAgICAgRnJhY3Rpb24oMSwgMzUpCiAgICAgICAgPj4+IEZyYWN0aW9uKEZyYWN0aW9uKDEsIDcpLCBGcmFjdGlvbigyLCAzKSkKICAgICAgICBGcmFjdGlvbigzLCAxNCkKICAgICAgICA+Pj4gRnJhY3Rpb24oJzMxNCcpCiAgICAgICAgRnJhY3Rpb24oMzE0LCAxKQogICAgICAgID4+PiBGcmFjdGlvbignLTM1LzQnKQogICAgICAgIEZyYWN0aW9uKC0zNSwgNCkKICAgICAgICA+Pj4gRnJhY3Rpb24oJzMuMTQxNScpICMgY29udmVyc2lvbiBmcm9tIG51bWVyaWMgc3RyaW5nCiAgICAgICAgRnJhY3Rpb24oNjI4MywgMjAwMCkKICAgICAgICA+Pj4gRnJhY3Rpb24oJy00N2UtMicpICMgc3RyaW5nIG1heSBpbmNsdWRlIGEgZGVjaW1hbCBleHBvbmVudAogICAgICAgIEZyYWN0aW9uKC00NywgMTAwKQogICAgICAgID4+PiBGcmFjdGlvbigxLjQ3KSAgIyBkaXJlY3QgY29uc3RydWN0aW9uIGZyb20gZmxvYXQgKGV4YWN0IGNvbnZlcnNpb24pCiAgICAgICAgRnJhY3Rpb24oNjYyMDI5MTQ1MjIzNDYyOSwgNDUwMzU5OTYyNzM3MDQ5NikKICAgICAgICA+Pj4gRnJhY3Rpb24oMi4yNSkKICAgICAgICBGcmFjdGlvbig5LCA0KQogICAgICAgID4+PiBGcmFjdGlvbihEZWNpbWFsKCcxLjQ3JykpCiAgICAgICAgRnJhY3Rpb24oMTQ3LCAxMDApCgogICAgICAgICIiIgogICAgICAgIHNlbGYgPSBzdXBlcihGcmFjdGlvbiwgY2xzKS5fX25ld19fKGNscykKCiAgICAgICAgaWYgZGVub21pbmF0b3IgaXMgTm9uZToKICAgICAgICAgICAgaWYgdHlwZShudW1lcmF0b3IpIGlzIGludDoKICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IG51bWVyYXRvcgogICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSAxCiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgoKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgbnVtYmVycy5SYXRpb25hbCk6CiAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSBudW1lcmF0b3IubnVtZXJhdG9yCiAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IG51bWVyYXRvci5kZW5vbWluYXRvcgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIChmbG9hdCwgRGVjaW1hbCkpOgogICAgICAgICAgICAgICAgIyBFeGFjdCBjb252ZXJzaW9uCiAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IsIHNlbGYuX2Rlbm9taW5hdG9yID0gbnVtZXJhdG9yLmFzX2ludGVnZXJfcmF0aW8oKQogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIHN0cik6CiAgICAgICAgICAgICAgICAjIEhhbmRsZSBjb25zdHJ1Y3Rpb24gZnJvbSBzdHJpbmdzLgogICAgICAgICAgICAgICAgbSA9IF9SQVRJT05BTF9GT1JNQVQubWF0Y2gobnVtZXJhdG9yKQogICAgICAgICAgICAgICAgaWYgbSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgbGl0ZXJhbCBmb3IgRnJhY3Rpb246ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmF0b3IpCiAgICAgICAgICAgICAgICBudW1lcmF0b3IgPSBpbnQobS5ncm91cCgnbnVtJykgb3IgJzAnKQogICAgICAgICAgICAgICAgZGVub20gPSBtLmdyb3VwKCdkZW5vbScpCiAgICAgICAgICAgICAgICBpZiBkZW5vbToKICAgICAgICAgICAgICAgICAgICBkZW5vbWluYXRvciA9IGludChkZW5vbSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZGVub21pbmF0b3IgPSAxCiAgICAgICAgICAgICAgICAgICAgZGVjaW1hbCA9IG0uZ3JvdXAoJ2RlY2ltYWwnKQogICAgICAgICAgICAgICAgICAgIGlmIGRlY2ltYWw6CiAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWwgPSBkZWNpbWFsLnJlcGxhY2UoJ18nLCAnJykKICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSAxMCoqbGVuKGRlY2ltYWwpCiAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyYXRvciA9IG51bWVyYXRvciAqIHNjYWxlICsgaW50KGRlY2ltYWwpCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbm9taW5hdG9yICo9IHNjYWxlCiAgICAgICAgICAgICAgICAgICAgZXhwID0gbS5ncm91cCgnZXhwJykKICAgICAgICAgICAgICAgICAgICBpZiBleHA6CiAgICAgICAgICAgICAgICAgICAgICAgIGV4cCA9IGludChleHApCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4cCA+PSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJhdG9yICo9IDEwKipleHAKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbm9taW5hdG9yICo9IDEwKiotZXhwCiAgICAgICAgICAgICAgICBpZiBtLmdyb3VwKCdzaWduJykgPT0gJy0nOgogICAgICAgICAgICAgICAgICAgIG51bWVyYXRvciA9IC1udW1lcmF0b3IKCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgUmF0aW9uYWwgaW5zdGFuY2UiKQoKICAgICAgICBlbGlmIHR5cGUobnVtZXJhdG9yKSBpcyBpbnQgaXMgdHlwZShkZW5vbWluYXRvcik6CiAgICAgICAgICAgIHBhc3MgIyAqdmVyeSogbm9ybWFsIGNhc2UKCiAgICAgICAgZWxpZiAoaXNpbnN0YW5jZShudW1lcmF0b3IsIG51bWJlcnMuUmF0aW9uYWwpIGFuZAogICAgICAgICAgICBpc2luc3RhbmNlKGRlbm9taW5hdG9yLCBudW1iZXJzLlJhdGlvbmFsKSk6CiAgICAgICAgICAgIG51bWVyYXRvciwgZGVub21pbmF0b3IgPSAoCiAgICAgICAgICAgICAgICBudW1lcmF0b3IubnVtZXJhdG9yICogZGVub21pbmF0b3IuZGVub21pbmF0b3IsCiAgICAgICAgICAgICAgICBkZW5vbWluYXRvci5udW1lcmF0b3IgKiBudW1lcmF0b3IuZGVub21pbmF0b3IKICAgICAgICAgICAgICAgICkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJvdGggYXJndW1lbnRzIHNob3VsZCBiZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmF0aW9uYWwgaW5zdGFuY2VzIikKCiAgICAgICAgaWYgZGVub21pbmF0b3IgPT0gMDoKICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IoJ0ZyYWN0aW9uKCVzLCAwKScgJSBudW1lcmF0b3IpCiAgICAgICAgaWYgX25vcm1hbGl6ZToKICAgICAgICAgICAgZyA9IG1hdGguZ2NkKG51bWVyYXRvciwgZGVub21pbmF0b3IpCiAgICAgICAgICAgIGlmIGRlbm9taW5hdG9yIDwgMDoKICAgICAgICAgICAgICAgIGcgPSAtZwogICAgICAgICAgICBudW1lcmF0b3IgLy89IGcKICAgICAgICAgICAgZGVub21pbmF0b3IgLy89IGcKICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSBudW1lcmF0b3IKICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IGRlbm9taW5hdG9yCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tX2Zsb2F0KGNscywgZik6CiAgICAgICAgIiIiQ29udmVydHMgYSBmaW5pdGUgZmxvYXQgdG8gYSByYXRpb25hbCBudW1iZXIsIGV4YWN0bHkuCgogICAgICAgIEJld2FyZSB0aGF0IEZyYWN0aW9uLmZyb21fZmxvYXQoMC4zKSAhPSBGcmFjdGlvbigzLCAxMCkuCgogICAgICAgICIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UoZiwgbnVtYmVycy5JbnRlZ3JhbCk6CiAgICAgICAgICAgIHJldHVybiBjbHMoZikKICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcy5mcm9tX2Zsb2F0KCkgb25seSB0YWtlcyBmbG9hdHMsIG5vdCAlciAoJXMpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xzLl9fbmFtZV9fLCBmLCB0eXBlKGYpLl9fbmFtZV9fKSkKICAgICAgICByZXR1cm4gY2xzKCpmLmFzX2ludGVnZXJfcmF0aW8oKSkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tX2RlY2ltYWwoY2xzLCBkZWMpOgogICAgICAgICIiIkNvbnZlcnRzIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2UgdG8gYSByYXRpb25hbCBudW1iZXIsIGV4YWN0bHkuIiIiCiAgICAgICAgZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCiAgICAgICAgaWYgaXNpbnN0YW5jZShkZWMsIG51bWJlcnMuSW50ZWdyYWwpOgogICAgICAgICAgICBkZWMgPSBEZWNpbWFsKGludChkZWMpKQogICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZGVjLCBEZWNpbWFsKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgIiVzLmZyb21fZGVjaW1hbCgpIG9ubHkgdGFrZXMgRGVjaW1hbHMsIG5vdCAlciAoJXMpIiAlCiAgICAgICAgICAgICAgICAoY2xzLl9fbmFtZV9fLCBkZWMsIHR5cGUoZGVjKS5fX25hbWVfXykpCiAgICAgICAgcmV0dXJuIGNscygqZGVjLmFzX2ludGVnZXJfcmF0aW8oKSkKCiAgICBkZWYgYXNfaW50ZWdlcl9yYXRpbyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGludGVnZXIgcmF0aW8gYXMgYSB0dXBsZS4KCiAgICAgICAgUmV0dXJuIGEgdHVwbGUgb2YgdHdvIGludGVnZXJzLCB3aG9zZSByYXRpbyBpcyBlcXVhbCB0byB0aGUKICAgICAgICBGcmFjdGlvbiBhbmQgd2l0aCBhIHBvc2l0aXZlIGRlbm9taW5hdG9yLgogICAgICAgICIiIgogICAgICAgIHJldHVybiAoc2VsZi5fbnVtZXJhdG9yLCBzZWxmLl9kZW5vbWluYXRvcikKCiAgICBkZWYgbGltaXRfZGVub21pbmF0b3Ioc2VsZiwgbWF4X2Rlbm9taW5hdG9yPTEwMDAwMDApOgogICAgICAgICIiIkNsb3Nlc3QgRnJhY3Rpb24gdG8gc2VsZiB3aXRoIGRlbm9taW5hdG9yIGF0IG1vc3QgbWF4X2Rlbm9taW5hdG9yLgoKICAgICAgICA+Pj4gRnJhY3Rpb24oJzMuMTQxNTkyNjUzNTg5NzkzJykubGltaXRfZGVub21pbmF0b3IoMTApCiAgICAgICAgRnJhY3Rpb24oMjIsIDcpCiAgICAgICAgPj4+IEZyYWN0aW9uKCczLjE0MTU5MjY1MzU4OTc5MycpLmxpbWl0X2Rlbm9taW5hdG9yKDEwMCkKICAgICAgICBGcmFjdGlvbigzMTEsIDk5KQogICAgICAgID4+PiBGcmFjdGlvbig0MzIxLCA4NzY1KS5saW1pdF9kZW5vbWluYXRvcigxMDAwMCkKICAgICAgICBGcmFjdGlvbig0MzIxLCA4NzY1KQoKICAgICAgICAiIiIKICAgICAgICAjIEFsZ29yaXRobSBub3RlczogRm9yIGFueSByZWFsIG51bWJlciB4LCBkZWZpbmUgYSAqYmVzdCB1cHBlcgogICAgICAgICMgYXBwcm94aW1hdGlvbiogdG8geCB0byBiZSBhIHJhdGlvbmFsIG51bWJlciBwL3Egc3VjaCB0aGF0OgogICAgICAgICMKICAgICAgICAjICAgKDEpIHAvcSA+PSB4LCBhbmQKICAgICAgICAjICAgKDIpIGlmIHAvcSA+IHIvcyA+PSB4IHRoZW4gcyA+IHEsIGZvciBhbnkgcmF0aW9uYWwgci9zLgogICAgICAgICMKICAgICAgICAjIERlZmluZSAqYmVzdCBsb3dlciBhcHByb3hpbWF0aW9uKiBzaW1pbGFybHkuICBUaGVuIGl0IGNhbiBiZQogICAgICAgICMgcHJvdmVkIHRoYXQgYSByYXRpb25hbCBudW1iZXIgaXMgYSBiZXN0IHVwcGVyIG9yIGxvd2VyCiAgICAgICAgIyBhcHByb3hpbWF0aW9uIHRvIHggaWYsIGFuZCBvbmx5IGlmLCBpdCBpcyBhIGNvbnZlcmdlbnQgb3IKICAgICAgICAjIHNlbWljb252ZXJnZW50IG9mIHRoZSAodW5pcXVlIHNob3J0ZXN0KSBjb250aW51ZWQgZnJhY3Rpb24KICAgICAgICAjIGFzc29jaWF0ZWQgdG8geC4KICAgICAgICAjCiAgICAgICAgIyBUbyBmaW5kIGEgYmVzdCByYXRpb25hbCBhcHByb3hpbWF0aW9uIHdpdGggZGVub21pbmF0b3IgPD0gTSwKICAgICAgICAjIHdlIGZpbmQgdGhlIGJlc3QgdXBwZXIgYW5kIGxvd2VyIGFwcHJveGltYXRpb25zIHdpdGgKICAgICAgICAjIGRlbm9taW5hdG9yIDw9IE0gYW5kIHRha2Ugd2hpY2hldmVyIG9mIHRoZXNlIGlzIGNsb3NlciB0byB4LgogICAgICAgICMgSW4gdGhlIGV2ZW50IG9mIGEgdGllLCB0aGUgYm91bmQgd2l0aCBzbWFsbGVyIGRlbm9taW5hdG9yIGlzCiAgICAgICAgIyBjaG9zZW4uICBJZiBib3RoIGRlbm9taW5hdG9ycyBhcmUgZXF1YWwgKHdoaWNoIGNhbiBoYXBwZW4KICAgICAgICAjIG9ubHkgd2hlbiBtYXhfZGVub21pbmF0b3IgPT0gMSBhbmQgc2VsZiBpcyBtaWR3YXkgYmV0d2VlbgogICAgICAgICMgdHdvIGludGVnZXJzKSB0aGUgbG93ZXIgYm91bmQtLS1pLmUuLCB0aGUgZmxvb3Igb2Ygc2VsZiwgaXMKICAgICAgICAjIHRha2VuLgoKICAgICAgICBpZiBtYXhfZGVub21pbmF0b3IgPCAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtYXhfZGVub21pbmF0b3Igc2hvdWxkIGJlIGF0IGxlYXN0IDEiKQogICAgICAgIGlmIHNlbGYuX2Rlbm9taW5hdG9yIDw9IG1heF9kZW5vbWluYXRvcjoKICAgICAgICAgICAgcmV0dXJuIEZyYWN0aW9uKHNlbGYpCgogICAgICAgIHAwLCBxMCwgcDEsIHExID0gMCwgMSwgMSwgMAogICAgICAgIG4sIGQgPSBzZWxmLl9udW1lcmF0b3IsIHNlbGYuX2Rlbm9taW5hdG9yCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgYSA9IG4vL2QKICAgICAgICAgICAgcTIgPSBxMCthKnExCiAgICAgICAgICAgIGlmIHEyID4gbWF4X2Rlbm9taW5hdG9yOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgcDAsIHEwLCBwMSwgcTEgPSBwMSwgcTEsIHAwK2EqcDEsIHEyCiAgICAgICAgICAgIG4sIGQgPSBkLCBuLWEqZAoKICAgICAgICBrID0gKG1heF9kZW5vbWluYXRvci1xMCkvL3ExCiAgICAgICAgYm91bmQxID0gRnJhY3Rpb24ocDAraypwMSwgcTAraypxMSkKICAgICAgICBib3VuZDIgPSBGcmFjdGlvbihwMSwgcTEpCiAgICAgICAgaWYgYWJzKGJvdW5kMiAtIHNlbGYpIDw9IGFicyhib3VuZDEtc2VsZik6CiAgICAgICAgICAgIHJldHVybiBib3VuZDIKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gYm91bmQxCgogICAgQHByb3BlcnR5CiAgICBkZWYgbnVtZXJhdG9yKGEpOgogICAgICAgIHJldHVybiBhLl9udW1lcmF0b3IKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkZW5vbWluYXRvcihhKToKICAgICAgICByZXR1cm4gYS5fZGVub21pbmF0b3IKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIiIicmVwcihzZWxmKSIiIgogICAgICAgIHJldHVybiAnJXMoJXMsICVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IsIHNlbGYuX2Rlbm9taW5hdG9yKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICIiInN0cihzZWxmKSIiIgogICAgICAgIGlmIHNlbGYuX2Rlbm9taW5hdG9yID09IDE6CiAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi5fbnVtZXJhdG9yKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX251bWVyYXRvciwgc2VsZi5fZGVub21pbmF0b3IpCgogICAgZGVmIF9vcGVyYXRvcl9mYWxsYmFja3MobW9ub21vcnBoaWNfb3BlcmF0b3IsIGZhbGxiYWNrX29wZXJhdG9yKToKICAgICAgICAiIiJHZW5lcmF0ZXMgZm9yd2FyZCBhbmQgcmV2ZXJzZSBvcGVyYXRvcnMgZ2l2ZW4gYSBwdXJlbHktcmF0aW9uYWwKICAgICAgICBvcGVyYXRvciBhbmQgYSBmdW5jdGlvbiBmcm9tIHRoZSBvcGVyYXRvciBtb2R1bGUuCgogICAgICAgIFVzZSB0aGlzIGxpa2U6CiAgICAgICAgX19vcF9fLCBfX3JvcF9fID0gX29wZXJhdG9yX2ZhbGxiYWNrcyhqdXN0X3JhdGlvbmFsX29wLCBvcGVyYXRvci5vcCkKCiAgICAgICAgSW4gZ2VuZXJhbCwgd2Ugd2FudCB0byBpbXBsZW1lbnQgdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBzbwogICAgICAgIHRoYXQgbWl4ZWQtbW9kZSBvcGVyYXRpb25zIGVpdGhlciBjYWxsIGFuIGltcGxlbWVudGF0aW9uIHdob3NlCiAgICAgICAgYXV0aG9yIGtuZXcgYWJvdXQgdGhlIHR5cGVzIG9mIGJvdGggYXJndW1lbnRzLCBvciBjb252ZXJ0IGJvdGgKICAgICAgICB0byB0aGUgbmVhcmVzdCBidWlsdCBpbiB0eXBlIGFuZCBkbyB0aGUgb3BlcmF0aW9uIHRoZXJlLiBJbgogICAgICAgIEZyYWN0aW9uLCB0aGF0IG1lYW5zIHRoYXQgd2UgZGVmaW5lIF9fYWRkX18gYW5kIF9fcmFkZF9fIGFzOgoKICAgICAgICAgICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIyBCb3RoIHR5cGVzIGhhdmUgbnVtZXJhdG9ycy9kZW5vbWluYXRvciBhdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgIyBzbyBkbyB0aGUgb3BlcmF0aW9uIGRpcmVjdGx5CiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCAoaW50LCBGcmFjdGlvbikpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBGcmFjdGlvbihzZWxmLm51bWVyYXRvciAqIG90aGVyLmRlbm9taW5hdG9yICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIubnVtZXJhdG9yICogc2VsZi5kZW5vbWluYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZW5vbWluYXRvciAqIG90aGVyLmRlbm9taW5hdG9yKQogICAgICAgICAgICAgICAgIyBmbG9hdCBhbmQgY29tcGxleCBkb24ndCBoYXZlIHRob3NlIG9wZXJhdGlvbnMsIGJ1dCB3ZQogICAgICAgICAgICAgICAgIyBrbm93IGFib3V0IHRob3NlIHR5cGVzLCBzbyBzcGVjaWFsIGNhc2UgdGhlbS4KICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChzZWxmKSArIG90aGVyCiAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIGNvbXBsZXgpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV4KHNlbGYpICsgb3RoZXIKICAgICAgICAgICAgICAgICMgTGV0IHRoZSBvdGhlciB0eXBlIHRha2Ugb3Zlci4KICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICAgICAgICAgZGVmIF9fcmFkZF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICMgcmFkZCBoYW5kbGVzIG1vcmUgdHlwZXMgdGhhbiBhZGQgYmVjYXVzZSB0aGVyZSdzCiAgICAgICAgICAgICAgICAjIG5vdGhpbmcgbGVmdCB0byBmYWxsIGJhY2sgdG8uCiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBudW1iZXJzLlJhdGlvbmFsKToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnJhY3Rpb24oc2VsZi5udW1lcmF0b3IgKiBvdGhlci5kZW5vbWluYXRvciArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLm51bWVyYXRvciAqIHNlbGYuZGVub21pbmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVub21pbmF0b3IgKiBvdGhlci5kZW5vbWluYXRvcikKICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvdGhlciwgUmVhbCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0KG90aGVyKSArIGZsb2F0KHNlbGYpCiAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIENvbXBsZXgpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV4KG90aGVyKSArIGNvbXBsZXgoc2VsZikKICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKCiAgICAgICAgVGhlcmUgYXJlIDUgZGlmZmVyZW50IGNhc2VzIGZvciBhIG1peGVkLXR5cGUgYWRkaXRpb24gb24KICAgICAgICBGcmFjdGlvbi4gSSdsbCByZWZlciB0byBhbGwgb2YgdGhlIGFib3ZlIGNvZGUgdGhhdCBkb2Vzbid0CiAgICAgICAgcmVmZXIgdG8gRnJhY3Rpb24sIGZsb2F0LCBvciBjb21wbGV4IGFzICJib2lsZXJwbGF0ZSIuICdyJwogICAgICAgIHdpbGwgYmUgYW4gaW5zdGFuY2Ugb2YgRnJhY3Rpb24sIHdoaWNoIGlzIGEgc3VidHlwZSBvZgogICAgICAgIFJhdGlvbmFsIChyIDogRnJhY3Rpb24gPDogUmF0aW9uYWwpLCBhbmQgYiA6IEIgPDoKICAgICAgICBDb21wbGV4LiBUaGUgZmlyc3QgdGhyZWUgaW52b2x2ZSAnciArIGInOgoKICAgICAgICAgICAgMS4gSWYgQiA8OiBGcmFjdGlvbiwgaW50LCBmbG9hdCwgb3IgY29tcGxleCwgd2UgaGFuZGxlCiAgICAgICAgICAgICAgIHRoYXQgc3BlY2lhbGx5LCBhbmQgYWxsIGlzIHdlbGwuCiAgICAgICAgICAgIDIuIElmIEZyYWN0aW9uIGZhbGxzIGJhY2sgdG8gdGhlIGJvaWxlcnBsYXRlIGNvZGUsIGFuZCBpdAogICAgICAgICAgICAgICB3ZXJlIHRvIHJldHVybiBhIHZhbHVlIGZyb20gX19hZGRfXywgd2UnZCBtaXNzIHRoZQogICAgICAgICAgICAgICBwb3NzaWJpbGl0eSB0aGF0IEIgZGVmaW5lcyBhIG1vcmUgaW50ZWxsaWdlbnQgX19yYWRkX18sCiAgICAgICAgICAgICAgIHNvIHRoZSBib2lsZXJwbGF0ZSBzaG91bGQgcmV0dXJuIE5vdEltcGxlbWVudGVkIGZyb20KICAgICAgICAgICAgICAgX19hZGRfXy4gSW4gcGFydGljdWxhciwgd2UgZG9uJ3QgaGFuZGxlIFJhdGlvbmFsCiAgICAgICAgICAgICAgIGhlcmUsIGV2ZW4gdGhvdWdoIHdlIGNvdWxkIGdldCBhbiBleGFjdCBhbnN3ZXIsIGluIGNhc2UKICAgICAgICAgICAgICAgdGhlIG90aGVyIHR5cGUgd2FudHMgdG8gZG8gc29tZXRoaW5nIHNwZWNpYWwuCiAgICAgICAgICAgIDMuIElmIEIgPDogRnJhY3Rpb24sIFB5dGhvbiB0cmllcyBCLl9fcmFkZF9fIGJlZm9yZQogICAgICAgICAgICAgICBGcmFjdGlvbi5fX2FkZF9fLiBUaGlzIGlzIG9rLCBiZWNhdXNlIGl0IHdhcwogICAgICAgICAgICAgICBpbXBsZW1lbnRlZCB3aXRoIGtub3dsZWRnZSBvZiBGcmFjdGlvbiwgc28gaXQgY2FuCiAgICAgICAgICAgICAgIGhhbmRsZSB0aG9zZSBpbnN0YW5jZXMgYmVmb3JlIGRlbGVnYXRpbmcgdG8gUmVhbCBvcgogICAgICAgICAgICAgICBDb21wbGV4LgoKICAgICAgICBUaGUgbmV4dCB0d28gc2l0dWF0aW9ucyBkZXNjcmliZSAnYiArIHInLiBXZSBhc3N1bWUgdGhhdCBiCiAgICAgICAgZGlkbid0IGtub3cgYWJvdXQgRnJhY3Rpb24gaW4gaXRzIGltcGxlbWVudGF0aW9uLCBhbmQgdGhhdCBpdAogICAgICAgIHVzZXMgc2ltaWxhciBib2lsZXJwbGF0ZSBjb2RlOgoKICAgICAgICAgICAgNC4gSWYgQiA8OiBSYXRpb25hbCwgdGhlbiBfX3JhZGRfIGNvbnZlcnRzIGJvdGggdG8gdGhlCiAgICAgICAgICAgICAgIGJ1aWx0aW4gcmF0aW9uYWwgdHlwZSAoaGV5IGxvb2ssIHRoYXQncyB1cykgYW5kCiAgICAgICAgICAgICAgIHByb2NlZWRzLgogICAgICAgICAgICA1LiBPdGhlcndpc2UsIF9fcmFkZF9fIHRyaWVzIHRvIGZpbmQgdGhlIG5lYXJlc3QgY29tbW9uCiAgICAgICAgICAgICAgIGJhc2UgQUJDLCBhbmQgZmFsbCBiYWNrIHRvIGl0cyBidWlsdGluIHR5cGUuIFNpbmNlIHRoaXMKICAgICAgICAgICAgICAgY2xhc3MgZG9lc24ndCBzdWJjbGFzcyBhIGNvbmNyZXRlIHR5cGUsIHRoZXJlJ3Mgbm8KICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gZmFsbCBiYWNrIHRvLCBzbyB3ZSBuZWVkIHRvIHRyeSBhcwogICAgICAgICAgICAgICBoYXJkIGFzIHBvc3NpYmxlIHRvIHJldHVybiBhbiBhY3R1YWwgdmFsdWUsIG9yIHRoZSB1c2VyCiAgICAgICAgICAgICAgIHdpbGwgZ2V0IGEgVHlwZUVycm9yLgoKICAgICAgICAiIiIKICAgICAgICBkZWYgZm9yd2FyZChhLCBiKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShiLCAoaW50LCBGcmFjdGlvbikpOgogICAgICAgICAgICAgICAgcmV0dXJuIG1vbm9tb3JwaGljX29wZXJhdG9yKGEsIGIpCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShiLCBmbG9hdCk6CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2tfb3BlcmF0b3IoZmxvYXQoYSksIGIpCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShiLCBjb21wbGV4KToKICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFja19vcGVyYXRvcihjb21wbGV4KGEpLCBiKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgZm9yd2FyZC5fX25hbWVfXyA9ICdfXycgKyBmYWxsYmFja19vcGVyYXRvci5fX25hbWVfXyArICdfXycKICAgICAgICBmb3J3YXJkLl9fZG9jX18gPSBtb25vbW9ycGhpY19vcGVyYXRvci5fX2RvY19fCgogICAgICAgIGRlZiByZXZlcnNlKGIsIGEpOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIG51bWJlcnMuUmF0aW9uYWwpOgogICAgICAgICAgICAgICAgIyBJbmNsdWRlcyBpbnRzLgogICAgICAgICAgICAgICAgcmV0dXJuIG1vbm9tb3JwaGljX29wZXJhdG9yKGEsIGIpCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhLCBudW1iZXJzLlJlYWwpOgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrX29wZXJhdG9yKGZsb2F0KGEpLCBmbG9hdChiKSkKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEsIG51bWJlcnMuQ29tcGxleCk6CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2tfb3BlcmF0b3IoY29tcGxleChhKSwgY29tcGxleChiKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldmVyc2UuX19uYW1lX18gPSAnX19yJyArIGZhbGxiYWNrX29wZXJhdG9yLl9fbmFtZV9fICsgJ19fJwogICAgICAgIHJldmVyc2UuX19kb2NfXyA9IG1vbm9tb3JwaGljX29wZXJhdG9yLl9fZG9jX18KCiAgICAgICAgcmV0dXJuIGZvcndhcmQsIHJldmVyc2UKCiAgICAjIFJhdGlvbmFsIGFyaXRobWV0aWMgYWxnb3JpdGhtczogS251dGgsIFRBT0NQLCBWb2x1bWUgMiwgNC41LjEuCiAgICAjCiAgICAjIEFzc3VtZSBpbnB1dCBmcmFjdGlvbnMgYSBhbmQgYiBhcmUgbm9ybWFsaXplZC4KICAgICMKICAgICMgMSkgQ29uc2lkZXIgYWRkaXRpb24vc3VidHJhY3Rpb24uCiAgICAjCiAgICAjIExldCBnID0gZ2NkKGRhLCBkYikuIFRoZW4KICAgICMKICAgICMgICAgICAgICAgICAgIG5hICAgbmIgICAgbmEqZGIgwrEgbmIqZGEKICAgICMgICAgIGEgwrEgYiA9PSAtLSDCsSAtLSA9PSAtLS0tLS0tLS0tLS0tID09CiAgICAjICAgICAgICAgICAgICBkYSAgIGRiICAgICAgICBkYSpkYgogICAgIwogICAgIyAgICAgICAgICAgICAgbmEqKGRiLy9nKSDCsSBuYiooZGEvL2cpICAgIHQKICAgICMgICAgICAgICAgID09IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tID09IC0KICAgICMgICAgICAgICAgICAgICAgICAgICAgKGRhKmRiKS8vZyAgICAgICAgIGQKICAgICMKICAgICMgTm93LCBpZiBnID4gMSwgd2UncmUgd29ya2luZyB3aXRoIHNtYWxsZXIgaW50ZWdlcnMuCiAgICAjCiAgICAjIE5vdGUsIHRoYXQgdCwgKGRhLy9nKSBhbmQgKGRiLy9nKSBhcmUgcGFpcndpc2UgY29wcmltZS4KICAgICMKICAgICMgSW5kZWVkLCAoZGEvL2cpIGFuZCAoZGIvL2cpIHNoYXJlIG5vIGNvbW1vbiBmYWN0b3JzICh0aGV5IHdlcmUKICAgICMgcmVtb3ZlZCkgYW5kIGRhIGlzIGNvcHJpbWUgd2l0aCBuYSAoc2luY2UgaW5wdXQgZnJhY3Rpb25zIGFyZQogICAgIyBub3JtYWxpemVkKSwgaGVuY2UgKGRhLy9nKSBhbmQgbmEgYXJlIGNvcHJpbWUuICBCeSBzeW1tZXRyeSwKICAgICMgKGRiLy9nKSBhbmQgbmIgYXJlIGNvcHJpbWUgdG9vLiAgVGhlbiwKICAgICMKICAgICMgICAgIGdjZCh0LCBkYS8vZykgPT0gZ2NkKG5hKihkYi8vZyksIGRhLy9nKSA9PSAxCiAgICAjICAgICBnY2QodCwgZGIvL2cpID09IGdjZChuYiooZGEvL2cpLCBkYi8vZykgPT0gMQogICAgIwogICAgIyBBYm92ZSBhbGxvd3MgdXMgb3B0aW1pemUgcmVkdWN0aW9uIG9mIHRoZSByZXN1bHQgdG8gbG93ZXN0CiAgICAjIHRlcm1zLiAgSW5kZWVkLAogICAgIwogICAgIyAgICAgZzIgPSBnY2QodCwgZCkgPT0gZ2NkKHQsIChkYS8vZykqKGRiLy9nKSpnKSA9PSBnY2QodCwgZykKICAgICMKICAgICMgICAgICAgICAgICAgICAgICAgICAgIHQvL2cyICAgICAgICAgICAgICAgICAgIHQvL2cyCiAgICAjICAgICBhIMKxIGIgPT0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gPT0gLS0tLS0tLS0tLS0tLS0tLQogICAgIyAgICAgICAgICAgICAgKGRhLy9nKSooZGIvL2cpKihnLy9nMikgICAgKGRhLy9nKSooZGIvL2cyKQogICAgIwogICAgIyBpcyBhIG5vcm1hbGl6ZWQgZnJhY3Rpb24uICBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZSB1bm5vcm1hbGl6ZWQKICAgICMgZGVub21pbmF0b3IgZCBjb3VsZCBiZSBtdWNoIGxhcmdlciB0aGFuIGcuCiAgICAjCiAgICAjIFdlIHNob3VsZCBzcGVjaWFsLWNhc2UgZyA9PSAxIChhbmQgZzIgPT0gMSksIHNpbmNlIDYwLjglIG9mCiAgICAjIHJhbmRvbWx5LWNob3NlbiBpbnRlZ2VycyBhcmUgY29wcmltZToKICAgICMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29wcmltZV9pbnRlZ2VycyNQcm9iYWJpbGl0eV9vZl9jb3ByaW1hbGl0eQogICAgIyBOb3RlLCB0aGF0IGcyID09IDEgYWx3YXlzIGZvciBmcmFjdGlvbnMsIG9idGFpbmVkIGZyb20gZmxvYXRzOiBoZXJlCiAgICAjIGcgaXMgYSBwb3dlciBvZiAyIGFuZCB0aGUgdW5ub3JtYWxpemVkIG51bWVyYXRvciB0IGlzIGFuIG9kZCBpbnRlZ2VyLgogICAgIwogICAgIyAyKSBDb25zaWRlciBtdWx0aXBsaWNhdGlvbgogICAgIwogICAgIyBMZXQgZzEgPSBnY2QobmEsIGRiKSBhbmQgZzIgPSBnY2QobmIsIGRhKSwgdGhlbgogICAgIwogICAgIyAgICAgICAgICAgIG5hKm5iICAgIG5hKm5iICAgIChuYS8vZzEpKihuYi8vZzIpCiAgICAjICAgICBhKmIgPT0gLS0tLS0gPT0gLS0tLS0gPT0gLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgICAgICAgICAgICBkYSpkYiAgICBkYipkYSAgICAoZGIvL2cxKSooZGEvL2cyKQogICAgIwogICAgIyBOb3RlLCB0aGF0IGFmdGVyIGRpdmlzaW9ucyB3ZSdyZSBtdWx0aXBseWluZyBzbWFsbGVyIGludGVnZXJzLgogICAgIwogICAgIyBBbHNvLCB0aGUgcmVzdWx0aW5nIGZyYWN0aW9uIGlzIG5vcm1hbGl6ZWQsIGJlY2F1c2UgZWFjaCBvZgogICAgIyB0d28gZmFjdG9ycyBpbiB0aGUgbnVtZXJhdG9yIGlzIGNvcHJpbWUgdG8gZWFjaCBvZiB0aGUgdHdvIGZhY3RvcnMKICAgICMgaW4gdGhlIGRlbm9taW5hdG9yLgogICAgIwogICAgIyBJbmRlZWQsIHBpY2sgKG5hLy9nMSkuICBJdCdzIGNvcHJpbWUgd2l0aCAoZGEvL2cyKSwgYmVjYXVzZSBpbnB1dAogICAgIyBmcmFjdGlvbnMgYXJlIG5vcm1hbGl6ZWQuICBJdCdzIGFsc28gY29wcmltZSB3aXRoIChkYi8vZzEpLCBiZWNhdXNlCiAgICAjIGNvbW1vbiBmYWN0b3JzIGFyZSByZW1vdmVkIGJ5IGcxID09IGdjZChuYSwgZGIpLgogICAgIwogICAgIyBBcyBmb3IgYWRkaXRpb24vc3VidHJhY3Rpb24sIHdlIHNob3VsZCBzcGVjaWFsLWNhc2UgZzEgPT0gMQogICAgIyBhbmQgZzIgPT0gMSBmb3Igc2FtZSByZWFzb24uICBUaGF0IGhhcHBlbnMgYWxzbyBmb3IgbXVsdGlwbHlpbmcKICAgICMgcmF0aW9uYWxzLCBvYnRhaW5lZCBmcm9tIGZsb2F0cy4KCiAgICBkZWYgX2FkZChhLCBiKToKICAgICAgICAiIiJhICsgYiIiIgogICAgICAgIG5hLCBkYSA9IGEubnVtZXJhdG9yLCBhLmRlbm9taW5hdG9yCiAgICAgICAgbmIsIGRiID0gYi5udW1lcmF0b3IsIGIuZGVub21pbmF0b3IKICAgICAgICBnID0gbWF0aC5nY2QoZGEsIGRiKQogICAgICAgIGlmIGcgPT0gMToKICAgICAgICAgICAgcmV0dXJuIEZyYWN0aW9uKG5hICogZGIgKyBkYSAqIG5iLCBkYSAqIGRiLCBfbm9ybWFsaXplPUZhbHNlKQogICAgICAgIHMgPSBkYSAvLyBnCiAgICAgICAgdCA9IG5hICogKGRiIC8vIGcpICsgbmIgKiBzCiAgICAgICAgZzIgPSBtYXRoLmdjZCh0LCBnKQogICAgICAgIGlmIGcyID09IDE6CiAgICAgICAgICAgIHJldHVybiBGcmFjdGlvbih0LCBzICogZGIsIF9ub3JtYWxpemU9RmFsc2UpCiAgICAgICAgcmV0dXJuIEZyYWN0aW9uKHQgLy8gZzIsIHMgKiAoZGIgLy8gZzIpLCBfbm9ybWFsaXplPUZhbHNlKQoKICAgIF9fYWRkX18sIF9fcmFkZF9fID0gX29wZXJhdG9yX2ZhbGxiYWNrcyhfYWRkLCBvcGVyYXRvci5hZGQpCgogICAgZGVmIF9zdWIoYSwgYik6CiAgICAgICAgIiIiYSAtIGIiIiIKICAgICAgICBuYSwgZGEgPSBhLm51bWVyYXRvciwgYS5kZW5vbWluYXRvcgogICAgICAgIG5iLCBkYiA9IGIubnVtZXJhdG9yLCBiLmRlbm9taW5hdG9yCiAgICAgICAgZyA9IG1hdGguZ2NkKGRhLCBkYikKICAgICAgICBpZiBnID09IDE6CiAgICAgICAgICAgIHJldHVybiBGcmFjdGlvbihuYSAqIGRiIC0gZGEgKiBuYiwgZGEgKiBkYiwgX25vcm1hbGl6ZT1GYWxzZSkKICAgICAgICBzID0gZGEgLy8gZwogICAgICAgIHQgPSBuYSAqIChkYiAvLyBnKSAtIG5iICogcwogICAgICAgIGcyID0gbWF0aC5nY2QodCwgZykKICAgICAgICBpZiBnMiA9PSAxOgogICAgICAgICAgICByZXR1cm4gRnJhY3Rpb24odCwgcyAqIGRiLCBfbm9ybWFsaXplPUZhbHNlKQogICAgICAgIHJldHVybiBGcmFjdGlvbih0IC8vIGcyLCBzICogKGRiIC8vIGcyKSwgX25vcm1hbGl6ZT1GYWxzZSkKCiAgICBfX3N1Yl9fLCBfX3JzdWJfXyA9IF9vcGVyYXRvcl9mYWxsYmFja3MoX3N1Yiwgb3BlcmF0b3Iuc3ViKQoKICAgIGRlZiBfbXVsKGEsIGIpOgogICAgICAgICIiImEgKiBiIiIiCiAgICAgICAgbmEsIGRhID0gYS5udW1lcmF0b3IsIGEuZGVub21pbmF0b3IKICAgICAgICBuYiwgZGIgPSBiLm51bWVyYXRvciwgYi5kZW5vbWluYXRvcgogICAgICAgIGcxID0gbWF0aC5nY2QobmEsIGRiKQogICAgICAgIGlmIGcxID4gMToKICAgICAgICAgICAgbmEgLy89IGcxCiAgICAgICAgICAgIGRiIC8vPSBnMQogICAgICAgIGcyID0gbWF0aC5nY2QobmIsIGRhKQogICAgICAgIGlmIGcyID4gMToKICAgICAgICAgICAgbmIgLy89IGcyCiAgICAgICAgICAgIGRhIC8vPSBnMgogICAgICAgIHJldHVybiBGcmFjdGlvbihuYSAqIG5iLCBkYiAqIGRhLCBfbm9ybWFsaXplPUZhbHNlKQoKICAgIF9fbXVsX18sIF9fcm11bF9fID0gX29wZXJhdG9yX2ZhbGxiYWNrcyhfbXVsLCBvcGVyYXRvci5tdWwpCgogICAgZGVmIF9kaXYoYSwgYik6CiAgICAgICAgIiIiYSAvIGIiIiIKICAgICAgICAjIFNhbWUgYXMgX211bCgpLCB3aXRoIGludmVyc2VkIGIuCiAgICAgICAgbmEsIGRhID0gYS5udW1lcmF0b3IsIGEuZGVub21pbmF0b3IKICAgICAgICBuYiwgZGIgPSBiLm51bWVyYXRvciwgYi5kZW5vbWluYXRvcgogICAgICAgIGcxID0gbWF0aC5nY2QobmEsIG5iKQogICAgICAgIGlmIGcxID4gMToKICAgICAgICAgICAgbmEgLy89IGcxCiAgICAgICAgICAgIG5iIC8vPSBnMQogICAgICAgIGcyID0gbWF0aC5nY2QoZGIsIGRhKQogICAgICAgIGlmIGcyID4gMToKICAgICAgICAgICAgZGEgLy89IGcyCiAgICAgICAgICAgIGRiIC8vPSBnMgogICAgICAgIG4sIGQgPSBuYSAqIGRiLCBuYiAqIGRhCiAgICAgICAgaWYgZCA8IDA6CiAgICAgICAgICAgIG4sIGQgPSAtbiwgLWQKICAgICAgICByZXR1cm4gRnJhY3Rpb24obiwgZCwgX25vcm1hbGl6ZT1GYWxzZSkKCiAgICBfX3RydWVkaXZfXywgX19ydHJ1ZWRpdl9fID0gX29wZXJhdG9yX2ZhbGxiYWNrcyhfZGl2LCBvcGVyYXRvci50cnVlZGl2KQoKICAgIGRlZiBfZmxvb3JkaXYoYSwgYik6CiAgICAgICAgIiIiYSAvLyBiIiIiCiAgICAgICAgcmV0dXJuIChhLm51bWVyYXRvciAqIGIuZGVub21pbmF0b3IpIC8vIChhLmRlbm9taW5hdG9yICogYi5udW1lcmF0b3IpCgogICAgX19mbG9vcmRpdl9fLCBfX3JmbG9vcmRpdl9fID0gX29wZXJhdG9yX2ZhbGxiYWNrcyhfZmxvb3JkaXYsIG9wZXJhdG9yLmZsb29yZGl2KQoKICAgIGRlZiBfZGl2bW9kKGEsIGIpOgogICAgICAgICIiIihhIC8vIGIsIGEgJSBiKSIiIgogICAgICAgIGRhLCBkYiA9IGEuZGVub21pbmF0b3IsIGIuZGVub21pbmF0b3IKICAgICAgICBkaXYsIG5fbW9kID0gZGl2bW9kKGEubnVtZXJhdG9yICogZGIsIGRhICogYi5udW1lcmF0b3IpCiAgICAgICAgcmV0dXJuIGRpdiwgRnJhY3Rpb24obl9tb2QsIGRhICogZGIpCgogICAgX19kaXZtb2RfXywgX19yZGl2bW9kX18gPSBfb3BlcmF0b3JfZmFsbGJhY2tzKF9kaXZtb2QsIGRpdm1vZCkKCiAgICBkZWYgX21vZChhLCBiKToKICAgICAgICAiIiJhICUgYiIiIgogICAgICAgIGRhLCBkYiA9IGEuZGVub21pbmF0b3IsIGIuZGVub21pbmF0b3IKICAgICAgICByZXR1cm4gRnJhY3Rpb24oKGEubnVtZXJhdG9yICogZGIpICUgKGIubnVtZXJhdG9yICogZGEpLCBkYSAqIGRiKQoKICAgIF9fbW9kX18sIF9fcm1vZF9fID0gX29wZXJhdG9yX2ZhbGxiYWNrcyhfbW9kLCBvcGVyYXRvci5tb2QpCgogICAgZGVmIF9fcG93X18oYSwgYik6CiAgICAgICAgIiIiYSAqKiBiCgogICAgICAgIElmIGIgaXMgbm90IGFuIGludGVnZXIsIHRoZSByZXN1bHQgd2lsbCBiZSBhIGZsb2F0IG9yIGNvbXBsZXgKICAgICAgICBzaW5jZSByb290cyBhcmUgZ2VuZXJhbGx5IGlycmF0aW9uYWwuIElmIGIgaXMgYW4gaW50ZWdlciwgdGhlCiAgICAgICAgcmVzdWx0IHdpbGwgYmUgcmF0aW9uYWwuCgogICAgICAgICIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UoYiwgbnVtYmVycy5SYXRpb25hbCk6CiAgICAgICAgICAgIGlmIGIuZGVub21pbmF0b3IgPT0gMToKICAgICAgICAgICAgICAgIHBvd2VyID0gYi5udW1lcmF0b3IKICAgICAgICAgICAgICAgIGlmIHBvd2VyID49IDA6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEuX251bWVyYXRvciAqKiBwb3dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5fZGVub21pbmF0b3IgKiogcG93ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ub3JtYWxpemU9RmFsc2UpCiAgICAgICAgICAgICAgICBlbGlmIGEuX251bWVyYXRvciA+PSAwOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBGcmFjdGlvbihhLl9kZW5vbWluYXRvciAqKiAtcG93ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuX251bWVyYXRvciAqKiAtcG93ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ub3JtYWxpemU9RmFsc2UpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBGcmFjdGlvbigoLWEuX2Rlbm9taW5hdG9yKSAqKiAtcG93ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtYS5fbnVtZXJhdG9yKSAqKiAtcG93ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ub3JtYWxpemU9RmFsc2UpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIEEgZnJhY3Rpb25hbCBwb3dlciB3aWxsIGdlbmVyYWxseSBwcm9kdWNlIGFuCiAgICAgICAgICAgICAgICAjIGlycmF0aW9uYWwgbnVtYmVyLgogICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0KGEpICoqIGZsb2F0KGIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGZsb2F0KGEpICoqIGIKCiAgICBkZWYgX19ycG93X18oYiwgYSk6CiAgICAgICAgIiIiYSAqKiBiIiIiCiAgICAgICAgaWYgYi5fZGVub21pbmF0b3IgPT0gMSBhbmQgYi5fbnVtZXJhdG9yID49IDA6CiAgICAgICAgICAgICMgSWYgYSBpcyBhbiBpbnQsIGtlZXAgaXQgdGhhdCB3YXkgaWYgcG9zc2libGUuCiAgICAgICAgICAgIHJldHVybiBhICoqIGIuX251bWVyYXRvcgoKICAgICAgICBpZiBpc2luc3RhbmNlKGEsIG51bWJlcnMuUmF0aW9uYWwpOgogICAgICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5udW1lcmF0b3IsIGEuZGVub21pbmF0b3IpICoqIGIKCiAgICAgICAgaWYgYi5fZGVub21pbmF0b3IgPT0gMToKICAgICAgICAgICAgcmV0dXJuIGEgKiogYi5fbnVtZXJhdG9yCgogICAgICAgIHJldHVybiBhICoqIGZsb2F0KGIpCgogICAgZGVmIF9fcG9zX18oYSk6CiAgICAgICAgIiIiK2E6IENvZXJjZXMgYSBzdWJjbGFzcyBpbnN0YW5jZSB0byBGcmFjdGlvbiIiIgogICAgICAgIHJldHVybiBGcmFjdGlvbihhLl9udW1lcmF0b3IsIGEuX2Rlbm9taW5hdG9yLCBfbm9ybWFsaXplPUZhbHNlKQoKICAgIGRlZiBfX25lZ19fKGEpOgogICAgICAgICIiIi1hIiIiCiAgICAgICAgcmV0dXJuIEZyYWN0aW9uKC1hLl9udW1lcmF0b3IsIGEuX2Rlbm9taW5hdG9yLCBfbm9ybWFsaXplPUZhbHNlKQoKICAgIGRlZiBfX2Fic19fKGEpOgogICAgICAgICIiImFicyhhKSIiIgogICAgICAgIHJldHVybiBGcmFjdGlvbihhYnMoYS5fbnVtZXJhdG9yKSwgYS5fZGVub21pbmF0b3IsIF9ub3JtYWxpemU9RmFsc2UpCgogICAgZGVmIF9faW50X18oYSwgX2luZGV4PW9wZXJhdG9yLmluZGV4KToKICAgICAgICAiIiJpbnQoYSkiIiIKICAgICAgICBpZiBhLl9udW1lcmF0b3IgPCAwOgogICAgICAgICAgICByZXR1cm4gX2luZGV4KC0oLWEuX251bWVyYXRvciAvLyBhLl9kZW5vbWluYXRvcikpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIF9pbmRleChhLl9udW1lcmF0b3IgLy8gYS5fZGVub21pbmF0b3IpCgogICAgZGVmIF9fdHJ1bmNfXyhhKToKICAgICAgICAiIiJtYXRoLnRydW5jKGEpIiIiCiAgICAgICAgaWYgYS5fbnVtZXJhdG9yIDwgMDoKICAgICAgICAgICAgcmV0dXJuIC0oLWEuX251bWVyYXRvciAvLyBhLl9kZW5vbWluYXRvcikKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gYS5fbnVtZXJhdG9yIC8vIGEuX2Rlbm9taW5hdG9yCgogICAgZGVmIF9fZmxvb3JfXyhhKToKICAgICAgICAiIiJtYXRoLmZsb29yKGEpIiIiCiAgICAgICAgcmV0dXJuIGEubnVtZXJhdG9yIC8vIGEuZGVub21pbmF0b3IKCiAgICBkZWYgX19jZWlsX18oYSk6CiAgICAgICAgIiIibWF0aC5jZWlsKGEpIiIiCiAgICAgICAgIyBUaGUgbmVnYXRpb25zIGNsZXZlcmx5IGNvbnZpbmNlIGZsb29yZGl2IHRvIHJldHVybiB0aGUgY2VpbGluZy4KICAgICAgICByZXR1cm4gLSgtYS5udW1lcmF0b3IgLy8gYS5kZW5vbWluYXRvcikKCiAgICBkZWYgX19yb3VuZF9fKHNlbGYsIG5kaWdpdHM9Tm9uZSk6CiAgICAgICAgIiIicm91bmQoc2VsZiwgbmRpZ2l0cykKCiAgICAgICAgUm91bmRzIGhhbGYgdG93YXJkIGV2ZW4uCiAgICAgICAgIiIiCiAgICAgICAgaWYgbmRpZ2l0cyBpcyBOb25lOgogICAgICAgICAgICBmbG9vciwgcmVtYWluZGVyID0gZGl2bW9kKHNlbGYubnVtZXJhdG9yLCBzZWxmLmRlbm9taW5hdG9yKQogICAgICAgICAgICBpZiByZW1haW5kZXIgKiAyIDwgc2VsZi5kZW5vbWluYXRvcjoKICAgICAgICAgICAgICAgIHJldHVybiBmbG9vcgogICAgICAgICAgICBlbGlmIHJlbWFpbmRlciAqIDIgPiBzZWxmLmRlbm9taW5hdG9yOgogICAgICAgICAgICAgICAgcmV0dXJuIGZsb29yICsgMQogICAgICAgICAgICAjIERlYWwgd2l0aCB0aGUgaGFsZiBjYXNlOgogICAgICAgICAgICBlbGlmIGZsb29yICUgMiA9PSAwOgogICAgICAgICAgICAgICAgcmV0dXJuIGZsb29yCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gZmxvb3IgKyAxCiAgICAgICAgc2hpZnQgPSAxMCoqYWJzKG5kaWdpdHMpCiAgICAgICAgIyBTZWUgX29wZXJhdG9yX2ZhbGxiYWNrcy5mb3J3YXJkIHRvIGNoZWNrIHRoYXQgdGhlIHJlc3VsdHMgb2YKICAgICAgICAjIHRoZXNlIG9wZXJhdGlvbnMgd2lsbCBhbHdheXMgYmUgRnJhY3Rpb24gYW5kIHRoZXJlZm9yZSBoYXZlCiAgICAgICAgIyByb3VuZCgpLgogICAgICAgIGlmIG5kaWdpdHMgPiAwOgogICAgICAgICAgICByZXR1cm4gRnJhY3Rpb24ocm91bmQoc2VsZiAqIHNoaWZ0KSwgc2hpZnQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIEZyYWN0aW9uKHJvdW5kKHNlbGYgLyBzaGlmdCkgKiBzaGlmdCkKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIiIiaGFzaChzZWxmKSIiIgoKICAgICAgICAjIFRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoYXNoIG9mIGEgRnJhY3Rpb24gYWdyZWVzIHdpdGggdGhlIGhhc2gKICAgICAgICAjIG9mIGEgbnVtZXJpY2FsbHkgZXF1YWwgaW50ZWdlciwgZmxvYXQgb3IgRGVjaW1hbCBpbnN0YW5jZSwgd2UKICAgICAgICAjIGZvbGxvdyB0aGUgcnVsZXMgZm9yIG51bWVyaWMgaGFzaGVzIG91dGxpbmVkIGluIHRoZQogICAgICAgICMgZG9jdW1lbnRhdGlvbi4gIChTZWUgbGlicmFyeSBkb2NzLCAnQnVpbHQtaW4gVHlwZXMnKS4KCiAgICAgICAgdHJ5OgogICAgICAgICAgICBkaW52ID0gcG93KHNlbGYuX2Rlbm9taW5hdG9yLCAtMSwgX1B5SEFTSF9NT0RVTFVTKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAjIFZhbHVlRXJyb3IgbWVhbnMgdGhlcmUgaXMgbm8gbW9kdWxhciBpbnZlcnNlLgogICAgICAgICAgICBoYXNoXyA9IF9QeUhBU0hfSU5GCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBUaGUgZ2VuZXJhbCBhbGdvcml0aG0gbm93IHNwZWNpZmllcyB0aGF0IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZgogICAgICAgICAgICAjIHRoZSBoYXNoIGlzCiAgICAgICAgICAgICMgICAgKHxOfCAqIGRpbnYpICUgUAogICAgICAgICAgICAjIHdoZXJlIE4gaXMgc2VsZi5fbnVtZXJhdG9yIGFuZCBQIGlzIF9QeUhBU0hfTU9EVUxVUy4gIFRoYXQncwogICAgICAgICAgICAjIG9wdGltaXplZCBoZXJlIGluIHR3byB3YXlzOiAgZmlyc3QsIGZvciBhIG5vbi1uZWdhdGl2ZSBpbnQgaSwKICAgICAgICAgICAgIyBoYXNoKGkpID09IGkgJSBQLCBidXQgdGhlIGludCBoYXNoIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgbmVlZAogICAgICAgICAgICAjIHRvIGRpdmlkZSwgYW5kIGlzIGZhc3RlciB0aGFuIGRvaW5nICUgUCBleHBsaWNpdGx5LiAgU28gd2UgZG8KICAgICAgICAgICAgIyAgICBoYXNoKHxOfCAqIGRpbnYpCiAgICAgICAgICAgICMgaW5zdGVhZC4gIFNlY29uZCwgTiBpcyB1bmJvdW5kZWQsIHNvIGl0cyBwcm9kdWN0IHdpdGggZGludiBtYXkKICAgICAgICAgICAgIyBiZSBhcmJpdHJhcmlseSBleHBlbnNpdmUgdG8gY29tcHV0ZS4gIFRoZSBmaW5hbCBhbnN3ZXIgaXMgdGhlCiAgICAgICAgICAgICMgc2FtZSBpZiB3ZSB1c2UgdGhlIGJvdW5kZWQgfE58ICUgUCBpbnN0ZWFkLCB3aGljaCBjYW4gYWdhaW4KICAgICAgICAgICAgIyBiZSBkb25lIHdpdGggYW4gaW50IGhhc2goKSBjYWxsLiAgSWYgMCA8PSBpIDwgUCwgaGFzaChpKSA9PSBpLAogICAgICAgICAgICAjIHNvIHRoaXMgbmVzdGVkIGhhc2goKSBjYWxsIHdhc3RlcyBhIGJpdCBvZiB0aW1lIG1ha2luZyBhCiAgICAgICAgICAgICMgcmVkdW5kYW50IGNvcHkgd2hlbiB8TnwgPCBQLCBidXQgY2FuIHNhdmUgYW4gYXJiaXRyYXJpbHkgbGFyZ2UKICAgICAgICAgICAgIyBhbW91bnQgb2YgY29tcHV0YXRpb24gZm9yIGxhcmdlIHxOfC4KICAgICAgICAgICAgaGFzaF8gPSBoYXNoKGhhc2goYWJzKHNlbGYuX251bWVyYXRvcikpICogZGludikKICAgICAgICByZXN1bHQgPSBoYXNoXyBpZiBzZWxmLl9udW1lcmF0b3IgPj0gMCBlbHNlIC1oYXNoXwogICAgICAgIHJldHVybiAtMiBpZiByZXN1bHQgPT0gLTEgZWxzZSByZXN1bHQKCiAgICBkZWYgX19lcV9fKGEsIGIpOgogICAgICAgICIiImEgPT0gYiIiIgogICAgICAgIGlmIHR5cGUoYikgaXMgaW50OgogICAgICAgICAgICByZXR1cm4gYS5fbnVtZXJhdG9yID09IGIgYW5kIGEuX2Rlbm9taW5hdG9yID09IDEKICAgICAgICBpZiBpc2luc3RhbmNlKGIsIG51bWJlcnMuUmF0aW9uYWwpOgogICAgICAgICAgICByZXR1cm4gKGEuX251bWVyYXRvciA9PSBiLm51bWVyYXRvciBhbmQKICAgICAgICAgICAgICAgICAgICBhLl9kZW5vbWluYXRvciA9PSBiLmRlbm9taW5hdG9yKQogICAgICAgIGlmIGlzaW5zdGFuY2UoYiwgbnVtYmVycy5Db21wbGV4KSBhbmQgYi5pbWFnID09IDA6CiAgICAgICAgICAgIGIgPSBiLnJlYWwKICAgICAgICBpZiBpc2luc3RhbmNlKGIsIGZsb2F0KToKICAgICAgICAgICAgaWYgbWF0aC5pc25hbihiKSBvciBtYXRoLmlzaW5mKGIpOgogICAgICAgICAgICAgICAgIyBjb21wYXJpc29ucyB3aXRoIGFuIGluZmluaXR5IG9yIG5hbiBzaG91bGQgYmVoYXZlIGluCiAgICAgICAgICAgICAgICAjIHRoZSBzYW1lIHdheSBmb3IgYW55IGZpbml0ZSBhLCBzbyB0cmVhdCBhIGFzIHplcm8uCiAgICAgICAgICAgICAgICByZXR1cm4gMC4wID09IGIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBhID09IGEuZnJvbV9mbG9hdChiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgU2luY2UgYSBkb2Vzbid0IGtub3cgaG93IHRvIGNvbXBhcmUgd2l0aCBiLCBsZXQncyBnaXZlIGIKICAgICAgICAgICAgIyBhIGNoYW5jZSB0byBjb21wYXJlIGl0c2VsZiB3aXRoIGEuCiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfcmljaGNtcChzZWxmLCBvdGhlciwgb3ApOgogICAgICAgICIiIkhlbHBlciBmb3IgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciBpbnRlcm5hbCB1c2Ugb25seS4KCiAgICAgICAgSW1wbGVtZW50IGNvbXBhcmlzb24gYmV0d2VlbiBhIFJhdGlvbmFsIGluc3RhbmNlIGBzZWxmYCwgYW5kCiAgICAgICAgZWl0aGVyIGFub3RoZXIgUmF0aW9uYWwgaW5zdGFuY2Ugb3IgYSBmbG9hdCBgb3RoZXJgLiAgSWYKICAgICAgICBgb3RoZXJgIGlzIG5vdCBhIFJhdGlvbmFsIGluc3RhbmNlIG9yIGEgZmxvYXQsIHJldHVybgogICAgICAgIE5vdEltcGxlbWVudGVkLiBgb3BgIHNob3VsZCBiZSBvbmUgb2YgdGhlIHNpeCBzdGFuZGFyZAogICAgICAgIGNvbXBhcmlzb24gb3BlcmF0b3JzLgoKICAgICAgICAiIiIKICAgICAgICAjIGNvbnZlcnQgb3RoZXIgdG8gYSBSYXRpb25hbCBpbnN0YW5jZSB3aGVyZSByZWFzb25hYmxlLgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIG51bWJlcnMuUmF0aW9uYWwpOgogICAgICAgICAgICByZXR1cm4gb3Aoc2VsZi5fbnVtZXJhdG9yICogb3RoZXIuZGVub21pbmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciAqIG90aGVyLm51bWVyYXRvcikKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBmbG9hdCk6CiAgICAgICAgICAgIGlmIG1hdGguaXNuYW4ob3RoZXIpIG9yIG1hdGguaXNpbmYob3RoZXIpOgogICAgICAgICAgICAgICAgcmV0dXJuIG9wKDAuMCwgb3RoZXIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gb3Aoc2VsZiwgc2VsZi5mcm9tX2Zsb2F0KG90aGVyKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19sdF9fKGEsIGIpOgogICAgICAgICIiImEgPCBiIiIiCiAgICAgICAgcmV0dXJuIGEuX3JpY2hjbXAoYiwgb3BlcmF0b3IubHQpCgogICAgZGVmIF9fZ3RfXyhhLCBiKToKICAgICAgICAiIiJhID4gYiIiIgogICAgICAgIHJldHVybiBhLl9yaWNoY21wKGIsIG9wZXJhdG9yLmd0KQoKICAgIGRlZiBfX2xlX18oYSwgYik6CiAgICAgICAgIiIiYSA8PSBiIiIiCiAgICAgICAgcmV0dXJuIGEuX3JpY2hjbXAoYiwgb3BlcmF0b3IubGUpCgogICAgZGVmIF9fZ2VfXyhhLCBiKToKICAgICAgICAiIiJhID49IGIiIiIKICAgICAgICByZXR1cm4gYS5fcmljaGNtcChiLCBvcGVyYXRvci5nZSkKCiAgICBkZWYgX19ib29sX18oYSk6CiAgICAgICAgIiIiYSAhPSAwIiIiCiAgICAgICAgIyBicG8tMzkyNzQ6IFVzZSBib29sKCkgYmVjYXVzZSAoYS5fbnVtZXJhdG9yICE9IDApIGNhbiByZXR1cm4gYW4KICAgICAgICAjIG9iamVjdCB3aGljaCBpcyBub3QgYSBib29sLgogICAgICAgIHJldHVybiBib29sKGEuX251bWVyYXRvcikKCiAgICAjIHN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCAoc2VsZi5fbnVtZXJhdG9yLCBzZWxmLl9kZW5vbWluYXRvcikpCgogICAgZGVmIF9fY29weV9fKHNlbGYpOgogICAgICAgIGlmIHR5cGUoc2VsZikgPT0gRnJhY3Rpb246CiAgICAgICAgICAgIHJldHVybiBzZWxmICAgICAjIEknbSBpbW11dGFibGU7IHRoZXJlZm9yZSBJIGFtIG15IG93biBjbG9uZQogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9udW1lcmF0b3IsIHNlbGYuX2Rlbm9taW5hdG9yKQoKICAgIGRlZiBfX2RlZXBjb3B5X18oc2VsZiwgbWVtbyk6CiAgICAgICAgaWYgdHlwZShzZWxmKSA9PSBGcmFjdGlvbjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYgICAgICMgTXkgY29tcG9uZW50cyBhcmUgYWxzbyBpbW11dGFibGUKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fbnVtZXJhdG9yLCBzZWxmLl9kZW5vbWluYXRvcikKUEsDBBQAAAAAAAIgo1YbnK03qIoAAKiKAAAJAAAAZnRwbGliLnB5IiIiQW4gRlRQIGNsaWVudCBjbGFzcyBhbmQgc29tZSBoZWxwZXIgZnVuY3Rpb25zLgoKQmFzZWQgb24gUkZDIDk1OTogRmlsZSBUcmFuc2ZlciBQcm90b2NvbCAoRlRQKSwgYnkgSi4gUG9zdGVsIGFuZCBKLiBSZXlub2xkcwoKRXhhbXBsZToKCj4+PiBmcm9tIGZ0cGxpYiBpbXBvcnQgRlRQCj4+PiBmdHAgPSBGVFAoJ2Z0cC5weXRob24ub3JnJykgIyBjb25uZWN0IHRvIGhvc3QsIGRlZmF1bHQgcG9ydAo+Pj4gZnRwLmxvZ2luKCkgIyBkZWZhdWx0LCBpLmUuOiB1c2VyIGFub255bW91cywgcGFzc3dkIGFub255bW91c0AKJzIzMCBHdWVzdCBsb2dpbiBvaywgYWNjZXNzIHJlc3RyaWN0aW9ucyBhcHBseS4nCj4+PiBmdHAucmV0cmxpbmVzKCdMSVNUJykgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50cwp0b3RhbCA5CmRyd3hyLXhyLXggICA4IHJvb3QgICAgIHdoZWVsICAgICAgICAxMDI0IEphbiAgMyAgMTk5NCAuCmRyd3hyLXhyLXggICA4IHJvb3QgICAgIHdoZWVsICAgICAgICAxMDI0IEphbiAgMyAgMTk5NCAuLgpkcnd4ci14ci14ICAgMiByb290ICAgICB3aGVlbCAgICAgICAgMTAyNCBKYW4gIDMgIDE5OTQgYmluCmRyd3hyLXhyLXggICAyIHJvb3QgICAgIHdoZWVsICAgICAgICAxMDI0IEphbiAgMyAgMTk5NCBldGMKZC13eHJ3eHIteCAgIDIgZnRwICAgICAgd2hlZWwgICAgICAgIDEwMjQgU2VwICA1IDEzOjQzIGluY29taW5nCmRyd3hyLXhyLXggICAyIHJvb3QgICAgIHdoZWVsICAgICAgICAxMDI0IE5vdiAxNyAgMTk5MyBsaWIKZHJ3eHIteHIteCAgIDYgMTA5NCAgICAgd2hlZWwgICAgICAgIDEwMjQgU2VwIDEzIDE5OjA3IHB1Ygpkcnd4ci14ci14ICAgMyByb290ICAgICB3aGVlbCAgICAgICAgMTAyNCBKYW4gIDMgIDE5OTQgdXNyCi1ydy1yLS1yLS0gICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgMzEyIEF1ZyAgMSAgMTk5NCB3ZWxjb21lLm1zZwonMjI2IFRyYW5zZmVyIGNvbXBsZXRlLicKPj4+IGZ0cC5xdWl0KCkKJzIyMSBHb29kYnllLicKPj4+CgpBIG5pY2UgdGVzdCB0aGF0IHJldmVhbHMgc29tZSBvZiB0aGUgbmV0d29yayBkaWFsb2d1ZSB3b3VsZCBiZToKcHl0aG9uIGZ0cGxpYi5weSAtZCBsb2NhbGhvc3QgLWwgLXAgLWwKIiIiCgojCiMgQ2hhbmdlcyBhbmQgaW1wcm92ZW1lbnRzIHN1Z2dlc3RlZCBieSBTdGV2ZSBNYWpld3NraS4KIyBNb2RpZmllZCBieSBKYWNrIHRvIHdvcmsgb24gdGhlIG1hYy4KIyBNb2RpZmllZCBieSBTaWVicmVuIHRvIHN1cHBvcnQgZG9jc3RyaW5ncyBhbmQgUEFTVi4KIyBNb2RpZmllZCBieSBQaGlsIFNjaHdhcnR6IHRvIGFkZCBzdG9yYmluYXJ5IGFuZCBzdG9ybGluZXMgY2FsbGJhY2tzLgojIE1vZGlmaWVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEnIHRvIGFkZCBUTFMgc3VwcG9ydC4KIwoKaW1wb3J0IHN5cwppbXBvcnQgc29ja2V0CmZyb20gc29ja2V0IGltcG9ydCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVAoKX19hbGxfXyA9IFsiRlRQIiwgImVycm9yX3JlcGx5IiwgImVycm9yX3RlbXAiLCAiZXJyb3JfcGVybSIsICJlcnJvcl9wcm90byIsCiAgICAgICAgICAgImFsbF9lcnJvcnMiXQoKIyBNYWdpYyBudW1iZXIgZnJvbSA8c29ja2V0Lmg+Ck1TR19PT0IgPSAweDEgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFByb2Nlc3MgZGF0YSBvdXQgb2YgYmFuZAoKCiMgVGhlIHN0YW5kYXJkIEZUUCBzZXJ2ZXIgY29udHJvbCBwb3J0CkZUUF9QT1JUID0gMjEKIyBUaGUgc2l6ZWhpbnQgcGFyYW1ldGVyIHBhc3NlZCB0byByZWFkbGluZSgpIGNhbGxzCk1BWExJTkUgPSA4MTkyCgoKIyBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYW4gZXJyb3Igb3IgaW52YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZApjbGFzcyBFcnJvcihFeGNlcHRpb24pOiBwYXNzCmNsYXNzIGVycm9yX3JlcGx5KEVycm9yKTogcGFzcyAgICAgICAgICAjIHVuZXhwZWN0ZWQgWzEyM114eCByZXBseQpjbGFzcyBlcnJvcl90ZW1wKEVycm9yKTogcGFzcyAgICAgICAgICAgIyA0eHggZXJyb3JzCmNsYXNzIGVycm9yX3Blcm0oRXJyb3IpOiBwYXNzICAgICAgICAgICAjIDV4eCBlcnJvcnMKY2xhc3MgZXJyb3JfcHJvdG8oRXJyb3IpOiBwYXNzICAgICAgICAgICMgcmVzcG9uc2UgZG9lcyBub3QgYmVnaW4gd2l0aCBbMS01XQoKCiMgQWxsIGV4Y2VwdGlvbnMgKGhvcGVmdWxseSkgdGhhdCBtYXkgYmUgcmFpc2VkIGhlcmUgYW5kIHRoYXQgYXJlbid0CiMgKGFsd2F5cykgcHJvZ3JhbW1pbmcgZXJyb3JzIG9uIG91ciBzaWRlCmFsbF9lcnJvcnMgPSAoRXJyb3IsIE9TRXJyb3IsIEVPRkVycm9yKQoKCiMgTGluZSB0ZXJtaW5hdG9ycyAod2UgYWx3YXlzIG91dHB1dCBDUkxGLCBidXQgYWNjZXB0IGFueSBvZiBDUkxGLCBDUiwgTEYpCkNSTEYgPSAnXHJcbicKQl9DUkxGID0gYidcclxuJwoKIyBUaGUgY2xhc3MgaXRzZWxmCmNsYXNzIEZUUDoKICAgICcnJ0FuIEZUUCBjbGllbnQgY2xhc3MuCgogICAgVG8gY3JlYXRlIGEgY29ubmVjdGlvbiwgY2FsbCB0aGUgY2xhc3MgdXNpbmcgdGhlc2UgYXJndW1lbnRzOgogICAgICAgICAgICBob3N0LCB1c2VyLCBwYXNzd2QsIGFjY3QsIHRpbWVvdXQsIHNvdXJjZV9hZGRyZXNzLCBlbmNvZGluZwoKICAgIFRoZSBmaXJzdCBmb3VyIGFyZ3VtZW50cyBhcmUgYWxsIHN0cmluZ3MsIGFuZCBoYXZlIGRlZmF1bHQgdmFsdWUgJycuCiAgICBUaGUgcGFyYW1ldGVyIMK0dGltZW91dMK0IG11c3QgYmUgbnVtZXJpYyBhbmQgZGVmYXVsdHMgdG8gTm9uZSBpZiBub3QKICAgIHBhc3NlZCwgbWVhbmluZyB0aGF0IG5vIHRpbWVvdXQgd2lsbCBiZSBzZXQgb24gYW55IGZ0cCBzb2NrZXQocykuCiAgICBJZiBhIHRpbWVvdXQgaXMgcGFzc2VkLCB0aGVuIHRoaXMgaXMgbm93IHRoZSBkZWZhdWx0IHRpbWVvdXQgZm9yIGFsbCBmdHAKICAgIHNvY2tldCBvcGVyYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLgogICAgVGhlIGxhc3QgcGFyYW1ldGVyIGlzIHRoZSBlbmNvZGluZyBvZiBmaWxlbmFtZXMsIHdoaWNoIGRlZmF1bHRzIHRvIHV0Zi04LgoKICAgIFRoZW4gdXNlIHNlbGYuY29ubmVjdCgpIHdpdGggb3B0aW9uYWwgaG9zdCBhbmQgcG9ydCBhcmd1bWVudC4KCiAgICBUbyBkb3dubG9hZCBhIGZpbGUsIHVzZSBmdHAucmV0cmxpbmVzKCdSRVRSICcgKyBmaWxlbmFtZSksCiAgICBvciBmdHAucmV0cmJpbmFyeSgpIHdpdGggc2xpZ2h0bHkgZGlmZmVyZW50IGFyZ3VtZW50cy4KICAgIFRvIHVwbG9hZCBhIGZpbGUsIHVzZSBmdHAuc3RvcmxpbmVzKCkgb3IgZnRwLnN0b3JiaW5hcnkoKSwKICAgIHdoaWNoIGhhdmUgYW4gb3BlbiBmaWxlIGFzIGFyZ3VtZW50IChzZWUgdGhlaXIgZGVmaW5pdGlvbnMKICAgIGJlbG93IGZvciBkZXRhaWxzKS4KICAgIFRoZSBkb3dubG9hZC91cGxvYWQgZnVuY3Rpb25zIGZpcnN0IGlzc3VlIGFwcHJvcHJpYXRlIFRZUEUKICAgIGFuZCBQT1JUIG9yIFBBU1YgY29tbWFuZHMuCiAgICAnJycKCiAgICBkZWJ1Z2dpbmcgPSAwCiAgICBob3N0ID0gJycKICAgIHBvcnQgPSBGVFBfUE9SVAogICAgbWF4bGluZSA9IE1BWExJTkUKICAgIHNvY2sgPSBOb25lCiAgICBmaWxlID0gTm9uZQogICAgd2VsY29tZSA9IE5vbmUKICAgIHBhc3NpdmVzZXJ2ZXIgPSBUcnVlCiAgICAjIERpc2FibGVzIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlNDMyODUgc2VjdXJpdHkgaWYgc2V0IHRvIFRydWUuCiAgICB0cnVzdF9zZXJ2ZXJfcGFzdl9pcHY0X2FkZHJlc3MgPSBGYWxzZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsCiAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwgc291cmNlX2FkZHJlc3M9Tm9uZSwgKiwKICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnKToKICAgICAgICAiIiJJbml0aWFsaXphdGlvbiBtZXRob2QgKGNhbGxlZCBieSBjbGFzcyBpbnN0YW50aWF0aW9uKS4KICAgICAgICBJbml0aWFsaXplIGhvc3QgdG8gbG9jYWxob3N0LCBwb3J0IHRvIHN0YW5kYXJkIGZ0cCBwb3J0LgogICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgaG9zdCAoZm9yIGNvbm5lY3QoKSksCiAgICAgICAgYW5kIHVzZXIsIHBhc3N3ZCwgYWNjdCAoZm9yIGxvZ2luKCkpLgogICAgICAgICIiIgogICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZwogICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcwogICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICBpZiBob3N0OgogICAgICAgICAgICBzZWxmLmNvbm5lY3QoaG9zdCkKICAgICAgICAgICAgaWYgdXNlcjoKICAgICAgICAgICAgICAgIHNlbGYubG9naW4odXNlciwgcGFzc3dkLCBhY2N0KQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICAjIENvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbDogdHJ5IHRvIHF1aXQoKSBpZiBhY3RpdmUKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgaWYgc2VsZi5zb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLnF1aXQoKQogICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PScnLCBwb3J0PTAsIHRpbWVvdXQ9LTk5OSwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgJycnQ29ubmVjdCB0byBob3N0LiAgQXJndW1lbnRzIGFyZToKICAgICAgICAgLSBob3N0OiBob3N0bmFtZSB0byBjb25uZWN0IHRvIChzdHJpbmcsIGRlZmF1bHQgcHJldmlvdXMgaG9zdCkKICAgICAgICAgLSBwb3J0OiBwb3J0IHRvIGNvbm5lY3QgdG8gKGludGVnZXIsIGRlZmF1bHQgcHJldmlvdXMgcG9ydCkKICAgICAgICAgLSB0aW1lb3V0OiB0aGUgdGltZW91dCB0byBzZXQgYWdhaW5zdCB0aGUgZnRwIHNvY2tldChzKQogICAgICAgICAtIHNvdXJjZV9hZGRyZXNzOiBhIDItdHVwbGUgKGhvc3QsIHBvcnQpIGZvciB0aGUgc29ja2V0IHRvIGJpbmQKICAgICAgICAgICB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlIGNvbm5lY3RpbmcuCiAgICAgICAgJycnCiAgICAgICAgaWYgaG9zdCAhPSAnJzoKICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgIGlmIHBvcnQgPiAwOgogICAgICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgaWYgdGltZW91dCAhPSAtOTk5OgogICAgICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgaWYgc2VsZi50aW1lb3V0IGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi50aW1lb3V0OgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdOb24tYmxvY2tpbmcgc29ja2V0ICh0aW1lb3V0PTApIGlzIG5vdCBzdXBwb3J0ZWQnKQogICAgICAgIGlmIHNvdXJjZV9hZGRyZXNzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKICAgICAgICBzeXMuYXVkaXQoImZ0cGxpYi5jb25uZWN0Iiwgc2VsZiwgc2VsZi5ob3N0LCBzZWxmLnBvcnQpCiAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChzZWxmLmhvc3QsIHNlbGYucG9ydCksIHNlbGYudGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9c2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICBzZWxmLmFmID0gc2VsZi5zb2NrLmZhbWlseQogICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jay5tYWtlZmlsZSgncicsIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcpCiAgICAgICAgc2VsZi53ZWxjb21lID0gc2VsZi5nZXRyZXNwKCkKICAgICAgICByZXR1cm4gc2VsZi53ZWxjb21lCgogICAgZGVmIGdldHdlbGNvbWUoc2VsZik6CiAgICAgICAgJycnR2V0IHRoZSB3ZWxjb21lIG1lc3NhZ2UgZnJvbSB0aGUgc2VydmVyLgogICAgICAgICh0aGlzIGlzIHJlYWQgYW5kIHNxdWlycmVsZWQgYXdheSBieSBjb25uZWN0KCkpJycnCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmc6CiAgICAgICAgICAgIHByaW50KCcqd2VsY29tZSonLCBzZWxmLnNhbml0aXplKHNlbGYud2VsY29tZSkpCiAgICAgICAgcmV0dXJuIHNlbGYud2VsY29tZQoKICAgIGRlZiBzZXRfZGVidWdsZXZlbChzZWxmLCBsZXZlbCk6CiAgICAgICAgJycnU2V0IHRoZSBkZWJ1Z2dpbmcgbGV2ZWwuCiAgICAgICAgVGhlIHJlcXVpcmVkIGFyZ3VtZW50IGxldmVsIG1lYW5zOgogICAgICAgIDA6IG5vIGRlYnVnZ2luZyBvdXRwdXQgKGRlZmF1bHQpCiAgICAgICAgMTogcHJpbnQgY29tbWFuZHMgYW5kIHJlc3BvbnNlcyBidXQgbm90IGJvZHkgdGV4dCBldGMuCiAgICAgICAgMjogYWxzbyBwcmludCByYXcgbGluZXMgcmVhZCBhbmQgc2VudCBiZWZvcmUgc3RyaXBwaW5nIENSL0xGJycnCiAgICAgICAgc2VsZi5kZWJ1Z2dpbmcgPSBsZXZlbAogICAgZGVidWcgPSBzZXRfZGVidWdsZXZlbAoKICAgIGRlZiBzZXRfcGFzdihzZWxmLCB2YWwpOgogICAgICAgICcnJ1VzZSBwYXNzaXZlIG9yIGFjdGl2ZSBtb2RlIGZvciBkYXRhIHRyYW5zZmVycy4KICAgICAgICBXaXRoIGEgZmFsc2UgYXJndW1lbnQsIHVzZSB0aGUgbm9ybWFsIFBPUlQgbW9kZSwKICAgICAgICBXaXRoIGEgdHJ1ZSBhcmd1bWVudCwgdXNlIHRoZSBQQVNWIGNvbW1hbmQuJycnCiAgICAgICAgc2VsZi5wYXNzaXZlc2VydmVyID0gdmFsCgogICAgIyBJbnRlcm5hbDogInNhbml0aXplIiBhIHN0cmluZyBmb3IgcHJpbnRpbmcKICAgIGRlZiBzYW5pdGl6ZShzZWxmLCBzKToKICAgICAgICBpZiBzWzo1XSBpbiB7J3Bhc3MgJywgJ1BBU1MgJ306CiAgICAgICAgICAgIGkgPSBsZW4ocy5yc3RyaXAoJ1xyXG4nKSkKICAgICAgICAgICAgcyA9IHNbOjVdICsgJyonKihpLTUpICsgc1tpOl0KICAgICAgICByZXR1cm4gcmVwcihzKQoKICAgICMgSW50ZXJuYWw6IHNlbmQgb25lIGxpbmUgdG8gdGhlIHNlcnZlciwgYXBwZW5kaW5nIENSTEYKICAgIGRlZiBwdXRsaW5lKHNlbGYsIGxpbmUpOgogICAgICAgIGlmICdccicgaW4gbGluZSBvciAnXG4nIGluIGxpbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2FuIGlsbGVnYWwgbmV3bGluZSBjaGFyYWN0ZXIgc2hvdWxkIG5vdCBiZSBjb250YWluZWQnKQogICAgICAgIHN5cy5hdWRpdCgiZnRwbGliLnNlbmRjbWQiLCBzZWxmLCBsaW5lKQogICAgICAgIGxpbmUgPSBsaW5lICsgQ1JMRgogICAgICAgIGlmIHNlbGYuZGVidWdnaW5nID4gMToKICAgICAgICAgICAgcHJpbnQoJypwdXQqJywgc2VsZi5zYW5pdGl6ZShsaW5lKSkKICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChsaW5lLmVuY29kZShzZWxmLmVuY29kaW5nKSkKCiAgICAjIEludGVybmFsOiBzZW5kIG9uZSBjb21tYW5kIHRvIHRoZSBzZXJ2ZXIgKHRocm91Z2ggcHV0bGluZSgpKQogICAgZGVmIHB1dGNtZChzZWxmLCBsaW5lKToKICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZzogcHJpbnQoJypjbWQqJywgc2VsZi5zYW5pdGl6ZShsaW5lKSkKICAgICAgICBzZWxmLnB1dGxpbmUobGluZSkKCiAgICAjIEludGVybmFsOiByZXR1cm4gb25lIGxpbmUgZnJvbSB0aGUgc2VydmVyLCBzdHJpcHBpbmcgQ1JMRi4KICAgICMgUmFpc2UgRU9GRXJyb3IgaWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkCiAgICBkZWYgZ2V0bGluZShzZWxmKToKICAgICAgICBsaW5lID0gc2VsZi5maWxlLnJlYWRsaW5lKHNlbGYubWF4bGluZSArIDEpCiAgICAgICAgaWYgbGVuKGxpbmUpID4gc2VsZi5tYXhsaW5lOgogICAgICAgICAgICByYWlzZSBFcnJvcigiZ290IG1vcmUgdGhhbiAlZCBieXRlcyIgJSBzZWxmLm1heGxpbmUpCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmcgPiAxOgogICAgICAgICAgICBwcmludCgnKmdldConLCBzZWxmLnNhbml0aXplKGxpbmUpKQogICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgIGlmIGxpbmVbLTI6XSA9PSBDUkxGOgogICAgICAgICAgICBsaW5lID0gbGluZVs6LTJdCiAgICAgICAgZWxpZiBsaW5lWy0xOl0gaW4gQ1JMRjoKICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQogICAgICAgIHJldHVybiBsaW5lCgogICAgIyBJbnRlcm5hbDogZ2V0IGEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLCB3aGljaCBtYXkgcG9zc2libHkKICAgICMgY29uc2lzdCBvZiBtdWx0aXBsZSBsaW5lcy4gIFJldHVybiBhIHNpbmdsZSBzdHJpbmcgd2l0aCBubwogICAgIyB0cmFpbGluZyBDUkxGLiAgSWYgdGhlIHJlc3BvbnNlIGNvbnNpc3RzIG9mIG11bHRpcGxlIGxpbmVzLAogICAgIyB0aGVzZSBhcmUgc2VwYXJhdGVkIGJ5ICdcbicgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nCiAgICBkZWYgZ2V0bXVsdGlsaW5lKHNlbGYpOgogICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUoKQogICAgICAgIGlmIGxpbmVbMzo0XSA9PSAnLSc6CiAgICAgICAgICAgIGNvZGUgPSBsaW5lWzozXQogICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgbmV4dGxpbmUgPSBzZWxmLmdldGxpbmUoKQogICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyAoJ1xuJyArIG5leHRsaW5lKQogICAgICAgICAgICAgICAgaWYgbmV4dGxpbmVbOjNdID09IGNvZGUgYW5kIFwKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGxpbmVbMzo0XSAhPSAnLSc6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICByZXR1cm4gbGluZQoKICAgICMgSW50ZXJuYWw6IGdldCBhIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KICAgICMgUmFpc2UgdmFyaW91cyBlcnJvcnMgaWYgdGhlIHJlc3BvbnNlIGluZGljYXRlcyBhbiBlcnJvcgogICAgZGVmIGdldHJlc3Aoc2VsZik6CiAgICAgICAgcmVzcCA9IHNlbGYuZ2V0bXVsdGlsaW5lKCkKICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZzoKICAgICAgICAgICAgcHJpbnQoJypyZXNwKicsIHNlbGYuc2FuaXRpemUocmVzcCkpCiAgICAgICAgc2VsZi5sYXN0cmVzcCA9IHJlc3BbOjNdCiAgICAgICAgYyA9IHJlc3BbOjFdCiAgICAgICAgaWYgYyBpbiB7JzEnLCAnMicsICczJ306CiAgICAgICAgICAgIHJldHVybiByZXNwCiAgICAgICAgaWYgYyA9PSAnNCc6CiAgICAgICAgICAgIHJhaXNlIGVycm9yX3RlbXAocmVzcCkKICAgICAgICBpZiBjID09ICc1JzoKICAgICAgICAgICAgcmFpc2UgZXJyb3JfcGVybShyZXNwKQogICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKHJlc3ApCgogICAgZGVmIHZvaWRyZXNwKHNlbGYpOgogICAgICAgICIiIkV4cGVjdCBhIHJlc3BvbnNlIGJlZ2lubmluZyB3aXRoICcyJy4iIiIKICAgICAgICByZXNwID0gc2VsZi5nZXRyZXNwKCkKICAgICAgICBpZiByZXNwWzoxXSAhPSAnMic6CiAgICAgICAgICAgIHJhaXNlIGVycm9yX3JlcGx5KHJlc3ApCiAgICAgICAgcmV0dXJuIHJlc3AKCiAgICBkZWYgYWJvcnQoc2VsZik6CiAgICAgICAgJycnQWJvcnQgYSBmaWxlIHRyYW5zZmVyLiAgVXNlcyBvdXQtb2YtYmFuZCBkYXRhLgogICAgICAgIFRoaXMgZG9lcyBub3QgZm9sbG93IHRoZSBwcm9jZWR1cmUgZnJvbSB0aGUgUkZDIHRvIHNlbmQgVGVsbmV0CiAgICAgICAgSVAgYW5kIFN5bmNoOyB0aGF0IGRvZXNuJ3Qgc2VlbSB0byB3b3JrIHdpdGggdGhlIHNlcnZlcnMgSSd2ZQogICAgICAgIHRyaWVkLiAgSW5zdGVhZCwganVzdCBzZW5kIHRoZSBBQk9SIGNvbW1hbmQgYXMgT09CIGRhdGEuJycnCiAgICAgICAgbGluZSA9IGInQUJPUicgKyBCX0NSTEYKICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDE6CiAgICAgICAgICAgIHByaW50KCcqcHV0IHVyZ2VudConLCBzZWxmLnNhbml0aXplKGxpbmUpKQogICAgICAgIHNlbGYuc29jay5zZW5kYWxsKGxpbmUsIE1TR19PT0IpCiAgICAgICAgcmVzcCA9IHNlbGYuZ2V0bXVsdGlsaW5lKCkKICAgICAgICBpZiByZXNwWzozXSBub3QgaW4geyc0MjYnLCAnMjI1JywgJzIyNid9OgogICAgICAgICAgICByYWlzZSBlcnJvcl9wcm90byhyZXNwKQogICAgICAgIHJldHVybiByZXNwCgogICAgZGVmIHNlbmRjbWQoc2VsZiwgY21kKToKICAgICAgICAnJydTZW5kIGEgY29tbWFuZCBhbmQgcmV0dXJuIHRoZSByZXNwb25zZS4nJycKICAgICAgICBzZWxmLnB1dGNtZChjbWQpCiAgICAgICAgcmV0dXJuIHNlbGYuZ2V0cmVzcCgpCgogICAgZGVmIHZvaWRjbWQoc2VsZiwgY21kKToKICAgICAgICAiIiJTZW5kIGEgY29tbWFuZCBhbmQgZXhwZWN0IGEgcmVzcG9uc2UgYmVnaW5uaW5nIHdpdGggJzInLiIiIgogICAgICAgIHNlbGYucHV0Y21kKGNtZCkKICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCgogICAgZGVmIHNlbmRwb3J0KHNlbGYsIGhvc3QsIHBvcnQpOgogICAgICAgICcnJ1NlbmQgYSBQT1JUIGNvbW1hbmQgd2l0aCB0aGUgY3VycmVudCBob3N0IGFuZCB0aGUgZ2l2ZW4KICAgICAgICBwb3J0IG51bWJlci4KICAgICAgICAnJycKICAgICAgICBoYnl0ZXMgPSBob3N0LnNwbGl0KCcuJykKICAgICAgICBwYnl0ZXMgPSBbcmVwcihwb3J0Ly8yNTYpLCByZXByKHBvcnQlMjU2KV0KICAgICAgICBieXRlcyA9IGhieXRlcyArIHBieXRlcwogICAgICAgIGNtZCA9ICdQT1JUICcgKyAnLCcuam9pbihieXRlcykKICAgICAgICByZXR1cm4gc2VsZi52b2lkY21kKGNtZCkKCiAgICBkZWYgc2VuZGVwcnQoc2VsZiwgaG9zdCwgcG9ydCk6CiAgICAgICAgJycnU2VuZCBhbiBFUFJUIGNvbW1hbmQgd2l0aCB0aGUgY3VycmVudCBob3N0IGFuZCB0aGUgZ2l2ZW4gcG9ydCBudW1iZXIuJycnCiAgICAgICAgYWYgPSAwCiAgICAgICAgaWYgc2VsZi5hZiA9PSBzb2NrZXQuQUZfSU5FVDoKICAgICAgICAgICAgYWYgPSAxCiAgICAgICAgaWYgc2VsZi5hZiA9PSBzb2NrZXQuQUZfSU5FVDY6CiAgICAgICAgICAgIGFmID0gMgogICAgICAgIGlmIGFmID09IDA6CiAgICAgICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKCd1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseScpCiAgICAgICAgZmllbGRzID0gWycnLCByZXByKGFmKSwgaG9zdCwgcmVwcihwb3J0KSwgJyddCiAgICAgICAgY21kID0gJ0VQUlQgJyArICd8Jy5qb2luKGZpZWxkcykKICAgICAgICByZXR1cm4gc2VsZi52b2lkY21kKGNtZCkKCiAgICBkZWYgbWFrZXBvcnQoc2VsZik6CiAgICAgICAgJycnQ3JlYXRlIGEgbmV3IHNvY2tldCBhbmQgc2VuZCBhIFBPUlQgY29tbWFuZCBmb3IgaXQuJycnCiAgICAgICAgc29jayA9IHNvY2tldC5jcmVhdGVfc2VydmVyKCgiIiwgMCksIGZhbWlseT1zZWxmLmFmLCBiYWNrbG9nPTEpCiAgICAgICAgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXSAjIEdldCBwcm9wZXIgcG9ydAogICAgICAgIGhvc3QgPSBzZWxmLnNvY2suZ2V0c29ja25hbWUoKVswXSAjIEdldCBwcm9wZXIgaG9zdAogICAgICAgIGlmIHNlbGYuYWYgPT0gc29ja2V0LkFGX0lORVQ6CiAgICAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRwb3J0KGhvc3QsIHBvcnQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGVwcnQoaG9zdCwgcG9ydCkKICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUOgogICAgICAgICAgICBzb2NrLnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQogICAgICAgIHJldHVybiBzb2NrCgogICAgZGVmIG1ha2VwYXN2KHNlbGYpOgogICAgICAgICIiIkludGVybmFsOiBEb2VzIHRoZSBQQVNWIG9yIEVQU1YgaGFuZHNoYWtlIC0+IChhZGRyZXNzLCBwb3J0KSIiIgogICAgICAgIGlmIHNlbGYuYWYgPT0gc29ja2V0LkFGX0lORVQ6CiAgICAgICAgICAgIHVudHJ1c3RlZF9ob3N0LCBwb3J0ID0gcGFyc2UyMjcoc2VsZi5zZW5kY21kKCdQQVNWJykpCiAgICAgICAgICAgIGlmIHNlbGYudHJ1c3Rfc2VydmVyX3Bhc3ZfaXB2NF9hZGRyZXNzOgogICAgICAgICAgICAgICAgaG9zdCA9IHVudHJ1c3RlZF9ob3N0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBob3N0ID0gc2VsZi5zb2NrLmdldHBlZXJuYW1lKClbMF0KICAgICAgICBlbHNlOgogICAgICAgICAgICBob3N0LCBwb3J0ID0gcGFyc2UyMjkoc2VsZi5zZW5kY21kKCdFUFNWJyksIHNlbGYuc29jay5nZXRwZWVybmFtZSgpKQogICAgICAgIHJldHVybiBob3N0LCBwb3J0CgogICAgZGVmIG50cmFuc2ZlcmNtZChzZWxmLCBjbWQsIHJlc3Q9Tm9uZSk6CiAgICAgICAgIiIiSW5pdGlhdGUgYSB0cmFuc2ZlciBvdmVyIHRoZSBkYXRhIGNvbm5lY3Rpb24uCgogICAgICAgIElmIHRoZSB0cmFuc2ZlciBpcyBhY3RpdmUsIHNlbmQgYSBwb3J0IGNvbW1hbmQgYW5kIHRoZQogICAgICAgIHRyYW5zZmVyIGNvbW1hbmQsIGFuZCBhY2NlcHQgdGhlIGNvbm5lY3Rpb24uICBJZiB0aGUgc2VydmVyIGlzCiAgICAgICAgcGFzc2l2ZSwgc2VuZCBhIHBhc3YgY29tbWFuZCwgY29ubmVjdCB0byBpdCwgYW5kIHN0YXJ0IHRoZQogICAgICAgIHRyYW5zZmVyIGNvbW1hbmQuICBFaXRoZXIgd2F5LCByZXR1cm4gdGhlIHNvY2tldCBmb3IgdGhlCiAgICAgICAgY29ubmVjdGlvbiBhbmQgdGhlIGV4cGVjdGVkIHNpemUgb2YgdGhlIHRyYW5zZmVyLiAgVGhlCiAgICAgICAgZXhwZWN0ZWQgc2l6ZSBtYXkgYmUgTm9uZSBpZiBpdCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC4KCiAgICAgICAgT3B0aW9uYWwgYHJlc3QnIGFyZ3VtZW50IGNhbiBiZSBhIHN0cmluZyB0aGF0IGlzIHNlbnQgYXMgdGhlCiAgICAgICAgYXJndW1lbnQgdG8gYSBSRVNUIGNvbW1hbmQuICBUaGlzIGlzIGVzc2VudGlhbGx5IGEgc2VydmVyCiAgICAgICAgbWFya2VyIHVzZWQgdG8gdGVsbCB0aGUgc2VydmVyIHRvIHNraXAgb3ZlciBhbnkgZGF0YSB1cCB0byB0aGUKICAgICAgICBnaXZlbiBtYXJrZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2l6ZSA9IE5vbmUKICAgICAgICBpZiBzZWxmLnBhc3NpdmVzZXJ2ZXI6CiAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLm1ha2VwYXN2KCkKICAgICAgICAgICAgY29ubiA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHNlbGYudGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiByZXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZGNtZCgiUkVTVCAlcyIgJSByZXN0KQogICAgICAgICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZChjbWQpCiAgICAgICAgICAgICAgICAjIFNvbWUgc2VydmVycyBhcHBhcmVudGx5IHNlbmQgYSAyMDAgcmVwbHkgdG8KICAgICAgICAgICAgICAgICMgYSBMSVNUIG9yIFNUT1IgY29tbWFuZCwgYmVmb3JlIHRoZSAxNTAgcmVwbHkKICAgICAgICAgICAgICAgICMgKGFuZCB3YXkgYmVmb3JlIHRoZSAyMjYgcmVwbHkpLiBUaGlzIHNlZW1zIHRvCiAgICAgICAgICAgICAgICAjIGJlIGluIHZpb2xhdGlvbiBvZiB0aGUgcHJvdG9jb2wgKHdoaWNoIG9ubHkgYWxsb3dzCiAgICAgICAgICAgICAgICAjIDF4eCBvciBlcnJvciBtZXNzYWdlcyBmb3IgTElTVCksIHNvIHdlIGp1c3QgZGlzY2FyZAogICAgICAgICAgICAgICAgIyB0aGlzIHJlc3BvbnNlLgogICAgICAgICAgICAgICAgaWYgcmVzcFswXSA9PSAnMic6CiAgICAgICAgICAgICAgICAgICAgcmVzcCA9IHNlbGYuZ2V0cmVzcCgpCiAgICAgICAgICAgICAgICBpZiByZXNwWzBdICE9ICcxJzoKICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcl9yZXBseShyZXNwKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgd2l0aCBzZWxmLm1ha2Vwb3J0KCkgYXMgc29jazoKICAgICAgICAgICAgICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kY21kKCJSRVNUICVzIiAlIHJlc3QpCiAgICAgICAgICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKGNtZCkKICAgICAgICAgICAgICAgICMgU2VlIGFib3ZlLgogICAgICAgICAgICAgICAgaWYgcmVzcFswXSA9PSAnMic6CiAgICAgICAgICAgICAgICAgICAgcmVzcCA9IHNlbGYuZ2V0cmVzcCgpCiAgICAgICAgICAgICAgICBpZiByZXNwWzBdICE9ICcxJzoKICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcl9yZXBseShyZXNwKQogICAgICAgICAgICAgICAgY29ubiwgc29ja2FkZHIgPSBzb2NrLmFjY2VwdCgpCiAgICAgICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUOgogICAgICAgICAgICAgICAgICAgIGNvbm4uc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCiAgICAgICAgaWYgcmVzcFs6M10gPT0gJzE1MCc6CiAgICAgICAgICAgICMgdGhpcyBpcyBjb25kaXRpb25hbCBpbiBjYXNlIHdlIHJlY2VpdmVkIGEgMTI1CiAgICAgICAgICAgIHNpemUgPSBwYXJzZTE1MChyZXNwKQogICAgICAgIHJldHVybiBjb25uLCBzaXplCgogICAgZGVmIHRyYW5zZmVyY21kKHNlbGYsIGNtZCwgcmVzdD1Ob25lKToKICAgICAgICAiIiJMaWtlIG50cmFuc2ZlcmNtZCgpIGJ1dCByZXR1cm5zIG9ubHkgdGhlIHNvY2tldC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5udHJhbnNmZXJjbWQoY21kLCByZXN0KVswXQoKICAgIGRlZiBsb2dpbihzZWxmLCB1c2VyID0gJycsIHBhc3N3ZCA9ICcnLCBhY2N0ID0gJycpOgogICAgICAgICcnJ0xvZ2luLCBkZWZhdWx0IGFub255bW91cy4nJycKICAgICAgICBpZiBub3QgdXNlcjoKICAgICAgICAgICAgdXNlciA9ICdhbm9ueW1vdXMnCiAgICAgICAgaWYgbm90IHBhc3N3ZDoKICAgICAgICAgICAgcGFzc3dkID0gJycKICAgICAgICBpZiBub3QgYWNjdDoKICAgICAgICAgICAgYWNjdCA9ICcnCiAgICAgICAgaWYgdXNlciA9PSAnYW5vbnltb3VzJyBhbmQgcGFzc3dkIGluIHsnJywgJy0nfToKICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyBhbm9ueW1vdXMgZnRwIHBhc3N3b3JkIHNwZWNpZmllZAogICAgICAgICAgICAjIHRoZW4gd2UnbGwganVzdCB1c2UgYW5vbnltb3VzQAogICAgICAgICAgICAjIFdlIGRvbid0IHNlbmQgYW55IG90aGVyIHRoaW5nIGJlY2F1c2U6CiAgICAgICAgICAgICMgLSBXZSB3YW50IHRvIHJlbWFpbiBhbm9ueW1vdXMKICAgICAgICAgICAgIyAtIFdlIHdhbnQgdG8gc3RvcCBTUEFNCiAgICAgICAgICAgICMgLSBXZSBkb24ndCB3YW50IHRvIGxldCBmdHAgc2l0ZXMgdG8gZGlzY3JpbWluYXRlIGJ5IHRoZSB1c2VyLAogICAgICAgICAgICAjICAgaG9zdCBvciBjb3VudHJ5LgogICAgICAgICAgICBwYXNzd2QgPSBwYXNzd2QgKyAnYW5vbnltb3VzQCcKICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdVU0VSICcgKyB1c2VyKQogICAgICAgIGlmIHJlc3BbMF0gPT0gJzMnOgogICAgICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdQQVNTICcgKyBwYXNzd2QpCiAgICAgICAgaWYgcmVzcFswXSA9PSAnMyc6CiAgICAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ0FDQ1QgJyArIGFjY3QpCiAgICAgICAgaWYgcmVzcFswXSAhPSAnMic6CiAgICAgICAgICAgIHJhaXNlIGVycm9yX3JlcGx5KHJlc3ApCiAgICAgICAgcmV0dXJuIHJlc3AKCiAgICBkZWYgcmV0cmJpbmFyeShzZWxmLCBjbWQsIGNhbGxiYWNrLCBibG9ja3NpemU9ODE5MiwgcmVzdD1Ob25lKToKICAgICAgICAiIiJSZXRyaWV2ZSBkYXRhIGluIGJpbmFyeSBtb2RlLiAgQSBuZXcgcG9ydCBpcyBjcmVhdGVkIGZvciB5b3UuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICBjbWQ6IEEgUkVUUiBjb21tYW5kLgogICAgICAgICAgY2FsbGJhY2s6IEEgc2luZ2xlIHBhcmFtZXRlciBjYWxsYWJsZSB0byBiZSBjYWxsZWQgb24gZWFjaAogICAgICAgICAgICAgICAgICAgIGJsb2NrIG9mIGRhdGEgcmVhZC4KICAgICAgICAgIGJsb2Nrc2l6ZTogVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgc29ja2V0IGF0IG9uZSB0aW1lLiAgW2RlZmF1bHQ6IDgxOTJdCiAgICAgICAgICByZXN0OiBQYXNzZWQgdG8gdHJhbnNmZXJjbWQoKS4gIFtkZWZhdWx0OiBOb25lXQoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgVGhlIHJlc3BvbnNlIGNvZGUuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQogICAgICAgIHdpdGggc2VsZi50cmFuc2ZlcmNtZChjbWQsIHJlc3QpIGFzIGNvbm46CiAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICBkYXRhID0gY29ubi5yZWN2KGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhKQogICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICBpZiBfU1NMU29ja2V0IGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKGNvbm4sIF9TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQogICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKCiAgICBkZWYgcmV0cmxpbmVzKHNlbGYsIGNtZCwgY2FsbGJhY2sgPSBOb25lKToKICAgICAgICAiIiJSZXRyaWV2ZSBkYXRhIGluIGxpbmUgbW9kZS4gIEEgbmV3IHBvcnQgaXMgY3JlYXRlZCBmb3IgeW91LgoKICAgICAgICBBcmdzOgogICAgICAgICAgY21kOiBBIFJFVFIsIExJU1QsIG9yIE5MU1QgY29tbWFuZC4KICAgICAgICAgIGNhbGxiYWNrOiBBbiBvcHRpb25hbCBzaW5nbGUgcGFyYW1ldGVyIGNhbGxhYmxlIHRoYXQgaXMgY2FsbGVkCiAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2ggbGluZSB3aXRoIHRoZSB0cmFpbGluZyBDUkxGIHN0cmlwcGVkLgogICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0OiBwcmludF9saW5lKCldCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICBUaGUgcmVzcG9uc2UgY29kZS4KICAgICAgICAiIiIKICAgICAgICBpZiBjYWxsYmFjayBpcyBOb25lOgogICAgICAgICAgICBjYWxsYmFjayA9IHByaW50X2xpbmUKICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdUWVBFIEEnKQogICAgICAgIHdpdGggc2VsZi50cmFuc2ZlcmNtZChjbWQpIGFzIGNvbm4sIFwKICAgICAgICAgICAgICAgICBjb25uLm1ha2VmaWxlKCdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykgYXMgZnA6CiAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICBsaW5lID0gZnAucmVhZGxpbmUoc2VsZi5tYXhsaW5lICsgMSkKICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lKSA+IHNlbGYubWF4bGluZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiZ290IG1vcmUgdGhhbiAlZCBieXRlcyIgJSBzZWxmLm1heGxpbmUpCiAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDI6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoJypyZXRyKicsIHJlcHIobGluZSkpCiAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgaWYgbGluZVstMjpdID09IENSTEY6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXQogICAgICAgICAgICAgICAgZWxpZiBsaW5lWy0xOl0gPT0gJ1xuJzoKICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6LTFdCiAgICAgICAgICAgICAgICBjYWxsYmFjayhsaW5lKQogICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICBpZiBfU1NMU29ja2V0IGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKGNvbm4sIF9TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQogICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKCiAgICBkZWYgc3RvcmJpbmFyeShzZWxmLCBjbWQsIGZwLCBibG9ja3NpemU9ODE5MiwgY2FsbGJhY2s9Tm9uZSwgcmVzdD1Ob25lKToKICAgICAgICAiIiJTdG9yZSBhIGZpbGUgaW4gYmluYXJ5IG1vZGUuICBBIG5ldyBwb3J0IGlzIGNyZWF0ZWQgZm9yIHlvdS4KCiAgICAgICAgQXJnczoKICAgICAgICAgIGNtZDogQSBTVE9SIGNvbW1hbmQuCiAgICAgICAgICBmcDogQSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggYSByZWFkKG51bV9ieXRlcykgbWV0aG9kLgogICAgICAgICAgYmxvY2tzaXplOiBUaGUgbWF4aW11bSBkYXRhIHNpemUgdG8gcmVhZCBmcm9tIGZwIGFuZCBzZW5kIG92ZXIKICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbm5lY3Rpb24gYXQgb25jZS4gIFtkZWZhdWx0OiA4MTkyXQogICAgICAgICAgY2FsbGJhY2s6IEFuIG9wdGlvbmFsIHNpbmdsZSBwYXJhbWV0ZXIgY2FsbGFibGUgdGhhdCBpcyBjYWxsZWQgb24KICAgICAgICAgICAgICAgICAgICBlYWNoIGJsb2NrIG9mIGRhdGEgYWZ0ZXIgaXQgaXMgc2VudC4gIFtkZWZhdWx0OiBOb25lXQogICAgICAgICAgcmVzdDogUGFzc2VkIHRvIHRyYW5zZmVyY21kKCkuICBbZGVmYXVsdDogTm9uZV0KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgIFRoZSByZXNwb25zZSBjb2RlLgogICAgICAgICIiIgogICAgICAgIHNlbGYudm9pZGNtZCgnVFlQRSBJJykKICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KSBhcyBjb25uOgogICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZChibG9ja3NpemUpCiAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBjb25uLnNlbmRhbGwoYnVmKQogICAgICAgICAgICAgICAgaWYgY2FsbGJhY2s6CiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soYnVmKQogICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICBpZiBfU1NMU29ja2V0IGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKGNvbm4sIF9TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQogICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKCiAgICBkZWYgc3RvcmxpbmVzKHNlbGYsIGNtZCwgZnAsIGNhbGxiYWNrPU5vbmUpOgogICAgICAgICIiIlN0b3JlIGEgZmlsZSBpbiBsaW5lIG1vZGUuICBBIG5ldyBwb3J0IGlzIGNyZWF0ZWQgZm9yIHlvdS4KCiAgICAgICAgQXJnczoKICAgICAgICAgIGNtZDogQSBTVE9SIGNvbW1hbmQuCiAgICAgICAgICBmcDogQSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggYSByZWFkbGluZSgpIG1ldGhvZC4KICAgICAgICAgIGNhbGxiYWNrOiBBbiBvcHRpb25hbCBzaW5nbGUgcGFyYW1ldGVyIGNhbGxhYmxlIHRoYXQgaXMgY2FsbGVkIG9uCiAgICAgICAgICAgICAgICAgICAgZWFjaCBsaW5lIGFmdGVyIGl0IGlzIHNlbnQuICBbZGVmYXVsdDogTm9uZV0KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgIFRoZSByZXNwb25zZSBjb2RlLgogICAgICAgICIiIgogICAgICAgIHNlbGYudm9pZGNtZCgnVFlQRSBBJykKICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kKSBhcyBjb25uOgogICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZGxpbmUoc2VsZi5tYXhsaW5lICsgMSkKICAgICAgICAgICAgICAgIGlmIGxlbihidWYpID4gc2VsZi5tYXhsaW5lOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJnb3QgbW9yZSB0aGFuICVkIGJ5dGVzIiAlIHNlbGYubWF4bGluZSkKICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGlmIGJ1ZlstMjpdICE9IEJfQ1JMRjoKICAgICAgICAgICAgICAgICAgICBpZiBidWZbLTFdIGluIEJfQ1JMRjogYnVmID0gYnVmWzotMV0KICAgICAgICAgICAgICAgICAgICBidWYgPSBidWYgKyBCX0NSTEYKICAgICAgICAgICAgICAgIGNvbm4uc2VuZGFsbChidWYpCiAgICAgICAgICAgICAgICBpZiBjYWxsYmFjazoKICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhidWYpCiAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCiAgICAgICAgICAgIGlmIF9TU0xTb2NrZXQgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2UoY29ubiwgX1NTTFNvY2tldCk6CiAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCiAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQoKICAgIGRlZiBhY2N0KHNlbGYsIHBhc3N3b3JkKToKICAgICAgICAnJydTZW5kIG5ldyBhY2NvdW50IG5hbWUuJycnCiAgICAgICAgY21kID0gJ0FDQ1QgJyArIHBhc3N3b3JkCiAgICAgICAgcmV0dXJuIHNlbGYudm9pZGNtZChjbWQpCgogICAgZGVmIG5sc3Qoc2VsZiwgKmFyZ3MpOgogICAgICAgICcnJ1JldHVybiBhIGxpc3Qgb2YgZmlsZXMgaW4gYSBnaXZlbiBkaXJlY3RvcnkgKGRlZmF1bHQgdGhlIGN1cnJlbnQpLicnJwogICAgICAgIGNtZCA9ICdOTFNUJwogICAgICAgIGZvciBhcmcgaW4gYXJnczoKICAgICAgICAgICAgY21kID0gY21kICsgKCcgJyArIGFyZykKICAgICAgICBmaWxlcyA9IFtdCiAgICAgICAgc2VsZi5yZXRybGluZXMoY21kLCBmaWxlcy5hcHBlbmQpCiAgICAgICAgcmV0dXJuIGZpbGVzCgogICAgZGVmIGRpcihzZWxmLCAqYXJncyk6CiAgICAgICAgJycnTGlzdCBhIGRpcmVjdG9yeSBpbiBsb25nIGZvcm0uCiAgICAgICAgQnkgZGVmYXVsdCBsaXN0IGN1cnJlbnQgZGlyZWN0b3J5IHRvIHN0ZG91dC4KICAgICAgICBPcHRpb25hbCBsYXN0IGFyZ3VtZW50IGlzIGNhbGxiYWNrIGZ1bmN0aW9uOyBhbGwKICAgICAgICBub24tZW1wdHkgYXJndW1lbnRzIGJlZm9yZSBpdCBhcmUgY29uY2F0ZW5hdGVkIHRvIHRoZQogICAgICAgIExJU1QgY29tbWFuZC4gIChUaGlzICpzaG91bGQqIG9ubHkgYmUgdXNlZCBmb3IgYSBwYXRobmFtZS4pJycnCiAgICAgICAgY21kID0gJ0xJU1QnCiAgICAgICAgZnVuYyA9IE5vbmUKICAgICAgICBpZiBhcmdzWy0xOl0gYW5kIHR5cGUoYXJnc1stMV0pICE9IHR5cGUoJycpOgogICAgICAgICAgICBhcmdzLCBmdW5jID0gYXJnc1s6LTFdLCBhcmdzWy0xXQogICAgICAgIGZvciBhcmcgaW4gYXJnczoKICAgICAgICAgICAgaWYgYXJnOgogICAgICAgICAgICAgICAgY21kID0gY21kICsgKCcgJyArIGFyZykKICAgICAgICBzZWxmLnJldHJsaW5lcyhjbWQsIGZ1bmMpCgogICAgZGVmIG1sc2Qoc2VsZiwgcGF0aD0iIiwgZmFjdHM9W10pOgogICAgICAgICcnJ0xpc3QgYSBkaXJlY3RvcnkgaW4gYSBzdGFuZGFyZGl6ZWQgZm9ybWF0IGJ5IHVzaW5nIE1MU0QKICAgICAgICBjb21tYW5kIChSRkMtMzY1OSkuIElmIHBhdGggaXMgb21pdHRlZCB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgICAgICBpcyBhc3N1bWVkLiAiZmFjdHMiIGlzIGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHlwZQogICAgICAgIG9mIGluZm9ybWF0aW9uIGRlc2lyZWQgKGUuZy4gWyJ0eXBlIiwgInNpemUiLCAicGVybSJdKS4KCiAgICAgICAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9iamVjdCB5aWVsZGluZyBhIHR1cGxlIG9mIHR3byBlbGVtZW50cwogICAgICAgIGZvciBldmVyeSBmaWxlIGZvdW5kIGluIHBhdGguCiAgICAgICAgRmlyc3QgZWxlbWVudCBpcyB0aGUgZmlsZSBuYW1lLCB0aGUgc2Vjb25kIG9uZSBpcyBhIGRpY3Rpb25hcnkKICAgICAgICBpbmNsdWRpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgImZhY3RzIiBkZXBlbmRpbmcgb24gdGhlIHNlcnZlcgogICAgICAgIGFuZCB3aGV0aGVyICJmYWN0cyIgYXJndW1lbnQgaGFzIGJlZW4gcHJvdmlkZWQuCiAgICAgICAgJycnCiAgICAgICAgaWYgZmFjdHM6CiAgICAgICAgICAgIHNlbGYuc2VuZGNtZCgiT1BUUyBNTFNUICIgKyAiOyIuam9pbihmYWN0cykgKyAiOyIpCiAgICAgICAgaWYgcGF0aDoKICAgICAgICAgICAgY21kID0gIk1MU0QgJXMiICUgcGF0aAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNtZCA9ICJNTFNEIgogICAgICAgIGxpbmVzID0gW10KICAgICAgICBzZWxmLnJldHJsaW5lcyhjbWQsIGxpbmVzLmFwcGVuZCkKICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICAgICAgZmFjdHNfZm91bmQsIF8sIG5hbWUgPSBsaW5lLnJzdHJpcChDUkxGKS5wYXJ0aXRpb24oJyAnKQogICAgICAgICAgICBlbnRyeSA9IHt9CiAgICAgICAgICAgIGZvciBmYWN0IGluIGZhY3RzX2ZvdW5kWzotMV0uc3BsaXQoIjsiKToKICAgICAgICAgICAgICAgIGtleSwgXywgdmFsdWUgPSBmYWN0LnBhcnRpdGlvbigiPSIpCiAgICAgICAgICAgICAgICBlbnRyeVtrZXkubG93ZXIoKV0gPSB2YWx1ZQogICAgICAgICAgICB5aWVsZCAobmFtZSwgZW50cnkpCgogICAgZGVmIHJlbmFtZShzZWxmLCBmcm9tbmFtZSwgdG9uYW1lKToKICAgICAgICAnJydSZW5hbWUgYSBmaWxlLicnJwogICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1JORlIgJyArIGZyb21uYW1lKQogICAgICAgIGlmIHJlc3BbMF0gIT0gJzMnOgogICAgICAgICAgICByYWlzZSBlcnJvcl9yZXBseShyZXNwKQogICAgICAgIHJldHVybiBzZWxmLnZvaWRjbWQoJ1JOVE8gJyArIHRvbmFtZSkKCiAgICBkZWYgZGVsZXRlKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAnJydEZWxldGUgYSBmaWxlLicnJwogICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ0RFTEUgJyArIGZpbGVuYW1lKQogICAgICAgIGlmIHJlc3BbOjNdIGluIHsnMjUwJywgJzIwMCd9OgogICAgICAgICAgICByZXR1cm4gcmVzcAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIGVycm9yX3JlcGx5KHJlc3ApCgogICAgZGVmIGN3ZChzZWxmLCBkaXJuYW1lKToKICAgICAgICAnJydDaGFuZ2UgdG8gYSBkaXJlY3RvcnkuJycnCiAgICAgICAgaWYgZGlybmFtZSA9PSAnLi4nOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkY21kKCdDRFVQJykKICAgICAgICAgICAgZXhjZXB0IGVycm9yX3Blcm0gYXMgbXNnOgogICAgICAgICAgICAgICAgaWYgbXNnLmFyZ3NbMF1bOjNdICE9ICc1MDAnOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZWxpZiBkaXJuYW1lID09ICcnOgogICAgICAgICAgICBkaXJuYW1lID0gJy4nICAjIGRvZXMgbm90aGluZywgYnV0IGNvdWxkIHJldHVybiBlcnJvcgogICAgICAgIGNtZCA9ICdDV0QgJyArIGRpcm5hbWUKICAgICAgICByZXR1cm4gc2VsZi52b2lkY21kKGNtZCkKCiAgICBkZWYgc2l6ZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgJycnUmV0cmlldmUgdGhlIHNpemUgb2YgYSBmaWxlLicnJwogICAgICAgICMgVGhlIFNJWkUgY29tbWFuZCBpcyBkZWZpbmVkIGluIFJGQy0zNjU5CiAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZCgnU0laRSAnICsgZmlsZW5hbWUpCiAgICAgICAgaWYgcmVzcFs6M10gPT0gJzIxMyc6CiAgICAgICAgICAgIHMgPSByZXNwWzM6XS5zdHJpcCgpCiAgICAgICAgICAgIHJldHVybiBpbnQocykKCiAgICBkZWYgbWtkKHNlbGYsIGRpcm5hbWUpOgogICAgICAgICcnJ01ha2UgYSBkaXJlY3RvcnksIHJldHVybiBpdHMgZnVsbCBwYXRobmFtZS4nJycKICAgICAgICByZXNwID0gc2VsZi52b2lkY21kKCdNS0QgJyArIGRpcm5hbWUpCiAgICAgICAgIyBmaXggYXJvdW5kIG5vbi1jb21wbGlhbnQgaW1wbGVtZW50YXRpb25zIHN1Y2ggYXMgSUlTIHNoaXBwZWQKICAgICAgICAjIHdpdGggV2luZG93cyBzZXJ2ZXIgMjAwMwogICAgICAgIGlmIG5vdCByZXNwLnN0YXJ0c3dpdGgoJzI1NycpOgogICAgICAgICAgICByZXR1cm4gJycKICAgICAgICByZXR1cm4gcGFyc2UyNTcocmVzcCkKCiAgICBkZWYgcm1kKHNlbGYsIGRpcm5hbWUpOgogICAgICAgICcnJ1JlbW92ZSBhIGRpcmVjdG9yeS4nJycKICAgICAgICByZXR1cm4gc2VsZi52b2lkY21kKCdSTUQgJyArIGRpcm5hbWUpCgogICAgZGVmIHB3ZChzZWxmKToKICAgICAgICAnJydSZXR1cm4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4nJycKICAgICAgICByZXNwID0gc2VsZi52b2lkY21kKCdQV0QnKQogICAgICAgICMgZml4IGFyb3VuZCBub24tY29tcGxpYW50IGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIElJUyBzaGlwcGVkCiAgICAgICAgIyB3aXRoIFdpbmRvd3Mgc2VydmVyIDIwMDMKICAgICAgICBpZiBub3QgcmVzcC5zdGFydHN3aXRoKCcyNTcnKToKICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgcmV0dXJuIHBhcnNlMjU3KHJlc3ApCgogICAgZGVmIHF1aXQoc2VsZik6CiAgICAgICAgJycnUXVpdCwgYW5kIGNsb3NlIHRoZSBjb25uZWN0aW9uLicnJwogICAgICAgIHJlc3AgPSBzZWxmLnZvaWRjbWQoJ1FVSVQnKQogICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgIHJldHVybiByZXNwCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICcnJ0Nsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgYXNzdW1pbmcgYW55dGhpbmcgYWJvdXQgaXQuJycnCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWxlID0gc2VsZi5maWxlCiAgICAgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNvY2sgPSBzZWxmLnNvY2sKICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCgp0cnk6CiAgICBpbXBvcnQgc3NsCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIF9TU0xTb2NrZXQgPSBOb25lCmVsc2U6CiAgICBfU1NMU29ja2V0ID0gc3NsLlNTTFNvY2tldAoKICAgIGNsYXNzIEZUUF9UTFMoRlRQKToKICAgICAgICAnJydBIEZUUCBzdWJjbGFzcyB3aGljaCBhZGRzIFRMUyBzdXBwb3J0IHRvIEZUUCBhcyBkZXNjcmliZWQKICAgICAgICBpbiBSRkMtNDIxNy4KCiAgICAgICAgQ29ubmVjdCBhcyB1c3VhbCB0byBwb3J0IDIxIGltcGxpY2l0bHkgc2VjdXJpbmcgdGhlIEZUUCBjb250cm9sCiAgICAgICAgY29ubmVjdGlvbiBiZWZvcmUgYXV0aGVudGljYXRpbmcuCgogICAgICAgIFNlY3VyaW5nIHRoZSBkYXRhIGNvbm5lY3Rpb24gcmVxdWlyZXMgdXNlciB0byBleHBsaWNpdGx5IGFzawogICAgICAgIGZvciBpdCBieSBjYWxsaW5nIHByb3RfcCgpIG1ldGhvZC4KCiAgICAgICAgVXNhZ2UgZXhhbXBsZToKICAgICAgICA+Pj4gZnJvbSBmdHBsaWIgaW1wb3J0IEZUUF9UTFMKICAgICAgICA+Pj4gZnRwcyA9IEZUUF9UTFMoJ2Z0cC5weXRob24ub3JnJykKICAgICAgICA+Pj4gZnRwcy5sb2dpbigpICAjIGxvZ2luIGFub255bW91c2x5IHByZXZpb3VzbHkgc2VjdXJpbmcgY29udHJvbCBjaGFubmVsCiAgICAgICAgJzIzMCBHdWVzdCBsb2dpbiBvaywgYWNjZXNzIHJlc3RyaWN0aW9ucyBhcHBseS4nCiAgICAgICAgPj4+IGZ0cHMucHJvdF9wKCkgICMgc3dpdGNoIHRvIHNlY3VyZSBkYXRhIGNvbm5lY3Rpb24KICAgICAgICAnMjAwIFByb3RlY3Rpb24gbGV2ZWwgc2V0IHRvIFAnCiAgICAgICAgPj4+IGZ0cHMucmV0cmxpbmVzKCdMSVNUJykgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBzZWN1cmVseQogICAgICAgIHRvdGFsIDkKICAgICAgICBkcnd4ci14ci14ICAgOCByb290ICAgICB3aGVlbCAgICAgICAgMTAyNCBKYW4gIDMgIDE5OTQgLgogICAgICAgIGRyd3hyLXhyLXggICA4IHJvb3QgICAgIHdoZWVsICAgICAgICAxMDI0IEphbiAgMyAgMTk5NCAuLgogICAgICAgIGRyd3hyLXhyLXggICAyIHJvb3QgICAgIHdoZWVsICAgICAgICAxMDI0IEphbiAgMyAgMTk5NCBiaW4KICAgICAgICBkcnd4ci14ci14ICAgMiByb290ICAgICB3aGVlbCAgICAgICAgMTAyNCBKYW4gIDMgIDE5OTQgZXRjCiAgICAgICAgZC13eHJ3eHIteCAgIDIgZnRwICAgICAgd2hlZWwgICAgICAgIDEwMjQgU2VwICA1IDEzOjQzIGluY29taW5nCiAgICAgICAgZHJ3eHIteHIteCAgIDIgcm9vdCAgICAgd2hlZWwgICAgICAgIDEwMjQgTm92IDE3ICAxOTkzIGxpYgogICAgICAgIGRyd3hyLXhyLXggICA2IDEwOTQgICAgIHdoZWVsICAgICAgICAxMDI0IFNlcCAxMyAxOTowNyBwdWIKICAgICAgICBkcnd4ci14ci14ICAgMyByb290ICAgICB3aGVlbCAgICAgICAgMTAyNCBKYW4gIDMgIDE5OTQgdXNyCiAgICAgICAgLXJ3LXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAzMTIgQXVnICAxICAxOTk0IHdlbGNvbWUubXNnCiAgICAgICAgJzIyNiBUcmFuc2ZlciBjb21wbGV0ZS4nCiAgICAgICAgPj4+IGZ0cHMucXVpdCgpCiAgICAgICAgJzIyMSBHb29kYnllLicKICAgICAgICA+Pj4KICAgICAgICAnJycKICAgICAgICBzc2xfdmVyc2lvbiA9IHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UCgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsCiAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lLAogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PV9HTE9CQUxfREVGQVVMVF9USU1FT1VULCBzb3VyY2VfYWRkcmVzcz1Ob25lLCAqLAogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnKToKICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQogICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzZWxmLnNzbF92ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSkKICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICBzZWxmLl9wcm90X3AgPSBGYWxzZQogICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKGhvc3QsIHVzZXIsIHBhc3N3ZCwgYWNjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0LCBzb3VyY2VfYWRkcmVzcywgZW5jb2Rpbmc9ZW5jb2RpbmcpCgogICAgICAgIGRlZiBsb2dpbihzZWxmLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIHNlY3VyZT1UcnVlKToKICAgICAgICAgICAgaWYgc2VjdXJlIGFuZCBub3QgaXNpbnN0YW5jZShzZWxmLnNvY2ssIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgc2VsZi5hdXRoKCkKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkubG9naW4odXNlciwgcGFzc3dkLCBhY2N0KQoKICAgICAgICBkZWYgYXV0aChzZWxmKToKICAgICAgICAgICAgJycnU2V0IHVwIHNlY3VyZSBjb250cm9sIGNvbm5lY3Rpb24gYnkgdXNpbmcgVExTL1NTTC4nJycKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnNvY2ssIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWxyZWFkeSB1c2luZyBUTFMiKQogICAgICAgICAgICBpZiBzZWxmLnNzbF92ZXJzaW9uID49IHNzbC5QUk9UT0NPTF9UTFM6CiAgICAgICAgICAgICAgICByZXNwID0gc2VsZi52b2lkY21kKCdBVVRIIFRMUycpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXNwID0gc2VsZi52b2lkY21kKCdBVVRIIFNTTCcpCiAgICAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuY29udGV4dC53cmFwX3NvY2tldChzZWxmLnNvY2ssIHNlcnZlcl9ob3N0bmFtZT1zZWxmLmhvc3QpCiAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jay5tYWtlZmlsZShtb2RlPSdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKICAgICAgICAgICAgcmV0dXJuIHJlc3AKCiAgICAgICAgZGVmIGNjYyhzZWxmKToKICAgICAgICAgICAgJycnU3dpdGNoIGJhY2sgdG8gYSBjbGVhci10ZXh0IGNvbnRyb2wgY29ubmVjdGlvbi4nJycKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5zb2NrLCBzc2wuU1NMU29ja2V0KToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCB1c2luZyBUTFMiKQogICAgICAgICAgICByZXNwID0gc2VsZi52b2lkY21kKCdDQ0MnKQogICAgICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLnNvY2sudW53cmFwKCkKICAgICAgICAgICAgcmV0dXJuIHJlc3AKCiAgICAgICAgZGVmIHByb3RfcChzZWxmKToKICAgICAgICAgICAgJycnU2V0IHVwIHNlY3VyZSBkYXRhIGNvbm5lY3Rpb24uJycnCiAgICAgICAgICAgICMgUFJPVCBkZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBkYXRhIGNoYW5uZWwgaXMgdG8gYmUgcHJvdGVjdGVkLgogICAgICAgICAgICAjIFRob3VnaCBSRkMtMjIyOCBkZWZpbmVzIGZvdXIgcG9zc2libGUgcHJvdGVjdGlvbiBsZXZlbHMsCiAgICAgICAgICAgICMgUkZDLTQyMTcgb25seSByZWNvbW1lbmRzIHR3bywgQ2xlYXIgYW5kIFByaXZhdGUuCiAgICAgICAgICAgICMgQ2xlYXIgKFBST1QgQykgbWVhbnMgdGhhdCBubyBzZWN1cml0eSBpcyB0byBiZSB1c2VkIG9uIHRoZQogICAgICAgICAgICAjIGRhdGEtY2hhbm5lbCwgUHJpdmF0ZSAoUFJPVCBQKSBtZWFucyB0aGF0IHRoZSBkYXRhLWNoYW5uZWwKICAgICAgICAgICAgIyBzaG91bGQgYmUgcHJvdGVjdGVkIGJ5IFRMUy4KICAgICAgICAgICAgIyBQQlNaIGNvbW1hbmQgTVVTVCBzdGlsbCBiZSBpc3N1ZWQsIGJ1dCBtdXN0IGhhdmUgYSBwYXJhbWV0ZXIgb2YKICAgICAgICAgICAgIyAnMCcgdG8gaW5kaWNhdGUgdGhhdCBubyBidWZmZXJpbmcgaXMgdGFraW5nIHBsYWNlIGFuZCB0aGUgZGF0YQogICAgICAgICAgICAjIGNvbm5lY3Rpb24gc2hvdWxkIG5vdCBiZSBlbmNhcHN1bGF0ZWQuCiAgICAgICAgICAgIHNlbGYudm9pZGNtZCgnUEJTWiAwJykKICAgICAgICAgICAgcmVzcCA9IHNlbGYudm9pZGNtZCgnUFJPVCBQJykKICAgICAgICAgICAgc2VsZi5fcHJvdF9wID0gVHJ1ZQogICAgICAgICAgICByZXR1cm4gcmVzcAoKICAgICAgICBkZWYgcHJvdF9jKHNlbGYpOgogICAgICAgICAgICAnJydTZXQgdXAgY2xlYXIgdGV4dCBkYXRhIGNvbm5lY3Rpb24uJycnCiAgICAgICAgICAgIHJlc3AgPSBzZWxmLnZvaWRjbWQoJ1BST1QgQycpCiAgICAgICAgICAgIHNlbGYuX3Byb3RfcCA9IEZhbHNlCiAgICAgICAgICAgIHJldHVybiByZXNwCgogICAgICAgICMgLS0tIE92ZXJyaWRkZW4gRlRQIG1ldGhvZHMKCiAgICAgICAgZGVmIG50cmFuc2ZlcmNtZChzZWxmLCBjbWQsIHJlc3Q9Tm9uZSk6CiAgICAgICAgICAgIGNvbm4sIHNpemUgPSBzdXBlcigpLm50cmFuc2ZlcmNtZChjbWQsIHJlc3QpCiAgICAgICAgICAgIGlmIHNlbGYuX3Byb3RfcDoKICAgICAgICAgICAgICAgIGNvbm4gPSBzZWxmLmNvbnRleHQud3JhcF9zb2NrZXQoY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlbGYuaG9zdCkKICAgICAgICAgICAgcmV0dXJuIGNvbm4sIHNpemUKCiAgICAgICAgZGVmIGFib3J0KHNlbGYpOgogICAgICAgICAgICAjIG92ZXJyaWRkZW4gYXMgd2UgY2FuJ3QgcGFzcyBNU0dfT09CIGZsYWcgdG8gc2VuZGFsbCgpCiAgICAgICAgICAgIGxpbmUgPSBiJ0FCT1InICsgQl9DUkxGCiAgICAgICAgICAgIHNlbGYuc29jay5zZW5kYWxsKGxpbmUpCiAgICAgICAgICAgIHJlc3AgPSBzZWxmLmdldG11bHRpbGluZSgpCiAgICAgICAgICAgIGlmIHJlc3BbOjNdIG5vdCBpbiB7JzQyNicsICcyMjUnLCAnMjI2J306CiAgICAgICAgICAgICAgICByYWlzZSBlcnJvcl9wcm90byhyZXNwKQogICAgICAgICAgICByZXR1cm4gcmVzcAoKICAgIF9fYWxsX18uYXBwZW5kKCdGVFBfVExTJykKICAgIGFsbF9lcnJvcnMgPSAoRXJyb3IsIE9TRXJyb3IsIEVPRkVycm9yLCBzc2wuU1NMRXJyb3IpCgoKXzE1MF9yZSA9IE5vbmUKCmRlZiBwYXJzZTE1MChyZXNwKToKICAgICcnJ1BhcnNlIHRoZSAnMTUwJyByZXNwb25zZSBmb3IgYSBSRVRSIHJlcXVlc3QuCiAgICBSZXR1cm5zIHRoZSBleHBlY3RlZCB0cmFuc2ZlciBzaXplIG9yIE5vbmU7IHNpemUgaXMgbm90IGd1YXJhbnRlZWQgdG8KICAgIGJlIHByZXNlbnQgaW4gdGhlIDE1MCBtZXNzYWdlLgogICAgJycnCiAgICBpZiByZXNwWzozXSAhPSAnMTUwJzoKICAgICAgICByYWlzZSBlcnJvcl9yZXBseShyZXNwKQogICAgZ2xvYmFsIF8xNTBfcmUKICAgIGlmIF8xNTBfcmUgaXMgTm9uZToKICAgICAgICBpbXBvcnQgcmUKICAgICAgICBfMTUwX3JlID0gcmUuY29tcGlsZSgKICAgICAgICAgICAgciIxNTAgLiogXCgoXGQrKSBieXRlc1wpIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLkFTQ0lJKQogICAgbSA9IF8xNTBfcmUubWF0Y2gocmVzcCkKICAgIGlmIG5vdCBtOgogICAgICAgIHJldHVybiBOb25lCiAgICByZXR1cm4gaW50KG0uZ3JvdXAoMSkpCgoKXzIyN19yZSA9IE5vbmUKCmRlZiBwYXJzZTIyNyhyZXNwKToKICAgICcnJ1BhcnNlIHRoZSAnMjI3JyByZXNwb25zZSBmb3IgYSBQQVNWIHJlcXVlc3QuCiAgICBSYWlzZXMgZXJyb3JfcHJvdG8gaWYgaXQgZG9lcyBub3QgY29udGFpbiAnKGgxLGgyLGgzLGg0LHAxLHAyKScKICAgIFJldHVybiAoJ2hvc3QuYWRkci5hcy5udW1iZXJzJywgcG9ydCMpIHR1cGxlLicnJwogICAgaWYgcmVzcFs6M10gIT0gJzIyNyc6CiAgICAgICAgcmFpc2UgZXJyb3JfcmVwbHkocmVzcCkKICAgIGdsb2JhbCBfMjI3X3JlCiAgICBpZiBfMjI3X3JlIGlzIE5vbmU6CiAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgXzIyN19yZSA9IHJlLmNvbXBpbGUocicoXGQrKSwoXGQrKSwoXGQrKSwoXGQrKSwoXGQrKSwoXGQrKScsIHJlLkFTQ0lJKQogICAgbSA9IF8yMjdfcmUuc2VhcmNoKHJlc3ApCiAgICBpZiBub3QgbToKICAgICAgICByYWlzZSBlcnJvcl9wcm90byhyZXNwKQogICAgbnVtYmVycyA9IG0uZ3JvdXBzKCkKICAgIGhvc3QgPSAnLicuam9pbihudW1iZXJzWzo0XSkKICAgIHBvcnQgPSAoaW50KG51bWJlcnNbNF0pIDw8IDgpICsgaW50KG51bWJlcnNbNV0pCiAgICByZXR1cm4gaG9zdCwgcG9ydAoKCmRlZiBwYXJzZTIyOShyZXNwLCBwZWVyKToKICAgICcnJ1BhcnNlIHRoZSAnMjI5JyByZXNwb25zZSBmb3IgYW4gRVBTViByZXF1ZXN0LgogICAgUmFpc2VzIGVycm9yX3Byb3RvIGlmIGl0IGRvZXMgbm90IGNvbnRhaW4gJyh8fHxwb3J0fCknCiAgICBSZXR1cm4gKCdob3N0LmFkZHIuYXMubnVtYmVycycsIHBvcnQjKSB0dXBsZS4nJycKICAgIGlmIHJlc3BbOjNdICE9ICcyMjknOgogICAgICAgIHJhaXNlIGVycm9yX3JlcGx5KHJlc3ApCiAgICBsZWZ0ID0gcmVzcC5maW5kKCcoJykKICAgIGlmIGxlZnQgPCAwOiByYWlzZSBlcnJvcl9wcm90byhyZXNwKQogICAgcmlnaHQgPSByZXNwLmZpbmQoJyknLCBsZWZ0ICsgMSkKICAgIGlmIHJpZ2h0IDwgMDoKICAgICAgICByYWlzZSBlcnJvcl9wcm90byhyZXNwKSAjIHNob3VsZCBjb250YWluICcofHx8cG9ydHwpJwogICAgaWYgcmVzcFtsZWZ0ICsgMV0gIT0gcmVzcFtyaWdodCAtIDFdOgogICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKHJlc3ApCiAgICBwYXJ0cyA9IHJlc3BbbGVmdCArIDE6cmlnaHRdLnNwbGl0KHJlc3BbbGVmdCsxXSkKICAgIGlmIGxlbihwYXJ0cykgIT0gNToKICAgICAgICByYWlzZSBlcnJvcl9wcm90byhyZXNwKQogICAgaG9zdCA9IHBlZXJbMF0KICAgIHBvcnQgPSBpbnQocGFydHNbM10pCiAgICByZXR1cm4gaG9zdCwgcG9ydAoKCmRlZiBwYXJzZTI1NyhyZXNwKToKICAgICcnJ1BhcnNlIHRoZSAnMjU3JyByZXNwb25zZSBmb3IgYSBNS0Qgb3IgUFdEIHJlcXVlc3QuCiAgICBUaGlzIGlzIGEgcmVzcG9uc2UgdG8gYSBNS0Qgb3IgUFdEIHJlcXVlc3Q6IGEgZGlyZWN0b3J5IG5hbWUuCiAgICBSZXR1cm5zIHRoZSBkaXJlY3RvcnluYW1lIGluIHRoZSAyNTcgcmVwbHkuJycnCiAgICBpZiByZXNwWzozXSAhPSAnMjU3JzoKICAgICAgICByYWlzZSBlcnJvcl9yZXBseShyZXNwKQogICAgaWYgcmVzcFszOjVdICE9ICcgIic6CiAgICAgICAgcmV0dXJuICcnICMgTm90IGNvbXBsaWFudCB0byBSRkMgOTU5LCBidXQgVU5JWCBmdHBkIGRvZXMgdGhpcwogICAgZGlybmFtZSA9ICcnCiAgICBpID0gNQogICAgbiA9IGxlbihyZXNwKQogICAgd2hpbGUgaSA8IG46CiAgICAgICAgYyA9IHJlc3BbaV0KICAgICAgICBpID0gaSsxCiAgICAgICAgaWYgYyA9PSAnIic6CiAgICAgICAgICAgIGlmIGkgPj0gbiBvciByZXNwW2ldICE9ICciJzoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGkgPSBpKzEKICAgICAgICBkaXJuYW1lID0gZGlybmFtZSArIGMKICAgIHJldHVybiBkaXJuYW1lCgoKZGVmIHByaW50X2xpbmUobGluZSk6CiAgICAnJydEZWZhdWx0IHJldHJsaW5lcyBjYWxsYmFjayB0byBwcmludCBhIGxpbmUuJycnCiAgICBwcmludChsaW5lKQoKCmRlZiBmdHBjcChzb3VyY2UsIHNvdXJjZW5hbWUsIHRhcmdldCwgdGFyZ2V0bmFtZSA9ICcnLCB0eXBlID0gJ0knKToKICAgICcnJ0NvcHkgZmlsZSBmcm9tIG9uZSBGVFAtaW5zdGFuY2UgdG8gYW5vdGhlci4nJycKICAgIGlmIG5vdCB0YXJnZXRuYW1lOgogICAgICAgIHRhcmdldG5hbWUgPSBzb3VyY2VuYW1lCiAgICB0eXBlID0gJ1RZUEUgJyArIHR5cGUKICAgIHNvdXJjZS52b2lkY21kKHR5cGUpCiAgICB0YXJnZXQudm9pZGNtZCh0eXBlKQogICAgc291cmNlaG9zdCwgc291cmNlcG9ydCA9IHBhcnNlMjI3KHNvdXJjZS5zZW5kY21kKCdQQVNWJykpCiAgICB0YXJnZXQuc2VuZHBvcnQoc291cmNlaG9zdCwgc291cmNlcG9ydCkKICAgICMgUkZDIDk1OTogdGhlIHVzZXIgbXVzdCAibGlzdGVuIiBbLi4uXSBCRUZPUkUgc2VuZGluZyB0aGUKICAgICMgdHJhbnNmZXIgcmVxdWVzdC4KICAgICMgU286IFNUT1IgYmVmb3JlIFJFVFIsIGJlY2F1c2UgaGVyZSB0aGUgdGFyZ2V0IGlzIGEgInVzZXIiLgogICAgdHJlcGx5ID0gdGFyZ2V0LnNlbmRjbWQoJ1NUT1IgJyArIHRhcmdldG5hbWUpCiAgICBpZiB0cmVwbHlbOjNdIG5vdCBpbiB7JzEyNScsICcxNTAnfToKICAgICAgICByYWlzZSBlcnJvcl9wcm90byAgIyBSRkMgOTU5CiAgICBzcmVwbHkgPSBzb3VyY2Uuc2VuZGNtZCgnUkVUUiAnICsgc291cmNlbmFtZSkKICAgIGlmIHNyZXBseVs6M10gbm90IGluIHsnMTI1JywgJzE1MCd9OgogICAgICAgIHJhaXNlIGVycm9yX3Byb3RvICAjIFJGQyA5NTkKICAgIHNvdXJjZS52b2lkcmVzcCgpCiAgICB0YXJnZXQudm9pZHJlc3AoKQoKCmRlZiB0ZXN0KCk6CiAgICAnJydUZXN0IHByb2dyYW0uCiAgICBVc2FnZTogZnRwIFstZF0gWy1yW2ZpbGVdXSBob3N0IFstbFtkaXJdXSBbLWRbZGlyXV0gWy1wXSBbZmlsZV0gLi4uCgogICAgLWQgZGlyCiAgICAtbCBsaXN0CiAgICAtcCBwYXNzd29yZAogICAgJycnCgogICAgaWYgbGVuKHN5cy5hcmd2KSA8IDI6CiAgICAgICAgcHJpbnQodGVzdC5fX2RvY19fKQogICAgICAgIHN5cy5leGl0KDApCgogICAgaW1wb3J0IG5ldHJjCgogICAgZGVidWdnaW5nID0gMAogICAgcmNmaWxlID0gTm9uZQogICAgd2hpbGUgc3lzLmFyZ3ZbMV0gPT0gJy1kJzoKICAgICAgICBkZWJ1Z2dpbmcgPSBkZWJ1Z2dpbmcrMQogICAgICAgIGRlbCBzeXMuYXJndlsxXQogICAgaWYgc3lzLmFyZ3ZbMV1bOjJdID09ICctcic6CiAgICAgICAgIyBnZXQgbmFtZSBvZiBhbHRlcm5hdGUgfi8ubmV0cmMgZmlsZToKICAgICAgICByY2ZpbGUgPSBzeXMuYXJndlsxXVsyOl0KICAgICAgICBkZWwgc3lzLmFyZ3ZbMV0KICAgIGhvc3QgPSBzeXMuYXJndlsxXQogICAgZnRwID0gRlRQKGhvc3QpCiAgICBmdHAuc2V0X2RlYnVnbGV2ZWwoZGVidWdnaW5nKQogICAgdXNlcmlkID0gcGFzc3dkID0gYWNjdCA9ICcnCiAgICB0cnk6CiAgICAgICAgbmV0cmNvYmogPSBuZXRyYy5uZXRyYyhyY2ZpbGUpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBpZiByY2ZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkNvdWxkIG5vdCBvcGVuIGFjY291bnQgZmlsZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0tIHVzaW5nIGFub255bW91cyBsb2dpbi4iKQogICAgZWxzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHVzZXJpZCwgYWNjdCwgcGFzc3dkID0gbmV0cmNvYmouYXV0aGVudGljYXRvcnMoaG9zdCkKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICMgbm8gYWNjb3VudCBmb3IgaG9zdAogICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAogICAgICAgICAgICAgICAgICAgICJObyBhY2NvdW50IC0tIHVzaW5nIGFub255bW91cyBsb2dpbi4iKQogICAgZnRwLmxvZ2luKHVzZXJpZCwgcGFzc3dkLCBhY2N0KQogICAgZm9yIGZpbGUgaW4gc3lzLmFyZ3ZbMjpdOgogICAgICAgIGlmIGZpbGVbOjJdID09ICctbCc6CiAgICAgICAgICAgIGZ0cC5kaXIoZmlsZVsyOl0pCiAgICAgICAgZWxpZiBmaWxlWzoyXSA9PSAnLWQnOgogICAgICAgICAgICBjbWQgPSAnQ1dEJwogICAgICAgICAgICBpZiBmaWxlWzI6XTogY21kID0gY21kICsgJyAnICsgZmlsZVsyOl0KICAgICAgICAgICAgcmVzcCA9IGZ0cC5zZW5kY21kKGNtZCkKICAgICAgICBlbGlmIGZpbGUgPT0gJy1wJzoKICAgICAgICAgICAgZnRwLnNldF9wYXN2KG5vdCBmdHAucGFzc2l2ZXNlcnZlcikKICAgICAgICBlbHNlOgogICAgICAgICAgICBmdHAucmV0cmJpbmFyeSgnUkVUUiAnICsgZmlsZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlLCAxMDI0KQogICAgZnRwLnF1aXQoKQoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB0ZXN0KCkKUEsDBBQAAAAAAAIgo1ZRcMelDZYAAA2WAAAMAAAAZnVuY3Rvb2xzLnB5IiIiZnVuY3Rvb2xzLnB5IC0gVG9vbHMgZm9yIHdvcmtpbmcgd2l0aCBmdW5jdGlvbnMgYW5kIGNhbGxhYmxlIG9iamVjdHMKIiIiCiMgUHl0aG9uIG1vZHVsZSB3cmFwcGVyIGZvciBfZnVuY3Rvb2xzIEMgbW9kdWxlCiMgdG8gYWxsb3cgdXRpbGl0aWVzIHdyaXR0ZW4gaW4gUHl0aG9uIHRvIGJlIGFkZGVkCiMgdG8gdGhlIGZ1bmN0b29scyBtb2R1bGUuCiMgV3JpdHRlbiBieSBOaWNrIENvZ2hsYW4gPG5jb2dobGFuIGF0IGdtYWlsLmNvbT4sCiMgUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPiwKIyBhbmQgxYF1a2FzeiBMYW5nYSA8bHVrYXN6IGF0IGxhbmdhLnBsPi4KIyAgIENvcHlyaWdodCAoQykgMjAwNi0yMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgojIFNlZSBDIHNvdXJjZSBjb2RlIGZvciBfZnVuY3Rvb2xzIGNyZWRpdHMvY29weXJpZ2h0CgpfX2FsbF9fID0gWyd1cGRhdGVfd3JhcHBlcicsICd3cmFwcycsICdXUkFQUEVSX0FTU0lHTk1FTlRTJywgJ1dSQVBQRVJfVVBEQVRFUycsCiAgICAgICAgICAgJ3RvdGFsX29yZGVyaW5nJywgJ2NhY2hlJywgJ2NtcF90b19rZXknLCAnbHJ1X2NhY2hlJywgJ3JlZHVjZScsCiAgICAgICAgICAgJ3BhcnRpYWwnLCAncGFydGlhbG1ldGhvZCcsICdzaW5nbGVkaXNwYXRjaCcsICdzaW5nbGVkaXNwYXRjaG1ldGhvZCcsCiAgICAgICAgICAgJ2NhY2hlZF9wcm9wZXJ0eSddCgpmcm9tIGFiYyBpbXBvcnQgZ2V0X2NhY2hlX3Rva2VuCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIyBpbXBvcnQgdHlwZXMsIHdlYWtyZWYgICMgRGVmZXJyZWQgdG8gc2luZ2xlX2Rpc3BhdGNoKCkKZnJvbSByZXBybGliIGltcG9ydCByZWN1cnNpdmVfcmVwcgpmcm9tIF90aHJlYWQgaW1wb3J0IFJMb2NrCmZyb20gdHlwZXMgaW1wb3J0IEdlbmVyaWNBbGlhcwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyB1cGRhdGVfd3JhcHBlcigpIGFuZCB3cmFwcygpIGRlY29yYXRvcgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyB1cGRhdGVfd3JhcHBlcigpIGFuZCB3cmFwcygpIGFyZSB0b29scyB0byBoZWxwIHdyaXRlCiMgd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjYW4gaGFuZGxlIG5haXZlIGludHJvc3BlY3Rpb24KCldSQVBQRVJfQVNTSUdOTUVOVFMgPSAoJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ19fZG9jX18nLAogICAgICAgICAgICAgICAgICAgICAgICdfX2Fubm90YXRpb25zX18nKQpXUkFQUEVSX1VQREFURVMgPSAoJ19fZGljdF9fJywpCmRlZiB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgd3JhcHBlZCwKICAgICAgICAgICAgICAgICAgIGFzc2lnbmVkID0gV1JBUFBFUl9BU1NJR05NRU5UUywKICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgPSBXUkFQUEVSX1VQREFURVMpOgogICAgIiIiVXBkYXRlIGEgd3JhcHBlciBmdW5jdGlvbiB0byBsb29rIGxpa2UgdGhlIHdyYXBwZWQgZnVuY3Rpb24KCiAgICAgICB3cmFwcGVyIGlzIHRoZSBmdW5jdGlvbiB0byBiZSB1cGRhdGVkCiAgICAgICB3cmFwcGVkIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbgogICAgICAgYXNzaWduZWQgaXMgYSB0dXBsZSBuYW1pbmcgdGhlIGF0dHJpYnV0ZXMgYXNzaWduZWQgZGlyZWN0bHkKICAgICAgIGZyb20gdGhlIHdyYXBwZWQgZnVuY3Rpb24gdG8gdGhlIHdyYXBwZXIgZnVuY3Rpb24gKGRlZmF1bHRzIHRvCiAgICAgICBmdW5jdG9vbHMuV1JBUFBFUl9BU1NJR05NRU5UUykKICAgICAgIHVwZGF0ZWQgaXMgYSB0dXBsZSBuYW1pbmcgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHdyYXBwZXIgdGhhdAogICAgICAgYXJlIHVwZGF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZnJvbSB0aGUgd3JhcHBlZAogICAgICAgZnVuY3Rpb24gKGRlZmF1bHRzIHRvIGZ1bmN0b29scy5XUkFQUEVSX1VQREFURVMpCiAgICAiIiIKICAgIGZvciBhdHRyIGluIGFzc2lnbmVkOgogICAgICAgIHRyeToKICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKHdyYXBwZWQsIGF0dHIpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2V0YXR0cih3cmFwcGVyLCBhdHRyLCB2YWx1ZSkKICAgIGZvciBhdHRyIGluIHVwZGF0ZWQ6CiAgICAgICAgZ2V0YXR0cih3cmFwcGVyLCBhdHRyKS51cGRhdGUoZ2V0YXR0cih3cmFwcGVkLCBhdHRyLCB7fSkpCiAgICAjIElzc3VlICMxNzQ4Mjogc2V0IF9fd3JhcHBlZF9fIGxhc3Qgc28gd2UgZG9uJ3QgaW5hZHZlcnRlbnRseSBjb3B5IGl0CiAgICAjIGZyb20gdGhlIHdyYXBwZWQgZnVuY3Rpb24gd2hlbiB1cGRhdGluZyBfX2RpY3RfXwogICAgd3JhcHBlci5fX3dyYXBwZWRfXyA9IHdyYXBwZWQKICAgICMgUmV0dXJuIHRoZSB3cmFwcGVyIHNvIHRoaXMgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IgdmlhIHBhcnRpYWwoKQogICAgcmV0dXJuIHdyYXBwZXIKCmRlZiB3cmFwcyh3cmFwcGVkLAogICAgICAgICAgYXNzaWduZWQgPSBXUkFQUEVSX0FTU0lHTk1FTlRTLAogICAgICAgICAgdXBkYXRlZCA9IFdSQVBQRVJfVVBEQVRFUyk6CiAgICAiIiJEZWNvcmF0b3IgZmFjdG9yeSB0byBhcHBseSB1cGRhdGVfd3JhcHBlcigpIHRvIGEgd3JhcHBlciBmdW5jdGlvbgoKICAgICAgIFJldHVybnMgYSBkZWNvcmF0b3IgdGhhdCBpbnZva2VzIHVwZGF0ZV93cmFwcGVyKCkgd2l0aCB0aGUgZGVjb3JhdGVkCiAgICAgICBmdW5jdGlvbiBhcyB0aGUgd3JhcHBlciBhcmd1bWVudCBhbmQgdGhlIGFyZ3VtZW50cyB0byB3cmFwcygpIGFzIHRoZQogICAgICAgcmVtYWluaW5nIGFyZ3VtZW50cy4gRGVmYXVsdCBhcmd1bWVudHMgYXJlIGFzIGZvciB1cGRhdGVfd3JhcHBlcigpLgogICAgICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHNpbXBsaWZ5IGFwcGx5aW5nIHBhcnRpYWwoKSB0bwogICAgICAgdXBkYXRlX3dyYXBwZXIoKS4KICAgICIiIgogICAgcmV0dXJuIHBhcnRpYWwodXBkYXRlX3dyYXBwZXIsIHdyYXBwZWQ9d3JhcHBlZCwKICAgICAgICAgICAgICAgICAgIGFzc2lnbmVkPWFzc2lnbmVkLCB1cGRhdGVkPXVwZGF0ZWQpCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIHRvdGFsX29yZGVyaW5nIGNsYXNzIGRlY29yYXRvcgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBUaGUgdG90YWwgb3JkZXJpbmcgZnVuY3Rpb25zIGFsbCBpbnZva2UgdGhlIHJvb3QgbWFnaWMgbWV0aG9kIGRpcmVjdGx5CiMgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0b3IuICBUaGlzIGF2b2lkcyBwb3NzaWJsZQojIGluZmluaXRlIHJlY3Vyc2lvbiB0aGF0IGNvdWxkIG9jY3VyIHdoZW4gdGhlIG9wZXJhdG9yIGRpc3BhdGNoIGxvZ2ljCiMgZGV0ZWN0cyBhIE5vdEltcGxlbWVudGVkIHJlc3VsdCBhbmQgdGhlbiBjYWxscyBhIHJlZmxlY3RlZCBtZXRob2QuCgpkZWYgX2d0X2Zyb21fbHQoc2VsZiwgb3RoZXIpOgogICAgJ1JldHVybiBhID4gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA8IGIpIGFuZCAoYSAhPSBiKS4nCiAgICBvcF9yZXN1bHQgPSB0eXBlKHNlbGYpLl9fbHRfXyhzZWxmLCBvdGhlcikKICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICByZXR1cm4gbm90IG9wX3Jlc3VsdCBhbmQgc2VsZiAhPSBvdGhlcgoKZGVmIF9sZV9mcm9tX2x0KHNlbGYsIG90aGVyKToKICAgICdSZXR1cm4gYSA8PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKGEgPCBiKSBvciAoYSA9PSBiKS4nCiAgICBvcF9yZXN1bHQgPSB0eXBlKHNlbGYpLl9fbHRfXyhzZWxmLCBvdGhlcikKICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICByZXR1cm4gb3BfcmVzdWx0IG9yIHNlbGYgPT0gb3RoZXIKCmRlZiBfZ2VfZnJvbV9sdChzZWxmLCBvdGhlcik6CiAgICAnUmV0dXJuIGEgPj0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA8IGIpLicKICAgIG9wX3Jlc3VsdCA9IHR5cGUoc2VsZikuX19sdF9fKHNlbGYsIG90aGVyKQogICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgogICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgIHJldHVybiBub3Qgb3BfcmVzdWx0CgpkZWYgX2dlX2Zyb21fbGUoc2VsZiwgb3RoZXIpOgogICAgJ1JldHVybiBhID49IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPD0gYikgb3IgKGEgPT0gYikuJwogICAgb3BfcmVzdWx0ID0gdHlwZShzZWxmKS5fX2xlX18oc2VsZiwgb3RoZXIpCiAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6CiAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQgb3Igc2VsZiA9PSBvdGhlcgoKZGVmIF9sdF9mcm9tX2xlKHNlbGYsIG90aGVyKToKICAgICdSZXR1cm4gYSA8IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAoYSA8PSBiKSBhbmQgKGEgIT0gYikuJwogICAgb3BfcmVzdWx0ID0gdHlwZShzZWxmKS5fX2xlX18oc2VsZiwgb3RoZXIpCiAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6CiAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgcmV0dXJuIG9wX3Jlc3VsdCBhbmQgc2VsZiAhPSBvdGhlcgoKZGVmIF9ndF9mcm9tX2xlKHNlbGYsIG90aGVyKToKICAgICdSZXR1cm4gYSA+IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPD0gYikuJwogICAgb3BfcmVzdWx0ID0gdHlwZShzZWxmKS5fX2xlX18oc2VsZiwgb3RoZXIpCiAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6CiAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQKCmRlZiBfbHRfZnJvbV9ndChzZWxmLCBvdGhlcik6CiAgICAnUmV0dXJuIGEgPCBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhID4gYikgYW5kIChhICE9IGIpLicKICAgIG9wX3Jlc3VsdCA9IHR5cGUoc2VsZikuX19ndF9fKHNlbGYsIG90aGVyKQogICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgogICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgIHJldHVybiBub3Qgb3BfcmVzdWx0IGFuZCBzZWxmICE9IG90aGVyCgpkZWYgX2dlX2Zyb21fZ3Qoc2VsZiwgb3RoZXIpOgogICAgJ1JldHVybiBhID49IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAoYSA+IGIpIG9yIChhID09IGIpLicKICAgIG9wX3Jlc3VsdCA9IHR5cGUoc2VsZikuX19ndF9fKHNlbGYsIG90aGVyKQogICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgogICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgIHJldHVybiBvcF9yZXN1bHQgb3Igc2VsZiA9PSBvdGhlcgoKZGVmIF9sZV9mcm9tX2d0KHNlbGYsIG90aGVyKToKICAgICdSZXR1cm4gYSA8PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhID4gYikuJwogICAgb3BfcmVzdWx0ID0gdHlwZShzZWxmKS5fX2d0X18oc2VsZiwgb3RoZXIpCiAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6CiAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQKCmRlZiBfbGVfZnJvbV9nZShzZWxmLCBvdGhlcik6CiAgICAnUmV0dXJuIGEgPD0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA+PSBiKSBvciAoYSA9PSBiKS4nCiAgICBvcF9yZXN1bHQgPSB0eXBlKHNlbGYpLl9fZ2VfXyhzZWxmLCBvdGhlcikKICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICByZXR1cm4gbm90IG9wX3Jlc3VsdCBvciBzZWxmID09IG90aGVyCgpkZWYgX2d0X2Zyb21fZ2Uoc2VsZiwgb3RoZXIpOgogICAgJ1JldHVybiBhID4gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChhID49IGIpIGFuZCAoYSAhPSBiKS4nCiAgICBvcF9yZXN1bHQgPSB0eXBlKHNlbGYpLl9fZ2VfXyhzZWxmLCBvdGhlcikKICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICByZXR1cm4gb3BfcmVzdWx0IGFuZCBzZWxmICE9IG90aGVyCgpkZWYgX2x0X2Zyb21fZ2Uoc2VsZiwgb3RoZXIpOgogICAgJ1JldHVybiBhIDwgYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA+PSBiKS4nCiAgICBvcF9yZXN1bHQgPSB0eXBlKHNlbGYpLl9fZ2VfXyhzZWxmLCBvdGhlcikKICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICByZXR1cm4gbm90IG9wX3Jlc3VsdAoKX2NvbnZlcnQgPSB7CiAgICAnX19sdF9fJzogWygnX19ndF9fJywgX2d0X2Zyb21fbHQpLAogICAgICAgICAgICAgICAoJ19fbGVfXycsIF9sZV9mcm9tX2x0KSwKICAgICAgICAgICAgICAgKCdfX2dlX18nLCBfZ2VfZnJvbV9sdCldLAogICAgJ19fbGVfXyc6IFsoJ19fZ2VfXycsIF9nZV9mcm9tX2xlKSwKICAgICAgICAgICAgICAgKCdfX2x0X18nLCBfbHRfZnJvbV9sZSksCiAgICAgICAgICAgICAgICgnX19ndF9fJywgX2d0X2Zyb21fbGUpXSwKICAgICdfX2d0X18nOiBbKCdfX2x0X18nLCBfbHRfZnJvbV9ndCksCiAgICAgICAgICAgICAgICgnX19nZV9fJywgX2dlX2Zyb21fZ3QpLAogICAgICAgICAgICAgICAoJ19fbGVfXycsIF9sZV9mcm9tX2d0KV0sCiAgICAnX19nZV9fJzogWygnX19sZV9fJywgX2xlX2Zyb21fZ2UpLAogICAgICAgICAgICAgICAoJ19fZ3RfXycsIF9ndF9mcm9tX2dlKSwKICAgICAgICAgICAgICAgKCdfX2x0X18nLCBfbHRfZnJvbV9nZSldCn0KCmRlZiB0b3RhbF9vcmRlcmluZyhjbHMpOgogICAgIiIiQ2xhc3MgZGVjb3JhdG9yIHRoYXQgZmlsbHMgaW4gbWlzc2luZyBvcmRlcmluZyBtZXRob2RzIiIiCiAgICAjIEZpbmQgdXNlci1kZWZpbmVkIGNvbXBhcmlzb25zIChub3QgdGhvc2UgaW5oZXJpdGVkIGZyb20gb2JqZWN0KS4KICAgIHJvb3RzID0ge29wIGZvciBvcCBpbiBfY29udmVydCBpZiBnZXRhdHRyKGNscywgb3AsIE5vbmUpIGlzIG5vdCBnZXRhdHRyKG9iamVjdCwgb3AsIE5vbmUpfQogICAgaWYgbm90IHJvb3RzOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ211c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSBvcmRlcmluZyBvcGVyYXRpb246IDwgPiA8PSA+PScpCiAgICByb290ID0gbWF4KHJvb3RzKSAgICAgICAjIHByZWZlciBfX2x0X18gdG8gX19sZV9fIHRvIF9fZ3RfXyB0byBfX2dlX18KICAgIGZvciBvcG5hbWUsIG9wZnVuYyBpbiBfY29udmVydFtyb290XToKICAgICAgICBpZiBvcG5hbWUgbm90IGluIHJvb3RzOgogICAgICAgICAgICBvcGZ1bmMuX19uYW1lX18gPSBvcG5hbWUKICAgICAgICAgICAgc2V0YXR0cihjbHMsIG9wbmFtZSwgb3BmdW5jKQogICAgcmV0dXJuIGNscwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBjbXBfdG9fa2V5KCkgZnVuY3Rpb24gY29udmVydGVyCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpkZWYgY21wX3RvX2tleShteWNtcCk6CiAgICAiIiJDb252ZXJ0IGEgY21wPSBmdW5jdGlvbiBpbnRvIGEga2V5PSBmdW5jdGlvbiIiIgogICAgY2xhc3MgSyhvYmplY3QpOgogICAgICAgIF9fc2xvdHNfXyA9IFsnb2JqJ10KICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgb2JqKToKICAgICAgICAgICAgc2VsZi5vYmogPSBvYmoKICAgICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIG15Y21wKHNlbGYub2JqLCBvdGhlci5vYmopIDwgMAogICAgICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICByZXR1cm4gbXljbXAoc2VsZi5vYmosIG90aGVyLm9iaikgPiAwCiAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgIHJldHVybiBteWNtcChzZWxmLm9iaiwgb3RoZXIub2JqKSA9PSAwCiAgICAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgIHJldHVybiBteWNtcChzZWxmLm9iaiwgb3RoZXIub2JqKSA8PSAwCiAgICAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgIHJldHVybiBteWNtcChzZWxmLm9iaiwgb3RoZXIub2JqKSA+PSAwCiAgICAgICAgX19oYXNoX18gPSBOb25lCiAgICByZXR1cm4gSwoKdHJ5OgogICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBjbXBfdG9fa2V5CmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgcmVkdWNlKCkgc2VxdWVuY2UgdG8gYSBzaW5nbGUgaXRlbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKX2luaXRpYWxfbWlzc2luZyA9IG9iamVjdCgpCgpkZWYgcmVkdWNlKGZ1bmN0aW9uLCBzZXF1ZW5jZSwgaW5pdGlhbD1faW5pdGlhbF9taXNzaW5nKToKICAgICIiIgogICAgcmVkdWNlKGZ1bmN0aW9uLCBpdGVyYWJsZVssIGluaXRpYWxdKSAtPiB2YWx1ZQoKICAgIEFwcGx5IGEgZnVuY3Rpb24gb2YgdHdvIGFyZ3VtZW50cyBjdW11bGF0aXZlbHkgdG8gdGhlIGl0ZW1zIG9mIGEgc2VxdWVuY2UKICAgIG9yIGl0ZXJhYmxlLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHNvIGFzIHRvIHJlZHVjZSB0aGUgaXRlcmFibGUgdG8gYSBzaW5nbGUKICAgIHZhbHVlLiAgRm9yIGV4YW1wbGUsIHJlZHVjZShsYW1iZGEgeCwgeTogeCt5LCBbMSwgMiwgMywgNCwgNV0pIGNhbGN1bGF0ZXMKICAgICgoKCgxKzIpKzMpKzQpKzUpLiAgSWYgaW5pdGlhbCBpcyBwcmVzZW50LCBpdCBpcyBwbGFjZWQgYmVmb3JlIHRoZSBpdGVtcwogICAgb2YgdGhlIGl0ZXJhYmxlIGluIHRoZSBjYWxjdWxhdGlvbiwgYW5kIHNlcnZlcyBhcyBhIGRlZmF1bHQgd2hlbiB0aGUKICAgIGl0ZXJhYmxlIGlzIGVtcHR5LgogICAgIiIiCgogICAgaXQgPSBpdGVyKHNlcXVlbmNlKQoKICAgIGlmIGluaXRpYWwgaXMgX2luaXRpYWxfbWlzc2luZzoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlID0gbmV4dChpdCkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgInJlZHVjZSgpIG9mIGVtcHR5IGl0ZXJhYmxlIHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpIGZyb20gTm9uZQogICAgZWxzZToKICAgICAgICB2YWx1ZSA9IGluaXRpYWwKCiAgICBmb3IgZWxlbWVudCBpbiBpdDoKICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKHZhbHVlLCBlbGVtZW50KQoKICAgIHJldHVybiB2YWx1ZQoKdHJ5OgogICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2UKZXhjZXB0IEltcG9ydEVycm9yOgogICAgcGFzcwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBwYXJ0aWFsKCkgYXJndW1lbnQgYXBwbGljYXRpb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHVyZWx5IGZ1bmN0aW9uYWwsIG5vIGRlc2NyaXB0b3IgYmVoYXZpb3VyCmNsYXNzIHBhcnRpYWw6CiAgICAiIiJOZXcgZnVuY3Rpb24gd2l0aCBwYXJ0aWFsIGFwcGxpY2F0aW9uIG9mIHRoZSBnaXZlbiBhcmd1bWVudHMKICAgIGFuZCBrZXl3b3Jkcy4KICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICJmdW5jIiwgImFyZ3MiLCAia2V5d29yZHMiLCAiX19kaWN0X18iLCAiX193ZWFrcmVmX18iCgogICAgZGVmIF9fbmV3X18oY2xzLCBmdW5jLCAvLCAqYXJncywgKiprZXl3b3Jkcyk6CiAgICAgICAgaWYgbm90IGNhbGxhYmxlKGZ1bmMpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIikKCiAgICAgICAgaWYgaGFzYXR0cihmdW5jLCAiZnVuYyIpOgogICAgICAgICAgICBhcmdzID0gZnVuYy5hcmdzICsgYXJncwogICAgICAgICAgICBrZXl3b3JkcyA9IHsqKmZ1bmMua2V5d29yZHMsICoqa2V5d29yZHN9CiAgICAgICAgICAgIGZ1bmMgPSBmdW5jLmZ1bmMKCiAgICAgICAgc2VsZiA9IHN1cGVyKHBhcnRpYWwsIGNscykuX19uZXdfXyhjbHMpCgogICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGtleXdvcmRzCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgLywgKmFyZ3MsICoqa2V5d29yZHMpOgogICAgICAgIGtleXdvcmRzID0geyoqc2VsZi5rZXl3b3JkcywgKiprZXl3b3Jkc30KICAgICAgICByZXR1cm4gc2VsZi5mdW5jKCpzZWxmLmFyZ3MsICphcmdzLCAqKmtleXdvcmRzKQoKICAgIEByZWN1cnNpdmVfcmVwcigpCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcXVhbG5hbWUgPSB0eXBlKHNlbGYpLl9fcXVhbG5hbWVfXwogICAgICAgIGFyZ3MgPSBbcmVwcihzZWxmLmZ1bmMpXQogICAgICAgIGFyZ3MuZXh0ZW5kKHJlcHIoeCkgZm9yIHggaW4gc2VsZi5hcmdzKQogICAgICAgIGFyZ3MuZXh0ZW5kKGYie2t9PXt2IXJ9IiBmb3IgKGssIHYpIGluIHNlbGYua2V5d29yZHMuaXRlbXMoKSkKICAgICAgICBpZiB0eXBlKHNlbGYpLl9fbW9kdWxlX18gPT0gImZ1bmN0b29scyI6CiAgICAgICAgICAgIHJldHVybiBmImZ1bmN0b29scy57cXVhbG5hbWV9KHsnLCAnLmpvaW4oYXJncyl9KSIKICAgICAgICByZXR1cm4gZiJ7cXVhbG5hbWV9KHsnLCAnLmpvaW4oYXJncyl9KSIKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gdHlwZShzZWxmKSwgKHNlbGYuZnVuYywpLCAoc2VsZi5mdW5jLCBzZWxmLmFyZ3MsCiAgICAgICAgICAgICAgIHNlbGYua2V5d29yZHMgb3IgTm9uZSwgc2VsZi5fX2RpY3RfXyBvciBOb25lKQoKICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN0YXRlLCB0dXBsZSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgdG8gX19zZXRzdGF0ZV9fIG11c3QgYmUgYSB0dXBsZSIpCiAgICAgICAgaWYgbGVuKHN0YXRlKSAhPSA0OgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJleHBlY3RlZCA0IGl0ZW1zIGluIHN0YXRlLCBnb3Qge2xlbihzdGF0ZSl9IikKICAgICAgICBmdW5jLCBhcmdzLCBrd2RzLCBuYW1lc3BhY2UgPSBzdGF0ZQogICAgICAgIGlmIChub3QgY2FsbGFibGUoZnVuYykgb3Igbm90IGlzaW5zdGFuY2UoYXJncywgdHVwbGUpIG9yCiAgICAgICAgICAgKGt3ZHMgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGt3ZHMsIGRpY3QpKSBvcgogICAgICAgICAgIChuYW1lc3BhY2UgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG5hbWVzcGFjZSwgZGljdCkpKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIHBhcnRpYWwgc3RhdGUiKQoKICAgICAgICBhcmdzID0gdHVwbGUoYXJncykgIyBqdXN0IGluIGNhc2UgaXQncyBhIHN1YmNsYXNzCiAgICAgICAgaWYga3dkcyBpcyBOb25lOgogICAgICAgICAgICBrd2RzID0ge30KICAgICAgICBlbGlmIHR5cGUoa3dkcykgaXMgbm90IGRpY3Q6ICMgWFhYIGRvZXMgaXQgbmVlZCB0byBiZSAqZXhhY3RseSogZGljdD8KICAgICAgICAgICAga3dkcyA9IGRpY3Qoa3dkcykKICAgICAgICBpZiBuYW1lc3BhY2UgaXMgTm9uZToKICAgICAgICAgICAgbmFtZXNwYWNlID0ge30KCiAgICAgICAgc2VsZi5fX2RpY3RfXyA9IG5hbWVzcGFjZQogICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGt3ZHMKCnRyeToKICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgcGFydGlhbApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBwYXNzCgojIERlc2NyaXB0b3IgdmVyc2lvbgpjbGFzcyBwYXJ0aWFsbWV0aG9kKG9iamVjdCk6CiAgICAiIiJNZXRob2QgZGVzY3JpcHRvciB3aXRoIHBhcnRpYWwgYXBwbGljYXRpb24gb2YgdGhlIGdpdmVuIGFyZ3VtZW50cwogICAgYW5kIGtleXdvcmRzLgoKICAgIFN1cHBvcnRzIHdyYXBwaW5nIGV4aXN0aW5nIGRlc2NyaXB0b3JzIGFuZCBoYW5kbGVzIG5vbi1kZXNjcmlwdG9yCiAgICBjYWxsYWJsZXMgYXMgaW5zdGFuY2UgbWV0aG9kcy4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jLCAvLCAqYXJncywgKiprZXl3b3Jkcyk6CiAgICAgICAgaWYgbm90IGNhbGxhYmxlKGZ1bmMpIGFuZCBub3QgaGFzYXR0cihmdW5jLCAiX19nZXRfXyIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInshcn0gaXMgbm90IGNhbGxhYmxlIG9yIGEgZGVzY3JpcHRvciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChmdW5jKSkKCiAgICAgICAgIyBmdW5jIGNvdWxkIGJlIGEgZGVzY3JpcHRvciBsaWtlIGNsYXNzbWV0aG9kIHdoaWNoIGlzbid0IGNhbGxhYmxlLAogICAgICAgICMgc28gd2UgY2FuJ3QgaW5oZXJpdCBmcm9tIHBhcnRpYWwgKGl0IHZlcmlmaWVzIGZ1bmMgaXMgY2FsbGFibGUpCiAgICAgICAgaWYgaXNpbnN0YW5jZShmdW5jLCBwYXJ0aWFsbWV0aG9kKToKICAgICAgICAgICAgIyBmbGF0dGVuaW5nIGlzIG1hbmRhdG9yeSBpbiBvcmRlciB0byBwbGFjZSBjbHMvc2VsZiBiZWZvcmUgYWxsCiAgICAgICAgICAgICMgb3RoZXIgYXJndW1lbnRzCiAgICAgICAgICAgICMgaXQncyBhbHNvIG1vcmUgZWZmaWNpZW50IHNpbmNlIG9ubHkgb25lIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCiAgICAgICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMuZnVuYwogICAgICAgICAgICBzZWxmLmFyZ3MgPSBmdW5jLmFyZ3MgKyBhcmdzCiAgICAgICAgICAgIHNlbGYua2V5d29yZHMgPSB7KipmdW5jLmtleXdvcmRzLCAqKmtleXdvcmRzfQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKICAgICAgICAgICAgc2VsZi5hcmdzID0gYXJncwogICAgICAgICAgICBzZWxmLmtleXdvcmRzID0ga2V5d29yZHMKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgYXJncyA9ICIsICIuam9pbihtYXAocmVwciwgc2VsZi5hcmdzKSkKICAgICAgICBrZXl3b3JkcyA9ICIsICIuam9pbigie309eyFyfSIuZm9ybWF0KGssIHYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYua2V5d29yZHMuaXRlbXMoKSkKICAgICAgICBmb3JtYXRfc3RyaW5nID0gInttb2R1bGV9LntjbHN9KHtmdW5jfSwge2FyZ3N9LCB7a2V5d29yZHN9KSIKICAgICAgICByZXR1cm4gZm9ybWF0X3N0cmluZy5mb3JtYXQobW9kdWxlPXNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1zZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmM9c2VsZi5mdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPWFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzPWtleXdvcmRzKQoKICAgIGRlZiBfbWFrZV91bmJvdW5kX21ldGhvZChzZWxmKToKICAgICAgICBkZWYgX21ldGhvZChjbHNfb3Jfc2VsZiwgLywgKmFyZ3MsICoqa2V5d29yZHMpOgogICAgICAgICAgICBrZXl3b3JkcyA9IHsqKnNlbGYua2V5d29yZHMsICoqa2V5d29yZHN9CiAgICAgICAgICAgIHJldHVybiBzZWxmLmZ1bmMoY2xzX29yX3NlbGYsICpzZWxmLmFyZ3MsICphcmdzLCAqKmtleXdvcmRzKQogICAgICAgIF9tZXRob2QuX19pc2Fic3RyYWN0bWV0aG9kX18gPSBzZWxmLl9faXNhYnN0cmFjdG1ldGhvZF9fCiAgICAgICAgX21ldGhvZC5fcGFydGlhbG1ldGhvZCA9IHNlbGYKICAgICAgICByZXR1cm4gX21ldGhvZAoKICAgIGRlZiBfX2dldF9fKHNlbGYsIG9iaiwgY2xzPU5vbmUpOgogICAgICAgIGdldCA9IGdldGF0dHIoc2VsZi5mdW5jLCAiX19nZXRfXyIsIE5vbmUpCiAgICAgICAgcmVzdWx0ID0gTm9uZQogICAgICAgIGlmIGdldCBpcyBub3QgTm9uZToKICAgICAgICAgICAgbmV3X2Z1bmMgPSBnZXQob2JqLCBjbHMpCiAgICAgICAgICAgIGlmIG5ld19mdW5jIGlzIG5vdCBzZWxmLmZ1bmM6CiAgICAgICAgICAgICAgICAjIEFzc3VtZSBfX2dldF9fIHJldHVybmluZyBzb21ldGhpbmcgbmV3IGluZGljYXRlcyB0aGUKICAgICAgICAgICAgICAgICMgY3JlYXRpb24gb2YgYW4gYXBwcm9wcmlhdGUgY2FsbGFibGUKICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnRpYWwobmV3X2Z1bmMsICpzZWxmLmFyZ3MsICoqc2VsZi5rZXl3b3JkcykKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICByZXN1bHQuX19zZWxmX18gPSBuZXdfZnVuYy5fX3NlbGZfXwogICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBpZiByZXN1bHQgaXMgTm9uZToKICAgICAgICAgICAgIyBJZiB0aGUgdW5kZXJseWluZyBkZXNjcmlwdG9yIGRpZG4ndCBkbyBhbnl0aGluZywgdHJlYXQgdGhpcwogICAgICAgICAgICAjIGxpa2UgYW4gaW5zdGFuY2UgbWV0aG9kCiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX21ha2VfdW5ib3VuZF9tZXRob2QoKS5fX2dldF9fKG9iaiwgY2xzKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfX2lzYWJzdHJhY3RtZXRob2RfXyhzZWxmKToKICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLmZ1bmMsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKQoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKCiMgSGVscGVyIGZ1bmN0aW9ucwoKZGVmIF91bndyYXBfcGFydGlhbChmdW5jKToKICAgIHdoaWxlIGlzaW5zdGFuY2UoZnVuYywgcGFydGlhbCk6CiAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYwogICAgcmV0dXJuIGZ1bmMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBMUlUgQ2FjaGUgZnVuY3Rpb24gZGVjb3JhdG9yCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpfQ2FjaGVJbmZvID0gbmFtZWR0dXBsZSgiQ2FjaGVJbmZvIiwgWyJoaXRzIiwgIm1pc3NlcyIsICJtYXhzaXplIiwgImN1cnJzaXplIl0pCgpjbGFzcyBfSGFzaGVkU2VxKGxpc3QpOgogICAgIiIiIFRoaXMgY2xhc3MgZ3VhcmFudGVlcyB0aGF0IGhhc2goKSB3aWxsIGJlIGNhbGxlZCBubyBtb3JlIHRoYW4gb25jZQogICAgICAgIHBlciBlbGVtZW50LiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgbHJ1X2NhY2hlKCkgd2lsbCBoYXNoCiAgICAgICAgdGhlIGtleSBtdWx0aXBsZSB0aW1lcyBvbiBhIGNhY2hlIG1pc3MuCgogICAgIiIiCgogICAgX19zbG90c19fID0gJ2hhc2h2YWx1ZScKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdHVwLCBoYXNoPWhhc2gpOgogICAgICAgIHNlbGZbOl0gPSB0dXAKICAgICAgICBzZWxmLmhhc2h2YWx1ZSA9IGhhc2godHVwKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5oYXNodmFsdWUKCmRlZiBfbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQsCiAgICAgICAgICAgICBrd2RfbWFyayA9IChvYmplY3QoKSwpLAogICAgICAgICAgICAgZmFzdHR5cGVzID0ge2ludCwgc3RyfSwKICAgICAgICAgICAgIHR1cGxlPXR1cGxlLCB0eXBlPXR5cGUsIGxlbj1sZW4pOgogICAgIiIiTWFrZSBhIGNhY2hlIGtleSBmcm9tIG9wdGlvbmFsbHkgdHlwZWQgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMKCiAgICBUaGUga2V5IGlzIGNvbnN0cnVjdGVkIGluIGEgd2F5IHRoYXQgaXMgZmxhdCBhcyBwb3NzaWJsZSByYXRoZXIgdGhhbgogICAgYXMgYSBuZXN0ZWQgc3RydWN0dXJlIHRoYXQgd291bGQgdGFrZSBtb3JlIG1lbW9yeS4KCiAgICBJZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIGFyZ3VtZW50IGFuZCBpdHMgZGF0YSB0eXBlIGlzIGtub3duIHRvIGNhY2hlCiAgICBpdHMgaGFzaCB2YWx1ZSwgdGhlbiB0aGF0IGFyZ3VtZW50IGlzIHJldHVybmVkIHdpdGhvdXQgYSB3cmFwcGVyLiAgVGhpcwogICAgc2F2ZXMgc3BhY2UgYW5kIGltcHJvdmVzIGxvb2t1cCBzcGVlZC4KCiAgICAiIiIKICAgICMgQWxsIG9mIGNvZGUgYmVsb3cgcmVsaWVzIG9uIGt3ZHMgcHJlc2VydmluZyB0aGUgb3JkZXIgaW5wdXQgYnkgdGhlIHVzZXIuCiAgICAjIEZvcm1lcmx5LCB3ZSBzb3J0ZWQoKSB0aGUga3dkcyBiZWZvcmUgbG9vcGluZy4gIFRoZSBuZXcgd2F5IGlzICptdWNoKgogICAgIyBmYXN0ZXI7IGhvd2V2ZXIsIGl0IG1lYW5zIHRoYXQgZih4PTEsIHk9Mikgd2lsbCBub3cgYmUgdHJlYXRlZCBhcyBhCiAgICAjIGRpc3RpbmN0IGNhbGwgZnJvbSBmKHk9MiwgeD0xKSB3aGljaCB3aWxsIGJlIGNhY2hlZCBzZXBhcmF0ZWx5LgogICAga2V5ID0gYXJncwogICAgaWYga3dkczoKICAgICAgICBrZXkgKz0ga3dkX21hcmsKICAgICAgICBmb3IgaXRlbSBpbiBrd2RzLml0ZW1zKCk6CiAgICAgICAgICAgIGtleSArPSBpdGVtCiAgICBpZiB0eXBlZDoKICAgICAgICBrZXkgKz0gdHVwbGUodHlwZSh2KSBmb3IgdiBpbiBhcmdzKQogICAgICAgIGlmIGt3ZHM6CiAgICAgICAgICAgIGtleSArPSB0dXBsZSh0eXBlKHYpIGZvciB2IGluIGt3ZHMudmFsdWVzKCkpCiAgICBlbGlmIGxlbihrZXkpID09IDEgYW5kIHR5cGUoa2V5WzBdKSBpbiBmYXN0dHlwZXM6CiAgICAgICAgcmV0dXJuIGtleVswXQogICAgcmV0dXJuIF9IYXNoZWRTZXEoa2V5KQoKZGVmIGxydV9jYWNoZShtYXhzaXplPTEyOCwgdHlwZWQ9RmFsc2UpOgogICAgIiIiTGVhc3QtcmVjZW50bHktdXNlZCBjYWNoZSBkZWNvcmF0b3IuCgogICAgSWYgKm1heHNpemUqIGlzIHNldCB0byBOb25lLCB0aGUgTFJVIGZlYXR1cmVzIGFyZSBkaXNhYmxlZCBhbmQgdGhlIGNhY2hlCiAgICBjYW4gZ3JvdyB3aXRob3V0IGJvdW5kLgoKICAgIElmICp0eXBlZCogaXMgVHJ1ZSwgYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcyB3aWxsIGJlIGNhY2hlZCBzZXBhcmF0ZWx5LgogICAgRm9yIGV4YW1wbGUsIGYoMy4wKSBhbmQgZigzKSB3aWxsIGJlIHRyZWF0ZWQgYXMgZGlzdGluY3QgY2FsbHMgd2l0aAogICAgZGlzdGluY3QgcmVzdWx0cy4KCiAgICBBcmd1bWVudHMgdG8gdGhlIGNhY2hlZCBmdW5jdGlvbiBtdXN0IGJlIGhhc2hhYmxlLgoKICAgIFZpZXcgdGhlIGNhY2hlIHN0YXRpc3RpY3MgbmFtZWQgdHVwbGUgKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUpCiAgICB3aXRoIGYuY2FjaGVfaW5mbygpLiAgQ2xlYXIgdGhlIGNhY2hlIGFuZCBzdGF0aXN0aWNzIHdpdGggZi5jYWNoZV9jbGVhcigpLgogICAgQWNjZXNzIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIHdpdGggZi5fX3dyYXBwZWRfXy4KCiAgICBTZWU6ICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYWNoZV9yZXBsYWNlbWVudF9wb2xpY2llcyNMZWFzdF9yZWNlbnRseV91c2VkXyhMUlUpCgogICAgIiIiCgogICAgIyBVc2VycyBzaG91bGQgb25seSBhY2Nlc3MgdGhlIGxydV9jYWNoZSB0aHJvdWdoIGl0cyBwdWJsaWMgQVBJOgogICAgIyAgICAgICBjYWNoZV9pbmZvLCBjYWNoZV9jbGVhciwgYW5kIGYuX193cmFwcGVkX18KICAgICMgVGhlIGludGVybmFscyBvZiB0aGUgbHJ1X2NhY2hlIGFyZSBlbmNhcHN1bGF0ZWQgZm9yIHRocmVhZCBzYWZldHkgYW5kCiAgICAjIHRvIGFsbG93IHRoZSBpbXBsZW1lbnRhdGlvbiB0byBjaGFuZ2UgKGluY2x1ZGluZyBhIHBvc3NpYmxlIEMgdmVyc2lvbikuCgogICAgaWYgaXNpbnN0YW5jZShtYXhzaXplLCBpbnQpOgogICAgICAgICMgTmVnYXRpdmUgbWF4c2l6ZSBpcyB0cmVhdGVkIGFzIDAKICAgICAgICBpZiBtYXhzaXplIDwgMDoKICAgICAgICAgICAgbWF4c2l6ZSA9IDAKICAgIGVsaWYgY2FsbGFibGUobWF4c2l6ZSkgYW5kIGlzaW5zdGFuY2UodHlwZWQsIGJvb2wpOgogICAgICAgICMgVGhlIHVzZXJfZnVuY3Rpb24gd2FzIHBhc3NlZCBpbiBkaXJlY3RseSB2aWEgdGhlIG1heHNpemUgYXJndW1lbnQKICAgICAgICB1c2VyX2Z1bmN0aW9uLCBtYXhzaXplID0gbWF4c2l6ZSwgMTI4CiAgICAgICAgd3JhcHBlciA9IF9scnVfY2FjaGVfd3JhcHBlcih1c2VyX2Z1bmN0aW9uLCBtYXhzaXplLCB0eXBlZCwgX0NhY2hlSW5mbykKICAgICAgICB3cmFwcGVyLmNhY2hlX3BhcmFtZXRlcnMgPSBsYW1iZGEgOiB7J21heHNpemUnOiBtYXhzaXplLCAndHlwZWQnOiB0eXBlZH0KICAgICAgICByZXR1cm4gdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgdXNlcl9mdW5jdGlvbikKICAgIGVsaWYgbWF4c2l6ZSBpcyBub3QgTm9uZToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICdFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBpbnRlZ2VyLCBhIGNhbGxhYmxlLCBvciBOb25lJykKCiAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uKToKICAgICAgICB3cmFwcGVyID0gX2xydV9jYWNoZV93cmFwcGVyKHVzZXJfZnVuY3Rpb24sIG1heHNpemUsIHR5cGVkLCBfQ2FjaGVJbmZvKQogICAgICAgIHdyYXBwZXIuY2FjaGVfcGFyYW1ldGVycyA9IGxhbWJkYSA6IHsnbWF4c2l6ZSc6IG1heHNpemUsICd0eXBlZCc6IHR5cGVkfQogICAgICAgIHJldHVybiB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB1c2VyX2Z1bmN0aW9uKQoKICAgIHJldHVybiBkZWNvcmF0aW5nX2Z1bmN0aW9uCgpkZWYgX2xydV9jYWNoZV93cmFwcGVyKHVzZXJfZnVuY3Rpb24sIG1heHNpemUsIHR5cGVkLCBfQ2FjaGVJbmZvKToKICAgICMgQ29uc3RhbnRzIHNoYXJlZCBieSBhbGwgbHJ1IGNhY2hlIGluc3RhbmNlczoKICAgIHNlbnRpbmVsID0gb2JqZWN0KCkgICAgICAgICAgIyB1bmlxdWUgb2JqZWN0IHVzZWQgdG8gc2lnbmFsIGNhY2hlIG1pc3NlcwogICAgbWFrZV9rZXkgPSBfbWFrZV9rZXkgICAgICAgICAjIGJ1aWxkIGEga2V5IGZyb20gdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cwogICAgUFJFViwgTkVYVCwgS0VZLCBSRVNVTFQgPSAwLCAxLCAyLCAzICAgIyBuYW1lcyBmb3IgdGhlIGxpbmsgZmllbGRzCgogICAgY2FjaGUgPSB7fQogICAgaGl0cyA9IG1pc3NlcyA9IDAKICAgIGZ1bGwgPSBGYWxzZQogICAgY2FjaGVfZ2V0ID0gY2FjaGUuZ2V0ICAgICMgYm91bmQgbWV0aG9kIHRvIGxvb2t1cCBhIGtleSBvciByZXR1cm4gTm9uZQogICAgY2FjaGVfbGVuID0gY2FjaGUuX19sZW5fXyAgIyBnZXQgY2FjaGUgc2l6ZSB3aXRob3V0IGNhbGxpbmcgbGVuKCkKICAgIGxvY2sgPSBSTG9jaygpICAgICAgICAgICAjIGJlY2F1c2UgbGlua2VkbGlzdCB1cGRhdGVzIGFyZW4ndCB0aHJlYWRzYWZlCiAgICByb290ID0gW10gICAgICAgICAgICAgICAgIyByb290IG9mIHRoZSBjaXJjdWxhciBkb3VibHkgbGlua2VkIGxpc3QKICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0gICAgICMgaW5pdGlhbGl6ZSBieSBwb2ludGluZyB0byBzZWxmCgogICAgaWYgbWF4c2l6ZSA9PSAwOgoKICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKICAgICAgICAgICAgIyBObyBjYWNoaW5nIC0tIGp1c3QgYSBzdGF0aXN0aWNzIHVwZGF0ZQogICAgICAgICAgICBub25sb2NhbCBtaXNzZXMKICAgICAgICAgICAgbWlzc2VzICs9IDEKICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZWxpZiBtYXhzaXplIGlzIE5vbmU6CgogICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICAjIFNpbXBsZSBjYWNoaW5nIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAogICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMKICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCiAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlX2dldChrZXksIHNlbnRpbmVsKQogICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IHNlbnRpbmVsOgogICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgICAgIG1pc3NlcyArPSAxCiAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJlc3VsdAogICAgICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZWxzZToKCiAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgICAgICMgU2l6ZSBsaW1pdGVkIGNhY2hpbmcgdGhhdCB0cmFja3MgYWNjZXNzZXMgYnkgcmVjZW5jeQogICAgICAgICAgICBub25sb2NhbCByb290LCBoaXRzLCBtaXNzZXMsIGZ1bGwKICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCiAgICAgICAgICAgIHdpdGggbG9jazoKICAgICAgICAgICAgICAgIGxpbmsgPSBjYWNoZV9nZXQoa2V5KQogICAgICAgICAgICAgICAgaWYgbGluayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAjIE1vdmUgdGhlIGxpbmsgdG8gdGhlIGZyb250IG9mIHRoZSBjaXJjdWxhciBxdWV1ZQogICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldiwgbGlua19uZXh0LCBfa2V5LCByZXN1bHQgPSBsaW5rCiAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2W05FWFRdID0gbGlua19uZXh0CiAgICAgICAgICAgICAgICAgICAgbGlua19uZXh0W1BSRVZdID0gbGlua19wcmV2CiAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGxpbmsKICAgICAgICAgICAgICAgICAgICBsaW5rW1BSRVZdID0gbGFzdAogICAgICAgICAgICAgICAgICAgIGxpbmtbTkVYVF0gPSByb290CiAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQogICAgICAgICAgICB3aXRoIGxvY2s6CiAgICAgICAgICAgICAgICBpZiBrZXkgaW4gY2FjaGU6CiAgICAgICAgICAgICAgICAgICAgIyBHZXR0aW5nIGhlcmUgbWVhbnMgdGhhdCB0aGlzIHNhbWUga2V5IHdhcyBhZGRlZCB0byB0aGUKICAgICAgICAgICAgICAgICAgICAjIGNhY2hlIHdoaWxlIHRoZSBsb2NrIHdhcyByZWxlYXNlZC4gIFNpbmNlIHRoZSBsaW5rCiAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgaXMgYWxyZWFkeSBkb25lLCB3ZSBuZWVkIG9ubHkgcmV0dXJuIHRoZQogICAgICAgICAgICAgICAgICAgICMgY29tcHV0ZWQgcmVzdWx0IGFuZCB1cGRhdGUgdGhlIGNvdW50IG9mIG1pc3Nlcy4KICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBlbGlmIGZ1bGw6CiAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIG9sZCByb290IHRvIHN0b3JlIHRoZSBuZXcga2V5IGFuZCByZXN1bHQuCiAgICAgICAgICAgICAgICAgICAgb2xkcm9vdCA9IHJvb3QKICAgICAgICAgICAgICAgICAgICBvbGRyb290W0tFWV0gPSBrZXkKICAgICAgICAgICAgICAgICAgICBvbGRyb290W1JFU1VMVF0gPSByZXN1bHQKICAgICAgICAgICAgICAgICAgICAjIEVtcHR5IHRoZSBvbGRlc3QgbGluayBhbmQgbWFrZSBpdCB0aGUgbmV3IHJvb3QuCiAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBvbGQga2V5IGFuZCBvbGQgcmVzdWx0IHRvCiAgICAgICAgICAgICAgICAgICAgIyBwcmV2ZW50IHRoZWlyIHJlZiBjb3VudHMgZnJvbSBnb2luZyB0byB6ZXJvIGR1cmluZyB0aGUKICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZS4gVGhhdCB3aWxsIHByZXZlbnQgcG90ZW50aWFsbHkgYXJiaXRyYXJ5IG9iamVjdAogICAgICAgICAgICAgICAgICAgICMgY2xlYW4tdXAgY29kZSAoaS5lLiBfX2RlbF9fKSBmcm9tIHJ1bm5pbmcgd2hpbGUgd2UncmUKICAgICAgICAgICAgICAgICAgICAjIHN0aWxsIGFkanVzdGluZyB0aGUgbGlua3MuCiAgICAgICAgICAgICAgICAgICAgcm9vdCA9IG9sZHJvb3RbTkVYVF0KICAgICAgICAgICAgICAgICAgICBvbGRrZXkgPSByb290W0tFWV0KICAgICAgICAgICAgICAgICAgICBvbGRyZXN1bHQgPSByb290W1JFU1VMVF0KICAgICAgICAgICAgICAgICAgICByb290W0tFWV0gPSByb290W1JFU1VMVF0gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIyBOb3cgdXBkYXRlIHRoZSBjYWNoZSBkaWN0aW9uYXJ5LgogICAgICAgICAgICAgICAgICAgIGRlbCBjYWNoZVtvbGRrZXldCiAgICAgICAgICAgICAgICAgICAgIyBTYXZlIHRoZSBwb3RlbnRpYWxseSByZWVudHJhbnQgY2FjaGVba2V5XSBhc3NpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgIyBmb3IgbGFzdCwgYWZ0ZXIgdGhlIHJvb3QgYW5kIGxpbmtzIGhhdmUgYmVlbiBwdXQgaW4KICAgICAgICAgICAgICAgICAgICAjIGEgY29uc2lzdGVudCBzdGF0ZS4KICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gb2xkcm9vdAogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIFB1dCByZXN1bHQgaW4gYSBuZXcgbGluayBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlLgogICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCiAgICAgICAgICAgICAgICAgICAgbGluayA9IFtsYXN0LCByb290LCBrZXksIHJlc3VsdF0KICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGNhY2hlW2tleV0gPSBsaW5rCiAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIGNhY2hlX2xlbiBib3VuZCBtZXRob2QgaW5zdGVhZCBvZiB0aGUgbGVuKCkgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIHdyYXBwZWQgaW4gYW4gbHJ1X2NhY2hlIGl0c2VsZi4KICAgICAgICAgICAgICAgICAgICBmdWxsID0gKGNhY2hlX2xlbigpID49IG1heHNpemUpCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgY2FjaGVfaW5mbygpOgogICAgICAgICIiIlJlcG9ydCBjYWNoZSBzdGF0aXN0aWNzIiIiCiAgICAgICAgd2l0aCBsb2NrOgogICAgICAgICAgICByZXR1cm4gX0NhY2hlSW5mbyhoaXRzLCBtaXNzZXMsIG1heHNpemUsIGNhY2hlX2xlbigpKQoKICAgIGRlZiBjYWNoZV9jbGVhcigpOgogICAgICAgICIiIkNsZWFyIHRoZSBjYWNoZSBhbmQgY2FjaGUgc3RhdGlzdGljcyIiIgogICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcywgZnVsbAogICAgICAgIHdpdGggbG9jazoKICAgICAgICAgICAgY2FjaGUuY2xlYXIoKQogICAgICAgICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdCiAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCiAgICAgICAgICAgIGZ1bGwgPSBGYWxzZQoKICAgIHdyYXBwZXIuY2FjaGVfaW5mbyA9IGNhY2hlX2luZm8KICAgIHdyYXBwZXIuY2FjaGVfY2xlYXIgPSBjYWNoZV9jbGVhcgogICAgcmV0dXJuIHdyYXBwZXIKCnRyeToKICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgX2xydV9jYWNoZV93cmFwcGVyCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgY2FjaGUgLS0gc2ltcGxpZmllZCBhY2Nlc3MgdG8gdGhlIGluZmluaXR5IGNhY2hlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpkZWYgY2FjaGUodXNlcl9mdW5jdGlvbiwgLyk6CiAgICAnU2ltcGxlIGxpZ2h0d2VpZ2h0IHVuYm91bmRlZCBjYWNoZS4gIFNvbWV0aW1lcyBjYWxsZWQgIm1lbW9pemUiLicKICAgIHJldHVybiBscnVfY2FjaGUobWF4c2l6ZT1Ob25lKSh1c2VyX2Z1bmN0aW9uKQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBzaW5nbGVkaXNwYXRjaCgpIC0gc2luZ2xlLWRpc3BhdGNoIGdlbmVyaWMgZnVuY3Rpb24gZGVjb3JhdG9yCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpkZWYgX2MzX21lcmdlKHNlcXVlbmNlcyk6CiAgICAiIiJNZXJnZXMgTVJPcyBpbiAqc2VxdWVuY2VzKiB0byBhIHNpbmdsZSBNUk8gdXNpbmcgdGhlIEMzIGFsZ29yaXRobS4KCiAgICBBZGFwdGVkIGZyb20gaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy4KCiAgICAiIiIKICAgIHJlc3VsdCA9IFtdCiAgICB3aGlsZSBUcnVlOgogICAgICAgIHNlcXVlbmNlcyA9IFtzIGZvciBzIGluIHNlcXVlbmNlcyBpZiBzXSAgICMgcHVyZ2UgZW1wdHkgc2VxdWVuY2VzCiAgICAgICAgaWYgbm90IHNlcXVlbmNlczoKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgIGZvciBzMSBpbiBzZXF1ZW5jZXM6ICAgIyBmaW5kIG1lcmdlIGNhbmRpZGF0ZXMgYW1vbmcgc2VxIGhlYWRzCiAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHMxWzBdCiAgICAgICAgICAgIGZvciBzMiBpbiBzZXF1ZW5jZXM6CiAgICAgICAgICAgICAgICBpZiBjYW5kaWRhdGUgaW4gczJbMTpdOgogICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IE5vbmUKICAgICAgICAgICAgICAgICAgICBicmVhayAgICAgICMgcmVqZWN0IHRoZSBjdXJyZW50IGhlYWQsIGl0IGFwcGVhcnMgbGF0ZXIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgaWYgY2FuZGlkYXRlIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiSW5jb25zaXN0ZW50IGhpZXJhcmNoeSIpCiAgICAgICAgcmVzdWx0LmFwcGVuZChjYW5kaWRhdGUpCiAgICAgICAgIyByZW1vdmUgdGhlIGNob3NlbiBjYW5kaWRhdGUKICAgICAgICBmb3Igc2VxIGluIHNlcXVlbmNlczoKICAgICAgICAgICAgaWYgc2VxWzBdID09IGNhbmRpZGF0ZToKICAgICAgICAgICAgICAgIGRlbCBzZXFbMF0KCmRlZiBfYzNfbXJvKGNscywgYWJjcz1Ob25lKToKICAgICIiIkNvbXB1dGVzIHRoZSBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciB1c2luZyBleHRlbmRlZCBDMyBsaW5lYXJpemF0aW9uLgoKICAgIElmIG5vICphYmNzKiBhcmUgZ2l2ZW4sIHRoZSBhbGdvcml0aG0gd29ya3MgZXhhY3RseSBsaWtlIHRoZSBidWlsdC1pbiBDMwogICAgbGluZWFyaXphdGlvbiB1c2VkIGZvciBtZXRob2QgcmVzb2x1dGlvbi4KCiAgICBJZiBnaXZlbiwgKmFiY3MqIGlzIGEgbGlzdCBvZiBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgdGhhdCBzaG91bGQgYmUgaW5zZXJ0ZWQKICAgIGludG8gdGhlIHJlc3VsdGluZyBNUk8uIFVucmVsYXRlZCBBQkNzIGFyZSBpZ25vcmVkIGFuZCBkb24ndCBlbmQgdXAgaW4gdGhlCiAgICByZXN1bHQuIFRoZSBhbGdvcml0aG0gaW5zZXJ0cyBBQkNzIHdoZXJlIHRoZWlyIGZ1bmN0aW9uYWxpdHkgaXMgaW50cm9kdWNlZCwKICAgIGkuZS4gaXNzdWJjbGFzcyhjbHMsIGFiYykgcmV0dXJucyBUcnVlIGZvciB0aGUgY2xhc3MgaXRzZWxmIGJ1dCByZXR1cm5zCiAgICBGYWxzZSBmb3IgYWxsIGl0cyBkaXJlY3QgYmFzZSBjbGFzc2VzLiBJbXBsaWNpdCBBQkNzIGZvciBhIGdpdmVuIGNsYXNzCiAgICAoZWl0aGVyIHJlZ2lzdGVyZWQgb3IgaW5mZXJyZWQgZnJvbSB0aGUgcHJlc2VuY2Ugb2YgYSBzcGVjaWFsIG1ldGhvZCBsaWtlCiAgICBfX2xlbl9fKSBhcmUgaW5zZXJ0ZWQgZGlyZWN0bHkgYWZ0ZXIgdGhlIGxhc3QgQUJDIGV4cGxpY2l0bHkgbGlzdGVkIGluIHRoZQogICAgTVJPIG9mIHNhaWQgY2xhc3MuIElmIHR3byBpbXBsaWNpdCBBQkNzIGVuZCB1cCBuZXh0IHRvIGVhY2ggb3RoZXIgaW4gdGhlCiAgICByZXN1bHRpbmcgTVJPLCB0aGVpciBvcmRlcmluZyBkZXBlbmRzIG9uIHRoZSBvcmRlciBvZiB0eXBlcyBpbiAqYWJjcyouCgogICAgIiIiCiAgICBmb3IgaSwgYmFzZSBpbiBlbnVtZXJhdGUocmV2ZXJzZWQoY2xzLl9fYmFzZXNfXykpOgogICAgICAgIGlmIGhhc2F0dHIoYmFzZSwgJ19fYWJzdHJhY3RtZXRob2RzX18nKToKICAgICAgICAgICAgYm91bmRhcnkgPSBsZW4oY2xzLl9fYmFzZXNfXykgLSBpCiAgICAgICAgICAgIGJyZWFrICAgIyBCYXNlcyB1cCB0byB0aGUgbGFzdCBleHBsaWNpdCBBQkMgYXJlIGNvbnNpZGVyZWQgZmlyc3QuCiAgICBlbHNlOgogICAgICAgIGJvdW5kYXJ5ID0gMAogICAgYWJjcyA9IGxpc3QoYWJjcykgaWYgYWJjcyBlbHNlIFtdCiAgICBleHBsaWNpdF9iYXNlcyA9IGxpc3QoY2xzLl9fYmFzZXNfX1s6Ym91bmRhcnldKQogICAgYWJzdHJhY3RfYmFzZXMgPSBbXQogICAgb3RoZXJfYmFzZXMgPSBsaXN0KGNscy5fX2Jhc2VzX19bYm91bmRhcnk6XSkKICAgIGZvciBiYXNlIGluIGFiY3M6CiAgICAgICAgaWYgaXNzdWJjbGFzcyhjbHMsIGJhc2UpIGFuZCBub3QgYW55KAogICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhiLCBiYXNlKSBmb3IgYiBpbiBjbHMuX19iYXNlc19fCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICMgSWYgKmNscyogaXMgdGhlIGNsYXNzIHRoYXQgaW50cm9kdWNlcyBiZWhhdmlvdXIgZGVzY3JpYmVkIGJ5CiAgICAgICAgICAgICMgYW4gQUJDICpiYXNlKiwgaW5zZXJ0IHNhaWQgQUJDIHRvIGl0cyBNUk8uCiAgICAgICAgICAgIGFic3RyYWN0X2Jhc2VzLmFwcGVuZChiYXNlKQogICAgZm9yIGJhc2UgaW4gYWJzdHJhY3RfYmFzZXM6CiAgICAgICAgYWJjcy5yZW1vdmUoYmFzZSkKICAgIGV4cGxpY2l0X2MzX21yb3MgPSBbX2MzX21ybyhiYXNlLCBhYmNzPWFiY3MpIGZvciBiYXNlIGluIGV4cGxpY2l0X2Jhc2VzXQogICAgYWJzdHJhY3RfYzNfbXJvcyA9IFtfYzNfbXJvKGJhc2UsIGFiY3M9YWJjcykgZm9yIGJhc2UgaW4gYWJzdHJhY3RfYmFzZXNdCiAgICBvdGhlcl9jM19tcm9zID0gW19jM19tcm8oYmFzZSwgYWJjcz1hYmNzKSBmb3IgYmFzZSBpbiBvdGhlcl9iYXNlc10KICAgIHJldHVybiBfYzNfbWVyZ2UoCiAgICAgICAgW1tjbHNdXSArCiAgICAgICAgZXhwbGljaXRfYzNfbXJvcyArIGFic3RyYWN0X2MzX21yb3MgKyBvdGhlcl9jM19tcm9zICsKICAgICAgICBbZXhwbGljaXRfYmFzZXNdICsgW2Fic3RyYWN0X2Jhc2VzXSArIFtvdGhlcl9iYXNlc10KICAgICkKCmRlZiBfY29tcG9zZV9tcm8oY2xzLCB0eXBlcyk6CiAgICAiIiJDYWxjdWxhdGVzIHRoZSBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciBmb3IgYSBnaXZlbiBjbGFzcyAqY2xzKi4KCiAgICBJbmNsdWRlcyByZWxldmFudCBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgKHdpdGggdGhlaXIgcmVzcGVjdGl2ZSBiYXNlcykgZnJvbQogICAgdGhlICp0eXBlcyogaXRlcmFibGUuIFVzZXMgYSBtb2RpZmllZCBDMyBsaW5lYXJpemF0aW9uIGFsZ29yaXRobS4KCiAgICAiIiIKICAgIGJhc2VzID0gc2V0KGNscy5fX21yb19fKQogICAgIyBSZW1vdmUgZW50cmllcyB3aGljaCBhcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBfX21yb19fIG9yIHVucmVsYXRlZC4KICAgIGRlZiBpc19yZWxhdGVkKHR5cCk6CiAgICAgICAgcmV0dXJuICh0eXAgbm90IGluIGJhc2VzIGFuZCBoYXNhdHRyKHR5cCwgJ19fbXJvX18nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbm90IGlzaW5zdGFuY2UodHlwLCBHZW5lcmljQWxpYXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpc3N1YmNsYXNzKGNscywgdHlwKSkKICAgIHR5cGVzID0gW24gZm9yIG4gaW4gdHlwZXMgaWYgaXNfcmVsYXRlZChuKV0KICAgICMgUmVtb3ZlIGVudHJpZXMgd2hpY2ggYXJlIHN0cmljdCBiYXNlcyBvZiBvdGhlciBlbnRyaWVzICh0aGV5IHdpbGwgZW5kIHVwCiAgICAjIGluIHRoZSBNUk8gYW55d2F5LgogICAgZGVmIGlzX3N0cmljdF9iYXNlKHR5cCk6CiAgICAgICAgZm9yIG90aGVyIGluIHR5cGVzOgogICAgICAgICAgICBpZiB0eXAgIT0gb3RoZXIgYW5kIHR5cCBpbiBvdGhlci5fX21yb19fOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHR5cGVzID0gW24gZm9yIG4gaW4gdHlwZXMgaWYgbm90IGlzX3N0cmljdF9iYXNlKG4pXQogICAgIyBTdWJjbGFzc2VzIG9mIHRoZSBBQkNzIGluICp0eXBlcyogd2hpY2ggYXJlIGFsc28gaW1wbGVtZW50ZWQgYnkKICAgICMgKmNscyogY2FuIGJlIHVzZWQgdG8gc3RhYmlsaXplIEFCQyBvcmRlcmluZy4KICAgIHR5cGVfc2V0ID0gc2V0KHR5cGVzKQogICAgbXJvID0gW10KICAgIGZvciB0eXAgaW4gdHlwZXM6CiAgICAgICAgZm91bmQgPSBbXQogICAgICAgIGZvciBzdWIgaW4gdHlwLl9fc3ViY2xhc3Nlc19fKCk6CiAgICAgICAgICAgIGlmIHN1YiBub3QgaW4gYmFzZXMgYW5kIGlzc3ViY2xhc3MoY2xzLCBzdWIpOgogICAgICAgICAgICAgICAgZm91bmQuYXBwZW5kKFtzIGZvciBzIGluIHN1Yi5fX21yb19fIGlmIHMgaW4gdHlwZV9zZXRdKQogICAgICAgIGlmIG5vdCBmb3VuZDoKICAgICAgICAgICAgbXJvLmFwcGVuZCh0eXApCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIyBGYXZvciBzdWJjbGFzc2VzIHdpdGggdGhlIGJpZ2dlc3QgbnVtYmVyIG9mIHVzZWZ1bCBiYXNlcwogICAgICAgIGZvdW5kLnNvcnQoa2V5PWxlbiwgcmV2ZXJzZT1UcnVlKQogICAgICAgIGZvciBzdWIgaW4gZm91bmQ6CiAgICAgICAgICAgIGZvciBzdWJjbHMgaW4gc3ViOgogICAgICAgICAgICAgICAgaWYgc3ViY2xzIG5vdCBpbiBtcm86CiAgICAgICAgICAgICAgICAgICAgbXJvLmFwcGVuZChzdWJjbHMpCiAgICByZXR1cm4gX2MzX21ybyhjbHMsIGFiY3M9bXJvKQoKZGVmIF9maW5kX2ltcGwoY2xzLCByZWdpc3RyeSk6CiAgICAiIiJSZXR1cm5zIHRoZSBiZXN0IG1hdGNoaW5nIGltcGxlbWVudGF0aW9uIGZyb20gKnJlZ2lzdHJ5KiBmb3IgdHlwZSAqY2xzKi4KCiAgICBXaGVyZSB0aGVyZSBpcyBubyByZWdpc3RlcmVkIGltcGxlbWVudGF0aW9uIGZvciBhIHNwZWNpZmljIHR5cGUsIGl0cyBtZXRob2QKICAgIHJlc29sdXRpb24gb3JkZXIgaXMgdXNlZCB0byBmaW5kIGEgbW9yZSBnZW5lcmljIGltcGxlbWVudGF0aW9uLgoKICAgIE5vdGU6IGlmICpyZWdpc3RyeSogZG9lcyBub3QgY29udGFpbiBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGJhc2UKICAgICpvYmplY3QqIHR5cGUsIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBOb25lLgoKICAgICIiIgogICAgbXJvID0gX2NvbXBvc2VfbXJvKGNscywgcmVnaXN0cnkua2V5cygpKQogICAgbWF0Y2ggPSBOb25lCiAgICBmb3IgdCBpbiBtcm86CiAgICAgICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgSWYgKm1hdGNoKiBpcyBhbiBpbXBsaWNpdCBBQkMgYnV0IHRoZXJlIGlzIGFub3RoZXIgdW5yZWxhdGVkLAogICAgICAgICAgICAjIGVxdWFsbHkgbWF0Y2hpbmcgaW1wbGljaXQgQUJDLCByZWZ1c2UgdGhlIHRlbXB0YXRpb24gdG8gZ3Vlc3MuCiAgICAgICAgICAgIGlmICh0IGluIHJlZ2lzdHJ5IGFuZCB0IG5vdCBpbiBjbHMuX19tcm9fXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWF0Y2ggbm90IGluIGNscy5fX21yb19fCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgaXNzdWJjbGFzcyhtYXRjaCwgdCkpOgogICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJBbWJpZ3VvdXMgZGlzcGF0Y2g6IHt9IG9yIHt9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgbWF0Y2gsIHQpKQogICAgICAgICAgICBicmVhawogICAgICAgIGlmIHQgaW4gcmVnaXN0cnk6CiAgICAgICAgICAgIG1hdGNoID0gdAogICAgcmV0dXJuIHJlZ2lzdHJ5LmdldChtYXRjaCkKCmRlZiBzaW5nbGVkaXNwYXRjaChmdW5jKToKICAgICIiIlNpbmdsZS1kaXNwYXRjaCBnZW5lcmljIGZ1bmN0aW9uIGRlY29yYXRvci4KCiAgICBUcmFuc2Zvcm1zIGEgZnVuY3Rpb24gaW50byBhIGdlbmVyaWMgZnVuY3Rpb24sIHdoaWNoIGNhbiBoYXZlIGRpZmZlcmVudAogICAgYmVoYXZpb3VycyBkZXBlbmRpbmcgdXBvbiB0aGUgdHlwZSBvZiBpdHMgZmlyc3QgYXJndW1lbnQuIFRoZSBkZWNvcmF0ZWQKICAgIGZ1bmN0aW9uIGFjdHMgYXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIGFuZCBhZGRpdGlvbmFsCiAgICBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIHJlZ2lzdGVyKCkgYXR0cmlidXRlIG9mIHRoZQogICAgZ2VuZXJpYyBmdW5jdGlvbi4KICAgICIiIgogICAgIyBUaGVyZSBhcmUgbWFueSBwcm9ncmFtcyB0aGF0IHVzZSBmdW5jdG9vbHMgd2l0aG91dCBzaW5nbGVkaXNwYXRjaCwgc28gd2UKICAgICMgdHJhZGUtb2ZmIG1ha2luZyBzaW5nbGVkaXNwYXRjaCBtYXJnaW5hbGx5IHNsb3dlciBmb3IgdGhlIGJlbmVmaXQgb2YKICAgICMgbWFraW5nIHN0YXJ0LXVwIG9mIHN1Y2ggYXBwbGljYXRpb25zIHNsaWdodGx5IGZhc3Rlci4KICAgIGltcG9ydCB0eXBlcywgd2Vha3JlZgoKICAgIHJlZ2lzdHJ5ID0ge30KICAgIGRpc3BhdGNoX2NhY2hlID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCiAgICBjYWNoZV90b2tlbiA9IE5vbmUKCiAgICBkZWYgZGlzcGF0Y2goY2xzKToKICAgICAgICAiIiJnZW5lcmljX2Z1bmMuZGlzcGF0Y2goY2xzKSAtPiA8ZnVuY3Rpb24gaW1wbGVtZW50YXRpb24+CgogICAgICAgIFJ1bnMgdGhlIGRpc3BhdGNoIGFsZ29yaXRobSB0byByZXR1cm4gdGhlIGJlc3QgYXZhaWxhYmxlIGltcGxlbWVudGF0aW9uCiAgICAgICAgZm9yIHRoZSBnaXZlbiAqY2xzKiByZWdpc3RlcmVkIG9uICpnZW5lcmljX2Z1bmMqLgoKICAgICAgICAiIiIKICAgICAgICBub25sb2NhbCBjYWNoZV90b2tlbgogICAgICAgIGlmIGNhY2hlX3Rva2VuIGlzIG5vdCBOb25lOgogICAgICAgICAgICBjdXJyZW50X3Rva2VuID0gZ2V0X2NhY2hlX3Rva2VuKCkKICAgICAgICAgICAgaWYgY2FjaGVfdG9rZW4gIT0gY3VycmVudF90b2tlbjoKICAgICAgICAgICAgICAgIGRpc3BhdGNoX2NhY2hlLmNsZWFyKCkKICAgICAgICAgICAgICAgIGNhY2hlX3Rva2VuID0gY3VycmVudF90b2tlbgogICAgICAgIHRyeToKICAgICAgICAgICAgaW1wbCA9IGRpc3BhdGNoX2NhY2hlW2Nsc10KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGltcGwgPSByZWdpc3RyeVtjbHNdCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIGltcGwgPSBfZmluZF9pbXBsKGNscywgcmVnaXN0cnkpCiAgICAgICAgICAgIGRpc3BhdGNoX2NhY2hlW2Nsc10gPSBpbXBsCiAgICAgICAgcmV0dXJuIGltcGwKCiAgICBkZWYgX2lzX3VuaW9uX3R5cGUoY2xzKToKICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgZ2V0X29yaWdpbiwgVW5pb24KICAgICAgICByZXR1cm4gZ2V0X29yaWdpbihjbHMpIGluIHtVbmlvbiwgdHlwZXMuVW5pb25UeXBlfQoKICAgIGRlZiBfaXNfdmFsaWRfZGlzcGF0Y2hfdHlwZShjbHMpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoY2xzLCB0eXBlKToKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgZ2V0X2FyZ3MKICAgICAgICByZXR1cm4gKF9pc191bmlvbl90eXBlKGNscykgYW5kCiAgICAgICAgICAgICAgICBhbGwoaXNpbnN0YW5jZShhcmcsIHR5cGUpIGZvciBhcmcgaW4gZ2V0X2FyZ3MoY2xzKSkpCgogICAgZGVmIHJlZ2lzdGVyKGNscywgZnVuYz1Ob25lKToKICAgICAgICAiIiJnZW5lcmljX2Z1bmMucmVnaXN0ZXIoY2xzLCBmdW5jKSAtPiBmdW5jCgogICAgICAgIFJlZ2lzdGVycyBhIG5ldyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGdpdmVuICpjbHMqIG9uIGEgKmdlbmVyaWNfZnVuYyouCgogICAgICAgICIiIgogICAgICAgIG5vbmxvY2FsIGNhY2hlX3Rva2VuCiAgICAgICAgaWYgX2lzX3ZhbGlkX2Rpc3BhdGNoX3R5cGUoY2xzKToKICAgICAgICAgICAgaWYgZnVuYyBpcyBOb25lOgogICAgICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSBmOiByZWdpc3RlcihjbHMsIGYpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgZnVuYyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmIkludmFsaWQgZmlyc3QgYXJndW1lbnQgdG8gYHJlZ2lzdGVyKClgLiAiCiAgICAgICAgICAgICAgICAgICAgZiJ7Y2xzIXJ9IGlzIG5vdCBhIGNsYXNzIG9yIHVuaW9uIHR5cGUuIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBhbm4gPSBnZXRhdHRyKGNscywgJ19fYW5ub3RhdGlvbnNfXycsIHt9KQogICAgICAgICAgICBpZiBub3QgYW5uOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgIGYiSW52YWxpZCBmaXJzdCBhcmd1bWVudCB0byBgcmVnaXN0ZXIoKWA6IHtjbHMhcn0uICIKICAgICAgICAgICAgICAgICAgICBmIlVzZSBlaXRoZXIgYEByZWdpc3Rlcihzb21lX2NsYXNzKWAgb3IgcGxhaW4gYEByZWdpc3RlcmAgIgogICAgICAgICAgICAgICAgICAgIGYib24gYW4gYW5ub3RhdGVkIGZ1bmN0aW9uLiIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgZnVuYyA9IGNscwoKICAgICAgICAgICAgIyBvbmx5IGltcG9ydCB0eXBpbmcgaWYgYW5ub3RhdGlvbiBwYXJzaW5nIGlzIG5lY2Vzc2FyeQogICAgICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgZ2V0X3R5cGVfaGludHMKICAgICAgICAgICAgYXJnbmFtZSwgY2xzID0gbmV4dChpdGVyKGdldF90eXBlX2hpbnRzKGZ1bmMpLml0ZW1zKCkpKQogICAgICAgICAgICBpZiBub3QgX2lzX3ZhbGlkX2Rpc3BhdGNoX3R5cGUoY2xzKToKICAgICAgICAgICAgICAgIGlmIF9pc191bmlvbl90eXBlKGNscyk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBmIkludmFsaWQgYW5ub3RhdGlvbiBmb3Ige2FyZ25hbWUhcn0uICIKICAgICAgICAgICAgICAgICAgICAgICAgZiJ7Y2xzIXJ9IG5vdCBhbGwgYXJndW1lbnRzIGFyZSBjbGFzc2VzLiIKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgZiJJbnZhbGlkIGFubm90YXRpb24gZm9yIHthcmduYW1lIXJ9LiAiCiAgICAgICAgICAgICAgICAgICAgICAgIGYie2NscyFyfSBpcyBub3QgYSBjbGFzcy4iCiAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICBpZiBfaXNfdW5pb25fdHlwZShjbHMpOgogICAgICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgZ2V0X2FyZ3MKCiAgICAgICAgICAgIGZvciBhcmcgaW4gZ2V0X2FyZ3MoY2xzKToKICAgICAgICAgICAgICAgIHJlZ2lzdHJ5W2FyZ10gPSBmdW5jCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVnaXN0cnlbY2xzXSA9IGZ1bmMKICAgICAgICBpZiBjYWNoZV90b2tlbiBpcyBOb25lIGFuZCBoYXNhdHRyKGNscywgJ19fYWJzdHJhY3RtZXRob2RzX18nKToKICAgICAgICAgICAgY2FjaGVfdG9rZW4gPSBnZXRfY2FjaGVfdG9rZW4oKQogICAgICAgIGRpc3BhdGNoX2NhY2hlLmNsZWFyKCkKICAgICAgICByZXR1cm4gZnVuYwoKICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3KToKICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYne2Z1bmNuYW1lfSByZXF1aXJlcyBhdCBsZWFzdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMSBwb3NpdGlvbmFsIGFyZ3VtZW50JykKCiAgICAgICAgcmV0dXJuIGRpc3BhdGNoKGFyZ3NbMF0uX19jbGFzc19fKSgqYXJncywgKiprdykKCiAgICBmdW5jbmFtZSA9IGdldGF0dHIoZnVuYywgJ19fbmFtZV9fJywgJ3NpbmdsZWRpc3BhdGNoIGZ1bmN0aW9uJykKICAgIHJlZ2lzdHJ5W29iamVjdF0gPSBmdW5jCiAgICB3cmFwcGVyLnJlZ2lzdGVyID0gcmVnaXN0ZXIKICAgIHdyYXBwZXIuZGlzcGF0Y2ggPSBkaXNwYXRjaAogICAgd3JhcHBlci5yZWdpc3RyeSA9IHR5cGVzLk1hcHBpbmdQcm94eVR5cGUocmVnaXN0cnkpCiAgICB3cmFwcGVyLl9jbGVhcl9jYWNoZSA9IGRpc3BhdGNoX2NhY2hlLmNsZWFyCiAgICB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCBmdW5jKQogICAgcmV0dXJuIHdyYXBwZXIKCgojIERlc2NyaXB0b3IgdmVyc2lvbgpjbGFzcyBzaW5nbGVkaXNwYXRjaG1ldGhvZDoKICAgICIiIlNpbmdsZS1kaXNwYXRjaCBnZW5lcmljIG1ldGhvZCBkZXNjcmlwdG9yLgoKICAgIFN1cHBvcnRzIHdyYXBwaW5nIGV4aXN0aW5nIGRlc2NyaXB0b3JzIGFuZCBoYW5kbGVzIG5vbi1kZXNjcmlwdG9yCiAgICBjYWxsYWJsZXMgYXMgaW5zdGFuY2UgbWV0aG9kcy4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jKToKICAgICAgICBpZiBub3QgY2FsbGFibGUoZnVuYykgYW5kIG5vdCBoYXNhdHRyKGZ1bmMsICJfX2dldF9fIik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIntmdW5jIXJ9IGlzIG5vdCBjYWxsYWJsZSBvciBhIGRlc2NyaXB0b3IiKQoKICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzaW5nbGVkaXNwYXRjaChmdW5jKQogICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKCiAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgY2xzLCBtZXRob2Q9Tm9uZSk6CiAgICAgICAgIiIiZ2VuZXJpY19tZXRob2QucmVnaXN0ZXIoY2xzLCBmdW5jKSAtPiBmdW5jCgogICAgICAgIFJlZ2lzdGVycyBhIG5ldyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGdpdmVuICpjbHMqIG9uIGEgKmdlbmVyaWNfbWV0aG9kKi4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5kaXNwYXRjaGVyLnJlZ2lzdGVyKGNscywgZnVuYz1tZXRob2QpCgogICAgZGVmIF9fZ2V0X18oc2VsZiwgb2JqLCBjbHM9Tm9uZSk6CiAgICAgICAgZGVmIF9tZXRob2QoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAgbWV0aG9kID0gc2VsZi5kaXNwYXRjaGVyLmRpc3BhdGNoKGFyZ3NbMF0uX19jbGFzc19fKQogICAgICAgICAgICByZXR1cm4gbWV0aG9kLl9fZ2V0X18ob2JqLCBjbHMpKCphcmdzLCAqKmt3YXJncykKCiAgICAgICAgX21ldGhvZC5fX2lzYWJzdHJhY3RtZXRob2RfXyA9IHNlbGYuX19pc2Fic3RyYWN0bWV0aG9kX18KICAgICAgICBfbWV0aG9kLnJlZ2lzdGVyID0gc2VsZi5yZWdpc3RlcgogICAgICAgIHVwZGF0ZV93cmFwcGVyKF9tZXRob2QsIHNlbGYuZnVuYykKICAgICAgICByZXR1cm4gX21ldGhvZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9faXNhYnN0cmFjdG1ldGhvZF9fKHNlbGYpOgogICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuZnVuYywgJ19faXNhYnN0cmFjdG1ldGhvZF9fJywgRmFsc2UpCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIGNhY2hlZF9wcm9wZXJ0eSgpIC0gY29tcHV0ZWQgb25jZSBwZXIgaW5zdGFuY2UsIGNhY2hlZCBhcyBhdHRyaWJ1dGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCl9OT1RfRk9VTkQgPSBvYmplY3QoKQoKCmNsYXNzIGNhY2hlZF9wcm9wZXJ0eToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jKToKICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCiAgICAgICAgc2VsZi5hdHRybmFtZSA9IE5vbmUKICAgICAgICBzZWxmLl9fZG9jX18gPSBmdW5jLl9fZG9jX18KICAgICAgICBzZWxmLmxvY2sgPSBSTG9jaygpCgogICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CiAgICAgICAgaWYgc2VsZi5hdHRybmFtZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmF0dHJuYW1lID0gbmFtZQogICAgICAgIGVsaWYgbmFtZSAhPSBzZWxmLmF0dHJuYW1lOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAiQ2Fubm90IGFzc2lnbiB0aGUgc2FtZSBjYWNoZWRfcHJvcGVydHkgdG8gdHdvIGRpZmZlcmVudCBuYW1lcyAiCiAgICAgICAgICAgICAgICBmIih7c2VsZi5hdHRybmFtZSFyfSBhbmQge25hbWUhcn0pLiIKICAgICAgICAgICAgKQoKICAgIGRlZiBfX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcj1Ob25lKToKICAgICAgICBpZiBpbnN0YW5jZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgIGlmIHNlbGYuYXR0cm5hbWUgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgY2FjaGVkX3Byb3BlcnR5IGluc3RhbmNlIHdpdGhvdXQgY2FsbGluZyBfX3NldF9uYW1lX18gb24gaXQuIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNhY2hlID0gaW5zdGFuY2UuX19kaWN0X18KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6ICAjIG5vdCBhbGwgb2JqZWN0cyBoYXZlIF9fZGljdF9fIChlLmcuIGNsYXNzIGRlZmluZXMgc2xvdHMpCiAgICAgICAgICAgIG1zZyA9ICgKICAgICAgICAgICAgICAgIGYiTm8gJ19fZGljdF9fJyBhdHRyaWJ1dGUgb24ge3R5cGUoaW5zdGFuY2UpLl9fbmFtZV9fIXJ9ICIKICAgICAgICAgICAgICAgIGYiaW5zdGFuY2UgdG8gY2FjaGUge3NlbGYuYXR0cm5hbWUhcn0gcHJvcGVydHkuIgogICAgICAgICAgICApCiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gTm9uZQogICAgICAgIHZhbCA9IGNhY2hlLmdldChzZWxmLmF0dHJuYW1lLCBfTk9UX0ZPVU5EKQogICAgICAgIGlmIHZhbCBpcyBfTk9UX0ZPVU5EOgogICAgICAgICAgICB3aXRoIHNlbGYubG9jazoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgYW5vdGhlciB0aHJlYWQgZmlsbGVkIGNhY2hlIHdoaWxlIHdlIGF3YWl0ZWQgbG9jawogICAgICAgICAgICAgICAgdmFsID0gY2FjaGUuZ2V0KHNlbGYuYXR0cm5hbWUsIF9OT1RfRk9VTkQpCiAgICAgICAgICAgICAgICBpZiB2YWwgaXMgX05PVF9GT1VORDoKICAgICAgICAgICAgICAgICAgICB2YWwgPSBzZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVtzZWxmLmF0dHJuYW1lXSA9IHZhbAogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiVGhlICdfX2RpY3RfXycgYXR0cmlidXRlIG9uIHt0eXBlKGluc3RhbmNlKS5fX25hbWVfXyFyfSBpbnN0YW5jZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmImRvZXMgbm90IHN1cHBvcnQgaXRlbSBhc3NpZ25tZW50IGZvciBjYWNoaW5nIHtzZWxmLmF0dHJuYW1lIXJ9IHByb3BlcnR5LiIKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKSBmcm9tIE5vbmUKICAgICAgICByZXR1cm4gdmFsCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZChHZW5lcmljQWxpYXMpClBLAwQUAAAAAAACIKNWto1uM28TAABvEwAADgAAAGdlbmVyaWNwYXRoLnB5IiIiClBhdGggb3BlcmF0aW9ucyBjb21tb24gdG8gbW9yZSB0aGFuIG9uZSBPUwpEbyBub3QgdXNlIGRpcmVjdGx5LiAgVGhlIE9TIHNwZWNpZmljIG1vZHVsZXMgaW1wb3J0IHRoZSBhcHByb3ByaWF0ZQpmdW5jdGlvbnMgZnJvbSB0aGlzIG1vZHVsZSB0aGVtc2VsdmVzLgoiIiIKaW1wb3J0IG9zCmltcG9ydCBzdGF0CgpfX2FsbF9fID0gWydjb21tb25wcmVmaXgnLCAnZXhpc3RzJywgJ2dldGF0aW1lJywgJ2dldGN0aW1lJywgJ2dldG10aW1lJywKICAgICAgICAgICAnZ2V0c2l6ZScsICdpc2RpcicsICdpc2ZpbGUnLCAnc2FtZWZpbGUnLCAnc2FtZW9wZW5maWxlJywKICAgICAgICAgICAnc2FtZXN0YXQnXQoKCiMgRG9lcyBhIHBhdGggZXhpc3Q/CiMgVGhpcyBpcyBmYWxzZSBmb3IgZGFuZ2xpbmcgc3ltYm9saWMgbGlua3Mgb24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgdGhlbS4KZGVmIGV4aXN0cyhwYXRoKToKICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzIiIiCiAgICB0cnk6CiAgICAgICAgb3Muc3RhdChwYXRoKQogICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgoKIyBUaGlzIGZvbGxvd3Mgc3ltYm9saWMgbGlua3MsIHNvIGJvdGggaXNsaW5rKCkgYW5kIGlzZGlyKCkgY2FuIGJlIHRydWUKIyBmb3IgdGhlIHNhbWUgcGF0aCBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBzeW1saW5rcwpkZWYgaXNmaWxlKHBhdGgpOgogICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIHJlZ3VsYXIgZmlsZSIiIgogICAgdHJ5OgogICAgICAgIHN0ID0gb3Muc3RhdChwYXRoKQogICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBzdGF0LlNfSVNSRUcoc3Quc3RfbW9kZSkKCgojIElzIGEgcGF0aCBhIGRpcmVjdG9yeT8KIyBUaGlzIGZvbGxvd3Mgc3ltYm9saWMgbGlua3MsIHNvIGJvdGggaXNsaW5rKCkgYW5kIGlzZGlyKCkKIyBjYW4gYmUgdHJ1ZSBmb3IgdGhlIHNhbWUgcGF0aCBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBzeW1saW5rcwpkZWYgaXNkaXIocyk6CiAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgcGF0aG5hbWUgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4iIiIKICAgIHRyeToKICAgICAgICBzdCA9IG9zLnN0YXQocykKICAgIGV4Y2VwdCAoT1NFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpCgoKZGVmIGdldHNpemUoZmlsZW5hbWUpOgogICAgIiIiUmV0dXJuIHRoZSBzaXplIG9mIGEgZmlsZSwgcmVwb3J0ZWQgYnkgb3Muc3RhdCgpLiIiIgogICAgcmV0dXJuIG9zLnN0YXQoZmlsZW5hbWUpLnN0X3NpemUKCgpkZWYgZ2V0bXRpbWUoZmlsZW5hbWUpOgogICAgIiIiUmV0dXJuIHRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIGEgZmlsZSwgcmVwb3J0ZWQgYnkgb3Muc3RhdCgpLiIiIgogICAgcmV0dXJuIG9zLnN0YXQoZmlsZW5hbWUpLnN0X210aW1lCgoKZGVmIGdldGF0aW1lKGZpbGVuYW1lKToKICAgICIiIlJldHVybiB0aGUgbGFzdCBhY2Nlc3MgdGltZSBvZiBhIGZpbGUsIHJlcG9ydGVkIGJ5IG9zLnN0YXQoKS4iIiIKICAgIHJldHVybiBvcy5zdGF0KGZpbGVuYW1lKS5zdF9hdGltZQoKCmRlZiBnZXRjdGltZShmaWxlbmFtZSk6CiAgICAiIiJSZXR1cm4gdGhlIG1ldGFkYXRhIGNoYW5nZSB0aW1lIG9mIGEgZmlsZSwgcmVwb3J0ZWQgYnkgb3Muc3RhdCgpLiIiIgogICAgcmV0dXJuIG9zLnN0YXQoZmlsZW5hbWUpLnN0X2N0aW1lCgoKIyBSZXR1cm4gdGhlIGxvbmdlc3QgcHJlZml4IG9mIGFsbCBsaXN0IGVsZW1lbnRzLgpkZWYgY29tbW9ucHJlZml4KG0pOgogICAgIkdpdmVuIGEgbGlzdCBvZiBwYXRobmFtZXMsIHJldHVybnMgdGhlIGxvbmdlc3QgY29tbW9uIGxlYWRpbmcgY29tcG9uZW50IgogICAgaWYgbm90IG06IHJldHVybiAnJwogICAgIyBTb21lIHBlb3BsZSBwYXNzIGluIGEgbGlzdCBvZiBwYXRobmFtZSBwYXJ0cyB0byBvcGVyYXRlIGluIGFuIE9TLWFnbm9zdGljCiAgICAjIGZhc2hpb247IGRvbid0IHRyeSB0byB0cmFuc2xhdGUgaW4gdGhhdCBjYXNlIGFzIHRoYXQncyBhbiBhYnVzZSBvZiB0aGUKICAgICMgQVBJIGFuZCB0aGV5IGFyZSBhbHJlYWR5IGRvaW5nIHdoYXQgdGhleSBuZWVkIHRvIGJlIE9TLWFnbm9zdGljIGFuZCBzbwogICAgIyB0aGV5IG1vc3QgbGlrZWx5IHdvbid0IGJlIHVzaW5nIGFuIG9zLlBhdGhMaWtlIG9iamVjdCBpbiB0aGUgc3VibGlzdHMuCiAgICBpZiBub3QgaXNpbnN0YW5jZShtWzBdLCAobGlzdCwgdHVwbGUpKToKICAgICAgICBtID0gdHVwbGUobWFwKG9zLmZzcGF0aCwgbSkpCiAgICBzMSA9IG1pbihtKQogICAgczIgPSBtYXgobSkKICAgIGZvciBpLCBjIGluIGVudW1lcmF0ZShzMSk6CiAgICAgICAgaWYgYyAhPSBzMltpXToKICAgICAgICAgICAgcmV0dXJuIHMxWzppXQogICAgcmV0dXJuIHMxCgojIEFyZSB0d28gc3RhdCBidWZmZXJzIChvYnRhaW5lZCBmcm9tIHN0YXQsIGZzdGF0IG9yIGxzdGF0KQojIGRlc2NyaWJpbmcgdGhlIHNhbWUgZmlsZT8KZGVmIHNhbWVzdGF0KHMxLCBzMik6CiAgICAiIiJUZXN0IHdoZXRoZXIgdHdvIHN0YXQgYnVmZmVycyByZWZlcmVuY2UgdGhlIHNhbWUgZmlsZSIiIgogICAgcmV0dXJuIChzMS5zdF9pbm8gPT0gczIuc3RfaW5vIGFuZAogICAgICAgICAgICBzMS5zdF9kZXYgPT0gczIuc3RfZGV2KQoKCiMgQXJlIHR3byBmaWxlbmFtZXMgcmVhbGx5IHBvaW50aW5nIHRvIHRoZSBzYW1lIGZpbGU/CmRlZiBzYW1lZmlsZShmMSwgZjIpOgogICAgIiIiVGVzdCB3aGV0aGVyIHR3byBwYXRobmFtZXMgcmVmZXJlbmNlIHRoZSBzYW1lIGFjdHVhbCBmaWxlIG9yIGRpcmVjdG9yeQoKICAgIFRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZGV2aWNlIG51bWJlciBhbmQgaS1ub2RlIG51bWJlciBhbmQKICAgIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgYW4gb3Muc3RhdCgpIGNhbGwgb24gZWl0aGVyIHBhdGhuYW1lIGZhaWxzLgogICAgIiIiCiAgICBzMSA9IG9zLnN0YXQoZjEpCiAgICBzMiA9IG9zLnN0YXQoZjIpCiAgICByZXR1cm4gc2FtZXN0YXQoczEsIHMyKQoKCiMgQXJlIHR3byBvcGVuIGZpbGVzIHJlYWxseSByZWZlcmVuY2luZyB0aGUgc2FtZSBmaWxlPwojIChOb3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgZmlsZSBkZXNjcmlwdG9yISkKZGVmIHNhbWVvcGVuZmlsZShmcDEsIGZwMik6CiAgICAiIiJUZXN0IHdoZXRoZXIgdHdvIG9wZW4gZmlsZSBvYmplY3RzIHJlZmVyZW5jZSB0aGUgc2FtZSBmaWxlIiIiCiAgICBzMSA9IG9zLmZzdGF0KGZwMSkKICAgIHMyID0gb3MuZnN0YXQoZnAyKQogICAgcmV0dXJuIHNhbWVzdGF0KHMxLCBzMikKCgojIFNwbGl0IGEgcGF0aCBpbiByb290IGFuZCBleHRlbnNpb24uCiMgVGhlIGV4dGVuc2lvbiBpcyBldmVyeXRoaW5nIHN0YXJ0aW5nIGF0IHRoZSBsYXN0IGRvdCBpbiB0aGUgbGFzdAojIHBhdGhuYW1lIGNvbXBvbmVudDsgdGhlIHJvb3QgaXMgZXZlcnl0aGluZyBiZWZvcmUgdGhhdC4KIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KCiMgR2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBzcGxpdGV4dCwgdG8gYmUgcGFyYW1ldHJpemVkIHdpdGgKIyB0aGUgc2VwYXJhdG9ycwpkZWYgX3NwbGl0ZXh0KHAsIHNlcCwgYWx0c2VwLCBleHRzZXApOgogICAgIiIiU3BsaXQgdGhlIGV4dGVuc2lvbiBmcm9tIGEgcGF0aG5hbWUuCgogICAgRXh0ZW5zaW9uIGlzIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgbGFzdCBkb3QgdG8gdGhlIGVuZCwgaWdub3JpbmcKICAgIGxlYWRpbmcgZG90cy4gIFJldHVybnMgIihyb290LCBleHQpIjsgZXh0IG1heSBiZSBlbXB0eS4iIiIKICAgICMgTk9URTogVGhpcyBjb2RlIG11c3Qgd29yayBmb3IgdGV4dCBhbmQgYnl0ZXMgc3RyaW5ncy4KCiAgICBzZXBJbmRleCA9IHAucmZpbmQoc2VwKQogICAgaWYgYWx0c2VwOgogICAgICAgIGFsdHNlcEluZGV4ID0gcC5yZmluZChhbHRzZXApCiAgICAgICAgc2VwSW5kZXggPSBtYXgoc2VwSW5kZXgsIGFsdHNlcEluZGV4KQoKICAgIGRvdEluZGV4ID0gcC5yZmluZChleHRzZXApCiAgICBpZiBkb3RJbmRleCA+IHNlcEluZGV4OgogICAgICAgICMgc2tpcCBhbGwgbGVhZGluZyBkb3RzCiAgICAgICAgZmlsZW5hbWVJbmRleCA9IHNlcEluZGV4ICsgMQogICAgICAgIHdoaWxlIGZpbGVuYW1lSW5kZXggPCBkb3RJbmRleDoKICAgICAgICAgICAgaWYgcFtmaWxlbmFtZUluZGV4OmZpbGVuYW1lSW5kZXgrMV0gIT0gZXh0c2VwOgogICAgICAgICAgICAgICAgcmV0dXJuIHBbOmRvdEluZGV4XSwgcFtkb3RJbmRleDpdCiAgICAgICAgICAgIGZpbGVuYW1lSW5kZXggKz0gMQoKICAgIHJldHVybiBwLCBwWzowXQoKZGVmIF9jaGVja19hcmdfdHlwZXMoZnVuY25hbWUsICphcmdzKToKICAgIGhhc3N0ciA9IGhhc2J5dGVzID0gRmFsc2UKICAgIGZvciBzIGluIGFyZ3M6CiAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgogICAgICAgICAgICBoYXNzdHIgPSBUcnVlCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKICAgICAgICAgICAgaGFzYnl0ZXMgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYne2Z1bmNuYW1lfSgpIGFyZ3VtZW50IG11c3QgYmUgc3RyLCBieXRlcywgb3IgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZidvcy5QYXRoTGlrZSBvYmplY3QsIG5vdCB7cy5fX2NsYXNzX18uX19uYW1lX18hcn0nKSBmcm9tIE5vbmUKICAgIGlmIGhhc3N0ciBhbmQgaGFzYnl0ZXM6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBtaXggc3RyaW5ncyBhbmQgYnl0ZXMgaW4gcGF0aCBjb21wb25lbnRzIikgZnJvbSBOb25lClBLAwQUAAAAAAACIKNWP+H+rkEdAABBHQAACQAAAGdldG9wdC5weSIiIlBhcnNlciBmb3IgY29tbWFuZCBsaW5lIG9wdGlvbnMuCgpUaGlzIG1vZHVsZSBoZWxwcyBzY3JpcHRzIHRvIHBhcnNlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGluCnN5cy5hcmd2LiAgSXQgc3VwcG9ydHMgdGhlIHNhbWUgY29udmVudGlvbnMgYXMgdGhlIFVuaXggZ2V0b3B0KCkKZnVuY3Rpb24gKGluY2x1ZGluZyB0aGUgc3BlY2lhbCBtZWFuaW5ncyBvZiBhcmd1bWVudHMgb2YgdGhlIGZvcm0gYC0nCmFuZCBgLS0nKS4gIExvbmcgb3B0aW9ucyBzaW1pbGFyIHRvIHRob3NlIHN1cHBvcnRlZCBieSBHTlUgc29mdHdhcmUKbWF5IGJlIHVzZWQgYXMgd2VsbCB2aWEgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQuICBUaGlzIG1vZHVsZQpwcm92aWRlcyB0d28gZnVuY3Rpb25zIGFuZCBhbiBleGNlcHRpb246CgpnZXRvcHQoKSAtLSBQYXJzZSBjb21tYW5kIGxpbmUgb3B0aW9ucwpnbnVfZ2V0b3B0KCkgLS0gTGlrZSBnZXRvcHQoKSwgYnV0IGFsbG93IG9wdGlvbiBhbmQgbm9uLW9wdGlvbiBhcmd1bWVudHMKdG8gYmUgaW50ZXJtaXhlZC4KR2V0b3B0RXJyb3IgLS0gZXhjZXB0aW9uIChjbGFzcykgcmFpc2VkIHdpdGggJ29wdCcgYXR0cmlidXRlLCB3aGljaCBpcyB0aGUKb3B0aW9uIGludm9sdmVkIHdpdGggdGhlIGV4Y2VwdGlvbi4KIiIiCgojIExvbmcgb3B0aW9uIHN1cHBvcnQgYWRkZWQgYnkgTGFycyBXaXJ6ZW5pdXMgPGxpd0Bpa2kuZmk+LgojCiMgR2Vycml0IEhvbGwgPGdlcnJpdEBubC5saW51eC5vcmc+IG1vdmVkIHRoZSBzdHJpbmctYmFzZWQgZXhjZXB0aW9ucwojIHRvIGNsYXNzLWJhc2VkIGV4Y2VwdGlvbnMuCiMKIyBQZXRlciDDhXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4gYWRkZWQgZ251X2dldG9wdCgpLgojCiMgVE9ETyBmb3IgZ251X2dldG9wdCgpOgojCiMgLSBHTlUgZ2V0b3B0X2xvbmdfb25seSBtZWNoYW5pc20KIyAtIGFsbG93IHRoZSBjYWxsZXIgdG8gc3BlY2lmeSBvcmRlcmluZwojIC0gUkVUVVJOX0lOX09SREVSIG9wdGlvbgojIC0gR05VIGV4dGVuc2lvbiB3aXRoICctJyBhcyBmaXJzdCBjaGFyYWN0ZXIgb2Ygb3B0aW9uIHN0cmluZwojIC0gb3B0aW9uYWwgYXJndW1lbnRzLCBzcGVjaWZpZWQgYnkgZG91YmxlIGNvbG9ucwojIC0gYW4gb3B0aW9uIHN0cmluZyB3aXRoIGEgVyBmb2xsb3dlZCBieSBzZW1pY29sb24gc2hvdWxkCiMgICB0cmVhdCAiLVcgZm9vIiBhcyAiLS1mb28iCgpfX2FsbF9fID0gWyJHZXRvcHRFcnJvciIsImVycm9yIiwiZ2V0b3B0IiwiZ251X2dldG9wdCJdCgppbXBvcnQgb3MKdHJ5OgogICAgZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0IGFzIF8KZXhjZXB0IEltcG9ydEVycm9yOgogICAgIyBCb290c3RyYXBwaW5nIFB5dGhvbjogZ2V0dGV4dCdzIGRlcGVuZGVuY2llcyBub3QgYnVpbHQgeWV0CiAgICBkZWYgXyhzKTogcmV0dXJuIHMKCmNsYXNzIEdldG9wdEVycm9yKEV4Y2VwdGlvbik6CiAgICBvcHQgPSAnJwogICAgbXNnID0gJycKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2csIG9wdD0nJyk6CiAgICAgICAgc2VsZi5tc2cgPSBtc2cKICAgICAgICBzZWxmLm9wdCA9IG9wdAogICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2csIG9wdCkKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5tc2cKCmVycm9yID0gR2V0b3B0RXJyb3IgIyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CgpkZWYgZ2V0b3B0KGFyZ3MsIHNob3J0b3B0cywgbG9uZ29wdHMgPSBbXSk6CiAgICAiIiJnZXRvcHQoYXJncywgb3B0aW9uc1ssIGxvbmdfb3B0aW9uc10pIC0+IG9wdHMsIGFyZ3MKCiAgICBQYXJzZXMgY29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIHBhcmFtZXRlciBsaXN0LiAgYXJncyBpcyB0aGUKICAgIGFyZ3VtZW50IGxpc3QgdG8gYmUgcGFyc2VkLCB3aXRob3V0IHRoZSBsZWFkaW5nIHJlZmVyZW5jZSB0byB0aGUKICAgIHJ1bm5pbmcgcHJvZ3JhbS4gIFR5cGljYWxseSwgdGhpcyBtZWFucyAic3lzLmFyZ3ZbMTpdIi4gIHNob3J0b3B0cwogICAgaXMgdGhlIHN0cmluZyBvZiBvcHRpb24gbGV0dGVycyB0aGF0IHRoZSBzY3JpcHQgd2FudHMgdG8KICAgIHJlY29nbml6ZSwgd2l0aCBvcHRpb25zIHRoYXQgcmVxdWlyZSBhbiBhcmd1bWVudCBmb2xsb3dlZCBieSBhCiAgICBjb2xvbiAoaS5lLiwgdGhlIHNhbWUgZm9ybWF0IHRoYXQgVW5peCBnZXRvcHQoKSB1c2VzKS4gIElmCiAgICBzcGVjaWZpZWQsIGxvbmdvcHRzIGlzIGEgbGlzdCBvZiBzdHJpbmdzIHdpdGggdGhlIG5hbWVzIG9mIHRoZQogICAgbG9uZyBvcHRpb25zIHdoaWNoIHNob3VsZCBiZSBzdXBwb3J0ZWQuICBUaGUgbGVhZGluZyAnLS0nCiAgICBjaGFyYWN0ZXJzIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIG9wdGlvbiBuYW1lLiAgT3B0aW9ucwogICAgd2hpY2ggcmVxdWlyZSBhbiBhcmd1bWVudCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYW4gZXF1YWwgc2lnbgogICAgKCc9JykuCgogICAgVGhlIHJldHVybiB2YWx1ZSBjb25zaXN0cyBvZiB0d28gZWxlbWVudHM6IHRoZSBmaXJzdCBpcyBhIGxpc3Qgb2YKICAgIChvcHRpb24sIHZhbHVlKSBwYWlyczsgdGhlIHNlY29uZCBpcyB0aGUgbGlzdCBvZiBwcm9ncmFtIGFyZ3VtZW50cwogICAgbGVmdCBhZnRlciB0aGUgb3B0aW9uIGxpc3Qgd2FzIHN0cmlwcGVkICh0aGlzIGlzIGEgdHJhaWxpbmcgc2xpY2UKICAgIG9mIHRoZSBmaXJzdCBhcmd1bWVudCkuICBFYWNoIG9wdGlvbi1hbmQtdmFsdWUgcGFpciByZXR1cm5lZCBoYXMKICAgIHRoZSBvcHRpb24gYXMgaXRzIGZpcnN0IGVsZW1lbnQsIHByZWZpeGVkIHdpdGggYSBoeXBoZW4gKGUuZy4sCiAgICAnLXgnKSwgYW5kIHRoZSBvcHRpb24gYXJndW1lbnQgYXMgaXRzIHNlY29uZCBlbGVtZW50LCBvciBhbiBlbXB0eQogICAgc3RyaW5nIGlmIHRoZSBvcHRpb24gaGFzIG5vIGFyZ3VtZW50LiAgVGhlIG9wdGlvbnMgb2NjdXIgaW4gdGhlCiAgICBsaXN0IGluIHRoZSBzYW1lIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBmb3VuZCwgdGh1cyBhbGxvd2luZwogICAgbXVsdGlwbGUgb2NjdXJyZW5jZXMuICBMb25nIGFuZCBzaG9ydCBvcHRpb25zIG1heSBiZSBtaXhlZC4KCiAgICAiIiIKCiAgICBvcHRzID0gW10KICAgIGlmIHR5cGUobG9uZ29wdHMpID09IHR5cGUoIiIpOgogICAgICAgIGxvbmdvcHRzID0gW2xvbmdvcHRzXQogICAgZWxzZToKICAgICAgICBsb25nb3B0cyA9IGxpc3QobG9uZ29wdHMpCiAgICB3aGlsZSBhcmdzIGFuZCBhcmdzWzBdLnN0YXJ0c3dpdGgoJy0nKSBhbmQgYXJnc1swXSAhPSAnLSc6CiAgICAgICAgaWYgYXJnc1swXSA9PSAnLS0nOgogICAgICAgICAgICBhcmdzID0gYXJnc1sxOl0KICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBhcmdzWzBdLnN0YXJ0c3dpdGgoJy0tJyk6CiAgICAgICAgICAgIG9wdHMsIGFyZ3MgPSBkb19sb25ncyhvcHRzLCBhcmdzWzBdWzI6XSwgbG9uZ29wdHMsIGFyZ3NbMTpdKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9wdHMsIGFyZ3MgPSBkb19zaG9ydHMob3B0cywgYXJnc1swXVsxOl0sIHNob3J0b3B0cywgYXJnc1sxOl0pCgogICAgcmV0dXJuIG9wdHMsIGFyZ3MKCmRlZiBnbnVfZ2V0b3B0KGFyZ3MsIHNob3J0b3B0cywgbG9uZ29wdHMgPSBbXSk6CiAgICAiIiJnZXRvcHQoYXJncywgb3B0aW9uc1ssIGxvbmdfb3B0aW9uc10pIC0+IG9wdHMsIGFyZ3MKCiAgICBUaGlzIGZ1bmN0aW9uIHdvcmtzIGxpa2UgZ2V0b3B0KCksIGV4Y2VwdCB0aGF0IEdOVSBzdHlsZSBzY2FubmluZwogICAgbW9kZSBpcyB1c2VkIGJ5IGRlZmF1bHQuIFRoaXMgbWVhbnMgdGhhdCBvcHRpb24gYW5kIG5vbi1vcHRpb24KICAgIGFyZ3VtZW50cyBtYXkgYmUgaW50ZXJtaXhlZC4gVGhlIGdldG9wdCgpIGZ1bmN0aW9uIHN0b3BzCiAgICBwcm9jZXNzaW5nIG9wdGlvbnMgYXMgc29vbiBhcyBhIG5vbi1vcHRpb24gYXJndW1lbnQgaXMKICAgIGVuY291bnRlcmVkLgoKICAgIElmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIG9wdGlvbiBzdHJpbmcgaXMgYCsnLCBvciBpZiB0aGUKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIFBPU0lYTFlfQ09SUkVDVCBpcyBzZXQsIHRoZW4gb3B0aW9uCiAgICBwcm9jZXNzaW5nIHN0b3BzIGFzIHNvb24gYXMgYSBub24tb3B0aW9uIGFyZ3VtZW50IGlzIGVuY291bnRlcmVkLgoKICAgICIiIgoKICAgIG9wdHMgPSBbXQogICAgcHJvZ19hcmdzID0gW10KICAgIGlmIGlzaW5zdGFuY2UobG9uZ29wdHMsIHN0cik6CiAgICAgICAgbG9uZ29wdHMgPSBbbG9uZ29wdHNdCiAgICBlbHNlOgogICAgICAgIGxvbmdvcHRzID0gbGlzdChsb25nb3B0cykKCiAgICAjIEFsbG93IG9wdGlvbnMgYWZ0ZXIgbm9uLW9wdGlvbiBhcmd1bWVudHM/CiAgICBpZiBzaG9ydG9wdHMuc3RhcnRzd2l0aCgnKycpOgogICAgICAgIHNob3J0b3B0cyA9IHNob3J0b3B0c1sxOl0KICAgICAgICBhbGxfb3B0aW9uc19maXJzdCA9IFRydWUKICAgIGVsaWYgb3MuZW52aXJvbi5nZXQoIlBPU0lYTFlfQ09SUkVDVCIpOgogICAgICAgIGFsbF9vcHRpb25zX2ZpcnN0ID0gVHJ1ZQogICAgZWxzZToKICAgICAgICBhbGxfb3B0aW9uc19maXJzdCA9IEZhbHNlCgogICAgd2hpbGUgYXJnczoKICAgICAgICBpZiBhcmdzWzBdID09ICctLSc6CiAgICAgICAgICAgIHByb2dfYXJncyArPSBhcmdzWzE6XQogICAgICAgICAgICBicmVhawoKICAgICAgICBpZiBhcmdzWzBdWzoyXSA9PSAnLS0nOgogICAgICAgICAgICBvcHRzLCBhcmdzID0gZG9fbG9uZ3Mob3B0cywgYXJnc1swXVsyOl0sIGxvbmdvcHRzLCBhcmdzWzE6XSkKICAgICAgICBlbGlmIGFyZ3NbMF1bOjFdID09ICctJyBhbmQgYXJnc1swXSAhPSAnLSc6CiAgICAgICAgICAgIG9wdHMsIGFyZ3MgPSBkb19zaG9ydHMob3B0cywgYXJnc1swXVsxOl0sIHNob3J0b3B0cywgYXJnc1sxOl0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgYWxsX29wdGlvbnNfZmlyc3Q6CiAgICAgICAgICAgICAgICBwcm9nX2FyZ3MgKz0gYXJncwogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByb2dfYXJncy5hcHBlbmQoYXJnc1swXSkKICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmdzWzE6XQoKICAgIHJldHVybiBvcHRzLCBwcm9nX2FyZ3MKCmRlZiBkb19sb25ncyhvcHRzLCBvcHQsIGxvbmdvcHRzLCBhcmdzKToKICAgIHRyeToKICAgICAgICBpID0gb3B0LmluZGV4KCc9JykKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIG9wdGFyZyA9IE5vbmUKICAgIGVsc2U6CiAgICAgICAgb3B0LCBvcHRhcmcgPSBvcHRbOmldLCBvcHRbaSsxOl0KCiAgICBoYXNfYXJnLCBvcHQgPSBsb25nX2hhc19hcmdzKG9wdCwgbG9uZ29wdHMpCiAgICBpZiBoYXNfYXJnOgogICAgICAgIGlmIG9wdGFyZyBpcyBOb25lOgogICAgICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIHJlcXVpcmVzIGFyZ3VtZW50JykgJSBvcHQsIG9wdCkKICAgICAgICAgICAgb3B0YXJnLCBhcmdzID0gYXJnc1swXSwgYXJnc1sxOl0KICAgIGVsaWYgb3B0YXJnIGlzIG5vdCBOb25lOgogICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIG11c3Qgbm90IGhhdmUgYW4gYXJndW1lbnQnKSAlIG9wdCwgb3B0KQogICAgb3B0cy5hcHBlbmQoKCctLScgKyBvcHQsIG9wdGFyZyBvciAnJykpCiAgICByZXR1cm4gb3B0cywgYXJncwoKIyBSZXR1cm46CiMgICBoYXNfYXJnPwojICAgZnVsbCBvcHRpb24gbmFtZQpkZWYgbG9uZ19oYXNfYXJncyhvcHQsIGxvbmdvcHRzKToKICAgIHBvc3NpYmlsaXRpZXMgPSBbbyBmb3IgbyBpbiBsb25nb3B0cyBpZiBvLnN0YXJ0c3dpdGgob3B0KV0KICAgIGlmIG5vdCBwb3NzaWJpbGl0aWVzOgogICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIG5vdCByZWNvZ25pemVkJykgJSBvcHQsIG9wdCkKICAgICMgSXMgdGhlcmUgYW4gZXhhY3QgbWF0Y2g/CiAgICBpZiBvcHQgaW4gcG9zc2liaWxpdGllczoKICAgICAgICByZXR1cm4gRmFsc2UsIG9wdAogICAgZWxpZiBvcHQgKyAnPScgaW4gcG9zc2liaWxpdGllczoKICAgICAgICByZXR1cm4gVHJ1ZSwgb3B0CiAgICAjIE5vIGV4YWN0IG1hdGNoLCBzbyBiZXR0ZXIgYmUgdW5pcXVlLgogICAgaWYgbGVuKHBvc3NpYmlsaXRpZXMpID4gMToKICAgICAgICAjIFhYWCBzaW5jZSBwb3NzaWJpbGl0aWVzIGNvbnRhaW5zIGFsbCB2YWxpZCBjb250aW51YXRpb25zLCBtaWdodCBiZQogICAgICAgICMgbmljZSB0byB3b3JrIHRoZW0gaW50byB0aGUgZXJyb3IgbXNnCiAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0tJXMgbm90IGEgdW5pcXVlIHByZWZpeCcpICUgb3B0LCBvcHQpCiAgICBhc3NlcnQgbGVuKHBvc3NpYmlsaXRpZXMpID09IDEKICAgIHVuaXF1ZV9tYXRjaCA9IHBvc3NpYmlsaXRpZXNbMF0KICAgIGhhc19hcmcgPSB1bmlxdWVfbWF0Y2guZW5kc3dpdGgoJz0nKQogICAgaWYgaGFzX2FyZzoKICAgICAgICB1bmlxdWVfbWF0Y2ggPSB1bmlxdWVfbWF0Y2hbOi0xXQogICAgcmV0dXJuIGhhc19hcmcsIHVuaXF1ZV9tYXRjaAoKZGVmIGRvX3Nob3J0cyhvcHRzLCBvcHRzdHJpbmcsIHNob3J0b3B0cywgYXJncyk6CiAgICB3aGlsZSBvcHRzdHJpbmcgIT0gJyc6CiAgICAgICAgb3B0LCBvcHRzdHJpbmcgPSBvcHRzdHJpbmdbMF0sIG9wdHN0cmluZ1sxOl0KICAgICAgICBpZiBzaG9ydF9oYXNfYXJnKG9wdCwgc2hvcnRvcHRzKToKICAgICAgICAgICAgaWYgb3B0c3RyaW5nID09ICcnOgogICAgICAgICAgICAgICAgaWYgbm90IGFyZ3M6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0lcyByZXF1aXJlcyBhcmd1bWVudCcpICUgb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdCkKICAgICAgICAgICAgICAgIG9wdHN0cmluZywgYXJncyA9IGFyZ3NbMF0sIGFyZ3NbMTpdCiAgICAgICAgICAgIG9wdGFyZywgb3B0c3RyaW5nID0gb3B0c3RyaW5nLCAnJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9wdGFyZyA9ICcnCiAgICAgICAgb3B0cy5hcHBlbmQoKCctJyArIG9wdCwgb3B0YXJnKSkKICAgIHJldHVybiBvcHRzLCBhcmdzCgpkZWYgc2hvcnRfaGFzX2FyZyhvcHQsIHNob3J0b3B0cyk6CiAgICBmb3IgaSBpbiByYW5nZShsZW4oc2hvcnRvcHRzKSk6CiAgICAgICAgaWYgb3B0ID09IHNob3J0b3B0c1tpXSAhPSAnOic6CiAgICAgICAgICAgIHJldHVybiBzaG9ydG9wdHMuc3RhcnRzd2l0aCgnOicsIGkrMSkKICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtJXMgbm90IHJlY29nbml6ZWQnKSAlIG9wdCwgb3B0KQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIGltcG9ydCBzeXMKICAgIHByaW50KGdldG9wdChzeXMuYXJndlsxOl0sICJhOmIiLCBbImFscGhhPSIsICJiZXRhIl0pKQpQSwMEFAAAAAAAAiCjVqovYHJmFwAAZhcAAAoAAABnZXRwYXNzLnB5IiIiVXRpbGl0aWVzIHRvIGdldCBhIHBhc3N3b3JkIGFuZC9vciB0aGUgY3VycmVudCB1c2VyIG5hbWUuCgpnZXRwYXNzKHByb21wdFssIHN0cmVhbV0pIC0gUHJvbXB0IGZvciBhIHBhc3N3b3JkLCB3aXRoIGVjaG8gdHVybmVkIG9mZi4KZ2V0dXNlcigpIC0gR2V0IHRoZSB1c2VyIG5hbWUgZnJvbSB0aGUgZW52aXJvbm1lbnQgb3IgcGFzc3dvcmQgZGF0YWJhc2UuCgpHZXRQYXNzV2FybmluZyAtIFRoaXMgVXNlcldhcm5pbmcgaXMgaXNzdWVkIHdoZW4gZ2V0cGFzcygpIGNhbm5vdCBwcmV2ZW50CiAgICAgICAgICAgICAgICAgZWNob2luZyBvZiB0aGUgcGFzc3dvcmQgY29udGVudHMgd2hpbGUgcmVhZGluZy4KCk9uIFdpbmRvd3MsIHRoZSBtc3ZjcnQgbW9kdWxlIHdpbGwgYmUgdXNlZC4KCiIiIgoKIyBBdXRob3JzOiBQaWVycyBMYXVkZXIgKG9yaWdpbmFsKQojICAgICAgICAgIEd1aWRvIHZhbiBSb3NzdW0gKFdpbmRvd3Mgc3VwcG9ydCBhbmQgY2xlYW51cCkKIyAgICAgICAgICBHcmVnb3J5IFAuIFNtaXRoICh0dHkgc3VwcG9ydCAmIEdldFBhc3NXYXJuaW5nKQoKaW1wb3J0IGNvbnRleHRsaWIKaW1wb3J0IGlvCmltcG9ydCBvcwppbXBvcnQgc3lzCmltcG9ydCB3YXJuaW5ncwoKX19hbGxfXyA9IFsiZ2V0cGFzcyIsImdldHVzZXIiLCJHZXRQYXNzV2FybmluZyJdCgoKY2xhc3MgR2V0UGFzc1dhcm5pbmcoVXNlcldhcm5pbmcpOiBwYXNzCgoKZGVmIHVuaXhfZ2V0cGFzcyhwcm9tcHQ9J1Bhc3N3b3JkOiAnLCBzdHJlYW09Tm9uZSk6CiAgICAiIiJQcm9tcHQgZm9yIGEgcGFzc3dvcmQsIHdpdGggZWNobyB0dXJuZWQgb2ZmLgoKICAgIEFyZ3M6CiAgICAgIHByb21wdDogV3JpdHRlbiBvbiBzdHJlYW0gdG8gYXNrIGZvciB0aGUgaW5wdXQuICBEZWZhdWx0OiAnUGFzc3dvcmQ6ICcKICAgICAgc3RyZWFtOiBBIHdyaXRhYmxlIGZpbGUgb2JqZWN0IHRvIGRpc3BsYXkgdGhlIHByb21wdC4gIERlZmF1bHRzIHRvCiAgICAgICAgICAgICAgdGhlIHR0eS4gIElmIG5vIHR0eSBpcyBhdmFpbGFibGUgZGVmYXVsdHMgdG8gc3lzLnN0ZGVyci4KICAgIFJldHVybnM6CiAgICAgIFRoZSBzZUtyM3QgaW5wdXQuCiAgICBSYWlzZXM6CiAgICAgIEVPRkVycm9yOiBJZiBvdXIgaW5wdXQgdHR5IG9yIHN0ZGluIHdhcyBjbG9zZWQuCiAgICAgIEdldFBhc3NXYXJuaW5nOiBXaGVuIHdlIHdlcmUgdW5hYmxlIHRvIHR1cm4gZWNobyBvZmYgb24gdGhlIGlucHV0LgoKICAgIEFsd2F5cyByZXN0b3JlcyB0ZXJtaW5hbCBzZXR0aW5ncyBiZWZvcmUgcmV0dXJuaW5nLgogICAgIiIiCiAgICBwYXNzd2QgPSBOb25lCiAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIEFsd2F5cyB0cnkgcmVhZGluZyBhbmQgd3JpdGluZyBkaXJlY3RseSBvbiB0aGUgdHR5IGZpcnN0LgogICAgICAgICAgICBmZCA9IG9zLm9wZW4oJy9kZXYvdHR5Jywgb3MuT19SRFdSfG9zLk9fTk9DVFRZKQogICAgICAgICAgICB0dHkgPSBpby5GaWxlSU8oZmQsICd3KycpCiAgICAgICAgICAgIHN0YWNrLmVudGVyX2NvbnRleHQodHR5KQogICAgICAgICAgICBpbnB1dCA9IGlvLlRleHRJT1dyYXBwZXIodHR5KQogICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KGlucHV0KQogICAgICAgICAgICBpZiBub3Qgc3RyZWFtOgogICAgICAgICAgICAgICAgc3RyZWFtID0gaW5wdXQKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIyBJZiB0aGF0IGZhaWxzLCBzZWUgaWYgc3RkaW4gY2FuIGJlIGNvbnRyb2xsZWQuCiAgICAgICAgICAgIHN0YWNrLmNsb3NlKCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZmQgPSBzeXMuc3RkaW4uZmlsZW5vKCkKICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICBmZCA9IE5vbmUKICAgICAgICAgICAgICAgIHBhc3N3ZCA9IGZhbGxiYWNrX2dldHBhc3MocHJvbXB0LCBzdHJlYW0pCiAgICAgICAgICAgIGlucHV0ID0gc3lzLnN0ZGluCiAgICAgICAgICAgIGlmIG5vdCBzdHJlYW06CiAgICAgICAgICAgICAgICBzdHJlYW0gPSBzeXMuc3RkZXJyCgogICAgICAgIGlmIGZkIGlzIG5vdCBOb25lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBvbGQgPSB0ZXJtaW9zLnRjZ2V0YXR0cihmZCkgICAgICMgYSBjb3B5IHRvIHNhdmUKICAgICAgICAgICAgICAgIG5ldyA9IG9sZFs6XQogICAgICAgICAgICAgICAgbmV3WzNdICY9IH50ZXJtaW9zLkVDSE8gICMgMyA9PSAnbGZsYWdzJwogICAgICAgICAgICAgICAgdGNzZXRhdHRyX2ZsYWdzID0gdGVybWlvcy5UQ1NBRkxVU0gKICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIodGVybWlvcywgJ1RDU0FTT0ZUJyk6CiAgICAgICAgICAgICAgICAgICAgdGNzZXRhdHRyX2ZsYWdzIHw9IHRlcm1pb3MuVENTQVNPRlQKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICB0ZXJtaW9zLnRjc2V0YXR0cihmZCwgdGNzZXRhdHRyX2ZsYWdzLCBuZXcpCiAgICAgICAgICAgICAgICAgICAgcGFzc3dkID0gX3Jhd19pbnB1dChwcm9tcHQsIHN0cmVhbSwgaW5wdXQ9aW5wdXQpCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0Y3NldGF0dHJfZmxhZ3MsIG9sZCkKICAgICAgICAgICAgICAgICAgICBzdHJlYW0uZmx1c2goKSAgIyBpc3N1ZTcyMDgKICAgICAgICAgICAgZXhjZXB0IHRlcm1pb3MuZXJyb3I6CiAgICAgICAgICAgICAgICBpZiBwYXNzd2QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIyBfcmF3X2lucHV0IHN1Y2NlZWRlZC4gIFRoZSBmaW5hbCB0Y3NldGF0dHIgZmFpbGVkLiAgUmVyYWlzZQogICAgICAgICAgICAgICAgICAgICMgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSB0ZXJtaW5hbCBpbiBhbiB1bmtub3duIHN0YXRlLgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAjIFdlIGNhbid0IGNvbnRyb2wgdGhlIHR0eSBvciBzdGRpbi4gIEdpdmUgdXAgYW5kIHVzZSBub3JtYWwgSU8uCiAgICAgICAgICAgICAgICAjIGZhbGxiYWNrX2dldHBhc3MoKSByYWlzZXMgYW4gYXBwcm9wcmlhdGUgd2FybmluZy4KICAgICAgICAgICAgICAgIGlmIHN0cmVhbSBpcyBub3QgaW5wdXQ6CiAgICAgICAgICAgICAgICAgICAgIyBjbGVhbiB1cCB1bnVzZWQgZmlsZSBvYmplY3RzIGJlZm9yZSBibG9ja2luZwogICAgICAgICAgICAgICAgICAgIHN0YWNrLmNsb3NlKCkKICAgICAgICAgICAgICAgIHBhc3N3ZCA9IGZhbGxiYWNrX2dldHBhc3MocHJvbXB0LCBzdHJlYW0pCgogICAgICAgIHN0cmVhbS53cml0ZSgnXG4nKQogICAgICAgIHJldHVybiBwYXNzd2QKCgpkZWYgd2luX2dldHBhc3MocHJvbXB0PSdQYXNzd29yZDogJywgc3RyZWFtPU5vbmUpOgogICAgIiIiUHJvbXB0IGZvciBwYXNzd29yZCB3aXRoIGVjaG8gb2ZmLCB1c2luZyBXaW5kb3dzIGdldHdjaCgpLiIiIgogICAgaWYgc3lzLnN0ZGluIGlzIG5vdCBzeXMuX19zdGRpbl9fOgogICAgICAgIHJldHVybiBmYWxsYmFja19nZXRwYXNzKHByb21wdCwgc3RyZWFtKQoKICAgIGZvciBjIGluIHByb21wdDoKICAgICAgICBtc3ZjcnQucHV0d2NoKGMpCiAgICBwdyA9ICIiCiAgICB3aGlsZSAxOgogICAgICAgIGMgPSBtc3ZjcnQuZ2V0d2NoKCkKICAgICAgICBpZiBjID09ICdccicgb3IgYyA9PSAnXG4nOgogICAgICAgICAgICBicmVhawogICAgICAgIGlmIGMgPT0gJ1wwMDMnOgogICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAogICAgICAgIGlmIGMgPT0gJ1xiJzoKICAgICAgICAgICAgcHcgPSBwd1s6LTFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHcgPSBwdyArIGMKICAgIG1zdmNydC5wdXR3Y2goJ1xyJykKICAgIG1zdmNydC5wdXR3Y2goJ1xuJykKICAgIHJldHVybiBwdwoKCmRlZiBmYWxsYmFja19nZXRwYXNzKHByb21wdD0nUGFzc3dvcmQ6ICcsIHN0cmVhbT1Ob25lKToKICAgIHdhcm5pbmdzLndhcm4oIkNhbiBub3QgY29udHJvbCBlY2hvIG9uIHRoZSB0ZXJtaW5hbC4iLCBHZXRQYXNzV2FybmluZywKICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQogICAgaWYgbm90IHN0cmVhbToKICAgICAgICBzdHJlYW0gPSBzeXMuc3RkZXJyCiAgICBwcmludCgiV2FybmluZzogUGFzc3dvcmQgaW5wdXQgbWF5IGJlIGVjaG9lZC4iLCBmaWxlPXN0cmVhbSkKICAgIHJldHVybiBfcmF3X2lucHV0KHByb21wdCwgc3RyZWFtKQoKCmRlZiBfcmF3X2lucHV0KHByb21wdD0iIiwgc3RyZWFtPU5vbmUsIGlucHV0PU5vbmUpOgogICAgIyBUaGlzIGRvZXNuJ3Qgc2F2ZSB0aGUgc3RyaW5nIGluIHRoZSBHTlUgcmVhZGxpbmUgaGlzdG9yeS4KICAgIGlmIG5vdCBzdHJlYW06CiAgICAgICAgc3RyZWFtID0gc3lzLnN0ZGVycgogICAgaWYgbm90IGlucHV0OgogICAgICAgIGlucHV0ID0gc3lzLnN0ZGluCiAgICBwcm9tcHQgPSBzdHIocHJvbXB0KQogICAgaWYgcHJvbXB0OgogICAgICAgIHRyeToKICAgICAgICAgICAgc3RyZWFtLndyaXRlKHByb21wdCkKICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAjIFVzZSByZXBsYWNlIGVycm9yIGhhbmRsZXIgdG8gZ2V0IGFzIG11Y2ggYXMgcG9zc2libGUgcHJpbnRlZC4KICAgICAgICAgICAgcHJvbXB0ID0gcHJvbXB0LmVuY29kZShzdHJlYW0uZW5jb2RpbmcsICdyZXBsYWNlJykKICAgICAgICAgICAgcHJvbXB0ID0gcHJvbXB0LmRlY29kZShzdHJlYW0uZW5jb2RpbmcpCiAgICAgICAgICAgIHN0cmVhbS53cml0ZShwcm9tcHQpCiAgICAgICAgc3RyZWFtLmZsdXNoKCkKICAgICMgTk9URTogVGhlIFB5dGhvbiBDIEFQSSBjYWxscyBmbG9ja2ZpbGUoKSAoYW5kIHVubG9jaykgZHVyaW5nIHJlYWRsaW5lLgogICAgbGluZSA9IGlucHV0LnJlYWRsaW5lKCkKICAgIGlmIG5vdCBsaW5lOgogICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICBpZiBsaW5lWy0xXSA9PSAnXG4nOgogICAgICAgIGxpbmUgPSBsaW5lWzotMV0KICAgIHJldHVybiBsaW5lCgoKZGVmIGdldHVzZXIoKToKICAgICIiIkdldCB0aGUgdXNlcm5hbWUgZnJvbSB0aGUgZW52aXJvbm1lbnQgb3IgcGFzc3dvcmQgZGF0YWJhc2UuCgogICAgRmlyc3QgdHJ5IHZhcmlvdXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLCB0aGVuIHRoZSBwYXNzd29yZAogICAgZGF0YWJhc2UuICBUaGlzIHdvcmtzIG9uIFdpbmRvd3MgYXMgbG9uZyBhcyBVU0VSTkFNRSBpcyBzZXQuCgogICAgIiIiCgogICAgZm9yIG5hbWUgaW4gKCdMT0dOQU1FJywgJ1VTRVInLCAnTE5BTUUnLCAnVVNFUk5BTUUnKToKICAgICAgICB1c2VyID0gb3MuZW52aXJvbi5nZXQobmFtZSkKICAgICAgICBpZiB1c2VyOgogICAgICAgICAgICByZXR1cm4gdXNlcgoKICAgICMgSWYgdGhpcyBmYWlscywgdGhlIGV4Y2VwdGlvbiB3aWxsICJleHBsYWluIiB3aHkKICAgIGltcG9ydCBwd2QKICAgIHJldHVybiBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpWzBdCgojIEJpbmQgdGhlIG5hbWUgZ2V0cGFzcyB0byB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24KdHJ5OgogICAgaW1wb3J0IHRlcm1pb3MKICAgICMgaXQncyBwb3NzaWJsZSB0aGVyZSBpcyBhbiBpbmNvbXBhdGlibGUgdGVybWlvcyBmcm9tIHRoZQogICAgIyBNY01pbGxhbiBJbnN0YWxsZXIsIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgVU5JWC1jb21wYXRpYmxlIHRlcm1pb3MKICAgIHRlcm1pb3MudGNnZXRhdHRyLCB0ZXJtaW9zLnRjc2V0YXR0cgpleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICB0cnk6CiAgICAgICAgaW1wb3J0IG1zdmNydAogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIGdldHBhc3MgPSBmYWxsYmFja19nZXRwYXNzCiAgICBlbHNlOgogICAgICAgIGdldHBhc3MgPSB3aW5fZ2V0cGFzcwplbHNlOgogICAgZ2V0cGFzcyA9IHVuaXhfZ2V0cGFzcwpQSwMEFAAAAAAAAiCjVqR595CLUQAAi1EAAAoAAABnZXR0ZXh0LnB5IiIiSW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIGxvY2FsaXphdGlvbiBzdXBwb3J0LgoKVGhpcyBtb2R1bGUgcHJvdmlkZXMgaW50ZXJuYXRpb25hbGl6YXRpb24gKEkxOE4pIGFuZCBsb2NhbGl6YXRpb24gKEwxME4pCnN1cHBvcnQgZm9yIHlvdXIgUHl0aG9uIHByb2dyYW1zIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZhY2UgdG8gdGhlIEdOVSBnZXR0ZXh0Cm1lc3NhZ2UgY2F0YWxvZyBsaWJyYXJ5LgoKSTE4TiByZWZlcnMgdG8gdGhlIG9wZXJhdGlvbiBieSB3aGljaCBhIHByb2dyYW0gaXMgbWFkZSBhd2FyZSBvZiBtdWx0aXBsZQpsYW5ndWFnZXMuICBMMTBOIHJlZmVycyB0byB0aGUgYWRhcHRhdGlvbiBvZiB5b3VyIHByb2dyYW0sIG9uY2UKaW50ZXJuYXRpb25hbGl6ZWQsIHRvIHRoZSBsb2NhbCBsYW5ndWFnZSBhbmQgY3VsdHVyYWwgaGFiaXRzLgoKIiIiCgojIFRoaXMgbW9kdWxlIHJlcHJlc2VudHMgdGhlIGludGVncmF0aW9uIG9mIHdvcmssIGNvbnRyaWJ1dGlvbnMsIGZlZWRiYWNrLCBhbmQKIyBzdWdnZXN0aW9ucyBmcm9tIHRoZSBmb2xsb3dpbmcgcGVvcGxlOgojCiMgTWFydGluIHZvbiBMb2V3aXMsIHdobyB3cm90ZSB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdW5kZXJseWluZwojIEMtYmFzZWQgbGliaW50bG1vZHVsZSAobGF0ZXIgcmVuYW1lZCBfZ2V0dGV4dCksIGFsb25nIHdpdGggYSBza2VsZXRhbAojIGdldHRleHQucHkgaW1wbGVtZW50YXRpb24uCiMKIyBQZXRlciBGdW5rLCB3aG8gd3JvdGUgZmludGwucHksIGEgZmFpcmx5IGNvbXBsZXRlIHdyYXBwZXIgYXJvdW5kIGludGxtb2R1bGUsCiMgd2hpY2ggYWxzbyBpbmNsdWRlZCBhIHB1cmUtUHl0aG9uIGltcGxlbWVudGF0aW9uIHRvIHJlYWQgLm1vIGZpbGVzIGlmCiMgaW50bG1vZHVsZSB3YXNuJ3QgYXZhaWxhYmxlLgojCiMgSmFtZXMgSGVuc3RyaWRnZSwgd2hvIGFsc28gd3JvdGUgYSBnZXR0ZXh0LnB5IG1vZHVsZSwgd2hpY2ggaGFzIHNvbWUKIyBpbnRlcmVzdGluZywgYnV0IGN1cnJlbnRseSB1bnN1cHBvcnRlZCBleHBlcmltZW50YWwgZmVhdHVyZXM6IHRoZSBub3Rpb24gb2YKIyBhIENhdGFsb2cgY2xhc3MgYW5kIGluc3RhbmNlcywgYW5kIHRoZSBhYmlsaXR5IHRvIGFkZCB0byBhIGNhdGFsb2cgZmlsZSB2aWEKIyBhIFB5dGhvbiBBUEkuCiMKIyBCYXJyeSBXYXJzYXcgaW50ZWdyYXRlZCB0aGVzZSBtb2R1bGVzLCB3cm90ZSB0aGUgLmluc3RhbGwoKSBBUEkgYW5kIGNvZGUsCiMgYW5kIGNvbmZvcm1lZCBhbGwgQyBhbmQgUHl0aG9uIGNvZGUgdG8gUHl0aG9uJ3MgY29kaW5nIHN0YW5kYXJkcy4KIwojIEZyYW5jb2lzIFBpbmFyZCBhbmQgTWFyYy1BbmRyZSBMZW1idXJnIGFsc28gY29udHJpYnV0ZWQgdmFsdWFibHkgdG8gdGhpcwojIG1vZHVsZS4KIwojIEouIERhdmlkIEliYW5leiBpbXBsZW1lbnRlZCBwbHVyYWwgZm9ybXMuIEJydW5vIEhhaWJsZSBmaXhlZCBzb21lIGJ1Z3MuCiMKIyBUT0RPOgojIC0gTGF6eSBsb2FkaW5nIG9mIC5tbyBmaWxlcy4gIEN1cnJlbnRseSB0aGUgZW50aXJlIGNhdGFsb2cgaXMgbG9hZGVkIGludG8KIyAgIG1lbW9yeSwgYnV0IHRoYXQncyBwcm9iYWJseSBiYWQgZm9yIGxhcmdlIHRyYW5zbGF0ZWQgcHJvZ3JhbXMuICBJbnN0ZWFkLAojICAgdGhlIGxleGljYWwgc29ydCBvZiBvcmlnaW5hbCBzdHJpbmdzIGluIEdOVSAubW8gZmlsZXMgc2hvdWxkIGJlIGV4cGxvaXRlZAojICAgdG8gZG8gYmluYXJ5IHNlYXJjaGVzIGFuZCBsYXp5IGluaXRpYWxpemF0aW9ucy4gIE9yIHlvdSBtaWdodCB3YW50IHRvIHVzZQojICAgdGhlIHVuZG9jdW1lbnRlZCBkb3VibGUtaGFzaCBhbGdvcml0aG0gZm9yIC5tbyBmaWxlcyB3aXRoIGhhc2ggdGFibGVzLCBidXQKIyAgIHlvdSdsbCBuZWVkIHRvIHN0dWR5IHRoZSBHTlUgZ2V0dGV4dCBjb2RlIHRvIGRvIHRoaXMuCiMKIyAtIFN1cHBvcnQgU29sYXJpcyAubW8gZmlsZSBmb3JtYXRzLiAgVW5mb3J0dW5hdGVseSwgd2UndmUgYmVlbiB1bmFibGUgdG8KIyAgIGZpbmQgdGhpcyBmb3JtYXQgZG9jdW1lbnRlZCBhbnl3aGVyZS4KCgppbXBvcnQgb3MKaW1wb3J0IHJlCmltcG9ydCBzeXMKCgpfX2FsbF9fID0gWydOdWxsVHJhbnNsYXRpb25zJywgJ0dOVVRyYW5zbGF0aW9ucycsICdDYXRhbG9nJywKICAgICAgICAgICAnYmluZHRleHRkb21haW4nLCAnZmluZCcsICd0cmFuc2xhdGlvbicsICdpbnN0YWxsJywKICAgICAgICAgICAndGV4dGRvbWFpbicsICdkZ2V0dGV4dCcsICdkbmdldHRleHQnLCAnZ2V0dGV4dCcsCiAgICAgICAgICAgJ25nZXR0ZXh0JywgJ3BnZXR0ZXh0JywgJ2RwZ2V0dGV4dCcsICducGdldHRleHQnLAogICAgICAgICAgICdkbnBnZXR0ZXh0JwogICAgICAgICAgIF0KCl9kZWZhdWx0X2xvY2FsZWRpciA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICdzaGFyZScsICdsb2NhbGUnKQoKIyBFeHByZXNzaW9uIHBhcnNpbmcgZm9yIHBsdXJhbCBmb3JtIHNlbGVjdGlvbi4KIwojIFRoZSBnZXR0ZXh0IGxpYnJhcnkgc3VwcG9ydHMgYSBzbWFsbCBzdWJzZXQgb2YgQyBzeW50YXguICBUaGUgb25seQojIGluY29tcGF0aWJsZSBkaWZmZXJlbmNlIGlzIHRoYXQgaW50ZWdlciBsaXRlcmFscyBzdGFydGluZyB3aXRoIHplcm8gYXJlCiMgZGVjaW1hbC4KIwojIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2V0dGV4dC9tYW51YWwvZ2V0dGV4dC5odG1sI1BsdXJhbC1mb3JtcwojIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2dldHRleHQuZ2l0L3RyZWUvZ2V0dGV4dC1ydW50aW1lL2ludGwvcGx1cmFsLnkKCl90b2tlbl9wYXR0ZXJuID0gcmUuY29tcGlsZShyIiIiCiAgICAgICAgKD9QPFdISVRFU1BBQ0VTPlsgXHRdKykgICAgICAgICAgICAgICAgICAgIHwgIyBzcGFjZXMgYW5kIGhvcml6b250YWwgdGFicwogICAgICAgICg/UDxOVU1CRVI+WzAtOV0rXGIpICAgICAgICAgICAgICAgICAgICAgICB8ICMgZGVjaW1hbCBpbnRlZ2VyCiAgICAgICAgKD9QPE5BTUU+blxiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIyBvbmx5IG4gaXMgYWxsb3dlZAogICAgICAgICg/UDxQQVJFTlRIRVNJUz5bKCldKSAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgKD9QPE9QRVJBVE9SPlstKi8lKz86XXxbPjwhXT0/fD09fCYmfFx8XHwpIHwgIyAhLCAqLCAvLCAlLCArLCAtLCA8LCA+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgPD0sID49LCA9PSwgIT0sICYmLCB8fCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjID8gOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgYW5kIGJpdHdpc2Ugb3BzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub3QgYWxsb3dlZAogICAgICAgICg/UDxJTlZBTElEPlx3K3wuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW52YWxpZCB0b2tlbgogICAgIiIiLCByZS5WRVJCT1NFfHJlLkRPVEFMTCkKCgpkZWYgX3Rva2VuaXplKHBsdXJhbCk6CiAgICBmb3IgbW8gaW4gcmUuZmluZGl0ZXIoX3Rva2VuX3BhdHRlcm4sIHBsdXJhbCk6CiAgICAgICAga2luZCA9IG1vLmxhc3Rncm91cAogICAgICAgIGlmIGtpbmQgPT0gJ1dISVRFU1BBQ0VTJzoKICAgICAgICAgICAgY29udGludWUKICAgICAgICB2YWx1ZSA9IG1vLmdyb3VwKGtpbmQpCiAgICAgICAgaWYga2luZCA9PSAnSU5WQUxJRCc6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgdG9rZW4gaW4gcGx1cmFsIGZvcm06ICVzJyAlIHZhbHVlKQogICAgICAgIHlpZWxkIHZhbHVlCiAgICB5aWVsZCAnJwoKCmRlZiBfZXJyb3IodmFsdWUpOgogICAgaWYgdmFsdWU6CiAgICAgICAgcmV0dXJuIFZhbHVlRXJyb3IoJ3VuZXhwZWN0ZWQgdG9rZW4gaW4gcGx1cmFsIGZvcm06ICVzJyAlIHZhbHVlKQogICAgZWxzZToKICAgICAgICByZXR1cm4gVmFsdWVFcnJvcigndW5leHBlY3RlZCBlbmQgb2YgcGx1cmFsIGZvcm0nKQoKCl9iaW5hcnlfb3BzID0gKAogICAgKCd8fCcsKSwKICAgICgnJiYnLCksCiAgICAoJz09JywgJyE9JyksCiAgICAoJzwnLCAnPicsICc8PScsICc+PScpLAogICAgKCcrJywgJy0nKSwKICAgICgnKicsICcvJywgJyUnKSwKKQpfYmluYXJ5X29wcyA9IHtvcDogaSBmb3IgaSwgb3BzIGluIGVudW1lcmF0ZShfYmluYXJ5X29wcywgMSkgZm9yIG9wIGluIG9wc30KX2MycHlfb3BzID0geyd8fCc6ICdvcicsICcmJic6ICdhbmQnLCAnLyc6ICcvLyd9CgoKZGVmIF9wYXJzZSh0b2tlbnMsIHByaW9yaXR5PS0xKToKICAgIHJlc3VsdCA9ICcnCiAgICBuZXh0dG9rID0gbmV4dCh0b2tlbnMpCiAgICB3aGlsZSBuZXh0dG9rID09ICchJzoKICAgICAgICByZXN1bHQgKz0gJ25vdCAnCiAgICAgICAgbmV4dHRvayA9IG5leHQodG9rZW5zKQoKICAgIGlmIG5leHR0b2sgPT0gJygnOgogICAgICAgIHN1YiwgbmV4dHRvayA9IF9wYXJzZSh0b2tlbnMpCiAgICAgICAgcmVzdWx0ID0gJyVzKCVzKScgJSAocmVzdWx0LCBzdWIpCiAgICAgICAgaWYgbmV4dHRvayAhPSAnKSc6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VuYmFsYW5jZWQgcGFyZW50aGVzaXMgaW4gcGx1cmFsIGZvcm0nKQogICAgZWxpZiBuZXh0dG9rID09ICduJzoKICAgICAgICByZXN1bHQgPSAnJXMlcycgJSAocmVzdWx0LCBuZXh0dG9rKQogICAgZWxzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlID0gaW50KG5leHR0b2ssIDEwKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByYWlzZSBfZXJyb3IobmV4dHRvaykgZnJvbSBOb25lCiAgICAgICAgcmVzdWx0ID0gJyVzJWQnICUgKHJlc3VsdCwgdmFsdWUpCiAgICBuZXh0dG9rID0gbmV4dCh0b2tlbnMpCgogICAgaiA9IDEwMAogICAgd2hpbGUgbmV4dHRvayBpbiBfYmluYXJ5X29wczoKICAgICAgICBpID0gX2JpbmFyeV9vcHNbbmV4dHRva10KICAgICAgICBpZiBpIDwgcHJpb3JpdHk6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIyBCcmVhayBjaGFpbmVkIGNvbXBhcmlzb25zCiAgICAgICAgaWYgaSBpbiAoMywgNCkgYW5kIGogaW4gKDMsIDQpOiAgIyAnPT0nLCAnIT0nLCAnPCcsICc+JywgJzw9JywgJz49JwogICAgICAgICAgICByZXN1bHQgPSAnKCVzKScgJSByZXN1bHQKICAgICAgICAjIFJlcGxhY2Ugc29tZSBDIG9wZXJhdG9ycyBieSB0aGVpciBQeXRob24gZXF1aXZhbGVudHMKICAgICAgICBvcCA9IF9jMnB5X29wcy5nZXQobmV4dHRvaywgbmV4dHRvaykKICAgICAgICByaWdodCwgbmV4dHRvayA9IF9wYXJzZSh0b2tlbnMsIGkgKyAxKQogICAgICAgIHJlc3VsdCA9ICclcyAlcyAlcycgJSAocmVzdWx0LCBvcCwgcmlnaHQpCiAgICAgICAgaiA9IGkKICAgIGlmIGogPT0gcHJpb3JpdHkgPT0gNDogICMgJzwnLCAnPicsICc8PScsICc+PScKICAgICAgICByZXN1bHQgPSAnKCVzKScgJSByZXN1bHQKCiAgICBpZiBuZXh0dG9rID09ICc/JyBhbmQgcHJpb3JpdHkgPD0gMDoKICAgICAgICBpZl90cnVlLCBuZXh0dG9rID0gX3BhcnNlKHRva2VucywgMCkKICAgICAgICBpZiBuZXh0dG9rICE9ICc6JzoKICAgICAgICAgICAgcmFpc2UgX2Vycm9yKG5leHR0b2spCiAgICAgICAgaWZfZmFsc2UsIG5leHR0b2sgPSBfcGFyc2UodG9rZW5zKQogICAgICAgIHJlc3VsdCA9ICclcyBpZiAlcyBlbHNlICVzJyAlIChpZl90cnVlLCByZXN1bHQsIGlmX2ZhbHNlKQogICAgICAgIGlmIHByaW9yaXR5ID09IDA6CiAgICAgICAgICAgIHJlc3VsdCA9ICcoJXMpJyAlIHJlc3VsdAoKICAgIHJldHVybiByZXN1bHQsIG5leHR0b2sKCgpkZWYgX2FzX2ludChuKToKICAgIHRyeToKICAgICAgICBpID0gcm91bmQobikKICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdQbHVyYWwgdmFsdWUgbXVzdCBiZSBhbiBpbnRlZ2VyLCBnb3QgJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgKG4uX19jbGFzc19fLl9fbmFtZV9fLCkpIGZyb20gTm9uZQogICAgaW1wb3J0IHdhcm5pbmdzCiAgICB3YXJuaW5ncy53YXJuKCdQbHVyYWwgdmFsdWUgbXVzdCBiZSBhbiBpbnRlZ2VyLCBnb3QgJXMnICUKICAgICAgICAgICAgICAgICAgKG4uX19jbGFzc19fLl9fbmFtZV9fLCksCiAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgNCkKICAgIHJldHVybiBuCgoKZGVmIGMycHkocGx1cmFsKToKICAgICIiIkdldHMgYSBDIGV4cHJlc3Npb24gYXMgdXNlZCBpbiBQTyBmaWxlcyBmb3IgcGx1cmFsIGZvcm1zIGFuZCByZXR1cm5zIGEKICAgIFB5dGhvbiBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgYW4gZXF1aXZhbGVudCBleHByZXNzaW9uLgogICAgIiIiCgogICAgaWYgbGVuKHBsdXJhbCkgPiAxMDAwOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3BsdXJhbCBmb3JtIGV4cHJlc3Npb24gaXMgdG9vIGxvbmcnKQogICAgdHJ5OgogICAgICAgIHJlc3VsdCwgbmV4dHRvayA9IF9wYXJzZShfdG9rZW5pemUocGx1cmFsKSkKICAgICAgICBpZiBuZXh0dG9rOgogICAgICAgICAgICByYWlzZSBfZXJyb3IobmV4dHRvaykKCiAgICAgICAgZGVwdGggPSAwCiAgICAgICAgZm9yIGMgaW4gcmVzdWx0OgogICAgICAgICAgICBpZiBjID09ICcoJzoKICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKICAgICAgICAgICAgICAgIGlmIGRlcHRoID4gMjA6CiAgICAgICAgICAgICAgICAgICAgIyBQeXRob24gY29tcGlsZXIgbGltaXQgaXMgYWJvdXQgOTAuCiAgICAgICAgICAgICAgICAgICAgIyBUaGUgbW9zdCBjb21wbGV4IGV4YW1wbGUgaGFzIDIuCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigncGx1cmFsIGZvcm0gZXhwcmVzc2lvbiBpcyB0b28gY29tcGxleCcpCiAgICAgICAgICAgIGVsaWYgYyA9PSAnKSc6CiAgICAgICAgICAgICAgICBkZXB0aCAtPSAxCgogICAgICAgIG5zID0geydfYXNfaW50JzogX2FzX2ludH0KICAgICAgICBleGVjKCcnJ2lmIFRydWU6CiAgICAgICAgICAgIGRlZiBmdW5jKG4pOgogICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobiwgaW50KToKICAgICAgICAgICAgICAgICAgICBuID0gX2FzX2ludChuKQogICAgICAgICAgICAgICAgcmV0dXJuIGludCglcykKICAgICAgICAgICAgJycnICUgcmVzdWx0LCBucykKICAgICAgICByZXR1cm4gbnNbJ2Z1bmMnXQogICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yOgogICAgICAgICMgUmVjdXJzaW9uIGVycm9yIGNhbiBiZSByYWlzZWQgaW4gX3BhcnNlKCkgb3IgZXhlYygpLgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3BsdXJhbCBmb3JtIGV4cHJlc3Npb24gaXMgdG9vIGNvbXBsZXgnKQoKCmRlZiBfZXhwYW5kX2xhbmcobG9jKToKICAgIGltcG9ydCBsb2NhbGUKICAgIGxvYyA9IGxvY2FsZS5ub3JtYWxpemUobG9jKQogICAgQ09NUE9ORU5UX0NPREVTRVQgICA9IDEgPDwgMAogICAgQ09NUE9ORU5UX1RFUlJJVE9SWSA9IDEgPDwgMQogICAgQ09NUE9ORU5UX01PRElGSUVSICA9IDEgPDwgMgogICAgIyBzcGxpdCB1cCB0aGUgbG9jYWxlIGludG8gaXRzIGJhc2UgY29tcG9uZW50cwogICAgbWFzayA9IDAKICAgIHBvcyA9IGxvYy5maW5kKCdAJykKICAgIGlmIHBvcyA+PSAwOgogICAgICAgIG1vZGlmaWVyID0gbG9jW3BvczpdCiAgICAgICAgbG9jID0gbG9jWzpwb3NdCiAgICAgICAgbWFzayB8PSBDT01QT05FTlRfTU9ESUZJRVIKICAgIGVsc2U6CiAgICAgICAgbW9kaWZpZXIgPSAnJwogICAgcG9zID0gbG9jLmZpbmQoJy4nKQogICAgaWYgcG9zID49IDA6CiAgICAgICAgY29kZXNldCA9IGxvY1twb3M6XQogICAgICAgIGxvYyA9IGxvY1s6cG9zXQogICAgICAgIG1hc2sgfD0gQ09NUE9ORU5UX0NPREVTRVQKICAgIGVsc2U6CiAgICAgICAgY29kZXNldCA9ICcnCiAgICBwb3MgPSBsb2MuZmluZCgnXycpCiAgICBpZiBwb3MgPj0gMDoKICAgICAgICB0ZXJyaXRvcnkgPSBsb2NbcG9zOl0KICAgICAgICBsb2MgPSBsb2NbOnBvc10KICAgICAgICBtYXNrIHw9IENPTVBPTkVOVF9URVJSSVRPUlkKICAgIGVsc2U6CiAgICAgICAgdGVycml0b3J5ID0gJycKICAgIGxhbmd1YWdlID0gbG9jCiAgICByZXQgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2UobWFzaysxKToKICAgICAgICBpZiBub3QgKGkgJiB+bWFzayk6ICAjIGlmIGFsbCBjb21wb25lbnRzIGZvciB0aGlzIGNvbWJvIGV4aXN0IC4uLgogICAgICAgICAgICB2YWwgPSBsYW5ndWFnZQogICAgICAgICAgICBpZiBpICYgQ09NUE9ORU5UX1RFUlJJVE9SWTogdmFsICs9IHRlcnJpdG9yeQogICAgICAgICAgICBpZiBpICYgQ09NUE9ORU5UX0NPREVTRVQ6ICAgdmFsICs9IGNvZGVzZXQKICAgICAgICAgICAgaWYgaSAmIENPTVBPTkVOVF9NT0RJRklFUjogIHZhbCArPSBtb2RpZmllcgogICAgICAgICAgICByZXQuYXBwZW5kKHZhbCkKICAgIHJldC5yZXZlcnNlKCkKICAgIHJldHVybiByZXQKCgpjbGFzcyBOdWxsVHJhbnNsYXRpb25zOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwPU5vbmUpOgogICAgICAgIHNlbGYuX2luZm8gPSB7fQogICAgICAgIHNlbGYuX2NoYXJzZXQgPSBOb25lCiAgICAgICAgc2VsZi5fZmFsbGJhY2sgPSBOb25lCiAgICAgICAgaWYgZnAgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3BhcnNlKGZwKQoKICAgIGRlZiBfcGFyc2Uoc2VsZiwgZnApOgogICAgICAgIHBhc3MKCiAgICBkZWYgYWRkX2ZhbGxiYWNrKHNlbGYsIGZhbGxiYWNrKToKICAgICAgICBpZiBzZWxmLl9mYWxsYmFjazoKICAgICAgICAgICAgc2VsZi5fZmFsbGJhY2suYWRkX2ZhbGxiYWNrKGZhbGxiYWNrKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2ZhbGxiYWNrID0gZmFsbGJhY2sKCiAgICBkZWYgZ2V0dGV4dChzZWxmLCBtZXNzYWdlKToKICAgICAgICBpZiBzZWxmLl9mYWxsYmFjazoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZhbGxiYWNrLmdldHRleHQobWVzc2FnZSkKICAgICAgICByZXR1cm4gbWVzc2FnZQoKICAgIGRlZiBuZ2V0dGV4dChzZWxmLCBtc2dpZDEsIG1zZ2lkMiwgbik6CiAgICAgICAgaWYgc2VsZi5fZmFsbGJhY2s6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9mYWxsYmFjay5uZ2V0dGV4dChtc2dpZDEsIG1zZ2lkMiwgbikKICAgICAgICBpZiBuID09IDE6CiAgICAgICAgICAgIHJldHVybiBtc2dpZDEKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gbXNnaWQyCgogICAgZGVmIHBnZXR0ZXh0KHNlbGYsIGNvbnRleHQsIG1lc3NhZ2UpOgogICAgICAgIGlmIHNlbGYuX2ZhbGxiYWNrOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fZmFsbGJhY2sucGdldHRleHQoY29udGV4dCwgbWVzc2FnZSkKICAgICAgICByZXR1cm4gbWVzc2FnZQoKICAgIGRlZiBucGdldHRleHQoc2VsZiwgY29udGV4dCwgbXNnaWQxLCBtc2dpZDIsIG4pOgogICAgICAgIGlmIHNlbGYuX2ZhbGxiYWNrOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fZmFsbGJhY2subnBnZXR0ZXh0KGNvbnRleHQsIG1zZ2lkMSwgbXNnaWQyLCBuKQogICAgICAgIGlmIG4gPT0gMToKICAgICAgICAgICAgcmV0dXJuIG1zZ2lkMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBtc2dpZDIKCiAgICBkZWYgaW5mbyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5faW5mbwoKICAgIGRlZiBjaGFyc2V0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jaGFyc2V0CgogICAgZGVmIGluc3RhbGwoc2VsZiwgbmFtZXM9Tm9uZSk6CiAgICAgICAgaW1wb3J0IGJ1aWx0aW5zCiAgICAgICAgYnVpbHRpbnMuX19kaWN0X19bJ18nXSA9IHNlbGYuZ2V0dGV4dAogICAgICAgIGlmIG5hbWVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBhbGxvd2VkID0geydnZXR0ZXh0JywgJ25nZXR0ZXh0JywgJ25wZ2V0dGV4dCcsICdwZ2V0dGV4dCd9CiAgICAgICAgICAgIGZvciBuYW1lIGluIGFsbG93ZWQgJiBzZXQobmFtZXMpOgogICAgICAgICAgICAgICAgYnVpbHRpbnMuX19kaWN0X19bbmFtZV0gPSBnZXRhdHRyKHNlbGYsIG5hbWUpCgoKY2xhc3MgR05VVHJhbnNsYXRpb25zKE51bGxUcmFuc2xhdGlvbnMpOgogICAgIyBNYWdpYyBudW1iZXIgb2YgLm1vIGZpbGVzCiAgICBMRV9NQUdJQyA9IDB4OTUwNDEyZGUKICAgIEJFX01BR0lDID0gMHhkZTEyMDQ5NQoKICAgICMgVGhlIGVuY29kaW5nIG9mIGEgbXNnY3R4dCBhbmQgYSBtc2dpZCBpbiBhIC5tbyBmaWxlIGlzCiAgICAjIG1zZ2N0eHQgKyAiXHgwNCIgKyBtc2dpZCAoZ2V0dGV4dCB2ZXJzaW9uID49IDAuMTUpCiAgICBDT05URVhUID0gIiVzXHgwNCVzIgoKICAgICMgQWNjZXB0YWJsZSAubW8gdmVyc2lvbnMKICAgIFZFUlNJT05TID0gKDAsIDEpCgogICAgZGVmIF9nZXRfdmVyc2lvbnMoc2VsZiwgdmVyc2lvbik6CiAgICAgICAgIiIiUmV0dXJucyBhIHR1cGxlIG9mIG1ham9yIHZlcnNpb24sIG1pbm9yIHZlcnNpb24iIiIKICAgICAgICByZXR1cm4gKHZlcnNpb24gPj4gMTYsIHZlcnNpb24gJiAweGZmZmYpCgogICAgZGVmIF9wYXJzZShzZWxmLCBmcCk6CiAgICAgICAgIiIiT3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSAubW8gZm9ybWF0cy4iIiIKICAgICAgICAjIERlbGF5IHN0cnVjdCBpbXBvcnQgZm9yIHNwZWVkaW5nIHVwIGdldHRleHQgaW1wb3J0IHdoZW4gLm1vIGZpbGVzCiAgICAgICAgIyBhcmUgbm90IHVzZWQuCiAgICAgICAgZnJvbSBzdHJ1Y3QgaW1wb3J0IHVucGFjawogICAgICAgIGZpbGVuYW1lID0gZ2V0YXR0cihmcCwgJ25hbWUnLCAnJykKICAgICAgICAjIFBhcnNlIHRoZSAubW8gZmlsZSBoZWFkZXIsIHdoaWNoIGNvbnNpc3RzIG9mIDUgbGl0dGxlIGVuZGlhbiAzMgogICAgICAgICMgYml0IHdvcmRzLgogICAgICAgIHNlbGYuX2NhdGFsb2cgPSBjYXRhbG9nID0ge30KICAgICAgICBzZWxmLnBsdXJhbCA9IGxhbWJkYSBuOiBpbnQobiAhPSAxKSAjIGdlcm1hbmljIHBsdXJhbCBieSBkZWZhdWx0CiAgICAgICAgYnVmID0gZnAucmVhZCgpCiAgICAgICAgYnVmbGVuID0gbGVuKGJ1ZikKICAgICAgICAjIEFyZSB3ZSBiaWcgZW5kaWFuIG9yIGxpdHRsZSBlbmRpYW4/CiAgICAgICAgbWFnaWMgPSB1bnBhY2soJzxJJywgYnVmWzo0XSlbMF0KICAgICAgICBpZiBtYWdpYyA9PSBzZWxmLkxFX01BR0lDOgogICAgICAgICAgICB2ZXJzaW9uLCBtc2djb3VudCwgbWFzdGVyaWR4LCB0cmFuc2lkeCA9IHVucGFjaygnPDRJJywgYnVmWzQ6MjBdKQogICAgICAgICAgICBpaSA9ICc8SUknCiAgICAgICAgZWxpZiBtYWdpYyA9PSBzZWxmLkJFX01BR0lDOgogICAgICAgICAgICB2ZXJzaW9uLCBtc2djb3VudCwgbWFzdGVyaWR4LCB0cmFuc2lkeCA9IHVucGFjaygnPjRJJywgYnVmWzQ6MjBdKQogICAgICAgICAgICBpaSA9ICc+SUknCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigwLCAnQmFkIG1hZ2ljIG51bWJlcicsIGZpbGVuYW1lKQoKICAgICAgICBtYWpvcl92ZXJzaW9uLCBtaW5vcl92ZXJzaW9uID0gc2VsZi5fZ2V0X3ZlcnNpb25zKHZlcnNpb24pCgogICAgICAgIGlmIG1ham9yX3ZlcnNpb24gbm90IGluIHNlbGYuVkVSU0lPTlM6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoMCwgJ0JhZCB2ZXJzaW9uIG51bWJlciAnICsgc3RyKG1ham9yX3ZlcnNpb24pLCBmaWxlbmFtZSkKCiAgICAgICAgIyBOb3cgcHV0IGFsbCBtZXNzYWdlcyBmcm9tIHRoZSAubW8gZmlsZSBidWZmZXIgaW50byB0aGUgY2F0YWxvZwogICAgICAgICMgZGljdGlvbmFyeS4KICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBtc2djb3VudCk6CiAgICAgICAgICAgIG1sZW4sIG1vZmYgPSB1bnBhY2soaWksIGJ1ZlttYXN0ZXJpZHg6bWFzdGVyaWR4KzhdKQogICAgICAgICAgICBtZW5kID0gbW9mZiArIG1sZW4KICAgICAgICAgICAgdGxlbiwgdG9mZiA9IHVucGFjayhpaSwgYnVmW3RyYW5zaWR4OnRyYW5zaWR4KzhdKQogICAgICAgICAgICB0ZW5kID0gdG9mZiArIHRsZW4KICAgICAgICAgICAgaWYgbWVuZCA8IGJ1ZmxlbiBhbmQgdGVuZCA8IGJ1ZmxlbjoKICAgICAgICAgICAgICAgIG1zZyA9IGJ1Zlttb2ZmOm1lbmRdCiAgICAgICAgICAgICAgICB0bXNnID0gYnVmW3RvZmY6dGVuZF0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoMCwgJ0ZpbGUgaXMgY29ycnVwdCcsIGZpbGVuYW1lKQogICAgICAgICAgICAjIFNlZSBpZiB3ZSdyZSBsb29raW5nIGF0IEdOVSAubW8gY29udmVudGlvbnMgZm9yIG1ldGFkYXRhCiAgICAgICAgICAgIGlmIG1sZW4gPT0gMDoKICAgICAgICAgICAgICAgICMgQ2F0YWxvZyBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgbGFzdGsgPSBOb25lCiAgICAgICAgICAgICAgICBmb3IgYl9pdGVtIGluIHRtc2cuc3BsaXQoYidcbicpOgogICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBiX2l0ZW0uZGVjb2RlKCkuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpdGVtOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICMgU2tpcCBvdmVyIGNvbW1lbnQgbGluZXM6CiAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKCcjLSMtIy0jLSMnKSBhbmQgaXRlbS5lbmRzd2l0aCgnIy0jLSMtIy0jJyk6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgayA9IHYgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgaWYgJzonIGluIGl0ZW06CiAgICAgICAgICAgICAgICAgICAgICAgIGssIHYgPSBpdGVtLnNwbGl0KCc6JywgMSkKICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsuc3RyaXAoKS5sb3dlcigpCiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB2LnN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5mb1trXSA9IHYKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdGsgPSBrCiAgICAgICAgICAgICAgICAgICAgZWxpZiBsYXN0azoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5mb1tsYXN0a10gKz0gJ1xuJyArIGl0ZW0KICAgICAgICAgICAgICAgICAgICBpZiBrID09ICdjb250ZW50LXR5cGUnOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGFyc2V0ID0gdi5zcGxpdCgnY2hhcnNldD0nKVsxXQogICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAncGx1cmFsLWZvcm1zJzoKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHYuc3BsaXQoJzsnKQogICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWwgPSB2WzFdLnNwbGl0KCdwbHVyYWw9JylbMV0KICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wbHVyYWwgPSBjMnB5KHBsdXJhbCkKICAgICAgICAgICAgIyBOb3RlOiB3ZSB1bmNvbmRpdGlvbmFsbHkgY29udmVydCBib3RoIG1zZ2lkcyBhbmQgbXNnc3RycyB0bwogICAgICAgICAgICAjIFVuaWNvZGUgdXNpbmcgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBzcGVjaWZpZWQgaW4gdGhlIGNoYXJzZXQKICAgICAgICAgICAgIyBwYXJhbWV0ZXIgb2YgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuICBUaGUgZ2V0dGV4dCBkb2N1bWVudGF0aW9uCiAgICAgICAgICAgICMgc3Ryb25nbHkgZW5jb3VyYWdlcyBtc2dpZHMgdG8gYmUgdXMtYXNjaWksIGJ1dCBzb21lIGFwcGxpY2F0aW9ucwogICAgICAgICAgICAjIHJlcXVpcmUgYWx0ZXJuYXRpdmUgZW5jb2RpbmdzIChlLmcuIFpvcGUncyBaQ01MIGFuZCBaUFQpLiAgRm9yCiAgICAgICAgICAgICMgdHJhZGl0aW9uYWwgZ2V0dGV4dCBhcHBsaWNhdGlvbnMsIHRoZSBtc2dpZCBjb252ZXJzaW9uIHdpbGwKICAgICAgICAgICAgIyBjYXVzZSBubyBwcm9ibGVtcyBzaW5jZSB1cy1hc2NpaSBzaG91bGQgYWx3YXlzIGJlIGEgc3Vic2V0IG9mCiAgICAgICAgICAgICMgdGhlIGNoYXJzZXQgZW5jb2RpbmcuICBXZSBtYXkgd2FudCB0byBmYWxsIGJhY2sgdG8gOC1iaXQgbXNnaWRzCiAgICAgICAgICAgICMgaWYgdGhlIFVuaWNvZGUgY29udmVyc2lvbiBmYWlscy4KICAgICAgICAgICAgY2hhcnNldCA9IHNlbGYuX2NoYXJzZXQgb3IgJ2FzY2lpJwogICAgICAgICAgICBpZiBiJ1x4MDAnIGluIG1zZzoKICAgICAgICAgICAgICAgICMgUGx1cmFsIGZvcm1zCiAgICAgICAgICAgICAgICBtc2dpZDEsIG1zZ2lkMiA9IG1zZy5zcGxpdChiJ1x4MDAnKQogICAgICAgICAgICAgICAgdG1zZyA9IHRtc2cuc3BsaXQoYidceDAwJykKICAgICAgICAgICAgICAgIG1zZ2lkMSA9IHN0cihtc2dpZDEsIGNoYXJzZXQpCiAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUodG1zZyk6CiAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ1sobXNnaWQxLCBpKV0gPSBzdHIoeCwgY2hhcnNldCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNhdGFsb2dbc3RyKG1zZywgY2hhcnNldCldID0gc3RyKHRtc2csIGNoYXJzZXQpCiAgICAgICAgICAgICMgYWR2YW5jZSB0byBuZXh0IGVudHJ5IGluIHRoZSBzZWVrIHRhYmxlcwogICAgICAgICAgICBtYXN0ZXJpZHggKz0gOAogICAgICAgICAgICB0cmFuc2lkeCArPSA4CgogICAgZGVmIGdldHRleHQoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCiAgICAgICAgdG1zZyA9IHNlbGYuX2NhdGFsb2cuZ2V0KG1lc3NhZ2UsIG1pc3NpbmcpCiAgICAgICAgaWYgdG1zZyBpcyBtaXNzaW5nOgogICAgICAgICAgICBpZiBzZWxmLl9mYWxsYmFjazoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9mYWxsYmFjay5nZXR0ZXh0KG1lc3NhZ2UpCiAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCiAgICAgICAgcmV0dXJuIHRtc2cKCiAgICBkZWYgbmdldHRleHQoc2VsZiwgbXNnaWQxLCBtc2dpZDIsIG4pOgogICAgICAgIHRyeToKICAgICAgICAgICAgdG1zZyA9IHNlbGYuX2NhdGFsb2dbKG1zZ2lkMSwgc2VsZi5wbHVyYWwobikpXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgaWYgc2VsZi5fZmFsbGJhY2s6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmFsbGJhY2submdldHRleHQobXNnaWQxLCBtc2dpZDIsIG4pCiAgICAgICAgICAgIGlmIG4gPT0gMToKICAgICAgICAgICAgICAgIHRtc2cgPSBtc2dpZDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRtc2cgPSBtc2dpZDIKICAgICAgICByZXR1cm4gdG1zZwoKICAgIGRlZiBwZ2V0dGV4dChzZWxmLCBjb250ZXh0LCBtZXNzYWdlKToKICAgICAgICBjdHh0X21zZ19pZCA9IHNlbGYuQ09OVEVYVCAlIChjb250ZXh0LCBtZXNzYWdlKQogICAgICAgIG1pc3NpbmcgPSBvYmplY3QoKQogICAgICAgIHRtc2cgPSBzZWxmLl9jYXRhbG9nLmdldChjdHh0X21zZ19pZCwgbWlzc2luZykKICAgICAgICBpZiB0bXNnIGlzIG1pc3Npbmc6CiAgICAgICAgICAgIGlmIHNlbGYuX2ZhbGxiYWNrOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZhbGxiYWNrLnBnZXR0ZXh0KGNvbnRleHQsIG1lc3NhZ2UpCiAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCiAgICAgICAgcmV0dXJuIHRtc2cKCiAgICBkZWYgbnBnZXR0ZXh0KHNlbGYsIGNvbnRleHQsIG1zZ2lkMSwgbXNnaWQyLCBuKToKICAgICAgICBjdHh0X21zZ19pZCA9IHNlbGYuQ09OVEVYVCAlIChjb250ZXh0LCBtc2dpZDEpCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0bXNnID0gc2VsZi5fY2F0YWxvZ1tjdHh0X21zZ19pZCwgc2VsZi5wbHVyYWwobildCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBpZiBzZWxmLl9mYWxsYmFjazoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9mYWxsYmFjay5ucGdldHRleHQoY29udGV4dCwgbXNnaWQxLCBtc2dpZDIsIG4pCiAgICAgICAgICAgIGlmIG4gPT0gMToKICAgICAgICAgICAgICAgIHRtc2cgPSBtc2dpZDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRtc2cgPSBtc2dpZDIKICAgICAgICByZXR1cm4gdG1zZwoKCiMgTG9jYXRlIGEgLm1vIGZpbGUgdXNpbmcgdGhlIGdldHRleHQgc3RyYXRlZ3kKZGVmIGZpbmQoZG9tYWluLCBsb2NhbGVkaXI9Tm9uZSwgbGFuZ3VhZ2VzPU5vbmUsIGFsbD1GYWxzZSk6CiAgICAjIEdldCBzb21lIHJlYXNvbmFibGUgZGVmYXVsdHMgZm9yIGFyZ3VtZW50cyB0aGF0IHdlcmUgbm90IHN1cHBsaWVkCiAgICBpZiBsb2NhbGVkaXIgaXMgTm9uZToKICAgICAgICBsb2NhbGVkaXIgPSBfZGVmYXVsdF9sb2NhbGVkaXIKICAgIGlmIGxhbmd1YWdlcyBpcyBOb25lOgogICAgICAgIGxhbmd1YWdlcyA9IFtdCiAgICAgICAgZm9yIGVudmFyIGluICgnTEFOR1VBR0UnLCAnTENfQUxMJywgJ0xDX01FU1NBR0VTJywgJ0xBTkcnKToKICAgICAgICAgICAgdmFsID0gb3MuZW52aXJvbi5nZXQoZW52YXIpCiAgICAgICAgICAgIGlmIHZhbDoKICAgICAgICAgICAgICAgIGxhbmd1YWdlcyA9IHZhbC5zcGxpdCgnOicpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGlmICdDJyBub3QgaW4gbGFuZ3VhZ2VzOgogICAgICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKCdDJykKICAgICMgbm93IG5vcm1hbGl6ZSBhbmQgZXhwYW5kIHRoZSBsYW5ndWFnZXMKICAgIG5lbGFuZ3MgPSBbXQogICAgZm9yIGxhbmcgaW4gbGFuZ3VhZ2VzOgogICAgICAgIGZvciBuZWxhbmcgaW4gX2V4cGFuZF9sYW5nKGxhbmcpOgogICAgICAgICAgICBpZiBuZWxhbmcgbm90IGluIG5lbGFuZ3M6CiAgICAgICAgICAgICAgICBuZWxhbmdzLmFwcGVuZChuZWxhbmcpCiAgICAjIHNlbGVjdCBhIGxhbmd1YWdlCiAgICBpZiBhbGw6CiAgICAgICAgcmVzdWx0ID0gW10KICAgIGVsc2U6CiAgICAgICAgcmVzdWx0ID0gTm9uZQogICAgZm9yIGxhbmcgaW4gbmVsYW5nczoKICAgICAgICBpZiBsYW5nID09ICdDJzoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBtb2ZpbGUgPSBvcy5wYXRoLmpvaW4obG9jYWxlZGlyLCBsYW5nLCAnTENfTUVTU0FHRVMnLCAnJXMubW8nICUgZG9tYWluKQogICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1vZmlsZSk6CiAgICAgICAgICAgIGlmIGFsbDoKICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobW9maWxlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIG1vZmlsZQogICAgcmV0dXJuIHJlc3VsdAoKCiMgYSBtYXBwaW5nIGJldHdlZW4gYWJzb2x1dGUgLm1vIGZpbGUgcGF0aCBhbmQgVHJhbnNsYXRpb24gb2JqZWN0Cl90cmFuc2xhdGlvbnMgPSB7fQoKCmRlZiB0cmFuc2xhdGlvbihkb21haW4sIGxvY2FsZWRpcj1Ob25lLCBsYW5ndWFnZXM9Tm9uZSwKICAgICAgICAgICAgICAgIGNsYXNzXz1Ob25lLCBmYWxsYmFjaz1GYWxzZSk6CiAgICBpZiBjbGFzc18gaXMgTm9uZToKICAgICAgICBjbGFzc18gPSBHTlVUcmFuc2xhdGlvbnMKICAgIG1vZmlsZXMgPSBmaW5kKGRvbWFpbiwgbG9jYWxlZGlyLCBsYW5ndWFnZXMsIGFsbD1UcnVlKQogICAgaWYgbm90IG1vZmlsZXM6CiAgICAgICAgaWYgZmFsbGJhY2s6CiAgICAgICAgICAgIHJldHVybiBOdWxsVHJhbnNsYXRpb25zKCkKICAgICAgICBmcm9tIGVycm5vIGltcG9ydCBFTk9FTlQKICAgICAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcihFTk9FTlQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vIHRyYW5zbGF0aW9uIGZpbGUgZm91bmQgZm9yIGRvbWFpbicsIGRvbWFpbikKICAgICMgQXZvaWQgb3BlbmluZywgcmVhZGluZywgYW5kIHBhcnNpbmcgdGhlIC5tbyBmaWxlIGFmdGVyIGl0J3MgYmVlbiBkb25lCiAgICAjIG9uY2UuCiAgICByZXN1bHQgPSBOb25lCiAgICBmb3IgbW9maWxlIGluIG1vZmlsZXM6CiAgICAgICAga2V5ID0gKGNsYXNzXywgb3MucGF0aC5hYnNwYXRoKG1vZmlsZSkpCiAgICAgICAgdCA9IF90cmFuc2xhdGlvbnMuZ2V0KGtleSkKICAgICAgICBpZiB0IGlzIE5vbmU6CiAgICAgICAgICAgIHdpdGggb3Blbihtb2ZpbGUsICdyYicpIGFzIGZwOgogICAgICAgICAgICAgICAgdCA9IF90cmFuc2xhdGlvbnMuc2V0ZGVmYXVsdChrZXksIGNsYXNzXyhmcCkpCiAgICAgICAgIyBDb3B5IHRoZSB0cmFuc2xhdGlvbiBvYmplY3QgdG8gYWxsb3cgc2V0dGluZyBmYWxsYmFja3MgYW5kCiAgICAgICAgIyBvdXRwdXQgY2hhcnNldC4gQWxsIG90aGVyIGluc3RhbmNlIGRhdGEgaXMgc2hhcmVkIHdpdGggdGhlCiAgICAgICAgIyBjYWNoZWQgb2JqZWN0LgogICAgICAgICMgRGVsYXkgY29weSBpbXBvcnQgZm9yIHNwZWVkaW5nIHVwIGdldHRleHQgaW1wb3J0IHdoZW4gLm1vIGZpbGVzCiAgICAgICAgIyBhcmUgbm90IHVzZWQuCiAgICAgICAgaW1wb3J0IGNvcHkKICAgICAgICB0ID0gY29weS5jb3B5KHQpCiAgICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6CiAgICAgICAgICAgIHJlc3VsdCA9IHQKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQuYWRkX2ZhbGxiYWNrKHQpCiAgICByZXR1cm4gcmVzdWx0CgoKZGVmIGluc3RhbGwoZG9tYWluLCBsb2NhbGVkaXI9Tm9uZSwgKiwgbmFtZXM9Tm9uZSk6CiAgICB0ID0gdHJhbnNsYXRpb24oZG9tYWluLCBsb2NhbGVkaXIsIGZhbGxiYWNrPVRydWUpCiAgICB0Lmluc3RhbGwobmFtZXMpCgoKIyBhIG1hcHBpbmcgYi93IGRvbWFpbnMgYW5kIGxvY2FsZSBkaXJlY3RvcmllcwpfbG9jYWxlZGlycyA9IHt9CiMgY3VycmVudCBnbG9iYWwgZG9tYWluLCBgbWVzc2FnZXMnIHVzZWQgZm9yIGNvbXBhdGliaWxpdHkgdy8gR05VIGdldHRleHQKX2N1cnJlbnRfZG9tYWluID0gJ21lc3NhZ2VzJwoKCmRlZiB0ZXh0ZG9tYWluKGRvbWFpbj1Ob25lKToKICAgIGdsb2JhbCBfY3VycmVudF9kb21haW4KICAgIGlmIGRvbWFpbiBpcyBub3QgTm9uZToKICAgICAgICBfY3VycmVudF9kb21haW4gPSBkb21haW4KICAgIHJldHVybiBfY3VycmVudF9kb21haW4KCgpkZWYgYmluZHRleHRkb21haW4oZG9tYWluLCBsb2NhbGVkaXI9Tm9uZSk6CiAgICBnbG9iYWwgX2xvY2FsZWRpcnMKICAgIGlmIGxvY2FsZWRpciBpcyBub3QgTm9uZToKICAgICAgICBfbG9jYWxlZGlyc1tkb21haW5dID0gbG9jYWxlZGlyCiAgICByZXR1cm4gX2xvY2FsZWRpcnMuZ2V0KGRvbWFpbiwgX2RlZmF1bHRfbG9jYWxlZGlyKQoKCmRlZiBkZ2V0dGV4dChkb21haW4sIG1lc3NhZ2UpOgogICAgdHJ5OgogICAgICAgIHQgPSB0cmFuc2xhdGlvbihkb21haW4sIF9sb2NhbGVkaXJzLmdldChkb21haW4sIE5vbmUpKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcmV0dXJuIG1lc3NhZ2UKICAgIHJldHVybiB0LmdldHRleHQobWVzc2FnZSkKCgpkZWYgZG5nZXR0ZXh0KGRvbWFpbiwgbXNnaWQxLCBtc2dpZDIsIG4pOgogICAgdHJ5OgogICAgICAgIHQgPSB0cmFuc2xhdGlvbihkb21haW4sIF9sb2NhbGVkaXJzLmdldChkb21haW4sIE5vbmUpKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgaWYgbiA9PSAxOgogICAgICAgICAgICByZXR1cm4gbXNnaWQxCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIG1zZ2lkMgogICAgcmV0dXJuIHQubmdldHRleHQobXNnaWQxLCBtc2dpZDIsIG4pCgoKZGVmIGRwZ2V0dGV4dChkb21haW4sIGNvbnRleHQsIG1lc3NhZ2UpOgogICAgdHJ5OgogICAgICAgIHQgPSB0cmFuc2xhdGlvbihkb21haW4sIF9sb2NhbGVkaXJzLmdldChkb21haW4sIE5vbmUpKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcmV0dXJuIG1lc3NhZ2UKICAgIHJldHVybiB0LnBnZXR0ZXh0KGNvbnRleHQsIG1lc3NhZ2UpCgoKZGVmIGRucGdldHRleHQoZG9tYWluLCBjb250ZXh0LCBtc2dpZDEsIG1zZ2lkMiwgbik6CiAgICB0cnk6CiAgICAgICAgdCA9IHRyYW5zbGF0aW9uKGRvbWFpbiwgX2xvY2FsZWRpcnMuZ2V0KGRvbWFpbiwgTm9uZSkpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBpZiBuID09IDE6CiAgICAgICAgICAgIHJldHVybiBtc2dpZDEKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gbXNnaWQyCiAgICByZXR1cm4gdC5ucGdldHRleHQoY29udGV4dCwgbXNnaWQxLCBtc2dpZDIsIG4pCgoKZGVmIGdldHRleHQobWVzc2FnZSk6CiAgICByZXR1cm4gZGdldHRleHQoX2N1cnJlbnRfZG9tYWluLCBtZXNzYWdlKQoKCmRlZiBuZ2V0dGV4dChtc2dpZDEsIG1zZ2lkMiwgbik6CiAgICByZXR1cm4gZG5nZXR0ZXh0KF9jdXJyZW50X2RvbWFpbiwgbXNnaWQxLCBtc2dpZDIsIG4pCgoKZGVmIHBnZXR0ZXh0KGNvbnRleHQsIG1lc3NhZ2UpOgogICAgcmV0dXJuIGRwZ2V0dGV4dChfY3VycmVudF9kb21haW4sIGNvbnRleHQsIG1lc3NhZ2UpCgoKZGVmIG5wZ2V0dGV4dChjb250ZXh0LCBtc2dpZDEsIG1zZ2lkMiwgbik6CiAgICByZXR1cm4gZG5wZ2V0dGV4dChfY3VycmVudF9kb21haW4sIGNvbnRleHQsIG1zZ2lkMSwgbXNnaWQyLCBuKQoKCiMgZGNnZXR0ZXh0KCkgaGFzIGJlZW4gZGVlbWVkIHVubmVjZXNzYXJ5IGFuZCBpcyBub3QgaW1wbGVtZW50ZWQuCgojIEphbWVzIEhlbnN0cmlkZ2UncyBDYXRhbG9nIGNvbnN0cnVjdG9yIGZyb20gR05PTUUgZ2V0dGV4dC4gIERvY3VtZW50ZWQgdXNhZ2UKIyB3YXM6CiMKIyAgICBpbXBvcnQgZ2V0dGV4dAojICAgIGNhdCA9IGdldHRleHQuQ2F0YWxvZyhQQUNLQUdFLCBsb2NhbGVkaXI9TE9DQUxFRElSKQojICAgIF8gPSBjYXQuZ2V0dGV4dAojICAgIHByaW50IF8oJ0hlbGxvIFdvcmxkJykKCiMgVGhlIHJlc3VsdGluZyBjYXRhbG9nIG9iamVjdCBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBhY2Nlc3MgdGhyb3VnaCBhCiMgZGljdGlvbmFyeSBBUEksIHdoaWNoIHdhcyBzdXBwb3J0ZWQgKGJ1dCBhcHBhcmVudGx5IHVudXNlZCkgaW4gR05PTUUKIyBnZXR0ZXh0LgoKQ2F0YWxvZyA9IHRyYW5zbGF0aW9uClBLAwQUAAAAAAACIKNWliuI2+khAADpIQAABwAAAGdsb2IucHkiIiJGaWxlbmFtZSBnbG9iYmluZyB1dGlsaXR5LiIiIgoKaW1wb3J0IGNvbnRleHRsaWIKaW1wb3J0IG9zCmltcG9ydCByZQppbXBvcnQgZm5tYXRjaAppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCBzdGF0CmltcG9ydCBzeXMKCl9fYWxsX18gPSBbImdsb2IiLCAiaWdsb2IiLCAiZXNjYXBlIl0KCmRlZiBnbG9iKHBhdGhuYW1lLCAqLCByb290X2Rpcj1Ob25lLCBkaXJfZmQ9Tm9uZSwgcmVjdXJzaXZlPUZhbHNlLAogICAgICAgIGluY2x1ZGVfaGlkZGVuPUZhbHNlKToKICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcGF0aHMgbWF0Y2hpbmcgYSBwYXRobmFtZSBwYXR0ZXJuLgoKICAgIFRoZSBwYXR0ZXJuIG1heSBjb250YWluIHNpbXBsZSBzaGVsbC1zdHlsZSB3aWxkY2FyZHMgYSBsYQogICAgZm5tYXRjaC4gVW5saWtlIGZubWF0Y2gsIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIGEKICAgIGRvdCBhcmUgc3BlY2lhbCBjYXNlcyB0aGF0IGFyZSBub3QgbWF0Y2hlZCBieSAnKicgYW5kICc/JwogICAgcGF0dGVybnMgYnkgZGVmYXVsdC4KCiAgICBJZiBgaW5jbHVkZV9oaWRkZW5gIGlzIHRydWUsIHRoZSBwYXR0ZXJucyAnKicsICc/JywgJyoqJyAgd2lsbCBtYXRjaCBoaWRkZW4KICAgIGRpcmVjdG9yaWVzLgoKICAgIElmIGByZWN1cnNpdmVgIGlzIHRydWUsIHRoZSBwYXR0ZXJuICcqKicgd2lsbCBtYXRjaCBhbnkgZmlsZXMgYW5kCiAgICB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzLgogICAgIiIiCiAgICByZXR1cm4gbGlzdChpZ2xvYihwYXRobmFtZSwgcm9vdF9kaXI9cm9vdF9kaXIsIGRpcl9mZD1kaXJfZmQsIHJlY3Vyc2l2ZT1yZWN1cnNpdmUsCiAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2hpZGRlbj1pbmNsdWRlX2hpZGRlbikpCgpkZWYgaWdsb2IocGF0aG5hbWUsICosIHJvb3RfZGlyPU5vbmUsIGRpcl9mZD1Ob25lLCByZWN1cnNpdmU9RmFsc2UsCiAgICAgICAgICBpbmNsdWRlX2hpZGRlbj1GYWxzZSk6CiAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igd2hpY2ggeWllbGRzIHRoZSBwYXRocyBtYXRjaGluZyBhIHBhdGhuYW1lIHBhdHRlcm4uCgogICAgVGhlIHBhdHRlcm4gbWF5IGNvbnRhaW4gc2ltcGxlIHNoZWxsLXN0eWxlIHdpbGRjYXJkcyBhIGxhCiAgICBmbm1hdGNoLiBIb3dldmVyLCB1bmxpa2UgZm5tYXRjaCwgZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggYQogICAgZG90IGFyZSBzcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG5vdCBtYXRjaGVkIGJ5ICcqJyBhbmQgJz8nCiAgICBwYXR0ZXJucy4KCiAgICBJZiByZWN1cnNpdmUgaXMgdHJ1ZSwgdGhlIHBhdHRlcm4gJyoqJyB3aWxsIG1hdGNoIGFueSBmaWxlcyBhbmQKICAgIHplcm8gb3IgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuCiAgICAiIiIKICAgIHN5cy5hdWRpdCgiZ2xvYi5nbG9iIiwgcGF0aG5hbWUsIHJlY3Vyc2l2ZSkKICAgIHN5cy5hdWRpdCgiZ2xvYi5nbG9iLzIiLCBwYXRobmFtZSwgcmVjdXJzaXZlLCByb290X2RpciwgZGlyX2ZkKQogICAgaWYgcm9vdF9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgcm9vdF9kaXIgPSBvcy5mc3BhdGgocm9vdF9kaXIpCiAgICBlbHNlOgogICAgICAgIHJvb3RfZGlyID0gcGF0aG5hbWVbOjBdCiAgICBpdCA9IF9pZ2xvYihwYXRobmFtZSwgcm9vdF9kaXIsIGRpcl9mZCwgcmVjdXJzaXZlLCBGYWxzZSwKICAgICAgICAgICAgICAgIGluY2x1ZGVfaGlkZGVuPWluY2x1ZGVfaGlkZGVuKQogICAgaWYgbm90IHBhdGhuYW1lIG9yIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKHBhdGhuYW1lWzoyXSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzID0gbmV4dChpdCkgICMgc2tpcCBlbXB0eSBzdHJpbmcKICAgICAgICAgICAgaWYgczoKICAgICAgICAgICAgICAgIGl0ID0gaXRlcnRvb2xzLmNoYWluKChzLCksIGl0KQogICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICAgICBwYXNzCiAgICByZXR1cm4gaXQKCmRlZiBfaWdsb2IocGF0aG5hbWUsIHJvb3RfZGlyLCBkaXJfZmQsIHJlY3Vyc2l2ZSwgZGlyb25seSwKICAgICAgICAgICBpbmNsdWRlX2hpZGRlbj1GYWxzZSk6CiAgICBkaXJuYW1lLCBiYXNlbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCiAgICBpZiBub3QgaGFzX21hZ2ljKHBhdGhuYW1lKToKICAgICAgICBhc3NlcnQgbm90IGRpcm9ubHkKICAgICAgICBpZiBiYXNlbmFtZToKICAgICAgICAgICAgaWYgX2xleGlzdHMoX2pvaW4ocm9vdF9kaXIsIHBhdGhuYW1lKSwgZGlyX2ZkKToKICAgICAgICAgICAgICAgIHlpZWxkIHBhdGhuYW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBQYXR0ZXJucyBlbmRpbmcgd2l0aCBhIHNsYXNoIHNob3VsZCBtYXRjaCBvbmx5IGRpcmVjdG9yaWVzCiAgICAgICAgICAgIGlmIF9pc2Rpcihfam9pbihyb290X2RpciwgZGlybmFtZSksIGRpcl9mZCk6CiAgICAgICAgICAgICAgICB5aWVsZCBwYXRobmFtZQogICAgICAgIHJldHVybgogICAgaWYgbm90IGRpcm5hbWU6CiAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgogICAgICAgICAgICB5aWVsZCBmcm9tIF9nbG9iMihyb290X2RpciwgYmFzZW5hbWUsIGRpcl9mZCwgZGlyb25seSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2hpZGRlbj1pbmNsdWRlX2hpZGRlbikKICAgICAgICBlbHNlOgogICAgICAgICAgICB5aWVsZCBmcm9tIF9nbG9iMShyb290X2RpciwgYmFzZW5hbWUsIGRpcl9mZCwgZGlyb25seSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9oaWRkZW49aW5jbHVkZV9oaWRkZW4pCiAgICAgICAgcmV0dXJuCiAgICAjIGBvcy5wYXRoLnNwbGl0KClgIHJldHVybnMgdGhlIGFyZ3VtZW50IGl0c2VsZiBhcyBhIGRpcm5hbWUgaWYgaXQgaXMgYQogICAgIyBkcml2ZSBvciBVTkMgcGF0aC4gIFByZXZlbnQgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGlmIGEgZHJpdmUgb3IgVU5DIHBhdGgKICAgICMgY29udGFpbnMgbWFnaWMgY2hhcmFjdGVycyAoaS5lLiByJ1xcP1xDOicpLgogICAgaWYgZGlybmFtZSAhPSBwYXRobmFtZSBhbmQgaGFzX21hZ2ljKGRpcm5hbWUpOgogICAgICAgIGRpcnMgPSBfaWdsb2IoZGlybmFtZSwgcm9vdF9kaXIsIGRpcl9mZCwgcmVjdXJzaXZlLCBUcnVlLAogICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9oaWRkZW49aW5jbHVkZV9oaWRkZW4pCiAgICBlbHNlOgogICAgICAgIGRpcnMgPSBbZGlybmFtZV0KICAgIGlmIGhhc19tYWdpYyhiYXNlbmFtZSk6CiAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgogICAgICAgICAgICBnbG9iX2luX2RpciA9IF9nbG9iMgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IxCiAgICBlbHNlOgogICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IwCiAgICBmb3IgZGlybmFtZSBpbiBkaXJzOgogICAgICAgIGZvciBuYW1lIGluIGdsb2JfaW5fZGlyKF9qb2luKHJvb3RfZGlyLCBkaXJuYW1lKSwgYmFzZW5hbWUsIGRpcl9mZCwgZGlyb25seSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfaGlkZGVuPWluY2x1ZGVfaGlkZGVuKToKICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKGRpcm5hbWUsIG5hbWUpCgojIFRoZXNlIDIgaGVscGVyIGZ1bmN0aW9ucyBub24tcmVjdXJzaXZlbHkgZ2xvYiBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KIyBUaGV5IHJldHVybiBhIGxpc3Qgb2YgYmFzZW5hbWVzLiAgX2dsb2IxIGFjY2VwdHMgYSBwYXR0ZXJuIHdoaWxlIF9nbG9iMAojIHRha2VzIGEgbGl0ZXJhbCBiYXNlbmFtZSAoc28gaXQgb25seSBoYXMgdG8gY2hlY2sgZm9yIGl0cyBleGlzdGVuY2UpLgoKZGVmIF9nbG9iMShkaXJuYW1lLCBwYXR0ZXJuLCBkaXJfZmQsIGRpcm9ubHksIGluY2x1ZGVfaGlkZGVuPUZhbHNlKToKICAgIG5hbWVzID0gX2xpc3RkaXIoZGlybmFtZSwgZGlyX2ZkLCBkaXJvbmx5KQogICAgaWYgaW5jbHVkZV9oaWRkZW4gb3Igbm90IF9pc2hpZGRlbihwYXR0ZXJuKToKICAgICAgICBuYW1lcyA9ICh4IGZvciB4IGluIG5hbWVzIGlmIGluY2x1ZGVfaGlkZGVuIG9yIG5vdCBfaXNoaWRkZW4oeCkpCiAgICByZXR1cm4gZm5tYXRjaC5maWx0ZXIobmFtZXMsIHBhdHRlcm4pCgpkZWYgX2dsb2IwKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJfZmQsIGRpcm9ubHksIGluY2x1ZGVfaGlkZGVuPUZhbHNlKToKICAgIGlmIGJhc2VuYW1lOgogICAgICAgIGlmIF9sZXhpc3RzKF9qb2luKGRpcm5hbWUsIGJhc2VuYW1lKSwgZGlyX2ZkKToKICAgICAgICAgICAgcmV0dXJuIFtiYXNlbmFtZV0KICAgIGVsc2U6CiAgICAgICAgIyBgb3MucGF0aC5zcGxpdCgpYCByZXR1cm5zIGFuIGVtcHR5IGJhc2VuYW1lIGZvciBwYXRocyBlbmRpbmcgd2l0aCBhCiAgICAgICAgIyBkaXJlY3Rvcnkgc2VwYXJhdG9yLiAgJ3EqeC8nIHNob3VsZCBtYXRjaCBvbmx5IGRpcmVjdG9yaWVzLgogICAgICAgIGlmIF9pc2RpcihkaXJuYW1lLCBkaXJfZmQpOgogICAgICAgICAgICByZXR1cm4gW2Jhc2VuYW1lXQogICAgcmV0dXJuIFtdCgojIEZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBwdWJsaWMgYnV0IGNhbiBiZSB1c2VkIGJ5IHRoaXJkLXBhcnR5IGNvZGUuCgpkZWYgZ2xvYjAoZGlybmFtZSwgcGF0dGVybik6CiAgICByZXR1cm4gX2dsb2IwKGRpcm5hbWUsIHBhdHRlcm4sIE5vbmUsIEZhbHNlKQoKZGVmIGdsb2IxKGRpcm5hbWUsIHBhdHRlcm4pOgogICAgcmV0dXJuIF9nbG9iMShkaXJuYW1lLCBwYXR0ZXJuLCBOb25lLCBGYWxzZSkKCiMgVGhpcyBoZWxwZXIgZnVuY3Rpb24gcmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsCiMgZGlyZWN0b3J5LgoKZGVmIF9nbG9iMihkaXJuYW1lLCBwYXR0ZXJuLCBkaXJfZmQsIGRpcm9ubHksIGluY2x1ZGVfaGlkZGVuPUZhbHNlKToKICAgIGFzc2VydCBfaXNyZWN1cnNpdmUocGF0dGVybikKICAgIHlpZWxkIHBhdHRlcm5bOjBdCiAgICB5aWVsZCBmcm9tIF9ybGlzdGRpcihkaXJuYW1lLCBkaXJfZmQsIGRpcm9ubHksCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2hpZGRlbj1pbmNsdWRlX2hpZGRlbikKCiMgSWYgZGlyb25seSBpcyBmYWxzZSwgeWllbGRzIGFsbCBmaWxlIG5hbWVzIGluc2lkZSBhIGRpcmVjdG9yeS4KIyBJZiBkaXJvbmx5IGlzIHRydWUsIHlpZWxkcyBvbmx5IGRpcmVjdG9yeSBuYW1lcy4KZGVmIF9pdGVyZGlyKGRpcm5hbWUsIGRpcl9mZCwgZGlyb25seSk6CiAgICB0cnk6CiAgICAgICAgZmQgPSBOb25lCiAgICAgICAgZnNlbmNvZGUgPSBOb25lCiAgICAgICAgaWYgZGlyX2ZkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBkaXJuYW1lOgogICAgICAgICAgICAgICAgZmQgPSBhcmcgPSBvcy5vcGVuKGRpcm5hbWUsIF9kaXJfb3Blbl9mbGFncywgZGlyX2ZkPWRpcl9mZCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGFyZyA9IGRpcl9mZAogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRpcm5hbWUsIGJ5dGVzKToKICAgICAgICAgICAgICAgIGZzZW5jb2RlID0gb3MuZnNlbmNvZGUKICAgICAgICBlbGlmIGRpcm5hbWU6CiAgICAgICAgICAgIGFyZyA9IGRpcm5hbWUKICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGlybmFtZSwgYnl0ZXMpOgogICAgICAgICAgICBhcmcgPSBieXRlcyhvcy5jdXJkaXIsICdBU0NJSScpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYXJnID0gb3MuY3VyZGlyCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aXRoIG9zLnNjYW5kaXIoYXJnKSBhcyBpdDoKICAgICAgICAgICAgICAgIGZvciBlbnRyeSBpbiBpdDoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkaXJvbmx5IG9yIGVudHJ5LmlzX2RpcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZnNlbmNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnNlbmNvZGUoZW50cnkubmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZW50cnkubmFtZQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgaWYgZmQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHJldHVybgoKZGVmIF9saXN0ZGlyKGRpcm5hbWUsIGRpcl9mZCwgZGlyb25seSk6CiAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhfaXRlcmRpcihkaXJuYW1lLCBkaXJfZmQsIGRpcm9ubHkpKSBhcyBpdDoKICAgICAgICByZXR1cm4gbGlzdChpdCkKCiMgUmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KZGVmIF9ybGlzdGRpcihkaXJuYW1lLCBkaXJfZmQsIGRpcm9ubHksIGluY2x1ZGVfaGlkZGVuPUZhbHNlKToKICAgIG5hbWVzID0gX2xpc3RkaXIoZGlybmFtZSwgZGlyX2ZkLCBkaXJvbmx5KQogICAgZm9yIHggaW4gbmFtZXM6CiAgICAgICAgaWYgaW5jbHVkZV9oaWRkZW4gb3Igbm90IF9pc2hpZGRlbih4KToKICAgICAgICAgICAgeWllbGQgeAogICAgICAgICAgICBwYXRoID0gX2pvaW4oZGlybmFtZSwgeCkgaWYgZGlybmFtZSBlbHNlIHgKICAgICAgICAgICAgZm9yIHkgaW4gX3JsaXN0ZGlyKHBhdGgsIGRpcl9mZCwgZGlyb25seSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfaGlkZGVuPWluY2x1ZGVfaGlkZGVuKToKICAgICAgICAgICAgICAgIHlpZWxkIF9qb2luKHgsIHkpCgoKZGVmIF9sZXhpc3RzKHBhdGhuYW1lLCBkaXJfZmQpOgogICAgIyBTYW1lIGFzIG9zLnBhdGgubGV4aXN0cygpLCBidXQgd2l0aCBkaXJfZmQKICAgIGlmIGRpcl9mZCBpcyBOb25lOgogICAgICAgIHJldHVybiBvcy5wYXRoLmxleGlzdHMocGF0aG5hbWUpCiAgICB0cnk6CiAgICAgICAgb3MubHN0YXQocGF0aG5hbWUsIGRpcl9mZD1kaXJfZmQpCiAgICBleGNlcHQgKE9TRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgIHJldHVybiBGYWxzZQogICAgZWxzZToKICAgICAgICByZXR1cm4gVHJ1ZQoKZGVmIF9pc2RpcihwYXRobmFtZSwgZGlyX2ZkKToKICAgICMgU2FtZSBhcyBvcy5wYXRoLmlzZGlyKCksIGJ1dCB3aXRoIGRpcl9mZAogICAgaWYgZGlyX2ZkIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNkaXIocGF0aG5hbWUpCiAgICB0cnk6CiAgICAgICAgc3QgPSBvcy5zdGF0KHBhdGhuYW1lLCBkaXJfZmQ9ZGlyX2ZkKQogICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIHN0YXQuU19JU0RJUihzdC5zdF9tb2RlKQoKZGVmIF9qb2luKGRpcm5hbWUsIGJhc2VuYW1lKToKICAgICMgSXQgaXMgY29tbW9uIGlmIGRpcm5hbWUgb3IgYmFzZW5hbWUgaXMgZW1wdHkKICAgIGlmIG5vdCBkaXJuYW1lIG9yIG5vdCBiYXNlbmFtZToKICAgICAgICByZXR1cm4gZGlybmFtZSBvciBiYXNlbmFtZQogICAgcmV0dXJuIG9zLnBhdGguam9pbihkaXJuYW1lLCBiYXNlbmFtZSkKCm1hZ2ljX2NoZWNrID0gcmUuY29tcGlsZSgnKFsqP1tdKScpCm1hZ2ljX2NoZWNrX2J5dGVzID0gcmUuY29tcGlsZShiJyhbKj9bXSknKQoKZGVmIGhhc19tYWdpYyhzKToKICAgIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgogICAgICAgIG1hdGNoID0gbWFnaWNfY2hlY2tfYnl0ZXMuc2VhcmNoKHMpCiAgICBlbHNlOgogICAgICAgIG1hdGNoID0gbWFnaWNfY2hlY2suc2VhcmNoKHMpCiAgICByZXR1cm4gbWF0Y2ggaXMgbm90IE5vbmUKCmRlZiBfaXNoaWRkZW4ocGF0aCk6CiAgICByZXR1cm4gcGF0aFswXSBpbiAoJy4nLCBiJy4nWzBdKQoKZGVmIF9pc3JlY3Vyc2l2ZShwYXR0ZXJuKToKICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgYnl0ZXMpOgogICAgICAgIHJldHVybiBwYXR0ZXJuID09IGInKionCiAgICBlbHNlOgogICAgICAgIHJldHVybiBwYXR0ZXJuID09ICcqKicKCmRlZiBlc2NhcGUocGF0aG5hbWUpOgogICAgIiIiRXNjYXBlIGFsbCBzcGVjaWFsIGNoYXJhY3RlcnMuCiAgICAiIiIKICAgICMgRXNjYXBpbmcgaXMgZG9uZSBieSB3cmFwcGluZyBhbnkgb2YgIio/WyIgYmV0d2VlbiBzcXVhcmUgYnJhY2tldHMuCiAgICAjIE1ldGFjaGFyYWN0ZXJzIGRvIG5vdCB3b3JrIGluIHRoZSBkcml2ZSBwYXJ0IGFuZCBzaG91bGRuJ3QgYmUgZXNjYXBlZC4KICAgIGRyaXZlLCBwYXRobmFtZSA9IG9zLnBhdGguc3BsaXRkcml2ZShwYXRobmFtZSkKICAgIGlmIGlzaW5zdGFuY2UocGF0aG5hbWUsIGJ5dGVzKToKICAgICAgICBwYXRobmFtZSA9IG1hZ2ljX2NoZWNrX2J5dGVzLnN1YihicidbXDFdJywgcGF0aG5hbWUpCiAgICBlbHNlOgogICAgICAgIHBhdGhuYW1lID0gbWFnaWNfY2hlY2suc3ViKHInW1wxXScsIHBhdGhuYW1lKQogICAgcmV0dXJuIGRyaXZlICsgcGF0aG5hbWUKCgpfZGlyX29wZW5fZmxhZ3MgPSBvcy5PX1JET05MWSB8IGdldGF0dHIob3MsICdPX0RJUkVDVE9SWScsIDApClBLAwQUAAAAAAACIKNWDkXkkbglAAC4JQAACwAAAGdyYXBobGliLnB5ZnJvbSB0eXBlcyBpbXBvcnQgR2VuZXJpY0FsaWFzCgpfX2FsbF9fID0gWyJUb3BvbG9naWNhbFNvcnRlciIsICJDeWNsZUVycm9yIl0KCl9OT0RFX09VVCA9IC0xCl9OT0RFX0RPTkUgPSAtMgoKCmNsYXNzIF9Ob2RlSW5mbzoKICAgIF9fc2xvdHNfXyA9ICJub2RlIiwgIm5wcmVkZWNlc3NvcnMiLCAic3VjY2Vzc29ycyIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZSk6CiAgICAgICAgIyBUaGUgbm9kZSB0aGlzIGNsYXNzIGlzIGF1Z21lbnRpbmcuCiAgICAgICAgc2VsZi5ub2RlID0gbm9kZQoKICAgICAgICAjIE51bWJlciBvZiBwcmVkZWNlc3NvcnMsIGdlbmVyYWxseSA+PSAwLiBXaGVuIHRoaXMgdmFsdWUgZmFsbHMgdG8gMCwKICAgICAgICAjIGFuZCBpcyByZXR1cm5lZCBieSBnZXRfcmVhZHkoKSwgdGhpcyBpcyBzZXQgdG8gX05PREVfT1VUIGFuZCB3aGVuIHRoZQogICAgICAgICMgbm9kZSBpcyBtYXJrZWQgZG9uZSBieSBhIGNhbGwgdG8gZG9uZSgpLCBzZXQgdG8gX05PREVfRE9ORS4KICAgICAgICBzZWxmLm5wcmVkZWNlc3NvcnMgPSAwCgogICAgICAgICMgTGlzdCBvZiBzdWNjZXNzb3Igbm9kZXMuIFRoZSBsaXN0IGNhbiBjb250YWluIGR1cGxpY2F0ZWQgZWxlbWVudHMgYXMKICAgICAgICAjIGxvbmcgYXMgdGhleSdyZSBhbGwgcmVmbGVjdGVkIGluIHRoZSBzdWNjZXNzb3IncyBucHJlZGVjZXNzb3JzIGF0dHJpYnV0ZS4KICAgICAgICBzZWxmLnN1Y2Nlc3NvcnMgPSBbXQoKCmNsYXNzIEN5Y2xlRXJyb3IoVmFsdWVFcnJvcik6CiAgICAiIiJTdWJjbGFzcyBvZiBWYWx1ZUVycm9yIHJhaXNlZCBieSBUb3BvbG9naWNhbFNvcnRlci5wcmVwYXJlIGlmIGN5Y2xlcwogICAgZXhpc3QgaW4gdGhlIHdvcmtpbmcgZ3JhcGguCgogICAgSWYgbXVsdGlwbGUgY3ljbGVzIGV4aXN0LCBvbmx5IG9uZSB1bmRlZmluZWQgY2hvaWNlIGFtb25nIHRoZW0gd2lsbCBiZSByZXBvcnRlZAogICAgYW5kIGluY2x1ZGVkIGluIHRoZSBleGNlcHRpb24uIFRoZSBkZXRlY3RlZCBjeWNsZSBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZSBzZWNvbmQKICAgIGVsZW1lbnQgaW4gdGhlICphcmdzKiBhdHRyaWJ1dGUgb2YgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgY29uc2lzdHMgaW4gYSBsaXN0CiAgICBvZiBub2Rlcywgc3VjaCB0aGF0IGVhY2ggbm9kZSBpcywgaW4gdGhlIGdyYXBoLCBhbiBpbW1lZGlhdGUgcHJlZGVjZXNzb3Igb2YgdGhlCiAgICBuZXh0IG5vZGUgaW4gdGhlIGxpc3QuIEluIHRoZSByZXBvcnRlZCBsaXN0LCB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IG5vZGUgd2lsbCBiZQogICAgdGhlIHNhbWUsIHRvIG1ha2UgaXQgY2xlYXIgdGhhdCBpdCBpcyBjeWNsaWMuCiAgICAiIiIKCiAgICBwYXNzCgoKY2xhc3MgVG9wb2xvZ2ljYWxTb3J0ZXI6CiAgICAiIiJQcm92aWRlcyBmdW5jdGlvbmFsaXR5IHRvIHRvcG9sb2dpY2FsbHkgc29ydCBhIGdyYXBoIG9mIGhhc2hhYmxlIG5vZGVzIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyYXBoPU5vbmUpOgogICAgICAgIHNlbGYuX25vZGUyaW5mbyA9IHt9CiAgICAgICAgc2VsZi5fcmVhZHlfbm9kZXMgPSBOb25lCiAgICAgICAgc2VsZi5fbnBhc3NlZG91dCA9IDAKICAgICAgICBzZWxmLl9uZmluaXNoZWQgPSAwCgogICAgICAgIGlmIGdyYXBoIGlzIG5vdCBOb25lOgogICAgICAgICAgICBmb3Igbm9kZSwgcHJlZGVjZXNzb3JzIGluIGdyYXBoLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBzZWxmLmFkZChub2RlLCAqcHJlZGVjZXNzb3JzKQoKICAgIGRlZiBfZ2V0X25vZGVpbmZvKHNlbGYsIG5vZGUpOgogICAgICAgIGlmIChyZXN1bHQgOj0gc2VsZi5fbm9kZTJpbmZvLmdldChub2RlKSkgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fbm9kZTJpbmZvW25vZGVdID0gcmVzdWx0ID0gX05vZGVJbmZvKG5vZGUpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBhZGQoc2VsZiwgbm9kZSwgKnByZWRlY2Vzc29ycyk6CiAgICAgICAgIiIiQWRkIGEgbmV3IG5vZGUgYW5kIGl0cyBwcmVkZWNlc3NvcnMgdG8gdGhlIGdyYXBoLgoKICAgICAgICBCb3RoIHRoZSAqbm9kZSogYW5kIGFsbCBlbGVtZW50cyBpbiAqcHJlZGVjZXNzb3JzKiBtdXN0IGJlIGhhc2hhYmxlLgoKICAgICAgICBJZiBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBub2RlIGFyZ3VtZW50LCB0aGUgc2V0IG9mIGRlcGVuZGVuY2llcwogICAgICAgIHdpbGwgYmUgdGhlIHVuaW9uIG9mIGFsbCBkZXBlbmRlbmNpZXMgcGFzc2VkIGluLgoKICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBhZGQgYSBub2RlIHdpdGggbm8gZGVwZW5kZW5jaWVzICgqcHJlZGVjZXNzb3JzKiBpcyBub3QgcHJvdmlkZWQpCiAgICAgICAgYXMgd2VsbCBhcyBwcm92aWRlIGEgZGVwZW5kZW5jeSB0d2ljZS4gSWYgYSBub2RlIHRoYXQgaGFzIG5vdCBiZWVuIHByb3ZpZGVkIGJlZm9yZQogICAgICAgIGlzIGluY2x1ZGVkIGFtb25nICpwcmVkZWNlc3NvcnMqIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZ3JhcGggd2l0aAogICAgICAgIG5vIHByZWRlY2Vzc29ycyBvZiBpdHMgb3duLgoKICAgICAgICBSYWlzZXMgVmFsdWVFcnJvciBpZiBjYWxsZWQgYWZ0ZXIgInByZXBhcmUiLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3JlYWR5X25vZGVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJOb2RlcyBjYW5ub3QgYmUgYWRkZWQgYWZ0ZXIgYSBjYWxsIHRvIHByZXBhcmUoKSIpCgogICAgICAgICMgQ3JlYXRlIHRoZSBub2RlIC0+IHByZWRlY2Vzc29yIGVkZ2VzCiAgICAgICAgbm9kZWluZm8gPSBzZWxmLl9nZXRfbm9kZWluZm8obm9kZSkKICAgICAgICBub2RlaW5mby5ucHJlZGVjZXNzb3JzICs9IGxlbihwcmVkZWNlc3NvcnMpCgogICAgICAgICMgQ3JlYXRlIHRoZSBwcmVkZWNlc3NvciAtPiBub2RlIGVkZ2VzCiAgICAgICAgZm9yIHByZWQgaW4gcHJlZGVjZXNzb3JzOgogICAgICAgICAgICBwcmVkX2luZm8gPSBzZWxmLl9nZXRfbm9kZWluZm8ocHJlZCkKICAgICAgICAgICAgcHJlZF9pbmZvLnN1Y2Nlc3NvcnMuYXBwZW5kKG5vZGUpCgogICAgZGVmIHByZXBhcmUoc2VsZik6CiAgICAgICAgIiIiTWFyayB0aGUgZ3JhcGggYXMgZmluaXNoZWQgYW5kIGNoZWNrIGZvciBjeWNsZXMgaW4gdGhlIGdyYXBoLgoKICAgICAgICBJZiBhbnkgY3ljbGUgaXMgZGV0ZWN0ZWQsICJDeWNsZUVycm9yIiB3aWxsIGJlIHJhaXNlZCwgYnV0ICJnZXRfcmVhZHkiIGNhbgogICAgICAgIHN0aWxsIGJlIHVzZWQgdG8gb2J0YWluIGFzIG1hbnkgbm9kZXMgYXMgcG9zc2libGUgdW50aWwgY3ljbGVzIGJsb2NrIG1vcmUKICAgICAgICBwcm9ncmVzcy4gQWZ0ZXIgYSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24sIHRoZSBncmFwaCBjYW5ub3QgYmUgbW9kaWZpZWQgYW5kCiAgICAgICAgdGhlcmVmb3JlIG5vIG1vcmUgbm9kZXMgY2FuIGJlIGFkZGVkIHVzaW5nICJhZGQiLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3JlYWR5X25vZGVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgcHJlcGFyZSgpIG1vcmUgdGhhbiBvbmNlIikKCiAgICAgICAgc2VsZi5fcmVhZHlfbm9kZXMgPSBbCiAgICAgICAgICAgIGkubm9kZSBmb3IgaSBpbiBzZWxmLl9ub2RlMmluZm8udmFsdWVzKCkgaWYgaS5ucHJlZGVjZXNzb3JzID09IDAKICAgICAgICBdCiAgICAgICAgIyByZWFkeV9ub2RlcyBpcyBzZXQgYmVmb3JlIHdlIGxvb2sgZm9yIGN5Y2xlcyBvbiBwdXJwb3NlOgogICAgICAgICMgaWYgdGhlIHVzZXIgd2FudHMgdG8gY2F0Y2ggdGhlIEN5Y2xlRXJyb3IsIHRoYXQncyBmaW5lLAogICAgICAgICMgdGhleSBjYW4gY29udGludWUgdXNpbmcgdGhlIGluc3RhbmNlIHRvIGdyYWIgYXMgbWFueQogICAgICAgICMgbm9kZXMgYXMgcG9zc2libGUgYmVmb3JlIGN5Y2xlcyBibG9jayBtb3JlIHByb2dyZXNzCiAgICAgICAgY3ljbGUgPSBzZWxmLl9maW5kX2N5Y2xlKCkKICAgICAgICBpZiBjeWNsZToKICAgICAgICAgICAgcmFpc2UgQ3ljbGVFcnJvcihmIm5vZGVzIGFyZSBpbiBhIGN5Y2xlIiwgY3ljbGUpCgogICAgZGVmIGdldF9yZWFkeShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSB0dXBsZSBvZiBhbGwgdGhlIG5vZGVzIHRoYXQgYXJlIHJlYWR5LgoKICAgICAgICBJbml0aWFsbHkgaXQgcmV0dXJucyBhbGwgbm9kZXMgd2l0aCBubyBwcmVkZWNlc3NvcnM7IG9uY2UgdGhvc2UgYXJlIG1hcmtlZAogICAgICAgIGFzIHByb2Nlc3NlZCBieSBjYWxsaW5nICJkb25lIiwgZnVydGhlciBjYWxscyB3aWxsIHJldHVybiBhbGwgbmV3IG5vZGVzIHRoYXQKICAgICAgICBoYXZlIGFsbCB0aGVpciBwcmVkZWNlc3NvcnMgYWxyZWFkeSBwcm9jZXNzZWQuIE9uY2Ugbm8gbW9yZSBwcm9ncmVzcyBjYW4gYmUgbWFkZSwKICAgICAgICBlbXB0eSB0dXBsZXMgYXJlIHJldHVybmVkLgoKICAgICAgICBSYWlzZXMgVmFsdWVFcnJvciBpZiBjYWxsZWQgd2l0aG91dCBjYWxsaW5nICJwcmVwYXJlIiBwcmV2aW91c2x5LgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3JlYWR5X25vZGVzIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInByZXBhcmUoKSBtdXN0IGJlIGNhbGxlZCBmaXJzdCIpCgogICAgICAgICMgR2V0IHRoZSBub2RlcyB0aGF0IGFyZSByZWFkeSBhbmQgbWFyayB0aGVtCiAgICAgICAgcmVzdWx0ID0gdHVwbGUoc2VsZi5fcmVhZHlfbm9kZXMpCiAgICAgICAgbjJpID0gc2VsZi5fbm9kZTJpbmZvCiAgICAgICAgZm9yIG5vZGUgaW4gcmVzdWx0OgogICAgICAgICAgICBuMmlbbm9kZV0ubnByZWRlY2Vzc29ycyA9IF9OT0RFX09VVAoKICAgICAgICAjIENsZWFuIHRoZSBsaXN0IG9mIG5vZGVzIHRoYXQgYXJlIHJlYWR5IGFuZCB1cGRhdGUKICAgICAgICAjIHRoZSBjb3VudGVyIG9mIG5vZGVzIHRoYXQgd2UgaGF2ZSByZXR1cm5lZC4KICAgICAgICBzZWxmLl9yZWFkeV9ub2Rlcy5jbGVhcigpCiAgICAgICAgc2VsZi5fbnBhc3NlZG91dCArPSBsZW4ocmVzdWx0KQoKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYGBUcnVlYGAgaWYgbW9yZSBwcm9ncmVzcyBjYW4gYmUgbWFkZSBhbmQgYGBGYWxzZWBgIG90aGVyd2lzZS4KCiAgICAgICAgUHJvZ3Jlc3MgY2FuIGJlIG1hZGUgaWYgY3ljbGVzIGRvIG5vdCBibG9jayB0aGUgcmVzb2x1dGlvbiBhbmQgZWl0aGVyIHRoZXJlCiAgICAgICAgYXJlIHN0aWxsIG5vZGVzIHJlYWR5IHRoYXQgaGF2ZW4ndCB5ZXQgYmVlbiByZXR1cm5lZCBieSAiZ2V0X3JlYWR5IiBvciB0aGUKICAgICAgICBudW1iZXIgb2Ygbm9kZXMgbWFya2VkICJkb25lIiBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciB0aGF0IGhhdmUgYmVlbiByZXR1cm5lZAogICAgICAgIGJ5ICJnZXRfcmVhZHkiLgoKICAgICAgICBSYWlzZXMgVmFsdWVFcnJvciBpZiBjYWxsZWQgd2l0aG91dCBjYWxsaW5nICJwcmVwYXJlIiBwcmV2aW91c2x5LgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3JlYWR5X25vZGVzIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInByZXBhcmUoKSBtdXN0IGJlIGNhbGxlZCBmaXJzdCIpCiAgICAgICAgcmV0dXJuIHNlbGYuX25maW5pc2hlZCA8IHNlbGYuX25wYXNzZWRvdXQgb3IgYm9vbChzZWxmLl9yZWFkeV9ub2RlcykKCiAgICBkZWYgX19ib29sX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuaXNfYWN0aXZlKCkKCiAgICBkZWYgZG9uZShzZWxmLCAqbm9kZXMpOgogICAgICAgICIiIk1hcmtzIGEgc2V0IG9mIG5vZGVzIHJldHVybmVkIGJ5ICJnZXRfcmVhZHkiIGFzIHByb2Nlc3NlZC4KCiAgICAgICAgVGhpcyBtZXRob2QgdW5ibG9ja3MgYW55IHN1Y2Nlc3NvciBvZiBlYWNoIG5vZGUgaW4gKm5vZGVzKiBmb3IgYmVpbmcgcmV0dXJuZWQKICAgICAgICBpbiB0aGUgZnV0dXJlIGJ5IGEgY2FsbCB0byAiZ2V0X3JlYWR5Ii4KCiAgICAgICAgUmFpc2VzIDpleGVjOmBWYWx1ZUVycm9yYCBpZiBhbnkgbm9kZSBpbiAqbm9kZXMqIGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGFzCiAgICAgICAgcHJvY2Vzc2VkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byB0aGlzIG1ldGhvZCwgaWYgYSBub2RlIHdhcyBub3QgYWRkZWQgdG8gdGhlCiAgICAgICAgZ3JhcGggYnkgdXNpbmcgImFkZCIgb3IgaWYgY2FsbGVkIHdpdGhvdXQgY2FsbGluZyAicHJlcGFyZSIgcHJldmlvdXNseSBvciBpZgogICAgICAgIG5vZGUgaGFzIG5vdCB5ZXQgYmVlbiByZXR1cm5lZCBieSAiZ2V0X3JlYWR5Ii4KICAgICAgICAiIiIKCiAgICAgICAgaWYgc2VsZi5fcmVhZHlfbm9kZXMgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHJlcGFyZSgpIG11c3QgYmUgY2FsbGVkIGZpcnN0IikKCiAgICAgICAgbjJpID0gc2VsZi5fbm9kZTJpbmZvCgogICAgICAgIGZvciBub2RlIGluIG5vZGVzOgoKICAgICAgICAgICAgIyBDaGVjayBpZiB3ZSBrbm93IGFib3V0IHRoaXMgbm9kZSAoaXQgd2FzIGFkZGVkIHByZXZpb3VzbHkgdXNpbmcgYWRkKCkKICAgICAgICAgICAgaWYgKG5vZGVpbmZvIDo9IG4yaS5nZXQobm9kZSkpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYibm9kZSB7bm9kZSFyfSB3YXMgbm90IGFkZGVkIHVzaW5nIGFkZCgpIikKCiAgICAgICAgICAgICMgSWYgdGhlIG5vZGUgaGFzIG5vdCBiZWluZyByZXR1cm5lZCAobWFya2VkIGFzIHJlYWR5KSBwcmV2aW91c2x5LCBpbmZvcm0gdGhlIHVzZXIuCiAgICAgICAgICAgIHN0YXQgPSBub2RlaW5mby5ucHJlZGVjZXNzb3JzCiAgICAgICAgICAgIGlmIHN0YXQgIT0gX05PREVfT1VUOgogICAgICAgICAgICAgICAgaWYgc3RhdCA+PSAwOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIGYibm9kZSB7bm9kZSFyfSB3YXMgbm90IHBhc3NlZCBvdXQgKHN0aWxsIG5vdCByZWFkeSkiCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgZWxpZiBzdGF0ID09IF9OT0RFX0RPTkU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIm5vZGUge25vZGUhcn0gd2FzIGFscmVhZHkgbWFya2VkIGRvbmUiKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UsIGYibm9kZSB7bm9kZSFyfTogdW5rbm93biBzdGF0dXMge3N0YXR9IgoKICAgICAgICAgICAgIyBNYXJrIHRoZSBub2RlIGFzIHByb2Nlc3NlZAogICAgICAgICAgICBub2RlaW5mby5ucHJlZGVjZXNzb3JzID0gX05PREVfRE9ORQoKICAgICAgICAgICAgIyBHbyB0byBhbGwgdGhlIHN1Y2Nlc3NvcnMgYW5kIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHByZWRlY2Vzc29ycywgY29sbGVjdGluZyBhbGwgdGhlIG9uZXMKICAgICAgICAgICAgIyB0aGF0IGFyZSByZWFkeSB0byBiZSByZXR1cm5lZCBpbiB0aGUgbmV4dCBnZXRfcmVhZHkoKSBjYWxsLgogICAgICAgICAgICBmb3Igc3VjY2Vzc29yIGluIG5vZGVpbmZvLnN1Y2Nlc3NvcnM6CiAgICAgICAgICAgICAgICBzdWNjZXNzb3JfaW5mbyA9IG4yaVtzdWNjZXNzb3JdCiAgICAgICAgICAgICAgICBzdWNjZXNzb3JfaW5mby5ucHJlZGVjZXNzb3JzIC09IDEKICAgICAgICAgICAgICAgIGlmIHN1Y2Nlc3Nvcl9pbmZvLm5wcmVkZWNlc3NvcnMgPT0gMDoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkeV9ub2Rlcy5hcHBlbmQoc3VjY2Vzc29yKQogICAgICAgICAgICBzZWxmLl9uZmluaXNoZWQgKz0gMQoKICAgIGRlZiBfZmluZF9jeWNsZShzZWxmKToKICAgICAgICBuMmkgPSBzZWxmLl9ub2RlMmluZm8KICAgICAgICBzdGFjayA9IFtdCiAgICAgICAgaXRzdGFjayA9IFtdCiAgICAgICAgc2VlbiA9IHNldCgpCiAgICAgICAgbm9kZTJzdGFja2kgPSB7fQoKICAgICAgICBmb3Igbm9kZSBpbiBuMmk6CiAgICAgICAgICAgIGlmIG5vZGUgaW4gc2VlbjoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgaWYgbm9kZSBpbiBzZWVuOgogICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBzZWVuIGFscmVhZHkgdGhlIG5vZGUgYW5kIGlzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICMgY3VycmVudCBzdGFjayB3ZSBoYXZlIGZvdW5kIGEgY3ljbGUuCiAgICAgICAgICAgICAgICAgICAgaWYgbm9kZSBpbiBub2RlMnN0YWNraToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YWNrW25vZGUyc3RhY2tpW25vZGVdIDpdICsgW25vZGVdCiAgICAgICAgICAgICAgICAgICAgIyBlbHNlIGdvIG9uIHRvIGdldCBuZXh0IHN1Y2Nlc3NvcgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZChub2RlKQogICAgICAgICAgICAgICAgICAgIGl0c3RhY2suYXBwZW5kKGl0ZXIobjJpW25vZGVdLnN1Y2Nlc3NvcnMpLl9fbmV4dF9fKQogICAgICAgICAgICAgICAgICAgIG5vZGUyc3RhY2tpW25vZGVdID0gbGVuKHN0YWNrKQogICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChub2RlKQoKICAgICAgICAgICAgICAgICMgQmFja3RyYWNrIHRvIHRoZSB0b3Btb3N0IHN0YWNrIGVudHJ5IHdpdGgKICAgICAgICAgICAgICAgICMgYXQgbGVhc3QgYW5vdGhlciBzdWNjZXNzb3IuCiAgICAgICAgICAgICAgICB3aGlsZSBzdGFjazoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBpdHN0YWNrWy0xXSgpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBub2RlMnN0YWNraVtzdGFjay5wb3AoKV0KICAgICAgICAgICAgICAgICAgICAgICAgaXRzdGFjay5wb3AoKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIHN0YXRpY19vcmRlcihzZWxmKToKICAgICAgICAiIiJSZXR1cm5zIGFuIGl0ZXJhYmxlIG9mIG5vZGVzIGluIGEgdG9wb2xvZ2ljYWwgb3JkZXIuCgogICAgICAgIFRoZSBwYXJ0aWN1bGFyIG9yZGVyIHRoYXQgaXMgcmV0dXJuZWQgbWF5IGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMKICAgICAgICBvcmRlciBpbiB3aGljaCB0aGUgaXRlbXMgd2VyZSBpbnNlcnRlZCBpbiB0aGUgZ3JhcGguCgogICAgICAgIFVzaW5nIHRoaXMgbWV0aG9kIGRvZXMgbm90IHJlcXVpcmUgdG8gY2FsbCAicHJlcGFyZSIgb3IgImRvbmUiLiBJZiBhbnkKICAgICAgICBjeWNsZSBpcyBkZXRlY3RlZCwgOmV4YzpgQ3ljbGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5wcmVwYXJlKCkKICAgICAgICB3aGlsZSBzZWxmLmlzX2FjdGl2ZSgpOgogICAgICAgICAgICBub2RlX2dyb3VwID0gc2VsZi5nZXRfcmVhZHkoKQogICAgICAgICAgICB5aWVsZCBmcm9tIG5vZGVfZ3JvdXAKICAgICAgICAgICAgc2VsZi5kb25lKCpub2RlX2dyb3VwKQoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQpQSwMEFAAAAAAAAiCjVgP8FJYKXgAACl4AAAcAAABnemlwLnB5IiIiRnVuY3Rpb25zIHRoYXQgcmVhZCBhbmQgd3JpdGUgZ3ppcHBlZCBmaWxlcy4KClRoZSB1c2VyIG9mIHRoZSBmaWxlIGRvZXNuJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGUgY29tcHJlc3Npb24sCmJ1dCByYW5kb20gYWNjZXNzIGlzIG5vdCBhbGxvd2VkLiIiIgoKIyBiYXNlZCBvbiBBbmRyZXcgS3VjaGxpbmcncyBtaW5pZ3ppcC5weSBkaXN0cmlidXRlZCB3aXRoIHRoZSB6bGliIG1vZHVsZQoKaW1wb3J0IHN0cnVjdCwgc3lzLCB0aW1lLCBvcwppbXBvcnQgemxpYgppbXBvcnQgYnVpbHRpbnMKaW1wb3J0IGlvCmltcG9ydCBfY29tcHJlc3Npb24KCl9fYWxsX18gPSBbIkJhZEd6aXBGaWxlIiwgIkd6aXBGaWxlIiwgIm9wZW4iLCAiY29tcHJlc3MiLCAiZGVjb21wcmVzcyJdCgpGVEVYVCwgRkhDUkMsIEZFWFRSQSwgRk5BTUUsIEZDT01NRU5UID0gMSwgMiwgNCwgOCwgMTYKClJFQUQsIFdSSVRFID0gMSwgMgoKX0NPTVBSRVNTX0xFVkVMX0ZBU1QgPSAxCl9DT01QUkVTU19MRVZFTF9UUkFERU9GRiA9IDYKX0NPTVBSRVNTX0xFVkVMX0JFU1QgPSA5CgoKZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgY29tcHJlc3NsZXZlbD1fQ09NUFJFU1NfTEVWRUxfQkVTVCwKICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAiIiJPcGVuIGEgZ3ppcC1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KCiAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwgb3IKICAgIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KCiAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJ4IiwgInhiIiwgImEiIG9yICJhYiIgZm9yCiAgICBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiwgInh0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IG1vZGUgaXMKICAgICJyYiIsIGFuZCB0aGUgZGVmYXVsdCBjb21wcmVzc2xldmVsIGlzIDkuCgogICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIEd6aXBGaWxlIGNvbnN0cnVjdG9yOgogICAgR3ppcEZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzCiAgICBhbmQgbmV3bGluZSBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCgogICAgRm9yIHRleHQgbW9kZSwgYSBHemlwRmlsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KICAgIGlvLlRleHRJT1dyYXBwZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvciBoYW5kbGluZwogICAgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KCiAgICAiIiIKICAgIGlmICJ0IiBpbiBtb2RlOgogICAgICAgIGlmICJiIiBpbiBtb2RlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6ICVyIiAlIChtb2RlLCkpCiAgICBlbHNlOgogICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZW5jb2RpbmcnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQogICAgICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2Vycm9ycycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCiAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ25ld2xpbmUnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQoKICAgIGd6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoZmlsZW5hbWUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwpCiAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CiAgICAgICAgYmluYXJ5X2ZpbGUgPSBHemlwRmlsZShOb25lLCBnel9tb2RlLCBjb21wcmVzc2xldmVsLCBmaWxlbmFtZSkKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKCiAgICBpZiAidCIgaW4gbW9kZToKICAgICAgICBlbmNvZGluZyA9IGlvLnRleHRfZW5jb2RpbmcoZW5jb2RpbmcpCiAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBiaW5hcnlfZmlsZQoKZGVmIHdyaXRlMzJ1KG91dHB1dCwgdmFsdWUpOgogICAgIyBUaGUgTCBmb3JtYXQgd3JpdGVzIHRoZSBiaXQgcGF0dGVybiBjb3JyZWN0bHkgd2hldGhlciBzaWduZWQKICAgICMgb3IgdW5zaWduZWQuCiAgICBvdXRwdXQud3JpdGUoc3RydWN0LnBhY2soIjxMIiwgdmFsdWUpKQoKY2xhc3MgX1BhZGRlZEZpbGU6CiAgICAiIiJNaW5pbWFsIHJlYWQtb25seSBmaWxlIG9iamVjdCB0aGF0IHByZXBlbmRzIGEgc3RyaW5nIHRvIHRoZSBjb250ZW50cwogICAgb2YgYW4gYWN0dWFsIGZpbGUuIFNob3VsZG4ndCBiZSB1c2VkIG91dHNpZGUgb2YgZ3ppcC5weSwgYXMgaXQgbGFja3MKICAgIGVzc2VudGlhbCBmdW5jdGlvbmFsaXR5LiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmLCBwcmVwZW5kPWInJyk6CiAgICAgICAgc2VsZi5fYnVmZmVyID0gcHJlcGVuZAogICAgICAgIHNlbGYuX2xlbmd0aCA9IGxlbihwcmVwZW5kKQogICAgICAgIHNlbGYuZmlsZSA9IGYKICAgICAgICBzZWxmLl9yZWFkID0gMAoKICAgIGRlZiByZWFkKHNlbGYsIHNpemUpOgogICAgICAgIGlmIHNlbGYuX3JlYWQgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5yZWFkKHNpemUpCiAgICAgICAgaWYgc2VsZi5fcmVhZCArIHNpemUgPD0gc2VsZi5fbGVuZ3RoOgogICAgICAgICAgICByZWFkID0gc2VsZi5fcmVhZAogICAgICAgICAgICBzZWxmLl9yZWFkICs9IHNpemUKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltyZWFkOnNlbGYuX3JlYWRdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVhZCA9IHNlbGYuX3JlYWQKICAgICAgICAgICAgc2VsZi5fcmVhZCA9IE5vbmUKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltyZWFkOl0gKyBcCiAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGUucmVhZChzaXplLXNlbGYuX2xlbmd0aCtyZWFkKQoKICAgIGRlZiBwcmVwZW5kKHNlbGYsIHByZXBlbmQ9YicnKToKICAgICAgICBpZiBzZWxmLl9yZWFkIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHByZXBlbmQKICAgICAgICBlbHNlOiAgIyBBc3N1bWUgZGF0YSB3YXMgcmVhZCBzaW5jZSB0aGUgbGFzdCBwcmVwZW5kKCkgY2FsbAogICAgICAgICAgICBzZWxmLl9yZWFkIC09IGxlbihwcmVwZW5kKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLl9sZW5ndGggPSBsZW4oc2VsZi5fYnVmZmVyKQogICAgICAgIHNlbGYuX3JlYWQgPSAwCgogICAgZGVmIHNlZWsoc2VsZiwgb2ZmKToKICAgICAgICBzZWxmLl9yZWFkID0gTm9uZQogICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5maWxlLnNlZWsob2ZmKQoKICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICByZXR1cm4gVHJ1ZSAgIyBBbGxvd3MgZmFzdC1mb3J3YXJkaW5nIGV2ZW4gaW4gdW5zZWVrYWJsZSBzdHJlYW1zCgoKY2xhc3MgQmFkR3ppcEZpbGUoT1NFcnJvcik6CiAgICAiIiJFeGNlcHRpb24gcmFpc2VkIGluIHNvbWUgY2FzZXMgZm9yIGludmFsaWQgZ3ppcCBmaWxlcy4iIiIKCgpjbGFzcyBHemlwRmlsZShfY29tcHJlc3Npb24uQmFzZVN0cmVhbSk6CiAgICAiIiJUaGUgR3ppcEZpbGUgY2xhc3Mgc2ltdWxhdGVzIG1vc3Qgb2YgdGhlIG1ldGhvZHMgb2YgYSBmaWxlIG9iamVjdCB3aXRoCiAgICB0aGUgZXhjZXB0aW9uIG9mIHRoZSB0cnVuY2F0ZSgpIG1ldGhvZC4KCiAgICBUaGlzIGNsYXNzIG9ubHkgc3VwcG9ydHMgb3BlbmluZyBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gSWYgeW91IG5lZWQgdG8gb3BlbiBhCiAgICBjb21wcmVzc2VkIGZpbGUgaW4gdGV4dCBtb2RlLCB1c2UgdGhlIGd6aXAub3BlbigpIGZ1bmN0aW9uLgoKICAgICIiIgoKICAgICMgT3ZlcnJpZGRlbiB3aXRoIGludGVybmFsIGZpbGUgb2JqZWN0IHRvIGJlIGNsb3NlZCwgaWYgb25seSBhIGZpbGVuYW1lCiAgICAjIGlzIHBhc3NlZCBpbgogICAgbXlmaWxlb2JqID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZT1Ob25lLCBtb2RlPU5vbmUsCiAgICAgICAgICAgICAgICAgY29tcHJlc3NsZXZlbD1fQ09NUFJFU1NfTEVWRUxfQkVTVCwgZmlsZW9iaj1Ob25lLCBtdGltZT1Ob25lKToKICAgICAgICAiIiJDb25zdHJ1Y3RvciBmb3IgdGhlIEd6aXBGaWxlIGNsYXNzLgoKICAgICAgICBBdCBsZWFzdCBvbmUgb2YgZmlsZW9iaiBhbmQgZmlsZW5hbWUgbXVzdCBiZSBnaXZlbiBhCiAgICAgICAgbm9uLXRyaXZpYWwgdmFsdWUuCgogICAgICAgIFRoZSBuZXcgY2xhc3MgaW5zdGFuY2UgaXMgYmFzZWQgb24gZmlsZW9iaiwgd2hpY2ggY2FuIGJlIGEgcmVndWxhcgogICAgICAgIGZpbGUsIGFuIGlvLkJ5dGVzSU8gb2JqZWN0LCBvciBhbnkgb3RoZXIgb2JqZWN0IHdoaWNoIHNpbXVsYXRlcyBhIGZpbGUuCiAgICAgICAgSXQgZGVmYXVsdHMgdG8gTm9uZSwgaW4gd2hpY2ggY2FzZSBmaWxlbmFtZSBpcyBvcGVuZWQgdG8gcHJvdmlkZQogICAgICAgIGEgZmlsZSBvYmplY3QuCgogICAgICAgIFdoZW4gZmlsZW9iaiBpcyBub3QgTm9uZSwgdGhlIGZpbGVuYW1lIGFyZ3VtZW50IGlzIG9ubHkgdXNlZCB0byBiZQogICAgICAgIGluY2x1ZGVkIGluIHRoZSBnemlwIGZpbGUgaGVhZGVyLCB3aGljaCBtYXkgaW5jbHVkZSB0aGUgb3JpZ2luYWwKICAgICAgICBmaWxlbmFtZSBvZiB0aGUgdW5jb21wcmVzc2VkIGZpbGUuICBJdCBkZWZhdWx0cyB0byB0aGUgZmlsZW5hbWUgb2YKICAgICAgICBmaWxlb2JqLCBpZiBkaXNjZXJuaWJsZTsgb3RoZXJ3aXNlLCBpdCBkZWZhdWx0cyB0byB0aGUgZW1wdHkgc3RyaW5nLAogICAgICAgIGFuZCBpbiB0aGlzIGNhc2UgdGhlIG9yaWdpbmFsIGZpbGVuYW1lIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgaGVhZGVyLgoKICAgICAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgYW55IG9mICdyJywgJ3JiJywgJ2EnLCAnYWInLCAndycsICd3YicsICd4Jywgb3IKICAgICAgICAneGInIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmaWxlIHdpbGwgYmUgcmVhZCBvciB3cml0dGVuLiAgVGhlIGRlZmF1bHQKICAgICAgICBpcyB0aGUgbW9kZSBvZiBmaWxlb2JqIGlmIGRpc2Nlcm5pYmxlOyBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzICdyYicuCiAgICAgICAgQSBtb2RlIG9mICdyJyBpcyBlcXVpdmFsZW50IHRvIG9uZSBvZiAncmInLCBhbmQgc2ltaWxhcmx5IGZvciAndycgYW5kCiAgICAgICAgJ3diJywgJ2EnIGFuZCAnYWInLCBhbmQgJ3gnIGFuZCAneGInLgoKICAgICAgICBUaGUgY29tcHJlc3NsZXZlbCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gMCB0byA5IGNvbnRyb2xsaW5nIHRoZQogICAgICAgIGxldmVsIG9mIGNvbXByZXNzaW9uOyAxIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwKICAgICAgICBhbmQgOSBpcyBzbG93ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbW9zdCBjb21wcmVzc2lvbi4gMCBpcyBubyBjb21wcmVzc2lvbgogICAgICAgIGF0IGFsbC4gVGhlIGRlZmF1bHQgaXMgOS4KCiAgICAgICAgVGhlIG10aW1lIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIG51bWVyaWMgdGltZXN0YW1wIHRvIGJlIHdyaXR0ZW4KICAgICAgICB0byB0aGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBmaWVsZCBpbiB0aGUgc3RyZWFtIHdoZW4gY29tcHJlc3NpbmcuCiAgICAgICAgSWYgb21pdHRlZCBvciBOb25lLCB0aGUgY3VycmVudCB0aW1lIGlzIHVzZWQuCgogICAgICAgICIiIgoKICAgICAgICBpZiBtb2RlIGFuZCAoJ3QnIGluIG1vZGUgb3IgJ1UnIGluIG1vZGUpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKICAgICAgICBpZiBtb2RlIGFuZCAnYicgbm90IGluIG1vZGU6CiAgICAgICAgICAgIG1vZGUgKz0gJ2InCiAgICAgICAgaWYgZmlsZW9iaiBpcyBOb25lOgogICAgICAgICAgICBmaWxlb2JqID0gc2VsZi5teWZpbGVvYmogPSBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCBtb2RlIG9yICdyYicpCiAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICAgICAgZmlsZW5hbWUgPSBnZXRhdHRyKGZpbGVvYmosICduYW1lJywgJycpCiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAnJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgICAgIG9yaWdtb2RlID0gbW9kZQogICAgICAgIGlmIG1vZGUgaXMgTm9uZToKICAgICAgICAgICAgbW9kZSA9IGdldGF0dHIoZmlsZW9iaiwgJ21vZGUnLCAncmInKQoKICAgICAgICBpZiBtb2RlLnN0YXJ0c3dpdGgoJ3InKToKICAgICAgICAgICAgc2VsZi5tb2RlID0gUkVBRAogICAgICAgICAgICByYXcgPSBfR3ppcFJlYWRlcihmaWxlb2JqKQogICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBpby5CdWZmZXJlZFJlYWRlcihyYXcpCiAgICAgICAgICAgIHNlbGYubmFtZSA9IGZpbGVuYW1lCgogICAgICAgIGVsaWYgbW9kZS5zdGFydHN3aXRoKCgndycsICdhJywgJ3gnKSk6CiAgICAgICAgICAgIGlmIG9yaWdtb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICAgICAgIkd6aXBGaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcsIGJ1dCB0aGlzIHdpbGwgIgogICAgICAgICAgICAgICAgICAgICJjaGFuZ2UgaW4gZnV0dXJlIFB5dGhvbiByZWxlYXNlcy4gICIKICAgICAgICAgICAgICAgICAgICAiU3BlY2lmeSB0aGUgbW9kZSBhcmd1bWVudCBmb3Igb3BlbmluZyBpdCBmb3Igd3JpdGluZy4iLAogICAgICAgICAgICAgICAgICAgIEZ1dHVyZVdhcm5pbmcsIDIpCiAgICAgICAgICAgIHNlbGYubW9kZSA9IFdSSVRFCiAgICAgICAgICAgIHNlbGYuX2luaXRfd3JpdGUoZmlsZW5hbWUpCiAgICAgICAgICAgIHNlbGYuY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKGNvbXByZXNzbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC16bGliLk1BWF9XQklUUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemxpYi5ERUZfTUVNX0xFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKQogICAgICAgICAgICBzZWxmLl93cml0ZV9tdGltZSA9IG10aW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCgogICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKCiAgICAgICAgaWYgc2VsZi5tb2RlID09IFdSSVRFOgogICAgICAgICAgICBzZWxmLl93cml0ZV9nemlwX2hlYWRlcihjb21wcmVzc2xldmVsKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGZpbGVuYW1lKHNlbGYpOgogICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgIHdhcm5pbmdzLndhcm4oInVzZSB0aGUgbmFtZSBhdHRyaWJ1dGUiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgaWYgc2VsZi5tb2RlID09IFdSSVRFIGFuZCBzZWxmLm5hbWVbLTM6XSAhPSAiLmd6IjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZSArICIuZ3oiCiAgICAgICAgcmV0dXJuIHNlbGYubmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG10aW1lKHNlbGYpOgogICAgICAgICIiIkxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgcmVhZCBmcm9tIHN0cmVhbSwgb3IgTm9uZSIiIgogICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmF3Ll9sYXN0X210aW1lCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHMgPSByZXByKHNlbGYuZmlsZW9iaikKICAgICAgICByZXR1cm4gJzxnemlwICcgKyBzWzE6LTFdICsgJyAnICsgaGV4KGlkKHNlbGYpKSArICc+JwoKICAgIGRlZiBfaW5pdF93cml0ZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgc2VsZi5uYW1lID0gZmlsZW5hbWUKICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoYiIiKQogICAgICAgIHNlbGYuc2l6ZSA9IDAKICAgICAgICBzZWxmLndyaXRlYnVmID0gW10KICAgICAgICBzZWxmLmJ1ZnNpemUgPSAwCiAgICAgICAgc2VsZi5vZmZzZXQgPSAwICAjIEN1cnJlbnQgZmlsZSBvZmZzZXQgZm9yIHNlZWsoKSwgdGVsbCgpLCBldGMKCiAgICBkZWYgX3dyaXRlX2d6aXBfaGVhZGVyKHNlbGYsIGNvbXByZXNzbGV2ZWwpOgogICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShiJ1wwMzdcMjEzJykgICAgICAgICAgICAgIyBtYWdpYyBoZWFkZXIKICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoYidcMDEwJykgICAgICAgICAgICAgICAgICMgY29tcHJlc3Npb24gbWV0aG9kCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIFJGQyAxOTUyIHJlcXVpcmVzIHRoZSBGTkFNRSBmaWVsZCB0byBiZSBMYXRpbi0xLiBEbyBub3QKICAgICAgICAgICAgIyBpbmNsdWRlIGZpbGVuYW1lcyB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCB0aGF0IHdheS4KICAgICAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYubmFtZSkKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZm5hbWUsIGJ5dGVzKToKICAgICAgICAgICAgICAgIGZuYW1lID0gZm5hbWUuZW5jb2RlKCdsYXRpbi0xJykKICAgICAgICAgICAgaWYgZm5hbWUuZW5kc3dpdGgoYicuZ3onKToKICAgICAgICAgICAgICAgIGZuYW1lID0gZm5hbWVbOi0zXQogICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgIGZuYW1lID0gYicnCiAgICAgICAgZmxhZ3MgPSAwCiAgICAgICAgaWYgZm5hbWU6CiAgICAgICAgICAgIGZsYWdzID0gRk5BTUUKICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoY2hyKGZsYWdzKS5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICBtdGltZSA9IHNlbGYuX3dyaXRlX210aW1lCiAgICAgICAgaWYgbXRpbWUgaXMgTm9uZToKICAgICAgICAgICAgbXRpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgIHdyaXRlMzJ1KHNlbGYuZmlsZW9iaiwgaW50KG10aW1lKSkKICAgICAgICBpZiBjb21wcmVzc2xldmVsID09IF9DT01QUkVTU19MRVZFTF9CRVNUOgogICAgICAgICAgICB4ZmwgPSBiJ1wwMDInCiAgICAgICAgZWxpZiBjb21wcmVzc2xldmVsID09IF9DT01QUkVTU19MRVZFTF9GQVNUOgogICAgICAgICAgICB4ZmwgPSBiJ1wwMDQnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgeGZsID0gYidcMDAwJwogICAgICAgIHNlbGYuZmlsZW9iai53cml0ZSh4ZmwpCiAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKGInXDM3NycpCiAgICAgICAgaWYgZm5hbWU6CiAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShmbmFtZSArIGInXDAwMCcpCgogICAgZGVmIHdyaXRlKHNlbGYsZGF0YSk6CiAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgaWYgc2VsZi5tb2RlICE9IFdSSVRFOgogICAgICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FQkFERiwgIndyaXRlKCkgb24gcmVhZC1vbmx5IEd6aXBGaWxlIG9iamVjdCIpCgogICAgICAgIGlmIHNlbGYuZmlsZW9iaiBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSgpIG9uIGNsb3NlZCBHemlwRmlsZSBvYmplY3QiKQoKICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5KSk6CiAgICAgICAgICAgIGxlbmd0aCA9IGxlbihkYXRhKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgYWNjZXB0IGFueSBkYXRhIHRoYXQgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbAogICAgICAgICAgICBkYXRhID0gbWVtb3J5dmlldyhkYXRhKQogICAgICAgICAgICBsZW5ndGggPSBkYXRhLm5ieXRlcwoKICAgICAgICBpZiBsZW5ndGggPiAwOgogICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoc2VsZi5jb21wcmVzcy5jb21wcmVzcyhkYXRhKSkKICAgICAgICAgICAgc2VsZi5zaXplICs9IGxlbmd0aAogICAgICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoZGF0YSwgc2VsZi5jcmMpCiAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGxlbmd0aAoKICAgICAgICByZXR1cm4gbGVuZ3RoCgogICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgIGltcG9ydCBlcnJubwogICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAicmVhZCgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWQoc2l6ZSkKCiAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgIiIiSW1wbGVtZW50cyBCdWZmZXJlZElPQmFzZS5yZWFkMSgpCgogICAgICAgIFJlYWRzIHVwIHRvIGEgYnVmZmVyJ3Mgd29ydGggb2YgZGF0YSBpZiBzaXplIGlzIG5lZ2F0aXZlLiIiIgogICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgogICAgICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FQkFERiwgInJlYWQxKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQoKICAgICAgICBpZiBzaXplIDwgMDoKICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWQxKHNpemUpCgogICAgZGVmIHBlZWsoc2VsZiwgbik6CiAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgIGltcG9ydCBlcnJubwogICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAicGVlaygpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnBlZWsobikKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjbG9zZWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iaiBpcyBOb25lCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGZpbGVvYmogPSBzZWxmLmZpbGVvYmoKICAgICAgICBpZiBmaWxlb2JqIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuZmlsZW9iaiA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYubW9kZSA9PSBXUklURToKICAgICAgICAgICAgICAgIGZpbGVvYmoud3JpdGUoc2VsZi5jb21wcmVzcy5mbHVzaCgpKQogICAgICAgICAgICAgICAgd3JpdGUzMnUoZmlsZW9iaiwgc2VsZi5jcmMpCiAgICAgICAgICAgICAgICAjIHNlbGYuc2l6ZSBtYXkgZXhjZWVkIDIgR2lCLCBvciBldmVuIDQgR2lCCiAgICAgICAgICAgICAgICB3cml0ZTMydShmaWxlb2JqLCBzZWxmLnNpemUgJiAweGZmZmZmZmZmKQogICAgICAgICAgICBlbGlmIHNlbGYubW9kZSA9PSBSRUFEOgogICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsb3NlKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBteWZpbGVvYmogPSBzZWxmLm15ZmlsZW9iagogICAgICAgICAgICBpZiBteWZpbGVvYmo6CiAgICAgICAgICAgICAgICBzZWxmLm15ZmlsZW9iaiA9IE5vbmUKICAgICAgICAgICAgICAgIG15ZmlsZW9iai5jbG9zZSgpCgogICAgZGVmIGZsdXNoKHNlbGYsemxpYl9tb2RlPXpsaWIuWl9TWU5DX0ZMVVNIKToKICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICBpZiBzZWxmLm1vZGUgPT0gV1JJVEU6CiAgICAgICAgICAgICMgRW5zdXJlIHRoZSBjb21wcmVzc29yJ3MgYnVmZmVyIGlzIGZsdXNoZWQKICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHNlbGYuY29tcHJlc3MuZmx1c2goemxpYl9tb2RlKSkKICAgICAgICAgICAgc2VsZi5maWxlb2JqLmZsdXNoKCkKCiAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgICIiIkludm9rZSB0aGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCdzIGZpbGVubygpIG1ldGhvZC4KCiAgICAgICAgVGhpcyB3aWxsIHJhaXNlIEF0dHJpYnV0ZUVycm9yIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0CiAgICAgICAgZG9lc24ndCBzdXBwb3J0IGZpbGVubygpLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLmZpbGVvYmouZmlsZW5vKCkKCiAgICBkZWYgcmV3aW5kKHNlbGYpOgogICAgICAgICcnJ1JldHVybiB0aGUgdW5jb21wcmVzc2VkIHN0cmVhbSBmaWxlIHBvc2l0aW9uIGluZGljYXRvciB0byB0aGUKICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIGZpbGUnJycKICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiQ2FuJ3QgcmV3aW5kIGluIHdyaXRlIG1vZGUiKQogICAgICAgIHNlbGYuX2J1ZmZlci5zZWVrKDApCgogICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLm1vZGUgPT0gUkVBRAoKICAgIGRlZiB3cml0YWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5tb2RlID09IFdSSVRFCgogICAgZGVmIHNlZWthYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9aW8uU0VFS19TRVQpOgogICAgICAgIGlmIHNlbGYubW9kZSA9PSBXUklURToKICAgICAgICAgICAgaWYgd2hlbmNlICE9IGlvLlNFRUtfU0VUOgogICAgICAgICAgICAgICAgaWYgd2hlbmNlID09IGlvLlNFRUtfQ1VSOgogICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0ICsgb2Zmc2V0CiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1NlZWsgZnJvbSBlbmQgbm90IHN1cHBvcnRlZCcpCiAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYub2Zmc2V0OgogICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgc2VlayBpbiB3cml0ZSBtb2RlJykKICAgICAgICAgICAgY291bnQgPSBvZmZzZXQgLSBzZWxmLm9mZnNldAogICAgICAgICAgICBjaHVuayA9IGInXDAnICogMTAyNAogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCAvLyAxMDI0KToKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoY2h1bmspCiAgICAgICAgICAgIHNlbGYud3JpdGUoYidcMCcgKiAoY291bnQgJSAxMDI0KSkKICAgICAgICBlbGlmIHNlbGYubW9kZSA9PSBSRUFEOgogICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5zZWVrKG9mZnNldCwgd2hlbmNlKQoKICAgICAgICByZXR1cm4gc2VsZi5vZmZzZXQKCiAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZShzaXplKQoKCmRlZiBfcmVhZF9leGFjdChmcCwgbik6CiAgICAnJydSZWFkIGV4YWN0bHkgKm4qIGJ5dGVzIGZyb20gYGZwYAoKICAgIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIGJlY2F1c2UgZnAgbWF5IGJlIHVuYnVmZmVyZWQsCiAgICBpLmUuIHJldHVybiBzaG9ydCByZWFkcy4KICAgICcnJwogICAgZGF0YSA9IGZwLnJlYWQobikKICAgIHdoaWxlIGxlbihkYXRhKSA8IG46CiAgICAgICAgYiA9IGZwLnJlYWQobiAtIGxlbihkYXRhKSkKICAgICAgICBpZiBub3QgYjoKICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKICAgICAgICBkYXRhICs9IGIKICAgIHJldHVybiBkYXRhCgoKZGVmIF9yZWFkX2d6aXBfaGVhZGVyKGZwKToKICAgICcnJ1JlYWQgYSBnemlwIGhlYWRlciBmcm9tIGBmcGAgYW5kIHByb2dyZXNzIHRvIHRoZSBlbmQgb2YgdGhlIGhlYWRlci4KCiAgICBSZXR1cm5zIGxhc3QgbXRpbWUgaWYgaGVhZGVyIHdhcyBwcmVzZW50IG9yIE5vbmUgb3RoZXJ3aXNlLgogICAgJycnCiAgICBtYWdpYyA9IGZwLnJlYWQoMikKICAgIGlmIG1hZ2ljID09IGInJzoKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGlmIG1hZ2ljICE9IGInXDAzN1wyMTMnOgogICAgICAgIHJhaXNlIEJhZEd6aXBGaWxlKCdOb3QgYSBnemlwcGVkIGZpbGUgKCVyKScgJSBtYWdpYykKCiAgICAobWV0aG9kLCBmbGFnLCBsYXN0X210aW1lKSA9IHN0cnVjdC51bnBhY2soIjxCQkl4eCIsIF9yZWFkX2V4YWN0KGZwLCA4KSkKICAgIGlmIG1ldGhvZCAhPSA4OgogICAgICAgIHJhaXNlIEJhZEd6aXBGaWxlKCdVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCcpCgogICAgaWYgZmxhZyAmIEZFWFRSQToKICAgICAgICAjIFJlYWQgJiBkaXNjYXJkIHRoZSBleHRyYSBmaWVsZCwgaWYgcHJlc2VudAogICAgICAgIGV4dHJhX2xlbiwgPSBzdHJ1Y3QudW5wYWNrKCI8SCIsIF9yZWFkX2V4YWN0KGZwLCAyKSkKICAgICAgICBfcmVhZF9leGFjdChmcCwgZXh0cmFfbGVuKQogICAgaWYgZmxhZyAmIEZOQU1FOgogICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgZmlsZW5hbWUKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBzID0gZnAucmVhZCgxKQogICAgICAgICAgICBpZiBub3QgcyBvciBzPT1iJ1wwMDAnOgogICAgICAgICAgICAgICAgYnJlYWsKICAgIGlmIGZsYWcgJiBGQ09NTUVOVDoKICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgYSBjb21tZW50CiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgcyA9IGZwLnJlYWQoMSkKICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICBpZiBmbGFnICYgRkhDUkM6CiAgICAgICAgX3JlYWRfZXhhY3QoZnAsIDIpICAgICAjIFJlYWQgJiBkaXNjYXJkIHRoZSAxNi1iaXQgaGVhZGVyIENSQwogICAgcmV0dXJuIGxhc3RfbXRpbWUKCgpjbGFzcyBfR3ppcFJlYWRlcihfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZnApOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oX1BhZGRlZEZpbGUoZnApLCB6bGliLmRlY29tcHJlc3NvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz0temxpYi5NQVhfV0JJVFMpCiAgICAgICAgIyBTZXQgZmxhZyBpbmRpY2F0aW5nIHN0YXJ0IG9mIGEgbmV3IG1lbWJlcgogICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCiAgICAgICAgc2VsZi5fbGFzdF9tdGltZSA9IE5vbmUKCiAgICBkZWYgX2luaXRfcmVhZChzZWxmKToKICAgICAgICBzZWxmLl9jcmMgPSB6bGliLmNyYzMyKGIiIikKICAgICAgICBzZWxmLl9zdHJlYW1fc2l6ZSA9IDAgICMgRGVjb21wcmVzc2VkIHNpemUgb2YgdW5jb25jYXRlbmF0ZWQgc3RyZWFtCgogICAgZGVmIF9yZWFkX2d6aXBfaGVhZGVyKHNlbGYpOgogICAgICAgIGxhc3RfbXRpbWUgPSBfcmVhZF9nemlwX2hlYWRlcihzZWxmLl9mcCkKICAgICAgICBpZiBsYXN0X210aW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHNlbGYuX2xhc3RfbXRpbWUgPSBsYXN0X210aW1lCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKICAgICAgICBpZiBzaXplIDwgMDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFsbCgpCiAgICAgICAgIyBzaXplPTAgaXMgc3BlY2lhbCBiZWNhdXNlIGRlY29tcHJlc3MobWF4X2xlbmd0aD0wKSBpcyBub3Qgc3VwcG9ydGVkCiAgICAgICAgaWYgbm90IHNpemU6CiAgICAgICAgICAgIHJldHVybiBiIiIKCiAgICAgICAgIyBGb3IgY2VydGFpbiBpbnB1dCBkYXRhLCBhIHNpbmdsZQogICAgICAgICMgY2FsbCB0byBkZWNvbXByZXNzKCkgbWF5IG5vdCByZXR1cm4KICAgICAgICAjIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHJldHJ5IHVudGlsIHdlIGdldCBzb21lIGRhdGEgb3IgcmVhY2ggRU9GLgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CiAgICAgICAgICAgICAgICAjIEVuZGluZyBjYXNlOiB3ZSd2ZSBjb21lIHRvIHRoZSBlbmQgb2YgYSBtZW1iZXIgaW4gdGhlIGZpbGUsCiAgICAgICAgICAgICAgICAjIHNvIGZpbmlzaCB1cCB0aGlzIG1lbWJlciwgYW5kIHJlYWQgYSBuZXcgZ3ppcCBoZWFkZXIuCiAgICAgICAgICAgICAgICAjIENoZWNrIHRoZSBDUkMgYW5kIGZpbGUgc2l6ZSwgYW5kIHNldCB0aGUgZmxhZyBzbyB3ZSByZWFkCiAgICAgICAgICAgICAgICAjIGEgbmV3IG1lbWJlcgogICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9lb2YoKQogICAgICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KAogICAgICAgICAgICAgICAgICAgICoqc2VsZi5fZGVjb21wX2FyZ3MpCgogICAgICAgICAgICBpZiBzZWxmLl9uZXdfbWVtYmVyOgogICAgICAgICAgICAgICAgIyBJZiB0aGUgX25ld19tZW1iZXIgZmxhZyBpcyBzZXQsIHdlIGhhdmUgdG8KICAgICAgICAgICAgICAgICMganVtcCB0byB0aGUgbmV4dCBtZW1iZXIsIGlmIHRoZXJlIGlzIG9uZS4KICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZCgpCiAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZF9nemlwX2hlYWRlcigpOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYiIiCiAgICAgICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gRmFsc2UKCiAgICAgICAgICAgICMgUmVhZCBhIGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgZmlsZQogICAgICAgICAgICBidWYgPSBzZWxmLl9mcC5yZWFkKGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUpCgogICAgICAgICAgICB1bmNvbXByZXNzID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MoYnVmLCBzaXplKQogICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsICE9IGIiIjoKICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbCkKICAgICAgICAgICAgZWxpZiBzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgIT0gYiIiOgogICAgICAgICAgICAgICAgIyBQcmVwZW5kIHRoZSBhbHJlYWR5IHJlYWQgYnl0ZXMgdG8gdGhlIGZpbGVvYmogc28gdGhleSBjYW4KICAgICAgICAgICAgICAgICMgYmUgc2VlbiBieSBfcmVhZF9lb2YoKSBhbmQgX3JlYWRfZ3ppcF9oZWFkZXIoKQogICAgICAgICAgICAgICAgc2VsZi5fZnAucHJlcGVuZChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEpCgogICAgICAgICAgICBpZiB1bmNvbXByZXNzICE9IGIiIjoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlmIGJ1ZiA9PSBiIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKCiAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSggdW5jb21wcmVzcyApCiAgICAgICAgc2VsZi5fcG9zICs9IGxlbih1bmNvbXByZXNzKQogICAgICAgIHJldHVybiB1bmNvbXByZXNzCgogICAgZGVmIF9hZGRfcmVhZF9kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYuX2NyYyA9IHpsaWIuY3JjMzIoZGF0YSwgc2VsZi5fY3JjKQogICAgICAgIHNlbGYuX3N0cmVhbV9zaXplID0gc2VsZi5fc3RyZWFtX3NpemUgKyBsZW4oZGF0YSkKCiAgICBkZWYgX3JlYWRfZW9mKHNlbGYpOgogICAgICAgICMgV2UndmUgcmVhZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlCiAgICAgICAgIyBXZSBjaGVjayB0aGF0IHRoZSBjb21wdXRlZCBDUkMgYW5kIHNpemUgb2YgdGhlCiAgICAgICAgIyB1bmNvbXByZXNzZWQgZGF0YSBtYXRjaGVzIHRoZSBzdG9yZWQgdmFsdWVzLiAgTm90ZSB0aGF0IHRoZSBzaXplCiAgICAgICAgIyBzdG9yZWQgaXMgdGhlIHRydWUgZmlsZSBzaXplIG1vZCAyKiozMi4KICAgICAgICBjcmMzMiwgaXNpemUgPSBzdHJ1Y3QudW5wYWNrKCI8SUkiLCBfcmVhZF9leGFjdChzZWxmLl9mcCwgOCkpCiAgICAgICAgaWYgY3JjMzIgIT0gc2VsZi5fY3JjOgogICAgICAgICAgICByYWlzZSBCYWRHemlwRmlsZSgiQ1JDIGNoZWNrIGZhaWxlZCAlcyAhPSAlcyIgJSAoaGV4KGNyYzMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleChzZWxmLl9jcmMpKSkKICAgICAgICBlbGlmIGlzaXplICE9IChzZWxmLl9zdHJlYW1fc2l6ZSAmIDB4ZmZmZmZmZmYpOgogICAgICAgICAgICByYWlzZSBCYWRHemlwRmlsZSgiSW5jb3JyZWN0IGxlbmd0aCBvZiBkYXRhIHByb2R1Y2VkIikKCiAgICAgICAgIyBHemlwIGZpbGVzIGNhbiBiZSBwYWRkZWQgd2l0aCB6ZXJvZXMgYW5kIHN0aWxsIGhhdmUgYXJjaGl2ZXMuCiAgICAgICAgIyBDb25zdW1lIGFsbCB6ZXJvIGJ5dGVzIGFuZCBzZXQgdGhlIGZpbGUgcG9zaXRpb24gdG8gdGhlIGZpcnN0CiAgICAgICAgIyBub24temVybyBieXRlLiBTZWUgaHR0cDovL3d3dy5nemlwLm9yZy8jZmFxOAogICAgICAgIGMgPSBiIlx4MDAiCiAgICAgICAgd2hpbGUgYyA9PSBiIlx4MDAiOgogICAgICAgICAgICBjID0gc2VsZi5fZnAucmVhZCgxKQogICAgICAgIGlmIGM6CiAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoYykKCiAgICBkZWYgX3Jld2luZChzZWxmKToKICAgICAgICBzdXBlcigpLl9yZXdpbmQoKQogICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCgoKZGVmIF9jcmVhdGVfc2ltcGxlX2d6aXBfaGVhZGVyKGNvbXByZXNzbGV2ZWw6IGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10aW1lID0gTm9uZSkgLT4gYnl0ZXM6CiAgICAiIiIKICAgIFdyaXRlIGEgc2ltcGxlIGd6aXAgaGVhZGVyIHdpdGggbm8gZXh0cmEgZmllbGRzLgogICAgOnBhcmFtIGNvbXByZXNzbGV2ZWw6IENvbXByZXNzbGV2ZWwgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHhmbCBieXRlcy4KICAgIDpwYXJhbSBtdGltZTogVGhlIG10aW1lIChtdXN0IHN1cHBvcnQgY29udmVyc2lvbiB0byBhIDMyLWJpdCBpbnRlZ2VyKS4KICAgIDpyZXR1cm46IEEgYnl0ZXMgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZ3ppcCBoZWFkZXIuCiAgICAiIiIKICAgIGlmIG10aW1lIGlzIE5vbmU6CiAgICAgICAgbXRpbWUgPSB0aW1lLnRpbWUoKQogICAgaWYgY29tcHJlc3NsZXZlbCA9PSBfQ09NUFJFU1NfTEVWRUxfQkVTVDoKICAgICAgICB4ZmwgPSAyCiAgICBlbGlmIGNvbXByZXNzbGV2ZWwgPT0gX0NPTVBSRVNTX0xFVkVMX0ZBU1Q6CiAgICAgICAgeGZsID0gNAogICAgZWxzZToKICAgICAgICB4ZmwgPSAwCiAgICAjIFBhY2sgSUQxIGFuZCBJRDIgbWFnaWMgYnl0ZXMsIG1ldGhvZCAoOD1kZWZsYXRlKSwgaGVhZGVyIGZsYWdzIChubyBleHRyYQogICAgIyBmaWVsZHMgYWRkZWQgdG8gaGVhZGVyKSwgbXRpbWUsIHhmbCBhbmQgb3MgKDI1NSBmb3IgdW5rbm93biBPUykuCiAgICByZXR1cm4gc3RydWN0LnBhY2soIjxCQkJCTEJCIiwgMHgxZiwgMHg4YiwgOCwgMCwgaW50KG10aW1lKSwgeGZsLCAyNTUpCgoKZGVmIGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9X0NPTVBSRVNTX0xFVkVMX0JFU1QsICosIG10aW1lPU5vbmUpOgogICAgIiIiQ29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCBhbmQgcmV0dXJuIHRoZSBjb21wcmVzc2VkIHN0cmluZy4KCiAgICBjb21wcmVzc2xldmVsIHNldHMgdGhlIGNvbXByZXNzaW9uIGxldmVsIGluIHJhbmdlIG9mIDAtOS4KICAgIG10aW1lIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUuIFRoZSBtb2RpZmljYXRpb24gdGltZSBpcwogICAgc2V0IHRvIHRoZSBjdXJyZW50IHRpbWUgYnkgZGVmYXVsdC4KICAgICIiIgogICAgaWYgbXRpbWUgPT0gMDoKICAgICAgICAjIFVzZSB6bGliIGFzIGl0IGNyZWF0ZXMgdGhlIGhlYWRlciB3aXRoIDAgbXRpbWUgYnkgZGVmYXVsdC4KICAgICAgICAjIFRoaXMgaXMgZmFzdGVyIGFuZCB3aXRoIGxlc3Mgb3ZlcmhlYWQuCiAgICAgICAgcmV0dXJuIHpsaWIuY29tcHJlc3MoZGF0YSwgbGV2ZWw9Y29tcHJlc3NsZXZlbCwgd2JpdHM9MzEpCiAgICBoZWFkZXIgPSBfY3JlYXRlX3NpbXBsZV9nemlwX2hlYWRlcihjb21wcmVzc2xldmVsLCBtdGltZSkKICAgIHRyYWlsZXIgPSBzdHJ1Y3QucGFjaygiPExMIiwgemxpYi5jcmMzMihkYXRhKSwgKGxlbihkYXRhKSAmIDB4ZmZmZmZmZmYpKQogICAgIyBXYml0cz0tMTUgY3JlYXRlcyBhIHJhdyBkZWZsYXRlIGJsb2NrLgogICAgcmV0dXJuIChoZWFkZXIgKyB6bGliLmNvbXByZXNzKGRhdGEsIGxldmVsPWNvbXByZXNzbGV2ZWwsIHdiaXRzPS0xNSkgKwogICAgICAgICAgICB0cmFpbGVyKQoKCmRlZiBkZWNvbXByZXNzKGRhdGEpOgogICAgIiIiRGVjb21wcmVzcyBhIGd6aXAgY29tcHJlc3NlZCBzdHJpbmcgaW4gb25lIHNob3QuCiAgICBSZXR1cm4gdGhlIGRlY29tcHJlc3NlZCBzdHJpbmcuCiAgICAiIiIKICAgIGRlY29tcHJlc3NlZF9tZW1iZXJzID0gW10KICAgIHdoaWxlIFRydWU6CiAgICAgICAgZnAgPSBpby5CeXRlc0lPKGRhdGEpCiAgICAgICAgaWYgX3JlYWRfZ3ppcF9oZWFkZXIoZnApIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihkZWNvbXByZXNzZWRfbWVtYmVycykKICAgICAgICAjIFVzZSBhIHpsaWIgcmF3IGRlZmxhdGUgY29tcHJlc3NvcgogICAgICAgIGRvID0gemxpYi5kZWNvbXByZXNzb2JqKHdiaXRzPS16bGliLk1BWF9XQklUUykKICAgICAgICAjIFJlYWQgYWxsIHRoZSBkYXRhIGV4Y2VwdCB0aGUgaGVhZGVyCiAgICAgICAgZGVjb21wcmVzc2VkID0gZG8uZGVjb21wcmVzcyhkYXRhW2ZwLnRlbGwoKTpdKQogICAgICAgIGlmIG5vdCBkby5lb2Ygb3IgbGVuKGRvLnVudXNlZF9kYXRhKSA8IDg6CiAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSBlbmQtb2Ytc3RyZWFtICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hcmtlciB3YXMgcmVhY2hlZCIpCiAgICAgICAgY3JjLCBsZW5ndGggPSBzdHJ1Y3QudW5wYWNrKCI8SUkiLCBkby51bnVzZWRfZGF0YVs6OF0pCiAgICAgICAgaWYgY3JjICE9IHpsaWIuY3JjMzIoZGVjb21wcmVzc2VkKToKICAgICAgICAgICAgcmFpc2UgQmFkR3ppcEZpbGUoIkNSQyBjaGVjayBmYWlsZWQiKQogICAgICAgIGlmIGxlbmd0aCAhPSAobGVuKGRlY29tcHJlc3NlZCkgJiAweGZmZmZmZmZmKToKICAgICAgICAgICAgcmFpc2UgQmFkR3ppcEZpbGUoIkluY29ycmVjdCBsZW5ndGggb2YgZGF0YSBwcm9kdWNlZCIpCiAgICAgICAgZGVjb21wcmVzc2VkX21lbWJlcnMuYXBwZW5kKGRlY29tcHJlc3NlZCkKICAgICAgICBkYXRhID0gZG8udW51c2VkX2RhdGFbODpdLmxzdHJpcChiIlx4MDAiKQoKCmRlZiBtYWluKCk6CiAgICBmcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgogICAgcGFyc2VyID0gQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249CiAgICAgICAgIkEgc2ltcGxlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgZm9yIHRoZSBnemlwIG1vZHVsZTogYWN0IGxpa2UgZ3ppcCwgIgogICAgICAgICJidXQgZG8gbm90IGRlbGV0ZSB0aGUgaW5wdXQgZmlsZS4iKQogICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCiAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tZmFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J2NvbXByZXNzIGZhc3RlcicpCiAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tYmVzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J2NvbXByZXNzIGJldHRlcicpCiAgICBncm91cC5hZGRfYXJndW1lbnQoIi1kIiwgIi0tZGVjb21wcmVzcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImFjdCBsaWtlIGd1bnppcCBpbnN0ZWFkIG9mIGd6aXAiKQoKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoImFyZ3MiLCBuYXJncz0iKiIsIGRlZmF1bHQ9WyItIl0sIG1ldGF2YXI9J2ZpbGUnKQogICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKCiAgICBjb21wcmVzc2xldmVsID0gX0NPTVBSRVNTX0xFVkVMX1RSQURFT0ZGCiAgICBpZiBhcmdzLmZhc3Q6CiAgICAgICAgY29tcHJlc3NsZXZlbCA9IF9DT01QUkVTU19MRVZFTF9GQVNUCiAgICBlbGlmIGFyZ3MuYmVzdDoKICAgICAgICBjb21wcmVzc2xldmVsID0gX0NPTVBSRVNTX0xFVkVMX0JFU1QKCiAgICBmb3IgYXJnIGluIGFyZ3MuYXJnczoKICAgICAgICBpZiBhcmdzLmRlY29tcHJlc3M6CiAgICAgICAgICAgIGlmIGFyZyA9PSAiLSI6CiAgICAgICAgICAgICAgICBmID0gR3ppcEZpbGUoZmlsZW5hbWU9IiIsIG1vZGU9InJiIiwgZmlsZW9iaj1zeXMuc3RkaW4uYnVmZmVyKQogICAgICAgICAgICAgICAgZyA9IHN5cy5zdGRvdXQuYnVmZmVyCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBhcmdbLTM6XSAhPSAiLmd6IjoKICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdChmImZpbGVuYW1lIGRvZXNuJ3QgZW5kIGluIC5nejoge2FyZyFyfSIpCiAgICAgICAgICAgICAgICBmID0gb3BlbihhcmcsICJyYiIpCiAgICAgICAgICAgICAgICBnID0gYnVpbHRpbnMub3BlbihhcmdbOi0zXSwgIndiIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBhcmcgPT0gIi0iOgogICAgICAgICAgICAgICAgZiA9IHN5cy5zdGRpbi5idWZmZXIKICAgICAgICAgICAgICAgIGcgPSBHemlwRmlsZShmaWxlbmFtZT0iIiwgbW9kZT0id2IiLCBmaWxlb2JqPXN5cy5zdGRvdXQuYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzbGV2ZWw9Y29tcHJlc3NsZXZlbCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGYgPSBidWlsdGlucy5vcGVuKGFyZywgInJiIikKICAgICAgICAgICAgICAgIGcgPSBvcGVuKGFyZyArICIuZ3oiLCAid2IiKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGNodW5rID0gZi5yZWFkKGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUpCiAgICAgICAgICAgIGlmIG5vdCBjaHVuazoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGcud3JpdGUoY2h1bmspCiAgICAgICAgaWYgZyBpcyBub3Qgc3lzLnN0ZG91dC5idWZmZXI6CiAgICAgICAgICAgIGcuY2xvc2UoKQogICAgICAgIGlmIGYgaXMgbm90IHN5cy5zdGRpbi5idWZmZXI6CiAgICAgICAgICAgIGYuY2xvc2UoKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQpQSwMEFAAAAAAAAiCjVkBtGCr1LQAA9S0AAAoAAABoYXNobGliLnB5Iy4gIENvcHlyaWdodCAoQykgMjAwNS0yMDEwICAgR3JlZ29yeSBQLiBTbWl0aCAoZ3JlZ0BrcnlwdG8ub3JnKQojICBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiMKCl9fZG9jX18gPSAiIiJoYXNobGliIG1vZHVsZSAtIEEgY29tbW9uIGludGVyZmFjZSB0byBtYW55IGhhc2ggZnVuY3Rpb25zLgoKbmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncykgLSByZXR1cm5zIGEgbmV3IGhhc2ggb2JqZWN0IGltcGxlbWVudGluZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBoYXNoIGZ1bmN0aW9uOyBpbml0aWFsaXppbmcgdGhlIGhhc2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZ2l2ZW4gYmluYXJ5IGRhdGEuCgpOYW1lZCBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgYXJlIGFsc28gYXZhaWxhYmxlLCB0aGVzZSBhcmUgZmFzdGVyCnRoYW4gdXNpbmcgbmV3KG5hbWUpOgoKbWQ1KCksIHNoYTEoKSwgc2hhMjI0KCksIHNoYTI1NigpLCBzaGEzODQoKSwgc2hhNTEyKCksIGJsYWtlMmIoKSwgYmxha2UycygpLApzaGEzXzIyNCwgc2hhM18yNTYsIHNoYTNfMzg0LCBzaGEzXzUxMiwgc2hha2VfMTI4LCBhbmQgc2hha2VfMjU2LgoKTW9yZSBhbGdvcml0aG1zIG1heSBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybSBidXQgdGhlIGFib3ZlIGFyZSBndWFyYW50ZWVkCnRvIGV4aXN0LiAgU2VlIHRoZSBhbGdvcml0aG1zX2d1YXJhbnRlZWQgYW5kIGFsZ29yaXRobXNfYXZhaWxhYmxlIGF0dHJpYnV0ZXMKdG8gZmluZCBvdXQgd2hhdCBhbGdvcml0aG0gbmFtZXMgY2FuIGJlIHBhc3NlZCB0byBuZXcoKS4KCk5PVEU6IElmIHlvdSB3YW50IHRoZSBhZGxlcjMyIG9yIGNyYzMyIGhhc2ggZnVuY3Rpb25zIHRoZXkgYXJlIGF2YWlsYWJsZSBpbgp0aGUgemxpYiBtb2R1bGUuCgpDaG9vc2UgeW91ciBoYXNoIGZ1bmN0aW9uIHdpc2VseS4gIFNvbWUgaGF2ZSBrbm93biBjb2xsaXNpb24gd2Vha25lc3Nlcy4Kc2hhMzg0IGFuZCBzaGE1MTIgd2lsbCBiZSBzbG93IG9uIDMyIGJpdCBwbGF0Zm9ybXMuCgpIYXNoIG9iamVjdHMgaGF2ZSB0aGVzZSBtZXRob2RzOgogLSB1cGRhdGUoZGF0YSk6IFVwZGF0ZSB0aGUgaGFzaCBvYmplY3Qgd2l0aCB0aGUgYnl0ZXMgaW4gZGF0YS4gUmVwZWF0ZWQgY2FsbHMKICAgICAgICAgICAgICAgICBhcmUgZXF1aXZhbGVudCB0byBhIHNpbmdsZSBjYWxsIHdpdGggdGhlIGNvbmNhdGVuYXRpb24gb2YgYWxsCiAgICAgICAgICAgICAgICAgdGhlIGFyZ3VtZW50cy4KIC0gZGlnZXN0KCk6ICAgICBSZXR1cm4gdGhlIGRpZ2VzdCBvZiB0aGUgYnl0ZXMgcGFzc2VkIHRvIHRoZSB1cGRhdGUoKSBtZXRob2QKICAgICAgICAgICAgICAgICBzbyBmYXIgYXMgYSBieXRlcyBvYmplY3QuCiAtIGhleGRpZ2VzdCgpOiAgTGlrZSBkaWdlc3QoKSBleGNlcHQgdGhlIGRpZ2VzdCBpcyByZXR1cm5lZCBhcyBhIHN0cmluZwogICAgICAgICAgICAgICAgIG9mIGRvdWJsZSBsZW5ndGgsIGNvbnRhaW5pbmcgb25seSBoZXhhZGVjaW1hbCBkaWdpdHMuCiAtIGNvcHkoKTogICAgICAgUmV0dXJuIGEgY29weSAoY2xvbmUpIG9mIHRoZSBoYXNoIG9iamVjdC4gVGhpcyBjYW4gYmUgdXNlZCB0bwogICAgICAgICAgICAgICAgIGVmZmljaWVudGx5IGNvbXB1dGUgdGhlIGRpZ2VzdHMgb2YgZGF0YXMgdGhhdCBzaGFyZSBhIGNvbW1vbgogICAgICAgICAgICAgICAgIGluaXRpYWwgc3Vic3RyaW5nLgoKRm9yIGV4YW1wbGUsIHRvIG9idGFpbiB0aGUgZGlnZXN0IG9mIHRoZSBieXRlIHN0cmluZyAnTm9ib2R5IGluc3BlY3RzIHRoZQpzcGFtbWlzaCByZXBldGl0aW9uJzoKCiAgICA+Pj4gaW1wb3J0IGhhc2hsaWIKICAgID4+PiBtID0gaGFzaGxpYi5tZDUoKQogICAgPj4+IG0udXBkYXRlKGIiTm9ib2R5IGluc3BlY3RzIikKICAgID4+PiBtLnVwZGF0ZShiIiB0aGUgc3BhbW1pc2ggcmVwZXRpdGlvbiIpCiAgICA+Pj4gbS5kaWdlc3QoKQogICAgYidcXHhiYmRcXHg5Y1xceDgzXFx4ZGRcXHgxZVxceGE1XFx4YzlcXHhkOVxceGRlXFx4YzlcXHhhMVxceDhkXFx4ZjBcXHhmZlxceGU5JwoKTW9yZSBjb25kZW5zZWQ6CgogICAgPj4+IGhhc2hsaWIuc2hhMjI0KGIiTm9ib2R5IGluc3BlY3RzIHRoZSBzcGFtbWlzaCByZXBldGl0aW9uIikuaGV4ZGlnZXN0KCkKICAgICdhNDMzN2JjNDVhOGZjNTQ0YzAzZjUyZGM1NTBjZDZlMWU4NzAyMWJjODk2NTg4YmQ3OWU5MDFlMicKCiIiIgoKIyBUaGlzIHR1cGxlIGFuZCBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKCkgbXVzdCBiZSBtb2RpZmllZCBpZiBhIG5ldwojIGFsd2F5cyBhdmFpbGFibGUgYWxnb3JpdGhtIGlzIGFkZGVkLgpfX2Fsd2F5c19zdXBwb3J0ZWQgPSAoJ21kNScsICdzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicsCiAgICAgICAgICAgICAgICAgICAgICAnYmxha2UyYicsICdibGFrZTJzJywKICAgICAgICAgICAgICAgICAgICAgICdzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCiAgICAgICAgICAgICAgICAgICAgICAnc2hha2VfMTI4JywgJ3NoYWtlXzI1NicpCgoKYWxnb3JpdGhtc19ndWFyYW50ZWVkID0gc2V0KF9fYWx3YXlzX3N1cHBvcnRlZCkKYWxnb3JpdGhtc19hdmFpbGFibGUgPSBzZXQoX19hbHdheXNfc3VwcG9ydGVkKQoKX19hbGxfXyA9IF9fYWx3YXlzX3N1cHBvcnRlZCArICgnbmV3JywgJ2FsZ29yaXRobXNfZ3VhcmFudGVlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsZ29yaXRobXNfYXZhaWxhYmxlJywgJ3Bia2RmMl9obWFjJywgJ2ZpbGVfZGlnZXN0JykKCgpfX2J1aWx0aW5fY29uc3RydWN0b3JfY2FjaGUgPSB7fQoKIyBQcmVmZXIgb3VyIGJsYWtlMiBpbXBsZW1lbnRhdGlvbgojIE9wZW5TU0wgMS4xLjAgY29tZXMgd2l0aCBhIGxpbWl0ZWQgaW1wbGVtZW50YXRpb24gb2YgYmxha2UyYi9zLiBUaGUgT3BlblNTTAojIGltcGxlbWVudGF0aW9ucyBuZWl0aGVyIHN1cHBvcnQga2V5ZWQgYmxha2UyIChibGFrZTIgTUFDKSBub3IgYWR2YW5jZWQKIyBmZWF0dXJlcyBsaWtlIHNhbHQsIHBlcnNvbmFsaXphdGlvbiwgb3IgdHJlZSBoYXNoaW5nLiBPcGVuU1NMIGhhc2gtb25seQojIHZhcmlhbnRzIGFyZSBhdmFpbGFibGUgYXMgJ2JsYWtlMmI1MTInIGFuZCAnYmxha2UyczI1NicsIHRob3VnaC4KX19ibG9ja19vcGVuc3NsX2NvbnN0cnVjdG9yID0gewogICAgJ2JsYWtlMmInLCAnYmxha2UycycsCn0KCmRlZiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpOgogICAgY2FjaGUgPSBfX2J1aWx0aW5fY29uc3RydWN0b3JfY2FjaGUKICAgIGNvbnN0cnVjdG9yID0gY2FjaGUuZ2V0KG5hbWUpCiAgICBpZiBjb25zdHJ1Y3RvciBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gY29uc3RydWN0b3IKICAgIHRyeToKICAgICAgICBpZiBuYW1lIGluIHsnU0hBMScsICdzaGExJ306CiAgICAgICAgICAgIGltcG9ydCBfc2hhMQogICAgICAgICAgICBjYWNoZVsnU0hBMSddID0gY2FjaGVbJ3NoYTEnXSA9IF9zaGExLnNoYTEKICAgICAgICBlbGlmIG5hbWUgaW4geydNRDUnLCAnbWQ1J306CiAgICAgICAgICAgIGltcG9ydCBfbWQ1CiAgICAgICAgICAgIGNhY2hlWydNRDUnXSA9IGNhY2hlWydtZDUnXSA9IF9tZDUubWQ1CiAgICAgICAgZWxpZiBuYW1lIGluIHsnU0hBMjU2JywgJ3NoYTI1NicsICdTSEEyMjQnLCAnc2hhMjI0J306CiAgICAgICAgICAgIGltcG9ydCBfc2hhMjU2CiAgICAgICAgICAgIGNhY2hlWydTSEEyMjQnXSA9IGNhY2hlWydzaGEyMjQnXSA9IF9zaGEyNTYuc2hhMjI0CiAgICAgICAgICAgIGNhY2hlWydTSEEyNTYnXSA9IGNhY2hlWydzaGEyNTYnXSA9IF9zaGEyNTYuc2hhMjU2CiAgICAgICAgZWxpZiBuYW1lIGluIHsnU0hBNTEyJywgJ3NoYTUxMicsICdTSEEzODQnLCAnc2hhMzg0J306CiAgICAgICAgICAgIGltcG9ydCBfc2hhNTEyCiAgICAgICAgICAgIGNhY2hlWydTSEEzODQnXSA9IGNhY2hlWydzaGEzODQnXSA9IF9zaGE1MTIuc2hhMzg0CiAgICAgICAgICAgIGNhY2hlWydTSEE1MTInXSA9IGNhY2hlWydzaGE1MTInXSA9IF9zaGE1MTIuc2hhNTEyCiAgICAgICAgZWxpZiBuYW1lIGluIHsnYmxha2UyYicsICdibGFrZTJzJ306CiAgICAgICAgICAgIGltcG9ydCBfYmxha2UyCiAgICAgICAgICAgIGNhY2hlWydibGFrZTJiJ10gPSBfYmxha2UyLmJsYWtlMmIKICAgICAgICAgICAgY2FjaGVbJ2JsYWtlMnMnXSA9IF9ibGFrZTIuYmxha2UycwogICAgICAgIGVsaWYgbmFtZSBpbiB7J3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywgJ3NoYTNfNTEyJ306CiAgICAgICAgICAgIGltcG9ydCBfc2hhMwogICAgICAgICAgICBjYWNoZVsnc2hhM18yMjQnXSA9IF9zaGEzLnNoYTNfMjI0CiAgICAgICAgICAgIGNhY2hlWydzaGEzXzI1NiddID0gX3NoYTMuc2hhM18yNTYKICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMzg0J10gPSBfc2hhMy5zaGEzXzM4NAogICAgICAgICAgICBjYWNoZVsnc2hhM181MTInXSA9IF9zaGEzLnNoYTNfNTEyCiAgICAgICAgZWxpZiBuYW1lIGluIHsnc2hha2VfMTI4JywgJ3NoYWtlXzI1Nid9OgogICAgICAgICAgICBpbXBvcnQgX3NoYTMKICAgICAgICAgICAgY2FjaGVbJ3NoYWtlXzEyOCddID0gX3NoYTMuc2hha2VfMTI4CiAgICAgICAgICAgIGNhY2hlWydzaGFrZV8yNTYnXSA9IF9zaGEzLnNoYWtlXzI1NgogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIHBhc3MgICMgbm8gZXh0ZW5zaW9uIG1vZHVsZSwgdGhpcyBoYXNoIGlzIHVuc3VwcG9ydGVkLgoKICAgIGNvbnN0cnVjdG9yID0gY2FjaGUuZ2V0KG5hbWUpCiAgICBpZiBjb25zdHJ1Y3RvciBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gY29uc3RydWN0b3IKCiAgICByYWlzZSBWYWx1ZUVycm9yKCd1bnN1cHBvcnRlZCBoYXNoIHR5cGUgJyArIG5hbWUpCgoKZGVmIF9fZ2V0X29wZW5zc2xfY29uc3RydWN0b3IobmFtZSk6CiAgICBpZiBuYW1lIGluIF9fYmxvY2tfb3BlbnNzbF9jb25zdHJ1Y3RvcjoKICAgICAgICAjIFByZWZlciBvdXIgYnVpbHRpbiBibGFrZTIgaW1wbGVtZW50YXRpb24uCiAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkKICAgIHRyeToKICAgICAgICAjIE1ENSwgU0hBMSwgYW5kIFNIQTIgYXJlIGluIGFsbCBzdXBwb3J0ZWQgT3BlblNTTCB2ZXJzaW9ucwogICAgICAgICMgU0hBMy9zaGFrZSBhcmUgYXZhaWxhYmxlIGluIE9wZW5TU0wgMS4xLjErCiAgICAgICAgZiA9IGdldGF0dHIoX2hhc2hsaWIsICdvcGVuc3NsXycgKyBuYW1lKQogICAgICAgICMgQWxsb3cgdGhlIEMgbW9kdWxlIHRvIHJhaXNlIFZhbHVlRXJyb3IuICBUaGUgZnVuY3Rpb24gd2lsbCBiZQogICAgICAgICMgZGVmaW5lZCBidXQgdGhlIGhhc2ggbm90IGFjdHVhbGx5IGF2YWlsYWJsZS4gIERvbid0IGZhbGwgYmFjayB0bwogICAgICAgICMgYnVpbHRpbiBpZiB0aGUgY3VycmVudCBzZWN1cml0eSBwb2xpY3kgYmxvY2tzIGEgZGlnZXN0LCBicG8jNDA2OTUuCiAgICAgICAgZih1c2VkZm9yc2VjdXJpdHk9RmFsc2UpCiAgICAgICAgIyBVc2UgdGhlIEMgZnVuY3Rpb24gZGlyZWN0bHkgKHZlcnkgZmFzdCkKICAgICAgICByZXR1cm4gZgogICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkKCgpkZWYgX19weV9uZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKToKICAgICIiIm5ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpIC0gUmV0dXJuIGEgbmV3IGhhc2hpbmcgb2JqZWN0IHVzaW5nIHRoZQogICAgbmFtZWQgYWxnb3JpdGhtOyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZQogICAgYSBieXRlcy1saWtlIG9iamVjdCkuCiAgICAiIiIKICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEsICoqa3dhcmdzKQoKCmRlZiBfX2hhc2hfbmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncyk6CiAgICAiIiJuZXcobmFtZSwgZGF0YT1iJycpIC0gUmV0dXJuIGEgbmV3IGhhc2hpbmcgb2JqZWN0IHVzaW5nIHRoZSBuYW1lZCBhbGdvcml0aG07CiAgICBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZSBhIGJ5dGVzLWxpa2Ugb2JqZWN0KS4KICAgICIiIgogICAgaWYgbmFtZSBpbiBfX2Jsb2NrX29wZW5zc2xfY29uc3RydWN0b3I6CiAgICAgICAgIyBQcmVmZXIgb3VyIGJ1aWx0aW4gYmxha2UyIGltcGxlbWVudGF0aW9uLgogICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEsICoqa3dhcmdzKQogICAgdHJ5OgogICAgICAgIHJldHVybiBfaGFzaGxpYi5uZXcobmFtZSwgZGF0YSwgKiprd2FyZ3MpCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAjIElmIHRoZSBfaGFzaGxpYiBtb2R1bGUgKE9wZW5TU0wpIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgbmFtZWQKICAgICAgICAjIGhhc2gsIHRyeSB1c2luZyBvdXIgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbnMuCiAgICAgICAgIyBUaGlzIGFsbG93cyBmb3IgU0hBMjI0LzI1NiBhbmQgU0hBMzg0LzUxMiBzdXBwb3J0IGV2ZW4gdGhvdWdoCiAgICAgICAgIyB0aGUgT3BlblNTTCBsaWJyYXJ5IHByaW9yIHRvIDAuOS44IGRvZXNuJ3QgcHJvdmlkZSB0aGVtLgogICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEpCgoKdHJ5OgogICAgaW1wb3J0IF9oYXNobGliCiAgICBuZXcgPSBfX2hhc2hfbmV3CiAgICBfX2dldF9oYXNoID0gX19nZXRfb3BlbnNzbF9jb25zdHJ1Y3RvcgogICAgYWxnb3JpdGhtc19hdmFpbGFibGUgPSBhbGdvcml0aG1zX2F2YWlsYWJsZS51bmlvbigKICAgICAgICAgICAgX2hhc2hsaWIub3BlbnNzbF9tZF9tZXRoX25hbWVzKQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBfaGFzaGxpYiA9IE5vbmUKICAgIG5ldyA9IF9fcHlfbmV3CiAgICBfX2dldF9oYXNoID0gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcgoKdHJ5OgogICAgIyBPcGVuU1NMJ3MgUEtDUzVfUEJLREYyX0hNQUMgcmVxdWlyZXMgT3BlblNTTCAxLjArIHdpdGggSE1BQyBhbmQgU0hBCiAgICBmcm9tIF9oYXNobGliIGltcG9ydCBwYmtkZjJfaG1hYwpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuIGFzIF93YXJuCiAgICBfdHJhbnNfNUMgPSBieXRlcygoeCBeIDB4NUMpIGZvciB4IGluIHJhbmdlKDI1NikpCiAgICBfdHJhbnNfMzYgPSBieXRlcygoeCBeIDB4MzYpIGZvciB4IGluIHJhbmdlKDI1NikpCgogICAgZGVmIHBia2RmMl9obWFjKGhhc2hfbmFtZSwgcGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGRrbGVuPU5vbmUpOgogICAgICAgICIiIlBhc3N3b3JkIGJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIDIgKFBLQ1MgIzUgdjIuMCkKCiAgICAgICAgVGhpcyBQeXRob24gaW1wbGVtZW50YXRpb25zIGJhc2VkIG9uIHRoZSBobWFjIG1vZHVsZSBhYm91dCBhcyBmYXN0CiAgICAgICAgYXMgT3BlblNTTCdzIFBLQ1M1X1BCS0RGMl9ITUFDIGZvciBzaG9ydCBwYXNzd29yZHMgYW5kIG11Y2ggZmFzdGVyCiAgICAgICAgZm9yIGxvbmcgcGFzc3dvcmRzLgogICAgICAgICIiIgogICAgICAgIF93YXJuKAogICAgICAgICAgICAiUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHBia2RmMl9obWFjKCkgaXMgZGVwcmVjYXRlZC4iLAogICAgICAgICAgICBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgIHN0YWNrbGV2ZWw9MgogICAgICAgICkKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShoYXNoX25hbWUsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihoYXNoX25hbWUpCgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhc3N3b3JkLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgogICAgICAgICAgICBwYXNzd29yZCA9IGJ5dGVzKG1lbW9yeXZpZXcocGFzc3dvcmQpKQogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNhbHQsIChieXRlcywgYnl0ZWFycmF5KSk6CiAgICAgICAgICAgIHNhbHQgPSBieXRlcyhtZW1vcnl2aWV3KHNhbHQpKQoKICAgICAgICAjIEZhc3QgaW5saW5lIEhNQUMgaW1wbGVtZW50YXRpb24KICAgICAgICBpbm5lciA9IG5ldyhoYXNoX25hbWUpCiAgICAgICAgb3V0ZXIgPSBuZXcoaGFzaF9uYW1lKQogICAgICAgIGJsb2Nrc2l6ZSA9IGdldGF0dHIoaW5uZXIsICdibG9ja19zaXplJywgNjQpCiAgICAgICAgaWYgbGVuKHBhc3N3b3JkKSA+IGJsb2Nrc2l6ZToKICAgICAgICAgICAgcGFzc3dvcmQgPSBuZXcoaGFzaF9uYW1lLCBwYXNzd29yZCkuZGlnZXN0KCkKICAgICAgICBwYXNzd29yZCA9IHBhc3N3b3JkICsgYidceDAwJyAqIChibG9ja3NpemUgLSBsZW4ocGFzc3dvcmQpKQogICAgICAgIGlubmVyLnVwZGF0ZShwYXNzd29yZC50cmFuc2xhdGUoX3RyYW5zXzM2KSkKICAgICAgICBvdXRlci51cGRhdGUocGFzc3dvcmQudHJhbnNsYXRlKF90cmFuc181QykpCgogICAgICAgIGRlZiBwcmYobXNnLCBpbm5lcj1pbm5lciwgb3V0ZXI9b3V0ZXIpOgogICAgICAgICAgICAjIFBCS0RGMl9ITUFDIHVzZXMgdGhlIHBhc3N3b3JkIGFzIGtleS4gV2UgY2FuIHJlLXVzZSB0aGUgc2FtZQogICAgICAgICAgICAjIGRpZ2VzdCBvYmplY3RzIGFuZCBqdXN0IHVwZGF0ZSBjb3BpZXMgdG8gc2tpcCBpbml0aWFsaXphdGlvbi4KICAgICAgICAgICAgaWNweSA9IGlubmVyLmNvcHkoKQogICAgICAgICAgICBvY3B5ID0gb3V0ZXIuY29weSgpCiAgICAgICAgICAgIGljcHkudXBkYXRlKG1zZykKICAgICAgICAgICAgb2NweS51cGRhdGUoaWNweS5kaWdlc3QoKSkKICAgICAgICAgICAgcmV0dXJuIG9jcHkuZGlnZXN0KCkKCiAgICAgICAgaWYgaXRlcmF0aW9ucyA8IDE6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoaXRlcmF0aW9ucykKICAgICAgICBpZiBka2xlbiBpcyBOb25lOgogICAgICAgICAgICBka2xlbiA9IG91dGVyLmRpZ2VzdF9zaXplCiAgICAgICAgaWYgZGtsZW4gPCAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGRrbGVuKQoKICAgICAgICBka2V5ID0gYicnCiAgICAgICAgbG9vcCA9IDEKICAgICAgICBmcm9tX2J5dGVzID0gaW50LmZyb21fYnl0ZXMKICAgICAgICB3aGlsZSBsZW4oZGtleSkgPCBka2xlbjoKICAgICAgICAgICAgcHJldiA9IHByZihzYWx0ICsgbG9vcC50b19ieXRlcyg0KSkKICAgICAgICAgICAgIyBlbmRpYW5uZXNzIGRvZXNuJ3QgbWF0dGVyIGhlcmUgYXMgbG9uZyB0byAvIGZyb20gdXNlIHRoZSBzYW1lCiAgICAgICAgICAgIHJrZXkgPSBmcm9tX2J5dGVzKHByZXYpCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGl0ZXJhdGlvbnMgLSAxKToKICAgICAgICAgICAgICAgIHByZXYgPSBwcmYocHJldikKICAgICAgICAgICAgICAgICMgcmtleSA9IHJrZXkgXiBwcmV2CiAgICAgICAgICAgICAgICBya2V5IF49IGZyb21fYnl0ZXMocHJldikKICAgICAgICAgICAgbG9vcCArPSAxCiAgICAgICAgICAgIGRrZXkgKz0gcmtleS50b19ieXRlcyhpbm5lci5kaWdlc3Rfc2l6ZSkKCiAgICAgICAgcmV0dXJuIGRrZXlbOmRrbGVuXQoKdHJ5OgogICAgIyBPcGVuU1NMJ3Mgc2NyeXB0IHJlcXVpcmVzIE9wZW5TU0wgMS4xKwogICAgZnJvbSBfaGFzaGxpYiBpbXBvcnQgc2NyeXB0CmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKCgpkZWYgZmlsZV9kaWdlc3QoZmlsZW9iaiwgZGlnZXN0LCAvLCAqLCBfYnVmc2l6ZT0yKioxOCk6CiAgICAiIiJIYXNoIHRoZSBjb250ZW50cyBvZiBhIGZpbGUtbGlrZSBvYmplY3QuIFJldHVybnMgYSBkaWdlc3Qgb2JqZWN0LgoKICAgICpmaWxlb2JqKiBtdXN0IGJlIGEgZmlsZS1saWtlIG9iamVjdCBvcGVuZWQgZm9yIHJlYWRpbmcgaW4gYmluYXJ5IG1vZGUuCiAgICBJdCBhY2NlcHRzIGZpbGUgb2JqZWN0cyBmcm9tIG9wZW4oKSwgaW8uQnl0ZXNJTygpLCBhbmQgU29ja2V0SU8gb2JqZWN0cy4KICAgIFRoZSBmdW5jdGlvbiBtYXkgYnlwYXNzIFB5dGhvbidzIEkvTyBhbmQgdXNlIHRoZSBmaWxlIGRlc2NyaXB0b3IgKmZpbGVubyoKICAgIGRpcmVjdGx5LgoKICAgICpkaWdlc3QqIG11c3QgZWl0aGVyIGJlIGEgaGFzaCBhbGdvcml0aG0gbmFtZSBhcyBhICpzdHIqLCBhIGhhc2gKICAgIGNvbnN0cnVjdG9yLCBvciBhIGNhbGxhYmxlIHRoYXQgcmV0dXJucyBhIGhhc2ggb2JqZWN0LgogICAgIiIiCiAgICAjIE9uIExpbnV4IHdlIGNvdWxkIHVzZSBBRl9BTEcgc29ja2V0cyBhbmQgc2VuZGZpbGUoKSB0byBhcmNoaXZlIHplcm8tY29weQogICAgIyBoYXNoaW5nIHdpdGggaGFyZHdhcmUgYWNjZWxlcmF0aW9uLgogICAgaWYgaXNpbnN0YW5jZShkaWdlc3QsIHN0cik6CiAgICAgICAgZGlnZXN0b2JqID0gbmV3KGRpZ2VzdCkKICAgIGVsc2U6CiAgICAgICAgZGlnZXN0b2JqID0gZGlnZXN0KCkKCiAgICBpZiBoYXNhdHRyKGZpbGVvYmosICJnZXRidWZmZXIiKToKICAgICAgICAjIGlvLkJ5dGVzSU8gb2JqZWN0LCB1c2UgemVyby1jb3B5IGJ1ZmZlcgogICAgICAgIGRpZ2VzdG9iai51cGRhdGUoZmlsZW9iai5nZXRidWZmZXIoKSkKICAgICAgICByZXR1cm4gZGlnZXN0b2JqCgogICAgIyBPbmx5IGJpbmFyeSBmaWxlcyBpbXBsZW1lbnQgcmVhZGludG8oKS4KICAgIGlmIG5vdCAoCiAgICAgICAgaGFzYXR0cihmaWxlb2JqLCAicmVhZGludG8iKQogICAgICAgIGFuZCBoYXNhdHRyKGZpbGVvYmosICJyZWFkYWJsZSIpCiAgICAgICAgYW5kIGZpbGVvYmoucmVhZGFibGUoKQogICAgKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIid7ZmlsZW9iaiFyfScgaXMgbm90IGEgZmlsZS1saWtlIG9iamVjdCBpbiBiaW5hcnkgcmVhZGluZyBtb2RlLiIKICAgICAgICApCgogICAgIyBiaW5hcnkgZmlsZSwgc29ja2V0LlNvY2tldElPIG9iamVjdAogICAgIyBOb3RlOiBzb2NrZXQgSS9PIHVzZXMgZGlmZmVyZW50IHN5c2NhbGxzIHRoYW4gZmlsZSBJL08uCiAgICBidWYgPSBieXRlYXJyYXkoX2J1ZnNpemUpICAjIFJldXNhYmxlIGJ1ZmZlciB0byByZWR1Y2UgYWxsb2NhdGlvbnMuCiAgICB2aWV3ID0gbWVtb3J5dmlldyhidWYpCiAgICB3aGlsZSBUcnVlOgogICAgICAgIHNpemUgPSBmaWxlb2JqLnJlYWRpbnRvKGJ1ZikKICAgICAgICBpZiBzaXplID09IDA6CiAgICAgICAgICAgIGJyZWFrICAjIEVPRgogICAgICAgIGRpZ2VzdG9iai51cGRhdGUodmlld1s6c2l6ZV0pCgogICAgcmV0dXJuIGRpZ2VzdG9iagoKCmZvciBfX2Z1bmNfbmFtZSBpbiBfX2Fsd2F5c19zdXBwb3J0ZWQ6CiAgICAjIHRyeSB0aGVtIGFsbCwgc29tZSBtYXkgbm90IHdvcmsgZHVlIHRvIHRoZSBPcGVuU1NMCiAgICAjIHZlcnNpb24gbm90IHN1cHBvcnRpbmcgdGhhdCBhbGdvcml0aG0uCiAgICB0cnk6CiAgICAgICAgZ2xvYmFscygpW19fZnVuY19uYW1lXSA9IF9fZ2V0X2hhc2goX19mdW5jX25hbWUpCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICBpbXBvcnQgbG9nZ2luZwogICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKCdjb2RlIGZvciBoYXNoICVzIHdhcyBub3QgZm91bmQuJywgX19mdW5jX25hbWUpCgoKIyBDbGVhbnVwIGxvY2FscygpCmRlbCBfX2Fsd2F5c19zdXBwb3J0ZWQsIF9fZnVuY19uYW1lLCBfX2dldF9oYXNoCmRlbCBfX3B5X25ldywgX19oYXNoX25ldywgX19nZXRfb3BlbnNzbF9jb25zdHJ1Y3RvcgpQSwMEFAAAAAAAAiCjVnHOU/XwWQAA8FkAAAgAAABoZWFwcS5weSIiIkhlYXAgcXVldWUgYWxnb3JpdGhtIChhLmsuYS4gcHJpb3JpdHkgcXVldWUpLgoKSGVhcHMgYXJlIGFycmF5cyBmb3Igd2hpY2ggYVtrXSA8PSBhWzIqaysxXSBhbmQgYVtrXSA8PSBhWzIqaysyXSBmb3IKYWxsIGssIGNvdW50aW5nIGVsZW1lbnRzIGZyb20gMC4gIEZvciB0aGUgc2FrZSBvZiBjb21wYXJpc29uLApub24tZXhpc3RpbmcgZWxlbWVudHMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW5maW5pdGUuICBUaGUgaW50ZXJlc3RpbmcKcHJvcGVydHkgb2YgYSBoZWFwIGlzIHRoYXQgYVswXSBpcyBhbHdheXMgaXRzIHNtYWxsZXN0IGVsZW1lbnQuCgpVc2FnZToKCmhlYXAgPSBbXSAgICAgICAgICAgICMgY3JlYXRlcyBhbiBlbXB0eSBoZWFwCmhlYXBwdXNoKGhlYXAsIGl0ZW0pICMgcHVzaGVzIGEgbmV3IGl0ZW0gb24gdGhlIGhlYXAKaXRlbSA9IGhlYXBwb3AoaGVhcCkgIyBwb3BzIHRoZSBzbWFsbGVzdCBpdGVtIGZyb20gdGhlIGhlYXAKaXRlbSA9IGhlYXBbMF0gICAgICAgIyBzbWFsbGVzdCBpdGVtIG9uIHRoZSBoZWFwIHdpdGhvdXQgcG9wcGluZyBpdApoZWFwaWZ5KHgpICAgICAgICAgICAjIHRyYW5zZm9ybXMgbGlzdCBpbnRvIGEgaGVhcCwgaW4tcGxhY2UsIGluIGxpbmVhciB0aW1lCml0ZW0gPSBoZWFwcHVzaHBvcChoZWFwLCBpdGVtKSAjIHB1c2hlcyBhIG5ldyBpdGVtIGFuZCB0aGVuIHJldHVybnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHNtYWxsZXN0IGl0ZW07IHRoZSBoZWFwIHNpemUgaXMgdW5jaGFuZ2VkCml0ZW0gPSBoZWFwcmVwbGFjZShoZWFwLCBpdGVtKSAjIHBvcHMgYW5kIHJldHVybnMgc21hbGxlc3QgaXRlbSwgYW5kIGFkZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbmV3IGl0ZW07IHRoZSBoZWFwIHNpemUgaXMgdW5jaGFuZ2VkCgpPdXIgQVBJIGRpZmZlcnMgZnJvbSB0ZXh0Ym9vayBoZWFwIGFsZ29yaXRobXMgYXMgZm9sbG93czoKCi0gV2UgdXNlIDAtYmFzZWQgaW5kZXhpbmcuICBUaGlzIG1ha2VzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUKICBpbmRleCBmb3IgYSBub2RlIGFuZCB0aGUgaW5kZXhlcyBmb3IgaXRzIGNoaWxkcmVuIHNsaWdodGx5IGxlc3MKICBvYnZpb3VzLCBidXQgaXMgbW9yZSBzdWl0YWJsZSBzaW5jZSBQeXRob24gdXNlcyAwLWJhc2VkIGluZGV4aW5nLgoKLSBPdXIgaGVhcHBvcCgpIG1ldGhvZCByZXR1cm5zIHRoZSBzbWFsbGVzdCBpdGVtLCBub3QgdGhlIGxhcmdlc3QuCgpUaGVzZSB0d28gbWFrZSBpdCBwb3NzaWJsZSB0byB2aWV3IHRoZSBoZWFwIGFzIGEgcmVndWxhciBQeXRob24gbGlzdAp3aXRob3V0IHN1cnByaXNlczogaGVhcFswXSBpcyB0aGUgc21hbGxlc3QgaXRlbSwgYW5kIGhlYXAuc29ydCgpCm1haW50YWlucyB0aGUgaGVhcCBpbnZhcmlhbnQhCiIiIgoKIyBPcmlnaW5hbCBjb2RlIGJ5IEtldmluIE8nQ29ubm9yLCBhdWdtZW50ZWQgYnkgVGltIFBldGVycyBhbmQgUmF5bW9uZCBIZXR0aW5nZXIKCl9fYWJvdXRfXyA9ICIiIkhlYXAgcXVldWVzCgpbZXhwbGFuYXRpb24gYnkgRnJhbsOnb2lzIFBpbmFyZF0KCkhlYXBzIGFyZSBhcnJheXMgZm9yIHdoaWNoIGFba10gPD0gYVsyKmsrMV0gYW5kIGFba10gPD0gYVsyKmsrMl0gZm9yCmFsbCBrLCBjb3VudGluZyBlbGVtZW50cyBmcm9tIDAuICBGb3IgdGhlIHNha2Ugb2YgY29tcGFyaXNvbiwKbm9uLWV4aXN0aW5nIGVsZW1lbnRzIGFyZSBjb25zaWRlcmVkIHRvIGJlIGluZmluaXRlLiAgVGhlIGludGVyZXN0aW5nCnByb3BlcnR5IG9mIGEgaGVhcCBpcyB0aGF0IGFbMF0gaXMgYWx3YXlzIGl0cyBzbWFsbGVzdCBlbGVtZW50LgoKVGhlIHN0cmFuZ2UgaW52YXJpYW50IGFib3ZlIGlzIG1lYW50IHRvIGJlIGFuIGVmZmljaWVudCBtZW1vcnkKcmVwcmVzZW50YXRpb24gZm9yIGEgdG91cm5hbWVudC4gIFRoZSBudW1iZXJzIGJlbG93IGFyZSBgaycsIG5vdCBhW2tdOgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCgogICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgoKICAgICAgICAgIDMgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgIDUgICAgICAgICAgICAgICA2CgogICAgICA3ICAgICAgIDggICAgICAgOSAgICAgICAxMCAgICAgIDExICAgICAgMTIgICAgICAxMyAgICAgIDE0CgogICAgMTUgMTYgICAxNyAxOCAgIDE5IDIwICAgMjEgMjIgICAyMyAyNCAgIDI1IDI2ICAgMjcgMjggICAyOSAzMAoKCkluIHRoZSB0cmVlIGFib3ZlLCBlYWNoIGNlbGwgYGsnIGlzIHRvcHBpbmcgYDIqaysxJyBhbmQgYDIqaysyJy4gIEluCmEgdXN1YWwgYmluYXJ5IHRvdXJuYW1lbnQgd2Ugc2VlIGluIHNwb3J0cywgZWFjaCBjZWxsIGlzIHRoZSB3aW5uZXIKb3ZlciB0aGUgdHdvIGNlbGxzIGl0IHRvcHMsIGFuZCB3ZSBjYW4gdHJhY2UgdGhlIHdpbm5lciBkb3duIHRoZSB0cmVlCnRvIHNlZSBhbGwgb3Bwb25lbnRzIHMvaGUgaGFkLiAgSG93ZXZlciwgaW4gbWFueSBjb21wdXRlciBhcHBsaWNhdGlvbnMKb2Ygc3VjaCB0b3VybmFtZW50cywgd2UgZG8gbm90IG5lZWQgdG8gdHJhY2UgdGhlIGhpc3Rvcnkgb2YgYSB3aW5uZXIuClRvIGJlIG1vcmUgbWVtb3J5IGVmZmljaWVudCwgd2hlbiBhIHdpbm5lciBpcyBwcm9tb3RlZCwgd2UgdHJ5IHRvCnJlcGxhY2UgaXQgYnkgc29tZXRoaW5nIGVsc2UgYXQgYSBsb3dlciBsZXZlbCwgYW5kIHRoZSBydWxlIGJlY29tZXMKdGhhdCBhIGNlbGwgYW5kIHRoZSB0d28gY2VsbHMgaXQgdG9wcyBjb250YWluIHRocmVlIGRpZmZlcmVudCBpdGVtcywKYnV0IHRoZSB0b3AgY2VsbCAid2lucyIgb3ZlciB0aGUgdHdvIHRvcHBlZCBjZWxscy4KCklmIHRoaXMgaGVhcCBpbnZhcmlhbnQgaXMgcHJvdGVjdGVkIGF0IGFsbCB0aW1lLCBpbmRleCAwIGlzIGNsZWFybHkKdGhlIG92ZXJhbGwgd2lubmVyLiAgVGhlIHNpbXBsZXN0IGFsZ29yaXRobWljIHdheSB0byByZW1vdmUgaXQgYW5kCmZpbmQgdGhlICJuZXh0IiB3aW5uZXIgaXMgdG8gbW92ZSBzb21lIGxvc2VyIChsZXQncyBzYXkgY2VsbCAzMCBpbiB0aGUKZGlhZ3JhbSBhYm92ZSkgaW50byB0aGUgMCBwb3NpdGlvbiwgYW5kIHRoZW4gcGVyY29sYXRlIHRoaXMgbmV3IDAgZG93bgp0aGUgdHJlZSwgZXhjaGFuZ2luZyB2YWx1ZXMsIHVudGlsIHRoZSBpbnZhcmlhbnQgaXMgcmUtZXN0YWJsaXNoZWQuClRoaXMgaXMgY2xlYXJseSBsb2dhcml0aG1pYyBvbiB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB0cmVlLgpCeSBpdGVyYXRpbmcgb3ZlciBhbGwgaXRlbXMsIHlvdSBnZXQgYW4gTyhuIGxuIG4pIHNvcnQuCgpBIG5pY2UgZmVhdHVyZSBvZiB0aGlzIHNvcnQgaXMgdGhhdCB5b3UgY2FuIGVmZmljaWVudGx5IGluc2VydCBuZXcKaXRlbXMgd2hpbGUgdGhlIHNvcnQgaXMgZ29pbmcgb24sIHByb3ZpZGVkIHRoYXQgdGhlIGluc2VydGVkIGl0ZW1zIGFyZQpub3QgImJldHRlciIgdGhhbiB0aGUgbGFzdCAwJ3RoIGVsZW1lbnQgeW91IGV4dHJhY3RlZC4gIFRoaXMgaXMKZXNwZWNpYWxseSB1c2VmdWwgaW4gc2ltdWxhdGlvbiBjb250ZXh0cywgd2hlcmUgdGhlIHRyZWUgaG9sZHMgYWxsCmluY29taW5nIGV2ZW50cywgYW5kIHRoZSAid2luIiBjb25kaXRpb24gbWVhbnMgdGhlIHNtYWxsZXN0IHNjaGVkdWxlZAp0aW1lLiAgV2hlbiBhbiBldmVudCBzY2hlZHVsZSBvdGhlciBldmVudHMgZm9yIGV4ZWN1dGlvbiwgdGhleSBhcmUKc2NoZWR1bGVkIGludG8gdGhlIGZ1dHVyZSwgc28gdGhleSBjYW4gZWFzaWx5IGdvIGludG8gdGhlIGhlYXAuICBTbywgYQpoZWFwIGlzIGEgZ29vZCBzdHJ1Y3R1cmUgZm9yIGltcGxlbWVudGluZyBzY2hlZHVsZXJzICh0aGlzIGlzIHdoYXQgSQp1c2VkIGZvciBteSBNSURJIHNlcXVlbmNlciA6LSkuCgpWYXJpb3VzIHN0cnVjdHVyZXMgZm9yIGltcGxlbWVudGluZyBzY2hlZHVsZXJzIGhhdmUgYmVlbiBleHRlbnNpdmVseQpzdHVkaWVkLCBhbmQgaGVhcHMgYXJlIGdvb2QgZm9yIHRoaXMsIGFzIHRoZXkgYXJlIHJlYXNvbmFibHkgc3BlZWR5LAp0aGUgc3BlZWQgaXMgYWxtb3N0IGNvbnN0YW50LCBhbmQgdGhlIHdvcnN0IGNhc2UgaXMgbm90IG11Y2ggZGlmZmVyZW50CnRoYW4gdGhlIGF2ZXJhZ2UgY2FzZS4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBvdGhlciByZXByZXNlbnRhdGlvbnMgd2hpY2gKYXJlIG1vcmUgZWZmaWNpZW50IG92ZXJhbGwsIHlldCB0aGUgd29yc3QgY2FzZXMgbWlnaHQgYmUgdGVycmlibGUuCgpIZWFwcyBhcmUgYWxzbyB2ZXJ5IHVzZWZ1bCBpbiBiaWcgZGlzayBzb3J0cy4gIFlvdSBtb3N0IHByb2JhYmx5IGFsbAprbm93IHRoYXQgYSBiaWcgc29ydCBpbXBsaWVzIHByb2R1Y2luZyAicnVucyIgKHdoaWNoIGFyZSBwcmUtc29ydGVkCnNlcXVlbmNlcywgd2hpY2ggc2l6ZSBpcyB1c3VhbGx5IHJlbGF0ZWQgdG8gdGhlIGFtb3VudCBvZiBDUFUgbWVtb3J5KSwKZm9sbG93ZWQgYnkgYSBtZXJnaW5nIHBhc3NlcyBmb3IgdGhlc2UgcnVucywgd2hpY2ggbWVyZ2luZyBpcyBvZnRlbgp2ZXJ5IGNsZXZlcmx5IG9yZ2FuaXNlZFsxXS4gIEl0IGlzIHZlcnkgaW1wb3J0YW50IHRoYXQgdGhlIGluaXRpYWwKc29ydCBwcm9kdWNlcyB0aGUgbG9uZ2VzdCBydW5zIHBvc3NpYmxlLiAgVG91cm5hbWVudHMgYXJlIGEgZ29vZCB3YXkKdG8gdGhhdC4gIElmLCB1c2luZyBhbGwgdGhlIG1lbW9yeSBhdmFpbGFibGUgdG8gaG9sZCBhIHRvdXJuYW1lbnQsIHlvdQpyZXBsYWNlIGFuZCBwZXJjb2xhdGUgaXRlbXMgdGhhdCBoYXBwZW4gdG8gZml0IHRoZSBjdXJyZW50IHJ1biwgeW91J2xsCnByb2R1Y2UgcnVucyB3aGljaCBhcmUgdHdpY2UgdGhlIHNpemUgb2YgdGhlIG1lbW9yeSBmb3IgcmFuZG9tIGlucHV0LAphbmQgbXVjaCBiZXR0ZXIgZm9yIGlucHV0IGZ1enppbHkgb3JkZXJlZC4KCk1vcmVvdmVyLCBpZiB5b3Ugb3V0cHV0IHRoZSAwJ3RoIGl0ZW0gb24gZGlzayBhbmQgZ2V0IGFuIGlucHV0IHdoaWNoCm1heSBub3QgZml0IGluIHRoZSBjdXJyZW50IHRvdXJuYW1lbnQgKGJlY2F1c2UgdGhlIHZhbHVlICJ3aW5zIiBvdmVyCnRoZSBsYXN0IG91dHB1dCB2YWx1ZSksIGl0IGNhbm5vdCBmaXQgaW4gdGhlIGhlYXAsIHNvIHRoZSBzaXplIG9mIHRoZQpoZWFwIGRlY3JlYXNlcy4gIFRoZSBmcmVlZCBtZW1vcnkgY291bGQgYmUgY2xldmVybHkgcmV1c2VkIGltbWVkaWF0ZWx5CmZvciBwcm9ncmVzc2l2ZWx5IGJ1aWxkaW5nIGEgc2Vjb25kIGhlYXAsIHdoaWNoIGdyb3dzIGF0IGV4YWN0bHkgdGhlCnNhbWUgcmF0ZSB0aGUgZmlyc3QgaGVhcCBpcyBtZWx0aW5nLiAgV2hlbiB0aGUgZmlyc3QgaGVhcCBjb21wbGV0ZWx5CnZhbmlzaGVzLCB5b3Ugc3dpdGNoIGhlYXBzIGFuZCBzdGFydCBhIG5ldyBydW4uICBDbGV2ZXIgYW5kIHF1aXRlCmVmZmVjdGl2ZSEKCkluIGEgd29yZCwgaGVhcHMgYXJlIHVzZWZ1bCBtZW1vcnkgc3RydWN0dXJlcyB0byBrbm93LiAgSSB1c2UgdGhlbSBpbgphIGZldyBhcHBsaWNhdGlvbnMsIGFuZCBJIHRoaW5rIGl0IGlzIGdvb2QgdG8ga2VlcCBhIGBoZWFwJyBtb2R1bGUKYXJvdW5kLiA6LSkKCi0tLS0tLS0tLS0tLS0tLS0tLS0tClsxXSBUaGUgZGlzayBiYWxhbmNpbmcgYWxnb3JpdGhtcyB3aGljaCBhcmUgY3VycmVudCwgbm93YWRheXMsIGFyZQptb3JlIGFubm95aW5nIHRoYW4gY2xldmVyLCBhbmQgdGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZSBzZWVraW5nCmNhcGFiaWxpdGllcyBvZiB0aGUgZGlza3MuICBPbiBkZXZpY2VzIHdoaWNoIGNhbm5vdCBzZWVrLCBsaWtlIGJpZwp0YXBlIGRyaXZlcywgdGhlIHN0b3J5IHdhcyBxdWl0ZSBkaWZmZXJlbnQsIGFuZCBvbmUgaGFkIHRvIGJlIHZlcnkKY2xldmVyIHRvIGVuc3VyZSAoZmFyIGluIGFkdmFuY2UpIHRoYXQgZWFjaCB0YXBlIG1vdmVtZW50IHdpbGwgYmUgdGhlCm1vc3QgZWZmZWN0aXZlIHBvc3NpYmxlICh0aGF0IGlzLCB3aWxsIGJlc3QgcGFydGljaXBhdGUgYXQKInByb2dyZXNzaW5nIiB0aGUgbWVyZ2UpLiAgU29tZSB0YXBlcyB3ZXJlIGV2ZW4gYWJsZSB0byByZWFkCmJhY2t3YXJkcywgYW5kIHRoaXMgd2FzIGFsc28gdXNlZCB0byBhdm9pZCB0aGUgcmV3aW5kaW5nIHRpbWUuCkJlbGlldmUgbWUsIHJlYWwgZ29vZCB0YXBlIHNvcnRzIHdlcmUgcXVpdGUgc3BlY3RhY3VsYXIgdG8gd2F0Y2ghCkZyb20gYWxsIHRpbWVzLCBzb3J0aW5nIGhhcyBhbHdheXMgYmVlbiBhIEdyZWF0IEFydCEgOi0pCiIiIgoKX19hbGxfXyA9IFsnaGVhcHB1c2gnLCAnaGVhcHBvcCcsICdoZWFwaWZ5JywgJ2hlYXByZXBsYWNlJywgJ21lcmdlJywKICAgICAgICAgICAnbmxhcmdlc3QnLCAnbnNtYWxsZXN0JywgJ2hlYXBwdXNocG9wJ10KCmRlZiBoZWFwcHVzaChoZWFwLCBpdGVtKToKICAgICIiIlB1c2ggaXRlbSBvbnRvIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC4iIiIKICAgIGhlYXAuYXBwZW5kKGl0ZW0pCiAgICBfc2lmdGRvd24oaGVhcCwgMCwgbGVuKGhlYXApLTEpCgpkZWYgaGVhcHBvcChoZWFwKToKICAgICIiIlBvcCB0aGUgc21hbGxlc3QgaXRlbSBvZmYgdGhlIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC4iIiIKICAgIGxhc3RlbHQgPSBoZWFwLnBvcCgpICAgICMgcmFpc2VzIGFwcHJvcHJpYXRlIEluZGV4RXJyb3IgaWYgaGVhcCBpcyBlbXB0eQogICAgaWYgaGVhcDoKICAgICAgICByZXR1cm5pdGVtID0gaGVhcFswXQogICAgICAgIGhlYXBbMF0gPSBsYXN0ZWx0CiAgICAgICAgX3NpZnR1cChoZWFwLCAwKQogICAgICAgIHJldHVybiByZXR1cm5pdGVtCiAgICByZXR1cm4gbGFzdGVsdAoKZGVmIGhlYXByZXBsYWNlKGhlYXAsIGl0ZW0pOgogICAgIiIiUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLgoKICAgIFRoaXMgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBoZWFwcG9wKCkgZm9sbG93ZWQgYnkgaGVhcHB1c2goKSwgYW5kIGNhbiBiZQogICAgbW9yZSBhcHByb3ByaWF0ZSB3aGVuIHVzaW5nIGEgZml4ZWQtc2l6ZSBoZWFwLiAgTm90ZSB0aGF0IHRoZSB2YWx1ZQogICAgcmV0dXJuZWQgbWF5IGJlIGxhcmdlciB0aGFuIGl0ZW0hICBUaGF0IGNvbnN0cmFpbnMgcmVhc29uYWJsZSB1c2VzIG9mCiAgICB0aGlzIHJvdXRpbmUgdW5sZXNzIHdyaXR0ZW4gYXMgcGFydCBvZiBhIGNvbmRpdGlvbmFsIHJlcGxhY2VtZW50OgoKICAgICAgICBpZiBpdGVtID4gaGVhcFswXToKICAgICAgICAgICAgaXRlbSA9IGhlYXByZXBsYWNlKGhlYXAsIGl0ZW0pCiAgICAiIiIKICAgIHJldHVybml0ZW0gPSBoZWFwWzBdICAgICMgcmFpc2VzIGFwcHJvcHJpYXRlIEluZGV4RXJyb3IgaWYgaGVhcCBpcyBlbXB0eQogICAgaGVhcFswXSA9IGl0ZW0KICAgIF9zaWZ0dXAoaGVhcCwgMCkKICAgIHJldHVybiByZXR1cm5pdGVtCgpkZWYgaGVhcHB1c2hwb3AoaGVhcCwgaXRlbSk6CiAgICAiIiJGYXN0IHZlcnNpb24gb2YgYSBoZWFwcHVzaCBmb2xsb3dlZCBieSBhIGhlYXBwb3AuIiIiCiAgICBpZiBoZWFwIGFuZCBoZWFwWzBdIDwgaXRlbToKICAgICAgICBpdGVtLCBoZWFwWzBdID0gaGVhcFswXSwgaXRlbQogICAgICAgIF9zaWZ0dXAoaGVhcCwgMCkKICAgIHJldHVybiBpdGVtCgpkZWYgaGVhcGlmeSh4KToKICAgICIiIlRyYW5zZm9ybSBsaXN0IGludG8gYSBoZWFwLCBpbi1wbGFjZSwgaW4gTyhsZW4oeCkpIHRpbWUuIiIiCiAgICBuID0gbGVuKHgpCiAgICAjIFRyYW5zZm9ybSBib3R0b20tdXAuICBUaGUgbGFyZ2VzdCBpbmRleCB0aGVyZSdzIGFueSBwb2ludCB0byBsb29raW5nIGF0CiAgICAjIGlzIHRoZSBsYXJnZXN0IHdpdGggYSBjaGlsZCBpbmRleCBpbi1yYW5nZSwgc28gbXVzdCBoYXZlIDIqaSArIDEgPCBuLAogICAgIyBvciBpIDwgKG4tMSkvMi4gIElmIG4gaXMgZXZlbiA9IDIqaiwgdGhpcyBpcyAoMipqLTEpLzIgPSBqLTEvMiBzbwogICAgIyBqLTEgaXMgdGhlIGxhcmdlc3QsIHdoaWNoIGlzIG4vLzIgLSAxLiAgSWYgbiBpcyBvZGQgPSAyKmorMSwgdGhpcyBpcwogICAgIyAoMipqKzEtMSkvMiA9IGogc28gai0xIGlzIHRoZSBsYXJnZXN0LCBhbmQgdGhhdCdzIGFnYWluIG4vLzItMS4KICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKG4vLzIpKToKICAgICAgICBfc2lmdHVwKHgsIGkpCgpkZWYgX2hlYXBwb3BfbWF4KGhlYXApOgogICAgIiIiTWF4aGVhcCB2ZXJzaW9uIG9mIGEgaGVhcHBvcC4iIiIKICAgIGxhc3RlbHQgPSBoZWFwLnBvcCgpICAgICMgcmFpc2VzIGFwcHJvcHJpYXRlIEluZGV4RXJyb3IgaWYgaGVhcCBpcyBlbXB0eQogICAgaWYgaGVhcDoKICAgICAgICByZXR1cm5pdGVtID0gaGVhcFswXQogICAgICAgIGhlYXBbMF0gPSBsYXN0ZWx0CiAgICAgICAgX3NpZnR1cF9tYXgoaGVhcCwgMCkKICAgICAgICByZXR1cm4gcmV0dXJuaXRlbQogICAgcmV0dXJuIGxhc3RlbHQKCmRlZiBfaGVhcHJlcGxhY2VfbWF4KGhlYXAsIGl0ZW0pOgogICAgIiIiTWF4aGVhcCB2ZXJzaW9uIG9mIGEgaGVhcHBvcCBmb2xsb3dlZCBieSBhIGhlYXBwdXNoLiIiIgogICAgcmV0dXJuaXRlbSA9IGhlYXBbMF0gICAgIyByYWlzZXMgYXBwcm9wcmlhdGUgSW5kZXhFcnJvciBpZiBoZWFwIGlzIGVtcHR5CiAgICBoZWFwWzBdID0gaXRlbQogICAgX3NpZnR1cF9tYXgoaGVhcCwgMCkKICAgIHJldHVybiByZXR1cm5pdGVtCgpkZWYgX2hlYXBpZnlfbWF4KHgpOgogICAgIiIiVHJhbnNmb3JtIGxpc3QgaW50byBhIG1heGhlYXAsIGluLXBsYWNlLCBpbiBPKGxlbih4KSkgdGltZS4iIiIKICAgIG4gPSBsZW4oeCkKICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKG4vLzIpKToKICAgICAgICBfc2lmdHVwX21heCh4LCBpKQoKIyAnaGVhcCcgaXMgYSBoZWFwIGF0IGFsbCBpbmRpY2VzID49IHN0YXJ0cG9zLCBleGNlcHQgcG9zc2libHkgZm9yIHBvcy4gIHBvcwojIGlzIHRoZSBpbmRleCBvZiBhIGxlYWYgd2l0aCBhIHBvc3NpYmx5IG91dC1vZi1vcmRlciB2YWx1ZS4gIFJlc3RvcmUgdGhlCiMgaGVhcCBpbnZhcmlhbnQuCmRlZiBfc2lmdGRvd24oaGVhcCwgc3RhcnRwb3MsIHBvcyk6CiAgICBuZXdpdGVtID0gaGVhcFtwb3NdCiAgICAjIEZvbGxvdyB0aGUgcGF0aCB0byB0aGUgcm9vdCwgbW92aW5nIHBhcmVudHMgZG93biB1bnRpbCBmaW5kaW5nIGEgcGxhY2UKICAgICMgbmV3aXRlbSBmaXRzLgogICAgd2hpbGUgcG9zID4gc3RhcnRwb3M6CiAgICAgICAgcGFyZW50cG9zID0gKHBvcyAtIDEpID4+IDEKICAgICAgICBwYXJlbnQgPSBoZWFwW3BhcmVudHBvc10KICAgICAgICBpZiBuZXdpdGVtIDwgcGFyZW50OgogICAgICAgICAgICBoZWFwW3Bvc10gPSBwYXJlbnQKICAgICAgICAgICAgcG9zID0gcGFyZW50cG9zCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgYnJlYWsKICAgIGhlYXBbcG9zXSA9IG5ld2l0ZW0KCiMgVGhlIGNoaWxkIGluZGljZXMgb2YgaGVhcCBpbmRleCBwb3MgYXJlIGFscmVhZHkgaGVhcHMsIGFuZCB3ZSB3YW50IHRvIG1ha2UKIyBhIGhlYXAgYXQgaW5kZXggcG9zIHRvby4gIFdlIGRvIHRoaXMgYnkgYnViYmxpbmcgdGhlIHNtYWxsZXIgY2hpbGQgb2YKIyBwb3MgdXAgKGFuZCBzbyBvbiB3aXRoIHRoYXQgY2hpbGQncyBjaGlsZHJlbiwgZXRjKSB1bnRpbCBoaXR0aW5nIGEgbGVhZiwKIyB0aGVuIHVzaW5nIF9zaWZ0ZG93biB0byBtb3ZlIHRoZSBvZGRiYWxsIG9yaWdpbmFsbHkgYXQgaW5kZXggcG9zIGludG8gcGxhY2UuCiMKIyBXZSAqY291bGQqIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBhcyBzb29uIGFzIHdlIGZpbmQgYSBwb3Mgd2hlcmUgbmV3aXRlbSA8PQojIGJvdGggaXRzIGNoaWxkcmVuLCBidXQgdHVybnMgb3V0IHRoYXQncyBub3QgYSBnb29kIGlkZWEsIGFuZCBkZXNwaXRlIHRoYXQKIyBtYW55IGJvb2tzIHdyaXRlIHRoZSBhbGdvcml0aG0gdGhhdCB3YXkuICBEdXJpbmcgYSBoZWFwIHBvcCwgdGhlIGxhc3QgYXJyYXkKIyBlbGVtZW50IGlzIHNpZnRlZCBpbiwgYW5kIHRoYXQgdGVuZHMgdG8gYmUgbGFyZ2UsIHNvIHRoYXQgY29tcGFyaW5nIGl0CiMgYWdhaW5zdCB2YWx1ZXMgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCB1c3VhbGx5IGRvZXNuJ3QgcGF5ICg9IHVzdWFsbHkgZG9lc24ndAojIGdldCB1cyBvdXQgb2YgdGhlIGxvb3AgZWFybHkpLiAgU2VlIEtudXRoLCBWb2x1bWUgMywgd2hlcmUgdGhpcyBpcwojIGV4cGxhaW5lZCBhbmQgcXVhbnRpZmllZCBpbiBhbiBleGVyY2lzZS4KIwojIEN1dHRpbmcgdGhlICMgb2YgY29tcGFyaXNvbnMgaXMgaW1wb3J0YW50LCBzaW5jZSB0aGVzZSByb3V0aW5lcyBoYXZlIG5vCiMgd2F5IHRvIGV4dHJhY3QgInRoZSBwcmlvcml0eSIgZnJvbSBhbiBhcnJheSBlbGVtZW50LCBzbyB0aGF0IGludGVsbGlnZW5jZQojIGlzIGxpa2VseSB0byBiZSBoaWRpbmcgaW4gY3VzdG9tIGNvbXBhcmlzb24gbWV0aG9kcywgb3IgaW4gYXJyYXkgZWxlbWVudHMKIyBzdG9yaW5nIChwcmlvcml0eSwgcmVjb3JkKSB0dXBsZXMuICBDb21wYXJpc29ucyBhcmUgdGh1cyBwb3RlbnRpYWxseQojIGV4cGVuc2l2ZS4KIwojIE9uIHJhbmRvbSBhcnJheXMgb2YgbGVuZ3RoIDEwMDAsIG1ha2luZyB0aGlzIGNoYW5nZSBjdXQgdGhlIG51bWJlciBvZgojIGNvbXBhcmlzb25zIG1hZGUgYnkgaGVhcGlmeSgpIGEgbGl0dGxlLCBhbmQgdGhvc2UgbWFkZSBieSBleGhhdXN0aXZlCiMgaGVhcHBvcCgpIGEgbG90LCBpbiBhY2NvcmQgd2l0aCB0aGVvcnkuICBIZXJlIGFyZSB0eXBpY2FsIHJlc3VsdHMgZnJvbSAzCiMgcnVucyAoMyBqdXN0IHRvIGRlbW9uc3RyYXRlIGhvdyBzbWFsbCB0aGUgdmFyaWFuY2UgaXMpOgojCiMgQ29tcGFyZXMgbmVlZGVkIGJ5IGhlYXBpZnkgICAgIENvbXBhcmVzIG5lZWRlZCBieSAxMDAwIGhlYXBwb3BzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgMTgzNyBjdXQgdG8gMTY2MyAgICAgICAgICAgICAgIDE0OTk2IGN1dCB0byA4NjgwCiMgMTg1NSBjdXQgdG8gMTY1OSAgICAgICAgICAgICAgIDE0OTY2IGN1dCB0byA4Njc4CiMgMTg0NyBjdXQgdG8gMTY2MCAgICAgICAgICAgICAgIDE1MDI0IGN1dCB0byA4NzAzCiMKIyBCdWlsZGluZyB0aGUgaGVhcCBieSB1c2luZyBoZWFwcHVzaCgpIDEwMDAgdGltZXMgaW5zdGVhZCByZXF1aXJlZAojIDIxOTgsIDIxNDgsIGFuZCAyMjE5IGNvbXBhcmVzOiAgaGVhcGlmeSgpIGlzIG1vcmUgZWZmaWNpZW50LCB3aGVuCiMgeW91IGNhbiB1c2UgaXQuCiMKIyBUaGUgdG90YWwgY29tcGFyZXMgbmVlZGVkIGJ5IGxpc3Quc29ydCgpIG9uIHRoZSBzYW1lIGxpc3RzIHdlcmUgODYyNywKIyA4NjI3LCBhbmQgODYzMiAodGhpcyBzaG91bGQgYmUgY29tcGFyZWQgdG8gdGhlIHN1bSBvZiBoZWFwaWZ5KCkgYW5kCiMgaGVhcHBvcCgpIGNvbXBhcmVzKTogIGxpc3Quc29ydCgpIGlzICh1bnN1cnByaXNpbmdseSEpIG1vcmUgZWZmaWNpZW50CiMgZm9yIHNvcnRpbmcuCgpkZWYgX3NpZnR1cChoZWFwLCBwb3MpOgogICAgZW5kcG9zID0gbGVuKGhlYXApCiAgICBzdGFydHBvcyA9IHBvcwogICAgbmV3aXRlbSA9IGhlYXBbcG9zXQogICAgIyBCdWJibGUgdXAgdGhlIHNtYWxsZXIgY2hpbGQgdW50aWwgaGl0dGluZyBhIGxlYWYuCiAgICBjaGlsZHBvcyA9IDIqcG9zICsgMSAgICAjIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uCiAgICB3aGlsZSBjaGlsZHBvcyA8IGVuZHBvczoKICAgICAgICAjIFNldCBjaGlsZHBvcyB0byBpbmRleCBvZiBzbWFsbGVyIGNoaWxkLgogICAgICAgIHJpZ2h0cG9zID0gY2hpbGRwb3MgKyAxCiAgICAgICAgaWYgcmlnaHRwb3MgPCBlbmRwb3MgYW5kIG5vdCBoZWFwW2NoaWxkcG9zXSA8IGhlYXBbcmlnaHRwb3NdOgogICAgICAgICAgICBjaGlsZHBvcyA9IHJpZ2h0cG9zCiAgICAgICAgIyBNb3ZlIHRoZSBzbWFsbGVyIGNoaWxkIHVwLgogICAgICAgIGhlYXBbcG9zXSA9IGhlYXBbY2hpbGRwb3NdCiAgICAgICAgcG9zID0gY2hpbGRwb3MKICAgICAgICBjaGlsZHBvcyA9IDIqcG9zICsgMQogICAgIyBUaGUgbGVhZiBhdCBwb3MgaXMgZW1wdHkgbm93LiAgUHV0IG5ld2l0ZW0gdGhlcmUsIGFuZCBidWJibGUgaXQgdXAKICAgICMgdG8gaXRzIGZpbmFsIHJlc3RpbmcgcGxhY2UgKGJ5IHNpZnRpbmcgaXRzIHBhcmVudHMgZG93bikuCiAgICBoZWFwW3Bvc10gPSBuZXdpdGVtCiAgICBfc2lmdGRvd24oaGVhcCwgc3RhcnRwb3MsIHBvcykKCmRlZiBfc2lmdGRvd25fbWF4KGhlYXAsIHN0YXJ0cG9zLCBwb3MpOgogICAgJ01heGhlYXAgdmFyaWFudCBvZiBfc2lmdGRvd24nCiAgICBuZXdpdGVtID0gaGVhcFtwb3NdCiAgICAjIEZvbGxvdyB0aGUgcGF0aCB0byB0aGUgcm9vdCwgbW92aW5nIHBhcmVudHMgZG93biB1bnRpbCBmaW5kaW5nIGEgcGxhY2UKICAgICMgbmV3aXRlbSBmaXRzLgogICAgd2hpbGUgcG9zID4gc3RhcnRwb3M6CiAgICAgICAgcGFyZW50cG9zID0gKHBvcyAtIDEpID4+IDEKICAgICAgICBwYXJlbnQgPSBoZWFwW3BhcmVudHBvc10KICAgICAgICBpZiBwYXJlbnQgPCBuZXdpdGVtOgogICAgICAgICAgICBoZWFwW3Bvc10gPSBwYXJlbnQKICAgICAgICAgICAgcG9zID0gcGFyZW50cG9zCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgYnJlYWsKICAgIGhlYXBbcG9zXSA9IG5ld2l0ZW0KCmRlZiBfc2lmdHVwX21heChoZWFwLCBwb3MpOgogICAgJ01heGhlYXAgdmFyaWFudCBvZiBfc2lmdHVwJwogICAgZW5kcG9zID0gbGVuKGhlYXApCiAgICBzdGFydHBvcyA9IHBvcwogICAgbmV3aXRlbSA9IGhlYXBbcG9zXQogICAgIyBCdWJibGUgdXAgdGhlIGxhcmdlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4KICAgIGNoaWxkcG9zID0gMipwb3MgKyAxICAgICMgbGVmdG1vc3QgY2hpbGQgcG9zaXRpb24KICAgIHdoaWxlIGNoaWxkcG9zIDwgZW5kcG9zOgogICAgICAgICMgU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIGxhcmdlciBjaGlsZC4KICAgICAgICByaWdodHBvcyA9IGNoaWxkcG9zICsgMQogICAgICAgIGlmIHJpZ2h0cG9zIDwgZW5kcG9zIGFuZCBub3QgaGVhcFtyaWdodHBvc10gPCBoZWFwW2NoaWxkcG9zXToKICAgICAgICAgICAgY2hpbGRwb3MgPSByaWdodHBvcwogICAgICAgICMgTW92ZSB0aGUgbGFyZ2VyIGNoaWxkIHVwLgogICAgICAgIGhlYXBbcG9zXSA9IGhlYXBbY2hpbGRwb3NdCiAgICAgICAgcG9zID0gY2hpbGRwb3MKICAgICAgICBjaGlsZHBvcyA9IDIqcG9zICsgMQogICAgIyBUaGUgbGVhZiBhdCBwb3MgaXMgZW1wdHkgbm93LiAgUHV0IG5ld2l0ZW0gdGhlcmUsIGFuZCBidWJibGUgaXQgdXAKICAgICMgdG8gaXRzIGZpbmFsIHJlc3RpbmcgcGxhY2UgKGJ5IHNpZnRpbmcgaXRzIHBhcmVudHMgZG93bikuCiAgICBoZWFwW3Bvc10gPSBuZXdpdGVtCiAgICBfc2lmdGRvd25fbWF4KGhlYXAsIHN0YXJ0cG9zLCBwb3MpCgpkZWYgbWVyZ2UoKml0ZXJhYmxlcywga2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpOgogICAgJycnTWVyZ2UgbXVsdGlwbGUgc29ydGVkIGlucHV0cyBpbnRvIGEgc2luZ2xlIHNvcnRlZCBvdXRwdXQuCgogICAgU2ltaWxhciB0byBzb3J0ZWQoaXRlcnRvb2xzLmNoYWluKCppdGVyYWJsZXMpKSBidXQgcmV0dXJucyBhIGdlbmVyYXRvciwKICAgIGRvZXMgbm90IHB1bGwgdGhlIGRhdGEgaW50byBtZW1vcnkgYWxsIGF0IG9uY2UsIGFuZCBhc3N1bWVzIHRoYXQgZWFjaCBvZgogICAgdGhlIGlucHV0IHN0cmVhbXMgaXMgYWxyZWFkeSBzb3J0ZWQgKHNtYWxsZXN0IHRvIGxhcmdlc3QpLgoKICAgID4+PiBsaXN0KG1lcmdlKFsxLDMsNSw3XSwgWzAsMiw0LDhdLCBbNSwxMCwxNSwyMF0sIFtdLCBbMjVdKSkKICAgIFswLCAxLCAyLCAzLCA0LCA1LCA1LCA3LCA4LCAxMCwgMTUsIDIwLCAyNV0KCiAgICBJZiAqa2V5KiBpcyBub3QgTm9uZSwgYXBwbGllcyBhIGtleSBmdW5jdGlvbiB0byBlYWNoIGVsZW1lbnQgdG8gZGV0ZXJtaW5lCiAgICBpdHMgc29ydCBvcmRlci4KCiAgICA+Pj4gbGlzdChtZXJnZShbJ2RvZycsICdob3JzZSddLCBbJ2NhdCcsICdmaXNoJywgJ2thbmdhcm9vJ10sIGtleT1sZW4pKQogICAgWydkb2cnLCAnY2F0JywgJ2Zpc2gnLCAnaG9yc2UnLCAna2FuZ2Fyb28nXQoKICAgICcnJwoKICAgIGggPSBbXQogICAgaF9hcHBlbmQgPSBoLmFwcGVuZAoKICAgIGlmIHJldmVyc2U6CiAgICAgICAgX2hlYXBpZnkgPSBfaGVhcGlmeV9tYXgKICAgICAgICBfaGVhcHBvcCA9IF9oZWFwcG9wX21heAogICAgICAgIF9oZWFwcmVwbGFjZSA9IF9oZWFwcmVwbGFjZV9tYXgKICAgICAgICBkaXJlY3Rpb24gPSAtMQogICAgZWxzZToKICAgICAgICBfaGVhcGlmeSA9IGhlYXBpZnkKICAgICAgICBfaGVhcHBvcCA9IGhlYXBwb3AKICAgICAgICBfaGVhcHJlcGxhY2UgPSBoZWFwcmVwbGFjZQogICAgICAgIGRpcmVjdGlvbiA9IDEKCiAgICBpZiBrZXkgaXMgTm9uZToKICAgICAgICBmb3Igb3JkZXIsIGl0IGluIGVudW1lcmF0ZShtYXAoaXRlciwgaXRlcmFibGVzKSk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG5leHQgPSBpdC5fX25leHRfXwogICAgICAgICAgICAgICAgaF9hcHBlbmQoW25leHQoKSwgb3JkZXIgKiBkaXJlY3Rpb24sIG5leHRdKQogICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBfaGVhcGlmeShoKQogICAgICAgIHdoaWxlIGxlbihoKSA+IDE6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgdmFsdWUsIG9yZGVyLCBuZXh0ID0gcyA9IGhbMF0KICAgICAgICAgICAgICAgICAgICB5aWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgICAgIHNbMF0gPSBuZXh0KCkgICAgICAgICAgICMgcmFpc2VzIFN0b3BJdGVyYXRpb24gd2hlbiBleGhhdXN0ZWQKICAgICAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UoaCwgcykgICAgICAjIHJlc3RvcmUgaGVhcCBjb25kaXRpb24KICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICAgICBfaGVhcHBvcChoKSAgICAgICAgICAgICAgICAgIyByZW1vdmUgZW1wdHkgaXRlcmF0b3IKICAgICAgICBpZiBoOgogICAgICAgICAgICAjIGZhc3QgY2FzZSB3aGVuIG9ubHkgYSBzaW5nbGUgaXRlcmF0b3IgcmVtYWlucwogICAgICAgICAgICB2YWx1ZSwgb3JkZXIsIG5leHQgPSBoWzBdCiAgICAgICAgICAgIHlpZWxkIHZhbHVlCiAgICAgICAgICAgIHlpZWxkIGZyb20gbmV4dC5fX3NlbGZfXwogICAgICAgIHJldHVybgoKICAgIGZvciBvcmRlciwgaXQgaW4gZW51bWVyYXRlKG1hcChpdGVyLCBpdGVyYWJsZXMpKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIG5leHQgPSBpdC5fX25leHRfXwogICAgICAgICAgICB2YWx1ZSA9IG5leHQoKQogICAgICAgICAgICBoX2FwcGVuZChba2V5KHZhbHVlKSwgb3JkZXIgKiBkaXJlY3Rpb24sIHZhbHVlLCBuZXh0XSkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgcGFzcwogICAgX2hlYXBpZnkoaCkKICAgIHdoaWxlIGxlbihoKSA+IDE6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAga2V5X3ZhbHVlLCBvcmRlciwgdmFsdWUsIG5leHQgPSBzID0gaFswXQogICAgICAgICAgICAgICAgeWllbGQgdmFsdWUKICAgICAgICAgICAgICAgIHZhbHVlID0gbmV4dCgpCiAgICAgICAgICAgICAgICBzWzBdID0ga2V5KHZhbHVlKQogICAgICAgICAgICAgICAgc1syXSA9IHZhbHVlCiAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UoaCwgcykKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgX2hlYXBwb3AoaCkKICAgIGlmIGg6CiAgICAgICAga2V5X3ZhbHVlLCBvcmRlciwgdmFsdWUsIG5leHQgPSBoWzBdCiAgICAgICAgeWllbGQgdmFsdWUKICAgICAgICB5aWVsZCBmcm9tIG5leHQuX19zZWxmX18KCgojIEFsZ29yaXRobSBub3RlcyBmb3Igbmxhcmdlc3QoKSBhbmQgbnNtYWxsZXN0KCkKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMKIyBNYWtlIGEgc2luZ2xlIHBhc3Mgb3ZlciB0aGUgZGF0YSB3aGlsZSBrZWVwaW5nIHRoZSBrIG1vc3QgZXh0cmVtZSB2YWx1ZXMKIyBpbiBhIGhlYXAuICBNZW1vcnkgY29uc3VtcHRpb24gaXMgbGltaXRlZCB0byBrZWVwaW5nIGsgdmFsdWVzIGluIGEgbGlzdC4KIwojIE1lYXN1cmVkIHBlcmZvcm1hbmNlIGZvciByYW5kb20gaW5wdXRzOgojCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBjb21wYXJpc29ucwojICAgIG4gaW5wdXRzICAgICBrLWV4dHJlbWUgdmFsdWVzICAoYXZlcmFnZSBvZiA1IHRyaWFscykgICAlIG1vcmUgdGhhbiBtaW4oKQojIC0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLQojICAgICAgMSwwMDAgICAgICAgICAgIDEwMCAgICAgICAgICAgICAgICAgIDMsMzE3ICAgICAgICAgICAgICAgMjMxLjclCiMgICAgIDEwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAgICAxNCwwNDYgICAgICAgICAgICAgICAgNDAuNSUKIyAgICAxMDAsMDAwICAgICAgICAgICAxMDAgICAgICAgICAgICAgICAgMTA1LDc0OSAgICAgICAgICAgICAgICAgNS43JQojICAxLDAwMCwwMDAgICAgICAgICAgIDEwMCAgICAgICAgICAgICAgMSwwMDcsNzUxICAgICAgICAgICAgICAgICAwLjglCiMgMTAsMDAwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgIDEwLDAwOSw0MDEgICAgICAgICAgICAgICAgIDAuMSUKIwojIFRoZW9yZXRpY2FsIG51bWJlciBvZiBjb21wYXJpc29ucyBmb3IgayBzbWFsbGVzdCBvZiBuIHJhbmRvbSBpbnB1dHM6CiMKIyBTdGVwICAgQ29tcGFyaXNvbnMgICAgICAgICAgICAgICAgICBBY3Rpb24KIyAtLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgMSAgICAgMS42NiAqIGsgICAgICAgICAgICAgICAgICAgICBoZWFwaWZ5IHRoZSBmaXJzdCBrLWlucHV0cwojICAyICAgICBuIC0gayAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgcmVtYWluaW5nIGVsZW1lbnRzIHRvIHRvcCBvZiBoZWFwCiMgIDMgICAgIGsgKiAoMSArIGxnMihrKSkgKiBsbihuL2spICAgcmVwbGFjZSB0aGUgdG9wbW9zdCB2YWx1ZSBvbiB0aGUgaGVhcAojICA0ICAgICBrICogbGcyKGspIC0gKGsvMikgICAgICAgICAgIGZpbmFsIHNvcnQgb2YgdGhlIGsgbW9zdCBleHRyZW1lIHZhbHVlcwojCiMgQ29tYmluaW5nIGFuZCBzaW1wbGlmeWluZyBmb3IgYSByb3VnaCBlc3RpbWF0ZSBnaXZlczoKIwojICAgICAgICBjb21wYXJpc29ucyA9IG4gKyBrICogKGxvZyhrLCAyKSAqIGxvZyhuL2spICsgbG9nKGssIDIpICsgbG9nKG4vaykpCiMKIyBDb21wdXRpbmcgdGhlIG51bWJlciBvZiBjb21wYXJpc29ucyBmb3Igc3RlcCAzOgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgKiBGb3IgdGhlIGktdGggbmV3IHZhbHVlIGZyb20gdGhlIGl0ZXJhYmxlLCB0aGUgcHJvYmFiaWxpdHkgb2YgYmVpbmcgaW4gdGhlCiMgICBrIG1vc3QgZXh0cmVtZSB2YWx1ZXMgaXMgay9pLiAgRm9yIGV4YW1wbGUsIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgMTAxc3QKIyAgIHZhbHVlIHNlZW4gYmVpbmcgaW4gdGhlIDEwMCBtb3N0IGV4dHJlbWUgdmFsdWVzIGlzIDEwMC8xMDEuCiMgKiBJZiB0aGUgdmFsdWUgaXMgYSBuZXcgZXh0cmVtZSB2YWx1ZSwgdGhlIGNvc3Qgb2YgaW5zZXJ0aW5nIGl0IGludG8gdGhlCiMgICBoZWFwIGlzIDEgKyBsb2coaywgMikuCiMgKiBUaGUgcHJvYmFiaWxpdHkgdGltZXMgdGhlIGNvc3QgZ2l2ZXM6CiMgICAgICAgICAgICAoay9pKSAqICgxICsgbG9nKGssIDIpKQojICogU3VtbWluZyBhY3Jvc3MgdGhlIHJlbWFpbmluZyBuLWsgZWxlbWVudHMgZ2l2ZXM6CiMgICAgICAgICAgICBzdW0oKGsvaSkgKiAoMSArIGxvZyhrLCAyKSkgZm9yIGkgaW4gcmFuZ2UoaysxLCBuKzEpKQojICogVGhpcyByZWR1Y2VzIHRvOgojICAgICAgICAgICAgKEgobikgLSBIKGspKSAqIGsgKiAoMSArIGxvZyhrLCAyKSkKIyAqIFdoZXJlIEgobikgaXMgdGhlIG4tdGggaGFybW9uaWMgbnVtYmVyIGVzdGltYXRlZCBieToKIyAgICAgICAgICAgIGdhbW1hID0gMC41NzcyMTU2NjQ5CiMgICAgICAgICAgICBIKG4pID0gbG9nKG4sIGUpICsgZ2FtbWEgKyAxIC8gKDIgKiBuKQojICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXJtb25pY19zZXJpZXNfKG1hdGhlbWF0aWNzKSNSYXRlX29mX2RpdmVyZ2VuY2UKIyAqIFN1YnN0aXR1dGluZyB0aGUgSChuKSBmb3JtdWxhOgojICAgICAgICAgICAgY29tcGFyaXNvbnMgPSBrICogKDEgKyBsb2coaywgMikpICogKGxvZyhuL2ssIGUpICsgKDEvbiAtIDEvaykgLyAyKQojCiMgV29yc3QtY2FzZSBmb3Igc3RlcCAzOgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBJbiB0aGUgd29yc3QgY2FzZSwgdGhlIGlucHV0IGRhdGEgaXMgcmV2ZXJzZWQgc29ydGVkIHNvIHRoYXQgZXZlcnkgbmV3IGVsZW1lbnQKIyBtdXN0IGJlIGluc2VydGVkIGluIHRoZSBoZWFwOgojCiMgICAgICAgICAgICAgY29tcGFyaXNvbnMgPSAxLjY2ICogayArIGxvZyhrLCAyKSAqIChuIC0gaykKIwojIEFsdGVybmF0aXZlIEFsZ29yaXRobXMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgT3RoZXIgYWxnb3JpdGhtcyB3ZXJlIG5vdCB1c2VkIGJlY2F1c2UgdGhleToKIyAxKSBUb29rIG11Y2ggbW9yZSBhdXhpbGlhcnkgbWVtb3J5LAojIDIpIE1hZGUgbXVsdGlwbGUgcGFzc2VzIG92ZXIgdGhlIGRhdGEuCiMgMykgTWFkZSBtb3JlIGNvbXBhcmlzb25zIGluIGNvbW1vbiBjYXNlcyAoc21hbGwgaywgbGFyZ2Ugbiwgc2VtaS1yYW5kb20gaW5wdXQpLgojIFNlZSB0aGUgbW9yZSBkZXRhaWxlZCBjb21wYXJpc29uIG9mIGFwcHJvYWNoIGF0OgojIGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NzU3My1jb21wYXJlLWFsZ29yaXRobXMtZm9yLWhlYXBxc21hbGxlc3QKCmRlZiBuc21hbGxlc3QobiwgaXRlcmFibGUsIGtleT1Ob25lKToKICAgICIiIkZpbmQgdGhlIG4gc21hbGxlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgoKICAgIEVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUsIGtleT1rZXkpWzpuXQogICAgIiIiCgogICAgIyBTaG9ydC1jdXQgZm9yIG49PTEgaXMgdG8gdXNlIG1pbigpCiAgICBpZiBuID09IDE6CiAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQogICAgICAgIHNlbnRpbmVsID0gb2JqZWN0KCkKICAgICAgICByZXN1bHQgPSBtaW4oaXQsIGRlZmF1bHQ9c2VudGluZWwsIGtleT1rZXkpCiAgICAgICAgcmV0dXJuIFtdIGlmIHJlc3VsdCBpcyBzZW50aW5lbCBlbHNlIFtyZXN1bHRdCgogICAgIyBXaGVuIG4+PXNpemUsIGl0J3MgZmFzdGVyIHRvIHVzZSBzb3J0ZWQoKQogICAgdHJ5OgogICAgICAgIHNpemUgPSBsZW4oaXRlcmFibGUpCiAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgaWYgbiA+PSBzaXplOgogICAgICAgICAgICByZXR1cm4gc29ydGVkKGl0ZXJhYmxlLCBrZXk9a2V5KVs6bl0KCiAgICAjIFdoZW4ga2V5IGlzIG5vbmUsIHVzZSBzaW1wbGVyIGRlY29yYXRpb24KICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKICAgICAgICAjIHB1dCB0aGUgcmFuZ2UobikgZmlyc3Qgc28gdGhhdCB6aXAoKSBkb2Vzbid0CiAgICAgICAgIyBjb25zdW1lIG9uZSB0b28gbWFueSBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYXRvcgogICAgICAgIHJlc3VsdCA9IFsoZWxlbSwgaSkgZm9yIGksIGVsZW0gaW4gemlwKHJhbmdlKG4pLCBpdCldCiAgICAgICAgaWYgbm90IHJlc3VsdDoKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgIF9oZWFwaWZ5X21heChyZXN1bHQpCiAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCiAgICAgICAgb3JkZXIgPSBuCiAgICAgICAgX2hlYXByZXBsYWNlID0gX2hlYXByZXBsYWNlX21heAogICAgICAgIGZvciBlbGVtIGluIGl0OgogICAgICAgICAgICBpZiBlbGVtIDwgdG9wOgogICAgICAgICAgICAgICAgX2hlYXByZXBsYWNlKHJlc3VsdCwgKGVsZW0sIG9yZGVyKSkKICAgICAgICAgICAgICAgIHRvcCwgX29yZGVyID0gcmVzdWx0WzBdCiAgICAgICAgICAgICAgICBvcmRlciArPSAxCiAgICAgICAgcmVzdWx0LnNvcnQoKQogICAgICAgIHJldHVybiBbZWxlbSBmb3IgKGVsZW0sIG9yZGVyKSBpbiByZXN1bHRdCgogICAgIyBHZW5lcmFsIGNhc2UsIHNsb3dlc3QgbWV0aG9kCiAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCiAgICByZXN1bHQgPSBbKGtleShlbGVtKSwgaSwgZWxlbSkgZm9yIGksIGVsZW0gaW4gemlwKHJhbmdlKG4pLCBpdCldCiAgICBpZiBub3QgcmVzdWx0OgogICAgICAgIHJldHVybiByZXN1bHQKICAgIF9oZWFwaWZ5X21heChyZXN1bHQpCiAgICB0b3AgPSByZXN1bHRbMF1bMF0KICAgIG9yZGVyID0gbgogICAgX2hlYXByZXBsYWNlID0gX2hlYXByZXBsYWNlX21heAogICAgZm9yIGVsZW0gaW4gaXQ6CiAgICAgICAgayA9IGtleShlbGVtKQogICAgICAgIGlmIGsgPCB0b3A6CiAgICAgICAgICAgIF9oZWFwcmVwbGFjZShyZXN1bHQsIChrLCBvcmRlciwgZWxlbSkpCiAgICAgICAgICAgIHRvcCwgX29yZGVyLCBfZWxlbSA9IHJlc3VsdFswXQogICAgICAgICAgICBvcmRlciArPSAxCiAgICByZXN1bHQuc29ydCgpCiAgICByZXR1cm4gW2VsZW0gZm9yIChrLCBvcmRlciwgZWxlbSkgaW4gcmVzdWx0XQoKZGVmIG5sYXJnZXN0KG4sIGl0ZXJhYmxlLCBrZXk9Tm9uZSk6CiAgICAiIiJGaW5kIHRoZSBuIGxhcmdlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgoKICAgIEVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUsIGtleT1rZXksIHJldmVyc2U9VHJ1ZSlbOm5dCiAgICAiIiIKCiAgICAjIFNob3J0LWN1dCBmb3Igbj09MSBpcyB0byB1c2UgbWF4KCkKICAgIGlmIG4gPT0gMToKICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCiAgICAgICAgc2VudGluZWwgPSBvYmplY3QoKQogICAgICAgIHJlc3VsdCA9IG1heChpdCwgZGVmYXVsdD1zZW50aW5lbCwga2V5PWtleSkKICAgICAgICByZXR1cm4gW10gaWYgcmVzdWx0IGlzIHNlbnRpbmVsIGVsc2UgW3Jlc3VsdF0KCiAgICAjIFdoZW4gbj49c2l6ZSwgaXQncyBmYXN0ZXIgdG8gdXNlIHNvcnRlZCgpCiAgICB0cnk6CiAgICAgICAgc2l6ZSA9IGxlbihpdGVyYWJsZSkKICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICBpZiBuID49IHNpemU6CiAgICAgICAgICAgIHJldHVybiBzb3J0ZWQoaXRlcmFibGUsIGtleT1rZXksIHJldmVyc2U9VHJ1ZSlbOm5dCgogICAgIyBXaGVuIGtleSBpcyBub25lLCB1c2Ugc2ltcGxlciBkZWNvcmF0aW9uCiAgICBpZiBrZXkgaXMgTm9uZToKICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCiAgICAgICAgcmVzdWx0ID0gWyhlbGVtLCBpKSBmb3IgaSwgZWxlbSBpbiB6aXAocmFuZ2UoMCwgLW4sIC0xKSwgaXQpXQogICAgICAgIGlmIG5vdCByZXN1bHQ6CiAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICBoZWFwaWZ5KHJlc3VsdCkKICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KICAgICAgICBvcmRlciA9IC1uCiAgICAgICAgX2hlYXByZXBsYWNlID0gaGVhcHJlcGxhY2UKICAgICAgICBmb3IgZWxlbSBpbiBpdDoKICAgICAgICAgICAgaWYgdG9wIDwgZWxlbToKICAgICAgICAgICAgICAgIF9oZWFwcmVwbGFjZShyZXN1bHQsIChlbGVtLCBvcmRlcikpCiAgICAgICAgICAgICAgICB0b3AsIF9vcmRlciA9IHJlc3VsdFswXQogICAgICAgICAgICAgICAgb3JkZXIgLT0gMQogICAgICAgIHJlc3VsdC5zb3J0KHJldmVyc2U9VHJ1ZSkKICAgICAgICByZXR1cm4gW2VsZW0gZm9yIChlbGVtLCBvcmRlcikgaW4gcmVzdWx0XQoKICAgICMgR2VuZXJhbCBjYXNlLCBzbG93ZXN0IG1ldGhvZAogICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQogICAgcmVzdWx0ID0gWyhrZXkoZWxlbSksIGksIGVsZW0pIGZvciBpLCBlbGVtIGluIHppcChyYW5nZSgwLCAtbiwgLTEpLCBpdCldCiAgICBpZiBub3QgcmVzdWx0OgogICAgICAgIHJldHVybiByZXN1bHQKICAgIGhlYXBpZnkocmVzdWx0KQogICAgdG9wID0gcmVzdWx0WzBdWzBdCiAgICBvcmRlciA9IC1uCiAgICBfaGVhcHJlcGxhY2UgPSBoZWFwcmVwbGFjZQogICAgZm9yIGVsZW0gaW4gaXQ6CiAgICAgICAgayA9IGtleShlbGVtKQogICAgICAgIGlmIHRvcCA8IGs6CiAgICAgICAgICAgIF9oZWFwcmVwbGFjZShyZXN1bHQsIChrLCBvcmRlciwgZWxlbSkpCiAgICAgICAgICAgIHRvcCwgX29yZGVyLCBfZWxlbSA9IHJlc3VsdFswXQogICAgICAgICAgICBvcmRlciAtPSAxCiAgICByZXN1bHQuc29ydChyZXZlcnNlPVRydWUpCiAgICByZXR1cm4gW2VsZW0gZm9yIChrLCBvcmRlciwgZWxlbSkgaW4gcmVzdWx0XQoKIyBJZiBhdmFpbGFibGUsIHVzZSBDIGltcGxlbWVudGF0aW9uCnRyeToKICAgIGZyb20gX2hlYXBxIGltcG9ydCAqCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKdHJ5OgogICAgZnJvbSBfaGVhcHEgaW1wb3J0IF9oZWFwcmVwbGFjZV9tYXgKZXhjZXB0IEltcG9ydEVycm9yOgogICAgcGFzcwp0cnk6CiAgICBmcm9tIF9oZWFwcSBpbXBvcnQgX2hlYXBpZnlfbWF4CmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKdHJ5OgogICAgZnJvbSBfaGVhcHEgaW1wb3J0IF9oZWFwcG9wX21heApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBwYXNzCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKCiAgICBpbXBvcnQgZG9jdGVzdCAjIHByYWdtYTogbm8gY292ZXIKICAgIHByaW50KGRvY3Rlc3QudGVzdG1vZCgpKSAjIHByYWdtYTogbm8gY292ZXIKUEsDBBQAAAAAAAIgo1aPWn2fJR4AACUeAAAHAAAAaG1hYy5weSIiIkhNQUMgKEtleWVkLUhhc2hpbmcgZm9yIE1lc3NhZ2UgQXV0aGVudGljYXRpb24pIG1vZHVsZS4KCkltcGxlbWVudHMgdGhlIEhNQUMgYWxnb3JpdGhtIGFzIGRlc2NyaWJlZCBieSBSRkMgMjEwNC4KIiIiCgppbXBvcnQgd2FybmluZ3MgYXMgX3dhcm5pbmdzCnRyeToKICAgIGltcG9ydCBfaGFzaGxpYiBhcyBfaGFzaG9wZW5zc2wKZXhjZXB0IEltcG9ydEVycm9yOgogICAgX2hhc2hvcGVuc3NsID0gTm9uZQogICAgX2Z1bmN0eXBlID0gTm9uZQogICAgZnJvbSBfb3BlcmF0b3IgaW1wb3J0IF9jb21wYXJlX2RpZ2VzdCBhcyBjb21wYXJlX2RpZ2VzdAplbHNlOgogICAgY29tcGFyZV9kaWdlc3QgPSBfaGFzaG9wZW5zc2wuY29tcGFyZV9kaWdlc3QKICAgIF9mdW5jdHlwZSA9IHR5cGUoX2hhc2hvcGVuc3NsLm9wZW5zc2xfc2hhMjU2KSAgIyBidWlsdGluIHR5cGUKCmltcG9ydCBoYXNobGliIGFzIF9oYXNobGliCgp0cmFuc181QyA9IGJ5dGVzKCh4IF4gMHg1QykgZm9yIHggaW4gcmFuZ2UoMjU2KSkKdHJhbnNfMzYgPSBieXRlcygoeCBeIDB4MzYpIGZvciB4IGluIHJhbmdlKDI1NikpCgojIFRoZSBzaXplIG9mIHRoZSBkaWdlc3RzIHJldHVybmVkIGJ5IEhNQUMgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWluZwojIGhhc2hpbmcgbW9kdWxlIHVzZWQuICBVc2UgZGlnZXN0X3NpemUgZnJvbSB0aGUgaW5zdGFuY2Ugb2YgSE1BQyBpbnN0ZWFkLgpkaWdlc3Rfc2l6ZSA9IE5vbmUKCgpjbGFzcyBITUFDOgogICAgIiIiUkZDIDIxMDQgSE1BQyBjbGFzcy4gIEFsc28gY29tcGxpZXMgd2l0aCBSRkMgNDIzMS4KCiAgICBUaGlzIHN1cHBvcnRzIHRoZSBBUEkgZm9yIENyeXB0b2dyYXBoaWMgSGFzaCBGdW5jdGlvbnMgKFBFUCAyNDcpLgogICAgIiIiCiAgICBibG9ja3NpemUgPSA2NCAgIyA1MTItYml0IEhNQUM7IGNhbiBiZSBjaGFuZ2VkIGluIHN1YmNsYXNzZXMuCgogICAgX19zbG90c19fID0gKAogICAgICAgICJfaG1hYyIsICJfaW5uZXIiLCAiX291dGVyIiwgImJsb2NrX3NpemUiLCAiZGlnZXN0X3NpemUiCiAgICApCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGtleSwgbXNnPU5vbmUsIGRpZ2VzdG1vZD0nJyk6CiAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IEhNQUMgb2JqZWN0LgoKICAgICAgICBrZXk6IGJ5dGVzIG9yIGJ1ZmZlciwga2V5IGZvciB0aGUga2V5ZWQgaGFzaCBvYmplY3QuCiAgICAgICAgbXNnOiBieXRlcyBvciBidWZmZXIsIEluaXRpYWwgaW5wdXQgZm9yIHRoZSBoYXNoIG9yIE5vbmUuCiAgICAgICAgZGlnZXN0bW9kOiBBIGhhc2ggbmFtZSBzdWl0YWJsZSBmb3IgaGFzaGxpYi5uZXcoKS4gKk9SKgogICAgICAgICAgICAgICAgICAgQSBoYXNobGliIGNvbnN0cnVjdG9yIHJldHVybmluZyBhIG5ldyBoYXNoIG9iamVjdC4gKk9SKgogICAgICAgICAgICAgICAgICAgQSBtb2R1bGUgc3VwcG9ydGluZyBQRVAgMjQ3LgoKICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkIGFzIG9mIDMuOCwgZGVzcGl0ZSBpdHMgcG9zaXRpb24gYWZ0ZXIgdGhlIG9wdGlvbmFsCiAgICAgICAgICAgICAgICAgICBtc2cgYXJndW1lbnQuICBQYXNzaW5nIGl0IGFzIGEga2V5d29yZCBhcmd1bWVudCBpcwogICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWQsIHRob3VnaCBub3QgcmVxdWlyZWQgZm9yIGxlZ2FjeSBBUEkgcmVhc29ucy4KICAgICAgICAiIiIKCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleTogZXhwZWN0ZWQgYnl0ZXMgb3IgYnl0ZWFycmF5LCBidXQgZ290ICVyIiAlIHR5cGUoa2V5KS5fX25hbWVfXykKCiAgICAgICAgaWYgbm90IGRpZ2VzdG1vZDoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciAnZGlnZXN0bW9kJy4iKQoKICAgICAgICBpZiBfaGFzaG9wZW5zc2wgYW5kIGlzaW5zdGFuY2UoZGlnZXN0bW9kLCAoc3RyLCBfZnVuY3R5cGUpKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5faW5pdF9obWFjKGtleSwgbXNnLCBkaWdlc3Rtb2QpCiAgICAgICAgICAgIGV4Y2VwdCBfaGFzaG9wZW5zc2wuVW5zdXBwb3J0ZWREaWdlc3Rtb2RFcnJvcjoKICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfb2xkKGtleSwgbXNnLCBkaWdlc3Rtb2QpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5faW5pdF9vbGQoa2V5LCBtc2csIGRpZ2VzdG1vZCkKCiAgICBkZWYgX2luaXRfaG1hYyhzZWxmLCBrZXksIG1zZywgZGlnZXN0bW9kKToKICAgICAgICBzZWxmLl9obWFjID0gX2hhc2hvcGVuc3NsLmhtYWNfbmV3KGtleSwgbXNnLCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQogICAgICAgIHNlbGYuZGlnZXN0X3NpemUgPSBzZWxmLl9obWFjLmRpZ2VzdF9zaXplCiAgICAgICAgc2VsZi5ibG9ja19zaXplID0gc2VsZi5faG1hYy5ibG9ja19zaXplCgogICAgZGVmIF9pbml0X29sZChzZWxmLCBrZXksIG1zZywgZGlnZXN0bW9kKToKICAgICAgICBpZiBjYWxsYWJsZShkaWdlc3Rtb2QpOgogICAgICAgICAgICBkaWdlc3RfY29ucyA9IGRpZ2VzdG1vZAogICAgICAgIGVsaWYgaXNpbnN0YW5jZShkaWdlc3Rtb2QsIHN0cik6CiAgICAgICAgICAgIGRpZ2VzdF9jb25zID0gbGFtYmRhIGQ9YicnOiBfaGFzaGxpYi5uZXcoZGlnZXN0bW9kLCBkKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRpZ2VzdF9jb25zID0gbGFtYmRhIGQ9YicnOiBkaWdlc3Rtb2QubmV3KGQpCgogICAgICAgIHNlbGYuX2htYWMgPSBOb25lCiAgICAgICAgc2VsZi5fb3V0ZXIgPSBkaWdlc3RfY29ucygpCiAgICAgICAgc2VsZi5faW5uZXIgPSBkaWdlc3RfY29ucygpCiAgICAgICAgc2VsZi5kaWdlc3Rfc2l6ZSA9IHNlbGYuX2lubmVyLmRpZ2VzdF9zaXplCgogICAgICAgIGlmIGhhc2F0dHIoc2VsZi5faW5uZXIsICdibG9ja19zaXplJyk6CiAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IHNlbGYuX2lubmVyLmJsb2NrX3NpemUKICAgICAgICAgICAgaWYgYmxvY2tzaXplIDwgMTY6CiAgICAgICAgICAgICAgICBfd2FybmluZ3Mud2FybignYmxvY2tfc2l6ZSBvZiAlZCBzZWVtcyB0b28gc21hbGw7IHVzaW5nIG91ciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCBvZiAlZC4nICUgKGJsb2Nrc2l6ZSwgc2VsZi5ibG9ja3NpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsIDIpCiAgICAgICAgICAgICAgICBibG9ja3NpemUgPSBzZWxmLmJsb2Nrc2l6ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdObyBibG9ja19zaXplIGF0dHJpYnV0ZSBvbiBnaXZlbiBkaWdlc3Qgb2JqZWN0OyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdBc3N1bWluZyAlZC4nICUgKHNlbGYuYmxvY2tzaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsIDIpCiAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IHNlbGYuYmxvY2tzaXplCgogICAgICAgIGlmIGxlbihrZXkpID4gYmxvY2tzaXplOgogICAgICAgICAgICBrZXkgPSBkaWdlc3RfY29ucyhrZXkpLmRpZ2VzdCgpCgogICAgICAgICMgc2VsZi5ibG9ja3NpemUgaXMgdGhlIGRlZmF1bHQgYmxvY2tzaXplLiBzZWxmLmJsb2NrX3NpemUgaXMKICAgICAgICAjIGVmZmVjdGl2ZSBibG9jayBzaXplIGFzIHdlbGwgYXMgdGhlIHB1YmxpYyBBUEkgYXR0cmlidXRlLgogICAgICAgIHNlbGYuYmxvY2tfc2l6ZSA9IGJsb2Nrc2l6ZQoKICAgICAgICBrZXkgPSBrZXkubGp1c3QoYmxvY2tzaXplLCBiJ1wwJykKICAgICAgICBzZWxmLl9vdXRlci51cGRhdGUoa2V5LnRyYW5zbGF0ZSh0cmFuc181QykpCiAgICAgICAgc2VsZi5faW5uZXIudXBkYXRlKGtleS50cmFuc2xhdGUodHJhbnNfMzYpKQogICAgICAgIGlmIG1zZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi51cGRhdGUobXNnKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5faG1hYzoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2htYWMubmFtZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBmImhtYWMte3NlbGYuX2lubmVyLm5hbWV9IgoKICAgIGRlZiB1cGRhdGUoc2VsZiwgbXNnKToKICAgICAgICAiIiJGZWVkIGRhdGEgZnJvbSBtc2cgaW50byB0aGlzIGhhc2hpbmcgb2JqZWN0LiIiIgogICAgICAgIGluc3QgPSBzZWxmLl9obWFjIG9yIHNlbGYuX2lubmVyCiAgICAgICAgaW5zdC51cGRhdGUobXNnKQoKICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHNlcGFyYXRlIGNvcHkgb2YgdGhpcyBoYXNoaW5nIG9iamVjdC4KCiAgICAgICAgQW4gdXBkYXRlIHRvIHRoaXMgY29weSB3b24ndCBhZmZlY3QgdGhlIG9yaWdpbmFsIG9iamVjdC4KICAgICAgICAiIiIKICAgICAgICAjIENhbGwgX19uZXdfXyBkaXJlY3RseSB0byBhdm9pZCB0aGUgZXhwZW5zaXZlIF9faW5pdF9fLgogICAgICAgIG90aGVyID0gc2VsZi5fX2NsYXNzX18uX19uZXdfXyhzZWxmLl9fY2xhc3NfXykKICAgICAgICBvdGhlci5kaWdlc3Rfc2l6ZSA9IHNlbGYuZGlnZXN0X3NpemUKICAgICAgICBpZiBzZWxmLl9obWFjOgogICAgICAgICAgICBvdGhlci5faG1hYyA9IHNlbGYuX2htYWMuY29weSgpCiAgICAgICAgICAgIG90aGVyLl9pbm5lciA9IG90aGVyLl9vdXRlciA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBvdGhlci5faG1hYyA9IE5vbmUKICAgICAgICAgICAgb3RoZXIuX2lubmVyID0gc2VsZi5faW5uZXIuY29weSgpCiAgICAgICAgICAgIG90aGVyLl9vdXRlciA9IHNlbGYuX291dGVyLmNvcHkoKQogICAgICAgIHJldHVybiBvdGhlcgoKICAgIGRlZiBfY3VycmVudChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBoYXNoIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc3RhdGUuCgogICAgICAgIFRvIGJlIHVzZWQgb25seSBpbnRlcm5hbGx5IHdpdGggZGlnZXN0KCkgYW5kIGhleGRpZ2VzdCgpLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX2htYWM6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9obWFjCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaCA9IHNlbGYuX291dGVyLmNvcHkoKQogICAgICAgICAgICBoLnVwZGF0ZShzZWxmLl9pbm5lci5kaWdlc3QoKSkKICAgICAgICAgICAgcmV0dXJuIGgKCiAgICBkZWYgZGlnZXN0KHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgaGFzaCB2YWx1ZSBvZiB0aGlzIGhhc2hpbmcgb2JqZWN0LgoKICAgICAgICBUaGlzIHJldHVybnMgdGhlIGhtYWMgdmFsdWUgYXMgYnl0ZXMuICBUaGUgb2JqZWN0IGlzCiAgICAgICAgbm90IGFsdGVyZWQgaW4gYW55IHdheSBieSB0aGlzIGZ1bmN0aW9uOyB5b3UgY2FuIGNvbnRpbnVlCiAgICAgICAgdXBkYXRpbmcgdGhlIG9iamVjdCBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgIiIiCiAgICAgICAgaCA9IHNlbGYuX2N1cnJlbnQoKQogICAgICAgIHJldHVybiBoLmRpZ2VzdCgpCgogICAgZGVmIGhleGRpZ2VzdChzZWxmKToKICAgICAgICAiIiJMaWtlIGRpZ2VzdCgpLCBidXQgcmV0dXJucyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMgaW5zdGVhZC4KICAgICAgICAiIiIKICAgICAgICBoID0gc2VsZi5fY3VycmVudCgpCiAgICAgICAgcmV0dXJuIGguaGV4ZGlnZXN0KCkKCmRlZiBuZXcoa2V5LCBtc2c9Tm9uZSwgZGlnZXN0bW9kPScnKToKICAgICIiIkNyZWF0ZSBhIG5ldyBoYXNoaW5nIG9iamVjdCBhbmQgcmV0dXJuIGl0LgoKICAgIGtleTogYnl0ZXMgb3IgYnVmZmVyLCBUaGUgc3RhcnRpbmcga2V5IGZvciB0aGUgaGFzaC4KICAgIG1zZzogYnl0ZXMgb3IgYnVmZmVyLCBJbml0aWFsIGlucHV0IGZvciB0aGUgaGFzaCwgb3IgTm9uZS4KICAgIGRpZ2VzdG1vZDogQSBoYXNoIG5hbWUgc3VpdGFibGUgZm9yIGhhc2hsaWIubmV3KCkuICpPUioKICAgICAgICAgICAgICAgQSBoYXNobGliIGNvbnN0cnVjdG9yIHJldHVybmluZyBhIG5ldyBoYXNoIG9iamVjdC4gKk9SKgogICAgICAgICAgICAgICBBIG1vZHVsZSBzdXBwb3J0aW5nIFBFUCAyNDcuCgogICAgICAgICAgICAgICBSZXF1aXJlZCBhcyBvZiAzLjgsIGRlc3BpdGUgaXRzIHBvc2l0aW9uIGFmdGVyIHRoZSBvcHRpb25hbAogICAgICAgICAgICAgICBtc2cgYXJndW1lbnQuICBQYXNzaW5nIGl0IGFzIGEga2V5d29yZCBhcmd1bWVudCBpcwogICAgICAgICAgICAgICByZWNvbW1lbmRlZCwgdGhvdWdoIG5vdCByZXF1aXJlZCBmb3IgbGVnYWN5IEFQSSByZWFzb25zLgoKICAgIFlvdSBjYW4gbm93IGZlZWQgYXJiaXRyYXJ5IGJ5dGVzIGludG8gdGhlIG9iamVjdCB1c2luZyBpdHMgdXBkYXRlKCkKICAgIG1ldGhvZCwgYW5kIGNhbiBhc2sgZm9yIHRoZSBoYXNoIHZhbHVlIGF0IGFueSB0aW1lIGJ5IGNhbGxpbmcgaXRzIGRpZ2VzdCgpCiAgICBvciBoZXhkaWdlc3QoKSBtZXRob2RzLgogICAgIiIiCiAgICByZXR1cm4gSE1BQyhrZXksIG1zZywgZGlnZXN0bW9kKQoKCmRlZiBkaWdlc3Qoa2V5LCBtc2csIGRpZ2VzdCk6CiAgICAiIiJGYXN0IGlubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBITUFDLgoKICAgIGtleTogYnl0ZXMgb3IgYnVmZmVyLCBUaGUga2V5IGZvciB0aGUga2V5ZWQgaGFzaCBvYmplY3QuCiAgICBtc2c6IGJ5dGVzIG9yIGJ1ZmZlciwgSW5wdXQgbWVzc2FnZS4KICAgIGRpZ2VzdDogQSBoYXNoIG5hbWUgc3VpdGFibGUgZm9yIGhhc2hsaWIubmV3KCkgZm9yIGJlc3QgcGVyZm9ybWFuY2UuICpPUioKICAgICAgICAgICAgQSBoYXNobGliIGNvbnN0cnVjdG9yIHJldHVybmluZyBhIG5ldyBoYXNoIG9iamVjdC4gKk9SKgogICAgICAgICAgICBBIG1vZHVsZSBzdXBwb3J0aW5nIFBFUCAyNDcuCiAgICAiIiIKICAgIGlmIF9oYXNob3BlbnNzbCBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZShkaWdlc3QsIChzdHIsIF9mdW5jdHlwZSkpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIF9oYXNob3BlbnNzbC5obWFjX2RpZ2VzdChrZXksIG1zZywgZGlnZXN0KQogICAgICAgIGV4Y2VwdCBfaGFzaG9wZW5zc2wuVW5zdXBwb3J0ZWREaWdlc3Rtb2RFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIGlmIGNhbGxhYmxlKGRpZ2VzdCk6CiAgICAgICAgZGlnZXN0X2NvbnMgPSBkaWdlc3QKICAgIGVsaWYgaXNpbnN0YW5jZShkaWdlc3QsIHN0cik6CiAgICAgICAgZGlnZXN0X2NvbnMgPSBsYW1iZGEgZD1iJyc6IF9oYXNobGliLm5ldyhkaWdlc3QsIGQpCiAgICBlbHNlOgogICAgICAgIGRpZ2VzdF9jb25zID0gbGFtYmRhIGQ9YicnOiBkaWdlc3QubmV3KGQpCgogICAgaW5uZXIgPSBkaWdlc3RfY29ucygpCiAgICBvdXRlciA9IGRpZ2VzdF9jb25zKCkKICAgIGJsb2Nrc2l6ZSA9IGdldGF0dHIoaW5uZXIsICdibG9ja19zaXplJywgNjQpCiAgICBpZiBsZW4oa2V5KSA+IGJsb2Nrc2l6ZToKICAgICAgICBrZXkgPSBkaWdlc3RfY29ucyhrZXkpLmRpZ2VzdCgpCiAgICBrZXkgPSBrZXkgKyBiJ1x4MDAnICogKGJsb2Nrc2l6ZSAtIGxlbihrZXkpKQogICAgaW5uZXIudXBkYXRlKGtleS50cmFuc2xhdGUodHJhbnNfMzYpKQogICAgb3V0ZXIudXBkYXRlKGtleS50cmFuc2xhdGUodHJhbnNfNUMpKQogICAgaW5uZXIudXBkYXRlKG1zZykKICAgIG91dGVyLnVwZGF0ZShpbm5lci5kaWdlc3QoKSkKICAgIHJldHVybiBvdXRlci5kaWdlc3QoKQpQSwMEFAAAAAAAAiCjVpKCUAtR1gAAUdYAAAoAAABpbWFwbGliLnB5IiIiSU1BUDQgY2xpZW50LgoKQmFzZWQgb24gUkZDIDIwNjAuCgpQdWJsaWMgY2xhc3M6ICAgICAgICAgICBJTUFQNApQdWJsaWMgdmFyaWFibGU6ICAgICAgICBEZWJ1ZwpQdWJsaWMgZnVuY3Rpb25zOiAgICAgICBJbnRlcm5hbGRhdGUydHVwbGUKICAgICAgICAgICAgICAgICAgICAgICAgSW50MkFQCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgVGltZTJJbnRlcm5hbGRhdGUKIiIiCgojIEF1dGhvcjogUGllcnMgTGF1ZGVyIDxwaWVyc0Bjcy5zdS5vei5hdT4gRGVjZW1iZXIgMTk5Ny4KIwojIEF1dGhlbnRpY2F0aW9uIGNvZGUgY29udHJpYnV0ZWQgYnkgRG9ubiBDYXZlIDxkb25uQHUud2FzaGluZ3Rvbi5lZHU+IEp1bmUgMTk5OC4KIyBTdHJpbmcgbWV0aG9kIGNvbnZlcnNpb24gYnkgRVNSLCBGZWJydWFyeSAyMDAxLgojIEdFVC9TRVRBQ0wgY29udHJpYnV0ZWQgYnkgQW50aG9ueSBCYXh0ZXIgPGFudGhvbnlAaW50ZXJsaW5rLmNvbS5hdT4gQXByaWwgMjAwMS4KIyBJTUFQNF9TU0wgY29udHJpYnV0ZWQgYnkgVGlubyBMYW5nZSA8VGluby5MYW5nZUBpc2cuZGU+IE1hcmNoIDIwMDIuCiMgR0VUL1NFVFFVT1RBIGNvbnRyaWJ1dGVkIGJ5IEFuZHJlYXMgWmVpZGxlciA8YXpAa3JlYXRpdmtvbWJpbmF0LmRlPiBKdW5lIDIwMDIuCiMgUFJPWFlBVVRIIGNvbnRyaWJ1dGVkIGJ5IFJpY2sgSG9sYmVydCA8aG9sYmVydC4xM0Bvc3UuZWR1PiBOb3ZlbWJlciAyMDAyLgojIEdFVC9TRVRBTk5PVEFUSU9OIGNvbnRyaWJ1dGVkIGJ5IFRvbWFzIExpbmRyb29zIDxza2l0dGFAYWJvLmZpPiBKdW5lIDIwMDUuCgpfX3ZlcnNpb25fXyA9ICIyLjU4IgoKaW1wb3J0IGJpbmFzY2lpLCBlcnJubywgcmFuZG9tLCByZSwgc29ja2V0LCBzdWJwcm9jZXNzLCBzeXMsIHRpbWUsIGNhbGVuZGFyCmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZSwgdGltZWRlbHRhCmZyb20gaW8gaW1wb3J0IERFRkFVTFRfQlVGRkVSX1NJWkUKCnRyeToKICAgIGltcG9ydCBzc2wKICAgIEhBVkVfU1NMID0gVHJ1ZQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBIQVZFX1NTTCA9IEZhbHNlCgpfX2FsbF9fID0gWyJJTUFQNCIsICJJTUFQNF9zdHJlYW0iLCAiSW50ZXJuYWxkYXRlMnR1cGxlIiwKICAgICAgICAgICAiSW50MkFQIiwgIlBhcnNlRmxhZ3MiLCAiVGltZTJJbnRlcm5hbGRhdGUiXQoKIyAgICAgICBHbG9iYWxzCgpDUkxGID0gYidcclxuJwpEZWJ1ZyA9IDAKSU1BUDRfUE9SVCA9IDE0MwpJTUFQNF9TU0xfUE9SVCA9IDk5MwpBbGxvd2VkVmVyc2lvbnMgPSAoJ0lNQVA0UkVWMScsICdJTUFQNCcpICAgICAgICAjIE1vc3QgcmVjZW50IGZpcnN0CgojIE1heGltYWwgbGluZSBsZW5ndGggd2hlbiBjYWxsaW5nIHJlYWRsaW5lKCkuIFRoaXMgaXMgdG8gcHJldmVudAojIHJlYWRpbmcgYXJiaXRyYXJ5IGxlbmd0aCBsaW5lcy4gUkZDIDM1MDEgYW5kIDIwNjAgKElNQVAgNHJldjEpCiMgZG9uJ3Qgc3BlY2lmeSBhIGxpbmUgbGVuZ3RoLiBSRkMgMjY4MyBzdWdnZXN0cyBsaW1pdGluZyBjbGllbnQKIyBjb21tYW5kIGxpbmVzIHRvIDEwMDAgb2N0ZXRzIGFuZCB0aGF0IHNlcnZlcnMgc2hvdWxkIGJlIHByZXBhcmVkCiMgdG8gYWNjZXB0IGNvbW1hbmQgbGluZXMgdXAgdG8gODAwMCBvY3RldHMsIHNvIHdlIHVzZWQgdG8gdXNlIDEwSyBoZXJlLgojIEluIHRoZSBtb2Rlcm4gd29ybGQgKGVnOiBnbWFpbCkgdGhlIHJlc3BvbnNlIHRvLCBmb3IgZXhhbXBsZSwgYQojIHNlYXJjaCBjb21tYW5kIGNhbiBiZSBxdWl0ZSBsYXJnZSwgc28gd2Ugbm93IHVzZSAxTS4KX01BWExJTkUgPSAxMDAwMDAwCgoKIyAgICAgICBDb21tYW5kcwoKQ29tbWFuZHMgPSB7CiAgICAgICAgIyBuYW1lICAgICAgICAgICAgdmFsaWQgc3RhdGVzCiAgICAgICAgJ0FQUEVORCc6ICAgICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICdBVVRIRU5USUNBVEUnOiAoJ05PTkFVVEgnLCksCiAgICAgICAgJ0NBUEFCSUxJVFknOiAgICgnTk9OQVVUSCcsICdBVVRIJywgJ1NFTEVDVEVEJywgJ0xPR09VVCcpLAogICAgICAgICdDSEVDSyc6ICAgICAgICAoJ1NFTEVDVEVEJywpLAogICAgICAgICdDTE9TRSc6ICAgICAgICAoJ1NFTEVDVEVEJywpLAogICAgICAgICdDT1BZJzogICAgICAgICAoJ1NFTEVDVEVEJywpLAogICAgICAgICdDUkVBVEUnOiAgICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAnREVMRVRFJzogICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgJ0RFTEVURUFDTCc6ICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICdFTkFCTEUnOiAgICAgICAoJ0FVVEgnLCApLAogICAgICAgICdFWEFNSU5FJzogICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAnRVhQVU5HRSc6ICAgICAgKCdTRUxFQ1RFRCcsKSwKICAgICAgICAnRkVUQ0gnOiAgICAgICAgKCdTRUxFQ1RFRCcsKSwKICAgICAgICAnR0VUQUNMJzogICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgJ0dFVEFOTk9UQVRJT04nOignQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICdHRVRRVU9UQSc6ICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAnR0VUUVVPVEFST09UJzogKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgJ01ZUklHSFRTJzogICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICdMSVNUJzogICAgICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAnTE9HSU4nOiAgICAgICAgKCdOT05BVVRIJywpLAogICAgICAgICdMT0dPVVQnOiAgICAgICAoJ05PTkFVVEgnLCAnQVVUSCcsICdTRUxFQ1RFRCcsICdMT0dPVVQnKSwKICAgICAgICAnTFNVQic6ICAgICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgJ01PVkUnOiAgICAgICAgICgnU0VMRUNURUQnLCksCiAgICAgICAgJ05BTUVTUEFDRSc6ICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICdOT09QJzogICAgICAgICAoJ05PTkFVVEgnLCAnQVVUSCcsICdTRUxFQ1RFRCcsICdMT0dPVVQnKSwKICAgICAgICAnUEFSVElBTCc6ICAgICAgKCdTRUxFQ1RFRCcsKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOQjogb2Jzb2xldGUKICAgICAgICAnUFJPWFlBVVRIJzogICAgKCdBVVRIJywpLAogICAgICAgICdSRU5BTUUnOiAgICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAnU0VBUkNIJzogICAgICAgKCdTRUxFQ1RFRCcsKSwKICAgICAgICAnU0VMRUNUJzogICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgJ1NFVEFDTCc6ICAgICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICdTRVRBTk5PVEFUSU9OJzooJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAnU0VUUVVPVEEnOiAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgJ1NPUlQnOiAgICAgICAgICgnU0VMRUNURUQnLCksCiAgICAgICAgJ1NUQVJUVExTJzogICAgICgnTk9OQVVUSCcsKSwKICAgICAgICAnU1RBVFVTJzogICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgJ1NUT1JFJzogICAgICAgICgnU0VMRUNURUQnLCksCiAgICAgICAgJ1NVQlNDUklCRSc6ICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICdUSFJFQUQnOiAgICAgICAoJ1NFTEVDVEVEJywpLAogICAgICAgICdVSUQnOiAgICAgICAgICAoJ1NFTEVDVEVEJywpLAogICAgICAgICdVTlNVQlNDUklCRSc6ICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAnVU5TRUxFQ1QnOiAgICAgKCdTRUxFQ1RFRCcsKSwKICAgICAgICB9CgojICAgICAgIFBhdHRlcm5zIHRvIG1hdGNoIHNlcnZlciByZXNwb25zZXMKCkNvbnRpbnVhdGlvbiA9IHJlLmNvbXBpbGUoYnInXCsoICg/UDxkYXRhPi4qKSk/JykKRmxhZ3MgPSByZS5jb21waWxlKGJyJy4qRkxBR1MgXCgoP1A8ZmxhZ3M+W15cKV0qKVwpJykKSW50ZXJuYWxEYXRlID0gcmUuY29tcGlsZShicicuKklOVEVSTkFMREFURSAiJwogICAgICAgIGJyJyg/UDxkYXk+WyAwMTIzXVswLTldKS0oP1A8bW9uPltBLVpdW2Etel1bYS16XSktKD9QPHllYXI+WzAtOV1bMC05XVswLTldWzAtOV0pJwogICAgICAgIGJyJyAoP1A8aG91cj5bMC05XVswLTldKTooP1A8bWluPlswLTldWzAtOV0pOig/UDxzZWM+WzAtOV1bMC05XSknCiAgICAgICAgYnInICg/UDx6b25lbj5bLStdKSg/UDx6b25laD5bMC05XVswLTldKSg/UDx6b25lbT5bMC05XVswLTldKScKICAgICAgICBiciciJykKIyBMaXRlcmFsIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgpMaXRlcmFsID0gcmUuY29tcGlsZShicicuKnsoP1A8c2l6ZT5cZCspfSQnLCByZS5BU0NJSSkKTWFwQ1JMRiA9IHJlLmNvbXBpbGUoYnInXHJcbnxccnxcbicpCiMgV2Ugbm8gbG9uZ2VyIGV4Y2x1ZGUgdGhlICddJyBjaGFyYWN0ZXIgZnJvbSB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSByZXNwb25zZQojIGNvZGUsIGV2ZW4gdGhvdWdoIGl0IHZpb2xhdGVzIHRoZSBSRkMuICBQb3B1bGFyIElNQVAgc2VydmVycyBzdWNoIGFzIEdtYWlsCiMgYWxsb3cgZmxhZ3Mgd2l0aCAnXScsIGFuZCB0aGVyZSBhcmUgcHJvZ3JhbXMgKGluY2x1ZGluZyBpbWFwbGliISkgdGhhdCBjYW4KIyBwcm9kdWNlIHRoZW0uICBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgaXMgaWYgdGhlICd0ZXh0JyBwb3J0aW9uIG9mIHRoZSByZXNwb25zZQojIGluY2x1ZGVzIGEgJ10nIHdlJ2xsIHBhcnNlIHRoZSByZXNwb25zZSB3cm9uZyAod2hpY2ggaXMgdGhlIHBvaW50IG9mIHRoZSBSRkMKIyByZXN0cmljdGlvbikuICBIb3dldmVyLCB0aGF0IHNlZW1zIGxlc3MgbGlrZWx5IHRvIGJlIGEgcHJvYmxlbSBpbiBwcmFjdGljZQojIHRoYW4gYmVpbmcgdW5hYmxlIHRvIGNvcnJlY3RseSBwYXJzZSBmbGFncyB0aGF0IGluY2x1ZGUgJ10nIGNoYXJzLCB3aGljaAojIHdhcyByZXBvcnRlZCBhcyBhIHJlYWwtd29ybGQgcHJvYmxlbSBpbiBpc3N1ZSAjMjE4MTUuClJlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/XF0nKQpVbnRhZ2dlZF9yZXNwb25zZSA9IHJlLmNvbXBpbGUoYnInXCogKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/JykKIyBVbnRhZ2dlZF9zdGF0dXMgaXMgbm8gbG9uZ2VyIHVzZWQ7IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZSgKICAgIGJyJ1wqICg/UDxkYXRhPlxkKykgKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhMj4uKikpPycsIHJlLkFTQ0lJKQojIFdlIGNvbXBpbGUgdGhlc2UgaW4gX21vZGVfeHh4LgpfTGl0ZXJhbCA9IGJyJy4qeyg/UDxzaXplPlxkKyl9JCcKX1VudGFnZ2VkX3N0YXR1cyA9IGJyJ1wqICg/UDxkYXRhPlxkKykgKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhMj4uKikpPycKCgoKY2xhc3MgSU1BUDQ6CgogICAgciIiIklNQVA0IGNsaWVudCBjbGFzcy4KCiAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNChbaG9zdFssIHBvcnRbLCB0aW1lb3V0PU5vbmVdXV0pCgogICAgICAgICAgICBob3N0IC0gaG9zdCdzIG5hbWUgKGRlZmF1bHQ6IGxvY2FsaG9zdCk7CiAgICAgICAgICAgIHBvcnQgLSBwb3J0IG51bWJlciAoZGVmYXVsdDogc3RhbmRhcmQgSU1BUDQgcG9ydCkuCiAgICAgICAgICAgIHRpbWVvdXQgLSBzb2NrZXQgdGltZW91dCAoZGVmYXVsdDogTm9uZSkKICAgICAgICAgICAgICAgICAgICAgIElmIHRpbWVvdXQgaXMgbm90IGdpdmVuIG9yIGlzIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICB0aGUgZ2xvYmFsIGRlZmF1bHQgc29ja2V0IHRpbWVvdXQgaXMgdXNlZAoKICAgIEFsbCBJTUFQNHJldjEgY29tbWFuZHMgYXJlIHN1cHBvcnRlZCBieSBtZXRob2RzIG9mIHRoZSBzYW1lCiAgICBuYW1lIChpbiBsb3dlcmNhc2UpLgoKICAgIEFsbCBhcmd1bWVudHMgdG8gY29tbWFuZHMgYXJlIGNvbnZlcnRlZCB0byBzdHJpbmdzLCBleGNlcHQgZm9yCiAgICBBVVRIRU5USUNBVEUsIGFuZCB0aGUgbGFzdCBhcmd1bWVudCB0byBBUFBFTkQgd2hpY2ggaXMgcGFzc2VkIGFzCiAgICBhbiBJTUFQNCBsaXRlcmFsLiAgSWYgbmVjZXNzYXJ5ICh0aGUgc3RyaW5nIGNvbnRhaW5zIGFueQogICAgbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgb3Igd2hpdGUtc3BhY2UgYW5kIGlzbid0IGVuY2xvc2VkIHdpdGgKICAgIGVpdGhlciBwYXJlbnRoZXNlcyBvciBkb3VibGUgcXVvdGVzKSBlYWNoIHN0cmluZyBpcyBxdW90ZWQuCiAgICBIb3dldmVyLCB0aGUgJ3Bhc3N3b3JkJyBhcmd1bWVudCB0byB0aGUgTE9HSU4gY29tbWFuZCBpcyBhbHdheXMKICAgIHF1b3RlZC4gIElmIHlvdSB3YW50IHRvIGF2b2lkIGhhdmluZyBhbiBhcmd1bWVudCBzdHJpbmcgcXVvdGVkCiAgICAoZWc6IHRoZSAnZmxhZ3MnIGFyZ3VtZW50IHRvIFNUT1JFKSB0aGVuIGVuY2xvc2UgdGhlIHN0cmluZyBpbgogICAgcGFyZW50aGVzZXMgKGVnOiAiKFxEZWxldGVkKSIpLgoKICAgIEVhY2ggY29tbWFuZCByZXR1cm5zIGEgdHVwbGU6ICh0eXBlLCBbZGF0YSwgLi4uXSkgd2hlcmUgJ3R5cGUnCiAgICBpcyB1c3VhbGx5ICdPSycgb3IgJ05PJywgYW5kICdkYXRhJyBpcyBlaXRoZXIgdGhlIHRleHQgZnJvbSB0aGUKICAgIHRhZ2dlZCByZXNwb25zZSwgb3IgdW50YWdnZWQgcmVzdWx0cyBmcm9tIGNvbW1hbmQuIEVhY2ggJ2RhdGEnCiAgICBpcyBlaXRoZXIgYSBzdHJpbmcsIG9yIGEgdHVwbGUuIElmIGEgdHVwbGUsIHRoZW4gdGhlIGZpcnN0IHBhcnQKICAgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIHJlc3BvbnNlLCBhbmQgdGhlIHNlY29uZCBwYXJ0IGNvbnRhaW5zCiAgICB0aGUgZGF0YSAoaWU6ICdsaXRlcmFsJyB2YWx1ZSkuCgogICAgRXJyb3JzIHJhaXNlIHRoZSBleGNlcHRpb24gY2xhc3MgPGluc3RhbmNlPi5lcnJvcigiPHJlYXNvbj4iKS4KICAgIElNQVA0IHNlcnZlciBlcnJvcnMgcmFpc2UgPGluc3RhbmNlPi5hYm9ydCgiPHJlYXNvbj4iKSwKICAgIHdoaWNoIGlzIGEgc3ViLWNsYXNzIG9mICdlcnJvcicuIE1haWxib3ggc3RhdHVzIGNoYW5nZXMKICAgIGZyb20gUkVBRC1XUklURSB0byBSRUFELU9OTFkgcmFpc2UgdGhlIGV4Y2VwdGlvbiBjbGFzcwogICAgPGluc3RhbmNlPi5yZWFkb25seSgiPHJlYXNvbj4iKSwgd2hpY2ggaXMgYSBzdWItY2xhc3Mgb2YgJ2Fib3J0Jy4KCiAgICAiZXJyb3IiIGV4Y2VwdGlvbnMgaW1wbHkgYSBwcm9ncmFtIGVycm9yLgogICAgImFib3J0IiBleGNlcHRpb25zIGltcGx5IHRoZSBjb25uZWN0aW9uIHNob3VsZCBiZSByZXNldCwgYW5kCiAgICAgICAgICAgIHRoZSBjb21tYW5kIHJlLXRyaWVkLgogICAgInJlYWRvbmx5IiBleGNlcHRpb25zIGltcGx5IHRoZSBjb21tYW5kIHNob3VsZCBiZSByZS10cmllZC4KCiAgICBOb3RlOiB0byB1c2UgdGhpcyBtb2R1bGUsIHlvdSBtdXN0IHJlYWQgdGhlIFJGQ3MgcGVydGFpbmluZyB0byB0aGUKICAgIElNQVA0IHByb3RvY29sLCBhcyB0aGUgc2VtYW50aWNzIG9mIHRoZSBhcmd1bWVudHMgdG8gZWFjaCBJTUFQNAogICAgY29tbWFuZCBhcmUgbGVmdCB0byB0aGUgaW52b2tlciwgbm90IHRvIG1lbnRpb24gdGhlIHJlc3VsdHMuIEFsc28sCiAgICBtb3N0IElNQVAgc2VydmVycyBpbXBsZW1lbnQgYSBzdWItc2V0IG9mIHRoZSBjb21tYW5kcyBhdmFpbGFibGUgaGVyZS4KICAgICIiIgoKICAgIGNsYXNzIGVycm9yKEV4Y2VwdGlvbik6IHBhc3MgICAgIyBMb2dpY2FsIGVycm9ycyAtIGRlYnVnIHJlcXVpcmVkCiAgICBjbGFzcyBhYm9ydChlcnJvcik6IHBhc3MgICAgICAgICMgU2VydmljZSBlcnJvcnMgLSBjbG9zZSBhbmQgcmV0cnkKICAgIGNsYXNzIHJlYWRvbmx5KGFib3J0KTogcGFzcyAgICAgIyBNYWlsYm94IHN0YXR1cyBjaGFuZ2VkIHRvIFJFQUQtT05MWQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1BPUlQsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgc2VsZi5kZWJ1ZyA9IERlYnVnCiAgICAgICAgc2VsZi5zdGF0ZSA9ICdMT0dPVVQnCiAgICAgICAgc2VsZi5saXRlcmFsID0gTm9uZSAgICAgICAgICAgICAjIEEgbGl0ZXJhbCBhcmd1bWVudCB0byBhIGNvbW1hbmQKICAgICAgICBzZWxmLnRhZ2dlZF9jb21tYW5kcyA9IHt9ICAgICAgICMgVGFnZ2VkIGNvbW1hbmRzIGF3YWl0aW5nIHJlc3BvbnNlCiAgICAgICAgc2VsZi51bnRhZ2dlZF9yZXNwb25zZXMgPSB7fSAgICAjIHt0eXA6IFtkYXRhLCAuLi5dLCAuLi59CiAgICAgICAgc2VsZi5jb250aW51YXRpb25fcmVzcG9uc2UgPSAnJyAjIExhc3QgY29udGludWF0aW9uIHJlc3BvbnNlCiAgICAgICAgc2VsZi5pc19yZWFkb25seSA9IEZhbHNlICAgICAgICAjIFJFQUQtT05MWSBkZXNpcmVkIHN0YXRlCiAgICAgICAgc2VsZi50YWdudW0gPSAwCiAgICAgICAgc2VsZi5fdGxzX2VzdGFibGlzaGVkID0gRmFsc2UKICAgICAgICBzZWxmLl9tb2RlX2FzY2lpKCkKCiAgICAgICAgIyBPcGVuIHNvY2tldCB0byBzZXJ2ZXIuCgogICAgICAgIHNlbGYub3Blbihob3N0LCBwb3J0LCB0aW1lb3V0KQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3QoKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd24oKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgX21vZGVfYXNjaWkoc2VsZik6CiAgICAgICAgc2VsZi51dGY4X2VuYWJsZWQgPSBGYWxzZQogICAgICAgIHNlbGYuX2VuY29kaW5nID0gJ2FzY2lpJwogICAgICAgIHNlbGYuTGl0ZXJhbCA9IHJlLmNvbXBpbGUoX0xpdGVyYWwsIHJlLkFTQ0lJKQogICAgICAgIHNlbGYuVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZShfVW50YWdnZWRfc3RhdHVzLCByZS5BU0NJSSkKCgogICAgZGVmIF9tb2RlX3V0Zjgoc2VsZik6CiAgICAgICAgc2VsZi51dGY4X2VuYWJsZWQgPSBUcnVlCiAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSAndXRmLTgnCiAgICAgICAgc2VsZi5MaXRlcmFsID0gcmUuY29tcGlsZShfTGl0ZXJhbCkKICAgICAgICBzZWxmLlVudGFnZ2VkX3N0YXR1cyA9IHJlLmNvbXBpbGUoX1VudGFnZ2VkX3N0YXR1cykKCgogICAgZGVmIF9jb25uZWN0KHNlbGYpOgogICAgICAgICMgQ3JlYXRlIHVuaXF1ZSB0YWcgZm9yIHRoaXMgc2Vzc2lvbiwKICAgICAgICAjIGFuZCBjb21waWxlIHRhZ2dlZCByZXNwb25zZSBtYXRjaGVyLgoKICAgICAgICBzZWxmLnRhZ3ByZSA9IEludDJBUChyYW5kb20ucmFuZGludCg0MDk2LCA2NTUzNSkpCiAgICAgICAgc2VsZi50YWdyZSA9IHJlLmNvbXBpbGUoYnInKD9QPHRhZz4nCiAgICAgICAgICAgICAgICAgICAgICAgICsgc2VsZi50YWdwcmUKICAgICAgICAgICAgICAgICAgICAgICAgKyBicidcZCspICg/UDx0eXBlPltBLVpdKykgKD9QPGRhdGE+LiopJywgcmUuQVNDSUkpCgogICAgICAgICMgR2V0IHNlcnZlciB3ZWxjb21lIG1lc3NhZ2UsCiAgICAgICAgIyByZXF1ZXN0IGFuZCBzdG9yZSBDQVBBQklMSVRZIHJlc3BvbnNlLgoKICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgIHNlbGYuX2NtZF9sb2dfbGVuID0gMTAKICAgICAgICAgICAgc2VsZi5fY21kX2xvZ19pZHggPSAwCiAgICAgICAgICAgIHNlbGYuX2NtZF9sb2cgPSB7fSAgICAgICAgICAgIyBMYXN0IGBfY21kX2xvZ19sZW4nIGludGVyYWN0aW9ucwogICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDE6CiAgICAgICAgICAgICAgICBzZWxmLl9tZXNnKCdpbWFwbGliIHZlcnNpb24gJXMnICUgX192ZXJzaW9uX18pCiAgICAgICAgICAgICAgICBzZWxmLl9tZXNnKCduZXcgSU1BUDQgY29ubmVjdGlvbiwgdGFnPSVzJyAlIHNlbGYudGFncHJlKQoKICAgICAgICBzZWxmLndlbGNvbWUgPSBzZWxmLl9nZXRfcmVzcG9uc2UoKQogICAgICAgIGlmICdQUkVBVVRIJyBpbiBzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlczoKICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICdBVVRIJwogICAgICAgIGVsaWYgJ09LJyBpbiBzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlczoKICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICdOT05BVVRIJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuZXJyb3Ioc2VsZi53ZWxjb21lKQoKICAgICAgICBzZWxmLl9nZXRfY2FwYWJpbGl0aWVzKCkKICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMzoKICAgICAgICAgICAgICAgIHNlbGYuX21lc2coJ0NBUEFCSUxJVElFUzogJXInICUgKHNlbGYuY2FwYWJpbGl0aWVzLCkpCgogICAgICAgIGZvciB2ZXJzaW9uIGluIEFsbG93ZWRWZXJzaW9uczoKICAgICAgICAgICAgaWYgbm90IHZlcnNpb24gaW4gc2VsZi5jYXBhYmlsaXRpZXM6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBzZWxmLlBST1RPQ09MX1ZFUlNJT04gPSB2ZXJzaW9uCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICByYWlzZSBzZWxmLmVycm9yKCdzZXJ2ZXIgbm90IElNQVA0IGNvbXBsaWFudCcpCgoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKICAgICAgICAjICAgICAgIEFsbG93IFVQUEVSQ0FTRSB2YXJpYW50cyBvZiBJTUFQNCBjb21tYW5kIG1ldGhvZHMuCiAgICAgICAgaWYgYXR0ciBpbiBDb21tYW5kczoKICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgYXR0ci5sb3dlcigpKQogICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJVbmtub3duIElNQVA0IGNvbW1hbmQ6ICclcyciICUgYXR0cikKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBpZiBzZWxmLnN0YXRlID09ICJMT0dPVVQiOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmxvZ291dCgpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCgogICAgIyAgICAgICBPdmVycmlkYWJsZSBtZXRob2RzCgoKICAgIGRlZiBfY3JlYXRlX3NvY2tldChzZWxmLCB0aW1lb3V0KToKICAgICAgICAjIERlZmF1bHQgdmFsdWUgb2YgSU1BUDQuaG9zdCBpcyAnJywgYnV0IHNvY2tldC5nZXRhZGRyaW5mbygpCiAgICAgICAgIyAod2hpY2ggaXMgdXNlZCBieSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKSkgZXhwZWN0cyBOb25lCiAgICAgICAgIyBhcyBhIGRlZmF1bHQgdmFsdWUgZm9yIGhvc3QuCiAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZSBhbmQgbm90IHRpbWVvdXQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vbi1ibG9ja2luZyBzb2NrZXQgKHRpbWVvdXQ9MCkgaXMgbm90IHN1cHBvcnRlZCcpCiAgICAgICAgaG9zdCA9IE5vbmUgaWYgbm90IHNlbGYuaG9zdCBlbHNlIHNlbGYuaG9zdAogICAgICAgIHN5cy5hdWRpdCgiaW1hcGxpYi5vcGVuIiwgc2VsZiwgc2VsZi5ob3N0LCBzZWxmLnBvcnQpCiAgICAgICAgYWRkcmVzcyA9IChob3N0LCBzZWxmLnBvcnQpCiAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0KQogICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcykKCiAgICBkZWYgb3BlbihzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1BPUlQsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIiIiU2V0dXAgY29ubmVjdGlvbiB0byByZW1vdGUgc2VydmVyIG9uICJob3N0OnBvcnQiCiAgICAgICAgICAgIChkZWZhdWx0OiBsb2NhbGhvc3Q6c3RhbmRhcmQgSU1BUDQgcG9ydCkuCiAgICAgICAgVGhpcyBjb25uZWN0aW9uIHdpbGwgYmUgdXNlZCBieSB0aGUgcm91dGluZXM6CiAgICAgICAgICAgIHJlYWQsIHJlYWRsaW5lLCBzZW5kLCBzaHV0ZG93bi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2NyZWF0ZV9zb2NrZXQodGltZW91dCkKICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUoJ3JiJykKCgogICAgZGVmIHJlYWQoc2VsZiwgc2l6ZSk6CiAgICAgICAgIiIiUmVhZCAnc2l6ZScgYnl0ZXMgZnJvbSByZW1vdGUuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5yZWFkKHNpemUpCgoKICAgIGRlZiByZWFkbGluZShzZWxmKToKICAgICAgICAiIiJSZWFkIGxpbmUgZnJvbSByZW1vdGUuIiIiCiAgICAgICAgbGluZSA9IHNlbGYuZmlsZS5yZWFkbGluZShfTUFYTElORSArIDEpCiAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuZXJyb3IoImdvdCBtb3JlIHRoYW4gJWQgYnl0ZXMiICUgX01BWExJTkUpCiAgICAgICAgcmV0dXJuIGxpbmUKCgogICAgZGVmIHNlbmQoc2VsZiwgZGF0YSk6CiAgICAgICAgIiIiU2VuZCBkYXRhIHRvIHJlbW90ZS4iIiIKICAgICAgICBzeXMuYXVkaXQoImltYXBsaWIuc2VuZCIsIHNlbGYsIGRhdGEpCiAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwoZGF0YSkKCgogICAgZGVmIHNodXRkb3duKHNlbGYpOgogICAgICAgICIiIkNsb3NlIEkvTyBlc3RhYmxpc2hlZCBpbiAib3BlbiIuIiIiCiAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuc29jay5zaHV0ZG93bihzb2NrZXQuU0hVVF9SRFdSKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgIyBUaGUgc2VydmVyIG1pZ2h0IGFscmVhZHkgaGF2ZSBjbG9zZWQgdGhlIGNvbm5lY3Rpb24uCiAgICAgICAgICAgICMgT24gV2luZG93cywgdGhpcyBtYXkgcmVzdWx0IGluIFdTQUVJTlZBTCAoZXJyb3IgMTAwMjIpOgogICAgICAgICAgICAjIEFuIGludmFsaWQgb3BlcmF0aW9uIHdhcyBhdHRlbXB0ZWQuCiAgICAgICAgICAgIGlmIChleGMuZXJybm8gIT0gZXJybm8uRU5PVENPTk4KICAgICAgICAgICAgICAgYW5kIGdldGF0dHIoZXhjLCAnd2luZXJyb3InLCAwKSAhPSAxMDAyMik6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCgoKICAgIGRlZiBzb2NrZXQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHNvY2tldCBpbnN0YW5jZSB1c2VkIHRvIGNvbm5lY3QgdG8gSU1BUDQgc2VydmVyLgoKICAgICAgICBzb2NrZXQgPSA8aW5zdGFuY2U+LnNvY2tldCgpCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuc29jawoKCgogICAgIyAgICAgICBVdGlsaXR5IG1ldGhvZHMKCgogICAgZGVmIHJlY2VudChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gbW9zdCByZWNlbnQgJ1JFQ0VOVCcgcmVzcG9uc2VzIGlmIGFueSBleGlzdCwKICAgICAgICBlbHNlIHByb21wdCBzZXJ2ZXIgZm9yIGFuIHVwZGF0ZSB1c2luZyB0aGUgJ05PT1AnIGNvbW1hbmQuCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LnJlY2VudCgpCgogICAgICAgICdkYXRhJyBpcyBOb25lIGlmIG5vIG5ldyBtZXNzYWdlcywKICAgICAgICBlbHNlIGxpc3Qgb2YgUkVDRU5UIHJlc3BvbnNlcywgbW9zdCByZWNlbnQgbGFzdC4KICAgICAgICAiIiIKICAgICAgICBuYW1lID0gJ1JFQ0VOVCcKICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3VudGFnZ2VkX3Jlc3BvbnNlKCdPSycsIFtOb25lXSwgbmFtZSkKICAgICAgICBpZiBkYXRbLTFdOgogICAgICAgICAgICByZXR1cm4gdHlwLCBkYXQKICAgICAgICB0eXAsIGRhdCA9IHNlbGYubm9vcCgpICAjIFByb2Qgc2VydmVyIGZvciByZXNwb25zZQogICAgICAgIHJldHVybiBzZWxmLl91bnRhZ2dlZF9yZXNwb25zZSh0eXAsIGRhdCwgbmFtZSkKCgogICAgZGVmIHJlc3BvbnNlKHNlbGYsIGNvZGUpOgogICAgICAgICIiIlJldHVybiBkYXRhIGZvciByZXNwb25zZSAnY29kZScgaWYgcmVjZWl2ZWQsIG9yIE5vbmUuCgogICAgICAgIE9sZCB2YWx1ZSBmb3IgcmVzcG9uc2UgJ2NvZGUnIGlzIGNsZWFyZWQuCgogICAgICAgIChjb2RlLCBbZGF0YV0pID0gPGluc3RhbmNlPi5yZXNwb25zZShjb2RlKQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl91bnRhZ2dlZF9yZXNwb25zZShjb2RlLCBbTm9uZV0sIGNvZGUudXBwZXIoKSkKCgoKICAgICMgICAgICAgSU1BUDQgY29tbWFuZHMKCgogICAgZGVmIGFwcGVuZChzZWxmLCBtYWlsYm94LCBmbGFncywgZGF0ZV90aW1lLCBtZXNzYWdlKToKICAgICAgICAiIiJBcHBlbmQgbWVzc2FnZSB0byBuYW1lZCBtYWlsYm94LgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5hcHBlbmQobWFpbGJveCwgZmxhZ3MsIGRhdGVfdGltZSwgbWVzc2FnZSkKCiAgICAgICAgICAgICAgICBBbGwgYXJncyBleGNlcHQgYG1lc3NhZ2UnIGNhbiBiZSBOb25lLgogICAgICAgICIiIgogICAgICAgIG5hbWUgPSAnQVBQRU5EJwogICAgICAgIGlmIG5vdCBtYWlsYm94OgogICAgICAgICAgICBtYWlsYm94ID0gJ0lOQk9YJwogICAgICAgIGlmIGZsYWdzOgogICAgICAgICAgICBpZiAoZmxhZ3NbMF0sZmxhZ3NbLTFdKSAhPSAoJygnLCcpJyk6CiAgICAgICAgICAgICAgICBmbGFncyA9ICcoJXMpJyAlIGZsYWdzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZmxhZ3MgPSBOb25lCiAgICAgICAgaWYgZGF0ZV90aW1lOgogICAgICAgICAgICBkYXRlX3RpbWUgPSBUaW1lMkludGVybmFsZGF0ZShkYXRlX3RpbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0ZV90aW1lID0gTm9uZQogICAgICAgIGxpdGVyYWwgPSBNYXBDUkxGLnN1YihDUkxGLCBtZXNzYWdlKQogICAgICAgIGlmIHNlbGYudXRmOF9lbmFibGVkOgogICAgICAgICAgICBsaXRlcmFsID0gYidVVEY4ICgnICsgbGl0ZXJhbCArIGInKScKICAgICAgICBzZWxmLmxpdGVyYWwgPSBsaXRlcmFsCiAgICAgICAgcmV0dXJuIHNlbGYuX3NpbXBsZV9jb21tYW5kKG5hbWUsIG1haWxib3gsIGZsYWdzLCBkYXRlX3RpbWUpCgoKICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZiwgbWVjaGFuaXNtLCBhdXRob2JqZWN0KToKICAgICAgICAiIiJBdXRoZW50aWNhdGUgY29tbWFuZCAtIHJlcXVpcmVzIHJlc3BvbnNlIHByb2Nlc3NpbmcuCgogICAgICAgICdtZWNoYW5pc20nIHNwZWNpZmllcyB3aGljaCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaXMgdG8KICAgICAgICBiZSB1c2VkIC0gaXQgbXVzdCBhcHBlYXIgaW4gPGluc3RhbmNlPi5jYXBhYmlsaXRpZXMgaW4gdGhlCiAgICAgICAgZm9ybSBBVVRIPTxtZWNoYW5pc20+LgoKICAgICAgICAnYXV0aG9iamVjdCcgbXVzdCBiZSBhIGNhbGxhYmxlIG9iamVjdDoKCiAgICAgICAgICAgICAgICBkYXRhID0gYXV0aG9iamVjdChyZXNwb25zZSkKCiAgICAgICAgSXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyBzZXJ2ZXIgY29udGludWF0aW9uIHJlc3BvbnNlczsgdGhlCiAgICAgICAgcmVzcG9uc2UgYXJndW1lbnQgaXQgaXMgcGFzc2VkIHdpbGwgYmUgYSBieXRlcy4gIEl0IHNob3VsZCByZXR1cm4gYnl0ZXMKICAgICAgICBkYXRhIHRoYXQgd2lsbCBiZSBiYXNlNjQgZW5jb2RlZCBhbmQgc2VudCB0byB0aGUgc2VydmVyLiAgSXQgc2hvdWxkCiAgICAgICAgcmV0dXJuIE5vbmUgaWYgdGhlIGNsaWVudCBhYm9ydCByZXNwb25zZSAnKicgc2hvdWxkIGJlIHNlbnQgaW5zdGVhZC4KICAgICAgICAiIiIKICAgICAgICBtZWNoID0gbWVjaGFuaXNtLnVwcGVyKCkKICAgICAgICAjIFhYWDogc2hvdWxkbid0IHRoaXMgY29kZSBiZSByZW1vdmVkLCBub3QgY29tbWVudGVkIG91dD8KICAgICAgICAjY2FwID0gJ0FVVEg9JXMnICUgbWVjaAogICAgICAgICNpZiBub3QgY2FwIGluIHNlbGYuY2FwYWJpbGl0aWVzOiAgICAgICAjIExldCB0aGUgc2VydmVyIGRlY2lkZSEKICAgICAgICAjICAgIHJhaXNlIHNlbGYuZXJyb3IoIlNlcnZlciBkb2Vzbid0IGFsbG93ICVzIGF1dGhlbnRpY2F0aW9uLiIgJSBtZWNoKQogICAgICAgIHNlbGYubGl0ZXJhbCA9IF9BdXRoZW50aWNhdG9yKGF1dGhvYmplY3QpLnByb2Nlc3MKICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKCdBVVRIRU5USUNBVEUnLCBtZWNoKQogICAgICAgIGlmIHR5cCAhPSAnT0snOgogICAgICAgICAgICByYWlzZSBzZWxmLmVycm9yKGRhdFstMV0uZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJykpCiAgICAgICAgc2VsZi5zdGF0ZSA9ICdBVVRIJwogICAgICAgIHJldHVybiB0eXAsIGRhdAoKCiAgICBkZWYgY2FwYWJpbGl0eShzZWxmKToKICAgICAgICAiIiIodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5jYXBhYmlsaXR5KCkKICAgICAgICBGZXRjaCBjYXBhYmlsaXRpZXMgbGlzdCBmcm9tIHNlcnZlci4iIiIKCiAgICAgICAgbmFtZSA9ICdDQVBBQklMSVRZJwogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSkKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsIG5hbWUpCgoKICAgIGRlZiBjaGVjayhzZWxmKToKICAgICAgICAiIiJDaGVja3BvaW50IG1haWxib3ggb24gc2VydmVyLgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5jaGVjaygpCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3NpbXBsZV9jb21tYW5kKCdDSEVDSycpCgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSBjdXJyZW50bHkgc2VsZWN0ZWQgbWFpbGJveC4KCiAgICAgICAgRGVsZXRlZCBtZXNzYWdlcyBhcmUgcmVtb3ZlZCBmcm9tIHdyaXRhYmxlIG1haWxib3guCiAgICAgICAgVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgY29tbWFuZCBiZWZvcmUgJ0xPR09VVCcuCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LmNsb3NlKCkKICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ0NMT1NFJykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLnN0YXRlID0gJ0FVVEgnCiAgICAgICAgcmV0dXJuIHR5cCwgZGF0CgoKICAgIGRlZiBjb3B5KHNlbGYsIG1lc3NhZ2Vfc2V0LCBuZXdfbWFpbGJveCk6CiAgICAgICAgIiIiQ29weSAnbWVzc2FnZV9zZXQnIG1lc3NhZ2VzIG9udG8gZW5kIG9mICduZXdfbWFpbGJveCcuCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LmNvcHkobWVzc2FnZV9zZXQsIG5ld19tYWlsYm94KQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnQ09QWScsIG1lc3NhZ2Vfc2V0LCBuZXdfbWFpbGJveCkKCgogICAgZGVmIGNyZWF0ZShzZWxmLCBtYWlsYm94KToKICAgICAgICAiIiJDcmVhdGUgbmV3IG1haWxib3guCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LmNyZWF0ZShtYWlsYm94KQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnQ1JFQVRFJywgbWFpbGJveCkKCgogICAgZGVmIGRlbGV0ZShzZWxmLCBtYWlsYm94KToKICAgICAgICAiIiJEZWxldGUgb2xkIG1haWxib3guCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LmRlbGV0ZShtYWlsYm94KQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnREVMRVRFJywgbWFpbGJveCkKCiAgICBkZWYgZGVsZXRlYWNsKHNlbGYsIG1haWxib3gsIHdobyk6CiAgICAgICAgIiIiRGVsZXRlIHRoZSBBQ0xzIChyZW1vdmUgYW55IHJpZ2h0cykgc2V0IGZvciB3aG8gb24gbWFpbGJveC4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uZGVsZXRlYWNsKG1haWxib3gsIHdobykKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ0RFTEVURUFDTCcsIG1haWxib3gsIHdobykKCiAgICBkZWYgZW5hYmxlKHNlbGYsIGNhcGFiaWxpdHkpOgogICAgICAgICIiIlNlbmQgYW4gUkZDNTE2MSBlbmFibGUgc3RyaW5nIHRvIHRoZSBzZXJ2ZXIuCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LmVuYWJsZShjYXBhYmlsaXR5KQogICAgICAgICIiIgogICAgICAgIGlmICdFTkFCTEUnIG5vdCBpbiBzZWxmLmNhcGFiaWxpdGllczoKICAgICAgICAgICAgcmFpc2UgSU1BUDQuZXJyb3IoIlNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IEVOQUJMRSIpCiAgICAgICAgdHlwLCBkYXRhID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ0VOQUJMRScsIGNhcGFiaWxpdHkpCiAgICAgICAgaWYgdHlwID09ICdPSycgYW5kICdVVEY4PUFDQ0VQVCcgaW4gY2FwYWJpbGl0eS51cHBlcigpOgogICAgICAgICAgICBzZWxmLl9tb2RlX3V0ZjgoKQogICAgICAgIHJldHVybiB0eXAsIGRhdGEKCiAgICBkZWYgZXhwdW5nZShzZWxmKToKICAgICAgICAiIiJQZXJtYW5lbnRseSByZW1vdmUgZGVsZXRlZCBpdGVtcyBmcm9tIHNlbGVjdGVkIG1haWxib3guCgogICAgICAgIEdlbmVyYXRlcyAnRVhQVU5HRScgcmVzcG9uc2UgZm9yIGVhY2ggZGVsZXRlZCBtZXNzYWdlLgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5leHB1bmdlKCkKCiAgICAgICAgJ2RhdGEnIGlzIGxpc3Qgb2YgJ0VYUFVOR0UnZCBtZXNzYWdlIG51bWJlcnMgaW4gb3JkZXIgcmVjZWl2ZWQuCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9ICdFWFBVTkdFJwogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSkKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsIG5hbWUpCgoKICAgIGRlZiBmZXRjaChzZWxmLCBtZXNzYWdlX3NldCwgbWVzc2FnZV9wYXJ0cyk6CiAgICAgICAgIiIiRmV0Y2ggKHBhcnRzIG9mKSBtZXNzYWdlcy4KCiAgICAgICAgKHR5cCwgW2RhdGEsIC4uLl0pID0gPGluc3RhbmNlPi5mZXRjaChtZXNzYWdlX3NldCwgbWVzc2FnZV9wYXJ0cykKCiAgICAgICAgJ21lc3NhZ2VfcGFydHMnIHNob3VsZCBiZSBhIHN0cmluZyBvZiBzZWxlY3RlZCBwYXJ0cwogICAgICAgIGVuY2xvc2VkIGluIHBhcmVudGhlc2VzLCBlZzogIihVSUQgQk9EWVtURVhUXSkiLgoKICAgICAgICAnZGF0YScgYXJlIHR1cGxlcyBvZiBtZXNzYWdlIHBhcnQgZW52ZWxvcGUgYW5kIGRhdGEuCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9ICdGRVRDSCcKICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKG5hbWUsIG1lc3NhZ2Vfc2V0LCBtZXNzYWdlX3BhcnRzKQogICAgICAgIHJldHVybiBzZWxmLl91bnRhZ2dlZF9yZXNwb25zZSh0eXAsIGRhdCwgbmFtZSkKCgogICAgZGVmIGdldGFjbChzZWxmLCBtYWlsYm94KToKICAgICAgICAiIiJHZXQgdGhlIEFDTHMgZm9yIGEgbWFpbGJveC4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uZ2V0YWNsKG1haWxib3gpCiAgICAgICAgIiIiCiAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZCgnR0VUQUNMJywgbWFpbGJveCkKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsICdBQ0wnKQoKCiAgICBkZWYgZ2V0YW5ub3RhdGlvbihzZWxmLCBtYWlsYm94LCBlbnRyeSwgYXR0cmlidXRlKToKICAgICAgICAiIiIodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5nZXRhbm5vdGF0aW9uKG1haWxib3gsIGVudHJ5LCBhdHRyaWJ1dGUpCiAgICAgICAgUmV0cmlldmUgQU5OT1RBVElPTnMuIiIiCgogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ0dFVEFOTk9UQVRJT04nLCBtYWlsYm94LCBlbnRyeSwgYXR0cmlidXRlKQogICAgICAgIHJldHVybiBzZWxmLl91bnRhZ2dlZF9yZXNwb25zZSh0eXAsIGRhdCwgJ0FOTk9UQVRJT04nKQoKCiAgICBkZWYgZ2V0cXVvdGEoc2VsZiwgcm9vdCk6CiAgICAgICAgIiIiR2V0IHRoZSBxdW90YSByb290J3MgcmVzb3VyY2UgdXNhZ2UgYW5kIGxpbWl0cy4KCiAgICAgICAgUGFydCBvZiB0aGUgSU1BUDQgUVVPVEEgZXh0ZW5zaW9uIGRlZmluZWQgaW4gcmZjMjA4Ny4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uZ2V0cXVvdGEocm9vdCkKICAgICAgICAiIiIKICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKCdHRVRRVU9UQScsIHJvb3QpCiAgICAgICAgcmV0dXJuIHNlbGYuX3VudGFnZ2VkX3Jlc3BvbnNlKHR5cCwgZGF0LCAnUVVPVEEnKQoKCiAgICBkZWYgZ2V0cXVvdGFyb290KHNlbGYsIG1haWxib3gpOgogICAgICAgICIiIkdldCB0aGUgbGlzdCBvZiBxdW90YSByb290cyBmb3IgdGhlIG5hbWVkIG1haWxib3guCgogICAgICAgICh0eXAsIFtbUVVPVEFST09UIHJlc3BvbnNlcy4uLl0sIFtRVU9UQSByZXNwb25zZXNdXSkgPSA8aW5zdGFuY2U+LmdldHF1b3Rhcm9vdChtYWlsYm94KQogICAgICAgICIiIgogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ0dFVFFVT1RBUk9PVCcsIG1haWxib3gpCiAgICAgICAgdHlwLCBxdW90YSA9IHNlbGYuX3VudGFnZ2VkX3Jlc3BvbnNlKHR5cCwgZGF0LCAnUVVPVEEnKQogICAgICAgIHR5cCwgcXVvdGFyb290ID0gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsICdRVU9UQVJPT1QnKQogICAgICAgIHJldHVybiB0eXAsIFtxdW90YXJvb3QsIHF1b3RhXQoKCiAgICBkZWYgbGlzdChzZWxmLCBkaXJlY3Rvcnk9JyIiJywgcGF0dGVybj0nKicpOgogICAgICAgICIiIkxpc3QgbWFpbGJveCBuYW1lcyBpbiBkaXJlY3RvcnkgbWF0Y2hpbmcgcGF0dGVybi4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4ubGlzdChkaXJlY3Rvcnk9JyIiJywgcGF0dGVybj0nKicpCgogICAgICAgICdkYXRhJyBpcyBsaXN0IG9mIExJU1QgcmVzcG9uc2VzLgogICAgICAgICIiIgogICAgICAgIG5hbWUgPSAnTElTVCcKICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKG5hbWUsIGRpcmVjdG9yeSwgcGF0dGVybikKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsIG5hbWUpCgoKICAgIGRlZiBsb2dpbihzZWxmLCB1c2VyLCBwYXNzd29yZCk6CiAgICAgICAgIiIiSWRlbnRpZnkgY2xpZW50IHVzaW5nIHBsYWludGV4dCBwYXNzd29yZC4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4ubG9naW4odXNlciwgcGFzc3dvcmQpCgogICAgICAgIE5COiAncGFzc3dvcmQnIHdpbGwgYmUgcXVvdGVkLgogICAgICAgICIiIgogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ0xPR0lOJywgdXNlciwgc2VsZi5fcXVvdGUocGFzc3dvcmQpKQogICAgICAgIGlmIHR5cCAhPSAnT0snOgogICAgICAgICAgICByYWlzZSBzZWxmLmVycm9yKGRhdFstMV0pCiAgICAgICAgc2VsZi5zdGF0ZSA9ICdBVVRIJwogICAgICAgIHJldHVybiB0eXAsIGRhdAoKCiAgICBkZWYgbG9naW5fY3JhbV9tZDUoc2VsZiwgdXNlciwgcGFzc3dvcmQpOgogICAgICAgICIiIiBGb3JjZSB1c2Ugb2YgQ1JBTS1NRDUgYXV0aGVudGljYXRpb24uCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LmxvZ2luX2NyYW1fbWQ1KHVzZXIsIHBhc3N3b3JkKQogICAgICAgICIiIgogICAgICAgIHNlbGYudXNlciwgc2VsZi5wYXNzd29yZCA9IHVzZXIsIHBhc3N3b3JkCiAgICAgICAgcmV0dXJuIHNlbGYuYXV0aGVudGljYXRlKCdDUkFNLU1ENScsIHNlbGYuX0NSQU1fTUQ1X0FVVEgpCgoKICAgIGRlZiBfQ1JBTV9NRDVfQVVUSChzZWxmLCBjaGFsbGVuZ2UpOgogICAgICAgICIiIiBBdXRob2JqZWN0IHRvIHVzZSB3aXRoIENSQU0tTUQ1IGF1dGhlbnRpY2F0aW9uLiAiIiIKICAgICAgICBpbXBvcnQgaG1hYwogICAgICAgIHB3ZCA9IChzZWxmLnBhc3N3b3JkLmVuY29kZSgndXRmLTgnKSBpZiBpc2luc3RhbmNlKHNlbGYucGFzc3dvcmQsIHN0cikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZWxmLnBhc3N3b3JkKQogICAgICAgIHJldHVybiBzZWxmLnVzZXIgKyAiICIgKyBobWFjLkhNQUMocHdkLCBjaGFsbGVuZ2UsICdtZDUnKS5oZXhkaWdlc3QoKQoKCiAgICBkZWYgbG9nb3V0KHNlbGYpOgogICAgICAgICIiIlNodXRkb3duIGNvbm5lY3Rpb24gdG8gc2VydmVyLgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5sb2dvdXQoKQoKICAgICAgICBSZXR1cm5zIHNlcnZlciAnQllFJyByZXNwb25zZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnN0YXRlID0gJ0xPR09VVCcKICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKCdMT0dPVVQnKQogICAgICAgIHNlbGYuc2h1dGRvd24oKQogICAgICAgIHJldHVybiB0eXAsIGRhdAoKCiAgICBkZWYgbHN1YihzZWxmLCBkaXJlY3Rvcnk9JyIiJywgcGF0dGVybj0nKicpOgogICAgICAgICIiIkxpc3QgJ3N1YnNjcmliZWQnIG1haWxib3ggbmFtZXMgaW4gZGlyZWN0b3J5IG1hdGNoaW5nIHBhdHRlcm4uCgogICAgICAgICh0eXAsIFtkYXRhLCAuLi5dKSA9IDxpbnN0YW5jZT4ubHN1YihkaXJlY3Rvcnk9JyIiJywgcGF0dGVybj0nKicpCgogICAgICAgICdkYXRhJyBhcmUgdHVwbGVzIG9mIG1lc3NhZ2UgcGFydCBlbnZlbG9wZSBhbmQgZGF0YS4KICAgICAgICAiIiIKICAgICAgICBuYW1lID0gJ0xTVUInCiAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCBkaXJlY3RvcnksIHBhdHRlcm4pCiAgICAgICAgcmV0dXJuIHNlbGYuX3VudGFnZ2VkX3Jlc3BvbnNlKHR5cCwgZGF0LCBuYW1lKQoKICAgIGRlZiBteXJpZ2h0cyhzZWxmLCBtYWlsYm94KToKICAgICAgICAiIiJTaG93IG15IEFDTHMgZm9yIGEgbWFpbGJveCAoaS5lLiB0aGUgcmlnaHRzIHRoYXQgSSBoYXZlIG9uIG1haWxib3gpLgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5teXJpZ2h0cyhtYWlsYm94KQogICAgICAgICIiIgogICAgICAgIHR5cCxkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZCgnTVlSSUdIVFMnLCBtYWlsYm94KQogICAgICAgIHJldHVybiBzZWxmLl91bnRhZ2dlZF9yZXNwb25zZSh0eXAsIGRhdCwgJ01ZUklHSFRTJykKCiAgICBkZWYgbmFtZXNwYWNlKHNlbGYpOgogICAgICAgICIiIiBSZXR1cm5zIElNQVAgbmFtZXNwYWNlcyBhbGEgcmZjMjM0MgoKICAgICAgICAodHlwLCBbZGF0YSwgLi4uXSkgPSA8aW5zdGFuY2U+Lm5hbWVzcGFjZSgpCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9ICdOQU1FU1BBQ0UnCiAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lKQogICAgICAgIHJldHVybiBzZWxmLl91bnRhZ2dlZF9yZXNwb25zZSh0eXAsIGRhdCwgbmFtZSkKCgogICAgZGVmIG5vb3Aoc2VsZik6CiAgICAgICAgIiIiU2VuZCBOT09QIGNvbW1hbmQuCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+Lm5vb3AoKQogICAgICAgICIiIgogICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAzOgogICAgICAgICAgICAgICAgc2VsZi5fZHVtcF91cihzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlcykKICAgICAgICByZXR1cm4gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ05PT1AnKQoKCiAgICBkZWYgcGFydGlhbChzZWxmLCBtZXNzYWdlX251bSwgbWVzc2FnZV9wYXJ0LCBzdGFydCwgbGVuZ3RoKToKICAgICAgICAiIiJGZXRjaCB0cnVuY2F0ZWQgcGFydCBvZiBhIG1lc3NhZ2UuCgogICAgICAgICh0eXAsIFtkYXRhLCAuLi5dKSA9IDxpbnN0YW5jZT4ucGFydGlhbChtZXNzYWdlX251bSwgbWVzc2FnZV9wYXJ0LCBzdGFydCwgbGVuZ3RoKQoKICAgICAgICAnZGF0YScgaXMgdHVwbGUgb2YgbWVzc2FnZSBwYXJ0IGVudmVsb3BlIGFuZCBkYXRhLgogICAgICAgICIiIgogICAgICAgIG5hbWUgPSAnUEFSVElBTCcKICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKG5hbWUsIG1lc3NhZ2VfbnVtLCBtZXNzYWdlX3BhcnQsIHN0YXJ0LCBsZW5ndGgpCiAgICAgICAgcmV0dXJuIHNlbGYuX3VudGFnZ2VkX3Jlc3BvbnNlKHR5cCwgZGF0LCAnRkVUQ0gnKQoKCiAgICBkZWYgcHJveHlhdXRoKHNlbGYsIHVzZXIpOgogICAgICAgICIiIkFzc3VtZSBhdXRoZW50aWNhdGlvbiBhcyAidXNlciIuCgogICAgICAgIEFsbG93cyBhbiBhdXRob3Jpc2VkIGFkbWluaXN0cmF0b3IgdG8gcHJveHkgaW50byBhbnkgdXNlcidzCiAgICAgICAgbWFpbGJveC4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4ucHJveHlhdXRoKHVzZXIpCiAgICAgICAgIiIiCgogICAgICAgIG5hbWUgPSAnUFJPWFlBVVRIJwogICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnUFJPWFlBVVRIJywgdXNlcikKCgogICAgZGVmIHJlbmFtZShzZWxmLCBvbGRtYWlsYm94LCBuZXdtYWlsYm94KToKICAgICAgICAiIiJSZW5hbWUgb2xkIG1haWxib3ggbmFtZSB0byBuZXcuCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LnJlbmFtZShvbGRtYWlsYm94LCBuZXdtYWlsYm94KQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnUkVOQU1FJywgb2xkbWFpbGJveCwgbmV3bWFpbGJveCkKCgogICAgZGVmIHNlYXJjaChzZWxmLCBjaGFyc2V0LCAqY3JpdGVyaWEpOgogICAgICAgICIiIlNlYXJjaCBtYWlsYm94IGZvciBtYXRjaGluZyBtZXNzYWdlcy4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uc2VhcmNoKGNoYXJzZXQsIGNyaXRlcmlvbiwgLi4uKQoKICAgICAgICAnZGF0YScgaXMgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgbWF0Y2hpbmcgbWVzc2FnZSBudW1iZXJzLgogICAgICAgIElmIFVURjggaXMgZW5hYmxlZCwgY2hhcnNldCBNVVNUIGJlIE5vbmUuCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9ICdTRUFSQ0gnCiAgICAgICAgaWYgY2hhcnNldDoKICAgICAgICAgICAgaWYgc2VsZi51dGY4X2VuYWJsZWQ6CiAgICAgICAgICAgICAgICByYWlzZSBJTUFQNC5lcnJvcigiTm9uLU5vbmUgY2hhcnNldCBub3QgdmFsaWQgaW4gVVRGOCBtb2RlIikKICAgICAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCAnQ0hBUlNFVCcsIGNoYXJzZXQsICpjcml0ZXJpYSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKG5hbWUsICpjcml0ZXJpYSkKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsIG5hbWUpCgoKICAgIGRlZiBzZWxlY3Qoc2VsZiwgbWFpbGJveD0nSU5CT1gnLCByZWFkb25seT1GYWxzZSk6CiAgICAgICAgIiIiU2VsZWN0IGEgbWFpbGJveC4KCiAgICAgICAgRmx1c2ggYWxsIHVudGFnZ2VkIHJlc3BvbnNlcy4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uc2VsZWN0KG1haWxib3g9J0lOQk9YJywgcmVhZG9ubHk9RmFsc2UpCgogICAgICAgICdkYXRhJyBpcyBjb3VudCBvZiBtZXNzYWdlcyBpbiBtYWlsYm94ICgnRVhJU1RTJyByZXNwb25zZSkuCgogICAgICAgIE1hbmRhdGVkIHJlc3BvbnNlcyBhcmUgKCdGTEFHUycsICdFWElTVFMnLCAnUkVDRU5UJywgJ1VJRFZBTElESVRZJyksIHNvCiAgICAgICAgb3RoZXIgcmVzcG9uc2VzIHNob3VsZCBiZSBvYnRhaW5lZCB2aWEgPGluc3RhbmNlPi5yZXNwb25zZSgnRkxBR1MnKSBldGMuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi51bnRhZ2dlZF9yZXNwb25zZXMgPSB7fSAgICAjIEZsdXNoIG9sZCByZXNwb25zZXMuCiAgICAgICAgc2VsZi5pc19yZWFkb25seSA9IHJlYWRvbmx5CiAgICAgICAgaWYgcmVhZG9ubHk6CiAgICAgICAgICAgIG5hbWUgPSAnRVhBTUlORScKICAgICAgICBlbHNlOgogICAgICAgICAgICBuYW1lID0gJ1NFTEVDVCcKICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKG5hbWUsIG1haWxib3gpCiAgICAgICAgaWYgdHlwICE9ICdPSyc6CiAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnQVVUSCcgICAgICMgTWlnaHQgaGF2ZSBiZWVuICdTRUxFQ1RFRCcKICAgICAgICAgICAgcmV0dXJuIHR5cCwgZGF0CiAgICAgICAgc2VsZi5zdGF0ZSA9ICdTRUxFQ1RFRCcKICAgICAgICBpZiAnUkVBRC1PTkxZJyBpbiBzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlcyBcCiAgICAgICAgICAgICAgICBhbmQgbm90IHJlYWRvbmx5OgogICAgICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDE6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZHVtcF91cihzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlcykKICAgICAgICAgICAgcmFpc2Ugc2VsZi5yZWFkb25seSgnJXMgaXMgbm90IHdyaXRhYmxlJyAlIG1haWxib3gpCiAgICAgICAgcmV0dXJuIHR5cCwgc2VsZi51bnRhZ2dlZF9yZXNwb25zZXMuZ2V0KCdFWElTVFMnLCBbTm9uZV0pCgoKICAgIGRlZiBzZXRhY2woc2VsZiwgbWFpbGJveCwgd2hvLCB3aGF0KToKICAgICAgICAiIiJTZXQgYSBtYWlsYm94IGFjbC4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uc2V0YWNsKG1haWxib3gsIHdobywgd2hhdCkKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ1NFVEFDTCcsIG1haWxib3gsIHdobywgd2hhdCkKCgogICAgZGVmIHNldGFubm90YXRpb24oc2VsZiwgKmFyZ3MpOgogICAgICAgICIiIih0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LnNldGFubm90YXRpb24obWFpbGJveFssIGVudHJ5LCBhdHRyaWJ1dGVdKykKICAgICAgICBTZXQgQU5OT1RBVElPTnMuIiIiCgogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ1NFVEFOTk9UQVRJT04nLCAqYXJncykKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsICdBTk5PVEFUSU9OJykKCgogICAgZGVmIHNldHF1b3RhKHNlbGYsIHJvb3QsIGxpbWl0cyk6CiAgICAgICAgIiIiU2V0IHRoZSBxdW90YSByb290J3MgcmVzb3VyY2UgbGltaXRzLgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5zZXRxdW90YShyb290LCBsaW1pdHMpCiAgICAgICAgIiIiCiAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZCgnU0VUUVVPVEEnLCByb290LCBsaW1pdHMpCiAgICAgICAgcmV0dXJuIHNlbGYuX3VudGFnZ2VkX3Jlc3BvbnNlKHR5cCwgZGF0LCAnUVVPVEEnKQoKCiAgICBkZWYgc29ydChzZWxmLCBzb3J0X2NyaXRlcmlhLCBjaGFyc2V0LCAqc2VhcmNoX2NyaXRlcmlhKToKICAgICAgICAiIiJJTUFQNHJldjEgZXh0ZW5zaW9uIFNPUlQgY29tbWFuZC4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uc29ydChzb3J0X2NyaXRlcmlhLCBjaGFyc2V0LCBzZWFyY2hfY3JpdGVyaWEsIC4uLikKICAgICAgICAiIiIKICAgICAgICBuYW1lID0gJ1NPUlQnCiAgICAgICAgI2lmIG5vdCBuYW1lIGluIHNlbGYuY2FwYWJpbGl0aWVzOiAgICAgICMgTGV0IHRoZSBzZXJ2ZXIgZGVjaWRlIQogICAgICAgICMgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigndW5pbXBsZW1lbnRlZCBleHRlbnNpb24gY29tbWFuZDogJXMnICUgbmFtZSkKICAgICAgICBpZiAoc29ydF9jcml0ZXJpYVswXSxzb3J0X2NyaXRlcmlhWy0xXSkgIT0gKCcoJywnKScpOgogICAgICAgICAgICBzb3J0X2NyaXRlcmlhID0gJyglcyknICUgc29ydF9jcml0ZXJpYQogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSwgc29ydF9jcml0ZXJpYSwgY2hhcnNldCwgKnNlYXJjaF9jcml0ZXJpYSkKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsIG5hbWUpCgoKICAgIGRlZiBzdGFydHRscyhzZWxmLCBzc2xfY29udGV4dD1Ob25lKToKICAgICAgICBuYW1lID0gJ1NUQVJUVExTJwogICAgICAgIGlmIG5vdCBIQVZFX1NTTDoKICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcignU1NMIHN1cHBvcnQgbWlzc2luZycpCiAgICAgICAgaWYgc2VsZi5fdGxzX2VzdGFibGlzaGVkOgogICAgICAgICAgICByYWlzZSBzZWxmLmFib3J0KCdUTFMgc2Vzc2lvbiBhbHJlYWR5IGVzdGFibGlzaGVkJykKICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLmNhcGFiaWxpdGllczoKICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgnVExTIG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyJykKICAgICAgICAjIEdlbmVyYXRlIGEgZGVmYXVsdCBTU0wgY29udGV4dCBpZiBub25lIHdhcyBwYXNzZWQuCiAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgc3NsX2NvbnRleHQgPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpCiAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lKQogICAgICAgIGlmIHR5cCA9PSAnT0snOgogICAgICAgICAgICBzZWxmLnNvY2sgPSBzc2xfY29udGV4dC53cmFwX3NvY2tldChzZWxmLnNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZWxmLmhvc3QpCiAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jay5tYWtlZmlsZSgncmInKQogICAgICAgICAgICBzZWxmLl90bHNfZXN0YWJsaXNoZWQgPSBUcnVlCiAgICAgICAgICAgIHNlbGYuX2dldF9jYXBhYmlsaXRpZXMoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuZXJyb3IoIkNvdWxkbid0IGVzdGFibGlzaCBUTFMgc2Vzc2lvbiIpCiAgICAgICAgcmV0dXJuIHNlbGYuX3VudGFnZ2VkX3Jlc3BvbnNlKHR5cCwgZGF0LCBuYW1lKQoKCiAgICBkZWYgc3RhdHVzKHNlbGYsIG1haWxib3gsIG5hbWVzKToKICAgICAgICAiIiJSZXF1ZXN0IG5hbWVkIHN0YXR1cyBjb25kaXRpb25zIGZvciBtYWlsYm94LgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi5zdGF0dXMobWFpbGJveCwgbmFtZXMpCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9ICdTVEFUVVMnCiAgICAgICAgI2lmIHNlbGYuUFJPVE9DT0xfVkVSU0lPTiA9PSAnSU1BUDQnOiAgICMgTGV0IHRoZSBzZXJ2ZXIgZGVjaWRlIQogICAgICAgICMgICAgcmFpc2Ugc2VsZi5lcnJvcignJXMgdW5pbXBsZW1lbnRlZCBpbiBJTUFQNCAob2J0YWluIElNQVA0cmV2MSBzZXJ2ZXIsIG9yIHJlLWNvZGUpJyAlIG5hbWUpCiAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCBtYWlsYm94LCBuYW1lcykKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsIG5hbWUpCgoKICAgIGRlZiBzdG9yZShzZWxmLCBtZXNzYWdlX3NldCwgY29tbWFuZCwgZmxhZ3MpOgogICAgICAgICIiIkFsdGVycyBmbGFnIGRpc3Bvc2l0aW9ucyBmb3IgbWVzc2FnZXMgaW4gbWFpbGJveC4KCiAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uc3RvcmUobWVzc2FnZV9zZXQsIGNvbW1hbmQsIGZsYWdzKQogICAgICAgICIiIgogICAgICAgIGlmIChmbGFnc1swXSxmbGFnc1stMV0pICE9ICgnKCcsJyknKToKICAgICAgICAgICAgZmxhZ3MgPSAnKCVzKScgJSBmbGFncyAgIyBBdm9pZCBxdW90aW5nIHRoZSBmbGFncwogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ1NUT1JFJywgbWVzc2FnZV9zZXQsIGNvbW1hbmQsIGZsYWdzKQogICAgICAgIHJldHVybiBzZWxmLl91bnRhZ2dlZF9yZXNwb25zZSh0eXAsIGRhdCwgJ0ZFVENIJykKCgogICAgZGVmIHN1YnNjcmliZShzZWxmLCBtYWlsYm94KToKICAgICAgICAiIiJTdWJzY3JpYmUgdG8gbmV3IG1haWxib3guCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LnN1YnNjcmliZShtYWlsYm94KQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnU1VCU0NSSUJFJywgbWFpbGJveCkKCgogICAgZGVmIHRocmVhZChzZWxmLCB0aHJlYWRpbmdfYWxnb3JpdGhtLCBjaGFyc2V0LCAqc2VhcmNoX2NyaXRlcmlhKToKICAgICAgICAiIiJJTUFQcmV2MSBleHRlbnNpb24gVEhSRUFEIGNvbW1hbmQuCgogICAgICAgICh0eXBlLCBbZGF0YV0pID0gPGluc3RhbmNlPi50aHJlYWQodGhyZWFkaW5nX2FsZ29yaXRobSwgY2hhcnNldCwgc2VhcmNoX2NyaXRlcmlhLCAuLi4pCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9ICdUSFJFQUQnCiAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCB0aHJlYWRpbmdfYWxnb3JpdGhtLCBjaGFyc2V0LCAqc2VhcmNoX2NyaXRlcmlhKQogICAgICAgIHJldHVybiBzZWxmLl91bnRhZ2dlZF9yZXNwb25zZSh0eXAsIGRhdCwgbmFtZSkKCgogICAgZGVmIHVpZChzZWxmLCBjb21tYW5kLCAqYXJncyk6CiAgICAgICAgIiIiRXhlY3V0ZSAiY29tbWFuZCBhcmcgLi4uIiB3aXRoIG1lc3NhZ2VzIGlkZW50aWZpZWQgYnkgVUlELAogICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gbWVzc2FnZSBudW1iZXIuCgogICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LnVpZChjb21tYW5kLCBhcmcxLCBhcmcyLCAuLi4pCgogICAgICAgIFJldHVybnMgcmVzcG9uc2UgYXBwcm9wcmlhdGUgdG8gJ2NvbW1hbmQnLgogICAgICAgICIiIgogICAgICAgIGNvbW1hbmQgPSBjb21tYW5kLnVwcGVyKCkKICAgICAgICBpZiBub3QgY29tbWFuZCBpbiBDb21tYW5kczoKICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigiVW5rbm93biBJTUFQNCBVSUQgY29tbWFuZDogJXMiICUgY29tbWFuZCkKICAgICAgICBpZiBzZWxmLnN0YXRlIG5vdCBpbiBDb21tYW5kc1tjb21tYW5kXToKICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigiY29tbWFuZCAlcyBpbGxlZ2FsIGluIHN0YXRlICVzLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgYWxsb3dlZCBpbiBzdGF0ZXMgJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbWFuZCwgc2VsZi5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKENvbW1hbmRzW2NvbW1hbmRdKSkpCiAgICAgICAgbmFtZSA9ICdVSUQnCiAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCBjb21tYW5kLCAqYXJncykKICAgICAgICBpZiBjb21tYW5kIGluICgnU0VBUkNIJywgJ1NPUlQnLCAnVEhSRUFEJyk6CiAgICAgICAgICAgIG5hbWUgPSBjb21tYW5kCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbmFtZSA9ICdGRVRDSCcKICAgICAgICByZXR1cm4gc2VsZi5fdW50YWdnZWRfcmVzcG9uc2UodHlwLCBkYXQsIG5hbWUpCgoKICAgIGRlZiB1bnN1YnNjcmliZShzZWxmLCBtYWlsYm94KToKICAgICAgICAiIiJVbnN1YnNjcmliZSBmcm9tIG9sZCBtYWlsYm94LgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi51bnN1YnNjcmliZShtYWlsYm94KQogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnVU5TVUJTQ1JJQkUnLCBtYWlsYm94KQoKCiAgICBkZWYgdW5zZWxlY3Qoc2VsZik6CiAgICAgICAgIiIiRnJlZSBzZXJ2ZXIncyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBtYWlsYm94CiAgICAgICAgYW5kIHJldHVybnMgdGhlIHNlcnZlciB0byB0aGUgYXV0aGVudGljYXRlZCBzdGF0ZS4KICAgICAgICBUaGlzIGNvbW1hbmQgcGVyZm9ybXMgdGhlIHNhbWUgYWN0aW9ucyBhcyBDTE9TRSwgZXhjZXB0CiAgICAgICAgdGhhdCBubyBtZXNzYWdlcyBhcmUgcGVybWFuZW50bHkgcmVtb3ZlZCBmcm9tIHRoZSBjdXJyZW50bHkKICAgICAgICBzZWxlY3RlZCBtYWlsYm94LgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi51bnNlbGVjdCgpCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0eXAsIGRhdGEgPSBzZWxmLl9zaW1wbGVfY29tbWFuZCgnVU5TRUxFQ1QnKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnQVVUSCcKICAgICAgICByZXR1cm4gdHlwLCBkYXRhCgoKICAgIGRlZiB4YXRvbShzZWxmLCBuYW1lLCAqYXJncyk6CiAgICAgICAgIiIiQWxsb3cgc2ltcGxlIGV4dGVuc2lvbiBjb21tYW5kcwogICAgICAgICAgICAgICAgbm90aWZpZWQgYnkgc2VydmVyIGluIENBUEFCSUxJVFkgcmVzcG9uc2UuCgogICAgICAgIEFzc3VtZXMgY29tbWFuZCBpcyBsZWdhbCBpbiBjdXJyZW50IHN0YXRlLgoKICAgICAgICAodHlwLCBbZGF0YV0pID0gPGluc3RhbmNlPi54YXRvbShuYW1lLCBhcmcsIC4uLikKCiAgICAgICAgUmV0dXJucyByZXNwb25zZSBhcHByb3ByaWF0ZSB0byBleHRlbnNpb24gY29tbWFuZCBgbmFtZScuCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9IG5hbWUudXBwZXIoKQogICAgICAgICNpZiBub3QgbmFtZSBpbiBzZWxmLmNhcGFiaWxpdGllczogICAgICAjIExldCB0aGUgc2VydmVyIGRlY2lkZSEKICAgICAgICAjICAgIHJhaXNlIHNlbGYuZXJyb3IoJ3Vua25vd24gZXh0ZW5zaW9uIGNvbW1hbmQ6ICVzJyAlIG5hbWUpCiAgICAgICAgaWYgbm90IG5hbWUgaW4gQ29tbWFuZHM6CiAgICAgICAgICAgIENvbW1hbmRzW25hbWVdID0gKHNlbGYuc3RhdGUsKQogICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCAqYXJncykKCgoKICAgICMgICAgICAgUHJpdmF0ZSBtZXRob2RzCgoKICAgIGRlZiBfYXBwZW5kX3VudGFnZ2VkKHNlbGYsIHR5cCwgZGF0KToKICAgICAgICBpZiBkYXQgaXMgTm9uZToKICAgICAgICAgICAgZGF0ID0gYicnCiAgICAgICAgdXIgPSBzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlcwogICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSA1OgogICAgICAgICAgICAgICAgc2VsZi5fbWVzZygndW50YWdnZWRfcmVzcG9uc2VzWyVzXSAlcyArPSBbIiVyIl0nICUKICAgICAgICAgICAgICAgICAgICAgICAgKHR5cCwgbGVuKHVyLmdldCh0eXAsJycpKSwgZGF0KSkKICAgICAgICBpZiB0eXAgaW4gdXI6CiAgICAgICAgICAgIHVyW3R5cF0uYXBwZW5kKGRhdCkKICAgICAgICBlbHNlOgogICAgICAgICAgICB1clt0eXBdID0gW2RhdF0KCgogICAgZGVmIF9jaGVja19ieWUoc2VsZik6CiAgICAgICAgYnllID0gc2VsZi51bnRhZ2dlZF9yZXNwb25zZXMuZ2V0KCdCWUUnKQogICAgICAgIGlmIGJ5ZToKICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydChieWVbLTFdLmRlY29kZShzZWxmLl9lbmNvZGluZywgJ3JlcGxhY2UnKSkKCgogICAgZGVmIF9jb21tYW5kKHNlbGYsIG5hbWUsICphcmdzKToKCiAgICAgICAgaWYgc2VsZi5zdGF0ZSBub3QgaW4gQ29tbWFuZHNbbmFtZV06CiAgICAgICAgICAgIHNlbGYubGl0ZXJhbCA9IE5vbmUKICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigiY29tbWFuZCAlcyBpbGxlZ2FsIGluIHN0YXRlICVzLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgYWxsb3dlZCBpbiBzdGF0ZXMgJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgc2VsZi5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKENvbW1hbmRzW25hbWVdKSkpCgogICAgICAgIGZvciB0eXAgaW4gKCdPSycsICdOTycsICdCQUQnKToKICAgICAgICAgICAgaWYgdHlwIGluIHNlbGYudW50YWdnZWRfcmVzcG9uc2VzOgogICAgICAgICAgICAgICAgZGVsIHNlbGYudW50YWdnZWRfcmVzcG9uc2VzW3R5cF0KCiAgICAgICAgaWYgJ1JFQUQtT05MWScgaW4gc2VsZi51bnRhZ2dlZF9yZXNwb25zZXMgXAogICAgICAgIGFuZCBub3Qgc2VsZi5pc19yZWFkb25seToKICAgICAgICAgICAgcmFpc2Ugc2VsZi5yZWFkb25seSgnbWFpbGJveCBzdGF0dXMgY2hhbmdlZCB0byBSRUFELU9OTFknKQoKICAgICAgICB0YWcgPSBzZWxmLl9uZXdfdGFnKCkKICAgICAgICBuYW1lID0gYnl0ZXMobmFtZSwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgZGF0YSA9IHRhZyArIGInICcgKyBuYW1lCiAgICAgICAgZm9yIGFyZyBpbiBhcmdzOgogICAgICAgICAgICBpZiBhcmcgaXMgTm9uZTogY29udGludWUKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmcsIHN0cik6CiAgICAgICAgICAgICAgICBhcmcgPSBieXRlcyhhcmcsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICAgICBkYXRhID0gZGF0YSArIGInICcgKyBhcmcKCiAgICAgICAgbGl0ZXJhbCA9IHNlbGYubGl0ZXJhbAogICAgICAgIGlmIGxpdGVyYWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYubGl0ZXJhbCA9IE5vbmUKICAgICAgICAgICAgaWYgdHlwZShsaXRlcmFsKSBpcyB0eXBlKHNlbGYuX2NvbW1hbmQpOgogICAgICAgICAgICAgICAgbGl0ZXJhdG9yID0gbGl0ZXJhbAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbGl0ZXJhdG9yID0gTm9uZQogICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBieXRlcygnIHslc30nICUgbGVuKGxpdGVyYWwpLCBzZWxmLl9lbmNvZGluZykKCiAgICAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDQ6CiAgICAgICAgICAgICAgICBzZWxmLl9tZXNnKCc+ICVyJyAlIGRhdGEpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl9sb2coJz4gJXInICUgZGF0YSkKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnNlbmQoZGF0YSArIENSTEYpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgdmFsOgogICAgICAgICAgICByYWlzZSBzZWxmLmFib3J0KCdzb2NrZXQgZXJyb3I6ICVzJyAlIHZhbCkKCiAgICAgICAgaWYgbGl0ZXJhbCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gdGFnCgogICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICMgV2FpdCBmb3IgY29udGludWF0aW9uIHJlc3BvbnNlCgogICAgICAgICAgICB3aGlsZSBzZWxmLl9nZXRfcmVzcG9uc2UoKToKICAgICAgICAgICAgICAgIGlmIHNlbGYudGFnZ2VkX2NvbW1hbmRzW3RhZ106ICAgIyBCQUQvTk8/CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhZwoKICAgICAgICAgICAgIyBTZW5kIGxpdGVyYWwKCiAgICAgICAgICAgIGlmIGxpdGVyYXRvcjoKICAgICAgICAgICAgICAgIGxpdGVyYWwgPSBsaXRlcmF0b3Ioc2VsZi5jb250aW51YXRpb25fcmVzcG9uc2UpCgogICAgICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWVzZygnd3JpdGUgbGl0ZXJhbCBzaXplICVzJyAlIGxlbihsaXRlcmFsKSkKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc2VuZChsaXRlcmFsKQogICAgICAgICAgICAgICAgc2VsZi5zZW5kKENSTEYpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHZhbDoKICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoJ3NvY2tldCBlcnJvcjogJXMnICUgdmFsKQoKICAgICAgICAgICAgaWYgbm90IGxpdGVyYXRvcjoKICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgIHJldHVybiB0YWcKCgogICAgZGVmIF9jb21tYW5kX2NvbXBsZXRlKHNlbGYsIG5hbWUsIHRhZyk6CiAgICAgICAgbG9nb3V0ID0gKG5hbWUgPT0gJ0xPR09VVCcpCiAgICAgICAgIyBCWUUgaXMgZXhwZWN0ZWQgYWZ0ZXIgTE9HT1VUCiAgICAgICAgaWYgbm90IGxvZ291dDoKICAgICAgICAgICAgc2VsZi5fY2hlY2tfYnllKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHR5cCwgZGF0YSA9IHNlbGYuX2dldF90YWdnZWRfcmVzcG9uc2UodGFnLCBleHBlY3RfYnllPWxvZ291dCkKICAgICAgICBleGNlcHQgc2VsZi5hYm9ydCBhcyB2YWw6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoJ2NvbW1hbmQ6ICVzID0+ICVzJyAlIChuYW1lLCB2YWwpKQogICAgICAgIGV4Y2VwdCBzZWxmLmVycm9yIGFzIHZhbDoKICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcignY29tbWFuZDogJXMgPT4gJXMnICUgKG5hbWUsIHZhbCkpCiAgICAgICAgaWYgbm90IGxvZ291dDoKICAgICAgICAgICAgc2VsZi5fY2hlY2tfYnllKCkKICAgICAgICBpZiB0eXAgPT0gJ0JBRCc6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuZXJyb3IoJyVzIGNvbW1hbmQgZXJyb3I6ICVzICVzJyAlIChuYW1lLCB0eXAsIGRhdGEpKQogICAgICAgIHJldHVybiB0eXAsIGRhdGEKCgogICAgZGVmIF9nZXRfY2FwYWJpbGl0aWVzKHNlbGYpOgogICAgICAgIHR5cCwgZGF0ID0gc2VsZi5jYXBhYmlsaXR5KCkKICAgICAgICBpZiBkYXQgPT0gW05vbmVdOgogICAgICAgICAgICByYWlzZSBzZWxmLmVycm9yKCdubyBDQVBBQklMSVRZIHJlc3BvbnNlIGZyb20gc2VydmVyJykKICAgICAgICBkYXQgPSBzdHIoZGF0Wy0xXSwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgZGF0ID0gZGF0LnVwcGVyKCkKICAgICAgICBzZWxmLmNhcGFiaWxpdGllcyA9IHR1cGxlKGRhdC5zcGxpdCgpKQoKCiAgICBkZWYgX2dldF9yZXNwb25zZShzZWxmKToKCiAgICAgICAgIyBSZWFkIHJlc3BvbnNlIGFuZCBzdG9yZS4KICAgICAgICAjCiAgICAgICAgIyBSZXR1cm5zIE5vbmUgZm9yIGNvbnRpbnVhdGlvbiByZXNwb25zZXMsCiAgICAgICAgIyBvdGhlcndpc2UgZmlyc3QgcmVzcG9uc2UgbGluZSByZWNlaXZlZC4KCiAgICAgICAgcmVzcCA9IHNlbGYuX2dldF9saW5lKCkKCiAgICAgICAgIyBDb21tYW5kIGNvbXBsZXRpb24gcmVzcG9uc2U/CgogICAgICAgIGlmIHNlbGYuX21hdGNoKHNlbGYudGFncmUsIHJlc3ApOgogICAgICAgICAgICB0YWcgPSBzZWxmLm1vLmdyb3VwKCd0YWcnKQogICAgICAgICAgICBpZiBub3QgdGFnIGluIHNlbGYudGFnZ2VkX2NvbW1hbmRzOgogICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgndW5leHBlY3RlZCB0YWdnZWQgcmVzcG9uc2U6ICVyJyAlIHJlc3ApCgogICAgICAgICAgICB0eXAgPSBzZWxmLm1vLmdyb3VwKCd0eXBlJykKICAgICAgICAgICAgdHlwID0gc3RyKHR5cCwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgICAgIGRhdCA9IHNlbGYubW8uZ3JvdXAoJ2RhdGEnKQogICAgICAgICAgICBzZWxmLnRhZ2dlZF9jb21tYW5kc1t0YWddID0gKHR5cCwgW2RhdF0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0MiA9IE5vbmUKCiAgICAgICAgICAgICMgJyonICh1bnRhZ2dlZCkgcmVzcG9uc2VzPwoKICAgICAgICAgICAgaWYgbm90IHNlbGYuX21hdGNoKFVudGFnZ2VkX3Jlc3BvbnNlLCByZXNwKToKICAgICAgICAgICAgICAgIGlmIHNlbGYuX21hdGNoKHNlbGYuVW50YWdnZWRfc3RhdHVzLCByZXNwKToKICAgICAgICAgICAgICAgICAgICBkYXQyID0gc2VsZi5tby5ncm91cCgnZGF0YTInKQoKICAgICAgICAgICAgaWYgc2VsZi5tbyBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBPbmx5IG90aGVyIHBvc3NpYmlsaXR5IGlzICcrJyAoY29udGludWF0aW9uKSByZXNwb25zZS4uLgoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX21hdGNoKENvbnRpbnVhdGlvbiwgcmVzcCk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250aW51YXRpb25fcmVzcG9uc2UgPSBzZWxmLm1vLmdyb3VwKCdkYXRhJykKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSAgICAgIyBOQjogaW5kaWNhdGVzIGNvbnRpbnVhdGlvbgoKICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoInVuZXhwZWN0ZWQgcmVzcG9uc2U6ICVyIiAlIHJlc3ApCgogICAgICAgICAgICB0eXAgPSBzZWxmLm1vLmdyb3VwKCd0eXBlJykKICAgICAgICAgICAgdHlwID0gc3RyKHR5cCwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgICAgIGRhdCA9IHNlbGYubW8uZ3JvdXAoJ2RhdGEnKQogICAgICAgICAgICBpZiBkYXQgaXMgTm9uZTogZGF0ID0gYicnICAgICAgICAjIE51bGwgdW50YWdnZWQgcmVzcG9uc2UKICAgICAgICAgICAgaWYgZGF0MjogZGF0ID0gZGF0ICsgYicgJyArIGRhdDIKCiAgICAgICAgICAgICMgSXMgdGhlcmUgYSBsaXRlcmFsIHRvIGNvbWU/CgogICAgICAgICAgICB3aGlsZSBzZWxmLl9tYXRjaChzZWxmLkxpdGVyYWwsIGRhdCk6CgogICAgICAgICAgICAgICAgIyBSZWFkIGxpdGVyYWwgZGlyZWN0IGZyb20gY29ubmVjdGlvbi4KCiAgICAgICAgICAgICAgICBzaXplID0gaW50KHNlbGYubW8uZ3JvdXAoJ3NpemUnKSkKICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21lc2coJ3JlYWQgbGl0ZXJhbCBzaXplICVzJyAlIHNpemUpCiAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkKHNpemUpCgogICAgICAgICAgICAgICAgIyBTdG9yZSByZXNwb25zZSB3aXRoIGxpdGVyYWwgYXMgdHVwbGUKCiAgICAgICAgICAgICAgICBzZWxmLl9hcHBlbmRfdW50YWdnZWQodHlwLCAoZGF0LCBkYXRhKSkKCiAgICAgICAgICAgICAgICAjIFJlYWQgdHJhaWxlciAtIHBvc3NpYmx5IGNvbnRhaW5pbmcgYW5vdGhlciBsaXRlcmFsCgogICAgICAgICAgICAgICAgZGF0ID0gc2VsZi5fZ2V0X2xpbmUoKQoKICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3VudGFnZ2VkKHR5cCwgZGF0KQoKICAgICAgICAjIEJyYWNrZXRlZCByZXNwb25zZSBpbmZvcm1hdGlvbj8KCiAgICAgICAgaWYgdHlwIGluICgnT0snLCAnTk8nLCAnQkFEJykgYW5kIHNlbGYuX21hdGNoKFJlc3BvbnNlX2NvZGUsIGRhdCk6CiAgICAgICAgICAgIHR5cCA9IHNlbGYubW8uZ3JvdXAoJ3R5cGUnKQogICAgICAgICAgICB0eXAgPSBzdHIodHlwLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3VudGFnZ2VkKHR5cCwgc2VsZi5tby5ncm91cCgnZGF0YScpKQoKICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMSBhbmQgdHlwIGluICgnTk8nLCAnQkFEJywgJ0JZRScpOgogICAgICAgICAgICAgICAgc2VsZi5fbWVzZygnJXMgcmVzcG9uc2U6ICVyJyAlICh0eXAsIGRhdCkpCgogICAgICAgIHJldHVybiByZXNwCgoKICAgIGRlZiBfZ2V0X3RhZ2dlZF9yZXNwb25zZShzZWxmLCB0YWcsIGV4cGVjdF9ieWU9RmFsc2UpOgoKICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICByZXN1bHQgPSBzZWxmLnRhZ2dlZF9jb21tYW5kc1t0YWddCiAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGRlbCBzZWxmLnRhZ2dlZF9jb21tYW5kc1t0YWddCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgICAgICAgICBpZiBleHBlY3RfYnllOgogICAgICAgICAgICAgICAgdHlwID0gJ0JZRScKICAgICAgICAgICAgICAgIGJ5ZSA9IHNlbGYudW50YWdnZWRfcmVzcG9uc2VzLnBvcCh0eXAsIE5vbmUpCiAgICAgICAgICAgICAgICBpZiBieWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIyBTZXJ2ZXIgcmVwbGllcyB0byB0aGUgIkxPR09VVCIgY29tbWFuZCB3aXRoICJCWUUiCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0eXAsIGJ5ZSkKCiAgICAgICAgICAgICMgSWYgd2UndmUgc2VlbiBhIEJZRSBhdCB0aGlzIHBvaW50LCB0aGUgc29ja2V0IHdpbGwgYmUKICAgICAgICAgICAgIyBjbG9zZWQsIHNvIHJlcG9ydCB0aGUgQllFIG5vdy4KICAgICAgICAgICAgc2VsZi5fY2hlY2tfYnllKCkKCiAgICAgICAgICAgICMgU29tZSBoYXZlIHJlcG9ydGVkICJ1bmV4cGVjdGVkIHJlc3BvbnNlIiBleGNlcHRpb25zLgogICAgICAgICAgICAjIE5vdGUgdGhhdCBpZ25vcmluZyB0aGVtIGhlcmUgY2F1c2VzIGxvb3BzLgogICAgICAgICAgICAjIEluc3RlYWQsIHNlbmQgbWUgZGV0YWlscyBvZiB0aGUgdW5leHBlY3RlZCByZXNwb25zZSBhbmQKICAgICAgICAgICAgIyBJJ2xsIHVwZGF0ZSB0aGUgY29kZSBpbiBgX2dldF9yZXNwb25zZSgpJy4KCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX2dldF9yZXNwb25zZSgpCiAgICAgICAgICAgIGV4Y2VwdCBzZWxmLmFib3J0IGFzIHZhbDoKICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDE6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfbG9nKCkKICAgICAgICAgICAgICAgIHJhaXNlCgoKICAgIGRlZiBfZ2V0X2xpbmUoc2VsZik6CgogICAgICAgIGxpbmUgPSBzZWxmLnJlYWRsaW5lKCkKICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgnc29ja2V0IGVycm9yOiBFT0YnKQoKICAgICAgICAjIFByb3RvY29sIG1hbmRhdGVzIGFsbCBsaW5lcyB0ZXJtaW5hdGVkIGJ5IENSTEYKICAgICAgICBpZiBub3QgbGluZS5lbmRzd2l0aChiJ1xyXG4nKToKICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgnc29ja2V0IGVycm9yOiB1bnRlcm1pbmF0ZWQgbGluZTogJXInICUgbGluZSkKCiAgICAgICAgbGluZSA9IGxpbmVbOi0yXQogICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSA0OgogICAgICAgICAgICAgICAgc2VsZi5fbWVzZygnPCAlcicgJSBsaW5lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fbG9nKCc8ICVyJyAlIGxpbmUpCiAgICAgICAgcmV0dXJuIGxpbmUKCgogICAgZGVmIF9tYXRjaChzZWxmLCBjcmUsIHMpOgoKICAgICAgICAjIFJ1biBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2ggbWV0aG9kIG9uICdzJy4KICAgICAgICAjIFNhdmUgcmVzdWx0LCByZXR1cm4gc3VjY2Vzcy4KCiAgICAgICAgc2VsZi5tbyA9IGNyZS5tYXRjaChzKQogICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgaWYgc2VsZi5tbyBpcyBub3QgTm9uZSBhbmQgc2VsZi5kZWJ1ZyA+PSA1OgogICAgICAgICAgICAgICAgc2VsZi5fbWVzZygiXHRtYXRjaGVkICVyID0+ICVyIiAlIChjcmUucGF0dGVybiwgc2VsZi5tby5ncm91cHMoKSkpCiAgICAgICAgcmV0dXJuIHNlbGYubW8gaXMgbm90IE5vbmUKCgogICAgZGVmIF9uZXdfdGFnKHNlbGYpOgoKICAgICAgICB0YWcgPSBzZWxmLnRhZ3ByZSArIGJ5dGVzKHN0cihzZWxmLnRhZ251bSksIHNlbGYuX2VuY29kaW5nKQogICAgICAgIHNlbGYudGFnbnVtID0gc2VsZi50YWdudW0gKyAxCiAgICAgICAgc2VsZi50YWdnZWRfY29tbWFuZHNbdGFnXSA9IE5vbmUKICAgICAgICByZXR1cm4gdGFnCgoKICAgIGRlZiBfcXVvdGUoc2VsZiwgYXJnKToKCiAgICAgICAgYXJnID0gYXJnLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKQogICAgICAgIGFyZyA9IGFyZy5yZXBsYWNlKCciJywgJ1xcIicpCgogICAgICAgIHJldHVybiAnIicgKyBhcmcgKyAnIicKCgogICAgZGVmIF9zaW1wbGVfY29tbWFuZChzZWxmLCBuYW1lLCAqYXJncyk6CgogICAgICAgIHJldHVybiBzZWxmLl9jb21tYW5kX2NvbXBsZXRlKG5hbWUsIHNlbGYuX2NvbW1hbmQobmFtZSwgKmFyZ3MpKQoKCiAgICBkZWYgX3VudGFnZ2VkX3Jlc3BvbnNlKHNlbGYsIHR5cCwgZGF0LCBuYW1lKToKICAgICAgICBpZiB0eXAgPT0gJ05PJzoKICAgICAgICAgICAgcmV0dXJuIHR5cCwgZGF0CiAgICAgICAgaWYgbm90IG5hbWUgaW4gc2VsZi51bnRhZ2dlZF9yZXNwb25zZXM6CiAgICAgICAgICAgIHJldHVybiB0eXAsIFtOb25lXQogICAgICAgIGRhdGEgPSBzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlcy5wb3AobmFtZSkKICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gNToKICAgICAgICAgICAgICAgIHNlbGYuX21lc2coJ3VudGFnZ2VkX3Jlc3BvbnNlc1slc10gPT4gJXMnICUgKG5hbWUsIGRhdGEpKQogICAgICAgIHJldHVybiB0eXAsIGRhdGEKCgogICAgaWYgX19kZWJ1Z19fOgoKICAgICAgICBkZWYgX21lc2coc2VsZiwgcywgc2Vjcz1Ob25lKToKICAgICAgICAgICAgaWYgc2VjcyBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VjcyA9IHRpbWUudGltZSgpCiAgICAgICAgICAgIHRtID0gdGltZS5zdHJmdGltZSgnJU06JVMnLCB0aW1lLmxvY2FsdGltZShzZWNzKSkKICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnICAlcy4lMDJkICVzXG4nICUgKHRtLCAoc2VjcyoxMDApJTEwMCwgcykpCiAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQoKICAgICAgICBkZWYgX2R1bXBfdXIoc2VsZiwgdW50YWdnZWRfcmVzcF9kaWN0KToKICAgICAgICAgICAgaWYgbm90IHVudGFnZ2VkX3Jlc3BfZGljdDoKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpdGVtcyA9IChmJ3trZXl9OiB7dmFsdWUhcn0nCiAgICAgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gdW50YWdnZWRfcmVzcF9kaWN0Lml0ZW1zKCkpCiAgICAgICAgICAgIHNlbGYuX21lc2coJ3VudGFnZ2VkIHJlc3BvbnNlcyBkdW1wOicgKyAnXG5cdFx0Jy5qb2luKGl0ZW1zKSkKCiAgICAgICAgZGVmIF9sb2coc2VsZiwgbGluZSk6CiAgICAgICAgICAgICMgS2VlcCBsb2cgb2YgbGFzdCBgX2NtZF9sb2dfbGVuJyBpbnRlcmFjdGlvbnMgZm9yIGRlYnVnZ2luZy4KICAgICAgICAgICAgc2VsZi5fY21kX2xvZ1tzZWxmLl9jbWRfbG9nX2lkeF0gPSAobGluZSwgdGltZS50aW1lKCkpCiAgICAgICAgICAgIHNlbGYuX2NtZF9sb2dfaWR4ICs9IDEKICAgICAgICAgICAgaWYgc2VsZi5fY21kX2xvZ19pZHggPj0gc2VsZi5fY21kX2xvZ19sZW46CiAgICAgICAgICAgICAgICBzZWxmLl9jbWRfbG9nX2lkeCA9IDAKCiAgICAgICAgZGVmIHByaW50X2xvZyhzZWxmKToKICAgICAgICAgICAgc2VsZi5fbWVzZygnbGFzdCAlZCBJTUFQNCBpbnRlcmFjdGlvbnM6JyAlIGxlbihzZWxmLl9jbWRfbG9nKSkKICAgICAgICAgICAgaSwgbiA9IHNlbGYuX2NtZF9sb2dfaWR4LCBzZWxmLl9jbWRfbG9nX2xlbgogICAgICAgICAgICB3aGlsZSBuOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX21lc2coKnNlbGYuX2NtZF9sb2dbaV0pCiAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICBpZiBpID49IHNlbGYuX2NtZF9sb2dfbGVuOgogICAgICAgICAgICAgICAgICAgIGkgPSAwCiAgICAgICAgICAgICAgICBuIC09IDEKCgppZiBIQVZFX1NTTDoKCiAgICBjbGFzcyBJTUFQNF9TU0woSU1BUDQpOgoKICAgICAgICAiIiJJTUFQNCBjbGllbnQgY2xhc3Mgb3ZlciBTU0wgY29ubmVjdGlvbgoKICAgICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNF9TU0woW2hvc3RbLCBwb3J0Wywga2V5ZmlsZVssIGNlcnRmaWxlWywgc3NsX2NvbnRleHRbLCB0aW1lb3V0PU5vbmVdXV1dXV0pCgogICAgICAgICAgICAgICAgaG9zdCAtIGhvc3QncyBuYW1lIChkZWZhdWx0OiBsb2NhbGhvc3QpOwogICAgICAgICAgICAgICAgcG9ydCAtIHBvcnQgbnVtYmVyIChkZWZhdWx0OiBzdGFuZGFyZCBJTUFQNCBTU0wgcG9ydCk7CiAgICAgICAgICAgICAgICBrZXlmaWxlIC0gUEVNIGZvcm1hdHRlZCBmaWxlIHRoYXQgY29udGFpbnMgeW91ciBwcml2YXRlIGtleSAoZGVmYXVsdDogTm9uZSk7CiAgICAgICAgICAgICAgICBjZXJ0ZmlsZSAtIFBFTSBmb3JtYXR0ZWQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSAoZGVmYXVsdDogTm9uZSk7CiAgICAgICAgICAgICAgICBzc2xfY29udGV4dCAtIGEgU1NMQ29udGV4dCBvYmplY3QgdGhhdCBjb250YWlucyB5b3VyIGNlcnRpZmljYXRlIGNoYWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcml2YXRlIGtleSAoZGVmYXVsdDogTm9uZSkKICAgICAgICAgICAgICAgIE5vdGU6IGlmIHNzbF9jb250ZXh0IGlzIHByb3ZpZGVkLCB0aGVuIHBhcmFtZXRlcnMga2V5ZmlsZSBvcgogICAgICAgICAgICAgICAgY2VydGZpbGUgc2hvdWxkIG5vdCBiZSBzZXQgb3RoZXJ3aXNlIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgogICAgICAgICAgICAgICAgdGltZW91dCAtIHNvY2tldCB0aW1lb3V0IChkZWZhdWx0OiBOb25lKSBJZiB0aW1lb3V0IGlzIG5vdCBnaXZlbiBvciBpcyBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBnbG9iYWwgZGVmYXVsdCBzb2NrZXQgdGltZW91dCBpcyB1c2VkCgogICAgICAgIGZvciBtb3JlIGRvY3VtZW50YXRpb24gc2VlIHRoZSBkb2NzdHJpbmcgb2YgdGhlIHBhcmVudCBjbGFzcyBJTUFQNC4KICAgICAgICAiIiIKCgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQogICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQogICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIHNzbF9jb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzc2xfY29udGV4dCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPWtleWZpbGUpCiAgICAgICAgICAgIHNlbGYuc3NsX2NvbnRleHQgPSBzc2xfY29udGV4dAogICAgICAgICAgICBJTUFQNC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCB0aW1lb3V0KQoKICAgICAgICBkZWYgX2NyZWF0ZV9zb2NrZXQoc2VsZiwgdGltZW91dCk6CiAgICAgICAgICAgIHNvY2sgPSBJTUFQNC5fY3JlYXRlX3NvY2tldChzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICByZXR1cm4gc2VsZi5zc2xfY29udGV4dC53cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c2VsZi5ob3N0KQoKICAgICAgICBkZWYgb3BlbihzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAgICAiIiJTZXR1cCBjb25uZWN0aW9uIHRvIHJlbW90ZSBzZXJ2ZXIgb24gImhvc3Q6cG9ydCIuCiAgICAgICAgICAgICAgICAoZGVmYXVsdDogbG9jYWxob3N0OnN0YW5kYXJkIElNQVA0IFNTTCBwb3J0KS4KICAgICAgICAgICAgVGhpcyBjb25uZWN0aW9uIHdpbGwgYmUgdXNlZCBieSB0aGUgcm91dGluZXM6CiAgICAgICAgICAgICAgICByZWFkLCByZWFkbGluZSwgc2VuZCwgc2h1dGRvd24uCiAgICAgICAgICAgICIiIgogICAgICAgICAgICBJTUFQNC5vcGVuKHNlbGYsIGhvc3QsIHBvcnQsIHRpbWVvdXQpCgogICAgX19hbGxfXy5hcHBlbmQoIklNQVA0X1NTTCIpCgoKY2xhc3MgSU1BUDRfc3RyZWFtKElNQVA0KToKCiAgICAiIiJJTUFQNCBjbGllbnQgY2xhc3Mgb3ZlciBhIHN0cmVhbQoKICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0X3N0cmVhbShjb21tYW5kKQoKICAgICAgICAgICAgImNvbW1hbmQiIC0gYSBzdHJpbmcgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHN1YnByb2Nlc3MuUG9wZW4oKQoKICAgIGZvciBtb3JlIGRvY3VtZW50YXRpb24gc2VlIHRoZSBkb2NzdHJpbmcgb2YgdGhlIHBhcmVudCBjbGFzcyBJTUFQNC4KICAgICIiIgoKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZCk6CiAgICAgICAgc2VsZi5jb21tYW5kID0gY29tbWFuZAogICAgICAgIElNQVA0Ll9faW5pdF9fKHNlbGYpCgoKICAgIGRlZiBvcGVuKHNlbGYsIGhvc3Q9Tm9uZSwgcG9ydD1Ob25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICIiIlNldHVwIGEgc3RyZWFtIGNvbm5lY3Rpb24uCiAgICAgICAgVGhpcyBjb25uZWN0aW9uIHdpbGwgYmUgdXNlZCBieSB0aGUgcm91dGluZXM6CiAgICAgICAgICAgIHJlYWQsIHJlYWRsaW5lLCBzZW5kLCBzaHV0ZG93bi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmhvc3QgPSBOb25lICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcGFyZW50IGNsYXNzCiAgICAgICAgc2VsZi5wb3J0ID0gTm9uZQogICAgICAgIHNlbGYuc29jayA9IE5vbmUKICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgc2VsZi5wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLmNvbW1hbmQsCiAgICAgICAgICAgIGJ1ZnNpemU9REVGQVVMVF9CVUZGRVJfU0laRSwKICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICBzaGVsbD1UcnVlLCBjbG9zZV9mZHM9VHJ1ZSkKICAgICAgICBzZWxmLndyaXRlZmlsZSA9IHNlbGYucHJvY2Vzcy5zdGRpbgogICAgICAgIHNlbGYucmVhZGZpbGUgPSBzZWxmLnByb2Nlc3Muc3Rkb3V0CgogICAgZGVmIHJlYWQoc2VsZiwgc2l6ZSk6CiAgICAgICAgIiIiUmVhZCAnc2l6ZScgYnl0ZXMgZnJvbSByZW1vdGUuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYucmVhZGZpbGUucmVhZChzaXplKQoKCiAgICBkZWYgcmVhZGxpbmUoc2VsZik6CiAgICAgICAgIiIiUmVhZCBsaW5lIGZyb20gcmVtb3RlLiIiIgogICAgICAgIHJldHVybiBzZWxmLnJlYWRmaWxlLnJlYWRsaW5lKCkKCgogICAgZGVmIHNlbmQoc2VsZiwgZGF0YSk6CiAgICAgICAgIiIiU2VuZCBkYXRhIHRvIHJlbW90ZS4iIiIKICAgICAgICBzZWxmLndyaXRlZmlsZS53cml0ZShkYXRhKQogICAgICAgIHNlbGYud3JpdGVmaWxlLmZsdXNoKCkKCgogICAgZGVmIHNodXRkb3duKHNlbGYpOgogICAgICAgICIiIkNsb3NlIEkvTyBlc3RhYmxpc2hlZCBpbiAib3BlbiIuIiIiCiAgICAgICAgc2VsZi5yZWFkZmlsZS5jbG9zZSgpCiAgICAgICAgc2VsZi53cml0ZWZpbGUuY2xvc2UoKQogICAgICAgIHNlbGYucHJvY2Vzcy53YWl0KCkKCgoKY2xhc3MgX0F1dGhlbnRpY2F0b3I6CgogICAgIiIiUHJpdmF0ZSBjbGFzcyB0byBwcm92aWRlIGVuL2RlY29kaW5nCiAgICAgICAgICAgIGZvciBiYXNlNjQtYmFzZWQgYXV0aGVudGljYXRpb24gY29udmVyc2F0aW9uLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lY2hpbnN0KToKICAgICAgICBzZWxmLm1lY2ggPSBtZWNoaW5zdCAgICAjIENhbGxhYmxlIG9iamVjdCB0byBwcm92aWRlL3Byb2Nlc3MgZGF0YQoKICAgIGRlZiBwcm9jZXNzKHNlbGYsIGRhdGEpOgogICAgICAgIHJldCA9IHNlbGYubWVjaChzZWxmLmRlY29kZShkYXRhKSkKICAgICAgICBpZiByZXQgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIGInKicgICAgICMgQWJvcnQgY29udmVyc2F0aW9uCiAgICAgICAgcmV0dXJuIHNlbGYuZW5jb2RlKHJldCkKCiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucCk6CiAgICAgICAgIwogICAgICAgICMgIEludm9rZSBiaW5hc2NpaS5iMmFfYmFzZTY0IGl0ZXJhdGl2ZWx5IHdpdGgKICAgICAgICAjICBzaG9ydCBldmVuIGxlbmd0aCBidWZmZXJzLCBzdHJpcCB0aGUgdHJhaWxpbmcKICAgICAgICAjICBsaW5lIGZlZWQgZnJvbSB0aGUgcmVzdWx0IGFuZCBhcHBlbmQuICAiRXZlbiIKICAgICAgICAjICBtZWFucyBhIG51bWJlciB0aGF0IGZhY3RvcnMgdG8gYm90aCA2IGFuZCA4LAogICAgICAgICMgIHNvIHdoZW4gaXQgZ2V0cyB0byB0aGUgZW5kIG9mIHRoZSA4LWJpdCBpbnB1dAogICAgICAgICMgIHRoZXJlJ3Mgbm8gcGFydGlhbCA2LWJpdCBvdXRwdXQuCiAgICAgICAgIwogICAgICAgIG91cCA9IGInJwogICAgICAgIGlmIGlzaW5zdGFuY2UoaW5wLCBzdHIpOgogICAgICAgICAgICBpbnAgPSBpbnAuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgd2hpbGUgaW5wOgogICAgICAgICAgICBpZiBsZW4oaW5wKSA+IDQ4OgogICAgICAgICAgICAgICAgdCA9IGlucFs6NDhdCiAgICAgICAgICAgICAgICBpbnAgPSBpbnBbNDg6XQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdCA9IGlucAogICAgICAgICAgICAgICAgaW5wID0gYicnCiAgICAgICAgICAgIGUgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHQpCiAgICAgICAgICAgIGlmIGU6CiAgICAgICAgICAgICAgICBvdXAgPSBvdXAgKyBlWzotMV0KICAgICAgICByZXR1cm4gb3VwCgogICAgZGVmIGRlY29kZShzZWxmLCBpbnApOgogICAgICAgIGlmIG5vdCBpbnA6CiAgICAgICAgICAgIHJldHVybiBiJycKICAgICAgICByZXR1cm4gYmluYXNjaWkuYTJiX2Jhc2U2NChpbnApCgpNb250aHMgPSAnIEphbiBGZWIgTWFyIEFwciBNYXkgSnVuIEp1bCBBdWcgU2VwIE9jdCBOb3YgRGVjJy5zcGxpdCgnICcpCk1vbjJudW0gPSB7cy5lbmNvZGUoKTpuKzEgZm9yIG4sIHMgaW4gZW51bWVyYXRlKE1vbnRoc1sxOl0pfQoKZGVmIEludGVybmFsZGF0ZTJ0dXBsZShyZXNwKToKICAgICIiIlBhcnNlIGFuIElNQVA0IElOVEVSTkFMREFURSBzdHJpbmcuCgogICAgUmV0dXJuIGNvcnJlc3BvbmRpbmcgbG9jYWwgdGltZS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgYQogICAgdGltZS5zdHJ1Y3RfdGltZSB0dXBsZSBvciBOb25lIGlmIHRoZSBzdHJpbmcgaGFzIHdyb25nIGZvcm1hdC4KICAgICIiIgoKICAgIG1vID0gSW50ZXJuYWxEYXRlLm1hdGNoKHJlc3ApCiAgICBpZiBub3QgbW86CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBtb24gPSBNb24ybnVtW21vLmdyb3VwKCdtb24nKV0KICAgIHpvbmVuID0gbW8uZ3JvdXAoJ3pvbmVuJykKCiAgICBkYXkgPSBpbnQobW8uZ3JvdXAoJ2RheScpKQogICAgeWVhciA9IGludChtby5ncm91cCgneWVhcicpKQogICAgaG91ciA9IGludChtby5ncm91cCgnaG91cicpKQogICAgbWluID0gaW50KG1vLmdyb3VwKCdtaW4nKSkKICAgIHNlYyA9IGludChtby5ncm91cCgnc2VjJykpCiAgICB6b25laCA9IGludChtby5ncm91cCgnem9uZWgnKSkKICAgIHpvbmVtID0gaW50KG1vLmdyb3VwKCd6b25lbScpKQoKICAgICMgSU5URVJOQUxEQVRFIHRpbWV6b25lIG11c3QgYmUgc3VidHJhY3RlZCB0byBnZXQgVVQKCiAgICB6b25lID0gKHpvbmVoKjYwICsgem9uZW0pKjYwCiAgICBpZiB6b25lbiA9PSBiJy0nOgogICAgICAgIHpvbmUgPSAtem9uZQoKICAgIHR0ID0gKHllYXIsIG1vbiwgZGF5LCBob3VyLCBtaW4sIHNlYywgLTEsIC0xLCAtMSkKICAgIHV0YyA9IGNhbGVuZGFyLnRpbWVnbSh0dCkgLSB6b25lCgogICAgcmV0dXJuIHRpbWUubG9jYWx0aW1lKHV0YykKCgoKZGVmIEludDJBUChudW0pOgoKICAgICIiIkNvbnZlcnQgaW50ZWdlciB0byBBLVAgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiIiIgoKICAgIHZhbCA9IGInJzsgQVAgPSBiJ0FCQ0RFRkdISUpLTE1OT1AnCiAgICBudW0gPSBpbnQoYWJzKG51bSkpCiAgICB3aGlsZSBudW06CiAgICAgICAgbnVtLCBtb2QgPSBkaXZtb2QobnVtLCAxNikKICAgICAgICB2YWwgPSBBUFttb2Q6bW9kKzFdICsgdmFsCiAgICByZXR1cm4gdmFsCgoKCmRlZiBQYXJzZUZsYWdzKHJlc3ApOgoKICAgICIiIkNvbnZlcnQgSU1BUDQgZmxhZ3MgcmVzcG9uc2UgdG8gcHl0aG9uIHR1cGxlLiIiIgoKICAgIG1vID0gRmxhZ3MubWF0Y2gocmVzcCkKICAgIGlmIG5vdCBtbzoKICAgICAgICByZXR1cm4gKCkKCiAgICByZXR1cm4gdHVwbGUobW8uZ3JvdXAoJ2ZsYWdzJykuc3BsaXQoKSkKCgpkZWYgVGltZTJJbnRlcm5hbGRhdGUoZGF0ZV90aW1lKToKCiAgICAiIiJDb252ZXJ0IGRhdGVfdGltZSB0byBJTUFQNCBJTlRFUk5BTERBVEUgcmVwcmVzZW50YXRpb24uCgogICAgUmV0dXJuIHN0cmluZyBpbiBmb3JtOiAnIkRELU1tbS1ZWVlZIEhIOk1NOlNTICtISE1NIicuICBUaGUKICAgIGRhdGVfdGltZSBhcmd1bWVudCBjYW4gYmUgYSBudW1iZXIgKGludCBvciBmbG9hdCkgcmVwcmVzZW50aW5nCiAgICBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcyByZXR1cm5lZCBieSB0aW1lLnRpbWUoKSksIGEgOS10dXBsZQogICAgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUsIGFuIGluc3RhbmNlIG9mIHRpbWUuc3RydWN0X3RpbWUgKGFzCiAgICByZXR1cm5lZCBieSB0aW1lLmxvY2FsdGltZSgpKSwgYW4gYXdhcmUgZGF0ZXRpbWUgaW5zdGFuY2Ugb3IgYQogICAgZG91YmxlLXF1b3RlZCBzdHJpbmcuICBJbiB0aGUgbGFzdCBjYXNlLCBpdCBpcyBhc3N1bWVkIHRvIGFscmVhZHkKICAgIGJlIGluIHRoZSBjb3JyZWN0IGZvcm1hdC4KICAgICIiIgogICAgaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIChpbnQsIGZsb2F0KSk6CiAgICAgICAgZHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKGRhdGVfdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUudXRjKS5hc3RpbWV6b25lKCkKICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIHR1cGxlKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGdtdG9mZiA9IGRhdGVfdGltZS50bV9nbXRvZmYKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIGlmIHRpbWUuZGF5bGlnaHQ6CiAgICAgICAgICAgICAgICBkc3QgPSBkYXRlX3RpbWVbOF0KICAgICAgICAgICAgICAgIGlmIGRzdCA9PSAtMToKICAgICAgICAgICAgICAgICAgICBkc3QgPSB0aW1lLmxvY2FsdGltZSh0aW1lLm1rdGltZShkYXRlX3RpbWUpKVs4XQogICAgICAgICAgICAgICAgZ210b2ZmID0gLSh0aW1lLnRpbWV6b25lLCB0aW1lLmFsdHpvbmUpW2RzdF0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGdtdG9mZiA9IC10aW1lLnRpbWV6b25lCiAgICAgICAgZGVsdGEgPSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpCiAgICAgICAgZHQgPSBkYXRldGltZSgqZGF0ZV90aW1lWzo2XSwgdHppbmZvPXRpbWV6b25lKGRlbHRhKSkKICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIGRhdGV0aW1lKToKICAgICAgICBpZiBkYXRlX3RpbWUudHppbmZvIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRhdGVfdGltZSBtdXN0IGJlIGF3YXJlIikKICAgICAgICBkdCA9IGRhdGVfdGltZQogICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgc3RyKSBhbmQgKGRhdGVfdGltZVswXSxkYXRlX3RpbWVbLTFdKSA9PSAoJyInLCciJyk6CiAgICAgICAgcmV0dXJuIGRhdGVfdGltZSAgICAgICAgIyBBc3N1bWUgaW4gY29ycmVjdCBmb3JtYXQKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGF0ZV90aW1lIG5vdCBvZiBhIGtub3duIHR5cGUiKQogICAgZm10ID0gJyIlZC17fS0lWSAlSDolTTolUyAleiInLmZvcm1hdChNb250aHNbZHQubW9udGhdKQogICAgcmV0dXJuIGR0LnN0cmZ0aW1lKGZtdCkKCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKCiAgICAjIFRvIHRlc3Q6IGludm9rZSBlaXRoZXIgYXMgJ3B5dGhvbiBpbWFwbGliLnB5IFtJTUFQNF9zZXJ2ZXJfaG9zdG5hbWVdJwogICAgIyBvciAncHl0aG9uIGltYXBsaWIucHkgLXMgInJzaCBJTUFQNF9zZXJ2ZXJfaG9zdG5hbWUgZXhlYyAvZXRjL3JpbWFwZCInCiAgICAjIHRvIHRlc3QgdGhlIElNQVA0X3N0cmVhbSBjbGFzcwoKICAgIGltcG9ydCBnZXRvcHQsIGdldHBhc3MKCiAgICB0cnk6CiAgICAgICAgb3B0bGlzdCwgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAnZDpzOicpCiAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIHZhbDoKICAgICAgICBvcHRsaXN0LCBhcmdzID0gKCksICgpCgogICAgc3RyZWFtX2NvbW1hbmQgPSBOb25lCiAgICBmb3Igb3B0LHZhbCBpbiBvcHRsaXN0OgogICAgICAgIGlmIG9wdCA9PSAnLWQnOgogICAgICAgICAgICBEZWJ1ZyA9IGludCh2YWwpCiAgICAgICAgZWxpZiBvcHQgPT0gJy1zJzoKICAgICAgICAgICAgc3RyZWFtX2NvbW1hbmQgPSB2YWwKICAgICAgICAgICAgaWYgbm90IGFyZ3M6IGFyZ3MgPSAoc3RyZWFtX2NvbW1hbmQsKQoKICAgIGlmIG5vdCBhcmdzOiBhcmdzID0gKCcnLCkKCiAgICBob3N0ID0gYXJnc1swXQoKICAgIFVTRVIgPSBnZXRwYXNzLmdldHVzZXIoKQogICAgUEFTU1dEID0gZ2V0cGFzcy5nZXRwYXNzKCJJTUFQIHBhc3N3b3JkIGZvciAlcyBvbiAlczogIiAlIChVU0VSLCBob3N0IG9yICJsb2NhbGhvc3QiKSkKCiAgICB0ZXN0X21lc2cgPSAnRnJvbTogJSh1c2VyKXNAbG9jYWxob3N0JShsZilzU3ViamVjdDogSU1BUDQgdGVzdCUobGYpcyUobGYpc2RhdGEuLi4lKGxmKXMnICUgeyd1c2VyJzpVU0VSLCAnbGYnOidcbid9CiAgICB0ZXN0X3NlcTEgPSAoCiAgICAoJ2xvZ2luJywgKFVTRVIsIFBBU1NXRCkpLAogICAgKCdjcmVhdGUnLCAoJy90bXAveHh4IDEnLCkpLAogICAgKCdyZW5hbWUnLCAoJy90bXAveHh4IDEnLCAnL3RtcC95eXknKSksCiAgICAoJ0NSRUFURScsICgnL3RtcC95eXogMicsKSksCiAgICAoJ2FwcGVuZCcsICgnL3RtcC95eXogMicsIE5vbmUsIE5vbmUsIHRlc3RfbWVzZykpLAogICAgKCdsaXN0JywgKCcvdG1wJywgJ3l5KicpKSwKICAgICgnc2VsZWN0JywgKCcvdG1wL3l5eiAyJywpKSwKICAgICgnc2VhcmNoJywgKE5vbmUsICdTVUJKRUNUJywgJ3Rlc3QnKSksCiAgICAoJ2ZldGNoJywgKCcxJywgJyhGTEFHUyBJTlRFUk5BTERBVEUgUkZDODIyKScpKSwKICAgICgnc3RvcmUnLCAoJzEnLCAnRkxBR1MnLCByJyhcRGVsZXRlZCknKSksCiAgICAoJ25hbWVzcGFjZScsICgpKSwKICAgICgnZXhwdW5nZScsICgpKSwKICAgICgncmVjZW50JywgKCkpLAogICAgKCdjbG9zZScsICgpKSwKICAgICkKCiAgICB0ZXN0X3NlcTIgPSAoCiAgICAoJ3NlbGVjdCcsICgpKSwKICAgICgncmVzcG9uc2UnLCgnVUlEVkFMSURJVFknLCkpLAogICAgKCd1aWQnLCAoJ1NFQVJDSCcsICdBTEwnKSksCiAgICAoJ3Jlc3BvbnNlJywgKCdFWElTVFMnLCkpLAogICAgKCdhcHBlbmQnLCAoTm9uZSwgTm9uZSwgTm9uZSwgdGVzdF9tZXNnKSksCiAgICAoJ3JlY2VudCcsICgpKSwKICAgICgnbG9nb3V0JywgKCkpLAogICAgKQoKICAgIGRlZiBydW4oY21kLCBhcmdzKToKICAgICAgICBNLl9tZXNnKCclcyAlcycgJSAoY21kLCBhcmdzKSkKICAgICAgICB0eXAsIGRhdCA9IGdldGF0dHIoTSwgY21kKSgqYXJncykKICAgICAgICBNLl9tZXNnKCclcyA9PiAlcyAlcycgJSAoY21kLCB0eXAsIGRhdCkpCiAgICAgICAgaWYgdHlwID09ICdOTyc6IHJhaXNlIGRhdFswXQogICAgICAgIHJldHVybiBkYXQKCiAgICB0cnk6CiAgICAgICAgaWYgc3RyZWFtX2NvbW1hbmQ6CiAgICAgICAgICAgIE0gPSBJTUFQNF9zdHJlYW0oc3RyZWFtX2NvbW1hbmQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgTSA9IElNQVA0KGhvc3QpCiAgICAgICAgaWYgTS5zdGF0ZSA9PSAnQVVUSCc6CiAgICAgICAgICAgIHRlc3Rfc2VxMSA9IHRlc3Rfc2VxMVsxOl0gICAjIExvZ2luIG5vdCBuZWVkZWQKICAgICAgICBNLl9tZXNnKCdQUk9UT0NPTF9WRVJTSU9OID0gJXMnICUgTS5QUk9UT0NPTF9WRVJTSU9OKQogICAgICAgIE0uX21lc2coJ0NBUEFCSUxJVElFUyA9ICVyJyAlIChNLmNhcGFiaWxpdGllcywpKQoKICAgICAgICBmb3IgY21kLGFyZ3MgaW4gdGVzdF9zZXExOgogICAgICAgICAgICBydW4oY21kLCBhcmdzKQoKICAgICAgICBmb3IgbWwgaW4gcnVuKCdsaXN0JywgKCcvdG1wLycsICd5eSUnKSk6CiAgICAgICAgICAgIG1vID0gcmUubWF0Y2gocicuKiIoW14iXSspIiQnLCBtbCkKICAgICAgICAgICAgaWYgbW86IHBhdGggPSBtby5ncm91cCgxKQogICAgICAgICAgICBlbHNlOiBwYXRoID0gbWwuc3BsaXQoKVstMV0KICAgICAgICAgICAgcnVuKCdkZWxldGUnLCAocGF0aCwpKQoKICAgICAgICBmb3IgY21kLGFyZ3MgaW4gdGVzdF9zZXEyOgogICAgICAgICAgICBkYXQgPSBydW4oY21kLCBhcmdzKQoKICAgICAgICAgICAgaWYgKGNtZCxhcmdzKSAhPSAoJ3VpZCcsICgnU0VBUkNIJywgJ0FMTCcpKToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICB1aWQgPSBkYXRbLTFdLnNwbGl0KCkKICAgICAgICAgICAgaWYgbm90IHVpZDogY29udGludWUKICAgICAgICAgICAgcnVuKCd1aWQnLCAoJ0ZFVENIJywgJyVzJyAlIHVpZFstMV0sCiAgICAgICAgICAgICAgICAgICAgJyhGTEFHUyBJTlRFUk5BTERBVEUgUkZDODIyLlNJWkUgUkZDODIyLkhFQURFUiBSRkM4MjIuVEVYVCknKSkKCiAgICAgICAgcHJpbnQoJ1xuQWxsIHRlc3RzIE9LLicpCgogICAgZXhjZXB0OgogICAgICAgIHByaW50KCdcblRlc3RzIGZhaWxlZC4nKQoKICAgICAgICBpZiBub3QgRGVidWc6CiAgICAgICAgICAgIHByaW50KCcnJwpJZiB5b3Ugd291bGQgbGlrZSB0byBzZWUgZGVidWdnaW5nIG91dHB1dCwKdHJ5OiAlcyAtZDUKJycnICUgc3lzLmFyZ3ZbMF0pCgogICAgICAgIHJhaXNlClBLAwQUAAAAAAACIKNWXYYEtHAPAABwDwAACQAAAGltZ2hkci5weSIiIlJlY29nbml6ZSBpbWFnZSBmaWxlIGZvcm1hdHMgYmFzZWQgb24gdGhlaXIgZmlyc3QgZmV3IGJ5dGVzLiIiIgoKZnJvbSBvcyBpbXBvcnQgUGF0aExpa2UKaW1wb3J0IHdhcm5pbmdzCgpfX2FsbF9fID0gWyJ3aGF0Il0KCgp3YXJuaW5ncy5fZGVwcmVjYXRlZChfX25hbWVfXywgcmVtb3ZlPSgzLCAxMykpCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCiMgUmVjb2duaXplIGltYWdlIGhlYWRlcnMgIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKCmRlZiB3aGF0KGZpbGUsIGg9Tm9uZSk6CiAgICBmID0gTm9uZQogICAgdHJ5OgogICAgICAgIGlmIGggaXMgTm9uZToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCAoc3RyLCBQYXRoTGlrZSkpOgogICAgICAgICAgICAgICAgZiA9IG9wZW4oZmlsZSwgJ3JiJykKICAgICAgICAgICAgICAgIGggPSBmLnJlYWQoMzIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGZpbGUudGVsbCgpCiAgICAgICAgICAgICAgICBoID0gZmlsZS5yZWFkKDMyKQogICAgICAgICAgICAgICAgZmlsZS5zZWVrKGxvY2F0aW9uKQogICAgICAgIGZvciB0ZiBpbiB0ZXN0czoKICAgICAgICAgICAgcmVzID0gdGYoaCwgZikKICAgICAgICAgICAgaWYgcmVzOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlcwogICAgZmluYWxseToKICAgICAgICBpZiBmOiBmLmNsb3NlKCkKICAgIHJldHVybiBOb25lCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKIyBTdWJyb3V0aW5lcyBwZXIgaW1hZ2UgZmlsZSB0eXBlICMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKCnRlc3RzID0gW10KCmRlZiB0ZXN0X2pwZWcoaCwgZik6CiAgICAiIiJKUEVHIGRhdGEgd2l0aCBKRklGIG9yIEV4aWYgbWFya2VyczsgYW5kIHJhdyBKUEVHIiIiCiAgICBpZiBoWzY6MTBdIGluIChiJ0pGSUYnLCBiJ0V4aWYnKToKICAgICAgICByZXR1cm4gJ2pwZWcnCiAgICBlbGlmIGhbOjRdID09IGInXHhmZlx4ZDhceGZmXHhkYic6CiAgICAgICAgcmV0dXJuICdqcGVnJwoKdGVzdHMuYXBwZW5kKHRlc3RfanBlZykKCmRlZiB0ZXN0X3BuZyhoLCBmKToKICAgIGlmIGguc3RhcnRzd2l0aChiJ1wyMTFQTkdcclxuXDAzMlxuJyk6CiAgICAgICAgcmV0dXJuICdwbmcnCgp0ZXN0cy5hcHBlbmQodGVzdF9wbmcpCgpkZWYgdGVzdF9naWYoaCwgZik6CiAgICAiIiJHSUYgKCc4NyBhbmQgJzg5IHZhcmlhbnRzKSIiIgogICAgaWYgaFs6Nl0gaW4gKGInR0lGODdhJywgYidHSUY4OWEnKToKICAgICAgICByZXR1cm4gJ2dpZicKCnRlc3RzLmFwcGVuZCh0ZXN0X2dpZikKCmRlZiB0ZXN0X3RpZmYoaCwgZik6CiAgICAiIiJUSUZGIChjYW4gYmUgaW4gTW90b3JvbGEgb3IgSW50ZWwgYnl0ZSBvcmRlcikiIiIKICAgIGlmIGhbOjJdIGluIChiJ01NJywgYidJSScpOgogICAgICAgIHJldHVybiAndGlmZicKCnRlc3RzLmFwcGVuZCh0ZXN0X3RpZmYpCgpkZWYgdGVzdF9yZ2IoaCwgZik6CiAgICAiIiJTR0kgaW1hZ2UgbGlicmFyeSIiIgogICAgaWYgaC5zdGFydHN3aXRoKGInXDAwMVwzMzInKToKICAgICAgICByZXR1cm4gJ3JnYicKCnRlc3RzLmFwcGVuZCh0ZXN0X3JnYikKCmRlZiB0ZXN0X3BibShoLCBmKToKICAgICIiIlBCTSAocG9ydGFibGUgYml0bWFwKSIiIgogICAgaWYgbGVuKGgpID49IDMgYW5kIFwKICAgICAgICBoWzBdID09IG9yZChiJ1AnKSBhbmQgaFsxXSBpbiBiJzE0JyBhbmQgaFsyXSBpbiBiJyBcdFxuXHInOgogICAgICAgIHJldHVybiAncGJtJwoKdGVzdHMuYXBwZW5kKHRlc3RfcGJtKQoKZGVmIHRlc3RfcGdtKGgsIGYpOgogICAgIiIiUEdNIChwb3J0YWJsZSBncmF5bWFwKSIiIgogICAgaWYgbGVuKGgpID49IDMgYW5kIFwKICAgICAgICBoWzBdID09IG9yZChiJ1AnKSBhbmQgaFsxXSBpbiBiJzI1JyBhbmQgaFsyXSBpbiBiJyBcdFxuXHInOgogICAgICAgIHJldHVybiAncGdtJwoKdGVzdHMuYXBwZW5kKHRlc3RfcGdtKQoKZGVmIHRlc3RfcHBtKGgsIGYpOgogICAgIiIiUFBNIChwb3J0YWJsZSBwaXhtYXApIiIiCiAgICBpZiBsZW4oaCkgPj0gMyBhbmQgXAogICAgICAgIGhbMF0gPT0gb3JkKGInUCcpIGFuZCBoWzFdIGluIGInMzYnIGFuZCBoWzJdIGluIGInIFx0XG5ccic6CiAgICAgICAgcmV0dXJuICdwcG0nCgp0ZXN0cy5hcHBlbmQodGVzdF9wcG0pCgpkZWYgdGVzdF9yYXN0KGgsIGYpOgogICAgIiIiU3VuIHJhc3RlciBmaWxlIiIiCiAgICBpZiBoLnN0YXJ0c3dpdGgoYidceDU5XHhBNlx4NkFceDk1Jyk6CiAgICAgICAgcmV0dXJuICdyYXN0JwoKdGVzdHMuYXBwZW5kKHRlc3RfcmFzdCkKCmRlZiB0ZXN0X3hibShoLCBmKToKICAgICIiIlggYml0bWFwIChYMTAgb3IgWDExKSIiIgogICAgaWYgaC5zdGFydHN3aXRoKGInI2RlZmluZSAnKToKICAgICAgICByZXR1cm4gJ3hibScKCnRlc3RzLmFwcGVuZCh0ZXN0X3hibSkKCmRlZiB0ZXN0X2JtcChoLCBmKToKICAgIGlmIGguc3RhcnRzd2l0aChiJ0JNJyk6CiAgICAgICAgcmV0dXJuICdibXAnCgp0ZXN0cy5hcHBlbmQodGVzdF9ibXApCgpkZWYgdGVzdF93ZWJwKGgsIGYpOgogICAgaWYgaC5zdGFydHN3aXRoKGInUklGRicpIGFuZCBoWzg6MTJdID09IGInV0VCUCc6CiAgICAgICAgcmV0dXJuICd3ZWJwJwoKdGVzdHMuYXBwZW5kKHRlc3Rfd2VicCkKCmRlZiB0ZXN0X2V4cihoLCBmKToKICAgIGlmIGguc3RhcnRzd2l0aChiJ1x4NzZceDJmXHgzMVx4MDEnKToKICAgICAgICByZXR1cm4gJ2V4cicKCnRlc3RzLmFwcGVuZCh0ZXN0X2V4cikKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLSMKIyBTbWFsbCB0ZXN0IHByb2dyYW0gIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0jCgpkZWYgdGVzdCgpOgogICAgaW1wb3J0IHN5cwogICAgcmVjdXJzaXZlID0gMAogICAgaWYgc3lzLmFyZ3ZbMTpdIGFuZCBzeXMuYXJndlsxXSA9PSAnLXInOgogICAgICAgIGRlbCBzeXMuYXJndlsxOjJdCiAgICAgICAgcmVjdXJzaXZlID0gMQogICAgdHJ5OgogICAgICAgIGlmIHN5cy5hcmd2WzE6XToKICAgICAgICAgICAgdGVzdGFsbChzeXMuYXJndlsxOl0sIHJlY3Vyc2l2ZSwgMSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0ZXN0YWxsKFsnLiddLCByZWN1cnNpdmUsIDEpCiAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnXG5bSW50ZXJydXB0ZWRdXG4nKQogICAgICAgIHN5cy5leGl0KDEpCgpkZWYgdGVzdGFsbChsaXN0LCByZWN1cnNpdmUsIHRvcGxldmVsKToKICAgIGltcG9ydCBzeXMKICAgIGltcG9ydCBvcwogICAgZm9yIGZpbGVuYW1lIGluIGxpc3Q6CiAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmaWxlbmFtZSk6CiAgICAgICAgICAgIHByaW50KGZpbGVuYW1lICsgJy86JywgZW5kPScgJykKICAgICAgICAgICAgaWYgcmVjdXJzaXZlIG9yIHRvcGxldmVsOgogICAgICAgICAgICAgICAgcHJpbnQoJ3JlY3Vyc2luZyBkb3duOicpCiAgICAgICAgICAgICAgICBpbXBvcnQgZ2xvYgogICAgICAgICAgICAgICAgbmFtZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGdsb2IuZXNjYXBlKGZpbGVuYW1lKSwgJyonKSkKICAgICAgICAgICAgICAgIHRlc3RhbGwobmFtZXMsIHJlY3Vyc2l2ZSwgMCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KCcqKiogZGlyZWN0b3J5ICh1c2UgLXIpICoqKicpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoZmlsZW5hbWUgKyAnOicsIGVuZD0nICcpCiAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwcmludCh3aGF0KGZpbGVuYW1lKSkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBwcmludCgnKioqIG5vdCBmb3VuZCAqKionKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIHRlc3QoKQpQSwMEFAAAAAAAAiCjVtN+rNVuKQAAbikAAAYAAABpbXAucHkiIiJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgY29tcG9uZW50cyBuZWVkZWQgdG8gYnVpbGQgeW91ciBvd24gX19pbXBvcnRfXwpmdW5jdGlvbi4gIFVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgYXJlIG9ic29sZXRlLgoKSW4gbW9zdCBjYXNlcyBpdCBpcyBwcmVmZXJyZWQgeW91IGNvbnNpZGVyIHVzaW5nIHRoZSBpbXBvcnRsaWIgbW9kdWxlJ3MKZnVuY3Rpb25hbGl0eSBvdmVyIHRoaXMgbW9kdWxlLgoKIiIiCiMgKFByb2JhYmx5KSBuZWVkIHRvIHN0YXkgaW4gX2ltcApmcm9tIF9pbXAgaW1wb3J0IChsb2NrX2hlbGQsIGFjcXVpcmVfbG9jaywgcmVsZWFzZV9sb2NrLAogICAgICAgICAgICAgICAgICBnZXRfZnJvemVuX29iamVjdCwgaXNfZnJvemVuX3BhY2thZ2UsCiAgICAgICAgICAgICAgICAgIGluaXRfZnJvemVuLCBpc19idWlsdGluLCBpc19mcm96ZW4sCiAgICAgICAgICAgICAgICAgIF9maXhfY29fZmlsZW5hbWUsIF9mcm96ZW5fbW9kdWxlX25hbWVzKQp0cnk6CiAgICBmcm9tIF9pbXAgaW1wb3J0IGNyZWF0ZV9keW5hbWljCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICMgUGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMgbG9hZGluZy4KICAgIGNyZWF0ZV9keW5hbWljID0gTm9uZQoKZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgX0VSUl9NU0csIF9leGVjLCBfbG9hZCwgX2J1aWx0aW5fZnJvbV9uYW1lCmZyb20gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyCgpmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CmZyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsCmltcG9ydCBpbXBvcnRsaWIKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IHRva2VuaXplCmltcG9ydCB0eXBlcwppbXBvcnQgd2FybmluZ3MKCndhcm5pbmdzLndhcm4oInRoZSBpbXAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYiBhbmQgc2xhdGVkICIKICAgICAgICAgICAgICAiZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTI7ICIKICAgICAgICAgICAgICAic2VlIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBhbHRlcm5hdGl2ZSB1c2VzIiwKICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKCiMgREVQUkVDQVRFRApTRUFSQ0hfRVJST1IgPSAwClBZX1NPVVJDRSA9IDEKUFlfQ09NUElMRUQgPSAyCkNfRVhURU5TSU9OID0gMwpQWV9SRVNPVVJDRSA9IDQKUEtHX0RJUkVDVE9SWSA9IDUKQ19CVUlMVElOID0gNgpQWV9GUk9aRU4gPSA3ClBZX0NPREVSRVNPVVJDRSA9IDgKSU1QX0hPT0sgPSA5CgoKZGVmIG5ld19tb2R1bGUobmFtZSk6CiAgICAiIiIqKkRFUFJFQ0FURUQqKgoKICAgIENyZWF0ZSBhIG5ldyBtb2R1bGUuCgogICAgVGhlIG1vZHVsZSBpcyBub3QgZW50ZXJlZCBpbnRvIHN5cy5tb2R1bGVzLgoKICAgICIiIgogICAgcmV0dXJuIHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKCgpkZWYgZ2V0X21hZ2ljKCk6CiAgICAiIiIqKkRFUFJFQ0FURUQqKgoKICAgIFJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIGZpbGVzLgogICAgIiIiCiAgICByZXR1cm4gdXRpbC5NQUdJQ19OVU1CRVIKCgpkZWYgZ2V0X3RhZygpOgogICAgIiIiUmV0dXJuIHRoZSBtYWdpYyB0YWcgZm9yIC5weWMgZmlsZXMuIiIiCiAgICByZXR1cm4gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwoKCmRlZiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lKToKICAgICIiIioqREVQUkVDQVRFRCoqCgogICAgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljIGZpbGUuCgogICAgVGhlIC5weSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8gdGhlCiAgICAucHljIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4KCiAgICBJZiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgdGhlbiBpdCBtdXN0IGJlIGEgYm9vbGVhbiBhbmQgaXMgdXNlZCBpbgogICAgcGxhY2Ugb2Ygc3lzLmZsYWdzLm9wdGltaXplLgoKICAgIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgoKICAgICIiIgogICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKICAgICAgICByZXR1cm4gdXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZSkKCgpkZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6CiAgICAiIiIqKkRFUFJFQ0FURUQqKgoKICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KCiAgICBUaGUgLnB5YyBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8KICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMgZmlsZS4gIElmIHBhdGggZG9lcwogICAgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiBJZgogICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCgogICAgIiIiCiAgICByZXR1cm4gdXRpbC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKQoKCmRlZiBnZXRfc3VmZml4ZXMoKToKICAgICIiIioqREVQUkVDQVRFRCoqIiIiCiAgICBleHRlbnNpb25zID0gWyhzLCAncmInLCBDX0VYVEVOU0lPTikgZm9yIHMgaW4gbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU10KICAgIHNvdXJjZSA9IFsocywgJ3InLCBQWV9TT1VSQ0UpIGZvciBzIGluIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNdCiAgICBieXRlY29kZSA9IFsocywgJ3JiJywgUFlfQ09NUElMRUQpIGZvciBzIGluIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU10KCiAgICByZXR1cm4gZXh0ZW5zaW9ucyArIHNvdXJjZSArIGJ5dGVjb2RlCgoKY2xhc3MgTnVsbEltcG9ydGVyOgoKICAgICIiIioqREVQUkVDQVRFRCoqCgogICAgTnVsbCBpbXBvcnQgb2JqZWN0LgoKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKICAgICAgICBpZiBwYXRoID09ICcnOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignZW1wdHkgcGF0aG5hbWUnLCBwYXRoPScnKQogICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihwYXRoKToKICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2V4aXN0aW5nIGRpcmVjdG9yeScsIHBhdGg9cGF0aCkKCiAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIkFsd2F5cyByZXR1cm5zIE5vbmUuIiIiCiAgICAgICAgcmV0dXJuIE5vbmUKCgpjbGFzcyBfSGFja2VkR2V0RGF0YToKCiAgICAiIiJDb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yICdmaWxlJyBhcmd1bWVudHMgb2YgdmFyaW91cyBsb2FkXyooKQogICAgZnVuY3Rpb25zLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCwgZmlsZT1Ob25lKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGZ1bGxuYW1lLCBwYXRoKQogICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKCiAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aCk6CiAgICAgICAgIiIiR3Jvc3MgaGFjayB0byBjb250b3J0IGxvYWRlciB0byBkZWFsIHcvIGxvYWRfKigpJ3MgYmFkIEFQSS4iIiIKICAgICAgICBpZiBzZWxmLmZpbGUgYW5kIHBhdGggPT0gc2VsZi5wYXRoOgogICAgICAgICAgICAjIFRoZSBjb250cmFjdCBvZiBnZXRfZGF0YSgpIHJlcXVpcmVzIHVzIHRvIHJldHVybiBieXRlcy4gUmVvcGVuIHRoZQogICAgICAgICAgICAjIGZpbGUgaW4gYmluYXJ5IG1vZGUgaWYgbmVlZGVkLgogICAgICAgICAgICBpZiBub3Qgc2VsZi5maWxlLmNsb3NlZDoKICAgICAgICAgICAgICAgIGZpbGUgPSBzZWxmLmZpbGUKICAgICAgICAgICAgICAgIGlmICdiJyBub3QgaW4gZmlsZS5tb2RlOgogICAgICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgICAgICBpZiBzZWxmLmZpbGUuY2xvc2VkOgogICAgICAgICAgICAgICAgc2VsZi5maWxlID0gZmlsZSA9IG9wZW4oc2VsZi5wYXRoLCAncmInKQoKICAgICAgICAgICAgd2l0aCBmaWxlOgogICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2RhdGEocGF0aCkKCgpjbGFzcyBfTG9hZFNvdXJjZUNvbXBhdGliaWxpdHkoX0hhY2tlZEdldERhdGEsIG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKToKCiAgICAiIiJDb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yIGltcGxlbWVudGluZyBsb2FkX3NvdXJjZSgpLiIiIgoKCmRlZiBsb2FkX3NvdXJjZShuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKICAgIGxvYWRlciA9IF9Mb2FkU291cmNlQ29tcGF0aWJpbGl0eShuYW1lLCBwYXRobmFtZSwgZmlsZSkKICAgIHNwZWMgPSB1dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIHBhdGhuYW1lLCBsb2FkZXI9bG9hZGVyKQogICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICBtb2R1bGUgPSBfZXhlYyhzcGVjLCBzeXMubW9kdWxlc1tuYW1lXSkKICAgIGVsc2U6CiAgICAgICAgbW9kdWxlID0gX2xvYWQoc3BlYykKICAgICMgVG8gYWxsb3cgcmVsb2FkaW5nIHRvIHBvdGVudGlhbGx5IHdvcmssIHVzZSBhIG5vbi1oYWNrZWQgbG9hZGVyIHdoaWNoCiAgICAjIHdvbid0IHJlbHkgb24gYSBub3ctY2xvc2VkIGZpbGUgb2JqZWN0LgogICAgbW9kdWxlLl9fbG9hZGVyX18gPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXIgPSBtb2R1bGUuX19sb2FkZXJfXwogICAgcmV0dXJuIG1vZHVsZQoKCmNsYXNzIF9Mb2FkQ29tcGlsZWRDb21wYXRpYmlsaXR5KF9IYWNrZWRHZXREYXRhLCBTb3VyY2VsZXNzRmlsZUxvYWRlcik6CgogICAgIiIiQ29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgbG9hZF9jb21waWxlZCgpLiIiIgoKCmRlZiBsb2FkX2NvbXBpbGVkKG5hbWUsIHBhdGhuYW1lLCBmaWxlPU5vbmUpOgogICAgIiIiKipERVBSRUNBVEVEKioiIiIKICAgIGxvYWRlciA9IF9Mb2FkQ29tcGlsZWRDb21wYXRpYmlsaXR5KG5hbWUsIHBhdGhuYW1lLCBmaWxlKQogICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCiAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgIG1vZHVsZSA9IF9leGVjKHNwZWMsIHN5cy5tb2R1bGVzW25hbWVdKQogICAgZWxzZToKICAgICAgICBtb2R1bGUgPSBfbG9hZChzcGVjKQogICAgIyBUbyBhbGxvdyByZWxvYWRpbmcgdG8gcG90ZW50aWFsbHkgd29yaywgdXNlIGEgbm9uLWhhY2tlZCBsb2FkZXIgd2hpY2gKICAgICMgd29uJ3QgcmVseSBvbiBhIG5vdy1jbG9zZWQgZmlsZSBvYmplY3QuCiAgICBtb2R1bGUuX19sb2FkZXJfXyA9IFNvdXJjZWxlc3NGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQogICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IG1vZHVsZS5fX2xvYWRlcl9fCiAgICByZXR1cm4gbW9kdWxlCgoKZGVmIGxvYWRfcGFja2FnZShuYW1lLCBwYXRoKToKICAgICIiIioqREVQUkVDQVRFRCoqIiIiCiAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgogICAgICAgIGV4dGVuc2lvbnMgPSAobWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1s6XSArCiAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0pCiAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBleHRlbnNpb25zOgogICAgICAgICAgICBpbml0X3BhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ19faW5pdF9fJyArIGV4dGVuc2lvbikKICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaW5pdF9wYXRoKToKICAgICAgICAgICAgICAgIHBhdGggPSBpbml0X3BhdGgKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSBwYWNrYWdlJy5mb3JtYXQocGF0aCkpCiAgICBzcGVjID0gdXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9W10pCiAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgIHJldHVybiBfZXhlYyhzcGVjLCBzeXMubW9kdWxlc1tuYW1lXSkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIF9sb2FkKHNwZWMpCgoKZGVmIGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBkZXRhaWxzKToKICAgICIiIioqREVQUkVDQVRFRCoqCgogICAgTG9hZCBhIG1vZHVsZSwgZ2l2ZW4gaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgZmluZF9tb2R1bGUoKS4KCiAgICBUaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LgoKICAgICIiIgogICAgc3VmZml4LCBtb2RlLCB0eXBlXyA9IGRldGFpbHMKICAgIGlmIG1vZGUgYW5kIChub3QgbW9kZS5zdGFydHN3aXRoKCdyJykgb3IgJysnIGluIG1vZGUpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgZmlsZSBvcGVuIG1vZGUgeyFyfScuZm9ybWF0KG1vZGUpKQogICAgZWxpZiBmaWxlIGlzIE5vbmUgYW5kIHR5cGVfIGluIHtQWV9TT1VSQ0UsIFBZX0NPTVBJTEVEfToKICAgICAgICBtc2cgPSAnZmlsZSBvYmplY3QgcmVxdWlyZWQgZm9yIGltcG9ydCAodHlwZSBjb2RlIHt9KScuZm9ybWF0KHR5cGVfKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQogICAgZWxpZiB0eXBlXyA9PSBQWV9TT1VSQ0U6CiAgICAgICAgcmV0dXJuIGxvYWRfc291cmNlKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQogICAgZWxpZiB0eXBlXyA9PSBQWV9DT01QSUxFRDoKICAgICAgICByZXR1cm4gbG9hZF9jb21waWxlZChuYW1lLCBmaWxlbmFtZSwgZmlsZSkKICAgIGVsaWYgdHlwZV8gPT0gQ19FWFRFTlNJT04gYW5kIGxvYWRfZHluYW1pYyBpcyBub3QgTm9uZToKICAgICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgb3BlbmVkX2ZpbGU6CiAgICAgICAgICAgICAgICByZXR1cm4gbG9hZF9keW5hbWljKG5hbWUsIGZpbGVuYW1lLCBvcGVuZWRfZmlsZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gbG9hZF9keW5hbWljKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQogICAgZWxpZiB0eXBlXyA9PSBQS0dfRElSRUNUT1JZOgogICAgICAgIHJldHVybiBsb2FkX3BhY2thZ2UobmFtZSwgZmlsZW5hbWUpCiAgICBlbGlmIHR5cGVfID09IENfQlVJTFRJTjoKICAgICAgICByZXR1cm4gaW5pdF9idWlsdGluKG5hbWUpCiAgICBlbGlmIHR5cGVfID09IFBZX0ZST1pFTjoKICAgICAgICByZXR1cm4gaW5pdF9mcm96ZW4obmFtZSkKICAgIGVsc2U6CiAgICAgICAgbXNnID0gICJEb24ndCBrbm93IGhvdyB0byBpbXBvcnQge30gKHR5cGUgY29kZSB7fSkiLmZvcm1hdChuYW1lLCB0eXBlXykKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKCgpkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKToKICAgICIiIioqREVQUkVDQVRFRCoqCgogICAgU2VhcmNoIGZvciBhIG1vZHVsZS4KCiAgICBJZiBwYXRoIGlzIG9taXR0ZWQgb3IgTm9uZSwgc2VhcmNoIGZvciBhIGJ1aWx0LWluLCBmcm96ZW4gb3Igc3BlY2lhbAogICAgbW9kdWxlIGFuZCBjb250aW51ZSBzZWFyY2ggaW4gc3lzLnBhdGguIFRoZSBtb2R1bGUgbmFtZSBjYW5ub3QKICAgIGNvbnRhaW4gJy4nOyB0byBzZWFyY2ggZm9yIGEgc3VibW9kdWxlIG9mIGEgcGFja2FnZSwgcGFzcyB0aGUKICAgIHN1Ym1vZHVsZSBuYW1lIGFuZCB0aGUgcGFja2FnZSdzIF9fcGF0aF9fLgoKICAgICIiIgogICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiduYW1lJyBtdXN0IGJlIGEgc3RyLCBub3Qge30iLmZvcm1hdCh0eXBlKG5hbWUpKSkKICAgIGVsaWYgbm90IGlzaW5zdGFuY2UocGF0aCwgKHR5cGUoTm9uZSksIGxpc3QpKToKICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCIncGF0aCcgbXVzdCBiZSBOb25lIG9yIGEgbGlzdCwgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHt9Ii5mb3JtYXQodHlwZShwYXRoKSkpCgogICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgIGlmIGlzX2J1aWx0aW4obmFtZSk6CiAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCAoJycsICcnLCBDX0JVSUxUSU4pCiAgICAgICAgZWxpZiBpc19mcm96ZW4obmFtZSk6CiAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCAoJycsICcnLCBQWV9GUk9aRU4pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCgogICAgZm9yIGVudHJ5IGluIHBhdGg6CiAgICAgICAgcGFja2FnZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oZW50cnksIG5hbWUpCiAgICAgICAgZm9yIHN1ZmZpeCBpbiBbJy5weScsIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1swXV06CiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9uYW1lID0gJ19faW5pdF9fJyArIHN1ZmZpeAogICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ocGFja2FnZV9kaXJlY3RvcnksIHBhY2thZ2VfZmlsZV9uYW1lKQogICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHBhY2thZ2VfZGlyZWN0b3J5LCAoJycsICcnLCBQS0dfRElSRUNUT1JZKQogICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIHR5cGVfIGluIGdldF9zdWZmaXhlcygpOgogICAgICAgICAgICBmaWxlX25hbWUgPSBuYW1lICsgc3VmZml4CiAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihlbnRyeSwgZmlsZV9uYW1lKQogICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGJyZWFrICAjIEJyZWFrIG91dCBvZiBvdXRlciBsb29wIHdoZW4gYnJlYWtpbmcgb3V0IG9mIGlubmVyIGxvb3AuCiAgICBlbHNlOgogICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQoKICAgIGVuY29kaW5nID0gTm9uZQogICAgaWYgJ2InIG5vdCBpbiBtb2RlOgogICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICdyYicpIGFzIGZpbGU6CiAgICAgICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKGZpbGUucmVhZGxpbmUpWzBdCiAgICBmaWxlID0gb3BlbihmaWxlX3BhdGgsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nKQogICAgcmV0dXJuIGZpbGUsIGZpbGVfcGF0aCwgKHN1ZmZpeCwgbW9kZSwgdHlwZV8pCgoKZGVmIHJlbG9hZChtb2R1bGUpOgogICAgIiIiKipERVBSRUNBVEVEKioKCiAgICBSZWxvYWQgdGhlIG1vZHVsZSBhbmQgcmV0dXJuIGl0LgoKICAgIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGJlZm9yZS4KCiAgICAiIiIKICAgIHJldHVybiBpbXBvcnRsaWIucmVsb2FkKG1vZHVsZSkKCgpkZWYgaW5pdF9idWlsdGluKG5hbWUpOgogICAgIiIiKipERVBSRUNBVEVEKioKCiAgICBMb2FkIGFuZCByZXR1cm4gYSBidWlsdC1pbiBtb2R1bGUgYnkgbmFtZSwgb3IgTm9uZSBpcyBzdWNoIG1vZHVsZSBkb2Vzbid0CiAgICBleGlzdAogICAgIiIiCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIF9idWlsdGluX2Zyb21fbmFtZShuYW1lKQogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIHJldHVybiBOb25lCgoKaWYgY3JlYXRlX2R5bmFtaWM6CiAgICBkZWYgbG9hZF9keW5hbWljKG5hbWUsIHBhdGgsIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiKipERVBSRUNBVEVEKioKCiAgICAgICAgTG9hZCBhbiBleHRlbnNpb24gbW9kdWxlLgogICAgICAgICIiIgogICAgICAgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKG5hbWUsIHBhdGgpCgogICAgICAgICMgSXNzdWUgIzI0NzQ4OiBTa2lwIHRoZSBzeXMubW9kdWxlcyBjaGVjayBpbiBfbG9hZF9tb2R1bGVfc2hpbTsKICAgICAgICAjIGFsd2F5cyBsb2FkIG5ldyBleHRlbnNpb24KICAgICAgICBzcGVjID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKAogICAgICAgICAgICBuYW1lPW5hbWUsIGxvYWRlcj1sb2FkZXIsIG9yaWdpbj1wYXRoKQogICAgICAgIHJldHVybiBfbG9hZChzcGVjKQoKZWxzZToKICAgIGxvYWRfZHluYW1pYyA9IE5vbmUKUEsDBBQAAAAAAAIgo1bSojigIeUBACHlAQAKAAAAaW5zcGVjdC5weSIiIkdldCB1c2VmdWwgaW5mb3JtYXRpb24gZnJvbSBsaXZlIFB5dGhvbiBvYmplY3RzLgoKVGhpcyBtb2R1bGUgZW5jYXBzdWxhdGVzIHRoZSBpbnRlcmZhY2UgcHJvdmlkZWQgYnkgdGhlIGludGVybmFsIHNwZWNpYWwKYXR0cmlidXRlcyAoY29fKiwgaW1fKiwgdGJfKiwgZXRjLikgaW4gYSBmcmllbmRsaWVyIGZhc2hpb24uCkl0IGFsc28gcHJvdmlkZXMgc29tZSBoZWxwIGZvciBleGFtaW5pbmcgc291cmNlIGNvZGUgYW5kIGNsYXNzIGxheW91dC4KCkhlcmUgYXJlIHNvbWUgb2YgdGhlIHVzZWZ1bCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGU6CgogICAgaXNtb2R1bGUoKSwgaXNjbGFzcygpLCBpc21ldGhvZCgpLCBpc2Z1bmN0aW9uKCksIGlzZ2VuZXJhdG9yZnVuY3Rpb24oKSwKICAgICAgICBpc2dlbmVyYXRvcigpLCBpc3RyYWNlYmFjaygpLCBpc2ZyYW1lKCksIGlzY29kZSgpLCBpc2J1aWx0aW4oKSwKICAgICAgICBpc3JvdXRpbmUoKSAtIGNoZWNrIG9iamVjdCB0eXBlcwogICAgZ2V0bWVtYmVycygpIC0gZ2V0IG1lbWJlcnMgb2YgYW4gb2JqZWN0IHRoYXQgc2F0aXNmeSBhIGdpdmVuIGNvbmRpdGlvbgoKICAgIGdldGZpbGUoKSwgZ2V0c291cmNlZmlsZSgpLCBnZXRzb3VyY2UoKSAtIGZpbmQgYW4gb2JqZWN0J3Mgc291cmNlIGNvZGUKICAgIGdldGRvYygpLCBnZXRjb21tZW50cygpIC0gZ2V0IGRvY3VtZW50YXRpb24gb24gYW4gb2JqZWN0CiAgICBnZXRtb2R1bGUoKSAtIGRldGVybWluZSB0aGUgbW9kdWxlIHRoYXQgYW4gb2JqZWN0IGNhbWUgZnJvbQogICAgZ2V0Y2xhc3N0cmVlKCkgLSBhcnJhbmdlIGNsYXNzZXMgc28gYXMgdG8gcmVwcmVzZW50IHRoZWlyIGhpZXJhcmNoeQoKICAgIGdldGFyZ3ZhbHVlcygpLCBnZXRjYWxsYXJncygpIC0gZ2V0IGluZm8gYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCiAgICBnZXRmdWxsYXJnc3BlYygpIC0gc2FtZSwgd2l0aCBzdXBwb3J0IGZvciBQeXRob24gMyBmZWF0dXJlcwogICAgZm9ybWF0YXJndmFsdWVzKCkgLSBmb3JtYXQgYW4gYXJndW1lbnQgc3BlYwogICAgZ2V0b3V0ZXJmcmFtZXMoKSwgZ2V0aW5uZXJmcmFtZXMoKSAtIGdldCBpbmZvIGFib3V0IGZyYW1lcwogICAgY3VycmVudGZyYW1lKCkgLSBnZXQgdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUKICAgIHN0YWNrKCksIHRyYWNlKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMgb24gdGhlIHN0YWNrIG9yIGluIGEgdHJhY2ViYWNrCgogICAgc2lnbmF0dXJlKCkgLSBnZXQgYSBTaWduYXR1cmUgb2JqZWN0IGZvciB0aGUgY2FsbGFibGUKCiAgICBnZXRfYW5ub3RhdGlvbnMoKSAtIHNhZmVseSBjb21wdXRlIGFuIG9iamVjdCdzIGFubm90YXRpb25zCiIiIgoKIyBUaGlzIG1vZHVsZSBpcyBpbiB0aGUgcHVibGljIGRvbWFpbi4gIE5vIHdhcnJhbnRpZXMuCgpfX2F1dGhvcl9fID0gKCdLYS1QaW5nIFllZSA8cGluZ0BsZncub3JnPicsCiAgICAgICAgICAgICAgJ1l1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPicpCgpfX2FsbF9fID0gWwogICAgIkFyZ0luZm8iLAogICAgIkFyZ3VtZW50cyIsCiAgICAiQXR0cmlidXRlIiwKICAgICJCbG9ja0ZpbmRlciIsCiAgICAiQm91bmRBcmd1bWVudHMiLAogICAgIkNPUk9fQ0xPU0VEIiwKICAgICJDT1JPX0NSRUFURUQiLAogICAgIkNPUk9fUlVOTklORyIsCiAgICAiQ09ST19TVVNQRU5ERUQiLAogICAgIkNPX0FTWU5DX0dFTkVSQVRPUiIsCiAgICAiQ09fQ09ST1VUSU5FIiwKICAgICJDT19HRU5FUkFUT1IiLAogICAgIkNPX0lURVJBQkxFX0NPUk9VVElORSIsCiAgICAiQ09fTkVTVEVEIiwKICAgICJDT19ORVdMT0NBTFMiLAogICAgIkNPX05PRlJFRSIsCiAgICAiQ09fT1BUSU1JWkVEIiwKICAgICJDT19WQVJBUkdTIiwKICAgICJDT19WQVJLRVlXT1JEUyIsCiAgICAiQ2xhc3NGb3VuZEV4Y2VwdGlvbiIsCiAgICAiQ2xvc3VyZVZhcnMiLAogICAgIkVuZE9mQmxvY2siLAogICAgIkZyYW1lSW5mbyIsCiAgICAiRnVsbEFyZ1NwZWMiLAogICAgIkdFTl9DTE9TRUQiLAogICAgIkdFTl9DUkVBVEVEIiwKICAgICJHRU5fUlVOTklORyIsCiAgICAiR0VOX1NVU1BFTkRFRCIsCiAgICAiUGFyYW1ldGVyIiwKICAgICJTaWduYXR1cmUiLAogICAgIlRQRkxBR1NfSVNfQUJTVFJBQ1QiLAogICAgIlRyYWNlYmFjayIsCiAgICAiY2xhc3NpZnlfY2xhc3NfYXR0cnMiLAogICAgImNsZWFuZG9jIiwKICAgICJjdXJyZW50ZnJhbWUiLAogICAgImZpbmRzb3VyY2UiLAogICAgImZvcm1hdGFubm90YXRpb24iLAogICAgImZvcm1hdGFubm90YXRpb25yZWxhdGl2ZXRvIiwKICAgICJmb3JtYXRhcmd2YWx1ZXMiLAogICAgImdldF9hbm5vdGF0aW9ucyIsCiAgICAiZ2V0YWJzZmlsZSIsCiAgICAiZ2V0YXJncyIsCiAgICAiZ2V0YXJndmFsdWVzIiwKICAgICJnZXRhdHRyX3N0YXRpYyIsCiAgICAiZ2V0YmxvY2siLAogICAgImdldGNhbGxhcmdzIiwKICAgICJnZXRjbGFzc3RyZWUiLAogICAgImdldGNsb3N1cmV2YXJzIiwKICAgICJnZXRjb21tZW50cyIsCiAgICAiZ2V0Y29yb3V0aW5lbG9jYWxzIiwKICAgICJnZXRjb3JvdXRpbmVzdGF0ZSIsCiAgICAiZ2V0ZG9jIiwKICAgICJnZXRmaWxlIiwKICAgICJnZXRmcmFtZWluZm8iLAogICAgImdldGZ1bGxhcmdzcGVjIiwKICAgICJnZXRnZW5lcmF0b3Jsb2NhbHMiLAogICAgImdldGdlbmVyYXRvcnN0YXRlIiwKICAgICJnZXRpbm5lcmZyYW1lcyIsCiAgICAiZ2V0bGluZW5vIiwKICAgICJnZXRtZW1iZXJzIiwKICAgICJnZXRtZW1iZXJzX3N0YXRpYyIsCiAgICAiZ2V0bW9kdWxlIiwKICAgICJnZXRtb2R1bGVuYW1lIiwKICAgICJnZXRtcm8iLAogICAgImdldG91dGVyZnJhbWVzIiwKICAgICJnZXRzb3VyY2UiLAogICAgImdldHNvdXJjZWZpbGUiLAogICAgImdldHNvdXJjZWxpbmVzIiwKICAgICJpbmRlbnRzaXplIiwKICAgICJpc2Fic3RyYWN0IiwKICAgICJpc2FzeW5jZ2VuIiwKICAgICJpc2FzeW5jZ2VuZnVuY3Rpb24iLAogICAgImlzYXdhaXRhYmxlIiwKICAgICJpc2J1aWx0aW4iLAogICAgImlzY2xhc3MiLAogICAgImlzY29kZSIsCiAgICAiaXNjb3JvdXRpbmUiLAogICAgImlzY29yb3V0aW5lZnVuY3Rpb24iLAogICAgImlzZGF0YWRlc2NyaXB0b3IiLAogICAgImlzZnJhbWUiLAogICAgImlzZnVuY3Rpb24iLAogICAgImlzZ2VuZXJhdG9yIiwKICAgICJpc2dlbmVyYXRvcmZ1bmN0aW9uIiwKICAgICJpc2dldHNldGRlc2NyaXB0b3IiLAogICAgImlzbWVtYmVyZGVzY3JpcHRvciIsCiAgICAiaXNtZXRob2QiLAogICAgImlzbWV0aG9kZGVzY3JpcHRvciIsCiAgICAiaXNtZXRob2R3cmFwcGVyIiwKICAgICJpc21vZHVsZSIsCiAgICAiaXNyb3V0aW5lIiwKICAgICJpc3RyYWNlYmFjayIsCiAgICAic2lnbmF0dXJlIiwKICAgICJzdGFjayIsCiAgICAidHJhY2UiLAogICAgInVud3JhcCIsCiAgICAid2Fsa3RyZWUiLApdCgoKaW1wb3J0IGFiYwppbXBvcnQgYXN0CmltcG9ydCBkaXMKaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwppbXBvcnQgZW51bQppbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCBsaW5lY2FjaGUKaW1wb3J0IG9zCmltcG9ydCByZQppbXBvcnQgc3lzCmltcG9ydCB0b2tlbml6ZQppbXBvcnQgdG9rZW4KaW1wb3J0IHR5cGVzCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IGJ1aWx0aW5zCmZyb20ga2V5d29yZCBpbXBvcnQgaXNrZXl3b3JkCmZyb20gb3BlcmF0b3IgaW1wb3J0IGF0dHJnZXR0ZXIKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgT3JkZXJlZERpY3QKCiMgQ3JlYXRlIGNvbnN0YW50cyBmb3IgdGhlIGNvbXBpbGVyIGZsYWdzIGluIEluY2x1ZGUvY29kZS5oCiMgV2UgdHJ5IHRvIGdldCB0aGVtIGZyb20gZGlzIHRvIGF2b2lkIGR1cGxpY2F0aW9uCm1vZF9kaWN0ID0gZ2xvYmFscygpCmZvciBrLCB2IGluIGRpcy5DT01QSUxFUl9GTEFHX05BTUVTLml0ZW1zKCk6CiAgICBtb2RfZGljdFsiQ09fIiArIHZdID0gawpkZWwgaywgdiwgbW9kX2RpY3QKCiMgU2VlIEluY2x1ZGUvb2JqZWN0LmgKVFBGTEFHU19JU19BQlNUUkFDVCA9IDEgPDwgMjAKCgpkZWYgZ2V0X2Fubm90YXRpb25zKG9iaiwgKiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZXZhbF9zdHI9RmFsc2UpOgogICAgIiIiQ29tcHV0ZSB0aGUgYW5ub3RhdGlvbnMgZGljdCBmb3IgYW4gb2JqZWN0LgoKICAgIG9iaiBtYXkgYmUgYSBjYWxsYWJsZSwgY2xhc3MsIG9yIG1vZHVsZS4KICAgIFBhc3NpbmcgaW4gYW4gb2JqZWN0IG9mIGFueSBvdGhlciB0eXBlIHJhaXNlcyBUeXBlRXJyb3IuCgogICAgUmV0dXJucyBhIGRpY3QuICBnZXRfYW5ub3RhdGlvbnMoKSByZXR1cm5zIGEgbmV3IGRpY3QgZXZlcnkgdGltZQogICAgaXQncyBjYWxsZWQ7IGNhbGxpbmcgaXQgdHdpY2Ugb24gdGhlIHNhbWUgb2JqZWN0IHdpbGwgcmV0dXJuIHR3bwogICAgZGlmZmVyZW50IGJ1dCBlcXVpdmFsZW50IGRpY3RzLgoKICAgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBzZXZlcmFsIGRldGFpbHMgZm9yIHlvdToKCiAgICAgICogSWYgZXZhbF9zdHIgaXMgdHJ1ZSwgdmFsdWVzIG9mIHR5cGUgc3RyIHdpbGwKICAgICAgICBiZSB1bi1zdHJpbmdpemVkIHVzaW5nIGV2YWwoKS4gIFRoaXMgaXMgaW50ZW5kZWQKICAgICAgICBmb3IgdXNlIHdpdGggc3RyaW5naXplZCBhbm5vdGF0aW9ucwogICAgICAgICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucyIpLgogICAgICAqIElmIG9iaiBkb2Vzbid0IGhhdmUgYW4gYW5ub3RhdGlvbnMgZGljdCwgcmV0dXJucyBhbgogICAgICAgIGVtcHR5IGRpY3QuICAoRnVuY3Rpb25zIGFuZCBtZXRob2RzIGFsd2F5cyBoYXZlIGFuCiAgICAgICAgYW5ub3RhdGlvbnMgZGljdDsgY2xhc3NlcywgbW9kdWxlcywgYW5kIG90aGVyIHR5cGVzIG9mCiAgICAgICAgY2FsbGFibGVzIG1heSBub3QuKQogICAgICAqIElnbm9yZXMgaW5oZXJpdGVkIGFubm90YXRpb25zIG9uIGNsYXNzZXMuICBJZiBhIGNsYXNzCiAgICAgICAgZG9lc24ndCBoYXZlIGl0cyBvd24gYW5ub3RhdGlvbnMgZGljdCwgcmV0dXJucyBhbiBlbXB0eSBkaWN0LgogICAgICAqIEFsbCBhY2Nlc3NlcyB0byBvYmplY3QgbWVtYmVycyBhbmQgZGljdCB2YWx1ZXMgYXJlIGRvbmUKICAgICAgICB1c2luZyBnZXRhdHRyKCkgYW5kIGRpY3QuZ2V0KCkgZm9yIHNhZmV0eS4KICAgICAgKiBBbHdheXMsIGFsd2F5cywgYWx3YXlzIHJldHVybnMgYSBmcmVzaGx5LWNyZWF0ZWQgZGljdC4KCiAgICBldmFsX3N0ciBjb250cm9scyB3aGV0aGVyIG9yIG5vdCB2YWx1ZXMgb2YgdHlwZSBzdHIgYXJlIHJlcGxhY2VkCiAgICB3aXRoIHRoZSByZXN1bHQgb2YgY2FsbGluZyBldmFsKCkgb24gdGhvc2UgdmFsdWVzOgoKICAgICAgKiBJZiBldmFsX3N0ciBpcyB0cnVlLCBldmFsKCkgaXMgY2FsbGVkIG9uIHZhbHVlcyBvZiB0eXBlIHN0ci4KICAgICAgKiBJZiBldmFsX3N0ciBpcyBmYWxzZSAodGhlIGRlZmF1bHQpLCB2YWx1ZXMgb2YgdHlwZSBzdHIgYXJlIHVuY2hhbmdlZC4KCiAgICBnbG9iYWxzIGFuZCBsb2NhbHMgYXJlIHBhc3NlZCBpbiB0byBldmFsKCk7IHNlZSB0aGUgZG9jdW1lbnRhdGlvbgogICAgZm9yIGV2YWwoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIElmIGVpdGhlciBnbG9iYWxzIG9yIGxvY2FscyBpcwogICAgTm9uZSwgdGhpcyBmdW5jdGlvbiBtYXkgcmVwbGFjZSB0aGF0IHZhbHVlIHdpdGggYSBjb250ZXh0LXNwZWNpZmljCiAgICBkZWZhdWx0LCBjb250aW5nZW50IG9uIHR5cGUob2JqKToKCiAgICAgICogSWYgb2JqIGlzIGEgbW9kdWxlLCBnbG9iYWxzIGRlZmF1bHRzIHRvIG9iai5fX2RpY3RfXy4KICAgICAgKiBJZiBvYmogaXMgYSBjbGFzcywgZ2xvYmFscyBkZWZhdWx0cyB0bwogICAgICAgIHN5cy5tb2R1bGVzW29iai5fX21vZHVsZV9fXS5fX2RpY3RfXyBhbmQgbG9jYWxzCiAgICAgICAgZGVmYXVsdHMgdG8gdGhlIG9iaiBjbGFzcyBuYW1lc3BhY2UuCiAgICAgICogSWYgb2JqIGlzIGEgY2FsbGFibGUsIGdsb2JhbHMgZGVmYXVsdHMgdG8gb2JqLl9fZ2xvYmFsc19fLAogICAgICAgIGFsdGhvdWdoIGlmIG9iaiBpcyBhIHdyYXBwZWQgZnVuY3Rpb24gKHVzaW5nCiAgICAgICAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyKCkpIGl0IGlzIGZpcnN0IHVud3JhcHBlZC4KICAgICIiIgogICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgogICAgICAgICMgY2xhc3MKICAgICAgICBvYmpfZGljdCA9IGdldGF0dHIob2JqLCAnX19kaWN0X18nLCBOb25lKQogICAgICAgIGlmIG9ial9kaWN0IGFuZCBoYXNhdHRyKG9ial9kaWN0LCAnZ2V0Jyk6CiAgICAgICAgICAgIGFubiA9IG9ial9kaWN0LmdldCgnX19hbm5vdGF0aW9uc19fJywgTm9uZSkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhbm4sIHR5cGVzLkdldFNldERlc2NyaXB0b3JUeXBlKToKICAgICAgICAgICAgICAgIGFubiA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBhbm4gPSBOb25lCgogICAgICAgIG9ial9nbG9iYWxzID0gTm9uZQogICAgICAgIG1vZHVsZV9uYW1lID0gZ2V0YXR0cihvYmosICdfX21vZHVsZV9fJywgTm9uZSkKICAgICAgICBpZiBtb2R1bGVfbmFtZToKICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXMuZ2V0KG1vZHVsZV9uYW1lLCBOb25lKQogICAgICAgICAgICBpZiBtb2R1bGU6CiAgICAgICAgICAgICAgICBvYmpfZ2xvYmFscyA9IGdldGF0dHIobW9kdWxlLCAnX19kaWN0X18nLCBOb25lKQogICAgICAgIG9ial9sb2NhbHMgPSBkaWN0KHZhcnMob2JqKSkKICAgICAgICB1bndyYXAgPSBvYmoKICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1vZHVsZVR5cGUpOgogICAgICAgICMgbW9kdWxlCiAgICAgICAgYW5uID0gZ2V0YXR0cihvYmosICdfX2Fubm90YXRpb25zX18nLCBOb25lKQogICAgICAgIG9ial9nbG9iYWxzID0gZ2V0YXR0cihvYmosICdfX2RpY3RfXycpCiAgICAgICAgb2JqX2xvY2FscyA9IE5vbmUKICAgICAgICB1bndyYXAgPSBOb25lCiAgICBlbGlmIGNhbGxhYmxlKG9iaik6CiAgICAgICAgIyB0aGlzIGluY2x1ZGVzIHR5cGVzLkZ1bmN0aW9uLCB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlLAogICAgICAgICMgdHlwZXMuQnVpbHRpbk1ldGhvZFR5cGUsIGZ1bmN0b29scy5wYXJ0aWFsLCBmdW5jdG9vbHMuc2luZ2xlZGlzcGF0Y2gsCiAgICAgICAgIyAiY2xhc3MgZnVuY2xpa2UiIGZyb20gTGliL3Rlc3QvdGVzdF9pbnNwZWN0Li4uIG9uIGFuZCBvbiBpdCBnb2VzLgogICAgICAgIGFubiA9IGdldGF0dHIob2JqLCAnX19hbm5vdGF0aW9uc19fJywgTm9uZSkKICAgICAgICBvYmpfZ2xvYmFscyA9IGdldGF0dHIob2JqLCAnX19nbG9iYWxzX18nLCBOb25lKQogICAgICAgIG9ial9sb2NhbHMgPSBOb25lCiAgICAgICAgdW53cmFwID0gb2JqCiAgICBlbHNlOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIntvYmohcn0gaXMgbm90IGEgbW9kdWxlLCBjbGFzcywgb3IgY2FsbGFibGUuIikKCiAgICBpZiBhbm4gaXMgTm9uZToKICAgICAgICByZXR1cm4ge30KCiAgICBpZiBub3QgaXNpbnN0YW5jZShhbm4sIGRpY3QpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJ7b2JqIXJ9Ll9fYW5ub3RhdGlvbnNfXyBpcyBuZWl0aGVyIGEgZGljdCBub3IgTm9uZSIpCgogICAgaWYgbm90IGFubjoKICAgICAgICByZXR1cm4ge30KCiAgICBpZiBub3QgZXZhbF9zdHI6CiAgICAgICAgcmV0dXJuIGRpY3QoYW5uKQoKICAgIGlmIHVud3JhcCBpcyBub3QgTm9uZToKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBpZiBoYXNhdHRyKHVud3JhcCwgJ19fd3JhcHBlZF9fJyk6CiAgICAgICAgICAgICAgICB1bndyYXAgPSB1bndyYXAuX193cmFwcGVkX18KICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodW53cmFwLCBmdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgICAgICAgICB1bndyYXAgPSB1bndyYXAuZnVuYwogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBoYXNhdHRyKHVud3JhcCwgIl9fZ2xvYmFsc19fIik6CiAgICAgICAgICAgIG9ial9nbG9iYWxzID0gdW53cmFwLl9fZ2xvYmFsc19fCgogICAgaWYgZ2xvYmFscyBpcyBOb25lOgogICAgICAgIGdsb2JhbHMgPSBvYmpfZ2xvYmFscwogICAgaWYgbG9jYWxzIGlzIE5vbmU6CiAgICAgICAgbG9jYWxzID0gb2JqX2xvY2FscwoKICAgIHJldHVybl92YWx1ZSA9IHtrZXk6CiAgICAgICAgdmFsdWUgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cikgZWxzZSBldmFsKHZhbHVlLCBnbG9iYWxzLCBsb2NhbHMpCiAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYW5uLml0ZW1zKCkgfQogICAgcmV0dXJuIHJldHVybl92YWx1ZQoKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdHlwZS1jaGVja2luZwpkZWYgaXNtb2R1bGUob2JqZWN0KToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBtb2R1bGUuCgogICAgTW9kdWxlIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIF9fY2FjaGVkX18gICAgICBwYXRobmFtZSB0byBieXRlIGNvbXBpbGVkIGZpbGUKICAgICAgICBfX2RvY19fICAgICAgICAgZG9jdW1lbnRhdGlvbiBzdHJpbmcKICAgICAgICBfX2ZpbGVfXyAgICAgICAgZmlsZW5hbWUgKG1pc3NpbmcgZm9yIGJ1aWx0LWluIG1vZHVsZXMpIiIiCiAgICByZXR1cm4gaXNpbnN0YW5jZShvYmplY3QsIHR5cGVzLk1vZHVsZVR5cGUpCgpkZWYgaXNjbGFzcyhvYmplY3QpOgogICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzLgoKICAgIENsYXNzIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIF9fZG9jX18gICAgICAgICBkb2N1bWVudGF0aW9uIHN0cmluZwogICAgICAgIF9fbW9kdWxlX18gICAgICBuYW1lIG9mIG1vZHVsZSBpbiB3aGljaCB0aGlzIGNsYXNzIHdhcyBkZWZpbmVkIiIiCiAgICByZXR1cm4gaXNpbnN0YW5jZShvYmplY3QsIHR5cGUpCgpkZWYgaXNtZXRob2Qob2JqZWN0KToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gaW5zdGFuY2UgbWV0aG9kLgoKICAgIEluc3RhbmNlIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgdGhlc2UgYXR0cmlidXRlczoKICAgICAgICBfX2RvY19fICAgICAgICAgZG9jdW1lbnRhdGlvbiBzdHJpbmcKICAgICAgICBfX25hbWVfXyAgICAgICAgbmFtZSB3aXRoIHdoaWNoIHRoaXMgbWV0aG9kIHdhcyBkZWZpbmVkCiAgICAgICAgX19mdW5jX18gICAgICAgIGZ1bmN0aW9uIG9iamVjdCBjb250YWluaW5nIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZAogICAgICAgIF9fc2VsZl9fICAgICAgICBpbnN0YW5jZSB0byB3aGljaCB0aGlzIG1ldGhvZCBpcyBib3VuZCIiIgogICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5NZXRob2RUeXBlKQoKZGVmIGlzbWV0aG9kZGVzY3JpcHRvcihvYmplY3QpOgogICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIG1ldGhvZCBkZXNjcmlwdG9yLgoKICAgIEJ1dCBub3QgaWYgaXNtZXRob2QoKSBvciBpc2NsYXNzKCkgb3IgaXNmdW5jdGlvbigpIGFyZSB0cnVlLgoKICAgIFRoaXMgaXMgbmV3IGluIFB5dGhvbiAyLjIsIGFuZCwgZm9yIGV4YW1wbGUsIGlzIHRydWUgb2YgaW50Ll9fYWRkX18uCiAgICBBbiBvYmplY3QgcGFzc2luZyB0aGlzIHRlc3QgaGFzIGEgX19nZXRfXyBhdHRyaWJ1dGUgYnV0IG5vdCBhIF9fc2V0X18KICAgIGF0dHJpYnV0ZSwgYnV0IGJleW9uZCB0aGF0IHRoZSBzZXQgb2YgYXR0cmlidXRlcyB2YXJpZXMuICBfX25hbWVfXyBpcwogICAgdXN1YWxseSBzZW5zaWJsZSwgYW5kIF9fZG9jX18gb2Z0ZW4gaXMuCgogICAgTWV0aG9kcyBpbXBsZW1lbnRlZCB2aWEgZGVzY3JpcHRvcnMgdGhhdCBhbHNvIHBhc3Mgb25lIG9mIHRoZSBvdGhlcgogICAgdGVzdHMgcmV0dXJuIGZhbHNlIGZyb20gdGhlIGlzbWV0aG9kZGVzY3JpcHRvcigpIHRlc3QsIHNpbXBseSBiZWNhdXNlCiAgICB0aGUgb3RoZXIgdGVzdHMgcHJvbWlzZSBtb3JlIC0tIHlvdSBjYW4sIGUuZy4sIGNvdW50IG9uIGhhdmluZyB0aGUKICAgIF9fZnVuY19fIGF0dHJpYnV0ZSAoZXRjKSB3aGVuIGFuIG9iamVjdCBwYXNzZXMgaXNtZXRob2QoKS4iIiIKICAgIGlmIGlzY2xhc3Mob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpIG9yIGlzZnVuY3Rpb24ob2JqZWN0KToKICAgICAgICAjIG11dHVhbCBleGNsdXNpb24KICAgICAgICByZXR1cm4gRmFsc2UKICAgIHRwID0gdHlwZShvYmplY3QpCiAgICByZXR1cm4gaGFzYXR0cih0cCwgIl9fZ2V0X18iKSBhbmQgbm90IGhhc2F0dHIodHAsICJfX3NldF9fIikKCmRlZiBpc2RhdGFkZXNjcmlwdG9yKG9iamVjdCk6CiAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgZGF0YSBkZXNjcmlwdG9yLgoKICAgIERhdGEgZGVzY3JpcHRvcnMgaGF2ZSBhIF9fc2V0X18gb3IgYSBfX2RlbGV0ZV9fIGF0dHJpYnV0ZS4gIEV4YW1wbGVzIGFyZQogICAgcHJvcGVydGllcyAoZGVmaW5lZCBpbiBQeXRob24pIGFuZCBnZXRzZXRzIGFuZCBtZW1iZXJzIChkZWZpbmVkIGluIEMpLgogICAgVHlwaWNhbGx5LCBkYXRhIGRlc2NyaXB0b3JzIHdpbGwgYWxzbyBoYXZlIF9fbmFtZV9fIGFuZCBfX2RvY19fIGF0dHJpYnV0ZXMKICAgIChwcm9wZXJ0aWVzLCBnZXRzZXRzLCBhbmQgbWVtYmVycyBoYXZlIGJvdGggb2YgdGhlc2UgYXR0cmlidXRlcyksIGJ1dCB0aGlzCiAgICBpcyBub3QgZ3VhcmFudGVlZC4iIiIKICAgIGlmIGlzY2xhc3Mob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpIG9yIGlzZnVuY3Rpb24ob2JqZWN0KToKICAgICAgICAjIG11dHVhbCBleGNsdXNpb24KICAgICAgICByZXR1cm4gRmFsc2UKICAgIHRwID0gdHlwZShvYmplY3QpCiAgICByZXR1cm4gaGFzYXR0cih0cCwgIl9fc2V0X18iKSBvciBoYXNhdHRyKHRwLCAiX19kZWxldGVfXyIpCgppZiBoYXNhdHRyKHR5cGVzLCAnTWVtYmVyRGVzY3JpcHRvclR5cGUnKToKICAgICMgQ1B5dGhvbiBhbmQgZXF1aXZhbGVudAogICAgZGVmIGlzbWVtYmVyZGVzY3JpcHRvcihvYmplY3QpOgogICAgICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBtZW1iZXIgZGVzY3JpcHRvci4KCiAgICAgICAgTWVtYmVyIGRlc2NyaXB0b3JzIGFyZSBzcGVjaWFsaXplZCBkZXNjcmlwdG9ycyBkZWZpbmVkIGluIGV4dGVuc2lvbgogICAgICAgIG1vZHVsZXMuIiIiCiAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5NZW1iZXJEZXNjcmlwdG9yVHlwZSkKZWxzZToKICAgICMgT3RoZXIgaW1wbGVtZW50YXRpb25zCiAgICBkZWYgaXNtZW1iZXJkZXNjcmlwdG9yKG9iamVjdCk6CiAgICAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIG1lbWJlciBkZXNjcmlwdG9yLgoKICAgICAgICBNZW1iZXIgZGVzY3JpcHRvcnMgYXJlIHNwZWNpYWxpemVkIGRlc2NyaXB0b3JzIGRlZmluZWQgaW4gZXh0ZW5zaW9uCiAgICAgICAgbW9kdWxlcy4iIiIKICAgICAgICByZXR1cm4gRmFsc2UKCmlmIGhhc2F0dHIodHlwZXMsICdHZXRTZXREZXNjcmlwdG9yVHlwZScpOgogICAgIyBDUHl0aG9uIGFuZCBlcXVpdmFsZW50CiAgICBkZWYgaXNnZXRzZXRkZXNjcmlwdG9yKG9iamVjdCk6CiAgICAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdldHNldCBkZXNjcmlwdG9yLgoKICAgICAgICBnZXRzZXQgZGVzY3JpcHRvcnMgYXJlIHNwZWNpYWxpemVkIGRlc2NyaXB0b3JzIGRlZmluZWQgaW4gZXh0ZW5zaW9uCiAgICAgICAgbW9kdWxlcy4iIiIKICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmplY3QsIHR5cGVzLkdldFNldERlc2NyaXB0b3JUeXBlKQplbHNlOgogICAgIyBPdGhlciBpbXBsZW1lbnRhdGlvbnMKICAgIGRlZiBpc2dldHNldGRlc2NyaXB0b3Iob2JqZWN0KToKICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgZ2V0c2V0IGRlc2NyaXB0b3IuCgogICAgICAgIGdldHNldCBkZXNjcmlwdG9ycyBhcmUgc3BlY2lhbGl6ZWQgZGVzY3JpcHRvcnMgZGVmaW5lZCBpbiBleHRlbnNpb24KICAgICAgICBtb2R1bGVzLiIiIgogICAgICAgIHJldHVybiBGYWxzZQoKZGVmIGlzZnVuY3Rpb24ob2JqZWN0KToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24uCgogICAgRnVuY3Rpb24gb2JqZWN0cyBwcm92aWRlIHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAgICAgX19kb2NfXyAgICAgICAgIGRvY3VtZW50YXRpb24gc3RyaW5nCiAgICAgICAgX19uYW1lX18gICAgICAgIG5hbWUgd2l0aCB3aGljaCB0aGlzIGZ1bmN0aW9uIHdhcyBkZWZpbmVkCiAgICAgICAgX19jb2RlX18gICAgICAgIGNvZGUgb2JqZWN0IGNvbnRhaW5pbmcgY29tcGlsZWQgZnVuY3Rpb24gYnl0ZWNvZGUKICAgICAgICBfX2RlZmF1bHRzX18gICAgdHVwbGUgb2YgYW55IGRlZmF1bHQgdmFsdWVzIGZvciBhcmd1bWVudHMKICAgICAgICBfX2dsb2JhbHNfXyAgICAgZ2xvYmFsIG5hbWVzcGFjZSBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIHdhcyBkZWZpbmVkCiAgICAgICAgX19hbm5vdGF0aW9uc19fIGRpY3Qgb2YgcGFyYW1ldGVyIGFubm90YXRpb25zCiAgICAgICAgX19rd2RlZmF1bHRzX18gIGRpY3Qgb2Yga2V5d29yZCBvbmx5IHBhcmFtZXRlcnMgd2l0aCBkZWZhdWx0cyIiIgogICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5GdW5jdGlvblR5cGUpCgpkZWYgX2hhc19jb2RlX2ZsYWcoZiwgZmxhZyk6CiAgICAiIiJSZXR1cm4gdHJ1ZSBpZiBgYGZgYCBpcyBhIGZ1bmN0aW9uIChvciBhIG1ldGhvZCBvciBmdW5jdG9vbHMucGFydGlhbAogICAgd3JhcHBlciB3cmFwcGluZyBhIGZ1bmN0aW9uKSB3aG9zZSBjb2RlIG9iamVjdCBoYXMgdGhlIGdpdmVuIGBgZmxhZ2BgCiAgICBzZXQgaW4gaXRzIGZsYWdzLiIiIgogICAgd2hpbGUgaXNtZXRob2QoZik6CiAgICAgICAgZiA9IGYuX19mdW5jX18KICAgIGYgPSBmdW5jdG9vbHMuX3Vud3JhcF9wYXJ0aWFsKGYpCiAgICBpZiBub3QgKGlzZnVuY3Rpb24oZikgb3IgX3NpZ25hdHVyZV9pc19mdW5jdGlvbmxpa2UoZikpOgogICAgICAgIHJldHVybiBGYWxzZQogICAgcmV0dXJuIGJvb2woZi5fX2NvZGVfXy5jb19mbGFncyAmIGZsYWcpCgpkZWYgaXNnZW5lcmF0b3JmdW5jdGlvbihvYmopOgogICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIHVzZXItZGVmaW5lZCBnZW5lcmF0b3IgZnVuY3Rpb24uCgogICAgR2VuZXJhdG9yIGZ1bmN0aW9uIG9iamVjdHMgcHJvdmlkZSB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIGZ1bmN0aW9ucy4KICAgIFNlZSBoZWxwKGlzZnVuY3Rpb24pIGZvciBhIGxpc3Qgb2YgYXR0cmlidXRlcy4iIiIKICAgIHJldHVybiBfaGFzX2NvZGVfZmxhZyhvYmosIENPX0dFTkVSQVRPUikKCmRlZiBpc2Nvcm91dGluZWZ1bmN0aW9uKG9iaik6CiAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lIGZ1bmN0aW9uLgoKICAgIENvcm91dGluZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIiBzeW50YXguCiAgICAiIiIKICAgIHJldHVybiBfaGFzX2NvZGVfZmxhZyhvYmosIENPX0NPUk9VVElORSkKCmRlZiBpc2FzeW5jZ2VuZnVuY3Rpb24ob2JqKToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbi4KCiAgICBBc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiCiAgICBzeW50YXggYW5kIGhhdmUgInlpZWxkIiBleHByZXNzaW9ucyBpbiB0aGVpciBib2R5LgogICAgIiIiCiAgICByZXR1cm4gX2hhc19jb2RlX2ZsYWcob2JqLCBDT19BU1lOQ19HRU5FUkFUT1IpCgpkZWYgaXNhc3luY2dlbihvYmplY3QpOgogICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLiIiIgogICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5Bc3luY0dlbmVyYXRvclR5cGUpCgpkZWYgaXNnZW5lcmF0b3Iob2JqZWN0KToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBnZW5lcmF0b3IuCgogICAgR2VuZXJhdG9yIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIF9faXRlcl9fICAgICAgICBkZWZpbmVkIHRvIHN1cHBvcnQgaXRlcmF0aW9uIG92ZXIgY29udGFpbmVyCiAgICAgICAgY2xvc2UgICAgICAgICAgIHJhaXNlcyBhIG5ldyBHZW5lcmF0b3JFeGl0IGV4Y2VwdGlvbiBpbnNpZGUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvciB0byB0ZXJtaW5hdGUgdGhlIGl0ZXJhdGlvbgogICAgICAgIGdpX2NvZGUgICAgICAgICBjb2RlIG9iamVjdAogICAgICAgIGdpX2ZyYW1lICAgICAgICBmcmFtZSBvYmplY3Qgb3IgcG9zc2libHkgTm9uZSBvbmNlIHRoZSBnZW5lcmF0b3IgaGFzCiAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gZXhoYXVzdGVkCiAgICAgICAgZ2lfcnVubmluZyAgICAgIHNldCB0byAxIHdoZW4gZ2VuZXJhdG9yIGlzIGV4ZWN1dGluZywgMCBvdGhlcndpc2UKICAgICAgICBuZXh0ICAgICAgICAgICAgcmV0dXJuIHRoZSBuZXh0IGl0ZW0gZnJvbSB0aGUgY29udGFpbmVyCiAgICAgICAgc2VuZCAgICAgICAgICAgIHJlc3VtZXMgdGhlIGdlbmVyYXRvciBhbmQgInNlbmRzIiBhIHZhbHVlIHRoYXQgYmVjb21lcwogICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVzdWx0IG9mIHRoZSBjdXJyZW50IHlpZWxkLWV4cHJlc3Npb24KICAgICAgICB0aHJvdyAgICAgICAgICAgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24gaW5zaWRlIHRoZSBnZW5lcmF0b3IiIiIKICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuR2VuZXJhdG9yVHlwZSkKCmRlZiBpc2Nvcm91dGluZShvYmplY3QpOgogICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGNvcm91dGluZS4iIiIKICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQ29yb3V0aW5lVHlwZSkKCmRlZiBpc2F3YWl0YWJsZShvYmplY3QpOgogICAgIiIiUmV0dXJuIHRydWUgaWYgb2JqZWN0IGNhbiBiZSBwYXNzZWQgdG8gYW4gYGBhd2FpdGBgIGV4cHJlc3Npb24uIiIiCiAgICByZXR1cm4gKGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5Db3JvdXRpbmVUeXBlKSBvcgogICAgICAgICAgICBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuR2VuZXJhdG9yVHlwZSkgYW5kCiAgICAgICAgICAgICAgICBib29sKG9iamVjdC5naV9jb2RlLmNvX2ZsYWdzICYgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSBvcgogICAgICAgICAgICBpc2luc3RhbmNlKG9iamVjdCwgY29sbGVjdGlvbnMuYWJjLkF3YWl0YWJsZSkpCgpkZWYgaXN0cmFjZWJhY2sob2JqZWN0KToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSB0cmFjZWJhY2suCgogICAgVHJhY2ViYWNrIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIHRiX2ZyYW1lICAgICAgICBmcmFtZSBvYmplY3QgYXQgdGhpcyBsZXZlbAogICAgICAgIHRiX2xhc3RpICAgICAgICBpbmRleCBvZiBsYXN0IGF0dGVtcHRlZCBpbnN0cnVjdGlvbiBpbiBieXRlY29kZQogICAgICAgIHRiX2xpbmVubyAgICAgICBjdXJyZW50IGxpbmUgbnVtYmVyIGluIFB5dGhvbiBzb3VyY2UgY29kZQogICAgICAgIHRiX25leHQgICAgICAgICBuZXh0IGlubmVyIHRyYWNlYmFjayBvYmplY3QgKGNhbGxlZCBieSB0aGlzIGxldmVsKSIiIgogICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5UcmFjZWJhY2tUeXBlKQoKZGVmIGlzZnJhbWUob2JqZWN0KToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBmcmFtZSBvYmplY3QuCgogICAgRnJhbWUgb2JqZWN0cyBwcm92aWRlIHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAgICAgZl9iYWNrICAgICAgICAgIG5leHQgb3V0ZXIgZnJhbWUgb2JqZWN0ICh0aGlzIGZyYW1lJ3MgY2FsbGVyKQogICAgICAgIGZfYnVpbHRpbnMgICAgICBidWlsdC1pbiBuYW1lc3BhY2Ugc2VlbiBieSB0aGlzIGZyYW1lCiAgICAgICAgZl9jb2RlICAgICAgICAgIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXMgZnJhbWUKICAgICAgICBmX2dsb2JhbHMgICAgICAgZ2xvYmFsIG5hbWVzcGFjZSBzZWVuIGJ5IHRoaXMgZnJhbWUKICAgICAgICBmX2xhc3RpICAgICAgICAgaW5kZXggb2YgbGFzdCBhdHRlbXB0ZWQgaW5zdHJ1Y3Rpb24gaW4gYnl0ZWNvZGUKICAgICAgICBmX2xpbmVubyAgICAgICAgY3VycmVudCBsaW5lIG51bWJlciBpbiBQeXRob24gc291cmNlIGNvZGUKICAgICAgICBmX2xvY2FscyAgICAgICAgbG9jYWwgbmFtZXNwYWNlIHNlZW4gYnkgdGhpcyBmcmFtZQogICAgICAgIGZfdHJhY2UgICAgICAgICB0cmFjaW5nIGZ1bmN0aW9uIGZvciB0aGlzIGZyYW1lLCBvciBOb25lIiIiCiAgICByZXR1cm4gaXNpbnN0YW5jZShvYmplY3QsIHR5cGVzLkZyYW1lVHlwZSkKCmRlZiBpc2NvZGUob2JqZWN0KToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBjb2RlIG9iamVjdC4KCiAgICBDb2RlIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIGNvX2FyZ2NvdW50ICAgICAgICAgbnVtYmVyIG9mIGFyZ3VtZW50cyAobm90IGluY2x1ZGluZyAqLCAqKiBhcmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBrZXl3b3JkIG9ubHkgYXJndW1lbnRzKQogICAgICAgIGNvX2NvZGUgICAgICAgICAgICAgc3RyaW5nIG9mIHJhdyBjb21waWxlZCBieXRlY29kZQogICAgICAgIGNvX2NlbGx2YXJzICAgICAgICAgdHVwbGUgb2YgbmFtZXMgb2YgY2VsbCB2YXJpYWJsZXMKICAgICAgICBjb19jb25zdHMgICAgICAgICAgIHR1cGxlIG9mIGNvbnN0YW50cyB1c2VkIGluIHRoZSBieXRlY29kZQogICAgICAgIGNvX2ZpbGVuYW1lICAgICAgICAgbmFtZSBvZiBmaWxlIGluIHdoaWNoIHRoaXMgY29kZSBvYmplY3Qgd2FzIGNyZWF0ZWQKICAgICAgICBjb19maXJzdGxpbmVubyAgICAgIG51bWJlciBvZiBmaXJzdCBsaW5lIGluIFB5dGhvbiBzb3VyY2UgY29kZQogICAgICAgIGNvX2ZsYWdzICAgICAgICAgICAgYml0bWFwOiAxPW9wdGltaXplZCB8IDI9bmV3bG9jYWxzIHwgND0qYXJnIHwgOD0qKmFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNj1uZXN0ZWQgfCAzMj1nZW5lcmF0b3IgfCA2ND1ub2ZyZWUgfCAxMjg9Y29yb3V0aW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI1Nj1pdGVyYWJsZV9jb3JvdXRpbmUgfCA1MTI9YXN5bmNfZ2VuZXJhdG9yCiAgICAgICAgY29fZnJlZXZhcnMgICAgICAgICB0dXBsZSBvZiBuYW1lcyBvZiBmcmVlIHZhcmlhYmxlcwogICAgICAgIGNvX3Bvc29ubHlhcmdjb3VudCAgbnVtYmVyIG9mIHBvc2l0aW9uYWwgb25seSBhcmd1bWVudHMKICAgICAgICBjb19rd29ubHlhcmdjb3VudCAgIG51bWJlciBvZiBrZXl3b3JkIG9ubHkgYXJndW1lbnRzIChub3QgaW5jbHVkaW5nICoqIGFyZykKICAgICAgICBjb19sbm90YWIgICAgICAgICAgIGVuY29kZWQgbWFwcGluZyBvZiBsaW5lIG51bWJlcnMgdG8gYnl0ZWNvZGUgaW5kaWNlcwogICAgICAgIGNvX25hbWUgICAgICAgICAgICAgbmFtZSB3aXRoIHdoaWNoIHRoaXMgY29kZSBvYmplY3Qgd2FzIGRlZmluZWQKICAgICAgICBjb19uYW1lcyAgICAgICAgICAgIHR1cGxlIG9mIG5hbWVzIG90aGVyIHRoYW4gYXJndW1lbnRzIGFuZCBmdW5jdGlvbiBsb2NhbHMKICAgICAgICBjb19ubG9jYWxzICAgICAgICAgIG51bWJlciBvZiBsb2NhbCB2YXJpYWJsZXMKICAgICAgICBjb19zdGFja3NpemUgICAgICAgIHZpcnR1YWwgbWFjaGluZSBzdGFjayBzcGFjZSByZXF1aXJlZAogICAgICAgIGNvX3Zhcm5hbWVzICAgICAgICAgdHVwbGUgb2YgbmFtZXMgb2YgYXJndW1lbnRzIGFuZCBsb2NhbCB2YXJpYWJsZXMiIiIKICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQ29kZVR5cGUpCgpkZWYgaXNidWlsdGluKG9iamVjdCk6CiAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kLgoKICAgIEJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyBwcm92aWRlIHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAgICAgX19kb2NfXyAgICAgICAgIGRvY3VtZW50YXRpb24gc3RyaW5nCiAgICAgICAgX19uYW1lX18gICAgICAgIG9yaWdpbmFsIG5hbWUgb2YgdGhpcyBmdW5jdGlvbiBvciBtZXRob2QKICAgICAgICBfX3NlbGZfXyAgICAgICAgaW5zdGFuY2UgdG8gd2hpY2ggYSBtZXRob2QgaXMgYm91bmQsIG9yIE5vbmUiIiIKICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSkKCmRlZiBpc21ldGhvZHdyYXBwZXIob2JqZWN0KToKICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBtZXRob2Qgd3JhcHBlci4iIiIKICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuTWV0aG9kV3JhcHBlclR5cGUpCgpkZWYgaXNyb3V0aW5lKG9iamVjdCk6CiAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFueSBraW5kIG9mIGZ1bmN0aW9uIG9yIG1ldGhvZC4iIiIKICAgIHJldHVybiAoaXNidWlsdGluKG9iamVjdCkKICAgICAgICAgICAgb3IgaXNmdW5jdGlvbihvYmplY3QpCiAgICAgICAgICAgIG9yIGlzbWV0aG9kKG9iamVjdCkKICAgICAgICAgICAgb3IgaXNtZXRob2RkZXNjcmlwdG9yKG9iamVjdCkKICAgICAgICAgICAgb3IgaXNtZXRob2R3cmFwcGVyKG9iamVjdCkpCgpkZWYgaXNhYnN0cmFjdChvYmplY3QpOgogICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIChBQkMpLiIiIgogICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIG9iamVjdC5fX2ZsYWdzX18gJiBUUEZMQUdTX0lTX0FCU1RSQUNUOgogICAgICAgIHJldHVybiBUcnVlCiAgICBpZiBub3QgaXNzdWJjbGFzcyh0eXBlKG9iamVjdCksIGFiYy5BQkNNZXRhKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGhhc2F0dHIob2JqZWN0LCAnX19hYnN0cmFjdG1ldGhvZHNfXycpOgogICAgICAgICMgSXQgbG9va3MgbGlrZSBBQkNNZXRhLl9fbmV3X18gaGFzIGZpbmlzaGVkIHJ1bm5pbmc7CiAgICAgICAgIyBUUEZMQUdTX0lTX0FCU1RSQUNUIHNob3VsZCBoYXZlIGJlZW4gYWNjdXJhdGUuCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAjIEl0IGxvb2tzIGxpa2UgQUJDTWV0YS5fX25ld19fIGhhcyBub3QgZmluaXNoZWQgcnVubmluZyB5ZXQ7IHdlJ3JlCiAgICAjIHByb2JhYmx5IGluIF9faW5pdF9zdWJjbGFzc19fLiBXZSdsbCBsb29rIGZvciBhYnN0cmFjdG1ldGhvZHMgbWFudWFsbHkuCiAgICBmb3IgbmFtZSwgdmFsdWUgaW4gb2JqZWN0Ll9fZGljdF9fLml0ZW1zKCk6CiAgICAgICAgaWYgZ2V0YXR0cih2YWx1ZSwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgZm9yIGJhc2UgaW4gb2JqZWN0Ll9fYmFzZXNfXzoKICAgICAgICBmb3IgbmFtZSBpbiBnZXRhdHRyKGJhc2UsICJfX2Fic3RyYWN0bWV0aG9kc19fIiwgKCkpOgogICAgICAgICAgICB2YWx1ZSA9IGdldGF0dHIob2JqZWN0LCBuYW1lLCBOb25lKQogICAgICAgICAgICBpZiBnZXRhdHRyKHZhbHVlLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgcmV0dXJuIEZhbHNlCgpkZWYgX2dldG1lbWJlcnMob2JqZWN0LCBwcmVkaWNhdGUsIGdldHRlcik6CiAgICByZXN1bHRzID0gW10KICAgIHByb2Nlc3NlZCA9IHNldCgpCiAgICBuYW1lcyA9IGRpcihvYmplY3QpCiAgICBpZiBpc2NsYXNzKG9iamVjdCk6CiAgICAgICAgbXJvID0gKG9iamVjdCwpICsgZ2V0bXJvKG9iamVjdCkKICAgICAgICAjIGFkZCBhbnkgRHluYW1pY0NsYXNzQXR0cmlidXRlcyB0byB0aGUgbGlzdCBvZiBuYW1lcyBpZiBvYmplY3QgaXMgYSBjbGFzczsKICAgICAgICAjIHRoaXMgbWF5IHJlc3VsdCBpbiBkdXBsaWNhdGUgZW50cmllcyBpZiwgZm9yIGV4YW1wbGUsIGEgdmlydHVhbAogICAgICAgICMgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhIER5bmFtaWNDbGFzc0F0dHJpYnV0ZSBleGlzdHMKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZvciBiYXNlIGluIG9iamVjdC5fX2Jhc2VzX186CiAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBiYXNlLl9fZGljdF9fLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCB0eXBlcy5EeW5hbWljQ2xhc3NBdHRyaWJ1dGUpOgogICAgICAgICAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoaykKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgbXJvID0gKCkKICAgIGZvciBrZXkgaW4gbmFtZXM6CiAgICAgICAgIyBGaXJzdCB0cnkgdG8gZ2V0IHRoZSB2YWx1ZSB2aWEgZ2V0YXR0ci4gIFNvbWUgZGVzY3JpcHRvcnMgZG9uJ3QKICAgICAgICAjIGxpa2UgY2FsbGluZyB0aGVpciBfX2dldF9fIChzZWUgYnVnICMxNzg1KSwgc28gZmFsbCBiYWNrIHRvCiAgICAgICAgIyBsb29raW5nIGluIHRoZSBfX2RpY3RfXy4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlID0gZ2V0dGVyKG9iamVjdCwga2V5KQogICAgICAgICAgICAjIGhhbmRsZSB0aGUgZHVwbGljYXRlIGtleQogICAgICAgICAgICBpZiBrZXkgaW4gcHJvY2Vzc2VkOgogICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKICAgICAgICAgICAgICAgIGlmIGtleSBpbiBiYXNlLl9fZGljdF9fOgogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYmFzZS5fX2RpY3RfX1trZXldCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgY291bGQgYmUgYSAoY3VycmVudGx5KSBtaXNzaW5nIHNsb3QgbWVtYmVyLCBvciBhIGJ1Z2d5CiAgICAgICAgICAgICAgICAjIF9fZGlyX187IGRpc2NhcmQgYW5kIG1vdmUgb24KICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgbm90IHByZWRpY2F0ZSBvciBwcmVkaWNhdGUodmFsdWUpOgogICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgoa2V5LCB2YWx1ZSkpCiAgICAgICAgcHJvY2Vzc2VkLmFkZChrZXkpCiAgICByZXN1bHRzLnNvcnQoa2V5PWxhbWJkYSBwYWlyOiBwYWlyWzBdKQogICAgcmV0dXJuIHJlc3VsdHMKCmRlZiBnZXRtZW1iZXJzKG9iamVjdCwgcHJlZGljYXRlPU5vbmUpOgogICAgIiIiUmV0dXJuIGFsbCBtZW1iZXJzIG9mIGFuIG9iamVjdCBhcyAobmFtZSwgdmFsdWUpIHBhaXJzIHNvcnRlZCBieSBuYW1lLgogICAgT3B0aW9uYWxseSwgb25seSByZXR1cm4gbWVtYmVycyB0aGF0IHNhdGlzZnkgYSBnaXZlbiBwcmVkaWNhdGUuIiIiCiAgICByZXR1cm4gX2dldG1lbWJlcnMob2JqZWN0LCBwcmVkaWNhdGUsIGdldGF0dHIpCgpkZWYgZ2V0bWVtYmVyc19zdGF0aWMob2JqZWN0LCBwcmVkaWNhdGU9Tm9uZSk6CiAgICAiIiJSZXR1cm4gYWxsIG1lbWJlcnMgb2YgYW4gb2JqZWN0IGFzIChuYW1lLCB2YWx1ZSkgcGFpcnMgc29ydGVkIGJ5IG5hbWUKICAgIHdpdGhvdXQgdHJpZ2dlcmluZyBkeW5hbWljIGxvb2t1cCB2aWEgdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2wsCiAgICBfX2dldGF0dHJfXyBvciBfX2dldGF0dHJpYnV0ZV9fLiBPcHRpb25hbGx5LCBvbmx5IHJldHVybiBtZW1iZXJzIHRoYXQKICAgIHNhdGlzZnkgYSBnaXZlbiBwcmVkaWNhdGUuCgogICAgTm90ZTogdGhpcyBmdW5jdGlvbiBtYXkgbm90IGJlIGFibGUgdG8gcmV0cmlldmUgYWxsIG1lbWJlcnMKICAgICAgIHRoYXQgZ2V0bWVtYmVycyBjYW4gZmV0Y2ggKGxpa2UgZHluYW1pY2FsbHkgY3JlYXRlZCBhdHRyaWJ1dGVzKQogICAgICAgYW5kIG1heSBmaW5kIG1lbWJlcnMgdGhhdCBnZXRtZW1iZXJzIGNhbid0IChsaWtlIGRlc2NyaXB0b3JzCiAgICAgICB0aGF0IHJhaXNlIEF0dHJpYnV0ZUVycm9yKS4gSXQgY2FuIGFsc28gcmV0dXJuIGRlc2NyaXB0b3Igb2JqZWN0cwogICAgICAgaW5zdGVhZCBvZiBpbnN0YW5jZSBtZW1iZXJzIGluIHNvbWUgY2FzZXMuCiAgICAiIiIKICAgIHJldHVybiBfZ2V0bWVtYmVycyhvYmplY3QsIHByZWRpY2F0ZSwgZ2V0YXR0cl9zdGF0aWMpCgpBdHRyaWJ1dGUgPSBuYW1lZHR1cGxlKCdBdHRyaWJ1dGUnLCAnbmFtZSBraW5kIGRlZmluaW5nX2NsYXNzIG9iamVjdCcpCgpkZWYgY2xhc3NpZnlfY2xhc3NfYXR0cnMoY2xzKToKICAgICIiIlJldHVybiBsaXN0IG9mIGF0dHJpYnV0ZS1kZXNjcmlwdG9yIHR1cGxlcy4KCiAgICBGb3IgZWFjaCBuYW1lIGluIGRpcihjbHMpLCB0aGUgcmV0dXJuIGxpc3QgY29udGFpbnMgYSA0LXR1cGxlCiAgICB3aXRoIHRoZXNlIGVsZW1lbnRzOgoKICAgICAgICAwLiBUaGUgbmFtZSAoYSBzdHJpbmcpLgoKICAgICAgICAxLiBUaGUga2luZCBvZiBhdHRyaWJ1dGUgdGhpcyBpcywgb25lIG9mIHRoZXNlIHN0cmluZ3M6CiAgICAgICAgICAgICAgICdjbGFzcyBtZXRob2QnICAgIGNyZWF0ZWQgdmlhIGNsYXNzbWV0aG9kKCkKICAgICAgICAgICAgICAgJ3N0YXRpYyBtZXRob2QnICAgY3JlYXRlZCB2aWEgc3RhdGljbWV0aG9kKCkKICAgICAgICAgICAgICAgJ3Byb3BlcnR5JyAgICAgICAgY3JlYXRlZCB2aWEgcHJvcGVydHkoKQogICAgICAgICAgICAgICAnbWV0aG9kJyAgICAgICAgICBhbnkgb3RoZXIgZmxhdm9yIG9mIG1ldGhvZCBvciBkZXNjcmlwdG9yCiAgICAgICAgICAgICAgICdkYXRhJyAgICAgICAgICAgIG5vdCBhIG1ldGhvZAoKICAgICAgICAyLiBUaGUgY2xhc3Mgd2hpY2ggZGVmaW5lZCB0aGlzIGF0dHJpYnV0ZSAoYSBjbGFzcykuCgogICAgICAgIDMuIFRoZSBvYmplY3QgYXMgb2J0YWluZWQgYnkgY2FsbGluZyBnZXRhdHRyOyBpZiB0aGlzIGZhaWxzLCBvciBpZiB0aGUKICAgICAgICAgICByZXN1bHRpbmcgb2JqZWN0IGRvZXMgbm90IGxpdmUgYW55d2hlcmUgaW4gdGhlIGNsYXNzJyBtcm8gKGluY2x1ZGluZwogICAgICAgICAgIG1ldGFjbGFzc2VzKSB0aGVuIHRoZSBvYmplY3QgaXMgbG9va2VkIHVwIGluIHRoZSBkZWZpbmluZyBjbGFzcydzCiAgICAgICAgICAgZGljdCAoZm91bmQgYnkgd2Fsa2luZyB0aGUgbXJvKS4KCiAgICBJZiBvbmUgb2YgdGhlIGl0ZW1zIGluIGRpcihjbHMpIGlzIHN0b3JlZCBpbiB0aGUgbWV0YWNsYXNzIGl0IHdpbGwgbm93CiAgICBiZSBkaXNjb3ZlcmVkIGFuZCBub3QgaGF2ZSBOb25lIGJlIGxpc3RlZCBhcyB0aGUgY2xhc3MgaW4gd2hpY2ggaXQgd2FzCiAgICBkZWZpbmVkLiAgQW55IGl0ZW1zIHdob3NlIGhvbWUgY2xhc3MgY2Fubm90IGJlIGRpc2NvdmVyZWQgYXJlIHNraXBwZWQuCiAgICAiIiIKCiAgICBtcm8gPSBnZXRtcm8oY2xzKQogICAgbWV0YW1ybyA9IGdldG1ybyh0eXBlKGNscykpICMgZm9yIGF0dHJpYnV0ZXMgc3RvcmVkIGluIHRoZSBtZXRhY2xhc3MKICAgIG1ldGFtcm8gPSB0dXBsZShjbHMgZm9yIGNscyBpbiBtZXRhbXJvIGlmIGNscyBub3QgaW4gKHR5cGUsIG9iamVjdCkpCiAgICBjbGFzc19iYXNlcyA9IChjbHMsKSArIG1ybwogICAgYWxsX2Jhc2VzID0gY2xhc3NfYmFzZXMgKyBtZXRhbXJvCiAgICBuYW1lcyA9IGRpcihjbHMpCiAgICAjIDpkZCBhbnkgRHluYW1pY0NsYXNzQXR0cmlidXRlcyB0byB0aGUgbGlzdCBvZiBuYW1lczsKICAgICMgdGhpcyBtYXkgcmVzdWx0IGluIGR1cGxpY2F0ZSBlbnRyaWVzIGlmLCBmb3IgZXhhbXBsZSwgYSB2aXJ0dWFsCiAgICAjIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYSBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUgZXhpc3RzLgogICAgZm9yIGJhc2UgaW4gbXJvOgogICAgICAgIGZvciBrLCB2IGluIGJhc2UuX19kaWN0X18uaXRlbXMoKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCB0eXBlcy5EeW5hbWljQ2xhc3NBdHRyaWJ1dGUpIGFuZCB2LmZnZXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoaykKICAgIHJlc3VsdCA9IFtdCiAgICBwcm9jZXNzZWQgPSBzZXQoKQoKICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICMgR2V0IHRoZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBuYW1lLCBhbmQgd2hlcmUgaXQgd2FzIGRlZmluZWQuCiAgICAgICAgIyBOb3JtYWwgb2JqZWN0cyB3aWxsIGJlIGxvb2tlZCB1cCB3aXRoIGJvdGggZ2V0YXR0ciBhbmQgZGlyZWN0bHkgaW4KICAgICAgICAjIGl0cyBjbGFzcycgZGljdCAoaW4gY2FzZSBnZXRhdHRyIGZhaWxzIFtidWcgIzE3ODVdLCBhbmQgYWxzbyB0byBsb29rCiAgICAgICAgIyBmb3IgYSBkb2NzdHJpbmcpLgogICAgICAgICMgRm9yIER5bmFtaWNDbGFzc0F0dHJpYnV0ZXMgb24gdGhlIHNlY29uZCBwYXNzIHdlIG9ubHkgbG9vayBpbiB0aGUKICAgICAgICAjIGNsYXNzJ3MgZGljdC4KICAgICAgICAjCiAgICAgICAgIyBHZXR0aW5nIGFuIG9iaiBmcm9tIHRoZSBfX2RpY3RfXyBzb21ldGltZXMgcmV2ZWFscyBtb3JlIHRoYW4KICAgICAgICAjIHVzaW5nIGdldGF0dHIuICBTdGF0aWMgYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGRyYW1hdGljIGV4YW1wbGVzLgogICAgICAgIGhvbWVjbHMgPSBOb25lCiAgICAgICAgZ2V0X29iaiA9IE5vbmUKICAgICAgICBkaWN0X29iaiA9IE5vbmUKICAgICAgICBpZiBuYW1lIG5vdCBpbiBwcm9jZXNzZWQ6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ19fZGljdF9fJzoKICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIl9fZGljdF9fIGlzIHNwZWNpYWwsIGRvbid0IHdhbnQgdGhlIHByb3h5IikKICAgICAgICAgICAgICAgIGdldF9vYmogPSBnZXRhdHRyKGNscywgbmFtZSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBob21lY2xzID0gZ2V0YXR0cihnZXRfb2JqLCAiX19vYmpjbGFzc19fIiwgaG9tZWNscykKICAgICAgICAgICAgICAgIGlmIGhvbWVjbHMgbm90IGluIGNsYXNzX2Jhc2VzOgogICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIHJlc3VsdGluZyBvYmplY3QgZG9lcyBub3QgbGl2ZSBzb21ld2hlcmUgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIyBtcm8sIGRyb3AgaXQgYW5kIHNlYXJjaCB0aGUgbXJvIG1hbnVhbGx5CiAgICAgICAgICAgICAgICAgICAgaG9tZWNscyA9IE5vbmUKICAgICAgICAgICAgICAgICAgICBsYXN0X2NscyA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAjIGZpcnN0IGxvb2sgaW4gdGhlIGNsYXNzZXMKICAgICAgICAgICAgICAgICAgICBmb3Igc3JjaF9jbHMgaW4gY2xhc3NfYmFzZXM6CiAgICAgICAgICAgICAgICAgICAgICAgIHNyY2hfb2JqID0gZ2V0YXR0cihzcmNoX2NscywgbmFtZSwgTm9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3JjaF9vYmogaXMgZ2V0X29iajoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfY2xzID0gc3JjaF9jbHMKICAgICAgICAgICAgICAgICAgICAjIHRoZW4gY2hlY2sgdGhlIG1ldGFjbGFzc2VzCiAgICAgICAgICAgICAgICAgICAgZm9yIHNyY2hfY2xzIGluIG1ldGFtcm86CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2hfb2JqID0gc3JjaF9jbHMuX19nZXRhdHRyX18oY2xzLCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICBpZiBzcmNoX29iaiBpcyBnZXRfb2JqOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9jbHMgPSBzcmNoX2NscwogICAgICAgICAgICAgICAgICAgIGlmIGxhc3RfY2xzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBob21lY2xzID0gbGFzdF9jbHMKICAgICAgICBmb3IgYmFzZSBpbiBhbGxfYmFzZXM6CiAgICAgICAgICAgIGlmIG5hbWUgaW4gYmFzZS5fX2RpY3RfXzoKICAgICAgICAgICAgICAgIGRpY3Rfb2JqID0gYmFzZS5fX2RpY3RfX1tuYW1lXQogICAgICAgICAgICAgICAgaWYgaG9tZWNscyBub3QgaW4gbWV0YW1ybzoKICAgICAgICAgICAgICAgICAgICBob21lY2xzID0gYmFzZQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBob21lY2xzIGlzIE5vbmU6CiAgICAgICAgICAgICMgdW5hYmxlIHRvIGxvY2F0ZSB0aGUgYXR0cmlidXRlIGFueXdoZXJlLCBtb3N0IGxpa2VseSBkdWUgdG8KICAgICAgICAgICAgIyBidWdneSBjdXN0b20gX19kaXJfXzsgZGlzY2FyZCBhbmQgbW92ZSBvbgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIG9iaiA9IGdldF9vYmogaWYgZ2V0X29iaiBpcyBub3QgTm9uZSBlbHNlIGRpY3Rfb2JqCiAgICAgICAgIyBDbGFzc2lmeSB0aGUgb2JqZWN0IG9yIGl0cyBkZXNjcmlwdG9yLgogICAgICAgIGlmIGlzaW5zdGFuY2UoZGljdF9vYmosIChzdGF0aWNtZXRob2QsIHR5cGVzLkJ1aWx0aW5NZXRob2RUeXBlKSk6CiAgICAgICAgICAgIGtpbmQgPSAic3RhdGljIG1ldGhvZCIKICAgICAgICAgICAgb2JqID0gZGljdF9vYmoKICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGljdF9vYmosIChjbGFzc21ldGhvZCwgdHlwZXMuQ2xhc3NNZXRob2REZXNjcmlwdG9yVHlwZSkpOgogICAgICAgICAgICBraW5kID0gImNsYXNzIG1ldGhvZCIKICAgICAgICAgICAgb2JqID0gZGljdF9vYmoKICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGljdF9vYmosIHByb3BlcnR5KToKICAgICAgICAgICAga2luZCA9ICJwcm9wZXJ0eSIKICAgICAgICAgICAgb2JqID0gZGljdF9vYmoKICAgICAgICBlbGlmIGlzcm91dGluZShvYmopOgogICAgICAgICAgICBraW5kID0gIm1ldGhvZCIKICAgICAgICBlbHNlOgogICAgICAgICAgICBraW5kID0gImRhdGEiCiAgICAgICAgcmVzdWx0LmFwcGVuZChBdHRyaWJ1dGUobmFtZSwga2luZCwgaG9tZWNscywgb2JqKSkKICAgICAgICBwcm9jZXNzZWQuYWRkKG5hbWUpCiAgICByZXR1cm4gcmVzdWx0CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNsYXNzIGhlbHBlcnMKCmRlZiBnZXRtcm8oY2xzKToKICAgICJSZXR1cm4gdHVwbGUgb2YgYmFzZSBjbGFzc2VzIChpbmNsdWRpbmcgY2xzKSBpbiBtZXRob2QgcmVzb2x1dGlvbiBvcmRlci4iCiAgICByZXR1cm4gY2xzLl9fbXJvX18KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZnVuY3Rpb24gaGVscGVycwoKZGVmIHVud3JhcChmdW5jLCAqLCBzdG9wPU5vbmUpOgogICAgIiIiR2V0IHRoZSBvYmplY3Qgd3JhcHBlZCBieSAqZnVuYyouCgogICBGb2xsb3dzIHRoZSBjaGFpbiBvZiA6YXR0cjpgX193cmFwcGVkX19gIGF0dHJpYnV0ZXMgcmV0dXJuaW5nIHRoZSBsYXN0CiAgIG9iamVjdCBpbiB0aGUgY2hhaW4uCgogICAqc3RvcCogaXMgYW4gb3B0aW9uYWwgY2FsbGJhY2sgYWNjZXB0aW5nIGFuIG9iamVjdCBpbiB0aGUgd3JhcHBlciBjaGFpbgogICBhcyBpdHMgc29sZSBhcmd1bWVudCB0aGF0IGFsbG93cyB0aGUgdW53cmFwcGluZyB0byBiZSB0ZXJtaW5hdGVkIGVhcmx5IGlmCiAgIHRoZSBjYWxsYmFjayByZXR1cm5zIGEgdHJ1ZSB2YWx1ZS4gSWYgdGhlIGNhbGxiYWNrIG5ldmVyIHJldHVybnMgYSB0cnVlCiAgIHZhbHVlLCB0aGUgbGFzdCBvYmplY3QgaW4gdGhlIGNoYWluIGlzIHJldHVybmVkIGFzIHVzdWFsLiBGb3IgZXhhbXBsZSwKICAgOmZ1bmM6YHNpZ25hdHVyZWAgdXNlcyB0aGlzIHRvIHN0b3AgdW53cmFwcGluZyBpZiBhbnkgb2JqZWN0IGluIHRoZQogICBjaGFpbiBoYXMgYSBgYF9fc2lnbmF0dXJlX19gYCBhdHRyaWJ1dGUgZGVmaW5lZC4KCiAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBhIGN5Y2xlIGlzIGVuY291bnRlcmVkLgoKICAgICIiIgogICAgaWYgc3RvcCBpcyBOb25lOgogICAgICAgIGRlZiBfaXNfd3JhcHBlcihmKToKICAgICAgICAgICAgcmV0dXJuIGhhc2F0dHIoZiwgJ19fd3JhcHBlZF9fJykKICAgIGVsc2U6CiAgICAgICAgZGVmIF9pc193cmFwcGVyKGYpOgogICAgICAgICAgICByZXR1cm4gaGFzYXR0cihmLCAnX193cmFwcGVkX18nKSBhbmQgbm90IHN0b3AoZikKICAgIGYgPSBmdW5jICAjIHJlbWVtYmVyIHRoZSBvcmlnaW5hbCBmdW5jIGZvciBlcnJvciByZXBvcnRpbmcKICAgICMgTWVtb2lzZSBieSBpZCB0byB0b2xlcmF0ZSBub24taGFzaGFibGUgb2JqZWN0cywgYnV0IHN0b3JlIG9iamVjdHMgdG8KICAgICMgZW5zdXJlIHRoZXkgYXJlbid0IGRlc3Ryb3llZCwgd2hpY2ggd291bGQgYWxsb3cgdGhlaXIgSURzIHRvIGJlIHJldXNlZC4KICAgIG1lbW8gPSB7aWQoZik6IGZ9CiAgICByZWN1cnNpb25fbGltaXQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQogICAgd2hpbGUgX2lzX3dyYXBwZXIoZnVuYyk6CiAgICAgICAgZnVuYyA9IGZ1bmMuX193cmFwcGVkX18KICAgICAgICBpZF9mdW5jID0gaWQoZnVuYykKICAgICAgICBpZiAoaWRfZnVuYyBpbiBtZW1vKSBvciAobGVuKG1lbW8pID49IHJlY3Vyc2lvbl9saW1pdCk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dyYXBwZXIgbG9vcCB3aGVuIHVud3JhcHBpbmcgeyFyfScuZm9ybWF0KGYpKQogICAgICAgIG1lbW9baWRfZnVuY10gPSBmdW5jCiAgICByZXR1cm4gZnVuYwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzb3VyY2UgY29kZSBleHRyYWN0aW9uCmRlZiBpbmRlbnRzaXplKGxpbmUpOgogICAgIiIiUmV0dXJuIHRoZSBpbmRlbnQgc2l6ZSwgaW4gc3BhY2VzLCBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIG9mIHRleHQuIiIiCiAgICBleHBsaW5lID0gbGluZS5leHBhbmR0YWJzKCkKICAgIHJldHVybiBsZW4oZXhwbGluZSkgLSBsZW4oZXhwbGluZS5sc3RyaXAoKSkKCmRlZiBfZmluZGNsYXNzKGZ1bmMpOgogICAgY2xzID0gc3lzLm1vZHVsZXMuZ2V0KGZ1bmMuX19tb2R1bGVfXykKICAgIGlmIGNscyBpcyBOb25lOgogICAgICAgIHJldHVybiBOb25lCiAgICBmb3IgbmFtZSBpbiBmdW5jLl9fcXVhbG5hbWVfXy5zcGxpdCgnLicpWzotMV06CiAgICAgICAgY2xzID0gZ2V0YXR0cihjbHMsIG5hbWUpCiAgICBpZiBub3QgaXNjbGFzcyhjbHMpOgogICAgICAgIHJldHVybiBOb25lCiAgICByZXR1cm4gY2xzCgpkZWYgX2ZpbmRkb2Mob2JqKToKICAgIGlmIGlzY2xhc3Mob2JqKToKICAgICAgICBmb3IgYmFzZSBpbiBvYmouX19tcm9fXzoKICAgICAgICAgICAgaWYgYmFzZSBpcyBub3Qgb2JqZWN0OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGRvYyA9IGJhc2UuX19kb2NfXwogICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBpZiBkb2MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvYwogICAgICAgIHJldHVybiBOb25lCgogICAgaWYgaXNtZXRob2Qob2JqKToKICAgICAgICBuYW1lID0gb2JqLl9fZnVuY19fLl9fbmFtZV9fCiAgICAgICAgc2VsZiA9IG9iai5fX3NlbGZfXwogICAgICAgIGlmIChpc2NsYXNzKHNlbGYpIGFuZAogICAgICAgICAgICBnZXRhdHRyKGdldGF0dHIoc2VsZiwgbmFtZSwgTm9uZSksICdfX2Z1bmNfXycpIGlzIG9iai5fX2Z1bmNfXyk6CiAgICAgICAgICAgICMgY2xhc3NtZXRob2QKICAgICAgICAgICAgY2xzID0gc2VsZgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCiAgICBlbGlmIGlzZnVuY3Rpb24ob2JqKToKICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCiAgICAgICAgY2xzID0gX2ZpbmRjbGFzcyhvYmopCiAgICAgICAgaWYgY2xzIGlzIE5vbmUgb3IgZ2V0YXR0cihjbHMsIG5hbWUpIGlzIG5vdCBvYmo6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICBlbGlmIGlzYnVpbHRpbihvYmopOgogICAgICAgIG5hbWUgPSBvYmouX19uYW1lX18KICAgICAgICBzZWxmID0gb2JqLl9fc2VsZl9fCiAgICAgICAgaWYgKGlzY2xhc3Moc2VsZikgYW5kCiAgICAgICAgICAgIHNlbGYuX19xdWFsbmFtZV9fICsgJy4nICsgbmFtZSA9PSBvYmouX19xdWFsbmFtZV9fKToKICAgICAgICAgICAgIyBjbGFzc21ldGhvZAogICAgICAgICAgICBjbHMgPSBzZWxmCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KICAgICMgU2hvdWxkIGJlIHRlc3RlZCBiZWZvcmUgaXNkYXRhZGVzY3JpcHRvcigpLgogICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgcHJvcGVydHkpOgogICAgICAgIGZ1bmMgPSBvYmouZmdldAogICAgICAgIG5hbWUgPSBmdW5jLl9fbmFtZV9fCiAgICAgICAgY2xzID0gX2ZpbmRjbGFzcyhmdW5jKQogICAgICAgIGlmIGNscyBpcyBOb25lIG9yIGdldGF0dHIoY2xzLCBuYW1lKSBpcyBub3Qgb2JqOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgZWxpZiBpc21ldGhvZGRlc2NyaXB0b3Iob2JqKSBvciBpc2RhdGFkZXNjcmlwdG9yKG9iaik6CiAgICAgICAgbmFtZSA9IG9iai5fX25hbWVfXwogICAgICAgIGNscyA9IG9iai5fX29iamNsYXNzX18KICAgICAgICBpZiBnZXRhdHRyKGNscywgbmFtZSkgaXMgbm90IG9iajoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBpZiBpc21lbWJlcmRlc2NyaXB0b3Iob2JqKToKICAgICAgICAgICAgc2xvdHMgPSBnZXRhdHRyKGNscywgJ19fc2xvdHNfXycsIE5vbmUpCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2xvdHMsIGRpY3QpIGFuZCBuYW1lIGluIHNsb3RzOgogICAgICAgICAgICAgICAgcmV0dXJuIHNsb3RzW25hbWVdCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCiAgICBmb3IgYmFzZSBpbiBjbHMuX19tcm9fXzoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRvYyA9IGdldGF0dHIoYmFzZSwgbmFtZSkuX19kb2NfXwogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBkb2MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBkb2MKICAgIHJldHVybiBOb25lCgpkZWYgZ2V0ZG9jKG9iamVjdCk6CiAgICAiIiJHZXQgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciBhbiBvYmplY3QuCgogICAgQWxsIHRhYnMgYXJlIGV4cGFuZGVkIHRvIHNwYWNlcy4gIFRvIGNsZWFuIHVwIGRvY3N0cmluZ3MgdGhhdCBhcmUKICAgIGluZGVudGVkIHRvIGxpbmUgdXAgd2l0aCBibG9ja3Mgb2YgY29kZSwgYW55IHdoaXRlc3BhY2UgdGhhbiBjYW4gYmUKICAgIHVuaWZvcm1seSByZW1vdmVkIGZyb20gdGhlIHNlY29uZCBsaW5lIG9ud2FyZHMgaXMgcmVtb3ZlZC4iIiIKICAgIHRyeToKICAgICAgICBkb2MgPSBvYmplY3QuX19kb2NfXwogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIHJldHVybiBOb25lCiAgICBpZiBkb2MgaXMgTm9uZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRvYyA9IF9maW5kZG9jKG9iamVjdCkKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IpOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgaWYgbm90IGlzaW5zdGFuY2UoZG9jLCBzdHIpOgogICAgICAgIHJldHVybiBOb25lCiAgICByZXR1cm4gY2xlYW5kb2MoZG9jKQoKZGVmIGNsZWFuZG9jKGRvYyk6CiAgICAiIiJDbGVhbiB1cCBpbmRlbnRhdGlvbiBmcm9tIGRvY3N0cmluZ3MuCgogICAgQW55IHdoaXRlc3BhY2UgdGhhdCBjYW4gYmUgdW5pZm9ybWx5IHJlbW92ZWQgZnJvbSB0aGUgc2Vjb25kIGxpbmUKICAgIG9ud2FyZHMgaXMgcmVtb3ZlZC4iIiIKICAgIHRyeToKICAgICAgICBsaW5lcyA9IGRvYy5leHBhbmR0YWJzKCkuc3BsaXQoJ1xuJykKICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGVsc2U6CiAgICAgICAgIyBGaW5kIG1pbmltdW0gaW5kZW50YXRpb24gb2YgYW55IG5vbi1ibGFuayBsaW5lcyBhZnRlciBmaXJzdCBsaW5lLgogICAgICAgIG1hcmdpbiA9IHN5cy5tYXhzaXplCiAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNbMTpdOgogICAgICAgICAgICBjb250ZW50ID0gbGVuKGxpbmUubHN0cmlwKCkpCiAgICAgICAgICAgIGlmIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICBpbmRlbnQgPSBsZW4obGluZSkgLSBjb250ZW50CiAgICAgICAgICAgICAgICBtYXJnaW4gPSBtaW4obWFyZ2luLCBpbmRlbnQpCiAgICAgICAgIyBSZW1vdmUgaW5kZW50YXRpb24uCiAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgIGxpbmVzWzBdID0gbGluZXNbMF0ubHN0cmlwKCkKICAgICAgICBpZiBtYXJnaW4gPCBzeXMubWF4c2l6ZToKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKGxpbmVzKSk6IGxpbmVzW2ldID0gbGluZXNbaV1bbWFyZ2luOl0KICAgICAgICAjIFJlbW92ZSBhbnkgdHJhaWxpbmcgb3IgbGVhZGluZyBibGFuayBsaW5lcy4KICAgICAgICB3aGlsZSBsaW5lcyBhbmQgbm90IGxpbmVzWy0xXToKICAgICAgICAgICAgbGluZXMucG9wKCkKICAgICAgICB3aGlsZSBsaW5lcyBhbmQgbm90IGxpbmVzWzBdOgogICAgICAgICAgICBsaW5lcy5wb3AoMCkKICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQoKZGVmIGdldGZpbGUob2JqZWN0KToKICAgICIiIldvcmsgb3V0IHdoaWNoIHNvdXJjZSBvciBjb21waWxlZCBmaWxlIGFuIG9iamVjdCB3YXMgZGVmaW5lZCBpbi4iIiIKICAgIGlmIGlzbW9kdWxlKG9iamVjdCk6CiAgICAgICAgaWYgZ2V0YXR0cihvYmplY3QsICdfX2ZpbGVfXycsIE5vbmUpOgogICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZmlsZV9fCiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIGEgYnVpbHQtaW4gbW9kdWxlJy5mb3JtYXQob2JqZWN0KSkKICAgIGlmIGlzY2xhc3Mob2JqZWN0KToKICAgICAgICBpZiBoYXNhdHRyKG9iamVjdCwgJ19fbW9kdWxlX18nKToKICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXMuZ2V0KG9iamVjdC5fX21vZHVsZV9fKQogICAgICAgICAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgTm9uZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlLl9fZmlsZV9fCiAgICAgICAgICAgIGlmIG9iamVjdC5fX21vZHVsZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdzb3VyY2UgY29kZSBub3QgYXZhaWxhYmxlJykKICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgYSBidWlsdC1pbiBjbGFzcycuZm9ybWF0KG9iamVjdCkpCiAgICBpZiBpc21ldGhvZChvYmplY3QpOgogICAgICAgIG9iamVjdCA9IG9iamVjdC5fX2Z1bmNfXwogICAgaWYgaXNmdW5jdGlvbihvYmplY3QpOgogICAgICAgIG9iamVjdCA9IG9iamVjdC5fX2NvZGVfXwogICAgaWYgaXN0cmFjZWJhY2sob2JqZWN0KToKICAgICAgICBvYmplY3QgPSBvYmplY3QudGJfZnJhbWUKICAgIGlmIGlzZnJhbWUob2JqZWN0KToKICAgICAgICBvYmplY3QgPSBvYmplY3QuZl9jb2RlCiAgICBpZiBpc2NvZGUob2JqZWN0KToKICAgICAgICByZXR1cm4gb2JqZWN0LmNvX2ZpbGVuYW1lCiAgICByYWlzZSBUeXBlRXJyb3IoJ21vZHVsZSwgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yICcKICAgICAgICAgICAgICAgICAgICAnY29kZSBvYmplY3Qgd2FzIGV4cGVjdGVkLCBnb3Qge30nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICB0eXBlKG9iamVjdCkuX19uYW1lX18pKQoKZGVmIGdldG1vZHVsZW5hbWUocGF0aCk6CiAgICAiIiJSZXR1cm4gdGhlIG1vZHVsZSBuYW1lIGZvciBhIGdpdmVuIGZpbGUsIG9yIE5vbmUuIiIiCiAgICBmbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKICAgICMgQ2hlY2sgZm9yIHBhdGhzIHRoYXQgbG9vayBsaWtlIGFuIGFjdHVhbCBtb2R1bGUgZmlsZQogICAgc3VmZml4ZXMgPSBbKC1sZW4oc3VmZml4KSwgc3VmZml4KQogICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKV0KICAgIHN1ZmZpeGVzLnNvcnQoKSAjIHRyeSBsb25nZXN0IHN1ZmZpeGVzIGZpcnN0LCBpbiBjYXNlIHRoZXkgb3ZlcmxhcAogICAgZm9yIG5lZ2xlbiwgc3VmZml4IGluIHN1ZmZpeGVzOgogICAgICAgIGlmIGZuYW1lLmVuZHN3aXRoKHN1ZmZpeCk6CiAgICAgICAgICAgIHJldHVybiBmbmFtZVs6bmVnbGVuXQogICAgcmV0dXJuIE5vbmUKCmRlZiBnZXRzb3VyY2VmaWxlKG9iamVjdCk6CiAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIHRoYXQgY2FuIGJlIHVzZWQgdG8gbG9jYXRlIGFuIG9iamVjdCdzIHNvdXJjZS4KICAgIFJldHVybiBOb25lIGlmIG5vIHdheSBjYW4gYmUgaWRlbnRpZmllZCB0byBnZXQgdGhlIHNvdXJjZS4KICAgICIiIgogICAgZmlsZW5hbWUgPSBnZXRmaWxlKG9iamVjdCkKICAgIGFsbF9ieXRlY29kZV9zdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuREVCVUdfQllURUNPREVfU1VGRklYRVNbOl0KICAgIGFsbF9ieXRlY29kZV9zdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5Lk9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU1s6XQogICAgaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHMpIGZvciBzIGluIGFsbF9ieXRlY29kZV9zdWZmaXhlcyk6CiAgICAgICAgZmlsZW5hbWUgPSAob3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMF0gKwogICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzBdKQogICAgZWxpZiBhbnkoZmlsZW5hbWUuZW5kc3dpdGgocykgZm9yIHMgaW4KICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUyk6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICByZXR1cm4gZmlsZW5hbWUKICAgICMgb25seSByZXR1cm4gYSBub24tZXhpc3RlbnQgZmlsZW5hbWUgaWYgdGhlIG1vZHVsZSBoYXMgYSBQRVAgMzAyIGxvYWRlcgogICAgbW9kdWxlID0gZ2V0bW9kdWxlKG9iamVjdCwgZmlsZW5hbWUpCiAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nLCBOb25lKSBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gZmlsZW5hbWUKICAgIGVsaWYgZ2V0YXR0cihnZXRhdHRyKG1vZHVsZSwgIl9fc3BlY19fIiwgTm9uZSksICJsb2FkZXIiLCBOb25lKSBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gZmlsZW5hbWUKICAgICMgb3IgaXQgaXMgaW4gdGhlIGxpbmVjYWNoZQogICAgZWxpZiBmaWxlbmFtZSBpbiBsaW5lY2FjaGUuY2FjaGU6CiAgICAgICAgcmV0dXJuIGZpbGVuYW1lCgpkZWYgZ2V0YWJzZmlsZShvYmplY3QsIF9maWxlbmFtZT1Ob25lKToKICAgICIiIlJldHVybiBhbiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBzb3VyY2Ugb3IgY29tcGlsZWQgZmlsZSBmb3IgYW4gb2JqZWN0LgoKICAgIFRoZSBpZGVhIGlzIGZvciBlYWNoIG9iamVjdCB0byBoYXZlIGEgdW5pcXVlIG9yaWdpbiwgc28gdGhpcyByb3V0aW5lCiAgICBub3JtYWxpemVzIHRoZSByZXN1bHQgYXMgbXVjaCBhcyBwb3NzaWJsZS4iIiIKICAgIGlmIF9maWxlbmFtZSBpcyBOb25lOgogICAgICAgIF9maWxlbmFtZSA9IGdldHNvdXJjZWZpbGUob2JqZWN0KSBvciBnZXRmaWxlKG9iamVjdCkKICAgIHJldHVybiBvcy5wYXRoLm5vcm1jYXNlKG9zLnBhdGguYWJzcGF0aChfZmlsZW5hbWUpKQoKbW9kdWxlc2J5ZmlsZSA9IHt9Cl9maWxlc2J5bW9kbmFtZSA9IHt9CgpkZWYgZ2V0bW9kdWxlKG9iamVjdCwgX2ZpbGVuYW1lPU5vbmUpOgogICAgIiIiUmV0dXJuIHRoZSBtb2R1bGUgYW4gb2JqZWN0IHdhcyBkZWZpbmVkIGluLCBvciBOb25lIGlmIG5vdCBmb3VuZC4iIiIKICAgIGlmIGlzbW9kdWxlKG9iamVjdCk6CiAgICAgICAgcmV0dXJuIG9iamVjdAogICAgaWYgaGFzYXR0cihvYmplY3QsICdfX21vZHVsZV9fJyk6CiAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzLmdldChvYmplY3QuX19tb2R1bGVfXykKICAgICMgVHJ5IHRoZSBmaWxlbmFtZSB0byBtb2R1bGVuYW1lIGNhY2hlCiAgICBpZiBfZmlsZW5hbWUgaXMgbm90IE5vbmUgYW5kIF9maWxlbmFtZSBpbiBtb2R1bGVzYnlmaWxlOgogICAgICAgIHJldHVybiBzeXMubW9kdWxlcy5nZXQobW9kdWxlc2J5ZmlsZVtfZmlsZW5hbWVdKQogICAgIyBUcnkgdGhlIGNhY2hlIGFnYWluIHdpdGggdGhlIGFic29sdXRlIGZpbGUgbmFtZQogICAgdHJ5OgogICAgICAgIGZpbGUgPSBnZXRhYnNmaWxlKG9iamVjdCwgX2ZpbGVuYW1lKQogICAgZXhjZXB0IChUeXBlRXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yKToKICAgICAgICByZXR1cm4gTm9uZQogICAgaWYgZmlsZSBpbiBtb2R1bGVzYnlmaWxlOgogICAgICAgIHJldHVybiBzeXMubW9kdWxlcy5nZXQobW9kdWxlc2J5ZmlsZVtmaWxlXSkKICAgICMgVXBkYXRlIHRoZSBmaWxlbmFtZSB0byBtb2R1bGUgbmFtZSBjYWNoZSBhbmQgY2hlY2sgeWV0IGFnYWluCiAgICAjIENvcHkgc3lzLm1vZHVsZXMgaW4gb3JkZXIgdG8gY29wZSB3aXRoIGNoYW5nZXMgd2hpbGUgaXRlcmF0aW5nCiAgICBmb3IgbW9kbmFtZSwgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmNvcHkoKS5pdGVtcygpOgogICAgICAgIGlmIGlzbW9kdWxlKG1vZHVsZSkgYW5kIGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKToKICAgICAgICAgICAgZiA9IG1vZHVsZS5fX2ZpbGVfXwogICAgICAgICAgICBpZiBmID09IF9maWxlc2J5bW9kbmFtZS5nZXQobW9kbmFtZSwgTm9uZSk6CiAgICAgICAgICAgICAgICAjIEhhdmUgYWxyZWFkeSBtYXBwZWQgdGhpcyBtb2R1bGUsIHNvIHNraXAgaXQKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIF9maWxlc2J5bW9kbmFtZVttb2RuYW1lXSA9IGYKICAgICAgICAgICAgZiA9IGdldGFic2ZpbGUobW9kdWxlKQogICAgICAgICAgICAjIEFsd2F5cyBtYXAgdG8gdGhlIG5hbWUgdGhlIG1vZHVsZSBrbm93cyBpdHNlbGYgYnkKICAgICAgICAgICAgbW9kdWxlc2J5ZmlsZVtmXSA9IG1vZHVsZXNieWZpbGVbCiAgICAgICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKGYpXSA9IG1vZHVsZS5fX25hbWVfXwogICAgaWYgZmlsZSBpbiBtb2R1bGVzYnlmaWxlOgogICAgICAgIHJldHVybiBzeXMubW9kdWxlcy5nZXQobW9kdWxlc2J5ZmlsZVtmaWxlXSkKICAgICMgQ2hlY2sgdGhlIG1haW4gbW9kdWxlCiAgICBtYWluID0gc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10KICAgIGlmIG5vdCBoYXNhdHRyKG9iamVjdCwgJ19fbmFtZV9fJyk6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGlmIGhhc2F0dHIobWFpbiwgb2JqZWN0Ll9fbmFtZV9fKToKICAgICAgICBtYWlub2JqZWN0ID0gZ2V0YXR0cihtYWluLCBvYmplY3QuX19uYW1lX18pCiAgICAgICAgaWYgbWFpbm9iamVjdCBpcyBvYmplY3Q6CiAgICAgICAgICAgIHJldHVybiBtYWluCiAgICAjIENoZWNrIGJ1aWx0aW5zCiAgICBidWlsdGluID0gc3lzLm1vZHVsZXNbJ2J1aWx0aW5zJ10KICAgIGlmIGhhc2F0dHIoYnVpbHRpbiwgb2JqZWN0Ll9fbmFtZV9fKToKICAgICAgICBidWlsdGlub2JqZWN0ID0gZ2V0YXR0cihidWlsdGluLCBvYmplY3QuX19uYW1lX18pCiAgICAgICAgaWYgYnVpbHRpbm9iamVjdCBpcyBvYmplY3Q6CiAgICAgICAgICAgIHJldHVybiBidWlsdGluCgoKY2xhc3MgQ2xhc3NGb3VuZEV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgcGFzcwoKCmNsYXNzIF9DbGFzc0ZpbmRlcihhc3QuTm9kZVZpc2l0b3IpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWFsbmFtZSk6CiAgICAgICAgc2VsZi5zdGFjayA9IFtdCiAgICAgICAgc2VsZi5xdWFsbmFtZSA9IHF1YWxuYW1lCgogICAgZGVmIHZpc2l0X0Z1bmN0aW9uRGVmKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuc3RhY2suYXBwZW5kKG5vZGUubmFtZSkKICAgICAgICBzZWxmLnN0YWNrLmFwcGVuZCgnPGxvY2Fscz4nKQogICAgICAgIHNlbGYuZ2VuZXJpY192aXNpdChub2RlKQogICAgICAgIHNlbGYuc3RhY2sucG9wKCkKICAgICAgICBzZWxmLnN0YWNrLnBvcCgpCgogICAgdmlzaXRfQXN5bmNGdW5jdGlvbkRlZiA9IHZpc2l0X0Z1bmN0aW9uRGVmCgogICAgZGVmIHZpc2l0X0NsYXNzRGVmKHNlbGYsIG5vZGUpOgogICAgICAgIHNlbGYuc3RhY2suYXBwZW5kKG5vZGUubmFtZSkKICAgICAgICBpZiBzZWxmLnF1YWxuYW1lID09ICcuJy5qb2luKHNlbGYuc3RhY2spOgogICAgICAgICAgICAjIFJldHVybiB0aGUgZGVjb3JhdG9yIGZvciB0aGUgY2xhc3MgaWYgcHJlc2VudAogICAgICAgICAgICBpZiBub2RlLmRlY29yYXRvcl9saXN0OgogICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSBub2RlLmRlY29yYXRvcl9saXN0WzBdLmxpbmVubwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSBub2RlLmxpbmVubwoKICAgICAgICAgICAgIyBkZWNyZW1lbnQgYnkgb25lIHNpbmNlIGxpbmVzIHN0YXJ0cyB3aXRoIGluZGV4aW5nIGJ5IHplcm8KICAgICAgICAgICAgbGluZV9udW1iZXIgLT0gMQogICAgICAgICAgICByYWlzZSBDbGFzc0ZvdW5kRXhjZXB0aW9uKGxpbmVfbnVtYmVyKQogICAgICAgIHNlbGYuZ2VuZXJpY192aXNpdChub2RlKQogICAgICAgIHNlbGYuc3RhY2sucG9wKCkKCgpkZWYgZmluZHNvdXJjZShvYmplY3QpOgogICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgc291cmNlIGZpbGUgYW5kIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIGZvciBhbiBvYmplY3QuCgogICAgVGhlIGFyZ3VtZW50IG1heSBiZSBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsCiAgICBvciBjb2RlIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcyByZXR1cm5lZCBhcyBhIGxpc3Qgb2YgYWxsIHRoZSBsaW5lcwogICAgaW4gdGhlIGZpbGUgYW5kIHRoZSBsaW5lIG51bWJlciBpbmRleGVzIGEgbGluZSBpbiB0aGF0IGxpc3QuICBBbiBPU0Vycm9yCiAgICBpcyByYWlzZWQgaWYgdGhlIHNvdXJjZSBjb2RlIGNhbm5vdCBiZSByZXRyaWV2ZWQuIiIiCgogICAgZmlsZSA9IGdldHNvdXJjZWZpbGUob2JqZWN0KQogICAgaWYgZmlsZToKICAgICAgICAjIEludmFsaWRhdGUgY2FjaGUgaWYgbmVlZGVkLgogICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGUpCiAgICBlbHNlOgogICAgICAgIGZpbGUgPSBnZXRmaWxlKG9iamVjdCkKICAgICAgICAjIEFsbG93IGZpbGVuYW1lcyBpbiBmb3JtIG9mICI8c29tZXRoaW5nPiIgdG8gcGFzcyB0aHJvdWdoLgogICAgICAgICMgYGRvY3Rlc3RgIG1vbmtleXBhdGNoZXMgYGxpbmVjYWNoZWAgbW9kdWxlIHRvIGVuYWJsZQogICAgICAgICMgaW5zcGVjdGlvbiwgc28gbGV0IGBsaW5lY2FjaGUuZ2V0bGluZXNgIHRvIGJlIGNhbGxlZC4KICAgICAgICBpZiBub3QgKGZpbGUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlLmVuZHN3aXRoKCc+JykpOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdzb3VyY2UgY29kZSBub3QgYXZhaWxhYmxlJykKCiAgICBtb2R1bGUgPSBnZXRtb2R1bGUob2JqZWN0LCBmaWxlKQogICAgaWYgbW9kdWxlOgogICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKGZpbGUsIG1vZHVsZS5fX2RpY3RfXykKICAgIGVsc2U6CiAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoZmlsZSkKICAgIGlmIG5vdCBsaW5lczoKICAgICAgICByYWlzZSBPU0Vycm9yKCdjb3VsZCBub3QgZ2V0IHNvdXJjZSBjb2RlJykKCiAgICBpZiBpc21vZHVsZShvYmplY3QpOgogICAgICAgIHJldHVybiBsaW5lcywgMAoKICAgIGlmIGlzY2xhc3Mob2JqZWN0KToKICAgICAgICBxdWFsbmFtZSA9IG9iamVjdC5fX3F1YWxuYW1lX18KICAgICAgICBzb3VyY2UgPSAnJy5qb2luKGxpbmVzKQogICAgICAgIHRyZWUgPSBhc3QucGFyc2Uoc291cmNlKQogICAgICAgIGNsYXNzX2ZpbmRlciA9IF9DbGFzc0ZpbmRlcihxdWFsbmFtZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNsYXNzX2ZpbmRlci52aXNpdCh0cmVlKQogICAgICAgIGV4Y2VwdCBDbGFzc0ZvdW5kRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGxpbmVfbnVtYmVyID0gZS5hcmdzWzBdCiAgICAgICAgICAgIHJldHVybiBsaW5lcywgbGluZV9udW1iZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdjb3VsZCBub3QgZmluZCBjbGFzcyBkZWZpbml0aW9uJykKCiAgICBpZiBpc21ldGhvZChvYmplY3QpOgogICAgICAgIG9iamVjdCA9IG9iamVjdC5fX2Z1bmNfXwogICAgaWYgaXNmdW5jdGlvbihvYmplY3QpOgogICAgICAgIG9iamVjdCA9IG9iamVjdC5fX2NvZGVfXwogICAgaWYgaXN0cmFjZWJhY2sob2JqZWN0KToKICAgICAgICBvYmplY3QgPSBvYmplY3QudGJfZnJhbWUKICAgIGlmIGlzZnJhbWUob2JqZWN0KToKICAgICAgICBvYmplY3QgPSBvYmplY3QuZl9jb2RlCiAgICBpZiBpc2NvZGUob2JqZWN0KToKICAgICAgICBpZiBub3QgaGFzYXR0cihvYmplY3QsICdjb19maXJzdGxpbmVubycpOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdjb3VsZCBub3QgZmluZCBmdW5jdGlvbiBkZWZpbml0aW9uJykKICAgICAgICBsbnVtID0gb2JqZWN0LmNvX2ZpcnN0bGluZW5vIC0gMQogICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocideKFxzKmRlZlxzKXwoXHMqYXN5bmNccytkZWZccyl8KC4qKD88IVx3KWxhbWJkYSg6fFxzKSl8XihccypAKScpCiAgICAgICAgd2hpbGUgbG51bSA+IDA6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lc1tsbnVtXQogICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2xpbmVubyBpcyBvdXQgb2YgYm91bmRzJykKICAgICAgICAgICAgaWYgcGF0Lm1hdGNoKGxpbmUpOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgbG51bSA9IGxudW0gLSAxCiAgICAgICAgcmV0dXJuIGxpbmVzLCBsbnVtCiAgICByYWlzZSBPU0Vycm9yKCdjb3VsZCBub3QgZmluZCBjb2RlIG9iamVjdCcpCgpkZWYgZ2V0Y29tbWVudHMob2JqZWN0KToKICAgICIiIkdldCBsaW5lcyBvZiBjb21tZW50cyBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYW4gb2JqZWN0J3Mgc291cmNlIGNvZGUuCgogICAgUmV0dXJucyBOb25lIHdoZW4gc291cmNlIGNhbid0IGJlIGZvdW5kLgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgbGluZXMsIGxudW0gPSBmaW5kc291cmNlKG9iamVjdCkKICAgIGV4Y2VwdCAoT1NFcnJvciwgVHlwZUVycm9yKToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGlmIGlzbW9kdWxlKG9iamVjdCk6CiAgICAgICAgIyBMb29rIGZvciBhIGNvbW1lbnQgYmxvY2sgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4KICAgICAgICBzdGFydCA9IDAKICAgICAgICBpZiBsaW5lcyBhbmQgbGluZXNbMF1bOjJdID09ICcjISc6IHN0YXJ0ID0gMQogICAgICAgIHdoaWxlIHN0YXJ0IDwgbGVuKGxpbmVzKSBhbmQgbGluZXNbc3RhcnRdLnN0cmlwKCkgaW4gKCcnLCAnIycpOgogICAgICAgICAgICBzdGFydCA9IHN0YXJ0ICsgMQogICAgICAgIGlmIHN0YXJ0IDwgbGVuKGxpbmVzKSBhbmQgbGluZXNbc3RhcnRdWzoxXSA9PSAnIyc6CiAgICAgICAgICAgIGNvbW1lbnRzID0gW10KICAgICAgICAgICAgZW5kID0gc3RhcnQKICAgICAgICAgICAgd2hpbGUgZW5kIDwgbGVuKGxpbmVzKSBhbmQgbGluZXNbZW5kXVs6MV0gPT0gJyMnOgogICAgICAgICAgICAgICAgY29tbWVudHMuYXBwZW5kKGxpbmVzW2VuZF0uZXhwYW5kdGFicygpKQogICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQogICAgICAgICAgICByZXR1cm4gJycuam9pbihjb21tZW50cykKCiAgICAjIExvb2sgZm9yIGEgcHJlY2VkaW5nIGJsb2NrIG9mIGNvbW1lbnRzIGF0IHRoZSBzYW1lIGluZGVudGF0aW9uLgogICAgZWxpZiBsbnVtID4gMDoKICAgICAgICBpbmRlbnQgPSBpbmRlbnRzaXplKGxpbmVzW2xudW1dKQogICAgICAgIGVuZCA9IGxudW0gLSAxCiAgICAgICAgaWYgZW5kID49IDAgYW5kIGxpbmVzW2VuZF0ubHN0cmlwKClbOjFdID09ICcjJyBhbmQgXAogICAgICAgICAgICBpbmRlbnRzaXplKGxpbmVzW2VuZF0pID09IGluZGVudDoKICAgICAgICAgICAgY29tbWVudHMgPSBbbGluZXNbZW5kXS5leHBhbmR0YWJzKCkubHN0cmlwKCldCiAgICAgICAgICAgIGlmIGVuZCA+IDA6CiAgICAgICAgICAgICAgICBlbmQgPSBlbmQgLSAxCiAgICAgICAgICAgICAgICBjb21tZW50ID0gbGluZXNbZW5kXS5leHBhbmR0YWJzKCkubHN0cmlwKCkKICAgICAgICAgICAgICAgIHdoaWxlIGNvbW1lbnRbOjFdID09ICcjJyBhbmQgaW5kZW50c2l6ZShsaW5lc1tlbmRdKSA9PSBpbmRlbnQ6CiAgICAgICAgICAgICAgICAgICAgY29tbWVudHNbOjBdID0gW2NvbW1lbnRdCiAgICAgICAgICAgICAgICAgICAgZW5kID0gZW5kIC0gMQogICAgICAgICAgICAgICAgICAgIGlmIGVuZCA8IDA6IGJyZWFrCiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IGxpbmVzW2VuZF0uZXhwYW5kdGFicygpLmxzdHJpcCgpCiAgICAgICAgICAgIHdoaWxlIGNvbW1lbnRzIGFuZCBjb21tZW50c1swXS5zdHJpcCgpID09ICcjJzoKICAgICAgICAgICAgICAgIGNvbW1lbnRzWzoxXSA9IFtdCiAgICAgICAgICAgIHdoaWxlIGNvbW1lbnRzIGFuZCBjb21tZW50c1stMV0uc3RyaXAoKSA9PSAnIyc6CiAgICAgICAgICAgICAgICBjb21tZW50c1stMTpdID0gW10KICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oY29tbWVudHMpCgpjbGFzcyBFbmRPZkJsb2NrKEV4Y2VwdGlvbik6IHBhc3MKCmNsYXNzIEJsb2NrRmluZGVyOgogICAgIiIiUHJvdmlkZSBhIHRva2VuZWF0ZXIoKSBtZXRob2QgdG8gZGV0ZWN0IHRoZSBlbmQgb2YgYSBjb2RlIGJsb2NrLiIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuaW5kZW50ID0gMAogICAgICAgIHNlbGYuaXNsYW1iZGEgPSBGYWxzZQogICAgICAgIHNlbGYuc3RhcnRlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5wYXNzbGluZSA9IEZhbHNlCiAgICAgICAgc2VsZi5pbmRlY29yYXRvciA9IEZhbHNlCiAgICAgICAgc2VsZi5sYXN0ID0gMQogICAgICAgIHNlbGYuYm9keV9jb2wwID0gTm9uZQoKICAgIGRlZiB0b2tlbmVhdGVyKHNlbGYsIHR5cGUsIHRva2VuLCBzcm93Y29sLCBlcm93Y29sLCBsaW5lKToKICAgICAgICBpZiBub3Qgc2VsZi5zdGFydGVkIGFuZCBub3Qgc2VsZi5pbmRlY29yYXRvcjoKICAgICAgICAgICAgIyBza2lwIGFueSBkZWNvcmF0b3JzCiAgICAgICAgICAgIGlmIHRva2VuID09ICJAIjoKICAgICAgICAgICAgICAgIHNlbGYuaW5kZWNvcmF0b3IgPSBUcnVlCiAgICAgICAgICAgICMgbG9vayBmb3IgdGhlIGZpcnN0ICJkZWYiLCAiY2xhc3MiIG9yICJsYW1iZGEiCiAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gKCJkZWYiLCAiY2xhc3MiLCAibGFtYmRhIik6CiAgICAgICAgICAgICAgICBpZiB0b2tlbiA9PSAibGFtYmRhIjoKICAgICAgICAgICAgICAgICAgICBzZWxmLmlzbGFtYmRhID0gVHJ1ZQogICAgICAgICAgICAgICAgc2VsZi5zdGFydGVkID0gVHJ1ZQogICAgICAgICAgICBzZWxmLnBhc3NsaW5lID0gVHJ1ZSAgICAjIHNraXAgdG8gdGhlIGVuZCBvZiB0aGUgbGluZQogICAgICAgIGVsaWYgdHlwZSA9PSB0b2tlbml6ZS5ORVdMSU5FOgogICAgICAgICAgICBzZWxmLnBhc3NsaW5lID0gRmFsc2UgICAjIHN0b3Agc2tpcHBpbmcgd2hlbiBhIE5FV0xJTkUgaXMgc2VlbgogICAgICAgICAgICBzZWxmLmxhc3QgPSBzcm93Y29sWzBdCiAgICAgICAgICAgIGlmIHNlbGYuaXNsYW1iZGE6ICAgICAgICMgbGFtYmRhcyBhbHdheXMgZW5kIGF0IHRoZSBmaXJzdCBORVdMSU5FCiAgICAgICAgICAgICAgICByYWlzZSBFbmRPZkJsb2NrCiAgICAgICAgICAgICMgaGl0dGluZyBhIE5FV0xJTkUgd2hlbiBpbiBhIGRlY29yYXRvciB3aXRob3V0IGFyZ3MKICAgICAgICAgICAgIyBlbmRzIHRoZSBkZWNvcmF0b3IKICAgICAgICAgICAgaWYgc2VsZi5pbmRlY29yYXRvcjoKICAgICAgICAgICAgICAgIHNlbGYuaW5kZWNvcmF0b3IgPSBGYWxzZQogICAgICAgIGVsaWYgc2VsZi5wYXNzbGluZToKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsaWYgdHlwZSA9PSB0b2tlbml6ZS5JTkRFTlQ6CiAgICAgICAgICAgIGlmIHNlbGYuYm9keV9jb2wwIGlzIE5vbmUgYW5kIHNlbGYuc3RhcnRlZDoKICAgICAgICAgICAgICAgIHNlbGYuYm9keV9jb2wwID0gZXJvd2NvbFsxXQogICAgICAgICAgICBzZWxmLmluZGVudCA9IHNlbGYuaW5kZW50ICsgMQogICAgICAgICAgICBzZWxmLnBhc3NsaW5lID0gVHJ1ZQogICAgICAgIGVsaWYgdHlwZSA9PSB0b2tlbml6ZS5ERURFTlQ6CiAgICAgICAgICAgIHNlbGYuaW5kZW50ID0gc2VsZi5pbmRlbnQgLSAxCiAgICAgICAgICAgICMgdGhlIGVuZCBvZiBtYXRjaGluZyBpbmRlbnQvZGVkZW50IHBhaXJzIGVuZCBhIGJsb2NrCiAgICAgICAgICAgICMgKG5vdGUgdGhhdCB0aGlzIG9ubHkgd29ya3MgZm9yICJkZWYiLyJjbGFzcyIgYmxvY2tzLAogICAgICAgICAgICAjICBub3QgZS5nLiBmb3IgImlmOiBlbHNlOiIgb3IgInRyeTogZmluYWxseToiIGJsb2NrcykKICAgICAgICAgICAgaWYgc2VsZi5pbmRlbnQgPD0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIEVuZE9mQmxvY2sKICAgICAgICBlbGlmIHR5cGUgPT0gdG9rZW5pemUuQ09NTUVOVDoKICAgICAgICAgICAgaWYgc2VsZi5ib2R5X2NvbDAgaXMgbm90IE5vbmUgYW5kIHNyb3djb2xbMV0gPj0gc2VsZi5ib2R5X2NvbDA6CiAgICAgICAgICAgICAgICAjIEluY2x1ZGUgY29tbWVudHMgaWYgaW5kZW50ZWQgYXQgbGVhc3QgYXMgbXVjaCBhcyB0aGUgYmxvY2sKICAgICAgICAgICAgICAgIHNlbGYubGFzdCA9IHNyb3djb2xbMF0KICAgICAgICBlbGlmIHNlbGYuaW5kZW50ID09IDAgYW5kIHR5cGUgbm90IGluICh0b2tlbml6ZS5DT01NRU5ULCB0b2tlbml6ZS5OTCk6CiAgICAgICAgICAgICMgYW55IG90aGVyIHRva2VuIG9uIHRoZSBzYW1lIGluZGVudGF0aW9uIGxldmVsIGVuZCB0aGUgcHJldmlvdXMKICAgICAgICAgICAgIyBibG9jayBhcyB3ZWxsLCBleGNlcHQgdGhlIHBzZXVkby10b2tlbnMgQ09NTUVOVCBhbmQgTkwuCiAgICAgICAgICAgIHJhaXNlIEVuZE9mQmxvY2sKCmRlZiBnZXRibG9jayhsaW5lcyk6CiAgICAiIiJFeHRyYWN0IHRoZSBibG9jayBvZiBjb2RlIGF0IHRoZSB0b3Agb2YgdGhlIGdpdmVuIGxpc3Qgb2YgbGluZXMuIiIiCiAgICBibG9ja2ZpbmRlciA9IEJsb2NrRmluZGVyKCkKICAgIHRyeToKICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoaXRlcihsaW5lcykuX19uZXh0X18pCiAgICAgICAgZm9yIF90b2tlbiBpbiB0b2tlbnM6CiAgICAgICAgICAgIGJsb2NrZmluZGVyLnRva2VuZWF0ZXIoKl90b2tlbikKICAgIGV4Y2VwdCAoRW5kT2ZCbG9jaywgSW5kZW50YXRpb25FcnJvcik6CiAgICAgICAgcGFzcwogICAgcmV0dXJuIGxpbmVzWzpibG9ja2ZpbmRlci5sYXN0XQoKZGVmIGdldHNvdXJjZWxpbmVzKG9iamVjdCk6CiAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHNvdXJjZSBsaW5lcyBhbmQgc3RhcnRpbmcgbGluZSBudW1iZXIgZm9yIGFuIG9iamVjdC4KCiAgICBUaGUgYXJndW1lbnQgbWF5IGJlIGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCBmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwKICAgIG9yIGNvZGUgb2JqZWN0LiAgVGhlIHNvdXJjZSBjb2RlIGlzIHJldHVybmVkIGFzIGEgbGlzdCBvZiB0aGUgbGluZXMKICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9iamVjdCBhbmQgdGhlIGxpbmUgbnVtYmVyIGluZGljYXRlcyB3aGVyZSBpbiB0aGUKICAgIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdCBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gT1NFcnJvciBpcwogICAgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QgYmUgcmV0cmlldmVkLiIiIgogICAgb2JqZWN0ID0gdW53cmFwKG9iamVjdCkKICAgIGxpbmVzLCBsbnVtID0gZmluZHNvdXJjZShvYmplY3QpCgogICAgaWYgaXN0cmFjZWJhY2sob2JqZWN0KToKICAgICAgICBvYmplY3QgPSBvYmplY3QudGJfZnJhbWUKCiAgICAjIGZvciBtb2R1bGUgb3IgZnJhbWUgdGhhdCBjb3JyZXNwb25kcyB0byBtb2R1bGUsIHJldHVybiBhbGwgc291cmNlIGxpbmVzCiAgICBpZiAoaXNtb2R1bGUob2JqZWN0KSBvcgogICAgICAgIChpc2ZyYW1lKG9iamVjdCkgYW5kIG9iamVjdC5mX2NvZGUuY29fbmFtZSA9PSAiPG1vZHVsZT4iKSk6CiAgICAgICAgcmV0dXJuIGxpbmVzLCAwCiAgICBlbHNlOgogICAgICAgIHJldHVybiBnZXRibG9jayhsaW5lc1tsbnVtOl0pLCBsbnVtICsgMQoKZGVmIGdldHNvdXJjZShvYmplY3QpOgogICAgIiIiUmV0dXJuIHRoZSB0ZXh0IG9mIHRoZSBzb3VyY2UgY29kZSBmb3IgYW4gb2JqZWN0LgoKICAgIFRoZSBhcmd1bWVudCBtYXkgYmUgYSBtb2R1bGUsIGNsYXNzLCBtZXRob2QsIGZ1bmN0aW9uLCB0cmFjZWJhY2ssIGZyYW1lLAogICAgb3IgY29kZSBvYmplY3QuICBUaGUgc291cmNlIGNvZGUgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgc3RyaW5nLiAgQW4KICAgIE9TRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QgYmUgcmV0cmlldmVkLiIiIgogICAgbGluZXMsIGxudW0gPSBnZXRzb3VyY2VsaW5lcyhvYmplY3QpCiAgICByZXR1cm4gJycuam9pbihsaW5lcykKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNsYXNzIHRyZWUgZXh0cmFjdGlvbgpkZWYgd2Fsa3RyZWUoY2xhc3NlcywgY2hpbGRyZW4sIHBhcmVudCk6CiAgICAiIiJSZWN1cnNpdmUgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXRjbGFzc3RyZWUoKS4iIiIKICAgIHJlc3VsdHMgPSBbXQogICAgY2xhc3Nlcy5zb3J0KGtleT1hdHRyZ2V0dGVyKCdfX21vZHVsZV9fJywgJ19fbmFtZV9fJykpCiAgICBmb3IgYyBpbiBjbGFzc2VzOgogICAgICAgIHJlc3VsdHMuYXBwZW5kKChjLCBjLl9fYmFzZXNfXykpCiAgICAgICAgaWYgYyBpbiBjaGlsZHJlbjoKICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQod2Fsa3RyZWUoY2hpbGRyZW5bY10sIGNoaWxkcmVuLCBjKSkKICAgIHJldHVybiByZXN1bHRzCgpkZWYgZ2V0Y2xhc3N0cmVlKGNsYXNzZXMsIHVuaXF1ZT1GYWxzZSk6CiAgICAiIiJBcnJhbmdlIHRoZSBnaXZlbiBsaXN0IG9mIGNsYXNzZXMgaW50byBhIGhpZXJhcmNoeSBvZiBuZXN0ZWQgbGlzdHMuCgogICAgV2hlcmUgYSBuZXN0ZWQgbGlzdCBhcHBlYXJzLCBpdCBjb250YWlucyBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aGUgY2xhc3MKICAgIHdob3NlIGVudHJ5IGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBsaXN0LiAgRWFjaCBlbnRyeSBpcyBhIDItdHVwbGUKICAgIGNvbnRhaW5pbmcgYSBjbGFzcyBhbmQgYSB0dXBsZSBvZiBpdHMgYmFzZSBjbGFzc2VzLiAgSWYgdGhlICd1bmlxdWUnCiAgICBhcmd1bWVudCBpcyB0cnVlLCBleGFjdGx5IG9uZSBlbnRyeSBhcHBlYXJzIGluIHRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUKICAgIGZvciBlYWNoIGNsYXNzIGluIHRoZSBnaXZlbiBsaXN0LiAgT3RoZXJ3aXNlLCBjbGFzc2VzIHVzaW5nIG11bHRpcGxlCiAgICBpbmhlcml0YW5jZSBhbmQgdGhlaXIgZGVzY2VuZGFudHMgd2lsbCBhcHBlYXIgbXVsdGlwbGUgdGltZXMuIiIiCiAgICBjaGlsZHJlbiA9IHt9CiAgICByb290cyA9IFtdCiAgICBmb3IgYyBpbiBjbGFzc2VzOgogICAgICAgIGlmIGMuX19iYXNlc19fOgogICAgICAgICAgICBmb3IgcGFyZW50IGluIGMuX19iYXNlc19fOgogICAgICAgICAgICAgICAgaWYgcGFyZW50IG5vdCBpbiBjaGlsZHJlbjoKICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltwYXJlbnRdID0gW10KICAgICAgICAgICAgICAgIGlmIGMgbm90IGluIGNoaWxkcmVuW3BhcmVudF06CiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5bcGFyZW50XS5hcHBlbmQoYykKICAgICAgICAgICAgICAgIGlmIHVuaXF1ZSBhbmQgcGFyZW50IGluIGNsYXNzZXM6IGJyZWFrCiAgICAgICAgZWxpZiBjIG5vdCBpbiByb290czoKICAgICAgICAgICAgcm9vdHMuYXBwZW5kKGMpCiAgICBmb3IgcGFyZW50IGluIGNoaWxkcmVuOgogICAgICAgIGlmIHBhcmVudCBub3QgaW4gY2xhc3NlczoKICAgICAgICAgICAgcm9vdHMuYXBwZW5kKHBhcmVudCkKICAgIHJldHVybiB3YWxrdHJlZShyb290cywgY2hpbGRyZW4sIE5vbmUpCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhcmd1bWVudCBsaXN0IGV4dHJhY3Rpb24KQXJndW1lbnRzID0gbmFtZWR0dXBsZSgnQXJndW1lbnRzJywgJ2FyZ3MsIHZhcmFyZ3MsIHZhcmt3JykKCmRlZiBnZXRhcmdzKGNvKToKICAgICIiIkdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJndW1lbnRzIGFjY2VwdGVkIGJ5IGEgY29kZSBvYmplY3QuCgogICAgVGhyZWUgdGhpbmdzIGFyZSByZXR1cm5lZDogKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3KSwgd2hlcmUKICAgICdhcmdzJyBpcyB0aGUgbGlzdCBvZiBhcmd1bWVudCBuYW1lcy4gS2V5d29yZC1vbmx5IGFyZ3VtZW50cyBhcmUKICAgIGFwcGVuZGVkLiAndmFyYXJncycgYW5kICd2YXJrdycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKioKICAgIGFyZ3VtZW50cyBvciBOb25lLiIiIgogICAgaWYgbm90IGlzY29kZShjbyk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGNvZGUgb2JqZWN0Jy5mb3JtYXQoY28pKQoKICAgIG5hbWVzID0gY28uY29fdmFybmFtZXMKICAgIG5hcmdzID0gY28uY29fYXJnY291bnQKICAgIG5rd2FyZ3MgPSBjby5jb19rd29ubHlhcmdjb3VudAogICAgYXJncyA9IGxpc3QobmFtZXNbOm5hcmdzXSkKICAgIGt3b25seWFyZ3MgPSBsaXN0KG5hbWVzW25hcmdzOm5hcmdzK25rd2FyZ3NdKQogICAgc3RlcCA9IDAKCiAgICBuYXJncyArPSBua3dhcmdzCiAgICB2YXJhcmdzID0gTm9uZQogICAgaWYgY28uY29fZmxhZ3MgJiBDT19WQVJBUkdTOgogICAgICAgIHZhcmFyZ3MgPSBjby5jb192YXJuYW1lc1tuYXJnc10KICAgICAgICBuYXJncyA9IG5hcmdzICsgMQogICAgdmFya3cgPSBOb25lCiAgICBpZiBjby5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTOgogICAgICAgIHZhcmt3ID0gY28uY29fdmFybmFtZXNbbmFyZ3NdCiAgICByZXR1cm4gQXJndW1lbnRzKGFyZ3MgKyBrd29ubHlhcmdzLCB2YXJhcmdzLCB2YXJrdykKCgpGdWxsQXJnU3BlYyA9IG5hbWVkdHVwbGUoJ0Z1bGxBcmdTcGVjJywKICAgICdhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9ucycpCgpkZWYgZ2V0ZnVsbGFyZ3NwZWMoZnVuYyk6CiAgICAiIiJHZXQgdGhlIG5hbWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBvZiBhIGNhbGxhYmxlIG9iamVjdCdzIHBhcmFtZXRlcnMuCgogICAgQSB0dXBsZSBvZiBzZXZlbiB0aGluZ3MgaXMgcmV0dXJuZWQ6CiAgICAoYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnMpLgogICAgJ2FyZ3MnIGlzIGEgbGlzdCBvZiB0aGUgcGFyYW1ldGVyIG5hbWVzLgogICAgJ3ZhcmFyZ3MnIGFuZCAndmFya3cnIGFyZSB0aGUgbmFtZXMgb2YgdGhlICogYW5kICoqIHBhcmFtZXRlcnMgb3IgTm9uZS4KICAgICdkZWZhdWx0cycgaXMgYW4gbi10dXBsZSBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgbiBwYXJhbWV0ZXJzLgogICAgJ2t3b25seWFyZ3MnIGlzIGEgbGlzdCBvZiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyIG5hbWVzLgogICAgJ2t3b25seWRlZmF1bHRzJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBuYW1lcyBmcm9tIGt3b25seWFyZ3MgdG8gZGVmYXVsdHMuCiAgICAnYW5ub3RhdGlvbnMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIHBhcmFtZXRlciBuYW1lcyB0byBhbm5vdGF0aW9ucy4KCiAgICBOb3RhYmxlIGRpZmZlcmVuY2VzIGZyb20gaW5zcGVjdC5zaWduYXR1cmUoKToKICAgICAgLSB0aGUgInNlbGYiIHBhcmFtZXRlciBpcyBhbHdheXMgcmVwb3J0ZWQsIGV2ZW4gZm9yIGJvdW5kIG1ldGhvZHMKICAgICAgLSB3cmFwcGVyIGNoYWlucyBkZWZpbmVkIGJ5IF9fd3JhcHBlZF9fICpub3QqIHVud3JhcHBlZCBhdXRvbWF0aWNhbGx5CiAgICAiIiIKICAgIHRyeToKICAgICAgICAjIFJlOiBgc2tpcF9ib3VuZF9hcmc9RmFsc2VgCiAgICAgICAgIwogICAgICAgICMgVGhlcmUgaXMgYSBub3RhYmxlIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyIGJldHdlZW4gZ2V0ZnVsbGFyZ3NwZWMKICAgICAgICAjIGFuZCBTaWduYXR1cmU6IHRoZSBmb3JtZXIgYWx3YXlzIHJldHVybnMgJ3NlbGYnIHBhcmFtZXRlciBmb3IgYm91bmQKICAgICAgICAjIG1ldGhvZHMsIHdoZXJlYXMgdGhlIFNpZ25hdHVyZSBhbHdheXMgc2hvd3MgdGhlIGFjdHVhbCBjYWxsaW5nCiAgICAgICAgIyBzaWduYXR1cmUgb2YgdGhlIHBhc3NlZCBvYmplY3QuCiAgICAgICAgIwogICAgICAgICMgVG8gc2ltdWxhdGUgdGhpcyBiZWhhdmlvdXIsIHdlICJ1bmJpbmQiIGJvdW5kIG1ldGhvZHMsIHRvIHRyaWNrCiAgICAgICAgIyBpbnNwZWN0LnNpZ25hdHVyZSB0byBhbHdheXMgcmV0dXJuIHRoZWlyIGZpcnN0IHBhcmFtZXRlciAoInNlbGYiLAogICAgICAgICMgdXN1YWxseSkKCiAgICAgICAgIyBSZTogYGZvbGxvd193cmFwcGVyX2NoYWlucz1GYWxzZWAKICAgICAgICAjCiAgICAgICAgIyBnZXRmdWxsYXJnc3BlYygpIGhpc3RvcmljYWxseSBpZ25vcmVkIF9fd3JhcHBlZF9fIGF0dHJpYnV0ZXMsCiAgICAgICAgIyBzbyB3ZSBlbnN1cmUgdGhhdCByZW1haW5zIHRoZSBjYXNlIGluIDMuMysKCiAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2Nscz1TaWduYXR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxfc3RyPUZhbHNlKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKICAgICAgICAjIE1vc3Qgb2YgdGhlIHRpbWVzICdzaWduYXR1cmUnIHdpbGwgcmFpc2UgVmFsdWVFcnJvci4KICAgICAgICAjIEJ1dCwgaXQgY2FuIGFsc28gcmFpc2UgQXR0cmlidXRlRXJyb3IsIGFuZCwgbWF5YmUgc29tZXRoaW5nCiAgICAgICAgIyBlbHNlLiBTbyB0byBiZSBmdWxseSBiYWNrd2FyZHMgY29tcGF0aWJsZSwgd2UgY2F0Y2ggYWxsCiAgICAgICAgIyBwb3NzaWJsZSBleGNlcHRpb25zIGhlcmUsIGFuZCByZXJhaXNlIGEgVHlwZUVycm9yLgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigndW5zdXBwb3J0ZWQgY2FsbGFibGUnKSBmcm9tIGV4CgogICAgYXJncyA9IFtdCiAgICB2YXJhcmdzID0gTm9uZQogICAgdmFya3cgPSBOb25lCiAgICBwb3Nvbmx5YXJncyA9IFtdCiAgICBrd29ubHlhcmdzID0gW10KICAgIGFubm90YXRpb25zID0ge30KICAgIGRlZmF1bHRzID0gKCkKICAgIGt3ZGVmYXVsdHMgPSB7fQoKICAgIGlmIHNpZy5yZXR1cm5fYW5ub3RhdGlvbiBpcyBub3Qgc2lnLmVtcHR5OgogICAgICAgIGFubm90YXRpb25zWydyZXR1cm4nXSA9IHNpZy5yZXR1cm5fYW5ub3RhdGlvbgoKICAgIGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKICAgICAgICBraW5kID0gcGFyYW0ua2luZAogICAgICAgIG5hbWUgPSBwYXJhbS5uYW1lCgogICAgICAgIGlmIGtpbmQgaXMgX1BPU0lUSU9OQUxfT05MWToKICAgICAgICAgICAgcG9zb25seWFyZ3MuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgIGlmIHBhcmFtLmRlZmF1bHQgaXMgbm90IHBhcmFtLmVtcHR5OgogICAgICAgICAgICAgICAgZGVmYXVsdHMgKz0gKHBhcmFtLmRlZmF1bHQsKQogICAgICAgIGVsaWYga2luZCBpcyBfUE9TSVRJT05BTF9PUl9LRVlXT1JEOgogICAgICAgICAgICBhcmdzLmFwcGVuZChuYW1lKQogICAgICAgICAgICBpZiBwYXJhbS5kZWZhdWx0IGlzIG5vdCBwYXJhbS5lbXB0eToKICAgICAgICAgICAgICAgIGRlZmF1bHRzICs9IChwYXJhbS5kZWZhdWx0LCkKICAgICAgICBlbGlmIGtpbmQgaXMgX1ZBUl9QT1NJVElPTkFMOgogICAgICAgICAgICB2YXJhcmdzID0gbmFtZQogICAgICAgIGVsaWYga2luZCBpcyBfS0VZV09SRF9PTkxZOgogICAgICAgICAgICBrd29ubHlhcmdzLmFwcGVuZChuYW1lKQogICAgICAgICAgICBpZiBwYXJhbS5kZWZhdWx0IGlzIG5vdCBwYXJhbS5lbXB0eToKICAgICAgICAgICAgICAgIGt3ZGVmYXVsdHNbbmFtZV0gPSBwYXJhbS5kZWZhdWx0CiAgICAgICAgZWxpZiBraW5kIGlzIF9WQVJfS0VZV09SRDoKICAgICAgICAgICAgdmFya3cgPSBuYW1lCgogICAgICAgIGlmIHBhcmFtLmFubm90YXRpb24gaXMgbm90IHBhcmFtLmVtcHR5OgogICAgICAgICAgICBhbm5vdGF0aW9uc1tuYW1lXSA9IHBhcmFtLmFubm90YXRpb24KCiAgICBpZiBub3Qga3dkZWZhdWx0czoKICAgICAgICAjIGNvbXBhdGliaWxpdHkgd2l0aCAnZnVuYy5fX2t3ZGVmYXVsdHNfXycKICAgICAgICBrd2RlZmF1bHRzID0gTm9uZQoKICAgIGlmIG5vdCBkZWZhdWx0czoKICAgICAgICAjIGNvbXBhdGliaWxpdHkgd2l0aCAnZnVuYy5fX2RlZmF1bHRzX18nCiAgICAgICAgZGVmYXVsdHMgPSBOb25lCgogICAgcmV0dXJuIEZ1bGxBcmdTcGVjKHBvc29ubHlhcmdzICsgYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgIGt3b25seWFyZ3MsIGt3ZGVmYXVsdHMsIGFubm90YXRpb25zKQoKCkFyZ0luZm8gPSBuYW1lZHR1cGxlKCdBcmdJbmZvJywgJ2FyZ3MgdmFyYXJncyBrZXl3b3JkcyBsb2NhbHMnKQoKZGVmIGdldGFyZ3ZhbHVlcyhmcmFtZSk6CiAgICAiIiJHZXQgaW5mb3JtYXRpb24gYWJvdXQgYXJndW1lbnRzIHBhc3NlZCBpbnRvIGEgcGFydGljdWxhciBmcmFtZS4KCiAgICBBIHR1cGxlIG9mIGZvdXIgdGhpbmdzIGlzIHJldHVybmVkOiAoYXJncywgdmFyYXJncywgdmFya3csIGxvY2FscykuCiAgICAnYXJncycgaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4KICAgICd2YXJhcmdzJyBhbmQgJ3Zhcmt3JyBhcmUgdGhlIG5hbWVzIG9mIHRoZSAqIGFuZCAqKiBhcmd1bWVudHMgb3IgTm9uZS4KICAgICdsb2NhbHMnIGlzIHRoZSBsb2NhbHMgZGljdGlvbmFyeSBvZiB0aGUgZ2l2ZW4gZnJhbWUuIiIiCiAgICBhcmdzLCB2YXJhcmdzLCB2YXJrdyA9IGdldGFyZ3MoZnJhbWUuZl9jb2RlKQogICAgcmV0dXJuIEFyZ0luZm8oYXJncywgdmFyYXJncywgdmFya3csIGZyYW1lLmZfbG9jYWxzKQoKZGVmIGZvcm1hdGFubm90YXRpb24oYW5ub3RhdGlvbiwgYmFzZV9tb2R1bGU9Tm9uZSk6CiAgICBpZiBnZXRhdHRyKGFubm90YXRpb24sICdfX21vZHVsZV9fJywgTm9uZSkgPT0gJ3R5cGluZyc6CiAgICAgICAgZGVmIHJlcGwobWF0Y2gpOgogICAgICAgICAgICB0ZXh0ID0gbWF0Y2guZ3JvdXAoKQogICAgICAgICAgICByZXR1cm4gdGV4dC5yZW1vdmVwcmVmaXgoJ3R5cGluZy4nKQogICAgICAgIHJldHVybiByZS5zdWIocidbXHdcLl0rJywgcmVwbCwgcmVwcihhbm5vdGF0aW9uKSkKICAgIGlmIGlzaW5zdGFuY2UoYW5ub3RhdGlvbiwgdHlwZXMuR2VuZXJpY0FsaWFzKToKICAgICAgICByZXR1cm4gc3RyKGFubm90YXRpb24pCiAgICBpZiBpc2luc3RhbmNlKGFubm90YXRpb24sIHR5cGUpOgogICAgICAgIGlmIGFubm90YXRpb24uX19tb2R1bGVfXyBpbiAoJ2J1aWx0aW5zJywgYmFzZV9tb2R1bGUpOgogICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX3F1YWxuYW1lX18KICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX21vZHVsZV9fKycuJythbm5vdGF0aW9uLl9fcXVhbG5hbWVfXwogICAgcmV0dXJuIHJlcHIoYW5ub3RhdGlvbikKCmRlZiBmb3JtYXRhbm5vdGF0aW9ucmVsYXRpdmV0byhvYmplY3QpOgogICAgbW9kdWxlID0gZ2V0YXR0cihvYmplY3QsICdfX21vZHVsZV9fJywgTm9uZSkKICAgIGRlZiBfZm9ybWF0YW5ub3RhdGlvbihhbm5vdGF0aW9uKToKICAgICAgICByZXR1cm4gZm9ybWF0YW5ub3RhdGlvbihhbm5vdGF0aW9uLCBtb2R1bGUpCiAgICByZXR1cm4gX2Zvcm1hdGFubm90YXRpb24KCgpkZWYgZm9ybWF0YXJndmFsdWVzKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBsb2NhbHMsCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0YXJnPXN0ciwKICAgICAgICAgICAgICAgICAgICBmb3JtYXR2YXJhcmdzPWxhbWJkYSBuYW1lOiAnKicgKyBuYW1lLAogICAgICAgICAgICAgICAgICAgIGZvcm1hdHZhcmt3PWxhbWJkYSBuYW1lOiAnKionICsgbmFtZSwKICAgICAgICAgICAgICAgICAgICBmb3JtYXR2YWx1ZT1sYW1iZGEgdmFsdWU6ICc9JyArIHJlcHIodmFsdWUpKToKICAgICIiIkZvcm1hdCBhbiBhcmd1bWVudCBzcGVjIGZyb20gdGhlIDQgdmFsdWVzIHJldHVybmVkIGJ5IGdldGFyZ3ZhbHVlcy4KCiAgICBUaGUgZmlyc3QgZm91ciBhcmd1bWVudHMgYXJlIChhcmdzLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzKS4gIFRoZQogICAgbmV4dCBmb3VyIGFyZ3VtZW50cyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uYWwgZm9ybWF0dGluZyBmdW5jdGlvbnMKICAgIHRoYXQgYXJlIGNhbGxlZCB0byB0dXJuIG5hbWVzIGFuZCB2YWx1ZXMgaW50byBzdHJpbmdzLiAgVGhlIG5pbnRoCiAgICBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB0byBmb3JtYXQgdGhlIHNlcXVlbmNlIG9mIGFyZ3VtZW50cy4iIiIKICAgIGRlZiBjb252ZXJ0KG5hbWUsIGxvY2Fscz1sb2NhbHMsCiAgICAgICAgICAgICAgICBmb3JtYXRhcmc9Zm9ybWF0YXJnLCBmb3JtYXR2YWx1ZT1mb3JtYXR2YWx1ZSk6CiAgICAgICAgcmV0dXJuIGZvcm1hdGFyZyhuYW1lKSArIGZvcm1hdHZhbHVlKGxvY2Fsc1tuYW1lXSkKICAgIHNwZWNzID0gW10KICAgIGZvciBpIGluIHJhbmdlKGxlbihhcmdzKSk6CiAgICAgICAgc3BlY3MuYXBwZW5kKGNvbnZlcnQoYXJnc1tpXSkpCiAgICBpZiB2YXJhcmdzOgogICAgICAgIHNwZWNzLmFwcGVuZChmb3JtYXR2YXJhcmdzKHZhcmFyZ3MpICsgZm9ybWF0dmFsdWUobG9jYWxzW3ZhcmFyZ3NdKSkKICAgIGlmIHZhcmt3OgogICAgICAgIHNwZWNzLmFwcGVuZChmb3JtYXR2YXJrdyh2YXJrdykgKyBmb3JtYXR2YWx1ZShsb2NhbHNbdmFya3ddKSkKICAgIHJldHVybiAnKCcgKyAnLCAnLmpvaW4oc3BlY3MpICsgJyknCgpkZWYgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwgYXJnbmFtZXMsIHBvcywgdmFsdWVzKToKICAgIG5hbWVzID0gW3JlcHIobmFtZSkgZm9yIG5hbWUgaW4gYXJnbmFtZXMgaWYgbmFtZSBub3QgaW4gdmFsdWVzXQogICAgbWlzc2luZyA9IGxlbihuYW1lcykKICAgIGlmIG1pc3NpbmcgPT0gMToKICAgICAgICBzID0gbmFtZXNbMF0KICAgIGVsaWYgbWlzc2luZyA9PSAyOgogICAgICAgIHMgPSAie30gYW5kIHt9Ii5mb3JtYXQoKm5hbWVzKQogICAgZWxzZToKICAgICAgICB0YWlsID0gIiwge30gYW5kIHt9Ii5mb3JtYXQoKm5hbWVzWy0yOl0pCiAgICAgICAgZGVsIG5hbWVzWy0yOl0KICAgICAgICBzID0gIiwgIi5qb2luKG5hbWVzKSArIHRhaWwKICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSBtaXNzaW5nICVpIHJlcXVpcmVkICVzIGFyZ3VtZW50JXM6ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwgbWlzc2luZywKICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIiBpZiBwb3MgZWxzZSAia2V5d29yZC1vbmx5IiwKICAgICAgICAgICAgICAgICAgICAgICIiIGlmIG1pc3NpbmcgPT0gMSBlbHNlICJzIiwgcykpCgpkZWYgX3Rvb19tYW55KGZfbmFtZSwgYXJncywga3dvbmx5LCB2YXJhcmdzLCBkZWZjb3VudCwgZ2l2ZW4sIHZhbHVlcyk6CiAgICBhdGxlYXN0ID0gbGVuKGFyZ3MpIC0gZGVmY291bnQKICAgIGt3b25seV9naXZlbiA9IGxlbihbYXJnIGZvciBhcmcgaW4ga3dvbmx5IGlmIGFyZyBpbiB2YWx1ZXNdKQogICAgaWYgdmFyYXJnczoKICAgICAgICBwbHVyYWwgPSBhdGxlYXN0ICE9IDEKICAgICAgICBzaWcgPSAiYXQgbGVhc3QgJWQiICUgKGF0bGVhc3QsKQogICAgZWxpZiBkZWZjb3VudDoKICAgICAgICBwbHVyYWwgPSBUcnVlCiAgICAgICAgc2lnID0gImZyb20gJWQgdG8gJWQiICUgKGF0bGVhc3QsIGxlbihhcmdzKSkKICAgIGVsc2U6CiAgICAgICAgcGx1cmFsID0gbGVuKGFyZ3MpICE9IDEKICAgICAgICBzaWcgPSBzdHIobGVuKGFyZ3MpKQogICAga3dvbmx5X3NpZyA9ICIiCiAgICBpZiBrd29ubHlfZ2l2ZW46CiAgICAgICAgbXNnID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiCiAgICAgICAga3dvbmx5X3NpZyA9IChtc2cgJSAoInMiIGlmIGdpdmVuICE9IDEgZWxzZSAiIiwga3dvbmx5X2dpdmVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiBpZiBrd29ubHlfZ2l2ZW4gIT0gMSBlbHNlICIiKSkKICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSB0YWtlcyAlcyBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICVkJXMgJXMgZ2l2ZW4iICUKICAgICAgICAgICAgKGZfbmFtZSwgc2lnLCAicyIgaWYgcGx1cmFsIGVsc2UgIiIsIGdpdmVuLCBrd29ubHlfc2lnLAogICAgICAgICAgICAgIndhcyIgaWYgZ2l2ZW4gPT0gMSBhbmQgbm90IGt3b25seV9naXZlbiBlbHNlICJ3ZXJlIikpCgpkZWYgZ2V0Y2FsbGFyZ3MoZnVuYywgLywgKnBvc2l0aW9uYWwsICoqbmFtZWQpOgogICAgIiIiR2V0IHRoZSBtYXBwaW5nIG9mIGFyZ3VtZW50cyB0byB2YWx1ZXMuCgogICAgQSBkaWN0IGlzIHJldHVybmVkLCB3aXRoIGtleXMgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IG5hbWVzIChpbmNsdWRpbmcgdGhlCiAgICBuYW1lcyBvZiB0aGUgKiBhbmQgKiogYXJndW1lbnRzLCBpZiBhbnkpLCBhbmQgdmFsdWVzIHRoZSByZXNwZWN0aXZlIGJvdW5kCiAgICB2YWx1ZXMgZnJvbSAncG9zaXRpb25hbCcgYW5kICduYW1lZCcuIiIiCiAgICBzcGVjID0gZ2V0ZnVsbGFyZ3NwZWMoZnVuYykKICAgIGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubiA9IHNwZWMKICAgIGZfbmFtZSA9IGZ1bmMuX19uYW1lX18KICAgIGFyZzJ2YWx1ZSA9IHt9CgoKICAgIGlmIGlzbWV0aG9kKGZ1bmMpIGFuZCBmdW5jLl9fc2VsZl9fIGlzIG5vdCBOb25lOgogICAgICAgICMgaW1wbGljaXQgJ3NlbGYnIChvciAnY2xzJyBmb3IgY2xhc3NtZXRob2RzKSBhcmd1bWVudAogICAgICAgIHBvc2l0aW9uYWwgPSAoZnVuYy5fX3NlbGZfXywpICsgcG9zaXRpb25hbAogICAgbnVtX3BvcyA9IGxlbihwb3NpdGlvbmFsKQogICAgbnVtX2FyZ3MgPSBsZW4oYXJncykKICAgIG51bV9kZWZhdWx0cyA9IGxlbihkZWZhdWx0cykgaWYgZGVmYXVsdHMgZWxzZSAwCgogICAgbiA9IG1pbihudW1fcG9zLCBudW1fYXJncykKICAgIGZvciBpIGluIHJhbmdlKG4pOgogICAgICAgIGFyZzJ2YWx1ZVthcmdzW2ldXSA9IHBvc2l0aW9uYWxbaV0KICAgIGlmIHZhcmFyZ3M6CiAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gdHVwbGUocG9zaXRpb25hbFtuOl0pCiAgICBwb3NzaWJsZV9rd2FyZ3MgPSBzZXQoYXJncyArIGt3b25seWFyZ3MpCiAgICBpZiB2YXJrdzoKICAgICAgICBhcmcydmFsdWVbdmFya3ddID0ge30KICAgIGZvciBrdywgdmFsdWUgaW4gbmFtZWQuaXRlbXMoKToKICAgICAgICBpZiBrdyBub3QgaW4gcG9zc2libGVfa3dhcmdzOgogICAgICAgICAgICBpZiBub3QgdmFya3c6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIGt3KSkKICAgICAgICAgICAgYXJnMnZhbHVlW3Zhcmt3XVtrd10gPSB2YWx1ZQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGt3IGluIGFyZzJ2YWx1ZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICVyIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCiAgICAgICAgYXJnMnZhbHVlW2t3XSA9IHZhbHVlCiAgICBpZiBudW1fcG9zID4gbnVtX2FyZ3MgYW5kIG5vdCB2YXJhcmdzOgogICAgICAgIF90b29fbWFueShmX25hbWUsIGFyZ3MsIGt3b25seWFyZ3MsIHZhcmFyZ3MsIG51bV9kZWZhdWx0cywKICAgICAgICAgICAgICAgICAgIG51bV9wb3MsIGFyZzJ2YWx1ZSkKICAgIGlmIG51bV9wb3MgPCBudW1fYXJnczoKICAgICAgICByZXEgPSBhcmdzWzpudW1fYXJncyAtIG51bV9kZWZhdWx0c10KICAgICAgICBmb3IgYXJnIGluIHJlcToKICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBhcmcydmFsdWU6CiAgICAgICAgICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCByZXEsIFRydWUsIGFyZzJ2YWx1ZSkKICAgICAgICBmb3IgaSwgYXJnIGluIGVudW1lcmF0ZShhcmdzW251bV9hcmdzIC0gbnVtX2RlZmF1bHRzOl0pOgogICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gZGVmYXVsdHNbaV0KICAgIG1pc3NpbmcgPSAwCiAgICBmb3Iga3dhcmcgaW4ga3dvbmx5YXJnczoKICAgICAgICBpZiBrd2FyZyBub3QgaW4gYXJnMnZhbHVlOgogICAgICAgICAgICBpZiBrd29ubHlkZWZhdWx0cyBhbmQga3dhcmcgaW4ga3dvbmx5ZGVmYXVsdHM6CiAgICAgICAgICAgICAgICBhcmcydmFsdWVba3dhcmddID0ga3dvbmx5ZGVmYXVsdHNba3dhcmddCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBtaXNzaW5nICs9IDEKICAgIGlmIG1pc3Npbmc6CiAgICAgICAgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwga3dvbmx5YXJncywgRmFsc2UsIGFyZzJ2YWx1ZSkKICAgIHJldHVybiBhcmcydmFsdWUKCkNsb3N1cmVWYXJzID0gbmFtZWR0dXBsZSgnQ2xvc3VyZVZhcnMnLCAnbm9ubG9jYWxzIGdsb2JhbHMgYnVpbHRpbnMgdW5ib3VuZCcpCgpkZWYgZ2V0Y2xvc3VyZXZhcnMoZnVuYyk6CiAgICAiIiIKICAgIEdldCB0aGUgbWFwcGluZyBvZiBmcmVlIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KCiAgICBSZXR1cm5zIGEgbmFtZWQgdHVwbGUgb2YgZGljdHMgbWFwcGluZyB0aGUgY3VycmVudCBub25sb2NhbCwgZ2xvYmFsCiAgICBhbmQgYnVpbHRpbiByZWZlcmVuY2VzIGFzIHNlZW4gYnkgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiBBIGZpbmFsCiAgICBzZXQgb2YgdW5ib3VuZCBuYW1lcyB0aGF0IGNvdWxkIG5vdCBiZSByZXNvbHZlZCBpcyBhbHNvIHByb3ZpZGVkLgogICAgIiIiCgogICAgaWYgaXNtZXRob2QoZnVuYyk6CiAgICAgICAgZnVuYyA9IGZ1bmMuX19mdW5jX18KCiAgICBpZiBub3QgaXNmdW5jdGlvbihmdW5jKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoInshcn0gaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uIi5mb3JtYXQoZnVuYykpCgogICAgY29kZSA9IGZ1bmMuX19jb2RlX18KICAgICMgTm9ubG9jYWwgcmVmZXJlbmNlcyBhcmUgbmFtZWQgaW4gY29fZnJlZXZhcnMgYW5kIHJlc29sdmVkCiAgICAjIGJ5IGxvb2tpbmcgdGhlbSB1cCBpbiBfX2Nsb3N1cmVfXyBieSBwb3NpdGlvbmFsIGluZGV4CiAgICBpZiBmdW5jLl9fY2xvc3VyZV9fIGlzIE5vbmU6CiAgICAgICAgbm9ubG9jYWxfdmFycyA9IHt9CiAgICBlbHNlOgogICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7CiAgICAgICAgICAgIHZhciA6IGNlbGwuY2VsbF9jb250ZW50cwogICAgICAgICAgICBmb3IgdmFyLCBjZWxsIGluIHppcChjb2RlLmNvX2ZyZWV2YXJzLCBmdW5jLl9fY2xvc3VyZV9fKQogICAgICAgfQoKICAgICMgR2xvYmFsIGFuZCBidWlsdGluIHJlZmVyZW5jZXMgYXJlIG5hbWVkIGluIGNvX25hbWVzIGFuZCByZXNvbHZlZAogICAgIyBieSBsb29raW5nIHRoZW0gdXAgaW4gX19nbG9iYWxzX18gb3IgX19idWlsdGluc19fCiAgICBnbG9iYWxfbnMgPSBmdW5jLl9fZ2xvYmFsc19fCiAgICBidWlsdGluX25zID0gZ2xvYmFsX25zLmdldCgiX19idWlsdGluc19fIiwgYnVpbHRpbnMuX19kaWN0X18pCiAgICBpZiBpc21vZHVsZShidWlsdGluX25zKToKICAgICAgICBidWlsdGluX25zID0gYnVpbHRpbl9ucy5fX2RpY3RfXwogICAgZ2xvYmFsX3ZhcnMgPSB7fQogICAgYnVpbHRpbl92YXJzID0ge30KICAgIHVuYm91bmRfbmFtZXMgPSBzZXQoKQogICAgZm9yIG5hbWUgaW4gY29kZS5jb19uYW1lczoKICAgICAgICBpZiBuYW1lIGluICgiTm9uZSIsICJUcnVlIiwgIkZhbHNlIik6CiAgICAgICAgICAgICMgQmVjYXVzZSB0aGVzZSB1c2VkIHRvIGJlIGJ1aWx0aW5zIGluc3RlYWQgb2Yga2V5d29yZHMsIHRoZXkKICAgICAgICAgICAgIyBtYXkgc3RpbGwgc2hvdyB1cCBhcyBuYW1lIHJlZmVyZW5jZXMuIFdlIGlnbm9yZSB0aGVtLgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRyeToKICAgICAgICAgICAgZ2xvYmFsX3ZhcnNbbmFtZV0gPSBnbG9iYWxfbnNbbmFtZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFyc1tuYW1lXSA9IGJ1aWx0aW5fbnNbbmFtZV0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgdW5ib3VuZF9uYW1lcy5hZGQobmFtZSkKCiAgICByZXR1cm4gQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzLCB1bmJvdW5kX25hbWVzKQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGFjayBmcmFtZSBleHRyYWN0aW9uCgpfVHJhY2ViYWNrID0gbmFtZWR0dXBsZSgnX1RyYWNlYmFjaycsICdmaWxlbmFtZSBsaW5lbm8gZnVuY3Rpb24gY29kZV9jb250ZXh0IGluZGV4JykKCmNsYXNzIFRyYWNlYmFjayhfVHJhY2ViYWNrKToKICAgIGRlZiBfX25ld19fKGNscywgZmlsZW5hbWUsIGxpbmVubywgZnVuY3Rpb24sIGNvZGVfY29udGV4dCwgaW5kZXgsICosIHBvc2l0aW9ucz1Ob25lKToKICAgICAgICBpbnN0YW5jZSA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmN0aW9uLCBjb2RlX2NvbnRleHQsIGluZGV4KQogICAgICAgIGluc3RhbmNlLnBvc2l0aW9ucyA9IHBvc2l0aW9ucwogICAgICAgIHJldHVybiBpbnN0YW5jZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gKCdUcmFjZWJhY2soZmlsZW5hbWU9eyFyfSwgbGluZW5vPXshcn0sIGZ1bmN0aW9uPXshcn0sICcKICAgICAgICAgICAgICAgJ2NvZGVfY29udGV4dD17IXJ9LCBpbmRleD17IXJ9LCBwb3NpdGlvbnM9eyFyfSknLmZvcm1hdCgKICAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBzZWxmLmZ1bmN0aW9uLCBzZWxmLmNvZGVfY29udGV4dCwKICAgICAgICAgICAgICAgIHNlbGYuaW5kZXgsIHNlbGYucG9zaXRpb25zKSkKCmRlZiBfZ2V0X2NvZGVfcG9zaXRpb25fZnJvbV90Yih0Yik6CiAgICBjb2RlLCBpbnN0cnVjdGlvbl9pbmRleCA9IHRiLnRiX2ZyYW1lLmZfY29kZSwgdGIudGJfbGFzdGkKICAgIHJldHVybiBfZ2V0X2NvZGVfcG9zaXRpb24oY29kZSwgaW5zdHJ1Y3Rpb25faW5kZXgpCgpkZWYgX2dldF9jb2RlX3Bvc2l0aW9uKGNvZGUsIGluc3RydWN0aW9uX2luZGV4KToKICAgIGlmIGluc3RydWN0aW9uX2luZGV4IDwgMDoKICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpCiAgICBwb3NpdGlvbnNfZ2VuID0gY29kZS5jb19wb3NpdGlvbnMoKQogICAgIyBUaGUgbnRoIGVudHJ5IGluIGNvZGUuY29fcG9zaXRpb25zKCkgY29ycmVzcG9uZHMgdG8gaW5zdHJ1Y3Rpb24gKDIqbil0aCBzaW5jZSBQeXRob24gMy4xMCsKICAgIHJldHVybiBuZXh0KGl0ZXJ0b29scy5pc2xpY2UocG9zaXRpb25zX2dlbiwgaW5zdHJ1Y3Rpb25faW5kZXggLy8gMiwgTm9uZSkpCgpkZWYgZ2V0ZnJhbWVpbmZvKGZyYW1lLCBjb250ZXh0PTEpOgogICAgIiIiR2V0IGluZm9ybWF0aW9uIGFib3V0IGEgZnJhbWUgb3IgdHJhY2ViYWNrIG9iamVjdC4KCiAgICBBIHR1cGxlIG9mIGZpdmUgdGhpbmdzIGlzIHJldHVybmVkOiB0aGUgZmlsZW5hbWUsIHRoZSBsaW5lIG51bWJlciBvZgogICAgdGhlIGN1cnJlbnQgbGluZSwgdGhlIGZ1bmN0aW9uIG5hbWUsIGEgbGlzdCBvZiBsaW5lcyBvZiBjb250ZXh0IGZyb20KICAgIHRoZSBzb3VyY2UgY29kZSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBsaW5lIHdpdGhpbiB0aGF0IGxpc3QuCiAgICBUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGxpbmVzIG9mIGNvbnRleHQKICAgIHRvIHJldHVybiwgd2hpY2ggYXJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLiIiIgogICAgaWYgaXN0cmFjZWJhY2soZnJhbWUpOgogICAgICAgIHBvc2l0aW9ucyA9IF9nZXRfY29kZV9wb3NpdGlvbl9mcm9tX3RiKGZyYW1lKQogICAgICAgIGxpbmVubyA9IGZyYW1lLnRiX2xpbmVubwogICAgICAgIGZyYW1lID0gZnJhbWUudGJfZnJhbWUKICAgIGVsc2U6CiAgICAgICAgbGluZW5vID0gZnJhbWUuZl9saW5lbm8KICAgICAgICBwb3NpdGlvbnMgPSBfZ2V0X2NvZGVfcG9zaXRpb24oZnJhbWUuZl9jb2RlLCBmcmFtZS5mX2xhc3RpKQoKICAgIGlmIHBvc2l0aW9uc1swXSBpcyBOb25lOgogICAgICAgIGZyYW1lLCAqcG9zaXRpb25zID0gKGZyYW1lLCBsaW5lbm8sICpwb3NpdGlvbnNbMTpdKQogICAgZWxzZToKICAgICAgICBmcmFtZSwgKnBvc2l0aW9ucyA9IChmcmFtZSwgKnBvc2l0aW9ucykKCiAgICBsaW5lbm8gPSBwb3NpdGlvbnNbMF0KCiAgICBpZiBub3QgaXNmcmFtZShmcmFtZSk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGZyYW1lIG9yIHRyYWNlYmFjayBvYmplY3QnLmZvcm1hdChmcmFtZSkpCgogICAgZmlsZW5hbWUgPSBnZXRzb3VyY2VmaWxlKGZyYW1lKSBvciBnZXRmaWxlKGZyYW1lKQogICAgaWYgY29udGV4dCA+IDA6CiAgICAgICAgc3RhcnQgPSBsaW5lbm8gLSAxIC0gY29udGV4dC8vMgogICAgICAgIHRyeToKICAgICAgICAgICAgbGluZXMsIGxudW0gPSBmaW5kc291cmNlKGZyYW1lKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBsaW5lcyA9IGluZGV4ID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN0YXJ0ID0gbWF4KDAsIG1pbihzdGFydCwgbGVuKGxpbmVzKSAtIGNvbnRleHQpKQogICAgICAgICAgICBsaW5lcyA9IGxpbmVzW3N0YXJ0OnN0YXJ0K2NvbnRleHRdCiAgICAgICAgICAgIGluZGV4ID0gbGluZW5vIC0gMSAtIHN0YXJ0CiAgICBlbHNlOgogICAgICAgIGxpbmVzID0gaW5kZXggPSBOb25lCgogICAgcmV0dXJuIFRyYWNlYmFjayhmaWxlbmFtZSwgbGluZW5vLCBmcmFtZS5mX2NvZGUuY29fbmFtZSwgbGluZXMsCiAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBwb3NpdGlvbnM9ZGlzLlBvc2l0aW9ucygqcG9zaXRpb25zKSkKCmRlZiBnZXRsaW5lbm8oZnJhbWUpOgogICAgIiIiR2V0IHRoZSBsaW5lIG51bWJlciBmcm9tIGEgZnJhbWUgb2JqZWN0LCBhbGxvd2luZyBmb3Igb3B0aW1pemF0aW9uLiIiIgogICAgIyBGcmFtZVR5cGUuZl9saW5lbm8gaXMgbm93IGEgZGVzY3JpcHRvciB0aGF0IGdyb3ZlbHMgY29fbG5vdGFiCiAgICByZXR1cm4gZnJhbWUuZl9saW5lbm8KCl9GcmFtZUluZm8gPSBuYW1lZHR1cGxlKCdfRnJhbWVJbmZvJywgKCdmcmFtZScsKSArIFRyYWNlYmFjay5fZmllbGRzKQpjbGFzcyBGcmFtZUluZm8oX0ZyYW1lSW5mbyk6CiAgICBkZWYgX19uZXdfXyhjbHMsIGZyYW1lLCBmaWxlbmFtZSwgbGluZW5vLCBmdW5jdGlvbiwgY29kZV9jb250ZXh0LCBpbmRleCwgKiwgcG9zaXRpb25zPU5vbmUpOgogICAgICAgIGluc3RhbmNlID0gc3VwZXIoKS5fX25ld19fKGNscywgZnJhbWUsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmN0aW9uLCBjb2RlX2NvbnRleHQsIGluZGV4KQogICAgICAgIGluc3RhbmNlLnBvc2l0aW9ucyA9IHBvc2l0aW9ucwogICAgICAgIHJldHVybiBpbnN0YW5jZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gKCdGcmFtZUluZm8oZnJhbWU9eyFyfSwgZmlsZW5hbWU9eyFyfSwgbGluZW5vPXshcn0sIGZ1bmN0aW9uPXshcn0sICcKICAgICAgICAgICAgICAgJ2NvZGVfY29udGV4dD17IXJ9LCBpbmRleD17IXJ9LCBwb3NpdGlvbnM9eyFyfSknLmZvcm1hdCgKICAgICAgICAgICAgICAgIHNlbGYuZnJhbWUsIHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBzZWxmLmZ1bmN0aW9uLAogICAgICAgICAgICAgICAgc2VsZi5jb2RlX2NvbnRleHQsIHNlbGYuaW5kZXgsIHNlbGYucG9zaXRpb25zKSkKCmRlZiBnZXRvdXRlcmZyYW1lcyhmcmFtZSwgY29udGV4dD0xKToKICAgICIiIkdldCBhIGxpc3Qgb2YgcmVjb3JkcyBmb3IgYSBmcmFtZSBhbmQgYWxsIGhpZ2hlciAoY2FsbGluZykgZnJhbWVzLgoKICAgIEVhY2ggcmVjb3JkIGNvbnRhaW5zIGEgZnJhbWUgb2JqZWN0LCBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGZ1bmN0aW9uCiAgICBuYW1lLCBhIGxpc3Qgb2YgbGluZXMgb2YgY29udGV4dCwgYW5kIGluZGV4IHdpdGhpbiB0aGUgY29udGV4dC4iIiIKICAgIGZyYW1lbGlzdCA9IFtdCiAgICB3aGlsZSBmcmFtZToKICAgICAgICB0cmFjZWJhY2tfaW5mbyA9IGdldGZyYW1laW5mbyhmcmFtZSwgY29udGV4dCkKICAgICAgICBmcmFtZWluZm8gPSAoZnJhbWUsKSArIHRyYWNlYmFja19pbmZvCiAgICAgICAgZnJhbWVsaXN0LmFwcGVuZChGcmFtZUluZm8oKmZyYW1laW5mbywgcG9zaXRpb25zPXRyYWNlYmFja19pbmZvLnBvc2l0aW9ucykpCiAgICAgICAgZnJhbWUgPSBmcmFtZS5mX2JhY2sKICAgIHJldHVybiBmcmFtZWxpc3QKCmRlZiBnZXRpbm5lcmZyYW1lcyh0YiwgY29udGV4dD0xKToKICAgICIiIkdldCBhIGxpc3Qgb2YgcmVjb3JkcyBmb3IgYSB0cmFjZWJhY2sncyBmcmFtZSBhbmQgYWxsIGxvd2VyIGZyYW1lcy4KCiAgICBFYWNoIHJlY29yZCBjb250YWlucyBhIGZyYW1lIG9iamVjdCwgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBmdW5jdGlvbgogICAgbmFtZSwgYSBsaXN0IG9mIGxpbmVzIG9mIGNvbnRleHQsIGFuZCBpbmRleCB3aXRoaW4gdGhlIGNvbnRleHQuIiIiCiAgICBmcmFtZWxpc3QgPSBbXQogICAgd2hpbGUgdGI6CiAgICAgICAgdHJhY2ViYWNrX2luZm8gPSBnZXRmcmFtZWluZm8odGIsIGNvbnRleHQpCiAgICAgICAgZnJhbWVpbmZvID0gKHRiLnRiX2ZyYW1lLCkgKyB0cmFjZWJhY2tfaW5mbwogICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoRnJhbWVJbmZvKCpmcmFtZWluZm8sIHBvc2l0aW9ucz10cmFjZWJhY2tfaW5mby5wb3NpdGlvbnMpKQogICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgcmV0dXJuIGZyYW1lbGlzdAoKZGVmIGN1cnJlbnRmcmFtZSgpOgogICAgIiIiUmV0dXJuIHRoZSBmcmFtZSBvZiB0aGUgY2FsbGVyIG9yIE5vbmUgaWYgdGhpcyBpcyBub3QgcG9zc2libGUuIiIiCiAgICByZXR1cm4gc3lzLl9nZXRmcmFtZSgxKSBpZiBoYXNhdHRyKHN5cywgIl9nZXRmcmFtZSIpIGVsc2UgTm9uZQoKZGVmIHN0YWNrKGNvbnRleHQ9MSk6CiAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHJlY29yZHMgZm9yIHRoZSBzdGFjayBhYm92ZSB0aGUgY2FsbGVyJ3MgZnJhbWUuIiIiCiAgICByZXR1cm4gZ2V0b3V0ZXJmcmFtZXMoc3lzLl9nZXRmcmFtZSgxKSwgY29udGV4dCkKCmRlZiB0cmFjZShjb250ZXh0PTEpOgogICAgIiIiUmV0dXJuIGEgbGlzdCBvZiByZWNvcmRzIGZvciB0aGUgc3RhY2sgYmVsb3cgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLiIiIgogICAgcmV0dXJuIGdldGlubmVyZnJhbWVzKHN5cy5leGNfaW5mbygpWzJdLCBjb250ZXh0KQoKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0YXRpYyB2ZXJzaW9uIG9mIGdldGF0dHIKCl9zZW50aW5lbCA9IG9iamVjdCgpCgpkZWYgX3N0YXRpY19nZXRtcm8oa2xhc3MpOgogICAgcmV0dXJuIHR5cGUuX19kaWN0X19bJ19fbXJvX18nXS5fX2dldF9fKGtsYXNzKQoKZGVmIF9jaGVja19pbnN0YW5jZShvYmosIGF0dHIpOgogICAgaW5zdGFuY2VfZGljdCA9IHt9CiAgICB0cnk6CiAgICAgICAgaW5zdGFuY2VfZGljdCA9IG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKG9iaiwgIl9fZGljdF9fIikKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICBwYXNzCiAgICByZXR1cm4gZGljdC5nZXQoaW5zdGFuY2VfZGljdCwgYXR0ciwgX3NlbnRpbmVsKQoKCmRlZiBfY2hlY2tfY2xhc3Moa2xhc3MsIGF0dHIpOgogICAgZm9yIGVudHJ5IGluIF9zdGF0aWNfZ2V0bXJvKGtsYXNzKToKICAgICAgICBpZiBfc2hhZG93ZWRfZGljdCh0eXBlKGVudHJ5KSkgaXMgX3NlbnRpbmVsOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkuX19kaWN0X19bYXR0cl0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgcmV0dXJuIF9zZW50aW5lbAoKZGVmIF9pc190eXBlKG9iaik6CiAgICB0cnk6CiAgICAgICAgX3N0YXRpY19nZXRtcm8ob2JqKQogICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgpkZWYgX3NoYWRvd2VkX2RpY3Qoa2xhc3MpOgogICAgZGljdF9hdHRyID0gdHlwZS5fX2RpY3RfX1siX19kaWN0X18iXQogICAgZm9yIGVudHJ5IGluIF9zdGF0aWNfZ2V0bXJvKGtsYXNzKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNsYXNzX2RpY3QgPSBkaWN0X2F0dHIuX19nZXRfXyhlbnRyeSlbIl9fZGljdF9fIl0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBub3QgKHR5cGUoY2xhc3NfZGljdCkgaXMgdHlwZXMuR2V0U2V0RGVzY3JpcHRvclR5cGUgYW5kCiAgICAgICAgICAgICAgICAgICAgY2xhc3NfZGljdC5fX25hbWVfXyA9PSAiX19kaWN0X18iIGFuZAogICAgICAgICAgICAgICAgICAgIGNsYXNzX2RpY3QuX19vYmpjbGFzc19fIGlzIGVudHJ5KToKICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc19kaWN0CiAgICByZXR1cm4gX3NlbnRpbmVsCgpkZWYgZ2V0YXR0cl9zdGF0aWMob2JqLCBhdHRyLCBkZWZhdWx0PV9zZW50aW5lbCk6CiAgICAiIiJSZXRyaWV2ZSBhdHRyaWJ1dGVzIHdpdGhvdXQgdHJpZ2dlcmluZyBkeW5hbWljIGxvb2t1cCB2aWEgdGhlCiAgICAgICBkZXNjcmlwdG9yIHByb3RvY29sLCAgX19nZXRhdHRyX18gb3IgX19nZXRhdHRyaWJ1dGVfXy4KCiAgICAgICBOb3RlOiB0aGlzIGZ1bmN0aW9uIG1heSBub3QgYmUgYWJsZSB0byByZXRyaWV2ZSBhbGwgYXR0cmlidXRlcwogICAgICAgdGhhdCBnZXRhdHRyIGNhbiBmZXRjaCAobGlrZSBkeW5hbWljYWxseSBjcmVhdGVkIGF0dHJpYnV0ZXMpCiAgICAgICBhbmQgbWF5IGZpbmQgYXR0cmlidXRlcyB0aGF0IGdldGF0dHIgY2FuJ3QgKGxpa2UgZGVzY3JpcHRvcnMKICAgICAgIHRoYXQgcmFpc2UgQXR0cmlidXRlRXJyb3IpLiBJdCBjYW4gYWxzbyByZXR1cm4gZGVzY3JpcHRvciBvYmplY3RzCiAgICAgICBpbnN0ZWFkIG9mIGluc3RhbmNlIG1lbWJlcnMgaW4gc29tZSBjYXNlcy4gU2VlIHRoZQogICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KICAgICIiIgogICAgaW5zdGFuY2VfcmVzdWx0ID0gX3NlbnRpbmVsCiAgICBpZiBub3QgX2lzX3R5cGUob2JqKToKICAgICAgICBrbGFzcyA9IHR5cGUob2JqKQogICAgICAgIGRpY3RfYXR0ciA9IF9zaGFkb3dlZF9kaWN0KGtsYXNzKQogICAgICAgIGlmIChkaWN0X2F0dHIgaXMgX3NlbnRpbmVsIG9yCiAgICAgICAgICAgIHR5cGUoZGljdF9hdHRyKSBpcyB0eXBlcy5NZW1iZXJEZXNjcmlwdG9yVHlwZSk6CiAgICAgICAgICAgIGluc3RhbmNlX3Jlc3VsdCA9IF9jaGVja19pbnN0YW5jZShvYmosIGF0dHIpCiAgICBlbHNlOgogICAgICAgIGtsYXNzID0gb2JqCgogICAga2xhc3NfcmVzdWx0ID0gX2NoZWNrX2NsYXNzKGtsYXNzLCBhdHRyKQoKICAgIGlmIGluc3RhbmNlX3Jlc3VsdCBpcyBub3QgX3NlbnRpbmVsIGFuZCBrbGFzc19yZXN1bHQgaXMgbm90IF9zZW50aW5lbDoKICAgICAgICBpZiAoX2NoZWNrX2NsYXNzKHR5cGUoa2xhc3NfcmVzdWx0KSwgJ19fZ2V0X18nKSBpcyBub3QgX3NlbnRpbmVsIGFuZAogICAgICAgICAgICBfY2hlY2tfY2xhc3ModHlwZShrbGFzc19yZXN1bHQpLCAnX19zZXRfXycpIGlzIG5vdCBfc2VudGluZWwpOgogICAgICAgICAgICByZXR1cm4ga2xhc3NfcmVzdWx0CgogICAgaWYgaW5zdGFuY2VfcmVzdWx0IGlzIG5vdCBfc2VudGluZWw6CiAgICAgICAgcmV0dXJuIGluc3RhbmNlX3Jlc3VsdAogICAgaWYga2xhc3NfcmVzdWx0IGlzIG5vdCBfc2VudGluZWw6CiAgICAgICAgcmV0dXJuIGtsYXNzX3Jlc3VsdAoKICAgIGlmIG9iaiBpcyBrbGFzczoKICAgICAgICAjIGZvciB0eXBlcyB3ZSBjaGVjayB0aGUgbWV0YWNsYXNzIHRvbwogICAgICAgIGZvciBlbnRyeSBpbiBfc3RhdGljX2dldG1ybyh0eXBlKGtsYXNzKSk6CiAgICAgICAgICAgIGlmIF9zaGFkb3dlZF9kaWN0KHR5cGUoZW50cnkpKSBpcyBfc2VudGluZWw6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5Ll9fZGljdF9fW2F0dHJdCiAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgaWYgZGVmYXVsdCBpcyBub3QgX3NlbnRpbmVsOgogICAgICAgIHJldHVybiBkZWZhdWx0CiAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQoKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGdlbmVyYXRvciBpbnRyb3NwZWN0aW9uCgpHRU5fQ1JFQVRFRCA9ICdHRU5fQ1JFQVRFRCcKR0VOX1JVTk5JTkcgPSAnR0VOX1JVTk5JTkcnCkdFTl9TVVNQRU5ERUQgPSAnR0VOX1NVU1BFTkRFRCcKR0VOX0NMT1NFRCA9ICdHRU5fQ0xPU0VEJwoKZGVmIGdldGdlbmVyYXRvcnN0YXRlKGdlbmVyYXRvcik6CiAgICAiIiJHZXQgY3VycmVudCBzdGF0ZSBvZiBhIGdlbmVyYXRvci1pdGVyYXRvci4KCiAgICBQb3NzaWJsZSBzdGF0ZXMgYXJlOgogICAgICBHRU5fQ1JFQVRFRDogV2FpdGluZyB0byBzdGFydCBleGVjdXRpb24uCiAgICAgIEdFTl9SVU5OSU5HOiBDdXJyZW50bHkgYmVpbmcgZXhlY3V0ZWQgYnkgdGhlIGludGVycHJldGVyLgogICAgICBHRU5fU1VTUEVOREVEOiBDdXJyZW50bHkgc3VzcGVuZGVkIGF0IGEgeWllbGQgZXhwcmVzc2lvbi4KICAgICAgR0VOX0NMT1NFRDogRXhlY3V0aW9uIGhhcyBjb21wbGV0ZWQuCiAgICAiIiIKICAgIGlmIGdlbmVyYXRvci5naV9ydW5uaW5nOgogICAgICAgIHJldHVybiBHRU5fUlVOTklORwogICAgaWYgZ2VuZXJhdG9yLmdpX3N1c3BlbmRlZDoKICAgICAgICByZXR1cm4gR0VOX1NVU1BFTkRFRAogICAgaWYgZ2VuZXJhdG9yLmdpX2ZyYW1lIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIEdFTl9DTE9TRUQKICAgIHJldHVybiBHRU5fQ1JFQVRFRAoKCmRlZiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKToKICAgICIiIgogICAgR2V0IHRoZSBtYXBwaW5nIG9mIGdlbmVyYXRvciBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuCgogICAgQSBkaWN0IGlzIHJldHVybmVkLCB3aXRoIHRoZSBrZXlzIHRoZSBsb2NhbCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzIHRoZQogICAgYm91bmQgdmFsdWVzLiIiIgoKICAgIGlmIG5vdCBpc2dlbmVyYXRvcihnZW5lcmF0b3IpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigieyFyfSBpcyBub3QgYSBQeXRob24gZ2VuZXJhdG9yIi5mb3JtYXQoZ2VuZXJhdG9yKSkKCiAgICBmcmFtZSA9IGdldGF0dHIoZ2VuZXJhdG9yLCAiZ2lfZnJhbWUiLCBOb25lKQogICAgaWYgZnJhbWUgaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5naV9mcmFtZS5mX2xvY2FscwogICAgZWxzZToKICAgICAgICByZXR1cm4ge30KCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjb3JvdXRpbmUgaW50cm9zcGVjdGlvbgoKQ09ST19DUkVBVEVEID0gJ0NPUk9fQ1JFQVRFRCcKQ09ST19SVU5OSU5HID0gJ0NPUk9fUlVOTklORycKQ09ST19TVVNQRU5ERUQgPSAnQ09ST19TVVNQRU5ERUQnCkNPUk9fQ0xPU0VEID0gJ0NPUk9fQ0xPU0VEJwoKZGVmIGdldGNvcm91dGluZXN0YXRlKGNvcm91dGluZSk6CiAgICAiIiJHZXQgY3VycmVudCBzdGF0ZSBvZiBhIGNvcm91dGluZSBvYmplY3QuCgogICAgUG9zc2libGUgc3RhdGVzIGFyZToKICAgICAgQ09ST19DUkVBVEVEOiBXYWl0aW5nIHRvIHN0YXJ0IGV4ZWN1dGlvbi4KICAgICAgQ09ST19SVU5OSU5HOiBDdXJyZW50bHkgYmVpbmcgZXhlY3V0ZWQgYnkgdGhlIGludGVycHJldGVyLgogICAgICBDT1JPX1NVU1BFTkRFRDogQ3VycmVudGx5IHN1c3BlbmRlZCBhdCBhbiBhd2FpdCBleHByZXNzaW9uLgogICAgICBDT1JPX0NMT1NFRDogRXhlY3V0aW9uIGhhcyBjb21wbGV0ZWQuCiAgICAiIiIKICAgIGlmIGNvcm91dGluZS5jcl9ydW5uaW5nOgogICAgICAgIHJldHVybiBDT1JPX1JVTk5JTkcKICAgIGlmIGNvcm91dGluZS5jcl9zdXNwZW5kZWQ6CiAgICAgICAgcmV0dXJuIENPUk9fU1VTUEVOREVECiAgICBpZiBjb3JvdXRpbmUuY3JfZnJhbWUgaXMgTm9uZToKICAgICAgICByZXR1cm4gQ09ST19DTE9TRUQKICAgIHJldHVybiBDT1JPX0NSRUFURUQKCgpkZWYgZ2V0Y29yb3V0aW5lbG9jYWxzKGNvcm91dGluZSk6CiAgICAiIiIKICAgIEdldCB0aGUgbWFwcGluZyBvZiBjb3JvdXRpbmUgbG9jYWwgdmFyaWFibGVzIHRvIHRoZWlyIGN1cnJlbnQgdmFsdWVzLgoKICAgIEEgZGljdCBpcyByZXR1cm5lZCwgd2l0aCB0aGUga2V5cyB0aGUgbG9jYWwgdmFyaWFibGUgbmFtZXMgYW5kIHZhbHVlcyB0aGUKICAgIGJvdW5kIHZhbHVlcy4iIiIKICAgIGZyYW1lID0gZ2V0YXR0cihjb3JvdXRpbmUsICJjcl9mcmFtZSIsIE5vbmUpCiAgICBpZiBmcmFtZSBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gZnJhbWUuZl9sb2NhbHMKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIHt9CgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdCAoUEVQIDM2MikKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCl9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyA9ICh0eXBlcy5XcmFwcGVyRGVzY3JpcHRvclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5NZXRob2RXcmFwcGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkNsYXNzTWV0aG9kRGVzY3JpcHRvclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlKQoKCmRlZiBfc2lnbmF0dXJlX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKGNscywgbWV0aG9kX25hbWUpOgogICAgIiIiUHJpdmF0ZSBoZWxwZXIuIENoZWNrcyBpZiBgYGNsc2BgIGhhcyBhbiBhdHRyaWJ1dGUKICAgIG5hbWVkIGBgbWV0aG9kX25hbWVgYCBhbmQgcmV0dXJucyBpdCBvbmx5IGlmIGl0IGlzIGEKICAgIHB1cmUgcHl0aG9uIGZ1bmN0aW9uLgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgbWV0aCA9IGdldGF0dHIoY2xzLCBtZXRob2RfbmFtZSkKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICByZXR1cm4KICAgIGVsc2U6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobWV0aCwgX05vblVzZXJEZWZpbmVkQ2FsbGFibGVzKToKICAgICAgICAgICAgIyBPbmNlICdfX3NpZ25hdHVyZV9fJyB3aWxsIGJlIGFkZGVkIHRvICdDJy1sZXZlbAogICAgICAgICAgICAjIGNhbGxhYmxlcywgdGhpcyBjaGVjayB3b24ndCBiZSBuZWNlc3NhcnkKICAgICAgICAgICAgcmV0dXJuIG1ldGgKCgpkZWYgX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgcGFydGlhbCwgZXh0cmFfYXJncz0oKSk6CiAgICAiIiJQcml2YXRlIGhlbHBlciB0byBjYWxjdWxhdGUgaG93ICd3cmFwcGVkX3NpZycgc2lnbmF0dXJlIHdpbGwKICAgIGxvb2sgbGlrZSBhZnRlciBhcHBseWluZyBhICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0IChvciBhbGlrZSkKICAgIG9uIGl0LgogICAgIiIiCgogICAgb2xkX3BhcmFtcyA9IHdyYXBwZWRfc2lnLnBhcmFtZXRlcnMKICAgIG5ld19wYXJhbXMgPSBPcmRlcmVkRGljdChvbGRfcGFyYW1zLml0ZW1zKCkpCgogICAgcGFydGlhbF9hcmdzID0gcGFydGlhbC5hcmdzIG9yICgpCiAgICBwYXJ0aWFsX2tleXdvcmRzID0gcGFydGlhbC5rZXl3b3JkcyBvciB7fQoKICAgIGlmIGV4dHJhX2FyZ3M6CiAgICAgICAgcGFydGlhbF9hcmdzID0gZXh0cmFfYXJncyArIHBhcnRpYWxfYXJncwoKICAgIHRyeToKICAgICAgICBiYSA9IHdyYXBwZWRfc2lnLmJpbmRfcGFydGlhbCgqcGFydGlhbF9hcmdzLCAqKnBhcnRpYWxfa2V5d29yZHMpCiAgICBleGNlcHQgVHlwZUVycm9yIGFzIGV4OgogICAgICAgIG1zZyA9ICdwYXJ0aWFsIG9iamVjdCB7IXJ9IGhhcyBpbmNvcnJlY3QgYXJndW1lbnRzJy5mb3JtYXQocGFydGlhbCkKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykgZnJvbSBleAoKCiAgICB0cmFuc2Zvcm1fdG9fa3dvbmx5ID0gRmFsc2UKICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbSBpbiBvbGRfcGFyYW1zLml0ZW1zKCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBhcmdfdmFsdWUgPSBiYS5hcmd1bWVudHNbcGFyYW1fbmFtZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBwYXJhbS5raW5kIGlzIF9QT1NJVElPTkFMX09OTFk6CiAgICAgICAgICAgICAgICAjIElmIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXIgaXMgYm91bmQgYnkgcGFydGlhbCwKICAgICAgICAgICAgICAgICMgaXQgZWZmZWN0aXZlbHkgZGlzYXBwZWFycyBmcm9tIHRoZSBzaWduYXR1cmUKICAgICAgICAgICAgICAgIG5ld19wYXJhbXMucG9wKHBhcmFtX25hbWUpCiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgaWYgcGFyYW0ua2luZCBpcyBfUE9TSVRJT05BTF9PUl9LRVlXT1JEOgogICAgICAgICAgICAgICAgaWYgcGFyYW1fbmFtZSBpbiBwYXJ0aWFsX2tleXdvcmRzOgogICAgICAgICAgICAgICAgICAgICMgVGhpcyBtZWFucyB0aGF0IHRoaXMgcGFyYW1ldGVyLCBhbmQgYWxsIHBhcmFtZXRlcnMKICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIGl0IHNob3VsZCBiZSBrZXl3b3JkLW9ubHkgKGFuZCB2YXItcG9zaXRpb25hbAogICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIGJlIHJlbW92ZWQpLiBIZXJlJ3Mgd2h5LiBDb25zaWRlciB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbjoKICAgICAgICAgICAgICAgICAgICAjICAgICBmb28oYSwgYiwgKmFyZ3MsIGMpOgogICAgICAgICAgICAgICAgICAgICMgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgInBhcnRpYWwoZm9vLCBhPSdzcGFtJykiIHdpbGwgaGF2ZSB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgICAgIyBzaWduYXR1cmU6ICIoKiwgYT0nc3BhbScsIGIsIGMpIi4gQmVjYXVzZSBhdHRlbXB0aW5nCiAgICAgICAgICAgICAgICAgICAgIyB0byBjYWxsIHRoYXQgcGFydGlhbCB3aXRoICIoMTAsIDIwKSIgYXJndW1lbnRzIHdpbGwKICAgICAgICAgICAgICAgICAgICAjIHJhaXNlIGEgVHlwZUVycm9yLCBzYXlpbmcgdGhhdCAiYSIgYXJndW1lbnQgcmVjZWl2ZWQKICAgICAgICAgICAgICAgICAgICAjIG11bHRpcGxlIHZhbHVlcy4KICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1fdG9fa3dvbmx5ID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICMgU2V0IHRoZSBuZXcgZGVmYXVsdCB2YWx1ZQogICAgICAgICAgICAgICAgICAgIG5ld19wYXJhbXNbcGFyYW1fbmFtZV0gPSBwYXJhbS5yZXBsYWNlKGRlZmF1bHQ9YXJnX3ZhbHVlKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIHdhcyBwYXNzZWQgYXMgYSBwb3NpdGlvbmFsIGFyZ3VtZW50CiAgICAgICAgICAgICAgICAgICAgbmV3X3BhcmFtcy5wb3AocGFyYW0ubmFtZSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgaWYgcGFyYW0ua2luZCBpcyBfS0VZV09SRF9PTkxZOgogICAgICAgICAgICAgICAgIyBTZXQgdGhlIG5ldyBkZWZhdWx0IHZhbHVlCiAgICAgICAgICAgICAgICBuZXdfcGFyYW1zW3BhcmFtX25hbWVdID0gcGFyYW0ucmVwbGFjZShkZWZhdWx0PWFyZ192YWx1ZSkKCiAgICAgICAgaWYgdHJhbnNmb3JtX3RvX2t3b25seToKICAgICAgICAgICAgYXNzZXJ0IHBhcmFtLmtpbmQgaXMgbm90IF9QT1NJVElPTkFMX09OTFkKCiAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgaXMgX1BPU0lUSU9OQUxfT1JfS0VZV09SRDoKICAgICAgICAgICAgICAgIG5ld19wYXJhbSA9IG5ld19wYXJhbXNbcGFyYW1fbmFtZV0ucmVwbGFjZShraW5kPV9LRVlXT1JEX09OTFkpCiAgICAgICAgICAgICAgICBuZXdfcGFyYW1zW3BhcmFtX25hbWVdID0gbmV3X3BhcmFtCiAgICAgICAgICAgICAgICBuZXdfcGFyYW1zLm1vdmVfdG9fZW5kKHBhcmFtX25hbWUpCiAgICAgICAgICAgIGVsaWYgcGFyYW0ua2luZCBpbiAoX0tFWVdPUkRfT05MWSwgX1ZBUl9LRVlXT1JEKToKICAgICAgICAgICAgICAgIG5ld19wYXJhbXMubW92ZV90b19lbmQocGFyYW1fbmFtZSkKICAgICAgICAgICAgZWxpZiBwYXJhbS5raW5kIGlzIF9WQVJfUE9TSVRJT05BTDoKICAgICAgICAgICAgICAgIG5ld19wYXJhbXMucG9wKHBhcmFtLm5hbWUpCgogICAgcmV0dXJuIHdyYXBwZWRfc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zLnZhbHVlcygpKQoKCmRlZiBfc2lnbmF0dXJlX2JvdW5kX21ldGhvZChzaWcpOgogICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdHJhbnNmb3JtIHNpZ25hdHVyZXMgZm9yIHVuYm91bmQKICAgIGZ1bmN0aW9ucyB0byBib3VuZCBtZXRob2RzLgogICAgIiIiCgogICAgcGFyYW1zID0gdHVwbGUoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpCgogICAgaWYgbm90IHBhcmFtcyBvciBwYXJhbXNbMF0ua2luZCBpbiAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbnZhbGlkIG1ldGhvZCBzaWduYXR1cmUnKQoKICAgIGtpbmQgPSBwYXJhbXNbMF0ua2luZAogICAgaWYga2luZCBpbiAoX1BPU0lUSU9OQUxfT1JfS0VZV09SRCwgX1BPU0lUSU9OQUxfT05MWSk6CiAgICAgICAgIyBEcm9wIGZpcnN0IHBhcmFtZXRlcjoKICAgICAgICAjICcocDEsIHAyWywgLi4uXSknIC0+ICcocDJbLCAuLi5dKScKICAgICAgICBwYXJhbXMgPSBwYXJhbXNbMTpdCiAgICBlbHNlOgogICAgICAgIGlmIGtpbmQgaXMgbm90IF9WQVJfUE9TSVRJT05BTDoKICAgICAgICAgICAgIyBVbmxlc3Mgd2UgYWRkIGEgbmV3IHBhcmFtZXRlciB0eXBlIHdlIG5ldmVyCiAgICAgICAgICAgICMgZ2V0IGhlcmUKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBhcmd1bWVudCB0eXBlJykKICAgICAgICAjIEl0J3MgYSB2YXItcG9zaXRpb25hbCBwYXJhbWV0ZXIuCiAgICAgICAgIyBEbyBub3RoaW5nLiAnKCphcmdzWywgLi4uXSknIC0+ICcoKmFyZ3NbLCAuLi5dKScKCiAgICByZXR1cm4gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1wYXJhbXMpCgoKZGVmIF9zaWduYXR1cmVfaXNfYnVpbHRpbihvYmopOgogICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdGVzdCBpZiBgb2JqYCBpcyBhIGNhbGxhYmxlIHRoYXQgbWlnaHQKICAgIHN1cHBvcnQgQXJndW1lbnQgQ2xpbmljJ3MgX190ZXh0X3NpZ25hdHVyZV9fIHByb3RvY29sLgogICAgIiIiCiAgICByZXR1cm4gKGlzYnVpbHRpbihvYmopIG9yCiAgICAgICAgICAgIGlzbWV0aG9kZGVzY3JpcHRvcihvYmopIG9yCiAgICAgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBfTm9uVXNlckRlZmluZWRDYWxsYWJsZXMpIG9yCiAgICAgICAgICAgICMgQ2FuJ3QgdGVzdCAnaXNpbnN0YW5jZSh0eXBlKScgaGVyZSwgYXMgaXQgd291bGQKICAgICAgICAgICAgIyBhbHNvIGJlIFRydWUgZm9yIHJlZ3VsYXIgcHl0aG9uIGNsYXNzZXMKICAgICAgICAgICAgb2JqIGluICh0eXBlLCBvYmplY3QpKQoKCmRlZiBfc2lnbmF0dXJlX2lzX2Z1bmN0aW9ubGlrZShvYmopOgogICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdGVzdCBpZiBgb2JqYCBpcyBhIGR1Y2sgdHlwZSBvZiBGdW5jdGlvblR5cGUuCiAgICBBIGdvb2QgZXhhbXBsZSBvZiBzdWNoIG9iamVjdHMgYXJlIGZ1bmN0aW9ucyBjb21waWxlZCB3aXRoCiAgICBDeXRob24sIHdoaWNoIGhhdmUgYWxsIGF0dHJpYnV0ZXMgdGhhdCBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uCiAgICB3b3VsZCBoYXZlLCBidXQgaGF2ZSB0aGVpciBjb2RlIHN0YXRpY2FsbHkgY29tcGlsZWQuCiAgICAiIiIKCiAgICBpZiBub3QgY2FsbGFibGUob2JqKSBvciBpc2NsYXNzKG9iaik6CiAgICAgICAgIyBBbGwgZnVuY3Rpb24tbGlrZSBvYmplY3RzIGFyZSBvYnZpb3VzbHkgY2FsbGFibGVzLAogICAgICAgICMgYW5kIG5vdCBjbGFzc2VzLgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIG5hbWUgPSBnZXRhdHRyKG9iaiwgJ19fbmFtZV9fJywgTm9uZSkKICAgIGNvZGUgPSBnZXRhdHRyKG9iaiwgJ19fY29kZV9fJywgTm9uZSkKICAgIGRlZmF1bHRzID0gZ2V0YXR0cihvYmosICdfX2RlZmF1bHRzX18nLCBfdm9pZCkgIyBJbXBvcnRhbnQgdG8gdXNlIF92b2lkIC4uLgogICAga3dkZWZhdWx0cyA9IGdldGF0dHIob2JqLCAnX19rd2RlZmF1bHRzX18nLCBfdm9pZCkgIyAuLi4gYW5kIG5vdCBOb25lIGhlcmUKICAgIGFubm90YXRpb25zID0gZ2V0YXR0cihvYmosICdfX2Fubm90YXRpb25zX18nLCBOb25lKQoKICAgIHJldHVybiAoaXNpbnN0YW5jZShjb2RlLCB0eXBlcy5Db2RlVHlwZSkgYW5kCiAgICAgICAgICAgIGlzaW5zdGFuY2UobmFtZSwgc3RyKSBhbmQKICAgICAgICAgICAgKGRlZmF1bHRzIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShkZWZhdWx0cywgdHVwbGUpKSBhbmQKICAgICAgICAgICAgKGt3ZGVmYXVsdHMgaXMgTm9uZSBvciBpc2luc3RhbmNlKGt3ZGVmYXVsdHMsIGRpY3QpKSBhbmQKICAgICAgICAgICAgKGlzaW5zdGFuY2UoYW5ub3RhdGlvbnMsIChkaWN0KSkgb3IgYW5ub3RhdGlvbnMgaXMgTm9uZSkgKQoKCmRlZiBfc2lnbmF0dXJlX3N0cmlwX25vbl9weXRob25fc3ludGF4KHNpZ25hdHVyZSk6CiAgICAiIiIKICAgIFByaXZhdGUgaGVscGVyIGZ1bmN0aW9uLiBUYWtlcyBhIHNpZ25hdHVyZSBpbiBBcmd1bWVudCBDbGluaWMncwogICAgZXh0ZW5kZWQgc2lnbmF0dXJlIGZvcm1hdC4KCiAgICBSZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgdGhpbmdzOgogICAgICAqIHRoYXQgc2lnbmF0dXJlIHJlLXJlbmRlcmVkIGluIHN0YW5kYXJkIFB5dGhvbiBzeW50YXgsCiAgICAgICogdGhlIGluZGV4IG9mIHRoZSAic2VsZiIgcGFyYW1ldGVyIChnZW5lcmFsbHkgMCksIG9yIE5vbmUgaWYKICAgICAgICB0aGUgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSBhICJzZWxmIiBwYXJhbWV0ZXIsIGFuZAogICAgICAqIHRoZSBpbmRleCBvZiB0aGUgbGFzdCAicG9zaXRpb25hbCBvbmx5IiBwYXJhbWV0ZXIsCiAgICAgICAgb3IgTm9uZSBpZiB0aGUgc2lnbmF0dXJlIGhhcyBubyBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycy4KICAgICIiIgoKICAgIGlmIG5vdCBzaWduYXR1cmU6CiAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSwgTm9uZSwgTm9uZQoKICAgIHNlbGZfcGFyYW1ldGVyID0gTm9uZQogICAgbGFzdF9wb3NpdGlvbmFsX29ubHkgPSBOb25lCgogICAgbGluZXMgPSBbbC5lbmNvZGUoJ2FzY2lpJykgZm9yIGwgaW4gc2lnbmF0dXJlLnNwbGl0KCdcbicpIGlmIGxdCiAgICBnZW5lcmF0b3IgPSBpdGVyKGxpbmVzKS5fX25leHRfXwogICAgdG9rZW5fc3RyZWFtID0gdG9rZW5pemUudG9rZW5pemUoZ2VuZXJhdG9yKQoKICAgIGRlbGF5ZWRfY29tbWEgPSBGYWxzZQogICAgc2tpcF9uZXh0X2NvbW1hID0gRmFsc2UKICAgIHRleHQgPSBbXQogICAgYWRkID0gdGV4dC5hcHBlbmQKCiAgICBjdXJyZW50X3BhcmFtZXRlciA9IDAKICAgIE9QID0gdG9rZW4uT1AKICAgIEVSUk9SVE9LRU4gPSB0b2tlbi5FUlJPUlRPS0VOCgogICAgIyB0b2tlbiBzdHJlYW0gYWx3YXlzIHN0YXJ0cyB3aXRoIEVOQ09ESU5HIHRva2VuLCBza2lwIGl0CiAgICB0ID0gbmV4dCh0b2tlbl9zdHJlYW0pCiAgICBhc3NlcnQgdC50eXBlID09IHRva2VuaXplLkVOQ09ESU5HCgogICAgZm9yIHQgaW4gdG9rZW5fc3RyZWFtOgogICAgICAgIHR5cGUsIHN0cmluZyA9IHQudHlwZSwgdC5zdHJpbmcKCiAgICAgICAgaWYgdHlwZSA9PSBPUDoKICAgICAgICAgICAgaWYgc3RyaW5nID09ICcsJzoKICAgICAgICAgICAgICAgIGlmIHNraXBfbmV4dF9jb21tYToKICAgICAgICAgICAgICAgICAgICBza2lwX25leHRfY29tbWEgPSBGYWxzZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGRlbGF5ZWRfY29tbWEKICAgICAgICAgICAgICAgICAgICBkZWxheWVkX2NvbW1hID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcGFyYW1ldGVyICs9IDEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiBzdHJpbmcgPT0gJy8nOgogICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBza2lwX25leHRfY29tbWEKICAgICAgICAgICAgICAgIGFzc2VydCBsYXN0X3Bvc2l0aW9uYWxfb25seSBpcyBOb25lCiAgICAgICAgICAgICAgICBza2lwX25leHRfY29tbWEgPSBUcnVlCiAgICAgICAgICAgICAgICBsYXN0X3Bvc2l0aW9uYWxfb25seSA9IGN1cnJlbnRfcGFyYW1ldGVyIC0gMQogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgaWYgKHR5cGUgPT0gRVJST1JUT0tFTikgYW5kIChzdHJpbmcgPT0gJyQnKToKICAgICAgICAgICAgYXNzZXJ0IHNlbGZfcGFyYW1ldGVyIGlzIE5vbmUKICAgICAgICAgICAgc2VsZl9wYXJhbWV0ZXIgPSBjdXJyZW50X3BhcmFtZXRlcgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBpZiBkZWxheWVkX2NvbW1hOgogICAgICAgICAgICBkZWxheWVkX2NvbW1hID0gRmFsc2UKICAgICAgICAgICAgaWYgbm90ICgodHlwZSA9PSBPUCkgYW5kIChzdHJpbmcgPT0gJyknKSk6CiAgICAgICAgICAgICAgICBhZGQoJywgJykKICAgICAgICBhZGQoc3RyaW5nKQogICAgICAgIGlmIChzdHJpbmcgPT0gJywnKToKICAgICAgICAgICAgYWRkKCcgJykKICAgIGNsZWFuX3NpZ25hdHVyZSA9ICcnLmpvaW4odGV4dCkKICAgIHJldHVybiBjbGVhbl9zaWduYXR1cmUsIHNlbGZfcGFyYW1ldGVyLCBsYXN0X3Bvc2l0aW9uYWxfb25seQoKCmRlZiBfc2lnbmF0dXJlX2Zyb21zdHIoY2xzLCBvYmosIHMsIHNraXBfYm91bmRfYXJnPVRydWUpOgogICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gcGFyc2UgY29udGVudCBvZiAnX190ZXh0X3NpZ25hdHVyZV9fJwogICAgYW5kIHJldHVybiBhIFNpZ25hdHVyZSBiYXNlZCBvbiBpdC4KICAgICIiIgogICAgUGFyYW1ldGVyID0gY2xzLl9wYXJhbWV0ZXJfY2xzCgogICAgY2xlYW5fc2lnbmF0dXJlLCBzZWxmX3BhcmFtZXRlciwgbGFzdF9wb3NpdGlvbmFsX29ubHkgPSBcCiAgICAgICAgX3NpZ25hdHVyZV9zdHJpcF9ub25fcHl0aG9uX3N5bnRheChzKQoKICAgIHByb2dyYW0gPSAiZGVmIGZvbyIgKyBjbGVhbl9zaWduYXR1cmUgKyAiOiBwYXNzIgoKICAgIHRyeToKICAgICAgICBtb2R1bGUgPSBhc3QucGFyc2UocHJvZ3JhbSkKICAgIGV4Y2VwdCBTeW50YXhFcnJvcjoKICAgICAgICBtb2R1bGUgPSBOb25lCgogICAgaWYgbm90IGlzaW5zdGFuY2UobW9kdWxlLCBhc3QuTW9kdWxlKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ7IXJ9IGJ1aWx0aW4gaGFzIGludmFsaWQgc2lnbmF0dXJlIi5mb3JtYXQob2JqKSkKCiAgICBmID0gbW9kdWxlLmJvZHlbMF0KCiAgICBwYXJhbWV0ZXJzID0gW10KICAgIGVtcHR5ID0gUGFyYW1ldGVyLmVtcHR5CgogICAgbW9kdWxlID0gTm9uZQogICAgbW9kdWxlX2RpY3QgPSB7fQogICAgbW9kdWxlX25hbWUgPSBnZXRhdHRyKG9iaiwgJ19fbW9kdWxlX18nLCBOb25lKQogICAgaWYgbW9kdWxlX25hbWU6CiAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXMuZ2V0KG1vZHVsZV9uYW1lLCBOb25lKQogICAgICAgIGlmIG1vZHVsZToKICAgICAgICAgICAgbW9kdWxlX2RpY3QgPSBtb2R1bGUuX19kaWN0X18KICAgIHN5c19tb2R1bGVfZGljdCA9IHN5cy5tb2R1bGVzLmNvcHkoKQoKICAgIGRlZiBwYXJzZV9uYW1lKG5vZGUpOgogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGFzdC5hcmcpCiAgICAgICAgaWYgbm9kZS5hbm5vdGF0aW9uIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBbm5vdGF0aW9ucyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQiKQogICAgICAgIHJldHVybiBub2RlLmFyZwoKICAgIGRlZiB3cmFwX3ZhbHVlKHMpOgogICAgICAgIHRyeToKICAgICAgICAgICAgdmFsdWUgPSBldmFsKHMsIG1vZHVsZV9kaWN0KQogICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHZhbHVlID0gZXZhbChzLCBzeXNfbW9kdWxlX2RpY3QpCiAgICAgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCgogICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChzdHIsIGludCwgZmxvYXQsIGJ5dGVzLCBib29sLCB0eXBlKE5vbmUpKSk6CiAgICAgICAgICAgIHJldHVybiBhc3QuQ29uc3RhbnQodmFsdWUpCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgoKICAgIGNsYXNzIFJld3JpdGVTeW1ib2xpY3MoYXN0Lk5vZGVUcmFuc2Zvcm1lcik6CiAgICAgICAgZGVmIHZpc2l0X0F0dHJpYnV0ZShzZWxmLCBub2RlKToKICAgICAgICAgICAgYSA9IFtdCiAgICAgICAgICAgIG4gPSBub2RlCiAgICAgICAgICAgIHdoaWxlIGlzaW5zdGFuY2UobiwgYXN0LkF0dHJpYnV0ZSk6CiAgICAgICAgICAgICAgICBhLmFwcGVuZChuLmF0dHIpCiAgICAgICAgICAgICAgICBuID0gbi52YWx1ZQogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuLCBhc3QuTmFtZSk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgIGEuYXBwZW5kKG4uaWQpCiAgICAgICAgICAgIHZhbHVlID0gIi4iLmpvaW4ocmV2ZXJzZWQoYSkpCiAgICAgICAgICAgIHJldHVybiB3cmFwX3ZhbHVlKHZhbHVlKQoKICAgICAgICBkZWYgdmlzaXRfTmFtZShzZWxmLCBub2RlKToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZS5jdHgsIGFzdC5Mb2FkKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQogICAgICAgICAgICByZXR1cm4gd3JhcF92YWx1ZShub2RlLmlkKQoKICAgICAgICBkZWYgdmlzaXRfQmluT3Aoc2VsZiwgbm9kZSk6CiAgICAgICAgICAgICMgU3VwcG9ydCBjb25zdGFudCBmb2xkaW5nIG9mIGEgY291cGxlIHNpbXBsZSBiaW5hcnkgb3BlcmF0aW9ucwogICAgICAgICAgICAjIGNvbW1vbmx5IHVzZWQgdG8gZGVmaW5lIGRlZmF1bHQgdmFsdWVzIGluIHRleHQgc2lnbmF0dXJlcwogICAgICAgICAgICBsZWZ0ID0gc2VsZi52aXNpdChub2RlLmxlZnQpCiAgICAgICAgICAgIHJpZ2h0ID0gc2VsZi52aXNpdChub2RlLnJpZ2h0KQogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsZWZ0LCBhc3QuQ29uc3RhbnQpIG9yIG5vdCBpc2luc3RhbmNlKHJpZ2h0LCBhc3QuQ29uc3RhbnQpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIGFzdC5BZGQpOgogICAgICAgICAgICAgICAgcmV0dXJuIGFzdC5Db25zdGFudChsZWZ0LnZhbHVlICsgcmlnaHQudmFsdWUpCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLm9wLCBhc3QuU3ViKToKICAgICAgICAgICAgICAgIHJldHVybiBhc3QuQ29uc3RhbnQobGVmdC52YWx1ZSAtIHJpZ2h0LnZhbHVlKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgYXN0LkJpdE9yKToKICAgICAgICAgICAgICAgIHJldHVybiBhc3QuQ29uc3RhbnQobGVmdC52YWx1ZSB8IHJpZ2h0LnZhbHVlKQogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCgogICAgZGVmIHAobmFtZV9ub2RlLCBkZWZhdWx0X25vZGUsIGRlZmF1bHQ9ZW1wdHkpOgogICAgICAgIG5hbWUgPSBwYXJzZV9uYW1lKG5hbWVfbm9kZSkKICAgICAgICBpZiBkZWZhdWx0X25vZGUgYW5kIGRlZmF1bHRfbm9kZSBpcyBub3QgX2VtcHR5OgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBkZWZhdWx0X25vZGUgPSBSZXdyaXRlU3ltYm9saWNzKCkudmlzaXQoZGVmYXVsdF9ub2RlKQogICAgICAgICAgICAgICAgZGVmYXVsdCA9IGFzdC5saXRlcmFsX2V2YWwoZGVmYXVsdF9ub2RlKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInshcn0gYnVpbHRpbiBoYXMgaW52YWxpZCBzaWduYXR1cmUiLmZvcm1hdChvYmopKSBmcm9tIE5vbmUKICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwga2luZCwgZGVmYXVsdD1kZWZhdWx0LCBhbm5vdGF0aW9uPWVtcHR5KSkKCiAgICAjIG5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycwogICAgYXJncyA9IHJldmVyc2VkKGYuYXJncy5hcmdzKQogICAgZGVmYXVsdHMgPSByZXZlcnNlZChmLmFyZ3MuZGVmYXVsdHMpCiAgICBpdGVyID0gaXRlcnRvb2xzLnppcF9sb25nZXN0KGFyZ3MsIGRlZmF1bHRzLCBmaWxsdmFsdWU9Tm9uZSkKICAgIGlmIGxhc3RfcG9zaXRpb25hbF9vbmx5IGlzIG5vdCBOb25lOgogICAgICAgIGtpbmQgPSBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZCiAgICBlbHNlOgogICAgICAgIGtpbmQgPSBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JECiAgICBmb3IgaSwgKG5hbWUsIGRlZmF1bHQpIGluIGVudW1lcmF0ZShyZXZlcnNlZChsaXN0KGl0ZXIpKSk6CiAgICAgICAgcChuYW1lLCBkZWZhdWx0KQogICAgICAgIGlmIGkgPT0gbGFzdF9wb3NpdGlvbmFsX29ubHk6CiAgICAgICAgICAgIGtpbmQgPSBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JECgogICAgIyAqYXJncwogICAgaWYgZi5hcmdzLnZhcmFyZzoKICAgICAgICBraW5kID0gUGFyYW1ldGVyLlZBUl9QT1NJVElPTkFMCiAgICAgICAgcChmLmFyZ3MudmFyYXJnLCBlbXB0eSkKCiAgICAjIGtleXdvcmQtb25seSBhcmd1bWVudHMKICAgIGtpbmQgPSBQYXJhbWV0ZXIuS0VZV09SRF9PTkxZCiAgICBmb3IgbmFtZSwgZGVmYXVsdCBpbiB6aXAoZi5hcmdzLmt3b25seWFyZ3MsIGYuYXJncy5rd19kZWZhdWx0cyk6CiAgICAgICAgcChuYW1lLCBkZWZhdWx0KQoKICAgICMgKiprd2FyZ3MKICAgIGlmIGYuYXJncy5rd2FyZzoKICAgICAgICBraW5kID0gUGFyYW1ldGVyLlZBUl9LRVlXT1JECiAgICAgICAgcChmLmFyZ3Mua3dhcmcsIGVtcHR5KQoKICAgIGlmIHNlbGZfcGFyYW1ldGVyIGlzIG5vdCBOb25lOgogICAgICAgICMgUG9zc2libHkgc3RyaXAgdGhlIGJvdW5kIGFyZ3VtZW50OgogICAgICAgICMgICAgLSBXZSAqYWx3YXlzKiBzdHJpcCBmaXJzdCBib3VuZCBhcmd1bWVudCBpZgogICAgICAgICMgICAgICBpdCBpcyBhIG1vZHVsZS4KICAgICAgICAjICAgIC0gV2UgZG9uJ3Qgc3RyaXAgZmlyc3QgYm91bmQgYXJndW1lbnQgaWYKICAgICAgICAjICAgICAgc2tpcF9ib3VuZF9hcmcgaXMgRmFsc2UuCiAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnMKICAgICAgICBfc2VsZiA9IGdldGF0dHIob2JqLCAnX19zZWxmX18nLCBOb25lKQogICAgICAgIHNlbGZfaXNib3VuZCA9IF9zZWxmIGlzIG5vdCBOb25lCiAgICAgICAgc2VsZl9pc21vZHVsZSA9IGlzbW9kdWxlKF9zZWxmKQogICAgICAgIGlmIHNlbGZfaXNib3VuZCBhbmQgKHNlbGZfaXNtb2R1bGUgb3Igc2tpcF9ib3VuZF9hcmcpOgogICAgICAgICAgICBwYXJhbWV0ZXJzLnBvcCgwKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgZm9yIGJ1aWx0aW5zLCBzZWxmIHBhcmFtZXRlciBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5IQogICAgICAgICAgICBwID0gcGFyYW1ldGVyc1swXS5yZXBsYWNlKGtpbmQ9UGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKICAgICAgICAgICAgcGFyYW1ldGVyc1swXSA9IHAKCiAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnMsIHJldHVybl9hbm5vdGF0aW9uPWNscy5lbXB0eSkKCgpkZWYgX3NpZ25hdHVyZV9mcm9tX2J1aWx0aW4oY2xzLCBmdW5jLCBza2lwX2JvdW5kX2FyZz1UcnVlKToKICAgICIiIlByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCBzaWduYXR1cmUgZm9yCiAgICBidWlsdGluIGNhbGxhYmxlcy4KICAgICIiIgoKICAgIGlmIG5vdCBfc2lnbmF0dXJlX2lzX2J1aWx0aW4oZnVuYyk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ7IXJ9IGlzIG5vdCBhIFB5dGhvbiBidWlsdGluICIKICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIi5mb3JtYXQoZnVuYykpCgogICAgcyA9IGdldGF0dHIoZnVuYywgIl9fdGV4dF9zaWduYXR1cmVfXyIsIE5vbmUpCiAgICBpZiBub3QgczoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4geyFyfSIuZm9ybWF0KGZ1bmMpKQoKICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21zdHIoY2xzLCBmdW5jLCBzLCBza2lwX2JvdW5kX2FyZykKCgpkZWYgX3NpZ25hdHVyZV9mcm9tX2Z1bmN0aW9uKGNscywgZnVuYywgc2tpcF9ib3VuZF9hcmc9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBldmFsX3N0cj1GYWxzZSk6CiAgICAiIiJQcml2YXRlIGhlbHBlcjogY29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24uIiIiCgogICAgaXNfZHVja19mdW5jdGlvbiA9IEZhbHNlCiAgICBpZiBub3QgaXNmdW5jdGlvbihmdW5jKToKICAgICAgICBpZiBfc2lnbmF0dXJlX2lzX2Z1bmN0aW9ubGlrZShmdW5jKToKICAgICAgICAgICAgaXNfZHVja19mdW5jdGlvbiA9IFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIElmIGl0J3Mgbm90IGEgcHVyZSBQeXRob24gZnVuY3Rpb24sIGFuZCBub3QgYSBkdWNrIHR5cGUKICAgICAgICAgICAgIyBvZiBwdXJlIGZ1bmN0aW9uOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJy5mb3JtYXQoZnVuYykpCgogICAgcyA9IGdldGF0dHIoZnVuYywgIl9fdGV4dF9zaWduYXR1cmVfXyIsIE5vbmUpCiAgICBpZiBzOgogICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21zdHIoY2xzLCBmdW5jLCBzLCBza2lwX2JvdW5kX2FyZykKCiAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKCiAgICAjIFBhcmFtZXRlciBpbmZvcm1hdGlvbi4KICAgIGZ1bmNfY29kZSA9IGZ1bmMuX19jb2RlX18KICAgIHBvc19jb3VudCA9IGZ1bmNfY29kZS5jb19hcmdjb3VudAogICAgYXJnX25hbWVzID0gZnVuY19jb2RlLmNvX3Zhcm5hbWVzCiAgICBwb3Nvbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX3Bvc29ubHlhcmdjb3VudAogICAgcG9zaXRpb25hbCA9IGFyZ19uYW1lc1s6cG9zX2NvdW50XQogICAga2V5d29yZF9vbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX2t3b25seWFyZ2NvdW50CiAgICBrZXl3b3JkX29ubHkgPSBhcmdfbmFtZXNbcG9zX2NvdW50OnBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudF0KICAgIGFubm90YXRpb25zID0gZ2V0X2Fubm90YXRpb25zKGZ1bmMsIGdsb2JhbHM9Z2xvYmFscywgbG9jYWxzPWxvY2FscywgZXZhbF9zdHI9ZXZhbF9zdHIpCiAgICBkZWZhdWx0cyA9IGZ1bmMuX19kZWZhdWx0c19fCiAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXwoKICAgIGlmIGRlZmF1bHRzOgogICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gbGVuKGRlZmF1bHRzKQogICAgZWxzZToKICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKCiAgICBwYXJhbWV0ZXJzID0gW10KCiAgICBub25fZGVmYXVsdF9jb3VudCA9IHBvc19jb3VudCAtIHBvc19kZWZhdWx0X2NvdW50CiAgICBwb3Nvbmx5X2xlZnQgPSBwb3Nvbmx5X2NvdW50CgogICAgIyBOb24ta2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgdy9vIGRlZmF1bHRzLgogICAgZm9yIG5hbWUgaW4gcG9zaXRpb25hbFs6bm9uX2RlZmF1bHRfY291bnRdOgogICAgICAgIGtpbmQgPSBfUE9TSVRJT05BTF9PTkxZIGlmIHBvc29ubHlfbGVmdCBlbHNlIF9QT1NJVElPTkFMX09SX0tFWVdPUkQKICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWtpbmQpKQogICAgICAgIGlmIHBvc29ubHlfbGVmdDoKICAgICAgICAgICAgcG9zb25seV9sZWZ0IC09IDEKCiAgICAjIC4uLiB3LyBkZWZhdWx0cy4KICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6CiAgICAgICAga2luZCA9IF9QT1NJVElPTkFMX09OTFkgaWYgcG9zb25seV9sZWZ0IGVsc2UgX1BPU0lUSU9OQUxfT1JfS0VZV09SRAogICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQogICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9a2luZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0c1tvZmZzZXRdKSkKICAgICAgICBpZiBwb3Nvbmx5X2xlZnQ6CiAgICAgICAgICAgIHBvc29ubHlfbGVmdCAtPSAxCgogICAgIyAqYXJncwogICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgQ09fVkFSQVJHUzoKICAgICAgICBuYW1lID0gYXJnX25hbWVzW3Bvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudF0KICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9WQVJfUE9TSVRJT05BTCkpCgogICAgIyBLZXl3b3JkLW9ubHkgcGFyYW1ldGVycy4KICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKICAgICAgICBkZWZhdWx0ID0gX2VtcHR5CiAgICAgICAgaWYga3dkZWZhdWx0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKCiAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCiAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fS0VZV09SRF9PTkxZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQpKQogICAgIyAqKmt3YXJncwogICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFM6CiAgICAgICAgaW5kZXggPSBwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQKICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiBDT19WQVJBUkdTOgogICAgICAgICAgICBpbmRleCArPSAxCgogICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbaW5kZXhdCiAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCiAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX0tFWVdPUkQpKQoKICAgICMgSXMgJ2Z1bmMnIGlzIGEgcHVyZSBQeXRob24gZnVuY3Rpb24gLSBkb24ndCB2YWxpZGF0ZSB0aGUKICAgICMgcGFyYW1ldGVycyBsaXN0IChmb3IgY29ycmVjdCBvcmRlciBhbmQgZGVmYXVsdHMpLCBpdCBzaG91bGQgYmUgT0suCiAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgIHJldHVybl9hbm5vdGF0aW9uPWFubm90YXRpb25zLmdldCgncmV0dXJuJywgX2VtcHR5KSwKICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189aXNfZHVja19mdW5jdGlvbikKCgpkZWYgX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKG9iaiwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsX3N0cj1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdjbHMpOgoKICAgICIiIlByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCBzaWduYXR1cmUgZm9yIGFyYml0cmFyeQogICAgY2FsbGFibGUgb2JqZWN0cy4KICAgICIiIgoKICAgIF9nZXRfc2lnbmF0dXJlX29mID0gZnVuY3Rvb2xzLnBhcnRpYWwoX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fscz1sb2NhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnY2xzPXNpZ2NscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsX3N0cj1ldmFsX3N0cikKCiAgICBpZiBub3QgY2FsbGFibGUob2JqKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgbm90IGEgY2FsbGFibGUgb2JqZWN0Jy5mb3JtYXQob2JqKSkKCiAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTWV0aG9kVHlwZSk6CiAgICAgICAgIyBJbiB0aGlzIGNhc2Ugd2Ugc2tpcCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIHRoZSB1bmRlcmx5aW5nCiAgICAgICAgIyBmdW5jdGlvbiAodXN1YWxseSBgc2VsZmAgb3IgYGNsc2ApLgogICAgICAgIHNpZyA9IF9nZXRfc2lnbmF0dXJlX29mKG9iai5fX2Z1bmNfXykKCiAgICAgICAgaWYgc2tpcF9ib3VuZF9hcmc6CiAgICAgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2JvdW5kX21ldGhvZChzaWcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNpZwoKICAgICMgV2FzIHRoaXMgZnVuY3Rpb24gd3JhcHBlZCBieSBhIGRlY29yYXRvcj8KICAgIGlmIGZvbGxvd193cmFwcGVyX2NoYWluczoKICAgICAgICAjIFVud3JhcCB1bnRpbCB3ZSBmaW5kIGFuIGV4cGxpY2l0IHNpZ25hdHVyZSBvciBhIE1ldGhvZFR5cGUgKHdoaWNoIHdpbGwgYmUKICAgICAgICAjIGhhbmRsZWQgZXhwbGljaXRseSBiZWxvdykuCiAgICAgICAgb2JqID0gdW53cmFwKG9iaiwgc3RvcD0obGFtYmRhIGY6IGhhc2F0dHIoZiwgIl9fc2lnbmF0dXJlX18iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGlzaW5zdGFuY2UoZiwgdHlwZXMuTWV0aG9kVHlwZSkpKQogICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5NZXRob2RUeXBlKToKICAgICAgICAgICAgIyBJZiB0aGUgdW53cmFwcGVkIG9iamVjdCBpcyBhICptZXRob2QqLCB3ZSBtaWdodCB3YW50IHRvCiAgICAgICAgICAgICMgc2tpcCBpdHMgZmlyc3QgcGFyYW1ldGVyIChzZWxmKS4KICAgICAgICAgICAgIyBTZWUgdGVzdF9zaWduYXR1cmVfd3JhcHBlZF9ib3VuZF9tZXRob2QgZm9yIGRldGFpbHMuCiAgICAgICAgICAgIHJldHVybiBfZ2V0X3NpZ25hdHVyZV9vZihvYmopCgogICAgdHJ5OgogICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICBpZiBzaWcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNpZywgU2lnbmF0dXJlKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAndW5leHBlY3RlZCBvYmplY3QgeyFyfSBpbiBfX3NpZ25hdHVyZV9fICcKICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlJy5mb3JtYXQoc2lnKSkKICAgICAgICAgICAgcmV0dXJuIHNpZwoKICAgIHRyeToKICAgICAgICBwYXJ0aWFsbWV0aG9kID0gb2JqLl9wYXJ0aWFsbWV0aG9kCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICBpZiBpc2luc3RhbmNlKHBhcnRpYWxtZXRob2QsIGZ1bmN0b29scy5wYXJ0aWFsbWV0aG9kKToKICAgICAgICAgICAgIyBVbmJvdW5kIHBhcnRpYWxtZXRob2QgKHNlZSBmdW5jdG9vbHMucGFydGlhbG1ldGhvZCkKICAgICAgICAgICAgIyBUaGlzIG1lYW5zLCB0aGF0IHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBzaWduYXR1cmUKICAgICAgICAgICAgIyBhcyBpZiBpdCdzIGEgcmVndWxhciBwYXJ0aWFsIG9iamVjdCwgYnV0IHRha2luZyBpbnRvCiAgICAgICAgICAgICMgYWNjb3VudCB0aGF0IHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50CiAgICAgICAgICAgICMgKHVzdWFsbHkgYHNlbGZgLCBvciBgY2xzYCkgd2lsbCBub3QgYmUgcGFzc2VkCiAgICAgICAgICAgICMgYXV0b21hdGljYWxseSAoYXMgZm9yIGJvdW5kbWV0aG9kcykKCiAgICAgICAgICAgIHdyYXBwZWRfc2lnID0gX2dldF9zaWduYXR1cmVfb2YocGFydGlhbG1ldGhvZC5mdW5jKQoKICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgcGFydGlhbG1ldGhvZCwgKE5vbmUsKSkKICAgICAgICAgICAgZmlyc3Rfd3JhcHBlZF9wYXJhbSA9IHR1cGxlKHdyYXBwZWRfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzBdCiAgICAgICAgICAgIGlmIGZpcnN0X3dyYXBwZWRfcGFyYW0ua2luZCBpcyBQYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUw6CiAgICAgICAgICAgICAgICAjIEZpcnN0IGFyZ3VtZW50IG9mIHRoZSB3cmFwcGVkIGNhbGxhYmxlIGlzIGAqYXJnc2AsIGFzIGluCiAgICAgICAgICAgICAgICAjIGBwYXJ0aWFsbWV0aG9kKGxhbWJkYSAqYXJncylgLgogICAgICAgICAgICAgICAgcmV0dXJuIHNpZwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2lnX3BhcmFtcyA9IHR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKQogICAgICAgICAgICAgICAgYXNzZXJ0IChub3Qgc2lnX3BhcmFtcyBvcgogICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF93cmFwcGVkX3BhcmFtIGlzIG5vdCBzaWdfcGFyYW1zWzBdKQogICAgICAgICAgICAgICAgbmV3X3BhcmFtcyA9IChmaXJzdF93cmFwcGVkX3BhcmFtLCkgKyBzaWdfcGFyYW1zCiAgICAgICAgICAgICAgICByZXR1cm4gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zKQoKICAgIGlmIGlzZnVuY3Rpb24ob2JqKSBvciBfc2lnbmF0dXJlX2lzX2Z1bmN0aW9ubGlrZShvYmopOgogICAgICAgICMgSWYgaXQncyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uLCBvciBhbiBvYmplY3QgdGhhdCBpcyBkdWNrIHR5cGUKICAgICAgICAjIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIChDeXRob24gZnVuY3Rpb25zLCBmb3IgaW5zdGFuY2UpLCB0aGVuOgogICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21fZnVuY3Rpb24oc2lnY2xzLCBvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscywgbG9jYWxzPWxvY2FscywgZXZhbF9zdHI9ZXZhbF9zdHIpCgogICAgaWYgX3NpZ25hdHVyZV9pc19idWlsdGluKG9iaik6CiAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9idWlsdGluKHNpZ2Nscywgb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZykKCiAgICBpZiBpc2luc3RhbmNlKG9iaiwgZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgIHdyYXBwZWRfc2lnID0gX2dldF9zaWduYXR1cmVfb2Yob2JqLmZ1bmMpCiAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZ2V0X3BhcnRpYWwod3JhcHBlZF9zaWcsIG9iaikKCiAgICBzaWcgPSBOb25lCiAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZSk6CiAgICAgICAgIyBvYmogaXMgYSBjbGFzcyBvciBhIG1ldGFjbGFzcwoKICAgICAgICAjIEZpcnN0LCBsZXQncyBzZWUgaWYgaXQgaGFzIGFuIG92ZXJsb2FkZWQgX19jYWxsX18gZGVmaW5lZAogICAgICAgICMgaW4gaXRzIG1ldGFjbGFzcwogICAgICAgIGNhbGwgPSBfc2lnbmF0dXJlX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKHR5cGUob2JqKSwgJ19fY2FsbF9fJykKICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzaWcgPSBfZ2V0X3NpZ25hdHVyZV9vZihjYWxsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZhY3RvcnlfbWV0aG9kID0gTm9uZQogICAgICAgICAgICBuZXcgPSBfc2lnbmF0dXJlX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19fbmV3X18nKQogICAgICAgICAgICBpbml0ID0gX3NpZ25hdHVyZV9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChvYmosICdfX2luaXRfXycpCiAgICAgICAgICAgICMgTm93IHdlIGNoZWNrIGlmIHRoZSAnb2JqJyBjbGFzcyBoYXMgYW4gb3duICdfX25ld19fJyBtZXRob2QKICAgICAgICAgICAgaWYgJ19fbmV3X18nIGluIG9iai5fX2RpY3RfXzoKICAgICAgICAgICAgICAgIGZhY3RvcnlfbWV0aG9kID0gbmV3CiAgICAgICAgICAgICMgb3IgYW4gb3duICdfX2luaXRfXycgbWV0aG9kCiAgICAgICAgICAgIGVsaWYgJ19faW5pdF9fJyBpbiBvYmouX19kaWN0X186CiAgICAgICAgICAgICAgICBmYWN0b3J5X21ldGhvZCA9IGluaXQKICAgICAgICAgICAgIyBJZiBub3QsIHdlIHRha2UgaW5oZXJpdGVkICdfX25ld19fJyBvciAnX19pbml0X18nLCBpZiBwcmVzZW50CiAgICAgICAgICAgIGVsaWYgbmV3IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgZmFjdG9yeV9tZXRob2QgPSBuZXcKICAgICAgICAgICAgZWxpZiBpbml0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgZmFjdG9yeV9tZXRob2QgPSBpbml0CgogICAgICAgICAgICBpZiBmYWN0b3J5X21ldGhvZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNpZyA9IF9nZXRfc2lnbmF0dXJlX29mKGZhY3RvcnlfbWV0aG9kKQoKICAgICAgICBpZiBzaWcgaXMgTm9uZToKICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtub3csIHRoYXQgYG9iamAgaXMgYSBjbGFzcywgd2l0aCBubyB1c2VyLQogICAgICAgICAgICAjIGRlZmluZWQgJ19faW5pdF9fJywgJ19fbmV3X18nLCBvciBjbGFzcy1sZXZlbCAnX19jYWxsX18nCgogICAgICAgICAgICBmb3IgYmFzZSBpbiBvYmouX19tcm9fX1s6LTFdOgogICAgICAgICAgICAgICAgIyBTaW5jZSAnX190ZXh0X3NpZ25hdHVyZV9fJyBpcyBpbXBsZW1lbnRlZCBhcyBhCiAgICAgICAgICAgICAgICAjIGRlc2NyaXB0b3IgdGhhdCBleHRyYWN0cyB0ZXh0IHNpZ25hdHVyZSBmcm9tIHRoZQogICAgICAgICAgICAgICAgIyBjbGFzcyBkb2NzdHJpbmcsIGlmICdvYmonIGlzIGRlcml2ZWQgZnJvbSBhIGJ1aWx0aW4KICAgICAgICAgICAgICAgICMgY2xhc3MsIGl0cyBvd24gJ19fdGV4dF9zaWduYXR1cmVfXycgbWF5IGJlICdOb25lJy4KICAgICAgICAgICAgICAgICMgVGhlcmVmb3JlLCB3ZSBnbyB0aHJvdWdoIHRoZSBNUk8gKGV4Y2VwdCB0aGUgbGFzdAogICAgICAgICAgICAgICAgIyBjbGFzcyBpbiB0aGVyZSwgd2hpY2ggaXMgJ29iamVjdCcpIHRvIGZpbmQgdGhlIGZpcnN0CiAgICAgICAgICAgICAgICAjIGNsYXNzIHdpdGggbm9uLWVtcHR5IHRleHQgc2lnbmF0dXJlLgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRleHRfc2lnID0gYmFzZS5fX3RleHRfc2lnbmF0dXJlX18KICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlmIHRleHRfc2lnOgogICAgICAgICAgICAgICAgICAgICAgICAjIElmICdiYXNlJyBjbGFzcyBoYXMgYSBfX3RleHRfc2lnbmF0dXJlX18gYXR0cmlidXRlOgogICAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiBhIHNpZ25hdHVyZSBiYXNlZCBvbiBpdAogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tc3RyKHNpZ2NscywgYmFzZSwgdGV4dF9zaWcpCgogICAgICAgICAgICAjIE5vICdfX3RleHRfc2lnbmF0dXJlX18nIHdhcyBmb3VuZCBmb3IgdGhlICdvYmonIGNsYXNzLgogICAgICAgICAgICAjIExhc3Qgb3B0aW9uIGlzIHRvIGNoZWNrIGlmIGl0cyAnX19pbml0X18nIGlzCiAgICAgICAgICAgICMgb2JqZWN0Ll9faW5pdF9fIG9yIHR5cGUuX19pbml0X18uCiAgICAgICAgICAgIGlmIHR5cGUgbm90IGluIG9iai5fX21yb19fOgogICAgICAgICAgICAgICAgIyBXZSBoYXZlIGEgY2xhc3MgKG5vdCBtZXRhY2xhc3MpLCBidXQgbm8gdXNlci1kZWZpbmVkCiAgICAgICAgICAgICAgICAjIF9faW5pdF9fIG9yIF9fbmV3X18gZm9yIGl0CiAgICAgICAgICAgICAgICBpZiAob2JqLl9faW5pdF9fIGlzIG9iamVjdC5fX2luaXRfXyBhbmQKICAgICAgICAgICAgICAgICAgICBvYmouX19uZXdfXyBpcyBvYmplY3QuX19uZXdfXyk6CiAgICAgICAgICAgICAgICAgICAgIyBSZXR1cm4gYSBzaWduYXR1cmUgb2YgJ29iamVjdCcgYnVpbHRpbi4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2lnY2xzLmZyb21fY2FsbGFibGUob2JqZWN0KQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluIHR5cGUgeyFyfScuZm9ybWF0KG9iaikpCgogICAgZWxpZiBub3QgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CiAgICAgICAgIyBBbiBvYmplY3Qgd2l0aCBfX2NhbGxfXwogICAgICAgICMgV2UgYWxzbyBjaGVjayB0aGF0IHRoZSAnb2JqJyBpcyBub3QgYW4gaW5zdGFuY2Ugb2YKICAgICAgICAjIHR5cGVzLldyYXBwZXJEZXNjcmlwdG9yVHlwZSBvciB0eXBlcy5NZXRob2RXcmFwcGVyVHlwZSB0byBhdm9pZAogICAgICAgICMgaW5maW5pdGUgcmVjdXJzaW9uIChhbmQgZXZlbiBwb3RlbnRpYWwgc2VnZmF1bHQpCiAgICAgICAgY2FsbCA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQogICAgICAgIGlmIGNhbGwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNpZyA9IF9nZXRfc2lnbmF0dXJlX29mKGNhbGwpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4OgogICAgICAgICAgICAgICAgbXNnID0gJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgeyFyfScuZm9ybWF0KG9iaikKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKSBmcm9tIGV4CgogICAgaWYgc2lnIGlzIG5vdCBOb25lOgogICAgICAgICMgRm9yIGNsYXNzZXMgYW5kIG9iamVjdHMgd2Ugc2tpcCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIHRoZWlyCiAgICAgICAgIyBfX2NhbGxfXywgX19uZXdfXywgb3IgX19pbml0X18gbWV0aG9kcwogICAgICAgIGlmIHNraXBfYm91bmRfYXJnOgogICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9ib3VuZF9tZXRob2Qoc2lnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzaWcKCiAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSk6CiAgICAgICAgIyBSYWlzZSBhIG5pY2VyIGVycm9yIG1lc3NhZ2UgZm9yIGJ1aWx0aW5zCiAgICAgICAgbXNnID0gJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbiBmdW5jdGlvbiB7IXJ9Jy5mb3JtYXQob2JqKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQoKICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NhbGxhYmxlIHshcn0gaXMgbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnLmZvcm1hdChvYmopKQoKCmNsYXNzIF92b2lkOgogICAgIiIiQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlLiIiIgoKCmNsYXNzIF9lbXB0eToKICAgICIiIk1hcmtlciBvYmplY3QgZm9yIFNpZ25hdHVyZS5lbXB0eSBhbmQgUGFyYW1ldGVyLmVtcHR5LiIiIgoKCmNsYXNzIF9QYXJhbWV0ZXJLaW5kKGVudW0uSW50RW51bSk6CiAgICBQT1NJVElPTkFMX09OTFkgPSAncG9zaXRpb25hbC1vbmx5JwogICAgUE9TSVRJT05BTF9PUl9LRVlXT1JEID0gJ3Bvc2l0aW9uYWwgb3Iga2V5d29yZCcKICAgIFZBUl9QT1NJVElPTkFMID0gJ3ZhcmlhZGljIHBvc2l0aW9uYWwnCiAgICBLRVlXT1JEX09OTFkgPSAna2V5d29yZC1vbmx5JwogICAgVkFSX0tFWVdPUkQgPSAndmFyaWFkaWMga2V5d29yZCcKCiAgICBkZWYgX19uZXdfXyhjbHMsIGRlc2NyaXB0aW9uKToKICAgICAgICB2YWx1ZSA9IGxlbihjbHMuX19tZW1iZXJzX18pCiAgICAgICAgbWVtYmVyID0gaW50Ll9fbmV3X18oY2xzLCB2YWx1ZSkKICAgICAgICBtZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCiAgICAgICAgbWVtYmVyLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KICAgICAgICByZXR1cm4gbWVtYmVyCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubmFtZQoKX1BPU0lUSU9OQUxfT05MWSAgICAgICAgID0gX1BhcmFtZXRlcktpbmQuUE9TSVRJT05BTF9PTkxZCl9QT1NJVElPTkFMX09SX0tFWVdPUkQgICA9IF9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT1JfS0VZV09SRApfVkFSX1BPU0lUSU9OQUwgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5WQVJfUE9TSVRJT05BTApfS0VZV09SRF9PTkxZICAgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5LRVlXT1JEX09OTFkKX1ZBUl9LRVlXT1JEICAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQuVkFSX0tFWVdPUkQKCgpjbGFzcyBQYXJhbWV0ZXI6CiAgICAiIiJSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgoKICAgIEhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzOgoKICAgICogbmFtZSA6IHN0cgogICAgICAgIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcuCiAgICAqIGRlZmF1bHQgOiBvYmplY3QKICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlciBpZiBzcGVjaWZpZWQuICBJZiB0aGUKICAgICAgICBwYXJhbWV0ZXIgaGFzIG5vIGRlZmF1bHQgdmFsdWUsIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0bwogICAgICAgIGBQYXJhbWV0ZXIuZW1wdHlgLgogICAgKiBhbm5vdGF0aW9uCiAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCiAgICAgICAgcGFyYW1ldGVyIGhhcyBubyBhbm5vdGF0aW9uLCB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8KICAgICAgICBgUGFyYW1ldGVyLmVtcHR5YC4KICAgICoga2luZCA6IHN0cgogICAgICAgIERlc2NyaWJlcyBob3cgYXJndW1lbnQgdmFsdWVzIGFyZSBib3VuZCB0byB0aGUgcGFyYW1ldGVyLgogICAgICAgIFBvc3NpYmxlIHZhbHVlczogYFBhcmFtZXRlci5QT1NJVElPTkFMX09OTFlgLAogICAgICAgIGBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEYCwgYFBhcmFtZXRlci5WQVJfUE9TSVRJT05BTGAsCiAgICAgICAgYFBhcmFtZXRlci5LRVlXT1JEX09OTFlgLCBgUGFyYW1ldGVyLlZBUl9LRVlXT1JEYC4KICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgnX25hbWUnLCAnX2tpbmQnLCAnX2RlZmF1bHQnLCAnX2Fubm90YXRpb24nKQoKICAgIFBPU0lUSU9OQUxfT05MWSAgICAgICAgID0gX1BPU0lUSU9OQUxfT05MWQogICAgUE9TSVRJT05BTF9PUl9LRVlXT1JEICAgPSBfUE9TSVRJT05BTF9PUl9LRVlXT1JECiAgICBWQVJfUE9TSVRJT05BTCAgICAgICAgICA9IF9WQVJfUE9TSVRJT05BTAogICAgS0VZV09SRF9PTkxZICAgICAgICAgICAgPSBfS0VZV09SRF9PTkxZCiAgICBWQVJfS0VZV09SRCAgICAgICAgICAgICA9IF9WQVJfS0VZV09SRAoKICAgIGVtcHR5ID0gX2VtcHR5CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGtpbmQsICosIGRlZmF1bHQ9X2VtcHR5LCBhbm5vdGF0aW9uPV9lbXB0eSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9raW5kID0gX1BhcmFtZXRlcktpbmQoa2luZCkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ3ZhbHVlIHtraW5kIXJ9IGlzIG5vdCBhIHZhbGlkIFBhcmFtZXRlci5raW5kJykKICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCBfZW1wdHk6CiAgICAgICAgICAgIGlmIHNlbGYuX2tpbmQgaW4gKF9WQVJfUE9TSVRJT05BTCwgX1ZBUl9LRVlXT1JEKToKICAgICAgICAgICAgICAgIG1zZyA9ICd7fSBwYXJhbWV0ZXJzIGNhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJwogICAgICAgICAgICAgICAgbXNnID0gbXNnLmZvcm1hdChzZWxmLl9raW5kLmRlc2NyaXB0aW9uKQogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCiAgICAgICAgc2VsZi5fZGVmYXVsdCA9IGRlZmF1bHQKICAgICAgICBzZWxmLl9hbm5vdGF0aW9uID0gYW5ub3RhdGlvbgoKICAgICAgICBpZiBuYW1lIGlzIF9lbXB0eToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbmFtZSBpcyBhIHJlcXVpcmVkIGF0dHJpYnV0ZSBmb3IgUGFyYW1ldGVyJykKCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICAgICAgbXNnID0gJ25hbWUgbXVzdCBiZSBhIHN0ciwgbm90IGEge30nLmZvcm1hdCh0eXBlKG5hbWUpLl9fbmFtZV9fKQogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKQoKICAgICAgICBpZiBuYW1lWzBdID09ICcuJyBhbmQgbmFtZVsxOl0uaXNkaWdpdCgpOgogICAgICAgICAgICAjIFRoZXNlIGFyZSBpbXBsaWNpdCBhcmd1bWVudHMgZ2VuZXJhdGVkIGJ5IGNvbXByZWhlbnNpb25zLiBJbgogICAgICAgICAgICAjIG9yZGVyIHRvIHByb3ZpZGUgYSBmcmllbmRsaWVyIGludGVyZmFjZSB0byB1c2Vycywgd2UgcmVjYXN0CiAgICAgICAgICAgICMgdGhlaXIgbmFtZSBhcyAiaW1wbGljaXROIiBhbmQgdHJlYXQgdGhlbSBhcyBwb3NpdGlvbmFsLW9ubHkuCiAgICAgICAgICAgICMgU2VlIGlzc3VlIDE5NjExLgogICAgICAgICAgICBpZiBzZWxmLl9raW5kICE9IF9QT1NJVElPTkFMX09SX0tFWVdPUkQ6CiAgICAgICAgICAgICAgICBtc2cgPSAoCiAgICAgICAgICAgICAgICAgICAgJ2ltcGxpY2l0IGFyZ3VtZW50cyBtdXN0IGJlIHBhc3NlZCBhcyAnCiAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMsIG5vdCB7fScKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoc2VsZi5fa2luZC5kZXNjcmlwdGlvbikKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQogICAgICAgICAgICBzZWxmLl9raW5kID0gX1BPU0lUSU9OQUxfT05MWQogICAgICAgICAgICBuYW1lID0gJ2ltcGxpY2l0e30nLmZvcm1hdChuYW1lWzE6XSkKCiAgICAgICAgIyBJdCdzIHBvc3NpYmxlIGZvciBDIGZ1bmN0aW9ucyB0byBoYXZlIGEgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcgogICAgICAgICMgd2hlcmUgdGhlIG5hbWUgaXMgYSBrZXl3b3JkLCBzbyBmb3IgY29tcGF0aWJpbGl0eSB3ZSdsbCBhbGxvdyBpdC4KICAgICAgICBpc19rZXl3b3JkID0gaXNrZXl3b3JkKG5hbWUpIGFuZCBzZWxmLl9raW5kIGlzIG5vdCBfUE9TSVRJT05BTF9PTkxZCiAgICAgICAgaWYgaXNfa2V5d29yZCBvciBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScuZm9ybWF0KG5hbWUpKQoKICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiAodHlwZShzZWxmKSwKICAgICAgICAgICAgICAgIChzZWxmLl9uYW1lLCBzZWxmLl9raW5kKSwKICAgICAgICAgICAgICAgIHsnX2RlZmF1bHQnOiBzZWxmLl9kZWZhdWx0LAogICAgICAgICAgICAgICAgICdfYW5ub3RhdGlvbic6IHNlbGYuX2Fubm90YXRpb259KQoKICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgogICAgICAgIHNlbGYuX2RlZmF1bHQgPSBzdGF0ZVsnX2RlZmF1bHQnXQogICAgICAgIHNlbGYuX2Fubm90YXRpb24gPSBzdGF0ZVsnX2Fubm90YXRpb24nXQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkZWZhdWx0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0CgogICAgQHByb3BlcnR5CiAgICBkZWYgYW5ub3RhdGlvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYW5ub3RhdGlvbgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGtpbmQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2tpbmQKCiAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBuYW1lPV92b2lkLCBraW5kPV92b2lkLAogICAgICAgICAgICAgICAgYW5ub3RhdGlvbj1fdm9pZCwgZGVmYXVsdD1fdm9pZCk6CiAgICAgICAgIiIiQ3JlYXRlcyBhIGN1c3RvbWl6ZWQgY29weSBvZiB0aGUgUGFyYW1ldGVyLiIiIgoKICAgICAgICBpZiBuYW1lIGlzIF92b2lkOgogICAgICAgICAgICBuYW1lID0gc2VsZi5fbmFtZQoKICAgICAgICBpZiBraW5kIGlzIF92b2lkOgogICAgICAgICAgICBraW5kID0gc2VsZi5fa2luZAoKICAgICAgICBpZiBhbm5vdGF0aW9uIGlzIF92b2lkOgogICAgICAgICAgICBhbm5vdGF0aW9uID0gc2VsZi5fYW5ub3RhdGlvbgoKICAgICAgICBpZiBkZWZhdWx0IGlzIF92b2lkOgogICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZGVmYXVsdAoKICAgICAgICByZXR1cm4gdHlwZShzZWxmKShuYW1lLCBraW5kLCBkZWZhdWx0PWRlZmF1bHQsIGFubm90YXRpb249YW5ub3RhdGlvbikKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICBraW5kID0gc2VsZi5raW5kCiAgICAgICAgZm9ybWF0dGVkID0gc2VsZi5fbmFtZQoKICAgICAgICAjIEFkZCBhbm5vdGF0aW9uIGFuZCBkZWZhdWx0IHZhbHVlCiAgICAgICAgaWYgc2VsZi5fYW5ub3RhdGlvbiBpcyBub3QgX2VtcHR5OgogICAgICAgICAgICBmb3JtYXR0ZWQgPSAne306IHt9Jy5mb3JtYXQoZm9ybWF0dGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRhbm5vdGF0aW9uKHNlbGYuX2Fubm90YXRpb24pKQoKICAgICAgICBpZiBzZWxmLl9kZWZhdWx0IGlzIG5vdCBfZW1wdHk6CiAgICAgICAgICAgIGlmIHNlbGYuX2Fubm90YXRpb24gaXMgbm90IF9lbXB0eToKICAgICAgICAgICAgICAgIGZvcm1hdHRlZCA9ICd7fSA9IHt9Jy5mb3JtYXQoZm9ybWF0dGVkLCByZXByKHNlbGYuX2RlZmF1bHQpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZm9ybWF0dGVkID0gJ3t9PXt9Jy5mb3JtYXQoZm9ybWF0dGVkLCByZXByKHNlbGYuX2RlZmF1bHQpKQoKICAgICAgICBpZiBraW5kID09IF9WQVJfUE9TSVRJT05BTDoKICAgICAgICAgICAgZm9ybWF0dGVkID0gJyonICsgZm9ybWF0dGVkCiAgICAgICAgZWxpZiBraW5kID09IF9WQVJfS0VZV09SRDoKICAgICAgICAgICAgZm9ybWF0dGVkID0gJyoqJyArIGZvcm1hdHRlZAoKICAgICAgICByZXR1cm4gZm9ybWF0dGVkCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnPHt9ICJ7fSI+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHJldHVybiBoYXNoKChzZWxmLm5hbWUsIHNlbGYua2luZCwgc2VsZi5hbm5vdGF0aW9uLCBzZWxmLmRlZmF1bHQpKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIHNlbGYgaXMgb3RoZXI6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFBhcmFtZXRlcik6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiAoc2VsZi5fbmFtZSA9PSBvdGhlci5fbmFtZSBhbmQKICAgICAgICAgICAgICAgIHNlbGYuX2tpbmQgPT0gb3RoZXIuX2tpbmQgYW5kCiAgICAgICAgICAgICAgICBzZWxmLl9kZWZhdWx0ID09IG90aGVyLl9kZWZhdWx0IGFuZAogICAgICAgICAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9PSBvdGhlci5fYW5ub3RhdGlvbikKCgpjbGFzcyBCb3VuZEFyZ3VtZW50czoKICAgICIiIlJlc3VsdCBvZiBgU2lnbmF0dXJlLmJpbmRgIGNhbGwuICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMKICAgIHRvIHRoZSBmdW5jdGlvbidzIHBhcmFtZXRlcnMuCgogICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CgogICAgKiBhcmd1bWVudHMgOiBkaWN0CiAgICAgICAgQW4gb3JkZXJlZCBtdXRhYmxlIG1hcHBpbmcgb2YgcGFyYW1ldGVycycgbmFtZXMgdG8gYXJndW1lbnRzJyB2YWx1ZXMuCiAgICAgICAgRG9lcyBub3QgY29udGFpbiBhcmd1bWVudHMnIGRlZmF1bHQgdmFsdWVzLgogICAgKiBzaWduYXR1cmUgOiBTaWduYXR1cmUKICAgICAgICBUaGUgU2lnbmF0dXJlIG9iamVjdCB0aGF0IGNyZWF0ZWQgdGhpcyBpbnN0YW5jZS4KICAgICogYXJncyA6IHR1cGxlCiAgICAgICAgVHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdmFsdWVzLgogICAgKiBrd2FyZ3MgOiBkaWN0CiAgICAgICAgRGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB2YWx1ZXMuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoJ2FyZ3VtZW50cycsICdfc2lnbmF0dXJlJywgJ19fd2Vha3JlZl9fJykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc2lnbmF0dXJlLCBhcmd1bWVudHMpOgogICAgICAgIHNlbGYuYXJndW1lbnRzID0gYXJndW1lbnRzCiAgICAgICAgc2VsZi5fc2lnbmF0dXJlID0gc2lnbmF0dXJlCgogICAgQHByb3BlcnR5CiAgICBkZWYgc2lnbmF0dXJlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9zaWduYXR1cmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhcmdzKHNlbGYpOgogICAgICAgIGFyZ3MgPSBbXQogICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbSBpbiBzZWxmLl9zaWduYXR1cmUucGFyYW1ldGVycy5pdGVtcygpOgogICAgICAgICAgICBpZiBwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICMgV2UncmUgZG9uZSBoZXJlLiBPdGhlciBhcmd1bWVudHMKICAgICAgICAgICAgICAgICMgd2lsbCBiZSBtYXBwZWQgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKICAgICAgICAgICAgICAgICAgICAjICphcmdzCiAgICAgICAgICAgICAgICAgICAgYXJncy5leHRlbmQoYXJnKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIHBsYWluIGFyZ3VtZW50CiAgICAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoYXJnKQoKICAgICAgICByZXR1cm4gdHVwbGUoYXJncykKCiAgICBAcHJvcGVydHkKICAgIGRlZiBrd2FyZ3Moc2VsZik6CiAgICAgICAga3dhcmdzID0ge30KICAgICAgICBrd2FyZ3Nfc3RhcnRlZCA9IEZhbHNlCiAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtIGluIHNlbGYuX3NpZ25hdHVyZS5wYXJhbWV0ZXJzLml0ZW1zKCk6CiAgICAgICAgICAgIGlmIG5vdCBrd2FyZ3Nfc3RhcnRlZDoKICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgaW4gKF9WQVJfS0VZV09SRCwgX0tFWVdPUkRfT05MWSk6CiAgICAgICAgICAgICAgICAgICAga3dhcmdzX3N0YXJ0ZWQgPSBUcnVlCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgbm90IGluIHNlbGYuYXJndW1lbnRzOgogICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3Nfc3RhcnRlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGlmIG5vdCBrd2FyZ3Nfc3RhcnRlZDoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLmFyZ3VtZW50c1twYXJhbV9uYW1lXQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRDoKICAgICAgICAgICAgICAgICAgICAjICoqa3dhcmdzCiAgICAgICAgICAgICAgICAgICAga3dhcmdzLnVwZGF0ZShhcmcpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgcGxhaW4ga2V5d29yZCBhcmd1bWVudAogICAgICAgICAgICAgICAgICAgIGt3YXJnc1twYXJhbV9uYW1lXSA9IGFyZwoKICAgICAgICByZXR1cm4ga3dhcmdzCgogICAgZGVmIGFwcGx5X2RlZmF1bHRzKHNlbGYpOgogICAgICAgICIiIlNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBhcmd1bWVudHMuCgogICAgICAgIEZvciB2YXJpYWJsZS1wb3NpdGlvbmFsIGFyZ3VtZW50cyAoKmFyZ3MpIHRoZSBkZWZhdWx0IGlzIGFuCiAgICAgICAgZW1wdHkgdHVwbGUuCgogICAgICAgIEZvciB2YXJpYWJsZS1rZXl3b3JkIGFyZ3VtZW50cyAoKiprd2FyZ3MpIHRoZSBkZWZhdWx0IGlzIGFuCiAgICAgICAgZW1wdHkgZGljdC4KICAgICAgICAiIiIKICAgICAgICBhcmd1bWVudHMgPSBzZWxmLmFyZ3VtZW50cwogICAgICAgIG5ld19hcmd1bWVudHMgPSBbXQogICAgICAgIGZvciBuYW1lLCBwYXJhbSBpbiBzZWxmLl9zaWduYXR1cmUucGFyYW1ldGVycy5pdGVtcygpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBuZXdfYXJndW1lbnRzLmFwcGVuZCgobmFtZSwgYXJndW1lbnRzW25hbWVdKSkKICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgaWYgcGFyYW0uZGVmYXVsdCBpcyBub3QgX2VtcHR5OgogICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcmFtLmRlZmF1bHQKICAgICAgICAgICAgICAgIGVsaWYgcGFyYW0ua2luZCBpcyBfVkFSX1BPU0lUSU9OQUw6CiAgICAgICAgICAgICAgICAgICAgdmFsID0gKCkKICAgICAgICAgICAgICAgIGVsaWYgcGFyYW0ua2luZCBpcyBfVkFSX0tFWVdPUkQ6CiAgICAgICAgICAgICAgICAgICAgdmFsID0ge30KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIEJvdW5kQXJndW1lbnRzIHdhcyBsaWtlbHkgcHJvZHVjZWQgYnkKICAgICAgICAgICAgICAgICAgICAjIFNpZ25hdHVyZS5iaW5kX3BhcnRpYWwoKS4KICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgbmV3X2FyZ3VtZW50cy5hcHBlbmQoKG5hbWUsIHZhbCkpCiAgICAgICAgc2VsZi5hcmd1bWVudHMgPSBkaWN0KG5ld19hcmd1bWVudHMpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgc2VsZiBpcyBvdGhlcjoKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgQm91bmRBcmd1bWVudHMpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKHNlbGYuc2lnbmF0dXJlID09IG90aGVyLnNpZ25hdHVyZSBhbmQKICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID09IG90aGVyLmFyZ3VtZW50cykKCiAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICBzZWxmLl9zaWduYXR1cmUgPSBzdGF0ZVsnX3NpZ25hdHVyZSddCiAgICAgICAgc2VsZi5hcmd1bWVudHMgPSBzdGF0ZVsnYXJndW1lbnRzJ10KCiAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgIHJldHVybiB7J19zaWduYXR1cmUnOiBzZWxmLl9zaWduYXR1cmUsICdhcmd1bWVudHMnOiBzZWxmLmFyZ3VtZW50c30KCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgYXJncyA9IFtdCiAgICAgICAgZm9yIGFyZywgdmFsdWUgaW4gc2VsZi5hcmd1bWVudHMuaXRlbXMoKToKICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3t9PXshcn0nLmZvcm1hdChhcmcsIHZhbHVlKSkKICAgICAgICByZXR1cm4gJzx7fSAoe30pPicuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnLCAnLmpvaW4oYXJncykpCgoKY2xhc3MgU2lnbmF0dXJlOgogICAgIiIiQSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIG92ZXJhbGwgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24uCiAgICBJdCBzdG9yZXMgYSBQYXJhbWV0ZXIgb2JqZWN0IGZvciBlYWNoIHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUKICAgIGZ1bmN0aW9uLCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuCgogICAgQSBTaWduYXR1cmUgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzOgoKICAgICogcGFyYW1ldGVycyA6IE9yZGVyZWREaWN0CiAgICAgICAgQW4gb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAgUGFyYW1ldGVyIG9iamVjdHMgKGtleXdvcmQtb25seSBhcmd1bWVudHMgYXJlIGluIHRoZSBzYW1lIG9yZGVyCiAgICAgICAgYXMgbGlzdGVkIGluIGBjb2RlLmNvX3Zhcm5hbWVzYCkuCiAgICAqIHJldHVybl9hbm5vdGF0aW9uIDogb2JqZWN0CiAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gaWYgc3BlY2lmaWVkLgogICAgICAgIElmIHRoZSBmdW5jdGlvbiBoYXMgbm8gYW5ub3RhdGlvbiBmb3IgaXRzIHJldHVybiB0eXBlLCB0aGlzCiAgICAgICAgYXR0cmlidXRlIGlzIHNldCB0byBgU2lnbmF0dXJlLmVtcHR5YC4KICAgICogYmluZCgqYXJncywgKiprd2FyZ3MpIC0+IEJvdW5kQXJndW1lbnRzCiAgICAgICAgQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyB0bwogICAgICAgIHBhcmFtZXRlcnMuCiAgICAqIGJpbmRfcGFydGlhbCgqYXJncywgKiprd2FyZ3MpIC0+IEJvdW5kQXJndW1lbnRzCiAgICAgICAgQ3JlYXRlcyBhIHBhcnRpYWwgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgdG8gcGFyYW1ldGVycyAoc2ltdWxhdGluZyAnZnVuY3Rvb2xzLnBhcnRpYWwnIGJlaGF2aW9yLikKICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgnX3JldHVybl9hbm5vdGF0aW9uJywgJ19wYXJhbWV0ZXJzJykKCiAgICBfcGFyYW1ldGVyX2NscyA9IFBhcmFtZXRlcgogICAgX2JvdW5kX2FyZ3VtZW50c19jbHMgPSBCb3VuZEFyZ3VtZW50cwoKICAgIGVtcHR5ID0gX2VtcHR5CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmFtZXRlcnM9Tm9uZSwgKiwgcmV0dXJuX2Fubm90YXRpb249X2VtcHR5LAogICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPVRydWUpOgogICAgICAgICIiIkNvbnN0cnVjdHMgU2lnbmF0dXJlIGZyb20gdGhlIGdpdmVuIGxpc3Qgb2YgUGFyYW1ldGVyCiAgICAgICAgb2JqZWN0cyBhbmQgJ3JldHVybl9hbm5vdGF0aW9uJy4gIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLgogICAgICAgICIiIgoKICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIE5vbmU6CiAgICAgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBfX3ZhbGlkYXRlX3BhcmFtZXRlcnNfXzoKICAgICAgICAgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKICAgICAgICAgICAgICAgIHRvcF9raW5kID0gX1BPU0lUSU9OQUxfT05MWQogICAgICAgICAgICAgICAga2luZF9kZWZhdWx0cyA9IEZhbHNlCgogICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAgICAgICAga2luZCA9IHBhcmFtLmtpbmQKICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGFyYW0ubmFtZQoKICAgICAgICAgICAgICAgICAgICBpZiBraW5kIDwgdG9wX2tpbmQ6CiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXI6IHt9IHBhcmFtZXRlciBiZWZvcmUge30gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlcicKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KHRvcF9raW5kLmRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQuZGVzY3JpcHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQogICAgICAgICAgICAgICAgICAgIGVsaWYga2luZCA+IHRvcF9raW5kOgogICAgICAgICAgICAgICAgICAgICAgICBraW5kX2RlZmF1bHRzID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgdG9wX2tpbmQgPSBraW5kCgogICAgICAgICAgICAgICAgICAgIGlmIGtpbmQgaW4gKF9QT1NJVElPTkFMX09OTFksIF9QT1NJVElPTkFMX09SX0tFWVdPUkQpOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5kZWZhdWx0IGlzIF9lbXB0eToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtpbmRfZGVmYXVsdHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBObyBkZWZhdWx0IGZvciB0aGlzIHBhcmFtZXRlciwgYnV0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJldmlvdXMgcGFyYW1ldGVyIG9mIHRoZSBzYW1lIGtpbmQgaGFkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnbm9uLWRlZmF1bHQgYXJndW1lbnQgZm9sbG93cyBkZWZhdWx0ICcgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmd1bWVudCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlcmUgaXMgYSBkZWZhdWx0IGZvciB0aGlzIHBhcmFtZXRlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmRfZGVmYXVsdHMgPSBUcnVlCgogICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gcGFyYW1zOgogICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lOiB7IXJ9Jy5mb3JtYXQobmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCgogICAgICAgICAgICAgICAgICAgIHBhcmFtc1tuYW1lXSA9IHBhcmFtCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgocGFyYW0ubmFtZSwgcGFyYW0pIGZvciBwYXJhbSBpbiBwYXJhbWV0ZXJzKQoKICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZShwYXJhbXMpCiAgICAgICAgc2VsZi5fcmV0dXJuX2Fubm90YXRpb24gPSByZXR1cm5fYW5ub3RhdGlvbgoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGZyb21fY2FsbGFibGUoY2xzLCBvYmosICosCiAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlZD1UcnVlLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBldmFsX3N0cj1GYWxzZSk6CiAgICAgICAgIiIiQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBjYWxsYWJsZSBvYmplY3QuIiIiCiAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZShvYmosIHNpZ2Nscz1jbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMsIGxvY2Fscz1sb2NhbHMsIGV2YWxfc3RyPWV2YWxfc3RyKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKCiAgICBAcHJvcGVydHkKICAgIGRlZiByZXR1cm5fYW5ub3RhdGlvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fcmV0dXJuX2Fubm90YXRpb24KCiAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBwYXJhbWV0ZXJzPV92b2lkLCByZXR1cm5fYW5ub3RhdGlvbj1fdm9pZCk6CiAgICAgICAgIiIiQ3JlYXRlcyBhIGN1c3RvbWl6ZWQgY29weSBvZiB0aGUgU2lnbmF0dXJlLgogICAgICAgIFBhc3MgJ3BhcmFtZXRlcnMnIGFuZC9vciAncmV0dXJuX2Fubm90YXRpb24nIGFyZ3VtZW50cwogICAgICAgIHRvIG92ZXJyaWRlIHRoZW0gaW4gdGhlIG5ldyBjb3B5LgogICAgICAgICIiIgoKICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIF92b2lkOgogICAgICAgICAgICBwYXJhbWV0ZXJzID0gc2VsZi5wYXJhbWV0ZXJzLnZhbHVlcygpCgogICAgICAgIGlmIHJldHVybl9hbm5vdGF0aW9uIGlzIF92b2lkOgogICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbiA9IHNlbGYuX3JldHVybl9hbm5vdGF0aW9uCgogICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249cmV0dXJuX2Fubm90YXRpb24pCgogICAgZGVmIF9oYXNoX2Jhc2lzKHNlbGYpOgogICAgICAgIHBhcmFtcyA9IHR1cGxlKHBhcmFtIGZvciBwYXJhbSBpbiBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kICE9IF9LRVlXT1JEX09OTFkpCgogICAgICAgIGt3b19wYXJhbXMgPSB7cGFyYW0ubmFtZTogcGFyYW0gZm9yIHBhcmFtIGluIHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfS0VZV09SRF9PTkxZfQoKICAgICAgICByZXR1cm4gcGFyYW1zLCBrd29fcGFyYW1zLCBzZWxmLnJldHVybl9hbm5vdGF0aW9uCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHBhcmFtcywga3dvX3BhcmFtcywgcmV0dXJuX2Fubm90YXRpb24gPSBzZWxmLl9oYXNoX2Jhc2lzKCkKICAgICAgICBrd29fcGFyYW1zID0gZnJvemVuc2V0KGt3b19wYXJhbXMudmFsdWVzKCkpCiAgICAgICAgcmV0dXJuIGhhc2goKHBhcmFtcywga3dvX3BhcmFtcywgcmV0dXJuX2Fubm90YXRpb24pKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIHNlbGYgaXMgb3RoZXI6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFNpZ25hdHVyZSk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiBzZWxmLl9oYXNoX2Jhc2lzKCkgPT0gb3RoZXIuX2hhc2hfYmFzaXMoKQoKICAgIGRlZiBfYmluZChzZWxmLCBhcmdzLCBrd2FyZ3MsICosIHBhcnRpYWw9RmFsc2UpOgogICAgICAgICIiIlByaXZhdGUgbWV0aG9kLiBEb24ndCB1c2UgZGlyZWN0bHkuIiIiCgogICAgICAgIGFyZ3VtZW50cyA9IHt9CgogICAgICAgIHBhcmFtZXRlcnMgPSBpdGVyKHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKSkKICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKCkKICAgICAgICBhcmdfdmFscyA9IGl0ZXIoYXJncykKCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIyBMZXQncyBpdGVyYXRlIHRocm91Z2ggdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFuZCBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICMgcGFyYW1ldGVycwogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBhcmdfdmFsID0gbmV4dChhcmdfdmFscykKICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICAgICAjIE5vIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IG5leHQocGFyYW1ldGVycykKICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICAgICAgICAgICAgICMgTm8gbW9yZSBwYXJhbWV0ZXJzLiBUaGF0J3MgaXQuIEp1c3QgbmVlZCB0byBjaGVjayB0aGF0CiAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIG5vIGBrd2FyZ3NgIGFmdGVyIHRoaXMgd2hpbGUgbG9vcAogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgogICAgICAgICAgICAgICAgICAgICAgICAjIFRoYXQncyBPSywganVzdCBlbXB0eSAqYXJncy4gIExldCdzIHN0YXJ0IHBhcnNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIyBrd2FyZ3MKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBlbGlmIHBhcmFtLm5hbWUgaW4ga3dhcmdzOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9QT1NJVElPTkFMX09OTFk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidXQgd2FzIHBhc3NlZCBhcyBhIGtleXdvcmQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNfZXggPSAocGFyYW0sKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGVsaWYgKHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmF1bHQgaXMgbm90IF9lbXB0eSk6CiAgICAgICAgICAgICAgICAgICAgICAgICMgVGhhdCdzIGZpbmUgdG9vIC0gd2UgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIuICBTbywgbGV0cyBzdGFydCBwYXJzaW5nIGBrd2FyZ3NgLCBzdGFydGluZwogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggdGhlIGN1cnJlbnQgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNfZXggPSAocGFyYW0sKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICMgTm8gZGVmYXVsdCwgbm90IFZBUl9LRVlXT1JELCBub3QgVkFSX1BPU0lUSU9OQUwsCiAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IGluIGBrd2FyZ3NgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnRpYWw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnbWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiB7YXJnIXJ9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmZvcm1hdChhcmc9cGFyYW0ubmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBXZSBoYXZlIGEgcG9zaXRpb25hbCBhcmd1bWVudCB0byBwcm9jZXNzCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBuZXh0KHBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJykgZnJvbSBOb25lCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgaW4gKF9WQVJfS0VZV09SRCwgX0tFWVdPUkRfT05MWSk6CiAgICAgICAgICAgICAgICAgICAgICAgICMgTG9va3MgbGlrZSB3ZSBoYXZlIG5vIHBhcmFtZXRlciBmb3IgdGhpcyBwb3NpdGlvbmFsCiAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJykgZnJvbSBOb25lCgogICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgogICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYW4gJyphcmdzJy1saWtlIGFyZ3VtZW50LCBsZXQncyBmaWxsIGl0IHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgcG9zaXRpb25hbCBhcmd1bWVudHMgd2UgaGF2ZSBsZWZ0IGFuZCBtb3ZlIG9uIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5leHQgcGhhc2UKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gW2FyZ192YWxdCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5leHRlbmQoYXJnX3ZhbHMpCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IHR1cGxlKHZhbHVlcykKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ubmFtZSBpbiBrd2FyZ3MgYW5kIHBhcmFtLmtpbmQgIT0gX1BPU0lUSU9OQUxfT05MWToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQge2FyZyFyfScuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZz1wYXJhbS5uYW1lKSkgZnJvbSBOb25lCgogICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IGFyZ192YWwKCiAgICAgICAgIyBOb3csIHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgdG8gcHJvY2VzcwogICAgICAgICMga2V5d29yZCBhcmd1bWVudHMKICAgICAgICBrd2FyZ3NfcGFyYW0gPSBOb25lCiAgICAgICAgZm9yIHBhcmFtIGluIGl0ZXJ0b29scy5jaGFpbihwYXJhbWV0ZXJzX2V4LCBwYXJhbWV0ZXJzKToKICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfVkFSX0tFWVdPUkQ6CiAgICAgICAgICAgICAgICAjIE1lbW9yaXplIHRoYXQgd2UgaGF2ZSBhICcqKmt3YXJncyctbGlrZSBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGt3YXJnc19wYXJhbSA9IHBhcmFtCiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CiAgICAgICAgICAgICAgICAjIE5hbWVkIGFyZ3VtZW50cyBkb24ndCByZWZlciB0byAnKmFyZ3MnLWxpa2UgcGFyYW1ldGVycy4KICAgICAgICAgICAgICAgICMgV2Ugb25seSBhcnJpdmUgaGVyZSBpZiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgZW5kZWQKICAgICAgICAgICAgICAgICMgYmVmb3JlIHJlYWNoaW5nIHRoZSBsYXN0IHBhcmFtZXRlciBiZWZvcmUgKmFyZ3MuCiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgcGFyYW1fbmFtZSA9IHBhcmFtLm5hbWUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYXJnX3ZhbCA9IGt3YXJncy5wb3AocGFyYW1fbmFtZSkKICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIyBXZSBoYXZlIG5vIHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlci4gIEl0J3MgZmluZSB0aG91Z2gsCiAgICAgICAgICAgICAgICAjIGlmIGl0IGhhcyBhIGRlZmF1bHQgdmFsdWUsIG9yIGl0IGlzIGFuICcqYXJncyctbGlrZQogICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIsIGxlZnQgYWxvbmUgYnkgdGhlIHByb2Nlc3Npbmcgb2YgcG9zaXRpb25hbAogICAgICAgICAgICAgICAgIyBhcmd1bWVudHMuCiAgICAgICAgICAgICAgICBpZiAobm90IHBhcnRpYWwgYW5kIHBhcmFtLmtpbmQgIT0gX1ZBUl9QT1NJVElPTkFMIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBfZW1wdHkpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiB7YXJnIXJ9Jy4gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoYXJnPXBhcmFtX25hbWUpKSBmcm9tIE5vbmUKCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9QT1NJVElPTkFMX09OTFk6CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gY2FzZSBvZiBhIHByb3Blcmx5IGJ1aWx0CiAgICAgICAgICAgICAgICAgICAgIyBTaWduYXR1cmUgb2JqZWN0IChidXQgbGV0J3MgaGF2ZSB0aGlzIGNoZWNrIGhlcmUKICAgICAgICAgICAgICAgICAgICAjIHRvIGVuc3VyZSBjb3JyZWN0IGJlaGF2aW91ciBqdXN0IGluIGNhc2UpCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7YXJnIXJ9IHBhcmFtZXRlciBpcyBwb3NpdGlvbmFsIG9ubHksICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1dCB3YXMgcGFzc2VkIGFzIGEga2V5d29yZCcuIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KGFyZz1wYXJhbS5uYW1lKSkKCiAgICAgICAgICAgICAgICBhcmd1bWVudHNbcGFyYW1fbmFtZV0gPSBhcmdfdmFsCgogICAgICAgIGlmIGt3YXJnczoKICAgICAgICAgICAgaWYga3dhcmdzX3BhcmFtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIyBQcm9jZXNzIG91ciAnKiprd2FyZ3MnLWxpa2UgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICBhcmd1bWVudHNba3dhcmdzX3BhcmFtLm5hbWVdID0ga3dhcmdzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJ2dvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQge2FyZyFyfScuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICBhcmc9bmV4dChpdGVyKGt3YXJncykpKSkKCiAgICAgICAgcmV0dXJuIHNlbGYuX2JvdW5kX2FyZ3VtZW50c19jbHMoc2VsZiwgYXJndW1lbnRzKQoKICAgIGRlZiBiaW5kKHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IG1hcHMgdGhlIHBhc3NlZCBgYXJnc2AKICAgICAgICBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLiAgUmFpc2VzIGBUeXBlRXJyb3JgCiAgICAgICAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MpCgogICAgZGVmIGJpbmRfcGFydGlhbChzZWxmLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIkdldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKICAgICAgICBwYXNzZWQgYGFyZ3NgIGFuZCBga3dhcmdzYCB0byB0aGUgZnVuY3Rpb24ncyBzaWduYXR1cmUuCiAgICAgICAgUmFpc2VzIGBUeXBlRXJyb3JgIGlmIHRoZSBwYXNzZWQgYXJndW1lbnRzIGNhbiBub3QgYmUgYm91bmQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2JpbmQoYXJncywga3dhcmdzLCBwYXJ0aWFsPVRydWUpCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgcmV0dXJuICh0eXBlKHNlbGYpLAogICAgICAgICAgICAgICAgKHR1cGxlKHNlbGYuX3BhcmFtZXRlcnMudmFsdWVzKCkpLCksCiAgICAgICAgICAgICAgICB7J19yZXR1cm5fYW5ub3RhdGlvbic6IHNlbGYuX3JldHVybl9hbm5vdGF0aW9ufSkKCiAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbiA9IHN0YXRlWydfcmV0dXJuX2Fubm90YXRpb24nXQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzx7fSB7fT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZikKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIHJlbmRlcl9wb3Nfb25seV9zZXBhcmF0b3IgPSBGYWxzZQogICAgICAgIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvciA9IFRydWUKICAgICAgICBmb3IgcGFyYW0gaW4gc2VsZi5wYXJhbWV0ZXJzLnZhbHVlcygpOgogICAgICAgICAgICBmb3JtYXR0ZWQgPSBzdHIocGFyYW0pCgogICAgICAgICAgICBraW5kID0gcGFyYW0ua2luZAoKICAgICAgICAgICAgaWYga2luZCA9PSBfUE9TSVRJT05BTF9PTkxZOgogICAgICAgICAgICAgICAgcmVuZGVyX3Bvc19vbmx5X3NlcGFyYXRvciA9IFRydWUKICAgICAgICAgICAgZWxpZiByZW5kZXJfcG9zX29ubHlfc2VwYXJhdG9yOgogICAgICAgICAgICAgICAgIyBJdCdzIG5vdCBhIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXIsIGFuZCB0aGUgZmxhZwogICAgICAgICAgICAgICAgIyBpcyBzZXQgdG8gJ1RydWUnICh0aGVyZSB3ZXJlIHBvcy1vbmx5IHBhcmFtcyBiZWZvcmUuKQogICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLycpCiAgICAgICAgICAgICAgICByZW5kZXJfcG9zX29ubHlfc2VwYXJhdG9yID0gRmFsc2UKCiAgICAgICAgICAgIGlmIGtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgogICAgICAgICAgICAgICAgIyBPSywgd2UgaGF2ZSBhbiAnKmFyZ3MnLWxpa2UgcGFyYW1ldGVyLCBzbyB3ZSB3b24ndCBuZWVkCiAgICAgICAgICAgICAgICAjIGEgJyonIHRvIHNlcGFyYXRlIGtleXdvcmQtb25seSBhcmd1bWVudHMKICAgICAgICAgICAgICAgIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvciA9IEZhbHNlCiAgICAgICAgICAgIGVsaWYga2luZCA9PSBfS0VZV09SRF9PTkxZIGFuZCByZW5kZXJfa3dfb25seV9zZXBhcmF0b3I6CiAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyIHRvIHJlbmRlciBhbmQgd2UgaGF2ZW4ndAogICAgICAgICAgICAgICAgIyByZW5kZXJlZCBhbiAnKmFyZ3MnLWxpa2UgcGFyYW1ldGVyIGJlZm9yZSwgc28gYWRkIGEgJyonCiAgICAgICAgICAgICAgICAjIHNlcGFyYXRvciB0byB0aGUgcGFyYW1ldGVycyBsaXN0ICgiZm9vKGFyZzEsICosIGFyZzIpIiBjYXNlKQogICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKicpCiAgICAgICAgICAgICAgICAjIFRoaXMgY29uZGl0aW9uIHNob3VsZCBiZSBvbmx5IHRyaWdnZXJlZCBvbmNlLCBzbwogICAgICAgICAgICAgICAgIyByZXNldCB0aGUgZmxhZwogICAgICAgICAgICAgICAgcmVuZGVyX2t3X29ubHlfc2VwYXJhdG9yID0gRmFsc2UKCiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZm9ybWF0dGVkKQoKICAgICAgICBpZiByZW5kZXJfcG9zX29ubHlfc2VwYXJhdG9yOgogICAgICAgICAgICAjIFRoZXJlIHdlcmUgb25seSBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycywgaGVuY2UgdGhlCiAgICAgICAgICAgICMgZmxhZyB3YXMgbm90IHJlc2V0IHRvICdGYWxzZScKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLycpCgogICAgICAgIHJlbmRlcmVkID0gJyh7fSknLmZvcm1hdCgnLCAnLmpvaW4ocmVzdWx0KSkKCiAgICAgICAgaWYgc2VsZi5yZXR1cm5fYW5ub3RhdGlvbiBpcyBub3QgX2VtcHR5OgogICAgICAgICAgICBhbm5vID0gZm9ybWF0YW5ub3RhdGlvbihzZWxmLnJldHVybl9hbm5vdGF0aW9uKQogICAgICAgICAgICByZW5kZXJlZCArPSAnIC0+IHt9Jy5mb3JtYXQoYW5ubykKCiAgICAgICAgcmV0dXJuIHJlbmRlcmVkCgoKZGVmIHNpZ25hdHVyZShvYmosICosIGZvbGxvd193cmFwcGVkPVRydWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGV2YWxfc3RyPUZhbHNlKToKICAgICIiIkdldCBhIHNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQgY2FsbGFibGUuIiIiCiAgICByZXR1cm4gU2lnbmF0dXJlLmZyb21fY2FsbGFibGUob2JqLCBmb2xsb3dfd3JhcHBlZD1mb2xsb3dfd3JhcHBlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMsIGxvY2Fscz1sb2NhbHMsIGV2YWxfc3RyPWV2YWxfc3RyKQoKCmRlZiBfbWFpbigpOgogICAgIiIiIExvZ2ljIGZvciBpbnNwZWN0aW5nIGFuIG9iamVjdCBnaXZlbiBhdCBjb21tYW5kIGxpbmUgIiIiCiAgICBpbXBvcnQgYXJncGFyc2UKICAgIGltcG9ydCBpbXBvcnRsaWIKCiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICdvYmplY3QnLAogICAgICAgICBoZWxwPSJUaGUgb2JqZWN0IHRvIGJlIGFuYWx5c2VkLiAiCiAgICAgICAgICAgICAgIkl0IHN1cHBvcnRzIHRoZSAnbW9kdWxlOnF1YWxuYW1lJyBzeW50YXgiKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAnLWQnLCAnLS1kZXRhaWxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICBoZWxwPSdEaXNwbGF5IGluZm8gYWJvdXQgdGhlIG1vZHVsZSByYXRoZXIgdGhhbiBpdHMgc291cmNlIGNvZGUnKQoKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCgogICAgdGFyZ2V0ID0gYXJncy5vYmplY3QKICAgIG1vZF9uYW1lLCBoYXNfYXR0cnMsIGF0dHJzID0gdGFyZ2V0LnBhcnRpdGlvbigiOiIpCiAgICB0cnk6CiAgICAgICAgb2JqID0gbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobW9kX25hbWUpCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICBtc2cgPSAiRmFpbGVkIHRvIGltcG9ydCB7fSAoe306IHt9KSIuZm9ybWF0KG1vZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZShleGMpLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjKQogICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgIHN5cy5leGl0KDIpCgogICAgaWYgaGFzX2F0dHJzOgogICAgICAgIHBhcnRzID0gYXR0cnMuc3BsaXQoIi4iKQogICAgICAgIG9iaiA9IG1vZHVsZQogICAgICAgIGZvciBwYXJ0IGluIHBhcnRzOgogICAgICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgcGFydCkKCiAgICBpZiBtb2R1bGUuX19uYW1lX18gaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgogICAgICAgIHByaW50KCJDYW4ndCBnZXQgaW5mbyBmb3IgYnVpbHRpbiBtb2R1bGVzLiIsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICBzeXMuZXhpdCgxKQoKICAgIGlmIGFyZ3MuZGV0YWlsczoKICAgICAgICBwcmludCgnVGFyZ2V0OiB7fScuZm9ybWF0KHRhcmdldCkpCiAgICAgICAgcHJpbnQoJ09yaWdpbjoge30nLmZvcm1hdChnZXRzb3VyY2VmaWxlKG1vZHVsZSkpKQogICAgICAgIHByaW50KCdDYWNoZWQ6IHt9Jy5mb3JtYXQobW9kdWxlLl9fY2FjaGVkX18pKQogICAgICAgIGlmIG9iaiBpcyBtb2R1bGU6CiAgICAgICAgICAgIHByaW50KCdMb2FkZXI6IHt9Jy5mb3JtYXQocmVwcihtb2R1bGUuX19sb2FkZXJfXykpKQogICAgICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CiAgICAgICAgICAgICAgICBwcmludCgnU3VibW9kdWxlIHNlYXJjaCBwYXRoOiB7fScuZm9ybWF0KG1vZHVsZS5fX3BhdGhfXykpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgX18sIGxpbmVubyA9IGZpbmRzb3VyY2Uob2JqKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoJ0xpbmU6IHt9Jy5mb3JtYXQobGluZW5vKSkKCiAgICAgICAgcHJpbnQoJ1xuJykKICAgIGVsc2U6CiAgICAgICAgcHJpbnQoZ2V0c291cmNlKG9iaikpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIF9tYWluKCkKUEsDBBQAAAAAAAIgo1Z069oUkBAAAJAQAAAFAAAAaW8ucHkiIiJUaGUgaW8gbW9kdWxlIHByb3ZpZGVzIHRoZSBQeXRob24gaW50ZXJmYWNlcyB0byBzdHJlYW0gaGFuZGxpbmcuIFRoZQpidWlsdGluIG9wZW4gZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZS4KCkF0IHRoZSB0b3Agb2YgdGhlIEkvTyBoaWVyYXJjaHkgaXMgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgSU9CYXNlLiBJdApkZWZpbmVzIHRoZSBiYXNpYyBpbnRlcmZhY2UgdG8gYSBzdHJlYW0uIE5vdGUsIGhvd2V2ZXIsIHRoYXQgdGhlcmUgaXMgbm8Kc2VwYXJhdGlvbiBiZXR3ZWVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gc3RyZWFtczsgaW1wbGVtZW50YXRpb25zIGFyZQphbGxvd2VkIHRvIHJhaXNlIGFuIE9TRXJyb3IgaWYgdGhleSBkbyBub3Qgc3VwcG9ydCBhIGdpdmVuIG9wZXJhdGlvbi4KCkV4dGVuZGluZyBJT0Jhc2UgaXMgUmF3SU9CYXNlIHdoaWNoIGRlYWxzIHNpbXBseSB3aXRoIHRoZSByZWFkaW5nIGFuZAp3cml0aW5nIG9mIHJhdyBieXRlcyB0byBhIHN0cmVhbS4gRmlsZUlPIHN1YmNsYXNzZXMgUmF3SU9CYXNlIHRvIHByb3ZpZGUKYW4gaW50ZXJmYWNlIHRvIE9TIGZpbGVzLgoKQnVmZmVyZWRJT0Jhc2UgZGVhbHMgd2l0aCBidWZmZXJpbmcgb24gYSByYXcgYnl0ZSBzdHJlYW0gKFJhd0lPQmFzZSkuIEl0cwpzdWJjbGFzc2VzLCBCdWZmZXJlZFdyaXRlciwgQnVmZmVyZWRSZWFkZXIsIGFuZCBCdWZmZXJlZFJXUGFpciBidWZmZXIKc3RyZWFtcyB0aGF0IGFyZSByZWFkYWJsZSwgd3JpdGFibGUsIGFuZCBib3RoIHJlc3BlY3RpdmVseS4KQnVmZmVyZWRSYW5kb20gcHJvdmlkZXMgYSBidWZmZXJlZCBpbnRlcmZhY2UgdG8gcmFuZG9tIGFjY2VzcwpzdHJlYW1zLiBCeXRlc0lPIGlzIGEgc2ltcGxlIHN0cmVhbSBvZiBpbi1tZW1vcnkgYnl0ZXMuCgpBbm90aGVyIElPQmFzZSBzdWJjbGFzcywgVGV4dElPQmFzZSwgZGVhbHMgd2l0aCB0aGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nCm9mIHN0cmVhbXMgaW50byB0ZXh0LiBUZXh0SU9XcmFwcGVyLCB3aGljaCBleHRlbmRzIGl0LCBpcyBhIGJ1ZmZlcmVkIHRleHQKaW50ZXJmYWNlIHRvIGEgYnVmZmVyZWQgcmF3IHN0cmVhbSAoYEJ1ZmZlcmVkSU9CYXNlYCkuIEZpbmFsbHksIFN0cmluZ0lPCmlzIGFuIGluLW1lbW9yeSBzdHJlYW0gZm9yIHRleHQuCgpBcmd1bWVudCBuYW1lcyBhcmUgbm90IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb24sIGFuZCBvbmx5IHRoZSBhcmd1bWVudHMKb2Ygb3BlbigpIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGtleXdvcmQgYXJndW1lbnRzLgoKZGF0YToKCkRFRkFVTFRfQlVGRkVSX1NJWkUKCiAgIEFuIGludCBjb250YWluaW5nIHRoZSBkZWZhdWx0IGJ1ZmZlciBzaXplIHVzZWQgYnkgdGhlIG1vZHVsZSdzIGJ1ZmZlcmVkCiAgIEkvTyBjbGFzc2VzLiBvcGVuKCkgdXNlcyB0aGUgZmlsZSdzIGJsa3NpemUgKGFzIG9idGFpbmVkIGJ5IG9zLnN0YXQpIGlmCiAgIHBvc3NpYmxlLgoiIiIKIyBOZXcgSS9PIGxpYnJhcnkgY29uZm9ybWluZyB0byBQRVAgMzExNi4KCl9fYXV0aG9yX18gPSAoIkd1aWRvIHZhbiBSb3NzdW0gPGd1aWRvQHB5dGhvbi5vcmc+LCAiCiAgICAgICAgICAgICAgIk1pa2UgVmVyZG9uZSA8bWlrZS52ZXJkb25lQGdtYWlsLmNvbT4sICIKICAgICAgICAgICAgICAiTWFyayBSdXNzZWxsIDxtYXJrLnJ1c3NlbGxAemVuLmNvLnVrPiwgIgogICAgICAgICAgICAgICJBbnRvaW5lIFBpdHJvdSA8c29saXBzaXNAcGl0cm91Lm5ldD4sICIKICAgICAgICAgICAgICAiQW1hdXJ5IEZvcmdlb3QgZCdBcmMgPGFtYXVyeWZhQGdtYWlsLmNvbT4sICIKICAgICAgICAgICAgICAiQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+IikKCl9fYWxsX18gPSBbIkJsb2NraW5nSU9FcnJvciIsICJvcGVuIiwgIm9wZW5fY29kZSIsICJJT0Jhc2UiLCAiUmF3SU9CYXNlIiwKICAgICAgICAgICAiRmlsZUlPIiwgIkJ5dGVzSU8iLCAiU3RyaW5nSU8iLCAiQnVmZmVyZWRJT0Jhc2UiLAogICAgICAgICAgICJCdWZmZXJlZFJlYWRlciIsICJCdWZmZXJlZFdyaXRlciIsICJCdWZmZXJlZFJXUGFpciIsCiAgICAgICAgICAgIkJ1ZmZlcmVkUmFuZG9tIiwgIlRleHRJT0Jhc2UiLCAiVGV4dElPV3JhcHBlciIsCiAgICAgICAgICAgIlVuc3VwcG9ydGVkT3BlcmF0aW9uIiwgIlNFRUtfU0VUIiwgIlNFRUtfQ1VSIiwgIlNFRUtfRU5EIl0KCgppbXBvcnQgX2lvCmltcG9ydCBhYmMKCmZyb20gX2lvIGltcG9ydCAoREVGQVVMVF9CVUZGRVJfU0laRSwgQmxvY2tpbmdJT0Vycm9yLCBVbnN1cHBvcnRlZE9wZXJhdGlvbiwKICAgICAgICAgICAgICAgICBvcGVuLCBvcGVuX2NvZGUsIEZpbGVJTywgQnl0ZXNJTywgU3RyaW5nSU8sIEJ1ZmZlcmVkUmVhZGVyLAogICAgICAgICAgICAgICAgIEJ1ZmZlcmVkV3JpdGVyLCBCdWZmZXJlZFJXUGFpciwgQnVmZmVyZWRSYW5kb20sCiAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciwgdGV4dF9lbmNvZGluZywgVGV4dElPV3JhcHBlcikKCgpkZWYgX19nZXRhdHRyX18obmFtZSk6CiAgICBpZiBuYW1lID09ICJPcGVuV3JhcHBlciI6CiAgICAgICAgIyBicG8tNDM2ODA6IFVudGlsIFB5dGhvbiAzLjksIF9weWlvLm9wZW4gd2FzIG5vdCBhIHN0YXRpYyBtZXRob2QgYW5kCiAgICAgICAgIyBidWlsdGlucy5vcGVuIHdhcyBzZXQgdG8gT3BlbldyYXBwZXIgdG8gbm90IGJlY29tZSBhIGJvdW5kIG1ldGhvZAogICAgICAgICMgd2hlbiBzZXQgdG8gYSBjbGFzcyB2YXJpYWJsZS4gX2lvLm9wZW4gaXMgYSBidWlsdC1pbiBmdW5jdGlvbiB3aGVyZWFzCiAgICAgICAgIyBfcHlpby5vcGVuIGlzIGEgUHl0aG9uIGZ1bmN0aW9uLiBJbiBQeXRob24gMy4xMCwgX3B5aW8ub3BlbigpIGlzIG5vdwogICAgICAgICMgYSBzdGF0aWMgbWV0aG9kLCBhbmQgYnVpbHRpbnMub3BlbigpIGlzIG5vdyBpby5vcGVuKCkuCiAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgd2FybmluZ3Mud2FybignT3BlbldyYXBwZXIgaXMgZGVwcmVjYXRlZCwgdXNlIG9wZW4gaW5zdGVhZCcsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICBnbG9iYWwgT3BlbldyYXBwZXIKICAgICAgICBPcGVuV3JhcHBlciA9IG9wZW4KICAgICAgICByZXR1cm4gT3BlbldyYXBwZXIKICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGYibW9kdWxlIHtfX25hbWVfXyFyfSBoYXMgbm8gYXR0cmlidXRlIHtuYW1lIXJ9IikKCgojIFByZXRlbmQgdGhpcyBleGNlcHRpb24gd2FzIGNyZWF0ZWQgaGVyZS4KVW5zdXBwb3J0ZWRPcGVyYXRpb24uX19tb2R1bGVfXyA9ICJpbyIKCiMgZm9yIHNlZWsoKQpTRUVLX1NFVCA9IDAKU0VFS19DVVIgPSAxClNFRUtfRU5EID0gMgoKIyBEZWNsYXJpbmcgQUJDcyBpbiBDIGlzIHRyaWNreSBzbyB3ZSBkbyBpdCBoZXJlLgojIE1ldGhvZCBkZXNjcmlwdGlvbnMgYW5kIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUgQwojIHZlcnNpb24gaG93ZXZlci4KY2xhc3MgSU9CYXNlKF9pby5fSU9CYXNlLCBtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgX19kb2NfXyA9IF9pby5fSU9CYXNlLl9fZG9jX18KCmNsYXNzIFJhd0lPQmFzZShfaW8uX1Jhd0lPQmFzZSwgSU9CYXNlKToKICAgIF9fZG9jX18gPSBfaW8uX1Jhd0lPQmFzZS5fX2RvY19fCgpjbGFzcyBCdWZmZXJlZElPQmFzZShfaW8uX0J1ZmZlcmVkSU9CYXNlLCBJT0Jhc2UpOgogICAgX19kb2NfXyA9IF9pby5fQnVmZmVyZWRJT0Jhc2UuX19kb2NfXwoKY2xhc3MgVGV4dElPQmFzZShfaW8uX1RleHRJT0Jhc2UsIElPQmFzZSk6CiAgICBfX2RvY19fID0gX2lvLl9UZXh0SU9CYXNlLl9fZG9jX18KClJhd0lPQmFzZS5yZWdpc3RlcihGaWxlSU8pCgpmb3Iga2xhc3MgaW4gKEJ5dGVzSU8sIEJ1ZmZlcmVkUmVhZGVyLCBCdWZmZXJlZFdyaXRlciwgQnVmZmVyZWRSYW5kb20sCiAgICAgICAgICAgICAgQnVmZmVyZWRSV1BhaXIpOgogICAgQnVmZmVyZWRJT0Jhc2UucmVnaXN0ZXIoa2xhc3MpCgpmb3Iga2xhc3MgaW4gKFN0cmluZ0lPLCBUZXh0SU9XcmFwcGVyKToKICAgIFRleHRJT0Jhc2UucmVnaXN0ZXIoa2xhc3MpCmRlbCBrbGFzcwoKdHJ5OgogICAgZnJvbSBfaW8gaW1wb3J0IF9XaW5kb3dzQ29uc29sZUlPCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgIFJhd0lPQmFzZS5yZWdpc3RlcihfV2luZG93c0NvbnNvbGVJTykKUEsDBBQAAAAAAAIgo1YxOB/j+iQBAPokAQAMAAAAaXBhZGRyZXNzLnB5IyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgojICBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCgoiIiJBIGZhc3QsIGxpZ2h0d2VpZ2h0IElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeSBpbiBQeXRob24uCgpUaGlzIGxpYnJhcnkgaXMgdXNlZCB0byBjcmVhdGUvcG9rZS9tYW5pcHVsYXRlIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzCmFuZCBuZXR3b3Jrcy4KCiIiIgoKX192ZXJzaW9uX18gPSAnMS4wJwoKCmltcG9ydCBmdW5jdG9vbHMKCklQVjRMRU5HVEggPSAzMgpJUFY2TEVOR1RIID0gMTI4CgoKY2xhc3MgQWRkcmVzc1ZhbHVlRXJyb3IoVmFsdWVFcnJvcik6CiAgICAiIiJBIFZhbHVlIEVycm9yIHJlbGF0ZWQgdG8gdGhlIGFkZHJlc3MuIiIiCgoKY2xhc3MgTmV0bWFza1ZhbHVlRXJyb3IoVmFsdWVFcnJvcik6CiAgICAiIiJBIFZhbHVlIEVycm9yIHJlbGF0ZWQgdG8gdGhlIG5ldG1hc2suIiIiCgoKZGVmIGlwX2FkZHJlc3MoYWRkcmVzcyk6CiAgICAiIiJUYWtlIGFuIElQIHN0cmluZy9pbnQgYW5kIHJldHVybiBhbiBvYmplY3Qgb2YgdGhlIGNvcnJlY3QgdHlwZS4KCiAgICBBcmdzOgogICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLiAgRWl0aGVyIElQdjQgb3IKICAgICAgICAgIElQdjYgYWRkcmVzc2VzIG1heSBiZSBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwKICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgoKICAgIFJldHVybnM6CiAgICAgICAgQW4gSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3Mgb2JqZWN0LgoKICAgIFJhaXNlczoKICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgKmFkZHJlc3MqIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CiAgICAgICAgICBhZGRyZXNzCgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKGFkZHJlc3MpCiAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CiAgICAgICAgcGFzcwoKICAgIHRyeToKICAgICAgICByZXR1cm4gSVB2NkFkZHJlc3MoYWRkcmVzcykKICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKICAgICAgICBwYXNzCgogICAgcmFpc2UgVmFsdWVFcnJvcihmJ3thZGRyZXNzIXJ9IGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcycpCgoKZGVmIGlwX25ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpOgogICAgIiIiVGFrZSBhbiBJUCBzdHJpbmcvaW50IGFuZCByZXR1cm4gYW4gb2JqZWN0IG9mIHRoZSBjb3JyZWN0IHR5cGUuCgogICAgQXJnczoKICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyLCB0aGUgSVAgbmV0d29yay4gIEVpdGhlciBJUHY0IG9yCiAgICAgICAgICBJUHY2IG5ldHdvcmtzIG1heSBiZSBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwKICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgoKICAgIFJldHVybnM6CiAgICAgICAgQW4gSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0LgoKICAgIFJhaXNlczoKICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgc3RyaW5nIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CiAgICAgICAgICBhZGRyZXNzLiBPciBpZiB0aGUgbmV0d29yayBoYXMgaG9zdCBiaXRzIHNldC4KCiAgICAiIiIKICAgIHRyeToKICAgICAgICByZXR1cm4gSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0KQogICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgogICAgICAgIHBhc3MKCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIElQdjZOZXR3b3JrKGFkZHJlc3MsIHN0cmljdCkKICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKICAgICAgICBwYXNzCgogICAgcmFpc2UgVmFsdWVFcnJvcihmJ3thZGRyZXNzIXJ9IGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgbmV0d29yaycpCgoKZGVmIGlwX2ludGVyZmFjZShhZGRyZXNzKToKICAgICIiIlRha2UgYW4gSVAgc3RyaW5nL2ludCBhbmQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlLgoKICAgIEFyZ3M6CiAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuICBFaXRoZXIgSVB2NCBvcgogICAgICAgICAgSVB2NiBhZGRyZXNzZXMgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAogICAgICAgICAgYmUgY29uc2lkZXJlZCB0byBiZSBJUHY0IGJ5IGRlZmF1bHQuCgogICAgUmV0dXJuczoKICAgICAgICBBbiBJUHY0SW50ZXJmYWNlIG9yIElQdjZJbnRlcmZhY2Ugb2JqZWN0LgoKICAgIFJhaXNlczoKICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgc3RyaW5nIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CiAgICAgICAgICBhZGRyZXNzLgoKICAgIE5vdGVzOgogICAgICAgIFRoZSBJUHY/SW50ZXJmYWNlIGNsYXNzZXMgZGVzY3JpYmUgYW4gQWRkcmVzcyBvbiBhIHBhcnRpY3VsYXIKICAgICAgICBOZXR3b3JrLCBzbyB0aGV5J3JlIGJhc2ljYWxseSBhIGNvbWJpbmF0aW9uIG9mIGJvdGggdGhlIEFkZHJlc3MKICAgICAgICBhbmQgTmV0d29yayBjbGFzc2VzLgoKICAgICIiIgogICAgdHJ5OgogICAgICAgIHJldHVybiBJUHY0SW50ZXJmYWNlKGFkZHJlc3MpCiAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CiAgICAgICAgcGFzcwoKICAgIHRyeToKICAgICAgICByZXR1cm4gSVB2NkludGVyZmFjZShhZGRyZXNzKQogICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgogICAgICAgIHBhc3MKCiAgICByYWlzZSBWYWx1ZUVycm9yKGYne2FkZHJlc3Mhcn0gZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBpbnRlcmZhY2UnKQoKCmRlZiB2NF9pbnRfdG9fcGFja2VkKGFkZHJlc3MpOgogICAgIiIiUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgNCBwYWNrZWQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCgogICAgQXJnczoKICAgICAgICBhZGRyZXNzOiBBbiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgSVAgYWRkcmVzcy4KCiAgICBSZXR1cm5zOgogICAgICAgIFRoZSBpbnRlZ2VyIGFkZHJlc3MgcGFja2VkIGFzIDQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCgogICAgUmFpc2VzOgogICAgICAgIFZhbHVlRXJyb3I6IElmIHRoZSBpbnRlZ2VyIGlzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSB0byBiZSBhbgogICAgICAgICAgSVB2NCBJUCBhZGRyZXNzLgoKICAgICIiIgogICAgdHJ5OgogICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDQpICAjIGJpZyBlbmRpYW4KICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY0IikKCgpkZWYgdjZfaW50X3RvX3BhY2tlZChhZGRyZXNzKToKICAgICIiIlJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDE2IHBhY2tlZCBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KCiAgICBBcmdzOgogICAgICAgIGFkZHJlc3M6IEFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NiBJUCBhZGRyZXNzLgoKICAgIFJldHVybnM6CiAgICAgICAgVGhlIGludGVnZXIgYWRkcmVzcyBwYWNrZWQgYXMgMTYgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoMTYpICAjIGJpZyBlbmRpYW4KICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY2IikKCgpkZWYgX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcyk6CiAgICAiIiJIZWxwZXIgdG8gc3BsaXQgdGhlIG5ldG1hc2sgYW5kIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yIGlmIG5lZWRlZCIiIgogICAgYWRkciA9IHN0cihhZGRyZXNzKS5zcGxpdCgnLycpCiAgICBpZiBsZW4oYWRkcikgPiAyOgogICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKGYiT25seSBvbmUgJy8nIHBlcm1pdHRlZCBpbiB7YWRkcmVzcyFyfSIpCiAgICByZXR1cm4gYWRkcgoKCmRlZiBfZmluZF9hZGRyZXNzX3JhbmdlKGFkZHJlc3Nlcyk6CiAgICAiIiJGaW5kIGEgc2VxdWVuY2Ugb2Ygc29ydGVkIGRlZHVwbGljYXRlZCBJUHYjQWRkcmVzcy4KCiAgICBBcmdzOgogICAgICAgIGFkZHJlc3NlczogYSBsaXN0IG9mIElQdiNBZGRyZXNzIG9iamVjdHMuCgogICAgWWllbGRzOgogICAgICAgIEEgdHVwbGUgY29udGFpbmluZyB0aGUgZmlyc3QgYW5kIGxhc3QgSVAgYWRkcmVzc2VzIGluIHRoZSBzZXF1ZW5jZS4KCiAgICAiIiIKICAgIGl0ID0gaXRlcihhZGRyZXNzZXMpCiAgICBmaXJzdCA9IGxhc3QgPSBuZXh0KGl0KQogICAgZm9yIGlwIGluIGl0OgogICAgICAgIGlmIGlwLl9pcCAhPSBsYXN0Ll9pcCArIDE6CiAgICAgICAgICAgIHlpZWxkIGZpcnN0LCBsYXN0CiAgICAgICAgICAgIGZpcnN0ID0gaXAKICAgICAgICBsYXN0ID0gaXAKICAgIHlpZWxkIGZpcnN0LCBsYXN0CgoKZGVmIF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKG51bWJlciwgYml0cyk6CiAgICAiIiJDb3VudCB0aGUgbnVtYmVyIG9mIHplcm8gYml0cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlLgoKICAgIEFyZ3M6CiAgICAgICAgbnVtYmVyOiBhbiBpbnRlZ2VyLgogICAgICAgIGJpdHM6IG1heGltdW0gbnVtYmVyIG9mIGJpdHMgdG8gY291bnQuCgogICAgUmV0dXJuczoKICAgICAgICBUaGUgbnVtYmVyIG9mIHplcm8gYml0cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSBudW1iZXIuCgogICAgIiIiCiAgICBpZiBudW1iZXIgPT0gMDoKICAgICAgICByZXR1cm4gYml0cwogICAgcmV0dXJuIG1pbihiaXRzLCAofm51bWJlciAmIChudW1iZXItMSkpLmJpdF9sZW5ndGgoKSkKCgpkZWYgc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpOgogICAgIiIiU3VtbWFyaXplIGEgbmV0d29yayByYW5nZSBnaXZlbiB0aGUgZmlyc3QgYW5kIGxhc3QgSVAgYWRkcmVzc2VzLgoKICAgIEV4YW1wbGU6CiAgICAgICAgPj4+IGxpc3Qoc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpLAogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEzMCcpKSkKICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMzEnKSwKICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTMwLzMyJyldCgogICAgQXJnczoKICAgICAgICBmaXJzdDogdGhlIGZpcnN0IElQdjRBZGRyZXNzIG9yIElQdjZBZGRyZXNzIGluIHRoZSByYW5nZS4KICAgICAgICBsYXN0OiB0aGUgbGFzdCBJUHY0QWRkcmVzcyBvciBJUHY2QWRkcmVzcyBpbiB0aGUgcmFuZ2UuCgogICAgUmV0dXJuczoKICAgICAgICBBbiBpdGVyYXRvciBvZiB0aGUgc3VtbWFyaXplZCBJUHYoNHw2KSBuZXR3b3JrIG9iamVjdHMuCgogICAgUmFpc2U6CiAgICAgICAgVHlwZUVycm9yOgogICAgICAgICAgICBJZiB0aGUgZmlyc3QgYW5kIGxhc3Qgb2JqZWN0cyBhcmUgbm90IElQIGFkZHJlc3Nlcy4KICAgICAgICAgICAgSWYgdGhlIGZpcnN0IGFuZCBsYXN0IG9iamVjdHMgYXJlIG5vdCB0aGUgc2FtZSB2ZXJzaW9uLgogICAgICAgIFZhbHVlRXJyb3I6CiAgICAgICAgICAgIElmIHRoZSBsYXN0IG9iamVjdCBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBmaXJzdC4KICAgICAgICAgICAgSWYgdGhlIHZlcnNpb24gb2YgdGhlIGZpcnN0IGFkZHJlc3MgaXMgbm90IDQgb3IgNi4KCiAgICAiIiIKICAgIGlmIChub3QgKGlzaW5zdGFuY2UoZmlyc3QsIF9CYXNlQWRkcmVzcykgYW5kCiAgICAgICAgICAgICBpc2luc3RhbmNlKGxhc3QsIF9CYXNlQWRkcmVzcykpKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ZpcnN0IGFuZCBsYXN0IG11c3QgYmUgSVAgYWRkcmVzc2VzLCBub3QgbmV0d29ya3MnKQogICAgaWYgZmlyc3QudmVyc2lvbiAhPSBsYXN0LnZlcnNpb246CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0KSkKICAgIGlmIGZpcnN0ID4gbGFzdDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsYXN0IElQIGFkZHJlc3MgbXVzdCBiZSBncmVhdGVyIHRoYW4gZmlyc3QnKQoKICAgIGlmIGZpcnN0LnZlcnNpb24gPT0gNDoKICAgICAgICBpcCA9IElQdjROZXR3b3JrCiAgICBlbGlmIGZpcnN0LnZlcnNpb24gPT0gNjoKICAgICAgICBpcCA9IElQdjZOZXR3b3JrCiAgICBlbHNlOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Vua25vd24gSVAgdmVyc2lvbicpCgogICAgaXBfYml0cyA9IGZpcnN0Ll9tYXhfcHJlZml4bGVuCiAgICBmaXJzdF9pbnQgPSBmaXJzdC5faXAKICAgIGxhc3RfaW50ID0gbGFzdC5faXAKICAgIHdoaWxlIGZpcnN0X2ludCA8PSBsYXN0X2ludDoKICAgICAgICBuYml0cyA9IG1pbihfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhmaXJzdF9pbnQsIGlwX2JpdHMpLAogICAgICAgICAgICAgICAgICAgIChsYXN0X2ludCAtIGZpcnN0X2ludCArIDEpLmJpdF9sZW5ndGgoKSAtIDEpCiAgICAgICAgbmV0ID0gaXAoKGZpcnN0X2ludCwgaXBfYml0cyAtIG5iaXRzKSkKICAgICAgICB5aWVsZCBuZXQKICAgICAgICBmaXJzdF9pbnQgKz0gMSA8PCBuYml0cwogICAgICAgIGlmIGZpcnN0X2ludCAtIDEgPT0gaXAuX0FMTF9PTkVTOgogICAgICAgICAgICBicmVhawoKCmRlZiBfY29sbGFwc2VfYWRkcmVzc2VzX2ludGVybmFsKGFkZHJlc3Nlcyk6CiAgICAiIiJMb29wcyB0aHJvdWdoIHRoZSBhZGRyZXNzZXMsIGNvbGxhcHNpbmcgY29uY3VycmVudCBuZXRibG9ja3MuCgogICAgRXhhbXBsZToKCiAgICAgICAgaXAxID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNicpCiAgICAgICAgaXAyID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNjQvMjYnKQogICAgICAgIGlwMyA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNicpCiAgICAgICAgaXA0ID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JykKCiAgICAgICAgX2NvbGxhcHNlX2FkZHJlc3Nlc19pbnRlcm5hbChbaXAxLCBpcDIsIGlwMywgaXA0XSkgLT4KICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCgogICAgICAgIFRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZCBkaXJlY3RseTsgaXQgaXMgY2FsbGVkIHZpYQogICAgICAgICAgY29sbGFwc2VfYWRkcmVzc2VzKFtdKS4KCiAgICBBcmdzOgogICAgICAgIGFkZHJlc3NlczogQSBsaXN0IG9mIElQdjROZXR3b3JrJ3Mgb3IgSVB2Nk5ldHdvcmsncwoKICAgIFJldHVybnM6CiAgICAgICAgQSBsaXN0IG9mIElQdjROZXR3b3JrJ3Mgb3IgSVB2Nk5ldHdvcmsncyBkZXBlbmRpbmcgb24gd2hhdCB3ZSB3ZXJlCiAgICAgICAgcGFzc2VkLgoKICAgICIiIgogICAgIyBGaXJzdCBtZXJnZQogICAgdG9fbWVyZ2UgPSBsaXN0KGFkZHJlc3NlcykKICAgIHN1Ym5ldHMgPSB7fQogICAgd2hpbGUgdG9fbWVyZ2U6CiAgICAgICAgbmV0ID0gdG9fbWVyZ2UucG9wKCkKICAgICAgICBzdXBlcm5ldCA9IG5ldC5zdXBlcm5ldCgpCiAgICAgICAgZXhpc3RpbmcgPSBzdWJuZXRzLmdldChzdXBlcm5ldCkKICAgICAgICBpZiBleGlzdGluZyBpcyBOb25lOgogICAgICAgICAgICBzdWJuZXRzW3N1cGVybmV0XSA9IG5ldAogICAgICAgIGVsaWYgZXhpc3RpbmcgIT0gbmV0OgogICAgICAgICAgICAjIE1lcmdlIGNvbnNlY3V0aXZlIHN1Ym5ldHMKICAgICAgICAgICAgZGVsIHN1Ym5ldHNbc3VwZXJuZXRdCiAgICAgICAgICAgIHRvX21lcmdlLmFwcGVuZChzdXBlcm5ldCkKICAgICMgVGhlbiBpdGVyYXRlIG92ZXIgcmVzdWx0aW5nIG5ldHdvcmtzLCBza2lwcGluZyBzdWJzdW1lZCBzdWJuZXRzCiAgICBsYXN0ID0gTm9uZQogICAgZm9yIG5ldCBpbiBzb3J0ZWQoc3VibmV0cy52YWx1ZXMoKSk6CiAgICAgICAgaWYgbGFzdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBTaW5jZSB0aGV5IGFyZSBzb3J0ZWQsIGxhc3QubmV0d29ya19hZGRyZXNzIDw9IG5ldC5uZXR3b3JrX2FkZHJlc3MKICAgICAgICAgICAgIyBpcyBhIGdpdmVuLgogICAgICAgICAgICBpZiBsYXN0LmJyb2FkY2FzdF9hZGRyZXNzID49IG5ldC5icm9hZGNhc3RfYWRkcmVzczoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgeWllbGQgbmV0CiAgICAgICAgbGFzdCA9IG5ldAoKCmRlZiBjb2xsYXBzZV9hZGRyZXNzZXMoYWRkcmVzc2VzKToKICAgICIiIkNvbGxhcHNlIGEgbGlzdCBvZiBJUCBvYmplY3RzLgoKICAgIEV4YW1wbGU6CiAgICAgICAgY29sbGFwc2VfYWRkcmVzc2VzKFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKV0pIC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCgogICAgQXJnczoKICAgICAgICBhZGRyZXNzZXM6IEFuIGl0ZXJhdG9yIG9mIElQdjROZXR3b3JrIG9yIElQdjZOZXR3b3JrIG9iamVjdHMuCgogICAgUmV0dXJuczoKICAgICAgICBBbiBpdGVyYXRvciBvZiB0aGUgY29sbGFwc2VkIElQdig0fDYpTmV0d29yayBvYmplY3RzLgoKICAgIFJhaXNlczoKICAgICAgICBUeXBlRXJyb3I6IElmIHBhc3NlZCBhIGxpc3Qgb2YgbWl4ZWQgdmVyc2lvbiBvYmplY3RzLgoKICAgICIiIgogICAgYWRkcnMgPSBbXQogICAgaXBzID0gW10KICAgIG5ldHMgPSBbXQoKICAgICMgc3BsaXQgSVAgYWRkcmVzc2VzIGFuZCBuZXR3b3JrcwogICAgZm9yIGlwIGluIGFkZHJlc3NlczoKICAgICAgICBpZiBpc2luc3RhbmNlKGlwLCBfQmFzZUFkZHJlc3MpOgogICAgICAgICAgICBpZiBpcHMgYW5kIGlwc1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgaXBzWy0xXSkpCiAgICAgICAgICAgIGlwcy5hcHBlbmQoaXApCiAgICAgICAgZWxpZiBpcC5fcHJlZml4bGVuID09IGlwLl9tYXhfcHJlZml4bGVuOgogICAgICAgICAgICBpZiBpcHMgYW5kIGlwc1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgaXBzWy0xXSkpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlwcy5hcHBlbmQoaXAuaXApCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIGlwcy5hcHBlbmQoaXAubmV0d29ya19hZGRyZXNzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIG5ldHMgYW5kIG5ldHNbLTFdLl92ZXJzaW9uICE9IGlwLl92ZXJzaW9uOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAsIG5ldHNbLTFdKSkKICAgICAgICAgICAgbmV0cy5hcHBlbmQoaXApCgogICAgIyBzb3J0IGFuZCBkZWR1cAogICAgaXBzID0gc29ydGVkKHNldChpcHMpKQoKICAgICMgZmluZCBjb25zZWN1dGl2ZSBhZGRyZXNzIHJhbmdlcyBpbiB0aGUgc29ydGVkIHNlcXVlbmNlIGFuZCBzdW1tYXJpemUgdGhlbQogICAgaWYgaXBzOgogICAgICAgIGZvciBmaXJzdCwgbGFzdCBpbiBfZmluZF9hZGRyZXNzX3JhbmdlKGlwcyk6CiAgICAgICAgICAgIGFkZHJzLmV4dGVuZChzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkpCgogICAgcmV0dXJuIF9jb2xsYXBzZV9hZGRyZXNzZXNfaW50ZXJuYWwoYWRkcnMgKyBuZXRzKQoKCmRlZiBnZXRfbWl4ZWRfdHlwZV9rZXkob2JqKToKICAgICIiIlJldHVybiBhIGtleSBzdWl0YWJsZSBmb3Igc29ydGluZyBiZXR3ZWVuIG5ldHdvcmtzIGFuZCBhZGRyZXNzZXMuCgogICAgQWRkcmVzcyBhbmQgTmV0d29yayBvYmplY3RzIGFyZSBub3Qgc29ydGFibGUgYnkgZGVmYXVsdDsgdGhleSdyZQogICAgZnVuZGFtZW50YWxseSBkaWZmZXJlbnQgc28gdGhlIGV4cHJlc3Npb24KCiAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpIDw9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQoKICAgIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuICBUaGVyZSBhcmUgc29tZSB0aW1lcyBob3dldmVyLCB3aGVyZSB5b3UgbWF5IHdpc2gKICAgIHRvIGhhdmUgaXBhZGRyZXNzIHNvcnQgdGhlc2UgZm9yIHlvdSBhbnl3YXkuIElmIHlvdSBuZWVkIHRvIGRvIHRoaXMsIHlvdQogICAgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBrZXk9IGFyZ3VtZW50IHRvIHNvcnRlZCgpLgoKICAgIEFyZ3M6CiAgICAgIG9iajogZWl0aGVyIGEgTmV0d29yayBvciBBZGRyZXNzIG9iamVjdC4KICAgIFJldHVybnM6CiAgICAgIGFwcHJvcHJpYXRlIGtleS4KCiAgICAiIiIKICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBfQmFzZU5ldHdvcmspOgogICAgICAgIHJldHVybiBvYmouX2dldF9uZXR3b3Jrc19rZXkoKQogICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgX0Jhc2VBZGRyZXNzKToKICAgICAgICByZXR1cm4gb2JqLl9nZXRfYWRkcmVzc19rZXkoKQogICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgoKY2xhc3MgX0lQQWRkcmVzc0Jhc2U6CgogICAgIiIiVGhlIG1vdGhlciBjbGFzcy4iIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGV4cGxvZGVkKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgbG9uZ2hhbmQgdmVyc2lvbiBvZiB0aGUgSVAgYWRkcmVzcyBhcyBhIHN0cmluZy4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjb21wcmVzc2VkKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgc2hvcnRoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCiAgICAgICAgcmV0dXJuIHN0cihzZWxmKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHJldmVyc2VfcG9pbnRlcihzZWxmKToKICAgICAgICAiIiJUaGUgbmFtZSBvZiB0aGUgcmV2ZXJzZSBETlMgcG9pbnRlciBmb3IgdGhlIElQIGFkZHJlc3MsIGUuZy46CiAgICAgICAgICAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMTI3LjAuMC4xIikucmV2ZXJzZV9wb2ludGVyCiAgICAgICAgICAgICcxLjAuMC4xMjcuaW4tYWRkci5hcnBhJwogICAgICAgICAgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjIwMDE6ZGI4OjoxIikucmV2ZXJzZV9wb2ludGVyCiAgICAgICAgICAgICcxLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC44LmIuZC4wLjEuMC4wLjIuaXA2LmFycGEnCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9yZXZlcnNlX3BvaW50ZXIoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZlcnNpb24oc2VsZik6CiAgICAgICAgbXNnID0gJyUyMDBzIGhhcyBubyB2ZXJzaW9uIHNwZWNpZmllZCcgJSAodHlwZShzZWxmKSwpCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCgogICAgZGVmIF9jaGVja19pbnRfYWRkcmVzcyhzZWxmLCBhZGRyZXNzKToKICAgICAgICBpZiBhZGRyZXNzIDwgMDoKICAgICAgICAgICAgbXNnID0gIiVkICg8IDApIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2JWQgYWRkcmVzcyIKICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIHNlbGYuX3ZlcnNpb24pKQogICAgICAgIGlmIGFkZHJlc3MgPiBzZWxmLl9BTExfT05FUzoKICAgICAgICAgICAgbXNnID0gIiVkICg+PSAyKiolZCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHYlZCBhZGRyZXNzIgogICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoYWRkcmVzcywgc2VsZi5fbWF4X3ByZWZpeGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24pKQoKICAgIGRlZiBfY2hlY2tfcGFja2VkX2FkZHJlc3Moc2VsZiwgYWRkcmVzcywgZXhwZWN0ZWRfbGVuKToKICAgICAgICBhZGRyZXNzX2xlbiA9IGxlbihhZGRyZXNzKQogICAgICAgIGlmIGFkZHJlc3NfbGVuICE9IGV4cGVjdGVkX2xlbjoKICAgICAgICAgICAgbXNnID0gIiVyIChsZW4gJWQgIT0gJWQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2JWQgYWRkcmVzcyIKICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIGFkZHJlc3NfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbGVuLCBzZWxmLl92ZXJzaW9uKSkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfaXBfaW50X2Zyb21fcHJlZml4KGNscywgcHJlZml4bGVuKToKICAgICAgICAiIiJUdXJuIHRoZSBwcmVmaXggbGVuZ3RoIGludG8gYSBiaXR3aXNlIG5ldG1hc2sKCiAgICAgICAgQXJnczoKICAgICAgICAgICAgcHJlZml4bGVuOiBBbiBpbnRlZ2VyLCB0aGUgcHJlZml4IGxlbmd0aC4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQW4gaW50ZWdlci4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGNscy5fQUxMX09ORVMgXiAoY2xzLl9BTExfT05FUyA+PiBwcmVmaXhsZW4pCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX3ByZWZpeF9mcm9tX2lwX2ludChjbHMsIGlwX2ludCk6CiAgICAgICAgIiIiUmV0dXJuIHByZWZpeCBsZW5ndGggZnJvbSB0aGUgYml0d2lzZSBuZXRtYXNrLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBuZXRtYXNrIGluIGV4cGFuZGVkIGJpdHdpc2UgZm9ybWF0CgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEFuIGludGVnZXIsIHRoZSBwcmVmaXggbGVuZ3RoLgoKICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHRoZSBpbnB1dCBpbnRlcm1pbmdsZXMgemVyb2VzICYgb25lcwogICAgICAgICIiIgogICAgICAgIHRyYWlsaW5nX3plcm9lcyA9IF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGlwX2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuX21heF9wcmVmaXhsZW4pCiAgICAgICAgcHJlZml4bGVuID0gY2xzLl9tYXhfcHJlZml4bGVuIC0gdHJhaWxpbmdfemVyb2VzCiAgICAgICAgbGVhZGluZ19vbmVzID0gaXBfaW50ID4+IHRyYWlsaW5nX3plcm9lcwogICAgICAgIGFsbF9vbmVzID0gKDEgPDwgcHJlZml4bGVuKSAtIDEKICAgICAgICBpZiBsZWFkaW5nX29uZXMgIT0gYWxsX29uZXM6CiAgICAgICAgICAgIGJ5dGVzbGVuID0gY2xzLl9tYXhfcHJlZml4bGVuIC8vIDgKICAgICAgICAgICAgZGV0YWlscyA9IGlwX2ludC50b19ieXRlcyhieXRlc2xlbiwgJ2JpZycpCiAgICAgICAgICAgIG1zZyA9ICdOZXRtYXNrIHBhdHRlcm4gJXIgbWl4ZXMgemVyb2VzICYgb25lcycKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBkZXRhaWxzKQogICAgICAgIHJldHVybiBwcmVmaXhsZW4KCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfcmVwb3J0X2ludmFsaWRfbmV0bWFzayhjbHMsIG5ldG1hc2tfc3RyKToKICAgICAgICBtc2cgPSAnJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycgJSBuZXRtYXNrX3N0cgogICAgICAgIHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yKG1zZykgZnJvbSBOb25lCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX3ByZWZpeF9mcm9tX3ByZWZpeF9zdHJpbmcoY2xzLCBwcmVmaXhsZW5fc3RyKToKICAgICAgICAiIiJSZXR1cm4gcHJlZml4IGxlbmd0aCBmcm9tIGEgbnVtZXJpYyBzdHJpbmcKCiAgICAgICAgQXJnczoKICAgICAgICAgICAgcHJlZml4bGVuX3N0cjogVGhlIHN0cmluZyB0byBiZSBjb252ZXJ0ZWQKCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQW4gaW50ZWdlciwgdGhlIHByZWZpeCBsZW5ndGguCgogICAgICAgIFJhaXNlczoKICAgICAgICAgICAgTmV0bWFza1ZhbHVlRXJyb3I6IElmIHRoZSBpbnB1dCBpcyBub3QgYSB2YWxpZCBuZXRtYXNrCiAgICAgICAgIiIiCiAgICAgICAgIyBpbnQgYWxsb3dzIGEgbGVhZGluZyArLy0gYXMgd2VsbCBhcyBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlLAogICAgICAgICMgc28gd2UgZW5zdXJlIHRoYXQgaXNuJ3QgdGhlIGNhc2UKICAgICAgICBpZiBub3QgKHByZWZpeGxlbl9zdHIuaXNhc2NpaSgpIGFuZCBwcmVmaXhsZW5fc3RyLmlzZGlnaXQoKSk6CiAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW5fc3RyKQogICAgICAgIHRyeToKICAgICAgICAgICAgcHJlZml4bGVuID0gaW50KHByZWZpeGxlbl9zdHIpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW5fc3RyKQogICAgICAgIGlmIG5vdCAoMCA8PSBwcmVmaXhsZW4gPD0gY2xzLl9tYXhfcHJlZml4bGVuKToKICAgICAgICAgICAgY2xzLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCiAgICAgICAgcmV0dXJuIHByZWZpeGxlbgoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoY2xzLCBpcF9zdHIpOgogICAgICAgICIiIlR1cm4gYSBuZXRtYXNrL2hvc3RtYXNrIHN0cmluZyBpbnRvIGEgcHJlZml4IGxlbmd0aAoKICAgICAgICBBcmdzOgogICAgICAgICAgICBpcF9zdHI6IFRoZSBuZXRtYXNrL2hvc3RtYXNrIHRvIGJlIGNvbnZlcnRlZAoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBbiBpbnRlZ2VyLCB0aGUgcHJlZml4IGxlbmd0aC4KCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBOZXRtYXNrVmFsdWVFcnJvcjogSWYgdGhlIGlucHV0IGlzIG5vdCBhIHZhbGlkIG5ldG1hc2svaG9zdG1hc2sKICAgICAgICAiIiIKICAgICAgICAjIFBhcnNlIHRoZSBuZXRtYXNrL2hvc3RtYXNrIGxpa2UgYW4gSVAgYWRkcmVzcy4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGlwX2ludCA9IGNscy5faXBfaW50X2Zyb21fc3RyaW5nKGlwX3N0cikKICAgICAgICBleGNlcHQgQWRkcmVzc1ZhbHVlRXJyb3I6CiAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhpcF9zdHIpCgogICAgICAgICMgVHJ5IG1hdGNoaW5nIGEgbmV0bWFzayAodGhpcyB3b3VsZCBiZSAvMSowKi8gYXMgYSBiaXR3aXNlIHJlZ2V4cCkuCiAgICAgICAgIyBOb3RlIHRoYXQgdGhlIHR3byBhbWJpZ3VvdXMgY2FzZXMgKGFsbC1vbmVzIGFuZCBhbGwtemVyb2VzKSBhcmUKICAgICAgICAjIHRyZWF0ZWQgYXMgbmV0bWFza3MuCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gY2xzLl9wcmVmaXhfZnJvbV9pcF9pbnQoaXBfaW50KQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBwYXNzCgogICAgICAgICMgSW52ZXJ0IHRoZSBiaXRzLCBhbmQgdHJ5IG1hdGNoaW5nIGEgLzArMSsvIGhvc3RtYXNrIGluc3RlYWQuCiAgICAgICAgaXBfaW50IF49IGNscy5fQUxMX09ORVMKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBjbHMuX3ByZWZpeF9mcm9tX2lwX2ludChpcF9pbnQpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhpcF9zdHIpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX3NwbGl0X2FkZHJfcHJlZml4KGNscywgYWRkcmVzcyk6CiAgICAgICAgIiIiSGVscGVyIGZ1bmN0aW9uIHRvIHBhcnNlIGFkZHJlc3Mgb2YgTmV0d29yay9JbnRlcmZhY2UuCgogICAgICAgIEFyZzoKICAgICAgICAgICAgYWRkcmVzczogQXJndW1lbnQgb2YgTmV0d29yay9JbnRlcmZhY2UuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIChhZGRyLCBwcmVmaXgpIHR1cGxlLgogICAgICAgICIiIgogICAgICAgICMgYSBwYWNrZWQgYWRkcmVzcyBvciBpbnRlZ2VyCiAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCAoYnl0ZXMsIGludCkpOgogICAgICAgICAgICByZXR1cm4gYWRkcmVzcywgY2xzLl9tYXhfcHJlZml4bGVuCgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFkZHJlc3MsIHR1cGxlKToKICAgICAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KICAgICAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHByZWZpeCBzdHJpbmcuCiAgICAgICAgICAgIGFkZHJlc3MgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQoKICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgdHVwbGUgKGFkZHIsIFttYXNrXSkKICAgICAgICBpZiBsZW4oYWRkcmVzcykgPiAxOgogICAgICAgICAgICByZXR1cm4gYWRkcmVzcwogICAgICAgIHJldHVybiBhZGRyZXNzWzBdLCBjbHMuX21heF9wcmVmaXhsZW4KCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChzdHIoc2VsZiksKQoKCl9hZGRyZXNzX2ZtdF9yZSA9IE5vbmUKCkBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcKY2xhc3MgX0Jhc2VBZGRyZXNzKF9JUEFkZHJlc3NCYXNlKToKCiAgICAiIiJBIGdlbmVyaWMgSVAgb2JqZWN0LgoKICAgIFRoaXMgSVAgY2xhc3MgY29udGFpbnMgdGhlIHZlcnNpb24gaW5kZXBlbmRlbnQgbWV0aG9kcyB3aGljaCBhcmUKICAgIHVzZWQgYnkgc2luZ2xlIElQIGFkZHJlc3Nlcy4KICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgZGVmIF9faW50X18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2lwCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gKHNlbGYuX2lwID09IG90aGVyLl9pcAogICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlQWRkcmVzcyk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbicgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQogICAgICAgIGlmIHNlbGYuX2lwICE9IG90aGVyLl9pcDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lwIDwgb3RoZXIuX2lwCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgIyBTaG9ydGhhbmQgZm9yIEludGVnZXIgYWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uLiBUaGlzIGlzIG5vdAogICAgIyBtZWFudCB0byBldmVyIHN1cHBvcnQgYWRkaXRpb24vc3VidHJhY3Rpb24gb2YgYWRkcmVzc2VzLgogICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBpbnQpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaW50KHNlbGYpICsgb3RoZXIpCgogICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBpbnQpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaW50KHNlbGYpIC0gb3RoZXIpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzdHIoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSkKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goaGV4KGludChzZWxmLl9pcCkpKQoKICAgIGRlZiBfZ2V0X2FkZHJlc3Nfa2V5KHNlbGYpOgogICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZikKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChzZWxmLl9pcCwpCgogICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm10KToKICAgICAgICAiIiJSZXR1cm5zIGFuIElQIGFkZHJlc3MgYXMgYSBmb3JtYXR0ZWQgc3RyaW5nLgoKICAgICAgICBTdXBwb3J0ZWQgcHJlc2VudGF0aW9uIHR5cGVzIGFyZToKICAgICAgICAncyc6IHJldHVybnMgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcgKGRlZmF1bHQpCiAgICAgICAgJ2InOiBjb252ZXJ0cyB0byBiaW5hcnkgYW5kIHJldHVybnMgYSB6ZXJvLXBhZGRlZCBzdHJpbmcKICAgICAgICAnWCcgb3IgJ3gnOiBjb252ZXJ0cyB0byB1cHBlci0gb3IgbG93ZXItY2FzZSBoZXggYW5kIHJldHVybnMgYSB6ZXJvLXBhZGRlZCBzdHJpbmcKICAgICAgICAnbic6IHRoZSBzYW1lIGFzICdiJyBmb3IgSVB2NCBhbmQgJ3gnIGZvciBJUHY2CgogICAgICAgIEZvciBiaW5hcnkgYW5kIGhleCBwcmVzZW50YXRpb24gdHlwZXMsIHRoZSBhbHRlcm5hdGUgZm9ybSBzcGVjaWZpZXIKICAgICAgICAnIycgYW5kIHRoZSBncm91cGluZyBvcHRpb24gJ18nIGFyZSBzdXBwb3J0ZWQuCiAgICAgICAgIiIiCgogICAgICAgICMgU3VwcG9ydCBzdHJpbmcgZm9ybWF0dGluZwogICAgICAgIGlmIG5vdCBmbXQgb3IgZm10Wy0xXSA9PSAncyc6CiAgICAgICAgICAgIHJldHVybiBmb3JtYXQoc3RyKHNlbGYpLCBmbXQpCgogICAgICAgICMgRnJvbSBoZXJlIG9uIGRvd24sIHN1cHBvcnQgZm9yICdiblh4JwogICAgICAgIGdsb2JhbCBfYWRkcmVzc19mbXRfcmUKICAgICAgICBpZiBfYWRkcmVzc19mbXRfcmUgaXMgTm9uZToKICAgICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgICAgIF9hZGRyZXNzX2ZtdF9yZSA9IHJlLmNvbXBpbGUoJygjPykoXz8pKFt4Ym5YXSknKQoKICAgICAgICBtID0gX2FkZHJlc3NfZm10X3JlLmZ1bGxtYXRjaChmbXQpCiAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fZm9ybWF0X18oZm10KQoKICAgICAgICBhbHRlcm5hdGUsIGdyb3VwaW5nLCBmbXRfYmFzZSA9IG0uZ3JvdXBzKCkKCiAgICAgICAgIyBTZXQgc29tZSBkZWZhdWx0cwogICAgICAgIGlmIGZtdF9iYXNlID09ICduJzoKICAgICAgICAgICAgaWYgc2VsZi5fdmVyc2lvbiA9PSA0OgogICAgICAgICAgICAgICAgZm10X2Jhc2UgPSAnYicgICMgQmluYXJ5IGlzIGRlZmF1bHQgZm9yIGlwdjQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGZtdF9iYXNlID0gJ3gnICAjIEhleCBpcyBkZWZhdWx0IGZvciBpcHY2CgogICAgICAgIGlmIGZtdF9iYXNlID09ICdiJzoKICAgICAgICAgICAgcGFkbGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhZGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4gLy8gNAoKICAgICAgICBpZiBncm91cGluZzoKICAgICAgICAgICAgcGFkbGVuICs9IHBhZGxlbiAvLyA0IC0gMQoKICAgICAgICBpZiBhbHRlcm5hdGU6CiAgICAgICAgICAgIHBhZGxlbiArPSAyICAjIDBiIG9yIDB4CgogICAgICAgIHJldHVybiBmb3JtYXQoaW50KHNlbGYpLCBmJ3thbHRlcm5hdGV9MHtwYWRsZW59e2dyb3VwaW5nfXtmbXRfYmFzZX0nKQoKCkBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcKY2xhc3MgX0Jhc2VOZXR3b3JrKF9JUEFkZHJlc3NCYXNlKToKICAgICIiIkEgZ2VuZXJpYyBJUCBuZXR3b3JrIG9iamVjdC4KCiAgICBUaGlzIElQIGNsYXNzIGNvbnRhaW5zIHRoZSB2ZXJzaW9uIGluZGVwZW5kZW50IG1ldGhvZHMgd2hpY2ggYXJlCiAgICB1c2VkIGJ5IG5ldHdvcmtzLgogICAgIiIiCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLnByZWZpeGxlbikKCiAgICBkZWYgaG9zdHMoc2VsZik6CiAgICAgICAgIiIiR2VuZXJhdGUgSXRlcmF0b3Igb3ZlciB1c2FibGUgaG9zdHMgaW4gYSBuZXR3b3JrLgoKICAgICAgICBUaGlzIGlzIGxpa2UgX19pdGVyX18gZXhjZXB0IGl0IGRvZXNuJ3QgcmV0dXJuIHRoZSBuZXR3b3JrCiAgICAgICAgb3IgYnJvYWRjYXN0IGFkZHJlc3Nlcy4KCiAgICAgICAgIiIiCiAgICAgICAgbmV0d29yayA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKICAgICAgICBmb3IgeCBpbiByYW5nZShuZXR3b3JrICsgMSwgYnJvYWRjYXN0KToKICAgICAgICAgICAgeWllbGQgc2VsZi5fYWRkcmVzc19jbGFzcyh4KQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICBuZXR3b3JrID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQogICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQogICAgICAgIGZvciB4IGluIHJhbmdlKG5ldHdvcmssIGJyb2FkY2FzdCArIDEpOgogICAgICAgICAgICB5aWVsZCBzZWxmLl9hZGRyZXNzX2NsYXNzKHgpCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG4pOgogICAgICAgIG5ldHdvcmsgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCiAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCiAgICAgICAgaWYgbiA+PSAwOgogICAgICAgICAgICBpZiBuZXR3b3JrICsgbiA+IGJyb2FkY2FzdDoKICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ2FkZHJlc3Mgb3V0IG9mIHJhbmdlJykKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MobmV0d29yayArIG4pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbiArPSAxCiAgICAgICAgICAgIGlmIGJyb2FkY2FzdCArIG4gPCBuZXR3b3JrOgogICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcignYWRkcmVzcyBvdXQgb2YgcmFuZ2UnKQogICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhicm9hZGNhc3QgKyBuKQoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZU5ldHdvcmspOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24nICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKICAgICAgICBpZiBzZWxmLm5ldHdvcmtfYWRkcmVzcyAhPSBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmtfYWRkcmVzcyA8IG90aGVyLm5ldHdvcmtfYWRkcmVzcwogICAgICAgIGlmIHNlbGYubmV0bWFzayAhPSBvdGhlci5uZXRtYXNrOgogICAgICAgICAgICByZXR1cm4gc2VsZi5uZXRtYXNrIDwgb3RoZXIubmV0bWFzawogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIChzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uIGFuZAogICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID09IG90aGVyLm5ldHdvcmtfYWRkcmVzcyBhbmQKICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSA9PSBpbnQob3RoZXIubmV0bWFzaykpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSBeIGludChzZWxmLm5ldG1hc2spKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgogICAgICAgICMgYWx3YXlzIGZhbHNlIGlmIG9uZSBpcyB2NCBhbmQgdGhlIG90aGVyIGlzIHY2LgogICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICMgZGVhbGluZyB3aXRoIGFub3RoZXIgbmV0d29yay4KICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBfQmFzZU5ldHdvcmspOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAjIGRlYWxpbmcgd2l0aCBhbm90aGVyIGFkZHJlc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGFkZHJlc3MKICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9pcCAmIHNlbGYubmV0bWFzay5faXAgPT0gc2VsZi5uZXR3b3JrX2FkZHJlc3MuX2lwCgogICAgZGVmIG92ZXJsYXBzKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJUZWxsIGlmIHNlbGYgaXMgcGFydGx5IGNvbnRhaW5lZCBpbiBvdGhlci4iIiIKICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrX2FkZHJlc3MgaW4gb3RoZXIgb3IgKAogICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzIGluIG90aGVyIG9yICgKICAgICAgICAgICAgICAgIG90aGVyLm5ldHdvcmtfYWRkcmVzcyBpbiBzZWxmIG9yICgKICAgICAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyBpbiBzZWxmKSkpCgogICAgQGZ1bmN0b29scy5jYWNoZWRfcHJvcGVydHkKICAgIGRlZiBicm9hZGNhc3RfYWRkcmVzcyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5ob3N0bWFzaykpCgogICAgQGZ1bmN0b29scy5jYWNoZWRfcHJvcGVydHkKICAgIGRlZiBob3N0bWFzayhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhpbnQoc2VsZi5uZXRtYXNrKSBeIHNlbGYuX0FMTF9PTkVTKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHdpdGhfcHJlZml4bGVuKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLl9wcmVmaXhsZW4pCgogICAgQHByb3BlcnR5CiAgICBkZWYgd2l0aF9uZXRtYXNrKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLm5ldG1hc2spCgogICAgQHByb3BlcnR5CiAgICBkZWYgd2l0aF9ob3N0bWFzayhzZWxmKToKICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5ob3N0bWFzaykKCiAgICBAcHJvcGVydHkKICAgIGRlZiBudW1fYWRkcmVzc2VzKHNlbGYpOgogICAgICAgICIiIk51bWJlciBvZiBob3N0cyBpbiB0aGUgY3VycmVudCBzdWJuZXQuIiIiCiAgICAgICAgcmV0dXJuIGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKSAtIGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgKyAxCgogICAgQHByb3BlcnR5CiAgICBkZWYgX2FkZHJlc3NfY2xhc3Moc2VsZik6CiAgICAgICAgIyBSZXR1cm5pbmcgYmFyZSBhZGRyZXNzIG9iamVjdHMgKHJhdGhlciB0aGFuIGludGVyZmFjZXMpIGFsbG93cyBmb3IKICAgICAgICAjIG1vcmUgY29uc2lzdGVudCBiZWhhdmlvdXIgYWNyb3NzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGJyb2FkY2FzdAogICAgICAgICMgYWRkcmVzcyBhbmQgaW5kaXZpZHVhbCBob3N0IGFkZHJlc3Nlcy4KICAgICAgICBtc2cgPSAnJTIwMHMgaGFzIG5vIGFzc29jaWF0ZWQgYWRkcmVzcyBjbGFzcycgJSAodHlwZShzZWxmKSwpCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCgogICAgQHByb3BlcnR5CiAgICBkZWYgcHJlZml4bGVuKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXhsZW4KCiAgICBkZWYgYWRkcmVzc19leGNsdWRlKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJSZW1vdmUgYW4gYWRkcmVzcyBmcm9tIGEgbGFyZ2VyIGJsb2NrLgoKICAgICAgICBGb3IgZXhhbXBsZToKCiAgICAgICAgICAgIGFkZHIxID0gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI4JykKICAgICAgICAgICAgYWRkcjIgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKQogICAgICAgICAgICBsaXN0KGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMikpID0KICAgICAgICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzMyJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjIvMzEnKSwKICAgICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi40LzMwJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjgvMjknKV0KCiAgICAgICAgb3IgSVB2NjoKCiAgICAgICAgICAgIGFkZHIxID0gaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvMzInKQogICAgICAgICAgICBhZGRyMiA9IGlwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzEyOCcpCiAgICAgICAgICAgIGxpc3QoYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIyKSkgPQogICAgICAgICAgICAgICAgW2lwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzEyOCcpLAogICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4OjoyLzEyNycpLAogICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4Ojo0LzEyNicpLAogICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4Ojo4LzEyNScpLAogICAgICAgICAgICAgICAgIC4uLgogICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4OjgwMDA6Oi8zMycpXQoKICAgICAgICBBcmdzOgogICAgICAgICAgICBvdGhlcjogQW4gSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEFuIGl0ZXJhdG9yIG9mIHRoZSBJUHYoNHw2KU5ldHdvcmsgb2JqZWN0cyB3aGljaCBpcyBzZWxmCiAgICAgICAgICAgIG1pbnVzIG90aGVyLgoKICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgIFR5cGVFcnJvcjogSWYgc2VsZiBhbmQgb3RoZXIgYXJlIG9mIGRpZmZlcmluZyBhZGRyZXNzCiAgICAgICAgICAgICAgdmVyc2lvbnMsIG9yIGlmIG90aGVyIGlzIG5vdCBhIG5ldHdvcmsgb2JqZWN0LgogICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBvdGhlciBpcyBub3QgY29tcGxldGVseSBjb250YWluZWQgYnkgc2VsZi4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb246CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VOZXR3b3JrKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBpcyBub3QgYSBuZXR3b3JrIG9iamVjdCIgJSBvdGhlcikKCiAgICAgICAgaWYgbm90IG90aGVyLnN1Ym5ldF9vZihzZWxmKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgbm90IGNvbnRhaW5lZCBpbiAlcycgJSAob3RoZXIsIHNlbGYpKQogICAgICAgIGlmIG90aGVyID09IHNlbGY6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIE1ha2Ugc3VyZSB3ZSdyZSBjb21wYXJpbmcgdGhlIG5ldHdvcmsgb2Ygb3RoZXIuCiAgICAgICAgb3RoZXIgPSBvdGhlci5fX2NsYXNzX18oJyVzLyVzJyAlIChvdGhlci5uZXR3b3JrX2FkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5wcmVmaXhsZW4pKQoKICAgICAgICBzMSwgczIgPSBzZWxmLnN1Ym5ldHMoKQogICAgICAgIHdoaWxlIHMxICE9IG90aGVyIGFuZCBzMiAhPSBvdGhlcjoKICAgICAgICAgICAgaWYgb3RoZXIuc3VibmV0X29mKHMxKToKICAgICAgICAgICAgICAgIHlpZWxkIHMyCiAgICAgICAgICAgICAgICBzMSwgczIgPSBzMS5zdWJuZXRzKCkKICAgICAgICAgICAgZWxpZiBvdGhlci5zdWJuZXRfb2YoczIpOgogICAgICAgICAgICAgICAgeWllbGQgczEKICAgICAgICAgICAgICAgIHMxLCBzMiA9IHMyLnN1Ym5ldHMoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBJZiB3ZSBnb3QgaGVyZSwgdGhlcmUncyBhIGJ1ZyBzb21ld2hlcmUuCiAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRXJyb3IgcGVyZm9ybWluZyBleGNsdXNpb246ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzMTogJXMgczI6ICVzIG90aGVyOiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMxLCBzMiwgb3RoZXIpKQogICAgICAgIGlmIHMxID09IG90aGVyOgogICAgICAgICAgICB5aWVsZCBzMgogICAgICAgIGVsaWYgczIgPT0gb3RoZXI6CiAgICAgICAgICAgIHlpZWxkIHMxCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBJZiB3ZSBnb3QgaGVyZSwgdGhlcmUncyBhIGJ1ZyBzb21ld2hlcmUuCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdFcnJvciBwZXJmb3JtaW5nIGV4Y2x1c2lvbjogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnczE6ICVzIHMyOiAlcyBvdGhlcjogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMxLCBzMiwgb3RoZXIpKQoKICAgIGRlZiBjb21wYXJlX25ldHdvcmtzKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJDb21wYXJlIHR3byBJUCBvYmplY3RzLgoKICAgICAgICBUaGlzIGlzIG9ubHkgY29uY2VybmVkIGFib3V0IHRoZSBjb21wYXJpc29uIG9mIHRoZSBpbnRlZ2VyCiAgICAgICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmsgYWRkcmVzc2VzLiAgVGhpcyBtZWFucyB0aGF0IHRoZQogICAgICAgIGhvc3QgYml0cyBhcmVuJ3QgY29uc2lkZXJlZCBhdCBhbGwgaW4gdGhpcyBtZXRob2QuICBJZiB5b3Ugd2FudAogICAgICAgIHRvIGNvbXBhcmUgaG9zdCBiaXRzLCB5b3UgY2FuIGVhc2lseSBlbm91Z2ggZG8gYQogICAgICAgICdIb3N0QS5faXAgPCBIb3N0Qi5faXAnCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIG90aGVyOiBBbiBJUCBvYmplY3QuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIElmIHRoZSBJUCB2ZXJzaW9ucyBvZiBzZWxmIGFuZCBvdGhlciBhcmUgdGhlIHNhbWUsIHJldHVybnM6CgogICAgICAgICAgICAtMSBpZiBzZWxmIDwgb3RoZXI6CiAgICAgICAgICAgICAgZWc6IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSA8IElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpCiAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpIDwKICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoyMDAwLzEyNCcpCiAgICAgICAgICAgIDAgaWYgc2VsZiA9PSBvdGhlcgogICAgICAgICAgICAgIGVnOiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykgPT0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCiAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpID09CiAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKQogICAgICAgICAgICAxIGlmIHNlbGYgPiBvdGhlcgogICAgICAgICAgICAgIGVnOiBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKSA+IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKQogICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjIwMDAvMTI0JykgPgogICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpCgogICAgICAgICAgUmFpc2VzOgogICAgICAgICAgICAgIFR5cGVFcnJvciBpZiB0aGUgSVAgdmVyc2lvbnMgYXJlIGRpZmZlcmVudC4KCiAgICAgICAgIiIiCiAgICAgICAgIyBkb2VzIHRoaXMgbmVlZCB0byByYWlzZSBhIFZhbHVlRXJyb3I/CiAgICAgICAgaWYgc2VsZi5fdmVyc2lvbiAhPSBvdGhlci5fdmVyc2lvbjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCiAgICAgICAgIyBzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uIGJlbG93IGhlcmU6CiAgICAgICAgaWYgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPCBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CiAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgIGlmIHNlbGYubmV0d29ya19hZGRyZXNzID4gb3RoZXIubmV0d29ya19hZGRyZXNzOgogICAgICAgICAgICByZXR1cm4gMQogICAgICAgICMgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPT0gb3RoZXIubmV0d29ya19hZGRyZXNzIGJlbG93IGhlcmU6CiAgICAgICAgaWYgc2VsZi5uZXRtYXNrIDwgb3RoZXIubmV0bWFzazoKICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgaWYgc2VsZi5uZXRtYXNrID4gb3RoZXIubmV0bWFzazoKICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICByZXR1cm4gMAoKICAgIGRlZiBfZ2V0X25ldHdvcmtzX2tleShzZWxmKToKICAgICAgICAiIiJOZXR3b3JrLW9ubHkga2V5IGZ1bmN0aW9uLgoKICAgICAgICBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGlkZW50aWZpZXMgdGhpcyBhZGRyZXNzJyBuZXR3b3JrIGFuZAogICAgICAgIG5ldG1hc2suIFRoaXMgZnVuY3Rpb24gaXMgYSBzdWl0YWJsZSAia2V5IiBhcmd1bWVudCBmb3Igc29ydGVkKCkKICAgICAgICBhbmQgbGlzdC5zb3J0KCkuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYubmV0bWFzaykKCiAgICBkZWYgc3VibmV0cyhzZWxmLCBwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpOgogICAgICAgICIiIlRoZSBzdWJuZXRzIHdoaWNoIGpvaW4gdG8gbWFrZSB0aGUgY3VycmVudCBzdWJuZXQuCgogICAgICAgIEluIHRoZSBjYXNlIHRoYXQgc2VsZiBjb250YWlucyBvbmx5IG9uZSBJUAogICAgICAgIChzZWxmLl9wcmVmaXhsZW4gPT0gMzIgZm9yIElQdjQgb3Igc2VsZi5fcHJlZml4bGVuID09IDEyOAogICAgICAgIGZvciBJUHY2KSwgeWllbGQgYW4gaXRlcmF0b3Igd2l0aCBqdXN0IG91cnNlbGYuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmOiBBbiBpbnRlZ2VyLCB0aGUgYW1vdW50IHRoZSBwcmVmaXggbGVuZ3RoCiAgICAgICAgICAgICAgc2hvdWxkIGJlIGluY3JlYXNlZCBieS4gVGhpcyBzaG91bGQgbm90IGJlIHNldCBpZgogICAgICAgICAgICAgIG5ld19wcmVmaXggaXMgYWxzbyBzZXQuCiAgICAgICAgICAgIG5ld19wcmVmaXg6IFRoZSBkZXNpcmVkIG5ldyBwcmVmaXggbGVuZ3RoLiBUaGlzIG11c3QgYmUgYQogICAgICAgICAgICAgIGxhcmdlciBudW1iZXIgKHNtYWxsZXIgcHJlZml4KSB0aGFuIHRoZSBleGlzdGluZyBwcmVmaXguCiAgICAgICAgICAgICAgVGhpcyBzaG91bGQgbm90IGJlIHNldCBpZiBwcmVmaXhsZW5fZGlmZiBpcyBhbHNvIHNldC4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQW4gaXRlcmF0b3Igb2YgSVB2KDR8Nikgb2JqZWN0cy4KCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBWYWx1ZUVycm9yOiBUaGUgcHJlZml4bGVuX2RpZmYgaXMgdG9vIHNtYWxsIG9yIHRvbyBsYXJnZS4KICAgICAgICAgICAgICAgIE9SCiAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4IGFyZSBib3RoIHNldCBvciBuZXdfcHJlZml4CiAgICAgICAgICAgICAgaXMgYSBzbWFsbGVyIG51bWJlciB0aGFuIHRoZSBjdXJyZW50IHByZWZpeCAoc21hbGxlcgogICAgICAgICAgICAgIG51bWJlciBtZWFucyBhIGxhcmdlciBuZXR3b3JrKQoKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gc2VsZi5fbWF4X3ByZWZpeGxlbjoKICAgICAgICAgICAgeWllbGQgc2VsZgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgbmV3X3ByZWZpeCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbmV3X3ByZWZpeCA8IHNlbGYuX3ByZWZpeGxlbjoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25ldyBwcmVmaXggbXVzdCBiZSBsb25nZXInKQogICAgICAgICAgICBpZiBwcmVmaXhsZW5fZGlmZiAhPSAxOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCcpCiAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmID0gbmV3X3ByZWZpeCAtIHNlbGYuX3ByZWZpeGxlbgoKICAgICAgICBpZiBwcmVmaXhsZW5fZGlmZiA8IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ByZWZpeCBsZW5ndGggZGlmZiBtdXN0IGJlID4gMCcpCiAgICAgICAgbmV3X3ByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeGxlbiArIHByZWZpeGxlbl9kaWZmCgogICAgICAgIGlmIG5ld19wcmVmaXhsZW4gPiBzZWxmLl9tYXhfcHJlZml4bGVuOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgJ3ByZWZpeCBsZW5ndGggZGlmZiAlZCBpcyBpbnZhbGlkIGZvciBuZXRibG9jayAlcycgJSAoCiAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeGxlbiwgc2VsZikpCgogICAgICAgIHN0YXJ0ID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQogICAgICAgIGVuZCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKSArIDEKICAgICAgICBzdGVwID0gKGludChzZWxmLmhvc3RtYXNrKSArIDEpID4+IHByZWZpeGxlbl9kaWZmCiAgICAgICAgZm9yIG5ld19hZGRyIGluIHJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXApOgogICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5fX2NsYXNzX18oKG5ld19hZGRyLCBuZXdfcHJlZml4bGVuKSkKICAgICAgICAgICAgeWllbGQgY3VycmVudAoKICAgIGRlZiBzdXBlcm5ldChzZWxmLCBwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpOgogICAgICAgICIiIlRoZSBzdXBlcm5ldCBjb250YWluaW5nIHRoZSBjdXJyZW50IG5ldHdvcmsuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmOiBBbiBpbnRlZ2VyLCB0aGUgYW1vdW50IHRoZSBwcmVmaXggbGVuZ3RoIG9mCiAgICAgICAgICAgICAgdGhlIG5ldHdvcmsgc2hvdWxkIGJlIGRlY3JlYXNlZCBieS4gIEZvciBleGFtcGxlLCBnaXZlbiBhCiAgICAgICAgICAgICAgLzI0IG5ldHdvcmsgYW5kIGEgcHJlZml4bGVuX2RpZmYgb2YgMywgYSBzdXBlcm5ldCB3aXRoIGEKICAgICAgICAgICAgICAvMjEgbmV0bWFzayBpcyByZXR1cm5lZC4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQW4gSVB2NCBuZXR3b3JrIG9iamVjdC4KCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmIDwgMC4gSS5lLiwgeW91IGhhdmUKICAgICAgICAgICAgICBhIG5lZ2F0aXZlIHByZWZpeCBsZW5ndGguCiAgICAgICAgICAgICAgICBPUgogICAgICAgICAgICBJZiBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCBhcmUgYm90aCBzZXQgb3IgbmV3X3ByZWZpeCBpcyBhCiAgICAgICAgICAgICAgbGFyZ2VyIG51bWJlciB0aGFuIHRoZSBjdXJyZW50IHByZWZpeCAobGFyZ2VyIG51bWJlciBtZWFucyBhCiAgICAgICAgICAgICAgc21hbGxlciBuZXR3b3JrKQoKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gMDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYKCiAgICAgICAgaWYgbmV3X3ByZWZpeCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbmV3X3ByZWZpeCA+IHNlbGYuX3ByZWZpeGxlbjoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25ldyBwcmVmaXggbXVzdCBiZSBzaG9ydGVyJykKICAgICAgICAgICAgaWYgcHJlZml4bGVuX2RpZmYgIT0gMToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXgnKQogICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiA9IHNlbGYuX3ByZWZpeGxlbiAtIG5ld19wcmVmaXgKCiAgICAgICAgbmV3X3ByZWZpeGxlbiA9IHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYKICAgICAgICBpZiBuZXdfcHJlZml4bGVuIDwgMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICdjdXJyZW50IHByZWZpeGxlbiBpcyAlZCwgY2Fubm90IGhhdmUgYSBwcmVmaXhsZW5fZGlmZiBvZiAlZCcgJQogICAgICAgICAgICAgICAgKHNlbGYucHJlZml4bGVuLCBwcmVmaXhsZW5fZGlmZikpCiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKCgKICAgICAgICAgICAgaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIChpbnQoc2VsZi5uZXRtYXNrKSA8PCBwcmVmaXhsZW5fZGlmZiksCiAgICAgICAgICAgIG5ld19wcmVmaXhsZW4KICAgICAgICAgICAgKSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpc19tdWx0aWNhc3Qoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbXVsdGljYXN0IGFkZHJlc3MuCiAgICAgICAgICAgIFNlZSBSRkMgMjM3MyAyLjcgZm9yIGRldGFpbHMuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfbXVsdGljYXN0IGFuZAogICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19tdWx0aWNhc3QpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9pc19zdWJuZXRfb2YoYSwgYik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIEFsd2F5cyBmYWxzZSBpZiBvbmUgaXMgdjQgYW5kIHRoZSBvdGhlciBpcyB2Ni4KICAgICAgICAgICAgaWYgYS5fdmVyc2lvbiAhPSBiLl92ZXJzaW9uOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYie2F9IGFuZCB7Yn0gYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIikKICAgICAgICAgICAgcmV0dXJuIChiLm5ldHdvcmtfYWRkcmVzcyA8PSBhLm5ldHdvcmtfYWRkcmVzcyBhbmQKICAgICAgICAgICAgICAgICAgICBiLmJyb2FkY2FzdF9hZGRyZXNzID49IGEuYnJvYWRjYXN0X2FkZHJlc3MpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJVbmFibGUgdG8gdGVzdCBzdWJuZXQgY29udGFpbm1lbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJiZXR3ZWVuIHthfSBhbmQge2J9IikKCiAgICBkZWYgc3VibmV0X29mKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGlzIG5ldHdvcmsgaXMgYSBzdWJuZXQgb2Ygb3RoZXIuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2lzX3N1Ym5ldF9vZihzZWxmLCBvdGhlcikKCiAgICBkZWYgc3VwZXJuZXRfb2Yoc2VsZiwgb3RoZXIpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoaXMgbmV0d29yayBpcyBhIHN1cGVybmV0IG9mIG90aGVyLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9pc19zdWJuZXRfb2Yob3RoZXIsIHNlbGYpCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBvdGhlcndpc2UgSUVURiByZXNlcnZlZC4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHdpdGhpbiBvbmUgb2YgdGhlCiAgICAgICAgICAgIHJlc2VydmVkIElQdjYgTmV0d29yayByYW5nZXMuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfcmVzZXJ2ZWQgYW5kCiAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3Jlc2VydmVkKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbGluay1sb2NhbC4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDI5MS4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19saW5rX2xvY2FsIGFuZAogICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19saW5rX2xvY2FsKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX3ByaXZhdGUoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGlzIG5ldHdvcmsgYmVsb25ncyB0byBhIHByaXZhdGUgcmFuZ2UuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgbmV0d29yayBpcyByZXNlcnZlZCBwZXIKICAgICAgICAgICAgaWFuYS1pcHY0LXNwZWNpYWwtcmVnaXN0cnkgb3IgaWFuYS1pcHY2LXNwZWNpYWwtcmVnaXN0cnkuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBhbnkoc2VsZi5uZXR3b3JrX2FkZHJlc3MgaW4gcHJpdl9uZXR3b3JrIGFuZAogICAgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcyBpbiBwcml2X25ldHdvcmsKICAgICAgICAgICAgICAgICAgIGZvciBwcml2X25ldHdvcmsgaW4gc2VsZi5fY29uc3RhbnRzLl9wcml2YXRlX25ldHdvcmtzKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX2dsb2JhbChzZWxmKToKICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHB1YmxpYyBuZXR3b3Jrcy4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIG5vdCByZXNlcnZlZCBwZXIKICAgICAgICAgICAgaWFuYS1pcHY0LXNwZWNpYWwtcmVnaXN0cnkgb3IgaWFuYS1pcHY2LXNwZWNpYWwtcmVnaXN0cnkuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBub3Qgc2VsZi5pc19wcml2YXRlCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyB1bnNwZWNpZmllZC4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoaXMgaXMgdGhlIHVuc3BlY2lmaWVkIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgogICAgICAgICAgICBSRkMgMjM3MyAyLjUuMi4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc191bnNwZWNpZmllZCBhbmQKICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfdW5zcGVjaWZpZWQpCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgogICAgICAgICAgICBSRkMgMjM3MyAyLjUuMy4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19sb29wYmFjayBhbmQKICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfbG9vcGJhY2spCgoKY2xhc3MgX0Jhc2VDb25zdGFudHM6CgogICAgX3ByaXZhdGVfbmV0d29ya3MgPSBbXQoKCl9CYXNlTmV0d29yay5fY29uc3RhbnRzID0gX0Jhc2VDb25zdGFudHMKCgpjbGFzcyBfQmFzZVY0OgoKICAgICIiIkJhc2UgSVB2NCBvYmplY3QuCgogICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIGJ5IElQdjQgb2JqZWN0cyBpbiBib3RoIHNpbmdsZSBJUAogICAgYWRkcmVzc2VzIGFuZCBuZXR3b3Jrcy4KCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoKQogICAgX3ZlcnNpb24gPSA0CiAgICAjIEVxdWl2YWxlbnQgdG8gMjU1LjI1NS4yNTUuMjU1IG9yIDMyIGJpdHMgb2YgMSdzLgogICAgX0FMTF9PTkVTID0gKDIqKklQVjRMRU5HVEgpIC0gMQoKICAgIF9tYXhfcHJlZml4bGVuID0gSVBWNExFTkdUSAogICAgIyBUaGVyZSBhcmUgb25seSBhIGhhbmRmdWwgb2YgdmFsaWQgdjQgbmV0bWFza3MsIHNvIHdlIGNhY2hlIHRoZW0gYWxsCiAgICAjIHdoZW4gY29uc3RydWN0ZWQgKHNlZSBfbWFrZV9uZXRtYXNrKCkpLgogICAgX25ldG1hc2tfY2FjaGUgPSB7fQoKICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgogICAgICAgIHJldHVybiBzdHIoc2VsZikKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfbWFrZV9uZXRtYXNrKGNscywgYXJnKToKICAgICAgICAiIiJNYWtlIGEgKG5ldG1hc2ssIHByZWZpeF9sZW4pIHR1cGxlIGZyb20gdGhlIGdpdmVuIGFyZ3VtZW50LgoKICAgICAgICBBcmd1bWVudCBjYW4gYmU6CiAgICAgICAgLSBhbiBpbnRlZ2VyICh0aGUgcHJlZml4IGxlbmd0aCkKICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IGxlbmd0aCAoZS5nLiAiMjQiKQogICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbmV0bWFzayAoZS5nLiAiMjU1LjI1NS4yNTUuMCIpCiAgICAgICAgIiIiCiAgICAgICAgaWYgYXJnIG5vdCBpbiBjbHMuX25ldG1hc2tfY2FjaGU6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBpbnQpOgogICAgICAgICAgICAgICAgcHJlZml4bGVuID0gYXJnCiAgICAgICAgICAgICAgICBpZiBub3QgKDAgPD0gcHJlZml4bGVuIDw9IGNscy5fbWF4X3ByZWZpeGxlbik6CiAgICAgICAgICAgICAgICAgICAgY2xzLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtCiAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuID0gY2xzLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFyZykKICAgICAgICAgICAgICAgIGV4Y2VwdCBOZXRtYXNrVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIG5ldG1hc2sgb3IgaG9zdG1hc2sgaW4gZG90dGVkLXF1YWQgZm9ybS4KICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF5IHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yLgogICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbiA9IGNscy5fcHJlZml4X2Zyb21faXBfc3RyaW5nKGFyZykKICAgICAgICAgICAgbmV0bWFzayA9IElQdjRBZGRyZXNzKGNscy5faXBfaW50X2Zyb21fcHJlZml4KHByZWZpeGxlbikpCiAgICAgICAgICAgIGNscy5fbmV0bWFza19jYWNoZVthcmddID0gbmV0bWFzaywgcHJlZml4bGVuCiAgICAgICAgcmV0dXJuIGNscy5fbmV0bWFza19jYWNoZVthcmddCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhjbHMsIGlwX3N0cik6CiAgICAgICAgIiIiVHVybiB0aGUgZ2l2ZW4gSVAgc3RyaW5nIGludG8gYW4gaW50ZWdlciBmb3IgY29tcGFyaXNvbi4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIElQIGlwX3N0ci4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgVGhlIElQIGlwX3N0ciBhcyBhbiBpbnRlZ2VyLgoKICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBpZiBpcF9zdHIgaXNuJ3QgYSB2YWxpZCBJUHY0IEFkZHJlc3MuCgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBpcF9zdHI6CiAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCdBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eScpCgogICAgICAgIG9jdGV0cyA9IGlwX3N0ci5zcGxpdCgnLicpCiAgICAgICAgaWYgbGVuKG9jdGV0cykgIT0gNDoKICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIkV4cGVjdGVkIDQgb2N0ZXRzIGluICVyIiAlIGlwX3N0cikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMobWFwKGNscy5fcGFyc2Vfb2N0ZXQsIG9jdGV0cyksICdiaWcnKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9wYXJzZV9vY3RldChjbHMsIG9jdGV0X3N0cik6CiAgICAgICAgIiIiQ29udmVydCBhIGRlY2ltYWwgb2N0ZXQgaW50byBhbiBpbnRlZ2VyLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICBvY3RldF9zdHI6IEEgc3RyaW5nLCB0aGUgbnVtYmVyIHRvIHBhcnNlLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBUaGUgb2N0ZXQgYXMgYW4gaW50ZWdlci4KCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgb2N0ZXQgaXNuJ3Qgc3RyaWN0bHkgYSBkZWNpbWFsIGZyb20gWzAuLjI1NV0uCgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBvY3RldF9zdHI6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkVtcHR5IG9jdGV0IG5vdCBwZXJtaXR0ZWQiKQogICAgICAgICMgUmVqZWN0IG5vbi1BU0NJSSBkaWdpdHMuCiAgICAgICAgaWYgbm90IChvY3RldF9zdHIuaXNhc2NpaSgpIGFuZCBvY3RldF9zdHIuaXNkaWdpdCgpKToKICAgICAgICAgICAgbXNnID0gIk9ubHkgZGVjaW1hbCBkaWdpdHMgcGVybWl0dGVkIGluICVyIgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKICAgICAgICAjIFdlIGRvIHRoZSBsZW5ndGggY2hlY2sgc2Vjb25kLCBzaW5jZSB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgZXJyb3IKICAgICAgICAjIGlzIGxpa2VseSB0byBiZSBtb3JlIGluZm9ybWF0aXZlIGZvciB0aGUgdXNlcgogICAgICAgIGlmIGxlbihvY3RldF9zdHIpID4gMzoKICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgMyBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciIKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCiAgICAgICAgIyBIYW5kbGUgbGVhZGluZyB6ZXJvcyBhcyBzdHJpY3QgYXMgZ2xpYmMncyBpbmV0X3B0b24oKQogICAgICAgICMgU2VlIHNlY3VyaXR5IGJ1ZyBicG8tMzYzODQKICAgICAgICBpZiBvY3RldF9zdHIgIT0gJzAnIGFuZCBvY3RldF9zdHJbMF0gPT0gJzAnOgogICAgICAgICAgICBtc2cgPSAiTGVhZGluZyB6ZXJvcyBhcmUgbm90IHBlcm1pdHRlZCBpbiAlciIKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCiAgICAgICAgIyBDb252ZXJ0IHRvIGludGVnZXIgKHdlIGtub3cgZGlnaXRzIGFyZSBsZWdhbCkKICAgICAgICBvY3RldF9pbnQgPSBpbnQob2N0ZXRfc3RyLCAxMCkKICAgICAgICBpZiBvY3RldF9pbnQgPiAyNTU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9jdGV0ICVkICg+IDI1NSkgbm90IHBlcm1pdHRlZCIgJSBvY3RldF9pbnQpCiAgICAgICAgcmV0dXJuIG9jdGV0X2ludAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoY2xzLCBpcF9pbnQpOgogICAgICAgICIiIlR1cm5zIGEgMzItYml0IGludGVnZXIgaW50byBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgaXBfaW50OiBBbiBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgVGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcgaW4gZG90dGVkIGRlY2ltYWwgbm90YXRpb24uCgogICAgICAgICIiIgogICAgICAgIHJldHVybiAnLicuam9pbihtYXAoc3RyLCBpcF9pbnQudG9fYnl0ZXMoNCwgJ2JpZycpKSkKCiAgICBkZWYgX3JldmVyc2VfcG9pbnRlcihzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHJldmVyc2UgRE5TIHBvaW50ZXIgbmFtZSBmb3IgdGhlIElQdjQgYWRkcmVzcy4KCiAgICAgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBtZXRob2QgZGVzY3JpYmVkIGluIFJGQzEwMzUgMy41LgoKICAgICAgICAiIiIKICAgICAgICByZXZlcnNlX29jdGV0cyA9IHN0cihzZWxmKS5zcGxpdCgnLicpWzo6LTFdCiAgICAgICAgcmV0dXJuICcuJy5qb2luKHJldmVyc2Vfb2N0ZXRzKSArICcuaW4tYWRkci5hcnBhJwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX21heF9wcmVmaXhsZW4KCiAgICBAcHJvcGVydHkKICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCgoKY2xhc3MgSVB2NEFkZHJlc3MoX0Jhc2VWNCwgX0Jhc2VBZGRyZXNzKToKCiAgICAiIiJSZXByZXNlbnQgYW5kIG1hbmlwdWxhdGUgc2luZ2xlIElQdjQgQWRkcmVzc2VzLiIiIgoKICAgIF9fc2xvdHNfXyA9ICgnX2lwJywgJ19fd2Vha3JlZl9fJykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CgogICAgICAgICIiIgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUAoKICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KICAgICAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykgPT0gSVB2NEFkZHJlc3MoMzIyMTIyNTk4NSkuCiAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CiAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoaW50KElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKSkpID09CiAgICAgICAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgaXBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgoKICAgICAgICAiIiIKICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCiAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgogICAgICAgICAgICBzZWxmLl9jaGVja19pbnRfYWRkcmVzcyhhZGRyZXNzKQogICAgICAgICAgICBzZWxmLl9pcCA9IGFkZHJlc3MKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcwogICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgogICAgICAgICAgICBzZWxmLl9jaGVja19wYWNrZWRfYWRkcmVzcyhhZGRyZXNzLCA0KQogICAgICAgICAgICBzZWxmLl9pcCA9IGludC5mcm9tX2J5dGVzKGFkZHJlc3MpICAjIGJpZyBlbmRpYW4KICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCiAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHN0cmluZy4KICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQogICAgICAgIGlmICcvJyBpbiBhZGRyX3N0cjoKICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoZiJVbmV4cGVjdGVkICcvJyBpbiB7YWRkcmVzcyFyfSIpCiAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCgogICAgQHByb3BlcnR5CiAgICBkZWYgcGFja2VkKHNlbGYpOgogICAgICAgICIiIlRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhZGRyZXNzLiIiIgogICAgICAgIHJldHVybiB2NF9pbnRfdG9fcGFja2VkKHNlbGYuX2lwKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgogICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCgogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHdpdGhpbiB0aGUKICAgICAgICAgICAgIHJlc2VydmVkIElQdjQgTmV0d29yayByYW5nZS4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2VsZi5fY29uc3RhbnRzLl9yZXNlcnZlZF9uZXR3b3JrCgogICAgQHByb3BlcnR5CiAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCiAgICBkZWYgaXNfcHJpdmF0ZShzZWxmKToKICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIKICAgICAgICAgICAgaWFuYS1pcHY0LXNwZWNpYWwtcmVnaXN0cnkuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiBuZXQgZm9yIG5ldCBpbiBzZWxmLl9jb25zdGFudHMuX3ByaXZhdGVfbmV0d29ya3MpCgogICAgQHByb3BlcnR5CiAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCiAgICBkZWYgaXNfZ2xvYmFsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmIG5vdCBpbiBzZWxmLl9jb25zdGFudHMuX3B1YmxpY19uZXR3b3JrIGFuZCBub3Qgc2VsZi5pc19wcml2YXRlCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgogICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBtdWx0aWNhc3QuCiAgICAgICAgICAgIFNlZSBSRkMgMzE3MSBmb3IgZGV0YWlscy4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2VsZi5fY29uc3RhbnRzLl9tdWx0aWNhc3RfbmV0d29yawoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGlzIGlzIHRoZSB1bnNwZWNpZmllZCBhZGRyZXNzIGFzIGRlZmluZWQgaW4KICAgICAgICAgICAgUkZDIDU3MzUgMy4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYgPT0gc2VsZi5fY29uc3RhbnRzLl91bnNwZWNpZmllZF9hZGRyZXNzCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIHBlciBSRkMgMzMzMC4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2VsZi5fY29uc3RhbnRzLl9sb29wYmFja19uZXR3b3JrCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgbGluay1sb2NhbCBwZXIgUkZDIDM5MjcuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbGlua2xvY2FsX25ldHdvcmsKCgpjbGFzcyBJUHY0SW50ZXJmYWNlKElQdjRBZGRyZXNzKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CiAgICAgICAgYWRkciwgbWFzayA9IHNlbGYuX3NwbGl0X2FkZHJfcHJlZml4KGFkZHJlc3MpCgogICAgICAgIElQdjRBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHIpCiAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2NE5ldHdvcmsoKGFkZHIsIG1hc2spLCBzdHJpY3Q9RmFsc2UpCiAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLm5ldHdvcmsuX3ByZWZpeGxlbgoKICAgIEBmdW5jdG9vbHMuY2FjaGVkX3Byb3BlcnR5CiAgICBkZWYgaG9zdG1hc2soc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yay5ob3N0bWFzawoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGFkZHJlc3NfZXF1YWwgPSBJUHY0QWRkcmVzcy5fX2VxX18oc2VsZiwgb3RoZXIpCiAgICAgICAgaWYgYWRkcmVzc19lcXVhbCBpcyBOb3RJbXBsZW1lbnRlZCBvciBub3QgYWRkcmVzc19lcXVhbDoKICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3NfZXF1YWwKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPT0gb3RoZXIubmV0d29yawogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIyBBbiBpbnRlcmZhY2Ugd2l0aCBhbiBhc3NvY2lhdGVkIG5ldHdvcmsgaXMgTk9UIHRoZQogICAgICAgICAgICAjIHNhbWUgYXMgYW4gdW5hc3NvY2lhdGVkIGFkZHJlc3MuIFRoYXQncyB3aHkgdGhlIGhhc2gKICAgICAgICAgICAgIyB0YWtlcyB0aGUgZXh0cmEgaW5mbyBpbnRvIGFjY291bnQuCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGFkZHJlc3NfbGVzcyA9IElQdjRBZGRyZXNzLl9fbHRfXyhzZWxmLCBvdGhlcikKICAgICAgICBpZiBhZGRyZXNzX2xlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmsgPCBvdGhlci5uZXR3b3JrIG9yCiAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrID09IG90aGVyLm5ldHdvcmsgYW5kIGFkZHJlc3NfbGVzcykKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICMgV2UgKmRvKiBhbGxvdyBhZGRyZXNzZXMgYW5kIGludGVyZmFjZXMgdG8gYmUgc29ydGVkLiBUaGUKICAgICAgICAgICAgIyB1bmFzc29jaWF0ZWQgYWRkcmVzcyBpcyBjb25zaWRlcmVkIGxlc3MgdGhhbiBhbGwgaW50ZXJmYWNlcy4KICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHJldHVybiBoYXNoKChzZWxmLl9pcCwgc2VsZi5fcHJlZml4bGVuLCBpbnQoc2VsZi5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcykpKQoKICAgIF9fcmVkdWNlX18gPSBfSVBBZGRyZXNzQmFzZS5fX3JlZHVjZV9fCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXAoc2VsZik6CiAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKHNlbGYuX2lwKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHdpdGhfcHJlZml4bGVuKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHdpdGhfbmV0bWFzayhzZWxmKToKICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzaykKCiAgICBAcHJvcGVydHkKICAgIGRlZiB3aXRoX2hvc3RtYXNrKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0bWFzaykKCgpjbGFzcyBJUHY0TmV0d29yayhfQmFzZVY0LCBfQmFzZU5ldHdvcmspOgoKICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbmQgbWFuaXB1bGF0ZXMgMzItYml0IElQdjQgbmV0d29yayArIGFkZHJlc3Nlcy4uCgogICAgQXR0cmlidXRlczogW2V4YW1wbGVzIGZvciBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI3JyldCiAgICAgICAgLm5ldHdvcmtfYWRkcmVzczogSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpCiAgICAgICAgLmhvc3RtYXNrOiBJUHY0QWRkcmVzcygnMC4wLjAuMzEnKQogICAgICAgIC5icm9hZGNhc3RfYWRkcmVzczogSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMzInKQogICAgICAgIC5uZXRtYXNrOiBJUHY0QWRkcmVzcygnMjU1LjI1NS4yNTUuMjI0JykKICAgICAgICAucHJlZml4bGVuOiAyNwoKICAgICIiIgogICAgIyBDbGFzcyB0byB1c2Ugd2hlbiBjcmVhdGluZyBhZGRyZXNzIG9iamVjdHMKICAgIF9hZGRyZXNzX2NsYXNzID0gSVB2NEFkZHJlc3MKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgc3RyaWN0PVRydWUpOgogICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjQgbmV0d29yayBvYmplY3QuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUCBbJiBuZXR3b3JrXS4KICAgICAgICAgICAgICAnMTkyLjAuMi4wLzI0JwogICAgICAgICAgICAgICcxOTIuMC4yLjAvMjU1LjI1NS4yNTUuMCcKICAgICAgICAgICAgICAnMTkyLjAuMi4wLzAuMC4wLjI1NScKICAgICAgICAgICAgICBhcmUgYWxsIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBpbiBJUHY0LiBTaW1pbGFybHksCiAgICAgICAgICAgICAgJzE5Mi4wLjIuMScKICAgICAgICAgICAgICAnMTkyLjAuMi4xLzI1NS4yNTUuMjU1LjI1NScKICAgICAgICAgICAgICAnMTkyLjAuMi4xLzMyJwogICAgICAgICAgICAgIGFyZSBhbHNvIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBUaGF0IGlzIHRvIHNheSwgZmFpbGluZyB0bwogICAgICAgICAgICAgIHByb3ZpZGUgYSBzdWJuZXRtYXNrIHdpbGwgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgbWFzayBvZiAvMzIuCgogICAgICAgICAgICAgIElmIHRoZSBtYXNrIChwb3J0aW9uIGFmdGVyIHRoZSAvIGluIHRoZSBhcmd1bWVudCkgaXMgZ2l2ZW4gaW4KICAgICAgICAgICAgICBkb3R0ZWQgcXVhZCBmb3JtLCBpdCBpcyB0cmVhdGVkIGFzIGEgbmV0bWFzayBpZiBpdCBzdGFydHMgd2l0aCBhCiAgICAgICAgICAgICAgbm9uLXplcm8gZmllbGQgKGUuZy4gLzI1NS4wLjAuMCA9PSAvOCkgYW5kIGFzIGEgaG9zdG1hc2sgaWYgaXQKICAgICAgICAgICAgICBzdGFydHMgd2l0aCBhIHplcm8gZmllbGQgKGUuZy4gMC4yNTUuMjU1LjI1NSA9PSAvOCksIHdpdGggdGhlCiAgICAgICAgICAgICAgc2luZ2xlIGV4Y2VwdGlvbiBvZiBhbiBhbGwtemVybyBtYXNrIHdoaWNoIGlzIHRyZWF0ZWQgYXMgYQogICAgICAgICAgICAgIG5ldG1hc2sgPT0gLzAuIElmIG5vIG1hc2sgaXMgZ2l2ZW4sIGEgZGVmYXVsdCBvZiAvMzIgaXMgdXNlZC4KCiAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCiAgICAgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMScpID09IElQdjROZXR3b3JrKDMyMjEyMjU5ODUpCiAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CiAgICAgICAgICAgICAgSVB2NEludGVyZmFjZShpbnQoSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xJykpKSA9PQogICAgICAgICAgICAgICAgSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xJykKCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgaXBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgogICAgICAgICAgICBOZXRtYXNrVmFsdWVFcnJvcjogSWYgdGhlIG5ldG1hc2sgaXNuJ3QgdmFsaWQgZm9yCiAgICAgICAgICAgICAgYW4gSVB2NCBhZGRyZXNzLgogICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBzdHJpY3QgaXMgVHJ1ZSBhbmQgYSBuZXR3b3JrIGFkZHJlc3MgaXMgbm90CiAgICAgICAgICAgICAgc3VwcGxpZWQuCiAgICAgICAgIiIiCiAgICAgICAgYWRkciwgbWFzayA9IHNlbGYuX3NwbGl0X2FkZHJfcHJlZml4KGFkZHJlc3MpCgogICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoYWRkcikKICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhtYXNrKQogICAgICAgIHBhY2tlZCA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKICAgICAgICBpZiBwYWNrZWQgJiBpbnQoc2VsZi5uZXRtYXNrKSAhPSBwYWNrZWQ6CiAgICAgICAgICAgIGlmIHN0cmljdDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGhhcyBob3N0IGJpdHMgc2V0JyAlIHNlbGYpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKHBhY2tlZCAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spKQoKICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gKHNlbGYuX21heF9wcmVmaXhsZW4gLSAxKToKICAgICAgICAgICAgc2VsZi5ob3N0cyA9IHNlbGYuX19pdGVyX18KICAgICAgICBlbGlmIHNlbGYuX3ByZWZpeGxlbiA9PSAoc2VsZi5fbWF4X3ByZWZpeGxlbik6CiAgICAgICAgICAgIHNlbGYuaG9zdHMgPSBsYW1iZGE6IFtJUHY0QWRkcmVzcyhhZGRyKV0KCiAgICBAcHJvcGVydHkKICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKCkKICAgIGRlZiBpc19nbG9iYWwoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwdWJsaWMgbmV0d29ya3MuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBub3QgcmVzZXJ2ZWQgcGVyCiAgICAgICAgICAgIGlhbmEtaXB2NC1zcGVjaWFsLXJlZ2lzdHJ5LgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gKG5vdCAoc2VsZi5uZXR3b3JrX2FkZHJlc3MgaW4gSVB2NE5ldHdvcmsoJzEwMC42NC4wLjAvMTAnKSBhbmQKICAgICAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzIGluIElQdjROZXR3b3JrKCcxMDAuNjQuMC4wLzEwJykpIGFuZAogICAgICAgICAgICAgICAgbm90IHNlbGYuaXNfcHJpdmF0ZSkKCgpjbGFzcyBfSVB2NENvbnN0YW50czoKICAgIF9saW5rbG9jYWxfbmV0d29yayA9IElQdjROZXR3b3JrKCcxNjkuMjU0LjAuMC8xNicpCgogICAgX2xvb3BiYWNrX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQoKICAgIF9tdWx0aWNhc3RfbmV0d29yayA9IElQdjROZXR3b3JrKCcyMjQuMC4wLjAvNCcpCgogICAgX3B1YmxpY19uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzEwMC42NC4wLjAvMTAnKQoKICAgIF9wcml2YXRlX25ldHdvcmtzID0gWwogICAgICAgIElQdjROZXR3b3JrKCcwLjAuMC4wLzgnKSwKICAgICAgICBJUHY0TmV0d29yaygnMTAuMC4wLjAvOCcpLAogICAgICAgIElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpLAogICAgICAgIElQdjROZXR3b3JrKCcxNjkuMjU0LjAuMC8xNicpLAogICAgICAgIElQdjROZXR3b3JrKCcxNzIuMTYuMC4wLzEyJyksCiAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMC8yOScpLAogICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4wLjE3MC8zMScpLAogICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKSwKICAgICAgICBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMTYnKSwKICAgICAgICBJUHY0TmV0d29yaygnMTk4LjE4LjAuMC8xNScpLAogICAgICAgIElQdjROZXR3b3JrKCcxOTguNTEuMTAwLjAvMjQnKSwKICAgICAgICBJUHY0TmV0d29yaygnMjAzLjAuMTEzLjAvMjQnKSwKICAgICAgICBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKSwKICAgICAgICBJUHY0TmV0d29yaygnMjU1LjI1NS4yNTUuMjU1LzMyJyksCiAgICAgICAgXQoKICAgIF9yZXNlcnZlZF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JykKCiAgICBfdW5zcGVjaWZpZWRfYWRkcmVzcyA9IElQdjRBZGRyZXNzKCcwLjAuMC4wJykKCgpJUHY0QWRkcmVzcy5fY29uc3RhbnRzID0gX0lQdjRDb25zdGFudHMKSVB2NE5ldHdvcmsuX2NvbnN0YW50cyA9IF9JUHY0Q29uc3RhbnRzCgoKY2xhc3MgX0Jhc2VWNjoKCiAgICAiIiJCYXNlIElQdjYgb2JqZWN0LgoKICAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCBieSBJUHY2IG9iamVjdHMgaW4gYm90aCBzaW5nbGUgSVAKICAgIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MuCgogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKICAgIF92ZXJzaW9uID0gNgogICAgX0FMTF9PTkVTID0gKDIqKklQVjZMRU5HVEgpIC0gMQogICAgX0hFWFRFVF9DT1VOVCA9IDgKICAgIF9IRVhfRElHSVRTID0gZnJvemVuc2V0KCcwMTIzNDU2Nzg5QUJDREVGYWJjZGVmJykKICAgIF9tYXhfcHJlZml4bGVuID0gSVBWNkxFTkdUSAoKICAgICMgVGhlcmUgYXJlIG9ubHkgYSBidW5jaCBvZiB2YWxpZCB2NiBuZXRtYXNrcywgc28gd2UgY2FjaGUgdGhlbSBhbGwKICAgICMgd2hlbiBjb25zdHJ1Y3RlZCAoc2VlIF9tYWtlX25ldG1hc2soKSkuCiAgICBfbmV0bWFza19jYWNoZSA9IHt9CgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX21ha2VfbmV0bWFzayhjbHMsIGFyZyk6CiAgICAgICAgIiIiTWFrZSBhIChuZXRtYXNrLCBwcmVmaXhfbGVuKSB0dXBsZSBmcm9tIHRoZSBnaXZlbiBhcmd1bWVudC4KCiAgICAgICAgQXJndW1lbnQgY2FuIGJlOgogICAgICAgIC0gYW4gaW50ZWdlciAodGhlIHByZWZpeCBsZW5ndGgpCiAgICAgICAgLSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHByZWZpeCBsZW5ndGggKGUuZy4gIjI0IikKICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IG5ldG1hc2sgKGUuZy4gIjI1NS4yNTUuMjU1LjAiKQogICAgICAgICIiIgogICAgICAgIGlmIGFyZyBub3QgaW4gY2xzLl9uZXRtYXNrX2NhY2hlOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgaW50KToKICAgICAgICAgICAgICAgIHByZWZpeGxlbiA9IGFyZwogICAgICAgICAgICAgICAgaWYgbm90ICgwIDw9IHByZWZpeGxlbiA8PSBjbHMuX21heF9wcmVmaXhsZW4pOgogICAgICAgICAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW4pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBjbHMuX3ByZWZpeF9mcm9tX3ByZWZpeF9zdHJpbmcoYXJnKQogICAgICAgICAgICBuZXRtYXNrID0gSVB2NkFkZHJlc3MoY2xzLl9pcF9pbnRfZnJvbV9wcmVmaXgocHJlZml4bGVuKSkKICAgICAgICAgICAgY2xzLl9uZXRtYXNrX2NhY2hlW2FyZ10gPSBuZXRtYXNrLCBwcmVmaXhsZW4KICAgICAgICByZXR1cm4gY2xzLl9uZXRtYXNrX2NhY2hlW2FyZ10KCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKGNscywgaXBfc3RyKToKICAgICAgICAiIiJUdXJuIGFuIElQdjYgaXBfc3RyIGludG8gYW4gaW50ZWdlci4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIElQdjYgaXBfc3RyLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBbiBpbnQsIHRoZSBJUHY2IGFkZHJlc3MKCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogaWYgaXBfc3RyIGlzbid0IGEgdmFsaWQgSVB2NiBBZGRyZXNzLgoKICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXBfc3RyOgogICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcignQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHknKQoKICAgICAgICBwYXJ0cyA9IGlwX3N0ci5zcGxpdCgnOicpCgogICAgICAgICMgQW4gSVB2NiBhZGRyZXNzIG5lZWRzIGF0IGxlYXN0IDIgY29sb25zICgzIHBhcnRzKS4KICAgICAgICBfbWluX3BhcnRzID0gMwogICAgICAgIGlmIGxlbihwYXJ0cykgPCBfbWluX3BhcnRzOgogICAgICAgICAgICBtc2cgPSAiQXQgbGVhc3QgJWQgcGFydHMgZXhwZWN0ZWQgaW4gJXIiICUgKF9taW5fcGFydHMsIGlwX3N0cikKICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQoKICAgICAgICAjIElmIHRoZSBhZGRyZXNzIGhhcyBhbiBJUHY0LXN0eWxlIHN1ZmZpeCwgY29udmVydCBpdCB0byBoZXhhZGVjaW1hbC4KICAgICAgICBpZiAnLicgaW4gcGFydHNbLTFdOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpcHY0X2ludCA9IElQdjRBZGRyZXNzKHBhcnRzLnBvcCgpKS5faXAKICAgICAgICAgICAgZXhjZXB0IEFkZHJlc3NWYWx1ZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKICAgICAgICAgICAgcGFydHMuYXBwZW5kKCcleCcgJSAoKGlwdjRfaW50ID4+IDE2KSAmIDB4RkZGRikpCiAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXgnICUgKGlwdjRfaW50ICYgMHhGRkZGKSkKCiAgICAgICAgIyBBbiBJUHY2IGFkZHJlc3MgY2FuJ3QgaGF2ZSBtb3JlIHRoYW4gOCBjb2xvbnMgKDkgcGFydHMpLgogICAgICAgICMgVGhlIGV4dHJhIGNvbG9uIGNvbWVzIGZyb20gdXNpbmcgdGhlICI6OiIgbm90YXRpb24gZm9yIGEgc2luZ2xlCiAgICAgICAgIyBsZWFkaW5nIG9yIHRyYWlsaW5nIHplcm8gcGFydC4KICAgICAgICBfbWF4X3BhcnRzID0gY2xzLl9IRVhURVRfQ09VTlQgKyAxCiAgICAgICAgaWYgbGVuKHBhcnRzKSA+IF9tYXhfcGFydHM6CiAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0ICVkIGNvbG9ucyBwZXJtaXR0ZWQgaW4gJXIiICUgKF9tYXhfcGFydHMtMSwgaXBfc3RyKQogICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cpCgogICAgICAgICMgRGlzcmVnYXJkaW5nIHRoZSBlbmRwb2ludHMsIGZpbmQgJzo6JyB3aXRoIG5vdGhpbmcgaW4gYmV0d2Vlbi4KICAgICAgICAjIFRoaXMgaW5kaWNhdGVzIHRoYXQgYSBydW4gb2YgemVyb2VzIGhhcyBiZWVuIHNraXBwZWQuCiAgICAgICAgc2tpcF9pbmRleCA9IE5vbmUKICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW4ocGFydHMpIC0gMSk6CiAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1tpXToKICAgICAgICAgICAgICAgIGlmIHNraXBfaW5kZXggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIyBDYW4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgJzo6JwogICAgICAgICAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IG9uZSAnOjonIHBlcm1pdHRlZCBpbiAlciIgJSBpcF9zdHIKICAgICAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cpCiAgICAgICAgICAgICAgICBza2lwX2luZGV4ID0gaQoKICAgICAgICAjIHBhcnRzX2hpIGlzIHRoZSBudW1iZXIgb2YgcGFydHMgdG8gY29weSBmcm9tIGFib3ZlL2JlZm9yZSB0aGUgJzo6JwogICAgICAgICMgcGFydHNfbG8gaXMgdGhlIG51bWJlciBvZiBwYXJ0cyB0byBjb3B5IGZyb20gYmVsb3cvYWZ0ZXIgdGhlICc6OicKICAgICAgICBpZiBza2lwX2luZGV4IGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIElmIHdlIGZvdW5kIGEgJzo6JywgdGhlbiBjaGVjayBpZiBpdCBhbHNvIGNvdmVycyB0aGUgZW5kcG9pbnRzLgogICAgICAgICAgICBwYXJ0c19oaSA9IHNraXBfaW5kZXgKICAgICAgICAgICAgcGFydHNfbG8gPSBsZW4ocGFydHMpIC0gc2tpcF9pbmRleCAtIDEKICAgICAgICAgICAgaWYgbm90IHBhcnRzWzBdOgogICAgICAgICAgICAgICAgcGFydHNfaGkgLT0gMQogICAgICAgICAgICAgICAgaWYgcGFydHNfaGk6CiAgICAgICAgICAgICAgICAgICAgbXNnID0gIkxlYWRpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKICAgICAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIF46IHJlcXVpcmVzIF46OgogICAgICAgICAgICBpZiBub3QgcGFydHNbLTFdOgogICAgICAgICAgICAgICAgcGFydHNfbG8gLT0gMQogICAgICAgICAgICAgICAgaWYgcGFydHNfbG86CiAgICAgICAgICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyA6JCByZXF1aXJlcyA6OiQKICAgICAgICAgICAgcGFydHNfc2tpcHBlZCA9IGNscy5fSEVYVEVUX0NPVU5UIC0gKHBhcnRzX2hpICsgcGFydHNfbG8pCiAgICAgICAgICAgIGlmIHBhcnRzX3NraXBwZWQgPCAxOgogICAgICAgICAgICAgICAgbXNnID0gIkV4cGVjdGVkIGF0IG1vc3QgJWQgb3RoZXIgcGFydHMgd2l0aCAnOjonIGluICVyIgogICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGNscy5fSEVYVEVUX0NPVU5ULTEsIGlwX3N0cikpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBPdGhlcndpc2UsIGFsbG9jYXRlIHRoZSBlbnRpcmUgYWRkcmVzcyB0byBwYXJ0c19oaS4gIFRoZQogICAgICAgICAgICAjIGVuZHBvaW50cyBjb3VsZCBzdGlsbCBiZSBlbXB0eSwgYnV0IF9wYXJzZV9oZXh0ZXQoKSB3aWxsIGNoZWNrCiAgICAgICAgICAgICMgZm9yIHRoYXQuCiAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gY2xzLl9IRVhURVRfQ09VTlQ6CiAgICAgICAgICAgICAgICBtc2cgPSAiRXhhY3RseSAlZCBwYXJ0cyBleHBlY3RlZCB3aXRob3V0ICc6OicgaW4gJXIiCiAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoY2xzLl9IRVhURVRfQ09VTlQsIGlwX3N0cikpCiAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1swXToKICAgICAgICAgICAgICAgIG1zZyA9ICJMZWFkaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCiAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIF46IHJlcXVpcmVzIF46OgogICAgICAgICAgICBpZiBub3QgcGFydHNbLTFdOgogICAgICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCiAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIDokIHJlcXVpcmVzIDo6JAogICAgICAgICAgICBwYXJ0c19oaSA9IGxlbihwYXJ0cykKICAgICAgICAgICAgcGFydHNfbG8gPSAwCiAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSAwCgogICAgICAgIHRyeToKICAgICAgICAgICAgIyBOb3csIHBhcnNlIHRoZSBoZXh0ZXRzIGludG8gYSAxMjgtYml0IGludGVnZXIuCiAgICAgICAgICAgIGlwX2ludCA9IDAKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFydHNfaGkpOgogICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgogICAgICAgICAgICAgICAgaXBfaW50IHw9IGNscy5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQogICAgICAgICAgICBpcF9pbnQgPDw9IDE2ICogcGFydHNfc2tpcHBlZAogICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtcGFydHNfbG8sIDApOgogICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgogICAgICAgICAgICAgICAgaXBfaW50IHw9IGNscy5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQogICAgICAgICAgICByZXR1cm4gaXBfaW50CiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgogICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX3BhcnNlX2hleHRldChjbHMsIGhleHRldF9zdHIpOgogICAgICAgICIiIkNvbnZlcnQgYW4gSVB2NiBoZXh0ZXQgc3RyaW5nIGludG8gYW4gaW50ZWdlci4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgaGV4dGV0X3N0cjogQSBzdHJpbmcsIHRoZSBudW1iZXIgdG8gcGFyc2UuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIFRoZSBoZXh0ZXQgYXMgYW4gaW50ZWdlci4KCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgaW5wdXQgaXNuJ3Qgc3RyaWN0bHkgYSBoZXggbnVtYmVyIGZyb20KICAgICAgICAgICAgICBbMC4uRkZGRl0uCgogICAgICAgICIiIgogICAgICAgICMgUmVqZWN0IG5vbi1BU0NJSSBkaWdpdHMuCiAgICAgICAgaWYgbm90IGNscy5fSEVYX0RJR0lUUy5pc3N1cGVyc2V0KGhleHRldF9zdHIpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IGhleCBkaWdpdHMgcGVybWl0dGVkIGluICVyIiAlIGhleHRldF9zdHIpCiAgICAgICAgIyBXZSBkbyB0aGUgbGVuZ3RoIGNoZWNrIHNlY29uZCwgc2luY2UgdGhlIGludmFsaWQgY2hhcmFjdGVyIGVycm9yCiAgICAgICAgIyBpcyBsaWtlbHkgdG8gYmUgbW9yZSBpbmZvcm1hdGl2ZSBmb3IgdGhlIHVzZXIKICAgICAgICBpZiBsZW4oaGV4dGV0X3N0cikgPiA0OgogICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCA0IGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIGhleHRldF9zdHIpCiAgICAgICAgIyBMZW5ndGggY2hlY2sgbWVhbnMgd2UgY2FuIHNraXAgY2hlY2tpbmcgdGhlIGludGVnZXIgdmFsdWUKICAgICAgICByZXR1cm4gaW50KGhleHRldF9zdHIsIDE2KQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9jb21wcmVzc19oZXh0ZXRzKGNscywgaGV4dGV0cyk6CiAgICAgICAgIiIiQ29tcHJlc3NlcyBhIGxpc3Qgb2YgaGV4dGV0cy4KCiAgICAgICAgQ29tcHJlc3NlcyBhIGxpc3Qgb2Ygc3RyaW5ncywgcmVwbGFjaW5nIHRoZSBsb25nZXN0IGNvbnRpbnVvdXMKICAgICAgICBzZXF1ZW5jZSBvZiAiMCIgaW4gdGhlIGxpc3Qgd2l0aCAiIiBhbmQgYWRkaW5nIGVtcHR5IHN0cmluZ3MgYXQKICAgICAgICB0aGUgYmVnaW5uaW5nIG9yIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBzdWNoIHRoYXQgc3Vic2VxdWVudGx5CiAgICAgICAgY2FsbGluZyAiOiIuam9pbihoZXh0ZXRzKSB3aWxsIHByb2R1Y2UgdGhlIGNvbXByZXNzZWQgdmVyc2lvbiBvZgogICAgICAgIHRoZSBJUHY2IGFkZHJlc3MuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIGhleHRldHM6IEEgbGlzdCBvZiBzdHJpbmdzLCB0aGUgaGV4dGV0cyB0byBjb21wcmVzcy4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBsaXN0IG9mIHN0cmluZ3MuCgogICAgICAgICIiIgogICAgICAgIGJlc3RfZG91YmxlY29sb25fc3RhcnQgPSAtMQogICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuID0gMAogICAgICAgIGRvdWJsZWNvbG9uX3N0YXJ0ID0gLTEKICAgICAgICBkb3VibGVjb2xvbl9sZW4gPSAwCiAgICAgICAgZm9yIGluZGV4LCBoZXh0ZXQgaW4gZW51bWVyYXRlKGhleHRldHMpOgogICAgICAgICAgICBpZiBoZXh0ZXQgPT0gJzAnOgogICAgICAgICAgICAgICAgZG91YmxlY29sb25fbGVuICs9IDEKICAgICAgICAgICAgICAgIGlmIGRvdWJsZWNvbG9uX3N0YXJ0ID09IC0xOgogICAgICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgYSBzZXF1ZW5jZSBvZiB6ZXJvcy4KICAgICAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9zdGFydCA9IGluZGV4CiAgICAgICAgICAgICAgICBpZiBkb3VibGVjb2xvbl9sZW4gPiBiZXN0X2RvdWJsZWNvbG9uX2xlbjoKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgdGhlIGxvbmdlc3Qgc2VxdWVuY2Ugb2YgemVyb3Mgc28gZmFyLgogICAgICAgICAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuID0gZG91YmxlY29sb25fbGVuCiAgICAgICAgICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9zdGFydCA9IGRvdWJsZWNvbG9uX3N0YXJ0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9sZW4gPSAwCiAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9zdGFydCA9IC0xCgogICAgICAgIGlmIGJlc3RfZG91YmxlY29sb25fbGVuID4gMToKICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9lbmQgPSAoYmVzdF9kb3VibGVjb2xvbl9zdGFydCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuKQogICAgICAgICAgICAjIEZvciB6ZXJvcyBhdCB0aGUgZW5kIG9mIHRoZSBhZGRyZXNzLgogICAgICAgICAgICBpZiBiZXN0X2RvdWJsZWNvbG9uX2VuZCA9PSBsZW4oaGV4dGV0cyk6CiAgICAgICAgICAgICAgICBoZXh0ZXRzICs9IFsnJ10KICAgICAgICAgICAgaGV4dGV0c1tiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0OmJlc3RfZG91YmxlY29sb25fZW5kXSA9IFsnJ10KICAgICAgICAgICAgIyBGb3IgemVyb3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYWRkcmVzcy4KICAgICAgICAgICAgaWYgYmVzdF9kb3VibGVjb2xvbl9zdGFydCA9PSAwOgogICAgICAgICAgICAgICAgaGV4dGV0cyA9IFsnJ10gKyBoZXh0ZXRzCgogICAgICAgIHJldHVybiBoZXh0ZXRzCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChjbHMsIGlwX2ludD1Ob25lKToKICAgICAgICAiIiJUdXJucyBhIDEyOC1iaXQgaW50ZWdlciBpbnRvIGhleGFkZWNpbWFsIG5vdGF0aW9uLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBIHN0cmluZywgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhZGRyZXNzLgoKICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgIFZhbHVlRXJyb3I6IFRoZSBhZGRyZXNzIGlzIGJpZ2dlciB0aGFuIDEyOCBiaXRzIG9mIGFsbCBvbmVzLgoKICAgICAgICAiIiIKICAgICAgICBpZiBpcF9pbnQgaXMgTm9uZToKICAgICAgICAgICAgaXBfaW50ID0gaW50KGNscy5faXApCgogICAgICAgIGlmIGlwX2ludCA+IGNscy5fQUxMX09ORVM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0lQdjYgYWRkcmVzcyBpcyB0b28gbGFyZ2UnKQoKICAgICAgICBoZXhfc3RyID0gJyUwMzJ4JyAlIGlwX2ludAogICAgICAgIGhleHRldHMgPSBbJyV4JyAlIGludChoZXhfc3RyW3g6eCs0XSwgMTYpIGZvciB4IGluIHJhbmdlKDAsIDMyLCA0KV0KCiAgICAgICAgaGV4dGV0cyA9IGNscy5fY29tcHJlc3NfaGV4dGV0cyhoZXh0ZXRzKQogICAgICAgIHJldHVybiAnOicuam9pbihoZXh0ZXRzKQoKICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgogICAgICAgICIiIkV4cGFuZCBhIHNob3J0ZW5lZCBJUHY2IGFkZHJlc3MuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBJUHY2IGFkZHJlc3MuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgc3RyaW5nLCB0aGUgZXhwYW5kZWQgSVB2NiBhZGRyZXNzLgoKICAgICAgICAiIiIKICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIElQdjZOZXR3b3JrKToKICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYubmV0d29ya19hZGRyZXNzKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLCBJUHY2SW50ZXJmYWNlKToKICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYuaXApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYpCgogICAgICAgIGlwX2ludCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhpcF9zdHIpCiAgICAgICAgaGV4X3N0ciA9ICclMDMyeCcgJSBpcF9pbnQKICAgICAgICBwYXJ0cyA9IFtoZXhfc3RyW3g6eCs0XSBmb3IgeCBpbiByYW5nZSgwLCAzMiwgNCldCiAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCAoX0Jhc2VOZXR3b3JrLCBJUHY2SW50ZXJmYWNlKSk6CiAgICAgICAgICAgIHJldHVybiAnJXMvJWQnICUgKCc6Jy5qb2luKHBhcnRzKSwgc2VsZi5fcHJlZml4bGVuKQogICAgICAgIHJldHVybiAnOicuam9pbihwYXJ0cykKCiAgICBkZWYgX3JldmVyc2VfcG9pbnRlcihzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHJldmVyc2UgRE5TIHBvaW50ZXIgbmFtZSBmb3IgdGhlIElQdjYgYWRkcmVzcy4KCiAgICAgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBtZXRob2QgZGVzY3JpYmVkIGluIFJGQzM1OTYgMi41LgoKICAgICAgICAiIiIKICAgICAgICByZXZlcnNlX2NoYXJzID0gc2VsZi5leHBsb2RlZFs6Oi0xXS5yZXBsYWNlKCc6JywgJycpCiAgICAgICAgcmV0dXJuICcuJy5qb2luKHJldmVyc2VfY2hhcnMpICsgJy5pcDYuYXJwYScKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX3NwbGl0X3Njb3BlX2lkKGlwX3N0cik6CiAgICAgICAgIiIiSGVscGVyIGZ1bmN0aW9uIHRvIHBhcnNlIElQdjYgc3RyaW5nIGFkZHJlc3Mgd2l0aCBzY29wZSBpZC4KCiAgICAgICAgU2VlIFJGQyA0MDA3IGZvciBkZXRhaWxzLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgSVB2NiBhZGRyZXNzLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAoYWRkciwgc2NvcGVfaWQpIHR1cGxlLgoKICAgICAgICAiIiIKICAgICAgICBhZGRyLCBzZXAsIHNjb3BlX2lkID0gaXBfc3RyLnBhcnRpdGlvbignJScpCiAgICAgICAgaWYgbm90IHNlcDoKICAgICAgICAgICAgc2NvcGVfaWQgPSBOb25lCiAgICAgICAgZWxpZiBub3Qgc2NvcGVfaWQgb3IgJyUnIGluIHNjb3BlX2lkOgogICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcignSW52YWxpZCBJUHY2IGFkZHJlc3M6ICIlciInICUgaXBfc3RyKQogICAgICAgIHJldHVybiBhZGRyLCBzY29wZV9pZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX21heF9wcmVmaXhsZW4KCiAgICBAcHJvcGVydHkKICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCgoKY2xhc3MgSVB2NkFkZHJlc3MoX0Jhc2VWNiwgX0Jhc2VBZGRyZXNzKToKCiAgICAiIiJSZXByZXNlbnQgYW5kIG1hbmlwdWxhdGUgc2luZ2xlIElQdjYgQWRkcmVzc2VzLiIiIgoKICAgIF9fc2xvdHNfXyA9ICgnX2lwJywgJ19zY29wZV9pZCcsICdfX3dlYWtyZWZfXycpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgogICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjYgYWRkcmVzcyBvYmplY3QuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUAoKICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KICAgICAgICAgICAgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpID09CiAgICAgICAgICAgICAgICBJUHY2QWRkcmVzcyg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCkKICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKICAgICAgICAgICAgICBJUHY2QWRkcmVzcyhpbnQoSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKSkpID09CiAgICAgICAgICAgICAgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCgogICAgICAgIFJhaXNlczoKICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCgogICAgICAgICIiIgogICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CiAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCiAgICAgICAgICAgIHNlbGYuX2lwID0gYWRkcmVzcwogICAgICAgICAgICBzZWxmLl9zY29wZV9pZCA9IE5vbmUKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcwogICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgogICAgICAgICAgICBzZWxmLl9jaGVja19wYWNrZWRfYWRkcmVzcyhhZGRyZXNzLCAxNikKICAgICAgICAgICAgc2VsZi5faXAgPSBpbnQuZnJvbV9ieXRlcyhhZGRyZXNzLCAnYmlnJykKICAgICAgICAgICAgc2VsZi5fc2NvcGVfaWQgPSBOb25lCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgogICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCiAgICAgICAgYWRkcl9zdHIgPSBzdHIoYWRkcmVzcykKICAgICAgICBpZiAnLycgaW4gYWRkcl9zdHI6CiAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKGYiVW5leHBlY3RlZCAnLycgaW4ge2FkZHJlc3Mhcn0iKQogICAgICAgIGFkZHJfc3RyLCBzZWxmLl9zY29wZV9pZCA9IHNlbGYuX3NwbGl0X3Njb3BlX2lkKGFkZHJfc3RyKQoKICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICBpcF9zdHIgPSBzdXBlcigpLl9fc3RyX18oKQogICAgICAgIHJldHVybiBpcF9zdHIgKyAnJScgKyBzZWxmLl9zY29wZV9pZCBpZiBzZWxmLl9zY29wZV9pZCBlbHNlIGlwX3N0cgoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5faXAsIHNlbGYuX3Njb3BlX2lkKSkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBhZGRyZXNzX2VxdWFsID0gc3VwZXIoKS5fX2VxX18ob3RoZXIpCiAgICAgICAgaWYgYWRkcmVzc19lcXVhbCBpcyBOb3RJbXBsZW1lbnRlZDoKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgaWYgbm90IGFkZHJlc3NfZXF1YWw6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBzZWxmLl9zY29wZV9pZCA9PSBnZXRhdHRyKG90aGVyLCAnX3Njb3BlX2lkJywgTm9uZSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBzY29wZV9pZChzZWxmKToKICAgICAgICAiIiJJZGVudGlmaWVyIG9mIGEgcGFydGljdWxhciB6b25lIG9mIHRoZSBhZGRyZXNzJ3Mgc2NvcGUuCgogICAgICAgIFNlZSBSRkMgNDAwNyBmb3IgZGV0YWlscy4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHpvbmUgb2YgdGhlIGFkZHJlc3MgaWYgc3BlY2lmaWVkLCBlbHNlIE5vbmUuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zY29wZV9pZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBhY2tlZChzZWxmKToKICAgICAgICAiIiJUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgYWRkcmVzcy4iIiIKICAgICAgICByZXR1cm4gdjZfaW50X3RvX3BhY2tlZChzZWxmLl9pcCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpc19tdWx0aWNhc3Qoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbXVsdGljYXN0IGFkZHJlc3MuCiAgICAgICAgICAgIFNlZSBSRkMgMjM3MyAyLjcgZm9yIGRldGFpbHMuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbXVsdGljYXN0X25ldHdvcmsKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgd2l0aGluIG9uZSBvZiB0aGUKICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NiBOZXR3b3JrIHJhbmdlcy4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGFueShzZWxmIGluIHggZm9yIHggaW4gc2VsZi5fY29uc3RhbnRzLl9yZXNlcnZlZF9uZXR3b3JrcykKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgogICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQyOTEuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbGlua2xvY2FsX25ldHdvcmsKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpc19zaXRlX2xvY2FsKHNlbGYpOgogICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIHNpdGUtbG9jYWwuCgogICAgICAgIE5vdGUgdGhhdCB0aGUgc2l0ZS1sb2NhbCBhZGRyZXNzIHNwYWNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgUkZDIDM4NzkuCiAgICAgICAgVXNlIGlzX3ByaXZhdGUgdG8gdGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgaW4gdGhlIHNwYWNlIG9mIHVuaXF1ZSBsb2NhbAogICAgICAgIGFkZHJlc3NlcyBhcyBkZWZpbmVkIGJ5IFJGQyA0MTkzLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAzNTEzIDIuNS42LgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX3NpdGVsb2NhbF9uZXR3b3JrCgogICAgQHByb3BlcnR5CiAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCiAgICBkZWYgaXNfcHJpdmF0ZShzZWxmKToKICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIKICAgICAgICAgICAgaWFuYS1pcHY2LXNwZWNpYWwtcmVnaXN0cnksIG9yIGlzIGlwdjRfbWFwcGVkIGFuZCBpcwogICAgICAgICAgICByZXNlcnZlZCBpbiB0aGUgaWFuYS1pcHY0LXNwZWNpYWwtcmVnaXN0cnkuCgogICAgICAgICIiIgogICAgICAgIGlwdjRfbWFwcGVkID0gc2VsZi5pcHY0X21hcHBlZAogICAgICAgIGlmIGlwdjRfbWFwcGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gaXB2NF9tYXBwZWQuaXNfcHJpdmF0ZQogICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiBuZXQgZm9yIG5ldCBpbiBzZWxmLl9jb25zdGFudHMuX3ByaXZhdGVfbmV0d29ya3MpCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfZ2xvYmFsKHNlbGYpOgogICAgICAgICIiIlRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGFsbG9jYXRlZCBmb3IgcHVibGljIG5ldHdvcmtzLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBIGJvb2xlYW4sIHRydWUgaWYgdGhlIGFkZHJlc3MgaXMgbm90IHJlc2VydmVkIHBlcgogICAgICAgICAgICBpYW5hLWlwdjYtc3BlY2lhbC1yZWdpc3RyeS4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmlzX3ByaXZhdGUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBpcyB0aGUgdW5zcGVjaWZpZWQgYWRkcmVzcyBhcyBkZWZpbmVkIGluCiAgICAgICAgICAgIFJGQyAyMzczIDIuNS4yLgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgogICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzIGFzIGRlZmluZWQgaW4KICAgICAgICAgICAgUkZDIDIzNzMgMi41LjMuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAxCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXB2NF9tYXBwZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBJUHY0IG1hcHBlZCBhZGRyZXNzLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBJZiB0aGUgSVB2NiBhZGRyZXNzIGlzIGEgdjQgbWFwcGVkIGFkZHJlc3MsIHJldHVybiB0aGUKICAgICAgICAgICAgSVB2NCBtYXBwZWQgYWRkcmVzcy4gUmV0dXJuIE5vbmUgb3RoZXJ3aXNlLgoKICAgICAgICAiIiIKICAgICAgICBpZiAoc2VsZi5faXAgPj4gMzIpICE9IDB4RkZGRjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3Moc2VsZi5faXAgJiAweEZGRkZGRkZGKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHRlcmVkbyhzZWxmKToKICAgICAgICAiIiJUdXBsZSBvZiBlbWJlZGRlZCB0ZXJlZG8gSVBzLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBUdXBsZSBvZiB0aGUgKHNlcnZlciwgY2xpZW50KSBJUHMgb3IgTm9uZSBpZiB0aGUgYWRkcmVzcwogICAgICAgICAgICBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHRlcmVkbyBhZGRyZXNzIChkb2Vzbid0IHN0YXJ0IHdpdGgKICAgICAgICAgICAgMjAwMTo6LzMyKQoKICAgICAgICAiIiIKICAgICAgICBpZiAoc2VsZi5faXAgPj4gOTYpICE9IDB4MjAwMTAwMDA6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgcmV0dXJuIChJUHY0QWRkcmVzcygoc2VsZi5faXAgPj4gNjQpICYgMHhGRkZGRkZGRiksCiAgICAgICAgICAgICAgICBJUHY0QWRkcmVzcyh+c2VsZi5faXAgJiAweEZGRkZGRkZGKSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBzaXh0b2ZvdXIoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBJUHY0IDZ0bzQgZW1iZWRkZWQgYWRkcmVzcy4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgVGhlIElQdjQgNnRvNC1lbWJlZGRlZCBhZGRyZXNzIGlmIHByZXNlbnQgb3IgTm9uZSBpZiB0aGUKICAgICAgICAgICAgYWRkcmVzcyBkb2Vzbid0IGFwcGVhciB0byBjb250YWluIGEgNnRvNCBlbWJlZGRlZCBhZGRyZXNzLgoKICAgICAgICAiIiIKICAgICAgICBpZiAoc2VsZi5faXAgPj4gMTEyKSAhPSAweDIwMDI6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKChzZWxmLl9pcCA+PiA4MCkgJiAweEZGRkZGRkZGKQoKCmNsYXNzIElQdjZJbnRlcmZhY2UoSVB2NkFkZHJlc3MpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKICAgICAgICBhZGRyLCBtYXNrID0gc2VsZi5fc3BsaXRfYWRkcl9wcmVmaXgoYWRkcmVzcykKCiAgICAgICAgSVB2NkFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcikKICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yaygoYWRkciwgbWFzayksIHN0cmljdD1GYWxzZSkKICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzawogICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYubmV0d29yay5fcHJlZml4bGVuCgogICAgQGZ1bmN0b29scy5jYWNoZWRfcHJvcGVydHkKICAgIGRlZiBob3N0bWFzayhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrLmhvc3RtYXNrCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc3VwZXIoKS5fX3N0cl9fKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGFkZHJlc3NfZXF1YWwgPSBJUHY2QWRkcmVzcy5fX2VxX18oc2VsZiwgb3RoZXIpCiAgICAgICAgaWYgYWRkcmVzc19lcXVhbCBpcyBOb3RJbXBsZW1lbnRlZCBvciBub3QgYWRkcmVzc19lcXVhbDoKICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3NfZXF1YWwKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPT0gb3RoZXIubmV0d29yawogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIyBBbiBpbnRlcmZhY2Ugd2l0aCBhbiBhc3NvY2lhdGVkIG5ldHdvcmsgaXMgTk9UIHRoZQogICAgICAgICAgICAjIHNhbWUgYXMgYW4gdW5hc3NvY2lhdGVkIGFkZHJlc3MuIFRoYXQncyB3aHkgdGhlIGhhc2gKICAgICAgICAgICAgIyB0YWtlcyB0aGUgZXh0cmEgaW5mbyBpbnRvIGFjY291bnQuCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGFkZHJlc3NfbGVzcyA9IElQdjZBZGRyZXNzLl9fbHRfXyhzZWxmLCBvdGhlcikKICAgICAgICBpZiBhZGRyZXNzX2xlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CiAgICAgICAgICAgIHJldHVybiBhZGRyZXNzX2xlc3MKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrIDwgb3RoZXIubmV0d29yayBvcgogICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29yayA9PSBvdGhlci5uZXR3b3JrIGFuZCBhZGRyZXNzX2xlc3MpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIFdlICpkbyogYWxsb3cgYWRkcmVzc2VzIGFuZCBpbnRlcmZhY2VzIHRvIGJlIHNvcnRlZC4gVGhlCiAgICAgICAgICAgICMgdW5hc3NvY2lhdGVkIGFkZHJlc3MgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gYWxsIGludGVyZmFjZXMuCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5faXAsIHNlbGYuX3ByZWZpeGxlbiwgaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpKSkKCiAgICBfX3JlZHVjZV9fID0gX0lQQWRkcmVzc0Jhc2UuX19yZWR1Y2VfXwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlwKHNlbGYpOgogICAgICAgIHJldHVybiBJUHY2QWRkcmVzcyhzZWxmLl9pcCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiB3aXRoX3ByZWZpeGxlbihzZWxmKToKICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikKCiAgICBAcHJvcGVydHkKICAgIGRlZiB3aXRoX25ldG1hc2soc2VsZik6CiAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2spCgogICAgQHByb3BlcnR5CiAgICBkZWYgd2l0aF9ob3N0bWFzayhzZWxmKToKICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG9zdG1hc2spCgogICAgQHByb3BlcnR5CiAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDAgYW5kIHNlbGYubmV0d29yay5pc191bnNwZWNpZmllZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAxIGFuZCBzZWxmLm5ldHdvcmsuaXNfbG9vcGJhY2sKCgpjbGFzcyBJUHY2TmV0d29yayhfQmFzZVY2LCBfQmFzZU5ldHdvcmspOgoKICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbmQgbWFuaXB1bGF0ZXMgMTI4LWJpdCBJUHY2IG5ldHdvcmtzLgoKICAgIEF0dHJpYnV0ZXM6IFtleGFtcGxlcyBmb3IgSVB2NignMjAwMTpkYjg6OjEwMDAvMTI0JyldCiAgICAgICAgLm5ldHdvcmtfYWRkcmVzczogSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKICAgICAgICAuaG9zdG1hc2s6IElQdjZBZGRyZXNzKCc6OmYnKQogICAgICAgIC5icm9hZGNhc3RfYWRkcmVzczogSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDBmJykKICAgICAgICAubmV0bWFzazogSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmMCcpCiAgICAgICAgLnByZWZpeGxlbjogMTI0CgogICAgIiIiCgogICAgIyBDbGFzcyB0byB1c2Ugd2hlbiBjcmVhdGluZyBhZGRyZXNzIG9iamVjdHMKICAgIF9hZGRyZXNzX2NsYXNzID0gSVB2NkFkZHJlc3MKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgc3RyaWN0PVRydWUpOgogICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjYgTmV0d29yayBvYmplY3QuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUHY2IG5ldHdvcmsgb3IgdGhlCiAgICAgICAgICAgICAgSVAgYW5kIHByZWZpeC9uZXRtYXNrLgogICAgICAgICAgICAgICcyMDAxOmRiODo6LzEyOCcKICAgICAgICAgICAgICAnMjAwMTpkYjg6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAvMTI4JwogICAgICAgICAgICAgICcyMDAxOmRiODo6JwogICAgICAgICAgICAgIGFyZSBhbGwgZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGluIElQdjYuICBUaGF0IGlzIHRvIHNheSwKICAgICAgICAgICAgICBmYWlsaW5nIHRvIHByb3ZpZGUgYSBzdWJuZXRtYXNrIHdpbGwgY3JlYXRlIGFuIG9iamVjdCB3aXRoCiAgICAgICAgICAgICAgYSBtYXNrIG9mIC8xMjguCgogICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbwogICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6JykgPT0KICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwKQogICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQogICAgICAgICAgICAgIElQdjZOZXR3b3JrKGludChJUHY2TmV0d29yaygnMjAwMTpkYjg6OicpKSkgPT0KICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6JykKCiAgICAgICAgICAgIHN0cmljdDogQSBib29sZWFuLiBJZiB0cnVlLCBlbnN1cmUgdGhhdCB3ZSBoYXZlIGJlZW4gcGFzc2VkCiAgICAgICAgICAgICAgQSB0cnVlIG5ldHdvcmsgYWRkcmVzcywgZWcsIDIwMDE6ZGI4OjoxMDAwLzEyNCBhbmQgbm90IGFuCiAgICAgICAgICAgICAgSVAgYWRkcmVzcyBvbiBhIG5ldHdvcmssIGVnLCAyMDAxOmRiODo6MS8xMjQuCgogICAgICAgIFJhaXNlczoKICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCiAgICAgICAgICAgIE5ldG1hc2tWYWx1ZUVycm9yOiBJZiB0aGUgbmV0bWFzayBpc24ndCB2YWxpZCBmb3IKICAgICAgICAgICAgICBhbiBJUHY2IGFkZHJlc3MuCiAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHN0cmljdCB3YXMgVHJ1ZSBhbmQgYSBuZXR3b3JrIGFkZHJlc3Mgd2FzIG5vdAogICAgICAgICAgICAgIHN1cHBsaWVkLgogICAgICAgICIiIgogICAgICAgIGFkZHIsIG1hc2sgPSBzZWxmLl9zcGxpdF9hZGRyX3ByZWZpeChhZGRyZXNzKQoKICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGFkZHIpCiAgICAgICAgc2VsZi5uZXRtYXNrLCBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYWtlX25ldG1hc2sobWFzaykKICAgICAgICBwYWNrZWQgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCiAgICAgICAgaWYgcGFja2VkICYgaW50KHNlbGYubmV0bWFzaykgIT0gcGFja2VkOgogICAgICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhwYWNrZWQgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKCiAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IChzZWxmLl9tYXhfcHJlZml4bGVuIC0gMSk6CiAgICAgICAgICAgIHNlbGYuaG9zdHMgPSBzZWxmLl9faXRlcl9fCiAgICAgICAgZWxpZiBzZWxmLl9wcmVmaXhsZW4gPT0gc2VsZi5fbWF4X3ByZWZpeGxlbjoKICAgICAgICAgICAgc2VsZi5ob3N0cyA9IGxhbWJkYTogW0lQdjZBZGRyZXNzKGFkZHIpXQoKICAgIGRlZiBob3N0cyhzZWxmKToKICAgICAgICAiIiJHZW5lcmF0ZSBJdGVyYXRvciBvdmVyIHVzYWJsZSBob3N0cyBpbiBhIG5ldHdvcmsuCgogICAgICAgICAgVGhpcyBpcyBsaWtlIF9faXRlcl9fIGV4Y2VwdCBpdCBkb2Vzbid0IHJldHVybiB0aGUKICAgICAgICAgIFN1Ym5ldC1Sb3V0ZXIgYW55Y2FzdCBhZGRyZXNzLgoKICAgICAgICAiIiIKICAgICAgICBuZXR3b3JrID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQogICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQogICAgICAgIGZvciB4IGluIHJhbmdlKG5ldHdvcmsgKyAxLCBicm9hZGNhc3QgKyAxKToKICAgICAgICAgICAgeWllbGQgc2VsZi5fYWRkcmVzc19jbGFzcyh4KQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlzX3NpdGVfbG9jYWwoc2VsZik6CiAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3Igc2l0ZS1sb2NhbC4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSBzaXRlLWxvY2FsIGFkZHJlc3Mgc3BhY2UgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSBSRkMgMzg3OS4KICAgICAgICBVc2UgaXNfcHJpdmF0ZSB0byB0ZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBpbiB0aGUgc3BhY2Ugb2YgdW5pcXVlIGxvY2FsCiAgICAgICAgYWRkcmVzc2VzIGFzIGRlZmluZWQgYnkgUkZDIDQxOTMuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDM1MTMgMi41LjYuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfc2l0ZV9sb2NhbCBhbmQKICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfc2l0ZV9sb2NhbCkKCgpjbGFzcyBfSVB2NkNvbnN0YW50czoKCiAgICBfbGlua2xvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmU4MDo6LzEwJykKCiAgICBfbXVsdGljYXN0X25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmYwMDo6LzgnKQoKICAgIF9wcml2YXRlX25ldHdvcmtzID0gWwogICAgICAgIElQdjZOZXR3b3JrKCc6OjEvMTI4JyksCiAgICAgICAgSVB2Nk5ldHdvcmsoJzo6LzEyOCcpLAogICAgICAgIElQdjZOZXR3b3JrKCc6OmZmZmY6MDowLzk2JyksCiAgICAgICAgSVB2Nk5ldHdvcmsoJzEwMDo6LzY0JyksCiAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6Oi8yMycpLAogICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOjI6Oi80OCcpLAogICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzMyJyksCiAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6MTA6Oi8yOCcpLAogICAgICAgIElQdjZOZXR3b3JrKCdmYzAwOjovNycpLAogICAgICAgIElQdjZOZXR3b3JrKCdmZTgwOjovMTAnKSwKICAgICAgICBdCgogICAgX3Jlc2VydmVkX25ldHdvcmtzID0gWwogICAgICAgIElQdjZOZXR3b3JrKCc6Oi84JyksIElQdjZOZXR3b3JrKCcxMDA6Oi84JyksCiAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDo6LzcnKSwgSVB2Nk5ldHdvcmsoJzQwMDo6LzYnKSwKICAgICAgICBJUHY2TmV0d29yaygnODAwOjovNScpLCBJUHY2TmV0d29yaygnMTAwMDo6LzQnKSwKICAgICAgICBJUHY2TmV0d29yaygnNDAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJzYwMDA6Oi8zJyksCiAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdBMDAwOjovMycpLAogICAgICAgIElQdjZOZXR3b3JrKCdDMDAwOjovMycpLCBJUHY2TmV0d29yaygnRTAwMDo6LzQnKSwKICAgICAgICBJUHY2TmV0d29yaygnRjAwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJ0Y4MDA6Oi82JyksCiAgICAgICAgSVB2Nk5ldHdvcmsoJ0ZFMDA6Oi85JyksCiAgICBdCgogICAgX3NpdGVsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlYzA6Oi8xMCcpCgoKSVB2NkFkZHJlc3MuX2NvbnN0YW50cyA9IF9JUHY2Q29uc3RhbnRzCklQdjZOZXR3b3JrLl9jb25zdGFudHMgPSBfSVB2NkNvbnN0YW50cwpQSwMEFAAAAAAAAiCjVvqEH3olBAAAJQQAAAoAAABrZXl3b3JkLnB5IiIiS2V5d29yZHMgKGZyb20gIkdyYW1tYXIvcHl0aG9uLmdyYW0iKQoKVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkOyBwbGVhc2UgZG9uJ3QgbXVjayBpdCB1cCEKClRvIHVwZGF0ZSB0aGUgc3ltYm9scyBpbiB0aGlzIGZpbGUsICdjZCcgdG8gdGhlIHRvcCBkaXJlY3Rvcnkgb2YKdGhlIHB5dGhvbiBzb3VyY2UgdHJlZSBhbmQgcnVuOgoKICAgIFBZVEhPTlBBVEg9VG9vbHMvcGVnX2dlbmVyYXRvciBweXRob24zIC1tIHBlZ2VuLmtleXdvcmRnZW4gXAogICAgICAgIEdyYW1tYXIvcHl0aG9uLmdyYW0gXAogICAgICAgIEdyYW1tYXIvVG9rZW5zIFwKICAgICAgICBMaWIva2V5d29yZC5weQoKQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBydW4gJ21ha2UgcmVnZW4ta2V5d29yZCcuCiIiIgoKX19hbGxfXyA9IFsiaXNrZXl3b3JkIiwgImlzc29mdGtleXdvcmQiLCAia3dsaXN0IiwgInNvZnRrd2xpc3QiXQoKa3dsaXN0ID0gWwogICAgJ0ZhbHNlJywKICAgICdOb25lJywKICAgICdUcnVlJywKICAgICdhbmQnLAogICAgJ2FzJywKICAgICdhc3NlcnQnLAogICAgJ2FzeW5jJywKICAgICdhd2FpdCcsCiAgICAnYnJlYWsnLAogICAgJ2NsYXNzJywKICAgICdjb250aW51ZScsCiAgICAnZGVmJywKICAgICdkZWwnLAogICAgJ2VsaWYnLAogICAgJ2Vsc2UnLAogICAgJ2V4Y2VwdCcsCiAgICAnZmluYWxseScsCiAgICAnZm9yJywKICAgICdmcm9tJywKICAgICdnbG9iYWwnLAogICAgJ2lmJywKICAgICdpbXBvcnQnLAogICAgJ2luJywKICAgICdpcycsCiAgICAnbGFtYmRhJywKICAgICdub25sb2NhbCcsCiAgICAnbm90JywKICAgICdvcicsCiAgICAncGFzcycsCiAgICAncmFpc2UnLAogICAgJ3JldHVybicsCiAgICAndHJ5JywKICAgICd3aGlsZScsCiAgICAnd2l0aCcsCiAgICAneWllbGQnCl0KCnNvZnRrd2xpc3QgPSBbCiAgICAnXycsCiAgICAnY2FzZScsCiAgICAnbWF0Y2gnCl0KCmlza2V5d29yZCA9IGZyb3plbnNldChrd2xpc3QpLl9fY29udGFpbnNfXwppc3NvZnRrZXl3b3JkID0gZnJvemVuc2V0KHNvZnRrd2xpc3QpLl9fY29udGFpbnNfXwpQSwMEFAAAAAAAAiCjViW35Vw6FgAAOhYAAAwAAABsaW5lY2FjaGUucHkiIiJDYWNoZSBsaW5lcyBmcm9tIFB5dGhvbiBzb3VyY2UgZmlsZXMuCgpUaGlzIGlzIGludGVuZGVkIHRvIHJlYWQgbGluZXMgZnJvbSBtb2R1bGVzIGltcG9ydGVkIC0tIGhlbmNlIGlmIGEgZmlsZW5hbWUKaXMgbm90IGZvdW5kLCBpdCB3aWxsIGxvb2sgZG93biB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoIGZvciBhIGZpbGUgYnkKdGhhdCBuYW1lLgoiIiIKCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IHN5cwppbXBvcnQgb3MKaW1wb3J0IHRva2VuaXplCgpfX2FsbF9fID0gWyJnZXRsaW5lIiwgImNsZWFyY2FjaGUiLCAiY2hlY2tjYWNoZSIsICJsYXp5Y2FjaGUiXQoKCiMgVGhlIGNhY2hlLiBNYXBzIGZpbGVuYW1lcyB0byBlaXRoZXIgYSB0aHVuayB3aGljaCB3aWxsIHByb3ZpZGUgc291cmNlIGNvZGUsCiMgb3IgYSB0dXBsZSAoc2l6ZSwgbXRpbWUsIGxpbmVzLCBmdWxsbmFtZSkgb25jZSBsb2FkZWQuCmNhY2hlID0ge30KCgpkZWYgY2xlYXJjYWNoZSgpOgogICAgIiIiQ2xlYXIgdGhlIGNhY2hlIGVudGlyZWx5LiIiIgogICAgY2FjaGUuY2xlYXIoKQoKCmRlZiBnZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZV9nbG9iYWxzPU5vbmUpOgogICAgIiIiR2V0IGEgbGluZSBmb3IgYSBQeXRob24gc291cmNlIGZpbGUgZnJvbSB0aGUgY2FjaGUuCiAgICBVcGRhdGUgdGhlIGNhY2hlIGlmIGl0IGRvZXNuJ3QgY29udGFpbiBhbiBlbnRyeSBmb3IgdGhpcyBmaWxlIGFscmVhZHkuIiIiCgogICAgbGluZXMgPSBnZXRsaW5lcyhmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpCiAgICBpZiAxIDw9IGxpbmVubyA8PSBsZW4obGluZXMpOgogICAgICAgIHJldHVybiBsaW5lc1tsaW5lbm8gLSAxXQogICAgcmV0dXJuICcnCgoKZGVmIGdldGxpbmVzKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKICAgICIiIkdldCB0aGUgbGluZXMgZm9yIGEgUHl0aG9uIHNvdXJjZSBmaWxlIGZyb20gdGhlIGNhY2hlLgogICAgVXBkYXRlIHRoZSBjYWNoZSBpZiBpdCBkb2Vzbid0IGNvbnRhaW4gYW4gZW50cnkgZm9yIHRoaXMgZmlsZSBhbHJlYWR5LiIiIgoKICAgIGlmIGZpbGVuYW1lIGluIGNhY2hlOgogICAgICAgIGVudHJ5ID0gY2FjaGVbZmlsZW5hbWVdCiAgICAgICAgaWYgbGVuKGVudHJ5KSAhPSAxOgogICAgICAgICAgICByZXR1cm4gY2FjaGVbZmlsZW5hbWVdWzJdCgogICAgdHJ5OgogICAgICAgIHJldHVybiB1cGRhdGVjYWNoZShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpCiAgICBleGNlcHQgTWVtb3J5RXJyb3I6CiAgICAgICAgY2xlYXJjYWNoZSgpCiAgICAgICAgcmV0dXJuIFtdCgoKZGVmIGNoZWNrY2FjaGUoZmlsZW5hbWU9Tm9uZSk6CiAgICAiIiJEaXNjYXJkIGNhY2hlIGVudHJpZXMgdGhhdCBhcmUgb3V0IG9mIGRhdGUuCiAgICAoVGhpcyBpcyBub3QgY2hlY2tlZCB1cG9uIGVhY2ggY2FsbCEpIiIiCgogICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICBmaWxlbmFtZXMgPSBsaXN0KGNhY2hlLmtleXMoKSkKICAgIGVsaWYgZmlsZW5hbWUgaW4gY2FjaGU6CiAgICAgICAgZmlsZW5hbWVzID0gW2ZpbGVuYW1lXQogICAgZWxzZToKICAgICAgICByZXR1cm4KCiAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgogICAgICAgIGVudHJ5ID0gY2FjaGVbZmlsZW5hbWVdCiAgICAgICAgaWYgbGVuKGVudHJ5KSA9PSAxOgogICAgICAgICAgICAjIGxhenkgY2FjaGUgZW50cnksIGxlYXZlIGl0IGxhenkuCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgc2l6ZSwgbXRpbWUsIGxpbmVzLCBmdWxsbmFtZSA9IGVudHJ5CiAgICAgICAgaWYgbXRpbWUgaXMgTm9uZToKICAgICAgICAgICAgY29udGludWUgICAjIG5vLW9wIGZvciBmaWxlcyBsb2FkZWQgdmlhIGEgX19sb2FkZXJfXwogICAgICAgIHRyeToKICAgICAgICAgICAgc3RhdCA9IG9zLnN0YXQoZnVsbG5hbWUpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIGNhY2hlLnBvcChmaWxlbmFtZSwgTm9uZSkKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBzaXplICE9IHN0YXQuc3Rfc2l6ZSBvciBtdGltZSAhPSBzdGF0LnN0X210aW1lOgogICAgICAgICAgICBjYWNoZS5wb3AoZmlsZW5hbWUsIE5vbmUpCgoKZGVmIHVwZGF0ZWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKICAgICIiIlVwZGF0ZSBhIGNhY2hlIGVudHJ5IGFuZCByZXR1cm4gaXRzIGxpc3Qgb2YgbGluZXMuCiAgICBJZiBzb21ldGhpbmcncyB3cm9uZywgcHJpbnQgYSBtZXNzYWdlLCBkaXNjYXJkIHRoZSBjYWNoZSBlbnRyeSwKICAgIGFuZCByZXR1cm4gYW4gZW1wdHkgbGlzdC4iIiIKCiAgICBpZiBmaWxlbmFtZSBpbiBjYWNoZToKICAgICAgICBpZiBsZW4oY2FjaGVbZmlsZW5hbWVdKSAhPSAxOgogICAgICAgICAgICBjYWNoZS5wb3AoZmlsZW5hbWUsIE5vbmUpCiAgICBpZiBub3QgZmlsZW5hbWUgb3IgKGZpbGVuYW1lLnN0YXJ0c3dpdGgoJzwnKSBhbmQgZmlsZW5hbWUuZW5kc3dpdGgoJz4nKSk6CiAgICAgICAgcmV0dXJuIFtdCgogICAgZnVsbG5hbWUgPSBmaWxlbmFtZQogICAgdHJ5OgogICAgICAgIHN0YXQgPSBvcy5zdGF0KGZ1bGxuYW1lKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgYmFzZW5hbWUgPSBmaWxlbmFtZQoKICAgICAgICAjIFJlYWxpc2UgYSBsYXp5IGxvYWRlciBiYXNlZCBsb29rdXAgaWYgdGhlcmUgaXMgb25lCiAgICAgICAgIyBvdGhlcndpc2UgdHJ5IHRvIGxvb2t1cCByaWdodCBub3cuCiAgICAgICAgaWYgbGF6eWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscyk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGRhdGEgPSBjYWNoZVtmaWxlbmFtZV1bMF0oKQogICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAjIE5vIGx1Y2ssIHRoZSBQRVAzMDIgbG9hZGVyIGNhbm5vdCBmaW5kIHRoZSBzb3VyY2UKICAgICAgICAgICAgICAgICAgICAjIGZvciB0aGlzIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9ICgKICAgICAgICAgICAgICAgICAgICBsZW4oZGF0YSksCiAgICAgICAgICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgICAgICAgICBbbGluZSArICdcbicgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKCldLAogICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbZmlsZW5hbWVdWzJdCgogICAgICAgICMgVHJ5IGxvb2tpbmcgdGhyb3VnaCB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoLCB3aGljaCBpcyBvbmx5IHVzZWZ1bAogICAgICAgICMgd2hlbiBoYW5kbGluZyBhIHJlbGF0aXZlIGZpbGVuYW1lLgogICAgICAgIGlmIG9zLnBhdGguaXNhYnMoZmlsZW5hbWUpOgogICAgICAgICAgICByZXR1cm4gW10KCiAgICAgICAgZm9yIGRpcm5hbWUgaW4gc3lzLnBhdGg6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGJhc2VuYW1lKQogICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgICAgICAgICAgIyBOb3Qgc3VmZmljaWVudGx5IHN0cmluZy1saWtlIHRvIGRvIGFueXRoaW5nIHVzZWZ1bCB3aXRoLgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc3RhdCA9IG9zLnN0YXQoZnVsbG5hbWUpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gW10KICAgIHRyeToKICAgICAgICB3aXRoIHRva2VuaXplLm9wZW4oZnVsbG5hbWUpIGFzIGZwOgogICAgICAgICAgICBsaW5lcyA9IGZwLnJlYWRsaW5lcygpCiAgICBleGNlcHQgKE9TRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciwgU3ludGF4RXJyb3IpOgogICAgICAgIHJldHVybiBbXQogICAgaWYgbGluZXMgYW5kIG5vdCBsaW5lc1stMV0uZW5kc3dpdGgoJ1xuJyk6CiAgICAgICAgbGluZXNbLTFdICs9ICdcbicKICAgIHNpemUsIG10aW1lID0gc3RhdC5zdF9zaXplLCBzdGF0LnN0X210aW1lCiAgICBjYWNoZVtmaWxlbmFtZV0gPSBzaXplLCBtdGltZSwgbGluZXMsIGZ1bGxuYW1lCiAgICByZXR1cm4gbGluZXMKCgpkZWYgbGF6eWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscyk6CiAgICAiIiJTZWVkIHRoZSBjYWNoZSBmb3IgZmlsZW5hbWUgd2l0aCBtb2R1bGVfZ2xvYmFscy4KCiAgICBUaGUgbW9kdWxlIGxvYWRlciB3aWxsIGJlIGFza2VkIGZvciB0aGUgc291cmNlIG9ubHkgd2hlbiBnZXRsaW5lcyBpcwogICAgY2FsbGVkLCBub3QgaW1tZWRpYXRlbHkuCgogICAgSWYgdGhlcmUgaXMgYW4gZW50cnkgaW4gdGhlIGNhY2hlIGFscmVhZHksIGl0IGlzIG5vdCBhbHRlcmVkLgoKICAgIDpyZXR1cm46IFRydWUgaWYgYSBsYXp5IGxvYWQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgY2FjaGUsCiAgICAgICAgb3RoZXJ3aXNlIEZhbHNlLiBUbyByZWdpc3RlciBzdWNoIGEgbG9hZCBhIG1vZHVsZSBsb2FkZXIgd2l0aCBhCiAgICAgICAgZ2V0X3NvdXJjZSBtZXRob2QgbXVzdCBiZSBmb3VuZCwgdGhlIGZpbGVuYW1lIG11c3QgYmUgYSBjYWNoZWFibGUKICAgICAgICBmaWxlbmFtZSwgYW5kIHRoZSBmaWxlbmFtZSBtdXN0IG5vdCBiZSBhbHJlYWR5IGNhY2hlZC4KICAgICIiIgogICAgaWYgZmlsZW5hbWUgaW4gY2FjaGU6CiAgICAgICAgaWYgbGVuKGNhY2hlW2ZpbGVuYW1lXSkgPT0gMToKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIG5vdCBmaWxlbmFtZSBvciAoZmlsZW5hbWUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlbmFtZS5lbmRzd2l0aCgnPicpKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgICMgVHJ5IGZvciBhIF9fbG9hZGVyX18sIGlmIGF2YWlsYWJsZQogICAgaWYgbW9kdWxlX2dsb2JhbHMgYW5kICdfX25hbWVfXycgaW4gbW9kdWxlX2dsb2JhbHM6CiAgICAgICAgbmFtZSA9IG1vZHVsZV9nbG9iYWxzWydfX25hbWVfXyddCiAgICAgICAgaWYgKGxvYWRlciA6PSBtb2R1bGVfZ2xvYmFscy5nZXQoJ19fbG9hZGVyX18nKSkgaXMgTm9uZToKICAgICAgICAgICAgaWYgc3BlYyA6PSBtb2R1bGVfZ2xvYmFscy5nZXQoJ19fc3BlY19fJyk6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgbG9hZGVyID0gc3BlYy5sb2FkZXIKICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgZ2V0X3NvdXJjZSA9IGdldGF0dHIobG9hZGVyLCAnZ2V0X3NvdXJjZScsIE5vbmUpCgogICAgICAgIGlmIG5hbWUgYW5kIGdldF9zb3VyY2U6CiAgICAgICAgICAgIGdldF9saW5lcyA9IGZ1bmN0b29scy5wYXJ0aWFsKGdldF9zb3VyY2UsIG5hbWUpCiAgICAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9IChnZXRfbGluZXMsKQogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgcmV0dXJuIEZhbHNlClBLAwQUAAAAAAACIKNWVECIgZY0AQCWNAEACQAAAGxvY2FsZS5weSIiIkxvY2FsZSBzdXBwb3J0IG1vZHVsZS4KClRoZSBtb2R1bGUgcHJvdmlkZXMgbG93LWxldmVsIGFjY2VzcyB0byB0aGUgQyBsaWIncyBsb2NhbGUgQVBJcyBhbmQgYWRkcyBoaWdoCmxldmVsIG51bWJlciBmb3JtYXR0aW5nIEFQSXMgYXMgd2VsbCBhcyBhIGxvY2FsZSBhbGlhc2luZyBlbmdpbmUgdG8gY29tcGxlbWVudAp0aGVzZS4KClRoZSBhbGlhc2luZyBlbmdpbmUgaW5jbHVkZXMgc3VwcG9ydCBmb3IgbWFueSBjb21tb25seSB1c2VkIGxvY2FsZSBuYW1lcyBhbmQKbWFwcyB0aGVtIHRvIHZhbHVlcyBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byB0aGUgQyBsaWIncyBzZXRsb2NhbGUoKSBmdW5jdGlvbi4gSXQKYWxzbyBpbmNsdWRlcyBkZWZhdWx0IGVuY29kaW5ncyBmb3IgYWxsIHN1cHBvcnRlZCBsb2NhbGUgbmFtZXMuCgoiIiIKCmltcG9ydCBzeXMKaW1wb3J0IGVuY29kaW5ncwppbXBvcnQgZW5jb2RpbmdzLmFsaWFzZXMKaW1wb3J0IHJlCmltcG9ydCBfY29sbGVjdGlvbnNfYWJjCmZyb20gYnVpbHRpbnMgaW1wb3J0IHN0ciBhcyBfYnVpbHRpbl9zdHIKaW1wb3J0IGZ1bmN0b29scwoKIyBUcnkgaW1wb3J0aW5nIHRoZSBfbG9jYWxlIG1vZHVsZS4KIwojIElmIHRoaXMgZmFpbHMsIGZhbGwgYmFjayBvbiBhIGJhc2ljICdDJyBsb2NhbGUgZW11bGF0aW9uLgoKIyBZdWNrOiAgTENfTUVTU0FHRVMgaXMgbm9uLXN0YW5kYXJkOiAgY2FuJ3QgdGVsbCB3aGV0aGVyIGl0IGV4aXN0cyBiZWZvcmUKIyB0cnlpbmcgdGhlIGltcG9ydC4gIFNvIF9fYWxsX18gaXMgYWxzbyBmaWRkbGVkIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuCl9fYWxsX18gPSBbImdldGxvY2FsZSIsICJnZXRkZWZhdWx0bG9jYWxlIiwgImdldHByZWZlcnJlZGVuY29kaW5nIiwgIkVycm9yIiwKICAgICAgICAgICAic2V0bG9jYWxlIiwgInJlc2V0bG9jYWxlIiwgImxvY2FsZWNvbnYiLCAic3RyY29sbCIsICJzdHJ4ZnJtIiwKICAgICAgICAgICAic3RyIiwgImF0b2YiLCAiYXRvaSIsICJmb3JtYXQiLCAiZm9ybWF0X3N0cmluZyIsICJjdXJyZW5jeSIsCiAgICAgICAgICAgIm5vcm1hbGl6ZSIsICJMQ19DVFlQRSIsICJMQ19DT0xMQVRFIiwgIkxDX1RJTUUiLCAiTENfTU9ORVRBUlkiLAogICAgICAgICAgICJMQ19OVU1FUklDIiwgIkxDX0FMTCIsICJDSEFSX01BWCIsICJnZXRlbmNvZGluZyJdCgpkZWYgX3N0cmNvbGwoYSxiKToKICAgICIiIiBzdHJjb2xsKHN0cmluZyxzdHJpbmcpIC0+IGludC4KICAgICAgICBDb21wYXJlcyB0d28gc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZS4KICAgICIiIgogICAgcmV0dXJuIChhID4gYikgLSAoYSA8IGIpCgpkZWYgX3N0cnhmcm0ocyk6CiAgICAiIiIgc3RyeGZybShzdHJpbmcpIC0+IHN0cmluZy4KICAgICAgICBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgYmVoYXZlcyBmb3IgY21wIGxvY2FsZS1hd2FyZS4KICAgICIiIgogICAgcmV0dXJuIHMKCnRyeToKCiAgICBmcm9tIF9sb2NhbGUgaW1wb3J0ICoKCmV4Y2VwdCBJbXBvcnRFcnJvcjoKCiAgICAjIExvY2FsZSBlbXVsYXRpb24KCiAgICBDSEFSX01BWCA9IDEyNwogICAgTENfQUxMID0gNgogICAgTENfQ09MTEFURSA9IDMKICAgIExDX0NUWVBFID0gMAogICAgTENfTUVTU0FHRVMgPSA1CiAgICBMQ19NT05FVEFSWSA9IDQKICAgIExDX05VTUVSSUMgPSAxCiAgICBMQ19USU1FID0gMgogICAgRXJyb3IgPSBWYWx1ZUVycm9yCgogICAgZGVmIGxvY2FsZWNvbnYoKToKICAgICAgICAiIiIgbG9jYWxlY29udigpIC0+IGRpY3QuCiAgICAgICAgICAgIFJldHVybnMgbnVtZXJpYyBhbmQgbW9uZXRhcnkgbG9jYWxlLXNwZWNpZmljIHBhcmFtZXRlcnMuCiAgICAgICAgIiIiCiAgICAgICAgIyAnQycgbG9jYWxlIGRlZmF1bHQgdmFsdWVzCiAgICAgICAgcmV0dXJuIHsnZ3JvdXBpbmcnOiBbMTI3XSwKICAgICAgICAgICAgICAgICdjdXJyZW5jeV9zeW1ib2wnOiAnJywKICAgICAgICAgICAgICAgICduX3NpZ25fcG9zbic6IDEyNywKICAgICAgICAgICAgICAgICdwX2NzX3ByZWNlZGVzJzogMTI3LAogICAgICAgICAgICAgICAgJ25fY3NfcHJlY2VkZXMnOiAxMjcsCiAgICAgICAgICAgICAgICAnbW9uX2dyb3VwaW5nJzogW10sCiAgICAgICAgICAgICAgICAnbl9zZXBfYnlfc3BhY2UnOiAxMjcsCiAgICAgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCc6ICcuJywKICAgICAgICAgICAgICAgICduZWdhdGl2ZV9zaWduJzogJycsCiAgICAgICAgICAgICAgICAncG9zaXRpdmVfc2lnbic6ICcnLAogICAgICAgICAgICAgICAgJ3Bfc2VwX2J5X3NwYWNlJzogMTI3LAogICAgICAgICAgICAgICAgJ2ludF9jdXJyX3N5bWJvbCc6ICcnLAogICAgICAgICAgICAgICAgJ3Bfc2lnbl9wb3NuJzogMTI3LAogICAgICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnOiAnJywKICAgICAgICAgICAgICAgICdtb25fdGhvdXNhbmRzX3NlcCc6ICcnLAogICAgICAgICAgICAgICAgJ2ZyYWNfZGlnaXRzJzogMTI3LAogICAgICAgICAgICAgICAgJ21vbl9kZWNpbWFsX3BvaW50JzogJycsCiAgICAgICAgICAgICAgICAnaW50X2ZyYWNfZGlnaXRzJzogMTI3fQoKICAgIGRlZiBzZXRsb2NhbGUoY2F0ZWdvcnksIHZhbHVlPU5vbmUpOgogICAgICAgICIiIiBzZXRsb2NhbGUoaW50ZWdlcixzdHJpbmc9Tm9uZSkgLT4gc3RyaW5nLgogICAgICAgICAgICBBY3RpdmF0ZXMvcXVlcmllcyBsb2NhbGUgcHJvY2Vzc2luZy4KICAgICAgICAiIiIKICAgICAgICBpZiB2YWx1ZSBub3QgaW4gKE5vbmUsICcnLCAnQycpOgogICAgICAgICAgICByYWlzZSBFcnJvcignX2xvY2FsZSBlbXVsYXRpb24gb25seSBzdXBwb3J0cyAiQyIgbG9jYWxlJykKICAgICAgICByZXR1cm4gJ0MnCgojIFRoZXNlIG1heSBvciBtYXkgbm90IGV4aXN0IGluIF9sb2NhbGUsIHNvIGJlIHN1cmUgdG8gc2V0IHRoZW0uCmlmICdzdHJ4ZnJtJyBub3QgaW4gZ2xvYmFscygpOgogICAgc3RyeGZybSA9IF9zdHJ4ZnJtCmlmICdzdHJjb2xsJyBub3QgaW4gZ2xvYmFscygpOgogICAgc3RyY29sbCA9IF9zdHJjb2xsCgoKX2xvY2FsZWNvbnYgPSBsb2NhbGVjb252CgojIFdpdGggdGhpcyBkaWN0LCB5b3UgY2FuIG92ZXJyaWRlIHNvbWUgaXRlbXMgb2YgbG9jYWxlY29udidzIHJldHVybiB2YWx1ZS4KIyBUaGlzIGlzIHVzZWZ1bCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KX292ZXJyaWRlX2xvY2FsZWNvbnYgPSB7fQoKQGZ1bmN0b29scy53cmFwcyhfbG9jYWxlY29udikKZGVmIGxvY2FsZWNvbnYoKToKICAgIGQgPSBfbG9jYWxlY29udigpCiAgICBpZiBfb3ZlcnJpZGVfbG9jYWxlY29udjoKICAgICAgICBkLnVwZGF0ZShfb3ZlcnJpZGVfbG9jYWxlY29udikKICAgIHJldHVybiBkCgoKIyMjIE51bWJlciBmb3JtYXR0aW5nIEFQSXMKCiMgQXV0aG9yOiBNYXJ0aW4gdm9uIExvZXdpcwojIGltcHJvdmVkIGJ5IEdlb3JnIEJyYW5kbAoKIyBJdGVyYXRlIG92ZXIgZ3JvdXBpbmcgaW50ZXJ2YWxzCmRlZiBfZ3JvdXBpbmdfaW50ZXJ2YWxzKGdyb3VwaW5nKToKICAgIGxhc3RfaW50ZXJ2YWwgPSBOb25lCiAgICBmb3IgaW50ZXJ2YWwgaW4gZ3JvdXBpbmc6CiAgICAgICAgIyBpZiBncm91cGluZyBpcyAtMSwgd2UgYXJlIGRvbmUKICAgICAgICBpZiBpbnRlcnZhbCA9PSBDSEFSX01BWDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIyAwOiByZS11c2UgbGFzdCBncm91cCBhZCBpbmZpbml0dW0KICAgICAgICBpZiBpbnRlcnZhbCA9PSAwOgogICAgICAgICAgICBpZiBsYXN0X2ludGVydmFsIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGdyb3VwaW5nIikKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIHlpZWxkIGxhc3RfaW50ZXJ2YWwKICAgICAgICB5aWVsZCBpbnRlcnZhbAogICAgICAgIGxhc3RfaW50ZXJ2YWwgPSBpbnRlcnZhbAoKI3BlcmZvcm0gdGhlIGdyb3VwaW5nIGZyb20gcmlnaHQgdG8gbGVmdApkZWYgX2dyb3VwKHMsIG1vbmV0YXJ5PUZhbHNlKToKICAgIGNvbnYgPSBsb2NhbGVjb252KCkKICAgIHRob3VzYW5kc19zZXAgPSBjb252W21vbmV0YXJ5IGFuZCAnbW9uX3Rob3VzYW5kc19zZXAnIG9yICd0aG91c2FuZHNfc2VwJ10KICAgIGdyb3VwaW5nID0gY29udlttb25ldGFyeSBhbmQgJ21vbl9ncm91cGluZycgb3IgJ2dyb3VwaW5nJ10KICAgIGlmIG5vdCBncm91cGluZzoKICAgICAgICByZXR1cm4gKHMsIDApCiAgICBpZiBzWy0xXSA9PSAnICc6CiAgICAgICAgc3RyaXBwZWQgPSBzLnJzdHJpcCgpCiAgICAgICAgcmlnaHRfc3BhY2VzID0gc1tsZW4oc3RyaXBwZWQpOl0KICAgICAgICBzID0gc3RyaXBwZWQKICAgIGVsc2U6CiAgICAgICAgcmlnaHRfc3BhY2VzID0gJycKICAgIGxlZnRfc3BhY2VzID0gJycKICAgIGdyb3VwcyA9IFtdCiAgICBmb3IgaW50ZXJ2YWwgaW4gX2dyb3VwaW5nX2ludGVydmFscyhncm91cGluZyk6CiAgICAgICAgaWYgbm90IHMgb3Igc1stMV0gbm90IGluICIwMTIzNDU2Nzg5IjoKICAgICAgICAgICAgIyBvbmx5IG5vbi1kaWdpdCBjaGFyYWN0ZXJzIHJlbWFpbiAoc2lnbiwgc3BhY2VzKQogICAgICAgICAgICBsZWZ0X3NwYWNlcyA9IHMKICAgICAgICAgICAgcyA9ICcnCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZ3JvdXBzLmFwcGVuZChzWy1pbnRlcnZhbDpdKQogICAgICAgIHMgPSBzWzotaW50ZXJ2YWxdCiAgICBpZiBzOgogICAgICAgIGdyb3Vwcy5hcHBlbmQocykKICAgIGdyb3Vwcy5yZXZlcnNlKCkKICAgIHJldHVybiAoCiAgICAgICAgbGVmdF9zcGFjZXMgKyB0aG91c2FuZHNfc2VwLmpvaW4oZ3JvdXBzKSArIHJpZ2h0X3NwYWNlcywKICAgICAgICBsZW4odGhvdXNhbmRzX3NlcCkgKiAobGVuKGdyb3VwcykgLSAxKQogICAgKQoKIyBTdHJpcCBhIGdpdmVuIGFtb3VudCBvZiBleGNlc3MgcGFkZGluZyBmcm9tIHRoZSBnaXZlbiBzdHJpbmcKZGVmIF9zdHJpcF9wYWRkaW5nKHMsIGFtb3VudCk6CiAgICBscG9zID0gMAogICAgd2hpbGUgYW1vdW50IGFuZCBzW2xwb3NdID09ICcgJzoKICAgICAgICBscG9zICs9IDEKICAgICAgICBhbW91bnQgLT0gMQogICAgcnBvcyA9IGxlbihzKSAtIDEKICAgIHdoaWxlIGFtb3VudCBhbmQgc1tycG9zXSA9PSAnICc6CiAgICAgICAgcnBvcyAtPSAxCiAgICAgICAgYW1vdW50IC09IDEKICAgIHJldHVybiBzW2xwb3M6cnBvcysxXQoKX3BlcmNlbnRfcmUgPSByZS5jb21waWxlKHInJSg/OlwoKD9QPGtleT4uKj8pXCkpPycKICAgICAgICAgICAgICAgICAgICAgICAgIHInKD9QPG1vZGlmaWVycz5bLSMwLTkgKyouaGxMXSo/KVtlRWZGZ0dkaW91eFhjcnMlXScpCgpkZWYgX2Zvcm1hdChwZXJjZW50LCB2YWx1ZSwgZ3JvdXBpbmc9RmFsc2UsIG1vbmV0YXJ5PUZhbHNlLCAqYWRkaXRpb25hbCk6CiAgICBpZiBhZGRpdGlvbmFsOgogICAgICAgIGZvcm1hdHRlZCA9IHBlcmNlbnQgJSAoKHZhbHVlLCkgKyBhZGRpdGlvbmFsKQogICAgZWxzZToKICAgICAgICBmb3JtYXR0ZWQgPSBwZXJjZW50ICUgdmFsdWUKICAgIGlmIHBlcmNlbnRbLTFdIGluICdlRWZGZ0dkaXUnOgogICAgICAgIGZvcm1hdHRlZCA9IF9sb2NhbGl6ZShmb3JtYXR0ZWQsIGdyb3VwaW5nLCBtb25ldGFyeSkKICAgIHJldHVybiBmb3JtYXR0ZWQKCiMgVHJhbnNmb3JtIGZvcm1hdHRlZCBhcyBsb2NhbGUgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzCmRlZiBfbG9jYWxpemUoZm9ybWF0dGVkLCBncm91cGluZz1GYWxzZSwgbW9uZXRhcnk9RmFsc2UpOgogICAgIyBmbG9hdHMgYW5kIGRlY2ltYWwgaW50cyBuZWVkIHNwZWNpYWwgYWN0aW9uIQogICAgaWYgJy4nIGluIGZvcm1hdHRlZDoKICAgICAgICBzZXBzID0gMAogICAgICAgIHBhcnRzID0gZm9ybWF0dGVkLnNwbGl0KCcuJykKICAgICAgICBpZiBncm91cGluZzoKICAgICAgICAgICAgcGFydHNbMF0sIHNlcHMgPSBfZ3JvdXAocGFydHNbMF0sIG1vbmV0YXJ5PW1vbmV0YXJ5KQogICAgICAgIGRlY2ltYWxfcG9pbnQgPSBsb2NhbGVjb252KClbbW9uZXRhcnkgYW5kICdtb25fZGVjaW1hbF9wb2ludCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yICdkZWNpbWFsX3BvaW50J10KICAgICAgICBmb3JtYXR0ZWQgPSBkZWNpbWFsX3BvaW50LmpvaW4ocGFydHMpCiAgICAgICAgaWYgc2VwczoKICAgICAgICAgICAgZm9ybWF0dGVkID0gX3N0cmlwX3BhZGRpbmcoZm9ybWF0dGVkLCBzZXBzKQogICAgZWxzZToKICAgICAgICBzZXBzID0gMAogICAgICAgIGlmIGdyb3VwaW5nOgogICAgICAgICAgICBmb3JtYXR0ZWQsIHNlcHMgPSBfZ3JvdXAoZm9ybWF0dGVkLCBtb25ldGFyeT1tb25ldGFyeSkKICAgICAgICBpZiBzZXBzOgogICAgICAgICAgICBmb3JtYXR0ZWQgPSBfc3RyaXBfcGFkZGluZyhmb3JtYXR0ZWQsIHNlcHMpCiAgICByZXR1cm4gZm9ybWF0dGVkCgpkZWYgZm9ybWF0X3N0cmluZyhmLCB2YWwsIGdyb3VwaW5nPUZhbHNlLCBtb25ldGFyeT1GYWxzZSk6CiAgICAiIiJGb3JtYXRzIGEgc3RyaW5nIGluIHRoZSBzYW1lIHdheSB0aGF0IHRoZSAlIGZvcm1hdHRpbmcgd291bGQgdXNlLAogICAgYnV0IHRha2VzIHRoZSBjdXJyZW50IGxvY2FsZSBpbnRvIGFjY291bnQuCgogICAgR3JvdXBpbmcgaXMgYXBwbGllZCBpZiB0aGUgdGhpcmQgcGFyYW1ldGVyIGlzIHRydWUuCiAgICBDb252ZXJzaW9uIHVzZXMgbW9uZXRhcnkgdGhvdXNhbmRzIHNlcGFyYXRvciBhbmQgZ3JvdXBpbmcgc3RyaW5ncyBpZgogICAgZm9ydGggcGFyYW1ldGVyIG1vbmV0YXJ5IGlzIHRydWUuIiIiCiAgICBwZXJjZW50cyA9IGxpc3QoX3BlcmNlbnRfcmUuZmluZGl0ZXIoZikpCiAgICBuZXdfZiA9IF9wZXJjZW50X3JlLnN1YignJXMnLCBmKQoKICAgIGlmIGlzaW5zdGFuY2UodmFsLCBfY29sbGVjdGlvbnNfYWJjLk1hcHBpbmcpOgogICAgICAgIG5ld192YWwgPSBbXQogICAgICAgIGZvciBwZXJjIGluIHBlcmNlbnRzOgogICAgICAgICAgICBpZiBwZXJjLmdyb3VwKClbLTFdPT0nJSc6CiAgICAgICAgICAgICAgICBuZXdfdmFsLmFwcGVuZCgnJScpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBuZXdfdmFsLmFwcGVuZChfZm9ybWF0KHBlcmMuZ3JvdXAoKSwgdmFsLCBncm91cGluZywgbW9uZXRhcnkpKQogICAgZWxzZToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWwsIHR1cGxlKToKICAgICAgICAgICAgdmFsID0gKHZhbCwpCiAgICAgICAgbmV3X3ZhbCA9IFtdCiAgICAgICAgaSA9IDAKICAgICAgICBmb3IgcGVyYyBpbiBwZXJjZW50czoKICAgICAgICAgICAgaWYgcGVyYy5ncm91cCgpWy0xXT09JyUnOgogICAgICAgICAgICAgICAgbmV3X3ZhbC5hcHBlbmQoJyUnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc3RhcmNvdW50ID0gcGVyYy5ncm91cCgnbW9kaWZpZXJzJykuY291bnQoJyonKQogICAgICAgICAgICAgICAgbmV3X3ZhbC5hcHBlbmQoX2Zvcm1hdChwZXJjLmdyb3VwKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsW2ldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbmV0YXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2YWxbaSsxOmkrMStzdGFyY291bnRdKSkKICAgICAgICAgICAgICAgIGkgKz0gKDEgKyBzdGFyY291bnQpCiAgICB2YWwgPSB0dXBsZShuZXdfdmFsKQoKICAgIHJldHVybiBuZXdfZiAlIHZhbAoKZGVmIGZvcm1hdChwZXJjZW50LCB2YWx1ZSwgZ3JvdXBpbmc9RmFsc2UsIG1vbmV0YXJ5PUZhbHNlLCAqYWRkaXRpb25hbCk6CiAgICAiIiJEZXByZWNhdGVkLCB1c2UgZm9ybWF0X3N0cmluZyBpbnN0ZWFkLiIiIgogICAgaW1wb3J0IHdhcm5pbmdzCiAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICJUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uICIKICAgICAgICAiVXNlICdsb2NhbGUuZm9ybWF0X3N0cmluZygpJyBpbnN0ZWFkLiIsCiAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIKICAgICkKCiAgICBtYXRjaCA9IF9wZXJjZW50X3JlLm1hdGNoKHBlcmNlbnQpCiAgICBpZiBub3QgbWF0Y2ggb3IgbGVuKG1hdGNoLmdyb3VwKCkpIT0gbGVuKHBlcmNlbnQpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKCJmb3JtYXQoKSBtdXN0IGJlIGdpdmVuIGV4YWN0bHkgb25lICUlY2hhciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmllciwgJXMgbm90IHZhbGlkIikgJSByZXByKHBlcmNlbnQpKQogICAgcmV0dXJuIF9mb3JtYXQocGVyY2VudCwgdmFsdWUsIGdyb3VwaW5nLCBtb25ldGFyeSwgKmFkZGl0aW9uYWwpCgpkZWYgY3VycmVuY3kodmFsLCBzeW1ib2w9VHJ1ZSwgZ3JvdXBpbmc9RmFsc2UsIGludGVybmF0aW9uYWw9RmFsc2UpOgogICAgIiIiRm9ybWF0cyB2YWwgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW5jeSBzZXR0aW5ncwogICAgaW4gdGhlIGN1cnJlbnQgbG9jYWxlLiIiIgogICAgY29udiA9IGxvY2FsZWNvbnYoKQoKICAgICMgY2hlY2sgZm9yIGlsbGVnYWwgdmFsdWVzCiAgICBkaWdpdHMgPSBjb252W2ludGVybmF0aW9uYWwgYW5kICdpbnRfZnJhY19kaWdpdHMnIG9yICdmcmFjX2RpZ2l0cyddCiAgICBpZiBkaWdpdHMgPT0gMTI3OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkN1cnJlbmN5IGZvcm1hdHRpbmcgaXMgbm90IHBvc3NpYmxlIHVzaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgJ0MnIGxvY2FsZS4iKQoKICAgIHMgPSBfbG9jYWxpemUoZid7YWJzKHZhbCk6LntkaWdpdHN9Zn0nLCBncm91cGluZywgbW9uZXRhcnk9VHJ1ZSkKICAgICMgJzwnIGFuZCAnPicgYXJlIG1hcmtlcnMgaWYgdGhlIHNpZ24gbXVzdCBiZSBpbnNlcnRlZCBiZXR3ZWVuIHN5bWJvbCBhbmQgdmFsdWUKICAgIHMgPSAnPCcgKyBzICsgJz4nCgogICAgaWYgc3ltYm9sOgogICAgICAgIHNtYiA9IGNvbnZbaW50ZXJuYXRpb25hbCBhbmQgJ2ludF9jdXJyX3N5bWJvbCcgb3IgJ2N1cnJlbmN5X3N5bWJvbCddCiAgICAgICAgcHJlY2VkZXMgPSBjb252W3ZhbDwwIGFuZCAnbl9jc19wcmVjZWRlcycgb3IgJ3BfY3NfcHJlY2VkZXMnXQogICAgICAgIHNlcGFyYXRlZCA9IGNvbnZbdmFsPDAgYW5kICduX3NlcF9ieV9zcGFjZScgb3IgJ3Bfc2VwX2J5X3NwYWNlJ10KCiAgICAgICAgaWYgcHJlY2VkZXM6CiAgICAgICAgICAgIHMgPSBzbWIgKyAoc2VwYXJhdGVkIGFuZCAnICcgb3IgJycpICsgcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGludGVybmF0aW9uYWwgYW5kIHNtYlstMV0gPT0gJyAnOgogICAgICAgICAgICAgICAgc21iID0gc21iWzotMV0KICAgICAgICAgICAgcyA9IHMgKyAoc2VwYXJhdGVkIGFuZCAnICcgb3IgJycpICsgc21iCgogICAgc2lnbl9wb3MgPSBjb252W3ZhbDwwIGFuZCAnbl9zaWduX3Bvc24nIG9yICdwX3NpZ25fcG9zbiddCiAgICBzaWduID0gY29udlt2YWw8MCBhbmQgJ25lZ2F0aXZlX3NpZ24nIG9yICdwb3NpdGl2ZV9zaWduJ10KCiAgICBpZiBzaWduX3BvcyA9PSAwOgogICAgICAgIHMgPSAnKCcgKyBzICsgJyknCiAgICBlbGlmIHNpZ25fcG9zID09IDE6CiAgICAgICAgcyA9IHNpZ24gKyBzCiAgICBlbGlmIHNpZ25fcG9zID09IDI6CiAgICAgICAgcyA9IHMgKyBzaWduCiAgICBlbGlmIHNpZ25fcG9zID09IDM6CiAgICAgICAgcyA9IHMucmVwbGFjZSgnPCcsIHNpZ24pCiAgICBlbGlmIHNpZ25fcG9zID09IDQ6CiAgICAgICAgcyA9IHMucmVwbGFjZSgnPicsIHNpZ24pCiAgICBlbHNlOgogICAgICAgICMgdGhlIGRlZmF1bHQgaWYgbm90aGluZyBzcGVjaWZpZWQ7CiAgICAgICAgIyB0aGlzIHNob3VsZCBiZSB0aGUgbW9zdCBmaXR0aW5nIHNpZ24gcG9zaXRpb24KICAgICAgICBzID0gc2lnbiArIHMKCiAgICByZXR1cm4gcy5yZXBsYWNlKCc8JywgJycpLnJlcGxhY2UoJz4nLCAnJykKCmRlZiBzdHIodmFsKToKICAgICIiIkNvbnZlcnQgZmxvYXQgdG8gc3RyaW5nLCB0YWtpbmcgdGhlIGxvY2FsZSBpbnRvIGFjY291bnQuIiIiCiAgICByZXR1cm4gX2Zvcm1hdCgiJS4xMmciLCB2YWwpCgpkZWYgZGVsb2NhbGl6ZShzdHJpbmcpOgogICAgIlBhcnNlcyBhIHN0cmluZyBhcyBhIG5vcm1hbGl6ZWQgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKCiAgICBjb252ID0gbG9jYWxlY29udigpCgogICAgI0ZpcnN0LCBnZXQgcmlkIG9mIHRoZSBncm91cGluZwogICAgdHMgPSBjb252Wyd0aG91c2FuZHNfc2VwJ10KICAgIGlmIHRzOgogICAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHRzLCAnJykKCiAgICAjbmV4dCwgcmVwbGFjZSB0aGUgZGVjaW1hbCBwb2ludCB3aXRoIGEgZG90CiAgICBkZCA9IGNvbnZbJ2RlY2ltYWxfcG9pbnQnXQogICAgaWYgZGQ6CiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZGQsICcuJykKICAgIHJldHVybiBzdHJpbmcKCmRlZiBsb2NhbGl6ZShzdHJpbmcsIGdyb3VwaW5nPUZhbHNlLCBtb25ldGFyeT1GYWxzZSk6CiAgICAiIiJQYXJzZXMgYSBzdHJpbmcgYXMgbG9jYWxlIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iIiIKICAgIHJldHVybiBfbG9jYWxpemUoc3RyaW5nLCBncm91cGluZywgbW9uZXRhcnkpCgpkZWYgYXRvZihzdHJpbmcsIGZ1bmM9ZmxvYXQpOgogICAgIlBhcnNlcyBhIHN0cmluZyBhcyBhIGZsb2F0IGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKICAgIHJldHVybiBmdW5jKGRlbG9jYWxpemUoc3RyaW5nKSkKCmRlZiBhdG9pKHN0cmluZyk6CiAgICAiQ29udmVydHMgYSBzdHJpbmcgdG8gYW4gaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iCiAgICByZXR1cm4gaW50KGRlbG9jYWxpemUoc3RyaW5nKSkKCmRlZiBfdGVzdCgpOgogICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpCiAgICAjZG8gZ3JvdXBpbmcKICAgIHMxID0gZm9ybWF0X3N0cmluZygiJWQiLCAxMjM0NTY3ODksMSkKICAgIHByaW50KHMxLCAiaXMiLCBhdG9pKHMxKSkKICAgICNzdGFuZGFyZCBmb3JtYXR0aW5nCiAgICBzMSA9IHN0cigzLjE0KQogICAgcHJpbnQoczEsICJpcyIsIGF0b2YoczEpKQoKIyMjIExvY2FsZSBuYW1lIGFsaWFzaW5nIGVuZ2luZQoKIyBBdXRob3I6IE1hcmMtQW5kcmUgTGVtYnVyZywgbWFsQGxlbWJ1cmcuY29tCiMgVmFyaW91cyB0d2Vha3MgYnkgRnJlZHJpayBMdW5kaCA8ZnJlZHJpa0BweXRob253YXJlLmNvbT4KCiMgc3RvcmUgYXdheSB0aGUgbG93LWxldmVsIHZlcnNpb24gb2Ygc2V0bG9jYWxlIChpdCdzCiMgb3ZlcnJpZGRlbiBiZWxvdykKX3NldGxvY2FsZSA9IHNldGxvY2FsZQoKZGVmIF9yZXBsYWNlX2VuY29kaW5nKGNvZGUsIGVuY29kaW5nKToKICAgIGlmICcuJyBpbiBjb2RlOgogICAgICAgIGxhbmduYW1lID0gY29kZVs6Y29kZS5pbmRleCgnLicpXQogICAgZWxzZToKICAgICAgICBsYW5nbmFtZSA9IGNvZGUKICAgICMgQ29udmVydCB0aGUgZW5jb2RpbmcgdG8gYSBDIGxpYiBjb21wYXRpYmxlIGVuY29kaW5nIHN0cmluZwogICAgbm9ybV9lbmNvZGluZyA9IGVuY29kaW5ncy5ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcpCiAgICAjcHJpbnQoJ25vcm0gZW5jb2Rpbmc6ICVyJyAlIG5vcm1fZW5jb2RpbmcpCiAgICBub3JtX2VuY29kaW5nID0gZW5jb2RpbmdzLmFsaWFzZXMuYWxpYXNlcy5nZXQobm9ybV9lbmNvZGluZy5sb3dlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1fZW5jb2RpbmcpCiAgICAjcHJpbnQoJ2FsaWFzZWQgZW5jb2Rpbmc6ICVyJyAlIG5vcm1fZW5jb2RpbmcpCiAgICBlbmNvZGluZyA9IG5vcm1fZW5jb2RpbmcKICAgIG5vcm1fZW5jb2RpbmcgPSBub3JtX2VuY29kaW5nLmxvd2VyKCkKICAgIGlmIG5vcm1fZW5jb2RpbmcgaW4gbG9jYWxlX2VuY29kaW5nX2FsaWFzOgogICAgICAgIGVuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nX2FsaWFzW25vcm1fZW5jb2RpbmddCiAgICBlbHNlOgogICAgICAgIG5vcm1fZW5jb2RpbmcgPSBub3JtX2VuY29kaW5nLnJlcGxhY2UoJ18nLCAnJykKICAgICAgICBub3JtX2VuY29kaW5nID0gbm9ybV9lbmNvZGluZy5yZXBsYWNlKCctJywgJycpCiAgICAgICAgaWYgbm9ybV9lbmNvZGluZyBpbiBsb2NhbGVfZW5jb2RpbmdfYWxpYXM6CiAgICAgICAgICAgIGVuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nX2FsaWFzW25vcm1fZW5jb2RpbmddCiAgICAjcHJpbnQoJ2ZvdW5kIGVuY29kaW5nICVyJyAlIGVuY29kaW5nKQogICAgcmV0dXJuIGxhbmduYW1lICsgJy4nICsgZW5jb2RpbmcKCmRlZiBfYXBwZW5kX21vZGlmaWVyKGNvZGUsIG1vZGlmaWVyKToKICAgIGlmIG1vZGlmaWVyID09ICdldXJvJzoKICAgICAgICBpZiAnLicgbm90IGluIGNvZGU6CiAgICAgICAgICAgIHJldHVybiBjb2RlICsgJy5JU084ODU5LTE1JwogICAgICAgIF8sIF8sIGVuY29kaW5nID0gY29kZS5wYXJ0aXRpb24oJy4nKQogICAgICAgIGlmIGVuY29kaW5nIGluICgnSVNPODg1OS0xNScsICdVVEYtOCcpOgogICAgICAgICAgICByZXR1cm4gY29kZQogICAgICAgIGlmIGVuY29kaW5nID09ICdJU084ODU5LTEnOgogICAgICAgICAgICByZXR1cm4gX3JlcGxhY2VfZW5jb2RpbmcoY29kZSwgJ0lTTzg4NTktMTUnKQogICAgcmV0dXJuIGNvZGUgKyAnQCcgKyBtb2RpZmllcgoKZGVmIG5vcm1hbGl6ZShsb2NhbGVuYW1lKToKCiAgICAiIiIgUmV0dXJucyBhIG5vcm1hbGl6ZWQgbG9jYWxlIGNvZGUgZm9yIHRoZSBnaXZlbiBsb2NhbGUKICAgICAgICBuYW1lLgoKICAgICAgICBUaGUgcmV0dXJuZWQgbG9jYWxlIGNvZGUgaXMgZm9ybWF0dGVkIGZvciB1c2Ugd2l0aAogICAgICAgIHNldGxvY2FsZSgpLgoKICAgICAgICBJZiBub3JtYWxpemF0aW9uIGZhaWxzLCB0aGUgb3JpZ2luYWwgbmFtZSBpcyByZXR1cm5lZAogICAgICAgIHVuY2hhbmdlZC4KCiAgICAgICAgSWYgdGhlIGdpdmVuIGVuY29kaW5nIGlzIG5vdCBrbm93biwgdGhlIGZ1bmN0aW9uIGRlZmF1bHRzIHRvCiAgICAgICAgdGhlIGRlZmF1bHQgZW5jb2RpbmcgZm9yIHRoZSBsb2NhbGUgY29kZSBqdXN0IGxpa2Ugc2V0bG9jYWxlKCkKICAgICAgICBkb2VzLgoKICAgICIiIgogICAgIyBOb3JtYWxpemUgdGhlIGxvY2FsZSBuYW1lIGFuZCBleHRyYWN0IHRoZSBlbmNvZGluZyBhbmQgbW9kaWZpZXIKICAgIGNvZGUgPSBsb2NhbGVuYW1lLmxvd2VyKCkKICAgIGlmICc6JyBpbiBjb2RlOgogICAgICAgICMgJzonIGlzIHNvbWV0aW1lcyB1c2VkIGFzIGVuY29kaW5nIGRlbGltaXRlci4KICAgICAgICBjb2RlID0gY29kZS5yZXBsYWNlKCc6JywgJy4nKQogICAgaWYgJ0AnIGluIGNvZGU6CiAgICAgICAgY29kZSwgbW9kaWZpZXIgPSBjb2RlLnNwbGl0KCdAJywgMSkKICAgIGVsc2U6CiAgICAgICAgbW9kaWZpZXIgPSAnJwogICAgaWYgJy4nIGluIGNvZGU6CiAgICAgICAgbGFuZ25hbWUsIGVuY29kaW5nID0gY29kZS5zcGxpdCgnLicpWzoyXQogICAgZWxzZToKICAgICAgICBsYW5nbmFtZSA9IGNvZGUKICAgICAgICBlbmNvZGluZyA9ICcnCgogICAgIyBGaXJzdCBsb29rdXA6IGZ1bGxuYW1lIChwb3NzaWJseSB3aXRoIGVuY29kaW5nIGFuZCBtb2RpZmllcikKICAgIGxhbmdfZW5jID0gbGFuZ25hbWUKICAgIGlmIGVuY29kaW5nOgogICAgICAgIG5vcm1fZW5jb2RpbmcgPSBlbmNvZGluZy5yZXBsYWNlKCctJywgJycpCiAgICAgICAgbm9ybV9lbmNvZGluZyA9IG5vcm1fZW5jb2RpbmcucmVwbGFjZSgnXycsICcnKQogICAgICAgIGxhbmdfZW5jICs9ICcuJyArIG5vcm1fZW5jb2RpbmcKICAgIGxvb2t1cF9uYW1lID0gbGFuZ19lbmMKICAgIGlmIG1vZGlmaWVyOgogICAgICAgIGxvb2t1cF9uYW1lICs9ICdAJyArIG1vZGlmaWVyCiAgICBjb2RlID0gbG9jYWxlX2FsaWFzLmdldChsb29rdXBfbmFtZSwgTm9uZSkKICAgIGlmIGNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIGNvZGUKICAgICNwcmludCgnZmlyc3QgbG9va3VwIGZhaWxlZCcpCgogICAgaWYgbW9kaWZpZXI6CiAgICAgICAgIyBTZWNvbmQgdHJ5OiBmdWxsbmFtZSB3aXRob3V0IG1vZGlmaWVyIChwb3NzaWJseSB3aXRoIGVuY29kaW5nKQogICAgICAgIGNvZGUgPSBsb2NhbGVfYWxpYXMuZ2V0KGxhbmdfZW5jLCBOb25lKQogICAgICAgIGlmIGNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICNwcmludCgnbG9va3VwIHdpdGhvdXQgbW9kaWZpZXIgc3VjY2VlZGVkJykKICAgICAgICAgICAgaWYgJ0AnIG5vdCBpbiBjb2RlOgogICAgICAgICAgICAgICAgcmV0dXJuIF9hcHBlbmRfbW9kaWZpZXIoY29kZSwgbW9kaWZpZXIpCiAgICAgICAgICAgIGlmIGNvZGUuc3BsaXQoJ0AnLCAxKVsxXS5sb3dlcigpID09IG1vZGlmaWVyOgogICAgICAgICAgICAgICAgcmV0dXJuIGNvZGUKICAgICAgICAjcHJpbnQoJ3NlY29uZCBsb29rdXAgZmFpbGVkJykKCiAgICBpZiBlbmNvZGluZzoKICAgICAgICAjIFRoaXJkIHRyeTogbGFuZ25hbWUgKHdpdGhvdXQgZW5jb2RpbmcsIHBvc3NpYmx5IHdpdGggbW9kaWZpZXIpCiAgICAgICAgbG9va3VwX25hbWUgPSBsYW5nbmFtZQogICAgICAgIGlmIG1vZGlmaWVyOgogICAgICAgICAgICBsb29rdXBfbmFtZSArPSAnQCcgKyBtb2RpZmllcgogICAgICAgIGNvZGUgPSBsb2NhbGVfYWxpYXMuZ2V0KGxvb2t1cF9uYW1lLCBOb25lKQogICAgICAgIGlmIGNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICNwcmludCgnbG9va3VwIHdpdGhvdXQgZW5jb2Rpbmcgc3VjY2VlZGVkJykKICAgICAgICAgICAgaWYgJ0AnIG5vdCBpbiBjb2RlOgogICAgICAgICAgICAgICAgcmV0dXJuIF9yZXBsYWNlX2VuY29kaW5nKGNvZGUsIGVuY29kaW5nKQogICAgICAgICAgICBjb2RlLCBtb2RpZmllciA9IGNvZGUuc3BsaXQoJ0AnLCAxKQogICAgICAgICAgICByZXR1cm4gX3JlcGxhY2VfZW5jb2RpbmcoY29kZSwgZW5jb2RpbmcpICsgJ0AnICsgbW9kaWZpZXIKCiAgICAgICAgaWYgbW9kaWZpZXI6CiAgICAgICAgICAgICMgRm91cnRoIHRyeTogbGFuZ25hbWUgKHdpdGhvdXQgZW5jb2RpbmcgYW5kIG1vZGlmaWVyKQogICAgICAgICAgICBjb2RlID0gbG9jYWxlX2FsaWFzLmdldChsYW5nbmFtZSwgTm9uZSkKICAgICAgICAgICAgaWYgY29kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICNwcmludCgnbG9va3VwIHdpdGhvdXQgbW9kaWZpZXIgYW5kIGVuY29kaW5nIHN1Y2NlZWRlZCcpCiAgICAgICAgICAgICAgICBpZiAnQCcgbm90IGluIGNvZGU6CiAgICAgICAgICAgICAgICAgICAgY29kZSA9IF9yZXBsYWNlX2VuY29kaW5nKGNvZGUsIGVuY29kaW5nKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBfYXBwZW5kX21vZGlmaWVyKGNvZGUsIG1vZGlmaWVyKQogICAgICAgICAgICAgICAgY29kZSwgZGVmbW9kID0gY29kZS5zcGxpdCgnQCcsIDEpCiAgICAgICAgICAgICAgICBpZiBkZWZtb2QubG93ZXIoKSA9PSBtb2RpZmllcjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlcGxhY2VfZW5jb2RpbmcoY29kZSwgZW5jb2RpbmcpICsgJ0AnICsgZGVmbW9kCgogICAgcmV0dXJuIGxvY2FsZW5hbWUKCmRlZiBfcGFyc2VfbG9jYWxlbmFtZShsb2NhbGVuYW1lKToKCiAgICAiIiIgUGFyc2VzIHRoZSBsb2NhbGUgY29kZSBmb3IgbG9jYWxlbmFtZSBhbmQgcmV0dXJucyB0aGUKICAgICAgICByZXN1bHQgYXMgdHVwbGUgKGxhbmd1YWdlIGNvZGUsIGVuY29kaW5nKS4KCiAgICAgICAgVGhlIGxvY2FsZW5hbWUgaXMgbm9ybWFsaXplZCBhbmQgcGFzc2VkIHRocm91Z2ggdGhlIGxvY2FsZQogICAgICAgIGFsaWFzIGVuZ2luZS4gQSBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpbiBjYXNlIHRoZSBsb2NhbGUgbmFtZQogICAgICAgIGNhbm5vdCBiZSBwYXJzZWQuCgogICAgICAgIFRoZSBsYW5ndWFnZSBjb2RlIGNvcnJlc3BvbmRzIHRvIFJGQyAxNzY2LiAgY29kZSBhbmQgZW5jb2RpbmcKICAgICAgICBjYW4gYmUgTm9uZSBpbiBjYXNlIHRoZSB2YWx1ZXMgY2Fubm90IGJlIGRldGVybWluZWQgb3IgYXJlCiAgICAgICAgdW5rbm93biB0byB0aGlzIGltcGxlbWVudGF0aW9uLgoKICAgICIiIgogICAgY29kZSA9IG5vcm1hbGl6ZShsb2NhbGVuYW1lKQogICAgaWYgJ0AnIGluIGNvZGU6CiAgICAgICAgIyBEZWFsIHdpdGggbG9jYWxlIG1vZGlmaWVycwogICAgICAgIGNvZGUsIG1vZGlmaWVyID0gY29kZS5zcGxpdCgnQCcsIDEpCiAgICAgICAgaWYgbW9kaWZpZXIgPT0gJ2V1cm8nIGFuZCAnLicgbm90IGluIGNvZGU6CiAgICAgICAgICAgICMgQXNzdW1lIExhdGluLTkgZm9yIEBldXJvIGxvY2FsZXMuIFRoaXMgaXMgYm9ndXMsCiAgICAgICAgICAgICMgc2luY2Ugc29tZSBzeXN0ZW1zIG1heSB1c2Ugb3RoZXIgZW5jb2RpbmdzIGZvciB0aGVzZQogICAgICAgICAgICAjIGxvY2FsZXMuIEFsc28sIHdlIGlnbm9yZSBvdGhlciBtb2RpZmllcnMuCiAgICAgICAgICAgIHJldHVybiBjb2RlLCAnaXNvLTg4NTktMTUnCgogICAgaWYgJy4nIGluIGNvZGU6CiAgICAgICAgcmV0dXJuIHR1cGxlKGNvZGUuc3BsaXQoJy4nKVs6Ml0pCiAgICBlbGlmIGNvZGUgPT0gJ0MnOgogICAgICAgIHJldHVybiBOb25lLCBOb25lCiAgICBlbGlmIGNvZGUgPT0gJ1VURi04JzoKICAgICAgICAjIE9uIG1hY09TICJMQ19DVFlQRT1VVEYtOCIgaXMgYSB2YWxpZCBsb2NhbGUgc2V0dGluZwogICAgICAgICMgZm9yIGdldHRpbmcgVVRGLTggaGFuZGxpbmcgZm9yIHRleHQuCiAgICAgICAgcmV0dXJuIE5vbmUsICdVVEYtOCcKICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Vua25vd24gbG9jYWxlOiAlcycgJSBsb2NhbGVuYW1lKQoKZGVmIF9idWlsZF9sb2NhbGVuYW1lKGxvY2FsZXR1cGxlKToKCiAgICAiIiIgQnVpbGRzIGEgbG9jYWxlIGNvZGUgZnJvbSB0aGUgZ2l2ZW4gdHVwbGUgKGxhbmd1YWdlIGNvZGUsCiAgICAgICAgZW5jb2RpbmcpLgoKICAgICAgICBObyBhbGlhc2luZyBvciBub3JtYWxpemluZyB0YWtlcyBwbGFjZS4KCiAgICAiIiIKICAgIHRyeToKICAgICAgICBsYW5ndWFnZSwgZW5jb2RpbmcgPSBsb2NhbGV0dXBsZQoKICAgICAgICBpZiBsYW5ndWFnZSBpcyBOb25lOgogICAgICAgICAgICBsYW5ndWFnZSA9ICdDJwogICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZSArICcuJyArIGVuY29kaW5nCiAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdMb2NhbGUgbXVzdCBiZSBOb25lLCBhIHN0cmluZywgb3IgYW4gaXRlcmFibGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAndHdvIHN0cmluZ3MgLS0gbGFuZ3VhZ2UgY29kZSwgZW5jb2RpbmcuJykgZnJvbSBOb25lCgpkZWYgZ2V0ZGVmYXVsdGxvY2FsZShlbnZ2YXJzPSgnTENfQUxMJywgJ0xDX0NUWVBFJywgJ0xBTkcnLCAnTEFOR1VBR0UnKSk6CgogICAgIiIiIFRyaWVzIHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBsb2NhbGUgc2V0dGluZ3MgYW5kIHJldHVybnMKICAgICAgICB0aGVtIGFzIHR1cGxlIChsYW5ndWFnZSBjb2RlLCBlbmNvZGluZykuCgogICAgICAgIEFjY29yZGluZyB0byBQT1NJWCwgYSBwcm9ncmFtIHdoaWNoIGhhcyBub3QgY2FsbGVkCiAgICAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpIHJ1bnMgdXNpbmcgdGhlIHBvcnRhYmxlICdDJyBsb2NhbGUuCiAgICAgICAgQ2FsbGluZyBzZXRsb2NhbGUoTENfQUxMLCAiIikgbGV0cyBpdCB1c2UgdGhlIGRlZmF1bHQgbG9jYWxlIGFzCiAgICAgICAgZGVmaW5lZCBieSB0aGUgTEFORyB2YXJpYWJsZS4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBpbnRlcmZlcmUKICAgICAgICB3aXRoIHRoZSBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHdlIHRodXMgZW11bGF0ZSB0aGUgYmVoYXZpb3IKICAgICAgICBpbiB0aGUgd2F5IGRlc2NyaWJlZCBhYm92ZS4KCiAgICAgICAgVG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIHBsYXRmb3Jtcywgbm90IG9ubHkgdGhlCiAgICAgICAgTEFORyB2YXJpYWJsZSBpcyB0ZXN0ZWQsIGJ1dCBhIGxpc3Qgb2YgdmFyaWFibGVzIGdpdmVuIGFzCiAgICAgICAgZW52dmFycyBwYXJhbWV0ZXIuIFRoZSBmaXJzdCBmb3VuZCB0byBiZSBkZWZpbmVkIHdpbGwgYmUKICAgICAgICB1c2VkLiBlbnZ2YXJzIGRlZmF1bHRzIHRvIHRoZSBzZWFyY2ggcGF0aCB1c2VkIGluIEdOVSBnZXR0ZXh0OwogICAgICAgIGl0IG11c3QgYWx3YXlzIGNvbnRhaW4gdGhlIHZhcmlhYmxlIG5hbWUgJ0xBTkcnLgoKICAgICAgICBFeGNlcHQgZm9yIHRoZSBjb2RlICdDJywgdGhlIGxhbmd1YWdlIGNvZGUgY29ycmVzcG9uZHMgdG8gUkZDCiAgICAgICAgMTc2Ni4gIGNvZGUgYW5kIGVuY29kaW5nIGNhbiBiZSBOb25lIGluIGNhc2UgdGhlIHZhbHVlcyBjYW5ub3QKICAgICAgICBiZSBkZXRlcm1pbmVkLgoKICAgICIiIgoKICAgIGltcG9ydCB3YXJuaW5ncwogICAgd2FybmluZ3Mud2FybigKICAgICAgICAiVXNlIHNldGxvY2FsZSgpLCBnZXRlbmNvZGluZygpIGFuZCBnZXRsb2NhbGUoKSBpbnN0ZWFkIiwKICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MgogICAgKQoKICAgIHRyeToKICAgICAgICAjIGNoZWNrIGlmIGl0J3Mgc3VwcG9ydGVkIGJ5IHRoZSBfbG9jYWxlIG1vZHVsZQogICAgICAgIGltcG9ydCBfbG9jYWxlCiAgICAgICAgY29kZSwgZW5jb2RpbmcgPSBfbG9jYWxlLl9nZXRkZWZhdWx0bG9jYWxlKCkKICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICBwYXNzCiAgICBlbHNlOgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjb2RlL2VuY29kaW5nIHZhbHVlcyBhcmUgdmFsaWQKICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgY29kZSBhbmQgY29kZVs6Ml0gPT0gIjB4IjoKICAgICAgICAgICAgIyBtYXAgd2luZG93cyBsYW5ndWFnZSBpZGVudGlmaWVyIHRvIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgY29kZSA9IHdpbmRvd3NfbG9jYWxlLmdldChpbnQoY29kZSwgMCkpCiAgICAgICAgIyAuLi5hZGQgb3RoZXIgcGxhdGZvcm0tc3BlY2lmaWMgcHJvY2Vzc2luZyBoZXJlLCBpZgogICAgICAgICMgbmVjZXNzYXJ5Li4uCiAgICAgICAgcmV0dXJuIGNvZGUsIGVuY29kaW5nCgogICAgIyBmYWxsIGJhY2sgb24gUE9TSVggYmVoYXZpb3VyCiAgICBpbXBvcnQgb3MKICAgIGxvb2t1cCA9IG9zLmVudmlyb24uZ2V0CiAgICBmb3IgdmFyaWFibGUgaW4gZW52dmFyczoKICAgICAgICBsb2NhbGVuYW1lID0gbG9va3VwKHZhcmlhYmxlLE5vbmUpCiAgICAgICAgaWYgbG9jYWxlbmFtZToKICAgICAgICAgICAgaWYgdmFyaWFibGUgPT0gJ0xBTkdVQUdFJzoKICAgICAgICAgICAgICAgIGxvY2FsZW5hbWUgPSBsb2NhbGVuYW1lLnNwbGl0KCc6JylbMF0KICAgICAgICAgICAgYnJlYWsKICAgIGVsc2U6CiAgICAgICAgbG9jYWxlbmFtZSA9ICdDJwogICAgcmV0dXJuIF9wYXJzZV9sb2NhbGVuYW1lKGxvY2FsZW5hbWUpCgoKZGVmIGdldGxvY2FsZShjYXRlZ29yeT1MQ19DVFlQRSk6CgogICAgIiIiIFJldHVybnMgdGhlIGN1cnJlbnQgc2V0dGluZyBmb3IgdGhlIGdpdmVuIGxvY2FsZSBjYXRlZ29yeSBhcwogICAgICAgIHR1cGxlIChsYW5ndWFnZSBjb2RlLCBlbmNvZGluZykuCgogICAgICAgIGNhdGVnb3J5IG1heSBiZSBvbmUgb2YgdGhlIExDXyogdmFsdWUgZXhjZXB0IExDX0FMTC4gSXQKICAgICAgICBkZWZhdWx0cyB0byBMQ19DVFlQRS4KCiAgICAgICAgRXhjZXB0IGZvciB0aGUgY29kZSAnQycsIHRoZSBsYW5ndWFnZSBjb2RlIGNvcnJlc3BvbmRzIHRvIFJGQwogICAgICAgIDE3NjYuICBjb2RlIGFuZCBlbmNvZGluZyBjYW4gYmUgTm9uZSBpbiBjYXNlIHRoZSB2YWx1ZXMgY2Fubm90CiAgICAgICAgYmUgZGV0ZXJtaW5lZC4KCiAgICAiIiIKICAgIGxvY2FsZW5hbWUgPSBfc2V0bG9jYWxlKGNhdGVnb3J5KQogICAgaWYgY2F0ZWdvcnkgPT0gTENfQUxMIGFuZCAnOycgaW4gbG9jYWxlbmFtZToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2NhdGVnb3J5IExDX0FMTCBpcyBub3Qgc3VwcG9ydGVkJykKICAgIHJldHVybiBfcGFyc2VfbG9jYWxlbmFtZShsb2NhbGVuYW1lKQoKZGVmIHNldGxvY2FsZShjYXRlZ29yeSwgbG9jYWxlPU5vbmUpOgoKICAgICIiIiBTZXQgdGhlIGxvY2FsZSBmb3IgdGhlIGdpdmVuIGNhdGVnb3J5LiAgVGhlIGxvY2FsZSBjYW4gYmUKICAgICAgICBhIHN0cmluZywgYW4gaXRlcmFibGUgb2YgdHdvIHN0cmluZ3MgKGxhbmd1YWdlIGNvZGUgYW5kIGVuY29kaW5nKSwKICAgICAgICBvciBOb25lLgoKICAgICAgICBJdGVyYWJsZXMgYXJlIGNvbnZlcnRlZCB0byBzdHJpbmdzIHVzaW5nIHRoZSBsb2NhbGUgYWxpYXNpbmcKICAgICAgICBlbmdpbmUuICBMb2NhbGUgc3RyaW5ncyBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBDIGxpYi4KCiAgICAgICAgY2F0ZWdvcnkgbWF5IGJlIGdpdmVuIGFzIG9uZSBvZiB0aGUgTENfKiB2YWx1ZXMuCgogICAgIiIiCiAgICBpZiBsb2NhbGUgYW5kIG5vdCBpc2luc3RhbmNlKGxvY2FsZSwgX2J1aWx0aW5fc3RyKToKICAgICAgICAjIGNvbnZlcnQgdG8gc3RyaW5nCiAgICAgICAgbG9jYWxlID0gbm9ybWFsaXplKF9idWlsZF9sb2NhbGVuYW1lKGxvY2FsZSkpCiAgICByZXR1cm4gX3NldGxvY2FsZShjYXRlZ29yeSwgbG9jYWxlKQoKZGVmIHJlc2V0bG9jYWxlKGNhdGVnb3J5PUxDX0FMTCk6CgogICAgIiIiIFNldHMgdGhlIGxvY2FsZSBmb3IgY2F0ZWdvcnkgdG8gdGhlIGRlZmF1bHQgc2V0dGluZy4KCiAgICAgICAgVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcKICAgICAgICBnZXRkZWZhdWx0bG9jYWxlKCkuIGNhdGVnb3J5IGRlZmF1bHRzIHRvIExDX0FMTC4KCiAgICAiIiIKICAgIGltcG9ydCB3YXJuaW5ncwogICAgd2FybmluZ3Mud2FybigKICAgICAgICAnVXNlIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgIiIpIGluc3RlYWQnLAogICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yCiAgICApCgogICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgIGxvYyA9IGdldGRlZmF1bHRsb2NhbGUoKQoKICAgIF9zZXRsb2NhbGUoY2F0ZWdvcnksIF9idWlsZF9sb2NhbGVuYW1lKGxvYykpCgoKdHJ5OgogICAgZnJvbSBfbG9jYWxlIGltcG9ydCBnZXRlbmNvZGluZwpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBkZWYgZ2V0ZW5jb2RpbmcoKToKICAgICAgICBpZiBoYXNhdHRyKHN5cywgJ2dldGFuZHJvaWRhcGlsZXZlbCcpOgogICAgICAgICAgICAjIE9uIEFuZHJvaWQgbGFuZ2luZm8uaCBhbmQgQ09ERVNFVCBhcmUgbWlzc2luZywgYW5kIFVURi04IGlzCiAgICAgICAgICAgICMgYWx3YXlzIHVzZWQgaW4gbWJzdG93Y3MoKSBhbmQgd2NzdG9tYnMoKS4KICAgICAgICAgICAgcmV0dXJuICd1dGYtOCcKICAgICAgICBlbmNvZGluZyA9IGdldGRlZmF1bHRsb2NhbGUoKVsxXQogICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICMgTEFORyBub3Qgc2V0LCBkZWZhdWx0IHRvIFVURi04CiAgICAgICAgICAgIGVuY29kaW5nID0gJ3V0Zi04JwogICAgICAgIHJldHVybiBlbmNvZGluZwoKdHJ5OgogICAgQ09ERVNFVApleGNlcHQgTmFtZUVycm9yOgogICAgZGVmIGdldHByZWZlcnJlZGVuY29kaW5nKGRvX3NldGxvY2FsZT1UcnVlKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGNoYXJzZXQgdGhhdCB0aGUgdXNlciBpcyBsaWtlbHkgdXNpbmcuIiIiCiAgICAgICAgaWYgc3lzLmZsYWdzLndhcm5fZGVmYXVsdF9lbmNvZGluZzoKICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICAiVVRGLTggTW9kZSBhZmZlY3RzIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpLiBDb25zaWRlciBsb2NhbGUuZ2V0ZW5jb2RpbmcoKSBpbnN0ZWFkLiIsCiAgICAgICAgICAgICAgICBFbmNvZGluZ1dhcm5pbmcsIDIpCiAgICAgICAgaWYgc3lzLmZsYWdzLnV0ZjhfbW9kZToKICAgICAgICAgICAgcmV0dXJuICd1dGYtOCcKICAgICAgICByZXR1cm4gZ2V0ZW5jb2RpbmcoKQplbHNlOgogICAgIyBPbiBVbml4LCBpZiBDT0RFU0VUIGlzIGF2YWlsYWJsZSwgdXNlIHRoYXQuCiAgICBkZWYgZ2V0cHJlZmVycmVkZW5jb2RpbmcoZG9fc2V0bG9jYWxlPVRydWUpOgogICAgICAgICIiIlJldHVybiB0aGUgY2hhcnNldCB0aGF0IHRoZSB1c2VyIGlzIGxpa2VseSB1c2luZywKICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uLiIiIgoKICAgICAgICBpZiBzeXMuZmxhZ3Mud2Fybl9kZWZhdWx0X2VuY29kaW5nOgogICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICJVVEYtOCBNb2RlIGFmZmVjdHMgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkuIENvbnNpZGVyIGxvY2FsZS5nZXRlbmNvZGluZygpIGluc3RlYWQuIiwKICAgICAgICAgICAgICAgIEVuY29kaW5nV2FybmluZywgMikKICAgICAgICBpZiBzeXMuZmxhZ3MudXRmOF9tb2RlOgogICAgICAgICAgICByZXR1cm4gJ3V0Zi04JwoKICAgICAgICBpZiBub3QgZG9fc2V0bG9jYWxlOgogICAgICAgICAgICByZXR1cm4gZ2V0ZW5jb2RpbmcoKQoKICAgICAgICBvbGRfbG9jID0gc2V0bG9jYWxlKExDX0NUWVBFKQogICAgICAgIHRyeToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2V0bG9jYWxlKExDX0NUWVBFLCAiIikKICAgICAgICAgICAgZXhjZXB0IEVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICByZXR1cm4gZ2V0ZW5jb2RpbmcoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNldGxvY2FsZShMQ19DVFlQRSwgb2xkX2xvYykKCgojIyMgRGF0YWJhc2UKIwojIFRoZSBmb2xsb3dpbmcgZGF0YSB3YXMgZXh0cmFjdGVkIGZyb20gdGhlIGxvY2FsZS5hbGlhcyBmaWxlIHdoaWNoCiMgY29tZXMgd2l0aCBYMTEgYW5kIHRoZW4gaGFuZCBlZGl0ZWQgcmVtb3ZpbmcgdGhlIGV4cGxpY2l0IGVuY29kaW5nCiMgZGVmaW5pdGlvbnMgYW5kIGFkZGluZyBzb21lIG1vcmUgYWxpYXNlcy4gVGhlIGZpbGUgaXMgdXN1YWxseQojIGF2YWlsYWJsZSBhcyAvdXNyL2xpYi9YMTEvbG9jYWxlL2xvY2FsZS5hbGlhcy4KIwoKIwojIFRoZSBsb2NhbF9lbmNvZGluZ19hbGlhcyB0YWJsZSBtYXBzIGxvd2VyY2FzZSBlbmNvZGluZyBhbGlhcyBuYW1lcwojIHRvIEMgbG9jYWxlIGVuY29kaW5nIG5hbWVzIChjYXNlLXNlbnNpdGl2ZSkuIE5vdGUgdGhhdCBub3JtYWxpemUoKQojIGZpcnN0IGxvb2tzIHVwIHRoZSBlbmNvZGluZyBpbiB0aGUgZW5jb2RpbmdzLmFsaWFzZXMgZGljdGlvbmFyeSBhbmQKIyB0aGVuIGFwcGxpZXMgdGhpcyBtYXBwaW5nIHRvIGZpbmQgdGhlIGNvcnJlY3QgQyBsaWIgbmFtZSBmb3IgdGhlCiMgZW5jb2RpbmcuCiMKbG9jYWxlX2VuY29kaW5nX2FsaWFzID0gewoKICAgICMgTWFwcGluZ3MgZm9yIG5vbi1zdGFuZGFyZCBlbmNvZGluZyBuYW1lcyB1c2VkIGluIGxvY2FsZSBuYW1lcwogICAgJzQzNyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAnQycsCiAgICAnYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDJywKICAgICdlbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktMScsCiAgICAnamlzJzogICAgICAgICAgICAgICAgICAgICAgICAgICdKSVM3JywKICAgICdqaXM3JzogICAgICAgICAgICAgICAgICAgICAgICAgJ0pJUzcnLAogICAgJ2FqZWMnOiAgICAgICAgICAgICAgICAgICAgICAgICAnZXVjSlAnLAogICAgJ2tvaThjJzogICAgICAgICAgICAgICAgICAgICAgICAnS09JOC1DJywKICAgICdtaWNyb3NvZnRjcDEyNTEnOiAgICAgICAgICAgICAgJ0NQMTI1MScsCiAgICAnbWljcm9zb2Z0Y3AxMjU1JzogICAgICAgICAgICAgICdDUDEyNTUnLAogICAgJ21pY3Jvc29mdGNwMTI1Nic6ICAgICAgICAgICAgICAnQ1AxMjU2JywKICAgICc4ODU5MSc6ICAgICAgICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktMScsCiAgICAnODg1OTInOiAgICAgICAgICAgICAgICAgICAgICAgICdJU084ODU5LTInLAogICAgJzg4NTk1JzogICAgICAgICAgICAgICAgICAgICAgICAnSVNPODg1OS01JywKICAgICc4ODU5MTUnOiAgICAgICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktMTUnLAoKICAgICMgTWFwcGluZ3MgZnJvbSBQeXRob24gY29kZWMgbmFtZXMgdG8gQyBsaWIgZW5jb2RpbmcgbmFtZXMKICAgICdhc2NpaSc6ICAgICAgICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktMScsCiAgICAnbGF0aW5fMSc6ICAgICAgICAgICAgICAgICAgICAgICdJU084ODU5LTEnLAogICAgJ2lzbzg4NTlfMSc6ICAgICAgICAgICAgICAgICAgICAnSVNPODg1OS0xJywKICAgICdpc284ODU5XzEwJzogICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktMTAnLAogICAgJ2lzbzg4NTlfMTEnOiAgICAgICAgICAgICAgICAgICAnSVNPODg1OS0xMScsCiAgICAnaXNvODg1OV8xMyc6ICAgICAgICAgICAgICAgICAgICdJU084ODU5LTEzJywKICAgICdpc284ODU5XzE0JzogICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktMTQnLAogICAgJ2lzbzg4NTlfMTUnOiAgICAgICAgICAgICAgICAgICAnSVNPODg1OS0xNScsCiAgICAnaXNvODg1OV8xNic6ICAgICAgICAgICAgICAgICAgICdJU084ODU5LTE2JywKICAgICdpc284ODU5XzInOiAgICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktMicsCiAgICAnaXNvODg1OV8zJzogICAgICAgICAgICAgICAgICAgICdJU084ODU5LTMnLAogICAgJ2lzbzg4NTlfNCc6ICAgICAgICAgICAgICAgICAgICAnSVNPODg1OS00JywKICAgICdpc284ODU5XzUnOiAgICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktNScsCiAgICAnaXNvODg1OV82JzogICAgICAgICAgICAgICAgICAgICdJU084ODU5LTYnLAogICAgJ2lzbzg4NTlfNyc6ICAgICAgICAgICAgICAgICAgICAnSVNPODg1OS03JywKICAgICdpc284ODU5XzgnOiAgICAgICAgICAgICAgICAgICAgJ0lTTzg4NTktOCcsCiAgICAnaXNvODg1OV85JzogICAgICAgICAgICAgICAgICAgICdJU084ODU5LTknLAogICAgJ2lzbzIwMjJfanAnOiAgICAgICAgICAgICAgICAgICAnSklTNycsCiAgICAnc2hpZnRfamlzJzogICAgICAgICAgICAgICAgICAgICdTSklTJywKICAgICd0YWN0aXMnOiAgICAgICAgICAgICAgICAgICAgICAgJ1RBQ1RJUycsCiAgICAnZXVjX2pwJzogICAgICAgICAgICAgICAgICAgICAgICdldWNKUCcsCiAgICAnZXVjX2tyJzogICAgICAgICAgICAgICAgICAgICAgICdldWNLUicsCiAgICAndXRmXzgnOiAgICAgICAgICAgICAgICAgICAgICAgICdVVEYtOCcsCiAgICAna29pOF9yJzogICAgICAgICAgICAgICAgICAgICAgICdLT0k4LVInLAogICAgJ2tvaThfdCc6ICAgICAgICAgICAgICAgICAgICAgICAnS09JOC1UJywKICAgICdrb2k4X3UnOiAgICAgICAgICAgICAgICAgICAgICAgJ0tPSTgtVScsCiAgICAna3oxMDQ4JzogICAgICAgICAgICAgICAgICAgICAgICdSSzEwNDgnLAogICAgJ2NwMTI1MSc6ICAgICAgICAgICAgICAgICAgICAgICAnQ1AxMjUxJywKICAgICdjcDEyNTUnOiAgICAgICAgICAgICAgICAgICAgICAgJ0NQMTI1NScsCiAgICAnY3AxMjU2JzogICAgICAgICAgICAgICAgICAgICAgICdDUDEyNTYnLAoKICAgICMgWFhYIFRoaXMgbGlzdCBpcyBzdGlsbCBpbmNvbXBsZXRlLiBJZiB5b3Uga25vdyBtb3JlCiAgICAjIG1hcHBpbmdzLCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQuIFRoYW5rcy4KfQoKZm9yIGssIHYgaW4gc29ydGVkKGxvY2FsZV9lbmNvZGluZ19hbGlhcy5pdGVtcygpKToKICAgIGsgPSBrLnJlcGxhY2UoJ18nLCAnJykKICAgIGxvY2FsZV9lbmNvZGluZ19hbGlhcy5zZXRkZWZhdWx0KGssIHYpCmRlbCBrLCB2CgojCiMgVGhlIGxvY2FsZV9hbGlhcyB0YWJsZSBtYXBzIGxvd2VyY2FzZSBhbGlhcyBuYW1lcyB0byBDIGxvY2FsZSBuYW1lcwojIChjYXNlLXNlbnNpdGl2ZSkuIEVuY29kaW5ncyBhcmUgYWx3YXlzIHNlcGFyYXRlZCBmcm9tIHRoZSBsb2NhbGUKIyBuYW1lIHVzaW5nIGEgZG90ICgnLicpOyB0aGV5IHNob3VsZCBvbmx5IGJlIGdpdmVuIGluIGNhc2UgdGhlCiMgbGFuZ3VhZ2UgbmFtZSBpcyBuZWVkZWQgdG8gaW50ZXJwcmV0IHRoZSBnaXZlbiBlbmNvZGluZyBhbGlhcwojIGNvcnJlY3RseSAoQ0pLIGNvZGVzIG9mdGVuIGhhdmUgdGhpcyBuZWVkKS4KIwojIE5vdGUgdGhhdCB0aGUgbm9ybWFsaXplKCkgZnVuY3Rpb24gd2hpY2ggdXNlcyB0aGlzIHRhYmxlcwojIHJlbW92ZXMgJ18nIGFuZCAnLScgY2hhcmFjdGVycyBmcm9tIHRoZSBlbmNvZGluZyBwYXJ0IG9mIHRoZQojIGxvY2FsZSBuYW1lIGJlZm9yZSBkb2luZyB0aGUgbG9va3VwLiBUaGlzIHNhdmVzIGEgbG90IG9mCiMgc3BhY2UgaW4gdGhlIHRhYmxlLgojCiMgTUFMIDIwMDQtMTItMTA6CiMgVXBkYXRlZCBhbGlhcyBtYXBwaW5nIHRvIG1vc3QgcmVjZW50IGxvY2FsZS5hbGlhcyBmaWxlCiMgZnJvbSBYLm9yZyBkaXN0cmlidXRpb24gdXNpbmcgbWFrZWxvY2FsZWFsaWFzLnB5LgojCiMgVGhlc2UgYXJlIHRoZSBkaWZmZXJlbmNlcyBjb21wYXJlZCB0byB0aGUgb2xkIG1hcHBpbmcgKFB5dGhvbiAyLjQKIyBhbmQgb2xkZXIpOgojCiMgICAgdXBkYXRlZCAnYmcnIC0+ICdiZ19CRy5JU084ODU5LTUnIHRvICdiZ19CRy5DUDEyNTEnCiMgICAgdXBkYXRlZCAnYmdfYmcnIC0+ICdiZ19CRy5JU084ODU5LTUnIHRvICdiZ19CRy5DUDEyNTEnCiMgICAgdXBkYXRlZCAnYnVsZ2FyaWFuJyAtPiAnYmdfQkcuSVNPODg1OS01JyB0byAnYmdfQkcuQ1AxMjUxJwojICAgIHVwZGF0ZWQgJ2N6JyAtPiAnY3pfQ1ouSVNPODg1OS0yJyB0byAnY3NfQ1ouSVNPODg1OS0yJwojICAgIHVwZGF0ZWQgJ2N6X2N6JyAtPiAnY3pfQ1ouSVNPODg1OS0yJyB0byAnY3NfQ1ouSVNPODg1OS0yJwojICAgIHVwZGF0ZWQgJ2N6ZWNoJyAtPiAnY3NfQ1MuSVNPODg1OS0yJyB0byAnY3NfQ1ouSVNPODg1OS0yJwojICAgIHVwZGF0ZWQgJ2R1dGNoJyAtPiAnbmxfQkUuSVNPODg1OS0xJyB0byAnbmxfTkwuSVNPODg1OS0xJwojICAgIHVwZGF0ZWQgJ2V0JyAtPiAnZXRfRUUuSVNPODg1OS00JyB0byAnZXRfRUUuSVNPODg1OS0xNScKIyAgICB1cGRhdGVkICdldF9lZScgLT4gJ2V0X0VFLklTTzg4NTktNCcgdG8gJ2V0X0VFLklTTzg4NTktMTUnCiMgICAgdXBkYXRlZCAnZmknIC0+ICdmaV9GSS5JU084ODU5LTEnIHRvICdmaV9GSS5JU084ODU5LTE1JwojICAgIHVwZGF0ZWQgJ2ZpX2ZpJyAtPiAnZmlfRkkuSVNPODg1OS0xJyB0byAnZmlfRkkuSVNPODg1OS0xNScKIyAgICB1cGRhdGVkICdpdycgLT4gJ2l3X0lMLklTTzg4NTktOCcgdG8gJ2hlX0lMLklTTzg4NTktOCcKIyAgICB1cGRhdGVkICdpd19pbCcgLT4gJ2l3X0lMLklTTzg4NTktOCcgdG8gJ2hlX0lMLklTTzg4NTktOCcKIyAgICB1cGRhdGVkICdqYXBhbmVzZScgLT4gJ2phX0pQLlNKSVMnIHRvICdqYV9KUC5ldWNKUCcKIyAgICB1cGRhdGVkICdsdCcgLT4gJ2x0X0xULklTTzg4NTktNCcgdG8gJ2x0X0xULklTTzg4NTktMTMnCiMgICAgdXBkYXRlZCAnbHYnIC0+ICdsdl9MVi5JU084ODU5LTQnIHRvICdsdl9MVi5JU084ODU5LTEzJwojICAgIHVwZGF0ZWQgJ3NsJyAtPiAnc2xfQ1MuSVNPODg1OS0yJyB0byAnc2xfU0kuSVNPODg1OS0yJwojICAgIHVwZGF0ZWQgJ3Nsb3ZlbmUnIC0+ICdzbF9DUy5JU084ODU5LTInIHRvICdzbF9TSS5JU084ODU5LTInCiMgICAgdXBkYXRlZCAndGhfdGgnIC0+ICd0aF9USC5UQUNUSVMnIHRvICd0aF9USC5JU084ODU5LTExJwojICAgIHVwZGF0ZWQgJ3poX2NuJyAtPiAnemhfQ04uZXVjQ04nIHRvICd6aF9DTi5nYjIzMTInCiMgICAgdXBkYXRlZCAnemhfY24uYmlnNScgLT4gJ3poX1RXLmV1Y1RXJyB0byAnemhfVFcuYmlnNScKIyAgICB1cGRhdGVkICd6aF90dycgLT4gJ3poX1RXLmV1Y1RXJyB0byAnemhfVFcuYmlnNScKIwojIE1BTCAyMDA4LTA1LTMwOgojIFVwZGF0ZWQgYWxpYXMgbWFwcGluZyB0byBtb3N0IHJlY2VudCBsb2NhbGUuYWxpYXMgZmlsZQojIGZyb20gWC5vcmcgZGlzdHJpYnV0aW9uIHVzaW5nIG1ha2Vsb2NhbGVhbGlhcy5weS4KIwojIFRoZXNlIGFyZSB0aGUgZGlmZmVyZW5jZXMgY29tcGFyZWQgdG8gdGhlIG9sZCBtYXBwaW5nIChQeXRob24gMi41CiMgYW5kIG9sZGVyKToKIwojICAgIHVwZGF0ZWQgJ2NzX2NzLmlzbzg4NTkyJyAtPiAnY3NfQ1ouSVNPODg1OS0yJyB0byAnY3NfQ1MuSVNPODg1OS0yJwojICAgIHVwZGF0ZWQgJ3NlcmJvY3JvYXRpYW4nIC0+ICdzaF9ZVS5JU084ODU5LTInIHRvICdzcl9DUy5JU084ODU5LTInCiMgICAgdXBkYXRlZCAnc2gnIC0+ICdzaF9ZVS5JU084ODU5LTInIHRvICdzcl9DUy5JU084ODU5LTInCiMgICAgdXBkYXRlZCAnc2hfaHIuaXNvODg1OTInIC0+ICdzaF9IUi5JU084ODU5LTInIHRvICdocl9IUi5JU084ODU5LTInCiMgICAgdXBkYXRlZCAnc2hfc3AnIC0+ICdzaF9ZVS5JU084ODU5LTInIHRvICdzcl9DUy5JU084ODU5LTInCiMgICAgdXBkYXRlZCAnc2hfeXUnIC0+ICdzaF9ZVS5JU084ODU5LTInIHRvICdzcl9DUy5JU084ODU5LTInCiMgICAgdXBkYXRlZCAnc3AnIC0+ICdzcF9ZVS5JU084ODU5LTUnIHRvICdzcl9DUy5JU084ODU5LTUnCiMgICAgdXBkYXRlZCAnc3BfeXUnIC0+ICdzcF9ZVS5JU084ODU5LTUnIHRvICdzcl9DUy5JU084ODU5LTUnCiMgICAgdXBkYXRlZCAnc3InIC0+ICdzcl9ZVS5JU084ODU5LTUnIHRvICdzcl9DUy5JU084ODU5LTUnCiMgICAgdXBkYXRlZCAnc3JAY3lyaWxsaWMnIC0+ICdzcl9ZVS5JU084ODU5LTUnIHRvICdzcl9DUy5JU084ODU5LTUnCiMgICAgdXBkYXRlZCAnc3Jfc3AnIC0+ICdzcl9TUC5JU084ODU5LTInIHRvICdzcl9DUy5JU084ODU5LTInCiMgICAgdXBkYXRlZCAnc3JfeXUnIC0+ICdzcl9ZVS5JU084ODU5LTUnIHRvICdzcl9DUy5JU084ODU5LTUnCiMgICAgdXBkYXRlZCAnc3JfeXUuY3AxMjUxQGN5cmlsbGljJyAtPiAnc3JfWVUuQ1AxMjUxJyB0byAnc3JfQ1MuQ1AxMjUxJwojICAgIHVwZGF0ZWQgJ3NyX3l1Lmlzbzg4NTkyJyAtPiAnc3JfWVUuSVNPODg1OS0yJyB0byAnc3JfQ1MuSVNPODg1OS0yJwojICAgIHVwZGF0ZWQgJ3NyX3l1Lmlzbzg4NTk1JyAtPiAnc3JfWVUuSVNPODg1OS01JyB0byAnc3JfQ1MuSVNPODg1OS01JwojICAgIHVwZGF0ZWQgJ3NyX3l1Lmlzbzg4NTk1QGN5cmlsbGljJyAtPiAnc3JfWVUuSVNPODg1OS01JyB0byAnc3JfQ1MuSVNPODg1OS01JwojICAgIHVwZGF0ZWQgJ3NyX3l1Lm1pY3Jvc29mdGNwMTI1MUBjeXJpbGxpYycgLT4gJ3NyX1lVLkNQMTI1MScgdG8gJ3NyX0NTLkNQMTI1MScKIyAgICB1cGRhdGVkICdzcl95dS51dGY4QGN5cmlsbGljJyAtPiAnc3JfWVUuVVRGLTgnIHRvICdzcl9DUy5VVEYtOCcKIyAgICB1cGRhdGVkICdzcl95dUBjeXJpbGxpYycgLT4gJ3NyX1lVLklTTzg4NTktNScgdG8gJ3NyX0NTLklTTzg4NTktNScKIwojIEFQIDIwMTAtMDQtMTI6CiMgVXBkYXRlZCBhbGlhcyBtYXBwaW5nIHRvIG1vc3QgcmVjZW50IGxvY2FsZS5hbGlhcyBmaWxlCiMgZnJvbSBYLm9yZyBkaXN0cmlidXRpb24gdXNpbmcgbWFrZWxvY2FsZWFsaWFzLnB5LgojCiMgVGhlc2UgYXJlIHRoZSBkaWZmZXJlbmNlcyBjb21wYXJlZCB0byB0aGUgb2xkIG1hcHBpbmcgKFB5dGhvbiAyLjYuNQojIGFuZCBvbGRlcik6CiMKIyAgICB1cGRhdGVkICdydScgLT4gJ3J1X1JVLklTTzg4NTktNScgdG8gJ3J1X1JVLlVURi04JwojICAgIHVwZGF0ZWQgJ3J1X3J1JyAtPiAncnVfUlUuSVNPODg1OS01JyB0byAncnVfUlUuVVRGLTgnCiMgICAgdXBkYXRlZCAnc2VyYm9jcm9hdGlhbicgLT4gJ3NyX0NTLklTTzg4NTktMicgdG8gJ3NyX1JTLlVURi04QGxhdGluJwojICAgIHVwZGF0ZWQgJ3NoJyAtPiAnc3JfQ1MuSVNPODg1OS0yJyB0byAnc3JfUlMuVVRGLThAbGF0aW4nCiMgICAgdXBkYXRlZCAnc2hfeXUnIC0+ICdzcl9DUy5JU084ODU5LTInIHRvICdzcl9SUy5VVEYtOEBsYXRpbicKIyAgICB1cGRhdGVkICdzcicgLT4gJ3NyX0NTLklTTzg4NTktNScgdG8gJ3NyX1JTLlVURi04JwojICAgIHVwZGF0ZWQgJ3NyQGN5cmlsbGljJyAtPiAnc3JfQ1MuSVNPODg1OS01JyB0byAnc3JfUlMuVVRGLTgnCiMgICAgdXBkYXRlZCAnc3JAbGF0bicgLT4gJ3NyX0NTLklTTzg4NTktMicgdG8gJ3NyX1JTLlVURi04QGxhdGluJwojICAgIHVwZGF0ZWQgJ3NyX2NzLnV0ZjhAbGF0bicgLT4gJ3NyX0NTLlVURi04JyB0byAnc3JfUlMuVVRGLThAbGF0aW4nCiMgICAgdXBkYXRlZCAnc3JfY3NAbGF0bicgLT4gJ3NyX0NTLklTTzg4NTktMicgdG8gJ3NyX1JTLlVURi04QGxhdGluJwojICAgIHVwZGF0ZWQgJ3NyX3l1JyAtPiAnc3JfQ1MuSVNPODg1OS01JyB0byAnc3JfUlMuVVRGLThAbGF0aW4nCiMgICAgdXBkYXRlZCAnc3JfeXUudXRmOEBjeXJpbGxpYycgLT4gJ3NyX0NTLlVURi04JyB0byAnc3JfUlMuVVRGLTgnCiMgICAgdXBkYXRlZCAnc3JfeXVAY3lyaWxsaWMnIC0+ICdzcl9DUy5JU084ODU5LTUnIHRvICdzcl9SUy5VVEYtOCcKIwojIFNTIDIwMTMtMTItMjA6CiMgVXBkYXRlZCBhbGlhcyBtYXBwaW5nIHRvIG1vc3QgcmVjZW50IGxvY2FsZS5hbGlhcyBmaWxlCiMgZnJvbSBYLm9yZyBkaXN0cmlidXRpb24gdXNpbmcgbWFrZWxvY2FsZWFsaWFzLnB5LgojCiMgVGhlc2UgYXJlIHRoZSBkaWZmZXJlbmNlcyBjb21wYXJlZCB0byB0aGUgb2xkIG1hcHBpbmcgKFB5dGhvbiAzLjMuMwojIGFuZCBvbGRlcik6CiMKIyAgICB1cGRhdGVkICdhMycgLT4gJ2EzX0FaLktPSTgtQycgdG8gJ2F6X0FaLktPSTgtQycKIyAgICB1cGRhdGVkICdhM19heicgLT4gJ2EzX0FaLktPSTgtQycgdG8gJ2F6X0FaLktPSTgtQycKIyAgICB1cGRhdGVkICdhM19hei5rb2k4YycgLT4gJ2EzX0FaLktPSTgtQycgdG8gJ2F6X0FaLktPSTgtQycKIyAgICB1cGRhdGVkICdjc19jcy5pc284ODU5MicgLT4gJ2NzX0NTLklTTzg4NTktMicgdG8gJ2NzX0NaLklTTzg4NTktMicKIyAgICB1cGRhdGVkICdoZWJyZXcnIC0+ICdpd19JTC5JU084ODU5LTgnIHRvICdoZV9JTC5JU084ODU5LTgnCiMgICAgdXBkYXRlZCAnaGVicmV3Lmlzbzg4NTk4JyAtPiAnaXdfSUwuSVNPODg1OS04JyB0byAnaGVfSUwuSVNPODg1OS04JwojICAgIHVwZGF0ZWQgJ3NkJyAtPiAnc2RfSU5AZGV2YW5hZ2FyaS5VVEYtOCcgdG8gJ3NkX0lOLlVURi04JwojICAgIHVwZGF0ZWQgJ3NyQGxhdG4nIC0+ICdzcl9SUy5VVEYtOEBsYXRpbicgdG8gJ3NyX0NTLlVURi04QGxhdGluJwojICAgIHVwZGF0ZWQgJ3NyX2NzJyAtPiAnc3JfUlMuVVRGLTgnIHRvICdzcl9DUy5VVEYtOCcKIyAgICB1cGRhdGVkICdzcl9jcy51dGY4QGxhdG4nIC0+ICdzcl9SUy5VVEYtOEBsYXRpbicgdG8gJ3NyX0NTLlVURi04QGxhdGluJwojICAgIHVwZGF0ZWQgJ3NyX2NzQGxhdG4nIC0+ICdzcl9SUy5VVEYtOEBsYXRpbicgdG8gJ3NyX0NTLlVURi04QGxhdGluJwojCiMgU1MgMjAxNC0xMC0wMToKIyBVcGRhdGVkIGFsaWFzIG1hcHBpbmcgd2l0aCBnbGliYyAyLjE5IHN1cHBvcnRlZCBsb2NhbGVzLgojCiMgU1MgMjAxOC0wNS0wNToKIyBVcGRhdGVkIGFsaWFzIG1hcHBpbmcgd2l0aCBnbGliYyAyLjI3IHN1cHBvcnRlZCBsb2NhbGVzLgojCiMgVGhlc2UgYXJlIHRoZSBkaWZmZXJlbmNlcyBjb21wYXJlZCB0byB0aGUgb2xkIG1hcHBpbmcgKFB5dGhvbiAzLjYuNQojIGFuZCBvbGRlcik6CiMKIyAgICB1cGRhdGVkICdjYV9lc0B2YWxlbmNpYScgLT4gJ2NhX0VTLklTTzg4NTktMTVAdmFsZW5jaWEnIHRvICdjYV9FUy5VVEYtOEB2YWxlbmNpYScKIyAgICB1cGRhdGVkICdra19reicgLT4gJ2trX0taLlJLMTA0OCcgdG8gJ2trX0taLnB0Y3AxNTQnCiMgICAgdXBkYXRlZCAncnVzc2lhbicgLT4gJ3J1X1JVLklTTzg4NTktNScgdG8gJ3J1X1JVLktPSTgtUicKCmxvY2FsZV9hbGlhcyA9IHsKICAgICdhMyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXpfQVouS09JOC1DJywKICAgICdhM19heic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXpfQVouS09JOC1DJywKICAgICdhM19hei5rb2ljJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnYXpfQVouS09JOC1DJywKICAgICdhYV9kaic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWFfREouSVNPODg1OS0xJywKICAgICdhYV9lcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWFfRVIuVVRGLTgnLAogICAgJ2FhX2V0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhYV9FVC5VVEYtOCcsCiAgICAnYWYnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FmX1pBLklTTzg4NTktMScsCiAgICAnYWZfemEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FmX1pBLklTTzg4NTktMScsCiAgICAnYWdyX3BlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fncl9QRS5VVEYtOCcsCiAgICAnYWtfZ2gnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FrX0dILlVURi04JywKICAgICdhbSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW1fRVQuVVRGLTgnLAogICAgJ2FtX2V0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbV9FVC5VVEYtOCcsCiAgICAnYW1lcmljYW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLklTTzg4NTktMScsCiAgICAnYW5fZXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuX0VTLklTTzg4NTktMTUnLAogICAgJ2FucF9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbnBfSU4uVVRGLTgnLAogICAgJ2FyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9BQS5JU084ODU5LTYnLAogICAgJ2FyX2FhJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9BQS5JU084ODU5LTYnLAogICAgJ2FyX2FlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9BRS5JU084ODU5LTYnLAogICAgJ2FyX2JoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9CSC5JU084ODU5LTYnLAogICAgJ2FyX2R6JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9EWi5JU084ODU5LTYnLAogICAgJ2FyX2VnJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9FRy5JU084ODU5LTYnLAogICAgJ2FyX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9JTi5VVEYtOCcsCiAgICAnYXJfaXEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX0lRLklTTzg4NTktNicsCiAgICAnYXJfam8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX0pPLklTTzg4NTktNicsCiAgICAnYXJfa3cnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX0tXLklTTzg4NTktNicsCiAgICAnYXJfbGInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX0xCLklTTzg4NTktNicsCiAgICAnYXJfbHknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX0xZLklTTzg4NTktNicsCiAgICAnYXJfbWEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX01BLklTTzg4NTktNicsCiAgICAnYXJfb20nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX09NLklTTzg4NTktNicsCiAgICAnYXJfcWEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX1FBLklTTzg4NTktNicsCiAgICAnYXJfc2EnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX1NBLklTTzg4NTktNicsCiAgICAnYXJfc2QnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX1NELklTTzg4NTktNicsCiAgICAnYXJfc3MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX1NTLlVURi04JywKICAgICdhcl9zeSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJfU1kuSVNPODg1OS02JywKICAgICdhcl90bic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJfVE4uSVNPODg1OS02JywKICAgICdhcl95ZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJfWUUuSVNPODg1OS02JywKICAgICdhcmFiaWMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJfQUEuSVNPODg1OS02JywKICAgICdhcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNfSU4uVVRGLTgnLAogICAgJ2FzX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc19JTi5VVEYtOCcsCiAgICAnYXN0X2VzJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzdF9FUy5JU084ODU5LTE1JywKICAgICdheWNfcGUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXljX1BFLlVURi04JywKICAgICdheic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXpfQVouSVNPODg1OS05RScsCiAgICAnYXpfYXonOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F6X0FaLklTTzg4NTktOUUnLAogICAgJ2F6X2F6Lmlzbzg4NTk5ZSc6ICAgICAgICAgICAgICAgICAgICAgICdhel9BWi5JU084ODU5LTlFJywKICAgICdhel9pcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXpfSVIuVVRGLTgnLAogICAgJ2JlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZV9CWS5DUDEyNTEnLAogICAgJ2JlQGxhdGluJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZV9CWS5VVEYtOEBsYXRpbicsCiAgICAnYmVfYmcudXRmOCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JnX0JHLlVURi04JywKICAgICdiZV9ieSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVfQlkuQ1AxMjUxJywKICAgICdiZV9ieUBsYXRpbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVfQlkuVVRGLThAbGF0aW4nLAogICAgJ2JlbV96bSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZW1fWk0uVVRGLTgnLAogICAgJ2Jlcl9keic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZXJfRFouVVRGLTgnLAogICAgJ2Jlcl9tYSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZXJfTUEuVVRGLTgnLAogICAgJ2JnJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZ19CRy5DUDEyNTEnLAogICAgJ2JnX2JnJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZ19CRy5DUDEyNTEnLAogICAgJ2JoYl9pbi51dGY4JzogICAgICAgICAgICAgICAgICAgICAgICAgICdiaGJfSU4uVVRGLTgnLAogICAgJ2Job19pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaG9fSU4uVVRGLTgnLAogICAgJ2Job19ucCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaG9fTlAuVVRGLTgnLAogICAgJ2JpX3Z1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaV9WVS5VVEYtOCcsCiAgICAnYm5fYmQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JuX0JELlVURi04JywKICAgICdibl9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm5fSU4uVVRGLTgnLAogICAgJ2JvX2NuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib19DTi5VVEYtOCcsCiAgICAnYm9faW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvX0lOLlVURi04JywKICAgICdib2ttYWwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmJfTk8uSVNPODg1OS0xJywKICAgICdib2ttXHhlNWwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmJfTk8uSVNPODg1OS0xJywKICAgICdicic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJfRlIuSVNPODg1OS0xJywKICAgICdicl9mcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJfRlIuSVNPODg1OS0xJywKICAgICdicnhfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJ4X0lOLlVURi04JywKICAgICdicyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnNfQkEuSVNPODg1OS0yJywKICAgICdic19iYSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnNfQkEuSVNPODg1OS0yJywKICAgICdidWxnYXJpYW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmdfQkcuQ1AxMjUxJywKICAgICdieW5fZXInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnluX0VSLlVURi04JywKICAgICdjJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQycsCiAgICAnYy1mcmVuY2gnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyX0NBLklTTzg4NTktMScsCiAgICAnYy5hc2NpaSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0MnLAogICAgJ2MuZW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDJywKICAgICdjLmlzbzg4NTkxJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fVVMuSVNPODg1OS0xJywKICAgICdjLnV0ZjgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fVVMuVVRGLTgnLAogICAgJ2NfYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDJywKICAgICdjX2MuYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQycsCiAgICAnY2EnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhX0VTLklTTzg4NTktMScsCiAgICAnY2FfYWQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhX0FELklTTzg4NTktMScsCiAgICAnY2FfZXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhX0VTLklTTzg4NTktMScsCiAgICAnY2FfZXNAdmFsZW5jaWEnOiAgICAgICAgICAgICAgICAgICAgICAgJ2NhX0VTLlVURi04QHZhbGVuY2lhJywKICAgICdjYV9mcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FfRlIuSVNPODg1OS0xJywKICAgICdjYV9pdCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FfSVQuSVNPODg1OS0xJywKICAgICdjYXRhbGFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FfRVMuSVNPODg1OS0xJywKICAgICdjZV9ydSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2VfUlUuVVRGLTgnLAogICAgJ2NleHRlbmQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9VUy5JU084ODU5LTEnLAogICAgJ2NoaW5lc2Utcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aF9DTi5ldWNDTicsCiAgICAnY2hpbmVzZS10JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX1RXLmV1Y1RXJywKICAgICdjaHJfdXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hyX1VTLlVURi04JywKICAgICdja2JfaXEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2tiX0lRLlVURi04JywKICAgICdjbW5fdHcnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY21uX1RXLlVURi04JywKICAgICdjcmhfdWEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JoX1VBLlVURi04JywKICAgICdjcm9hdGlhbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHJfSFIuSVNPODg1OS0yJywKICAgICdjcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3NfQ1ouSVNPODg1OS0yJywKICAgICdjc19jcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3NfQ1ouSVNPODg1OS0yJywKICAgICdjc19jeic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3NfQ1ouSVNPODg1OS0yJywKICAgICdjc2JfcGwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3NiX1BMLlVURi04JywKICAgICdjdl9ydSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3ZfUlUuVVRGLTgnLAogICAgJ2N5JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjeV9HQi5JU084ODU5LTEnLAogICAgJ2N5X2diJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjeV9HQi5JU084ODU5LTEnLAogICAgJ2N6JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjc19DWi5JU084ODU5LTInLAogICAgJ2N6X2N6JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjc19DWi5JU084ODU5LTInLAogICAgJ2N6ZWNoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjc19DWi5JU084ODU5LTInLAogICAgJ2RhJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYV9ESy5JU084ODU5LTEnLAogICAgJ2RhX2RrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYV9ESy5JU084ODU5LTEnLAogICAgJ2RhbmlzaCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYV9ESy5JU084ODU5LTEnLAogICAgJ2RhbnNrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYV9ESy5JU084ODU5LTEnLAogICAgJ2RlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZV9ERS5JU084ODU5LTEnLAogICAgJ2RlX2F0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZV9BVC5JU084ODU5LTEnLAogICAgJ2RlX2JlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZV9CRS5JU084ODU5LTEnLAogICAgJ2RlX2NoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZV9DSC5JU084ODU5LTEnLAogICAgJ2RlX2RlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZV9ERS5JU084ODU5LTEnLAogICAgJ2RlX2l0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZV9JVC5JU084ODU5LTEnLAogICAgJ2RlX2xpLnV0ZjgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZV9MSS5VVEYtOCcsCiAgICAnZGVfbHUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlX0xVLklTTzg4NTktMScsCiAgICAnZGV1dHNjaCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlX0RFLklTTzg4NTktMScsCiAgICAnZG9pX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvaV9JTi5VVEYtOCcsCiAgICAnZHV0Y2gnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25sX05MLklTTzg4NTktMScsCiAgICAnZHV0Y2guaXNvODg1OTEnOiAgICAgICAgICAgICAgICAgICAgICAgJ25sX0JFLklTTzg4NTktMScsCiAgICAnZHZfbXYnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2R2X01WLlVURi04JywKICAgICdkel9idCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHpfQlQuVVRGLTgnLAogICAgJ2VlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZV9FRS5JU084ODU5LTQnLAogICAgJ2VlX2VlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZV9FRS5JU084ODU5LTQnLAogICAgJ2Vlc3RpJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldF9FRS5JU084ODU5LTEnLAogICAgJ2VsJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbF9HUi5JU084ODU5LTcnLAogICAgJ2VsX2N5JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbF9DWS5JU084ODU5LTcnLAogICAgJ2VsX2dyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbF9HUi5JU084ODU5LTcnLAogICAgJ2VsX2dyQGV1cm8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbF9HUi5JU084ODU5LTE1JywKICAgICdlbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fVVMuSVNPODg1OS0xJywKICAgICdlbl9hZyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fQUcuVVRGLTgnLAogICAgJ2VuX2F1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9BVS5JU084ODU5LTEnLAogICAgJ2VuX2JlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9CRS5JU084ODU5LTEnLAogICAgJ2VuX2J3JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9CVy5JU084ODU5LTEnLAogICAgJ2VuX2NhJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9DQS5JU084ODU5LTEnLAogICAgJ2VuX2RrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9ESy5JU084ODU5LTEnLAogICAgJ2VuX2RsLnV0ZjgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9ETC5VVEYtOCcsCiAgICAnZW5fZ2InOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0dCLklTTzg4NTktMScsCiAgICAnZW5faGsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0hLLklTTzg4NTktMScsCiAgICAnZW5faWUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0lFLklTTzg4NTktMScsCiAgICAnZW5faWwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0lMLlVURi04JywKICAgICdlbl9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fSU4uSVNPODg1OS0xJywKICAgICdlbl9uZyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fTkcuVVRGLTgnLAogICAgJ2VuX256JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9OWi5JU084ODU5LTEnLAogICAgJ2VuX3BoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9QSC5JU084ODU5LTEnLAogICAgJ2VuX3NjLnV0ZjgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9TQy5VVEYtOCcsCiAgICAnZW5fc2cnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1NHLklTTzg4NTktMScsCiAgICAnZW5fdWsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0dCLklTTzg4NTktMScsCiAgICAnZW5fdXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLklTTzg4NTktMScsCiAgICAnZW5fdXNAZXVyb0BldXJvJzogICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLklTTzg4NTktMTUnLAogICAgJ2VuX3phJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9aQS5JU084ODU5LTEnLAogICAgJ2VuX3ptJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9aTS5VVEYtOCcsCiAgICAnZW5fencnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1pXLklTTzg4NTktMScsCiAgICAnZW5fencudXRmOCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1pTLlVURi04JywKICAgICdlbmdfZ2InOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fR0IuSVNPODg1OS0xJywKICAgICdlbmdsaXNoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fRU4uSVNPODg1OS0xJywKICAgICdlbmdsaXNoLmlzbzg4NTkxJzogICAgICAgICAgICAgICAgICAgICAnZW5fVVMuSVNPODg1OS0xJywKICAgICdlbmdsaXNoX3VrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fR0IuSVNPODg1OS0xJywKICAgICdlbmdsaXNoX3VuaXRlZC1zdGF0ZXMnOiAgICAgICAgICAgICAgICAnZW5fVVMuSVNPODg1OS0xJywKICAgICdlbmdsaXNoX3VuaXRlZC1zdGF0ZXMuNDM3JzogICAgICAgICAgICAnQycsCiAgICAnZW5nbGlzaF91cyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLklTTzg4NTktMScsCiAgICAnZW8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VvX1hYLklTTzg4NTktMycsCiAgICAnZW8udXRmOCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VvLlVURi04JywKICAgICdlb19lbyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW9fRU8uSVNPODg1OS0zJywKICAgICdlb191cy51dGY4JzogICAgICAgICAgICAgICAgICAgICAgICAgICAnZW9fVVMuVVRGLTgnLAogICAgJ2VvX3h4JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlb19YWC5JU084ODU5LTMnLAogICAgJ2VzJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlc19FUy5JU084ODU5LTEnLAogICAgJ2VzX2FyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlc19BUi5JU084ODU5LTEnLAogICAgJ2VzX2JvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlc19CTy5JU084ODU5LTEnLAogICAgJ2VzX2NsJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlc19DTC5JU084ODU5LTEnLAogICAgJ2VzX2NvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlc19DTy5JU084ODU5LTEnLAogICAgJ2VzX2NyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlc19DUi5JU084ODU5LTEnLAogICAgJ2VzX2N1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlc19DVS5VVEYtOCcsCiAgICAnZXNfZG8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX0RPLklTTzg4NTktMScsCiAgICAnZXNfZWMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX0VDLklTTzg4NTktMScsCiAgICAnZXNfZXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX0VTLklTTzg4NTktMScsCiAgICAnZXNfZ3QnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX0dULklTTzg4NTktMScsCiAgICAnZXNfaG4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX0hOLklTTzg4NTktMScsCiAgICAnZXNfbXgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX01YLklTTzg4NTktMScsCiAgICAnZXNfbmknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX05JLklTTzg4NTktMScsCiAgICAnZXNfcGEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX1BBLklTTzg4NTktMScsCiAgICAnZXNfcGUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX1BFLklTTzg4NTktMScsCiAgICAnZXNfcHInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX1BSLklTTzg4NTktMScsCiAgICAnZXNfcHknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX1BZLklTTzg4NTktMScsCiAgICAnZXNfc3YnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX1NWLklTTzg4NTktMScsCiAgICAnZXNfdXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX1VTLklTTzg4NTktMScsCiAgICAnZXNfdXknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX1VZLklTTzg4NTktMScsCiAgICAnZXNfdmUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VzX1ZFLklTTzg4NTktMScsCiAgICAnZXN0b25pYW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V0X0VFLklTTzg4NTktMScsCiAgICAnZXQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V0X0VFLklTTzg4NTktMTUnLAogICAgJ2V0X2VlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldF9FRS5JU084ODU5LTE1JywKICAgICdldSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXVfRVMuSVNPODg1OS0xJywKICAgICdldV9lcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXVfRVMuSVNPODg1OS0xJywKICAgICdldV9mcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXVfRlIuSVNPODg1OS0xJywKICAgICdmYSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFfSVIuVVRGLTgnLAogICAgJ2ZhX2lyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYV9JUi5VVEYtOCcsCiAgICAnZmFfaXIuaXNpcmkzMzQyJzogICAgICAgICAgICAgICAgICAgICAgJ2ZhX0lSLklTSVJJLTMzNDInLAogICAgJ2ZmX3NuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmZl9TTi5VVEYtOCcsCiAgICAnZmknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpX0ZJLklTTzg4NTktMTUnLAogICAgJ2ZpX2ZpJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaV9GSS5JU084ODU5LTE1JywKICAgICdmaWxfcGgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsX1BILlVURi04JywKICAgICdmaW5uaXNoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlfRkkuSVNPODg1OS0xJywKICAgICdmbyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9fRk8uSVNPODg1OS0xJywKICAgICdmb19mbyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9fRk8uSVNPODg1OS0xJywKICAgICdmcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfRlIuSVNPODg1OS0xJywKICAgICdmcl9iZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfQkUuSVNPODg1OS0xJywKICAgICdmcl9jYSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfQ0EuSVNPODg1OS0xJywKICAgICdmcl9jaCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfQ0guSVNPODg1OS0xJywKICAgICdmcl9mcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfRlIuSVNPODg1OS0xJywKICAgICdmcl9sdSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfTFUuSVNPODg1OS0xJywKICAgICdmcmFuXHhlN2Fpcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfRlIuSVNPODg1OS0xJywKICAgICdmcmVfZnInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfRlIuSVNPODg1OS0xJywKICAgICdmcmVuY2gnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJfRlIuSVNPODg1OS0xJywKICAgICdmcmVuY2guaXNvODg1OTEnOiAgICAgICAgICAgICAgICAgICAgICAnZnJfQ0guSVNPODg1OS0xJywKICAgICdmcmVuY2hfZnJhbmNlJzogICAgICAgICAgICAgICAgICAgICAgICAnZnJfRlIuSVNPODg1OS0xJywKICAgICdmdXJfaXQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnVyX0lULlVURi04JywKICAgICdmeV9kZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnlfREUuVVRGLTgnLAogICAgJ2Z5X25sJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmeV9OTC5VVEYtOCcsCiAgICAnZ2EnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dhX0lFLklTTzg4NTktMScsCiAgICAnZ2FfaWUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dhX0lFLklTTzg4NTktMScsCiAgICAnZ2FsZWdvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsX0VTLklTTzg4NTktMScsCiAgICAnZ2FsaWNpYW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsX0VTLklTTzg4NTktMScsCiAgICAnZ2QnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dkX0dCLklTTzg4NTktMScsCiAgICAnZ2RfZ2InOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dkX0dCLklTTzg4NTktMScsCiAgICAnZ2VyX2RlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlX0RFLklTTzg4NTktMScsCiAgICAnZ2VybWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlX0RFLklTTzg4NTktMScsCiAgICAnZ2VybWFuLmlzbzg4NTkxJzogICAgICAgICAgICAgICAgICAgICAgJ2RlX0NILklTTzg4NTktMScsCiAgICAnZ2VybWFuX2dlcm1hbnknOiAgICAgICAgICAgICAgICAgICAgICAgJ2RlX0RFLklTTzg4NTktMScsCiAgICAnZ2V6X2VyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlel9FUi5VVEYtOCcsCiAgICAnZ2V6X2V0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlel9FVC5VVEYtOCcsCiAgICAnZ2wnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsX0VTLklTTzg4NTktMScsCiAgICAnZ2xfZXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsX0VTLklTTzg4NTktMScsCiAgICAnZ3JlZWsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsX0dSLklTTzg4NTktNycsCiAgICAnZ3VfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2d1X0lOLlVURi04JywKICAgICdndic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3ZfR0IuSVNPODg1OS0xJywKICAgICdndl9nYic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3ZfR0IuSVNPODg1OS0xJywKICAgICdoYV9uZyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFfTkcuVVRGLTgnLAogICAgJ2hha190dyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYWtfVFcuVVRGLTgnLAogICAgJ2hlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZV9JTC5JU084ODU5LTgnLAogICAgJ2hlX2lsJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZV9JTC5JU084ODU5LTgnLAogICAgJ2hlYnJldyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZV9JTC5JU084ODU5LTgnLAogICAgJ2hpJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaV9JTi5JU0NJSS1ERVYnLAogICAgJ2hpX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaV9JTi5JU0NJSS1ERVYnLAogICAgJ2hpX2luLmlzY2lpZGV2JzogICAgICAgICAgICAgICAgICAgICAgICdoaV9JTi5JU0NJSS1ERVYnLAogICAgJ2hpZl9maic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaWZfRkouVVRGLTgnLAogICAgJ2huZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdobmVfSU4uVVRGLTgnLAogICAgJ2huZV9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdobmVfSU4uVVRGLTgnLAogICAgJ2hyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdocl9IUi5JU084ODU5LTInLAogICAgJ2hyX2hyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdocl9IUi5JU084ODU5LTInLAogICAgJ2hydmF0c2tpJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdocl9IUi5JU084ODU5LTInLAogICAgJ2hzYl9kZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoc2JfREUuSVNPODg1OS0yJywKICAgICdodF9odCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHRfSFQuVVRGLTgnLAogICAgJ2h1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodV9IVS5JU084ODU5LTInLAogICAgJ2h1X2h1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodV9IVS5JU084ODU5LTInLAogICAgJ2h1bmdhcmlhbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodV9IVS5JU084ODU5LTInLAogICAgJ2h5X2FtJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoeV9BTS5VVEYtOCcsCiAgICAnaHlfYW0uYXJtc2NpaTgnOiAgICAgICAgICAgICAgICAgICAgICAgJ2h5X0FNLkFSTVNDSUlfOCcsCiAgICAnaWEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lhLlVURi04JywKICAgICdpYV9mcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWFfRlIuVVRGLTgnLAogICAgJ2ljZWxhbmRpYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19JUy5JU084ODU5LTEnLAogICAgJ2lkJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZF9JRC5JU084ODU5LTEnLAogICAgJ2lkX2lkJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZF9JRC5JU084ODU5LTEnLAogICAgJ2lnX25nJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZ19ORy5VVEYtOCcsCiAgICAnaWtfY2EnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lrX0NBLlVURi04JywKICAgICdpbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRfSUQuSVNPODg1OS0xJywKICAgICdpbl9pZCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRfSUQuSVNPODg1OS0xJywKICAgICdpcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfSVMuSVNPODg1OS0xJywKICAgICdpc19pcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfSVMuSVNPODg1OS0xJywKICAgICdpc28tODg1OS0xJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fVVMuSVNPODg1OS0xJywKICAgICdpc28tODg1OS0xNSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fVVMuSVNPODg1OS0xNScsCiAgICAnaXNvODg1OS0xJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLklTTzg4NTktMScsCiAgICAnaXNvODg1OS0xNSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLklTTzg4NTktMTUnLAogICAgJ2lzb184ODU5XzEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9VUy5JU084ODU5LTEnLAogICAgJ2lzb184ODU5XzE1JzogICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9VUy5JU084ODU5LTE1JywKICAgICdpdCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXRfSVQuSVNPODg1OS0xJywKICAgICdpdF9jaCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXRfQ0guSVNPODg1OS0xJywKICAgICdpdF9pdCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXRfSVQuSVNPODg1OS0xJywKICAgICdpdGFsaWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXRfSVQuSVNPODg1OS0xJywKICAgICdpdSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXVfQ0EuTlVOQUNPTS04JywKICAgICdpdV9jYSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXVfQ0EuTlVOQUNPTS04JywKICAgICdpdV9jYS5udW5hY29tOCc6ICAgICAgICAgICAgICAgICAgICAgICAnaXVfQ0EuTlVOQUNPTS04JywKICAgICdpdyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVfSUwuSVNPODg1OS04JywKICAgICdpd19pbCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVfSUwuSVNPODg1OS04JywKICAgICdpd19pbC51dGY4JzogICAgICAgICAgICAgICAgICAgICAgICAgICAnaXdfSUwuVVRGLTgnLAogICAgJ2phJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqYV9KUC5ldWNKUCcsCiAgICAnamFfanAnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2phX0pQLmV1Y0pQJywKICAgICdqYV9qcC5ldWMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnamFfSlAuZXVjSlAnLAogICAgJ2phX2pwLm1zY29kZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICdqYV9KUC5TSklTJywKICAgICdqYV9qcC5wY2snOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnamFfSlAuU0pJUycsCiAgICAnamFwYW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2phX0pQLmV1Y0pQJywKICAgICdqYXBhbmVzZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnamFfSlAuZXVjSlAnLAogICAgJ2phcGFuZXNlLWV1Yyc6ICAgICAgICAgICAgICAgICAgICAgICAgICdqYV9KUC5ldWNKUCcsCiAgICAnamFwYW5lc2UuZXVjJzogICAgICAgICAgICAgICAgICAgICAgICAgJ2phX0pQLmV1Y0pQJywKICAgICdqcF9qcCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnamFfSlAuZXVjSlAnLAogICAgJ2thJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrYV9HRS5HRU9SR0lBTi1BQ0FERU1ZJywKICAgICdrYV9nZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2FfR0UuR0VPUkdJQU4tQUNBREVNWScsCiAgICAna2FfZ2UuZ2VvcmdpYW5hY2FkZW15JzogICAgICAgICAgICAgICAgJ2thX0dFLkdFT1JHSUFOLUFDQURFTVknLAogICAgJ2thX2dlLmdlb3JnaWFucHMnOiAgICAgICAgICAgICAgICAgICAgICdrYV9HRS5HRU9SR0lBTi1QUycsCiAgICAna2FfZ2UuZ2VvcmdpYW5ycyc6ICAgICAgICAgICAgICAgICAgICAgJ2thX0dFLkdFT1JHSUFOLUFDQURFTVknLAogICAgJ2thYl9keic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrYWJfRFouVVRGLTgnLAogICAgJ2trX2t6JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdra19LWi5wdGNwMTU0JywKICAgICdrbCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2xfR0wuSVNPODg1OS0xJywKICAgICdrbF9nbCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2xfR0wuSVNPODg1OS0xJywKICAgICdrbV9raCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna21fS0guVVRGLTgnLAogICAgJ2tuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrbl9JTi5VVEYtOCcsCiAgICAna25faW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tuX0lOLlVURi04JywKICAgICdrbyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna29fS1IuZXVjS1InLAogICAgJ2tvX2tyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrb19LUi5ldWNLUicsCiAgICAna29fa3IuZXVjJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tvX0tSLmV1Y0tSJywKICAgICdrb2tfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna29rX0lOLlVURi04JywKICAgICdrb3JlYW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna29fS1IuZXVjS1InLAogICAgJ2tvcmVhbi5ldWMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdrb19LUi5ldWNLUicsCiAgICAna3MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tzX0lOLlVURi04JywKICAgICdrc19pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3NfSU4uVVRGLTgnLAogICAgJ2tzX2luQGRldmFuYWdhcmkudXRmOCc6ICAgICAgICAgICAgICAgICdrc19JTi5VVEYtOEBkZXZhbmFnYXJpJywKICAgICdrdV90cic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3VfVFIuSVNPODg1OS05JywKICAgICdrdyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3dfR0IuSVNPODg1OS0xJywKICAgICdrd19nYic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3dfR0IuSVNPODg1OS0xJywKICAgICdreSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3lfS0cuVVRGLTgnLAogICAgJ2t5X2tnJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdreV9LRy5VVEYtOCcsCiAgICAnbGJfbHUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xiX0xVLlVURi04JywKICAgICdsZ191Zyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGdfVUcuSVNPODg1OS0xMCcsCiAgICAnbGlfYmUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpX0JFLlVURi04JywKICAgICdsaV9ubCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlfTkwuVVRGLTgnLAogICAgJ2xpal9pdCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWpfSVQuVVRGLTgnLAogICAgJ2xpdGh1YW5pYW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdF9MVC5JU084ODU5LTEzJywKICAgICdsbl9jZCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG5fQ0QuVVRGLTgnLAogICAgJ2xvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb19MQS5NVUxFTEFPLTEnLAogICAgJ2xvX2xhJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb19MQS5NVUxFTEFPLTEnLAogICAgJ2xvX2xhLmNwMTEzMyc6ICAgICAgICAgICAgICAgICAgICAgICAgICdsb19MQS5JQk0tQ1AxMTMzJywKICAgICdsb19sYS5pYm1jcDExMzMnOiAgICAgICAgICAgICAgICAgICAgICAnbG9fTEEuSUJNLUNQMTEzMycsCiAgICAnbG9fbGEubXVsZWxhbzEnOiAgICAgICAgICAgICAgICAgICAgICAgJ2xvX0xBLk1VTEVMQU8tMScsCiAgICAnbHQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x0X0xULklTTzg4NTktMTMnLAogICAgJ2x0X2x0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdF9MVC5JU084ODU5LTEzJywKICAgICdsdic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHZfTFYuSVNPODg1OS0xMycsCiAgICAnbHZfbHYnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x2X0xWLklTTzg4NTktMTMnLAogICAgJ2x6aF90dyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsemhfVFcuVVRGLTgnLAogICAgJ21hZ19pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWdfSU4uVVRGLTgnLAogICAgJ21haSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWlfSU4uVVRGLTgnLAogICAgJ21haV9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWlfSU4uVVRGLTgnLAogICAgJ21haV9ucCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWlfTlAuVVRGLTgnLAogICAgJ21mZV9tdSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZmVfTVUuVVRGLTgnLAogICAgJ21nX21nJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZ19NRy5JU084ODU5LTE1JywKICAgICdtaHJfcnUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWhyX1JVLlVURi04JywKICAgICdtaSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlfTlouSVNPODg1OS0xJywKICAgICdtaV9ueic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlfTlouSVNPODg1OS0xJywKICAgICdtaXFfbmknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlxX05JLlVURi04JywKICAgICdtandfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWp3X0lOLlVURi04JywKICAgICdtayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWtfTUsuSVNPODg1OS01JywKICAgICdta19tayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWtfTUsuSVNPODg1OS01JywKICAgICdtbCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWxfSU4uVVRGLTgnLAogICAgJ21sX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtbF9JTi5VVEYtOCcsCiAgICAnbW5fbW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21uX01OLlVURi04JywKICAgICdtbmlfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW5pX0lOLlVURi04JywKICAgICdtcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXJfSU4uVVRGLTgnLAogICAgJ21yX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtcl9JTi5VVEYtOCcsCiAgICAnbXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zX01ZLklTTzg4NTktMScsCiAgICAnbXNfbXknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zX01ZLklTTzg4NTktMScsCiAgICAnbXQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ210X01ULklTTzg4NTktMycsCiAgICAnbXRfbXQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ210X01ULklTTzg4NTktMycsCiAgICAnbXlfbW0nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ215X01NLlVURi04JywKICAgICduYW5fdHcnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFuX1RXLlVURi04JywKICAgICduYic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmJfTk8uSVNPODg1OS0xJywKICAgICduYl9ubyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmJfTk8uSVNPODg1OS0xJywKICAgICduZHNfZGUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmRzX0RFLlVURi04JywKICAgICduZHNfbmwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmRzX05MLlVURi04JywKICAgICduZV9ucCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVfTlAuVVRGLTgnLAogICAgJ25obl9teCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduaG5fTVguVVRGLTgnLAogICAgJ25pdV9udSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduaXVfTlUuVVRGLTgnLAogICAgJ25pdV9ueic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduaXVfTlouVVRGLTgnLAogICAgJ25sJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubF9OTC5JU084ODU5LTEnLAogICAgJ25sX2F3JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubF9BVy5VVEYtOCcsCiAgICAnbmxfYmUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25sX0JFLklTTzg4NTktMScsCiAgICAnbmxfbmwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25sX05MLklTTzg4NTktMScsCiAgICAnbm4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25uX05PLklTTzg4NTktMScsCiAgICAnbm5fbm8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25uX05PLklTTzg4NTktMScsCiAgICAnbm8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vX05PLklTTzg4NTktMScsCiAgICAnbm9Abnlub3Jzayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ255X05PLklTTzg4NTktMScsCiAgICAnbm9fbm8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vX05PLklTTzg4NTktMScsCiAgICAnbm9fbm8uaXNvODg1OTFAYm9rbWFsJzogICAgICAgICAgICAgICAgJ25vX05PLklTTzg4NTktMScsCiAgICAnbm9fbm8uaXNvODg1OTFAbnlub3Jzayc6ICAgICAgICAgICAgICAgJ25vX05PLklTTzg4NTktMScsCiAgICAnbm9yd2VnaWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vX05PLklTTzg4NTktMScsCiAgICAnbnInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25yX1pBLklTTzg4NTktMScsCiAgICAnbnJfemEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25yX1pBLklTTzg4NTktMScsCiAgICAnbnNvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25zb19aQS5JU084ODU5LTE1JywKICAgICduc29femEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnNvX1pBLklTTzg4NTktMTUnLAogICAgJ255JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdueV9OTy5JU084ODU5LTEnLAogICAgJ255X25vJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdueV9OTy5JU084ODU5LTEnLAogICAgJ255bm9yc2snOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubl9OTy5JU084ODU5LTEnLAogICAgJ29jJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvY19GUi5JU084ODU5LTEnLAogICAgJ29jX2ZyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvY19GUi5JU084ODU5LTEnLAogICAgJ29tX2V0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbV9FVC5VVEYtOCcsCiAgICAnb21fa2UnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29tX0tFLklTTzg4NTktMScsCiAgICAnb3InOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yX0lOLlVURi04JywKICAgICdvcl9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3JfSU4uVVRGLTgnLAogICAgJ29zX3J1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvc19SVS5VVEYtOCcsCiAgICAncGEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhX0lOLlVURi04JywKICAgICdwYV9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFfSU4uVVRGLTgnLAogICAgJ3BhX3BrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYV9QSy5VVEYtOCcsCiAgICAncGFwX2FuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcF9BTi5VVEYtOCcsCiAgICAncGFwX2F3JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcF9BVy5VVEYtOCcsCiAgICAncGFwX2N3JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcF9DVy5VVEYtOCcsCiAgICAncGQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BkX1VTLklTTzg4NTktMScsCiAgICAncGRfZGUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BkX0RFLklTTzg4NTktMScsCiAgICAncGRfdXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BkX1VTLklTTzg4NTktMScsCiAgICAncGgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BoX1BILklTTzg4NTktMScsCiAgICAncGhfcGgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BoX1BILklTTzg4NTktMScsCiAgICAncGwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsX1BMLklTTzg4NTktMicsCiAgICAncGxfcGwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsX1BMLklTTzg4NTktMicsCiAgICAncG9saXNoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsX1BMLklTTzg4NTktMicsCiAgICAncG9ydHVndWVzZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B0X1BULklTTzg4NTktMScsCiAgICAncG9ydHVndWVzZV9icmF6aWwnOiAgICAgICAgICAgICAgICAgICAgJ3B0X0JSLklTTzg4NTktMScsCiAgICAncG9zaXgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0MnLAogICAgJ3Bvc2l4LXV0ZjInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdDJywKICAgICdwcCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHBfQU4uSVNPODg1OS0xJywKICAgICdwcF9hbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHBfQU4uSVNPODg1OS0xJywKICAgICdwc19hZic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHNfQUYuVVRGLTgnLAogICAgJ3B0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdF9QVC5JU084ODU5LTEnLAogICAgJ3B0X2JyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdF9CUi5JU084ODU5LTEnLAogICAgJ3B0X3B0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdF9QVC5JU084ODU5LTEnLAogICAgJ3F1el9wZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXpfUEUuVVRGLTgnLAogICAgJ3Jhal9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYWpfSU4uVVRGLTgnLAogICAgJ3JvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb19STy5JU084ODU5LTInLAogICAgJ3JvX3JvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb19STy5JU084ODU5LTInLAogICAgJ3JvbWFuaWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb19STy5JU084ODU5LTInLAogICAgJ3J1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdydV9SVS5VVEYtOCcsCiAgICAncnVfcnUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1X1JVLlVURi04JywKICAgICdydV91YSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVfVUEuS09JOC1VJywKICAgICdydW1hbmlhbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9fUk8uSVNPODg1OS0yJywKICAgICdydXNzaWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVfUlUuS09JOC1SJywKICAgICdydyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncndfUlcuSVNPODg1OS0xJywKICAgICdyd19ydyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncndfUlcuSVNPODg1OS0xJywKICAgICdzYV9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FfSU4uVVRGLTgnLAogICAgJ3NhdF9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYXRfSU4uVVRGLTgnLAogICAgJ3NjX2l0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY19JVC5VVEYtOCcsCiAgICAnc2QnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NkX0lOLlVURi04JywKICAgICdzZF9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2RfSU4uVVRGLTgnLAogICAgJ3NkX2luQGRldmFuYWdhcmkudXRmOCc6ICAgICAgICAgICAgICAgICdzZF9JTi5VVEYtOEBkZXZhbmFnYXJpJywKICAgICdzZF9wayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2RfUEsuVVRGLTgnLAogICAgJ3NlX25vJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZV9OTy5VVEYtOCcsCiAgICAnc2VyYm9jcm9hdGlhbic6ICAgICAgICAgICAgICAgICAgICAgICAgJ3NyX1JTLlVURi04QGxhdGluJywKICAgICdzZ3NfbHQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2dzX0xULlVURi04JywKICAgICdzaCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLThAbGF0aW4nLAogICAgJ3NoX2JhLmlzbzg4NTkyQGJvc25pYSc6ICAgICAgICAgICAgICAgICdzcl9DUy5JU084ODU5LTInLAogICAgJ3NoX2hyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaF9IUi5JU084ODU5LTInLAogICAgJ3NoX2hyLmlzbzg4NTkyJzogICAgICAgICAgICAgICAgICAgICAgICdocl9IUi5JU084ODU5LTInLAogICAgJ3NoX3NwJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9DUy5JU084ODU5LTInLAogICAgJ3NoX3l1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9SUy5VVEYtOEBsYXRpbicsCiAgICAnc2huX21tJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nobl9NTS5VVEYtOCcsCiAgICAnc2hzX2NhJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Noc19DQS5VVEYtOCcsCiAgICAnc2knOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpX0xLLlVURi04JywKICAgICdzaV9sayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2lfTEsuVVRGLTgnLAogICAgJ3NpZF9ldCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaWRfRVQuVVRGLTgnLAogICAgJ3NpbmhhbGEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaV9MSy5VVEYtOCcsCiAgICAnc2snOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NrX1NLLklTTzg4NTktMicsCiAgICAnc2tfc2snOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NrX1NLLklTTzg4NTktMicsCiAgICAnc2wnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NsX1NJLklTTzg4NTktMicsCiAgICAnc2xfY3MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NsX0NTLklTTzg4NTktMicsCiAgICAnc2xfc2knOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NsX1NJLklTTzg4NTktMicsCiAgICAnc2xvdmFrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NrX1NLLklTTzg4NTktMicsCiAgICAnc2xvdmVuZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NsX1NJLklTTzg4NTktMicsCiAgICAnc2xvdmVuaWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NsX1NJLklTTzg4NTktMicsCiAgICAnc21fd3MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NtX1dTLlVURi04JywKICAgICdzb19kaic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc29fREouSVNPODg1OS0xJywKICAgICdzb19ldCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc29fRVQuVVRGLTgnLAogICAgJ3NvX2tlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb19LRS5JU084ODU5LTEnLAogICAgJ3NvX3NvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb19TTy5JU084ODU5LTEnLAogICAgJ3NwJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9DUy5JU084ODU5LTUnLAogICAgJ3NwX3l1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9DUy5JU084ODU5LTUnLAogICAgJ3NwYW5pc2gnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlc19FUy5JU084ODU5LTEnLAogICAgJ3NwYW5pc2hfc3BhaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICdlc19FUy5JU084ODU5LTEnLAogICAgJ3NxJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcV9BTC5JU084ODU5LTInLAogICAgJ3NxX2FsJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcV9BTC5JU084ODU5LTInLAogICAgJ3NxX21rJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcV9NSy5VVEYtOCcsCiAgICAnc3InOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyX1JTLlVURi04JywKICAgICdzckBjeXJpbGxpYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLTgnLAogICAgJ3NyQGxhdG4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9DUy5VVEYtOEBsYXRpbicsCiAgICAnc3JfY3MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyX0NTLlVURi04JywKICAgICdzcl9jcy5pc284ODU5MkBsYXRuJzogICAgICAgICAgICAgICAgICAnc3JfQ1MuSVNPODg1OS0yJywKICAgICdzcl9jc0BsYXRuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfQ1MuVVRGLThAbGF0aW4nLAogICAgJ3NyX21lJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9NRS5VVEYtOCcsCiAgICAnc3JfcnMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyX1JTLlVURi04JywKICAgICdzcl9yc0BsYXRuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLThAbGF0aW4nLAogICAgJ3NyX3NwJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9DUy5JU084ODU5LTInLAogICAgJ3NyX3l1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9SUy5VVEYtOEBsYXRpbicsCiAgICAnc3JfeXUuY3AxMjUxQGN5cmlsbGljJzogICAgICAgICAgICAgICAgJ3NyX0NTLkNQMTI1MScsCiAgICAnc3JfeXUuaXNvODg1OTInOiAgICAgICAgICAgICAgICAgICAgICAgJ3NyX0NTLklTTzg4NTktMicsCiAgICAnc3JfeXUuaXNvODg1OTUnOiAgICAgICAgICAgICAgICAgICAgICAgJ3NyX0NTLklTTzg4NTktNScsCiAgICAnc3JfeXUuaXNvODg1OTVAY3lyaWxsaWMnOiAgICAgICAgICAgICAgJ3NyX0NTLklTTzg4NTktNScsCiAgICAnc3JfeXUubWljcm9zb2Z0Y3AxMjUxQGN5cmlsbGljJzogICAgICAgJ3NyX0NTLkNQMTI1MScsCiAgICAnc3JfeXUudXRmOCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyX1JTLlVURi04JywKICAgICdzcl95dS51dGY4QGN5cmlsbGljJzogICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLTgnLAogICAgJ3NyX3l1QGN5cmlsbGljJzogICAgICAgICAgICAgICAgICAgICAgICdzcl9SUy5VVEYtOCcsCiAgICAnc3MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NzX1pBLklTTzg4NTktMScsCiAgICAnc3NfemEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NzX1pBLklTTzg4NTktMScsCiAgICAnc3QnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0X1pBLklTTzg4NTktMScsCiAgICAnc3RfemEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0X1pBLklTTzg4NTktMScsCiAgICAnc3YnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2X1NFLklTTzg4NTktMScsCiAgICAnc3ZfZmknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2X0ZJLklTTzg4NTktMScsCiAgICAnc3Zfc2UnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2X1NFLklTTzg4NTktMScsCiAgICAnc3dfa2UnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3X0tFLlVURi04JywKICAgICdzd190eic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3dfVFouVVRGLTgnLAogICAgJ3N3ZWRpc2gnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdl9TRS5JU084ODU5LTEnLAogICAgJ3N6bF9wbCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzemxfUEwuVVRGLTgnLAogICAgJ3RhJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YV9JTi5UU0NJSS0wJywKICAgICd0YV9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFfSU4uVFNDSUktMCcsCiAgICAndGFfaW4udHNjaWknOiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhX0lOLlRTQ0lJLTAnLAogICAgJ3RhX2luLnRzY2lpMCc6ICAgICAgICAgICAgICAgICAgICAgICAgICd0YV9JTi5UU0NJSS0wJywKICAgICd0YV9sayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFfTEsuVVRGLTgnLAogICAgJ3RjeV9pbi51dGY4JzogICAgICAgICAgICAgICAgICAgICAgICAgICd0Y3lfSU4uVVRGLTgnLAogICAgJ3RlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZV9JTi5VVEYtOCcsCiAgICAndGVfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RlX0lOLlVURi04JywKICAgICd0Zyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGdfVEouS09JOC1DJywKICAgICd0Z190aic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGdfVEouS09JOC1DJywKICAgICd0aCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhfVEguSVNPODg1OS0xMScsCiAgICAndGhfdGgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoX1RILklTTzg4NTktMTEnLAogICAgJ3RoX3RoLnRhY3Rpcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICd0aF9USC5USVM2MjAnLAogICAgJ3RoX3RoLnRpczYyMCc6ICAgICAgICAgICAgICAgICAgICAgICAgICd0aF9USC5USVM2MjAnLAogICAgJ3RoYWknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aF9USC5JU084ODU5LTExJywKICAgICd0aGVfbnAnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlX05QLlVURi04JywKICAgICd0aV9lcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGlfRVIuVVRGLTgnLAogICAgJ3RpX2V0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aV9FVC5VVEYtOCcsCiAgICAndGlnX2VyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ19FUi5VVEYtOCcsCiAgICAndGtfdG0nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RrX1RNLlVURi04JywKICAgICd0bCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGxfUEguSVNPODg1OS0xJywKICAgICd0bF9waCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGxfUEguSVNPODg1OS0xJywKICAgICd0bic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG5fWkEuSVNPODg1OS0xNScsCiAgICAndG5femEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RuX1pBLklTTzg4NTktMTUnLAogICAgJ3RvX3RvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b19UTy5VVEYtOCcsCiAgICAndHBpX3BnJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RwaV9QRy5VVEYtOCcsCiAgICAndHInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyX1RSLklTTzg4NTktOScsCiAgICAndHJfY3knOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyX0NZLklTTzg4NTktOScsCiAgICAndHJfdHInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyX1RSLklTTzg4NTktOScsCiAgICAndHMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RzX1pBLklTTzg4NTktMScsCiAgICAndHNfemEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RzX1pBLklTTzg4NTktMScsCiAgICAndHQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0X1JVLlRBVEFSLUNZUicsCiAgICAndHRfcnUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0X1JVLlRBVEFSLUNZUicsCiAgICAndHRfcnUudGF0YXJjeXInOiAgICAgICAgICAgICAgICAgICAgICAgJ3R0X1JVLlRBVEFSLUNZUicsCiAgICAndHRfcnVAaXF0ZWxpZic6ICAgICAgICAgICAgICAgICAgICAgICAgJ3R0X1JVLlVURi04QGlxdGVsaWYnLAogICAgJ3R1cmtpc2gnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cl9UUi5JU084ODU5LTknLAogICAgJ3VnX2NuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1Z19DTi5VVEYtOCcsCiAgICAndWsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VrX1VBLktPSTgtVScsCiAgICAndWtfdWEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VrX1VBLktPSTgtVScsCiAgICAndW5pdic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLnV0ZicsCiAgICAndW5pdmVyc2FsJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLnV0ZicsCiAgICAndW5pdmVyc2FsLnV0ZjhAdWNzNCc6ICAgICAgICAgICAgICAgICAgJ2VuX1VTLlVURi04JywKICAgICd1bm1fdXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5tX1VTLlVURi04JywKICAgICd1cic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXJfUEsuQ1AxMjU2JywKICAgICd1cl9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXJfSU4uVVRGLTgnLAogICAgJ3VyX3BrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cl9QSy5DUDEyNTYnLAogICAgJ3V6JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1el9VWi5VVEYtOCcsCiAgICAndXpfdXonOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3V6X1VaLlVURi04JywKICAgICd1el91ekBjeXJpbGxpYyc6ICAgICAgICAgICAgICAgICAgICAgICAndXpfVVouVVRGLTgnLAogICAgJ3ZlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZV9aQS5VVEYtOCcsCiAgICAndmVfemEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlX1pBLlVURi04JywKICAgICd2aSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlfVk4uVENWTicsCiAgICAndmlfdm4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpX1ZOLlRDVk4nLAogICAgJ3ZpX3ZuLnRjdm4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aV9WTi5UQ1ZOJywKICAgICd2aV92bi50Y3ZuNTcxMic6ICAgICAgICAgICAgICAgICAgICAgICAndmlfVk4uVENWTicsCiAgICAndmlfdm4udmlzY2lpJzogICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpX1ZOLlZJU0NJSScsCiAgICAndmlfdm4udmlzY2lpMTExJzogICAgICAgICAgICAgICAgICAgICAgJ3ZpX1ZOLlZJU0NJSScsCiAgICAnd2EnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhX0JFLklTTzg4NTktMScsCiAgICAnd2FfYmUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhX0JFLklTTzg4NTktMScsCiAgICAnd2FlX2NoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhZV9DSC5VVEYtOCcsCiAgICAnd2FsX2V0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhbF9FVC5VVEYtOCcsCiAgICAnd29fc24nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dvX1NOLlVURi04JywKICAgICd4aCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneGhfWkEuSVNPODg1OS0xJywKICAgICd4aF96YSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneGhfWkEuSVNPODg1OS0xJywKICAgICd5aSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneWlfVVMuQ1AxMjU1JywKICAgICd5aV91cyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneWlfVVMuQ1AxMjU1JywKICAgICd5b19uZyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneW9fTkcuVVRGLTgnLAogICAgJ3l1ZV9oayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd5dWVfSEsuVVRGLTgnLAogICAgJ3l1d19wZyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd5dXdfUEcuVVRGLTgnLAogICAgJ3poJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aF9DTi5ldWNDTicsCiAgICAnemhfY24nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX0NOLmdiMjMxMicsCiAgICAnemhfY24uYmlnNSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX1RXLmJpZzUnLAogICAgJ3poX2NuLmV1Yyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aF9DTi5ldWNDTicsCiAgICAnemhfaGsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX0hLLmJpZzVoa3NjcycsCiAgICAnemhfaGsuYmlnNWhrJzogICAgICAgICAgICAgICAgICAgICAgICAgJ3poX0hLLmJpZzVoa3NjcycsCiAgICAnemhfc2cnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX1NHLkdCMjMxMicsCiAgICAnemhfc2cuZ2JrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX1NHLkdCSycsCiAgICAnemhfdHcnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX1RXLmJpZzUnLAogICAgJ3poX3R3LmV1Yyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aF9UVy5ldWNUVycsCiAgICAnemhfdHcuZXVjdHcnOiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX1RXLmV1Y1RXJywKICAgICd6dSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnenVfWkEuSVNPODg1OS0xJywKICAgICd6dV96YSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnenVfWkEuSVNPODg1OS0xJywKfQoKIwojIFRoaXMgbWFwcyBXaW5kb3dzIGxhbmd1YWdlIGlkZW50aWZpZXJzIHRvIGxvY2FsZSBzdHJpbmdzLgojCiMgVGhpcyBsaXN0IGhhcyBiZWVuIHVwZGF0ZWQgZnJvbQojIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vbGlicmFyeS9kZWZhdWx0LmFzcD91cmw9L2xpYnJhcnkvZW4tdXMvaW50bC9ubHNfMjM4ei5hc3AKIyB0byBpbmNsdWRlIGV2ZXJ5IGxvY2FsZSB1cCB0byBXaW5kb3dzIFZpc3RhLgojCiMgTk9URTogdGhpcyBtYXBwaW5nIGlzIGluY29tcGxldGUuICBJZiB5b3VyIGxhbmd1YWdlIGlzIG1pc3NpbmcsIHBsZWFzZQojIHN1Ym1pdCBhIGJ1ZyByZXBvcnQgdG8gdGhlIFB5dGhvbiBidWcgdHJhY2tlciBhdCBodHRwOi8vYnVncy5weXRob24ub3JnLwojIE1ha2Ugc3VyZSB5b3UgaW5jbHVkZSB0aGUgbWlzc2luZyBsYW5ndWFnZSBpZGVudGlmaWVyIGFuZCB0aGUgc3VnZ2VzdGVkCiMgbG9jYWxlIGNvZGUuCiMKCndpbmRvd3NfbG9jYWxlID0gewogICAgMHgwNDM2OiAiYWZfWkEiLCAjIEFmcmlrYWFucwogICAgMHgwNDFjOiAic3FfQUwiLCAjIEFsYmFuaWFuCiAgICAweDA0ODQ6ICJnc3dfRlIiLCMgQWxzYXRpYW4gLSBGcmFuY2UKICAgIDB4MDQ1ZTogImFtX0VUIiwgIyBBbWhhcmljIC0gRXRoaW9waWEKICAgIDB4MDQwMTogImFyX1NBIiwgIyBBcmFiaWMgLSBTYXVkaSBBcmFiaWEKICAgIDB4MDgwMTogImFyX0lRIiwgIyBBcmFiaWMgLSBJcmFxCiAgICAweDBjMDE6ICJhcl9FRyIsICMgQXJhYmljIC0gRWd5cHQKICAgIDB4MTAwMTogImFyX0xZIiwgIyBBcmFiaWMgLSBMaWJ5YQogICAgMHgxNDAxOiAiYXJfRFoiLCAjIEFyYWJpYyAtIEFsZ2VyaWEKICAgIDB4MTgwMTogImFyX01BIiwgIyBBcmFiaWMgLSBNb3JvY2NvCiAgICAweDFjMDE6ICJhcl9UTiIsICMgQXJhYmljIC0gVHVuaXNpYQogICAgMHgyMDAxOiAiYXJfT00iLCAjIEFyYWJpYyAtIE9tYW4KICAgIDB4MjQwMTogImFyX1lFIiwgIyBBcmFiaWMgLSBZZW1lbgogICAgMHgyODAxOiAiYXJfU1kiLCAjIEFyYWJpYyAtIFN5cmlhCiAgICAweDJjMDE6ICJhcl9KTyIsICMgQXJhYmljIC0gSm9yZGFuCiAgICAweDMwMDE6ICJhcl9MQiIsICMgQXJhYmljIC0gTGViYW5vbgogICAgMHgzNDAxOiAiYXJfS1ciLCAjIEFyYWJpYyAtIEt1d2FpdAogICAgMHgzODAxOiAiYXJfQUUiLCAjIEFyYWJpYyAtIFVuaXRlZCBBcmFiIEVtaXJhdGVzCiAgICAweDNjMDE6ICJhcl9CSCIsICMgQXJhYmljIC0gQmFocmFpbgogICAgMHg0MDAxOiAiYXJfUUEiLCAjIEFyYWJpYyAtIFFhdGFyCiAgICAweDA0MmI6ICJoeV9BTSIsICMgQXJtZW5pYW4KICAgIDB4MDQ0ZDogImFzX0lOIiwgIyBBc3NhbWVzZSAtIEluZGlhCiAgICAweDA0MmM6ICJhel9BWiIsICMgQXplcmkgLSBMYXRpbgogICAgMHgwODJjOiAiYXpfQVoiLCAjIEF6ZXJpIC0gQ3lyaWxsaWMKICAgIDB4MDQ2ZDogImJhX1JVIiwgIyBCYXNoa2lyCiAgICAweDA0MmQ6ICJldV9FUyIsICMgQmFzcXVlIC0gUnVzc2lhCiAgICAweDA0MjM6ICJiZV9CWSIsICMgQmVsYXJ1c2lhbgogICAgMHgwNDQ1OiAiYm5fSU4iLCAjIEJlZ2FsaQogICAgMHgyMDFhOiAiYnNfQkEiLCAjIEJvc25pYW4gLSBDeXJpbGxpYwogICAgMHgxNDFhOiAiYnNfQkEiLCAjIEJvc25pYW4gLSBMYXRpbgogICAgMHgwNDdlOiAiYnJfRlIiLCAjIEJyZXRvbiAtIEZyYW5jZQogICAgMHgwNDAyOiAiYmdfQkciLCAjIEJ1bGdhcmlhbgojICAgIDB4MDQ1NTogIm15X01NIiwgIyBCdXJtZXNlIC0gTm90IHN1cHBvcnRlZAogICAgMHgwNDAzOiAiY2FfRVMiLCAjIENhdGFsYW4KICAgIDB4MDAwNDogInpoX0NIUyIsIyBDaGluZXNlIC0gU2ltcGxpZmllZAogICAgMHgwNDA0OiAiemhfVFciLCAjIENoaW5lc2UgLSBUYWl3YW4KICAgIDB4MDgwNDogInpoX0NOIiwgIyBDaGluZXNlIC0gUFJDCiAgICAweDBjMDQ6ICJ6aF9ISyIsICMgQ2hpbmVzZSAtIEhvbmcgS29uZyBTLkEuUi4KICAgIDB4MTAwNDogInpoX1NHIiwgIyBDaGluZXNlIC0gU2luZ2Fwb3JlCiAgICAweDE0MDQ6ICJ6aF9NTyIsICMgQ2hpbmVzZSAtIE1hY2FvIFMuQS5SLgogICAgMHg3YzA0OiAiemhfQ0hUIiwjIENoaW5lc2UgLSBUcmFkaXRpb25hbAogICAgMHgwNDgzOiAiY29fRlIiLCAjIENvcnNpY2FuIC0gRnJhbmNlCiAgICAweDA0MWE6ICJocl9IUiIsICMgQ3JvYXRpYW4KICAgIDB4MTAxYTogImhyX0JBIiwgIyBDcm9hdGlhbiAtIEJvc25pYQogICAgMHgwNDA1OiAiY3NfQ1oiLCAjIEN6ZWNoCiAgICAweDA0MDY6ICJkYV9ESyIsICMgRGFuaXNoCiAgICAweDA0OGM6ICJnYnpfQUYiLCMgRGFyaSAtIEFmZ2hhbmlzdGFuCiAgICAweDA0NjU6ICJkaXZfTVYiLCMgRGl2ZWhpIC0gTWFsZGl2ZXMKICAgIDB4MDQxMzogIm5sX05MIiwgIyBEdXRjaCAtIFRoZSBOZXRoZXJsYW5kcwogICAgMHgwODEzOiAibmxfQkUiLCAjIER1dGNoIC0gQmVsZ2l1bQogICAgMHgwNDA5OiAiZW5fVVMiLCAjIEVuZ2xpc2ggLSBVbml0ZWQgU3RhdGVzCiAgICAweDA4MDk6ICJlbl9HQiIsICMgRW5nbGlzaCAtIFVuaXRlZCBLaW5nZG9tCiAgICAweDBjMDk6ICJlbl9BVSIsICMgRW5nbGlzaCAtIEF1c3RyYWxpYQogICAgMHgxMDA5OiAiZW5fQ0EiLCAjIEVuZ2xpc2ggLSBDYW5hZGEKICAgIDB4MTQwOTogImVuX05aIiwgIyBFbmdsaXNoIC0gTmV3IFplYWxhbmQKICAgIDB4MTgwOTogImVuX0lFIiwgIyBFbmdsaXNoIC0gSXJlbGFuZAogICAgMHgxYzA5OiAiZW5fWkEiLCAjIEVuZ2xpc2ggLSBTb3V0aCBBZnJpY2EKICAgIDB4MjAwOTogImVuX0pBIiwgIyBFbmdsaXNoIC0gSmFtYWljYQogICAgMHgyNDA5OiAiZW5fQ0IiLCAjIEVuZ2xpc2ggLSBDYXJpYmJlYW4KICAgIDB4MjgwOTogImVuX0JaIiwgIyBFbmdsaXNoIC0gQmVsaXplCiAgICAweDJjMDk6ICJlbl9UVCIsICMgRW5nbGlzaCAtIFRyaW5pZGFkCiAgICAweDMwMDk6ICJlbl9aVyIsICMgRW5nbGlzaCAtIFppbWJhYndlCiAgICAweDM0MDk6ICJlbl9QSCIsICMgRW5nbGlzaCAtIFBoaWxpcHBpbmVzCiAgICAweDQwMDk6ICJlbl9JTiIsICMgRW5nbGlzaCAtIEluZGlhCiAgICAweDQ0MDk6ICJlbl9NWSIsICMgRW5nbGlzaCAtIE1hbGF5c2lhCiAgICAweDQ4MDk6ICJlbl9JTiIsICMgRW5nbGlzaCAtIFNpbmdhcG9yZQogICAgMHgwNDI1OiAiZXRfRUUiLCAjIEVzdG9uaWFuCiAgICAweDA0Mzg6ICJmb19GTyIsICMgRmFyb2VzZQogICAgMHgwNDY0OiAiZmlsX1BIIiwjIEZpbGlwaW5vCiAgICAweDA0MGI6ICJmaV9GSSIsICMgRmlubmlzaAogICAgMHgwNDBjOiAiZnJfRlIiLCAjIEZyZW5jaCAtIEZyYW5jZQogICAgMHgwODBjOiAiZnJfQkUiLCAjIEZyZW5jaCAtIEJlbGdpdW0KICAgIDB4MGMwYzogImZyX0NBIiwgIyBGcmVuY2ggLSBDYW5hZGEKICAgIDB4MTAwYzogImZyX0NIIiwgIyBGcmVuY2ggLSBTd2l0emVybGFuZAogICAgMHgxNDBjOiAiZnJfTFUiLCAjIEZyZW5jaCAtIEx1eGVtYm91cmcKICAgIDB4MTgwYzogImZyX01DIiwgIyBGcmVuY2ggLSBNb25hY28KICAgIDB4MDQ2MjogImZ5X05MIiwgIyBGcmlzaWFuIC0gTmV0aGVybGFuZHMKICAgIDB4MDQ1NjogImdsX0VTIiwgIyBHYWxpY2lhbgogICAgMHgwNDM3OiAia2FfR0UiLCAjIEdlb3JnaWFuCiAgICAweDA0MDc6ICJkZV9ERSIsICMgR2VybWFuIC0gR2VybWFueQogICAgMHgwODA3OiAiZGVfQ0giLCAjIEdlcm1hbiAtIFN3aXR6ZXJsYW5kCiAgICAweDBjMDc6ICJkZV9BVCIsICMgR2VybWFuIC0gQXVzdHJpYQogICAgMHgxMDA3OiAiZGVfTFUiLCAjIEdlcm1hbiAtIEx1eGVtYm91cmcKICAgIDB4MTQwNzogImRlX0xJIiwgIyBHZXJtYW4gLSBMaWVjaHRlbnN0ZWluCiAgICAweDA0MDg6ICJlbF9HUiIsICMgR3JlZWsKICAgIDB4MDQ2ZjogImtsX0dMIiwgIyBHcmVlbmxhbmRpYyAtIEdyZWVubGFuZAogICAgMHgwNDQ3OiAiZ3VfSU4iLCAjIEd1amFyYXRpCiAgICAweDA0Njg6ICJoYV9ORyIsICMgSGF1c2EgLSBMYXRpbgogICAgMHgwNDBkOiAiaGVfSUwiLCAjIEhlYnJldwogICAgMHgwNDM5OiAiaGlfSU4iLCAjIEhpbmRpCiAgICAweDA0MGU6ICJodV9IVSIsICMgSHVuZ2FyaWFuCiAgICAweDA0MGY6ICJpc19JUyIsICMgSWNlbGFuZGljCiAgICAweDA0MjE6ICJpZF9JRCIsICMgSW5kb25lc2lhbgogICAgMHgwNDVkOiAiaXVfQ0EiLCAjIEludWt0aXR1dCAtIFN5bGxhYmljcwogICAgMHgwODVkOiAiaXVfQ0EiLCAjIEludWt0aXR1dCAtIExhdGluCiAgICAweDA4M2M6ICJnYV9JRSIsICMgSXJpc2ggLSBJcmVsYW5kCiAgICAweDA0MTA6ICJpdF9JVCIsICMgSXRhbGlhbiAtIEl0YWx5CiAgICAweDA4MTA6ICJpdF9DSCIsICMgSXRhbGlhbiAtIFN3aXR6ZXJsYW5kCiAgICAweDA0MTE6ICJqYV9KUCIsICMgSmFwYW5lc2UKICAgIDB4MDQ0YjogImtuX0lOIiwgIyBLYW5uYWRhIC0gSW5kaWEKICAgIDB4MDQzZjogImtrX0taIiwgIyBLYXpha2gKICAgIDB4MDQ1MzogImtoX0tIIiwgIyBLaG1lciAtIENhbWJvZGlhCiAgICAweDA0ODY6ICJxdXRfR1QiLCMgSydpY2hlIC0gR3VhdGVtYWxhCiAgICAweDA0ODc6ICJyd19SVyIsICMgS2lueWFyd2FuZGEgLSBSd2FuZGEKICAgIDB4MDQ1NzogImtva19JTiIsIyBLb25rYW5pCiAgICAweDA0MTI6ICJrb19LUiIsICMgS29yZWFuCiAgICAweDA0NDA6ICJreV9LRyIsICMgS3lyZ3l6CiAgICAweDA0NTQ6ICJsb19MQSIsICMgTGFvIC0gTGFvIFBEUgogICAgMHgwNDI2OiAibHZfTFYiLCAjIExhdHZpYW4KICAgIDB4MDQyNzogImx0X0xUIiwgIyBMaXRodWFuaWFuCiAgICAweDA4MmU6ICJkc2JfREUiLCMgTG93ZXIgU29yYmlhbiAtIEdlcm1hbnkKICAgIDB4MDQ2ZTogImxiX0xVIiwgIyBMdXhlbWJvdXJnaXNoCiAgICAweDA0MmY6ICJta19NSyIsICMgRllST00gTWFjZWRvbmlhbgogICAgMHgwNDNlOiAibXNfTVkiLCAjIE1hbGF5IC0gTWFsYXlzaWEKICAgIDB4MDgzZTogIm1zX0JOIiwgIyBNYWxheSAtIEJydW5laSBEYXJ1c3NhbGFtCiAgICAweDA0NGM6ICJtbF9JTiIsICMgTWFsYXlhbGFtIC0gSW5kaWEKICAgIDB4MDQzYTogIm10X01UIiwgIyBNYWx0ZXNlCiAgICAweDA0ODE6ICJtaV9OWiIsICMgTWFvcmkKICAgIDB4MDQ3YTogImFybl9DTCIsIyBNYXB1ZHVuZ3VuCiAgICAweDA0NGU6ICJtcl9JTiIsICMgTWFyYXRoaQogICAgMHgwNDdjOiAibW9oX0NBIiwjIE1vaGF3ayAtIENhbmFkYQogICAgMHgwNDUwOiAibW5fTU4iLCAjIE1vbmdvbGlhbiAtIEN5cmlsbGljCiAgICAweDA4NTA6ICJtbl9DTiIsICMgTW9uZ29saWFuIC0gUFJDCiAgICAweDA0NjE6ICJuZV9OUCIsICMgTmVwYWxpCiAgICAweDA0MTQ6ICJuYl9OTyIsICMgTm9yd2VnaWFuIC0gQm9rbWFsCiAgICAweDA4MTQ6ICJubl9OTyIsICMgTm9yd2VnaWFuIC0gTnlub3JzawogICAgMHgwNDgyOiAib2NfRlIiLCAjIE9jY2l0YW4gLSBGcmFuY2UKICAgIDB4MDQ0ODogIm9yX0lOIiwgIyBPcml5YSAtIEluZGlhCiAgICAweDA0NjM6ICJwc19BRiIsICMgUGFzaHRvIC0gQWZnaGFuaXN0YW4KICAgIDB4MDQyOTogImZhX0lSIiwgIyBQZXJzaWFuCiAgICAweDA0MTU6ICJwbF9QTCIsICMgUG9saXNoCiAgICAweDA0MTY6ICJwdF9CUiIsICMgUG9ydHVndWVzZSAtIEJyYXppbAogICAgMHgwODE2OiAicHRfUFQiLCAjIFBvcnR1Z3Vlc2UgLSBQb3J0dWdhbAogICAgMHgwNDQ2OiAicGFfSU4iLCAjIFB1bmphYmkKICAgIDB4MDQ2YjogInF1el9CTyIsIyBRdWVjaHVhIChCb2xpdmlhKQogICAgMHgwODZiOiAicXV6X0VDIiwjIFF1ZWNodWEgKEVjdWFkb3IpCiAgICAweDBjNmI6ICJxdXpfUEUiLCMgUXVlY2h1YSAoUGVydSkKICAgIDB4MDQxODogInJvX1JPIiwgIyBSb21hbmlhbiAtIFJvbWFuaWEKICAgIDB4MDQxNzogInJtX0NIIiwgIyBSb21hbnNoCiAgICAweDA0MTk6ICJydV9SVSIsICMgUnVzc2lhbgogICAgMHgyNDNiOiAic21uX0ZJIiwjIFNhbWkgRmlubGFuZAogICAgMHgxMDNiOiAic21qX05PIiwjIFNhbWkgTm9yd2F5CiAgICAweDE0M2I6ICJzbWpfU0UiLCMgU2FtaSBTd2VkZW4KICAgIDB4MDQzYjogInNlX05PIiwgIyBTYW1pIE5vcnRoZXJuIE5vcndheQogICAgMHgwODNiOiAic2VfU0UiLCAjIFNhbWkgTm9ydGhlcm4gU3dlZGVuCiAgICAweDBjM2I6ICJzZV9GSSIsICMgU2FtaSBOb3J0aGVybiBGaW5sYW5kCiAgICAweDIwM2I6ICJzbXNfRkkiLCMgU2FtaSBTa29sdAogICAgMHgxODNiOiAic21hX05PIiwjIFNhbWkgU291dGhlcm4gTm9yd2F5CiAgICAweDFjM2I6ICJzbWFfU0UiLCMgU2FtaSBTb3V0aGVybiBTd2VkZW4KICAgIDB4MDQ0ZjogInNhX0lOIiwgIyBTYW5za3JpdAogICAgMHgwYzFhOiAic3JfU1AiLCAjIFNlcmJpYW4gLSBDeXJpbGxpYwogICAgMHgxYzFhOiAic3JfQkEiLCAjIFNlcmJpYW4gLSBCb3NuaWEgQ3lyaWxsaWMKICAgIDB4MDgxYTogInNyX1NQIiwgIyBTZXJiaWFuIC0gTGF0aW4KICAgIDB4MTgxYTogInNyX0JBIiwgIyBTZXJiaWFuIC0gQm9zbmlhIExhdGluCiAgICAweDA0NWI6ICJzaV9MSyIsICMgU2luaGFsYSAtIFNyaSBMYW5rYQogICAgMHgwNDZjOiAibnNfWkEiLCAjIE5vcnRoZXJuIFNvdGhvCiAgICAweDA0MzI6ICJ0bl9aQSIsICMgU2V0c3dhbmEgLSBTb3V0aGVybiBBZnJpY2EKICAgIDB4MDQxYjogInNrX1NLIiwgIyBTbG92YWsKICAgIDB4MDQyNDogInNsX1NJIiwgIyBTbG92ZW5pYW4KICAgIDB4MDQwYTogImVzX0VTIiwgIyBTcGFuaXNoIC0gU3BhaW4KICAgIDB4MDgwYTogImVzX01YIiwgIyBTcGFuaXNoIC0gTWV4aWNvCiAgICAweDBjMGE6ICJlc19FUyIsICMgU3BhbmlzaCAtIFNwYWluIChNb2Rlcm4pCiAgICAweDEwMGE6ICJlc19HVCIsICMgU3BhbmlzaCAtIEd1YXRlbWFsYQogICAgMHgxNDBhOiAiZXNfQ1IiLCAjIFNwYW5pc2ggLSBDb3N0YSBSaWNhCiAgICAweDE4MGE6ICJlc19QQSIsICMgU3BhbmlzaCAtIFBhbmFtYQogICAgMHgxYzBhOiAiZXNfRE8iLCAjIFNwYW5pc2ggLSBEb21pbmljYW4gUmVwdWJsaWMKICAgIDB4MjAwYTogImVzX1ZFIiwgIyBTcGFuaXNoIC0gVmVuZXp1ZWxhCiAgICAweDI0MGE6ICJlc19DTyIsICMgU3BhbmlzaCAtIENvbG9tYmlhCiAgICAweDI4MGE6ICJlc19QRSIsICMgU3BhbmlzaCAtIFBlcnUKICAgIDB4MmMwYTogImVzX0FSIiwgIyBTcGFuaXNoIC0gQXJnZW50aW5hCiAgICAweDMwMGE6ICJlc19FQyIsICMgU3BhbmlzaCAtIEVjdWFkb3IKICAgIDB4MzQwYTogImVzX0NMIiwgIyBTcGFuaXNoIC0gQ2hpbGUKICAgIDB4MzgwYTogImVzX1VSIiwgIyBTcGFuaXNoIC0gVXJ1Z3VheQogICAgMHgzYzBhOiAiZXNfUFkiLCAjIFNwYW5pc2ggLSBQYXJhZ3VheQogICAgMHg0MDBhOiAiZXNfQk8iLCAjIFNwYW5pc2ggLSBCb2xpdmlhCiAgICAweDQ0MGE6ICJlc19TViIsICMgU3BhbmlzaCAtIEVsIFNhbHZhZG9yCiAgICAweDQ4MGE6ICJlc19ITiIsICMgU3BhbmlzaCAtIEhvbmR1cmFzCiAgICAweDRjMGE6ICJlc19OSSIsICMgU3BhbmlzaCAtIE5pY2FyYWd1YQogICAgMHg1MDBhOiAiZXNfUFIiLCAjIFNwYW5pc2ggLSBQdWVydG8gUmljbwogICAgMHg1NDBhOiAiZXNfVVMiLCAjIFNwYW5pc2ggLSBVbml0ZWQgU3RhdGVzCiMgICAgMHgwNDMwOiAiIiwgIyBTdXR1IC0gTm90IHN1cHBvcnRlZAogICAgMHgwNDQxOiAic3dfS0UiLCAjIFN3YWhpbGkKICAgIDB4MDQxZDogInN2X1NFIiwgIyBTd2VkaXNoIC0gU3dlZGVuCiAgICAweDA4MWQ6ICJzdl9GSSIsICMgU3dlZGlzaCAtIEZpbmxhbmQKICAgIDB4MDQ1YTogInN5cl9TWSIsIyBTeXJpYWMKICAgIDB4MDQyODogInRnX1RKIiwgIyBUYWppayAtIEN5cmlsbGljCiAgICAweDA4NWY6ICJ0bXpfRFoiLCMgVGFtYXppZ2h0IC0gTGF0aW4KICAgIDB4MDQ0OTogInRhX0lOIiwgIyBUYW1pbAogICAgMHgwNDQ0OiAidHRfUlUiLCAjIFRhdGFyCiAgICAweDA0NGE6ICJ0ZV9JTiIsICMgVGVsdWd1CiAgICAweDA0MWU6ICJ0aF9USCIsICMgVGhhaQogICAgMHgwODUxOiAiYm9fQlQiLCAjIFRpYmV0YW4gLSBCaHV0YW4KICAgIDB4MDQ1MTogImJvX0NOIiwgIyBUaWJldGFuIC0gUFJDCiAgICAweDA0MWY6ICJ0cl9UUiIsICMgVHVya2lzaAogICAgMHgwNDQyOiAidGtfVE0iLCAjIFR1cmttZW4gLSBDeXJpbGxpYwogICAgMHgwNDgwOiAidWdfQ04iLCAjIFVpZ2h1ciAtIEFyYWJpYwogICAgMHgwNDIyOiAidWtfVUEiLCAjIFVrcmFpbmlhbgogICAgMHgwNDJlOiAid2VuX0RFIiwjIFVwcGVyIFNvcmJpYW4gLSBHZXJtYW55CiAgICAweDA0MjA6ICJ1cl9QSyIsICMgVXJkdQogICAgMHgwODIwOiAidXJfSU4iLCAjIFVyZHUgLSBJbmRpYQogICAgMHgwNDQzOiAidXpfVVoiLCAjIFV6YmVrIC0gTGF0aW4KICAgIDB4MDg0MzogInV6X1VaIiwgIyBVemJlayAtIEN5cmlsbGljCiAgICAweDA0MmE6ICJ2aV9WTiIsICMgVmlldG5hbWVzZQogICAgMHgwNDUyOiAiY3lfR0IiLCAjIFdlbHNoCiAgICAweDA0ODg6ICJ3b19TTiIsICMgV29sb2YgLSBTZW5lZ2FsCiAgICAweDA0MzQ6ICJ4aF9aQSIsICMgWGhvc2EgLSBTb3V0aCBBZnJpY2EKICAgIDB4MDQ4NTogInNhaF9SVSIsIyBZYWt1dCAtIEN5cmlsbGljCiAgICAweDA0Nzg6ICJpaV9DTiIsICMgWWkgLSBQUkMKICAgIDB4MDQ2YTogInlvX05HIiwgIyBZb3J1YmEgLSBOaWdlcmlhCiAgICAweDA0MzU6ICJ6dV9aQSIsICMgWnVsdQp9CgpkZWYgX3ByaW50X2xvY2FsZSgpOgoKICAgICIiIiBUZXN0IGZ1bmN0aW9uLgogICAgIiIiCiAgICBjYXRlZ29yaWVzID0ge30KICAgIGRlZiBfaW5pdF9jYXRlZ29yaWVzKGNhdGVnb3JpZXM9Y2F0ZWdvcmllcyk6CiAgICAgICAgZm9yIGssdiBpbiBnbG9iYWxzKCkuaXRlbXMoKToKICAgICAgICAgICAgaWYga1s6M10gPT0gJ0xDXyc6CiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzW2tdID0gdgogICAgX2luaXRfY2F0ZWdvcmllcygpCiAgICBkZWwgY2F0ZWdvcmllc1snTENfQUxMJ10KCiAgICBwcmludCgnTG9jYWxlIGRlZmF1bHRzIGFzIGRldGVybWluZWQgYnkgZ2V0ZGVmYXVsdGxvY2FsZSgpOicpCiAgICBwcmludCgnLScqNzIpCiAgICBsYW5nLCBlbmMgPSBnZXRkZWZhdWx0bG9jYWxlKCkKICAgIHByaW50KCdMYW5ndWFnZTogJywgbGFuZyBvciAnKHVuZGVmaW5lZCknKQogICAgcHJpbnQoJ0VuY29kaW5nOiAnLCBlbmMgb3IgJyh1bmRlZmluZWQpJykKICAgIHByaW50KCkKCiAgICBwcmludCgnTG9jYWxlIHNldHRpbmdzIG9uIHN0YXJ0dXA6JykKICAgIHByaW50KCctJyo3MikKICAgIGZvciBuYW1lLGNhdGVnb3J5IGluIGNhdGVnb3JpZXMuaXRlbXMoKToKICAgICAgICBwcmludChuYW1lLCAnLi4uJykKICAgICAgICBsYW5nLCBlbmMgPSBnZXRsb2NhbGUoY2F0ZWdvcnkpCiAgICAgICAgcHJpbnQoJyAgIExhbmd1YWdlOiAnLCBsYW5nIG9yICcodW5kZWZpbmVkKScpCiAgICAgICAgcHJpbnQoJyAgIEVuY29kaW5nOiAnLCBlbmMgb3IgJyh1bmRlZmluZWQpJykKICAgICAgICBwcmludCgpCgogICAgcHJpbnQoKQogICAgcHJpbnQoJ0xvY2FsZSBzZXR0aW5ncyBhZnRlciBjYWxsaW5nIHJlc2V0bG9jYWxlKCk6JykKICAgIHByaW50KCctJyo3MikKICAgIHJlc2V0bG9jYWxlKCkKICAgIGZvciBuYW1lLGNhdGVnb3J5IGluIGNhdGVnb3JpZXMuaXRlbXMoKToKICAgICAgICBwcmludChuYW1lLCAnLi4uJykKICAgICAgICBsYW5nLCBlbmMgPSBnZXRsb2NhbGUoY2F0ZWdvcnkpCiAgICAgICAgcHJpbnQoJyAgIExhbmd1YWdlOiAnLCBsYW5nIG9yICcodW5kZWZpbmVkKScpCiAgICAgICAgcHJpbnQoJyAgIEVuY29kaW5nOiAnLCBlbmMgb3IgJyh1bmRlZmluZWQpJykKICAgICAgICBwcmludCgpCgogICAgdHJ5OgogICAgICAgIHNldGxvY2FsZShMQ19BTEwsICIiKQogICAgZXhjZXB0OgogICAgICAgIHByaW50KCdOT1RFOicpCiAgICAgICAgcHJpbnQoJ3NldGxvY2FsZShMQ19BTEwsICIiKSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBkZWZhdWx0IGxvY2FsZScpCiAgICAgICAgcHJpbnQoJ2dpdmVuIGluIHRoZSBPUyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuJykKICAgIGVsc2U6CiAgICAgICAgcHJpbnQoKQogICAgICAgIHByaW50KCdMb2NhbGUgc2V0dGluZ3MgYWZ0ZXIgY2FsbGluZyBzZXRsb2NhbGUoTENfQUxMLCAiIik6JykKICAgICAgICBwcmludCgnLScqNzIpCiAgICAgICAgZm9yIG5hbWUsY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcy5pdGVtcygpOgogICAgICAgICAgICBwcmludChuYW1lLCAnLi4uJykKICAgICAgICAgICAgbGFuZywgZW5jID0gZ2V0bG9jYWxlKGNhdGVnb3J5KQogICAgICAgICAgICBwcmludCgnICAgTGFuZ3VhZ2U6ICcsIGxhbmcgb3IgJyh1bmRlZmluZWQpJykKICAgICAgICAgICAgcHJpbnQoJyAgIEVuY29kaW5nOiAnLCBlbmMgb3IgJyh1bmRlZmluZWQpJykKICAgICAgICAgICAgcHJpbnQoKQoKIyMjCgp0cnk6CiAgICBMQ19NRVNTQUdFUwpleGNlcHQgTmFtZUVycm9yOgogICAgcGFzcwplbHNlOgogICAgX19hbGxfXy5hcHBlbmQoIkxDX01FU1NBR0VTIikKCmlmIF9fbmFtZV9fPT0nX19tYWluX18nOgogICAgcHJpbnQoJ0xvY2FsZSBhbGlhc2luZzonKQogICAgcHJpbnQoKQogICAgX3ByaW50X2xvY2FsZSgpCiAgICBwcmludCgpCiAgICBwcmludCgnTnVtYmVyIGZvcm1hdHRpbmc6JykKICAgIHByaW50KCkKICAgIF90ZXN0KCkKUEsDBBQAAAAAAAIgo1ayu1qIyjMBAMozAQAKAAAAbWFpbGJveC5weSIiIlJlYWQvd3JpdGUgc3VwcG9ydCBmb3IgTWFpbGRpciwgbWJveCwgTUgsIEJhYnlsLCBhbmQgTU1ERiBtYWlsYm94ZXMuIiIiCgojIE5vdGVzIGZvciBhdXRob3JzIG9mIG5ldyBtYWlsYm94IHN1YmNsYXNzZXM6CiMKIyBSZW1lbWJlciB0byBmc3luYygpIGNoYW5nZXMgdG8gZGlzayBiZWZvcmUgY2xvc2luZyBhIG1vZGlmaWVkIGZpbGUKIyBvciByZXR1cm5pbmcgZnJvbSBhIGZsdXNoKCkgbWV0aG9kLiAgU2VlIGZ1bmN0aW9ucyBfc3luY19mbHVzaCgpIGFuZAojIF9zeW5jX2Nsb3NlKCkuCgppbXBvcnQgb3MKaW1wb3J0IHRpbWUKaW1wb3J0IGNhbGVuZGFyCmltcG9ydCBzb2NrZXQKaW1wb3J0IGVycm5vCmltcG9ydCBjb3B5CmltcG9ydCB3YXJuaW5ncwppbXBvcnQgZW1haWwKaW1wb3J0IGVtYWlsLm1lc3NhZ2UKaW1wb3J0IGVtYWlsLmdlbmVyYXRvcgppbXBvcnQgaW8KaW1wb3J0IGNvbnRleHRsaWIKZnJvbSB0eXBlcyBpbXBvcnQgR2VuZXJpY0FsaWFzCnRyeToKICAgIGltcG9ydCBmY250bApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBmY250bCA9IE5vbmUKCl9fYWxsX18gPSBbJ01haWxib3gnLCAnTWFpbGRpcicsICdtYm94JywgJ01IJywgJ0JhYnlsJywgJ01NREYnLAogICAgICAgICAgICdNZXNzYWdlJywgJ01haWxkaXJNZXNzYWdlJywgJ21ib3hNZXNzYWdlJywgJ01ITWVzc2FnZScsCiAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZScsICdFcnJvcicsICdOb1N1Y2hNYWlsYm94RXJyb3InLAogICAgICAgICAgICdOb3RFbXB0eUVycm9yJywgJ0V4dGVybmFsQ2xhc2hFcnJvcicsICdGb3JtYXRFcnJvciddCgpsaW5lc2VwID0gb3MubGluZXNlcC5lbmNvZGUoJ2FzY2lpJykKCmNsYXNzIE1haWxib3g6CiAgICAiIiJBIGdyb3VwIG9mIG1lc3NhZ2VzIGluIGEgcGFydGljdWxhciBwbGFjZS4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZmFjdG9yeT1Ob25lLCBjcmVhdGU9VHJ1ZSk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIE1haWxib3ggaW5zdGFuY2UuIiIiCiAgICAgICAgc2VsZi5fcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmV4cGFuZHVzZXIocGF0aCkpCiAgICAgICAgc2VsZi5fZmFjdG9yeSA9IGZhY3RvcnkKCiAgICBkZWYgYWRkKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICIiIkFkZCBtZXNzYWdlIGFuZCByZXR1cm4gYXNzaWduZWQga2V5LiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJykKCiAgICBkZWYgcmVtb3ZlKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmVtb3ZlIHRoZSBrZXllZCBtZXNzYWdlOyByYWlzZSBLZXlFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJykKCiAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKICAgICAgICBzZWxmLnJlbW92ZShrZXkpCgogICAgZGVmIGRpc2NhcmQoc2VsZiwga2V5KToKICAgICAgICAiIiJJZiB0aGUga2V5ZWQgbWVzc2FnZSBleGlzdHMsIHJlbW92ZSBpdC4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYucmVtb3ZlKGtleSkKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCBtZXNzYWdlKToKICAgICAgICAiIiJSZXBsYWNlIHRoZSBrZXllZCBtZXNzYWdlOyByYWlzZSBLZXlFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJykKCiAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGtleWVkIG1lc3NhZ2UsIG9yIGRlZmF1bHQgaWYgaXQgZG9lc24ndCBleGlzdC4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZ2V0aXRlbV9fKGtleSkKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBrZXllZCBtZXNzYWdlOyByYWlzZSBLZXlFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LiIiIgogICAgICAgIGlmIG5vdCBzZWxmLl9mYWN0b3J5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfbWVzc2FnZShrZXkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLmNsb3Npbmcoc2VsZi5nZXRfZmlsZShrZXkpKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZhY3RvcnkoZmlsZSkKCiAgICBkZWYgZ2V0X21lc3NhZ2Uoc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gYSBNZXNzYWdlIHJlcHJlc2VudGF0aW9uIG9yIHJhaXNlIGEgS2V5RXJyb3IuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignTWV0aG9kIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MnKQoKICAgIGRlZiBnZXRfc3RyaW5nKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9yIHJhaXNlIGEgS2V5RXJyb3IuCgogICAgICAgIFVzZXMgZW1haWwubWVzc2FnZS5NZXNzYWdlIHRvIGNyZWF0ZSBhIDdiaXQgY2xlYW4gc3RyaW5nCiAgICAgICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuIiIiCiAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhzZWxmLmdldF9ieXRlcyhrZXkpKS5hc19zdHJpbmcoKQoKICAgIGRlZiBnZXRfYnl0ZXMoc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gYSBieXRlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvciByYWlzZSBhIEtleUVycm9yLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJykKCiAgICBkZWYgZ2V0X2ZpbGUoc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gYSBmaWxlLWxpa2UgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpCgogICAgZGVmIGl0ZXJrZXlzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhbiBpdGVyYXRvciBvdmVyIGtleXMuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignTWV0aG9kIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MnKQoKICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2Yga2V5cy4iIiIKICAgICAgICByZXR1cm4gbGlzdChzZWxmLml0ZXJrZXlzKCkpCgogICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG1lc3NhZ2VzLiIiIgogICAgICAgIGZvciBrZXkgaW4gc2VsZi5pdGVya2V5cygpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGZba2V5XQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB5aWVsZCB2YWx1ZQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5pdGVydmFsdWVzKCkKCiAgICBkZWYgdmFsdWVzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgbWVzc2FnZXMuIE1lbW9yeSBpbnRlbnNpdmUuIiIiCiAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5pdGVydmFsdWVzKCkpCgogICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciAoa2V5LCBtZXNzYWdlKSB0dXBsZXMuIiIiCiAgICAgICAgZm9yIGtleSBpbiBzZWxmLml0ZXJrZXlzKCk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZltrZXldCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIHlpZWxkIChrZXksIHZhbHVlKQoKICAgIGRlZiBpdGVtcyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIChrZXksIG1lc3NhZ2UpIHR1cGxlcy4gTWVtb3J5IGludGVuc2l2ZS4iIiIKICAgICAgICByZXR1cm4gbGlzdChzZWxmLml0ZXJpdGVtcygpKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUga2V5ZWQgbWVzc2FnZSBleGlzdHMsIEZhbHNlIG90aGVyd2lzZS4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgY291bnQgb2YgbWVzc2FnZXMgaW4gdGhlIG1haWxib3guIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignTWV0aG9kIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MnKQoKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICAiIiJEZWxldGUgYWxsIG1lc3NhZ2VzLiIiIgogICAgICAgIGZvciBrZXkgaW4gc2VsZi5rZXlzKCk6CiAgICAgICAgICAgIHNlbGYuZGlzY2FyZChrZXkpCgogICAgZGVmIHBvcChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgIiIiRGVsZXRlIHRoZSBrZXllZCBtZXNzYWdlIGFuZCByZXR1cm4gaXQsIG9yIGRlZmF1bHQuIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBzZWxmW2tleV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CiAgICAgICAgc2VsZi5kaXNjYXJkKGtleSkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIHBvcGl0ZW0oc2VsZik6CiAgICAgICAgIiIiRGVsZXRlIGFuIGFyYml0cmFyeSAoa2V5LCBtZXNzYWdlKSBwYWlyIGFuZCByZXR1cm4gaXQuIiIiCiAgICAgICAgZm9yIGtleSBpbiBzZWxmLml0ZXJrZXlzKCk6CiAgICAgICAgICAgIHJldHVybiAoa2V5LCBzZWxmLnBvcChrZXkpKSAgICAgIyBUaGlzIGlzIG9ubHkgcnVuIG9uY2UuCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoJ05vIG1lc3NhZ2VzIGluIG1haWxib3gnKQoKICAgIGRlZiB1cGRhdGUoc2VsZiwgYXJnPU5vbmUpOgogICAgICAgICIiIkNoYW5nZSB0aGUgbWVzc2FnZXMgdGhhdCBjb3JyZXNwb25kIHRvIGNlcnRhaW4ga2V5cy4iIiIKICAgICAgICBpZiBoYXNhdHRyKGFyZywgJ2l0ZXJpdGVtcycpOgogICAgICAgICAgICBzb3VyY2UgPSBhcmcuaXRlcml0ZW1zKCkKICAgICAgICBlbGlmIGhhc2F0dHIoYXJnLCAnaXRlbXMnKToKICAgICAgICAgICAgc291cmNlID0gYXJnLml0ZW1zKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzb3VyY2UgPSBhcmcKICAgICAgICBiYWRfa2V5ID0gRmFsc2UKICAgICAgICBmb3Iga2V5LCBtZXNzYWdlIGluIHNvdXJjZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZltrZXldID0gbWVzc2FnZQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICBiYWRfa2V5ID0gVHJ1ZQogICAgICAgIGlmIGJhZF9rZXk6CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCdObyBtZXNzYWdlIHdpdGgga2V5KHMpJykKCiAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgIiIiV3JpdGUgYW55IHBlbmRpbmcgY2hhbmdlcyB0byB0aGUgZGlzay4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpCgogICAgZGVmIGxvY2soc2VsZik6CiAgICAgICAgIiIiTG9jayB0aGUgbWFpbGJveC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpCgogICAgZGVmIHVubG9jayhzZWxmKToKICAgICAgICAiIiJVbmxvY2sgdGhlIG1haWxib3ggaWYgaXQgaXMgbG9ja2VkLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJykKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBtYWlsYm94LiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJykKCiAgICBkZWYgX3N0cmluZ190b19ieXRlcyhzZWxmLCBtZXNzYWdlKToKICAgICAgICAjIElmIGEgbWVzc2FnZSBpcyBub3QgN2JpdCBjbGVhbiwgd2UgcmVmdXNlIHRvIGhhbmRsZSBpdCBzaW5jZSBpdAogICAgICAgICMgbGlrZWx5IGNhbWUgZnJvbSByZWFkaW5nIGludmFsaWQgbWVzc2FnZXMgaW4gdGV4dCBtb2RlLCBhbmQgdGhhdCB3YXkKICAgICAgICAjIGxpZXMgbW9qaWJha2UuCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gbWVzc2FnZS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICBleGNlcHQgVW5pY29kZUVycm9yOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJTdHJpbmcgaW5wdXQgbXVzdCBiZSBBU0NJSS1vbmx5OyAiCiAgICAgICAgICAgICAgICAidXNlIGJ5dGVzIG9yIGEgTWVzc2FnZSBpbnN0ZWFkIikKCiAgICAjIFdoZXRoZXIgZWFjaCBtZXNzYWdlIG11c3QgZW5kIGluIGEgbmV3bGluZQogICAgX2FwcGVuZF9uZXdsaW5lID0gRmFsc2UKCiAgICBkZWYgX2R1bXBfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB0YXJnZXQsIG1hbmdsZV9mcm9tXz1GYWxzZSk6CiAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhlIHRhcmdldCBmaWxlIGlzIG9wZW4gaW4gYmluYXJ5IG1vZGUuCiAgICAgICAgIiIiRHVtcCBtZXNzYWdlIGNvbnRlbnRzIHRvIHRhcmdldCBmaWxlLiIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgZW1haWwubWVzc2FnZS5NZXNzYWdlKToKICAgICAgICAgICAgYnVmZmVyID0gaW8uQnl0ZXNJTygpCiAgICAgICAgICAgIGdlbiA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihidWZmZXIsIG1hbmdsZV9mcm9tXywgMCkKICAgICAgICAgICAgZ2VuLmZsYXR0ZW4obWVzc2FnZSkKICAgICAgICAgICAgYnVmZmVyLnNlZWsoMCkKICAgICAgICAgICAgZGF0YSA9IGJ1ZmZlci5yZWFkKCkKICAgICAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZShiJ1xuJywgbGluZXNlcCkKICAgICAgICAgICAgdGFyZ2V0LndyaXRlKGRhdGEpCiAgICAgICAgICAgIGlmIHNlbGYuX2FwcGVuZF9uZXdsaW5lIGFuZCBub3QgZGF0YS5lbmRzd2l0aChsaW5lc2VwKToKICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoZSBtZXNzYWdlIGVuZHMgd2l0aCBhIG5ld2xpbmUKICAgICAgICAgICAgICAgIHRhcmdldC53cml0ZShsaW5lc2VwKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCAoc3RyLCBieXRlcywgaW8uU3RyaW5nSU8pKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBpby5TdHJpbmdJTyk6CiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJVc2Ugb2YgU3RyaW5nSU8gaW5wdXQgaXMgZGVwcmVjYXRlZCwgIgogICAgICAgICAgICAgICAgICAgICJ1c2UgQnl0ZXNJTyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQogICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZ2V0dmFsdWUoKQogICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIHN0cik6CiAgICAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fc3RyaW5nX3RvX2J5dGVzKG1lc3NhZ2UpCiAgICAgICAgICAgIGlmIG1hbmdsZV9mcm9tXzoKICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoYidcbkZyb20gJywgYidcbj5Gcm9tICcpCiAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoYidcbicsIGxpbmVzZXApCiAgICAgICAgICAgIHRhcmdldC53cml0ZShtZXNzYWdlKQogICAgICAgICAgICBpZiBzZWxmLl9hcHBlbmRfbmV3bGluZSBhbmQgbm90IG1lc3NhZ2UuZW5kc3dpdGgobGluZXNlcCk6CiAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBlbmRzIHdpdGggYSBuZXdsaW5lCiAgICAgICAgICAgICAgICB0YXJnZXQud3JpdGUobGluZXNlcCkKICAgICAgICBlbGlmIGhhc2F0dHIobWVzc2FnZSwgJ3JlYWQnKToKICAgICAgICAgICAgaWYgaGFzYXR0cihtZXNzYWdlLCAnYnVmZmVyJyk6CiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJVc2Ugb2YgdGV4dCBtb2RlIGZpbGVzIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgICAgICAgICAidXNlIGEgYmluYXJ5IG1vZGUgZmlsZSBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQogICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuYnVmZmVyCiAgICAgICAgICAgIGxhc3RsaW5lID0gTm9uZQogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgbGluZSA9IG1lc3NhZ2UucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgIyBVbml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0LgogICAgICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aChiJ1xyXG4nKToKICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6LTJdICsgYidcbicKICAgICAgICAgICAgICAgIGVsaWYgbGluZS5lbmRzd2l0aChiJ1xyJyk6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXSArIGInXG4nCiAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgaWYgbWFuZ2xlX2Zyb21fIGFuZCBsaW5lLnN0YXJ0c3dpdGgoYidGcm9tICcpOgogICAgICAgICAgICAgICAgICAgIGxpbmUgPSBiJz5Gcm9tICcgKyBsaW5lWzU6XQogICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZShiJ1xuJywgbGluZXNlcCkKICAgICAgICAgICAgICAgIHRhcmdldC53cml0ZShsaW5lKQogICAgICAgICAgICAgICAgbGFzdGxpbmUgPSBsaW5lCiAgICAgICAgICAgIGlmIHNlbGYuX2FwcGVuZF9uZXdsaW5lIGFuZCBsYXN0bGluZSBhbmQgbm90IGxhc3RsaW5lLmVuZHN3aXRoKGxpbmVzZXApOgogICAgICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhlIG1lc3NhZ2UgZW5kcyB3aXRoIGEgbmV3bGluZQogICAgICAgICAgICAgICAgdGFyZ2V0LndyaXRlKGxpbmVzZXApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdJbnZhbGlkIG1lc3NhZ2UgdHlwZTogJXMnICUgdHlwZShtZXNzYWdlKSkKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKEdlbmVyaWNBbGlhcykKCgpjbGFzcyBNYWlsZGlyKE1haWxib3gpOgogICAgIiIiQSBxbWFpbC1zdHlsZSBNYWlsZGlyIG1haWxib3guIiIiCgogICAgY29sb24gPSAnOicKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZGlybmFtZSwgZmFjdG9yeT1Ob25lLCBjcmVhdGU9VHJ1ZSk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIE1haWxkaXIgaW5zdGFuY2UuIiIiCiAgICAgICAgTWFpbGJveC5fX2luaXRfXyhzZWxmLCBkaXJuYW1lLCBmYWN0b3J5LCBjcmVhdGUpCiAgICAgICAgc2VsZi5fcGF0aHMgPSB7CiAgICAgICAgICAgICd0bXAnOiBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJ3RtcCcpLAogICAgICAgICAgICAnbmV3Jzogb3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICduZXcnKSwKICAgICAgICAgICAgJ2N1cic6IG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnY3VyJyksCiAgICAgICAgICAgIH0KICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5fcGF0aCk6CiAgICAgICAgICAgIGlmIGNyZWF0ZToKICAgICAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYuX3BhdGgsIDBvNzAwKQogICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5fcGF0aHMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgICAgb3MubWtkaXIocGF0aCwgMG83MDApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBOb1N1Y2hNYWlsYm94RXJyb3Ioc2VsZi5fcGF0aCkKICAgICAgICBzZWxmLl90b2MgPSB7fQogICAgICAgIHNlbGYuX3RvY19tdGltZXMgPSB7J2N1cic6IDAsICduZXcnOiAwfQogICAgICAgIHNlbGYuX2xhc3RfcmVhZCA9IDAgICAgICAgICAjIFJlY29yZHMgbGFzdCB0aW1lIHdlIHJlYWQgY3VyL25ldwogICAgICAgIHNlbGYuX3NrZXdmYWN0b3IgPSAwLjEgICAgICAjIEFkanVzdCBpZiBvcy9mcyBjbG9ja3MgYXJlIHNrZXdpbmcKCiAgICBkZWYgYWRkKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICIiIkFkZCBtZXNzYWdlIGFuZCByZXR1cm4gYXNzaWduZWQga2V5LiIiIgogICAgICAgIHRtcF9maWxlID0gc2VsZi5fY3JlYXRlX3RtcCgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9kdW1wX21lc3NhZ2UobWVzc2FnZSwgdG1wX2ZpbGUpCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CiAgICAgICAgICAgIHRtcF9maWxlLmNsb3NlKCkKICAgICAgICAgICAgb3MucmVtb3ZlKHRtcF9maWxlLm5hbWUpCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgX3N5bmNfY2xvc2UodG1wX2ZpbGUpCiAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNYWlsZGlyTWVzc2FnZSk6CiAgICAgICAgICAgIHN1YmRpciA9IG1lc3NhZ2UuZ2V0X3N1YmRpcigpCiAgICAgICAgICAgIHN1ZmZpeCA9IHNlbGYuY29sb24gKyBtZXNzYWdlLmdldF9pbmZvKCkKICAgICAgICAgICAgaWYgc3VmZml4ID09IHNlbGYuY29sb246CiAgICAgICAgICAgICAgICBzdWZmaXggPSAnJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN1YmRpciA9ICduZXcnCiAgICAgICAgICAgIHN1ZmZpeCA9ICcnCiAgICAgICAgdW5pcSA9IG9zLnBhdGguYmFzZW5hbWUodG1wX2ZpbGUubmFtZSkuc3BsaXQoc2VsZi5jb2xvbilbMF0KICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN1YmRpciwgdW5pcSArIHN1ZmZpeCkKICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIE1haWxkaXJNZXNzYWdlKToKICAgICAgICAgICAgb3MudXRpbWUodG1wX2ZpbGUubmFtZSwKICAgICAgICAgICAgICAgICAgICAgKG9zLnBhdGguZ2V0YXRpbWUodG1wX2ZpbGUubmFtZSksIG1lc3NhZ2UuZ2V0X2RhdGUoKSkpCiAgICAgICAgIyBObyBmaWxlIG1vZGlmaWNhdGlvbiBzaG91bGQgYmUgZG9uZSBhZnRlciB0aGUgZmlsZSBpcyBtb3ZlZCB0byBpdHMKICAgICAgICAjIGZpbmFsIHBvc2l0aW9uIGluIG9yZGVyIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdpdGggY2hhbmdlcwogICAgICAgICMgZnJvbSBvdGhlciBwcm9ncmFtcwogICAgICAgIHRyeToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgb3MubGluayh0bXBfZmlsZS5uYW1lLCBkZXN0KQogICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBQZXJtaXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgICAgb3MucmVuYW1lKHRtcF9maWxlLm5hbWUsIGRlc3QpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBvcy5yZW1vdmUodG1wX2ZpbGUubmFtZSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBvcy5yZW1vdmUodG1wX2ZpbGUubmFtZSkKICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FRVhJU1Q6CiAgICAgICAgICAgICAgICByYWlzZSBFeHRlcm5hbENsYXNoRXJyb3IoJ05hbWUgY2xhc2ggd2l0aCBleGlzdGluZyBtZXNzYWdlOiAlcycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGRlc3QpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIHJldHVybiB1bmlxCgogICAgZGVmIHJlbW92ZShzZWxmLCBrZXkpOgogICAgICAgICIiIlJlbW92ZSB0aGUga2V5ZWQgbWVzc2FnZTsgcmFpc2UgS2V5RXJyb3IgaWYgaXQgZG9lc24ndCBleGlzdC4iIiIKICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHNlbGYuX2xvb2t1cChrZXkpKSkKCiAgICBkZWYgZGlzY2FyZChzZWxmLCBrZXkpOgogICAgICAgICIiIklmIHRoZSBrZXllZCBtZXNzYWdlIGV4aXN0cywgcmVtb3ZlIGl0LiIiIgogICAgICAgICMgVGhpcyBvdmVycmlkZXMgYW4gaW5hcHBsaWNhYmxlIGltcGxlbWVudGF0aW9uIGluIHRoZSBzdXBlcmNsYXNzLgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5yZW1vdmUoa2V5KQogICAgICAgIGV4Y2VwdCAoS2V5RXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yKToKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIG1lc3NhZ2UpOgogICAgICAgICIiIlJlcGxhY2UgdGhlIGtleWVkIG1lc3NhZ2U7IHJhaXNlIEtleUVycm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QuIiIiCiAgICAgICAgb2xkX3N1YnBhdGggPSBzZWxmLl9sb29rdXAoa2V5KQogICAgICAgIHRlbXBfa2V5ID0gc2VsZi5hZGQobWVzc2FnZSkKICAgICAgICB0ZW1wX3N1YnBhdGggPSBzZWxmLl9sb29rdXAodGVtcF9rZXkpCiAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNYWlsZGlyTWVzc2FnZSk6CiAgICAgICAgICAgICMgdGVtcCdzIHN1YmRpciBhbmQgc3VmZml4IHdlcmUgc3BlY2lmaWVkIGJ5IG1lc3NhZ2UuCiAgICAgICAgICAgIGRvbWluYW50X3N1YnBhdGggPSB0ZW1wX3N1YnBhdGgKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIHRlbXAncyBzdWJkaXIgYW5kIHN1ZmZpeCB3ZXJlIGRlZmF1bHRzIGZyb20gYWRkKCkuCiAgICAgICAgICAgIGRvbWluYW50X3N1YnBhdGggPSBvbGRfc3VicGF0aAogICAgICAgIHN1YmRpciA9IG9zLnBhdGguZGlybmFtZShkb21pbmFudF9zdWJwYXRoKQogICAgICAgIGlmIHNlbGYuY29sb24gaW4gZG9taW5hbnRfc3VicGF0aDoKICAgICAgICAgICAgc3VmZml4ID0gc2VsZi5jb2xvbiArIGRvbWluYW50X3N1YnBhdGguc3BsaXQoc2VsZi5jb2xvbilbLTFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3VmZml4ID0gJycKICAgICAgICBzZWxmLmRpc2NhcmQoa2V5KQogICAgICAgIHRtcF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHRlbXBfc3VicGF0aCkKICAgICAgICBuZXdfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdWJkaXIsIGtleSArIHN1ZmZpeCkKICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIE1haWxkaXJNZXNzYWdlKToKICAgICAgICAgICAgb3MudXRpbWUodG1wX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgIChvcy5wYXRoLmdldGF0aW1lKHRtcF9wYXRoKSwgbWVzc2FnZS5nZXRfZGF0ZSgpKSkKICAgICAgICAjIE5vIGZpbGUgbW9kaWZpY2F0aW9uIHNob3VsZCBiZSBkb25lIGFmdGVyIHRoZSBmaWxlIGlzIG1vdmVkIHRvIGl0cwogICAgICAgICMgZmluYWwgcG9zaXRpb24gaW4gb3JkZXIgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgd2l0aCBjaGFuZ2VzCiAgICAgICAgIyBmcm9tIG90aGVyIHByb2dyYW1zCiAgICAgICAgb3MucmVuYW1lKHRtcF9wYXRoLCBuZXdfcGF0aCkKCiAgICBkZWYgZ2V0X21lc3NhZ2Uoc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gYSBNZXNzYWdlIHJlcHJlc2VudGF0aW9uIG9yIHJhaXNlIGEgS2V5RXJyb3IuIiIiCiAgICAgICAgc3VicGF0aCA9IHNlbGYuX2xvb2t1cChrZXkpCiAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdWJwYXRoKSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgaWYgc2VsZi5fZmFjdG9yeToKICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoZikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG1zZyA9IE1haWxkaXJNZXNzYWdlKGYpCiAgICAgICAgc3ViZGlyLCBuYW1lID0gb3MucGF0aC5zcGxpdChzdWJwYXRoKQogICAgICAgIG1zZy5zZXRfc3ViZGlyKHN1YmRpcikKICAgICAgICBpZiBzZWxmLmNvbG9uIGluIG5hbWU6CiAgICAgICAgICAgIG1zZy5zZXRfaW5mbyhuYW1lLnNwbGl0KHNlbGYuY29sb24pWy0xXSkKICAgICAgICBtc2cuc2V0X2RhdGUob3MucGF0aC5nZXRtdGltZShvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3VicGF0aCkpKQogICAgICAgIHJldHVybiBtc2cKCiAgICBkZWYgZ2V0X2J5dGVzKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmV0dXJuIGEgYnl0ZXMgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHNlbGYuX2xvb2t1cChrZXkpKSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpLnJlcGxhY2UobGluZXNlcCwgYidcbicpCgogICAgZGVmIGdldF9maWxlKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmV0dXJuIGEgZmlsZS1saWtlIHJlcHJlc2VudGF0aW9uIG9yIHJhaXNlIGEgS2V5RXJyb3IuIiIiCiAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHNlbGYuX2xvb2t1cChrZXkpKSwgJ3JiJykKICAgICAgICByZXR1cm4gX1Byb3h5RmlsZShmKQoKICAgIGRlZiBpdGVya2V5cyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBrZXlzLiIiIgogICAgICAgIHNlbGYuX3JlZnJlc2goKQogICAgICAgIGZvciBrZXkgaW4gc2VsZi5fdG9jOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLl9sb29rdXAoa2V5KQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB5aWVsZCBrZXkKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGtleWVkIG1lc3NhZ2UgZXhpc3RzLCBGYWxzZSBvdGhlcndpc2UuIiIiCiAgICAgICAgc2VsZi5fcmVmcmVzaCgpCiAgICAgICAgcmV0dXJuIGtleSBpbiBzZWxmLl90b2MKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBjb3VudCBvZiBtZXNzYWdlcyBpbiB0aGUgbWFpbGJveC4iIiIKICAgICAgICBzZWxmLl9yZWZyZXNoKCkKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3RvYykKCiAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgIiIiV3JpdGUgYW55IHBlbmRpbmcgY2hhbmdlcyB0byBkaXNrLiIiIgogICAgICAgICMgTWFpbGRpciBjaGFuZ2VzIGFyZSBhbHdheXMgd3JpdHRlbiBpbW1lZGlhdGVseSwgc28gdGhlcmUncyBub3RoaW5nCiAgICAgICAgIyB0byBkby4KICAgICAgICBwYXNzCgogICAgZGVmIGxvY2soc2VsZik6CiAgICAgICAgIiIiTG9jayB0aGUgbWFpbGJveC4iIiIKICAgICAgICByZXR1cm4KCiAgICBkZWYgdW5sb2NrKHNlbGYpOgogICAgICAgICIiIlVubG9jayB0aGUgbWFpbGJveCBpZiBpdCBpcyBsb2NrZWQuIiIiCiAgICAgICAgcmV0dXJuCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkZsdXNoIGFuZCBjbG9zZSB0aGUgbWFpbGJveC4iIiIKICAgICAgICByZXR1cm4KCiAgICBkZWYgbGlzdF9mb2xkZXJzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZm9sZGVyIG5hbWVzLiIiIgogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxpc3RkaXIoc2VsZi5fcGF0aCk6CiAgICAgICAgICAgIGlmIGxlbihlbnRyeSkgPiAxIGFuZCBlbnRyeVswXSA9PSAnLicgYW5kIFwKICAgICAgICAgICAgICAgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgZW50cnkpKToKICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnlbMTpdKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgZ2V0X2ZvbGRlcihzZWxmLCBmb2xkZXIpOgogICAgICAgICIiIlJldHVybiBhIE1haWxkaXIgaW5zdGFuY2UgZm9yIHRoZSBuYW1lZCBmb2xkZXIuIiIiCiAgICAgICAgcmV0dXJuIE1haWxkaXIob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcuJyArIGZvbGRlciksCiAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yeT1zZWxmLl9mYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZT1GYWxzZSkKCiAgICBkZWYgYWRkX2ZvbGRlcihzZWxmLCBmb2xkZXIpOgogICAgICAgICIiIkNyZWF0ZSBhIGZvbGRlciBhbmQgcmV0dXJuIGEgTWFpbGRpciBpbnN0YW5jZSByZXByZXNlbnRpbmcgaXQuIiIiCiAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnLicgKyBmb2xkZXIpCiAgICAgICAgcmVzdWx0ID0gTWFpbGRpcihwYXRoLCBmYWN0b3J5PXNlbGYuX2ZhY3RvcnkpCiAgICAgICAgbWFpbGRpcmZvbGRlcl9wYXRoID0gb3MucGF0aC5qb2luKHBhdGgsICdtYWlsZGlyZm9sZGVyJykKICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobWFpbGRpcmZvbGRlcl9wYXRoKToKICAgICAgICAgICAgb3MuY2xvc2Uob3Mub3BlbihtYWlsZGlyZm9sZGVyX3BhdGgsIG9zLk9fQ1JFQVQgfCBvcy5PX1dST05MWSwKICAgICAgICAgICAgICAgIDBvNjY2KSkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIHJlbW92ZV9mb2xkZXIoc2VsZiwgZm9sZGVyKToKICAgICAgICAiIiJEZWxldGUgdGhlIG5hbWVkIGZvbGRlciwgd2hpY2ggbXVzdCBiZSBlbXB0eS4iIiIKICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcuJyArIGZvbGRlcikKICAgICAgICBmb3IgZW50cnkgaW4gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4ocGF0aCwgJ25ldycpKSArIFwKICAgICAgICAgICAgICAgICAgICAgb3MubGlzdGRpcihvcy5wYXRoLmpvaW4ocGF0aCwgJ2N1cicpKToKICAgICAgICAgICAgaWYgbGVuKGVudHJ5KSA8IDEgb3IgZW50cnlbMF0gIT0gJy4nOgogICAgICAgICAgICAgICAgcmFpc2UgTm90RW1wdHlFcnJvcignRm9sZGVyIGNvbnRhaW5zIG1lc3NhZ2Uocyk6ICVzJyAlIGZvbGRlcikKICAgICAgICBmb3IgZW50cnkgaW4gb3MubGlzdGRpcihwYXRoKToKICAgICAgICAgICAgaWYgZW50cnkgIT0gJ25ldycgYW5kIGVudHJ5ICE9ICdjdXInIGFuZCBlbnRyeSAhPSAndG1wJyBhbmQgXAogICAgICAgICAgICAgICBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihwYXRoLCBlbnRyeSkpOgogICAgICAgICAgICAgICAgcmFpc2UgTm90RW1wdHlFcnJvcigiRm9sZGVyIGNvbnRhaW5zIHN1YmRpcmVjdG9yeSAnJXMnOiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9sZGVyLCBlbnRyeSkpCiAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCwgdG9wZG93bj1GYWxzZSk6CiAgICAgICAgICAgIGZvciBlbnRyeSBpbiBmaWxlczoKICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4ocm9vdCwgZW50cnkpKQogICAgICAgICAgICBmb3IgZW50cnkgaW4gZGlyczoKICAgICAgICAgICAgICAgIG9zLnJtZGlyKG9zLnBhdGguam9pbihyb290LCBlbnRyeSkpCiAgICAgICAgb3Mucm1kaXIocGF0aCkKCiAgICBkZWYgY2xlYW4oc2VsZik6CiAgICAgICAgIiIiRGVsZXRlIG9sZCBmaWxlcyBpbiAidG1wIi4iIiIKICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQogICAgICAgIGZvciBlbnRyeSBpbiBvcy5saXN0ZGlyKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAndG1wJykpOgogICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICd0bXAnLCBlbnRyeSkKICAgICAgICAgICAgaWYgbm93IC0gb3MucGF0aC5nZXRhdGltZShwYXRoKSA+IDEyOTYwMDogICAjIDYwICogNjAgKiAzNgogICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhdGgpCgogICAgX2NvdW50ID0gMSAgIyBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIGZpbGUgbmFtZXMuCgogICAgZGVmIF9jcmVhdGVfdG1wKHNlbGYpOgogICAgICAgICIiIkNyZWF0ZSBhIGZpbGUgaW4gdGhlIHRtcCBzdWJkaXJlY3RvcnkgYW5kIG9wZW4gYW5kIHJldHVybiBpdC4iIiIKICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQogICAgICAgIGhvc3RuYW1lID0gc29ja2V0LmdldGhvc3RuYW1lKCkKICAgICAgICBpZiAnLycgaW4gaG9zdG5hbWU6CiAgICAgICAgICAgIGhvc3RuYW1lID0gaG9zdG5hbWUucmVwbGFjZSgnLycsIHInXDA1NycpCiAgICAgICAgaWYgJzonIGluIGhvc3RuYW1lOgogICAgICAgICAgICBob3N0bmFtZSA9IGhvc3RuYW1lLnJlcGxhY2UoJzonLCByJ1wwNzInKQogICAgICAgIHVuaXEgPSAiJXMuTSVzUCVzUSVzLiVzIiAlIChpbnQobm93KSwgaW50KG5vdyAlIDEgKiAxZTYpLCBvcy5nZXRwaWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbGRpci5fY291bnQsIGhvc3RuYW1lKQogICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJ3RtcCcsIHVuaXEpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvcy5zdGF0KHBhdGgpCiAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICBNYWlsZGlyLl9jb3VudCArPSAxCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBfY3JlYXRlX2NhcmVmdWxseShwYXRoKQogICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICAjIEZhbGwgdGhyb3VnaCB0byBoZXJlIGlmIHN0YXQgc3VjY2VlZGVkIG9yIG9wZW4gcmFpc2VkIEVFWElTVC4KICAgICAgICByYWlzZSBFeHRlcm5hbENsYXNoRXJyb3IoJ05hbWUgY2xhc2ggcHJldmVudGVkIGZpbGUgY3JlYXRpb246ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpCgogICAgZGVmIF9yZWZyZXNoKHNlbGYpOgogICAgICAgICIiIlVwZGF0ZSB0YWJsZSBvZiBjb250ZW50cyBtYXBwaW5nLiIiIgogICAgICAgICMgSWYgaXQgaGFzIGJlZW4gbGVzcyB0aGFuIHR3byBzZWNvbmRzIHNpbmNlIHRoZSBsYXN0IF9yZWZyZXNoKCkgY2FsbCwKICAgICAgICAjIHdlIGhhdmUgdG8gdW5jb25kaXRpb25hbGx5IHJlLXJlYWQgdGhlIG1haWxib3gganVzdCBpbiBjYXNlIGl0IGhhcwogICAgICAgICMgYmVlbiBtb2RpZmllZCwgYmVjYXVzZSBvcy5wYXRoLm10aW1lKCkgaGFzIGEgMiBzZWMgcmVzb2x1dGlvbiBpbiB0aGUKICAgICAgICAjIG1vc3QgY29tbW9uIHdvcnN0IGNhc2UgKEZBVCkgYW5kIGEgMSBzZWMgcmVzb2x1dGlvbiB0eXBpY2FsbHkuICBUaGlzCiAgICAgICAgIyByZXN1bHRzIGluIGEgZmV3IHVubmVjZXNzYXJ5IHJlLXJlYWRzIHdoZW4gX3JlZnJlc2goKSBpcyBjYWxsZWQKICAgICAgICAjIG11bHRpcGxlIHRpbWVzIGluIHRoYXQgaW50ZXJ2YWwsIGJ1dCBvbmNlIHRoZSBjbG9jayB0aWNrcyBvdmVyLCB3ZQogICAgICAgICMgd2lsbCBvbmx5IHJlLXJlYWQgYXMgbmVlZGVkLiAgQmVjYXVzZSB0aGUgZmlsZXN5c3RlbSBtaWdodCBiZSBiZWluZwogICAgICAgICMgc2VydmVkIGJ5IGFuIGluZGVwZW5kZW50IHN5c3RlbSB3aXRoIGl0cyBvd24gY2xvY2ssIHdlIHJlY29yZCBhbmQKICAgICAgICAjIGNvbXBhcmUgd2l0aCB0aGUgbXRpbWVzIGZyb20gdGhlIGZpbGVzeXN0ZW0uICBCZWNhdXNlIHRoZSBvdGhlcgogICAgICAgICMgc3lzdGVtJ3MgY2xvY2sgbWlnaHQgYmUgc2tld2luZyByZWxhdGl2ZSB0byBvdXIgY2xvY2ssIHdlIGFkZCBhbgogICAgICAgICMgZXh0cmEgZGVsdGEgdG8gb3VyIHdhaXQuICBUaGUgZGVmYXVsdCBpcyBvbmUgdGVudGggc2Vjb25kLCBidXQgaXMgYW4KICAgICAgICAjIGluc3RhbmNlIHZhcmlhYmxlIGFuZCBzbyBjYW4gYmUgYWRqdXN0ZWQgaWYgZGVhbGluZyB3aXRoIGEKICAgICAgICAjIHBhcnRpY3VsYXJseSBza2V3ZWQgb3IgaXJyZWd1bGFyIHN5c3RlbS4KICAgICAgICBpZiB0aW1lLnRpbWUoKSAtIHNlbGYuX2xhc3RfcmVhZCA+IDIgKyBzZWxmLl9za2V3ZmFjdG9yOgogICAgICAgICAgICByZWZyZXNoID0gRmFsc2UKICAgICAgICAgICAgZm9yIHN1YmRpciBpbiBzZWxmLl90b2NfbXRpbWVzOgogICAgICAgICAgICAgICAgbXRpbWUgPSBvcy5wYXRoLmdldG10aW1lKHNlbGYuX3BhdGhzW3N1YmRpcl0pCiAgICAgICAgICAgICAgICBpZiBtdGltZSA+IHNlbGYuX3RvY19tdGltZXNbc3ViZGlyXToKICAgICAgICAgICAgICAgICAgICByZWZyZXNoID0gVHJ1ZQogICAgICAgICAgICAgICAgc2VsZi5fdG9jX210aW1lc1tzdWJkaXJdID0gbXRpbWUKICAgICAgICAgICAgaWYgbm90IHJlZnJlc2g6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAjIFJlZnJlc2ggdG9jCiAgICAgICAgc2VsZi5fdG9jID0ge30KICAgICAgICBmb3Igc3ViZGlyIGluIHNlbGYuX3RvY19tdGltZXM6CiAgICAgICAgICAgIHBhdGggPSBzZWxmLl9wYXRoc1tzdWJkaXJdCiAgICAgICAgICAgIGZvciBlbnRyeSBpbiBvcy5saXN0ZGlyKHBhdGgpOgogICAgICAgICAgICAgICAgcCA9IG9zLnBhdGguam9pbihwYXRoLCBlbnRyeSkKICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocCk6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIHVuaXEgPSBlbnRyeS5zcGxpdChzZWxmLmNvbG9uKVswXQogICAgICAgICAgICAgICAgc2VsZi5fdG9jW3VuaXFdID0gb3MucGF0aC5qb2luKHN1YmRpciwgZW50cnkpCiAgICAgICAgc2VsZi5fbGFzdF9yZWFkID0gdGltZS50aW1lKCkKCiAgICBkZWYgX2xvb2t1cChzZWxmLCBrZXkpOgogICAgICAgICIiIlVzZSBUT0MgdG8gcmV0dXJuIHN1YnBhdGggZm9yIGdpdmVuIGtleSwgb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzZWxmLl90b2Nba2V5XSkpOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RvY1trZXldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgc2VsZi5fcmVmcmVzaCgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fdG9jW2tleV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCdObyBtZXNzYWdlIHdpdGgga2V5OiAlcycgJSBrZXkpIGZyb20gTm9uZQoKICAgICMgVGhpcyBtZXRob2QgaXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb25seS4KICAgIGRlZiBuZXh0KHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgbmV4dCBtZXNzYWdlIGluIGEgb25lLXRpbWUgaXRlcmF0aW9uLiIiIgogICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdfb25ldGltZV9rZXlzJyk6CiAgICAgICAgICAgIHNlbGYuX29uZXRpbWVfa2V5cyA9IHNlbGYuaXRlcmtleXMoKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmW25leHQoc2VsZi5fb25ldGltZV9rZXlzKV0KICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICBjb250aW51ZQoKCmNsYXNzIF9zaW5nbGVmaWxlTWFpbGJveChNYWlsYm94KToKICAgICIiIkEgc2luZ2xlLWZpbGUgbWFpbGJveC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZmFjdG9yeT1Ob25lLCBjcmVhdGU9VHJ1ZSk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIHNpbmdsZS1maWxlIG1haWxib3guIiIiCiAgICAgICAgTWFpbGJveC5fX2luaXRfXyhzZWxmLCBwYXRoLCBmYWN0b3J5LCBjcmVhdGUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmID0gb3BlbihzZWxmLl9wYXRoLCAncmIrJykKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgICAgIGlmIGNyZWF0ZToKICAgICAgICAgICAgICAgICAgICBmID0gb3BlbihzZWxmLl9wYXRoLCAnd2IrJykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm9TdWNoTWFpbGJveEVycm9yKHNlbGYuX3BhdGgpCiAgICAgICAgICAgIGVsaWYgZS5lcnJubyBpbiAoZXJybm8uRUFDQ0VTLCBlcnJuby5FUk9GUyk6CiAgICAgICAgICAgICAgICBmID0gb3BlbihzZWxmLl9wYXRoLCAncmInKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICBzZWxmLl9maWxlID0gZgogICAgICAgIHNlbGYuX3RvYyA9IE5vbmUKICAgICAgICBzZWxmLl9uZXh0X2tleSA9IDAKICAgICAgICBzZWxmLl9wZW5kaW5nID0gRmFsc2UgICAgICAgIyBObyBjaGFuZ2VzIHJlcXVpcmUgcmV3cml0aW5nIHRoZSBmaWxlLgogICAgICAgIHNlbGYuX3BlbmRpbmdfc3luYyA9IEZhbHNlICAjIE5vIG5lZWQgdG8gc3luYyB0aGUgZmlsZQogICAgICAgIHNlbGYuX2xvY2tlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fZmlsZV9sZW5ndGggPSBOb25lICAgICMgVXNlZCB0byByZWNvcmQgbWFpbGJveCBzaXplCgogICAgZGVmIGFkZChzZWxmLCBtZXNzYWdlKToKICAgICAgICAiIiJBZGQgbWVzc2FnZSBhbmQgcmV0dXJuIGFzc2lnbmVkIGtleS4iIiIKICAgICAgICBzZWxmLl9sb29rdXAoKQogICAgICAgIHNlbGYuX3RvY1tzZWxmLl9uZXh0X2tleV0gPSBzZWxmLl9hcHBlbmRfbWVzc2FnZShtZXNzYWdlKQogICAgICAgIHNlbGYuX25leHRfa2V5ICs9IDEKICAgICAgICAjIF9hcHBlbmRfbWVzc2FnZSBhcHBlbmRzIHRoZSBtZXNzYWdlIHRvIHRoZSBtYWlsYm94IGZpbGUuIFdlCiAgICAgICAgIyBkb24ndCBuZWVkIGEgZnVsbCByZXdyaXRlICsgcmVuYW1lLCBzeW5jIGlzIGVub3VnaC4KICAgICAgICBzZWxmLl9wZW5kaW5nX3N5bmMgPSBUcnVlCiAgICAgICAgcmV0dXJuIHNlbGYuX25leHRfa2V5IC0gMQoKICAgIGRlZiByZW1vdmUoc2VsZiwga2V5KToKICAgICAgICAiIiJSZW1vdmUgdGhlIGtleWVkIG1lc3NhZ2U7IHJhaXNlIEtleUVycm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QuIiIiCiAgICAgICAgc2VsZi5fbG9va3VwKGtleSkKICAgICAgICBkZWwgc2VsZi5fdG9jW2tleV0KICAgICAgICBzZWxmLl9wZW5kaW5nID0gVHJ1ZQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIG1lc3NhZ2UpOgogICAgICAgICIiIlJlcGxhY2UgdGhlIGtleWVkIG1lc3NhZ2U7IHJhaXNlIEtleUVycm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QuIiIiCiAgICAgICAgc2VsZi5fbG9va3VwKGtleSkKICAgICAgICBzZWxmLl90b2Nba2V5XSA9IHNlbGYuX2FwcGVuZF9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgc2VsZi5fcGVuZGluZyA9IFRydWUKCiAgICBkZWYgaXRlcmtleXMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIga2V5cy4iIiIKICAgICAgICBzZWxmLl9sb29rdXAoKQogICAgICAgIHlpZWxkIGZyb20gc2VsZi5fdG9jLmtleXMoKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUga2V5ZWQgbWVzc2FnZSBleGlzdHMsIEZhbHNlIG90aGVyd2lzZS4iIiIKICAgICAgICBzZWxmLl9sb29rdXAoKQogICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5fdG9jCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgY291bnQgb2YgbWVzc2FnZXMgaW4gdGhlIG1haWxib3guIiIiCiAgICAgICAgc2VsZi5fbG9va3VwKCkKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3RvYykKCiAgICBkZWYgbG9jayhzZWxmKToKICAgICAgICAiIiJMb2NrIHRoZSBtYWlsYm94LiIiIgogICAgICAgIGlmIG5vdCBzZWxmLl9sb2NrZWQ6CiAgICAgICAgICAgIF9sb2NrX2ZpbGUoc2VsZi5fZmlsZSkKICAgICAgICAgICAgc2VsZi5fbG9ja2VkID0gVHJ1ZQoKICAgIGRlZiB1bmxvY2soc2VsZik6CiAgICAgICAgIiIiVW5sb2NrIHRoZSBtYWlsYm94IGlmIGl0IGlzIGxvY2tlZC4iIiIKICAgICAgICBpZiBzZWxmLl9sb2NrZWQ6CiAgICAgICAgICAgIF91bmxvY2tfZmlsZShzZWxmLl9maWxlKQogICAgICAgICAgICBzZWxmLl9sb2NrZWQgPSBGYWxzZQoKICAgIGRlZiBmbHVzaChzZWxmKToKICAgICAgICAiIiJXcml0ZSBhbnkgcGVuZGluZyBjaGFuZ2VzIHRvIGRpc2suIiIiCiAgICAgICAgaWYgbm90IHNlbGYuX3BlbmRpbmc6CiAgICAgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfc3luYzoKICAgICAgICAgICAgICAgICMgTWVzc2FnZXMgaGF2ZSBvbmx5IGJlZW4gYWRkZWQsIHNvIHN5bmNpbmcgdGhlIGZpbGUKICAgICAgICAgICAgICAgICMgaXMgZW5vdWdoLgogICAgICAgICAgICAgICAgX3N5bmNfZmx1c2goc2VsZi5fZmlsZSkKICAgICAgICAgICAgICAgIHNlbGYuX3BlbmRpbmdfc3luYyA9IEZhbHNlCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIEluIG9yZGVyIHRvIGJlIHdyaXRpbmcgYW55dGhpbmcgb3V0IGF0IGFsbCwgc2VsZi5fdG9jIG11c3QKICAgICAgICAjIGFscmVhZHkgaGF2ZSBiZWVuIGdlbmVyYXRlZCAoYW5kIHByZXN1bWFibHkgaGFzIGJlZW4gbW9kaWZpZWQKICAgICAgICAjIGJ5IGFkZGluZyBvciBkZWxldGluZyBhbiBpdGVtKS4KICAgICAgICBhc3NlcnQgc2VsZi5fdG9jIGlzIG5vdCBOb25lCgogICAgICAgICMgQ2hlY2sgbGVuZ3RoIG9mIHNlbGYuX2ZpbGU7IGlmIGl0J3MgY2hhbmdlZCwgc29tZSBvdGhlciBwcm9jZXNzCiAgICAgICAgIyBoYXMgbW9kaWZpZWQgdGhlIG1haWxib3ggc2luY2Ugd2Ugc2Nhbm5lZCBpdC4KICAgICAgICBzZWxmLl9maWxlLnNlZWsoMCwgMikKICAgICAgICBjdXJfbGVuID0gc2VsZi5fZmlsZS50ZWxsKCkKICAgICAgICBpZiBjdXJfbGVuICE9IHNlbGYuX2ZpbGVfbGVuZ3RoOgogICAgICAgICAgICByYWlzZSBFeHRlcm5hbENsYXNoRXJyb3IoJ1NpemUgb2YgbWFpbGJveCBmaWxlIGNoYW5nZWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhleHBlY3RlZCAlaSwgZm91bmQgJWkpJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fZmlsZV9sZW5ndGgsIGN1cl9sZW4pKQoKICAgICAgICBuZXdfZmlsZSA9IF9jcmVhdGVfdGVtcG9yYXJ5KHNlbGYuX3BhdGgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBuZXdfdG9jID0ge30KICAgICAgICAgICAgc2VsZi5fcHJlX21haWxib3hfaG9vayhuZXdfZmlsZSkKICAgICAgICAgICAgZm9yIGtleSBpbiBzb3J0ZWQoc2VsZi5fdG9jLmtleXMoKSk6CiAgICAgICAgICAgICAgICBzdGFydCwgc3RvcCA9IHNlbGYuX3RvY1trZXldCiAgICAgICAgICAgICAgICBzZWxmLl9maWxlLnNlZWsoc3RhcnQpCiAgICAgICAgICAgICAgICBzZWxmLl9wcmVfbWVzc2FnZV9ob29rKG5ld19maWxlKQogICAgICAgICAgICAgICAgbmV3X3N0YXJ0ID0gbmV3X2ZpbGUudGVsbCgpCiAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgIGJ1ZmZlciA9IHNlbGYuX2ZpbGUucmVhZChtaW4oNDA5NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgLSBzZWxmLl9maWxlLnRlbGwoKSkpCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZmZlcjoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBuZXdfZmlsZS53cml0ZShidWZmZXIpCiAgICAgICAgICAgICAgICBuZXdfdG9jW2tleV0gPSAobmV3X3N0YXJ0LCBuZXdfZmlsZS50ZWxsKCkpCiAgICAgICAgICAgICAgICBzZWxmLl9wb3N0X21lc3NhZ2VfaG9vayhuZXdfZmlsZSkKICAgICAgICAgICAgc2VsZi5fZmlsZV9sZW5ndGggPSBuZXdfZmlsZS50ZWxsKCkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIG5ld19maWxlLmNsb3NlKCkKICAgICAgICAgICAgb3MucmVtb3ZlKG5ld19maWxlLm5hbWUpCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgX3N5bmNfY2xvc2UobmV3X2ZpbGUpCiAgICAgICAgIyBzZWxmLl9maWxlIGlzIGFib3V0IHRvIGdldCByZXBsYWNlZCwgc28gbm8gbmVlZCB0byBzeW5jLgogICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQogICAgICAgICMgTWFrZSBzdXJlIHRoZSBuZXcgZmlsZSdzIG1vZGUgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBmaWxlJ3MKICAgICAgICBtb2RlID0gb3Muc3RhdChzZWxmLl9wYXRoKS5zdF9tb2RlCiAgICAgICAgb3MuY2htb2QobmV3X2ZpbGUubmFtZSwgbW9kZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG9zLnJlbmFtZShuZXdfZmlsZS5uYW1lLCBzZWxmLl9wYXRoKQogICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLl9wYXRoKQogICAgICAgICAgICBvcy5yZW5hbWUobmV3X2ZpbGUubmFtZSwgc2VsZi5fcGF0aCkKICAgICAgICBzZWxmLl9maWxlID0gb3BlbihzZWxmLl9wYXRoLCAncmIrJykKICAgICAgICBzZWxmLl90b2MgPSBuZXdfdG9jCiAgICAgICAgc2VsZi5fcGVuZGluZyA9IEZhbHNlCiAgICAgICAgc2VsZi5fcGVuZGluZ19zeW5jID0gRmFsc2UKICAgICAgICBpZiBzZWxmLl9sb2NrZWQ6CiAgICAgICAgICAgIF9sb2NrX2ZpbGUoc2VsZi5fZmlsZSwgZG90bG9jaz1GYWxzZSkKCiAgICBkZWYgX3ByZV9tYWlsYm94X2hvb2soc2VsZiwgZik6CiAgICAgICAgIiIiQ2FsbGVkIGJlZm9yZSB3cml0aW5nIHRoZSBtYWlsYm94IHRvIGZpbGUgZi4iIiIKICAgICAgICByZXR1cm4KCiAgICBkZWYgX3ByZV9tZXNzYWdlX2hvb2soc2VsZiwgZik6CiAgICAgICAgIiIiQ2FsbGVkIGJlZm9yZSB3cml0aW5nIGVhY2ggbWVzc2FnZSB0byBmaWxlIGYuIiIiCiAgICAgICAgcmV0dXJuCgogICAgZGVmIF9wb3N0X21lc3NhZ2VfaG9vayhzZWxmLCBmKToKICAgICAgICAiIiJDYWxsZWQgYWZ0ZXIgd3JpdGluZyBlYWNoIG1lc3NhZ2UgdG8gZmlsZSBmLiIiIgogICAgICAgIHJldHVybgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIG1haWxib3guIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9sb2NrZWQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZi51bmxvY2soKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpICAjIFN5bmMgaGFzIGJlZW4gZG9uZSBieSBzZWxmLmZsdXNoKCkgYWJvdmUuCgogICAgZGVmIF9sb29rdXAoc2VsZiwga2V5PU5vbmUpOgogICAgICAgICIiIlJldHVybiAoc3RhcnQsIHN0b3ApIG9yIHJhaXNlIEtleUVycm9yLiIiIgogICAgICAgIGlmIHNlbGYuX3RvYyBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9nZW5lcmF0ZV90b2MoKQogICAgICAgIGlmIGtleSBpcyBub3QgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RvY1trZXldCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCdObyBtZXNzYWdlIHdpdGgga2V5OiAlcycgJSBrZXkpIGZyb20gTm9uZQoKICAgIGRlZiBfYXBwZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIiIiQXBwZW5kIG1lc3NhZ2UgdG8gbWFpbGJveCBhbmQgcmV0dXJuIChzdGFydCwgc3RvcCkgb2Zmc2V0cy4iIiIKICAgICAgICBzZWxmLl9maWxlLnNlZWsoMCwgMikKICAgICAgICBiZWZvcmUgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgIGlmIGxlbihzZWxmLl90b2MpID09IDAgYW5kIG5vdCBzZWxmLl9wZW5kaW5nOgogICAgICAgICAgICAjIFRoaXMgaXMgdGhlIGZpcnN0IG1lc3NhZ2UsIGFuZCB0aGUgX3ByZV9tYWlsYm94X2hvb2sKICAgICAgICAgICAgIyBoYXNuJ3QgeWV0IGJlZW4gY2FsbGVkLiBJZiBzZWxmLl9wZW5kaW5nIGlzIFRydWUsCiAgICAgICAgICAgICMgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlbW92ZWQsIHNvIF9wcmVfbWFpbGJveF9ob29rIG11c3QKICAgICAgICAgICAgIyBoYXZlIGJlZW4gY2FsbGVkIGFscmVhZHkuCiAgICAgICAgICAgIHNlbGYuX3ByZV9tYWlsYm94X2hvb2soc2VsZi5fZmlsZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3ByZV9tZXNzYWdlX2hvb2soc2VsZi5fZmlsZSkKICAgICAgICAgICAgb2Zmc2V0cyA9IHNlbGYuX2luc3RhbGxfbWVzc2FnZShtZXNzYWdlKQogICAgICAgICAgICBzZWxmLl9wb3N0X21lc3NhZ2VfaG9vayhzZWxmLl9maWxlKQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKGJlZm9yZSkKICAgICAgICAgICAgcmFpc2UKICAgICAgICBzZWxmLl9maWxlLmZsdXNoKCkKICAgICAgICBzZWxmLl9maWxlX2xlbmd0aCA9IHNlbGYuX2ZpbGUudGVsbCgpICAjIFJlY29yZCBjdXJyZW50IGxlbmd0aCBvZiBtYWlsYm94CiAgICAgICAgcmV0dXJuIG9mZnNldHMKCgoKY2xhc3MgX21ib3hNTURGKF9zaW5nbGVmaWxlTWFpbGJveCk6CiAgICAiIiJBbiBtYm94IG9yIE1NREYgbWFpbGJveC4iIiIKCiAgICBfbWFuZ2xlX2Zyb21fID0gVHJ1ZQoKICAgIGRlZiBnZXRfbWVzc2FnZShzZWxmLCBrZXkpOgogICAgICAgICIiIlJldHVybiBhIE1lc3NhZ2UgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICBzdGFydCwgc3RvcCA9IHNlbGYuX2xvb2t1cChrZXkpCiAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHN0YXJ0KQogICAgICAgIGZyb21fbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxpbmUoKS5yZXBsYWNlKGxpbmVzZXAsIGInJykKICAgICAgICBzdHJpbmcgPSBzZWxmLl9maWxlLnJlYWQoc3RvcCAtIHNlbGYuX2ZpbGUudGVsbCgpKQogICAgICAgIG1zZyA9IHNlbGYuX21lc3NhZ2VfZmFjdG9yeShzdHJpbmcucmVwbGFjZShsaW5lc2VwLCBiJ1xuJykpCiAgICAgICAgbXNnLnNldF9mcm9tKGZyb21fbGluZVs1Ol0uZGVjb2RlKCdhc2NpaScpKQogICAgICAgIHJldHVybiBtc2cKCiAgICBkZWYgZ2V0X3N0cmluZyhzZWxmLCBrZXksIGZyb21fPUZhbHNlKToKICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKAogICAgICAgICAgICBzZWxmLmdldF9ieXRlcyhrZXksIGZyb21fKSkuYXNfc3RyaW5nKHVuaXhmcm9tPWZyb21fKQoKICAgIGRlZiBnZXRfYnl0ZXMoc2VsZiwga2V5LCBmcm9tXz1GYWxzZSk6CiAgICAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9yIHJhaXNlIGEgS2V5RXJyb3IuIiIiCiAgICAgICAgc3RhcnQsIHN0b3AgPSBzZWxmLl9sb29rdXAoa2V5KQogICAgICAgIHNlbGYuX2ZpbGUuc2VlayhzdGFydCkKICAgICAgICBpZiBub3QgZnJvbV86CiAgICAgICAgICAgIHNlbGYuX2ZpbGUucmVhZGxpbmUoKQogICAgICAgIHN0cmluZyA9IHNlbGYuX2ZpbGUucmVhZChzdG9wIC0gc2VsZi5fZmlsZS50ZWxsKCkpCiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGxpbmVzZXAsIGInXG4nKQoKICAgIGRlZiBnZXRfZmlsZShzZWxmLCBrZXksIGZyb21fPUZhbHNlKToKICAgICAgICAiIiJSZXR1cm4gYSBmaWxlLWxpa2UgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICBzdGFydCwgc3RvcCA9IHNlbGYuX2xvb2t1cChrZXkpCiAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHN0YXJ0KQogICAgICAgIGlmIG5vdCBmcm9tXzoKICAgICAgICAgICAgc2VsZi5fZmlsZS5yZWFkbGluZSgpCiAgICAgICAgcmV0dXJuIF9QYXJ0aWFsRmlsZShzZWxmLl9maWxlLCBzZWxmLl9maWxlLnRlbGwoKSwgc3RvcCkKCiAgICBkZWYgX2luc3RhbGxfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAiIiJGb3JtYXQgYSBtZXNzYWdlIGFuZCBibGluZGx5IHdyaXRlIHRvIHNlbGYuX2ZpbGUuIiIiCiAgICAgICAgZnJvbV9saW5lID0gTm9uZQogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgc3RyKToKICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3N0cmluZ190b19ieXRlcyhtZXNzYWdlKQogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgYnl0ZXMpIGFuZCBtZXNzYWdlLnN0YXJ0c3dpdGgoYidGcm9tICcpOgogICAgICAgICAgICBuZXdsaW5lID0gbWVzc2FnZS5maW5kKGInXG4nKQogICAgICAgICAgICBpZiBuZXdsaW5lICE9IC0xOgogICAgICAgICAgICAgICAgZnJvbV9saW5lID0gbWVzc2FnZVs6bmV3bGluZV0KICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlW25ld2xpbmUgKyAxOl0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGZyb21fbGluZSA9IG1lc3NhZ2UKICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBiJycKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgX21ib3hNTURGTWVzc2FnZSk6CiAgICAgICAgICAgIGF1dGhvciA9IG1lc3NhZ2UuZ2V0X2Zyb20oKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgZnJvbV9saW5lID0gYidGcm9tICcgKyBhdXRob3IKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgZW1haWwubWVzc2FnZS5NZXNzYWdlKToKICAgICAgICAgICAgZnJvbV9saW5lID0gbWVzc2FnZS5nZXRfdW5peGZyb20oKSAgIyBNYXkgYmUgTm9uZS4KICAgICAgICAgICAgaWYgZnJvbV9saW5lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgZnJvbV9saW5lID0gZnJvbV9saW5lLmVuY29kZSgnYXNjaWknKQogICAgICAgIGlmIGZyb21fbGluZSBpcyBOb25lOgogICAgICAgICAgICBmcm9tX2xpbmUgPSBiJ0Zyb20gTUFJTEVSLURBRU1PTiAnICsgdGltZS5hc2N0aW1lKHRpbWUuZ210aW1lKCkpLmVuY29kZSgpCiAgICAgICAgc3RhcnQgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoZnJvbV9saW5lICsgbGluZXNlcCkKICAgICAgICBzZWxmLl9kdW1wX21lc3NhZ2UobWVzc2FnZSwgc2VsZi5fZmlsZSwgc2VsZi5fbWFuZ2xlX2Zyb21fKQogICAgICAgIHN0b3AgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgIHJldHVybiAoc3RhcnQsIHN0b3ApCgoKY2xhc3MgbWJveChfbWJveE1NREYpOgogICAgIiIiQSBjbGFzc2ljIG1ib3ggbWFpbGJveC4iIiIKCiAgICBfbWFuZ2xlX2Zyb21fID0gVHJ1ZQoKICAgICMgQWxsIG1lc3NhZ2VzIG11c3QgZW5kIGluIGEgbmV3bGluZSBjaGFyYWN0ZXIsIGFuZAogICAgIyBfcG9zdF9tZXNzYWdlX2hvb2tzIG91dHB1dHMgYW4gZW1wdHkgbGluZSBiZXR3ZWVuIG1lc3NhZ2VzLgogICAgX2FwcGVuZF9uZXdsaW5lID0gVHJ1ZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBmYWN0b3J5PU5vbmUsIGNyZWF0ZT1UcnVlKToKICAgICAgICAiIiJJbml0aWFsaXplIGFuIG1ib3ggbWFpbGJveC4iIiIKICAgICAgICBzZWxmLl9tZXNzYWdlX2ZhY3RvcnkgPSBtYm94TWVzc2FnZQogICAgICAgIF9tYm94TU1ERi5fX2luaXRfXyhzZWxmLCBwYXRoLCBmYWN0b3J5LCBjcmVhdGUpCgogICAgZGVmIF9wb3N0X21lc3NhZ2VfaG9vayhzZWxmLCBmKToKICAgICAgICAiIiJDYWxsZWQgYWZ0ZXIgd3JpdGluZyBlYWNoIG1lc3NhZ2UgdG8gZmlsZSBmLiIiIgogICAgICAgIGYud3JpdGUobGluZXNlcCkKCiAgICBkZWYgX2dlbmVyYXRlX3RvYyhzZWxmKToKICAgICAgICAiIiJHZW5lcmF0ZSBrZXktdG8tKHN0YXJ0LCBzdG9wKSB0YWJsZSBvZiBjb250ZW50cy4iIiIKICAgICAgICBzdGFydHMsIHN0b3BzID0gW10sIFtdCiAgICAgICAgbGFzdF93YXNfZW1wdHkgPSBGYWxzZQogICAgICAgIHNlbGYuX2ZpbGUuc2VlaygwKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGxpbmVfcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKICAgICAgICAgICAgbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxpbmUoKQogICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoYidGcm9tICcpOgogICAgICAgICAgICAgICAgaWYgbGVuKHN0b3BzKSA8IGxlbihzdGFydHMpOgogICAgICAgICAgICAgICAgICAgIGlmIGxhc3Rfd2FzX2VtcHR5OgogICAgICAgICAgICAgICAgICAgICAgICBzdG9wcy5hcHBlbmQobGluZV9wb3MgLSBsZW4obGluZXNlcCkpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgbGFzdCBsaW5lIGJlZm9yZSB0aGUgIkZyb20gIiBsaW5lIHdhc24ndAogICAgICAgICAgICAgICAgICAgICAgICAjIGJsYW5rLCBidXQgd2UgY29uc2lkZXIgaXQgYSBzdGFydCBvZiBhCiAgICAgICAgICAgICAgICAgICAgICAgICMgbWVzc2FnZSBhbnl3YXkuCiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BzLmFwcGVuZChsaW5lX3BvcykKICAgICAgICAgICAgICAgIHN0YXJ0cy5hcHBlbmQobGluZV9wb3MpCiAgICAgICAgICAgICAgICBsYXN0X3dhc19lbXB0eSA9IEZhbHNlCiAgICAgICAgICAgIGVsaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICBpZiBsYXN0X3dhc19lbXB0eToKICAgICAgICAgICAgICAgICAgICBzdG9wcy5hcHBlbmQobGluZV9wb3MgLSBsZW4obGluZXNlcCkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHN0b3BzLmFwcGVuZChsaW5lX3BvcykKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsaWYgbGluZSA9PSBsaW5lc2VwOgogICAgICAgICAgICAgICAgbGFzdF93YXNfZW1wdHkgPSBUcnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBsYXN0X3dhc19lbXB0eSA9IEZhbHNlCiAgICAgICAgc2VsZi5fdG9jID0gZGljdChlbnVtZXJhdGUoemlwKHN0YXJ0cywgc3RvcHMpKSkKICAgICAgICBzZWxmLl9uZXh0X2tleSA9IGxlbihzZWxmLl90b2MpCiAgICAgICAgc2VsZi5fZmlsZV9sZW5ndGggPSBzZWxmLl9maWxlLnRlbGwoKQoKCmNsYXNzIE1NREYoX21ib3hNTURGKToKICAgICIiIkFuIE1NREYgbWFpbGJveC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZmFjdG9yeT1Ob25lLCBjcmVhdGU9VHJ1ZSk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBNTURGIG1haWxib3guIiIiCiAgICAgICAgc2VsZi5fbWVzc2FnZV9mYWN0b3J5ID0gTU1ERk1lc3NhZ2UKICAgICAgICBfbWJveE1NREYuX19pbml0X18oc2VsZiwgcGF0aCwgZmFjdG9yeSwgY3JlYXRlKQoKICAgIGRlZiBfcHJlX21lc3NhZ2VfaG9vayhzZWxmLCBmKToKICAgICAgICAiIiJDYWxsZWQgYmVmb3JlIHdyaXRpbmcgZWFjaCBtZXNzYWdlIHRvIGZpbGUgZi4iIiIKICAgICAgICBmLndyaXRlKGInXDAwMVwwMDFcMDAxXDAwMScgKyBsaW5lc2VwKQoKICAgIGRlZiBfcG9zdF9tZXNzYWdlX2hvb2soc2VsZiwgZik6CiAgICAgICAgIiIiQ2FsbGVkIGFmdGVyIHdyaXRpbmcgZWFjaCBtZXNzYWdlIHRvIGZpbGUgZi4iIiIKICAgICAgICBmLndyaXRlKGxpbmVzZXAgKyBiJ1wwMDFcMDAxXDAwMVwwMDEnICsgbGluZXNlcCkKCiAgICBkZWYgX2dlbmVyYXRlX3RvYyhzZWxmKToKICAgICAgICAiIiJHZW5lcmF0ZSBrZXktdG8tKHN0YXJ0LCBzdG9wKSB0YWJsZSBvZiBjb250ZW50cy4iIiIKICAgICAgICBzdGFydHMsIHN0b3BzID0gW10sIFtdCiAgICAgICAgc2VsZi5fZmlsZS5zZWVrKDApCiAgICAgICAgbmV4dF9wb3MgPSAwCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgbGluZV9wb3MgPSBuZXh0X3BvcwogICAgICAgICAgICBsaW5lID0gc2VsZi5fZmlsZS5yZWFkbGluZSgpCiAgICAgICAgICAgIG5leHRfcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKGInXDAwMVwwMDFcMDAxXDAwMScgKyBsaW5lc2VwKToKICAgICAgICAgICAgICAgIHN0YXJ0cy5hcHBlbmQobmV4dF9wb3MpCiAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgIGxpbmVfcG9zID0gbmV4dF9wb3MKICAgICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5fZmlsZS5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgICAgbmV4dF9wb3MgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gYidcMDAxXDAwMVwwMDFcMDAxJyArIGxpbmVzZXA6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BzLmFwcGVuZChsaW5lX3BvcyAtIGxlbihsaW5lc2VwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBlbGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgICAgICAgICBzdG9wcy5hcHBlbmQobGluZV9wb3MpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHNlbGYuX3RvYyA9IGRpY3QoZW51bWVyYXRlKHppcChzdGFydHMsIHN0b3BzKSkpCiAgICAgICAgc2VsZi5fbmV4dF9rZXkgPSBsZW4oc2VsZi5fdG9jKQogICAgICAgIHNlbGYuX2ZpbGUuc2VlaygwLCAyKQogICAgICAgIHNlbGYuX2ZpbGVfbGVuZ3RoID0gc2VsZi5fZmlsZS50ZWxsKCkKCgpjbGFzcyBNSChNYWlsYm94KToKICAgICIiIkFuIE1IIG1haWxib3guIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGZhY3Rvcnk9Tm9uZSwgY3JlYXRlPVRydWUpOgogICAgICAgICIiIkluaXRpYWxpemUgYW4gTUggaW5zdGFuY2UuIiIiCiAgICAgICAgTWFpbGJveC5fX2luaXRfXyhzZWxmLCBwYXRoLCBmYWN0b3J5LCBjcmVhdGUpCiAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuX3BhdGgpOgogICAgICAgICAgICBpZiBjcmVhdGU6CiAgICAgICAgICAgICAgICBvcy5ta2RpcihzZWxmLl9wYXRoLCAwbzcwMCkKICAgICAgICAgICAgICAgIG9zLmNsb3NlKG9zLm9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLk9fQ1JFQVQgfCBvcy5PX0VYQ0wgfCBvcy5PX1dST05MWSwgMG82MDApKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgTm9TdWNoTWFpbGJveEVycm9yKHNlbGYuX3BhdGgpCiAgICAgICAgc2VsZi5fbG9ja2VkID0gRmFsc2UKCiAgICBkZWYgYWRkKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICIiIkFkZCBtZXNzYWdlIGFuZCByZXR1cm4gYXNzaWduZWQga2V5LiIiIgogICAgICAgIGtleXMgPSBzZWxmLmtleXMoKQogICAgICAgIGlmIGxlbihrZXlzKSA9PSAwOgogICAgICAgICAgICBuZXdfa2V5ID0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5ld19rZXkgPSBtYXgoa2V5cykgKyAxCiAgICAgICAgbmV3X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3RyKG5ld19rZXkpKQogICAgICAgIGYgPSBfY3JlYXRlX2NhcmVmdWxseShuZXdfcGF0aCkKICAgICAgICBjbG9zZWQgPSBGYWxzZQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5fbG9ja2VkOgogICAgICAgICAgICAgICAgX2xvY2tfZmlsZShmKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZHVtcF9tZXNzYWdlKG1lc3NhZ2UsIGYpCiAgICAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAjIFVubG9jayBhbmQgY2xvc2Ugc28gaXQgY2FuIGJlIGRlbGV0ZWQgb24gV2luZG93cwogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tlZDoKICAgICAgICAgICAgICAgICAgICAgICAgX3VubG9ja19maWxlKGYpCiAgICAgICAgICAgICAgICAgICAgX3N5bmNfY2xvc2UoZikKICAgICAgICAgICAgICAgICAgICBjbG9zZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG5ld19wYXRoKQogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIE1ITWVzc2FnZSk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZHVtcF9zZXF1ZW5jZXMobWVzc2FnZSwgbmV3X2tleSkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tlZDoKICAgICAgICAgICAgICAgICAgICBfdW5sb2NrX2ZpbGUoZikKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBub3QgY2xvc2VkOgogICAgICAgICAgICAgICAgX3N5bmNfY2xvc2UoZikKICAgICAgICByZXR1cm4gbmV3X2tleQoKICAgIGRlZiByZW1vdmUoc2VsZiwga2V5KToKICAgICAgICAiIiJSZW1vdmUgdGhlIGtleWVkIG1lc3NhZ2U7IHJhaXNlIEtleUVycm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QuIiIiCiAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgsICdyYisnKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoJ05vIG1lc3NhZ2Ugd2l0aCBrZXk6ICVzJyAlIGtleSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIG1lc3NhZ2UpOgogICAgICAgICIiIlJlcGxhY2UgdGhlIGtleWVkIG1lc3NhZ2U7IHJhaXNlIEtleUVycm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QuIiIiCiAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgsICdyYisnKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoJ05vIG1lc3NhZ2Ugd2l0aCBrZXk6ICVzJyAlIGtleSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzZWxmLl9sb2NrZWQ6CiAgICAgICAgICAgICAgICBfbG9ja19maWxlKGYpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG9zLmNsb3NlKG9zLm9wZW4ocGF0aCwgb3MuT19XUk9OTFkgfCBvcy5PX1RSVU5DKSkKICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfbWVzc2FnZShtZXNzYWdlLCBmKQogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNSE1lc3NhZ2UpOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfc2VxdWVuY2VzKG1lc3NhZ2UsIGtleSkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tlZDoKICAgICAgICAgICAgICAgICAgICBfdW5sb2NrX2ZpbGUoZikKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBfc3luY19jbG9zZShmKQoKICAgIGRlZiBnZXRfbWVzc2FnZShzZWxmLCBrZXkpOgogICAgICAgICIiIlJldHVybiBhIE1lc3NhZ2UgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tlZDoKICAgICAgICAgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSksICdyYisnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihrZXkpKSwgJ3JiJykKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCdObyBtZXNzYWdlIHdpdGgga2V5OiAlcycgJSBrZXkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIHdpdGggZjoKICAgICAgICAgICAgaWYgc2VsZi5fbG9ja2VkOgogICAgICAgICAgICAgICAgX2xvY2tfZmlsZShmKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBtc2cgPSBNSE1lc3NhZ2UoZikKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tlZDoKICAgICAgICAgICAgICAgICAgICBfdW5sb2NrX2ZpbGUoZikKICAgICAgICBmb3IgbmFtZSwga2V5X2xpc3QgaW4gc2VsZi5nZXRfc2VxdWVuY2VzKCkuaXRlbXMoKToKICAgICAgICAgICAgaWYga2V5IGluIGtleV9saXN0OgogICAgICAgICAgICAgICAgbXNnLmFkZF9zZXF1ZW5jZShuYW1lKQogICAgICAgIHJldHVybiBtc2cKCiAgICBkZWYgZ2V0X2J5dGVzKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmV0dXJuIGEgYnl0ZXMgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tlZDoKICAgICAgICAgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSksICdyYisnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihrZXkpKSwgJ3JiJykKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCdObyBtZXNzYWdlIHdpdGgga2V5OiAlcycgJSBrZXkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIHdpdGggZjoKICAgICAgICAgICAgaWYgc2VsZi5fbG9ja2VkOgogICAgICAgICAgICAgICAgX2xvY2tfZmlsZShmKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkucmVwbGFjZShsaW5lc2VwLCBiJ1xuJykKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tlZDoKICAgICAgICAgICAgICAgICAgICBfdW5sb2NrX2ZpbGUoZikKCiAgICBkZWYgZ2V0X2ZpbGUoc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gYSBmaWxlLWxpa2UgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSksICdyYicpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CiAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcignTm8gbWVzc2FnZSB3aXRoIGtleTogJXMnICUga2V5KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICByZXR1cm4gX1Byb3h5RmlsZShmKQoKICAgIGRlZiBpdGVya2V5cyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBrZXlzLiIiIgogICAgICAgIHJldHVybiBpdGVyKHNvcnRlZChpbnQoZW50cnkpIGZvciBlbnRyeSBpbiBvcy5saXN0ZGlyKHNlbGYuX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZW50cnkuaXNkaWdpdCgpKSkKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGtleWVkIG1lc3NhZ2UgZXhpc3RzLCBGYWxzZSBvdGhlcndpc2UuIiIiCiAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSkpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgY291bnQgb2YgbWVzc2FnZXMgaW4gdGhlIG1haWxib3guIiIiCiAgICAgICAgcmV0dXJuIGxlbihsaXN0KHNlbGYuaXRlcmtleXMoKSkpCgogICAgZGVmIGxvY2soc2VsZik6CiAgICAgICAgIiIiTG9jayB0aGUgbWFpbGJveC4iIiIKICAgICAgICBpZiBub3Qgc2VsZi5fbG9ja2VkOgogICAgICAgICAgICBzZWxmLl9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3JiKycpCiAgICAgICAgICAgIF9sb2NrX2ZpbGUoc2VsZi5fZmlsZSkKICAgICAgICAgICAgc2VsZi5fbG9ja2VkID0gVHJ1ZQoKICAgIGRlZiB1bmxvY2soc2VsZik6CiAgICAgICAgIiIiVW5sb2NrIHRoZSBtYWlsYm94IGlmIGl0IGlzIGxvY2tlZC4iIiIKICAgICAgICBpZiBzZWxmLl9sb2NrZWQ6CiAgICAgICAgICAgIF91bmxvY2tfZmlsZShzZWxmLl9maWxlKQogICAgICAgICAgICBfc3luY19jbG9zZShzZWxmLl9maWxlKQogICAgICAgICAgICBkZWwgc2VsZi5fZmlsZQogICAgICAgICAgICBzZWxmLl9sb2NrZWQgPSBGYWxzZQoKICAgIGRlZiBmbHVzaChzZWxmKToKICAgICAgICAiIiJXcml0ZSBhbnkgcGVuZGluZyBjaGFuZ2VzIHRvIHRoZSBkaXNrLiIiIgogICAgICAgIHJldHVybgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIG1haWxib3guIiIiCiAgICAgICAgaWYgc2VsZi5fbG9ja2VkOgogICAgICAgICAgICBzZWxmLnVubG9jaygpCgogICAgZGVmIGxpc3RfZm9sZGVycyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZvbGRlciBuYW1lcy4iIiIKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIGZvciBlbnRyeSBpbiBvcy5saXN0ZGlyKHNlbGYuX3BhdGgpOgogICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBlbnRyeSkpOgogICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChlbnRyeSkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGdldF9mb2xkZXIoc2VsZiwgZm9sZGVyKToKICAgICAgICAiIiJSZXR1cm4gYW4gTUggaW5zdGFuY2UgZm9yIHRoZSBuYW1lZCBmb2xkZXIuIiIiCiAgICAgICAgcmV0dXJuIE1IKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBmb2xkZXIpLAogICAgICAgICAgICAgICAgICBmYWN0b3J5PXNlbGYuX2ZhY3RvcnksIGNyZWF0ZT1GYWxzZSkKCiAgICBkZWYgYWRkX2ZvbGRlcihzZWxmLCBmb2xkZXIpOgogICAgICAgICIiIkNyZWF0ZSBhIGZvbGRlciBhbmQgcmV0dXJuIGFuIE1IIGluc3RhbmNlIHJlcHJlc2VudGluZyBpdC4iIiIKICAgICAgICByZXR1cm4gTUgob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIGZvbGRlciksCiAgICAgICAgICAgICAgICAgIGZhY3Rvcnk9c2VsZi5fZmFjdG9yeSkKCiAgICBkZWYgcmVtb3ZlX2ZvbGRlcihzZWxmLCBmb2xkZXIpOgogICAgICAgICIiIkRlbGV0ZSB0aGUgbmFtZWQgZm9sZGVyLCB3aGljaCBtdXN0IGJlIGVtcHR5LiIiIgogICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgZm9sZGVyKQogICAgICAgIGVudHJpZXMgPSBvcy5saXN0ZGlyKHBhdGgpCiAgICAgICAgaWYgZW50cmllcyA9PSBbJy5taF9zZXF1ZW5jZXMnXToKICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihwYXRoLCAnLm1oX3NlcXVlbmNlcycpKQogICAgICAgIGVsaWYgZW50cmllcyA9PSBbXToKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIE5vdEVtcHR5RXJyb3IoJ0ZvbGRlciBub3QgZW1wdHk6ICVzJyAlIHNlbGYuX3BhdGgpCiAgICAgICAgb3Mucm1kaXIocGF0aCkKCiAgICBkZWYgZ2V0X3NlcXVlbmNlcyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBuYW1lLXRvLWtleS1saXN0IGRpY3Rpb25hcnkgdG8gZGVmaW5lIGVhY2ggc2VxdWVuY2UuIiIiCiAgICAgICAgcmVzdWx0cyA9IHt9CiAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnLm1oX3NlcXVlbmNlcycpLCAncicsIGVuY29kaW5nPSdBU0NJSScpIGFzIGY6CiAgICAgICAgICAgIGFsbF9rZXlzID0gc2V0KHNlbGYua2V5cygpKQogICAgICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIG5hbWUsIGNvbnRlbnRzID0gbGluZS5zcGxpdCgnOicpCiAgICAgICAgICAgICAgICAgICAga2V5cyA9IHNldCgpCiAgICAgICAgICAgICAgICAgICAgZm9yIHNwZWMgaW4gY29udGVudHMuc3BsaXQoKToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3BlYy5pc2RpZ2l0KCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLmFkZChpbnQoc3BlYykpCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgc3RvcCA9IChpbnQoeCkgZm9yIHggaW4gc3BlYy5zcGxpdCgnLScpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cy51cGRhdGUocmFuZ2Uoc3RhcnQsIHN0b3AgKyAxKSkKICAgICAgICAgICAgICAgICAgICByZXN1bHRzW25hbWVdID0gW2tleSBmb3Iga2V5IGluIHNvcnRlZChrZXlzKSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGFsbF9rZXlzXQogICAgICAgICAgICAgICAgICAgIGlmIGxlbihyZXN1bHRzW25hbWVdKSA9PSAwOgogICAgICAgICAgICAgICAgICAgICAgICBkZWwgcmVzdWx0c1tuYW1lXQogICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgRm9ybWF0RXJyb3IoJ0ludmFsaWQgc2VxdWVuY2Ugc3BlY2lmaWNhdGlvbjogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLnJzdHJpcCgpKQogICAgICAgIHJldHVybiByZXN1bHRzCgogICAgZGVmIHNldF9zZXF1ZW5jZXMoc2VsZiwgc2VxdWVuY2VzKToKICAgICAgICAiIiJTZXQgc2VxdWVuY2VzIHVzaW5nIHRoZSBnaXZlbiBuYW1lLXRvLWtleS1saXN0IGRpY3Rpb25hcnkuIiIiCiAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyKycsIGVuY29kaW5nPSdBU0NJSScpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvcy5jbG9zZShvcy5vcGVuKGYubmFtZSwgb3MuT19XUk9OTFkgfCBvcy5PX1RSVU5DKSkKICAgICAgICAgICAgZm9yIG5hbWUsIGtleXMgaW4gc2VxdWVuY2VzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiBsZW4oa2V5cykgPT0gMDoKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgZi53cml0ZShuYW1lICsgJzonKQogICAgICAgICAgICAgICAgcHJldiA9IE5vbmUKICAgICAgICAgICAgICAgIGNvbXBsZXRpbmcgPSBGYWxzZQogICAgICAgICAgICAgICAgZm9yIGtleSBpbiBzb3J0ZWQoc2V0KGtleXMpKToKICAgICAgICAgICAgICAgICAgICBpZiBrZXkgLSAxID09IHByZXY6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb21wbGV0aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGluZyA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJy0nKQogICAgICAgICAgICAgICAgICAgIGVsaWYgY29tcGxldGluZzoKICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGluZyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyVzICVzJyAlIChwcmV2LCBrZXkpKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAlcycgJSBrZXkpCiAgICAgICAgICAgICAgICAgICAgcHJldiA9IGtleQogICAgICAgICAgICAgICAgaWYgY29tcGxldGluZzoKICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHN0cihwcmV2KSArICdcbicpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ1xuJykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBfc3luY19jbG9zZShmKQoKICAgIGRlZiBwYWNrKHNlbGYpOgogICAgICAgICIiIlJlLW5hbWUgbWVzc2FnZXMgdG8gZWxpbWluYXRlIG51bWJlcmluZyBnYXBzLiBJbnZhbGlkYXRlcyBrZXlzLiIiIgogICAgICAgIHNlcXVlbmNlcyA9IHNlbGYuZ2V0X3NlcXVlbmNlcygpCiAgICAgICAgcHJldiA9IDAKICAgICAgICBjaGFuZ2VzID0gW10KICAgICAgICBmb3Iga2V5IGluIHNlbGYuaXRlcmtleXMoKToKICAgICAgICAgICAgaWYga2V5IC0gMSAhPSBwcmV2OgogICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoKGtleSwgcHJldiArIDEpKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIG9zLmxpbmsob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihrZXkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIocHJldiArIDEpKSkKICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFBlcm1pc3Npb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgb3MucmVuYW1lKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIocHJldiArIDEpKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSkpCiAgICAgICAgICAgIHByZXYgKz0gMQogICAgICAgIHNlbGYuX25leHRfa2V5ID0gcHJldiArIDEKICAgICAgICBpZiBsZW4oY2hhbmdlcykgPT0gMDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZm9yIG5hbWUsIGtleV9saXN0IGluIHNlcXVlbmNlcy5pdGVtcygpOgogICAgICAgICAgICBmb3Igb2xkLCBuZXcgaW4gY2hhbmdlczoKICAgICAgICAgICAgICAgIGlmIG9sZCBpbiBrZXlfbGlzdDoKICAgICAgICAgICAgICAgICAgICBrZXlfbGlzdFtrZXlfbGlzdC5pbmRleChvbGQpXSA9IG5ldwogICAgICAgIHNlbGYuc2V0X3NlcXVlbmNlcyhzZXF1ZW5jZXMpCgogICAgZGVmIF9kdW1wX3NlcXVlbmNlcyhzZWxmLCBtZXNzYWdlLCBrZXkpOgogICAgICAgICIiIkluc3BlY3QgYSBuZXcgTUhNZXNzYWdlIGFuZCB1cGRhdGUgc2VxdWVuY2VzIGFwcHJvcHJpYXRlbHkuIiIiCiAgICAgICAgcGVuZGluZ19zZXF1ZW5jZXMgPSBtZXNzYWdlLmdldF9zZXF1ZW5jZXMoKQogICAgICAgIGFsbF9zZXF1ZW5jZXMgPSBzZWxmLmdldF9zZXF1ZW5jZXMoKQogICAgICAgIGZvciBuYW1lLCBrZXlfbGlzdCBpbiBhbGxfc2VxdWVuY2VzLml0ZW1zKCk6CiAgICAgICAgICAgIGlmIG5hbWUgaW4gcGVuZGluZ19zZXF1ZW5jZXM6CiAgICAgICAgICAgICAgICBrZXlfbGlzdC5hcHBlbmQoa2V5KQogICAgICAgICAgICBlbGlmIGtleSBpbiBrZXlfbGlzdDoKICAgICAgICAgICAgICAgIGRlbCBrZXlfbGlzdFtrZXlfbGlzdC5pbmRleChrZXkpXQogICAgICAgIGZvciBzZXF1ZW5jZSBpbiBwZW5kaW5nX3NlcXVlbmNlczoKICAgICAgICAgICAgaWYgc2VxdWVuY2Ugbm90IGluIGFsbF9zZXF1ZW5jZXM6CiAgICAgICAgICAgICAgICBhbGxfc2VxdWVuY2VzW3NlcXVlbmNlXSA9IFtrZXldCiAgICAgICAgc2VsZi5zZXRfc2VxdWVuY2VzKGFsbF9zZXF1ZW5jZXMpCgoKY2xhc3MgQmFieWwoX3NpbmdsZWZpbGVNYWlsYm94KToKICAgICIiIkFuIFJtYWlsLXN0eWxlIEJhYnlsIG1haWxib3guIiIiCgogICAgX3NwZWNpYWxfbGFiZWxzID0gZnJvemVuc2V0KHsndW5zZWVuJywgJ2RlbGV0ZWQnLCAnZmlsZWQnLCAnYW5zd2VyZWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yd2FyZGVkJywgJ2VkaXRlZCcsICdyZXNlbnQnfSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZmFjdG9yeT1Ob25lLCBjcmVhdGU9VHJ1ZSk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIEJhYnlsIG1haWxib3guIiIiCiAgICAgICAgX3NpbmdsZWZpbGVNYWlsYm94Ll9faW5pdF9fKHNlbGYsIHBhdGgsIGZhY3RvcnksIGNyZWF0ZSkKICAgICAgICBzZWxmLl9sYWJlbHMgPSB7fQoKICAgIGRlZiBhZGQoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIiIiQWRkIG1lc3NhZ2UgYW5kIHJldHVybiBhc3NpZ25lZCBrZXkuIiIiCiAgICAgICAga2V5ID0gX3NpbmdsZWZpbGVNYWlsYm94LmFkZChzZWxmLCBtZXNzYWdlKQogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgQmFieWxNZXNzYWdlKToKICAgICAgICAgICAgc2VsZi5fbGFiZWxzW2tleV0gPSBtZXNzYWdlLmdldF9sYWJlbHMoKQogICAgICAgIHJldHVybiBrZXkKCiAgICBkZWYgcmVtb3ZlKHNlbGYsIGtleSk6CiAgICAgICAgIiIiUmVtb3ZlIHRoZSBrZXllZCBtZXNzYWdlOyByYWlzZSBLZXlFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LiIiIgogICAgICAgIF9zaW5nbGVmaWxlTWFpbGJveC5yZW1vdmUoc2VsZiwga2V5KQogICAgICAgIGlmIGtleSBpbiBzZWxmLl9sYWJlbHM6CiAgICAgICAgICAgIGRlbCBzZWxmLl9sYWJlbHNba2V5XQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIG1lc3NhZ2UpOgogICAgICAgICIiIlJlcGxhY2UgdGhlIGtleWVkIG1lc3NhZ2U7IHJhaXNlIEtleUVycm9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QuIiIiCiAgICAgICAgX3NpbmdsZWZpbGVNYWlsYm94Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgbWVzc2FnZSkKICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIEJhYnlsTWVzc2FnZSk6CiAgICAgICAgICAgIHNlbGYuX2xhYmVsc1trZXldID0gbWVzc2FnZS5nZXRfbGFiZWxzKCkKCiAgICBkZWYgZ2V0X21lc3NhZ2Uoc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gYSBNZXNzYWdlIHJlcHJlc2VudGF0aW9uIG9yIHJhaXNlIGEgS2V5RXJyb3IuIiIiCiAgICAgICAgc3RhcnQsIHN0b3AgPSBzZWxmLl9sb29rdXAoa2V5KQogICAgICAgIHNlbGYuX2ZpbGUuc2VlayhzdGFydCkKICAgICAgICBzZWxmLl9maWxlLnJlYWRsaW5lKCkgICAjIFNraXAgYicxLCcgbGluZSBzcGVjaWZ5aW5nIGxhYmVscy4KICAgICAgICBvcmlnaW5hbF9oZWFkZXJzID0gaW8uQnl0ZXNJTygpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxpbmUoKQogICAgICAgICAgICBpZiBsaW5lID09IGInKioqIEVPT0ggKioqJyArIGxpbmVzZXAgb3Igbm90IGxpbmU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBvcmlnaW5hbF9oZWFkZXJzLndyaXRlKGxpbmUucmVwbGFjZShsaW5lc2VwLCBiJ1xuJykpCiAgICAgICAgdmlzaWJsZV9oZWFkZXJzID0gaW8uQnl0ZXNJTygpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxpbmUoKQogICAgICAgICAgICBpZiBsaW5lID09IGxpbmVzZXAgb3Igbm90IGxpbmU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB2aXNpYmxlX2hlYWRlcnMud3JpdGUobGluZS5yZXBsYWNlKGxpbmVzZXAsIGInXG4nKSkKICAgICAgICAjIFJlYWQgdXAgdG8gdGhlIHN0b3AsIG9yIHRvIHRoZSBlbmQKICAgICAgICBuID0gc3RvcCAtIHNlbGYuX2ZpbGUudGVsbCgpCiAgICAgICAgYXNzZXJ0IG4gPj0gMAogICAgICAgIGJvZHkgPSBzZWxmLl9maWxlLnJlYWQobikKICAgICAgICBib2R5ID0gYm9keS5yZXBsYWNlKGxpbmVzZXAsIGInXG4nKQogICAgICAgIG1zZyA9IEJhYnlsTWVzc2FnZShvcmlnaW5hbF9oZWFkZXJzLmdldHZhbHVlKCkgKyBib2R5KQogICAgICAgIG1zZy5zZXRfdmlzaWJsZSh2aXNpYmxlX2hlYWRlcnMuZ2V0dmFsdWUoKSkKICAgICAgICBpZiBrZXkgaW4gc2VsZi5fbGFiZWxzOgogICAgICAgICAgICBtc2cuc2V0X2xhYmVscyhzZWxmLl9sYWJlbHNba2V5XSkKICAgICAgICByZXR1cm4gbXNnCgogICAgZGVmIGdldF9ieXRlcyhzZWxmLCBrZXkpOgogICAgICAgICIiIlJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvciByYWlzZSBhIEtleUVycm9yLiIiIgogICAgICAgIHN0YXJ0LCBzdG9wID0gc2VsZi5fbG9va3VwKGtleSkKICAgICAgICBzZWxmLl9maWxlLnNlZWsoc3RhcnQpCiAgICAgICAgc2VsZi5fZmlsZS5yZWFkbGluZSgpICAgIyBTa2lwIGInMSwnIGxpbmUgc3BlY2lmeWluZyBsYWJlbHMuCiAgICAgICAgb3JpZ2luYWxfaGVhZGVycyA9IGlvLkJ5dGVzSU8oKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9maWxlLnJlYWRsaW5lKCkKICAgICAgICAgICAgaWYgbGluZSA9PSBiJyoqKiBFT09IICoqKicgKyBsaW5lc2VwIG9yIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgb3JpZ2luYWxfaGVhZGVycy53cml0ZShsaW5lLnJlcGxhY2UobGluZXNlcCwgYidcbicpKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9maWxlLnJlYWRsaW5lKCkKICAgICAgICAgICAgaWYgbGluZSA9PSBsaW5lc2VwIG9yIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBoZWFkZXJzID0gb3JpZ2luYWxfaGVhZGVycy5nZXR2YWx1ZSgpCiAgICAgICAgbiA9IHN0b3AgLSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgIGFzc2VydCBuID49IDAKICAgICAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKG4pCiAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZShsaW5lc2VwLCBiJ1xuJykKICAgICAgICByZXR1cm4gaGVhZGVycyArIGRhdGEKCiAgICBkZWYgZ2V0X2ZpbGUoc2VsZiwga2V5KToKICAgICAgICAiIiJSZXR1cm4gYSBmaWxlLWxpa2UgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKICAgICAgICByZXR1cm4gaW8uQnl0ZXNJTyhzZWxmLmdldF9ieXRlcyhrZXkpLnJlcGxhY2UoYidcbicsIGxpbmVzZXApKQoKICAgIGRlZiBnZXRfbGFiZWxzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgdXNlci1kZWZpbmVkIGxhYmVscyBpbiB0aGUgbWFpbGJveC4iIiIKICAgICAgICBzZWxmLl9sb29rdXAoKQogICAgICAgIGxhYmVscyA9IHNldCgpCiAgICAgICAgZm9yIGxhYmVsX2xpc3QgaW4gc2VsZi5fbGFiZWxzLnZhbHVlcygpOgogICAgICAgICAgICBsYWJlbHMudXBkYXRlKGxhYmVsX2xpc3QpCiAgICAgICAgbGFiZWxzLmRpZmZlcmVuY2VfdXBkYXRlKHNlbGYuX3NwZWNpYWxfbGFiZWxzKQogICAgICAgIHJldHVybiBsaXN0KGxhYmVscykKCiAgICBkZWYgX2dlbmVyYXRlX3RvYyhzZWxmKToKICAgICAgICAiIiJHZW5lcmF0ZSBrZXktdG8tKHN0YXJ0LCBzdG9wKSB0YWJsZSBvZiBjb250ZW50cy4iIiIKICAgICAgICBzdGFydHMsIHN0b3BzID0gW10sIFtdCiAgICAgICAgc2VsZi5fZmlsZS5zZWVrKDApCiAgICAgICAgbmV4dF9wb3MgPSAwCiAgICAgICAgbGFiZWxfbGlzdHMgPSBbXQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGxpbmVfcG9zID0gbmV4dF9wb3MKICAgICAgICAgICAgbGluZSA9IHNlbGYuX2ZpbGUucmVhZGxpbmUoKQogICAgICAgICAgICBuZXh0X3BvcyA9IHNlbGYuX2ZpbGUudGVsbCgpCiAgICAgICAgICAgIGlmIGxpbmUgPT0gYidcMDM3XDAxNCcgKyBsaW5lc2VwOgogICAgICAgICAgICAgICAgaWYgbGVuKHN0b3BzKSA8IGxlbihzdGFydHMpOgogICAgICAgICAgICAgICAgICAgIHN0b3BzLmFwcGVuZChsaW5lX3BvcyAtIGxlbihsaW5lc2VwKSkKICAgICAgICAgICAgICAgIHN0YXJ0cy5hcHBlbmQobmV4dF9wb3MpCiAgICAgICAgICAgICAgICBsYWJlbHMgPSBbbGFiZWwuc3RyaXAoKSBmb3IgbGFiZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlbGYuX2ZpbGUucmVhZGxpbmUoKVsxOl0uc3BsaXQoYicsJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxhYmVsLnN0cmlwKCldCiAgICAgICAgICAgICAgICBsYWJlbF9saXN0cy5hcHBlbmQobGFiZWxzKQogICAgICAgICAgICBlbGlmIGxpbmUgPT0gYidcMDM3JyBvciBsaW5lID09IGInXDAzNycgKyBsaW5lc2VwOgogICAgICAgICAgICAgICAgaWYgbGVuKHN0b3BzKSA8IGxlbihzdGFydHMpOgogICAgICAgICAgICAgICAgICAgIHN0b3BzLmFwcGVuZChsaW5lX3BvcyAtIGxlbihsaW5lc2VwKSkKICAgICAgICAgICAgZWxpZiBub3QgbGluZToKICAgICAgICAgICAgICAgIHN0b3BzLmFwcGVuZChsaW5lX3BvcyAtIGxlbihsaW5lc2VwKSkKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgc2VsZi5fdG9jID0gZGljdChlbnVtZXJhdGUoemlwKHN0YXJ0cywgc3RvcHMpKSkKICAgICAgICBzZWxmLl9sYWJlbHMgPSBkaWN0KGVudW1lcmF0ZShsYWJlbF9saXN0cykpCiAgICAgICAgc2VsZi5fbmV4dF9rZXkgPSBsZW4oc2VsZi5fdG9jKQogICAgICAgIHNlbGYuX2ZpbGUuc2VlaygwLCAyKQogICAgICAgIHNlbGYuX2ZpbGVfbGVuZ3RoID0gc2VsZi5fZmlsZS50ZWxsKCkKCiAgICBkZWYgX3ByZV9tYWlsYm94X2hvb2soc2VsZiwgZik6CiAgICAgICAgIiIiQ2FsbGVkIGJlZm9yZSB3cml0aW5nIHRoZSBtYWlsYm94IHRvIGZpbGUgZi4iIiIKICAgICAgICBiYWJ5bCA9IGInQkFCWUwgT1BUSU9OUzonICsgbGluZXNlcAogICAgICAgIGJhYnlsICs9IGInVmVyc2lvbjogNScgKyBsaW5lc2VwCiAgICAgICAgbGFiZWxzID0gc2VsZi5nZXRfbGFiZWxzKCkKICAgICAgICBsYWJlbHMgPSAobGFiZWwuZW5jb2RlKCkgZm9yIGxhYmVsIGluIGxhYmVscykKICAgICAgICBiYWJ5bCArPSBiJ0xhYmVsczonICsgYicsJy5qb2luKGxhYmVscykgKyBsaW5lc2VwCiAgICAgICAgYmFieWwgKz0gYidcMDM3JwogICAgICAgIGYud3JpdGUoYmFieWwpCgogICAgZGVmIF9wcmVfbWVzc2FnZV9ob29rKHNlbGYsIGYpOgogICAgICAgICIiIkNhbGxlZCBiZWZvcmUgd3JpdGluZyBlYWNoIG1lc3NhZ2UgdG8gZmlsZSBmLiIiIgogICAgICAgIGYud3JpdGUoYidcMDE0JyArIGxpbmVzZXApCgogICAgZGVmIF9wb3N0X21lc3NhZ2VfaG9vayhzZWxmLCBmKToKICAgICAgICAiIiJDYWxsZWQgYWZ0ZXIgd3JpdGluZyBlYWNoIG1lc3NhZ2UgdG8gZmlsZSBmLiIiIgogICAgICAgIGYud3JpdGUobGluZXNlcCArIGInXDAzNycpCgogICAgZGVmIF9pbnN0YWxsX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIiIiV3JpdGUgbWVzc2FnZSBjb250ZW50cyBhbmQgcmV0dXJuIChzdGFydCwgc3RvcCkuIiIiCiAgICAgICAgc3RhcnQgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgQmFieWxNZXNzYWdlKToKICAgICAgICAgICAgc3BlY2lhbF9sYWJlbHMgPSBbXQogICAgICAgICAgICBsYWJlbHMgPSBbXQogICAgICAgICAgICBmb3IgbGFiZWwgaW4gbWVzc2FnZS5nZXRfbGFiZWxzKCk6CiAgICAgICAgICAgICAgICBpZiBsYWJlbCBpbiBzZWxmLl9zcGVjaWFsX2xhYmVsczoKICAgICAgICAgICAgICAgICAgICBzcGVjaWFsX2xhYmVscy5hcHBlbmQobGFiZWwpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQobGFiZWwpCiAgICAgICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoYicxJykKICAgICAgICAgICAgZm9yIGxhYmVsIGluIHNwZWNpYWxfbGFiZWxzOgogICAgICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShiJywgJyArIGxhYmVsLmVuY29kZSgpKQogICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGInLCwnKQogICAgICAgICAgICBmb3IgbGFiZWwgaW4gbGFiZWxzOgogICAgICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShiJyAnICsgbGFiZWwuZW5jb2RlKCkgKyBiJywnKQogICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGxpbmVzZXApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShiJzEsLCcgKyBsaW5lc2VwKQogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgZW1haWwubWVzc2FnZS5NZXNzYWdlKToKICAgICAgICAgICAgb3JpZ19idWZmZXIgPSBpby5CeXRlc0lPKCkKICAgICAgICAgICAgb3JpZ19nZW5lcmF0b3IgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3Iob3JpZ19idWZmZXIsIEZhbHNlLCAwKQogICAgICAgICAgICBvcmlnX2dlbmVyYXRvci5mbGF0dGVuKG1lc3NhZ2UpCiAgICAgICAgICAgIG9yaWdfYnVmZmVyLnNlZWsoMCkKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIGxpbmUgPSBvcmlnX2J1ZmZlci5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGxpbmUucmVwbGFjZShiJ1xuJywgbGluZXNlcCkpCiAgICAgICAgICAgICAgICBpZiBsaW5lID09IGInXG4nIG9yIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoYicqKiogRU9PSCAqKionICsgbGluZXNlcCkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBCYWJ5bE1lc3NhZ2UpOgogICAgICAgICAgICAgICAgdmlzX2J1ZmZlciA9IGlvLkJ5dGVzSU8oKQogICAgICAgICAgICAgICAgdmlzX2dlbmVyYXRvciA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcih2aXNfYnVmZmVyLCBGYWxzZSwgMCkKICAgICAgICAgICAgICAgIHZpc19nZW5lcmF0b3IuZmxhdHRlbihtZXNzYWdlLmdldF92aXNpYmxlKCkpCiAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgIGxpbmUgPSB2aXNfYnVmZmVyLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGxpbmUucmVwbGFjZShiJ1xuJywgbGluZXNlcCkpCiAgICAgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBiJ1xuJyBvciBub3QgbGluZToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG9yaWdfYnVmZmVyLnNlZWsoMCkKICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IG9yaWdfYnVmZmVyLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGxpbmUucmVwbGFjZShiJ1xuJywgbGluZXNlcCkpCiAgICAgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBiJ1xuJyBvciBub3QgbGluZToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIGJ1ZmZlciA9IG9yaWdfYnVmZmVyLnJlYWQoNDA5NikgIyBCdWZmZXIgc2l6ZSBpcyBhcmJpdHJhcnkuCiAgICAgICAgICAgICAgICBpZiBub3QgYnVmZmVyOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGJ1ZmZlci5yZXBsYWNlKGInXG4nLCBsaW5lc2VwKSkKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgKGJ5dGVzLCBzdHIsIGlvLlN0cmluZ0lPKSk6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgaW8uU3RyaW5nSU8pOgogICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVXNlIG9mIFN0cmluZ0lPIGlucHV0IGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgICAgICAgICAidXNlIEJ5dGVzSU8gaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMykKICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmdldHZhbHVlKCkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBzdHIpOgogICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3N0cmluZ190b19ieXRlcyhtZXNzYWdlKQogICAgICAgICAgICBib2R5X3N0YXJ0ID0gbWVzc2FnZS5maW5kKGInXG5cbicpICsgMgogICAgICAgICAgICBpZiBib2R5X3N0YXJ0IC0gMiAhPSAtMToKICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUud3JpdGUobWVzc2FnZVs6Ym9keV9zdGFydF0ucmVwbGFjZShiJ1xuJywgbGluZXNlcCkpCiAgICAgICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKGInKioqIEVPT0ggKioqJyArIGxpbmVzZXApCiAgICAgICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKG1lc3NhZ2VbOmJvZHlfc3RhcnRdLnJlcGxhY2UoYidcbicsIGxpbmVzZXApKQogICAgICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShtZXNzYWdlW2JvZHlfc3RhcnQ6XS5yZXBsYWNlKGInXG4nLCBsaW5lc2VwKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoYicqKiogRU9PSCAqKionICsgbGluZXNlcCArIGxpbmVzZXApCiAgICAgICAgICAgICAgICBzZWxmLl9maWxlLndyaXRlKG1lc3NhZ2UucmVwbGFjZShiJ1xuJywgbGluZXNlcCkpCiAgICAgICAgZWxpZiBoYXNhdHRyKG1lc3NhZ2UsICdyZWFkbGluZScpOgogICAgICAgICAgICBpZiBoYXNhdHRyKG1lc3NhZ2UsICdidWZmZXInKToKICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlVzZSBvZiB0ZXh0IG1vZGUgZmlsZXMgaXMgZGVwcmVjYXRlZCwgIgogICAgICAgICAgICAgICAgICAgICJ1c2UgYSBiaW5hcnkgbW9kZSBmaWxlIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDMpCiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5idWZmZXIKICAgICAgICAgICAgb3JpZ2luYWxfcG9zID0gbWVzc2FnZS50ZWxsKCkKICAgICAgICAgICAgZmlyc3RfcGFzcyA9IFRydWUKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIGxpbmUgPSBtZXNzYWdlLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICMgVW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydC4KICAgICAgICAgICAgICAgIGlmIGxpbmUuZW5kc3dpdGgoYidcclxuJyk6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXSArIGInXG4nCiAgICAgICAgICAgICAgICBlbGlmIGxpbmUuZW5kc3dpdGgoYidccicpOgogICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzotMV0gKyBiJ1xuJwogICAgICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShsaW5lLnJlcGxhY2UoYidcbicsIGxpbmVzZXApKQogICAgICAgICAgICAgICAgaWYgbGluZSA9PSBiJ1xuJyBvciBub3QgbGluZToKICAgICAgICAgICAgICAgICAgICBpZiBmaXJzdF9wYXNzOgogICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9wYXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShiJyoqKiBFT09IICoqKicgKyBsaW5lc2VwKQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnNlZWsob3JpZ2luYWxfcG9zKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBsaW5lID0gbWVzc2FnZS5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIyBVbml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0LgogICAgICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aChiJ1xyXG4nKToKICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6LTJdICsgbGluZXNlcAogICAgICAgICAgICAgICAgZWxpZiBsaW5lLmVuZHN3aXRoKGInXHInKToKICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6LTFdICsgbGluZXNlcAogICAgICAgICAgICAgICAgZWxpZiBsaW5lLmVuZHN3aXRoKGInXG4nKToKICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6LTFdICsgbGluZXNlcAogICAgICAgICAgICAgICAgc2VsZi5fZmlsZS53cml0ZShsaW5lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignSW52YWxpZCBtZXNzYWdlIHR5cGU6ICVzJyAlIHR5cGUobWVzc2FnZSkpCiAgICAgICAgc3RvcCA9IHNlbGYuX2ZpbGUudGVsbCgpCiAgICAgICAgcmV0dXJuIChzdGFydCwgc3RvcCkKCgpjbGFzcyBNZXNzYWdlKGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSk6CiAgICAiIiJNZXNzYWdlIHdpdGggbWFpbGJveC1mb3JtYXQtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAiIiJJbml0aWFsaXplIGEgTWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSk6CiAgICAgICAgICAgIHNlbGYuX2JlY29tZV9tZXNzYWdlKGNvcHkuZGVlcGNvcHkobWVzc2FnZSkpCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgTWVzc2FnZSk6CiAgICAgICAgICAgICAgICBtZXNzYWdlLl9leHBsYWluX3RvKHNlbGYpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIGJ5dGVzKToKICAgICAgICAgICAgc2VsZi5fYmVjb21lX21lc3NhZ2UoZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKG1lc3NhZ2UpKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBzdHIpOgogICAgICAgICAgICBzZWxmLl9iZWNvbWVfbWVzc2FnZShlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG1lc3NhZ2UpKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBpby5UZXh0SU9XcmFwcGVyKToKICAgICAgICAgICAgc2VsZi5fYmVjb21lX21lc3NhZ2UoZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUobWVzc2FnZSkpCiAgICAgICAgZWxpZiBoYXNhdHRyKG1lc3NhZ2UsICJyZWFkIik6CiAgICAgICAgICAgIHNlbGYuX2JlY29tZV9tZXNzYWdlKGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShtZXNzYWdlKSkKICAgICAgICBlbGlmIG1lc3NhZ2UgaXMgTm9uZToKICAgICAgICAgICAgZW1haWwubWVzc2FnZS5NZXNzYWdlLl9faW5pdF9fKHNlbGYpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdJbnZhbGlkIG1lc3NhZ2UgdHlwZTogJXMnICUgdHlwZShtZXNzYWdlKSkKCiAgICBkZWYgX2JlY29tZV9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICIiIkFzc3VtZSB0aGUgbm9uLWZvcm1hdC1zcGVjaWZpYyBzdGF0ZSBvZiBtZXNzYWdlLiIiIgogICAgICAgIHR5cGVfc3BlY2lmaWMgPSBnZXRhdHRyKG1lc3NhZ2UsICdfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzJywgW10pCiAgICAgICAgZm9yIG5hbWUgaW4gbWVzc2FnZS5fX2RpY3RfXzoKICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gdHlwZV9zcGVjaWZpYzoKICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X19bbmFtZV0gPSBtZXNzYWdlLl9fZGljdF9fW25hbWVdCgogICAgZGVmIF9leHBsYWluX3RvKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICIiIkNvcHkgZm9ybWF0LXNwZWNpZmljIHN0YXRlIHRvIG1lc3NhZ2UgaW5zb2ZhciBhcyBwb3NzaWJsZS4iIiIKICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIE1lc3NhZ2UpOgogICAgICAgICAgICByZXR1cm4gICMgVGhlcmUncyBub3RoaW5nIGZvcm1hdC1zcGVjaWZpYyB0byBleHBsYWluLgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgdG8gc3BlY2lmaWVkIHR5cGUnKQoKCmNsYXNzIE1haWxkaXJNZXNzYWdlKE1lc3NhZ2UpOgogICAgIiIiTWVzc2FnZSB3aXRoIE1haWxkaXItc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKCiAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfc3ViZGlyJywgJ19pbmZvJywgJ19kYXRlJ10KCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAiIiJJbml0aWFsaXplIGEgTWFpbGRpck1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgc2VsZi5fc3ViZGlyID0gJ25ldycKICAgICAgICBzZWxmLl9pbmZvID0gJycKICAgICAgICBzZWxmLl9kYXRlID0gdGltZS50aW1lKCkKICAgICAgICBNZXNzYWdlLl9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpCgogICAgZGVmIGdldF9zdWJkaXIoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuICduZXcnIG9yICdjdXInLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9zdWJkaXIKCiAgICBkZWYgc2V0X3N1YmRpcihzZWxmLCBzdWJkaXIpOgogICAgICAgICIiIlNldCBzdWJkaXIgdG8gJ25ldycgb3IgJ2N1cicuIiIiCiAgICAgICAgaWYgc3ViZGlyID09ICduZXcnIG9yIHN1YmRpciA9PSAnY3VyJzoKICAgICAgICAgICAgc2VsZi5fc3ViZGlyID0gc3ViZGlyCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3ViZGlyIG11c3QgYmUgJ25ldycgb3IgJ2N1cic6ICVzIiAlIHN1YmRpcikKCiAgICBkZWYgZ2V0X2ZsYWdzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhcyBhIHN0cmluZyB0aGUgZmxhZ3MgdGhhdCBhcmUgc2V0LiIiIgogICAgICAgIGlmIHNlbGYuX2luZm8uc3RhcnRzd2l0aCgnMiwnKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2luZm9bMjpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICcnCgogICAgZGVmIHNldF9mbGFncyhzZWxmLCBmbGFncyk6CiAgICAgICAgIiIiU2V0IHRoZSBnaXZlbiBmbGFncyBhbmQgdW5zZXQgYWxsIG90aGVycy4iIiIKICAgICAgICBzZWxmLl9pbmZvID0gJzIsJyArICcnLmpvaW4oc29ydGVkKGZsYWdzKSkKCiAgICBkZWYgYWRkX2ZsYWcoc2VsZiwgZmxhZyk6CiAgICAgICAgIiIiU2V0IHRoZSBnaXZlbiBmbGFnKHMpIHdpdGhvdXQgY2hhbmdpbmcgb3RoZXJzLiIiIgogICAgICAgIHNlbGYuc2V0X2ZsYWdzKCcnLmpvaW4oc2V0KHNlbGYuZ2V0X2ZsYWdzKCkpIHwgc2V0KGZsYWcpKSkKCiAgICBkZWYgcmVtb3ZlX2ZsYWcoc2VsZiwgZmxhZyk6CiAgICAgICAgIiIiVW5zZXQgdGhlIGdpdmVuIHN0cmluZyBmbGFnKHMpIHdpdGhvdXQgY2hhbmdpbmcgb3RoZXJzLiIiIgogICAgICAgIGlmIHNlbGYuZ2V0X2ZsYWdzKCk6CiAgICAgICAgICAgIHNlbGYuc2V0X2ZsYWdzKCcnLmpvaW4oc2V0KHNlbGYuZ2V0X2ZsYWdzKCkpIC0gc2V0KGZsYWcpKSkKCiAgICBkZWYgZ2V0X2RhdGUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGRlbGl2ZXJ5IGRhdGUgb2YgbWVzc2FnZSwgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGUKCiAgICBkZWYgc2V0X2RhdGUoc2VsZiwgZGF0ZSk6CiAgICAgICAgIiIiU2V0IGRlbGl2ZXJ5IGRhdGUgb2YgbWVzc2FnZSwgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9kYXRlID0gZmxvYXQoZGF0ZSkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW4ndCBjb252ZXJ0IHRvIGZsb2F0OiAlcyIgJSBkYXRlKSBmcm9tIE5vbmUKCiAgICBkZWYgZ2V0X2luZm8oc2VsZik6CiAgICAgICAgIiIiR2V0IHRoZSBtZXNzYWdlJ3MgImluZm8iIGFzIGEgc3RyaW5nLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9pbmZvCgogICAgZGVmIHNldF9pbmZvKHNlbGYsIGluZm8pOgogICAgICAgICIiIlNldCB0aGUgbWVzc2FnZSdzICJpbmZvIiBzdHJpbmcuIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShpbmZvLCBzdHIpOgogICAgICAgICAgICBzZWxmLl9pbmZvID0gaW5mbwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignaW5mbyBtdXN0IGJlIGEgc3RyaW5nOiAlcycgJSB0eXBlKGluZm8pKQoKICAgIGRlZiBfZXhwbGFpbl90byhzZWxmLCBtZXNzYWdlKToKICAgICAgICAiIiJDb3B5IE1haWxkaXItc3BlY2lmaWMgc3RhdGUgdG8gbWVzc2FnZSBpbnNvZmFyIGFzIHBvc3NpYmxlLiIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgTWFpbGRpck1lc3NhZ2UpOgogICAgICAgICAgICBtZXNzYWdlLnNldF9mbGFncyhzZWxmLmdldF9mbGFncygpKQogICAgICAgICAgICBtZXNzYWdlLnNldF9zdWJkaXIoc2VsZi5nZXRfc3ViZGlyKCkpCiAgICAgICAgICAgIG1lc3NhZ2Uuc2V0X2RhdGUoc2VsZi5nZXRfZGF0ZSgpKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBfbWJveE1NREZNZXNzYWdlKToKICAgICAgICAgICAgZmxhZ3MgPSBzZXQoc2VsZi5nZXRfZmxhZ3MoKSkKICAgICAgICAgICAgaWYgJ1MnIGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfZmxhZygnUicpCiAgICAgICAgICAgIGlmIHNlbGYuZ2V0X3N1YmRpcigpID09ICdjdXInOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfZmxhZygnTycpCiAgICAgICAgICAgIGlmICdUJyBpbiBmbGFnczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ0QnKQogICAgICAgICAgICBpZiAnRicgaW4gZmxhZ3M6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9mbGFnKCdGJykKICAgICAgICAgICAgaWYgJ1InIGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfZmxhZygnQScpCiAgICAgICAgICAgIG1lc3NhZ2Uuc2V0X2Zyb20oJ01BSUxFUi1EQUVNT04nLCB0aW1lLmdtdGltZShzZWxmLmdldF9kYXRlKCkpKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNSE1lc3NhZ2UpOgogICAgICAgICAgICBmbGFncyA9IHNldChzZWxmLmdldF9mbGFncygpKQogICAgICAgICAgICBpZiAnUycgbm90IGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfc2VxdWVuY2UoJ3Vuc2VlbicpCiAgICAgICAgICAgIGlmICdSJyBpbiBmbGFnczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX3NlcXVlbmNlKCdyZXBsaWVkJykKICAgICAgICAgICAgaWYgJ0YnIGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfc2VxdWVuY2UoJ2ZsYWdnZWQnKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBCYWJ5bE1lc3NhZ2UpOgogICAgICAgICAgICBmbGFncyA9IHNldChzZWxmLmdldF9mbGFncygpKQogICAgICAgICAgICBpZiAnUycgbm90IGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfbGFiZWwoJ3Vuc2VlbicpCiAgICAgICAgICAgIGlmICdUJyBpbiBmbGFnczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2xhYmVsKCdkZWxldGVkJykKICAgICAgICAgICAgaWYgJ1InIGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfbGFiZWwoJ2Fuc3dlcmVkJykKICAgICAgICAgICAgaWYgJ1AnIGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfbGFiZWwoJ2ZvcndhcmRlZCcpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIE1lc3NhZ2UpOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCB0byBzcGVjaWZpZWQgdHlwZTogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUobWVzc2FnZSkpCgoKY2xhc3MgX21ib3hNTURGTWVzc2FnZShNZXNzYWdlKToKICAgICIiIk1lc3NhZ2Ugd2l0aCBtYm94LSBvciBNTURGLXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCgogICAgX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcyA9IFsnX2Zyb20nXQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICIiIkluaXRpYWxpemUgYW4gbWJveE1NREZNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgIHNlbGYuc2V0X2Zyb20oJ01BSUxFUi1EQUVNT04nLCBUcnVlKQogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgZW1haWwubWVzc2FnZS5NZXNzYWdlKToKICAgICAgICAgICAgdW5peGZyb20gPSBtZXNzYWdlLmdldF91bml4ZnJvbSgpCiAgICAgICAgICAgIGlmIHVuaXhmcm9tIGlzIG5vdCBOb25lIGFuZCB1bml4ZnJvbS5zdGFydHN3aXRoKCdGcm9tICcpOgogICAgICAgICAgICAgICAgc2VsZi5zZXRfZnJvbSh1bml4ZnJvbVs1Ol0pCiAgICAgICAgTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBtZXNzYWdlKQoKICAgIGRlZiBnZXRfZnJvbShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gY29udGVudHMgb2YgIkZyb20gIiBsaW5lLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9mcm9tCgogICAgZGVmIHNldF9mcm9tKHNlbGYsIGZyb21fLCB0aW1lXz1Ob25lKToKICAgICAgICAiIiJTZXQgIkZyb20gIiBsaW5lLCBmb3JtYXR0aW5nIGFuZCBhcHBlbmRpbmcgdGltZV8gaWYgc3BlY2lmaWVkLiIiIgogICAgICAgIGlmIHRpbWVfIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiB0aW1lXyBpcyBUcnVlOgogICAgICAgICAgICAgICAgdGltZV8gPSB0aW1lLmdtdGltZSgpCiAgICAgICAgICAgIGZyb21fICs9ICcgJyArIHRpbWUuYXNjdGltZSh0aW1lXykKICAgICAgICBzZWxmLl9mcm9tID0gZnJvbV8KCiAgICBkZWYgZ2V0X2ZsYWdzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhcyBhIHN0cmluZyB0aGUgZmxhZ3MgdGhhdCBhcmUgc2V0LiIiIgogICAgICAgIHJldHVybiBzZWxmLmdldCgnU3RhdHVzJywgJycpICsgc2VsZi5nZXQoJ1gtU3RhdHVzJywgJycpCgogICAgZGVmIHNldF9mbGFncyhzZWxmLCBmbGFncyk6CiAgICAgICAgIiIiU2V0IHRoZSBnaXZlbiBmbGFncyBhbmQgdW5zZXQgYWxsIG90aGVycy4iIiIKICAgICAgICBmbGFncyA9IHNldChmbGFncykKICAgICAgICBzdGF0dXNfZmxhZ3MsIHhzdGF0dXNfZmxhZ3MgPSAnJywgJycKICAgICAgICBmb3IgZmxhZyBpbiAoJ1InLCAnTycpOgogICAgICAgICAgICBpZiBmbGFnIGluIGZsYWdzOgogICAgICAgICAgICAgICAgc3RhdHVzX2ZsYWdzICs9IGZsYWcKICAgICAgICAgICAgICAgIGZsYWdzLnJlbW92ZShmbGFnKQogICAgICAgIGZvciBmbGFnIGluICgnRCcsICdGJywgJ0EnKToKICAgICAgICAgICAgaWYgZmxhZyBpbiBmbGFnczoKICAgICAgICAgICAgICAgIHhzdGF0dXNfZmxhZ3MgKz0gZmxhZwogICAgICAgICAgICAgICAgZmxhZ3MucmVtb3ZlKGZsYWcpCiAgICAgICAgeHN0YXR1c19mbGFncyArPSAnJy5qb2luKHNvcnRlZChmbGFncykpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnJlcGxhY2VfaGVhZGVyKCdTdGF0dXMnLCBzdGF0dXNfZmxhZ3MpCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBzZWxmLmFkZF9oZWFkZXIoJ1N0YXR1cycsIHN0YXR1c19mbGFncykKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYucmVwbGFjZV9oZWFkZXIoJ1gtU3RhdHVzJywgeHN0YXR1c19mbGFncykKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHNlbGYuYWRkX2hlYWRlcignWC1TdGF0dXMnLCB4c3RhdHVzX2ZsYWdzKQoKICAgIGRlZiBhZGRfZmxhZyhzZWxmLCBmbGFnKToKICAgICAgICAiIiJTZXQgdGhlIGdpdmVuIGZsYWcocykgd2l0aG91dCBjaGFuZ2luZyBvdGhlcnMuIiIiCiAgICAgICAgc2VsZi5zZXRfZmxhZ3MoJycuam9pbihzZXQoc2VsZi5nZXRfZmxhZ3MoKSkgfCBzZXQoZmxhZykpKQoKICAgIGRlZiByZW1vdmVfZmxhZyhzZWxmLCBmbGFnKToKICAgICAgICAiIiJVbnNldCB0aGUgZ2l2ZW4gc3RyaW5nIGZsYWcocykgd2l0aG91dCBjaGFuZ2luZyBvdGhlcnMuIiIiCiAgICAgICAgaWYgJ1N0YXR1cycgaW4gc2VsZiBvciAnWC1TdGF0dXMnIGluIHNlbGY6CiAgICAgICAgICAgIHNlbGYuc2V0X2ZsYWdzKCcnLmpvaW4oc2V0KHNlbGYuZ2V0X2ZsYWdzKCkpIC0gc2V0KGZsYWcpKSkKCiAgICBkZWYgX2V4cGxhaW5fdG8oc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIiIiQ29weSBtYm94LSBvciBNTURGLXNwZWNpZmljIHN0YXRlIHRvIG1lc3NhZ2UgaW5zb2ZhciBhcyBwb3NzaWJsZS4iIiIKICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIE1haWxkaXJNZXNzYWdlKToKICAgICAgICAgICAgZmxhZ3MgPSBzZXQoc2VsZi5nZXRfZmxhZ3MoKSkKICAgICAgICAgICAgaWYgJ08nIGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5zZXRfc3ViZGlyKCdjdXInKQogICAgICAgICAgICBpZiAnRicgaW4gZmxhZ3M6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9mbGFnKCdGJykKICAgICAgICAgICAgaWYgJ0EnIGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfZmxhZygnUicpCiAgICAgICAgICAgIGlmICdSJyBpbiBmbGFnczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ1MnKQogICAgICAgICAgICBpZiAnRCcgaW4gZmxhZ3M6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9mbGFnKCdUJykKICAgICAgICAgICAgZGVsIG1lc3NhZ2VbJ3N0YXR1cyddCiAgICAgICAgICAgIGRlbCBtZXNzYWdlWyd4LXN0YXR1cyddCiAgICAgICAgICAgIG1heWJlX2RhdGUgPSAnICcuam9pbihzZWxmLmdldF9mcm9tKCkuc3BsaXQoKVstNTpdKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBtZXNzYWdlLnNldF9kYXRlKGNhbGVuZGFyLnRpbWVnbSh0aW1lLnN0cnB0aW1lKG1heWJlX2RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclYSAlYiAlZCAlSDolTTolUyAlWScpKSkKICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKToKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgX21ib3hNTURGTWVzc2FnZSk6CiAgICAgICAgICAgIG1lc3NhZ2Uuc2V0X2ZsYWdzKHNlbGYuZ2V0X2ZsYWdzKCkpCiAgICAgICAgICAgIG1lc3NhZ2Uuc2V0X2Zyb20oc2VsZi5nZXRfZnJvbSgpKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNSE1lc3NhZ2UpOgogICAgICAgICAgICBmbGFncyA9IHNldChzZWxmLmdldF9mbGFncygpKQogICAgICAgICAgICBpZiAnUicgbm90IGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfc2VxdWVuY2UoJ3Vuc2VlbicpCiAgICAgICAgICAgIGlmICdBJyBpbiBmbGFnczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX3NlcXVlbmNlKCdyZXBsaWVkJykKICAgICAgICAgICAgaWYgJ0YnIGluIGZsYWdzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfc2VxdWVuY2UoJ2ZsYWdnZWQnKQogICAgICAgICAgICBkZWwgbWVzc2FnZVsnc3RhdHVzJ10KICAgICAgICAgICAgZGVsIG1lc3NhZ2VbJ3gtc3RhdHVzJ10KICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgQmFieWxNZXNzYWdlKToKICAgICAgICAgICAgZmxhZ3MgPSBzZXQoc2VsZi5nZXRfZmxhZ3MoKSkKICAgICAgICAgICAgaWYgJ1InIG5vdCBpbiBmbGFnczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2xhYmVsKCd1bnNlZW4nKQogICAgICAgICAgICBpZiAnRCcgaW4gZmxhZ3M6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9sYWJlbCgnZGVsZXRlZCcpCiAgICAgICAgICAgIGlmICdBJyBpbiBmbGFnczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2xhYmVsKCdhbnN3ZXJlZCcpCiAgICAgICAgICAgIGRlbCBtZXNzYWdlWydzdGF0dXMnXQogICAgICAgICAgICBkZWwgbWVzc2FnZVsneC1zdGF0dXMnXQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNZXNzYWdlKToKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgdG8gc3BlY2lmaWVkIHR5cGU6ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKG1lc3NhZ2UpKQoKCmNsYXNzIG1ib3hNZXNzYWdlKF9tYm94TU1ERk1lc3NhZ2UpOgogICAgIiIiTWVzc2FnZSB3aXRoIG1ib3gtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKCgpjbGFzcyBNSE1lc3NhZ2UoTWVzc2FnZSk6CiAgICAiIiJNZXNzYWdlIHdpdGggTUgtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKCiAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfc2VxdWVuY2VzJ10KCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAiIiJJbml0aWFsaXplIGFuIE1ITWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICBzZWxmLl9zZXF1ZW5jZXMgPSBbXQogICAgICAgIE1lc3NhZ2UuX19pbml0X18oc2VsZiwgbWVzc2FnZSkKCiAgICBkZWYgZ2V0X3NlcXVlbmNlcyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHNlcXVlbmNlcyB0aGF0IGluY2x1ZGUgdGhlIG1lc3NhZ2UuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3NlcXVlbmNlc1s6XQoKICAgIGRlZiBzZXRfc2VxdWVuY2VzKHNlbGYsIHNlcXVlbmNlcyk6CiAgICAgICAgIiIiU2V0IHRoZSBsaXN0IG9mIHNlcXVlbmNlcyB0aGF0IGluY2x1ZGUgdGhlIG1lc3NhZ2UuIiIiCiAgICAgICAgc2VsZi5fc2VxdWVuY2VzID0gbGlzdChzZXF1ZW5jZXMpCgogICAgZGVmIGFkZF9zZXF1ZW5jZShzZWxmLCBzZXF1ZW5jZSk6CiAgICAgICAgIiIiQWRkIHNlcXVlbmNlIHRvIGxpc3Qgb2Ygc2VxdWVuY2VzIGluY2x1ZGluZyB0aGUgbWVzc2FnZS4iIiIKICAgICAgICBpZiBpc2luc3RhbmNlKHNlcXVlbmNlLCBzdHIpOgogICAgICAgICAgICBpZiBub3Qgc2VxdWVuY2UgaW4gc2VsZi5fc2VxdWVuY2VzOgogICAgICAgICAgICAgICAgc2VsZi5fc2VxdWVuY2VzLmFwcGVuZChzZXF1ZW5jZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3NlcXVlbmNlIHR5cGUgbXVzdCBiZSBzdHI6ICVzJyAlIHR5cGUoc2VxdWVuY2UpKQoKICAgIGRlZiByZW1vdmVfc2VxdWVuY2Uoc2VsZiwgc2VxdWVuY2UpOgogICAgICAgICIiIlJlbW92ZSBzZXF1ZW5jZSBmcm9tIHRoZSBsaXN0IG9mIHNlcXVlbmNlcyBpbmNsdWRpbmcgdGhlIG1lc3NhZ2UuIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9zZXF1ZW5jZXMucmVtb3ZlKHNlcXVlbmNlKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBwYXNzCgogICAgZGVmIF9leHBsYWluX3RvKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICIiIkNvcHkgTUgtc3BlY2lmaWMgc3RhdGUgdG8gbWVzc2FnZSBpbnNvZmFyIGFzIHBvc3NpYmxlLiIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgTWFpbGRpck1lc3NhZ2UpOgogICAgICAgICAgICBzZXF1ZW5jZXMgPSBzZXQoc2VsZi5nZXRfc2VxdWVuY2VzKCkpCiAgICAgICAgICAgIGlmICd1bnNlZW4nIGluIHNlcXVlbmNlczoKICAgICAgICAgICAgICAgIG1lc3NhZ2Uuc2V0X3N1YmRpcignY3VyJykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG1lc3NhZ2Uuc2V0X3N1YmRpcignY3VyJykKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ1MnKQogICAgICAgICAgICBpZiAnZmxhZ2dlZCcgaW4gc2VxdWVuY2VzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfZmxhZygnRicpCiAgICAgICAgICAgIGlmICdyZXBsaWVkJyBpbiBzZXF1ZW5jZXM6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9mbGFnKCdSJykKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgX21ib3hNTURGTWVzc2FnZSk6CiAgICAgICAgICAgIHNlcXVlbmNlcyA9IHNldChzZWxmLmdldF9zZXF1ZW5jZXMoKSkKICAgICAgICAgICAgaWYgJ3Vuc2Vlbicgbm90IGluIHNlcXVlbmNlczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ1JPJykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ08nKQogICAgICAgICAgICBpZiAnZmxhZ2dlZCcgaW4gc2VxdWVuY2VzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfZmxhZygnRicpCiAgICAgICAgICAgIGlmICdyZXBsaWVkJyBpbiBzZXF1ZW5jZXM6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9mbGFnKCdBJykKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgTUhNZXNzYWdlKToKICAgICAgICAgICAgZm9yIHNlcXVlbmNlIGluIHNlbGYuZ2V0X3NlcXVlbmNlcygpOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfc2VxdWVuY2Uoc2VxdWVuY2UpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIEJhYnlsTWVzc2FnZSk6CiAgICAgICAgICAgIHNlcXVlbmNlcyA9IHNldChzZWxmLmdldF9zZXF1ZW5jZXMoKSkKICAgICAgICAgICAgaWYgJ3Vuc2VlbicgaW4gc2VxdWVuY2VzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfbGFiZWwoJ3Vuc2VlbicpCiAgICAgICAgICAgIGlmICdyZXBsaWVkJyBpbiBzZXF1ZW5jZXM6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9sYWJlbCgnYW5zd2VyZWQnKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNZXNzYWdlKToKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgdG8gc3BlY2lmaWVkIHR5cGU6ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKG1lc3NhZ2UpKQoKCmNsYXNzIEJhYnlsTWVzc2FnZShNZXNzYWdlKToKICAgICIiIk1lc3NhZ2Ugd2l0aCBCYWJ5bC1zcGVjaWZpYyBwcm9wZXJ0aWVzLiIiIgoKICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19sYWJlbHMnLCAnX3Zpc2libGUnXQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICIiIkluaXRpYWxpemUgYSBCYWJ5bE1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgc2VsZi5fbGFiZWxzID0gW10KICAgICAgICBzZWxmLl92aXNpYmxlID0gTWVzc2FnZSgpCiAgICAgICAgTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBtZXNzYWdlKQoKICAgIGRlZiBnZXRfbGFiZWxzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgbGFiZWxzIG9uIHRoZSBtZXNzYWdlLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9sYWJlbHNbOl0KCiAgICBkZWYgc2V0X2xhYmVscyhzZWxmLCBsYWJlbHMpOgogICAgICAgICIiIlNldCB0aGUgbGlzdCBvZiBsYWJlbHMgb24gdGhlIG1lc3NhZ2UuIiIiCiAgICAgICAgc2VsZi5fbGFiZWxzID0gbGlzdChsYWJlbHMpCgogICAgZGVmIGFkZF9sYWJlbChzZWxmLCBsYWJlbCk6CiAgICAgICAgIiIiQWRkIGxhYmVsIHRvIGxpc3Qgb2YgbGFiZWxzIG9uIHRoZSBtZXNzYWdlLiIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UobGFiZWwsIHN0cik6CiAgICAgICAgICAgIGlmIGxhYmVsIG5vdCBpbiBzZWxmLl9sYWJlbHM6CiAgICAgICAgICAgICAgICBzZWxmLl9sYWJlbHMuYXBwZW5kKGxhYmVsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbGFiZWwgbXVzdCBiZSBhIHN0cmluZzogJXMnICUgdHlwZShsYWJlbCkpCgogICAgZGVmIHJlbW92ZV9sYWJlbChzZWxmLCBsYWJlbCk6CiAgICAgICAgIiIiUmVtb3ZlIGxhYmVsIGZyb20gdGhlIGxpc3Qgb2YgbGFiZWxzIG9uIHRoZSBtZXNzYWdlLiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fbGFiZWxzLnJlbW92ZShsYWJlbCkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBnZXRfdmlzaWJsZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBNZXNzYWdlIHJlcHJlc2VudGF0aW9uIG9mIHZpc2libGUgaGVhZGVycy4iIiIKICAgICAgICByZXR1cm4gTWVzc2FnZShzZWxmLl92aXNpYmxlKQoKICAgIGRlZiBzZXRfdmlzaWJsZShzZWxmLCB2aXNpYmxlKToKICAgICAgICAiIiJTZXQgdGhlIE1lc3NhZ2UgcmVwcmVzZW50YXRpb24gb2YgdmlzaWJsZSBoZWFkZXJzLiIiIgogICAgICAgIHNlbGYuX3Zpc2libGUgPSBNZXNzYWdlKHZpc2libGUpCgogICAgZGVmIHVwZGF0ZV92aXNpYmxlKHNlbGYpOgogICAgICAgICIiIlVwZGF0ZSBhbmQvb3Igc2Vuc2libHkgZ2VuZXJhdGUgYSBzZXQgb2YgdmlzaWJsZSBoZWFkZXJzLiIiIgogICAgICAgIGZvciBoZWFkZXIgaW4gc2VsZi5fdmlzaWJsZS5rZXlzKCk6CiAgICAgICAgICAgIGlmIGhlYWRlciBpbiBzZWxmOgogICAgICAgICAgICAgICAgc2VsZi5fdmlzaWJsZS5yZXBsYWNlX2hlYWRlcihoZWFkZXIsIHNlbGZbaGVhZGVyXSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGRlbCBzZWxmLl92aXNpYmxlW2hlYWRlcl0KICAgICAgICBmb3IgaGVhZGVyIGluICgnRGF0ZScsICdGcm9tJywgJ1JlcGx5LVRvJywgJ1RvJywgJ0NDJywgJ1N1YmplY3QnKToKICAgICAgICAgICAgaWYgaGVhZGVyIGluIHNlbGYgYW5kIGhlYWRlciBub3QgaW4gc2VsZi5fdmlzaWJsZToKICAgICAgICAgICAgICAgIHNlbGYuX3Zpc2libGVbaGVhZGVyXSA9IHNlbGZbaGVhZGVyXQoKICAgIGRlZiBfZXhwbGFpbl90byhzZWxmLCBtZXNzYWdlKToKICAgICAgICAiIiJDb3B5IEJhYnlsLXNwZWNpZmljIHN0YXRlIHRvIG1lc3NhZ2UgaW5zb2ZhciBhcyBwb3NzaWJsZS4iIiIKICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIE1haWxkaXJNZXNzYWdlKToKICAgICAgICAgICAgbGFiZWxzID0gc2V0KHNlbGYuZ2V0X2xhYmVscygpKQogICAgICAgICAgICBpZiAndW5zZWVuJyBpbiBsYWJlbHM6CiAgICAgICAgICAgICAgICBtZXNzYWdlLnNldF9zdWJkaXIoJ2N1cicpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBtZXNzYWdlLnNldF9zdWJkaXIoJ2N1cicpCiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9mbGFnKCdTJykKICAgICAgICAgICAgaWYgJ2ZvcndhcmRlZCcgaW4gbGFiZWxzIG9yICdyZXNlbnQnIGluIGxhYmVsczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ1AnKQogICAgICAgICAgICBpZiAnYW5zd2VyZWQnIGluIGxhYmVsczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ1InKQogICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gbGFiZWxzOgogICAgICAgICAgICAgICAgbWVzc2FnZS5hZGRfZmxhZygnVCcpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIF9tYm94TU1ERk1lc3NhZ2UpOgogICAgICAgICAgICBsYWJlbHMgPSBzZXQoc2VsZi5nZXRfbGFiZWxzKCkpCiAgICAgICAgICAgIGlmICd1bnNlZW4nIG5vdCBpbiBsYWJlbHM6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9mbGFnKCdSTycpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBtZXNzYWdlLmFkZF9mbGFnKCdPJykKICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGxhYmVsczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ0QnKQogICAgICAgICAgICBpZiAnYW5zd2VyZWQnIGluIGxhYmVsczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2ZsYWcoJ0EnKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNSE1lc3NhZ2UpOgogICAgICAgICAgICBsYWJlbHMgPSBzZXQoc2VsZi5nZXRfbGFiZWxzKCkpCiAgICAgICAgICAgIGlmICd1bnNlZW4nIGluIGxhYmVsczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX3NlcXVlbmNlKCd1bnNlZW4nKQogICAgICAgICAgICBpZiAnYW5zd2VyZWQnIGluIGxhYmVsczoKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX3NlcXVlbmNlKCdyZXBsaWVkJykKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgQmFieWxNZXNzYWdlKToKICAgICAgICAgICAgbWVzc2FnZS5zZXRfdmlzaWJsZShzZWxmLmdldF92aXNpYmxlKCkpCiAgICAgICAgICAgIGZvciBsYWJlbCBpbiBzZWxmLmdldF9sYWJlbHMoKToKICAgICAgICAgICAgICAgIG1lc3NhZ2UuYWRkX2xhYmVsKGxhYmVsKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBNZXNzYWdlKToKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgdG8gc3BlY2lmaWVkIHR5cGU6ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKG1lc3NhZ2UpKQoKCmNsYXNzIE1NREZNZXNzYWdlKF9tYm94TU1ERk1lc3NhZ2UpOgogICAgIiIiTWVzc2FnZSB3aXRoIE1NREYtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKCgpjbGFzcyBfUHJveHlGaWxlOgogICAgIiIiQSByZWFkLW9ubHkgd3JhcHBlciBvZiBhIGZpbGUuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGYsIHBvcz1Ob25lKToKICAgICAgICAiIiJJbml0aWFsaXplIGEgX1Byb3h5RmlsZS4iIiIKICAgICAgICBzZWxmLl9maWxlID0gZgogICAgICAgIGlmIHBvcyBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9wb3MgPSBmLnRlbGwoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3BvcyA9IHBvcwoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgIiIiUmVhZCBieXRlcy4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChzaXplLCBzZWxmLl9maWxlLnJlYWQpCgogICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgIiIiUmVhZCBieXRlcy4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChzaXplLCBzZWxmLl9maWxlLnJlYWQxKQoKICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPU5vbmUpOgogICAgICAgICIiIlJlYWQgYSBsaW5lLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9yZWFkKHNpemUsIHNlbGYuX2ZpbGUucmVhZGxpbmUpCgogICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBzaXplaGludD1Ob25lKToKICAgICAgICAiIiJSZWFkIG11bHRpcGxlIGxpbmVzLiIiIgogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgZm9yIGxpbmUgaW4gc2VsZjoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChsaW5lKQogICAgICAgICAgICBpZiBzaXplaGludCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNpemVoaW50IC09IGxlbihsaW5lKQogICAgICAgICAgICAgICAgaWYgc2l6ZWhpbnQgPD0gMDoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIGxpbmVzLiIiIgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGxpbmUgPSBzZWxmLnJlYWRsaW5lKCkKICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgeWllbGQgbGluZQoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgcG9zaXRpb24uIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3BvcwoKICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgogICAgICAgICIiIkNoYW5nZSBwb3NpdGlvbi4iIiIKICAgICAgICBpZiB3aGVuY2UgPT0gMToKICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX3BvcykKICAgICAgICBzZWxmLl9maWxlLnNlZWsob2Zmc2V0LCB3aGVuY2UpCiAgICAgICAgc2VsZi5fcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiQ2xvc2UgdGhlIGZpbGUuIiIiCiAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2ZpbGUnKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9maWxlLCAnY2xvc2UnKToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9maWxlCgogICAgZGVmIF9yZWFkKHNlbGYsIHNpemUsIHJlYWRfbWV0aG9kKToKICAgICAgICAiIiJSZWFkIHNpemUgYnl0ZXMgdXNpbmcgcmVhZF9tZXRob2QuIiIiCiAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBzaXplID0gLTEKICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fcG9zKQogICAgICAgIHJlc3VsdCA9IHJlYWRfbWV0aG9kKHNpemUpCiAgICAgICAgc2VsZi5fcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAiIiJDb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wgc3VwcG9ydC4iIiIKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgcmVhZGFibGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUucmVhZGFibGUoKQoKICAgIGRlZiB3cml0YWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS53cml0YWJsZSgpCgogICAgZGVmIHNlZWthYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9maWxlLnNlZWthYmxlKCkKCiAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUuZmx1c2goKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNsb3NlZChzZWxmKToKICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2ZpbGUnKToKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLl9maWxlLCAnY2xvc2VkJyk6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBzZWxmLl9maWxlLmNsb3NlZAoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKCmNsYXNzIF9QYXJ0aWFsRmlsZShfUHJveHlGaWxlKToKICAgICIiIkEgcmVhZC1vbmx5IHdyYXBwZXIgb2YgcGFydCBvZiBhIGZpbGUuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGYsIHN0YXJ0PU5vbmUsIHN0b3A9Tm9uZSk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIF9QYXJ0aWFsRmlsZS4iIiIKICAgICAgICBfUHJveHlGaWxlLl9faW5pdF9fKHNlbGYsIGYsIHN0YXJ0KQogICAgICAgIHNlbGYuX3N0YXJ0ID0gc3RhcnQKICAgICAgICBzZWxmLl9zdG9wID0gc3RvcAoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIHN0YXJ0LiIiIgogICAgICAgIHJldHVybiBfUHJveHlGaWxlLnRlbGwoc2VsZikgLSBzZWxmLl9zdGFydAoKICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgogICAgICAgICIiIkNoYW5nZSBwb3NpdGlvbiwgcG9zc2libHkgd2l0aCByZXNwZWN0IHRvIHN0YXJ0IG9yIHN0b3AuIiIiCiAgICAgICAgaWYgd2hlbmNlID09IDA6CiAgICAgICAgICAgIHNlbGYuX3BvcyA9IHNlbGYuX3N0YXJ0CiAgICAgICAgICAgIHdoZW5jZSA9IDEKICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgogICAgICAgICAgICBzZWxmLl9wb3MgPSBzZWxmLl9zdG9wCiAgICAgICAgICAgIHdoZW5jZSA9IDEKICAgICAgICBfUHJveHlGaWxlLnNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2UpCgogICAgZGVmIF9yZWFkKHNlbGYsIHNpemUsIHJlYWRfbWV0aG9kKToKICAgICAgICAiIiJSZWFkIHNpemUgYnl0ZXMgdXNpbmcgcmVhZF9tZXRob2QsIGhvbm9yaW5nIHN0YXJ0IGFuZCBzdG9wLiIiIgogICAgICAgIHJlbWFpbmluZyA9IHNlbGYuX3N0b3AgLSBzZWxmLl9wb3MKICAgICAgICBpZiByZW1haW5pbmcgPD0gMDoKICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgIGlmIHNpemUgaXMgTm9uZSBvciBzaXplIDwgMCBvciBzaXplID4gcmVtYWluaW5nOgogICAgICAgICAgICBzaXplID0gcmVtYWluaW5nCiAgICAgICAgcmV0dXJuIF9Qcm94eUZpbGUuX3JlYWQoc2VsZiwgc2l6ZSwgcmVhZF9tZXRob2QpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICMgZG8gKm5vdCogY2xvc2UgdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgZm9yIHBhcnRpYWwgZmlsZXMsCiAgICAgICAgIyBzaW5jZSBpdCdzIGdsb2JhbCB0byB0aGUgbWFpbGJveCBvYmplY3QKICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfZmlsZScpOgogICAgICAgICAgICBkZWwgc2VsZi5fZmlsZQoKCmRlZiBfbG9ja19maWxlKGYsIGRvdGxvY2s9VHJ1ZSk6CiAgICAiIiJMb2NrIGZpbGUgZiB1c2luZyBsb2NrZiBhbmQgZG90IGxvY2tpbmcuIiIiCiAgICBkb3Rsb2NrX2RvbmUgPSBGYWxzZQogICAgdHJ5OgogICAgICAgIGlmIGZjbnRsOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmY250bC5sb2NrZihmLCBmY250bC5MT0NLX0VYIHwgZmNudGwuTE9DS19OQikKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gaW4gKGVycm5vLkVBR0FJTiwgZXJybm8uRUFDQ0VTLCBlcnJuby5FUk9GUyk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXh0ZXJuYWxDbGFzaEVycm9yKCdsb2NrZjogbG9jayB1bmF2YWlsYWJsZTogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5uYW1lKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIGlmIGRvdGxvY2s6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHByZV9sb2NrID0gX2NyZWF0ZV90ZW1wb3JhcnkoZi5uYW1lICsgJy5sb2NrJykKICAgICAgICAgICAgICAgIHByZV9sb2NrLmNsb3NlKCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gaW4gKGVycm5vLkVBQ0NFUywgZXJybm8uRVJPRlMpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAgIyBXaXRob3V0IHdyaXRlIGFjY2VzcywganVzdCBza2lwIGRvdGxvY2tpbmcuCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBvcy5saW5rKHByZV9sb2NrLm5hbWUsIGYubmFtZSArICcubG9jaycpCiAgICAgICAgICAgICAgICAgICAgZG90bG9ja19kb25lID0gVHJ1ZQogICAgICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgUGVybWlzc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICAgICBvcy5yZW5hbWUocHJlX2xvY2submFtZSwgZi5uYW1lICsgJy5sb2NrJykKICAgICAgICAgICAgICAgICAgICBkb3Rsb2NrX2RvbmUgPSBUcnVlCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhwcmVfbG9jay5uYW1lKQogICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgb3MucmVtb3ZlKHByZV9sb2NrLm5hbWUpCiAgICAgICAgICAgICAgICByYWlzZSBFeHRlcm5hbENsYXNoRXJyb3IoJ2RvdCBsb2NrIHVuYXZhaWxhYmxlOiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYubmFtZSkKICAgIGV4Y2VwdDoKICAgICAgICBpZiBmY250bDoKICAgICAgICAgICAgZmNudGwubG9ja2YoZiwgZmNudGwuTE9DS19VTikKICAgICAgICBpZiBkb3Rsb2NrX2RvbmU6CiAgICAgICAgICAgIG9zLnJlbW92ZShmLm5hbWUgKyAnLmxvY2snKQogICAgICAgIHJhaXNlCgpkZWYgX3VubG9ja19maWxlKGYpOgogICAgIiIiVW5sb2NrIGZpbGUgZiB1c2luZyBsb2NrZiBhbmQgZG90IGxvY2tpbmcuIiIiCiAgICBpZiBmY250bDoKICAgICAgICBmY250bC5sb2NrZihmLCBmY250bC5MT0NLX1VOKQogICAgaWYgb3MucGF0aC5leGlzdHMoZi5uYW1lICsgJy5sb2NrJyk6CiAgICAgICAgb3MucmVtb3ZlKGYubmFtZSArICcubG9jaycpCgpkZWYgX2NyZWF0ZV9jYXJlZnVsbHkocGF0aCk6CiAgICAiIiJDcmVhdGUgYSBmaWxlIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW5kIG9wZW4gZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuIiIiCiAgICBmZCA9IG9zLm9wZW4ocGF0aCwgb3MuT19DUkVBVCB8IG9zLk9fRVhDTCB8IG9zLk9fUkRXUiwgMG82NjYpCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIG9wZW4ocGF0aCwgJ3JiKycpCiAgICBmaW5hbGx5OgogICAgICAgIG9zLmNsb3NlKGZkKQoKZGVmIF9jcmVhdGVfdGVtcG9yYXJ5KHBhdGgpOgogICAgIiIiQ3JlYXRlIGEgdGVtcCBmaWxlIGJhc2VkIG9uIHBhdGggYW5kIG9wZW4gZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuIiIiCiAgICByZXR1cm4gX2NyZWF0ZV9jYXJlZnVsbHkoJyVzLiVzLiVzLiVzJyAlIChwYXRoLCBpbnQodGltZS50aW1lKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LmdldGhvc3RuYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5nZXRwaWQoKSkpCgpkZWYgX3N5bmNfZmx1c2goZik6CiAgICAiIiJFbnN1cmUgY2hhbmdlcyB0byBmaWxlIGYgYXJlIHBoeXNpY2FsbHkgb24gZGlzay4iIiIKICAgIGYuZmx1c2goKQogICAgaWYgaGFzYXR0cihvcywgJ2ZzeW5jJyk6CiAgICAgICAgb3MuZnN5bmMoZi5maWxlbm8oKSkKCmRlZiBfc3luY19jbG9zZShmKToKICAgICIiIkNsb3NlIGZpbGUgZiwgZW5zdXJpbmcgYWxsIGNoYW5nZXMgYXJlIHBoeXNpY2FsbHkgb24gZGlzay4iIiIKICAgIF9zeW5jX2ZsdXNoKGYpCiAgICBmLmNsb3NlKCkKCgpjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgIiIiUmFpc2VkIGZvciBtb2R1bGUtc3BlY2lmaWMgZXJyb3JzLiIiIgoKY2xhc3MgTm9TdWNoTWFpbGJveEVycm9yKEVycm9yKToKICAgICIiIlRoZSBzcGVjaWZpZWQgbWFpbGJveCBkb2VzIG5vdCBleGlzdCBhbmQgd29uJ3QgYmUgY3JlYXRlZC4iIiIKCmNsYXNzIE5vdEVtcHR5RXJyb3IoRXJyb3IpOgogICAgIiIiVGhlIHNwZWNpZmllZCBtYWlsYm94IGlzIG5vdCBlbXB0eSBhbmQgZGVsZXRpb24gd2FzIHJlcXVlc3RlZC4iIiIKCmNsYXNzIEV4dGVybmFsQ2xhc2hFcnJvcihFcnJvcik6CiAgICAiIiJBbm90aGVyIHByb2Nlc3MgY2F1c2VkIGFuIGFjdGlvbiB0byBmYWlsLiIiIgoKY2xhc3MgRm9ybWF0RXJyb3IoRXJyb3IpOgogICAgIiIiQSBmaWxlIGFwcGVhcnMgdG8gaGF2ZSBhbiBpbnZhbGlkIGZvcm1hdC4iIiIKUEsDBBQAAAAAAAIgo1a/phS9mSQAAJkkAAAKAAAAbWFpbGNhcC5weSIiIk1haWxjYXAgZmlsZSBoYW5kbGluZy4gIFNlZSBSRkMgMTUyNC4iIiIKCmltcG9ydCBvcwppbXBvcnQgd2FybmluZ3MKaW1wb3J0IHJlCgpfX2FsbF9fID0gWyJnZXRjYXBzIiwiZmluZG1hdGNoIl0KCgpfREVQUkVDQVRJT05fTVNHID0gKCdUaGUge25hbWV9IG1vZHVsZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICdQeXRob24ge3JlbW92ZX0uIFNlZSB0aGUgbWltZXR5cGVzIG1vZHVsZSBmb3IgYW4gJwogICAgICAgICAgICAgICAgICAgICdhbHRlcm5hdGl2ZS4nKQp3YXJuaW5ncy5fZGVwcmVjYXRlZChfX25hbWVfXywgX0RFUFJFQ0FUSU9OX01TRywgcmVtb3ZlPSgzLCAxMykpCgoKZGVmIGxpbmVub19zb3J0X2tleShlbnRyeSk6CiAgICAjIFNvcnQgaW4gYXNjZW5kaW5nIG9yZGVyLCB3aXRoIHVuc3BlY2lmaWVkIGVudHJpZXMgYXQgdGhlIGVuZAogICAgaWYgJ2xpbmVubycgaW4gZW50cnk6CiAgICAgICAgcmV0dXJuIDAsIGVudHJ5WydsaW5lbm8nXQogICAgZWxzZToKICAgICAgICByZXR1cm4gMSwgMAoKX2ZpbmRfdW5zYWZlID0gcmUuY29tcGlsZShyJ1teXHhhMS1cVTAwMTBGRkZGXHdAKz06LC4vLV0nKS5zZWFyY2gKCmNsYXNzIFVuc2FmZU1haWxjYXBJbnB1dChXYXJuaW5nKToKICAgICIiIldhcm5pbmcgcmFpc2VkIHdoZW4gcmVmdXNpbmcgdW5zYWZlIGlucHV0IiIiCgoKIyBQYXJ0IDE6IHRvcC1sZXZlbCBpbnRlcmZhY2UuCgpkZWYgZ2V0Y2FwcygpOgogICAgIiIiUmV0dXJuIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBtYWlsY2FwIGRhdGFiYXNlLgoKICAgIFRoZSBkaWN0aW9uYXJ5IG1hcHMgYSBNSU1FIHR5cGUgKGluIGFsbCBsb3dlcmNhc2UsIGUuZy4gJ3RleHQvcGxhaW4nKQogICAgdG8gYSBsaXN0IG9mIGRpY3Rpb25hcmllcyBjb3JyZXNwb25kaW5nIHRvIG1haWxjYXAgZW50cmllcy4gIFRoZSBsaXN0CiAgICBjb2xsZWN0cyBhbGwgdGhlIGVudHJpZXMgZm9yIHRoYXQgTUlNRSB0eXBlIGZyb20gYWxsIGF2YWlsYWJsZSBtYWlsY2FwCiAgICBmaWxlcy4gIEVhY2ggZGljdGlvbmFyeSBjb250YWlucyBrZXktdmFsdWUgcGFpcnMgZm9yIHRoYXQgTUlNRSB0eXBlLAogICAgd2hlcmUgdGhlIHZpZXdpbmcgY29tbWFuZCBpcyBzdG9yZWQgd2l0aCB0aGUga2V5ICJ2aWV3Ii4KCiAgICAiIiIKICAgIGNhcHMgPSB7fQogICAgbGluZW5vID0gMAogICAgZm9yIG1haWxjYXAgaW4gbGlzdG1haWxjYXBmaWxlcygpOgogICAgICAgIHRyeToKICAgICAgICAgICAgZnAgPSBvcGVuKG1haWxjYXAsICdyJykKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgY29udGludWUKICAgICAgICB3aXRoIGZwOgogICAgICAgICAgICBtb3JlY2FwcywgbGluZW5vID0gX3JlYWRtYWlsY2FwZmlsZShmcCwgbGluZW5vKQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIG1vcmVjYXBzLml0ZW1zKCk6CiAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gY2FwczoKICAgICAgICAgICAgICAgIGNhcHNba2V5XSA9IHZhbHVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjYXBzW2tleV0gPSBjYXBzW2tleV0gKyB2YWx1ZQogICAgcmV0dXJuIGNhcHMKCmRlZiBsaXN0bWFpbGNhcGZpbGVzKCk6CiAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBtYWlsY2FwIGZpbGVzIGZvdW5kIG9uIHRoZSBzeXN0ZW0uIiIiCiAgICAjIFRoaXMgaXMgbW9zdGx5IGEgVW5peCB0aGluZywgYnV0IHdlIHVzZSB0aGUgT1MgcGF0aCBzZXBhcmF0b3IgYW55d2F5CiAgICBpZiAnTUFJTENBUFMnIGluIG9zLmVudmlyb246CiAgICAgICAgcGF0aHN0ciA9IG9zLmVudmlyb25bJ01BSUxDQVBTJ10KICAgICAgICBtYWlsY2FwcyA9IHBhdGhzdHIuc3BsaXQob3MucGF0aHNlcCkKICAgIGVsc2U6CiAgICAgICAgaWYgJ0hPTUUnIGluIG9zLmVudmlyb246CiAgICAgICAgICAgIGhvbWUgPSBvcy5lbnZpcm9uWydIT01FJ10KICAgICAgICBlbHNlOgogICAgICAgICAgICAjIERvbid0IGJvdGhlciB3aXRoIGdldHB3dWlkKCkKICAgICAgICAgICAgaG9tZSA9ICcuJyAjIExhc3QgcmVzb3J0CiAgICAgICAgbWFpbGNhcHMgPSBbaG9tZSArICcvLm1haWxjYXAnLCAnL2V0Yy9tYWlsY2FwJywKICAgICAgICAgICAgICAgICcvdXNyL2V0Yy9tYWlsY2FwJywgJy91c3IvbG9jYWwvZXRjL21haWxjYXAnXQogICAgcmV0dXJuIG1haWxjYXBzCgoKIyBQYXJ0IDI6IHRoZSBwYXJzZXIuCmRlZiByZWFkbWFpbGNhcGZpbGUoZnApOgogICAgIiIiUmVhZCBhIG1haWxjYXAgZmlsZSBhbmQgcmV0dXJuIGEgZGljdGlvbmFyeSBrZXllZCBieSBNSU1FIHR5cGUuIiIiCiAgICB3YXJuaW5ncy53YXJuKCdyZWFkbWFpbGNhcGZpbGUgaXMgZGVwcmVjYXRlZCwgdXNlIGdldGNhcHMgaW5zdGVhZCcsCiAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgIGNhcHMsIF8gPSBfcmVhZG1haWxjYXBmaWxlKGZwLCBOb25lKQogICAgcmV0dXJuIGNhcHMKCgpkZWYgX3JlYWRtYWlsY2FwZmlsZShmcCwgbGluZW5vKToKICAgICIiIlJlYWQgYSBtYWlsY2FwIGZpbGUgYW5kIHJldHVybiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgTUlNRSB0eXBlLgoKICAgIEVhY2ggTUlNRSB0eXBlIGlzIG1hcHBlZCB0byBhbiBlbnRyeSBjb25zaXN0aW5nIG9mIGEgbGlzdCBvZgogICAgZGljdGlvbmFyaWVzOyB0aGUgbGlzdCB3aWxsIGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBzdWNoIGRpY3Rpb25hcnkKICAgIGlmIGEgZ2l2ZW4gTUlNRSB0eXBlIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIG1haWxjYXAgZmlsZS4KICAgIEVhY2ggZGljdGlvbmFyeSBjb250YWlucyBrZXktdmFsdWUgcGFpcnMgZm9yIHRoYXQgTUlNRSB0eXBlLCB3aGVyZQogICAgdGhlIHZpZXdpbmcgY29tbWFuZCBpcyBzdG9yZWQgd2l0aCB0aGUga2V5ICJ2aWV3Ii4KICAgICIiIgogICAgY2FwcyA9IHt9CiAgICB3aGlsZSAxOgogICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCiAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCiAgICAgICAgIyBJZ25vcmUgY29tbWVudHMgYW5kIGJsYW5rIGxpbmVzCiAgICAgICAgaWYgbGluZVswXSA9PSAnIycgb3IgbGluZS5zdHJpcCgpID09ICcnOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIG5leHRsaW5lID0gbGluZQogICAgICAgICMgSm9pbiBjb250aW51YXRpb24gbGluZXMKICAgICAgICB3aGlsZSBuZXh0bGluZVstMjpdID09ICdcXFxuJzoKICAgICAgICAgICAgbmV4dGxpbmUgPSBmcC5yZWFkbGluZSgpCiAgICAgICAgICAgIGlmIG5vdCBuZXh0bGluZTogbmV4dGxpbmUgPSAnXG4nCiAgICAgICAgICAgIGxpbmUgPSBsaW5lWzotMl0gKyBuZXh0bGluZQogICAgICAgICMgUGFyc2UgdGhlIGxpbmUKICAgICAgICBrZXksIGZpZWxkcyA9IHBhcnNlbGluZShsaW5lKQogICAgICAgIGlmIG5vdCAoa2V5IGFuZCBmaWVsZHMpOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKICAgICAgICAgICAgZmllbGRzWydsaW5lbm8nXSA9IGxpbmVubwogICAgICAgICAgICBsaW5lbm8gKz0gMQogICAgICAgICMgTm9ybWFsaXplIHRoZSBrZXkKICAgICAgICB0eXBlcyA9IGtleS5zcGxpdCgnLycpCiAgICAgICAgZm9yIGogaW4gcmFuZ2UobGVuKHR5cGVzKSk6CiAgICAgICAgICAgIHR5cGVzW2pdID0gdHlwZXNbal0uc3RyaXAoKQogICAgICAgIGtleSA9ICcvJy5qb2luKHR5cGVzKS5sb3dlcigpCiAgICAgICAgIyBVcGRhdGUgdGhlIGRhdGFiYXNlCiAgICAgICAgaWYga2V5IGluIGNhcHM6CiAgICAgICAgICAgIGNhcHNba2V5XS5hcHBlbmQoZmllbGRzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNhcHNba2V5XSA9IFtmaWVsZHNdCiAgICByZXR1cm4gY2FwcywgbGluZW5vCgpkZWYgcGFyc2VsaW5lKGxpbmUpOgogICAgIiIiUGFyc2Ugb25lIGVudHJ5IGluIGEgbWFpbGNhcCBmaWxlIGFuZCByZXR1cm4gYSBkaWN0aW9uYXJ5LgoKICAgIFRoZSB2aWV3aW5nIGNvbW1hbmQgaXMgc3RvcmVkIGFzIHRoZSB2YWx1ZSB3aXRoIHRoZSBrZXkgInZpZXciLAogICAgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWVsZHMgcHJvZHVjZSBrZXktdmFsdWUgcGFpcnMgaW4gdGhlIGRpY3QuCiAgICAiIiIKICAgIGZpZWxkcyA9IFtdCiAgICBpLCBuID0gMCwgbGVuKGxpbmUpCiAgICB3aGlsZSBpIDwgbjoKICAgICAgICBmaWVsZCwgaSA9IHBhcnNlZmllbGQobGluZSwgaSwgbikKICAgICAgICBmaWVsZHMuYXBwZW5kKGZpZWxkKQogICAgICAgIGkgPSBpKzEgIyBTa2lwIHNlbWljb2xvbgogICAgaWYgbGVuKGZpZWxkcykgPCAyOgogICAgICAgIHJldHVybiBOb25lLCBOb25lCiAgICBrZXksIHZpZXcsIHJlc3QgPSBmaWVsZHNbMF0sIGZpZWxkc1sxXSwgZmllbGRzWzI6XQogICAgZmllbGRzID0geyd2aWV3Jzogdmlld30KICAgIGZvciBmaWVsZCBpbiByZXN0OgogICAgICAgIGkgPSBmaWVsZC5maW5kKCc9JykKICAgICAgICBpZiBpIDwgMDoKICAgICAgICAgICAgZmtleSA9IGZpZWxkCiAgICAgICAgICAgIGZ2YWx1ZSA9ICIiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZmtleSA9IGZpZWxkWzppXS5zdHJpcCgpCiAgICAgICAgICAgIGZ2YWx1ZSA9IGZpZWxkW2krMTpdLnN0cmlwKCkKICAgICAgICBpZiBma2V5IGluIGZpZWxkczoKICAgICAgICAgICAgIyBJZ25vcmUgaXQKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZpZWxkc1tma2V5XSA9IGZ2YWx1ZQogICAgcmV0dXJuIGtleSwgZmllbGRzCgpkZWYgcGFyc2VmaWVsZChsaW5lLCBpLCBuKToKICAgICIiIlNlcGFyYXRlIG9uZSBrZXktdmFsdWUgcGFpciBpbiBhIG1haWxjYXAgZW50cnkuIiIiCiAgICBzdGFydCA9IGkKICAgIHdoaWxlIGkgPCBuOgogICAgICAgIGMgPSBsaW5lW2ldCiAgICAgICAgaWYgYyA9PSAnOyc6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxpZiBjID09ICdcXCc6CiAgICAgICAgICAgIGkgPSBpKzIKICAgICAgICBlbHNlOgogICAgICAgICAgICBpID0gaSsxCiAgICByZXR1cm4gbGluZVtzdGFydDppXS5zdHJpcCgpLCBpCgoKIyBQYXJ0IDM6IHVzaW5nIHRoZSBkYXRhYmFzZS4KCmRlZiBmaW5kbWF0Y2goY2FwcywgTUlNRXR5cGUsIGtleT0ndmlldycsIGZpbGVuYW1lPSIvZGV2L251bGwiLCBwbGlzdD1bXSk6CiAgICAiIiJGaW5kIGEgbWF0Y2ggZm9yIGEgbWFpbGNhcCBlbnRyeS4KCiAgICBSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHRoZSBjb21tYW5kIGxpbmUsIGFuZCB0aGUgbWFpbGNhcCBlbnRyeQogICAgdXNlZDsgKE5vbmUsIE5vbmUpIGlmIG5vIG1hdGNoIGlzIGZvdW5kLiAgVGhpcyBtYXkgaW52b2tlIHRoZQogICAgJ3Rlc3QnIGNvbW1hbmQgb2Ygc2V2ZXJhbCBtYXRjaGluZyBlbnRyaWVzIGJlZm9yZSBkZWNpZGluZyB3aGljaAogICAgZW50cnkgdG8gdXNlLgoKICAgICIiIgogICAgaWYgX2ZpbmRfdW5zYWZlKGZpbGVuYW1lKToKICAgICAgICBtc2cgPSAiUmVmdXNpbmcgdG8gdXNlIG1haWxjYXAgd2l0aCBmaWxlbmFtZSAlci4gVXNlIGEgc2FmZSB0ZW1wb3JhcnkgZmlsZW5hbWUuIiAlIChmaWxlbmFtZSwpCiAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIFVuc2FmZU1haWxjYXBJbnB1dCkKICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQogICAgZW50cmllcyA9IGxvb2t1cChjYXBzLCBNSU1FdHlwZSwga2V5KQogICAgIyBYWFggVGhpcyBjb2RlIHNob3VsZCBzb21laG93IGNoZWNrIGZvciB0aGUgbmVlZHN0ZXJtaW5hbCBmbGFnLgogICAgZm9yIGUgaW4gZW50cmllczoKICAgICAgICBpZiAndGVzdCcgaW4gZToKICAgICAgICAgICAgdGVzdCA9IHN1YnN0KGVbJ3Rlc3QnXSwgZmlsZW5hbWUsIHBsaXN0KQogICAgICAgICAgICBpZiB0ZXN0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiB0ZXN0IGFuZCBvcy5zeXN0ZW0odGVzdCkgIT0gMDoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgY29tbWFuZCA9IHN1YnN0KGVba2V5XSwgTUlNRXR5cGUsIGZpbGVuYW1lLCBwbGlzdCkKICAgICAgICBpZiBjb21tYW5kIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gY29tbWFuZCwgZQogICAgcmV0dXJuIE5vbmUsIE5vbmUKCmRlZiBsb29rdXAoY2FwcywgTUlNRXR5cGUsIGtleT1Ob25lKToKICAgIGVudHJpZXMgPSBbXQogICAgaWYgTUlNRXR5cGUgaW4gY2FwczoKICAgICAgICBlbnRyaWVzID0gZW50cmllcyArIGNhcHNbTUlNRXR5cGVdCiAgICBNSU1FdHlwZXMgPSBNSU1FdHlwZS5zcGxpdCgnLycpCiAgICBNSU1FdHlwZSA9IE1JTUV0eXBlc1swXSArICcvKicKICAgIGlmIE1JTUV0eXBlIGluIGNhcHM6CiAgICAgICAgZW50cmllcyA9IGVudHJpZXMgKyBjYXBzW01JTUV0eXBlXQogICAgaWYga2V5IGlzIG5vdCBOb25lOgogICAgICAgIGVudHJpZXMgPSBbZSBmb3IgZSBpbiBlbnRyaWVzIGlmIGtleSBpbiBlXQogICAgZW50cmllcyA9IHNvcnRlZChlbnRyaWVzLCBrZXk9bGluZW5vX3NvcnRfa2V5KQogICAgcmV0dXJuIGVudHJpZXMKCmRlZiBzdWJzdChmaWVsZCwgTUlNRXR5cGUsIGZpbGVuYW1lLCBwbGlzdD1bXSk6CiAgICAjIFhYWCBBY3R1YWxseSwgdGhpcyBpcyBVbml4LXNwZWNpZmljCiAgICByZXMgPSAnJwogICAgaSwgbiA9IDAsIGxlbihmaWVsZCkKICAgIHdoaWxlIGkgPCBuOgogICAgICAgIGMgPSBmaWVsZFtpXTsgaSA9IGkrMQogICAgICAgIGlmIGMgIT0gJyUnOgogICAgICAgICAgICBpZiBjID09ICdcXCc6CiAgICAgICAgICAgICAgICBjID0gZmllbGRbaTppKzFdOyBpID0gaSsxCiAgICAgICAgICAgIHJlcyA9IHJlcyArIGMKICAgICAgICBlbHNlOgogICAgICAgICAgICBjID0gZmllbGRbaV07IGkgPSBpKzEKICAgICAgICAgICAgaWYgYyA9PSAnJSc6CiAgICAgICAgICAgICAgICByZXMgPSByZXMgKyBjCiAgICAgICAgICAgIGVsaWYgYyA9PSAncyc6CiAgICAgICAgICAgICAgICByZXMgPSByZXMgKyBmaWxlbmFtZQogICAgICAgICAgICBlbGlmIGMgPT0gJ3QnOgogICAgICAgICAgICAgICAgaWYgX2ZpbmRfdW5zYWZlKE1JTUV0eXBlKToKICAgICAgICAgICAgICAgICAgICBtc2cgPSAiUmVmdXNpbmcgdG8gc3Vic3RpdHV0ZSBNSU1FIHR5cGUgJXIgaW50byBhIHNoZWxsIGNvbW1hbmQuIiAlIChNSU1FdHlwZSwpCiAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIFVuc2FmZU1haWxjYXBJbnB1dCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgcmVzID0gcmVzICsgTUlNRXR5cGUKICAgICAgICAgICAgZWxpZiBjID09ICd7JzoKICAgICAgICAgICAgICAgIHN0YXJ0ID0gaQogICAgICAgICAgICAgICAgd2hpbGUgaSA8IG4gYW5kIGZpZWxkW2ldICE9ICd9JzoKICAgICAgICAgICAgICAgICAgICBpID0gaSsxCiAgICAgICAgICAgICAgICBuYW1lID0gZmllbGRbc3RhcnQ6aV0KICAgICAgICAgICAgICAgIGkgPSBpKzEKICAgICAgICAgICAgICAgIHBhcmFtID0gZmluZHBhcmFtKG5hbWUsIHBsaXN0KQogICAgICAgICAgICAgICAgaWYgX2ZpbmRfdW5zYWZlKHBhcmFtKToKICAgICAgICAgICAgICAgICAgICBtc2cgPSAiUmVmdXNpbmcgdG8gc3Vic3RpdHV0ZSBwYXJhbWV0ZXIgJXIgKCVzKSBpbnRvIGEgc2hlbGwgY29tbWFuZCIgJSAocGFyYW0sIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIFVuc2FmZU1haWxjYXBJbnB1dCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgcmVzID0gcmVzICsgcGFyYW0KICAgICAgICAgICAgIyBYWFggVG8gZG86CiAgICAgICAgICAgICMgJW4gPT0gbnVtYmVyIG9mIHBhcnRzIGlmIHR5cGUgaXMgbXVsdGlwYXJ0LyoKICAgICAgICAgICAgIyAlRiA9PSBsaXN0IG9mIGFsdGVybmF0aW5nIHR5cGUgYW5kIGZpbGVuYW1lIGZvciBwYXJ0cwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVzID0gcmVzICsgJyUnICsgYwogICAgcmV0dXJuIHJlcwoKZGVmIGZpbmRwYXJhbShuYW1lLCBwbGlzdCk6CiAgICBuYW1lID0gbmFtZS5sb3dlcigpICsgJz0nCiAgICBuID0gbGVuKG5hbWUpCiAgICBmb3IgcCBpbiBwbGlzdDoKICAgICAgICBpZiBwWzpuXS5sb3dlcigpID09IG5hbWU6CiAgICAgICAgICAgIHJldHVybiBwW246XQogICAgcmV0dXJuICcnCgoKIyBQYXJ0IDQ6IHRlc3QgcHJvZ3JhbS4KCmRlZiB0ZXN0KCk6CiAgICBpbXBvcnQgc3lzCiAgICBjYXBzID0gZ2V0Y2FwcygpCiAgICBpZiBub3Qgc3lzLmFyZ3ZbMTpdOgogICAgICAgIHNob3coY2FwcykKICAgICAgICByZXR1cm4KICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbihzeXMuYXJndiksIDIpOgogICAgICAgIGFyZ3MgPSBzeXMuYXJndltpOmkrMl0KICAgICAgICBpZiBsZW4oYXJncykgPCAyOgogICAgICAgICAgICBwcmludCgidXNhZ2U6IG1haWxjYXAgW01JTUV0eXBlIGZpbGVdIC4uLiIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIE1JTUV0eXBlID0gYXJnc1swXQogICAgICAgIGZpbGUgPSBhcmdzWzFdCiAgICAgICAgY29tbWFuZCwgZSA9IGZpbmRtYXRjaChjYXBzLCBNSU1FdHlwZSwgJ3ZpZXcnLCBmaWxlKQogICAgICAgIGlmIG5vdCBjb21tYW5kOgogICAgICAgICAgICBwcmludCgiTm8gdmlld2VyIGZvdW5kIGZvciIsIHR5cGUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoIkV4ZWN1dGluZzoiLCBjb21tYW5kKQogICAgICAgICAgICBzdHMgPSBvcy5zeXN0ZW0oY29tbWFuZCkKICAgICAgICAgICAgc3RzID0gb3Mud2FpdHN0YXR1c190b19leGl0Y29kZShzdHMpCiAgICAgICAgICAgIGlmIHN0czoKICAgICAgICAgICAgICAgIHByaW50KCJFeGl0IHN0YXR1czoiLCBzdHMpCgpkZWYgc2hvdyhjYXBzKToKICAgIHByaW50KCJNYWlsY2FwIGZpbGVzOiIpCiAgICBmb3IgZm4gaW4gbGlzdG1haWxjYXBmaWxlcygpOiBwcmludCgiXHQiICsgZm4pCiAgICBwcmludCgpCiAgICBpZiBub3QgY2FwczogY2FwcyA9IGdldGNhcHMoKQogICAgcHJpbnQoIk1haWxjYXAgZW50cmllczoiKQogICAgcHJpbnQoKQogICAgY2tleXMgPSBzb3J0ZWQoY2FwcykKICAgIGZvciB0eXBlIGluIGNrZXlzOgogICAgICAgIHByaW50KHR5cGUpCiAgICAgICAgZW50cmllcyA9IGNhcHNbdHlwZV0KICAgICAgICBmb3IgZSBpbiBlbnRyaWVzOgogICAgICAgICAgICBrZXlzID0gc29ydGVkKGUpCiAgICAgICAgICAgIGZvciBrIGluIGtleXM6CiAgICAgICAgICAgICAgICBwcmludCgiICAlLTE1cyIgJSBrLCBlW2tdKQogICAgICAgICAgICBwcmludCgpCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgdGVzdCgpClBLAwQUAAAAAAACIKNW+CdkwQdZAAAHWQAADAAAAG1pbWV0eXBlcy5weSIiIkd1ZXNzIHRoZSBNSU1FIHR5cGUgb2YgYSBmaWxlLgoKVGhpcyBtb2R1bGUgZGVmaW5lcyB0d28gdXNlZnVsIGZ1bmN0aW9uczoKCmd1ZXNzX3R5cGUodXJsLCBzdHJpY3Q9VHJ1ZSkgLS0gZ3Vlc3MgdGhlIE1JTUUgdHlwZSBhbmQgZW5jb2Rpbmcgb2YgYSBVUkwuCgpndWVzc19leHRlbnNpb24odHlwZSwgc3RyaWN0PVRydWUpIC0tIGd1ZXNzIHRoZSBleHRlbnNpb24gZm9yIGEgZ2l2ZW4gTUlNRSB0eXBlLgoKSXQgYWxzbyBjb250YWlucyB0aGUgZm9sbG93aW5nLCBmb3IgdHVuaW5nIHRoZSBiZWhhdmlvcjoKCkRhdGE6Cgprbm93bmZpbGVzIC0tIGxpc3Qgb2YgZmlsZXMgdG8gcGFyc2UKaW5pdGVkIC0tIGZsYWcgc2V0IHdoZW4gaW5pdCgpIGhhcyBiZWVuIGNhbGxlZApzdWZmaXhfbWFwIC0tIGRpY3Rpb25hcnkgbWFwcGluZyBzdWZmaXhlcyB0byBzdWZmaXhlcwplbmNvZGluZ3NfbWFwIC0tIGRpY3Rpb25hcnkgbWFwcGluZyBzdWZmaXhlcyB0byBlbmNvZGluZ3MKdHlwZXNfbWFwIC0tIGRpY3Rpb25hcnkgbWFwcGluZyBzdWZmaXhlcyB0byB0eXBlcwoKRnVuY3Rpb25zOgoKaW5pdChbZmlsZXNdKSAtLSBwYXJzZSBhIGxpc3Qgb2YgZmlsZXMsIGRlZmF1bHQga25vd25maWxlcyAob24gV2luZG93cywgdGhlCiAgZGVmYXVsdCB2YWx1ZXMgYXJlIHRha2VuIGZyb20gdGhlIHJlZ2lzdHJ5KQpyZWFkX21pbWVfdHlwZXMoZmlsZSkgLS0gcGFyc2Ugb25lIGZpbGUsIHJldHVybiBhIGRpY3Rpb25hcnkgb3IgTm9uZQoiIiIKCmltcG9ydCBvcwppbXBvcnQgc3lzCmltcG9ydCBwb3NpeHBhdGgKaW1wb3J0IHVybGxpYi5wYXJzZQoKdHJ5OgogICAgZnJvbSBfd2luYXBpIGltcG9ydCBfbWltZXR5cGVzX3JlYWRfd2luZG93c19yZWdpc3RyeQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBfbWltZXR5cGVzX3JlYWRfd2luZG93c19yZWdpc3RyeSA9IE5vbmUKCnRyeToKICAgIGltcG9ydCB3aW5yZWcgYXMgX3dpbnJlZwpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBfd2lucmVnID0gTm9uZQoKX19hbGxfXyA9IFsKICAgICJrbm93bmZpbGVzIiwgImluaXRlZCIsICJNaW1lVHlwZXMiLAogICAgImd1ZXNzX3R5cGUiLCAiZ3Vlc3NfYWxsX2V4dGVuc2lvbnMiLCAiZ3Vlc3NfZXh0ZW5zaW9uIiwKICAgICJhZGRfdHlwZSIsICJpbml0IiwgInJlYWRfbWltZV90eXBlcyIsCiAgICAic3VmZml4X21hcCIsICJlbmNvZGluZ3NfbWFwIiwgInR5cGVzX21hcCIsICJjb21tb25fdHlwZXMiCl0KCmtub3duZmlsZXMgPSBbCiAgICAiL2V0Yy9taW1lLnR5cGVzIiwKICAgICIvZXRjL2h0dHBkL21pbWUudHlwZXMiLCAgICAgICAgICAgICAgICAgICAgIyBNYWMgT1MgWAogICAgIi9ldGMvaHR0cGQvY29uZi9taW1lLnR5cGVzIiwgICAgICAgICAgICAgICAjIEFwYWNoZQogICAgIi9ldGMvYXBhY2hlL21pbWUudHlwZXMiLCAgICAgICAgICAgICAgICAgICAjIEFwYWNoZSAxCiAgICAiL2V0Yy9hcGFjaGUyL21pbWUudHlwZXMiLCAgICAgICAgICAgICAgICAgICMgQXBhY2hlIDIKICAgICIvdXNyL2xvY2FsL2V0Yy9odHRwZC9jb25mL21pbWUudHlwZXMiLAogICAgIi91c3IvbG9jYWwvbGliL25ldHNjYXBlL21pbWUudHlwZXMiLAogICAgIi91c3IvbG9jYWwvZXRjL2h0dHBkL2NvbmYvbWltZS50eXBlcyIsICAgICAjIEFwYWNoZSAxLjIKICAgICIvdXNyL2xvY2FsL2V0Yy9taW1lLnR5cGVzIiwgICAgICAgICAgICAgICAgIyBBcGFjaGUgMS4zCiAgICBdCgppbml0ZWQgPSBGYWxzZQpfZGIgPSBOb25lCgoKY2xhc3MgTWltZVR5cGVzOgogICAgIiIiTUlNRS10eXBlcyBkYXRhc3RvcmUuCgogICAgVGhpcyBkYXRhc3RvcmUgY2FuIGhhbmRsZSBpbmZvcm1hdGlvbiBmcm9tIG1pbWUudHlwZXMtc3R5bGUgZmlsZXMKICAgIGFuZCBzdXBwb3J0cyBiYXNpYyBkZXRlcm1pbmF0aW9uIG9mIE1JTUUgdHlwZSBmcm9tIGEgZmlsZW5hbWUgb3IKICAgIFVSTCwgYW5kIGNhbiBndWVzcyBhIHJlYXNvbmFibGUgZXh0ZW5zaW9uIGdpdmVuIGEgTUlNRSB0eXBlLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lcz0oKSwgc3RyaWN0PVRydWUpOgogICAgICAgIGlmIG5vdCBpbml0ZWQ6CiAgICAgICAgICAgIGluaXQoKQogICAgICAgIHNlbGYuZW5jb2RpbmdzX21hcCA9IF9lbmNvZGluZ3NfbWFwX2RlZmF1bHQuY29weSgpCiAgICAgICAgc2VsZi5zdWZmaXhfbWFwID0gX3N1ZmZpeF9tYXBfZGVmYXVsdC5jb3B5KCkKICAgICAgICBzZWxmLnR5cGVzX21hcCA9ICh7fSwge30pICMgZGljdCBmb3IgKG5vbi1zdHJpY3QsIHN0cmljdCkKICAgICAgICBzZWxmLnR5cGVzX21hcF9pbnYgPSAoe30sIHt9KQogICAgICAgIGZvciAoZXh0LCB0eXBlKSBpbiBfdHlwZXNfbWFwX2RlZmF1bHQuaXRlbXMoKToKICAgICAgICAgICAgc2VsZi5hZGRfdHlwZSh0eXBlLCBleHQsIFRydWUpCiAgICAgICAgZm9yIChleHQsIHR5cGUpIGluIF9jb21tb25fdHlwZXNfZGVmYXVsdC5pdGVtcygpOgogICAgICAgICAgICBzZWxmLmFkZF90eXBlKHR5cGUsIGV4dCwgRmFsc2UpCiAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgogICAgICAgICAgICBzZWxmLnJlYWQobmFtZSwgc3RyaWN0KQoKICAgIGRlZiBhZGRfdHlwZShzZWxmLCB0eXBlLCBleHQsIHN0cmljdD1UcnVlKToKICAgICAgICAiIiJBZGQgYSBtYXBwaW5nIGJldHdlZW4gYSB0eXBlIGFuZCBhbiBleHRlbnNpb24uCgogICAgICAgIFdoZW4gdGhlIGV4dGVuc2lvbiBpcyBhbHJlYWR5IGtub3duLCB0aGUgbmV3CiAgICAgICAgdHlwZSB3aWxsIHJlcGxhY2UgdGhlIG9sZCBvbmUuIFdoZW4gdGhlIHR5cGUKICAgICAgICBpcyBhbHJlYWR5IGtub3duIHRoZSBleHRlbnNpb24gd2lsbCBiZSBhZGRlZAogICAgICAgIHRvIHRoZSBsaXN0IG9mIGtub3duIGV4dGVuc2lvbnMuCgogICAgICAgIElmIHN0cmljdCBpcyB0cnVlLCBpbmZvcm1hdGlvbiB3aWxsIGJlIGFkZGVkIHRvCiAgICAgICAgbGlzdCBvZiBzdGFuZGFyZCB0eXBlcywgZWxzZSB0byB0aGUgbGlzdCBvZiBub24tc3RhbmRhcmQKICAgICAgICB0eXBlcy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnR5cGVzX21hcFtzdHJpY3RdW2V4dF0gPSB0eXBlCiAgICAgICAgZXh0cyA9IHNlbGYudHlwZXNfbWFwX2ludltzdHJpY3RdLnNldGRlZmF1bHQodHlwZSwgW10pCiAgICAgICAgaWYgZXh0IG5vdCBpbiBleHRzOgogICAgICAgICAgICBleHRzLmFwcGVuZChleHQpCgogICAgZGVmIGd1ZXNzX3R5cGUoc2VsZiwgdXJsLCBzdHJpY3Q9VHJ1ZSk6CiAgICAgICAgIiIiR3Vlc3MgdGhlIHR5cGUgb2YgYSBmaWxlIHdoaWNoIGlzIGVpdGhlciBhIFVSTCBvciBhIHBhdGgtbGlrZSBvYmplY3QuCgogICAgICAgIFJldHVybiB2YWx1ZSBpcyBhIHR1cGxlICh0eXBlLCBlbmNvZGluZykgd2hlcmUgdHlwZSBpcyBOb25lIGlmCiAgICAgICAgdGhlIHR5cGUgY2FuJ3QgYmUgZ3Vlc3NlZCAobm8gb3IgdW5rbm93biBzdWZmaXgpIG9yIGEgc3RyaW5nCiAgICAgICAgb2YgdGhlIGZvcm0gdHlwZS9zdWJ0eXBlLCB1c2FibGUgZm9yIGEgTUlNRSBDb250ZW50LXR5cGUKICAgICAgICBoZWFkZXI7IGFuZCBlbmNvZGluZyBpcyBOb25lIGZvciBubyBlbmNvZGluZyBvciB0aGUgbmFtZSBvZgogICAgICAgIHRoZSBwcm9ncmFtIHVzZWQgdG8gZW5jb2RlIChlLmcuIGNvbXByZXNzIG9yIGd6aXApLiAgVGhlCiAgICAgICAgbWFwcGluZ3MgYXJlIHRhYmxlIGRyaXZlbi4gIEVuY29kaW5nIHN1ZmZpeGVzIGFyZSBjYXNlCiAgICAgICAgc2Vuc2l0aXZlOyB0eXBlIHN1ZmZpeGVzIGFyZSBmaXJzdCB0cmllZCBjYXNlIHNlbnNpdGl2ZSwgdGhlbgogICAgICAgIGNhc2UgaW5zZW5zaXRpdmUuCgogICAgICAgIFRoZSBzdWZmaXhlcyAudGd6LCAudGF6IGFuZCAudHogKGNhc2Ugc2Vuc2l0aXZlISkgYXJlIGFsbAogICAgICAgIG1hcHBlZCB0byAnLnRhci5neicuICAoVGhpcyBpcyB0YWJsZS1kcml2ZW4gdG9vLCB1c2luZyB0aGUKICAgICAgICBkaWN0aW9uYXJ5IHN1ZmZpeF9tYXAuKQoKICAgICAgICBPcHRpb25hbCBgc3RyaWN0JyBhcmd1bWVudCB3aGVuIEZhbHNlIGFkZHMgYSBidW5jaCBvZiBjb21tb25seSBmb3VuZCwKICAgICAgICBidXQgbm9uLXN0YW5kYXJkIHR5cGVzLgogICAgICAgICIiIgogICAgICAgIHVybCA9IG9zLmZzcGF0aCh1cmwpCiAgICAgICAgc2NoZW1lLCB1cmwgPSB1cmxsaWIucGFyc2UuX3NwbGl0dHlwZSh1cmwpCiAgICAgICAgaWYgc2NoZW1lID09ICdkYXRhJzoKICAgICAgICAgICAgIyBzeW50YXggb2YgZGF0YSBVUkxzOgogICAgICAgICAgICAjIGRhdGF1cmwgICA6PSAiZGF0YToiIFsgbWVkaWF0eXBlIF0gWyAiO2Jhc2U2NCIgXSAiLCIgZGF0YQogICAgICAgICAgICAjIG1lZGlhdHlwZSA6PSBbIHR5cGUgIi8iIHN1YnR5cGUgXSAqKCAiOyIgcGFyYW1ldGVyICkKICAgICAgICAgICAgIyBkYXRhICAgICAgOj0gKnVybGNoYXIKICAgICAgICAgICAgIyBwYXJhbWV0ZXIgOj0gYXR0cmlidXRlICI9IiB2YWx1ZQogICAgICAgICAgICAjIHR5cGUvc3VidHlwZSBkZWZhdWx0cyB0byAidGV4dC9wbGFpbiIKICAgICAgICAgICAgY29tbWEgPSB1cmwuZmluZCgnLCcpCiAgICAgICAgICAgIGlmIGNvbW1hIDwgMDoKICAgICAgICAgICAgICAgICMgYmFkIGRhdGEgVVJMCiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQogICAgICAgICAgICBzZW1pID0gdXJsLmZpbmQoJzsnLCAwLCBjb21tYSkKICAgICAgICAgICAgaWYgc2VtaSA+PSAwOgogICAgICAgICAgICAgICAgdHlwZSA9IHVybFs6c2VtaV0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHR5cGUgPSB1cmxbOmNvbW1hXQogICAgICAgICAgICBpZiAnPScgaW4gdHlwZSBvciAnLycgbm90IGluIHR5cGU6CiAgICAgICAgICAgICAgICB0eXBlID0gJ3RleHQvcGxhaW4nCiAgICAgICAgICAgIHJldHVybiB0eXBlLCBOb25lICAgICAgICAgICAjIG5ldmVyIGNvbXByZXNzZWQsIHNvIGVuY29kaW5nIGlzIE5vbmUKICAgICAgICBiYXNlLCBleHQgPSBwb3NpeHBhdGguc3BsaXRleHQodXJsKQogICAgICAgIHdoaWxlIChleHRfbG93ZXIgOj0gZXh0Lmxvd2VyKCkpIGluIHNlbGYuc3VmZml4X21hcDoKICAgICAgICAgICAgYmFzZSwgZXh0ID0gcG9zaXhwYXRoLnNwbGl0ZXh0KGJhc2UgKyBzZWxmLnN1ZmZpeF9tYXBbZXh0X2xvd2VyXSkKICAgICAgICAjIGVuY29kaW5nc19tYXAgaXMgY2FzZSBzZW5zaXRpdmUKICAgICAgICBpZiBleHQgaW4gc2VsZi5lbmNvZGluZ3NfbWFwOgogICAgICAgICAgICBlbmNvZGluZyA9IHNlbGYuZW5jb2RpbmdzX21hcFtleHRdCiAgICAgICAgICAgIGJhc2UsIGV4dCA9IHBvc2l4cGF0aC5zcGxpdGV4dChiYXNlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGVuY29kaW5nID0gTm9uZQogICAgICAgIGV4dCA9IGV4dC5sb3dlcigpCiAgICAgICAgdHlwZXNfbWFwID0gc2VsZi50eXBlc19tYXBbVHJ1ZV0KICAgICAgICBpZiBleHQgaW4gdHlwZXNfbWFwOgogICAgICAgICAgICByZXR1cm4gdHlwZXNfbWFwW2V4dF0sIGVuY29kaW5nCiAgICAgICAgZWxpZiBzdHJpY3Q6CiAgICAgICAgICAgIHJldHVybiBOb25lLCBlbmNvZGluZwogICAgICAgIHR5cGVzX21hcCA9IHNlbGYudHlwZXNfbWFwW0ZhbHNlXQogICAgICAgIGlmIGV4dCBpbiB0eXBlc19tYXA6CiAgICAgICAgICAgIHJldHVybiB0eXBlc19tYXBbZXh0XSwgZW5jb2RpbmcKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZSwgZW5jb2RpbmcKCiAgICBkZWYgZ3Vlc3NfYWxsX2V4dGVuc2lvbnMoc2VsZiwgdHlwZSwgc3RyaWN0PVRydWUpOgogICAgICAgICIiIkd1ZXNzIHRoZSBleHRlbnNpb25zIGZvciBhIGZpbGUgYmFzZWQgb24gaXRzIE1JTUUgdHlwZS4KCiAgICAgICAgUmV0dXJuIHZhbHVlIGlzIGEgbGlzdCBvZiBzdHJpbmdzIGdpdmluZyB0aGUgcG9zc2libGUgZmlsZW5hbWUKICAgICAgICBleHRlbnNpb25zLCBpbmNsdWRpbmcgdGhlIGxlYWRpbmcgZG90ICgnLicpLiAgVGhlIGV4dGVuc2lvbiBpcyBub3QKICAgICAgICBndWFyYW50ZWVkIHRvIGhhdmUgYmVlbiBhc3NvY2lhdGVkIHdpdGggYW55IHBhcnRpY3VsYXIgZGF0YSBzdHJlYW0sCiAgICAgICAgYnV0IHdvdWxkIGJlIG1hcHBlZCB0byB0aGUgTUlNRSB0eXBlIGB0eXBlJyBieSBndWVzc190eXBlKCkuCgogICAgICAgIE9wdGlvbmFsIGBzdHJpY3QnIGFyZ3VtZW50IHdoZW4gZmFsc2UgYWRkcyBhIGJ1bmNoIG9mIGNvbW1vbmx5IGZvdW5kLAogICAgICAgIGJ1dCBub24tc3RhbmRhcmQgdHlwZXMuCiAgICAgICAgIiIiCiAgICAgICAgdHlwZSA9IHR5cGUubG93ZXIoKQogICAgICAgIGV4dGVuc2lvbnMgPSBsaXN0KHNlbGYudHlwZXNfbWFwX2ludltUcnVlXS5nZXQodHlwZSwgW10pKQogICAgICAgIGlmIG5vdCBzdHJpY3Q6CiAgICAgICAgICAgIGZvciBleHQgaW4gc2VsZi50eXBlc19tYXBfaW52W0ZhbHNlXS5nZXQodHlwZSwgW10pOgogICAgICAgICAgICAgICAgaWYgZXh0IG5vdCBpbiBleHRlbnNpb25zOgogICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5kKGV4dCkKICAgICAgICByZXR1cm4gZXh0ZW5zaW9ucwoKICAgIGRlZiBndWVzc19leHRlbnNpb24oc2VsZiwgdHlwZSwgc3RyaWN0PVRydWUpOgogICAgICAgICIiIkd1ZXNzIHRoZSBleHRlbnNpb24gZm9yIGEgZmlsZSBiYXNlZCBvbiBpdHMgTUlNRSB0eXBlLgoKICAgICAgICBSZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgZ2l2aW5nIGEgZmlsZW5hbWUgZXh0ZW5zaW9uLAogICAgICAgIGluY2x1ZGluZyB0aGUgbGVhZGluZyBkb3QgKCcuJykuICBUaGUgZXh0ZW5zaW9uIGlzIG5vdAogICAgICAgIGd1YXJhbnRlZWQgdG8gaGF2ZSBiZWVuIGFzc29jaWF0ZWQgd2l0aCBhbnkgcGFydGljdWxhciBkYXRhCiAgICAgICAgc3RyZWFtLCBidXQgd291bGQgYmUgbWFwcGVkIHRvIHRoZSBNSU1FIHR5cGUgYHR5cGUnIGJ5CiAgICAgICAgZ3Vlc3NfdHlwZSgpLiAgSWYgbm8gZXh0ZW5zaW9uIGNhbiBiZSBndWVzc2VkIGZvciBgdHlwZScsIE5vbmUKICAgICAgICBpcyByZXR1cm5lZC4KCiAgICAgICAgT3B0aW9uYWwgYHN0cmljdCcgYXJndW1lbnQgd2hlbiBmYWxzZSBhZGRzIGEgYnVuY2ggb2YgY29tbW9ubHkgZm91bmQsCiAgICAgICAgYnV0IG5vbi1zdGFuZGFyZCB0eXBlcy4KICAgICAgICAiIiIKICAgICAgICBleHRlbnNpb25zID0gc2VsZi5ndWVzc19hbGxfZXh0ZW5zaW9ucyh0eXBlLCBzdHJpY3QpCiAgICAgICAgaWYgbm90IGV4dGVuc2lvbnM6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNbMF0KCiAgICBkZWYgcmVhZChzZWxmLCBmaWxlbmFtZSwgc3RyaWN0PVRydWUpOgogICAgICAgICIiIgogICAgICAgIFJlYWQgYSBzaW5nbGUgbWltZS50eXBlcy1mb3JtYXQgZmlsZSwgc3BlY2lmaWVkIGJ5IHBhdGhuYW1lLgoKICAgICAgICBJZiBzdHJpY3QgaXMgdHJ1ZSwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0bwogICAgICAgIGxpc3Qgb2Ygc3RhbmRhcmQgdHlwZXMsIGVsc2UgdG8gdGhlIGxpc3Qgb2Ygbm9uLXN0YW5kYXJkCiAgICAgICAgdHlwZXMuCiAgICAgICAgIiIiCiAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoKICAgICAgICAgICAgc2VsZi5yZWFkZnAoZnAsIHN0cmljdCkKCiAgICBkZWYgcmVhZGZwKHNlbGYsIGZwLCBzdHJpY3Q9VHJ1ZSk6CiAgICAgICAgIiIiCiAgICAgICAgUmVhZCBhIHNpbmdsZSBtaW1lLnR5cGVzLWZvcm1hdCBmaWxlLgoKICAgICAgICBJZiBzdHJpY3QgaXMgdHJ1ZSwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0bwogICAgICAgIGxpc3Qgb2Ygc3RhbmRhcmQgdHlwZXMsIGVsc2UgdG8gdGhlIGxpc3Qgb2Ygbm9uLXN0YW5kYXJkCiAgICAgICAgdHlwZXMuCiAgICAgICAgIiIiCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB3b3JkcyA9IGxpbmUuc3BsaXQoKQogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4od29yZHMpKToKICAgICAgICAgICAgICAgIGlmIHdvcmRzW2ldWzBdID09ICcjJzoKICAgICAgICAgICAgICAgICAgICBkZWwgd29yZHNbaTpdCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgaWYgbm90IHdvcmRzOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgdHlwZSwgc3VmZml4ZXMgPSB3b3Jkc1swXSwgd29yZHNbMTpdCiAgICAgICAgICAgIGZvciBzdWZmIGluIHN1ZmZpeGVzOgogICAgICAgICAgICAgICAgc2VsZi5hZGRfdHlwZSh0eXBlLCAnLicgKyBzdWZmLCBzdHJpY3QpCgogICAgZGVmIHJlYWRfd2luZG93c19yZWdpc3RyeShzZWxmLCBzdHJpY3Q9VHJ1ZSk6CiAgICAgICAgIiIiCiAgICAgICAgTG9hZCB0aGUgTUlNRSB0eXBlcyBkYXRhYmFzZSBmcm9tIFdpbmRvd3MgcmVnaXN0cnkuCgogICAgICAgIElmIHN0cmljdCBpcyB0cnVlLCBpbmZvcm1hdGlvbiB3aWxsIGJlIGFkZGVkIHRvCiAgICAgICAgbGlzdCBvZiBzdGFuZGFyZCB0eXBlcywgZWxzZSB0byB0aGUgbGlzdCBvZiBub24tc3RhbmRhcmQKICAgICAgICB0eXBlcy4KICAgICAgICAiIiIKCiAgICAgICAgaWYgbm90IF9taW1ldHlwZXNfcmVhZF93aW5kb3dzX3JlZ2lzdHJ5IGFuZCBub3QgX3dpbnJlZzoKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGFkZF90eXBlID0gc2VsZi5hZGRfdHlwZQogICAgICAgIGlmIHN0cmljdDoKICAgICAgICAgICAgYWRkX3R5cGUgPSBsYW1iZGEgdHlwZSwgZXh0OiBzZWxmLmFkZF90eXBlKHR5cGUsIGV4dCwgVHJ1ZSkKCiAgICAgICAgIyBBY2NlbGVyYXRlZCBmdW5jdGlvbiBpZiBpdCBpcyBhdmFpbGFibGUKICAgICAgICBpZiBfbWltZXR5cGVzX3JlYWRfd2luZG93c19yZWdpc3RyeToKICAgICAgICAgICAgX21pbWV0eXBlc19yZWFkX3dpbmRvd3NfcmVnaXN0cnkoYWRkX3R5cGUpCiAgICAgICAgZWxpZiBfd2lucmVnOgogICAgICAgICAgICBzZWxmLl9yZWFkX3dpbmRvd3NfcmVnaXN0cnkoYWRkX3R5cGUpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX3JlYWRfd2luZG93c19yZWdpc3RyeShjbHMsIGFkZF90eXBlKToKICAgICAgICBkZWYgZW51bV90eXBlcyhtaW1lZGIpOgogICAgICAgICAgICBpID0gMAogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGN0eXBlID0gX3dpbnJlZy5FbnVtS2V5KG1pbWVkYiwgaSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlmICdcMCcgbm90IGluIGN0eXBlOgogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBjdHlwZQogICAgICAgICAgICAgICAgaSArPSAxCgogICAgICAgIHdpdGggX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DTEFTU0VTX1JPT1QsICcnKSBhcyBoa2NyOgogICAgICAgICAgICBmb3Igc3Via2V5bmFtZSBpbiBlbnVtX3R5cGVzKGhrY3IpOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHdpdGggX3dpbnJlZy5PcGVuS2V5KGhrY3IsIHN1YmtleW5hbWUpIGFzIHN1YmtleToKICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGNoZWNrIGZpbGUgZXh0ZW5zaW9ucwogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3Via2V5bmFtZS5zdGFydHN3aXRoKCIuIik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAjIHJhaXNlcyBPU0Vycm9yIGlmIG5vICdDb250ZW50IFR5cGUnIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbWV0eXBlLCBkYXRhdHlwZSA9IF93aW5yZWcuUXVlcnlWYWx1ZUV4KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Via2V5LCAnQ29udGVudCBUeXBlJykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YXR5cGUgIT0gX3dpbnJlZy5SRUdfU1o6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICBhZGRfdHlwZShtaW1ldHlwZSwgc3Via2V5bmFtZSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgpkZWYgZ3Vlc3NfdHlwZSh1cmwsIHN0cmljdD1UcnVlKToKICAgICIiIkd1ZXNzIHRoZSB0eXBlIG9mIGEgZmlsZSBiYXNlZCBvbiBpdHMgVVJMLgoKICAgIFJldHVybiB2YWx1ZSBpcyBhIHR1cGxlICh0eXBlLCBlbmNvZGluZykgd2hlcmUgdHlwZSBpcyBOb25lIGlmIHRoZQogICAgdHlwZSBjYW4ndCBiZSBndWVzc2VkIChubyBvciB1bmtub3duIHN1ZmZpeCkgb3IgYSBzdHJpbmcgb2YgdGhlCiAgICBmb3JtIHR5cGUvc3VidHlwZSwgdXNhYmxlIGZvciBhIE1JTUUgQ29udGVudC10eXBlIGhlYWRlcjsgYW5kCiAgICBlbmNvZGluZyBpcyBOb25lIGZvciBubyBlbmNvZGluZyBvciB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSB1c2VkCiAgICB0byBlbmNvZGUgKGUuZy4gY29tcHJlc3Mgb3IgZ3ppcCkuICBUaGUgbWFwcGluZ3MgYXJlIHRhYmxlCiAgICBkcml2ZW4uICBFbmNvZGluZyBzdWZmaXhlcyBhcmUgY2FzZSBzZW5zaXRpdmU7IHR5cGUgc3VmZml4ZXMgYXJlCiAgICBmaXJzdCB0cmllZCBjYXNlIHNlbnNpdGl2ZSwgdGhlbiBjYXNlIGluc2Vuc2l0aXZlLgoKICAgIFRoZSBzdWZmaXhlcyAudGd6LCAudGF6IGFuZCAudHogKGNhc2Ugc2Vuc2l0aXZlISkgYXJlIGFsbCBtYXBwZWQKICAgIHRvICIudGFyLmd6Ii4gIChUaGlzIGlzIHRhYmxlLWRyaXZlbiB0b28sIHVzaW5nIHRoZSBkaWN0aW9uYXJ5CiAgICBzdWZmaXhfbWFwKS4KCiAgICBPcHRpb25hbCBgc3RyaWN0JyBhcmd1bWVudCB3aGVuIGZhbHNlIGFkZHMgYSBidW5jaCBvZiBjb21tb25seSBmb3VuZCwgYnV0CiAgICBub24tc3RhbmRhcmQgdHlwZXMuCiAgICAiIiIKICAgIGlmIF9kYiBpcyBOb25lOgogICAgICAgIGluaXQoKQogICAgcmV0dXJuIF9kYi5ndWVzc190eXBlKHVybCwgc3RyaWN0KQoKCmRlZiBndWVzc19hbGxfZXh0ZW5zaW9ucyh0eXBlLCBzdHJpY3Q9VHJ1ZSk6CiAgICAiIiJHdWVzcyB0aGUgZXh0ZW5zaW9ucyBmb3IgYSBmaWxlIGJhc2VkIG9uIGl0cyBNSU1FIHR5cGUuCgogICAgUmV0dXJuIHZhbHVlIGlzIGEgbGlzdCBvZiBzdHJpbmdzIGdpdmluZyB0aGUgcG9zc2libGUgZmlsZW5hbWUKICAgIGV4dGVuc2lvbnMsIGluY2x1ZGluZyB0aGUgbGVhZGluZyBkb3QgKCcuJykuICBUaGUgZXh0ZW5zaW9uIGlzIG5vdAogICAgZ3VhcmFudGVlZCB0byBoYXZlIGJlZW4gYXNzb2NpYXRlZCB3aXRoIGFueSBwYXJ0aWN1bGFyIGRhdGEKICAgIHN0cmVhbSwgYnV0IHdvdWxkIGJlIG1hcHBlZCB0byB0aGUgTUlNRSB0eXBlIGB0eXBlJyBieQogICAgZ3Vlc3NfdHlwZSgpLiAgSWYgbm8gZXh0ZW5zaW9uIGNhbiBiZSBndWVzc2VkIGZvciBgdHlwZScsIE5vbmUKICAgIGlzIHJldHVybmVkLgoKICAgIE9wdGlvbmFsIGBzdHJpY3QnIGFyZ3VtZW50IHdoZW4gZmFsc2UgYWRkcyBhIGJ1bmNoIG9mIGNvbW1vbmx5IGZvdW5kLAogICAgYnV0IG5vbi1zdGFuZGFyZCB0eXBlcy4KICAgICIiIgogICAgaWYgX2RiIGlzIE5vbmU6CiAgICAgICAgaW5pdCgpCiAgICByZXR1cm4gX2RiLmd1ZXNzX2FsbF9leHRlbnNpb25zKHR5cGUsIHN0cmljdCkKCmRlZiBndWVzc19leHRlbnNpb24odHlwZSwgc3RyaWN0PVRydWUpOgogICAgIiIiR3Vlc3MgdGhlIGV4dGVuc2lvbiBmb3IgYSBmaWxlIGJhc2VkIG9uIGl0cyBNSU1FIHR5cGUuCgogICAgUmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGdpdmluZyBhIGZpbGVuYW1lIGV4dGVuc2lvbiwgaW5jbHVkaW5nIHRoZQogICAgbGVhZGluZyBkb3QgKCcuJykuICBUaGUgZXh0ZW5zaW9uIGlzIG5vdCBndWFyYW50ZWVkIHRvIGhhdmUgYmVlbgogICAgYXNzb2NpYXRlZCB3aXRoIGFueSBwYXJ0aWN1bGFyIGRhdGEgc3RyZWFtLCBidXQgd291bGQgYmUgbWFwcGVkIHRvIHRoZQogICAgTUlNRSB0eXBlIGB0eXBlJyBieSBndWVzc190eXBlKCkuICBJZiBubyBleHRlbnNpb24gY2FuIGJlIGd1ZXNzZWQgZm9yCiAgICBgdHlwZScsIE5vbmUgaXMgcmV0dXJuZWQuCgogICAgT3B0aW9uYWwgYHN0cmljdCcgYXJndW1lbnQgd2hlbiBmYWxzZSBhZGRzIGEgYnVuY2ggb2YgY29tbW9ubHkgZm91bmQsCiAgICBidXQgbm9uLXN0YW5kYXJkIHR5cGVzLgogICAgIiIiCiAgICBpZiBfZGIgaXMgTm9uZToKICAgICAgICBpbml0KCkKICAgIHJldHVybiBfZGIuZ3Vlc3NfZXh0ZW5zaW9uKHR5cGUsIHN0cmljdCkKCmRlZiBhZGRfdHlwZSh0eXBlLCBleHQsIHN0cmljdD1UcnVlKToKICAgICIiIkFkZCBhIG1hcHBpbmcgYmV0d2VlbiBhIHR5cGUgYW5kIGFuIGV4dGVuc2lvbi4KCiAgICBXaGVuIHRoZSBleHRlbnNpb24gaXMgYWxyZWFkeSBrbm93biwgdGhlIG5ldwogICAgdHlwZSB3aWxsIHJlcGxhY2UgdGhlIG9sZCBvbmUuIFdoZW4gdGhlIHR5cGUKICAgIGlzIGFscmVhZHkga25vd24gdGhlIGV4dGVuc2lvbiB3aWxsIGJlIGFkZGVkCiAgICB0byB0aGUgbGlzdCBvZiBrbm93biBleHRlbnNpb25zLgoKICAgIElmIHN0cmljdCBpcyB0cnVlLCBpbmZvcm1hdGlvbiB3aWxsIGJlIGFkZGVkIHRvCiAgICBsaXN0IG9mIHN0YW5kYXJkIHR5cGVzLCBlbHNlIHRvIHRoZSBsaXN0IG9mIG5vbi1zdGFuZGFyZAogICAgdHlwZXMuCiAgICAiIiIKICAgIGlmIF9kYiBpcyBOb25lOgogICAgICAgIGluaXQoKQogICAgcmV0dXJuIF9kYi5hZGRfdHlwZSh0eXBlLCBleHQsIHN0cmljdCkKCgpkZWYgaW5pdChmaWxlcz1Ob25lKToKICAgIGdsb2JhbCBzdWZmaXhfbWFwLCB0eXBlc19tYXAsIGVuY29kaW5nc19tYXAsIGNvbW1vbl90eXBlcwogICAgZ2xvYmFsIGluaXRlZCwgX2RiCiAgICBpbml0ZWQgPSBUcnVlICAgICMgc28gdGhhdCBNaW1lVHlwZXMuX19pbml0X18oKSBkb2Vzbid0IGNhbGwgdXMgYWdhaW4KCiAgICBpZiBmaWxlcyBpcyBOb25lIG9yIF9kYiBpcyBOb25lOgogICAgICAgIGRiID0gTWltZVR5cGVzKCkKICAgICAgICAjIFF1aWNrIHJldHVybiBpZiBub3Qgc3VwcG9ydGVkCiAgICAgICAgZGIucmVhZF93aW5kb3dzX3JlZ2lzdHJ5KCkKCiAgICAgICAgaWYgZmlsZXMgaXMgTm9uZToKICAgICAgICAgICAgZmlsZXMgPSBrbm93bmZpbGVzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZmlsZXMgPSBrbm93bmZpbGVzICsgbGlzdChmaWxlcykKICAgIGVsc2U6CiAgICAgICAgZGIgPSBfZGIKCiAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlKToKICAgICAgICAgICAgZGIucmVhZChmaWxlKQogICAgZW5jb2RpbmdzX21hcCA9IGRiLmVuY29kaW5nc19tYXAKICAgIHN1ZmZpeF9tYXAgPSBkYi5zdWZmaXhfbWFwCiAgICB0eXBlc19tYXAgPSBkYi50eXBlc19tYXBbVHJ1ZV0KICAgIGNvbW1vbl90eXBlcyA9IGRiLnR5cGVzX21hcFtGYWxzZV0KICAgICMgTWFrZSB0aGUgREIgYSBnbG9iYWwgdmFyaWFibGUgbm93IHRoYXQgaXQgaXMgZnVsbHkgaW5pdGlhbGl6ZWQKICAgIF9kYiA9IGRiCgoKZGVmIHJlYWRfbWltZV90eXBlcyhmaWxlKToKICAgIHRyeToKICAgICAgICBmID0gb3BlbihmaWxlLCBlbmNvZGluZz0ndXRmLTgnKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIHdpdGggZjoKICAgICAgICBkYiA9IE1pbWVUeXBlcygpCiAgICAgICAgZGIucmVhZGZwKGYsIFRydWUpCiAgICAgICAgcmV0dXJuIGRiLnR5cGVzX21hcFtUcnVlXQoKCmRlZiBfZGVmYXVsdF9taW1lX3R5cGVzKCk6CiAgICBnbG9iYWwgc3VmZml4X21hcCwgX3N1ZmZpeF9tYXBfZGVmYXVsdAogICAgZ2xvYmFsIGVuY29kaW5nc19tYXAsIF9lbmNvZGluZ3NfbWFwX2RlZmF1bHQKICAgIGdsb2JhbCB0eXBlc19tYXAsIF90eXBlc19tYXBfZGVmYXVsdAogICAgZ2xvYmFsIGNvbW1vbl90eXBlcywgX2NvbW1vbl90eXBlc19kZWZhdWx0CgogICAgc3VmZml4X21hcCA9IF9zdWZmaXhfbWFwX2RlZmF1bHQgPSB7CiAgICAgICAgJy5zdmd6JzogJy5zdmcuZ3onLAogICAgICAgICcudGd6JzogJy50YXIuZ3onLAogICAgICAgICcudGF6JzogJy50YXIuZ3onLAogICAgICAgICcudHonOiAnLnRhci5neicsCiAgICAgICAgJy50YnoyJzogJy50YXIuYnoyJywKICAgICAgICAnLnR4eic6ICcudGFyLnh6JywKICAgICAgICB9CgogICAgZW5jb2RpbmdzX21hcCA9IF9lbmNvZGluZ3NfbWFwX2RlZmF1bHQgPSB7CiAgICAgICAgJy5neic6ICdnemlwJywKICAgICAgICAnLlonOiAnY29tcHJlc3MnLAogICAgICAgICcuYnoyJzogJ2J6aXAyJywKICAgICAgICAnLnh6JzogJ3h6JywKICAgICAgICAnLmJyJzogJ2JyJywKICAgICAgICB9CgogICAgIyBCZWZvcmUgYWRkaW5nIG5ldyB0eXBlcywgbWFrZSBzdXJlIHRoZXkgYXJlIGVpdGhlciByZWdpc3RlcmVkIHdpdGggSUFOQSwKICAgICMgYXQgaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcwogICAgIyBvciBleHRlbnNpb25zLCBpLmUuIHVzaW5nIHRoZSB4LSBwcmVmaXgKCiAgICAjIElmIHlvdSBhZGQgdG8gdGhlc2UsIHBsZWFzZSBrZWVwIHRoZW0gc29ydGVkIGJ5IG1pbWUgdHlwZS4KICAgICMgTWFrZSBzdXJlIHRoZSBlbnRyeSB3aXRoIHRoZSBwcmVmZXJyZWQgZmlsZSBleHRlbnNpb24gZm9yIGEgcGFydGljdWxhciBtaW1lIHR5cGUKICAgICMgYXBwZWFycyBiZWZvcmUgYW55IG90aGVycyBvZiB0aGUgc2FtZSBtaW1ldHlwZS4KICAgIHR5cGVzX21hcCA9IF90eXBlc19tYXBfZGVmYXVsdCA9IHsKICAgICAgICAnLmpzJyAgICAgOiAnYXBwbGljYXRpb24vamF2YXNjcmlwdCcsCiAgICAgICAgJy5tanMnICAgIDogJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnLAogICAgICAgICcuanNvbicgICA6ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAnLndlYm1hbmlmZXN0JzogJ2FwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24nLAogICAgICAgICcuZG9jJyAgICA6ICdhcHBsaWNhdGlvbi9tc3dvcmQnLAogICAgICAgICcuZG90JyAgICA6ICdhcHBsaWNhdGlvbi9tc3dvcmQnLAogICAgICAgICcud2l6JyAgICA6ICdhcHBsaWNhdGlvbi9tc3dvcmQnLAogICAgICAgICcubnEnICAgICA6ICdhcHBsaWNhdGlvbi9uLXF1YWRzJywKICAgICAgICAnLm50JyAgICAgOiAnYXBwbGljYXRpb24vbi10cmlwbGVzJywKICAgICAgICAnLmJpbicgICAgOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnLmEnICAgICAgOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnLmRsbCcgICAgOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnLmV4ZScgICAgOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnLm8nICAgICAgOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnLm9iaicgICAgOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnLnNvJyAgICAgOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnLm9kYScgICAgOiAnYXBwbGljYXRpb24vb2RhJywKICAgICAgICAnLnBkZicgICAgOiAnYXBwbGljYXRpb24vcGRmJywKICAgICAgICAnLnA3YycgICAgOiAnYXBwbGljYXRpb24vcGtjczctbWltZScsCiAgICAgICAgJy5wcycgICAgIDogJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnLAogICAgICAgICcuYWknICAgICA6ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAnLmVwcycgICAgOiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcsCiAgICAgICAgJy50cmlnJyAgIDogJ2FwcGxpY2F0aW9uL3RyaWcnLAogICAgICAgICcubTN1JyAgICA6ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCcsCiAgICAgICAgJy5tM3U4JyAgIDogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJywKICAgICAgICAnLnhscycgICAgOiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAnLnhsYicgICAgOiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAnLnBwdCcgICAgOiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLAogICAgICAgICcucG90JyAgICA6ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsCiAgICAgICAgJy5wcGEnICAgIDogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywKICAgICAgICAnLnBwcycgICAgOiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLAogICAgICAgICcucHd6JyAgICA6ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsCiAgICAgICAgJy53YXNtJyAgIDogJ2FwcGxpY2F0aW9uL3dhc20nLAogICAgICAgICcuYmNwaW8nICA6ICdhcHBsaWNhdGlvbi94LWJjcGlvJywKICAgICAgICAnLmNwaW8nICAgOiAnYXBwbGljYXRpb24veC1jcGlvJywKICAgICAgICAnLmNzaCcgICAgOiAnYXBwbGljYXRpb24veC1jc2gnLAogICAgICAgICcuZHZpJyAgICA6ICdhcHBsaWNhdGlvbi94LWR2aScsCiAgICAgICAgJy5ndGFyJyAgIDogJ2FwcGxpY2F0aW9uL3gtZ3RhcicsCiAgICAgICAgJy5oZGYnICAgIDogJ2FwcGxpY2F0aW9uL3gtaGRmJywKICAgICAgICAnLmg1JyAgICAgOiAnYXBwbGljYXRpb24veC1oZGY1JywKICAgICAgICAnLmxhdGV4JyAgOiAnYXBwbGljYXRpb24veC1sYXRleCcsCiAgICAgICAgJy5taWYnICAgIDogJ2FwcGxpY2F0aW9uL3gtbWlmJywKICAgICAgICAnLmNkZicgICAgOiAnYXBwbGljYXRpb24veC1uZXRjZGYnLAogICAgICAgICcubmMnICAgICA6ICdhcHBsaWNhdGlvbi94LW5ldGNkZicsCiAgICAgICAgJy5wMTInICAgIDogJ2FwcGxpY2F0aW9uL3gtcGtjczEyJywKICAgICAgICAnLnBmeCcgICAgOiAnYXBwbGljYXRpb24veC1wa2NzMTInLAogICAgICAgICcucmFtJyAgICA6ICdhcHBsaWNhdGlvbi94LXBuLXJlYWxhdWRpbycsCiAgICAgICAgJy5weWMnICAgIDogJ2FwcGxpY2F0aW9uL3gtcHl0aG9uLWNvZGUnLAogICAgICAgICcucHlvJyAgICA6ICdhcHBsaWNhdGlvbi94LXB5dGhvbi1jb2RlJywKICAgICAgICAnLnNoJyAgICAgOiAnYXBwbGljYXRpb24veC1zaCcsCiAgICAgICAgJy5zaGFyJyAgIDogJ2FwcGxpY2F0aW9uL3gtc2hhcicsCiAgICAgICAgJy5zd2YnICAgIDogJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJywKICAgICAgICAnLnN2NGNwaW8nOiAnYXBwbGljYXRpb24veC1zdjRjcGlvJywKICAgICAgICAnLnN2NGNyYycgOiAnYXBwbGljYXRpb24veC1zdjRjcmMnLAogICAgICAgICcudGFyJyAgICA6ICdhcHBsaWNhdGlvbi94LXRhcicsCiAgICAgICAgJy50Y2wnICAgIDogJ2FwcGxpY2F0aW9uL3gtdGNsJywKICAgICAgICAnLnRleCcgICAgOiAnYXBwbGljYXRpb24veC10ZXgnLAogICAgICAgICcudGV4aScgICA6ICdhcHBsaWNhdGlvbi94LXRleGluZm8nLAogICAgICAgICcudGV4aW5mbyc6ICdhcHBsaWNhdGlvbi94LXRleGluZm8nLAogICAgICAgICcucm9mZicgICA6ICdhcHBsaWNhdGlvbi94LXRyb2ZmJywKICAgICAgICAnLnQnICAgICAgOiAnYXBwbGljYXRpb24veC10cm9mZicsCiAgICAgICAgJy50cicgICAgIDogJ2FwcGxpY2F0aW9uL3gtdHJvZmYnLAogICAgICAgICcubWFuJyAgICA6ICdhcHBsaWNhdGlvbi94LXRyb2ZmLW1hbicsCiAgICAgICAgJy5tZScgICAgIDogJ2FwcGxpY2F0aW9uL3gtdHJvZmYtbWUnLAogICAgICAgICcubXMnICAgICA6ICdhcHBsaWNhdGlvbi94LXRyb2ZmLW1zJywKICAgICAgICAnLnVzdGFyJyAgOiAnYXBwbGljYXRpb24veC11c3RhcicsCiAgICAgICAgJy5zcmMnICAgIDogJ2FwcGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2UnLAogICAgICAgICcueHNsJyAgICA6ICdhcHBsaWNhdGlvbi94bWwnLAogICAgICAgICcucmRmJyAgICA6ICdhcHBsaWNhdGlvbi94bWwnLAogICAgICAgICcud3NkbCcgICA6ICdhcHBsaWNhdGlvbi94bWwnLAogICAgICAgICcueHBkbCcgICA6ICdhcHBsaWNhdGlvbi94bWwnLAogICAgICAgICcuemlwJyAgICA6ICdhcHBsaWNhdGlvbi96aXAnLAogICAgICAgICcuM2dwJyAgICA6ICdhdWRpby8zZ3BwJywKICAgICAgICAnLjNncHAnICAgOiAnYXVkaW8vM2dwcCcsCiAgICAgICAgJy4zZzInICAgIDogJ2F1ZGlvLzNncHAyJywKICAgICAgICAnLjNncHAyJyAgOiAnYXVkaW8vM2dwcDInLAogICAgICAgICcuYWFjJyAgICA6ICdhdWRpby9hYWMnLAogICAgICAgICcuYWR0cycgICA6ICdhdWRpby9hYWMnLAogICAgICAgICcubG9hcycgICA6ICdhdWRpby9hYWMnLAogICAgICAgICcuYXNzJyAgICA6ICdhdWRpby9hYWMnLAogICAgICAgICcuYXUnICAgICA6ICdhdWRpby9iYXNpYycsCiAgICAgICAgJy5zbmQnICAgIDogJ2F1ZGlvL2Jhc2ljJywKICAgICAgICAnLm1wMycgICAgOiAnYXVkaW8vbXBlZycsCiAgICAgICAgJy5tcDInICAgIDogJ2F1ZGlvL21wZWcnLAogICAgICAgICcub3B1cycgICA6ICdhdWRpby9vcHVzJywKICAgICAgICAnLmFpZicgICAgOiAnYXVkaW8veC1haWZmJywKICAgICAgICAnLmFpZmMnICAgOiAnYXVkaW8veC1haWZmJywKICAgICAgICAnLmFpZmYnICAgOiAnYXVkaW8veC1haWZmJywKICAgICAgICAnLnJhJyAgICAgOiAnYXVkaW8veC1wbi1yZWFsYXVkaW8nLAogICAgICAgICcud2F2JyAgICA6ICdhdWRpby94LXdhdicsCiAgICAgICAgJy5hdmlmJyAgIDogJ2ltYWdlL2F2aWYnLAogICAgICAgICcuYm1wJyAgICA6ICdpbWFnZS9ibXAnLAogICAgICAgICcuZ2lmJyAgICA6ICdpbWFnZS9naWYnLAogICAgICAgICcuaWVmJyAgICA6ICdpbWFnZS9pZWYnLAogICAgICAgICcuanBnJyAgICA6ICdpbWFnZS9qcGVnJywKICAgICAgICAnLmpwZScgICAgOiAnaW1hZ2UvanBlZycsCiAgICAgICAgJy5qcGVnJyAgIDogJ2ltYWdlL2pwZWcnLAogICAgICAgICcuaGVpYycgICA6ICdpbWFnZS9oZWljJywKICAgICAgICAnLmhlaWYnICAgOiAnaW1hZ2UvaGVpZicsCiAgICAgICAgJy5wbmcnICAgIDogJ2ltYWdlL3BuZycsCiAgICAgICAgJy5zdmcnICAgIDogJ2ltYWdlL3N2Zyt4bWwnLAogICAgICAgICcudGlmZicgICA6ICdpbWFnZS90aWZmJywKICAgICAgICAnLnRpZicgICAgOiAnaW1hZ2UvdGlmZicsCiAgICAgICAgJy5pY28nICAgIDogJ2ltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbicsCiAgICAgICAgJy5yYXMnICAgIDogJ2ltYWdlL3gtY211LXJhc3RlcicsCiAgICAgICAgJy5wbm0nICAgIDogJ2ltYWdlL3gtcG9ydGFibGUtYW55bWFwJywKICAgICAgICAnLnBibScgICAgOiAnaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAnLAogICAgICAgICcucGdtJyAgICA6ICdpbWFnZS94LXBvcnRhYmxlLWdyYXltYXAnLAogICAgICAgICcucHBtJyAgICA6ICdpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCcsCiAgICAgICAgJy5yZ2InICAgIDogJ2ltYWdlL3gtcmdiJywKICAgICAgICAnLnhibScgICAgOiAnaW1hZ2UveC14Yml0bWFwJywKICAgICAgICAnLnhwbScgICAgOiAnaW1hZ2UveC14cGl4bWFwJywKICAgICAgICAnLnh3ZCcgICAgOiAnaW1hZ2UveC14d2luZG93ZHVtcCcsCiAgICAgICAgJy5lbWwnICAgIDogJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAnLm1odCcgICAgOiAnbWVzc2FnZS9yZmM4MjInLAogICAgICAgICcubWh0bWwnICA6ICdtZXNzYWdlL3JmYzgyMicsCiAgICAgICAgJy5ud3MnICAgIDogJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAnLmNzcycgICAgOiAndGV4dC9jc3MnLAogICAgICAgICcuY3N2JyAgICA6ICd0ZXh0L2NzdicsCiAgICAgICAgJy5odG1sJyAgIDogJ3RleHQvaHRtbCcsCiAgICAgICAgJy5odG0nICAgIDogJ3RleHQvaHRtbCcsCiAgICAgICAgJy5uMycgICAgIDogJ3RleHQvbjMnLAogICAgICAgICcudHh0JyAgICA6ICd0ZXh0L3BsYWluJywKICAgICAgICAnLmJhdCcgICAgOiAndGV4dC9wbGFpbicsCiAgICAgICAgJy5jJyAgICAgIDogJ3RleHQvcGxhaW4nLAogICAgICAgICcuaCcgICAgICA6ICd0ZXh0L3BsYWluJywKICAgICAgICAnLmtzaCcgICAgOiAndGV4dC9wbGFpbicsCiAgICAgICAgJy5wbCcgICAgIDogJ3RleHQvcGxhaW4nLAogICAgICAgICcuc3J0JyAgICA6ICd0ZXh0L3BsYWluJywKICAgICAgICAnLnJ0eCcgICAgOiAndGV4dC9yaWNodGV4dCcsCiAgICAgICAgJy50c3YnICAgIDogJ3RleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMnLAogICAgICAgICcudnR0JyAgICA6ICd0ZXh0L3Z0dCcsCiAgICAgICAgJy5weScgICAgIDogJ3RleHQveC1weXRob24nLAogICAgICAgICcuZXR4JyAgICA6ICd0ZXh0L3gtc2V0ZXh0JywKICAgICAgICAnLnNnbScgICAgOiAndGV4dC94LXNnbWwnLAogICAgICAgICcuc2dtbCcgICA6ICd0ZXh0L3gtc2dtbCcsCiAgICAgICAgJy52Y2YnICAgIDogJ3RleHQveC12Y2FyZCcsCiAgICAgICAgJy54bWwnICAgIDogJ3RleHQveG1sJywKICAgICAgICAnLm1wNCcgICAgOiAndmlkZW8vbXA0JywKICAgICAgICAnLm1wZWcnICAgOiAndmlkZW8vbXBlZycsCiAgICAgICAgJy5tMXYnICAgIDogJ3ZpZGVvL21wZWcnLAogICAgICAgICcubXBhJyAgICA6ICd2aWRlby9tcGVnJywKICAgICAgICAnLm1wZScgICAgOiAndmlkZW8vbXBlZycsCiAgICAgICAgJy5tcGcnICAgIDogJ3ZpZGVvL21wZWcnLAogICAgICAgICcubW92JyAgICA6ICd2aWRlby9xdWlja3RpbWUnLAogICAgICAgICcucXQnICAgICA6ICd2aWRlby9xdWlja3RpbWUnLAogICAgICAgICcud2VibScgICA6ICd2aWRlby93ZWJtJywKICAgICAgICAnLmF2aScgICAgOiAndmlkZW8veC1tc3ZpZGVvJywKICAgICAgICAnLm1vdmllJyAgOiAndmlkZW8veC1zZ2ktbW92aWUnLAogICAgICAgIH0KCiAgICAjIFRoZXNlIGFyZSBub24tc3RhbmRhcmQgdHlwZXMsIGNvbW1vbmx5IGZvdW5kIGluIHRoZSB3aWxkLiAgVGhleSB3aWxsCiAgICAjIG9ubHkgbWF0Y2ggaWYgc3RyaWN0PTAgZmxhZyBpcyBnaXZlbiB0byB0aGUgQVBJIG1ldGhvZHMuCgogICAgIyBQbGVhc2Ugc29ydCB0aGVzZSB0b28KICAgIGNvbW1vbl90eXBlcyA9IF9jb21tb25fdHlwZXNfZGVmYXVsdCA9IHsKICAgICAgICAnLnJ0ZicgOiAnYXBwbGljYXRpb24vcnRmJywKICAgICAgICAnLm1pZGknOiAnYXVkaW8vbWlkaScsCiAgICAgICAgJy5taWQnIDogJ2F1ZGlvL21pZGknLAogICAgICAgICcuanBnJyA6ICdpbWFnZS9qcGcnLAogICAgICAgICcucGljdCc6ICdpbWFnZS9waWN0JywKICAgICAgICAnLnBjdCcgOiAnaW1hZ2UvcGljdCcsCiAgICAgICAgJy5waWMnIDogJ2ltYWdlL3BpY3QnLAogICAgICAgICcud2VicCc6ICdpbWFnZS93ZWJwJywKICAgICAgICAnLnh1bCcgOiAndGV4dC94dWwnLAogICAgICAgIH0KCgpfZGVmYXVsdF9taW1lX3R5cGVzKCkKCgpkZWYgX21haW4oKToKICAgIGltcG9ydCBnZXRvcHQKCiAgICBVU0FHRSA9ICIiIlwKVXNhZ2U6IG1pbWV0eXBlcy5weSBbb3B0aW9uc10gdHlwZQoKT3B0aW9uczoKICAgIC0taGVscCAvIC1oICAgICAgIC0tIHByaW50IHRoaXMgbWVzc2FnZSBhbmQgZXhpdAogICAgLS1sZW5pZW50IC8gLWwgICAgLS0gYWRkaXRpb25hbGx5IHNlYXJjaCBvZiBzb21lIGNvbW1vbiwgYnV0IG5vbi1zdGFuZGFyZAogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuCiAgICAtLWV4dGVuc2lvbiAvIC1lICAtLSBndWVzcyBleHRlbnNpb24gaW5zdGVhZCBvZiB0eXBlCgpNb3JlIHRoYW4gb25lIHR5cGUgYXJndW1lbnQgbWF5IGJlIGdpdmVuLgoiIiIKCiAgICBkZWYgdXNhZ2UoY29kZSwgbXNnPScnKToKICAgICAgICBwcmludChVU0FHRSkKICAgICAgICBpZiBtc2c6IHByaW50KG1zZykKICAgICAgICBzeXMuZXhpdChjb2RlKQoKICAgIHRyeToKICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdobGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaGVscCcsICdsZW5pZW50JywgJ2V4dGVuc2lvbiddKQogICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CiAgICAgICAgdXNhZ2UoMSwgbXNnKQoKICAgIHN0cmljdCA9IDEKICAgIGV4dGVuc2lvbiA9IDAKICAgIGZvciBvcHQsIGFyZyBpbiBvcHRzOgogICAgICAgIGlmIG9wdCBpbiAoJy1oJywgJy0taGVscCcpOgogICAgICAgICAgICB1c2FnZSgwKQogICAgICAgIGVsaWYgb3B0IGluICgnLWwnLCAnLS1sZW5pZW50Jyk6CiAgICAgICAgICAgIHN0cmljdCA9IDAKICAgICAgICBlbGlmIG9wdCBpbiAoJy1lJywgJy0tZXh0ZW5zaW9uJyk6CiAgICAgICAgICAgIGV4dGVuc2lvbiA9IDEKICAgIGZvciBndHlwZSBpbiBhcmdzOgogICAgICAgIGlmIGV4dGVuc2lvbjoKICAgICAgICAgICAgZ3Vlc3MgPSBndWVzc19leHRlbnNpb24oZ3R5cGUsIHN0cmljdCkKICAgICAgICAgICAgaWYgbm90IGd1ZXNzOiBwcmludCgiSSBkb24ndCBrbm93IGFueXRoaW5nIGFib3V0IHR5cGUiLCBndHlwZSkKICAgICAgICAgICAgZWxzZTogcHJpbnQoZ3Vlc3MpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZ3Vlc3MsIGVuY29kaW5nID0gZ3Vlc3NfdHlwZShndHlwZSwgc3RyaWN0KQogICAgICAgICAgICBpZiBub3QgZ3Vlc3M6IHByaW50KCJJIGRvbid0IGtub3cgYW55dGhpbmcgYWJvdXQgdHlwZSIsIGd0eXBlKQogICAgICAgICAgICBlbHNlOiBwcmludCgndHlwZTonLCBndWVzcywgJ2VuY29kaW5nOicsIGVuY29kaW5nKQoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBfbWFpbigpClBLAwQUAAAAAAACIKNWrnbY2pNcAACTXAAADwAAAG1vZHVsZWZpbmRlci5weSIiIkZpbmQgbW9kdWxlcyB1c2VkIGJ5IGEgc2NyaXB0LCB1c2luZyBpbnRyb3NwZWN0aW9uLiIiIgoKaW1wb3J0IGRpcwppbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwKaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKaW1wb3J0IG1hcnNoYWwKaW1wb3J0IG9zCmltcG9ydCBpbwppbXBvcnQgc3lzCgojIE9sZCBpbXAgY29uc3RhbnRzOgoKX1NFQVJDSF9FUlJPUiA9IDAKX1BZX1NPVVJDRSA9IDEKX1BZX0NPTVBJTEVEID0gMgpfQ19FWFRFTlNJT04gPSAzCl9QS0dfRElSRUNUT1JZID0gNQpfQ19CVUlMVElOID0gNgpfUFlfRlJPWkVOID0gNwoKIyBNb2R1bGVmaW5kZXIgZG9lcyBhIGdvb2Qgam9iIGF0IHNpbXVsYXRpbmcgUHl0aG9uJ3MsIGJ1dCBpdCBjYW4gbm90CiMgaGFuZGxlIF9fcGF0aF9fIG1vZGlmaWNhdGlvbnMgcGFja2FnZXMgbWFrZSBhdCBydW50aW1lLiAgVGhlcmVmb3JlIHRoZXJlCiMgaXMgYSBtZWNoYW5pc20gd2hlcmVieSB5b3UgY2FuIHJlZ2lzdGVyIGV4dHJhIHBhdGhzIGluIHRoaXMgbWFwIGZvciBhCiMgcGFja2FnZSwgYW5kIGl0IHdpbGwgYmUgaG9ub3JlZC4KCiMgTm90ZSB0aGlzIGlzIGEgbWFwcGluZyBpcyBsaXN0cyBvZiBwYXRocy4KcGFja2FnZVBhdGhNYXAgPSB7fQoKIyBBIFB1YmxpYyBpbnRlcmZhY2UKZGVmIEFkZFBhY2thZ2VQYXRoKHBhY2thZ2VuYW1lLCBwYXRoKToKICAgIHBhY2thZ2VQYXRoTWFwLnNldGRlZmF1bHQocGFja2FnZW5hbWUsIFtdKS5hcHBlbmQocGF0aCkKCnJlcGxhY2VQYWNrYWdlTWFwID0ge30KCiMgVGhpcyBSZXBsYWNlUGFja2FnZSBtZWNoYW5pc20gYWxsb3dzIG1vZHVsZWZpbmRlciB0byB3b3JrIGFyb3VuZAojIHNpdHVhdGlvbnMgaW4gd2hpY2ggYSBwYWNrYWdlIGluamVjdHMgaXRzZWxmIHVuZGVyIHRoZSBuYW1lCiMgb2YgYW5vdGhlciBwYWNrYWdlIGludG8gc3lzLm1vZHVsZXMgYXQgcnVudGltZSBieSBjYWxsaW5nCiMgUmVwbGFjZVBhY2thZ2UoInJlYWxfcGFja2FnZV9uYW1lIiwgImZha2VkX3BhY2thZ2VfbmFtZSIpCiMgYmVmb3JlIHJ1bm5pbmcgTW9kdWxlRmluZGVyLgoKZGVmIFJlcGxhY2VQYWNrYWdlKG9sZG5hbWUsIG5ld25hbWUpOgogICAgcmVwbGFjZVBhY2thZ2VNYXBbb2xkbmFtZV0gPSBuZXduYW1lCgoKZGVmIF9maW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOgogICAgIiIiQW4gaW1wb3J0bGliIHJlaW1wbGVtZW50YXRpb24gb2YgaW1wLmZpbmRfbW9kdWxlIChmb3Igb3VyIHB1cnBvc2VzKS4iIiIKCiAgICAjIEl0J3MgbmVjZXNzYXJ5IHRvIGNsZWFyIHRoZSBjYWNoZXMgZm9yIG91ciBGaW5kZXIgZmlyc3QsIGluIGNhc2UgYW55CiAgICAjIG1vZHVsZXMgYXJlIGJlaW5nIGFkZGVkL2RlbGV0ZWQvbW9kaWZpZWQgYXQgcnVudGltZS4gSW4gcGFydGljdWxhciwKICAgICMgdGVzdF9tb2R1bGVmaW5kZXIucHkgY2hhbmdlcyBmaWxlIHRyZWUgY29udGVudHMgaW4gYSBjYWNoZS1icmVha2luZyB3YXk6CgogICAgaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKCiAgICBzcGVjID0gaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYyhuYW1lLCBwYXRoKQoKICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiTm8gbW9kdWxlIG5hbWVkIHtuYW1lIXJ9Ii5mb3JtYXQobmFtZT1uYW1lKSwgbmFtZT1uYW1lKQoKICAgICMgU29tZSBzcGVjaWFsIGNhc2VzOgoKICAgIGlmIHNwZWMubG9hZGVyIGlzIGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyOgogICAgICAgIHJldHVybiBOb25lLCBOb25lLCAoIiIsICIiLCBfQ19CVUlMVElOKQoKICAgIGlmIHNwZWMubG9hZGVyIGlzIGltcG9ydGxpYi5tYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXI6CiAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsICgiIiwgIiIsIF9QWV9GUk9aRU4pCgogICAgZmlsZV9wYXRoID0gc3BlYy5vcmlnaW4KCiAgICBpZiBzcGVjLmxvYWRlci5pc19wYWNrYWdlKG5hbWUpOgogICAgICAgIHJldHVybiBOb25lLCBvcy5wYXRoLmRpcm5hbWUoZmlsZV9wYXRoKSwgKCIiLCAiIiwgX1BLR19ESVJFQ1RPUlkpCgogICAgaWYgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKToKICAgICAgICBraW5kID0gX1BZX1NPVVJDRQoKICAgIGVsaWYgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKToKICAgICAgICBraW5kID0gX0NfRVhURU5TSU9OCgogICAgZWxpZiBpc2luc3RhbmNlKHNwZWMubG9hZGVyLCBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKToKICAgICAgICBraW5kID0gX1BZX0NPTVBJTEVECgogICAgZWxzZTogICMgU2hvdWxkIG5ldmVyIGhhcHBlbi4KICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgKCIiLCAiIiwgX1NFQVJDSF9FUlJPUikKCiAgICBmaWxlID0gaW8ub3Blbl9jb2RlKGZpbGVfcGF0aCkKICAgIHN1ZmZpeCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZV9wYXRoKVstMV0KCiAgICByZXR1cm4gZmlsZSwgZmlsZV9wYXRoLCAoc3VmZml4LCAicmIiLCBraW5kKQoKCmNsYXNzIE1vZHVsZToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZmlsZT1Ob25lLCBwYXRoPU5vbmUpOgogICAgICAgIHNlbGYuX19uYW1lX18gPSBuYW1lCiAgICAgICAgc2VsZi5fX2ZpbGVfXyA9IGZpbGUKICAgICAgICBzZWxmLl9fcGF0aF9fID0gcGF0aAogICAgICAgIHNlbGYuX19jb2RlX18gPSBOb25lCiAgICAgICAgIyBUaGUgc2V0IG9mIGdsb2JhbCBuYW1lcyB0aGF0IGFyZSBhc3NpZ25lZCB0byBpbiB0aGUgbW9kdWxlLgogICAgICAgICMgVGhpcyBpbmNsdWRlcyB0aG9zZSBuYW1lcyBpbXBvcnRlZCB0aHJvdWdoIHN0YXJpbXBvcnRzIG9mCiAgICAgICAgIyBQeXRob24gbW9kdWxlcy4KICAgICAgICBzZWxmLmdsb2JhbG5hbWVzID0ge30KICAgICAgICAjIFRoZSBzZXQgb2Ygc3RhcmltcG9ydHMgdGhpcyBtb2R1bGUgZGlkIHRoYXQgY291bGQgbm90IGJlCiAgICAgICAgIyByZXNvbHZlZCwgaWUuIGEgc3RhcmltcG9ydCBmcm9tIGEgbm9uLVB5dGhvbiBtb2R1bGUuCiAgICAgICAgc2VsZi5zdGFyaW1wb3J0cyA9IHt9CgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHMgPSAiTW9kdWxlKCVyIiAlIChzZWxmLl9fbmFtZV9fLCkKICAgICAgICBpZiBzZWxmLl9fZmlsZV9fIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzID0gcyArICIsICVyIiAlIChzZWxmLl9fZmlsZV9fLCkKICAgICAgICBpZiBzZWxmLl9fcGF0aF9fIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzID0gcyArICIsICVyIiAlIChzZWxmLl9fcGF0aF9fLCkKICAgICAgICBzID0gcyArICIpIgogICAgICAgIHJldHVybiBzCgpjbGFzcyBNb2R1bGVGaW5kZXI6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9Tm9uZSwgZGVidWc9MCwgZXhjbHVkZXM9Tm9uZSwgcmVwbGFjZV9wYXRocz1Ob25lKToKICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAogICAgICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICBzZWxmLm1vZHVsZXMgPSB7fQogICAgICAgIHNlbGYuYmFkbW9kdWxlcyA9IHt9CiAgICAgICAgc2VsZi5kZWJ1ZyA9IGRlYnVnCiAgICAgICAgc2VsZi5pbmRlbnQgPSAwCiAgICAgICAgc2VsZi5leGNsdWRlcyA9IGV4Y2x1ZGVzIGlmIGV4Y2x1ZGVzIGlzIG5vdCBOb25lIGVsc2UgW10KICAgICAgICBzZWxmLnJlcGxhY2VfcGF0aHMgPSByZXBsYWNlX3BhdGhzIGlmIHJlcGxhY2VfcGF0aHMgaXMgbm90IE5vbmUgZWxzZSBbXQogICAgICAgIHNlbGYucHJvY2Vzc2VkX3BhdGhzID0gW10gICAjIFVzZWQgaW4gZGVidWdnaW5nIG9ubHkKCiAgICBkZWYgbXNnKHNlbGYsIGxldmVsLCBzdHIsICphcmdzKToKICAgICAgICBpZiBsZXZlbCA8PSBzZWxmLmRlYnVnOgogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmluZGVudCk6CiAgICAgICAgICAgICAgICBwcmludCgiICAgIiwgZW5kPScgJykKICAgICAgICAgICAgcHJpbnQoc3RyLCBlbmQ9JyAnKQogICAgICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CiAgICAgICAgICAgICAgICBwcmludChyZXByKGFyZyksIGVuZD0nICcpCiAgICAgICAgICAgIHByaW50KCkKCiAgICBkZWYgbXNnaW4oc2VsZiwgKmFyZ3MpOgogICAgICAgIGxldmVsID0gYXJnc1swXQogICAgICAgIGlmIGxldmVsIDw9IHNlbGYuZGVidWc6CiAgICAgICAgICAgIHNlbGYuaW5kZW50ID0gc2VsZi5pbmRlbnQgKyAxCiAgICAgICAgICAgIHNlbGYubXNnKCphcmdzKQoKICAgIGRlZiBtc2dvdXQoc2VsZiwgKmFyZ3MpOgogICAgICAgIGxldmVsID0gYXJnc1swXQogICAgICAgIGlmIGxldmVsIDw9IHNlbGYuZGVidWc6CiAgICAgICAgICAgIHNlbGYuaW5kZW50ID0gc2VsZi5pbmRlbnQgLSAxCiAgICAgICAgICAgIHNlbGYubXNnKCphcmdzKQoKICAgIGRlZiBydW5fc2NyaXB0KHNlbGYsIHBhdGhuYW1lKToKICAgICAgICBzZWxmLm1zZygyLCAicnVuX3NjcmlwdCIsIHBhdGhuYW1lKQogICAgICAgIHdpdGggaW8ub3Blbl9jb2RlKHBhdGhuYW1lKSBhcyBmcDoKICAgICAgICAgICAgc3R1ZmYgPSAoIiIsICJyYiIsIF9QWV9TT1VSQ0UpCiAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUoJ19fbWFpbl9fJywgZnAsIHBhdGhuYW1lLCBzdHVmZikKCiAgICBkZWYgbG9hZF9maWxlKHNlbGYsIHBhdGhuYW1lKToKICAgICAgICBkaXIsIG5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKICAgICAgICB3aXRoIGlvLm9wZW5fY29kZShwYXRobmFtZSkgYXMgZnA6CiAgICAgICAgICAgIHN0dWZmID0gKGV4dCwgInJiIiwgX1BZX1NPVVJDRSkKICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZShuYW1lLCBmcCwgcGF0aG5hbWUsIHN0dWZmKQoKICAgIGRlZiBpbXBvcnRfaG9vayhzZWxmLCBuYW1lLCBjYWxsZXI9Tm9uZSwgZnJvbWxpc3Q9Tm9uZSwgbGV2ZWw9LTEpOgogICAgICAgIHNlbGYubXNnKDMsICJpbXBvcnRfaG9vayIsIG5hbWUsIGNhbGxlciwgZnJvbWxpc3QsIGxldmVsKQogICAgICAgIHBhcmVudCA9IHNlbGYuZGV0ZXJtaW5lX3BhcmVudChjYWxsZXIsIGxldmVsPWxldmVsKQogICAgICAgIHEsIHRhaWwgPSBzZWxmLmZpbmRfaGVhZF9wYWNrYWdlKHBhcmVudCwgbmFtZSkKICAgICAgICBtID0gc2VsZi5sb2FkX3RhaWwocSwgdGFpbCkKICAgICAgICBpZiBub3QgZnJvbWxpc3Q6CiAgICAgICAgICAgIHJldHVybiBxCiAgICAgICAgaWYgbS5fX3BhdGhfXzoKICAgICAgICAgICAgc2VsZi5lbnN1cmVfZnJvbWxpc3QobSwgZnJvbWxpc3QpCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgZGV0ZXJtaW5lX3BhcmVudChzZWxmLCBjYWxsZXIsIGxldmVsPS0xKToKICAgICAgICBzZWxmLm1zZ2luKDQsICJkZXRlcm1pbmVfcGFyZW50IiwgY2FsbGVyLCBsZXZlbCkKICAgICAgICBpZiBub3QgY2FsbGVyIG9yIGxldmVsID09IDA6CiAgICAgICAgICAgIHNlbGYubXNnb3V0KDQsICJkZXRlcm1pbmVfcGFyZW50IC0+IE5vbmUiKQogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHBuYW1lID0gY2FsbGVyLl9fbmFtZV9fCiAgICAgICAgaWYgbGV2ZWwgPj0gMTogIyByZWxhdGl2ZSBpbXBvcnQKICAgICAgICAgICAgaWYgY2FsbGVyLl9fcGF0aF9fOgogICAgICAgICAgICAgICAgbGV2ZWwgLT0gMQogICAgICAgICAgICBpZiBsZXZlbCA9PSAwOgogICAgICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5tb2R1bGVzW3BuYW1lXQogICAgICAgICAgICAgICAgYXNzZXJ0IHBhcmVudCBpcyBjYWxsZXIKICAgICAgICAgICAgICAgIHNlbGYubXNnb3V0KDQsICJkZXRlcm1pbmVfcGFyZW50IC0+IiwgcGFyZW50KQogICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudAogICAgICAgICAgICBpZiBwbmFtZS5jb3VudCgiLiIpIDwgbGV2ZWw6CiAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigicmVsYXRpdmUgaW1wb3J0cGF0aCB0b28gZGVlcCIpCiAgICAgICAgICAgIHBuYW1lID0gIi4iLmpvaW4ocG5hbWUuc3BsaXQoIi4iKVs6LWxldmVsXSkKICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5tb2R1bGVzW3BuYW1lXQogICAgICAgICAgICBzZWxmLm1zZ291dCg0LCAiZGV0ZXJtaW5lX3BhcmVudCAtPiIsIHBhcmVudCkKICAgICAgICAgICAgcmV0dXJuIHBhcmVudAogICAgICAgIGlmIGNhbGxlci5fX3BhdGhfXzoKICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5tb2R1bGVzW3BuYW1lXQogICAgICAgICAgICBhc3NlcnQgY2FsbGVyIGlzIHBhcmVudAogICAgICAgICAgICBzZWxmLm1zZ291dCg0LCAiZGV0ZXJtaW5lX3BhcmVudCAtPiIsIHBhcmVudCkKICAgICAgICAgICAgcmV0dXJuIHBhcmVudAogICAgICAgIGlmICcuJyBpbiBwbmFtZToKICAgICAgICAgICAgaSA9IHBuYW1lLnJmaW5kKCcuJykKICAgICAgICAgICAgcG5hbWUgPSBwbmFtZVs6aV0KICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5tb2R1bGVzW3BuYW1lXQogICAgICAgICAgICBhc3NlcnQgcGFyZW50Ll9fbmFtZV9fID09IHBuYW1lCiAgICAgICAgICAgIHNlbGYubXNnb3V0KDQsICJkZXRlcm1pbmVfcGFyZW50IC0+IiwgcGFyZW50KQogICAgICAgICAgICByZXR1cm4gcGFyZW50CiAgICAgICAgc2VsZi5tc2dvdXQoNCwgImRldGVybWluZV9wYXJlbnQgLT4gTm9uZSIpCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgZmluZF9oZWFkX3BhY2thZ2Uoc2VsZiwgcGFyZW50LCBuYW1lKToKICAgICAgICBzZWxmLm1zZ2luKDQsICJmaW5kX2hlYWRfcGFja2FnZSIsIHBhcmVudCwgbmFtZSkKICAgICAgICBpZiAnLicgaW4gbmFtZToKICAgICAgICAgICAgaSA9IG5hbWUuZmluZCgnLicpCiAgICAgICAgICAgIGhlYWQgPSBuYW1lWzppXQogICAgICAgICAgICB0YWlsID0gbmFtZVtpKzE6XQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGhlYWQgPSBuYW1lCiAgICAgICAgICAgIHRhaWwgPSAiIgogICAgICAgIGlmIHBhcmVudDoKICAgICAgICAgICAgcW5hbWUgPSAiJXMuJXMiICUgKHBhcmVudC5fX25hbWVfXywgaGVhZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBxbmFtZSA9IGhlYWQKICAgICAgICBxID0gc2VsZi5pbXBvcnRfbW9kdWxlKGhlYWQsIHFuYW1lLCBwYXJlbnQpCiAgICAgICAgaWYgcToKICAgICAgICAgICAgc2VsZi5tc2dvdXQoNCwgImZpbmRfaGVhZF9wYWNrYWdlIC0+IiwgKHEsIHRhaWwpKQogICAgICAgICAgICByZXR1cm4gcSwgdGFpbAogICAgICAgIGlmIHBhcmVudDoKICAgICAgICAgICAgcW5hbWUgPSBoZWFkCiAgICAgICAgICAgIHBhcmVudCA9IE5vbmUKICAgICAgICAgICAgcSA9IHNlbGYuaW1wb3J0X21vZHVsZShoZWFkLCBxbmFtZSwgcGFyZW50KQogICAgICAgICAgICBpZiBxOgogICAgICAgICAgICAgICAgc2VsZi5tc2dvdXQoNCwgImZpbmRfaGVhZF9wYWNrYWdlIC0+IiwgKHEsIHRhaWwpKQogICAgICAgICAgICAgICAgcmV0dXJuIHEsIHRhaWwKICAgICAgICBzZWxmLm1zZ291dCg0LCAicmFpc2UgSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCIsIHFuYW1lKQogICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJObyBtb2R1bGUgbmFtZWQgIiArIHFuYW1lKQoKICAgIGRlZiBsb2FkX3RhaWwoc2VsZiwgcSwgdGFpbCk6CiAgICAgICAgc2VsZi5tc2dpbig0LCAibG9hZF90YWlsIiwgcSwgdGFpbCkKICAgICAgICBtID0gcQogICAgICAgIHdoaWxlIHRhaWw6CiAgICAgICAgICAgIGkgPSB0YWlsLmZpbmQoJy4nKQogICAgICAgICAgICBpZiBpIDwgMDogaSA9IGxlbih0YWlsKQogICAgICAgICAgICBoZWFkLCB0YWlsID0gdGFpbFs6aV0sIHRhaWxbaSsxOl0KICAgICAgICAgICAgbW5hbWUgPSAiJXMuJXMiICUgKG0uX19uYW1lX18sIGhlYWQpCiAgICAgICAgICAgIG0gPSBzZWxmLmltcG9ydF9tb2R1bGUoaGVhZCwgbW5hbWUsIG0pCiAgICAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgICAgc2VsZi5tc2dvdXQoNCwgInJhaXNlIEltcG9ydEVycm9yOiBObyBtb2R1bGUgbmFtZWQiLCBtbmFtZSkKICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJObyBtb2R1bGUgbmFtZWQgIiArIG1uYW1lKQogICAgICAgIHNlbGYubXNnb3V0KDQsICJsb2FkX3RhaWwgLT4iLCBtKQogICAgICAgIHJldHVybiBtCgogICAgZGVmIGVuc3VyZV9mcm9tbGlzdChzZWxmLCBtLCBmcm9tbGlzdCwgcmVjdXJzaXZlPTApOgogICAgICAgIHNlbGYubXNnKDQsICJlbnN1cmVfZnJvbWxpc3QiLCBtLCBmcm9tbGlzdCwgcmVjdXJzaXZlKQogICAgICAgIGZvciBzdWIgaW4gZnJvbWxpc3Q6CiAgICAgICAgICAgIGlmIHN1YiA9PSAiKiI6CiAgICAgICAgICAgICAgICBpZiBub3QgcmVjdXJzaXZlOgogICAgICAgICAgICAgICAgICAgIGFsbCA9IHNlbGYuZmluZF9hbGxfc3VibW9kdWxlcyhtKQogICAgICAgICAgICAgICAgICAgIGlmIGFsbDoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbnN1cmVfZnJvbWxpc3QobSwgYWxsLCAxKQogICAgICAgICAgICBlbGlmIG5vdCBoYXNhdHRyKG0sIHN1Yik6CiAgICAgICAgICAgICAgICBzdWJuYW1lID0gIiVzLiVzIiAlIChtLl9fbmFtZV9fLCBzdWIpCiAgICAgICAgICAgICAgICBzdWJtb2QgPSBzZWxmLmltcG9ydF9tb2R1bGUoc3ViLCBzdWJuYW1lLCBtKQogICAgICAgICAgICAgICAgaWYgbm90IHN1Ym1vZDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiTm8gbW9kdWxlIG5hbWVkICIgKyBzdWJuYW1lKQoKICAgIGRlZiBmaW5kX2FsbF9zdWJtb2R1bGVzKHNlbGYsIG0pOgogICAgICAgIGlmIG5vdCBtLl9fcGF0aF9fOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBtb2R1bGVzID0ge30KICAgICAgICAjICdzdWZmaXhlcycgdXNlZCB0byBiZSBhIGxpc3QgaGFyZGNvZGVkIHRvIFsiLnB5IiwgIi5weWMiXS4KICAgICAgICAjIEJ1dCB3ZSBtdXN0IGFsc28gY29sbGVjdCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZXMgLSBhbHRob3VnaAogICAgICAgICMgd2UgY2Fubm90IHNlcGFyYXRlIG5vcm1hbCBkbGxzIGZyb20gUHl0aG9uIGV4dGVuc2lvbnMuCiAgICAgICAgc3VmZml4ZXMgPSBbXQogICAgICAgIHN1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTWzpdCiAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbOl0KICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdCiAgICAgICAgZm9yIGRpciBpbiBtLl9fcGF0aF9fOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHNlbGYubXNnKDIsICJjYW4ndCBsaXN0IGRpcmVjdG9yeSIsIGRpcikKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgICAgbW9kID0gTm9uZQogICAgICAgICAgICAgICAgZm9yIHN1ZmYgaW4gc3VmZml4ZXM6CiAgICAgICAgICAgICAgICAgICAgbiA9IGxlbihzdWZmKQogICAgICAgICAgICAgICAgICAgIGlmIG5hbWVbLW46XSA9PSBzdWZmOgogICAgICAgICAgICAgICAgICAgICAgICBtb2QgPSBuYW1lWzotbl0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGlmIG1vZCBhbmQgbW9kICE9ICJfX2luaXRfXyI6CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlc1ttb2RdID0gbW9kCiAgICAgICAgcmV0dXJuIG1vZHVsZXMua2V5cygpCgogICAgZGVmIGltcG9ydF9tb2R1bGUoc2VsZiwgcGFydG5hbWUsIGZxbmFtZSwgcGFyZW50KToKICAgICAgICBzZWxmLm1zZ2luKDMsICJpbXBvcnRfbW9kdWxlIiwgcGFydG5hbWUsIGZxbmFtZSwgcGFyZW50KQogICAgICAgIHRyeToKICAgICAgICAgICAgbSA9IHNlbGYubW9kdWxlc1tmcW5hbWVdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5tc2dvdXQoMywgImltcG9ydF9tb2R1bGUgLT4iLCBtKQogICAgICAgICAgICByZXR1cm4gbQogICAgICAgIGlmIGZxbmFtZSBpbiBzZWxmLmJhZG1vZHVsZXM6CiAgICAgICAgICAgIHNlbGYubXNnb3V0KDMsICJpbXBvcnRfbW9kdWxlIC0+IE5vbmUiKQogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGlmIHBhcmVudCBhbmQgcGFyZW50Ll9fcGF0aF9fIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYubXNnb3V0KDMsICJpbXBvcnRfbW9kdWxlIC0+IE5vbmUiKQogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgZnAsIHBhdGhuYW1lLCBzdHVmZiA9IHNlbGYuZmluZF9tb2R1bGUocGFydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCBhbmQgcGFyZW50Ll9fcGF0aF9fLCBwYXJlbnQpCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICBzZWxmLm1zZ291dCgzLCAiaW1wb3J0X21vZHVsZSAtPiIsIE5vbmUpCiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgIHRyeToKICAgICAgICAgICAgbSA9IHNlbGYubG9hZF9tb2R1bGUoZnFuYW1lLCBmcCwgcGF0aG5hbWUsIHN0dWZmKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIGZwOgogICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgICAgIGlmIHBhcmVudDoKICAgICAgICAgICAgc2V0YXR0cihwYXJlbnQsIHBhcnRuYW1lLCBtKQogICAgICAgIHNlbGYubXNnb3V0KDMsICJpbXBvcnRfbW9kdWxlIC0+IiwgbSkKICAgICAgICByZXR1cm4gbQoKICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmcW5hbWUsIGZwLCBwYXRobmFtZSwgZmlsZV9pbmZvKToKICAgICAgICBzdWZmaXgsIG1vZGUsIHR5cGUgPSBmaWxlX2luZm8KICAgICAgICBzZWxmLm1zZ2luKDIsICJsb2FkX21vZHVsZSIsIGZxbmFtZSwgZnAgYW5kICJmcCIsIHBhdGhuYW1lKQogICAgICAgIGlmIHR5cGUgPT0gX1BLR19ESVJFQ1RPUlk6CiAgICAgICAgICAgIG0gPSBzZWxmLmxvYWRfcGFja2FnZShmcW5hbWUsIHBhdGhuYW1lKQogICAgICAgICAgICBzZWxmLm1zZ291dCgyLCAibG9hZF9tb2R1bGUgLT4iLCBtKQogICAgICAgICAgICByZXR1cm4gbQogICAgICAgIGlmIHR5cGUgPT0gX1BZX1NPVVJDRToKICAgICAgICAgICAgY28gPSBjb21waWxlKGZwLnJlYWQoKSwgcGF0aG5hbWUsICdleGVjJykKICAgICAgICBlbGlmIHR5cGUgPT0gX1BZX0NPTVBJTEVEOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgpCiAgICAgICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fY2xhc3NpZnlfcHljKGRhdGEsIGZxbmFtZSwge30pCiAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLm1zZ291dCgyLCAicmFpc2UgSW1wb3J0RXJyb3I6ICIgKyBzdHIoZXhjKSwgcGF0aG5hbWUpCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBjbyA9IG1hcnNoYWwubG9hZHMobWVtb3J5dmlldyhkYXRhKVsxNjpdKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvID0gTm9uZQogICAgICAgIG0gPSBzZWxmLmFkZF9tb2R1bGUoZnFuYW1lKQogICAgICAgIG0uX19maWxlX18gPSBwYXRobmFtZQogICAgICAgIGlmIGNvOgogICAgICAgICAgICBpZiBzZWxmLnJlcGxhY2VfcGF0aHM6CiAgICAgICAgICAgICAgICBjbyA9IHNlbGYucmVwbGFjZV9wYXRoc19pbl9jb2RlKGNvKQogICAgICAgICAgICBtLl9fY29kZV9fID0gY28KICAgICAgICAgICAgc2VsZi5zY2FuX2NvZGUoY28sIG0pCiAgICAgICAgc2VsZi5tc2dvdXQoMiwgImxvYWRfbW9kdWxlIC0+IiwgbSkKICAgICAgICByZXR1cm4gbQoKICAgIGRlZiBfYWRkX2JhZG1vZHVsZShzZWxmLCBuYW1lLCBjYWxsZXIpOgogICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuYmFkbW9kdWxlczoKICAgICAgICAgICAgc2VsZi5iYWRtb2R1bGVzW25hbWVdID0ge30KICAgICAgICBpZiBjYWxsZXI6CiAgICAgICAgICAgIHNlbGYuYmFkbW9kdWxlc1tuYW1lXVtjYWxsZXIuX19uYW1lX19dID0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuYmFkbW9kdWxlc1tuYW1lXVsiLSJdID0gMQoKICAgIGRlZiBfc2FmZV9pbXBvcnRfaG9vayhzZWxmLCBuYW1lLCBjYWxsZXIsIGZyb21saXN0LCBsZXZlbD0tMSk6CiAgICAgICAgIyB3cmFwcGVyIGZvciBzZWxmLmltcG9ydF9ob29rKCkgdGhhdCB3b24ndCByYWlzZSBJbXBvcnRFcnJvcgogICAgICAgIGlmIG5hbWUgaW4gc2VsZi5iYWRtb2R1bGVzOgogICAgICAgICAgICBzZWxmLl9hZGRfYmFkbW9kdWxlKG5hbWUsIGNhbGxlcikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmltcG9ydF9ob29rKG5hbWUsIGNhbGxlciwgbGV2ZWw9bGV2ZWwpCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIG1zZzoKICAgICAgICAgICAgc2VsZi5tc2coMiwgIkltcG9ydEVycm9yOiIsIHN0cihtc2cpKQogICAgICAgICAgICBzZWxmLl9hZGRfYmFkbW9kdWxlKG5hbWUsIGNhbGxlcikKICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgbXNnOgogICAgICAgICAgICBzZWxmLm1zZygyLCAiU3ludGF4RXJyb3I6Iiwgc3RyKG1zZykpCiAgICAgICAgICAgIHNlbGYuX2FkZF9iYWRtb2R1bGUobmFtZSwgY2FsbGVyKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGZyb21saXN0OgogICAgICAgICAgICAgICAgZm9yIHN1YiBpbiBmcm9tbGlzdDoKICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSA9IG5hbWUgKyAiLiIgKyBzdWIKICAgICAgICAgICAgICAgICAgICBpZiBmdWxsbmFtZSBpbiBzZWxmLmJhZG1vZHVsZXM6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9iYWRtb2R1bGUoZnVsbG5hbWUsIGNhbGxlcikKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0X2hvb2sobmFtZSwgY2FsbGVyLCBbc3ViXSwgbGV2ZWw9bGV2ZWwpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIG1zZzoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tc2coMiwgIkltcG9ydEVycm9yOiIsIHN0cihtc2cpKQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfYmFkbW9kdWxlKGZ1bGxuYW1lLCBjYWxsZXIpCgogICAgZGVmIHNjYW5fb3Bjb2RlcyhzZWxmLCBjbyk6CiAgICAgICAgIyBTY2FuIHRoZSBjb2RlLCBhbmQgeWllbGQgJ2ludGVyZXN0aW5nJyBvcGNvZGUgY29tYmluYXRpb25zCiAgICAgICAgZm9yIG5hbWUgaW4gZGlzLl9maW5kX3N0b3JlX25hbWVzKGNvKToKICAgICAgICAgICAgeWllbGQgInN0b3JlIiwgKG5hbWUsKQogICAgICAgIGZvciBuYW1lLCBsZXZlbCwgZnJvbWxpc3QgaW4gZGlzLl9maW5kX2ltcG9ydHMoY28pOgogICAgICAgICAgICBpZiBsZXZlbCA9PSAwOiAgIyBhYnNvbHV0ZSBpbXBvcnQKICAgICAgICAgICAgICAgIHlpZWxkICJhYnNvbHV0ZV9pbXBvcnQiLCAoZnJvbWxpc3QsIG5hbWUpCiAgICAgICAgICAgIGVsc2U6ICAjIHJlbGF0aXZlIGltcG9ydAogICAgICAgICAgICAgICAgeWllbGQgInJlbGF0aXZlX2ltcG9ydCIsIChsZXZlbCwgZnJvbWxpc3QsIG5hbWUpCgogICAgZGVmIHNjYW5fY29kZShzZWxmLCBjbywgbSk6CiAgICAgICAgY29kZSA9IGNvLmNvX2NvZGUKICAgICAgICBzY2FubmVyID0gc2VsZi5zY2FuX29wY29kZXMKICAgICAgICBmb3Igd2hhdCwgYXJncyBpbiBzY2FubmVyKGNvKToKICAgICAgICAgICAgaWYgd2hhdCA9PSAic3RvcmUiOgogICAgICAgICAgICAgICAgbmFtZSwgPSBhcmdzCiAgICAgICAgICAgICAgICBtLmdsb2JhbG5hbWVzW25hbWVdID0gMQogICAgICAgICAgICBlbGlmIHdoYXQgPT0gImFic29sdXRlX2ltcG9ydCI6CiAgICAgICAgICAgICAgICBmcm9tbGlzdCwgbmFtZSA9IGFyZ3MKICAgICAgICAgICAgICAgIGhhdmVfc3RhciA9IDAKICAgICAgICAgICAgICAgIGlmIGZyb21saXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIGlmICIqIiBpbiBmcm9tbGlzdDoKICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV9zdGFyID0gMQogICAgICAgICAgICAgICAgICAgIGZyb21saXN0ID0gW2YgZm9yIGYgaW4gZnJvbWxpc3QgaWYgZiAhPSAiKiJdCiAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX2ltcG9ydF9ob29rKG5hbWUsIG0sIGZyb21saXN0LCBsZXZlbD0wKQogICAgICAgICAgICAgICAgaWYgaGF2ZV9zdGFyOgogICAgICAgICAgICAgICAgICAgICMgV2UndmUgZW5jb3VudGVyZWQgYW4gImltcG9ydCAqIi4gSWYgaXQgaXMgYSBQeXRob24gbW9kdWxlLAogICAgICAgICAgICAgICAgICAgICMgdGhlIGNvZGUgaGFzIGFscmVhZHkgYmVlbiBwYXJzZWQgYW5kIHdlIGNhbiBzdWNrIG91dCB0aGUKICAgICAgICAgICAgICAgICAgICAjIGdsb2JhbCBuYW1lcy4KICAgICAgICAgICAgICAgICAgICBtbSA9IE5vbmUKICAgICAgICAgICAgICAgICAgICBpZiBtLl9fcGF0aF9fOgogICAgICAgICAgICAgICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2UgZG9uJ3Qga25vdyB3aGV0aGVyICduYW1lJyBpcyBhCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3VibW9kdWxlIG9mICdtJyBvciBhIGdsb2JhbCBtb2R1bGUuIExldCdzIGp1c3QgdHJ5CiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGZ1bGwgbmFtZSBmaXJzdC4KICAgICAgICAgICAgICAgICAgICAgICAgbW0gPSBzZWxmLm1vZHVsZXMuZ2V0KG0uX19uYW1lX18gKyAiLiIgKyBuYW1lKQogICAgICAgICAgICAgICAgICAgIGlmIG1tIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIG1tID0gc2VsZi5tb2R1bGVzLmdldChuYW1lKQogICAgICAgICAgICAgICAgICAgIGlmIG1tIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBtLmdsb2JhbG5hbWVzLnVwZGF0ZShtbS5nbG9iYWxuYW1lcykKICAgICAgICAgICAgICAgICAgICAgICAgbS5zdGFyaW1wb3J0cy51cGRhdGUobW0uc3RhcmltcG9ydHMpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1tLl9fY29kZV9fIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLnN0YXJpbXBvcnRzW25hbWVdID0gMQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIG0uc3RhcmltcG9ydHNbbmFtZV0gPSAxCiAgICAgICAgICAgIGVsaWYgd2hhdCA9PSAicmVsYXRpdmVfaW1wb3J0IjoKICAgICAgICAgICAgICAgIGxldmVsLCBmcm9tbGlzdCwgbmFtZSA9IGFyZ3MKICAgICAgICAgICAgICAgIGlmIG5hbWU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2FmZV9pbXBvcnRfaG9vayhuYW1lLCBtLCBmcm9tbGlzdCwgbGV2ZWw9bGV2ZWwpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IHNlbGYuZGV0ZXJtaW5lX3BhcmVudChtLCBsZXZlbD1sZXZlbCkKICAgICAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX2ltcG9ydF9ob29rKHBhcmVudC5fX25hbWVfXywgTm9uZSwgZnJvbWxpc3QsIGxldmVsPTApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIFdlIGRvbid0IGV4cGVjdCBhbnl0aGluZyBlbHNlIGZyb20gdGhlIGdlbmVyYXRvci4KICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcih3aGF0KQoKICAgICAgICBmb3IgYyBpbiBjby5jb19jb25zdHM6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYywgdHlwZShjbykpOgogICAgICAgICAgICAgICAgc2VsZi5zY2FuX2NvZGUoYywgbSkKCiAgICBkZWYgbG9hZF9wYWNrYWdlKHNlbGYsIGZxbmFtZSwgcGF0aG5hbWUpOgogICAgICAgIHNlbGYubXNnaW4oMiwgImxvYWRfcGFja2FnZSIsIGZxbmFtZSwgcGF0aG5hbWUpCiAgICAgICAgbmV3bmFtZSA9IHJlcGxhY2VQYWNrYWdlTWFwLmdldChmcW5hbWUpCiAgICAgICAgaWYgbmV3bmFtZToKICAgICAgICAgICAgZnFuYW1lID0gbmV3bmFtZQogICAgICAgIG0gPSBzZWxmLmFkZF9tb2R1bGUoZnFuYW1lKQogICAgICAgIG0uX19maWxlX18gPSBwYXRobmFtZQogICAgICAgIG0uX19wYXRoX18gPSBbcGF0aG5hbWVdCgogICAgICAgICMgQXMgcGVyIGNvbW1lbnQgYXQgdG9wIG9mIGZpbGUsIHNpbXVsYXRlIHJ1bnRpbWUgX19wYXRoX18gYWRkaXRpb25zLgogICAgICAgIG0uX19wYXRoX18gPSBtLl9fcGF0aF9fICsgcGFja2FnZVBhdGhNYXAuZ2V0KGZxbmFtZSwgW10pCgogICAgICAgIGZwLCBidWYsIHN0dWZmID0gc2VsZi5maW5kX21vZHVsZSgiX19pbml0X18iLCBtLl9fcGF0aF9fKQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZShmcW5hbWUsIGZwLCBidWYsIHN0dWZmKQogICAgICAgICAgICBzZWxmLm1zZ291dCgyLCAibG9hZF9wYWNrYWdlIC0+IiwgbSkKICAgICAgICAgICAgcmV0dXJuIG0KICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBmcDoKICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKCiAgICBkZWYgYWRkX21vZHVsZShzZWxmLCBmcW5hbWUpOgogICAgICAgIGlmIGZxbmFtZSBpbiBzZWxmLm1vZHVsZXM6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZXNbZnFuYW1lXQogICAgICAgIHNlbGYubW9kdWxlc1tmcW5hbWVdID0gbSA9IE1vZHVsZShmcW5hbWUpCiAgICAgICAgcmV0dXJuIG0KCiAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgbmFtZSwgcGF0aCwgcGFyZW50PU5vbmUpOgogICAgICAgIGlmIHBhcmVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBhc3NlcnQgcGF0aCBpcyBub3QgTm9uZQogICAgICAgICAgICBmdWxsbmFtZSA9IHBhcmVudC5fX25hbWVfXysnLicrbmFtZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZ1bGxuYW1lID0gbmFtZQogICAgICAgIGlmIGZ1bGxuYW1lIGluIHNlbGYuZXhjbHVkZXM6CiAgICAgICAgICAgIHNlbGYubXNnb3V0KDMsICJmaW5kX21vZHVsZSAtPiBFeGNsdWRlZCIsIGZ1bGxuYW1lKQogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihuYW1lKQoKICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIG5hbWUgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgogICAgICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lLCAoIiIsICIiLCBfQ19CVUlMVElOKSkKCiAgICAgICAgICAgIHBhdGggPSBzZWxmLnBhdGgKCiAgICAgICAgcmV0dXJuIF9maW5kX21vZHVsZShuYW1lLCBwYXRoKQoKICAgIGRlZiByZXBvcnQoc2VsZik6CiAgICAgICAgIiIiUHJpbnQgYSByZXBvcnQgdG8gc3Rkb3V0LCBsaXN0aW5nIHRoZSBmb3VuZCBtb2R1bGVzIHdpdGggdGhlaXIKICAgICAgICBwYXRocywgYXMgd2VsbCBhcyBtb2R1bGVzIHRoYXQgYXJlIG1pc3NpbmcsIG9yIHNlZW0gdG8gYmUgbWlzc2luZy4KICAgICAgICAiIiIKICAgICAgICBwcmludCgpCiAgICAgICAgcHJpbnQoIiAgJS0yNXMgJXMiICUgKCJOYW1lIiwgIkZpbGUiKSkKICAgICAgICBwcmludCgiICAlLTI1cyAlcyIgJSAoIi0tLS0iLCAiLS0tLSIpKQogICAgICAgICMgUHJpbnQgbW9kdWxlcyBmb3VuZAogICAgICAgIGtleXMgPSBzb3J0ZWQoc2VsZi5tb2R1bGVzLmtleXMoKSkKICAgICAgICBmb3Iga2V5IGluIGtleXM6CiAgICAgICAgICAgIG0gPSBzZWxmLm1vZHVsZXNba2V5XQogICAgICAgICAgICBpZiBtLl9fcGF0aF9fOgogICAgICAgICAgICAgICAgcHJpbnQoIlAiLCBlbmQ9JyAnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoIm0iLCBlbmQ9JyAnKQogICAgICAgICAgICBwcmludCgiJS0yNXMiICUga2V5LCBtLl9fZmlsZV9fIG9yICIiKQoKICAgICAgICAjIFByaW50IG1pc3NpbmcgbW9kdWxlcwogICAgICAgIG1pc3NpbmcsIG1heWJlID0gc2VsZi5hbnlfbWlzc2luZ19tYXliZSgpCiAgICAgICAgaWYgbWlzc2luZzoKICAgICAgICAgICAgcHJpbnQoKQogICAgICAgICAgICBwcmludCgiTWlzc2luZyBtb2R1bGVzOiIpCiAgICAgICAgICAgIGZvciBuYW1lIGluIG1pc3Npbmc6CiAgICAgICAgICAgICAgICBtb2RzID0gc29ydGVkKHNlbGYuYmFkbW9kdWxlc1tuYW1lXS5rZXlzKCkpCiAgICAgICAgICAgICAgICBwcmludCgiPyIsIG5hbWUsICJpbXBvcnRlZCBmcm9tIiwgJywgJy5qb2luKG1vZHMpKQogICAgICAgICMgUHJpbnQgbW9kdWxlcyB0aGF0IG1heSBiZSBtaXNzaW5nLCBidXQgdGhlbiBhZ2FpbiwgbWF5YmUgbm90Li4uCiAgICAgICAgaWYgbWF5YmU6CiAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgcHJpbnQoIlN1Ym1vZHVsZXMgdGhhdCBhcHBlYXIgdG8gYmUgbWlzc2luZywgYnV0IGNvdWxkIGFsc28gYmUiLCBlbmQ9JyAnKQogICAgICAgICAgICBwcmludCgiZ2xvYmFsIG5hbWVzIGluIHRoZSBwYXJlbnQgcGFja2FnZToiKQogICAgICAgICAgICBmb3IgbmFtZSBpbiBtYXliZToKICAgICAgICAgICAgICAgIG1vZHMgPSBzb3J0ZWQoc2VsZi5iYWRtb2R1bGVzW25hbWVdLmtleXMoKSkKICAgICAgICAgICAgICAgIHByaW50KCI/IiwgbmFtZSwgImltcG9ydGVkIGZyb20iLCAnLCAnLmpvaW4obW9kcykpCgogICAgZGVmIGFueV9taXNzaW5nKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IGFwcGVhciB0byBiZSBtaXNzaW5nLiBVc2UKICAgICAgICBhbnlfbWlzc2luZ19tYXliZSgpIGlmIHlvdSB3YW50IHRvIGtub3cgd2hpY2ggbW9kdWxlcyBhcmUKICAgICAgICBjZXJ0YWluIHRvIGJlIG1pc3NpbmcsIGFuZCB3aGljaCAqbWF5KiBiZSBtaXNzaW5nLgogICAgICAgICIiIgogICAgICAgIG1pc3NpbmcsIG1heWJlID0gc2VsZi5hbnlfbWlzc2luZ19tYXliZSgpCiAgICAgICAgcmV0dXJuIG1pc3NpbmcgKyBtYXliZQoKICAgIGRlZiBhbnlfbWlzc2luZ19tYXliZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdHdvIGxpc3RzLCBvbmUgd2l0aCBtb2R1bGVzIHRoYXQgYXJlIGNlcnRhaW5seSBtaXNzaW5nCiAgICAgICAgYW5kIG9uZSB3aXRoIG1vZHVsZXMgdGhhdCAqbWF5KiBiZSBtaXNzaW5nLiBUaGUgbGF0dGVyIG5hbWVzIGNvdWxkCiAgICAgICAgZWl0aGVyIGJlIHN1Ym1vZHVsZXMgKm9yKiBqdXN0IGdsb2JhbCBuYW1lcyBpbiB0aGUgcGFja2FnZS4KCiAgICAgICAgVGhlIHJlYXNvbiBpdCBjYW4ndCBhbHdheXMgYmUgZGV0ZXJtaW5lZCBpcyB0aGF0IGl0J3MgaW1wb3NzaWJsZSB0bwogICAgICAgIHRlbGwgd2hpY2ggbmFtZXMgYXJlIGltcG9ydGVkIHdoZW4gImZyb20gbW9kdWxlIGltcG9ydCAqIiBpcyBkb25lCiAgICAgICAgd2l0aCBhbiBleHRlbnNpb24gbW9kdWxlLCBzaG9ydCBvZiBhY3R1YWxseSBpbXBvcnRpbmcgaXQuCiAgICAgICAgIiIiCiAgICAgICAgbWlzc2luZyA9IFtdCiAgICAgICAgbWF5YmUgPSBbXQogICAgICAgIGZvciBuYW1lIGluIHNlbGYuYmFkbW9kdWxlczoKICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWxmLmV4Y2x1ZGVzOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaSA9IG5hbWUucmZpbmQoIi4iKQogICAgICAgICAgICBpZiBpIDwgMDoKICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBzdWJuYW1lID0gbmFtZVtpKzE6XQogICAgICAgICAgICBwa2duYW1lID0gbmFtZVs6aV0KICAgICAgICAgICAgcGtnID0gc2VsZi5tb2R1bGVzLmdldChwa2duYW1lKQogICAgICAgICAgICBpZiBwa2cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBpZiBwa2duYW1lIGluIHNlbGYuYmFkbW9kdWxlc1tuYW1lXToKICAgICAgICAgICAgICAgICAgICAjIFRoZSBwYWNrYWdlIHRyaWVkIHRvIGltcG9ydCB0aGlzIG1vZHVsZSBpdHNlbGYgYW5kCiAgICAgICAgICAgICAgICAgICAgIyBmYWlsZWQuIEl0J3MgZGVmaW5pdGVseSBtaXNzaW5nLgogICAgICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgICAgICBlbGlmIHN1Ym5hbWUgaW4gcGtnLmdsb2JhbG5hbWVzOgogICAgICAgICAgICAgICAgICAgICMgSXQncyBhIGdsb2JhbCBpbiB0aGUgcGFja2FnZTogZGVmaW5pdGVseSBub3QgbWlzc2luZy4KICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBlbGlmIHBrZy5zdGFyaW1wb3J0czoKICAgICAgICAgICAgICAgICAgICAjIEl0IGNvdWxkIGJlIG1pc3NpbmcsIGJ1dCB0aGUgcGFja2FnZSBkaWQgYW4gImltcG9ydCAqIgogICAgICAgICAgICAgICAgICAgICMgZnJvbSBhIG5vbi1QeXRob24gbW9kdWxlLCBzbyB3ZSBzaW1wbHkgY2FuJ3QgYmUgc3VyZS4KICAgICAgICAgICAgICAgICAgICBtYXliZS5hcHBlbmQobmFtZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBJdCdzIG5vdCBhIGdsb2JhbCBpbiB0aGUgcGFja2FnZSwgdGhlIHBhY2thZ2UgZGlkbid0CiAgICAgICAgICAgICAgICAgICAgIyBkbyBmdW5ueSBzdGFyIGltcG9ydHMsIGl0J3MgdmVyeSBsaWtlbHkgdG8gYmUgbWlzc2luZy4KICAgICAgICAgICAgICAgICAgICAjIFRoZSBzeW1ib2wgY291bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgcGFja2FnZSBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICMgb3V0c2lkZSwgYnV0IHNpbmNlIHRoYXQncyBub3QgZ29vZCBzdHlsZSB3ZSBzaW1wbHkgbGlzdAogICAgICAgICAgICAgICAgICAgICMgaXQgbWlzc2luZy4KICAgICAgICAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZChuYW1lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQobmFtZSkKICAgICAgICBtaXNzaW5nLnNvcnQoKQogICAgICAgIG1heWJlLnNvcnQoKQogICAgICAgIHJldHVybiBtaXNzaW5nLCBtYXliZQoKICAgIGRlZiByZXBsYWNlX3BhdGhzX2luX2NvZGUoc2VsZiwgY28pOgogICAgICAgIG5ld19maWxlbmFtZSA9IG9yaWdpbmFsX2ZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChjby5jb19maWxlbmFtZSkKICAgICAgICBmb3IgZiwgciBpbiBzZWxmLnJlcGxhY2VfcGF0aHM6CiAgICAgICAgICAgIGlmIG9yaWdpbmFsX2ZpbGVuYW1lLnN0YXJ0c3dpdGgoZik6CiAgICAgICAgICAgICAgICBuZXdfZmlsZW5hbWUgPSByICsgb3JpZ2luYWxfZmlsZW5hbWVbbGVuKGYpOl0KICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgIGlmIHNlbGYuZGVidWcgYW5kIG9yaWdpbmFsX2ZpbGVuYW1lIG5vdCBpbiBzZWxmLnByb2Nlc3NlZF9wYXRoczoKICAgICAgICAgICAgaWYgbmV3X2ZpbGVuYW1lICE9IG9yaWdpbmFsX2ZpbGVuYW1lOgogICAgICAgICAgICAgICAgc2VsZi5tc2dvdXQoMiwgImNvX2ZpbGVuYW1lICVyIGNoYW5nZWQgdG8gJXIiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAob3JpZ2luYWxfZmlsZW5hbWUsbmV3X2ZpbGVuYW1lLCkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLm1zZ291dCgyLCAiY29fZmlsZW5hbWUgJXIgcmVtYWlucyB1bmNoYW5nZWQiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAob3JpZ2luYWxfZmlsZW5hbWUsKSkKICAgICAgICAgICAgc2VsZi5wcm9jZXNzZWRfcGF0aHMuYXBwZW5kKG9yaWdpbmFsX2ZpbGVuYW1lKQoKICAgICAgICBjb25zdHMgPSBsaXN0KGNvLmNvX2NvbnN0cykKICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY29uc3RzKSk6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29uc3RzW2ldLCB0eXBlKGNvKSk6CiAgICAgICAgICAgICAgICBjb25zdHNbaV0gPSBzZWxmLnJlcGxhY2VfcGF0aHNfaW5fY29kZShjb25zdHNbaV0pCgogICAgICAgIHJldHVybiBjby5yZXBsYWNlKGNvX2NvbnN0cz10dXBsZShjb25zdHMpLCBjb19maWxlbmFtZT1uZXdfZmlsZW5hbWUpCgoKZGVmIHRlc3QoKToKICAgICMgUGFyc2UgY29tbWFuZCBsaW5lCiAgICBpbXBvcnQgZ2V0b3B0CiAgICB0cnk6CiAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiZG1wOnF4OiIpCiAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKICAgICAgICBwcmludChtc2cpCiAgICAgICAgcmV0dXJuCgogICAgIyBQcm9jZXNzIG9wdGlvbnMKICAgIGRlYnVnID0gMQogICAgZG9tb2RzID0gMAogICAgYWRkcGF0aCA9IFtdCiAgICBleGNsdWRlID0gW10KICAgIGZvciBvLCBhIGluIG9wdHM6CiAgICAgICAgaWYgbyA9PSAnLWQnOgogICAgICAgICAgICBkZWJ1ZyA9IGRlYnVnICsgMQogICAgICAgIGlmIG8gPT0gJy1tJzoKICAgICAgICAgICAgZG9tb2RzID0gMQogICAgICAgIGlmIG8gPT0gJy1wJzoKICAgICAgICAgICAgYWRkcGF0aCA9IGFkZHBhdGggKyBhLnNwbGl0KG9zLnBhdGhzZXApCiAgICAgICAgaWYgbyA9PSAnLXEnOgogICAgICAgICAgICBkZWJ1ZyA9IDAKICAgICAgICBpZiBvID09ICcteCc6CiAgICAgICAgICAgIGV4Y2x1ZGUuYXBwZW5kKGEpCgogICAgIyBQcm92aWRlIGRlZmF1bHQgYXJndW1lbnRzCiAgICBpZiBub3QgYXJnczoKICAgICAgICBzY3JpcHQgPSAiaGVsbG8ucHkiCiAgICBlbHNlOgogICAgICAgIHNjcmlwdCA9IGFyZ3NbMF0KCiAgICAjIFNldCB0aGUgcGF0aCBiYXNlZCBvbiBzeXMucGF0aCBhbmQgdGhlIHNjcmlwdCBkaXJlY3RvcnkKICAgIHBhdGggPSBzeXMucGF0aFs6XQogICAgcGF0aFswXSA9IG9zLnBhdGguZGlybmFtZShzY3JpcHQpCiAgICBwYXRoID0gYWRkcGF0aCArIHBhdGgKICAgIGlmIGRlYnVnID4gMToKICAgICAgICBwcmludCgicGF0aDoiKQogICAgICAgIGZvciBpdGVtIGluIHBhdGg6CiAgICAgICAgICAgIHByaW50KCIgICAiLCByZXByKGl0ZW0pKQoKICAgICMgQ3JlYXRlIHRoZSBtb2R1bGUgZmluZGVyIGFuZCB0dXJuIGl0cyBjcmFuawogICAgbWYgPSBNb2R1bGVGaW5kZXIocGF0aCwgZGVidWcsIGV4Y2x1ZGUpCiAgICBmb3IgYXJnIGluIGFyZ3NbMTpdOgogICAgICAgIGlmIGFyZyA9PSAnLW0nOgogICAgICAgICAgICBkb21vZHMgPSAxCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgZG9tb2RzOgogICAgICAgICAgICBpZiBhcmdbLTI6XSA9PSAnLionOgogICAgICAgICAgICAgICAgbWYuaW1wb3J0X2hvb2soYXJnWzotMl0sIE5vbmUsIFsiKiJdKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbWYuaW1wb3J0X2hvb2soYXJnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1mLmxvYWRfZmlsZShhcmcpCiAgICBtZi5ydW5fc2NyaXB0KHNjcmlwdCkKICAgIG1mLnJlcG9ydCgpCiAgICByZXR1cm4gbWYgICMgZm9yIC1pIGRlYnVnZ2luZwoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB0cnk6CiAgICAgICAgbWYgPSB0ZXN0KCkKICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICBwcmludCgiXG5baW50ZXJydXB0ZWRdIikKUEsDBBQAAAAAAAIgo1aMklC7ERsAABEbAAAIAAAAbmV0cmMucHkiIiJBbiBvYmplY3Qtb3JpZW50ZWQgaW50ZXJmYWNlIHRvIC5uZXRyYyBmaWxlcy4iIiIKCiMgTW9kdWxlIGFuZCBkb2N1bWVudGF0aW9uIGJ5IEVyaWMgUy4gUmF5bW9uZCwgMjEgRGVjIDE5OTgKCmltcG9ydCBvcywgc2hsZXgsIHN0YXQKCl9fYWxsX18gPSBbIm5ldHJjIiwgIk5ldHJjUGFyc2VFcnJvciJdCgoKY2xhc3MgTmV0cmNQYXJzZUVycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJFeGNlcHRpb24gcmFpc2VkIG9uIHN5bnRheCBlcnJvcnMgaW4gdGhlIC5uZXRyYyBmaWxlLiIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgZmlsZW5hbWU9Tm9uZSwgbGluZW5vPU5vbmUpOgogICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgc2VsZi5tc2cgPSBtc2cKICAgICAgICBFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiJXMgKCVzLCBsaW5lICVzKSIgJSAoc2VsZi5tc2csIHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vKQoKCmNsYXNzIF9uZXRyY2xleDoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CiAgICAgICAgc2VsZi5saW5lbm8gPSAxCiAgICAgICAgc2VsZi5pbnN0cmVhbSA9IGZwCiAgICAgICAgc2VsZi53aGl0ZXNwYWNlID0gIlxuXHRcciAiCiAgICAgICAgc2VsZi5wdXNoYmFjayA9IFtdCgogICAgZGVmIF9yZWFkX2NoYXIoc2VsZik6CiAgICAgICAgY2ggPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKICAgICAgICBpZiBjaCA9PSAiXG4iOgogICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgcmV0dXJuIGNoCgogICAgZGVmIGdldF90b2tlbihzZWxmKToKICAgICAgICBpZiBzZWxmLnB1c2hiYWNrOgogICAgICAgICAgICByZXR1cm4gc2VsZi5wdXNoYmFjay5wb3AoMCkKICAgICAgICB0b2tlbiA9ICIiCiAgICAgICAgZml0ZXIgPSBpdGVyKHNlbGYuX3JlYWRfY2hhciwgIiIpCiAgICAgICAgZm9yIGNoIGluIGZpdGVyOgogICAgICAgICAgICBpZiBjaCBpbiBzZWxmLndoaXRlc3BhY2U6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBjaCA9PSAnIic6CiAgICAgICAgICAgICAgICBmb3IgY2ggaW4gZml0ZXI6CiAgICAgICAgICAgICAgICAgICAgaWYgY2ggPT0gJyInOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4KICAgICAgICAgICAgICAgICAgICBlbGlmIGNoID09ICJcXCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gc2VsZi5fcmVhZF9jaGFyKCkKICAgICAgICAgICAgICAgICAgICB0b2tlbiArPSBjaAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgY2ggPT0gIlxcIjoKICAgICAgICAgICAgICAgICAgICBjaCA9IHNlbGYuX3JlYWRfY2hhcigpCiAgICAgICAgICAgICAgICB0b2tlbiArPSBjaAogICAgICAgICAgICAgICAgZm9yIGNoIGluIGZpdGVyOgogICAgICAgICAgICAgICAgICAgIGlmIGNoIGluIHNlbGYud2hpdGVzcGFjZToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuCiAgICAgICAgICAgICAgICAgICAgZWxpZiBjaCA9PSAiXFwiOgogICAgICAgICAgICAgICAgICAgICAgICBjaCA9IHNlbGYuX3JlYWRfY2hhcigpCiAgICAgICAgICAgICAgICAgICAgdG9rZW4gKz0gY2gKICAgICAgICByZXR1cm4gdG9rZW4KCiAgICBkZWYgcHVzaF90b2tlbihzZWxmLCB0b2tlbik6CiAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmQodG9rZW4pCgoKY2xhc3MgbmV0cmM6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZT1Ob25lKToKICAgICAgICBkZWZhdWx0X25ldHJjID0gZmlsZSBpcyBOb25lCiAgICAgICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgICAgICBmaWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZXhwYW5kdXNlcigifiIpLCAiLm5ldHJjIikKICAgICAgICBzZWxmLmhvc3RzID0ge30KICAgICAgICBzZWxmLm1hY3JvcyA9IHt9CiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aXRoIG9wZW4oZmlsZSwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZnA6CiAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZShmaWxlLCBmcCwgZGVmYXVsdF9uZXRyYykKICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICB3aXRoIG9wZW4oZmlsZSwgZW5jb2Rpbmc9ImxvY2FsZSIpIGFzIGZwOgogICAgICAgICAgICAgICAgc2VsZi5fcGFyc2UoZmlsZSwgZnAsIGRlZmF1bHRfbmV0cmMpCgogICAgZGVmIF9wYXJzZShzZWxmLCBmaWxlLCBmcCwgZGVmYXVsdF9uZXRyYyk6CiAgICAgICAgbGV4ZXIgPSBfbmV0cmNsZXgoZnApCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIyBMb29rIGZvciBhIG1hY2hpbmUsIGRlZmF1bHQsIG9yIG1hY2RlZiB0b3AtbGV2ZWwga2V5d29yZAogICAgICAgICAgICBzYXZlZF9saW5lbm8gPSBsZXhlci5saW5lbm8KICAgICAgICAgICAgdG9wbGV2ZWwgPSB0dCA9IGxleGVyLmdldF90b2tlbigpCiAgICAgICAgICAgIGlmIG5vdCB0dDoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsaWYgdHRbMF0gPT0gJyMnOgogICAgICAgICAgICAgICAgaWYgbGV4ZXIubGluZW5vID09IHNhdmVkX2xpbmVubyBhbmQgbGVuKHR0KSA9PSAxOgogICAgICAgICAgICAgICAgICAgIGxleGVyLmluc3RyZWFtLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgdHQgPT0gJ21hY2hpbmUnOgogICAgICAgICAgICAgICAgZW50cnluYW1lID0gbGV4ZXIuZ2V0X3Rva2VuKCkKICAgICAgICAgICAgZWxpZiB0dCA9PSAnZGVmYXVsdCc6CiAgICAgICAgICAgICAgICBlbnRyeW5hbWUgPSAnZGVmYXVsdCcKICAgICAgICAgICAgZWxpZiB0dCA9PSAnbWFjZGVmJzoKICAgICAgICAgICAgICAgIGVudHJ5bmFtZSA9IGxleGVyLmdldF90b2tlbigpCiAgICAgICAgICAgICAgICBzZWxmLm1hY3Jvc1tlbnRyeW5hbWVdID0gW10KICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxleGVyLmluc3RyZWFtLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgTmV0cmNQYXJzZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hY3JvIGRlZmluaXRpb24gbWlzc2luZyBudWxsIGxpbmUgdGVybWluYXRvci4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgbGV4ZXIubGluZW5vKQogICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gJ1xuJzoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG1hY3JvIGRlZmluaXRpb24gZmluaXNoZWQgd2l0aCBjb25zZWN1dGl2ZSBuZXctbGluZQogICAgICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMuIFRoZSBmaXJzdCBcbiBpcyBlbmNvdW50ZXJlZCBieSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIyByZWFkbGluZSgpIG1ldGhvZCBhbmQgdGhpcyBpcyB0aGUgc2Vjb25kIFxuLgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIHNlbGYubWFjcm9zW2VudHJ5bmFtZV0uYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgTmV0cmNQYXJzZUVycm9yKAogICAgICAgICAgICAgICAgICAgICJiYWQgdG9wbGV2ZWwgdG9rZW4gJXIiICUgdHQsIGZpbGUsIGxleGVyLmxpbmVubykKCiAgICAgICAgICAgIGlmIG5vdCBlbnRyeW5hbWU6CiAgICAgICAgICAgICAgICByYWlzZSBOZXRyY1BhcnNlRXJyb3IoIm1pc3NpbmcgJXIgbmFtZSIgJSB0dCwgZmlsZSwgbGV4ZXIubGluZW5vKQoKICAgICAgICAgICAgIyBXZSdyZSBsb29raW5nIGF0IHN0YXJ0IG9mIGFuIGVudHJ5IGZvciBhIG5hbWVkIG1hY2hpbmUgb3IgZGVmYXVsdC4KICAgICAgICAgICAgbG9naW4gPSBhY2NvdW50ID0gcGFzc3dvcmQgPSAnJwogICAgICAgICAgICBzZWxmLmhvc3RzW2VudHJ5bmFtZV0gPSB7fQogICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgcHJldl9saW5lbm8gPSBsZXhlci5saW5lbm8KICAgICAgICAgICAgICAgIHR0ID0gbGV4ZXIuZ2V0X3Rva2VuKCkKICAgICAgICAgICAgICAgIGlmIHR0LnN0YXJ0c3dpdGgoJyMnKToKICAgICAgICAgICAgICAgICAgICBpZiBsZXhlci5saW5lbm8gPT0gcHJldl9saW5lbm86CiAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyLmluc3RyZWFtLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgaWYgdHQgaW4geycnLCAnbWFjaGluZScsICdkZWZhdWx0JywgJ21hY2RlZid9OgogICAgICAgICAgICAgICAgICAgIHNlbGYuaG9zdHNbZW50cnluYW1lXSA9IChsb2dpbiwgYWNjb3VudCwgcGFzc3dvcmQpCiAgICAgICAgICAgICAgICAgICAgbGV4ZXIucHVzaF90b2tlbih0dCkKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZWxpZiB0dCA9PSAnbG9naW4nIG9yIHR0ID09ICd1c2VyJzoKICAgICAgICAgICAgICAgICAgICBsb2dpbiA9IGxleGVyLmdldF90b2tlbigpCiAgICAgICAgICAgICAgICBlbGlmIHR0ID09ICdhY2NvdW50JzoKICAgICAgICAgICAgICAgICAgICBhY2NvdW50ID0gbGV4ZXIuZ2V0X3Rva2VuKCkKICAgICAgICAgICAgICAgIGVsaWYgdHQgPT0gJ3Bhc3N3b3JkJzoKICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCA9IGxleGVyLmdldF90b2tlbigpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIE5ldHJjUGFyc2VFcnJvcigiYmFkIGZvbGxvd2VyIHRva2VuICVyIiAlIHR0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCBsZXhlci5saW5lbm8pCiAgICAgICAgICAgIHNlbGYuX3NlY3VyaXR5X2NoZWNrKGZwLCBkZWZhdWx0X25ldHJjLCBzZWxmLmhvc3RzW2VudHJ5bmFtZV1bMF0pCgogICAgZGVmIF9zZWN1cml0eV9jaGVjayhzZWxmLCBmcCwgZGVmYXVsdF9uZXRyYywgbG9naW4pOgogICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgZGVmYXVsdF9uZXRyYyBhbmQgbG9naW4gIT0gImFub255bW91cyI6CiAgICAgICAgICAgIHByb3AgPSBvcy5mc3RhdChmcC5maWxlbm8oKSkKICAgICAgICAgICAgaWYgcHJvcC5zdF91aWQgIT0gb3MuZ2V0dWlkKCk6CiAgICAgICAgICAgICAgICBpbXBvcnQgcHdkCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZm93bmVyID0gcHdkLmdldHB3dWlkKHByb3Auc3RfdWlkKVswXQogICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgIGZvd25lciA9ICd1aWQgJXMnICUgcHJvcC5zdF91aWQKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICB1c2VyID0gcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKVswXQogICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgIHVzZXIgPSAndWlkICVzJyAlIG9zLmdldHVpZCgpCiAgICAgICAgICAgICAgICByYWlzZSBOZXRyY1BhcnNlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgKGYifi8ubmV0cmMgZmlsZSBvd25lciAoe2Zvd25lcn0sIHt1c2VyfSkgZG9lcyBub3QgbWF0Y2giCiAgICAgICAgICAgICAgICAgICAgICIgY3VycmVudCB1c2VyIikpCiAgICAgICAgICAgIGlmIChwcm9wLnN0X21vZGUgJiAoc3RhdC5TX0lSV1hHIHwgc3RhdC5TX0lSV1hPKSk6CiAgICAgICAgICAgICAgICByYWlzZSBOZXRyY1BhcnNlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIn4vLm5ldHJjIGFjY2VzcyB0b28gcGVybWlzc2l2ZTogYWNjZXNzIgogICAgICAgICAgICAgICAgICAgICIgcGVybWlzc2lvbnMgbXVzdCByZXN0cmljdCBhY2Nlc3MgdG8gb25seSIKICAgICAgICAgICAgICAgICAgICAiIHRoZSBvd25lciIpCgogICAgZGVmIGF1dGhlbnRpY2F0b3JzKHNlbGYsIGhvc3QpOgogICAgICAgICIiIlJldHVybiBhICh1c2VyLCBhY2NvdW50LCBwYXNzd29yZCkgdHVwbGUgZm9yIGdpdmVuIGhvc3QuIiIiCiAgICAgICAgaWYgaG9zdCBpbiBzZWxmLmhvc3RzOgogICAgICAgICAgICByZXR1cm4gc2VsZi5ob3N0c1tob3N0XQogICAgICAgIGVsaWYgJ2RlZmF1bHQnIGluIHNlbGYuaG9zdHM6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmhvc3RzWydkZWZhdWx0J10KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAiIiJEdW1wIHRoZSBjbGFzcyBkYXRhIGluIHRoZSBmb3JtYXQgb2YgYSAubmV0cmMgZmlsZS4iIiIKICAgICAgICByZXAgPSAiIgogICAgICAgIGZvciBob3N0IGluIHNlbGYuaG9zdHMua2V5cygpOgogICAgICAgICAgICBhdHRycyA9IHNlbGYuaG9zdHNbaG9zdF0KICAgICAgICAgICAgcmVwICs9IGYibWFjaGluZSB7aG9zdH1cblx0bG9naW4ge2F0dHJzWzBdfVxuIgogICAgICAgICAgICBpZiBhdHRyc1sxXToKICAgICAgICAgICAgICAgIHJlcCArPSBmIlx0YWNjb3VudCB7YXR0cnNbMV19XG4iCiAgICAgICAgICAgIHJlcCArPSBmIlx0cGFzc3dvcmQge2F0dHJzWzJdfVxuIgogICAgICAgIGZvciBtYWNybyBpbiBzZWxmLm1hY3Jvcy5rZXlzKCk6CiAgICAgICAgICAgIHJlcCArPSBmIm1hY2RlZiB7bWFjcm99XG4iCiAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYubWFjcm9zW21hY3JvXToKICAgICAgICAgICAgICAgIHJlcCArPSBsaW5lCiAgICAgICAgICAgIHJlcCArPSAiXG4iCiAgICAgICAgcmV0dXJuIHJlcAoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIHByaW50KG5ldHJjKCkpClBLAwQUAAAAAAACIKNWLLE+J3+gAAB/oAAACgAAAG5udHBsaWIucHkiIiJBbiBOTlRQIGNsaWVudCBjbGFzcyBiYXNlZCBvbjoKLSBSRkMgOTc3OiBOZXR3b3JrIE5ld3MgVHJhbnNmZXIgUHJvdG9jb2wKLSBSRkMgMjk4MDogQ29tbW9uIE5OVFAgRXh0ZW5zaW9ucwotIFJGQyAzOTc3OiBOZXR3b3JrIE5ld3MgVHJhbnNmZXIgUHJvdG9jb2wgKHZlcnNpb24gMikKCkV4YW1wbGU6Cgo+Pj4gZnJvbSBubnRwbGliIGltcG9ydCBOTlRQCj4+PiBzID0gTk5UUCgnbmV3cycpCj4+PiByZXNwLCBjb3VudCwgZmlyc3QsIGxhc3QsIG5hbWUgPSBzLmdyb3VwKCdjb21wLmxhbmcucHl0aG9uJykKPj4+IHByaW50KCdHcm91cCcsIG5hbWUsICdoYXMnLCBjb3VudCwgJ2FydGljbGVzLCByYW5nZScsIGZpcnN0LCAndG8nLCBsYXN0KQpHcm91cCBjb21wLmxhbmcucHl0aG9uIGhhcyA1MSBhcnRpY2xlcywgcmFuZ2UgNTc3MCB0byA1ODIxCj4+PiByZXNwLCBzdWJzID0gcy54aGRyKCdzdWJqZWN0JywgJ3swfS17MX0nLmZvcm1hdChmaXJzdCwgbGFzdCkpCj4+PiByZXNwID0gcy5xdWl0KCkKPj4+CgpIZXJlICdyZXNwJyBpcyB0aGUgc2VydmVyIHJlc3BvbnNlIGxpbmUuCkVycm9yIHJlc3BvbnNlcyBhcmUgdHVybmVkIGludG8gZXhjZXB0aW9ucy4KClRvIHBvc3QgYW4gYXJ0aWNsZSBmcm9tIGEgZmlsZToKPj4+IGYgPSBvcGVuKGZpbGVuYW1lLCAncmInKSAjIGZpbGUgY29udGFpbmluZyBhcnRpY2xlLCBpbmNsdWRpbmcgaGVhZGVyCj4+PiByZXNwID0gcy5wb3N0KGYpCj4+PgoKRm9yIGRlc2NyaXB0aW9ucyBvZiBhbGwgbWV0aG9kcywgcmVhZCB0aGUgY29tbWVudHMgaW4gdGhlIGNvZGUgYmVsb3cuCk5vdGUgdGhhdCBhbGwgYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWVzIHJlcHJlc2VudGluZyBhcnRpY2xlIG51bWJlcnMKYXJlIHN0cmluZ3MsIG5vdCBudW1iZXJzLCBzaW5jZSB0aGV5IGFyZSByYXJlbHkgdXNlZCBmb3IgY2FsY3VsYXRpb25zLgoiIiIKCiMgUkZDIDk3NyBieSBCcmlhbiBLYW50b3IgYW5kIFBoaWwgTGFwc2xleS4KIyB4b3ZlciwgeGd0aXRsZSwgeHBhdGgsIGRhdGUgbWV0aG9kcyBieSBLZXZhbiBIZXlkb24KCiMgSW5jb21wYXRpYmxlIGNoYW5nZXMgZnJvbSB0aGUgMi54IG5udHBsaWI6CiMgLSBhbGwgY29tbWFuZHMgYXJlIGVuY29kZWQgYXMgVVRGLTggZGF0YSAodXNpbmcgdGhlICJzdXJyb2dhdGVlc2NhcGUiCiMgICBlcnJvciBoYW5kbGVyKSwgZXhjZXB0IGZvciByYXcgbWVzc2FnZSBkYXRhIChQT1NULCBJSEFWRSkKIyAtIGFsbCByZXNwb25zZXMgYXJlIGRlY29kZWQgYXMgVVRGLTggZGF0YSAodXNpbmcgdGhlICJzdXJyb2dhdGVlc2NhcGUiCiMgICBlcnJvciBoYW5kbGVyKSwgZXhjZXB0IGZvciByYXcgbWVzc2FnZSBkYXRhIChBUlRJQ0xFLCBIRUFELCBCT0RZKQojIC0gdGhlIGBmaWxlYCBhcmd1bWVudCB0byB2YXJpb3VzIG1ldGhvZHMgaXMga2V5d29yZC1vbmx5CiMKIyAtIE5OVFAuZGF0ZSgpIHJldHVybnMgYSBkYXRldGltZSBvYmplY3QKIyAtIE5OVFAubmV3Z3JvdXBzKCkgYW5kIE5OVFAubmV3bmV3cygpIHRha2UgYSBkYXRldGltZSAob3IgZGF0ZSkgb2JqZWN0LAojICAgcmF0aGVyIHRoYW4gYSBwYWlyIG9mIChkYXRlLCB0aW1lKSBzdHJpbmdzLgojIC0gTk5UUC5uZXdncm91cHMoKSBhbmQgTk5UUC5saXN0KCkgcmV0dXJuIGEgbGlzdCBvZiBHcm91cEluZm8gbmFtZWQgdHVwbGVzCiMgLSBOTlRQLmRlc2NyaXB0aW9ucygpIHJldHVybnMgYSBkaWN0IG1hcHBpbmcgZ3JvdXAgbmFtZXMgdG8gZGVzY3JpcHRpb25zCiMgLSBOTlRQLnhvdmVyKCkgcmV0dXJucyBhIGxpc3Qgb2YgZGljdHMgbWFwcGluZyBmaWVsZCBuYW1lcyAoaGVhZGVyIG9yIG1ldGFkYXRhKQojICAgdG8gZmllbGQgdmFsdWVzOyBlYWNoIGRpY3QgcmVwcmVzZW50aW5nIGEgbWVzc2FnZSBvdmVydmlldy4KIyAtIE5OVFAuYXJ0aWNsZSgpLCBOTlRQLmhlYWQoKSBhbmQgTk5UUC5ib2R5KCkgcmV0dXJuIGEgKHJlc3BvbnNlLCBBcnRpY2xlSW5mbykKIyAgIHR1cGxlLgojIC0gdGhlICJpbnRlcm5hbCIgbWV0aG9kcyBoYXZlIGJlZW4gbWFya2VkIHByaXZhdGUgKHRoZXkgbm93IHN0YXJ0IHdpdGgKIyAgIGFuIHVuZGVyc2NvcmUpCgojIE90aGVyIGNoYW5nZXMgZnJvbSB0aGUgMi54LzMuMSBubnRwbGliOgojIC0gYXV0b21hdGljIHF1ZXJ5aW5nIG9mIGNhcGFiaWxpdGllcyBhdCBjb25uZWN0CiMgLSBOZXcgbWV0aG9kIE5OVFAuZ2V0Y2FwYWJpbGl0aWVzKCkKIyAtIE5ldyBtZXRob2QgTk5UUC5vdmVyKCkKIyAtIE5ldyBoZWxwZXIgZnVuY3Rpb24gZGVjb2RlX2hlYWRlcigpCiMgLSBOTlRQLnBvc3QoKSBhbmQgTk5UUC5paGF2ZSgpIGFjY2VwdCBmaWxlIG9iamVjdHMsIGJ5dGVzLWxpa2Ugb2JqZWN0cyBhbmQKIyAgIGFyYml0cmFyeSBpdGVyYWJsZXMgeWllbGRpbmcgbGluZXMuCiMgLSBBbiBleHRlbnNpdmUgdGVzdCBzdWl0ZSA6LSkKCiMgVE9ETzoKIyAtIHJldHVybiBzdHJ1Y3R1cmVkIGRhdGEgKEdyb3VwSW5mbyBldGMuKSBldmVyeXdoZXJlCiMgLSBzdXBwb3J0IEhEUgoKIyBJbXBvcnRzCmltcG9ydCByZQppbXBvcnQgc29ja2V0CmltcG9ydCBjb2xsZWN0aW9ucwppbXBvcnQgZGF0ZXRpbWUKaW1wb3J0IHN5cwppbXBvcnQgd2FybmluZ3MKCnRyeToKICAgIGltcG9ydCBzc2wKZXhjZXB0IEltcG9ydEVycm9yOgogICAgX2hhdmVfc3NsID0gRmFsc2UKZWxzZToKICAgIF9oYXZlX3NzbCA9IFRydWUKCmZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBkZWNvZGVfaGVhZGVyIGFzIF9lbWFpbF9kZWNvZGVfaGVhZGVyCmZyb20gc29ja2V0IGltcG9ydCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVAoKX19hbGxfXyA9IFsiTk5UUCIsCiAgICAgICAgICAgIk5OVFBFcnJvciIsICJOTlRQUmVwbHlFcnJvciIsICJOTlRQVGVtcG9yYXJ5RXJyb3IiLAogICAgICAgICAgICJOTlRQUGVybWFuZW50RXJyb3IiLCAiTk5UUFByb3RvY29sRXJyb3IiLCAiTk5UUERhdGFFcnJvciIsCiAgICAgICAgICAgImRlY29kZV9oZWFkZXIiLAogICAgICAgICAgIF0KCndhcm5pbmdzLl9kZXByZWNhdGVkKF9fbmFtZV9fLCByZW1vdmU9KDMsIDEzKSkKCiMgbWF4aW1hbCBsaW5lIGxlbmd0aCB3aGVuIGNhbGxpbmcgcmVhZGxpbmUoKS4gVGhpcyBpcyB0byBwcmV2ZW50CiMgcmVhZGluZyBhcmJpdHJhcnkgbGVuZ3RoIGxpbmVzLiBSRkMgMzk3NyBsaW1pdHMgTk5UUCBsaW5lIGxlbmd0aCB0bwojIDUxMiBjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgQ1JMRi4gV2UgaGF2ZSBzZWxlY3RlZCAyMDQ4IGp1c3QgdG8gYmUgb24KIyB0aGUgc2FmZSBzaWRlLgpfTUFYTElORSA9IDIwNDgKCgojIEV4Y2VwdGlvbnMgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb3IgaW52YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZApjbGFzcyBOTlRQRXJyb3IoRXhjZXB0aW9uKToKICAgICIiIkJhc2UgY2xhc3MgZm9yIGFsbCBubnRwbGliIGV4Y2VwdGlvbnMiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsICphcmdzKQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5yZXNwb25zZSA9IGFyZ3NbMF0KICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgc2VsZi5yZXNwb25zZSA9ICdObyByZXNwb25zZSBnaXZlbicKCmNsYXNzIE5OVFBSZXBseUVycm9yKE5OVFBFcnJvcik6CiAgICAiIiJVbmV4cGVjdGVkIFsxMjNdeHggcmVwbHkiIiIKICAgIHBhc3MKCmNsYXNzIE5OVFBUZW1wb3JhcnlFcnJvcihOTlRQRXJyb3IpOgogICAgIiIiNHh4IGVycm9ycyIiIgogICAgcGFzcwoKY2xhc3MgTk5UUFBlcm1hbmVudEVycm9yKE5OVFBFcnJvcik6CiAgICAiIiI1eHggZXJyb3JzIiIiCiAgICBwYXNzCgpjbGFzcyBOTlRQUHJvdG9jb2xFcnJvcihOTlRQRXJyb3IpOgogICAgIiIiUmVzcG9uc2UgZG9lcyBub3QgYmVnaW4gd2l0aCBbMS01XSIiIgogICAgcGFzcwoKY2xhc3MgTk5UUERhdGFFcnJvcihOTlRQRXJyb3IpOgogICAgIiIiRXJyb3IgaW4gcmVzcG9uc2UgZGF0YSIiIgogICAgcGFzcwoKCiMgU3RhbmRhcmQgcG9ydCB1c2VkIGJ5IE5OVFAgc2VydmVycwpOTlRQX1BPUlQgPSAxMTkKTk5UUF9TU0xfUE9SVCA9IDU2MwoKIyBSZXNwb25zZSBudW1iZXJzIHRoYXQgYXJlIGZvbGxvd2VkIGJ5IGFkZGl0aW9uYWwgdGV4dCAoZS5nLiBhcnRpY2xlKQpfTE9OR1JFU1AgPSB7CiAgICAnMTAwJywgICAjIEhFTFAKICAgICcxMDEnLCAgICMgQ0FQQUJJTElUSUVTCiAgICAnMjExJywgICAjIExJU1RHUk9VUCAgIChhbHNvIG5vdCBtdWx0aS1saW5lIHdpdGggR1JPVVApCiAgICAnMjE1JywgICAjIExJU1QKICAgICcyMjAnLCAgICMgQVJUSUNMRQogICAgJzIyMScsICAgIyBIRUFELCBYSERSCiAgICAnMjIyJywgICAjIEJPRFkKICAgICcyMjQnLCAgICMgT1ZFUiwgWE9WRVIKICAgICcyMjUnLCAgICMgSERSCiAgICAnMjMwJywgICAjIE5FV05FV1MKICAgICcyMzEnLCAgICMgTkVXR1JPVVBTCiAgICAnMjgyJywgICAjIFhHVElUTEUKfQoKIyBEZWZhdWx0IGRlY29kZWQgdmFsdWUgZm9yIExJU1QgT1ZFUlZJRVcuRk1UIGlmIG5vdCBzdXBwb3J0ZWQKX0RFRkFVTFRfT1ZFUlZJRVdfRk1UID0gWwogICAgInN1YmplY3QiLCAiZnJvbSIsICJkYXRlIiwgIm1lc3NhZ2UtaWQiLCAicmVmZXJlbmNlcyIsICI6Ynl0ZXMiLCAiOmxpbmVzIl0KCiMgQWx0ZXJuYXRpdmUgbmFtZXMgYWxsb3dlZCBpbiBMSVNUIE9WRVJWSUVXLkZNVCByZXNwb25zZQpfT1ZFUlZJRVdfRk1UX0FMVEVSTkFUSVZFUyA9IHsKICAgICdieXRlcyc6ICc6Ynl0ZXMnLAogICAgJ2xpbmVzJzogJzpsaW5lcycsCn0KCiMgTGluZSB0ZXJtaW5hdG9ycyAod2UgYWx3YXlzIG91dHB1dCBDUkxGLCBidXQgYWNjZXB0IGFueSBvZiBDUkxGLCBDUiwgTEYpCl9DUkxGID0gYidcclxuJwoKR3JvdXBJbmZvID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnR3JvdXBJbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2dyb3VwJywgJ2xhc3QnLCAnZmlyc3QnLCAnZmxhZyddKQoKQXJ0aWNsZUluZm8gPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdBcnRpY2xlSW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ251bWJlcicsICdtZXNzYWdlX2lkJywgJ2xpbmVzJ10pCgoKIyBIZWxwZXIgZnVuY3Rpb24ocykKZGVmIGRlY29kZV9oZWFkZXIoaGVhZGVyX3N0cik6CiAgICAiIiJUYWtlcyBhIHVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIG11bmdlZCBoZWFkZXIgdmFsdWUKICAgIGFuZCBkZWNvZGVzIGl0IGFzIGEgKHBvc3NpYmx5IG5vbi1BU0NJSSkgcmVhZGFibGUgdmFsdWUuIiIiCiAgICBwYXJ0cyA9IFtdCiAgICBmb3IgdiwgZW5jIGluIF9lbWFpbF9kZWNvZGVfaGVhZGVyKGhlYWRlcl9zdHIpOgogICAgICAgIGlmIGlzaW5zdGFuY2UodiwgYnl0ZXMpOgogICAgICAgICAgICBwYXJ0cy5hcHBlbmQodi5kZWNvZGUoZW5jIG9yICdhc2NpaScpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcnRzLmFwcGVuZCh2KQogICAgcmV0dXJuICcnLmpvaW4ocGFydHMpCgpkZWYgX3BhcnNlX292ZXJ2aWV3X2ZtdChsaW5lcyk6CiAgICAiIiJQYXJzZSBhIGxpc3Qgb2Ygc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2UgdG8gTElTVCBPVkVSVklFVy5GTVQKICAgIGFuZCByZXR1cm4gYSBsaXN0IG9mIGhlYWRlci9tZXRhZGF0YSBuYW1lcy4KICAgIFJhaXNlcyBOTlRQRGF0YUVycm9yIGlmIHRoZSByZXNwb25zZSBpcyBub3QgY29tcGxpYW50CiAgICAoY2YuIFJGQyAzOTc3LCBzZWN0aW9uIDguNCkuIiIiCiAgICBmbXQgPSBbXQogICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgaWYgbGluZVswXSA9PSAnOic6CiAgICAgICAgICAgICMgTWV0YWRhdGEgbmFtZSAoZS5nLiAiOmJ5dGVzIikKICAgICAgICAgICAgbmFtZSwgXywgc3VmZml4ID0gbGluZVsxOl0ucGFydGl0aW9uKCc6JykKICAgICAgICAgICAgbmFtZSA9ICc6JyArIG5hbWUKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEhlYWRlciBuYW1lIChlLmcuICJTdWJqZWN0OiIgb3IgIlhyZWY6ZnVsbCIpCiAgICAgICAgICAgIG5hbWUsIF8sIHN1ZmZpeCA9IGxpbmUucGFydGl0aW9uKCc6JykKICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCiAgICAgICAgbmFtZSA9IF9PVkVSVklFV19GTVRfQUxURVJOQVRJVkVTLmdldChuYW1lLCBuYW1lKQogICAgICAgICMgU2hvdWxkIHdlIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBzdWZmaXg/CiAgICAgICAgZm10LmFwcGVuZChuYW1lKQogICAgZGVmYXVsdHMgPSBfREVGQVVMVF9PVkVSVklFV19GTVQKICAgIGlmIGxlbihmbXQpIDwgbGVuKGRlZmF1bHRzKToKICAgICAgICByYWlzZSBOTlRQRGF0YUVycm9yKCJMSVNUIE9WRVJWSUVXLkZNVCByZXNwb25zZSB0b28gc2hvcnQiKQogICAgaWYgZm10WzpsZW4oZGVmYXVsdHMpXSAhPSBkZWZhdWx0czoKICAgICAgICByYWlzZSBOTlRQRGF0YUVycm9yKCJMSVNUIE9WRVJWSUVXLkZNVCByZWRlZmluZXMgZGVmYXVsdCBmaWVsZHMiKQogICAgcmV0dXJuIGZtdAoKZGVmIF9wYXJzZV9vdmVydmlldyhsaW5lcywgZm10LCBkYXRhX3Byb2Nlc3NfZnVuYz1Ob25lKToKICAgICIiIlBhcnNlIHRoZSByZXNwb25zZSB0byBhbiBPVkVSIG9yIFhPVkVSIGNvbW1hbmQgYWNjb3JkaW5nIHRvIHRoZQogICAgb3ZlcnZpZXcgZm9ybWF0IGBmbXRgLiIiIgogICAgbl9kZWZhdWx0cyA9IGxlbihfREVGQVVMVF9PVkVSVklFV19GTVQpCiAgICBvdmVydmlldyA9IFtdCiAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICBmaWVsZHMgPSB7fQogICAgICAgIGFydGljbGVfbnVtYmVyLCAqdG9rZW5zID0gbGluZS5zcGxpdCgnXHQnKQogICAgICAgIGFydGljbGVfbnVtYmVyID0gaW50KGFydGljbGVfbnVtYmVyKQogICAgICAgIGZvciBpLCB0b2tlbiBpbiBlbnVtZXJhdGUodG9rZW5zKToKICAgICAgICAgICAgaWYgaSA+PSBsZW4oZm10KToKICAgICAgICAgICAgICAgICMgWFhYIHNob3VsZCB3ZSByYWlzZSBhbiBlcnJvcj8gU29tZSBzZXJ2ZXJzIG1pZ2h0IG5vdAogICAgICAgICAgICAgICAgIyBzdXBwb3J0IExJU1QgT1ZFUlZJRVcuRk1UIGFuZCBzdGlsbCByZXR1cm4gYWRkaXRpb25hbAogICAgICAgICAgICAgICAgIyBoZWFkZXJzLgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZmllbGRfbmFtZSA9IGZtdFtpXQogICAgICAgICAgICBpc19tZXRhZGF0YSA9IGZpZWxkX25hbWUuc3RhcnRzd2l0aCgnOicpCiAgICAgICAgICAgIGlmIGkgPj0gbl9kZWZhdWx0cyBhbmQgbm90IGlzX21ldGFkYXRhOgogICAgICAgICAgICAgICAgIyBOb24tZGVmYXVsdCBoZWFkZXIgbmFtZXMgYXJlIGluY2x1ZGVkIGluIGZ1bGwgaW4gdGhlIHJlc3BvbnNlCiAgICAgICAgICAgICAgICAjICh1bmxlc3MgdGhlIGZpZWxkIGlzIHRvdGFsbHkgZW1wdHkpCiAgICAgICAgICAgICAgICBoID0gZmllbGRfbmFtZSArICI6ICIKICAgICAgICAgICAgICAgIGlmIHRva2VuIGFuZCB0b2tlbls6bGVuKGgpXS5sb3dlcigpICE9IGg6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgTk5UUERhdGFFcnJvcigiT1ZFUi9YT1ZFUiByZXNwb25zZSBkb2Vzbid0IGluY2x1ZGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVzIG9mIGFkZGl0aW9uYWwgaGVhZGVycyIpCiAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuW2xlbihoKTpdIGlmIHRva2VuIGVsc2UgTm9uZQogICAgICAgICAgICBmaWVsZHNbZm10W2ldXSA9IHRva2VuCiAgICAgICAgb3ZlcnZpZXcuYXBwZW5kKChhcnRpY2xlX251bWJlciwgZmllbGRzKSkKICAgIHJldHVybiBvdmVydmlldwoKZGVmIF9wYXJzZV9kYXRldGltZShkYXRlX3N0ciwgdGltZV9zdHI9Tm9uZSk6CiAgICAiIiJQYXJzZSBhIHBhaXIgb2YgKGRhdGUsIHRpbWUpIHN0cmluZ3MsIGFuZCByZXR1cm4gYSBkYXRldGltZSBvYmplY3QuCiAgICBJZiBvbmx5IHRoZSBkYXRlIGlzIGdpdmVuLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGRhdGUgYW5kIHRpbWUKICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciAoZS5nLiByZXNwb25zZSB0byB0aGUgREFURSBjb21tYW5kKS4KICAgICIiIgogICAgaWYgdGltZV9zdHIgaXMgTm9uZToKICAgICAgICB0aW1lX3N0ciA9IGRhdGVfc3RyWy02Ol0KICAgICAgICBkYXRlX3N0ciA9IGRhdGVfc3RyWzotNl0KICAgIGhvdXJzID0gaW50KHRpbWVfc3RyWzoyXSkKICAgIG1pbnV0ZXMgPSBpbnQodGltZV9zdHJbMjo0XSkKICAgIHNlY29uZHMgPSBpbnQodGltZV9zdHJbNDpdKQogICAgeWVhciA9IGludChkYXRlX3N0cls6LTRdKQogICAgbW9udGggPSBpbnQoZGF0ZV9zdHJbLTQ6LTJdKQogICAgZGF5ID0gaW50KGRhdGVfc3RyWy0yOl0pCiAgICAjIFJGQyAzOTc3IGRvZXNuJ3Qgc2F5IGhvdyB0byBpbnRlcnByZXQgMi1jaGFyIHllYXJzLiAgQXNzdW1lIHRoYXQKICAgICMgdGhlcmUgYXJlIG5vIGRhdGVzIGJlZm9yZSAxOTcwIG9uIFVzZW5ldC4KICAgIGlmIHllYXIgPCA3MDoKICAgICAgICB5ZWFyICs9IDIwMDAKICAgIGVsaWYgeWVhciA8IDEwMDoKICAgICAgICB5ZWFyICs9IDE5MDAKICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcykKCmRlZiBfdW5wYXJzZV9kYXRldGltZShkdCwgbGVnYWN5PUZhbHNlKToKICAgICIiIkZvcm1hdCBhIGRhdGUgb3IgZGF0ZXRpbWUgb2JqZWN0IGFzIGEgcGFpciBvZiAoZGF0ZSwgdGltZSkgc3RyaW5ncwogICAgaW4gdGhlIGZvcm1hdCByZXF1aXJlZCBieSB0aGUgTkVXTkVXUyBhbmQgTkVXR1JPVVBTIGNvbW1hbmRzLiAgSWYgYQogICAgZGF0ZSBvYmplY3QgaXMgcGFzc2VkLCB0aGUgdGltZSBpcyBhc3N1bWVkIHRvIGJlIG1pZG5pZ2h0ICgwMGgwMCkuCgogICAgVGhlIHJldHVybmVkIHJlcHJlc2VudGF0aW9uIGRlcGVuZHMgb24gdGhlIGxlZ2FjeSBmbGFnOgogICAgKiBpZiBsZWdhY3kgaXMgRmFsc2UgKHRoZSBkZWZhdWx0KToKICAgICAgZGF0ZSBoYXMgdGhlIFlZWVlNTUREIGZvcm1hdCBhbmQgdGltZSB0aGUgSEhNTVNTIGZvcm1hdAogICAgKiBpZiBsZWdhY3kgaXMgVHJ1ZToKICAgICAgZGF0ZSBoYXMgdGhlIFlZTU1ERCBmb3JtYXQgYW5kIHRpbWUgdGhlIEhITU1TUyBmb3JtYXQuCiAgICBSRkMgMzk3NyBjb21wbGlhbnQgc2VydmVycyBzaG91bGQgdW5kZXJzdGFuZCBib3RoIGZvcm1hdHM7IHRoZXJlZm9yZSwKICAgIGxlZ2FjeSBpcyBvbmx5IG5lZWRlZCB3aGVuIHRhbGtpbmcgdG8gb2xkIHNlcnZlcnMuCiAgICAiIiIKICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZS5kYXRldGltZSk6CiAgICAgICAgdGltZV9zdHIgPSAiMDAwMDAwIgogICAgZWxzZToKICAgICAgICB0aW1lX3N0ciA9ICJ7MC5ob3VyOjAyZH17MC5taW51dGU6MDJkfXswLnNlY29uZDowMmR9Ii5mb3JtYXQoZHQpCiAgICB5ID0gZHQueWVhcgogICAgaWYgbGVnYWN5OgogICAgICAgIHkgPSB5ICUgMTAwCiAgICAgICAgZGF0ZV9zdHIgPSAiezA6MDJkfXsxLm1vbnRoOjAyZH17MS5kYXk6MDJkfSIuZm9ybWF0KHksIGR0KQogICAgZWxzZToKICAgICAgICBkYXRlX3N0ciA9ICJ7MDowNGR9ezEubW9udGg6MDJkfXsxLmRheTowMmR9Ii5mb3JtYXQoeSwgZHQpCiAgICByZXR1cm4gZGF0ZV9zdHIsIHRpbWVfc3RyCgoKaWYgX2hhdmVfc3NsOgoKICAgIGRlZiBfZW5jcnlwdF9vbihzb2NrLCBjb250ZXh0LCBob3N0bmFtZSk6CiAgICAgICAgIiIiV3JhcCBhIHNvY2tldCBpbiBTU0wvVExTLiBBcmd1bWVudHM6CiAgICAgICAgLSBzb2NrOiBTb2NrZXQgdG8gd3JhcAogICAgICAgIC0gY29udGV4dDogU1NMIGNvbnRleHQgdG8gdXNlIGZvciB0aGUgZW5jcnlwdGVkIGNvbm5lY3Rpb24KICAgICAgICBSZXR1cm5zOgogICAgICAgIC0gc29jazogTmV3LCBlbmNyeXB0ZWQgc29ja2V0LgogICAgICAgICIiIgogICAgICAgICMgR2VuZXJhdGUgYSBkZWZhdWx0IFNTTCBjb250ZXh0IGlmIG5vbmUgd2FzIHBhc3NlZC4KICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpCiAgICAgICAgcmV0dXJuIGNvbnRleHQud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX2hvc3RuYW1lPWhvc3RuYW1lKQoKCiMgVGhlIGNsYXNzZXMgdGhlbXNlbHZlcwpjbGFzcyBOTlRQOgogICAgIyBVVEYtOCBpcyB0aGUgY2hhcmFjdGVyIHNldCBmb3IgYWxsIE5OVFAgY29tbWFuZHMgYW5kIHJlc3BvbnNlczogdGhleQogICAgIyBhcmUgYXV0b21hdGljYWxseSBlbmNvZGVkICh3aGVuIHNlbmRpbmcpIGFuZCBkZWNvZGVkIChhbmQgcmVjZWl2aW5nKQogICAgIyBieSB0aGlzIGNsYXNzLgogICAgIyBIb3dldmVyLCBzb21lIG11bHRpLWxpbmUgZGF0YSBibG9ja3MgY2FuIGNvbnRhaW4gYXJiaXRyYXJ5IGJ5dGVzIChmb3IKICAgICMgZXhhbXBsZSwgbGF0aW4tMSBvciB1dGYtMTYgZGF0YSBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UpLiBDb21tYW5kcwogICAgIyB0YWtpbmcgKFBPU1QsIElIQVZFKSBvciByZXR1cm5pbmcgKEhFQUQsIEJPRFksIEFSVElDTEUpIHJhdyBtZXNzYWdlCiAgICAjIGRhdGEgd2lsbCB0aGVyZWZvcmUgb25seSBhY2NlcHQgYW5kIHByb2R1Y2UgYnl0ZXMgb2JqZWN0cy4KICAgICMgRnVydGhlcm1vcmUsIHNpbmNlIHRoZXJlIGNvdWxkIGJlIG5vbi1jb21wbGlhbnQgc2VydmVycyBvdXQgdGhlcmUsCiAgICAjIHdlIHVzZSAnc3Vycm9nYXRlZXNjYXBlJyBhcyB0aGUgZXJyb3IgaGFuZGxlciBmb3IgZmF1bHQgdG9sZXJhbmNlCiAgICAjIGFuZCBlYXN5IHJvdW5kLXRyaXBwaW5nLiBUaGlzIGNvdWxkIGJlIHVzZWZ1bCBmb3Igc29tZSBhcHBsaWNhdGlvbnMKICAgICMgKGUuZy4gTk5UUCBnYXRld2F5cykuCgogICAgZW5jb2RpbmcgPSAndXRmLTgnCiAgICBlcnJvcnMgPSAnc3Vycm9nYXRlZXNjYXBlJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0PU5OVFBfUE9SVCwgdXNlcj1Ob25lLCBwYXNzd29yZD1Ob25lLAogICAgICAgICAgICAgICAgIHJlYWRlcm1vZGU9Tm9uZSwgdXNlbmV0cmM9RmFsc2UsCiAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBpbnN0YW5jZS4gIEFyZ3VtZW50czoKICAgICAgICAtIGhvc3Q6IGhvc3RuYW1lIHRvIGNvbm5lY3QgdG8KICAgICAgICAtIHBvcnQ6IHBvcnQgdG8gY29ubmVjdCB0byAoZGVmYXVsdCB0aGUgc3RhbmRhcmQgTk5UUCBwb3J0KQogICAgICAgIC0gdXNlcjogdXNlcm5hbWUgdG8gYXV0aGVudGljYXRlIHdpdGgKICAgICAgICAtIHBhc3N3b3JkOiBwYXNzd29yZCB0byB1c2Ugd2l0aCB1c2VybmFtZQogICAgICAgIC0gcmVhZGVybW9kZTogaWYgdHJ1ZSwgc2VuZCAnbW9kZSByZWFkZXInIGNvbW1hbmQgYWZ0ZXIKICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RpbmcuCiAgICAgICAgLSB1c2VuZXRyYzogYWxsb3cgbG9hZGluZyB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZnJvbSB+Ly5uZXRyYyBmaWxlCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNwZWNpZmllZCBleHBsaWNpdGx5CiAgICAgICAgLSB0aW1lb3V0OiB0aW1lb3V0IChpbiBzZWNvbmRzKSB1c2VkIGZvciBzb2NrZXQgY29ubmVjdGlvbnMKCiAgICAgICAgcmVhZGVybW9kZSBpcyBzb21ldGltZXMgbmVjZXNzYXJ5IGlmIHlvdSBhcmUgY29ubmVjdGluZyB0byBhbgogICAgICAgIE5OVFAgc2VydmVyIG9uIHRoZSBsb2NhbCBtYWNoaW5lIGFuZCBpbnRlbmQgdG8gY2FsbAogICAgICAgIHJlYWRlci1zcGVjaWZpYyBjb21tYW5kcywgc3VjaCBhcyBgZ3JvdXAnLiAgSWYgeW91IGdldAogICAgICAgIHVuZXhwZWN0ZWQgTk5UUFBlcm1hbmVudEVycm9ycywgeW91IG1pZ2h0IG5lZWQgdG8gc2V0CiAgICAgICAgcmVhZGVybW9kZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2NyZWF0ZV9zb2NrZXQodGltZW91dCkKICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUoInJ3YiIpCiAgICAgICAgICAgIHNlbGYuX2Jhc2VfaW5pdChyZWFkZXJtb2RlKQogICAgICAgICAgICBpZiB1c2VyIG9yIHVzZW5ldHJjOgogICAgICAgICAgICAgICAgc2VsZi5sb2dpbih1c2VyLCBwYXNzd29yZCwgdXNlbmV0cmMpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBpZiBzZWxmLmZpbGU6CiAgICAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICAgICByYWlzZQoKICAgIGRlZiBfYmFzZV9pbml0KHNlbGYsIHJlYWRlcm1vZGUpOgogICAgICAgICIiIlBhcnRpYWwgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBOTlRQIHByb3RvY29sLgogICAgICAgIFRoaXMgaW5zdGFuY2UgbWV0aG9kIGlzIGV4dHJhY3RlZCBmb3Igc3VwcG9ydGluZyB0aGUgdGVzdCBjb2RlLgogICAgICAgICIiIgogICAgICAgIHNlbGYuZGVidWdnaW5nID0gMAogICAgICAgIHNlbGYud2VsY29tZSA9IHNlbGYuX2dldHJlc3AoKQoKICAgICAgICAjIElucXVpcmUgYWJvdXQgY2FwYWJpbGl0aWVzIChSRkMgMzk3NykuCiAgICAgICAgc2VsZi5fY2FwcyA9IE5vbmUKICAgICAgICBzZWxmLmdldGNhcGFiaWxpdGllcygpCgogICAgICAgICMgJ01PREUgUkVBREVSJyBpcyBzb21ldGltZXMgbmVjZXNzYXJ5IHRvIGVuYWJsZSAncmVhZGVyJyBtb2RlLgogICAgICAgICMgSG93ZXZlciwgdGhlIG9yZGVyIGluIHdoaWNoICdNT0RFIFJFQURFUicgYW5kICdBVVRISU5GTycgbmVlZCB0bwogICAgICAgICMgYXJyaXZlIGRpZmZlcnMgYmV0d2VlbiBzb21lIE5OVFAgc2VydmVycy4gSWYgX3NldHJlYWRlcm1vZGUoKSBmYWlscwogICAgICAgICMgd2l0aCBhbiBhdXRob3JpemF0aW9uIGZhaWxlZCBlcnJvciwgaXQgd2lsbCBzZXQgdGhpcyB0byBUcnVlOwogICAgICAgICMgdGhlIGxvZ2luKCkgcm91dGluZSB3aWxsIGludGVycHJldCB0aGF0IGFzIGEgcmVxdWVzdCB0byB0cnkgYWdhaW4KICAgICAgICAjIGFmdGVyIHBlcmZvcm1pbmcgaXRzIG5vcm1hbCBmdW5jdGlvbi4KICAgICAgICAjIEVuYWJsZSBvbmx5IGlmIHdlJ3JlIG5vdCBhbHJlYWR5IGluIFJFQURFUiBtb2RlIGFueXdheS4KICAgICAgICBzZWxmLnJlYWRlcm1vZGVfYWZ0ZXJhdXRoID0gRmFsc2UKICAgICAgICBpZiByZWFkZXJtb2RlIGFuZCAnUkVBREVSJyBub3QgaW4gc2VsZi5fY2FwczoKICAgICAgICAgICAgc2VsZi5fc2V0cmVhZGVybW9kZSgpCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlYWRlcm1vZGVfYWZ0ZXJhdXRoOgogICAgICAgICAgICAgICAgIyBDYXBhYmlsaXRpZXMgbWlnaHQgaGF2ZSBjaGFuZ2VkIGFmdGVyIE1PREUgUkVBREVSCiAgICAgICAgICAgICAgICBzZWxmLl9jYXBzID0gTm9uZQogICAgICAgICAgICAgICAgc2VsZi5nZXRjYXBhYmlsaXRpZXMoKQoKICAgICAgICAjIFJGQyA0NjQyIDIuMi4yOiBCb3RoIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgTVVTVCBrbm93IGlmIHRoZXJlIGlzCiAgICAgICAgIyBhIFRMUyBzZXNzaW9uIGFjdGl2ZS4gIEEgY2xpZW50IE1VU1QgTk9UIGF0dGVtcHQgdG8gc3RhcnQgYSBUTFMKICAgICAgICAjIHNlc3Npb24gaWYgYSBUTFMgc2Vzc2lvbiBpcyBhbHJlYWR5IGFjdGl2ZS4KICAgICAgICBzZWxmLnRsc19vbiA9IEZhbHNlCgogICAgICAgICMgTG9nIGluIGFuZCBlbmNyeXB0aW9uIHNldHVwIG9yZGVyIGlzIGxlZnQgdG8gc3ViY2xhc3Nlcy4KICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBGYWxzZQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgogICAgICAgIGlzX2Nvbm5lY3RlZCA9IGxhbWJkYTogaGFzYXR0cihzZWxmLCAiZmlsZSIpCiAgICAgICAgaWYgaXNfY29ubmVjdGVkKCk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYucXVpdCgpCiAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgaWYgaXNfY29ubmVjdGVkKCk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQoKICAgIGRlZiBfY3JlYXRlX3NvY2tldChzZWxmLCB0aW1lb3V0KToKICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCBub3QgdGltZW91dDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm9uLWJsb2NraW5nIHNvY2tldCAodGltZW91dD0wKSBpcyBub3Qgc3VwcG9ydGVkJykKICAgICAgICBzeXMuYXVkaXQoIm5udHBsaWIuY29ubmVjdCIsIHNlbGYsIHNlbGYuaG9zdCwgc2VsZi5wb3J0KQogICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgdGltZW91dCkKCiAgICBkZWYgZ2V0d2VsY29tZShzZWxmKToKICAgICAgICAiIiJHZXQgdGhlIHdlbGNvbWUgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2ZXIKICAgICAgICAodGhpcyBpcyByZWFkIGFuZCBzcXVpcnJlbGVkIGF3YXkgYnkgX19pbml0X18oKSkuCiAgICAgICAgSWYgdGhlIHJlc3BvbnNlIGNvZGUgaXMgMjAwLCBwb3N0aW5nIGlzIGFsbG93ZWQ7CiAgICAgICAgaWYgaXQgMjAxLCBwb3N0aW5nIGlzIG5vdCBhbGxvd2VkLiIiIgoKICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZzogcHJpbnQoJyp3ZWxjb21lKicsIHJlcHIoc2VsZi53ZWxjb21lKSkKICAgICAgICByZXR1cm4gc2VsZi53ZWxjb21lCgogICAgZGVmIGdldGNhcGFiaWxpdGllcyhzZWxmKToKICAgICAgICAiIiJHZXQgdGhlIHNlcnZlciBjYXBhYmlsaXRpZXMsIGFzIHJlYWQgYnkgX19pbml0X18oKS4KICAgICAgICBJZiB0aGUgQ0FQQUJJTElUSUVTIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCwgYW4gZW1wdHkgZGljdCBpcwogICAgICAgIHJldHVybmVkLiIiIgogICAgICAgIGlmIHNlbGYuX2NhcHMgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5ubnRwX3ZlcnNpb24gPSAxCiAgICAgICAgICAgIHNlbGYubm50cF9pbXBsZW1lbnRhdGlvbiA9IE5vbmUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmVzcCwgY2FwcyA9IHNlbGYuY2FwYWJpbGl0aWVzKCkKICAgICAgICAgICAgZXhjZXB0IChOTlRQUGVybWFuZW50RXJyb3IsIE5OVFBUZW1wb3JhcnlFcnJvcik6CiAgICAgICAgICAgICAgICAjIFNlcnZlciBkb2Vzbid0IHN1cHBvcnQgY2FwYWJpbGl0aWVzCiAgICAgICAgICAgICAgICBzZWxmLl9jYXBzID0ge30KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX2NhcHMgPSBjYXBzCiAgICAgICAgICAgICAgICBpZiAnVkVSU0lPTicgaW4gY2FwczoKICAgICAgICAgICAgICAgICAgICAjIFRoZSBzZXJ2ZXIgY2FuIGFkdmVydGlzZSBzZXZlcmFsIHN1cHBvcnRlZCB2ZXJzaW9ucywKICAgICAgICAgICAgICAgICAgICAjIGNob29zZSB0aGUgaGlnaGVzdC4KICAgICAgICAgICAgICAgICAgICBzZWxmLm5udHBfdmVyc2lvbiA9IG1heChtYXAoaW50LCBjYXBzWydWRVJTSU9OJ10pKQogICAgICAgICAgICAgICAgaWYgJ0lNUExFTUVOVEFUSU9OJyBpbiBjYXBzOgogICAgICAgICAgICAgICAgICAgIHNlbGYubm50cF9pbXBsZW1lbnRhdGlvbiA9ICcgJy5qb2luKGNhcHNbJ0lNUExFTUVOVEFUSU9OJ10pCiAgICAgICAgcmV0dXJuIHNlbGYuX2NhcHMKCiAgICBkZWYgc2V0X2RlYnVnbGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgICIiIlNldCB0aGUgZGVidWdnaW5nIGxldmVsLiAgQXJndW1lbnQgJ2xldmVsJyBtZWFuczoKICAgICAgICAwOiBubyBkZWJ1Z2dpbmcgb3V0cHV0IChkZWZhdWx0KQogICAgICAgIDE6IHByaW50IGNvbW1hbmRzIGFuZCByZXNwb25zZXMgYnV0IG5vdCBib2R5IHRleHQgZXRjLgogICAgICAgIDI6IGFsc28gcHJpbnQgcmF3IGxpbmVzIHJlYWQgYW5kIHNlbnQgYmVmb3JlIHN0cmlwcGluZyBDUi9MRiIiIgoKICAgICAgICBzZWxmLmRlYnVnZ2luZyA9IGxldmVsCiAgICBkZWJ1ZyA9IHNldF9kZWJ1Z2xldmVsCgogICAgZGVmIF9wdXRsaW5lKHNlbGYsIGxpbmUpOgogICAgICAgICIiIkludGVybmFsOiBzZW5kIG9uZSBsaW5lIHRvIHRoZSBzZXJ2ZXIsIGFwcGVuZGluZyBDUkxGLgogICAgICAgIFRoZSBgbGluZWAgbXVzdCBiZSBhIGJ5dGVzLWxpa2Ugb2JqZWN0LiIiIgogICAgICAgIHN5cy5hdWRpdCgibm50cGxpYi5wdXRsaW5lIiwgc2VsZiwgbGluZSkKICAgICAgICBsaW5lID0gbGluZSArIF9DUkxGCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmcgPiAxOiBwcmludCgnKnB1dConLCByZXByKGxpbmUpKQogICAgICAgIHNlbGYuZmlsZS53cml0ZShsaW5lKQogICAgICAgIHNlbGYuZmlsZS5mbHVzaCgpCgogICAgZGVmIF9wdXRjbWQoc2VsZiwgbGluZSk6CiAgICAgICAgIiIiSW50ZXJuYWw6IHNlbmQgb25lIGNvbW1hbmQgdG8gdGhlIHNlcnZlciAodGhyb3VnaCBfcHV0bGluZSgpKS4KICAgICAgICBUaGUgYGxpbmVgIG11c3QgYmUgYSB1bmljb2RlIHN0cmluZy4iIiIKICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZzogcHJpbnQoJypjbWQqJywgcmVwcihsaW5lKSkKICAgICAgICBsaW5lID0gbGluZS5lbmNvZGUoc2VsZi5lbmNvZGluZywgc2VsZi5lcnJvcnMpCiAgICAgICAgc2VsZi5fcHV0bGluZShsaW5lKQoKICAgIGRlZiBfZ2V0bGluZShzZWxmLCBzdHJpcF9jcmxmPVRydWUpOgogICAgICAgICIiIkludGVybmFsOiByZXR1cm4gb25lIGxpbmUgZnJvbSB0aGUgc2VydmVyLCBzdHJpcHBpbmcgX0NSTEYuCiAgICAgICAgUmFpc2UgRU9GRXJyb3IgaWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgogICAgICAgIFJldHVybnMgYSBieXRlcyBvYmplY3QuIiIiCiAgICAgICAgbGluZSA9IHNlbGYuZmlsZS5yZWFkbGluZShfTUFYTElORSArMSkKICAgICAgICBpZiBsZW4obGluZSkgPiBfTUFYTElORToKICAgICAgICAgICAgcmFpc2UgTk5UUERhdGFFcnJvcignbGluZSB0b28gbG9uZycpCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmcgPiAxOgogICAgICAgICAgICBwcmludCgnKmdldConLCByZXByKGxpbmUpKQogICAgICAgIGlmIG5vdCBsaW5lOiByYWlzZSBFT0ZFcnJvcgogICAgICAgIGlmIHN0cmlwX2NybGY6CiAgICAgICAgICAgIGlmIGxpbmVbLTI6XSA9PSBfQ1JMRjoKICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzotMl0KICAgICAgICAgICAgZWxpZiBsaW5lWy0xOl0gaW4gX0NSTEY6CiAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6LTFdCiAgICAgICAgcmV0dXJuIGxpbmUKCiAgICBkZWYgX2dldHJlc3Aoc2VsZik6CiAgICAgICAgIiIiSW50ZXJuYWw6IGdldCBhIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KICAgICAgICBSYWlzZSB2YXJpb3VzIGVycm9ycyBpZiB0aGUgcmVzcG9uc2UgaW5kaWNhdGVzIGFuIGVycm9yLgogICAgICAgIFJldHVybnMgYSB1bmljb2RlIHN0cmluZy4iIiIKICAgICAgICByZXNwID0gc2VsZi5fZ2V0bGluZSgpCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmc6IHByaW50KCcqcmVzcConLCByZXByKHJlc3ApKQogICAgICAgIHJlc3AgPSByZXNwLmRlY29kZShzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycykKICAgICAgICBjID0gcmVzcFs6MV0KICAgICAgICBpZiBjID09ICc0JzoKICAgICAgICAgICAgcmFpc2UgTk5UUFRlbXBvcmFyeUVycm9yKHJlc3ApCiAgICAgICAgaWYgYyA9PSAnNSc6CiAgICAgICAgICAgIHJhaXNlIE5OVFBQZXJtYW5lbnRFcnJvcihyZXNwKQogICAgICAgIGlmIGMgbm90IGluICcxMjMnOgogICAgICAgICAgICByYWlzZSBOTlRQUHJvdG9jb2xFcnJvcihyZXNwKQogICAgICAgIHJldHVybiByZXNwCgogICAgZGVmIF9nZXRsb25ncmVzcChzZWxmLCBmaWxlPU5vbmUpOgogICAgICAgICIiIkludGVybmFsOiBnZXQgYSByZXNwb25zZSBwbHVzIGZvbGxvd2luZyB0ZXh0IGZyb20gdGhlIHNlcnZlci4KICAgICAgICBSYWlzZSB2YXJpb3VzIGVycm9ycyBpZiB0aGUgcmVzcG9uc2UgaW5kaWNhdGVzIGFuIGVycm9yLgoKICAgICAgICBSZXR1cm5zIGEgKHJlc3BvbnNlLCBsaW5lcykgdHVwbGUgd2hlcmUgYHJlc3BvbnNlYCBpcyBhIHVuaWNvZGUKICAgICAgICBzdHJpbmcgYW5kIGBsaW5lc2AgaXMgYSBsaXN0IG9mIGJ5dGVzIG9iamVjdHMuCiAgICAgICAgSWYgYGZpbGVgIGlzIGEgZmlsZS1saWtlIG9iamVjdCwgaXQgbXVzdCBiZSBvcGVuIGluIGJpbmFyeSBtb2RlLgogICAgICAgICIiIgoKICAgICAgICBvcGVuZWRGaWxlID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgIyBJZiBhIHN0cmluZyB3YXMgcGFzc2VkIHRoZW4gb3BlbiBhIGZpbGUgd2l0aCB0aGF0IG5hbWUKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgb3BlbmVkRmlsZSA9IGZpbGUgPSBvcGVuKGZpbGUsICJ3YiIpCgogICAgICAgICAgICByZXNwID0gc2VsZi5fZ2V0cmVzcCgpCiAgICAgICAgICAgIGlmIHJlc3BbOjNdIG5vdCBpbiBfTE9OR1JFU1A6CiAgICAgICAgICAgICAgICByYWlzZSBOTlRQUmVwbHlFcnJvcihyZXNwKQoKICAgICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIyBYWFggbGluZXMgPSBOb25lIGluc3RlYWQ/CiAgICAgICAgICAgICAgICB0ZXJtaW5hdG9ycyA9IChiJy4nICsgX0NSTEYsIGInLlxuJykKICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2dldGxpbmUoRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgaWYgbGluZSBpbiB0ZXJtaW5hdG9yczoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoYicuLicpOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVsxOl0KICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKGxpbmUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0ZXJtaW5hdG9yID0gYicuJwogICAgICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5fZ2V0bGluZSgpCiAgICAgICAgICAgICAgICAgICAgaWYgbGluZSA9PSB0ZXJtaW5hdG9yOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChiJy4uJyk6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzE6XQogICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICMgSWYgdGhpcyBtZXRob2QgY3JlYXRlZCB0aGUgZmlsZSwgdGhlbiBpdCBtdXN0IGNsb3NlIGl0CiAgICAgICAgICAgIGlmIG9wZW5lZEZpbGU6CiAgICAgICAgICAgICAgICBvcGVuZWRGaWxlLmNsb3NlKCkKCiAgICAgICAgcmV0dXJuIHJlc3AsIGxpbmVzCgogICAgZGVmIF9zaG9ydGNtZChzZWxmLCBsaW5lKToKICAgICAgICAiIiJJbnRlcm5hbDogc2VuZCBhIGNvbW1hbmQgYW5kIGdldCB0aGUgcmVzcG9uc2UuCiAgICAgICAgU2FtZSByZXR1cm4gdmFsdWUgYXMgX2dldHJlc3AoKS4iIiIKICAgICAgICBzZWxmLl9wdXRjbWQobGluZSkKICAgICAgICByZXR1cm4gc2VsZi5fZ2V0cmVzcCgpCgogICAgZGVmIF9sb25nY21kKHNlbGYsIGxpbmUsIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiSW50ZXJuYWw6IHNlbmQgYSBjb21tYW5kIGFuZCBnZXQgdGhlIHJlc3BvbnNlIHBsdXMgZm9sbG93aW5nIHRleHQuCiAgICAgICAgU2FtZSByZXR1cm4gdmFsdWUgYXMgX2dldGxvbmdyZXNwKCkuIiIiCiAgICAgICAgc2VsZi5fcHV0Y21kKGxpbmUpCiAgICAgICAgcmV0dXJuIHNlbGYuX2dldGxvbmdyZXNwKGZpbGUpCgogICAgZGVmIF9sb25nY21kc3RyaW5nKHNlbGYsIGxpbmUsIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiSW50ZXJuYWw6IHNlbmQgYSBjb21tYW5kIGFuZCBnZXQgdGhlIHJlc3BvbnNlIHBsdXMgZm9sbG93aW5nIHRleHQuCiAgICAgICAgU2FtZSBhcyBfbG9uZ2NtZCgpIGFuZCBfZ2V0bG9uZ3Jlc3AoKSwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIGBsaW5lc2AKICAgICAgICBhcmUgdW5pY29kZSBzdHJpbmdzIHJhdGhlciB0aGFuIGJ5dGVzIG9iamVjdHMuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fcHV0Y21kKGxpbmUpCiAgICAgICAgcmVzcCwgbGlzdCA9IHNlbGYuX2dldGxvbmdyZXNwKGZpbGUpCiAgICAgICAgcmV0dXJuIHJlc3AsIFtsaW5lLmRlY29kZShzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycykKICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxpc3RdCgogICAgZGVmIF9nZXRvdmVydmlld2ZtdChzZWxmKToKICAgICAgICAiIiJJbnRlcm5hbDogZ2V0IHRoZSBvdmVydmlldyBmb3JtYXQuIFF1ZXJpZXMgdGhlIHNlcnZlciBpZiBub3QKICAgICAgICBhbHJlYWR5IGRvbmUsIGVsc2UgcmV0dXJucyB0aGUgY2FjaGVkIHZhbHVlLiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZG92ZXJ2aWV3Zm10CiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXNwLCBsaW5lcyA9IHNlbGYuX2xvbmdjbWRzdHJpbmcoIkxJU1QgT1ZFUlZJRVcuRk1UIikKICAgICAgICBleGNlcHQgTk5UUFBlcm1hbmVudEVycm9yOgogICAgICAgICAgICAjIE5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyPwogICAgICAgICAgICBmbXQgPSBfREVGQVVMVF9PVkVSVklFV19GTVRbOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICBmbXQgPSBfcGFyc2Vfb3ZlcnZpZXdfZm10KGxpbmVzKQogICAgICAgIHNlbGYuX2NhY2hlZG92ZXJ2aWV3Zm10ID0gZm10CiAgICAgICAgcmV0dXJuIGZtdAoKICAgIGRlZiBfZ3JvdXBsaXN0KHNlbGYsIGxpbmVzKToKICAgICAgICAjIFBhcnNlIGxpbmVzIGludG8gImdyb3VwIGxhc3QgZmlyc3QgZmxhZyIKICAgICAgICByZXR1cm4gW0dyb3VwSW5mbygqbGluZS5zcGxpdCgpKSBmb3IgbGluZSBpbiBsaW5lc10KCiAgICBkZWYgY2FwYWJpbGl0aWVzKHNlbGYpOgogICAgICAgICIiIlByb2Nlc3MgYSBDQVBBQklMSVRJRVMgY29tbWFuZC4gIE5vdCBzdXBwb3J0ZWQgYnkgYWxsIHNlcnZlcnMuCiAgICAgICAgUmV0dXJuOgogICAgICAgIC0gcmVzcDogc2VydmVyIHJlc3BvbnNlIGlmIHN1Y2Nlc3NmdWwKICAgICAgICAtIGNhcHM6IGEgZGljdGlvbmFyeSBtYXBwaW5nIGNhcGFiaWxpdHkgbmFtZXMgdG8gbGlzdHMgb2YgdG9rZW5zCiAgICAgICAgKGZvciBleGFtcGxlIHsnVkVSU0lPTic6IFsnMiddLCAnT1ZFUic6IFtdLCBMSVNUOiBbJ0FDVElWRScsICdIRUFERVJTJ10gfSkKICAgICAgICAiIiIKICAgICAgICBjYXBzID0ge30KICAgICAgICByZXNwLCBsaW5lcyA9IHNlbGYuX2xvbmdjbWRzdHJpbmcoIkNBUEFCSUxJVElFUyIpCiAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgICAgIG5hbWUsICp0b2tlbnMgPSBsaW5lLnNwbGl0KCkKICAgICAgICAgICAgY2Fwc1tuYW1lXSA9IHRva2VucwogICAgICAgIHJldHVybiByZXNwLCBjYXBzCgogICAgZGVmIG5ld2dyb3VwcyhzZWxmLCBkYXRlLCAqLCBmaWxlPU5vbmUpOgogICAgICAgICIiIlByb2Nlc3MgYSBORVdHUk9VUFMgY29tbWFuZC4gIEFyZ3VtZW50czoKICAgICAgICAtIGRhdGU6IGEgZGF0ZSBvciBkYXRldGltZSBvYmplY3QKICAgICAgICBSZXR1cm46CiAgICAgICAgLSByZXNwOiBzZXJ2ZXIgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bAogICAgICAgIC0gbGlzdDogbGlzdCBvZiBuZXdzZ3JvdXAgbmFtZXMKICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRlLCAoZGF0ZXRpbWUuZGF0ZSwgZGF0ZXRpbWUuZGF0ZSkpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAidGhlIGRhdGUgcGFyYW1ldGVyIG11c3QgYmUgYSBkYXRlIG9yIGRhdGV0aW1lIG9iamVjdCwgIgogICAgICAgICAgICAgICAgIm5vdCAnezo0MH0nIi5mb3JtYXQoZGF0ZS5fX2NsYXNzX18uX19uYW1lX18pKQogICAgICAgIGRhdGVfc3RyLCB0aW1lX3N0ciA9IF91bnBhcnNlX2RhdGV0aW1lKGRhdGUsIHNlbGYubm50cF92ZXJzaW9uIDwgMikKICAgICAgICBjbWQgPSAnTkVXR1JPVVBTIHswfSB7MX0nLmZvcm1hdChkYXRlX3N0ciwgdGltZV9zdHIpCiAgICAgICAgcmVzcCwgbGluZXMgPSBzZWxmLl9sb25nY21kc3RyaW5nKGNtZCwgZmlsZSkKICAgICAgICByZXR1cm4gcmVzcCwgc2VsZi5fZ3JvdXBsaXN0KGxpbmVzKQoKICAgIGRlZiBuZXduZXdzKHNlbGYsIGdyb3VwLCBkYXRlLCAqLCBmaWxlPU5vbmUpOgogICAgICAgICIiIlByb2Nlc3MgYSBORVdORVdTIGNvbW1hbmQuICBBcmd1bWVudHM6CiAgICAgICAgLSBncm91cDogZ3JvdXAgbmFtZSBvciAnKicKICAgICAgICAtIGRhdGU6IGEgZGF0ZSBvciBkYXRldGltZSBvYmplY3QKICAgICAgICBSZXR1cm46CiAgICAgICAgLSByZXNwOiBzZXJ2ZXIgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bAogICAgICAgIC0gbGlzdDogbGlzdCBvZiBtZXNzYWdlIGlkcwogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGUsIChkYXRldGltZS5kYXRlLCBkYXRldGltZS5kYXRlKSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICJ0aGUgZGF0ZSBwYXJhbWV0ZXIgbXVzdCBiZSBhIGRhdGUgb3IgZGF0ZXRpbWUgb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAibm90ICd7OjQwfSciLmZvcm1hdChkYXRlLl9fY2xhc3NfXy5fX25hbWVfXykpCiAgICAgICAgZGF0ZV9zdHIsIHRpbWVfc3RyID0gX3VucGFyc2VfZGF0ZXRpbWUoZGF0ZSwgc2VsZi5ubnRwX3ZlcnNpb24gPCAyKQogICAgICAgIGNtZCA9ICdORVdORVdTIHswfSB7MX0gezJ9Jy5mb3JtYXQoZ3JvdXAsIGRhdGVfc3RyLCB0aW1lX3N0cikKICAgICAgICByZXR1cm4gc2VsZi5fbG9uZ2NtZHN0cmluZyhjbWQsIGZpbGUpCgogICAgZGVmIGxpc3Qoc2VsZiwgZ3JvdXBfcGF0dGVybj1Ob25lLCAqLCBmaWxlPU5vbmUpOgogICAgICAgICIiIlByb2Nlc3MgYSBMSVNUIG9yIExJU1QgQUNUSVZFIGNvbW1hbmQuIEFyZ3VtZW50czoKICAgICAgICAtIGdyb3VwX3BhdHRlcm46IGEgcGF0dGVybiBpbmRpY2F0aW5nIHdoaWNoIGdyb3VwcyB0byBxdWVyeQogICAgICAgIC0gZmlsZTogRmlsZW5hbWUgc3RyaW5nIG9yIGZpbGUgb2JqZWN0IHRvIHN0b3JlIHRoZSByZXN1bHQgaW4KICAgICAgICBSZXR1cm5zOgogICAgICAgIC0gcmVzcDogc2VydmVyIHJlc3BvbnNlIGlmIHN1Y2Nlc3NmdWwKICAgICAgICAtIGxpc3Q6IGxpc3Qgb2YgKGdyb3VwLCBsYXN0LCBmaXJzdCwgZmxhZykgKHN0cmluZ3MpCiAgICAgICAgIiIiCiAgICAgICAgaWYgZ3JvdXBfcGF0dGVybiBpcyBub3QgTm9uZToKICAgICAgICAgICAgY29tbWFuZCA9ICdMSVNUIEFDVElWRSAnICsgZ3JvdXBfcGF0dGVybgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbW1hbmQgPSAnTElTVCcKICAgICAgICByZXNwLCBsaW5lcyA9IHNlbGYuX2xvbmdjbWRzdHJpbmcoY29tbWFuZCwgZmlsZSkKICAgICAgICByZXR1cm4gcmVzcCwgc2VsZi5fZ3JvdXBsaXN0KGxpbmVzKQoKICAgIGRlZiBfZ2V0ZGVzY3JpcHRpb25zKHNlbGYsIGdyb3VwX3BhdHRlcm4sIHJldHVybl9hbGwpOgogICAgICAgIGxpbmVfcGF0ID0gcmUuY29tcGlsZSgnXig/UDxncm91cD5bXiBcdF0rKVsgXHRdKyguKikkJykKICAgICAgICAjIFRyeSB0aGUgbW9yZSBzdGQgKGFjYy4gdG8gUkZDMjk4MCkgTElTVCBORVdTR1JPVVBTIGZpcnN0CiAgICAgICAgcmVzcCwgbGluZXMgPSBzZWxmLl9sb25nY21kc3RyaW5nKCdMSVNUIE5FV1NHUk9VUFMgJyArIGdyb3VwX3BhdHRlcm4pCiAgICAgICAgaWYgbm90IHJlc3Auc3RhcnRzd2l0aCgnMjE1Jyk6CiAgICAgICAgICAgICMgTm93IHRoZSBkZXByZWNhdGVkIFhHVElUTEUuICBUaGlzIGVpdGhlciByYWlzZXMgYW4gZXJyb3IKICAgICAgICAgICAgIyBvciBzdWNjZWVkcyB3aXRoIHRoZSBzYW1lIG91dHB1dCBzdHJ1Y3R1cmUgYXMgTElTVAogICAgICAgICAgICAjIE5FV1NHUk9VUFMuCiAgICAgICAgICAgIHJlc3AsIGxpbmVzID0gc2VsZi5fbG9uZ2NtZHN0cmluZygnWEdUSVRMRSAnICsgZ3JvdXBfcGF0dGVybikKICAgICAgICBncm91cHMgPSB7fQogICAgICAgIGZvciByYXdfbGluZSBpbiBsaW5lczoKICAgICAgICAgICAgbWF0Y2ggPSBsaW5lX3BhdC5zZWFyY2gocmF3X2xpbmUuc3RyaXAoKSkKICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICBuYW1lLCBkZXNjID0gbWF0Y2guZ3JvdXAoMSwgMikKICAgICAgICAgICAgICAgIGlmIG5vdCByZXR1cm5fYWxsOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXNjCiAgICAgICAgICAgICAgICBncm91cHNbbmFtZV0gPSBkZXNjCiAgICAgICAgaWYgcmV0dXJuX2FsbDoKICAgICAgICAgICAgcmV0dXJuIHJlc3AsIGdyb3VwcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgTm90aGluZyBmb3VuZAogICAgICAgICAgICByZXR1cm4gJycKCiAgICBkZWYgZGVzY3JpcHRpb24oc2VsZiwgZ3JvdXApOgogICAgICAgICIiIkdldCBhIGRlc2NyaXB0aW9uIGZvciBhIHNpbmdsZSBncm91cC4gIElmIG1vcmUgdGhhbiBvbmUKICAgICAgICBncm91cCBtYXRjaGVzICgnZ3JvdXAnIGlzIGEgcGF0dGVybiksIHJldHVybiB0aGUgZmlyc3QuICBJZiBubwogICAgICAgIGdyb3VwIG1hdGNoZXMsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCgogICAgICAgIFRoaXMgZWxpZGVzIHRoZSByZXNwb25zZSBjb2RlIGZyb20gdGhlIHNlcnZlciwgc2luY2UgaXQgY2FuCiAgICAgICAgb25seSBiZSAnMjE1JyBvciAnMjg1JyAoZm9yIHhndGl0bGUpIGFueXdheS4gIElmIHRoZSByZXNwb25zZQogICAgICAgIGNvZGUgaXMgbmVlZGVkLCB1c2UgdGhlICdkZXNjcmlwdGlvbnMnIG1ldGhvZC4KCiAgICAgICAgTk9URTogVGhpcyBuZWl0aGVyIGNoZWNrcyBmb3IgYSB3aWxkY2FyZCBpbiAnZ3JvdXAnIG5vciBkb2VzCiAgICAgICAgaXQgY2hlY2sgd2hldGhlciB0aGUgZ3JvdXAgYWN0dWFsbHkgZXhpc3RzLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9nZXRkZXNjcmlwdGlvbnMoZ3JvdXAsIEZhbHNlKQoKICAgIGRlZiBkZXNjcmlwdGlvbnMoc2VsZiwgZ3JvdXBfcGF0dGVybik6CiAgICAgICAgIiIiR2V0IGRlc2NyaXB0aW9ucyBmb3IgYSByYW5nZSBvZiBncm91cHMuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2dldGRlc2NyaXB0aW9ucyhncm91cF9wYXR0ZXJuLCBUcnVlKQoKICAgIGRlZiBncm91cChzZWxmLCBuYW1lKToKICAgICAgICAiIiJQcm9jZXNzIGEgR1JPVVAgY29tbWFuZC4gIEFyZ3VtZW50OgogICAgICAgIC0gZ3JvdXA6IHRoZSBncm91cCBuYW1lCiAgICAgICAgUmV0dXJuczoKICAgICAgICAtIHJlc3A6IHNlcnZlciByZXNwb25zZSBpZiBzdWNjZXNzZnVsCiAgICAgICAgLSBjb3VudDogbnVtYmVyIG9mIGFydGljbGVzCiAgICAgICAgLSBmaXJzdDogZmlyc3QgYXJ0aWNsZSBudW1iZXIKICAgICAgICAtIGxhc3Q6IGxhc3QgYXJ0aWNsZSBudW1iZXIKICAgICAgICAtIG5hbWU6IHRoZSBncm91cCBuYW1lCiAgICAgICAgIiIiCiAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdHUk9VUCAnICsgbmFtZSkKICAgICAgICBpZiBub3QgcmVzcC5zdGFydHN3aXRoKCcyMTEnKToKICAgICAgICAgICAgcmFpc2UgTk5UUFJlcGx5RXJyb3IocmVzcCkKICAgICAgICB3b3JkcyA9IHJlc3Auc3BsaXQoKQogICAgICAgIGNvdW50ID0gZmlyc3QgPSBsYXN0ID0gMAogICAgICAgIG4gPSBsZW4od29yZHMpCiAgICAgICAgaWYgbiA+IDE6CiAgICAgICAgICAgIGNvdW50ID0gd29yZHNbMV0KICAgICAgICAgICAgaWYgbiA+IDI6CiAgICAgICAgICAgICAgICBmaXJzdCA9IHdvcmRzWzJdCiAgICAgICAgICAgICAgICBpZiBuID4gMzoKICAgICAgICAgICAgICAgICAgICBsYXN0ID0gd29yZHNbM10KICAgICAgICAgICAgICAgICAgICBpZiBuID4gNDoKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHdvcmRzWzRdLmxvd2VyKCkKICAgICAgICByZXR1cm4gcmVzcCwgaW50KGNvdW50KSwgaW50KGZpcnN0KSwgaW50KGxhc3QpLCBuYW1lCgogICAgZGVmIGhlbHAoc2VsZiwgKiwgZmlsZT1Ob25lKToKICAgICAgICAiIiJQcm9jZXNzIGEgSEVMUCBjb21tYW5kLiBBcmd1bWVudDoKICAgICAgICAtIGZpbGU6IEZpbGVuYW1lIHN0cmluZyBvciBmaWxlIG9iamVjdCB0byBzdG9yZSB0aGUgcmVzdWx0IGluCiAgICAgICAgUmV0dXJuczoKICAgICAgICAtIHJlc3A6IHNlcnZlciByZXNwb25zZSBpZiBzdWNjZXNzZnVsCiAgICAgICAgLSBsaXN0OiBsaXN0IG9mIHN0cmluZ3MgcmV0dXJuZWQgYnkgdGhlIHNlcnZlciBpbiByZXNwb25zZSB0byB0aGUKICAgICAgICAgICAgICAgIEhFTFAgY29tbWFuZAogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9sb25nY21kc3RyaW5nKCdIRUxQJywgZmlsZSkKCiAgICBkZWYgX3N0YXRwYXJzZShzZWxmLCByZXNwKToKICAgICAgICAiIiJJbnRlcm5hbDogcGFyc2UgdGhlIHJlc3BvbnNlIGxpbmUgb2YgYSBTVEFULCBORVhULCBMQVNULAogICAgICAgIEFSVElDTEUsIEhFQUQgb3IgQk9EWSBjb21tYW5kLiIiIgogICAgICAgIGlmIG5vdCByZXNwLnN0YXJ0c3dpdGgoJzIyJyk6CiAgICAgICAgICAgIHJhaXNlIE5OVFBSZXBseUVycm9yKHJlc3ApCiAgICAgICAgd29yZHMgPSByZXNwLnNwbGl0KCkKICAgICAgICBhcnRfbnVtID0gaW50KHdvcmRzWzFdKQogICAgICAgIG1lc3NhZ2VfaWQgPSB3b3Jkc1syXQogICAgICAgIHJldHVybiByZXNwLCBhcnRfbnVtLCBtZXNzYWdlX2lkCgogICAgZGVmIF9zdGF0Y21kKHNlbGYsIGxpbmUpOgogICAgICAgICIiIkludGVybmFsOiBwcm9jZXNzIGEgU1RBVCwgTkVYVCBvciBMQVNUIGNvbW1hbmQuIiIiCiAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKGxpbmUpCiAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRwYXJzZShyZXNwKQoKICAgIGRlZiBzdGF0KHNlbGYsIG1lc3NhZ2Vfc3BlYz1Ob25lKToKICAgICAgICAiIiJQcm9jZXNzIGEgU1RBVCBjb21tYW5kLiAgQXJndW1lbnQ6CiAgICAgICAgLSBtZXNzYWdlX3NwZWM6IGFydGljbGUgbnVtYmVyIG9yIG1lc3NhZ2UgaWQgKGlmIG5vdCBzcGVjaWZpZWQsCiAgICAgICAgICB0aGUgY3VycmVudCBhcnRpY2xlIGlzIHNlbGVjdGVkKQogICAgICAgIFJldHVybnM6CiAgICAgICAgLSByZXNwOiBzZXJ2ZXIgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bAogICAgICAgIC0gYXJ0X251bTogdGhlIGFydGljbGUgbnVtYmVyCiAgICAgICAgLSBtZXNzYWdlX2lkOiB0aGUgbWVzc2FnZSBpZAogICAgICAgICIiIgogICAgICAgIGlmIG1lc3NhZ2Vfc3BlYzoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRjbWQoJ1NUQVQgezB9Jy5mb3JtYXQobWVzc2FnZV9zcGVjKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGNtZCgnU1RBVCcpCgogICAgZGVmIG5leHQoc2VsZik6CiAgICAgICAgIiIiUHJvY2VzcyBhIE5FWFQgY29tbWFuZC4gIE5vIGFyZ3VtZW50cy4gIFJldHVybiBhcyBmb3IgU1RBVC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGNtZCgnTkVYVCcpCgogICAgZGVmIGxhc3Qoc2VsZik6CiAgICAgICAgIiIiUHJvY2VzcyBhIExBU1QgY29tbWFuZC4gIE5vIGFyZ3VtZW50cy4gIFJldHVybiBhcyBmb3IgU1RBVC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGNtZCgnTEFTVCcpCgogICAgZGVmIF9hcnRjbWQoc2VsZiwgbGluZSwgZmlsZT1Ob25lKToKICAgICAgICAiIiJJbnRlcm5hbDogcHJvY2VzcyBhIEhFQUQsIEJPRFkgb3IgQVJUSUNMRSBjb21tYW5kLiIiIgogICAgICAgIHJlc3AsIGxpbmVzID0gc2VsZi5fbG9uZ2NtZChsaW5lLCBmaWxlKQogICAgICAgIHJlc3AsIGFydF9udW0sIG1lc3NhZ2VfaWQgPSBzZWxmLl9zdGF0cGFyc2UocmVzcCkKICAgICAgICByZXR1cm4gcmVzcCwgQXJ0aWNsZUluZm8oYXJ0X251bSwgbWVzc2FnZV9pZCwgbGluZXMpCgogICAgZGVmIGhlYWQoc2VsZiwgbWVzc2FnZV9zcGVjPU5vbmUsICosIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiUHJvY2VzcyBhIEhFQUQgY29tbWFuZC4gIEFyZ3VtZW50OgogICAgICAgIC0gbWVzc2FnZV9zcGVjOiBhcnRpY2xlIG51bWJlciBvciBtZXNzYWdlIGlkCiAgICAgICAgLSBmaWxlOiBmaWxlbmFtZSBzdHJpbmcgb3IgZmlsZSBvYmplY3QgdG8gc3RvcmUgdGhlIGhlYWRlcnMgaW4KICAgICAgICBSZXR1cm5zOgogICAgICAgIC0gcmVzcDogc2VydmVyIHJlc3BvbnNlIGlmIHN1Y2Nlc3NmdWwKICAgICAgICAtIEFydGljbGVJbmZvOiAoYXJ0aWNsZSBudW1iZXIsIG1lc3NhZ2UgaWQsIGxpc3Qgb2YgaGVhZGVyIGxpbmVzKQogICAgICAgICIiIgogICAgICAgIGlmIG1lc3NhZ2Vfc3BlYyBpcyBub3QgTm9uZToKICAgICAgICAgICAgY21kID0gJ0hFQUQgezB9Jy5mb3JtYXQobWVzc2FnZV9zcGVjKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNtZCA9ICdIRUFEJwogICAgICAgIHJldHVybiBzZWxmLl9hcnRjbWQoY21kLCBmaWxlKQoKICAgIGRlZiBib2R5KHNlbGYsIG1lc3NhZ2Vfc3BlYz1Ob25lLCAqLCBmaWxlPU5vbmUpOgogICAgICAgICIiIlByb2Nlc3MgYSBCT0RZIGNvbW1hbmQuICBBcmd1bWVudDoKICAgICAgICAtIG1lc3NhZ2Vfc3BlYzogYXJ0aWNsZSBudW1iZXIgb3IgbWVzc2FnZSBpZAogICAgICAgIC0gZmlsZTogZmlsZW5hbWUgc3RyaW5nIG9yIGZpbGUgb2JqZWN0IHRvIHN0b3JlIHRoZSBib2R5IGluCiAgICAgICAgUmV0dXJuczoKICAgICAgICAtIHJlc3A6IHNlcnZlciByZXNwb25zZSBpZiBzdWNjZXNzZnVsCiAgICAgICAgLSBBcnRpY2xlSW5mbzogKGFydGljbGUgbnVtYmVyLCBtZXNzYWdlIGlkLCBsaXN0IG9mIGJvZHkgbGluZXMpCiAgICAgICAgIiIiCiAgICAgICAgaWYgbWVzc2FnZV9zcGVjIGlzIG5vdCBOb25lOgogICAgICAgICAgICBjbWQgPSAnQk9EWSB7MH0nLmZvcm1hdChtZXNzYWdlX3NwZWMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY21kID0gJ0JPRFknCiAgICAgICAgcmV0dXJuIHNlbGYuX2FydGNtZChjbWQsIGZpbGUpCgogICAgZGVmIGFydGljbGUoc2VsZiwgbWVzc2FnZV9zcGVjPU5vbmUsICosIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiUHJvY2VzcyBhbiBBUlRJQ0xFIGNvbW1hbmQuICBBcmd1bWVudDoKICAgICAgICAtIG1lc3NhZ2Vfc3BlYzogYXJ0aWNsZSBudW1iZXIgb3IgbWVzc2FnZSBpZAogICAgICAgIC0gZmlsZTogZmlsZW5hbWUgc3RyaW5nIG9yIGZpbGUgb2JqZWN0IHRvIHN0b3JlIHRoZSBhcnRpY2xlIGluCiAgICAgICAgUmV0dXJuczoKICAgICAgICAtIHJlc3A6IHNlcnZlciByZXNwb25zZSBpZiBzdWNjZXNzZnVsCiAgICAgICAgLSBBcnRpY2xlSW5mbzogKGFydGljbGUgbnVtYmVyLCBtZXNzYWdlIGlkLCBsaXN0IG9mIGFydGljbGUgbGluZXMpCiAgICAgICAgIiIiCiAgICAgICAgaWYgbWVzc2FnZV9zcGVjIGlzIG5vdCBOb25lOgogICAgICAgICAgICBjbWQgPSAnQVJUSUNMRSB7MH0nLmZvcm1hdChtZXNzYWdlX3NwZWMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY21kID0gJ0FSVElDTEUnCiAgICAgICAgcmV0dXJuIHNlbGYuX2FydGNtZChjbWQsIGZpbGUpCgogICAgZGVmIHNsYXZlKHNlbGYpOgogICAgICAgICIiIlByb2Nlc3MgYSBTTEFWRSBjb21tYW5kLiAgUmV0dXJuczoKICAgICAgICAtIHJlc3A6IHNlcnZlciByZXNwb25zZSBpZiBzdWNjZXNzZnVsCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0Y21kKCdTTEFWRScpCgogICAgZGVmIHhoZHIoc2VsZiwgaGRyLCBzdHIsICosIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiUHJvY2VzcyBhbiBYSERSIGNvbW1hbmQgKG9wdGlvbmFsIHNlcnZlciBleHRlbnNpb24pLiAgQXJndW1lbnRzOgogICAgICAgIC0gaGRyOiB0aGUgaGVhZGVyIHR5cGUgKGUuZy4gJ3N1YmplY3QnKQogICAgICAgIC0gc3RyOiBhbiBhcnRpY2xlIG5yLCBhIG1lc3NhZ2UgaWQsIG9yIGEgcmFuZ2UgbnIxLW5yMgogICAgICAgIC0gZmlsZTogRmlsZW5hbWUgc3RyaW5nIG9yIGZpbGUgb2JqZWN0IHRvIHN0b3JlIHRoZSByZXN1bHQgaW4KICAgICAgICBSZXR1cm5zOgogICAgICAgIC0gcmVzcDogc2VydmVyIHJlc3BvbnNlIGlmIHN1Y2Nlc3NmdWwKICAgICAgICAtIGxpc3Q6IGxpc3Qgb2YgKG5yLCB2YWx1ZSkgc3RyaW5ncwogICAgICAgICIiIgogICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ14oWzAtOV0rKSA/KC4qKVxuPycpCiAgICAgICAgcmVzcCwgbGluZXMgPSBzZWxmLl9sb25nY21kc3RyaW5nKCdYSERSIHswfSB7MX0nLmZvcm1hdChoZHIsIHN0ciksIGZpbGUpCiAgICAgICAgZGVmIHJlbW92ZV9udW1iZXIobGluZSk6CiAgICAgICAgICAgIG0gPSBwYXQubWF0Y2gobGluZSkKICAgICAgICAgICAgcmV0dXJuIG0uZ3JvdXAoMSwgMikgaWYgbSBlbHNlIGxpbmUKICAgICAgICByZXR1cm4gcmVzcCwgW3JlbW92ZV9udW1iZXIobGluZSkgZm9yIGxpbmUgaW4gbGluZXNdCgogICAgZGVmIHhvdmVyKHNlbGYsIHN0YXJ0LCBlbmQsICosIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiUHJvY2VzcyBhbiBYT1ZFUiBjb21tYW5kIChvcHRpb25hbCBzZXJ2ZXIgZXh0ZW5zaW9uKSBBcmd1bWVudHM6CiAgICAgICAgLSBzdGFydDogc3RhcnQgb2YgcmFuZ2UKICAgICAgICAtIGVuZDogZW5kIG9mIHJhbmdlCiAgICAgICAgLSBmaWxlOiBGaWxlbmFtZSBzdHJpbmcgb3IgZmlsZSBvYmplY3QgdG8gc3RvcmUgdGhlIHJlc3VsdCBpbgogICAgICAgIFJldHVybnM6CiAgICAgICAgLSByZXNwOiBzZXJ2ZXIgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bAogICAgICAgIC0gbGlzdDogbGlzdCBvZiBkaWN0cyBjb250YWluaW5nIHRoZSByZXNwb25zZSBmaWVsZHMKICAgICAgICAiIiIKICAgICAgICByZXNwLCBsaW5lcyA9IHNlbGYuX2xvbmdjbWRzdHJpbmcoJ1hPVkVSIHswfS17MX0nLmZvcm1hdChzdGFydCwgZW5kKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSkKICAgICAgICBmbXQgPSBzZWxmLl9nZXRvdmVydmlld2ZtdCgpCiAgICAgICAgcmV0dXJuIHJlc3AsIF9wYXJzZV9vdmVydmlldyhsaW5lcywgZm10KQoKICAgIGRlZiBvdmVyKHNlbGYsIG1lc3NhZ2Vfc3BlYywgKiwgZmlsZT1Ob25lKToKICAgICAgICAiIiJQcm9jZXNzIGFuIE9WRVIgY29tbWFuZC4gIElmIHRoZSBjb21tYW5kIGlzbid0IHN1cHBvcnRlZCwgZmFsbAogICAgICAgIGJhY2sgdG8gWE9WRVIuIEFyZ3VtZW50czoKICAgICAgICAtIG1lc3NhZ2Vfc3BlYzoKICAgICAgICAgICAgLSBlaXRoZXIgYSBtZXNzYWdlIGlkLCBpbmRpY2F0aW5nIHRoZSBhcnRpY2xlIHRvIGZldGNoCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQKICAgICAgICAgICAgLSBvciBhIChzdGFydCwgZW5kKSB0dXBsZSwgaW5kaWNhdGluZyBhIHJhbmdlIG9mIGFydGljbGUgbnVtYmVyczsKICAgICAgICAgICAgICBpZiBlbmQgaXMgTm9uZSwgaW5mb3JtYXRpb24gdXAgdG8gdGhlIG5ld2VzdCBtZXNzYWdlIHdpbGwgYmUKICAgICAgICAgICAgICByZXRyaWV2ZWQKICAgICAgICAgICAgLSBvciBOb25lLCBpbmRpY2F0aW5nIHRoZSBjdXJyZW50IGFydGljbGUgbnVtYmVyIG11c3QgYmUgdXNlZAogICAgICAgIC0gZmlsZTogRmlsZW5hbWUgc3RyaW5nIG9yIGZpbGUgb2JqZWN0IHRvIHN0b3JlIHRoZSByZXN1bHQgaW4KICAgICAgICBSZXR1cm5zOgogICAgICAgIC0gcmVzcDogc2VydmVyIHJlc3BvbnNlIGlmIHN1Y2Nlc3NmdWwKICAgICAgICAtIGxpc3Q6IGxpc3Qgb2YgZGljdHMgY29udGFpbmluZyB0aGUgcmVzcG9uc2UgZmllbGRzCgogICAgICAgIE5PVEU6IHRoZSAibWVzc2FnZSBpZCIgZm9ybSBpc24ndCBzdXBwb3J0ZWQgYnkgWE9WRVIKICAgICAgICAiIiIKICAgICAgICBjbWQgPSAnT1ZFUicgaWYgJ09WRVInIGluIHNlbGYuX2NhcHMgZWxzZSAnWE9WRVInCiAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlX3NwZWMsICh0dXBsZSwgbGlzdCkpOgogICAgICAgICAgICBzdGFydCwgZW5kID0gbWVzc2FnZV9zcGVjCiAgICAgICAgICAgIGNtZCArPSAnIHswfS17MX0nLmZvcm1hdChzdGFydCwgZW5kIG9yICcnKQogICAgICAgIGVsaWYgbWVzc2FnZV9zcGVjIGlzIG5vdCBOb25lOgogICAgICAgICAgICBjbWQgPSBjbWQgKyAnICcgKyBtZXNzYWdlX3NwZWMKICAgICAgICByZXNwLCBsaW5lcyA9IHNlbGYuX2xvbmdjbWRzdHJpbmcoY21kLCBmaWxlKQogICAgICAgIGZtdCA9IHNlbGYuX2dldG92ZXJ2aWV3Zm10KCkKICAgICAgICByZXR1cm4gcmVzcCwgX3BhcnNlX292ZXJ2aWV3KGxpbmVzLCBmbXQpCgogICAgZGVmIGRhdGUoc2VsZik6CiAgICAgICAgIiIiUHJvY2VzcyB0aGUgREFURSBjb21tYW5kLgogICAgICAgIFJldHVybnM6CiAgICAgICAgLSByZXNwOiBzZXJ2ZXIgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bAogICAgICAgIC0gZGF0ZTogZGF0ZXRpbWUgb2JqZWN0CiAgICAgICAgIiIiCiAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCJEQVRFIikKICAgICAgICBpZiBub3QgcmVzcC5zdGFydHN3aXRoKCcxMTEnKToKICAgICAgICAgICAgcmFpc2UgTk5UUFJlcGx5RXJyb3IocmVzcCkKICAgICAgICBlbGVtID0gcmVzcC5zcGxpdCgpCiAgICAgICAgaWYgbGVuKGVsZW0pICE9IDI6CiAgICAgICAgICAgIHJhaXNlIE5OVFBEYXRhRXJyb3IocmVzcCkKICAgICAgICBkYXRlID0gZWxlbVsxXQogICAgICAgIGlmIGxlbihkYXRlKSAhPSAxNDoKICAgICAgICAgICAgcmFpc2UgTk5UUERhdGFFcnJvcihyZXNwKQogICAgICAgIHJldHVybiByZXNwLCBfcGFyc2VfZGF0ZXRpbWUoZGF0ZSwgTm9uZSkKCiAgICBkZWYgX3Bvc3Qoc2VsZiwgY29tbWFuZCwgZik6CiAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKGNvbW1hbmQpCiAgICAgICAgIyBSYWlzZXMgYSBzcGVjaWZpYyBleGNlcHRpb24gaWYgcG9zdGluZyBpcyBub3QgYWxsb3dlZAogICAgICAgIGlmIG5vdCByZXNwLnN0YXJ0c3dpdGgoJzMnKToKICAgICAgICAgICAgcmFpc2UgTk5UUFJlcGx5RXJyb3IocmVzcCkKICAgICAgICBpZiBpc2luc3RhbmNlKGYsIChieXRlcywgYnl0ZWFycmF5KSk6CiAgICAgICAgICAgIGYgPSBmLnNwbGl0bGluZXMoKQogICAgICAgICMgV2UgZG9uJ3QgdXNlIF9wdXRsaW5lKCkgYmVjYXVzZToKICAgICAgICAjIC0gd2UgZG9uJ3Qgd2FudCBhZGRpdGlvbmFsIENSTEYgaWYgdGhlIGZpbGUgb3IgaXRlcmFibGUgaXMgYWxyZWFkeQogICAgICAgICMgICBpbiB0aGUgcmlnaHQgZm9ybWF0CiAgICAgICAgIyAtIHdlIGRvbid0IHdhbnQgYSBzcHVyaW91cyBmbHVzaCgpIGFmdGVyIGVhY2ggbGluZSBpcyB3cml0dGVuCiAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgaWYgbm90IGxpbmUuZW5kc3dpdGgoX0NSTEYpOgogICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKGIiXHJcbiIpICsgX0NSTEYKICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKGInLicpOgogICAgICAgICAgICAgICAgbGluZSA9IGInLicgKyBsaW5lCiAgICAgICAgICAgIHNlbGYuZmlsZS53cml0ZShsaW5lKQogICAgICAgIHNlbGYuZmlsZS53cml0ZShiIi5cclxuIikKICAgICAgICBzZWxmLmZpbGUuZmx1c2goKQogICAgICAgIHJldHVybiBzZWxmLl9nZXRyZXNwKCkKCiAgICBkZWYgcG9zdChzZWxmLCBkYXRhKToKICAgICAgICAiIiJQcm9jZXNzIGEgUE9TVCBjb21tYW5kLiAgQXJndW1lbnRzOgogICAgICAgIC0gZGF0YTogYnl0ZXMgb2JqZWN0LCBpdGVyYWJsZSBvciBmaWxlIGNvbnRhaW5pbmcgdGhlIGFydGljbGUKICAgICAgICBSZXR1cm5zOgogICAgICAgIC0gcmVzcDogc2VydmVyIHJlc3BvbnNlIGlmIHN1Y2Nlc3NmdWwiIiIKICAgICAgICByZXR1cm4gc2VsZi5fcG9zdCgnUE9TVCcsIGRhdGEpCgogICAgZGVmIGloYXZlKHNlbGYsIG1lc3NhZ2VfaWQsIGRhdGEpOgogICAgICAgICIiIlByb2Nlc3MgYW4gSUhBVkUgY29tbWFuZC4gIEFyZ3VtZW50czoKICAgICAgICAtIG1lc3NhZ2VfaWQ6IG1lc3NhZ2UtaWQgb2YgdGhlIGFydGljbGUKICAgICAgICAtIGRhdGE6IGZpbGUgY29udGFpbmluZyB0aGUgYXJ0aWNsZQogICAgICAgIFJldHVybnM6CiAgICAgICAgLSByZXNwOiBzZXJ2ZXIgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bAogICAgICAgIE5vdGUgdGhhdCBpZiB0aGUgc2VydmVyIHJlZnVzZXMgdGhlIGFydGljbGUgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fcG9zdCgnSUhBVkUgezB9Jy5mb3JtYXQobWVzc2FnZV9pZCksIGRhdGEpCgogICAgZGVmIF9jbG9zZShzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYuZmlsZToKICAgICAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICAgICBkZWwgc2VsZi5maWxlCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKCiAgICBkZWYgcXVpdChzZWxmKToKICAgICAgICAiIiJQcm9jZXNzIGEgUVVJVCBjb21tYW5kIGFuZCBjbG9zZSB0aGUgc29ja2V0LiAgUmV0dXJuczoKICAgICAgICAtIHJlc3A6IHNlcnZlciByZXNwb25zZSBpZiBzdWNjZXNzZnVsIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1FVSVQnKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX2Nsb3NlKCkKICAgICAgICByZXR1cm4gcmVzcAoKICAgIGRlZiBsb2dpbihzZWxmLCB1c2VyPU5vbmUsIHBhc3N3b3JkPU5vbmUsIHVzZW5ldHJjPVRydWUpOgogICAgICAgIGlmIHNlbGYuYXV0aGVudGljYXRlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWxyZWFkeSBsb2dnZWQgaW4uIikKICAgICAgICBpZiBub3QgdXNlciBhbmQgbm90IHVzZW5ldHJjOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgIkF0IGxlYXN0IG9uZSBvZiBgdXNlcmAgYW5kIGB1c2VuZXRyY2AgbXVzdCBiZSBzcGVjaWZpZWQiKQogICAgICAgICMgSWYgbm8gbG9naW4vcGFzc3dvcmQgd2FzIHNwZWNpZmllZCBidXQgbmV0cmMgd2FzIHJlcXVlc3RlZCwKICAgICAgICAjIHRyeSB0byBnZXQgdGhlbSBmcm9tIH4vLm5ldHJjCiAgICAgICAgIyBQcmVzdW1lIHRoYXQgaWYgLm5ldHJjIGhhcyBhbiBlbnRyeSwgTk5SUCBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZC4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHVzZW5ldHJjIGFuZCBub3QgdXNlcjoKICAgICAgICAgICAgICAgIGltcG9ydCBuZXRyYwogICAgICAgICAgICAgICAgY3JlZGVudGlhbHMgPSBuZXRyYy5uZXRyYygpCiAgICAgICAgICAgICAgICBhdXRoID0gY3JlZGVudGlhbHMuYXV0aGVudGljYXRvcnMoc2VsZi5ob3N0KQogICAgICAgICAgICAgICAgaWYgYXV0aDoKICAgICAgICAgICAgICAgICAgICB1c2VyID0gYXV0aFswXQogICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkID0gYXV0aFsyXQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgIyBQZXJmb3JtIE5OVFAgYXV0aGVudGljYXRpb24gaWYgbmVlZGVkLgogICAgICAgIGlmIG5vdCB1c2VyOgogICAgICAgICAgICByZXR1cm4KICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ2F1dGhpbmZvIHVzZXIgJyArIHVzZXIpCiAgICAgICAgaWYgcmVzcC5zdGFydHN3aXRoKCczODEnKToKICAgICAgICAgICAgaWYgbm90IHBhc3N3b3JkOgogICAgICAgICAgICAgICAgcmFpc2UgTk5UUFJlcGx5RXJyb3IocmVzcCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlc3AgPSBzZWxmLl9zaG9ydGNtZCgnYXV0aGluZm8gcGFzcyAnICsgcGFzc3dvcmQpCiAgICAgICAgICAgICAgICBpZiBub3QgcmVzcC5zdGFydHN3aXRoKCcyODEnKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBOTlRQUGVybWFuZW50RXJyb3IocmVzcCkKICAgICAgICAjIENhcGFiaWxpdGllcyBtaWdodCBoYXZlIGNoYW5nZWQgYWZ0ZXIgbG9naW4KICAgICAgICBzZWxmLl9jYXBzID0gTm9uZQogICAgICAgIHNlbGYuZ2V0Y2FwYWJpbGl0aWVzKCkKICAgICAgICAjIEF0dGVtcHQgdG8gc2VuZCBtb2RlIHJlYWRlciBpZiBpdCB3YXMgcmVxdWVzdGVkIGFmdGVyIGxvZ2luLgogICAgICAgICMgT25seSBkbyBzbyBpZiB3ZSdyZSBub3QgaW4gcmVhZGVyIG1vZGUgYWxyZWFkeS4KICAgICAgICBpZiBzZWxmLnJlYWRlcm1vZGVfYWZ0ZXJhdXRoIGFuZCAnUkVBREVSJyBub3QgaW4gc2VsZi5fY2FwczoKICAgICAgICAgICAgc2VsZi5fc2V0cmVhZGVybW9kZSgpCiAgICAgICAgICAgICMgQ2FwYWJpbGl0aWVzIG1pZ2h0IGhhdmUgY2hhbmdlZCBhZnRlciBNT0RFIFJFQURFUgogICAgICAgICAgICBzZWxmLl9jYXBzID0gTm9uZQogICAgICAgICAgICBzZWxmLmdldGNhcGFiaWxpdGllcygpCgogICAgZGVmIF9zZXRyZWFkZXJtb2RlKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi53ZWxjb21lID0gc2VsZi5fc2hvcnRjbWQoJ21vZGUgcmVhZGVyJykKICAgICAgICBleGNlcHQgTk5UUFBlcm1hbmVudEVycm9yOgogICAgICAgICAgICAjIEVycm9yIDV4eCwgcHJvYmFibHkgJ25vdCBpbXBsZW1lbnRlZCcKICAgICAgICAgICAgcGFzcwogICAgICAgIGV4Y2VwdCBOTlRQVGVtcG9yYXJ5RXJyb3IgYXMgZToKICAgICAgICAgICAgaWYgZS5yZXNwb25zZS5zdGFydHN3aXRoKCc0ODAnKToKICAgICAgICAgICAgICAgICMgTmVlZCBhdXRob3JpemF0aW9uIGJlZm9yZSAnbW9kZSByZWFkZXInCiAgICAgICAgICAgICAgICBzZWxmLnJlYWRlcm1vZGVfYWZ0ZXJhdXRoID0gVHJ1ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UKCiAgICBpZiBfaGF2ZV9zc2w6CiAgICAgICAgZGVmIHN0YXJ0dGxzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgICAgICIiIlByb2Nlc3MgYSBTVEFSVFRMUyBjb21tYW5kLiBBcmd1bWVudHM6CiAgICAgICAgICAgIC0gY29udGV4dDogU1NMIGNvbnRleHQgdG8gdXNlIGZvciB0aGUgZW5jcnlwdGVkIGNvbm5lY3Rpb24KICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICMgUGVyIFJGQyA0NjQyLCBTVEFSVFRMUyBNVVNUIE5PVCBiZSBzZW50IGFmdGVyIGF1dGhlbnRpY2F0aW9uIG9yIGlmCiAgICAgICAgICAgICMgYSBUTFMgc2Vzc2lvbiBhbHJlYWR5IGV4aXN0cy4KICAgICAgICAgICAgaWYgc2VsZi50bHNfb246CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUTFMgaXMgYWxyZWFkeSBlbmFibGVkLiIpCiAgICAgICAgICAgIGlmIHNlbGYuYXV0aGVudGljYXRlZDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRMUyBjYW5ub3QgYmUgc3RhcnRlZCBhZnRlciBhdXRoZW50aWNhdGlvbi4iKQogICAgICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1NUQVJUVExTJykKICAgICAgICAgICAgaWYgcmVzcC5zdGFydHN3aXRoKCczODInKToKICAgICAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBfZW5jcnlwdF9vbihzZWxmLnNvY2ssIGNvbnRleHQsIHNlbGYuaG9zdCkKICAgICAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jay5tYWtlZmlsZSgicndiIikKICAgICAgICAgICAgICAgIHNlbGYudGxzX29uID0gVHJ1ZQogICAgICAgICAgICAgICAgIyBDYXBhYmlsaXRpZXMgbWF5IGNoYW5nZSBhZnRlciBUTFMgc3RhcnRzIHVwLCBzbyBhc2sgZm9yIHRoZW0KICAgICAgICAgICAgICAgICMgYWdhaW4uCiAgICAgICAgICAgICAgICBzZWxmLl9jYXBzID0gTm9uZQogICAgICAgICAgICAgICAgc2VsZi5nZXRjYXBhYmlsaXRpZXMoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgTk5UUEVycm9yKCJUTFMgZmFpbGVkIHRvIHN0YXJ0LiIpCgoKaWYgX2hhdmVfc3NsOgogICAgY2xhc3MgTk5UUF9TU0woTk5UUCk6CgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0PU5OVFBfU1NMX1BPUlQsCiAgICAgICAgICAgICAgICAgICAgdXNlcj1Ob25lLCBwYXNzd29yZD1Ob25lLCBzc2xfY29udGV4dD1Ob25lLAogICAgICAgICAgICAgICAgICAgIHJlYWRlcm1vZGU9Tm9uZSwgdXNlbmV0cmM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CiAgICAgICAgICAgICIiIlRoaXMgd29ya3MgaWRlbnRpY2FsbHkgdG8gTk5UUC5fX2luaXRfXywgZXhjZXB0IGZvciB0aGUgY2hhbmdlCiAgICAgICAgICAgIGluIGRlZmF1bHQgcG9ydCBhbmQgdGhlIGBzc2xfY29udGV4dGAgYXJndW1lbnQgZm9yIFNTTCBjb25uZWN0aW9ucy4KICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIHNlbGYuc3NsX2NvbnRleHQgPSBzc2xfY29udGV4dAogICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKGhvc3QsIHBvcnQsIHVzZXIsIHBhc3N3b3JkLCByZWFkZXJtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZW5ldHJjLCB0aW1lb3V0KQoKICAgICAgICBkZWYgX2NyZWF0ZV9zb2NrZXQoc2VsZiwgdGltZW91dCk6CiAgICAgICAgICAgIHNvY2sgPSBzdXBlcigpLl9jcmVhdGVfc29ja2V0KHRpbWVvdXQpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNvY2sgPSBfZW5jcnlwdF9vbihzb2NrLCBzZWxmLnNzbF9jb250ZXh0LCBzZWxmLmhvc3QpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBzb2NrCgogICAgX19hbGxfXy5hcHBlbmQoIk5OVFBfU1NMIikKCgojIFRlc3QgcmV0cmlldmFsIHdoZW4gcnVuIGFzIGEgc2NyaXB0LgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgaW1wb3J0IGFyZ3BhcnNlCgogICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IiIiXAogICAgICAgIG5udHBsaWIgYnVpbHQtaW4gZGVtbyAtIGRpc3BsYXkgdGhlIGxhdGVzdCBhcnRpY2xlcyBpbiBhIG5ld3Nncm91cCIiIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1nJywgJy0tZ3JvdXAnLCBkZWZhdWx0PSdnbWFuZS5jb21wLnB5dGhvbi5nZW5lcmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZ3JvdXAgdG8gZmV0Y2ggbWVzc2FnZXMgZnJvbSAoZGVmYXVsdDogJShkZWZhdWx0KXMpJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2VydmVyJywgZGVmYXVsdD0nbmV3cy5nbWFuZS5pbycsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J05OVFAgc2VydmVyIGhvc3RuYW1lIChkZWZhdWx0OiAlKGRlZmF1bHQpcyknKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXAnLCAnLS1wb3J0JywgZGVmYXVsdD0tMSwgdHlwZT1pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J05OVFAgcG9ydCBudW1iZXIgKGRlZmF1bHQ6ICVzIC8gJXMpJyAlIChOTlRQX1BPUlQsIE5OVFBfU1NMX1BPUlQpKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1uYi1hcnRpY2xlcycsIGRlZmF1bHQ9MTAsIHR5cGU9aW50LAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdudW1iZXIgb2YgYXJ0aWNsZXMgdG8gZmV0Y2ggKGRlZmF1bHQ6ICUoZGVmYXVsdClzKScpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctUycsICctLXNzbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3VzZSBOTlRQIG92ZXIgU1NMJykKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCgogICAgcG9ydCA9IGFyZ3MucG9ydAogICAgaWYgbm90IGFyZ3Muc3NsOgogICAgICAgIGlmIHBvcnQgPT0gLTE6CiAgICAgICAgICAgIHBvcnQgPSBOTlRQX1BPUlQKICAgICAgICBzID0gTk5UUChob3N0PWFyZ3Muc2VydmVyLCBwb3J0PXBvcnQpCiAgICBlbHNlOgogICAgICAgIGlmIHBvcnQgPT0gLTE6CiAgICAgICAgICAgIHBvcnQgPSBOTlRQX1NTTF9QT1JUCiAgICAgICAgcyA9IE5OVFBfU1NMKGhvc3Q9YXJncy5zZXJ2ZXIsIHBvcnQ9cG9ydCkKCiAgICBjYXBzID0gcy5nZXRjYXBhYmlsaXRpZXMoKQogICAgaWYgJ1NUQVJUVExTJyBpbiBjYXBzOgogICAgICAgIHMuc3RhcnR0bHMoKQogICAgcmVzcCwgY291bnQsIGZpcnN0LCBsYXN0LCBuYW1lID0gcy5ncm91cChhcmdzLmdyb3VwKQogICAgcHJpbnQoJ0dyb3VwJywgbmFtZSwgJ2hhcycsIGNvdW50LCAnYXJ0aWNsZXMsIHJhbmdlJywgZmlyc3QsICd0bycsIGxhc3QpCgogICAgZGVmIGN1dChzLCBsaW0pOgogICAgICAgIGlmIGxlbihzKSA+IGxpbToKICAgICAgICAgICAgcyA9IHNbOmxpbSAtIDRdICsgIi4uLiIKICAgICAgICByZXR1cm4gcwoKICAgIGZpcnN0ID0gc3RyKGludChsYXN0KSAtIGFyZ3MubmJfYXJ0aWNsZXMgKyAxKQogICAgcmVzcCwgb3ZlcnZpZXdzID0gcy54b3ZlcihmaXJzdCwgbGFzdCkKICAgIGZvciBhcnRudW0sIG92ZXIgaW4gb3ZlcnZpZXdzOgogICAgICAgIGF1dGhvciA9IGRlY29kZV9oZWFkZXIob3ZlclsnZnJvbSddKS5zcGxpdCgnPCcsIDEpWzBdCiAgICAgICAgc3ViamVjdCA9IGRlY29kZV9oZWFkZXIob3Zlclsnc3ViamVjdCddKQogICAgICAgIGxpbmVzID0gaW50KG92ZXJbJzpsaW5lcyddKQogICAgICAgIHByaW50KCJ7Ojd9IHs6MjB9IHs6NDJ9ICh7fSkiLmZvcm1hdCgKICAgICAgICAgICAgICBhcnRudW0sIGN1dChhdXRob3IsIDIwKSwgY3V0KHN1YmplY3QsIDQyKSwgbGluZXMpCiAgICAgICAgICAgICAgKQoKICAgIHMucXVpdCgpClBLAwQUAAAAAAACIKNWbW/c/spzAADKcwAACQAAAG50cGF0aC5weSMgTW9kdWxlICdudHBhdGgnIC0tIGNvbW1vbiBvcGVyYXRpb25zIG9uIFdpbk5UL1dpbjk1IHBhdGhuYW1lcwoiIiJDb21tb24gcGF0aG5hbWUgbWFuaXB1bGF0aW9ucywgV2luZG93c05ULzk1IHZlcnNpb24uCgpJbnN0ZWFkIG9mIGltcG9ydGluZyB0aGlzIG1vZHVsZSBkaXJlY3RseSwgaW1wb3J0IG9zIGFuZCByZWZlciB0byB0aGlzCm1vZHVsZSBhcyBvcy5wYXRoLgoiIiIKCiMgc3RyaW5ncyByZXByZXNlbnRpbmcgdmFyaW91cyBwYXRoLXJlbGF0ZWQgYml0cyBhbmQgcGllY2VzCiMgVGhlc2UgYXJlIHByaW1hcmlseSBmb3IgZXhwb3J0OyBpbnRlcm5hbGx5LCB0aGV5IGFyZSBoYXJkY29kZWQuCiMgU2hvdWxkIGJlIHNldCBiZWZvcmUgaW1wb3J0cyBmb3IgcmVzb2x2aW5nIGN5Y2xpYyBkZXBlbmRlbmN5LgpjdXJkaXIgPSAnLicKcGFyZGlyID0gJy4uJwpleHRzZXAgPSAnLicKc2VwID0gJ1xcJwpwYXRoc2VwID0gJzsnCmFsdHNlcCA9ICcvJwpkZWZwYXRoID0gJy47QzpcXGJpbicKZGV2bnVsbCA9ICdudWwnCgppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgc3RhdAppbXBvcnQgZ2VuZXJpY3BhdGgKZnJvbSBnZW5lcmljcGF0aCBpbXBvcnQgKgoKCl9fYWxsX18gPSBbIm5vcm1jYXNlIiwiaXNhYnMiLCJqb2luIiwic3BsaXRkcml2ZSIsInNwbGl0Iiwic3BsaXRleHQiLAogICAgICAgICAgICJiYXNlbmFtZSIsImRpcm5hbWUiLCJjb21tb25wcmVmaXgiLCJnZXRzaXplIiwiZ2V0bXRpbWUiLAogICAgICAgICAgICJnZXRhdGltZSIsImdldGN0aW1lIiwgImlzbGluayIsImV4aXN0cyIsImxleGlzdHMiLCJpc2RpciIsImlzZmlsZSIsCiAgICAgICAgICAgImlzbW91bnQiLCAiZXhwYW5kdXNlciIsImV4cGFuZHZhcnMiLCJub3JtcGF0aCIsImFic3BhdGgiLAogICAgICAgICAgICJjdXJkaXIiLCJwYXJkaXIiLCJzZXAiLCJwYXRoc2VwIiwiZGVmcGF0aCIsImFsdHNlcCIsCiAgICAgICAgICAgImV4dHNlcCIsImRldm51bGwiLCJyZWFscGF0aCIsInN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIiwicmVscGF0aCIsCiAgICAgICAgICAgInNhbWVmaWxlIiwgInNhbWVvcGVuZmlsZSIsICJzYW1lc3RhdCIsICJjb21tb25wYXRoIl0KCmRlZiBfZ2V0X2JvdGhzZXBzKHBhdGgpOgogICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgcmV0dXJuIGInXFwvJwogICAgZWxzZToKICAgICAgICByZXR1cm4gJ1xcLycKCiMgTm9ybWFsaXplIHRoZSBjYXNlIG9mIGEgcGF0aG5hbWUgYW5kIG1hcCBzbGFzaGVzIHRvIGJhY2tzbGFzaGVzLgojIE90aGVyIG5vcm1hbGl6YXRpb25zIChzdWNoIGFzIG9wdGltaXppbmcgJy4uLycgYXdheSkgYXJlIG5vdCBkb25lCiMgKHRoaXMgaXMgZG9uZSBieSBub3JtcGF0aCkuCgp0cnk6CiAgICBmcm9tIF93aW5hcGkgaW1wb3J0ICgKICAgICAgICBMQ01hcFN0cmluZ0V4IGFzIF9MQ01hcFN0cmluZ0V4LAogICAgICAgIExPQ0FMRV9OQU1FX0lOVkFSSUFOVCBhcyBfTE9DQUxFX05BTUVfSU5WQVJJQU5ULAogICAgICAgIExDTUFQX0xPV0VSQ0FTRSBhcyBfTENNQVBfTE9XRVJDQVNFKQoKICAgIGRlZiBub3JtY2FzZShzKToKICAgICAgICAiIiJOb3JtYWxpemUgY2FzZSBvZiBwYXRobmFtZS4KCiAgICAgICAgTWFrZXMgYWxsIGNoYXJhY3RlcnMgbG93ZXJjYXNlIGFuZCBhbGwgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzLgogICAgICAgICIiIgogICAgICAgIHMgPSBvcy5mc3BhdGgocykKICAgICAgICBpZiBub3QgczoKICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKICAgICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKICAgICAgICAgICAgcyA9IHMuZGVjb2RlKGVuY29kaW5nLCAnc3Vycm9nYXRlZXNjYXBlJykucmVwbGFjZSgnLycsICdcXCcpCiAgICAgICAgICAgIHMgPSBfTENNYXBTdHJpbmdFeChfTE9DQUxFX05BTUVfSU5WQVJJQU5ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0xDTUFQX0xPV0VSQ0FTRSwgcykKICAgICAgICAgICAgcmV0dXJuIHMuZW5jb2RlKGVuY29kaW5nLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gX0xDTWFwU3RyaW5nRXgoX0xPQ0FMRV9OQU1FX0lOVkFSSUFOVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9MQ01BUF9MT1dFUkNBU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnJlcGxhY2UoJy8nLCAnXFwnKSkKZXhjZXB0IEltcG9ydEVycm9yOgogICAgZGVmIG5vcm1jYXNlKHMpOgogICAgICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLgoKICAgICAgICBNYWtlcyBhbGwgY2hhcmFjdGVycyBsb3dlcmNhc2UgYW5kIGFsbCBzbGFzaGVzIGludG8gYmFja3NsYXNoZXMuCiAgICAgICAgIiIiCiAgICAgICAgcyA9IG9zLmZzcGF0aChzKQogICAgICAgIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgogICAgICAgICAgICByZXR1cm4gb3MuZnNlbmNvZGUob3MuZnNkZWNvZGUocykucmVwbGFjZSgnLycsICdcXCcpLmxvd2VyKCkpCiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgnLycsICdcXCcpLmxvd2VyKCkKCgojIFJldHVybiB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZS4KIyBUcml2aWFsIGluIFBvc2l4LCBoYXJkZXIgb24gV2luZG93cy4KIyBGb3IgV2luZG93cyBpdCBpcyBhYnNvbHV0ZSBpZiBpdCBzdGFydHMgd2l0aCBhIHNsYXNoIG9yIGJhY2tzbGFzaCAoY3VycmVudAojIHZvbHVtZSksIG9yIGlmIGEgcGF0aG5hbWUgYWZ0ZXIgdGhlIHZvbHVtZS1sZXR0ZXItYW5kLWNvbG9uIG9yIFVOQy1yZXNvdXJjZQojIHN0YXJ0cyB3aXRoIGEgc2xhc2ggb3IgYmFja3NsYXNoLgoKZGVmIGlzYWJzKHMpOgogICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgogICAgcyA9IG9zLmZzcGF0aChzKQogICAgaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6CiAgICAgICAgc2VwID0gYidcXCcKICAgICAgICBhbHRzZXAgPSBiJy8nCiAgICAgICAgY29sb25fc2VwID0gYic6XFwnCiAgICBlbHNlOgogICAgICAgIHNlcCA9ICdcXCcKICAgICAgICBhbHRzZXAgPSAnLycKICAgICAgICBjb2xvbl9zZXAgPSAnOlxcJwogICAgcyA9IHNbOjNdLnJlcGxhY2UoYWx0c2VwLCBzZXApCiAgICAjIEFic29sdXRlOiBVTkMsIGRldmljZSwgYW5kIHBhdGhzIHdpdGggYSBkcml2ZSBhbmQgcm9vdC4KICAgICMgTEVHQUNZIEJVRzogaXNhYnMoIi94Iikgc2hvdWxkIGJlIGZhbHNlIHNpbmNlIHRoZSBwYXRoIGhhcyBubyBkcml2ZS4KICAgIGlmIHMuc3RhcnRzd2l0aChzZXApIG9yIHMuc3RhcnRzd2l0aChjb2xvbl9zZXAsIDEpOgogICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCgojIEpvaW4gdHdvIChvciBtb3JlKSBwYXRocy4KZGVmIGpvaW4ocGF0aCwgKnBhdGhzKToKICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgc2VwcyA9IGInXFwvJwogICAgICAgIGNvbG9uID0gYic6JwogICAgZWxzZToKICAgICAgICBzZXAgPSAnXFwnCiAgICAgICAgc2VwcyA9ICdcXC8nCiAgICAgICAgY29sb24gPSAnOicKICAgIHRyeToKICAgICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgICAgIHBhdGhbOjBdICsgc2VwICAjMjM3ODA6IEVuc3VyZSBjb21wYXRpYmxlIGRhdGEgdHlwZSBldmVuIGlmIHAgaXMgbnVsbC4KICAgICAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQogICAgICAgIGZvciBwIGluIG1hcChvcy5mc3BhdGgsIHBhdGhzKToKICAgICAgICAgICAgcF9kcml2ZSwgcF9wYXRoID0gc3BsaXRkcml2ZShwKQogICAgICAgICAgICBpZiBwX3BhdGggYW5kIHBfcGF0aFswXSBpbiBzZXBzOgogICAgICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyBhYnNvbHV0ZQogICAgICAgICAgICAgICAgaWYgcF9kcml2ZSBvciBub3QgcmVzdWx0X2RyaXZlOgogICAgICAgICAgICAgICAgICAgIHJlc3VsdF9kcml2ZSA9IHBfZHJpdmUKICAgICAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcF9wYXRoCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbGlmIHBfZHJpdmUgYW5kIHBfZHJpdmUgIT0gcmVzdWx0X2RyaXZlOgogICAgICAgICAgICAgICAgaWYgcF9kcml2ZS5sb3dlcigpICE9IHJlc3VsdF9kcml2ZS5sb3dlcigpOgogICAgICAgICAgICAgICAgICAgICMgRGlmZmVyZW50IGRyaXZlcyA9PiBpZ25vcmUgdGhlIGZpcnN0IHBhdGggZW50aXJlbHkKICAgICAgICAgICAgICAgICAgICByZXN1bHRfZHJpdmUgPSBwX2RyaXZlCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3BhdGggPSBwX3BhdGgKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIyBTYW1lIGRyaXZlIGluIGRpZmZlcmVudCBjYXNlCiAgICAgICAgICAgICAgICByZXN1bHRfZHJpdmUgPSBwX2RyaXZlCiAgICAgICAgICAgICMgU2Vjb25kIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGZpcnN0CiAgICAgICAgICAgIGlmIHJlc3VsdF9wYXRoIGFuZCByZXN1bHRfcGF0aFstMV0gbm90IGluIHNlcHM6CiAgICAgICAgICAgICAgICByZXN1bHRfcGF0aCA9IHJlc3VsdF9wYXRoICsgc2VwCiAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcmVzdWx0X3BhdGggKyBwX3BhdGgKICAgICAgICAjIyBhZGQgc2VwYXJhdG9yIGJldHdlZW4gVU5DIGFuZCBub24tYWJzb2x1dGUgcGF0aAogICAgICAgIGlmIChyZXN1bHRfcGF0aCBhbmQgcmVzdWx0X3BhdGhbMF0gbm90IGluIHNlcHMgYW5kCiAgICAgICAgICAgIHJlc3VsdF9kcml2ZSBhbmQgcmVzdWx0X2RyaXZlWy0xOl0gIT0gY29sb24pOgogICAgICAgICAgICByZXR1cm4gcmVzdWx0X2RyaXZlICsgc2VwICsgcmVzdWx0X3BhdGgKICAgICAgICByZXR1cm4gcmVzdWx0X2RyaXZlICsgcmVzdWx0X3BhdGgKICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgQnl0ZXNXYXJuaW5nKToKICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdqb2luJywgcGF0aCwgKnBhdGhzKQogICAgICAgIHJhaXNlCgoKIyBTcGxpdCBhIHBhdGggaW4gYSBkcml2ZSBzcGVjaWZpY2F0aW9uIChhIGRyaXZlIGxldHRlciBmb2xsb3dlZCBieSBhCiMgY29sb24pIGFuZCB0aGUgcGF0aCBzcGVjaWZpY2F0aW9uLgojIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgZHJpdmVzcGVjICsgcGF0aHNwZWMgPT0gcApkZWYgc3BsaXRkcml2ZShwKToKICAgICIiIlNwbGl0IGEgcGF0aG5hbWUgaW50byBkcml2ZS9VTkMgc2hhcmVwb2ludCBhbmQgcmVsYXRpdmUgcGF0aCBzcGVjaWZpZXJzLgogICAgUmV0dXJucyBhIDItdHVwbGUgKGRyaXZlX29yX3VuYywgcGF0aCk7IGVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4KCiAgICBJZiB5b3UgYXNzaWduCiAgICAgICAgcmVzdWx0ID0gc3BsaXRkcml2ZShwKQogICAgSXQgaXMgYWx3YXlzIHRydWUgdGhhdDoKICAgICAgICByZXN1bHRbMF0gKyByZXN1bHRbMV0gPT0gcAoKICAgIElmIHRoZSBwYXRoIGNvbnRhaW5lZCBhIGRyaXZlIGxldHRlciwgZHJpdmVfb3JfdW5jIHdpbGwgY29udGFpbiBldmVyeXRoaW5nCiAgICB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBjb2xvbi4gIGUuZy4gc3BsaXRkcml2ZSgiYzovZGlyIikgcmV0dXJucyAoImM6IiwgIi9kaXIiKQoKICAgIElmIHRoZSBwYXRoIGNvbnRhaW5lZCBhIFVOQyBwYXRoLCB0aGUgZHJpdmVfb3JfdW5jIHdpbGwgY29udGFpbiB0aGUgaG9zdCBuYW1lCiAgICBhbmQgc2hhcmUgdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcgdGhlIGZvdXJ0aCBkaXJlY3Rvcnkgc2VwYXJhdG9yIGNoYXJhY3Rlci4KICAgIGUuZy4gc3BsaXRkcml2ZSgiLy9ob3N0L2NvbXB1dGVyL2RpciIpIHJldHVybnMgKCIvL2hvc3QvY29tcHV0ZXIiLCAiL2RpciIpCgogICAgUGF0aHMgY2Fubm90IGNvbnRhaW4gYm90aCBhIGRyaXZlIGxldHRlciBhbmQgYSBVTkMgcGF0aC4KCiAgICAiIiIKICAgIHAgPSBvcy5mc3BhdGgocCkKICAgIGlmIGxlbihwKSA+PSAyOgogICAgICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgogICAgICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICAgICBhbHRzZXAgPSBiJy8nCiAgICAgICAgICAgIGNvbG9uID0gYic6JwogICAgICAgICAgICB1bmNfcHJlZml4ID0gYidcXFxcP1xcVU5DXFwnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VwID0gJ1xcJwogICAgICAgICAgICBhbHRzZXAgPSAnLycKICAgICAgICAgICAgY29sb24gPSAnOicKICAgICAgICAgICAgdW5jX3ByZWZpeCA9ICdcXFxcP1xcVU5DXFwnCiAgICAgICAgbm9ybXAgPSBwLnJlcGxhY2UoYWx0c2VwLCBzZXApCiAgICAgICAgaWYgbm9ybXBbMDoyXSA9PSBzZXAgKiAyOgogICAgICAgICAgICAjIFVOQyBkcml2ZXMsIGUuZy4gXFxzZXJ2ZXJcc2hhcmUgb3IgXFw/XFVOQ1xzZXJ2ZXJcc2hhcmUKICAgICAgICAgICAgIyBEZXZpY2UgZHJpdmVzLCBlLmcuIFxcLlxkZXZpY2Ugb3IgXFw/XGRldmljZQogICAgICAgICAgICBzdGFydCA9IDggaWYgbm9ybXBbOjhdLnVwcGVyKCkgPT0gdW5jX3ByZWZpeCBlbHNlIDIKICAgICAgICAgICAgaW5kZXggPSBub3JtcC5maW5kKHNlcCwgc3RhcnQpCiAgICAgICAgICAgIGlmIGluZGV4ID09IC0xOgogICAgICAgICAgICAgICAgcmV0dXJuIHAsIHBbOjBdCiAgICAgICAgICAgIGluZGV4MiA9IG5vcm1wLmZpbmQoc2VwLCBpbmRleCArIDEpCiAgICAgICAgICAgIGlmIGluZGV4MiA9PSAtMToKICAgICAgICAgICAgICAgIHJldHVybiBwLCBwWzowXQogICAgICAgICAgICByZXR1cm4gcFs6aW5kZXgyXSwgcFtpbmRleDI6XQogICAgICAgIGlmIG5vcm1wWzE6Ml0gPT0gY29sb246CiAgICAgICAgICAgICMgRHJpdmUtbGV0dGVyIGRyaXZlcywgZS5nLiBYOgogICAgICAgICAgICByZXR1cm4gcFs6Ml0sIHBbMjpdCiAgICByZXR1cm4gcFs6MF0sIHAKCgojIFNwbGl0IGEgcGF0aCBpbiBoZWFkIChldmVyeXRoaW5nIHVwIHRvIHRoZSBsYXN0ICcvJykgYW5kIHRhaWwgKHRoZQojIHJlc3QpLiAgQWZ0ZXIgdGhlIHRyYWlsaW5nICcvJyBpcyBzdHJpcHBlZCwgdGhlIGludmFyaWFudAojIGpvaW4oaGVhZCwgdGFpbCkgPT0gcCBob2xkcy4KIyBUaGUgcmVzdWx0aW5nIGhlYWQgd29uJ3QgZW5kIGluICcvJyB1bmxlc3MgaXQgaXMgdGhlIHJvb3QuCgpkZWYgc3BsaXQocCk6CiAgICAiIiJTcGxpdCBhIHBhdGhuYW1lLgoKICAgIFJldHVybiB0dXBsZSAoaGVhZCwgdGFpbCkgd2hlcmUgdGFpbCBpcyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4KICAgIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKICAgIHAgPSBvcy5mc3BhdGgocCkKICAgIHNlcHMgPSBfZ2V0X2JvdGhzZXBzKHApCiAgICBkLCBwID0gc3BsaXRkcml2ZShwKQogICAgIyBzZXQgaSB0byBpbmRleCBiZXlvbmQgcCdzIGxhc3Qgc2xhc2gKICAgIGkgPSBsZW4ocCkKICAgIHdoaWxlIGkgYW5kIHBbaS0xXSBub3QgaW4gc2VwczoKICAgICAgICBpIC09IDEKICAgIGhlYWQsIHRhaWwgPSBwWzppXSwgcFtpOl0gICMgbm93IHRhaWwgaGFzIG5vIHNsYXNoZXMKICAgICMgcmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMgZnJvbSBoZWFkLCB1bmxlc3MgaXQncyBhbGwgc2xhc2hlcwogICAgaGVhZCA9IGhlYWQucnN0cmlwKHNlcHMpIG9yIGhlYWQKICAgIHJldHVybiBkICsgaGVhZCwgdGFpbAoKCiMgU3BsaXQgYSBwYXRoIGluIHJvb3QgYW5kIGV4dGVuc2lvbi4KIyBUaGUgZXh0ZW5zaW9uIGlzIGV2ZXJ5dGhpbmcgc3RhcnRpbmcgYXQgdGhlIGxhc3QgZG90IGluIHRoZSBsYXN0CiMgcGF0aG5hbWUgY29tcG9uZW50OyB0aGUgcm9vdCBpcyBldmVyeXRoaW5nIGJlZm9yZSB0aGF0LgojIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgcm9vdCArIGV4dCA9PSBwLgoKZGVmIHNwbGl0ZXh0KHApOgogICAgcCA9IG9zLmZzcGF0aChwKQogICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CiAgICAgICAgcmV0dXJuIGdlbmVyaWNwYXRoLl9zcGxpdGV4dChwLCBiJ1xcJywgYicvJywgYicuJykKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGdlbmVyaWNwYXRoLl9zcGxpdGV4dChwLCAnXFwnLCAnLycsICcuJykKc3BsaXRleHQuX19kb2NfXyA9IGdlbmVyaWNwYXRoLl9zcGxpdGV4dC5fX2RvY19fCgoKIyBSZXR1cm4gdGhlIHRhaWwgKGJhc2VuYW1lKSBwYXJ0IG9mIGEgcGF0aC4KCmRlZiBiYXNlbmFtZShwKToKICAgICIiIlJldHVybnMgdGhlIGZpbmFsIGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCiAgICByZXR1cm4gc3BsaXQocClbMV0KCgojIFJldHVybiB0aGUgaGVhZCAoZGlybmFtZSkgcGFydCBvZiBhIHBhdGguCgpkZWYgZGlybmFtZShwKToKICAgICIiIlJldHVybnMgdGhlIGRpcmVjdG9yeSBjb21wb25lbnQgb2YgYSBwYXRobmFtZSIiIgogICAgcmV0dXJuIHNwbGl0KHApWzBdCgojIElzIGEgcGF0aCBhIHN5bWJvbGljIGxpbms/CiMgVGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2Ugb24gc3lzdGVtcyB3aGVyZSBvcy5sc3RhdCBkb2Vzbid0IGV4aXN0LgoKZGVmIGlzbGluayhwYXRoKToKICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLgogICAgVGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIFdpbmRvd3MgcHJpb3IgdG8gNi4wLgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgc3QgPSBvcy5sc3RhdChwYXRoKQogICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gc3RhdC5TX0lTTE5LKHN0LnN0X21vZGUpCgojIEJlaW5nIHRydWUgZm9yIGRhbmdsaW5nIHN5bWJvbGljIGxpbmtzIGlzIGFsc28gdXNlZnVsLgoKZGVmIGxleGlzdHMocGF0aCk6CiAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGV4aXN0cy4gIFJldHVybnMgVHJ1ZSBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzIiIiCiAgICB0cnk6CiAgICAgICAgc3QgPSBvcy5sc3RhdChwYXRoKQogICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgojIElzIGEgcGF0aCBhIG1vdW50IHBvaW50PwojIEFueSBkcml2ZSBsZXR0ZXIgcm9vdCAoZWcgYzpcKQojIEFueSBzaGFyZSBVTkMgKGVnIFxcc2VydmVyXHNoYXJlKQojIEFueSB2b2x1bWUgbW91bnRlZCBvbiBhIGZpbGVzeXN0ZW0gZm9sZGVyCiMKIyBObyBvbmUgbWV0aG9kIGRldGVjdHMgYWxsIHRocmVlIHNpdHVhdGlvbnMuIEhpc3RvcmljYWxseSB3ZSd2ZSBsZXhpY2FsbHkKIyBkZXRlY3RlZCBkcml2ZSBsZXR0ZXIgcm9vdHMgYW5kIHNoYXJlIFVOQ3MuIFRoZSBjYW5vbmljYWwgYXBwcm9hY2ggdG8KIyBkZXRlY3RpbmcgbW91bnRlZCB2b2x1bWVzIChxdWVyeWluZyB0aGUgcmVwYXJzZSB0YWcpIGZhaWxzIGZvciB0aGUgbW9zdAojIGNvbW1vbiBjYXNlOiBkcml2ZSBsZXR0ZXIgcm9vdHMuIFRoZSBhbHRlcm5hdGl2ZSB3aGljaCB1c2VzIEdldFZvbHVtZVBhdGhOYW1lCiMgZmFpbHMgaWYgdGhlIGRyaXZlIGxldHRlciBpcyB0aGUgcmVzdWx0IG9mIGEgU1VCU1QuCnRyeToKICAgIGZyb20gbnQgaW1wb3J0IF9nZXR2b2x1bWVwYXRobmFtZQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBfZ2V0dm9sdW1lcGF0aG5hbWUgPSBOb25lCmRlZiBpc21vdW50KHBhdGgpOgogICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIG1vdW50IHBvaW50IChhIGRyaXZlIHJvb3QsIHRoZSByb290IG9mIGEKICAgIHNoYXJlLCBvciBhIG1vdW50ZWQgdm9sdW1lKSIiIgogICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocGF0aCkKICAgIHBhdGggPSBhYnNwYXRoKHBhdGgpCiAgICByb290LCByZXN0ID0gc3BsaXRkcml2ZShwYXRoKQogICAgaWYgcm9vdCBhbmQgcm9vdFswXSBpbiBzZXBzOgogICAgICAgIHJldHVybiAobm90IHJlc3QpIG9yIChyZXN0IGluIHNlcHMpCiAgICBpZiByZXN0IGFuZCByZXN0IGluIHNlcHM6CiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBpZiBfZ2V0dm9sdW1lcGF0aG5hbWU6CiAgICAgICAgeCA9IHBhdGgucnN0cmlwKHNlcHMpCiAgICAgICAgeSA9X2dldHZvbHVtZXBhdGhuYW1lKHBhdGgpLnJzdHJpcChzZXBzKQogICAgICAgIHJldHVybiB4LmNhc2Vmb2xkKCkgPT0geS5jYXNlZm9sZCgpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBGYWxzZQoKCiMgRXhwYW5kIHBhdGhzIGJlZ2lubmluZyB3aXRoICd+JyBvciAnfnVzZXInLgojICd+JyBtZWFucyAkSE9NRTsgJ351c2VyJyBtZWFucyB0aGF0IHVzZXIncyBob21lIGRpcmVjdG9yeS4KIyBJZiB0aGUgcGF0aCBkb2Vzbid0IGJlZ2luIHdpdGggJ34nLCBvciBpZiB0aGUgdXNlciBvciAkSE9NRSBpcyB1bmtub3duLAojIHRoZSBwYXRoIGlzIHJldHVybmVkIHVuY2hhbmdlZCAobGVhdmluZyBlcnJvciByZXBvcnRpbmcgdG8gd2hhdGV2ZXIKIyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgZXhwYW5kZWQgcGF0aCBhcyBhcmd1bWVudCkuCiMgU2VlIGFsc28gbW9kdWxlICdnbG9iJyBmb3IgZXhwYW5zaW9uIG9mICosID8gYW5kIFsuLi5dIGluIHBhdGhuYW1lcy4KIyAoQSBmdW5jdGlvbiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkIHRvIGRvIGZ1bGwgKnNoLXN0eWxlIGVudmlyb25tZW50CiMgdmFyaWFibGUgZXhwYW5zaW9uLikKCmRlZiBleHBhbmR1c2VyKHBhdGgpOgogICAgIiIiRXhwYW5kIH4gYW5kIH51c2VyIGNvbnN0cnVjdHMuCgogICAgSWYgdXNlciBvciAkSE9NRSBpcyB1bmtub3duLCBkbyBub3RoaW5nLiIiIgogICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgdGlsZGUgPSBiJ34nCiAgICBlbHNlOgogICAgICAgIHRpbGRlID0gJ34nCiAgICBpZiBub3QgcGF0aC5zdGFydHN3aXRoKHRpbGRlKToKICAgICAgICByZXR1cm4gcGF0aAogICAgaSwgbiA9IDEsIGxlbihwYXRoKQogICAgd2hpbGUgaSA8IG4gYW5kIHBhdGhbaV0gbm90IGluIF9nZXRfYm90aHNlcHMocGF0aCk6CiAgICAgICAgaSArPSAxCgogICAgaWYgJ1VTRVJQUk9GSUxFJyBpbiBvcy5lbnZpcm9uOgogICAgICAgIHVzZXJob21lID0gb3MuZW52aXJvblsnVVNFUlBST0ZJTEUnXQogICAgZWxpZiBub3QgJ0hPTUVQQVRIJyBpbiBvcy5lbnZpcm9uOgogICAgICAgIHJldHVybiBwYXRoCiAgICBlbHNlOgogICAgICAgIHRyeToKICAgICAgICAgICAgZHJpdmUgPSBvcy5lbnZpcm9uWydIT01FRFJJVkUnXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgZHJpdmUgPSAnJwogICAgICAgIHVzZXJob21lID0gam9pbihkcml2ZSwgb3MuZW52aXJvblsnSE9NRVBBVEgnXSkKCiAgICBpZiBpICE9IDE6ICN+dXNlcgogICAgICAgIHRhcmdldF91c2VyID0gcGF0aFsxOmldCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0YXJnZXRfdXNlciwgYnl0ZXMpOgogICAgICAgICAgICB0YXJnZXRfdXNlciA9IG9zLmZzZGVjb2RlKHRhcmdldF91c2VyKQogICAgICAgIGN1cnJlbnRfdXNlciA9IG9zLmVudmlyb24uZ2V0KCdVU0VSTkFNRScpCgogICAgICAgIGlmIHRhcmdldF91c2VyICE9IGN1cnJlbnRfdXNlcjoKICAgICAgICAgICAgIyBUcnkgdG8gZ3Vlc3MgdXNlciBob21lIGRpcmVjdG9yeS4gIEJ5IGRlZmF1bHQgYWxsIHVzZXIKICAgICAgICAgICAgIyBwcm9maWxlIGRpcmVjdG9yaWVzIGFyZSBsb2NhdGVkIGluIHRoZSBzYW1lIHBsYWNlIGFuZCBhcmUKICAgICAgICAgICAgIyBuYW1lZCBieSBjb3JyZXNwb25kaW5nIHVzZXJuYW1lcy4gIElmIHVzZXJob21lIGlzbid0IGEKICAgICAgICAgICAgIyBub3JtYWwgcHJvZmlsZSBkaXJlY3RvcnksIHRoaXMgZ3Vlc3MgaXMgbGlrZWx5IHdyb25nLAogICAgICAgICAgICAjIHNvIHdlIGJhaWwgb3V0LgogICAgICAgICAgICBpZiBjdXJyZW50X3VzZXIgIT0gYmFzZW5hbWUodXNlcmhvbWUpOgogICAgICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAgICAgICAgdXNlcmhvbWUgPSBqb2luKGRpcm5hbWUodXNlcmhvbWUpLCB0YXJnZXRfdXNlcikKCiAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICB1c2VyaG9tZSA9IG9zLmZzZW5jb2RlKHVzZXJob21lKQoKICAgIHJldHVybiB1c2VyaG9tZSArIHBhdGhbaTpdCgoKIyBFeHBhbmQgcGF0aHMgY29udGFpbmluZyBzaGVsbCB2YXJpYWJsZSBzdWJzdGl0dXRpb25zLgojIFRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6CiMgICAgICAgLSBubyBleHBhbnNpb24gd2l0aGluIHNpbmdsZSBxdW90ZXMKIyAgICAgICAtICckJCcgaXMgdHJhbnNsYXRlZCBpbnRvICckJwojICAgICAgIC0gJyUlJyBpcyB0cmFuc2xhdGVkIGludG8gJyUnIGlmICclJScgYXJlIG5vdCBzZWVuIGluICV2YXIxJSV2YXIyJQojICAgICAgIC0gJHt2YXJuYW1lfSBpcyBhY2NlcHRlZC4KIyAgICAgICAtICR2YXJuYW1lIGlzIGFjY2VwdGVkLgojICAgICAgIC0gJXZhcm5hbWUlIGlzIGFjY2VwdGVkLgojICAgICAgIC0gdmFybmFtZXMgY2FuIGJlIG1hZGUgb3V0IG9mIGxldHRlcnMsIGRpZ2l0cyBhbmQgdGhlIGNoYXJhY3RlcnMgJ18tJwojICAgICAgICAgKHRob3VnaCBpcyBub3QgdmVyaWZpZWQgaW4gdGhlICR7dmFybmFtZX0gYW5kICV2YXJuYW1lJSBjYXNlcykKIyBYWFggV2l0aCBDT01NQU5ELkNPTSB5b3UgY2FuIHVzZSBhbnkgY2hhcmFjdGVycyBpbiBhIHZhcmlhYmxlIG5hbWUsCiMgWFhYIGV4Y2VwdCAnXnw8Pj0nLgoKZGVmIGV4cGFuZHZhcnMocGF0aCk6CiAgICAiIiJFeHBhbmQgc2hlbGwgdmFyaWFibGVzIG9mIHRoZSBmb3JtcyAkdmFyLCAke3Zhcn0gYW5kICV2YXIlLgoKICAgIFVua25vd24gdmFyaWFibGVzIGFyZSBsZWZ0IHVuY2hhbmdlZC4iIiIKICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgIGlmIGInJCcgbm90IGluIHBhdGggYW5kIGInJScgbm90IGluIHBhdGg6CiAgICAgICAgICAgIHJldHVybiBwYXRoCiAgICAgICAgaW1wb3J0IHN0cmluZwogICAgICAgIHZhcmNoYXJzID0gYnl0ZXMoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ18tJywgJ2FzY2lpJykKICAgICAgICBxdW90ZSA9IGInXCcnCiAgICAgICAgcGVyY2VudCA9IGInJScKICAgICAgICBicmFjZSA9IGIneycKICAgICAgICByYnJhY2UgPSBiJ30nCiAgICAgICAgZG9sbGFyID0gYickJwogICAgICAgIGVudmlyb24gPSBnZXRhdHRyKG9zLCAnZW52aXJvbmInLCBOb25lKQogICAgZWxzZToKICAgICAgICBpZiAnJCcgbm90IGluIHBhdGggYW5kICclJyBub3QgaW4gcGF0aDoKICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAgICBpbXBvcnQgc3RyaW5nCiAgICAgICAgdmFyY2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAnXy0nCiAgICAgICAgcXVvdGUgPSAnXCcnCiAgICAgICAgcGVyY2VudCA9ICclJwogICAgICAgIGJyYWNlID0gJ3snCiAgICAgICAgcmJyYWNlID0gJ30nCiAgICAgICAgZG9sbGFyID0gJyQnCiAgICAgICAgZW52aXJvbiA9IG9zLmVudmlyb24KICAgIHJlcyA9IHBhdGhbOjBdCiAgICBpbmRleCA9IDAKICAgIHBhdGhsZW4gPSBsZW4ocGF0aCkKICAgIHdoaWxlIGluZGV4IDwgcGF0aGxlbjoKICAgICAgICBjID0gcGF0aFtpbmRleDppbmRleCsxXQogICAgICAgIGlmIGMgPT0gcXVvdGU6ICAgIyBubyBleHBhbnNpb24gd2l0aGluIHNpbmdsZSBxdW90ZXMKICAgICAgICAgICAgcGF0aCA9IHBhdGhbaW5kZXggKyAxOl0KICAgICAgICAgICAgcGF0aGxlbiA9IGxlbihwYXRoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpbmRleCA9IHBhdGguaW5kZXgoYykKICAgICAgICAgICAgICAgIHJlcyArPSBjICsgcGF0aFs6aW5kZXggKyAxXQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHJlcyArPSBjICsgcGF0aAogICAgICAgICAgICAgICAgaW5kZXggPSBwYXRobGVuIC0gMQogICAgICAgIGVsaWYgYyA9PSBwZXJjZW50OiAgIyB2YXJpYWJsZSBvciAnJScKICAgICAgICAgICAgaWYgcGF0aFtpbmRleCArIDE6aW5kZXggKyAyXSA9PSBwZXJjZW50OgogICAgICAgICAgICAgICAgcmVzICs9IGMKICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoW2luZGV4KzE6XQogICAgICAgICAgICAgICAgcGF0aGxlbiA9IGxlbihwYXRoKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGF0aC5pbmRleChwZXJjZW50KQogICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcmVzICs9IHBlcmNlbnQgKyBwYXRoCiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXRobGVuIC0gMQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzppbmRleF0KICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudmlyb24gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gb3MuZnNlbmNvZGUob3MuZW52aXJvbltvcy5mc2RlY29kZSh2YXIpXSkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZW52aXJvblt2YXJdCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBlcmNlbnQgKyB2YXIgKyBwZXJjZW50CiAgICAgICAgICAgICAgICAgICAgcmVzICs9IHZhbHVlCiAgICAgICAgZWxpZiBjID09IGRvbGxhcjogICMgdmFyaWFibGUgb3IgJyQkJwogICAgICAgICAgICBpZiBwYXRoW2luZGV4ICsgMTppbmRleCArIDJdID09IGRvbGxhcjoKICAgICAgICAgICAgICAgIHJlcyArPSBjCiAgICAgICAgICAgICAgICBpbmRleCArPSAxCiAgICAgICAgICAgIGVsaWYgcGF0aFtpbmRleCArIDE6aW5kZXggKyAyXSA9PSBicmFjZToKICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoW2luZGV4KzI6XQogICAgICAgICAgICAgICAgcGF0aGxlbiA9IGxlbihwYXRoKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGF0aC5pbmRleChyYnJhY2UpCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICByZXMgKz0gZG9sbGFyICsgYnJhY2UgKyBwYXRoCiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXRobGVuIC0gMQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzppbmRleF0KICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudmlyb24gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gb3MuZnNlbmNvZGUob3MuZW52aXJvbltvcy5mc2RlY29kZSh2YXIpXSkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZW52aXJvblt2YXJdCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRvbGxhciArIGJyYWNlICsgdmFyICsgcmJyYWNlCiAgICAgICAgICAgICAgICAgICAgcmVzICs9IHZhbHVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzowXQogICAgICAgICAgICAgICAgaW5kZXggKz0gMQogICAgICAgICAgICAgICAgYyA9IHBhdGhbaW5kZXg6aW5kZXggKyAxXQogICAgICAgICAgICAgICAgd2hpbGUgYyBhbmQgYyBpbiB2YXJjaGFyczoKICAgICAgICAgICAgICAgICAgICB2YXIgKz0gYwogICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKICAgICAgICAgICAgICAgICAgICBjID0gcGF0aFtpbmRleDppbmRleCArIDFdCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaWYgZW52aXJvbiBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG9zLmZzZW5jb2RlKG9zLmVudmlyb25bb3MuZnNkZWNvZGUodmFyKV0pCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBlbnZpcm9uW3Zhcl0KICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRvbGxhciArIHZhcgogICAgICAgICAgICAgICAgcmVzICs9IHZhbHVlCiAgICAgICAgICAgICAgICBpZiBjOgogICAgICAgICAgICAgICAgICAgIGluZGV4IC09IDEKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXMgKz0gYwogICAgICAgIGluZGV4ICs9IDEKICAgIHJldHVybiByZXMKCgojIE5vcm1hbGl6ZSBhIHBhdGgsIGUuZy4gQS8vQiwgQS8uL0IgYW5kIEEvZm9vLy4uL0IgYWxsIGJlY29tZSBBXEIuCiMgUHJldmlvdXNseSwgdGhpcyBmdW5jdGlvbiBhbHNvIHRydW5jYXRlZCBwYXRobmFtZXMgdG8gOCszIGZvcm1hdCwKIyBidXQgYXMgdGhpcyBtb2R1bGUgaXMgY2FsbGVkICJudHBhdGgiLCB0aGF0J3Mgb2J2aW91c2x5IHdyb25nIQp0cnk6CiAgICBmcm9tIG50IGltcG9ydCBfcGF0aF9ub3JtcGF0aAoKZXhjZXB0IEltcG9ydEVycm9yOgogICAgZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgogICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgICAgYWx0c2VwID0gYicvJwogICAgICAgICAgICBjdXJkaXIgPSBiJy4nCiAgICAgICAgICAgIHBhcmRpciA9IGInLi4nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VwID0gJ1xcJwogICAgICAgICAgICBhbHRzZXAgPSAnLycKICAgICAgICAgICAgY3VyZGlyID0gJy4nCiAgICAgICAgICAgIHBhcmRpciA9ICcuLicKICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKGFsdHNlcCwgc2VwKQogICAgICAgIHByZWZpeCwgcGF0aCA9IHNwbGl0ZHJpdmUocGF0aCkKCiAgICAgICAgIyBjb2xsYXBzZSBpbml0aWFsIGJhY2tzbGFzaGVzCiAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKHNlcCk6CiAgICAgICAgICAgIHByZWZpeCArPSBzZXAKICAgICAgICAgICAgcGF0aCA9IHBhdGgubHN0cmlwKHNlcCkKCiAgICAgICAgY29tcHMgPSBwYXRoLnNwbGl0KHNlcCkKICAgICAgICBpID0gMAogICAgICAgIHdoaWxlIGkgPCBsZW4oY29tcHMpOgogICAgICAgICAgICBpZiBub3QgY29tcHNbaV0gb3IgY29tcHNbaV0gPT0gY3VyZGlyOgogICAgICAgICAgICAgICAgZGVsIGNvbXBzW2ldCiAgICAgICAgICAgIGVsaWYgY29tcHNbaV0gPT0gcGFyZGlyOgogICAgICAgICAgICAgICAgaWYgaSA+IDAgYW5kIGNvbXBzW2ktMV0gIT0gcGFyZGlyOgogICAgICAgICAgICAgICAgICAgIGRlbCBjb21wc1tpLTE6aSsxXQogICAgICAgICAgICAgICAgICAgIGkgLT0gMQogICAgICAgICAgICAgICAgZWxpZiBpID09IDAgYW5kIHByZWZpeC5lbmRzd2l0aChzZXApOgogICAgICAgICAgICAgICAgICAgIGRlbCBjb21wc1tpXQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGkgKz0gMQogICAgICAgICMgSWYgdGhlIHBhdGggaXMgbm93IGVtcHR5LCBzdWJzdGl0dXRlICcuJwogICAgICAgIGlmIG5vdCBwcmVmaXggYW5kIG5vdCBjb21wczoKICAgICAgICAgICAgY29tcHMuYXBwZW5kKGN1cmRpcikKICAgICAgICByZXR1cm4gcHJlZml4ICsgc2VwLmpvaW4oY29tcHMpCgplbHNlOgogICAgZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgogICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgcmV0dXJuIG9zLmZzZW5jb2RlKF9wYXRoX25vcm1wYXRoKG9zLmZzZGVjb2RlKHBhdGgpKSkgb3IgYiIuIgogICAgICAgIHJldHVybiBfcGF0aF9ub3JtcGF0aChwYXRoKSBvciAiLiIKCgpkZWYgX2Fic3BhdGhfZmFsbGJhY2socGF0aCk6CiAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoIGFzIGEgZmFsbGJhY2sgZnVuY3Rpb24gaW4gY2FzZQogICAgYG50Ll9nZXRmdWxscGF0aG5hbWVgIGlzIG5vdCBhdmFpbGFibGUgb3IgcmFpc2VzIE9TRXJyb3IuIFNlZSBicG8tMzEwNDcgZm9yCiAgICBtb3JlLgoKICAgICIiIgoKICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgIGlmIG5vdCBpc2FicyhwYXRoKToKICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkYigpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAgICAgICBwYXRoID0gam9pbihjd2QsIHBhdGgpCiAgICByZXR1cm4gbm9ybXBhdGgocGF0aCkKCiMgUmV0dXJuIGFuIGFic29sdXRlIHBhdGguCnRyeToKICAgIGZyb20gbnQgaW1wb3J0IF9nZXRmdWxscGF0aG5hbWUKCmV4Y2VwdCBJbXBvcnRFcnJvcjogIyBub3QgcnVubmluZyBvbiBXaW5kb3dzIC0gbW9jayB1cCBzb21ldGhpbmcgc2Vuc2libGUKICAgIGFic3BhdGggPSBfYWJzcGF0aF9mYWxsYmFjawoKZWxzZTogICMgdXNlIG5hdGl2ZSBXaW5kb3dzIG1ldGhvZCBvbiBXaW5kb3dzCiAgICBkZWYgYWJzcGF0aChwYXRoKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoLiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIF9nZXRmdWxscGF0aG5hbWUobm9ybXBhdGgocGF0aCkpCiAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgcmV0dXJuIF9hYnNwYXRoX2ZhbGxiYWNrKHBhdGgpCgp0cnk6CiAgICBmcm9tIG50IGltcG9ydCBfZ2V0ZmluYWxwYXRobmFtZSwgcmVhZGxpbmsgYXMgX250X3JlYWRsaW5rCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICMgcmVhbHBhdGggaXMgYSBuby1vcCBvbiBzeXN0ZW1zIHdpdGhvdXQgX2dldGZpbmFscGF0aG5hbWUgc3VwcG9ydC4KICAgIHJlYWxwYXRoID0gYWJzcGF0aAplbHNlOgogICAgZGVmIF9yZWFkbGlua19kZWVwKHBhdGgpOgogICAgICAgICMgVGhlc2UgZXJyb3IgY29kZXMgaW5kaWNhdGUgdGhhdCB3ZSBzaG91bGQgc3RvcCByZWFkaW5nIGxpbmtzIGFuZAogICAgICAgICMgcmV0dXJuIHRoZSBwYXRoIHdlIGN1cnJlbnRseSBoYXZlLgogICAgICAgICMgMTogRVJST1JfSU5WQUxJRF9GVU5DVElPTgogICAgICAgICMgMjogRVJST1JfRklMRV9OT1RfRk9VTkQKICAgICAgICAjIDM6IEVSUk9SX0RJUkVDVE9SWV9OT1RfRk9VTkQKICAgICAgICAjIDU6IEVSUk9SX0FDQ0VTU19ERU5JRUQKICAgICAgICAjIDIxOiBFUlJPUl9OT1RfUkVBRFkgKGltcGxpZXMgZHJpdmUgd2l0aCBubyBtZWRpYSkKICAgICAgICAjIDMyOiBFUlJPUl9TSEFSSU5HX1ZJT0xBVElPTiAocHJvYmFibHkgYW4gTlRGUyBwYWdpbmcgZmlsZSkKICAgICAgICAjIDUwOiBFUlJPUl9OT1RfU1VQUE9SVEVEIChpbXBsaWVzIG5vIHN1cHBvcnQgZm9yIHJlcGFyc2UgcG9pbnRzKQogICAgICAgICMgNjc6IEVSUk9SX0JBRF9ORVRfTkFNRSAoaW1wbGllcyByZW1vdGUgc2VydmVyIHVuYXZhaWxhYmxlKQogICAgICAgICMgODc6IEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSCiAgICAgICAgIyA0MzkwOiBFUlJPUl9OT1RfQV9SRVBBUlNFX1BPSU5UCiAgICAgICAgIyA0MzkyOiBFUlJPUl9JTlZBTElEX1JFUEFSU0VfREFUQQogICAgICAgICMgNDM5MzogRVJST1JfUkVQQVJTRV9UQUdfSU5WQUxJRAogICAgICAgIGFsbG93ZWRfd2luZXJyb3IgPSAxLCAyLCAzLCA1LCAyMSwgMzIsIDUwLCA2NywgODcsIDQzOTAsIDQzOTIsIDQzOTMKCiAgICAgICAgc2VlbiA9IHNldCgpCiAgICAgICAgd2hpbGUgbm9ybWNhc2UocGF0aCkgbm90IGluIHNlZW46CiAgICAgICAgICAgIHNlZW4uYWRkKG5vcm1jYXNlKHBhdGgpKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBvbGRfcGF0aCA9IHBhdGgKICAgICAgICAgICAgICAgIHBhdGggPSBfbnRfcmVhZGxpbmsocGF0aCkKICAgICAgICAgICAgICAgICMgTGlua3MgbWF5IGJlIHJlbGF0aXZlLCBzbyByZXNvbHZlIHRoZW0gYWdhaW5zdCB0aGVpcgogICAgICAgICAgICAgICAgIyBvd24gbG9jYXRpb24KICAgICAgICAgICAgICAgIGlmIG5vdCBpc2FicyhwYXRoKToKICAgICAgICAgICAgICAgICAgICAjIElmIGl0J3Mgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBzeW1saW5rLCB3ZSBkb24ndCBrbm93CiAgICAgICAgICAgICAgICAgICAgIyB3aGF0IGl0J3MgYWN0dWFsbHkgZ29pbmcgdG8gYmUgcmVzb2x2ZWQgYWdhaW5zdCwgc28KICAgICAgICAgICAgICAgICAgICAjIGp1c3QgcmV0dXJuIHRoZSBvbGQgcGF0aC4KICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNsaW5rKG9sZF9wYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9sZF9wYXRoCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG5vcm1wYXRoKGpvaW4oZGlybmFtZShvbGRfcGF0aCksIHBhdGgpKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleDoKICAgICAgICAgICAgICAgIGlmIGV4LndpbmVycm9yIGluIGFsbG93ZWRfd2luZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIyBTdG9wIG9uIHJlcGFyc2UgcG9pbnRzIHRoYXQgYXJlIG5vdCBzeW1saW5rcwogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICByZXR1cm4gcGF0aAoKICAgIGRlZiBfZ2V0ZmluYWxwYXRobmFtZV9ub25zdHJpY3QocGF0aCk6CiAgICAgICAgIyBUaGVzZSBlcnJvciBjb2RlcyBpbmRpY2F0ZSB0aGF0IHdlIHNob3VsZCBzdG9wIHJlc29sdmluZyB0aGUgcGF0aAogICAgICAgICMgYW5kIHJldHVybiB0aGUgdmFsdWUgd2UgY3VycmVudGx5IGhhdmUuCiAgICAgICAgIyAxOiBFUlJPUl9JTlZBTElEX0ZVTkNUSU9OCiAgICAgICAgIyAyOiBFUlJPUl9GSUxFX05PVF9GT1VORAogICAgICAgICMgMzogRVJST1JfRElSRUNUT1JZX05PVF9GT1VORAogICAgICAgICMgNTogRVJST1JfQUNDRVNTX0RFTklFRAogICAgICAgICMgMjE6IEVSUk9SX05PVF9SRUFEWSAoaW1wbGllcyBkcml2ZSB3aXRoIG5vIG1lZGlhKQogICAgICAgICMgMzI6IEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OIChwcm9iYWJseSBhbiBOVEZTIHBhZ2luZyBmaWxlKQogICAgICAgICMgNTA6IEVSUk9SX05PVF9TVVBQT1JURUQKICAgICAgICAjIDUzOiBFUlJPUl9CQURfTkVUUEFUSAogICAgICAgICMgNjU6IEVSUk9SX05FVFdPUktfQUNDRVNTX0RFTklFRAogICAgICAgICMgNjc6IEVSUk9SX0JBRF9ORVRfTkFNRSAoaW1wbGllcyByZW1vdGUgc2VydmVyIHVuYXZhaWxhYmxlKQogICAgICAgICMgODc6IEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSCiAgICAgICAgIyAxMjM6IEVSUk9SX0lOVkFMSURfTkFNRQogICAgICAgICMgMTYxOiBFUlJPUl9CQURfUEFUSE5BTUUKICAgICAgICAjIDE5MjA6IEVSUk9SX0NBTlRfQUNDRVNTX0ZJTEUKICAgICAgICAjIDE5MjE6IEVSUk9SX0NBTlRfUkVTT0xWRV9GSUxFTkFNRSAoaW1wbGllcyB1bmZvbGxvd2FibGUgc3ltbGluaykKICAgICAgICBhbGxvd2VkX3dpbmVycm9yID0gMSwgMiwgMywgNSwgMjEsIDMyLCA1MCwgNTMsIDY1LCA2NywgODcsIDEyMywgMTYxLCAxOTIwLCAxOTIxCgogICAgICAgICMgTm9uLXN0cmljdCBhbGdvcml0aG0gaXMgdG8gZmluZCBhcyBtdWNoIG9mIHRoZSB0YXJnZXQgZGlyZWN0b3J5CiAgICAgICAgIyBhcyB3ZSBjYW4gYW5kIGpvaW4gdGhlIHJlc3QuCiAgICAgICAgdGFpbCA9ICcnCiAgICAgICAgd2hpbGUgcGF0aDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcGF0aCA9IF9nZXRmaW5hbHBhdGhuYW1lKHBhdGgpCiAgICAgICAgICAgICAgICByZXR1cm4gam9pbihwYXRoLCB0YWlsKSBpZiB0YWlsIGVsc2UgcGF0aAogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleDoKICAgICAgICAgICAgICAgIGlmIGV4LndpbmVycm9yIG5vdCBpbiBhbGxvd2VkX3dpbmVycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIyBUaGUgT1MgY291bGQgbm90IHJlc29sdmUgdGhpcyBwYXRoIGZ1bGx5LCBzbyB3ZSBhdHRlbXB0CiAgICAgICAgICAgICAgICAgICAgIyB0byBmb2xsb3cgdGhlIGxpbmsgb3Vyc2VsdmVzLiBJZiB3ZSBzdWNjZWVkLCBqb2luIHRoZSB0YWlsCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgcmV0dXJuLgogICAgICAgICAgICAgICAgICAgIG5ld19wYXRoID0gX3JlYWRsaW5rX2RlZXAocGF0aCkKICAgICAgICAgICAgICAgICAgICBpZiBuZXdfcGF0aCAhPSBwYXRoOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gam9pbihuZXdfcGF0aCwgdGFpbCkgaWYgdGFpbCBlbHNlIG5ld19wYXRoCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGZhaWwgdG8gcmVhZGxpbmsoKSwgbGV0J3Mga2VlcCB0cmF2ZXJzaW5nCiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgcGF0aCwgbmFtZSA9IHNwbGl0KHBhdGgpCiAgICAgICAgICAgICAgICAjIFRPRE8gKGJwby0zODE4Nik6IFJlcXVlc3QgdGhlIHJlYWwgZmlsZSBuYW1lIGZyb20gdGhlIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgIyBlbnRyeSB1c2luZyBGaW5kRmlyc3RGaWxlVy4gRm9yIG5vdywgd2Ugd2lsbCByZXR1cm4gdGhlIHBhdGgKICAgICAgICAgICAgICAgICMgYXMgYmVzdCB3ZSBoYXZlIGl0CiAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBub3QgbmFtZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aCArIHRhaWwKICAgICAgICAgICAgICAgIHRhaWwgPSBqb2luKG5hbWUsIHRhaWwpIGlmIHRhaWwgZWxzZSBuYW1lCiAgICAgICAgcmV0dXJuIHRhaWwKCiAgICBkZWYgcmVhbHBhdGgocGF0aCwgKiwgc3RyaWN0PUZhbHNlKToKICAgICAgICBwYXRoID0gbm9ybXBhdGgocGF0aCkKICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgcHJlZml4ID0gYidcXFxcP1xcJwogICAgICAgICAgICB1bmNfcHJlZml4ID0gYidcXFxcP1xcVU5DXFwnCiAgICAgICAgICAgIG5ld191bmNfcHJlZml4ID0gYidcXFxcJwogICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2RiKCkKICAgICAgICAgICAgIyBicG8tMzgwODE6IFNwZWNpYWwgY2FzZSBmb3IgcmVhbHBhdGgoYidudWwnKQogICAgICAgICAgICBpZiBub3JtY2FzZShwYXRoKSA9PSBub3JtY2FzZShvcy5mc2VuY29kZShkZXZudWxsKSk6CiAgICAgICAgICAgICAgICByZXR1cm4gYidcXFxcLlxcTlVMJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByZWZpeCA9ICdcXFxcP1xcJwogICAgICAgICAgICB1bmNfcHJlZml4ID0gJ1xcXFw/XFxVTkNcXCcKICAgICAgICAgICAgbmV3X3VuY19wcmVmaXggPSAnXFxcXCcKICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgICAgIyBicG8tMzgwODE6IFNwZWNpYWwgY2FzZSBmb3IgcmVhbHBhdGgoJ251bCcpCiAgICAgICAgICAgIGlmIG5vcm1jYXNlKHBhdGgpID09IG5vcm1jYXNlKGRldm51bGwpOgogICAgICAgICAgICAgICAgcmV0dXJuICdcXFxcLlxcTlVMJwogICAgICAgIGhhZF9wcmVmaXggPSBwYXRoLnN0YXJ0c3dpdGgocHJlZml4KQogICAgICAgIGlmIG5vdCBoYWRfcHJlZml4IGFuZCBub3QgaXNhYnMocGF0aCk6CiAgICAgICAgICAgIHBhdGggPSBqb2luKGN3ZCwgcGF0aCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhdGggPSBfZ2V0ZmluYWxwYXRobmFtZShwYXRoKQogICAgICAgICAgICBpbml0aWFsX3dpbmVycm9yID0gMAogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4OgogICAgICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBpbml0aWFsX3dpbmVycm9yID0gZXgud2luZXJyb3IKICAgICAgICAgICAgcGF0aCA9IF9nZXRmaW5hbHBhdGhuYW1lX25vbnN0cmljdChwYXRoKQogICAgICAgICMgVGhlIHBhdGggcmV0dXJuZWQgYnkgX2dldGZpbmFscGF0aG5hbWUgd2lsbCBhbHdheXMgc3RhcnQgd2l0aCBcXD9cIC0KICAgICAgICAjIHN0cmlwIG9mZiB0aGF0IHByZWZpeCB1bmxlc3MgaXQgd2FzIGFscmVhZHkgcHJvdmlkZWQgb24gdGhlIG9yaWdpbmFsCiAgICAgICAgIyBwYXRoLgogICAgICAgIGlmIG5vdCBoYWRfcHJlZml4IGFuZCBwYXRoLnN0YXJ0c3dpdGgocHJlZml4KToKICAgICAgICAgICAgIyBGb3IgVU5DIHBhdGhzLCB0aGUgcHJlZml4IHdpbGwgYWN0dWFsbHkgYmUgXFw/XFVOQ1wKICAgICAgICAgICAgIyBIYW5kbGUgdGhhdCBjYXNlIGFzIHdlbGwuCiAgICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCh1bmNfcHJlZml4KToKICAgICAgICAgICAgICAgIHNwYXRoID0gbmV3X3VuY19wcmVmaXggKyBwYXRoW2xlbih1bmNfcHJlZml4KTpdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzcGF0aCA9IHBhdGhbbGVuKHByZWZpeCk6XQogICAgICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBub24tcHJlZml4ZWQgcGF0aCByZXNvbHZlcyB0byB0aGUgc2FtZSBwYXRoCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIF9nZXRmaW5hbHBhdGhuYW1lKHNwYXRoKSA9PSBwYXRoOgogICAgICAgICAgICAgICAgICAgIHBhdGggPSBzcGF0aAogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleDoKICAgICAgICAgICAgICAgICMgSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgYW5kIG9yaWdpbmFsbHkgZGlkIG5vdCBleGlzdCwgdGhlbgogICAgICAgICAgICAgICAgIyBzdHJpcCB0aGUgcHJlZml4IGFueXdheS4KICAgICAgICAgICAgICAgIGlmIGV4LndpbmVycm9yID09IGluaXRpYWxfd2luZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHNwYXRoCiAgICAgICAgcmV0dXJuIHBhdGgKCgojIFdpbjl4IGZhbWlseSBhbmQgZWFybGllciBoYXZlIG5vIFVuaWNvZGUgZmlsZW5hbWUgc3VwcG9ydC4Kc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgPSAoaGFzYXR0cihzeXMsICJnZXR3aW5kb3dzdmVyc2lvbiIpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKVszXSA+PSAyKQoKZGVmIHJlbHBhdGgocGF0aCwgc3RhcnQ9Tm9uZSk6CiAgICAiIiJSZXR1cm4gYSByZWxhdGl2ZSB2ZXJzaW9uIG9mIGEgcGF0aCIiIgogICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgc2VwID0gYidcXCcKICAgICAgICBjdXJkaXIgPSBiJy4nCiAgICAgICAgcGFyZGlyID0gYicuLicKICAgIGVsc2U6CiAgICAgICAgc2VwID0gJ1xcJwogICAgICAgIGN1cmRpciA9ICcuJwogICAgICAgIHBhcmRpciA9ICcuLicKCiAgICBpZiBzdGFydCBpcyBOb25lOgogICAgICAgIHN0YXJ0ID0gY3VyZGlyCgogICAgaWYgbm90IHBhdGg6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gcGF0aCBzcGVjaWZpZWQiKQoKICAgIHN0YXJ0ID0gb3MuZnNwYXRoKHN0YXJ0KQogICAgdHJ5OgogICAgICAgIHN0YXJ0X2FicyA9IGFic3BhdGgobm9ybXBhdGgoc3RhcnQpKQogICAgICAgIHBhdGhfYWJzID0gYWJzcGF0aChub3JtcGF0aChwYXRoKSkKICAgICAgICBzdGFydF9kcml2ZSwgc3RhcnRfcmVzdCA9IHNwbGl0ZHJpdmUoc3RhcnRfYWJzKQogICAgICAgIHBhdGhfZHJpdmUsIHBhdGhfcmVzdCA9IHNwbGl0ZHJpdmUocGF0aF9hYnMpCiAgICAgICAgaWYgbm9ybWNhc2Uoc3RhcnRfZHJpdmUpICE9IG5vcm1jYXNlKHBhdGhfZHJpdmUpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwYXRoIGlzIG9uIG1vdW50ICVyLCBzdGFydCBvbiBtb3VudCAlciIgJSAoCiAgICAgICAgICAgICAgICBwYXRoX2RyaXZlLCBzdGFydF9kcml2ZSkpCgogICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBzdGFydF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KICAgICAgICBwYXRoX2xpc3QgPSBbeCBmb3IgeCBpbiBwYXRoX3Jlc3Quc3BsaXQoc2VwKSBpZiB4XQogICAgICAgICMgV29yayBvdXQgaG93IG11Y2ggb2YgdGhlIGZpbGVwYXRoIGlzIHNoYXJlZCBieSBzdGFydCBhbmQgcGF0aC4KICAgICAgICBpID0gMAogICAgICAgIGZvciBlMSwgZTIgaW4gemlwKHN0YXJ0X2xpc3QsIHBhdGhfbGlzdCk6CiAgICAgICAgICAgIGlmIG5vcm1jYXNlKGUxKSAhPSBub3JtY2FzZShlMik6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpICs9IDEKCiAgICAgICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCiAgICAgICAgaWYgbm90IHJlbF9saXN0OgogICAgICAgICAgICByZXR1cm4gY3VyZGlyCiAgICAgICAgcmV0dXJuIGpvaW4oKnJlbF9saXN0KQogICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcsIERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygncmVscGF0aCcsIHBhdGgsIHN0YXJ0KQogICAgICAgIHJhaXNlCgoKIyBSZXR1cm4gdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoIG9mIHRoZSBzZXF1ZW5jZSBvZiBwYXRocyBnaXZlbiBhcyBpbnB1dC4KIyBUaGUgZnVuY3Rpb24gaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgJ3NlcGFyYXRvci1pbnNlbnNpdGl2ZScsIGkuZS4gaWYgdGhlCiMgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIHBhdGhzIGlzIHRoZSB1c2Ugb2YgJ1wnIHZlcnN1cyAnLycgYXMgc2VwYXJhdG9yLAojIHRoZXkgYXJlIGRlZW1lZCB0byBiZSBlcXVhbC4KIwojIEhvd2V2ZXIsIHRoZSByZXR1cm5lZCBwYXRoIHdpbGwgaGF2ZSB0aGUgc3RhbmRhcmQgJ1wnIHNlcGFyYXRvciAoZXZlbiBpZiB0aGUKIyBnaXZlbiBwYXRocyBoYWQgdGhlIGFsdGVybmF0aXZlICcvJyBzZXBhcmF0b3IpIGFuZCB3aWxsIGhhdmUgdGhlIGNhc2Ugb2YgdGhlCiMgZmlyc3QgcGF0aCBnaXZlbiBpbiB0aGUgc2VxdWVuY2UuIEFkZGl0aW9uYWxseSwgYW55IHRyYWlsaW5nIHNlcGFyYXRvciBpcwojIHN0cmlwcGVkIGZyb20gdGhlIHJldHVybmVkIHBhdGguCgpkZWYgY29tbW9ucGF0aChwYXRocyk6CiAgICAiIiJHaXZlbiBhIHNlcXVlbmNlIG9mIHBhdGggbmFtZXMsIHJldHVybnMgdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoLiIiIgoKICAgIGlmIG5vdCBwYXRoczoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb21tb25wYXRoKCkgYXJnIGlzIGFuIGVtcHR5IHNlcXVlbmNlJykKCiAgICBwYXRocyA9IHR1cGxlKG1hcChvcy5mc3BhdGgsIHBhdGhzKSkKICAgIGlmIGlzaW5zdGFuY2UocGF0aHNbMF0sIGJ5dGVzKToKICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgIGFsdHNlcCA9IGInLycKICAgICAgICBjdXJkaXIgPSBiJy4nCiAgICBlbHNlOgogICAgICAgIHNlcCA9ICdcXCcKICAgICAgICBhbHRzZXAgPSAnLycKICAgICAgICBjdXJkaXIgPSAnLicKCiAgICB0cnk6CiAgICAgICAgZHJpdmVzcGxpdHMgPSBbc3BsaXRkcml2ZShwLnJlcGxhY2UoYWx0c2VwLCBzZXApLmxvd2VyKCkpIGZvciBwIGluIHBhdGhzXQogICAgICAgIHNwbGl0X3BhdGhzID0gW3Auc3BsaXQoc2VwKSBmb3IgZCwgcCBpbiBkcml2ZXNwbGl0c10KCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpc2FicywgPSBzZXQocFs6MV0gPT0gc2VwIGZvciBkLCBwIGluIGRyaXZlc3BsaXRzKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCBtaXggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBhdGhzIikgZnJvbSBOb25lCgogICAgICAgICMgQ2hlY2sgdGhhdCBhbGwgZHJpdmUgbGV0dGVycyBvciBVTkMgcGF0aHMgbWF0Y2guIFRoZSBjaGVjayBpcyBtYWRlIG9ubHkKICAgICAgICAjIG5vdyBvdGhlcndpc2UgdHlwZSBlcnJvcnMgZm9yIG1peGluZyBzdHJpbmdzIGFuZCBieXRlcyB3b3VsZCBub3QgYmUKICAgICAgICAjIGNhdWdodC4KICAgICAgICBpZiBsZW4oc2V0KGQgZm9yIGQsIHAgaW4gZHJpdmVzcGxpdHMpKSAhPSAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQYXRocyBkb24ndCBoYXZlIHRoZSBzYW1lIGRyaXZlIikKCiAgICAgICAgZHJpdmUsIHBhdGggPSBzcGxpdGRyaXZlKHBhdGhzWzBdLnJlcGxhY2UoYWx0c2VwLCBzZXApKQogICAgICAgIGNvbW1vbiA9IHBhdGguc3BsaXQoc2VwKQogICAgICAgIGNvbW1vbiA9IFtjIGZvciBjIGluIGNvbW1vbiBpZiBjIGFuZCBjICE9IGN1cmRpcl0KCiAgICAgICAgc3BsaXRfcGF0aHMgPSBbW2MgZm9yIGMgaW4gcyBpZiBjIGFuZCBjICE9IGN1cmRpcl0gZm9yIHMgaW4gc3BsaXRfcGF0aHNdCiAgICAgICAgczEgPSBtaW4oc3BsaXRfcGF0aHMpCiAgICAgICAgczIgPSBtYXgoc3BsaXRfcGF0aHMpCiAgICAgICAgZm9yIGksIGMgaW4gZW51bWVyYXRlKHMxKToKICAgICAgICAgICAgaWYgYyAhPSBzMltpXToKICAgICAgICAgICAgICAgIGNvbW1vbiA9IGNvbW1vbls6aV0KICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY29tbW9uID0gY29tbW9uWzpsZW4oczEpXQoKICAgICAgICBwcmVmaXggPSBkcml2ZSArIHNlcCBpZiBpc2FicyBlbHNlIGRyaXZlCiAgICAgICAgcmV0dXJuIHByZWZpeCArIHNlcC5qb2luKGNvbW1vbikKICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygnY29tbW9ucGF0aCcsICpwYXRocykKICAgICAgICByYWlzZQoKCnRyeToKICAgICMgVGhlIGdlbmVyaWNwYXRoLmlzZGlyIGltcGxlbWVudGF0aW9uIHVzZXMgb3Muc3RhdCBhbmQgY2hlY2tzIHRoZSBtb2RlCiAgICAjIGF0dHJpYnV0ZSB0byB0ZWxsIHdoZXRoZXIgb3Igbm90IHRoZSBwYXRoIGlzIGEgZGlyZWN0b3J5LgogICAgIyBUaGlzIGlzIG92ZXJraWxsIG9uIFdpbmRvd3MgLSBqdXN0IHBhc3MgdGhlIHBhdGggdG8gR2V0RmlsZUF0dHJpYnV0ZXMKICAgICMgYW5kIGNoZWNrIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGVyZS4KICAgIGZyb20gbnQgaW1wb3J0IF9pc2RpciBhcyBpc2RpcgpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAjIFVzZSBnZW5lcmljcGF0aC5pc2RpciBhcyBpbXBvcnRlZCBhYm92ZS4KICAgIHBhc3MKUEsDBBQAAAAAAAIgo1YpvgMORwsAAEcLAAANAAAAbnR1cmwycGF0aC5weSIiIkNvbnZlcnQgYSBOVCBwYXRobmFtZSB0byBhIGZpbGUgVVJMIGFuZCB2aWNlIHZlcnNhLgoKVGhpcyBtb2R1bGUgb25seSBleGlzdHMgdG8gcHJvdmlkZSBPUy1zcGVjaWZpYyBjb2RlCmZvciB1cmxsaWIucmVxdWVzdHMsIHRodXMgZG8gbm90IHVzZSBkaXJlY3RseS4KIiIiCiMgVGVzdGluZyBpcyBkb25lIHRocm91Z2ggdGVzdF91cmxsaWIuCgpkZWYgdXJsMnBhdGhuYW1lKHVybCk6CiAgICAiIiJPUy1zcGVjaWZpYyBjb252ZXJzaW9uIGZyb20gYSByZWxhdGl2ZSBVUkwgb2YgdGhlICdmaWxlJyBzY2hlbWUKICAgIHRvIGEgZmlsZSBzeXN0ZW0gcGF0aDsgbm90IHJlY29tbWVuZGVkIGZvciBnZW5lcmFsIHVzZS4iIiIKICAgICMgZS5nLgogICAgIyAgIC8vL0N8L2Zvby9iYXIvc3BhbS5mb28KICAgICMgYW5kCiAgICAjICAgLy8vQzovZm9vL2Jhci9zcGFtLmZvbwogICAgIyBiZWNvbWUKICAgICMgICBDOlxmb29cYmFyXHNwYW0uZm9vCiAgICBpbXBvcnQgc3RyaW5nLCB1cmxsaWIucGFyc2UKICAgICMgV2luZG93cyBpdHNlbGYgdXNlcyAiOiIgZXZlbiBpbiBVUkxzLgogICAgdXJsID0gdXJsLnJlcGxhY2UoJzonLCAnfCcpCiAgICBpZiBub3QgJ3wnIGluIHVybDoKICAgICAgICAjIE5vIGRyaXZlIHNwZWNpZmllciwganVzdCBjb252ZXJ0IHNsYXNoZXMKICAgICAgICBpZiB1cmxbOjRdID09ICcvLy8vJzoKICAgICAgICAgICAgIyBwYXRoIGlzIHNvbWV0aGluZyBsaWtlIC8vLy9ob3N0L3BhdGgvb24vcmVtb3RlL2hvc3QKICAgICAgICAgICAgIyBjb252ZXJ0IHRoaXMgdG8gXFxob3N0XHBhdGhcb25ccmVtb3RlXGhvc3QKICAgICAgICAgICAgIyAobm90aWNlIGhhbHZpbmcgb2Ygc2xhc2hlcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHBhdGgpCiAgICAgICAgICAgIHVybCA9IHVybFsyOl0KICAgICAgICBjb21wb25lbnRzID0gdXJsLnNwbGl0KCcvJykKICAgICAgICAjIG1ha2Ugc3VyZSBub3QgdG8gY29udmVydCBxdW90ZWQgc2xhc2hlcyA6LSkKICAgICAgICByZXR1cm4gdXJsbGliLnBhcnNlLnVucXVvdGUoJ1xcJy5qb2luKGNvbXBvbmVudHMpKQogICAgY29tcCA9IHVybC5zcGxpdCgnfCcpCiAgICBpZiBsZW4oY29tcCkgIT0gMiBvciBjb21wWzBdWy0xXSBub3QgaW4gc3RyaW5nLmFzY2lpX2xldHRlcnM6CiAgICAgICAgZXJyb3IgPSAnQmFkIFVSTDogJyArIHVybAogICAgICAgIHJhaXNlIE9TRXJyb3IoZXJyb3IpCiAgICBkcml2ZSA9IGNvbXBbMF1bLTFdLnVwcGVyKCkKICAgIGNvbXBvbmVudHMgPSBjb21wWzFdLnNwbGl0KCcvJykKICAgIHBhdGggPSBkcml2ZSArICc6JwogICAgZm9yIGNvbXAgaW4gY29tcG9uZW50czoKICAgICAgICBpZiBjb21wOgogICAgICAgICAgICBwYXRoID0gcGF0aCArICdcXCcgKyB1cmxsaWIucGFyc2UudW5xdW90ZShjb21wKQogICAgIyBJc3N1ZSAjMTE0NzQgLSBoYW5kaW5nIHVybCBzdWNoIGFzIHxjL3wKICAgIGlmIHBhdGguZW5kc3dpdGgoJzonKSBhbmQgdXJsLmVuZHN3aXRoKCcvJyk6CiAgICAgICAgcGF0aCArPSAnXFwnCiAgICByZXR1cm4gcGF0aAoKZGVmIHBhdGhuYW1lMnVybChwKToKICAgICIiIk9TLXNwZWNpZmljIGNvbnZlcnNpb24gZnJvbSBhIGZpbGUgc3lzdGVtIHBhdGggdG8gYSByZWxhdGl2ZSBVUkwKICAgIG9mIHRoZSAnZmlsZScgc2NoZW1lOyBub3QgcmVjb21tZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiIiIgogICAgIyBlLmcuCiAgICAjICAgQzpcZm9vXGJhclxzcGFtLmZvbwogICAgIyBiZWNvbWVzCiAgICAjICAgLy8vQzovZm9vL2Jhci9zcGFtLmZvbwogICAgaW1wb3J0IHVybGxpYi5wYXJzZQogICAgIyBGaXJzdCwgY2xlYW4gdXAgc29tZSBzcGVjaWFsIGZvcm1zLiBXZSBhcmUgZ29pbmcgdG8gc2FjcmlmaWNlCiAgICAjIHRoZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFueXdheQogICAgaWYgcFs6NF0gPT0gJ1xcXFw/XFwnOgogICAgICAgIHAgPSBwWzQ6XQogICAgICAgIGlmIHBbOjRdLnVwcGVyKCkgPT0gJ1VOQ1xcJzoKICAgICAgICAgICAgcCA9ICdcXCcgKyBwWzQ6XQogICAgICAgIGVsaWYgcFsxOjJdICE9ICc6JzoKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignQmFkIHBhdGg6ICcgKyBwKQogICAgaWYgbm90ICc6JyBpbiBwOgogICAgICAgICMgTm8gZHJpdmUgc3BlY2lmaWVyLCBqdXN0IGNvbnZlcnQgc2xhc2hlcyBhbmQgcXVvdGUgdGhlIG5hbWUKICAgICAgICBpZiBwWzoyXSA9PSAnXFxcXCc6CiAgICAgICAgIyBwYXRoIGlzIHNvbWV0aGluZyBsaWtlIFxcaG9zdFxwYXRoXG9uXHJlbW90ZVxob3N0CiAgICAgICAgIyBjb252ZXJ0IHRoaXMgdG8gLy8vL2hvc3QvcGF0aC9vbi9yZW1vdGUvaG9zdAogICAgICAgICMgKG5vdGljZSBkb3VibGluZyBvZiBzbGFzaGVzIGF0IHRoZSBzdGFydCBvZiB0aGUgcGF0aCkKICAgICAgICAgICAgcCA9ICdcXFxcJyArIHAKICAgICAgICBjb21wb25lbnRzID0gcC5zcGxpdCgnXFwnKQogICAgICAgIHJldHVybiB1cmxsaWIucGFyc2UucXVvdGUoJy8nLmpvaW4oY29tcG9uZW50cykpCiAgICBjb21wID0gcC5zcGxpdCgnOicsIG1heHNwbGl0PTIpCiAgICBpZiBsZW4oY29tcCkgIT0gMiBvciBsZW4oY29tcFswXSkgPiAxOgogICAgICAgIGVycm9yID0gJ0JhZCBwYXRoOiAnICsgcAogICAgICAgIHJhaXNlIE9TRXJyb3IoZXJyb3IpCgogICAgZHJpdmUgPSB1cmxsaWIucGFyc2UucXVvdGUoY29tcFswXS51cHBlcigpKQogICAgY29tcG9uZW50cyA9IGNvbXBbMV0uc3BsaXQoJ1xcJykKICAgIHBhdGggPSAnLy8vJyArIGRyaXZlICsgJzonCiAgICBmb3IgY29tcCBpbiBjb21wb25lbnRzOgogICAgICAgIGlmIGNvbXA6CiAgICAgICAgICAgIHBhdGggPSBwYXRoICsgJy8nICsgdXJsbGliLnBhcnNlLnF1b3RlKGNvbXApCiAgICByZXR1cm4gcGF0aApQSwMEFAAAAAAAAiCjVr2qfgBsKAAAbCgAAAoAAABudW1iZXJzLnB5IyBDb3B5cmlnaHQgMjAwNyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCgoiIiJBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpIGZvciBudW1iZXJzLCBhY2NvcmRpbmcgdG8gUEVQIDMxNDEuCgpUT0RPOiBGaWxsIG91dCBtb3JlIGRldGFpbGVkIGRvY3VtZW50YXRpb24gb24gdGhlIG9wZXJhdG9ycy4iIiIKCmZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAoKX19hbGxfXyA9IFsiTnVtYmVyIiwgIkNvbXBsZXgiLCAiUmVhbCIsICJSYXRpb25hbCIsICJJbnRlZ3JhbCJdCgpjbGFzcyBOdW1iZXIobWV0YWNsYXNzPUFCQ01ldGEpOgogICAgIiIiQWxsIG51bWJlcnMgaW5oZXJpdCBmcm9tIHRoaXMgY2xhc3MuCgogICAgSWYgeW91IGp1c3Qgd2FudCB0byBjaGVjayBpZiBhbiBhcmd1bWVudCB4IGlzIGEgbnVtYmVyLCB3aXRob3V0CiAgICBjYXJpbmcgd2hhdCBraW5kLCB1c2UgaXNpbnN0YW5jZSh4LCBOdW1iZXIpLgogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgICMgQ29uY3JldGUgbnVtZXJpYyB0eXBlcyBtdXN0IHByb3ZpZGUgdGhlaXIgb3duIGhhc2ggaW1wbGVtZW50YXRpb24KICAgIF9faGFzaF9fID0gTm9uZQoKCiMjIE5vdGVzIG9uIERlY2ltYWwKIyMgLS0tLS0tLS0tLS0tLS0tLQojIyBEZWNpbWFsIGhhcyBhbGwgb2YgdGhlIG1ldGhvZHMgc3BlY2lmaWVkIGJ5IHRoZSBSZWFsIGFiYywgYnV0IGl0IHNob3VsZAojIyBub3QgYmUgcmVnaXN0ZXJlZCBhcyBhIFJlYWwgYmVjYXVzZSBkZWNpbWFscyBkbyBub3QgaW50ZXJvcGVyYXRlIHdpdGgKIyMgYmluYXJ5IGZsb2F0cyAoaS5lLiAgRGVjaW1hbCgnMy4xNCcpICsgMi43MTgyOCBpcyB1bmRlZmluZWQpLiAgQnV0LAojIyBhYnN0cmFjdCByZWFscyBhcmUgZXhwZWN0ZWQgdG8gaW50ZXJvcGVyYXRlIChpLmUuIFIxICsgUjIgc2hvdWxkIGJlCiMjIGV4cGVjdGVkIHRvIHdvcmsgaWYgUjEgYW5kIFIyIGFyZSBib3RoIFJlYWxzKS4KCmNsYXNzIENvbXBsZXgoTnVtYmVyKToKICAgICIiIkNvbXBsZXggZGVmaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHdvcmsgb24gdGhlIGJ1aWx0aW4gY29tcGxleCB0eXBlLgoKICAgIEluIHNob3J0LCB0aG9zZSBhcmU6IGEgY29udmVyc2lvbiB0byBjb21wbGV4LCAucmVhbCwgLmltYWcsICssIC0sCiAgICAqLCAvLCAqKiwgYWJzKCksIC5jb25qdWdhdGUsID09LCBhbmQgIT0uCgogICAgSWYgaXQgaXMgZ2l2ZW4gaGV0ZXJvZ2VuZW91cyBhcmd1bWVudHMsIGFuZCBkb2Vzbid0IGhhdmUgc3BlY2lhbAogICAga25vd2xlZGdlIGFib3V0IHRoZW0sIGl0IHNob3VsZCBmYWxsIGJhY2sgdG8gdGhlIGJ1aWx0aW4gY29tcGxleAogICAgdHlwZSBhcyBkZXNjcmliZWQgYmVsb3cuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fY29tcGxleF9fKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGJ1aWx0aW4gY29tcGxleCBpbnN0YW5jZS4gQ2FsbGVkIGZvciBjb21wbGV4KHNlbGYpLiIiIgoKICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKICAgICAgICAiIiJUcnVlIGlmIHNlbGYgIT0gMC4gQ2FsbGVkIGZvciBib29sKHNlbGYpLiIiIgogICAgICAgIHJldHVybiBzZWxmICE9IDAKCiAgICBAcHJvcGVydHkKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHJlYWwoc2VsZik6CiAgICAgICAgIiIiUmV0cmlldmUgdGhlIHJlYWwgY29tcG9uZW50IG9mIHRoaXMgbnVtYmVyLgoKICAgICAgICBUaGlzIHNob3VsZCBzdWJjbGFzcyBSZWFsLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAcHJvcGVydHkKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIGltYWcoc2VsZik6CiAgICAgICAgIiIiUmV0cmlldmUgdGhlIGltYWdpbmFyeSBjb21wb25lbnQgb2YgdGhpcyBudW1iZXIuCgogICAgICAgIFRoaXMgc2hvdWxkIHN1YmNsYXNzIFJlYWwuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiInNlbGYgKyBvdGhlciIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX3JhZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIib3RoZXIgKyBzZWxmIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fbmVnX18oc2VsZik6CiAgICAgICAgIiIiLXNlbGYiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19wb3NfXyhzZWxmKToKICAgICAgICAiIiIrc2VsZiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIic2VsZiAtIG90aGVyIiIiCiAgICAgICAgcmV0dXJuIHNlbGYgKyAtb3RoZXIKCiAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiIm90aGVyIC0gc2VsZiIiIgogICAgICAgIHJldHVybiAtc2VsZiArIG90aGVyCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19tdWxfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIic2VsZiAqIG90aGVyIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fcm11bF9fKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJvdGhlciAqIHNlbGYiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiInNlbGYgLyBvdGhlcjogU2hvdWxkIHByb21vdGUgdG8gZmxvYXQgd2hlbiBuZWNlc3NhcnkuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIib3RoZXIgLyBzZWxmIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fcG93X18oc2VsZiwgZXhwb25lbnQpOgogICAgICAgICIiInNlbGYqKmV4cG9uZW50OyBzaG91bGQgcHJvbW90ZSB0byBmbG9hdCBvciBjb21wbGV4IHdoZW4gbmVjZXNzYXJ5LiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX3Jwb3dfXyhzZWxmLCBiYXNlKToKICAgICAgICAiIiJiYXNlICoqIHNlbGYiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19hYnNfXyhzZWxmKToKICAgICAgICAiIiJSZXR1cm5zIHRoZSBSZWFsIGRpc3RhbmNlIGZyb20gMC4gQ2FsbGVkIGZvciBhYnMoc2VsZikuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIGNvbmp1Z2F0ZShzZWxmKToKICAgICAgICAiIiIoeCt5KmkpLmNvbmp1Z2F0ZSgpIHJldHVybnMgKHgteSppKS4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJzZWxmID09IG90aGVyIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKQ29tcGxleC5yZWdpc3Rlcihjb21wbGV4KQoKCmNsYXNzIFJlYWwoQ29tcGxleCk6CiAgICAiIiJUbyBDb21wbGV4LCBSZWFsIGFkZHMgdGhlIG9wZXJhdGlvbnMgdGhhdCB3b3JrIG9uIHJlYWwgbnVtYmVycy4KCiAgICBJbiBzaG9ydCwgdGhvc2UgYXJlOiBhIGNvbnZlcnNpb24gdG8gZmxvYXQsIHRydW5jKCksIGRpdm1vZCwKICAgICUsIDwsIDw9LCA+LCBhbmQgPj0uCgogICAgUmVhbCBhbHNvIHByb3ZpZGVzIGRlZmF1bHRzIGZvciB0aGUgZGVyaXZlZCBvcGVyYXRpb25zLgogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CiAgICAgICAgIiIiQW55IFJlYWwgY2FuIGJlIGNvbnZlcnRlZCB0byBhIG5hdGl2ZSBmbG9hdCBvYmplY3QuCgogICAgICAgIENhbGxlZCBmb3IgZmxvYXQoc2VsZikuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fdHJ1bmNfXyhzZWxmKToKICAgICAgICAiIiJ0cnVuYyhzZWxmKTogVHJ1bmNhdGVzIHNlbGYgdG8gYW4gSW50ZWdyYWwuCgogICAgICAgIFJldHVybnMgYW4gSW50ZWdyYWwgaSBzdWNoIHRoYXQ6CiAgICAgICAgICAqIGk+MCBpZmYgc2VsZj4wOwogICAgICAgICAgKiBhYnMoaSkgPD0gYWJzKHNlbGYpOwogICAgICAgICAgKiBmb3IgYW55IEludGVncmFsIGogc2F0aXNmeWluZyB0aGUgZmlyc3QgdHdvIGNvbmRpdGlvbnMsCiAgICAgICAgICAgIGFicyhpKSA+PSBhYnMoaikgW2kuZS4gaSBoYXMgIm1heGltYWwiIGFicyBhbW9uZyB0aG9zZV0uCiAgICAgICAgaS5lLiAidHJ1bmNhdGUgdG93YXJkcyAwIi4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19mbG9vcl9fKHNlbGYpOgogICAgICAgICIiIkZpbmRzIHRoZSBncmVhdGVzdCBJbnRlZ3JhbCA8PSBzZWxmLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2NlaWxfXyhzZWxmKToKICAgICAgICAiIiJGaW5kcyB0aGUgbGVhc3QgSW50ZWdyYWwgPj0gc2VsZi4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19yb3VuZF9fKHNlbGYsIG5kaWdpdHM9Tm9uZSk6CiAgICAgICAgIiIiUm91bmRzIHNlbGYgdG8gbmRpZ2l0cyBkZWNpbWFsIHBsYWNlcywgZGVmYXVsdGluZyB0byAwLgoKICAgICAgICBJZiBuZGlnaXRzIGlzIG9taXR0ZWQgb3IgTm9uZSwgcmV0dXJucyBhbiBJbnRlZ3JhbCwgb3RoZXJ3aXNlCiAgICAgICAgcmV0dXJucyBhIFJlYWwuIFJvdW5kcyBoYWxmIHRvd2FyZCBldmVuLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgX19kaXZtb2RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIiZGl2bW9kKHNlbGYsIG90aGVyKTogVGhlIHBhaXIgKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlcikuCgogICAgICAgIFNvbWV0aW1lcyB0aGlzIGNhbiBiZSBjb21wdXRlZCBmYXN0ZXIgdGhhbiB0aGUgcGFpciBvZgogICAgICAgIG9wZXJhdGlvbnMuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIChzZWxmIC8vIG90aGVyLCBzZWxmICUgb3RoZXIpCgogICAgZGVmIF9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJkaXZtb2Qob3RoZXIsIHNlbGYpOiBUaGUgcGFpciAoc2VsZiAvLyBvdGhlciwgc2VsZiAlIG90aGVyKS4KCiAgICAgICAgU29tZXRpbWVzIHRoaXMgY2FuIGJlIGNvbXB1dGVkIGZhc3RlciB0aGFuIHRoZSBwYWlyIG9mCiAgICAgICAgb3BlcmF0aW9ucy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gKG90aGVyIC8vIHNlbGYsIG90aGVyICUgc2VsZikKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiInNlbGYgLy8gb3RoZXI6IFRoZSBmbG9vcigpIG9mIHNlbGYvb3RoZXIuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiIm90aGVyIC8vIHNlbGY6IFRoZSBmbG9vcigpIG9mIG90aGVyL3NlbGYuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fbW9kX18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiInNlbGYgJSBvdGhlciIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX3Jtb2RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIib3RoZXIgJSBzZWxmIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIic2VsZiA8IG90aGVyCgogICAgICAgIDwgb24gUmVhbHMgZGVmaW5lcyBhIHRvdGFsIG9yZGVyaW5nLCBleGNlcHQgcGVyaGFwcyBmb3IgTmFOLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiInNlbGYgPD0gb3RoZXIiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgIyBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgQ29tcGxleCBhYnN0cmFjdCBtZXRob2RzLgogICAgZGVmIF9fY29tcGxleF9fKHNlbGYpOgogICAgICAgICIiImNvbXBsZXgoc2VsZikgPT0gY29tcGxleChmbG9hdChzZWxmKSwgMCkiIiIKICAgICAgICByZXR1cm4gY29tcGxleChmbG9hdChzZWxmKSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiByZWFsKHNlbGYpOgogICAgICAgICIiIlJlYWwgbnVtYmVycyBhcmUgdGhlaXIgcmVhbCBjb21wb25lbnQuIiIiCiAgICAgICAgcmV0dXJuICtzZWxmCgogICAgQHByb3BlcnR5CiAgICBkZWYgaW1hZyhzZWxmKToKICAgICAgICAiIiJSZWFsIG51bWJlcnMgaGF2ZSBubyBpbWFnaW5hcnkgY29tcG9uZW50LiIiIgogICAgICAgIHJldHVybiAwCgogICAgZGVmIGNvbmp1Z2F0ZShzZWxmKToKICAgICAgICAiIiJDb25qdWdhdGUgaXMgYSBuby1vcCBmb3IgUmVhbHMuIiIiCiAgICAgICAgcmV0dXJuICtzZWxmCgpSZWFsLnJlZ2lzdGVyKGZsb2F0KQoKCmNsYXNzIFJhdGlvbmFsKFJlYWwpOgogICAgIiIiLm51bWVyYXRvciBhbmQgLmRlbm9taW5hdG9yIHNob3VsZCBiZSBpbiBsb3dlc3QgdGVybXMuIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBAcHJvcGVydHkKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIG51bWVyYXRvcihzZWxmKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQHByb3BlcnR5CiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBkZW5vbWluYXRvcihzZWxmKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgIyBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBSZWFsJ3MgY29udmVyc2lvbiB0byBmbG9hdC4KICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CiAgICAgICAgIiIiZmxvYXQoc2VsZikgPSBzZWxmLm51bWVyYXRvciAvIHNlbGYuZGVub21pbmF0b3IKCiAgICAgICAgSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGNvbnZlcnNpb24gdXNlIHRoZSBpbnRlZ2VyJ3MgInRydWUiCiAgICAgICAgZGl2aXNpb24gcmF0aGVyIHRoYW4gY2FzdGluZyBvbmUgc2lkZSB0byBmbG9hdCBiZWZvcmUgZGl2aWRpbmcKICAgICAgICBzbyB0aGF0IHJhdGlvcyBvZiBodWdlIGludGVnZXJzIGNvbnZlcnQgd2l0aG91dCBvdmVyZmxvd2luZy4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGludChzZWxmLm51bWVyYXRvcikgLyBpbnQoc2VsZi5kZW5vbWluYXRvcikKCgpjbGFzcyBJbnRlZ3JhbChSYXRpb25hbCk6CiAgICAiIiJJbnRlZ3JhbCBhZGRzIG1ldGhvZHMgdGhhdCB3b3JrIG9uIGludGVncmFsIG51bWJlcnMuCgogICAgSW4gc2hvcnQsIHRoZXNlIGFyZSBjb252ZXJzaW9uIHRvIGludCwgcG93IHdpdGggbW9kdWx1cywgYW5kIHRoZQogICAgYml0LXN0cmluZyBvcGVyYXRpb25zLgogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2ludF9fKHNlbGYpOgogICAgICAgICIiImludChzZWxmKSIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgX19pbmRleF9fKHNlbGYpOgogICAgICAgICIiIkNhbGxlZCB3aGVuZXZlciBhbiBpbmRleCBpcyBuZWVkZWQsIHN1Y2ggYXMgaW4gc2xpY2luZyIiIgogICAgICAgIHJldHVybiBpbnQoc2VsZikKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX3Bvd19fKHNlbGYsIGV4cG9uZW50LCBtb2R1bHVzPU5vbmUpOgogICAgICAgICIiInNlbGYgKiogZXhwb25lbnQgJSBtb2R1bHVzLCBidXQgbWF5YmUgZmFzdGVyLgoKICAgICAgICBBY2NlcHQgdGhlIG1vZHVsdXMgYXJndW1lbnQgaWYgeW91IHdhbnQgdG8gc3VwcG9ydCB0aGUKICAgICAgICAzLWFyZ3VtZW50IHZlcnNpb24gb2YgcG93KCkuIFJhaXNlIGEgVHlwZUVycm9yIGlmIGV4cG9uZW50IDwgMAogICAgICAgIG9yIGFueSBhcmd1bWVudCBpc24ndCBJbnRlZ3JhbC4gT3RoZXJ3aXNlLCBqdXN0IGltcGxlbWVudCB0aGUKICAgICAgICAyLWFyZ3VtZW50IHZlcnNpb24gZGVzY3JpYmVkIGluIENvbXBsZXguCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiInNlbGYgPDwgb3RoZXIiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiIm90aGVyIDw8IHNlbGYiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19yc2hpZnRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIic2VsZiA+PiBvdGhlciIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIib3RoZXIgPj4gc2VsZiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJzZWxmICYgb3RoZXIiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19yYW5kX18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiIm90aGVyICYgc2VsZiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJzZWxmIF4gb3RoZXIiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19yeG9yX18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiIm90aGVyIF4gc2VsZiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX29yX18oc2VsZiwgb3RoZXIpOgogICAgICAgICIiInNlbGYgfCBvdGhlciIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX3Jvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICAiIiJvdGhlciB8IHNlbGYiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19pbnZlcnRfXyhzZWxmKToKICAgICAgICAiIiJ+c2VsZiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICAjIENvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiBSYXRpb25hbCBhbmQgUmVhbCBhYnN0cmFjdCBtZXRob2RzLgogICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKICAgICAgICAiIiJmbG9hdChzZWxmKSA9PSBmbG9hdChpbnQoc2VsZikpIiIiCiAgICAgICAgcmV0dXJuIGZsb2F0KGludChzZWxmKSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBudW1lcmF0b3Ioc2VsZik6CiAgICAgICAgIiIiSW50ZWdlcnMgYXJlIHRoZWlyIG93biBudW1lcmF0b3JzLiIiIgogICAgICAgIHJldHVybiArc2VsZgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRlbm9taW5hdG9yKHNlbGYpOgogICAgICAgICIiIkludGVnZXJzIGhhdmUgYSBkZW5vbWluYXRvciBvZiAxLiIiIgogICAgICAgIHJldHVybiAxCgpJbnRlZ3JhbC5yZWdpc3RlcihpbnQpClBLAwQUAAAAAAACIKNW8RIMvc8oAADPKAAACQAAAG9wY29kZS5weQoiIiIKb3Bjb2RlIG1vZHVsZSAtIHBvdGVudGlhbGx5IHNoYXJlZCBiZXR3ZWVuIGRpcyBhbmQgb3RoZXIgbW9kdWxlcyB3aGljaApvcGVyYXRlIG9uIGJ5dGVjb2RlcyAoZS5nLiBwZWVwaG9sZSBvcHRpbWl6ZXJzKS4KIiIiCgpfX2FsbF9fID0gWyJjbXBfb3AiLCAiaGFzY29uc3QiLCAiaGFzbmFtZSIsICJoYXNqcmVsIiwgImhhc2phYnMiLAogICAgICAgICAgICJoYXNsb2NhbCIsICJoYXNjb21wYXJlIiwgImhhc2ZyZWUiLCAib3BuYW1lIiwgIm9wbWFwIiwKICAgICAgICAgICAiSEFWRV9BUkdVTUVOVCIsICJFWFRFTkRFRF9BUkciLCAiaGFzbmFyZ3MiXQoKIyBJdCdzIGEgY2hpY2tlbi1hbmQtZWdnIEknbSBhZnJhaWQ6CiMgV2UncmUgaW1wb3J0ZWQgYmVmb3JlIF9vcGNvZGUncyBtYWRlLgojIFdpdGggZXhjZXB0aW9uIHVuaGVlZGVkCiMgKHN0YWNrX2VmZmVjdCBpcyBub3QgbmVlZGVkKQojIEJvdGggb3VyIGNoaWNrZW5zIGFuZCBlZ2dzIGFyZSBhbGxheWVkLgojICAgICAtLUxhcnJ5IEhhc3RpbmdzLCAyMDEzLzExLzIzCgp0cnk6CiAgICBmcm9tIF9vcGNvZGUgaW1wb3J0IHN0YWNrX2VmZmVjdAogICAgX19hbGxfXy5hcHBlbmQoJ3N0YWNrX2VmZmVjdCcpCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKCmNtcF9vcCA9ICgnPCcsICc8PScsICc9PScsICchPScsICc+JywgJz49JykKCmhhc2NvbnN0ID0gW10KaGFzbmFtZSA9IFtdCmhhc2pyZWwgPSBbXQpoYXNqYWJzID0gW10KaGFzbG9jYWwgPSBbXQpoYXNjb21wYXJlID0gW10KaGFzZnJlZSA9IFtdCmhhc25hcmdzID0gW10gIyB1bnVzZWQKCm9wbWFwID0ge30Kb3BuYW1lID0gWyc8JXI+JyAlIChvcCwpIGZvciBvcCBpbiByYW5nZSgyNTYpXQoKZGVmIGRlZl9vcChuYW1lLCBvcCk6CiAgICBvcG5hbWVbb3BdID0gbmFtZQogICAgb3BtYXBbbmFtZV0gPSBvcAoKZGVmIG5hbWVfb3AobmFtZSwgb3ApOgogICAgZGVmX29wKG5hbWUsIG9wKQogICAgaGFzbmFtZS5hcHBlbmQob3ApCgpkZWYganJlbF9vcChuYW1lLCBvcCk6CiAgICBkZWZfb3AobmFtZSwgb3ApCiAgICBoYXNqcmVsLmFwcGVuZChvcCkKCmRlZiBqYWJzX29wKG5hbWUsIG9wKToKICAgIGRlZl9vcChuYW1lLCBvcCkKICAgIGhhc2phYnMuYXBwZW5kKG9wKQoKIyBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlCiMgQmxhbmsgbGluZXMgY29ycmVzcG9uZCB0byBhdmFpbGFibGUgb3Bjb2RlcwoKZGVmX29wKCdDQUNIRScsIDApCmRlZl9vcCgnUE9QX1RPUCcsIDEpCmRlZl9vcCgnUFVTSF9OVUxMJywgMikKCmRlZl9vcCgnTk9QJywgOSkKZGVmX29wKCdVTkFSWV9QT1NJVElWRScsIDEwKQpkZWZfb3AoJ1VOQVJZX05FR0FUSVZFJywgMTEpCmRlZl9vcCgnVU5BUllfTk9UJywgMTIpCgpkZWZfb3AoJ1VOQVJZX0lOVkVSVCcsIDE1KQoKZGVmX29wKCdCSU5BUllfU1VCU0NSJywgMjUpCgpkZWZfb3AoJ0dFVF9MRU4nLCAzMCkKZGVmX29wKCdNQVRDSF9NQVBQSU5HJywgMzEpCmRlZl9vcCgnTUFUQ0hfU0VRVUVOQ0UnLCAzMikKZGVmX29wKCdNQVRDSF9LRVlTJywgMzMpCgpkZWZfb3AoJ1BVU0hfRVhDX0lORk8nLCAzNSkKZGVmX29wKCdDSEVDS19FWENfTUFUQ0gnLCAzNikKZGVmX29wKCdDSEVDS19FR19NQVRDSCcsIDM3KQoKZGVmX29wKCdXSVRIX0VYQ0VQVF9TVEFSVCcsIDQ5KQpkZWZfb3AoJ0dFVF9BSVRFUicsIDUwKQpkZWZfb3AoJ0dFVF9BTkVYVCcsIDUxKQpkZWZfb3AoJ0JFRk9SRV9BU1lOQ19XSVRIJywgNTIpCmRlZl9vcCgnQkVGT1JFX1dJVEgnLCA1MykKZGVmX29wKCdFTkRfQVNZTkNfRk9SJywgNTQpCgpkZWZfb3AoJ1NUT1JFX1NVQlNDUicsIDYwKQpkZWZfb3AoJ0RFTEVURV9TVUJTQ1InLCA2MSkKCmRlZl9vcCgnR0VUX0lURVInLCA2OCkKZGVmX29wKCdHRVRfWUlFTERfRlJPTV9JVEVSJywgNjkpCmRlZl9vcCgnUFJJTlRfRVhQUicsIDcwKQpkZWZfb3AoJ0xPQURfQlVJTERfQ0xBU1MnLCA3MSkKCmRlZl9vcCgnTE9BRF9BU1NFUlRJT05fRVJST1InLCA3NCkKZGVmX29wKCdSRVRVUk5fR0VORVJBVE9SJywgNzUpCgpkZWZfb3AoJ0xJU1RfVE9fVFVQTEUnLCA4MikKZGVmX29wKCdSRVRVUk5fVkFMVUUnLCA4MykKZGVmX29wKCdJTVBPUlRfU1RBUicsIDg0KQpkZWZfb3AoJ1NFVFVQX0FOTk9UQVRJT05TJywgODUpCmRlZl9vcCgnWUlFTERfVkFMVUUnLCA4NikKZGVmX29wKCdBU1lOQ19HRU5fV1JBUCcsIDg3KQpkZWZfb3AoJ1BSRVBfUkVSQUlTRV9TVEFSJywgODgpCmRlZl9vcCgnUE9QX0VYQ0VQVCcsIDg5KQoKSEFWRV9BUkdVTUVOVCA9IDkwICAgICAgICAgICAgICAjIE9wY29kZXMgZnJvbSBoZXJlIGhhdmUgYW4gYXJndW1lbnQ6CgpuYW1lX29wKCdTVE9SRV9OQU1FJywgOTApICAgICAgICMgSW5kZXggaW4gbmFtZSBsaXN0Cm5hbWVfb3AoJ0RFTEVURV9OQU1FJywgOTEpICAgICAgIyAiIgpkZWZfb3AoJ1VOUEFDS19TRVFVRU5DRScsIDkyKSAgICMgTnVtYmVyIG9mIHR1cGxlIGl0ZW1zCmpyZWxfb3AoJ0ZPUl9JVEVSJywgOTMpCmRlZl9vcCgnVU5QQUNLX0VYJywgOTQpCm5hbWVfb3AoJ1NUT1JFX0FUVFInLCA5NSkgICAgICAgIyBJbmRleCBpbiBuYW1lIGxpc3QKbmFtZV9vcCgnREVMRVRFX0FUVFInLCA5NikgICAgICAjICIiCm5hbWVfb3AoJ1NUT1JFX0dMT0JBTCcsIDk3KSAgICAgIyAiIgpuYW1lX29wKCdERUxFVEVfR0xPQkFMJywgOTgpICAgICMgIiIKZGVmX29wKCdTV0FQJywgOTkpCmRlZl9vcCgnTE9BRF9DT05TVCcsIDEwMCkgICAgICAgIyBJbmRleCBpbiBjb25zdCBsaXN0Cmhhc2NvbnN0LmFwcGVuZCgxMDApCm5hbWVfb3AoJ0xPQURfTkFNRScsIDEwMSkgICAgICAgIyBJbmRleCBpbiBuYW1lIGxpc3QKZGVmX29wKCdCVUlMRF9UVVBMRScsIDEwMikgICAgICAjIE51bWJlciBvZiB0dXBsZSBpdGVtcwpkZWZfb3AoJ0JVSUxEX0xJU1QnLCAxMDMpICAgICAgICMgTnVtYmVyIG9mIGxpc3QgaXRlbXMKZGVmX29wKCdCVUlMRF9TRVQnLCAxMDQpICAgICAgICAjIE51bWJlciBvZiBzZXQgaXRlbXMKZGVmX29wKCdCVUlMRF9NQVAnLCAxMDUpICAgICAgICAjIE51bWJlciBvZiBkaWN0IGVudHJpZXMKbmFtZV9vcCgnTE9BRF9BVFRSJywgMTA2KSAgICAgICAjIEluZGV4IGluIG5hbWUgbGlzdApkZWZfb3AoJ0NPTVBBUkVfT1AnLCAxMDcpICAgICAgICMgQ29tcGFyaXNvbiBvcGVyYXRvcgpoYXNjb21wYXJlLmFwcGVuZCgxMDcpCm5hbWVfb3AoJ0lNUE9SVF9OQU1FJywgMTA4KSAgICAgIyBJbmRleCBpbiBuYW1lIGxpc3QKbmFtZV9vcCgnSU1QT1JUX0ZST00nLCAxMDkpICAgICAjIEluZGV4IGluIG5hbWUgbGlzdApqcmVsX29wKCdKVU1QX0ZPUldBUkQnLCAxMTApICAgICMgTnVtYmVyIG9mIHdvcmRzIHRvIHNraXAKanJlbF9vcCgnSlVNUF9JRl9GQUxTRV9PUl9QT1AnLCAxMTEpICMgTnVtYmVyIG9mIHdvcmRzIHRvIHNraXAKanJlbF9vcCgnSlVNUF9JRl9UUlVFX09SX1BPUCcsIDExMikgICMgIiIKanJlbF9vcCgnUE9QX0pVTVBfRk9SV0FSRF9JRl9GQUxTRScsIDExNCkKanJlbF9vcCgnUE9QX0pVTVBfRk9SV0FSRF9JRl9UUlVFJywgMTE1KQpuYW1lX29wKCdMT0FEX0dMT0JBTCcsIDExNikgICAgICMgSW5kZXggaW4gbmFtZSBsaXN0CmRlZl9vcCgnSVNfT1AnLCAxMTcpCmRlZl9vcCgnQ09OVEFJTlNfT1AnLCAxMTgpCmRlZl9vcCgnUkVSQUlTRScsIDExOSkKZGVmX29wKCdDT1BZJywgMTIwKQpkZWZfb3AoJ0JJTkFSWV9PUCcsIDEyMikKanJlbF9vcCgnU0VORCcsIDEyMykgIyBOdW1iZXIgb2YgYnl0ZXMgdG8gc2tpcApkZWZfb3AoJ0xPQURfRkFTVCcsIDEyNCkgICAgICAgICMgTG9jYWwgdmFyaWFibGUgbnVtYmVyCmhhc2xvY2FsLmFwcGVuZCgxMjQpCmRlZl9vcCgnU1RPUkVfRkFTVCcsIDEyNSkgICAgICAgIyBMb2NhbCB2YXJpYWJsZSBudW1iZXIKaGFzbG9jYWwuYXBwZW5kKDEyNSkKZGVmX29wKCdERUxFVEVfRkFTVCcsIDEyNikgICAgICAjIExvY2FsIHZhcmlhYmxlIG51bWJlcgpoYXNsb2NhbC5hcHBlbmQoMTI2KQpqcmVsX29wKCdQT1BfSlVNUF9GT1JXQVJEX0lGX05PVF9OT05FJywgMTI4KQpqcmVsX29wKCdQT1BfSlVNUF9GT1JXQVJEX0lGX05PTkUnLCAxMjkpCmRlZl9vcCgnUkFJU0VfVkFSQVJHUycsIDEzMCkgICAgIyBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyLCBvciAzKQpkZWZfb3AoJ0dFVF9BV0FJVEFCTEUnLCAxMzEpCmRlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBGbGFncwpkZWZfb3AoJ0JVSUxEX1NMSUNFJywgMTMzKSAgICAgICMgTnVtYmVyIG9mIGl0ZW1zCmpyZWxfb3AoJ0pVTVBfQkFDS1dBUkRfTk9fSU5URVJSVVBUJywgMTM0KSAjIE51bWJlciBvZiB3b3JkcyB0byBza2lwIChiYWNrd2FyZHMpCmRlZl9vcCgnTUFLRV9DRUxMJywgMTM1KQpoYXNmcmVlLmFwcGVuZCgxMzUpCmRlZl9vcCgnTE9BRF9DTE9TVVJFJywgMTM2KQpoYXNmcmVlLmFwcGVuZCgxMzYpCmRlZl9vcCgnTE9BRF9ERVJFRicsIDEzNykKaGFzZnJlZS5hcHBlbmQoMTM3KQpkZWZfb3AoJ1NUT1JFX0RFUkVGJywgMTM4KQpoYXNmcmVlLmFwcGVuZCgxMzgpCmRlZl9vcCgnREVMRVRFX0RFUkVGJywgMTM5KQpoYXNmcmVlLmFwcGVuZCgxMzkpCmpyZWxfb3AoJ0pVTVBfQkFDS1dBUkQnLCAxNDApICAgICMgTnVtYmVyIG9mIHdvcmRzIHRvIHNraXAgKGJhY2t3YXJkcykKCmRlZl9vcCgnQ0FMTF9GVU5DVElPTl9FWCcsIDE0MikgICMgRmxhZ3MKCmRlZl9vcCgnRVhURU5ERURfQVJHJywgMTQ0KQpFWFRFTkRFRF9BUkcgPSAxNDQKZGVmX29wKCdMSVNUX0FQUEVORCcsIDE0NSkKZGVmX29wKCdTRVRfQUREJywgMTQ2KQpkZWZfb3AoJ01BUF9BREQnLCAxNDcpCmRlZl9vcCgnTE9BRF9DTEFTU0RFUkVGJywgMTQ4KQpoYXNmcmVlLmFwcGVuZCgxNDgpCmRlZl9vcCgnQ09QWV9GUkVFX1ZBUlMnLCAxNDkpCgpkZWZfb3AoJ1JFU1VNRScsIDE1MSkgICAjIFRoaXMgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBkZWVwZnJlZXplLnB5CmRlZl9vcCgnTUFUQ0hfQ0xBU1MnLCAxNTIpCgpkZWZfb3AoJ0ZPUk1BVF9WQUxVRScsIDE1NSkKZGVmX29wKCdCVUlMRF9DT05TVF9LRVlfTUFQJywgMTU2KQpkZWZfb3AoJ0JVSUxEX1NUUklORycsIDE1NykKCm5hbWVfb3AoJ0xPQURfTUVUSE9EJywgMTYwKQoKZGVmX29wKCdMSVNUX0VYVEVORCcsIDE2MikKZGVmX29wKCdTRVRfVVBEQVRFJywgMTYzKQpkZWZfb3AoJ0RJQ1RfTUVSR0UnLCAxNjQpCmRlZl9vcCgnRElDVF9VUERBVEUnLCAxNjUpCmRlZl9vcCgnUFJFQ0FMTCcsIDE2NikKCmRlZl9vcCgnQ0FMTCcsIDE3MSkKZGVmX29wKCdLV19OQU1FUycsIDE3MikKaGFzY29uc3QuYXBwZW5kKDE3MikKCmpyZWxfb3AoJ1BPUF9KVU1QX0JBQ0tXQVJEX0lGX05PVF9OT05FJywgMTczKQpqcmVsX29wKCdQT1BfSlVNUF9CQUNLV0FSRF9JRl9OT05FJywgMTc0KQpqcmVsX29wKCdQT1BfSlVNUF9CQUNLV0FSRF9JRl9GQUxTRScsIDE3NSkKanJlbF9vcCgnUE9QX0pVTVBfQkFDS1dBUkRfSUZfVFJVRScsIDE3NikKCgpkZWwgZGVmX29wLCBuYW1lX29wLCBqcmVsX29wLCBqYWJzX29wCgpfbmJfb3BzID0gWwogICAgKCJOQl9BREQiLCAiKyIpLAogICAgKCJOQl9BTkQiLCAiJiIpLAogICAgKCJOQl9GTE9PUl9ESVZJREUiLCAiLy8iKSwKICAgICgiTkJfTFNISUZUIiwgIjw8IiksCiAgICAoIk5CX01BVFJJWF9NVUxUSVBMWSIsICJAIiksCiAgICAoIk5CX01VTFRJUExZIiwgIioiKSwKICAgICgiTkJfUkVNQUlOREVSIiwgIiUiKSwKICAgICgiTkJfT1IiLCAifCIpLAogICAgKCJOQl9QT1dFUiIsICIqKiIpLAogICAgKCJOQl9SU0hJRlQiLCAiPj4iKSwKICAgICgiTkJfU1VCVFJBQ1QiLCAiLSIpLAogICAgKCJOQl9UUlVFX0RJVklERSIsICIvIiksCiAgICAoIk5CX1hPUiIsICJeIiksCiAgICAoIk5CX0lOUExBQ0VfQUREIiwgIis9IiksCiAgICAoIk5CX0lOUExBQ0VfQU5EIiwgIiY9IiksCiAgICAoIk5CX0lOUExBQ0VfRkxPT1JfRElWSURFIiwgIi8vPSIpLAogICAgKCJOQl9JTlBMQUNFX0xTSElGVCIsICI8PD0iKSwKICAgICgiTkJfSU5QTEFDRV9NQVRSSVhfTVVMVElQTFkiLCAiQD0iKSwKICAgICgiTkJfSU5QTEFDRV9NVUxUSVBMWSIsICIqPSIpLAogICAgKCJOQl9JTlBMQUNFX1JFTUFJTkRFUiIsICIlPSIpLAogICAgKCJOQl9JTlBMQUNFX09SIiwgInw9IiksCiAgICAoIk5CX0lOUExBQ0VfUE9XRVIiLCAiKio9IiksCiAgICAoIk5CX0lOUExBQ0VfUlNISUZUIiwgIj4+PSIpLAogICAgKCJOQl9JTlBMQUNFX1NVQlRSQUNUIiwgIi09IiksCiAgICAoIk5CX0lOUExBQ0VfVFJVRV9ESVZJREUiLCAiLz0iKSwKICAgICgiTkJfSU5QTEFDRV9YT1IiLCAiXj0iKSwKXQoKX3NwZWNpYWxpemF0aW9ucyA9IHsKICAgICJCSU5BUllfT1AiOiBbCiAgICAgICAgIkJJTkFSWV9PUF9BREFQVElWRSIsCiAgICAgICAgIkJJTkFSWV9PUF9BRERfRkxPQVQiLAogICAgICAgICJCSU5BUllfT1BfQUREX0lOVCIsCiAgICAgICAgIkJJTkFSWV9PUF9BRERfVU5JQ09ERSIsCiAgICAgICAgIkJJTkFSWV9PUF9JTlBMQUNFX0FERF9VTklDT0RFIiwKICAgICAgICAiQklOQVJZX09QX01VTFRJUExZX0ZMT0FUIiwKICAgICAgICAiQklOQVJZX09QX01VTFRJUExZX0lOVCIsCiAgICAgICAgIkJJTkFSWV9PUF9TVUJUUkFDVF9GTE9BVCIsCiAgICAgICAgIkJJTkFSWV9PUF9TVUJUUkFDVF9JTlQiLAogICAgXSwKICAgICJCSU5BUllfU1VCU0NSIjogWwogICAgICAgICJCSU5BUllfU1VCU0NSX0FEQVBUSVZFIiwKICAgICAgICAiQklOQVJZX1NVQlNDUl9ESUNUIiwKICAgICAgICAiQklOQVJZX1NVQlNDUl9HRVRJVEVNIiwKICAgICAgICAiQklOQVJZX1NVQlNDUl9MSVNUX0lOVCIsCiAgICAgICAgIkJJTkFSWV9TVUJTQ1JfVFVQTEVfSU5UIiwKICAgIF0sCiAgICAiQ0FMTCI6IFsKICAgICAgICAiQ0FMTF9BREFQVElWRSIsCiAgICAgICAgIkNBTExfUFlfRVhBQ1RfQVJHUyIsCiAgICAgICAgIkNBTExfUFlfV0lUSF9ERUZBVUxUUyIsCiAgICBdLAogICAgIkNPTVBBUkVfT1AiOiBbCiAgICAgICAgIkNPTVBBUkVfT1BfQURBUFRJVkUiLAogICAgICAgICJDT01QQVJFX09QX0ZMT0FUX0pVTVAiLAogICAgICAgICJDT01QQVJFX09QX0lOVF9KVU1QIiwKICAgICAgICAiQ09NUEFSRV9PUF9TVFJfSlVNUCIsCiAgICBdLAogICAgIkVYVEVOREVEX0FSRyI6IFsKICAgICAgICAiRVhURU5ERURfQVJHX1FVSUNLIiwKICAgIF0sCiAgICAiSlVNUF9CQUNLV0FSRCI6IFsKICAgICAgICAiSlVNUF9CQUNLV0FSRF9RVUlDSyIsCiAgICBdLAogICAgIkxPQURfQVRUUiI6IFsKICAgICAgICAiTE9BRF9BVFRSX0FEQVBUSVZFIiwKICAgICAgICAiTE9BRF9BVFRSX0lOU1RBTkNFX1ZBTFVFIiwKICAgICAgICAiTE9BRF9BVFRSX01PRFVMRSIsCiAgICAgICAgIkxPQURfQVRUUl9TTE9UIiwKICAgICAgICAiTE9BRF9BVFRSX1dJVEhfSElOVCIsCiAgICBdLAogICAgIkxPQURfQ09OU1QiOiBbCiAgICAgICAgIkxPQURfQ09OU1RfX0xPQURfRkFTVCIsCiAgICBdLAogICAgIkxPQURfRkFTVCI6IFsKICAgICAgICAiTE9BRF9GQVNUX19MT0FEX0NPTlNUIiwKICAgICAgICAiTE9BRF9GQVNUX19MT0FEX0ZBU1QiLAogICAgXSwKICAgICJMT0FEX0dMT0JBTCI6IFsKICAgICAgICAiTE9BRF9HTE9CQUxfQURBUFRJVkUiLAogICAgICAgICJMT0FEX0dMT0JBTF9CVUlMVElOIiwKICAgICAgICAiTE9BRF9HTE9CQUxfTU9EVUxFIiwKICAgIF0sCiAgICAiTE9BRF9NRVRIT0QiOiBbCiAgICAgICAgIkxPQURfTUVUSE9EX0FEQVBUSVZFIiwKICAgICAgICAiTE9BRF9NRVRIT0RfQ0xBU1MiLAogICAgICAgICJMT0FEX01FVEhPRF9NT0RVTEUiLAogICAgICAgICJMT0FEX01FVEhPRF9OT19ESUNUIiwKICAgICAgICAiTE9BRF9NRVRIT0RfV0lUSF9ESUNUIiwKICAgICAgICAiTE9BRF9NRVRIT0RfV0lUSF9WQUxVRVMiLAogICAgXSwKICAgICJQUkVDQUxMIjogWwogICAgICAgICJQUkVDQUxMX0FEQVBUSVZFIiwKICAgICAgICAiUFJFQ0FMTF9CT1VORF9NRVRIT0QiLAogICAgICAgICJQUkVDQUxMX0JVSUxUSU5fQ0xBU1MiLAogICAgICAgICJQUkVDQUxMX0JVSUxUSU5fRkFTVF9XSVRIX0tFWVdPUkRTIiwKICAgICAgICAiUFJFQ0FMTF9NRVRIT0RfREVTQ1JJUFRPUl9GQVNUX1dJVEhfS0VZV09SRFMiLAogICAgICAgICJQUkVDQUxMX05PX0tXX0JVSUxUSU5fRkFTVCIsCiAgICAgICAgIlBSRUNBTExfTk9fS1dfQlVJTFRJTl9PIiwKICAgICAgICAiUFJFQ0FMTF9OT19LV19JU0lOU1RBTkNFIiwKICAgICAgICAiUFJFQ0FMTF9OT19LV19MRU4iLAogICAgICAgICJQUkVDQUxMX05PX0tXX0xJU1RfQVBQRU5EIiwKICAgICAgICAiUFJFQ0FMTF9OT19LV19NRVRIT0RfREVTQ1JJUFRPUl9GQVNUIiwKICAgICAgICAiUFJFQ0FMTF9OT19LV19NRVRIT0RfREVTQ1JJUFRPUl9OT0FSR1MiLAogICAgICAgICJQUkVDQUxMX05PX0tXX01FVEhPRF9ERVNDUklQVE9SX08iLAogICAgICAgICJQUkVDQUxMX05PX0tXX1NUUl8xIiwKICAgICAgICAiUFJFQ0FMTF9OT19LV19UVVBMRV8xIiwKICAgICAgICAiUFJFQ0FMTF9OT19LV19UWVBFXzEiLAogICAgICAgICJQUkVDQUxMX1BZRlVOQyIsCiAgICBdLAogICAgIlJFU1VNRSI6IFsKICAgICAgICAiUkVTVU1FX1FVSUNLIiwKICAgIF0sCiAgICAiU1RPUkVfQVRUUiI6IFsKICAgICAgICAiU1RPUkVfQVRUUl9BREFQVElWRSIsCiAgICAgICAgIlNUT1JFX0FUVFJfSU5TVEFOQ0VfVkFMVUUiLAogICAgICAgICJTVE9SRV9BVFRSX1NMT1QiLAogICAgICAgICJTVE9SRV9BVFRSX1dJVEhfSElOVCIsCiAgICBdLAogICAgIlNUT1JFX0ZBU1QiOiBbCiAgICAgICAgIlNUT1JFX0ZBU1RfX0xPQURfRkFTVCIsCiAgICAgICAgIlNUT1JFX0ZBU1RfX1NUT1JFX0ZBU1QiLAogICAgXSwKICAgICJTVE9SRV9TVUJTQ1IiOiBbCiAgICAgICAgIlNUT1JFX1NVQlNDUl9BREFQVElWRSIsCiAgICAgICAgIlNUT1JFX1NVQlNDUl9ESUNUIiwKICAgICAgICAiU1RPUkVfU1VCU0NSX0xJU1RfSU5UIiwKICAgIF0sCiAgICAiVU5QQUNLX1NFUVVFTkNFIjogWwogICAgICAgICJVTlBBQ0tfU0VRVUVOQ0VfQURBUFRJVkUiLAogICAgICAgICJVTlBBQ0tfU0VRVUVOQ0VfTElTVCIsCiAgICAgICAgIlVOUEFDS19TRVFVRU5DRV9UVVBMRSIsCiAgICAgICAgIlVOUEFDS19TRVFVRU5DRV9UV09fVFVQTEUiLAogICAgXSwKfQpfc3BlY2lhbGl6ZWRfaW5zdHJ1Y3Rpb25zID0gWwogICAgb3Bjb2RlIGZvciBmYW1pbHkgaW4gX3NwZWNpYWxpemF0aW9ucy52YWx1ZXMoKSBmb3Igb3Bjb2RlIGluIGZhbWlseQpdCl9zcGVjaWFsaXphdGlvbl9zdGF0cyA9IFsKICAgICJzdWNjZXNzIiwKICAgICJmYWlsdXJlIiwKICAgICJoaXQiLAogICAgImRlZmVycmVkIiwKICAgICJtaXNzIiwKICAgICJkZW9wdCIsCl0KCl9jYWNoZV9mb3JtYXQgPSB7CiAgICAiTE9BRF9HTE9CQUwiOiB7CiAgICAgICAgImNvdW50ZXIiOiAxLAogICAgICAgICJpbmRleCI6IDEsCiAgICAgICAgIm1vZHVsZV9rZXlzX3ZlcnNpb24iOiAyLAogICAgICAgICJidWlsdGluX2tleXNfdmVyc2lvbiI6IDEsCiAgICB9LAogICAgIkJJTkFSWV9PUCI6IHsKICAgICAgICAiY291bnRlciI6IDEsCiAgICB9LAogICAgIlVOUEFDS19TRVFVRU5DRSI6IHsKICAgICAgICAiY291bnRlciI6IDEsCiAgICB9LAogICAgIkNPTVBBUkVfT1AiOiB7CiAgICAgICAgImNvdW50ZXIiOiAxLAogICAgICAgICJtYXNrIjogMSwKICAgIH0sCiAgICAiQklOQVJZX1NVQlNDUiI6IHsKICAgICAgICAiY291bnRlciI6IDEsCiAgICAgICAgInR5cGVfdmVyc2lvbiI6IDIsCiAgICAgICAgImZ1bmNfdmVyc2lvbiI6IDEsCiAgICB9LAogICAgIkxPQURfQVRUUiI6IHsKICAgICAgICAiY291bnRlciI6IDEsCiAgICAgICAgInZlcnNpb24iOiAyLAogICAgICAgICJpbmRleCI6IDEsCiAgICB9LAogICAgIlNUT1JFX0FUVFIiOiB7CiAgICAgICAgImNvdW50ZXIiOiAxLAogICAgICAgICJ2ZXJzaW9uIjogMiwKICAgICAgICAiaW5kZXgiOiAxLAogICAgfSwKICAgICJMT0FEX01FVEhPRCI6IHsKICAgICAgICAiY291bnRlciI6IDEsCiAgICAgICAgInR5cGVfdmVyc2lvbiI6IDIsCiAgICAgICAgImRpY3Rfb2Zmc2V0IjogMSwKICAgICAgICAia2V5c192ZXJzaW9uIjogMiwKICAgICAgICAiZGVzY3IiOiA0LAogICAgfSwKICAgICJDQUxMIjogewogICAgICAgICJjb3VudGVyIjogMSwKICAgICAgICAiZnVuY192ZXJzaW9uIjogMiwKICAgICAgICAibWluX2FyZ3MiOiAxLAogICAgfSwKICAgICJQUkVDQUxMIjogewogICAgICAgICJjb3VudGVyIjogMSwKICAgIH0sCiAgICAiU1RPUkVfU1VCU0NSIjogewogICAgICAgICJjb3VudGVyIjogMSwKICAgIH0sCn0KCl9pbmxpbmVfY2FjaGVfZW50cmllcyA9IFsKICAgIHN1bShfY2FjaGVfZm9ybWF0LmdldChvcG5hbWVbb3Bjb2RlXSwge30pLnZhbHVlcygpKSBmb3Igb3Bjb2RlIGluIHJhbmdlKDI1NikKXQpQSwMEFAAAAAAAAiCjVg0uzH7VKgAA1SoAAAsAAABvcGVyYXRvci5weSIiIgpPcGVyYXRvciBJbnRlcmZhY2UKClRoaXMgbW9kdWxlIGV4cG9ydHMgYSBzZXQgb2YgZnVuY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludHJpbnNpYwpvcGVyYXRvcnMgb2YgUHl0aG9uLiAgRm9yIGV4YW1wbGUsIG9wZXJhdG9yLmFkZCh4LCB5KSBpcyBlcXVpdmFsZW50CnRvIHRoZSBleHByZXNzaW9uIHgreS4gIFRoZSBmdW5jdGlvbiBuYW1lcyBhcmUgdGhvc2UgdXNlZCBmb3Igc3BlY2lhbAptZXRob2RzOyB2YXJpYW50cyB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nICdfXycgYXJlIGFsc28gcHJvdmlkZWQKZm9yIGNvbnZlbmllbmNlLgoKVGhpcyBpcyB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KIiIiCgpfX2FsbF9fID0gWydhYnMnLCAnYWRkJywgJ2FuZF8nLCAnYXR0cmdldHRlcicsICdjYWxsJywgJ2NvbmNhdCcsICdjb250YWlucycsICdjb3VudE9mJywKICAgICAgICAgICAnZGVsaXRlbScsICdlcScsICdmbG9vcmRpdicsICdnZScsICdnZXRpdGVtJywgJ2d0JywgJ2lhZGQnLCAnaWFuZCcsCiAgICAgICAgICAgJ2ljb25jYXQnLCAnaWZsb29yZGl2JywgJ2lsc2hpZnQnLCAnaW1hdG11bCcsICdpbW9kJywgJ2ltdWwnLAogICAgICAgICAgICdpbmRleCcsICdpbmRleE9mJywgJ2ludicsICdpbnZlcnQnLCAnaW9yJywgJ2lwb3cnLCAnaXJzaGlmdCcsCiAgICAgICAgICAgJ2lzXycsICdpc19ub3QnLCAnaXN1YicsICdpdGVtZ2V0dGVyJywgJ2l0cnVlZGl2JywgJ2l4b3InLCAnbGUnLAogICAgICAgICAgICdsZW5ndGhfaGludCcsICdsc2hpZnQnLCAnbHQnLCAnbWF0bXVsJywgJ21ldGhvZGNhbGxlcicsICdtb2QnLAogICAgICAgICAgICdtdWwnLCAnbmUnLCAnbmVnJywgJ25vdF8nLCAnb3JfJywgJ3BvcycsICdwb3cnLCAncnNoaWZ0JywKICAgICAgICAgICAnc2V0aXRlbScsICdzdWInLCAndHJ1ZWRpdicsICd0cnV0aCcsICd4b3InXQoKZnJvbSBidWlsdGlucyBpbXBvcnQgYWJzIGFzIF9hYnMKCgojIENvbXBhcmlzb24gT3BlcmF0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIwoKZGVmIGx0KGEsIGIpOgogICAgIlNhbWUgYXMgYSA8IGIuIgogICAgcmV0dXJuIGEgPCBiCgpkZWYgbGUoYSwgYik6CiAgICAiU2FtZSBhcyBhIDw9IGIuIgogICAgcmV0dXJuIGEgPD0gYgoKZGVmIGVxKGEsIGIpOgogICAgIlNhbWUgYXMgYSA9PSBiLiIKICAgIHJldHVybiBhID09IGIKCmRlZiBuZShhLCBiKToKICAgICJTYW1lIGFzIGEgIT0gYi4iCiAgICByZXR1cm4gYSAhPSBiCgpkZWYgZ2UoYSwgYik6CiAgICAiU2FtZSBhcyBhID49IGIuIgogICAgcmV0dXJuIGEgPj0gYgoKZGVmIGd0KGEsIGIpOgogICAgIlNhbWUgYXMgYSA+IGIuIgogICAgcmV0dXJuIGEgPiBiCgojIExvZ2ljYWwgT3BlcmF0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIwoKZGVmIG5vdF8oYSk6CiAgICAiU2FtZSBhcyBub3QgYS4iCiAgICByZXR1cm4gbm90IGEKCmRlZiB0cnV0aChhKToKICAgICJSZXR1cm4gVHJ1ZSBpZiBhIGlzIHRydWUsIEZhbHNlIG90aGVyd2lzZS4iCiAgICByZXR1cm4gVHJ1ZSBpZiBhIGVsc2UgRmFsc2UKCmRlZiBpc18oYSwgYik6CiAgICAiU2FtZSBhcyBhIGlzIGIuIgogICAgcmV0dXJuIGEgaXMgYgoKZGVmIGlzX25vdChhLCBiKToKICAgICJTYW1lIGFzIGEgaXMgbm90IGIuIgogICAgcmV0dXJuIGEgaXMgbm90IGIKCiMgTWF0aGVtYXRpY2FsL0JpdHdpc2UgT3BlcmF0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiojCgpkZWYgYWJzKGEpOgogICAgIlNhbWUgYXMgYWJzKGEpLiIKICAgIHJldHVybiBfYWJzKGEpCgpkZWYgYWRkKGEsIGIpOgogICAgIlNhbWUgYXMgYSArIGIuIgogICAgcmV0dXJuIGEgKyBiCgpkZWYgYW5kXyhhLCBiKToKICAgICJTYW1lIGFzIGEgJiBiLiIKICAgIHJldHVybiBhICYgYgoKZGVmIGZsb29yZGl2KGEsIGIpOgogICAgIlNhbWUgYXMgYSAvLyBiLiIKICAgIHJldHVybiBhIC8vIGIKCmRlZiBpbmRleChhKToKICAgICJTYW1lIGFzIGEuX19pbmRleF9fKCkuIgogICAgcmV0dXJuIGEuX19pbmRleF9fKCkKCmRlZiBpbnYoYSk6CiAgICAiU2FtZSBhcyB+YS4iCiAgICByZXR1cm4gfmEKaW52ZXJ0ID0gaW52CgpkZWYgbHNoaWZ0KGEsIGIpOgogICAgIlNhbWUgYXMgYSA8PCBiLiIKICAgIHJldHVybiBhIDw8IGIKCmRlZiBtb2QoYSwgYik6CiAgICAiU2FtZSBhcyBhICUgYi4iCiAgICByZXR1cm4gYSAlIGIKCmRlZiBtdWwoYSwgYik6CiAgICAiU2FtZSBhcyBhICogYi4iCiAgICByZXR1cm4gYSAqIGIKCmRlZiBtYXRtdWwoYSwgYik6CiAgICAiU2FtZSBhcyBhIEAgYi4iCiAgICByZXR1cm4gYSBAIGIKCmRlZiBuZWcoYSk6CiAgICAiU2FtZSBhcyAtYS4iCiAgICByZXR1cm4gLWEKCmRlZiBvcl8oYSwgYik6CiAgICAiU2FtZSBhcyBhIHwgYi4iCiAgICByZXR1cm4gYSB8IGIKCmRlZiBwb3MoYSk6CiAgICAiU2FtZSBhcyArYS4iCiAgICByZXR1cm4gK2EKCmRlZiBwb3coYSwgYik6CiAgICAiU2FtZSBhcyBhICoqIGIuIgogICAgcmV0dXJuIGEgKiogYgoKZGVmIHJzaGlmdChhLCBiKToKICAgICJTYW1lIGFzIGEgPj4gYi4iCiAgICByZXR1cm4gYSA+PiBiCgpkZWYgc3ViKGEsIGIpOgogICAgIlNhbWUgYXMgYSAtIGIuIgogICAgcmV0dXJuIGEgLSBiCgpkZWYgdHJ1ZWRpdihhLCBiKToKICAgICJTYW1lIGFzIGEgLyBiLiIKICAgIHJldHVybiBhIC8gYgoKZGVmIHhvcihhLCBiKToKICAgICJTYW1lIGFzIGEgXiBiLiIKICAgIHJldHVybiBhIF4gYgoKIyBTZXF1ZW5jZSBPcGVyYXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiMKCmRlZiBjb25jYXQoYSwgYik6CiAgICAiU2FtZSBhcyBhICsgYiwgZm9yIGEgYW5kIGIgc2VxdWVuY2VzLiIKICAgIGlmIG5vdCBoYXNhdHRyKGEsICdfX2dldGl0ZW1fXycpOgogICAgICAgIG1zZyA9ICInJXMnIG9iamVjdCBjYW4ndCBiZSBjb25jYXRlbmF0ZWQiICUgdHlwZShhKS5fX25hbWVfXwogICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICByZXR1cm4gYSArIGIKCmRlZiBjb250YWlucyhhLCBiKToKICAgICJTYW1lIGFzIGIgaW4gYSAobm90ZSByZXZlcnNlZCBvcGVyYW5kcykuIgogICAgcmV0dXJuIGIgaW4gYQoKZGVmIGNvdW50T2YoYSwgYik6CiAgICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSB3aGljaCBhcmUsIG9yIHdoaWNoIGVxdWFsLCBiLiIKICAgIGNvdW50ID0gMAogICAgZm9yIGkgaW4gYToKICAgICAgICBpZiBpIGlzIGIgb3IgaSA9PSBiOgogICAgICAgICAgICBjb3VudCArPSAxCiAgICByZXR1cm4gY291bnQKCmRlZiBkZWxpdGVtKGEsIGIpOgogICAgIlNhbWUgYXMgZGVsIGFbYl0uIgogICAgZGVsIGFbYl0KCmRlZiBnZXRpdGVtKGEsIGIpOgogICAgIlNhbWUgYXMgYVtiXS4iCiAgICByZXR1cm4gYVtiXQoKZGVmIGluZGV4T2YoYSwgYik6CiAgICAiUmV0dXJuIHRoZSBmaXJzdCBpbmRleCBvZiBiIGluIGEuIgogICAgZm9yIGksIGogaW4gZW51bWVyYXRlKGEpOgogICAgICAgIGlmIGogaXMgYiBvciBqID09IGI6CiAgICAgICAgICAgIHJldHVybiBpCiAgICBlbHNlOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlcXVlbmNlLmluZGV4KHgpOiB4IG5vdCBpbiBzZXF1ZW5jZScpCgpkZWYgc2V0aXRlbShhLCBiLCBjKToKICAgICJTYW1lIGFzIGFbYl0gPSBjLiIKICAgIGFbYl0gPSBjCgpkZWYgbGVuZ3RoX2hpbnQob2JqLCBkZWZhdWx0PTApOgogICAgIiIiCiAgICBSZXR1cm4gYW4gZXN0aW1hdGUgb2YgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBvYmouCiAgICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJlc2l6aW5nIGNvbnRhaW5lcnMgd2hlbiBidWlsZGluZyBmcm9tIGFuIGl0ZXJhYmxlLgoKICAgIElmIHRoZSBvYmplY3Qgc3VwcG9ydHMgbGVuKCksIHRoZSByZXN1bHQgd2lsbCBiZSBleGFjdC4gT3RoZXJ3aXNlLCBpdCBtYXkKICAgIG92ZXItIG9yIHVuZGVyLWVzdGltYXRlIGJ5IGFuIGFyYml0cmFyeSBhbW91bnQuIFRoZSByZXN1bHQgd2lsbCBiZSBhbgogICAgaW50ZWdlciA+PSAwLgogICAgIiIiCiAgICBpZiBub3QgaXNpbnN0YW5jZShkZWZhdWx0LCBpbnQpOgogICAgICAgIG1zZyA9ICgiJyVzJyBvYmplY3QgY2Fubm90IGJlIGludGVycHJldGVkIGFzIGFuIGludGVnZXIiICUKICAgICAgICAgICAgICAgdHlwZShkZWZhdWx0KS5fX25hbWVfXykKICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKQoKICAgIHRyeToKICAgICAgICByZXR1cm4gbGVuKG9iaikKICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgcGFzcwoKICAgIHRyeToKICAgICAgICBoaW50ID0gdHlwZShvYmopLl9fbGVuZ3RoX2hpbnRfXwogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIHJldHVybiBkZWZhdWx0CgogICAgdHJ5OgogICAgICAgIHZhbCA9IGhpbnQob2JqKQogICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgaWYgdmFsIGlzIE5vdEltcGxlbWVudGVkOgogICAgICAgIHJldHVybiBkZWZhdWx0CiAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWwsIGludCk6CiAgICAgICAgbXNnID0gKCdfX2xlbmd0aF9oaW50X18gbXVzdCBiZSBpbnRlZ2VyLCBub3QgJXMnICUKICAgICAgICAgICAgICAgdHlwZSh2YWwpLl9fbmFtZV9fKQogICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICBpZiB2YWwgPCAwOgogICAgICAgIG1zZyA9ICdfX2xlbmd0aF9oaW50X18oKSBzaG91bGQgcmV0dXJuID49IDAnCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCiAgICByZXR1cm4gdmFsCgojIE90aGVyIE9wZXJhdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIwoKZGVmIGNhbGwob2JqLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgIiIiU2FtZSBhcyBvYmooKmFyZ3MsICoqa3dhcmdzKS4iIiIKICAgIHJldHVybiBvYmooKmFyZ3MsICoqa3dhcmdzKQoKIyBHZW5lcmFsaXplZCBMb29rdXAgT2JqZWN0cyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiMKCmNsYXNzIGF0dHJnZXR0ZXI6CiAgICAiIiIKICAgIFJldHVybiBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IGZldGNoZXMgdGhlIGdpdmVuIGF0dHJpYnV0ZShzKSBmcm9tIGl0cyBvcGVyYW5kLgogICAgQWZ0ZXIgZiA9IGF0dHJnZXR0ZXIoJ25hbWUnKSwgdGhlIGNhbGwgZihyKSByZXR1cm5zIHIubmFtZS4KICAgIEFmdGVyIGcgPSBhdHRyZ2V0dGVyKCduYW1lJywgJ2RhdGUnKSwgdGhlIGNhbGwgZyhyKSByZXR1cm5zIChyLm5hbWUsIHIuZGF0ZSkuCiAgICBBZnRlciBoID0gYXR0cmdldHRlcignbmFtZS5maXJzdCcsICduYW1lLmxhc3QnKSwgdGhlIGNhbGwgaChyKSByZXR1cm5zCiAgICAoci5uYW1lLmZpcnN0LCByLm5hbWUubGFzdCkuCiAgICAiIiIKICAgIF9fc2xvdHNfXyA9ICgnX2F0dHJzJywgJ19jYWxsJykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0ciwgKmF0dHJzKToKICAgICAgICBpZiBub3QgYXR0cnM6CiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGF0dHIsIHN0cik6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2F0dHJpYnV0ZSBuYW1lIG11c3QgYmUgYSBzdHJpbmcnKQogICAgICAgICAgICBzZWxmLl9hdHRycyA9IChhdHRyLCkKICAgICAgICAgICAgbmFtZXMgPSBhdHRyLnNwbGl0KCcuJykKICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCBuYW1lKQogICAgICAgICAgICAgICAgcmV0dXJuIG9iagogICAgICAgICAgICBzZWxmLl9jYWxsID0gZnVuYwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2F0dHJzID0gKGF0dHIsKSArIGF0dHJzCiAgICAgICAgICAgIGdldHRlcnMgPSB0dXBsZShtYXAoYXR0cmdldHRlciwgc2VsZi5fYXR0cnMpKQogICAgICAgICAgICBkZWYgZnVuYyhvYmopOgogICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKGdldHRlcihvYmopIGZvciBnZXR0ZXIgaW4gZ2V0dGVycykKICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbChvYmopCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMuJXMoJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihtYXAocmVwciwgc2VsZi5fYXR0cnMpKSkKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIHNlbGYuX2F0dHJzCgpjbGFzcyBpdGVtZ2V0dGVyOgogICAgIiIiCiAgICBSZXR1cm4gYSBjYWxsYWJsZSBvYmplY3QgdGhhdCBmZXRjaGVzIHRoZSBnaXZlbiBpdGVtKHMpIGZyb20gaXRzIG9wZXJhbmQuCiAgICBBZnRlciBmID0gaXRlbWdldHRlcigyKSwgdGhlIGNhbGwgZihyKSByZXR1cm5zIHJbMl0uCiAgICBBZnRlciBnID0gaXRlbWdldHRlcigyLCA1LCAzKSwgdGhlIGNhbGwgZyhyKSByZXR1cm5zIChyWzJdLCByWzVdLCByWzNdKQogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAoJ19pdGVtcycsICdfY2FsbCcpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW0sICppdGVtcyk6CiAgICAgICAgaWYgbm90IGl0ZW1zOgogICAgICAgICAgICBzZWxmLl9pdGVtcyA9IChpdGVtLCkKICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKICAgICAgICAgICAgICAgIHJldHVybiBvYmpbaXRlbV0KICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9pdGVtcyA9IGl0ZW1zID0gKGl0ZW0sKSArIGl0ZW1zCiAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CiAgICAgICAgICAgICAgICByZXR1cm4gdHVwbGUob2JqW2ldIGZvciBpIGluIGl0ZW1zKQogICAgICAgICAgICBzZWxmLl9jYWxsID0gZnVuYwoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsKG9iaikKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICclcy4lcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4obWFwKHJlcHIsIHNlbGYuX2l0ZW1zKSkpCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCBzZWxmLl9pdGVtcwoKY2xhc3MgbWV0aG9kY2FsbGVyOgogICAgIiIiCiAgICBSZXR1cm4gYSBjYWxsYWJsZSBvYmplY3QgdGhhdCBjYWxscyB0aGUgZ2l2ZW4gbWV0aG9kIG9uIGl0cyBvcGVyYW5kLgogICAgQWZ0ZXIgZiA9IG1ldGhvZGNhbGxlcignbmFtZScpLCB0aGUgY2FsbCBmKHIpIHJldHVybnMgci5uYW1lKCkuCiAgICBBZnRlciBnID0gbWV0aG9kY2FsbGVyKCduYW1lJywgJ2RhdGUnLCBmb289MSksIHRoZSBjYWxsIGcocikgcmV0dXJucwogICAgci5uYW1lKCdkYXRlJywgZm9vPTEpLgogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAoJ19uYW1lJywgJ19hcmdzJywgJ19rd2FyZ3MnKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5fbmFtZSwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtZXRob2QgbmFtZSBtdXN0IGJlIGEgc3RyaW5nJykKICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgIHNlbGYuX2t3YXJncyA9IGt3YXJncwoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgogICAgICAgIHJldHVybiBnZXRhdHRyKG9iaiwgc2VsZi5fbmFtZSkoKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBhcmdzID0gW3JlcHIoc2VsZi5fbmFtZSldCiAgICAgICAgYXJncy5leHRlbmQobWFwKHJlcHIsIHNlbGYuX2FyZ3MpKQogICAgICAgIGFyZ3MuZXh0ZW5kKCclcz0lcicgJSAoaywgdikgZm9yIGssIHYgaW4gc2VsZi5fa3dhcmdzLml0ZW1zKCkpCiAgICAgICAgcmV0dXJuICclcy4lcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oYXJncykpCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuX2t3YXJnczoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5fbmFtZSwpICsgc2VsZi5fYXJncwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiAgICAgICAgICAgIHJldHVybiBwYXJ0aWFsKHNlbGYuX19jbGFzc19fLCBzZWxmLl9uYW1lLCAqKnNlbGYuX2t3YXJncyksIHNlbGYuX2FyZ3MKCgojIEluLXBsYWNlIE9wZXJhdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIwoKZGVmIGlhZGQoYSwgYik6CiAgICAiU2FtZSBhcyBhICs9IGIuIgogICAgYSArPSBiCiAgICByZXR1cm4gYQoKZGVmIGlhbmQoYSwgYik6CiAgICAiU2FtZSBhcyBhICY9IGIuIgogICAgYSAmPSBiCiAgICByZXR1cm4gYQoKZGVmIGljb25jYXQoYSwgYik6CiAgICAiU2FtZSBhcyBhICs9IGIsIGZvciBhIGFuZCBiIHNlcXVlbmNlcy4iCiAgICBpZiBub3QgaGFzYXR0cihhLCAnX19nZXRpdGVtX18nKToKICAgICAgICBtc2cgPSAiJyVzJyBvYmplY3QgY2FuJ3QgYmUgY29uY2F0ZW5hdGVkIiAlIHR5cGUoYSkuX19uYW1lX18KICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKQogICAgYSArPSBiCiAgICByZXR1cm4gYQoKZGVmIGlmbG9vcmRpdihhLCBiKToKICAgICJTYW1lIGFzIGEgLy89IGIuIgogICAgYSAvLz0gYgogICAgcmV0dXJuIGEKCmRlZiBpbHNoaWZ0KGEsIGIpOgogICAgIlNhbWUgYXMgYSA8PD0gYi4iCiAgICBhIDw8PSBiCiAgICByZXR1cm4gYQoKZGVmIGltb2QoYSwgYik6CiAgICAiU2FtZSBhcyBhICU9IGIuIgogICAgYSAlPSBiCiAgICByZXR1cm4gYQoKZGVmIGltdWwoYSwgYik6CiAgICAiU2FtZSBhcyBhICo9IGIuIgogICAgYSAqPSBiCiAgICByZXR1cm4gYQoKZGVmIGltYXRtdWwoYSwgYik6CiAgICAiU2FtZSBhcyBhIEA9IGIuIgogICAgYSBAPSBiCiAgICByZXR1cm4gYQoKZGVmIGlvcihhLCBiKToKICAgICJTYW1lIGFzIGEgfD0gYi4iCiAgICBhIHw9IGIKICAgIHJldHVybiBhCgpkZWYgaXBvdyhhLCBiKToKICAgICJTYW1lIGFzIGEgKio9IGIuIgogICAgYSAqKj1iCiAgICByZXR1cm4gYQoKZGVmIGlyc2hpZnQoYSwgYik6CiAgICAiU2FtZSBhcyBhID4+PSBiLiIKICAgIGEgPj49IGIKICAgIHJldHVybiBhCgpkZWYgaXN1YihhLCBiKToKICAgICJTYW1lIGFzIGEgLT0gYi4iCiAgICBhIC09IGIKICAgIHJldHVybiBhCgpkZWYgaXRydWVkaXYoYSwgYik6CiAgICAiU2FtZSBhcyBhIC89IGIuIgogICAgYSAvPSBiCiAgICByZXR1cm4gYQoKZGVmIGl4b3IoYSwgYik6CiAgICAiU2FtZSBhcyBhIF49IGIuIgogICAgYSBePSBiCiAgICByZXR1cm4gYQoKCnRyeToKICAgIGZyb20gX29wZXJhdG9yIGltcG9ydCAqCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgIGZyb20gX29wZXJhdG9yIGltcG9ydCBfX2RvY19fCgojIEFsbCBvZiB0aGVzZSAiX19mdW5jX18gPSBmdW5jIiBhc3NpZ25tZW50cyBoYXZlIHRvIGhhcHBlbiBhZnRlciBpbXBvcnRpbmcKIyBmcm9tIF9vcGVyYXRvciB0byBtYWtlIHN1cmUgdGhleSdyZSBzZXQgdG8gdGhlIHJpZ2h0IGZ1bmN0aW9uCl9fbHRfXyA9IGx0Cl9fbGVfXyA9IGxlCl9fZXFfXyA9IGVxCl9fbmVfXyA9IG5lCl9fZ2VfXyA9IGdlCl9fZ3RfXyA9IGd0Cl9fbm90X18gPSBub3RfCl9fYWJzX18gPSBhYnMKX19hZGRfXyA9IGFkZApfX2FuZF9fID0gYW5kXwpfX2NhbGxfXyA9IGNhbGwKX19mbG9vcmRpdl9fID0gZmxvb3JkaXYKX19pbmRleF9fID0gaW5kZXgKX19pbnZfXyA9IGludgpfX2ludmVydF9fID0gaW52ZXJ0Cl9fbHNoaWZ0X18gPSBsc2hpZnQKX19tb2RfXyA9IG1vZApfX211bF9fID0gbXVsCl9fbWF0bXVsX18gPSBtYXRtdWwKX19uZWdfXyA9IG5lZwpfX29yX18gPSBvcl8KX19wb3NfXyA9IHBvcwpfX3Bvd19fID0gcG93Cl9fcnNoaWZ0X18gPSByc2hpZnQKX19zdWJfXyA9IHN1YgpfX3RydWVkaXZfXyA9IHRydWVkaXYKX194b3JfXyA9IHhvcgpfX2NvbmNhdF9fID0gY29uY2F0Cl9fY29udGFpbnNfXyA9IGNvbnRhaW5zCl9fZGVsaXRlbV9fID0gZGVsaXRlbQpfX2dldGl0ZW1fXyA9IGdldGl0ZW0KX19zZXRpdGVtX18gPSBzZXRpdGVtCl9faWFkZF9fID0gaWFkZApfX2lhbmRfXyA9IGlhbmQKX19pY29uY2F0X18gPSBpY29uY2F0Cl9faWZsb29yZGl2X18gPSBpZmxvb3JkaXYKX19pbHNoaWZ0X18gPSBpbHNoaWZ0Cl9faW1vZF9fID0gaW1vZApfX2ltdWxfXyA9IGltdWwKX19pbWF0bXVsX18gPSBpbWF0bXVsCl9faW9yX18gPSBpb3IKX19pcG93X18gPSBpcG93Cl9faXJzaGlmdF9fID0gaXJzaGlmdApfX2lzdWJfXyA9IGlzdWIKX19pdHJ1ZWRpdl9fID0gaXRydWVkaXYKX19peG9yX18gPSBpeG9yClBLAwQUAAAAAAACIKNWKvCRwdHrAADR6wAACwAAAG9wdHBhcnNlLnB5IiIiQSBwb3dlcmZ1bCwgZXh0ZW5zaWJsZSwgYW5kIGVhc3ktdG8tdXNlIG9wdGlvbiBwYXJzZXIuCgpCeSBHcmVnIFdhcmQgPGd3YXJkQHB5dGhvbi5uZXQ+CgpPcmlnaW5hbGx5IGRpc3RyaWJ1dGVkIGFzIE9wdGlrLgoKRm9yIHN1cHBvcnQsIHVzZSB0aGUgb3B0aWstdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0IG1haWxpbmcgbGlzdAooaHR0cDovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9vcHRpay11c2VycykuCgpTaW1wbGUgdXNhZ2UgZXhhbXBsZToKCiAgIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgoKICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKICAgcGFyc2VyLmFkZF9vcHRpb24oIi1mIiwgIi0tZmlsZSIsIGRlc3Q9ImZpbGVuYW1lIiwKICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JpdGUgcmVwb3J0IHRvIEZJTEUiLCBtZXRhdmFyPSJGSUxFIikKICAgcGFyc2VyLmFkZF9vcHRpb24oIi1xIiwgIi0tcXVpZXQiLAogICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idmVyYm9zZSIsIGRlZmF1bHQ9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgaGVscD0iZG9uJ3QgcHJpbnQgc3RhdHVzIG1lc3NhZ2VzIHRvIHN0ZG91dCIpCgogICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCiIiIgoKX192ZXJzaW9uX18gPSAiMS41LjMiCgpfX2FsbF9fID0gWydPcHRpb24nLAogICAgICAgICAgICdtYWtlX29wdGlvbicsCiAgICAgICAgICAgJ1NVUFBSRVNTX0hFTFAnLAogICAgICAgICAgICdTVVBQUkVTU19VU0FHRScsCiAgICAgICAgICAgJ1ZhbHVlcycsCiAgICAgICAgICAgJ09wdGlvbkNvbnRhaW5lcicsCiAgICAgICAgICAgJ09wdGlvbkdyb3VwJywKICAgICAgICAgICAnT3B0aW9uUGFyc2VyJywKICAgICAgICAgICAnSGVscEZvcm1hdHRlcicsCiAgICAgICAgICAgJ0luZGVudGVkSGVscEZvcm1hdHRlcicsCiAgICAgICAgICAgJ1RpdGxlZEhlbHBGb3JtYXR0ZXInLAogICAgICAgICAgICdPcHRQYXJzZUVycm9yJywKICAgICAgICAgICAnT3B0aW9uRXJyb3InLAogICAgICAgICAgICdPcHRpb25Db25mbGljdEVycm9yJywKICAgICAgICAgICAnT3B0aW9uVmFsdWVFcnJvcicsCiAgICAgICAgICAgJ0JhZE9wdGlvbkVycm9yJywKICAgICAgICAgICAnY2hlY2tfY2hvaWNlJ10KCl9fY29weXJpZ2h0X18gPSAiIiIKQ29weXJpZ2h0IChjKSAyMDAxLTIwMDYgR3JlZ29yeSBQLiBXYXJkLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KQ29weXJpZ2h0IChjKSAyMDAyLTIwMDYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKbWV0OgoKICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgogICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCklTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRApUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCkNPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLApFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCk5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwpTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIiIiCgppbXBvcnQgc3lzLCBvcwppbXBvcnQgdGV4dHdyYXAKCmRlZiBfcmVwcihzZWxmKToKICAgIHJldHVybiAiPCVzIGF0IDB4JXg6ICVzPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGlkKHNlbGYpLCBzZWxmKQoKCiMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgZnJvbToKIyAgIElkOiBvcHRpb25fcGFyc2VyLnB5IDUyNyAyMDA2LTA3LTIzIDE1OjIxOjMwWiBncmVnCiMgICBJZDogb3B0aW9uLnB5IDUyMiAyMDA2LTA2LTExIDE2OjIyOjAzWiBnd2FyZAojICAgSWQ6IGhlbHAucHkgNTI3IDIwMDYtMDctMjMgMTU6MjE6MzBaIGdyZWcKIyAgIElkOiBlcnJvcnMucHkgNTA5IDIwMDYtMDQtMjAgMDA6NTg6MjRaIGd3YXJkCgp0cnk6CiAgICBmcm9tIGdldHRleHQgaW1wb3J0IGdldHRleHQsIG5nZXR0ZXh0CmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGRlZiBnZXR0ZXh0KG1lc3NhZ2UpOgogICAgICAgIHJldHVybiBtZXNzYWdlCgogICAgZGVmIG5nZXR0ZXh0KHNpbmd1bGFyLCBwbHVyYWwsIG4pOgogICAgICAgIGlmIG4gPT0gMToKICAgICAgICAgICAgcmV0dXJuIHNpbmd1bGFyCiAgICAgICAgcmV0dXJuIHBsdXJhbAoKXyA9IGdldHRleHQKCgpjbGFzcyBPcHRQYXJzZUVycm9yIChFeGNlcHRpb24pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZyk6CiAgICAgICAgc2VsZi5tc2cgPSBtc2cKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5tc2cKCgpjbGFzcyBPcHRpb25FcnJvciAoT3B0UGFyc2VFcnJvcik6CiAgICAiIiIKICAgIFJhaXNlZCBpZiBhbiBPcHRpb24gaW5zdGFuY2UgaXMgY3JlYXRlZCB3aXRoIGludmFsaWQgb3IKICAgIGluY29uc2lzdGVudCBhcmd1bWVudHMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBvcHRpb24pOgogICAgICAgIHNlbGYubXNnID0gbXNnCiAgICAgICAgc2VsZi5vcHRpb25faWQgPSBzdHIob3B0aW9uKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYub3B0aW9uX2lkOgogICAgICAgICAgICByZXR1cm4gIm9wdGlvbiAlczogJXMiICUgKHNlbGYub3B0aW9uX2lkLCBzZWxmLm1zZykKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5tc2cKCmNsYXNzIE9wdGlvbkNvbmZsaWN0RXJyb3IgKE9wdGlvbkVycm9yKToKICAgICIiIgogICAgUmFpc2VkIGlmIGNvbmZsaWN0aW5nIG9wdGlvbnMgYXJlIGFkZGVkIHRvIGFuIE9wdGlvblBhcnNlci4KICAgICIiIgoKY2xhc3MgT3B0aW9uVmFsdWVFcnJvciAoT3B0UGFyc2VFcnJvcik6CiAgICAiIiIKICAgIFJhaXNlZCBpZiBhbiBpbnZhbGlkIG9wdGlvbiB2YWx1ZSBpcyBlbmNvdW50ZXJlZCBvbiB0aGUgY29tbWFuZAogICAgbGluZS4KICAgICIiIgoKY2xhc3MgQmFkT3B0aW9uRXJyb3IgKE9wdFBhcnNlRXJyb3IpOgogICAgIiIiCiAgICBSYWlzZWQgaWYgYW4gaW52YWxpZCBvcHRpb24gaXMgc2VlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0X3N0cik6CiAgICAgICAgc2VsZi5vcHRfc3RyID0gb3B0X3N0cgoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBfKCJubyBzdWNoIG9wdGlvbjogJXMiKSAlIHNlbGYub3B0X3N0cgoKY2xhc3MgQW1iaWd1b3VzT3B0aW9uRXJyb3IgKEJhZE9wdGlvbkVycm9yKToKICAgICIiIgogICAgUmFpc2VkIGlmIGFuIGFtYmlndW91cyBvcHRpb24gaXMgc2VlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0X3N0ciwgcG9zc2liaWxpdGllcyk6CiAgICAgICAgQmFkT3B0aW9uRXJyb3IuX19pbml0X18oc2VsZiwgb3B0X3N0cikKICAgICAgICBzZWxmLnBvc3NpYmlsaXRpZXMgPSBwb3NzaWJpbGl0aWVzCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIChfKCJhbWJpZ3VvdXMgb3B0aW9uOiAlcyAoJXM/KSIpCiAgICAgICAgICAgICAgICAlIChzZWxmLm9wdF9zdHIsICIsICIuam9pbihzZWxmLnBvc3NpYmlsaXRpZXMpKSkKCgpjbGFzcyBIZWxwRm9ybWF0dGVyOgoKICAgICIiIgogICAgQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgZm9ybWF0dGluZyBvcHRpb24gaGVscC4gIE9wdGlvblBhcnNlcgogICAgaW5zdGFuY2VzIHNob3VsZCB1c2Ugb25lIG9mIHRoZSBIZWxwRm9ybWF0dGVyIHN1YmNsYXNzZXMgZm9yCiAgICBmb3JtYXR0aW5nIGhlbHA7IGJ5IGRlZmF1bHQgSW5kZW50ZWRIZWxwRm9ybWF0dGVyIGlzIHVzZWQuCgogICAgSW5zdGFuY2UgYXR0cmlidXRlczoKICAgICAgcGFyc2VyIDogT3B0aW9uUGFyc2VyCiAgICAgICAgdGhlIGNvbnRyb2xsaW5nIE9wdGlvblBhcnNlciBpbnN0YW5jZQogICAgICBpbmRlbnRfaW5jcmVtZW50IDogaW50CiAgICAgICAgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRvIGluZGVudCBwZXIgbmVzdGluZyBsZXZlbAogICAgICBtYXhfaGVscF9wb3NpdGlvbiA6IGludAogICAgICAgIHRoZSBtYXhpbXVtIHN0YXJ0aW5nIGNvbHVtbiBmb3Igb3B0aW9uIGhlbHAgdGV4dAogICAgICBoZWxwX3Bvc2l0aW9uIDogaW50CiAgICAgICAgdGhlIGNhbGN1bGF0ZWQgc3RhcnRpbmcgY29sdW1uIGZvciBvcHRpb24gaGVscCB0ZXh0OwogICAgICAgIGluaXRpYWxseSB0aGUgc2FtZSBhcyB0aGUgbWF4aW11bQogICAgICB3aWR0aCA6IGludAogICAgICAgIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGZvciBvdXRwdXQgKHBhc3MgTm9uZSB0byBjb25zdHJ1Y3RvciBmb3IKICAgICAgICB0aGlzIHZhbHVlIHRvIGJlIHRha2VuIGZyb20gdGhlICRDT0xVTU5TIGVudmlyb25tZW50IHZhcmlhYmxlKQogICAgICBsZXZlbCA6IGludAogICAgICAgIGN1cnJlbnQgaW5kZW50YXRpb24gbGV2ZWwKICAgICAgY3VycmVudF9pbmRlbnQgOiBpbnQKICAgICAgICBjdXJyZW50IGluZGVudGF0aW9uIGxldmVsIChpbiBjb2x1bW5zKQogICAgICBoZWxwX3dpZHRoIDogaW50CiAgICAgICAgbnVtYmVyIG9mIGNvbHVtbnMgYXZhaWxhYmxlIGZvciBvcHRpb24gaGVscCB0ZXh0IChjYWxjdWxhdGVkKQogICAgICBkZWZhdWx0X3RhZyA6IHN0cgogICAgICAgIHRleHQgdG8gcmVwbGFjZSB3aXRoIGVhY2ggb3B0aW9uJ3MgZGVmYXVsdCB2YWx1ZSwgIiVkZWZhdWx0IgogICAgICAgIGJ5IGRlZmF1bHQuICBTZXQgdG8gZmFsc2UgdmFsdWUgdG8gZGlzYWJsZSBkZWZhdWx0IHZhbHVlIGV4cGFuc2lvbi4KICAgICAgb3B0aW9uX3N0cmluZ3MgOiB7IE9wdGlvbiA6IHN0ciB9CiAgICAgICAgbWFwcyBPcHRpb24gaW5zdGFuY2VzIHRvIHRoZSBzbmlwcGV0IG9mIGhlbHAgdGV4dCBleHBsYWluaW5nCiAgICAgICAgdGhlIHN5bnRheCBvZiB0aGF0IG9wdGlvbiwgZS5nLiAiLWgsIC0taGVscCIgb3IKICAgICAgICAiLWZGSUxFLCAtLWZpbGU9RklMRSIKICAgICAgX3Nob3J0X29wdF9mbXQgOiBzdHIKICAgICAgICBmb3JtYXQgc3RyaW5nIGNvbnRyb2xsaW5nIGhvdyBzaG9ydCBvcHRpb25zIHdpdGggdmFsdWVzIGFyZQogICAgICAgIHByaW50ZWQgaW4gaGVscCB0ZXh0LiAgTXVzdCBiZSBlaXRoZXIgIiVzJXMiICgiLWZGSUxFIikgb3IKICAgICAgICAiJXMgJXMiICgiLWYgRklMRSIpLCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgdHdvIHN5bnRheGVzIHRoYXQKICAgICAgICBPcHRpayBzdXBwb3J0cy4KICAgICAgX2xvbmdfb3B0X2ZtdCA6IHN0cgogICAgICAgIHNpbWlsYXIgYnV0IGZvciBsb25nIG9wdGlvbnM7IG11c3QgYmUgZWl0aGVyICIlcyAlcyIgKCItLWZpbGUgRklMRSIpCiAgICAgICAgb3IgIiVzPSVzIiAoIi0tZmlsZT1GSUxFIikuCiAgICAiIiIKCiAgICBOT19ERUZBVUxUX1ZBTFVFID0gIm5vbmUiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgaW5kZW50X2luY3JlbWVudCwKICAgICAgICAgICAgICAgICBtYXhfaGVscF9wb3NpdGlvbiwKICAgICAgICAgICAgICAgICB3aWR0aCwKICAgICAgICAgICAgICAgICBzaG9ydF9maXJzdCk6CiAgICAgICAgc2VsZi5wYXJzZXIgPSBOb25lCiAgICAgICAgc2VsZi5pbmRlbnRfaW5jcmVtZW50ID0gaW5kZW50X2luY3JlbWVudAogICAgICAgIGlmIHdpZHRoIGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdpZHRoID0gaW50KG9zLmVudmlyb25bJ0NPTFVNTlMnXSkKICAgICAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICB3aWR0aCA9IDgwCiAgICAgICAgICAgIHdpZHRoIC09IDIKICAgICAgICBzZWxmLndpZHRoID0gd2lkdGgKICAgICAgICBzZWxmLmhlbHBfcG9zaXRpb24gPSBzZWxmLm1heF9oZWxwX3Bvc2l0aW9uID0gXAogICAgICAgICAgICAgICAgbWluKG1heF9oZWxwX3Bvc2l0aW9uLCBtYXgod2lkdGggLSAyMCwgaW5kZW50X2luY3JlbWVudCAqIDIpKQogICAgICAgIHNlbGYuY3VycmVudF9pbmRlbnQgPSAwCiAgICAgICAgc2VsZi5sZXZlbCA9IDAKICAgICAgICBzZWxmLmhlbHBfd2lkdGggPSBOb25lICAgICAgICAgICMgY29tcHV0ZWQgbGF0ZXIKICAgICAgICBzZWxmLnNob3J0X2ZpcnN0ID0gc2hvcnRfZmlyc3QKICAgICAgICBzZWxmLmRlZmF1bHRfdGFnID0gIiVkZWZhdWx0IgogICAgICAgIHNlbGYub3B0aW9uX3N0cmluZ3MgPSB7fQogICAgICAgIHNlbGYuX3Nob3J0X29wdF9mbXQgPSAiJXMgJXMiCiAgICAgICAgc2VsZi5fbG9uZ19vcHRfZm10ID0gIiVzPSVzIgoKICAgIGRlZiBzZXRfcGFyc2VyKHNlbGYsIHBhcnNlcik6CiAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIKCiAgICBkZWYgc2V0X3Nob3J0X29wdF9kZWxpbWl0ZXIoc2VsZiwgZGVsaW0pOgogICAgICAgIGlmIGRlbGltIG5vdCBpbiAoIiIsICIgIik6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAiaW52YWxpZCBtZXRhdmFyIGRlbGltaXRlciBmb3Igc2hvcnQgb3B0aW9uczogJXIiICUgZGVsaW0pCiAgICAgICAgc2VsZi5fc2hvcnRfb3B0X2ZtdCA9ICIlcyIgKyBkZWxpbSArICIlcyIKCiAgICBkZWYgc2V0X2xvbmdfb3B0X2RlbGltaXRlcihzZWxmLCBkZWxpbSk6CiAgICAgICAgaWYgZGVsaW0gbm90IGluICgiPSIsICIgIik6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAiaW52YWxpZCBtZXRhdmFyIGRlbGltaXRlciBmb3IgbG9uZyBvcHRpb25zOiAlciIgJSBkZWxpbSkKICAgICAgICBzZWxmLl9sb25nX29wdF9mbXQgPSAiJXMiICsgZGVsaW0gKyAiJXMiCgogICAgZGVmIGluZGVudChzZWxmKToKICAgICAgICBzZWxmLmN1cnJlbnRfaW5kZW50ICs9IHNlbGYuaW5kZW50X2luY3JlbWVudAogICAgICAgIHNlbGYubGV2ZWwgKz0gMQoKICAgIGRlZiBkZWRlbnQoc2VsZik6CiAgICAgICAgc2VsZi5jdXJyZW50X2luZGVudCAtPSBzZWxmLmluZGVudF9pbmNyZW1lbnQKICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2luZGVudCA+PSAwLCAiSW5kZW50IGRlY3JlYXNlZCBiZWxvdyAwLiIKICAgICAgICBzZWxmLmxldmVsIC09IDEKCiAgICBkZWYgZm9ybWF0X3VzYWdlKHNlbGYsIHVzYWdlKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKCiAgICBkZWYgZm9ybWF0X2hlYWRpbmcoc2VsZiwgaGVhZGluZyk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCgogICAgZGVmIF9mb3JtYXRfdGV4dChzZWxmLCB0ZXh0KToKICAgICAgICAiIiIKICAgICAgICBGb3JtYXQgYSBwYXJhZ3JhcGggb2YgZnJlZS1mb3JtIHRleHQgZm9yIGluY2x1c2lvbiBpbiB0aGUKICAgICAgICBoZWxwIG91dHB1dCBhdCB0aGUgY3VycmVudCBpbmRlbnRhdGlvbiBsZXZlbC4KICAgICAgICAiIiIKICAgICAgICB0ZXh0X3dpZHRoID0gbWF4KHNlbGYud2lkdGggLSBzZWxmLmN1cnJlbnRfaW5kZW50LCAxMSkKICAgICAgICBpbmRlbnQgPSAiICIqc2VsZi5jdXJyZW50X2luZGVudAogICAgICAgIHJldHVybiB0ZXh0d3JhcC5maWxsKHRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dF93aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsX2luZGVudD1pbmRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudF9pbmRlbnQ9aW5kZW50KQoKICAgIGRlZiBmb3JtYXRfZGVzY3JpcHRpb24oc2VsZiwgZGVzY3JpcHRpb24pOgogICAgICAgIGlmIGRlc2NyaXB0aW9uOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fZm9ybWF0X3RleHQoZGVzY3JpcHRpb24pICsgIlxuIgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAiIgoKICAgIGRlZiBmb3JtYXRfZXBpbG9nKHNlbGYsIGVwaWxvZyk6CiAgICAgICAgaWYgZXBpbG9nOgogICAgICAgICAgICByZXR1cm4gIlxuIiArIHNlbGYuX2Zvcm1hdF90ZXh0KGVwaWxvZykgKyAiXG4iCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICIiCgoKICAgIGRlZiBleHBhbmRfZGVmYXVsdChzZWxmLCBvcHRpb24pOgogICAgICAgIGlmIHNlbGYucGFyc2VyIGlzIE5vbmUgb3Igbm90IHNlbGYuZGVmYXVsdF90YWc6CiAgICAgICAgICAgIHJldHVybiBvcHRpb24uaGVscAoKICAgICAgICBkZWZhdWx0X3ZhbHVlID0gc2VsZi5wYXJzZXIuZGVmYXVsdHMuZ2V0KG9wdGlvbi5kZXN0KQogICAgICAgIGlmIGRlZmF1bHRfdmFsdWUgaXMgTk9fREVGQVVMVCBvciBkZWZhdWx0X3ZhbHVlIGlzIE5vbmU6CiAgICAgICAgICAgIGRlZmF1bHRfdmFsdWUgPSBzZWxmLk5PX0RFRkFVTFRfVkFMVUUKCiAgICAgICAgcmV0dXJuIG9wdGlvbi5oZWxwLnJlcGxhY2Uoc2VsZi5kZWZhdWx0X3RhZywgc3RyKGRlZmF1bHRfdmFsdWUpKQoKICAgIGRlZiBmb3JtYXRfb3B0aW9uKHNlbGYsIG9wdGlvbik6CiAgICAgICAgIyBUaGUgaGVscCBmb3IgZWFjaCBvcHRpb24gY29uc2lzdHMgb2YgdHdvIHBhcnRzOgogICAgICAgICMgICAqIHRoZSBvcHQgc3RyaW5ncyBhbmQgbWV0YXZhcnMKICAgICAgICAjICAgICBlZy4gKCIteCIsIG9yICItZkZJTEVOQU1FLCAtLWZpbGU9RklMRU5BTUUiKQogICAgICAgICMgICAqIHRoZSB1c2VyLXN1cHBsaWVkIGhlbHAgc3RyaW5nCiAgICAgICAgIyAgICAgZWcuICgidHVybiBvbiBleHBlcnQgbW9kZSIsICJyZWFkIGRhdGEgZnJvbSBGSUxFTkFNRSIpCiAgICAgICAgIwogICAgICAgICMgSWYgcG9zc2libGUsIHdlIHdyaXRlIGJvdGggb2YgdGhlc2Ugb24gdGhlIHNhbWUgbGluZToKICAgICAgICAjICAgLXggICAgICB0dXJuIG9uIGV4cGVydCBtb2RlCiAgICAgICAgIwogICAgICAgICMgQnV0IGlmIHRoZSBvcHQgc3RyaW5nIGxpc3QgaXMgdG9vIGxvbmcsIHdlIHB1dCB0aGUgaGVscAogICAgICAgICMgc3RyaW5nIG9uIGEgc2Vjb25kIGxpbmUsIGluZGVudGVkIHRvIHRoZSBzYW1lIGNvbHVtbiBpdCB3b3VsZAogICAgICAgICMgc3RhcnQgaW4gaWYgaXQgZml0IG9uIHRoZSBmaXJzdCBsaW5lLgogICAgICAgICMgICAtZkZJTEVOQU1FLCAtLWZpbGU9RklMRU5BTUUKICAgICAgICAjICAgICAgICAgICByZWFkIGRhdGEgZnJvbSBGSUxFTkFNRQogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgb3B0cyA9IHNlbGYub3B0aW9uX3N0cmluZ3Nbb3B0aW9uXQogICAgICAgIG9wdF93aWR0aCA9IHNlbGYuaGVscF9wb3NpdGlvbiAtIHNlbGYuY3VycmVudF9pbmRlbnQgLSAyCiAgICAgICAgaWYgbGVuKG9wdHMpID4gb3B0X3dpZHRoOgogICAgICAgICAgICBvcHRzID0gIiUqcyVzXG4iICUgKHNlbGYuY3VycmVudF9pbmRlbnQsICIiLCBvcHRzKQogICAgICAgICAgICBpbmRlbnRfZmlyc3QgPSBzZWxmLmhlbHBfcG9zaXRpb24KICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBoZWxwIG9uIHNhbWUgbGluZSBhcyBvcHRzCiAgICAgICAgICAgIG9wdHMgPSAiJSpzJS0qcyAgIiAlIChzZWxmLmN1cnJlbnRfaW5kZW50LCAiIiwgb3B0X3dpZHRoLCBvcHRzKQogICAgICAgICAgICBpbmRlbnRfZmlyc3QgPSAwCiAgICAgICAgcmVzdWx0LmFwcGVuZChvcHRzKQogICAgICAgIGlmIG9wdGlvbi5oZWxwOgogICAgICAgICAgICBoZWxwX3RleHQgPSBzZWxmLmV4cGFuZF9kZWZhdWx0KG9wdGlvbikKICAgICAgICAgICAgaGVscF9saW5lcyA9IHRleHR3cmFwLndyYXAoaGVscF90ZXh0LCBzZWxmLmhlbHBfd2lkdGgpCiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiUqcyVzXG4iICUgKGluZGVudF9maXJzdCwgIiIsIGhlbHBfbGluZXNbMF0pKQogICAgICAgICAgICByZXN1bHQuZXh0ZW5kKFsiJSpzJXNcbiIgJSAoc2VsZi5oZWxwX3Bvc2l0aW9uLCAiIiwgbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gaGVscF9saW5lc1sxOl1dKQogICAgICAgIGVsaWYgb3B0c1stMV0gIT0gIlxuIjoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiXG4iKQogICAgICAgIHJldHVybiAiIi5qb2luKHJlc3VsdCkKCiAgICBkZWYgc3RvcmVfb3B0aW9uX3N0cmluZ3Moc2VsZiwgcGFyc2VyKToKICAgICAgICBzZWxmLmluZGVudCgpCiAgICAgICAgbWF4X2xlbiA9IDAKICAgICAgICBmb3Igb3B0IGluIHBhcnNlci5vcHRpb25fbGlzdDoKICAgICAgICAgICAgc3RyaW5ncyA9IHNlbGYuZm9ybWF0X29wdGlvbl9zdHJpbmdzKG9wdCkKICAgICAgICAgICAgc2VsZi5vcHRpb25fc3RyaW5nc1tvcHRdID0gc3RyaW5ncwogICAgICAgICAgICBtYXhfbGVuID0gbWF4KG1heF9sZW4sIGxlbihzdHJpbmdzKSArIHNlbGYuY3VycmVudF9pbmRlbnQpCiAgICAgICAgc2VsZi5pbmRlbnQoKQogICAgICAgIGZvciBncm91cCBpbiBwYXJzZXIub3B0aW9uX2dyb3VwczoKICAgICAgICAgICAgZm9yIG9wdCBpbiBncm91cC5vcHRpb25fbGlzdDoKICAgICAgICAgICAgICAgIHN0cmluZ3MgPSBzZWxmLmZvcm1hdF9vcHRpb25fc3RyaW5ncyhvcHQpCiAgICAgICAgICAgICAgICBzZWxmLm9wdGlvbl9zdHJpbmdzW29wdF0gPSBzdHJpbmdzCiAgICAgICAgICAgICAgICBtYXhfbGVuID0gbWF4KG1heF9sZW4sIGxlbihzdHJpbmdzKSArIHNlbGYuY3VycmVudF9pbmRlbnQpCiAgICAgICAgc2VsZi5kZWRlbnQoKQogICAgICAgIHNlbGYuZGVkZW50KCkKICAgICAgICBzZWxmLmhlbHBfcG9zaXRpb24gPSBtaW4obWF4X2xlbiArIDIsIHNlbGYubWF4X2hlbHBfcG9zaXRpb24pCiAgICAgICAgc2VsZi5oZWxwX3dpZHRoID0gbWF4KHNlbGYud2lkdGggLSBzZWxmLmhlbHBfcG9zaXRpb24sIDExKQoKICAgIGRlZiBmb3JtYXRfb3B0aW9uX3N0cmluZ3Moc2VsZiwgb3B0aW9uKToKICAgICAgICAiIiJSZXR1cm4gYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBvcHRpb24gc3RyaW5ncyAmIG1ldGF2YXJpYWJsZXMuIiIiCiAgICAgICAgaWYgb3B0aW9uLnRha2VzX3ZhbHVlKCk6CiAgICAgICAgICAgIG1ldGF2YXIgPSBvcHRpb24ubWV0YXZhciBvciBvcHRpb24uZGVzdC51cHBlcigpCiAgICAgICAgICAgIHNob3J0X29wdHMgPSBbc2VsZi5fc2hvcnRfb3B0X2ZtdCAlIChzb3B0LCBtZXRhdmFyKQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzb3B0IGluIG9wdGlvbi5fc2hvcnRfb3B0c10KICAgICAgICAgICAgbG9uZ19vcHRzID0gW3NlbGYuX2xvbmdfb3B0X2ZtdCAlIChsb3B0LCBtZXRhdmFyKQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxvcHQgaW4gb3B0aW9uLl9sb25nX29wdHNdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2hvcnRfb3B0cyA9IG9wdGlvbi5fc2hvcnRfb3B0cwogICAgICAgICAgICBsb25nX29wdHMgPSBvcHRpb24uX2xvbmdfb3B0cwoKICAgICAgICBpZiBzZWxmLnNob3J0X2ZpcnN0OgogICAgICAgICAgICBvcHRzID0gc2hvcnRfb3B0cyArIGxvbmdfb3B0cwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9wdHMgPSBsb25nX29wdHMgKyBzaG9ydF9vcHRzCgogICAgICAgIHJldHVybiAiLCAiLmpvaW4ob3B0cykKCmNsYXNzIEluZGVudGVkSGVscEZvcm1hdHRlciAoSGVscEZvcm1hdHRlcik6CiAgICAiIiJGb3JtYXQgaGVscCB3aXRoIGluZGVudGVkIHNlY3Rpb24gYm9kaWVzLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgaW5kZW50X2luY3JlbWVudD0yLAogICAgICAgICAgICAgICAgIG1heF9oZWxwX3Bvc2l0aW9uPTI0LAogICAgICAgICAgICAgICAgIHdpZHRoPU5vbmUsCiAgICAgICAgICAgICAgICAgc2hvcnRfZmlyc3Q9MSk6CiAgICAgICAgSGVscEZvcm1hdHRlci5fX2luaXRfXygKICAgICAgICAgICAgc2VsZiwgaW5kZW50X2luY3JlbWVudCwgbWF4X2hlbHBfcG9zaXRpb24sIHdpZHRoLCBzaG9ydF9maXJzdCkKCiAgICBkZWYgZm9ybWF0X3VzYWdlKHNlbGYsIHVzYWdlKToKICAgICAgICByZXR1cm4gXygiVXNhZ2U6ICVzXG4iKSAlIHVzYWdlCgogICAgZGVmIGZvcm1hdF9oZWFkaW5nKHNlbGYsIGhlYWRpbmcpOgogICAgICAgIHJldHVybiAiJSpzJXM6XG4iICUgKHNlbGYuY3VycmVudF9pbmRlbnQsICIiLCBoZWFkaW5nKQoKCmNsYXNzIFRpdGxlZEhlbHBGb3JtYXR0ZXIgKEhlbHBGb3JtYXR0ZXIpOgogICAgIiIiRm9ybWF0IGhlbHAgd2l0aCB1bmRlcmxpbmVkIHNlY3Rpb24gaGVhZGVycy4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgIGluZGVudF9pbmNyZW1lbnQ9MCwKICAgICAgICAgICAgICAgICBtYXhfaGVscF9wb3NpdGlvbj0yNCwKICAgICAgICAgICAgICAgICB3aWR0aD1Ob25lLAogICAgICAgICAgICAgICAgIHNob3J0X2ZpcnN0PTApOgogICAgICAgIEhlbHBGb3JtYXR0ZXIuX19pbml0X18gKAogICAgICAgICAgICBzZWxmLCBpbmRlbnRfaW5jcmVtZW50LCBtYXhfaGVscF9wb3NpdGlvbiwgd2lkdGgsIHNob3J0X2ZpcnN0KQoKICAgIGRlZiBmb3JtYXRfdXNhZ2Uoc2VsZiwgdXNhZ2UpOgogICAgICAgIHJldHVybiAiJXMgICVzXG4iICUgKHNlbGYuZm9ybWF0X2hlYWRpbmcoXygiVXNhZ2UiKSksIHVzYWdlKQoKICAgIGRlZiBmb3JtYXRfaGVhZGluZyhzZWxmLCBoZWFkaW5nKToKICAgICAgICByZXR1cm4gIiVzXG4lc1xuIiAlIChoZWFkaW5nLCAiPS0iW3NlbGYubGV2ZWxdICogbGVuKGhlYWRpbmcpKQoKCmRlZiBfcGFyc2VfbnVtKHZhbCwgdHlwZSk6CiAgICBpZiB2YWxbOjJdLmxvd2VyKCkgPT0gIjB4IjogICAgICAgICAjIGhleGFkZWNpbWFsCiAgICAgICAgcmFkaXggPSAxNgogICAgZWxpZiB2YWxbOjJdLmxvd2VyKCkgPT0gIjBiIjogICAgICAgIyBiaW5hcnkKICAgICAgICByYWRpeCA9IDIKICAgICAgICB2YWwgPSB2YWxbMjpdIG9yICIwIiAgICAgICAgICAgICMgaGF2ZSB0byByZW1vdmUgIjBiIiBwcmVmaXgKICAgIGVsaWYgdmFsWzoxXSA9PSAiMCI6ICAgICAgICAgICAgICAgICMgb2N0YWwKICAgICAgICByYWRpeCA9IDgKICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVjaW1hbAogICAgICAgIHJhZGl4ID0gMTAKCiAgICByZXR1cm4gdHlwZSh2YWwsIHJhZGl4KQoKZGVmIF9wYXJzZV9pbnQodmFsKToKICAgIHJldHVybiBfcGFyc2VfbnVtKHZhbCwgaW50KQoKX2J1aWx0aW5fY3Z0ID0geyAiaW50IiA6IChfcGFyc2VfaW50LCBfKCJpbnRlZ2VyIikpLAogICAgICAgICAgICAgICAgICJsb25nIiA6IChfcGFyc2VfaW50LCBfKCJpbnRlZ2VyIikpLAogICAgICAgICAgICAgICAgICJmbG9hdCIgOiAoZmxvYXQsIF8oImZsb2F0aW5nLXBvaW50IikpLAogICAgICAgICAgICAgICAgICJjb21wbGV4IiA6IChjb21wbGV4LCBfKCJjb21wbGV4IikpIH0KCmRlZiBjaGVja19idWlsdGluKG9wdGlvbiwgb3B0LCB2YWx1ZSk6CiAgICAoY3Z0LCB3aGF0KSA9IF9idWlsdGluX2N2dFtvcHRpb24udHlwZV0KICAgIHRyeToKICAgICAgICByZXR1cm4gY3Z0KHZhbHVlKQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgcmFpc2UgT3B0aW9uVmFsdWVFcnJvcigKICAgICAgICAgICAgXygib3B0aW9uICVzOiBpbnZhbGlkICVzIHZhbHVlOiAlciIpICUgKG9wdCwgd2hhdCwgdmFsdWUpKQoKZGVmIGNoZWNrX2Nob2ljZShvcHRpb24sIG9wdCwgdmFsdWUpOgogICAgaWYgdmFsdWUgaW4gb3B0aW9uLmNob2ljZXM6CiAgICAgICAgcmV0dXJuIHZhbHVlCiAgICBlbHNlOgogICAgICAgIGNob2ljZXMgPSAiLCAiLmpvaW4obWFwKHJlcHIsIG9wdGlvbi5jaG9pY2VzKSkKICAgICAgICByYWlzZSBPcHRpb25WYWx1ZUVycm9yKAogICAgICAgICAgICBfKCJvcHRpb24gJXM6IGludmFsaWQgY2hvaWNlOiAlciAoY2hvb3NlIGZyb20gJXMpIikKICAgICAgICAgICAgJSAob3B0LCB2YWx1ZSwgY2hvaWNlcykpCgojIE5vdCBzdXBwbHlpbmcgYSBkZWZhdWx0IGlzIGRpZmZlcmVudCBmcm9tIGEgZGVmYXVsdCBvZiBOb25lLAojIHNvIHdlIG5lZWQgYW4gZXhwbGljaXQgIm5vdCBzdXBwbGllZCIgdmFsdWUuCk5PX0RFRkFVTFQgPSAoIk5PIiwgIkRFRkFVTFQiKQoKCmNsYXNzIE9wdGlvbjoKICAgICIiIgogICAgSW5zdGFuY2UgYXR0cmlidXRlczoKICAgICAgX3Nob3J0X29wdHMgOiBbc3RyaW5nXQogICAgICBfbG9uZ19vcHRzIDogW3N0cmluZ10KCiAgICAgIGFjdGlvbiA6IHN0cmluZwogICAgICB0eXBlIDogc3RyaW5nCiAgICAgIGRlc3QgOiBzdHJpbmcKICAgICAgZGVmYXVsdCA6IGFueQogICAgICBuYXJncyA6IGludAogICAgICBjb25zdCA6IGFueQogICAgICBjaG9pY2VzIDogW3N0cmluZ10KICAgICAgY2FsbGJhY2sgOiBmdW5jdGlvbgogICAgICBjYWxsYmFja19hcmdzIDogKGFueSopCiAgICAgIGNhbGxiYWNrX2t3YXJncyA6IHsgc3RyaW5nIDogYW55IH0KICAgICAgaGVscCA6IHN0cmluZwogICAgICBtZXRhdmFyIDogc3RyaW5nCiAgICAiIiIKCiAgICAjIFRoZSBsaXN0IG9mIGluc3RhbmNlIGF0dHJpYnV0ZXMgdGhhdCBtYXkgYmUgc2V0IHRocm91Z2gKICAgICMga2V5d29yZCBhcmdzIHRvIHRoZSBjb25zdHJ1Y3Rvci4KICAgIEFUVFJTID0gWydhY3Rpb24nLAogICAgICAgICAgICAgJ3R5cGUnLAogICAgICAgICAgICAgJ2Rlc3QnLAogICAgICAgICAgICAgJ2RlZmF1bHQnLAogICAgICAgICAgICAgJ25hcmdzJywKICAgICAgICAgICAgICdjb25zdCcsCiAgICAgICAgICAgICAnY2hvaWNlcycsCiAgICAgICAgICAgICAnY2FsbGJhY2snLAogICAgICAgICAgICAgJ2NhbGxiYWNrX2FyZ3MnLAogICAgICAgICAgICAgJ2NhbGxiYWNrX2t3YXJncycsCiAgICAgICAgICAgICAnaGVscCcsCiAgICAgICAgICAgICAnbWV0YXZhciddCgogICAgIyBUaGUgc2V0IG9mIGFjdGlvbnMgYWxsb3dlZCBieSBvcHRpb24gcGFyc2Vycy4gIEV4cGxpY2l0bHkgbGlzdGVkCiAgICAjIGhlcmUgc28gdGhlIGNvbnN0cnVjdG9yIGNhbiB2YWxpZGF0ZSBpdHMgYXJndW1lbnRzLgogICAgQUNUSU9OUyA9ICgic3RvcmUiLAogICAgICAgICAgICAgICAic3RvcmVfY29uc3QiLAogICAgICAgICAgICAgICAic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICJzdG9yZV9mYWxzZSIsCiAgICAgICAgICAgICAgICJhcHBlbmQiLAogICAgICAgICAgICAgICAiYXBwZW5kX2NvbnN0IiwKICAgICAgICAgICAgICAgImNvdW50IiwKICAgICAgICAgICAgICAgImNhbGxiYWNrIiwKICAgICAgICAgICAgICAgImhlbHAiLAogICAgICAgICAgICAgICAidmVyc2lvbiIpCgogICAgIyBUaGUgc2V0IG9mIGFjdGlvbnMgdGhhdCBpbnZvbHZlIHN0b3JpbmcgYSB2YWx1ZSBzb21ld2hlcmU7CiAgICAjIGFsc28gbGlzdGVkIGp1c3QgZm9yIGNvbnN0cnVjdG9yIGFyZ3VtZW50IHZhbGlkYXRpb24uICAoSWYKICAgICMgdGhlIGFjdGlvbiBpcyBvbmUgb2YgdGhlc2UsIHRoZXJlIG11c3QgYmUgYSBkZXN0aW5hdGlvbi4pCiAgICBTVE9SRV9BQ1RJT05TID0gKCJzdG9yZSIsCiAgICAgICAgICAgICAgICAgICAgICJzdG9yZV9jb25zdCIsCiAgICAgICAgICAgICAgICAgICAgICJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgInN0b3JlX2ZhbHNlIiwKICAgICAgICAgICAgICAgICAgICAgImFwcGVuZCIsCiAgICAgICAgICAgICAgICAgICAgICJhcHBlbmRfY29uc3QiLAogICAgICAgICAgICAgICAgICAgICAiY291bnQiKQoKICAgICMgVGhlIHNldCBvZiBhY3Rpb25zIGZvciB3aGljaCBpdCBtYWtlcyBzZW5zZSB0byBzdXBwbHkgYSB2YWx1ZQogICAgIyB0eXBlLCBpZS4gd2hpY2ggbWF5IGNvbnN1bWUgYW4gYXJndW1lbnQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgogICAgVFlQRURfQUNUSU9OUyA9ICgic3RvcmUiLAogICAgICAgICAgICAgICAgICAgICAiYXBwZW5kIiwKICAgICAgICAgICAgICAgICAgICAgImNhbGxiYWNrIikKCiAgICAjIFRoZSBzZXQgb2YgYWN0aW9ucyB3aGljaCAqcmVxdWlyZSogYSB2YWx1ZSB0eXBlLCBpZS4gdGhhdAogICAgIyBhbHdheXMgY29uc3VtZSBhbiBhcmd1bWVudCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAgICBBTFdBWVNfVFlQRURfQUNUSU9OUyA9ICgic3RvcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwcGVuZCIpCgogICAgIyBUaGUgc2V0IG9mIGFjdGlvbnMgd2hpY2ggdGFrZSBhICdjb25zdCcgYXR0cmlidXRlLgogICAgQ09OU1RfQUNUSU9OUyA9ICgic3RvcmVfY29uc3QiLAogICAgICAgICAgICAgICAgICAgICAiYXBwZW5kX2NvbnN0IikKCiAgICAjIFRoZSBzZXQgb2Yga25vd24gdHlwZXMgZm9yIG9wdGlvbiBwYXJzZXJzLiAgQWdhaW4sIGxpc3RlZCBoZXJlIGZvcgogICAgIyBjb25zdHJ1Y3RvciBhcmd1bWVudCB2YWxpZGF0aW9uLgogICAgVFlQRVMgPSAoInN0cmluZyIsICJpbnQiLCAibG9uZyIsICJmbG9hdCIsICJjb21wbGV4IiwgImNob2ljZSIpCgogICAgIyBEaWN0aW9uYXJ5IG9mIGFyZ3VtZW50IGNoZWNraW5nIGZ1bmN0aW9ucywgd2hpY2ggY29udmVydCBhbmQKICAgICMgdmFsaWRhdGUgb3B0aW9uIGFyZ3VtZW50cyBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbiB0eXBlLgogICAgIwogICAgIyBTaWduYXR1cmUgb2YgY2hlY2tpbmcgZnVuY3Rpb25zIGlzOgogICAgIyAgIGNoZWNrKG9wdGlvbiA6IE9wdGlvbiwgb3B0IDogc3RyaW5nLCB2YWx1ZSA6IHN0cmluZykgLT4gYW55CiAgICAjIHdoZXJlCiAgICAjICAgb3B0aW9uIGlzIHRoZSBPcHRpb24gaW5zdGFuY2UgY2FsbGluZyB0aGUgY2hlY2tlcgogICAgIyAgIG9wdCBpcyB0aGUgYWN0dWFsIG9wdGlvbiBzZWVuIG9uIHRoZSBjb21tYW5kLWxpbmUKICAgICMgICAgIChlZy4gIi1hIiwgIi0tZmlsZSIpCiAgICAjICAgdmFsdWUgaXMgdGhlIG9wdGlvbiBhcmd1bWVudCBzZWVuIG9uIHRoZSBjb21tYW5kLWxpbmUKICAgICMKICAgICMgVGhlIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgaW4gdGhlIGFwcHJvcHJpYXRlIFB5dGhvbiB0eXBlCiAgICAjIGZvciBvcHRpb24udHlwZSAtLSBlZy4gYW4gaW50ZWdlciBpZiBvcHRpb24udHlwZSA9PSAiaW50Ii4KICAgICMKICAgICMgSWYgbm8gY2hlY2tlciBpcyBkZWZpbmVkIGZvciBhIHR5cGUsIGFyZ3VtZW50cyB3aWxsIGJlCiAgICAjIHVuY2hlY2tlZCBhbmQgcmVtYWluIHN0cmluZ3MuCiAgICBUWVBFX0NIRUNLRVIgPSB7ICJpbnQiICAgIDogY2hlY2tfYnVpbHRpbiwKICAgICAgICAgICAgICAgICAgICAgImxvbmciICAgOiBjaGVja19idWlsdGluLAogICAgICAgICAgICAgICAgICAgICAiZmxvYXQiICA6IGNoZWNrX2J1aWx0aW4sCiAgICAgICAgICAgICAgICAgICAgICJjb21wbGV4IjogY2hlY2tfYnVpbHRpbiwKICAgICAgICAgICAgICAgICAgICAgImNob2ljZSIgOiBjaGVja19jaG9pY2UsCiAgICAgICAgICAgICAgICAgICB9CgoKICAgICMgQ0hFQ0tfTUVUSE9EUyBpcyBhIGxpc3Qgb2YgdW5ib3VuZCBtZXRob2Qgb2JqZWN0czsgdGhleSBhcmUgY2FsbGVkCiAgICAjIGJ5IHRoZSBjb25zdHJ1Y3RvciwgaW4gb3JkZXIsIGFmdGVyIGFsbCBhdHRyaWJ1dGVzIGFyZQogICAgIyBpbml0aWFsaXplZC4gIFRoZSBsaXN0IGlzIGNyZWF0ZWQgYW5kIGZpbGxlZCBpbiBsYXRlciwgYWZ0ZXIgYWxsCiAgICAjIHRoZSBtZXRob2RzIGFyZSBhY3R1YWxseSBkZWZpbmVkLiAgKEkganVzdCBwdXQgaXQgaGVyZSBiZWNhdXNlIEkKICAgICMgbGlrZSB0byBkZWZpbmUgYW5kIGRvY3VtZW50IGFsbCBjbGFzcyBhdHRyaWJ1dGVzIGluIHRoZSBzYW1lCiAgICAjIHBsYWNlLikgIFN1YmNsYXNzZXMgdGhhdCBhZGQgYW5vdGhlciBfY2hlY2tfKigpIG1ldGhvZCBzaG91bGQKICAgICMgZGVmaW5lIHRoZWlyIG93biBDSEVDS19NRVRIT0RTIGxpc3QgdGhhdCBhZGRzIHRoZWlyIGNoZWNrIG1ldGhvZAogICAgIyB0byB0aG9zZSBmcm9tIHRoaXMgY2xhc3MuCiAgICBDSEVDS19NRVRIT0RTID0gTm9uZQoKCiAgICAjIC0tIENvbnN0cnVjdG9yL2luaXRpYWxpemF0aW9uIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqb3B0cywgKiphdHRycyk6CiAgICAgICAgIyBTZXQgX3Nob3J0X29wdHMsIF9sb25nX29wdHMgYXR0cnMgZnJvbSAnb3B0cycgdHVwbGUuCiAgICAgICAgIyBIYXZlIHRvIGJlIHNldCBub3csIGluIGNhc2Ugbm8gb3B0aW9uIHN0cmluZ3MgYXJlIHN1cHBsaWVkLgogICAgICAgIHNlbGYuX3Nob3J0X29wdHMgPSBbXQogICAgICAgIHNlbGYuX2xvbmdfb3B0cyA9IFtdCiAgICAgICAgb3B0cyA9IHNlbGYuX2NoZWNrX29wdF9zdHJpbmdzKG9wdHMpCiAgICAgICAgc2VsZi5fc2V0X29wdF9zdHJpbmdzKG9wdHMpCgogICAgICAgICMgU2V0IGFsbCBvdGhlciBhdHRycyAoYWN0aW9uLCB0eXBlLCBldGMuKSBmcm9tICdhdHRycycgZGljdAogICAgICAgIHNlbGYuX3NldF9hdHRycyhhdHRycykKCiAgICAgICAgIyBDaGVjayBhbGwgdGhlIGF0dHJpYnV0ZXMgd2UganVzdCBzZXQuICBUaGVyZSBhcmUgbG90cyBvZgogICAgICAgICMgY29tcGxpY2F0ZWQgaW50ZXJkZXBlbmRlbmNpZXMsIGJ1dCBsdWNraWx5IHRoZXkgY2FuIGJlIGZhcm1lZAogICAgICAgICMgb3V0IHRvIHRoZSBfY2hlY2tfKigpIG1ldGhvZHMgbGlzdGVkIGluIENIRUNLX01FVEhPRFMgLS0gd2hpY2gKICAgICAgICAjIGNvdWxkIGJlIGhhbmR5IGZvciBzdWJjbGFzc2VzISAgVGhlIG9uZSB0aGluZyB0aGVzZSBhbGwgc2hhcmUKICAgICAgICAjIGlzIHRoYXQgdGhleSByYWlzZSBPcHRpb25FcnJvciBpZiB0aGV5IGRpc2NvdmVyIGEgcHJvYmxlbS4KICAgICAgICBmb3IgY2hlY2tlciBpbiBzZWxmLkNIRUNLX01FVEhPRFM6CiAgICAgICAgICAgIGNoZWNrZXIoc2VsZikKCiAgICBkZWYgX2NoZWNrX29wdF9zdHJpbmdzKHNlbGYsIG9wdHMpOgogICAgICAgICMgRmlsdGVyIG91dCBOb25lIGJlY2F1c2UgZWFybHkgdmVyc2lvbnMgb2YgT3B0aWsgaGFkIGV4YWN0bHkKICAgICAgICAjIG9uZSBzaG9ydCBvcHRpb24gYW5kIG9uZSBsb25nIG9wdGlvbiwgZWl0aGVyIG9mIHdoaWNoCiAgICAgICAgIyBjb3VsZCBiZSBOb25lLgogICAgICAgIG9wdHMgPSBbb3B0IGZvciBvcHQgaW4gb3B0cyBpZiBvcHRdCiAgICAgICAgaWYgbm90IG9wdHM6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXQgbGVhc3Qgb25lIG9wdGlvbiBzdHJpbmcgbXVzdCBiZSBzdXBwbGllZCIpCiAgICAgICAgcmV0dXJuIG9wdHMKCiAgICBkZWYgX3NldF9vcHRfc3RyaW5ncyhzZWxmLCBvcHRzKToKICAgICAgICBmb3Igb3B0IGluIG9wdHM6CiAgICAgICAgICAgIGlmIGxlbihvcHQpIDwgMjoKICAgICAgICAgICAgICAgIHJhaXNlIE9wdGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG9wdGlvbiBzdHJpbmcgJXI6ICIKICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhdCBsZWFzdCB0d28gY2hhcmFjdGVycyBsb25nIiAlIG9wdCwgc2VsZikKICAgICAgICAgICAgZWxpZiBsZW4ob3B0KSA9PSAyOgogICAgICAgICAgICAgICAgaWYgbm90IChvcHRbMF0gPT0gIi0iIGFuZCBvcHRbMV0gIT0gIi0iKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBPcHRpb25FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc2hvcnQgb3B0aW9uIHN0cmluZyAlcjogIgogICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBvZiB0aGUgZm9ybSAteCwgKHggYW55IG5vbi1kYXNoIGNoYXIpIiAlIG9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKICAgICAgICAgICAgICAgIHNlbGYuX3Nob3J0X29wdHMuYXBwZW5kKG9wdCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIG5vdCAob3B0WzA6Ml0gPT0gIi0tIiBhbmQgb3B0WzJdICE9ICItIik6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgT3B0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxvbmcgb3B0aW9uIHN0cmluZyAlcjogIgogICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBzdGFydCB3aXRoIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIgJSBvcHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCiAgICAgICAgICAgICAgICBzZWxmLl9sb25nX29wdHMuYXBwZW5kKG9wdCkKCiAgICBkZWYgX3NldF9hdHRycyhzZWxmLCBhdHRycyk6CiAgICAgICAgZm9yIGF0dHIgaW4gc2VsZi5BVFRSUzoKICAgICAgICAgICAgaWYgYXR0ciBpbiBhdHRyczoKICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgYXR0ciwgYXR0cnNbYXR0cl0pCiAgICAgICAgICAgICAgICBkZWwgYXR0cnNbYXR0cl0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIGF0dHIgPT0gJ2RlZmF1bHQnOgogICAgICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgYXR0ciwgTk9fREVGQVVMVCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyLCBOb25lKQogICAgICAgIGlmIGF0dHJzOgogICAgICAgICAgICBhdHRycyA9IHNvcnRlZChhdHRycy5rZXlzKCkpCiAgICAgICAgICAgIHJhaXNlIE9wdGlvbkVycm9yKAogICAgICAgICAgICAgICAgImludmFsaWQga2V5d29yZCBhcmd1bWVudHM6ICVzIiAlICIsICIuam9pbihhdHRycyksCiAgICAgICAgICAgICAgICBzZWxmKQoKCiAgICAjIC0tIENvbnN0cnVjdG9yIHZhbGlkYXRpb24gbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGRlZiBfY2hlY2tfYWN0aW9uKHNlbGYpOgogICAgICAgIGlmIHNlbGYuYWN0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuYWN0aW9uID0gInN0b3JlIgogICAgICAgIGVsaWYgc2VsZi5hY3Rpb24gbm90IGluIHNlbGYuQUNUSU9OUzoKICAgICAgICAgICAgcmFpc2UgT3B0aW9uRXJyb3IoImludmFsaWQgYWN0aW9uOiAlciIgJSBzZWxmLmFjdGlvbiwgc2VsZikKCiAgICBkZWYgX2NoZWNrX3R5cGUoc2VsZik6CiAgICAgICAgaWYgc2VsZi50eXBlIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYuYWN0aW9uIGluIHNlbGYuQUxXQVlTX1RZUEVEX0FDVElPTlM6CiAgICAgICAgICAgICAgICBpZiBzZWxmLmNob2ljZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIyBUaGUgImNob2ljZXMiIGF0dHJpYnV0ZSBpbXBsaWVzICJjaG9pY2UiIHR5cGUuCiAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlID0gImNob2ljZSIKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBObyB0eXBlIGdpdmVuPyAgInN0cmluZyIgaXMgdGhlIG1vc3Qgc2Vuc2libGUgZGVmYXVsdC4KICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUgPSAic3RyaW5nIgogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgQWxsb3cgdHlwZSBvYmplY3RzIG9yIGJ1aWx0aW4gdHlwZSBjb252ZXJzaW9uIGZ1bmN0aW9ucwogICAgICAgICAgICAjIChpbnQsIHN0ciwgZXRjLikgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlaXIgbmFtZXMuCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi50eXBlLCB0eXBlKToKICAgICAgICAgICAgICAgIHNlbGYudHlwZSA9IHNlbGYudHlwZS5fX25hbWVfXwoKICAgICAgICAgICAgaWYgc2VsZi50eXBlID09ICJzdHIiOgogICAgICAgICAgICAgICAgc2VsZi50eXBlID0gInN0cmluZyIKCiAgICAgICAgICAgIGlmIHNlbGYudHlwZSBub3QgaW4gc2VsZi5UWVBFUzoKICAgICAgICAgICAgICAgIHJhaXNlIE9wdGlvbkVycm9yKCJpbnZhbGlkIG9wdGlvbiB0eXBlOiAlciIgJSBzZWxmLnR5cGUsIHNlbGYpCiAgICAgICAgICAgIGlmIHNlbGYuYWN0aW9uIG5vdCBpbiBzZWxmLlRZUEVEX0FDVElPTlM6CiAgICAgICAgICAgICAgICByYWlzZSBPcHRpb25FcnJvcigKICAgICAgICAgICAgICAgICAgICAibXVzdCBub3Qgc3VwcGx5IGEgdHlwZSBmb3IgYWN0aW9uICVyIiAlIHNlbGYuYWN0aW9uLCBzZWxmKQoKICAgIGRlZiBfY2hlY2tfY2hvaWNlKHNlbGYpOgogICAgICAgIGlmIHNlbGYudHlwZSA9PSAiY2hvaWNlIjoKICAgICAgICAgICAgaWYgc2VsZi5jaG9pY2VzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBPcHRpb25FcnJvcigKICAgICAgICAgICAgICAgICAgICAibXVzdCBzdXBwbHkgYSBsaXN0IG9mIGNob2ljZXMgZm9yIHR5cGUgJ2Nob2ljZSciLCBzZWxmKQogICAgICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNlbGYuY2hvaWNlcywgKHR1cGxlLCBsaXN0KSk6CiAgICAgICAgICAgICAgICByYWlzZSBPcHRpb25FcnJvcigKICAgICAgICAgICAgICAgICAgICAiY2hvaWNlcyBtdXN0IGJlIGEgbGlzdCBvZiBzdHJpbmdzICgnJXMnIHN1cHBsaWVkKSIKICAgICAgICAgICAgICAgICAgICAlIHN0cih0eXBlKHNlbGYuY2hvaWNlcykpLnNwbGl0KCInIilbMV0sIHNlbGYpCiAgICAgICAgZWxpZiBzZWxmLmNob2ljZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIE9wdGlvbkVycm9yKAogICAgICAgICAgICAgICAgIm11c3Qgbm90IHN1cHBseSBjaG9pY2VzIGZvciB0eXBlICVyIiAlIHNlbGYudHlwZSwgc2VsZikKCiAgICBkZWYgX2NoZWNrX2Rlc3Qoc2VsZik6CiAgICAgICAgIyBObyBkZXN0aW5hdGlvbiBnaXZlbiwgYW5kIHdlIG5lZWQgb25lIGZvciB0aGlzIGFjdGlvbi4gIFRoZQogICAgICAgICMgc2VsZi50eXBlIGNoZWNrIGlzIGZvciBjYWxsYmFja3MgdGhhdCB0YWtlIGEgdmFsdWUuCiAgICAgICAgdGFrZXNfdmFsdWUgPSAoc2VsZi5hY3Rpb24gaW4gc2VsZi5TVE9SRV9BQ1RJT05TIG9yCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlIGlzIG5vdCBOb25lKQogICAgICAgIGlmIHNlbGYuZGVzdCBpcyBOb25lIGFuZCB0YWtlc192YWx1ZToKCiAgICAgICAgICAgICMgR2xlYW4gYSBkZXN0aW5hdGlvbiBmcm9tIHRoZSBmaXJzdCBsb25nIG9wdGlvbiBzdHJpbmcsCiAgICAgICAgICAgICMgb3IgZnJvbSB0aGUgZmlyc3Qgc2hvcnQgb3B0aW9uIHN0cmluZyBpZiBubyBsb25nIG9wdGlvbnMuCiAgICAgICAgICAgIGlmIHNlbGYuX2xvbmdfb3B0czoKICAgICAgICAgICAgICAgICMgZWcuICItLWZvby1iYXIiIC0+ICJmb29fYmFyIgogICAgICAgICAgICAgICAgc2VsZi5kZXN0ID0gc2VsZi5fbG9uZ19vcHRzWzBdWzI6XS5yZXBsYWNlKCctJywgJ18nKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5kZXN0ID0gc2VsZi5fc2hvcnRfb3B0c1swXVsxXQoKICAgIGRlZiBfY2hlY2tfY29uc3Qoc2VsZik6CiAgICAgICAgaWYgc2VsZi5hY3Rpb24gbm90IGluIHNlbGYuQ09OU1RfQUNUSU9OUyBhbmQgc2VsZi5jb25zdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgT3B0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAiJ2NvbnN0JyBtdXN0IG5vdCBiZSBzdXBwbGllZCBmb3IgYWN0aW9uICVyIiAlIHNlbGYuYWN0aW9uLAogICAgICAgICAgICAgICAgc2VsZikKCiAgICBkZWYgX2NoZWNrX25hcmdzKHNlbGYpOgogICAgICAgIGlmIHNlbGYuYWN0aW9uIGluIHNlbGYuVFlQRURfQUNUSU9OUzoKICAgICAgICAgICAgaWYgc2VsZi5uYXJncyBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5uYXJncyA9IDEKICAgICAgICBlbGlmIHNlbGYubmFyZ3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIE9wdGlvbkVycm9yKAogICAgICAgICAgICAgICAgIiduYXJncycgbXVzdCBub3QgYmUgc3VwcGxpZWQgZm9yIGFjdGlvbiAlciIgJSBzZWxmLmFjdGlvbiwKICAgICAgICAgICAgICAgIHNlbGYpCgogICAgZGVmIF9jaGVja19jYWxsYmFjayhzZWxmKToKICAgICAgICBpZiBzZWxmLmFjdGlvbiA9PSAiY2FsbGJhY2siOgogICAgICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5jYWxsYmFjayk6CiAgICAgICAgICAgICAgICByYWlzZSBPcHRpb25FcnJvcigKICAgICAgICAgICAgICAgICAgICAiY2FsbGJhY2sgbm90IGNhbGxhYmxlOiAlciIgJSBzZWxmLmNhbGxiYWNrLCBzZWxmKQogICAgICAgICAgICBpZiAoc2VsZi5jYWxsYmFja19hcmdzIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2Uoc2VsZi5jYWxsYmFja19hcmdzLCB0dXBsZSkpOgogICAgICAgICAgICAgICAgcmFpc2UgT3B0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgImNhbGxiYWNrX2FyZ3MsIGlmIHN1cHBsaWVkLCBtdXN0IGJlIGEgdHVwbGU6IG5vdCAlciIKICAgICAgICAgICAgICAgICAgICAlIHNlbGYuY2FsbGJhY2tfYXJncywgc2VsZikKICAgICAgICAgICAgaWYgKHNlbGYuY2FsbGJhY2tfa3dhcmdzIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2Uoc2VsZi5jYWxsYmFja19rd2FyZ3MsIGRpY3QpKToKICAgICAgICAgICAgICAgIHJhaXNlIE9wdGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICJjYWxsYmFja19rd2FyZ3MsIGlmIHN1cHBsaWVkLCBtdXN0IGJlIGEgZGljdDogbm90ICVyIgogICAgICAgICAgICAgICAgICAgICUgc2VsZi5jYWxsYmFja19rd2FyZ3MsIHNlbGYpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc2VsZi5jYWxsYmFjayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIE9wdGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICJjYWxsYmFjayBzdXBwbGllZCAoJXIpIGZvciBub24tY2FsbGJhY2sgb3B0aW9uIgogICAgICAgICAgICAgICAgICAgICUgc2VsZi5jYWxsYmFjaywgc2VsZikKICAgICAgICAgICAgaWYgc2VsZi5jYWxsYmFja19hcmdzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgT3B0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgImNhbGxiYWNrX2FyZ3Mgc3VwcGxpZWQgZm9yIG5vbi1jYWxsYmFjayBvcHRpb24iLCBzZWxmKQogICAgICAgICAgICBpZiBzZWxmLmNhbGxiYWNrX2t3YXJncyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIE9wdGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICJjYWxsYmFja19rd2FyZ3Mgc3VwcGxpZWQgZm9yIG5vbi1jYWxsYmFjayBvcHRpb24iLCBzZWxmKQoKCiAgICBDSEVDS19NRVRIT0RTID0gW19jaGVja19hY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgIF9jaGVja190eXBlLAogICAgICAgICAgICAgICAgICAgICBfY2hlY2tfY2hvaWNlLAogICAgICAgICAgICAgICAgICAgICBfY2hlY2tfZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX2NoZWNrX2NvbnN0LAogICAgICAgICAgICAgICAgICAgICBfY2hlY2tfbmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgIF9jaGVja19jYWxsYmFja10KCgogICAgIyAtLSBNaXNjZWxsYW5lb3VzIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIi8iLmpvaW4oc2VsZi5fc2hvcnRfb3B0cyArIHNlbGYuX2xvbmdfb3B0cykKCiAgICBfX3JlcHJfXyA9IF9yZXByCgogICAgZGVmIHRha2VzX3ZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnR5cGUgaXMgbm90IE5vbmUKCiAgICBkZWYgZ2V0X29wdF9zdHJpbmcoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fbG9uZ19vcHRzOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fbG9uZ19vcHRzWzBdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0X29wdHNbMF0KCgogICAgIyAtLSBQcm9jZXNzaW5nIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBkZWYgY2hlY2tfdmFsdWUoc2VsZiwgb3B0LCB2YWx1ZSk6CiAgICAgICAgY2hlY2tlciA9IHNlbGYuVFlQRV9DSEVDS0VSLmdldChzZWxmLnR5cGUpCiAgICAgICAgaWYgY2hlY2tlciBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gY2hlY2tlcihzZWxmLCBvcHQsIHZhbHVlKQoKICAgIGRlZiBjb252ZXJ0X3ZhbHVlKHNlbGYsIG9wdCwgdmFsdWUpOgogICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBzZWxmLm5hcmdzID09IDE6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jaGVja192YWx1ZShvcHQsIHZhbHVlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKFtzZWxmLmNoZWNrX3ZhbHVlKG9wdCwgdikgZm9yIHYgaW4gdmFsdWVdKQoKICAgIGRlZiBwcm9jZXNzKHNlbGYsIG9wdCwgdmFsdWUsIHZhbHVlcywgcGFyc2VyKToKCiAgICAgICAgIyBGaXJzdCwgY29udmVydCB0aGUgdmFsdWUocykgdG8gdGhlIHJpZ2h0IHR5cGUuICBIb3dsIGlmIGFueQogICAgICAgICMgdmFsdWUocykgYXJlIGJvZ3VzLgogICAgICAgIHZhbHVlID0gc2VsZi5jb252ZXJ0X3ZhbHVlKG9wdCwgdmFsdWUpCgogICAgICAgICMgQW5kIHRoZW4gdGFrZSB3aGF0ZXZlciBhY3Rpb24gaXMgZXhwZWN0ZWQgb2YgdXMuCiAgICAgICAgIyBUaGlzIGlzIGEgc2VwYXJhdGUgbWV0aG9kIHRvIG1ha2UgbGlmZSBlYXNpZXIgZm9yCiAgICAgICAgIyBzdWJjbGFzc2VzIHRvIGFkZCBuZXcgYWN0aW9ucy4KICAgICAgICByZXR1cm4gc2VsZi50YWtlX2FjdGlvbigKICAgICAgICAgICAgc2VsZi5hY3Rpb24sIHNlbGYuZGVzdCwgb3B0LCB2YWx1ZSwgdmFsdWVzLCBwYXJzZXIpCgogICAgZGVmIHRha2VfYWN0aW9uKHNlbGYsIGFjdGlvbiwgZGVzdCwgb3B0LCB2YWx1ZSwgdmFsdWVzLCBwYXJzZXIpOgogICAgICAgIGlmIGFjdGlvbiA9PSAic3RvcmUiOgogICAgICAgICAgICBzZXRhdHRyKHZhbHVlcywgZGVzdCwgdmFsdWUpCiAgICAgICAgZWxpZiBhY3Rpb24gPT0gInN0b3JlX2NvbnN0IjoKICAgICAgICAgICAgc2V0YXR0cih2YWx1ZXMsIGRlc3QsIHNlbGYuY29uc3QpCiAgICAgICAgZWxpZiBhY3Rpb24gPT0gInN0b3JlX3RydWUiOgogICAgICAgICAgICBzZXRhdHRyKHZhbHVlcywgZGVzdCwgVHJ1ZSkKICAgICAgICBlbGlmIGFjdGlvbiA9PSAic3RvcmVfZmFsc2UiOgogICAgICAgICAgICBzZXRhdHRyKHZhbHVlcywgZGVzdCwgRmFsc2UpCiAgICAgICAgZWxpZiBhY3Rpb24gPT0gImFwcGVuZCI6CiAgICAgICAgICAgIHZhbHVlcy5lbnN1cmVfdmFsdWUoZGVzdCwgW10pLmFwcGVuZCh2YWx1ZSkKICAgICAgICBlbGlmIGFjdGlvbiA9PSAiYXBwZW5kX2NvbnN0IjoKICAgICAgICAgICAgdmFsdWVzLmVuc3VyZV92YWx1ZShkZXN0LCBbXSkuYXBwZW5kKHNlbGYuY29uc3QpCiAgICAgICAgZWxpZiBhY3Rpb24gPT0gImNvdW50IjoKICAgICAgICAgICAgc2V0YXR0cih2YWx1ZXMsIGRlc3QsIHZhbHVlcy5lbnN1cmVfdmFsdWUoZGVzdCwgMCkgKyAxKQogICAgICAgIGVsaWYgYWN0aW9uID09ICJjYWxsYmFjayI6CiAgICAgICAgICAgIGFyZ3MgPSBzZWxmLmNhbGxiYWNrX2FyZ3Mgb3IgKCkKICAgICAgICAgICAga3dhcmdzID0gc2VsZi5jYWxsYmFja19rd2FyZ3Mgb3Ige30KICAgICAgICAgICAgc2VsZi5jYWxsYmFjayhzZWxmLCBvcHQsIHZhbHVlLCBwYXJzZXIsICphcmdzLCAqKmt3YXJncykKICAgICAgICBlbGlmIGFjdGlvbiA9PSAiaGVscCI6CiAgICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICAgICAgcGFyc2VyLmV4aXQoKQogICAgICAgIGVsaWYgYWN0aW9uID09ICJ2ZXJzaW9uIjoKICAgICAgICAgICAgcGFyc2VyLnByaW50X3ZlcnNpb24oKQogICAgICAgICAgICBwYXJzZXIuZXhpdCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5rbm93biBhY3Rpb24gJXIiICUgc2VsZi5hY3Rpb24pCgogICAgICAgIHJldHVybiAxCgojIGNsYXNzIE9wdGlvbgoKClNVUFBSRVNTX0hFTFAgPSAiU1VQUFJFU1MiKyJIRUxQIgpTVVBQUkVTU19VU0FHRSA9ICJTVVBQUkVTUyIrIlVTQUdFIgoKY2xhc3MgVmFsdWVzOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZhdWx0cz1Ob25lKToKICAgICAgICBpZiBkZWZhdWx0czoKICAgICAgICAgICAgZm9yIChhdHRyLCB2YWwpIGluIGRlZmF1bHRzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHIsIHZhbCkKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc3RyKHNlbGYuX19kaWN0X18pCgogICAgX19yZXByX18gPSBfcmVwcgoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFZhbHVlcyk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG90aGVyLCBkaWN0KToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X18gPT0gb3RoZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX3VwZGF0ZV9jYXJlZnVsKHNlbGYsIGRpY3QpOgogICAgICAgICIiIgogICAgICAgIFVwZGF0ZSB0aGUgb3B0aW9uIHZhbHVlcyBmcm9tIGFuIGFyYml0cmFyeSBkaWN0aW9uYXJ5LCBidXQgb25seQogICAgICAgIHVzZSBrZXlzIGZyb20gZGljdCB0aGF0IGFscmVhZHkgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlCiAgICAgICAgaW4gc2VsZi4gIEFueSBrZXlzIGluIGRpY3Qgd2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlCiAgICAgICAgYXJlIHNpbGVudGx5IGlnbm9yZWQuCiAgICAgICAgIiIiCiAgICAgICAgZm9yIGF0dHIgaW4gZGlyKHNlbGYpOgogICAgICAgICAgICBpZiBhdHRyIGluIGRpY3Q6CiAgICAgICAgICAgICAgICBkdmFsID0gZGljdFthdHRyXQogICAgICAgICAgICAgICAgaWYgZHZhbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHIsIGR2YWwpCgogICAgZGVmIF91cGRhdGVfbG9vc2Uoc2VsZiwgZGljdCk6CiAgICAgICAgIiIiCiAgICAgICAgVXBkYXRlIHRoZSBvcHRpb24gdmFsdWVzIGZyb20gYW4gYXJiaXRyYXJ5IGRpY3Rpb25hcnksCiAgICAgICAgdXNpbmcgYWxsIGtleXMgZnJvbSB0aGUgZGljdGlvbmFyeSByZWdhcmRsZXNzIG9mIHdoZXRoZXIKICAgICAgICB0aGV5IGhhdmUgYSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBpbiBzZWxmIG9yIG5vdC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShkaWN0KQoKICAgIGRlZiBfdXBkYXRlKHNlbGYsIGRpY3QsIG1vZGUpOgogICAgICAgIGlmIG1vZGUgPT0gImNhcmVmdWwiOgogICAgICAgICAgICBzZWxmLl91cGRhdGVfY2FyZWZ1bChkaWN0KQogICAgICAgIGVsaWYgbW9kZSA9PSAibG9vc2UiOgogICAgICAgICAgICBzZWxmLl91cGRhdGVfbG9vc2UoZGljdCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHVwZGF0ZSBtb2RlOiAlciIgJSBtb2RlKQoKICAgIGRlZiByZWFkX21vZHVsZShzZWxmLCBtb2RuYW1lLCBtb2RlPSJjYXJlZnVsIik6CiAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQogICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzW21vZG5hbWVdCiAgICAgICAgc2VsZi5fdXBkYXRlKHZhcnMobW9kKSwgbW9kZSkKCiAgICBkZWYgcmVhZF9maWxlKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSJjYXJlZnVsIik6CiAgICAgICAgdmFycyA9IHt9CiAgICAgICAgZXhlYyhvcGVuKGZpbGVuYW1lKS5yZWFkKCksIHZhcnMpCiAgICAgICAgc2VsZi5fdXBkYXRlKHZhcnMsIG1vZGUpCgogICAgZGVmIGVuc3VyZV92YWx1ZShzZWxmLCBhdHRyLCB2YWx1ZSk6CiAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgYXR0cikgb3IgZ2V0YXR0cihzZWxmLCBhdHRyKSBpcyBOb25lOgogICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHIsIHZhbHVlKQogICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIGF0dHIpCgoKY2xhc3MgT3B0aW9uQ29udGFpbmVyOgoKICAgICIiIgogICAgQWJzdHJhY3QgYmFzZSBjbGFzcy4KCiAgICBDbGFzcyBhdHRyaWJ1dGVzOgogICAgICBzdGFuZGFyZF9vcHRpb25fbGlzdCA6IFtPcHRpb25dCiAgICAgICAgbGlzdCBvZiBzdGFuZGFyZCBvcHRpb25zIHRoYXQgd2lsbCBiZSBhY2NlcHRlZCBieSBhbGwgaW5zdGFuY2VzCiAgICAgICAgb2YgdGhpcyBwYXJzZXIgY2xhc3MgKGludGVuZGVkIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcykuCgogICAgSW5zdGFuY2UgYXR0cmlidXRlczoKICAgICAgb3B0aW9uX2xpc3QgOiBbT3B0aW9uXQogICAgICAgIHRoZSBsaXN0IG9mIE9wdGlvbiBvYmplY3RzIGNvbnRhaW5lZCBieSB0aGlzIE9wdGlvbkNvbnRhaW5lcgogICAgICBfc2hvcnRfb3B0IDogeyBzdHJpbmcgOiBPcHRpb24gfQogICAgICAgIGRpY3Rpb25hcnkgbWFwcGluZyBzaG9ydCBvcHRpb24gc3RyaW5ncywgZWcuICItZiIgb3IgIi1YIiwKICAgICAgICB0byB0aGUgT3B0aW9uIGluc3RhbmNlcyB0aGF0IGltcGxlbWVudCB0aGVtLiAgSWYgYW4gT3B0aW9uCiAgICAgICAgaGFzIG11bHRpcGxlIHNob3J0IG9wdGlvbiBzdHJpbmdzLCBpdCB3aWxsIGFwcGVhciBpbiB0aGlzCiAgICAgICAgZGljdGlvbmFyeSBtdWx0aXBsZSB0aW1lcy4gWzFdCiAgICAgIF9sb25nX29wdCA6IHsgc3RyaW5nIDogT3B0aW9uIH0KICAgICAgICBkaWN0aW9uYXJ5IG1hcHBpbmcgbG9uZyBvcHRpb24gc3RyaW5ncywgZWcuICItLWZpbGUiIG9yCiAgICAgICAgIi0tZXhjbHVkZSIsIHRvIHRoZSBPcHRpb24gaW5zdGFuY2VzIHRoYXQgaW1wbGVtZW50IHRoZW0uCiAgICAgICAgQWdhaW4sIGEgZ2l2ZW4gT3B0aW9uIGNhbiBvY2N1ciBtdWx0aXBsZSB0aW1lcyBpbiB0aGlzCiAgICAgICAgZGljdGlvbmFyeS4gWzFdCiAgICAgIGRlZmF1bHRzIDogeyBzdHJpbmcgOiBhbnkgfQogICAgICAgIGRpY3Rpb25hcnkgbWFwcGluZyBvcHRpb24gZGVzdGluYXRpb24gbmFtZXMgdG8gZGVmYXVsdAogICAgICAgIHZhbHVlcyBmb3IgZWFjaCBkZXN0aW5hdGlvbiBbMV0KCiAgICBbMV0gVGhlc2UgbWFwcGluZ3MgYXJlIGNvbW1vbiB0byAoc2hhcmVkIGJ5KSBhbGwgY29tcG9uZW50cyBvZiB0aGUKICAgICAgICBjb250cm9sbGluZyBPcHRpb25QYXJzZXIsIHdoZXJlIHRoZXkgYXJlIGluaXRpYWxseSBjcmVhdGVkLgoKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25fY2xhc3MsIGNvbmZsaWN0X2hhbmRsZXIsIGRlc2NyaXB0aW9uKToKICAgICAgICAjIEluaXRpYWxpemUgdGhlIG9wdGlvbiBsaXN0IGFuZCByZWxhdGVkIGRhdGEgc3RydWN0dXJlcy4KICAgICAgICAjIFRoaXMgbWV0aG9kIG11c3QgYmUgcHJvdmlkZWQgYnkgc3ViY2xhc3NlcywgYW5kIGl0IG11c3QKICAgICAgICAjIGluaXRpYWxpemUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSBhdHRyaWJ1dGVzOgogICAgICAgICMgb3B0aW9uX2xpc3QsIF9zaG9ydF9vcHQsIF9sb25nX29wdCwgZGVmYXVsdHMuCiAgICAgICAgc2VsZi5fY3JlYXRlX29wdGlvbl9saXN0KCkKCiAgICAgICAgc2VsZi5vcHRpb25fY2xhc3MgPSBvcHRpb25fY2xhc3MKICAgICAgICBzZWxmLnNldF9jb25mbGljdF9oYW5kbGVyKGNvbmZsaWN0X2hhbmRsZXIpCiAgICAgICAgc2VsZi5zZXRfZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pCgogICAgZGVmIF9jcmVhdGVfb3B0aW9uX21hcHBpbmdzKHNlbGYpOgogICAgICAgICMgRm9yIHVzZSBieSBPcHRpb25QYXJzZXIgY29uc3RydWN0b3IgLS0gY3JlYXRlIHRoZSBtYWluCiAgICAgICAgIyBvcHRpb24gbWFwcGluZ3MgdXNlZCBieSB0aGlzIE9wdGlvblBhcnNlciBhbmQgYWxsCiAgICAgICAgIyBPcHRpb25Hcm91cHMgdGhhdCBpdCBvd25zLgogICAgICAgIHNlbGYuX3Nob3J0X29wdCA9IHt9ICAgICAgICAgICAgIyBzaW5nbGUgbGV0dGVyIC0+IE9wdGlvbiBpbnN0YW5jZQogICAgICAgIHNlbGYuX2xvbmdfb3B0ID0ge30gICAgICAgICAgICAgIyBsb25nIG9wdGlvbiAtPiBPcHRpb24gaW5zdGFuY2UKICAgICAgICBzZWxmLmRlZmF1bHRzID0ge30gICAgICAgICAgICAgICMgbWFwcyBvcHRpb24gZGVzdCAtPiBkZWZhdWx0IHZhbHVlCgoKICAgIGRlZiBfc2hhcmVfb3B0aW9uX21hcHBpbmdzKHNlbGYsIHBhcnNlcik6CiAgICAgICAgIyBGb3IgdXNlIGJ5IE9wdGlvbkdyb3VwIGNvbnN0cnVjdG9yIC0tIHVzZSBzaGFyZWQgb3B0aW9uCiAgICAgICAgIyBtYXBwaW5ncyBmcm9tIHRoZSBPcHRpb25QYXJzZXIgdGhhdCBvd25zIHRoaXMgT3B0aW9uR3JvdXAuCiAgICAgICAgc2VsZi5fc2hvcnRfb3B0ID0gcGFyc2VyLl9zaG9ydF9vcHQKICAgICAgICBzZWxmLl9sb25nX29wdCA9IHBhcnNlci5fbG9uZ19vcHQKICAgICAgICBzZWxmLmRlZmF1bHRzID0gcGFyc2VyLmRlZmF1bHRzCgogICAgZGVmIHNldF9jb25mbGljdF9oYW5kbGVyKHNlbGYsIGhhbmRsZXIpOgogICAgICAgIGlmIGhhbmRsZXIgbm90IGluICgiZXJyb3IiLCAicmVzb2x2ZSIpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGNvbmZsaWN0X3Jlc29sdXRpb24gdmFsdWUgJXIiICUgaGFuZGxlcikKICAgICAgICBzZWxmLmNvbmZsaWN0X2hhbmRsZXIgPSBoYW5kbGVyCgogICAgZGVmIHNldF9kZXNjcmlwdGlvbihzZWxmLCBkZXNjcmlwdGlvbik6CiAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCgogICAgZGVmIGdldF9kZXNjcmlwdGlvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5kZXNjcmlwdGlvbgoKCiAgICBkZWYgZGVzdHJveShzZWxmKToKICAgICAgICAiIiJzZWUgT3B0aW9uUGFyc2VyLmRlc3Ryb3koKS4iIiIKICAgICAgICBkZWwgc2VsZi5fc2hvcnRfb3B0CiAgICAgICAgZGVsIHNlbGYuX2xvbmdfb3B0CiAgICAgICAgZGVsIHNlbGYuZGVmYXVsdHMKCgogICAgIyAtLSBPcHRpb24tYWRkaW5nIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBkZWYgX2NoZWNrX2NvbmZsaWN0KHNlbGYsIG9wdGlvbik6CiAgICAgICAgY29uZmxpY3Rfb3B0cyA9IFtdCiAgICAgICAgZm9yIG9wdCBpbiBvcHRpb24uX3Nob3J0X29wdHM6CiAgICAgICAgICAgIGlmIG9wdCBpbiBzZWxmLl9zaG9ydF9vcHQ6CiAgICAgICAgICAgICAgICBjb25mbGljdF9vcHRzLmFwcGVuZCgob3B0LCBzZWxmLl9zaG9ydF9vcHRbb3B0XSkpCiAgICAgICAgZm9yIG9wdCBpbiBvcHRpb24uX2xvbmdfb3B0czoKICAgICAgICAgICAgaWYgb3B0IGluIHNlbGYuX2xvbmdfb3B0OgogICAgICAgICAgICAgICAgY29uZmxpY3Rfb3B0cy5hcHBlbmQoKG9wdCwgc2VsZi5fbG9uZ19vcHRbb3B0XSkpCgogICAgICAgIGlmIGNvbmZsaWN0X29wdHM6CiAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLmNvbmZsaWN0X2hhbmRsZXIKICAgICAgICAgICAgaWYgaGFuZGxlciA9PSAiZXJyb3IiOgogICAgICAgICAgICAgICAgcmFpc2UgT3B0aW9uQ29uZmxpY3RFcnJvcigKICAgICAgICAgICAgICAgICAgICAiY29uZmxpY3Rpbmcgb3B0aW9uIHN0cmluZyhzKTogJXMiCiAgICAgICAgICAgICAgICAgICAgJSAiLCAiLmpvaW4oW2NvWzBdIGZvciBjbyBpbiBjb25mbGljdF9vcHRzXSksCiAgICAgICAgICAgICAgICAgICAgb3B0aW9uKQogICAgICAgICAgICBlbGlmIGhhbmRsZXIgPT0gInJlc29sdmUiOgogICAgICAgICAgICAgICAgZm9yIChvcHQsIGNfb3B0aW9uKSBpbiBjb25mbGljdF9vcHRzOgogICAgICAgICAgICAgICAgICAgIGlmIG9wdC5zdGFydHN3aXRoKCItLSIpOgogICAgICAgICAgICAgICAgICAgICAgICBjX29wdGlvbi5fbG9uZ19vcHRzLnJlbW92ZShvcHQpCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9sb25nX29wdFtvcHRdCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgY19vcHRpb24uX3Nob3J0X29wdHMucmVtb3ZlKG9wdCkKICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX3Nob3J0X29wdFtvcHRdCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IChjX29wdGlvbi5fc2hvcnRfb3B0cyBvciBjX29wdGlvbi5fbG9uZ19vcHRzKToKICAgICAgICAgICAgICAgICAgICAgICAgY19vcHRpb24uY29udGFpbmVyLm9wdGlvbl9saXN0LnJlbW92ZShjX29wdGlvbikKCiAgICBkZWYgYWRkX29wdGlvbihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiImFkZF9vcHRpb24oT3B0aW9uKQogICAgICAgICAgIGFkZF9vcHRpb24ob3B0X3N0ciwgLi4uLCBrd2FyZz12YWwsIC4uLikKICAgICAgICAiIiIKICAgICAgICBpZiBpc2luc3RhbmNlKGFyZ3NbMF0sIHN0cik6CiAgICAgICAgICAgIG9wdGlvbiA9IHNlbGYub3B0aW9uX2NsYXNzKCphcmdzLCAqKmt3YXJncykKICAgICAgICBlbGlmIGxlbihhcmdzKSA9PSAxIGFuZCBub3Qga3dhcmdzOgogICAgICAgICAgICBvcHRpb24gPSBhcmdzWzBdCiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9wdGlvbiwgT3B0aW9uKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGFuIE9wdGlvbiBpbnN0YW5jZTogJXIiICUgb3B0aW9uKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBhcmd1bWVudHMiKQoKICAgICAgICBzZWxmLl9jaGVja19jb25mbGljdChvcHRpb24pCgogICAgICAgIHNlbGYub3B0aW9uX2xpc3QuYXBwZW5kKG9wdGlvbikKICAgICAgICBvcHRpb24uY29udGFpbmVyID0gc2VsZgogICAgICAgIGZvciBvcHQgaW4gb3B0aW9uLl9zaG9ydF9vcHRzOgogICAgICAgICAgICBzZWxmLl9zaG9ydF9vcHRbb3B0XSA9IG9wdGlvbgogICAgICAgIGZvciBvcHQgaW4gb3B0aW9uLl9sb25nX29wdHM6CiAgICAgICAgICAgIHNlbGYuX2xvbmdfb3B0W29wdF0gPSBvcHRpb24KCiAgICAgICAgaWYgb3B0aW9uLmRlc3QgaXMgbm90IE5vbmU6ICAgICAjIG9wdGlvbiBoYXMgYSBkZXN0LCB3ZSBuZWVkIGEgZGVmYXVsdAogICAgICAgICAgICBpZiBvcHRpb24uZGVmYXVsdCBpcyBub3QgTk9fREVGQVVMVDoKICAgICAgICAgICAgICAgIHNlbGYuZGVmYXVsdHNbb3B0aW9uLmRlc3RdID0gb3B0aW9uLmRlZmF1bHQKICAgICAgICAgICAgZWxpZiBvcHRpb24uZGVzdCBub3QgaW4gc2VsZi5kZWZhdWx0czoKICAgICAgICAgICAgICAgIHNlbGYuZGVmYXVsdHNbb3B0aW9uLmRlc3RdID0gTm9uZQoKICAgICAgICByZXR1cm4gb3B0aW9uCgogICAgZGVmIGFkZF9vcHRpb25zKHNlbGYsIG9wdGlvbl9saXN0KToKICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbl9saXN0OgogICAgICAgICAgICBzZWxmLmFkZF9vcHRpb24ob3B0aW9uKQoKICAgICMgLS0gT3B0aW9uIHF1ZXJ5L3JlbW92YWwgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZGVmIGdldF9vcHRpb24oc2VsZiwgb3B0X3N0cik6CiAgICAgICAgcmV0dXJuIChzZWxmLl9zaG9ydF9vcHQuZ2V0KG9wdF9zdHIpIG9yCiAgICAgICAgICAgICAgICBzZWxmLl9sb25nX29wdC5nZXQob3B0X3N0cikpCgogICAgZGVmIGhhc19vcHRpb24oc2VsZiwgb3B0X3N0cik6CiAgICAgICAgcmV0dXJuIChvcHRfc3RyIGluIHNlbGYuX3Nob3J0X29wdCBvcgogICAgICAgICAgICAgICAgb3B0X3N0ciBpbiBzZWxmLl9sb25nX29wdCkKCiAgICBkZWYgcmVtb3ZlX29wdGlvbihzZWxmLCBvcHRfc3RyKToKICAgICAgICBvcHRpb24gPSBzZWxmLl9zaG9ydF9vcHQuZ2V0KG9wdF9zdHIpCiAgICAgICAgaWYgb3B0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgIG9wdGlvbiA9IHNlbGYuX2xvbmdfb3B0LmdldChvcHRfc3RyKQogICAgICAgIGlmIG9wdGlvbiBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJubyBzdWNoIG9wdGlvbiAlciIgJSBvcHRfc3RyKQoKICAgICAgICBmb3Igb3B0IGluIG9wdGlvbi5fc2hvcnRfb3B0czoKICAgICAgICAgICAgZGVsIHNlbGYuX3Nob3J0X29wdFtvcHRdCiAgICAgICAgZm9yIG9wdCBpbiBvcHRpb24uX2xvbmdfb3B0czoKICAgICAgICAgICAgZGVsIHNlbGYuX2xvbmdfb3B0W29wdF0KICAgICAgICBvcHRpb24uY29udGFpbmVyLm9wdGlvbl9saXN0LnJlbW92ZShvcHRpb24pCgoKICAgICMgLS0gSGVscC1mb3JtYXR0aW5nIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZGVmIGZvcm1hdF9vcHRpb25faGVscChzZWxmLCBmb3JtYXR0ZXIpOgogICAgICAgIGlmIG5vdCBzZWxmLm9wdGlvbl9saXN0OgogICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIGZvciBvcHRpb24gaW4gc2VsZi5vcHRpb25fbGlzdDoKICAgICAgICAgICAgaWYgbm90IG9wdGlvbi5oZWxwIGlzIFNVUFBSRVNTX0hFTFA6CiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGZvcm1hdHRlci5mb3JtYXRfb3B0aW9uKG9wdGlvbikpCiAgICAgICAgcmV0dXJuICIiLmpvaW4ocmVzdWx0KQoKICAgIGRlZiBmb3JtYXRfZGVzY3JpcHRpb24oc2VsZiwgZm9ybWF0dGVyKToKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdF9kZXNjcmlwdGlvbihzZWxmLmdldF9kZXNjcmlwdGlvbigpKQoKICAgIGRlZiBmb3JtYXRfaGVscChzZWxmLCBmb3JtYXR0ZXIpOgogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgaWYgc2VsZi5kZXNjcmlwdGlvbjoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzZWxmLmZvcm1hdF9kZXNjcmlwdGlvbihmb3JtYXR0ZXIpKQogICAgICAgIGlmIHNlbGYub3B0aW9uX2xpc3Q6CiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc2VsZi5mb3JtYXRfb3B0aW9uX2hlbHAoZm9ybWF0dGVyKSkKICAgICAgICByZXR1cm4gIlxuIi5qb2luKHJlc3VsdCkKCgpjbGFzcyBPcHRpb25Hcm91cCAoT3B0aW9uQ29udGFpbmVyKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCB0aXRsZSwgZGVzY3JpcHRpb249Tm9uZSk6CiAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIKICAgICAgICBPcHRpb25Db250YWluZXIuX19pbml0X18oCiAgICAgICAgICAgIHNlbGYsIHBhcnNlci5vcHRpb25fY2xhc3MsIHBhcnNlci5jb25mbGljdF9oYW5kbGVyLCBkZXNjcmlwdGlvbikKICAgICAgICBzZWxmLnRpdGxlID0gdGl0bGUKCiAgICBkZWYgX2NyZWF0ZV9vcHRpb25fbGlzdChzZWxmKToKICAgICAgICBzZWxmLm9wdGlvbl9saXN0ID0gW10KICAgICAgICBzZWxmLl9zaGFyZV9vcHRpb25fbWFwcGluZ3Moc2VsZi5wYXJzZXIpCgogICAgZGVmIHNldF90aXRsZShzZWxmLCB0aXRsZSk6CiAgICAgICAgc2VsZi50aXRsZSA9IHRpdGxlCgogICAgZGVmIGRlc3Ryb3koc2VsZik6CiAgICAgICAgIiIic2VlIE9wdGlvblBhcnNlci5kZXN0cm95KCkuIiIiCiAgICAgICAgT3B0aW9uQ29udGFpbmVyLmRlc3Ryb3koc2VsZikKICAgICAgICBkZWwgc2VsZi5vcHRpb25fbGlzdAoKICAgICMgLS0gSGVscC1mb3JtYXR0aW5nIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZGVmIGZvcm1hdF9oZWxwKHNlbGYsIGZvcm1hdHRlcik6CiAgICAgICAgcmVzdWx0ID0gZm9ybWF0dGVyLmZvcm1hdF9oZWFkaW5nKHNlbGYudGl0bGUpCiAgICAgICAgZm9ybWF0dGVyLmluZGVudCgpCiAgICAgICAgcmVzdWx0ICs9IE9wdGlvbkNvbnRhaW5lci5mb3JtYXRfaGVscChzZWxmLCBmb3JtYXR0ZXIpCiAgICAgICAgZm9ybWF0dGVyLmRlZGVudCgpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKCmNsYXNzIE9wdGlvblBhcnNlciAoT3B0aW9uQ29udGFpbmVyKToKCiAgICAiIiIKICAgIENsYXNzIGF0dHJpYnV0ZXM6CiAgICAgIHN0YW5kYXJkX29wdGlvbl9saXN0IDogW09wdGlvbl0KICAgICAgICBsaXN0IG9mIHN0YW5kYXJkIG9wdGlvbnMgdGhhdCB3aWxsIGJlIGFjY2VwdGVkIGJ5IGFsbCBpbnN0YW5jZXMKICAgICAgICBvZiB0aGlzIHBhcnNlciBjbGFzcyAoaW50ZW5kZWQgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzKS4KCiAgICBJbnN0YW5jZSBhdHRyaWJ1dGVzOgogICAgICB1c2FnZSA6IHN0cmluZwogICAgICAgIGEgdXNhZ2Ugc3RyaW5nIGZvciB5b3VyIHByb2dyYW0uICBCZWZvcmUgaXQgaXMgZGlzcGxheWVkCiAgICAgICAgdG8gdGhlIHVzZXIsICIlcHJvZyIgd2lsbCBiZSBleHBhbmRlZCB0byB0aGUgbmFtZSBvZgogICAgICAgIHlvdXIgcHJvZ3JhbSAoc2VsZi5wcm9nIG9yIG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pKS4KICAgICAgcHJvZyA6IHN0cmluZwogICAgICAgIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHByb2dyYW0gKHRvIG92ZXJyaWRlCiAgICAgICAgb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkpLgogICAgICBkZXNjcmlwdGlvbiA6IHN0cmluZwogICAgICAgIEEgcGFyYWdyYXBoIG9mIHRleHQgZ2l2aW5nIGEgYnJpZWYgb3ZlcnZpZXcgb2YgeW91ciBwcm9ncmFtLgogICAgICAgIG9wdHBhcnNlIHJlZm9ybWF0cyB0aGlzIHBhcmFncmFwaCB0byBmaXQgdGhlIGN1cnJlbnQgdGVybWluYWwKICAgICAgICB3aWR0aCBhbmQgcHJpbnRzIGl0IHdoZW4gdGhlIHVzZXIgcmVxdWVzdHMgaGVscCAoYWZ0ZXIgdXNhZ2UsCiAgICAgICAgYnV0IGJlZm9yZSB0aGUgbGlzdCBvZiBvcHRpb25zKS4KICAgICAgZXBpbG9nIDogc3RyaW5nCiAgICAgICAgcGFyYWdyYXBoIG9mIGhlbHAgdGV4dCB0byBwcmludCBhZnRlciBvcHRpb24gaGVscAoKICAgICAgb3B0aW9uX2dyb3VwcyA6IFtPcHRpb25Hcm91cF0KICAgICAgICBsaXN0IG9mIG9wdGlvbiBncm91cHMgaW4gdGhpcyBwYXJzZXIgKG9wdGlvbiBncm91cHMgYXJlCiAgICAgICAgaXJyZWxldmFudCBmb3IgcGFyc2luZyB0aGUgY29tbWFuZC1saW5lLCBidXQgdmVyeSB1c2VmdWwKICAgICAgICBmb3IgZ2VuZXJhdGluZyBoZWxwKQoKICAgICAgYWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3MgOiBib29sID0gdHJ1ZQogICAgICAgIGlmIHRydWUsIHBvc2l0aW9uYWwgYXJndW1lbnRzIG1heSBiZSBpbnRlcnNwZXJzZWQgd2l0aCBvcHRpb25zLgogICAgICAgIEFzc3VtaW5nIC1hIGFuZCAtYiBlYWNoIHRha2UgYSBzaW5nbGUgYXJndW1lbnQsIHRoZSBjb21tYW5kLWxpbmUKICAgICAgICAgIC1hYmxhaCBmb28gYmFyIC1iYm9vIGJhegogICAgICAgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgdGhlIHNhbWUgYXMKICAgICAgICAgIC1hYmxhaCAtYmJvbyAtLSBmb28gYmFyIGJhegogICAgICAgIElmIHRoaXMgZmxhZyB3ZXJlIGZhbHNlLCB0aGF0IGNvbW1hbmQgbGluZSB3b3VsZCBiZSBpbnRlcnByZXRlZCBhcwogICAgICAgICAgLWFibGFoIC0tIGZvbyBiYXIgLWJib28gYmF6CiAgICAgICAgLS0gaWUuIHdlIHN0b3AgcHJvY2Vzc2luZyBvcHRpb25zIGFzIHNvb24gYXMgd2Ugc2VlIHRoZSBmaXJzdAogICAgICAgIG5vbi1vcHRpb24gYXJndW1lbnQuICAoVGhpcyBpcyB0aGUgdHJhZGl0aW9uIGZvbGxvd2VkIGJ5CiAgICAgICAgUHl0aG9uJ3MgZ2V0b3B0IG1vZHVsZSwgUGVybCdzIEdldG9wdDo6U3RkLCBhbmQgb3RoZXIgYXJndW1lbnQtCiAgICAgICAgcGFyc2luZyBsaWJyYXJpZXMsIGJ1dCBpdCBpcyBnZW5lcmFsbHkgYW5ub3lpbmcgdG8gdXNlcnMuKQoKICAgICAgcHJvY2Vzc19kZWZhdWx0X3ZhbHVlcyA6IGJvb2wgPSB0cnVlCiAgICAgICAgaWYgdHJ1ZSwgb3B0aW9uIGRlZmF1bHQgdmFsdWVzIGFyZSBwcm9jZXNzZWQgc2ltaWxhcmx5IHRvIG9wdGlvbgogICAgICAgIHZhbHVlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmU6IHRoYXQgaXMsIHRoZXkgYXJlIHBhc3NlZCB0byB0aGUKICAgICAgICB0eXBlLWNoZWNraW5nIGZ1bmN0aW9uIGZvciB0aGUgb3B0aW9uJ3MgdHlwZSAoYXMgbG9uZyBhcyB0aGUKICAgICAgICBkZWZhdWx0IHZhbHVlIGlzIGEgc3RyaW5nKS4gIChUaGlzIHJlYWxseSBvbmx5IG1hdHRlcnMgaWYgeW91CiAgICAgICAgaGF2ZSBkZWZpbmVkIGN1c3RvbSB0eXBlczsgc2VlIFNGIGJ1ZyAjOTU1ODg5LikgIFNldCBpdCB0byBmYWxzZQogICAgICAgIHRvIHJlc3RvcmUgdGhlIGJlaGF2aW91ciBvZiBPcHRpayAxLjQuMSBhbmQgZWFybGllci4KCiAgICAgIHJhcmdzIDogW3N0cmluZ10KICAgICAgICB0aGUgYXJndW1lbnQgbGlzdCBjdXJyZW50bHkgYmVpbmcgcGFyc2VkLiAgT25seSBzZXQgd2hlbgogICAgICAgIHBhcnNlX2FyZ3MoKSBpcyBhY3RpdmUsIGFuZCBjb250aW51YWxseSB0cmltbWVkIGRvd24gYXMKICAgICAgICB3ZSBjb25zdW1lIGFyZ3VtZW50cy4gIE1haW5seSB0aGVyZSBmb3IgdGhlIGJlbmVmaXQgb2YKICAgICAgICBjYWxsYmFjayBvcHRpb25zLgogICAgICBsYXJncyA6IFtzdHJpbmddCiAgICAgICAgdGhlIGxpc3Qgb2YgbGVmdG92ZXIgYXJndW1lbnRzIHRoYXQgd2UgaGF2ZSBza2lwcGVkIHdoaWxlCiAgICAgICAgcGFyc2luZyBvcHRpb25zLiAgSWYgYWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3MgaXMgZmFsc2UsIHRoaXMKICAgICAgICBsaXN0IGlzIGFsd2F5cyBlbXB0eS4KICAgICAgdmFsdWVzIDogVmFsdWVzCiAgICAgICAgdGhlIHNldCBvZiBvcHRpb24gdmFsdWVzIGN1cnJlbnRseSBiZWluZyBhY2N1bXVsYXRlZC4gIE9ubHkKICAgICAgICBzZXQgd2hlbiBwYXJzZV9hcmdzKCkgaXMgYWN0aXZlLiAgQWxzbyBtYWlubHkgZm9yIGNhbGxiYWNrcy4KCiAgICBCZWNhdXNlIG9mIHRoZSAncmFyZ3MnLCAnbGFyZ3MnLCBhbmQgJ3ZhbHVlcycgYXR0cmlidXRlcywKICAgIE9wdGlvblBhcnNlciBpcyBub3QgdGhyZWFkLXNhZmUuICBJZiwgZm9yIHNvbWUgcGVydmVyc2UgcmVhc29uLCB5b3UKICAgIG5lZWQgdG8gcGFyc2UgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBzaW11bHRhbmVvdXNseSBpbiBkaWZmZXJlbnQKICAgIHRocmVhZHMsIHVzZSBkaWZmZXJlbnQgT3B0aW9uUGFyc2VyIGluc3RhbmNlcy4KCiAgICAiIiIKCiAgICBzdGFuZGFyZF9vcHRpb25fbGlzdCA9IFtdCgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgdXNhZ2U9Tm9uZSwKICAgICAgICAgICAgICAgICBvcHRpb25fbGlzdD1Ob25lLAogICAgICAgICAgICAgICAgIG9wdGlvbl9jbGFzcz1PcHRpb24sCiAgICAgICAgICAgICAgICAgdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgIGNvbmZsaWN0X2hhbmRsZXI9ImVycm9yIiwKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25lLAogICAgICAgICAgICAgICAgIGZvcm1hdHRlcj1Ob25lLAogICAgICAgICAgICAgICAgIGFkZF9oZWxwX29wdGlvbj1UcnVlLAogICAgICAgICAgICAgICAgIHByb2c9Tm9uZSwKICAgICAgICAgICAgICAgICBlcGlsb2c9Tm9uZSk6CiAgICAgICAgT3B0aW9uQ29udGFpbmVyLl9faW5pdF9fKAogICAgICAgICAgICBzZWxmLCBvcHRpb25fY2xhc3MsIGNvbmZsaWN0X2hhbmRsZXIsIGRlc2NyaXB0aW9uKQogICAgICAgIHNlbGYuc2V0X3VzYWdlKHVzYWdlKQogICAgICAgIHNlbGYucHJvZyA9IHByb2cKICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCiAgICAgICAgc2VsZi5hbGxvd19pbnRlcnNwZXJzZWRfYXJncyA9IFRydWUKICAgICAgICBzZWxmLnByb2Nlc3NfZGVmYXVsdF92YWx1ZXMgPSBUcnVlCiAgICAgICAgaWYgZm9ybWF0dGVyIGlzIE5vbmU6CiAgICAgICAgICAgIGZvcm1hdHRlciA9IEluZGVudGVkSGVscEZvcm1hdHRlcigpCiAgICAgICAgc2VsZi5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXIKICAgICAgICBzZWxmLmZvcm1hdHRlci5zZXRfcGFyc2VyKHNlbGYpCiAgICAgICAgc2VsZi5lcGlsb2cgPSBlcGlsb2cKCiAgICAgICAgIyBQb3B1bGF0ZSB0aGUgb3B0aW9uIGxpc3Q7IGluaXRpYWwgc291cmNlcyBhcmUgdGhlCiAgICAgICAgIyBzdGFuZGFyZF9vcHRpb25fbGlzdCBjbGFzcyBhdHRyaWJ1dGUsIHRoZSAnb3B0aW9uX2xpc3QnCiAgICAgICAgIyBhcmd1bWVudCwgYW5kIChpZiBhcHBsaWNhYmxlKSB0aGUgX2FkZF92ZXJzaW9uX29wdGlvbigpIGFuZAogICAgICAgICMgX2FkZF9oZWxwX29wdGlvbigpIG1ldGhvZHMuCiAgICAgICAgc2VsZi5fcG9wdWxhdGVfb3B0aW9uX2xpc3Qob3B0aW9uX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9YWRkX2hlbHBfb3B0aW9uKQoKICAgICAgICBzZWxmLl9pbml0X3BhcnNpbmdfc3RhdGUoKQoKCiAgICBkZWYgZGVzdHJveShzZWxmKToKICAgICAgICAiIiIKICAgICAgICBEZWNsYXJlIHRoYXQgeW91IGFyZSBkb25lIHdpdGggdGhpcyBPcHRpb25QYXJzZXIuICBUaGlzIGNsZWFucyB1cAogICAgICAgIHJlZmVyZW5jZSBjeWNsZXMgc28gdGhlIE9wdGlvblBhcnNlciAoYW5kIGFsbCBvYmplY3RzIHJlZmVyZW5jZWQgYnkKICAgICAgICBpdCkgY2FuIGJlIGdhcmJhZ2UtY29sbGVjdGVkIHByb21wdGx5LiAgQWZ0ZXIgY2FsbGluZyBkZXN0cm95KCksIHRoZQogICAgICAgIE9wdGlvblBhcnNlciBpcyB1bnVzYWJsZS4KICAgICAgICAiIiIKICAgICAgICBPcHRpb25Db250YWluZXIuZGVzdHJveShzZWxmKQogICAgICAgIGZvciBncm91cCBpbiBzZWxmLm9wdGlvbl9ncm91cHM6CiAgICAgICAgICAgIGdyb3VwLmRlc3Ryb3koKQogICAgICAgIGRlbCBzZWxmLm9wdGlvbl9saXN0CiAgICAgICAgZGVsIHNlbGYub3B0aW9uX2dyb3VwcwogICAgICAgIGRlbCBzZWxmLmZvcm1hdHRlcgoKCiAgICAjIC0tIFByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyAodXNlZCBieSBvdXIgb3IgT3B0aW9uQ29udGFpbmVyJ3MgY29uc3RydWN0b3IpCgogICAgZGVmIF9jcmVhdGVfb3B0aW9uX2xpc3Qoc2VsZik6CiAgICAgICAgc2VsZi5vcHRpb25fbGlzdCA9IFtdCiAgICAgICAgc2VsZi5vcHRpb25fZ3JvdXBzID0gW10KICAgICAgICBzZWxmLl9jcmVhdGVfb3B0aW9uX21hcHBpbmdzKCkKCiAgICBkZWYgX2FkZF9oZWxwX29wdGlvbihzZWxmKToKICAgICAgICBzZWxmLmFkZF9vcHRpb24oIi1oIiwgIi0taGVscCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iaGVscCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Xygic2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCIpKQoKICAgIGRlZiBfYWRkX3ZlcnNpb25fb3B0aW9uKHNlbGYpOgogICAgICAgIHNlbGYuYWRkX29wdGlvbigiLS12ZXJzaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJ2ZXJzaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1fKCJzaG93IHByb2dyYW0ncyB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdCIpKQoKICAgIGRlZiBfcG9wdWxhdGVfb3B0aW9uX2xpc3Qoc2VsZiwgb3B0aW9uX2xpc3QsIGFkZF9oZWxwPVRydWUpOgogICAgICAgIGlmIHNlbGYuc3RhbmRhcmRfb3B0aW9uX2xpc3Q6CiAgICAgICAgICAgIHNlbGYuYWRkX29wdGlvbnMoc2VsZi5zdGFuZGFyZF9vcHRpb25fbGlzdCkKICAgICAgICBpZiBvcHRpb25fbGlzdDoKICAgICAgICAgICAgc2VsZi5hZGRfb3B0aW9ucyhvcHRpb25fbGlzdCkKICAgICAgICBpZiBzZWxmLnZlcnNpb246CiAgICAgICAgICAgIHNlbGYuX2FkZF92ZXJzaW9uX29wdGlvbigpCiAgICAgICAgaWYgYWRkX2hlbHA6CiAgICAgICAgICAgIHNlbGYuX2FkZF9oZWxwX29wdGlvbigpCgogICAgZGVmIF9pbml0X3BhcnNpbmdfc3RhdGUoc2VsZik6CiAgICAgICAgIyBUaGVzZSBhcmUgc2V0IGluIHBhcnNlX2FyZ3MoKSBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIGNhbGxiYWNrcy4KICAgICAgICBzZWxmLnJhcmdzID0gTm9uZQogICAgICAgIHNlbGYubGFyZ3MgPSBOb25lCiAgICAgICAgc2VsZi52YWx1ZXMgPSBOb25lCgoKICAgICMgLS0gU2ltcGxlIG1vZGlmaWVyIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZGVmIHNldF91c2FnZShzZWxmLCB1c2FnZSk6CiAgICAgICAgaWYgdXNhZ2UgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi51c2FnZSA9IF8oIiVwcm9nIFtvcHRpb25zXSIpCiAgICAgICAgZWxpZiB1c2FnZSBpcyBTVVBQUkVTU19VU0FHRToKICAgICAgICAgICAgc2VsZi51c2FnZSA9IE5vbmUKICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIE9wdGlrIDEuMyBhbmQgZWFybGllci4KICAgICAgICBlbGlmIHVzYWdlLmxvd2VyKCkuc3RhcnRzd2l0aCgidXNhZ2U6ICIpOgogICAgICAgICAgICBzZWxmLnVzYWdlID0gdXNhZ2VbNzpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi51c2FnZSA9IHVzYWdlCgogICAgZGVmIGVuYWJsZV9pbnRlcnNwZXJzZWRfYXJncyhzZWxmKToKICAgICAgICAiIiJTZXQgcGFyc2luZyB0byBub3Qgc3RvcCBvbiB0aGUgZmlyc3Qgbm9uLW9wdGlvbiwgYWxsb3dpbmcKICAgICAgICBpbnRlcnNwZXJzaW5nIHN3aXRjaGVzIHdpdGggY29tbWFuZCBhcmd1bWVudHMuIFRoaXMgaXMgdGhlCiAgICAgICAgZGVmYXVsdCBiZWhhdmlvci4gU2VlIGFsc28gZGlzYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpIGFuZCB0aGUKICAgICAgICBjbGFzcyBkb2N1bWVudGF0aW9uIGRlc2NyaXB0aW9uIG9mIHRoZSBhdHRyaWJ1dGUKICAgICAgICBhbGxvd19pbnRlcnNwZXJzZWRfYXJncy4iIiIKICAgICAgICBzZWxmLmFsbG93X2ludGVyc3BlcnNlZF9hcmdzID0gVHJ1ZQoKICAgIGRlZiBkaXNhYmxlX2ludGVyc3BlcnNlZF9hcmdzKHNlbGYpOgogICAgICAgICIiIlNldCBwYXJzaW5nIHRvIHN0b3Agb24gdGhlIGZpcnN0IG5vbi1vcHRpb24uIFVzZSB0aGlzIGlmCiAgICAgICAgeW91IGhhdmUgYSBjb21tYW5kIHByb2Nlc3NvciB3aGljaCBydW5zIGFub3RoZXIgY29tbWFuZCB0aGF0CiAgICAgICAgaGFzIG9wdGlvbnMgb2YgaXRzIG93biBhbmQgeW91IHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIG9wdGlvbnMKICAgICAgICBkb24ndCBnZXQgY29uZnVzZWQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5hbGxvd19pbnRlcnNwZXJzZWRfYXJncyA9IEZhbHNlCgogICAgZGVmIHNldF9wcm9jZXNzX2RlZmF1bHRfdmFsdWVzKHNlbGYsIHByb2Nlc3MpOgogICAgICAgIHNlbGYucHJvY2Vzc19kZWZhdWx0X3ZhbHVlcyA9IHByb2Nlc3MKCiAgICBkZWYgc2V0X2RlZmF1bHQoc2VsZiwgZGVzdCwgdmFsdWUpOgogICAgICAgIHNlbGYuZGVmYXVsdHNbZGVzdF0gPSB2YWx1ZQoKICAgIGRlZiBzZXRfZGVmYXVsdHMoc2VsZiwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuZGVmYXVsdHMudXBkYXRlKGt3YXJncykKCiAgICBkZWYgX2dldF9hbGxfb3B0aW9ucyhzZWxmKToKICAgICAgICBvcHRpb25zID0gc2VsZi5vcHRpb25fbGlzdFs6XQogICAgICAgIGZvciBncm91cCBpbiBzZWxmLm9wdGlvbl9ncm91cHM6CiAgICAgICAgICAgIG9wdGlvbnMuZXh0ZW5kKGdyb3VwLm9wdGlvbl9saXN0KQogICAgICAgIHJldHVybiBvcHRpb25zCgogICAgZGVmIGdldF9kZWZhdWx0X3ZhbHVlcyhzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5wcm9jZXNzX2RlZmF1bHRfdmFsdWVzOgogICAgICAgICAgICAjIE9sZCwgcHJlLU9wdGlrIDEuNSBiZWhhdmlvdXIuCiAgICAgICAgICAgIHJldHVybiBWYWx1ZXMoc2VsZi5kZWZhdWx0cykKCiAgICAgICAgZGVmYXVsdHMgPSBzZWxmLmRlZmF1bHRzLmNvcHkoKQogICAgICAgIGZvciBvcHRpb24gaW4gc2VsZi5fZ2V0X2FsbF9vcHRpb25zKCk6CiAgICAgICAgICAgIGRlZmF1bHQgPSBkZWZhdWx0cy5nZXQob3B0aW9uLmRlc3QpCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGVmYXVsdCwgc3RyKToKICAgICAgICAgICAgICAgIG9wdF9zdHIgPSBvcHRpb24uZ2V0X29wdF9zdHJpbmcoKQogICAgICAgICAgICAgICAgZGVmYXVsdHNbb3B0aW9uLmRlc3RdID0gb3B0aW9uLmNoZWNrX3ZhbHVlKG9wdF9zdHIsIGRlZmF1bHQpCgogICAgICAgIHJldHVybiBWYWx1ZXMoZGVmYXVsdHMpCgoKICAgICMgLS0gT3B0aW9uR3JvdXAgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZGVmIGFkZF9vcHRpb25fZ3JvdXAoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAjIFhYWCBsb3RzIG9mIG92ZXJsYXAgd2l0aCBPcHRpb25Db250YWluZXIuYWRkX29wdGlvbigpCiAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzWzBdLCBzdHIpOgogICAgICAgICAgICBncm91cCA9IE9wdGlvbkdyb3VwKHNlbGYsICphcmdzLCAqKmt3YXJncykKICAgICAgICBlbGlmIGxlbihhcmdzKSA9PSAxIGFuZCBub3Qga3dhcmdzOgogICAgICAgICAgICBncm91cCA9IGFyZ3NbMF0KICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZ3JvdXAsIE9wdGlvbkdyb3VwKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGFuIE9wdGlvbkdyb3VwIGluc3RhbmNlOiAlciIgJSBncm91cCkKICAgICAgICAgICAgaWYgZ3JvdXAucGFyc2VyIGlzIG5vdCBzZWxmOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBPcHRpb25Hcm91cCAod3JvbmcgcGFyc2VyKSIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGFyZ3VtZW50cyIpCgogICAgICAgIHNlbGYub3B0aW9uX2dyb3Vwcy5hcHBlbmQoZ3JvdXApCiAgICAgICAgcmV0dXJuIGdyb3VwCgogICAgZGVmIGdldF9vcHRpb25fZ3JvdXAoc2VsZiwgb3B0X3N0cik6CiAgICAgICAgb3B0aW9uID0gKHNlbGYuX3Nob3J0X29wdC5nZXQob3B0X3N0cikgb3IKICAgICAgICAgICAgICAgICAgc2VsZi5fbG9uZ19vcHQuZ2V0KG9wdF9zdHIpKQogICAgICAgIGlmIG9wdGlvbiBhbmQgb3B0aW9uLmNvbnRhaW5lciBpcyBub3Qgc2VsZjoKICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5jb250YWluZXIKICAgICAgICByZXR1cm4gTm9uZQoKCiAgICAjIC0tIE9wdGlvbi1wYXJzaW5nIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGRlZiBfZ2V0X2FyZ3Moc2VsZiwgYXJncyk6CiAgICAgICAgaWYgYXJncyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc3lzLmFyZ3ZbMTpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGFyZ3NbOl0gICAgICAgICAgICAgICMgZG9uJ3QgbW9kaWZ5IGNhbGxlcidzIGxpc3QKCiAgICBkZWYgcGFyc2VfYXJncyhzZWxmLCBhcmdzPU5vbmUsIHZhbHVlcz1Ob25lKToKICAgICAgICAiIiIKICAgICAgICBwYXJzZV9hcmdzKGFyZ3MgOiBbc3RyaW5nXSA9IHN5cy5hcmd2WzE6XSwKICAgICAgICAgICAgICAgICAgIHZhbHVlcyA6IFZhbHVlcyA9IE5vbmUpCiAgICAgICAgLT4gKHZhbHVlcyA6IFZhbHVlcywgYXJncyA6IFtzdHJpbmddKQoKICAgICAgICBQYXJzZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm91bmQgaW4gJ2FyZ3MnIChkZWZhdWx0OgogICAgICAgIHN5cy5hcmd2WzE6XSkuICBBbnkgZXJyb3JzIHJlc3VsdCBpbiBhIGNhbGwgdG8gJ2Vycm9yKCknLCB3aGljaAogICAgICAgIGJ5IGRlZmF1bHQgcHJpbnRzIHRoZSB1c2FnZSBtZXNzYWdlIHRvIHN0ZGVyciBhbmQgY2FsbHMKICAgICAgICBzeXMuZXhpdCgpIHdpdGggYW4gZXJyb3IgbWVzc2FnZS4gIE9uIHN1Y2Nlc3MgcmV0dXJucyBhIHBhaXIKICAgICAgICAodmFsdWVzLCBhcmdzKSB3aGVyZSAndmFsdWVzJyBpcyBhIFZhbHVlcyBpbnN0YW5jZSAod2l0aCBhbGwKICAgICAgICB5b3VyIG9wdGlvbiB2YWx1ZXMpIGFuZCAnYXJncycgaXMgdGhlIGxpc3Qgb2YgYXJndW1lbnRzIGxlZnQKICAgICAgICBvdmVyIGFmdGVyIHBhcnNpbmcgb3B0aW9ucy4KICAgICAgICAiIiIKICAgICAgICByYXJncyA9IHNlbGYuX2dldF9hcmdzKGFyZ3MpCiAgICAgICAgaWYgdmFsdWVzIGlzIE5vbmU6CiAgICAgICAgICAgIHZhbHVlcyA9IHNlbGYuZ2V0X2RlZmF1bHRfdmFsdWVzKCkKCiAgICAgICAgIyBTdG9yZSB0aGUgaGFsdmVzIG9mIHRoZSBhcmd1bWVudCBsaXN0IGFzIGF0dHJpYnV0ZXMgZm9yIHRoZQogICAgICAgICMgY29udmVuaWVuY2Ugb2YgY2FsbGJhY2tzOgogICAgICAgICMgICByYXJncwogICAgICAgICMgICAgIHRoZSByZXN0IG9mIHRoZSBjb21tYW5kLWxpbmUgKHRoZSAiciIgc3RhbmRzIGZvcgogICAgICAgICMgICAgICJyZW1haW5pbmciIG9yICJyaWdodC1oYW5kIikKICAgICAgICAjICAgbGFyZ3MKICAgICAgICAjICAgICB0aGUgbGVmdG92ZXIgYXJndW1lbnRzIC0tIGllLiB3aGF0J3MgbGVmdCBhZnRlciByZW1vdmluZwogICAgICAgICMgICAgIG9wdGlvbnMgYW5kIHRoZWlyIGFyZ3VtZW50cyAodGhlICJsIiBzdGFuZHMgZm9yICJsZWZ0b3ZlciIKICAgICAgICAjICAgICBvciAibGVmdC1oYW5kIikKICAgICAgICBzZWxmLnJhcmdzID0gcmFyZ3MKICAgICAgICBzZWxmLmxhcmdzID0gbGFyZ3MgPSBbXQogICAgICAgIHNlbGYudmFsdWVzID0gdmFsdWVzCgogICAgICAgIHRyeToKICAgICAgICAgICAgc3RvcCA9IHNlbGYuX3Byb2Nlc3NfYXJncyhsYXJncywgcmFyZ3MsIHZhbHVlcykKICAgICAgICBleGNlcHQgKEJhZE9wdGlvbkVycm9yLCBPcHRpb25WYWx1ZUVycm9yKSBhcyBlcnI6CiAgICAgICAgICAgIHNlbGYuZXJyb3Ioc3RyKGVycikpCgogICAgICAgIGFyZ3MgPSBsYXJncyArIHJhcmdzCiAgICAgICAgcmV0dXJuIHNlbGYuY2hlY2tfdmFsdWVzKHZhbHVlcywgYXJncykKCiAgICBkZWYgY2hlY2tfdmFsdWVzKHNlbGYsIHZhbHVlcywgYXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgY2hlY2tfdmFsdWVzKHZhbHVlcyA6IFZhbHVlcywgYXJncyA6IFtzdHJpbmddKQogICAgICAgIC0+ICh2YWx1ZXMgOiBWYWx1ZXMsIGFyZ3MgOiBbc3RyaW5nXSkKCiAgICAgICAgQ2hlY2sgdGhhdCB0aGUgc3VwcGxpZWQgb3B0aW9uIHZhbHVlcyBhbmQgbGVmdG92ZXIgYXJndW1lbnRzIGFyZQogICAgICAgIHZhbGlkLiAgUmV0dXJucyB0aGUgb3B0aW9uIHZhbHVlcyBhbmQgbGVmdG92ZXIgYXJndW1lbnRzCiAgICAgICAgKHBvc3NpYmx5IGFkanVzdGVkLCBwb3NzaWJseSBjb21wbGV0ZWx5IG5ldyAtLSB3aGF0ZXZlciB5b3UKICAgICAgICBsaWtlKS4gIERlZmF1bHQgaW1wbGVtZW50YXRpb24ganVzdCByZXR1cm5zIHRoZSBwYXNzZWQtaW4KICAgICAgICB2YWx1ZXM7IHN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIGFzIGRlc2lyZWQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuICh2YWx1ZXMsIGFyZ3MpCgogICAgZGVmIF9wcm9jZXNzX2FyZ3Moc2VsZiwgbGFyZ3MsIHJhcmdzLCB2YWx1ZXMpOgogICAgICAgICIiIl9wcm9jZXNzX2FyZ3MobGFyZ3MgOiBbc3RyaW5nXSwKICAgICAgICAgICAgICAgICAgICAgICAgIHJhcmdzIDogW3N0cmluZ10sCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgOiBWYWx1ZXMpCgogICAgICAgIFByb2Nlc3MgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBhbmQgcG9wdWxhdGUgJ3ZhbHVlcycsIGNvbnN1bWluZwogICAgICAgIG9wdGlvbnMgYW5kIGFyZ3VtZW50cyBmcm9tICdyYXJncycuICBJZiAnYWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3MnIGlzCiAgICAgICAgZmFsc2UsIHN0b3AgYXQgdGhlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQuICBJZiB0cnVlLCBhY2N1bXVsYXRlIGFueQogICAgICAgIGludGVyc3BlcnNlZCBub24tb3B0aW9uIGFyZ3VtZW50cyBpbiAnbGFyZ3MnLgogICAgICAgICIiIgogICAgICAgIHdoaWxlIHJhcmdzOgogICAgICAgICAgICBhcmcgPSByYXJnc1swXQogICAgICAgICAgICAjIFdlIGhhbmRsZSBiYXJlICItLSIgZXhwbGljaXRseSwgYW5kIGJhcmUgIi0iIGlzIGhhbmRsZWQgYnkgdGhlCiAgICAgICAgICAgICMgc3RhbmRhcmQgYXJnIGhhbmRsZXIgc2luY2UgdGhlIHNob3J0IGFyZyBjYXNlIGVuc3VyZXMgdGhhdCB0aGUKICAgICAgICAgICAgIyBsZW4gb2YgdGhlIG9wdCBzdHJpbmcgaXMgZ3JlYXRlciB0aGFuIDEuCiAgICAgICAgICAgIGlmIGFyZyA9PSAiLS0iOgogICAgICAgICAgICAgICAgZGVsIHJhcmdzWzBdCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZWxpZiBhcmdbMDoyXSA9PSAiLS0iOgogICAgICAgICAgICAgICAgIyBwcm9jZXNzIGEgc2luZ2xlIGxvbmcgb3B0aW9uIChwb3NzaWJseSB3aXRoIHZhbHVlKHMpKQogICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19sb25nX29wdChyYXJncywgdmFsdWVzKQogICAgICAgICAgICBlbGlmIGFyZ1s6MV0gPT0gIi0iIGFuZCBsZW4oYXJnKSA+IDE6CiAgICAgICAgICAgICAgICAjIHByb2Nlc3MgYSBjbHVzdGVyIG9mIHNob3J0IG9wdGlvbnMgKHBvc3NpYmx5IHdpdGgKICAgICAgICAgICAgICAgICMgdmFsdWUocykgZm9yIHRoZSBsYXN0IG9uZSBvbmx5KQogICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19zaG9ydF9vcHRzKHJhcmdzLCB2YWx1ZXMpCiAgICAgICAgICAgIGVsaWYgc2VsZi5hbGxvd19pbnRlcnNwZXJzZWRfYXJnczoKICAgICAgICAgICAgICAgIGxhcmdzLmFwcGVuZChhcmcpCiAgICAgICAgICAgICAgICBkZWwgcmFyZ3NbMF0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiAgICAgICAgICAgICAgICAgICMgc3RvcCBub3csIGxlYXZlIHRoaXMgYXJnIGluIHJhcmdzCgogICAgICAgICMgU2F5IHRoaXMgaXMgdGhlIG9yaWdpbmFsIGFyZ3VtZW50IGxpc3Q6CiAgICAgICAgIyBbYXJnMCwgYXJnMSwgLi4uLCBhcmcoaS0xKSwgYXJnKGkpLCBhcmcoaSsxKSwgLi4uLCBhcmcoTi0xKV0KICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KICAgICAgICAjICh3ZSBhcmUgYWJvdXQgdG8gcHJvY2VzcyBhcmcoaSkpLgogICAgICAgICMKICAgICAgICAjIFRoZW4gcmFyZ3MgaXMgW2FyZyhpKSwgLi4uLCBhcmcoTi0xKV0gYW5kIGxhcmdzIGlzIGEgKnN1YnNldCogb2YKICAgICAgICAjIFthcmcwLCAuLi4sIGFyZyhpLTEpXSAoYW55IG9wdGlvbnMgYW5kIHRoZWlyIGFyZ3VtZW50cyB3aWxsIGhhdmUKICAgICAgICAjIGJlZW4gcmVtb3ZlZCBmcm9tIGxhcmdzKS4KICAgICAgICAjCiAgICAgICAgIyBUaGUgd2hpbGUgbG9vcCB3aWxsIHVzdWFsbHkgY29uc3VtZSAxIG9yIG1vcmUgYXJndW1lbnRzIHBlciBwYXNzLgogICAgICAgICMgSWYgaXQgY29uc3VtZXMgMSAoZWcuIGFyZyBpcyBhbiBvcHRpb24gdGhhdCB0YWtlcyBubyBhcmd1bWVudHMpLAogICAgICAgICMgdGhlbiBhZnRlciBfcHJvY2Vzc19hcmcoKSBpcyBkb25lIHRoZSBzaXR1YXRpb24gaXM6CiAgICAgICAgIwogICAgICAgICMgICBsYXJncyA9IHN1YnNldCBvZiBbYXJnMCwgLi4uLCBhcmcoaSldCiAgICAgICAgIyAgIHJhcmdzID0gW2FyZyhpKzEpLCAuLi4sIGFyZyhOLTEpXQogICAgICAgICMKICAgICAgICAjIElmIGFsbG93X2ludGVyc3BlcnNlZF9hcmdzIGlzIGZhbHNlLCBsYXJncyB3aWxsIGFsd2F5cyBiZQogICAgICAgICMgKmVtcHR5KiAtLSBzdGlsbCBhIHN1YnNldCBvZiBbYXJnMCwgLi4uLCBhcmcoaS0xKV0sIGJ1dAogICAgICAgICMgbm90IGEgdmVyeSBpbnRlcmVzdGluZyBzdWJzZXQhCgogICAgZGVmIF9tYXRjaF9sb25nX29wdChzZWxmLCBvcHQpOgogICAgICAgICIiIl9tYXRjaF9sb25nX29wdChvcHQgOiBzdHJpbmcpIC0+IHN0cmluZwoKICAgICAgICBEZXRlcm1pbmUgd2hpY2ggbG9uZyBvcHRpb24gc3RyaW5nICdvcHQnIG1hdGNoZXMsIGllLiB3aGljaCBvbmUKICAgICAgICBpdCBpcyBhbiB1bmFtYmlndW91cyBhYmJyZXZpYXRpb24gZm9yLiAgUmFpc2VzIEJhZE9wdGlvbkVycm9yIGlmCiAgICAgICAgJ29wdCcgZG9lc24ndCB1bmFtYmlndW91c2x5IG1hdGNoIGFueSBsb25nIG9wdGlvbiBzdHJpbmcuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIF9tYXRjaF9hYmJyZXYob3B0LCBzZWxmLl9sb25nX29wdCkKCiAgICBkZWYgX3Byb2Nlc3NfbG9uZ19vcHQoc2VsZiwgcmFyZ3MsIHZhbHVlcyk6CiAgICAgICAgYXJnID0gcmFyZ3MucG9wKDApCgogICAgICAgICMgVmFsdWUgZXhwbGljaXRseSBhdHRhY2hlZCB0byBhcmc/ICBQcmV0ZW5kIGl0J3MgdGhlIG5leHQKICAgICAgICAjIGFyZ3VtZW50LgogICAgICAgIGlmICI9IiBpbiBhcmc6CiAgICAgICAgICAgIChvcHQsIG5leHRfYXJnKSA9IGFyZy5zcGxpdCgiPSIsIDEpCiAgICAgICAgICAgIHJhcmdzLmluc2VydCgwLCBuZXh0X2FyZykKICAgICAgICAgICAgaGFkX2V4cGxpY2l0X3ZhbHVlID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9wdCA9IGFyZwogICAgICAgICAgICBoYWRfZXhwbGljaXRfdmFsdWUgPSBGYWxzZQoKICAgICAgICBvcHQgPSBzZWxmLl9tYXRjaF9sb25nX29wdChvcHQpCiAgICAgICAgb3B0aW9uID0gc2VsZi5fbG9uZ19vcHRbb3B0XQogICAgICAgIGlmIG9wdGlvbi50YWtlc192YWx1ZSgpOgogICAgICAgICAgICBuYXJncyA9IG9wdGlvbi5uYXJncwogICAgICAgICAgICBpZiBsZW4ocmFyZ3MpIDwgbmFyZ3M6CiAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG5nZXR0ZXh0KAogICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50IiwKICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudHMiLAogICAgICAgICAgICAgICAgICAgIG5hcmdzKSAlIHsib3B0aW9uIjogb3B0LCAibnVtYmVyIjogbmFyZ3N9KQogICAgICAgICAgICBlbGlmIG5hcmdzID09IDE6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IHJhcmdzLnBvcCgwKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdmFsdWUgPSB0dXBsZShyYXJnc1swOm5hcmdzXSkKICAgICAgICAgICAgICAgIGRlbCByYXJnc1swOm5hcmdzXQoKICAgICAgICBlbGlmIGhhZF9leHBsaWNpdF92YWx1ZToKICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gZG9lcyBub3QgdGFrZSBhIHZhbHVlIikgJSBvcHQpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHZhbHVlID0gTm9uZQoKICAgICAgICBvcHRpb24ucHJvY2VzcyhvcHQsIHZhbHVlLCB2YWx1ZXMsIHNlbGYpCgogICAgZGVmIF9wcm9jZXNzX3Nob3J0X29wdHMoc2VsZiwgcmFyZ3MsIHZhbHVlcyk6CiAgICAgICAgYXJnID0gcmFyZ3MucG9wKDApCiAgICAgICAgc3RvcCA9IEZhbHNlCiAgICAgICAgaSA9IDEKICAgICAgICBmb3IgY2ggaW4gYXJnWzE6XToKICAgICAgICAgICAgb3B0ID0gIi0iICsgY2gKICAgICAgICAgICAgb3B0aW9uID0gc2VsZi5fc2hvcnRfb3B0LmdldChvcHQpCiAgICAgICAgICAgIGkgKz0gMSAgICAgICAgICAgICAgICAgICAgICAjIHdlIGhhdmUgY29uc3VtZWQgYSBjaGFyYWN0ZXIKCiAgICAgICAgICAgIGlmIG5vdCBvcHRpb246CiAgICAgICAgICAgICAgICByYWlzZSBCYWRPcHRpb25FcnJvcihvcHQpCiAgICAgICAgICAgIGlmIG9wdGlvbi50YWtlc192YWx1ZSgpOgogICAgICAgICAgICAgICAgIyBBbnkgY2hhcmFjdGVycyBsZWZ0IGluIGFyZz8gIFByZXRlbmQgdGhleSdyZSB0aGUKICAgICAgICAgICAgICAgICMgbmV4dCBhcmcsIGFuZCBzdG9wIGNvbnN1bWluZyBjaGFyYWN0ZXJzIG9mIGFyZy4KICAgICAgICAgICAgICAgIGlmIGkgPCBsZW4oYXJnKToKICAgICAgICAgICAgICAgICAgICByYXJncy5pbnNlcnQoMCwgYXJnW2k6XSkKICAgICAgICAgICAgICAgICAgICBzdG9wID0gVHJ1ZQoKICAgICAgICAgICAgICAgIG5hcmdzID0gb3B0aW9uLm5hcmdzCiAgICAgICAgICAgICAgICBpZiBsZW4ocmFyZ3MpIDwgbmFyZ3M6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihuZ2V0dGV4dCgKICAgICAgICAgICAgICAgICAgICAgICAgIiUob3B0aW9uKXMgb3B0aW9uIHJlcXVpcmVzICUobnVtYmVyKWQgYXJndW1lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudHMiLAogICAgICAgICAgICAgICAgICAgICAgICBuYXJncykgJSB7Im9wdGlvbiI6IG9wdCwgIm51bWJlciI6IG5hcmdzfSkKICAgICAgICAgICAgICAgIGVsaWYgbmFyZ3MgPT0gMToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJhcmdzLnBvcCgwKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHR1cGxlKHJhcmdzWzA6bmFyZ3NdKQogICAgICAgICAgICAgICAgICAgIGRlbCByYXJnc1swOm5hcmdzXQoKICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uIGRvZXNuJ3QgdGFrZSBhIHZhbHVlCiAgICAgICAgICAgICAgICB2YWx1ZSA9IE5vbmUKCiAgICAgICAgICAgIG9wdGlvbi5wcm9jZXNzKG9wdCwgdmFsdWUsIHZhbHVlcywgc2VsZikKCiAgICAgICAgICAgIGlmIHN0b3A6CiAgICAgICAgICAgICAgICBicmVhawoKCiAgICAjIC0tIEZlZWRiYWNrIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGRlZiBnZXRfcHJvZ19uYW1lKHNlbGYpOgogICAgICAgIGlmIHNlbGYucHJvZyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5wcm9nCgogICAgZGVmIGV4cGFuZF9wcm9nX25hbWUoc2VsZiwgcyk6CiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgiJXByb2ciLCBzZWxmLmdldF9wcm9nX25hbWUoKSkKCiAgICBkZWYgZ2V0X2Rlc2NyaXB0aW9uKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmV4cGFuZF9wcm9nX25hbWUoc2VsZi5kZXNjcmlwdGlvbikKCiAgICBkZWYgZXhpdChzZWxmLCBzdGF0dXM9MCwgbXNnPU5vbmUpOgogICAgICAgIGlmIG1zZzoKICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShtc2cpCiAgICAgICAgc3lzLmV4aXQoc3RhdHVzKQoKICAgIGRlZiBlcnJvcihzZWxmLCBtc2cpOgogICAgICAgICIiImVycm9yKG1zZyA6IHN0cmluZykKCiAgICAgICAgUHJpbnQgYSB1c2FnZSBtZXNzYWdlIGluY29ycG9yYXRpbmcgJ21zZycgdG8gc3RkZXJyIGFuZCBleGl0LgogICAgICAgIElmIHlvdSBvdmVycmlkZSB0aGlzIGluIGEgc3ViY2xhc3MsIGl0IHNob3VsZCBub3QgcmV0dXJuIC0tIGl0CiAgICAgICAgc2hvdWxkIGVpdGhlciBleGl0IG9yIHJhaXNlIGFuIGV4Y2VwdGlvbi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnByaW50X3VzYWdlKHN5cy5zdGRlcnIpCiAgICAgICAgc2VsZi5leGl0KDIsICIlczogZXJyb3I6ICVzXG4iICUgKHNlbGYuZ2V0X3Byb2dfbmFtZSgpLCBtc2cpKQoKICAgIGRlZiBnZXRfdXNhZ2Uoc2VsZik6CiAgICAgICAgaWYgc2VsZi51c2FnZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9ybWF0dGVyLmZvcm1hdF91c2FnZSgKICAgICAgICAgICAgICAgIHNlbGYuZXhwYW5kX3Byb2dfbmFtZShzZWxmLnVzYWdlKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gIiIKCiAgICBkZWYgcHJpbnRfdXNhZ2Uoc2VsZiwgZmlsZT1Ob25lKToKICAgICAgICAiIiJwcmludF91c2FnZShmaWxlIDogZmlsZSA9IHN0ZG91dCkKCiAgICAgICAgUHJpbnQgdGhlIHVzYWdlIG1lc3NhZ2UgZm9yIHRoZSBjdXJyZW50IHByb2dyYW0gKHNlbGYudXNhZ2UpIHRvCiAgICAgICAgJ2ZpbGUnIChkZWZhdWx0IHN0ZG91dCkuICBBbnkgb2NjdXJyZW5jZSBvZiB0aGUgc3RyaW5nICIlcHJvZyIgaW4KICAgICAgICBzZWxmLnVzYWdlIGlzIHJlcGxhY2VkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgcHJvZ3JhbQogICAgICAgIChiYXNlbmFtZSBvZiBzeXMuYXJndlswXSkuICBEb2VzIG5vdGhpbmcgaWYgc2VsZi51c2FnZSBpcyBlbXB0eQogICAgICAgIG9yIG5vdCBkZWZpbmVkLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYudXNhZ2U6CiAgICAgICAgICAgIHByaW50KHNlbGYuZ2V0X3VzYWdlKCksIGZpbGU9ZmlsZSkKCiAgICBkZWYgZ2V0X3ZlcnNpb24oc2VsZik6CiAgICAgICAgaWYgc2VsZi52ZXJzaW9uOgogICAgICAgICAgICByZXR1cm4gc2VsZi5leHBhbmRfcHJvZ19uYW1lKHNlbGYudmVyc2lvbikKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gIiIKCiAgICBkZWYgcHJpbnRfdmVyc2lvbihzZWxmLCBmaWxlPU5vbmUpOgogICAgICAgICIiInByaW50X3ZlcnNpb24oZmlsZSA6IGZpbGUgPSBzdGRvdXQpCgogICAgICAgIFByaW50IHRoZSB2ZXJzaW9uIG1lc3NhZ2UgZm9yIHRoaXMgcHJvZ3JhbSAoc2VsZi52ZXJzaW9uKSB0bwogICAgICAgICdmaWxlJyAoZGVmYXVsdCBzdGRvdXQpLiAgQXMgd2l0aCBwcmludF91c2FnZSgpLCBhbnkgb2NjdXJyZW5jZQogICAgICAgIG9mICIlcHJvZyIgaW4gc2VsZi52ZXJzaW9uIGlzIHJlcGxhY2VkIGJ5IHRoZSBjdXJyZW50IHByb2dyYW0ncwogICAgICAgIG5hbWUuICBEb2VzIG5vdGhpbmcgaWYgc2VsZi52ZXJzaW9uIGlzIGVtcHR5IG9yIHVuZGVmaW5lZC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLnZlcnNpb246CiAgICAgICAgICAgIHByaW50KHNlbGYuZ2V0X3ZlcnNpb24oKSwgZmlsZT1maWxlKQoKICAgIGRlZiBmb3JtYXRfb3B0aW9uX2hlbHAoc2VsZiwgZm9ybWF0dGVyPU5vbmUpOgogICAgICAgIGlmIGZvcm1hdHRlciBpcyBOb25lOgogICAgICAgICAgICBmb3JtYXR0ZXIgPSBzZWxmLmZvcm1hdHRlcgogICAgICAgIGZvcm1hdHRlci5zdG9yZV9vcHRpb25fc3RyaW5ncyhzZWxmKQogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgcmVzdWx0LmFwcGVuZChmb3JtYXR0ZXIuZm9ybWF0X2hlYWRpbmcoXygiT3B0aW9ucyIpKSkKICAgICAgICBmb3JtYXR0ZXIuaW5kZW50KCkKICAgICAgICBpZiBzZWxmLm9wdGlvbl9saXN0OgogICAgICAgICAgICByZXN1bHQuYXBwZW5kKE9wdGlvbkNvbnRhaW5lci5mb3JtYXRfb3B0aW9uX2hlbHAoc2VsZiwgZm9ybWF0dGVyKSkKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiXG4iKQogICAgICAgIGZvciBncm91cCBpbiBzZWxmLm9wdGlvbl9ncm91cHM6CiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZ3JvdXAuZm9ybWF0X2hlbHAoZm9ybWF0dGVyKSkKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiXG4iKQogICAgICAgIGZvcm1hdHRlci5kZWRlbnQoKQogICAgICAgICMgRHJvcCB0aGUgbGFzdCAiXG4iLCBvciB0aGUgaGVhZGVyIGlmIG5vIG9wdGlvbnMgb3Igb3B0aW9uIGdyb3VwczoKICAgICAgICByZXR1cm4gIiIuam9pbihyZXN1bHRbOi0xXSkKCiAgICBkZWYgZm9ybWF0X2VwaWxvZyhzZWxmLCBmb3JtYXR0ZXIpOgogICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0X2VwaWxvZyhzZWxmLmVwaWxvZykKCiAgICBkZWYgZm9ybWF0X2hlbHAoc2VsZiwgZm9ybWF0dGVyPU5vbmUpOgogICAgICAgIGlmIGZvcm1hdHRlciBpcyBOb25lOgogICAgICAgICAgICBmb3JtYXR0ZXIgPSBzZWxmLmZvcm1hdHRlcgogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgaWYgc2VsZi51c2FnZToKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzZWxmLmdldF91c2FnZSgpICsgIlxuIikKICAgICAgICBpZiBzZWxmLmRlc2NyaXB0aW9uOgogICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNlbGYuZm9ybWF0X2Rlc2NyaXB0aW9uKGZvcm1hdHRlcikgKyAiXG4iKQogICAgICAgIHJlc3VsdC5hcHBlbmQoc2VsZi5mb3JtYXRfb3B0aW9uX2hlbHAoZm9ybWF0dGVyKSkKICAgICAgICByZXN1bHQuYXBwZW5kKHNlbGYuZm9ybWF0X2VwaWxvZyhmb3JtYXR0ZXIpKQogICAgICAgIHJldHVybiAiIi5qb2luKHJlc3VsdCkKCiAgICBkZWYgcHJpbnRfaGVscChzZWxmLCBmaWxlPU5vbmUpOgogICAgICAgICIiInByaW50X2hlbHAoZmlsZSA6IGZpbGUgPSBzdGRvdXQpCgogICAgICAgIFByaW50IGFuIGV4dGVuZGVkIGhlbHAgbWVzc2FnZSwgbGlzdGluZyBhbGwgb3B0aW9ucyBhbmQgYW55CiAgICAgICAgaGVscCB0ZXh0IHByb3ZpZGVkIHdpdGggdGhlbSwgdG8gJ2ZpbGUnIChkZWZhdWx0IHN0ZG91dCkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgICAgICBmaWxlID0gc3lzLnN0ZG91dAogICAgICAgIGZpbGUud3JpdGUoc2VsZi5mb3JtYXRfaGVscCgpKQoKIyBjbGFzcyBPcHRpb25QYXJzZXIKCgpkZWYgX21hdGNoX2FiYnJldihzLCB3b3JkbWFwKToKICAgICIiIl9tYXRjaF9hYmJyZXYocyA6IHN0cmluZywgd29yZG1hcCA6IHtzdHJpbmcgOiBPcHRpb259KSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gdGhlIHN0cmluZyBrZXkgaW4gJ3dvcmRtYXAnIGZvciB3aGljaCAncycgaXMgYW4gdW5hbWJpZ3VvdXMKICAgIGFiYnJldmlhdGlvbi4gIElmICdzJyBpcyBmb3VuZCB0byBiZSBhbWJpZ3VvdXMgb3IgZG9lc24ndCBtYXRjaCBhbnkgb2YKICAgICd3b3JkcycsIHJhaXNlIEJhZE9wdGlvbkVycm9yLgogICAgIiIiCiAgICAjIElzIHRoZXJlIGFuIGV4YWN0IG1hdGNoPwogICAgaWYgcyBpbiB3b3JkbWFwOgogICAgICAgIHJldHVybiBzCiAgICBlbHNlOgogICAgICAgICMgSXNvbGF0ZSBhbGwgd29yZHMgd2l0aCBzIGFzIGEgcHJlZml4LgogICAgICAgIHBvc3NpYmlsaXRpZXMgPSBbd29yZCBmb3Igd29yZCBpbiB3b3JkbWFwLmtleXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgd29yZC5zdGFydHN3aXRoKHMpXQogICAgICAgICMgTm8gZXhhY3QgbWF0Y2gsIHNvIHRoZXJlIGhhZCBiZXR0ZXIgYmUganVzdCBvbmUgcG9zc2liaWxpdHkuCiAgICAgICAgaWYgbGVuKHBvc3NpYmlsaXRpZXMpID09IDE6CiAgICAgICAgICAgIHJldHVybiBwb3NzaWJpbGl0aWVzWzBdCiAgICAgICAgZWxpZiBub3QgcG9zc2liaWxpdGllczoKICAgICAgICAgICAgcmFpc2UgQmFkT3B0aW9uRXJyb3IocykKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIE1vcmUgdGhhbiBvbmUgcG9zc2libGUgY29tcGxldGlvbjogYW1iaWd1b3VzIHByZWZpeC4KICAgICAgICAgICAgcG9zc2liaWxpdGllcy5zb3J0KCkKICAgICAgICAgICAgcmFpc2UgQW1iaWd1b3VzT3B0aW9uRXJyb3IocywgcG9zc2liaWxpdGllcykKCgojIFNvbWUgZGF5LCB0aGVyZSBtaWdodCBiZSBtYW55IE9wdGlvbiBjbGFzc2VzLiAgQXMgb2YgT3B0aWsgMS4zLCB0aGUKIyBwcmVmZXJyZWQgd2F5IHRvIGluc3RhbnRpYXRlIE9wdGlvbnMgaXMgaW5kaXJlY3RseSwgdmlhIG1ha2Vfb3B0aW9uKCksCiMgd2hpY2ggd2lsbCBiZWNvbWUgYSBmYWN0b3J5IGZ1bmN0aW9uIHdoZW4gdGhlcmUgYXJlIG1hbnkgT3B0aW9uCiMgY2xhc3Nlcy4KbWFrZV9vcHRpb24gPSBPcHRpb24KUEsDBBQAAAAAAAIgo1ZakB5QUJoAAFCaAAAFAAAAb3MucHlyIiIiT1Mgcm91dGluZXMgZm9yIE5UIG9yIFBvc2l4IGRlcGVuZGluZyBvbiB3aGF0IHN5c3RlbSB3ZSdyZSBvbi4KClRoaXMgZXhwb3J0czoKICAtIGFsbCBmdW5jdGlvbnMgZnJvbSBwb3NpeCBvciBudCwgZS5nLiB1bmxpbmssIHN0YXQsIGV0Yy4KICAtIG9zLnBhdGggaXMgZWl0aGVyIHBvc2l4cGF0aCBvciBudHBhdGgKICAtIG9zLm5hbWUgaXMgZWl0aGVyICdwb3NpeCcgb3IgJ250JwogIC0gb3MuY3VyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKGFsd2F5cyAnLicpCiAgLSBvcy5wYXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXJlbnQgZGlyZWN0b3J5IChhbHdheXMgJy4uJykKICAtIG9zLnNlcCBpcyB0aGUgKG9yIGEgbW9zdCBjb21tb24pIHBhdGhuYW1lIHNlcGFyYXRvciAoJy8nIG9yICdcXCcpCiAgLSBvcy5leHRzZXAgaXMgdGhlIGV4dGVuc2lvbiBzZXBhcmF0b3IgKGFsd2F5cyAnLicpCiAgLSBvcy5hbHRzZXAgaXMgdGhlIGFsdGVybmF0ZSBwYXRobmFtZSBzZXBhcmF0b3IgKE5vbmUgb3IgJy8nKQogIC0gb3MucGF0aHNlcCBpcyB0aGUgY29tcG9uZW50IHNlcGFyYXRvciB1c2VkIGluICRQQVRIIGV0YwogIC0gb3MubGluZXNlcCBpcyB0aGUgbGluZSBzZXBhcmF0b3IgaW4gdGV4dCBmaWxlcyAoJ1xyJyBvciAnXG4nIG9yICdcclxuJykKICAtIG9zLmRlZnBhdGggaXMgdGhlIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIGV4ZWN1dGFibGVzCiAgLSBvcy5kZXZudWxsIGlzIHRoZSBmaWxlIHBhdGggb2YgdGhlIG51bGwgZGV2aWNlICgnL2Rldi9udWxsJywgZXRjLikKClByb2dyYW1zIHRoYXQgaW1wb3J0IGFuZCB1c2UgJ29zJyBzdGFuZCBhIGJldHRlciBjaGFuY2Ugb2YgYmVpbmcKcG9ydGFibGUgYmV0d2VlbiBkaWZmZXJlbnQgcGxhdGZvcm1zLiAgT2YgY291cnNlLCB0aGV5IG11c3QgdGhlbgpvbmx5IHVzZSBmdW5jdGlvbnMgdGhhdCBhcmUgZGVmaW5lZCBieSBhbGwgcGxhdGZvcm1zIChlLmcuLCB1bmxpbmsKYW5kIG9wZW5kaXIpLCBhbmQgbGVhdmUgYWxsIHBhdGhuYW1lIG1hbmlwdWxhdGlvbiB0byBvcy5wYXRoCihlLmcuLCBzcGxpdCBhbmQgam9pbikuCiIiIgoKIycKaW1wb3J0IGFiYwppbXBvcnQgc3lzCmltcG9ydCBzdGF0IGFzIHN0Cgpmcm9tIF9jb2xsZWN0aW9uc19hYmMgaW1wb3J0IF9jaGVja19tZXRob2RzCgpHZW5lcmljQWxpYXMgPSB0eXBlKGxpc3RbaW50XSkKCl9uYW1lcyA9IHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwoKIyBOb3RlOiAgbW9yZSBuYW1lcyBhcmUgYWRkZWQgdG8gX19hbGxfXyBsYXRlci4KX19hbGxfXyA9IFsiYWx0c2VwIiwgImN1cmRpciIsICJwYXJkaXIiLCAic2VwIiwgInBhdGhzZXAiLCAibGluZXNlcCIsCiAgICAgICAgICAgImRlZnBhdGgiLCAibmFtZSIsICJwYXRoIiwgImRldm51bGwiLCAiU0VFS19TRVQiLCAiU0VFS19DVVIiLAogICAgICAgICAgICJTRUVLX0VORCIsICJmc2VuY29kZSIsICJmc2RlY29kZSIsICJnZXRfZXhlY19wYXRoIiwgImZkb3BlbiIsCiAgICAgICAgICAgImV4dHNlcCJdCgpkZWYgX2V4aXN0cyhuYW1lKToKICAgIHJldHVybiBuYW1lIGluIGdsb2JhbHMoKQoKZGVmIF9nZXRfZXhwb3J0c19saXN0KG1vZHVsZSk6CiAgICB0cnk6CiAgICAgICAgcmV0dXJuIGxpc3QobW9kdWxlLl9fYWxsX18pCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgcmV0dXJuIFtuIGZvciBuIGluIGRpcihtb2R1bGUpIGlmIG5bMF0gIT0gJ18nXQoKIyBBbnkgbmV3IGRlcGVuZGVuY2llcyBvZiB0aGUgb3MgbW9kdWxlIGFuZC9vciBjaGFuZ2VzIGluIHBhdGggc2VwYXJhdG9yCiMgcmVxdWlyZXMgdXBkYXRpbmcgaW1wb3J0bGliIGFzIHdlbGwuCmlmICdwb3NpeCcgaW4gX25hbWVzOgogICAgbmFtZSA9ICdwb3NpeCcKICAgIGxpbmVzZXAgPSAnXG4nCiAgICBmcm9tIHBvc2l4IGltcG9ydCAqCiAgICB0cnk6CiAgICAgICAgZnJvbSBwb3NpeCBpbXBvcnQgX2V4aXQKICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIHBhc3MKICAgIGltcG9ydCBwb3NpeHBhdGggYXMgcGF0aAoKICAgIHRyeToKICAgICAgICBmcm9tIHBvc2l4IGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICBwYXNzCgogICAgaW1wb3J0IHBvc2l4CiAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChwb3NpeCkpCiAgICBkZWwgcG9zaXgKCmVsaWYgJ250JyBpbiBfbmFtZXM6CiAgICBuYW1lID0gJ250JwogICAgbGluZXNlcCA9ICdcclxuJwogICAgZnJvbSBudCBpbXBvcnQgKgogICAgdHJ5OgogICAgICAgIGZyb20gbnQgaW1wb3J0IF9leGl0CiAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICBwYXNzCiAgICBpbXBvcnQgbnRwYXRoIGFzIHBhdGgKCiAgICBpbXBvcnQgbnQKICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KG50KSkKICAgIGRlbCBudAoKICAgIHRyeToKICAgICAgICBmcm9tIG50IGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICBwYXNzCgplbHNlOgogICAgcmFpc2UgSW1wb3J0RXJyb3IoJ25vIG9zIHNwZWNpZmljIG1vZHVsZSBmb3VuZCcpCgpzeXMubW9kdWxlc1snb3MucGF0aCddID0gcGF0aApmcm9tIG9zLnBhdGggaW1wb3J0IChjdXJkaXIsIHBhcmRpciwgc2VwLCBwYXRoc2VwLCBkZWZwYXRoLCBleHRzZXAsIGFsdHNlcCwKICAgIGRldm51bGwpCgpkZWwgX25hbWVzCgoKaWYgX2V4aXN0cygiX2hhdmVfZnVuY3Rpb25zIik6CiAgICBfZ2xvYmFscyA9IGdsb2JhbHMoKQogICAgZGVmIF9hZGQoc3RyLCBmbik6CiAgICAgICAgaWYgKGZuIGluIF9nbG9iYWxzKSBhbmQgKHN0ciBpbiBfaGF2ZV9mdW5jdGlvbnMpOgogICAgICAgICAgICBfc2V0LmFkZChfZ2xvYmFsc1tmbl0pCgogICAgX3NldCA9IHNldCgpCiAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKICAgIF9hZGQoIkhBVkVfRkNITU9EQVQiLCAgICJjaG1vZCIpCiAgICBfYWRkKCJIQVZFX0ZDSE9XTkFUIiwgICAiY2hvd24iKQogICAgX2FkZCgiSEFWRV9GU1RBVEFUIiwgICAgInN0YXQiKQogICAgX2FkZCgiSEFWRV9GVVRJTUVTQVQiLCAgInV0aW1lIikKICAgIF9hZGQoIkhBVkVfTElOS0FUIiwgICAgICJsaW5rIikKICAgIF9hZGQoIkhBVkVfTUtESVJBVCIsICAgICJta2RpciIpCiAgICBfYWRkKCJIQVZFX01LRklGT0FUIiwgICAibWtmaWZvIikKICAgIF9hZGQoIkhBVkVfTUtOT0RBVCIsICAgICJta25vZCIpCiAgICBfYWRkKCJIQVZFX09QRU5BVCIsICAgICAib3BlbiIpCiAgICBfYWRkKCJIQVZFX1JFQURMSU5LQVQiLCAicmVhZGxpbmsiKQogICAgX2FkZCgiSEFWRV9SRU5BTUVBVCIsICAgInJlbmFtZSIpCiAgICBfYWRkKCJIQVZFX1NZTUxJTktBVCIsICAic3ltbGluayIpCiAgICBfYWRkKCJIQVZFX1VOTElOS0FUIiwgICAidW5saW5rIikKICAgIF9hZGQoIkhBVkVfVU5MSU5LQVQiLCAgICJybWRpciIpCiAgICBfYWRkKCJIQVZFX1VUSU1FTlNBVCIsICAidXRpbWUiKQogICAgc3VwcG9ydHNfZGlyX2ZkID0gX3NldAoKICAgIF9zZXQgPSBzZXQoKQogICAgX2FkZCgiSEFWRV9GQUNDRVNTQVQiLCAgImFjY2VzcyIpCiAgICBzdXBwb3J0c19lZmZlY3RpdmVfaWRzID0gX3NldAoKICAgIF9zZXQgPSBzZXQoKQogICAgX2FkZCgiSEFWRV9GQ0hESVIiLCAgICAgImNoZGlyIikKICAgIF9hZGQoIkhBVkVfRkNITU9EIiwgICAgICJjaG1vZCIpCiAgICBfYWRkKCJIQVZFX0ZDSE9XTiIsICAgICAiY2hvd24iKQogICAgX2FkZCgiSEFWRV9GRE9QRU5ESVIiLCAgImxpc3RkaXIiKQogICAgX2FkZCgiSEFWRV9GRE9QRU5ESVIiLCAgInNjYW5kaXIiKQogICAgX2FkZCgiSEFWRV9GRVhFQ1ZFIiwgICAgImV4ZWN2ZSIpCiAgICBfc2V0LmFkZChzdGF0KSAjIGZzdGF0IGFsd2F5cyB3b3JrcwogICAgX2FkZCgiSEFWRV9GVFJVTkNBVEUiLCAgInRydW5jYXRlIikKICAgIF9hZGQoIkhBVkVfRlVUSU1FTlMiLCAgICJ1dGltZSIpCiAgICBfYWRkKCJIQVZFX0ZVVElNRVMiLCAgICAidXRpbWUiKQogICAgX2FkZCgiSEFWRV9GUEFUSENPTkYiLCAgInBhdGhjb25mIikKICAgIGlmIF9leGlzdHMoInN0YXR2ZnMiKSBhbmQgX2V4aXN0cygiZnN0YXR2ZnMiKTogIyBtYWMgb3MgeDEwLjMKICAgICAgICBfYWRkKCJIQVZFX0ZTVEFUVkZTIiwgInN0YXR2ZnMiKQogICAgc3VwcG9ydHNfZmQgPSBfc2V0CgogICAgX3NldCA9IHNldCgpCiAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKICAgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgc3VwcG9ydCBsY2htb2QoKS4gIE9mdGVuIHRoZSBmdW5jdGlvbiBleGlzdHMKICAgICMgYW55d2F5LCBhcyBhIHN0dWIgdGhhdCBhbHdheXMgcmV0dXJucyBFTk9TVVAgb3IgcGVyaGFwcyBFT1BOT1RTVVBQLgogICAgIyAoTm8sIEkgZG9uJ3Qga25vdyB3aHkgdGhhdCdzIGEgZ29vZCBkZXNpZ24uKSAgLi9jb25maWd1cmUgd2lsbCBkZXRlY3QKICAgICMgdGhpcyBhbmQgcmVqZWN0IGl0LS1zbyBIQVZFX0xDSE1PRCBzdGlsbCB3b24ndCBiZSBkZWZpbmVkIG9uIHN1Y2gKICAgICMgcGxhdGZvcm1zLiAgVGhpcyBpcyBWZXJ5IEhlbHBmdWwuCiAgICAjCiAgICAjIEhvd2V2ZXIsIHNvbWV0aW1lcyBwbGF0Zm9ybXMgd2l0aG91dCBhIHdvcmtpbmcgbGNobW9kKCkgKmRvKiBoYXZlCiAgICAjIGZjaG1vZGF0KCkuICAoRXhhbXBsZXM6IExpbnV4IGtlcm5lbCAzLjIgd2l0aCBnbGliYyAyLjE1LAogICAgIyBPcGVuSW5kaWFuYSAzLnguKSAgQW5kIGZjaG1vZGF0KCkgaGFzIGEgZmxhZyB0aGF0IHRoZW9yZXRpY2FsbHkgbWFrZXMKICAgICMgaXQgYmVoYXZlIGxpa2UgbGNobW9kKCkuICBTbyBpbiB0aGVvcnkgaXQgd291bGQgYmUgYSBzdWl0YWJsZQogICAgIyByZXBsYWNlbWVudCBmb3IgbGNobW9kKCkuICBCdXQgd2hlbiBsY2htb2QoKSBkb2Vzbid0IHdvcmssIGZjaG1vZGF0KCkncwogICAgIyBmbGFnIGRvZXNuJ3Qgd29yayAqZWl0aGVyKi4gIFNhZGx5IC4vY29uZmlndXJlIGlzbid0IHNvcGhpc3RpY2F0ZWQKICAgICMgZW5vdWdoIHRvIGRldGVjdCB0aGlzIGNvbmRpdGlvbi0taXQgb25seSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90CiAgICAjIGZjaG1vZGF0KCkgbWluaW1hbGx5IHdvcmtzLgogICAgIwogICAgIyBUaGVyZWZvcmUgd2Ugc2ltcGx5IGlnbm9yZSBmY2htb2RhdCgpIHdoZW4gZGVjaWRpbmcgd2hldGhlciBvciBub3QKICAgICMgb3MuY2htb2Qgc3VwcG9ydHMgZm9sbG93X3N5bWxpbmtzLiAgSnVzdCBjaGVja2luZyBsY2htb2QoKSBpcwogICAgIyBzdWZmaWNpZW50LiAgQWZ0ZXIgYWxsLS1pZiB5b3UgaGF2ZSBhIHdvcmtpbmcgZmNobW9kYXQoKSwgeW91cgogICAgIyBsY2htb2QoKSBhbG1vc3QgY2VydGFpbmx5IHdvcmtzIHRvby4KICAgICMKICAgICMgX2FkZCgiSEFWRV9GQ0hNT0RBVCIsICAgImNobW9kIikKICAgIF9hZGQoIkhBVkVfRkNIT1dOQVQiLCAgICJjaG93biIpCiAgICBfYWRkKCJIQVZFX0ZTVEFUQVQiLCAgICAic3RhdCIpCiAgICBfYWRkKCJIQVZFX0xDSEZMQUdTIiwgICAiY2hmbGFncyIpCiAgICBfYWRkKCJIQVZFX0xDSE1PRCIsICAgICAiY2htb2QiKQogICAgaWYgX2V4aXN0cygibGNob3duIik6ICMgbWFjIG9zIHgxMC4zCiAgICAgICAgX2FkZCgiSEFWRV9MQ0hPV04iLCAiY2hvd24iKQogICAgX2FkZCgiSEFWRV9MSU5LQVQiLCAgICAgImxpbmsiKQogICAgX2FkZCgiSEFWRV9MVVRJTUVTIiwgICAgInV0aW1lIikKICAgIF9hZGQoIkhBVkVfTFNUQVQiLCAgICAgICJzdGF0IikKICAgIF9hZGQoIkhBVkVfRlNUQVRBVCIsICAgICJzdGF0IikKICAgIF9hZGQoIkhBVkVfVVRJTUVOU0FUIiwgICJ1dGltZSIpCiAgICBfYWRkKCJNU19XSU5ET1dTIiwgICAgICAic3RhdCIpCiAgICBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3MgPSBfc2V0CgogICAgZGVsIF9zZXQKICAgIGRlbCBfaGF2ZV9mdW5jdGlvbnMKICAgIGRlbCBfZ2xvYmFscwogICAgZGVsIF9hZGQKCgojIFB5dGhvbiB1c2VzIGZpeGVkIHZhbHVlcyBmb3IgdGhlIFNFRUtfIGNvbnN0YW50czsgdGhleSBhcmUgbWFwcGVkCiMgdG8gbmF0aXZlIGNvbnN0YW50cyBpZiBuZWNlc3NhcnkgaW4gcG9zaXhtb2R1bGUuYwojIE90aGVyIHBvc3NpYmxlIFNFRUsgdmFsdWVzIGFyZSBkaXJlY3RseSBpbXBvcnRlZCBmcm9tIHBvc2l4bW9kdWxlLmMKU0VFS19TRVQgPSAwClNFRUtfQ1VSID0gMQpTRUVLX0VORCA9IDIKCiMgU3VwZXIgZGlyZWN0b3J5IHV0aWxpdGllcy4KIyAoSW5zcGlyZWQgYnkgRXJpYyBSYXltb25kOyB0aGUgZG9jIHN0cmluZ3MgYXJlIG1vc3RseSBoaXMpCgpkZWYgbWFrZWRpcnMobmFtZSwgbW9kZT0wbzc3NywgZXhpc3Rfb2s9RmFsc2UpOgogICAgIiIibWFrZWRpcnMobmFtZSBbLCBtb2RlPTBvNzc3XVssIGV4aXN0X29rPUZhbHNlXSkKCiAgICBTdXBlci1ta2RpcjsgY3JlYXRlIGEgbGVhZiBkaXJlY3RvcnkgYW5kIGFsbCBpbnRlcm1lZGlhdGUgb25lcy4gIFdvcmtzIGxpa2UKICAgIG1rZGlyLCBleGNlcHQgdGhhdCBhbnkgaW50ZXJtZWRpYXRlIHBhdGggc2VnbWVudCAobm90IGp1c3QgdGhlIHJpZ2h0bW9zdCkKICAgIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4gSWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgYWxyZWFkeQogICAgZXhpc3RzLCByYWlzZSBhbiBPU0Vycm9yIGlmIGV4aXN0X29rIGlzIEZhbHNlLiBPdGhlcndpc2Ugbm8gZXhjZXB0aW9uIGlzCiAgICByYWlzZWQuICBUaGlzIGlzIHJlY3Vyc2l2ZS4KCiAgICAiIiIKICAgIGhlYWQsIHRhaWwgPSBwYXRoLnNwbGl0KG5hbWUpCiAgICBpZiBub3QgdGFpbDoKICAgICAgICBoZWFkLCB0YWlsID0gcGF0aC5zcGxpdChoZWFkKQogICAgaWYgaGVhZCBhbmQgdGFpbCBhbmQgbm90IHBhdGguZXhpc3RzKGhlYWQpOgogICAgICAgIHRyeToKICAgICAgICAgICAgbWFrZWRpcnMoaGVhZCwgZXhpc3Rfb2s9ZXhpc3Rfb2spCiAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgIyBEZWZlYXRzIHJhY2UgY29uZGl0aW9uIHdoZW4gYW5vdGhlciB0aHJlYWQgY3JlYXRlZCB0aGUgcGF0aAogICAgICAgICAgICBwYXNzCiAgICAgICAgY2RpciA9IGN1cmRpcgogICAgICAgIGlmIGlzaW5zdGFuY2UodGFpbCwgYnl0ZXMpOgogICAgICAgICAgICBjZGlyID0gYnl0ZXMoY3VyZGlyLCAnQVNDSUknKQogICAgICAgIGlmIHRhaWwgPT0gY2RpcjogICAgICAgICAgICMgeHh4L25ld2Rpci8uIGV4aXN0cyBpZiB4eHgvbmV3ZGlyIGV4aXN0cwogICAgICAgICAgICByZXR1cm4KICAgIHRyeToKICAgICAgICBta2RpcihuYW1lLCBtb2RlKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIyBDYW5ub3QgcmVseSBvbiBjaGVja2luZyBmb3IgRUVYSVNULCBzaW5jZSB0aGUgb3BlcmF0aW5nIHN5c3RlbQogICAgICAgICMgY291bGQgZ2l2ZSBwcmlvcml0eSB0byBvdGhlciBlcnJvcnMgbGlrZSBFQUNDRVMgb3IgRVJPRlMKICAgICAgICBpZiBub3QgZXhpc3Rfb2sgb3Igbm90IHBhdGguaXNkaXIobmFtZSk6CiAgICAgICAgICAgIHJhaXNlCgpkZWYgcmVtb3ZlZGlycyhuYW1lKToKICAgICIiInJlbW92ZWRpcnMobmFtZSkKCiAgICBTdXBlci1ybWRpcjsgcmVtb3ZlIGEgbGVhZiBkaXJlY3RvcnkgYW5kIGFsbCBlbXB0eSBpbnRlcm1lZGlhdGUKICAgIG9uZXMuICBXb3JrcyBsaWtlIHJtZGlyIGV4Y2VwdCB0aGF0LCBpZiB0aGUgbGVhZiBkaXJlY3RvcnkgaXMKICAgIHN1Y2Nlc3NmdWxseSByZW1vdmVkLCBkaXJlY3RvcmllcyBjb3JyZXNwb25kaW5nIHRvIHJpZ2h0bW9zdCBwYXRoCiAgICBzZWdtZW50cyB3aWxsIGJlIHBydW5lZCBhd2F5IHVudGlsIGVpdGhlciB0aGUgd2hvbGUgcGF0aCBpcwogICAgY29uc3VtZWQgb3IgYW4gZXJyb3Igb2NjdXJzLiAgRXJyb3JzIGR1cmluZyB0aGlzIGxhdHRlciBwaGFzZSBhcmUKICAgIGlnbm9yZWQgLS0gdGhleSBnZW5lcmFsbHkgbWVhbiB0aGF0IGEgZGlyZWN0b3J5IHdhcyBub3QgZW1wdHkuCgogICAgIiIiCiAgICBybWRpcihuYW1lKQogICAgaGVhZCwgdGFpbCA9IHBhdGguc3BsaXQobmFtZSkKICAgIGlmIG5vdCB0YWlsOgogICAgICAgIGhlYWQsIHRhaWwgPSBwYXRoLnNwbGl0KGhlYWQpCiAgICB3aGlsZSBoZWFkIGFuZCB0YWlsOgogICAgICAgIHRyeToKICAgICAgICAgICAgcm1kaXIoaGVhZCkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBoZWFkLCB0YWlsID0gcGF0aC5zcGxpdChoZWFkKQoKZGVmIHJlbmFtZXMob2xkLCBuZXcpOgogICAgIiIicmVuYW1lcyhvbGQsIG5ldykKCiAgICBTdXBlci1yZW5hbWU7IGNyZWF0ZSBkaXJlY3RvcmllcyBhcyBuZWNlc3NhcnkgYW5kIGRlbGV0ZSBhbnkgbGVmdAogICAgZW1wdHkuICBXb3JrcyBsaWtlIHJlbmFtZSwgZXhjZXB0IGNyZWF0aW9uIG9mIGFueSBpbnRlcm1lZGlhdGUKICAgIGRpcmVjdG9yaWVzIG5lZWRlZCB0byBtYWtlIHRoZSBuZXcgcGF0aG5hbWUgZ29vZCBpcyBhdHRlbXB0ZWQKICAgIGZpcnN0LiAgQWZ0ZXIgdGhlIHJlbmFtZSwgZGlyZWN0b3JpZXMgY29ycmVzcG9uZGluZyB0byByaWdodG1vc3QKICAgIHBhdGggc2VnbWVudHMgb2YgdGhlIG9sZCBuYW1lIHdpbGwgYmUgcHJ1bmVkIHVudGlsIGVpdGhlciB0aGUKICAgIHdob2xlIHBhdGggaXMgY29uc3VtZWQgb3IgYSBub25lbXB0eSBkaXJlY3RvcnkgaXMgZm91bmQuCgogICAgTm90ZTogdGhpcyBmdW5jdGlvbiBjYW4gZmFpbCB3aXRoIHRoZSBuZXcgZGlyZWN0b3J5IHN0cnVjdHVyZSBtYWRlCiAgICBpZiB5b3UgbGFjayBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gdW5saW5rIHRoZSBsZWFmIGRpcmVjdG9yeSBvcgogICAgZmlsZS4KCiAgICAiIiIKICAgIGhlYWQsIHRhaWwgPSBwYXRoLnNwbGl0KG5ldykKICAgIGlmIGhlYWQgYW5kIHRhaWwgYW5kIG5vdCBwYXRoLmV4aXN0cyhoZWFkKToKICAgICAgICBtYWtlZGlycyhoZWFkKQogICAgcmVuYW1lKG9sZCwgbmV3KQogICAgaGVhZCwgdGFpbCA9IHBhdGguc3BsaXQob2xkKQogICAgaWYgaGVhZCBhbmQgdGFpbDoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJlbW92ZWRpcnMoaGVhZCkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcGFzcwoKX19hbGxfXy5leHRlbmQoWyJtYWtlZGlycyIsICJyZW1vdmVkaXJzIiwgInJlbmFtZXMiXSkKCmRlZiB3YWxrKHRvcCwgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsIGZvbGxvd2xpbmtzPUZhbHNlKToKICAgICIiIkRpcmVjdG9yeSB0cmVlIGdlbmVyYXRvci4KCiAgICBGb3IgZWFjaCBkaXJlY3RvcnkgaW4gdGhlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCB0b3AgKGluY2x1ZGluZyB0b3AKICAgIGl0c2VsZiwgYnV0IGV4Y2x1ZGluZyAnLicgYW5kICcuLicpLCB5aWVsZHMgYSAzLXR1cGxlCgogICAgICAgIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMKCiAgICBkaXJwYXRoIGlzIGEgc3RyaW5nLCB0aGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5LiAgZGlybmFtZXMgaXMgYSBsaXN0IG9mCiAgICB0aGUgbmFtZXMgb2YgdGhlIHN1YmRpcmVjdG9yaWVzIGluIGRpcnBhdGggKGluY2x1ZGluZyBzeW1saW5rcyB0byBkaXJlY3RvcmllcywKICAgIGFuZCBleGNsdWRpbmcgJy4nIGFuZCAnLi4nKS4KICAgIGZpbGVuYW1lcyBpcyBhIGxpc3Qgb2YgdGhlIG5hbWVzIG9mIHRoZSBub24tZGlyZWN0b3J5IGZpbGVzIGluIGRpcnBhdGguCiAgICBOb3RlIHRoYXQgdGhlIG5hbWVzIGluIHRoZSBsaXN0cyBhcmUganVzdCBuYW1lcywgd2l0aCBubyBwYXRoIGNvbXBvbmVudHMuCiAgICBUbyBnZXQgYSBmdWxsIHBhdGggKHdoaWNoIGJlZ2lucyB3aXRoIHRvcCkgdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBpbgogICAgZGlycGF0aCwgZG8gb3MucGF0aC5qb2luKGRpcnBhdGgsIG5hbWUpLgoKICAgIElmIG9wdGlvbmFsIGFyZyAndG9wZG93bicgaXMgdHJ1ZSBvciBub3Qgc3BlY2lmaWVkLCB0aGUgdHJpcGxlIGZvciBhCiAgICBkaXJlY3RvcnkgaXMgZ2VuZXJhdGVkIGJlZm9yZSB0aGUgdHJpcGxlcyBmb3IgYW55IG9mIGl0cyBzdWJkaXJlY3RvcmllcwogICAgKGRpcmVjdG9yaWVzIGFyZSBnZW5lcmF0ZWQgdG9wIGRvd24pLiAgSWYgdG9wZG93biBpcyBmYWxzZSwgdGhlIHRyaXBsZQogICAgZm9yIGEgZGlyZWN0b3J5IGlzIGdlbmVyYXRlZCBhZnRlciB0aGUgdHJpcGxlcyBmb3IgYWxsIG9mIGl0cwogICAgc3ViZGlyZWN0b3JpZXMgKGRpcmVjdG9yaWVzIGFyZSBnZW5lcmF0ZWQgYm90dG9tIHVwKS4KCiAgICBXaGVuIHRvcGRvd24gaXMgdHJ1ZSwgdGhlIGNhbGxlciBjYW4gbW9kaWZ5IHRoZSBkaXJuYW1lcyBsaXN0IGluLXBsYWNlCiAgICAoZS5nLiwgdmlhIGRlbCBvciBzbGljZSBhc3NpZ25tZW50KSwgYW5kIHdhbGsgd2lsbCBvbmx5IHJlY3Vyc2UgaW50byB0aGUKICAgIHN1YmRpcmVjdG9yaWVzIHdob3NlIG5hbWVzIHJlbWFpbiBpbiBkaXJuYW1lczsgdGhpcyBjYW4gYmUgdXNlZCB0byBwcnVuZSB0aGUKICAgIHNlYXJjaCwgb3IgdG8gaW1wb3NlIGEgc3BlY2lmaWMgb3JkZXIgb2YgdmlzaXRpbmcuICBNb2RpZnlpbmcgZGlybmFtZXMgd2hlbgogICAgdG9wZG93biBpcyBmYWxzZSBoYXMgbm8gZWZmZWN0IG9uIHRoZSBiZWhhdmlvciBvZiBvcy53YWxrKCksIHNpbmNlIHRoZQogICAgZGlyZWN0b3JpZXMgaW4gZGlybmFtZXMgaGF2ZSBhbHJlYWR5IGJlZW4gZ2VuZXJhdGVkIGJ5IHRoZSB0aW1lIGRpcm5hbWVzCiAgICBpdHNlbGYgaXMgZ2VuZXJhdGVkLiBObyBtYXR0ZXIgdGhlIHZhbHVlIG9mIHRvcGRvd24sIHRoZSBsaXN0IG9mCiAgICBzdWJkaXJlY3RvcmllcyBpcyByZXRyaWV2ZWQgYmVmb3JlIHRoZSB0dXBsZXMgZm9yIHRoZSBkaXJlY3RvcnkgYW5kIGl0cwogICAgc3ViZGlyZWN0b3JpZXMgYXJlIGdlbmVyYXRlZC4KCiAgICBCeSBkZWZhdWx0IGVycm9ycyBmcm9tIHRoZSBvcy5zY2FuZGlyKCkgY2FsbCBhcmUgaWdub3JlZC4gIElmCiAgICBvcHRpb25hbCBhcmcgJ29uZXJyb3InIGlzIHNwZWNpZmllZCwgaXQgc2hvdWxkIGJlIGEgZnVuY3Rpb247IGl0CiAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgYW4gT1NFcnJvciBpbnN0YW5jZS4gIEl0IGNhbgogICAgcmVwb3J0IHRoZSBlcnJvciB0byBjb250aW51ZSB3aXRoIHRoZSB3YWxrLCBvciByYWlzZSB0aGUgZXhjZXB0aW9uCiAgICB0byBhYm9ydCB0aGUgd2Fsay4gIE5vdGUgdGhhdCB0aGUgZmlsZW5hbWUgaXMgYXZhaWxhYmxlIGFzIHRoZQogICAgZmlsZW5hbWUgYXR0cmlidXRlIG9mIHRoZSBleGNlcHRpb24gb2JqZWN0LgoKICAgIEJ5IGRlZmF1bHQsIG9zLndhbGsgZG9lcyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzIHRvIHN1YmRpcmVjdG9yaWVzIG9uCiAgICBzeXN0ZW1zIHRoYXQgc3VwcG9ydCB0aGVtLiAgSW4gb3JkZXIgdG8gZ2V0IHRoaXMgZnVuY3Rpb25hbGl0eSwgc2V0IHRoZQogICAgb3B0aW9uYWwgYXJndW1lbnQgJ2ZvbGxvd2xpbmtzJyB0byB0cnVlLgoKICAgIENhdXRpb246ICBpZiB5b3UgcGFzcyBhIHJlbGF0aXZlIHBhdGhuYW1lIGZvciB0b3AsIGRvbid0IGNoYW5nZSB0aGUKICAgIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYmV0d2VlbiByZXN1bXB0aW9ucyBvZiB3YWxrLiAgd2FsayBuZXZlcgogICAgY2hhbmdlcyB0aGUgY3VycmVudCBkaXJlY3RvcnksIGFuZCBhc3N1bWVzIHRoYXQgdGhlIGNsaWVudCBkb2Vzbid0CiAgICBlaXRoZXIuCgogICAgRXhhbXBsZToKCiAgICBpbXBvcnQgb3MKICAgIGZyb20gb3MucGF0aCBpbXBvcnQgam9pbiwgZ2V0c2l6ZQogICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoJ3B5dGhvbi9MaWIvZW1haWwnKToKICAgICAgICBwcmludChyb290LCAiY29uc3VtZXMgIikKICAgICAgICBwcmludChzdW0oZ2V0c2l6ZShqb2luKHJvb3QsIG5hbWUpKSBmb3IgbmFtZSBpbiBmaWxlcyksIGVuZD0iICIpCiAgICAgICAgcHJpbnQoImJ5dGVzIGluIiwgbGVuKGZpbGVzKSwgIm5vbi1kaXJlY3RvcnkgZmlsZXMiKQogICAgICAgIGlmICdDVlMnIGluIGRpcnM6CiAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKCiAgICAiIiIKICAgIHN5cy5hdWRpdCgib3Mud2FsayIsIHRvcCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICByZXR1cm4gX3dhbGsoZnNwYXRoKHRvcCksIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQoKZGVmIF93YWxrKHRvcCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpOgogICAgZGlycyA9IFtdCiAgICBub25kaXJzID0gW10KICAgIHdhbGtfZGlycyA9IFtdCgogICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBwZXJtaXNzaW9uIGZvciB0b3AsIGluIHdoaWNoIGNhc2Ugd2UgY2FuJ3QKICAgICMgZ2V0IGEgbGlzdCBvZiB0aGUgZmlsZXMgdGhlIGRpcmVjdG9yeSBjb250YWlucy4gIG9zLndhbGsKICAgICMgYWx3YXlzIHN1cHByZXNzZWQgdGhlIGV4Y2VwdGlvbiB0aGVuLCByYXRoZXIgdGhhbiBibG93IHVwIGZvciBhCiAgICAjIG1pbm9yIHJlYXNvbiB3aGVuIChzYXkpIGEgdGhvdXNhbmQgcmVhZGFibGUgZGlyZWN0b3JpZXMgYXJlIHN0aWxsCiAgICAjIGxlZnQgdG8gdmlzaXQuICBUaGF0IGxvZ2ljIGlzIGNvcGllZCBoZXJlLgogICAgdHJ5OgogICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQogICAgICAgICMgdG8gZWFybGllciBpbXBvcnQtKi4KICAgICAgICBzY2FuZGlyX2l0ID0gc2NhbmRpcih0b3ApCiAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICBvbmVycm9yKGVycm9yKQogICAgICAgIHJldHVybgoKICAgIHdpdGggc2NhbmRpcl9pdDoKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZW50cnkgPSBuZXh0KHNjYW5kaXJfaXQpCiAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgb25lcnJvcihlcnJvcikKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaXNfZGlyID0gZW50cnkuaXNfZGlyKCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAjIElmIGlzX2RpcigpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZSBlbnRyeSBpcyBub3QKICAgICAgICAgICAgICAgICMgYSBkaXJlY3RvcnksIHNhbWUgYmVoYXZpb3VyIHRoYW4gb3MucGF0aC5pc2RpcigpLgogICAgICAgICAgICAgICAgaXNfZGlyID0gRmFsc2UKCiAgICAgICAgICAgIGlmIGlzX2RpcjoKICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQoKICAgICAgICAgICAgaWYgbm90IHRvcGRvd24gYW5kIGlzX2RpcjoKICAgICAgICAgICAgICAgICMgQm90dG9tLXVwOiByZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yeSwgYnV0IGV4Y2x1ZGUgc3ltbGlua3MgdG8KICAgICAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgaWYgZm9sbG93bGlua3MgaXMgRmFsc2UKICAgICAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzOgogICAgICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IFRydWUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgaXNfc3ltbGluaygpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KICAgICAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgogICAgICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluawoKICAgICAgICAgICAgICAgIGlmIHdhbGtfaW50bzoKICAgICAgICAgICAgICAgICAgICB3YWxrX2RpcnMuYXBwZW5kKGVudHJ5LnBhdGgpCgogICAgIyBZaWVsZCBiZWZvcmUgcmVjdXJzaW9uIGlmIGdvaW5nIHRvcCBkb3duCiAgICBpZiB0b3Bkb3duOgogICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwoKICAgICAgICAjIFJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3JpZXMKICAgICAgICBpc2xpbmssIGpvaW4gPSBwYXRoLmlzbGluaywgcGF0aC5qb2luCiAgICAgICAgZm9yIGRpcm5hbWUgaW4gZGlyczoKICAgICAgICAgICAgbmV3X3BhdGggPSBqb2luKHRvcCwgZGlybmFtZSkKICAgICAgICAgICAgIyBJc3N1ZSAjMjM2MDU6IG9zLnBhdGguaXNsaW5rKCkgaXMgdXNlZCBpbnN0ZWFkIG9mIGNhY2hpbmcKICAgICAgICAgICAgIyBlbnRyeS5pc19zeW1saW5rKCkgcmVzdWx0IGR1cmluZyB0aGUgbG9vcCBvbiBvcy5zY2FuZGlyKCkgYmVjYXVzZQogICAgICAgICAgICAjIHRoZSBjYWxsZXIgY2FuIHJlcGxhY2UgdGhlIGRpcmVjdG9yeSBlbnRyeSBkdXJpbmcgdGhlICJ5aWVsZCIKICAgICAgICAgICAgIyBhYm92ZS4KICAgICAgICAgICAgaWYgZm9sbG93bGlua3Mgb3Igbm90IGlzbGluayhuZXdfcGF0aCk6CiAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIF93YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKICAgIGVsc2U6CiAgICAgICAgIyBSZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yaWVzCiAgICAgICAgZm9yIG5ld19wYXRoIGluIHdhbGtfZGlyczoKICAgICAgICAgICAgeWllbGQgZnJvbSBfd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgICAgIyBZaWVsZCBhZnRlciByZWN1cnNpb24gaWYgZ29pbmcgYm90dG9tIHVwCiAgICAgICAgeWllbGQgdG9wLCBkaXJzLCBub25kaXJzCgpfX2FsbF9fLmFwcGVuZCgid2FsayIpCgppZiB7b3Blbiwgc3RhdH0gPD0gc3VwcG9ydHNfZGlyX2ZkIGFuZCB7c2NhbmRpciwgc3RhdH0gPD0gc3VwcG9ydHNfZmQ6CgogICAgZGVmIGZ3YWxrKHRvcD0iLiIsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1Ob25lKToKICAgICAgICAiIiJEaXJlY3RvcnkgdHJlZSBnZW5lcmF0b3IuCgogICAgICAgIFRoaXMgYmVoYXZlcyBleGFjdGx5IGxpa2Ugd2FsaygpLCBleGNlcHQgdGhhdCBpdCB5aWVsZHMgYSA0LXR1cGxlCgogICAgICAgICAgICBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzLCBkaXJmZAoKICAgICAgICBgZGlycGF0aGAsIGBkaXJuYW1lc2AgYW5kIGBmaWxlbmFtZXNgIGFyZSBpZGVudGljYWwgdG8gd2FsaygpIG91dHB1dCwKICAgICAgICBhbmQgYGRpcmZkYCBpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gdGhlIGRpcmVjdG9yeSBgZGlycGF0aGAuCgogICAgICAgIFRoZSBhZHZhbnRhZ2Ugb2YgZndhbGsoKSBvdmVyIHdhbGsoKSBpcyB0aGF0IGl0J3Mgc2FmZSBhZ2FpbnN0IHN5bWxpbmsKICAgICAgICByYWNlcyAod2hlbiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UpLgoKICAgICAgICBJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAogICAgICAgICAgYW5kIHRvcCBzaG91bGQgYmUgcmVsYXRpdmU7IHRvcCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCiAgICAgICAgICAoZGlyX2ZkIGlzIGFsd2F5cyBzdXBwb3J0ZWQgZm9yIGZ3YWxrLikKCiAgICAgICAgQ2F1dGlvbjoKICAgICAgICBTaW5jZSBmd2FsaygpIHlpZWxkcyBmaWxlIGRlc2NyaXB0b3JzLCB0aG9zZSBhcmUgb25seSB2YWxpZCB1bnRpbCB0aGUKICAgICAgICBuZXh0IGl0ZXJhdGlvbiBzdGVwLCBzbyB5b3Ugc2hvdWxkIGR1cCgpIHRoZW0gaWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtCiAgICAgICAgZm9yIGEgbG9uZ2VyIHBlcmlvZC4KCiAgICAgICAgRXhhbXBsZToKCiAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoJ3B5dGhvbi9MaWIvZW1haWwnKToKICAgICAgICAgICAgcHJpbnQocm9vdCwgImNvbnN1bWVzIiwgZW5kPSIiKQogICAgICAgICAgICBwcmludChzdW0ob3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkKS5zdF9zaXplIGZvciBuYW1lIGluIGZpbGVzKSwKICAgICAgICAgICAgICAgICAgZW5kPSIiKQogICAgICAgICAgICBwcmludCgiYnl0ZXMgaW4iLCBsZW4oZmlsZXMpLCAibm9uLWRpcmVjdG9yeSBmaWxlcyIpCiAgICAgICAgICAgIGlmICdDVlMnIGluIGRpcnM6CiAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCiAgICAgICAgIiIiCiAgICAgICAgc3lzLmF1ZGl0KCJvcy5md2FsayIsIHRvcCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzLCBkaXJfZmQpCiAgICAgICAgdG9wID0gZnNwYXRoKHRvcCkKICAgICAgICAjIE5vdGU6IFRvIGd1YXJkIGFnYWluc3Qgc3ltbGluayByYWNlcywgd2UgdXNlIHRoZSBzdGFuZGFyZAogICAgICAgICMgbHN0YXQoKS9vcGVuKCkvZnN0YXQoKSB0cmljay4KICAgICAgICBpZiBub3QgZm9sbG93X3N5bWxpbmtzOgogICAgICAgICAgICBvcmlnX3N0ID0gc3RhdCh0b3AsIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPWRpcl9mZCkKICAgICAgICB0b3BmZCA9IG9wZW4odG9wLCBPX1JET05MWSwgZGlyX2ZkPWRpcl9mZCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3Mgb3IgKHN0LlNfSVNESVIob3JpZ19zdC5zdF9tb2RlKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5zYW1lc3RhdChvcmlnX3N0LCBzdGF0KHRvcGZkKSkpKToKICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gX2Z3YWxrKHRvcGZkLCB0b3AsIGlzaW5zdGFuY2UodG9wLCBieXRlcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dfc3ltbGlua3MpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgY2xvc2UodG9wZmQpCgogICAgZGVmIF9md2Fsayh0b3BmZCwgdG9wcGF0aCwgaXNieXRlcywgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKToKICAgICAgICAjIE5vdGU6IFRoaXMgdXNlcyBPKGRlcHRoIG9mIHRoZSBkaXJlY3RvcnkgdHJlZSkgZmlsZSBkZXNjcmlwdG9yczogaWYKICAgICAgICAjIG5lY2Vzc2FyeSwgaXQgY2FuIGJlIGFkYXB0ZWQgdG8gb25seSByZXF1aXJlIE8oMSkgRkRzLCBzZWUgaXNzdWUKICAgICAgICAjICMxMzczNC4KCiAgICAgICAgc2NhbmRpcl9pdCA9IHNjYW5kaXIodG9wZmQpCiAgICAgICAgZGlycyA9IFtdCiAgICAgICAgbm9uZGlycyA9IFtdCiAgICAgICAgZW50cmllcyA9IE5vbmUgaWYgdG9wZG93biBvciBmb2xsb3dfc3ltbGlua3MgZWxzZSBbXQogICAgICAgIGZvciBlbnRyeSBpbiBzY2FuZGlyX2l0OgogICAgICAgICAgICBuYW1lID0gZW50cnkubmFtZQogICAgICAgICAgICBpZiBpc2J5dGVzOgogICAgICAgICAgICAgICAgbmFtZSA9IGZzZW5jb2RlKG5hbWUpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGVudHJ5LmlzX2RpcigpOgogICAgICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgICAgICAgICAgaWYgZW50cmllcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoZW50cnkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICMgQWRkIGRhbmdsaW5nIHN5bWxpbmtzLCBpZ25vcmUgZGlzYXBwZWFyZWQgZmlsZXMKICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeS5pc19zeW1saW5rKCk6CiAgICAgICAgICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCgogICAgICAgIGlmIHRvcGRvd246CiAgICAgICAgICAgIHlpZWxkIHRvcHBhdGgsIGRpcnMsIG5vbmRpcnMsIHRvcGZkCgogICAgICAgIGZvciBuYW1lIGluIGRpcnMgaWYgZW50cmllcyBpcyBOb25lIGVsc2UgemlwKGRpcnMsIGVudHJpZXMpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBub3QgZm9sbG93X3N5bWxpbmtzOgogICAgICAgICAgICAgICAgICAgIGlmIHRvcGRvd246CiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdfc3QgPSBzdGF0KG5hbWUsIGRpcl9mZD10b3BmZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBlbnRyaWVzIGlzIG5vdCBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGVudHJ5ID0gbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBvcmlnX3N0ID0gZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAgICAgICAgICAgICAgICBkaXJmZCA9IG9wZW4obmFtZSwgT19SRE9OTFksIGRpcl9mZD10b3BmZCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGVycikKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGZvbGxvd19zeW1saW5rcyBvciBwYXRoLnNhbWVzdGF0KG9yaWdfc3QsIHN0YXQoZGlyZmQpKToKICAgICAgICAgICAgICAgICAgICBkaXJwYXRoID0gcGF0aC5qb2luKHRvcHBhdGgsIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfZndhbGsoZGlyZmQsIGRpcnBhdGgsIGlzYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgY2xvc2UoZGlyZmQpCgogICAgICAgIGlmIG5vdCB0b3Bkb3duOgogICAgICAgICAgICB5aWVsZCB0b3BwYXRoLCBkaXJzLCBub25kaXJzLCB0b3BmZAoKICAgIF9fYWxsX18uYXBwZW5kKCJmd2FsayIpCgpkZWYgZXhlY2woZmlsZSwgKmFyZ3MpOgogICAgIiIiZXhlY2woZmlsZSwgKmFyZ3MpCgogICAgRXhlY3V0ZSB0aGUgZXhlY3V0YWJsZSBmaWxlIHdpdGggYXJndW1lbnQgbGlzdCBhcmdzLCByZXBsYWNpbmcgdGhlCiAgICBjdXJyZW50IHByb2Nlc3MuICIiIgogICAgZXhlY3YoZmlsZSwgYXJncykKCmRlZiBleGVjbGUoZmlsZSwgKmFyZ3MpOgogICAgIiIiZXhlY2xlKGZpbGUsICphcmdzLCBlbnYpCgogICAgRXhlY3V0ZSB0aGUgZXhlY3V0YWJsZSBmaWxlIHdpdGggYXJndW1lbnQgbGlzdCBhcmdzIGFuZAogICAgZW52aXJvbm1lbnQgZW52LCByZXBsYWNpbmcgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIiIiCiAgICBlbnYgPSBhcmdzWy0xXQogICAgZXhlY3ZlKGZpbGUsIGFyZ3NbOi0xXSwgZW52KQoKZGVmIGV4ZWNscChmaWxlLCAqYXJncyk6CiAgICAiIiJleGVjbHAoZmlsZSwgKmFyZ3MpCgogICAgRXhlY3V0ZSB0aGUgZXhlY3V0YWJsZSBmaWxlICh3aGljaCBpcyBzZWFyY2hlZCBmb3IgYWxvbmcgJFBBVEgpCiAgICB3aXRoIGFyZ3VtZW50IGxpc3QgYXJncywgcmVwbGFjaW5nIHRoZSBjdXJyZW50IHByb2Nlc3MuICIiIgogICAgZXhlY3ZwKGZpbGUsIGFyZ3MpCgpkZWYgZXhlY2xwZShmaWxlLCAqYXJncyk6CiAgICAiIiJleGVjbHBlKGZpbGUsICphcmdzLCBlbnYpCgogICAgRXhlY3V0ZSB0aGUgZXhlY3V0YWJsZSBmaWxlICh3aGljaCBpcyBzZWFyY2hlZCBmb3IgYWxvbmcgJFBBVEgpCiAgICB3aXRoIGFyZ3VtZW50IGxpc3QgYXJncyBhbmQgZW52aXJvbm1lbnQgZW52LCByZXBsYWNpbmcgdGhlIGN1cnJlbnQKICAgIHByb2Nlc3MuICIiIgogICAgZW52ID0gYXJnc1stMV0KICAgIGV4ZWN2cGUoZmlsZSwgYXJnc1s6LTFdLCBlbnYpCgpkZWYgZXhlY3ZwKGZpbGUsIGFyZ3MpOgogICAgIiIiZXhlY3ZwKGZpbGUsIGFyZ3MpCgogICAgRXhlY3V0ZSB0aGUgZXhlY3V0YWJsZSBmaWxlICh3aGljaCBpcyBzZWFyY2hlZCBmb3IgYWxvbmcgJFBBVEgpCiAgICB3aXRoIGFyZ3VtZW50IGxpc3QgYXJncywgcmVwbGFjaW5nIHRoZSBjdXJyZW50IHByb2Nlc3MuCiAgICBhcmdzIG1heSBiZSBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gIiIiCiAgICBfZXhlY3ZwZShmaWxlLCBhcmdzKQoKZGVmIGV4ZWN2cGUoZmlsZSwgYXJncywgZW52KToKICAgICIiImV4ZWN2cGUoZmlsZSwgYXJncywgZW52KQoKICAgIEV4ZWN1dGUgdGhlIGV4ZWN1dGFibGUgZmlsZSAod2hpY2ggaXMgc2VhcmNoZWQgZm9yIGFsb25nICRQQVRIKQogICAgd2l0aCBhcmd1bWVudCBsaXN0IGFyZ3MgYW5kIGVudmlyb25tZW50IGVudiwgcmVwbGFjaW5nIHRoZQogICAgY3VycmVudCBwcm9jZXNzLgogICAgYXJncyBtYXkgYmUgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICIiIgogICAgX2V4ZWN2cGUoZmlsZSwgYXJncywgZW52KQoKX19hbGxfXy5leHRlbmQoWyJleGVjbCIsImV4ZWNsZSIsImV4ZWNscCIsImV4ZWNscGUiLCJleGVjdnAiLCJleGVjdnBlIl0pCgpkZWYgX2V4ZWN2cGUoZmlsZSwgYXJncywgZW52PU5vbmUpOgogICAgaWYgZW52IGlzIG5vdCBOb25lOgogICAgICAgIGV4ZWNfZnVuYyA9IGV4ZWN2ZQogICAgICAgIGFyZ3Jlc3QgPSAoYXJncywgZW52KQogICAgZWxzZToKICAgICAgICBleGVjX2Z1bmMgPSBleGVjdgogICAgICAgIGFyZ3Jlc3QgPSAoYXJncywpCiAgICAgICAgZW52ID0gZW52aXJvbgoKICAgIGlmIHBhdGguZGlybmFtZShmaWxlKToKICAgICAgICBleGVjX2Z1bmMoZmlsZSwgKmFyZ3Jlc3QpCiAgICAgICAgcmV0dXJuCiAgICBzYXZlZF9leGMgPSBOb25lCiAgICBwYXRoX2xpc3QgPSBnZXRfZXhlY19wYXRoKGVudikKICAgIGlmIG5hbWUgIT0gJ250JzoKICAgICAgICBmaWxlID0gZnNlbmNvZGUoZmlsZSkKICAgICAgICBwYXRoX2xpc3QgPSBtYXAoZnNlbmNvZGUsIHBhdGhfbGlzdCkKICAgIGZvciBkaXIgaW4gcGF0aF9saXN0OgogICAgICAgIGZ1bGxuYW1lID0gcGF0aC5qb2luKGRpciwgZmlsZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGV4ZWNfZnVuYyhmdWxsbmFtZSwgKmFyZ3Jlc3QpCiAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgTm90QURpcmVjdG9yeUVycm9yKSBhcyBlOgogICAgICAgICAgICBsYXN0X2V4YyA9IGUKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBsYXN0X2V4YyA9IGUKICAgICAgICAgICAgaWYgc2F2ZWRfZXhjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzYXZlZF9leGMgPSBlCiAgICBpZiBzYXZlZF9leGMgaXMgbm90IE5vbmU6CiAgICAgICAgcmFpc2Ugc2F2ZWRfZXhjCiAgICByYWlzZSBsYXN0X2V4YwoKCmRlZiBnZXRfZXhlY19wYXRoKGVudj1Ob25lKToKICAgICIiIlJldHVybnMgdGhlIHNlcXVlbmNlIG9mIGRpcmVjdG9yaWVzIHRoYXQgd2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlCiAgICBuYW1lZCBleGVjdXRhYmxlIChzaW1pbGFyIHRvIGEgc2hlbGwpIHdoZW4gbGF1bmNoaW5nIGEgcHJvY2Vzcy4KCiAgICAqZW52KiBtdXN0IGJlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGRpY3Qgb3IgTm9uZS4gIElmICplbnYqIGlzIE5vbmUsCiAgICBvcy5lbnZpcm9uIHdpbGwgYmUgdXNlZC4KICAgICIiIgogICAgIyBVc2UgYSBsb2NhbCBpbXBvcnQgaW5zdGVhZCBvZiBhIGdsb2JhbCBpbXBvcnQgdG8gbGltaXQgdGhlIG51bWJlciBvZgogICAgIyBtb2R1bGVzIGxvYWRlZCBhdCBzdGFydHVwOiB0aGUgb3MgbW9kdWxlIGlzIGFsd2F5cyBsb2FkZWQgYXQgc3RhcnR1cCBieQogICAgIyBQeXRob24uIEl0IG1heSBhbHNvIGF2b2lkIGEgYm9vdHN0cmFwIGlzc3VlLgogICAgaW1wb3J0IHdhcm5pbmdzCgogICAgaWYgZW52IGlzIE5vbmU6CiAgICAgICAgZW52ID0gZW52aXJvbgoKICAgICMge2InUEFUSCc6IC4uLn0uZ2V0KCdQQVRIJykgYW5kIHsnUEFUSCc6IC4uLn0uZ2V0KGInUEFUSCcpIGVtaXQgYQogICAgIyBCeXRlc1dhcm5pbmcgd2hlbiB1c2luZyBweXRob24gLWIgb3IgcHl0aG9uIC1iYjogaWdub3JlIHRoZSB3YXJuaW5nCiAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBCeXRlc1dhcm5pbmcpCgogICAgICAgIHRyeToKICAgICAgICAgICAgcGF0aF9saXN0ID0gZW52LmdldCgnUEFUSCcpCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgcGF0aF9saXN0ID0gTm9uZQoKICAgICAgICBpZiBzdXBwb3J0c19ieXRlc19lbnZpcm9uOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwYXRoX2xpc3RiID0gZW52W2InUEFUSCddCiAgICAgICAgICAgIGV4Y2VwdCAoS2V5RXJyb3IsIFR5cGVFcnJvcik6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBwYXRoX2xpc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgImVudiBjYW5ub3QgY29udGFpbiAnUEFUSCcgYW5kIGInUEFUSCcga2V5cyIpCiAgICAgICAgICAgICAgICBwYXRoX2xpc3QgPSBwYXRoX2xpc3RiCgogICAgICAgICAgICBpZiBwYXRoX2xpc3QgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2UocGF0aF9saXN0LCBieXRlcyk6CiAgICAgICAgICAgICAgICBwYXRoX2xpc3QgPSBmc2RlY29kZShwYXRoX2xpc3QpCgogICAgaWYgcGF0aF9saXN0IGlzIE5vbmU6CiAgICAgICAgcGF0aF9saXN0ID0gZGVmcGF0aAogICAgcmV0dXJuIHBhdGhfbGlzdC5zcGxpdChwYXRoc2VwKQoKCiMgQ2hhbmdlIGVudmlyb24gdG8gYXV0b21hdGljYWxseSBjYWxsIHB1dGVudigpIGFuZCB1bnNldGVudigpCmZyb20gX2NvbGxlY3Rpb25zX2FiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcsIE1hcHBpbmcKCmNsYXNzIF9FbnZpcm9uKE11dGFibGVNYXBwaW5nKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhLCBlbmNvZGVrZXksIGRlY29kZWtleSwgZW5jb2RldmFsdWUsIGRlY29kZXZhbHVlKToKICAgICAgICBzZWxmLmVuY29kZWtleSA9IGVuY29kZWtleQogICAgICAgIHNlbGYuZGVjb2Rla2V5ID0gZGVjb2Rla2V5CiAgICAgICAgc2VsZi5lbmNvZGV2YWx1ZSA9IGVuY29kZXZhbHVlCiAgICAgICAgc2VsZi5kZWNvZGV2YWx1ZSA9IGRlY29kZXZhbHVlCiAgICAgICAgc2VsZi5fZGF0YSA9IGRhdGEKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZGF0YVtzZWxmLmVuY29kZWtleShrZXkpXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIyByYWlzZSBLZXlFcnJvciB3aXRoIHRoZSBvcmlnaW5hbCBrZXkgdmFsdWUKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KSBmcm9tIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5kZWNvZGV2YWx1ZSh2YWx1ZSkKCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAga2V5ID0gc2VsZi5lbmNvZGVrZXkoa2V5KQogICAgICAgIHZhbHVlID0gc2VsZi5lbmNvZGV2YWx1ZSh2YWx1ZSkKICAgICAgICBwdXRlbnYoa2V5LCB2YWx1ZSkKICAgICAgICBzZWxmLl9kYXRhW2tleV0gPSB2YWx1ZQoKICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIGVuY29kZWRrZXkgPSBzZWxmLmVuY29kZWtleShrZXkpCiAgICAgICAgdW5zZXRlbnYoZW5jb2RlZGtleSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBzZWxmLl9kYXRhW2VuY29kZWRrZXldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAjIHJhaXNlIEtleUVycm9yIHdpdGggdGhlIG9yaWdpbmFsIGtleSB2YWx1ZQogICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkpIGZyb20gTm9uZQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAjIGxpc3QoKSBmcm9tIGRpY3Qgb2JqZWN0IGlzIGFuIGF0b21pYyBvcGVyYXRpb24KICAgICAgICBrZXlzID0gbGlzdChzZWxmLl9kYXRhKQogICAgICAgIGZvciBrZXkgaW4ga2V5czoKICAgICAgICAgICAgeWllbGQgc2VsZi5kZWNvZGVrZXkoa2V5KQoKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5fZGF0YSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgZm9ybWF0dGVkX2l0ZW1zID0gIiwgIi5qb2luKAogICAgICAgICAgICBmIntzZWxmLmRlY29kZWtleShrZXkpIXJ9OiB7c2VsZi5kZWNvZGV2YWx1ZSh2YWx1ZSkhcn0iCiAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuX2RhdGEuaXRlbXMoKQogICAgICAgICkKICAgICAgICByZXR1cm4gZiJlbnZpcm9uKHt7e2Zvcm1hdHRlZF9pdGVtc319fSkiCgogICAgZGVmIGNvcHkoc2VsZik6CiAgICAgICAgcmV0dXJuIGRpY3Qoc2VsZikKCiAgICBkZWYgc2V0ZGVmYXVsdChzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICBpZiBrZXkgbm90IGluIHNlbGY6CiAgICAgICAgICAgIHNlbGZba2V5XSA9IHZhbHVlCiAgICAgICAgcmV0dXJuIHNlbGZba2V5XQoKICAgIGRlZiBfX2lvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBzZWxmLnVwZGF0ZShvdGhlcikKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX29yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBNYXBwaW5nKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgbmV3ID0gZGljdChzZWxmKQogICAgICAgIG5ldy51cGRhdGUob3RoZXIpCiAgICAgICAgcmV0dXJuIG5ldwoKICAgIGRlZiBfX3Jvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgTWFwcGluZyk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIG5ldyA9IGRpY3Qob3RoZXIpCiAgICAgICAgbmV3LnVwZGF0ZShzZWxmKQogICAgICAgIHJldHVybiBuZXcKCmRlZiBfY3JlYXRlZW52aXJvbigpOgogICAgaWYgbmFtZSA9PSAnbnQnOgogICAgICAgICMgV2hlcmUgRW52IFZhciBOYW1lcyBNdXN0IEJlIFVQUEVSQ0FTRQogICAgICAgIGRlZiBjaGVja19zdHIodmFsdWUpOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigic3RyIGV4cGVjdGVkLCBub3QgJXMiICUgdHlwZSh2YWx1ZSkuX19uYW1lX18pCiAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgIGVuY29kZSA9IGNoZWNrX3N0cgogICAgICAgIGRlY29kZSA9IHN0cgogICAgICAgIGRlZiBlbmNvZGVrZXkoa2V5KToKICAgICAgICAgICAgcmV0dXJuIGVuY29kZShrZXkpLnVwcGVyKCkKICAgICAgICBkYXRhID0ge30KICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBlbnZpcm9uLml0ZW1zKCk6CiAgICAgICAgICAgIGRhdGFbZW5jb2Rla2V5KGtleSldID0gdmFsdWUKICAgIGVsc2U6CiAgICAgICAgIyBXaGVyZSBFbnYgVmFyIE5hbWVzIENhbiBCZSBNaXhlZCBDYXNlCiAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKICAgICAgICBkZWYgZW5jb2RlKHZhbHVlKToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInN0ciBleHBlY3RlZCwgbm90ICVzIiAlIHR5cGUodmFsdWUpLl9fbmFtZV9fKQogICAgICAgICAgICByZXR1cm4gdmFsdWUuZW5jb2RlKGVuY29kaW5nLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICBkZWYgZGVjb2RlKHZhbHVlKToKICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmRlY29kZShlbmNvZGluZywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgZW5jb2Rla2V5ID0gZW5jb2RlCiAgICAgICAgZGF0YSA9IGVudmlyb24KICAgIHJldHVybiBfRW52aXJvbihkYXRhLAogICAgICAgIGVuY29kZWtleSwgZGVjb2RlLAogICAgICAgIGVuY29kZSwgZGVjb2RlKQoKIyB1bmljb2RlIGVudmlyb24KZW52aXJvbiA9IF9jcmVhdGVlbnZpcm9uKCkKZGVsIF9jcmVhdGVlbnZpcm9uCgoKZGVmIGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSk6CiAgICAiIiJHZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHJldHVybiBOb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3QuCiAgICBUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBkZWZhdWx0LgogICAga2V5LCBkZWZhdWx0IGFuZCB0aGUgcmVzdWx0IGFyZSBzdHIuIiIiCiAgICByZXR1cm4gZW52aXJvbi5nZXQoa2V5LCBkZWZhdWx0KQoKc3VwcG9ydHNfYnl0ZXNfZW52aXJvbiA9IChuYW1lICE9ICdudCcpCl9fYWxsX18uZXh0ZW5kKCgiZ2V0ZW52IiwgInN1cHBvcnRzX2J5dGVzX2Vudmlyb24iKSkKCmlmIHN1cHBvcnRzX2J5dGVzX2Vudmlyb246CiAgICBkZWYgX2NoZWNrX2J5dGVzKHZhbHVlKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgYnl0ZXMpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJ5dGVzIGV4cGVjdGVkLCBub3QgJXMiICUgdHlwZSh2YWx1ZSkuX19uYW1lX18pCiAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgIyBieXRlcyBlbnZpcm9uCiAgICBlbnZpcm9uYiA9IF9FbnZpcm9uKGVudmlyb24uX2RhdGEsCiAgICAgICAgX2NoZWNrX2J5dGVzLCBieXRlcywKICAgICAgICBfY2hlY2tfYnl0ZXMsIGJ5dGVzKQogICAgZGVsIF9jaGVja19ieXRlcwoKICAgIGRlZiBnZXRlbnZiKGtleSwgZGVmYXVsdD1Ob25lKToKICAgICAgICAiIiJHZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHJldHVybiBOb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3QuCiAgICAgICAgVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGUgZGVmYXVsdC4KICAgICAgICBrZXksIGRlZmF1bHQgYW5kIHRoZSByZXN1bHQgYXJlIGJ5dGVzLiIiIgogICAgICAgIHJldHVybiBlbnZpcm9uYi5nZXQoa2V5LCBkZWZhdWx0KQoKICAgIF9fYWxsX18uZXh0ZW5kKCgiZW52aXJvbmIiLCAiZ2V0ZW52YiIpKQoKZGVmIF9mc2NvZGVjKCk6CiAgICBlbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogICAgZXJyb3JzID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKQoKICAgIGRlZiBmc2VuY29kZShmaWxlbmFtZSk6CiAgICAgICAgIiIiRW5jb2RlIGZpbGVuYW1lIChhbiBvcy5QYXRoTGlrZSwgYnl0ZXMsIG9yIHN0cikgdG8gdGhlIGZpbGVzeXN0ZW0KICAgICAgICBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuCiAgICAgICAgT24gV2luZG93cywgdXNlICdzdHJpY3QnIGVycm9yIGhhbmRsZXIgaWYgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzCiAgICAgICAgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCiAgICAgICAgIiIiCiAgICAgICAgZmlsZW5hbWUgPSBmc3BhdGgoZmlsZW5hbWUpICAjIERvZXMgdHlwZS1jaGVja2luZyBvZiBgZmlsZW5hbWVgLgogICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6CiAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKCiAgICBkZWYgZnNkZWNvZGUoZmlsZW5hbWUpOgogICAgICAgICIiIkRlY29kZSBmaWxlbmFtZSAoYW4gb3MuUGF0aExpa2UsIGJ5dGVzLCBvciBzdHIpIGZyb20gdGhlIGZpbGVzeXN0ZW0KICAgICAgICBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIHJldHVybiBzdHIgdW5jaGFuZ2VkLiBPbgogICAgICAgIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcwogICAgICAgICdtYmNzJyAod2hpY2ggaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcpLgogICAgICAgICIiIgogICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6CiAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKCiAgICByZXR1cm4gZnNlbmNvZGUsIGZzZGVjb2RlCgpmc2VuY29kZSwgZnNkZWNvZGUgPSBfZnNjb2RlYygpCmRlbCBfZnNjb2RlYwoKIyBTdXBwbHkgc3Bhd24qKCkgKHByb2JhYmx5IG9ubHkgZm9yIFVuaXgpCmlmIF9leGlzdHMoImZvcmsiKSBhbmQgbm90IF9leGlzdHMoInNwYXdudiIpIGFuZCBfZXhpc3RzKCJleGVjdiIpOgoKICAgIFBfV0FJVCA9IDAKICAgIFBfTk9XQUlUID0gUF9OT1dBSVRPID0gMQoKICAgIF9fYWxsX18uZXh0ZW5kKFsiUF9XQUlUIiwgIlBfTk9XQUlUIiwgIlBfTk9XQUlUTyJdKQoKICAgICMgWFhYIFNob3VsZCB3ZSBzdXBwb3J0IFBfREVUQUNIPyAgSSBzdXBwb3NlIGl0IGNvdWxkIGZvcmsoKSoqMgogICAgIyBhbmQgY2xvc2UgdGhlIHN0ZCBJL08gc3RyZWFtcy4gIEFsc28sIFBfT1ZFUkxBWSBpcyB0aGUgc2FtZQogICAgIyBhcyBleGVjdiooKT8KCiAgICBkZWYgX3NwYXdudmVmKG1vZGUsIGZpbGUsIGFyZ3MsIGVudiwgZnVuYyk6CiAgICAgICAgIyBJbnRlcm5hbCBoZWxwZXI7IGZ1bmMgaXMgdGhlIGV4ZWMqKCkgZnVuY3Rpb24gdG8gdXNlCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJncywgKHR1cGxlLCBsaXN0KSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYXJndiBtdXN0IGJlIGEgdHVwbGUgb3IgYSBsaXN0JykKICAgICAgICBpZiBub3QgYXJncyBvciBub3QgYXJnc1swXToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYXJndiBmaXJzdCBlbGVtZW50IGNhbm5vdCBiZSBlbXB0eScpCiAgICAgICAgcGlkID0gZm9yaygpCiAgICAgICAgaWYgbm90IHBpZDoKICAgICAgICAgICAgIyBDaGlsZAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBlbnYgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBmdW5jKGZpbGUsIGFyZ3MpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGZ1bmMoZmlsZSwgYXJncywgZW52KQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBfZXhpdCgxMjcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBQYXJlbnQKICAgICAgICAgICAgaWYgbW9kZSA9PSBQX05PV0FJVDoKICAgICAgICAgICAgICAgIHJldHVybiBwaWQgIyBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHdhaXRpbmchCiAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICB3cGlkLCBzdHMgPSB3YWl0cGlkKHBpZCwgMCkKICAgICAgICAgICAgICAgIGlmIFdJRlNUT1BQRUQoc3RzKToKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgIHJldHVybiB3YWl0c3RhdHVzX3RvX2V4aXRjb2RlKHN0cykKCiAgICBkZWYgc3Bhd252KG1vZGUsIGZpbGUsIGFyZ3MpOgogICAgICAgICIiInNwYXdudihtb2RlLCBmaWxlLCBhcmdzKSAtPiBpbnRlZ2VyCgpFeGVjdXRlIGZpbGUgd2l0aCBhcmd1bWVudHMgZnJvbSBhcmdzIGluIGEgc3VicHJvY2Vzcy4KSWYgbW9kZSA9PSBQX05PV0FJVCByZXR1cm4gdGhlIHBpZCBvZiB0aGUgcHJvY2Vzcy4KSWYgbW9kZSA9PSBQX1dBSVQgcmV0dXJuIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5OwpvdGhlcndpc2UgcmV0dXJuIC1TSUcsIHdoZXJlIFNJRyBpcyB0aGUgc2lnbmFsIHRoYXQga2lsbGVkIGl0LiAiIiIKICAgICAgICByZXR1cm4gX3NwYXdudmVmKG1vZGUsIGZpbGUsIGFyZ3MsIE5vbmUsIGV4ZWN2KQoKICAgIGRlZiBzcGF3bnZlKG1vZGUsIGZpbGUsIGFyZ3MsIGVudik6CiAgICAgICAgIiIic3Bhd252ZShtb2RlLCBmaWxlLCBhcmdzLCBlbnYpIC0+IGludGVnZXIKCkV4ZWN1dGUgZmlsZSB3aXRoIGFyZ3VtZW50cyBmcm9tIGFyZ3MgaW4gYSBzdWJwcm9jZXNzIHdpdGggdGhlCnNwZWNpZmllZCBlbnZpcm9ubWVudC4KSWYgbW9kZSA9PSBQX05PV0FJVCByZXR1cm4gdGhlIHBpZCBvZiB0aGUgcHJvY2Vzcy4KSWYgbW9kZSA9PSBQX1dBSVQgcmV0dXJuIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5OwpvdGhlcndpc2UgcmV0dXJuIC1TSUcsIHdoZXJlIFNJRyBpcyB0aGUgc2lnbmFsIHRoYXQga2lsbGVkIGl0LiAiIiIKICAgICAgICByZXR1cm4gX3NwYXdudmVmKG1vZGUsIGZpbGUsIGFyZ3MsIGVudiwgZXhlY3ZlKQoKICAgICMgTm90ZTogc3Bhd252cFtlXSBpc24ndCBjdXJyZW50bHkgc3VwcG9ydGVkIG9uIFdpbmRvd3MKCiAgICBkZWYgc3Bhd252cChtb2RlLCBmaWxlLCBhcmdzKToKICAgICAgICAiIiJzcGF3bnZwKG1vZGUsIGZpbGUsIGFyZ3MpIC0+IGludGVnZXIKCkV4ZWN1dGUgZmlsZSAod2hpY2ggaXMgbG9va2VkIGZvciBhbG9uZyAkUEFUSCkgd2l0aCBhcmd1bWVudHMgZnJvbQphcmdzIGluIGEgc3VicHJvY2Vzcy4KSWYgbW9kZSA9PSBQX05PV0FJVCByZXR1cm4gdGhlIHBpZCBvZiB0aGUgcHJvY2Vzcy4KSWYgbW9kZSA9PSBQX1dBSVQgcmV0dXJuIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5OwpvdGhlcndpc2UgcmV0dXJuIC1TSUcsIHdoZXJlIFNJRyBpcyB0aGUgc2lnbmFsIHRoYXQga2lsbGVkIGl0LiAiIiIKICAgICAgICByZXR1cm4gX3NwYXdudmVmKG1vZGUsIGZpbGUsIGFyZ3MsIE5vbmUsIGV4ZWN2cCkKCiAgICBkZWYgc3Bhd252cGUobW9kZSwgZmlsZSwgYXJncywgZW52KToKICAgICAgICAiIiJzcGF3bnZwZShtb2RlLCBmaWxlLCBhcmdzLCBlbnYpIC0+IGludGVnZXIKCkV4ZWN1dGUgZmlsZSAod2hpY2ggaXMgbG9va2VkIGZvciBhbG9uZyAkUEFUSCkgd2l0aCBhcmd1bWVudHMgZnJvbQphcmdzIGluIGEgc3VicHJvY2VzcyB3aXRoIHRoZSBzdXBwbGllZCBlbnZpcm9ubWVudC4KSWYgbW9kZSA9PSBQX05PV0FJVCByZXR1cm4gdGhlIHBpZCBvZiB0aGUgcHJvY2Vzcy4KSWYgbW9kZSA9PSBQX1dBSVQgcmV0dXJuIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5OwpvdGhlcndpc2UgcmV0dXJuIC1TSUcsIHdoZXJlIFNJRyBpcyB0aGUgc2lnbmFsIHRoYXQga2lsbGVkIGl0LiAiIiIKICAgICAgICByZXR1cm4gX3NwYXdudmVmKG1vZGUsIGZpbGUsIGFyZ3MsIGVudiwgZXhlY3ZwZSkKCgogICAgX19hbGxfXy5leHRlbmQoWyJzcGF3bnYiLCAic3Bhd252ZSIsICJzcGF3bnZwIiwgInNwYXdudnBlIl0pCgoKaWYgX2V4aXN0cygic3Bhd252Iik6CiAgICAjIFRoZXNlIGFyZW4ndCBzdXBwbGllZCBieSB0aGUgYmFzaWMgV2luZG93cyBjb2RlCiAgICAjIGJ1dCBjYW4gYmUgZWFzaWx5IGltcGxlbWVudGVkIGluIFB5dGhvbgoKICAgIGRlZiBzcGF3bmwobW9kZSwgZmlsZSwgKmFyZ3MpOgogICAgICAgICIiInNwYXdubChtb2RlLCBmaWxlLCAqYXJncykgLT4gaW50ZWdlcgoKRXhlY3V0ZSBmaWxlIHdpdGggYXJndW1lbnRzIGZyb20gYXJncyBpbiBhIHN1YnByb2Nlc3MuCklmIG1vZGUgPT0gUF9OT1dBSVQgcmV0dXJuIHRoZSBwaWQgb2YgdGhlIHByb2Nlc3MuCklmIG1vZGUgPT0gUF9XQUlUIHJldHVybiB0aGUgcHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0cyBub3JtYWxseTsKb3RoZXJ3aXNlIHJldHVybiAtU0lHLCB3aGVyZSBTSUcgaXMgdGhlIHNpZ25hbCB0aGF0IGtpbGxlZCBpdC4gIiIiCiAgICAgICAgcmV0dXJuIHNwYXdudihtb2RlLCBmaWxlLCBhcmdzKQoKICAgIGRlZiBzcGF3bmxlKG1vZGUsIGZpbGUsICphcmdzKToKICAgICAgICAiIiJzcGF3bmxlKG1vZGUsIGZpbGUsICphcmdzLCBlbnYpIC0+IGludGVnZXIKCkV4ZWN1dGUgZmlsZSB3aXRoIGFyZ3VtZW50cyBmcm9tIGFyZ3MgaW4gYSBzdWJwcm9jZXNzIHdpdGggdGhlCnN1cHBsaWVkIGVudmlyb25tZW50LgpJZiBtb2RlID09IFBfTk9XQUlUIHJldHVybiB0aGUgcGlkIG9mIHRoZSBwcm9jZXNzLgpJZiBtb2RlID09IFBfV0FJVCByZXR1cm4gdGhlIHByb2Nlc3MncyBleGl0IGNvZGUgaWYgaXQgZXhpdHMgbm9ybWFsbHk7Cm90aGVyd2lzZSByZXR1cm4gLVNJRywgd2hlcmUgU0lHIGlzIHRoZSBzaWduYWwgdGhhdCBraWxsZWQgaXQuICIiIgogICAgICAgIGVudiA9IGFyZ3NbLTFdCiAgICAgICAgcmV0dXJuIHNwYXdudmUobW9kZSwgZmlsZSwgYXJnc1s6LTFdLCBlbnYpCgoKICAgIF9fYWxsX18uZXh0ZW5kKFsic3Bhd25sIiwgInNwYXdubGUiXSkKCgppZiBfZXhpc3RzKCJzcGF3bnZwIik6CiAgICAjIEF0IHRoZSBtb21lbnQsIFdpbmRvd3MgZG9lc24ndCBpbXBsZW1lbnQgc3Bhd252cFtlXSwKICAgICMgc28gaXQgd29uJ3QgaGF2ZSBzcGF3bmxwW2VdIGVpdGhlci4KICAgIGRlZiBzcGF3bmxwKG1vZGUsIGZpbGUsICphcmdzKToKICAgICAgICAiIiJzcGF3bmxwKG1vZGUsIGZpbGUsICphcmdzKSAtPiBpbnRlZ2VyCgpFeGVjdXRlIGZpbGUgKHdoaWNoIGlzIGxvb2tlZCBmb3IgYWxvbmcgJFBBVEgpIHdpdGggYXJndW1lbnRzIGZyb20KYXJncyBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgc3VwcGxpZWQgZW52aXJvbm1lbnQuCklmIG1vZGUgPT0gUF9OT1dBSVQgcmV0dXJuIHRoZSBwaWQgb2YgdGhlIHByb2Nlc3MuCklmIG1vZGUgPT0gUF9XQUlUIHJldHVybiB0aGUgcHJvY2VzcydzIGV4aXQgY29kZSBpZiBpdCBleGl0cyBub3JtYWxseTsKb3RoZXJ3aXNlIHJldHVybiAtU0lHLCB3aGVyZSBTSUcgaXMgdGhlIHNpZ25hbCB0aGF0IGtpbGxlZCBpdC4gIiIiCiAgICAgICAgcmV0dXJuIHNwYXdudnAobW9kZSwgZmlsZSwgYXJncykKCiAgICBkZWYgc3Bhd25scGUobW9kZSwgZmlsZSwgKmFyZ3MpOgogICAgICAgICIiInNwYXdubHBlKG1vZGUsIGZpbGUsICphcmdzLCBlbnYpIC0+IGludGVnZXIKCkV4ZWN1dGUgZmlsZSAod2hpY2ggaXMgbG9va2VkIGZvciBhbG9uZyAkUEFUSCkgd2l0aCBhcmd1bWVudHMgZnJvbQphcmdzIGluIGEgc3VicHJvY2VzcyB3aXRoIHRoZSBzdXBwbGllZCBlbnZpcm9ubWVudC4KSWYgbW9kZSA9PSBQX05PV0FJVCByZXR1cm4gdGhlIHBpZCBvZiB0aGUgcHJvY2Vzcy4KSWYgbW9kZSA9PSBQX1dBSVQgcmV0dXJuIHRoZSBwcm9jZXNzJ3MgZXhpdCBjb2RlIGlmIGl0IGV4aXRzIG5vcm1hbGx5OwpvdGhlcndpc2UgcmV0dXJuIC1TSUcsIHdoZXJlIFNJRyBpcyB0aGUgc2lnbmFsIHRoYXQga2lsbGVkIGl0LiAiIiIKICAgICAgICBlbnYgPSBhcmdzWy0xXQogICAgICAgIHJldHVybiBzcGF3bnZwZShtb2RlLCBmaWxlLCBhcmdzWzotMV0sIGVudikKCgogICAgX19hbGxfXy5leHRlbmQoWyJzcGF3bmxwIiwgInNwYXdubHBlIl0pCgojIFZ4V29ya3MgaGFzIG5vIHVzZXIgc3BhY2Ugc2hlbGwgcHJvdmlkZWQuIEFzIGEgcmVzdWx0LCBydW5uaW5nCiMgY29tbWFuZCBpbiBhIHNoZWxsIGNhbid0IGJlIHN1cHBvcnRlZC4KaWYgc3lzLnBsYXRmb3JtICE9ICd2eHdvcmtzJzoKICAgICMgU3VwcGx5IG9zLnBvcGVuKCkKICAgIGRlZiBwb3BlbihjbWQsIG1vZGU9InIiLCBidWZmZXJpbmc9LTEpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNtZCwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGNtZCB0eXBlICglcywgZXhwZWN0ZWQgc3RyaW5nKSIgJSB0eXBlKGNtZCkpCiAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBtb2RlICVyIiAlIG1vZGUpCiAgICAgICAgaWYgYnVmZmVyaW5nID09IDAgb3IgYnVmZmVyaW5nIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBvcGVuKCkgZG9lcyBub3Qgc3VwcG9ydCB1bmJ1ZmZlcmVkIHN0cmVhbXMiKQogICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgICAgaWYgbW9kZSA9PSAiciI6CiAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgdGV4dD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzaXplPWJ1ZmZlcmluZykKICAgICAgICAgICAgcmV0dXJuIF93cmFwX2Nsb3NlKHByb2Muc3Rkb3V0LCBwcm9jKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgdGV4dD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9YnVmZmVyaW5nKQogICAgICAgICAgICByZXR1cm4gX3dyYXBfY2xvc2UocHJvYy5zdGRpbiwgcHJvYykKCiAgICAjIEhlbHBlciBmb3IgcG9wZW4oKSAtLSBhIHByb3h5IGZvciBhIGZpbGUgd2hvc2UgY2xvc2Ugd2FpdHMgZm9yIHRoZSBwcm9jZXNzCiAgICBjbGFzcyBfd3JhcF9jbG9zZToKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtLCBwcm9jKToKICAgICAgICAgICAgc2VsZi5fc3RyZWFtID0gc3RyZWFtCiAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBwcm9jCiAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAgICBzZWxmLl9zdHJlYW0uY2xvc2UoKQogICAgICAgICAgICByZXR1cm5jb2RlID0gc2VsZi5fcHJvYy53YWl0KCkKICAgICAgICAgICAgaWYgcmV0dXJuY29kZSA9PSAwOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgaWYgbmFtZSA9PSAnbnQnOgogICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybmNvZGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5jb2RlIDw8IDggICMgU2hpZnQgbGVmdCB0byBtYXRjaCBvbGQgYmVoYXZpb3IKICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5fc3RyZWFtLCBuYW1lKQogICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fc3RyZWFtKQoKICAgIF9fYWxsX18uYXBwZW5kKCJwb3BlbiIpCgojIFN1cHBseSBvcy5mZG9wZW4oKQpkZWYgZmRvcGVuKGZkLCBtb2RlPSJyIiwgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgogICAgaWYgbm90IGlzaW5zdGFuY2UoZmQsIGludCk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGZkIHR5cGUgKCVzLCBleHBlY3RlZCBpbnRlZ2VyKSIgJSB0eXBlKGZkKSkKICAgIGltcG9ydCBpbwogICAgaWYgImIiIG5vdCBpbiBtb2RlOgogICAgICAgIGVuY29kaW5nID0gaW8udGV4dF9lbmNvZGluZyhlbmNvZGluZykKICAgIHJldHVybiBpby5vcGVuKGZkLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCAqYXJncywgKiprd2FyZ3MpCgoKIyBGb3IgdGVzdGluZyBwdXJwb3NlcywgbWFrZSBzdXJlIHRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUgd2hlbiB0aGUgQwojIGltcGxlbWVudGF0aW9uIGV4aXN0cy4KZGVmIF9mc3BhdGgocGF0aCk6CiAgICAiIiJSZXR1cm4gdGhlIHBhdGggcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoLWxpa2Ugb2JqZWN0LgoKICAgIElmIHN0ciBvciBieXRlcyBpcyBwYXNzZWQgaW4sIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4gT3RoZXJ3aXNlIHRoZQogICAgb3MuUGF0aExpa2UgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZ2V0IHRoZSBwYXRoIHJlcHJlc2VudGF0aW9uLiBJZiB0aGUKICAgIHBhdGggcmVwcmVzZW50YXRpb24gaXMgbm90IHN0ciBvciBieXRlcywgVHlwZUVycm9yIGlzIHJhaXNlZC4gSWYgdGhlCiAgICBwcm92aWRlZCBwYXRoIGlzIG5vdCBzdHIsIGJ5dGVzLCBvciBvcy5QYXRoTGlrZSwgVHlwZUVycm9yIGlzIHJhaXNlZC4KICAgICIiIgogICAgaWYgaXNpbnN0YW5jZShwYXRoLCAoc3RyLCBieXRlcykpOgogICAgICAgIHJldHVybiBwYXRoCgogICAgIyBXb3JrIGZyb20gdGhlIG9iamVjdCdzIHR5cGUgdG8gbWF0Y2ggbWV0aG9kIHJlc29sdXRpb24gb2Ygb3RoZXIgbWFnaWMKICAgICMgbWV0aG9kcy4KICAgIHBhdGhfdHlwZSA9IHR5cGUocGF0aCkKICAgIHRyeToKICAgICAgICBwYXRoX3JlcHIgPSBwYXRoX3R5cGUuX19mc3BhdGhfXyhwYXRoKQogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIGlmIGhhc2F0dHIocGF0aF90eXBlLCAnX19mc3BhdGhfXycpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgc3RyLCBieXRlcyBvciBvcy5QYXRoTGlrZSBvYmplY3QsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgIiArIHBhdGhfdHlwZS5fX25hbWVfXykKICAgIGlmIGlzaW5zdGFuY2UocGF0aF9yZXByLCAoc3RyLCBieXRlcykpOgogICAgICAgIHJldHVybiBwYXRoX3JlcHIKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCB7fS5fX2ZzcGF0aF9fKCkgdG8gcmV0dXJuIHN0ciBvciBieXRlcywgIgogICAgICAgICAgICAgICAgICAgICAgICAibm90IHt9Ii5mb3JtYXQocGF0aF90eXBlLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZShwYXRoX3JlcHIpLl9fbmFtZV9fKSkKCiMgSWYgdGhlcmUgaXMgbm8gQyBpbXBsZW1lbnRhdGlvbiwgbWFrZSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbiB0aGUKIyBpbXBsZW1lbnRhdGlvbiBhcyB0cmFuc3BhcmVudGx5IGFzIHBvc3NpYmxlLgppZiBub3QgX2V4aXN0cygnZnNwYXRoJyk6CiAgICBmc3BhdGggPSBfZnNwYXRoCiAgICBmc3BhdGguX19uYW1lX18gPSAiZnNwYXRoIgoKCmNsYXNzIFBhdGhMaWtlKGFiYy5BQkMpOgoKICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGluZyB0aGUgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbC4iIiIKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIHN1YmNsYXNzKToKICAgICAgICBpZiBjbHMgaXMgUGF0aExpa2U6CiAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhzdWJjbGFzcywgJ19fZnNwYXRoX18nKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoR2VuZXJpY0FsaWFzKQoKCmlmIG5hbWUgPT0gJ250JzoKICAgIGNsYXNzIF9BZGRlZERsbERpcmVjdG9yeToKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgY29va2llLCByZW1vdmVfZGxsX2RpcmVjdG9yeSk6CiAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICAgICAgc2VsZi5fY29va2llID0gY29va2llCiAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9kbGxfZGlyZWN0b3J5ID0gcmVtb3ZlX2RsbF9kaXJlY3RvcnkKICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9kbGxfZGlyZWN0b3J5KHNlbGYuX2Nvb2tpZSkKICAgICAgICAgICAgc2VsZi5wYXRoID0gTm9uZQogICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAgICBpZiBzZWxmLnBhdGg6CiAgICAgICAgICAgICAgICByZXR1cm4gIjxBZGRlZERsbERpcmVjdG9yeSh7IXJ9KT4iLmZvcm1hdChzZWxmLnBhdGgpCiAgICAgICAgICAgIHJldHVybiAiPEFkZGVkRGxsRGlyZWN0b3J5KCk+IgoKICAgIGRlZiBhZGRfZGxsX2RpcmVjdG9yeShwYXRoKToKICAgICAgICAiIiJBZGQgYSBwYXRoIHRvIHRoZSBETEwgc2VhcmNoIHBhdGguCgogICAgICAgIFRoaXMgc2VhcmNoIHBhdGggaXMgdXNlZCB3aGVuIHJlc29sdmluZyBkZXBlbmRlbmNpZXMgZm9yIGltcG9ydGVkCiAgICAgICAgZXh0ZW5zaW9uIG1vZHVsZXMgKHRoZSBtb2R1bGUgaXRzZWxmIGlzIHJlc29sdmVkIHRocm91Z2ggc3lzLnBhdGgpLAogICAgICAgIGFuZCBhbHNvIGJ5IGN0eXBlcy4KCiAgICAgICAgUmVtb3ZlIHRoZSBkaXJlY3RvcnkgYnkgY2FsbGluZyBjbG9zZSgpIG9uIHRoZSByZXR1cm5lZCBvYmplY3Qgb3IKICAgICAgICB1c2luZyBpdCBpbiBhIHdpdGggc3RhdGVtZW50LgogICAgICAgICIiIgogICAgICAgIGltcG9ydCBudAogICAgICAgIGNvb2tpZSA9IG50Ll9hZGRfZGxsX2RpcmVjdG9yeShwYXRoKQogICAgICAgIHJldHVybiBfQWRkZWREbGxEaXJlY3RvcnkoCiAgICAgICAgICAgIHBhdGgsCiAgICAgICAgICAgIGNvb2tpZSwKICAgICAgICAgICAgbnQuX3JlbW92ZV9kbGxfZGlyZWN0b3J5CiAgICAgICAgKQpQSwMEFAAAAAAAAiCjVqz/KUa8vQAAvL0AAAoAAABwYXRobGliLnB5aW1wb3J0IGZubWF0Y2gKaW1wb3J0IGZ1bmN0b29scwppbXBvcnQgaW8KaW1wb3J0IG50cGF0aAppbXBvcnQgb3MKaW1wb3J0IHBvc2l4cGF0aAppbXBvcnQgcmUKaW1wb3J0IHN5cwppbXBvcnQgd2FybmluZ3MKZnJvbSBfY29sbGVjdGlvbnNfYWJjIGltcG9ydCBTZXF1ZW5jZQpmcm9tIGVycm5vIGltcG9ydCBFTk9FTlQsIEVOT1RESVIsIEVCQURGLCBFTE9PUApmcm9tIG9wZXJhdG9yIGltcG9ydCBhdHRyZ2V0dGVyCmZyb20gc3RhdCBpbXBvcnQgU19JU0RJUiwgU19JU0xOSywgU19JU1JFRywgU19JU1NPQ0ssIFNfSVNCTEssIFNfSVNDSFIsIFNfSVNGSUZPCmZyb20gdXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZV9mcm9tX2J5dGVzIGFzIHVybHF1b3RlX2Zyb21fYnl0ZXMKCgpfX2FsbF9fID0gWwogICAgIlB1cmVQYXRoIiwgIlB1cmVQb3NpeFBhdGgiLCAiUHVyZVdpbmRvd3NQYXRoIiwKICAgICJQYXRoIiwgIlBvc2l4UGF0aCIsICJXaW5kb3dzUGF0aCIsCiAgICBdCgojCiMgSW50ZXJuYWxzCiMKCl9XSU5FUlJPUl9OT1RfUkVBRFkgPSAyMSAgIyBkcml2ZSBleGlzdHMgYnV0IGlzIG5vdCBhY2Nlc3NpYmxlCl9XSU5FUlJPUl9JTlZBTElEX05BTUUgPSAxMjMgICMgZml4IGZvciBicG8tMzUzMDYKX1dJTkVSUk9SX0NBTlRfUkVTT0xWRV9GSUxFTkFNRSA9IDE5MjEgICMgYnJva2VuIHN5bWxpbmsgcG9pbnRpbmcgdG8gaXRzZWxmCgojIEVCQURGIC0gZ3VhcmQgYWdhaW5zdCBtYWNPUyBgc3RhdGAgdGhyb3dpbmcgRUJBREYKX0lHTk9SRURfRVJSTk9TID0gKEVOT0VOVCwgRU5PVERJUiwgRUJBREYsIEVMT09QKQoKX0lHTk9SRURfV0lORVJST1JTID0gKAogICAgX1dJTkVSUk9SX05PVF9SRUFEWSwKICAgIF9XSU5FUlJPUl9JTlZBTElEX05BTUUsCiAgICBfV0lORVJST1JfQ0FOVF9SRVNPTFZFX0ZJTEVOQU1FKQoKZGVmIF9pZ25vcmVfZXJyb3IoZXhjZXB0aW9uKToKICAgIHJldHVybiAoZ2V0YXR0cihleGNlcHRpb24sICdlcnJubycsIE5vbmUpIGluIF9JR05PUkVEX0VSUk5PUyBvcgogICAgICAgICAgICBnZXRhdHRyKGV4Y2VwdGlvbiwgJ3dpbmVycm9yJywgTm9uZSkgaW4gX0lHTk9SRURfV0lORVJST1JTKQoKCmRlZiBfaXNfd2lsZGNhcmRfcGF0dGVybihwYXQpOgogICAgIyBXaGV0aGVyIHRoaXMgcGF0dGVybiBuZWVkcyBhY3R1YWwgbWF0Y2hpbmcgdXNpbmcgZm5tYXRjaCwgb3IgY2FuCiAgICAjIGJlIGxvb2tlZCB1cCBkaXJlY3RseSBhcyBhIGZpbGUuCiAgICByZXR1cm4gIioiIGluIHBhdCBvciAiPyIgaW4gcGF0IG9yICJbIiBpbiBwYXQKCgpjbGFzcyBfRmxhdm91cihvYmplY3QpOgogICAgIiIiQSBmbGF2b3VyIGltcGxlbWVudHMgYSBwYXJ0aWN1bGFyIChwbGF0Zm9ybS1zcGVjaWZpYykgc2V0IG9mIHBhdGgKICAgIHNlbWFudGljcy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5qb2luID0gc2VsZi5zZXAuam9pbgoKICAgIGRlZiBwYXJzZV9wYXJ0cyhzZWxmLCBwYXJ0cyk6CiAgICAgICAgcGFyc2VkID0gW10KICAgICAgICBzZXAgPSBzZWxmLnNlcAogICAgICAgIGFsdHNlcCA9IHNlbGYuYWx0c2VwCiAgICAgICAgZHJ2ID0gcm9vdCA9ICcnCiAgICAgICAgaXQgPSByZXZlcnNlZChwYXJ0cykKICAgICAgICBmb3IgcGFydCBpbiBpdDoKICAgICAgICAgICAgaWYgbm90IHBhcnQ6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBhbHRzZXA6CiAgICAgICAgICAgICAgICBwYXJ0ID0gcGFydC5yZXBsYWNlKGFsdHNlcCwgc2VwKQogICAgICAgICAgICBkcnYsIHJvb3QsIHJlbCA9IHNlbGYuc3BsaXRyb290KHBhcnQpCiAgICAgICAgICAgIGlmIHNlcCBpbiByZWw6CiAgICAgICAgICAgICAgICBmb3IgeCBpbiByZXZlcnNlZChyZWwuc3BsaXQoc2VwKSk6CiAgICAgICAgICAgICAgICAgICAgaWYgeCBhbmQgeCAhPSAnLic6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5hcHBlbmQoc3lzLmludGVybih4KSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIHJlbCBhbmQgcmVsICE9ICcuJzoKICAgICAgICAgICAgICAgICAgICBwYXJzZWQuYXBwZW5kKHN5cy5pbnRlcm4ocmVsKSkKICAgICAgICAgICAgaWYgZHJ2IG9yIHJvb3Q6CiAgICAgICAgICAgICAgICBpZiBub3QgZHJ2OgogICAgICAgICAgICAgICAgICAgICMgSWYgbm8gZHJpdmUgaXMgcHJlc2VudCwgdHJ5IHRvIGZpbmQgb25lIGluIHRoZSBwcmV2aW91cwogICAgICAgICAgICAgICAgICAgICMgcGFydHMuIFRoaXMgbWFrZXMgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIGUuZy4KICAgICAgICAgICAgICAgICAgICAjICgiQzoiLCAiLyIsICJhIikgcmVhc29uYWJseSBpbnR1aXRpdmUuCiAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gaXQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJ0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgYWx0c2VwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydCA9IHBhcnQucmVwbGFjZShhbHRzZXAsIHNlcCkKICAgICAgICAgICAgICAgICAgICAgICAgZHJ2ID0gc2VsZi5zcGxpdHJvb3QocGFydClbMF0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgZHJ2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgaWYgZHJ2IG9yIHJvb3Q6CiAgICAgICAgICAgIHBhcnNlZC5hcHBlbmQoZHJ2ICsgcm9vdCkKICAgICAgICBwYXJzZWQucmV2ZXJzZSgpCiAgICAgICAgcmV0dXJuIGRydiwgcm9vdCwgcGFyc2VkCgogICAgZGVmIGpvaW5fcGFyc2VkX3BhcnRzKHNlbGYsIGRydiwgcm9vdCwgcGFydHMsIGRydjIsIHJvb3QyLCBwYXJ0czIpOgogICAgICAgICIiIgogICAgICAgIEpvaW4gdGhlIHR3byBwYXRocyByZXByZXNlbnRlZCBieSB0aGUgcmVzcGVjdGl2ZQogICAgICAgIChkcml2ZSwgcm9vdCwgcGFydHMpIHR1cGxlcy4gIFJldHVybiBhIG5ldyAoZHJpdmUsIHJvb3QsIHBhcnRzKSB0dXBsZS4KICAgICAgICAiIiIKICAgICAgICBpZiByb290MjoKICAgICAgICAgICAgaWYgbm90IGRydjIgYW5kIGRydjoKICAgICAgICAgICAgICAgIHJldHVybiBkcnYsIHJvb3QyLCBbZHJ2ICsgcm9vdDJdICsgcGFydHMyWzE6XQogICAgICAgIGVsaWYgZHJ2MjoKICAgICAgICAgICAgaWYgZHJ2MiA9PSBkcnYgb3Igc2VsZi5jYXNlZm9sZChkcnYyKSA9PSBzZWxmLmNhc2Vmb2xkKGRydik6CiAgICAgICAgICAgICAgICAjIFNhbWUgZHJpdmUgPT4gc2Vjb25kIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGZpcnN0CiAgICAgICAgICAgICAgICByZXR1cm4gZHJ2LCByb290LCBwYXJ0cyArIHBhcnRzMlsxOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFNlY29uZCBwYXRoIGlzIG5vbi1hbmNob3JlZCAoY29tbW9uIGNhc2UpCiAgICAgICAgICAgIHJldHVybiBkcnYsIHJvb3QsIHBhcnRzICsgcGFydHMyCiAgICAgICAgcmV0dXJuIGRydjIsIHJvb3QyLCBwYXJ0czIKCgpjbGFzcyBfV2luZG93c0ZsYXZvdXIoX0ZsYXZvdXIpOgogICAgIyBSZWZlcmVuY2UgZm9yIFdpbmRvd3MgcGF0aHMgY2FuIGJlIGZvdW5kIGF0CiAgICAjIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9hYTM2NTI0NyUyOHY9dnMuODUlMjkuYXNweAoKICAgIHNlcCA9ICdcXCcKICAgIGFsdHNlcCA9ICcvJwogICAgaGFzX2RydiA9IFRydWUKICAgIHBhdGhtb2QgPSBudHBhdGgKCiAgICBpc19zdXBwb3J0ZWQgPSAob3MubmFtZSA9PSAnbnQnKQoKICAgIGRyaXZlX2xldHRlcnMgPSBzZXQoJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonKQogICAgZXh0X25hbWVzcGFjZV9wcmVmaXggPSAnXFxcXD9cXCcKCiAgICByZXNlcnZlZF9uYW1lcyA9ICgKICAgICAgICB7J0NPTicsICdQUk4nLCAnQVVYJywgJ05VTCcsICdDT05JTiQnLCAnQ09OT1VUJCd9IHwKICAgICAgICB7J0NPTSVzJyAlIGMgZm9yIGMgaW4gJzEyMzQ1Njc4OVx4YjlceGIyXHhiMyd9IHwKICAgICAgICB7J0xQVCVzJyAlIGMgZm9yIGMgaW4gJzEyMzQ1Njc4OVx4YjlceGIyXHhiMyd9CiAgICAgICAgKQoKICAgICMgSW50ZXJlc3RpbmcgZmluZGluZ3MgYWJvdXQgZXh0ZW5kZWQgcGF0aHM6CiAgICAjICogJ1xcP1xjOlxhJyBpcyBhbiBleHRlbmRlZCBwYXRoLCB3aGljaCBieXBhc3NlcyBub3JtYWwgV2luZG93cyBBUEkKICAgICMgICBwYXRoIHByb2Nlc3NpbmcuIFRodXMgcmVsYXRpdmUgcGF0aHMgYXJlIG5vdCByZXNvbHZlZCBhbmQgc2xhc2ggaXMgbm90CiAgICAjICAgdHJhbnNsYXRlZCB0byBiYWNrc2xhc2guIEl0IGhhcyB0aGUgbmF0aXZlIE5UIHBhdGggbGltaXQgb2YgMzI3NjcKICAgICMgICBjaGFyYWN0ZXJzLCBidXQgYSBiaXQgbGVzcyBhZnRlciByZXNvbHZpbmcgZGV2aWNlIHN5bWJvbGljIGxpbmtzLAogICAgIyAgIHN1Y2ggYXMgJ1w/P1xDOicgPT4gJ1xEZXZpY2VcSGFyZGRpc2tWb2x1bWUyJy4KICAgICMgKiAnXFw/XGM6L2EnIGxvb2tzIGZvciBhIGRldmljZSBuYW1lZCAnQzovYScgYmVjYXVzZSBzbGFzaCBpcyBhCiAgICAjICAgcmVndWxhciBuYW1lIGNoYXJhY3RlciBpbiB0aGUgb2JqZWN0IG5hbWVzcGFjZS4KICAgICMgKiAnXFw/XGM6XGZvby9iYXInIGlzIGludmFsaWQgYmVjYXVzZSAnLycgaXMgaWxsZWdhbCBpbiBOVCBmaWxlc3lzdGVtcy4KICAgICMgICBUaGUgb25seSBwYXRoIHNlcGFyYXRvciBhdCB0aGUgZmlsZXN5c3RlbSBsZXZlbCBpcyBiYWNrc2xhc2guCiAgICAjICogJy8vPy9jOlxhJyBhbmQgJy8vPy9jOi9hJyBhcmUgZWZmZWN0aXZlbHkgZXF1aXZhbGVudCB0byAnXFwuXGM6XGEnIGFuZAogICAgIyAgIHRodXMgbGltaXRlZCB0byBNQVhfUEFUSC4KICAgICMgKiBQcmlvciB0byBXaW5kb3dzIDgsIEFOU0kgQVBJIGJ5dGVzIHBhdGhzIGFyZSBsaW1pdGVkIHRvIE1BWF9QQVRILAogICAgIyAgIGV2ZW4gd2l0aCB0aGUgJ1xcP1wnIHByZWZpeC4KCiAgICBkZWYgc3BsaXRyb290KHNlbGYsIHBhcnQsIHNlcD1zZXApOgogICAgICAgIGZpcnN0ID0gcGFydFswOjFdCiAgICAgICAgc2Vjb25kID0gcGFydFsxOjJdCiAgICAgICAgaWYgKHNlY29uZCA9PSBzZXAgYW5kIGZpcnN0ID09IHNlcCk6CiAgICAgICAgICAgICMgWFhYIGV4dGVuZGVkIHBhdGhzIHNob3VsZCBhbHNvIGRpc2FibGUgdGhlIGNvbGxhcHNpbmcgb2YgIi4iCiAgICAgICAgICAgICMgY29tcG9uZW50cyAoYWNjb3JkaW5nIHRvIE1TRE4gZG9jcykuCiAgICAgICAgICAgIHByZWZpeCwgcGFydCA9IHNlbGYuX3NwbGl0X2V4dGVuZGVkX3BhdGgocGFydCkKICAgICAgICAgICAgZmlyc3QgPSBwYXJ0WzA6MV0KICAgICAgICAgICAgc2Vjb25kID0gcGFydFsxOjJdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJlZml4ID0gJycKICAgICAgICB0aGlyZCA9IHBhcnRbMjozXQogICAgICAgIGlmIChzZWNvbmQgPT0gc2VwIGFuZCBmaXJzdCA9PSBzZXAgYW5kIHRoaXJkICE9IHNlcCk6CiAgICAgICAgICAgICMgaXMgYSBVTkMgcGF0aDoKICAgICAgICAgICAgIyB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYgcm9vdAogICAgICAgICAgICAjIFxcbWFjaGluZVxtb3VudHBvaW50XGRpcmVjdG9yeVxldGNcLi4uCiAgICAgICAgICAgICMgICAgICAgICAgICBkaXJlY3RvcnkgXl5eXl5eXl5eXl5eXl4KICAgICAgICAgICAgaW5kZXggPSBwYXJ0LmZpbmQoc2VwLCAyKQogICAgICAgICAgICBpZiBpbmRleCAhPSAtMToKICAgICAgICAgICAgICAgIGluZGV4MiA9IHBhcnQuZmluZChzZXAsIGluZGV4ICsgMSkKICAgICAgICAgICAgICAgICMgYSBVTkMgcGF0aCBjYW4ndCBoYXZlIHR3byBzbGFzaGVzIGluIGEgcm93CiAgICAgICAgICAgICAgICAjIChhZnRlciB0aGUgaW5pdGlhbCB0d28pCiAgICAgICAgICAgICAgICBpZiBpbmRleDIgIT0gaW5kZXggKyAxOgogICAgICAgICAgICAgICAgICAgIGlmIGluZGV4MiA9PSAtMToKICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgyID0gbGVuKHBhcnQpCiAgICAgICAgICAgICAgICAgICAgaWYgcHJlZml4OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgcGFydFsxOmluZGV4Ml0sIHNlcCwgcGFydFtpbmRleDIrMTpdCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnRbOmluZGV4Ml0sIHNlcCwgcGFydFtpbmRleDIrMTpdCiAgICAgICAgZHJ2ID0gcm9vdCA9ICcnCiAgICAgICAgaWYgc2Vjb25kID09ICc6JyBhbmQgZmlyc3QgaW4gc2VsZi5kcml2ZV9sZXR0ZXJzOgogICAgICAgICAgICBkcnYgPSBwYXJ0WzoyXQogICAgICAgICAgICBwYXJ0ID0gcGFydFsyOl0KICAgICAgICAgICAgZmlyc3QgPSB0aGlyZAogICAgICAgIGlmIGZpcnN0ID09IHNlcDoKICAgICAgICAgICAgcm9vdCA9IGZpcnN0CiAgICAgICAgICAgIHBhcnQgPSBwYXJ0LmxzdHJpcChzZXApCiAgICAgICAgcmV0dXJuIHByZWZpeCArIGRydiwgcm9vdCwgcGFydAoKICAgIGRlZiBjYXNlZm9sZChzZWxmLCBzKToKICAgICAgICByZXR1cm4gcy5sb3dlcigpCgogICAgZGVmIGNhc2Vmb2xkX3BhcnRzKHNlbGYsIHBhcnRzKToKICAgICAgICByZXR1cm4gW3AubG93ZXIoKSBmb3IgcCBpbiBwYXJ0c10KCiAgICBkZWYgY29tcGlsZV9wYXR0ZXJuKHNlbGYsIHBhdHRlcm4pOgogICAgICAgIHJldHVybiByZS5jb21waWxlKGZubWF0Y2gudHJhbnNsYXRlKHBhdHRlcm4pLCByZS5JR05PUkVDQVNFKS5mdWxsbWF0Y2gKCiAgICBkZWYgX3NwbGl0X2V4dGVuZGVkX3BhdGgoc2VsZiwgcywgZXh0X3ByZWZpeD1leHRfbmFtZXNwYWNlX3ByZWZpeCk6CiAgICAgICAgcHJlZml4ID0gJycKICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoZXh0X3ByZWZpeCk6CiAgICAgICAgICAgIHByZWZpeCA9IHNbOjRdCiAgICAgICAgICAgIHMgPSBzWzQ6XQogICAgICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoJ1VOQ1xcJyk6CiAgICAgICAgICAgICAgICBwcmVmaXggKz0gc1s6M10KICAgICAgICAgICAgICAgIHMgPSAnXFwnICsgc1szOl0KICAgICAgICByZXR1cm4gcHJlZml4LCBzCgogICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYsIHBhcnRzKToKICAgICAgICAjIE5PVEU6IHRoZSBydWxlcyBmb3IgcmVzZXJ2ZWQgbmFtZXMgc2VlbSBzb21ld2hhdCBjb21wbGljYXRlZAogICAgICAgICMgKGUuZy4gciIuLlxOVUwiIGlzIHJlc2VydmVkIGJ1dCBub3QgciJmb29cTlVMIiBpZiAiZm9vIiBkb2VzIG5vdAogICAgICAgICMgZXhpc3QpLiBXZSBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgcmV0dXJuIFRydWUgZm9yIHBhdGhzCiAgICAgICAgIyB3aGljaCBhcmUgbm90IGNvbnNpZGVyZWQgcmVzZXJ2ZWQgYnkgV2luZG93cy4KICAgICAgICBpZiBub3QgcGFydHM6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGlmIHBhcnRzWzBdLnN0YXJ0c3dpdGgoJ1xcXFwnKToKICAgICAgICAgICAgIyBVTkMgcGF0aHMgYXJlIG5ldmVyIHJlc2VydmVkCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIG5hbWUgPSBwYXJ0c1stMV0ucGFydGl0aW9uKCcuJylbMF0ucGFydGl0aW9uKCc6JylbMF0ucnN0cmlwKCcgJykKICAgICAgICByZXR1cm4gbmFtZS51cHBlcigpIGluIHNlbGYucmVzZXJ2ZWRfbmFtZXMKCiAgICBkZWYgbWFrZV91cmkoc2VsZiwgcGF0aCk6CiAgICAgICAgIyBVbmRlciBXaW5kb3dzLCBmaWxlIFVSSXMgdXNlIHRoZSBVVEYtOCBlbmNvZGluZy4KICAgICAgICBkcml2ZSA9IHBhdGguZHJpdmUKICAgICAgICBpZiBsZW4oZHJpdmUpID09IDIgYW5kIGRyaXZlWzFdID09ICc6JzoKICAgICAgICAgICAgIyBJdCdzIGEgcGF0aCBvbiBhIGxvY2FsIGRyaXZlID0+ICdmaWxlOi8vL2M6L2EvYicKICAgICAgICAgICAgcmVzdCA9IHBhdGguYXNfcG9zaXgoKVsyOl0ubHN0cmlwKCcvJykKICAgICAgICAgICAgcmV0dXJuICdmaWxlOi8vLyVzLyVzJyAlICgKICAgICAgICAgICAgICAgIGRyaXZlLCB1cmxxdW90ZV9mcm9tX2J5dGVzKHJlc3QuZW5jb2RlKCd1dGYtOCcpKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEl0J3MgYSBwYXRoIG9uIGEgbmV0d29yayBkcml2ZSA9PiAnZmlsZTovL2hvc3Qvc2hhcmUvYS9iJwogICAgICAgICAgICByZXR1cm4gJ2ZpbGU6JyArIHVybHF1b3RlX2Zyb21fYnl0ZXMocGF0aC5hc19wb3NpeCgpLmVuY29kZSgndXRmLTgnKSkKCgpjbGFzcyBfUG9zaXhGbGF2b3VyKF9GbGF2b3VyKToKICAgIHNlcCA9ICcvJwogICAgYWx0c2VwID0gJycKICAgIGhhc19kcnYgPSBGYWxzZQogICAgcGF0aG1vZCA9IHBvc2l4cGF0aAoKICAgIGlzX3N1cHBvcnRlZCA9IChvcy5uYW1lICE9ICdudCcpCgogICAgZGVmIHNwbGl0cm9vdChzZWxmLCBwYXJ0LCBzZXA9c2VwKToKICAgICAgICBpZiBwYXJ0IGFuZCBwYXJ0WzBdID09IHNlcDoKICAgICAgICAgICAgc3RyaXBwZWRfcGFydCA9IHBhcnQubHN0cmlwKHNlcCkKICAgICAgICAgICAgIyBBY2NvcmRpbmcgdG8gUE9TSVggcGF0aCByZXNvbHV0aW9uOgogICAgICAgICAgICAjIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMveGJkX2NoYXAwNC5odG1sI3RhZ18wNF8xMQogICAgICAgICAgICAjICJBIHBhdGhuYW1lIHRoYXQgYmVnaW5zIHdpdGggdHdvIHN1Y2Nlc3NpdmUgc2xhc2hlcyBtYXkgYmUKICAgICAgICAgICAgIyBpbnRlcnByZXRlZCBpbiBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIG1hbm5lciwgYWx0aG91Z2ggbW9yZQogICAgICAgICAgICAjIHRoYW4gdHdvIGxlYWRpbmcgc2xhc2hlcyBzaGFsbCBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlIHNsYXNoIi4KICAgICAgICAgICAgaWYgbGVuKHBhcnQpIC0gbGVuKHN0cmlwcGVkX3BhcnQpID09IDI6CiAgICAgICAgICAgICAgICByZXR1cm4gJycsIHNlcCAqIDIsIHN0cmlwcGVkX3BhcnQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiAnJywgc2VwLCBzdHJpcHBlZF9wYXJ0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICcnLCAnJywgcGFydAoKICAgIGRlZiBjYXNlZm9sZChzZWxmLCBzKToKICAgICAgICByZXR1cm4gcwoKICAgIGRlZiBjYXNlZm9sZF9wYXJ0cyhzZWxmLCBwYXJ0cyk6CiAgICAgICAgcmV0dXJuIHBhcnRzCgogICAgZGVmIGNvbXBpbGVfcGF0dGVybihzZWxmLCBwYXR0ZXJuKToKICAgICAgICByZXR1cm4gcmUuY29tcGlsZShmbm1hdGNoLnRyYW5zbGF0ZShwYXR0ZXJuKSkuZnVsbG1hdGNoCgogICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYsIHBhcnRzKToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgbWFrZV91cmkoc2VsZiwgcGF0aCk6CiAgICAgICAgIyBXZSByZXByZXNlbnQgdGhlIHBhdGggdXNpbmcgdGhlIGxvY2FsIGZpbGVzeXN0ZW0gZW5jb2RpbmcsCiAgICAgICAgIyBmb3IgcG9ydGFiaWxpdHkgdG8gb3RoZXIgYXBwbGljYXRpb25zLgogICAgICAgIGJwYXRoID0gYnl0ZXMocGF0aCkKICAgICAgICByZXR1cm4gJ2ZpbGU6Ly8nICsgdXJscXVvdGVfZnJvbV9ieXRlcyhicGF0aCkKCgpfd2luZG93c19mbGF2b3VyID0gX1dpbmRvd3NGbGF2b3VyKCkKX3Bvc2l4X2ZsYXZvdXIgPSBfUG9zaXhGbGF2b3VyKCkKCgojCiMgR2xvYmJpbmcgaGVscGVycwojCgpkZWYgX21ha2Vfc2VsZWN0b3IocGF0dGVybl9wYXJ0cywgZmxhdm91cik6CiAgICBwYXQgPSBwYXR0ZXJuX3BhcnRzWzBdCiAgICBjaGlsZF9wYXJ0cyA9IHBhdHRlcm5fcGFydHNbMTpdCiAgICBpZiBub3QgcGF0OgogICAgICAgIHJldHVybiBfVGVybWluYXRpbmdTZWxlY3RvcigpCiAgICBpZiBwYXQgPT0gJyoqJzoKICAgICAgICBjbHMgPSBfUmVjdXJzaXZlV2lsZGNhcmRTZWxlY3RvcgogICAgZWxpZiAnKionIGluIHBhdDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHBhdHRlcm46ICcqKicgY2FuIG9ubHkgYmUgYW4gZW50aXJlIHBhdGggY29tcG9uZW50IikKICAgIGVsaWYgX2lzX3dpbGRjYXJkX3BhdHRlcm4ocGF0KToKICAgICAgICBjbHMgPSBfV2lsZGNhcmRTZWxlY3RvcgogICAgZWxzZToKICAgICAgICBjbHMgPSBfUHJlY2lzZVNlbGVjdG9yCiAgICByZXR1cm4gY2xzKHBhdCwgY2hpbGRfcGFydHMsIGZsYXZvdXIpCgppZiBoYXNhdHRyKGZ1bmN0b29scywgImxydV9jYWNoZSIpOgogICAgX21ha2Vfc2VsZWN0b3IgPSBmdW5jdG9vbHMubHJ1X2NhY2hlKCkoX21ha2Vfc2VsZWN0b3IpCgoKY2xhc3MgX1NlbGVjdG9yOgogICAgIiIiQSBzZWxlY3RvciBtYXRjaGVzIGEgc3BlY2lmaWMgZ2xvYiBwYXR0ZXJuIHBhcnQgYWdhaW5zdCB0aGUgY2hpbGRyZW4KICAgIG9mIGEgZ2l2ZW4gcGF0aC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMsIGZsYXZvdXIpOgogICAgICAgIHNlbGYuY2hpbGRfcGFydHMgPSBjaGlsZF9wYXJ0cwogICAgICAgIGlmIGNoaWxkX3BhcnRzOgogICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9tYWtlX3NlbGVjdG9yKGNoaWxkX3BhcnRzLCBmbGF2b3VyKQogICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5zdWNjZXNzb3IgPSBfVGVybWluYXRpbmdTZWxlY3RvcigpCiAgICAgICAgICAgIHNlbGYuZGlyb25seSA9IEZhbHNlCgogICAgZGVmIHNlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoKToKICAgICAgICAiIiJJdGVyYXRlIG92ZXIgYWxsIGNoaWxkIHBhdGhzIG9mIGBwYXJlbnRfcGF0aGAgbWF0Y2hlZCBieSB0aGlzCiAgICAgICAgc2VsZWN0b3IuICBUaGlzIGNhbiBjb250YWluIHBhcmVudF9wYXRoIGl0c2VsZi4iIiIKICAgICAgICBwYXRoX2NscyA9IHR5cGUocGFyZW50X3BhdGgpCiAgICAgICAgaXNfZGlyID0gcGF0aF9jbHMuaXNfZGlyCiAgICAgICAgZXhpc3RzID0gcGF0aF9jbHMuZXhpc3RzCiAgICAgICAgc2NhbmRpciA9IHBhdGhfY2xzLl9zY2FuZGlyCiAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6CiAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQogICAgICAgIHJldHVybiBzZWxmLl9zZWxlY3RfZnJvbShwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpCgoKY2xhc3MgX1Rlcm1pbmF0aW5nU2VsZWN0b3I6CgogICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgogICAgICAgIHlpZWxkIHBhcmVudF9wYXRoCgoKY2xhc3MgX1ByZWNpc2VTZWxlY3RvcihfU2VsZWN0b3IpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBjaGlsZF9wYXJ0cywgZmxhdm91cik6CiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cywgZmxhdm91cikKCiAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChzZWxmLm5hbWUpCiAgICAgICAgICAgIGlmIChpc19kaXIgaWYgc2VsZi5kaXJvbmx5IGVsc2UgZXhpc3RzKShwYXRoKToKICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgIHJldHVybgoKCmNsYXNzIF9XaWxkY2FyZFNlbGVjdG9yKF9TZWxlY3Rvcik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdCwgY2hpbGRfcGFydHMsIGZsYXZvdXIpOgogICAgICAgIHNlbGYubWF0Y2ggPSBmbGF2b3VyLmNvbXBpbGVfcGF0dGVybihwYXQpCiAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzLCBmbGF2b3VyKQoKICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdpdGggc2NhbmRpcihwYXJlbnRfcGF0aCkgYXMgc2NhbmRpcl9pdDoKICAgICAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXJfaXQpCiAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgogICAgICAgICAgICAgICAgaWYgc2VsZi5kaXJvbmx5OgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIyAiZW50cnkuaXNfZGlyKCkiIGNhbiByYWlzZSBQZXJtaXNzaW9uRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiBzb21lIGNhc2VzIChzZWUgYnBvLTM4ODk0KSwgd2hpY2ggaXMgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICMgYW1vbmcgdGhlIGVycm9ycyBpZ25vcmVkIGJ5IF9pZ25vcmVfZXJyb3IoKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZW50cnkuaXNfZGlyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaWdub3JlX2Vycm9yKGUpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIG5hbWUgPSBlbnRyeS5uYW1lCiAgICAgICAgICAgICAgICBpZiBzZWxmLm1hdGNoKG5hbWUpOgogICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKG5hbWUpCiAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgIHJldHVybgoKCmNsYXNzIF9SZWN1cnNpdmVXaWxkY2FyZFNlbGVjdG9yKF9TZWxlY3Rvcik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdCwgY2hpbGRfcGFydHMsIGZsYXZvdXIpOgogICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cywgZmxhdm91cikKCiAgICBkZWYgX2l0ZXJhdGVfZGlyZWN0b3JpZXMoc2VsZiwgcGFyZW50X3BhdGgsIGlzX2Rpciwgc2NhbmRpcik6CiAgICAgICAgeWllbGQgcGFyZW50X3BhdGgKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdpdGggc2NhbmRpcihwYXJlbnRfcGF0aCkgYXMgc2NhbmRpcl9pdDoKICAgICAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXJfaXQpCiAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgogICAgICAgICAgICAgICAgZW50cnlfaXNfZGlyID0gRmFsc2UKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBlbnRyeV9pc19kaXIgPSBlbnRyeS5pc19kaXIoKQogICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2lnbm9yZV9lcnJvcihlKToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgIGlmIGVudHJ5X2lzX2RpciBhbmQgbm90IGVudHJ5LmlzX3N5bWxpbmsoKToKICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChlbnRyeS5uYW1lKQogICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuX2l0ZXJhdGVfZGlyZWN0b3JpZXMocGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgIHJldHVybgoKICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHlpZWxkZWQgPSBzZXQoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzdWNjZXNzb3Jfc2VsZWN0ID0gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tCiAgICAgICAgICAgICAgICBmb3Igc3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzdWNjZXNzb3Jfc2VsZWN0KHN0YXJ0aW5nX3BvaW50LCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmFkZChwKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgeWllbGRlZC5jbGVhcigpCiAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgcmV0dXJuCgoKIwojIFB1YmxpYyBBUEkKIwoKY2xhc3MgX1BhdGhQYXJlbnRzKFNlcXVlbmNlKToKICAgICIiIlRoaXMgb2JqZWN0IHByb3ZpZGVzIHNlcXVlbmNlLWxpa2UgYWNjZXNzIHRvIHRoZSBsb2dpY2FsIGFuY2VzdG9ycwogICAgb2YgYSBwYXRoLiAgRG9uJ3QgdHJ5IHRvIGNvbnN0cnVjdCBpdCB5b3Vyc2VsZi4iIiIKICAgIF9fc2xvdHNfXyA9ICgnX3BhdGhjbHMnLCAnX2RydicsICdfcm9vdCcsICdfcGFydHMnKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKICAgICAgICAjIFdlIGRvbid0IHN0b3JlIHRoZSBpbnN0YW5jZSB0byBhdm9pZCByZWZlcmVuY2UgY3ljbGVzCiAgICAgICAgc2VsZi5fcGF0aGNscyA9IHR5cGUocGF0aCkKICAgICAgICBzZWxmLl9kcnYgPSBwYXRoLl9kcnYKICAgICAgICBzZWxmLl9yb290ID0gcGF0aC5fcm9vdAogICAgICAgIHNlbGYuX3BhcnRzID0gcGF0aC5fcGFydHMKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9kcnYgb3Igc2VsZi5fcm9vdDoKICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9wYXJ0cykgLSAxCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9wYXJ0cykKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaWR4KToKICAgICAgICBpZiBpc2luc3RhbmNlKGlkeCwgc2xpY2UpOgogICAgICAgICAgICByZXR1cm4gdHVwbGUoc2VsZltpXSBmb3IgaSBpbiByYW5nZSgqaWR4LmluZGljZXMobGVuKHNlbGYpKSkpCgogICAgICAgIGlmIGlkeCA+PSBsZW4oc2VsZikgb3IgaWR4IDwgLWxlbihzZWxmKToKICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcihpZHgpCiAgICAgICAgaWYgaWR4IDwgMDoKICAgICAgICAgICAgaWR4ICs9IGxlbihzZWxmKQogICAgICAgIHJldHVybiBzZWxmLl9wYXRoY2xzLl9mcm9tX3BhcnNlZF9wYXJ0cyhzZWxmLl9kcnYsIHNlbGYuX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnRzWzotaWR4IC0gMV0pCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPHt9LnBhcmVudHM+Ii5mb3JtYXQoc2VsZi5fcGF0aGNscy5fX25hbWVfXykKCgpjbGFzcyBQdXJlUGF0aChvYmplY3QpOgogICAgIiIiQmFzZSBjbGFzcyBmb3IgbWFuaXB1bGF0aW5nIHBhdGhzIHdpdGhvdXQgSS9PLgoKICAgIFB1cmVQYXRoIHJlcHJlc2VudHMgYSBmaWxlc3lzdGVtIHBhdGggYW5kIG9mZmVycyBvcGVyYXRpb25zIHdoaWNoCiAgICBkb24ndCBpbXBseSBhbnkgYWN0dWFsIGZpbGVzeXN0ZW0gSS9PLiAgRGVwZW5kaW5nIG9uIHlvdXIgc3lzdGVtLAogICAgaW5zdGFudGlhdGluZyBhIFB1cmVQYXRoIHdpbGwgcmV0dXJuIGVpdGhlciBhIFB1cmVQb3NpeFBhdGggb3IgYQogICAgUHVyZVdpbmRvd3NQYXRoIG9iamVjdC4gIFlvdSBjYW4gYWxzbyBpbnN0YW50aWF0ZSBlaXRoZXIgb2YgdGhlc2UgY2xhc3NlcwogICAgZGlyZWN0bHksIHJlZ2FyZGxlc3Mgb2YgeW91ciBzeXN0ZW0uCiAgICAiIiIKICAgIF9fc2xvdHNfXyA9ICgKICAgICAgICAnX2RydicsICdfcm9vdCcsICdfcGFydHMnLAogICAgICAgICdfc3RyJywgJ19oYXNoJywgJ19wcGFydHMnLCAnX2NhY2hlZF9jcGFydHMnLAogICAgKQoKICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MpOgogICAgICAgICIiIkNvbnN0cnVjdCBhIFB1cmVQYXRoIGZyb20gb25lIG9yIHNldmVyYWwgc3RyaW5ncyBhbmQgb3IgZXhpc3RpbmcKICAgICAgICBQdXJlUGF0aCBvYmplY3RzLiAgVGhlIHN0cmluZ3MgYW5kIHBhdGggb2JqZWN0cyBhcmUgY29tYmluZWQgc28gYXMKICAgICAgICB0byB5aWVsZCBhIGNhbm9uaWNhbGl6ZWQgcGF0aCwgd2hpY2ggaXMgaW5jb3Jwb3JhdGVkIGludG8gdGhlCiAgICAgICAgbmV3IFB1cmVQYXRoIG9iamVjdC4KICAgICAgICAiIiIKICAgICAgICBpZiBjbHMgaXMgUHVyZVBhdGg6CiAgICAgICAgICAgIGNscyA9IFB1cmVXaW5kb3dzUGF0aCBpZiBvcy5uYW1lID09ICdudCcgZWxzZSBQdXJlUG9zaXhQYXRoCiAgICAgICAgcmV0dXJuIGNscy5fZnJvbV9wYXJ0cyhhcmdzKQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICMgVXNpbmcgdGhlIHBhcnRzIHR1cGxlIGhlbHBzIHNoYXJlIGludGVybmVkIHBhdGggcGFydHMKICAgICAgICAjIHdoZW4gcGlja2xpbmcgcmVsYXRlZCBwYXRocy4KICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCB0dXBsZShzZWxmLl9wYXJ0cykpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX3BhcnNlX2FyZ3MoY2xzLCBhcmdzKToKICAgICAgICAjIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IGRvbid0IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlLCBqdXN0CiAgICAgICAgIyBjYW5vbmljYWxpemUgc29tZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMuCiAgICAgICAgcGFydHMgPSBbXQogICAgICAgIGZvciBhIGluIGFyZ3M6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgUHVyZVBhdGgpOgogICAgICAgICAgICAgICAgcGFydHMgKz0gYS5fcGFydHMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGEgPSBvcy5mc3BhdGgoYSkKICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKICAgICAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCiAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHN0cihhKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyIG9iamVjdCBvciBhbiBvcy5QYXRoTGlrZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgcmV0dXJuaW5nIHN0ciwgbm90ICVyIgogICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCiAgICAgICAgcmV0dXJuIGNscy5fZmxhdm91ci5wYXJzZV9wYXJ0cyhwYXJ0cykKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfZnJvbV9wYXJ0cyhjbHMsIGFyZ3MpOgogICAgICAgICMgV2UgbmVlZCB0byBjYWxsIF9wYXJzZV9hcmdzIG9uIHRoZSBpbnN0YW5jZSwgc28gYXMgdG8gZ2V0IHRoZQogICAgICAgICMgcmlnaHQgZmxhdm91ci4KICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgIGRydiwgcm9vdCwgcGFydHMgPSBzZWxmLl9wYXJzZV9hcmdzKGFyZ3MpCiAgICAgICAgc2VsZi5fZHJ2ID0gZHJ2CiAgICAgICAgc2VsZi5fcm9vdCA9IHJvb3QKICAgICAgICBzZWxmLl9wYXJ0cyA9IHBhcnRzCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfZnJvbV9wYXJzZWRfcGFydHMoY2xzLCBkcnYsIHJvb3QsIHBhcnRzKToKICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgIHNlbGYuX2RydiA9IGRydgogICAgICAgIHNlbGYuX3Jvb3QgPSByb290CiAgICAgICAgc2VsZi5fcGFydHMgPSBwYXJ0cwogICAgICAgIHJldHVybiBzZWxmCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2Zvcm1hdF9wYXJzZWRfcGFydHMoY2xzLCBkcnYsIHJvb3QsIHBhcnRzKToKICAgICAgICBpZiBkcnYgb3Igcm9vdDoKICAgICAgICAgICAgcmV0dXJuIGRydiArIHJvb3QgKyBjbHMuX2ZsYXZvdXIuam9pbihwYXJ0c1sxOl0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGNscy5fZmxhdm91ci5qb2luKHBhcnRzKQoKICAgIGRlZiBfbWFrZV9jaGlsZChzZWxmLCBhcmdzKToKICAgICAgICBkcnYsIHJvb3QsIHBhcnRzID0gc2VsZi5fcGFyc2VfYXJncyhhcmdzKQogICAgICAgIGRydiwgcm9vdCwgcGFydHMgPSBzZWxmLl9mbGF2b3VyLmpvaW5fcGFyc2VkX3BhcnRzKAogICAgICAgICAgICBzZWxmLl9kcnYsIHNlbGYuX3Jvb3QsIHNlbGYuX3BhcnRzLCBkcnYsIHJvb3QsIHBhcnRzKQogICAgICAgIHJldHVybiBzZWxmLl9mcm9tX3BhcnNlZF9wYXJ0cyhkcnYsIHJvb3QsIHBhcnRzKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXRoLCBzdWl0YWJsZSBmb3IKICAgICAgICBwYXNzaW5nIHRvIHN5c3RlbSBjYWxscy4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdHIKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHNlbGYuX3N0ciA9IHNlbGYuX2Zvcm1hdF9wYXJzZWRfcGFydHMoc2VsZi5fZHJ2LCBzZWxmLl9yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnRzKSBvciAnLicKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0cgoKICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgogICAgICAgIHJldHVybiBzdHIoc2VsZikKCiAgICBkZWYgYXNfcG9zaXgoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdGggd2l0aCBmb3J3YXJkICgvKQogICAgICAgIHNsYXNoZXMuIiIiCiAgICAgICAgZiA9IHNlbGYuX2ZsYXZvdXIKICAgICAgICByZXR1cm4gc3RyKHNlbGYpLnJlcGxhY2UoZi5zZXAsICcvJykKCiAgICBkZWYgX19ieXRlc19fKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgYnl0ZXMgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdGguICBUaGlzIGlzIG9ubHkKICAgICAgICByZWNvbW1lbmRlZCB0byB1c2UgdW5kZXIgVW5peC4iIiIKICAgICAgICByZXR1cm4gb3MuZnNlbmNvZGUoc2VsZikKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICJ7fSh7IXJ9KSIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLmFzX3Bvc2l4KCkpCgogICAgZGVmIGFzX3VyaShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggYXMgYSAnZmlsZScgVVJJLiIiIgogICAgICAgIGlmIG5vdCBzZWxmLmlzX2Fic29sdXRlKCk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlbGF0aXZlIHBhdGggY2FuJ3QgYmUgZXhwcmVzc2VkIGFzIGEgZmlsZSBVUkkiKQogICAgICAgIHJldHVybiBzZWxmLl9mbGF2b3VyLm1ha2VfdXJpKHNlbGYpCgogICAgQHByb3BlcnR5CiAgICBkZWYgX2NwYXJ0cyhzZWxmKToKICAgICAgICAjIENhY2hlZCBjYXNlZm9sZGVkIHBhcnRzLCBmb3IgaGFzaGluZyBhbmQgY29tcGFyaXNvbgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlZF9jcGFydHMKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHNlbGYuX2NhY2hlZF9jcGFydHMgPSBzZWxmLl9mbGF2b3VyLmNhc2Vmb2xkX3BhcnRzKHNlbGYuX3BhcnRzKQogICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkX2NwYXJ0cwoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBQdXJlUGF0aCk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiBzZWxmLl9jcGFydHMgPT0gb3RoZXIuX2NwYXJ0cyBhbmQgc2VsZi5fZmxhdm91ciBpcyBvdGhlci5fZmxhdm91cgoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBzZWxmLl9oYXNoID0gaGFzaCh0dXBsZShzZWxmLl9jcGFydHMpKQogICAgICAgICAgICByZXR1cm4gc2VsZi5faGFzaAoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBQdXJlUGF0aCkgb3Igc2VsZi5fZmxhdm91ciBpcyBub3Qgb3RoZXIuX2ZsYXZvdXI6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiBzZWxmLl9jcGFydHMgPCBvdGhlci5fY3BhcnRzCgogICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFB1cmVQYXRoKSBvciBzZWxmLl9mbGF2b3VyIGlzIG5vdCBvdGhlci5fZmxhdm91cjoKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHNlbGYuX2NwYXJ0cyA8PSBvdGhlci5fY3BhcnRzCgogICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFB1cmVQYXRoKSBvciBzZWxmLl9mbGF2b3VyIGlzIG5vdCBvdGhlci5fZmxhdm91cjoKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHNlbGYuX2NwYXJ0cyA+IG90aGVyLl9jcGFydHMKCiAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUHVyZVBhdGgpIG9yIHNlbGYuX2ZsYXZvdXIgaXMgbm90IG90aGVyLl9mbGF2b3VyOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gc2VsZi5fY3BhcnRzID49IG90aGVyLl9jcGFydHMKCiAgICBkcml2ZSA9IHByb3BlcnR5KGF0dHJnZXR0ZXIoJ19kcnYnKSwKICAgICAgICAgICAgICAgICAgICAgZG9jPSIiIlRoZSBkcml2ZSBwcmVmaXggKGxldHRlciBvciBVTkMgcGF0aCksIGlmIGFueS4iIiIpCgogICAgcm9vdCA9IHByb3BlcnR5KGF0dHJnZXR0ZXIoJ19yb290JyksCiAgICAgICAgICAgICAgICAgICAgZG9jPSIiIlRoZSByb290IG9mIHRoZSBwYXRoLCBpZiBhbnkuIiIiKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFuY2hvcihzZWxmKToKICAgICAgICAiIiJUaGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgZHJpdmUgYW5kIHJvb3QsIG9yICcnLiIiIgogICAgICAgIGFuY2hvciA9IHNlbGYuX2RydiArIHNlbGYuX3Jvb3QKICAgICAgICByZXR1cm4gYW5jaG9yCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAiIiJUaGUgZmluYWwgcGF0aCBjb21wb25lbnQsIGlmIGFueS4iIiIKICAgICAgICBwYXJ0cyA9IHNlbGYuX3BhcnRzCiAgICAgICAgaWYgbGVuKHBhcnRzKSA9PSAoMSBpZiAoc2VsZi5fZHJ2IG9yIHNlbGYuX3Jvb3QpIGVsc2UgMCk6CiAgICAgICAgICAgIHJldHVybiAnJwogICAgICAgIHJldHVybiBwYXJ0c1stMV0KCiAgICBAcHJvcGVydHkKICAgIGRlZiBzdWZmaXgoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgVGhlIGZpbmFsIGNvbXBvbmVudCdzIGxhc3Qgc3VmZml4LCBpZiBhbnkuCgogICAgICAgIFRoaXMgaW5jbHVkZXMgdGhlIGxlYWRpbmcgcGVyaW9kLiBGb3IgZXhhbXBsZTogJy50eHQnCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9IHNlbGYubmFtZQogICAgICAgIGkgPSBuYW1lLnJmaW5kKCcuJykKICAgICAgICBpZiAwIDwgaSA8IGxlbihuYW1lKSAtIDE6CiAgICAgICAgICAgIHJldHVybiBuYW1lW2k6XQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnJwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHN1ZmZpeGVzKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIEEgbGlzdCBvZiB0aGUgZmluYWwgY29tcG9uZW50J3Mgc3VmZml4ZXMsIGlmIGFueS4KCiAgICAgICAgVGhlc2UgaW5jbHVkZSB0aGUgbGVhZGluZyBwZXJpb2RzLiBGb3IgZXhhbXBsZTogWycudGFyJywgJy5neiddCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9IHNlbGYubmFtZQogICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoJy4nKToKICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgbmFtZSA9IG5hbWUubHN0cmlwKCcuJykKICAgICAgICByZXR1cm4gWycuJyArIHN1ZmZpeCBmb3Igc3VmZml4IGluIG5hbWUuc3BsaXQoJy4nKVsxOl1dCgogICAgQHByb3BlcnR5CiAgICBkZWYgc3RlbShzZWxmKToKICAgICAgICAiIiJUaGUgZmluYWwgcGF0aCBjb21wb25lbnQsIG1pbnVzIGl0cyBsYXN0IHN1ZmZpeC4iIiIKICAgICAgICBuYW1lID0gc2VsZi5uYW1lCiAgICAgICAgaSA9IG5hbWUucmZpbmQoJy4nKQogICAgICAgIGlmIDAgPCBpIDwgbGVuKG5hbWUpIC0gMToKICAgICAgICAgICAgcmV0dXJuIG5hbWVbOmldCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIG5hbWUKCiAgICBkZWYgd2l0aF9uYW1lKHNlbGYsIG5hbWUpOgogICAgICAgICIiIlJldHVybiBhIG5ldyBwYXRoIHdpdGggdGhlIGZpbGUgbmFtZSBjaGFuZ2VkLiIiIgogICAgICAgIGlmIG5vdCBzZWxmLm5hbWU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVyIGhhcyBhbiBlbXB0eSBuYW1lIiAlIChzZWxmLCkpCiAgICAgICAgZHJ2LCByb290LCBwYXJ0cyA9IHNlbGYuX2ZsYXZvdXIucGFyc2VfcGFydHMoKG5hbWUsKSkKICAgICAgICBpZiAobm90IG5hbWUgb3IgbmFtZVstMV0gaW4gW3NlbGYuX2ZsYXZvdXIuc2VwLCBzZWxmLl9mbGF2b3VyLmFsdHNlcF0KICAgICAgICAgICAgb3IgZHJ2IG9yIHJvb3Qgb3IgbGVuKHBhcnRzKSAhPSAxKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBuYW1lICVyIiAlIChuYW1lKSkKICAgICAgICByZXR1cm4gc2VsZi5fZnJvbV9wYXJzZWRfcGFydHMoc2VsZi5fZHJ2LCBzZWxmLl9yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJ0c1s6LTFdICsgW25hbWVdKQoKICAgIGRlZiB3aXRoX3N0ZW0oc2VsZiwgc3RlbSk6CiAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHBhdGggd2l0aCB0aGUgc3RlbSBjaGFuZ2VkLiIiIgogICAgICAgIHJldHVybiBzZWxmLndpdGhfbmFtZShzdGVtICsgc2VsZi5zdWZmaXgpCgogICAgZGVmIHdpdGhfc3VmZml4KHNlbGYsIHN1ZmZpeCk6CiAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHBhdGggd2l0aCB0aGUgZmlsZSBzdWZmaXggY2hhbmdlZC4gIElmIHRoZSBwYXRoCiAgICAgICAgaGFzIG5vIHN1ZmZpeCwgYWRkIGdpdmVuIHN1ZmZpeC4gIElmIHRoZSBnaXZlbiBzdWZmaXggaXMgYW4gZW1wdHkKICAgICAgICBzdHJpbmcsIHJlbW92ZSB0aGUgc3VmZml4IGZyb20gdGhlIHBhdGguCiAgICAgICAgIiIiCiAgICAgICAgZiA9IHNlbGYuX2ZsYXZvdXIKICAgICAgICBpZiBmLnNlcCBpbiBzdWZmaXggb3IgZi5hbHRzZXAgYW5kIGYuYWx0c2VwIGluIHN1ZmZpeDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBzdWZmaXggJXIiICUgKHN1ZmZpeCwpKQogICAgICAgIGlmIHN1ZmZpeCBhbmQgbm90IHN1ZmZpeC5zdGFydHN3aXRoKCcuJykgb3Igc3VmZml4ID09ICcuJzoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBzdWZmaXggJXIiICUgKHN1ZmZpeCkpCiAgICAgICAgbmFtZSA9IHNlbGYubmFtZQogICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlciBoYXMgYW4gZW1wdHkgbmFtZSIgJSAoc2VsZiwpKQogICAgICAgIG9sZF9zdWZmaXggPSBzZWxmLnN1ZmZpeAogICAgICAgIGlmIG5vdCBvbGRfc3VmZml4OgogICAgICAgICAgICBuYW1lID0gbmFtZSArIHN1ZmZpeAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5hbWUgPSBuYW1lWzotbGVuKG9sZF9zdWZmaXgpXSArIHN1ZmZpeAogICAgICAgIHJldHVybiBzZWxmLl9mcm9tX3BhcnNlZF9wYXJ0cyhzZWxmLl9kcnYsIHNlbGYuX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnRzWzotMV0gKyBbbmFtZV0pCgogICAgZGVmIHJlbGF0aXZlX3RvKHNlbGYsICpvdGhlcik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGFub3RoZXIgcGF0aCBpZGVudGlmaWVkIGJ5IHRoZSBwYXNzZWQKICAgICAgICBhcmd1bWVudHMuICBJZiB0aGUgb3BlcmF0aW9uIGlzIG5vdCBwb3NzaWJsZSAoYmVjYXVzZSB0aGlzIGlzIG5vdAogICAgICAgIGEgc3VicGF0aCBvZiB0aGUgb3RoZXIgcGF0aCksIHJhaXNlIFZhbHVlRXJyb3IuCiAgICAgICAgIiIiCiAgICAgICAgIyBGb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QsIGRyaXZlIGFuZCByb290IGFyZSBjb25zaWRlcmVkCiAgICAgICAgIyBzZXBhcmF0ZSBwYXJ0cywgaS5lLjoKICAgICAgICAjICAgUGF0aCgnYzovJykucmVsYXRpdmVfdG8oJ2M6JykgIGdpdmVzIFBhdGgoJy8nKQogICAgICAgICMgICBQYXRoKCdjOi8nKS5yZWxhdGl2ZV90bygnLycpICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgIGlmIG5vdCBvdGhlcjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJuZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpCiAgICAgICAgcGFydHMgPSBzZWxmLl9wYXJ0cwogICAgICAgIGRydiA9IHNlbGYuX2RydgogICAgICAgIHJvb3QgPSBzZWxmLl9yb290CiAgICAgICAgaWYgcm9vdDoKICAgICAgICAgICAgYWJzX3BhcnRzID0gW2Rydiwgcm9vdF0gKyBwYXJ0c1sxOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICBhYnNfcGFydHMgPSBwYXJ0cwogICAgICAgIHRvX2RydiwgdG9fcm9vdCwgdG9fcGFydHMgPSBzZWxmLl9wYXJzZV9hcmdzKG90aGVyKQogICAgICAgIGlmIHRvX3Jvb3Q6CiAgICAgICAgICAgIHRvX2Fic19wYXJ0cyA9IFt0b19kcnYsIHRvX3Jvb3RdICsgdG9fcGFydHNbMTpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdG9fYWJzX3BhcnRzID0gdG9fcGFydHMKICAgICAgICBuID0gbGVuKHRvX2Fic19wYXJ0cykKICAgICAgICBjZiA9IHNlbGYuX2ZsYXZvdXIuY2FzZWZvbGRfcGFydHMKICAgICAgICBpZiAocm9vdCBvciBkcnYpIGlmIG4gPT0gMCBlbHNlIGNmKGFic19wYXJ0c1s6bl0pICE9IGNmKHRvX2Fic19wYXJ0cyk6CiAgICAgICAgICAgIGZvcm1hdHRlZCA9IHNlbGYuX2Zvcm1hdF9wYXJzZWRfcGFydHModG9fZHJ2LCB0b19yb290LCB0b19wYXJ0cykKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigieyFyfSBpcyBub3QgaW4gdGhlIHN1YnBhdGggb2YgeyFyfSIKICAgICAgICAgICAgICAgICAgICAiIE9SIG9uZSBwYXRoIGlzIHJlbGF0aXZlIGFuZCB0aGUgb3RoZXIgaXMgYWJzb2x1dGUuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc3RyKHNlbGYpLCBzdHIoZm9ybWF0dGVkKSkpCiAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFyc2VkX3BhcnRzKCcnLCByb290IGlmIG4gPT0gMSBlbHNlICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfcGFydHNbbjpdKQoKICAgIGRlZiBpc19yZWxhdGl2ZV90byhzZWxmLCAqb3RoZXIpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGlzIHJlbGF0aXZlIHRvIGFub3RoZXIgcGF0aCBvciBGYWxzZS4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYucmVsYXRpdmVfdG8oKm90aGVyKQogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBAcHJvcGVydHkKICAgIGRlZiBwYXJ0cyhzZWxmKToKICAgICAgICAiIiJBbiBvYmplY3QgcHJvdmlkaW5nIHNlcXVlbmNlLWxpa2UgYWNjZXNzIHRvIHRoZQogICAgICAgIGNvbXBvbmVudHMgaW4gdGhlIGZpbGVzeXN0ZW0gcGF0aC4iIiIKICAgICAgICAjIFdlIGNhY2hlIHRoZSB0dXBsZSB0byBhdm9pZCBidWlsZGluZyBhIG5ldyBvbmUgZWFjaCB0aW1lIC5wYXJ0cwogICAgICAgICMgaXMgYWNjZXNzZWQuICBYWFggaXMgdGhpcyBuZWNlc3Nhcnk/CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcHBhcnRzCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBzZWxmLl9wcGFydHMgPSB0dXBsZShzZWxmLl9wYXJ0cykKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BwYXJ0cwoKICAgIGRlZiBqb2lucGF0aChzZWxmLCAqYXJncyk6CiAgICAgICAgIiIiQ29tYmluZSB0aGlzIHBhdGggd2l0aCBvbmUgb3Igc2V2ZXJhbCBhcmd1bWVudHMsIGFuZCByZXR1cm4gYQogICAgICAgIG5ldyBwYXRoIHJlcHJlc2VudGluZyBlaXRoZXIgYSBzdWJwYXRoIChpZiBhbGwgYXJndW1lbnRzIGFyZSByZWxhdGl2ZQogICAgICAgIHBhdGhzKSBvciBhIHRvdGFsbHkgZGlmZmVyZW50IHBhdGggKGlmIG9uZSBvZiB0aGUgYXJndW1lbnRzIGlzCiAgICAgICAgYW5jaG9yZWQpLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9tYWtlX2NoaWxkKGFyZ3MpCgogICAgZGVmIF9fdHJ1ZWRpdl9fKHNlbGYsIGtleSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fbWFrZV9jaGlsZCgoa2V5LCkpCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBrZXkpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFydHMoW2tleV0gKyBzZWxmLl9wYXJ0cykKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBwYXJlbnQoc2VsZik6CiAgICAgICAgIiIiVGhlIGxvZ2ljYWwgcGFyZW50IG9mIHRoZSBwYXRoLiIiIgogICAgICAgIGRydiA9IHNlbGYuX2RydgogICAgICAgIHJvb3QgPSBzZWxmLl9yb290CiAgICAgICAgcGFydHMgPSBzZWxmLl9wYXJ0cwogICAgICAgIGlmIGxlbihwYXJ0cykgPT0gMSBhbmQgKGRydiBvciByb290KToKICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICByZXR1cm4gc2VsZi5fZnJvbV9wYXJzZWRfcGFydHMoZHJ2LCByb290LCBwYXJ0c1s6LTFdKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBhcmVudHMoc2VsZik6CiAgICAgICAgIiIiQSBzZXF1ZW5jZSBvZiB0aGlzIHBhdGgncyBsb2dpY2FsIHBhcmVudHMuIiIiCiAgICAgICAgcmV0dXJuIF9QYXRoUGFyZW50cyhzZWxmKQoKICAgIGRlZiBpc19hYnNvbHV0ZShzZWxmKToKICAgICAgICAiIiJUcnVlIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlIChoYXMgYm90aCBhIHJvb3QgYW5kLCBpZiBhcHBsaWNhYmxlLAogICAgICAgIGEgZHJpdmUpLiIiIgogICAgICAgIGlmIG5vdCBzZWxmLl9yb290OgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gbm90IHNlbGYuX2ZsYXZvdXIuaGFzX2RydiBvciBib29sKHNlbGYuX2RydikKCiAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHBhdGggY29udGFpbnMgb25lIG9mIHRoZSBzcGVjaWFsIG5hbWVzIHJlc2VydmVkCiAgICAgICAgYnkgdGhlIHN5c3RlbSwgaWYgYW55LiIiIgogICAgICAgIHJldHVybiBzZWxmLl9mbGF2b3VyLmlzX3Jlc2VydmVkKHNlbGYuX3BhcnRzKQoKICAgIGRlZiBtYXRjaChzZWxmLCBwYXRoX3BhdHRlcm4pOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBUcnVlIGlmIHRoaXMgcGF0aCBtYXRjaGVzIHRoZSBnaXZlbiBwYXR0ZXJuLgogICAgICAgICIiIgogICAgICAgIGNmID0gc2VsZi5fZmxhdm91ci5jYXNlZm9sZAogICAgICAgIHBhdGhfcGF0dGVybiA9IGNmKHBhdGhfcGF0dGVybikKICAgICAgICBkcnYsIHJvb3QsIHBhdF9wYXJ0cyA9IHNlbGYuX2ZsYXZvdXIucGFyc2VfcGFydHMoKHBhdGhfcGF0dGVybiwpKQogICAgICAgIGlmIG5vdCBwYXRfcGFydHM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImVtcHR5IHBhdHRlcm4iKQogICAgICAgIGlmIGRydiBhbmQgZHJ2ICE9IGNmKHNlbGYuX2Rydik6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGlmIHJvb3QgYW5kIHJvb3QgIT0gY2Yoc2VsZi5fcm9vdCk6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHBhcnRzID0gc2VsZi5fY3BhcnRzCiAgICAgICAgaWYgZHJ2IG9yIHJvb3Q6CiAgICAgICAgICAgIGlmIGxlbihwYXRfcGFydHMpICE9IGxlbihwYXJ0cyk6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgcGF0X3BhcnRzID0gcGF0X3BhcnRzWzE6XQogICAgICAgIGVsaWYgbGVuKHBhdF9wYXJ0cykgPiBsZW4ocGFydHMpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBmb3IgcGFydCwgcGF0IGluIHppcChyZXZlcnNlZChwYXJ0cyksIHJldmVyc2VkKHBhdF9wYXJ0cykpOgogICAgICAgICAgICBpZiBub3QgZm5tYXRjaC5mbm1hdGNoY2FzZShwYXJ0LCBwYXQpOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiMgQ2FuJ3Qgc3ViY2xhc3Mgb3MuUGF0aExpa2UgZnJvbSBQdXJlUGF0aCBhbmQga2VlcCB0aGUgY29uc3RydWN0b3IKIyBvcHRpbWl6YXRpb25zIGluIFB1cmVQYXRoLl9wYXJzZV9hcmdzKCkuCm9zLlBhdGhMaWtlLnJlZ2lzdGVyKFB1cmVQYXRoKQoKCmNsYXNzIFB1cmVQb3NpeFBhdGgoUHVyZVBhdGgpOgogICAgIiIiUHVyZVBhdGggc3ViY2xhc3MgZm9yIG5vbi1XaW5kb3dzIHN5c3RlbXMuCgogICAgT24gYSBQT1NJWCBzeXN0ZW0sIGluc3RhbnRpYXRpbmcgYSBQdXJlUGF0aCBzaG91bGQgcmV0dXJuIHRoaXMgb2JqZWN0LgogICAgSG93ZXZlciwgeW91IGNhbiBhbHNvIGluc3RhbnRpYXRlIGl0IGRpcmVjdGx5IG9uIGFueSBzeXN0ZW0uCiAgICAiIiIKICAgIF9mbGF2b3VyID0gX3Bvc2l4X2ZsYXZvdXIKICAgIF9fc2xvdHNfXyA9ICgpCgoKY2xhc3MgUHVyZVdpbmRvd3NQYXRoKFB1cmVQYXRoKToKICAgICIiIlB1cmVQYXRoIHN1YmNsYXNzIGZvciBXaW5kb3dzIHN5c3RlbXMuCgogICAgT24gYSBXaW5kb3dzIHN5c3RlbSwgaW5zdGFudGlhdGluZyBhIFB1cmVQYXRoIHNob3VsZCByZXR1cm4gdGhpcyBvYmplY3QuCiAgICBIb3dldmVyLCB5b3UgY2FuIGFsc28gaW5zdGFudGlhdGUgaXQgZGlyZWN0bHkgb24gYW55IHN5c3RlbS4KICAgICIiIgogICAgX2ZsYXZvdXIgPSBfd2luZG93c19mbGF2b3VyCiAgICBfX3Nsb3RzX18gPSAoKQoKCiMgRmlsZXN5c3RlbS1hY2Nlc3NpbmcgY2xhc3NlcwoKCmNsYXNzIFBhdGgoUHVyZVBhdGgpOgogICAgIiIiUHVyZVBhdGggc3ViY2xhc3MgdGhhdCBjYW4gbWFrZSBzeXN0ZW0gY2FsbHMuCgogICAgUGF0aCByZXByZXNlbnRzIGEgZmlsZXN5c3RlbSBwYXRoIGJ1dCB1bmxpa2UgUHVyZVBhdGgsIGFsc28gb2ZmZXJzCiAgICBtZXRob2RzIHRvIGRvIHN5c3RlbSBjYWxscyBvbiBwYXRoIG9iamVjdHMuIERlcGVuZGluZyBvbiB5b3VyIHN5c3RlbSwKICAgIGluc3RhbnRpYXRpbmcgYSBQYXRoIHdpbGwgcmV0dXJuIGVpdGhlciBhIFBvc2l4UGF0aCBvciBhIFdpbmRvd3NQYXRoCiAgICBvYmplY3QuIFlvdSBjYW4gYWxzbyBpbnN0YW50aWF0ZSBhIFBvc2l4UGF0aCBvciBXaW5kb3dzUGF0aCBkaXJlY3RseSwKICAgIGJ1dCBjYW5ub3QgaW5zdGFudGlhdGUgYSBXaW5kb3dzUGF0aCBvbiBhIFBPU0lYIHN5c3RlbSBvciB2aWNlIHZlcnNhLgogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBjbHMgaXMgUGF0aDoKICAgICAgICAgICAgY2xzID0gV2luZG93c1BhdGggaWYgb3MubmFtZSA9PSAnbnQnIGVsc2UgUG9zaXhQYXRoCiAgICAgICAgc2VsZiA9IGNscy5fZnJvbV9wYXJ0cyhhcmdzKQogICAgICAgIGlmIG5vdCBzZWxmLl9mbGF2b3VyLmlzX3N1cHBvcnRlZDoKICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY2Fubm90IGluc3RhbnRpYXRlICVyIG9uIHlvdXIgc3lzdGVtIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNscy5fX25hbWVfXywpKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9tYWtlX2NoaWxkX3JlbHBhdGgoc2VsZiwgcGFydCk6CiAgICAgICAgIyBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB1c2VkIGZvciBkaXIgd2Fsa2luZy4gIGBwYXJ0YCBtdXN0IGJlCiAgICAgICAgIyBhIHNpbmdsZSBwYXJ0IHJlbGF0aXZlIHRvIHRoaXMgcGF0aC4KICAgICAgICBwYXJ0cyA9IHNlbGYuX3BhcnRzICsgW3BhcnRdCiAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFyc2VkX3BhcnRzKHNlbGYuX2Rydiwgc2VsZi5fcm9vdCwgcGFydHMpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAjIEluIHByZXZpb3VzIHZlcnNpb25zIG9mIHBhdGhsaWIsIF9fZXhpdF9fKCkgbWFya2VkIHRoaXMgcGF0aCBhcwogICAgICAgICMgY2xvc2VkOyBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIHBlcmZvcm0gSS9PIHdvdWxkIHJhaXNlIGFuIElPRXJyb3IuCiAgICAgICAgIyBUaGlzIGZ1bmN0aW9uYWxpdHkgd2FzIG5ldmVyIGRvY3VtZW50ZWQsIGFuZCBoYWQgdGhlIGVmZmVjdCBvZgogICAgICAgICMgbWFraW5nIFBhdGggb2JqZWN0cyBtdXRhYmxlLCBjb250cmFyeSB0byBQRVAgNDI4LgogICAgICAgICMgSW4gUHl0aG9uIDMuOSBfX2V4aXRfXygpIHdhcyBtYWRlIGEgbm8tb3AuCiAgICAgICAgIyBJbiBQeXRob24gMy4xMSBfX2VudGVyX18oKSBiZWdhbiBlbWl0dGluZyBEZXByZWNhdGlvbldhcm5pbmcuCiAgICAgICAgIyBJbiBQeXRob24gMy4xMyBfX2VudGVyX18oKSBhbmQgX19leGl0X18oKSBzaG91bGQgYmUgcmVtb3ZlZC4KICAgICAgICB3YXJuaW5ncy53YXJuKCJwYXRobGliLlBhdGguX19lbnRlcl9fKCkgaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkICIKICAgICAgICAgICAgICAgICAgICAgICJmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMzsgUGF0aCBvYmplY3RzIGFzIGEgY29udGV4dCAiCiAgICAgICAgICAgICAgICAgICAgICAibWFuYWdlciBpcyBhIG5vLW9wIiwKICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIHQsIHYsIHRiKToKICAgICAgICBwYXNzCgogICAgIyBQdWJsaWMgQVBJCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgY3dkKGNscyk6CiAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHBhdGggcG9pbnRpbmcgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgICAgICAoYXMgcmV0dXJuZWQgYnkgb3MuZ2V0Y3dkKCkpLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBjbHMob3MuZ2V0Y3dkKCkpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgaG9tZShjbHMpOgogICAgICAgICIiIlJldHVybiBhIG5ldyBwYXRoIHBvaW50aW5nIHRvIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgKGFzCiAgICAgICAgcmV0dXJuZWQgYnkgb3MucGF0aC5leHBhbmR1c2VyKCd+JykpLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBjbHMoIn4iKS5leHBhbmR1c2VyKCkKCiAgICBkZWYgc2FtZWZpbGUoc2VsZiwgb3RoZXJfcGF0aCk6CiAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgb3RoZXJfcGF0aCBpcyB0aGUgc2FtZSBvciBub3QgYXMgdGhpcyBmaWxlCiAgICAgICAgKGFzIHJldHVybmVkIGJ5IG9zLnBhdGguc2FtZWZpbGUoKSkuCiAgICAgICAgIiIiCiAgICAgICAgc3QgPSBzZWxmLnN0YXQoKQogICAgICAgIHRyeToKICAgICAgICAgICAgb3RoZXJfc3QgPSBvdGhlcl9wYXRoLnN0YXQoKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgb3RoZXJfc3QgPSBzZWxmLl9fY2xhc3NfXyhvdGhlcl9wYXRoKS5zdGF0KCkKICAgICAgICByZXR1cm4gb3MucGF0aC5zYW1lc3RhdChzdCwgb3RoZXJfc3QpCgogICAgZGVmIGl0ZXJkaXIoc2VsZik6CiAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIHRoZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4gIERvZXMgbm90IHlpZWxkIGFueQogICAgICAgIHJlc3VsdCBmb3IgdGhlIHNwZWNpYWwgcGF0aHMgJy4nIGFuZCAnLi4nLgogICAgICAgICIiIgogICAgICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoc2VsZik6CiAgICAgICAgICAgIHlpZWxkIHNlbGYuX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQoKICAgIGRlZiBfc2NhbmRpcihzZWxmKToKICAgICAgICAjIGJwby0yNDEzMjogYSBmdXR1cmUgdmVyc2lvbiBvZiBwYXRobGliIHdpbGwgc3VwcG9ydCBzdWJjbGFzc2luZyBvZgogICAgICAgICMgcGF0aGxpYi5QYXRoIHRvIGN1c3RvbWl6ZSBob3cgdGhlIGZpbGVzeXN0ZW0gaXMgYWNjZXNzZWQuIFRoaXMKICAgICAgICAjIGluY2x1ZGVzIHNjYW5kaXIoKSwgd2hpY2ggaXMgdXNlZCB0byBpbXBsZW1lbnQgZ2xvYigpLgogICAgICAgIHJldHVybiBvcy5zY2FuZGlyKHNlbGYpCgogICAgZGVmIGdsb2Ioc2VsZiwgcGF0dGVybik6CiAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIHRoaXMgc3VidHJlZSBhbmQgeWllbGQgYWxsIGV4aXN0aW5nIGZpbGVzIChvZiBhbnkKICAgICAgICBraW5kLCBpbmNsdWRpbmcgZGlyZWN0b3JpZXMpIG1hdGNoaW5nIHRoZSBnaXZlbiByZWxhdGl2ZSBwYXR0ZXJuLgogICAgICAgICIiIgogICAgICAgIHN5cy5hdWRpdCgicGF0aGxpYi5QYXRoLmdsb2IiLCBzZWxmLCBwYXR0ZXJuKQogICAgICAgIGlmIG5vdCBwYXR0ZXJuOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmFjY2VwdGFibGUgcGF0dGVybjogeyFyfSIuZm9ybWF0KHBhdHRlcm4pKQogICAgICAgIGRydiwgcm9vdCwgcGF0dGVybl9wYXJ0cyA9IHNlbGYuX2ZsYXZvdXIucGFyc2VfcGFydHMoKHBhdHRlcm4sKSkKICAgICAgICBpZiBkcnYgb3Igcm9vdDoKICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiTm9uLXJlbGF0aXZlIHBhdHRlcm5zIGFyZSB1bnN1cHBvcnRlZCIpCiAgICAgICAgaWYgcGF0dGVyblstMV0gaW4gKHNlbGYuX2ZsYXZvdXIuc2VwLCBzZWxmLl9mbGF2b3VyLmFsdHNlcCk6CiAgICAgICAgICAgIHBhdHRlcm5fcGFydHMuYXBwZW5kKCcnKQogICAgICAgIHNlbGVjdG9yID0gX21ha2Vfc2VsZWN0b3IodHVwbGUocGF0dGVybl9wYXJ0cyksIHNlbGYuX2ZsYXZvdXIpCiAgICAgICAgZm9yIHAgaW4gc2VsZWN0b3Iuc2VsZWN0X2Zyb20oc2VsZik6CiAgICAgICAgICAgIHlpZWxkIHAKCiAgICBkZWYgcmdsb2Ioc2VsZiwgcGF0dGVybik6CiAgICAgICAgIiIiUmVjdXJzaXZlbHkgeWllbGQgYWxsIGV4aXN0aW5nIGZpbGVzIChvZiBhbnkga2luZCwgaW5jbHVkaW5nCiAgICAgICAgZGlyZWN0b3JpZXMpIG1hdGNoaW5nIHRoZSBnaXZlbiByZWxhdGl2ZSBwYXR0ZXJuLCBhbnl3aGVyZSBpbgogICAgICAgIHRoaXMgc3VidHJlZS4KICAgICAgICAiIiIKICAgICAgICBzeXMuYXVkaXQoInBhdGhsaWIuUGF0aC5yZ2xvYiIsIHNlbGYsIHBhdHRlcm4pCiAgICAgICAgZHJ2LCByb290LCBwYXR0ZXJuX3BhcnRzID0gc2VsZi5fZmxhdm91ci5wYXJzZV9wYXJ0cygocGF0dGVybiwpKQogICAgICAgIGlmIGRydiBvciByb290OgogICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJOb24tcmVsYXRpdmUgcGF0dGVybnMgYXJlIHVuc3VwcG9ydGVkIikKICAgICAgICBpZiBwYXR0ZXJuIGFuZCBwYXR0ZXJuWy0xXSBpbiAoc2VsZi5fZmxhdm91ci5zZXAsIHNlbGYuX2ZsYXZvdXIuYWx0c2VwKToKICAgICAgICAgICAgcGF0dGVybl9wYXJ0cy5hcHBlbmQoJycpCiAgICAgICAgc2VsZWN0b3IgPSBfbWFrZV9zZWxlY3RvcigoIioqIiwpICsgdHVwbGUocGF0dGVybl9wYXJ0cyksIHNlbGYuX2ZsYXZvdXIpCiAgICAgICAgZm9yIHAgaW4gc2VsZWN0b3Iuc2VsZWN0X2Zyb20oc2VsZik6CiAgICAgICAgICAgIHlpZWxkIHAKCiAgICBkZWYgYWJzb2x1dGUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGFuIGFic29sdXRlIHZlcnNpb24gb2YgdGhpcyBwYXRoIGJ5IHByZXBlbmRpbmcgdGhlIGN1cnJlbnQKICAgICAgICB3b3JraW5nIGRpcmVjdG9yeS4gTm8gbm9ybWFsaXphdGlvbiBvciBzeW1saW5rIHJlc29sdXRpb24gaXMgcGVyZm9ybWVkLgoKICAgICAgICBVc2UgcmVzb2x2ZSgpIHRvIGdldCB0aGUgY2Fub25pY2FsIHBhdGggdG8gYSBmaWxlLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuaXNfYWJzb2x1dGUoKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICByZXR1cm4gc2VsZi5fZnJvbV9wYXJ0cyhbc2VsZi5jd2QoKV0gKyBzZWxmLl9wYXJ0cykKCiAgICBkZWYgcmVzb2x2ZShzZWxmLCBzdHJpY3Q9RmFsc2UpOgogICAgICAgICIiIgogICAgICAgIE1ha2UgdGhlIHBhdGggYWJzb2x1dGUsIHJlc29sdmluZyBhbGwgc3ltbGlua3Mgb24gdGhlIHdheSBhbmQgYWxzbwogICAgICAgIG5vcm1hbGl6aW5nIGl0LgogICAgICAgICIiIgoKICAgICAgICBkZWYgY2hlY2tfZWxvb3AoZSk6CiAgICAgICAgICAgIHdpbmVycm9yID0gZ2V0YXR0cihlLCAnd2luZXJyb3InLCAwKQogICAgICAgICAgICBpZiBlLmVycm5vID09IEVMT09QIG9yIHdpbmVycm9yID09IF9XSU5FUlJPUl9DQU5UX1JFU09MVkVfRklMRU5BTUU6CiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlN5bWxpbmsgbG9vcCBmcm9tICVyIiAlIGUuZmlsZW5hbWUpCgogICAgICAgIHRyeToKICAgICAgICAgICAgcyA9IG9zLnBhdGgucmVhbHBhdGgoc2VsZiwgc3RyaWN0PXN0cmljdCkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBjaGVja19lbG9vcChlKQogICAgICAgICAgICByYWlzZQogICAgICAgIHAgPSBzZWxmLl9mcm9tX3BhcnRzKChzLCkpCgogICAgICAgICMgSW4gbm9uLXN0cmljdCBtb2RlLCByZWFscGF0aCgpIGRvZXNuJ3QgcmFpc2Ugb24gc3ltbGluayBsb29wcy4KICAgICAgICAjIEVuc3VyZSB3ZSBnZXQgYW4gZXhjZXB0aW9uIGJ5IGNhbGxpbmcgc3RhdCgpCiAgICAgICAgaWYgbm90IHN0cmljdDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcC5zdGF0KCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGNoZWNrX2Vsb29wKGUpCiAgICAgICAgcmV0dXJuIHAKCiAgICBkZWYgc3RhdChzZWxmLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIHN0YXQoKSBzeXN0ZW0gY2FsbCBvbiB0aGlzIHBhdGgsIGxpa2UKICAgICAgICBvcy5zdGF0KCkgZG9lcy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gb3Muc3RhdChzZWxmLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQoKICAgIGRlZiBvd25lcihzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIGxvZ2luIG5hbWUgb2YgdGhlIGZpbGUgb3duZXIuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgcHdkCiAgICAgICAgICAgIHJldHVybiBwd2QuZ2V0cHd1aWQoc2VsZi5zdGF0KCkuc3RfdWlkKS5wd19uYW1lCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJQYXRoLm93bmVyKCkgaXMgdW5zdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0iKQoKICAgIGRlZiBncm91cChzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIGdyb3VwIG5hbWUgb2YgdGhlIGZpbGUgZ2lkLgogICAgICAgICIiIgoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltcG9ydCBncnAKICAgICAgICAgICAgcmV0dXJuIGdycC5nZXRncmdpZChzZWxmLnN0YXQoKS5zdF9naWQpLmdyX25hbWUKICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIlBhdGguZ3JvdXAoKSBpcyB1bnN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSIpCgogICAgZGVmIG9wZW4oc2VsZiwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgogICAgICAgICIiIgogICAgICAgIE9wZW4gdGhlIGZpbGUgcG9pbnRlZCBieSB0aGlzIHBhdGggYW5kIHJldHVybiBhIGZpbGUgb2JqZWN0LCBhcwogICAgICAgIHRoZSBidWlsdC1pbiBvcGVuKCkgZnVuY3Rpb24gZG9lcy4KICAgICAgICAiIiIKICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6CiAgICAgICAgICAgIGVuY29kaW5nID0gaW8udGV4dF9lbmNvZGluZyhlbmNvZGluZykKICAgICAgICByZXR1cm4gaW8ub3BlbihzZWxmLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCgogICAgZGVmIHJlYWRfYnl0ZXMoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgT3BlbiB0aGUgZmlsZSBpbiBieXRlcyBtb2RlLCByZWFkIGl0LCBhbmQgY2xvc2UgdGhlIGZpbGUuCiAgICAgICAgIiIiCiAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0ncmInKSBhcyBmOgogICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKCiAgICBkZWYgcmVhZF90ZXh0KHNlbGYsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKICAgICAgICAiIiIKICAgICAgICBPcGVuIHRoZSBmaWxlIGluIHRleHQgbW9kZSwgcmVhZCBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgogICAgICAgICIiIgogICAgICAgIGVuY29kaW5nID0gaW8udGV4dF9lbmNvZGluZyhlbmNvZGluZykKICAgICAgICB3aXRoIHNlbGYub3Blbihtb2RlPSdyJywgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpIGFzIGY6CiAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQoKICAgIGRlZiB3cml0ZV9ieXRlcyhzZWxmLCBkYXRhKToKICAgICAgICAiIiIKICAgICAgICBPcGVuIHRoZSBmaWxlIGluIGJ5dGVzIG1vZGUsIHdyaXRlIHRvIGl0LCBhbmQgY2xvc2UgdGhlIGZpbGUuCiAgICAgICAgIiIiCiAgICAgICAgIyB0eXBlLWNoZWNrIGZvciB0aGUgYnVmZmVyIGludGVyZmFjZSBiZWZvcmUgdHJ1bmNhdGluZyB0aGUgZmlsZQogICAgICAgIHZpZXcgPSBtZW1vcnl2aWV3KGRhdGEpCiAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0nd2InKSBhcyBmOgogICAgICAgICAgICByZXR1cm4gZi53cml0ZSh2aWV3KQoKICAgIGRlZiB3cml0ZV90ZXh0KHNlbGYsIGRhdGEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgogICAgICAgICIiIgogICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlLCB3cml0ZSB0byBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIHN0ciwgbm90ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICBlbmNvZGluZyA9IGlvLnRleHRfZW5jb2RpbmcoZW5jb2RpbmcpCiAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0ndycsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzLCBuZXdsaW5lPW5ld2xpbmUpIGFzIGY6CiAgICAgICAgICAgIHJldHVybiBmLndyaXRlKGRhdGEpCgogICAgZGVmIHJlYWRsaW5rKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0aGUgcGF0aCB0byB3aGljaCB0aGUgc3ltYm9saWMgbGluayBwb2ludHMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGhhc2F0dHIob3MsICJyZWFkbGluayIpOgogICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJvcy5yZWFkbGluaygpIG5vdCBhdmFpbGFibGUgb24gdGhpcyBzeXN0ZW0iKQogICAgICAgIHJldHVybiBzZWxmLl9mcm9tX3BhcnRzKChvcy5yZWFkbGluayhzZWxmKSwpKQoKICAgIGRlZiB0b3VjaChzZWxmLCBtb2RlPTBvNjY2LCBleGlzdF9vaz1UcnVlKToKICAgICAgICAiIiIKICAgICAgICBDcmVhdGUgdGhpcyBmaWxlIHdpdGggdGhlIGdpdmVuIGFjY2VzcyBtb2RlLCBpZiBpdCBkb2Vzbid0IGV4aXN0LgogICAgICAgICIiIgoKICAgICAgICBpZiBleGlzdF9vazoKICAgICAgICAgICAgIyBGaXJzdCB0cnkgdG8gYnVtcCBtb2RpZmljYXRpb24gdGltZQogICAgICAgICAgICAjIEltcGxlbWVudGF0aW9uIG5vdGU6IEdOVSB0b3VjaCB1c2VzIHRoZSBVVElNRV9OT1cgb3B0aW9uIG9mCiAgICAgICAgICAgICMgdGhlIHV0aW1lbnNhdCgpIC8gZnV0aW1lbnMoKSBmdW5jdGlvbnMuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG9zLnV0aW1lKHNlbGYsIE5vbmUpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIyBBdm9pZCBleGNlcHRpb24gY2hhaW5pbmcKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIGZsYWdzID0gb3MuT19DUkVBVCB8IG9zLk9fV1JPTkxZCiAgICAgICAgaWYgbm90IGV4aXN0X29rOgogICAgICAgICAgICBmbGFncyB8PSBvcy5PX0VYQ0wKICAgICAgICBmZCA9IG9zLm9wZW4oc2VsZiwgZmxhZ3MsIG1vZGUpCiAgICAgICAgb3MuY2xvc2UoZmQpCgogICAgZGVmIG1rZGlyKHNlbGYsIG1vZGU9MG83NzcsIHBhcmVudHM9RmFsc2UsIGV4aXN0X29rPUZhbHNlKToKICAgICAgICAiIiIKICAgICAgICBDcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGF0IHRoaXMgZ2l2ZW4gcGF0aC4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYsIG1vZGUpCiAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICBpZiBub3QgcGFyZW50cyBvciBzZWxmLnBhcmVudCA9PSBzZWxmOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgc2VsZi5wYXJlbnQubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQogICAgICAgICAgICBzZWxmLm1rZGlyKG1vZGUsIHBhcmVudHM9RmFsc2UsIGV4aXN0X29rPWV4aXN0X29rKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAjIENhbm5vdCByZWx5IG9uIGNoZWNraW5nIGZvciBFRVhJU1QsIHNpbmNlIHRoZSBvcGVyYXRpbmcgc3lzdGVtCiAgICAgICAgICAgICMgY291bGQgZ2l2ZSBwcmlvcml0eSB0byBvdGhlciBlcnJvcnMgbGlrZSBFQUNDRVMgb3IgRVJPRlMKICAgICAgICAgICAgaWYgbm90IGV4aXN0X29rIG9yIG5vdCBzZWxmLmlzX2RpcigpOgogICAgICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgY2htb2Qoc2VsZiwgbW9kZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgogICAgICAgICIiIgogICAgICAgIENoYW5nZSB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIHBhdGgsIGxpa2Ugb3MuY2htb2QoKS4KICAgICAgICAiIiIKICAgICAgICBvcy5jaG1vZChzZWxmLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQoKICAgIGRlZiBsY2htb2Qoc2VsZiwgbW9kZSk6CiAgICAgICAgIiIiCiAgICAgICAgTGlrZSBjaG1vZCgpLCBleGNlcHQgaWYgdGhlIHBhdGggcG9pbnRzIHRvIGEgc3ltbGluaywgdGhlIHN5bWxpbmsncwogICAgICAgIHBlcm1pc3Npb25zIGFyZSBjaGFuZ2VkLCByYXRoZXIgdGhhbiBpdHMgdGFyZ2V0J3MuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5jaG1vZChtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCgogICAgZGVmIHVubGluayhzZWxmLCBtaXNzaW5nX29rPUZhbHNlKToKICAgICAgICAiIiIKICAgICAgICBSZW1vdmUgdGhpcyBmaWxlIG9yIGxpbmsuCiAgICAgICAgSWYgdGhlIHBhdGggaXMgYSBkaXJlY3RvcnksIHVzZSBybWRpcigpIGluc3RlYWQuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvcy51bmxpbmsoc2VsZikKICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgIGlmIG5vdCBtaXNzaW5nX29rOgogICAgICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgcm1kaXIoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmVtb3ZlIHRoaXMgZGlyZWN0b3J5LiAgVGhlIGRpcmVjdG9yeSBtdXN0IGJlIGVtcHR5LgogICAgICAgICIiIgogICAgICAgIG9zLnJtZGlyKHNlbGYpCgogICAgZGVmIGxzdGF0KHNlbGYpOgogICAgICAgICIiIgogICAgICAgIExpa2Ugc3RhdCgpLCBleGNlcHQgaWYgdGhlIHBhdGggcG9pbnRzIHRvIGEgc3ltbGluaywgdGhlIHN5bWxpbmsncwogICAgICAgIHN0YXR1cyBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZCwgcmF0aGVyIHRoYW4gaXRzIHRhcmdldCdzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQoKICAgIGRlZiByZW5hbWUoc2VsZiwgdGFyZ2V0KToKICAgICAgICAiIiIKICAgICAgICBSZW5hbWUgdGhpcyBwYXRoIHRvIHRoZSB0YXJnZXQgcGF0aC4KCiAgICAgICAgVGhlIHRhcmdldCBwYXRoIG1heSBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZS4gUmVsYXRpdmUgcGF0aHMgYXJlCiAgICAgICAgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksICpub3QqIHRoZQogICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgUGF0aCBvYmplY3QuCgogICAgICAgIFJldHVybnMgdGhlIG5ldyBQYXRoIGluc3RhbmNlIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQgcGF0aC4KICAgICAgICAiIiIKICAgICAgICBvcy5yZW5hbWUoc2VsZiwgdGFyZ2V0KQogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyh0YXJnZXQpCgogICAgZGVmIHJlcGxhY2Uoc2VsZiwgdGFyZ2V0KToKICAgICAgICAiIiIKICAgICAgICBSZW5hbWUgdGhpcyBwYXRoIHRvIHRoZSB0YXJnZXQgcGF0aCwgb3ZlcndyaXRpbmcgaWYgdGhhdCBwYXRoIGV4aXN0cy4KCiAgICAgICAgVGhlIHRhcmdldCBwYXRoIG1heSBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZS4gUmVsYXRpdmUgcGF0aHMgYXJlCiAgICAgICAgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksICpub3QqIHRoZQogICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgUGF0aCBvYmplY3QuCgogICAgICAgIFJldHVybnMgdGhlIG5ldyBQYXRoIGluc3RhbmNlIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQgcGF0aC4KICAgICAgICAiIiIKICAgICAgICBvcy5yZXBsYWNlKHNlbGYsIHRhcmdldCkKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18odGFyZ2V0KQoKICAgIGRlZiBzeW1saW5rX3RvKHNlbGYsIHRhcmdldCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSk6CiAgICAgICAgIiIiCiAgICAgICAgTWFrZSB0aGlzIHBhdGggYSBzeW1saW5rIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQgcGF0aC4KICAgICAgICBOb3RlIHRoZSBvcmRlciBvZiBhcmd1bWVudHMgKGxpbmssIHRhcmdldCkgaXMgdGhlIHJldmVyc2Ugb2Ygb3Muc3ltbGluay4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgInN5bWxpbmsiKToKICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigib3Muc3ltbGluaygpIG5vdCBhdmFpbGFibGUgb24gdGhpcyBzeXN0ZW0iKQogICAgICAgIG9zLnN5bWxpbmsodGFyZ2V0LCBzZWxmLCB0YXJnZXRfaXNfZGlyZWN0b3J5KQoKICAgIGRlZiBoYXJkbGlua190byhzZWxmLCB0YXJnZXQpOgogICAgICAgICIiIgogICAgICAgIE1ha2UgdGhpcyBwYXRoIGEgaGFyZCBsaW5rIHBvaW50aW5nIHRvIHRoZSBzYW1lIGZpbGUgYXMgKnRhcmdldCouCgogICAgICAgIE5vdGUgdGhlIG9yZGVyIG9mIGFyZ3VtZW50cyAoc2VsZiwgdGFyZ2V0KSBpcyB0aGUgcmV2ZXJzZSBvZiBvcy5saW5rJ3MuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGhhc2F0dHIob3MsICJsaW5rIik6CiAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIm9zLmxpbmsoKSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgc3lzdGVtIikKICAgICAgICBvcy5saW5rKHRhcmdldCwgc2VsZikKCiAgICBkZWYgbGlua190byhzZWxmLCB0YXJnZXQpOgogICAgICAgICIiIgogICAgICAgIE1ha2UgdGhlIHRhcmdldCBwYXRoIGEgaGFyZCBsaW5rIHBvaW50aW5nIHRvIHRoaXMgcGF0aC4KCiAgICAgICAgTm90ZSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IG1ha2UgdGhpcyBwYXRoIGEgaGFyZCBsaW5rIHRvICp0YXJnZXQqLAogICAgICAgIGRlc3BpdGUgdGhlIGltcGxpY2F0aW9uIG9mIHRoZSBmdW5jdGlvbiBhbmQgYXJndW1lbnQgbmFtZXMuIFRoZSBvcmRlcgogICAgICAgIG9mIGFyZ3VtZW50cyAodGFyZ2V0LCBsaW5rKSBpcyB0aGUgcmV2ZXJzZSBvZiBQYXRoLnN5bWxpbmtfdG8sIGJ1dAogICAgICAgIG1hdGNoZXMgdGhhdCBvZiBvcy5saW5rLgoKICAgICAgICBEZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAzLjEwIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTIuCiAgICAgICAgVXNlIGBoYXJkbGlua190bygpYCBpbnN0ZWFkLgogICAgICAgICIiIgogICAgICAgIHdhcm5pbmdzLndhcm4oInBhdGhsaWIuUGF0aC5saW5rX3RvKCkgaXMgZGVwcmVjYXRlZCBhbmQgaXMgc2NoZWR1bGVkICIKICAgICAgICAgICAgICAgICAgICAgICJmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMi4gIgogICAgICAgICAgICAgICAgICAgICAgIlVzZSBwYXRobGliLlBhdGguaGFyZGxpbmtfdG8oKSBpbnN0ZWFkLiIsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICBzZWxmLl9fY2xhc3NfXyh0YXJnZXQpLmhhcmRsaW5rX3RvKHNlbGYpCgogICAgIyBDb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIHF1ZXJ5aW5nIHRoZSBzdGF0IHJlc3VsdHMKCiAgICBkZWYgZXhpc3RzKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFdoZXRoZXIgdGhpcyBwYXRoIGV4aXN0cy4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuc3RhdCgpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIyBOb24tZW5jb2RhYmxlIHBhdGgKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgaXNfZGlyKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFdoZXRoZXIgdGhpcyBwYXRoIGlzIGEgZGlyZWN0b3J5LgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIFNfSVNESVIoc2VsZi5zdGF0KCkuc3RfbW9kZSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBub3QgX2lnbm9yZV9lcnJvcihlKToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICMgUGF0aCBkb2Vzbid0IGV4aXN0IG9yIGlzIGEgYnJva2VuIHN5bWxpbmsKICAgICAgICAgICAgIyAoc2VlIGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjAwNjIzMDYxNzI2L2h0dHBzOi8vYml0YnVja2V0Lm9yZy9waXRyb3UvcGF0aGxpYi9pc3N1ZXMvMTIvICkKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICMgTm9uLWVuY29kYWJsZSBwYXRoCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBpc19maWxlKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFdoZXRoZXIgdGhpcyBwYXRoIGlzIGEgcmVndWxhciBmaWxlIChhbHNvIFRydWUgZm9yIHN5bWxpbmtzIHBvaW50aW5nCiAgICAgICAgdG8gcmVndWxhciBmaWxlcykuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gU19JU1JFRyhzZWxmLnN0YXQoKS5zdF9tb2RlKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIGlmIG5vdCBfaWdub3JlX2Vycm9yKGUpOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIyBQYXRoIGRvZXNuJ3QgZXhpc3Qgb3IgaXMgYSBicm9rZW4gc3ltbGluawogICAgICAgICAgICAjIChzZWUgaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAyMDA2MjMwNjE3MjYvaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BpdHJvdS9wYXRobGliL2lzc3Vlcy8xMi8gKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIyBOb24tZW5jb2RhYmxlIHBhdGgKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIGlzX21vdW50KHNlbGYpOgogICAgICAgICIiIgogICAgICAgIENoZWNrIGlmIHRoaXMgcGF0aCBpcyBhIFBPU0lYIG1vdW50IHBvaW50CiAgICAgICAgIiIiCiAgICAgICAgIyBOZWVkIHRvIGV4aXN0IGFuZCBiZSBhIGRpcgogICAgICAgIGlmIG5vdCBzZWxmLmV4aXN0cygpIG9yIG5vdCBzZWxmLmlzX2RpcigpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJlbnRfZGV2ID0gc2VsZi5wYXJlbnQuc3RhdCgpLnN0X2RldgogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgZGV2ID0gc2VsZi5zdGF0KCkuc3RfZGV2CiAgICAgICAgaWYgZGV2ICE9IHBhcmVudF9kZXY6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgaW5vID0gc2VsZi5zdGF0KCkuc3RfaW5vCiAgICAgICAgcGFyZW50X2lubyA9IHNlbGYucGFyZW50LnN0YXQoKS5zdF9pbm8KICAgICAgICByZXR1cm4gaW5vID09IHBhcmVudF9pbm8KCiAgICBkZWYgaXNfc3ltbGluayhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBXaGV0aGVyIHRoaXMgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmsuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gU19JU0xOSyhzZWxmLmxzdGF0KCkuc3RfbW9kZSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBub3QgX2lnbm9yZV9lcnJvcihlKToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICMgUGF0aCBkb2Vzbid0IGV4aXN0CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAjIE5vbi1lbmNvZGFibGUgcGF0aAogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgaXNfYmxvY2tfZGV2aWNlKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFdoZXRoZXIgdGhpcyBwYXRoIGlzIGEgYmxvY2sgZGV2aWNlLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIFNfSVNCTEsoc2VsZi5zdGF0KCkuc3RfbW9kZSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBub3QgX2lnbm9yZV9lcnJvcihlKToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICMgUGF0aCBkb2Vzbid0IGV4aXN0IG9yIGlzIGEgYnJva2VuIHN5bWxpbmsKICAgICAgICAgICAgIyAoc2VlIGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMjAwNjIzMDYxNzI2L2h0dHBzOi8vYml0YnVja2V0Lm9yZy9waXRyb3UvcGF0aGxpYi9pc3N1ZXMvMTIvICkKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICMgTm9uLWVuY29kYWJsZSBwYXRoCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBpc19jaGFyX2RldmljZShzZWxmKToKICAgICAgICAiIiIKICAgICAgICBXaGV0aGVyIHRoaXMgcGF0aCBpcyBhIGNoYXJhY3RlciBkZXZpY2UuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gU19JU0NIUihzZWxmLnN0YXQoKS5zdF9tb2RlKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIGlmIG5vdCBfaWdub3JlX2Vycm9yKGUpOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIyBQYXRoIGRvZXNuJ3QgZXhpc3Qgb3IgaXMgYSBicm9rZW4gc3ltbGluawogICAgICAgICAgICAjIChzZWUgaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAyMDA2MjMwNjE3MjYvaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BpdHJvdS9wYXRobGliL2lzc3Vlcy8xMi8gKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIyBOb24tZW5jb2RhYmxlIHBhdGgKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIGlzX2ZpZm8oc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgV2hldGhlciB0aGlzIHBhdGggaXMgYSBGSUZPLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIFNfSVNGSUZPKHNlbGYuc3RhdCgpLnN0X21vZGUpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAjIFBhdGggZG9lc24ndCBleGlzdCBvciBpcyBhIGJyb2tlbiBzeW1saW5rCiAgICAgICAgICAgICMgKHNlZSBodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDIwMDYyMzA2MTcyNi9odHRwczovL2JpdGJ1Y2tldC5vcmcvcGl0cm91L3BhdGhsaWIvaXNzdWVzLzEyLyApCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAjIE5vbi1lbmNvZGFibGUgcGF0aAogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgaXNfc29ja2V0KHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFdoZXRoZXIgdGhpcyBwYXRoIGlzIGEgc29ja2V0LgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIFNfSVNTT0NLKHNlbGYuc3RhdCgpLnN0X21vZGUpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgaWYgbm90IF9pZ25vcmVfZXJyb3IoZSk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAjIFBhdGggZG9lc24ndCBleGlzdCBvciBpcyBhIGJyb2tlbiBzeW1saW5rCiAgICAgICAgICAgICMgKHNlZSBodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDIwMDYyMzA2MTcyNi9odHRwczovL2JpdGJ1Y2tldC5vcmcvcGl0cm91L3BhdGhsaWIvaXNzdWVzLzEyLyApCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAjIE5vbi1lbmNvZGFibGUgcGF0aAogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgZXhwYW5kdXNlcihzZWxmKToKICAgICAgICAiIiIgUmV0dXJuIGEgbmV3IHBhdGggd2l0aCBleHBhbmRlZCB+IGFuZCB+dXNlciBjb25zdHJ1Y3RzCiAgICAgICAgKGFzIHJldHVybmVkIGJ5IG9zLnBhdGguZXhwYW5kdXNlcikKICAgICAgICAiIiIKICAgICAgICBpZiAobm90IChzZWxmLl9kcnYgb3Igc2VsZi5fcm9vdCkgYW5kCiAgICAgICAgICAgIHNlbGYuX3BhcnRzIGFuZCBzZWxmLl9wYXJ0c1swXVs6MV0gPT0gJ34nKToKICAgICAgICAgICAgaG9tZWRpciA9IG9zLnBhdGguZXhwYW5kdXNlcihzZWxmLl9wYXJ0c1swXSkKICAgICAgICAgICAgaWYgaG9tZWRpcls6MV0gPT0gIn4iOgogICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvbWUgZGlyZWN0b3J5LiIpCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9mcm9tX3BhcnRzKFtob21lZGlyXSArIHNlbGYuX3BhcnRzWzE6XSkKCiAgICAgICAgcmV0dXJuIHNlbGYKCgpjbGFzcyBQb3NpeFBhdGgoUGF0aCwgUHVyZVBvc2l4UGF0aCk6CiAgICAiIiJQYXRoIHN1YmNsYXNzIGZvciBub24tV2luZG93cyBzeXN0ZW1zLgoKICAgIE9uIGEgUE9TSVggc3lzdGVtLCBpbnN0YW50aWF0aW5nIGEgUGF0aCBzaG91bGQgcmV0dXJuIHRoaXMgb2JqZWN0LgogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAoKQoKY2xhc3MgV2luZG93c1BhdGgoUGF0aCwgUHVyZVdpbmRvd3NQYXRoKToKICAgICIiIlBhdGggc3ViY2xhc3MgZm9yIFdpbmRvd3Mgc3lzdGVtcy4KCiAgICBPbiBhIFdpbmRvd3Mgc3lzdGVtLCBpbnN0YW50aWF0aW5nIGEgUGF0aCBzaG91bGQgcmV0dXJuIHRoaXMgb2JqZWN0LgogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBpc19tb3VudChzZWxmKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJQYXRoLmlzX21vdW50KCkgaXMgdW5zdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0iKQpQSwMEFAAAAAAAAiCjVq3E2c6e+QAAnvkAAAYAAABwZGIucHkjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKIiIiClRoZSBQeXRob24gRGVidWdnZXIgUGRiCj09PT09PT09PT09PT09PT09PT09PT09CgpUbyB1c2UgdGhlIGRlYnVnZ2VyIGluIGl0cyBzaW1wbGVzdCBmb3JtOgoKICAgICAgICA+Pj4gaW1wb3J0IHBkYgogICAgICAgID4+PiBwZGIucnVuKCc8YSBzdGF0ZW1lbnQ+JykKClRoZSBkZWJ1Z2dlcidzIHByb21wdCBpcyAnKFBkYikgJy4gIFRoaXMgd2lsbCBzdG9wIGluIHRoZSBmaXJzdApmdW5jdGlvbiBjYWxsIGluIDxhIHN0YXRlbWVudD4uCgpBbHRlcm5hdGl2ZWx5LCBpZiBhIHN0YXRlbWVudCB0ZXJtaW5hdGVkIHdpdGggYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiwKeW91IGNhbiB1c2UgcGRiJ3MgcG9zdC1tb3J0ZW0gZmFjaWxpdHkgdG8gaW5zcGVjdCB0aGUgY29udGVudHMgb2YgdGhlCnRyYWNlYmFjazoKCiAgICAgICAgPj4+IDxhIHN0YXRlbWVudD4KICAgICAgICA8ZXhjZXB0aW9uIHRyYWNlYmFjaz4KICAgICAgICA+Pj4gaW1wb3J0IHBkYgogICAgICAgID4+PiBwZGIucG0oKQoKVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgaW4gdGhlIG5leHQKc2VjdGlvbi4gIE1vc3QgY2FuIGJlIGFiYnJldmlhdGVkIGFzIGluZGljYXRlZDsgZS5nLiwgaChlbHApIG1lYW5zCnRoYXQgJ2hlbHAnIGNhbiBiZSB0eXBlZCBhcyAnaCcgb3IgJ2hlbHAnIChidXQgbm90IGFzICdoZScgb3IgJ2hlbCcsCm5vciBhcyAnSCcgb3IgJ0hlbHAnIG9yICdIRUxQJykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluCnNxdWFyZSBicmFja2V0cy4gIEFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZApieSBhIHZlcnRpY2FsIGJhciAofCkuCgpBIGJsYW5rIGxpbmUgcmVwZWF0cyB0aGUgcHJldmlvdXMgY29tbWFuZCBsaXRlcmFsbHksIGV4Y2VwdCBmb3IKJ2xpc3QnLCB3aGVyZSBpdCBsaXN0cyB0aGUgbmV4dCAxMSBsaW5lcy4KCkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlIFB5dGhvbgpzdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmcKZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uCnBvaW50ICgnIScpLiAgVGhpcyBpcyBhIHBvd2VyZnVsIHdheSB0byBpbnNwZWN0IHRoZSBwcm9ncmFtIGJlaW5nCmRlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSB2YXJpYWJsZXMgb3IgY2FsbCBmdW5jdGlvbnMuCldoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBzdWNoIGEgc3RhdGVtZW50LCB0aGUgZXhjZXB0aW9uIG5hbWUgaXMKcHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuCgpUaGUgZGVidWdnZXIgc3VwcG9ydHMgYWxpYXNlcywgd2hpY2ggY2FuIHNhdmUgdHlwaW5nLiAgQW5kIGFsaWFzZXMgY2FuCmhhdmUgcGFyYW1ldGVycyAoc2VlIHRoZSBhbGlhcyBoZWxwIGVudHJ5KSB3aGljaCBhbGxvd3Mgb25lIGEgY2VydGFpbgpsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXIgZXhhbWluYXRpb24uCgpNdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgdGhlCnBhaXIgJzs7Jy4gIE5vIGludGVsbGlnZW5jZSBpcyBhcHBsaWVkIHRvIHNlcGFyYXRpbmcgdGhlIGNvbW1hbmRzOyB0aGUKaW5wdXQgaXMgc3BsaXQgYXQgdGhlIGZpcnN0ICc7OycsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhCnF1b3RlZCBzdHJpbmcuCgpJZiBhIGZpbGUgIi5wZGJyYyIgZXhpc3RzIGluIHlvdXIgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gdGhlIGN1cnJlbnQKZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZCBhdCB0aGUKZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWYgYm90aApmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmQgYWxpYXNlcwpkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLiAgVGhpcyBiZWhhdmlvciBjYW4gYmUKZGlzYWJsZWQgYnkgcGFzc2luZyB0aGUgInJlYWRyYz1GYWxzZSIgYXJndW1lbnQgdG8gdGhlIFBkYiBjb25zdHJ1Y3Rvci4KCkFzaWRlIGZyb20gYWxpYXNlcywgdGhlIGRlYnVnZ2VyIGlzIG5vdCBkaXJlY3RseSBwcm9ncmFtbWFibGU7IGJ1dCBpdAppcyBpbXBsZW1lbnRlZCBhcyBhIGNsYXNzIGZyb20gd2hpY2ggeW91IGNhbiBkZXJpdmUgeW91ciBvd24gZGVidWdnZXIKY2xhc3MsIHdoaWNoIHlvdSBjYW4gbWFrZSBhcyBmYW5jeSBhcyB5b3UgbGlrZS4KCgpEZWJ1Z2dlciBjb21tYW5kcwo9PT09PT09PT09PT09PT09PQoKIiIiCiMgTk9URTogdGhlIGFjdHVhbCBjb21tYW5kIGRvY3VtZW50YXRpb24gaXMgY29sbGVjdGVkIGZyb20gZG9jc3RyaW5ncyBvZiB0aGUKIyBjb21tYW5kcyBhbmQgaXMgYXBwZW5kZWQgdG8gX19kb2NfXyBhZnRlciB0aGUgY2xhc3MgaGFzIGJlZW4gZGVmaW5lZC4KCmltcG9ydCBvcwppbXBvcnQgaW8KaW1wb3J0IHJlCmltcG9ydCBzeXMKaW1wb3J0IGNtZAppbXBvcnQgYmRiCmltcG9ydCBkaXMKaW1wb3J0IGNvZGUKaW1wb3J0IGdsb2IKaW1wb3J0IHBwcmludAppbXBvcnQgc2lnbmFsCmltcG9ydCBpbnNwZWN0CmltcG9ydCB0b2tlbml6ZQppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCB0cmFjZWJhY2sKaW1wb3J0IGxpbmVjYWNoZQoKZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCgoKY2xhc3MgUmVzdGFydChFeGNlcHRpb24pOgogICAgIiIiQ2F1c2VzIGEgZGVidWdnZXIgdG8gYmUgcmVzdGFydGVkIGZvciB0aGUgZGVidWdnZWQgcHl0aG9uIHByb2dyYW0uIiIiCiAgICBwYXNzCgpfX2FsbF9fID0gWyJydW4iLCAicG0iLCAiUGRiIiwgInJ1bmV2YWwiLCAicnVuY3R4IiwgInJ1bmNhbGwiLCAic2V0X3RyYWNlIiwKICAgICAgICAgICAicG9zdF9tb3J0ZW0iLCAiaGVscCJdCgpkZWYgZmluZF9mdW5jdGlvbihmdW5jbmFtZSwgZmlsZW5hbWUpOgogICAgY3JlID0gcmUuY29tcGlsZShyJ2RlZlxzKyVzXHMqWyhdJyAlIHJlLmVzY2FwZShmdW5jbmFtZSkpCiAgICB0cnk6CiAgICAgICAgZnAgPSB0b2tlbml6ZS5vcGVuKGZpbGVuYW1lKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgICMgY29uc3VtZXIgb2YgdGhpcyBpbmZvIGV4cGVjdHMgdGhlIGZpcnN0IGxpbmUgdG8gYmUgMQogICAgd2l0aCBmcDoKICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShmcCwgc3RhcnQ9MSk6CiAgICAgICAgICAgIGlmIGNyZS5tYXRjaChsaW5lKToKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jbmFtZSwgZmlsZW5hbWUsIGxpbmVubwogICAgcmV0dXJuIE5vbmUKCmRlZiBnZXRzb3VyY2VsaW5lcyhvYmopOgogICAgbGluZXMsIGxpbmVubyA9IGluc3BlY3QuZmluZHNvdXJjZShvYmopCiAgICBpZiBpbnNwZWN0LmlzZnJhbWUob2JqKSBhbmQgb2JqLmZfZ2xvYmFscyBpcyBvYmouZl9sb2NhbHM6CiAgICAgICAgIyBtdXN0IGJlIGEgbW9kdWxlIGZyYW1lOiBkbyBub3QgdHJ5IHRvIGN1dCBhIGJsb2NrIG91dCBvZiBpdAogICAgICAgIHJldHVybiBsaW5lcywgMQogICAgZWxpZiBpbnNwZWN0LmlzbW9kdWxlKG9iaik6CiAgICAgICAgcmV0dXJuIGxpbmVzLCAxCiAgICByZXR1cm4gaW5zcGVjdC5nZXRibG9jayhsaW5lc1tsaW5lbm86XSksIGxpbmVubysxCgpkZWYgbGFzdGkybGluZW5vKGNvZGUsIGxhc3RpKToKICAgIGxpbmVzdGFydHMgPSBsaXN0KGRpcy5maW5kbGluZXN0YXJ0cyhjb2RlKSkKICAgIGxpbmVzdGFydHMucmV2ZXJzZSgpCiAgICBmb3IgaSwgbGluZW5vIGluIGxpbmVzdGFydHM6CiAgICAgICAgaWYgbGFzdGkgPj0gaToKICAgICAgICAgICAgcmV0dXJuIGxpbmVubwogICAgcmV0dXJuIDAKCgpjbGFzcyBfcnN0cihzdHIpOgogICAgIiIiU3RyaW5nIHRoYXQgZG9lc24ndCBxdW90ZSBpdHMgcmVwci4iIiIKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKCmNsYXNzIF9TY3JpcHRUYXJnZXQoc3RyKToKICAgIGRlZiBfX25ld19fKGNscywgdmFsKToKICAgICAgICAjIE11dGF0ZSBzZWxmIHRvIGJlIHRoZSAicmVhbCBwYXRoIi4KICAgICAgICByZXMgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBvcy5wYXRoLnJlYWxwYXRoKHZhbCkpCgogICAgICAgICMgU3RvcmUgdGhlIG9yaWdpbmFsIHBhdGggZm9yIGVycm9yIHJlcG9ydGluZy4KICAgICAgICByZXMub3JpZyA9IHZhbAoKICAgICAgICByZXR1cm4gcmVzCgogICAgZGVmIGNoZWNrKHNlbGYpOgogICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmKToKICAgICAgICAgICAgcHJpbnQoJ0Vycm9yOicsIHNlbGYub3JpZywgJ2RvZXMgbm90IGV4aXN0JykKICAgICAgICAgICAgc3lzLmV4aXQoMSkKCiAgICAgICAgIyBSZXBsYWNlIHBkYidzIGRpciB3aXRoIHNjcmlwdCdzIGRpciBpbiBmcm9udCBvZiBtb2R1bGUgc2VhcmNoIHBhdGguCiAgICAgICAgc3lzLnBhdGhbMF0gPSBvcy5wYXRoLmRpcm5hbWUoc2VsZikKCiAgICBAcHJvcGVydHkKICAgIGRlZiBmaWxlbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5hbWVzcGFjZShzZWxmKToKICAgICAgICByZXR1cm4gZGljdCgKICAgICAgICAgICAgX19uYW1lX189J19fbWFpbl9fJywKICAgICAgICAgICAgX19maWxlX189c2VsZiwKICAgICAgICAgICAgX19idWlsdGluc19fPV9fYnVpbHRpbnNfXywKICAgICAgICApCgogICAgQHByb3BlcnR5CiAgICBkZWYgY29kZShzZWxmKToKICAgICAgICB3aXRoIGlvLm9wZW4oc2VsZikgYXMgZnA6CiAgICAgICAgICAgIHJldHVybiBmImV4ZWMoY29tcGlsZSh7ZnAucmVhZCgpIXJ9LCB7c2VsZiFyfSwgJ2V4ZWMnKSkiCgoKY2xhc3MgX01vZHVsZVRhcmdldChzdHIpOgogICAgZGVmIGNoZWNrKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fZGV0YWlscwogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQogICAgICAgICAgICBzeXMuZXhpdCgxKQoKICAgIEBmdW5jdG9vbHMuY2FjaGVkX3Byb3BlcnR5CiAgICBkZWYgX2RldGFpbHMoc2VsZik6CiAgICAgICAgaW1wb3J0IHJ1bnB5CiAgICAgICAgcmV0dXJuIHJ1bnB5Ll9nZXRfbW9kdWxlX2RldGFpbHMoc2VsZikKCiAgICBAcHJvcGVydHkKICAgIGRlZiBmaWxlbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5jb2RlLmNvX2ZpbGVuYW1lCgogICAgQHByb3BlcnR5CiAgICBkZWYgY29kZShzZWxmKToKICAgICAgICBuYW1lLCBzcGVjLCBjb2RlID0gc2VsZi5fZGV0YWlscwogICAgICAgIHJldHVybiBjb2RlCgogICAgQHByb3BlcnR5CiAgICBkZWYgX3NwZWMoc2VsZik6CiAgICAgICAgbmFtZSwgc3BlYywgY29kZSA9IHNlbGYuX2RldGFpbHMKICAgICAgICByZXR1cm4gc3BlYwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5hbWVzcGFjZShzZWxmKToKICAgICAgICByZXR1cm4gZGljdCgKICAgICAgICAgICAgX19uYW1lX189J19fbWFpbl9fJywKICAgICAgICAgICAgX19maWxlX189b3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLmFic3BhdGgoc2VsZi5maWxlbmFtZSkpLAogICAgICAgICAgICBfX3BhY2thZ2VfXz1zZWxmLl9zcGVjLnBhcmVudCwKICAgICAgICAgICAgX19sb2FkZXJfXz1zZWxmLl9zcGVjLmxvYWRlciwKICAgICAgICAgICAgX19zcGVjX189c2VsZi5fc3BlYywKICAgICAgICAgICAgX19idWlsdGluc19fPV9fYnVpbHRpbnNfXywKICAgICAgICApCgoKIyBJbnRlcmFjdGlvbiBwcm9tcHQgbGluZSB3aWxsIHNlcGFyYXRlIGZpbGUgYW5kIGNhbGwgaW5mbyBmcm9tIGNvZGUKIyB0ZXh0IHVzaW5nIHZhbHVlIG9mIGxpbmVfcHJlZml4IHN0cmluZy4gIEEgbmV3bGluZSBhbmQgYXJyb3cgbWF5CiMgYmUgdG8geW91ciBsaWtpbmcuICBZb3UgY2FuIHNldCBpdCBvbmNlIHBkYiBpcyBpbXBvcnRlZCB1c2luZyB0aGUKIyBjb21tYW5kICJwZGIubGluZV9wcmVmaXggPSAnXG4lICciLgojIGxpbmVfcHJlZml4ID0gJzogJyAgICAjIFVzZSB0aGlzIHRvIGdldCB0aGUgb2xkIHNpdHVhdGlvbiBiYWNrCmxpbmVfcHJlZml4ID0gJ1xuLT4gJyAgICMgUHJvYmFibHkgYSBiZXR0ZXIgZGVmYXVsdAoKY2xhc3MgUGRiKGJkYi5CZGIsIGNtZC5DbWQpOgoKICAgIF9wcmV2aW91c19zaWdpbnRfaGFuZGxlciA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY29tcGxldGVrZXk9J3RhYicsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsCiAgICAgICAgICAgICAgICAgbm9zaWdpbnQ9RmFsc2UsIHJlYWRyYz1UcnVlKToKICAgICAgICBiZGIuQmRiLl9faW5pdF9fKHNlbGYsIHNraXA9c2tpcCkKICAgICAgICBjbWQuQ21kLl9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5LCBzdGRpbiwgc3Rkb3V0KQogICAgICAgIHN5cy5hdWRpdCgicGRiLlBkYiIpCiAgICAgICAgaWYgc3Rkb3V0OgogICAgICAgICAgICBzZWxmLnVzZV9yYXdpbnB1dCA9IDAKICAgICAgICBzZWxmLnByb21wdCA9ICcoUGRiKSAnCiAgICAgICAgc2VsZi5hbGlhc2VzID0ge30KICAgICAgICBzZWxmLmRpc3BsYXlpbmcgPSB7fQogICAgICAgIHNlbGYubWFpbnB5ZmlsZSA9ICcnCiAgICAgICAgc2VsZi5fd2FpdF9mb3JfbWFpbnB5ZmlsZSA9IEZhbHNlCiAgICAgICAgc2VsZi50Yl9saW5lbm8gPSB7fQogICAgICAgICMgVHJ5IHRvIGxvYWQgcmVhZGxpbmUgaWYgaXQgZXhpc3RzCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgICAgICAgICAgIyByZW1vdmUgc29tZSBjb21tb24gZmlsZSBuYW1lIGRlbGltaXRlcnMKICAgICAgICAgICAgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcl9kZWxpbXMoJyBcdFxuYEAjJCVeJiooKT0rW3tdfVxcfDs6XCciLDw+PycpCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgc2VsZi5hbGxvd19rYmRpbnQgPSBGYWxzZQogICAgICAgIHNlbGYubm9zaWdpbnQgPSBub3NpZ2ludAoKICAgICAgICAjIFJlYWQgfi8ucGRicmMgYW5kIC4vLnBkYnJjCiAgICAgICAgc2VsZi5yY0xpbmVzID0gW10KICAgICAgICBpZiByZWFkcmM6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmV4cGFuZHVzZXIoJ34vLnBkYnJjJyksIGVuY29kaW5nPSd1dGYtOCcpIGFzIHJjRmlsZToKICAgICAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIiwgZW5jb2Rpbmc9J3V0Zi04JykgYXMgcmNGaWxlOgogICAgICAgICAgICAgICAgICAgIHNlbGYucmNMaW5lcy5leHRlbmQocmNGaWxlKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgc2VsZi5jb21tYW5kcyA9IHt9ICMgYXNzb2NpYXRlcyBhIGNvbW1hbmQgbGlzdCB0byBicmVha3BvaW50IG51bWJlcnMKICAgICAgICBzZWxmLmNvbW1hbmRzX2RvcHJvbXB0ID0ge30gIyBmb3IgZWFjaCBicCBudW0sIHRlbGxzIGlmIHRoZSBwcm9tcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IGJlIGRpc3AuIGFmdGVyIGV4ZWNpbmcgdGhlIGNtZCBsaXN0CiAgICAgICAgc2VsZi5jb21tYW5kc19zaWxlbnQgPSB7fSAjIGZvciBlYWNoIGJwIG51bSwgdGVsbHMgaWYgdGhlIHN0YWNrIHRyYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG11c3QgYmUgZGlzcC4gYWZ0ZXIgZXhlY2luZyB0aGUgY21kIGxpc3QKICAgICAgICBzZWxmLmNvbW1hbmRzX2RlZmluaW5nID0gRmFsc2UgIyBUcnVlIHdoaWxlIGluIHRoZSBwcm9jZXNzIG9mIGRlZmluaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBjb21tYW5kIGxpc3QKICAgICAgICBzZWxmLmNvbW1hbmRzX2JudW0gPSBOb25lICMgVGhlIGJyZWFrcG9pbnQgbnVtYmVyIGZvciB3aGljaCB3ZSBhcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVmaW5pbmcgYSBsaXN0CgogICAgZGVmIHNpZ2ludF9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgogICAgICAgIGlmIHNlbGYuYWxsb3dfa2JkaW50OgogICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAogICAgICAgIHNlbGYubWVzc2FnZSgiXG5Qcm9ncmFtIGludGVycnVwdGVkLiAoVXNlICdjb250JyB0byByZXN1bWUpLiIpCiAgICAgICAgc2VsZi5zZXRfc3RlcCgpCiAgICAgICAgc2VsZi5zZXRfdHJhY2UoZnJhbWUpCgogICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgIGJkYi5CZGIucmVzZXQoc2VsZikKICAgICAgICBzZWxmLmZvcmdldCgpCgogICAgZGVmIGZvcmdldChzZWxmKToKICAgICAgICBzZWxmLmxpbmVubyA9IE5vbmUKICAgICAgICBzZWxmLnN0YWNrID0gW10KICAgICAgICBzZWxmLmN1cmluZGV4ID0gMAogICAgICAgIHNlbGYuY3VyZnJhbWUgPSBOb25lCiAgICAgICAgc2VsZi50Yl9saW5lbm8uY2xlYXIoKQoKICAgIGRlZiBzZXR1cChzZWxmLCBmLCB0Yik6CiAgICAgICAgc2VsZi5mb3JnZXQoKQogICAgICAgIHNlbGYuc3RhY2ssIHNlbGYuY3VyaW5kZXggPSBzZWxmLmdldF9zdGFjayhmLCB0YikKICAgICAgICB3aGlsZSB0YjoKICAgICAgICAgICAgIyB3aGVuIHNldHRpbmcgdXAgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIHdpdGggYSB0cmFjZWJhY2ssIHNhdmUgYWxsCiAgICAgICAgICAgICMgdGhlIG9yaWdpbmFsIGxpbmUgbnVtYmVycyB0byBiZSBkaXNwbGF5ZWQgYWxvbmcgdGhlIGN1cnJlbnQgbGluZQogICAgICAgICAgICAjIG51bWJlcnMgKHdoaWNoIGNhbiBiZSBkaWZmZXJlbnQsIGUuZy4gZHVlIHRvIGZpbmFsbHkgY2xhdXNlcykKICAgICAgICAgICAgbGluZW5vID0gbGFzdGkybGluZW5vKHRiLnRiX2ZyYW1lLmZfY29kZSwgdGIudGJfbGFzdGkpCiAgICAgICAgICAgIHNlbGYudGJfbGluZW5vW3RiLnRiX2ZyYW1lXSA9IGxpbmVubwogICAgICAgICAgICB0YiA9IHRiLnRiX25leHQKICAgICAgICBzZWxmLmN1cmZyYW1lID0gc2VsZi5zdGFja1tzZWxmLmN1cmluZGV4XVswXQogICAgICAgICMgVGhlIGZfbG9jYWxzIGRpY3Rpb25hcnkgaXMgdXBkYXRlZCBmcm9tIHRoZSBhY3R1YWwgZnJhbWUKICAgICAgICAjIGxvY2FscyB3aGVuZXZlciB0aGUgLmZfbG9jYWxzIGFjY2Vzc29yIGlzIGNhbGxlZCwgc28gd2UKICAgICAgICAjIGNhY2hlIGl0IGhlcmUgdG8gZW5zdXJlIHRoYXQgbW9kaWZpY2F0aW9ucyBhcmUgbm90IG92ZXJ3cml0dGVuLgogICAgICAgIHNlbGYuY3VyZnJhbWVfbG9jYWxzID0gc2VsZi5jdXJmcmFtZS5mX2xvY2FscwogICAgICAgIHJldHVybiBzZWxmLmV4ZWNSY0xpbmVzKCkKCiAgICAjIENhbiBiZSBleGVjdXRlZCBlYXJsaWVyIHRoYW4gJ3NldHVwJyBpZiBkZXNpcmVkCiAgICBkZWYgZXhlY1JjTGluZXMoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYucmNMaW5lczoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIyBsb2NhbCBjb3B5IGJlY2F1c2Ugb2YgcmVjdXJzaW9uCiAgICAgICAgcmNMaW5lcyA9IHNlbGYucmNMaW5lcwogICAgICAgIHJjTGluZXMucmV2ZXJzZSgpCiAgICAgICAgIyBleGVjdXRlIGV2ZXJ5IGxpbmUgb25seSBvbmNlCiAgICAgICAgc2VsZi5yY0xpbmVzID0gW10KICAgICAgICB3aGlsZSByY0xpbmVzOgogICAgICAgICAgICBsaW5lID0gcmNMaW5lcy5wb3AoKS5zdHJpcCgpCiAgICAgICAgICAgIGlmIGxpbmUgYW5kIGxpbmVbMF0gIT0gJyMnOgogICAgICAgICAgICAgICAgaWYgc2VsZi5vbmVjbWQobGluZSk6CiAgICAgICAgICAgICAgICAgICAgIyBpZiBvbmVjbWQgcmV0dXJucyBUcnVlLCB0aGUgY29tbWFuZCB3YW50cyB0byBleGl0CiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIHRoZSBpbnRlcmFjdGlvbiwgc2F2ZSBsZWZ0b3ZlciByYyBsaW5lcwogICAgICAgICAgICAgICAgICAgICMgdG8gZXhlY3V0ZSBiZWZvcmUgbmV4dCBpbnRlcmFjdGlvbgogICAgICAgICAgICAgICAgICAgIHNlbGYucmNMaW5lcyArPSByZXZlcnNlZChyY0xpbmVzKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgIyBPdmVycmlkZSBCZGIgbWV0aG9kcwoKICAgIGRlZiB1c2VyX2NhbGwoc2VsZiwgZnJhbWUsIGFyZ3VtZW50X2xpc3QpOgogICAgICAgICIiIlRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZXJlIGlzIHRoZSByZW1vdGUgcG9zc2liaWxpdHkKICAgICAgICB0aGF0IHdlIGV2ZXIgbmVlZCB0byBzdG9wIGluIHRoaXMgZnVuY3Rpb24uIiIiCiAgICAgICAgaWYgc2VsZi5fd2FpdF9mb3JfbWFpbnB5ZmlsZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgc2VsZi5zdG9wX2hlcmUoZnJhbWUpOgogICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJy0tQ2FsbC0tJykKICAgICAgICAgICAgc2VsZi5pbnRlcmFjdGlvbihmcmFtZSwgTm9uZSkKCiAgICBkZWYgdXNlcl9saW5lKHNlbGYsIGZyYW1lKToKICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIHN0b3Agb3IgYnJlYWsgYXQgdGhpcyBsaW5lLiIiIgogICAgICAgIGlmIHNlbGYuX3dhaXRfZm9yX21haW5weWZpbGU6CiAgICAgICAgICAgIGlmIChzZWxmLm1haW5weWZpbGUgIT0gc2VsZi5jYW5vbmljKGZyYW1lLmZfY29kZS5jb19maWxlbmFtZSkKICAgICAgICAgICAgICAgIG9yIGZyYW1lLmZfbGluZW5vIDw9IDApOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHNlbGYuX3dhaXRfZm9yX21haW5weWZpbGUgPSBGYWxzZQogICAgICAgIGlmIHNlbGYuYnBfY29tbWFuZHMoZnJhbWUpOgogICAgICAgICAgICBzZWxmLmludGVyYWN0aW9uKGZyYW1lLCBOb25lKQoKICAgIGRlZiBicF9jb21tYW5kcyhzZWxmLCBmcmFtZSk6CiAgICAgICAgIiIiQ2FsbCBldmVyeSBjb21tYW5kIHRoYXQgd2FzIHNldCBmb3IgdGhlIGN1cnJlbnQgYWN0aXZlIGJyZWFrcG9pbnQKICAgICAgICAoaWYgdGhlcmUgaXMgb25lKS4KCiAgICAgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBub3JtYWwgaW50ZXJhY3Rpb24gZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQsCiAgICAgICAgRmFsc2Ugb3RoZXJ3aXNlLiIiIgogICAgICAgICMgc2VsZi5jdXJyZW50YnAgaXMgc2V0IGluIGJkYiBpbiBCZGIuYnJlYWtfaGVyZSBpZiBhIGJyZWFrcG9pbnQgd2FzIGhpdAogICAgICAgIGlmIGdldGF0dHIoc2VsZiwgImN1cnJlbnRicCIsIEZhbHNlKSBhbmQgXAogICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRicCBpbiBzZWxmLmNvbW1hbmRzOgogICAgICAgICAgICBjdXJyZW50YnAgPSBzZWxmLmN1cnJlbnRicAogICAgICAgICAgICBzZWxmLmN1cnJlbnRicCA9IDAKICAgICAgICAgICAgbGFzdGNtZF9iYWNrID0gc2VsZi5sYXN0Y21kCiAgICAgICAgICAgIHNlbGYuc2V0dXAoZnJhbWUsIE5vbmUpCiAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuY29tbWFuZHNbY3VycmVudGJwXToKICAgICAgICAgICAgICAgIHNlbGYub25lY21kKGxpbmUpCiAgICAgICAgICAgIHNlbGYubGFzdGNtZCA9IGxhc3RjbWRfYmFjawogICAgICAgICAgICBpZiBub3Qgc2VsZi5jb21tYW5kc19zaWxlbnRbY3VycmVudGJwXToKICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfc3RhY2tfZW50cnkoc2VsZi5zdGFja1tzZWxmLmN1cmluZGV4XSkKICAgICAgICAgICAgaWYgc2VsZi5jb21tYW5kc19kb3Byb21wdFtjdXJyZW50YnBdOgogICAgICAgICAgICAgICAgc2VsZi5fY21kbG9vcCgpCiAgICAgICAgICAgIHNlbGYuZm9yZ2V0KCkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgcmV0dXJuIDEKCiAgICBkZWYgdXNlcl9yZXR1cm4oc2VsZiwgZnJhbWUsIHJldHVybl92YWx1ZSk6CiAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIHJldHVybiB0cmFwIGlzIHNldCBoZXJlLiIiIgogICAgICAgIGlmIHNlbGYuX3dhaXRfZm9yX21haW5weWZpbGU6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGZyYW1lLmZfbG9jYWxzWydfX3JldHVybl9fJ10gPSByZXR1cm5fdmFsdWUKICAgICAgICBzZWxmLm1lc3NhZ2UoJy0tUmV0dXJuLS0nKQogICAgICAgIHNlbGYuaW50ZXJhY3Rpb24oZnJhbWUsIE5vbmUpCgogICAgZGVmIHVzZXJfZXhjZXB0aW9uKHNlbGYsIGZyYW1lLCBleGNfaW5mbyk6CiAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaWYgYW4gZXhjZXB0aW9uIG9jY3VycywKICAgICAgICBidXQgb25seSBpZiB3ZSBhcmUgdG8gc3RvcCBhdCBvciBqdXN0IGJlbG93IHRoaXMgbGV2ZWwuIiIiCiAgICAgICAgaWYgc2VsZi5fd2FpdF9mb3JfbWFpbnB5ZmlsZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjayA9IGV4Y19pbmZvCiAgICAgICAgZnJhbWUuZl9sb2NhbHNbJ19fZXhjZXB0aW9uX18nXSA9IGV4Y190eXBlLCBleGNfdmFsdWUKCiAgICAgICAgIyBBbiAnSW50ZXJuYWwgU3RvcEl0ZXJhdGlvbicgZXhjZXB0aW9uIGlzIGFuIGV4Y2VwdGlvbiBkZWJ1ZyBldmVudAogICAgICAgICMgaXNzdWVkIGJ5IHRoZSBpbnRlcnByZXRlciB3aGVuIGhhbmRsaW5nIGEgc3ViZ2VuZXJhdG9yIHJ1biB3aXRoCiAgICAgICAgIyAneWllbGQgZnJvbScgb3IgYSBnZW5lcmF0b3IgY29udHJvbGxlZCBieSBhIGZvciBsb29wLiBObyBleGNlcHRpb24gaGFzCiAgICAgICAgIyBhY3R1YWxseSBvY2N1cnJlZCBpbiB0aGlzIGNhc2UuIFRoZSBkZWJ1Z2dlciB1c2VzIHRoaXMgZGVidWcgZXZlbnQgdG8KICAgICAgICAjIHN0b3Agd2hlbiB0aGUgZGVidWdnZWUgaXMgcmV0dXJuaW5nIGZyb20gc3VjaCBnZW5lcmF0b3JzLgogICAgICAgIHByZWZpeCA9ICdJbnRlcm5hbCAnIGlmIChub3QgZXhjX3RyYWNlYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZXhjX3R5cGUgaXMgU3RvcEl0ZXJhdGlvbikgZWxzZSAnJwogICAgICAgIHNlbGYubWVzc2FnZSgnJXMlcycgJSAocHJlZml4LAogICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KGV4Y190eXBlLCBleGNfdmFsdWUpWy0xXS5zdHJpcCgpKSkKICAgICAgICBzZWxmLmludGVyYWN0aW9uKGZyYW1lLCBleGNfdHJhY2ViYWNrKQoKICAgICMgR2VuZXJhbCBpbnRlcmFjdGlvbiBmdW5jdGlvbgogICAgZGVmIF9jbWRsb29wKHNlbGYpOgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICMga2V5Ym9hcmQgaW50ZXJydXB0cyBhbGxvdyBmb3IgYW4gZWFzeSB3YXkgdG8gY2FuY2VsCiAgICAgICAgICAgICAgICAjIHRoZSBjdXJyZW50IGNvbW1hbmQsIHNvIGFsbG93IHRoZW0gZHVyaW5nIGludGVyYWN0aXZlIGlucHV0CiAgICAgICAgICAgICAgICBzZWxmLmFsbG93X2tiZGludCA9IFRydWUKICAgICAgICAgICAgICAgIHNlbGYuY21kbG9vcCgpCiAgICAgICAgICAgICAgICBzZWxmLmFsbG93X2tiZGludCA9IEZhbHNlCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJy0tS2V5Ym9hcmRJbnRlcnJ1cHQtLScpCgogICAgIyBDYWxsZWQgYmVmb3JlIGxvb3AsIGhhbmRsZXMgZGlzcGxheSBleHByZXNzaW9ucwogICAgZGVmIHByZWxvb3Aoc2VsZik6CiAgICAgICAgZGlzcGxheWluZyA9IHNlbGYuZGlzcGxheWluZy5nZXQoc2VsZi5jdXJmcmFtZSkKICAgICAgICBpZiBkaXNwbGF5aW5nOgogICAgICAgICAgICBmb3IgZXhwciwgb2xkdmFsdWUgaW4gZGlzcGxheWluZy5pdGVtcygpOgogICAgICAgICAgICAgICAgbmV3dmFsdWUgPSBzZWxmLl9nZXR2YWxfZXhjZXB0KGV4cHIpCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBpZGVudGl0eSBmaXJzdDsgdGhpcyBwcmV2ZW50cyBjdXN0b20gX19lcV9fIHRvCiAgICAgICAgICAgICAgICAjIGJlIGNhbGxlZCBhdCBldmVyeSBsb29wLCBhbmQgYWxzbyBwcmV2ZW50cyBpbnN0YW5jZXMgd2hvc2UKICAgICAgICAgICAgICAgICMgZmllbGRzIGFyZSBjaGFuZ2VkIHRvIGJlIGRpc3BsYXllZAogICAgICAgICAgICAgICAgaWYgbmV3dmFsdWUgaXMgbm90IG9sZHZhbHVlIGFuZCBuZXd2YWx1ZSAhPSBvbGR2YWx1ZToKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5aW5nW2V4cHJdID0gbmV3dmFsdWUKICAgICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ2Rpc3BsYXkgJXM6ICVyICBbb2xkOiAlcl0nICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4cHIsIG5ld3ZhbHVlLCBvbGR2YWx1ZSkpCgogICAgZGVmIGludGVyYWN0aW9uKHNlbGYsIGZyYW1lLCB0cmFjZWJhY2spOgogICAgICAgICMgUmVzdG9yZSB0aGUgcHJldmlvdXMgc2lnbmFsIGhhbmRsZXIgYXQgdGhlIFBkYiBwcm9tcHQuCiAgICAgICAgaWYgUGRiLl9wcmV2aW91c19zaWdpbnRfaGFuZGxlcjoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSU5ULCBQZGIuX3ByZXZpb3VzX3NpZ2ludF9oYW5kbGVyKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjogICMgVmFsdWVFcnJvcjogc2lnbmFsIG9ubHkgd29ya3MgaW4gbWFpbiB0aHJlYWQKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIFBkYi5fcHJldmlvdXNfc2lnaW50X2hhbmRsZXIgPSBOb25lCiAgICAgICAgaWYgc2VsZi5zZXR1cChmcmFtZSwgdHJhY2ViYWNrKToKICAgICAgICAgICAgIyBubyBpbnRlcmFjdGlvbiBkZXNpcmVkIGF0IHRoaXMgdGltZSAoaGFwcGVucyBpZiAucGRicmMgY29udGFpbnMKICAgICAgICAgICAgIyBhIGNvbW1hbmQgbGlrZSAiY29udGludWUiKQogICAgICAgICAgICBzZWxmLmZvcmdldCgpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYucHJpbnRfc3RhY2tfZW50cnkoc2VsZi5zdGFja1tzZWxmLmN1cmluZGV4XSkKICAgICAgICBzZWxmLl9jbWRsb29wKCkKICAgICAgICBzZWxmLmZvcmdldCgpCgogICAgZGVmIGRpc3BsYXlob29rKHNlbGYsIG9iaik6CiAgICAgICAgIiIiQ3VzdG9tIGRpc3BsYXlob29rIGZvciB0aGUgZXhlYyBpbiBkZWZhdWx0KCksIHdoaWNoIHByZXZlbnRzCiAgICAgICAgYXNzaWdubWVudCBvZiB0aGUgXyB2YXJpYWJsZSBpbiB0aGUgYnVpbHRpbnMuCiAgICAgICAgIiIiCiAgICAgICAgIyByZXByb2R1Y2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBzdGFuZGFyZCBkaXNwbGF5aG9vaywgbm90IHByaW50aW5nIE5vbmUKICAgICAgICBpZiBvYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYubWVzc2FnZShyZXByKG9iaikpCgogICAgZGVmIGRlZmF1bHQoc2VsZiwgbGluZSk6CiAgICAgICAgaWYgbGluZVs6MV0gPT0gJyEnOiBsaW5lID0gbGluZVsxOl0KICAgICAgICBsb2NhbHMgPSBzZWxmLmN1cmZyYW1lX2xvY2FscwogICAgICAgIGdsb2JhbHMgPSBzZWxmLmN1cmZyYW1lLmZfZ2xvYmFscwogICAgICAgIHRyeToKICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUobGluZSArICdcbicsICc8c3RkaW4+JywgJ3NpbmdsZScpCiAgICAgICAgICAgIHNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICAgICBzYXZlX3N0ZGluID0gc3lzLnN0ZGluCiAgICAgICAgICAgIHNhdmVfZGlzcGxheWhvb2sgPSBzeXMuZGlzcGxheWhvb2sKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc3lzLnN0ZGluID0gc2VsZi5zdGRpbgogICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuc3Rkb3V0CiAgICAgICAgICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBzZWxmLmRpc3BsYXlob29rCiAgICAgICAgICAgICAgICBleGVjKGNvZGUsIGdsb2JhbHMsIGxvY2FscykKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAgICAgICAgc3lzLnN0ZGluID0gc2F2ZV9zdGRpbgogICAgICAgICAgICAgICAgc3lzLmRpc3BsYXlob29rID0gc2F2ZV9kaXNwbGF5aG9vawogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgc2VsZi5fZXJyb3JfZXhjKCkKCiAgICBkZWYgcHJlY21kKHNlbGYsIGxpbmUpOgogICAgICAgICIiIkhhbmRsZSBhbGlhcyBleHBhbnNpb24gYW5kICc7Oycgc2VwYXJhdG9yLiIiIgogICAgICAgIGlmIG5vdCBsaW5lLnN0cmlwKCk6CiAgICAgICAgICAgIHJldHVybiBsaW5lCiAgICAgICAgYXJncyA9IGxpbmUuc3BsaXQoKQogICAgICAgIHdoaWxlIGFyZ3NbMF0gaW4gc2VsZi5hbGlhc2VzOgogICAgICAgICAgICBsaW5lID0gc2VsZi5hbGlhc2VzW2FyZ3NbMF1dCiAgICAgICAgICAgIGlpID0gMQogICAgICAgICAgICBmb3IgdG1wQXJnIGluIGFyZ3NbMTpdOgogICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiJSIgKyBzdHIoaWkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcEFyZykKICAgICAgICAgICAgICAgIGlpICs9IDEKICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiJSoiLCAnICcuam9pbihhcmdzWzE6XSkpCiAgICAgICAgICAgIGFyZ3MgPSBsaW5lLnNwbGl0KCkKICAgICAgICAjIHNwbGl0IGludG8gJzs7JyBzZXBhcmF0ZWQgY29tbWFuZHMKICAgICAgICAjIHVubGVzcyBpdCdzIGFuIGFsaWFzIGNvbW1hbmQKICAgICAgICBpZiBhcmdzWzBdICE9ICdhbGlhcyc6CiAgICAgICAgICAgIG1hcmtlciA9IGxpbmUuZmluZCgnOzsnKQogICAgICAgICAgICBpZiBtYXJrZXIgPj0gMDoKICAgICAgICAgICAgICAgICMgcXVldWUgdXAgZXZlcnl0aGluZyBhZnRlciBtYXJrZXIKICAgICAgICAgICAgICAgIG5leHQgPSBsaW5lW21hcmtlcisyOl0ubHN0cmlwKCkKICAgICAgICAgICAgICAgIHNlbGYuY21kcXVldWUuYXBwZW5kKG5leHQpCiAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6bWFya2VyXS5yc3RyaXAoKQogICAgICAgIHJldHVybiBsaW5lCgogICAgZGVmIG9uZWNtZChzZWxmLCBsaW5lKToKICAgICAgICAiIiJJbnRlcnByZXQgdGhlIGFyZ3VtZW50IGFzIHRob3VnaCBpdCBoYWQgYmVlbiB0eXBlZCBpbiByZXNwb25zZQogICAgICAgIHRvIHRoZSBwcm9tcHQuCgogICAgICAgIENoZWNrcyB3aGV0aGVyIHRoaXMgbGluZSBpcyB0eXBlZCBhdCB0aGUgbm9ybWFsIHByb21wdCBvciBpbgogICAgICAgIGEgYnJlYWtwb2ludCBjb21tYW5kIGxpc3QgZGVmaW5pdGlvbi4KICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc2VsZi5jb21tYW5kc19kZWZpbmluZzoKICAgICAgICAgICAgcmV0dXJuIGNtZC5DbWQub25lY21kKHNlbGYsIGxpbmUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlX2NvbW1hbmRfZGVmKGxpbmUpCgogICAgZGVmIGhhbmRsZV9jb21tYW5kX2RlZihzZWxmLCBsaW5lKToKICAgICAgICAiIiJIYW5kbGVzIG9uZSBjb21tYW5kIGxpbmUgZHVyaW5nIGNvbW1hbmQgbGlzdCBkZWZpbml0aW9uLiIiIgogICAgICAgIGNtZCwgYXJnLCBsaW5lID0gc2VsZi5wYXJzZWxpbmUobGluZSkKICAgICAgICBpZiBub3QgY21kOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBjbWQgPT0gJ3NpbGVudCc6CiAgICAgICAgICAgIHNlbGYuY29tbWFuZHNfc2lsZW50W3NlbGYuY29tbWFuZHNfYm51bV0gPSBUcnVlCiAgICAgICAgICAgIHJldHVybiAjIGNvbnRpbnVlIHRvIGhhbmRsZSBvdGhlciBjbWQgZGVmIGluIHRoZSBjbWQgbGlzdAogICAgICAgIGVsaWYgY21kID09ICdlbmQnOgogICAgICAgICAgICBzZWxmLmNtZHF1ZXVlID0gW10KICAgICAgICAgICAgcmV0dXJuIDEgIyBlbmQgb2YgY21kIGxpc3QKICAgICAgICBjbWRsaXN0ID0gc2VsZi5jb21tYW5kc1tzZWxmLmNvbW1hbmRzX2JudW1dCiAgICAgICAgaWYgYXJnOgogICAgICAgICAgICBjbWRsaXN0LmFwcGVuZChjbWQrJyAnK2FyZykKICAgICAgICBlbHNlOgogICAgICAgICAgICBjbWRsaXN0LmFwcGVuZChjbWQpCiAgICAgICAgIyBEZXRlcm1pbmUgaWYgd2UgbXVzdCBzdG9wCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzZWxmLCAnZG9fJyArIGNtZCkKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIGZ1bmMgPSBzZWxmLmRlZmF1bHQKICAgICAgICAjIG9uZSBvZiB0aGUgcmVzdW1pbmcgY29tbWFuZHMKICAgICAgICBpZiBmdW5jLl9fbmFtZV9fIGluIHNlbGYuY29tbWFuZHNfcmVzdW1pbmc6CiAgICAgICAgICAgIHNlbGYuY29tbWFuZHNfZG9wcm9tcHRbc2VsZi5jb21tYW5kc19ibnVtXSA9IEZhbHNlCiAgICAgICAgICAgIHNlbGYuY21kcXVldWUgPSBbXQogICAgICAgICAgICByZXR1cm4gMQogICAgICAgIHJldHVybgoKICAgICMgaW50ZXJmYWNlIGFic3RyYWN0aW9uIGZ1bmN0aW9ucwoKICAgIGRlZiBtZXNzYWdlKHNlbGYsIG1zZyk6CiAgICAgICAgcHJpbnQobXNnLCBmaWxlPXNlbGYuc3Rkb3V0KQoKICAgIGRlZiBlcnJvcihzZWxmLCBtc2cpOgogICAgICAgIHByaW50KCcqKionLCBtc2csIGZpbGU9c2VsZi5zdGRvdXQpCgogICAgIyBHZW5lcmljIGNvbXBsZXRpb24gZnVuY3Rpb25zLiAgSW5kaXZpZHVhbCBjb21wbGV0ZV9mb28gbWV0aG9kcyBjYW4gYmUKICAgICMgYXNzaWduZWQgYmVsb3cgdG8gb25lIG9mIHRoZXNlIGZ1bmN0aW9ucy4KCiAgICBkZWYgX2NvbXBsZXRlX2xvY2F0aW9uKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKICAgICAgICAjIENvbXBsZXRlIGEgZmlsZS9tb2R1bGUvZnVuY3Rpb24gbG9jYXRpb24gZm9yIGJyZWFrL3RicmVhay9jbGVhci4KICAgICAgICBpZiBsaW5lLnN0cmlwKCkuZW5kc3dpdGgoKCc6JywgJywnKSk6CiAgICAgICAgICAgICMgSGVyZSBjb21lcyBhIGxpbmUgbnVtYmVyIG9yIGEgY29uZGl0aW9uIHdoaWNoIHdlIGNhbid0IGNvbXBsZXRlLgogICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAjIEZpcnN0LCB0cnkgdG8gZmluZCBtYXRjaGluZyBmdW5jdGlvbnMgKGkuZS4gZXhwcmVzc2lvbnMpLgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0ID0gc2VsZi5fY29tcGxldGVfZXhwcmVzc2lvbih0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICByZXQgPSBbXQogICAgICAgICMgVGhlbiwgdHJ5IHRvIGNvbXBsZXRlIGZpbGUgbmFtZXMgYXMgd2VsbC4KICAgICAgICBnbG9icyA9IGdsb2IuZ2xvYihnbG9iLmVzY2FwZSh0ZXh0KSArICcqJykKICAgICAgICBmb3IgZm4gaW4gZ2xvYnM6CiAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZm4pOgogICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmbiArICcvJykKICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShmbikgYW5kIGZuLmxvd2VyKCkuZW5kc3dpdGgoKCcucHknLCAnLnB5dycpKToKICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm4gKyAnOicpCiAgICAgICAgcmV0dXJuIHJldAoKICAgIGRlZiBfY29tcGxldGVfYnBudW1iZXIoc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgogICAgICAgICMgQ29tcGxldGUgYSBicmVha3BvaW50IG51bWJlci4gIChUaGlzIHdvdWxkIGJlIG1vcmUgaGVscGZ1bCBpZiB3ZSBjb3VsZAogICAgICAgICMgZGlzcGxheSBhZGRpdGlvbmFsIGluZm8gYWxvbmcgd2l0aCB0aGUgY29tcGxldGlvbnMsIHN1Y2ggYXMgZmlsZS9saW5lCiAgICAgICAgIyBvZiB0aGUgYnJlYWtwb2ludC4pCiAgICAgICAgcmV0dXJuIFtzdHIoaSkgZm9yIGksIGJwIGluIGVudW1lcmF0ZShiZGIuQnJlYWtwb2ludC5icGJ5bnVtYmVyKQogICAgICAgICAgICAgICAgaWYgYnAgaXMgbm90IE5vbmUgYW5kIHN0cihpKS5zdGFydHN3aXRoKHRleHQpXQoKICAgIGRlZiBfY29tcGxldGVfZXhwcmVzc2lvbihzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CiAgICAgICAgIyBDb21wbGV0ZSBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbi4KICAgICAgICBpZiBub3Qgc2VsZi5jdXJmcmFtZToKICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgIyBDb2xsZWN0IGdsb2JhbHMgYW5kIGxvY2Fscy4gIEl0IGlzIHVzdWFsbHkgbm90IHJlYWxseSBzZW5zaWJsZSB0byBhbHNvCiAgICAgICAgIyBjb21wbGV0ZSBidWlsdGlucywgYW5kIHRoZXkgY2x1dHRlciB0aGUgbmFtZXNwYWNlIHF1aXRlIGhlYXZpbHksIHNvIHdlCiAgICAgICAgIyBsZWF2ZSB0aGVtIG91dC4KICAgICAgICBucyA9IHsqKnNlbGYuY3VyZnJhbWUuZl9nbG9iYWxzLCAqKnNlbGYuY3VyZnJhbWVfbG9jYWxzfQogICAgICAgIGlmICcuJyBpbiB0ZXh0OgogICAgICAgICAgICAjIFdhbGsgYW4gYXR0cmlidXRlIGNoYWluIHVwIHRvIHRoZSBsYXN0IHBhcnQsIHNpbWlsYXIgdG8gd2hhdAogICAgICAgICAgICAjIHJsY29tcGxldGVyIGRvZXMuICBUaGlzIHdpbGwgYmFpbCBpZiBhbnkgb2YgdGhlIHBhcnRzIGFyZSBub3QKICAgICAgICAgICAgIyBzaW1wbGUgYXR0cmlidXRlIGFjY2Vzcywgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgogICAgICAgICAgICBkb3R0ZWQgPSB0ZXh0LnNwbGl0KCcuJykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgb2JqID0gbnNbZG90dGVkWzBdXQogICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gZG90dGVkWzE6LTFdOgogICAgICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCBwYXJ0KQogICAgICAgICAgICBleGNlcHQgKEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAgICAgcHJlZml4ID0gJy4nLmpvaW4oZG90dGVkWzotMV0pICsgJy4nCiAgICAgICAgICAgIHJldHVybiBbcHJlZml4ICsgbiBmb3IgbiBpbiBkaXIob2JqKSBpZiBuLnN0YXJ0c3dpdGgoZG90dGVkWy0xXSldCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBDb21wbGV0ZSBhIHNpbXBsZSBuYW1lLgogICAgICAgICAgICByZXR1cm4gW24gZm9yIG4gaW4gbnMua2V5cygpIGlmIG4uc3RhcnRzd2l0aCh0ZXh0KV0KCiAgICAjIENvbW1hbmQgZGVmaW5pdGlvbnMsIGNhbGxlZCBieSBjbWRsb29wKCkKICAgICMgVGhlIGFyZ3VtZW50IGlzIHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHRoZSBjb21tYW5kIGxpbmUKICAgICMgUmV0dXJuIHRydWUgdG8gZXhpdCBmcm9tIHRoZSBjb21tYW5kIGxvb3AKCiAgICBkZWYgZG9fY29tbWFuZHMoc2VsZiwgYXJnKToKICAgICAgICAiIiJjb21tYW5kcyBbYnBudW1iZXJdCiAgICAgICAgKGNvbSkgLi4uCiAgICAgICAgKGNvbSkgZW5kCiAgICAgICAgKFBkYikKCiAgICAgICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyIGJwbnVtYmVyLgogICAgICAgIFRoZSBjb21tYW5kcyB0aGVtc2VsdmVzIGFyZSBlbnRlcmVkIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuCiAgICAgICAgVHlwZSBhIGxpbmUgY29udGFpbmluZyBqdXN0ICdlbmQnIHRvIHRlcm1pbmF0ZSB0aGUgY29tbWFuZHMuCiAgICAgICAgVGhlIGNvbW1hbmRzIGFyZSBleGVjdXRlZCB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4KCiAgICAgICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQKICAgICAgICBmb2xsb3cgaXQgaW1tZWRpYXRlbHkgd2l0aCBlbmQ7IHRoYXQgaXMsIGdpdmUgbm8gY29tbWFuZHMuCgogICAgICAgIFdpdGggbm8gYnBudW1iZXIgYXJndW1lbnQsIGNvbW1hbmRzIHJlZmVycyB0byB0aGUgbGFzdAogICAgICAgIGJyZWFrcG9pbnQgc2V0LgoKICAgICAgICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cAogICAgICAgIGFnYWluLiAgU2ltcGx5IHVzZSB0aGUgY29udGludWUgY29tbWFuZCwgb3Igc3RlcCwgb3IgYW55IG90aGVyCiAgICAgICAgY29tbWFuZCB0aGF0IHJlc3VtZXMgZXhlY3V0aW9uLgoKICAgICAgICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLAogICAgICAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykKICAgICAgICB0ZXJtaW5hdGVzIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMKICAgICAgICBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBlbmQpLiAgVGhpcyBpcyBiZWNhdXNlIGFueSB0aW1lIHlvdQogICAgICAgIHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhIHNpbXBsZSBuZXh0IG9yIHN0ZXApLCB5b3UgbWF5CiAgICAgICAgZW5jb3VudGVyIGFub3RoZXIgYnJlYWtwb2ludCAtLSB3aGljaCBjb3VsZCBoYXZlIGl0cyBvd24KICAgICAgICBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgYWJvdXQgd2hpY2ggbGlzdCB0bwogICAgICAgIGV4ZWN1dGUuCgogICAgICAgIElmIHlvdSB1c2UgdGhlICdzaWxlbnQnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsCiAgICAgICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzCiAgICAgICAgbWF5IGJlIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYwogICAgICAgIG1lc3NhZ2UgYW5kIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcwogICAgICAgIHByaW50IGFueXRoaW5nLCB5b3Ugd2lsbCBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcwogICAgICAgIHJlYWNoZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGFyZzoKICAgICAgICAgICAgYm51bSA9IGxlbihiZGIuQnJlYWtwb2ludC5icGJ5bnVtYmVyKSAtIDEKICAgICAgICBlbHNlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBibnVtID0gaW50KGFyZykKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgc2VsZi5lcnJvcigiVXNhZ2U6IGNvbW1hbmRzIFtibnVtXVxuICAgICAgICAuLi5cbiAgICAgICAgZW5kIikKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5nZXRfYnBieW51bWJlcihibnVtKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgc2VsZi5lcnJvcignY2Fubm90IHNldCBjb21tYW5kczogJXMnICUgZXJyKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgc2VsZi5jb21tYW5kc19ibnVtID0gYm51bQogICAgICAgICMgU2F2ZSBvbGQgZGVmaW5pdGlvbnMgZm9yIHRoZSBjYXNlIG9mIGEga2V5Ym9hcmQgaW50ZXJydXB0LgogICAgICAgIGlmIGJudW0gaW4gc2VsZi5jb21tYW5kczoKICAgICAgICAgICAgb2xkX2NvbW1hbmRfZGVmcyA9IChzZWxmLmNvbW1hbmRzW2JudW1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZHNfZG9wcm9tcHRbYm51bV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kc19zaWxlbnRbYm51bV0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb2xkX2NvbW1hbmRfZGVmcyA9IE5vbmUKICAgICAgICBzZWxmLmNvbW1hbmRzW2JudW1dID0gW10KICAgICAgICBzZWxmLmNvbW1hbmRzX2RvcHJvbXB0W2JudW1dID0gVHJ1ZQogICAgICAgIHNlbGYuY29tbWFuZHNfc2lsZW50W2JudW1dID0gRmFsc2UKCiAgICAgICAgcHJvbXB0X2JhY2sgPSBzZWxmLnByb21wdAogICAgICAgIHNlbGYucHJvbXB0ID0gJyhjb20pICcKICAgICAgICBzZWxmLmNvbW1hbmRzX2RlZmluaW5nID0gVHJ1ZQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5jbWRsb29wKCkKICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICMgUmVzdG9yZSBvbGQgZGVmaW5pdGlvbnMuCiAgICAgICAgICAgIGlmIG9sZF9jb21tYW5kX2RlZnM6CiAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRzW2JudW1dID0gb2xkX2NvbW1hbmRfZGVmc1swXQogICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kc19kb3Byb21wdFtibnVtXSA9IG9sZF9jb21tYW5kX2RlZnNbMV0KICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZHNfc2lsZW50W2JudW1dID0gb2xkX2NvbW1hbmRfZGVmc1syXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZGVsIHNlbGYuY29tbWFuZHNbYm51bV0KICAgICAgICAgICAgICAgIGRlbCBzZWxmLmNvbW1hbmRzX2RvcHJvbXB0W2JudW1dCiAgICAgICAgICAgICAgICBkZWwgc2VsZi5jb21tYW5kc19zaWxlbnRbYm51bV0KICAgICAgICAgICAgc2VsZi5lcnJvcignY29tbWFuZCBkZWZpbml0aW9uIGFib3J0ZWQsIG9sZCBjb21tYW5kcyByZXN0b3JlZCcpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5jb21tYW5kc19kZWZpbmluZyA9IEZhbHNlCiAgICAgICAgICAgIHNlbGYucHJvbXB0ID0gcHJvbXB0X2JhY2sKCiAgICBjb21wbGV0ZV9jb21tYW5kcyA9IF9jb21wbGV0ZV9icG51bWJlcgoKICAgIGRlZiBkb19icmVhayhzZWxmLCBhcmcsIHRlbXBvcmFyeSA9IDApOgogICAgICAgICIiImIocmVhaykgWyAoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXSBdCiAgICAgICAgV2l0aG91dCBhcmd1bWVudCwgbGlzdCBhbGwgYnJlYWtzLgoKICAgICAgICBXaXRoIGEgbGluZSBudW1iZXIgYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoaXMgbGluZSBpbiB0aGUKICAgICAgICBjdXJyZW50IGZpbGUuICBXaXRoIGEgZnVuY3Rpb24gbmFtZSwgc2V0IGEgYnJlYWsgYXQgdGhlIGZpcnN0CiAgICAgICAgZXhlY3V0YWJsZSBsaW5lIG9mIHRoYXQgZnVuY3Rpb24uICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcwogICAgICAgIHByZXNlbnQsIGl0IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0CiAgICAgICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4KCiAgICAgICAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZCB3aXRoIGEgZmlsZW5hbWUgYW5kIGEgY29sb24sCiAgICAgICAgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gYW5vdGhlciBmaWxlIChwcm9iYWJseSBvbmUgdGhhdAogICAgICAgIGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgaXMgc2VhcmNoZWQgZm9yIG9uCiAgICAgICAgc3lzLnBhdGg7IHRoZSAucHkgc3VmZml4IG1heSBiZSBvbWl0dGVkLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBhcmc6CiAgICAgICAgICAgIGlmIHNlbGYuYnJlYWtzOiAgIyBUaGVyZSdzIGF0IGxlYXN0IG9uZQogICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJOdW0gVHlwZSAgICAgICAgIERpc3AgRW5iICAgV2hlcmUiKQogICAgICAgICAgICAgICAgZm9yIGJwIGluIGJkYi5CcmVha3BvaW50LmJwYnludW1iZXI6CiAgICAgICAgICAgICAgICAgICAgaWYgYnA6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZShicC5icGZvcm1hdCgpKQogICAgICAgICAgICByZXR1cm4KICAgICAgICAjIHBhcnNlIGFyZ3VtZW50czsgY29tbWEgaGFzIGxvd2VzdCBwcmVjZWRlbmNlCiAgICAgICAgIyBhbmQgY2Fubm90IG9jY3VyIGluIGZpbGVuYW1lCiAgICAgICAgZmlsZW5hbWUgPSBOb25lCiAgICAgICAgbGluZW5vID0gTm9uZQogICAgICAgIGNvbmQgPSBOb25lCiAgICAgICAgY29tbWEgPSBhcmcuZmluZCgnLCcpCiAgICAgICAgaWYgY29tbWEgPiAwOgogICAgICAgICAgICAjIHBhcnNlIHN0dWZmIGFmdGVyIGNvbW1hOiAiY29uZGl0aW9uIgogICAgICAgICAgICBjb25kID0gYXJnW2NvbW1hKzE6XS5sc3RyaXAoKQogICAgICAgICAgICBhcmcgPSBhcmdbOmNvbW1hXS5yc3RyaXAoKQogICAgICAgICMgcGFyc2Ugc3R1ZmYgYmVmb3JlIGNvbW1hOiBbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uCiAgICAgICAgY29sb24gPSBhcmcucmZpbmQoJzonKQogICAgICAgIGZ1bmNuYW1lID0gTm9uZQogICAgICAgIGlmIGNvbG9uID49IDA6CiAgICAgICAgICAgIGZpbGVuYW1lID0gYXJnWzpjb2xvbl0ucnN0cmlwKCkKICAgICAgICAgICAgZiA9IHNlbGYubG9va3VwbW9kdWxlKGZpbGVuYW1lKQogICAgICAgICAgICBpZiBub3QgZjoKICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoJyVyIG5vdCBmb3VuZCBmcm9tIHN5cy5wYXRoJyAlIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGYKICAgICAgICAgICAgYXJnID0gYXJnW2NvbG9uKzE6XS5sc3RyaXAoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsaW5lbm8gPSBpbnQoYXJnKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoJ0JhZCBsaW5lbm86ICVzJyAlIGFyZykKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgbm8gY29sb247IGNhbiBiZSBsaW5lbm8gb3IgZnVuY3Rpb24KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGFyZykKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZnVuYyA9IGV2YWwoYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VyZnJhbWUuZl9nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VyZnJhbWVfbG9jYWxzKQogICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBhcmcKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGZ1bmMsICdfX2Z1bmNfXycpOgogICAgICAgICAgICAgICAgICAgICAgICBmdW5jID0gZnVuYy5fX2Z1bmNfXwogICAgICAgICAgICAgICAgICAgIGNvZGUgPSBmdW5jLl9fY29kZV9fCiAgICAgICAgICAgICAgICAgICAgI3VzZSBjb19uYW1lIHRvIGlkZW50aWZ5IHRoZSBia3B0IChmdW5jdGlvbiBuYW1lcwogICAgICAgICAgICAgICAgICAgICNjb3VsZCBiZSBhbGlhc2VkLCBidXQgY29fbmFtZSBpcyBpbnZhcmlhbnQpCiAgICAgICAgICAgICAgICAgICAgZnVuY25hbWUgPSBjb2RlLmNvX25hbWUKICAgICAgICAgICAgICAgICAgICBsaW5lbm8gPSBjb2RlLmNvX2ZpcnN0bGluZW5vCiAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBjb2RlLmNvX2ZpbGVuYW1lCiAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgIyBsYXN0IHRoaW5nIHRvIHRyeQogICAgICAgICAgICAgICAgICAgIChvaywgZmlsZW5hbWUsIGxuKSA9IHNlbGYubGluZWluZm8oYXJnKQogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvazoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcignVGhlIHNwZWNpZmllZCBvYmplY3QgJXIgaXMgbm90IGEgZnVuY3Rpb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvciB3YXMgbm90IGZvdW5kIGFsb25nIHN5cy5wYXRoLicgJSBhcmcpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lID0gb2sgIyBvayBjb250YWlucyBhIGZ1bmN0aW9uIG5hbWUKICAgICAgICAgICAgICAgICAgICBsaW5lbm8gPSBpbnQobG4pCiAgICAgICAgaWYgbm90IGZpbGVuYW1lOgogICAgICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZGVmYXVsdEZpbGUoKQogICAgICAgICMgQ2hlY2sgZm9yIHJlYXNvbmFibGUgYnJlYWtwb2ludAogICAgICAgIGxpbmUgPSBzZWxmLmNoZWNrbGluZShmaWxlbmFtZSwgbGluZW5vKQogICAgICAgIGlmIGxpbmU6CiAgICAgICAgICAgICMgbm93IHNldCB0aGUgYnJlYWsgcG9pbnQKICAgICAgICAgICAgZXJyID0gc2VsZi5zZXRfYnJlYWsoZmlsZW5hbWUsIGxpbmUsIHRlbXBvcmFyeSwgY29uZCwgZnVuY25hbWUpCiAgICAgICAgICAgIGlmIGVycjoKICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoZXJyKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnAgPSBzZWxmLmdldF9icmVha3MoZmlsZW5hbWUsIGxpbmUpWy0xXQogICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJCcmVha3BvaW50ICVkIGF0ICVzOiVkIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJwLm51bWJlciwgYnAuZmlsZSwgYnAubGluZSkpCgogICAgIyBUbyBiZSBvdmVycmlkZGVuIGluIGRlcml2ZWQgZGVidWdnZXJzCiAgICBkZWYgZGVmYXVsdEZpbGUoc2VsZik6CiAgICAgICAgIiIiUHJvZHVjZSBhIHJlYXNvbmFibGUgZGVmYXVsdC4iIiIKICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3VyZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lCiAgICAgICAgaWYgZmlsZW5hbWUgPT0gJzxzdHJpbmc+JyBhbmQgc2VsZi5tYWlucHlmaWxlOgogICAgICAgICAgICBmaWxlbmFtZSA9IHNlbGYubWFpbnB5ZmlsZQogICAgICAgIHJldHVybiBmaWxlbmFtZQoKICAgIGRvX2IgPSBkb19icmVhawoKICAgIGNvbXBsZXRlX2JyZWFrID0gX2NvbXBsZXRlX2xvY2F0aW9uCiAgICBjb21wbGV0ZV9iID0gX2NvbXBsZXRlX2xvY2F0aW9uCgogICAgZGVmIGRvX3RicmVhayhzZWxmLCBhcmcpOgogICAgICAgICIiInRicmVhayBbIChbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dIF0KICAgICAgICBTYW1lIGFyZ3VtZW50cyBhcyBicmVhaywgYnV0IHNldHMgYSB0ZW1wb3JhcnkgYnJlYWtwb2ludDogaXQKICAgICAgICBpcyBhdXRvbWF0aWNhbGx5IGRlbGV0ZWQgd2hlbiBmaXJzdCBoaXQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5kb19icmVhayhhcmcsIDEpCgogICAgY29tcGxldGVfdGJyZWFrID0gX2NvbXBsZXRlX2xvY2F0aW9uCgogICAgZGVmIGxpbmVpbmZvKHNlbGYsIGlkZW50aWZpZXIpOgogICAgICAgIGZhaWxlZCA9IChOb25lLCBOb25lLCBOb25lKQogICAgICAgICMgSW5wdXQgaXMgaWRlbnRpZmllciwgbWF5IGJlIGluIHNpbmdsZSBxdW90ZXMKICAgICAgICBpZHN0cmluZyA9IGlkZW50aWZpZXIuc3BsaXQoIiciKQogICAgICAgIGlmIGxlbihpZHN0cmluZykgPT0gMToKICAgICAgICAgICAgIyBub3QgaW4gc2luZ2xlIHF1b3RlcwogICAgICAgICAgICBpZCA9IGlkc3RyaW5nWzBdLnN0cmlwKCkKICAgICAgICBlbGlmIGxlbihpZHN0cmluZykgPT0gMzoKICAgICAgICAgICAgIyBxdW90ZWQKICAgICAgICAgICAgaWQgPSBpZHN0cmluZ1sxXS5zdHJpcCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGZhaWxlZAogICAgICAgIGlmIGlkID09ICcnOiByZXR1cm4gZmFpbGVkCiAgICAgICAgcGFydHMgPSBpZC5zcGxpdCgnLicpCiAgICAgICAgIyBQcm90ZWN0aW9uIGZvciBkZXJpdmVkIGRlYnVnZ2VycwogICAgICAgIGlmIHBhcnRzWzBdID09ICdzZWxmJzoKICAgICAgICAgICAgZGVsIHBhcnRzWzBdCiAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgPT0gMDoKICAgICAgICAgICAgICAgIHJldHVybiBmYWlsZWQKICAgICAgICAjIEJlc3QgZmlyc3QgZ3Vlc3MgYXQgZmlsZSB0byBsb29rIGF0CiAgICAgICAgZm5hbWUgPSBzZWxmLmRlZmF1bHRGaWxlKCkKICAgICAgICBpZiBsZW4ocGFydHMpID09IDE6CiAgICAgICAgICAgIGl0ZW0gPSBwYXJ0c1swXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgTW9yZSB0aGFuIG9uZSBwYXJ0LgogICAgICAgICAgICAjIEZpcnN0IGlzIG1vZHVsZSwgc2Vjb25kIGlzIG1ldGhvZC9jbGFzcwogICAgICAgICAgICBmID0gc2VsZi5sb29rdXBtb2R1bGUocGFydHNbMF0pCiAgICAgICAgICAgIGlmIGY6CiAgICAgICAgICAgICAgICBmbmFtZSA9IGYKICAgICAgICAgICAgaXRlbSA9IHBhcnRzWzFdCiAgICAgICAgYW5zd2VyID0gZmluZF9mdW5jdGlvbihpdGVtLCBmbmFtZSkKICAgICAgICByZXR1cm4gYW5zd2VyIG9yIGZhaWxlZAoKICAgIGRlZiBjaGVja2xpbmUoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6CiAgICAgICAgIiIiQ2hlY2sgd2hldGhlciBzcGVjaWZpZWQgbGluZSBzZWVtcyB0byBiZSBleGVjdXRhYmxlLgoKICAgICAgICBSZXR1cm4gYGxpbmVub2AgaWYgaXQgaXMsIDAgaWYgbm90IChlLmcuIGEgZG9jc3RyaW5nLCBjb21tZW50LCBibGFuawogICAgICAgIGxpbmUgb3IgRU9GKS4gV2FybmluZzogdGVzdGluZyBpcyBub3QgY29tcHJlaGVuc2l2ZS4KICAgICAgICAiIiIKICAgICAgICAjIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsYWJsZSBiZWZvcmUgc3RhcnRpbmcgZGVidWdnaW5nLCBzbyBkZWZhdWx0CiAgICAgICAgIyB0byAibm8gZ2xvYmFscyIgaWYgdGhlcmUgaXMgbm8gY3VycmVudCBmcmFtZQogICAgICAgIGZyYW1lID0gZ2V0YXR0cihzZWxmLCAnY3VyZnJhbWUnLCBOb25lKQogICAgICAgIGdsb2JzID0gZnJhbWUuZl9nbG9iYWxzIGlmIGZyYW1lIGVsc2UgTm9uZQogICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vLCBnbG9icykKICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdFbmQgb2YgZmlsZScpCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQogICAgICAgICMgRG9uJ3QgYWxsb3cgc2V0dGluZyBicmVha3BvaW50IGF0IGEgYmxhbmsgbGluZQogICAgICAgIGlmIChub3QgbGluZSBvciAobGluZVswXSA9PSAnIycpIG9yCiAgICAgICAgICAgICAobGluZVs6M10gPT0gJyIiIicpIG9yIGxpbmVbOjNdID09ICInJyciKToKICAgICAgICAgICAgc2VsZi5lcnJvcignQmxhbmsgb3IgY29tbWVudCcpCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgcmV0dXJuIGxpbmVubwoKICAgIGRlZiBkb19lbmFibGUoc2VsZiwgYXJnKToKICAgICAgICAiIiJlbmFibGUgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl0KICAgICAgICBFbmFibGVzIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mCiAgICAgICAgYnJlYWtwb2ludCBudW1iZXJzLgogICAgICAgICIiIgogICAgICAgIGFyZ3MgPSBhcmcuc3BsaXQoKQogICAgICAgIGZvciBpIGluIGFyZ3M6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGJwID0gc2VsZi5nZXRfYnBieW51bWJlcihpKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICBzZWxmLmVycm9yKGVycikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJwLmVuYWJsZSgpCiAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0VuYWJsZWQgJXMnICUgYnApCgogICAgY29tcGxldGVfZW5hYmxlID0gX2NvbXBsZXRlX2JwbnVtYmVyCgogICAgZGVmIGRvX2Rpc2FibGUoc2VsZiwgYXJnKToKICAgICAgICAiIiJkaXNhYmxlIGJwbnVtYmVyIFticG51bWJlciAuLi5dCiAgICAgICAgRGlzYWJsZXMgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YKICAgICAgICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdAogICAgICAgIGNhdXNlIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEKICAgICAgICBicmVha3BvaW50LCBpdCByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUKICAgICAgICAocmUtKWVuYWJsZWQuCiAgICAgICAgIiIiCiAgICAgICAgYXJncyA9IGFyZy5zcGxpdCgpCiAgICAgICAgZm9yIGkgaW4gYXJnczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYnAgPSBzZWxmLmdldF9icGJ5bnVtYmVyKGkpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoZXJyKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnAuZGlzYWJsZSgpCiAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0Rpc2FibGVkICVzJyAlIGJwKQoKICAgIGNvbXBsZXRlX2Rpc2FibGUgPSBfY29tcGxldGVfYnBudW1iZXIKCiAgICBkZWYgZG9fY29uZGl0aW9uKHNlbGYsIGFyZyk6CiAgICAgICAgIiIiY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dCiAgICAgICAgU2V0IGEgbmV3IGNvbmRpdGlvbiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2gKICAgICAgICBtdXN0IGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZgogICAgICAgIGNvbmRpdGlvbiBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwKICAgICAgICB0aGUgYnJlYWtwb2ludCBpcyBtYWRlIHVuY29uZGl0aW9uYWwuCiAgICAgICAgIiIiCiAgICAgICAgYXJncyA9IGFyZy5zcGxpdCgnICcsIDEpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjb25kID0gYXJnc1sxXQogICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICBjb25kID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgYnAgPSBzZWxmLmdldF9icGJ5bnVtYmVyKGFyZ3NbMF0uc3RyaXAoKSkKICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgc2VsZi5lcnJvcignQnJlYWtwb2ludCBudW1iZXIgZXhwZWN0ZWQnKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgc2VsZi5lcnJvcihlcnIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYnAuY29uZCA9IGNvbmQKICAgICAgICAgICAgaWYgbm90IGNvbmQ6CiAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0JyZWFrcG9pbnQgJWQgaXMgbm93IHVuY29uZGl0aW9uYWwuJyAlIGJwLm51bWJlcikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnTmV3IGNvbmRpdGlvbiBzZXQgZm9yIGJyZWFrcG9pbnQgJWQuJyAlIGJwLm51bWJlcikKCiAgICBjb21wbGV0ZV9jb25kaXRpb24gPSBfY29tcGxldGVfYnBudW1iZXIKCiAgICBkZWYgZG9faWdub3JlKHNlbGYsIGFyZyk6CiAgICAgICAgIiIiaWdub3JlIGJwbnVtYmVyIFtjb3VudF0KICAgICAgICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYKICAgICAgICBjb3VudCBpcyBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50CiAgICAgICAgYmVjb21lcyBhY3RpdmUgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLAogICAgICAgIHRoZSBjb3VudCBpcyBkZWNyZW1lbnRlZCBlYWNoIHRpbWUgdGhlIGJyZWFrcG9pbnQgaXMgcmVhY2hlZAogICAgICAgIGFuZCB0aGUgYnJlYWtwb2ludCBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkCiAgICAgICAgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLgogICAgICAgICIiIgogICAgICAgIGFyZ3MgPSBhcmcuc3BsaXQoKQogICAgICAgIHRyeToKICAgICAgICAgICAgY291bnQgPSBpbnQoYXJnc1sxXS5zdHJpcCgpKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgY291bnQgPSAwCiAgICAgICAgdHJ5OgogICAgICAgICAgICBicCA9IHNlbGYuZ2V0X2JwYnludW1iZXIoYXJnc1swXS5zdHJpcCgpKQogICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICBzZWxmLmVycm9yKCdCcmVha3BvaW50IG51bWJlciBleHBlY3RlZCcpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgogICAgICAgICAgICBzZWxmLmVycm9yKGVycikKICAgICAgICBlbHNlOgogICAgICAgICAgICBicC5pZ25vcmUgPSBjb3VudAogICAgICAgICAgICBpZiBjb3VudCA+IDA6CiAgICAgICAgICAgICAgICBpZiBjb3VudCA+IDE6CiAgICAgICAgICAgICAgICAgICAgY291bnRzdHIgPSAnJWQgY3Jvc3NpbmdzJyAlIGNvdW50CiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGNvdW50c3RyID0gJzEgY3Jvc3NpbmcnCiAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ1dpbGwgaWdub3JlIG5leHQgJXMgb2YgYnJlYWtwb2ludCAlZC4nICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY291bnRzdHIsIGJwLm51bWJlcikpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ1dpbGwgc3RvcCBuZXh0IHRpbWUgYnJlYWtwb2ludCAlZCBpcyByZWFjaGVkLicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGJwLm51bWJlcikKCiAgICBjb21wbGV0ZV9pZ25vcmUgPSBfY29tcGxldGVfYnBudW1iZXIKCiAgICBkZWYgZG9fY2xlYXIoc2VsZiwgYXJnKToKICAgICAgICAiIiJjbChlYXIpIGZpbGVuYW1lOmxpbmVub1xuY2woZWFyKSBbYnBudW1iZXIgW2JwbnVtYmVyLi4uXV0KICAgICAgICBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhcgogICAgICAgIHRob3NlIGJyZWFrcG9pbnRzLiAgV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0CiAgICAgICAgZmlyc3QgYXNrIGNvbmZpcm1hdGlvbikuICBXaXRoIGEgZmlsZW5hbWU6bGluZW5vIGFyZ3VtZW50LAogICAgICAgIGNsZWFyIGFsbCBicmVha3MgYXQgdGhhdCBsaW5lIGluIHRoYXQgZmlsZS4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgYXJnOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXBseSA9IGlucHV0KCdDbGVhciBhbGwgYnJlYWtzPyAnKQogICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgICAgICAgICByZXBseSA9ICdubycKICAgICAgICAgICAgcmVwbHkgPSByZXBseS5zdHJpcCgpLmxvd2VyKCkKICAgICAgICAgICAgaWYgcmVwbHkgaW4gKCd5JywgJ3llcycpOgogICAgICAgICAgICAgICAgYnBsaXN0ID0gW2JwIGZvciBicCBpbiBiZGIuQnJlYWtwb2ludC5icGJ5bnVtYmVyIGlmIGJwXQogICAgICAgICAgICAgICAgc2VsZi5jbGVhcl9hbGxfYnJlYWtzKCkKICAgICAgICAgICAgICAgIGZvciBicCBpbiBicGxpc3Q6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdEZWxldGVkICVzJyAlIGJwKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiAnOicgaW4gYXJnOgogICAgICAgICAgICAjIE1ha2Ugc3VyZSBpdCB3b3JrcyBmb3IgImNsZWFyIEM6XGZvb1xiYXIucHk6MTIiCiAgICAgICAgICAgIGkgPSBhcmcucmZpbmQoJzonKQogICAgICAgICAgICBmaWxlbmFtZSA9IGFyZ1s6aV0KICAgICAgICAgICAgYXJnID0gYXJnW2krMTpdCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGxpbmVubyA9IGludChhcmcpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgZXJyID0gIkludmFsaWQgbGluZSBudW1iZXIgKCVzKSIgJSBhcmcKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJwbGlzdCA9IHNlbGYuZ2V0X2JyZWFrcyhmaWxlbmFtZSwgbGluZW5vKVs6XQogICAgICAgICAgICAgICAgZXJyID0gc2VsZi5jbGVhcl9icmVhayhmaWxlbmFtZSwgbGluZW5vKQogICAgICAgICAgICBpZiBlcnI6CiAgICAgICAgICAgICAgICBzZWxmLmVycm9yKGVycikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGZvciBicCBpbiBicGxpc3Q6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdEZWxldGVkICVzJyAlIGJwKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBudW1iZXJsaXN0ID0gYXJnLnNwbGl0KCkKICAgICAgICBmb3IgaSBpbiBudW1iZXJsaXN0OgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBicCA9IHNlbGYuZ2V0X2JwYnludW1iZXIoaSkKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgc2VsZi5lcnJvcihlcnIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLmNsZWFyX2JwYnludW1iZXIoaSkKICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnRGVsZXRlZCAlcycgJSBicCkKICAgIGRvX2NsID0gZG9fY2xlYXIgIyAnYycgaXMgYWxyZWFkeSBhbiBhYmJyZXZpYXRpb24gZm9yICdjb250aW51ZScKCiAgICBjb21wbGV0ZV9jbGVhciA9IF9jb21wbGV0ZV9sb2NhdGlvbgogICAgY29tcGxldGVfY2wgPSBfY29tcGxldGVfbG9jYXRpb24KCiAgICBkZWYgZG9fd2hlcmUoc2VsZiwgYXJnKToKICAgICAgICAiIiJ3KGhlcmUpCiAgICAgICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4KICAgICAgICBBbiBhcnJvdyBpbmRpY2F0ZXMgdGhlICJjdXJyZW50IGZyYW1lIiwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUKICAgICAgICBjb250ZXh0IG9mIG1vc3QgY29tbWFuZHMuICAnYnQnIGlzIGFuIGFsaWFzIGZvciB0aGlzIGNvbW1hbmQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5wcmludF9zdGFja190cmFjZSgpCiAgICBkb193ID0gZG9fd2hlcmUKICAgIGRvX2J0ID0gZG9fd2hlcmUKCiAgICBkZWYgX3NlbGVjdF9mcmFtZShzZWxmLCBudW1iZXIpOgogICAgICAgIGFzc2VydCAwIDw9IG51bWJlciA8IGxlbihzZWxmLnN0YWNrKQogICAgICAgIHNlbGYuY3VyaW5kZXggPSBudW1iZXIKICAgICAgICBzZWxmLmN1cmZyYW1lID0gc2VsZi5zdGFja1tzZWxmLmN1cmluZGV4XVswXQogICAgICAgIHNlbGYuY3VyZnJhbWVfbG9jYWxzID0gc2VsZi5jdXJmcmFtZS5mX2xvY2FscwogICAgICAgIHNlbGYucHJpbnRfc3RhY2tfZW50cnkoc2VsZi5zdGFja1tzZWxmLmN1cmluZGV4XSkKICAgICAgICBzZWxmLmxpbmVubyA9IE5vbmUKCiAgICBkZWYgZG9fdXAoc2VsZiwgYXJnKToKICAgICAgICAiIiJ1KHApIFtjb3VudF0KICAgICAgICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lIGNvdW50IChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZQogICAgICAgIHN0YWNrIHRyYWNlICh0byBhbiBvbGRlciBmcmFtZSkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5jdXJpbmRleCA9PSAwOgogICAgICAgICAgICBzZWxmLmVycm9yKCdPbGRlc3QgZnJhbWUnKQogICAgICAgICAgICByZXR1cm4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGNvdW50ID0gaW50KGFyZyBvciAxKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBzZWxmLmVycm9yKCdJbnZhbGlkIGZyYW1lIGNvdW50ICglcyknICUgYXJnKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBjb3VudCA8IDA6CiAgICAgICAgICAgIG5ld2ZyYW1lID0gMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5ld2ZyYW1lID0gbWF4KDAsIHNlbGYuY3VyaW5kZXggLSBjb3VudCkKICAgICAgICBzZWxmLl9zZWxlY3RfZnJhbWUobmV3ZnJhbWUpCiAgICBkb191ID0gZG9fdXAKCiAgICBkZWYgZG9fZG93bihzZWxmLCBhcmcpOgogICAgICAgICIiImQob3duKSBbY291bnRdCiAgICAgICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSBjb3VudCAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZQogICAgICAgIHN0YWNrIHRyYWNlICh0byBhIG5ld2VyIGZyYW1lKS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmN1cmluZGV4ICsgMSA9PSBsZW4oc2VsZi5zdGFjayk6CiAgICAgICAgICAgIHNlbGYuZXJyb3IoJ05ld2VzdCBmcmFtZScpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgY291bnQgPSBpbnQoYXJnIG9yIDEpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHNlbGYuZXJyb3IoJ0ludmFsaWQgZnJhbWUgY291bnQgKCVzKScgJSBhcmcpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIGNvdW50IDwgMDoKICAgICAgICAgICAgbmV3ZnJhbWUgPSBsZW4oc2VsZi5zdGFjaykgLSAxCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbmV3ZnJhbWUgPSBtaW4obGVuKHNlbGYuc3RhY2spIC0gMSwgc2VsZi5jdXJpbmRleCArIGNvdW50KQogICAgICAgIHNlbGYuX3NlbGVjdF9mcmFtZShuZXdmcmFtZSkKICAgIGRvX2QgPSBkb19kb3duCgogICAgZGVmIGRvX3VudGlsKHNlbGYsIGFyZyk6CiAgICAgICAgIiIidW50KGlsKSBbbGluZW5vXQogICAgICAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEKICAgICAgICBudW1iZXIgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLiAgV2l0aCBhIGxpbmUKICAgICAgICBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlciBncmVhdGVyCiAgICAgICAgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW4KICAgICAgICB0aGUgY3VycmVudCBmcmFtZSByZXR1cm5zLgogICAgICAgICIiIgogICAgICAgIGlmIGFyZzoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbGluZW5vID0gaW50KGFyZykKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCdFcnJvciBpbiBhcmd1bWVudDogJXInICUgYXJnKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmIGxpbmVubyA8PSBzZWxmLmN1cmZyYW1lLmZfbGluZW5vOgogICAgICAgICAgICAgICAgc2VsZi5lcnJvcignInVudGlsIiBsaW5lIG51bWJlciBpcyBzbWFsbGVyIHRoYW4gY3VycmVudCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5lIG51bWJlcicpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICBlbHNlOgogICAgICAgICAgICBsaW5lbm8gPSBOb25lCiAgICAgICAgc2VsZi5zZXRfdW50aWwoc2VsZi5jdXJmcmFtZSwgbGluZW5vKQogICAgICAgIHJldHVybiAxCiAgICBkb191bnQgPSBkb191bnRpbAoKICAgIGRlZiBkb19zdGVwKHNlbGYsIGFyZyk6CiAgICAgICAgIiIicyh0ZXApCiAgICAgICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvbgogICAgICAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBpbiB0aGUgY3VycmVudAogICAgICAgIGZ1bmN0aW9uKS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnNldF9zdGVwKCkKICAgICAgICByZXR1cm4gMQogICAgZG9fcyA9IGRvX3N0ZXAKCiAgICBkZWYgZG9fbmV4dChzZWxmLCBhcmcpOgogICAgICAgICIiIm4oZXh0KQogICAgICAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uCiAgICAgICAgaXMgcmVhY2hlZCBvciBpdCByZXR1cm5zLgogICAgICAgICIiIgogICAgICAgIHNlbGYuc2V0X25leHQoc2VsZi5jdXJmcmFtZSkKICAgICAgICByZXR1cm4gMQogICAgZG9fbiA9IGRvX25leHQKCiAgICBkZWYgZG9fcnVuKHNlbGYsIGFyZyk6CiAgICAgICAgIiIicnVuIFthcmdzLi4uXQogICAgICAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIHB5dGhvbiBwcm9ncmFtLiBJZiBhIHN0cmluZyBpcyBzdXBwbGllZAogICAgICAgIGl0IGlzIHNwbGl0IHdpdGggInNobGV4IiwgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3CiAgICAgICAgc3lzLmFyZ3YuICBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9ucwogICAgICAgIGFyZSBwcmVzZXJ2ZWQuICAicmVzdGFydCIgaXMgYW4gYWxpYXMgZm9yICJydW4iLgogICAgICAgICIiIgogICAgICAgIGlmIGFyZzoKICAgICAgICAgICAgaW1wb3J0IHNobGV4CiAgICAgICAgICAgIGFyZ3YwID0gc3lzLmFyZ3ZbMDoxXQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzeXMuYXJndiA9IHNobGV4LnNwbGl0KGFyZykKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoJ0Nhbm5vdCBydW4gJXM6ICVzJyAlIChhcmcsIGUpKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHN5cy5hcmd2WzowXSA9IGFyZ3YwCiAgICAgICAgIyB0aGlzIGlzIGNhdWdodCBpbiB0aGUgbWFpbiBkZWJ1Z2dlciBsb29wCiAgICAgICAgcmFpc2UgUmVzdGFydAoKICAgIGRvX3Jlc3RhcnQgPSBkb19ydW4KCiAgICBkZWYgZG9fcmV0dXJuKHNlbGYsIGFyZyk6CiAgICAgICAgIiIicihldHVybikKICAgICAgICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnNldF9yZXR1cm4oc2VsZi5jdXJmcmFtZSkKICAgICAgICByZXR1cm4gMQogICAgZG9fciA9IGRvX3JldHVybgoKICAgIGRlZiBkb19jb250aW51ZShzZWxmLCBhcmcpOgogICAgICAgICIiImMob250KGludWUpKQogICAgICAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBzZWxmLm5vc2lnaW50OgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBQZGIuX3ByZXZpb3VzX3NpZ2ludF9oYW5kbGVyID0gXAogICAgICAgICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc2VsZi5zaWdpbnRfaGFuZGxlcikKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAjIFZhbHVlRXJyb3IgaGFwcGVucyB3aGVuIGRvX2NvbnRpbnVlKCkgaXMgaW52b2tlZCBmcm9tCiAgICAgICAgICAgICAgICAjIGEgbm9uLW1haW4gdGhyZWFkIGluIHdoaWNoIGNhc2Ugd2UganVzdCBjb250aW51ZSB3aXRob3V0CiAgICAgICAgICAgICAgICAjIFNJR0lOVCBzZXQuIFdvdWxkIHByaW50aW5nIGEgbWVzc2FnZSBoZXJlIChvbmNlKSBtYWtlCiAgICAgICAgICAgICAgICAjIHNlbnNlPwogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIHNlbGYuc2V0X2NvbnRpbnVlKCkKICAgICAgICByZXR1cm4gMQogICAgZG9fYyA9IGRvX2NvbnQgPSBkb19jb250aW51ZQoKICAgIGRlZiBkb19qdW1wKHNlbGYsIGFyZyk6CiAgICAgICAgIiIiaih1bXApIGxpbmVubwogICAgICAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluCiAgICAgICAgdGhlIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUKICAgICAgICBjb2RlIGFnYWluLCBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvbid0IHdhbnQKICAgICAgICB0byBydW4uCgogICAgICAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yCiAgICAgICAgaW5zdGFuY2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEKICAgICAgICBmb3IgbG9vcCBvciBvdXQgb2YgYSBmaW5hbGx5IGNsYXVzZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmN1cmluZGV4ICsgMSAhPSBsZW4oc2VsZi5zdGFjayk6CiAgICAgICAgICAgIHNlbGYuZXJyb3IoJ1lvdSBjYW4gb25seSBqdW1wIHdpdGhpbiB0aGUgYm90dG9tIGZyYW1lJykKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhcmcgPSBpbnQoYXJnKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBzZWxmLmVycm9yKCJUaGUgJ2p1bXAnIGNvbW1hbmQgcmVxdWlyZXMgYSBsaW5lIG51bWJlciIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIyBEbyB0aGUganVtcCwgZml4IHVwIG91ciBjb3B5IG9mIHRoZSBzdGFjaywgYW5kIGRpc3BsYXkgdGhlCiAgICAgICAgICAgICAgICAjIG5ldyBwb3NpdGlvbgogICAgICAgICAgICAgICAgc2VsZi5jdXJmcmFtZS5mX2xpbmVubyA9IGFyZwogICAgICAgICAgICAgICAgc2VsZi5zdGFja1tzZWxmLmN1cmluZGV4XSA9IHNlbGYuc3RhY2tbc2VsZi5jdXJpbmRleF1bMF0sIGFyZwogICAgICAgICAgICAgICAgc2VsZi5wcmludF9zdGFja19lbnRyeShzZWxmLnN0YWNrW3NlbGYuY3VyaW5kZXhdKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgc2VsZi5lcnJvcignSnVtcCBmYWlsZWQ6ICVzJyAlIGUpCiAgICBkb19qID0gZG9fanVtcAoKICAgIGRlZiBkb19kZWJ1ZyhzZWxmLCBhcmcpOgogICAgICAgICIiImRlYnVnIGNvZGUKICAgICAgICBFbnRlciBhIHJlY3Vyc2l2ZSBkZWJ1Z2dlciB0aGF0IHN0ZXBzIHRocm91Z2ggdGhlIGNvZGUKICAgICAgICBhcmd1bWVudCAod2hpY2ggaXMgYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gb3Igc3RhdGVtZW50IHRvIGJlCiAgICAgICAgZXhlY3V0ZWQgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQpLgogICAgICAgICIiIgogICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQogICAgICAgIGdsb2JhbHMgPSBzZWxmLmN1cmZyYW1lLmZfZ2xvYmFscwogICAgICAgIGxvY2FscyA9IHNlbGYuY3VyZnJhbWVfbG9jYWxzCiAgICAgICAgcCA9IFBkYihzZWxmLmNvbXBsZXRla2V5LCBzZWxmLnN0ZGluLCBzZWxmLnN0ZG91dCkKICAgICAgICBwLnByb21wdCA9ICIoJXMpICIgJSBzZWxmLnByb21wdC5zdHJpcCgpCiAgICAgICAgc2VsZi5tZXNzYWdlKCJFTlRFUklORyBSRUNVUlNJVkUgREVCVUdHRVIiKQogICAgICAgIHRyeToKICAgICAgICAgICAgc3lzLmNhbGxfdHJhY2luZyhwLnJ1biwgKGFyZywgZ2xvYmFscywgbG9jYWxzKSkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBzZWxmLl9lcnJvcl9leGMoKQogICAgICAgIHNlbGYubWVzc2FnZSgiTEVBVklORyBSRUNVUlNJVkUgREVCVUdHRVIiKQogICAgICAgIHN5cy5zZXR0cmFjZShzZWxmLnRyYWNlX2Rpc3BhdGNoKQogICAgICAgIHNlbGYubGFzdGNtZCA9IHAubGFzdGNtZAoKICAgIGNvbXBsZXRlX2RlYnVnID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KCiAgICBkZWYgZG9fcXVpdChzZWxmLCBhcmcpOgogICAgICAgICIiInEodWl0KVxuZXhpdAogICAgICAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdXNlcl9yZXF1ZXN0ZWRfcXVpdCA9IFRydWUKICAgICAgICBzZWxmLnNldF9xdWl0KCkKICAgICAgICByZXR1cm4gMQoKICAgIGRvX3EgPSBkb19xdWl0CiAgICBkb19leGl0ID0gZG9fcXVpdAoKICAgIGRlZiBkb19FT0Yoc2VsZiwgYXJnKToKICAgICAgICAiIiJFT0YKICAgICAgICBIYW5kbGVzIHRoZSByZWNlaXB0IG9mIEVPRiBhcyBhIGNvbW1hbmQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5tZXNzYWdlKCcnKQogICAgICAgIHNlbGYuX3VzZXJfcmVxdWVzdGVkX3F1aXQgPSBUcnVlCiAgICAgICAgc2VsZi5zZXRfcXVpdCgpCiAgICAgICAgcmV0dXJuIDEKCiAgICBkZWYgZG9fYXJncyhzZWxmLCBhcmcpOgogICAgICAgICIiImEocmdzKQogICAgICAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgogICAgICAgICIiIgogICAgICAgIGNvID0gc2VsZi5jdXJmcmFtZS5mX2NvZGUKICAgICAgICBkaWN0ID0gc2VsZi5jdXJmcmFtZV9sb2NhbHMKICAgICAgICBuID0gY28uY29fYXJnY291bnQgKyBjby5jb19rd29ubHlhcmdjb3VudAogICAgICAgIGlmIGNvLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19WQVJBUkdTOiBuID0gbisxCiAgICAgICAgaWYgY28uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX1ZBUktFWVdPUkRTOiBuID0gbisxCiAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgICAgIG5hbWUgPSBjby5jb192YXJuYW1lc1tpXQogICAgICAgICAgICBpZiBuYW1lIGluIGRpY3Q6CiAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJyVzID0gJXInICUgKG5hbWUsIGRpY3RbbmFtZV0pKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCclcyA9ICoqKiB1bmRlZmluZWQgKioqJyAlIChuYW1lLCkpCiAgICBkb19hID0gZG9fYXJncwoKICAgIGRlZiBkb19yZXR2YWwoc2VsZiwgYXJnKToKICAgICAgICAiIiJyZXR2YWwKICAgICAgICBQcmludCB0aGUgcmV0dXJuIHZhbHVlIGZvciB0aGUgbGFzdCByZXR1cm4gb2YgYSBmdW5jdGlvbi4KICAgICAgICAiIiIKICAgICAgICBpZiAnX19yZXR1cm5fXycgaW4gc2VsZi5jdXJmcmFtZV9sb2NhbHM6CiAgICAgICAgICAgIHNlbGYubWVzc2FnZShyZXByKHNlbGYuY3VyZnJhbWVfbG9jYWxzWydfX3JldHVybl9fJ10pKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuZXJyb3IoJ05vdCB5ZXQgcmV0dXJuZWQhJykKICAgIGRvX3J2ID0gZG9fcmV0dmFsCgogICAgZGVmIF9nZXR2YWwoc2VsZiwgYXJnKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBldmFsKGFyZywgc2VsZi5jdXJmcmFtZS5mX2dsb2JhbHMsIHNlbGYuY3VyZnJhbWVfbG9jYWxzKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgc2VsZi5fZXJyb3JfZXhjKCkKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgX2dldHZhbF9leGNlcHQoc2VsZiwgYXJnLCBmcmFtZT1Ob25lKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGZyYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gZXZhbChhcmcsIHNlbGYuY3VyZnJhbWUuZl9nbG9iYWxzLCBzZWxmLmN1cmZyYW1lX2xvY2FscykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBldmFsKGFyZywgZnJhbWUuZl9nbG9iYWxzLCBmcmFtZS5mX2xvY2FscykKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKClbOjJdCiAgICAgICAgICAgIGVyciA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKmV4Y19pbmZvKVstMV0uc3RyaXAoKQogICAgICAgICAgICByZXR1cm4gX3JzdHIoJyoqIHJhaXNlZCAlcyAqKicgJSBlcnIpCgogICAgZGVmIF9lcnJvcl9leGMoc2VsZik6CiAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKVs6Ml0KICAgICAgICBzZWxmLmVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKmV4Y19pbmZvKVstMV0uc3RyaXAoKSkKCiAgICBkZWYgX21zZ192YWxfZnVuYyhzZWxmLCBhcmcsIGZ1bmMpOgogICAgICAgIHRyeToKICAgICAgICAgICAgdmFsID0gc2VsZi5fZ2V0dmFsKGFyZykKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHJldHVybiAgIyBfZ2V0dmFsKCkgaGFzIGRpc3BsYXllZCB0aGUgZXJyb3IKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYubWVzc2FnZShmdW5jKHZhbCkpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBzZWxmLl9lcnJvcl9leGMoKQoKICAgIGRlZiBkb19wKHNlbGYsIGFyZyk6CiAgICAgICAgIiIicCBleHByZXNzaW9uCiAgICAgICAgUHJpbnQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX21zZ192YWxfZnVuYyhhcmcsIHJlcHIpCgogICAgZGVmIGRvX3BwKHNlbGYsIGFyZyk6CiAgICAgICAgIiIicHAgZXhwcmVzc2lvbgogICAgICAgIFByZXR0eS1wcmludCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fbXNnX3ZhbF9mdW5jKGFyZywgcHByaW50LnBmb3JtYXQpCgogICAgY29tcGxldGVfcHJpbnQgPSBfY29tcGxldGVfZXhwcmVzc2lvbgogICAgY29tcGxldGVfcCA9IF9jb21wbGV0ZV9leHByZXNzaW9uCiAgICBjb21wbGV0ZV9wcCA9IF9jb21wbGV0ZV9leHByZXNzaW9uCgogICAgZGVmIGRvX2xpc3Qoc2VsZiwgYXJnKToKICAgICAgICAiIiJsKGlzdCkgW2ZpcnN0IFssbGFzdF0gfCAuXQoKICAgICAgICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsCiAgICAgICAgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMKICAgICAgICBsaXN0aW5nLiAgV2l0aCAuIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudAogICAgICAgIGxpbmUuICBXaXRoIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBzdGFydGluZyBhdCB0aGF0IGxpbmUuCiAgICAgICAgV2l0aCB0d28gYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZAogICAgICAgIGFyZ3VtZW50IGlzIGxlc3MgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGEgY291bnQuCgogICAgICAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5ICItPiIuCiAgICAgICAgSWYgYW4gZXhjZXB0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLCB0aGUgbGluZSB3aGVyZSB0aGUKICAgICAgICBleGNlcHRpb24gd2FzIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5CiAgICAgICAgIj4+IiwgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5sYXN0Y21kID0gJ2xpc3QnCiAgICAgICAgbGFzdCA9IE5vbmUKICAgICAgICBpZiBhcmcgYW5kIGFyZyAhPSAnLic6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmICcsJyBpbiBhcmc6CiAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBhcmcuc3BsaXQoJywnKQogICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gaW50KGZpcnN0LnN0cmlwKCkpCiAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGludChsYXN0LnN0cmlwKCkpCiAgICAgICAgICAgICAgICAgICAgaWYgbGFzdCA8IGZpcnN0OgogICAgICAgICAgICAgICAgICAgICAgICAjIGFzc3VtZSBpdCdzIGEgY291bnQKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGZpcnN0ICsgbGFzdAogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGludChhcmcuc3RyaXAoKSkKICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IG1heCgxLCBmaXJzdCAtIDUpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgc2VsZi5lcnJvcignRXJyb3IgaW4gYXJndW1lbnQ6ICVyJyAlIGFyZykKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIGVsaWYgc2VsZi5saW5lbm8gaXMgTm9uZSBvciBhcmcgPT0gJy4nOgogICAgICAgICAgICBmaXJzdCA9IG1heCgxLCBzZWxmLmN1cmZyYW1lLmZfbGluZW5vIC0gNSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBmaXJzdCA9IHNlbGYubGluZW5vICsgMQogICAgICAgIGlmIGxhc3QgaXMgTm9uZToKICAgICAgICAgICAgbGFzdCA9IGZpcnN0ICsgMTAKICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3VyZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lCiAgICAgICAgIyBnaC05MzY5Njogc3RkbGliIGZyb3plbiBtb2R1bGVzIHByb3ZpZGUgYSB1c2VmdWwgX19maWxlX18KICAgICAgICAjIHRoaXMgd29ya2Fyb3VuZCBjYW4gYmUgcmVtb3ZlZCB3aXRoIHRoZSBjbG9zdXJlIG9mIGdoLTg5ODE1CiAgICAgICAgaWYgZmlsZW5hbWUuc3RhcnRzd2l0aCgiPGZyb3plbiIpOgogICAgICAgICAgICB0bXAgPSBzZWxmLmN1cmZyYW1lLmZfZ2xvYmFscy5nZXQoIl9fZmlsZV9fIikKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0bXAsIHN0cik6CiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHRtcAogICAgICAgIGJyZWFrbGlzdCA9IHNlbGYuZ2V0X2ZpbGVfYnJlYWtzKGZpbGVuYW1lKQogICAgICAgIHRyeToKICAgICAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoZmlsZW5hbWUsIHNlbGYuY3VyZnJhbWUuZl9nbG9iYWxzKQogICAgICAgICAgICBzZWxmLl9wcmludF9saW5lcyhsaW5lc1tmaXJzdC0xOmxhc3RdLCBmaXJzdCwgYnJlYWtsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cmZyYW1lKQogICAgICAgICAgICBzZWxmLmxpbmVubyA9IG1pbihsYXN0LCBsZW4obGluZXMpKQogICAgICAgICAgICBpZiBsZW4obGluZXMpIDwgbGFzdDoKICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnW0VPRl0nKQogICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgcGFzcwogICAgZG9fbCA9IGRvX2xpc3QKCiAgICBkZWYgZG9fbG9uZ2xpc3Qoc2VsZiwgYXJnKToKICAgICAgICAiIiJsb25nbGlzdCB8IGxsCiAgICAgICAgTGlzdCB0aGUgd2hvbGUgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLgogICAgICAgICIiIgogICAgICAgIGZpbGVuYW1lID0gc2VsZi5jdXJmcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUKICAgICAgICBicmVha2xpc3QgPSBzZWxmLmdldF9maWxlX2JyZWFrcyhmaWxlbmFtZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGxpbmVzLCBsaW5lbm8gPSBnZXRzb3VyY2VsaW5lcyhzZWxmLmN1cmZyYW1lKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgc2VsZi5lcnJvcihlcnIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX3ByaW50X2xpbmVzKGxpbmVzLCBsaW5lbm8sIGJyZWFrbGlzdCwgc2VsZi5jdXJmcmFtZSkKICAgIGRvX2xsID0gZG9fbG9uZ2xpc3QKCiAgICBkZWYgZG9fc291cmNlKHNlbGYsIGFyZyk6CiAgICAgICAgIiIic291cmNlIGV4cHJlc3Npb24KICAgICAgICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgb2JqID0gc2VsZi5fZ2V0dmFsKGFyZykKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgbGluZXMsIGxpbmVubyA9IGdldHNvdXJjZWxpbmVzKG9iaikKICAgICAgICBleGNlcHQgKE9TRXJyb3IsIFR5cGVFcnJvcikgYXMgZXJyOgogICAgICAgICAgICBzZWxmLmVycm9yKGVycikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fcHJpbnRfbGluZXMobGluZXMsIGxpbmVubykKCiAgICBjb21wbGV0ZV9zb3VyY2UgPSBfY29tcGxldGVfZXhwcmVzc2lvbgoKICAgIGRlZiBfcHJpbnRfbGluZXMoc2VsZiwgbGluZXMsIHN0YXJ0LCBicmVha3M9KCksIGZyYW1lPU5vbmUpOgogICAgICAgICIiIlByaW50IGEgcmFuZ2Ugb2YgbGluZXMuIiIiCiAgICAgICAgaWYgZnJhbWU6CiAgICAgICAgICAgIGN1cnJlbnRfbGluZW5vID0gZnJhbWUuZl9saW5lbm8KICAgICAgICAgICAgZXhjX2xpbmVubyA9IHNlbGYudGJfbGluZW5vLmdldChmcmFtZSwgLTEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY3VycmVudF9saW5lbm8gPSBleGNfbGluZW5vID0gLTEKICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcywgc3RhcnQpOgogICAgICAgICAgICBzID0gc3RyKGxpbmVubykucmp1c3QoMykKICAgICAgICAgICAgaWYgbGVuKHMpIDwgNDoKICAgICAgICAgICAgICAgIHMgKz0gJyAnCiAgICAgICAgICAgIGlmIGxpbmVubyBpbiBicmVha3M6CiAgICAgICAgICAgICAgICBzICs9ICdCJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcyArPSAnICcKICAgICAgICAgICAgaWYgbGluZW5vID09IGN1cnJlbnRfbGluZW5vOgogICAgICAgICAgICAgICAgcyArPSAnLT4nCiAgICAgICAgICAgIGVsaWYgbGluZW5vID09IGV4Y19saW5lbm86CiAgICAgICAgICAgICAgICBzICs9ICc+PicKICAgICAgICAgICAgc2VsZi5tZXNzYWdlKHMgKyAnXHQnICsgbGluZS5yc3RyaXAoKSkKCiAgICBkZWYgZG9fd2hhdGlzKHNlbGYsIGFyZyk6CiAgICAgICAgIiIid2hhdGlzIGFyZwogICAgICAgIFByaW50IHRoZSB0eXBlIG9mIHRoZSBhcmd1bWVudC4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZ2V0dmFsKGFyZykKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICMgX2dldHZhbCgpIGFscmVhZHkgcHJpbnRlZCB0aGUgZXJyb3IKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgY29kZSA9IE5vbmUKICAgICAgICAjIElzIGl0IGFuIGluc3RhbmNlIG1ldGhvZD8KICAgICAgICB0cnk6CiAgICAgICAgICAgIGNvZGUgPSB2YWx1ZS5fX2Z1bmNfXy5fX2NvZGVfXwogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHBhc3MKICAgICAgICBpZiBjb2RlOgogICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ01ldGhvZCAlcycgJSBjb2RlLmNvX25hbWUpCiAgICAgICAgICAgIHJldHVybgogICAgICAgICMgSXMgaXQgYSBmdW5jdGlvbj8KICAgICAgICB0cnk6CiAgICAgICAgICAgIGNvZGUgPSB2YWx1ZS5fX2NvZGVfXwogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHBhc3MKICAgICAgICBpZiBjb2RlOgogICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0Z1bmN0aW9uICVzJyAlIGNvZGUuY29fbmFtZSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIyBJcyBpdCBhIGNsYXNzPwogICAgICAgIGlmIHZhbHVlLl9fY2xhc3NfXyBpcyB0eXBlOgogICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0NsYXNzICVzLiVzJyAlICh2YWx1ZS5fX21vZHVsZV9fLCB2YWx1ZS5fX3F1YWxuYW1lX18pKQogICAgICAgICAgICByZXR1cm4KICAgICAgICAjIE5vbmUgb2YgdGhlIGFib3ZlLi4uCiAgICAgICAgc2VsZi5tZXNzYWdlKHR5cGUodmFsdWUpKQoKICAgIGNvbXBsZXRlX3doYXRpcyA9IF9jb21wbGV0ZV9leHByZXNzaW9uCgogICAgZGVmIGRvX2Rpc3BsYXkoc2VsZiwgYXJnKToKICAgICAgICAiIiJkaXNwbGF5IFtleHByZXNzaW9uXQoKICAgICAgICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWUgZXhlY3V0aW9uCiAgICAgICAgc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuCgogICAgICAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnQgZnJhbWUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGFyZzoKICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdDdXJyZW50bHkgZGlzcGxheWluZzonKQogICAgICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLmRpc3BsYXlpbmcuZ2V0KHNlbGYuY3VyZnJhbWUsIHt9KS5pdGVtcygpOgogICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCclczogJXInICUgaXRlbSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB2YWwgPSBzZWxmLl9nZXR2YWxfZXhjZXB0KGFyZykKICAgICAgICAgICAgc2VsZi5kaXNwbGF5aW5nLnNldGRlZmF1bHQoc2VsZi5jdXJmcmFtZSwge30pW2FyZ10gPSB2YWwKICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdkaXNwbGF5ICVzOiAlcicgJSAoYXJnLCB2YWwpKQoKICAgIGNvbXBsZXRlX2Rpc3BsYXkgPSBfY29tcGxldGVfZXhwcmVzc2lvbgoKICAgIGRlZiBkb191bmRpc3BsYXkoc2VsZiwgYXJnKToKICAgICAgICAiIiJ1bmRpc3BsYXkgW2V4cHJlc3Npb25dCgogICAgICAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLgoKICAgICAgICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudCBmcmFtZS4KICAgICAgICAiIiIKICAgICAgICBpZiBhcmc6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGRlbCBzZWxmLmRpc3BsYXlpbmcuZ2V0KHNlbGYuY3VyZnJhbWUsIHt9KVthcmddCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoJ25vdCBkaXNwbGF5aW5nICVzJyAlIGFyZykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmRpc3BsYXlpbmcucG9wKHNlbGYuY3VyZnJhbWUsIE5vbmUpCgogICAgZGVmIGNvbXBsZXRlX3VuZGlzcGxheShzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CiAgICAgICAgcmV0dXJuIFtlIGZvciBlIGluIHNlbGYuZGlzcGxheWluZy5nZXQoc2VsZi5jdXJmcmFtZSwge30pCiAgICAgICAgICAgICAgICBpZiBlLnN0YXJ0c3dpdGgodGV4dCldCgogICAgZGVmIGRvX2ludGVyYWN0KHNlbGYsIGFyZyk6CiAgICAgICAgIiIiaW50ZXJhY3QKCiAgICAgICAgU3RhcnQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgd2hvc2UgZ2xvYmFsIG5hbWVzcGFjZQogICAgICAgIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzIGZvdW5kIGluIHRoZSBjdXJyZW50IHNjb3BlLgogICAgICAgICIiIgogICAgICAgIG5zID0geyoqc2VsZi5jdXJmcmFtZS5mX2dsb2JhbHMsICoqc2VsZi5jdXJmcmFtZV9sb2NhbHN9CiAgICAgICAgY29kZS5pbnRlcmFjdCgiKmludGVyYWN0aXZlKiIsIGxvY2FsPW5zKQoKICAgIGRlZiBkb19hbGlhcyhzZWxmLCBhcmcpOgogICAgICAgICIiImFsaWFzIFtuYW1lIFtjb21tYW5kIFtwYXJhbWV0ZXIgcGFyYW1ldGVyIC4uLl0gXV0KICAgICAgICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICduYW1lJyB0aGF0IGV4ZWN1dGVzICdjb21tYW5kJy4gIFRoZQogICAgICAgIGNvbW1hbmQgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZQogICAgICAgIHBhcmFtZXRlcnMgY2FuIGJlIGluZGljYXRlZCBieSAlMSwgJTIsIGFuZCBzbyBvbiwgd2hpbGUgJSogaXMKICAgICAgICByZXBsYWNlZCBieSBhbGwgdGhlIHBhcmFtZXRlcnMuICBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUKICAgICAgICBjdXJyZW50IGFsaWFzIGZvciBuYW1lIGlzIHNob3duLiBJZiBubyBuYW1lIGlzIGdpdmVuLCBhbGwKICAgICAgICBhbGlhc2VzIGFyZSBsaXN0ZWQuCgogICAgICAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUKICAgICAgICBsZWdhbGx5IHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSEgIFlvdSAqY2FuKiBvdmVycmlkZQogICAgICAgIGludGVybmFsIHBkYiBjb21tYW5kcyB3aXRoIGFsaWFzZXMhICBUaG9zZSBpbnRlcm5hbCBjb21tYW5kcwogICAgICAgIGFyZSB0aGVuIGhpZGRlbiB1bnRpbCB0aGUgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzCiAgICAgICAgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwKICAgICAgICBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdCBhbG9uZS4KCiAgICAgICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4KICAgICAgICBwbGFjZWQgaW4gdGhlIC5wZGJyYyBmaWxlKToKCiAgICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgKHVzYWdlICJwaSBjbGFzc0luc3QiKQogICAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogcHJpbnQoIiUxLiIsaywiPSIsJTEuX19kaWN0X19ba10pCiAgICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZgogICAgICAgIGFsaWFzIHBzIHBpIHNlbGYKICAgICAgICAiIiIKICAgICAgICBhcmdzID0gYXJnLnNwbGl0KCkKICAgICAgICBpZiBsZW4oYXJncykgPT0gMDoKICAgICAgICAgICAga2V5cyA9IHNvcnRlZChzZWxmLmFsaWFzZXMua2V5cygpKQogICAgICAgICAgICBmb3IgYWxpYXMgaW4ga2V5czoKICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiJXMgPSAlcyIgJSAoYWxpYXMsIHNlbGYuYWxpYXNlc1thbGlhc10pKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBhcmdzWzBdIGluIHNlbGYuYWxpYXNlcyBhbmQgbGVuKGFyZ3MpID09IDE6CiAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiJXMgPSAlcyIgJSAoYXJnc1swXSwgc2VsZi5hbGlhc2VzW2FyZ3NbMF1dKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmFsaWFzZXNbYXJnc1swXV0gPSAnICcuam9pbihhcmdzWzE6XSkKCiAgICBkZWYgZG9fdW5hbGlhcyhzZWxmLCBhcmcpOgogICAgICAgICIiInVuYWxpYXMgbmFtZQogICAgICAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLgogICAgICAgICIiIgogICAgICAgIGFyZ3MgPSBhcmcuc3BsaXQoKQogICAgICAgIGlmIGxlbihhcmdzKSA9PSAwOiByZXR1cm4KICAgICAgICBpZiBhcmdzWzBdIGluIHNlbGYuYWxpYXNlczoKICAgICAgICAgICAgZGVsIHNlbGYuYWxpYXNlc1thcmdzWzBdXQoKICAgIGRlZiBjb21wbGV0ZV91bmFsaWFzKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKICAgICAgICByZXR1cm4gW2EgZm9yIGEgaW4gc2VsZi5hbGlhc2VzIGlmIGEuc3RhcnRzd2l0aCh0ZXh0KV0KCiAgICAjIExpc3Qgb2YgYWxsIHRoZSBjb21tYW5kcyBtYWtpbmcgdGhlIHByb2dyYW0gcmVzdW1lIGV4ZWN1dGlvbi4KICAgIGNvbW1hbmRzX3Jlc3VtaW5nID0gWydkb19jb250aW51ZScsICdkb19zdGVwJywgJ2RvX25leHQnLCAnZG9fcmV0dXJuJywKICAgICAgICAgICAgICAgICAgICAgICAgICdkb19xdWl0JywgJ2RvX2p1bXAnXQoKICAgICMgUHJpbnQgYSB0cmFjZWJhY2sgc3RhcnRpbmcgYXQgdGhlIHRvcCBzdGFjayBmcmFtZS4KICAgICMgVGhlIG1vc3QgcmVjZW50bHkgZW50ZXJlZCBmcmFtZSBpcyBwcmludGVkIGxhc3Q7CiAgICAjIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gZGJ4IGFuZCBnZGIsIGJ1dCBjb25zaXN0ZW50IHdpdGgKICAgICMgdGhlIFB5dGhvbiBpbnRlcnByZXRlcidzIHN0YWNrIHRyYWNlLgogICAgIyBJdCBpcyBhbHNvIGNvbnNpc3RlbnQgd2l0aCB0aGUgdXAvZG93biBjb21tYW5kcyAod2hpY2ggYXJlCiAgICAjIGNvbXBhdGlibGUgd2l0aCBkYnggYW5kIGdkYjogdXAgbW92ZXMgdG93YXJkcyAnbWFpbigpJwogICAgIyBhbmQgZG93biBtb3ZlcyB0b3dhcmRzIHRoZSBtb3N0IHJlY2VudCBzdGFjayBmcmFtZSkuCgogICAgZGVmIHByaW50X3N0YWNrX3RyYWNlKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgZm9yIGZyYW1lX2xpbmVubyBpbiBzZWxmLnN0YWNrOgogICAgICAgICAgICAgICAgc2VsZi5wcmludF9zdGFja19lbnRyeShmcmFtZV9saW5lbm8pCiAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICBwYXNzCgogICAgZGVmIHByaW50X3N0YWNrX2VudHJ5KHNlbGYsIGZyYW1lX2xpbmVubywgcHJvbXB0X3ByZWZpeD1saW5lX3ByZWZpeCk6CiAgICAgICAgZnJhbWUsIGxpbmVubyA9IGZyYW1lX2xpbmVubwogICAgICAgIGlmIGZyYW1lIGlzIHNlbGYuY3VyZnJhbWU6CiAgICAgICAgICAgIHByZWZpeCA9ICc+ICcKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmVmaXggPSAnICAnCiAgICAgICAgc2VsZi5tZXNzYWdlKHByZWZpeCArCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0X3N0YWNrX2VudHJ5KGZyYW1lX2xpbmVubywgcHJvbXB0X3ByZWZpeCkpCgogICAgIyBQcm92aWRlIGhlbHAKCiAgICBkZWYgZG9faGVscChzZWxmLCBhcmcpOgogICAgICAgICIiImgoZWxwKQogICAgICAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4KICAgICAgICBXaXRoIGEgY29tbWFuZCBuYW1lIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4KICAgICAgICAiaGVscCBwZGIiIHNob3dzIHRoZSBmdWxsIHBkYiBkb2N1bWVudGF0aW9uLgogICAgICAgICJoZWxwIGV4ZWMiIGdpdmVzIGhlbHAgb24gdGhlICEgY29tbWFuZC4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgYXJnOgogICAgICAgICAgICByZXR1cm4gY21kLkNtZC5kb19oZWxwKHNlbGYsIGFyZykKICAgICAgICB0cnk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHRvcGljID0gZ2V0YXR0cihzZWxmLCAnaGVscF8nICsgYXJnKQogICAgICAgICAgICAgICAgcmV0dXJuIHRvcGljKCkKICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgY29tbWFuZCA9IGdldGF0dHIoc2VsZiwgJ2RvXycgKyBhcmcpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBzZWxmLmVycm9yKCdObyBoZWxwIGZvciAlcicgJSBhcmcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplID49IDI6CiAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCdObyBoZWxwIGZvciAlcjsgcGxlYXNlIGRvIG5vdCBydW4gUHl0aG9uIHdpdGggLU9PICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lmIHlvdSBuZWVkIGNvbW1hbmQgaGVscCcgJSBhcmcpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgaWYgY29tbWFuZC5fX2RvY19fIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCdObyBoZWxwIGZvciAlcjsgX19kb2NfXyBzdHJpbmcgbWlzc2luZycgJSBhcmcpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgc2VsZi5tZXNzYWdlKGNvbW1hbmQuX19kb2NfXy5yc3RyaXAoKSkKCiAgICBkb19oID0gZG9faGVscAoKICAgIGRlZiBoZWxwX2V4ZWMoc2VsZik6CiAgICAgICAgIiIiKCEpIHN0YXRlbWVudAogICAgICAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgc3RhdGVtZW50IGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50CiAgICAgICAgc3RhY2sgZnJhbWUuICBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZQogICAgICAgIGZpcnN0IHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8KICAgICAgICBhc3NpZ24gdG8gYSBnbG9iYWwgdmFyaWFibGUgeW91IG11c3QgYWx3YXlzIHByZWZpeCB0aGUgY29tbWFuZAogICAgICAgIHdpdGggYSAnZ2xvYmFsJyBjb21tYW5kLCBlLmcuOgogICAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFsnLWwnXQogICAgICAgIChQZGIpCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5tZXNzYWdlKChzZWxmLmhlbHBfZXhlYy5fX2RvY19fIG9yICcnKS5zdHJpcCgpKQoKICAgIGRlZiBoZWxwX3BkYihzZWxmKToKICAgICAgICBoZWxwKCkKCiAgICAjIG90aGVyIGhlbHBlciBmdW5jdGlvbnMKCiAgICBkZWYgbG9va3VwbW9kdWxlKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAiIiJIZWxwZXIgZnVuY3Rpb24gZm9yIGJyZWFrL2NsZWFyIHBhcnNpbmcgLS0gbWF5IGJlIG92ZXJyaWRkZW4uCgogICAgICAgIGxvb2t1cG1vZHVsZSgpIHRyYW5zbGF0ZXMgKHBvc3NpYmx5IGluY29tcGxldGUpIGZpbGUgb3IgbW9kdWxlIG5hbWUKICAgICAgICBpbnRvIGFuIGFic29sdXRlIGZpbGUgbmFtZS4KICAgICAgICAiIiIKICAgICAgICBpZiBvcy5wYXRoLmlzYWJzKGZpbGVuYW1lKSBhbmQgIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgICAgZiA9IG9zLnBhdGguam9pbihzeXMucGF0aFswXSwgZmlsZW5hbWUpCiAgICAgICAgaWYgIG9zLnBhdGguZXhpc3RzKGYpIGFuZCBzZWxmLmNhbm9uaWMoZikgPT0gc2VsZi5tYWlucHlmaWxlOgogICAgICAgICAgICByZXR1cm4gZgogICAgICAgIHJvb3QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCiAgICAgICAgaWYgZXh0ID09ICcnOgogICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lICsgJy5weScKICAgICAgICBpZiBvcy5wYXRoLmlzYWJzKGZpbGVuYW1lKToKICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgICAgZm9yIGRpcm5hbWUgaW4gc3lzLnBhdGg6CiAgICAgICAgICAgIHdoaWxlIG9zLnBhdGguaXNsaW5rKGRpcm5hbWUpOgogICAgICAgICAgICAgICAgZGlybmFtZSA9IG9zLnJlYWRsaW5rKGRpcm5hbWUpCiAgICAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGZpbGVuYW1lKQogICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmdWxsbmFtZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gZnVsbG5hbWUKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBfcnVuKHNlbGYsIHRhcmdldDogVW5pb25bX01vZHVsZVRhcmdldCwgX1NjcmlwdFRhcmdldF0pOgogICAgICAgICMgV2hlbiBiZGIgc2V0cyB0cmFjaW5nLCBhIG51bWJlciBvZiBjYWxsIGFuZCBsaW5lIGV2ZW50cyBoYXBwZW4KICAgICAgICAjIEJFRk9SRSBkZWJ1Z2dlciBldmVuIHJlYWNoZXMgdXNlcidzIGNvZGUgKGFuZCB0aGUgZXhhY3Qgc2VxdWVuY2Ugb2YKICAgICAgICAjIGV2ZW50cyBkZXBlbmRzIG9uIHB5dGhvbiB2ZXJzaW9uKS4gVGFrZSBzcGVjaWFsIG1lYXN1cmVzIHRvCiAgICAgICAgIyBhdm9pZCBzdG9wcGluZyBiZWZvcmUgcmVhY2hpbmcgdGhlIG1haW4gc2NyaXB0IChzZWUgdXNlcl9saW5lIGFuZAogICAgICAgICMgdXNlcl9jYWxsIGZvciBkZXRhaWxzKS4KICAgICAgICBzZWxmLl93YWl0X2Zvcl9tYWlucHlmaWxlID0gVHJ1ZQogICAgICAgIHNlbGYuX3VzZXJfcmVxdWVzdGVkX3F1aXQgPSBGYWxzZQoKICAgICAgICBzZWxmLm1haW5weWZpbGUgPSBzZWxmLmNhbm9uaWModGFyZ2V0LmZpbGVuYW1lKQoKICAgICAgICAjIFRoZSB0YXJnZXQgaGFzIHRvIHJ1biBpbiBfX21haW5fXyBuYW1lc3BhY2UgKG9yIGltcG9ydHMgZnJvbQogICAgICAgICMgX19tYWluX18gd2lsbCBicmVhaykuIENsZWFyIF9fbWFpbl9fIGFuZCByZXBsYWNlIHdpdGgKICAgICAgICAjIHRoZSB0YXJnZXQgbmFtZXNwYWNlLgogICAgICAgIGltcG9ydCBfX21haW5fXwogICAgICAgIF9fbWFpbl9fLl9fZGljdF9fLmNsZWFyKCkKICAgICAgICBfX21haW5fXy5fX2RpY3RfXy51cGRhdGUodGFyZ2V0Lm5hbWVzcGFjZSkKCiAgICAgICAgc2VsZi5ydW4odGFyZ2V0LmNvZGUpCgoKIyBDb2xsZWN0IGFsbCBjb21tYW5kIGhlbHAgaW50byBkb2NzdHJpbmcsIGlmIG5vdCBydW4gd2l0aCAtT08KCmlmIF9fZG9jX18gaXMgbm90IE5vbmU6CiAgICAjIHVuZm9ydHVuYXRlbHkgd2UgY2FuJ3QgZ3Vlc3MgdGhpcyBvcmRlciBmcm9tIHRoZSBjbGFzcyBkZWZpbml0aW9uCiAgICBfaGVscF9vcmRlciA9IFsKICAgICAgICAnaGVscCcsICd3aGVyZScsICdkb3duJywgJ3VwJywgJ2JyZWFrJywgJ3RicmVhaycsICdjbGVhcicsICdkaXNhYmxlJywKICAgICAgICAnZW5hYmxlJywgJ2lnbm9yZScsICdjb25kaXRpb24nLCAnY29tbWFuZHMnLCAnc3RlcCcsICduZXh0JywgJ3VudGlsJywKICAgICAgICAnanVtcCcsICdyZXR1cm4nLCAncmV0dmFsJywgJ3J1bicsICdjb250aW51ZScsICdsaXN0JywgJ2xvbmdsaXN0JywKICAgICAgICAnYXJncycsICdwJywgJ3BwJywgJ3doYXRpcycsICdzb3VyY2UnLCAnZGlzcGxheScsICd1bmRpc3BsYXknLAogICAgICAgICdpbnRlcmFjdCcsICdhbGlhcycsICd1bmFsaWFzJywgJ2RlYnVnJywgJ3F1aXQnLAogICAgXQoKICAgIGZvciBfY29tbWFuZCBpbiBfaGVscF9vcmRlcjoKICAgICAgICBfX2RvY19fICs9IGdldGF0dHIoUGRiLCAnZG9fJyArIF9jb21tYW5kKS5fX2RvY19fLnN0cmlwKCkgKyAnXG5cbicKICAgIF9fZG9jX18gKz0gUGRiLmhlbHBfZXhlYy5fX2RvY19fCgogICAgZGVsIF9oZWxwX29yZGVyLCBfY29tbWFuZAoKCiMgU2ltcGxpZmllZCBpbnRlcmZhY2UKCmRlZiBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKToKICAgIFBkYigpLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHMsIGxvY2FscykKCmRlZiBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpOgogICAgcmV0dXJuIFBkYigpLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscywgbG9jYWxzKQoKZGVmIHJ1bmN0eChzdGF0ZW1lbnQsIGdsb2JhbHMsIGxvY2Fscyk6CiAgICAjIEIvVyBjb21wYXRpYmlsaXR5CiAgICBydW4oc3RhdGVtZW50LCBnbG9iYWxzLCBsb2NhbHMpCgpkZWYgcnVuY2FsbCgqYXJncywgKiprd2RzKToKICAgIHJldHVybiBQZGIoKS5ydW5jYWxsKCphcmdzLCAqKmt3ZHMpCgpkZWYgc2V0X3RyYWNlKCosIGhlYWRlcj1Ob25lKToKICAgIHBkYiA9IFBkYigpCiAgICBpZiBoZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgcGRiLm1lc3NhZ2UoaGVhZGVyKQogICAgcGRiLnNldF90cmFjZShzeXMuX2dldGZyYW1lKCkuZl9iYWNrKQoKIyBQb3N0LU1vcnRlbSBpbnRlcmZhY2UKCmRlZiBwb3N0X21vcnRlbSh0PU5vbmUpOgogICAgIyBoYW5kbGluZyB0aGUgZGVmYXVsdAogICAgaWYgdCBpcyBOb25lOgogICAgICAgICMgc3lzLmV4Y19pbmZvKCkgcmV0dXJucyAodHlwZSwgdmFsdWUsIHRyYWNlYmFjaykgaWYgYW4gZXhjZXB0aW9uIGlzCiAgICAgICAgIyBiZWluZyBoYW5kbGVkLCBvdGhlcndpc2UgaXQgcmV0dXJucyBOb25lCiAgICAgICAgdCA9IHN5cy5leGNfaW5mbygpWzJdCiAgICBpZiB0IGlzIE5vbmU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQSB2YWxpZCB0cmFjZWJhY2sgbXVzdCBiZSBwYXNzZWQgaWYgbm8gIgogICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbiBpcyBiZWluZyBoYW5kbGVkIikKCiAgICBwID0gUGRiKCkKICAgIHAucmVzZXQoKQogICAgcC5pbnRlcmFjdGlvbihOb25lLCB0KQoKZGVmIHBtKCk6CiAgICBwb3N0X21vcnRlbShzeXMubGFzdF90cmFjZWJhY2spCgoKIyBNYWluIHByb2dyYW0gZm9yIHRlc3RpbmcKClRFU1RDTUQgPSAnaW1wb3J0IHg7IHgubWFpbigpJwoKZGVmIHRlc3QoKToKICAgIHJ1bihURVNUQ01EKQoKIyBwcmludCBoZWxwCmRlZiBoZWxwKCk6CiAgICBpbXBvcnQgcHlkb2MKICAgIHB5ZG9jLnBhZ2VyKF9fZG9jX18pCgpfdXNhZ2UgPSAiIiJcCnVzYWdlOiBwZGIucHkgWy1jIGNvbW1hbmRdIC4uLiBbLW0gbW9kdWxlIHwgcHlmaWxlXSBbYXJnXSAuLi4KCkRlYnVnIHRoZSBQeXRob24gcHJvZ3JhbSBnaXZlbiBieSBweWZpbGUuIEFsdGVybmF0aXZlbHksCmFuIGV4ZWN1dGFibGUgbW9kdWxlIG9yIHBhY2thZ2UgdG8gZGVidWcgY2FuIGJlIHNwZWNpZmllZCB1c2luZwp0aGUgLW0gc3dpdGNoLgoKSW5pdGlhbCBjb21tYW5kcyBhcmUgcmVhZCBmcm9tIC5wZGJyYyBmaWxlcyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5CmFuZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIGlmIHRoZXkgZXhpc3QuICBDb21tYW5kcyBzdXBwbGllZCB3aXRoCi1jIGFyZSBleGVjdXRlZCBhZnRlciBjb21tYW5kcyBmcm9tIC5wZGJyYyBmaWxlcy4KClRvIGxldCB0aGUgc2NyaXB0IHJ1biB1bnRpbCBhbiBleGNlcHRpb24gb2NjdXJzLCB1c2UgIi1jIGNvbnRpbnVlIi4KVG8gbGV0IHRoZSBzY3JpcHQgcnVuIHVwIHRvIGEgZ2l2ZW4gbGluZSBYIGluIHRoZSBkZWJ1Z2dlZCBmaWxlLCB1c2UKIi1jICd1bnRpbCBYJyIuIiIiCgoKZGVmIG1haW4oKToKICAgIGltcG9ydCBnZXRvcHQKCiAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdtaGM6JywgWydoZWxwJywgJ2NvbW1hbmQ9J10pCgogICAgaWYgbm90IGFyZ3M6CiAgICAgICAgcHJpbnQoX3VzYWdlKQogICAgICAgIHN5cy5leGl0KDIpCgogICAgaWYgYW55KG9wdCBpbiBbJy1oJywgJy0taGVscCddIGZvciBvcHQsIG9wdGFyZyBpbiBvcHRzKToKICAgICAgICBwcmludChfdXNhZ2UpCiAgICAgICAgc3lzLmV4aXQoKQoKICAgIGNvbW1hbmRzID0gW29wdGFyZyBmb3Igb3B0LCBvcHRhcmcgaW4gb3B0cyBpZiBvcHQgaW4gWyctYycsICctLWNvbW1hbmQnXV0KCiAgICBtb2R1bGVfaW5kaWNhdGVkID0gYW55KG9wdCBpbiBbJy1tJ10gZm9yIG9wdCwgb3B0YXJnIGluIG9wdHMpCiAgICBjbHMgPSBfTW9kdWxlVGFyZ2V0IGlmIG1vZHVsZV9pbmRpY2F0ZWQgZWxzZSBfU2NyaXB0VGFyZ2V0CiAgICB0YXJnZXQgPSBjbHMoYXJnc1swXSkKCiAgICB0YXJnZXQuY2hlY2soKQoKICAgIHN5cy5hcmd2WzpdID0gYXJncyAgICAgICMgSGlkZSAicGRiLnB5IiBhbmQgcGRiIG9wdGlvbnMgZnJvbSBhcmd1bWVudCBsaXN0CgogICAgIyBOb3RlIG9uIHNhdmluZy9yZXN0b3Jpbmcgc3lzLmFyZ3Y6IGl0J3MgYSBnb29kIGlkZWEgd2hlbiBzeXMuYXJndiB3YXMKICAgICMgbW9kaWZpZWQgYnkgdGhlIHNjcmlwdCBiZWluZyBkZWJ1Z2dlZC4gSXQncyBhIGJhZCBpZGVhIHdoZW4gaXQgd2FzCiAgICAjIGNoYW5nZWQgYnkgdGhlIHVzZXIgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiBUaGVyZSBpcyBhICJyZXN0YXJ0IiBjb21tYW5kCiAgICAjIHdoaWNoIGFsbG93cyBleHBsaWNpdCBzcGVjaWZpY2F0aW9uIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCiAgICBwZGIgPSBQZGIoKQogICAgcGRiLnJjTGluZXMuZXh0ZW5kKGNvbW1hbmRzKQogICAgd2hpbGUgVHJ1ZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBkYi5fcnVuKHRhcmdldCkKICAgICAgICAgICAgaWYgcGRiLl91c2VyX3JlcXVlc3RlZF9xdWl0OgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgcHJpbnQoIlRoZSBwcm9ncmFtIGZpbmlzaGVkIGFuZCB3aWxsIGJlIHJlc3RhcnRlZCIpCiAgICAgICAgZXhjZXB0IFJlc3RhcnQ6CiAgICAgICAgICAgIHByaW50KCJSZXN0YXJ0aW5nIiwgdGFyZ2V0LCAid2l0aCBhcmd1bWVudHM6IikKICAgICAgICAgICAgcHJpbnQoIlx0IiArICIgIi5qb2luKHN5cy5hcmd2WzE6XSkpCiAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CiAgICAgICAgICAgICMgSW4gbW9zdCBjYXNlcyBTeXN0ZW1FeGl0IGRvZXMgbm90IHdhcnJhbnQgYSBwb3N0LW1vcnRlbSBzZXNzaW9uLgogICAgICAgICAgICBwcmludCgiVGhlIHByb2dyYW0gZXhpdGVkIHZpYSBzeXMuZXhpdCgpLiBFeGl0IHN0YXR1czoiLCBlbmQ9JyAnKQogICAgICAgICAgICBwcmludChzeXMuZXhjX2luZm8oKVsxXSkKICAgICAgICBleGNlcHQgU3ludGF4RXJyb3I6CiAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQogICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAgICAgICAgICAgIHByaW50KCJVbmNhdWdodCBleGNlcHRpb24uIEVudGVyaW5nIHBvc3QgbW9ydGVtIGRlYnVnZ2luZyIpCiAgICAgICAgICAgIHByaW50KCJSdW5uaW5nICdjb250JyBvciAnc3RlcCcgd2lsbCByZXN0YXJ0IHRoZSBwcm9ncmFtIikKICAgICAgICAgICAgdCA9IHN5cy5leGNfaW5mbygpWzJdCiAgICAgICAgICAgIHBkYi5pbnRlcmFjdGlvbihOb25lLCB0KQogICAgICAgICAgICBwcmludCgiUG9zdCBtb3J0ZW0gZGVidWdnZXIgZmluaXNoZWQuIFRoZSAiICsgdGFyZ2V0ICsKICAgICAgICAgICAgICAgICAgIiB3aWxsIGJlIHJlc3RhcnRlZCIpCgoKIyBXaGVuIGludm9rZWQgYXMgbWFpbiBwcm9ncmFtLCBpbnZva2UgdGhlIGRlYnVnZ2VyIG9uIGEgc2NyaXB0CmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBpbXBvcnQgcGRiCiAgICBwZGIubWFpbigpClBLAwQUAAAAAAACIKNWOFrnGrX9AAC1/QAACQAAAHBpY2tsZS5weSIiIkNyZWF0ZSBwb3J0YWJsZSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9ucyBvZiBQeXRob24gb2JqZWN0cy4KClNlZSBtb2R1bGUgY29weXJlZyBmb3IgYSBtZWNoYW5pc20gZm9yIHJlZ2lzdGVyaW5nIGN1c3RvbSBwaWNrbGVycy4KU2VlIG1vZHVsZSBwaWNrbGV0b29scyBzb3VyY2UgZm9yIGV4dGVuc2l2ZSBjb21tZW50cy4KCkNsYXNzZXM6CgogICAgUGlja2xlcgogICAgVW5waWNrbGVyCgpGdW5jdGlvbnM6CgogICAgZHVtcChvYmplY3QsIGZpbGUpCiAgICBkdW1wcyhvYmplY3QpIC0+IHN0cmluZwogICAgbG9hZChmaWxlKSAtPiBvYmplY3QKICAgIGxvYWRzKGJ5dGVzKSAtPiBvYmplY3QKCk1pc2MgdmFyaWFibGVzOgoKICAgIF9fdmVyc2lvbl9fCiAgICBmb3JtYXRfdmVyc2lvbgogICAgY29tcGF0aWJsZV9mb3JtYXRzCgoiIiIKCmZyb20gdHlwZXMgaW1wb3J0IEZ1bmN0aW9uVHlwZQpmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCmZyb20gY29weXJlZyBpbXBvcnQgX2V4dGVuc2lvbl9yZWdpc3RyeSwgX2ludmVydGVkX3JlZ2lzdHJ5LCBfZXh0ZW5zaW9uX2NhY2hlCmZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKaW1wb3J0IHN5cwpmcm9tIHN5cyBpbXBvcnQgbWF4c2l6ZQpmcm9tIHN0cnVjdCBpbXBvcnQgcGFjaywgdW5wYWNrCmltcG9ydCByZQppbXBvcnQgaW8KaW1wb3J0IGNvZGVjcwppbXBvcnQgX2NvbXBhdF9waWNrbGUKCl9fYWxsX18gPSBbIlBpY2tsZUVycm9yIiwgIlBpY2tsaW5nRXJyb3IiLCAiVW5waWNrbGluZ0Vycm9yIiwgIlBpY2tsZXIiLAogICAgICAgICAgICJVbnBpY2tsZXIiLCAiZHVtcCIsICJkdW1wcyIsICJsb2FkIiwgImxvYWRzIl0KCnRyeToKICAgIGZyb20gX3BpY2tsZSBpbXBvcnQgUGlja2xlQnVmZmVyCiAgICBfX2FsbF9fLmFwcGVuZCgiUGlja2xlQnVmZmVyIikKICAgIF9IQVZFX1BJQ0tMRV9CVUZGRVIgPSBUcnVlCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIF9IQVZFX1BJQ0tMRV9CVUZGRVIgPSBGYWxzZQoKCiMgU2hvcnRjdXQgZm9yIHVzZSBpbiBpc2luc3RhbmNlIHRlc3RpbmcKYnl0ZXNfdHlwZXMgPSAoYnl0ZXMsIGJ5dGVhcnJheSkKCiMgVGhlc2UgYXJlIHB1cmVseSBpbmZvcm1hdGlvbmFsOyBubyBjb2RlIHVzZXMgdGhlc2UuCmZvcm1hdF92ZXJzaW9uID0gIjQuMCIgICAgICAgICAgICAgICAgICAjIEZpbGUgZm9ybWF0IHZlcnNpb24gd2Ugd3JpdGUKY29tcGF0aWJsZV9mb3JtYXRzID0gWyIxLjAiLCAgICAgICAgICAgICMgT3JpZ2luYWwgcHJvdG9jb2wgMAogICAgICAgICAgICAgICAgICAgICAgIjEuMSIsICAgICAgICAgICAgIyBQcm90b2NvbCAwIHdpdGggSU5TVCBhZGRlZAogICAgICAgICAgICAgICAgICAgICAgIjEuMiIsICAgICAgICAgICAgIyBPcmlnaW5hbCBwcm90b2NvbCAxCiAgICAgICAgICAgICAgICAgICAgICAiMS4zIiwgICAgICAgICAgICAjIFByb3RvY29sIDEgd2l0aCBCSU5GTE9BVCBhZGRlZAogICAgICAgICAgICAgICAgICAgICAgIjIuMCIsICAgICAgICAgICAgIyBQcm90b2NvbCAyCiAgICAgICAgICAgICAgICAgICAgICAiMy4wIiwgICAgICAgICAgICAjIFByb3RvY29sIDMKICAgICAgICAgICAgICAgICAgICAgICI0LjAiLCAgICAgICAgICAgICMgUHJvdG9jb2wgNAogICAgICAgICAgICAgICAgICAgICAgIjUuMCIsICAgICAgICAgICAgIyBQcm90b2NvbCA1CiAgICAgICAgICAgICAgICAgICAgICBdICAgICAgICAgICAgICAgICAjIE9sZCBmb3JtYXQgdmVyc2lvbnMgd2UgY2FuIHJlYWQKCiMgVGhpcyBpcyB0aGUgaGlnaGVzdCBwcm90b2NvbCBudW1iZXIgd2Uga25vdyBob3cgdG8gcmVhZC4KSElHSEVTVF9QUk9UT0NPTCA9IDUKCiMgVGhlIHByb3RvY29sIHdlIHdyaXRlIGJ5IGRlZmF1bHQuICBNYXkgYmUgbGVzcyB0aGFuIEhJR0hFU1RfUFJPVE9DT0wuCiMgT25seSBidW1wIHRoaXMgaWYgdGhlIG9sZGVzdCBzdGlsbCBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBQeXRob24gYWxyZWFkeQojIGluY2x1ZGVzIGl0LgpERUZBVUxUX1BST1RPQ09MID0gNAoKY2xhc3MgUGlja2xlRXJyb3IoRXhjZXB0aW9uKToKICAgICIiIkEgY29tbW9uIGJhc2UgY2xhc3MgZm9yIHRoZSBvdGhlciBwaWNrbGluZyBleGNlcHRpb25zLiIiIgogICAgcGFzcwoKY2xhc3MgUGlja2xpbmdFcnJvcihQaWNrbGVFcnJvcik6CiAgICAiIiJUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhbiB1bnBpY2tsYWJsZSBvYmplY3QgaXMgcGFzc2VkIHRvIHRoZQogICAgZHVtcCgpIG1ldGhvZC4KCiAgICAiIiIKICAgIHBhc3MKCmNsYXNzIFVucGlja2xpbmdFcnJvcihQaWNrbGVFcnJvcik6CiAgICAiIiJUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gdW5waWNrbGluZyBhbiBvYmplY3QsCiAgICBzdWNoIGFzIGEgc2VjdXJpdHkgdmlvbGF0aW9uLgoKICAgIE5vdGUgdGhhdCBvdGhlciBleGNlcHRpb25zIG1heSBhbHNvIGJlIHJhaXNlZCBkdXJpbmcgdW5waWNrbGluZywgaW5jbHVkaW5nCiAgICAoYnV0IG5vdCBuZWNlc3NhcmlseSBsaW1pdGVkIHRvKSBBdHRyaWJ1dGVFcnJvciwgRU9GRXJyb3IsIEltcG9ydEVycm9yLAogICAgYW5kIEluZGV4RXJyb3IuCgogICAgIiIiCiAgICBwYXNzCgojIEFuIGluc3RhbmNlIG9mIF9TdG9wIGlzIHJhaXNlZCBieSBVbnBpY2tsZXIubG9hZF9zdG9wKCkgaW4gcmVzcG9uc2UgdG8KIyB0aGUgU1RPUCBvcGNvZGUsIHBhc3NpbmcgdGhlIG9iamVjdCB0aGF0IGlzIHRoZSByZXN1bHQgb2YgdW5waWNrbGluZy4KY2xhc3MgX1N0b3AoRXhjZXB0aW9uKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCgojIEp5dGhvbiBoYXMgUHlTdHJpbmdNYXA7IGl0J3MgYSBkaWN0IHN1YmNsYXNzIHdpdGggc3RyaW5nIGtleXMKdHJ5OgogICAgZnJvbSBvcmcucHl0aG9uLmNvcmUgaW1wb3J0IFB5U3RyaW5nTWFwCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIFB5U3RyaW5nTWFwID0gTm9uZQoKIyBQaWNrbGUgb3Bjb2Rlcy4gIFNlZSBwaWNrbGV0b29scy5weSBmb3IgZXh0ZW5zaXZlIGRvY3MuICBUaGUgbGlzdGluZwojIGhlcmUgaXMgaW4ga2luZC1vZiBhbHBoYWJldGljYWwgb3JkZXIgb2YgMS1jaGFyYWN0ZXIgcGlja2xlIGNvZGUuCiMgcGlja2xldG9vbHMgZ3JvdXBzIHRoZW0gYnkgcHVycG9zZS4KCk1BUksgICAgICAgICAgID0gYicoJyAgICMgcHVzaCBzcGVjaWFsIG1hcmtvYmplY3Qgb24gc3RhY2sKU1RPUCAgICAgICAgICAgPSBiJy4nICAgIyBldmVyeSBwaWNrbGUgZW5kcyB3aXRoIFNUT1AKUE9QICAgICAgICAgICAgPSBiJzAnICAgIyBkaXNjYXJkIHRvcG1vc3Qgc3RhY2sgaXRlbQpQT1BfTUFSSyAgICAgICA9IGInMScgICAjIGRpc2NhcmQgc3RhY2sgdG9wIHRocm91Z2ggdG9wbW9zdCBtYXJrb2JqZWN0CkRVUCAgICAgICAgICAgID0gYicyJyAgICMgZHVwbGljYXRlIHRvcCBzdGFjayBpdGVtCkZMT0FUICAgICAgICAgID0gYidGJyAgICMgcHVzaCBmbG9hdCBvYmplY3Q7IGRlY2ltYWwgc3RyaW5nIGFyZ3VtZW50CklOVCAgICAgICAgICAgID0gYidJJyAgICMgcHVzaCBpbnRlZ2VyIG9yIGJvb2w7IGRlY2ltYWwgc3RyaW5nIGFyZ3VtZW50CkJJTklOVCAgICAgICAgID0gYidKJyAgICMgcHVzaCBmb3VyLWJ5dGUgc2lnbmVkIGludApCSU5JTlQxICAgICAgICA9IGInSycgICAjIHB1c2ggMS1ieXRlIHVuc2lnbmVkIGludApMT05HICAgICAgICAgICA9IGInTCcgICAjIHB1c2ggbG9uZzsgZGVjaW1hbCBzdHJpbmcgYXJndW1lbnQKQklOSU5UMiAgICAgICAgPSBiJ00nICAgIyBwdXNoIDItYnl0ZSB1bnNpZ25lZCBpbnQKTk9ORSAgICAgICAgICAgPSBiJ04nICAgIyBwdXNoIE5vbmUKUEVSU0lEICAgICAgICAgPSBiJ1AnICAgIyBwdXNoIHBlcnNpc3RlbnQgb2JqZWN0OyBpZCBpcyB0YWtlbiBmcm9tIHN0cmluZyBhcmcKQklOUEVSU0lEICAgICAgPSBiJ1EnICAgIyAgIiAgICAgICAiICAgICAgICAgIiAgOyAgIiAgIiAgICIgICAgICIgIHN0YWNrClJFRFVDRSAgICAgICAgID0gYidSJyAgICMgYXBwbHkgY2FsbGFibGUgdG8gYXJndHVwbGUsIGJvdGggb24gc3RhY2sKU1RSSU5HICAgICAgICAgPSBiJ1MnICAgIyBwdXNoIHN0cmluZzsgTkwtdGVybWluYXRlZCBzdHJpbmcgYXJndW1lbnQKQklOU1RSSU5HICAgICAgPSBiJ1QnICAgIyBwdXNoIHN0cmluZzsgY291bnRlZCBiaW5hcnkgc3RyaW5nIGFyZ3VtZW50ClNIT1JUX0JJTlNUUklORz0gYidVJyAgICMgICIgICAgICIgICA7ICAgICIgICAgICAiICAgICAgICIgICAgICAiIDwgMjU2IGJ5dGVzClVOSUNPREUgICAgICAgID0gYidWJyAgICMgcHVzaCBVbmljb2RlIHN0cmluZzsgcmF3LXVuaWNvZGUtZXNjYXBlZCdkIGFyZ3VtZW50CkJJTlVOSUNPREUgICAgID0gYidYJyAgICMgICAiICAgICAiICAgICAgICIgIDsgY291bnRlZCBVVEYtOCBzdHJpbmcgYXJndW1lbnQKQVBQRU5EICAgICAgICAgPSBiJ2EnICAgIyBhcHBlbmQgc3RhY2sgdG9wIHRvIGxpc3QgYmVsb3cgaXQKQlVJTEQgICAgICAgICAgPSBiJ2InICAgIyBjYWxsIF9fc2V0c3RhdGVfXyBvciBfX2RpY3RfXy51cGRhdGUoKQpHTE9CQUwgICAgICAgICA9IGInYycgICAjIHB1c2ggc2VsZi5maW5kX2NsYXNzKG1vZG5hbWUsIG5hbWUpOyAyIHN0cmluZyBhcmdzCkRJQ1QgICAgICAgICAgID0gYidkJyAgICMgYnVpbGQgYSBkaWN0IGZyb20gc3RhY2sgaXRlbXMKRU1QVFlfRElDVCAgICAgPSBiJ30nICAgIyBwdXNoIGVtcHR5IGRpY3QKQVBQRU5EUyAgICAgICAgPSBiJ2UnICAgIyBleHRlbmQgbGlzdCBvbiBzdGFjayBieSB0b3Btb3N0IHN0YWNrIHNsaWNlCkdFVCAgICAgICAgICAgID0gYidnJyAgICMgcHVzaCBpdGVtIGZyb20gbWVtbyBvbiBzdGFjazsgaW5kZXggaXMgc3RyaW5nIGFyZwpCSU5HRVQgICAgICAgICA9IGInaCcgICAjICAgIiAgICAiICAgICIgICAgIiAgICIgICAiICA7ICAgIiAgICAiIDEtYnl0ZSBhcmcKSU5TVCAgICAgICAgICAgPSBiJ2knICAgIyBidWlsZCAmIHB1c2ggY2xhc3MgaW5zdGFuY2UKTE9OR19CSU5HRVQgICAgPSBiJ2onICAgIyBwdXNoIGl0ZW0gZnJvbSBtZW1vIG9uIHN0YWNrOyBpbmRleCBpcyA0LWJ5dGUgYXJnCkxJU1QgICAgICAgICAgID0gYidsJyAgICMgYnVpbGQgbGlzdCBmcm9tIHRvcG1vc3Qgc3RhY2sgaXRlbXMKRU1QVFlfTElTVCAgICAgPSBiJ10nICAgIyBwdXNoIGVtcHR5IGxpc3QKT0JKICAgICAgICAgICAgPSBiJ28nICAgIyBidWlsZCAmIHB1c2ggY2xhc3MgaW5zdGFuY2UKUFVUICAgICAgICAgICAgPSBiJ3AnICAgIyBzdG9yZSBzdGFjayB0b3AgaW4gbWVtbzsgaW5kZXggaXMgc3RyaW5nIGFyZwpCSU5QVVQgICAgICAgICA9IGIncScgICAjICAgIiAgICAgIiAgICAiICAgIiAgICIgOyAgICIgICAgIiAxLWJ5dGUgYXJnCkxPTkdfQklOUFVUICAgID0gYidyJyAgICMgICAiICAgICAiICAgICIgICAiICAgIiA7ICAgIiAgICAiIDQtYnl0ZSBhcmcKU0VUSVRFTSAgICAgICAgPSBiJ3MnICAgIyBhZGQga2V5K3ZhbHVlIHBhaXIgdG8gZGljdApUVVBMRSAgICAgICAgICA9IGIndCcgICAjIGJ1aWxkIHR1cGxlIGZyb20gdG9wbW9zdCBzdGFjayBpdGVtcwpFTVBUWV9UVVBMRSAgICA9IGInKScgICAjIHB1c2ggZW1wdHkgdHVwbGUKU0VUSVRFTVMgICAgICAgPSBiJ3UnICAgIyBtb2RpZnkgZGljdCBieSBhZGRpbmcgdG9wbW9zdCBrZXkrdmFsdWUgcGFpcnMKQklORkxPQVQgICAgICAgPSBiJ0cnICAgIyBwdXNoIGZsb2F0OyBhcmcgaXMgOC1ieXRlIGZsb2F0IGVuY29kaW5nCgpUUlVFICAgICAgICAgICA9IGInSTAxXG4nICAjIG5vdCBhbiBvcGNvZGU7IHNlZSBJTlQgZG9jcyBpbiBwaWNrbGV0b29scy5weQpGQUxTRSAgICAgICAgICA9IGInSTAwXG4nICAjIG5vdCBhbiBvcGNvZGU7IHNlZSBJTlQgZG9jcyBpbiBwaWNrbGV0b29scy5weQoKIyBQcm90b2NvbCAyCgpQUk9UTyAgICAgICAgICA9IGInXHg4MCcgICMgaWRlbnRpZnkgcGlja2xlIHByb3RvY29sCk5FV09CSiAgICAgICAgID0gYidceDgxJyAgIyBidWlsZCBvYmplY3QgYnkgYXBwbHlpbmcgY2xzLl9fbmV3X18gdG8gYXJndHVwbGUKRVhUMSAgICAgICAgICAgPSBiJ1x4ODInICAjIHB1c2ggb2JqZWN0IGZyb20gZXh0ZW5zaW9uIHJlZ2lzdHJ5OyAxLWJ5dGUgaW5kZXgKRVhUMiAgICAgICAgICAgPSBiJ1x4ODMnICAjIGRpdHRvLCBidXQgMi1ieXRlIGluZGV4CkVYVDQgICAgICAgICAgID0gYidceDg0JyAgIyBkaXR0bywgYnV0IDQtYnl0ZSBpbmRleApUVVBMRTEgICAgICAgICA9IGInXHg4NScgICMgYnVpbGQgMS10dXBsZSBmcm9tIHN0YWNrIHRvcApUVVBMRTIgICAgICAgICA9IGInXHg4NicgICMgYnVpbGQgMi10dXBsZSBmcm9tIHR3byB0b3Btb3N0IHN0YWNrIGl0ZW1zClRVUExFMyAgICAgICAgID0gYidceDg3JyAgIyBidWlsZCAzLXR1cGxlIGZyb20gdGhyZWUgdG9wbW9zdCBzdGFjayBpdGVtcwpORVdUUlVFICAgICAgICA9IGInXHg4OCcgICMgcHVzaCBUcnVlCk5FV0ZBTFNFICAgICAgID0gYidceDg5JyAgIyBwdXNoIEZhbHNlCkxPTkcxICAgICAgICAgID0gYidceDhhJyAgIyBwdXNoIGxvbmcgZnJvbSA8IDI1NiBieXRlcwpMT05HNCAgICAgICAgICA9IGInXHg4YicgICMgcHVzaCByZWFsbHkgYmlnIGxvbmcKCl90dXBsZXNpemUyY29kZSA9IFtFTVBUWV9UVVBMRSwgVFVQTEUxLCBUVVBMRTIsIFRVUExFM10KCiMgUHJvdG9jb2wgMyAoUHl0aG9uIDMueCkKCkJJTkJZVEVTICAgICAgID0gYidCJyAgICMgcHVzaCBieXRlczsgY291bnRlZCBiaW5hcnkgc3RyaW5nIGFyZ3VtZW50ClNIT1JUX0JJTkJZVEVTID0gYidDJyAgICMgICIgICAgICIgICA7ICAgICIgICAgICAiICAgICAgICIgICAgICAiIDwgMjU2IGJ5dGVzCgojIFByb3RvY29sIDQKClNIT1JUX0JJTlVOSUNPREUgPSBiJ1x4OGMnICAjIHB1c2ggc2hvcnQgc3RyaW5nOyBVVEYtOCBsZW5ndGggPCAyNTYgYnl0ZXMKQklOVU5JQ09ERTggICAgICA9IGInXHg4ZCcgICMgcHVzaCB2ZXJ5IGxvbmcgc3RyaW5nCkJJTkJZVEVTOCAgICAgICAgPSBiJ1x4OGUnICAjIHB1c2ggdmVyeSBsb25nIGJ5dGVzIHN0cmluZwpFTVBUWV9TRVQgICAgICAgID0gYidceDhmJyAgIyBwdXNoIGVtcHR5IHNldCBvbiB0aGUgc3RhY2sKQURESVRFTVMgICAgICAgICA9IGInXHg5MCcgICMgbW9kaWZ5IHNldCBieSBhZGRpbmcgdG9wbW9zdCBzdGFjayBpdGVtcwpGUk9aRU5TRVQgICAgICAgID0gYidceDkxJyAgIyBidWlsZCBmcm96ZW5zZXQgZnJvbSB0b3Btb3N0IHN0YWNrIGl0ZW1zCk5FV09CSl9FWCAgICAgICAgPSBiJ1x4OTInICAjIGxpa2UgTkVXT0JKIGJ1dCB3b3JrIHdpdGgga2V5d29yZCBvbmx5IGFyZ3VtZW50cwpTVEFDS19HTE9CQUwgICAgID0gYidceDkzJyAgIyBzYW1lIGFzIEdMT0JBTCBidXQgdXNpbmcgbmFtZXMgb24gdGhlIHN0YWNrcwpNRU1PSVpFICAgICAgICAgID0gYidceDk0JyAgIyBzdG9yZSB0b3Agb2YgdGhlIHN0YWNrIGluIG1lbW8KRlJBTUUgICAgICAgICAgICA9IGInXHg5NScgICMgaW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBmcmFtZQoKIyBQcm90b2NvbCA1CgpCWVRFQVJSQVk4ICAgICAgID0gYidceDk2JyAgIyBwdXNoIGJ5dGVhcnJheQpORVhUX0JVRkZFUiAgICAgID0gYidceDk3JyAgIyBwdXNoIG5leHQgb3V0LW9mLWJhbmQgYnVmZmVyClJFQURPTkxZX0JVRkZFUiAgPSBiJ1x4OTgnICAjIG1ha2UgdG9wIG9mIHN0YWNrIHJlYWRvbmx5CgpfX2FsbF9fLmV4dGVuZChbeCBmb3IgeCBpbiBkaXIoKSBpZiByZS5tYXRjaCgiW0EtWl1bQS1aMC05X10rJCIsIHgpXSkKCgpjbGFzcyBfRnJhbWVyOgoKICAgIF9GUkFNRV9TSVpFX01JTiA9IDQKICAgIF9GUkFNRV9TSVpFX1RBUkdFVCA9IDY0ICogMTAyNAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3dyaXRlKToKICAgICAgICBzZWxmLmZpbGVfd3JpdGUgPSBmaWxlX3dyaXRlCiAgICAgICAgc2VsZi5jdXJyZW50X2ZyYW1lID0gTm9uZQoKICAgIGRlZiBzdGFydF9mcmFtaW5nKHNlbGYpOgogICAgICAgIHNlbGYuY3VycmVudF9mcmFtZSA9IGlvLkJ5dGVzSU8oKQoKICAgIGRlZiBlbmRfZnJhbWluZyhzZWxmKToKICAgICAgICBpZiBzZWxmLmN1cnJlbnRfZnJhbWUgYW5kIHNlbGYuY3VycmVudF9mcmFtZS50ZWxsKCkgPiAwOgogICAgICAgICAgICBzZWxmLmNvbW1pdF9mcmFtZShmb3JjZT1UcnVlKQogICAgICAgICAgICBzZWxmLmN1cnJlbnRfZnJhbWUgPSBOb25lCgogICAgZGVmIGNvbW1pdF9mcmFtZShzZWxmLCBmb3JjZT1GYWxzZSk6CiAgICAgICAgaWYgc2VsZi5jdXJyZW50X2ZyYW1lOgogICAgICAgICAgICBmID0gc2VsZi5jdXJyZW50X2ZyYW1lCiAgICAgICAgICAgIGlmIGYudGVsbCgpID49IHNlbGYuX0ZSQU1FX1NJWkVfVEFSR0VUIG9yIGZvcmNlOgogICAgICAgICAgICAgICAgZGF0YSA9IGYuZ2V0YnVmZmVyKCkKICAgICAgICAgICAgICAgIHdyaXRlID0gc2VsZi5maWxlX3dyaXRlCiAgICAgICAgICAgICAgICBpZiBsZW4oZGF0YSkgPj0gc2VsZi5fRlJBTUVfU0laRV9NSU46CiAgICAgICAgICAgICAgICAgICAgIyBJc3N1ZSBhIHNpbmdsZSBjYWxsIHRvIHRoZSB3cml0ZSBtZXRob2Qgb2YgdGhlIHVuZGVybHlpbmcKICAgICAgICAgICAgICAgICAgICAjIGZpbGUgb2JqZWN0IGZvciB0aGUgZnJhbWUgb3Bjb2RlIHdpdGggdGhlIHNpemUgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBmcmFtZS4gVGhlIGNvbmNhdGVuYXRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgbGVzcyBleHBlbnNpdmUKICAgICAgICAgICAgICAgICAgICAjIHRoYW4gaXNzdWluZyBhbiBhZGRpdGlvbmFsIGNhbGwgdG8gd3JpdGUuCiAgICAgICAgICAgICAgICAgICAgd3JpdGUoRlJBTUUgKyBwYWNrKCI8USIsIGxlbihkYXRhKSkpCgogICAgICAgICAgICAgICAgIyBJc3N1ZSBhIHNlcGFyYXRlIGNhbGwgdG8gd3JpdGUgdG8gYXBwZW5kIHRoZSBmcmFtZQogICAgICAgICAgICAgICAgIyBjb250ZW50cyB3aXRob3V0IGNvbmNhdGVuYXRpb24gdG8gdGhlIGFib3ZlIHRvIGF2b2lkIGEKICAgICAgICAgICAgICAgICMgbWVtb3J5IGNvcHkuCiAgICAgICAgICAgICAgICB3cml0ZShkYXRhKQoKICAgICAgICAgICAgICAgICMgU3RhcnQgdGhlIG5ldyBmcmFtZSB3aXRoIGEgbmV3IGlvLkJ5dGVzSU8gaW5zdGFuY2Ugc28gdGhhdAogICAgICAgICAgICAgICAgIyB0aGUgZmlsZSBvYmplY3QgY2FuIGhhdmUgZGVsYXllZCBhY2Nlc3MgdG8gdGhlIHByZXZpb3VzIGZyYW1lCiAgICAgICAgICAgICAgICAjIGNvbnRlbnRzIHZpYSBhbiB1bnJlbGVhc2VkIG1lbW9yeXZpZXcgb2YgdGhlIHByZXZpb3VzCiAgICAgICAgICAgICAgICAjIGlvLkJ5dGVzSU8gaW5zdGFuY2UuCiAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRfZnJhbWUgPSBpby5CeXRlc0lPKCkKCiAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgaWYgc2VsZi5jdXJyZW50X2ZyYW1lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50X2ZyYW1lLndyaXRlKGRhdGEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZV93cml0ZShkYXRhKQoKICAgIGRlZiB3cml0ZV9sYXJnZV9ieXRlcyhzZWxmLCBoZWFkZXIsIHBheWxvYWQpOgogICAgICAgIHdyaXRlID0gc2VsZi5maWxlX3dyaXRlCiAgICAgICAgaWYgc2VsZi5jdXJyZW50X2ZyYW1lOgogICAgICAgICAgICAjIFRlcm1pbmF0ZSB0aGUgY3VycmVudCBmcmFtZSBhbmQgZmx1c2ggaXQgdG8gdGhlIGZpbGUuCiAgICAgICAgICAgIHNlbGYuY29tbWl0X2ZyYW1lKGZvcmNlPVRydWUpCgogICAgICAgICMgUGVyZm9ybSBkaXJlY3Qgd3JpdGUgb2YgdGhlIGhlYWRlciBhbmQgcGF5bG9hZCBvZiB0aGUgbGFyZ2UgYmluYXJ5CiAgICAgICAgIyBvYmplY3QuIEJlIGNhcmVmdWwgbm90IHRvIGNvbmNhdGVuYXRlIHRoZSBoZWFkZXIgYW5kIHRoZSBwYXlsb2FkCiAgICAgICAgIyBwcmlvciB0byBjYWxsaW5nICd3cml0ZScgYXMgd2UgZG8gbm90IHdhbnQgdG8gYWxsb2NhdGUgYSBsYXJnZQogICAgICAgICMgdGVtcG9yYXJ5IGJ5dGVzIG9iamVjdC4KICAgICAgICAjIFdlIGludGVudGlvbmFsbHkgZG8gbm90IGluc2VydCBhIHByb3RvY29sIDQgZnJhbWUgb3Bjb2RlIHRvIG1ha2UKICAgICAgICAjIGl0IHBvc3NpYmxlIHRvIG9wdGltaXplIGZpbGUucmVhZCBjYWxscyBpbiB0aGUgbG9hZGVyLgogICAgICAgIHdyaXRlKGhlYWRlcikKICAgICAgICB3cml0ZShwYXlsb2FkKQoKCmNsYXNzIF9VbmZyYW1lcjoKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9yZWFkLCBmaWxlX3JlYWRsaW5lLCBmaWxlX3RlbGw9Tm9uZSk6CiAgICAgICAgc2VsZi5maWxlX3JlYWQgPSBmaWxlX3JlYWQKICAgICAgICBzZWxmLmZpbGVfcmVhZGxpbmUgPSBmaWxlX3JlYWRsaW5lCiAgICAgICAgc2VsZi5jdXJyZW50X2ZyYW1lID0gTm9uZQoKICAgIGRlZiByZWFkaW50byhzZWxmLCBidWYpOgogICAgICAgIGlmIHNlbGYuY3VycmVudF9mcmFtZToKICAgICAgICAgICAgbiA9IHNlbGYuY3VycmVudF9mcmFtZS5yZWFkaW50byhidWYpCiAgICAgICAgICAgIGlmIG4gPT0gMCBhbmQgbGVuKGJ1ZikgIT0gMDoKICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudF9mcmFtZSA9IE5vbmUKICAgICAgICAgICAgICAgIG4gPSBsZW4oYnVmKQogICAgICAgICAgICAgICAgYnVmWzpdID0gc2VsZi5maWxlX3JlYWQobikKICAgICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgICAgIGlmIG4gPCBsZW4oYnVmKToKICAgICAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigKICAgICAgICAgICAgICAgICAgICAicGlja2xlIGV4aGF1c3RlZCBiZWZvcmUgZW5kIG9mIGZyYW1lIikKICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICBlbHNlOgogICAgICAgICAgICBuID0gbGVuKGJ1ZikKICAgICAgICAgICAgYnVmWzpdID0gc2VsZi5maWxlX3JlYWQobikKICAgICAgICAgICAgcmV0dXJuIG4KCiAgICBkZWYgcmVhZChzZWxmLCBuKToKICAgICAgICBpZiBzZWxmLmN1cnJlbnRfZnJhbWU6CiAgICAgICAgICAgIGRhdGEgPSBzZWxmLmN1cnJlbnRfZnJhbWUucmVhZChuKQogICAgICAgICAgICBpZiBub3QgZGF0YSBhbmQgbiAhPSAwOgogICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50X2ZyYW1lID0gTm9uZQogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZV9yZWFkKG4pCiAgICAgICAgICAgIGlmIGxlbihkYXRhKSA8IG46CiAgICAgICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgInBpY2tsZSBleGhhdXN0ZWQgYmVmb3JlIGVuZCBvZiBmcmFtZSIpCiAgICAgICAgICAgIHJldHVybiBkYXRhCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZV9yZWFkKG4pCgogICAgZGVmIHJlYWRsaW5lKHNlbGYpOgogICAgICAgIGlmIHNlbGYuY3VycmVudF9mcmFtZToKICAgICAgICAgICAgZGF0YSA9IHNlbGYuY3VycmVudF9mcmFtZS5yZWFkbGluZSgpCiAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50X2ZyYW1lID0gTm9uZQogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZV9yZWFkbGluZSgpCiAgICAgICAgICAgIGlmIGRhdGFbLTFdICE9IGInXG4nWzBdOgogICAgICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKAogICAgICAgICAgICAgICAgICAgICJwaWNrbGUgZXhoYXVzdGVkIGJlZm9yZSBlbmQgb2YgZnJhbWUiKQogICAgICAgICAgICByZXR1cm4gZGF0YQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVfcmVhZGxpbmUoKQoKICAgIGRlZiBsb2FkX2ZyYW1lKHNlbGYsIGZyYW1lX3NpemUpOgogICAgICAgIGlmIHNlbGYuY3VycmVudF9mcmFtZSBhbmQgc2VsZi5jdXJyZW50X2ZyYW1lLnJlYWQoKSAhPSBiJyc6CiAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigKICAgICAgICAgICAgICAgICJiZWdpbm5pbmcgb2YgYSBuZXcgZnJhbWUgYmVmb3JlIGVuZCBvZiBjdXJyZW50IGZyYW1lIikKICAgICAgICBzZWxmLmN1cnJlbnRfZnJhbWUgPSBpby5CeXRlc0lPKHNlbGYuZmlsZV9yZWFkKGZyYW1lX3NpemUpKQoKCiMgVG9vbHMgdXNlZCBmb3IgcGlja2xpbmcuCgpkZWYgX2dldGF0dHJpYnV0ZShvYmosIG5hbWUpOgogICAgZm9yIHN1YnBhdGggaW4gbmFtZS5zcGxpdCgnLicpOgogICAgICAgIGlmIHN1YnBhdGggPT0gJzxsb2NhbHM+JzoKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNhbid0IGdldCBsb2NhbCBhdHRyaWJ1dGUgeyFyfSBvbiB7IXJ9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KG5hbWUsIG9iaikpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJlbnQgPSBvYmoKICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIHN1YnBhdGgpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiQ2FuJ3QgZ2V0IGF0dHJpYnV0ZSB7IXJ9IG9uIHshcn0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmFtZSwgb2JqKSkgZnJvbSBOb25lCiAgICByZXR1cm4gb2JqLCBwYXJlbnQKCmRlZiB3aGljaG1vZHVsZShvYmosIG5hbWUpOgogICAgIiIiRmluZCB0aGUgbW9kdWxlIGFuIG9iamVjdCBiZWxvbmcgdG8uIiIiCiAgICBtb2R1bGVfbmFtZSA9IGdldGF0dHIob2JqLCAnX19tb2R1bGVfXycsIE5vbmUpCiAgICBpZiBtb2R1bGVfbmFtZSBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gbW9kdWxlX25hbWUKICAgICMgUHJvdGVjdCB0aGUgaXRlcmF0aW9uIGJ5IHVzaW5nIGEgbGlzdCBjb3B5IG9mIHN5cy5tb2R1bGVzIGFnYWluc3QgZHluYW1pYwogICAgIyBtb2R1bGVzIHRoYXQgdHJpZ2dlciBpbXBvcnRzIG9mIG90aGVyIG1vZHVsZXMgdXBvbiBjYWxscyB0byBnZXRhdHRyLgogICAgZm9yIG1vZHVsZV9uYW1lLCBtb2R1bGUgaW4gc3lzLm1vZHVsZXMuY29weSgpLml0ZW1zKCk6CiAgICAgICAgaWYgKG1vZHVsZV9uYW1lID09ICdfX21haW5fXycKICAgICAgICAgICAgb3IgbW9kdWxlX25hbWUgPT0gJ19fbXBfbWFpbl9fJyAgIyBicG8tNDI0MDYKICAgICAgICAgICAgb3IgbW9kdWxlIGlzIE5vbmUpOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgX2dldGF0dHJpYnV0ZShtb2R1bGUsIG5hbWUpWzBdIGlzIG9iajoKICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGVfbmFtZQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgcmV0dXJuICdfX21haW5fXycKCmRlZiBlbmNvZGVfbG9uZyh4KToKICAgIHIiIiJFbmNvZGUgYSBsb25nIHRvIGEgdHdvJ3MgY29tcGxlbWVudCBsaXR0bGUtZW5kaWFuIGJpbmFyeSBzdHJpbmcuCiAgICBOb3RlIHRoYXQgMCBpcyBhIHNwZWNpYWwgY2FzZSwgcmV0dXJuaW5nIGFuIGVtcHR5IHN0cmluZywgdG8gc2F2ZSBhCiAgICBieXRlIGluIHRoZSBMT05HMSBwaWNrbGluZyBjb250ZXh0LgoKICAgID4+PiBlbmNvZGVfbG9uZygwKQogICAgYicnCiAgICA+Pj4gZW5jb2RlX2xvbmcoMjU1KQogICAgYidceGZmXHgwMCcKICAgID4+PiBlbmNvZGVfbG9uZygzMjc2NykKICAgIGInXHhmZlx4N2YnCiAgICA+Pj4gZW5jb2RlX2xvbmcoLTI1NikKICAgIGInXHgwMFx4ZmYnCiAgICA+Pj4gZW5jb2RlX2xvbmcoLTMyNzY4KQogICAgYidceDAwXHg4MCcKICAgID4+PiBlbmNvZGVfbG9uZygtMTI4KQogICAgYidceDgwJwogICAgPj4+IGVuY29kZV9sb25nKDEyNykKICAgIGInXHg3ZicKICAgID4+PgogICAgIiIiCiAgICBpZiB4ID09IDA6CiAgICAgICAgcmV0dXJuIGInJwogICAgbmJ5dGVzID0gKHguYml0X2xlbmd0aCgpID4+IDMpICsgMQogICAgcmVzdWx0ID0geC50b19ieXRlcyhuYnl0ZXMsIGJ5dGVvcmRlcj0nbGl0dGxlJywgc2lnbmVkPVRydWUpCiAgICBpZiB4IDwgMCBhbmQgbmJ5dGVzID4gMToKICAgICAgICBpZiByZXN1bHRbLTFdID09IDB4ZmYgYW5kIChyZXN1bHRbLTJdICYgMHg4MCkgIT0gMDoKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzotMV0KICAgIHJldHVybiByZXN1bHQKCmRlZiBkZWNvZGVfbG9uZyhkYXRhKToKICAgIHIiIiJEZWNvZGUgYSBsb25nIGZyb20gYSB0d28ncyBjb21wbGVtZW50IGxpdHRsZS1lbmRpYW4gYmluYXJ5IHN0cmluZy4KCiAgICA+Pj4gZGVjb2RlX2xvbmcoYicnKQogICAgMAogICAgPj4+IGRlY29kZV9sb25nKGIiXHhmZlx4MDAiKQogICAgMjU1CiAgICA+Pj4gZGVjb2RlX2xvbmcoYiJceGZmXHg3ZiIpCiAgICAzMjc2NwogICAgPj4+IGRlY29kZV9sb25nKGIiXHgwMFx4ZmYiKQogICAgLTI1NgogICAgPj4+IGRlY29kZV9sb25nKGIiXHgwMFx4ODAiKQogICAgLTMyNzY4CiAgICA+Pj4gZGVjb2RlX2xvbmcoYiJceDgwIikKICAgIC0xMjgKICAgID4+PiBkZWNvZGVfbG9uZyhiIlx4N2YiKQogICAgMTI3CiAgICAiIiIKICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhkYXRhLCBieXRlb3JkZXI9J2xpdHRsZScsIHNpZ25lZD1UcnVlKQoKCiMgUGlja2xpbmcgbWFjaGluZXJ5CgpjbGFzcyBfUGlja2xlcjoKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcHJvdG9jb2w9Tm9uZSwgKiwgZml4X2ltcG9ydHM9VHJ1ZSwKICAgICAgICAgICAgICAgICBidWZmZXJfY2FsbGJhY2s9Tm9uZSk6CiAgICAgICAgIiIiVGhpcyB0YWtlcyBhIGJpbmFyeSBmaWxlIGZvciB3cml0aW5nIGEgcGlja2xlIGRhdGEgc3RyZWFtLgoKICAgICAgICBUaGUgb3B0aW9uYWwgKnByb3RvY29sKiBhcmd1bWVudCB0ZWxscyB0aGUgcGlja2xlciB0byB1c2UgdGhlCiAgICAgICAgZ2l2ZW4gcHJvdG9jb2w7IHN1cHBvcnRlZCBwcm90b2NvbHMgYXJlIDAsIDEsIDIsIDMsIDQgYW5kIDUuCiAgICAgICAgVGhlIGRlZmF1bHQgcHJvdG9jb2wgaXMgNC4gSXQgd2FzIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuNCwgYW5kCiAgICAgICAgaXMgaW5jb21wYXRpYmxlIHdpdGggcHJldmlvdXMgdmVyc2lvbnMuCgogICAgICAgIFNwZWNpZnlpbmcgYSBuZWdhdGl2ZSBwcm90b2NvbCB2ZXJzaW9uIHNlbGVjdHMgdGhlIGhpZ2hlc3QKICAgICAgICBwcm90b2NvbCB2ZXJzaW9uIHN1cHBvcnRlZC4gIFRoZSBoaWdoZXIgdGhlIHByb3RvY29sIHVzZWQsIHRoZQogICAgICAgIG1vcmUgcmVjZW50IHRoZSB2ZXJzaW9uIG9mIFB5dGhvbiBuZWVkZWQgdG8gcmVhZCB0aGUgcGlja2xlCiAgICAgICAgcHJvZHVjZWQuCgogICAgICAgIFRoZSAqZmlsZSogYXJndW1lbnQgbXVzdCBoYXZlIGEgd3JpdGUoKSBtZXRob2QgdGhhdCBhY2NlcHRzIGEKICAgICAgICBzaW5nbGUgYnl0ZXMgYXJndW1lbnQuIEl0IGNhbiB0aHVzIGJlIGEgZmlsZSBvYmplY3Qgb3BlbmVkIGZvcgogICAgICAgIGJpbmFyeSB3cml0aW5nLCBhbiBpby5CeXRlc0lPIGluc3RhbmNlLCBvciBhbnkgb3RoZXIgY3VzdG9tCiAgICAgICAgb2JqZWN0IHRoYXQgbWVldHMgdGhpcyBpbnRlcmZhY2UuCgogICAgICAgIElmICpmaXhfaW1wb3J0cyogaXMgVHJ1ZSBhbmQgKnByb3RvY29sKiBpcyBsZXNzIHRoYW4gMywgcGlja2xlCiAgICAgICAgd2lsbCB0cnkgdG8gbWFwIHRoZSBuZXcgUHl0aG9uIDMgbmFtZXMgdG8gdGhlIG9sZCBtb2R1bGUgbmFtZXMKICAgICAgICB1c2VkIGluIFB5dGhvbiAyLCBzbyB0aGF0IHRoZSBwaWNrbGUgZGF0YSBzdHJlYW0gaXMgcmVhZGFibGUKICAgICAgICB3aXRoIFB5dGhvbiAyLgoKICAgICAgICBJZiAqYnVmZmVyX2NhbGxiYWNrKiBpcyBOb25lICh0aGUgZGVmYXVsdCksIGJ1ZmZlciB2aWV3cyBhcmUKICAgICAgICBzZXJpYWxpemVkIGludG8gKmZpbGUqIGFzIHBhcnQgb2YgdGhlIHBpY2tsZSBzdHJlYW0uCgogICAgICAgIElmICpidWZmZXJfY2FsbGJhY2sqIGlzIG5vdCBOb25lLCB0aGVuIGl0IGNhbiBiZSBjYWxsZWQgYW55IG51bWJlcgogICAgICAgIG9mIHRpbWVzIHdpdGggYSBidWZmZXIgdmlldy4gIElmIHRoZSBjYWxsYmFjayByZXR1cm5zIGEgZmFsc2UgdmFsdWUKICAgICAgICAoc3VjaCBhcyBOb25lKSwgdGhlIGdpdmVuIGJ1ZmZlciBpcyBvdXQtb2YtYmFuZDsgb3RoZXJ3aXNlIHRoZQogICAgICAgIGJ1ZmZlciBpcyBzZXJpYWxpemVkIGluLWJhbmQsIGkuZS4gaW5zaWRlIHRoZSBwaWNrbGUgc3RyZWFtLgoKICAgICAgICBJdCBpcyBhbiBlcnJvciBpZiAqYnVmZmVyX2NhbGxiYWNrKiBpcyBub3QgTm9uZSBhbmQgKnByb3RvY29sKgogICAgICAgIGlzIE5vbmUgb3Igc21hbGxlciB0aGFuIDUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgcHJvdG9jb2wgaXMgTm9uZToKICAgICAgICAgICAgcHJvdG9jb2wgPSBERUZBVUxUX1BST1RPQ09MCiAgICAgICAgaWYgcHJvdG9jb2wgPCAwOgogICAgICAgICAgICBwcm90b2NvbCA9IEhJR0hFU1RfUFJPVE9DT0wKICAgICAgICBlbGlmIG5vdCAwIDw9IHByb3RvY29sIDw9IEhJR0hFU1RfUFJPVE9DT0w6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBpY2tsZSBwcm90b2NvbCBtdXN0IGJlIDw9ICVkIiAlIEhJR0hFU1RfUFJPVE9DT0wpCiAgICAgICAgaWYgYnVmZmVyX2NhbGxiYWNrIGlzIG5vdCBOb25lIGFuZCBwcm90b2NvbCA8IDU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ1ZmZlcl9jYWxsYmFjayBuZWVkcyBwcm90b2NvbCA+PSA1IikKICAgICAgICBzZWxmLl9idWZmZXJfY2FsbGJhY2sgPSBidWZmZXJfY2FsbGJhY2sKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2ZpbGVfd3JpdGUgPSBmaWxlLndyaXRlCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGUgbXVzdCBoYXZlIGEgJ3dyaXRlJyBhdHRyaWJ1dGUiKQogICAgICAgIHNlbGYuZnJhbWVyID0gX0ZyYW1lcihzZWxmLl9maWxlX3dyaXRlKQogICAgICAgIHNlbGYud3JpdGUgPSBzZWxmLmZyYW1lci53cml0ZQogICAgICAgIHNlbGYuX3dyaXRlX2xhcmdlX2J5dGVzID0gc2VsZi5mcmFtZXIud3JpdGVfbGFyZ2VfYnl0ZXMKICAgICAgICBzZWxmLm1lbW8gPSB7fQogICAgICAgIHNlbGYucHJvdG8gPSBpbnQocHJvdG9jb2wpCiAgICAgICAgc2VsZi5iaW4gPSBwcm90b2NvbCA+PSAxCiAgICAgICAgc2VsZi5mYXN0ID0gMAogICAgICAgIHNlbGYuZml4X2ltcG9ydHMgPSBmaXhfaW1wb3J0cyBhbmQgcHJvdG9jb2wgPCAzCgogICAgZGVmIGNsZWFyX21lbW8oc2VsZik6CiAgICAgICAgIiIiQ2xlYXJzIHRoZSBwaWNrbGVyJ3MgIm1lbW8iLgoKICAgICAgICBUaGUgbWVtbyBpcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCByZW1lbWJlcnMgd2hpY2ggb2JqZWN0cyB0aGUKICAgICAgICBwaWNrbGVyIGhhcyBhbHJlYWR5IHNlZW4sIHNvIHRoYXQgc2hhcmVkIG9yIHJlY3Vyc2l2ZSBvYmplY3RzCiAgICAgICAgYXJlIHBpY2tsZWQgYnkgcmVmZXJlbmNlIGFuZCBub3QgYnkgdmFsdWUuICBUaGlzIG1ldGhvZCBpcwogICAgICAgIHVzZWZ1bCB3aGVuIHJlLXVzaW5nIHBpY2tsZXJzLgogICAgICAgICIiIgogICAgICAgIHNlbGYubWVtby5jbGVhcigpCgogICAgZGVmIGR1bXAoc2VsZiwgb2JqKToKICAgICAgICAiIiJXcml0ZSBhIHBpY2tsZWQgcmVwcmVzZW50YXRpb24gb2Ygb2JqIHRvIHRoZSBvcGVuIGZpbGUuIiIiCiAgICAgICAgIyBDaGVjayB3aGV0aGVyIFBpY2tsZXIgd2FzIGluaXRpYWxpemVkIGNvcnJlY3RseS4gVGhpcyBpcwogICAgICAgICMgb25seSBuZWVkZWQgdG8gbWltaWMgdGhlIGJlaGF2aW9yIG9mIF9waWNrbGUuUGlja2xlci5kdW1wKCkuCiAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgIl9maWxlX3dyaXRlIik6CiAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoIlBpY2tsZXIuX19pbml0X18oKSB3YXMgbm90IGNhbGxlZCBieSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLl9faW5pdF9fKCkiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCkpCiAgICAgICAgaWYgc2VsZi5wcm90byA+PSAyOgogICAgICAgICAgICBzZWxmLndyaXRlKFBST1RPICsgcGFjaygiPEIiLCBzZWxmLnByb3RvKSkKICAgICAgICBpZiBzZWxmLnByb3RvID49IDQ6CiAgICAgICAgICAgIHNlbGYuZnJhbWVyLnN0YXJ0X2ZyYW1pbmcoKQogICAgICAgIHNlbGYuc2F2ZShvYmopCiAgICAgICAgc2VsZi53cml0ZShTVE9QKQogICAgICAgIHNlbGYuZnJhbWVyLmVuZF9mcmFtaW5nKCkKCiAgICBkZWYgbWVtb2l6ZShzZWxmLCBvYmopOgogICAgICAgICIiIlN0b3JlIGFuIG9iamVjdCBpbiB0aGUgbWVtby4iIiIKCiAgICAgICAgIyBUaGUgUGlja2xlciBtZW1vIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG9iamVjdCBpZHMgdG8gMi10dXBsZXMKICAgICAgICAjIHRoYXQgY29udGFpbiB0aGUgVW5waWNrbGVyIG1lbW8ga2V5IGFuZCB0aGUgb2JqZWN0IGJlaW5nIG1lbW9pemVkLgogICAgICAgICMgVGhlIG1lbW8ga2V5IGlzIHdyaXR0ZW4gdG8gdGhlIHBpY2tsZSBhbmQgd2lsbCBiZWNvbWUKICAgICAgICAjIHRoZSBrZXkgaW4gdGhlIFVucGlja2xlcidzIG1lbW8uICBUaGUgb2JqZWN0IGlzIHN0b3JlZCBpbiB0aGUKICAgICAgICAjIFBpY2tsZXIgbWVtbyBzbyB0aGF0IHRyYW5zaWVudCBvYmplY3RzIGFyZSBrZXB0IGFsaXZlIGR1cmluZwogICAgICAgICMgcGlja2xpbmcuCgogICAgICAgICMgVGhlIHVzZSBvZiB0aGUgVW5waWNrbGVyIG1lbW8gbGVuZ3RoIGFzIHRoZSBtZW1vIGtleSBpcyBqdXN0IGEKICAgICAgICAjIGNvbnZlbnRpb24uICBUaGUgb25seSByZXF1aXJlbWVudCBpcyB0aGF0IHRoZSBtZW1vIHZhbHVlcyBiZSB1bmlxdWUuCiAgICAgICAgIyBCdXQgdGhlcmUgYXBwZWFycyBubyBhZHZhbnRhZ2UgdG8gYW55IG90aGVyIHNjaGVtZSwgYW5kIHRoaXMKICAgICAgICAjIHNjaGVtZSBhbGxvd3MgdGhlIFVucGlja2xlciBtZW1vIHRvIGJlIGltcGxlbWVudGVkIGFzIGEgcGxhaW4gKGJ1dAogICAgICAgICMgZ3Jvd2FibGUpIGFycmF5LCBpbmRleGVkIGJ5IG1lbW8ga2V5LgogICAgICAgIGlmIHNlbGYuZmFzdDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgYXNzZXJ0IGlkKG9iaikgbm90IGluIHNlbGYubWVtbwogICAgICAgIGlkeCA9IGxlbihzZWxmLm1lbW8pCiAgICAgICAgc2VsZi53cml0ZShzZWxmLnB1dChpZHgpKQogICAgICAgIHNlbGYubWVtb1tpZChvYmopXSA9IGlkeCwgb2JqCgogICAgIyBSZXR1cm4gYSBQVVQgKEJJTlBVVCwgTE9OR19CSU5QVVQpIG9wY29kZSBzdHJpbmcsIHdpdGggYXJndW1lbnQgaS4KICAgIGRlZiBwdXQoc2VsZiwgaWR4KToKICAgICAgICBpZiBzZWxmLnByb3RvID49IDQ6CiAgICAgICAgICAgIHJldHVybiBNRU1PSVpFCiAgICAgICAgZWxpZiBzZWxmLmJpbjoKICAgICAgICAgICAgaWYgaWR4IDwgMjU2OgogICAgICAgICAgICAgICAgcmV0dXJuIEJJTlBVVCArIHBhY2soIjxCIiwgaWR4KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIExPTkdfQklOUFVUICsgcGFjaygiPEkiLCBpZHgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIFBVVCArIHJlcHIoaWR4KS5lbmNvZGUoImFzY2lpIikgKyBiJ1xuJwoKICAgICMgUmV0dXJuIGEgR0VUIChCSU5HRVQsIExPTkdfQklOR0VUKSBvcGNvZGUgc3RyaW5nLCB3aXRoIGFyZ3VtZW50IGkuCiAgICBkZWYgZ2V0KHNlbGYsIGkpOgogICAgICAgIGlmIHNlbGYuYmluOgogICAgICAgICAgICBpZiBpIDwgMjU2OgogICAgICAgICAgICAgICAgcmV0dXJuIEJJTkdFVCArIHBhY2soIjxCIiwgaSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBMT05HX0JJTkdFVCArIHBhY2soIjxJIiwgaSkKCiAgICAgICAgcmV0dXJuIEdFVCArIHJlcHIoaSkuZW5jb2RlKCJhc2NpaSIpICsgYidcbicKCiAgICBkZWYgc2F2ZShzZWxmLCBvYmosIHNhdmVfcGVyc2lzdGVudF9pZD1UcnVlKToKICAgICAgICBzZWxmLmZyYW1lci5jb21taXRfZnJhbWUoKQoKICAgICAgICAjIENoZWNrIGZvciBwZXJzaXN0ZW50IGlkIChkZWZpbmVkIGJ5IGEgc3ViY2xhc3MpCiAgICAgICAgcGlkID0gc2VsZi5wZXJzaXN0ZW50X2lkKG9iaikKICAgICAgICBpZiBwaWQgaXMgbm90IE5vbmUgYW5kIHNhdmVfcGVyc2lzdGVudF9pZDoKICAgICAgICAgICAgc2VsZi5zYXZlX3BlcnMocGlkKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBDaGVjayB0aGUgbWVtbwogICAgICAgIHggPSBzZWxmLm1lbW8uZ2V0KGlkKG9iaikpCiAgICAgICAgaWYgeCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi53cml0ZShzZWxmLmdldCh4WzBdKSkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHJ2ID0gTm90SW1wbGVtZW50ZWQKICAgICAgICByZWR1Y2UgPSBnZXRhdHRyKHNlbGYsICJyZWR1Y2VyX292ZXJyaWRlIiwgTm9uZSkKICAgICAgICBpZiByZWR1Y2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJ2ID0gcmVkdWNlKG9iaikKCiAgICAgICAgaWYgcnYgaXMgTm90SW1wbGVtZW50ZWQ6CiAgICAgICAgICAgICMgQ2hlY2sgdGhlIHR5cGUgZGlzcGF0Y2ggdGFibGUKICAgICAgICAgICAgdCA9IHR5cGUob2JqKQogICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaC5nZXQodCkKICAgICAgICAgICAgaWYgZiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGYoc2VsZiwgb2JqKSAgIyBDYWxsIHVuYm91bmQgbWV0aG9kIHdpdGggZXhwbGljaXQgc2VsZgogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICAjIENoZWNrIHByaXZhdGUgZGlzcGF0Y2ggdGFibGUgaWYgYW55LCBvciBlbHNlCiAgICAgICAgICAgICMgY29weXJlZy5kaXNwYXRjaF90YWJsZQogICAgICAgICAgICByZWR1Y2UgPSBnZXRhdHRyKHNlbGYsICdkaXNwYXRjaF90YWJsZScsIGRpc3BhdGNoX3RhYmxlKS5nZXQodCkKICAgICAgICAgICAgaWYgcmVkdWNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcnYgPSByZWR1Y2Uob2JqKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgYSBjbGFzcyB3aXRoIGEgY3VzdG9tIG1ldGFjbGFzczsgdHJlYXQgYXMgcmVndWxhcgogICAgICAgICAgICAgICAgIyBjbGFzcwogICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0LCB0eXBlKToKICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVfZ2xvYmFsKG9iaikKICAgICAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIF9fcmVkdWNlX2V4X18gbWV0aG9kLCBmYWxsIGJhY2sgdG8gX19yZWR1Y2VfXwogICAgICAgICAgICAgICAgcmVkdWNlID0gZ2V0YXR0cihvYmosICJfX3JlZHVjZV9leF9fIiwgTm9uZSkKICAgICAgICAgICAgICAgIGlmIHJlZHVjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBydiA9IHJlZHVjZShzZWxmLnByb3RvKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByZWR1Y2UgPSBnZXRhdHRyKG9iaiwgIl9fcmVkdWNlX18iLCBOb25lKQogICAgICAgICAgICAgICAgICAgIGlmIHJlZHVjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgcnYgPSByZWR1Y2UoKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoIkNhbid0IHBpY2tsZSAlciBvYmplY3Q6ICVyIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQuX19uYW1lX18sIG9iaikpCgogICAgICAgICMgQ2hlY2sgZm9yIHN0cmluZyByZXR1cm5lZCBieSByZWR1Y2UoKSwgbWVhbmluZyAic2F2ZSBhcyBnbG9iYWwiCiAgICAgICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKICAgICAgICAgICAgc2VsZi5zYXZlX2dsb2JhbChvYmosIHJ2KQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBBc3NlcnQgdGhhdCByZWR1Y2UoKSByZXR1cm5lZCBhIHR1cGxlCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocnYsIHR1cGxlKToKICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigiJXMgbXVzdCByZXR1cm4gc3RyaW5nIG9yIHR1cGxlIiAlIHJlZHVjZSkKCiAgICAgICAgIyBBc3NlcnQgdGhhdCBpdCByZXR1cm5lZCBhbiBhcHByb3ByaWF0ZWx5IHNpemVkIHR1cGxlCiAgICAgICAgbCA9IGxlbihydikKICAgICAgICBpZiBub3QgKDIgPD0gbCA8PSA2KToKICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigiVHVwbGUgcmV0dXJuZWQgYnkgJXMgbXVzdCBoYXZlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvIHRvIHNpeCBlbGVtZW50cyIgJSByZWR1Y2UpCgogICAgICAgICMgU2F2ZSB0aGUgcmVkdWNlKCkgb3V0cHV0IGFuZCBmaW5hbGx5IG1lbW9pemUgdGhlIG9iamVjdAogICAgICAgIHNlbGYuc2F2ZV9yZWR1Y2Uob2JqPW9iaiwgKnJ2KQoKICAgIGRlZiBwZXJzaXN0ZW50X2lkKHNlbGYsIG9iaik6CiAgICAgICAgIyBUaGlzIGV4aXN0cyBzbyBhIHN1YmNsYXNzIGNhbiBvdmVycmlkZSBpdAogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIHNhdmVfcGVycyhzZWxmLCBwaWQpOgogICAgICAgICMgU2F2ZSBhIHBlcnNpc3RlbnQgaWQgcmVmZXJlbmNlCiAgICAgICAgaWYgc2VsZi5iaW46CiAgICAgICAgICAgIHNlbGYuc2F2ZShwaWQsIHNhdmVfcGVyc2lzdGVudF9pZD1GYWxzZSkKICAgICAgICAgICAgc2VsZi53cml0ZShCSU5QRVJTSUQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi53cml0ZShQRVJTSUQgKyBzdHIocGlkKS5lbmNvZGUoImFzY2lpIikgKyBiJ1xuJykKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgInBlcnNpc3RlbnQgSURzIGluIHByb3RvY29sIDAgbXVzdCBiZSBBU0NJSSBzdHJpbmdzIikKCiAgICBkZWYgc2F2ZV9yZWR1Y2Uoc2VsZiwgZnVuYywgYXJncywgc3RhdGU9Tm9uZSwgbGlzdGl0ZW1zPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgZGljdGl0ZW1zPU5vbmUsIHN0YXRlX3NldHRlcj1Ob25lLCAqLCBvYmo9Tm9uZSk6CiAgICAgICAgIyBUaGlzIEFQSSBpcyBjYWxsZWQgYnkgc29tZSBzdWJjbGFzc2VzCgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIHR1cGxlKToKICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigiYXJncyBmcm9tIHNhdmVfcmVkdWNlKCkgbXVzdCBiZSBhIHR1cGxlIikKICAgICAgICBpZiBub3QgY2FsbGFibGUoZnVuYyk6CiAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoImZ1bmMgZnJvbSBzYXZlX3JlZHVjZSgpIG11c3QgYmUgY2FsbGFibGUiKQoKICAgICAgICBzYXZlID0gc2VsZi5zYXZlCiAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCgogICAgICAgIGZ1bmNfbmFtZSA9IGdldGF0dHIoZnVuYywgIl9fbmFtZV9fIiwgIiIpCiAgICAgICAgaWYgc2VsZi5wcm90byA+PSAyIGFuZCBmdW5jX25hbWUgPT0gIl9fbmV3b2JqX2V4X18iOgogICAgICAgICAgICBjbHMsIGFyZ3MsIGt3YXJncyA9IGFyZ3MKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoY2xzLCAiX19uZXdfXyIpOgogICAgICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigiYXJnc1swXSBmcm9tIHt9IGFyZ3MgaGFzIG5vIF9fbmV3X18iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZnVuY19uYW1lKSkKICAgICAgICAgICAgaWYgb2JqIGlzIG5vdCBOb25lIGFuZCBjbHMgaXMgbm90IG9iai5fX2NsYXNzX186CiAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgdGhlIHdyb25nIGNsYXNzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGZ1bmNfbmFtZSkpCiAgICAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKICAgICAgICAgICAgICAgIHNhdmUoY2xzKQogICAgICAgICAgICAgICAgc2F2ZShhcmdzKQogICAgICAgICAgICAgICAgc2F2ZShrd2FyZ3MpCiAgICAgICAgICAgICAgICB3cml0ZShORVdPQkpfRVgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmdW5jID0gcGFydGlhbChjbHMuX19uZXdfXywgY2xzLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICBzYXZlKGZ1bmMpCiAgICAgICAgICAgICAgICBzYXZlKCgpKQogICAgICAgICAgICAgICAgd3JpdGUoUkVEVUNFKQogICAgICAgIGVsaWYgc2VsZi5wcm90byA+PSAyIGFuZCBmdW5jX25hbWUgPT0gIl9fbmV3b2JqX18iOgogICAgICAgICAgICAjIEEgX19yZWR1Y2VfXyBpbXBsZW1lbnRhdGlvbiBjYW4gZGlyZWN0IHByb3RvY29sIDIgb3IgbmV3ZXIgdG8KICAgICAgICAgICAgIyB1c2UgdGhlIG1vcmUgZWZmaWNpZW50IE5FV09CSiBvcGNvZGUsIHdoaWxlIHN0aWxsCiAgICAgICAgICAgICMgYWxsb3dpbmcgcHJvdG9jb2wgMCBhbmQgMSB0byB3b3JrIG5vcm1hbGx5LiAgRm9yIHRoaXMgdG8KICAgICAgICAgICAgIyB3b3JrLCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgX19yZWR1Y2VfXyBzaG91bGQgYmUKICAgICAgICAgICAgIyBjYWxsZWQgX19uZXdvYmpfXywgYW5kIGl0cyBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYQogICAgICAgICAgICAjIGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGZvciBfX25ld29ial9fCiAgICAgICAgICAgICMgc2hvdWxkIGJlIGFzIGZvbGxvd3MsIGFsdGhvdWdoIHBpY2tsZSBoYXMgbm8gd2F5IHRvCiAgICAgICAgICAgICMgdmVyaWZ5IHRoaXM6CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBkZWYgX19uZXdvYmpfXyhjbHMsICphcmdzKToKICAgICAgICAgICAgIyAgICAgcmV0dXJuIGNscy5fX25ld19fKGNscywgKmFyZ3MpCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBQcm90b2NvbHMgMCBhbmQgMSB3aWxsIHBpY2tsZSBhIHJlZmVyZW5jZSB0byBfX25ld29ial9fLAogICAgICAgICAgICAjIHdoaWxlIHByb3RvY29sIDIgKGFuZCBhYm92ZSkgd2lsbCBwaWNrbGUgYSByZWZlcmVuY2UgdG8KICAgICAgICAgICAgIyBjbHMsIHRoZSByZW1haW5pbmcgYXJncyB0dXBsZSwgYW5kIHRoZSBORVdPQkogY29kZSwKICAgICAgICAgICAgIyB3aGljaCBjYWxscyBjbHMuX19uZXdfXyhjbHMsICphcmdzKSBhdCB1bnBpY2tsaW5nIHRpbWUKICAgICAgICAgICAgIyAoc2VlIGxvYWRfbmV3b2JqIGJlbG93KS4gIElmIF9fcmVkdWNlX18gcmV0dXJucyBhCiAgICAgICAgICAgICMgdGhyZWUtdHVwbGUsIHRoZSBzdGF0ZSBmcm9tIHRoZSB0aGlyZCB0dXBsZSBpdGVtIHdpbGwgYmUKICAgICAgICAgICAgIyBwaWNrbGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHByb3RvY29sLCBjYWxsaW5nIF9fc2V0c3RhdGVfXwogICAgICAgICAgICAjIGF0IHVucGlja2xpbmcgdGltZSAoc2VlIGxvYWRfYnVpbGQgYmVsb3cpLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIHN0YW5kYXJkIF9fbmV3b2JqX18gaW1wbGVtZW50YXRpb24gZXhpc3RzOwogICAgICAgICAgICAjIHlvdSBoYXZlIHRvIHByb3ZpZGUgeW91ciBvd24uICBUaGlzIGlzIHRvIGVuZm9yY2UKICAgICAgICAgICAgIyBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDIuMiAocGlja2xlcyB3cml0dGVuIHVzaW5nCiAgICAgICAgICAgICMgcHJvdG9jb2wgMCBvciAxIGluIFB5dGhvbiAyLjMgc2hvdWxkIGJlIHVucGlja2xhYmxlIGJ5CiAgICAgICAgICAgICMgUHl0aG9uIDIuMikuCiAgICAgICAgICAgIGNscyA9IGFyZ3NbMF0KICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoY2xzLCAiX19uZXdfXyIpOgogICAgICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigKICAgICAgICAgICAgICAgICAgICAiYXJnc1swXSBmcm9tIF9fbmV3b2JqX18gYXJncyBoYXMgbm8gX19uZXdfXyIpCiAgICAgICAgICAgIGlmIG9iaiBpcyBub3QgTm9uZSBhbmQgY2xzIGlzIG5vdCBvYmouX19jbGFzc19fOgogICAgICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigKICAgICAgICAgICAgICAgICAgICAiYXJnc1swXSBmcm9tIF9fbmV3b2JqX18gYXJncyBoYXMgdGhlIHdyb25nIGNsYXNzIikKICAgICAgICAgICAgYXJncyA9IGFyZ3NbMTpdCiAgICAgICAgICAgIHNhdmUoY2xzKQogICAgICAgICAgICBzYXZlKGFyZ3MpCiAgICAgICAgICAgIHdyaXRlKE5FV09CSikKICAgICAgICBlbHNlOgogICAgICAgICAgICBzYXZlKGZ1bmMpCiAgICAgICAgICAgIHNhdmUoYXJncykKICAgICAgICAgICAgd3JpdGUoUkVEVUNFKQoKICAgICAgICBpZiBvYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgSWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5IGluIHRoZSBtZW1vLCB0aGlzIG1lYW5zIGl0IGlzCiAgICAgICAgICAgICMgcmVjdXJzaXZlLiBJbiB0aGlzIGNhc2UsIHRocm93IGF3YXkgZXZlcnl0aGluZyB3ZSBwdXQgb24gdGhlCiAgICAgICAgICAgICMgc3RhY2ssIGFuZCBmZXRjaCB0aGUgb2JqZWN0IGJhY2sgZnJvbSB0aGUgbWVtby4KICAgICAgICAgICAgaWYgaWQob2JqKSBpbiBzZWxmLm1lbW86CiAgICAgICAgICAgICAgICB3cml0ZShQT1AgKyBzZWxmLmdldChzZWxmLm1lbW9baWQob2JqKV1bMF0pKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5tZW1vaXplKG9iaikKCiAgICAgICAgIyBNb3JlIG5ldyBzcGVjaWFsIGNhc2VzICh0aGF0IHdvcmsgd2l0aCBvbGRlciBwcm90b2NvbHMgYXMKICAgICAgICAjIHdlbGwpOiB3aGVuIF9fcmVkdWNlX18gcmV0dXJucyBhIHR1cGxlIHdpdGggNCBvciA1IGl0ZW1zLAogICAgICAgICMgdGhlIDR0aCBhbmQgNXRoIGl0ZW0gc2hvdWxkIGJlIGl0ZXJhdG9ycyB0aGF0IHByb3ZpZGUgbGlzdAogICAgICAgICMgaXRlbXMgYW5kIGRpY3QgaXRlbXMgKGFzIChrZXksIHZhbHVlKSB0dXBsZXMpLCBvciBOb25lLgoKICAgICAgICBpZiBsaXN0aXRlbXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2JhdGNoX2FwcGVuZHMobGlzdGl0ZW1zKQoKICAgICAgICBpZiBkaWN0aXRlbXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2JhdGNoX3NldGl0ZW1zKGRpY3RpdGVtcykKCiAgICAgICAgaWYgc3RhdGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHN0YXRlX3NldHRlciBpcyBOb25lOgogICAgICAgICAgICAgICAgc2F2ZShzdGF0ZSkKICAgICAgICAgICAgICAgIHdyaXRlKEJVSUxEKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBJZiBhIHN0YXRlX3NldHRlciBpcyBzcGVjaWZpZWQsIGNhbGwgaXQgaW5zdGVhZCBvZiBsb2FkX2J1aWxkCiAgICAgICAgICAgICAgICAjIHRvIHVwZGF0ZSBvYmoncyB3aXRoIGl0cyBwcmV2aW91cyBzdGF0ZS4KICAgICAgICAgICAgICAgICMgRmlyc3QsIHB1c2ggc3RhdGVfc2V0dGVyIGFuZCBpdHMgdHVwbGUgb2YgZXhwZWN0ZWQgYXJndW1lbnRzCiAgICAgICAgICAgICAgICAjIChvYmosIHN0YXRlKSBvbnRvIHRoZSBzdGFjay4KICAgICAgICAgICAgICAgIHNhdmUoc3RhdGVfc2V0dGVyKQogICAgICAgICAgICAgICAgc2F2ZShvYmopICAjIHNpbXBsZSBCSU5HRVQgb3Bjb2RlIGFzIG9iaiBpcyBhbHJlYWR5IG1lbW9pemVkLgogICAgICAgICAgICAgICAgc2F2ZShzdGF0ZSkKICAgICAgICAgICAgICAgIHdyaXRlKFRVUExFMikKICAgICAgICAgICAgICAgICMgVHJpZ2dlciBhIHN0YXRlX3NldHRlcihvYmosIHN0YXRlKSBmdW5jdGlvbiBjYWxsLgogICAgICAgICAgICAgICAgd3JpdGUoUkVEVUNFKQogICAgICAgICAgICAgICAgIyBUaGUgcHVycG9zZSBvZiBzdGF0ZV9zZXR0ZXIgaXMgdG8gY2Fycnktb3V0IGFuCiAgICAgICAgICAgICAgICAjIGlucGxhY2UgbW9kaWZpY2F0aW9uIG9mIG9iai4gV2UgZG8gbm90IGNhcmUgYWJvdXQgd2hhdCB0aGUKICAgICAgICAgICAgICAgICMgbWV0aG9kIG1pZ2h0IHJldHVybiwgc28gaXRzIG91dHB1dCBpcyBldmVudHVhbGx5IHJlbW92ZWQgZnJvbQogICAgICAgICAgICAgICAgIyB0aGUgc3RhY2suCiAgICAgICAgICAgICAgICB3cml0ZShQT1ApCgogICAgIyBNZXRob2RzIGJlbG93IHRoaXMgcG9pbnQgYXJlIGRpc3BhdGNoZWQgdGhyb3VnaCB0aGUgZGlzcGF0Y2ggdGFibGUKCiAgICBkaXNwYXRjaCA9IHt9CgogICAgZGVmIHNhdmVfbm9uZShzZWxmLCBvYmopOgogICAgICAgIHNlbGYud3JpdGUoTk9ORSkKICAgIGRpc3BhdGNoW3R5cGUoTm9uZSldID0gc2F2ZV9ub25lCgogICAgZGVmIHNhdmVfYm9vbChzZWxmLCBvYmopOgogICAgICAgIGlmIHNlbGYucHJvdG8gPj0gMjoKICAgICAgICAgICAgc2VsZi53cml0ZShORVdUUlVFIGlmIG9iaiBlbHNlIE5FV0ZBTFNFKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYud3JpdGUoVFJVRSBpZiBvYmogZWxzZSBGQUxTRSkKICAgIGRpc3BhdGNoW2Jvb2xdID0gc2F2ZV9ib29sCgogICAgZGVmIHNhdmVfbG9uZyhzZWxmLCBvYmopOgogICAgICAgIGlmIHNlbGYuYmluOgogICAgICAgICAgICAjIElmIHRoZSBpbnQgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBpbiBhIHNpZ25lZCA0LWJ5dGUgMidzLWNvbXAKICAgICAgICAgICAgIyBmb3JtYXQsIHdlIGNhbiBzdG9yZSBpdCBtb3JlIGVmZmljaWVudGx5IHRoYW4gdGhlIGdlbmVyYWwKICAgICAgICAgICAgIyBjYXNlLgogICAgICAgICAgICAjIEZpcnN0IG9uZS0gYW5kIHR3by1ieXRlIHVuc2lnbmVkIGludHM6CiAgICAgICAgICAgIGlmIG9iaiA+PSAwOgogICAgICAgICAgICAgICAgaWYgb2JqIDw9IDB4ZmY6CiAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShCSU5JTlQxICsgcGFjaygiPEIiLCBvYmopKQogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgaWYgb2JqIDw9IDB4ZmZmZjoKICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKEJJTklOVDIgKyBwYWNrKCI8SCIsIG9iaikpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICMgTmV4dCBjaGVjayBmb3IgNC1ieXRlIHNpZ25lZCBpbnRzOgogICAgICAgICAgICBpZiAtMHg4MDAwMDAwMCA8PSBvYmogPD0gMHg3ZmZmZmZmZjoKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoQklOSU5UICsgcGFjaygiPGkiLCBvYmopKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgc2VsZi5wcm90byA+PSAyOgogICAgICAgICAgICBlbmNvZGVkID0gZW5jb2RlX2xvbmcob2JqKQogICAgICAgICAgICBuID0gbGVuKGVuY29kZWQpCiAgICAgICAgICAgIGlmIG4gPCAyNTY6CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKExPTkcxICsgcGFjaygiPEIiLCBuKSArIGVuY29kZWQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKExPTkc0ICsgcGFjaygiPGkiLCBuKSArIGVuY29kZWQpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIC0weDgwMDAwMDAwIDw9IG9iaiA8PSAweDdmZmZmZmZmOgogICAgICAgICAgICBzZWxmLndyaXRlKElOVCArIHJlcHIob2JqKS5lbmNvZGUoImFzY2lpIikgKyBiJ1xuJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLndyaXRlKExPTkcgKyByZXByKG9iaikuZW5jb2RlKCJhc2NpaSIpICsgYidMXG4nKQogICAgZGlzcGF0Y2hbaW50XSA9IHNhdmVfbG9uZwoKICAgIGRlZiBzYXZlX2Zsb2F0KHNlbGYsIG9iaik6CiAgICAgICAgaWYgc2VsZi5iaW46CiAgICAgICAgICAgIHNlbGYud3JpdGUoQklORkxPQVQgKyBwYWNrKCc+ZCcsIG9iaikpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi53cml0ZShGTE9BVCArIHJlcHIob2JqKS5lbmNvZGUoImFzY2lpIikgKyBiJ1xuJykKICAgIGRpc3BhdGNoW2Zsb2F0XSA9IHNhdmVfZmxvYXQKCiAgICBkZWYgc2F2ZV9ieXRlcyhzZWxmLCBvYmopOgogICAgICAgIGlmIHNlbGYucHJvdG8gPCAzOgogICAgICAgICAgICBpZiBub3Qgb2JqOiAjIGJ5dGVzIG9iamVjdCBpcyBlbXB0eQogICAgICAgICAgICAgICAgc2VsZi5zYXZlX3JlZHVjZShieXRlcywgKCksIG9iaj1vYmopCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKGNvZGVjcy5lbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHIob2JqLCAnbGF0aW4xJyksICdsYXRpbjEnKSwgb2JqPW9iaikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgbiA9IGxlbihvYmopCiAgICAgICAgaWYgbiA8PSAweGZmOgogICAgICAgICAgICBzZWxmLndyaXRlKFNIT1JUX0JJTkJZVEVTICsgcGFjaygiPEIiLCBuKSArIG9iaikKICAgICAgICBlbGlmIG4gPiAweGZmZmZmZmZmIGFuZCBzZWxmLnByb3RvID49IDQ6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlX2xhcmdlX2J5dGVzKEJJTkJZVEVTOCArIHBhY2soIjxRIiwgbiksIG9iaikKICAgICAgICBlbGlmIG4gPj0gc2VsZi5mcmFtZXIuX0ZSQU1FX1NJWkVfVEFSR0VUOgogICAgICAgICAgICBzZWxmLl93cml0ZV9sYXJnZV9ieXRlcyhCSU5CWVRFUyArIHBhY2soIjxJIiwgbiksIG9iaikKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLndyaXRlKEJJTkJZVEVTICsgcGFjaygiPEkiLCBuKSArIG9iaikKICAgICAgICBzZWxmLm1lbW9pemUob2JqKQogICAgZGlzcGF0Y2hbYnl0ZXNdID0gc2F2ZV9ieXRlcwoKICAgIGRlZiBzYXZlX2J5dGVhcnJheShzZWxmLCBvYmopOgogICAgICAgIGlmIHNlbGYucHJvdG8gPCA1OgogICAgICAgICAgICBpZiBub3Qgb2JqOiAgIyBieXRlYXJyYXkgaXMgZW1wdHkKICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9yZWR1Y2UoYnl0ZWFycmF5LCAoKSwgb2JqPW9iaikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9yZWR1Y2UoYnl0ZWFycmF5LCAoYnl0ZXMob2JqKSwpLCBvYmo9b2JqKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBuID0gbGVuKG9iaikKICAgICAgICBpZiBuID49IHNlbGYuZnJhbWVyLl9GUkFNRV9TSVpFX1RBUkdFVDoKICAgICAgICAgICAgc2VsZi5fd3JpdGVfbGFyZ2VfYnl0ZXMoQllURUFSUkFZOCArIHBhY2soIjxRIiwgbiksIG9iaikKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLndyaXRlKEJZVEVBUlJBWTggKyBwYWNrKCI8USIsIG4pICsgb2JqKQogICAgICAgIHNlbGYubWVtb2l6ZShvYmopCiAgICBkaXNwYXRjaFtieXRlYXJyYXldID0gc2F2ZV9ieXRlYXJyYXkKCiAgICBpZiBfSEFWRV9QSUNLTEVfQlVGRkVSOgogICAgICAgIGRlZiBzYXZlX3BpY2tsZWJ1ZmZlcihzZWxmLCBvYmopOgogICAgICAgICAgICBpZiBzZWxmLnByb3RvIDwgNToKICAgICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoIlBpY2tsZUJ1ZmZlciBjYW4gb25seSBwaWNrbGVkIHdpdGggIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdG9jb2wgPj0gNSIpCiAgICAgICAgICAgIHdpdGggb2JqLnJhdygpIGFzIG06CiAgICAgICAgICAgICAgICBpZiBub3QgbS5jb250aWd1b3VzOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoIlBpY2tsZUJ1ZmZlciBjYW4gbm90IGJlIHBpY2tsZWQgd2hlbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9pbnRpbmcgdG8gYSBub24tY29udGlndW91cyBidWZmZXIiKQogICAgICAgICAgICAgICAgaW5fYmFuZCA9IFRydWUKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2J1ZmZlcl9jYWxsYmFjayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBpbl9iYW5kID0gYm9vbChzZWxmLl9idWZmZXJfY2FsbGJhY2sob2JqKSkKICAgICAgICAgICAgICAgIGlmIGluX2JhbmQ6CiAgICAgICAgICAgICAgICAgICAgIyBXcml0ZSBkYXRhIGluLWJhbmQKICAgICAgICAgICAgICAgICAgICAjIFhYWCBUaGUgQyBpbXBsZW1lbnRhdGlvbiBhdm9pZHMgYSBjb3B5IGhlcmUKICAgICAgICAgICAgICAgICAgICBpZiBtLnJlYWRvbmx5OgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVfYnl0ZXMobS50b2J5dGVzKCkpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlX2J5dGVhcnJheShtLnRvYnl0ZXMoKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBXcml0ZSBkYXRhIG91dC1vZi1iYW5kCiAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShORVhUX0JVRkZFUikKICAgICAgICAgICAgICAgICAgICBpZiBtLnJlYWRvbmx5OgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKFJFQURPTkxZX0JVRkZFUikKCiAgICAgICAgZGlzcGF0Y2hbUGlja2xlQnVmZmVyXSA9IHNhdmVfcGlja2xlYnVmZmVyCgogICAgZGVmIHNhdmVfc3RyKHNlbGYsIG9iaik6CiAgICAgICAgaWYgc2VsZi5iaW46CiAgICAgICAgICAgIGVuY29kZWQgPSBvYmouZW5jb2RlKCd1dGYtOCcsICdzdXJyb2dhdGVwYXNzJykKICAgICAgICAgICAgbiA9IGxlbihlbmNvZGVkKQogICAgICAgICAgICBpZiBuIDw9IDB4ZmYgYW5kIHNlbGYucHJvdG8gPj0gNDoKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoU0hPUlRfQklOVU5JQ09ERSArIHBhY2soIjxCIiwgbikgKyBlbmNvZGVkKQogICAgICAgICAgICBlbGlmIG4gPiAweGZmZmZmZmZmIGFuZCBzZWxmLnByb3RvID49IDQ6CiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9sYXJnZV9ieXRlcyhCSU5VTklDT0RFOCArIHBhY2soIjxRIiwgbiksIGVuY29kZWQpCiAgICAgICAgICAgIGVsaWYgbiA+PSBzZWxmLmZyYW1lci5fRlJBTUVfU0laRV9UQVJHRVQ6CiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9sYXJnZV9ieXRlcyhCSU5VTklDT0RFICsgcGFjaygiPEkiLCBuKSwgZW5jb2RlZCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoQklOVU5JQ09ERSArIHBhY2soIjxJIiwgbikgKyBlbmNvZGVkKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9iaiA9IG9iai5yZXBsYWNlKCJcXCIsICJcXHUwMDVjIikKICAgICAgICAgICAgb2JqID0gb2JqLnJlcGxhY2UoIlwwIiwgIlxcdTAwMDAiKQogICAgICAgICAgICBvYmogPSBvYmoucmVwbGFjZSgiXG4iLCAiXFx1MDAwYSIpCiAgICAgICAgICAgIG9iaiA9IG9iai5yZXBsYWNlKCJcciIsICJcXHUwMDBkIikKICAgICAgICAgICAgb2JqID0gb2JqLnJlcGxhY2UoIlx4MWEiLCAiXFx1MDAxYSIpICAjIEVPRiBvbiBET1MKICAgICAgICAgICAgc2VsZi53cml0ZShVTklDT0RFICsgb2JqLmVuY29kZSgncmF3LXVuaWNvZGUtZXNjYXBlJykgKwogICAgICAgICAgICAgICAgICAgICAgIGInXG4nKQogICAgICAgIHNlbGYubWVtb2l6ZShvYmopCiAgICBkaXNwYXRjaFtzdHJdID0gc2F2ZV9zdHIKCiAgICBkZWYgc2F2ZV90dXBsZShzZWxmLCBvYmopOgogICAgICAgIGlmIG5vdCBvYmo6ICMgdHVwbGUgaXMgZW1wdHkKICAgICAgICAgICAgaWYgc2VsZi5iaW46CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKEVNUFRZX1RVUExFKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZShNQVJLICsgVFVQTEUpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBuID0gbGVuKG9iaikKICAgICAgICBzYXZlID0gc2VsZi5zYXZlCiAgICAgICAgbWVtbyA9IHNlbGYubWVtbwogICAgICAgIGlmIG4gPD0gMyBhbmQgc2VsZi5wcm90byA+PSAyOgogICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBvYmo6CiAgICAgICAgICAgICAgICBzYXZlKGVsZW1lbnQpCiAgICAgICAgICAgICMgU3VidGxlLiAgU2FtZSBhcyBpbiB0aGUgYmlnIGNvbW1lbnQgYmVsb3cuCiAgICAgICAgICAgIGlmIGlkKG9iaikgaW4gbWVtbzoKICAgICAgICAgICAgICAgIGdldCA9IHNlbGYuZ2V0KG1lbW9baWQob2JqKV1bMF0pCiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKFBPUCAqIG4gKyBnZXQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKF90dXBsZXNpemUyY29kZVtuXSkKICAgICAgICAgICAgICAgIHNlbGYubWVtb2l6ZShvYmopCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIHByb3RvIDAgb3IgcHJvdG8gMSBhbmQgdHVwbGUgaXNuJ3QgZW1wdHksIG9yIHByb3RvID4gMSBhbmQgdHVwbGUKICAgICAgICAjIGhhcyBtb3JlIHRoYW4gMyBlbGVtZW50cy4KICAgICAgICB3cml0ZSA9IHNlbGYud3JpdGUKICAgICAgICB3cml0ZShNQVJLKQogICAgICAgIGZvciBlbGVtZW50IGluIG9iajoKICAgICAgICAgICAgc2F2ZShlbGVtZW50KQoKICAgICAgICBpZiBpZChvYmopIGluIG1lbW86CiAgICAgICAgICAgICMgU3VidGxlLiAgZCB3YXMgbm90IGluIG1lbW8gd2hlbiB3ZSBlbnRlcmVkIHNhdmVfdHVwbGUoKSwgc28KICAgICAgICAgICAgIyB0aGUgcHJvY2VzcyBvZiBzYXZpbmcgdGhlIHR1cGxlJ3MgZWxlbWVudHMgbXVzdCBoYXZlIHNhdmVkCiAgICAgICAgICAgICMgdGhlIHR1cGxlIGl0c2VsZjogIHRoZSB0dXBsZSBpcyByZWN1cnNpdmUuICBUaGUgcHJvcGVyIGFjdGlvbgogICAgICAgICAgICAjIG5vdyBpcyB0byB0aHJvdyBhd2F5IGV2ZXJ5dGhpbmcgd2UgcHV0IG9uIHRoZSBzdGFjaywgYW5kCiAgICAgICAgICAgICMgc2ltcGx5IEdFVCB0aGUgdHVwbGUgKGl0J3MgYWxyZWFkeSBjb25zdHJ1Y3RlZCkuICBUaGlzIGNoZWNrCiAgICAgICAgICAgICMgY291bGQgaGF2ZSBiZWVuIGRvbmUgaW4gdGhlICJmb3IgZWxlbWVudCIgbG9vcCBpbnN0ZWFkLCBidXQKICAgICAgICAgICAgIyByZWN1cnNpdmUgdHVwbGVzIGFyZSBhIHJhcmUgdGhpbmcuCiAgICAgICAgICAgIGdldCA9IHNlbGYuZ2V0KG1lbW9baWQob2JqKV1bMF0pCiAgICAgICAgICAgIGlmIHNlbGYuYmluOgogICAgICAgICAgICAgICAgd3JpdGUoUE9QX01BUksgKyBnZXQpCiAgICAgICAgICAgIGVsc2U6ICAgIyBwcm90byAwIC0tIFBPUF9NQVJLIG5vdCBhdmFpbGFibGUKICAgICAgICAgICAgICAgIHdyaXRlKFBPUCAqIChuKzEpICsgZ2V0KQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBObyByZWN1cnNpb24uCiAgICAgICAgd3JpdGUoVFVQTEUpCiAgICAgICAgc2VsZi5tZW1vaXplKG9iaikKCiAgICBkaXNwYXRjaFt0dXBsZV0gPSBzYXZlX3R1cGxlCgogICAgZGVmIHNhdmVfbGlzdChzZWxmLCBvYmopOgogICAgICAgIGlmIHNlbGYuYmluOgogICAgICAgICAgICBzZWxmLndyaXRlKEVNUFRZX0xJU1QpCiAgICAgICAgZWxzZTogICAjIHByb3RvIDAgLS0gY2FuJ3QgdXNlIEVNUFRZX0xJU1QKICAgICAgICAgICAgc2VsZi53cml0ZShNQVJLICsgTElTVCkKCiAgICAgICAgc2VsZi5tZW1vaXplKG9iaikKICAgICAgICBzZWxmLl9iYXRjaF9hcHBlbmRzKG9iaikKCiAgICBkaXNwYXRjaFtsaXN0XSA9IHNhdmVfbGlzdAoKICAgIF9CQVRDSFNJWkUgPSAxMDAwCgogICAgZGVmIF9iYXRjaF9hcHBlbmRzKHNlbGYsIGl0ZW1zKToKICAgICAgICAjIEhlbHBlciB0byBiYXRjaCB1cCBBUFBFTkRTIHNlcXVlbmNlcwogICAgICAgIHNhdmUgPSBzZWxmLnNhdmUKICAgICAgICB3cml0ZSA9IHNlbGYud3JpdGUKCiAgICAgICAgaWYgbm90IHNlbGYuYmluOgogICAgICAgICAgICBmb3IgeCBpbiBpdGVtczoKICAgICAgICAgICAgICAgIHNhdmUoeCkKICAgICAgICAgICAgICAgIHdyaXRlKEFQUEVORCkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGl0ID0gaXRlcihpdGVtcykKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0bXAgPSBsaXN0KGlzbGljZShpdCwgc2VsZi5fQkFUQ0hTSVpFKSkKICAgICAgICAgICAgbiA9IGxlbih0bXApCiAgICAgICAgICAgIGlmIG4gPiAxOgogICAgICAgICAgICAgICAgd3JpdGUoTUFSSykKICAgICAgICAgICAgICAgIGZvciB4IGluIHRtcDoKICAgICAgICAgICAgICAgICAgICBzYXZlKHgpCiAgICAgICAgICAgICAgICB3cml0ZShBUFBFTkRTKQogICAgICAgICAgICBlbGlmIG46CiAgICAgICAgICAgICAgICBzYXZlKHRtcFswXSkKICAgICAgICAgICAgICAgIHdyaXRlKEFQUEVORCkKICAgICAgICAgICAgIyBlbHNlIHRtcCBpcyBlbXB0eSwgYW5kIHdlJ3JlIGRvbmUKICAgICAgICAgICAgaWYgbiA8IHNlbGYuX0JBVENIU0laRToKICAgICAgICAgICAgICAgIHJldHVybgoKICAgIGRlZiBzYXZlX2RpY3Qoc2VsZiwgb2JqKToKICAgICAgICBpZiBzZWxmLmJpbjoKICAgICAgICAgICAgc2VsZi53cml0ZShFTVBUWV9ESUNUKQogICAgICAgIGVsc2U6ICAgIyBwcm90byAwIC0tIGNhbid0IHVzZSBFTVBUWV9ESUNUCiAgICAgICAgICAgIHNlbGYud3JpdGUoTUFSSyArIERJQ1QpCgogICAgICAgIHNlbGYubWVtb2l6ZShvYmopCiAgICAgICAgc2VsZi5fYmF0Y2hfc2V0aXRlbXMob2JqLml0ZW1zKCkpCgogICAgZGlzcGF0Y2hbZGljdF0gPSBzYXZlX2RpY3QKICAgIGlmIFB5U3RyaW5nTWFwIGlzIG5vdCBOb25lOgogICAgICAgIGRpc3BhdGNoW1B5U3RyaW5nTWFwXSA9IHNhdmVfZGljdAoKICAgIGRlZiBfYmF0Y2hfc2V0aXRlbXMoc2VsZiwgaXRlbXMpOgogICAgICAgICMgSGVscGVyIHRvIGJhdGNoIHVwIFNFVElURU1TIHNlcXVlbmNlczsgcHJvdG8gPj0gMSBvbmx5CiAgICAgICAgc2F2ZSA9IHNlbGYuc2F2ZQogICAgICAgIHdyaXRlID0gc2VsZi53cml0ZQoKICAgICAgICBpZiBub3Qgc2VsZi5iaW46CiAgICAgICAgICAgIGZvciBrLCB2IGluIGl0ZW1zOgogICAgICAgICAgICAgICAgc2F2ZShrKQogICAgICAgICAgICAgICAgc2F2ZSh2KQogICAgICAgICAgICAgICAgd3JpdGUoU0VUSVRFTSkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGl0ID0gaXRlcihpdGVtcykKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0bXAgPSBsaXN0KGlzbGljZShpdCwgc2VsZi5fQkFUQ0hTSVpFKSkKICAgICAgICAgICAgbiA9IGxlbih0bXApCiAgICAgICAgICAgIGlmIG4gPiAxOgogICAgICAgICAgICAgICAgd3JpdGUoTUFSSykKICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHRtcDoKICAgICAgICAgICAgICAgICAgICBzYXZlKGspCiAgICAgICAgICAgICAgICAgICAgc2F2ZSh2KQogICAgICAgICAgICAgICAgd3JpdGUoU0VUSVRFTVMpCiAgICAgICAgICAgIGVsaWYgbjoKICAgICAgICAgICAgICAgIGssIHYgPSB0bXBbMF0KICAgICAgICAgICAgICAgIHNhdmUoaykKICAgICAgICAgICAgICAgIHNhdmUodikKICAgICAgICAgICAgICAgIHdyaXRlKFNFVElURU0pCiAgICAgICAgICAgICMgZWxzZSB0bXAgaXMgZW1wdHksIGFuZCB3ZSdyZSBkb25lCiAgICAgICAgICAgIGlmIG4gPCBzZWxmLl9CQVRDSFNJWkU6CiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICBkZWYgc2F2ZV9zZXQoc2VsZiwgb2JqKToKICAgICAgICBzYXZlID0gc2VsZi5zYXZlCiAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCgogICAgICAgIGlmIHNlbGYucHJvdG8gPCA0OgogICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKHNldCwgKGxpc3Qob2JqKSwpLCBvYmo9b2JqKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgd3JpdGUoRU1QVFlfU0VUKQogICAgICAgIHNlbGYubWVtb2l6ZShvYmopCgogICAgICAgIGl0ID0gaXRlcihvYmopCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgYmF0Y2ggPSBsaXN0KGlzbGljZShpdCwgc2VsZi5fQkFUQ0hTSVpFKSkKICAgICAgICAgICAgbiA9IGxlbihiYXRjaCkKICAgICAgICAgICAgaWYgbiA+IDA6CiAgICAgICAgICAgICAgICB3cml0ZShNQVJLKQogICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gYmF0Y2g6CiAgICAgICAgICAgICAgICAgICAgc2F2ZShpdGVtKQogICAgICAgICAgICAgICAgd3JpdGUoQURESVRFTVMpCiAgICAgICAgICAgIGlmIG4gPCBzZWxmLl9CQVRDSFNJWkU6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgIGRpc3BhdGNoW3NldF0gPSBzYXZlX3NldAoKICAgIGRlZiBzYXZlX2Zyb3plbnNldChzZWxmLCBvYmopOgogICAgICAgIHNhdmUgPSBzZWxmLnNhdmUKICAgICAgICB3cml0ZSA9IHNlbGYud3JpdGUKCiAgICAgICAgaWYgc2VsZi5wcm90byA8IDQ6CiAgICAgICAgICAgIHNlbGYuc2F2ZV9yZWR1Y2UoZnJvemVuc2V0LCAobGlzdChvYmopLCksIG9iaj1vYmopCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICB3cml0ZShNQVJLKQogICAgICAgIGZvciBpdGVtIGluIG9iajoKICAgICAgICAgICAgc2F2ZShpdGVtKQoKICAgICAgICBpZiBpZChvYmopIGluIHNlbGYubWVtbzoKICAgICAgICAgICAgIyBJZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkgaW4gdGhlIG1lbW8sIHRoaXMgbWVhbnMgaXQgaXMKICAgICAgICAgICAgIyByZWN1cnNpdmUuIEluIHRoaXMgY2FzZSwgdGhyb3cgYXdheSBldmVyeXRoaW5nIHdlIHB1dCBvbiB0aGUKICAgICAgICAgICAgIyBzdGFjaywgYW5kIGZldGNoIHRoZSBvYmplY3QgYmFjayBmcm9tIHRoZSBtZW1vLgogICAgICAgICAgICB3cml0ZShQT1BfTUFSSyArIHNlbGYuZ2V0KHNlbGYubWVtb1tpZChvYmopXVswXSkpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICB3cml0ZShGUk9aRU5TRVQpCiAgICAgICAgc2VsZi5tZW1vaXplKG9iaikKICAgIGRpc3BhdGNoW2Zyb3plbnNldF0gPSBzYXZlX2Zyb3plbnNldAoKICAgIGRlZiBzYXZlX2dsb2JhbChzZWxmLCBvYmosIG5hbWU9Tm9uZSk6CiAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCiAgICAgICAgbWVtbyA9IHNlbGYubWVtbwoKICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIG5hbWUgPSBnZXRhdHRyKG9iaiwgJ19fcXVhbG5hbWVfXycsIE5vbmUpCiAgICAgICAgaWYgbmFtZSBpcyBOb25lOgogICAgICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCgogICAgICAgIG1vZHVsZV9uYW1lID0gd2hpY2htb2R1bGUob2JqLCBuYW1lKQogICAgICAgIHRyeToKICAgICAgICAgICAgX19pbXBvcnRfXyhtb2R1bGVfbmFtZSwgbGV2ZWw9MCkKICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCiAgICAgICAgICAgIG9iajIsIHBhcmVudCA9IF9nZXRhdHRyaWJ1dGUobW9kdWxlLCBuYW1lKQogICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoCiAgICAgICAgICAgICAgICAiQ2FuJ3QgcGlja2xlICVyOiBpdCdzIG5vdCBmb3VuZCBhcyAlcy4lcyIgJQogICAgICAgICAgICAgICAgKG9iaiwgbW9kdWxlX25hbWUsIG5hbWUpKSBmcm9tIE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBvYmoyIGlzIG5vdCBvYmo6CiAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKAogICAgICAgICAgICAgICAgICAgICJDYW4ndCBwaWNrbGUgJXI6IGl0J3Mgbm90IHRoZSBzYW1lIG9iamVjdCBhcyAlcy4lcyIgJQogICAgICAgICAgICAgICAgICAgIChvYmosIG1vZHVsZV9uYW1lLCBuYW1lKSkKCiAgICAgICAgaWYgc2VsZi5wcm90byA+PSAyOgogICAgICAgICAgICBjb2RlID0gX2V4dGVuc2lvbl9yZWdpc3RyeS5nZXQoKG1vZHVsZV9uYW1lLCBuYW1lKSkKICAgICAgICAgICAgaWYgY29kZToKICAgICAgICAgICAgICAgIGFzc2VydCBjb2RlID4gMAogICAgICAgICAgICAgICAgaWYgY29kZSA8PSAweGZmOgogICAgICAgICAgICAgICAgICAgIHdyaXRlKEVYVDEgKyBwYWNrKCI8QiIsIGNvZGUpKQogICAgICAgICAgICAgICAgZWxpZiBjb2RlIDw9IDB4ZmZmZjoKICAgICAgICAgICAgICAgICAgICB3cml0ZShFWFQyICsgcGFjaygiPEgiLCBjb2RlKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgd3JpdGUoRVhUNCArIHBhY2soIjxpIiwgY29kZSkpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICBsYXN0bmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpWzJdCiAgICAgICAgaWYgcGFyZW50IGlzIG1vZHVsZToKICAgICAgICAgICAgbmFtZSA9IGxhc3RuYW1lCiAgICAgICAgIyBOb24tQVNDSUkgaWRlbnRpZmllcnMgYXJlIHN1cHBvcnRlZCBvbmx5IHdpdGggcHJvdG9jb2xzID49IDMuCiAgICAgICAgaWYgc2VsZi5wcm90byA+PSA0OgogICAgICAgICAgICBzZWxmLnNhdmUobW9kdWxlX25hbWUpCiAgICAgICAgICAgIHNlbGYuc2F2ZShuYW1lKQogICAgICAgICAgICB3cml0ZShTVEFDS19HTE9CQUwpCiAgICAgICAgZWxpZiBwYXJlbnQgaXMgbm90IG1vZHVsZToKICAgICAgICAgICAgc2VsZi5zYXZlX3JlZHVjZShnZXRhdHRyLCAocGFyZW50LCBsYXN0bmFtZSkpCiAgICAgICAgZWxpZiBzZWxmLnByb3RvID49IDM6CiAgICAgICAgICAgIHdyaXRlKEdMT0JBTCArIGJ5dGVzKG1vZHVsZV9uYW1lLCAidXRmLTgiKSArIGInXG4nICsKICAgICAgICAgICAgICAgICAgYnl0ZXMobmFtZSwgInV0Zi04IikgKyBiJ1xuJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzZWxmLmZpeF9pbXBvcnRzOgogICAgICAgICAgICAgICAgcl9uYW1lX21hcHBpbmcgPSBfY29tcGF0X3BpY2tsZS5SRVZFUlNFX05BTUVfTUFQUElORwogICAgICAgICAgICAgICAgcl9pbXBvcnRfbWFwcGluZyA9IF9jb21wYXRfcGlja2xlLlJFVkVSU0VfSU1QT1JUX01BUFBJTkcKICAgICAgICAgICAgICAgIGlmIChtb2R1bGVfbmFtZSwgbmFtZSkgaW4gcl9uYW1lX21hcHBpbmc6CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIG5hbWUgPSByX25hbWVfbWFwcGluZ1sobW9kdWxlX25hbWUsIG5hbWUpXQogICAgICAgICAgICAgICAgZWxpZiBtb2R1bGVfbmFtZSBpbiByX2ltcG9ydF9tYXBwaW5nOgogICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gcl9pbXBvcnRfbWFwcGluZ1ttb2R1bGVfbmFtZV0KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd3JpdGUoR0xPQkFMICsgYnl0ZXMobW9kdWxlX25hbWUsICJhc2NpaSIpICsgYidcbicgKwogICAgICAgICAgICAgICAgICAgICAgYnl0ZXMobmFtZSwgImFzY2lpIikgKyBiJ1xuJykKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgImNhbid0IHBpY2tsZSBnbG9iYWwgaWRlbnRpZmllciAnJXMuJXMnIHVzaW5nICIKICAgICAgICAgICAgICAgICAgICAicGlja2xlIHByb3RvY29sICVpIiAlIChtb2R1bGUsIG5hbWUsIHNlbGYucHJvdG8pKSBmcm9tIE5vbmUKCiAgICAgICAgc2VsZi5tZW1vaXplKG9iaikKCiAgICBkZWYgc2F2ZV90eXBlKHNlbGYsIG9iaik6CiAgICAgICAgaWYgb2JqIGlzIHR5cGUoTm9uZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnNhdmVfcmVkdWNlKHR5cGUsIChOb25lLCksIG9iaj1vYmopCiAgICAgICAgZWxpZiBvYmogaXMgdHlwZShOb3RJbXBsZW1lbnRlZCk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnNhdmVfcmVkdWNlKHR5cGUsIChOb3RJbXBsZW1lbnRlZCwpLCBvYmo9b2JqKQogICAgICAgIGVsaWYgb2JqIGlzIHR5cGUoLi4uKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2F2ZV9yZWR1Y2UodHlwZSwgKC4uLiwpLCBvYmo9b2JqKQogICAgICAgIHJldHVybiBzZWxmLnNhdmVfZ2xvYmFsKG9iaikKCiAgICBkaXNwYXRjaFtGdW5jdGlvblR5cGVdID0gc2F2ZV9nbG9iYWwKICAgIGRpc3BhdGNoW3R5cGVdID0gc2F2ZV90eXBlCgoKIyBVbnBpY2tsaW5nIG1hY2hpbmVyeQoKY2xhc3MgX1VucGlja2xlcjoKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgKiwgZml4X2ltcG9ydHM9VHJ1ZSwKICAgICAgICAgICAgICAgICBlbmNvZGluZz0iQVNDSUkiLCBlcnJvcnM9InN0cmljdCIsIGJ1ZmZlcnM9Tm9uZSk6CiAgICAgICAgIiIiVGhpcyB0YWtlcyBhIGJpbmFyeSBmaWxlIGZvciByZWFkaW5nIGEgcGlja2xlIGRhdGEgc3RyZWFtLgoKICAgICAgICBUaGUgcHJvdG9jb2wgdmVyc2lvbiBvZiB0aGUgcGlja2xlIGlzIGRldGVjdGVkIGF1dG9tYXRpY2FsbHksIHNvCiAgICAgICAgbm8gcHJvdG8gYXJndW1lbnQgaXMgbmVlZGVkLgoKICAgICAgICBUaGUgYXJndW1lbnQgKmZpbGUqIG11c3QgaGF2ZSB0d28gbWV0aG9kcywgYSByZWFkKCkgbWV0aG9kIHRoYXQKICAgICAgICB0YWtlcyBhbiBpbnRlZ2VyIGFyZ3VtZW50LCBhbmQgYSByZWFkbGluZSgpIG1ldGhvZCB0aGF0IHJlcXVpcmVzCiAgICAgICAgbm8gYXJndW1lbnRzLiAgQm90aCBtZXRob2RzIHNob3VsZCByZXR1cm4gYnl0ZXMuICBUaHVzICpmaWxlKgogICAgICAgIGNhbiBiZSBhIGJpbmFyeSBmaWxlIG9iamVjdCBvcGVuZWQgZm9yIHJlYWRpbmcsIGFuIGlvLkJ5dGVzSU8KICAgICAgICBvYmplY3QsIG9yIGFueSBvdGhlciBjdXN0b20gb2JqZWN0IHRoYXQgbWVldHMgdGhpcyBpbnRlcmZhY2UuCgogICAgICAgIFRoZSBmaWxlLWxpa2Ugb2JqZWN0IG11c3QgaGF2ZSB0d28gbWV0aG9kcywgYSByZWFkKCkgbWV0aG9kCiAgICAgICAgdGhhdCB0YWtlcyBhbiBpbnRlZ2VyIGFyZ3VtZW50LCBhbmQgYSByZWFkbGluZSgpIG1ldGhvZCB0aGF0CiAgICAgICAgcmVxdWlyZXMgbm8gYXJndW1lbnRzLiAgQm90aCBtZXRob2RzIHNob3VsZCByZXR1cm4gYnl0ZXMuCiAgICAgICAgVGh1cyBmaWxlLWxpa2Ugb2JqZWN0IGNhbiBiZSBhIGJpbmFyeSBmaWxlIG9iamVjdCBvcGVuZWQgZm9yCiAgICAgICAgcmVhZGluZywgYSBCeXRlc0lPIG9iamVjdCwgb3IgYW55IG90aGVyIGN1c3RvbSBvYmplY3QgdGhhdAogICAgICAgIG1lZXRzIHRoaXMgaW50ZXJmYWNlLgoKICAgICAgICBJZiAqYnVmZmVycyogaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBidWZmZXItZW5hYmxlZAogICAgICAgIG9iamVjdHMgdGhhdCBpcyBjb25zdW1lZCBlYWNoIHRpbWUgdGhlIHBpY2tsZSBzdHJlYW0gcmVmZXJlbmNlcwogICAgICAgIGFuIG91dC1vZi1iYW5kIGJ1ZmZlciB2aWV3LiAgU3VjaCBidWZmZXJzIGhhdmUgYmVlbiBnaXZlbiBpbiBvcmRlcgogICAgICAgIHRvIHRoZSAqYnVmZmVyX2NhbGxiYWNrKiBvZiBhIFBpY2tsZXIgb2JqZWN0LgoKICAgICAgICBJZiAqYnVmZmVycyogaXMgTm9uZSAodGhlIGRlZmF1bHQpLCB0aGVuIHRoZSBidWZmZXJzIGFyZSB0YWtlbgogICAgICAgIGZyb20gdGhlIHBpY2tsZSBzdHJlYW0sIGFzc3VtaW5nIHRoZXkgYXJlIHNlcmlhbGl6ZWQgdGhlcmUuCiAgICAgICAgSXQgaXMgYW4gZXJyb3IgZm9yICpidWZmZXJzKiB0byBiZSBOb25lIGlmIHRoZSBwaWNrbGUgc3RyZWFtCiAgICAgICAgd2FzIHByb2R1Y2VkIHdpdGggYSBub24tTm9uZSAqYnVmZmVyX2NhbGxiYWNrKi4KCiAgICAgICAgT3RoZXIgb3B0aW9uYWwgYXJndW1lbnRzIGFyZSAqZml4X2ltcG9ydHMqLCAqZW5jb2RpbmcqIGFuZAogICAgICAgICplcnJvcnMqLCB3aGljaCBhcmUgdXNlZCB0byBjb250cm9sIGNvbXBhdGliaWxpdHkgc3VwcG9ydCBmb3IKICAgICAgICBwaWNrbGUgc3RyZWFtIGdlbmVyYXRlZCBieSBQeXRob24gMi4gIElmICpmaXhfaW1wb3J0cyogaXMgVHJ1ZSwKICAgICAgICBwaWNrbGUgd2lsbCB0cnkgdG8gbWFwIHRoZSBvbGQgUHl0aG9uIDIgbmFtZXMgdG8gdGhlIG5ldyBuYW1lcwogICAgICAgIHVzZWQgaW4gUHl0aG9uIDMuICBUaGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogdGVsbCBwaWNrbGUgaG93CiAgICAgICAgdG8gZGVjb2RlIDgtYml0IHN0cmluZyBpbnN0YW5jZXMgcGlja2xlZCBieSBQeXRob24gMjsgdGhlc2UKICAgICAgICBkZWZhdWx0IHRvICdBU0NJSScgYW5kICdzdHJpY3QnLCByZXNwZWN0aXZlbHkuICplbmNvZGluZyogY2FuIGJlCiAgICAgICAgJ2J5dGVzJyB0byByZWFkIHRoZXNlIDgtYml0IHN0cmluZyBpbnN0YW5jZXMgYXMgYnl0ZXMgb2JqZWN0cy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9idWZmZXJzID0gaXRlcihidWZmZXJzKSBpZiBidWZmZXJzIGlzIG5vdCBOb25lIGVsc2UgTm9uZQogICAgICAgIHNlbGYuX2ZpbGVfcmVhZGxpbmUgPSBmaWxlLnJlYWRsaW5lCiAgICAgICAgc2VsZi5fZmlsZV9yZWFkID0gZmlsZS5yZWFkCiAgICAgICAgc2VsZi5tZW1vID0ge30KICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwogICAgICAgIHNlbGYucHJvdG8gPSAwCiAgICAgICAgc2VsZi5maXhfaW1wb3J0cyA9IGZpeF9pbXBvcnRzCgogICAgZGVmIGxvYWQoc2VsZik6CiAgICAgICAgIiIiUmVhZCBhIHBpY2tsZWQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIGZyb20gdGhlIG9wZW4gZmlsZS4KCiAgICAgICAgUmV0dXJuIHRoZSByZWNvbnN0aXR1dGVkIG9iamVjdCBoaWVyYXJjaHkgc3BlY2lmaWVkIGluIHRoZSBmaWxlLgogICAgICAgICIiIgogICAgICAgICMgQ2hlY2sgd2hldGhlciBVbnBpY2tsZXIgd2FzIGluaXRpYWxpemVkIGNvcnJlY3RseS4gVGhpcyBpcwogICAgICAgICMgb25seSBuZWVkZWQgdG8gbWltaWMgdGhlIGJlaGF2aW9yIG9mIF9waWNrbGUuVW5waWNrbGVyLmR1bXAoKS4KICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAiX2ZpbGVfcmVhZCIpOgogICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoIlVucGlja2xlci5fX2luaXRfXygpIHdhcyBub3QgY2FsbGVkIGJ5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy5fX2luaXRfXygpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywpKQogICAgICAgIHNlbGYuX3VuZnJhbWVyID0gX1VuZnJhbWVyKHNlbGYuX2ZpbGVfcmVhZCwgc2VsZi5fZmlsZV9yZWFkbGluZSkKICAgICAgICBzZWxmLnJlYWQgPSBzZWxmLl91bmZyYW1lci5yZWFkCiAgICAgICAgc2VsZi5yZWFkaW50byA9IHNlbGYuX3VuZnJhbWVyLnJlYWRpbnRvCiAgICAgICAgc2VsZi5yZWFkbGluZSA9IHNlbGYuX3VuZnJhbWVyLnJlYWRsaW5lCiAgICAgICAgc2VsZi5tZXRhc3RhY2sgPSBbXQogICAgICAgIHNlbGYuc3RhY2sgPSBbXQogICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5zdGFjay5hcHBlbmQKICAgICAgICBzZWxmLnByb3RvID0gMAogICAgICAgIHJlYWQgPSBzZWxmLnJlYWQKICAgICAgICBkaXNwYXRjaCA9IHNlbGYuZGlzcGF0Y2gKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBrZXkgPSByZWFkKDEpCiAgICAgICAgICAgICAgICBpZiBub3Qga2V5OgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShrZXksIGJ5dGVzX3R5cGVzKQogICAgICAgICAgICAgICAgZGlzcGF0Y2hba2V5WzBdXShzZWxmKQogICAgICAgIGV4Y2VwdCBfU3RvcCBhcyBzdG9waW5zdDoKICAgICAgICAgICAgcmV0dXJuIHN0b3BpbnN0LnZhbHVlCgogICAgIyBSZXR1cm4gYSBsaXN0IG9mIGl0ZW1zIHB1c2hlZCBpbiB0aGUgc3RhY2sgYWZ0ZXIgbGFzdCBNQVJLIGluc3RydWN0aW9uLgogICAgZGVmIHBvcF9tYXJrKHNlbGYpOgogICAgICAgIGl0ZW1zID0gc2VsZi5zdGFjawogICAgICAgIHNlbGYuc3RhY2sgPSBzZWxmLm1ldGFzdGFjay5wb3AoKQogICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5zdGFjay5hcHBlbmQKICAgICAgICByZXR1cm4gaXRlbXMKCiAgICBkZWYgcGVyc2lzdGVudF9sb2FkKHNlbGYsIHBpZCk6CiAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJ1bnN1cHBvcnRlZCBwZXJzaXN0ZW50IGlkIGVuY291bnRlcmVkIikKCiAgICBkaXNwYXRjaCA9IHt9CgogICAgZGVmIGxvYWRfcHJvdG8oc2VsZik6CiAgICAgICAgcHJvdG8gPSBzZWxmLnJlYWQoMSlbMF0KICAgICAgICBpZiBub3QgMCA8PSBwcm90byA8PSBISUdIRVNUX1BST1RPQ09MOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCBwaWNrbGUgcHJvdG9jb2w6ICVkIiAlIHByb3RvKQogICAgICAgIHNlbGYucHJvdG8gPSBwcm90bwogICAgZGlzcGF0Y2hbUFJPVE9bMF1dID0gbG9hZF9wcm90bwoKICAgIGRlZiBsb2FkX2ZyYW1lKHNlbGYpOgogICAgICAgIGZyYW1lX3NpemUsID0gdW5wYWNrKCc8UScsIHNlbGYucmVhZCg4KSkKICAgICAgICBpZiBmcmFtZV9zaXplID4gc3lzLm1heHNpemU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZyYW1lIHNpemUgPiBzeXMubWF4c2l6ZTogJWQiICUgZnJhbWVfc2l6ZSkKICAgICAgICBzZWxmLl91bmZyYW1lci5sb2FkX2ZyYW1lKGZyYW1lX3NpemUpCiAgICBkaXNwYXRjaFtGUkFNRVswXV0gPSBsb2FkX2ZyYW1lCgogICAgZGVmIGxvYWRfcGVyc2lkKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcGlkID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKAogICAgICAgICAgICAgICAgInBlcnNpc3RlbnQgSURzIGluIHByb3RvY29sIDAgbXVzdCBiZSBBU0NJSSBzdHJpbmdzIikKICAgICAgICBzZWxmLmFwcGVuZChzZWxmLnBlcnNpc3RlbnRfbG9hZChwaWQpKQogICAgZGlzcGF0Y2hbUEVSU0lEWzBdXSA9IGxvYWRfcGVyc2lkCgogICAgZGVmIGxvYWRfYmlucGVyc2lkKHNlbGYpOgogICAgICAgIHBpZCA9IHNlbGYuc3RhY2sucG9wKCkKICAgICAgICBzZWxmLmFwcGVuZChzZWxmLnBlcnNpc3RlbnRfbG9hZChwaWQpKQogICAgZGlzcGF0Y2hbQklOUEVSU0lEWzBdXSA9IGxvYWRfYmlucGVyc2lkCgogICAgZGVmIGxvYWRfbm9uZShzZWxmKToKICAgICAgICBzZWxmLmFwcGVuZChOb25lKQogICAgZGlzcGF0Y2hbTk9ORVswXV0gPSBsb2FkX25vbmUKCiAgICBkZWYgbG9hZF9mYWxzZShzZWxmKToKICAgICAgICBzZWxmLmFwcGVuZChGYWxzZSkKICAgIGRpc3BhdGNoW05FV0ZBTFNFWzBdXSA9IGxvYWRfZmFsc2UKCiAgICBkZWYgbG9hZF90cnVlKHNlbGYpOgogICAgICAgIHNlbGYuYXBwZW5kKFRydWUpCiAgICBkaXNwYXRjaFtORVdUUlVFWzBdXSA9IGxvYWRfdHJ1ZQoKICAgIGRlZiBsb2FkX2ludChzZWxmKToKICAgICAgICBkYXRhID0gc2VsZi5yZWFkbGluZSgpCiAgICAgICAgaWYgZGF0YSA9PSBGQUxTRVsxOl06CiAgICAgICAgICAgIHZhbCA9IEZhbHNlCiAgICAgICAgZWxpZiBkYXRhID09IFRSVUVbMTpdOgogICAgICAgICAgICB2YWwgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdmFsID0gaW50KGRhdGEsIDApCiAgICAgICAgc2VsZi5hcHBlbmQodmFsKQogICAgZGlzcGF0Y2hbSU5UWzBdXSA9IGxvYWRfaW50CgogICAgZGVmIGxvYWRfYmluaW50KHNlbGYpOgogICAgICAgIHNlbGYuYXBwZW5kKHVucGFjaygnPGknLCBzZWxmLnJlYWQoNCkpWzBdKQogICAgZGlzcGF0Y2hbQklOSU5UWzBdXSA9IGxvYWRfYmluaW50CgogICAgZGVmIGxvYWRfYmluaW50MShzZWxmKToKICAgICAgICBzZWxmLmFwcGVuZChzZWxmLnJlYWQoMSlbMF0pCiAgICBkaXNwYXRjaFtCSU5JTlQxWzBdXSA9IGxvYWRfYmluaW50MQoKICAgIGRlZiBsb2FkX2JpbmludDIoc2VsZik6CiAgICAgICAgc2VsZi5hcHBlbmQodW5wYWNrKCc8SCcsIHNlbGYucmVhZCgyKSlbMF0pCiAgICBkaXNwYXRjaFtCSU5JTlQyWzBdXSA9IGxvYWRfYmluaW50MgoKICAgIGRlZiBsb2FkX2xvbmcoc2VsZik6CiAgICAgICAgdmFsID0gc2VsZi5yZWFkbGluZSgpWzotMV0KICAgICAgICBpZiB2YWwgYW5kIHZhbFstMV0gPT0gYidMJ1swXToKICAgICAgICAgICAgdmFsID0gdmFsWzotMV0KICAgICAgICBzZWxmLmFwcGVuZChpbnQodmFsLCAwKSkKICAgIGRpc3BhdGNoW0xPTkdbMF1dID0gbG9hZF9sb25nCgogICAgZGVmIGxvYWRfbG9uZzEoc2VsZik6CiAgICAgICAgbiA9IHNlbGYucmVhZCgxKVswXQogICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobikKICAgICAgICBzZWxmLmFwcGVuZChkZWNvZGVfbG9uZyhkYXRhKSkKICAgIGRpc3BhdGNoW0xPTkcxWzBdXSA9IGxvYWRfbG9uZzEKCiAgICBkZWYgbG9hZF9sb25nNChzZWxmKToKICAgICAgICBuLCA9IHVucGFjaygnPGknLCBzZWxmLnJlYWQoNCkpCiAgICAgICAgaWYgbiA8IDA6CiAgICAgICAgICAgICMgQ29ycnVwdCBvciBob3N0aWxlIHBpY2tsZSAtLSB3ZSBuZXZlciB3cml0ZSBvbmUgbGlrZSB0aGlzCiAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigiTE9ORyBwaWNrbGUgaGFzIG5lZ2F0aXZlIGJ5dGUgY291bnQiKQogICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobikKICAgICAgICBzZWxmLmFwcGVuZChkZWNvZGVfbG9uZyhkYXRhKSkKICAgIGRpc3BhdGNoW0xPTkc0WzBdXSA9IGxvYWRfbG9uZzQKCiAgICBkZWYgbG9hZF9mbG9hdChzZWxmKToKICAgICAgICBzZWxmLmFwcGVuZChmbG9hdChzZWxmLnJlYWRsaW5lKClbOi0xXSkpCiAgICBkaXNwYXRjaFtGTE9BVFswXV0gPSBsb2FkX2Zsb2F0CgogICAgZGVmIGxvYWRfYmluZmxvYXQoc2VsZik6CiAgICAgICAgc2VsZi5hcHBlbmQodW5wYWNrKCc+ZCcsIHNlbGYucmVhZCg4KSlbMF0pCiAgICBkaXNwYXRjaFtCSU5GTE9BVFswXV0gPSBsb2FkX2JpbmZsb2F0CgogICAgZGVmIF9kZWNvZGVfc3RyaW5nKHNlbGYsIHZhbHVlKToKICAgICAgICAjIFVzZWQgdG8gYWxsb3cgc3RyaW5ncyBmcm9tIFB5dGhvbiAyIHRvIGJlIGRlY29kZWQgZWl0aGVyIGFzCiAgICAgICAgIyBieXRlcyBvciBVbmljb2RlIHN0cmluZ3MuICBUaGlzIHNob3VsZCBiZSB1c2VkIG9ubHkgd2l0aCB0aGUKICAgICAgICAjIFNUUklORywgQklOU1RSSU5HIGFuZCBTSE9SVF9CSU5TVFJJTkcgb3Bjb2Rlcy4KICAgICAgICBpZiBzZWxmLmVuY29kaW5nID09ICJieXRlcyI6CiAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgc2VsZi5lcnJvcnMpCgogICAgZGVmIGxvYWRfc3RyaW5nKHNlbGYpOgogICAgICAgIGRhdGEgPSBzZWxmLnJlYWRsaW5lKClbOi0xXQogICAgICAgICMgU3RyaXAgb3V0ZXJtb3N0IHF1b3RlcwogICAgICAgIGlmIGxlbihkYXRhKSA+PSAyIGFuZCBkYXRhWzBdID09IGRhdGFbLTFdIGFuZCBkYXRhWzBdIGluIGInIlwnJzoKICAgICAgICAgICAgZGF0YSA9IGRhdGFbMTotMV0KICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoInRoZSBTVFJJTkcgb3Bjb2RlIGFyZ3VtZW50IG11c3QgYmUgcXVvdGVkIikKICAgICAgICBzZWxmLmFwcGVuZChzZWxmLl9kZWNvZGVfc3RyaW5nKGNvZGVjcy5lc2NhcGVfZGVjb2RlKGRhdGEpWzBdKSkKICAgIGRpc3BhdGNoW1NUUklOR1swXV0gPSBsb2FkX3N0cmluZwoKICAgIGRlZiBsb2FkX2JpbnN0cmluZyhzZWxmKToKICAgICAgICAjIERlcHJlY2F0ZWQgQklOU1RSSU5HIHVzZXMgc2lnbmVkIDMyLWJpdCBsZW5ndGgKICAgICAgICBsZW4sID0gdW5wYWNrKCc8aScsIHNlbGYucmVhZCg0KSkKICAgICAgICBpZiBsZW4gPCAwOgogICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoIkJJTlNUUklORyBwaWNrbGUgaGFzIG5lZ2F0aXZlIGJ5dGUgY291bnQiKQogICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKQogICAgICAgIHNlbGYuYXBwZW5kKHNlbGYuX2RlY29kZV9zdHJpbmcoZGF0YSkpCiAgICBkaXNwYXRjaFtCSU5TVFJJTkdbMF1dID0gbG9hZF9iaW5zdHJpbmcKCiAgICBkZWYgbG9hZF9iaW5ieXRlcyhzZWxmKToKICAgICAgICBsZW4sID0gdW5wYWNrKCc8SScsIHNlbGYucmVhZCg0KSkKICAgICAgICBpZiBsZW4gPiBtYXhzaXplOgogICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoIkJJTkJZVEVTIGV4Y2VlZHMgc3lzdGVtJ3MgbWF4aW11bSBzaXplICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZiAlZCBieXRlcyIgJSBtYXhzaXplKQogICAgICAgIHNlbGYuYXBwZW5kKHNlbGYucmVhZChsZW4pKQogICAgZGlzcGF0Y2hbQklOQllURVNbMF1dID0gbG9hZF9iaW5ieXRlcwoKICAgIGRlZiBsb2FkX3VuaWNvZGUoc2VsZik6CiAgICAgICAgc2VsZi5hcHBlbmQoc3RyKHNlbGYucmVhZGxpbmUoKVs6LTFdLCAncmF3LXVuaWNvZGUtZXNjYXBlJykpCiAgICBkaXNwYXRjaFtVTklDT0RFWzBdXSA9IGxvYWRfdW5pY29kZQoKICAgIGRlZiBsb2FkX2JpbnVuaWNvZGUoc2VsZik6CiAgICAgICAgbGVuLCA9IHVucGFjaygnPEknLCBzZWxmLnJlYWQoNCkpCiAgICAgICAgaWYgbGVuID4gbWF4c2l6ZToKICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJCSU5VTklDT0RFIGV4Y2VlZHMgc3lzdGVtJ3MgbWF4aW11bSBzaXplICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZiAlZCBieXRlcyIgJSBtYXhzaXplKQogICAgICAgIHNlbGYuYXBwZW5kKHN0cihzZWxmLnJlYWQobGVuKSwgJ3V0Zi04JywgJ3N1cnJvZ2F0ZXBhc3MnKSkKICAgIGRpc3BhdGNoW0JJTlVOSUNPREVbMF1dID0gbG9hZF9iaW51bmljb2RlCgogICAgZGVmIGxvYWRfYmludW5pY29kZTgoc2VsZik6CiAgICAgICAgbGVuLCA9IHVucGFjaygnPFEnLCBzZWxmLnJlYWQoOCkpCiAgICAgICAgaWYgbGVuID4gbWF4c2l6ZToKICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJCSU5VTklDT0RFOCBleGNlZWRzIHN5c3RlbSdzIG1heGltdW0gc2l6ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgJWQgYnl0ZXMiICUgbWF4c2l6ZSkKICAgICAgICBzZWxmLmFwcGVuZChzdHIoc2VsZi5yZWFkKGxlbiksICd1dGYtOCcsICdzdXJyb2dhdGVwYXNzJykpCiAgICBkaXNwYXRjaFtCSU5VTklDT0RFOFswXV0gPSBsb2FkX2JpbnVuaWNvZGU4CgogICAgZGVmIGxvYWRfYmluYnl0ZXM4KHNlbGYpOgogICAgICAgIGxlbiwgPSB1bnBhY2soJzxRJywgc2VsZi5yZWFkKDgpKQogICAgICAgIGlmIGxlbiA+IG1heHNpemU6CiAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigiQklOQllURVM4IGV4Y2VlZHMgc3lzdGVtJ3MgbWF4aW11bSBzaXplICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZiAlZCBieXRlcyIgJSBtYXhzaXplKQogICAgICAgIHNlbGYuYXBwZW5kKHNlbGYucmVhZChsZW4pKQogICAgZGlzcGF0Y2hbQklOQllURVM4WzBdXSA9IGxvYWRfYmluYnl0ZXM4CgogICAgZGVmIGxvYWRfYnl0ZWFycmF5OChzZWxmKToKICAgICAgICBsZW4sID0gdW5wYWNrKCc8UScsIHNlbGYucmVhZCg4KSkKICAgICAgICBpZiBsZW4gPiBtYXhzaXplOgogICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoIkJZVEVBUlJBWTggZXhjZWVkcyBzeXN0ZW0ncyBtYXhpbXVtIHNpemUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mICVkIGJ5dGVzIiAlIG1heHNpemUpCiAgICAgICAgYiA9IGJ5dGVhcnJheShsZW4pCiAgICAgICAgc2VsZi5yZWFkaW50byhiKQogICAgICAgIHNlbGYuYXBwZW5kKGIpCiAgICBkaXNwYXRjaFtCWVRFQVJSQVk4WzBdXSA9IGxvYWRfYnl0ZWFycmF5OAoKICAgIGRlZiBsb2FkX25leHRfYnVmZmVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2J1ZmZlcnMgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJwaWNrbGUgc3RyZWFtIHJlZmVycyB0byBvdXQtb2YtYmFuZCBkYXRhICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidXQgbm8gKmJ1ZmZlcnMqIGFyZ3VtZW50IHdhcyBnaXZlbiIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBidWYgPSBuZXh0KHNlbGYuX2J1ZmZlcnMpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigibm90IGVub3VnaCBvdXQtb2YtYmFuZCBidWZmZXJzIikKICAgICAgICBzZWxmLmFwcGVuZChidWYpCiAgICBkaXNwYXRjaFtORVhUX0JVRkZFUlswXV0gPSBsb2FkX25leHRfYnVmZmVyCgogICAgZGVmIGxvYWRfcmVhZG9ubHlfYnVmZmVyKHNlbGYpOgogICAgICAgIGJ1ZiA9IHNlbGYuc3RhY2tbLTFdCiAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGJ1ZikgYXMgbToKICAgICAgICAgICAgaWYgbm90IG0ucmVhZG9ubHk6CiAgICAgICAgICAgICAgICBzZWxmLnN0YWNrWy0xXSA9IG0udG9yZWFkb25seSgpCiAgICBkaXNwYXRjaFtSRUFET05MWV9CVUZGRVJbMF1dID0gbG9hZF9yZWFkb25seV9idWZmZXIKCiAgICBkZWYgbG9hZF9zaG9ydF9iaW5zdHJpbmcoc2VsZik6CiAgICAgICAgbGVuID0gc2VsZi5yZWFkKDEpWzBdCiAgICAgICAgZGF0YSA9IHNlbGYucmVhZChsZW4pCiAgICAgICAgc2VsZi5hcHBlbmQoc2VsZi5fZGVjb2RlX3N0cmluZyhkYXRhKSkKICAgIGRpc3BhdGNoW1NIT1JUX0JJTlNUUklOR1swXV0gPSBsb2FkX3Nob3J0X2JpbnN0cmluZwoKICAgIGRlZiBsb2FkX3Nob3J0X2JpbmJ5dGVzKHNlbGYpOgogICAgICAgIGxlbiA9IHNlbGYucmVhZCgxKVswXQogICAgICAgIHNlbGYuYXBwZW5kKHNlbGYucmVhZChsZW4pKQogICAgZGlzcGF0Y2hbU0hPUlRfQklOQllURVNbMF1dID0gbG9hZF9zaG9ydF9iaW5ieXRlcwoKICAgIGRlZiBsb2FkX3Nob3J0X2JpbnVuaWNvZGUoc2VsZik6CiAgICAgICAgbGVuID0gc2VsZi5yZWFkKDEpWzBdCiAgICAgICAgc2VsZi5hcHBlbmQoc3RyKHNlbGYucmVhZChsZW4pLCAndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpKQogICAgZGlzcGF0Y2hbU0hPUlRfQklOVU5JQ09ERVswXV0gPSBsb2FkX3Nob3J0X2JpbnVuaWNvZGUKCiAgICBkZWYgbG9hZF90dXBsZShzZWxmKToKICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQogICAgICAgIHNlbGYuYXBwZW5kKHR1cGxlKGl0ZW1zKSkKICAgIGRpc3BhdGNoW1RVUExFWzBdXSA9IGxvYWRfdHVwbGUKCiAgICBkZWYgbG9hZF9lbXB0eV90dXBsZShzZWxmKToKICAgICAgICBzZWxmLmFwcGVuZCgoKSkKICAgIGRpc3BhdGNoW0VNUFRZX1RVUExFWzBdXSA9IGxvYWRfZW1wdHlfdHVwbGUKCiAgICBkZWYgbG9hZF90dXBsZTEoc2VsZik6CiAgICAgICAgc2VsZi5zdGFja1stMV0gPSAoc2VsZi5zdGFja1stMV0sKQogICAgZGlzcGF0Y2hbVFVQTEUxWzBdXSA9IGxvYWRfdHVwbGUxCgogICAgZGVmIGxvYWRfdHVwbGUyKHNlbGYpOgogICAgICAgIHNlbGYuc3RhY2tbLTI6XSA9IFsoc2VsZi5zdGFja1stMl0sIHNlbGYuc3RhY2tbLTFdKV0KICAgIGRpc3BhdGNoW1RVUExFMlswXV0gPSBsb2FkX3R1cGxlMgoKICAgIGRlZiBsb2FkX3R1cGxlMyhzZWxmKToKICAgICAgICBzZWxmLnN0YWNrWy0zOl0gPSBbKHNlbGYuc3RhY2tbLTNdLCBzZWxmLnN0YWNrWy0yXSwgc2VsZi5zdGFja1stMV0pXQogICAgZGlzcGF0Y2hbVFVQTEUzWzBdXSA9IGxvYWRfdHVwbGUzCgogICAgZGVmIGxvYWRfZW1wdHlfbGlzdChzZWxmKToKICAgICAgICBzZWxmLmFwcGVuZChbXSkKICAgIGRpc3BhdGNoW0VNUFRZX0xJU1RbMF1dID0gbG9hZF9lbXB0eV9saXN0CgogICAgZGVmIGxvYWRfZW1wdHlfZGljdGlvbmFyeShzZWxmKToKICAgICAgICBzZWxmLmFwcGVuZCh7fSkKICAgIGRpc3BhdGNoW0VNUFRZX0RJQ1RbMF1dID0gbG9hZF9lbXB0eV9kaWN0aW9uYXJ5CgogICAgZGVmIGxvYWRfZW1wdHlfc2V0KHNlbGYpOgogICAgICAgIHNlbGYuYXBwZW5kKHNldCgpKQogICAgZGlzcGF0Y2hbRU1QVFlfU0VUWzBdXSA9IGxvYWRfZW1wdHlfc2V0CgogICAgZGVmIGxvYWRfZnJvemVuc2V0KHNlbGYpOgogICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCiAgICAgICAgc2VsZi5hcHBlbmQoZnJvemVuc2V0KGl0ZW1zKSkKICAgIGRpc3BhdGNoW0ZST1pFTlNFVFswXV0gPSBsb2FkX2Zyb3plbnNldAoKICAgIGRlZiBsb2FkX2xpc3Qoc2VsZik6CiAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKICAgICAgICBzZWxmLmFwcGVuZChpdGVtcykKICAgIGRpc3BhdGNoW0xJU1RbMF1dID0gbG9hZF9saXN0CgogICAgZGVmIGxvYWRfZGljdChzZWxmKToKICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQogICAgICAgIGQgPSB7aXRlbXNbaV06IGl0ZW1zW2krMV0KICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihpdGVtcyksIDIpfQogICAgICAgIHNlbGYuYXBwZW5kKGQpCiAgICBkaXNwYXRjaFtESUNUWzBdXSA9IGxvYWRfZGljdAoKICAgICMgSU5TVCBhbmQgT0JKIGRpZmZlciBvbmx5IGluIGhvdyB0aGV5IGdldCBhIGNsYXNzIG9iamVjdC4gIEl0J3Mgbm90CiAgICAjIG9ubHkgc2Vuc2libGUgdG8gZG8gdGhlIHJlc3QgaW4gYSBjb21tb24gcm91dGluZSwgdGhlIHR3byByb3V0aW5lcwogICAgIyBwcmV2aW91c2x5IGRpdmVyZ2VkIGFuZCBncmV3IGRpZmZlcmVudCBidWdzLgogICAgIyBrbGFzcyBpcyB0aGUgY2xhc3MgdG8gaW5zdGFudGlhdGUsIGFuZCBrIHBvaW50cyB0byB0aGUgdG9wbW9zdCBtYXJrCiAgICAjIG9iamVjdCwgZm9sbG93aW5nIHdoaWNoIGFyZSB0aGUgYXJndW1lbnRzIGZvciBrbGFzcy5fX2luaXRfXy4KICAgIGRlZiBfaW5zdGFudGlhdGUoc2VsZiwga2xhc3MsIGFyZ3MpOgogICAgICAgIGlmIChhcmdzIG9yIG5vdCBpc2luc3RhbmNlKGtsYXNzLCB0eXBlKSBvcgogICAgICAgICAgICBoYXNhdHRyKGtsYXNzLCAiX19nZXRpbml0YXJnc19fIikpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGtsYXNzKCphcmdzKQogICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW4gY29uc3RydWN0b3IgZm9yICVzOiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbGFzcy5fX25hbWVfXywgc3RyKGVycikpLCBzeXMuZXhjX2luZm8oKVsyXSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB2YWx1ZSA9IGtsYXNzLl9fbmV3X18oa2xhc3MpCiAgICAgICAgc2VsZi5hcHBlbmQodmFsdWUpCgogICAgZGVmIGxvYWRfaW5zdChzZWxmKToKICAgICAgICBtb2R1bGUgPSBzZWxmLnJlYWRsaW5lKClbOi0xXS5kZWNvZGUoImFzY2lpIikKICAgICAgICBuYW1lID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJhc2NpaSIpCiAgICAgICAga2xhc3MgPSBzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBuYW1lKQogICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGtsYXNzLCBzZWxmLnBvcF9tYXJrKCkpCiAgICBkaXNwYXRjaFtJTlNUWzBdXSA9IGxvYWRfaW5zdAoKICAgIGRlZiBsb2FkX29iaihzZWxmKToKICAgICAgICAjIFN0YWNrIGlzIC4uLiBtYXJrb2JqZWN0IGNsYXNzb2JqZWN0IGFyZzEgYXJnMiAuLi4KICAgICAgICBhcmdzID0gc2VsZi5wb3BfbWFyaygpCiAgICAgICAgY2xzID0gYXJncy5wb3AoMCkKICAgICAgICBzZWxmLl9pbnN0YW50aWF0ZShjbHMsIGFyZ3MpCiAgICBkaXNwYXRjaFtPQkpbMF1dID0gbG9hZF9vYmoKCiAgICBkZWYgbG9hZF9uZXdvYmooc2VsZik6CiAgICAgICAgYXJncyA9IHNlbGYuc3RhY2sucG9wKCkKICAgICAgICBjbHMgPSBzZWxmLnN0YWNrLnBvcCgpCiAgICAgICAgb2JqID0gY2xzLl9fbmV3X18oY2xzLCAqYXJncykKICAgICAgICBzZWxmLmFwcGVuZChvYmopCiAgICBkaXNwYXRjaFtORVdPQkpbMF1dID0gbG9hZF9uZXdvYmoKCiAgICBkZWYgbG9hZF9uZXdvYmpfZXgoc2VsZik6CiAgICAgICAga3dhcmdzID0gc2VsZi5zdGFjay5wb3AoKQogICAgICAgIGFyZ3MgPSBzZWxmLnN0YWNrLnBvcCgpCiAgICAgICAgY2xzID0gc2VsZi5zdGFjay5wb3AoKQogICAgICAgIG9iaiA9IGNscy5fX25ld19fKGNscywgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIHNlbGYuYXBwZW5kKG9iaikKICAgIGRpc3BhdGNoW05FV09CSl9FWFswXV0gPSBsb2FkX25ld29ial9leAoKICAgIGRlZiBsb2FkX2dsb2JhbChzZWxmKToKICAgICAgICBtb2R1bGUgPSBzZWxmLnJlYWRsaW5lKClbOi0xXS5kZWNvZGUoInV0Zi04IikKICAgICAgICBuYW1lID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAga2xhc3MgPSBzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBuYW1lKQogICAgICAgIHNlbGYuYXBwZW5kKGtsYXNzKQogICAgZGlzcGF0Y2hbR0xPQkFMWzBdXSA9IGxvYWRfZ2xvYmFsCgogICAgZGVmIGxvYWRfc3RhY2tfZ2xvYmFsKHNlbGYpOgogICAgICAgIG5hbWUgPSBzZWxmLnN0YWNrLnBvcCgpCiAgICAgICAgbW9kdWxlID0gc2VsZi5zdGFjay5wb3AoKQogICAgICAgIGlmIHR5cGUobmFtZSkgaXMgbm90IHN0ciBvciB0eXBlKG1vZHVsZSkgaXMgbm90IHN0cjoKICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJTVEFDS19HTE9CQUwgcmVxdWlyZXMgc3RyIikKICAgICAgICBzZWxmLmFwcGVuZChzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBuYW1lKSkKICAgIGRpc3BhdGNoW1NUQUNLX0dMT0JBTFswXV0gPSBsb2FkX3N0YWNrX2dsb2JhbAoKICAgIGRlZiBsb2FkX2V4dDEoc2VsZik6CiAgICAgICAgY29kZSA9IHNlbGYucmVhZCgxKVswXQogICAgICAgIHNlbGYuZ2V0X2V4dGVuc2lvbihjb2RlKQogICAgZGlzcGF0Y2hbRVhUMVswXV0gPSBsb2FkX2V4dDEKCiAgICBkZWYgbG9hZF9leHQyKHNlbGYpOgogICAgICAgIGNvZGUsID0gdW5wYWNrKCc8SCcsIHNlbGYucmVhZCgyKSkKICAgICAgICBzZWxmLmdldF9leHRlbnNpb24oY29kZSkKICAgIGRpc3BhdGNoW0VYVDJbMF1dID0gbG9hZF9leHQyCgogICAgZGVmIGxvYWRfZXh0NChzZWxmKToKICAgICAgICBjb2RlLCA9IHVucGFjaygnPGknLCBzZWxmLnJlYWQoNCkpCiAgICAgICAgc2VsZi5nZXRfZXh0ZW5zaW9uKGNvZGUpCiAgICBkaXNwYXRjaFtFWFQ0WzBdXSA9IGxvYWRfZXh0NAoKICAgIGRlZiBnZXRfZXh0ZW5zaW9uKHNlbGYsIGNvZGUpOgogICAgICAgIG5pbCA9IFtdCiAgICAgICAgb2JqID0gX2V4dGVuc2lvbl9jYWNoZS5nZXQoY29kZSwgbmlsKQogICAgICAgIGlmIG9iaiBpcyBub3QgbmlsOgogICAgICAgICAgICBzZWxmLmFwcGVuZChvYmopCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGtleSA9IF9pbnZlcnRlZF9yZWdpc3RyeS5nZXQoY29kZSkKICAgICAgICBpZiBub3Qga2V5OgogICAgICAgICAgICBpZiBjb2RlIDw9IDA6ICMgbm90ZSB0aGF0IDAgaXMgZm9yYmlkZGVuCiAgICAgICAgICAgICAgICAjIENvcnJ1cHQgb3IgaG9zdGlsZSBwaWNrbGUuCiAgICAgICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoIkVYVCBzcGVjaWZpZXMgY29kZSA8PSAwIikKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5yZWdpc3RlcmVkIGV4dGVuc2lvbiBjb2RlICVkIiAlIGNvZGUpCiAgICAgICAgb2JqID0gc2VsZi5maW5kX2NsYXNzKCprZXkpCiAgICAgICAgX2V4dGVuc2lvbl9jYWNoZVtjb2RlXSA9IG9iagogICAgICAgIHNlbGYuYXBwZW5kKG9iaikKCiAgICBkZWYgZmluZF9jbGFzcyhzZWxmLCBtb2R1bGUsIG5hbWUpOgogICAgICAgICMgU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcy4KICAgICAgICBzeXMuYXVkaXQoJ3BpY2tsZS5maW5kX2NsYXNzJywgbW9kdWxlLCBuYW1lKQogICAgICAgIGlmIHNlbGYucHJvdG8gPCAzIGFuZCBzZWxmLmZpeF9pbXBvcnRzOgogICAgICAgICAgICBpZiAobW9kdWxlLCBuYW1lKSBpbiBfY29tcGF0X3BpY2tsZS5OQU1FX01BUFBJTkc6CiAgICAgICAgICAgICAgICBtb2R1bGUsIG5hbWUgPSBfY29tcGF0X3BpY2tsZS5OQU1FX01BUFBJTkdbKG1vZHVsZSwgbmFtZSldCiAgICAgICAgICAgIGVsaWYgbW9kdWxlIGluIF9jb21wYXRfcGlja2xlLklNUE9SVF9NQVBQSU5HOgogICAgICAgICAgICAgICAgbW9kdWxlID0gX2NvbXBhdF9waWNrbGUuSU1QT1JUX01BUFBJTkdbbW9kdWxlXQogICAgICAgIF9faW1wb3J0X18obW9kdWxlLCBsZXZlbD0wKQogICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKICAgICAgICAgICAgcmV0dXJuIF9nZXRhdHRyaWJ1dGUoc3lzLm1vZHVsZXNbbW9kdWxlXSwgbmFtZSlbMF0KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1ttb2R1bGVdLCBuYW1lKQoKICAgIGRlZiBsb2FkX3JlZHVjZShzZWxmKToKICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKICAgICAgICBhcmdzID0gc3RhY2sucG9wKCkKICAgICAgICBmdW5jID0gc3RhY2tbLTFdCiAgICAgICAgc3RhY2tbLTFdID0gZnVuYygqYXJncykKICAgIGRpc3BhdGNoW1JFRFVDRVswXV0gPSBsb2FkX3JlZHVjZQoKICAgIGRlZiBsb2FkX3BvcChzZWxmKToKICAgICAgICBpZiBzZWxmLnN0YWNrOgogICAgICAgICAgICBkZWwgc2VsZi5zdGFja1stMV0KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnBvcF9tYXJrKCkKICAgIGRpc3BhdGNoW1BPUFswXV0gPSBsb2FkX3BvcAoKICAgIGRlZiBsb2FkX3BvcF9tYXJrKHNlbGYpOgogICAgICAgIHNlbGYucG9wX21hcmsoKQogICAgZGlzcGF0Y2hbUE9QX01BUktbMF1dID0gbG9hZF9wb3BfbWFyawoKICAgIGRlZiBsb2FkX2R1cChzZWxmKToKICAgICAgICBzZWxmLmFwcGVuZChzZWxmLnN0YWNrWy0xXSkKICAgIGRpc3BhdGNoW0RVUFswXV0gPSBsb2FkX2R1cAoKICAgIGRlZiBsb2FkX2dldChzZWxmKToKICAgICAgICBpID0gaW50KHNlbGYucmVhZGxpbmUoKVs6LTFdKQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5hcHBlbmQoc2VsZi5tZW1vW2ldKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgbXNnID0gZidNZW1vIHZhbHVlIG5vdCBmb3VuZCBhdCBpbmRleCB7aX0nCiAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcihtc2cpIGZyb20gTm9uZQogICAgZGlzcGF0Y2hbR0VUWzBdXSA9IGxvYWRfZ2V0CgogICAgZGVmIGxvYWRfYmluZ2V0KHNlbGYpOgogICAgICAgIGkgPSBzZWxmLnJlYWQoMSlbMF0KICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuYXBwZW5kKHNlbGYubWVtb1tpXSkKICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZXhjOgogICAgICAgICAgICBtc2cgPSBmJ01lbW8gdmFsdWUgbm90IGZvdW5kIGF0IGluZGV4IHtpfScKICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKG1zZykgZnJvbSBOb25lCiAgICBkaXNwYXRjaFtCSU5HRVRbMF1dID0gbG9hZF9iaW5nZXQKCiAgICBkZWYgbG9hZF9sb25nX2JpbmdldChzZWxmKToKICAgICAgICBpLCA9IHVucGFjaygnPEknLCBzZWxmLnJlYWQoNCkpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmFwcGVuZChzZWxmLm1lbW9baV0pCiAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgbXNnID0gZidNZW1vIHZhbHVlIG5vdCBmb3VuZCBhdCBpbmRleCB7aX0nCiAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcihtc2cpIGZyb20gTm9uZQogICAgZGlzcGF0Y2hbTE9OR19CSU5HRVRbMF1dID0gbG9hZF9sb25nX2JpbmdldAoKICAgIGRlZiBsb2FkX3B1dChzZWxmKToKICAgICAgICBpID0gaW50KHNlbGYucmVhZGxpbmUoKVs6LTFdKQogICAgICAgIGlmIGkgPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBQVVQgYXJndW1lbnQiKQogICAgICAgIHNlbGYubWVtb1tpXSA9IHNlbGYuc3RhY2tbLTFdCiAgICBkaXNwYXRjaFtQVVRbMF1dID0gbG9hZF9wdXQKCiAgICBkZWYgbG9hZF9iaW5wdXQoc2VsZik6CiAgICAgICAgaSA9IHNlbGYucmVhZCgxKVswXQogICAgICAgIGlmIGkgPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBCSU5QVVQgYXJndW1lbnQiKQogICAgICAgIHNlbGYubWVtb1tpXSA9IHNlbGYuc3RhY2tbLTFdCiAgICBkaXNwYXRjaFtCSU5QVVRbMF1dID0gbG9hZF9iaW5wdXQKCiAgICBkZWYgbG9hZF9sb25nX2JpbnB1dChzZWxmKToKICAgICAgICBpLCA9IHVucGFjaygnPEknLCBzZWxmLnJlYWQoNCkpCiAgICAgICAgaWYgaSA+IG1heHNpemU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIExPTkdfQklOUFVUIGFyZ3VtZW50IikKICAgICAgICBzZWxmLm1lbW9baV0gPSBzZWxmLnN0YWNrWy0xXQogICAgZGlzcGF0Y2hbTE9OR19CSU5QVVRbMF1dID0gbG9hZF9sb25nX2JpbnB1dAoKICAgIGRlZiBsb2FkX21lbW9pemUoc2VsZik6CiAgICAgICAgbWVtbyA9IHNlbGYubWVtbwogICAgICAgIG1lbW9bbGVuKG1lbW8pXSA9IHNlbGYuc3RhY2tbLTFdCiAgICBkaXNwYXRjaFtNRU1PSVpFWzBdXSA9IGxvYWRfbWVtb2l6ZQoKICAgIGRlZiBsb2FkX2FwcGVuZChzZWxmKToKICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKICAgICAgICB2YWx1ZSA9IHN0YWNrLnBvcCgpCiAgICAgICAgbGlzdCA9IHN0YWNrWy0xXQogICAgICAgIGxpc3QuYXBwZW5kKHZhbHVlKQogICAgZGlzcGF0Y2hbQVBQRU5EWzBdXSA9IGxvYWRfYXBwZW5kCgogICAgZGVmIGxvYWRfYXBwZW5kcyhzZWxmKToKICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQogICAgICAgIGxpc3Rfb2JqID0gc2VsZi5zdGFja1stMV0KICAgICAgICB0cnk6CiAgICAgICAgICAgIGV4dGVuZCA9IGxpc3Rfb2JqLmV4dGVuZAogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGV4dGVuZChpdGVtcykKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIyBFdmVuIGlmIHRoZSBQRVAgMzA3IHJlcXVpcmVzIGV4dGVuZCgpIGFuZCBhcHBlbmQoKSBtZXRob2RzLAogICAgICAgICMgZmFsbCBiYWNrIG9uIGFwcGVuZCgpIGlmIHRoZSBvYmplY3QgaGFzIG5vIGV4dGVuZCgpIG1ldGhvZAogICAgICAgICMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiAgICAgICAgYXBwZW5kID0gbGlzdF9vYmouYXBwZW5kCiAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgICAgIGFwcGVuZChpdGVtKQogICAgZGlzcGF0Y2hbQVBQRU5EU1swXV0gPSBsb2FkX2FwcGVuZHMKCiAgICBkZWYgbG9hZF9zZXRpdGVtKHNlbGYpOgogICAgICAgIHN0YWNrID0gc2VsZi5zdGFjawogICAgICAgIHZhbHVlID0gc3RhY2sucG9wKCkKICAgICAgICBrZXkgPSBzdGFjay5wb3AoKQogICAgICAgIGRpY3QgPSBzdGFja1stMV0KICAgICAgICBkaWN0W2tleV0gPSB2YWx1ZQogICAgZGlzcGF0Y2hbU0VUSVRFTVswXV0gPSBsb2FkX3NldGl0ZW0KCiAgICBkZWYgbG9hZF9zZXRpdGVtcyhzZWxmKToKICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQogICAgICAgIGRpY3QgPSBzZWxmLnN0YWNrWy0xXQogICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihpdGVtcyksIDIpOgogICAgICAgICAgICBkaWN0W2l0ZW1zW2ldXSA9IGl0ZW1zW2kgKyAxXQogICAgZGlzcGF0Y2hbU0VUSVRFTVNbMF1dID0gbG9hZF9zZXRpdGVtcwoKICAgIGRlZiBsb2FkX2FkZGl0ZW1zKHNlbGYpOgogICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCiAgICAgICAgc2V0X29iaiA9IHNlbGYuc3RhY2tbLTFdCiAgICAgICAgaWYgaXNpbnN0YW5jZShzZXRfb2JqLCBzZXQpOgogICAgICAgICAgICBzZXRfb2JqLnVwZGF0ZShpdGVtcykKICAgICAgICBlbHNlOgogICAgICAgICAgICBhZGQgPSBzZXRfb2JqLmFkZAogICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgICAgIGFkZChpdGVtKQogICAgZGlzcGF0Y2hbQURESVRFTVNbMF1dID0gbG9hZF9hZGRpdGVtcwoKICAgIGRlZiBsb2FkX2J1aWxkKHNlbGYpOgogICAgICAgIHN0YWNrID0gc2VsZi5zdGFjawogICAgICAgIHN0YXRlID0gc3RhY2sucG9wKCkKICAgICAgICBpbnN0ID0gc3RhY2tbLTFdCiAgICAgICAgc2V0c3RhdGUgPSBnZXRhdHRyKGluc3QsICJfX3NldHN0YXRlX18iLCBOb25lKQogICAgICAgIGlmIHNldHN0YXRlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZXRzdGF0ZShzdGF0ZSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2xvdHN0YXRlID0gTm9uZQogICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RhdGUsIHR1cGxlKSBhbmQgbGVuKHN0YXRlKSA9PSAyOgogICAgICAgICAgICBzdGF0ZSwgc2xvdHN0YXRlID0gc3RhdGUKICAgICAgICBpZiBzdGF0ZToKICAgICAgICAgICAgaW5zdF9kaWN0ID0gaW5zdC5fX2RpY3RfXwogICAgICAgICAgICBpbnRlcm4gPSBzeXMuaW50ZXJuCiAgICAgICAgICAgIGZvciBrLCB2IGluIHN0YXRlLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiB0eXBlKGspIGlzIHN0cjoKICAgICAgICAgICAgICAgICAgICBpbnN0X2RpY3RbaW50ZXJuKGspXSA9IHYKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaW5zdF9kaWN0W2tdID0gdgogICAgICAgIGlmIHNsb3RzdGF0ZToKICAgICAgICAgICAgZm9yIGssIHYgaW4gc2xvdHN0YXRlLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBzZXRhdHRyKGluc3QsIGssIHYpCiAgICBkaXNwYXRjaFtCVUlMRFswXV0gPSBsb2FkX2J1aWxkCgogICAgZGVmIGxvYWRfbWFyayhzZWxmKToKICAgICAgICBzZWxmLm1ldGFzdGFjay5hcHBlbmQoc2VsZi5zdGFjaykKICAgICAgICBzZWxmLnN0YWNrID0gW10KICAgICAgICBzZWxmLmFwcGVuZCA9IHNlbGYuc3RhY2suYXBwZW5kCiAgICBkaXNwYXRjaFtNQVJLWzBdXSA9IGxvYWRfbWFyawoKICAgIGRlZiBsb2FkX3N0b3Aoc2VsZik6CiAgICAgICAgdmFsdWUgPSBzZWxmLnN0YWNrLnBvcCgpCiAgICAgICAgcmFpc2UgX1N0b3AodmFsdWUpCiAgICBkaXNwYXRjaFtTVE9QWzBdXSA9IGxvYWRfc3RvcAoKCiMgU2hvcnRoYW5kcwoKZGVmIF9kdW1wKG9iaiwgZmlsZSwgcHJvdG9jb2w9Tm9uZSwgKiwgZml4X2ltcG9ydHM9VHJ1ZSwgYnVmZmVyX2NhbGxiYWNrPU5vbmUpOgogICAgX1BpY2tsZXIoZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzPWZpeF9pbXBvcnRzLAogICAgICAgICAgICAgYnVmZmVyX2NhbGxiYWNrPWJ1ZmZlcl9jYWxsYmFjaykuZHVtcChvYmopCgpkZWYgX2R1bXBzKG9iaiwgcHJvdG9jb2w9Tm9uZSwgKiwgZml4X2ltcG9ydHM9VHJ1ZSwgYnVmZmVyX2NhbGxiYWNrPU5vbmUpOgogICAgZiA9IGlvLkJ5dGVzSU8oKQogICAgX1BpY2tsZXIoZiwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzPWZpeF9pbXBvcnRzLAogICAgICAgICAgICAgYnVmZmVyX2NhbGxiYWNrPWJ1ZmZlcl9jYWxsYmFjaykuZHVtcChvYmopCiAgICByZXMgPSBmLmdldHZhbHVlKCkKICAgIGFzc2VydCBpc2luc3RhbmNlKHJlcywgYnl0ZXNfdHlwZXMpCiAgICByZXR1cm4gcmVzCgpkZWYgX2xvYWQoZmlsZSwgKiwgZml4X2ltcG9ydHM9VHJ1ZSwgZW5jb2Rpbmc9IkFTQ0lJIiwgZXJyb3JzPSJzdHJpY3QiLAogICAgICAgICAgYnVmZmVycz1Ob25lKToKICAgIHJldHVybiBfVW5waWNrbGVyKGZpbGUsIGZpeF9pbXBvcnRzPWZpeF9pbXBvcnRzLCBidWZmZXJzPWJ1ZmZlcnMsCiAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKS5sb2FkKCkKCmRlZiBfbG9hZHMocywgLywgKiwgZml4X2ltcG9ydHM9VHJ1ZSwgZW5jb2Rpbmc9IkFTQ0lJIiwgZXJyb3JzPSJzdHJpY3QiLAogICAgICAgICAgIGJ1ZmZlcnM9Tm9uZSk6CiAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBsb2FkIHBpY2tsZSBmcm9tIHVuaWNvZGUgc3RyaW5nIikKICAgIGZpbGUgPSBpby5CeXRlc0lPKHMpCiAgICByZXR1cm4gX1VucGlja2xlcihmaWxlLCBmaXhfaW1wb3J0cz1maXhfaW1wb3J0cywgYnVmZmVycz1idWZmZXJzLAogICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpLmxvYWQoKQoKIyBVc2UgdGhlIGZhc3RlciBfcGlja2xlIGlmIHBvc3NpYmxlCnRyeToKICAgIGZyb20gX3BpY2tsZSBpbXBvcnQgKAogICAgICAgIFBpY2tsZUVycm9yLAogICAgICAgIFBpY2tsaW5nRXJyb3IsCiAgICAgICAgVW5waWNrbGluZ0Vycm9yLAogICAgICAgIFBpY2tsZXIsCiAgICAgICAgVW5waWNrbGVyLAogICAgICAgIGR1bXAsCiAgICAgICAgZHVtcHMsCiAgICAgICAgbG9hZCwKICAgICAgICBsb2FkcwogICAgKQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBQaWNrbGVyLCBVbnBpY2tsZXIgPSBfUGlja2xlciwgX1VucGlja2xlcgogICAgZHVtcCwgZHVtcHMsIGxvYWQsIGxvYWRzID0gX2R1bXAsIF9kdW1wcywgX2xvYWQsIF9sb2FkcwoKIyBEb2N0ZXN0CmRlZiBfdGVzdCgpOgogICAgaW1wb3J0IGRvY3Rlc3QKICAgIHJldHVybiBkb2N0ZXN0LnRlc3Rtb2QoKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIGltcG9ydCBhcmdwYXJzZQogICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCiAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgY29udGVudHMgb2YgdGhlIHBpY2tsZSBmaWxlcycpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICdwaWNrbGVfZmlsZScsIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ2JyJyksCiAgICAgICAgbmFyZ3M9JyonLCBoZWxwPSd0aGUgcGlja2xlIGZpbGUnKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAnLXQnLCAnLS10ZXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICBoZWxwPSdydW4gc2VsZi10ZXN0IHN1aXRlJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgJy12JywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICBoZWxwPSdydW4gdmVyYm9zZWx5OyBvbmx5IGFmZmVjdHMgc2VsZi10ZXN0IHJ1bicpCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgaWYgYXJncy50ZXN0OgogICAgICAgIF90ZXN0KCkKICAgIGVsc2U6CiAgICAgICAgaWYgbm90IGFyZ3MucGlja2xlX2ZpbGU6CiAgICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpbXBvcnQgcHByaW50CiAgICAgICAgICAgIGZvciBmIGluIGFyZ3MucGlja2xlX2ZpbGU6CiAgICAgICAgICAgICAgICBvYmogPSBsb2FkKGYpCiAgICAgICAgICAgICAgICBwcHJpbnQucHByaW50KG9iaikKUEsDBBQAAAAAAAIgo1bloWHBLm0BAC5tAQAOAAAAcGlja2xldG9vbHMucHknJyciRXhlY3V0YWJsZSBkb2N1bWVudGF0aW9uIiBmb3IgdGhlIHBpY2tsZSBtb2R1bGUuCgpFeHRlbnNpdmUgY29tbWVudHMgYWJvdXQgdGhlIHBpY2tsZSBwcm90b2NvbHMgYW5kIHBpY2tsZS1tYWNoaW5lIG9wY29kZXMKY2FuIGJlIGZvdW5kIGhlcmUuICBTb21lIGZ1bmN0aW9ucyBtZWFudCBmb3IgZXh0ZXJuYWwgdXNlOgoKZ2Vub3BzKHBpY2tsZSkKICAgR2VuZXJhdGUgYWxsIHRoZSBvcGNvZGVzIGluIGEgcGlja2xlLCBhcyAob3Bjb2RlLCBhcmcsIHBvc2l0aW9uKSB0cmlwbGVzLgoKZGlzKHBpY2tsZSwgb3V0PU5vbmUsIG1lbW89Tm9uZSwgaW5kZW50bGV2ZWw9NCkKICAgUHJpbnQgYSBzeW1ib2xpYyBkaXNhc3NlbWJseSBvZiBhIHBpY2tsZS4KJycnCgppbXBvcnQgY29kZWNzCmltcG9ydCBpbwppbXBvcnQgcGlja2xlCmltcG9ydCByZQppbXBvcnQgc3lzCgpfX2FsbF9fID0gWydkaXMnLCAnZ2Vub3BzJywgJ29wdGltaXplJ10KCmJ5dGVzX3R5cGVzID0gcGlja2xlLmJ5dGVzX3R5cGVzCgojIE90aGVyIGlkZWFzOgojCiMgLSBBIHBpY2tsZSB2ZXJpZmllcjogIHJlYWQgYSBwaWNrbGUgYW5kIGNoZWNrIGl0IGV4aGF1c3RpdmVseSBmb3IKIyAgIHdlbGwtZm9ybWVkbmVzcy4gIGRpcygpIGRvZXMgYSBsb3Qgb2YgdGhpcyBhbHJlYWR5LgojCiMgLSBBIHByb3RvY29sIGlkZW50aWZpZXI6ICBleGFtaW5lIGEgcGlja2xlIGFuZCByZXR1cm4gaXRzIHByb3RvY29sIG51bWJlcgojICAgKD09IHRoZSBoaWdoZXN0IC5wcm90byBhdHRyIHZhbHVlIGFtb25nIGFsbCB0aGUgb3Bjb2RlcyBpbiB0aGUgcGlja2xlKS4KIyAgIGRpcygpIGFscmVhZHkgcHJpbnRzIHRoaXMgaW5mbyBhdCB0aGUgZW5kLgojCiMgLSBBIHBpY2tsZSBvcHRpbWl6ZXI6ICBmb3IgZXhhbXBsZSwgdHVwbGUtYnVpbGRpbmcgY29kZSBpcyBzb21ldGltZXMgbW9yZQojICAgZWxhYm9yYXRlIHRoYW4gbmVjZXNzYXJ5LCBjYXRlcmluZyBmb3IgdGhlIHBvc3NpYmlsaXR5IHRoYXQgdGhlIHR1cGxlCiMgICBpcyByZWN1cnNpdmUuICBPciBsb3RzIG9mIHRpbWVzIGEgUFVUIGlzIGdlbmVyYXRlZCB0aGF0J3MgbmV2ZXIgYWNjZXNzZWQKIyAgIGJ5IGEgbGF0ZXIgR0VULgoKCiMgIkEgcGlja2xlIiBpcyBhIHByb2dyYW0gZm9yIGEgdmlydHVhbCBwaWNrbGUgbWFjaGluZSAoUE0sIGJ1dCBtb3JlIGFjY3VyYXRlbHkKIyBjYWxsZWQgYW4gdW5waWNrbGluZyBtYWNoaW5lKS4gIEl0J3MgYSBzZXF1ZW5jZSBvZiBvcGNvZGVzLCBpbnRlcnByZXRlZCBieSB0aGUKIyBQTSwgYnVpbGRpbmcgYW4gYXJiaXRyYXJpbHkgY29tcGxleCBQeXRob24gb2JqZWN0LgojCiMgRm9yIHRoZSBtb3N0IHBhcnQsIHRoZSBQTSBpcyB2ZXJ5IHNpbXBsZTogIHRoZXJlIGFyZSBubyBsb29waW5nLCB0ZXN0aW5nLCBvcgojIGNvbmRpdGlvbmFsIGluc3RydWN0aW9ucywgbm8gYXJpdGhtZXRpYyBhbmQgbm8gZnVuY3Rpb24gY2FsbHMuICBPcGNvZGVzIGFyZQojIGV4ZWN1dGVkIG9uY2UgZWFjaCwgZnJvbSBmaXJzdCB0byBsYXN0LCB1bnRpbCBhIFNUT1Agb3Bjb2RlIGlzIHJlYWNoZWQuCiMKIyBUaGUgUE0gaGFzIHR3byBkYXRhIGFyZWFzLCAidGhlIHN0YWNrIiBhbmQgInRoZSBtZW1vIi4KIwojIE1hbnkgb3Bjb2RlcyBwdXNoIFB5dGhvbiBvYmplY3RzIG9udG8gdGhlIHN0YWNrOyBlLmcuLCBJTlQgcHVzaGVzIGEgUHl0aG9uCiMgaW50ZWdlciBvYmplY3Qgb24gdGhlIHN0YWNrLCB3aG9zZSB2YWx1ZSBpcyBnb3R0ZW4gZnJvbSBhIGRlY2ltYWwgc3RyaW5nCiMgbGl0ZXJhbCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIElOVCBvcGNvZGUgaW4gdGhlIHBpY2tsZSBieXRlc3RyZWFtLiAgT3RoZXIKIyBvcGNvZGVzIHRha2UgUHl0aG9uIG9iamVjdHMgb2ZmIHRoZSBzdGFjay4gIFRoZSByZXN1bHQgb2YgdW5waWNrbGluZyBpcwojIHdoYXRldmVyIG9iamVjdCBpcyBsZWZ0IG9uIHRoZSBzdGFjayB3aGVuIHRoZSBmaW5hbCBTVE9QIG9wY29kZSBpcyBleGVjdXRlZC4KIwojIFRoZSBtZW1vIGlzIHNpbXBseSBhbiBhcnJheSBvZiBvYmplY3RzLCBvciBpdCBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgYSBkaWN0CiMgbWFwcGluZyBsaXR0bGUgaW50ZWdlcnMgdG8gb2JqZWN0cy4gIFRoZSBtZW1vIHNlcnZlcyBhcyB0aGUgUE0ncyAibG9uZyB0ZXJtCiMgbWVtb3J5IiwgYW5kIHRoZSBsaXR0bGUgaW50ZWdlcnMgaW5kZXhpbmcgdGhlIG1lbW8gYXJlIGFraW4gdG8gdmFyaWFibGUKIyBuYW1lcy4gIFNvbWUgb3Bjb2RlcyBwb3AgYSBzdGFjayBvYmplY3QgaW50byB0aGUgbWVtbyBhdCBhIGdpdmVuIGluZGV4LAojIGFuZCBvdGhlcnMgcHVzaCBhIG1lbW8gb2JqZWN0IGF0IGEgZ2l2ZW4gaW5kZXggb250byB0aGUgc3RhY2sgYWdhaW4uCiMKIyBBdCBoZWFydCwgdGhhdCdzIGFsbCB0aGUgUE0gaGFzLiAgU3VidGxldGllcyBhcmlzZSBmb3IgdGhlc2UgcmVhc29uczoKIwojICsgT2JqZWN0IGlkZW50aXR5LiAgT2JqZWN0cyBjYW4gYmUgYXJiaXRyYXJpbHkgY29tcGxleCwgYW5kIHN1Ym9iamVjdHMKIyAgIG1heSBiZSBzaGFyZWQgKGZvciBleGFtcGxlLCB0aGUgbGlzdCBbYSwgYV0gcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhCiMgICB0d2ljZSkuICBJdCBjYW4gYmUgdml0YWwgdGhhdCB1bnBpY2tsaW5nIHJlY3JlYXRlIGFuIGlzb21vcnBoaWMgb2JqZWN0CiMgICBncmFwaCwgZmFpdGhmdWxseSByZXByb2R1Y2luZyBzaGFyaW5nLgojCiMgKyBSZWN1cnNpdmUgb2JqZWN0cy4gIEZvciBleGFtcGxlLCBhZnRlciAiTCA9IFtdOyBMLmFwcGVuZChMKSIsIEwgaXMgYQojICAgbGlzdCwgYW5kIExbMF0gaXMgdGhlIHNhbWUgbGlzdC4gIFRoaXMgaXMgcmVsYXRlZCB0byB0aGUgb2JqZWN0IGlkZW50aXR5CiMgICBwb2ludCwgYW5kIHNvbWUgc2VxdWVuY2VzIG9mIHBpY2tsZSBvcGNvZGVzIGFyZSBzdWJ0bGUgaW4gb3JkZXIgdG8KIyAgIGdldCB0aGUgcmlnaHQgcmVzdWx0IGluIGFsbCBjYXNlcy4KIwojICsgVGhpbmdzIHBpY2tsZSBkb2Vzbid0IGtub3cgZXZlcnl0aGluZyBhYm91dC4gIEV4YW1wbGVzIG9mIHRoaW5ncyBwaWNrbGUKIyAgIGRvZXMga25vdyBldmVyeXRoaW5nIGFib3V0IGFyZSBQeXRob24ncyBidWlsdGluIHNjYWxhciBhbmQgY29udGFpbmVyCiMgICB0eXBlcywgbGlrZSBpbnRzIGFuZCB0dXBsZXMuICBUaGV5IGdlbmVyYWxseSBoYXZlIG9wY29kZXMgZGVkaWNhdGVkIHRvCiMgICB0aGVtLiAgRm9yIHRoaW5ncyBsaWtlIG1vZHVsZSByZWZlcmVuY2VzIGFuZCBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkCiMgICBjbGFzc2VzLCBwaWNrbGUncyBrbm93bGVkZ2UgaXMgbGltaXRlZC4gIEhpc3RvcmljYWxseSwgbWFueSBlbmhhbmNlbWVudHMKIyAgIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBwaWNrbGUgcHJvdG9jb2wgaW4gb3JkZXIgdG8gZG8gYSBiZXR0ZXIgKGZhc3RlciwKIyAgIGFuZC9vciBtb3JlIGNvbXBhY3QpIGpvYiBvbiB0aG9zZS4KIwojICsgQmFja3dhcmQgY29tcGF0aWJpbGl0eSBhbmQgbWljcm8tb3B0aW1pemF0aW9uLiAgQXMgZXhwbGFpbmVkIGJlbG93LAojICAgcGlja2xlIG9wY29kZXMgbmV2ZXIgZ28gYXdheSwgbm90IGV2ZW4gd2hlbiBiZXR0ZXIgd2F5cyB0byBkbyBhIHRoaW5nCiMgICBnZXQgaW52ZW50ZWQuICBUaGUgcmVwZXJ0b2lyZSBvZiB0aGUgUE0ganVzdCBrZWVwcyBncm93aW5nIG92ZXIgdGltZS4KIyAgIEZvciBleGFtcGxlLCBwcm90b2NvbCAwIGhhZCB0d28gb3Bjb2RlcyBmb3IgYnVpbGRpbmcgUHl0aG9uIGludGVnZXJzIChJTlQKIyAgIGFuZCBMT05HKSwgcHJvdG9jb2wgMSBhZGRlZCB0aHJlZSBtb3JlIGZvciBtb3JlLWVmZmljaWVudCBwaWNrbGluZyBvZiBzaG9ydAojICAgaW50ZWdlcnMsIGFuZCBwcm90b2NvbCAyIGFkZGVkIHR3byBtb3JlIGZvciBtb3JlLWVmZmljaWVudCBwaWNrbGluZyBvZgojICAgbG9uZyBpbnRlZ2VycyAoYmVmb3JlIHByb3RvY29sIDIsIHRoZSBvbmx5IHdheXMgdG8gcGlja2xlIGEgUHl0aG9uIGxvbmcKIyAgIHRvb2sgdGltZSBxdWFkcmF0aWMgaW4gdGhlIG51bWJlciBvZiBkaWdpdHMsIGZvciBib3RoIHBpY2tsaW5nIGFuZAojICAgdW5waWNrbGluZykuICAiT3Bjb2RlIGJsb2F0IiBpc24ndCBzbyBtdWNoIGEgc3VidGxldHkgYXMgYSBzb3VyY2Ugb2YKIyAgIHdlYXJ5aW5nIGNvbXBsaWNhdGlvbi4KIwojCiMgUGlja2xlIHByb3RvY29sczoKIwojIEZvciBjb21wYXRpYmlsaXR5LCB0aGUgbWVhbmluZyBvZiBhIHBpY2tsZSBvcGNvZGUgbmV2ZXIgY2hhbmdlcy4gIEluc3RlYWQgbmV3CiMgcGlja2xlIG9wY29kZXMgZ2V0IGFkZGVkLCBhbmQgZWFjaCB2ZXJzaW9uJ3MgdW5waWNrbGVyIGNhbiBoYW5kbGUgYWxsIHRoZQojIHBpY2tsZSBvcGNvZGVzIGluIGFsbCBwcm90b2NvbCB2ZXJzaW9ucyB0byBkYXRlLiAgU28gb2xkIHBpY2tsZXMgY29udGludWUgdG8KIyBiZSByZWFkYWJsZSBmb3JldmVyLiAgVGhlIHBpY2tsZXIgY2FuIGdlbmVyYWxseSBiZSB0b2xkIHRvIHJlc3RyaWN0IGl0c2VsZiB0bwojIHRoZSBzdWJzZXQgb2Ygb3Bjb2RlcyBhdmFpbGFibGUgdW5kZXIgcHJldmlvdXMgcHJvdG9jb2wgdmVyc2lvbnMgdG9vLCBzbyB0aGF0CiMgdXNlcnMgY2FuIGNyZWF0ZSBwaWNrbGVzIHVuZGVyIHRoZSBjdXJyZW50IHZlcnNpb24gcmVhZGFibGUgYnkgb2xkZXIKIyB2ZXJzaW9ucy4gIEhvd2V2ZXIsIGEgcGlja2xlIGRvZXMgbm90IGNvbnRhaW4gaXRzIHZlcnNpb24gbnVtYmVyIGVtYmVkZGVkCiMgd2l0aGluIGl0LiAgSWYgYW4gb2xkZXIgdW5waWNrbGVyIHRyaWVzIHRvIHJlYWQgYSBwaWNrbGUgdXNpbmcgYSBsYXRlcgojIHByb3RvY29sLCB0aGUgcmVzdWx0IGlzIG1vc3QgbGlrZWx5IGFuIGV4Y2VwdGlvbiBkdWUgdG8gc2VlaW5nIGFuIHVua25vd24gKGluCiMgdGhlIG9sZGVyIHVucGlja2xlcikgb3Bjb2RlLgojCiMgVGhlIG9yaWdpbmFsIHBpY2tsZSB1c2VkIHdoYXQncyBub3cgY2FsbGVkICJwcm90b2NvbCAwIiwgYW5kIHdoYXQgd2FzIGNhbGxlZAojICJ0ZXh0IG1vZGUiIGJlZm9yZSBQeXRob24gMi4zLiAgVGhlIGVudGlyZSBwaWNrbGUgYnl0ZXN0cmVhbSBpcyBtYWRlIHVwIG9mCiMgcHJpbnRhYmxlIDctYml0IEFTQ0lJIGNoYXJhY3RlcnMsIHBsdXMgdGhlIG5ld2xpbmUgY2hhcmFjdGVyLCBpbiBwcm90b2NvbCAwLgojIFRoYXQncyB3aHkgaXQgd2FzIGNhbGxlZCB0ZXh0IG1vZGUuICBQcm90b2NvbCAwIGlzIHNtYWxsIGFuZCBlbGVnYW50LCBidXQKIyBzb21ldGltZXMgcGFpbmZ1bGx5IGluZWZmaWNpZW50LgojCiMgVGhlIHNlY29uZCBtYWpvciBzZXQgb2YgYWRkaXRpb25zIGlzIG5vdyBjYWxsZWQgInByb3RvY29sIDEiLCBhbmQgd2FzIGNhbGxlZAojICJiaW5hcnkgbW9kZSIgYmVmb3JlIFB5dGhvbiAyLjMuICBUaGlzIGFkZGVkIG1hbnkgb3Bjb2RlcyB3aXRoIGFyZ3VtZW50cwojIGNvbnNpc3Rpbmcgb2YgYXJiaXRyYXJ5IGJ5dGVzLCBpbmNsdWRpbmcgTlVMIGJ5dGVzIGFuZCB1bnByaW50YWJsZSAiaGlnaCBiaXQiCiMgYnl0ZXMuICBCaW5hcnkgbW9kZSBwaWNrbGVzIGNhbiBiZSBzdWJzdGFudGlhbGx5IHNtYWxsZXIgdGhhbiBlcXVpdmFsZW50CiMgdGV4dCBtb2RlIHBpY2tsZXMsIGFuZCBzb21ldGltZXMgZmFzdGVyIHRvbzsgZS5nLiwgQklOSU5UIHJlcHJlc2VudHMgYSA0LWJ5dGUKIyBpbnQgYXMgNCBieXRlcyBmb2xsb3dpbmcgdGhlIG9wY29kZSwgd2hpY2ggaXMgY2hlYXBlciB0byB1bnBpY2tsZSB0aGFuIHRoZQojIChwZXJoYXBzKSAxMS1jaGFyYWN0ZXIgZGVjaW1hbCBzdHJpbmcgYXR0YWNoZWQgdG8gSU5ULiAgUHJvdG9jb2wgMSBhbHNvIGFkZGVkCiMgYSBudW1iZXIgb2Ygb3Bjb2RlcyB0aGF0IG9wZXJhdGUgb24gbWFueSBzdGFjayBlbGVtZW50cyBhdCBvbmNlIChsaWtlIEFQUEVORFMKIyBhbmQgU0VUSVRFTVMpLCBhbmQgInNob3J0Y3V0IiBvcGNvZGVzIChsaWtlIEVNUFRZX0RJQ1QgYW5kIEVNUFRZX1RVUExFKS4KIwojIFRoZSB0aGlyZCBtYWpvciBzZXQgb2YgYWRkaXRpb25zIGNhbWUgaW4gUHl0aG9uIDIuMywgYW5kIGlzIGNhbGxlZCAicHJvdG9jb2wKIyAyIi4gIFRoaXMgYWRkZWQ6CiMKIyAtIEEgYmV0dGVyIHdheSB0byBwaWNrbGUgaW5zdGFuY2VzIG9mIG5ldy1zdHlsZSBjbGFzc2VzIChORVdPQkopLgojCiMgLSBBIHdheSBmb3IgYSBwaWNrbGUgdG8gaWRlbnRpZnkgaXRzIHByb3RvY29sIChQUk9UTykuCiMKIyAtIFRpbWUtIGFuZCBzcGFjZS0gZWZmaWNpZW50IHBpY2tsaW5nIG9mIGxvbmcgaW50cyAoTE9OR3sxLDR9KS4KIwojIC0gU2hvcnRjdXRzIGZvciBzbWFsbCB0dXBsZXMgKFRVUExFezEsMiwzfX0uCiMKIyAtIERlZGljYXRlZCBvcGNvZGVzIGZvciBib29scyAoTkVXVFJVRSwgTkVXRkFMU0UpLgojCiMgLSBUaGUgImV4dGVuc2lvbiByZWdpc3RyeSIsIGEgdmVjdG9yIG9mIHBvcHVsYXIgb2JqZWN0cyB0aGF0IGNhbiBiZSBwdXNoZWQKIyAgIGVmZmljaWVudGx5IGJ5IGluZGV4IChFWFR7MSwyLDR9KS4gIFRoaXMgaXMgYWtpbiB0byB0aGUgbWVtbyBhbmQgR0VULCBidXQKIyAgIHRoZSByZWdpc3RyeSBjb250ZW50cyBhcmUgcHJlZGVmaW5lZCAodGhlcmUncyBub3RoaW5nIGFraW4gdG8gdGhlIG1lbW8ncwojICAgUFVUKS4KIwojIEFub3RoZXIgaW5kZXBlbmRlbnQgY2hhbmdlIHdpdGggUHl0aG9uIDIuMyBpcyB0aGUgYWJhbmRvbm1lbnQgb2YgYW55CiMgcHJldGVuc2UgdGhhdCBpdCBtaWdodCBiZSBzYWZlIHRvIGxvYWQgcGlja2xlcyByZWNlaXZlZCBmcm9tIHVudHJ1c3RlZAojIHBhcnRpZXMgLS0gbm8gc3VmZmljaWVudCBzZWN1cml0eSBhbmFseXNpcyBoYXMgYmVlbiBkb25lIHRvIGd1YXJhbnRlZQojIHRoaXMgYW5kIHRoZXJlIGlzbid0IGEgdXNlIGNhc2UgdGhhdCB3YXJyYW50cyB0aGUgZXhwZW5zZSBvZiBzdWNoIGFuCiMgYW5hbHlzaXMuCiMKIyBUbyB0aGlzIGVuZCwgYWxsIHRlc3RzIGZvciBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyBvciBmb3IKIyBjb3B5cmVnLnNhZmVfY29uc3RydWN0b3JzIGFyZSByZW1vdmVkIGZyb20gdGhlIHVucGlja2xpbmcgY29kZS4KIyBSZWZlcmVuY2VzIHRvIHRoZXNlIHZhcmlhYmxlcyBpbiB0aGUgZGVzY3JpcHRpb25zIGJlbG93IGFyZSB0byBiZSBzZWVuCiMgYXMgZGVzY3JpYmluZyB1bnBpY2tsaW5nIGluIFB5dGhvbiAyLjIgYW5kIGJlZm9yZS4KCgojIE1ldGEtcnVsZTogIERlc2NyaXB0aW9ucyBhcmUgc3RvcmVkIGluIGluc3RhbmNlcyBvZiBkZXNjcmlwdG9yIG9iamVjdHMsCiMgd2l0aCBwbGFpbiBjb25zdHJ1Y3RvcnMuICBObyBtZXRhLWxhbmd1YWdlIGlzIGRlZmluZWQgZnJvbSB3aGljaAojIGRlc2NyaXB0b3JzIGNvdWxkIGJlIGNvbnN0cnVjdGVkLiAgSWYgeW91IHdhbnQsIGUuZy4sIFhNTCwgd3JpdGUgYSBsaXR0bGUKIyBwcm9ncmFtIHRvIGdlbmVyYXRlIFhNTCBmcm9tIHRoZSBvYmplY3RzLgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU29tZSBwaWNrbGUgb3Bjb2RlcyBoYXZlIGFuIGFyZ3VtZW50LCBmb2xsb3dpbmcgdGhlIG9wY29kZSBpbiB0aGUKIyBieXRlc3RyZWFtLiAgQW4gYXJndW1lbnQgaXMgb2YgYSBzcGVjaWZpYyB0eXBlLCBkZXNjcmliZWQgYnkgYW4gaW5zdGFuY2UKIyBvZiBBcmd1bWVudERlc2NyaXB0b3IuICBUaGVzZSBhcmUgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggYXJndW1lbnRzIHRha2VuCiMgb2ZmIHRoZSBzdGFjayAtLSBBcmd1bWVudERlc2NyaXB0b3IgYXBwbGllcyBvbmx5IHRvIGFyZ3VtZW50cyBlbWJlZGRlZCBpbgojIHRoZSBvcGNvZGUgc3RyZWFtLCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgYW4gb3Bjb2RlLgoKIyBSZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29uc3VtZWQgYnkgYW4gYXJndW1lbnQgZGVsaW1pdGVkIGJ5IHRoZQojIG5leHQgbmV3bGluZSBjaGFyYWN0ZXIuClVQX1RPX05FV0xJTkUgPSAtMQoKIyBSZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29uc3VtZWQgYnkgYSB0d28tYXJndW1lbnQgb3Bjb2RlIHdoZXJlCiMgdGhlIGZpcnN0IGFyZ3VtZW50IGdpdmVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHNlY29uZCBhcmd1bWVudC4KVEFLRU5fRlJPTV9BUkdVTUVOVDEgID0gLTIgICAjIG51bSBieXRlcyBpcyAxLWJ5dGUgdW5zaWduZWQgaW50ClRBS0VOX0ZST01fQVJHVU1FTlQ0ICA9IC0zICAgIyBudW0gYnl0ZXMgaXMgNC1ieXRlIHNpZ25lZCBsaXR0bGUtZW5kaWFuIGludApUQUtFTl9GUk9NX0FSR1VNRU5UNFUgPSAtNCAgICMgbnVtIGJ5dGVzIGlzIDQtYnl0ZSB1bnNpZ25lZCBsaXR0bGUtZW5kaWFuIGludApUQUtFTl9GUk9NX0FSR1VNRU5UOFUgPSAtNSAgICMgbnVtIGJ5dGVzIGlzIDgtYnl0ZSB1bnNpZ25lZCBsaXR0bGUtZW5kaWFuIGludAoKY2xhc3MgQXJndW1lbnREZXNjcmlwdG9yKG9iamVjdCk6CiAgICBfX3Nsb3RzX18gPSAoCiAgICAgICAgIyBuYW1lIG9mIGRlc2NyaXB0b3IgcmVjb3JkLCBhbHNvIGEgbW9kdWxlIGdsb2JhbCBuYW1lOyBhIHN0cmluZwogICAgICAgICduYW1lJywKCiAgICAgICAgIyBsZW5ndGggb2YgYXJndW1lbnQsIGluIGJ5dGVzOyBhbiBpbnQ7IFVQX1RPX05FV0xJTkUgYW5kCiAgICAgICAgIyBUQUtFTl9GUk9NX0FSR1VNRU5UezEsNCw4fSBhcmUgbmVnYXRpdmUgdmFsdWVzIGZvciB2YXJpYWJsZS1sZW5ndGgKICAgICAgICAjIGNhc2VzCiAgICAgICAgJ24nLAoKICAgICAgICAjIGEgZnVuY3Rpb24gdGFraW5nIGEgZmlsZS1saWtlIG9iamVjdCwgcmVhZGluZyB0aGlzIGtpbmQgb2YgYXJndW1lbnQKICAgICAgICAjIGZyb20gdGhlIG9iamVjdCBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiwgYWR2YW5jaW5nIHRoZSBjdXJyZW50CiAgICAgICAgIyBwb3NpdGlvbiBieSBuIGJ5dGVzLCBhbmQgcmV0dXJuaW5nIHRoZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQKICAgICAgICAncmVhZGVyJywKCiAgICAgICAgIyBodW1hbi1yZWFkYWJsZSBkb2NzIGZvciB0aGlzIGFyZyBkZXNjcmlwdG9yOyBhIHN0cmluZwogICAgICAgICdkb2MnLAogICAgKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBuLCByZWFkZXIsIGRvYyk6CiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobmFtZSwgc3RyKQogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKCiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobiwgaW50KSBhbmQgKG4gPj0gMCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuIGluIChVUF9UT19ORVdMSU5FLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUtFTl9GUk9NX0FSR1VNRU5UMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFLRU5fRlJPTV9BUkdVTUVOVDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBS0VOX0ZST01fQVJHVU1FTlQ0VSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFLRU5fRlJPTV9BUkdVTUVOVDhVKSkKICAgICAgICBzZWxmLm4gPSBuCgogICAgICAgIHNlbGYucmVhZGVyID0gcmVhZGVyCgogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRvYywgc3RyKQogICAgICAgIHNlbGYuZG9jID0gZG9jCgpmcm9tIHN0cnVjdCBpbXBvcnQgdW5wYWNrIGFzIF91bnBhY2sKCmRlZiByZWFkX3VpbnQxKGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbwogICAgPj4+IHJlYWRfdWludDEoaW8uQnl0ZXNJTyhiJ1x4ZmYnKSkKICAgIDI1NQogICAgIiIiCgogICAgZGF0YSA9IGYucmVhZCgxKQogICAgaWYgZGF0YToKICAgICAgICByZXR1cm4gZGF0YVswXQogICAgcmFpc2UgVmFsdWVFcnJvcigibm90IGVub3VnaCBkYXRhIGluIHN0cmVhbSB0byByZWFkIHVpbnQxIikKCnVpbnQxID0gQXJndW1lbnREZXNjcmlwdG9yKAogICAgICAgICAgICBuYW1lPSd1aW50MScsCiAgICAgICAgICAgIG49MSwKICAgICAgICAgICAgcmVhZGVyPXJlYWRfdWludDEsCiAgICAgICAgICAgIGRvYz0iT25lLWJ5dGUgdW5zaWduZWQgaW50ZWdlci4iKQoKCmRlZiByZWFkX3VpbnQyKGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbwogICAgPj4+IHJlYWRfdWludDIoaW8uQnl0ZXNJTyhiJ1x4ZmZceDAwJykpCiAgICAyNTUKICAgID4+PiByZWFkX3VpbnQyKGlvLkJ5dGVzSU8oYidceGZmXHhmZicpKQogICAgNjU1MzUKICAgICIiIgoKICAgIGRhdGEgPSBmLnJlYWQoMikKICAgIGlmIGxlbihkYXRhKSA9PSAyOgogICAgICAgIHJldHVybiBfdW5wYWNrKCI8SCIsIGRhdGEpWzBdCiAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHJlYWQgdWludDIiKQoKdWludDIgPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICAgICAgICAgIG5hbWU9J3VpbnQyJywKICAgICAgICAgICAgbj0yLAogICAgICAgICAgICByZWFkZXI9cmVhZF91aW50MiwKICAgICAgICAgICAgZG9jPSJUd28tYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyLCBsaXR0bGUtZW5kaWFuLiIpCgoKZGVmIHJlYWRfaW50NChmKToKICAgIHIiIiIKICAgID4+PiBpbXBvcnQgaW8KICAgID4+PiByZWFkX2ludDQoaW8uQnl0ZXNJTyhiJ1x4ZmZceDAwXHgwMFx4MDAnKSkKICAgIDI1NQogICAgPj4+IHJlYWRfaW50NChpby5CeXRlc0lPKGInXHgwMFx4MDBceDAwXHg4MCcpKSA9PSAtKDIqKjMxKQogICAgVHJ1ZQogICAgIiIiCgogICAgZGF0YSA9IGYucmVhZCg0KQogICAgaWYgbGVuKGRhdGEpID09IDQ6CiAgICAgICAgcmV0dXJuIF91bnBhY2soIjxpIiwgZGF0YSlbMF0KICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCBlbm91Z2ggZGF0YSBpbiBzdHJlYW0gdG8gcmVhZCBpbnQ0IikKCmludDQgPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICAgICAgICAgbmFtZT0naW50NCcsCiAgICAgICAgICAgbj00LAogICAgICAgICAgIHJlYWRlcj1yZWFkX2ludDQsCiAgICAgICAgICAgZG9jPSJGb3VyLWJ5dGUgc2lnbmVkIGludGVnZXIsIGxpdHRsZS1lbmRpYW4sIDIncyBjb21wbGVtZW50LiIpCgoKZGVmIHJlYWRfdWludDQoZik6CiAgICByIiIiCiAgICA+Pj4gaW1wb3J0IGlvCiAgICA+Pj4gcmVhZF91aW50NChpby5CeXRlc0lPKGInXHhmZlx4MDBceDAwXHgwMCcpKQogICAgMjU1CiAgICA+Pj4gcmVhZF91aW50NChpby5CeXRlc0lPKGInXHgwMFx4MDBceDAwXHg4MCcpKSA9PSAyKiozMQogICAgVHJ1ZQogICAgIiIiCgogICAgZGF0YSA9IGYucmVhZCg0KQogICAgaWYgbGVuKGRhdGEpID09IDQ6CiAgICAgICAgcmV0dXJuIF91bnBhY2soIjxJIiwgZGF0YSlbMF0KICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCBlbm91Z2ggZGF0YSBpbiBzdHJlYW0gdG8gcmVhZCB1aW50NCIpCgp1aW50NCA9IEFyZ3VtZW50RGVzY3JpcHRvcigKICAgICAgICAgICAgbmFtZT0ndWludDQnLAogICAgICAgICAgICBuPTQsCiAgICAgICAgICAgIHJlYWRlcj1yZWFkX3VpbnQ0LAogICAgICAgICAgICBkb2M9IkZvdXItYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyLCBsaXR0bGUtZW5kaWFuLiIpCgoKZGVmIHJlYWRfdWludDgoZik6CiAgICByIiIiCiAgICA+Pj4gaW1wb3J0IGlvCiAgICA+Pj4gcmVhZF91aW50OChpby5CeXRlc0lPKGInXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAnKSkKICAgIDI1NQogICAgPj4+IHJlYWRfdWludDgoaW8uQnl0ZXNJTyhiJ1x4ZmYnICogOCkpID09IDIqKjY0LTEKICAgIFRydWUKICAgICIiIgoKICAgIGRhdGEgPSBmLnJlYWQoOCkKICAgIGlmIGxlbihkYXRhKSA9PSA4OgogICAgICAgIHJldHVybiBfdW5wYWNrKCI8USIsIGRhdGEpWzBdCiAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHJlYWQgdWludDgiKQoKdWludDggPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICAgICAgICAgIG5hbWU9J3VpbnQ4JywKICAgICAgICAgICAgbj04LAogICAgICAgICAgICByZWFkZXI9cmVhZF91aW50OCwKICAgICAgICAgICAgZG9jPSJFaWdodC1ieXRlIHVuc2lnbmVkIGludGVnZXIsIGxpdHRsZS1lbmRpYW4uIikKCgpkZWYgcmVhZF9zdHJpbmdubChmLCBkZWNvZGU9VHJ1ZSwgc3RyaXBxdW90ZXM9VHJ1ZSk6CiAgICByIiIiCiAgICA+Pj4gaW1wb3J0IGlvCiAgICA+Pj4gcmVhZF9zdHJpbmdubChpby5CeXRlc0lPKGIiJ2FiY2QnXG5lZmdcbiIpKQogICAgJ2FiY2QnCgogICAgPj4+IHJlYWRfc3RyaW5nbmwoaW8uQnl0ZXNJTyhiIlxuIikpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAuLi4KICAgIFZhbHVlRXJyb3I6IG5vIHN0cmluZyBxdW90ZXMgYXJvdW5kIGInJwoKICAgID4+PiByZWFkX3N0cmluZ25sKGlvLkJ5dGVzSU8oYiJcbiIpLCBzdHJpcHF1b3Rlcz1GYWxzZSkKICAgICcnCgogICAgPj4+IHJlYWRfc3RyaW5nbmwoaW8uQnl0ZXNJTyhiIicnXG4iKSkKICAgICcnCgogICAgPj4+IHJlYWRfc3RyaW5nbmwoaW8uQnl0ZXNJTyhiJyJhYmNkIicpKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgLi4uCiAgICBWYWx1ZUVycm9yOiBubyBuZXdsaW5lIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIHJlYWQgc3RyaW5nbmwKCiAgICBFbWJlZGRlZCBlc2NhcGVzIGFyZSB1bmRvbmUgaW4gdGhlIHJlc3VsdC4KICAgID4+PiByZWFkX3N0cmluZ25sKGlvLkJ5dGVzSU8oYnIiJ2FcblxcYlx4MDBjXHRkJyIgKyBiIlxuJ2UnIikpCiAgICAnYVxuXFxiXHgwMGNcdGQnCiAgICAiIiIKCiAgICBkYXRhID0gZi5yZWFkbGluZSgpCiAgICBpZiBub3QgZGF0YS5lbmRzd2l0aChiJ1xuJyk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gbmV3bGluZSBmb3VuZCB3aGVuIHRyeWluZyB0byByZWFkIHN0cmluZ25sIikKICAgIGRhdGEgPSBkYXRhWzotMV0gICAgIyBsb3NlIHRoZSBuZXdsaW5lCgogICAgaWYgc3RyaXBxdW90ZXM6CiAgICAgICAgZm9yIHEgaW4gKGInIicsIGIiJyIpOgogICAgICAgICAgICBpZiBkYXRhLnN0YXJ0c3dpdGgocSk6CiAgICAgICAgICAgICAgICBpZiBub3QgZGF0YS5lbmRzd2l0aChxKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzdHJpbnEgcXVvdGUgJXIgbm90IGZvdW5kIGF0IGJvdGggIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZHMgb2YgJXIiICUgKHEsIGRhdGEpKQogICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFbMTotMV0KICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gc3RyaW5nIHF1b3RlcyBhcm91bmQgJXIiICUgZGF0YSkKCiAgICBpZiBkZWNvZGU6CiAgICAgICAgZGF0YSA9IGNvZGVjcy5lc2NhcGVfZGVjb2RlKGRhdGEpWzBdLmRlY29kZSgiYXNjaWkiKQogICAgcmV0dXJuIGRhdGEKCnN0cmluZ25sID0gQXJndW1lbnREZXNjcmlwdG9yKAogICAgICAgICAgICAgICBuYW1lPSdzdHJpbmdubCcsCiAgICAgICAgICAgICAgIG49VVBfVE9fTkVXTElORSwKICAgICAgICAgICAgICAgcmVhZGVyPXJlYWRfc3RyaW5nbmwsCiAgICAgICAgICAgICAgIGRvYz0iIiJBIG5ld2xpbmUtdGVybWluYXRlZCBzdHJpbmcuCgogICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIHJlcHItc3R5bGUgc3RyaW5nLCB3aXRoIGVtYmVkZGVkIGVzY2FwZXMsIGFuZAogICAgICAgICAgICAgICAgICAgYnJhY2tldGluZyBxdW90ZXMuCiAgICAgICAgICAgICAgICAgICAiIiIpCgpkZWYgcmVhZF9zdHJpbmdubF9ub2VzY2FwZShmKToKICAgIHJldHVybiByZWFkX3N0cmluZ25sKGYsIHN0cmlwcXVvdGVzPUZhbHNlKQoKc3RyaW5nbmxfbm9lc2NhcGUgPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J3N0cmluZ25sX25vZXNjYXBlJywKICAgICAgICAgICAgICAgICAgICAgICAgbj1VUF9UT19ORVdMSU5FLAogICAgICAgICAgICAgICAgICAgICAgICByZWFkZXI9cmVhZF9zdHJpbmdubF9ub2VzY2FwZSwKICAgICAgICAgICAgICAgICAgICAgICAgZG9jPSIiIkEgbmV3bGluZS10ZXJtaW5hdGVkIHN0cmluZy4KCiAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBzdHItc3R5bGUgc3RyaW5nLCB3aXRob3V0IGVtYmVkZGVkIGVzY2FwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIG9yIGJyYWNrZXRpbmcgcXVvdGVzLiAgSXQgc2hvdWxkIGNvbnNpc3Qgc29sZWx5IG9mCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAiIiIpCgpkZWYgcmVhZF9zdHJpbmdubF9ub2VzY2FwZV9wYWlyKGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbwogICAgPj4+IHJlYWRfc3RyaW5nbmxfbm9lc2NhcGVfcGFpcihpby5CeXRlc0lPKGIiUXVldWVcbkVtcHR5XG5qdW5rIikpCiAgICAnUXVldWUgRW1wdHknCiAgICAiIiIKCiAgICByZXR1cm4gIiVzICVzIiAlIChyZWFkX3N0cmluZ25sX25vZXNjYXBlKGYpLCByZWFkX3N0cmluZ25sX25vZXNjYXBlKGYpKQoKc3RyaW5nbmxfbm9lc2NhcGVfcGFpciA9IEFyZ3VtZW50RGVzY3JpcHRvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdzdHJpbmdubF9ub2VzY2FwZV9wYWlyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuPVVQX1RPX05FV0xJTkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyPXJlYWRfc3RyaW5nbmxfbm9lc2NhcGVfcGFpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2M9IiIiQSBwYWlyIG9mIG5ld2xpbmUtdGVybWluYXRlZCBzdHJpbmdzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgc3RyLXN0eWxlIHN0cmluZ3MsIHdpdGhvdXQgZW1iZWRkZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVzLCBvciBicmFja2V0aW5nIHF1b3Rlcy4gIFRoZXkgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lzdCBzb2xlbHkgb2YgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHBhaXIgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgc3RyaW5nLCB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzaW5nbGUgYmxhbmsgc2VwYXJhdGluZyB0aGUgdHdvIHN0cmluZ3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIiKQoKCmRlZiByZWFkX3N0cmluZzEoZik6CiAgICByIiIiCiAgICA+Pj4gaW1wb3J0IGlvCiAgICA+Pj4gcmVhZF9zdHJpbmcxKGlvLkJ5dGVzSU8oYiJceDAwIikpCiAgICAnJwogICAgPj4+IHJlYWRfc3RyaW5nMShpby5CeXRlc0lPKGIiXHgwM2FiY2RlZiIpKQogICAgJ2FiYycKICAgICIiIgoKICAgIG4gPSByZWFkX3VpbnQxKGYpCiAgICBhc3NlcnQgbiA+PSAwCiAgICBkYXRhID0gZi5yZWFkKG4pCiAgICBpZiBsZW4oZGF0YSkgPT0gbjoKICAgICAgICByZXR1cm4gZGF0YS5kZWNvZGUoImxhdGluLTEiKQogICAgcmFpc2UgVmFsdWVFcnJvcigiZXhwZWN0ZWQgJWQgYnl0ZXMgaW4gYSBzdHJpbmcxLCBidXQgb25seSAlZCByZW1haW4iICUKICAgICAgICAgICAgICAgICAgICAgKG4sIGxlbihkYXRhKSkpCgpzdHJpbmcxID0gQXJndW1lbnREZXNjcmlwdG9yKAogICAgICAgICAgICAgIG5hbWU9InN0cmluZzEiLAogICAgICAgICAgICAgIG49VEFLRU5fRlJPTV9BUkdVTUVOVDEsCiAgICAgICAgICAgICAgcmVhZGVyPXJlYWRfc3RyaW5nMSwKICAgICAgICAgICAgICBkb2M9IiIiQSBjb3VudGVkIHN0cmluZy4KCiAgICAgICAgICAgICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgMS1ieXRlIHVuc2lnbmVkIGludCBnaXZpbmcgdGhlIG51bWJlcgogICAgICAgICAgICAgIG9mIGJ5dGVzIGluIHRoZSBzdHJpbmcsIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoYXQgbWFueQogICAgICAgICAgICAgIGJ5dGVzLgogICAgICAgICAgICAgICIiIikKCgpkZWYgcmVhZF9zdHJpbmc0KGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbwogICAgPj4+IHJlYWRfc3RyaW5nNChpby5CeXRlc0lPKGIiXHgwMFx4MDBceDAwXHgwMGFiYyIpKQogICAgJycKICAgID4+PiByZWFkX3N0cmluZzQoaW8uQnl0ZXNJTyhiIlx4MDNceDAwXHgwMFx4MDBhYmNkZWYiKSkKICAgICdhYmMnCiAgICA+Pj4gcmVhZF9zdHJpbmc0KGlvLkJ5dGVzSU8oYiJceDAwXHgwMFx4MDBceDAzYWJjZGVmIikpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAuLi4KICAgIFZhbHVlRXJyb3I6IGV4cGVjdGVkIDUwMzMxNjQ4IGJ5dGVzIGluIGEgc3RyaW5nNCwgYnV0IG9ubHkgNiByZW1haW4KICAgICIiIgoKICAgIG4gPSByZWFkX2ludDQoZikKICAgIGlmIG4gPCAwOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInN0cmluZzQgYnl0ZSBjb3VudCA8IDA6ICVkIiAlIG4pCiAgICBkYXRhID0gZi5yZWFkKG4pCiAgICBpZiBsZW4oZGF0YSkgPT0gbjoKICAgICAgICByZXR1cm4gZGF0YS5kZWNvZGUoImxhdGluLTEiKQogICAgcmFpc2UgVmFsdWVFcnJvcigiZXhwZWN0ZWQgJWQgYnl0ZXMgaW4gYSBzdHJpbmc0LCBidXQgb25seSAlZCByZW1haW4iICUKICAgICAgICAgICAgICAgICAgICAgKG4sIGxlbihkYXRhKSkpCgpzdHJpbmc0ID0gQXJndW1lbnREZXNjcmlwdG9yKAogICAgICAgICAgICAgIG5hbWU9InN0cmluZzQiLAogICAgICAgICAgICAgIG49VEFLRU5fRlJPTV9BUkdVTUVOVDQsCiAgICAgICAgICAgICAgcmVhZGVyPXJlYWRfc3RyaW5nNCwKICAgICAgICAgICAgICBkb2M9IiIiQSBjb3VudGVkIHN0cmluZy4KCiAgICAgICAgICAgICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgNC1ieXRlIGxpdHRsZS1lbmRpYW4gc2lnbmVkIGludCBnaXZpbmcKICAgICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzdHJpbmcsIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCiAgICAgICAgICAgICAgdGhhdCBtYW55IGJ5dGVzLgogICAgICAgICAgICAgICIiIikKCgpkZWYgcmVhZF9ieXRlczEoZik6CiAgICByIiIiCiAgICA+Pj4gaW1wb3J0IGlvCiAgICA+Pj4gcmVhZF9ieXRlczEoaW8uQnl0ZXNJTyhiIlx4MDAiKSkKICAgIGInJwogICAgPj4+IHJlYWRfYnl0ZXMxKGlvLkJ5dGVzSU8oYiJceDAzYWJjZGVmIikpCiAgICBiJ2FiYycKICAgICIiIgoKICAgIG4gPSByZWFkX3VpbnQxKGYpCiAgICBhc3NlcnQgbiA+PSAwCiAgICBkYXRhID0gZi5yZWFkKG4pCiAgICBpZiBsZW4oZGF0YSkgPT0gbjoKICAgICAgICByZXR1cm4gZGF0YQogICAgcmFpc2UgVmFsdWVFcnJvcigiZXhwZWN0ZWQgJWQgYnl0ZXMgaW4gYSBieXRlczEsIGJ1dCBvbmx5ICVkIHJlbWFpbiIgJQogICAgICAgICAgICAgICAgICAgICAobiwgbGVuKGRhdGEpKSkKCmJ5dGVzMSA9IEFyZ3VtZW50RGVzY3JpcHRvcigKICAgICAgICAgICAgICBuYW1lPSJieXRlczEiLAogICAgICAgICAgICAgIG49VEFLRU5fRlJPTV9BUkdVTUVOVDEsCiAgICAgICAgICAgICAgcmVhZGVyPXJlYWRfYnl0ZXMxLAogICAgICAgICAgICAgIGRvYz0iIiJBIGNvdW50ZWQgYnl0ZXMgc3RyaW5nLgoKICAgICAgICAgICAgICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSAxLWJ5dGUgdW5zaWduZWQgaW50IGdpdmluZyB0aGUgbnVtYmVyCiAgICAgICAgICAgICAgb2YgYnl0ZXMsIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoYXQgbWFueSBieXRlcy4KICAgICAgICAgICAgICAiIiIpCgoKZGVmIHJlYWRfYnl0ZXM0KGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbwogICAgPj4+IHJlYWRfYnl0ZXM0KGlvLkJ5dGVzSU8oYiJceDAwXHgwMFx4MDBceDAwYWJjIikpCiAgICBiJycKICAgID4+PiByZWFkX2J5dGVzNChpby5CeXRlc0lPKGIiXHgwM1x4MDBceDAwXHgwMGFiY2RlZiIpKQogICAgYidhYmMnCiAgICA+Pj4gcmVhZF9ieXRlczQoaW8uQnl0ZXNJTyhiIlx4MDBceDAwXHgwMFx4MDNhYmNkZWYiKSkKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIC4uLgogICAgVmFsdWVFcnJvcjogZXhwZWN0ZWQgNTAzMzE2NDggYnl0ZXMgaW4gYSBieXRlczQsIGJ1dCBvbmx5IDYgcmVtYWluCiAgICAiIiIKCiAgICBuID0gcmVhZF91aW50NChmKQogICAgYXNzZXJ0IG4gPj0gMAogICAgaWYgbiA+IHN5cy5tYXhzaXplOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ5dGVzNCBieXRlIGNvdW50ID4gc3lzLm1heHNpemU6ICVkIiAlIG4pCiAgICBkYXRhID0gZi5yZWFkKG4pCiAgICBpZiBsZW4oZGF0YSkgPT0gbjoKICAgICAgICByZXR1cm4gZGF0YQogICAgcmFpc2UgVmFsdWVFcnJvcigiZXhwZWN0ZWQgJWQgYnl0ZXMgaW4gYSBieXRlczQsIGJ1dCBvbmx5ICVkIHJlbWFpbiIgJQogICAgICAgICAgICAgICAgICAgICAobiwgbGVuKGRhdGEpKSkKCmJ5dGVzNCA9IEFyZ3VtZW50RGVzY3JpcHRvcigKICAgICAgICAgICAgICBuYW1lPSJieXRlczQiLAogICAgICAgICAgICAgIG49VEFLRU5fRlJPTV9BUkdVTUVOVDRVLAogICAgICAgICAgICAgIHJlYWRlcj1yZWFkX2J5dGVzNCwKICAgICAgICAgICAgICBkb2M9IiIiQSBjb3VudGVkIGJ5dGVzIHN0cmluZy4KCiAgICAgICAgICAgICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgNC1ieXRlIGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgaW50IGdpdmluZwogICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgYnl0ZXMsIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoYXQgbWFueSBieXRlcy4KICAgICAgICAgICAgICAiIiIpCgoKZGVmIHJlYWRfYnl0ZXM4KGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbywgc3RydWN0LCBzeXMKICAgID4+PiByZWFkX2J5dGVzOChpby5CeXRlc0lPKGIiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBhYmMiKSkKICAgIGInJwogICAgPj4+IHJlYWRfYnl0ZXM4KGlvLkJ5dGVzSU8oYiJceDAzXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMGFiY2RlZiIpKQogICAgYidhYmMnCiAgICA+Pj4gYmlnc2l6ZTggPSBzdHJ1Y3QucGFjaygiPFEiLCBzeXMubWF4c2l6ZS8vMykKICAgID4+PiByZWFkX2J5dGVzOChpby5CeXRlc0lPKGJpZ3NpemU4ICsgYiJhYmNkZWYiKSkgICNkb2N0ZXN0OiArRUxMSVBTSVMKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIC4uLgogICAgVmFsdWVFcnJvcjogZXhwZWN0ZWQgLi4uIGJ5dGVzIGluIGEgYnl0ZXM4LCBidXQgb25seSA2IHJlbWFpbgogICAgIiIiCgogICAgbiA9IHJlYWRfdWludDgoZikKICAgIGFzc2VydCBuID49IDAKICAgIGlmIG4gPiBzeXMubWF4c2l6ZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJieXRlczggYnl0ZSBjb3VudCA+IHN5cy5tYXhzaXplOiAlZCIgJSBuKQogICAgZGF0YSA9IGYucmVhZChuKQogICAgaWYgbGVuKGRhdGEpID09IG46CiAgICAgICAgcmV0dXJuIGRhdGEKICAgIHJhaXNlIFZhbHVlRXJyb3IoImV4cGVjdGVkICVkIGJ5dGVzIGluIGEgYnl0ZXM4LCBidXQgb25seSAlZCByZW1haW4iICUKICAgICAgICAgICAgICAgICAgICAgKG4sIGxlbihkYXRhKSkpCgpieXRlczggPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICAgICAgICAgICAgbmFtZT0iYnl0ZXM4IiwKICAgICAgICAgICAgICBuPVRBS0VOX0ZST01fQVJHVU1FTlQ4VSwKICAgICAgICAgICAgICByZWFkZXI9cmVhZF9ieXRlczgsCiAgICAgICAgICAgICAgZG9jPSIiIkEgY291bnRlZCBieXRlcyBzdHJpbmcuCgogICAgICAgICAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiA4LWJ5dGUgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBpbnQgZ2l2aW5nCiAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBieXRlcywgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhhdCBtYW55IGJ5dGVzLgogICAgICAgICAgICAgICIiIikKCgpkZWYgcmVhZF9ieXRlYXJyYXk4KGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbywgc3RydWN0LCBzeXMKICAgID4+PiByZWFkX2J5dGVhcnJheTgoaW8uQnl0ZXNJTyhiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwYWJjIikpCiAgICBieXRlYXJyYXkoYicnKQogICAgPj4+IHJlYWRfYnl0ZWFycmF5OChpby5CeXRlc0lPKGIiXHgwM1x4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBhYmNkZWYiKSkKICAgIGJ5dGVhcnJheShiJ2FiYycpCiAgICA+Pj4gYmlnc2l6ZTggPSBzdHJ1Y3QucGFjaygiPFEiLCBzeXMubWF4c2l6ZS8vMykKICAgID4+PiByZWFkX2J5dGVhcnJheTgoaW8uQnl0ZXNJTyhiaWdzaXplOCArIGIiYWJjZGVmIikpICAjZG9jdGVzdDogK0VMTElQU0lTCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAuLi4KICAgIFZhbHVlRXJyb3I6IGV4cGVjdGVkIC4uLiBieXRlcyBpbiBhIGJ5dGVhcnJheTgsIGJ1dCBvbmx5IDYgcmVtYWluCiAgICAiIiIKCiAgICBuID0gcmVhZF91aW50OChmKQogICAgYXNzZXJ0IG4gPj0gMAogICAgaWYgbiA+IHN5cy5tYXhzaXplOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ5dGVhcnJheTggYnl0ZSBjb3VudCA+IHN5cy5tYXhzaXplOiAlZCIgJSBuKQogICAgZGF0YSA9IGYucmVhZChuKQogICAgaWYgbGVuKGRhdGEpID09IG46CiAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShkYXRhKQogICAgcmFpc2UgVmFsdWVFcnJvcigiZXhwZWN0ZWQgJWQgYnl0ZXMgaW4gYSBieXRlYXJyYXk4LCBidXQgb25seSAlZCByZW1haW4iICUKICAgICAgICAgICAgICAgICAgICAgKG4sIGxlbihkYXRhKSkpCgpieXRlYXJyYXk4ID0gQXJndW1lbnREZXNjcmlwdG9yKAogICAgICAgICAgICAgIG5hbWU9ImJ5dGVhcnJheTgiLAogICAgICAgICAgICAgIG49VEFLRU5fRlJPTV9BUkdVTUVOVDhVLAogICAgICAgICAgICAgIHJlYWRlcj1yZWFkX2J5dGVhcnJheTgsCiAgICAgICAgICAgICAgZG9jPSIiIkEgY291bnRlZCBieXRlYXJyYXkuCgogICAgICAgICAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiA4LWJ5dGUgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBpbnQgZ2l2aW5nCiAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBieXRlcywgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhhdCBtYW55IGJ5dGVzLgogICAgICAgICAgICAgICIiIikKCmRlZiByZWFkX3VuaWNvZGVzdHJpbmdubChmKToKICAgIHIiIiIKICAgID4+PiBpbXBvcnQgaW8KICAgID4+PiByZWFkX3VuaWNvZGVzdHJpbmdubChpby5CeXRlc0lPKGIiYWJjXFx1YWJjZFxuanVuayIpKSA9PSAnYWJjXHVhYmNkJwogICAgVHJ1ZQogICAgIiIiCgogICAgZGF0YSA9IGYucmVhZGxpbmUoKQogICAgaWYgbm90IGRhdGEuZW5kc3dpdGgoYidcbicpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIG5ld2xpbmUgZm91bmQgd2hlbiB0cnlpbmcgdG8gcmVhZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZXN0cmluZ25sIikKICAgIGRhdGEgPSBkYXRhWzotMV0gICAgIyBsb3NlIHRoZSBuZXdsaW5lCiAgICByZXR1cm4gc3RyKGRhdGEsICdyYXctdW5pY29kZS1lc2NhcGUnKQoKdW5pY29kZXN0cmluZ25sID0gQXJndW1lbnREZXNjcmlwdG9yKAogICAgICAgICAgICAgICAgICAgICAgbmFtZT0ndW5pY29kZXN0cmluZ25sJywKICAgICAgICAgICAgICAgICAgICAgIG49VVBfVE9fTkVXTElORSwKICAgICAgICAgICAgICAgICAgICAgIHJlYWRlcj1yZWFkX3VuaWNvZGVzdHJpbmdubCwKICAgICAgICAgICAgICAgICAgICAgIGRvYz0iIiJBIG5ld2xpbmUtdGVybWluYXRlZCBVbmljb2RlIHN0cmluZy4KCiAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHJhdy11bmljb2RlLWVzY2FwZSBlbmNvZGVkLCBzbyBjb25zaXN0cyBvZgogICAgICAgICAgICAgICAgICAgICAgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMsIGFuZCBtYXkgY29udGFpbiBlbWJlZGRlZAogICAgICAgICAgICAgICAgICAgICAgZXNjYXBlIHNlcXVlbmNlcy4KICAgICAgICAgICAgICAgICAgICAgICIiIikKCgpkZWYgcmVhZF91bmljb2Rlc3RyaW5nMShmKToKICAgIHIiIiIKICAgID4+PiBpbXBvcnQgaW8KICAgID4+PiBzID0gJ2FiY2RcdWFiY2QnCiAgICA+Pj4gZW5jID0gcy5lbmNvZGUoJ3V0Zi04JykKICAgID4+PiBlbmMKICAgIGInYWJjZFx4ZWFceGFmXHg4ZCcKICAgID4+PiBuID0gYnl0ZXMoW2xlbihlbmMpXSkgICMgbGl0dGxlLWVuZGlhbiAxLWJ5dGUgbGVuZ3RoCiAgICA+Pj4gdCA9IHJlYWRfdW5pY29kZXN0cmluZzEoaW8uQnl0ZXNJTyhuICsgZW5jICsgYidqdW5rJykpCiAgICA+Pj4gcyA9PSB0CiAgICBUcnVlCgogICAgPj4+IHJlYWRfdW5pY29kZXN0cmluZzEoaW8uQnl0ZXNJTyhuICsgZW5jWzotMV0pKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgLi4uCiAgICBWYWx1ZUVycm9yOiBleHBlY3RlZCA3IGJ5dGVzIGluIGEgdW5pY29kZXN0cmluZzEsIGJ1dCBvbmx5IDYgcmVtYWluCiAgICAiIiIKCiAgICBuID0gcmVhZF91aW50MShmKQogICAgYXNzZXJ0IG4gPj0gMAogICAgZGF0YSA9IGYucmVhZChuKQogICAgaWYgbGVuKGRhdGEpID09IG46CiAgICAgICAgcmV0dXJuIHN0cihkYXRhLCAndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpCiAgICByYWlzZSBWYWx1ZUVycm9yKCJleHBlY3RlZCAlZCBieXRlcyBpbiBhIHVuaWNvZGVzdHJpbmcxLCBidXQgb25seSAlZCAiCiAgICAgICAgICAgICAgICAgICAgICJyZW1haW4iICUgKG4sIGxlbihkYXRhKSkpCgp1bmljb2Rlc3RyaW5nMSA9IEFyZ3VtZW50RGVzY3JpcHRvcigKICAgICAgICAgICAgICAgICAgICBuYW1lPSJ1bmljb2Rlc3RyaW5nMSIsCiAgICAgICAgICAgICAgICAgICAgbj1UQUtFTl9GUk9NX0FSR1VNRU5UMSwKICAgICAgICAgICAgICAgICAgICByZWFkZXI9cmVhZF91bmljb2Rlc3RyaW5nMSwKICAgICAgICAgICAgICAgICAgICBkb2M9IiIiQSBjb3VudGVkIFVuaWNvZGUgc3RyaW5nLgoKICAgICAgICAgICAgICAgICAgICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSAxLWJ5dGUgbGl0dGxlLWVuZGlhbiBzaWduZWQgaW50CiAgICAgICAgICAgICAgICAgICAgZ2l2aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZywgYW5kIHRoZSBzZWNvbmQKICAgICAgICAgICAgICAgICAgICBhcmd1bWVudC0tIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGUgVW5pY29kZSBzdHJpbmcgLS0KICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGF0IG1hbnkgYnl0ZXMuCiAgICAgICAgICAgICAgICAgICAgIiIiKQoKCmRlZiByZWFkX3VuaWNvZGVzdHJpbmc0KGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbwogICAgPj4+IHMgPSAnYWJjZFx1YWJjZCcKICAgID4+PiBlbmMgPSBzLmVuY29kZSgndXRmLTgnKQogICAgPj4+IGVuYwogICAgYidhYmNkXHhlYVx4YWZceDhkJwogICAgPj4+IG4gPSBieXRlcyhbbGVuKGVuYyksIDAsIDAsIDBdKSAgIyBsaXR0bGUtZW5kaWFuIDQtYnl0ZSBsZW5ndGgKICAgID4+PiB0ID0gcmVhZF91bmljb2Rlc3RyaW5nNChpby5CeXRlc0lPKG4gKyBlbmMgKyBiJ2p1bmsnKSkKICAgID4+PiBzID09IHQKICAgIFRydWUKCiAgICA+Pj4gcmVhZF91bmljb2Rlc3RyaW5nNChpby5CeXRlc0lPKG4gKyBlbmNbOi0xXSkpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAuLi4KICAgIFZhbHVlRXJyb3I6IGV4cGVjdGVkIDcgYnl0ZXMgaW4gYSB1bmljb2Rlc3RyaW5nNCwgYnV0IG9ubHkgNiByZW1haW4KICAgICIiIgoKICAgIG4gPSByZWFkX3VpbnQ0KGYpCiAgICBhc3NlcnQgbiA+PSAwCiAgICBpZiBuID4gc3lzLm1heHNpemU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5pY29kZXN0cmluZzQgYnl0ZSBjb3VudCA+IHN5cy5tYXhzaXplOiAlZCIgJSBuKQogICAgZGF0YSA9IGYucmVhZChuKQogICAgaWYgbGVuKGRhdGEpID09IG46CiAgICAgICAgcmV0dXJuIHN0cihkYXRhLCAndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpCiAgICByYWlzZSBWYWx1ZUVycm9yKCJleHBlY3RlZCAlZCBieXRlcyBpbiBhIHVuaWNvZGVzdHJpbmc0LCBidXQgb25seSAlZCAiCiAgICAgICAgICAgICAgICAgICAgICJyZW1haW4iICUgKG4sIGxlbihkYXRhKSkpCgp1bmljb2Rlc3RyaW5nNCA9IEFyZ3VtZW50RGVzY3JpcHRvcigKICAgICAgICAgICAgICAgICAgICBuYW1lPSJ1bmljb2Rlc3RyaW5nNCIsCiAgICAgICAgICAgICAgICAgICAgbj1UQUtFTl9GUk9NX0FSR1VNRU5UNFUsCiAgICAgICAgICAgICAgICAgICAgcmVhZGVyPXJlYWRfdW5pY29kZXN0cmluZzQsCiAgICAgICAgICAgICAgICAgICAgZG9jPSIiIkEgY291bnRlZCBVbmljb2RlIHN0cmluZy4KCiAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgNC1ieXRlIGxpdHRsZS1lbmRpYW4gc2lnbmVkIGludAogICAgICAgICAgICAgICAgICAgIGdpdmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzdHJpbmcsIGFuZCB0aGUgc2Vjb25kCiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQtLSB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlIFVuaWNvZGUgc3RyaW5nIC0tCiAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhhdCBtYW55IGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICIiIikKCgpkZWYgcmVhZF91bmljb2Rlc3RyaW5nOChmKToKICAgIHIiIiIKICAgID4+PiBpbXBvcnQgaW8KICAgID4+PiBzID0gJ2FiY2RcdWFiY2QnCiAgICA+Pj4gZW5jID0gcy5lbmNvZGUoJ3V0Zi04JykKICAgID4+PiBlbmMKICAgIGInYWJjZFx4ZWFceGFmXHg4ZCcKICAgID4+PiBuID0gYnl0ZXMoW2xlbihlbmMpXSkgKyBiJ1wwJyAqIDcgICMgbGl0dGxlLWVuZGlhbiA4LWJ5dGUgbGVuZ3RoCiAgICA+Pj4gdCA9IHJlYWRfdW5pY29kZXN0cmluZzgoaW8uQnl0ZXNJTyhuICsgZW5jICsgYidqdW5rJykpCiAgICA+Pj4gcyA9PSB0CiAgICBUcnVlCgogICAgPj4+IHJlYWRfdW5pY29kZXN0cmluZzgoaW8uQnl0ZXNJTyhuICsgZW5jWzotMV0pKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgLi4uCiAgICBWYWx1ZUVycm9yOiBleHBlY3RlZCA3IGJ5dGVzIGluIGEgdW5pY29kZXN0cmluZzgsIGJ1dCBvbmx5IDYgcmVtYWluCiAgICAiIiIKCiAgICBuID0gcmVhZF91aW50OChmKQogICAgYXNzZXJ0IG4gPj0gMAogICAgaWYgbiA+IHN5cy5tYXhzaXplOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuaWNvZGVzdHJpbmc4IGJ5dGUgY291bnQgPiBzeXMubWF4c2l6ZTogJWQiICUgbikKICAgIGRhdGEgPSBmLnJlYWQobikKICAgIGlmIGxlbihkYXRhKSA9PSBuOgogICAgICAgIHJldHVybiBzdHIoZGF0YSwgJ3V0Zi04JywgJ3N1cnJvZ2F0ZXBhc3MnKQogICAgcmFpc2UgVmFsdWVFcnJvcigiZXhwZWN0ZWQgJWQgYnl0ZXMgaW4gYSB1bmljb2Rlc3RyaW5nOCwgYnV0IG9ubHkgJWQgIgogICAgICAgICAgICAgICAgICAgICAicmVtYWluIiAlIChuLCBsZW4oZGF0YSkpKQoKdW5pY29kZXN0cmluZzggPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICAgICAgICAgICAgICAgICAgbmFtZT0idW5pY29kZXN0cmluZzgiLAogICAgICAgICAgICAgICAgICAgIG49VEFLRU5fRlJPTV9BUkdVTUVOVDhVLAogICAgICAgICAgICAgICAgICAgIHJlYWRlcj1yZWFkX3VuaWNvZGVzdHJpbmc4LAogICAgICAgICAgICAgICAgICAgIGRvYz0iIiJBIGNvdW50ZWQgVW5pY29kZSBzdHJpbmcuCgogICAgICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiA4LWJ5dGUgbGl0dGxlLWVuZGlhbiBzaWduZWQgaW50CiAgICAgICAgICAgICAgICAgICAgZ2l2aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZywgYW5kIHRoZSBzZWNvbmQKICAgICAgICAgICAgICAgICAgICBhcmd1bWVudC0tIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGUgVW5pY29kZSBzdHJpbmcgLS0KICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGF0IG1hbnkgYnl0ZXMuCiAgICAgICAgICAgICAgICAgICAgIiIiKQoKCmRlZiByZWFkX2RlY2ltYWxubF9zaG9ydChmKToKICAgIHIiIiIKICAgID4+PiBpbXBvcnQgaW8KICAgID4+PiByZWFkX2RlY2ltYWxubF9zaG9ydChpby5CeXRlc0lPKGIiMTIzNFxuNTYiKSkKICAgIDEyMzQKCiAgICA+Pj4gcmVhZF9kZWNpbWFsbmxfc2hvcnQoaW8uQnl0ZXNJTyhiIjEyMzRMXG41NiIpKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgLi4uCiAgICBWYWx1ZUVycm9yOiBpbnZhbGlkIGxpdGVyYWwgZm9yIGludCgpIHdpdGggYmFzZSAxMDogYicxMjM0TCcKICAgICIiIgoKICAgIHMgPSByZWFkX3N0cmluZ25sKGYsIGRlY29kZT1GYWxzZSwgc3RyaXBxdW90ZXM9RmFsc2UpCgogICAgIyBUaGVyZSdzIGEgaGFjayBmb3IgVHJ1ZSBhbmQgRmFsc2UgaGVyZS4KICAgIGlmIHMgPT0gYiIwMCI6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBlbGlmIHMgPT0gYiIwMSI6CiAgICAgICAgcmV0dXJuIFRydWUKCiAgICByZXR1cm4gaW50KHMpCgpkZWYgcmVhZF9kZWNpbWFsbmxfbG9uZyhmKToKICAgIHIiIiIKICAgID4+PiBpbXBvcnQgaW8KCiAgICA+Pj4gcmVhZF9kZWNpbWFsbmxfbG9uZyhpby5CeXRlc0lPKGIiMTIzNExcbjU2IikpCiAgICAxMjM0CgogICAgPj4+IHJlYWRfZGVjaW1hbG5sX2xvbmcoaW8uQnl0ZXNJTyhiIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNExcbjYiKSkKICAgIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAogICAgIiIiCgogICAgcyA9IHJlYWRfc3RyaW5nbmwoZiwgZGVjb2RlPUZhbHNlLCBzdHJpcHF1b3Rlcz1GYWxzZSkKICAgIGlmIHNbLTE6XSA9PSBiJ0wnOgogICAgICAgIHMgPSBzWzotMV0KICAgIHJldHVybiBpbnQocykKCgpkZWNpbWFsbmxfc2hvcnQgPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdkZWNpbWFsbmxfc2hvcnQnLAogICAgICAgICAgICAgICAgICAgICAgbj1VUF9UT19ORVdMSU5FLAogICAgICAgICAgICAgICAgICAgICAgcmVhZGVyPXJlYWRfZGVjaW1hbG5sX3Nob3J0LAogICAgICAgICAgICAgICAgICAgICAgZG9jPSIiIkEgbmV3bGluZS10ZXJtaW5hdGVkIGRlY2ltYWwgaW50ZWdlciBsaXRlcmFsLgoKICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5ldmVyIGhhcyBhIHRyYWlsaW5nICdMJywgYW5kIHRoZSBpbnRlZ2VyIGZpdAogICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgc2hvcnQgUHl0aG9uIGludCBvbiB0aGUgYm94IHdoZXJlIHRoZSBwaWNrbGUKICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgd3JpdHRlbiAtLSBidXQgdGhlcmUncyBubyBndWFyYW50ZWUgaXQgd2lsbCBmaXQKICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIHNob3J0IFB5dGhvbiBpbnQgb24gdGhlIGJveCB3aGVyZSB0aGUgcGlja2xlCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVhZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAiIiIpCgpkZWNpbWFsbmxfbG9uZyA9IEFyZ3VtZW50RGVzY3JpcHRvcigKICAgICAgICAgICAgICAgICAgICAgbmFtZT0nZGVjaW1hbG5sX2xvbmcnLAogICAgICAgICAgICAgICAgICAgICBuPVVQX1RPX05FV0xJTkUsCiAgICAgICAgICAgICAgICAgICAgIHJlYWRlcj1yZWFkX2RlY2ltYWxubF9sb25nLAogICAgICAgICAgICAgICAgICAgICBkb2M9IiIiQSBuZXdsaW5lLXRlcm1pbmF0ZWQgZGVjaW1hbCBpbnRlZ2VyIGxpdGVyYWwuCgogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBoYXMgYSB0cmFpbGluZyAnTCcsIGFuZCBjYW4gcmVwcmVzZW50IGludGVnZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhbnkgc2l6ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICIiIikKCgpkZWYgcmVhZF9mbG9hdG5sKGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbwogICAgPj4+IHJlYWRfZmxvYXRubChpby5CeXRlc0lPKGIiLTEuMjVcbjYiKSkKICAgIC0xLjI1CiAgICAiIiIKICAgIHMgPSByZWFkX3N0cmluZ25sKGYsIGRlY29kZT1GYWxzZSwgc3RyaXBxdW90ZXM9RmFsc2UpCiAgICByZXR1cm4gZmxvYXQocykKCmZsb2F0bmwgPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICAgICAgICAgICAgbmFtZT0nZmxvYXRubCcsCiAgICAgICAgICAgICAgbj1VUF9UT19ORVdMSU5FLAogICAgICAgICAgICAgIHJlYWRlcj1yZWFkX2Zsb2F0bmwsCiAgICAgICAgICAgICAgZG9jPSIiIkEgbmV3bGluZS10ZXJtaW5hdGVkIGRlY2ltYWwgZmxvYXRpbmcgbGl0ZXJhbC4KCiAgICAgICAgICAgICAgSW4gZ2VuZXJhbCB0aGlzIHJlcXVpcmVzIDE3IHNpZ25pZmljYW50IGRpZ2l0cyBmb3Igcm91bmR0cmlwCiAgICAgICAgICAgICAgaWRlbnRpdHksIGFuZCBwaWNrbGluZyB0aGVuIHVucGlja2xpbmcgaW5maW5pdGllcywgTmFOcywgYW5kCiAgICAgICAgICAgICAgbWludXMgemVybyBkb2Vzbid0IHdvcmsgYWNyb3NzIGJveGVzLCBvciBvbiBzb21lIGJveGVzIGV2ZW4KICAgICAgICAgICAgICBvbiBpdHNlbGYgKGUuZy4sIFdpbmRvd3MgY2FuJ3QgcmVhZCB0aGUgc3RyaW5ncyBpdCBwcm9kdWNlcwogICAgICAgICAgICAgIGZvciBpbmZpbml0aWVzIG9yIE5hTnMpLgogICAgICAgICAgICAgICIiIikKCmRlZiByZWFkX2Zsb2F0OChmKToKICAgIHIiIiIKICAgID4+PiBpbXBvcnQgaW8sIHN0cnVjdAogICAgPj4+IHJhdyA9IHN0cnVjdC5wYWNrKCI+ZCIsIC0xLjI1KQogICAgPj4+IHJhdwogICAgYidceGJmXHhmNFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCcKICAgID4+PiByZWFkX2Zsb2F0OChpby5CeXRlc0lPKHJhdyArIGIiXG4iKSkKICAgIC0xLjI1CiAgICAiIiIKCiAgICBkYXRhID0gZi5yZWFkKDgpCiAgICBpZiBsZW4oZGF0YSkgPT0gODoKICAgICAgICByZXR1cm4gX3VucGFjaygiPmQiLCBkYXRhKVswXQogICAgcmFpc2UgVmFsdWVFcnJvcigibm90IGVub3VnaCBkYXRhIGluIHN0cmVhbSB0byByZWFkIGZsb2F0OCIpCgoKZmxvYXQ4ID0gQXJndW1lbnREZXNjcmlwdG9yKAogICAgICAgICAgICAgbmFtZT0nZmxvYXQ4JywKICAgICAgICAgICAgIG49OCwKICAgICAgICAgICAgIHJlYWRlcj1yZWFkX2Zsb2F0OCwKICAgICAgICAgICAgIGRvYz0iIiJBbiA4LWJ5dGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGEgZmxvYXQsIGJpZy1lbmRpYW4uCgogICAgICAgICAgICAgVGhlIGZvcm1hdCBpcyB1bmlxdWUgdG8gUHl0aG9uLCBhbmQgc2hhcmVkIHdpdGggdGhlIHN0cnVjdAogICAgICAgICAgICAgbW9kdWxlIChmb3JtYXQgc3RyaW5nICc+ZCcpICJpbiB0aGVvcnkiICh0aGUgc3RydWN0IGFuZCBwaWNrbGUKICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBkb24ndCBzaGFyZSB0aGUgY29kZSAtLSB0aGV5IHNob3VsZCkuICBJdCdzCiAgICAgICAgICAgICBzdHJvbmdseSByZWxhdGVkIHRvIHRoZSBJRUVFLTc1NCBkb3VibGUgZm9ybWF0LCBhbmQsIGluIG5vcm1hbAogICAgICAgICAgICAgY2FzZXMsIGlzIGluIGZhY3QgaWRlbnRpY2FsIHRvIHRoZSBiaWctZW5kaWFuIDc1NCBkb3VibGUgZm9ybWF0LgogICAgICAgICAgICAgT24gb3RoZXIgYm94ZXMgdGhlIGR5bmFtaWMgcmFuZ2UgaXMgbGltaXRlZCB0byB0aGF0IG9mIGEgNzU0CiAgICAgICAgICAgICBkb3VibGUsIGFuZCAiYWRkIGEgaGFsZiBhbmQgY2hvcCIgcm91bmRpbmcgaXMgdXNlZCB0byByZWR1Y2UKICAgICAgICAgICAgIHRoZSBwcmVjaXNpb24gdG8gNTMgYml0cy4gIEhvd2V2ZXIsIGV2ZW4gb24gYSA3NTQgYm94LAogICAgICAgICAgICAgaW5maW5pdGllcywgTmFOcywgYW5kIG1pbnVzIHplcm8gbWF5IG5vdCBiZSBoYW5kbGVkIGNvcnJlY3RseQogICAgICAgICAgICAgKG1heSBub3Qgc3Vydml2ZSByb3VuZHRyaXAgcGlja2xpbmcgaW50YWN0KS4KICAgICAgICAgICAgICIiIikKCiMgUHJvdG9jb2wgMiBmb3JtYXRzCgpmcm9tIHBpY2tsZSBpbXBvcnQgZGVjb2RlX2xvbmcKCmRlZiByZWFkX2xvbmcxKGYpOgogICAgciIiIgogICAgPj4+IGltcG9ydCBpbwogICAgPj4+IHJlYWRfbG9uZzEoaW8uQnl0ZXNJTyhiIlx4MDAiKSkKICAgIDAKICAgID4+PiByZWFkX2xvbmcxKGlvLkJ5dGVzSU8oYiJceDAyXHhmZlx4MDAiKSkKICAgIDI1NQogICAgPj4+IHJlYWRfbG9uZzEoaW8uQnl0ZXNJTyhiIlx4MDJceGZmXHg3ZiIpKQogICAgMzI3NjcKICAgID4+PiByZWFkX2xvbmcxKGlvLkJ5dGVzSU8oYiJceDAyXHgwMFx4ZmYiKSkKICAgIC0yNTYKICAgID4+PiByZWFkX2xvbmcxKGlvLkJ5dGVzSU8oYiJceDAyXHgwMFx4ODAiKSkKICAgIC0zMjc2OAogICAgIiIiCgogICAgbiA9IHJlYWRfdWludDEoZikKICAgIGRhdGEgPSBmLnJlYWQobikKICAgIGlmIGxlbihkYXRhKSAhPSBuOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCBlbm91Z2ggZGF0YSBpbiBzdHJlYW0gdG8gcmVhZCBsb25nMSIpCiAgICByZXR1cm4gZGVjb2RlX2xvbmcoZGF0YSkKCmxvbmcxID0gQXJndW1lbnREZXNjcmlwdG9yKAogICAgbmFtZT0ibG9uZzEiLAogICAgbj1UQUtFTl9GUk9NX0FSR1VNRU5UMSwKICAgIHJlYWRlcj1yZWFkX2xvbmcxLAogICAgZG9jPSIiIkEgYmluYXJ5IGxvbmcsIGxpdHRsZS1lbmRpYW4sIHVzaW5nIDEtYnl0ZSBzaXplLgoKICAgIFRoaXMgZmlyc3QgcmVhZHMgb25lIGJ5dGUgYXMgYW4gdW5zaWduZWQgc2l6ZSwgdGhlbiByZWFkcyB0aGF0CiAgICBtYW55IGJ5dGVzIGFuZCBpbnRlcnByZXRzIHRoZW0gYXMgYSBsaXR0bGUtZW5kaWFuIDIncy1jb21wbGVtZW50IGxvbmcuCiAgICBJZiB0aGUgc2l6ZSBpcyAwLCB0aGF0J3MgdGFrZW4gYXMgYSBzaG9ydGN1dCBmb3IgdGhlIGxvbmcgMEwuCiAgICAiIiIpCgpkZWYgcmVhZF9sb25nNChmKToKICAgIHIiIiIKICAgID4+PiBpbXBvcnQgaW8KICAgID4+PiByZWFkX2xvbmc0KGlvLkJ5dGVzSU8oYiJceDAyXHgwMFx4MDBceDAwXHhmZlx4MDAiKSkKICAgIDI1NQogICAgPj4+IHJlYWRfbG9uZzQoaW8uQnl0ZXNJTyhiIlx4MDJceDAwXHgwMFx4MDBceGZmXHg3ZiIpKQogICAgMzI3NjcKICAgID4+PiByZWFkX2xvbmc0KGlvLkJ5dGVzSU8oYiJceDAyXHgwMFx4MDBceDAwXHgwMFx4ZmYiKSkKICAgIC0yNTYKICAgID4+PiByZWFkX2xvbmc0KGlvLkJ5dGVzSU8oYiJceDAyXHgwMFx4MDBceDAwXHgwMFx4ODAiKSkKICAgIC0zMjc2OAogICAgPj4+IHJlYWRfbG9uZzEoaW8uQnl0ZXNJTyhiIlx4MDBceDAwXHgwMFx4MDAiKSkKICAgIDAKICAgICIiIgoKICAgIG4gPSByZWFkX2ludDQoZikKICAgIGlmIG4gPCAwOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImxvbmc0IGJ5dGUgY291bnQgPCAwOiAlZCIgJSBuKQogICAgZGF0YSA9IGYucmVhZChuKQogICAgaWYgbGVuKGRhdGEpICE9IG46CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm90IGVub3VnaCBkYXRhIGluIHN0cmVhbSB0byByZWFkIGxvbmc0IikKICAgIHJldHVybiBkZWNvZGVfbG9uZyhkYXRhKQoKbG9uZzQgPSBBcmd1bWVudERlc2NyaXB0b3IoCiAgICBuYW1lPSJsb25nNCIsCiAgICBuPVRBS0VOX0ZST01fQVJHVU1FTlQ0LAogICAgcmVhZGVyPXJlYWRfbG9uZzQsCiAgICBkb2M9IiIiQSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYSBsb25nLCBsaXR0bGUtZW5kaWFuLgoKICAgIFRoaXMgZmlyc3QgcmVhZHMgZm91ciBieXRlcyBhcyBhIHNpZ25lZCBzaXplIChidXQgcmVxdWlyZXMgdGhlCiAgICBzaXplIHRvIGJlID49IDApLCB0aGVuIHJlYWRzIHRoYXQgbWFueSBieXRlcyBhbmQgaW50ZXJwcmV0cyB0aGVtCiAgICBhcyBhIGxpdHRsZS1lbmRpYW4gMidzLWNvbXBsZW1lbnQgbG9uZy4gIElmIHRoZSBzaXplIGlzIDAsIHRoYXQncyB0YWtlbgogICAgYXMgYSBzaG9ydGN1dCBmb3IgdGhlIGludCAwLCBhbHRob3VnaCBMT05HMSBzaG91bGQgcmVhbGx5IGJlIHVzZWQKICAgIHRoZW4gaW5zdGVhZCAoYW5kIGluIGFueSBjYXNlIHdoZXJlICMgb2YgYnl0ZXMgPCAyNTYpLgogICAgIiIiKQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIE9iamVjdCBkZXNjcmlwdG9ycy4gIFRoZSBzdGFjayB1c2VkIGJ5IHRoZSBwaWNrbGUgbWFjaGluZSBob2xkcyBvYmplY3RzLAojIGFuZCBpbiB0aGUgc3RhY2tfYmVmb3JlIGFuZCBzdGFja19hZnRlciBhdHRyaWJ1dGVzIG9mIE9wY29kZUluZm8KIyBkZXNjcmlwdG9ycyB3ZSBuZWVkIG5hbWVzIHRvIGRlc2NyaWJlIHRoZSB2YXJpb3VzIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBjYW4KIyBhcHBlYXIgb24gdGhlIHN0YWNrLgoKY2xhc3MgU3RhY2tPYmplY3Qob2JqZWN0KToKICAgIF9fc2xvdHNfXyA9ICgKICAgICAgICAjIG5hbWUgb2YgZGVzY3JpcHRvciByZWNvcmQsIGZvciBpbmZvIG9ubHkKICAgICAgICAnbmFtZScsCgogICAgICAgICMgdHlwZSBvZiBvYmplY3QsIG9yIHR1cGxlIG9mIHR5cGUgb2JqZWN0cyAobWVhbmluZyB0aGUgb2JqZWN0IGNhbgogICAgICAgICMgYmUgb2YgYW55IHR5cGUgaW4gdGhlIHR1cGxlKQogICAgICAgICdvYnR5cGUnLAoKICAgICAgICAjIGh1bWFuLXJlYWRhYmxlIGRvY3MgZm9yIHRoaXMga2luZCBvZiBzdGFjayBvYmplY3Q7IGEgc3RyaW5nCiAgICAgICAgJ2RvYycsCiAgICApCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIG9idHlwZSwgZG9jKToKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShuYW1lLCBzdHIpCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQoKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvYnR5cGUsIHR5cGUpIG9yIGlzaW5zdGFuY2Uob2J0eXBlLCB0dXBsZSkKICAgICAgICBpZiBpc2luc3RhbmNlKG9idHlwZSwgdHVwbGUpOgogICAgICAgICAgICBmb3IgY29udGFpbmVkIGluIG9idHlwZToKICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNvbnRhaW5lZCwgdHlwZSkKICAgICAgICBzZWxmLm9idHlwZSA9IG9idHlwZQoKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkb2MsIHN0cikKICAgICAgICBzZWxmLmRvYyA9IGRvYwoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5uYW1lCgoKcHlpbnQgPSBweWxvbmcgPSBTdGFja09iamVjdCgKICAgIG5hbWU9J2ludCcsCiAgICBvYnR5cGU9aW50LAogICAgZG9jPSJBIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4iKQoKcHlpbnRlZ2VyX29yX2Jvb2wgPSBTdGFja09iamVjdCgKICAgIG5hbWU9J2ludF9vcl9ib29sJywKICAgIG9idHlwZT0oaW50LCBib29sKSwKICAgIGRvYz0iQSBQeXRob24gaW50ZWdlciBvciBib29sZWFuIG9iamVjdC4iKQoKcHlib29sID0gU3RhY2tPYmplY3QoCiAgICBuYW1lPSdib29sJywKICAgIG9idHlwZT1ib29sLAogICAgZG9jPSJBIFB5dGhvbiBib29sZWFuIG9iamVjdC4iKQoKcHlmbG9hdCA9IFN0YWNrT2JqZWN0KAogICAgbmFtZT0nZmxvYXQnLAogICAgb2J0eXBlPWZsb2F0LAogICAgZG9jPSJBIFB5dGhvbiBmbG9hdCBvYmplY3QuIikKCnB5Ynl0ZXNfb3Jfc3RyID0gcHlzdHJpbmcgPSBTdGFja09iamVjdCgKICAgIG5hbWU9J2J5dGVzX29yX3N0cicsCiAgICBvYnR5cGU9KGJ5dGVzLCBzdHIpLAogICAgZG9jPSJBIFB5dGhvbiBieXRlcyBvciAoVW5pY29kZSkgc3RyaW5nIG9iamVjdC4iKQoKcHlieXRlcyA9IFN0YWNrT2JqZWN0KAogICAgbmFtZT0nYnl0ZXMnLAogICAgb2J0eXBlPWJ5dGVzLAogICAgZG9jPSJBIFB5dGhvbiBieXRlcyBvYmplY3QuIikKCnB5Ynl0ZWFycmF5ID0gU3RhY2tPYmplY3QoCiAgICBuYW1lPSdieXRlYXJyYXknLAogICAgb2J0eXBlPWJ5dGVhcnJheSwKICAgIGRvYz0iQSBQeXRob24gYnl0ZWFycmF5IG9iamVjdC4iKQoKcHl1bmljb2RlID0gU3RhY2tPYmplY3QoCiAgICBuYW1lPSdzdHInLAogICAgb2J0eXBlPXN0ciwKICAgIGRvYz0iQSBQeXRob24gKFVuaWNvZGUpIHN0cmluZyBvYmplY3QuIikKCnB5bm9uZSA9IFN0YWNrT2JqZWN0KAogICAgbmFtZT0iTm9uZSIsCiAgICBvYnR5cGU9dHlwZShOb25lKSwKICAgIGRvYz0iVGhlIFB5dGhvbiBOb25lIG9iamVjdC4iKQoKcHl0dXBsZSA9IFN0YWNrT2JqZWN0KAogICAgbmFtZT0idHVwbGUiLAogICAgb2J0eXBlPXR1cGxlLAogICAgZG9jPSJBIFB5dGhvbiB0dXBsZSBvYmplY3QuIikKCnB5bGlzdCA9IFN0YWNrT2JqZWN0KAogICAgbmFtZT0ibGlzdCIsCiAgICBvYnR5cGU9bGlzdCwKICAgIGRvYz0iQSBQeXRob24gbGlzdCBvYmplY3QuIikKCnB5ZGljdCA9IFN0YWNrT2JqZWN0KAogICAgbmFtZT0iZGljdCIsCiAgICBvYnR5cGU9ZGljdCwKICAgIGRvYz0iQSBQeXRob24gZGljdCBvYmplY3QuIikKCnB5c2V0ID0gU3RhY2tPYmplY3QoCiAgICBuYW1lPSJzZXQiLAogICAgb2J0eXBlPXNldCwKICAgIGRvYz0iQSBQeXRob24gc2V0IG9iamVjdC4iKQoKcHlmcm96ZW5zZXQgPSBTdGFja09iamVjdCgKICAgIG5hbWU9ImZyb3plbnNldCIsCiAgICBvYnR5cGU9c2V0LAogICAgZG9jPSJBIFB5dGhvbiBmcm96ZW5zZXQgb2JqZWN0LiIpCgpweWJ1ZmZlciA9IFN0YWNrT2JqZWN0KAogICAgbmFtZT0nYnVmZmVyJywKICAgIG9idHlwZT1vYmplY3QsCiAgICBkb2M9IkEgUHl0aG9uIGJ1ZmZlci1saWtlIG9iamVjdC4iKQoKYW55b2JqZWN0ID0gU3RhY2tPYmplY3QoCiAgICBuYW1lPSdhbnknLAogICAgb2J0eXBlPW9iamVjdCwKICAgIGRvYz0iQW55IGtpbmQgb2Ygb2JqZWN0IHdoYXRzb2V2ZXIuIikKCm1hcmtvYmplY3QgPSBTdGFja09iamVjdCgKICAgIG5hbWU9Im1hcmsiLAogICAgb2J0eXBlPVN0YWNrT2JqZWN0LAogICAgZG9jPSIiIidUaGUgbWFyaycgaXMgYSB1bmlxdWUgb2JqZWN0LgoKT3Bjb2RlcyB0aGF0IG9wZXJhdGUgb24gYSB2YXJpYWJsZSBudW1iZXIgb2Ygb2JqZWN0cwpnZW5lcmFsbHkgZG9uJ3QgZW1iZWQgdGhlIGNvdW50IG9mIG9iamVjdHMgaW4gdGhlIG9wY29kZSwKb3IgcHVsbCBpdCBvZmYgdGhlIHN0YWNrLiAgSW5zdGVhZCB0aGUgTUFSSyBvcGNvZGUgaXMgdXNlZAp0byBwdXNoIGEgc3BlY2lhbCBtYXJrZXIgb2JqZWN0IG9uIHRoZSBzdGFjaywgYW5kIHRoZW4Kc29tZSBvdGhlciBvcGNvZGVzIGdyYWIgYWxsIHRoZSBvYmplY3RzIGZyb20gdGhlIHRvcCBvZgp0aGUgc3RhY2sgZG93biB0byAoYnV0IG5vdCBpbmNsdWRpbmcpIHRoZSB0b3Btb3N0IG1hcmtlcgpvYmplY3QuCiIiIikKCnN0YWNrc2xpY2UgPSBTdGFja09iamVjdCgKICAgIG5hbWU9InN0YWNrc2xpY2UiLAogICAgb2J0eXBlPVN0YWNrT2JqZWN0LAogICAgZG9jPSIiIkFuIG9iamVjdCByZXByZXNlbnRpbmcgYSBjb250aWd1b3VzIHNsaWNlIG9mIHRoZSBzdGFjay4KClRoaXMgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIG1hcmtvYmplY3QsIHRvIHJlcHJlc2VudCBhbGwKb2YgdGhlIHN0YWNrIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0LiAgRm9yIGV4YW1wbGUsCnRoZSBQT1BfTUFSSyBvcGNvZGUgY2hhbmdlcyB0aGUgc3RhY2sgZnJvbQoKICAgIFsuLi4sIG1hcmtvYmplY3QsIHN0YWNrc2xpY2VdCnRvCiAgICBbLi4uXQoKTm8gbWF0dGVyIGhvdyBtYW55IG9iamVjdCBhcmUgb24gdGhlIHN0YWNrIGFmdGVyIHRoZSB0b3Btb3N0Cm1hcmtvYmplY3QsIFBPUF9NQVJLIGdldHMgcmlkIG9mIGFsbCBvZiB0aGVtIChpbmNsdWRpbmcgdGhlCnRvcG1vc3QgbWFya29iamVjdCB0b28pLgoiIiIpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZXNjcmlwdG9ycyBmb3IgcGlja2xlIG9wY29kZXMuCgpjbGFzcyBPcGNvZGVJbmZvKG9iamVjdCk6CgogICAgX19zbG90c19fID0gKAogICAgICAgICMgc3ltYm9saWMgbmFtZSBvZiBvcGNvZGU7IGEgc3RyaW5nCiAgICAgICAgJ25hbWUnLAoKICAgICAgICAjIHRoZSBjb2RlIHVzZWQgaW4gYSBieXRlc3RyZWFtIHRvIHJlcHJlc2VudCB0aGUgb3Bjb2RlOyBhCiAgICAgICAgIyBvbmUtY2hhcmFjdGVyIHN0cmluZwogICAgICAgICdjb2RlJywKCiAgICAgICAgIyBJZiB0aGUgb3Bjb2RlIGhhcyBhbiBhcmd1bWVudCBlbWJlZGRlZCBpbiB0aGUgYnl0ZSBzdHJpbmcsIGFuCiAgICAgICAgIyBpbnN0YW5jZSBvZiBBcmd1bWVudERlc2NyaXB0b3Igc3BlY2lmeWluZyBpdHMgdHlwZS4gIE5vdGUgdGhhdAogICAgICAgICMgYXJnLnJlYWRlcihzKSBjYW4gYmUgdXNlZCB0byByZWFkIGFuZCBkZWNvZGUgdGhlIGFyZ3VtZW50IGZyb20KICAgICAgICAjIHRoZSBieXRlc3RyZWFtIHMsIGFuZCBhcmcuZG9jIGRvY3VtZW50cyB0aGUgZm9ybWF0IG9mIHRoZSByYXcKICAgICAgICAjIGFyZ3VtZW50IGJ5dGVzLiAgSWYgdGhlIG9wY29kZSBkb2Vzbid0IGhhdmUgYW4gYXJndW1lbnQgZW1iZWRkZWQKICAgICAgICAjIGluIHRoZSBieXRlc3RyZWFtLCBhcmcgc2hvdWxkIGJlIE5vbmUuCiAgICAgICAgJ2FyZycsCgogICAgICAgICMgd2hhdCB0aGUgc3RhY2sgbG9va3MgbGlrZSBiZWZvcmUgdGhpcyBvcGNvZGUgcnVuczsgYSBsaXN0CiAgICAgICAgJ3N0YWNrX2JlZm9yZScsCgogICAgICAgICMgd2hhdCB0aGUgc3RhY2sgbG9va3MgbGlrZSBhZnRlciB0aGlzIG9wY29kZSBydW5zOyBhIGxpc3QKICAgICAgICAnc3RhY2tfYWZ0ZXInLAoKICAgICAgICAjIHRoZSBwcm90b2NvbCBudW1iZXIgaW4gd2hpY2ggdGhpcyBvcGNvZGUgd2FzIGludHJvZHVjZWQ7IGFuIGludAogICAgICAgICdwcm90bycsCgogICAgICAgICMgaHVtYW4tcmVhZGFibGUgZG9jcyBmb3IgdGhpcyBvcGNvZGU7IGEgc3RyaW5nCiAgICAgICAgJ2RvYycsCiAgICApCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGNvZGUsIGFyZywKICAgICAgICAgICAgICAgICBzdGFja19iZWZvcmUsIHN0YWNrX2FmdGVyLCBwcm90bywgZG9jKToKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShuYW1lLCBzdHIpCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQoKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb2RlLCBzdHIpCiAgICAgICAgYXNzZXJ0IGxlbihjb2RlKSA9PSAxCiAgICAgICAgc2VsZi5jb2RlID0gY29kZQoKICAgICAgICBhc3NlcnQgYXJnIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShhcmcsIEFyZ3VtZW50RGVzY3JpcHRvcikKICAgICAgICBzZWxmLmFyZyA9IGFyZwoKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzdGFja19iZWZvcmUsIGxpc3QpCiAgICAgICAgZm9yIHggaW4gc3RhY2tfYmVmb3JlOgogICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh4LCBTdGFja09iamVjdCkKICAgICAgICBzZWxmLnN0YWNrX2JlZm9yZSA9IHN0YWNrX2JlZm9yZQoKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzdGFja19hZnRlciwgbGlzdCkKICAgICAgICBmb3IgeCBpbiBzdGFja19hZnRlcjoKICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoeCwgU3RhY2tPYmplY3QpCiAgICAgICAgc2VsZi5zdGFja19hZnRlciA9IHN0YWNrX2FmdGVyCgogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHByb3RvLCBpbnQpIGFuZCAwIDw9IHByb3RvIDw9IHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MCiAgICAgICAgc2VsZi5wcm90byA9IHByb3RvCgogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRvYywgc3RyKQogICAgICAgIHNlbGYuZG9jID0gZG9jCgpJID0gT3Bjb2RlSW5mbwpvcGNvZGVzID0gWwoKICAgICMgV2F5cyB0byBzcGVsbCBpbnRlZ2Vycy4KCiAgICBJKG5hbWU9J0lOVCcsCiAgICAgIGNvZGU9J0knLAogICAgICBhcmc9ZGVjaW1hbG5sX3Nob3J0LAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweWludGVnZXJfb3JfYm9vbF0sCiAgICAgIHByb3RvPTAsCiAgICAgIGRvYz0iIiJQdXNoIGFuIGludGVnZXIgb3IgYm9vbC4KCiAgICAgIFRoZSBhcmd1bWVudCBpcyBhIG5ld2xpbmUtdGVybWluYXRlZCBkZWNpbWFsIGxpdGVyYWwgc3RyaW5nLgoKICAgICAgVGhlIGludGVudCBtYXkgaGF2ZSBiZWVuIHRoYXQgdGhpcyBhbHdheXMgZml0IGluIGEgc2hvcnQgUHl0aG9uIGludCwKICAgICAgYnV0IElOVCBjYW4gYmUgZ2VuZXJhdGVkIGluIHBpY2tsZXMgd3JpdHRlbiBvbiBhIDY0LWJpdCBib3ggdGhhdAogICAgICByZXF1aXJlIGEgUHl0aG9uIGxvbmcgb24gYSAzMi1iaXQgYm94LiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzCiAgICAgIGFuZCBMT05HIHRoZW4gaXMgdGhhdCBJTlQgc2tpcHMgYSB0cmFpbGluZyAnTCcsIGFuZCBwcm9kdWNlcyBhIHNob3J0CiAgICAgIGludCB3aGVuZXZlciBwb3NzaWJsZS4KCiAgICAgIEFub3RoZXIgZGlmZmVyZW5jZSBpcyBkdWUgdG8gdGhhdCwgd2hlbiBib29sIHdhcyBpbnRyb2R1Y2VkIGFzIGEKICAgICAgZGlzdGluY3QgdHlwZSBpbiAyLjMsIGJ1aWx0aW4gbmFtZXMgVHJ1ZSBhbmQgRmFsc2Ugd2VyZSBhbHNvIGFkZGVkIHRvCiAgICAgIDIuMi4yLCBtYXBwaW5nIHRvIGludHMgMSBhbmQgMC4gIEZvciBjb21wYXRpYmlsaXR5IGluIGJvdGggZGlyZWN0aW9ucywKICAgICAgVHJ1ZSBnZXRzIHBpY2tsZWQgYXMgSU5UICsgIkkwMVxcbiIsIGFuZCBGYWxzZSBhcyBJTlQgKyAiSTAwXFxuIi4KICAgICAgTGVhZGluZyB6ZXJvZXMgYXJlIG5ldmVyIHByb2R1Y2VkIGZvciBhIGdlbnVpbmUgaW50ZWdlci4gIFRoZSAyLjMKICAgICAgKGFuZCBsYXRlcikgdW5waWNrbGVycyBzcGVjaWFsLWNhc2UgdGhlc2UgYW5kIHJldHVybiBib29sIGluc3RlYWQ7CiAgICAgIGVhcmxpZXIgdW5waWNrbGVycyBpZ25vcmUgdGhlIGxlYWRpbmcgIjAiIGFuZCByZXR1cm4gdGhlIGludC4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J0JJTklOVCcsCiAgICAgIGNvZGU9J0onLAogICAgICBhcmc9aW50NCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHlpbnRdLAogICAgICBwcm90bz0xLAogICAgICBkb2M9IiIiUHVzaCBhIGZvdXItYnl0ZSBzaWduZWQgaW50ZWdlci4KCiAgICAgIFRoaXMgaGFuZGxlcyB0aGUgZnVsbCByYW5nZSBvZiBQeXRob24gKHNob3J0KSBpbnRlZ2VycyBvbiBhIDMyLWJpdAogICAgICBib3gsIGRpcmVjdGx5IGFzIGJpbmFyeSBieXRlcyAoMSBmb3IgdGhlIG9wY29kZSBhbmQgNCBmb3IgdGhlIGludGVnZXIpLgogICAgICBJZiB0aGUgaW50ZWdlciBpcyBub24tbmVnYXRpdmUgYW5kIGZpdHMgaW4gMSBvciAyIGJ5dGVzLCBwaWNrbGluZyB2aWEKICAgICAgQklOSU5UMSBvciBCSU5JTlQyIHNhdmVzIHNwYWNlLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nQklOSU5UMScsCiAgICAgIGNvZGU9J0snLAogICAgICBhcmc9dWludDEsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5aW50XSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSIiIlB1c2ggYSBvbmUtYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyLgoKICAgICAgVGhpcyBpcyBhIHNwYWNlIG9wdGltaXphdGlvbiBmb3IgcGlja2xpbmcgdmVyeSBzbWFsbCBub24tbmVnYXRpdmUgaW50cywKICAgICAgaW4gcmFuZ2UoMjU2KS4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J0JJTklOVDInLAogICAgICBjb2RlPSdNJywKICAgICAgYXJnPXVpbnQyLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweWludF0sCiAgICAgIHByb3RvPTEsCiAgICAgIGRvYz0iIiJQdXNoIGEgdHdvLWJ5dGUgdW5zaWduZWQgaW50ZWdlci4KCiAgICAgIFRoaXMgaXMgYSBzcGFjZSBvcHRpbWl6YXRpb24gZm9yIHBpY2tsaW5nIHNtYWxsIHBvc2l0aXZlIGludHMsIGluCiAgICAgIHJhbmdlKDI1NiwgMioqMTYpLiAgSW50ZWdlcnMgaW4gcmFuZ2UoMjU2KSBjYW4gYWxzbyBiZSBwaWNrbGVkIHZpYQogICAgICBCSU5JTlQyLCBidXQgQklOSU5UMSBpbnN0ZWFkIHNhdmVzIGEgYnl0ZS4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J0xPTkcnLAogICAgICBjb2RlPSdMJywKICAgICAgYXJnPWRlY2ltYWxubF9sb25nLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweWludF0sCiAgICAgIHByb3RvPTAsCiAgICAgIGRvYz0iIiJQdXNoIGEgbG9uZyBpbnRlZ2VyLgoKICAgICAgVGhlIHNhbWUgYXMgSU5ULCBleGNlcHQgdGhhdCB0aGUgbGl0ZXJhbCBlbmRzIHdpdGggJ0wnLCBhbmQgYWx3YXlzCiAgICAgIHVucGlja2xlcyB0byBhIFB5dGhvbiBsb25nLiAgVGhlcmUgZG9lc24ndCBzZWVtIGEgcmVhbCBwdXJwb3NlIHRvIHRoZQogICAgICB0cmFpbGluZyAnTCcuCgogICAgICBOb3RlIHRoYXQgTE9ORyB0YWtlcyB0aW1lIHF1YWRyYXRpYyBpbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyB3aGVuCiAgICAgIHVucGlja2xpbmcgKHRoaXMgaXMgc2ltcGx5IGR1ZSB0byB0aGUgbmF0dXJlIG9mIGRlY2ltYWwtPmJpbmFyeQogICAgICBjb252ZXJzaW9uKS4gIFByb3RvIDIgYWRkZWQgbGluZWFyLXRpbWUgKGluIEM7IHN0aWxsIHF1YWRyYXRpYy10aW1lCiAgICAgIGluIFB5dGhvbikgTE9ORzEgYW5kIExPTkc0IG9wY29kZXMuCiAgICAgICIiIiksCgogICAgSShuYW1lPSJMT05HMSIsCiAgICAgIGNvZGU9J1x4OGEnLAogICAgICBhcmc9bG9uZzEsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5aW50XSwKICAgICAgcHJvdG89MiwKICAgICAgZG9jPSIiIkxvbmcgaW50ZWdlciB1c2luZyBvbmUtYnl0ZSBsZW5ndGguCgogICAgICBBIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIGEgUHl0aG9uIGxvbmc7IHRoZSBsb25nMSBlbmNvZGluZwogICAgICBzYXlzIGl0IGFsbC4iIiIpLAoKICAgIEkobmFtZT0iTE9ORzQiLAogICAgICBjb2RlPSdceDhiJywKICAgICAgYXJnPWxvbmc0LAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweWludF0sCiAgICAgIHByb3RvPTIsCiAgICAgIGRvYz0iIiJMb25nIGludGVnZXIgdXNpbmcgZm91bmQtYnl0ZSBsZW5ndGguCgogICAgICBBIG1vcmUgZWZmaWNpZW50IGVuY29kaW5nIG9mIGEgUHl0aG9uIGxvbmc7IHRoZSBsb25nNCBlbmNvZGluZwogICAgICBzYXlzIGl0IGFsbC4iIiIpLAoKICAgICMgV2F5cyB0byBzcGVsbCBzdHJpbmdzICg4LWJpdCwgbm90IFVuaWNvZGUpLgoKICAgIEkobmFtZT0nU1RSSU5HJywKICAgICAgY29kZT0nUycsCiAgICAgIGFyZz1zdHJpbmdubCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHlieXRlc19vcl9zdHJdLAogICAgICBwcm90bz0wLAogICAgICBkb2M9IiIiUHVzaCBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgcmVwci1zdHlsZSBzdHJpbmcsIHdpdGggYnJhY2tldGluZyBxdW90ZSBjaGFyYWN0ZXJzLAogICAgICBhbmQgcGVyaGFwcyBlbWJlZGRlZCBlc2NhcGVzLiAgVGhlIGFyZ3VtZW50IGV4dGVuZHMgdW50aWwgdGhlIG5leHQKICAgICAgbmV3bGluZSBjaGFyYWN0ZXIuICBUaGVzZSBhcmUgdXN1YWxseSBkZWNvZGVkIGludG8gYSBzdHIgaW5zdGFuY2UKICAgICAgdXNpbmcgdGhlIGVuY29kaW5nIGdpdmVuIHRvIHRoZSBVbnBpY2tsZXIgY29uc3RydWN0b3IuIG9yIHRoZSBkZWZhdWx0LAogICAgICAnQVNDSUknLiAgSWYgdGhlIGVuY29kaW5nIGdpdmVuIHdhcyAnYnl0ZXMnIGhvd2V2ZXIsIHRoZXkgd2lsbCBiZQogICAgICBkZWNvZGVkIGFzIGJ5dGVzIG9iamVjdCBpbnN0ZWFkLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nQklOU1RSSU5HJywKICAgICAgY29kZT0nVCcsCiAgICAgIGFyZz1zdHJpbmc0LAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweWJ5dGVzX29yX3N0cl0sCiAgICAgIHByb3RvPTEsCiAgICAgIGRvYz0iIiJQdXNoIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuCgogICAgICBUaGVyZSBhcmUgdHdvIGFyZ3VtZW50czogdGhlIGZpcnN0IGlzIGEgNC1ieXRlIGxpdHRsZS1lbmRpYW4KICAgICAgc2lnbmVkIGludCBnaXZpbmcgdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgc3RyaW5nLCBhbmQgdGhlCiAgICAgIHNlY29uZCBpcyB0aGF0IG1hbnkgYnl0ZXMsIHdoaWNoIGFyZSB0YWtlbiBsaXRlcmFsbHkgYXMgdGhlIHN0cmluZwogICAgICBjb250ZW50LiAgVGhlc2UgYXJlIHVzdWFsbHkgZGVjb2RlZCBpbnRvIGEgc3RyIGluc3RhbmNlIHVzaW5nIHRoZQogICAgICBlbmNvZGluZyBnaXZlbiB0byB0aGUgVW5waWNrbGVyIGNvbnN0cnVjdG9yLiBvciB0aGUgZGVmYXVsdCwKICAgICAgJ0FTQ0lJJy4gIElmIHRoZSBlbmNvZGluZyBnaXZlbiB3YXMgJ2J5dGVzJyBob3dldmVyLCB0aGV5IHdpbGwgYmUKICAgICAgZGVjb2RlZCBhcyBieXRlcyBvYmplY3QgaW5zdGVhZC4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J1NIT1JUX0JJTlNUUklORycsCiAgICAgIGNvZGU9J1UnLAogICAgICBhcmc9c3RyaW5nMSwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHlieXRlc19vcl9zdHJdLAogICAgICBwcm90bz0xLAogICAgICBkb2M9IiIiUHVzaCBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlcmUgYXJlIHR3byBhcmd1bWVudHM6IHRoZSBmaXJzdCBpcyBhIDEtYnl0ZSB1bnNpZ25lZCBpbnQgZ2l2aW5nCiAgICAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZywgYW5kIHRoZSBzZWNvbmQgaXMgdGhhdCBtYW55CiAgICAgIGJ5dGVzLCB3aGljaCBhcmUgdGFrZW4gbGl0ZXJhbGx5IGFzIHRoZSBzdHJpbmcgY29udGVudC4gIFRoZXNlIGFyZQogICAgICB1c3VhbGx5IGRlY29kZWQgaW50byBhIHN0ciBpbnN0YW5jZSB1c2luZyB0aGUgZW5jb2RpbmcgZ2l2ZW4gdG8KICAgICAgdGhlIFVucGlja2xlciBjb25zdHJ1Y3Rvci4gb3IgdGhlIGRlZmF1bHQsICdBU0NJSScuICBJZiB0aGUKICAgICAgZW5jb2RpbmcgZ2l2ZW4gd2FzICdieXRlcycgaG93ZXZlciwgdGhleSB3aWxsIGJlIGRlY29kZWQgYXMgYnl0ZXMKICAgICAgb2JqZWN0IGluc3RlYWQuCiAgICAgICIiIiksCgogICAgIyBCeXRlcyAocHJvdG9jb2wgMyBhbmQgaGlnaGVyKQoKICAgIEkobmFtZT0nQklOQllURVMnLAogICAgICBjb2RlPSdCJywKICAgICAgYXJnPWJ5dGVzNCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHlieXRlc10sCiAgICAgIHByb3RvPTMsCiAgICAgIGRvYz0iIiJQdXNoIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4KCiAgICAgIFRoZXJlIGFyZSB0d28gYXJndW1lbnRzOiAgdGhlIGZpcnN0IGlzIGEgNC1ieXRlIGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgaW50CiAgICAgIGdpdmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzLCBhbmQgdGhlIHNlY29uZCBpcyB0aGF0IG1hbnkgYnl0ZXMsIHdoaWNoIGFyZQogICAgICB0YWtlbiBsaXRlcmFsbHkgYXMgdGhlIGJ5dGVzIGNvbnRlbnQuCiAgICAgICIiIiksCgogICAgSShuYW1lPSdTSE9SVF9CSU5CWVRFUycsCiAgICAgIGNvZGU9J0MnLAogICAgICBhcmc9Ynl0ZXMxLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweWJ5dGVzXSwKICAgICAgcHJvdG89MywKICAgICAgZG9jPSIiIlB1c2ggYSBQeXRob24gYnl0ZXMgb2JqZWN0LgoKICAgICAgVGhlcmUgYXJlIHR3byBhcmd1bWVudHM6ICB0aGUgZmlyc3QgaXMgYSAxLWJ5dGUgdW5zaWduZWQgaW50IGdpdmluZwogICAgICB0aGUgbnVtYmVyIG9mIGJ5dGVzLCBhbmQgdGhlIHNlY29uZCBpcyB0aGF0IG1hbnkgYnl0ZXMsIHdoaWNoIGFyZSB0YWtlbgogICAgICBsaXRlcmFsbHkgYXMgdGhlIHN0cmluZyBjb250ZW50LgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nQklOQllURVM4JywKICAgICAgY29kZT0nXHg4ZScsCiAgICAgIGFyZz1ieXRlczgsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5Ynl0ZXNdLAogICAgICBwcm90bz00LAogICAgICBkb2M9IiIiUHVzaCBhIFB5dGhvbiBieXRlcyBvYmplY3QuCgogICAgICBUaGVyZSBhcmUgdHdvIGFyZ3VtZW50czogIHRoZSBmaXJzdCBpcyBhbiA4LWJ5dGUgdW5zaWduZWQgaW50IGdpdmluZwogICAgICB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzdHJpbmcsIGFuZCB0aGUgc2Vjb25kIGlzIHRoYXQgbWFueSBieXRlcywKICAgICAgd2hpY2ggYXJlIHRha2VuIGxpdGVyYWxseSBhcyB0aGUgc3RyaW5nIGNvbnRlbnQuCiAgICAgICIiIiksCgogICAgIyBCeXRlYXJyYXkgKHByb3RvY29sIDUgYW5kIGhpZ2hlcikKCiAgICBJKG5hbWU9J0JZVEVBUlJBWTgnLAogICAgICBjb2RlPSdceDk2JywKICAgICAgYXJnPWJ5dGVhcnJheTgsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5Ynl0ZWFycmF5XSwKICAgICAgcHJvdG89NSwKICAgICAgZG9jPSIiIlB1c2ggYSBQeXRob24gYnl0ZWFycmF5IG9iamVjdC4KCiAgICAgIFRoZXJlIGFyZSB0d28gYXJndW1lbnRzOiAgdGhlIGZpcnN0IGlzIGFuIDgtYnl0ZSB1bnNpZ25lZCBpbnQgZ2l2aW5nCiAgICAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGJ5dGVhcnJheSwgYW5kIHRoZSBzZWNvbmQgaXMgdGhhdCBtYW55IGJ5dGVzLAogICAgICB3aGljaCBhcmUgdGFrZW4gbGl0ZXJhbGx5IGFzIHRoZSBieXRlYXJyYXkgY29udGVudC4KICAgICAgIiIiKSwKCiAgICAjIE91dC1vZi1iYW5kIGJ1ZmZlciAocHJvdG9jb2wgNSBhbmQgaGlnaGVyKQoKICAgIEkobmFtZT0nTkVYVF9CVUZGRVInLAogICAgICBjb2RlPSdceDk3JywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5YnVmZmVyXSwKICAgICAgcHJvdG89NSwKICAgICAgZG9jPSJQdXNoIGFuIG91dC1vZi1iYW5kIGJ1ZmZlciBvYmplY3QuIiksCgogICAgSShuYW1lPSdSRUFET05MWV9CVUZGRVInLAogICAgICBjb2RlPSdceDk4JywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bcHlidWZmZXJdLAogICAgICBzdGFja19hZnRlcj1bcHlidWZmZXJdLAogICAgICBwcm90bz01LAogICAgICBkb2M9Ik1ha2UgYW4gb3V0LW9mLWJhbmQgYnVmZmVyIG9iamVjdCByZWFkLW9ubHkuIiksCgogICAgIyBXYXlzIHRvIHNwZWxsIE5vbmUuCgogICAgSShuYW1lPSdOT05FJywKICAgICAgY29kZT0nTicsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweW5vbmVdLAogICAgICBwcm90bz0wLAogICAgICBkb2M9IlB1c2ggTm9uZSBvbiB0aGUgc3RhY2suIiksCgogICAgIyBXYXlzIHRvIHNwZWxsIGJvb2xzLCBzdGFydGluZyB3aXRoIHByb3RvIDIuICBTZWUgSU5UIGZvciBob3cgdGhpcyB3YXMKICAgICMgZG9uZSBiZWZvcmUgcHJvdG8gMi4KCiAgICBJKG5hbWU9J05FV1RSVUUnLAogICAgICBjb2RlPSdceDg4JywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5Ym9vbF0sCiAgICAgIHByb3RvPTIsCiAgICAgIGRvYz0iUHVzaCBUcnVlIG9udG8gdGhlIHN0YWNrLiIpLAoKICAgIEkobmFtZT0nTkVXRkFMU0UnLAogICAgICBjb2RlPSdceDg5JywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5Ym9vbF0sCiAgICAgIHByb3RvPTIsCiAgICAgIGRvYz0iUHVzaCBGYWxzZSBvbnRvIHRoZSBzdGFjay4iKSwKCiAgICAjIFdheXMgdG8gc3BlbGwgVW5pY29kZSBzdHJpbmdzLgoKICAgIEkobmFtZT0nVU5JQ09ERScsCiAgICAgIGNvZGU9J1YnLAogICAgICBhcmc9dW5pY29kZXN0cmluZ25sLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweXVuaWNvZGVdLAogICAgICBwcm90bz0wLCAgIyB0aGlzIG1heSBiZSBwdXJlLXRleHQsIGJ1dCBpdCdzIGEgbGF0ZXIgYWRkaXRpb24KICAgICAgZG9jPSIiIlB1c2ggYSBQeXRob24gVW5pY29kZSBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgcmF3LXVuaWNvZGUtZXNjYXBlIGVuY29kaW5nIG9mIGEgVW5pY29kZSBzdHJpbmcsCiAgICAgIGFuZCBzbyBtYXkgY29udGFpbiBlbWJlZGRlZCBlc2NhcGUgc2VxdWVuY2VzLiAgVGhlIGFyZ3VtZW50IGV4dGVuZHMKICAgICAgdW50aWwgdGhlIG5leHQgbmV3bGluZSBjaGFyYWN0ZXIuCiAgICAgICIiIiksCgogICAgSShuYW1lPSdTSE9SVF9CSU5VTklDT0RFJywKICAgICAgY29kZT0nXHg4YycsCiAgICAgIGFyZz11bmljb2Rlc3RyaW5nMSwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHl1bmljb2RlXSwKICAgICAgcHJvdG89NCwKICAgICAgZG9jPSIiIlB1c2ggYSBQeXRob24gVW5pY29kZSBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlcmUgYXJlIHR3byBhcmd1bWVudHM6ICB0aGUgZmlyc3QgaXMgYSAxLWJ5dGUgbGl0dGxlLWVuZGlhbiBzaWduZWQgaW50CiAgICAgIGdpdmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzdHJpbmcuICBUaGUgc2Vjb25kIGlzIHRoYXQgbWFueQogICAgICBieXRlcywgYW5kIGlzIHRoZSBVVEYtOCBlbmNvZGluZyBvZiB0aGUgVW5pY29kZSBzdHJpbmcuCiAgICAgICIiIiksCgogICAgSShuYW1lPSdCSU5VTklDT0RFJywKICAgICAgY29kZT0nWCcsCiAgICAgIGFyZz11bmljb2Rlc3RyaW5nNCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHl1bmljb2RlXSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSIiIlB1c2ggYSBQeXRob24gVW5pY29kZSBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlcmUgYXJlIHR3byBhcmd1bWVudHM6ICB0aGUgZmlyc3QgaXMgYSA0LWJ5dGUgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBpbnQKICAgICAgZ2l2aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZy4gIFRoZSBzZWNvbmQgaXMgdGhhdCBtYW55CiAgICAgIGJ5dGVzLCBhbmQgaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZSBVbmljb2RlIHN0cmluZy4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J0JJTlVOSUNPREU4JywKICAgICAgY29kZT0nXHg4ZCcsCiAgICAgIGFyZz11bmljb2Rlc3RyaW5nOCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHl1bmljb2RlXSwKICAgICAgcHJvdG89NCwKICAgICAgZG9jPSIiIlB1c2ggYSBQeXRob24gVW5pY29kZSBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlcmUgYXJlIHR3byBhcmd1bWVudHM6ICB0aGUgZmlyc3QgaXMgYW4gOC1ieXRlIGxpdHRsZS1lbmRpYW4gc2lnbmVkIGludAogICAgICBnaXZpbmcgdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgc3RyaW5nLiAgVGhlIHNlY29uZCBpcyB0aGF0IG1hbnkKICAgICAgYnl0ZXMsIGFuZCBpcyB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlIFVuaWNvZGUgc3RyaW5nLgogICAgICAiIiIpLAoKICAgICMgV2F5cyB0byBzcGVsbCBmbG9hdHMuCgogICAgSShuYW1lPSdGTE9BVCcsCiAgICAgIGNvZGU9J0YnLAogICAgICBhcmc9ZmxvYXRubCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHlmbG9hdF0sCiAgICAgIHByb3RvPTAsCiAgICAgIGRvYz0iIiJOZXdsaW5lLXRlcm1pbmF0ZWQgZGVjaW1hbCBmbG9hdCBsaXRlcmFsLgoKICAgICAgVGhlIGFyZ3VtZW50IGlzIHJlcHIoYV9mbG9hdCksIGFuZCBpbiBnZW5lcmFsIHJlcXVpcmVzIDE3IHNpZ25pZmljYW50CiAgICAgIGRpZ2l0cyBmb3Igcm91bmR0cmlwIGNvbnZlcnNpb24gdG8gYmUgYW4gaWRlbnRpdHkgKHRoaXMgaXMgc28gZm9yCiAgICAgIElFRUUtNzU0IGRvdWJsZSBwcmVjaXNpb24gdmFsdWVzLCB3aGljaCBpcyB3aGF0IFB5dGhvbiBmbG9hdCBtYXBzIHRvCiAgICAgIG9uIG1vc3QgYm94ZXMpLgoKICAgICAgSW4gZ2VuZXJhbCwgRkxPQVQgY2Fubm90IGJlIHVzZWQgdG8gdHJhbnNwb3J0IGluZmluaXRpZXMsIE5hTnMsIG9yCiAgICAgIG1pbnVzIHplcm8gYWNyb3NzIGJveGVzIChvciBldmVuIG9uIGEgc2luZ2xlIGJveCwgaWYgdGhlIHBsYXRmb3JtIEMKICAgICAgbGlicmFyeSBjYW4ndCByZWFkIHRoZSBzdHJpbmdzIGl0IHByb2R1Y2VzIGZvciBzdWNoIHRoaW5ncyAtLSBXaW5kb3dzCiAgICAgIGlzIGxpa2UgdGhhdCksIGJ1dCBtYXkgZG8gbGVzcyBkYW1hZ2UgdGhhbiBCSU5GTE9BVCBvbiBib3hlcyB3aXRoCiAgICAgIGdyZWF0ZXIgcHJlY2lzaW9uIG9yIGR5bmFtaWMgcmFuZ2UgdGhhbiBJRUVFLTc1NCBkb3VibGUuCiAgICAgICIiIiksCgogICAgSShuYW1lPSdCSU5GTE9BVCcsCiAgICAgIGNvZGU9J0cnLAogICAgICBhcmc9ZmxvYXQ4LAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweWZsb2F0XSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSIiIkZsb2F0IHN0b3JlZCBpbiBiaW5hcnkgZm9ybSwgd2l0aCA4IGJ5dGVzIG9mIGRhdGEuCgogICAgICBUaGlzIGdlbmVyYWxseSByZXF1aXJlcyBsZXNzIHRoYW4gaGFsZiB0aGUgc3BhY2Ugb2YgRkxPQVQgZW5jb2RpbmcuCiAgICAgIEluIGdlbmVyYWwsIEJJTkZMT0FUIGNhbm5vdCBiZSB1c2VkIHRvIHRyYW5zcG9ydCBpbmZpbml0aWVzLCBOYU5zLCBvcgogICAgICBtaW51cyB6ZXJvLCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSBleHBvbmVudCBleGNlZWRzIHRoZSByYW5nZSBvZgogICAgICBhbiBJRUVFLTc1NCBkb3VibGUsIGFuZCByZXRhaW5zIG5vIG1vcmUgdGhhbiA1MyBiaXRzIG9mIHByZWNpc2lvbiAoaWYKICAgICAgdGhlcmUgYXJlIG1vcmUgdGhhbiB0aGF0LCAiYWRkIGEgaGFsZiBhbmQgY2hvcCIgcm91bmRpbmcgaXMgdXNlZCB0bwogICAgICBjdXQgaXQgYmFjayB0byA1MyBzaWduaWZpY2FudCBiaXRzKS4KICAgICAgIiIiKSwKCiAgICAjIFdheXMgdG8gYnVpbGQgbGlzdHMuCgogICAgSShuYW1lPSdFTVBUWV9MSVNUJywKICAgICAgY29kZT0nXScsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweWxpc3RdLAogICAgICBwcm90bz0xLAogICAgICBkb2M9IlB1c2ggYW4gZW1wdHkgbGlzdC4iKSwKCiAgICBJKG5hbWU9J0FQUEVORCcsCiAgICAgIGNvZGU9J2EnLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVtweWxpc3QsIGFueW9iamVjdF0sCiAgICAgIHN0YWNrX2FmdGVyPVtweWxpc3RdLAogICAgICBwcm90bz0wLAogICAgICBkb2M9IiIiQXBwZW5kIGFuIG9iamVjdCB0byBhIGxpc3QuCgogICAgICBTdGFjayBiZWZvcmU6ICAuLi4gcHlsaXN0IGFueW9iamVjdAogICAgICBTdGFjayBhZnRlcjogICAuLi4gcHlsaXN0K1thbnlvYmplY3RdCgogICAgICBhbHRob3VnaCBweWxpc3QgaXMgcmVhbGx5IGV4dGVuZGVkIGluLXBsYWNlLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nQVBQRU5EUycsCiAgICAgIGNvZGU9J2UnLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVtweWxpc3QsIG1hcmtvYmplY3QsIHN0YWNrc2xpY2VdLAogICAgICBzdGFja19hZnRlcj1bcHlsaXN0XSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSIiIkV4dGVuZCBhIGxpc3QgYnkgYSBzbGljZSBvZiBzdGFjayBvYmplY3RzLgoKICAgICAgU3RhY2sgYmVmb3JlOiAgLi4uIHB5bGlzdCBtYXJrb2JqZWN0IHN0YWNrc2xpY2UKICAgICAgU3RhY2sgYWZ0ZXI6ICAgLi4uIHB5bGlzdCtzdGFja3NsaWNlCgogICAgICBhbHRob3VnaCBweWxpc3QgaXMgcmVhbGx5IGV4dGVuZGVkIGluLXBsYWNlLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nTElTVCcsCiAgICAgIGNvZGU9J2wnLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVttYXJrb2JqZWN0LCBzdGFja3NsaWNlXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5bGlzdF0sCiAgICAgIHByb3RvPTAsCiAgICAgIGRvYz0iIiJCdWlsZCBhIGxpc3Qgb3V0IG9mIHRoZSB0b3Btb3N0IHN0YWNrIHNsaWNlLCBhZnRlciBtYXJrb2JqZWN0LgoKICAgICAgQWxsIHRoZSBzdGFjayBlbnRyaWVzIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGFyZSBwbGFjZWQgaW50bwogICAgICBhIHNpbmdsZSBQeXRob24gbGlzdCwgd2hpY2ggc2luZ2xlIGxpc3Qgb2JqZWN0IHJlcGxhY2VzIGFsbCBvZiB0aGUKICAgICAgc3RhY2sgZnJvbSB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IG9ud2FyZC4gIEZvciBleGFtcGxlLAoKICAgICAgU3RhY2sgYmVmb3JlOiAuLi4gbWFya29iamVjdCAxIDIgMyAnYWJjJwogICAgICBTdGFjayBhZnRlcjogIC4uLiBbMSwgMiwgMywgJ2FiYyddCiAgICAgICIiIiksCgogICAgIyBXYXlzIHRvIGJ1aWxkIHR1cGxlcy4KCiAgICBJKG5hbWU9J0VNUFRZX1RVUExFJywKICAgICAgY29kZT0nKScsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVtweXR1cGxlXSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSJQdXNoIGFuIGVtcHR5IHR1cGxlLiIpLAoKICAgIEkobmFtZT0nVFVQTEUnLAogICAgICBjb2RlPSd0JywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bbWFya29iamVjdCwgc3RhY2tzbGljZV0sCiAgICAgIHN0YWNrX2FmdGVyPVtweXR1cGxlXSwKICAgICAgcHJvdG89MCwKICAgICAgZG9jPSIiIkJ1aWxkIGEgdHVwbGUgb3V0IG9mIHRoZSB0b3Btb3N0IHN0YWNrIHNsaWNlLCBhZnRlciBtYXJrb2JqZWN0LgoKICAgICAgQWxsIHRoZSBzdGFjayBlbnRyaWVzIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGFyZSBwbGFjZWQgaW50bwogICAgICBhIHNpbmdsZSBQeXRob24gdHVwbGUsIHdoaWNoIHNpbmdsZSB0dXBsZSBvYmplY3QgcmVwbGFjZXMgYWxsIG9mIHRoZQogICAgICBzdGFjayBmcm9tIHRoZSB0b3Btb3N0IG1hcmtvYmplY3Qgb253YXJkLiAgRm9yIGV4YW1wbGUsCgogICAgICBTdGFjayBiZWZvcmU6IC4uLiBtYXJrb2JqZWN0IDEgMiAzICdhYmMnCiAgICAgIFN0YWNrIGFmdGVyOiAgLi4uICgxLCAyLCAzLCAnYWJjJykKICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J1RVUExFMScsCiAgICAgIGNvZGU9J1x4ODUnLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVthbnlvYmplY3RdLAogICAgICBzdGFja19hZnRlcj1bcHl0dXBsZV0sCiAgICAgIHByb3RvPTIsCiAgICAgIGRvYz0iIiJCdWlsZCBhIG9uZS10dXBsZSBvdXQgb2YgdGhlIHRvcG1vc3QgaXRlbSBvbiB0aGUgc3RhY2suCgogICAgICBUaGlzIGNvZGUgcG9wcyBvbmUgdmFsdWUgb2ZmIHRoZSBzdGFjayBhbmQgcHVzaGVzIGEgdHVwbGUgb2YKICAgICAgbGVuZ3RoIDEgd2hvc2Ugb25lIGl0ZW0gaXMgdGhhdCB2YWx1ZSBiYWNrIG9udG8gaXQuICBJbiBvdGhlcgogICAgICB3b3JkczoKCiAgICAgICAgICBzdGFja1stMV0gPSB0dXBsZShzdGFja1stMTpdKQogICAgICAiIiIpLAoKICAgIEkobmFtZT0nVFVQTEUyJywKICAgICAgY29kZT0nXHg4NicsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W2FueW9iamVjdCwgYW55b2JqZWN0XSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5dHVwbGVdLAogICAgICBwcm90bz0yLAogICAgICBkb2M9IiIiQnVpbGQgYSB0d28tdHVwbGUgb3V0IG9mIHRoZSB0b3AgdHdvIGl0ZW1zIG9uIHRoZSBzdGFjay4KCiAgICAgIFRoaXMgY29kZSBwb3BzIHR3byB2YWx1ZXMgb2ZmIHRoZSBzdGFjayBhbmQgcHVzaGVzIGEgdHVwbGUgb2YKICAgICAgbGVuZ3RoIDIgd2hvc2UgaXRlbXMgYXJlIHRob3NlIHZhbHVlcyBiYWNrIG9udG8gaXQuICBJbiBvdGhlcgogICAgICB3b3JkczoKCiAgICAgICAgICBzdGFja1stMjpdID0gW3R1cGxlKHN0YWNrWy0yOl0pXQogICAgICAiIiIpLAoKICAgIEkobmFtZT0nVFVQTEUzJywKICAgICAgY29kZT0nXHg4NycsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W2FueW9iamVjdCwgYW55b2JqZWN0LCBhbnlvYmplY3RdLAogICAgICBzdGFja19hZnRlcj1bcHl0dXBsZV0sCiAgICAgIHByb3RvPTIsCiAgICAgIGRvYz0iIiJCdWlsZCBhIHRocmVlLXR1cGxlIG91dCBvZiB0aGUgdG9wIHRocmVlIGl0ZW1zIG9uIHRoZSBzdGFjay4KCiAgICAgIFRoaXMgY29kZSBwb3BzIHRocmVlIHZhbHVlcyBvZmYgdGhlIHN0YWNrIGFuZCBwdXNoZXMgYSB0dXBsZSBvZgogICAgICBsZW5ndGggMyB3aG9zZSBpdGVtcyBhcmUgdGhvc2UgdmFsdWVzIGJhY2sgb250byBpdC4gIEluIG90aGVyCiAgICAgIHdvcmRzOgoKICAgICAgICAgIHN0YWNrWy0zOl0gPSBbdHVwbGUoc3RhY2tbLTM6XSldCiAgICAgICIiIiksCgogICAgIyBXYXlzIHRvIGJ1aWxkIGRpY3RzLgoKICAgIEkobmFtZT0nRU1QVFlfRElDVCcsCiAgICAgIGNvZGU9J30nLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHlkaWN0XSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSJQdXNoIGFuIGVtcHR5IGRpY3QuIiksCgogICAgSShuYW1lPSdESUNUJywKICAgICAgY29kZT0nZCcsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W21hcmtvYmplY3QsIHN0YWNrc2xpY2VdLAogICAgICBzdGFja19hZnRlcj1bcHlkaWN0XSwKICAgICAgcHJvdG89MCwKICAgICAgZG9jPSIiIkJ1aWxkIGEgZGljdCBvdXQgb2YgdGhlIHRvcG1vc3Qgc3RhY2sgc2xpY2UsIGFmdGVyIG1hcmtvYmplY3QuCgogICAgICBBbGwgdGhlIHN0YWNrIGVudHJpZXMgZm9sbG93aW5nIHRoZSB0b3Btb3N0IG1hcmtvYmplY3QgYXJlIHBsYWNlZCBpbnRvCiAgICAgIGEgc2luZ2xlIFB5dGhvbiBkaWN0LCB3aGljaCBzaW5nbGUgZGljdCBvYmplY3QgcmVwbGFjZXMgYWxsIG9mIHRoZQogICAgICBzdGFjayBmcm9tIHRoZSB0b3Btb3N0IG1hcmtvYmplY3Qgb253YXJkLiAgVGhlIHN0YWNrIHNsaWNlIGFsdGVybmF0ZXMKICAgICAga2V5LCB2YWx1ZSwga2V5LCB2YWx1ZSwgLi4uLiAgRm9yIGV4YW1wbGUsCgogICAgICBTdGFjayBiZWZvcmU6IC4uLiBtYXJrb2JqZWN0IDEgMiAzICdhYmMnCiAgICAgIFN0YWNrIGFmdGVyOiAgLi4uIHsxOiAyLCAzOiAnYWJjJ30KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J1NFVElURU0nLAogICAgICBjb2RlPSdzJywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bcHlkaWN0LCBhbnlvYmplY3QsIGFueW9iamVjdF0sCiAgICAgIHN0YWNrX2FmdGVyPVtweWRpY3RdLAogICAgICBwcm90bz0wLAogICAgICBkb2M9IiIiQWRkIGEga2V5K3ZhbHVlIHBhaXIgdG8gYW4gZXhpc3RpbmcgZGljdC4KCiAgICAgIFN0YWNrIGJlZm9yZTogIC4uLiBweWRpY3Qga2V5IHZhbHVlCiAgICAgIFN0YWNrIGFmdGVyOiAgIC4uLiBweWRpY3QKCiAgICAgIHdoZXJlIHB5ZGljdCBoYXMgYmVlbiBtb2RpZmllZCB2aWEgcHlkaWN0W2tleV0gPSB2YWx1ZS4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J1NFVElURU1TJywKICAgICAgY29kZT0ndScsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W3B5ZGljdCwgbWFya29iamVjdCwgc3RhY2tzbGljZV0sCiAgICAgIHN0YWNrX2FmdGVyPVtweWRpY3RdLAogICAgICBwcm90bz0xLAogICAgICBkb2M9IiIiQWRkIGFuIGFyYml0cmFyeSBudW1iZXIgb2Yga2V5K3ZhbHVlIHBhaXJzIHRvIGFuIGV4aXN0aW5nIGRpY3QuCgogICAgICBUaGUgc2xpY2Ugb2YgdGhlIHN0YWNrIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGlzIHRha2VuIGFzCiAgICAgIGFuIGFsdGVybmF0aW5nIHNlcXVlbmNlIG9mIGtleXMgYW5kIHZhbHVlcywgYWRkZWQgdG8gdGhlIGRpY3QKICAgICAgaW1tZWRpYXRlbHkgdW5kZXIgdGhlIHRvcG1vc3QgbWFya29iamVjdC4gIEV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHRoZQogICAgICB0b3Btb3N0IG1hcmtvYmplY3QgaXMgcG9wcGVkLCBsZWF2aW5nIHRoZSBtdXRhdGVkIGRpY3QgYXQgdGhlIHRvcAogICAgICBvZiB0aGUgc3RhY2suCgogICAgICBTdGFjayBiZWZvcmU6ICAuLi4gcHlkaWN0IG1hcmtvYmplY3Qga2V5XzEgdmFsdWVfMSAuLi4ga2V5X24gdmFsdWVfbgogICAgICBTdGFjayBhZnRlcjogICAuLi4gcHlkaWN0CgogICAgICB3aGVyZSBweWRpY3QgaGFzIGJlZW4gbW9kaWZpZWQgdmlhIHB5ZGljdFtrZXlfaV0gPSB2YWx1ZV9pIGZvciBpIGluCiAgICAgIDEsIDIsIC4uLiwgbiwgYW5kIGluIHRoYXQgb3JkZXIuCiAgICAgICIiIiksCgogICAgIyBXYXlzIHRvIGJ1aWxkIHNldHMKCiAgICBJKG5hbWU9J0VNUFRZX1NFVCcsCiAgICAgIGNvZGU9J1x4OGYnLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bcHlzZXRdLAogICAgICBwcm90bz00LAogICAgICBkb2M9IlB1c2ggYW4gZW1wdHkgc2V0LiIpLAoKICAgIEkobmFtZT0nQURESVRFTVMnLAogICAgICBjb2RlPSdceDkwJywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bcHlzZXQsIG1hcmtvYmplY3QsIHN0YWNrc2xpY2VdLAogICAgICBzdGFja19hZnRlcj1bcHlzZXRdLAogICAgICBwcm90bz00LAogICAgICBkb2M9IiIiQWRkIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgaXRlbXMgdG8gYW4gZXhpc3Rpbmcgc2V0LgoKICAgICAgVGhlIHNsaWNlIG9mIHRoZSBzdGFjayBmb2xsb3dpbmcgdGhlIHRvcG1vc3QgbWFya29iamVjdCBpcyB0YWtlbiBhcwogICAgICBhIHNlcXVlbmNlIG9mIGl0ZW1zLCBhZGRlZCB0byB0aGUgc2V0IGltbWVkaWF0ZWx5IHVuZGVyIHRoZSB0b3Btb3N0CiAgICAgIG1hcmtvYmplY3QuICBFdmVyeXRoaW5nIGF0IGFuZCBhZnRlciB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGlzIHBvcHBlZCwKICAgICAgbGVhdmluZyB0aGUgbXV0YXRlZCBzZXQgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suCgogICAgICBTdGFjayBiZWZvcmU6ICAuLi4gcHlzZXQgbWFya29iamVjdCBpdGVtXzEgLi4uIGl0ZW1fbgogICAgICBTdGFjayBhZnRlcjogICAuLi4gcHlzZXQKCiAgICAgIHdoZXJlIHB5c2V0IGhhcyBiZWVuIG1vZGlmaWVkIHZpYSBweXNldC5hZGQoaXRlbV9pKSA9IGl0ZW1faSBmb3IgaSBpbgogICAgICAxLCAyLCAuLi4sIG4sIGFuZCBpbiB0aGF0IG9yZGVyLgogICAgICAiIiIpLAoKICAgICMgV2F5IHRvIGJ1aWxkIGZyb3plbnNldHMKCiAgICBJKG5hbWU9J0ZST1pFTlNFVCcsCiAgICAgIGNvZGU9J1x4OTEnLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVttYXJrb2JqZWN0LCBzdGFja3NsaWNlXSwKICAgICAgc3RhY2tfYWZ0ZXI9W3B5ZnJvemVuc2V0XSwKICAgICAgcHJvdG89NCwKICAgICAgZG9jPSIiIkJ1aWxkIGEgZnJvemVuc2V0IG91dCBvZiB0aGUgdG9wbW9zdCBzbGljZSwgYWZ0ZXIgbWFya29iamVjdC4KCiAgICAgIEFsbCB0aGUgc3RhY2sgZW50cmllcyBmb2xsb3dpbmcgdGhlIHRvcG1vc3QgbWFya29iamVjdCBhcmUgcGxhY2VkIGludG8KICAgICAgYSBzaW5nbGUgUHl0aG9uIGZyb3plbnNldCwgd2hpY2ggc2luZ2xlIGZyb3plbnNldCBvYmplY3QgcmVwbGFjZXMgYWxsCiAgICAgIG9mIHRoZSBzdGFjayBmcm9tIHRoZSB0b3Btb3N0IG1hcmtvYmplY3Qgb253YXJkLiAgRm9yIGV4YW1wbGUsCgogICAgICBTdGFjayBiZWZvcmU6IC4uLiBtYXJrb2JqZWN0IDEgMiAzCiAgICAgIFN0YWNrIGFmdGVyOiAgLi4uIGZyb3plbnNldCh7MSwgMiwgM30pCiAgICAgICIiIiksCgogICAgIyBTdGFjayBtYW5pcHVsYXRpb24uCgogICAgSShuYW1lPSdQT1AnLAogICAgICBjb2RlPScwJywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bYW55b2JqZWN0XSwKICAgICAgc3RhY2tfYWZ0ZXI9W10sCiAgICAgIHByb3RvPTAsCiAgICAgIGRvYz0iRGlzY2FyZCB0aGUgdG9wIHN0YWNrIGl0ZW0sIHNocmlua2luZyB0aGUgc3RhY2sgYnkgb25lIGl0ZW0uIiksCgogICAgSShuYW1lPSdEVVAnLAogICAgICBjb2RlPScyJywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bYW55b2JqZWN0XSwKICAgICAgc3RhY2tfYWZ0ZXI9W2FueW9iamVjdCwgYW55b2JqZWN0XSwKICAgICAgcHJvdG89MCwKICAgICAgZG9jPSJQdXNoIHRoZSB0b3Agc3RhY2sgaXRlbSBvbnRvIHRoZSBzdGFjayBhZ2FpbiwgZHVwbGljYXRpbmcgaXQuIiksCgogICAgSShuYW1lPSdNQVJLJywKICAgICAgY29kZT0nKCcsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVttYXJrb2JqZWN0XSwKICAgICAgcHJvdG89MCwKICAgICAgZG9jPSIiIlB1c2ggbWFya29iamVjdCBvbnRvIHRoZSBzdGFjay4KCiAgICAgIG1hcmtvYmplY3QgaXMgYSB1bmlxdWUgb2JqZWN0LCB1c2VkIGJ5IG90aGVyIG9wY29kZXMgdG8gaWRlbnRpZnkgYQogICAgICByZWdpb24gb2YgdGhlIHN0YWNrIGNvbnRhaW5pbmcgYSB2YXJpYWJsZSBudW1iZXIgb2Ygb2JqZWN0cyBmb3IgdGhlbQogICAgICB0byB3b3JrIG9uLiAgU2VlIG1hcmtvYmplY3QuZG9jIGZvciBtb3JlIGRldGFpbC4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J1BPUF9NQVJLJywKICAgICAgY29kZT0nMScsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W21hcmtvYmplY3QsIHN0YWNrc2xpY2VdLAogICAgICBzdGFja19hZnRlcj1bXSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSIiIlBvcCBhbGwgdGhlIHN0YWNrIG9iamVjdHMgYXQgYW5kIGFib3ZlIHRoZSB0b3Btb3N0IG1hcmtvYmplY3QuCgogICAgICBXaGVuIGFuIG9wY29kZSB1c2luZyBhIHZhcmlhYmxlIG51bWJlciBvZiBzdGFjayBvYmplY3RzIGlzIGRvbmUsCiAgICAgIFBPUF9NQVJLIGlzIHVzZWQgdG8gcmVtb3ZlIHRob3NlIG9iamVjdHMsIGFuZCB0byByZW1vdmUgdGhlIG1hcmtvYmplY3QKICAgICAgdGhhdCBkZWxpbWl0ZWQgdGhlaXIgc3RhcnRpbmcgcG9zaXRpb24gb24gdGhlIHN0YWNrLgogICAgICAiIiIpLAoKICAgICMgTWVtbyBtYW5pcHVsYXRpb24uICBUaGVyZSBhcmUgcmVhbGx5IG9ubHkgdHdvIG9wZXJhdGlvbnMgKGdldCBhbmQgcHV0KSwKICAgICMgZWFjaCBpbiBhbGwtdGV4dCwgInNob3J0IGJpbmFyeSIsIGFuZCAibG9uZyBiaW5hcnkiIGZsYXZvcnMuCgogICAgSShuYW1lPSdHRVQnLAogICAgICBjb2RlPSdnJywKICAgICAgYXJnPWRlY2ltYWxubF9zaG9ydCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bYW55b2JqZWN0XSwKICAgICAgcHJvdG89MCwKICAgICAgZG9jPSIiIlJlYWQgYW4gb2JqZWN0IGZyb20gdGhlIG1lbW8gYW5kIHB1c2ggaXQgb24gdGhlIHN0YWNrLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIG9iamVjdCB0byBwdXNoIGlzIGdpdmVuIGJ5IHRoZSBuZXdsaW5lLXRlcm1pbmF0ZWQKICAgICAgZGVjaW1hbCBzdHJpbmcgZm9sbG93aW5nLiAgQklOR0VUIGFuZCBMT05HX0JJTkdFVCBhcmUgc3BhY2Utb3B0aW1pemVkCiAgICAgIHZlcnNpb25zLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nQklOR0VUJywKICAgICAgY29kZT0naCcsCiAgICAgIGFyZz11aW50MSwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bYW55b2JqZWN0XSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSIiIlJlYWQgYW4gb2JqZWN0IGZyb20gdGhlIG1lbW8gYW5kIHB1c2ggaXQgb24gdGhlIHN0YWNrLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIG9iamVjdCB0byBwdXNoIGlzIGdpdmVuIGJ5IHRoZSAxLWJ5dGUgdW5zaWduZWQKICAgICAgaW50ZWdlciBmb2xsb3dpbmcuCiAgICAgICIiIiksCgogICAgSShuYW1lPSdMT05HX0JJTkdFVCcsCiAgICAgIGNvZGU9J2onLAogICAgICBhcmc9dWludDQsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W2FueW9iamVjdF0sCiAgICAgIHByb3RvPTEsCiAgICAgIGRvYz0iIiJSZWFkIGFuIG9iamVjdCBmcm9tIHRoZSBtZW1vIGFuZCBwdXNoIGl0IG9uIHRoZSBzdGFjay4KCiAgICAgIFRoZSBpbmRleCBvZiB0aGUgbWVtbyBvYmplY3QgdG8gcHVzaCBpcyBnaXZlbiBieSB0aGUgNC1ieXRlIHVuc2lnbmVkCiAgICAgIGxpdHRsZS1lbmRpYW4gaW50ZWdlciBmb2xsb3dpbmcuCiAgICAgICIiIiksCgogICAgSShuYW1lPSdQVVQnLAogICAgICBjb2RlPSdwJywKICAgICAgYXJnPWRlY2ltYWxubF9zaG9ydCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bXSwKICAgICAgcHJvdG89MCwKICAgICAgZG9jPSIiIlN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGludG8gaXMgZ2l2ZW4gYnkgdGhlIG5ld2xpbmUtCiAgICAgIHRlcm1pbmF0ZWQgZGVjaW1hbCBzdHJpbmcgZm9sbG93aW5nLiAgQklOUFVUIGFuZCBMT05HX0JJTlBVVCBhcmUKICAgICAgc3BhY2Utb3B0aW1pemVkIHZlcnNpb25zLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nQklOUFVUJywKICAgICAgY29kZT0ncScsCiAgICAgIGFyZz11aW50MSwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bXSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSIiIlN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGludG8gaXMgZ2l2ZW4gYnkgdGhlIDEtYnl0ZQogICAgICB1bnNpZ25lZCBpbnRlZ2VyIGZvbGxvd2luZy4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J0xPTkdfQklOUFVUJywKICAgICAgY29kZT0ncicsCiAgICAgIGFyZz11aW50NCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bXSwKICAgICAgcHJvdG89MSwKICAgICAgZG9jPSIiIlN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGludG8gaXMgZ2l2ZW4gYnkgdGhlIDQtYnl0ZQogICAgICB1bnNpZ25lZCBsaXR0bGUtZW5kaWFuIGludGVnZXIgZm9sbG93aW5nLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nTUVNT0laRScsCiAgICAgIGNvZGU9J1x4OTQnLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVthbnlvYmplY3RdLAogICAgICBzdGFja19hZnRlcj1bYW55b2JqZWN0XSwKICAgICAgcHJvdG89NCwKICAgICAgZG9jPSIiIlN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGlzIHRoZSBudW1iZXIgb2YKICAgICAgZWxlbWVudHMgY3VycmVudGx5IHByZXNlbnQgaW4gdGhlIG1lbW8uCiAgICAgICIiIiksCgogICAgIyBBY2Nlc3MgdGhlIGV4dGVuc2lvbiByZWdpc3RyeSAocHJlZGVmaW5lZCBvYmplY3RzKS4gIEFraW4gdG8gdGhlIEdFVAogICAgIyBmYW1pbHkuCgogICAgSShuYW1lPSdFWFQxJywKICAgICAgY29kZT0nXHg4MicsCiAgICAgIGFyZz11aW50MSwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bYW55b2JqZWN0XSwKICAgICAgcHJvdG89MiwKICAgICAgZG9jPSIiIkV4dGVuc2lvbiBjb2RlLgoKICAgICAgVGhpcyBjb2RlIGFuZCB0aGUgc2ltaWxhciBFWFQyIGFuZCBFWFQ0IGFsbG93IHVzaW5nIGEgcmVnaXN0cnkKICAgICAgb2YgcG9wdWxhciBvYmplY3RzIHRoYXQgYXJlIHBpY2tsZWQgYnkgbmFtZSwgdHlwaWNhbGx5IGNsYXNzZXMuCiAgICAgIEl0IGlzIGVudmlzaW9uZWQgdGhhdCB0aHJvdWdoIGEgZ2xvYmFsIG5lZ290aWF0aW9uIGFuZAogICAgICByZWdpc3RyYXRpb24gcHJvY2VzcywgdGhpcmQgcGFydGllcyBjYW4gc2V0IHVwIGEgbWFwcGluZyBiZXR3ZWVuCiAgICAgIGludHMgYW5kIG9iamVjdCBuYW1lcy4KCiAgICAgIEluIG9yZGVyIHRvIGd1YXJhbnRlZSBwaWNrbGUgaW50ZXJjaGFuZ2VhYmlsaXR5LCB0aGUgZXh0ZW5zaW9uCiAgICAgIGNvZGUgcmVnaXN0cnkgb3VnaHQgdG8gYmUgZ2xvYmFsLCBhbHRob3VnaCBhIHJhbmdlIG9mIGNvZGVzIG1heQogICAgICBiZSByZXNlcnZlZCBmb3IgcHJpdmF0ZSB1c2UuCgogICAgICBFWFQxIGhhcyBhIDEtYnl0ZSBpbnRlZ2VyIGFyZ3VtZW50LiAgVGhpcyBpcyB1c2VkIHRvIGluZGV4IGludG8gdGhlCiAgICAgIGV4dGVuc2lvbiByZWdpc3RyeSwgYW5kIHRoZSBvYmplY3QgYXQgdGhhdCBpbmRleCBpcyBwdXNoZWQgb24gdGhlIHN0YWNrLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nRVhUMicsCiAgICAgIGNvZGU9J1x4ODMnLAogICAgICBhcmc9dWludDIsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W2FueW9iamVjdF0sCiAgICAgIHByb3RvPTIsCiAgICAgIGRvYz0iIiJFeHRlbnNpb24gY29kZS4KCiAgICAgIFNlZSBFWFQxLiAgRVhUMiBoYXMgYSB0d28tYnl0ZSBpbnRlZ2VyIGFyZ3VtZW50LgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nRVhUNCcsCiAgICAgIGNvZGU9J1x4ODQnLAogICAgICBhcmc9aW50NCwKICAgICAgc3RhY2tfYmVmb3JlPVtdLAogICAgICBzdGFja19hZnRlcj1bYW55b2JqZWN0XSwKICAgICAgcHJvdG89MiwKICAgICAgZG9jPSIiIkV4dGVuc2lvbiBjb2RlLgoKICAgICAgU2VlIEVYVDEuICBFWFQ0IGhhcyBhIGZvdXItYnl0ZSBpbnRlZ2VyIGFyZ3VtZW50LgogICAgICAiIiIpLAoKICAgICMgUHVzaCBhIGNsYXNzIG9iamVjdCwgb3IgbW9kdWxlIGZ1bmN0aW9uLCBvbiB0aGUgc3RhY2ssIHZpYSBpdHMgbW9kdWxlCiAgICAjIGFuZCBuYW1lLgoKICAgIEkobmFtZT0nR0xPQkFMJywKICAgICAgY29kZT0nYycsCiAgICAgIGFyZz1zdHJpbmdubF9ub2VzY2FwZV9wYWlyLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVthbnlvYmplY3RdLAogICAgICBwcm90bz0wLAogICAgICBkb2M9IiIiUHVzaCBhIGdsb2JhbCBvYmplY3QgKG1vZHVsZS5hdHRyKSBvbiB0aGUgc3RhY2suCgogICAgICBUd28gbmV3bGluZS10ZXJtaW5hdGVkIHN0cmluZ3MgZm9sbG93IHRoZSBHTE9CQUwgb3Bjb2RlLiAgVGhlIGZpcnN0IGlzCiAgICAgIHRha2VuIGFzIGEgbW9kdWxlIG5hbWUsIGFuZCB0aGUgc2Vjb25kIGFzIGEgY2xhc3MgbmFtZS4gIFRoZSBjbGFzcwogICAgICBvYmplY3QgbW9kdWxlLmNsYXNzIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suICBNb3JlIGFjY3VyYXRlbHksIHRoZQogICAgICBvYmplY3QgcmV0dXJuZWQgYnkgc2VsZi5maW5kX2NsYXNzKG1vZHVsZSwgY2xhc3MpIGlzIHB1c2hlZCBvbiB0aGUKICAgICAgc3RhY2ssIHNvIHVucGlja2xpbmcgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBmb3JtIG9mIGxvb2t1cC4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J1NUQUNLX0dMT0JBTCcsCiAgICAgIGNvZGU9J1x4OTMnLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVtweXVuaWNvZGUsIHB5dW5pY29kZV0sCiAgICAgIHN0YWNrX2FmdGVyPVthbnlvYmplY3RdLAogICAgICBwcm90bz00LAogICAgICBkb2M9IiIiUHVzaCBhIGdsb2JhbCBvYmplY3QgKG1vZHVsZS5hdHRyKSBvbiB0aGUgc3RhY2suCiAgICAgICIiIiksCgogICAgIyBXYXlzIHRvIGJ1aWxkIG9iamVjdHMgb2YgY2xhc3NlcyBwaWNrbGUgZG9lc24ndCBrbm93IGFib3V0IGRpcmVjdGx5CiAgICAjICh1c2VyLWRlZmluZWQgY2xhc3NlcykuICBJIGRlc3BhaXIgb2YgZG9jdW1lbnRpbmcgdGhpcyBhY2N1cmF0ZWx5CiAgICAjIGFuZCBjb21wcmVoZW5zaWJseSAtLSB5b3UgcmVhbGx5IGhhdmUgdG8gcmVhZCB0aGUgcGlja2xlIGNvZGUgdG8KICAgICMgZmluZCBhbGwgdGhlIHNwZWNpYWwgY2FzZXMuCgogICAgSShuYW1lPSdSRURVQ0UnLAogICAgICBjb2RlPSdSJywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bYW55b2JqZWN0LCBhbnlvYmplY3RdLAogICAgICBzdGFja19hZnRlcj1bYW55b2JqZWN0XSwKICAgICAgcHJvdG89MCwKICAgICAgZG9jPSIiIlB1c2ggYW4gb2JqZWN0IGJ1aWx0IGZyb20gYSBjYWxsYWJsZSBhbmQgYW4gYXJndW1lbnQgdHVwbGUuCgogICAgICBUaGUgb3Bjb2RlIGlzIG5hbWVkIHRvIHJlbWluZCBvZiB0aGUgX19yZWR1Y2VfXygpIG1ldGhvZC4KCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIGNhbGxhYmxlIHB5dHVwbGUKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gY2FsbGFibGUoKnB5dHVwbGUpCgogICAgICBUaGUgY2FsbGFibGUgYW5kIHRoZSBhcmd1bWVudCB0dXBsZSBhcmUgdGhlIGZpcnN0IHR3byBpdGVtcyByZXR1cm5lZAogICAgICBieSBhIF9fcmVkdWNlX18gbWV0aG9kLiAgQXBwbHlpbmcgdGhlIGNhbGxhYmxlIHRvIHRoZSBhcmd0dXBsZSBpcwogICAgICBzdXBwb3NlZCB0byByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIG9iamVjdCwgb3IgYXQgbGVhc3QgZ2V0IGl0IHN0YXJ0ZWQuCiAgICAgIElmIHRoZSBfX3JlZHVjZV9fIG1ldGhvZCByZXR1cm5zIGEgMy10dXBsZSwgdGhlIGxhc3QgY29tcG9uZW50IGlzIGFuCiAgICAgIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCB0byB0aGUgb2JqZWN0J3MgX19zZXRzdGF0ZV9fLCBhbmQgdGhlbiB0aGUgUkVEVUNFCiAgICAgIG9wY29kZSBpcyBmb2xsb3dlZCBieSBjb2RlIHRvIGNyZWF0ZSBzZXRzdGF0ZSdzIGFyZ3VtZW50LCBhbmQgdGhlbiBhCiAgICAgIEJVSUxEIG9wY29kZSB0byBhcHBseSAgX19zZXRzdGF0ZV9fIHRvIHRoYXQgYXJndW1lbnQuCgogICAgICBJZiBub3QgaXNpbnN0YW5jZShjYWxsYWJsZSwgdHlwZSksIFJFRFVDRSBjb21wbGFpbnMgdW5sZXNzIHRoZQogICAgICBjYWxsYWJsZSBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGNvcHlyZWcgbW9kdWxlJ3MKICAgICAgc2FmZV9jb25zdHJ1Y3RvcnMgZGljdCwgb3IgdGhlIGNhbGxhYmxlIGhhcyBhIG1hZ2ljCiAgICAgICdfX3NhZmVfZm9yX3VucGlja2xpbmdfXycgYXR0cmlidXRlIHdpdGggYSB0cnVlIHZhbHVlLiAgSSdtIG5vdCBzdXJlCiAgICAgIHdoeSBpdCBkb2VzIHRoaXMsIGJ1dCBJJ3ZlIHN1cmUgc2VlbiB0aGlzIGNvbXBsYWludCBvZnRlbiBlbm91Z2ggd2hlbgogICAgICBJIGRpZG4ndCB3YW50IHRvIDx3aW5rPi4KICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J0JVSUxEJywKICAgICAgY29kZT0nYicsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W2FueW9iamVjdCwgYW55b2JqZWN0XSwKICAgICAgc3RhY2tfYWZ0ZXI9W2FueW9iamVjdF0sCiAgICAgIHByb3RvPTAsCiAgICAgIGRvYz0iIiJGaW5pc2ggYnVpbGRpbmcgYW4gb2JqZWN0LCB2aWEgX19zZXRzdGF0ZV9fIG9yIGRpY3QgdXBkYXRlLgoKICAgICAgU3RhY2sgYmVmb3JlOiAuLi4gYW55b2JqZWN0IGFyZ3VtZW50CiAgICAgIFN0YWNrIGFmdGVyOiAgLi4uIGFueW9iamVjdAoKICAgICAgd2hlcmUgYW55b2JqZWN0IG1heSBoYXZlIGJlZW4gbXV0YXRlZCwgYXMgZm9sbG93czoKCiAgICAgIElmIHRoZSBvYmplY3QgaGFzIGEgX19zZXRzdGF0ZV9fIG1ldGhvZCwKCiAgICAgICAgICBhbnlvYmplY3QuX19zZXRzdGF0ZV9fKGFyZ3VtZW50KQoKICAgICAgaXMgY2FsbGVkLgoKICAgICAgRWxzZSB0aGUgYXJndW1lbnQgbXVzdCBiZSBhIGRpY3QsIHRoZSBvYmplY3QgbXVzdCBoYXZlIGEgX19kaWN0X18sIGFuZAogICAgICB0aGUgb2JqZWN0IGlzIHVwZGF0ZWQgdmlhCgogICAgICAgICAgYW55b2JqZWN0Ll9fZGljdF9fLnVwZGF0ZShhcmd1bWVudCkKICAgICAgIiIiKSwKCiAgICBJKG5hbWU9J0lOU1QnLAogICAgICBjb2RlPSdpJywKICAgICAgYXJnPXN0cmluZ25sX25vZXNjYXBlX3BhaXIsCiAgICAgIHN0YWNrX2JlZm9yZT1bbWFya29iamVjdCwgc3RhY2tzbGljZV0sCiAgICAgIHN0YWNrX2FmdGVyPVthbnlvYmplY3RdLAogICAgICBwcm90bz0wLAogICAgICBkb2M9IiIiQnVpbGQgYSBjbGFzcyBpbnN0YW5jZS4KCiAgICAgIFRoaXMgaXMgdGhlIHByb3RvY29sIDAgdmVyc2lvbiBvZiBwcm90b2NvbCAxJ3MgT0JKIG9wY29kZS4KICAgICAgSU5TVCBpcyBmb2xsb3dlZCBieSB0d28gbmV3bGluZS10ZXJtaW5hdGVkIHN0cmluZ3MsIGdpdmluZyBhCiAgICAgIG1vZHVsZSBhbmQgY2xhc3MgbmFtZSwganVzdCBhcyBmb3IgdGhlIEdMT0JBTCBvcGNvZGUgKGFuZCBzZWUKICAgICAgR0xPQkFMIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhhdCkuICBzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBuYW1lKQogICAgICBpcyB1c2VkIHRvIGdldCBhIGNsYXNzIG9iamVjdC4KCiAgICAgIEluIGFkZGl0aW9uLCBhbGwgdGhlIG9iamVjdHMgb24gdGhlIHN0YWNrIGZvbGxvd2luZyB0aGUgdG9wbW9zdAogICAgICBtYXJrb2JqZWN0IGFyZSBnYXRoZXJlZCBpbnRvIGEgdHVwbGUgYW5kIHBvcHBlZCAoYWxvbmcgd2l0aCB0aGUKICAgICAgdG9wbW9zdCBtYXJrb2JqZWN0KSwganVzdCBhcyBmb3IgdGhlIFRVUExFIG9wY29kZS4KCiAgICAgIE5vdyBpdCBnZXRzIGNvbXBsaWNhdGVkLiAgSWYgYWxsIG9mIHRoZXNlIGFyZSB0cnVlOgoKICAgICAgICArIFRoZSBhcmd0dXBsZSBpcyBlbXB0eSAobWFya29iamVjdCB3YXMgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sKICAgICAgICAgIGF0IHRoZSBzdGFydCkuCgogICAgICAgICsgVGhlIGNsYXNzIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgX19nZXRpbml0YXJnc19fIGF0dHJpYnV0ZS4KCiAgICAgIHRoZW4gd2Ugd2FudCB0byBjcmVhdGUgYW4gb2xkLXN0eWxlIGNsYXNzIGluc3RhbmNlIHdpdGhvdXQgaW52b2tpbmcKICAgICAgaXRzIF9faW5pdF9fKCkgbWV0aG9kIChwaWNrbGUgaGFzIHdhZmZsZWQgb24gdGhpcyBvdmVyIHRoZSB5ZWFyczsgbm90CiAgICAgIGNhbGxpbmcgX19pbml0X18oKSBpcyBjdXJyZW50IHdpc2RvbSkuICBJbiB0aGlzIGNhc2UsIGFuIGluc3RhbmNlIG9mCiAgICAgIGFuIG9sZC1zdHlsZSBkdW1teSBjbGFzcyBpcyBjcmVhdGVkLCBhbmQgdGhlbiB3ZSB0cnkgdG8gcmViaW5kIGl0cwogICAgICBfX2NsYXNzX18gYXR0cmlidXRlIHRvIHRoZSBkZXNpcmVkIGNsYXNzIG9iamVjdC4gIElmIHRoaXMgc3VjY2VlZHMsCiAgICAgIHRoZSBuZXcgaW5zdGFuY2Ugb2JqZWN0IGlzIHB1c2hlZCBvbiB0aGUgc3RhY2ssIGFuZCB3ZSdyZSBkb25lLgoKICAgICAgRWxzZSAodGhlIGFyZ3R1cGxlIGlzIG5vdCBlbXB0eSwgaXQncyBub3QgYW4gb2xkLXN0eWxlIGNsYXNzIG9iamVjdCwKICAgICAgb3IgdGhlIGNsYXNzIG9iamVjdCBkb2VzIGhhdmUgYSBfX2dldGluaXRhcmdzX18gYXR0cmlidXRlKSwgdGhlIGNvZGUKICAgICAgZmlyc3QgaW5zaXN0cyB0aGF0IHRoZSBjbGFzcyBvYmplY3QgaGF2ZSBhIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fCiAgICAgIGF0dHJpYnV0ZS4gIFVubGlrZSBhcyBmb3IgdGhlIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIGNoZWNrIGluIFJFRFVDRSwKICAgICAgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciB0aGlzIGF0dHJpYnV0ZSBoYXMgYSB0cnVlIG9yIGZhbHNlIHZhbHVlLCBpdAogICAgICBvbmx5IG1hdHRlcnMgd2hldGhlciBpdCBleGlzdHMgKFhYWCB0aGlzIGlzIGEgYnVnKS4gIElmCiAgICAgIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIGRvZXNuJ3QgZXhpc3QsIFVucGlja2xpbmdFcnJvciBpcyByYWlzZWQuCgogICAgICBFbHNlICh0aGUgY2xhc3Mgb2JqZWN0IGRvZXMgaGF2ZSBhIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIGF0dHIpLAogICAgICB0aGUgY2xhc3Mgb2JqZWN0IG9idGFpbmVkIGZyb20gSU5TVCdzIGFyZ3VtZW50cyBpcyBhcHBsaWVkIHRvIHRoZQogICAgICBhcmd0dXBsZSBvYnRhaW5lZCBmcm9tIHRoZSBzdGFjaywgYW5kIHRoZSByZXN1bHRpbmcgaW5zdGFuY2Ugb2JqZWN0CiAgICAgIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suCgogICAgICBOT1RFOiAgY2hlY2tzIGZvciBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyB3ZW50IGF3YXkgaW4gUHl0aG9uIDIuMy4KICAgICAgTk9URTogIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNsYXNzZXMgZG9lcwogICAgICAgICAgICAgbm90IG1ha2Ugc2Vuc2UgaW4gUHl0aG9uIDMuCiAgICAgICIiIiksCgogICAgSShuYW1lPSdPQkonLAogICAgICBjb2RlPSdvJywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bbWFya29iamVjdCwgYW55b2JqZWN0LCBzdGFja3NsaWNlXSwKICAgICAgc3RhY2tfYWZ0ZXI9W2FueW9iamVjdF0sCiAgICAgIHByb3RvPTEsCiAgICAgIGRvYz0iIiJCdWlsZCBhIGNsYXNzIGluc3RhbmNlLgoKICAgICAgVGhpcyBpcyB0aGUgcHJvdG9jb2wgMSB2ZXJzaW9uIG9mIHByb3RvY29sIDAncyBJTlNUIG9wY29kZSwgYW5kIGlzCiAgICAgIHZlcnkgbXVjaCBsaWtlIGl0LiAgVGhlIG1ham9yIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgY2xhc3Mgb2JqZWN0CiAgICAgIGlzIHRha2VuIG9mZiB0aGUgc3RhY2ssIGFsbG93aW5nIGl0IHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBtZW1vCiAgICAgIHJlcGVhdGVkbHkgaWYgc2V2ZXJhbCBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MgYXJlIGNyZWF0ZWQuICBUaGlzCiAgICAgIGNhbiBiZSBtdWNoIG1vcmUgZWZmaWNpZW50IChpbiBib3RoIHRpbWUgYW5kIHNwYWNlKSB0aGFuIHJlcGVhdGVkbHkKICAgICAgZW1iZWRkaW5nIHRoZSBtb2R1bGUgYW5kIGNsYXNzIG5hbWVzIGluIElOU1Qgb3Bjb2Rlcy4KCiAgICAgIFVubGlrZSBJTlNULCBPQkogdGFrZXMgbm8gYXJndW1lbnRzIGZyb20gdGhlIG9wY29kZSBzdHJlYW0uICBJbnN0ZWFkCiAgICAgIHRoZSBjbGFzcyBvYmplY3QgaXMgdGFrZW4gb2ZmIHRoZSBzdGFjaywgaW1tZWRpYXRlbHkgYWJvdmUgdGhlCiAgICAgIHRvcG1vc3QgbWFya29iamVjdDoKCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIG1hcmtvYmplY3QgY2xhc3NvYmplY3Qgc3RhY2tzbGljZQogICAgICBTdGFjayBhZnRlcjogIC4uLiBuZXdfaW5zdGFuY2Vfb2JqZWN0CgogICAgICBBcyBmb3IgSU5TVCwgdGhlIHJlbWFpbmRlciBvZiB0aGUgc3RhY2sgYWJvdmUgdGhlIG1hcmtvYmplY3QgaXMKICAgICAgZ2F0aGVyZWQgaW50byBhbiBhcmd1bWVudCB0dXBsZSwgYW5kIHRoZW4gdGhlIGxvZ2ljIHNlZW1zIGlkZW50aWNhbCwKICAgICAgZXhjZXB0IHRoYXQgbm8gX19zYWZlX2Zvcl91bnBpY2tsaW5nX18gY2hlY2sgaXMgZG9uZSAoWFhYIHRoaXMgaXMKICAgICAgYSBidWcpLiAgU2VlIElOU1QgZm9yIHRoZSBnb3J5IGRldGFpbHMuCgogICAgICBOT1RFOiAgSW4gUHl0aG9uIDIuMywgSU5TVCBhbmQgT0JKIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciBob3cgdGhleQogICAgICBnZXQgdGhlIGNsYXNzIG9iamVjdC4gIFRoYXQgd2FzIGFsd2F5cyB0aGUgaW50ZW50OyB0aGUgaW1wbGVtZW50YXRpb25zCiAgICAgIGhhZCBkaXZlcmdlZCBmb3IgYWNjaWRlbnRhbCByZWFzb25zLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nTkVXT0JKJywKICAgICAgY29kZT0nXHg4MScsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W2FueW9iamVjdCwgYW55b2JqZWN0XSwKICAgICAgc3RhY2tfYWZ0ZXI9W2FueW9iamVjdF0sCiAgICAgIHByb3RvPTIsCiAgICAgIGRvYz0iIiJCdWlsZCBhbiBvYmplY3QgaW5zdGFuY2UuCgogICAgICBUaGUgc3RhY2sgYmVmb3JlIHNob3VsZCBiZSB0aG91Z2h0IG9mIGFzIGNvbnRhaW5pbmcgYSBjbGFzcwogICAgICBvYmplY3QgZm9sbG93ZWQgYnkgYW4gYXJndW1lbnQgdHVwbGUgKHRoZSB0dXBsZSBiZWluZyB0aGUgc3RhY2sKICAgICAgdG9wKS4gIENhbGwgdGhlc2UgY2xzIGFuZCBhcmdzLiAgVGhleSBhcmUgcG9wcGVkIG9mZiB0aGUgc3RhY2ssCiAgICAgIGFuZCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgY2xzLl9fbmV3X18oY2xzLCAqYXJncykgaXMgcHVzaGVkIGJhY2sKICAgICAgb250byB0aGUgc3RhY2suCiAgICAgICIiIiksCgogICAgSShuYW1lPSdORVdPQkpfRVgnLAogICAgICBjb2RlPSdceDkyJywKICAgICAgYXJnPU5vbmUsCiAgICAgIHN0YWNrX2JlZm9yZT1bYW55b2JqZWN0LCBhbnlvYmplY3QsIGFueW9iamVjdF0sCiAgICAgIHN0YWNrX2FmdGVyPVthbnlvYmplY3RdLAogICAgICBwcm90bz00LAogICAgICBkb2M9IiIiQnVpbGQgYW4gb2JqZWN0IGluc3RhbmNlLgoKICAgICAgVGhlIHN0YWNrIGJlZm9yZSBzaG91bGQgYmUgdGhvdWdodCBvZiBhcyBjb250YWluaW5nIGEgY2xhc3MKICAgICAgb2JqZWN0IGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50IHR1cGxlIGFuZCBieSBhIGtleXdvcmQgYXJndW1lbnQgZGljdAogICAgICAodGhlIGRpY3QgYmVpbmcgdGhlIHN0YWNrIHRvcCkuICBDYWxsIHRoZXNlIGNscyBhbmQgYXJncy4gIFRoZXkgYXJlCiAgICAgIHBvcHBlZCBvZmYgdGhlIHN0YWNrLCBhbmQgdGhlIHZhbHVlIHJldHVybmVkIGJ5CiAgICAgIGNscy5fX25ld19fKGNscywgKmFyZ3MsICprd2FyZ3MpIGlzICBwdXNoZWQgYmFjayAgb250byB0aGUgc3RhY2suCiAgICAgICIiIiksCgogICAgIyBNYWNoaW5lIGNvbnRyb2wuCgogICAgSShuYW1lPSdQUk9UTycsCiAgICAgIGNvZGU9J1x4ODAnLAogICAgICBhcmc9dWludDEsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W10sCiAgICAgIHByb3RvPTIsCiAgICAgIGRvYz0iIiJQcm90b2NvbCB2ZXJzaW9uIGluZGljYXRvci4KCiAgICAgIEZvciBwcm90b2NvbCAyIGFuZCBhYm92ZSwgYSBwaWNrbGUgbXVzdCBzdGFydCB3aXRoIHRoaXMgb3Bjb2RlLgogICAgICBUaGUgYXJndW1lbnQgaXMgdGhlIHByb3RvY29sIHZlcnNpb24sIGFuIGludCBpbiByYW5nZSgyLCAyNTYpLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nU1RPUCcsCiAgICAgIGNvZGU9Jy4nLAogICAgICBhcmc9Tm9uZSwKICAgICAgc3RhY2tfYmVmb3JlPVthbnlvYmplY3RdLAogICAgICBzdGFja19hZnRlcj1bXSwKICAgICAgcHJvdG89MCwKICAgICAgZG9jPSIiIlN0b3AgdGhlIHVucGlja2xpbmcgbWFjaGluZS4KCiAgICAgIEV2ZXJ5IHBpY2tsZSBlbmRzIHdpdGggdGhpcyBvcGNvZGUuICBUaGUgb2JqZWN0IGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrCiAgICAgIGlzIHBvcHBlZCwgYW5kIHRoYXQncyB0aGUgcmVzdWx0IG9mIHVucGlja2xpbmcuICBUaGUgc3RhY2sgc2hvdWxkIGJlCiAgICAgIGVtcHR5IHRoZW4uCiAgICAgICIiIiksCgogICAgIyBGcmFtaW5nIHN1cHBvcnQuCgogICAgSShuYW1lPSdGUkFNRScsCiAgICAgIGNvZGU9J1x4OTUnLAogICAgICBhcmc9dWludDgsCiAgICAgIHN0YWNrX2JlZm9yZT1bXSwKICAgICAgc3RhY2tfYWZ0ZXI9W10sCiAgICAgIHByb3RvPTQsCiAgICAgIGRvYz0iIiJJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IGZyYW1lLgoKICAgICAgVGhlIHVucGlja2xlciBtYXkgdXNlIHRoaXMgb3Bjb2RlIHRvIHNhZmVseSBwcmVmZXRjaCBkYXRhIGZyb20gaXRzCiAgICAgIHVuZGVybHlpbmcgc3RyZWFtLgogICAgICAiIiIpLAoKICAgICMgV2F5cyB0byBkZWFsIHdpdGggcGVyc2lzdGVudCBJRHMuCgogICAgSShuYW1lPSdQRVJTSUQnLAogICAgICBjb2RlPSdQJywKICAgICAgYXJnPXN0cmluZ25sX25vZXNjYXBlLAogICAgICBzdGFja19iZWZvcmU9W10sCiAgICAgIHN0YWNrX2FmdGVyPVthbnlvYmplY3RdLAogICAgICBwcm90bz0wLAogICAgICBkb2M9IiIiUHVzaCBhbiBvYmplY3QgaWRlbnRpZmllZCBieSBhIHBlcnNpc3RlbnQgSUQuCgogICAgICBUaGUgcGlja2xlIG1vZHVsZSBkb2Vzbid0IGRlZmluZSB3aGF0IGEgcGVyc2lzdGVudCBJRCBtZWFucy4gIFBFUlNJRCdzCiAgICAgIGFyZ3VtZW50IGlzIGEgbmV3bGluZS10ZXJtaW5hdGVkIHN0ci1zdHlsZSAobm8gZW1iZWRkZWQgZXNjYXBlcywgbm8KICAgICAgYnJhY2tldGluZyBxdW90ZSBjaGFyYWN0ZXJzKSBzdHJpbmcsIHdoaWNoICppcyogInRoZSBwZXJzaXN0ZW50IElEIi4KICAgICAgVGhlIHVucGlja2xlciBwYXNzZXMgdGhpcyBzdHJpbmcgdG8gc2VsZi5wZXJzaXN0ZW50X2xvYWQoKS4gIFdoYXRldmVyCiAgICAgIG9iamVjdCB0aGF0IHJldHVybnMgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4gIFRoZXJlIGlzIG5vIGltcGxlbWVudGF0aW9uCiAgICAgIG9mIHBlcnNpc3RlbnRfbG9hZCgpIGluIFB5dGhvbidzIHVucGlja2xlcjogIGl0IG11c3QgYmUgc3VwcGxpZWQgYnkgYW4KICAgICAgdW5waWNrbGVyIHN1YmNsYXNzLgogICAgICAiIiIpLAoKICAgIEkobmFtZT0nQklOUEVSU0lEJywKICAgICAgY29kZT0nUScsCiAgICAgIGFyZz1Ob25lLAogICAgICBzdGFja19iZWZvcmU9W2FueW9iamVjdF0sCiAgICAgIHN0YWNrX2FmdGVyPVthbnlvYmplY3RdLAogICAgICBwcm90bz0xLAogICAgICBkb2M9IiIiUHVzaCBhbiBvYmplY3QgaWRlbnRpZmllZCBieSBhIHBlcnNpc3RlbnQgSUQuCgogICAgICBMaWtlIFBFUlNJRCwgZXhjZXB0IHRoZSBwZXJzaXN0ZW50IElEIGlzIHBvcHBlZCBvZmYgdGhlIHN0YWNrIChpbnN0ZWFkCiAgICAgIG9mIGJlaW5nIGEgc3RyaW5nIGVtYmVkZGVkIGluIHRoZSBvcGNvZGUgYnl0ZXN0cmVhbSkuICBUaGUgcGVyc2lzdGVudAogICAgICBJRCBpcyBwYXNzZWQgdG8gc2VsZi5wZXJzaXN0ZW50X2xvYWQoKSwgYW5kIHdoYXRldmVyIG9iamVjdCB0aGF0CiAgICAgIHJldHVybnMgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4gIFNlZSBQRVJTSUQgZm9yIG1vcmUgZGV0YWlsLgogICAgICAiIiIpLApdCmRlbCBJCgojIFZlcmlmeSB1bmlxdWVuZXNzIG9mIC5uYW1lIGFuZCAuY29kZSBtZW1iZXJzLgpuYW1lMmkgPSB7fQpjb2RlMmkgPSB7fQoKZm9yIGksIGQgaW4gZW51bWVyYXRlKG9wY29kZXMpOgogICAgaWYgZC5uYW1lIGluIG5hbWUyaToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZXBlYXRlZCBuYW1lICVyIGF0IGluZGljZXMgJWQgYW5kICVkIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAoZC5uYW1lLCBuYW1lMmlbZC5uYW1lXSwgaSkpCiAgICBpZiBkLmNvZGUgaW4gY29kZTJpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlcGVhdGVkIGNvZGUgJXIgYXQgaW5kaWNlcyAlZCBhbmQgJWQiICUKICAgICAgICAgICAgICAgICAgICAgICAgIChkLmNvZGUsIGNvZGUyaVtkLmNvZGVdLCBpKSkKCiAgICBuYW1lMmlbZC5uYW1lXSA9IGkKICAgIGNvZGUyaVtkLmNvZGVdID0gaQoKZGVsIG5hbWUyaSwgY29kZTJpLCBpLCBkCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBCdWlsZCBhIGNvZGUyb3AgZGljdCwgbWFwcGluZyBvcGNvZGUgY2hhcmFjdGVycyB0byBPcGNvZGVJbmZvIHJlY29yZHMuCiMgQWxzbyBlbnN1cmUgd2UndmUgZ290IHRoZSBzYW1lIHN0dWZmIGFzIHBpY2tsZS5weSwgYWx0aG91Z2ggdGhlCiMgaW50cm9zcGVjdGlvbiBoZXJlIGlzIGRpY2V5LgoKY29kZTJvcCA9IHt9CmZvciBkIGluIG9wY29kZXM6CiAgICBjb2RlMm9wW2QuY29kZV0gPSBkCmRlbCBkCgpkZWYgYXNzdXJlX3BpY2tsZV9jb25zaXN0ZW5jeSh2ZXJib3NlPUZhbHNlKToKCiAgICBjb3B5ID0gY29kZTJvcC5jb3B5KCkKICAgIGZvciBuYW1lIGluIHBpY2tsZS5fX2FsbF9fOgogICAgICAgIGlmIG5vdCByZS5tYXRjaCgiW0EtWl1bQS1aMC05X10rJCIsIG5hbWUpOgogICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgcHJpbnQoInNraXBwaW5nICVyOiBpdCBkb2Vzbid0IGxvb2sgbGlrZSBhbiBvcGNvZGUgbmFtZSIgJSBuYW1lKQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHBpY2tsZWNvZGUgPSBnZXRhdHRyKHBpY2tsZSwgbmFtZSkKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwaWNrbGVjb2RlLCBieXRlcykgb3IgbGVuKHBpY2tsZWNvZGUpICE9IDE6CiAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICBwcmludCgoInNraXBwaW5nICVyOiB2YWx1ZSAlciBkb2Vzbid0IGxvb2sgbGlrZSBhIHBpY2tsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgImNvZGUiICUgKG5hbWUsIHBpY2tsZWNvZGUpKSkKICAgICAgICAgICAgY29udGludWUKICAgICAgICBwaWNrbGVjb2RlID0gcGlja2xlY29kZS5kZWNvZGUoImxhdGluLTEiKQogICAgICAgIGlmIHBpY2tsZWNvZGUgaW4gY29weToKICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgIHByaW50KCJjaGVja2luZyBuYW1lICVyIHcvIGNvZGUgJXIgZm9yIGNvbnNpc3RlbmN5IiAlICgKICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHBpY2tsZWNvZGUpKQogICAgICAgICAgICBkID0gY29weVtwaWNrbGVjb2RlXQogICAgICAgICAgICBpZiBkLm5hbWUgIT0gbmFtZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZvciBwaWNrbGUgY29kZSAlciwgcGlja2xlLnB5IHVzZXMgbmFtZSAlciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidXQgd2UncmUgdXNpbmcgbmFtZSAlciIgJSAocGlja2xlY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQubmFtZSkpCiAgICAgICAgICAgICMgRm9yZ2V0IHRoaXMgb25lLiAgQW55IGxlZnQgb3ZlciBpbiBjb3B5IGF0IHRoZSBlbmQgYXJlIGEgcHJvYmxlbQogICAgICAgICAgICAjIG9mIGEgZGlmZmVyZW50IGtpbmQuCiAgICAgICAgICAgIGRlbCBjb3B5W3BpY2tsZWNvZGVdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicGlja2xlLnB5IGFwcGVhcnMgdG8gaGF2ZSBhIHBpY2tsZSBvcGNvZGUgd2l0aCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUgJXIgYW5kIGNvZGUgJXIsIGJ1dCB3ZSBkb24ndCIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBwaWNrbGVjb2RlKSkKICAgIGlmIGNvcHk6CiAgICAgICAgbXNnID0gWyJ3ZSBhcHBlYXIgdG8gaGF2ZSBwaWNrbGUgb3Bjb2RlcyB0aGF0IHBpY2tsZS5weSBkb2Vzbid0IGhhdmU6Il0KICAgICAgICBmb3IgY29kZSwgZCBpbiBjb3B5Lml0ZW1zKCk6CiAgICAgICAgICAgIG1zZy5hcHBlbmQoIiAgICBuYW1lICVyIHdpdGggY29kZSAlciIgJSAoZC5uYW1lLCBjb2RlKSkKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJcbiIuam9pbihtc2cpKQoKYXNzdXJlX3BpY2tsZV9jb25zaXN0ZW5jeSgpCmRlbCBhc3N1cmVfcGlja2xlX2NvbnNpc3RlbmN5CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBBIHBpY2tsZSBvcGNvZGUgZ2VuZXJhdG9yLgoKZGVmIF9nZW5vcHMoZGF0YSwgeWllbGRfZW5kX3Bvcz1GYWxzZSk6CiAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGJ5dGVzX3R5cGVzKToKICAgICAgICBkYXRhID0gaW8uQnl0ZXNJTyhkYXRhKQoKICAgIGlmIGhhc2F0dHIoZGF0YSwgInRlbGwiKToKICAgICAgICBnZXRwb3MgPSBkYXRhLnRlbGwKICAgIGVsc2U6CiAgICAgICAgZ2V0cG9zID0gbGFtYmRhOiBOb25lCgogICAgd2hpbGUgVHJ1ZToKICAgICAgICBwb3MgPSBnZXRwb3MoKQogICAgICAgIGNvZGUgPSBkYXRhLnJlYWQoMSkKICAgICAgICBvcGNvZGUgPSBjb2RlMm9wLmdldChjb2RlLmRlY29kZSgibGF0aW4tMSIpKQogICAgICAgIGlmIG9wY29kZSBpcyBOb25lOgogICAgICAgICAgICBpZiBjb2RlID09IGIiIjoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBpY2tsZSBleGhhdXN0ZWQgYmVmb3JlIHNlZWluZyBTVE9QIikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImF0IHBvc2l0aW9uICVzLCBvcGNvZGUgJXIgdW5rbm93biIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dW5rbm93bj4iIGlmIHBvcyBpcyBOb25lIGVsc2UgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlKSkKICAgICAgICBpZiBvcGNvZGUuYXJnIGlzIE5vbmU6CiAgICAgICAgICAgIGFyZyA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBhcmcgPSBvcGNvZGUuYXJnLnJlYWRlcihkYXRhKQogICAgICAgIGlmIHlpZWxkX2VuZF9wb3M6CiAgICAgICAgICAgIHlpZWxkIG9wY29kZSwgYXJnLCBwb3MsIGdldHBvcygpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgeWllbGQgb3Bjb2RlLCBhcmcsIHBvcwogICAgICAgIGlmIGNvZGUgPT0gYicuJzoKICAgICAgICAgICAgYXNzZXJ0IG9wY29kZS5uYW1lID09ICdTVE9QJwogICAgICAgICAgICBicmVhawoKZGVmIGdlbm9wcyhwaWNrbGUpOgogICAgIiIiR2VuZXJhdGUgYWxsIHRoZSBvcGNvZGVzIGluIGEgcGlja2xlLgoKICAgICdwaWNrbGUnIGlzIGEgZmlsZS1saWtlIG9iamVjdCwgb3Igc3RyaW5nLCBjb250YWluaW5nIHRoZSBwaWNrbGUuCgogICAgRWFjaCBvcGNvZGUgaW4gdGhlIHBpY2tsZSBpcyBnZW5lcmF0ZWQsIGZyb20gdGhlIGN1cnJlbnQgcGlja2xlIHBvc2l0aW9uLAogICAgc3RvcHBpbmcgYWZ0ZXIgYSBTVE9QIG9wY29kZSBpcyBkZWxpdmVyZWQuICBBIHRyaXBsZSBpcyBnZW5lcmF0ZWQgZm9yCiAgICBlYWNoIG9wY29kZToKCiAgICAgICAgb3Bjb2RlLCBhcmcsIHBvcwoKICAgIG9wY29kZSBpcyBhbiBPcGNvZGVJbmZvIHJlY29yZCwgZGVzY3JpYmluZyB0aGUgY3VycmVudCBvcGNvZGUuCgogICAgSWYgdGhlIG9wY29kZSBoYXMgYW4gYXJndW1lbnQgZW1iZWRkZWQgaW4gdGhlIHBpY2tsZSwgYXJnIGlzIGl0cyBkZWNvZGVkCiAgICB2YWx1ZSwgYXMgYSBQeXRob24gb2JqZWN0LiAgSWYgdGhlIG9wY29kZSBkb2Vzbid0IGhhdmUgYW4gYXJndW1lbnQsIGFyZwogICAgaXMgTm9uZS4KCiAgICBJZiB0aGUgcGlja2xlIGhhcyBhIHRlbGwoKSBtZXRob2QsIHBvcyB3YXMgdGhlIHZhbHVlIG9mIHBpY2tsZS50ZWxsKCkKICAgIGJlZm9yZSByZWFkaW5nIHRoZSBjdXJyZW50IG9wY29kZS4gIElmIHRoZSBwaWNrbGUgaXMgYSBieXRlcyBvYmplY3QsCiAgICBpdCdzIHdyYXBwZWQgaW4gYSBCeXRlc0lPIG9iamVjdCwgYW5kIHRoZSBsYXR0ZXIncyB0ZWxsKCkgcmVzdWx0IGlzCiAgICB1c2VkLiAgRWxzZSAodGhlIHBpY2tsZSBkb2Vzbid0IGhhdmUgYSB0ZWxsKCksIGFuZCBpdCdzIG5vdCBvYnZpb3VzIGhvdwogICAgdG8gcXVlcnkgaXRzIGN1cnJlbnQgcG9zaXRpb24pIHBvcyBpcyBOb25lLgogICAgIiIiCiAgICByZXR1cm4gX2dlbm9wcyhwaWNrbGUpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBBIHBpY2tsZSBvcHRpbWl6ZXIuCgpkZWYgb3B0aW1pemUocCk6CiAgICAnT3B0aW1pemUgYSBwaWNrbGUgc3RyaW5nIGJ5IHJlbW92aW5nIHVudXNlZCBQVVQgb3Bjb2RlcycKICAgIHB1dCA9ICdQVVQnCiAgICBnZXQgPSAnR0VUJwogICAgb2xkaWRzID0gc2V0KCkgICAgICAgICAgIyBzZXQgb2YgYWxsIFBVVCBpZHMKICAgIG5ld2lkcyA9IHt9ICAgICAgICAgICAgICMgc2V0IG9mIGlkcyB1c2VkIGJ5IGEgR0VUIG9wY29kZQogICAgb3Bjb2RlcyA9IFtdICAgICAgICAgICAgIyAob3AsIGlkeCkgb3IgKHBvcywgZW5kX3BvcykKICAgIHByb3RvID0gMAogICAgcHJvdG9oZWFkZXIgPSBiJycKICAgIGZvciBvcGNvZGUsIGFyZywgcG9zLCBlbmRfcG9zIGluIF9nZW5vcHMocCwgeWllbGRfZW5kX3Bvcz1UcnVlKToKICAgICAgICBpZiAnUFVUJyBpbiBvcGNvZGUubmFtZToKICAgICAgICAgICAgb2xkaWRzLmFkZChhcmcpCiAgICAgICAgICAgIG9wY29kZXMuYXBwZW5kKChwdXQsIGFyZykpCiAgICAgICAgZWxpZiBvcGNvZGUubmFtZSA9PSAnTUVNT0laRSc6CiAgICAgICAgICAgIGlkeCA9IGxlbihvbGRpZHMpCiAgICAgICAgICAgIG9sZGlkcy5hZGQoaWR4KQogICAgICAgICAgICBvcGNvZGVzLmFwcGVuZCgocHV0LCBpZHgpKQogICAgICAgIGVsaWYgJ0ZSQU1FJyBpbiBvcGNvZGUubmFtZToKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsaWYgJ0dFVCcgaW4gb3Bjb2RlLm5hbWU6CiAgICAgICAgICAgIGlmIG9wY29kZS5wcm90byA+IHByb3RvOgogICAgICAgICAgICAgICAgcHJvdG8gPSBvcGNvZGUucHJvdG8KICAgICAgICAgICAgbmV3aWRzW2FyZ10gPSBOb25lCiAgICAgICAgICAgIG9wY29kZXMuYXBwZW5kKChnZXQsIGFyZykpCiAgICAgICAgZWxpZiBvcGNvZGUubmFtZSA9PSAnUFJPVE8nOgogICAgICAgICAgICBpZiBhcmcgPiBwcm90bzoKICAgICAgICAgICAgICAgIHByb3RvID0gYXJnCiAgICAgICAgICAgIGlmIHBvcyA9PSAwOgogICAgICAgICAgICAgICAgcHJvdG9oZWFkZXIgPSBwW3BvczplbmRfcG9zXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgb3Bjb2Rlcy5hcHBlbmQoKHBvcywgZW5kX3BvcykpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb3Bjb2Rlcy5hcHBlbmQoKHBvcywgZW5kX3BvcykpCiAgICBkZWwgb2xkaWRzCgogICAgIyBDb3B5IHRoZSBvcGNvZGVzIGV4Y2VwdCBmb3IgUFVUUyB3aXRob3V0IGEgY29ycmVzcG9uZGluZyBHRVQKICAgIG91dCA9IGlvLkJ5dGVzSU8oKQogICAgIyBXcml0ZSB0aGUgUFJPVE8gaGVhZGVyIGJlZm9yZSBhbnkgZnJhbWluZwogICAgb3V0LndyaXRlKHByb3RvaGVhZGVyKQogICAgcGlja2xlciA9IHBpY2tsZS5fUGlja2xlcihvdXQsIHByb3RvKQogICAgaWYgcHJvdG8gPj0gNDoKICAgICAgICBwaWNrbGVyLmZyYW1lci5zdGFydF9mcmFtaW5nKCkKICAgIGlkeCA9IDAKICAgIGZvciBvcCwgYXJnIGluIG9wY29kZXM6CiAgICAgICAgZnJhbWVsZXNzID0gRmFsc2UKICAgICAgICBpZiBvcCBpcyBwdXQ6CiAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gbmV3aWRzOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZGF0YSA9IHBpY2tsZXIucHV0KGlkeCkKICAgICAgICAgICAgbmV3aWRzW2FyZ10gPSBpZHgKICAgICAgICAgICAgaWR4ICs9IDEKICAgICAgICBlbGlmIG9wIGlzIGdldDoKICAgICAgICAgICAgZGF0YSA9IHBpY2tsZXIuZ2V0KG5ld2lkc1thcmddKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGEgPSBwW29wOmFyZ10KICAgICAgICAgICAgZnJhbWVsZXNzID0gbGVuKGRhdGEpID4gcGlja2xlci5mcmFtZXIuX0ZSQU1FX1NJWkVfVEFSR0VUCiAgICAgICAgcGlja2xlci5mcmFtZXIuY29tbWl0X2ZyYW1lKGZvcmNlPWZyYW1lbGVzcykKICAgICAgICBpZiBmcmFtZWxlc3M6CiAgICAgICAgICAgIHBpY2tsZXIuZnJhbWVyLmZpbGVfd3JpdGUoZGF0YSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwaWNrbGVyLndyaXRlKGRhdGEpCiAgICBwaWNrbGVyLmZyYW1lci5lbmRfZnJhbWluZygpCiAgICByZXR1cm4gb3V0LmdldHZhbHVlKCkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIEEgc3ltYm9saWMgcGlja2xlIGRpc2Fzc2VtYmxlci4KCmRlZiBkaXMocGlja2xlLCBvdXQ9Tm9uZSwgbWVtbz1Ob25lLCBpbmRlbnRsZXZlbD00LCBhbm5vdGF0ZT0wKToKICAgICIiIlByb2R1Y2UgYSBzeW1ib2xpYyBkaXNhc3NlbWJseSBvZiBhIHBpY2tsZS4KCiAgICAncGlja2xlJyBpcyBhIGZpbGUtbGlrZSBvYmplY3QsIG9yIHN0cmluZywgY29udGFpbmluZyBhIChhdCBsZWFzdCBvbmUpCiAgICBwaWNrbGUuICBUaGUgcGlja2xlIGlzIGRpc2Fzc2VtYmxlZCBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uLCB0aHJvdWdoCiAgICB0aGUgZmlyc3QgU1RPUCBvcGNvZGUgZW5jb3VudGVyZWQuCgogICAgT3B0aW9uYWwgYXJnICdvdXQnIGlzIGEgZmlsZS1saWtlIG9iamVjdCB0byB3aGljaCB0aGUgZGlzYXNzZW1ibHkgaXMKICAgIHByaW50ZWQuICBJdCBkZWZhdWx0cyB0byBzeXMuc3Rkb3V0LgoKICAgIE9wdGlvbmFsIGFyZyAnbWVtbycgaXMgYSBQeXRob24gZGljdCwgdXNlZCBhcyB0aGUgcGlja2xlJ3MgbWVtby4gIEl0CiAgICBtYXkgYmUgbXV0YXRlZCBieSBkaXMoKSwgaWYgdGhlIHBpY2tsZSBjb250YWlucyBQVVQgb3IgQklOUFVUIG9wY29kZXMuCiAgICBQYXNzaW5nIHRoZSBzYW1lIG1lbW8gb2JqZWN0IHRvIGFub3RoZXIgZGlzKCkgY2FsbCB0aGVuIGFsbG93cyBkaXNhc3NlbWJseQogICAgdG8gcHJvY2VlZCBhY3Jvc3MgbXVsdGlwbGUgcGlja2xlcyB0aGF0IHdlcmUgYWxsIGNyZWF0ZWQgYnkgdGhlIHNhbWUKICAgIHBpY2tsZXIgd2l0aCB0aGUgc2FtZSBtZW1vLiAgT3JkaW5hcmlseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGlzLgoKICAgIE9wdGlvbmFsIGFyZyAnaW5kZW50bGV2ZWwnIGlzIHRoZSBudW1iZXIgb2YgYmxhbmtzIGJ5IHdoaWNoIHRvIGluZGVudAogICAgYSBuZXcgTUFSSyBsZXZlbC4gIEl0IGRlZmF1bHRzIHRvIDQuCgogICAgT3B0aW9uYWwgYXJnICdhbm5vdGF0ZScgaWYgbm9uemVybyBpbnN0cnVjdHMgZGlzKCkgdG8gYWRkIHNob3J0CiAgICBkZXNjcmlwdGlvbiBvZiB0aGUgb3Bjb2RlIG9uIGVhY2ggbGluZSBvZiBkaXNhc3NlbWJsZWQgb3V0cHV0LgogICAgVGhlIHZhbHVlIGdpdmVuIHRvICdhbm5vdGF0ZScgbXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCBpcyB1c2VkIGFzIGEKICAgIGhpbnQgZm9yIHRoZSBjb2x1bW4gd2hlcmUgYW5ub3RhdGlvbiBzaG91bGQgc3RhcnQuICBUaGUgZGVmYXVsdAogICAgdmFsdWUgaXMgMCwgbWVhbmluZyBubyBhbm5vdGF0aW9ucy4KCiAgICBJbiBhZGRpdGlvbiB0byBwcmludGluZyB0aGUgZGlzYXNzZW1ibHksIHNvbWUgc2FuaXR5IGNoZWNrcyBhcmUgbWFkZToKCiAgICArIEFsbCBlbWJlZGRlZCBvcGNvZGUgYXJndW1lbnRzICJtYWtlIHNlbnNlIi4KCiAgICArIEV4cGxpY2l0IGFuZCBpbXBsaWNpdCBwb3Agb3BlcmF0aW9ucyBoYXZlIGVub3VnaCBpdGVtcyBvbiB0aGUgc3RhY2suCgogICAgKyBXaGVuIGFuIG9wY29kZSBpbXBsaWNpdGx5IHJlZmVycyB0byBhIG1hcmtvYmplY3QsIGEgbWFya29iamVjdCBpcwogICAgICBhY3R1YWxseSBvbiB0aGUgc3RhY2suCgogICAgKyBBIG1lbW8gZW50cnkgaXNuJ3QgcmVmZXJlbmNlZCBiZWZvcmUgaXQncyBkZWZpbmVkLgoKICAgICsgVGhlIG1hcmtvYmplY3QgaXNuJ3Qgc3RvcmVkIGluIHRoZSBtZW1vLgoKICAgICsgQSBtZW1vIGVudHJ5IGlzbid0IHJlZGVmaW5lZC4KICAgICIiIgoKICAgICMgTW9zdCBvZiB0aGUgaGFpciBoZXJlIGlzIGZvciBzYW5pdHkgY2hlY2tzLCBidXQgbW9zdCBvZiBpdCBpcyBuZWVkZWQKICAgICMgYW55d2F5IHRvIGRldGVjdCB3aGVuIGEgcHJvdG9jb2wgMCBQT1AgdGFrZXMgYSBNQVJLIG9mZiB0aGUgc3RhY2sKICAgICMgKHdoaWNoIGluIHR1cm4gaXMgbmVlZGVkIHRvIGluZGVudCBNQVJLIGJsb2NrcyBjb3JyZWN0bHkpLgoKICAgIHN0YWNrID0gW10gICAgICAgICAgIyBjcnVkZSBlbXVsYXRpb24gb2YgdW5waWNrbGVyIHN0YWNrCiAgICBpZiBtZW1vIGlzIE5vbmU6CiAgICAgICAgbWVtbyA9IHt9ICAgICAgICMgY3J1ZGUgZW11bGF0aW9uIG9mIHVucGlja2xlciBtZW1vCiAgICBtYXhwcm90byA9IC0xICAgICAgICMgbWF4IHByb3RvY29sIG51bWJlciBzZWVuCiAgICBtYXJrc3RhY2sgPSBbXSAgICAgICMgYnl0ZWNvZGUgcG9zaXRpb25zIG9mIE1BUksgb3Bjb2RlcwogICAgaW5kZW50Y2h1bmsgPSAnICcgKiBpbmRlbnRsZXZlbAogICAgZXJyb3Jtc2cgPSBOb25lCiAgICBhbm5vY29sID0gYW5ub3RhdGUgICMgY29sdW1uIGhpbnQgZm9yIGFubm90YXRpb25zCiAgICBmb3Igb3Bjb2RlLCBhcmcsIHBvcyBpbiBnZW5vcHMocGlja2xlKToKICAgICAgICBpZiBwb3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHByaW50KCIlNWQ6IiAlIHBvcywgZW5kPScgJywgZmlsZT1vdXQpCgogICAgICAgIGxpbmUgPSAiJS00cyAlcyVzIiAlIChyZXByKG9wY29kZS5jb2RlKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50Y2h1bmsgKiBsZW4obWFya3N0YWNrKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlLm5hbWUpCgogICAgICAgIG1heHByb3RvID0gbWF4KG1heHByb3RvLCBvcGNvZGUucHJvdG8pCiAgICAgICAgYmVmb3JlID0gb3Bjb2RlLnN0YWNrX2JlZm9yZSAgICAjIGRvbid0IG11dGF0ZQogICAgICAgIGFmdGVyID0gb3Bjb2RlLnN0YWNrX2FmdGVyICAgICAgIyBkb24ndCBtdXRhdGUKICAgICAgICBudW10b3BvcCA9IGxlbihiZWZvcmUpCgogICAgICAgICMgU2VlIHdoZXRoZXIgYSBNQVJLIHNob3VsZCBiZSBwb3BwZWQuCiAgICAgICAgbWFya21zZyA9IE5vbmUKICAgICAgICBpZiBtYXJrb2JqZWN0IGluIGJlZm9yZSBvciAob3Bjb2RlLm5hbWUgPT0gIlBPUCIgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja1stMV0gaXMgbWFya29iamVjdCk6CiAgICAgICAgICAgIGFzc2VydCBtYXJrb2JqZWN0IG5vdCBpbiBhZnRlcgogICAgICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgICAgICBpZiBtYXJrb2JqZWN0IGluIGJlZm9yZToKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYmVmb3JlWy0xXSBpcyBzdGFja3NsaWNlCiAgICAgICAgICAgIGlmIG1hcmtzdGFjazoKICAgICAgICAgICAgICAgIG1hcmtwb3MgPSBtYXJrc3RhY2sucG9wKCkKICAgICAgICAgICAgICAgIGlmIG1hcmtwb3MgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBtYXJrbXNnID0gIihNQVJLIGF0IHVua25vd24gb3Bjb2RlIG9mZnNldCkiCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG1hcmttc2cgPSAiKE1BUksgYXQgJWQpIiAlIG1hcmtwb3MKICAgICAgICAgICAgICAgICMgUG9wIGV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHRoZSB0b3Btb3N0IG1hcmtvYmplY3QuCiAgICAgICAgICAgICAgICB3aGlsZSBzdGFja1stMV0gaXMgbm90IG1hcmtvYmplY3Q6CiAgICAgICAgICAgICAgICAgICAgc3RhY2sucG9wKCkKICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpCiAgICAgICAgICAgICAgICAjIFN0b3AgbGF0ZXIgY29kZSBmcm9tIHBvcHBpbmcgdG9vIG11Y2guCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgbnVtdG9wb3AgPSBiZWZvcmUuaW5kZXgobWFya29iamVjdCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIGFzc2VydCBvcGNvZGUubmFtZSA9PSAiUE9QIgogICAgICAgICAgICAgICAgICAgIG51bXRvcG9wID0gMAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZXJyb3Jtc2cgPSBtYXJrbXNnID0gIm5vIE1BUksgZXhpc3RzIG9uIHN0YWNrIgoKICAgICAgICAjIENoZWNrIGZvciBjb3JyZWN0IG1lbW8gdXNhZ2UuCiAgICAgICAgaWYgb3Bjb2RlLm5hbWUgaW4gKCJQVVQiLCAiQklOUFVUIiwgIkxPTkdfQklOUFVUIiwgIk1FTU9JWkUiKToKICAgICAgICAgICAgaWYgb3Bjb2RlLm5hbWUgPT0gIk1FTU9JWkUiOgogICAgICAgICAgICAgICAgbWVtb19pZHggPSBsZW4obWVtbykKICAgICAgICAgICAgICAgIG1hcmttc2cgPSAiKGFzICVkKSIgJSBtZW1vX2lkeAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXNzZXJ0IGFyZyBpcyBub3QgTm9uZQogICAgICAgICAgICAgICAgbWVtb19pZHggPSBhcmcKICAgICAgICAgICAgaWYgbWVtb19pZHggaW4gbWVtbzoKICAgICAgICAgICAgICAgIGVycm9ybXNnID0gIm1lbW8ga2V5ICVyIGFscmVhZHkgZGVmaW5lZCIgJSBhcmcKICAgICAgICAgICAgZWxpZiBub3Qgc3RhY2s6CiAgICAgICAgICAgICAgICBlcnJvcm1zZyA9ICJzdGFjayBpcyBlbXB0eSAtLSBjYW4ndCBzdG9yZSBpbnRvIG1lbW8iCiAgICAgICAgICAgIGVsaWYgc3RhY2tbLTFdIGlzIG1hcmtvYmplY3Q6CiAgICAgICAgICAgICAgICBlcnJvcm1zZyA9ICJjYW4ndCBzdG9yZSBtYXJrb2JqZWN0IGluIHRoZSBtZW1vIgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbWVtb1ttZW1vX2lkeF0gPSBzdGFja1stMV0KICAgICAgICBlbGlmIG9wY29kZS5uYW1lIGluICgiR0VUIiwgIkJJTkdFVCIsICJMT05HX0JJTkdFVCIpOgogICAgICAgICAgICBpZiBhcmcgaW4gbWVtbzoKICAgICAgICAgICAgICAgIGFzc2VydCBsZW4oYWZ0ZXIpID09IDEKICAgICAgICAgICAgICAgIGFmdGVyID0gW21lbW9bYXJnXV0gICAgICMgZm9yIGJldHRlciBzdGFjayBlbXVsYXRpb24KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVycm9ybXNnID0gIm1lbW8ga2V5ICVyIGhhcyBuZXZlciBiZWVuIHN0b3JlZCBpbnRvIiAlIGFyZwoKICAgICAgICBpZiBhcmcgaXMgbm90IE5vbmUgb3IgbWFya21zZzoKICAgICAgICAgICAgIyBtYWtlIGEgbWlsZCBlZmZvcnQgdG8gYWxpZ24gYXJndW1lbnRzCiAgICAgICAgICAgIGxpbmUgKz0gJyAnICogKDEwIC0gbGVuKG9wY29kZS5uYW1lKSkKICAgICAgICAgICAgaWYgYXJnIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgbGluZSArPSAnICcgKyByZXByKGFyZykKICAgICAgICAgICAgaWYgbWFya21zZzoKICAgICAgICAgICAgICAgIGxpbmUgKz0gJyAnICsgbWFya21zZwogICAgICAgIGlmIGFubm90YXRlOgogICAgICAgICAgICBsaW5lICs9ICcgJyAqIChhbm5vY29sIC0gbGVuKGxpbmUpKQogICAgICAgICAgICAjIG1ha2UgYSBtaWxkIGVmZm9ydCB0byBhbGlnbiBhbm5vdGF0aW9ucwogICAgICAgICAgICBhbm5vY29sID0gbGVuKGxpbmUpCiAgICAgICAgICAgIGlmIGFubm9jb2wgPiA1MDoKICAgICAgICAgICAgICAgIGFubm9jb2wgPSBhbm5vdGF0ZQogICAgICAgICAgICBsaW5lICs9ICcgJyArIG9wY29kZS5kb2Muc3BsaXQoJ1xuJywgMSlbMF0KICAgICAgICBwcmludChsaW5lLCBmaWxlPW91dCkKCiAgICAgICAgaWYgZXJyb3Jtc2c6CiAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGRlbGF5ZWQgY29tcGxhaW5pbmcgdW50aWwgdGhlIG9mZmVuZGluZyBvcGNvZGUKICAgICAgICAgICAgIyB3YXMgcHJpbnRlZC4KICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJvcm1zZykKCiAgICAgICAgIyBFbXVsYXRlIHRoZSBzdGFjayBlZmZlY3RzLgogICAgICAgIGlmIGxlbihzdGFjaykgPCBudW10b3BvcDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidHJpZXMgdG8gcG9wICVkIGl0ZW1zIGZyb20gc3RhY2sgd2l0aCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgJWQgaXRlbXMiICUgKG51bXRvcG9wLCBsZW4oc3RhY2spKSkKICAgICAgICBpZiBudW10b3BvcDoKICAgICAgICAgICAgZGVsIHN0YWNrWy1udW10b3BvcDpdCiAgICAgICAgaWYgbWFya29iamVjdCBpbiBhZnRlcjoKICAgICAgICAgICAgYXNzZXJ0IG1hcmtvYmplY3Qgbm90IGluIGJlZm9yZQogICAgICAgICAgICBtYXJrc3RhY2suYXBwZW5kKHBvcykKCiAgICAgICAgc3RhY2suZXh0ZW5kKGFmdGVyKQoKICAgIHByaW50KCJoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSIsIG1heHByb3RvLCBmaWxlPW91dCkKICAgIGlmIHN0YWNrOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInN0YWNrIG5vdCBlbXB0eSBhZnRlciBTVE9QOiAlciIgJSBzdGFjaykKCiMgRm9yIHVzZSBpbiB0aGUgZG9jdGVzdCwgc2ltcGx5IGFzIGFuIGV4YW1wbGUgb2YgYSBjbGFzcyB0byBwaWNrbGUuCmNsYXNzIF9FeGFtcGxlOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKCl9kaXNfdGVzdCA9IHIiIiIKPj4+IGltcG9ydCBwaWNrbGUKPj4+IHggPSBbMSwgMiwgKDMsIDQpLCB7YidhYmMnOiAiZGVmIn1dCj4+PiBwa2wwID0gcGlja2xlLmR1bXBzKHgsIDApCj4+PiBkaXMocGtsMCkKICAgIDA6ICggICAgTUFSSwogICAgMTogbCAgICAgICAgTElTVCAgICAgICAoTUFSSyBhdCAwKQogICAgMjogcCAgICBQVVQgICAgICAgIDAKICAgIDU6IEkgICAgSU5UICAgICAgICAxCiAgICA4OiBhICAgIEFQUEVORAogICAgOTogSSAgICBJTlQgICAgICAgIDIKICAgMTI6IGEgICAgQVBQRU5ECiAgIDEzOiAoICAgIE1BUksKICAgMTQ6IEkgICAgICAgIElOVCAgICAgICAgMwogICAxNzogSSAgICAgICAgSU5UICAgICAgICA0CiAgIDIwOiB0ICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDEzKQogICAyMTogcCAgICBQVVQgICAgICAgIDEKICAgMjQ6IGEgICAgQVBQRU5ECiAgIDI1OiAoICAgIE1BUksKICAgMjY6IGQgICAgICAgIERJQ1QgICAgICAgKE1BUksgYXQgMjUpCiAgIDI3OiBwICAgIFBVVCAgICAgICAgMgogICAzMDogYyAgICBHTE9CQUwgICAgICdfY29kZWNzIGVuY29kZScKICAgNDY6IHAgICAgUFVUICAgICAgICAzCiAgIDQ5OiAoICAgIE1BUksKICAgNTA6IFYgICAgICAgIFVOSUNPREUgICAgJ2FiYycKICAgNTU6IHAgICAgICAgIFBVVCAgICAgICAgNAogICA1ODogViAgICAgICAgVU5JQ09ERSAgICAnbGF0aW4xJwogICA2NjogcCAgICAgICAgUFVUICAgICAgICA1CiAgIDY5OiB0ICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDQ5KQogICA3MDogcCAgICBQVVQgICAgICAgIDYKICAgNzM6IFIgICAgUkVEVUNFCiAgIDc0OiBwICAgIFBVVCAgICAgICAgNwogICA3NzogViAgICBVTklDT0RFICAgICdkZWYnCiAgIDgyOiBwICAgIFBVVCAgICAgICAgOAogICA4NTogcyAgICBTRVRJVEVNCiAgIDg2OiBhICAgIEFQUEVORAogICA4NzogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKClRyeSBhZ2FpbiB3aXRoIGEgImJpbmFyeSIgcGlja2xlLgoKPj4+IHBrbDEgPSBwaWNrbGUuZHVtcHMoeCwgMSkKPj4+IGRpcyhwa2wxKQogICAgMDogXSAgICBFTVBUWV9MSVNUCiAgICAxOiBxICAgIEJJTlBVVCAgICAgMAogICAgMzogKCAgICBNQVJLCiAgICA0OiBLICAgICAgICBCSU5JTlQxICAgIDEKICAgIDY6IEsgICAgICAgIEJJTklOVDEgICAgMgogICAgODogKCAgICAgICAgTUFSSwogICAgOTogSyAgICAgICAgICAgIEJJTklOVDEgICAgMwogICAxMTogSyAgICAgICAgICAgIEJJTklOVDEgICAgNAogICAxMzogdCAgICAgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgOCkKICAgMTQ6IHEgICAgICAgIEJJTlBVVCAgICAgMQogICAxNjogfSAgICAgICAgRU1QVFlfRElDVAogICAxNzogcSAgICAgICAgQklOUFVUICAgICAyCiAgIDE5OiBjICAgICAgICBHTE9CQUwgICAgICdfY29kZWNzIGVuY29kZScKICAgMzU6IHEgICAgICAgIEJJTlBVVCAgICAgMwogICAzNzogKCAgICAgICAgTUFSSwogICAzODogWCAgICAgICAgICAgIEJJTlVOSUNPREUgJ2FiYycKICAgNDY6IHEgICAgICAgICAgICBCSU5QVVQgICAgIDQKICAgNDg6IFggICAgICAgICAgICBCSU5VTklDT0RFICdsYXRpbjEnCiAgIDU5OiBxICAgICAgICAgICAgQklOUFVUICAgICA1CiAgIDYxOiB0ICAgICAgICAgICAgVFVQTEUgICAgICAoTUFSSyBhdCAzNykKICAgNjI6IHEgICAgICAgIEJJTlBVVCAgICAgNgogICA2NDogUiAgICAgICAgUkVEVUNFCiAgIDY1OiBxICAgICAgICBCSU5QVVQgICAgIDcKICAgNjc6IFggICAgICAgIEJJTlVOSUNPREUgJ2RlZicKICAgNzU6IHEgICAgICAgIEJJTlBVVCAgICAgOAogICA3NzogcyAgICAgICAgU0VUSVRFTQogICA3ODogZSAgICAgICAgQVBQRU5EUyAgICAoTUFSSyBhdCAzKQogICA3OTogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDEKCkV4ZXJjaXNlIHRoZSBJTlNUL09CSi9CVUlMRCBmYW1pbHkuCgo+Pj4gaW1wb3J0IHBpY2tsZXRvb2xzCj4+PiBkaXMocGlja2xlLmR1bXBzKHBpY2tsZXRvb2xzLmRpcywgMCkpCiAgICAwOiBjICAgIEdMT0JBTCAgICAgJ3BpY2tsZXRvb2xzIGRpcycKICAgMTc6IHAgICAgUFVUICAgICAgICAwCiAgIDIwOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMAoKPj4+IGZyb20gcGlja2xldG9vbHMgaW1wb3J0IF9FeGFtcGxlCj4+PiB4ID0gW19FeGFtcGxlKDQyKV0gKiAyCj4+PiBkaXMocGlja2xlLmR1bXBzKHgsIDApKQogICAgMDogKCAgICBNQVJLCiAgICAxOiBsICAgICAgICBMSVNUICAgICAgIChNQVJLIGF0IDApCiAgICAyOiBwICAgIFBVVCAgICAgICAgMAogICAgNTogYyAgICBHTE9CQUwgICAgICdjb3B5X3JlZyBfcmVjb25zdHJ1Y3RvcicKICAgMzA6IHAgICAgUFVUICAgICAgICAxCiAgIDMzOiAoICAgIE1BUksKICAgMzQ6IGMgICAgICAgIEdMT0JBTCAgICAgJ3BpY2tsZXRvb2xzIF9FeGFtcGxlJwogICA1NjogcCAgICAgICAgUFVUICAgICAgICAyCiAgIDU5OiBjICAgICAgICBHTE9CQUwgICAgICdfX2J1aWx0aW5fXyBvYmplY3QnCiAgIDc5OiBwICAgICAgICBQVVQgICAgICAgIDMKICAgODI6IE4gICAgICAgIE5PTkUKICAgODM6IHQgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgMzMpCiAgIDg0OiBwICAgIFBVVCAgICAgICAgNAogICA4NzogUiAgICBSRURVQ0UKICAgODg6IHAgICAgUFVUICAgICAgICA1CiAgIDkxOiAoICAgIE1BUksKICAgOTI6IGQgICAgICAgIERJQ1QgICAgICAgKE1BUksgYXQgOTEpCiAgIDkzOiBwICAgIFBVVCAgICAgICAgNgogICA5NjogViAgICBVTklDT0RFICAgICd2YWx1ZScKICAxMDM6IHAgICAgUFVUICAgICAgICA3CiAgMTA2OiBJICAgIElOVCAgICAgICAgNDIKICAxMTA6IHMgICAgU0VUSVRFTQogIDExMTogYiAgICBCVUlMRAogIDExMjogYSAgICBBUFBFTkQKICAxMTM6IGcgICAgR0VUICAgICAgICA1CiAgMTE2OiBhICAgIEFQUEVORAogIDExNzogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKCj4+PiBkaXMocGlja2xlLmR1bXBzKHgsIDEpKQogICAgMDogXSAgICBFTVBUWV9MSVNUCiAgICAxOiBxICAgIEJJTlBVVCAgICAgMAogICAgMzogKCAgICBNQVJLCiAgICA0OiBjICAgICAgICBHTE9CQUwgICAgICdjb3B5X3JlZyBfcmVjb25zdHJ1Y3RvcicKICAgMjk6IHEgICAgICAgIEJJTlBVVCAgICAgMQogICAzMTogKCAgICAgICAgTUFSSwogICAzMjogYyAgICAgICAgICAgIEdMT0JBTCAgICAgJ3BpY2tsZXRvb2xzIF9FeGFtcGxlJwogICA1NDogcSAgICAgICAgICAgIEJJTlBVVCAgICAgMgogICA1NjogYyAgICAgICAgICAgIEdMT0JBTCAgICAgJ19fYnVpbHRpbl9fIG9iamVjdCcKICAgNzY6IHEgICAgICAgICAgICBCSU5QVVQgICAgIDMKICAgNzg6IE4gICAgICAgICAgICBOT05FCiAgIDc5OiB0ICAgICAgICAgICAgVFVQTEUgICAgICAoTUFSSyBhdCAzMSkKICAgODA6IHEgICAgICAgIEJJTlBVVCAgICAgNAogICA4MjogUiAgICAgICAgUkVEVUNFCiAgIDgzOiBxICAgICAgICBCSU5QVVQgICAgIDUKICAgODU6IH0gICAgICAgIEVNUFRZX0RJQ1QKICAgODY6IHEgICAgICAgIEJJTlBVVCAgICAgNgogICA4ODogWCAgICAgICAgQklOVU5JQ09ERSAndmFsdWUnCiAgIDk4OiBxICAgICAgICBCSU5QVVQgICAgIDcKICAxMDA6IEsgICAgICAgIEJJTklOVDEgICAgNDIKICAxMDI6IHMgICAgICAgIFNFVElURU0KICAxMDM6IGIgICAgICAgIEJVSUxECiAgMTA0OiBoICAgICAgICBCSU5HRVQgICAgIDUKICAxMDY6IGUgICAgICAgIEFQUEVORFMgICAgKE1BUksgYXQgMykKICAxMDc6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAxCgpUcnkgInRoZSBjYW5vbmljYWwiIHJlY3Vyc2l2ZS1vYmplY3QgdGVzdC4KCj4+PiBMID0gW10KPj4+IFQgPSBMLAo+Pj4gTC5hcHBlbmQoVCkKPj4+IExbMF0gaXMgVApUcnVlCj4+PiBUWzBdIGlzIEwKVHJ1ZQo+Pj4gTFswXVswXSBpcyBMClRydWUKPj4+IFRbMF1bMF0gaXMgVApUcnVlCj4+PiBkaXMocGlja2xlLmR1bXBzKEwsIDApKQogICAgMDogKCAgICBNQVJLCiAgICAxOiBsICAgICAgICBMSVNUICAgICAgIChNQVJLIGF0IDApCiAgICAyOiBwICAgIFBVVCAgICAgICAgMAogICAgNTogKCAgICBNQVJLCiAgICA2OiBnICAgICAgICBHRVQgICAgICAgIDAKICAgIDk6IHQgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgNSkKICAgMTA6IHAgICAgUFVUICAgICAgICAxCiAgIDEzOiBhICAgIEFQUEVORAogICAxNDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKCj4+PiBkaXMocGlja2xlLmR1bXBzKEwsIDEpKQogICAgMDogXSAgICBFTVBUWV9MSVNUCiAgICAxOiBxICAgIEJJTlBVVCAgICAgMAogICAgMzogKCAgICBNQVJLCiAgICA0OiBoICAgICAgICBCSU5HRVQgICAgIDAKICAgIDY6IHQgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgMykKICAgIDc6IHEgICAgQklOUFVUICAgICAxCiAgICA5OiBhICAgIEFQUEVORAogICAxMDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDEKCk5vdGUgdGhhdCwgaW4gdGhlIHByb3RvY29sIDAgcGlja2xlIG9mIHRoZSByZWN1cnNpdmUgdHVwbGUsIHRoZSBkaXNhc3NlbWJsZXIKaGFzIHRvIGVtdWxhdGUgdGhlIHN0YWNrIGluIG9yZGVyIHRvIHJlYWxpemUgdGhhdCB0aGUgUE9QIG9wY29kZSBhdCAxNiBnZXRzCnJpZCBvZiB0aGUgTUFSSyBhdCAwLgoKPj4+IGRpcyhwaWNrbGUuZHVtcHMoVCwgMCkpCiAgICAwOiAoICAgIE1BUksKICAgIDE6ICggICAgICAgIE1BUksKICAgIDI6IGwgICAgICAgICAgICBMSVNUICAgICAgIChNQVJLIGF0IDEpCiAgICAzOiBwICAgICAgICBQVVQgICAgICAgIDAKICAgIDY6ICggICAgICAgIE1BUksKICAgIDc6IGcgICAgICAgICAgICBHRVQgICAgICAgIDAKICAgMTA6IHQgICAgICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDYpCiAgIDExOiBwICAgICAgICBQVVQgICAgICAgIDEKICAgMTQ6IGEgICAgICAgIEFQUEVORAogICAxNTogMCAgICAgICAgUE9QCiAgIDE2OiAwICAgICAgICBQT1AgICAgICAgIChNQVJLIGF0IDApCiAgIDE3OiBnICAgIEdFVCAgICAgICAgMQogICAyMDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDAKCj4+PiBkaXMocGlja2xlLmR1bXBzKFQsIDEpKQogICAgMDogKCAgICBNQVJLCiAgICAxOiBdICAgICAgICBFTVBUWV9MSVNUCiAgICAyOiBxICAgICAgICBCSU5QVVQgICAgIDAKICAgIDQ6ICggICAgICAgIE1BUksKICAgIDU6IGggICAgICAgICAgICBCSU5HRVQgICAgIDAKICAgIDc6IHQgICAgICAgICAgICBUVVBMRSAgICAgIChNQVJLIGF0IDQpCiAgICA4OiBxICAgICAgICBCSU5QVVQgICAgIDEKICAgMTA6IGEgICAgICAgIEFQUEVORAogICAxMTogMSAgICAgICAgUE9QX01BUksgICAoTUFSSyBhdCAwKQogICAxMjogaCAgICBCSU5HRVQgICAgIDEKICAgMTQ6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAxCgpUcnkgcHJvdG9jb2wgMi4KCj4+PiBkaXMocGlja2xlLmR1bXBzKEwsIDIpKQogICAgMDogXHg4MCBQUk9UTyAgICAgIDIKICAgIDI6IF0gICAgRU1QVFlfTElTVAogICAgMzogcSAgICBCSU5QVVQgICAgIDAKICAgIDU6IGggICAgQklOR0VUICAgICAwCiAgICA3OiBceDg1IFRVUExFMQogICAgODogcSAgICBCSU5QVVQgICAgIDEKICAgMTA6IGEgICAgQVBQRU5ECiAgIDExOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMgoKPj4+IGRpcyhwaWNrbGUuZHVtcHMoVCwgMikpCiAgICAwOiBceDgwIFBST1RPICAgICAgMgogICAgMjogXSAgICBFTVBUWV9MSVNUCiAgICAzOiBxICAgIEJJTlBVVCAgICAgMAogICAgNTogaCAgICBCSU5HRVQgICAgIDAKICAgIDc6IFx4ODUgVFVQTEUxCiAgICA4OiBxICAgIEJJTlBVVCAgICAgMQogICAxMDogYSAgICBBUFBFTkQKICAgMTE6IDAgICAgUE9QCiAgIDEyOiBoICAgIEJJTkdFVCAgICAgMQogICAxNDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDIKClRyeSBwcm90b2NvbCAzIHdpdGggYW5ub3RhdGlvbnM6Cgo+Pj4gZGlzKHBpY2tsZS5kdW1wcyhULCAzKSwgYW5ub3RhdGU9MSkKICAgIDA6IFx4ODAgUFJPVE8gICAgICAzIFByb3RvY29sIHZlcnNpb24gaW5kaWNhdG9yLgogICAgMjogXSAgICBFTVBUWV9MSVNUICAgUHVzaCBhbiBlbXB0eSBsaXN0LgogICAgMzogcSAgICBCSU5QVVQgICAgIDAgU3RvcmUgdGhlIHN0YWNrIHRvcCBpbnRvIHRoZSBtZW1vLiAgVGhlIHN0YWNrIGlzIG5vdCBwb3BwZWQuCiAgICA1OiBoICAgIEJJTkdFVCAgICAgMCBSZWFkIGFuIG9iamVjdCBmcm9tIHRoZSBtZW1vIGFuZCBwdXNoIGl0IG9uIHRoZSBzdGFjay4KICAgIDc6IFx4ODUgVFVQTEUxICAgICAgIEJ1aWxkIGEgb25lLXR1cGxlIG91dCBvZiB0aGUgdG9wbW9zdCBpdGVtIG9uIHRoZSBzdGFjay4KICAgIDg6IHEgICAgQklOUFVUICAgICAxIFN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgogICAxMDogYSAgICBBUFBFTkQgICAgICAgQXBwZW5kIGFuIG9iamVjdCB0byBhIGxpc3QuCiAgIDExOiAwICAgIFBPUCAgICAgICAgICBEaXNjYXJkIHRoZSB0b3Agc3RhY2sgaXRlbSwgc2hyaW5raW5nIHRoZSBzdGFjayBieSBvbmUgaXRlbS4KICAgMTI6IGggICAgQklOR0VUICAgICAxIFJlYWQgYW4gb2JqZWN0IGZyb20gdGhlIG1lbW8gYW5kIHB1c2ggaXQgb24gdGhlIHN0YWNrLgogICAxNDogLiAgICBTVE9QICAgICAgICAgU3RvcCB0aGUgdW5waWNrbGluZyBtYWNoaW5lLgpoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAyCgoiIiIKCl9tZW1vX3Rlc3QgPSByIiIiCj4+PiBpbXBvcnQgcGlja2xlCj4+PiBpbXBvcnQgaW8KPj4+IGYgPSBpby5CeXRlc0lPKCkKPj4+IHAgPSBwaWNrbGUuUGlja2xlcihmLCAyKQo+Pj4geCA9IFsxLCAyLCAzXQo+Pj4gcC5kdW1wKHgpCj4+PiBwLmR1bXAoeCkKPj4+IGYuc2VlaygwKQowCj4+PiBtZW1vID0ge30KPj4+IGRpcyhmLCBtZW1vPW1lbW8pCiAgICAwOiBceDgwIFBST1RPICAgICAgMgogICAgMjogXSAgICBFTVBUWV9MSVNUCiAgICAzOiBxICAgIEJJTlBVVCAgICAgMAogICAgNTogKCAgICBNQVJLCiAgICA2OiBLICAgICAgICBCSU5JTlQxICAgIDEKICAgIDg6IEsgICAgICAgIEJJTklOVDEgICAgMgogICAxMDogSyAgICAgICAgQklOSU5UMSAgICAzCiAgIDEyOiBlICAgICAgICBBUFBFTkRTICAgIChNQVJLIGF0IDUpCiAgIDEzOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMgo+Pj4gZGlzKGYsIG1lbW89bWVtbykKICAgMTQ6IFx4ODAgUFJPVE8gICAgICAyCiAgIDE2OiBoICAgIEJJTkdFVCAgICAgMAogICAxODogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDIKIiIiCgpfX3Rlc3RfXyA9IHsnZGlzYXNzZW1ibGVyX3Rlc3QnOiBfZGlzX3Rlc3QsCiAgICAgICAgICAgICdkaXNhc3NlbWJsZXJfbWVtb190ZXN0JzogX21lbW9fdGVzdCwKICAgICAgICAgICB9CgpkZWYgX3Rlc3QoKToKICAgIGltcG9ydCBkb2N0ZXN0CiAgICByZXR1cm4gZG9jdGVzdC50ZXN0bW9kKCkKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBpbXBvcnQgYXJncGFyc2UKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAogICAgICAgIGRlc2NyaXB0aW9uPSdkaXNhc3NlbWJsZSBvbmUgb3IgbW9yZSBwaWNrbGUgZmlsZXMnKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAncGlja2xlX2ZpbGUnLCB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCdicicpLAogICAgICAgIG5hcmdzPScqJywgaGVscD0ndGhlIHBpY2tsZSBmaWxlJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgJy1vJywgJy0tb3V0cHV0JywgZGVmYXVsdD1zeXMuc3Rkb3V0LCB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCd3JyksCiAgICAgICAgaGVscD0ndGhlIGZpbGUgd2hlcmUgdGhlIG91dHB1dCBzaG91bGQgYmUgd3JpdHRlbicpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICctbScsICctLW1lbW8nLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgIGhlbHA9J3ByZXNlcnZlIG1lbW8gYmV0d2VlbiBkaXNhc3NlbWJsaWVzJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgJy1sJywgJy0taW5kZW50bGV2ZWwnLCBkZWZhdWx0PTQsIHR5cGU9aW50LAogICAgICAgIGhlbHA9J3RoZSBudW1iZXIgb2YgYmxhbmtzIGJ5IHdoaWNoIHRvIGluZGVudCBhIG5ldyBNQVJLIGxldmVsJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgJy1hJywgJy0tYW5ub3RhdGUnLCAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICBoZWxwPSdhbm5vdGF0ZSBlYWNoIGxpbmUgd2l0aCBhIHNob3J0IG9wY29kZSBkZXNjcmlwdGlvbicpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICctcCcsICctLXByZWFtYmxlJywgZGVmYXVsdD0iPT0+IHtuYW1lfSA8PT0iLAogICAgICAgIGhlbHA9J2lmIG1vcmUgdGhhbiBvbmUgcGlja2xlIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGlzIGJlZm9yZScKICAgICAgICAnIGVhY2ggZGlzYXNzZW1ibHknKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAnLXQnLCAnLS10ZXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICBoZWxwPSdydW4gc2VsZi10ZXN0IHN1aXRlJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgJy12JywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICBoZWxwPSdydW4gdmVyYm9zZWx5OyBvbmx5IGFmZmVjdHMgc2VsZi10ZXN0IHJ1bicpCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgaWYgYXJncy50ZXN0OgogICAgICAgIF90ZXN0KCkKICAgIGVsc2U6CiAgICAgICAgYW5ub3RhdGUgPSAzMCBpZiBhcmdzLmFubm90YXRlIGVsc2UgMAogICAgICAgIGlmIG5vdCBhcmdzLnBpY2tsZV9maWxlOgogICAgICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCiAgICAgICAgZWxpZiBsZW4oYXJncy5waWNrbGVfZmlsZSkgPT0gMToKICAgICAgICAgICAgZGlzKGFyZ3MucGlja2xlX2ZpbGVbMF0sIGFyZ3Mub3V0cHV0LCBOb25lLAogICAgICAgICAgICAgICAgYXJncy5pbmRlbnRsZXZlbCwgYW5ub3RhdGUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbWVtbyA9IHt9IGlmIGFyZ3MubWVtbyBlbHNlIE5vbmUKICAgICAgICAgICAgZm9yIGYgaW4gYXJncy5waWNrbGVfZmlsZToKICAgICAgICAgICAgICAgIHByZWFtYmxlID0gYXJncy5wcmVhbWJsZS5mb3JtYXQobmFtZT1mLm5hbWUpCiAgICAgICAgICAgICAgICBhcmdzLm91dHB1dC53cml0ZShwcmVhbWJsZSArICdcbicpCiAgICAgICAgICAgICAgICBkaXMoZiwgYXJncy5vdXRwdXQsIG1lbW8sIGFyZ3MuaW5kZW50bGV2ZWwsIGFubm90YXRlKQpQSwMEFAAAAAAAAiCjVmT0SdkSIwAAEiMAAAgAAABwaXBlcy5weSIiIkNvbnZlcnNpb24gcGlwZWxpbmUgdGVtcGxhdGVzLgoKVGhlIHByb2JsZW06Ci0tLS0tLS0tLS0tLQoKU3VwcG9zZSB5b3UgaGF2ZSBzb21lIGRhdGEgdGhhdCB5b3Ugd2FudCB0byBjb252ZXJ0IHRvIGFub3RoZXIgZm9ybWF0LApzdWNoIGFzIGZyb20gR0lGIGltYWdlIGZvcm1hdCB0byBQUE0gaW1hZ2UgZm9ybWF0LiAgTWF5YmUgdGhlCmNvbnZlcnNpb24gaW52b2x2ZXMgc2V2ZXJhbCBzdGVwcyAoZS5nLiBwaXBpbmcgaXQgdGhyb3VnaCBjb21wcmVzcyBvcgp1dWVuY29kZSkuICBTb21lIG9mIHRoZSBjb252ZXJzaW9uIHN0ZXBzIG1heSByZXF1aXJlIHRoYXQgdGhlaXIgaW5wdXQKaXMgYSBkaXNrIGZpbGUsIG90aGVycyBtYXkgYmUgYWJsZSB0byByZWFkIHN0YW5kYXJkIGlucHV0OyBzaW1pbGFyIGZvcgp0aGVpciBvdXRwdXQuICBUaGUgaW5wdXQgdG8gdGhlIGVudGlyZSBjb252ZXJzaW9uIG1heSBhbHNvIGJlIHJlYWQKZnJvbSBhIGRpc2sgZmlsZSBvciBmcm9tIGFuIG9wZW4gZmlsZSwgYW5kIHNpbWlsYXIgZm9yIGl0cyBvdXRwdXQuCgpUaGUgbW9kdWxlIGxldHMgeW91IGNvbnN0cnVjdCBhIHBpcGVsaW5lIHRlbXBsYXRlIGJ5IHN0aWNraW5nIG9uZSBvcgptb3JlIGNvbnZlcnNpb24gc3RlcHMgdG9nZXRoZXIuICBJdCB3aWxsIHRha2UgY2FyZSBvZiBjcmVhdGluZyBhbmQKcmVtb3ZpbmcgdGVtcG9yYXJ5IGZpbGVzIGlmIHRoZXkgYXJlIG5lY2Vzc2FyeSB0byBob2xkIGludGVybWVkaWF0ZQpkYXRhLiAgWW91IGNhbiB0aGVuIHVzZSB0aGUgdGVtcGxhdGUgdG8gZG8gY29udmVyc2lvbnMgZnJvbSBtYW55CmRpZmZlcmVudCBzb3VyY2VzIHRvIG1hbnkgZGlmZmVyZW50IGRlc3RpbmF0aW9ucy4gIFRoZSB0ZW1wb3JhcnkKZmlsZSBuYW1lcyB1c2VkIGFyZSBkaWZmZXJlbnQgZWFjaCB0aW1lIHRoZSB0ZW1wbGF0ZSBpcyB1c2VkLgoKVGhlIHRlbXBsYXRlcyBhcmUgb2JqZWN0cyBzbyB5b3UgY2FuIGNyZWF0ZSB0ZW1wbGF0ZXMgZm9yIG1hbnkKZGlmZmVyZW50IGNvbnZlcnNpb24gc3RlcHMgYW5kIHN0b3JlIHRoZW0gaW4gYSBkaWN0aW9uYXJ5LCBmb3IKaW5zdGFuY2UuCgoKRGlyZWN0aW9uczoKLS0tLS0tLS0tLS0KClRvIGNyZWF0ZSBhIHRlbXBsYXRlOgogICAgdCA9IFRlbXBsYXRlKCkKClRvIGFkZCBhIGNvbnZlcnNpb24gc3RlcCB0byBhIHRlbXBsYXRlOgogICB0LmFwcGVuZChjb21tYW5kLCBraW5kKQp3aGVyZSBraW5kIGlzIGEgc3RyaW5nIG9mIHR3byBjaGFyYWN0ZXJzOiB0aGUgZmlyc3QgaXMgJy0nIGlmIHRoZQpjb21tYW5kIHJlYWRzIGl0cyBzdGFuZGFyZCBpbnB1dCBvciAnZicgaWYgaXQgcmVxdWlyZXMgYSBmaWxlOyB0aGUKc2Vjb25kIGxpa2V3aXNlIGZvciB0aGUgb3V0cHV0LiBUaGUgY29tbWFuZCBtdXN0IGJlIHZhbGlkIC9iaW4vc2gKc3ludGF4LiAgSWYgaW5wdXQgb3Igb3V0cHV0IGZpbGVzIGFyZSByZXF1aXJlZCwgdGhleSBhcmUgcGFzc2VkIGFzCiRJTiBhbmQgJE9VVDsgb3RoZXJ3aXNlLCBpdCBtdXN0IGJlICBwb3NzaWJsZSB0byB1c2UgdGhlIGNvbW1hbmQgaW4KYSBwaXBlbGluZS4KClRvIGFkZCBhIGNvbnZlcnNpb24gc3RlcCBhdCB0aGUgYmVnaW5uaW5nOgogICB0LnByZXBlbmQoY29tbWFuZCwga2luZCkKClRvIGNvbnZlcnQgYSBmaWxlIHRvIGFub3RoZXIgZmlsZSB1c2luZyBhIHRlbXBsYXRlOgogIHN0cyA9IHQuY29weShpbmZpbGUsIG91dGZpbGUpCklmIGluZmlsZSBvciBvdXRmaWxlIGFyZSB0aGUgZW1wdHkgc3RyaW5nLCBzdGFuZGFyZCBpbnB1dCBpcyByZWFkIG9yCnN0YW5kYXJkIG91dHB1dCBpcyB3cml0dGVuLCByZXNwZWN0aXZlbHkuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZQpleGl0IHN0YXR1cyBvZiB0aGUgY29udmVyc2lvbiBwaXBlbGluZS4KClRvIG9wZW4gYSBmaWxlIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgdGhyb3VnaCBhIGNvbnZlcnNpb24gcGlwZWxpbmU6CiAgIGZwID0gdC5vcGVuKGZpbGUsIG1vZGUpCndoZXJlIG1vZGUgaXMgJ3InIHRvIHJlYWQgdGhlIGZpbGUsIG9yICd3JyB0byB3cml0ZSBpdCAtLSBqdXN0IGxpa2UKZm9yIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBvcGVuKCkgb3IgZm9yIG9zLnBvcGVuKCkuCgpUbyBjcmVhdGUgYSBuZXcgdGVtcGxhdGUgb2JqZWN0IGluaXRpYWxpemVkIHRvIGEgZ2l2ZW4gb25lOgogICB0MiA9IHQuY2xvbmUoKQoiIiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnCgoKaW1wb3J0IHJlCmltcG9ydCBvcwppbXBvcnQgdGVtcGZpbGUKaW1wb3J0IHdhcm5pbmdzCiMgd2UgaW1wb3J0IHRoZSBxdW90ZSBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgbW9kdWxlIGZvciBiYWNrd2FyZCBjb21wYXQKIyAocXVvdGUgdXNlZCB0byBiZSBhbiB1bmRvY3VtZW50ZWQgYnV0IHVzZWQgZnVuY3Rpb24gaW4gcGlwZXMpCmZyb20gc2hsZXggaW1wb3J0IHF1b3RlCgp3YXJuaW5ncy5fZGVwcmVjYXRlZChfX25hbWVfXywgcmVtb3ZlPSgzLCAxMykpCgpfX2FsbF9fID0gWyJUZW1wbGF0ZSJdCgojIENvbnZlcnNpb24gc3RlcCBraW5kcwoKRklMRUlOX0ZJTEVPVVQgPSAnZmYnICAgICAgICAgICAgICAgICAgICMgTXVzdCByZWFkICYgd3JpdGUgcmVhbCBmaWxlcwpTVERJTl9GSUxFT1VUICA9ICctZicgICAgICAgICAgICAgICAgICAgIyBNdXN0IHdyaXRlIGEgcmVhbCBmaWxlCkZJTEVJTl9TVERPVVQgID0gJ2YtJyAgICAgICAgICAgICAgICAgICAjIE11c3QgcmVhZCBhIHJlYWwgZmlsZQpTVERJTl9TVERPVVQgICA9ICctLScgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwgcGlwZWxpbmUgZWxlbWVudApTT1VSQ0UgICAgICAgICA9ICcuLScgICAgICAgICAgICAgICAgICAgIyBNdXN0IGJlIGZpcnN0LCB3cml0ZXMgc3Rkb3V0ClNJTksgICAgICAgICAgID0gJy0uJyAgICAgICAgICAgICAgICAgICAjIE11c3QgYmUgbGFzdCwgcmVhZHMgc3RkaW4KCnN0ZXBraW5kcyA9IFtGSUxFSU5fRklMRU9VVCwgU1RESU5fRklMRU9VVCwgRklMRUlOX1NURE9VVCwgU1RESU5fU1RET1VULCBcCiAgICAgICAgICAgICBTT1VSQ0UsIFNJTktdCgoKY2xhc3MgVGVtcGxhdGU6CiAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgYSBwaXBlbGluZSB0ZW1wbGF0ZS4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIiIiVGVtcGxhdGUoKSByZXR1cm5zIGEgZnJlc2ggcGlwZWxpbmUgdGVtcGxhdGUuIiIiCiAgICAgICAgc2VsZi5kZWJ1Z2dpbmcgPSAwCiAgICAgICAgc2VsZi5yZXNldCgpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICIiInQuX19yZXByX18oKSBpbXBsZW1lbnRzIHJlcHIodCkuIiIiCiAgICAgICAgcmV0dXJuICc8VGVtcGxhdGUgaW5zdGFuY2UsIHN0ZXBzPSVyPicgJSAoc2VsZi5zdGVwcywpCgogICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICIiInQucmVzZXQoKSByZXN0b3JlcyBhIHBpcGVsaW5lIHRlbXBsYXRlIHRvIGl0cyBpbml0aWFsIHN0YXRlLiIiIgogICAgICAgIHNlbGYuc3RlcHMgPSBbXQoKICAgIGRlZiBjbG9uZShzZWxmKToKICAgICAgICAiIiJ0LmNsb25lKCkgcmV0dXJucyBhIG5ldyBwaXBlbGluZSB0ZW1wbGF0ZSB3aXRoIGlkZW50aWNhbAogICAgICAgIGluaXRpYWwgc3RhdGUgYXMgdGhlIGN1cnJlbnQgb25lLiIiIgogICAgICAgIHQgPSBUZW1wbGF0ZSgpCiAgICAgICAgdC5zdGVwcyA9IHNlbGYuc3RlcHNbOl0KICAgICAgICB0LmRlYnVnZ2luZyA9IHNlbGYuZGVidWdnaW5nCiAgICAgICAgcmV0dXJuIHQKCiAgICBkZWYgZGVidWcoc2VsZiwgZmxhZyk6CiAgICAgICAgIiIidC5kZWJ1ZyhmbGFnKSB0dXJucyBkZWJ1Z2dpbmcgb24gb3Igb2ZmLiIiIgogICAgICAgIHNlbGYuZGVidWdnaW5nID0gZmxhZwoKICAgIGRlZiBhcHBlbmQoc2VsZiwgY21kLCBraW5kKToKICAgICAgICAiIiJ0LmFwcGVuZChjbWQsIGtpbmQpIGFkZHMgYSBuZXcgc3RlcCBhdCB0aGUgZW5kLiIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNtZCwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUZW1wbGF0ZS5hcHBlbmQ6IGNtZCBtdXN0IGJlIGEgc3RyaW5nJykKICAgICAgICBpZiBraW5kIG5vdCBpbiBzdGVwa2luZHM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RlbXBsYXRlLmFwcGVuZDogYmFkIGtpbmQgJXInICUgKGtpbmQsKSkKICAgICAgICBpZiBraW5kID09IFNPVVJDRToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGVtcGxhdGUuYXBwZW5kOiBTT1VSQ0UgY2FuIG9ubHkgYmUgcHJlcGVuZGVkJykKICAgICAgICBpZiBzZWxmLnN0ZXBzIGFuZCBzZWxmLnN0ZXBzWy0xXVsxXSA9PSBTSU5LOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUZW1wbGF0ZS5hcHBlbmQ6IGFscmVhZHkgZW5kcyB3aXRoIFNJTksnKQogICAgICAgIGlmIGtpbmRbMF0gPT0gJ2YnIGFuZCBub3QgcmUuc2VhcmNoKHInXCRJTlxiJywgY21kKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGVtcGxhdGUuYXBwZW5kOiBtaXNzaW5nICRJTiBpbiBjbWQnKQogICAgICAgIGlmIGtpbmRbMV0gPT0gJ2YnIGFuZCBub3QgcmUuc2VhcmNoKHInXCRPVVRcYicsIGNtZCk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RlbXBsYXRlLmFwcGVuZDogbWlzc2luZyAkT1VUIGluIGNtZCcpCiAgICAgICAgc2VsZi5zdGVwcy5hcHBlbmQoKGNtZCwga2luZCkpCgogICAgZGVmIHByZXBlbmQoc2VsZiwgY21kLCBraW5kKToKICAgICAgICAiIiJ0LnByZXBlbmQoY21kLCBraW5kKSBhZGRzIGEgbmV3IHN0ZXAgYXQgdGhlIGZyb250LiIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNtZCwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUZW1wbGF0ZS5wcmVwZW5kOiBjbWQgbXVzdCBiZSBhIHN0cmluZycpCiAgICAgICAgaWYga2luZCBub3QgaW4gc3RlcGtpbmRzOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUZW1wbGF0ZS5wcmVwZW5kOiBiYWQga2luZCAlcicgJSAoa2luZCwpKQogICAgICAgIGlmIGtpbmQgPT0gU0lOSzoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGVtcGxhdGUucHJlcGVuZDogU0lOSyBjYW4gb25seSBiZSBhcHBlbmRlZCcpCiAgICAgICAgaWYgc2VsZi5zdGVwcyBhbmQgc2VsZi5zdGVwc1swXVsxXSA9PSBTT1VSQ0U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RlbXBsYXRlLnByZXBlbmQ6IGFscmVhZHkgYmVnaW5zIHdpdGggU09VUkNFJykKICAgICAgICBpZiBraW5kWzBdID09ICdmJyBhbmQgbm90IHJlLnNlYXJjaChyJ1wkSU5cYicsIGNtZCk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RlbXBsYXRlLnByZXBlbmQ6IG1pc3NpbmcgJElOIGluIGNtZCcpCiAgICAgICAgaWYga2luZFsxXSA9PSAnZicgYW5kIG5vdCByZS5zZWFyY2gocidcJE9VVFxiJywgY21kKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGVtcGxhdGUucHJlcGVuZDogbWlzc2luZyAkT1VUIGluIGNtZCcpCiAgICAgICAgc2VsZi5zdGVwcy5pbnNlcnQoMCwgKGNtZCwga2luZCkpCgogICAgZGVmIG9wZW4oc2VsZiwgZmlsZSwgcncpOgogICAgICAgICIiInQub3BlbihmaWxlLCBydykgcmV0dXJucyBhIHBpcGUgb3IgZmlsZSBvYmplY3Qgb3BlbiBmb3IKICAgICAgICByZWFkaW5nIG9yIHdyaXRpbmc7IHRoZSBmaWxlIGlzIHRoZSBvdGhlciBlbmQgb2YgdGhlIHBpcGVsaW5lLiIiIgogICAgICAgIGlmIHJ3ID09ICdyJzoKICAgICAgICAgICAgcmV0dXJuIHNlbGYub3Blbl9yKGZpbGUpCiAgICAgICAgaWYgcncgPT0gJ3cnOgogICAgICAgICAgICByZXR1cm4gc2VsZi5vcGVuX3coZmlsZSkKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUZW1wbGF0ZS5vcGVuOiBydyBtdXN0IGJlIFwnclwnIG9yIFwnd1wnLCBub3QgJXInCiAgICAgICAgICAgICAgICAgICAgICAgICAlIChydywpKQoKICAgIGRlZiBvcGVuX3Ioc2VsZiwgZmlsZSk6CiAgICAgICAgIiIidC5vcGVuX3IoZmlsZSkgYW5kIHQub3Blbl93KGZpbGUpIGltcGxlbWVudAogICAgICAgIHQub3BlbihmaWxlLCAncicpIGFuZCB0Lm9wZW4oZmlsZSwgJ3cnKSByZXNwZWN0aXZlbHkuIiIiCiAgICAgICAgaWYgbm90IHNlbGYuc3RlcHM6CiAgICAgICAgICAgIHJldHVybiBvcGVuKGZpbGUsICdyJykKICAgICAgICBpZiBzZWxmLnN0ZXBzWy0xXVsxXSA9PSBTSU5LOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUZW1wbGF0ZS5vcGVuX3I6IHBpcGVsaW5lIGVuZHMgd2lkdGggU0lOSycpCiAgICAgICAgY21kID0gc2VsZi5tYWtlcGlwZWxpbmUoZmlsZSwgJycpCiAgICAgICAgcmV0dXJuIG9zLnBvcGVuKGNtZCwgJ3InKQoKICAgIGRlZiBvcGVuX3coc2VsZiwgZmlsZSk6CiAgICAgICAgaWYgbm90IHNlbGYuc3RlcHM6CiAgICAgICAgICAgIHJldHVybiBvcGVuKGZpbGUsICd3JykKICAgICAgICBpZiBzZWxmLnN0ZXBzWzBdWzFdID09IFNPVVJDRToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGVtcGxhdGUub3Blbl93OiBwaXBlbGluZSBiZWdpbnMgd2l0aCBTT1VSQ0UnKQogICAgICAgIGNtZCA9IHNlbGYubWFrZXBpcGVsaW5lKCcnLCBmaWxlKQogICAgICAgIHJldHVybiBvcy5wb3BlbihjbWQsICd3JykKCiAgICBkZWYgY29weShzZWxmLCBpbmZpbGUsIG91dGZpbGUpOgogICAgICAgIHJldHVybiBvcy5zeXN0ZW0oc2VsZi5tYWtlcGlwZWxpbmUoaW5maWxlLCBvdXRmaWxlKSkKCiAgICBkZWYgbWFrZXBpcGVsaW5lKHNlbGYsIGluZmlsZSwgb3V0ZmlsZSk6CiAgICAgICAgY21kID0gbWFrZXBpcGVsaW5lKGluZmlsZSwgc2VsZi5zdGVwcywgb3V0ZmlsZSkKICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZzoKICAgICAgICAgICAgcHJpbnQoY21kKQogICAgICAgICAgICBjbWQgPSAnc2V0IC14OyAnICsgY21kCiAgICAgICAgcmV0dXJuIGNtZAoKCmRlZiBtYWtlcGlwZWxpbmUoaW5maWxlLCBzdGVwcywgb3V0ZmlsZSk6CiAgICAjIEJ1aWxkIGEgbGlzdCB3aXRoIGZvciBlYWNoIGNvbW1hbmQ6CiAgICAjIFtpbnB1dCBmaWxlbmFtZSBvciAnJywgY29tbWFuZCBzdHJpbmcsIGtpbmQsIG91dHB1dCBmaWxlbmFtZSBvciAnJ10KCiAgICBsaXN0ID0gW10KICAgIGZvciBjbWQsIGtpbmQgaW4gc3RlcHM6CiAgICAgICAgbGlzdC5hcHBlbmQoWycnLCBjbWQsIGtpbmQsICcnXSkKICAgICMKICAgICMgTWFrZSBzdXJlIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBzdGVwCiAgICAjCiAgICBpZiBub3QgbGlzdDoKICAgICAgICBsaXN0LmFwcGVuZChbJycsICdjYXQnLCAnLS0nLCAnJ10pCiAgICAjCiAgICAjIFRha2UgY2FyZSBvZiB0aGUgaW5wdXQgYW5kIG91dHB1dCBlbmRzCiAgICAjCiAgICBbY21kLCBraW5kXSA9IGxpc3RbMF1bMTozXQogICAgaWYga2luZFswXSA9PSAnZicgYW5kIG5vdCBpbmZpbGU6CiAgICAgICAgbGlzdC5pbnNlcnQoMCwgWycnLCAnY2F0JywgJy0tJywgJyddKQogICAgbGlzdFswXVswXSA9IGluZmlsZQogICAgIwogICAgW2NtZCwga2luZF0gPSBsaXN0Wy0xXVsxOjNdCiAgICBpZiBraW5kWzFdID09ICdmJyBhbmQgbm90IG91dGZpbGU6CiAgICAgICAgbGlzdC5hcHBlbmQoWycnLCAnY2F0JywgJy0tJywgJyddKQogICAgbGlzdFstMV1bLTFdID0gb3V0ZmlsZQogICAgIwogICAgIyBJbnZlbnQgdGVtcG9yYXJ5IGZpbGVzIHRvIGNvbm5lY3Qgc3RhZ2VzIHRoYXQgbmVlZCBmaWxlcwogICAgIwogICAgZ2FyYmFnZSA9IFtdCiAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW4obGlzdCkpOgogICAgICAgIGxraW5kID0gbGlzdFtpLTFdWzJdCiAgICAgICAgcmtpbmQgPSBsaXN0W2ldWzJdCiAgICAgICAgaWYgbGtpbmRbMV0gPT0gJ2YnIG9yIHJraW5kWzBdID09ICdmJzoKICAgICAgICAgICAgKGZkLCB0ZW1wKSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgICAgZ2FyYmFnZS5hcHBlbmQodGVtcCkKICAgICAgICAgICAgbGlzdFtpLTFdWy0xXSA9IGxpc3RbaV1bMF0gPSB0ZW1wCiAgICAjCiAgICBmb3IgaXRlbSBpbiBsaXN0OgogICAgICAgIFtpbmYsIGNtZCwga2luZCwgb3V0Zl0gPSBpdGVtCiAgICAgICAgaWYga2luZFsxXSA9PSAnZic6CiAgICAgICAgICAgIGNtZCA9ICdPVVQ9JyArIHF1b3RlKG91dGYpICsgJzsgJyArIGNtZAogICAgICAgIGlmIGtpbmRbMF0gPT0gJ2YnOgogICAgICAgICAgICBjbWQgPSAnSU49JyArIHF1b3RlKGluZikgKyAnOyAnICsgY21kCiAgICAgICAgaWYga2luZFswXSA9PSAnLScgYW5kIGluZjoKICAgICAgICAgICAgY21kID0gY21kICsgJyA8JyArIHF1b3RlKGluZikKICAgICAgICBpZiBraW5kWzFdID09ICctJyBhbmQgb3V0ZjoKICAgICAgICAgICAgY21kID0gY21kICsgJyA+JyArIHF1b3RlKG91dGYpCiAgICAgICAgaXRlbVsxXSA9IGNtZAogICAgIwogICAgY21kbGlzdCA9IGxpc3RbMF1bMV0KICAgIGZvciBpdGVtIGluIGxpc3RbMTpdOgogICAgICAgIFtjbWQsIGtpbmRdID0gaXRlbVsxOjNdCiAgICAgICAgaWYgaXRlbVswXSA9PSAnJzoKICAgICAgICAgICAgaWYgJ2YnIGluIGtpbmQ6CiAgICAgICAgICAgICAgICBjbWQgPSAneyAnICsgY21kICsgJzsgfScKICAgICAgICAgICAgY21kbGlzdCA9IGNtZGxpc3QgKyAnIHxcbicgKyBjbWQKICAgICAgICBlbHNlOgogICAgICAgICAgICBjbWRsaXN0ID0gY21kbGlzdCArICdcbicgKyBjbWQKICAgICMKICAgIGlmIGdhcmJhZ2U6CiAgICAgICAgcm1jbWQgPSAncm0gLWYnCiAgICAgICAgZm9yIGZpbGUgaW4gZ2FyYmFnZToKICAgICAgICAgICAgcm1jbWQgPSBybWNtZCArICcgJyArIHF1b3RlKGZpbGUpCiAgICAgICAgdHJhcGNtZCA9ICd0cmFwICcgKyBxdW90ZShybWNtZCArICc7IGV4aXQnKSArICcgMSAyIDMgMTMgMTQgMTUnCiAgICAgICAgY21kbGlzdCA9IHRyYXBjbWQgKyAnXG4nICsgY21kbGlzdCArICdcbicgKyBybWNtZAogICAgIwogICAgcmV0dXJuIGNtZGxpc3QKUEsDBBQAAAAAAAIgo1YpTt+8J2AAACdgAAAKAAAAcGtndXRpbC5weSIiIlV0aWxpdGllcyB0byBzdXBwb3J0IHBhY2thZ2VzLiIiIgoKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQpmcm9tIGZ1bmN0b29scyBpbXBvcnQgc2luZ2xlZGlzcGF0Y2ggYXMgc2ltcGxlZ2VuZXJpYwppbXBvcnQgaW1wb3J0bGliCmltcG9ydCBpbXBvcnRsaWIudXRpbAppbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQppbXBvcnQgb3MKaW1wb3J0IG9zLnBhdGgKaW1wb3J0IHN5cwpmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCmltcG9ydCB3YXJuaW5ncwoKX19hbGxfXyA9IFsKICAgICdnZXRfaW1wb3J0ZXInLCAnaXRlcl9pbXBvcnRlcnMnLCAnZ2V0X2xvYWRlcicsICdmaW5kX2xvYWRlcicsCiAgICAnd2Fsa19wYWNrYWdlcycsICdpdGVyX21vZHVsZXMnLCAnZ2V0X2RhdGEnLAogICAgJ0ltcEltcG9ydGVyJywgJ0ltcExvYWRlcicsICdyZWFkX2NvZGUnLCAnZXh0ZW5kX3BhdGgnLAogICAgJ01vZHVsZUluZm8nLApdCgoKTW9kdWxlSW5mbyA9IG5hbWVkdHVwbGUoJ01vZHVsZUluZm8nLCAnbW9kdWxlX2ZpbmRlciBuYW1lIGlzcGtnJykKTW9kdWxlSW5mby5fX2RvY19fID0gJ0EgbmFtZWR0dXBsZSB3aXRoIG1pbmltYWwgaW5mbyBhYm91dCBhIG1vZHVsZS4nCgoKZGVmIF9nZXRfc3BlYyhmaW5kZXIsIG5hbWUpOgogICAgIiIiUmV0dXJuIHRoZSBmaW5kZXItc3BlY2lmaWMgbW9kdWxlIHNwZWMuIiIiCiAgICAjIFdvcmtzIHdpdGggbGVnYWN5IGZpbmRlcnMuCiAgICB0cnk6CiAgICAgICAgZmluZF9zcGVjID0gZmluZGVyLmZpbmRfc3BlYwogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShuYW1lKQogICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fbG9hZGVyKG5hbWUsIGxvYWRlcikKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGZpbmRfc3BlYyhuYW1lKQoKCmRlZiByZWFkX2NvZGUoc3RyZWFtKToKICAgICMgVGhpcyBoZWxwZXIgaXMgbmVlZGVkIGluIG9yZGVyIGZvciB0aGUgUEVQIDMwMiBlbXVsYXRpb24gdG8KICAgICMgY29ycmVjdGx5IGhhbmRsZSBjb21waWxlZCBmaWxlcwogICAgaW1wb3J0IG1hcnNoYWwKCiAgICBtYWdpYyA9IHN0cmVhbS5yZWFkKDQpCiAgICBpZiBtYWdpYyAhPSBpbXBvcnRsaWIudXRpbC5NQUdJQ19OVU1CRVI6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBzdHJlYW0ucmVhZCgxMikgIyBTa2lwIHJlc3Qgb2YgdGhlIGhlYWRlcgogICAgcmV0dXJuIG1hcnNoYWwubG9hZChzdHJlYW0pCgoKZGVmIHdhbGtfcGFja2FnZXMocGF0aD1Ob25lLCBwcmVmaXg9JycsIG9uZXJyb3I9Tm9uZSk6CiAgICAiIiJZaWVsZHMgTW9kdWxlSW5mbyBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkKICAgIG9uIHBhdGgsIG9yLCBpZiBwYXRoIGlzIE5vbmUsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCgogICAgJ3BhdGgnIHNob3VsZCBiZSBlaXRoZXIgTm9uZSBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IKICAgIG1vZHVsZXMgaW4uCgogICAgJ3ByZWZpeCcgaXMgYSBzdHJpbmcgdG8gb3V0cHV0IG9uIHRoZSBmcm9udCBvZiBldmVyeSBtb2R1bGUgbmFtZQogICAgb24gb3V0cHV0LgoKICAgIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG11c3QgaW1wb3J0IGFsbCAqcGFja2FnZXMqIChOT1QgYWxsCiAgICBtb2R1bGVzISkgb24gdGhlIGdpdmVuIHBhdGgsIGluIG9yZGVyIHRvIGFjY2VzcyB0aGUgX19wYXRoX18KICAgIGF0dHJpYnV0ZSB0byBmaW5kIHN1Ym1vZHVsZXMuCgogICAgJ29uZXJyb3InIGlzIGEgZnVuY3Rpb24gd2hpY2ggZ2V0cyBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQgKHRoZQogICAgbmFtZSBvZiB0aGUgcGFja2FnZSB3aGljaCB3YXMgYmVpbmcgaW1wb3J0ZWQpIGlmIGFueSBleGNlcHRpb24KICAgIG9jY3VycyB3aGlsZSB0cnlpbmcgdG8gaW1wb3J0IGEgcGFja2FnZS4gIElmIG5vIG9uZXJyb3IgZnVuY3Rpb24gaXMKICAgIHN1cHBsaWVkLCBJbXBvcnRFcnJvcnMgYXJlIGNhdWdodCBhbmQgaWdub3JlZCwgd2hpbGUgYWxsIG90aGVyCiAgICBleGNlcHRpb25zIGFyZSBwcm9wYWdhdGVkLCB0ZXJtaW5hdGluZyB0aGUgc2VhcmNoLgoKICAgIEV4YW1wbGVzOgoKICAgICMgbGlzdCBhbGwgbW9kdWxlcyBweXRob24gY2FuIGFjY2VzcwogICAgd2Fsa19wYWNrYWdlcygpCgogICAgIyBsaXN0IGFsbCBzdWJtb2R1bGVzIG9mIGN0eXBlcwogICAgd2Fsa19wYWNrYWdlcyhjdHlwZXMuX19wYXRoX18sIGN0eXBlcy5fX25hbWVfXysnLicpCiAgICAiIiIKCiAgICBkZWYgc2VlbihwLCBtPXt9KToKICAgICAgICBpZiBwIGluIG06CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgbVtwXSA9IFRydWUKCiAgICBmb3IgaW5mbyBpbiBpdGVyX21vZHVsZXMocGF0aCwgcHJlZml4KToKICAgICAgICB5aWVsZCBpbmZvCgogICAgICAgIGlmIGluZm8uaXNwa2c6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIF9faW1wb3J0X18oaW5mby5uYW1lKQogICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoaW5mby5uYW1lKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHBhdGggPSBnZXRhdHRyKHN5cy5tb2R1bGVzW2luZm8ubmFtZV0sICdfX3BhdGhfXycsIE5vbmUpIG9yIFtdCgogICAgICAgICAgICAgICAgIyBkb24ndCB0cmF2ZXJzZSBwYXRoIGl0ZW1zIHdlJ3ZlIHNlZW4gYmVmb3JlCiAgICAgICAgICAgICAgICBwYXRoID0gW3AgZm9yIHAgaW4gcGF0aCBpZiBub3Qgc2VlbihwKV0KCiAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGtfcGFja2FnZXMocGF0aCwgaW5mby5uYW1lKycuJywgb25lcnJvcikKCgpkZWYgaXRlcl9tb2R1bGVzKHBhdGg9Tm9uZSwgcHJlZml4PScnKToKICAgICIiIllpZWxkcyBNb2R1bGVJbmZvIGZvciBhbGwgc3VibW9kdWxlcyBvbiBwYXRoLAogICAgb3IsIGlmIHBhdGggaXMgTm9uZSwgYWxsIHRvcC1sZXZlbCBtb2R1bGVzIG9uIHN5cy5wYXRoLgoKICAgICdwYXRoJyBzaG91bGQgYmUgZWl0aGVyIE5vbmUgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yCiAgICBtb2R1bGVzIGluLgoKICAgICdwcmVmaXgnIGlzIGEgc3RyaW5nIHRvIG91dHB1dCBvbiB0aGUgZnJvbnQgb2YgZXZlcnkgbW9kdWxlIG5hbWUKICAgIG9uIG91dHB1dC4KICAgICIiIgogICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgIGltcG9ydGVycyA9IGl0ZXJfaW1wb3J0ZXJzKCkKICAgIGVsaWYgaXNpbnN0YW5jZShwYXRoLCBzdHIpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBhdGggbXVzdCBiZSBOb25lIG9yIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgIgogICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlcyBpbiIpCiAgICBlbHNlOgogICAgICAgIGltcG9ydGVycyA9IG1hcChnZXRfaW1wb3J0ZXIsIHBhdGgpCgogICAgeWllbGRlZCA9IHt9CiAgICBmb3IgaSBpbiBpbXBvcnRlcnM6CiAgICAgICAgZm9yIG5hbWUsIGlzcGtnIGluIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyhpLCBwcmVmaXgpOgogICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiB5aWVsZGVkOgogICAgICAgICAgICAgICAgeWllbGRlZFtuYW1lXSA9IDEKICAgICAgICAgICAgICAgIHlpZWxkIE1vZHVsZUluZm8oaSwgbmFtZSwgaXNwa2cpCgoKQHNpbXBsZWdlbmVyaWMKZGVmIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyhpbXBvcnRlciwgcHJlZml4PScnKToKICAgIGlmIG5vdCBoYXNhdHRyKGltcG9ydGVyLCAnaXRlcl9tb2R1bGVzJyk6CiAgICAgICAgcmV0dXJuIFtdCiAgICByZXR1cm4gaW1wb3J0ZXIuaXRlcl9tb2R1bGVzKHByZWZpeCkKCgojIEltcGxlbWVudCBhIGZpbGUgd2Fsa2VyIGZvciB0aGUgbm9ybWFsIGltcG9ydGxpYiBwYXRoIGhvb2sKZGVmIF9pdGVyX2ZpbGVfZmluZGVyX21vZHVsZXMoaW1wb3J0ZXIsIHByZWZpeD0nJyk6CiAgICBpZiBpbXBvcnRlci5wYXRoIGlzIE5vbmUgb3Igbm90IG9zLnBhdGguaXNkaXIoaW1wb3J0ZXIucGF0aCk6CiAgICAgICAgcmV0dXJuCgogICAgeWllbGRlZCA9IHt9CiAgICBpbXBvcnQgaW5zcGVjdAogICAgdHJ5OgogICAgICAgIGZpbGVuYW1lcyA9IG9zLmxpc3RkaXIoaW1wb3J0ZXIucGF0aCkKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICMgaWdub3JlIHVucmVhZGFibGUgZGlyZWN0b3JpZXMgbGlrZSBpbXBvcnQgZG9lcwogICAgICAgIGZpbGVuYW1lcyA9IFtdCiAgICBmaWxlbmFtZXMuc29ydCgpICAjIGhhbmRsZSBwYWNrYWdlcyBiZWZvcmUgc2FtZS1uYW1lZCBtb2R1bGVzCgogICAgZm9yIGZuIGluIGZpbGVuYW1lczoKICAgICAgICBtb2RuYW1lID0gaW5zcGVjdC5nZXRtb2R1bGVuYW1lKGZuKQogICAgICAgIGlmIG1vZG5hbWU9PSdfX2luaXRfXycgb3IgbW9kbmFtZSBpbiB5aWVsZGVkOgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGltcG9ydGVyLnBhdGgsIGZuKQogICAgICAgIGlzcGtnID0gRmFsc2UKCiAgICAgICAgaWYgbm90IG1vZG5hbWUgYW5kIG9zLnBhdGguaXNkaXIocGF0aCkgYW5kICcuJyBub3QgaW4gZm46CiAgICAgICAgICAgIG1vZG5hbWUgPSBmbgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBkaXJjb250ZW50cyA9IG9zLmxpc3RkaXIocGF0aCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAjIGlnbm9yZSB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzIGxpa2UgaW1wb3J0IGRvZXMKICAgICAgICAgICAgICAgIGRpcmNvbnRlbnRzID0gW10KICAgICAgICAgICAgZm9yIGZuIGluIGRpcmNvbnRlbnRzOgogICAgICAgICAgICAgICAgc3VibmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmbikKICAgICAgICAgICAgICAgIGlmIHN1Ym5hbWU9PSdfX2luaXRfXyc6CiAgICAgICAgICAgICAgICAgICAgaXNwa2cgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRpbnVlICAgICMgbm90IGEgcGFja2FnZQoKICAgICAgICBpZiBtb2RuYW1lIGFuZCAnLicgbm90IGluIG1vZG5hbWU6CiAgICAgICAgICAgIHlpZWxkZWRbbW9kbmFtZV0gPSAxCiAgICAgICAgICAgIHlpZWxkIHByZWZpeCArIG1vZG5hbWUsIGlzcGtnCgppdGVyX2ltcG9ydGVyX21vZHVsZXMucmVnaXN0ZXIoCiAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIsIF9pdGVyX2ZpbGVfZmluZGVyX21vZHVsZXMpCgoKZGVmIF9pbXBvcnRfaW1wKCk6CiAgICBnbG9iYWwgaW1wCiAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgaW1wID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2ltcCcpCgpjbGFzcyBJbXBJbXBvcnRlcjoKICAgICIiIlBFUCAzMDIgRmluZGVyIHRoYXQgd3JhcHMgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBhbGdvcml0aG0KCiAgICBJbXBJbXBvcnRlcihkaXJuYW1lKSBwcm9kdWNlcyBhIFBFUCAzMDIgZmluZGVyIHRoYXQgc2VhcmNoZXMgdGhhdAogICAgZGlyZWN0b3J5LiAgSW1wSW1wb3J0ZXIoTm9uZSkgcHJvZHVjZXMgYSBQRVAgMzAyIGZpbmRlciB0aGF0IHNlYXJjaGVzCiAgICB0aGUgY3VycmVudCBzeXMucGF0aCwgcGx1cyBhbnkgbW9kdWxlcyB0aGF0IGFyZSBmcm96ZW4gb3IgYnVpbHQtaW4uCgogICAgTm90ZSB0aGF0IEltcEltcG9ydGVyIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IGJlaW5nIHVzZWQgYnkgcGxhY2VtZW50CiAgICBvbiBzeXMubWV0YV9wYXRoLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9Tm9uZSk6CiAgICAgICAgZ2xvYmFsIGltcAogICAgICAgIHdhcm5pbmdzLndhcm4oIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHNsYXRlZCBmb3IgcmVtb3ZhbCAiCiAgICAgICAgICAgICAgICAgICAgICAiaW4gUHl0aG9uIDMuMTI7IHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICBfaW1wb3J0X2ltcCgpCiAgICAgICAgc2VsZi5wYXRoID0gcGF0aAoKICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAjIE5vdGU6IHdlIGlnbm9yZSAncGF0aCcgYXJndW1lbnQgc2luY2UgaXQgaXMgb25seSB1c2VkIHZpYSBtZXRhX3BhdGgKICAgICAgICBzdWJuYW1lID0gZnVsbG5hbWUuc3BsaXQoIi4iKVstMV0KICAgICAgICBpZiBzdWJuYW1lICE9IGZ1bGxuYW1lIGFuZCBzZWxmLnBhdGggaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBpZiBzZWxmLnBhdGggaXMgTm9uZToKICAgICAgICAgICAgcGF0aCA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXRoID0gW29zLnBhdGgucmVhbHBhdGgoc2VsZi5wYXRoKV0KICAgICAgICB0cnk6CiAgICAgICAgICAgIGZpbGUsIGZpbGVuYW1lLCBldGMgPSBpbXAuZmluZF9tb2R1bGUoc3VibmFtZSwgcGF0aCkKICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgcmV0dXJuIEltcExvYWRlcihmdWxsbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGV0YykKCiAgICBkZWYgaXRlcl9tb2R1bGVzKHNlbGYsIHByZWZpeD0nJyk6CiAgICAgICAgaWYgc2VsZi5wYXRoIGlzIE5vbmUgb3Igbm90IG9zLnBhdGguaXNkaXIoc2VsZi5wYXRoKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHlpZWxkZWQgPSB7fQogICAgICAgIGltcG9ydCBpbnNwZWN0CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWxlbmFtZXMgPSBvcy5saXN0ZGlyKHNlbGYucGF0aCkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIyBpZ25vcmUgdW5yZWFkYWJsZSBkaXJlY3RvcmllcyBsaWtlIGltcG9ydCBkb2VzCiAgICAgICAgICAgIGZpbGVuYW1lcyA9IFtdCiAgICAgICAgZmlsZW5hbWVzLnNvcnQoKSAgIyBoYW5kbGUgcGFja2FnZXMgYmVmb3JlIHNhbWUtbmFtZWQgbW9kdWxlcwoKICAgICAgICBmb3IgZm4gaW4gZmlsZW5hbWVzOgogICAgICAgICAgICBtb2RuYW1lID0gaW5zcGVjdC5nZXRtb2R1bGVuYW1lKGZuKQogICAgICAgICAgICBpZiBtb2RuYW1lPT0nX19pbml0X18nIG9yIG1vZG5hbWUgaW4geWllbGRlZDoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgZm4pCiAgICAgICAgICAgIGlzcGtnID0gRmFsc2UKCiAgICAgICAgICAgIGlmIG5vdCBtb2RuYW1lIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpIGFuZCAnLicgbm90IGluIGZuOgogICAgICAgICAgICAgICAgbW9kbmFtZSA9IGZuCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZGlyY29udGVudHMgPSBvcy5saXN0ZGlyKHBhdGgpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIGlnbm9yZSB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzIGxpa2UgaW1wb3J0IGRvZXMKICAgICAgICAgICAgICAgICAgICBkaXJjb250ZW50cyA9IFtdCiAgICAgICAgICAgICAgICBmb3IgZm4gaW4gZGlyY29udGVudHM6CiAgICAgICAgICAgICAgICAgICAgc3VibmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmbikKICAgICAgICAgICAgICAgICAgICBpZiBzdWJuYW1lPT0nX19pbml0X18nOgogICAgICAgICAgICAgICAgICAgICAgICBpc3BrZyA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUgICAgIyBub3QgYSBwYWNrYWdlCgogICAgICAgICAgICBpZiBtb2RuYW1lIGFuZCAnLicgbm90IGluIG1vZG5hbWU6CiAgICAgICAgICAgICAgICB5aWVsZGVkW21vZG5hbWVdID0gMQogICAgICAgICAgICAgICAgeWllbGQgcHJlZml4ICsgbW9kbmFtZSwgaXNwa2cKCgpjbGFzcyBJbXBMb2FkZXI6CiAgICAiIiJQRVAgMzAyIExvYWRlciB0aGF0IHdyYXBzIFB5dGhvbidzICJjbGFzc2ljIiBpbXBvcnQgYWxnb3JpdGhtCiAgICAiIiIKICAgIGNvZGUgPSBzb3VyY2UgPSBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bGxuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZXRjKToKICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGlzIGVtdWxhdGlvbiBpcyBkZXByZWNhdGVkIGFuZCBzbGF0ZWQgZm9yIHJlbW92YWwgaW4gIgogICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiAzLjEyOyB1c2UgJ2ltcG9ydGxpYicgaW5zdGVhZCIsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgX2ltcG9ydF9pbXAoKQogICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgICBzZWxmLmZ1bGxuYW1lID0gZnVsbG5hbWUKICAgICAgICBzZWxmLmV0YyA9IGV0YwoKICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgc2VsZi5fcmVvcGVuKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX21vZHVsZShmdWxsbmFtZSwgc2VsZi5maWxlLCBzZWxmLmZpbGVuYW1lLCBzZWxmLmV0YykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBzZWxmLmZpbGU6CiAgICAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICMgTm90ZTogd2UgZG9uJ3Qgc2V0IF9fbG9hZGVyX18gYmVjYXVzZSB3ZSB3YW50IHRoZSBtb2R1bGUgdG8gbG9vawogICAgICAgICMgbm9ybWFsOyBpLmUuIHRoaXMgaXMganVzdCBhIHdyYXBwZXIgZm9yIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkKICAgICAgICByZXR1cm4gbW9kCgogICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGhuYW1lKToKICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUsICJyYiIpIGFzIGZpbGU6CiAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQoKICAgIGRlZiBfcmVvcGVuKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgc2VsZi5maWxlLmNsb3NlZDoKICAgICAgICAgICAgbW9kX3R5cGUgPSBzZWxmLmV0Y1syXQogICAgICAgICAgICBpZiBtb2RfdHlwZT09aW1wLlBZX1NPVVJDRToKICAgICAgICAgICAgICAgIHNlbGYuZmlsZSA9IG9wZW4oc2VsZi5maWxlbmFtZSwgJ3InKQogICAgICAgICAgICBlbGlmIG1vZF90eXBlIGluIChpbXAuUFlfQ09NUElMRUQsIGltcC5DX0VYVEVOU0lPTik6CiAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpCgogICAgZGVmIF9maXhfbmFtZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgaWYgZnVsbG5hbWUgaXMgTm9uZToKICAgICAgICAgICAgZnVsbG5hbWUgPSBzZWxmLmZ1bGxuYW1lCiAgICAgICAgZWxpZiBmdWxsbmFtZSAhPSBzZWxmLmZ1bGxuYW1lOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiTG9hZGVyIGZvciBtb2R1bGUgJXMgY2Fubm90IGhhbmRsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgJXMiICUgKHNlbGYuZnVsbG5hbWUsIGZ1bGxuYW1lKSkKICAgICAgICByZXR1cm4gZnVsbG5hbWUKCiAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgZnVsbG5hbWUgPSBzZWxmLl9maXhfbmFtZShmdWxsbmFtZSkKICAgICAgICByZXR1cm4gc2VsZi5ldGNbMl09PWltcC5QS0dfRElSRUNUT1JZCgogICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lPU5vbmUpOgogICAgICAgIGZ1bGxuYW1lID0gc2VsZi5fZml4X25hbWUoZnVsbG5hbWUpCiAgICAgICAgaWYgc2VsZi5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgIG1vZF90eXBlID0gc2VsZi5ldGNbMl0KICAgICAgICAgICAgaWYgbW9kX3R5cGU9PWltcC5QWV9TT1VSQ0U6CiAgICAgICAgICAgICAgICBzb3VyY2UgPSBzZWxmLmdldF9zb3VyY2UoZnVsbG5hbWUpCiAgICAgICAgICAgICAgICBzZWxmLmNvZGUgPSBjb21waWxlKHNvdXJjZSwgc2VsZi5maWxlbmFtZSwgJ2V4ZWMnKQogICAgICAgICAgICBlbGlmIG1vZF90eXBlPT1pbXAuUFlfQ09NUElMRUQ6CiAgICAgICAgICAgICAgICBzZWxmLl9yZW9wZW4oKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuY29kZSA9IHJlYWRfY29kZShzZWxmLmZpbGUpCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCiAgICAgICAgICAgIGVsaWYgbW9kX3R5cGU9PWltcC5QS0dfRElSRUNUT1JZOgogICAgICAgICAgICAgICAgc2VsZi5jb2RlID0gc2VsZi5fZ2V0X2RlbGVnYXRlKCkuZ2V0X2NvZGUoKQogICAgICAgIHJldHVybiBzZWxmLmNvZGUKCiAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZT1Ob25lKToKICAgICAgICBmdWxsbmFtZSA9IHNlbGYuX2ZpeF9uYW1lKGZ1bGxuYW1lKQogICAgICAgIGlmIHNlbGYuc291cmNlIGlzIE5vbmU6CiAgICAgICAgICAgIG1vZF90eXBlID0gc2VsZi5ldGNbMl0KICAgICAgICAgICAgaWYgbW9kX3R5cGU9PWltcC5QWV9TT1VSQ0U6CiAgICAgICAgICAgICAgICBzZWxmLl9yZW9wZW4oKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlID0gc2VsZi5maWxlLnJlYWQoKQogICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICAgICBlbGlmIG1vZF90eXBlPT1pbXAuUFlfQ09NUElMRUQ6CiAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmZpbGVuYW1lWzotMV0pOgogICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lWzotMV0sICdyJykgYXMgZjoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2UgPSBmLnJlYWQoKQogICAgICAgICAgICBlbGlmIG1vZF90eXBlPT1pbXAuUEtHX0RJUkVDVE9SWToKICAgICAgICAgICAgICAgIHNlbGYuc291cmNlID0gc2VsZi5fZ2V0X2RlbGVnYXRlKCkuZ2V0X3NvdXJjZSgpCiAgICAgICAgcmV0dXJuIHNlbGYuc291cmNlCgogICAgZGVmIF9nZXRfZGVsZWdhdGUoc2VsZik6CiAgICAgICAgZmluZGVyID0gSW1wSW1wb3J0ZXIoc2VsZi5maWxlbmFtZSkKICAgICAgICBzcGVjID0gX2dldF9zcGVjKGZpbmRlciwgJ19faW5pdF9fJykKICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKCiAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lPU5vbmUpOgogICAgICAgIGZ1bGxuYW1lID0gc2VsZi5fZml4X25hbWUoZnVsbG5hbWUpCiAgICAgICAgbW9kX3R5cGUgPSBzZWxmLmV0Y1syXQogICAgICAgIGlmIG1vZF90eXBlPT1pbXAuUEtHX0RJUkVDVE9SWToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9kZWxlZ2F0ZSgpLmdldF9maWxlbmFtZSgpCiAgICAgICAgZWxpZiBtb2RfdHlwZSBpbiAoaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuQ19FWFRFTlNJT04pOgogICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlbmFtZQogICAgICAgIHJldHVybiBOb25lCgoKdHJ5OgogICAgaW1wb3J0IHppcGltcG9ydAogICAgZnJvbSB6aXBpbXBvcnQgaW1wb3J0IHppcGltcG9ydGVyCgogICAgZGVmIGl0ZXJfemlwaW1wb3J0X21vZHVsZXMoaW1wb3J0ZXIsIHByZWZpeD0nJyk6CiAgICAgICAgZGlybGlzdCA9IHNvcnRlZCh6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGVbaW1wb3J0ZXIuYXJjaGl2ZV0pCiAgICAgICAgX3ByZWZpeCA9IGltcG9ydGVyLnByZWZpeAogICAgICAgIHBsZW4gPSBsZW4oX3ByZWZpeCkKICAgICAgICB5aWVsZGVkID0ge30KICAgICAgICBpbXBvcnQgaW5zcGVjdAogICAgICAgIGZvciBmbiBpbiBkaXJsaXN0OgogICAgICAgICAgICBpZiBub3QgZm4uc3RhcnRzd2l0aChfcHJlZml4KToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBmbiA9IGZuW3BsZW46XS5zcGxpdChvcy5zZXApCgogICAgICAgICAgICBpZiBsZW4oZm4pPT0yIGFuZCBmblsxXS5zdGFydHN3aXRoKCdfX2luaXRfXy5weScpOgogICAgICAgICAgICAgICAgaWYgZm5bMF0gbm90IGluIHlpZWxkZWQ6CiAgICAgICAgICAgICAgICAgICAgeWllbGRlZFtmblswXV0gPSAxCiAgICAgICAgICAgICAgICAgICAgeWllbGQgcHJlZml4ICsgZm5bMF0sIFRydWUKCiAgICAgICAgICAgIGlmIGxlbihmbikhPTE6CiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgbW9kbmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmblswXSkKICAgICAgICAgICAgaWYgbW9kbmFtZT09J19faW5pdF9fJzoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiBtb2RuYW1lIGFuZCAnLicgbm90IGluIG1vZG5hbWUgYW5kIG1vZG5hbWUgbm90IGluIHlpZWxkZWQ6CiAgICAgICAgICAgICAgICB5aWVsZGVkW21vZG5hbWVdID0gMQogICAgICAgICAgICAgICAgeWllbGQgcHJlZml4ICsgbW9kbmFtZSwgRmFsc2UKCiAgICBpdGVyX2ltcG9ydGVyX21vZHVsZXMucmVnaXN0ZXIoemlwaW1wb3J0ZXIsIGl0ZXJfemlwaW1wb3J0X21vZHVsZXMpCgpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBwYXNzCgoKZGVmIGdldF9pbXBvcnRlcihwYXRoX2l0ZW0pOgogICAgIiIiUmV0cmlldmUgYSBmaW5kZXIgZm9yIHRoZSBnaXZlbiBwYXRoIGl0ZW0KCiAgICBUaGUgcmV0dXJuZWQgZmluZGVyIGlzIGNhY2hlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQogICAgaWYgaXQgd2FzIG5ld2x5IGNyZWF0ZWQgYnkgYSBwYXRoIGhvb2suCgogICAgVGhlIGNhY2hlIChvciBwYXJ0IG9mIGl0KSBjYW4gYmUgY2xlYXJlZCBtYW51YWxseSBpZiBhCiAgICByZXNjYW4gb2Ygc3lzLnBhdGhfaG9va3MgaXMgbmVjZXNzYXJ5LgogICAgIiIiCiAgICBwYXRoX2l0ZW0gPSBvcy5mc2RlY29kZShwYXRoX2l0ZW0pCiAgICB0cnk6CiAgICAgICAgaW1wb3J0ZXIgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoX2l0ZW1dCiAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgZm9yIHBhdGhfaG9vayBpbiBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBwYXRoX2hvb2socGF0aF9pdGVtKQogICAgICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuc2V0ZGVmYXVsdChwYXRoX2l0ZW0sIGltcG9ydGVyKQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGltcG9ydGVyID0gTm9uZQogICAgcmV0dXJuIGltcG9ydGVyCgoKZGVmIGl0ZXJfaW1wb3J0ZXJzKGZ1bGxuYW1lPSIiKToKICAgICIiIllpZWxkIGZpbmRlcnMgZm9yIHRoZSBnaXZlbiBtb2R1bGUgbmFtZQoKICAgIElmIGZ1bGxuYW1lIGNvbnRhaW5zIGEgJy4nLCB0aGUgZmluZGVycyB3aWxsIGJlIGZvciB0aGUgcGFja2FnZQogICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBhbGwgcmVnaXN0ZXJlZCB0b3AgbGV2ZWwKICAgIGZpbmRlcnMgKGkuZS4gdGhvc2Ugb24gYm90aCBzeXMubWV0YV9wYXRoIGFuZCBzeXMucGF0aF9ob29rcykuCgogICAgSWYgdGhlIG5hbWVkIG1vZHVsZSBpcyBpbiBhIHBhY2thZ2UsIHRoYXQgcGFja2FnZSBpcyBpbXBvcnRlZCBhcyBhIHNpZGUKICAgIGVmZmVjdCBvZiBpbnZva2luZyB0aGlzIGZ1bmN0aW9uLgoKICAgIElmIG5vIG1vZHVsZSBuYW1lIGlzIHNwZWNpZmllZCwgYWxsIHRvcCBsZXZlbCBmaW5kZXJzIGFyZSBwcm9kdWNlZC4KICAgICIiIgogICAgaWYgZnVsbG5hbWUuc3RhcnRzd2l0aCgnLicpOgogICAgICAgIG1zZyA9ICJSZWxhdGl2ZSBtb2R1bGUgbmFtZSB7IXJ9IG5vdCBzdXBwb3J0ZWQiLmZvcm1hdChmdWxsbmFtZSkKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cpCiAgICBpZiAnLicgaW4gZnVsbG5hbWU6CiAgICAgICAgIyBHZXQgdGhlIGNvbnRhaW5pbmcgcGFja2FnZSdzIF9fcGF0aF9fCiAgICAgICAgcGtnX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KICAgICAgICBwa2cgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKICAgICAgICBwYXRoID0gZ2V0YXR0cihwa2csICdfX3BhdGhfXycsIE5vbmUpCiAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgIGVsc2U6CiAgICAgICAgeWllbGQgZnJvbSBzeXMubWV0YV9wYXRoCiAgICAgICAgcGF0aCA9IHN5cy5wYXRoCiAgICBmb3IgaXRlbSBpbiBwYXRoOgogICAgICAgIHlpZWxkIGdldF9pbXBvcnRlcihpdGVtKQoKCmRlZiBnZXRfbG9hZGVyKG1vZHVsZV9vcl9uYW1lKToKICAgICIiIkdldCBhICJsb2FkZXIiIG9iamVjdCBmb3IgbW9kdWxlX29yX25hbWUKCiAgICBSZXR1cm5zIE5vbmUgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuCiAgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIG5vdCBhbHJlYWR5IGltcG9ydGVkLCBpdHMgY29udGFpbmluZyBwYWNrYWdlCiAgICAoaWYgYW55KSBpcyBpbXBvcnRlZCwgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIHRoZSBwYWNrYWdlIF9fcGF0aF9fLgogICAgIiIiCiAgICBpZiBtb2R1bGVfb3JfbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICBtb2R1bGVfb3JfbmFtZSA9IHN5cy5tb2R1bGVzW21vZHVsZV9vcl9uYW1lXQogICAgICAgIGlmIG1vZHVsZV9vcl9uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICBpZiBpc2luc3RhbmNlKG1vZHVsZV9vcl9uYW1lLCBNb2R1bGVUeXBlKToKICAgICAgICBtb2R1bGUgPSBtb2R1bGVfb3JfbmFtZQogICAgICAgIGxvYWRlciA9IGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpCiAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gbG9hZGVyCiAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX3NwZWNfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgZnVsbG5hbWUgPSBtb2R1bGUuX19uYW1lX18KICAgIGVsc2U6CiAgICAgICAgZnVsbG5hbWUgPSBtb2R1bGVfb3JfbmFtZQogICAgcmV0dXJuIGZpbmRfbG9hZGVyKGZ1bGxuYW1lKQoKCmRlZiBmaW5kX2xvYWRlcihmdWxsbmFtZSk6CiAgICAiIiJGaW5kIGEgImxvYWRlciIgb2JqZWN0IGZvciBmdWxsbmFtZQoKICAgIFRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3cmFwcGVyIGFyb3VuZAogICAgaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjIHRoYXQgY29udmVydHMgbW9zdCBmYWlsdXJlcyB0byBJbXBvcnRFcnJvcgogICAgYW5kIG9ubHkgcmV0dXJucyB0aGUgbG9hZGVyIHJhdGhlciB0aGFuIHRoZSBmdWxsIHNwZWMKICAgICIiIgogICAgaWYgZnVsbG5hbWUuc3RhcnRzd2l0aCgnLicpOgogICAgICAgIG1zZyA9ICJSZWxhdGl2ZSBtb2R1bGUgbmFtZSB7IXJ9IG5vdCBzdXBwb3J0ZWQiLmZvcm1hdChmdWxsbmFtZSkKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cpCiAgICB0cnk6CiAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhmdWxsbmFtZSkKICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGV4OgogICAgICAgICMgVGhpcyBoYWNrIGZpeGVzIGFuIGltcGVkYW5jZSBtaXNtYXRjaCBiZXR3ZWVuIHBrZ3V0aWwgYW5kCiAgICAgICAgIyBpbXBvcnRsaWIsIHdoZXJlIHRoZSBsYXR0ZXIgcmFpc2VzIG90aGVyIGVycm9ycyBmb3IgY2FzZXMgd2hlcmUKICAgICAgICAjIHBrZ3V0aWwgcHJldmlvdXNseSByYWlzZWQgSW1wb3J0RXJyb3IKICAgICAgICBtc2cgPSAiRXJyb3Igd2hpbGUgZmluZGluZyBsb2FkZXIgZm9yIHshcn0gKHt9OiB7fSkiCiAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChmdWxsbmFtZSwgdHlwZShleCksIGV4KSkgZnJvbSBleAogICAgcmV0dXJuIHNwZWMubG9hZGVyIGlmIHNwZWMgaXMgbm90IE5vbmUgZWxzZSBOb25lCgoKZGVmIGV4dGVuZF9wYXRoKHBhdGgsIG5hbWUpOgogICAgIiIiRXh0ZW5kIGEgcGFja2FnZSdzIHBhdGguCgogICAgSW50ZW5kZWQgdXNlIGlzIHRvIHBsYWNlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBhIHBhY2thZ2UncyBfX2luaXRfXy5weToKCiAgICAgICAgZnJvbSBwa2d1dGlsIGltcG9ydCBleHRlbmRfcGF0aAogICAgICAgIF9fcGF0aF9fID0gZXh0ZW5kX3BhdGgoX19wYXRoX18sIF9fbmFtZV9fKQoKICAgIFRoaXMgd2lsbCBhZGQgdG8gdGhlIHBhY2thZ2UncyBfX3BhdGhfXyBhbGwgc3ViZGlyZWN0b3JpZXMgb2YKICAgIGRpcmVjdG9yaWVzIG9uIHN5cy5wYXRoIG5hbWVkIGFmdGVyIHRoZSBwYWNrYWdlLiAgVGhpcyBpcyB1c2VmdWwKICAgIGlmIG9uZSB3YW50cyB0byBkaXN0cmlidXRlIGRpZmZlcmVudCBwYXJ0cyBvZiBhIHNpbmdsZSBsb2dpY2FsCiAgICBwYWNrYWdlIGFzIG11bHRpcGxlIGRpcmVjdG9yaWVzLgoKICAgIEl0IGFsc28gbG9va3MgZm9yICoucGtnIGZpbGVzIGJlZ2lubmluZyB3aGVyZSAqIG1hdGNoZXMgdGhlIG5hbWUKICAgIGFyZ3VtZW50LiAgVGhpcyBmZWF0dXJlIGlzIHNpbWlsYXIgdG8gKi5wdGggZmlsZXMgKHNlZSBzaXRlLnB5KSwKICAgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3Qgc3BlY2lhbC1jYXNlIGxpbmVzIHN0YXJ0aW5nIHdpdGggJ2ltcG9ydCcuCiAgICBBICoucGtnIGZpbGUgaXMgdHJ1c3RlZCBhdCBmYWNlIHZhbHVlOiBhcGFydCBmcm9tIGNoZWNraW5nIGZvcgogICAgZHVwbGljYXRlcywgYWxsIGVudHJpZXMgZm91bmQgaW4gYSAqLnBrZyBmaWxlIGFyZSBhZGRlZCB0byB0aGUKICAgIHBhdGgsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IGFyZSBleGlzdCB0aGUgZmlsZXN5c3RlbS4gIChUaGlzCiAgICBpcyBhIGZlYXR1cmUuKQoKICAgIElmIHRoZSBpbnB1dCBwYXRoIGlzIG5vdCBhIGxpc3QgKGFzIGlzIHRoZSBjYXNlIGZvciBmcm96ZW4KICAgIHBhY2thZ2VzKSBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICBUaGUgaW5wdXQgcGF0aCBpcyBub3QKICAgIG1vZGlmaWVkOyBhbiBleHRlbmRlZCBjb3B5IGlzIHJldHVybmVkLiAgSXRlbXMgYXJlIG9ubHkgYXBwZW5kZWQKICAgIHRvIHRoZSBjb3B5IGF0IHRoZSBlbmQuCgogICAgSXQgaXMgYXNzdW1lZCB0aGF0IHN5cy5wYXRoIGlzIGEgc2VxdWVuY2UuICBJdGVtcyBvZiBzeXMucGF0aCB0aGF0CiAgICBhcmUgbm90ICh1bmljb2RlIG9yIDgtYml0KSBzdHJpbmdzIHJlZmVycmluZyB0byBleGlzdGluZwogICAgZGlyZWN0b3JpZXMgYXJlIGlnbm9yZWQuICBVbmljb2RlIGl0ZW1zIG9mIHN5cy5wYXRoIHRoYXQgY2F1c2UKICAgIGVycm9ycyB3aGVuIHVzZWQgYXMgZmlsZW5hbWVzIG1heSBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJhaXNlIGFuCiAgICBleGNlcHRpb24gKGluIGxpbmUgd2l0aCBvcy5wYXRoLmlzZGlyKCkgYmVoYXZpb3IpLgogICAgIiIiCgogICAgaWYgbm90IGlzaW5zdGFuY2UocGF0aCwgbGlzdCk6CiAgICAgICAgIyBUaGlzIGNvdWxkIGhhcHBlbiBlLmcuIHdoZW4gdGhpcyBpcyBjYWxsZWQgZnJvbSBpbnNpZGUgYQogICAgICAgICMgZnJvemVuIHBhY2thZ2UuICBSZXR1cm4gdGhlIHBhdGggdW5jaGFuZ2VkIGluIHRoYXQgY2FzZS4KICAgICAgICByZXR1cm4gcGF0aAoKICAgIHNuYW1lX3BrZyA9IG5hbWUgKyAiLnBrZyIKCiAgICBwYXRoID0gcGF0aFs6XSAjIFN0YXJ0IHdpdGggYSBjb3B5IG9mIHRoZSBleGlzdGluZyBwYXRoCgogICAgcGFyZW50X3BhY2thZ2UsIF8sIGZpbmFsX25hbWUgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKQogICAgaWYgcGFyZW50X3BhY2thZ2U6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWFyY2hfcGF0aCA9IHN5cy5tb2R1bGVzW3BhcmVudF9wYWNrYWdlXS5fX3BhdGhfXwogICAgICAgIGV4Y2VwdCAoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgIyBXZSBjYW4ndCBkbyBhbnl0aGluZzogZmluZF9sb2FkZXIoKSByZXR1cm5zIE5vbmUgd2hlbgogICAgICAgICAgICAjIHBhc3NlZCBhIGRvdHRlZCBuYW1lLgogICAgICAgICAgICByZXR1cm4gcGF0aAogICAgZWxzZToKICAgICAgICBzZWFyY2hfcGF0aCA9IHN5cy5wYXRoCgogICAgZm9yIGRpciBpbiBzZWFyY2hfcGF0aDoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkaXIsIHN0cik6CiAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgIGZpbmRlciA9IGdldF9pbXBvcnRlcihkaXIpCiAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBwb3J0aW9ucyA9IFtdCiAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9zcGVjJyk6CiAgICAgICAgICAgICAgICBzcGVjID0gZmluZGVyLmZpbmRfc3BlYyhmaW5hbF9uYW1lKQogICAgICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBwb3J0aW9ucyA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgb3IgW10KICAgICAgICAgICAgIyBJcyB0aGlzIGZpbmRlciBQRVAgNDIwIGNvbXBsaWFudD8KICAgICAgICAgICAgZWxpZiBoYXNhdHRyKGZpbmRlciwgJ2ZpbmRfbG9hZGVyJyk6CiAgICAgICAgICAgICAgICBfLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmaW5hbF9uYW1lKQoKICAgICAgICAgICAgZm9yIHBvcnRpb24gaW4gcG9ydGlvbnM6CiAgICAgICAgICAgICAgICAjIFhYWCBUaGlzIG1heSBzdGlsbCBhZGQgZHVwbGljYXRlIGVudHJpZXMgdG8gcGF0aCBvbgogICAgICAgICAgICAgICAgIyBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zCiAgICAgICAgICAgICAgICBpZiBwb3J0aW9uIG5vdCBpbiBwYXRoOgogICAgICAgICAgICAgICAgICAgIHBhdGguYXBwZW5kKHBvcnRpb24pCgogICAgICAgICMgWFhYIElzIHRoaXMgdGhlIHJpZ2h0IHRoaW5nIGZvciBzdWJwYWNrYWdlcyBsaWtlIHpvcGUuYXBwPwogICAgICAgICMgSXQgbG9va3MgZm9yIGEgZmlsZSBuYW1lZCAiem9wZS5hcHAucGtnIgogICAgICAgIHBrZ2ZpbGUgPSBvcy5wYXRoLmpvaW4oZGlyLCBzbmFtZV9wa2cpCiAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGtnZmlsZSk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGYgPSBvcGVuKHBrZ2ZpbGUpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkNhbid0IG9wZW4gJXM6ICVzXG4iICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBrZ2ZpbGUsIG1zZykpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB3aXRoIGY6CiAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCdcbicpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmUuc3RhcnRzd2l0aCgnIycpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5hcHBlbmQobGluZSkgIyBEb24ndCBjaGVjayBmb3IgZXhpc3RlbmNlIQoKICAgIHJldHVybiBwYXRoCgoKZGVmIGdldF9kYXRhKHBhY2thZ2UsIHJlc291cmNlKToKICAgICIiIkdldCBhIHJlc291cmNlIGZyb20gYSBwYWNrYWdlLgoKICAgIFRoaXMgaXMgYSB3cmFwcGVyIHJvdW5kIHRoZSBQRVAgMzAyIGxvYWRlciBnZXRfZGF0YSBBUEkuIFRoZSBwYWNrYWdlCiAgICBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBwYWNrYWdlLCBpbiBzdGFuZGFyZCBtb2R1bGUgZm9ybWF0CiAgICAoZm9vLmJhcikuIFRoZSByZXNvdXJjZSBhcmd1bWVudCBzaG91bGQgYmUgaW4gdGhlIGZvcm0gb2YgYSByZWxhdGl2ZQogICAgZmlsZW5hbWUsIHVzaW5nICcvJyBhcyB0aGUgcGF0aCBzZXBhcmF0b3IuIFRoZSBwYXJlbnQgZGlyZWN0b3J5IG5hbWUgJy4uJwogICAgaXMgbm90IGFsbG93ZWQsIGFuZCBub3IgaXMgYSByb290ZWQgbmFtZSAoc3RhcnRpbmcgd2l0aCBhICcvJykuCgogICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBiaW5hcnkgc3RyaW5nLCB3aGljaCBpcyB0aGUgY29udGVudHMgb2YgdGhlCiAgICBzcGVjaWZpZWQgcmVzb3VyY2UuCgogICAgRm9yIHBhY2thZ2VzIGxvY2F0ZWQgaW4gdGhlIGZpbGVzeXN0ZW0sIHdoaWNoIGhhdmUgYWxyZWFkeSBiZWVuIGltcG9ydGVkLAogICAgdGhpcyBpcyB0aGUgcm91Z2ggZXF1aXZhbGVudCBvZgoKICAgICAgICBkID0gb3MucGF0aC5kaXJuYW1lKHN5cy5tb2R1bGVzW3BhY2thZ2VdLl9fZmlsZV9fKQogICAgICAgIGRhdGEgPSBvcGVuKG9zLnBhdGguam9pbihkLCByZXNvdXJjZSksICdyYicpLnJlYWQoKQoKICAgIElmIHRoZSBwYWNrYWdlIGNhbm5vdCBiZSBsb2NhdGVkIG9yIGxvYWRlZCwgb3IgaXQgdXNlcyBhIFBFUCAzMDIgbG9hZGVyCiAgICB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IGdldF9kYXRhKCksIHRoZW4gTm9uZSBpcyByZXR1cm5lZC4KICAgICIiIgoKICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMocGFja2FnZSkKICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICByZXR1cm4gTm9uZQogICAgbG9hZGVyID0gc3BlYy5sb2FkZXIKICAgIGlmIGxvYWRlciBpcyBOb25lIG9yIG5vdCBoYXNhdHRyKGxvYWRlciwgJ2dldF9kYXRhJyk6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgICMgWFhYIG5lZWRzIHRlc3QKICAgIG1vZCA9IChzeXMubW9kdWxlcy5nZXQocGFja2FnZSkgb3IKICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKSkKICAgIGlmIG1vZCBpcyBOb25lIG9yIG5vdCBoYXNhdHRyKG1vZCwgJ19fZmlsZV9fJyk6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAjIE1vZGlmeSB0aGUgcmVzb3VyY2UgbmFtZSB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGxvYWRlci5nZXRfZGF0YQogICAgIyBzaWduYXR1cmUgLSBhbiBvcy5wYXRoIGZvcm1hdCAiZmlsZW5hbWUiIHN0YXJ0aW5nIHdpdGggdGhlIGRpcm5hbWUgb2YKICAgICMgdGhlIHBhY2thZ2UncyBfX2ZpbGVfXwogICAgcGFydHMgPSByZXNvdXJjZS5zcGxpdCgnLycpCiAgICBwYXJ0cy5pbnNlcnQoMCwgb3MucGF0aC5kaXJuYW1lKG1vZC5fX2ZpbGVfXykpCiAgICByZXNvdXJjZV9uYW1lID0gb3MucGF0aC5qb2luKCpwYXJ0cykKICAgIHJldHVybiBsb2FkZXIuZ2V0X2RhdGEocmVzb3VyY2VfbmFtZSkKCgpfTkFNRV9QQVRURVJOID0gTm9uZQoKZGVmIHJlc29sdmVfbmFtZShuYW1lKToKICAgICIiIgogICAgUmVzb2x2ZSBhIG5hbWUgdG8gYW4gb2JqZWN0LgoKICAgIEl0IGlzIGV4cGVjdGVkIHRoYXQgYG5hbWVgIHdpbGwgYmUgYSBzdHJpbmcgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcKICAgIGZvcm1hdHMsIHdoZXJlIFcgaXMgc2hvcnRoYW5kIGZvciBhIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVyIGFuZCBkb3Qgc3RhbmRzCiAgICBmb3IgYSBsaXRlcmFsIHBlcmlvZCBpbiB0aGVzZSBwc2V1ZG8tcmVnZXhlczoKCiAgICBXKC5XKSoKICAgIFcoLlcpKjooVyguVykqKT8KCiAgICBUaGUgZmlyc3QgZm9ybSBpcyBpbnRlbmRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvbmx5LiBJdCBhc3N1bWVzIHRoYXQKICAgIHNvbWUgcGFydCBvZiB0aGUgZG90dGVkIG5hbWUgaXMgYSBwYWNrYWdlLCBhbmQgdGhlIHJlc3QgaXMgYW4gb2JqZWN0CiAgICBzb21ld2hlcmUgd2l0aGluIHRoYXQgcGFja2FnZSwgcG9zc2libHkgbmVzdGVkIGluc2lkZSBvdGhlciBvYmplY3RzLgogICAgQmVjYXVzZSB0aGUgcGxhY2Ugd2hlcmUgdGhlIHBhY2thZ2Ugc3RvcHMgYW5kIHRoZSBvYmplY3QgaGllcmFyY2h5IHN0YXJ0cwogICAgY2FuJ3QgYmUgaW5mZXJyZWQgYnkgaW5zcGVjdGlvbiwgcmVwZWF0ZWQgYXR0ZW1wdHMgdG8gaW1wb3J0IG11c3QgYmUgZG9uZQogICAgd2l0aCB0aGlzIGZvcm0uCgogICAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUgY2FsbGVyIG1ha2VzIHRoZSBkaXZpc2lvbiBwb2ludCBjbGVhciB0aHJvdWdoIHRoZQogICAgcHJvdmlzaW9uIG9mIGEgc2luZ2xlIGNvbG9uOiB0aGUgZG90dGVkIG5hbWUgdG8gdGhlIGxlZnQgb2YgdGhlIGNvbG9uIGlzIGEKICAgIHBhY2thZ2UgdG8gYmUgaW1wb3J0ZWQsIGFuZCB0aGUgZG90dGVkIG5hbWUgdG8gdGhlIHJpZ2h0IGlzIHRoZSBvYmplY3QKICAgIGhpZXJhcmNoeSB3aXRoaW4gdGhhdCBwYWNrYWdlLiBPbmx5IG9uZSBpbXBvcnQgaXMgbmVlZGVkIGluIHRoaXMgZm9ybS4gSWYKICAgIGl0IGVuZHMgd2l0aCB0aGUgY29sb24sIHRoZW4gYSBtb2R1bGUgb2JqZWN0IGlzIHJldHVybmVkLgoKICAgIFRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgbW9kdWxlKSwgb3IgcmFpc2Ugb25lCiAgICBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CgogICAgVmFsdWVFcnJvciAtIGlmIGBuYW1lYCBpc24ndCBpbiBhIHJlY29nbmlzZWQgZm9ybWF0CiAgICBJbXBvcnRFcnJvciAtIGlmIGFuIGltcG9ydCBmYWlsZWQgd2hlbiBpdCBzaG91bGRuJ3QgaGF2ZQogICAgQXR0cmlidXRlRXJyb3IgLSBpZiBhIGZhaWx1cmUgb2NjdXJyZWQgd2hlbiB0cmF2ZXJzaW5nIHRoZSBvYmplY3QgaGllcmFyY2h5CiAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgaW1wb3J0ZWQgcGFja2FnZSB0byBnZXQgdG8gdGhlIGRlc2lyZWQgb2JqZWN0LgogICAgIiIiCiAgICBnbG9iYWwgX05BTUVfUEFUVEVSTgogICAgaWYgX05BTUVfUEFUVEVSTiBpcyBOb25lOgogICAgICAgICMgTGF6eSBpbXBvcnQgdG8gc3BlZWR1cCBQeXRob24gc3RhcnR1cCB0aW1lCiAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgZG90dGVkX3dvcmRzID0gcicoPyFcZCkoXHcrKShcLig/IVxkKShcdyspKSonCiAgICAgICAgX05BTUVfUEFUVEVSTiA9IHJlLmNvbXBpbGUoZideKD9QPHBrZz57ZG90dGVkX3dvcmRzfSknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZicoP1A8Y2xuPjooP1A8b2JqPntkb3R0ZWRfd29yZHN9KT8pPyQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLlVOSUNPREUpCgogICAgbSA9IF9OQU1FX1BBVFRFUk4ubWF0Y2gobmFtZSkKICAgIGlmIG5vdCBtOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidpbnZhbGlkIGZvcm1hdDoge25hbWUhcn0nKQogICAgZ2QgPSBtLmdyb3VwZGljdCgpCiAgICBpZiBnZC5nZXQoJ2NsbicpOgogICAgICAgICMgdGhlcmUgaXMgYSBjb2xvbiAtIGEgb25lLXN0ZXAgaW1wb3J0IGlzIGFsbCB0aGF0J3MgbmVlZGVkCiAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoZ2RbJ3BrZyddKQogICAgICAgIHBhcnRzID0gZ2QuZ2V0KCdvYmonKQogICAgICAgIHBhcnRzID0gcGFydHMuc3BsaXQoJy4nKSBpZiBwYXJ0cyBlbHNlIFtdCiAgICBlbHNlOgogICAgICAgICMgbm8gY29sb24gLSBoYXZlIHRvIGl0ZXJhdGUgdG8gZmluZCB0aGUgcGFja2FnZSBib3VuZGFyeQogICAgICAgIHBhcnRzID0gbmFtZS5zcGxpdCgnLicpCiAgICAgICAgbW9kbmFtZSA9IHBhcnRzLnBvcCgwKQogICAgICAgICMgZmlyc3QgcGFydCAqbXVzdCogYmUgYSBtb2R1bGUvcGFja2FnZS4KICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShtb2RuYW1lKQogICAgICAgIHdoaWxlIHBhcnRzOgogICAgICAgICAgICBwID0gcGFydHNbMF0KICAgICAgICAgICAgcyA9IGYne21vZG5hbWV9LntwfScKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocykKICAgICAgICAgICAgICAgIHBhcnRzLnBvcCgwKQogICAgICAgICAgICAgICAgbW9kbmFtZSA9IHMKICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICMgaWYgd2UgcmVhY2ggdGhpcyBwb2ludCwgbW9kIGlzIHRoZSBtb2R1bGUsIGFscmVhZHkgaW1wb3J0ZWQsIGFuZAogICAgIyBwYXJ0cyBpcyB0aGUgbGlzdCBvZiBwYXJ0cyBpbiB0aGUgb2JqZWN0IGhpZXJhcmNoeSB0byBiZSB0cmF2ZXJzZWQsIG9yCiAgICAjIGFuIGVtcHR5IGxpc3QgaWYganVzdCB0aGUgbW9kdWxlIGlzIHdhbnRlZC4KICAgIHJlc3VsdCA9IG1vZAogICAgZm9yIHAgaW4gcGFydHM6CiAgICAgICAgcmVzdWx0ID0gZ2V0YXR0cihyZXN1bHQsIHApCiAgICByZXR1cm4gcmVzdWx0ClBLAwQUAAAAAAACIKNW/7LpcSGlAAAhpQAACwAAAHBsYXRmb3JtLnB5IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKIiIiIFRoaXMgbW9kdWxlIHRyaWVzIHRvIHJldHJpZXZlIGFzIG11Y2ggcGxhdGZvcm0taWRlbnRpZnlpbmcgZGF0YSBhcwogICAgcG9zc2libGUuIEl0IG1ha2VzIHRoaXMgaW5mb3JtYXRpb24gYXZhaWxhYmxlIHZpYSBmdW5jdGlvbiBBUElzLgoKICAgIElmIGNhbGxlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGl0IHByaW50cyB0aGUgcGxhdGZvcm0KICAgIGluZm9ybWF0aW9uIGNvbmNhdGVuYXRlZCBhcyBzaW5nbGUgc3RyaW5nIHRvIHN0ZG91dC4gVGhlIG91dHB1dAogICAgZm9ybWF0IGlzIHVzYWJsZSBhcyBwYXJ0IG9mIGEgZmlsZW5hbWUuCgoiIiIKIyAgICBUaGlzIG1vZHVsZSBpcyBtYWludGFpbmVkIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyA8bWFsQGVnZW5peC5jb20+LgojICAgIElmIHlvdSBmaW5kIHByb2JsZW1zLCBwbGVhc2Ugc3VibWl0IGJ1ZyByZXBvcnRzL3BhdGNoZXMgdmlhIHRoZQojICAgIFB5dGhvbiBidWcgdHJhY2tlciAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZykgYW5kIGFzc2lnbiB0aGVtIHRvICJsZW1idXJnIi4KIwojICAgIFN0aWxsIG5lZWRlZDoKIyAgICAqIHN1cHBvcnQgZm9yIE1TLURPUyAoUHl0aG9uRFggPykKIyAgICAqIHN1cHBvcnQgZm9yIEFtaWdhIGFuZCBvdGhlciBzdGlsbCB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMgcnVubmluZyBQeXRob24KIyAgICAqIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgTGludXggZGlzdHJpYnV0aW9ucwojCiMgICAgTWFueSB0aGFua3MgdG8gYWxsIHRob3NlIHdobyBoZWxwZWQgYWRkaW5nIHBsYXRmb3JtLXNwZWNpZmljCiMgICAgY2hlY2tzIChpbiBubyBwYXJ0aWN1bGFyIG9yZGVyKToKIwojICAgICAgQ2hhcmxlcyBHIFdhbGRtYW4sIERhdmlkIEFybm9sZCwgR29yZG9uIE1jTWlsbGFuLCBCZW4gRGFybmVsbCwKIyAgICAgIEplZmYgQmF1ZXIsIENsaWZmIENyYXdmb3JkLCBJdmFuIFZhbiBMYW5pbmdoYW0sIEpvc2VmCiMgICAgICBCZXRhbmNvdXJ0LCBSYW5kYWxsIEhvcHBlciwgS2FybCBQdXRsYW5kLCBKb2huIEZhcnJlbGwsIEdyZWcKIyAgICAgIEFuZHJ1aywgSnVzdCB2YW4gUm9zc3VtLCBUaG9tYXMgSGVsbGVyLCBNYXJrIFIuIExldmluc29uLCBNYXJrCiMgICAgICBIYW1tb25kLCBCaWxsIFR1dHQsIEhhbnMgTm93YWssIFV3ZSBaZXNzaW4gKE9wZW5WTVMgc3VwcG9ydCksCiMgICAgICBDb2xpbiBLb25nLCBUcmVudCBNaWNrLCBHdWlkbyB2YW4gUm9zc3VtLCBBbnRob255IEJheHRlciwgU3RldmUKIyAgICAgIERvd2VyCiMKIyAgICBIaXN0b3J5OgojCiMgICAgPHNlZSBDVlMgYW5kIFNWTiBjaGVja2luIG1lc3NhZ2VzIGZvciBoaXN0b3J5PgojCiMgICAgMS4wLjggLSBjaGFuZ2VkIFdpbmRvd3Mgc3VwcG9ydCB0byByZWFkIHZlcnNpb24gZnJvbSBrZXJuZWwzMi5kbGwKIyAgICAxLjAuNyAtIGFkZGVkIERFVl9OVUxMCiMgICAgMS4wLjYgLSBhZGRlZCBsaW51eF9kaXN0cmlidXRpb24oKQojICAgIDEuMC41IC0gZml4ZWQgSmF2YSBzdXBwb3J0IHRvIGFsbG93IHJ1bm5pbmcgdGhlIG1vZHVsZSBvbiBKeXRob24KIyAgICAxLjAuNCAtIGFkZGVkIElyb25QeXRob24gc3VwcG9ydAojICAgIDEuMC4zIC0gYWRkZWQgbm9ybWFsaXphdGlvbiBvZiBXaW5kb3dzIHN5c3RlbSBuYW1lCiMgICAgMS4wLjIgLSBhZGRlZCBtb3JlIFdpbmRvd3Mgc3VwcG9ydAojICAgIDEuMC4xIC0gcmVmb3JtYXR0ZWQgdG8gbWFrZSBkb2MucHkgaGFwcHkKIyAgICAxLjAuMCAtIHJlZm9ybWF0dGVkIGEgYml0IGFuZCBjaGVja2VkIGludG8gUHl0aG9uIENWUwojICAgIDAuOC4wIC0gYWRkZWQgc3lzLnZlcnNpb24gcGFyc2VyIGFuZCB2YXJpb3VzIG5ldyBhY2Nlc3MKIyAgICAgICAgICAgIEFQSXMgKHB5dGhvbl92ZXJzaW9uKCksIHB5dGhvbl9jb21waWxlcigpLCBldGMuKQojICAgIDAuNy4yIC0gZml4ZWQgYXJjaGl0ZWN0dXJlKCkgdG8gdXNlIHNpemVvZihwb2ludGVyKSB3aGVyZSBhdmFpbGFibGUKIyAgICAwLjcuMSAtIGFkZGVkIHN1cHBvcnQgZm9yIENhbGRlcmEgT3BlbkxpbnV4CiMgICAgMC43LjAgLSBzb21lIGZpeGVzIGZvciBXaW5DRTsgdW50YWJpZmllZCB0aGUgc291cmNlIGZpbGUKIyAgICAwLjYuMiAtIHN1cHBvcnQgZm9yIE9wZW5WTVMgLSByZXF1aXJlcyB2ZXJzaW9uIDEuNS4yLVYwMDYgb3IgaGlnaGVyIGFuZAojICAgICAgICAgICAgdm1zX2xpYi5nZXRzeWkoKSBjb25maWd1cmVkCiMgICAgMC42LjEgLSBhZGRlZCBjb2RlIHRvIHByZXZlbnQgJ3VuYW1lIC1wJyBvbiBwbGF0Zm9ybXMgd2hpY2ggYXJlCiMgICAgICAgICAgICBrbm93biBub3QgdG8gc3VwcG9ydCBpdAojICAgIDAuNi4wIC0gZml4ZWQgd2luMzJfdmVyKCkgdG8gaG9wZWZ1bGx5IHdvcmsgb24gV2luOTUsOTgsTlQgYW5kIFdpbjJrOwojICAgICAgICAgICAgZGlkIHNvbWUgY2xlYW51cCBvZiB0aGUgaW50ZXJmYWNlcyAtIHNvbWUgQVBJcyBoYXZlIGNoYW5nZWQKIyAgICAwLjUuNSAtIGZpeGVkIGFub3RoZXIgdHlwZSBpbiB0aGUgTWFjT1MgY29kZS4uLiBzaG91bGQgaGF2ZQojICAgICAgICAgICAgdXNlZCBtb3JlIGNvZmZlZSB0b2RheSA7LSkKIyAgICAwLjUuNCAtIGZpeGVkIGEgZmV3IHR5cG9zIGluIHRoZSBNYWNPUyBjb2RlCiMgICAgMC41LjMgLSBhZGRlZCBleHBlcmltZW50YWwgTWFjT1Mgc3VwcG9ydDsgYWRkZWQgYmV0dGVyIHBvcGVuKCkKIyAgICAgICAgICAgIHdvcmthcm91bmRzIGluIF9zeXNjbWRfdmVyKCkgLS0gc3RpbGwgbm90IDEwMCUgZWxlZ2FudAojICAgICAgICAgICAgdGhvdWdoCiMgICAgMC41LjIgLSBmaXhlZCB1bmFtZSgpIHRvIHJldHVybiAnJyBpbnN0ZWFkIG9mICd1bmtub3duJyBpbiBhbGwKIyAgICAgICAgICAgIHJldHVybiB2YWx1ZXMgKHRoZSBzeXN0ZW0gdW5hbWUgY29tbWFuZCB0ZW5kcyB0byByZXR1cm4KIyAgICAgICAgICAgICd1bmtub3duJyBpbnN0ZWFkIG9mIGp1c3QgbGVhdmluZyB0aGUgZmllbGQgZW1wdHkpCiMgICAgMC41LjEgLSBpbmNsdWRlZCBjb2RlIGZvciBzbGFja3dhcmUgZGlzdDsgYWRkZWQgZXhjZXB0aW9uIGhhbmRsZXJzCiMgICAgICAgICAgICB0byBjb3ZlciB1cCBzaXR1YXRpb25zIHdoZXJlIHBsYXRmb3JtcyBkb24ndCBoYXZlIG9zLnBvcGVuCiMgICAgICAgICAgICAoZS5nLiBNYWMpIG9yIGZhaWwgb24gc29ja2V0LmdldGhvc3RuYW1lKCk7IGZpeGVkIGxpYmMKIyAgICAgICAgICAgIGRldGVjdGlvbiBSRQojICAgIDAuNS4wIC0gY2hhbmdlZCB0aGUgQVBJIG5hbWVzIHJlZmVycmluZyB0byBzeXN0ZW0gY29tbWFuZHMgdG8gKnN5c2NtZCo7CiMgICAgICAgICAgICBhZGRlZCBqYXZhX3ZlcigpOyBtYWRlIHN5c2NtZF92ZXIoKSBhIHByaXZhdGUKIyAgICAgICAgICAgIEFQSSAod2FzIHN5c3RlbV92ZXIoKSBpbiBwcmV2aW91cyB2ZXJzaW9ucykgLS0gdXNlIHVuYW1lKCkKIyAgICAgICAgICAgIGluc3RlYWQ7IGV4dGVuZGVkIHRoZSB3aW4zMl92ZXIoKSB0byBhbHNvIHJldHVybiBwcm9jZXNzb3IKIyAgICAgICAgICAgIHR5cGUgaW5mb3JtYXRpb24KIyAgICAwLjQuMCAtIGFkZGVkIHdpbjMyX3ZlcigpIGFuZCBtb2RpZmllZCB0aGUgcGxhdGZvcm0oKSBvdXRwdXQgZm9yIFdpblhYCiMgICAgMC4zLjQgLSBmaXhlZCBhIGJ1ZyBpbiBfZm9sbG93X3N5bWxpbmtzKCkKIyAgICAwLjMuMyAtIGZpeGVkIHBvcGVuKCkgYW5kICJmaWxlIiBjb21tYW5kIGludm9jYXRpb24gYnVncwojICAgIDAuMy4yIC0gYWRkZWQgYXJjaGl0ZWN0dXJlKCkgQVBJIGFuZCBzdXBwb3J0IGZvciBpdCBpbiBwbGF0Zm9ybSgpCiMgICAgMC4zLjEgLSBmaXhlZCBzeXNjbWRfdmVyKCkgUkUgdG8gc3VwcG9ydCBXaW5kb3dzIE5UCiMgICAgMC4zLjAgLSBhZGRlZCBzeXN0ZW0gYWxpYXMgc3VwcG9ydAojICAgIDAuMi4zIC0gcmVtb3ZlZCAnd2luY2UnIGFnYWluLi4uIG9oIHdlbGwuCiMgICAgMC4yLjIgLSBhZGRlZCAnd2luY2UnIHRvIHN5c2NtZF92ZXIoKSBzdXBwb3J0ZWQgcGxhdGZvcm1zCiMgICAgMC4yLjEgLSBhZGRlZCBjYWNoZSBsb2dpYyBhbmQgY2hhbmdlZCB0aGUgcGxhdGZvcm0gc3RyaW5nIGZvcm1hdAojICAgIDAuMi4wIC0gY2hhbmdlZCB0aGUgQVBJIHRvIHVzZSBmdW5jdGlvbnMgaW5zdGVhZCBvZiBtb2R1bGUgZ2xvYmFscwojICAgICAgICAgICAgc2luY2Ugc29tZSBhY3Rpb24gdGFrZSB0b28gbG9uZyB0byBiZSBydW4gb24gbW9kdWxlIGltcG9ydAojICAgIDAuMS4wIC0gZmlyc3QgcmVsZWFzZQojCiMgICAgWW91IGNhbiBhbHdheXMgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBhdDoKIwojICAgICAgICAgICAgIGh0dHA6Ly93d3cuZWdlbml4LmNvbS9maWxlcy9weXRob24vcGxhdGZvcm0ucHkKIwojICAgIElmIHRoYXQgVVJMIHNob3VsZCBmYWlsLCB0cnkgY29udGFjdGluZyB0aGUgYXV0aG9yLgoKX19jb3B5cmlnaHRfXyA9ICIiIgogICAgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDAsIE1hcmMtQW5kcmUgTGVtYnVyZzsgbWFpbHRvOm1hbEBsZW1idXJnLmNvbQogICAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMTAsIGVHZW5peC5jb20gU29mdHdhcmUgR21iSDsgbWFpbHRvOmluZm9AZWdlbml4LmNvbQoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwogICAgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIG9yIHJveWFsdHkgaXMgaGVyZWJ5IGdyYW50ZWQsCiAgICBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0CiAgICBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4KICAgIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiBvciBwb3J0aW9ucyB0aGVyZW9mLCBpbmNsdWRpbmcgbW9kaWZpY2F0aW9ucywKICAgIHRoYXQgeW91IG1ha2UuCgogICAgRUdFTklYLkNPTSBTT0ZUV0FSRSBHTUJIIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTwogICAgVEhJUyBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAogICAgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLAogICAgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HCiAgICBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAogICAgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KICAgIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFICEKCiIiIgoKX192ZXJzaW9uX18gPSAnMS4wLjgnCgppbXBvcnQgY29sbGVjdGlvbnMKaW1wb3J0IG9zCmltcG9ydCByZQppbXBvcnQgc3lzCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IGl0ZXJ0b29scwoKIyMjIEdsb2JhbHMgJiBDb25zdGFudHMKCiMgSGVscGVyIGZvciBjb21wYXJpbmcgdHdvIHZlcnNpb24gbnVtYmVyIHN0cmluZ3MuCiMgQmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBQSFAncyB2ZXJzaW9uX2NvbXBhcmUoKToKIyBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24udmVyc2lvbi1jb21wYXJlLnBocAoKX3Zlcl9zdGFnZXMgPSB7CiAgICAjIGFueSBzdHJpbmcgbm90IGZvdW5kIGluIHRoaXMgZGljdCwgd2lsbCBnZXQgMCBhc3NpZ25lZAogICAgJ2Rldic6IDEwLAogICAgJ2FscGhhJzogMjAsICdhJzogMjAsCiAgICAnYmV0YSc6IDMwLCAnYic6IDMwLAogICAgJ2MnOiA0MCwKICAgICdSQyc6IDUwLCAncmMnOiA1MCwKICAgICMgbnVtYmVyLCB3aWxsIGdldCAxMDAgYXNzaWduZWQKICAgICdwbCc6IDIwMCwgJ3AnOiAyMDAsCn0KCl9jb21wb25lbnRfcmUgPSByZS5jb21waWxlKHInKFswLTldK3xbLl8rLV0pJykKCmRlZiBfY29tcGFyYWJsZV92ZXJzaW9uKHZlcnNpb24pOgogICAgcmVzdWx0ID0gW10KICAgIGZvciB2IGluIF9jb21wb25lbnRfcmUuc3BsaXQodmVyc2lvbik6CiAgICAgICAgaWYgdiBub3QgaW4gJy5fKy0nOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB2ID0gaW50KHYsIDEwKQogICAgICAgICAgICAgICAgdCA9IDEwMAogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHQgPSBfdmVyX3N0YWdlcy5nZXQodiwgMCkKICAgICAgICAgICAgcmVzdWx0LmV4dGVuZCgodCwgdikpCiAgICByZXR1cm4gcmVzdWx0CgojIyMgUGxhdGZvcm0gc3BlY2lmaWMgQVBJcwoKX2xpYmNfc2VhcmNoID0gcmUuY29tcGlsZShiJyhfX2xpYmNfaW5pdCknCiAgICAgICAgICAgICAgICAgICAgICAgICAgYid8JwogICAgICAgICAgICAgICAgICAgICAgICAgIGInKEdMSUJDXyhbMC05Ll0rKSknCiAgICAgICAgICAgICAgICAgICAgICAgICAgYid8JwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCgpkZWYgbGliY192ZXIoZXhlY3V0YWJsZT1Ob25lLCBsaWI9JycsIHZlcnNpb249JycsIGNodW5rc2l6ZT0xNjM4NCk6CgogICAgIiIiIFRyaWVzIHRvIGRldGVybWluZSB0aGUgbGliYyB2ZXJzaW9uIHRoYXQgdGhlIGZpbGUgZXhlY3V0YWJsZQogICAgICAgICh3aGljaCBkZWZhdWx0cyB0byB0aGUgUHl0aG9uIGludGVycHJldGVyKSBpcyBsaW5rZWQgYWdhaW5zdC4KCiAgICAgICAgUmV0dXJucyBhIHR1cGxlIG9mIHN0cmluZ3MgKGxpYix2ZXJzaW9uKSB3aGljaCBkZWZhdWx0IHRvIHRoZQogICAgICAgIGdpdmVuIHBhcmFtZXRlcnMgaW4gY2FzZSB0aGUgbG9va3VwIGZhaWxzLgoKICAgICAgICBOb3RlIHRoYXQgdGhlIGZ1bmN0aW9uIGhhcyBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgaG93IGRpZmZlcmVudAogICAgICAgIGxpYmMgdmVyc2lvbnMgYWRkIHN5bWJvbHMgdG8gdGhlIGV4ZWN1dGFibGUgYW5kIHRodXMgaXMgcHJvYmFibHkKICAgICAgICBvbmx5IHVzYWJsZSBmb3IgZXhlY3V0YWJsZXMgY29tcGlsZWQgdXNpbmcgZ2NjLgoKICAgICAgICBUaGUgZmlsZSBpcyByZWFkIGFuZCBzY2FubmVkIGluIGNodW5rcyBvZiBjaHVua3NpemUgYnl0ZXMuCgogICAgIiIiCiAgICBpZiBub3QgZXhlY3V0YWJsZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZlciA9IG9zLmNvbmZzdHIoJ0NTX0dOVV9MSUJDX1ZFUlNJT04nKQogICAgICAgICAgICAjIHBhcnNlICdnbGliYyAyLjI4JyBhcyAoJ2dsaWJjJywgJzIuMjgnKQogICAgICAgICAgICBwYXJ0cyA9IHZlci5zcGxpdChtYXhzcGxpdD0xKQogICAgICAgICAgICBpZiBsZW4ocGFydHMpID09IDI6CiAgICAgICAgICAgICAgICByZXR1cm4gdHVwbGUocGFydHMpCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgICAgICMgb3MuY29uZnN0cigpIG9yIENTX0dOVV9MSUJDX1ZFUlNJT04gdmFsdWUgbm90IGF2YWlsYWJsZQogICAgICAgICAgICBwYXNzCgogICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQoKICAgICAgICBpZiBub3QgZXhlY3V0YWJsZToKICAgICAgICAgICAgIyBzeXMuZXhlY3V0YWJsZSBpcyBub3Qgc2V0LgogICAgICAgICAgICByZXR1cm4gbGliLCB2ZXJzaW9uCgogICAgViA9IF9jb21wYXJhYmxlX3ZlcnNpb24KICAgICMgV2UgdXNlIG9zLnBhdGgucmVhbHBhdGgoKQogICAgIyBoZXJlIHRvIHdvcmsgYXJvdW5kIHByb2JsZW1zIHdpdGggQ3lnd2luIG5vdCBiZWluZwogICAgIyBhYmxlIHRvIG9wZW4gc3ltbGlua3MgZm9yIHJlYWRpbmcKICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLnJlYWxwYXRoKGV4ZWN1dGFibGUpCiAgICB3aXRoIG9wZW4oZXhlY3V0YWJsZSwgJ3JiJykgYXMgZjoKICAgICAgICBiaW5hcnkgPSBmLnJlYWQoY2h1bmtzaXplKQogICAgICAgIHBvcyA9IDAKICAgICAgICB3aGlsZSBwb3MgPCBsZW4oYmluYXJ5KToKICAgICAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgogICAgICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LCBwb3MpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBtID0gTm9uZQogICAgICAgICAgICBpZiBub3QgbSBvciBtLmVuZCgpID09IGxlbihiaW5hcnkpOgogICAgICAgICAgICAgICAgY2h1bmsgPSBmLnJlYWQoY2h1bmtzaXplKQogICAgICAgICAgICAgICAgaWYgY2h1bms6CiAgICAgICAgICAgICAgICAgICAgYmluYXJ5ID0gYmluYXJ5W21heChwb3MsIGxlbihiaW5hcnkpIC0gMTAwMCk6XSArIGNodW5rCiAgICAgICAgICAgICAgICAgICAgcG9zID0gMAogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBsaWJjaW5pdCwgZ2xpYmMsIGdsaWJjdmVyc2lvbiwgc28sIHRocmVhZHMsIHNvdmVyc2lvbiA9IFsKICAgICAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcwogICAgICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KICAgICAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6CiAgICAgICAgICAgICAgICBsaWIgPSAnbGliYycKICAgICAgICAgICAgZWxpZiBnbGliYzoKICAgICAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgogICAgICAgICAgICAgICAgICAgIGxpYiA9ICdnbGliYycKICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCiAgICAgICAgICAgICAgICBlbGlmIFYoZ2xpYmN2ZXJzaW9uKSA+IFYodmVyc2lvbik6CiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGdsaWJjdmVyc2lvbgogICAgICAgICAgICBlbGlmIHNvOgogICAgICAgICAgICAgICAgaWYgbGliICE9ICdnbGliYyc6CiAgICAgICAgICAgICAgICAgICAgbGliID0gJ2xpYmMnCiAgICAgICAgICAgICAgICAgICAgaWYgc292ZXJzaW9uIGFuZCAobm90IHZlcnNpb24gb3IgVihzb3ZlcnNpb24pID4gVih2ZXJzaW9uKSk6CiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzb3ZlcnNpb24KICAgICAgICAgICAgICAgICAgICBpZiB0aHJlYWRzIGFuZCB2ZXJzaW9uWy1sZW4odGhyZWFkcyk6XSAhPSB0aHJlYWRzOgogICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbiArIHRocmVhZHMKICAgICAgICAgICAgcG9zID0gbS5lbmQoKQogICAgcmV0dXJuIGxpYiwgdmVyc2lvbgoKZGVmIF9ub3JtX3ZlcnNpb24odmVyc2lvbiwgYnVpbGQ9JycpOgoKICAgICIiIiBOb3JtYWxpemUgdGhlIHZlcnNpb24gYW5kIGJ1aWxkIHN0cmluZ3MgYW5kIHJldHVybiBhIHNpbmdsZQogICAgICAgIHZlcnNpb24gc3RyaW5nIHVzaW5nIHRoZSBmb3JtYXQgbWFqb3IubWlub3IuYnVpbGQgKG9yIHBhdGNobGV2ZWwpLgogICAgIiIiCiAgICBsID0gdmVyc2lvbi5zcGxpdCgnLicpCiAgICBpZiBidWlsZDoKICAgICAgICBsLmFwcGVuZChidWlsZCkKICAgIHRyeToKICAgICAgICBzdHJpbmdzID0gbGlzdChtYXAoc3RyLCBtYXAoaW50LCBsKSkpCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICBzdHJpbmdzID0gbAogICAgdmVyc2lvbiA9ICcuJy5qb2luKHN0cmluZ3NbOjNdKQogICAgcmV0dXJuIHZlcnNpb24KCl92ZXJfb3V0cHV0ID0gcmUuY29tcGlsZShyJyg/OihbXHcgXSspIChbXHcuXSspICcKICAgICAgICAgICAgICAgICAgICAgICAgIHInLionCiAgICAgICAgICAgICAgICAgICAgICAgICByJ1xbLiogKFtcZC5dKylcXSknKQoKIyBFeGFtcGxlcyBvZiBWRVIgY29tbWFuZCBvdXRwdXQ6CiMKIyAgIFdpbmRvd3MgMjAwMDogIE1pY3Jvc29mdCBXaW5kb3dzIDIwMDAgW1ZlcnNpb24gNS4wMC4yMTk1XQojICAgV2luZG93cyBYUDogICAgTWljcm9zb2Z0IFdpbmRvd3MgWFAgW1ZlcnNpb24gNS4xLjI2MDBdCiMgICBXaW5kb3dzIFZpc3RhOiBNaWNyb3NvZnQgV2luZG93cyBbVmVyc2lvbiA2LjAuNjAwMl0KIwojIE5vdGUgdGhhdCB0aGUgIlZlcnNpb24iIHN0cmluZyBnZXRzIGxvY2FsaXplZCBvbiBkaWZmZXJlbnQKIyBXaW5kb3dzIHZlcnNpb25zLgoKZGVmIF9zeXNjbWRfdmVyKHN5c3RlbT0nJywgcmVsZWFzZT0nJywgdmVyc2lvbj0nJywKCiAgICAgICAgICAgICAgIHN1cHBvcnRlZF9wbGF0Zm9ybXM9KCd3aW4zMicsICd3aW4xNicsICdkb3MnKSk6CgogICAgIiIiIFRyaWVzIHRvIGZpZ3VyZSBvdXQgdGhlIE9TIHZlcnNpb24gdXNlZCBhbmQgcmV0dXJucwogICAgICAgIGEgdHVwbGUgKHN5c3RlbSwgcmVsZWFzZSwgdmVyc2lvbikuCgogICAgICAgIEl0IHVzZXMgdGhlICJ2ZXIiIHNoZWxsIGNvbW1hbmQgZm9yIHRoaXMgd2hpY2ggaXMga25vd24KICAgICAgICB0byBleGlzdHMgb24gV2luZG93cywgRE9TLiBYWFggT3RoZXJzIHRvbyA/CgogICAgICAgIEluIGNhc2UgdGhpcyBmYWlscywgdGhlIGdpdmVuIHBhcmFtZXRlcnMgYXJlIHVzZWQgYXMKICAgICAgICBkZWZhdWx0cy4KCiAgICAiIiIKICAgIGlmIHN5cy5wbGF0Zm9ybSBub3QgaW4gc3VwcG9ydGVkX3BsYXRmb3JtczoKICAgICAgICByZXR1cm4gc3lzdGVtLCByZWxlYXNlLCB2ZXJzaW9uCgogICAgIyBUcnkgc29tZSBjb21tb24gY21kIHN0cmluZ3MKICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICBmb3IgY21kIGluICgndmVyJywgJ2NvbW1hbmQgL2MgdmVyJywgJ2NtZCAvYyB2ZXInKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGluZm8gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLkRFVk5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ImxvY2FsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlKQogICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpIGFzIHdoeToKICAgICAgICAgICAgI3ByaW50KCdDb21tYW5kICVzIGZhaWxlZDogJXMnICUgKGNtZCwgd2h5KSkKICAgICAgICAgICAgY29udGludWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBicmVhawogICAgZWxzZToKICAgICAgICByZXR1cm4gc3lzdGVtLCByZWxlYXNlLCB2ZXJzaW9uCgogICAgIyBQYXJzZSB0aGUgb3V0cHV0CiAgICBpbmZvID0gaW5mby5zdHJpcCgpCiAgICBtID0gX3Zlcl9vdXRwdXQubWF0Y2goaW5mbykKICAgIGlmIG0gaXMgbm90IE5vbmU6CiAgICAgICAgc3lzdGVtLCByZWxlYXNlLCB2ZXJzaW9uID0gbS5ncm91cHMoKQogICAgICAgICMgU3RyaXAgdHJhaWxpbmcgZG90cyBmcm9tIHZlcnNpb24gYW5kIHJlbGVhc2UKICAgICAgICBpZiByZWxlYXNlWy0xXSA9PSAnLic6CiAgICAgICAgICAgIHJlbGVhc2UgPSByZWxlYXNlWzotMV0KICAgICAgICBpZiB2ZXJzaW9uWy0xXSA9PSAnLic6CiAgICAgICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uWzotMV0KICAgICAgICAjIE5vcm1hbGl6ZSB0aGUgdmVyc2lvbiBhbmQgYnVpbGQgc3RyaW5ncyAoZWxpbWluYXRpbmcgYWRkaXRpb25hbAogICAgICAgICMgemVyb3MpCiAgICAgICAgdmVyc2lvbiA9IF9ub3JtX3ZlcnNpb24odmVyc2lvbikKICAgIHJldHVybiBzeXN0ZW0sIHJlbGVhc2UsIHZlcnNpb24KCl9XSU4zMl9DTElFTlRfUkVMRUFTRVMgPSB7CiAgICAoNSwgMCk6ICIyMDAwIiwKICAgICg1LCAxKTogIlhQIiwKICAgICMgU3RyaWN0bHksIDUuMiBjbGllbnQgaXMgWFAgNjQtYml0LCBidXQgcGxhdGZvcm0ucHkgaGlzdG9yaWNhbGx5CiAgICAjIGhhcyBhbHdheXMgY2FsbGVkIGl0IDIwMDMgU2VydmVyCiAgICAoNSwgMik6ICIyMDAzU2VydmVyIiwKICAgICg1LCBOb25lKTogInBvc3QyMDAzIiwKCiAgICAoNiwgMCk6ICJWaXN0YSIsCiAgICAoNiwgMSk6ICI3IiwKICAgICg2LCAyKTogIjgiLAogICAgKDYsIDMpOiAiOC4xIiwKICAgICg2LCBOb25lKTogInBvc3Q4LjEiLAoKICAgICgxMCwgMCk6ICIxMCIsCiAgICAoMTAsIE5vbmUpOiAicG9zdDEwIiwKfQoKIyBTZXJ2ZXIgcmVsZWFzZSBuYW1lIGxvb2t1cCB3aWxsIGRlZmF1bHQgdG8gY2xpZW50IG5hbWVzIGlmIG5lY2Vzc2FyeQpfV0lOMzJfU0VSVkVSX1JFTEVBU0VTID0gewogICAgKDUsIDIpOiAiMjAwM1NlcnZlciIsCgogICAgKDYsIDApOiAiMjAwOFNlcnZlciIsCiAgICAoNiwgMSk6ICIyMDA4U2VydmVyUjIiLAogICAgKDYsIDIpOiAiMjAxMlNlcnZlciIsCiAgICAoNiwgMyk6ICIyMDEyU2VydmVyUjIiLAogICAgKDYsIE5vbmUpOiAicG9zdDIwMTJTZXJ2ZXJSMiIsCn0KCmRlZiB3aW4zMl9pc19pb3QoKToKICAgIHJldHVybiB3aW4zMl9lZGl0aW9uKCkgaW4gKCdJb1RVQVAnLCAnTmFub1NlcnZlcicsICdXaW5kb3dzQ29yZUhlYWRsZXNzJywgJ0lvVEVkZ2VPUycpCgpkZWYgd2luMzJfZWRpdGlvbigpOgogICAgdHJ5OgogICAgICAgIHRyeToKICAgICAgICAgICAgaW1wb3J0IHdpbnJlZwogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgaW1wb3J0IF93aW5yZWcgYXMgd2lucmVnCiAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGN2a2V5ID0gcidTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93cyBOVFxDdXJyZW50VmVyc2lvbicKICAgICAgICAgICAgd2l0aCB3aW5yZWcuT3BlbktleUV4KHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGN2a2V5KSBhcyBrZXk6CiAgICAgICAgICAgICAgICByZXR1cm4gd2lucmVnLlF1ZXJ5VmFsdWVFeChrZXksICdFZGl0aW9uSWQnKVswXQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBwYXNzCgogICAgcmV0dXJuIE5vbmUKCmRlZiB3aW4zMl92ZXIocmVsZWFzZT0nJywgdmVyc2lvbj0nJywgY3NkPScnLCBwdHlwZT0nJyk6CiAgICB0cnk6CiAgICAgICAgZnJvbSBzeXMgaW1wb3J0IGdldHdpbmRvd3N2ZXJzaW9uCiAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgcmV0dXJuIHJlbGVhc2UsIHZlcnNpb24sIGNzZCwgcHR5cGUKCiAgICB3aW52ZXIgPSBnZXR3aW5kb3dzdmVyc2lvbigpCiAgICB0cnk6CiAgICAgICAgbWFqb3IsIG1pbm9yLCBidWlsZCA9IG1hcChpbnQsIF9zeXNjbWRfdmVyKClbMl0uc3BsaXQoJy4nKSkKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIG1ham9yLCBtaW5vciwgYnVpbGQgPSB3aW52ZXIucGxhdGZvcm1fdmVyc2lvbiBvciB3aW52ZXJbOjNdCiAgICB2ZXJzaW9uID0gJ3swfS57MX0uezJ9Jy5mb3JtYXQobWFqb3IsIG1pbm9yLCBidWlsZCkKCiAgICByZWxlYXNlID0gKF9XSU4zMl9DTElFTlRfUkVMRUFTRVMuZ2V0KChtYWpvciwgbWlub3IpKSBvcgogICAgICAgICAgICAgICBfV0lOMzJfQ0xJRU5UX1JFTEVBU0VTLmdldCgobWFqb3IsIE5vbmUpKSBvcgogICAgICAgICAgICAgICByZWxlYXNlKQoKICAgICMgZ2V0d2luZG93c3ZlcnNpb24oKSByZWZsZWN0IHRoZSBjb21wYXRpYmlsaXR5IG1vZGUgUHl0aG9uIGlzCiAgICAjIHJ1bm5pbmcgdW5kZXIsIGFuZCBzbyB0aGUgc2VydmljZSBwYWNrIHZhbHVlIGlzIG9ubHkgZ29pbmcgdG8gYmUKICAgICMgdmFsaWQgaWYgdGhlIHZlcnNpb25zIG1hdGNoLgogICAgaWYgd2ludmVyWzoyXSA9PSAobWFqb3IsIG1pbm9yKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNzZCA9ICdTUHt9Jy5mb3JtYXQod2ludmVyLnNlcnZpY2VfcGFja19tYWpvcikKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIGlmIGNzZFs6MTNdID09ICdTZXJ2aWNlIFBhY2sgJzoKICAgICAgICAgICAgICAgIGNzZCA9ICdTUCcgKyBjc2RbMTM6XQoKICAgICMgVkVSX05UX1NFUlZFUiA9IDMKICAgIGlmIGdldGF0dHIod2ludmVyLCAncHJvZHVjdF90eXBlJywgTm9uZSkgPT0gMzoKICAgICAgICByZWxlYXNlID0gKF9XSU4zMl9TRVJWRVJfUkVMRUFTRVMuZ2V0KChtYWpvciwgbWlub3IpKSBvcgogICAgICAgICAgICAgICAgICAgX1dJTjMyX1NFUlZFUl9SRUxFQVNFUy5nZXQoKG1ham9yLCBOb25lKSkgb3IKICAgICAgICAgICAgICAgICAgIHJlbGVhc2UpCgogICAgdHJ5OgogICAgICAgIHRyeToKICAgICAgICAgICAgaW1wb3J0IHdpbnJlZwogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgaW1wb3J0IF93aW5yZWcgYXMgd2lucmVnCiAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGN2a2V5ID0gcidTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93cyBOVFxDdXJyZW50VmVyc2lvbicKICAgICAgICAgICAgd2l0aCB3aW5yZWcuT3BlbktleUV4KHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGN2a2V5KSBhcyBrZXk6CiAgICAgICAgICAgICAgICBwdHlwZSA9IHdpbnJlZy5RdWVyeVZhbHVlRXgoa2V5LCAnQ3VycmVudFR5cGUnKVswXQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBwYXNzCgogICAgcmV0dXJuIHJlbGVhc2UsIHZlcnNpb24sIGNzZCwgcHR5cGUKCgpkZWYgX21hY192ZXJfeG1sKCk6CiAgICBmbiA9ICcvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzL1N5c3RlbVZlcnNpb24ucGxpc3QnCiAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZm4pOgogICAgICAgIHJldHVybiBOb25lCgogICAgdHJ5OgogICAgICAgIGltcG9ydCBwbGlzdGxpYgogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIHJldHVybiBOb25lCgogICAgd2l0aCBvcGVuKGZuLCAncmInKSBhcyBmOgogICAgICAgIHBsID0gcGxpc3RsaWIubG9hZChmKQogICAgcmVsZWFzZSA9IHBsWydQcm9kdWN0VmVyc2lvbiddCiAgICB2ZXJzaW9uaW5mbyA9ICgnJywgJycsICcnKQogICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZQogICAgaWYgbWFjaGluZSBpbiAoJ3BwYycsICdQb3dlciBNYWNpbnRvc2gnKToKICAgICAgICAjIENhbm9uaWNhbCBuYW1lCiAgICAgICAgbWFjaGluZSA9ICdQb3dlclBDJwoKICAgIHJldHVybiByZWxlYXNlLCB2ZXJzaW9uaW5mbywgbWFjaGluZQoKCmRlZiBtYWNfdmVyKHJlbGVhc2U9JycsIHZlcnNpb25pbmZvPSgnJywgJycsICcnKSwgbWFjaGluZT0nJyk6CgogICAgIiIiIEdldCBtYWNPUyB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gaXQgYXMgdHVwbGUgKHJlbGVhc2UsCiAgICAgICAgdmVyc2lvbmluZm8sIG1hY2hpbmUpIHdpdGggdmVyc2lvbmluZm8gYmVpbmcgYSB0dXBsZSAodmVyc2lvbiwKICAgICAgICBkZXZfc3RhZ2UsIG5vbl9yZWxlYXNlX3ZlcnNpb24pLgoKICAgICAgICBFbnRyaWVzIHdoaWNoIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGFyZSBzZXQgdG8gdGhlIHBhcmFtZXRlciB2YWx1ZXMKICAgICAgICB3aGljaCBkZWZhdWx0IHRvICcnLiBBbGwgdHVwbGUgZW50cmllcyBhcmUgc3RyaW5ncy4KICAgICIiIgoKICAgICMgRmlyc3QgdHJ5IHJlYWRpbmcgdGhlIGluZm9ybWF0aW9uIGZyb20gYW4gWE1MIGZpbGUgd2hpY2ggc2hvdWxkCiAgICAjIGFsd2F5cyBiZSBwcmVzZW50CiAgICBpbmZvID0gX21hY192ZXJfeG1sKCkKICAgIGlmIGluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIGluZm8KCiAgICAjIElmIHRoYXQgYWxzbyBkb2Vzbid0IHdvcmsgcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlcwogICAgcmV0dXJuIHJlbGVhc2UsIHZlcnNpb25pbmZvLCBtYWNoaW5lCgpkZWYgX2phdmFfZ2V0cHJvcChuYW1lLCBkZWZhdWx0KToKCiAgICBmcm9tIGphdmEubGFuZyBpbXBvcnQgU3lzdGVtCiAgICB0cnk6CiAgICAgICAgdmFsdWUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkobmFtZSkKICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgICAgIHJldHVybiB2YWx1ZQogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIHJldHVybiBkZWZhdWx0CgpkZWYgamF2YV92ZXIocmVsZWFzZT0nJywgdmVuZG9yPScnLCB2bWluZm89KCcnLCAnJywgJycpLCBvc2luZm89KCcnLCAnJywgJycpKToKCiAgICAiIiIgVmVyc2lvbiBpbnRlcmZhY2UgZm9yIEp5dGhvbi4KCiAgICAgICAgUmV0dXJucyBhIHR1cGxlIChyZWxlYXNlLCB2ZW5kb3IsIHZtaW5mbywgb3NpbmZvKSB3aXRoIHZtaW5mbyBiZWluZwogICAgICAgIGEgdHVwbGUgKHZtX25hbWUsIHZtX3JlbGVhc2UsIHZtX3ZlbmRvcikgYW5kIG9zaW5mbyBiZWluZyBhCiAgICAgICAgdHVwbGUgKG9zX25hbWUsIG9zX3ZlcnNpb24sIG9zX2FyY2gpLgoKICAgICAgICBWYWx1ZXMgd2hpY2ggY2Fubm90IGJlIGRldGVybWluZWQgYXJlIHNldCB0byB0aGUgZGVmYXVsdHMKICAgICAgICBnaXZlbiBhcyBwYXJhbWV0ZXJzICh3aGljaCBhbGwgZGVmYXVsdCB0byAnJykuCgogICAgIiIiCiAgICAjIEltcG9ydCB0aGUgbmVlZGVkIEFQSXMKICAgIHRyeToKICAgICAgICBpbXBvcnQgamF2YS5sYW5nCiAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgcmV0dXJuIHJlbGVhc2UsIHZlbmRvciwgdm1pbmZvLCBvc2luZm8KCiAgICB2ZW5kb3IgPSBfamF2YV9nZXRwcm9wKCdqYXZhLnZlbmRvcicsIHZlbmRvcikKICAgIHJlbGVhc2UgPSBfamF2YV9nZXRwcm9wKCdqYXZhLnZlcnNpb24nLCByZWxlYXNlKQogICAgdm1fbmFtZSwgdm1fcmVsZWFzZSwgdm1fdmVuZG9yID0gdm1pbmZvCiAgICB2bV9uYW1lID0gX2phdmFfZ2V0cHJvcCgnamF2YS52bS5uYW1lJywgdm1fbmFtZSkKICAgIHZtX3ZlbmRvciA9IF9qYXZhX2dldHByb3AoJ2phdmEudm0udmVuZG9yJywgdm1fdmVuZG9yKQogICAgdm1fcmVsZWFzZSA9IF9qYXZhX2dldHByb3AoJ2phdmEudm0udmVyc2lvbicsIHZtX3JlbGVhc2UpCiAgICB2bWluZm8gPSB2bV9uYW1lLCB2bV9yZWxlYXNlLCB2bV92ZW5kb3IKICAgIG9zX25hbWUsIG9zX3ZlcnNpb24sIG9zX2FyY2ggPSBvc2luZm8KICAgIG9zX2FyY2ggPSBfamF2YV9nZXRwcm9wKCdqYXZhLm9zLmFyY2gnLCBvc19hcmNoKQogICAgb3NfbmFtZSA9IF9qYXZhX2dldHByb3AoJ2phdmEub3MubmFtZScsIG9zX25hbWUpCiAgICBvc192ZXJzaW9uID0gX2phdmFfZ2V0cHJvcCgnamF2YS5vcy52ZXJzaW9uJywgb3NfdmVyc2lvbikKICAgIG9zaW5mbyA9IG9zX25hbWUsIG9zX3ZlcnNpb24sIG9zX2FyY2gKCiAgICByZXR1cm4gcmVsZWFzZSwgdmVuZG9yLCB2bWluZm8sIG9zaW5mbwoKIyMjIFN5c3RlbSBuYW1lIGFsaWFzaW5nCgpkZWYgc3lzdGVtX2FsaWFzKHN5c3RlbSwgcmVsZWFzZSwgdmVyc2lvbik6CgogICAgIiIiIFJldHVybnMgKHN5c3RlbSwgcmVsZWFzZSwgdmVyc2lvbikgYWxpYXNlZCB0byBjb21tb24KICAgICAgICBtYXJrZXRpbmcgbmFtZXMgdXNlZCBmb3Igc29tZSBzeXN0ZW1zLgoKICAgICAgICBJdCBhbHNvIGRvZXMgc29tZSByZW9yZGVyaW5nIG9mIHRoZSBpbmZvcm1hdGlvbiBpbiBzb21lIGNhc2VzCiAgICAgICAgd2hlcmUgaXQgd291bGQgb3RoZXJ3aXNlIGNhdXNlIGNvbmZ1c2lvbi4KCiAgICAiIiIKICAgIGlmIHN5c3RlbSA9PSAnU3VuT1MnOgogICAgICAgICMgU3VuJ3MgT1MKICAgICAgICBpZiByZWxlYXNlIDwgJzUnOgogICAgICAgICAgICAjIFRoZXNlIHJlbGVhc2VzIHVzZSB0aGUgb2xkIG5hbWUgU3VuT1MKICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSwgcmVsZWFzZSwgdmVyc2lvbgogICAgICAgICMgTW9kaWZ5IHJlbGVhc2UgKG1hcmtldGluZyByZWxlYXNlID0gU3VuT1MgcmVsZWFzZSAtIDMpCiAgICAgICAgbCA9IHJlbGVhc2Uuc3BsaXQoJy4nKQogICAgICAgIGlmIGw6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG1ham9yID0gaW50KGxbMF0pCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbWFqb3IgPSBtYWpvciAtIDMKICAgICAgICAgICAgICAgIGxbMF0gPSBzdHIobWFqb3IpCiAgICAgICAgICAgICAgICByZWxlYXNlID0gJy4nLmpvaW4obCkKICAgICAgICBpZiByZWxlYXNlIDwgJzYnOgogICAgICAgICAgICBzeXN0ZW0gPSAnU29sYXJpcycKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFhYWCBXaGF0ZXZlciB0aGUgbmV3IFN1bk9TIG1hcmtldGluZyBuYW1lIGlzLi4uCiAgICAgICAgICAgIHN5c3RlbSA9ICdTb2xhcmlzJwoKICAgIGVsaWYgc3lzdGVtIGluICgnd2luMzInLCAnd2luMTYnKToKICAgICAgICAjIEluIGNhc2Ugb25lIG9mIHRoZSBvdGhlciB0cmlja3MKICAgICAgICBzeXN0ZW0gPSAnV2luZG93cycKCiAgICAjIGJwby0zNTUxNjogRG9uJ3QgcmVwbGFjZSBEYXJ3aW4gd2l0aCBtYWNPUyBzaW5jZSBpbnB1dCByZWxlYXNlIGFuZAogICAgIyB2ZXJzaW9uIGFyZ3VtZW50cyBjYW4gYmUgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnRseSBydW5uaW5nIHZlcnNpb24uCgogICAgcmV0dXJuIHN5c3RlbSwgcmVsZWFzZSwgdmVyc2lvbgoKIyMjIFZhcmlvdXMgaW50ZXJuYWwgaGVscGVycwoKZGVmIF9wbGF0Zm9ybSgqYXJncyk6CgogICAgIiIiIEhlbHBlciB0byBmb3JtYXQgdGhlIHBsYXRmb3JtIHN0cmluZyBpbiBhIGZpbGVuYW1lCiAgICAgICAgY29tcGF0aWJsZSBmb3JtYXQgZS5nLiAic3lzdGVtLXZlcnNpb24tbWFjaGluZSIuCiAgICAiIiIKICAgICMgRm9ybWF0IHRoZSBwbGF0Zm9ybSBzdHJpbmcKICAgIHBsYXRmb3JtID0gJy0nLmpvaW4oeC5zdHJpcCgpIGZvciB4IGluIGZpbHRlcihsZW4sIGFyZ3MpKQoKICAgICMgQ2xlYW51cCBzb21lIHBvc3NpYmxlIGZpbGVuYW1lIG9ic3RhY2xlcy4uLgogICAgcGxhdGZvcm0gPSBwbGF0Zm9ybS5yZXBsYWNlKCcgJywgJ18nKQogICAgcGxhdGZvcm0gPSBwbGF0Zm9ybS5yZXBsYWNlKCcvJywgJy0nKQogICAgcGxhdGZvcm0gPSBwbGF0Zm9ybS5yZXBsYWNlKCdcXCcsICctJykKICAgIHBsYXRmb3JtID0gcGxhdGZvcm0ucmVwbGFjZSgnOicsICctJykKICAgIHBsYXRmb3JtID0gcGxhdGZvcm0ucmVwbGFjZSgnOycsICctJykKICAgIHBsYXRmb3JtID0gcGxhdGZvcm0ucmVwbGFjZSgnIicsICctJykKICAgIHBsYXRmb3JtID0gcGxhdGZvcm0ucmVwbGFjZSgnKCcsICctJykKICAgIHBsYXRmb3JtID0gcGxhdGZvcm0ucmVwbGFjZSgnKScsICctJykKCiAgICAjIE5vIG5lZWQgdG8gcmVwb3J0ICd1bmtub3duJyBpbmZvcm1hdGlvbi4uLgogICAgcGxhdGZvcm0gPSBwbGF0Zm9ybS5yZXBsYWNlKCd1bmtub3duJywgJycpCgogICAgIyBGb2xkICctLSdzIGFuZCByZW1vdmUgdHJhaWxpbmcgJy0nCiAgICB3aGlsZSAxOgogICAgICAgIGNsZWFuZWQgPSBwbGF0Zm9ybS5yZXBsYWNlKCctLScsICctJykKICAgICAgICBpZiBjbGVhbmVkID09IHBsYXRmb3JtOgogICAgICAgICAgICBicmVhawogICAgICAgIHBsYXRmb3JtID0gY2xlYW5lZAogICAgd2hpbGUgcGxhdGZvcm1bLTFdID09ICctJzoKICAgICAgICBwbGF0Zm9ybSA9IHBsYXRmb3JtWzotMV0KCiAgICByZXR1cm4gcGxhdGZvcm0KCmRlZiBfbm9kZShkZWZhdWx0PScnKToKCiAgICAiIiIgSGVscGVyIHRvIGRldGVybWluZSB0aGUgbm9kZSBuYW1lIG9mIHRoaXMgbWFjaGluZS4KICAgICIiIgogICAgdHJ5OgogICAgICAgIGltcG9ydCBzb2NrZXQKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAjIE5vIHNvY2tldHMuLi4KICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgdHJ5OgogICAgICAgIHJldHVybiBzb2NrZXQuZ2V0aG9zdG5hbWUoKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIyBTdGlsbCBub3Qgd29ya2luZy4uLgogICAgICAgIHJldHVybiBkZWZhdWx0CgpkZWYgX2ZvbGxvd19zeW1saW5rcyhmaWxlcGF0aCk6CgogICAgIiIiIEluIGNhc2UgZmlsZXBhdGggaXMgYSBzeW1saW5rLCBmb2xsb3cgaXQgdW50aWwgYQogICAgICAgIHJlYWwgZmlsZSBpcyByZWFjaGVkLgogICAgIiIiCiAgICBmaWxlcGF0aCA9IG9zLnBhdGguYWJzcGF0aChmaWxlcGF0aCkKICAgIHdoaWxlIG9zLnBhdGguaXNsaW5rKGZpbGVwYXRoKToKICAgICAgICBmaWxlcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgoCiAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoZmlsZXBhdGgpLCBvcy5yZWFkbGluayhmaWxlcGF0aCkpKQogICAgcmV0dXJuIGZpbGVwYXRoCgoKZGVmIF9zeXNjbWRfZmlsZSh0YXJnZXQsIGRlZmF1bHQ9JycpOgoKICAgICIiIiBJbnRlcmZhY2UgdG8gdGhlIHN5c3RlbSdzIGZpbGUgY29tbWFuZC4KCiAgICAgICAgVGhlIGZ1bmN0aW9uIHVzZXMgdGhlIC1iIG9wdGlvbiBvZiB0aGUgZmlsZSBjb21tYW5kIHRvIGhhdmUgaXQKICAgICAgICBvbWl0IHRoZSBmaWxlbmFtZSBpbiBpdHMgb3V0cHV0LiBGb2xsb3cgdGhlIHN5bWxpbmtzLiBJdCByZXR1cm5zCiAgICAgICAgZGVmYXVsdCBpbiBjYXNlIHRoZSBjb21tYW5kIHNob3VsZCBmYWlsLgoKICAgICIiIgogICAgaWYgc3lzLnBsYXRmb3JtIGluICgnZG9zJywgJ3dpbjMyJywgJ3dpbjE2Jyk6CiAgICAgICAgIyBYWFggT3RoZXJzIHRvbyA/CiAgICAgICAgcmV0dXJuIGRlZmF1bHQKCiAgICB0cnk6CiAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgdGFyZ2V0ID0gX2ZvbGxvd19zeW1saW5rcyh0YXJnZXQpCiAgICAjICJmaWxlIiBvdXRwdXQgaXMgbG9jYWxlIGRlcGVuZGVudDogZm9yY2UgdGhlIHVzYWdlIG9mIHRoZSBDIGxvY2FsZQogICAgIyB0byBnZXQgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvci4KICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbiwgTENfQUxMPSdDJykKICAgIHRyeToKICAgICAgICAjIC1iOiBkbyBub3QgcHJlcGVuZCBmaWxlbmFtZXMgdG8gb3V0cHV0IGxpbmVzIChicmllZiBtb2RlKQogICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZmlsZScsICctYicsIHRhcmdldF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52KQogICAgZXhjZXB0IChPU0Vycm9yLCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcik6CiAgICAgICAgcmV0dXJuIGRlZmF1bHQKICAgIGlmIG5vdCBvdXRwdXQ6CiAgICAgICAgcmV0dXJuIGRlZmF1bHQKICAgICMgV2l0aCB0aGUgQyBsb2NhbGUsIHRoZSBvdXRwdXQgc2hvdWxkIGJlIG1vc3RseSBBU0NJSS1jb21wYXRpYmxlLgogICAgIyBEZWNvZGUgZnJvbSBMYXRpbi0xIHRvIHByZXZlbnQgVW5pY29kZSBkZWNvZGUgZXJyb3IuCiAgICByZXR1cm4gb3V0cHV0LmRlY29kZSgnbGF0aW4tMScpCgojIyMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIHVzZWQgYXJjaGl0ZWN0dXJlCgojIERlZmF1bHQgdmFsdWVzIGZvciBhcmNoaXRlY3R1cmU7IG5vbi1lbXB0eSBzdHJpbmdzIG92ZXJyaWRlIHRoZQojIGRlZmF1bHRzIGdpdmVuIGFzIHBhcmFtZXRlcnMKX2RlZmF1bHRfYXJjaGl0ZWN0dXJlID0gewogICAgJ3dpbjMyJzogKCcnLCAnV2luZG93c1BFJyksCiAgICAnd2luMTYnOiAoJycsICdXaW5kb3dzJyksCiAgICAnZG9zJzogKCcnLCAnTVNET1MnKSwKfQoKZGVmIGFyY2hpdGVjdHVyZShleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLCBiaXRzPScnLCBsaW5rYWdlPScnKToKCiAgICAiIiIgUXVlcmllcyB0aGUgZ2l2ZW4gZXhlY3V0YWJsZSAoZGVmYXVsdHMgdG8gdGhlIFB5dGhvbiBpbnRlcnByZXRlcgogICAgICAgIGJpbmFyeSkgZm9yIHZhcmlvdXMgYXJjaGl0ZWN0dXJlIGluZm9ybWF0aW9uLgoKICAgICAgICBSZXR1cm5zIGEgdHVwbGUgKGJpdHMsIGxpbmthZ2UpIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0CiAgICAgICAgdGhlIGJpdCBhcmNoaXRlY3R1cmUgYW5kIHRoZSBsaW5rYWdlIGZvcm1hdCB1c2VkIGZvciB0aGUKICAgICAgICBleGVjdXRhYmxlLiBCb3RoIHZhbHVlcyBhcmUgcmV0dXJuZWQgYXMgc3RyaW5ncy4KCiAgICAgICAgVmFsdWVzIHRoYXQgY2Fubm90IGJlIGRldGVybWluZWQgYXJlIHJldHVybmVkIGFzIGdpdmVuIGJ5IHRoZQogICAgICAgIHBhcmFtZXRlciBwcmVzZXRzLiBJZiBiaXRzIGlzIGdpdmVuIGFzICcnLCB0aGUgc2l6ZW9mKHBvaW50ZXIpCiAgICAgICAgKG9yIHNpemVvZihsb25nKSBvbiBQeXRob24gdmVyc2lvbiA8IDEuNS4yKSBpcyB1c2VkIGFzCiAgICAgICAgaW5kaWNhdG9yIGZvciB0aGUgc3VwcG9ydGVkIHBvaW50ZXIgc2l6ZS4KCiAgICAgICAgVGhlIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgc3lzdGVtJ3MgImZpbGUiIGNvbW1hbmQgdG8gZG8gdGhlCiAgICAgICAgYWN0dWFsIHdvcmsuIFRoaXMgaXMgYXZhaWxhYmxlIG9uIG1vc3QgaWYgbm90IGFsbCBVbml4CiAgICAgICAgcGxhdGZvcm1zLiBPbiBzb21lIG5vbi1Vbml4IHBsYXRmb3JtcyB3aGVyZSB0aGUgImZpbGUiIGNvbW1hbmQKICAgICAgICBkb2VzIG5vdCBleGlzdCBhbmQgdGhlIGV4ZWN1dGFibGUgaXMgc2V0IHRvIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKICAgICAgICBiaW5hcnkgZGVmYXVsdHMgZnJvbSBfZGVmYXVsdF9hcmNoaXRlY3R1cmUgYXJlIHVzZWQuCgogICAgIiIiCiAgICAjIFVzZSB0aGUgc2l6ZW9mKHBvaW50ZXIpIGFzIGRlZmF1bHQgbnVtYmVyIG9mIGJpdHMgaWYgbm90aGluZwogICAgIyBlbHNlIGlzIGdpdmVuIGFzIGRlZmF1bHQuCiAgICBpZiBub3QgYml0czoKICAgICAgICBpbXBvcnQgc3RydWN0CiAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnUCcpCiAgICAgICAgYml0cyA9IHN0cihzaXplICogOCkgKyAnYml0JwoKICAgICMgR2V0IGRhdGEgZnJvbSB0aGUgJ2ZpbGUnIHN5c3RlbSBjb21tYW5kCiAgICBpZiBleGVjdXRhYmxlOgogICAgICAgIGZpbGVvdXQgPSBfc3lzY21kX2ZpbGUoZXhlY3V0YWJsZSwgJycpCiAgICBlbHNlOgogICAgICAgIGZpbGVvdXQgPSAnJwoKICAgIGlmIG5vdCBmaWxlb3V0IGFuZCBcCiAgICAgICBleGVjdXRhYmxlID09IHN5cy5leGVjdXRhYmxlOgogICAgICAgICMgImZpbGUiIGNvbW1hbmQgZGlkIG5vdCByZXR1cm4gYW55dGhpbmc7IHdlJ2xsIHRyeSB0byBwcm92aWRlCiAgICAgICAgIyBzb21lIHNlbnNpYmxlIGRlZmF1bHRzIHRoZW4uLi4KICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gX2RlZmF1bHRfYXJjaGl0ZWN0dXJlOgogICAgICAgICAgICBiLCBsID0gX2RlZmF1bHRfYXJjaGl0ZWN0dXJlW3N5cy5wbGF0Zm9ybV0KICAgICAgICAgICAgaWYgYjoKICAgICAgICAgICAgICAgIGJpdHMgPSBiCiAgICAgICAgICAgIGlmIGw6CiAgICAgICAgICAgICAgICBsaW5rYWdlID0gbAogICAgICAgIHJldHVybiBiaXRzLCBsaW5rYWdlCgogICAgaWYgJ2V4ZWN1dGFibGUnIG5vdCBpbiBmaWxlb3V0IGFuZCAnc2hhcmVkIG9iamVjdCcgbm90IGluIGZpbGVvdXQ6CiAgICAgICAgIyBGb3JtYXQgbm90IHN1cHBvcnRlZAogICAgICAgIHJldHVybiBiaXRzLCBsaW5rYWdlCgogICAgIyBCaXRzCiAgICBpZiAnMzItYml0JyBpbiBmaWxlb3V0OgogICAgICAgIGJpdHMgPSAnMzJiaXQnCiAgICBlbGlmICc2NC1iaXQnIGluIGZpbGVvdXQ6CiAgICAgICAgYml0cyA9ICc2NGJpdCcKCiAgICAjIExpbmthZ2UKICAgIGlmICdFTEYnIGluIGZpbGVvdXQ6CiAgICAgICAgbGlua2FnZSA9ICdFTEYnCiAgICBlbGlmICdQRScgaW4gZmlsZW91dDoKICAgICAgICAjIEUuZy4gV2luZG93cyB1c2VzIHRoaXMgZm9ybWF0CiAgICAgICAgaWYgJ1dpbmRvd3MnIGluIGZpbGVvdXQ6CiAgICAgICAgICAgIGxpbmthZ2UgPSAnV2luZG93c1BFJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxpbmthZ2UgPSAnUEUnCiAgICBlbGlmICdDT0ZGJyBpbiBmaWxlb3V0OgogICAgICAgIGxpbmthZ2UgPSAnQ09GRicKICAgIGVsaWYgJ01TLURPUycgaW4gZmlsZW91dDoKICAgICAgICBsaW5rYWdlID0gJ01TRE9TJwogICAgZWxzZToKICAgICAgICAjIFhYWCB0aGUgQS5PVVQgZm9ybWF0IGFsc28gZmFsbHMgdW5kZXIgdGhpcyBjbGFzcy4uLgogICAgICAgIHBhc3MKCiAgICByZXR1cm4gYml0cywgbGlua2FnZQoKCmRlZiBfZ2V0X21hY2hpbmVfd2luMzIoKToKICAgICMgVHJ5IHRvIHVzZSB0aGUgUFJPQ0VTU09SXyogZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAjIGF2YWlsYWJsZSBvbiBXaW4gWFAgYW5kIGxhdGVyOyBzZWUKICAgICMgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi84ODg3MzEgYW5kCiAgICAjIGh0dHA6Ly93d3cuZ2VvY2l0aWVzLmNvbS9yaWNrX2xpdmVseS9NQU5VQUxTL0VOVi9NU1dJTi9QUk9DRVNTSS5IVE0KCiAgICAjIFdPVzY0IHByb2Nlc3NlcyBtYXNrIHRoZSBuYXRpdmUgYXJjaGl0ZWN0dXJlCiAgICByZXR1cm4gKAogICAgICAgIG9zLmVudmlyb24uZ2V0KCdQUk9DRVNTT1JfQVJDSElURVc2NDMyJywgJycpIG9yCiAgICAgICAgb3MuZW52aXJvbi5nZXQoJ1BST0NFU1NPUl9BUkNISVRFQ1RVUkUnLCAnJykKICAgICkKCgpjbGFzcyBfUHJvY2Vzc29yOgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZ2V0KGNscyk6CiAgICAgICAgZnVuYyA9IGdldGF0dHIoY2xzLCBmJ2dldF97c3lzLnBsYXRmb3JtfScsIGNscy5mcm9tX3N1YnByb2Nlc3MpCiAgICAgICAgcmV0dXJuIGZ1bmMoKSBvciAnJwoKICAgIGRlZiBnZXRfd2luMzIoKToKICAgICAgICByZXR1cm4gb3MuZW52aXJvbi5nZXQoJ1BST0NFU1NPUl9JREVOVElGSUVSJywgX2dldF9tYWNoaW5lX3dpbjMyKCkpCgogICAgZGVmIGdldF9PcGVuVk1TKCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgdm1zX2xpYgogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNzaWQsIGNwdV9udW1iZXIgPSB2bXNfbGliLmdldHN5aSgnU1lJJF9DUFUnLCAwKQogICAgICAgICAgICByZXR1cm4gJ0FscGhhJyBpZiBjcHVfbnVtYmVyID49IDEyOCBlbHNlICdWQVgnCgogICAgZGVmIGZyb21fc3VicHJvY2VzcygpOgogICAgICAgICIiIgogICAgICAgIEZhbGwgYmFjayB0byBgdW5hbWUgLXBgCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKICAgICAgICAgICAgICAgIFsndW5hbWUnLCAnLXAnXSwKICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCiAgICAgICAgICAgICAgICB0ZXh0PVRydWUsCiAgICAgICAgICAgICAgICBlbmNvZGluZz0idXRmOCIsCiAgICAgICAgICAgICkuc3RyaXAoKQogICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgogICAgICAgICAgICBwYXNzCgoKZGVmIF91bmtub3duX2FzX2JsYW5rKHZhbCk6CiAgICByZXR1cm4gJycgaWYgdmFsID09ICd1bmtub3duJyBlbHNlIHZhbAoKCiMjIyBQb3J0YWJsZSB1bmFtZSgpIGludGVyZmFjZQoKY2xhc3MgdW5hbWVfcmVzdWx0KAogICAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgKICAgICAgICAidW5hbWVfcmVzdWx0X2Jhc2UiLAogICAgICAgICJzeXN0ZW0gbm9kZSByZWxlYXNlIHZlcnNpb24gbWFjaGluZSIpCiAgICAgICAgKToKICAgICIiIgogICAgQSB1bmFtZV9yZXN1bHQgdGhhdCdzIGxhcmdlbHkgY29tcGF0aWJsZSB3aXRoIGEKICAgIHNpbXBsZSBuYW1lZHR1cGxlIGV4Y2VwdCB0aGF0ICdwcm9jZXNzb3InIGlzCiAgICByZXNvbHZlZCBsYXRlIGFuZCBjYWNoZWQgdG8gYXZvaWQgY2FsbGluZyAidW5hbWUiCiAgICBleGNlcHQgd2hlbiBuZWVkZWQuCiAgICAiIiIKCiAgICBfZmllbGRzID0gKCdzeXN0ZW0nLCAnbm9kZScsICdyZWxlYXNlJywgJ3ZlcnNpb24nLCAnbWFjaGluZScsICdwcm9jZXNzb3InKQoKICAgIEBmdW5jdG9vbHMuY2FjaGVkX3Byb3BlcnR5CiAgICBkZWYgcHJvY2Vzc29yKHNlbGYpOgogICAgICAgIHJldHVybiBfdW5rbm93bl9hc19ibGFuayhfUHJvY2Vzc29yLmdldCgpKQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gaXRlcnRvb2xzLmNoYWluKAogICAgICAgICAgICBzdXBlcigpLl9faXRlcl9fKCksCiAgICAgICAgICAgIChzZWxmLnByb2Nlc3NvciwpCiAgICAgICAgKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9tYWtlKGNscywgaXRlcmFibGUpOgogICAgICAgICMgb3ZlcnJpZGUgZmFjdG9yeSB0byBhZmZlY3QgbGVuZ3RoIGNoZWNrCiAgICAgICAgbnVtX2ZpZWxkcyA9IGxlbihjbHMuX2ZpZWxkcykgLSAxCiAgICAgICAgcmVzdWx0ID0gY2xzLl9fbmV3X18oY2xzLCAqaXRlcmFibGUpCiAgICAgICAgaWYgbGVuKHJlc3VsdCkgIT0gbnVtX2ZpZWxkcyArIDE6CiAgICAgICAgICAgIG1zZyA9IGYnRXhwZWN0ZWQge251bV9maWVsZHN9IGFyZ3VtZW50cywgZ290IHtsZW4ocmVzdWx0KX0nCiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIHJldHVybiB0dXBsZShzZWxmKVtrZXldCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbih0dXBsZShpdGVyKHNlbGYpKSkKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gdW5hbWVfcmVzdWx0LCB0dXBsZShzZWxmKVs6bGVuKHNlbGYuX2ZpZWxkcykgLSAxXQoKCl91bmFtZV9jYWNoZSA9IE5vbmUKCgpkZWYgdW5hbWUoKToKCiAgICAiIiIgRmFpcmx5IHBvcnRhYmxlIHVuYW1lIGludGVyZmFjZS4gUmV0dXJucyBhIHR1cGxlCiAgICAgICAgb2Ygc3RyaW5ncyAoc3lzdGVtLCBub2RlLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lLCBwcm9jZXNzb3IpCiAgICAgICAgaWRlbnRpZnlpbmcgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0uCgogICAgICAgIE5vdGUgdGhhdCB1bmxpa2UgdGhlIG9zLnVuYW1lIGZ1bmN0aW9uIHRoaXMgYWxzbyByZXR1cm5zCiAgICAgICAgcG9zc2libGUgcHJvY2Vzc29yIGluZm9ybWF0aW9uIGFzIGFuIGFkZGl0aW9uYWwgdHVwbGUgZW50cnkuCgogICAgICAgIEVudHJpZXMgd2hpY2ggY2Fubm90IGJlIGRldGVybWluZWQgYXJlIHNldCB0byAnJy4KCiAgICAiIiIKICAgIGdsb2JhbCBfdW5hbWVfY2FjaGUKCiAgICBpZiBfdW5hbWVfY2FjaGUgaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIF91bmFtZV9jYWNoZQoKICAgICMgR2V0IHNvbWUgaW5mb3MgZnJvbSB0aGUgYnVpbHRpbiBvcy51bmFtZSBBUEkuLi4KICAgIHRyeToKICAgICAgICBzeXN0ZW0sIG5vZGUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUgPSBpbmZvcyA9IG9zLnVuYW1lKCkKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICBzeXN0ZW0gPSBzeXMucGxhdGZvcm0KICAgICAgICBub2RlID0gX25vZGUoKQogICAgICAgIHJlbGVhc2UgPSB2ZXJzaW9uID0gbWFjaGluZSA9ICcnCiAgICAgICAgaW5mb3MgPSAoKQoKICAgIGlmIG5vdCBhbnkoaW5mb3MpOgogICAgICAgICMgdW5hbWUgaXMgbm90IGF2YWlsYWJsZQoKICAgICAgICAjIFRyeSB3aW4zMl92ZXIoKSBvbiB3aW4zMiBwbGF0Zm9ybXMKICAgICAgICBpZiBzeXN0ZW0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgcmVsZWFzZSwgdmVyc2lvbiwgY3NkLCBwdHlwZSA9IHdpbjMyX3ZlcigpCiAgICAgICAgICAgIG1hY2hpbmUgPSBtYWNoaW5lIG9yIF9nZXRfbWFjaGluZV93aW4zMigpCgogICAgICAgICMgVHJ5IHRoZSAndmVyJyBzeXN0ZW0gY29tbWFuZCBhdmFpbGFibGUgb24gc29tZQogICAgICAgICMgcGxhdGZvcm1zCiAgICAgICAgaWYgbm90IChyZWxlYXNlIGFuZCB2ZXJzaW9uKToKICAgICAgICAgICAgc3lzdGVtLCByZWxlYXNlLCB2ZXJzaW9uID0gX3N5c2NtZF92ZXIoc3lzdGVtKQogICAgICAgICAgICAjIE5vcm1hbGl6ZSBzeXN0ZW0gdG8gd2hhdCB3aW4zMl92ZXIoKSBub3JtYWxseSByZXR1cm5zCiAgICAgICAgICAgICMgKF9zeXNjbWRfdmVyKCkgdGVuZHMgdG8gcmV0dXJuIHRoZSB2ZW5kb3IgbmFtZSBhcyB3ZWxsKQogICAgICAgICAgICBpZiBzeXN0ZW0gPT0gJ01pY3Jvc29mdCBXaW5kb3dzJzoKICAgICAgICAgICAgICAgIHN5c3RlbSA9ICdXaW5kb3dzJwogICAgICAgICAgICBlbGlmIHN5c3RlbSA9PSAnTWljcm9zb2Z0JyBhbmQgcmVsZWFzZSA9PSAnV2luZG93cyc6CiAgICAgICAgICAgICAgICAjIFVuZGVyIFdpbmRvd3MgVmlzdGEgYW5kIFdpbmRvd3MgU2VydmVyIDIwMDgsCiAgICAgICAgICAgICAgICAjIE1pY3Jvc29mdCBjaGFuZ2VkIHRoZSBvdXRwdXQgb2YgdGhlIHZlciBjb21tYW5kLiBUaGUKICAgICAgICAgICAgICAgICMgcmVsZWFzZSBpcyBubyBsb25nZXIgcHJpbnRlZC4gIFRoaXMgY2F1c2VzIHRoZQogICAgICAgICAgICAgICAgIyBzeXN0ZW0gYW5kIHJlbGVhc2UgdG8gYmUgbWlzaWRlbnRpZmllZC4KICAgICAgICAgICAgICAgIHN5c3RlbSA9ICdXaW5kb3dzJwogICAgICAgICAgICAgICAgaWYgJzYuMCcgPT0gdmVyc2lvbls6M106CiAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSA9ICdWaXN0YScKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSA9ICcnCgogICAgICAgICMgSW4gY2FzZSB3ZSBzdGlsbCBkb24ndCBrbm93IGFueXRoaW5nIHVzZWZ1bCwgd2UnbGwgdHJ5IHRvCiAgICAgICAgIyBoZWxwIG91cnNlbHZlcwogICAgICAgIGlmIHN5c3RlbSBpbiAoJ3dpbjMyJywgJ3dpbjE2Jyk6CiAgICAgICAgICAgIGlmIG5vdCB2ZXJzaW9uOgogICAgICAgICAgICAgICAgaWYgc3lzdGVtID09ICd3aW4zMic6CiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9ICczMmJpdCcKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9ICcxNmJpdCcKICAgICAgICAgICAgc3lzdGVtID0gJ1dpbmRvd3MnCgogICAgICAgIGVsaWYgc3lzdGVtWzo0XSA9PSAnamF2YSc6CiAgICAgICAgICAgIHJlbGVhc2UsIHZlbmRvciwgdm1pbmZvLCBvc2luZm8gPSBqYXZhX3ZlcigpCiAgICAgICAgICAgIHN5c3RlbSA9ICdKYXZhJwogICAgICAgICAgICB2ZXJzaW9uID0gJywgJy5qb2luKHZtaW5mbykKICAgICAgICAgICAgaWYgbm90IHZlcnNpb246CiAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdmVuZG9yCgogICAgIyBTeXN0ZW0gc3BlY2lmaWMgZXh0ZW5zaW9ucwogICAgaWYgc3lzdGVtID09ICdPcGVuVk1TJzoKICAgICAgICAjIE9wZW5WTVMgc2VlbXMgdG8gaGF2ZSByZWxlYXNlIGFuZCB2ZXJzaW9uIG1peGVkIHVwCiAgICAgICAgaWYgbm90IHJlbGVhc2Ugb3IgcmVsZWFzZSA9PSAnMCc6CiAgICAgICAgICAgIHJlbGVhc2UgPSB2ZXJzaW9uCiAgICAgICAgICAgIHZlcnNpb24gPSAnJwoKICAgICMgIG5vcm1hbGl6ZSBuYW1lCiAgICBpZiBzeXN0ZW0gPT0gJ01pY3Jvc29mdCcgYW5kIHJlbGVhc2UgPT0gJ1dpbmRvd3MnOgogICAgICAgIHN5c3RlbSA9ICdXaW5kb3dzJwogICAgICAgIHJlbGVhc2UgPSAnVmlzdGEnCgogICAgdmFscyA9IHN5c3RlbSwgbm9kZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZQogICAgIyBSZXBsYWNlICd1bmtub3duJyB2YWx1ZXMgd2l0aCB0aGUgbW9yZSBwb3J0YWJsZSAnJwogICAgX3VuYW1lX2NhY2hlID0gdW5hbWVfcmVzdWx0KCptYXAoX3Vua25vd25fYXNfYmxhbmssIHZhbHMpKQogICAgcmV0dXJuIF91bmFtZV9jYWNoZQoKIyMjIERpcmVjdCBpbnRlcmZhY2VzIHRvIHNvbWUgb2YgdGhlIHVuYW1lKCkgcmV0dXJuIHZhbHVlcwoKZGVmIHN5c3RlbSgpOgoKICAgICIiIiBSZXR1cm5zIHRoZSBzeXN0ZW0vT1MgbmFtZSwgZS5nLiAnTGludXgnLCAnV2luZG93cycgb3IgJ0phdmEnLgoKICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgoKICAgICIiIgogICAgcmV0dXJuIHVuYW1lKCkuc3lzdGVtCgpkZWYgbm9kZSgpOgoKICAgICIiIiBSZXR1cm5zIHRoZSBjb21wdXRlcidzIG5ldHdvcmsgbmFtZSAod2hpY2ggbWF5IG5vdCBiZSBmdWxseQogICAgICAgIHF1YWxpZmllZCkKCiAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KCiAgICAiIiIKICAgIHJldHVybiB1bmFtZSgpLm5vZGUKCmRlZiByZWxlYXNlKCk6CgogICAgIiIiIFJldHVybnMgdGhlIHN5c3RlbSdzIHJlbGVhc2UsIGUuZy4gJzIuMi4wJyBvciAnTlQnCgogICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCgogICAgIiIiCiAgICByZXR1cm4gdW5hbWUoKS5yZWxlYXNlCgpkZWYgdmVyc2lvbigpOgoKICAgICIiIiBSZXR1cm5zIHRoZSBzeXN0ZW0ncyByZWxlYXNlIHZlcnNpb24sIGUuZy4gJyMzIG9uIGRlZ2FzJwoKICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgoKICAgICIiIgogICAgcmV0dXJuIHVuYW1lKCkudmVyc2lvbgoKZGVmIG1hY2hpbmUoKToKCiAgICAiIiIgUmV0dXJucyB0aGUgbWFjaGluZSB0eXBlLCBlLmcuICdpMzg2JwoKICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgoKICAgICIiIgogICAgcmV0dXJuIHVuYW1lKCkubWFjaGluZQoKZGVmIHByb2Nlc3NvcigpOgoKICAgICIiIiBSZXR1cm5zIHRoZSAodHJ1ZSkgcHJvY2Vzc29yIG5hbWUsIGUuZy4gJ2FtZGs2JwoKICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZQogICAgICAgIGRldGVybWluZWQuIE5vdGUgdGhhdCBtYW55IHBsYXRmb3JtcyBkbyBub3QgcHJvdmlkZSB0aGlzCiAgICAgICAgaW5mb3JtYXRpb24gb3Igc2ltcGx5IHJldHVybiB0aGUgc2FtZSB2YWx1ZSBhcyBmb3IgbWFjaGluZSgpLAogICAgICAgIGUuZy4gIE5ldEJTRCBkb2VzIHRoaXMuCgogICAgIiIiCiAgICByZXR1cm4gdW5hbWUoKS5wcm9jZXNzb3IKCiMjIyBWYXJpb3VzIEFQSXMgZm9yIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZnJvbSBzeXMudmVyc2lvbgoKX3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICByJyhbXHcuK10rKVxzKicgICMgInZlcnNpb248c3BhY2U+IgogICAgcidcKCM/KFteLF0rKScgICMgIigjYnVpbGRubyIKICAgIHInKD86LFxzKihbXHcgXSopJyAgIyAiLCBidWlsZGRhdGUiCiAgICByJyg/OixccyooW1x3IDpdKikpPyk/XClccyonICAjICIsIGJ1aWxkdGltZSk8c3BhY2U+IgogICAgcidcWyhbXlxdXSspXF0/JywgcmUuQVNDSUkpICAjICJbY29tcGlsZXJdIgoKX2lyb25weXRob25fc3lzX3ZlcnNpb25fcGFyc2VyID0gcmUuY29tcGlsZSgKICAgIHInSXJvblB5dGhvblxzKicKICAgIHInKFtcZFwuXSspJwogICAgcicoPzogXCgoW1xkXC5dKylcKSk/JwogICAgcicgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKCiMgSXJvblB5dGhvbiBjb3ZlcmluZyAyLjYgYW5kIDIuNwpfaXJvbnB5dGhvbjI2X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICByJyhbXGQuXSspXHMqJwogICAgcidcKElyb25QeXRob25ccyonCiAgICByJ1tcZC5dK1xzKicKICAgIHInXCgoW1xkLl0rKVwpIG9uIChbXHcuXSsgW1xkLl0rKD86IFwoXGQrLWJpdFwpKT8pXCknCikKCl9weXB5X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICByJyhbXHcuK10rKVxzKicKICAgIHInXCgjPyhbXixdKyksXHMqKFtcdyBdKyksXHMqKFtcdyA6XSspXClccyonCiAgICByJ1xbUHlQeSBbXlxdXStcXT8nKQoKX3N5c192ZXJzaW9uX2NhY2hlID0ge30KCmRlZiBfc3lzX3ZlcnNpb24oc3lzX3ZlcnNpb249Tm9uZSk6CgogICAgIiIiIFJldHVybnMgYSBwYXJzZWQgdmVyc2lvbiBvZiBQeXRob24ncyBzeXMudmVyc2lvbiBhcyB0dXBsZQogICAgICAgIChuYW1lLCB2ZXJzaW9uLCBicmFuY2gsIHJldmlzaW9uLCBidWlsZG5vLCBidWlsZGRhdGUsIGNvbXBpbGVyKQogICAgICAgIHJlZmVycmluZyB0byB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG5hbWUsIHZlcnNpb24sIGJyYW5jaCwKICAgICAgICByZXZpc2lvbiwgYnVpbGQgbnVtYmVyLCBidWlsZCBkYXRlL3RpbWUgYXMgc3RyaW5nIGFuZCB0aGUgY29tcGlsZXIKICAgICAgICBpZGVudGlmaWNhdGlvbiBzdHJpbmcuCgogICAgICAgIE5vdGUgdGhhdCB1bmxpa2UgdGhlIFB5dGhvbiBzeXMudmVyc2lvbiwgdGhlIHJldHVybmVkIHZhbHVlCiAgICAgICAgZm9yIHRoZSBQeXRob24gdmVyc2lvbiB3aWxsIGFsd2F5cyBpbmNsdWRlIHRoZSBwYXRjaGxldmVsIChpdAogICAgICAgIGRlZmF1bHRzIHRvICcuMCcpLgoKICAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBlbXB0eSBzdHJpbmdzIGZvciB0dXBsZSBlbnRyaWVzIHRoYXQKICAgICAgICBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KCiAgICAgICAgc3lzX3ZlcnNpb24gbWF5IGJlIGdpdmVuIHRvIHBhcnNlIGFuIGFsdGVybmF0aXZlIHZlcnNpb24KICAgICAgICBzdHJpbmcsIGUuZy4gaWYgdGhlIHZlcnNpb24gd2FzIHJlYWQgZnJvbSBhIGRpZmZlcmVudCBQeXRob24KICAgICAgICBpbnRlcnByZXRlci4KCiAgICAiIiIKICAgICMgR2V0IHRoZSBQeXRob24gdmVyc2lvbgogICAgaWYgc3lzX3ZlcnNpb24gaXMgTm9uZToKICAgICAgICBzeXNfdmVyc2lvbiA9IHN5cy52ZXJzaW9uCgogICAgIyBUcnkgdGhlIGNhY2hlIGZpcnN0CiAgICByZXN1bHQgPSBfc3lzX3ZlcnNpb25fY2FjaGUuZ2V0KHN5c192ZXJzaW9uLCBOb25lKQogICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgogICAgICAgIHJldHVybiByZXN1bHQKCiAgICAjIFBhcnNlIGl0CiAgICBpZiAnSXJvblB5dGhvbicgaW4gc3lzX3ZlcnNpb246CiAgICAgICAgIyBJcm9uUHl0aG9uCiAgICAgICAgbmFtZSA9ICdJcm9uUHl0aG9uJwogICAgICAgIGlmIHN5c192ZXJzaW9uLnN0YXJ0c3dpdGgoJ0lyb25QeXRob24nKToKICAgICAgICAgICAgbWF0Y2ggPSBfaXJvbnB5dGhvbl9zeXNfdmVyc2lvbl9wYXJzZXIubWF0Y2goc3lzX3ZlcnNpb24pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbWF0Y2ggPSBfaXJvbnB5dGhvbjI2X3N5c192ZXJzaW9uX3BhcnNlci5tYXRjaChzeXNfdmVyc2lvbikKCiAgICAgICAgaWYgbWF0Y2ggaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICdmYWlsZWQgdG8gcGFyc2UgSXJvblB5dGhvbiBzeXMudmVyc2lvbjogJXMnICUKICAgICAgICAgICAgICAgIHJlcHIoc3lzX3ZlcnNpb24pKQoKICAgICAgICB2ZXJzaW9uLCBhbHRfdmVyc2lvbiwgY29tcGlsZXIgPSBtYXRjaC5ncm91cHMoKQogICAgICAgIGJ1aWxkbm8gPSAnJwogICAgICAgIGJ1aWxkZGF0ZSA9ICcnCgogICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnamF2YScpOgogICAgICAgICMgSnl0aG9uCiAgICAgICAgbmFtZSA9ICdKeXRob24nCiAgICAgICAgbWF0Y2ggPSBfc3lzX3ZlcnNpb25fcGFyc2VyLm1hdGNoKHN5c192ZXJzaW9uKQogICAgICAgIGlmIG1hdGNoIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAnZmFpbGVkIHRvIHBhcnNlIEp5dGhvbiBzeXMudmVyc2lvbjogJXMnICUKICAgICAgICAgICAgICAgIHJlcHIoc3lzX3ZlcnNpb24pKQogICAgICAgIHZlcnNpb24sIGJ1aWxkbm8sIGJ1aWxkZGF0ZSwgYnVpbGR0aW1lLCBfID0gbWF0Y2guZ3JvdXBzKCkKICAgICAgICBpZiBidWlsZGRhdGUgaXMgTm9uZToKICAgICAgICAgICAgYnVpbGRkYXRlID0gJycKICAgICAgICBjb21waWxlciA9IHN5cy5wbGF0Zm9ybQoKICAgIGVsaWYgIlB5UHkiIGluIHN5c192ZXJzaW9uOgogICAgICAgICMgUHlQeQogICAgICAgIG5hbWUgPSAiUHlQeSIKICAgICAgICBtYXRjaCA9IF9weXB5X3N5c192ZXJzaW9uX3BhcnNlci5tYXRjaChzeXNfdmVyc2lvbikKICAgICAgICBpZiBtYXRjaCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJmYWlsZWQgdG8gcGFyc2UgUHlQeSBzeXMudmVyc2lvbjogJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKHN5c192ZXJzaW9uKSkKICAgICAgICB2ZXJzaW9uLCBidWlsZG5vLCBidWlsZGRhdGUsIGJ1aWxkdGltZSA9IG1hdGNoLmdyb3VwcygpCiAgICAgICAgY29tcGlsZXIgPSAiIgoKICAgIGVsc2U6CiAgICAgICAgIyBDUHl0aG9uCiAgICAgICAgbWF0Y2ggPSBfc3lzX3ZlcnNpb25fcGFyc2VyLm1hdGNoKHN5c192ZXJzaW9uKQogICAgICAgIGlmIG1hdGNoIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAnZmFpbGVkIHRvIHBhcnNlIENQeXRob24gc3lzLnZlcnNpb246ICVzJyAlCiAgICAgICAgICAgICAgICByZXByKHN5c192ZXJzaW9uKSkKICAgICAgICB2ZXJzaW9uLCBidWlsZG5vLCBidWlsZGRhdGUsIGJ1aWxkdGltZSwgY29tcGlsZXIgPSBcCiAgICAgICAgICAgICAgbWF0Y2guZ3JvdXBzKCkKICAgICAgICBuYW1lID0gJ0NQeXRob24nCiAgICAgICAgaWYgYnVpbGRkYXRlIGlzIE5vbmU6CiAgICAgICAgICAgIGJ1aWxkZGF0ZSA9ICcnCiAgICAgICAgZWxpZiBidWlsZHRpbWU6CiAgICAgICAgICAgIGJ1aWxkZGF0ZSA9IGJ1aWxkZGF0ZSArICcgJyArIGJ1aWxkdGltZQoKICAgIGlmIGhhc2F0dHIoc3lzLCAnX2dpdCcpOgogICAgICAgIF8sIGJyYW5jaCwgcmV2aXNpb24gPSBzeXMuX2dpdAogICAgZWxpZiBoYXNhdHRyKHN5cywgJ19tZXJjdXJpYWwnKToKICAgICAgICBfLCBicmFuY2gsIHJldmlzaW9uID0gc3lzLl9tZXJjdXJpYWwKICAgIGVsc2U6CiAgICAgICAgYnJhbmNoID0gJycKICAgICAgICByZXZpc2lvbiA9ICcnCgogICAgIyBBZGQgdGhlIHBhdGNobGV2ZWwgdmVyc2lvbiBpZiBtaXNzaW5nCiAgICBsID0gdmVyc2lvbi5zcGxpdCgnLicpCiAgICBpZiBsZW4obCkgPT0gMjoKICAgICAgICBsLmFwcGVuZCgnMCcpCiAgICAgICAgdmVyc2lvbiA9ICcuJy5qb2luKGwpCgogICAgIyBCdWlsZCBhbmQgY2FjaGUgdGhlIHJlc3VsdAogICAgcmVzdWx0ID0gKG5hbWUsIHZlcnNpb24sIGJyYW5jaCwgcmV2aXNpb24sIGJ1aWxkbm8sIGJ1aWxkZGF0ZSwgY29tcGlsZXIpCiAgICBfc3lzX3ZlcnNpb25fY2FjaGVbc3lzX3ZlcnNpb25dID0gcmVzdWx0CiAgICByZXR1cm4gcmVzdWx0CgpkZWYgcHl0aG9uX2ltcGxlbWVudGF0aW9uKCk6CgogICAgIiIiIFJldHVybnMgYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KCiAgICAgICAgQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpZmllZDoKICAgICAgICAgICdDUHl0aG9uJyAoQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24pLAogICAgICAgICAgJ0lyb25QeXRob24nICguTkVUIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiksCiAgICAgICAgICAnSnl0aG9uJyAoSmF2YSBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24pLAogICAgICAgICAgJ1B5UHknIChQeXRob24gaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uKS4KCiAgICAiIiIKICAgIHJldHVybiBfc3lzX3ZlcnNpb24oKVswXQoKZGVmIHB5dGhvbl92ZXJzaW9uKCk6CgogICAgIiIiIFJldHVybnMgdGhlIFB5dGhvbiB2ZXJzaW9uIGFzIHN0cmluZyAnbWFqb3IubWlub3IucGF0Y2hsZXZlbCcKCiAgICAgICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgUHl0aG9uIHN5cy52ZXJzaW9uLCB0aGUgcmV0dXJuZWQgdmFsdWUKICAgICAgICB3aWxsIGFsd2F5cyBpbmNsdWRlIHRoZSBwYXRjaGxldmVsIChpdCBkZWZhdWx0cyB0byAwKS4KCiAgICAiIiIKICAgIHJldHVybiBfc3lzX3ZlcnNpb24oKVsxXQoKZGVmIHB5dGhvbl92ZXJzaW9uX3R1cGxlKCk6CgogICAgIiIiIFJldHVybnMgdGhlIFB5dGhvbiB2ZXJzaW9uIGFzIHR1cGxlIChtYWpvciwgbWlub3IsIHBhdGNobGV2ZWwpCiAgICAgICAgb2Ygc3RyaW5ncy4KCiAgICAgICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgUHl0aG9uIHN5cy52ZXJzaW9uLCB0aGUgcmV0dXJuZWQgdmFsdWUKICAgICAgICB3aWxsIGFsd2F5cyBpbmNsdWRlIHRoZSBwYXRjaGxldmVsIChpdCBkZWZhdWx0cyB0byAwKS4KCiAgICAiIiIKICAgIHJldHVybiB0dXBsZShfc3lzX3ZlcnNpb24oKVsxXS5zcGxpdCgnLicpKQoKZGVmIHB5dGhvbl9icmFuY2goKToKCiAgICAiIiIgUmV0dXJucyBhIHN0cmluZyBpZGVudGlmeWluZyB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uCiAgICAgICAgYnJhbmNoLgoKICAgICAgICBGb3IgQ1B5dGhvbiB0aGlzIGlzIHRoZSBTQ00gYnJhbmNoIGZyb20gd2hpY2ggdGhlCiAgICAgICAgUHl0aG9uIGJpbmFyeSB3YXMgYnVpbHQuCgogICAgICAgIElmIG5vdCBhdmFpbGFibGUsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KCiAgICAiIiIKCiAgICByZXR1cm4gX3N5c192ZXJzaW9uKClbMl0KCmRlZiBweXRob25fcmV2aXNpb24oKToKCiAgICAiIiIgUmV0dXJucyBhIHN0cmluZyBpZGVudGlmeWluZyB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uCiAgICAgICAgcmV2aXNpb24uCgogICAgICAgIEZvciBDUHl0aG9uIHRoaXMgaXMgdGhlIFNDTSByZXZpc2lvbiBmcm9tIHdoaWNoIHRoZQogICAgICAgIFB5dGhvbiBiaW5hcnkgd2FzIGJ1aWx0LgoKICAgICAgICBJZiBub3QgYXZhaWxhYmxlLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCgogICAgIiIiCiAgICByZXR1cm4gX3N5c192ZXJzaW9uKClbM10KCmRlZiBweXRob25fYnVpbGQoKToKCiAgICAiIiIgUmV0dXJucyBhIHR1cGxlIChidWlsZG5vLCBidWlsZGRhdGUpIHN0YXRpbmcgdGhlIFB5dGhvbgogICAgICAgIGJ1aWxkIG51bWJlciBhbmQgZGF0ZSBhcyBzdHJpbmdzLgoKICAgICIiIgogICAgcmV0dXJuIF9zeXNfdmVyc2lvbigpWzQ6Nl0KCmRlZiBweXRob25fY29tcGlsZXIoKToKCiAgICAiIiIgUmV0dXJucyBhIHN0cmluZyBpZGVudGlmeWluZyB0aGUgY29tcGlsZXIgdXNlZCBmb3IgY29tcGlsaW5nCiAgICAgICAgUHl0aG9uLgoKICAgICIiIgogICAgcmV0dXJuIF9zeXNfdmVyc2lvbigpWzZdCgojIyMgVGhlIE9wdXMgTWFnbnVtIG9mIHBsYXRmb3JtIHN0cmluZ3MgOi0pCgpfcGxhdGZvcm1fY2FjaGUgPSB7fQoKZGVmIHBsYXRmb3JtKGFsaWFzZWQ9MCwgdGVyc2U9MCk6CgogICAgIiIiIFJldHVybnMgYSBzaW5nbGUgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtCiAgICAgICAgd2l0aCBhcyBtdWNoIHVzZWZ1bCBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAoYnV0IG5vIG1vcmUgOikuCgogICAgICAgIFRoZSBvdXRwdXQgaXMgaW50ZW5kZWQgdG8gYmUgaHVtYW4gcmVhZGFibGUgcmF0aGVyIHRoYW4KICAgICAgICBtYWNoaW5lIHBhcnNlYWJsZS4gSXQgbWF5IGxvb2sgZGlmZmVyZW50IG9uIGRpZmZlcmVudAogICAgICAgIHBsYXRmb3JtcyBhbmQgdGhpcyBpcyBpbnRlbmRlZC4KCiAgICAgICAgSWYgImFsaWFzZWQiIGlzIHRydWUsIHRoZSBmdW5jdGlvbiB3aWxsIHVzZSBhbGlhc2VzIGZvcgogICAgICAgIHZhcmlvdXMgcGxhdGZvcm1zIHRoYXQgcmVwb3J0IHN5c3RlbSBuYW1lcyB3aGljaCBkaWZmZXIgZnJvbQogICAgICAgIHRoZWlyIGNvbW1vbiBuYW1lcywgZS5nLiBTdW5PUyB3aWxsIGJlIHJlcG9ydGVkIGFzCiAgICAgICAgU29sYXJpcy4gVGhlIHN5c3RlbV9hbGlhcygpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW1wbGVtZW50CiAgICAgICAgdGhpcy4KCiAgICAgICAgU2V0dGluZyB0ZXJzZSB0byB0cnVlIGNhdXNlcyB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIG9ubHkgdGhlCiAgICAgICAgYWJzb2x1dGUgbWluaW11bSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gaWRlbnRpZnkgdGhlIHBsYXRmb3JtLgoKICAgICIiIgogICAgcmVzdWx0ID0gX3BsYXRmb3JtX2NhY2hlLmdldCgoYWxpYXNlZCwgdGVyc2UpLCBOb25lKQogICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgogICAgICAgIHJldHVybiByZXN1bHQKCiAgICAjIEdldCB1bmFtZSBpbmZvcm1hdGlvbiBhbmQgdGhlbiBhcHBseSBwbGF0Zm9ybSBzcGVjaWZpYyBjb3NtZXRpY3MKICAgICMgdG8gaXQuLi4KICAgIHN5c3RlbSwgbm9kZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSwgcHJvY2Vzc29yID0gdW5hbWUoKQogICAgaWYgbWFjaGluZSA9PSBwcm9jZXNzb3I6CiAgICAgICAgcHJvY2Vzc29yID0gJycKICAgIGlmIGFsaWFzZWQ6CiAgICAgICAgc3lzdGVtLCByZWxlYXNlLCB2ZXJzaW9uID0gc3lzdGVtX2FsaWFzKHN5c3RlbSwgcmVsZWFzZSwgdmVyc2lvbikKCiAgICBpZiBzeXN0ZW0gPT0gJ0Rhcndpbic6CiAgICAgICAgIyBtYWNPUyAoZGFyd2luIGtlcm5lbCkKICAgICAgICBtYWNvc19yZWxlYXNlID0gbWFjX3ZlcigpWzBdCiAgICAgICAgaWYgbWFjb3NfcmVsZWFzZToKICAgICAgICAgICAgc3lzdGVtID0gJ21hY09TJwogICAgICAgICAgICByZWxlYXNlID0gbWFjb3NfcmVsZWFzZQoKICAgIGlmIHN5c3RlbSA9PSAnV2luZG93cyc6CiAgICAgICAgIyBNUyBwbGF0Zm9ybXMKICAgICAgICByZWwsIHZlcnMsIGNzZCwgcHR5cGUgPSB3aW4zMl92ZXIodmVyc2lvbikKICAgICAgICBpZiB0ZXJzZToKICAgICAgICAgICAgcGxhdGZvcm0gPSBfcGxhdGZvcm0oc3lzdGVtLCByZWxlYXNlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBsYXRmb3JtID0gX3BsYXRmb3JtKHN5c3RlbSwgcmVsZWFzZSwgdmVyc2lvbiwgY3NkKQoKICAgIGVsaWYgc3lzdGVtIGluICgnTGludXgnLCk6CiAgICAgICAgIyBjaGVjayBmb3IgbGliYyB2cy4gZ2xpYmMKICAgICAgICBsaWJjbmFtZSwgbGliY3ZlcnNpb24gPSBsaWJjX3ZlcigpCiAgICAgICAgcGxhdGZvcm0gPSBfcGxhdGZvcm0oc3lzdGVtLCByZWxlYXNlLCBtYWNoaW5lLCBwcm9jZXNzb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYmNuYW1lK2xpYmN2ZXJzaW9uKQogICAgZWxpZiBzeXN0ZW0gPT0gJ0phdmEnOgogICAgICAgICMgSmF2YSBwbGF0Zm9ybXMKICAgICAgICByLCB2LCB2bWluZm8sIChvc19uYW1lLCBvc192ZXJzaW9uLCBvc19hcmNoKSA9IGphdmFfdmVyKCkKICAgICAgICBpZiB0ZXJzZSBvciBub3Qgb3NfbmFtZToKICAgICAgICAgICAgcGxhdGZvcm0gPSBfcGxhdGZvcm0oc3lzdGVtLCByZWxlYXNlLCB2ZXJzaW9uKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBsYXRmb3JtID0gX3BsYXRmb3JtKHN5c3RlbSwgcmVsZWFzZSwgdmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NfbmFtZSwgb3NfdmVyc2lvbiwgb3NfYXJjaCkKCiAgICBlbHNlOgogICAgICAgICMgR2VuZXJpYyBoYW5kbGVyCiAgICAgICAgaWYgdGVyc2U6CiAgICAgICAgICAgIHBsYXRmb3JtID0gX3BsYXRmb3JtKHN5c3RlbSwgcmVsZWFzZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBiaXRzLCBsaW5rYWdlID0gYXJjaGl0ZWN0dXJlKHN5cy5leGVjdXRhYmxlKQogICAgICAgICAgICBwbGF0Zm9ybSA9IF9wbGF0Zm9ybShzeXN0ZW0sIHJlbGVhc2UsIG1hY2hpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciwgYml0cywgbGlua2FnZSkKCiAgICBfcGxhdGZvcm1fY2FjaGVbKGFsaWFzZWQsIHRlcnNlKV0gPSBwbGF0Zm9ybQogICAgcmV0dXJuIHBsYXRmb3JtCgojIyMgZnJlZWRlc2t0b3Aub3JnIG9zLXJlbGVhc2Ugc3RhbmRhcmQKIyBodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvc3lzdGVtZC9tYW4vb3MtcmVsZWFzZS5odG1sCgojIE5BTUU9dmFsdWUgd2l0aCBvcHRpb25hbCBxdW90ZXMgKCcgb3IgIikuIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gaXMgbGVzcwojIHN0cmljdCB0aGFuIHNoZWxsIGxleGVyLCBidXQgdGhhdCdzIG9rLgpfb3NfcmVsZWFzZV9saW5lID0gcmUuY29tcGlsZSgKICAgICJeKD9QPG5hbWU+W2EtekEtWjAtOV9dKyk9KD9QPHF1b3RlPltcIlwnXT8pKD9QPHZhbHVlPi4qKSg/UD1xdW90ZSkkIgopCiMgdW5lc2NhcGUgZml2ZSBzcGVjaWFsIGNoYXJhY3RlcnMgbWVudGlvbmVkIGluIHRoZSBzdGFuZGFyZApfb3NfcmVsZWFzZV91bmVzY2FwZSA9IHJlLmNvbXBpbGUociJcXChbXFxcJFwiXCdgXSkiKQojIC9ldGMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIC91c3IvbGliCl9vc19yZWxlYXNlX2NhbmRpZGF0ZXMgPSAoIi9ldGMvb3MtcmVsZWFzZSIsICIvdXNyL2xpYi9vcy1yZWxlYXNlIikKX29zX3JlbGVhc2VfY2FjaGUgPSBOb25lCgoKZGVmIF9wYXJzZV9vc19yZWxlYXNlKGxpbmVzKToKICAgICMgVGhlc2UgZmllbGRzIGFyZSBtYW5kYXRvcnkgZmllbGRzIHdpdGggd2VsbC1rbm93biBkZWZhdWx0cwogICAgIyBpbiBwcmFjdGljZSBhbGwgTGludXggZGlzdHJpYnV0aW9ucyBvdmVycmlkZSBOQU1FLCBJRCwgYW5kIFBSRVRUWV9OQU1FLgogICAgaW5mbyA9IHsKICAgICAgICAiTkFNRSI6ICJMaW51eCIsCiAgICAgICAgIklEIjogImxpbnV4IiwKICAgICAgICAiUFJFVFRZX05BTUUiOiAiTGludXgiLAogICAgfQoKICAgIGZvciBsaW5lIGluIGxpbmVzOgogICAgICAgIG1vID0gX29zX3JlbGVhc2VfbGluZS5tYXRjaChsaW5lKQogICAgICAgIGlmIG1vIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpbmZvW21vLmdyb3VwKCduYW1lJyldID0gX29zX3JlbGVhc2VfdW5lc2NhcGUuc3ViKAogICAgICAgICAgICAgICAgciJcMSIsIG1vLmdyb3VwKCd2YWx1ZScpCiAgICAgICAgICAgICkKCiAgICByZXR1cm4gaW5mbwoKCmRlZiBmcmVlZGVza3RvcF9vc19yZWxlYXNlKCk6CiAgICAiIiJSZXR1cm4gb3BlcmF0aW9uIHN5c3RlbSBpZGVudGlmaWNhdGlvbiBmcm9tIGZyZWVkZXNrdG9wLm9yZyBvcy1yZWxlYXNlCiAgICAiIiIKICAgIGdsb2JhbCBfb3NfcmVsZWFzZV9jYWNoZQoKICAgIGlmIF9vc19yZWxlYXNlX2NhY2hlIGlzIE5vbmU6CiAgICAgICAgZXJybm8gPSBOb25lCiAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiBfb3NfcmVsZWFzZV9jYW5kaWRhdGVzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB3aXRoIG9wZW4oY2FuZGlkYXRlLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmOgogICAgICAgICAgICAgICAgICAgIF9vc19yZWxlYXNlX2NhY2hlID0gX3BhcnNlX29zX3JlbGVhc2UoZikKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICBlcnJubyA9IGUuZXJybm8KICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKAogICAgICAgICAgICAgICAgZXJybm8sCiAgICAgICAgICAgICAgICBmIlVuYWJsZSB0byByZWFkIGZpbGVzIHsnLCAnLmpvaW4oX29zX3JlbGVhc2VfY2FuZGlkYXRlcyl9IgogICAgICAgICAgICApCgogICAgcmV0dXJuIF9vc19yZWxlYXNlX2NhY2hlLmNvcHkoKQoKCiMjIyBDb21tYW5kIGxpbmUgaW50ZXJmYWNlCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIyBEZWZhdWx0IGlzIHRvIHByaW50IHRoZSBhbGlhc2VkIHZlcmJvc2UgcGxhdGZvcm0gc3RyaW5nCiAgICB0ZXJzZSA9ICgndGVyc2UnIGluIHN5cy5hcmd2IG9yICctLXRlcnNlJyBpbiBzeXMuYXJndikKICAgIGFsaWFzZWQgPSAobm90ICdub25hbGlhc2VkJyBpbiBzeXMuYXJndiBhbmQgbm90ICctLW5vbmFsaWFzZWQnIGluIHN5cy5hcmd2KQogICAgcHJpbnQocGxhdGZvcm0oYWxpYXNlZCwgdGVyc2UpKQogICAgc3lzLmV4aXQoMCkKUEsDBBQAAAAAAAIgo1ZN0EmGWW4AAFluAAALAAAAcGxpc3RsaWIucHlyIiIicGxpc3RsaWIucHkgLS0gYSB0b29sIHRvIGdlbmVyYXRlIGFuZCBwYXJzZSBNYWNPU1ggLnBsaXN0IGZpbGVzLgoKVGhlIHByb3BlcnR5IGxpc3QgKC5wbGlzdCkgZmlsZSBmb3JtYXQgaXMgYSBzaW1wbGUgWE1MIHBpY2tsZSBzdXBwb3J0aW5nCmJhc2ljIG9iamVjdCB0eXBlcywgbGlrZSBkaWN0aW9uYXJpZXMsIGxpc3RzLCBudW1iZXJzIGFuZCBzdHJpbmdzLgpVc3VhbGx5IHRoZSB0b3AgbGV2ZWwgb2JqZWN0IGlzIGEgZGljdGlvbmFyeS4KClRvIHdyaXRlIG91dCBhIHBsaXN0IGZpbGUsIHVzZSB0aGUgZHVtcCh2YWx1ZSwgZmlsZSkKZnVuY3Rpb24uICd2YWx1ZScgaXMgdGhlIHRvcCBsZXZlbCBvYmplY3QsICdmaWxlJyBpcwphICh3cml0YWJsZSkgZmlsZSBvYmplY3QuCgpUbyBwYXJzZSBhIHBsaXN0IGZyb20gYSBmaWxlLCB1c2UgdGhlIGxvYWQoZmlsZSkgZnVuY3Rpb24sCndpdGggYSAocmVhZGFibGUpIGZpbGUgb2JqZWN0IGFzIHRoZSBvbmx5IGFyZ3VtZW50LiBJdApyZXR1cm5zIHRoZSB0b3AgbGV2ZWwgb2JqZWN0IChhZ2FpbiwgdXN1YWxseSBhIGRpY3Rpb25hcnkpLgoKVG8gd29yayB3aXRoIHBsaXN0IGRhdGEgaW4gYnl0ZXMgb2JqZWN0cywgeW91IGNhbiB1c2UgbG9hZHMoKQphbmQgZHVtcHMoKS4KClZhbHVlcyBjYW4gYmUgc3RyaW5ncywgaW50ZWdlcnMsIGZsb2F0cywgYm9vbGVhbnMsIHR1cGxlcywgbGlzdHMsCmRpY3Rpb25hcmllcyAoYnV0IG9ubHkgd2l0aCBzdHJpbmcga2V5cyksIERhdGEsIGJ5dGVzLCBieXRlYXJyYXksIG9yCmRhdGV0aW1lLmRhdGV0aW1lIG9iamVjdHMuCgpHZW5lcmF0ZSBQbGlzdCBleGFtcGxlOgoKICAgIHBsID0gZGljdCgKICAgICAgICBhU3RyaW5nID0gIkRvb2RhaCIsCiAgICAgICAgYUxpc3QgPSBbIkEiLCAiQiIsIDEyLCAzMi4xLCBbMSwgMiwgM11dLAogICAgICAgIGFGbG9hdCA9IDAuMSwKICAgICAgICBhbkludCA9IDcyOCwKICAgICAgICBhRGljdCA9IGRpY3QoCiAgICAgICAgICAgIGFub3RoZXJTdHJpbmcgPSAiPGhlbGxvICYgaGkgdGhlcmUhPiIsCiAgICAgICAgICAgIGFVbmljb2RlVmFsdWUgPSAiTVx4ZTRzc2lnLCBNYVx4ZGYiLAogICAgICAgICAgICBhVHJ1ZVZhbHVlID0gVHJ1ZSwKICAgICAgICAgICAgYUZhbHNlVmFsdWUgPSBGYWxzZSwKICAgICAgICApLAogICAgICAgIHNvbWVEYXRhID0gYiI8YmluYXJ5IGd1bms+IiwKICAgICAgICBzb21lTW9yZURhdGEgPSBiIjxsb3RzIG9mIGJpbmFyeSBndW5rPiIgKiAxMCwKICAgICAgICBhRGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAodGltZS5ta3RpbWUodGltZS5nbXRpbWUoKSkpLAogICAgKQogICAgd2l0aCBvcGVuKGZpbGVOYW1lLCAnd2InKSBhcyBmcDoKICAgICAgICBkdW1wKHBsLCBmcCkKClBhcnNlIFBsaXN0IGV4YW1wbGU6CgogICAgd2l0aCBvcGVuKGZpbGVOYW1lLCAncmInKSBhcyBmcDoKICAgICAgICBwbCA9IGxvYWQoZnApCiAgICBwcmludChwbFsiYUtleSJdKQoiIiIKX19hbGxfXyA9IFsKICAgICJJbnZhbGlkRmlsZUV4Y2VwdGlvbiIsICJGTVRfWE1MIiwgIkZNVF9CSU5BUlkiLCAibG9hZCIsICJkdW1wIiwgImxvYWRzIiwgImR1bXBzIiwgIlVJRCIKXQoKaW1wb3J0IGJpbmFzY2lpCmltcG9ydCBjb2RlY3MKaW1wb3J0IGRhdGV0aW1lCmltcG9ydCBlbnVtCmZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KaW1wb3J0IGl0ZXJ0b29scwppbXBvcnQgb3MKaW1wb3J0IHJlCmltcG9ydCBzdHJ1Y3QKZnJvbSB4bWwucGFyc2Vycy5leHBhdCBpbXBvcnQgUGFyc2VyQ3JlYXRlCgoKUGxpc3RGb3JtYXQgPSBlbnVtLkVudW0oJ1BsaXN0Rm9ybWF0JywgJ0ZNVF9YTUwgRk1UX0JJTkFSWScsIG1vZHVsZT1fX25hbWVfXykKZ2xvYmFscygpLnVwZGF0ZShQbGlzdEZvcm1hdC5fX21lbWJlcnNfXykKCgpjbGFzcyBVSUQ6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgaW50KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYW4gaW50IikKICAgICAgICBpZiBkYXRhID49IDEgPDwgNjQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVJRHMgY2Fubm90IGJlID49IDIqKjY0IikKICAgICAgICBpZiBkYXRhIDwgMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVUlEcyBtdXN0IGJlIHBvc2l0aXZlIikKICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCgogICAgZGVmIF9faW5kZXhfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgcmVwcihzZWxmLmRhdGEpKQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKHNlbGYuZGF0YSwpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFVJRCk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiBzZWxmLmRhdGEgPT0gb3RoZXIuZGF0YQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaChzZWxmLmRhdGEpCgojCiMgWE1MIHN1cHBvcnQKIwoKCiMgWE1MICdoZWFkZXInClBMSVNUSEVBREVSID0gYiIiIlwKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiIiIgoKCiMgUmVnZXggdG8gZmluZCBhbnkgY29udHJvbCBjaGFycywgZXhjZXB0IGZvciBcdCBcbiBhbmQgXHIKX2NvbnRyb2xDaGFyUGF0ID0gcmUuY29tcGlsZSgKICAgIHIiW1x4MDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XHgwOFx4MGJceDBjXHgwZVx4MGYiCiAgICByIlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWZdIikKCmRlZiBfZW5jb2RlX2Jhc2U2NChzLCBtYXhsaW5lbGVuZ3RoPTc2KToKICAgICMgY29waWVkIGZyb20gYmFzZTY0LmVuY29kZWJ5dGVzKCksIHdpdGggYWRkZWQgbWF4bGluZWxlbmd0aCBhcmd1bWVudAogICAgbWF4Ymluc2l6ZSA9IChtYXhsaW5lbGVuZ3RoLy80KSozCiAgICBwaWVjZXMgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHMpLCBtYXhiaW5zaXplKToKICAgICAgICBjaHVuayA9IHNbaSA6IGkgKyBtYXhiaW5zaXplXQogICAgICAgIHBpZWNlcy5hcHBlbmQoYmluYXNjaWkuYjJhX2Jhc2U2NChjaHVuaykpCiAgICByZXR1cm4gYicnLmpvaW4ocGllY2VzKQoKZGVmIF9kZWNvZGVfYmFzZTY0KHMpOgogICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgogICAgICAgIHJldHVybiBiaW5hc2NpaS5hMmJfYmFzZTY0KHMuZW5jb2RlKCJ1dGYtOCIpKQoKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGJpbmFzY2lpLmEyYl9iYXNlNjQocykKCiMgQ29udGVudHMgc2hvdWxkIGNvbmZvcm0gdG8gYSBzdWJzZXQgb2YgSVNPIDg2MDEKIyAoaW4gcGFydGljdWxhciwgWVlZWSAnLScgTU0gJy0nIEREICdUJyBISCAnOicgTU0gJzonIFNTICdaJy4gIFNtYWxsZXIgdW5pdHMKIyBtYXkgYmUgb21pdHRlZCB3aXRoICMgIGEgbG9zcyBvZiBwcmVjaXNpb24pCl9kYXRlUGFyc2VyID0gcmUuY29tcGlsZShyIig/UDx5ZWFyPlxkXGRcZFxkKSg/Oi0oP1A8bW9udGg+XGRcZCkoPzotKD9QPGRheT5cZFxkKSg/OlQoP1A8aG91cj5cZFxkKSg/OjooP1A8bWludXRlPlxkXGQpKD86Oig/UDxzZWNvbmQ+XGRcZCkpPyk/KT8pPyk/WiIsIHJlLkFTQ0lJKQoKCmRlZiBfZGF0ZV9mcm9tX3N0cmluZyhzKToKICAgIG9yZGVyID0gKCd5ZWFyJywgJ21vbnRoJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnKQogICAgZ2QgPSBfZGF0ZVBhcnNlci5tYXRjaChzKS5ncm91cGRpY3QoKQogICAgbHN0ID0gW10KICAgIGZvciBrZXkgaW4gb3JkZXI6CiAgICAgICAgdmFsID0gZ2Rba2V5XQogICAgICAgIGlmIHZhbCBpcyBOb25lOgogICAgICAgICAgICBicmVhawogICAgICAgIGxzdC5hcHBlbmQoaW50KHZhbCkpCiAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKmxzdCkKCgpkZWYgX2RhdGVfdG9fc3RyaW5nKGQpOgogICAgcmV0dXJuICclMDRkLSUwMmQtJTAyZFQlMDJkOiUwMmQ6JTAyZFonICUgKAogICAgICAgIGQueWVhciwgZC5tb250aCwgZC5kYXksCiAgICAgICAgZC5ob3VyLCBkLm1pbnV0ZSwgZC5zZWNvbmQKICAgICkKCmRlZiBfZXNjYXBlKHRleHQpOgogICAgbSA9IF9jb250cm9sQ2hhclBhdC5zZWFyY2godGV4dCkKICAgIGlmIG0gaXMgbm90IE5vbmU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3RyaW5ncyBjYW4ndCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVyczsgIgogICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBieXRlcyBpbnN0ZWFkIikKICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlxyXG4iLCAiXG4iKSAgICAgICAjIGNvbnZlcnQgRE9TIGxpbmUgZW5kaW5ncwogICAgdGV4dCA9IHRleHQucmVwbGFjZSgiXHIiLCAiXG4iKSAgICAgICAgICMgY29udmVydCBNYWMgbGluZSBlbmRpbmdzCiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCImIiwgIiZhbXA7IikgICAgICAgIyBlc2NhcGUgJyYnCiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCI8IiwgIiZsdDsiKSAgICAgICAgIyBlc2NhcGUgJzwnCiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCI+IiwgIiZndDsiKSAgICAgICAgIyBlc2NhcGUgJz4nCiAgICByZXR1cm4gdGV4dAoKY2xhc3MgX1BsaXN0UGFyc2VyOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpY3RfdHlwZSk6CiAgICAgICAgc2VsZi5zdGFjayA9IFtdCiAgICAgICAgc2VsZi5jdXJyZW50X2tleSA9IE5vbmUKICAgICAgICBzZWxmLnJvb3QgPSBOb25lCiAgICAgICAgc2VsZi5fZGljdF90eXBlID0gZGljdF90eXBlCgogICAgZGVmIHBhcnNlKHNlbGYsIGZpbGVvYmopOgogICAgICAgIHNlbGYucGFyc2VyID0gUGFyc2VyQ3JlYXRlKCkKICAgICAgICBzZWxmLnBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5oYW5kbGVfYmVnaW5fZWxlbWVudAogICAgICAgIHNlbGYucGFyc2VyLkVuZEVsZW1lbnRIYW5kbGVyID0gc2VsZi5oYW5kbGVfZW5kX2VsZW1lbnQKICAgICAgICBzZWxmLnBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHNlbGYuaGFuZGxlX2RhdGEKICAgICAgICBzZWxmLnBhcnNlci5FbnRpdHlEZWNsSGFuZGxlciA9IHNlbGYuaGFuZGxlX2VudGl0eV9kZWNsCiAgICAgICAgc2VsZi5wYXJzZXIuUGFyc2VGaWxlKGZpbGVvYmopCiAgICAgICAgcmV0dXJuIHNlbGYucm9vdAoKICAgIGRlZiBoYW5kbGVfZW50aXR5X2RlY2woc2VsZiwgZW50aXR5X25hbWUsIGlzX3BhcmFtZXRlcl9lbnRpdHksIHZhbHVlLCBiYXNlLCBzeXN0ZW1faWQsIHB1YmxpY19pZCwgbm90YXRpb25fbmFtZSk6CiAgICAgICAgIyBSZWplY3QgcGxpc3QgZmlsZXMgd2l0aCBlbnRpdHkgZGVjbGFyYXRpb25zIHRvIGF2b2lkIFhNTCB2dWxuZXJhYmlsaXRpZXMgaW4gZXhwYXQuCiAgICAgICAgIyBSZWd1bGFyIHBsaXN0IGZpbGVzIGRvbid0IGNvbnRhaW4gdGhvc2UgZGVjbGFyYXRpb25zLCBhbmQgQXBwbGUncyBwbHV0aWwgdG9vbCBkb2VzIG5vdAogICAgICAgICMgYWNjZXB0IHRoZW0gZWl0aGVyLgogICAgICAgIHJhaXNlIEludmFsaWRGaWxlRXhjZXB0aW9uKCJYTUwgZW50aXR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiBwbGlzdCBmaWxlcyIpCgogICAgZGVmIGhhbmRsZV9iZWdpbl9lbGVtZW50KHNlbGYsIGVsZW1lbnQsIGF0dHJzKToKICAgICAgICBzZWxmLmRhdGEgPSBbXQogICAgICAgIGhhbmRsZXIgPSBnZXRhdHRyKHNlbGYsICJiZWdpbl8iICsgZWxlbWVudCwgTm9uZSkKICAgICAgICBpZiBoYW5kbGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBoYW5kbGVyKGF0dHJzKQoKICAgIGRlZiBoYW5kbGVfZW5kX2VsZW1lbnQoc2VsZiwgZWxlbWVudCk6CiAgICAgICAgaGFuZGxlciA9IGdldGF0dHIoc2VsZiwgImVuZF8iICsgZWxlbWVudCwgTm9uZSkKICAgICAgICBpZiBoYW5kbGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBoYW5kbGVyKCkKCiAgICBkZWYgaGFuZGxlX2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5kYXRhLmFwcGVuZChkYXRhKQoKICAgIGRlZiBhZGRfb2JqZWN0KHNlbGYsIHZhbHVlKToKICAgICAgICBpZiBzZWxmLmN1cnJlbnRfa2V5IGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLnN0YWNrWy0xXSwgdHlwZSh7fSkpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5leHBlY3RlZCBlbGVtZW50IGF0IGxpbmUgJWQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIuQ3VycmVudExpbmVOdW1iZXIpCiAgICAgICAgICAgIHNlbGYuc3RhY2tbLTFdW3NlbGYuY3VycmVudF9rZXldID0gdmFsdWUKICAgICAgICAgICAgc2VsZi5jdXJyZW50X2tleSA9IE5vbmUKICAgICAgICBlbGlmIG5vdCBzZWxmLnN0YWNrOgogICAgICAgICAgICAjIHRoaXMgaXMgdGhlIHJvb3Qgb2JqZWN0CiAgICAgICAgICAgIHNlbGYucm9vdCA9IHZhbHVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5zdGFja1stMV0sIHR5cGUoW10pKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuZXhwZWN0ZWQgZWxlbWVudCBhdCBsaW5lICVkIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLkN1cnJlbnRMaW5lTnVtYmVyKQogICAgICAgICAgICBzZWxmLnN0YWNrWy0xXS5hcHBlbmQodmFsdWUpCgogICAgZGVmIGdldF9kYXRhKHNlbGYpOgogICAgICAgIGRhdGEgPSAnJy5qb2luKHNlbGYuZGF0YSkKICAgICAgICBzZWxmLmRhdGEgPSBbXQogICAgICAgIHJldHVybiBkYXRhCgogICAgIyBlbGVtZW50IGhhbmRsZXJzCgogICAgZGVmIGJlZ2luX2RpY3Qoc2VsZiwgYXR0cnMpOgogICAgICAgIGQgPSBzZWxmLl9kaWN0X3R5cGUoKQogICAgICAgIHNlbGYuYWRkX29iamVjdChkKQogICAgICAgIHNlbGYuc3RhY2suYXBwZW5kKGQpCgogICAgZGVmIGVuZF9kaWN0KHNlbGYpOgogICAgICAgIGlmIHNlbGYuY3VycmVudF9rZXk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1pc3NpbmcgdmFsdWUgZm9yIGtleSAnJXMnIGF0IGxpbmUgJWQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5jdXJyZW50X2tleSxzZWxmLnBhcnNlci5DdXJyZW50TGluZU51bWJlcikpCiAgICAgICAgc2VsZi5zdGFjay5wb3AoKQoKICAgIGRlZiBlbmRfa2V5KHNlbGYpOgogICAgICAgIGlmIHNlbGYuY3VycmVudF9rZXkgb3Igbm90IGlzaW5zdGFuY2Uoc2VsZi5zdGFja1stMV0sIHR5cGUoe30pKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5leHBlY3RlZCBrZXkgYXQgbGluZSAlZCIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLkN1cnJlbnRMaW5lTnVtYmVyKQogICAgICAgIHNlbGYuY3VycmVudF9rZXkgPSBzZWxmLmdldF9kYXRhKCkKCiAgICBkZWYgYmVnaW5fYXJyYXkoc2VsZiwgYXR0cnMpOgogICAgICAgIGEgPSBbXQogICAgICAgIHNlbGYuYWRkX29iamVjdChhKQogICAgICAgIHNlbGYuc3RhY2suYXBwZW5kKGEpCgogICAgZGVmIGVuZF9hcnJheShzZWxmKToKICAgICAgICBzZWxmLnN0YWNrLnBvcCgpCgogICAgZGVmIGVuZF90cnVlKHNlbGYpOgogICAgICAgIHNlbGYuYWRkX29iamVjdChUcnVlKQoKICAgIGRlZiBlbmRfZmFsc2Uoc2VsZik6CiAgICAgICAgc2VsZi5hZGRfb2JqZWN0KEZhbHNlKQoKICAgIGRlZiBlbmRfaW50ZWdlcihzZWxmKToKICAgICAgICByYXcgPSBzZWxmLmdldF9kYXRhKCkKICAgICAgICBpZiByYXcuc3RhcnRzd2l0aCgnMHgnKSBvciByYXcuc3RhcnRzd2l0aCgnMFgnKToKICAgICAgICAgICAgc2VsZi5hZGRfb2JqZWN0KGludChyYXcsIDE2KSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmFkZF9vYmplY3QoaW50KHJhdykpCgogICAgZGVmIGVuZF9yZWFsKHNlbGYpOgogICAgICAgIHNlbGYuYWRkX29iamVjdChmbG9hdChzZWxmLmdldF9kYXRhKCkpKQoKICAgIGRlZiBlbmRfc3RyaW5nKHNlbGYpOgogICAgICAgIHNlbGYuYWRkX29iamVjdChzZWxmLmdldF9kYXRhKCkpCgogICAgZGVmIGVuZF9kYXRhKHNlbGYpOgogICAgICAgIHNlbGYuYWRkX29iamVjdChfZGVjb2RlX2Jhc2U2NChzZWxmLmdldF9kYXRhKCkpKQoKICAgIGRlZiBlbmRfZGF0ZShzZWxmKToKICAgICAgICBzZWxmLmFkZF9vYmplY3QoX2RhdGVfZnJvbV9zdHJpbmcoc2VsZi5nZXRfZGF0YSgpKSkKCgpjbGFzcyBfRHVtYlhNTFdyaXRlcjoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBpbmRlbnRfbGV2ZWw9MCwgaW5kZW50PSJcdCIpOgogICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKICAgICAgICBzZWxmLnN0YWNrID0gW10KICAgICAgICBzZWxmLl9pbmRlbnRfbGV2ZWwgPSBpbmRlbnRfbGV2ZWwKICAgICAgICBzZWxmLmluZGVudCA9IGluZGVudAoKICAgIGRlZiBiZWdpbl9lbGVtZW50KHNlbGYsIGVsZW1lbnQpOgogICAgICAgIHNlbGYuc3RhY2suYXBwZW5kKGVsZW1lbnQpCiAgICAgICAgc2VsZi53cml0ZWxuKCI8JXM+IiAlIGVsZW1lbnQpCiAgICAgICAgc2VsZi5faW5kZW50X2xldmVsICs9IDEKCiAgICBkZWYgZW5kX2VsZW1lbnQoc2VsZiwgZWxlbWVudCk6CiAgICAgICAgYXNzZXJ0IHNlbGYuX2luZGVudF9sZXZlbCA+IDAKICAgICAgICBhc3NlcnQgc2VsZi5zdGFjay5wb3AoKSA9PSBlbGVtZW50CiAgICAgICAgc2VsZi5faW5kZW50X2xldmVsIC09IDEKICAgICAgICBzZWxmLndyaXRlbG4oIjwvJXM+IiAlIGVsZW1lbnQpCgogICAgZGVmIHNpbXBsZV9lbGVtZW50KHNlbGYsIGVsZW1lbnQsIHZhbHVlPU5vbmUpOgogICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICB2YWx1ZSA9IF9lc2NhcGUodmFsdWUpCiAgICAgICAgICAgIHNlbGYud3JpdGVsbigiPCVzPiVzPC8lcz4iICUgKGVsZW1lbnQsIHZhbHVlLCBlbGVtZW50KSkKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi53cml0ZWxuKCI8JXMvPiIgJSBlbGVtZW50KQoKICAgIGRlZiB3cml0ZWxuKHNlbGYsIGxpbmUpOgogICAgICAgIGlmIGxpbmU6CiAgICAgICAgICAgICMgcGxpc3QgaGFzIGZpeGVkIGVuY29kaW5nIG9mIHV0Zi04CgogICAgICAgICAgICAjIFhYWDogaXMgdGhpcyB0ZXN0IG5lZWRlZD8KICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBzdHIpOgogICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgICAgIHNlbGYuZmlsZS53cml0ZShzZWxmLl9pbmRlbnRfbGV2ZWwgKiBzZWxmLmluZGVudCkKICAgICAgICAgICAgc2VsZi5maWxlLndyaXRlKGxpbmUpCiAgICAgICAgc2VsZi5maWxlLndyaXRlKGInXG4nKQoKCmNsYXNzIF9QbGlzdFdyaXRlcihfRHVtYlhNTFdyaXRlcik6CiAgICBkZWYgX19pbml0X18oCiAgICAgICAgICAgIHNlbGYsIGZpbGUsIGluZGVudF9sZXZlbD0wLCBpbmRlbnQ9YiJcdCIsIHdyaXRlSGVhZGVyPTEsCiAgICAgICAgICAgIHNvcnRfa2V5cz1UcnVlLCBza2lwa2V5cz1GYWxzZSk6CgogICAgICAgIGlmIHdyaXRlSGVhZGVyOgogICAgICAgICAgICBmaWxlLndyaXRlKFBMSVNUSEVBREVSKQogICAgICAgIF9EdW1iWE1MV3JpdGVyLl9faW5pdF9fKHNlbGYsIGZpbGUsIGluZGVudF9sZXZlbCwgaW5kZW50KQogICAgICAgIHNlbGYuX3NvcnRfa2V5cyA9IHNvcnRfa2V5cwogICAgICAgIHNlbGYuX3NraXBrZXlzID0gc2tpcGtleXMKCiAgICBkZWYgd3JpdGUoc2VsZiwgdmFsdWUpOgogICAgICAgIHNlbGYud3JpdGVsbigiPHBsaXN0IHZlcnNpb249XCIxLjBcIj4iKQogICAgICAgIHNlbGYud3JpdGVfdmFsdWUodmFsdWUpCiAgICAgICAgc2VsZi53cml0ZWxuKCI8L3BsaXN0PiIpCgogICAgZGVmIHdyaXRlX3ZhbHVlKHNlbGYsIHZhbHVlKToKICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICBzZWxmLnNpbXBsZV9lbGVtZW50KCJzdHJpbmciLCB2YWx1ZSkKCiAgICAgICAgZWxpZiB2YWx1ZSBpcyBUcnVlOgogICAgICAgICAgICBzZWxmLnNpbXBsZV9lbGVtZW50KCJ0cnVlIikKCiAgICAgICAgZWxpZiB2YWx1ZSBpcyBGYWxzZToKICAgICAgICAgICAgc2VsZi5zaW1wbGVfZWxlbWVudCgiZmFsc2UiKQoKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CiAgICAgICAgICAgIGlmIC0xIDw8IDYzIDw9IHZhbHVlIDwgMSA8PCA2NDoKICAgICAgICAgICAgICAgIHNlbGYuc2ltcGxlX2VsZW1lbnQoImludGVnZXIiLCAiJWQiICUgdmFsdWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKHZhbHVlKQoKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKICAgICAgICAgICAgc2VsZi5zaW1wbGVfZWxlbWVudCgicmVhbCIsIHJlcHIodmFsdWUpKQoKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgogICAgICAgICAgICBzZWxmLndyaXRlX2RpY3QodmFsdWUpCgogICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKICAgICAgICAgICAgc2VsZi53cml0ZV9ieXRlcyh2YWx1ZSkKCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBkYXRldGltZS5kYXRldGltZSk6CiAgICAgICAgICAgIHNlbGYuc2ltcGxlX2VsZW1lbnQoImRhdGUiLCBfZGF0ZV90b19zdHJpbmcodmFsdWUpKQoKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsICh0dXBsZSwgbGlzdCkpOgogICAgICAgICAgICBzZWxmLndyaXRlX2FycmF5KHZhbHVlKQoKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInVuc3VwcG9ydGVkIHR5cGU6ICVzIiAlIHR5cGUodmFsdWUpKQoKICAgIGRlZiB3cml0ZV9ieXRlcyhzZWxmLCBkYXRhKToKICAgICAgICBzZWxmLmJlZ2luX2VsZW1lbnQoImRhdGEiKQogICAgICAgIHNlbGYuX2luZGVudF9sZXZlbCAtPSAxCiAgICAgICAgbWF4bGluZWxlbmd0aCA9IG1heCgKICAgICAgICAgICAgMTYsCiAgICAgICAgICAgIDc2IC0gbGVuKHNlbGYuaW5kZW50LnJlcGxhY2UoYiJcdCIsIGIiICIgKiA4KSAqIHNlbGYuX2luZGVudF9sZXZlbCkpCgogICAgICAgIGZvciBsaW5lIGluIF9lbmNvZGVfYmFzZTY0KGRhdGEsIG1heGxpbmVsZW5ndGgpLnNwbGl0KGIiXG4iKToKICAgICAgICAgICAgaWYgbGluZToKICAgICAgICAgICAgICAgIHNlbGYud3JpdGVsbihsaW5lKQogICAgICAgIHNlbGYuX2luZGVudF9sZXZlbCArPSAxCiAgICAgICAgc2VsZi5lbmRfZWxlbWVudCgiZGF0YSIpCgogICAgZGVmIHdyaXRlX2RpY3Qoc2VsZiwgZCk6CiAgICAgICAgaWYgZDoKICAgICAgICAgICAgc2VsZi5iZWdpbl9lbGVtZW50KCJkaWN0IikKICAgICAgICAgICAgaWYgc2VsZi5fc29ydF9rZXlzOgogICAgICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaXRlbXMgPSBkLml0ZW1zKCkKCiAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZW1zOgogICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NraXBrZXlzOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigia2V5cyBtdXN0IGJlIHN0cmluZ3MiKQogICAgICAgICAgICAgICAgc2VsZi5zaW1wbGVfZWxlbWVudCgia2V5Iiwga2V5KQogICAgICAgICAgICAgICAgc2VsZi53cml0ZV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgc2VsZi5lbmRfZWxlbWVudCgiZGljdCIpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuc2ltcGxlX2VsZW1lbnQoImRpY3QiKQoKICAgIGRlZiB3cml0ZV9hcnJheShzZWxmLCBhcnJheSk6CiAgICAgICAgaWYgYXJyYXk6CiAgICAgICAgICAgIHNlbGYuYmVnaW5fZWxlbWVudCgiYXJyYXkiKQogICAgICAgICAgICBmb3IgdmFsdWUgaW4gYXJyYXk6CiAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3ZhbHVlKHZhbHVlKQogICAgICAgICAgICBzZWxmLmVuZF9lbGVtZW50KCJhcnJheSIpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuc2ltcGxlX2VsZW1lbnQoImFycmF5IikKCgpkZWYgX2lzX2ZtdF94bWwoaGVhZGVyKToKICAgIHByZWZpeGVzID0gKGInPD94bWwnLCBiJzxwbGlzdCcpCgogICAgZm9yIHBmeCBpbiBwcmVmaXhlczoKICAgICAgICBpZiBoZWFkZXIuc3RhcnRzd2l0aChwZngpOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQoKICAgICMgQWxzbyBjaGVjayBmb3IgYWx0ZXJuYXRpdmUgWE1MIGVuY29kaW5ncywgdGhpcyBpcyBzbGlnaHRseQogICAgIyBvdmVya2lsbCBiZWNhdXNlIHRoZSBBcHBsZSB0b29scyAoYW5kIHBsaXN0bGliKSB3aWxsIG5vdAogICAgIyBnZW5lcmF0ZSBmaWxlcyB3aXRoIHRoZXNlIGVuY29kaW5ncy4KICAgIGZvciBib20sIGVuY29kaW5nIGluICgKICAgICAgICAgICAgICAgIChjb2RlY3MuQk9NX1VURjgsICJ1dGYtOCIpLAogICAgICAgICAgICAgICAgKGNvZGVjcy5CT01fVVRGMTZfQkUsICJ1dGYtMTYtYmUiKSwKICAgICAgICAgICAgICAgIChjb2RlY3MuQk9NX1VURjE2X0xFLCAidXRmLTE2LWxlIiksCiAgICAgICAgICAgICAgICAjIGV4cGF0IGRvZXMgbm90IHN1cHBvcnQgdXRmLTMyCiAgICAgICAgICAgICAgICAjKGNvZGVjcy5CT01fVVRGMzJfQkUsICJ1dGYtMzItYmUiKSwKICAgICAgICAgICAgICAgICMoY29kZWNzLkJPTV9VVEYzMl9MRSwgInV0Zi0zMi1sZSIpLAogICAgICAgICAgICApOgogICAgICAgIGlmIG5vdCBoZWFkZXIuc3RhcnRzd2l0aChib20pOgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBmb3Igc3RhcnQgaW4gcHJlZml4ZXM6CiAgICAgICAgICAgIHByZWZpeCA9IGJvbSArIHN0YXJ0LmRlY29kZSgnYXNjaWknKS5lbmNvZGUoZW5jb2RpbmcpCiAgICAgICAgICAgIGlmIGhlYWRlcls6bGVuKHByZWZpeCldID09IHByZWZpeDoKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgcmV0dXJuIEZhbHNlCgojCiMgQmluYXJ5IFBsaXN0CiMKCgpjbGFzcyBJbnZhbGlkRmlsZUV4Y2VwdGlvbiAoVmFsdWVFcnJvcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT0iSW52YWxpZCBmaWxlIik6CiAgICAgICAgVmFsdWVFcnJvci5fX2luaXRfXyhzZWxmLCBtZXNzYWdlKQoKX0JJTkFSWV9GT1JNQVQgPSB7MTogJ0InLCAyOiAnSCcsIDQ6ICdMJywgODogJ1EnfQoKX3VuZGVmaW5lZCA9IG9iamVjdCgpCgpjbGFzcyBfQmluYXJ5UGxpc3RQYXJzZXI6CiAgICAiIiIKICAgIFJlYWQgb3Igd3JpdGUgYSBiaW5hcnkgcGxpc3QgZmlsZSwgZm9sbG93aW5nIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYmluYXJ5CiAgICBmb3JtYXQuICBSYWlzZSBJbnZhbGlkRmlsZUV4Y2VwdGlvbiBpbiBjYXNlIG9mIGVycm9yLCBvdGhlcndpc2UgcmV0dXJuIHRoZQogICAgcm9vdCBvYmplY3QuCgogICAgc2VlIGFsc286IGh0dHA6Ly9vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvQ0YvQ0YtNzQ0LjE4L0NGQmluYXJ5UExpc3QuYwogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZGljdF90eXBlKToKICAgICAgICBzZWxmLl9kaWN0X3R5cGUgPSBkaWN0X3R5cGUKCiAgICBkZWYgcGFyc2Uoc2VsZiwgZnApOgogICAgICAgIHRyeToKICAgICAgICAgICAgIyBUaGUgYmFzaWMgZmlsZSBmb3JtYXQ6CiAgICAgICAgICAgICMgSEVBREVSCiAgICAgICAgICAgICMgb2JqZWN0Li4uCiAgICAgICAgICAgICMgcmVmaWQtPm9mZnNldC4uLgogICAgICAgICAgICAjIFRSQUlMRVIKICAgICAgICAgICAgc2VsZi5fZnAgPSBmcAogICAgICAgICAgICBzZWxmLl9mcC5zZWVrKC0zMiwgb3MuU0VFS19FTkQpCiAgICAgICAgICAgIHRyYWlsZXIgPSBzZWxmLl9mcC5yZWFkKDMyKQogICAgICAgICAgICBpZiBsZW4odHJhaWxlcikgIT0gMzI6CiAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRmlsZUV4Y2VwdGlvbigpCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIG9mZnNldF9zaXplLCBzZWxmLl9yZWZfc2l6ZSwgbnVtX29iamVjdHMsIHRvcF9vYmplY3QsCiAgICAgICAgICAgICAgICBvZmZzZXRfdGFibGVfb2Zmc2V0CiAgICAgICAgICAgICkgPSBzdHJ1Y3QudW5wYWNrKCc+NnhCQlFRUScsIHRyYWlsZXIpCiAgICAgICAgICAgIHNlbGYuX2ZwLnNlZWsob2Zmc2V0X3RhYmxlX29mZnNldCkKICAgICAgICAgICAgc2VsZi5fb2JqZWN0X29mZnNldHMgPSBzZWxmLl9yZWFkX2ludHMobnVtX29iamVjdHMsIG9mZnNldF9zaXplKQogICAgICAgICAgICBzZWxmLl9vYmplY3RzID0gW191bmRlZmluZWRdICogbnVtX29iamVjdHMKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfb2JqZWN0KHRvcF9vYmplY3QpCgogICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSW5kZXhFcnJvciwgc3RydWN0LmVycm9yLCBPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgVmFsdWVFcnJvcik6CiAgICAgICAgICAgIHJhaXNlIEludmFsaWRGaWxlRXhjZXB0aW9uKCkKCiAgICBkZWYgX2dldF9zaXplKHNlbGYsIHRva2VuTCk6CiAgICAgICAgIiIiIHJldHVybiB0aGUgc2l6ZSBvZiB0aGUgbmV4dCBvYmplY3QuIiIiCiAgICAgICAgaWYgdG9rZW5MID09IDB4RjoKICAgICAgICAgICAgbSA9IHNlbGYuX2ZwLnJlYWQoMSlbMF0gJiAweDMKICAgICAgICAgICAgcyA9IDEgPDwgbQogICAgICAgICAgICBmID0gJz4nICsgX0JJTkFSWV9GT1JNQVRbc10KICAgICAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soZiwgc2VsZi5fZnAucmVhZChzKSlbMF0KCiAgICAgICAgcmV0dXJuIHRva2VuTAoKICAgIGRlZiBfcmVhZF9pbnRzKHNlbGYsIG4sIHNpemUpOgogICAgICAgIGRhdGEgPSBzZWxmLl9mcC5yZWFkKHNpemUgKiBuKQogICAgICAgIGlmIHNpemUgaW4gX0JJTkFSWV9GT1JNQVQ6CiAgICAgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKGYnPntufXtfQklOQVJZX0ZPUk1BVFtzaXplXX0nLCBkYXRhKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIG5vdCBzaXplIG9yIGxlbihkYXRhKSAhPSBzaXplICogbjoKICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGaWxlRXhjZXB0aW9uKCkKICAgICAgICAgICAgcmV0dXJuIHR1cGxlKGludC5mcm9tX2J5dGVzKGRhdGFbaTogaSArIHNpemVdLCAnYmlnJykKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIHNpemUgKiBuLCBzaXplKSkKCiAgICBkZWYgX3JlYWRfcmVmcyhzZWxmLCBuKToKICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9pbnRzKG4sIHNlbGYuX3JlZl9zaXplKQoKICAgIGRlZiBfcmVhZF9vYmplY3Qoc2VsZiwgcmVmKToKICAgICAgICAiIiIKICAgICAgICByZWFkIHRoZSBvYmplY3QgYnkgcmVmZXJlbmNlLgoKICAgICAgICBNYXkgcmVjdXJzaXZlbHkgcmVhZCBzdWItb2JqZWN0cyAoY29udGVudCBvZiBhbiBhcnJheS9kaWN0L3NldCkKICAgICAgICAiIiIKICAgICAgICByZXN1bHQgPSBzZWxmLl9vYmplY3RzW3JlZl0KICAgICAgICBpZiByZXN1bHQgaXMgbm90IF91bmRlZmluZWQ6CiAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICAgICAgb2Zmc2V0ID0gc2VsZi5fb2JqZWN0X29mZnNldHNbcmVmXQogICAgICAgIHNlbGYuX2ZwLnNlZWsob2Zmc2V0KQogICAgICAgIHRva2VuID0gc2VsZi5fZnAucmVhZCgxKVswXQogICAgICAgIHRva2VuSCwgdG9rZW5MID0gdG9rZW4gJiAweEYwLCB0b2tlbiAmIDB4MEYKCiAgICAgICAgaWYgdG9rZW4gPT0gMHgwMDoKICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQoKICAgICAgICBlbGlmIHRva2VuID09IDB4MDg6CiAgICAgICAgICAgIHJlc3VsdCA9IEZhbHNlCgogICAgICAgIGVsaWYgdG9rZW4gPT0gMHgwOToKICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZQoKICAgICAgICAjIFRoZSByZWZlcmVuY2VkIHNvdXJjZSBjb2RlIGFsc28gbWVudGlvbnMgVVJMICgweDBjLCAweDBkKSBhbmQKICAgICAgICAjIFVVSUQgKDB4MGUpLCBidXQgbmVpdGhlciBjYW4gYmUgZ2VuZXJhdGVkIHVzaW5nIHRoZSBDb2NvYSBsaWJyYXJpZXMuCgogICAgICAgIGVsaWYgdG9rZW4gPT0gMHgwZjoKICAgICAgICAgICAgcmVzdWx0ID0gYicnCgogICAgICAgIGVsaWYgdG9rZW5IID09IDB4MTA6ICAjIGludAogICAgICAgICAgICByZXN1bHQgPSBpbnQuZnJvbV9ieXRlcyhzZWxmLl9mcC5yZWFkKDEgPDwgdG9rZW5MKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpZycsIHNpZ25lZD10b2tlbkwgPj0gMykKCiAgICAgICAgZWxpZiB0b2tlbiA9PSAweDIyOiAjIHJlYWwKICAgICAgICAgICAgcmVzdWx0ID0gc3RydWN0LnVucGFjaygnPmYnLCBzZWxmLl9mcC5yZWFkKDQpKVswXQoKICAgICAgICBlbGlmIHRva2VuID09IDB4MjM6ICMgcmVhbAogICAgICAgICAgICByZXN1bHQgPSBzdHJ1Y3QudW5wYWNrKCc+ZCcsIHNlbGYuX2ZwLnJlYWQoOCkpWzBdCgogICAgICAgIGVsaWYgdG9rZW4gPT0gMHgzMzogICMgZGF0ZQogICAgICAgICAgICBmID0gc3RydWN0LnVucGFjaygnPmQnLCBzZWxmLl9mcC5yZWFkKDgpKVswXQogICAgICAgICAgICAjIHRpbWVzdGFtcCAwIG9mIGJpbmFyeSBwbGlzdHMgY29ycmVzcG9uZHMgdG8gMS8xLzIwMDEKICAgICAgICAgICAgIyAoeWVhciBvZiBNYWMgT1MgWCAxMC4wKSwgaW5zdGVhZCBvZiAxLzEvMTk3MC4KICAgICAgICAgICAgcmVzdWx0ID0gKGRhdGV0aW1lLmRhdGV0aW1lKDIwMDEsIDEsIDEpICsKICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWYpKQoKICAgICAgICBlbGlmIHRva2VuSCA9PSAweDQwOiAgIyBkYXRhCiAgICAgICAgICAgIHMgPSBzZWxmLl9nZXRfc2l6ZSh0b2tlbkwpCiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2ZwLnJlYWQocykKICAgICAgICAgICAgaWYgbGVuKHJlc3VsdCkgIT0gczoKICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGaWxlRXhjZXB0aW9uKCkKCiAgICAgICAgZWxpZiB0b2tlbkggPT0gMHg1MDogICMgYXNjaWkgc3RyaW5nCiAgICAgICAgICAgIHMgPSBzZWxmLl9nZXRfc2l6ZSh0b2tlbkwpCiAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9mcC5yZWFkKHMpCiAgICAgICAgICAgIGlmIGxlbihkYXRhKSAhPSBzOgogICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZpbGVFeGNlcHRpb24oKQogICAgICAgICAgICByZXN1bHQgPSBkYXRhLmRlY29kZSgnYXNjaWknKQoKICAgICAgICBlbGlmIHRva2VuSCA9PSAweDYwOiAgIyB1bmljb2RlIHN0cmluZwogICAgICAgICAgICBzID0gc2VsZi5fZ2V0X3NpemUodG9rZW5MKSAqIDIKICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZwLnJlYWQocykKICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IHM6CiAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRmlsZUV4Y2VwdGlvbigpCiAgICAgICAgICAgIHJlc3VsdCA9IGRhdGEuZGVjb2RlKCd1dGYtMTZiZScpCgogICAgICAgIGVsaWYgdG9rZW5IID09IDB4ODA6ICAjIFVJRAogICAgICAgICAgICAjIHVzZWQgYnkgS2V5LUFyY2hpdmVyIHBsaXN0IGZpbGVzCiAgICAgICAgICAgIHJlc3VsdCA9IFVJRChpbnQuZnJvbV9ieXRlcyhzZWxmLl9mcC5yZWFkKDEgKyB0b2tlbkwpLCAnYmlnJykpCgogICAgICAgIGVsaWYgdG9rZW5IID09IDB4QTA6ICAjIGFycmF5CiAgICAgICAgICAgIHMgPSBzZWxmLl9nZXRfc2l6ZSh0b2tlbkwpCiAgICAgICAgICAgIG9ial9yZWZzID0gc2VsZi5fcmVhZF9yZWZzKHMpCiAgICAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgICAgIHNlbGYuX29iamVjdHNbcmVmXSA9IHJlc3VsdAogICAgICAgICAgICByZXN1bHQuZXh0ZW5kKHNlbGYuX3JlYWRfb2JqZWN0KHgpIGZvciB4IGluIG9ial9yZWZzKQoKICAgICAgICAjIHRva2VuSCA9PSAweEIwIGlzIGRvY3VtZW50ZWQgYXMgJ29yZHNldCcsIGJ1dCBpcyBub3QgYWN0dWFsbHkKICAgICAgICAjIGltcGxlbWVudGVkIGluIHRoZSBBcHBsZSByZWZlcmVuY2UgY29kZS4KCiAgICAgICAgIyB0b2tlbkggPT0gMHhDMCBpcyBkb2N1bWVudGVkIGFzICdzZXQnLCBidXQgc2V0cyBjYW5ub3QgYmUgdXNlZCBpbgogICAgICAgICMgcGxpc3RzLgoKICAgICAgICBlbGlmIHRva2VuSCA9PSAweEQwOiAgIyBkaWN0CiAgICAgICAgICAgIHMgPSBzZWxmLl9nZXRfc2l6ZSh0b2tlbkwpCiAgICAgICAgICAgIGtleV9yZWZzID0gc2VsZi5fcmVhZF9yZWZzKHMpCiAgICAgICAgICAgIG9ial9yZWZzID0gc2VsZi5fcmVhZF9yZWZzKHMpCiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2RpY3RfdHlwZSgpCiAgICAgICAgICAgIHNlbGYuX29iamVjdHNbcmVmXSA9IHJlc3VsdAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmb3IgaywgbyBpbiB6aXAoa2V5X3JlZnMsIG9ial9yZWZzKToKICAgICAgICAgICAgICAgICAgICByZXN1bHRbc2VsZi5fcmVhZF9vYmplY3QoayldID0gc2VsZi5fcmVhZF9vYmplY3QobykKICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGaWxlRXhjZXB0aW9uKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBJbnZhbGlkRmlsZUV4Y2VwdGlvbigpCgogICAgICAgIHNlbGYuX29iamVjdHNbcmVmXSA9IHJlc3VsdAogICAgICAgIHJldHVybiByZXN1bHQKCmRlZiBfY291bnRfdG9fc2l6ZShjb3VudCk6CiAgICBpZiBjb3VudCA8IDEgPDwgODoKICAgICAgICByZXR1cm4gMQoKICAgIGVsaWYgY291bnQgPCAxIDw8IDE2OgogICAgICAgIHJldHVybiAyCgogICAgZWxpZiBjb3VudCA8IDEgPDwgMzI6CiAgICAgICAgcmV0dXJuIDQKCiAgICBlbHNlOgogICAgICAgIHJldHVybiA4Cgpfc2NhbGFycyA9IChzdHIsIGludCwgZmxvYXQsIGRhdGV0aW1lLmRhdGV0aW1lLCBieXRlcykKCmNsYXNzIF9CaW5hcnlQbGlzdFdyaXRlciAob2JqZWN0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCwgc29ydF9rZXlzLCBza2lwa2V5cyk6CiAgICAgICAgc2VsZi5fZnAgPSBmcAogICAgICAgIHNlbGYuX3NvcnRfa2V5cyA9IHNvcnRfa2V5cwogICAgICAgIHNlbGYuX3NraXBrZXlzID0gc2tpcGtleXMKCiAgICBkZWYgd3JpdGUoc2VsZiwgdmFsdWUpOgoKICAgICAgICAjIEZsYXR0ZW5lZCBvYmplY3QgbGlzdDoKICAgICAgICBzZWxmLl9vYmpsaXN0ID0gW10KCiAgICAgICAgIyBNYXBwaW5ncyBmcm9tIG9iamVjdC0+b2JqZWN0aWQKICAgICAgICAjIEZpcnN0IGRpY3QgaGFzICh0eXBlKG9iamVjdCksIG9iamVjdCkgYXMgdGhlIGtleSwKICAgICAgICAjIHNlY29uZCBkaWN0IGlzIHVzZWQgd2hlbiBvYmplY3QgaXMgbm90IGhhc2hhYmxlIGFuZAogICAgICAgICMgaGFzIGlkKG9iamVjdCkgYXMgdGhlIGtleS4KICAgICAgICBzZWxmLl9vYmp0YWJsZSA9IHt9CiAgICAgICAgc2VsZi5fb2JqaWR0YWJsZSA9IHt9CgogICAgICAgICMgQ3JlYXRlIGxpc3Qgb2YgYWxsIG9iamVjdHMgaW4gdGhlIHBsaXN0CiAgICAgICAgc2VsZi5fZmxhdHRlbih2YWx1ZSkKCiAgICAgICAgIyBTaXplIG9mIG9iamVjdCByZWZlcmVuY2VzIGluIHNlcmlhbGl6ZWQgY29udGFpbmVycwogICAgICAgICMgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIG9iamVjdHMgaW4gdGhlIHBsaXN0LgogICAgICAgIG51bV9vYmplY3RzID0gbGVuKHNlbGYuX29iamxpc3QpCiAgICAgICAgc2VsZi5fb2JqZWN0X29mZnNldHMgPSBbMF0qbnVtX29iamVjdHMKICAgICAgICBzZWxmLl9yZWZfc2l6ZSA9IF9jb3VudF90b19zaXplKG51bV9vYmplY3RzKQoKICAgICAgICBzZWxmLl9yZWZfZm9ybWF0ID0gX0JJTkFSWV9GT1JNQVRbc2VsZi5fcmVmX3NpemVdCgogICAgICAgICMgV3JpdGUgZmlsZSBoZWFkZXIKICAgICAgICBzZWxmLl9mcC53cml0ZShiJ2JwbGlzdDAwJykKCiAgICAgICAgIyBXcml0ZSBvYmplY3QgbGlzdAogICAgICAgIGZvciBvYmogaW4gc2VsZi5fb2JqbGlzdDoKICAgICAgICAgICAgc2VsZi5fd3JpdGVfb2JqZWN0KG9iaikKCiAgICAgICAgIyBXcml0ZSByZWZudW0tPm9iamVjdCBvZmZzZXQgdGFibGUKICAgICAgICB0b3Bfb2JqZWN0ID0gc2VsZi5fZ2V0cmVmbnVtKHZhbHVlKQogICAgICAgIG9mZnNldF90YWJsZV9vZmZzZXQgPSBzZWxmLl9mcC50ZWxsKCkKICAgICAgICBvZmZzZXRfc2l6ZSA9IF9jb3VudF90b19zaXplKG9mZnNldF90YWJsZV9vZmZzZXQpCiAgICAgICAgb2Zmc2V0X2Zvcm1hdCA9ICc+JyArIF9CSU5BUllfRk9STUFUW29mZnNldF9zaXplXSAqIG51bV9vYmplY3RzCiAgICAgICAgc2VsZi5fZnAud3JpdGUoc3RydWN0LnBhY2sob2Zmc2V0X2Zvcm1hdCwgKnNlbGYuX29iamVjdF9vZmZzZXRzKSkKCiAgICAgICAgIyBXcml0ZSB0cmFpbGVyCiAgICAgICAgc29ydF92ZXJzaW9uID0gMAogICAgICAgIHRyYWlsZXIgPSAoCiAgICAgICAgICAgIHNvcnRfdmVyc2lvbiwgb2Zmc2V0X3NpemUsIHNlbGYuX3JlZl9zaXplLCBudW1fb2JqZWN0cywKICAgICAgICAgICAgdG9wX29iamVjdCwgb2Zmc2V0X3RhYmxlX29mZnNldAogICAgICAgICkKICAgICAgICBzZWxmLl9mcC53cml0ZShzdHJ1Y3QucGFjaygnPjV4QkJCUVFRJywgKnRyYWlsZXIpKQoKICAgIGRlZiBfZmxhdHRlbihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIyBGaXJzdCBjaGVjayBpZiB0aGUgb2JqZWN0IGlzIGluIHRoZSBvYmplY3QgdGFibGUsIG5vdCB1c2VkIGZvcgogICAgICAgICMgY29udGFpbmVycyB0byBlbnN1cmUgdGhhdCB0d28gc3ViY29udGFpbmVycyB3aXRoIHRoZSBzYW1lIGNvbnRlbnRzCiAgICAgICAgIyB3aWxsIGJlIHNlcmlhbGl6ZWQgYXMgZGlzdGluY3QgdmFsdWVzLgogICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIF9zY2FsYXJzKToKICAgICAgICAgICAgaWYgKHR5cGUodmFsdWUpLCB2YWx1ZSkgaW4gc2VsZi5fb2JqdGFibGU6CiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgZWxpZiBpZCh2YWx1ZSkgaW4gc2VsZi5fb2JqaWR0YWJsZToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgQWRkIHRvIG9iamVjdHJlZmVyZW5jZSBtYXAKICAgICAgICByZWZudW0gPSBsZW4oc2VsZi5fb2JqbGlzdCkKICAgICAgICBzZWxmLl9vYmpsaXN0LmFwcGVuZCh2YWx1ZSkKICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBfc2NhbGFycyk6CiAgICAgICAgICAgIHNlbGYuX29ianRhYmxlWyh0eXBlKHZhbHVlKSwgdmFsdWUpXSA9IHJlZm51bQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX29iamlkdGFibGVbaWQodmFsdWUpXSA9IHJlZm51bQoKICAgICAgICAjIEFuZCBmaW5hbGx5IHJlY3Vyc2UgaW50byBjb250YWluZXJzCiAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6CiAgICAgICAgICAgIGtleXMgPSBbXQogICAgICAgICAgICB2YWx1ZXMgPSBbXQogICAgICAgICAgICBpdGVtcyA9IHZhbHVlLml0ZW1zKCkKICAgICAgICAgICAgaWYgc2VsZi5fc29ydF9rZXlzOgogICAgICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQoaXRlbXMpCgogICAgICAgICAgICBmb3IgaywgdiBpbiBpdGVtczoKICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGssIHN0cik6CiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2tpcGtleXM6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJrZXlzIG11c3QgYmUgc3RyaW5ncyIpCiAgICAgICAgICAgICAgICBrZXlzLmFwcGVuZChrKQogICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCh2KQoKICAgICAgICAgICAgZm9yIG8gaW4gaXRlcnRvb2xzLmNoYWluKGtleXMsIHZhbHVlcyk6CiAgICAgICAgICAgICAgICBzZWxmLl9mbGF0dGVuKG8pCgogICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGxpc3QsIHR1cGxlKSk6CiAgICAgICAgICAgIGZvciBvIGluIHZhbHVlOgogICAgICAgICAgICAgICAgc2VsZi5fZmxhdHRlbihvKQoKICAgIGRlZiBfZ2V0cmVmbnVtKHNlbGYsIHZhbHVlKToKICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBfc2NhbGFycyk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9vYmp0YWJsZVsodHlwZSh2YWx1ZSksIHZhbHVlKV0KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fb2JqaWR0YWJsZVtpZCh2YWx1ZSldCgogICAgZGVmIF93cml0ZV9zaXplKHNlbGYsIHRva2VuLCBzaXplKToKICAgICAgICBpZiBzaXplIDwgMTU6CiAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHN0cnVjdC5wYWNrKCc+QicsIHRva2VuIHwgc2l6ZSkpCgogICAgICAgIGVsaWYgc2l6ZSA8IDEgPDwgODoKICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc3RydWN0LnBhY2soJz5CQkInLCB0b2tlbiB8IDB4RiwgMHgxMCwgc2l6ZSkpCgogICAgICAgIGVsaWYgc2l6ZSA8IDEgPDwgMTY6CiAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHN0cnVjdC5wYWNrKCc+QkJIJywgdG9rZW4gfCAweEYsIDB4MTEsIHNpemUpKQoKICAgICAgICBlbGlmIHNpemUgPCAxIDw8IDMyOgogICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzdHJ1Y3QucGFjaygnPkJCTCcsIHRva2VuIHwgMHhGLCAweDEyLCBzaXplKSkKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc3RydWN0LnBhY2soJz5CQlEnLCB0b2tlbiB8IDB4RiwgMHgxMywgc2l6ZSkpCgogICAgZGVmIF93cml0ZV9vYmplY3Qoc2VsZiwgdmFsdWUpOgogICAgICAgIHJlZiA9IHNlbGYuX2dldHJlZm51bSh2YWx1ZSkKICAgICAgICBzZWxmLl9vYmplY3Rfb2Zmc2V0c1tyZWZdID0gc2VsZi5fZnAudGVsbCgpCiAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoYidceDAwJykKCiAgICAgICAgZWxpZiB2YWx1ZSBpcyBGYWxzZToKICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoYidceDA4JykKCiAgICAgICAgZWxpZiB2YWx1ZSBpcyBUcnVlOgogICAgICAgICAgICBzZWxmLl9mcC53cml0ZShiJ1x4MDknKQoKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CiAgICAgICAgICAgIGlmIHZhbHVlIDwgMDoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzdHJ1Y3QucGFjaygnPkJxJywgMHgxMywgdmFsdWUpKQogICAgICAgICAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKHZhbHVlKSBmcm9tIE5vbmUKICAgICAgICAgICAgZWxpZiB2YWx1ZSA8IDEgPDwgODoKICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHN0cnVjdC5wYWNrKCc+QkInLCAweDEwLCB2YWx1ZSkpCiAgICAgICAgICAgIGVsaWYgdmFsdWUgPCAxIDw8IDE2OgogICAgICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc3RydWN0LnBhY2soJz5CSCcsIDB4MTEsIHZhbHVlKSkKICAgICAgICAgICAgZWxpZiB2YWx1ZSA8IDEgPDwgMzI6CiAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzdHJ1Y3QucGFjaygnPkJMJywgMHgxMiwgdmFsdWUpKQogICAgICAgICAgICBlbGlmIHZhbHVlIDwgMSA8PCA2MzoKICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHN0cnVjdC5wYWNrKCc+QlEnLCAweDEzLCB2YWx1ZSkpCiAgICAgICAgICAgIGVsaWYgdmFsdWUgPCAxIDw8IDY0OgogICAgICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoYidceDE0JyArIHZhbHVlLnRvX2J5dGVzKDE2LCAnYmlnJywgc2lnbmVkPVRydWUpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcih2YWx1ZSkKCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBmbG9hdCk6CiAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHN0cnVjdC5wYWNrKCc+QmQnLCAweDIzLCB2YWx1ZSkpCgogICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGF0ZXRpbWUuZGF0ZXRpbWUpOgogICAgICAgICAgICBmID0gKHZhbHVlIC0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwMSwgMSwgMSkpLnRvdGFsX3NlY29uZHMoKQogICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzdHJ1Y3QucGFjaygnPkJkJywgMHgzMywgZikpCgogICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2l6ZSgweDQwLCBsZW4odmFsdWUpKQogICAgICAgICAgICBzZWxmLl9mcC53cml0ZSh2YWx1ZSkKCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0ID0gdmFsdWUuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zaXplKDB4NTAsIGxlbih2YWx1ZSkpCiAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICB0ID0gdmFsdWUuZW5jb2RlKCd1dGYtMTZiZScpCiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zaXplKDB4NjAsIGxlbih0KSAvLyAyKQoKICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUodCkKCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBVSUQpOgogICAgICAgICAgICBpZiB2YWx1ZS5kYXRhIDwgMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVJRHMgbXVzdCBiZSBwb3NpdGl2ZSIpCiAgICAgICAgICAgIGVsaWYgdmFsdWUuZGF0YSA8IDEgPDwgODoKICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHN0cnVjdC5wYWNrKCc+QkInLCAweDgwLCB2YWx1ZSkpCiAgICAgICAgICAgIGVsaWYgdmFsdWUuZGF0YSA8IDEgPDwgMTY6CiAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzdHJ1Y3QucGFjaygnPkJIJywgMHg4MSwgdmFsdWUpKQogICAgICAgICAgICBlbGlmIHZhbHVlLmRhdGEgPCAxIDw8IDMyOgogICAgICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc3RydWN0LnBhY2soJz5CTCcsIDB4ODMsIHZhbHVlKSkKICAgICAgICAgICAgZWxpZiB2YWx1ZS5kYXRhIDwgMSA8PCA2NDoKICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHN0cnVjdC5wYWNrKCc+QlEnLCAweDg3LCB2YWx1ZSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKHZhbHVlKQoKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIChsaXN0LCB0dXBsZSkpOgogICAgICAgICAgICByZWZzID0gW3NlbGYuX2dldHJlZm51bShvKSBmb3IgbyBpbiB2YWx1ZV0KICAgICAgICAgICAgcyA9IGxlbihyZWZzKQogICAgICAgICAgICBzZWxmLl93cml0ZV9zaXplKDB4QTAsIHMpCiAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHN0cnVjdC5wYWNrKCc+JyArIHNlbGYuX3JlZl9mb3JtYXQgKiBzLCAqcmVmcykpCgogICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6CiAgICAgICAgICAgIGtleVJlZnMsIHZhbFJlZnMgPSBbXSwgW10KCiAgICAgICAgICAgIGlmIHNlbGYuX3NvcnRfa2V5czoKICAgICAgICAgICAgICAgIHJvb3RJdGVtcyA9IHNvcnRlZCh2YWx1ZS5pdGVtcygpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcm9vdEl0ZW1zID0gdmFsdWUuaXRlbXMoKQoKICAgICAgICAgICAgZm9yIGssIHYgaW4gcm9vdEl0ZW1zOgogICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoaywgc3RyKToKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9za2lwa2V5czoKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKICAgICAgICAgICAgICAgIGtleVJlZnMuYXBwZW5kKHNlbGYuX2dldHJlZm51bShrKSkKICAgICAgICAgICAgICAgIHZhbFJlZnMuYXBwZW5kKHNlbGYuX2dldHJlZm51bSh2KSkKCiAgICAgICAgICAgIHMgPSBsZW4oa2V5UmVmcykKICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2l6ZSgweEQwLCBzKQogICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzdHJ1Y3QucGFjaygnPicgKyBzZWxmLl9yZWZfZm9ybWF0ICogcywgKmtleVJlZnMpKQogICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzdHJ1Y3QucGFjaygnPicgKyBzZWxmLl9yZWZfZm9ybWF0ICogcywgKnZhbFJlZnMpKQoKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IodmFsdWUpCgoKZGVmIF9pc19mbXRfYmluYXJ5KGhlYWRlcik6CiAgICByZXR1cm4gaGVhZGVyWzo4XSA9PSBiJ2JwbGlzdDAwJwoKCiMKIyBHZW5lcmljIGJpdHMKIwoKX0ZPUk1BVFM9ewogICAgRk1UX1hNTDogZGljdCgKICAgICAgICBkZXRlY3Q9X2lzX2ZtdF94bWwsCiAgICAgICAgcGFyc2VyPV9QbGlzdFBhcnNlciwKICAgICAgICB3cml0ZXI9X1BsaXN0V3JpdGVyLAogICAgKSwKICAgIEZNVF9CSU5BUlk6IGRpY3QoCiAgICAgICAgZGV0ZWN0PV9pc19mbXRfYmluYXJ5LAogICAgICAgIHBhcnNlcj1fQmluYXJ5UGxpc3RQYXJzZXIsCiAgICAgICAgd3JpdGVyPV9CaW5hcnlQbGlzdFdyaXRlciwKICAgICkKfQoKCmRlZiBsb2FkKGZwLCAqLCBmbXQ9Tm9uZSwgZGljdF90eXBlPWRpY3QpOgogICAgIiIiUmVhZCBhIC5wbGlzdCBmaWxlLiAnZnAnIHNob3VsZCBiZSBhIHJlYWRhYmxlIGFuZCBiaW5hcnkgZmlsZSBvYmplY3QuCiAgICBSZXR1cm4gdGhlIHVucGFja2VkIHJvb3Qgb2JqZWN0ICh3aGljaCB1c3VhbGx5IGlzIGEgZGljdGlvbmFyeSkuCiAgICAiIiIKICAgIGlmIGZtdCBpcyBOb25lOgogICAgICAgIGhlYWRlciA9IGZwLnJlYWQoMzIpCiAgICAgICAgZnAuc2VlaygwKQogICAgICAgIGZvciBpbmZvIGluIF9GT1JNQVRTLnZhbHVlcygpOgogICAgICAgICAgICBpZiBpbmZvWydkZXRlY3QnXShoZWFkZXIpOgogICAgICAgICAgICAgICAgUCA9IGluZm9bJ3BhcnNlciddCiAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBJbnZhbGlkRmlsZUV4Y2VwdGlvbigpCgogICAgZWxzZToKICAgICAgICBQID0gX0ZPUk1BVFNbZm10XVsncGFyc2VyJ10KCiAgICBwID0gUChkaWN0X3R5cGU9ZGljdF90eXBlKQogICAgcmV0dXJuIHAucGFyc2UoZnApCgoKZGVmIGxvYWRzKHZhbHVlLCAqLCBmbXQ9Tm9uZSwgZGljdF90eXBlPWRpY3QpOgogICAgIiIiUmVhZCBhIC5wbGlzdCBmaWxlIGZyb20gYSBieXRlcyBvYmplY3QuCiAgICBSZXR1cm4gdGhlIHVucGFja2VkIHJvb3Qgb2JqZWN0ICh3aGljaCB1c3VhbGx5IGlzIGEgZGljdGlvbmFyeSkuCiAgICAiIiIKICAgIGZwID0gQnl0ZXNJTyh2YWx1ZSkKICAgIHJldHVybiBsb2FkKGZwLCBmbXQ9Zm10LCBkaWN0X3R5cGU9ZGljdF90eXBlKQoKCmRlZiBkdW1wKHZhbHVlLCBmcCwgKiwgZm10PUZNVF9YTUwsIHNvcnRfa2V5cz1UcnVlLCBza2lwa2V5cz1GYWxzZSk6CiAgICAiIiJXcml0ZSAndmFsdWUnIHRvIGEgLnBsaXN0IGZpbGUuICdmcCcgc2hvdWxkIGJlIGEgd3JpdGFibGUsCiAgICBiaW5hcnkgZmlsZSBvYmplY3QuCiAgICAiIiIKICAgIGlmIGZtdCBub3QgaW4gX0ZPUk1BVFM6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5zdXBwb3J0ZWQgZm9ybWF0OiAlciIlKGZtdCwpKQoKICAgIHdyaXRlciA9IF9GT1JNQVRTW2ZtdF1bIndyaXRlciJdKGZwLCBzb3J0X2tleXM9c29ydF9rZXlzLCBza2lwa2V5cz1za2lwa2V5cykKICAgIHdyaXRlci53cml0ZSh2YWx1ZSkKCgpkZWYgZHVtcHModmFsdWUsICosIGZtdD1GTVRfWE1MLCBza2lwa2V5cz1GYWxzZSwgc29ydF9rZXlzPVRydWUpOgogICAgIiIiUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IHdpdGggdGhlIGNvbnRlbnRzIGZvciBhIC5wbGlzdCBmaWxlLgogICAgIiIiCiAgICBmcCA9IEJ5dGVzSU8oKQogICAgZHVtcCh2YWx1ZSwgZnAsIGZtdD1mbXQsIHNraXBrZXlzPXNraXBrZXlzLCBzb3J0X2tleXM9c29ydF9rZXlzKQogICAgcmV0dXJuIGZwLmdldHZhbHVlKCkKUEsDBBQAAAAAAAIgo1aQO3vNXjsAAF47AAAJAAAAcG9wbGliLnB5IiIiQSBQT1AzIGNsaWVudCBjbGFzcy4KCkJhc2VkIG9uIHRoZSBKLiBNeWVycyBQT1AzIGRyYWZ0LCBKYW4uIDk2CiIiIgoKIyBBdXRob3I6IERhdmlkIEFzY2hlciA8ZGF2aWRfYXNjaGVyQGJyb3duLmVkdT4KIyAgICAgICAgIFtoZWF2aWx5IHN0ZWFsaW5nIGZyb20gbm50cGxpYi5weV0KIyBVcGRhdGVkOiBQaWVycyBMYXVkZXIgPHBpZXJzQGNzLnN1Lm96LmF1PiBbSnVsICc5N10KIyBTdHJpbmcgbWV0aG9kIGNvbnZlcnNpb24gYW5kIHRlc3QgamlnIGltcHJvdmVtZW50cyBieSBFU1IsIEZlYnJ1YXJ5IDIwMDEuCiMgQWRkZWQgdGhlIFBPUDNfU1NMIGNsYXNzLiBNZXRob2RzIGxvb3NlbHkgYmFzZWQgb24gSU1BUF9TU0wuIEhlY3RvciBVcnR1YmlhIDx1cnR1YmlhQG1yYm9vay5vcmc+IEF1ZyAyMDAzCgojIEV4YW1wbGUgKHNlZSB0aGUgdGVzdCBmdW5jdGlvbiBhdCB0aGUgZW5kIG9mIHRoaXMgZmlsZSkKCiMgSW1wb3J0cwoKaW1wb3J0IGVycm5vCmltcG9ydCByZQppbXBvcnQgc29ja2V0CmltcG9ydCBzeXMKCnRyeToKICAgIGltcG9ydCBzc2wKICAgIEhBVkVfU1NMID0gVHJ1ZQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBIQVZFX1NTTCA9IEZhbHNlCgpfX2FsbF9fID0gWyJQT1AzIiwiZXJyb3JfcHJvdG8iXQoKIyBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYW4gZXJyb3Igb3IgaW52YWxpZCByZXNwb25zZSBpcyByZWNlaXZlZDoKCmNsYXNzIGVycm9yX3Byb3RvKEV4Y2VwdGlvbik6IHBhc3MKCiMgU3RhbmRhcmQgUG9ydApQT1AzX1BPUlQgPSAxMTAKCiMgUE9QIFNTTCBQT1JUClBPUDNfU1NMX1BPUlQgPSA5OTUKCiMgTGluZSB0ZXJtaW5hdG9ycyAod2UgYWx3YXlzIG91dHB1dCBDUkxGLCBidXQgYWNjZXB0IGFueSBvZiBDUkxGLCBMRkNSLCBMRikKQ1IgPSBiJ1xyJwpMRiA9IGInXG4nCkNSTEYgPSBDUitMRgoKIyBtYXhpbWFsIGxpbmUgbGVuZ3RoIHdoZW4gY2FsbGluZyByZWFkbGluZSgpLiBUaGlzIGlzIHRvIHByZXZlbnQKIyByZWFkaW5nIGFyYml0cmFyeSBsZW5ndGggbGluZXMuIFJGQyAxOTM5IGxpbWl0cyBQT1AzIGxpbmUgbGVuZ3RoIHRvCiMgNTEyIGNoYXJhY3RlcnMsIGluY2x1ZGluZyBDUkxGLiBXZSBoYXZlIHNlbGVjdGVkIDIwNDgganVzdCB0byBiZSBvbgojIHRoZSBzYWZlIHNpZGUuCl9NQVhMSU5FID0gMjA0OAoKCmNsYXNzIFBPUDM6CgogICAgIiIiVGhpcyBjbGFzcyBzdXBwb3J0cyBib3RoIHRoZSBtaW5pbWFsIGFuZCBvcHRpb25hbCBjb21tYW5kIHNldHMuCiAgICBBcmd1bWVudHMgY2FuIGJlIHN0cmluZ3Mgb3IgaW50ZWdlcnMgKHdoZXJlIGFwcHJvcHJpYXRlKQogICAgKGUuZy46IHJldHIoMSkgYW5kIHJldHIoJzEnKSBib3RoIHdvcmsgZXF1YWxseSB3ZWxsLgoKICAgIE1pbmltYWwgQ29tbWFuZCBTZXQ6CiAgICAgICAgICAgIFVTRVIgbmFtZSAgICAgICAgICAgICAgIHVzZXIobmFtZSkKICAgICAgICAgICAgUEFTUyBzdHJpbmcgICAgICAgICAgICAgcGFzc18oc3RyaW5nKQogICAgICAgICAgICBTVEFUICAgICAgICAgICAgICAgICAgICBzdGF0KCkKICAgICAgICAgICAgTElTVCBbbXNnXSAgICAgICAgICAgICAgbGlzdChtc2cgPSBOb25lKQogICAgICAgICAgICBSRVRSIG1zZyAgICAgICAgICAgICAgICByZXRyKG1zZykKICAgICAgICAgICAgREVMRSBtc2cgICAgICAgICAgICAgICAgZGVsZShtc2cpCiAgICAgICAgICAgIE5PT1AgICAgICAgICAgICAgICAgICAgIG5vb3AoKQogICAgICAgICAgICBSU0VUICAgICAgICAgICAgICAgICAgICByc2V0KCkKICAgICAgICAgICAgUVVJVCAgICAgICAgICAgICAgICAgICAgcXVpdCgpCgogICAgT3B0aW9uYWwgQ29tbWFuZHMgKHNvbWUgc2VydmVycyBzdXBwb3J0IHRoZXNlKToKICAgICAgICAgICAgUlBPUCBuYW1lICAgICAgICAgICAgICAgcnBvcChuYW1lKQogICAgICAgICAgICBBUE9QIG5hbWUgZGlnZXN0ICAgICAgICBhcG9wKG5hbWUsIGRpZ2VzdCkKICAgICAgICAgICAgVE9QIG1zZyBuICAgICAgICAgICAgICAgdG9wKG1zZywgbikKICAgICAgICAgICAgVUlETCBbbXNnXSAgICAgICAgICAgICAgdWlkbChtc2cgPSBOb25lKQogICAgICAgICAgICBDQVBBICAgICAgICAgICAgICAgICAgICBjYXBhKCkKICAgICAgICAgICAgU1RMUyAgICAgICAgICAgICAgICAgICAgc3RscygpCiAgICAgICAgICAgIFVURjggICAgICAgICAgICAgICAgICAgIHV0ZjgoKQoKICAgIFJhaXNlcyBvbmUgZXhjZXB0aW9uOiAnZXJyb3JfcHJvdG8nLgoKICAgIEluc3RhbnRpYXRlIHdpdGg6CiAgICAgICAgICAgIFBPUDMoaG9zdG5hbWUsIHBvcnQ9MTEwKQoKICAgIE5COiAgICAgdGhlIFBPUCBwcm90b2NvbCBsb2NrcyB0aGUgbWFpbGJveCBmcm9tIHVzZXIKICAgICAgICAgICAgYXV0aG9yaXphdGlvbiB1bnRpbCBRVUlULCBzbyBiZSBzdXJlIHRvIGdldCBpbiwgc3VjawogICAgICAgICAgICB0aGUgbWVzc2FnZXMsIGFuZCBxdWl0LCBlYWNoIHRpbWUgeW91IGFjY2VzcyB0aGUKICAgICAgICAgICAgbWFpbGJveC4KCiAgICAgICAgICAgIFBPUCBpcyBhIGxpbmUtYmFzZWQgcHJvdG9jb2wsIHdoaWNoIG1lYW5zIGxhcmdlIG1haWwKICAgICAgICAgICAgbWVzc2FnZXMgY29uc3VtZSBsb3RzIG9mIHB5dGhvbiBjeWNsZXMgcmVhZGluZyB0aGVtCiAgICAgICAgICAgIGxpbmUtYnktbGluZS4KCiAgICAgICAgICAgIElmIGl0J3MgYXZhaWxhYmxlIG9uIHlvdXIgbWFpbCBzZXJ2ZXIsIHVzZSBJTUFQNAogICAgICAgICAgICBpbnN0ZWFkLCBpdCBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoZSB0d28gcHJvYmxlbXMKICAgICAgICAgICAgYWJvdmUuCiAgICAiIiIKCiAgICBlbmNvZGluZyA9ICdVVEYtOCcKCiAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydD1QT1AzX1BPUlQsCiAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgogICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgc2VsZi5fdGxzX2VzdGFibGlzaGVkID0gRmFsc2UKICAgICAgICBzeXMuYXVkaXQoInBvcGxpYi5jb25uZWN0Iiwgc2VsZiwgaG9zdCwgcG9ydCkKICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLl9jcmVhdGVfc29ja2V0KHRpbWVvdXQpCiAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrLm1ha2VmaWxlKCdyYicpCiAgICAgICAgc2VsZi5fZGVidWdnaW5nID0gMAogICAgICAgIHNlbGYud2VsY29tZSA9IHNlbGYuX2dldHJlc3AoKQoKICAgIGRlZiBfY3JlYXRlX3NvY2tldChzZWxmLCB0aW1lb3V0KToKICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCBub3QgdGltZW91dDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm9uLWJsb2NraW5nIHNvY2tldCAodGltZW91dD0wKSBpcyBub3Qgc3VwcG9ydGVkJykKICAgICAgICByZXR1cm4gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChzZWxmLmhvc3QsIHNlbGYucG9ydCksIHRpbWVvdXQpCgogICAgZGVmIF9wdXRsaW5lKHNlbGYsIGxpbmUpOgogICAgICAgIGlmIHNlbGYuX2RlYnVnZ2luZyA+IDE6IHByaW50KCcqcHV0KicsIHJlcHIobGluZSkpCiAgICAgICAgc3lzLmF1ZGl0KCJwb3BsaWIucHV0bGluZSIsIHNlbGYsIGxpbmUpCiAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwobGluZSArIENSTEYpCgoKICAgICMgSW50ZXJuYWw6IHNlbmQgb25lIGNvbW1hbmQgdG8gdGhlIHNlcnZlciAodGhyb3VnaCBfcHV0bGluZSgpKQoKICAgIGRlZiBfcHV0Y21kKHNlbGYsIGxpbmUpOgogICAgICAgIGlmIHNlbGYuX2RlYnVnZ2luZzogcHJpbnQoJypjbWQqJywgcmVwcihsaW5lKSkKICAgICAgICBsaW5lID0gYnl0ZXMobGluZSwgc2VsZi5lbmNvZGluZykKICAgICAgICBzZWxmLl9wdXRsaW5lKGxpbmUpCgoKICAgICMgSW50ZXJuYWw6IHJldHVybiBvbmUgbGluZSBmcm9tIHRoZSBzZXJ2ZXIsIHN0cmlwcGluZyBDUkxGLgogICAgIyBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgQ1BVIHRpbWUgb2YgdGhpcyBtb2R1bGUgaXMgY29uc3VtZWQuCiAgICAjIFJhaXNlIGVycm9yX3Byb3RvKCctRVJSIEVPRicpIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZC4KCiAgICBkZWYgX2dldGxpbmUoc2VsZik6CiAgICAgICAgbGluZSA9IHNlbGYuZmlsZS5yZWFkbGluZShfTUFYTElORSArIDEpCiAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CiAgICAgICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKCdsaW5lIHRvbyBsb25nJykKCiAgICAgICAgaWYgc2VsZi5fZGVidWdnaW5nID4gMTogcHJpbnQoJypnZXQqJywgcmVwcihsaW5lKSkKICAgICAgICBpZiBub3QgbGluZTogcmFpc2UgZXJyb3JfcHJvdG8oJy1FUlIgRU9GJykKICAgICAgICBvY3RldHMgPSBsZW4obGluZSkKICAgICAgICAjIHNlcnZlciBjYW4gc2VuZCBhbnkgY29tYmluYXRpb24gb2YgQ1IgJiBMRgogICAgICAgICMgaG93ZXZlciwgJ3JlYWRsaW5lKCknIHJldHVybnMgbGluZXMgZW5kaW5nIGluIExGCiAgICAgICAgIyBzbyBvbmx5IHBvc3NpYmlsaXRpZXMgYXJlIC4uLkxGLCAuLi5DUkxGLCBDUi4uLkxGCiAgICAgICAgaWYgbGluZVstMjpdID09IENSTEY6CiAgICAgICAgICAgIHJldHVybiBsaW5lWzotMl0sIG9jdGV0cwogICAgICAgIGlmIGxpbmVbOjFdID09IENSOgogICAgICAgICAgICByZXR1cm4gbGluZVsxOi0xXSwgb2N0ZXRzCiAgICAgICAgcmV0dXJuIGxpbmVbOi0xXSwgb2N0ZXRzCgoKICAgICMgSW50ZXJuYWw6IGdldCBhIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KICAgICMgUmFpc2UgJ2Vycm9yX3Byb3RvJyBpZiB0aGUgcmVzcG9uc2UgZG9lc24ndCBzdGFydCB3aXRoICcrJy4KCiAgICBkZWYgX2dldHJlc3Aoc2VsZik6CiAgICAgICAgcmVzcCwgbyA9IHNlbGYuX2dldGxpbmUoKQogICAgICAgIGlmIHNlbGYuX2RlYnVnZ2luZyA+IDE6IHByaW50KCcqcmVzcConLCByZXByKHJlc3ApKQogICAgICAgIGlmIG5vdCByZXNwLnN0YXJ0c3dpdGgoYicrJyk6CiAgICAgICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKHJlc3ApCiAgICAgICAgcmV0dXJuIHJlc3AKCgogICAgIyBJbnRlcm5hbDogZ2V0IGEgcmVzcG9uc2UgcGx1cyBmb2xsb3dpbmcgdGV4dCBmcm9tIHRoZSBzZXJ2ZXIuCgogICAgZGVmIF9nZXRsb25ncmVzcChzZWxmKToKICAgICAgICByZXNwID0gc2VsZi5fZ2V0cmVzcCgpCiAgICAgICAgbGlzdCA9IFtdOyBvY3RldHMgPSAwCiAgICAgICAgbGluZSwgbyA9IHNlbGYuX2dldGxpbmUoKQogICAgICAgIHdoaWxlIGxpbmUgIT0gYicuJzoKICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKGInLi4nKToKICAgICAgICAgICAgICAgIG8gPSBvLTEKICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzE6XQogICAgICAgICAgICBvY3RldHMgPSBvY3RldHMgKyBvCiAgICAgICAgICAgIGxpc3QuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgIGxpbmUsIG8gPSBzZWxmLl9nZXRsaW5lKCkKICAgICAgICByZXR1cm4gcmVzcCwgbGlzdCwgb2N0ZXRzCgoKICAgICMgSW50ZXJuYWw6IHNlbmQgYSBjb21tYW5kIGFuZCBnZXQgdGhlIHJlc3BvbnNlCgogICAgZGVmIF9zaG9ydGNtZChzZWxmLCBsaW5lKToKICAgICAgICBzZWxmLl9wdXRjbWQobGluZSkKICAgICAgICByZXR1cm4gc2VsZi5fZ2V0cmVzcCgpCgoKICAgICMgSW50ZXJuYWw6IHNlbmQgYSBjb21tYW5kIGFuZCBnZXQgdGhlIHJlc3BvbnNlIHBsdXMgZm9sbG93aW5nIHRleHQKCiAgICBkZWYgX2xvbmdjbWQoc2VsZiwgbGluZSk6CiAgICAgICAgc2VsZi5fcHV0Y21kKGxpbmUpCiAgICAgICAgcmV0dXJuIHNlbGYuX2dldGxvbmdyZXNwKCkKCgogICAgIyBUaGVzZSBjYW4gYmUgdXNlZnVsOgoKICAgIGRlZiBnZXR3ZWxjb21lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLndlbGNvbWUKCgogICAgZGVmIHNldF9kZWJ1Z2xldmVsKHNlbGYsIGxldmVsKToKICAgICAgICBzZWxmLl9kZWJ1Z2dpbmcgPSBsZXZlbAoKCiAgICAjIEhlcmUgYXJlIGFsbCB0aGUgUE9QIGNvbW1hbmRzOgoKICAgIGRlZiB1c2VyKHNlbGYsIHVzZXIpOgogICAgICAgICIiIlNlbmQgdXNlciBuYW1lLCByZXR1cm4gcmVzcG9uc2UKCiAgICAgICAgKHNob3VsZCBpbmRpY2F0ZSBwYXNzd29yZCByZXF1aXJlZCkuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0Y21kKCdVU0VSICVzJyAlIHVzZXIpCgoKICAgIGRlZiBwYXNzXyhzZWxmLCBwc3dkKToKICAgICAgICAiIiJTZW5kIHBhc3N3b3JkLCByZXR1cm4gcmVzcG9uc2UKCiAgICAgICAgKHJlc3BvbnNlIGluY2x1ZGVzIG1lc3NhZ2UgY291bnQsIG1haWxib3ggc2l6ZSkuCgogICAgICAgIE5COiBtYWlsYm94IGlzIGxvY2tlZCBieSBzZXJ2ZXIgZnJvbSBoZXJlIHRvICdxdWl0KCknCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0Y21kKCdQQVNTICVzJyAlIHBzd2QpCgoKICAgIGRlZiBzdGF0KHNlbGYpOgogICAgICAgICIiIkdldCBtYWlsYm94IHN0YXR1cy4KCiAgICAgICAgUmVzdWx0IGlzIHR1cGxlIG9mIDIgaW50cyAobWVzc2FnZSBjb3VudCwgbWFpbGJveCBzaXplKQogICAgICAgICIiIgogICAgICAgIHJldHZhbCA9IHNlbGYuX3Nob3J0Y21kKCdTVEFUJykKICAgICAgICByZXRzID0gcmV0dmFsLnNwbGl0KCkKICAgICAgICBpZiBzZWxmLl9kZWJ1Z2dpbmc6IHByaW50KCcqc3RhdConLCByZXByKHJldHMpKQogICAgICAgIG51bU1lc3NhZ2VzID0gaW50KHJldHNbMV0pCiAgICAgICAgc2l6ZU1lc3NhZ2VzID0gaW50KHJldHNbMl0pCiAgICAgICAgcmV0dXJuIChudW1NZXNzYWdlcywgc2l6ZU1lc3NhZ2VzKQoKCiAgICBkZWYgbGlzdChzZWxmLCB3aGljaD1Ob25lKToKICAgICAgICAiIiJSZXF1ZXN0IGxpc3RpbmcsIHJldHVybiByZXN1bHQuCgogICAgICAgIFJlc3VsdCB3aXRob3V0IGEgbWVzc2FnZSBudW1iZXIgYXJndW1lbnQgaXMgaW4gZm9ybQogICAgICAgIFsncmVzcG9uc2UnLCBbJ21lc2dfbnVtIG9jdGV0cycsIC4uLl0sIG9jdGV0c10uCgogICAgICAgIFJlc3VsdCB3aGVuIGEgbWVzc2FnZSBudW1iZXIgYXJndW1lbnQgaXMgZ2l2ZW4gaXMgYQogICAgICAgIHNpbmdsZSByZXNwb25zZTogdGhlICJzY2FuIGxpc3RpbmciIGZvciB0aGF0IG1lc3NhZ2UuCiAgICAgICAgIiIiCiAgICAgICAgaWYgd2hpY2ggaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9zaG9ydGNtZCgnTElTVCAlcycgJSB3aGljaCkKICAgICAgICByZXR1cm4gc2VsZi5fbG9uZ2NtZCgnTElTVCcpCgoKICAgIGRlZiByZXRyKHNlbGYsIHdoaWNoKToKICAgICAgICAiIiJSZXRyaWV2ZSB3aG9sZSBtZXNzYWdlIG51bWJlciAnd2hpY2gnLgoKICAgICAgICBSZXN1bHQgaXMgaW4gZm9ybSBbJ3Jlc3BvbnNlJywgWydsaW5lJywgLi4uXSwgb2N0ZXRzXS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fbG9uZ2NtZCgnUkVUUiAlcycgJSB3aGljaCkKCgogICAgZGVmIGRlbGUoc2VsZiwgd2hpY2gpOgogICAgICAgICIiIkRlbGV0ZSBtZXNzYWdlIG51bWJlciAnd2hpY2gnLgoKICAgICAgICBSZXN1bHQgaXMgJ3Jlc3BvbnNlJy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ0RFTEUgJXMnICUgd2hpY2gpCgoKICAgIGRlZiBub29wKHNlbGYpOgogICAgICAgICIiIkRvZXMgbm90aGluZy4KCiAgICAgICAgT25lIHN1cHBvc2VzIHRoZSByZXNwb25zZSBpbmRpY2F0ZXMgdGhlIHNlcnZlciBpcyBhbGl2ZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ05PT1AnKQoKCiAgICBkZWYgcnNldChzZWxmKToKICAgICAgICAiIiJVbm1hcmsgYWxsIG1lc3NhZ2VzIG1hcmtlZCBmb3IgZGVsZXRpb24uIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0Y21kKCdSU0VUJykKCgogICAgZGVmIHF1aXQoc2VsZik6CiAgICAgICAgIiIiU2lnbm9mZjogY29tbWl0IGNoYW5nZXMgb24gc2VydmVyLCB1bmxvY2sgbWFpbGJveCwgY2xvc2UgY29ubmVjdGlvbi4iIiIKICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1FVSVQnKQogICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgIHJldHVybiByZXNwCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgYXNzdW1pbmcgYW55dGhpbmcgYWJvdXQgaXQuIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWxlID0gc2VsZi5maWxlCiAgICAgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNvY2sgPSBzZWxmLnNvY2sKICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNvY2suc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAgICAjIFRoZSBzZXJ2ZXIgbWlnaHQgYWxyZWFkeSBoYXZlIGNsb3NlZCB0aGUgY29ubmVjdGlvbi4KICAgICAgICAgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIHRoaXMgbWF5IHJlc3VsdCBpbiBXU0FFSU5WQUwgKGVycm9yIDEwMDIyKToKICAgICAgICAgICAgICAgICAgICAjIEFuIGludmFsaWQgb3BlcmF0aW9uIHdhcyBhdHRlbXB0ZWQuCiAgICAgICAgICAgICAgICAgICAgaWYgKGV4Yy5lcnJubyAhPSBlcnJuby5FTk9UQ09OTgogICAgICAgICAgICAgICAgICAgICAgIGFuZCBnZXRhdHRyKGV4YywgJ3dpbmVycm9yJywgMCkgIT0gMTAwMjIpOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKCiAgICAjX19kZWxfXyA9IHF1aXQKCgogICAgIyBvcHRpb25hbCBjb21tYW5kczoKCiAgICBkZWYgcnBvcChzZWxmLCB1c2VyKToKICAgICAgICAiIiJOb3Qgc3VyZSB3aGF0IHRoaXMgZG9lcy4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ1JQT1AgJXMnICUgdXNlcikKCgogICAgdGltZXN0YW1wID0gcmUuY29tcGlsZShicidcK09LLltePF0qKDwuKj4pJykKCiAgICBkZWYgYXBvcChzZWxmLCB1c2VyLCBwYXNzd29yZCk6CiAgICAgICAgIiIiQXV0aG9yaXNhdGlvbgoKICAgICAgICAtIG9ubHkgcG9zc2libGUgaWYgc2VydmVyIGhhcyBzdXBwbGllZCBhIHRpbWVzdGFtcCBpbiBpbml0aWFsIGdyZWV0aW5nLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICAgICAgdXNlciAgICAgLSBtYWlsYm94IHVzZXI7CiAgICAgICAgICAgICAgICBwYXNzd29yZCAtIG1haWxib3ggcGFzc3dvcmQuCgogICAgICAgIE5COiBtYWlsYm94IGlzIGxvY2tlZCBieSBzZXJ2ZXIgZnJvbSBoZXJlIHRvICdxdWl0KCknCiAgICAgICAgIiIiCiAgICAgICAgc2VjcmV0ID0gYnl0ZXMocGFzc3dvcmQsIHNlbGYuZW5jb2RpbmcpCiAgICAgICAgbSA9IHNlbGYudGltZXN0YW1wLm1hdGNoKHNlbGYud2VsY29tZSkKICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgcmFpc2UgZXJyb3JfcHJvdG8oJy1FUlIgQVBPUCBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlcicpCiAgICAgICAgaW1wb3J0IGhhc2hsaWIKICAgICAgICBkaWdlc3QgPSBtLmdyb3VwKDEpK3NlY3JldAogICAgICAgIGRpZ2VzdCA9IGhhc2hsaWIubWQ1KGRpZ2VzdCkuaGV4ZGlnZXN0KCkKICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ0FQT1AgJXMgJXMnICUgKHVzZXIsIGRpZ2VzdCkpCgoKICAgIGRlZiB0b3Aoc2VsZiwgd2hpY2gsIGhvd211Y2gpOgogICAgICAgICIiIlJldHJpZXZlIG1lc3NhZ2UgaGVhZGVyIG9mIG1lc3NhZ2UgbnVtYmVyICd3aGljaCcKICAgICAgICBhbmQgZmlyc3QgJ2hvd211Y2gnIGxpbmVzIG9mIG1lc3NhZ2UgYm9keS4KCiAgICAgICAgUmVzdWx0IGlzIGluIGZvcm0gWydyZXNwb25zZScsIFsnbGluZScsIC4uLl0sIG9jdGV0c10uCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2xvbmdjbWQoJ1RPUCAlcyAlcycgJSAod2hpY2gsIGhvd211Y2gpKQoKCiAgICBkZWYgdWlkbChzZWxmLCB3aGljaD1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gbWVzc2FnZSBkaWdlc3QgKHVuaXF1ZSBpZCkgbGlzdC4KCiAgICAgICAgSWYgJ3doaWNoJywgcmVzdWx0IGNvbnRhaW5zIHVuaXF1ZSBpZCBmb3IgdGhhdCBtZXNzYWdlCiAgICAgICAgaW4gdGhlIGZvcm0gJ3Jlc3BvbnNlIG1lc2dudW0gdWlkJywgb3RoZXJ3aXNlIHJlc3VsdCBpcwogICAgICAgIHRoZSBsaXN0IFsncmVzcG9uc2UnLCBbJ21lc2dudW0gdWlkJywgLi4uXSwgb2N0ZXRzXQogICAgICAgICIiIgogICAgICAgIGlmIHdoaWNoIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ1VJREwgJXMnICUgd2hpY2gpCiAgICAgICAgcmV0dXJuIHNlbGYuX2xvbmdjbWQoJ1VJREwnKQoKCiAgICBkZWYgdXRmOChzZWxmKToKICAgICAgICAiIiJUcnkgdG8gZW50ZXIgVVRGLTggbW9kZSAoc2VlIFJGQyA2ODU2KS4gUmV0dXJucyBzZXJ2ZXIgcmVzcG9uc2UuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0Y21kKCdVVEY4JykKCgogICAgZGVmIGNhcGEoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHNlcnZlciBjYXBhYmlsaXRpZXMgKFJGQyAyNDQ5KSBhcyBhIGRpY3Rpb25hcnkKICAgICAgICA+Pj4gYz1wb3BsaWIuUE9QMygnbG9jYWxob3N0JykKICAgICAgICA+Pj4gYy5jYXBhKCkKICAgICAgICB7J0lNUExFTUVOVEFUSU9OJzogWydDeXJ1cycsICdQT1AzJywgJ3NlcnZlcicsICd2Mi4yLjEyJ10sCiAgICAgICAgICdUT1AnOiBbXSwgJ0xPR0lOLURFTEFZJzogWycwJ10sICdBVVRILVJFU1AtQ09ERSc6IFtdLAogICAgICAgICAnRVhQSVJFJzogWydORVZFUiddLCAnVVNFUic6IFtdLCAnU1RMUyc6IFtdLCAnUElQRUxJTklORyc6IFtdLAogICAgICAgICAnVUlETCc6IFtdLCAnUkVTUC1DT0RFUyc6IFtdfQogICAgICAgID4+PgoKICAgICAgICBSZWFsbHksIGFjY29yZGluZyB0byBSRkMgMjQ0OSwgdGhlIGN5cnVzIGZvbGtzIHNob3VsZCBhdm9pZAogICAgICAgIGhhdmluZyB0aGUgaW1wbGVtZW50YXRpb24gc3BsaXQgaW50byBtdWx0aXBsZSBhcmd1bWVudHMuLi4KICAgICAgICAiIiIKICAgICAgICBkZWYgX3BhcnNlY2FwKGxpbmUpOgogICAgICAgICAgICBsc3QgPSBsaW5lLmRlY29kZSgnYXNjaWknKS5zcGxpdCgpCiAgICAgICAgICAgIHJldHVybiBsc3RbMF0sIGxzdFsxOl0KCiAgICAgICAgY2FwcyA9IHt9CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXNwID0gc2VsZi5fbG9uZ2NtZCgnQ0FQQScpCiAgICAgICAgICAgIHJhd2NhcHMgPSByZXNwWzFdCiAgICAgICAgICAgIGZvciBjYXBsaW5lIGluIHJhd2NhcHM6CiAgICAgICAgICAgICAgICBjYXBubSwgY2FwYXJncyA9IF9wYXJzZWNhcChjYXBsaW5lKQogICAgICAgICAgICAgICAgY2Fwc1tjYXBubV0gPSBjYXBhcmdzCiAgICAgICAgZXhjZXB0IGVycm9yX3Byb3RvOgogICAgICAgICAgICByYWlzZSBlcnJvcl9wcm90bygnLUVSUiBDQVBBIG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyJykKICAgICAgICByZXR1cm4gY2FwcwoKCiAgICBkZWYgc3RscyhzZWxmLCBjb250ZXh0PU5vbmUpOgogICAgICAgICIiIlN0YXJ0IGEgVExTIHNlc3Npb24gb24gdGhlIGFjdGl2ZSBjb25uZWN0aW9uIGFzIHNwZWNpZmllZCBpbiBSRkMgMjU5NS4KCiAgICAgICAgICAgICAgICBjb250ZXh0IC0gYSBzc2wuU1NMQ29udGV4dAogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBIQVZFX1NTTDoKICAgICAgICAgICAgcmFpc2UgZXJyb3JfcHJvdG8oJy1FUlIgVExTIHN1cHBvcnQgbWlzc2luZycpCiAgICAgICAgaWYgc2VsZi5fdGxzX2VzdGFibGlzaGVkOgogICAgICAgICAgICByYWlzZSBlcnJvcl9wcm90bygnLUVSUiBUTFMgc2Vzc2lvbiBhbHJlYWR5IGVzdGFibGlzaGVkJykKICAgICAgICBjYXBzID0gc2VsZi5jYXBhKCkKICAgICAgICBpZiBub3QgJ1NUTFMnIGluIGNhcHM6CiAgICAgICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKCctRVJSIFNUTFMgbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXInKQogICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgY29udGV4dCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KCkKICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1NUTFMnKQogICAgICAgIHNlbGYuc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlbGYuaG9zdCkKICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUoJ3JiJykKICAgICAgICBzZWxmLl90bHNfZXN0YWJsaXNoZWQgPSBUcnVlCiAgICAgICAgcmV0dXJuIHJlc3AKCgppZiBIQVZFX1NTTDoKCiAgICBjbGFzcyBQT1AzX1NTTChQT1AzKToKICAgICAgICAiIiJQT1AzIGNsaWVudCBjbGFzcyBvdmVyIFNTTCBjb25uZWN0aW9uCgogICAgICAgIEluc3RhbnRpYXRlIHdpdGg6IFBPUDNfU1NMKGhvc3RuYW1lLCBwb3J0PTk5NSwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Tm9uZSkKCiAgICAgICAgICAgICAgIGhvc3RuYW1lIC0gdGhlIGhvc3RuYW1lIG9mIHRoZSBwb3AzIG92ZXIgc3NsIHNlcnZlcgogICAgICAgICAgICAgICBwb3J0IC0gcG9ydCBudW1iZXIKICAgICAgICAgICAgICAga2V5ZmlsZSAtIFBFTSBmb3JtYXR0ZWQgZmlsZSB0aGF0IGNvbnRhaW5zIHlvdXIgcHJpdmF0ZSBrZXkKICAgICAgICAgICAgICAgY2VydGZpbGUgLSBQRU0gZm9ybWF0dGVkIGNlcnRpZmljYXRlIGNoYWluIGZpbGUKICAgICAgICAgICAgICAgY29udGV4dCAtIGEgc3NsLlNTTENvbnRleHQKCiAgICAgICAgU2VlIHRoZSBtZXRob2RzIG9mIHRoZSBwYXJlbnQgY2xhc3MgUE9QMyBmb3IgbW9yZSBkb2N1bWVudGF0aW9uLgogICAgICAgICIiIgoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydD1QT1AzX1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULCBjb250ZXh0PU5vbmUpOgogICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCiAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQogICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSkKICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICBQT1AzLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIHRpbWVvdXQpCgogICAgICAgIGRlZiBfY3JlYXRlX3NvY2tldChzZWxmLCB0aW1lb3V0KToKICAgICAgICAgICAgc29jayA9IFBPUDMuX2NyZWF0ZV9zb2NrZXQoc2VsZiwgdGltZW91dCkKICAgICAgICAgICAgc29jayA9IHNlbGYuY29udGV4dC53cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZWxmLmhvc3QpCiAgICAgICAgICAgIHJldHVybiBzb2NrCgogICAgICAgIGRlZiBzdGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgICAgIiIiVGhlIG1ldGhvZCB1bmNvbmRpdGlvbmFsbHkgcmFpc2VzIGFuIGV4Y2VwdGlvbiBzaW5jZSB0aGUKICAgICAgICAgICAgU1RMUyBjb21tYW5kIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2Ugb24gYW4gYWxyZWFkeSBlc3RhYmxpc2hlZAogICAgICAgICAgICBTU0wvVExTIHNlc3Npb24uCiAgICAgICAgICAgICIiIgogICAgICAgICAgICByYWlzZSBlcnJvcl9wcm90bygnLUVSUiBUTFMgc2Vzc2lvbiBhbHJlYWR5IGVzdGFibGlzaGVkJykKCiAgICBfX2FsbF9fLmFwcGVuZCgiUE9QM19TU0wiKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIGltcG9ydCBzeXMKICAgIGEgPSBQT1AzKHN5cy5hcmd2WzFdKQogICAgcHJpbnQoYS5nZXR3ZWxjb21lKCkpCiAgICBhLnVzZXIoc3lzLmFyZ3ZbMl0pCiAgICBhLnBhc3NfKHN5cy5hcmd2WzNdKQogICAgYS5saXN0KCkKICAgIChudW1Nc2dzLCB0b3RhbFNpemUpID0gYS5zdGF0KCkKICAgIGZvciBpIGluIHJhbmdlKDEsIG51bU1zZ3MgKyAxKToKICAgICAgICAoaGVhZGVyLCBtc2csIG9jdGV0cykgPSBhLnJldHIoaSkKICAgICAgICBwcmludCgiTWVzc2FnZSAlZDoiICUgaSkKICAgICAgICBmb3IgbGluZSBpbiBtc2c6CiAgICAgICAgICAgIHByaW50KCcgICAnICsgbGluZSkKICAgICAgICBwcmludCgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQogICAgYS5xdWl0KCkKUEsDBBQAAAAAAAIgo1ZohgcLdUIAAHVCAAAMAAAAcG9zaXhwYXRoLnB5IiIiQ29tbW9uIG9wZXJhdGlvbnMgb24gUG9zaXggcGF0aG5hbWVzLgoKSW5zdGVhZCBvZiBpbXBvcnRpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHksIGltcG9ydCBvcyBhbmQgcmVmZXIgdG8KdGhpcyBtb2R1bGUgYXMgb3MucGF0aC4gIFRoZSAib3MucGF0aCIgbmFtZSBpcyBhbiBhbGlhcyBmb3IgdGhpcwptb2R1bGUgb24gUG9zaXggc3lzdGVtczsgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dzKSwKb3MucGF0aCBwcm92aWRlcyB0aGUgc2FtZSBvcGVyYXRpb25zIGluIGEgbWFubmVyIHNwZWNpZmljIHRvIHRoYXQKcGxhdGZvcm0sIGFuZCBpcyBhbiBhbGlhcyB0byBhbm90aGVyIG1vZHVsZSAoZS5nLiBudHBhdGgpLgoKU29tZSBvZiB0aGlzIGNhbiBhY3R1YWxseSBiZSB1c2VmdWwgb24gbm9uLVBvc2l4IHN5c3RlbXMgdG9vLCBlLmcuCmZvciBtYW5pcHVsYXRpb24gb2YgdGhlIHBhdGhuYW1lIGNvbXBvbmVudCBvZiBVUkxzLgoiIiIKCiMgU3RyaW5ncyByZXByZXNlbnRpbmcgdmFyaW91cyBwYXRoLXJlbGF0ZWQgYml0cyBhbmQgcGllY2VzLgojIFRoZXNlIGFyZSBwcmltYXJpbHkgZm9yIGV4cG9ydDsgaW50ZXJuYWxseSwgdGhleSBhcmUgaGFyZGNvZGVkLgojIFNob3VsZCBiZSBzZXQgYmVmb3JlIGltcG9ydHMgZm9yIHJlc29sdmluZyBjeWNsaWMgZGVwZW5kZW5jeS4KY3VyZGlyID0gJy4nCnBhcmRpciA9ICcuLicKZXh0c2VwID0gJy4nCnNlcCA9ICcvJwpwYXRoc2VwID0gJzonCmRlZnBhdGggPSAnL2JpbjovdXNyL2JpbicKYWx0c2VwID0gTm9uZQpkZXZudWxsID0gJy9kZXYvbnVsbCcKCmltcG9ydCBvcwppbXBvcnQgc3lzCmltcG9ydCBzdGF0CmltcG9ydCBnZW5lcmljcGF0aApmcm9tIGdlbmVyaWNwYXRoIGltcG9ydCAqCgpfX2FsbF9fID0gWyJub3JtY2FzZSIsImlzYWJzIiwiam9pbiIsInNwbGl0ZHJpdmUiLCJzcGxpdCIsInNwbGl0ZXh0IiwKICAgICAgICAgICAiYmFzZW5hbWUiLCJkaXJuYW1lIiwiY29tbW9ucHJlZml4IiwiZ2V0c2l6ZSIsImdldG10aW1lIiwKICAgICAgICAgICAiZ2V0YXRpbWUiLCJnZXRjdGltZSIsImlzbGluayIsImV4aXN0cyIsImxleGlzdHMiLCJpc2RpciIsImlzZmlsZSIsCiAgICAgICAgICAgImlzbW91bnQiLCAiZXhwYW5kdXNlciIsImV4cGFuZHZhcnMiLCJub3JtcGF0aCIsImFic3BhdGgiLAogICAgICAgICAgICJzYW1lZmlsZSIsInNhbWVvcGVuZmlsZSIsInNhbWVzdGF0IiwKICAgICAgICAgICAiY3VyZGlyIiwicGFyZGlyIiwic2VwIiwicGF0aHNlcCIsImRlZnBhdGgiLCJhbHRzZXAiLCJleHRzZXAiLAogICAgICAgICAgICJkZXZudWxsIiwicmVhbHBhdGgiLCJzdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyIsInJlbHBhdGgiLAogICAgICAgICAgICJjb21tb25wYXRoIl0KCgpkZWYgX2dldF9zZXAocGF0aCk6CiAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICByZXR1cm4gYicvJwogICAgZWxzZToKICAgICAgICByZXR1cm4gJy8nCgojIE5vcm1hbGl6ZSB0aGUgY2FzZSBvZiBhIHBhdGhuYW1lLiAgVHJpdmlhbCBpbiBQb3NpeCwgc3RyaW5nLmxvd2VyIG9uIE1hYy4KIyBPbiBNUy1ET1MgdGhpcyBtYXkgYWxzbyB0dXJuIHNsYXNoZXMgaW50byBiYWNrc2xhc2hlczsgaG93ZXZlciwgb3RoZXIKIyBub3JtYWxpemF0aW9ucyAoc3VjaCBhcyBvcHRpbWl6aW5nICcuLi8nIGF3YXkpIGFyZSBub3QgYWxsb3dlZAojIChhbm90aGVyIGZ1bmN0aW9uIHNob3VsZCBiZSBkZWZpbmVkIHRvIGRvIHRoYXQpLgoKZGVmIG5vcm1jYXNlKHMpOgogICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuICBIYXMgbm8gZWZmZWN0IHVuZGVyIFBvc2l4IiIiCiAgICByZXR1cm4gb3MuZnNwYXRoKHMpCgoKIyBSZXR1cm4gd2hldGhlciBhIHBhdGggaXMgYWJzb2x1dGUuCiMgVHJpdmlhbCBpbiBQb3NpeCwgaGFyZGVyIG9uIHRoZSBNYWMgb3IgTVMtRE9TLgoKZGVmIGlzYWJzKHMpOgogICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgogICAgcyA9IG9zLmZzcGF0aChzKQogICAgc2VwID0gX2dldF9zZXAocykKICAgIHJldHVybiBzLnN0YXJ0c3dpdGgoc2VwKQoKCiMgSm9pbiBwYXRobmFtZXMuCiMgSWdub3JlIHRoZSBwcmV2aW91cyBwYXJ0cyBpZiBhIHBhcnQgaXMgYWJzb2x1dGUuCiMgSW5zZXJ0IGEgJy8nIHVubGVzcyB0aGUgZmlyc3QgcGFydCBpcyBlbXB0eSBvciBhbHJlYWR5IGVuZHMgaW4gJy8nLgoKZGVmIGpvaW4oYSwgKnApOgogICAgIiIiSm9pbiB0d28gb3IgbW9yZSBwYXRobmFtZSBjb21wb25lbnRzLCBpbnNlcnRpbmcgJy8nIGFzIG5lZWRlZC4KICAgIElmIGFueSBjb21wb25lbnQgaXMgYW4gYWJzb2x1dGUgcGF0aCwgYWxsIHByZXZpb3VzIHBhdGggY29tcG9uZW50cwogICAgd2lsbCBiZSBkaXNjYXJkZWQuICBBbiBlbXB0eSBsYXN0IHBhcnQgd2lsbCByZXN1bHQgaW4gYSBwYXRoIHRoYXQKICAgIGVuZHMgd2l0aCBhIHNlcGFyYXRvci4iIiIKICAgIGEgPSBvcy5mc3BhdGgoYSkKICAgIHNlcCA9IF9nZXRfc2VwKGEpCiAgICBwYXRoID0gYQogICAgdHJ5OgogICAgICAgIGlmIG5vdCBwOgogICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCiAgICAgICAgZm9yIGIgaW4gbWFwKG9zLmZzcGF0aCwgcCk6CiAgICAgICAgICAgIGlmIGIuc3RhcnRzd2l0aChzZXApOgogICAgICAgICAgICAgICAgcGF0aCA9IGIKICAgICAgICAgICAgZWxpZiBub3QgcGF0aCBvciBwYXRoLmVuZHN3aXRoKHNlcCk6CiAgICAgICAgICAgICAgICBwYXRoICs9IGIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHBhdGggKz0gc2VwICsgYgogICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcpOgogICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ2pvaW4nLCBhLCAqcCkKICAgICAgICByYWlzZQogICAgcmV0dXJuIHBhdGgKCgojIFNwbGl0IGEgcGF0aCBpbiBoZWFkIChldmVyeXRoaW5nIHVwIHRvIHRoZSBsYXN0ICcvJykgYW5kIHRhaWwgKHRoZQojIHJlc3QpLiAgSWYgdGhlIHBhdGggZW5kcyBpbiAnLycsIHRhaWwgd2lsbCBiZSBlbXB0eS4gIElmIHRoZXJlIGlzIG5vCiMgJy8nIGluIHRoZSBwYXRoLCBoZWFkICB3aWxsIGJlIGVtcHR5LgojIFRyYWlsaW5nICcvJ2VzIGFyZSBzdHJpcHBlZCBmcm9tIGhlYWQgdW5sZXNzIGl0IGlzIHRoZSByb290LgoKZGVmIHNwbGl0KHApOgogICAgIiIiU3BsaXQgYSBwYXRobmFtZS4gIFJldHVybnMgdHVwbGUgIihoZWFkLCB0YWlsKSIgd2hlcmUgInRhaWwiIGlzCiAgICBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4gIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKICAgIHAgPSBvcy5mc3BhdGgocCkKICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgaGVhZCwgdGFpbCA9IHBbOmldLCBwW2k6XQogICAgaWYgaGVhZCBhbmQgaGVhZCAhPSBzZXAqbGVuKGhlYWQpOgogICAgICAgIGhlYWQgPSBoZWFkLnJzdHJpcChzZXApCiAgICByZXR1cm4gaGVhZCwgdGFpbAoKCiMgU3BsaXQgYSBwYXRoIGluIHJvb3QgYW5kIGV4dGVuc2lvbi4KIyBUaGUgZXh0ZW5zaW9uIGlzIGV2ZXJ5dGhpbmcgc3RhcnRpbmcgYXQgdGhlIGxhc3QgZG90IGluIHRoZSBsYXN0CiMgcGF0aG5hbWUgY29tcG9uZW50OyB0aGUgcm9vdCBpcyBldmVyeXRoaW5nIGJlZm9yZSB0aGF0LgojIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgcm9vdCArIGV4dCA9PSBwLgoKZGVmIHNwbGl0ZXh0KHApOgogICAgcCA9IG9zLmZzcGF0aChwKQogICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CiAgICAgICAgc2VwID0gYicvJwogICAgICAgIGV4dHNlcCA9IGInLicKICAgIGVsc2U6CiAgICAgICAgc2VwID0gJy8nCiAgICAgICAgZXh0c2VwID0gJy4nCiAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIHNlcCwgTm9uZSwgZXh0c2VwKQpzcGxpdGV4dC5fX2RvY19fID0gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0Ll9fZG9jX18KCiMgU3BsaXQgYSBwYXRobmFtZSBpbnRvIGEgZHJpdmUgc3BlY2lmaWNhdGlvbiBhbmQgdGhlIHJlc3Qgb2YgdGhlCiMgcGF0aC4gIFVzZWZ1bCBvbiBET1MvV2luZG93cy9OVDsgb24gVW5peCwgdGhlIGRyaXZlIGlzIGFsd2F5cyBlbXB0eS4KCmRlZiBzcGxpdGRyaXZlKHApOgogICAgIiIiU3BsaXQgYSBwYXRobmFtZSBpbnRvIGRyaXZlIGFuZCBwYXRoLiBPbiBQb3NpeCwgZHJpdmUgaXMgYWx3YXlzCiAgICBlbXB0eS4iIiIKICAgIHAgPSBvcy5mc3BhdGgocCkKICAgIHJldHVybiBwWzowXSwgcAoKCiMgUmV0dXJuIHRoZSB0YWlsIChiYXNlbmFtZSkgcGFydCBvZiBhIHBhdGgsIHNhbWUgYXMgc3BsaXQocGF0aClbMV0uCgpkZWYgYmFzZW5hbWUocCk6CiAgICAiIiJSZXR1cm5zIHRoZSBmaW5hbCBjb21wb25lbnQgb2YgYSBwYXRobmFtZSIiIgogICAgcCA9IG9zLmZzcGF0aChwKQogICAgc2VwID0gX2dldF9zZXAocCkKICAgIGkgPSBwLnJmaW5kKHNlcCkgKyAxCiAgICByZXR1cm4gcFtpOl0KCgojIFJldHVybiB0aGUgaGVhZCAoZGlybmFtZSkgcGFydCBvZiBhIHBhdGgsIHNhbWUgYXMgc3BsaXQocGF0aClbMF0uCgpkZWYgZGlybmFtZShwKToKICAgICIiIlJldHVybnMgdGhlIGRpcmVjdG9yeSBjb21wb25lbnQgb2YgYSBwYXRobmFtZSIiIgogICAgcCA9IG9zLmZzcGF0aChwKQogICAgc2VwID0gX2dldF9zZXAocCkKICAgIGkgPSBwLnJmaW5kKHNlcCkgKyAxCiAgICBoZWFkID0gcFs6aV0KICAgIGlmIGhlYWQgYW5kIGhlYWQgIT0gc2VwKmxlbihoZWFkKToKICAgICAgICBoZWFkID0gaGVhZC5yc3RyaXAoc2VwKQogICAgcmV0dXJuIGhlYWQKCgojIElzIGEgcGF0aCBhIHN5bWJvbGljIGxpbms/CiMgVGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2Ugb24gc3lzdGVtcyB3aGVyZSBvcy5sc3RhdCBkb2Vzbid0IGV4aXN0LgoKZGVmIGlzbGluayhwYXRoKToKICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rIiIiCiAgICB0cnk6CiAgICAgICAgc3QgPSBvcy5sc3RhdChwYXRoKQogICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gc3RhdC5TX0lTTE5LKHN0LnN0X21vZGUpCgojIEJlaW5nIHRydWUgZm9yIGRhbmdsaW5nIHN5bWJvbGljIGxpbmtzIGlzIGFsc28gdXNlZnVsLgoKZGVmIGxleGlzdHMocGF0aCk6CiAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGV4aXN0cy4gIFJldHVybnMgVHJ1ZSBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzIiIiCiAgICB0cnk6CiAgICAgICAgb3MubHN0YXQocGF0aCkKICAgIGV4Y2VwdCAoT1NFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gVHJ1ZQoKCiMgSXMgYSBwYXRoIGEgbW91bnQgcG9pbnQ/CiMgKERvZXMgdGhpcyB3b3JrIGZvciBhbGwgVU5JWGVzPyAgSXMgaXQgZXZlbiBndWFyYW50ZWVkIHRvIHdvcmsgYnkgUG9zaXg/KQoKZGVmIGlzbW91bnQocGF0aCk6CiAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGEgbW91bnQgcG9pbnQiIiIKICAgIHRyeToKICAgICAgICBzMSA9IG9zLmxzdGF0KHBhdGgpCiAgICBleGNlcHQgKE9TRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICMgSXQgZG9lc24ndCBleGlzdCAtLSBzbyBub3QgYSBtb3VudCBwb2ludC4gOi0pCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBlbHNlOgogICAgICAgICMgQSBzeW1saW5rIGNhbiBuZXZlciBiZSBhIG1vdW50IHBvaW50CiAgICAgICAgaWYgc3RhdC5TX0lTTE5LKHMxLnN0X21vZGUpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICBwYXJlbnQgPSBqb2luKHBhdGgsIGInLi4nKQogICAgZWxzZToKICAgICAgICBwYXJlbnQgPSBqb2luKHBhdGgsICcuLicpCiAgICBwYXJlbnQgPSByZWFscGF0aChwYXJlbnQpCiAgICB0cnk6CiAgICAgICAgczIgPSBvcy5sc3RhdChwYXJlbnQpCiAgICBleGNlcHQgKE9TRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRldjEgPSBzMS5zdF9kZXYKICAgIGRldjIgPSBzMi5zdF9kZXYKICAgIGlmIGRldjEgIT0gZGV2MjoKICAgICAgICByZXR1cm4gVHJ1ZSAgICAgIyBwYXRoLy4uIG9uIGEgZGlmZmVyZW50IGRldmljZSBhcyBwYXRoCiAgICBpbm8xID0gczEuc3RfaW5vCiAgICBpbm8yID0gczIuc3RfaW5vCiAgICBpZiBpbm8xID09IGlubzI6CiAgICAgICAgcmV0dXJuIFRydWUgICAgICMgcGF0aC8uLiBpcyB0aGUgc2FtZSBpLW5vZGUgYXMgcGF0aAogICAgcmV0dXJuIEZhbHNlCgoKIyBFeHBhbmQgcGF0aHMgYmVnaW5uaW5nIHdpdGggJ34nIG9yICd+dXNlcicuCiMgJ34nIG1lYW5zICRIT01FOyAnfnVzZXInIG1lYW5zIHRoYXQgdXNlcidzIGhvbWUgZGlyZWN0b3J5LgojIElmIHRoZSBwYXRoIGRvZXNuJ3QgYmVnaW4gd2l0aCAnficsIG9yIGlmIHRoZSB1c2VyIG9yICRIT01FIGlzIHVua25vd24sCiMgdGhlIHBhdGggaXMgcmV0dXJuZWQgdW5jaGFuZ2VkIChsZWF2aW5nIGVycm9yIHJlcG9ydGluZyB0byB3aGF0ZXZlcgojIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBleHBhbmRlZCBwYXRoIGFzIGFyZ3VtZW50KS4KIyBTZWUgYWxzbyBtb2R1bGUgJ2dsb2InIGZvciBleHBhbnNpb24gb2YgKiwgPyBhbmQgWy4uLl0gaW4gcGF0aG5hbWVzLgojIChBIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGJlIGRlZmluZWQgdG8gZG8gZnVsbCAqc2gtc3R5bGUgZW52aXJvbm1lbnQKIyB2YXJpYWJsZSBleHBhbnNpb24uKQoKZGVmIGV4cGFuZHVzZXIocGF0aCk6CiAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0aW9ucy4gIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwKICAgIGRvIG5vdGhpbmcuIiIiCiAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICB0aWxkZSA9IGInficKICAgIGVsc2U6CiAgICAgICAgdGlsZGUgPSAnficKICAgIGlmIG5vdCBwYXRoLnN0YXJ0c3dpdGgodGlsZGUpOgogICAgICAgIHJldHVybiBwYXRoCiAgICBzZXAgPSBfZ2V0X3NlcChwYXRoKQogICAgaSA9IHBhdGguZmluZChzZXAsIDEpCiAgICBpZiBpIDwgMDoKICAgICAgICBpID0gbGVuKHBhdGgpCiAgICBpZiBpID09IDE6CiAgICAgICAgaWYgJ0hPTUUnIG5vdCBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpbXBvcnQgcHdkCiAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICMgcHdkIG1vZHVsZSB1bmF2YWlsYWJsZSwgcmV0dXJuIHBhdGggdW5jaGFuZ2VkCiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB1c2VyaG9tZSA9IHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZGlyCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICMgYnBvLTEwNDk2OiBpZiB0aGUgY3VycmVudCB1c2VyIGlkZW50aWZpZXIgZG9lc24ndCBleGlzdCBpbiB0aGUKICAgICAgICAgICAgICAgICMgcGFzc3dvcmQgZGF0YWJhc2UsIHJldHVybiB0aGUgcGF0aCB1bmNoYW5nZWQKICAgICAgICAgICAgICAgIHJldHVybiBwYXRoCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdXNlcmhvbWUgPSBvcy5lbnZpcm9uWydIT01FJ10KICAgIGVsc2U6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgcHdkCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAjIHB3ZCBtb2R1bGUgdW5hdmFpbGFibGUsIHJldHVybiBwYXRoIHVuY2hhbmdlZAogICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgIG5hbWUgPSBwYXRoWzE6aV0KICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKToKICAgICAgICAgICAgbmFtZSA9IHN0cihuYW1lLCAnQVNDSUknKQogICAgICAgIHRyeToKICAgICAgICAgICAgcHdlbnQgPSBwd2QuZ2V0cHduYW0obmFtZSkKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICMgYnBvLTEwNDk2OiBpZiB0aGUgdXNlciBuYW1lIGZyb20gdGhlIHBhdGggZG9lc24ndCBleGlzdCBpbiB0aGUKICAgICAgICAgICAgIyBwYXNzd29yZCBkYXRhYmFzZSwgcmV0dXJuIHRoZSBwYXRoIHVuY2hhbmdlZAogICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgIHVzZXJob21lID0gcHdlbnQucHdfZGlyCiAgICAjIGlmIG5vIHVzZXIgaG9tZSwgcmV0dXJuIHRoZSBwYXRoIHVuY2hhbmdlZCBvbiBWeFdvcmtzCiAgICBpZiB1c2VyaG9tZSBpcyBOb25lIGFuZCBzeXMucGxhdGZvcm0gPT0gInZ4d29ya3MiOgogICAgICAgIHJldHVybiBwYXRoCiAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICB1c2VyaG9tZSA9IG9zLmZzZW5jb2RlKHVzZXJob21lKQogICAgICAgIHJvb3QgPSBiJy8nCiAgICBlbHNlOgogICAgICAgIHJvb3QgPSAnLycKICAgIHVzZXJob21lID0gdXNlcmhvbWUucnN0cmlwKHJvb3QpCiAgICByZXR1cm4gKHVzZXJob21lICsgcGF0aFtpOl0pIG9yIHJvb3QKCgojIEV4cGFuZCBwYXRocyBjb250YWluaW5nIHNoZWxsIHZhcmlhYmxlIHN1YnN0aXR1dGlvbnMuCiMgVGhpcyBleHBhbmRzIHRoZSBmb3JtcyAkdmFyaWFibGUgYW5kICR7dmFyaWFibGV9IG9ubHkuCiMgTm9uLWV4aXN0ZW50IHZhcmlhYmxlcyBhcmUgbGVmdCB1bmNoYW5nZWQuCgpfdmFycHJvZyA9IE5vbmUKX3ZhcnByb2diID0gTm9uZQoKZGVmIGV4cGFuZHZhcnMocGF0aCk6CiAgICAiIiJFeHBhbmQgc2hlbGwgdmFyaWFibGVzIG9mIGZvcm0gJHZhciBhbmQgJHt2YXJ9LiAgVW5rbm93biB2YXJpYWJsZXMKICAgIGFyZSBsZWZ0IHVuY2hhbmdlZC4iIiIKICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgIGdsb2JhbCBfdmFycHJvZywgX3ZhcnByb2diCiAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoOgogICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgIGlmIG5vdCBfdmFycHJvZ2I6CiAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICAgICBfdmFycHJvZ2IgPSByZS5jb21waWxlKGJyJ1wkKFx3K3xce1tefV0qXH0pJywgcmUuQVNDSUkpCiAgICAgICAgc2VhcmNoID0gX3ZhcnByb2diLnNlYXJjaAogICAgICAgIHN0YXJ0ID0gYid7JwogICAgICAgIGVuZCA9IGInfScKICAgICAgICBlbnZpcm9uID0gZ2V0YXR0cihvcywgJ2Vudmlyb25iJywgTm9uZSkKICAgIGVsc2U6CiAgICAgICAgaWYgJyQnIG5vdCBpbiBwYXRoOgogICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgIGlmIG5vdCBfdmFycHJvZzoKICAgICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgICAgIF92YXJwcm9nID0gcmUuY29tcGlsZShyJ1wkKFx3K3xce1tefV0qXH0pJywgcmUuQVNDSUkpCiAgICAgICAgc2VhcmNoID0gX3ZhcnByb2cuc2VhcmNoCiAgICAgICAgc3RhcnQgPSAneycKICAgICAgICBlbmQgPSAnfScKICAgICAgICBlbnZpcm9uID0gb3MuZW52aXJvbgogICAgaSA9IDAKICAgIHdoaWxlIFRydWU6CiAgICAgICAgbSA9IHNlYXJjaChwYXRoLCBpKQogICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICBicmVhawogICAgICAgIGksIGogPSBtLnNwYW4oMCkKICAgICAgICBuYW1lID0gbS5ncm91cCgxKQogICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aChzdGFydCkgYW5kIG5hbWUuZW5kc3dpdGgoZW5kKToKICAgICAgICAgICAgbmFtZSA9IG5hbWVbMTotMV0KICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGVudmlyb24gaXMgTm9uZToKICAgICAgICAgICAgICAgIHZhbHVlID0gb3MuZnNlbmNvZGUob3MuZW52aXJvbltvcy5mc2RlY29kZShuYW1lKV0pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IGVudmlyb25bbmFtZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIGkgPSBqCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGFpbCA9IHBhdGhbajpdCiAgICAgICAgICAgIHBhdGggPSBwYXRoWzppXSArIHZhbHVlCiAgICAgICAgICAgIGkgPSBsZW4ocGF0aCkKICAgICAgICAgICAgcGF0aCArPSB0YWlsCiAgICByZXR1cm4gcGF0aAoKCiMgTm9ybWFsaXplIGEgcGF0aCwgZS5nLiBBLy9CLCBBLy4vQiBhbmQgQS9mb28vLi4vQiBhbGwgYmVjb21lIEEvQi4KIyBJdCBzaG91bGQgYmUgdW5kZXJzdG9vZCB0aGF0IHRoaXMgbWF5IGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcGF0aAojIGlmIGl0IGNvbnRhaW5zIHN5bWJvbGljIGxpbmtzIQoKdHJ5OgogICAgZnJvbSBwb3NpeCBpbXBvcnQgX3BhdGhfbm9ybXBhdGgKCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKICAgICAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgICAgZW1wdHkgPSBiJycKICAgICAgICAgICAgZG90ID0gYicuJwogICAgICAgICAgICBkb3Rkb3QgPSBiJy4uJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlcCA9ICcvJwogICAgICAgICAgICBlbXB0eSA9ICcnCiAgICAgICAgICAgIGRvdCA9ICcuJwogICAgICAgICAgICBkb3Rkb3QgPSAnLi4nCiAgICAgICAgaWYgcGF0aCA9PSBlbXB0eToKICAgICAgICAgICAgcmV0dXJuIGRvdAogICAgICAgIGluaXRpYWxfc2xhc2hlcyA9IHBhdGguc3RhcnRzd2l0aChzZXApCiAgICAgICAgIyBQT1NJWCBhbGxvd3Mgb25lIG9yIHR3byBpbml0aWFsIHNsYXNoZXMsIGJ1dCB0cmVhdHMgdGhyZWUgb3IgbW9yZQogICAgICAgICMgYXMgc2luZ2xlIHNsYXNoLgogICAgICAgICMgKHNlZSBodHRwczovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvYmFzZWRlZnMvVjFfY2hhcDA0Lmh0bWwjdGFnXzA0XzEzKQogICAgICAgIGlmIChpbml0aWFsX3NsYXNoZXMgYW5kCiAgICAgICAgICAgIHBhdGguc3RhcnRzd2l0aChzZXAqMikgYW5kIG5vdCBwYXRoLnN0YXJ0c3dpdGgoc2VwKjMpKToKICAgICAgICAgICAgaW5pdGlhbF9zbGFzaGVzID0gMgogICAgICAgIGNvbXBzID0gcGF0aC5zcGxpdChzZXApCiAgICAgICAgbmV3X2NvbXBzID0gW10KICAgICAgICBmb3IgY29tcCBpbiBjb21wczoKICAgICAgICAgICAgaWYgY29tcCBpbiAoZW1wdHksIGRvdCk6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiAoY29tcCAhPSBkb3Rkb3Qgb3IgKG5vdCBpbml0aWFsX3NsYXNoZXMgYW5kIG5vdCBuZXdfY29tcHMpIG9yCiAgICAgICAgICAgICAgICAgKG5ld19jb21wcyBhbmQgbmV3X2NvbXBzWy0xXSA9PSBkb3Rkb3QpKToKICAgICAgICAgICAgICAgIG5ld19jb21wcy5hcHBlbmQoY29tcCkKICAgICAgICAgICAgZWxpZiBuZXdfY29tcHM6CiAgICAgICAgICAgICAgICBuZXdfY29tcHMucG9wKCkKICAgICAgICBjb21wcyA9IG5ld19jb21wcwogICAgICAgIHBhdGggPSBzZXAuam9pbihjb21wcykKICAgICAgICBpZiBpbml0aWFsX3NsYXNoZXM6CiAgICAgICAgICAgIHBhdGggPSBzZXAqaW5pdGlhbF9zbGFzaGVzICsgcGF0aAogICAgICAgIHJldHVybiBwYXRoIG9yIGRvdAoKZWxzZToKICAgIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKICAgICAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgICAgIHJldHVybiBvcy5mc2VuY29kZShfcGF0aF9ub3JtcGF0aChvcy5mc2RlY29kZShwYXRoKSkpIG9yIGIiLiIKICAgICAgICByZXR1cm4gX3BhdGhfbm9ybXBhdGgocGF0aCkgb3IgIi4iCgoKZGVmIGFic3BhdGgocGF0aCk6CiAgICAiIiJSZXR1cm4gYW4gYWJzb2x1dGUgcGF0aC4iIiIKICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgIGlmIG5vdCBpc2FicyhwYXRoKToKICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkYigpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAgICAgICBwYXRoID0gam9pbihjd2QsIHBhdGgpCiAgICByZXR1cm4gbm9ybXBhdGgocGF0aCkKCgojIFJldHVybiBhIGNhbm9uaWNhbCBwYXRoIChpLmUuIHRoZSBhYnNvbHV0ZSBsb2NhdGlvbiBvZiBhIGZpbGUgb24gdGhlCiMgZmlsZXN5c3RlbSkuCgpkZWYgcmVhbHBhdGgoZmlsZW5hbWUsICosIHN0cmljdD1GYWxzZSk6CiAgICAiIiJSZXR1cm4gdGhlIGNhbm9uaWNhbCBwYXRoIG9mIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUsIGVsaW1pbmF0aW5nIGFueQpzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aC4iIiIKICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgcGF0aCwgb2sgPSBfam9pbnJlYWxwYXRoKGZpbGVuYW1lWzowXSwgZmlsZW5hbWUsIHN0cmljdCwge30pCiAgICByZXR1cm4gYWJzcGF0aChwYXRoKQoKIyBKb2luIHR3byBwYXRocywgbm9ybWFsaXppbmcgYW5kIGVsaW1pbmF0aW5nIGFueSBzeW1ib2xpYyBsaW5rcwojIGVuY291bnRlcmVkIGluIHRoZSBzZWNvbmQgcGF0aC4KZGVmIF9qb2lucmVhbHBhdGgocGF0aCwgcmVzdCwgc3RyaWN0LCBzZWVuKToKICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgIHNlcCA9IGInLycKICAgICAgICBjdXJkaXIgPSBiJy4nCiAgICAgICAgcGFyZGlyID0gYicuLicKICAgIGVsc2U6CiAgICAgICAgc2VwID0gJy8nCiAgICAgICAgY3VyZGlyID0gJy4nCiAgICAgICAgcGFyZGlyID0gJy4uJwoKICAgIGlmIGlzYWJzKHJlc3QpOgogICAgICAgIHJlc3QgPSByZXN0WzE6XQogICAgICAgIHBhdGggPSBzZXAKCiAgICB3aGlsZSByZXN0OgogICAgICAgIG5hbWUsIF8sIHJlc3QgPSByZXN0LnBhcnRpdGlvbihzZXApCiAgICAgICAgaWYgbm90IG5hbWUgb3IgbmFtZSA9PSBjdXJkaXI6CiAgICAgICAgICAgICMgY3VycmVudCBkaXIKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBuYW1lID09IHBhcmRpcjoKICAgICAgICAgICAgIyBwYXJlbnQgZGlyCiAgICAgICAgICAgIGlmIHBhdGg6CiAgICAgICAgICAgICAgICBwYXRoLCBuYW1lID0gc3BsaXQocGF0aCkKICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gcGFyZGlyOgogICAgICAgICAgICAgICAgICAgIHBhdGggPSBqb2luKHBhdGgsIHBhcmRpciwgcGFyZGlyKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcGF0aCA9IHBhcmRpcgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIG5ld3BhdGggPSBqb2luKHBhdGgsIG5hbWUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzdCA9IG9zLmxzdGF0KG5ld3BhdGgpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIGlmIHN0cmljdDoKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGlzX2xpbmsgPSBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlzX2xpbmsgPSBzdGF0LlNfSVNMTksoc3Quc3RfbW9kZSkKICAgICAgICBpZiBub3QgaXNfbGluazoKICAgICAgICAgICAgcGF0aCA9IG5ld3BhdGgKICAgICAgICAgICAgY29udGludWUKICAgICAgICAjIFJlc29sdmUgdGhlIHN5bWJvbGljIGxpbmsKICAgICAgICBpZiBuZXdwYXRoIGluIHNlZW46CiAgICAgICAgICAgICMgQWxyZWFkeSBzZWVuIHRoaXMgcGF0aAogICAgICAgICAgICBwYXRoID0gc2VlbltuZXdwYXRoXQogICAgICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIyB1c2UgY2FjaGVkIHZhbHVlCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAjIFRoZSBzeW1saW5rIGlzIG5vdCByZXNvbHZlZCwgc28gd2UgbXVzdCBoYXZlIGEgc3ltbGluayBsb29wLgogICAgICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICAgICAjIFJhaXNlIE9TRXJyb3IoZXJybm8uRUxPT1ApCiAgICAgICAgICAgICAgICBvcy5zdGF0KG5ld3BhdGgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIFJldHVybiBhbHJlYWR5IHJlc29sdmVkIHBhcnQgKyByZXN0IG9mIHRoZSBwYXRoIHVuY2hhbmdlZC4KICAgICAgICAgICAgICAgIHJldHVybiBqb2luKG5ld3BhdGgsIHJlc3QpLCBGYWxzZQogICAgICAgIHNlZW5bbmV3cGF0aF0gPSBOb25lICMgbm90IHJlc29sdmVkIHN5bWxpbmsKICAgICAgICBwYXRoLCBvayA9IF9qb2lucmVhbHBhdGgocGF0aCwgb3MucmVhZGxpbmsobmV3cGF0aCksIHN0cmljdCwgc2VlbikKICAgICAgICBpZiBub3Qgb2s6CiAgICAgICAgICAgIHJldHVybiBqb2luKHBhdGgsIHJlc3QpLCBGYWxzZQogICAgICAgIHNlZW5bbmV3cGF0aF0gPSBwYXRoICMgcmVzb2x2ZWQgc3ltbGluawoKICAgIHJldHVybiBwYXRoLCBUcnVlCgoKc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgPSAoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nKQoKZGVmIHJlbHBhdGgocGF0aCwgc3RhcnQ9Tm9uZSk6CiAgICAiIiJSZXR1cm4gYSByZWxhdGl2ZSB2ZXJzaW9uIG9mIGEgcGF0aCIiIgoKICAgIGlmIG5vdCBwYXRoOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKCiAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICBjdXJkaXIgPSBiJy4nCiAgICAgICAgc2VwID0gYicvJwogICAgICAgIHBhcmRpciA9IGInLi4nCiAgICBlbHNlOgogICAgICAgIGN1cmRpciA9ICcuJwogICAgICAgIHNlcCA9ICcvJwogICAgICAgIHBhcmRpciA9ICcuLicKCiAgICBpZiBzdGFydCBpcyBOb25lOgogICAgICAgIHN0YXJ0ID0gY3VyZGlyCiAgICBlbHNlOgogICAgICAgIHN0YXJ0ID0gb3MuZnNwYXRoKHN0YXJ0KQoKICAgIHRyeToKICAgICAgICBzdGFydF9saXN0ID0gW3ggZm9yIHggaW4gYWJzcGF0aChzdGFydCkuc3BsaXQoc2VwKSBpZiB4XQogICAgICAgIHBhdGhfbGlzdCA9IFt4IGZvciB4IGluIGFic3BhdGgocGF0aCkuc3BsaXQoc2VwKSBpZiB4XQogICAgICAgICMgV29yayBvdXQgaG93IG11Y2ggb2YgdGhlIGZpbGVwYXRoIGlzIHNoYXJlZCBieSBzdGFydCBhbmQgcGF0aC4KICAgICAgICBpID0gbGVuKGNvbW1vbnByZWZpeChbc3RhcnRfbGlzdCwgcGF0aF9saXN0XSkpCgogICAgICAgIHJlbF9saXN0ID0gW3BhcmRpcl0gKiAobGVuKHN0YXJ0X2xpc3QpLWkpICsgcGF0aF9saXN0W2k6XQogICAgICAgIGlmIG5vdCByZWxfbGlzdDoKICAgICAgICAgICAgcmV0dXJuIGN1cmRpcgogICAgICAgIHJldHVybiBqb2luKCpyZWxfbGlzdCkKICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgQnl0ZXNXYXJuaW5nLCBEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ3JlbHBhdGgnLCBwYXRoLCBzdGFydCkKICAgICAgICByYWlzZQoKCiMgUmV0dXJuIHRoZSBsb25nZXN0IGNvbW1vbiBzdWItcGF0aCBvZiB0aGUgc2VxdWVuY2Ugb2YgcGF0aHMgZ2l2ZW4gYXMgaW5wdXQuCiMgVGhlIHBhdGhzIGFyZSBub3Qgbm9ybWFsaXplZCBiZWZvcmUgY29tcGFyaW5nIHRoZW0gKHRoaXMgaXMgdGhlCiMgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikuIEFueSB0cmFpbGluZyBzZXBhcmF0b3IgaXMgc3RyaXBwZWQgZnJvbSB0aGUKIyByZXR1cm5lZCBwYXRoLgoKZGVmIGNvbW1vbnBhdGgocGF0aHMpOgogICAgIiIiR2l2ZW4gYSBzZXF1ZW5jZSBvZiBwYXRoIG5hbWVzLCByZXR1cm5zIHRoZSBsb25nZXN0IGNvbW1vbiBzdWItcGF0aC4iIiIKCiAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY29tbW9ucGF0aCgpIGFyZyBpcyBhbiBlbXB0eSBzZXF1ZW5jZScpCgogICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICBpZiBpc2luc3RhbmNlKHBhdGhzWzBdLCBieXRlcyk6CiAgICAgICAgc2VwID0gYicvJwogICAgICAgIGN1cmRpciA9IGInLicKICAgIGVsc2U6CiAgICAgICAgc2VwID0gJy8nCiAgICAgICAgY3VyZGlyID0gJy4nCgogICAgdHJ5OgogICAgICAgIHNwbGl0X3BhdGhzID0gW3BhdGguc3BsaXQoc2VwKSBmb3IgcGF0aCBpbiBwYXRoc10KCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpc2FicywgPSBzZXQocFs6MV0gPT0gc2VwIGZvciBwIGluIHBhdGhzKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCBtaXggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBhdGhzIikgZnJvbSBOb25lCgogICAgICAgIHNwbGl0X3BhdGhzID0gW1tjIGZvciBjIGluIHMgaWYgYyBhbmQgYyAhPSBjdXJkaXJdIGZvciBzIGluIHNwbGl0X3BhdGhzXQogICAgICAgIHMxID0gbWluKHNwbGl0X3BhdGhzKQogICAgICAgIHMyID0gbWF4KHNwbGl0X3BhdGhzKQogICAgICAgIGNvbW1vbiA9IHMxCiAgICAgICAgZm9yIGksIGMgaW4gZW51bWVyYXRlKHMxKToKICAgICAgICAgICAgaWYgYyAhPSBzMltpXToKICAgICAgICAgICAgICAgIGNvbW1vbiA9IHMxWzppXQogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgcHJlZml4ID0gc2VwIGlmIGlzYWJzIGVsc2Ugc2VwWzowXQogICAgICAgIHJldHVybiBwcmVmaXggKyBzZXAuam9pbihjb21tb24pCiAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ2NvbW1vbnBhdGgnLCAqcGF0aHMpCiAgICAgICAgcmFpc2UKUEsDBBQAAAAAAAIgo1a97CPHqV8AAKlfAAAJAAAAcHByaW50LnB5IyAgQXV0aG9yOiAgICAgIEZyZWQgTC4gRHJha2UsIEpyLgojICAgICAgICAgICAgICAgZmRyYWtlQGFjbS5vcmcKIwojICBUaGlzIGlzIGEgc2ltcGxlIGxpdHRsZSBtb2R1bGUgSSB3cm90ZSB0byBtYWtlIGxpZmUgZWFzaWVyLiAgSSBkaWRuJ3QKIyAgc2VlIGFueXRoaW5nIHF1aXRlIGxpa2UgaXQgaW4gdGhlIGxpYnJhcnksIHRob3VnaCBJIG1heSBoYXZlIG92ZXJsb29rZWQKIyAgc29tZXRoaW5nLiAgSSB3cm90ZSB0aGlzIHdoZW4gSSB3YXMgdHJ5aW5nIHRvIHJlYWQgc29tZSBoZWF2aWx5IG5lc3RlZAojICB0dXBsZXMgd2l0aCBmYWlybHkgbm9uLWRlc2NyaXB0aXZlIGNvbnRlbnQuICBUaGlzIGlzIG1vZGVsZWQgdmVyeSBtdWNoCiMgIGFmdGVyIExpc3AvU2NoZW1lIC0gc3R5bGUgcHJldHR5LXByaW50aW5nIG9mIGxpc3RzLiAgSWYgeW91IGZpbmQgaXQKIyAgdXNlZnVsLCB0aGFuayBzbWFsbCBjaGlsZHJlbiB3aG8gc2xlZXAgYXQgbmlnaHQuCgoiIiJTdXBwb3J0IHRvIHByZXR0eS1wcmludCBsaXN0cywgdHVwbGVzLCAmIGRpY3Rpb25hcmllcyByZWN1cnNpdmVseS4KClZlcnkgc2ltcGxlLCBidXQgdXNlZnVsLCBlc3BlY2lhbGx5IGluIGRlYnVnZ2luZyBkYXRhIHN0cnVjdHVyZXMuCgpDbGFzc2VzCi0tLS0tLS0KClByZXR0eVByaW50ZXIoKQogICAgSGFuZGxlIHByZXR0eS1wcmludGluZyBvcGVyYXRpb25zIG9udG8gYSBzdHJlYW0gdXNpbmcgYSBjb25maWd1cmVkCiAgICBzZXQgb2YgZm9ybWF0dGluZyBwYXJhbWV0ZXJzLgoKRnVuY3Rpb25zCi0tLS0tLS0tLQoKcGZvcm1hdCgpCiAgICBGb3JtYXQgYSBQeXRob24gb2JqZWN0IGludG8gYSBwcmV0dHktcHJpbnRlZCByZXByZXNlbnRhdGlvbi4KCnBwcmludCgpCiAgICBQcmV0dHktcHJpbnQgYSBQeXRob24gb2JqZWN0IHRvIGEgc3RyZWFtIFtkZWZhdWx0IGlzIHN5cy5zdGRvdXRdLgoKc2FmZXJlcHIoKQogICAgR2VuZXJhdGUgYSAnc3RhbmRhcmQnIHJlcHIoKS1saWtlIHZhbHVlLCBidXQgcHJvdGVjdCBhZ2FpbnN0IHJlY3Vyc2l2ZQogICAgZGF0YSBzdHJ1Y3R1cmVzLgoKIiIiCgppbXBvcnQgY29sbGVjdGlvbnMgYXMgX2NvbGxlY3Rpb25zCmltcG9ydCBkYXRhY2xhc3NlcyBhcyBfZGF0YWNsYXNzZXMKaW1wb3J0IHJlCmltcG9ydCBzeXMgYXMgX3N5cwppbXBvcnQgdHlwZXMgYXMgX3R5cGVzCmZyb20gaW8gaW1wb3J0IFN0cmluZ0lPIGFzIF9TdHJpbmdJTwoKX19hbGxfXyA9IFsicHByaW50IiwicGZvcm1hdCIsImlzcmVhZGFibGUiLCJpc3JlY3Vyc2l2ZSIsInNhZmVyZXByIiwKICAgICAgICAgICAiUHJldHR5UHJpbnRlciIsICJwcCJdCgoKZGVmIHBwcmludChvYmplY3QsIHN0cmVhbT1Ob25lLCBpbmRlbnQ9MSwgd2lkdGg9ODAsIGRlcHRoPU5vbmUsICosCiAgICAgICAgICAgY29tcGFjdD1GYWxzZSwgc29ydF9kaWN0cz1UcnVlLCB1bmRlcnNjb3JlX251bWJlcnM9RmFsc2UpOgogICAgIiIiUHJldHR5LXByaW50IGEgUHl0aG9uIG9iamVjdCB0byBhIHN0cmVhbSBbZGVmYXVsdCBpcyBzeXMuc3Rkb3V0XS4iIiIKICAgIHByaW50ZXIgPSBQcmV0dHlQcmludGVyKAogICAgICAgIHN0cmVhbT1zdHJlYW0sIGluZGVudD1pbmRlbnQsIHdpZHRoPXdpZHRoLCBkZXB0aD1kZXB0aCwKICAgICAgICBjb21wYWN0PWNvbXBhY3QsIHNvcnRfZGljdHM9c29ydF9kaWN0cywKICAgICAgICB1bmRlcnNjb3JlX251bWJlcnM9dW5kZXJzY29yZV9udW1iZXJzKQogICAgcHJpbnRlci5wcHJpbnQob2JqZWN0KQoKZGVmIHBmb3JtYXQob2JqZWN0LCBpbmRlbnQ9MSwgd2lkdGg9ODAsIGRlcHRoPU5vbmUsICosCiAgICAgICAgICAgIGNvbXBhY3Q9RmFsc2UsIHNvcnRfZGljdHM9VHJ1ZSwgdW5kZXJzY29yZV9udW1iZXJzPUZhbHNlKToKICAgICIiIkZvcm1hdCBhIFB5dGhvbiBvYmplY3QgaW50byBhIHByZXR0eS1wcmludGVkIHJlcHJlc2VudGF0aW9uLiIiIgogICAgcmV0dXJuIFByZXR0eVByaW50ZXIoaW5kZW50PWluZGVudCwgd2lkdGg9d2lkdGgsIGRlcHRoPWRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFjdD1jb21wYWN0LCBzb3J0X2RpY3RzPXNvcnRfZGljdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlX251bWJlcnM9dW5kZXJzY29yZV9udW1iZXJzKS5wZm9ybWF0KG9iamVjdCkKCmRlZiBwcChvYmplY3QsICphcmdzLCBzb3J0X2RpY3RzPUZhbHNlLCAqKmt3YXJncyk6CiAgICAiIiJQcmV0dHktcHJpbnQgYSBQeXRob24gb2JqZWN0IiIiCiAgICBwcHJpbnQob2JqZWN0LCAqYXJncywgc29ydF9kaWN0cz1zb3J0X2RpY3RzLCAqKmt3YXJncykKCmRlZiBzYWZlcmVwcihvYmplY3QpOgogICAgIiIiVmVyc2lvbiBvZiByZXByKCkgd2hpY2ggY2FuIGhhbmRsZSByZWN1cnNpdmUgZGF0YSBzdHJ1Y3R1cmVzLiIiIgogICAgcmV0dXJuIFByZXR0eVByaW50ZXIoKS5fc2FmZV9yZXByKG9iamVjdCwge30sIE5vbmUsIDApWzBdCgpkZWYgaXNyZWFkYWJsZShvYmplY3QpOgogICAgIiIiRGV0ZXJtaW5lIGlmIHNhZmVyZXByKG9iamVjdCkgaXMgcmVhZGFibGUgYnkgZXZhbCgpLiIiIgogICAgcmV0dXJuIFByZXR0eVByaW50ZXIoKS5fc2FmZV9yZXByKG9iamVjdCwge30sIE5vbmUsIDApWzFdCgpkZWYgaXNyZWN1cnNpdmUob2JqZWN0KToKICAgICIiIkRldGVybWluZSBpZiBvYmplY3QgcmVxdWlyZXMgYSByZWN1cnNpdmUgcmVwcmVzZW50YXRpb24uIiIiCiAgICByZXR1cm4gUHJldHR5UHJpbnRlcigpLl9zYWZlX3JlcHIob2JqZWN0LCB7fSwgTm9uZSwgMClbMl0KCmNsYXNzIF9zYWZlX2tleToKICAgICIiIkhlbHBlciBmdW5jdGlvbiBmb3Iga2V5IGZ1bmN0aW9ucyB3aGVuIHNvcnRpbmcgdW5vcmRlcmFibGUgb2JqZWN0cy4KCiAgICBUaGUgd3JhcHBlZC1vYmplY3Qgd2lsbCBmYWxsYmFjayB0byBhIFB5Mi54IHN0eWxlIGNvbXBhcmlzb24gZm9yCiAgICB1bm9yZGVyYWJsZSB0eXBlcyAoc29ydGluZyBmaXJzdCBjb21wYXJpbmcgdGhlIHR5cGUgbmFtZSBhbmQgdGhlbiBieQogICAgdGhlIG9iaiBpZHMpLiAgRG9lcyBub3Qgd29yayByZWN1cnNpdmVseSwgc28gZGljdC5pdGVtcygpIG11c3QgaGF2ZQogICAgX3NhZmVfa2V5IGFwcGxpZWQgdG8gYm90aCB0aGUga2V5IGFuZCB0aGUgdmFsdWUuCgogICAgIiIiCgogICAgX19zbG90c19fID0gWydvYmonXQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgogICAgICAgIHNlbGYub2JqID0gb2JqCgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5vYmogPCBvdGhlci5vYmoKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICByZXR1cm4gKChzdHIodHlwZShzZWxmLm9iaikpLCBpZChzZWxmLm9iaikpIDwgXAogICAgICAgICAgICAgICAgICAgIChzdHIodHlwZShvdGhlci5vYmopKSwgaWQob3RoZXIub2JqKSkpCgpkZWYgX3NhZmVfdHVwbGUodCk6CiAgICAiSGVscGVyIGZ1bmN0aW9uIGZvciBjb21wYXJpbmcgMi10dXBsZXMiCiAgICByZXR1cm4gX3NhZmVfa2V5KHRbMF0pLCBfc2FmZV9rZXkodFsxXSkKCmNsYXNzIFByZXR0eVByaW50ZXI6CiAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZW50PTEsIHdpZHRoPTgwLCBkZXB0aD1Ob25lLCBzdHJlYW09Tm9uZSwgKiwKICAgICAgICAgICAgICAgICBjb21wYWN0PUZhbHNlLCBzb3J0X2RpY3RzPVRydWUsIHVuZGVyc2NvcmVfbnVtYmVycz1GYWxzZSk6CiAgICAgICAgIiIiSGFuZGxlIHByZXR0eSBwcmludGluZyBvcGVyYXRpb25zIG9udG8gYSBzdHJlYW0gdXNpbmcgYSBzZXQgb2YKICAgICAgICBjb25maWd1cmVkIHBhcmFtZXRlcnMuCgogICAgICAgIGluZGVudAogICAgICAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCBmb3IgZWFjaCBsZXZlbCBvZiBuZXN0aW5nLgoKICAgICAgICB3aWR0aAogICAgICAgICAgICBBdHRlbXB0ZWQgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgb3V0cHV0LgoKICAgICAgICBkZXB0aAogICAgICAgICAgICBUaGUgbWF4aW11bSBkZXB0aCB0byBwcmludCBvdXQgbmVzdGVkIHN0cnVjdHVyZXMuCgogICAgICAgIHN0cmVhbQogICAgICAgICAgICBUaGUgZGVzaXJlZCBvdXRwdXQgc3RyZWFtLiAgSWYgb21pdHRlZCAob3IgZmFsc2UpLCB0aGUgc3RhbmRhcmQKICAgICAgICAgICAgb3V0cHV0IHN0cmVhbSBhdmFpbGFibGUgYXQgY29uc3RydWN0aW9uIHdpbGwgYmUgdXNlZC4KCiAgICAgICAgY29tcGFjdAogICAgICAgICAgICBJZiB0cnVlLCBzZXZlcmFsIGl0ZW1zIHdpbGwgYmUgY29tYmluZWQgaW4gb25lIGxpbmUuCgogICAgICAgIHNvcnRfZGljdHMKICAgICAgICAgICAgSWYgdHJ1ZSwgZGljdCBrZXlzIGFyZSBzb3J0ZWQuCgogICAgICAgICIiIgogICAgICAgIGluZGVudCA9IGludChpbmRlbnQpCiAgICAgICAgd2lkdGggPSBpbnQod2lkdGgpCiAgICAgICAgaWYgaW5kZW50IDwgMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW5kZW50IG11c3QgYmUgPj0gMCcpCiAgICAgICAgaWYgZGVwdGggaXMgbm90IE5vbmUgYW5kIGRlcHRoIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2RlcHRoIG11c3QgYmUgPiAwJykKICAgICAgICBpZiBub3Qgd2lkdGg6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dpZHRoIG11c3QgYmUgIT0gMCcpCiAgICAgICAgc2VsZi5fZGVwdGggPSBkZXB0aAogICAgICAgIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPSBpbmRlbnQKICAgICAgICBzZWxmLl93aWR0aCA9IHdpZHRoCiAgICAgICAgaWYgc3RyZWFtIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9zdHJlYW0gPSBzdHJlYW0KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9zdHJlYW0gPSBfc3lzLnN0ZG91dAogICAgICAgIHNlbGYuX2NvbXBhY3QgPSBib29sKGNvbXBhY3QpCiAgICAgICAgc2VsZi5fc29ydF9kaWN0cyA9IHNvcnRfZGljdHMKICAgICAgICBzZWxmLl91bmRlcnNjb3JlX251bWJlcnMgPSB1bmRlcnNjb3JlX251bWJlcnMKCiAgICBkZWYgcHByaW50KHNlbGYsIG9iamVjdCk6CiAgICAgICAgaWYgc2VsZi5fc3RyZWFtIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9mb3JtYXQob2JqZWN0LCBzZWxmLl9zdHJlYW0sIDAsIDAsIHt9LCAwKQogICAgICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGUoIlxuIikKCiAgICBkZWYgcGZvcm1hdChzZWxmLCBvYmplY3QpOgogICAgICAgIHNpbyA9IF9TdHJpbmdJTygpCiAgICAgICAgc2VsZi5fZm9ybWF0KG9iamVjdCwgc2lvLCAwLCAwLCB7fSwgMCkKICAgICAgICByZXR1cm4gc2lvLmdldHZhbHVlKCkKCiAgICBkZWYgaXNyZWN1cnNpdmUoc2VsZiwgb2JqZWN0KToKICAgICAgICByZXR1cm4gc2VsZi5mb3JtYXQob2JqZWN0LCB7fSwgMCwgMClbMl0KCiAgICBkZWYgaXNyZWFkYWJsZShzZWxmLCBvYmplY3QpOgogICAgICAgIHMsIHJlYWRhYmxlLCByZWN1cnNpdmUgPSBzZWxmLmZvcm1hdChvYmplY3QsIHt9LCAwLCAwKQogICAgICAgIHJldHVybiByZWFkYWJsZSBhbmQgbm90IHJlY3Vyc2l2ZQoKICAgIGRlZiBfZm9ybWF0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIG9iamlkID0gaWQob2JqZWN0KQogICAgICAgIGlmIG9iamlkIGluIGNvbnRleHQ6CiAgICAgICAgICAgIHN0cmVhbS53cml0ZShfcmVjdXJzaW9uKG9iamVjdCkpCiAgICAgICAgICAgIHNlbGYuX3JlY3Vyc2l2ZSA9IFRydWUKICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBGYWxzZQogICAgICAgICAgICByZXR1cm4KICAgICAgICByZXAgPSBzZWxmLl9yZXByKG9iamVjdCwgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSBpbmRlbnQgLSBhbGxvd2FuY2UKICAgICAgICBpZiBsZW4ocmVwKSA+IG1heF93aWR0aDoKICAgICAgICAgICAgcCA9IHNlbGYuX2Rpc3BhdGNoLmdldCh0eXBlKG9iamVjdCkuX19yZXByX18sIE5vbmUpCiAgICAgICAgICAgIGlmIHAgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBjb250ZXh0W29iamlkXSA9IDEKICAgICAgICAgICAgICAgIHAoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCArIDEpCiAgICAgICAgICAgICAgICBkZWwgY29udGV4dFtvYmppZF0KICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBlbGlmIChfZGF0YWNsYXNzZXMuaXNfZGF0YWNsYXNzKG9iamVjdCkgYW5kCiAgICAgICAgICAgICAgICAgIG5vdCBpc2luc3RhbmNlKG9iamVjdCwgdHlwZSkgYW5kCiAgICAgICAgICAgICAgICAgIG9iamVjdC5fX2RhdGFjbGFzc19wYXJhbXNfXy5yZXByIGFuZAogICAgICAgICAgICAgICAgICAjIENoZWNrIGRhdGFjbGFzcyBoYXMgZ2VuZXJhdGVkIHJlcHIgbWV0aG9kLgogICAgICAgICAgICAgICAgICBoYXNhdHRyKG9iamVjdC5fX3JlcHJfXywgIl9fd3JhcHBlZF9fIikgYW5kCiAgICAgICAgICAgICAgICAgICJfX2NyZWF0ZV9mbl9fIiBpbiBvYmplY3QuX19yZXByX18uX193cmFwcGVkX18uX19xdWFsbmFtZV9fKToKICAgICAgICAgICAgICAgIGNvbnRleHRbb2JqaWRdID0gMQogICAgICAgICAgICAgICAgc2VsZi5fcHByaW50X2RhdGFjbGFzcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsICsgMSkKICAgICAgICAgICAgICAgIGRlbCBjb250ZXh0W29iamlkXQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc3RyZWFtLndyaXRlKHJlcCkKCiAgICBkZWYgX3BwcmludF9kYXRhY2xhc3Moc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgY2xzX25hbWUgPSBvYmplY3QuX19jbGFzc19fLl9fbmFtZV9fCiAgICAgICAgaW5kZW50ICs9IGxlbihjbHNfbmFtZSkgKyAxCiAgICAgICAgaXRlbXMgPSBbKGYubmFtZSwgZ2V0YXR0cihvYmplY3QsIGYubmFtZSkpIGZvciBmIGluIF9kYXRhY2xhc3Nlcy5maWVsZHMob2JqZWN0KSBpZiBmLnJlcHJdCiAgICAgICAgc3RyZWFtLndyaXRlKGNsc19uYW1lICsgJygnKQogICAgICAgIHNlbGYuX2Zvcm1hdF9uYW1lc3BhY2VfaXRlbXMoaXRlbXMsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKQogICAgICAgIHN0cmVhbS53cml0ZSgnKScpCgogICAgX2Rpc3BhdGNoID0ge30KCiAgICBkZWYgX3BwcmludF9kaWN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCiAgICAgICAgd3JpdGUoJ3snKQogICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgogICAgICAgICAgICB3cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQogICAgICAgIGxlbmd0aCA9IGxlbihvYmplY3QpCiAgICAgICAgaWYgbGVuZ3RoOgogICAgICAgICAgICBpZiBzZWxmLl9zb3J0X2RpY3RzOgogICAgICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQob2JqZWN0Lml0ZW1zKCksIGtleT1fc2FmZV90dXBsZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGl0ZW1zID0gb2JqZWN0Lml0ZW1zKCkKICAgICAgICAgICAgc2VsZi5fZm9ybWF0X2RpY3RfaXRlbXMoaXRlbXMsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKICAgICAgICB3cml0ZSgnfScpCgogICAgX2Rpc3BhdGNoW2RpY3QuX19yZXByX19dID0gX3BwcmludF9kaWN0CgogICAgZGVmIF9wcHJpbnRfb3JkZXJlZF9kaWN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgY2xzID0gb2JqZWN0Ll9fY2xhc3NfXwogICAgICAgIHN0cmVhbS53cml0ZShjbHMuX19uYW1lX18gKyAnKCcpCiAgICAgICAgc2VsZi5fZm9ybWF0KGxpc3Qob2JqZWN0Lml0ZW1zKCkpLCBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIGxlbihjbHMuX19uYW1lX18pICsgMSwgYWxsb3dhbmNlICsgMSwKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgc3RyZWFtLndyaXRlKCcpJykKCiAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfb3JkZXJlZF9kaWN0CgogICAgZGVmIF9wcHJpbnRfbGlzdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICBzdHJlYW0ud3JpdGUoJ1snKQogICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKICAgICAgICBzdHJlYW0ud3JpdGUoJ10nKQoKICAgIF9kaXNwYXRjaFtsaXN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfbGlzdAoKICAgIGRlZiBfcHByaW50X3R1cGxlKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIHN0cmVhbS53cml0ZSgnKCcpCiAgICAgICAgZW5kY2hhciA9ICcsKScgaWYgbGVuKG9iamVjdCkgPT0gMSBlbHNlICcpJwogICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyBsZW4oZW5kY2hhciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQogICAgICAgIHN0cmVhbS53cml0ZShlbmRjaGFyKQoKICAgIF9kaXNwYXRjaFt0dXBsZS5fX3JlcHJfX10gPSBfcHByaW50X3R1cGxlCgogICAgZGVmIF9wcHJpbnRfc2V0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHlwID0gb2JqZWN0Ll9fY2xhc3NfXwogICAgICAgIGlmIHR5cCBpcyBzZXQ6CiAgICAgICAgICAgIHN0cmVhbS53cml0ZSgneycpCiAgICAgICAgICAgIGVuZGNoYXIgPSAnfScKICAgICAgICBlbHNlOgogICAgICAgICAgICBzdHJlYW0ud3JpdGUodHlwLl9fbmFtZV9fICsgJyh7JykKICAgICAgICAgICAgZW5kY2hhciA9ICd9KScKICAgICAgICAgICAgaW5kZW50ICs9IGxlbih0eXAuX19uYW1lX18pICsgMQogICAgICAgIG9iamVjdCA9IHNvcnRlZChvYmplY3QsIGtleT1fc2FmZV9rZXkpCiAgICAgICAgc2VsZi5fZm9ybWF0X2l0ZW1zKG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIGxlbihlbmRjaGFyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgc3RyZWFtLndyaXRlKGVuZGNoYXIpCgogICAgX2Rpc3BhdGNoW3NldC5fX3JlcHJfX10gPSBfcHByaW50X3NldAogICAgX2Rpc3BhdGNoW2Zyb3plbnNldC5fX3JlcHJfX10gPSBfcHByaW50X3NldAoKICAgIGRlZiBfcHByaW50X3N0cihzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQogICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKICAgICAgICAgICAgd3JpdGUocmVwcihvYmplY3QpKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBjaHVua3MgPSBbXQogICAgICAgIGxpbmVzID0gb2JqZWN0LnNwbGl0bGluZXMoVHJ1ZSkKICAgICAgICBpZiBsZXZlbCA9PSAxOgogICAgICAgICAgICBpbmRlbnQgKz0gMQogICAgICAgICAgICBhbGxvd2FuY2UgKz0gMQogICAgICAgIG1heF93aWR0aDEgPSBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIGluZGVudAogICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6CiAgICAgICAgICAgIHJlcCA9IHJlcHIobGluZSkKICAgICAgICAgICAgaWYgaSA9PSBsZW4obGluZXMpIC0gMToKICAgICAgICAgICAgICAgIG1heF93aWR0aDEgLT0gYWxsb3dhbmNlCiAgICAgICAgICAgIGlmIGxlbihyZXApIDw9IG1heF93aWR0aDE6CiAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgQSBsaXN0IG9mIGFsdGVybmF0aW5nIChub24tc3BhY2UsIHNwYWNlKSBzdHJpbmdzCiAgICAgICAgICAgICAgICBwYXJ0cyA9IHJlLmZpbmRhbGwocidcUypccyonLCBsaW5lKQogICAgICAgICAgICAgICAgYXNzZXJ0IHBhcnRzCiAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHBhcnRzWy0xXQogICAgICAgICAgICAgICAgcGFydHMucG9wKCkgICMgZHJvcCBlbXB0eSBsYXN0IHBhcnQKICAgICAgICAgICAgICAgIG1heF93aWR0aDIgPSBtYXhfd2lkdGgKICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAnJwogICAgICAgICAgICAgICAgZm9yIGosIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzKToKICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBjdXJyZW50ICsgcGFydAogICAgICAgICAgICAgICAgICAgIGlmIGogPT0gbGVuKHBhcnRzKSAtIDEgYW5kIGkgPT0gbGVuKGxpbmVzKSAtIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIG1heF93aWR0aDIgLT0gYWxsb3dhbmNlCiAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHJlcHIoY2FuZGlkYXRlKSkgPiBtYXhfd2lkdGgyOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXByKGN1cnJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gcGFydAogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjYW5kaWRhdGUKICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CiAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXByKGN1cnJlbnQpKQogICAgICAgIGlmIGxlbihjaHVua3MpID09IDE6CiAgICAgICAgICAgIHdyaXRlKHJlcCkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbGV2ZWwgPT0gMToKICAgICAgICAgICAgd3JpdGUoJygnKQogICAgICAgIGZvciBpLCByZXAgaW4gZW51bWVyYXRlKGNodW5rcyk6CiAgICAgICAgICAgIGlmIGkgPiAwOgogICAgICAgICAgICAgICAgd3JpdGUoJ1xuJyArICcgJyppbmRlbnQpCiAgICAgICAgICAgIHdyaXRlKHJlcCkKICAgICAgICBpZiBsZXZlbCA9PSAxOgogICAgICAgICAgICB3cml0ZSgnKScpCgogICAgX2Rpc3BhdGNoW3N0ci5fX3JlcHJfX10gPSBfcHByaW50X3N0cgoKICAgIGRlZiBfcHByaW50X2J5dGVzKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCiAgICAgICAgaWYgbGVuKG9iamVjdCkgPD0gNDoKICAgICAgICAgICAgd3JpdGUocmVwcihvYmplY3QpKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBwYXJlbnMgPSBsZXZlbCA9PSAxCiAgICAgICAgaWYgcGFyZW5zOgogICAgICAgICAgICBpbmRlbnQgKz0gMQogICAgICAgICAgICBhbGxvd2FuY2UgKz0gMQogICAgICAgICAgICB3cml0ZSgnKCcpCiAgICAgICAgZGVsaW0gPSAnJwogICAgICAgIGZvciByZXAgaW4gX3dyYXBfYnl0ZXNfcmVwcihvYmplY3QsIHNlbGYuX3dpZHRoIC0gaW5kZW50LCBhbGxvd2FuY2UpOgogICAgICAgICAgICB3cml0ZShkZWxpbSkKICAgICAgICAgICAgd3JpdGUocmVwKQogICAgICAgICAgICBpZiBub3QgZGVsaW06CiAgICAgICAgICAgICAgICBkZWxpbSA9ICdcbicgKyAnICcqaW5kZW50CiAgICAgICAgaWYgcGFyZW5zOgogICAgICAgICAgICB3cml0ZSgnKScpCgogICAgX2Rpc3BhdGNoW2J5dGVzLl9fcmVwcl9fXSA9IF9wcHJpbnRfYnl0ZXMKCiAgICBkZWYgX3BwcmludF9ieXRlYXJyYXkoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKICAgICAgICB3cml0ZSgnYnl0ZWFycmF5KCcpCiAgICAgICAgc2VsZi5fcHByaW50X2J5dGVzKGJ5dGVzKG9iamVjdCksIHN0cmVhbSwgaW5kZW50ICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsICsgMSkKICAgICAgICB3cml0ZSgnKScpCgogICAgX2Rpc3BhdGNoW2J5dGVhcnJheS5fX3JlcHJfX10gPSBfcHByaW50X2J5dGVhcnJheQoKICAgIGRlZiBfcHByaW50X21hcHBpbmdwcm94eShzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICBzdHJlYW0ud3JpdGUoJ21hcHBpbmdwcm94eSgnKQogICAgICAgIHNlbGYuX2Zvcm1hdChvYmplY3QuY29weSgpLCBzdHJlYW0sIGluZGVudCArIDEzLCBhbGxvd2FuY2UgKyAxLAogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKICAgICAgICBzdHJlYW0ud3JpdGUoJyknKQoKICAgIF9kaXNwYXRjaFtfdHlwZXMuTWFwcGluZ1Byb3h5VHlwZS5fX3JlcHJfX10gPSBfcHByaW50X21hcHBpbmdwcm94eQoKICAgIGRlZiBfcHByaW50X3NpbXBsZW5hbWVzcGFjZShzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICBpZiB0eXBlKG9iamVjdCkgaXMgX3R5cGVzLlNpbXBsZU5hbWVzcGFjZToKICAgICAgICAgICAgIyBUaGUgU2ltcGxlTmFtZXNwYWNlIHJlcHIgaXMgIm5hbWVzcGFjZSIgaW5zdGVhZCBvZiB0aGUgY2xhc3MKICAgICAgICAgICAgIyBuYW1lLCBzbyB3ZSBkbyB0aGUgc2FtZSBoZXJlLiBGb3Igc3ViY2xhc3NlczsgdXNlIHRoZSBjbGFzcyBuYW1lLgogICAgICAgICAgICBjbHNfbmFtZSA9ICduYW1lc3BhY2UnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY2xzX25hbWUgPSBvYmplY3QuX19jbGFzc19fLl9fbmFtZV9fCiAgICAgICAgaW5kZW50ICs9IGxlbihjbHNfbmFtZSkgKyAxCiAgICAgICAgaXRlbXMgPSBvYmplY3QuX19kaWN0X18uaXRlbXMoKQogICAgICAgIHN0cmVhbS53cml0ZShjbHNfbmFtZSArICcoJykKICAgICAgICBzZWxmLl9mb3JtYXRfbmFtZXNwYWNlX2l0ZW1zKGl0ZW1zLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCkKICAgICAgICBzdHJlYW0ud3JpdGUoJyknKQoKICAgIF9kaXNwYXRjaFtfdHlwZXMuU2ltcGxlTmFtZXNwYWNlLl9fcmVwcl9fXSA9IF9wcHJpbnRfc2ltcGxlbmFtZXNwYWNlCgogICAgZGVmIF9mb3JtYXRfZGljdF9pdGVtcyhzZWxmLCBpdGVtcywgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwpOgogICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCiAgICAgICAgaW5kZW50ICs9IHNlbGYuX2luZGVudF9wZXJfbGV2ZWwKICAgICAgICBkZWxpbW5sID0gJyxcbicgKyAnICcgKiBpbmRlbnQKICAgICAgICBsYXN0X2luZGV4ID0gbGVuKGl0ZW1zKSAtIDEKICAgICAgICBmb3IgaSwgKGtleSwgZW50KSBpbiBlbnVtZXJhdGUoaXRlbXMpOgogICAgICAgICAgICBsYXN0ID0gaSA9PSBsYXN0X2luZGV4CiAgICAgICAgICAgIHJlcCA9IHNlbGYuX3JlcHIoa2V5LCBjb250ZXh0LCBsZXZlbCkKICAgICAgICAgICAgd3JpdGUocmVwKQogICAgICAgICAgICB3cml0ZSgnOiAnKQogICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCArIGxlbihyZXApICsgMiwKICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSBpZiBsYXN0IGVsc2UgMSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQogICAgICAgICAgICBpZiBub3QgbGFzdDoKICAgICAgICAgICAgICAgIHdyaXRlKGRlbGltbmwpCgogICAgZGVmIF9mb3JtYXRfbmFtZXNwYWNlX2l0ZW1zKHNlbGYsIGl0ZW1zLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKICAgICAgICBkZWxpbW5sID0gJyxcbicgKyAnICcgKiBpbmRlbnQKICAgICAgICBsYXN0X2luZGV4ID0gbGVuKGl0ZW1zKSAtIDEKICAgICAgICBmb3IgaSwgKGtleSwgZW50KSBpbiBlbnVtZXJhdGUoaXRlbXMpOgogICAgICAgICAgICBsYXN0ID0gaSA9PSBsYXN0X2luZGV4CiAgICAgICAgICAgIHdyaXRlKGtleSkKICAgICAgICAgICAgd3JpdGUoJz0nKQogICAgICAgICAgICBpZiBpZChlbnQpIGluIGNvbnRleHQ6CiAgICAgICAgICAgICAgICAjIFNwZWNpYWwtY2FzZSByZXByZXNlbnRhdGlvbiBvZiByZWN1cnNpb24gdG8gbWF0Y2ggc3RhbmRhcmQKICAgICAgICAgICAgICAgICMgcmVjdXJzaXZlIGRhdGFjbGFzcyByZXByLgogICAgICAgICAgICAgICAgd3JpdGUoIi4uLiIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCArIGxlbihrZXkpICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgaWYgbGFzdCBlbHNlIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgICAgIGlmIG5vdCBsYXN0OgogICAgICAgICAgICAgICAgd3JpdGUoZGVsaW1ubCkKCiAgICBkZWYgX2Zvcm1hdF9pdGVtcyhzZWxmLCBpdGVtcywgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCiAgICAgICAgaW5kZW50ICs9IHNlbGYuX2luZGVudF9wZXJfbGV2ZWwKICAgICAgICBpZiBzZWxmLl9pbmRlbnRfcGVyX2xldmVsID4gMToKICAgICAgICAgICAgd3JpdGUoKHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgLSAxKSAqICcgJykKICAgICAgICBkZWxpbW5sID0gJyxcbicgKyAnICcgKiBpbmRlbnQKICAgICAgICBkZWxpbSA9ICcnCiAgICAgICAgd2lkdGggPSBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIGluZGVudCArIDEKICAgICAgICBpdCA9IGl0ZXIoaXRlbXMpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBuZXh0X2VudCA9IG5leHQoaXQpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGxhc3QgPSBGYWxzZQogICAgICAgIHdoaWxlIG5vdCBsYXN0OgogICAgICAgICAgICBlbnQgPSBuZXh0X2VudAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBuZXh0X2VudCA9IG5leHQoaXQpCiAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICAgICAgICAgbGFzdCA9IFRydWUKICAgICAgICAgICAgICAgIG1heF93aWR0aCAtPSBhbGxvd2FuY2UKICAgICAgICAgICAgICAgIHdpZHRoIC09IGFsbG93YW5jZQogICAgICAgICAgICBpZiBzZWxmLl9jb21wYWN0OgogICAgICAgICAgICAgICAgcmVwID0gc2VsZi5fcmVwcihlbnQsIGNvbnRleHQsIGxldmVsKQogICAgICAgICAgICAgICAgdyA9IGxlbihyZXApICsgMgogICAgICAgICAgICAgICAgaWYgd2lkdGggPCB3OgogICAgICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4X3dpZHRoCiAgICAgICAgICAgICAgICAgICAgaWYgZGVsaW06CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltID0gZGVsaW1ubAogICAgICAgICAgICAgICAgaWYgd2lkdGggPj0gdzoKICAgICAgICAgICAgICAgICAgICB3aWR0aCAtPSB3CiAgICAgICAgICAgICAgICAgICAgd3JpdGUoZGVsaW0pCiAgICAgICAgICAgICAgICAgICAgZGVsaW0gPSAnLCAnCiAgICAgICAgICAgICAgICAgICAgd3JpdGUocmVwKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIHdyaXRlKGRlbGltKQogICAgICAgICAgICBkZWxpbSA9IGRlbGltbmwKICAgICAgICAgICAgc2VsZi5fZm9ybWF0KGVudCwgc3RyZWFtLCBpbmRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgaWYgbGFzdCBlbHNlIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKCiAgICBkZWYgX3JlcHIoc2VsZiwgb2JqZWN0LCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgcmVwciwgcmVhZGFibGUsIHJlY3Vyc2l2ZSA9IHNlbGYuZm9ybWF0KG9iamVjdCwgY29udGV4dC5jb3B5KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlcHRoLCBsZXZlbCkKICAgICAgICBpZiBub3QgcmVhZGFibGU6CiAgICAgICAgICAgIHNlbGYuX3JlYWRhYmxlID0gRmFsc2UKICAgICAgICBpZiByZWN1cnNpdmU6CiAgICAgICAgICAgIHNlbGYuX3JlY3Vyc2l2ZSA9IFRydWUKICAgICAgICByZXR1cm4gcmVwcgoKICAgIGRlZiBmb3JtYXQoc2VsZiwgb2JqZWN0LCBjb250ZXh0LCBtYXhsZXZlbHMsIGxldmVsKToKICAgICAgICAiIiJGb3JtYXQgb2JqZWN0IGZvciBhIHNwZWNpZmljIGNvbnRleHQsIHJldHVybmluZyBhIHN0cmluZwogICAgICAgIGFuZCBmbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJlcHJlc2VudGF0aW9uIGlzICdyZWFkYWJsZScKICAgICAgICBhbmQgd2hldGhlciB0aGUgb2JqZWN0IHJlcHJlc2VudHMgYSByZWN1cnNpdmUgY29uc3RydWN0LgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zYWZlX3JlcHIob2JqZWN0LCBjb250ZXh0LCBtYXhsZXZlbHMsIGxldmVsKQoKICAgIGRlZiBfcHByaW50X2RlZmF1bHRfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CiAgICAgICAgICAgIHN0cmVhbS53cml0ZShyZXByKG9iamVjdCkpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHJkZiA9IHNlbGYuX3JlcHIob2JqZWN0LmRlZmF1bHRfZmFjdG9yeSwgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgY2xzID0gb2JqZWN0Ll9fY2xhc3NfXwogICAgICAgIGluZGVudCArPSBsZW4oY2xzLl9fbmFtZV9fKSArIDEKICAgICAgICBzdHJlYW0ud3JpdGUoJyVzKCVzLFxuJXMnICUgKGNscy5fX25hbWVfXywgcmRmLCAnICcgKiBpbmRlbnQpKQogICAgICAgIHNlbGYuX3BwcmludF9kaWN0KG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsKQogICAgICAgIHN0cmVhbS53cml0ZSgnKScpCgogICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5kZWZhdWx0ZGljdC5fX3JlcHJfX10gPSBfcHByaW50X2RlZmF1bHRfZGljdAoKICAgIGRlZiBfcHByaW50X2NvdW50ZXIoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgogICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCiAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoeycpCiAgICAgICAgaWYgc2VsZi5faW5kZW50X3Blcl9sZXZlbCA+IDE6CiAgICAgICAgICAgIHN0cmVhbS53cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQogICAgICAgIGl0ZW1zID0gb2JqZWN0Lm1vc3RfY29tbW9uKCkKICAgICAgICBzZWxmLl9mb3JtYXRfZGljdF9pdGVtcyhpdGVtcywgc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIGxlbihjbHMuX19uYW1lX18pICsgMSwgYWxsb3dhbmNlICsgMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKICAgICAgICBzdHJlYW0ud3JpdGUoJ30pJykKCiAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLkNvdW50ZXIuX19yZXByX19dID0gX3BwcmludF9jb3VudGVyCgogICAgZGVmIF9wcHJpbnRfY2hhaW5fbWFwKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0Lm1hcHMpOgogICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCiAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoJykKICAgICAgICBpbmRlbnQgKz0gbGVuKGNscy5fX25hbWVfXykgKyAxCiAgICAgICAgZm9yIGksIG0gaW4gZW51bWVyYXRlKG9iamVjdC5tYXBzKToKICAgICAgICAgICAgaWYgaSA9PSBsZW4ob2JqZWN0Lm1hcHMpIC0gMToKICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChtLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMSwgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoJyknKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0KG0sIHN0cmVhbSwgaW5kZW50LCAxLCBjb250ZXh0LCBsZXZlbCkKICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnLFxuJyArICcgJyAqIGluZGVudCkKCiAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLkNoYWluTWFwLl9fcmVwcl9fXSA9IF9wcHJpbnRfY2hhaW5fbWFwCgogICAgZGVmIF9wcHJpbnRfZGVxdWUoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgogICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCiAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoJykKICAgICAgICBpbmRlbnQgKz0gbGVuKGNscy5fX25hbWVfXykgKyAxCiAgICAgICAgc3RyZWFtLndyaXRlKCdbJykKICAgICAgICBpZiBvYmplY3QubWF4bGVuIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnXSknKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgICAgIHJtbCA9IHNlbGYuX3JlcHIob2JqZWN0Lm1heGxlbiwgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnXSxcbiVzbWF4bGVuPSVzKScgJSAoJyAnICogaW5kZW50LCBybWwpKQoKICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuZGVxdWUuX19yZXByX19dID0gX3BwcmludF9kZXF1ZQoKICAgIGRlZiBfcHByaW50X3VzZXJfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICBzZWxmLl9mb3JtYXQob2JqZWN0LmRhdGEsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsIC0gMSkKCiAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLlVzZXJEaWN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfdXNlcl9kaWN0CgogICAgZGVmIF9wcHJpbnRfdXNlcl9saXN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgIHNlbGYuX2Zvcm1hdChvYmplY3QuZGF0YSwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwgLSAxKQoKICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuVXNlckxpc3QuX19yZXByX19dID0gX3BwcmludF91c2VyX2xpc3QKCiAgICBkZWYgX3BwcmludF91c2VyX3N0cmluZyhzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKICAgICAgICBzZWxmLl9mb3JtYXQob2JqZWN0LmRhdGEsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsIC0gMSkKCiAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLlVzZXJTdHJpbmcuX19yZXByX19dID0gX3BwcmludF91c2VyX3N0cmluZwoKICAgIGRlZiBfc2FmZV9yZXByKHNlbGYsIG9iamVjdCwgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCk6CiAgICAgICAgIyBSZXR1cm4gdHJpcGxlIChyZXByX3N0cmluZywgaXNyZWFkYWJsZSwgaXNyZWN1cnNpdmUpLgogICAgICAgIHR5cCA9IHR5cGUob2JqZWN0KQogICAgICAgIGlmIHR5cCBpbiBfYnVpbHRpbl9zY2FsYXJzOgogICAgICAgICAgICByZXR1cm4gcmVwcihvYmplY3QpLCBUcnVlLCBGYWxzZQoKICAgICAgICByID0gZ2V0YXR0cih0eXAsICJfX3JlcHJfXyIsIE5vbmUpCgogICAgICAgIGlmIGlzc3ViY2xhc3ModHlwLCBpbnQpIGFuZCByIGlzIGludC5fX3JlcHJfXzoKICAgICAgICAgICAgaWYgc2VsZi5fdW5kZXJzY29yZV9udW1iZXJzOgogICAgICAgICAgICAgICAgcmV0dXJuIGYie29iamVjdDpfZH0iLCBUcnVlLCBGYWxzZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlcHIob2JqZWN0KSwgVHJ1ZSwgRmFsc2UKCiAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIGRpY3QpIGFuZCByIGlzIGRpY3QuX19yZXByX186CiAgICAgICAgICAgIGlmIG5vdCBvYmplY3Q6CiAgICAgICAgICAgICAgICByZXR1cm4gInt9IiwgVHJ1ZSwgRmFsc2UKICAgICAgICAgICAgb2JqaWQgPSBpZChvYmplY3QpCiAgICAgICAgICAgIGlmIG1heGxldmVscyBhbmQgbGV2ZWwgPj0gbWF4bGV2ZWxzOgogICAgICAgICAgICAgICAgcmV0dXJuICJ7Li4ufSIsIEZhbHNlLCBvYmppZCBpbiBjb250ZXh0CiAgICAgICAgICAgIGlmIG9iamlkIGluIGNvbnRleHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gX3JlY3Vyc2lvbihvYmplY3QpLCBGYWxzZSwgVHJ1ZQogICAgICAgICAgICBjb250ZXh0W29iamlkXSA9IDEKICAgICAgICAgICAgcmVhZGFibGUgPSBUcnVlCiAgICAgICAgICAgIHJlY3Vyc2l2ZSA9IEZhbHNlCiAgICAgICAgICAgIGNvbXBvbmVudHMgPSBbXQogICAgICAgICAgICBhcHBlbmQgPSBjb21wb25lbnRzLmFwcGVuZAogICAgICAgICAgICBsZXZlbCArPSAxCiAgICAgICAgICAgIGlmIHNlbGYuX3NvcnRfZGljdHM6CiAgICAgICAgICAgICAgICBpdGVtcyA9IHNvcnRlZChvYmplY3QuaXRlbXMoKSwga2V5PV9zYWZlX3R1cGxlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaXRlbXMgPSBvYmplY3QuaXRlbXMoKQogICAgICAgICAgICBmb3IgaywgdiBpbiBpdGVtczoKICAgICAgICAgICAgICAgIGtyZXByLCBrcmVhZGFibGUsIGtyZWN1ciA9IHNlbGYuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgIGssIGNvbnRleHQsIG1heGxldmVscywgbGV2ZWwpCiAgICAgICAgICAgICAgICB2cmVwciwgdnJlYWRhYmxlLCB2cmVjdXIgPSBzZWxmLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICB2LCBjb250ZXh0LCBtYXhsZXZlbHMsIGxldmVsKQogICAgICAgICAgICAgICAgYXBwZW5kKCIlczogJXMiICUgKGtyZXByLCB2cmVwcikpCiAgICAgICAgICAgICAgICByZWFkYWJsZSA9IHJlYWRhYmxlIGFuZCBrcmVhZGFibGUgYW5kIHZyZWFkYWJsZQogICAgICAgICAgICAgICAgaWYga3JlY3VyIG9yIHZyZWN1cjoKICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmUgPSBUcnVlCiAgICAgICAgICAgIGRlbCBjb250ZXh0W29iamlkXQogICAgICAgICAgICByZXR1cm4gInslc30iICUgIiwgIi5qb2luKGNvbXBvbmVudHMpLCByZWFkYWJsZSwgcmVjdXJzaXZlCgogICAgICAgIGlmIChpc3N1YmNsYXNzKHR5cCwgbGlzdCkgYW5kIHIgaXMgbGlzdC5fX3JlcHJfXykgb3IgXAogICAgICAgICAgIChpc3N1YmNsYXNzKHR5cCwgdHVwbGUpIGFuZCByIGlzIHR1cGxlLl9fcmVwcl9fKToKICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIGxpc3QpOgogICAgICAgICAgICAgICAgaWYgbm90IG9iamVjdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIltdIiwgVHJ1ZSwgRmFsc2UKICAgICAgICAgICAgICAgIGZvcm1hdCA9ICJbJXNdIgogICAgICAgICAgICBlbGlmIGxlbihvYmplY3QpID09IDE6CiAgICAgICAgICAgICAgICBmb3JtYXQgPSAiKCVzLCkiCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBub3Qgb2JqZWN0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiAiKCkiLCBUcnVlLCBGYWxzZQogICAgICAgICAgICAgICAgZm9ybWF0ID0gIiglcykiCiAgICAgICAgICAgIG9iamlkID0gaWQob2JqZWN0KQogICAgICAgICAgICBpZiBtYXhsZXZlbHMgYW5kIGxldmVsID49IG1heGxldmVsczoKICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQgJSAiLi4uIiwgRmFsc2UsIG9iamlkIGluIGNvbnRleHQKICAgICAgICAgICAgaWYgb2JqaWQgaW4gY29udGV4dDoKICAgICAgICAgICAgICAgIHJldHVybiBfcmVjdXJzaW9uKG9iamVjdCksIEZhbHNlLCBUcnVlCiAgICAgICAgICAgIGNvbnRleHRbb2JqaWRdID0gMQogICAgICAgICAgICByZWFkYWJsZSA9IFRydWUKICAgICAgICAgICAgcmVjdXJzaXZlID0gRmFsc2UKICAgICAgICAgICAgY29tcG9uZW50cyA9IFtdCiAgICAgICAgICAgIGFwcGVuZCA9IGNvbXBvbmVudHMuYXBwZW5kCiAgICAgICAgICAgIGxldmVsICs9IDEKICAgICAgICAgICAgZm9yIG8gaW4gb2JqZWN0OgogICAgICAgICAgICAgICAgb3JlcHIsIG9yZWFkYWJsZSwgb3JlY3VyID0gc2VsZi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgbywgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCkKICAgICAgICAgICAgICAgIGFwcGVuZChvcmVwcikKICAgICAgICAgICAgICAgIGlmIG5vdCBvcmVhZGFibGU6CiAgICAgICAgICAgICAgICAgICAgcmVhZGFibGUgPSBGYWxzZQogICAgICAgICAgICAgICAgaWYgb3JlY3VyOgogICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZSA9IFRydWUKICAgICAgICAgICAgZGVsIGNvbnRleHRbb2JqaWRdCiAgICAgICAgICAgIHJldHVybiBmb3JtYXQgJSAiLCAiLmpvaW4oY29tcG9uZW50cyksIHJlYWRhYmxlLCByZWN1cnNpdmUKCiAgICAgICAgcmVwID0gcmVwcihvYmplY3QpCiAgICAgICAgcmV0dXJuIHJlcCwgKHJlcCBhbmQgbm90IHJlcC5zdGFydHN3aXRoKCc8JykpLCBGYWxzZQoKX2J1aWx0aW5fc2NhbGFycyA9IGZyb3plbnNldCh7c3RyLCBieXRlcywgYnl0ZWFycmF5LCBmbG9hdCwgY29tcGxleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwgdHlwZShOb25lKX0pCgpkZWYgX3JlY3Vyc2lvbihvYmplY3QpOgogICAgcmV0dXJuICgiPFJlY3Vyc2lvbiBvbiAlcyB3aXRoIGlkPSVzPiIKICAgICAgICAgICAgJSAodHlwZShvYmplY3QpLl9fbmFtZV9fLCBpZChvYmplY3QpKSkKCgpkZWYgX3BlcmZjaGVjayhvYmplY3Q9Tm9uZSk6CiAgICBpbXBvcnQgdGltZQogICAgaWYgb2JqZWN0IGlzIE5vbmU6CiAgICAgICAgb2JqZWN0ID0gWygic3RyaW5nIiwgKDEsIDIpLCBbMywgNF0sIHs1OiA2LCA3OiA4fSldICogMTAwMDAwCiAgICBwID0gUHJldHR5UHJpbnRlcigpCiAgICB0MSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgIHAuX3NhZmVfcmVwcihvYmplY3QsIHt9LCBOb25lLCAwLCBUcnVlKQogICAgdDIgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICBwLnBmb3JtYXQob2JqZWN0KQogICAgdDMgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICBwcmludCgiX3NhZmVfcmVwcjoiLCB0MiAtIHQxKQogICAgcHJpbnQoInBmb3JtYXQ6IiwgdDMgLSB0MikKCmRlZiBfd3JhcF9ieXRlc19yZXByKG9iamVjdCwgd2lkdGgsIGFsbG93YW5jZSk6CiAgICBjdXJyZW50ID0gYicnCiAgICBsYXN0ID0gbGVuKG9iamVjdCkgLy8gNCAqIDQKICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihvYmplY3QpLCA0KToKICAgICAgICBwYXJ0ID0gb2JqZWN0W2k6IGkrNF0KICAgICAgICBjYW5kaWRhdGUgPSBjdXJyZW50ICsgcGFydAogICAgICAgIGlmIGkgPT0gbGFzdDoKICAgICAgICAgICAgd2lkdGggLT0gYWxsb3dhbmNlCiAgICAgICAgaWYgbGVuKHJlcHIoY2FuZGlkYXRlKSkgPiB3aWR0aDoKICAgICAgICAgICAgaWYgY3VycmVudDoKICAgICAgICAgICAgICAgIHlpZWxkIHJlcHIoY3VycmVudCkKICAgICAgICAgICAgY3VycmVudCA9IHBhcnQKICAgICAgICBlbHNlOgogICAgICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlCiAgICBpZiBjdXJyZW50OgogICAgICAgIHlpZWxkIHJlcHIoY3VycmVudCkKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBfcGVyZmNoZWNrKCkKUEsDBBQAAAAAAAIgo1aJKK8/V1kAAFdZAAAKAAAAcHJvZmlsZS5weSMhIC91c3IvYmluL2VudiBweXRob24zCiMKIyBDbGFzcyBmb3IgcHJvZmlsaW5nIHB5dGhvbiBjb2RlLiByZXYgMS4wICA2LzIvOTQKIwojIFdyaXR0ZW4gYnkgSmFtZXMgUm9za2luZAojIEJhc2VkIG9uIHByaW9yIHByb2ZpbGUgbW9kdWxlIGJ5IFNqb2VyZCBNdWxsZW5kZXIuLi4KIyAgIHdoaWNoIHdhcyBoYWNrZWQgc29tZXdoYXQgYnk6IEd1aWRvIHZhbiBSb3NzdW0KCiIiIkNsYXNzIGZvciBwcm9maWxpbmcgUHl0aG9uIGNvZGUuIiIiCgojIENvcHlyaWdodCBEaXNuZXkgRW50ZXJwcmlzZXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50CiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELAojIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZQojIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgoKaW1wb3J0IHN5cwppbXBvcnQgdGltZQppbXBvcnQgbWFyc2hhbAoKX19hbGxfXyA9IFsicnVuIiwgInJ1bmN0eCIsICJQcm9maWxlIl0KCiMgU2FtcGxlIHRpbWVyIGZvciB1c2Ugd2l0aAojaV9jb3VudCA9IDAKI2RlZiBpbnRlZ2VyX3RpbWVyKCk6CiMgICAgICAgZ2xvYmFsIGlfY291bnQKIyAgICAgICBpX2NvdW50ID0gaV9jb3VudCArIDEKIyAgICAgICByZXR1cm4gaV9jb3VudAojaXRpbWVzID0gaW50ZWdlcl90aW1lciAjIHJlcGxhY2Ugd2l0aCBDIGNvZGVkIHRpbWVyIHJldHVybmluZyBpbnRlZ2VycwoKY2xhc3MgX1V0aWxzOgogICAgIiIiU3VwcG9ydCBjbGFzcyBmb3IgdXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggYXJlIHNoYXJlZCBieQogICAgcHJvZmlsZS5weSBhbmQgY1Byb2ZpbGUucHkgbW9kdWxlcy4KICAgIE5vdCBzdXBwb3NlZCB0byBiZSB1c2VkIGRpcmVjdGx5LgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2ZpbGVyKToKICAgICAgICBzZWxmLnByb2ZpbGVyID0gcHJvZmlsZXIKCiAgICBkZWYgcnVuKHNlbGYsIHN0YXRlbWVudCwgZmlsZW5hbWUsIHNvcnQpOgogICAgICAgIHByb2YgPSBzZWxmLnByb2ZpbGVyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHByb2YucnVuKHN0YXRlbWVudCkKICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKICAgICAgICAgICAgcGFzcwogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX3Nob3cocHJvZiwgZmlsZW5hbWUsIHNvcnQpCgogICAgZGVmIHJ1bmN0eChzZWxmLCBzdGF0ZW1lbnQsIGdsb2JhbHMsIGxvY2FscywgZmlsZW5hbWUsIHNvcnQpOgogICAgICAgIHByb2YgPSBzZWxmLnByb2ZpbGVyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHByb2YucnVuY3R4KHN0YXRlbWVudCwgZ2xvYmFscywgbG9jYWxzKQogICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgogICAgICAgICAgICBwYXNzCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fc2hvdyhwcm9mLCBmaWxlbmFtZSwgc29ydCkKCiAgICBkZWYgX3Nob3coc2VsZiwgcHJvZiwgZmlsZW5hbWUsIHNvcnQpOgogICAgICAgIGlmIGZpbGVuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICBwcm9mLmR1bXBfc3RhdHMoZmlsZW5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJvZi5wcmludF9zdGF0cyhzb3J0KQoKCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyBmb3IgdGhlIHByb2ZpbGVyIGNsYXNzCiMgTm90ZSB0aGF0IGFuIGluc3RhbmNlIG9mIFByb2ZpbGUoKSBpcyAqbm90KiBuZWVkZWQgdG8gY2FsbCB0aGVtLgojKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCmRlZiBydW4oc3RhdGVtZW50LCBmaWxlbmFtZT1Ob25lLCBzb3J0PS0xKToKICAgICIiIlJ1biBzdGF0ZW1lbnQgdW5kZXIgcHJvZmlsZXIgb3B0aW9uYWxseSBzYXZpbmcgcmVzdWx0cyBpbiBmaWxlbmFtZQoKICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZQogICAgImV4ZWMiIHN0YXRlbWVudCwgYW5kIGFuIG9wdGlvbmFsIGZpbGUgbmFtZS4gIEluIGFsbCBjYXNlcyB0aGlzCiAgICByb3V0aW5lIGF0dGVtcHRzIHRvICJleGVjIiBpdHMgZmlyc3QgYXJndW1lbnQgYW5kIGdhdGhlciBwcm9maWxpbmcKICAgIHN0YXRpc3RpY3MgZnJvbSB0aGUgZXhlY3V0aW9uLiBJZiBubyBmaWxlIG5hbWUgaXMgcHJlc2VudCwgdGhlbiB0aGlzCiAgICBmdW5jdGlvbiBhdXRvbWF0aWNhbGx5IHByaW50cyBhIHNpbXBsZSBwcm9maWxpbmcgcmVwb3J0LCBzb3J0ZWQgYnkgdGhlCiAgICBzdGFuZGFyZCBuYW1lIHN0cmluZyAoZmlsZS9saW5lL2Z1bmN0aW9uLW5hbWUpIHRoYXQgaXMgcHJlc2VudGVkIGluCiAgICBlYWNoIGxpbmUuCiAgICAiIiIKICAgIHJldHVybiBfVXRpbHMoUHJvZmlsZSkucnVuKHN0YXRlbWVudCwgZmlsZW5hbWUsIHNvcnQpCgpkZWYgcnVuY3R4KHN0YXRlbWVudCwgZ2xvYmFscywgbG9jYWxzLCBmaWxlbmFtZT1Ob25lLCBzb3J0PS0xKToKICAgICIiIlJ1biBzdGF0ZW1lbnQgdW5kZXIgcHJvZmlsZXIsIHN1cHBseWluZyB5b3VyIG93biBnbG9iYWxzIGFuZCBsb2NhbHMsCiAgICBvcHRpb25hbGx5IHNhdmluZyByZXN1bHRzIGluIGZpbGVuYW1lLgoKICAgIHN0YXRlbWVudCBhbmQgZmlsZW5hbWUgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgcHJvZmlsZS5ydW4KICAgICIiIgogICAgcmV0dXJuIF9VdGlscyhQcm9maWxlKS5ydW5jdHgoc3RhdGVtZW50LCBnbG9iYWxzLCBsb2NhbHMsIGZpbGVuYW1lLCBzb3J0KQoKCmNsYXNzIFByb2ZpbGU6CiAgICAiIiJQcm9maWxlciBjbGFzcy4KCiAgICBzZWxmLmN1ciBpcyBhbHdheXMgYSB0dXBsZS4gIEVhY2ggc3VjaCB0dXBsZSBjb3JyZXNwb25kcyB0byBhIHN0YWNrCiAgICBmcmFtZSB0aGF0IGlzIGN1cnJlbnRseSBhY3RpdmUgKHNlbGYuY3VyWy0yXSkuICBUaGUgZm9sbG93aW5nIGFyZSB0aGUKICAgIGRlZmluaXRpb25zIG9mIGl0cyBtZW1iZXJzLiAgV2UgdXNlIHRoaXMgZXh0ZXJuYWwgInBhcmFsbGVsIHN0YWNrIiB0bwogICAgYXZvaWQgY29udGFtaW5hdGluZyB0aGUgcHJvZ3JhbSB0aGF0IHdlIGFyZSBwcm9maWxpbmcuIChvbGQgcHJvZmlsZXIKICAgIHVzZWQgdG8gd3JpdGUgaW50byB0aGUgZnJhbWVzIGxvY2FsIGRpY3Rpb25hcnkhISkgRGVyaXZlZCBjbGFzc2VzCiAgICBjYW4gY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIHNvbWUgZW50cmllcywgYXMgbG9uZyBhcyB0aGV5IGxlYXZlCiAgICBbLTI6XSBpbnRhY3QgKGZyYW1lIGFuZCBwcmV2aW91cyB0dXBsZSkuICBJbiBjYXNlIGFuIGludGVybmFsIGVycm9yIGlzCiAgICBkZXRlY3RlZCwgdGhlIC0zIGVsZW1lbnQgaXMgdXNlZCBhcyB0aGUgZnVuY3Rpb24gbmFtZS4KCiAgICBbIDBdID0gVGltZSB0aGF0IG5lZWRzIHRvIGJlIGNoYXJnZWQgdG8gdGhlIHBhcmVudCBmcmFtZSdzIGZ1bmN0aW9uLgogICAgICAgICAgIEl0IGlzIHVzZWQgc28gdGhhdCBhIGZ1bmN0aW9uIGNhbGwgd2lsbCBub3QgaGF2ZSB0byBhY2Nlc3MgdGhlCiAgICAgICAgICAgdGltaW5nIGRhdGEgZm9yIHRoZSBwYXJlbnQgZnJhbWUuCiAgICBbIDFdID0gVG90YWwgdGltZSBzcGVudCBpbiB0aGlzIGZyYW1lJ3MgZnVuY3Rpb24sIGV4Y2x1ZGluZyB0aW1lIGluCiAgICAgICAgICAgc3ViZnVuY3Rpb25zICh0aGlzIGxhdHRlciBpcyB0YWxsaWVkIGluIGN1clsyXSkuCiAgICBbIDJdID0gVG90YWwgdGltZSBzcGVudCBpbiBzdWJmdW5jdGlvbnMsIGV4Y2x1ZGluZyB0aW1lIGV4ZWN1dGluZyB0aGUKICAgICAgICAgICBmcmFtZSdzIGZ1bmN0aW9uICh0aGlzIGxhdHRlciBpcyB0YWxsaWVkIGluIGN1clsxXSkuCiAgICBbLTNdID0gTmFtZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIGZyYW1lLgogICAgWy0yXSA9IEFjdHVhbCBmcmFtZSB0aGF0IHdlIGNvcnJlc3BvbmQgdG8gKHVzZWQgdG8gc3luYyBleGNlcHRpb24gaGFuZGxpbmcpLgogICAgWy0xXSA9IE91ciBwYXJlbnQgNi10dXBsZSAoY29ycmVzcG9uZHMgdG8gZnJhbWUuZl9iYWNrKS4KCiAgICBUaW1pbmcgZGF0YSBmb3IgZWFjaCBmdW5jdGlvbiBpcyBzdG9yZWQgYXMgYSA1LXR1cGxlIGluIHRoZSBkaWN0aW9uYXJ5CiAgICBzZWxmLnRpbWluZ3NbXS4gIFRoZSBpbmRleCBpcyBhbHdheXMgdGhlIG5hbWUgc3RvcmVkIGluIHNlbGYuY3VyWy0zXS4KICAgIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUgbWVtYmVyczoKCiAgICBbMF0gPSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZCwgbm90IGNvdW50aW5nIGRpcmVjdAogICAgICAgICAgb3IgaW5kaXJlY3QgcmVjdXJzaW9uLAogICAgWzFdID0gTnVtYmVyIG9mIHRpbWVzIHRoaXMgZnVuY3Rpb24gYXBwZWFycyBvbiB0aGUgc3RhY2ssIG1pbnVzIG9uZQogICAgWzJdID0gVG90YWwgdGltZSBzcGVudCBpbnRlcm5hbCB0byB0aGlzIGZ1bmN0aW9uCiAgICBbM10gPSBDdW11bGF0aXZlIHRpbWUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdhcyBwcmVzZW50IG9uIHRoZSBzdGFjay4gIEluCiAgICAgICAgICBub24tcmVjdXJzaXZlIGZ1bmN0aW9ucywgdGhpcyBpcyB0aGUgdG90YWwgZXhlY3V0aW9uIHRpbWUgZnJvbSBzdGFydAogICAgICAgICAgdG8gZmluaXNoIG9mIGVhY2ggaW52b2NhdGlvbiBvZiBhIGZ1bmN0aW9uLCBpbmNsdWRpbmcgdGltZSBzcGVudCBpbgogICAgICAgICAgYWxsIHN1YmZ1bmN0aW9ucy4KICAgIFs0XSA9IEEgZGljdGlvbmFyeSBpbmRpY2F0aW5nIGZvciBlYWNoIGZ1bmN0aW9uIG5hbWUsIHRoZSBudW1iZXIgb2YgdGltZXMKICAgICAgICAgIGl0IHdhcyBjYWxsZWQgYnkgdXMuCiAgICAiIiIKCiAgICBiaWFzID0gMCAgIyBjYWxpYnJhdGlvbiBjb25zdGFudAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW1lcj1Ob25lLCBiaWFzPU5vbmUpOgogICAgICAgIHNlbGYudGltaW5ncyA9IHt9CiAgICAgICAgc2VsZi5jdXIgPSBOb25lCiAgICAgICAgc2VsZi5jbWQgPSAiIgogICAgICAgIHNlbGYuY19mdW5jX25hbWUgPSAiIgoKICAgICAgICBpZiBiaWFzIGlzIE5vbmU6CiAgICAgICAgICAgIGJpYXMgPSBzZWxmLmJpYXMKICAgICAgICBzZWxmLmJpYXMgPSBiaWFzICAgICAjIE1hdGVyaWFsaXplIGluIGxvY2FsIGRpY3QgZm9yIGxvb2t1cCBzcGVlZC4KCiAgICAgICAgaWYgbm90IHRpbWVyOgogICAgICAgICAgICBzZWxmLnRpbWVyID0gc2VsZi5nZXRfdGltZSA9IHRpbWUucHJvY2Vzc190aW1lCiAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2hfaQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYudGltZXIgPSB0aW1lcgogICAgICAgICAgICB0ID0gc2VsZi50aW1lcigpICMgdGVzdCBvdXQgdGltZXIgZnVuY3Rpb24KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuKHQpCiAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gdGltZXIKICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2hfaQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgbGVuZ3RoID09IDI6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaAogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoX2wKICAgICAgICAgICAgICAgICMgVGhpcyBnZXRfdGltZSgpIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGJlIGRlZmluZWQKICAgICAgICAgICAgICAgICMgaGVyZSB0byBjYXB0dXJlIHRoZSBwYXNzZWQtaW4gdGltZXIgaW4gdGhlIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgIyBsaXN0IChmb3IgcGVyZm9ybWFuY2UpLiAgTm90ZSB0aGF0IHdlIGNhbid0IGFzc3VtZQogICAgICAgICAgICAgICAgIyB0aGUgdGltZXIoKSByZXN1bHQgY29udGFpbnMgdHdvIHZhbHVlcyBpbiBhbGwKICAgICAgICAgICAgICAgICMgY2FzZXMuCiAgICAgICAgICAgICAgICBkZWYgZ2V0X3RpbWVfdGltZXIodGltZXI9dGltZXIsIHN1bT1zdW0pOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdW0odGltZXIoKSkKICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3RpbWUgPSBnZXRfdGltZV90aW1lcgogICAgICAgIHNlbGYudCA9IHNlbGYuZ2V0X3RpbWUoKQogICAgICAgIHNlbGYuc2ltdWxhdGVfY2FsbCgncHJvZmlsZXInKQoKICAgICMgSGVhdmlseSBvcHRpbWl6ZWQgZGlzcGF0Y2ggcm91dGluZSBmb3IgdGltZS5wcm9jZXNzX3RpbWUoKSB0aW1lcgoKICAgIGRlZiB0cmFjZV9kaXNwYXRjaChzZWxmLCBmcmFtZSwgZXZlbnQsIGFyZyk6CiAgICAgICAgdGltZXIgPSBzZWxmLnRpbWVyCiAgICAgICAgdCA9IHRpbWVyKCkKICAgICAgICB0ID0gdFswXSArIHRbMV0gLSBzZWxmLnQgLSBzZWxmLmJpYXMKCiAgICAgICAgaWYgZXZlbnQgPT0gImNfY2FsbCI6CiAgICAgICAgICAgIHNlbGYuY19mdW5jX25hbWUgPSBhcmcuX19uYW1lX18KCiAgICAgICAgaWYgc2VsZi5kaXNwYXRjaFtldmVudF0oc2VsZiwgZnJhbWUsdCk6CiAgICAgICAgICAgIHQgPSB0aW1lcigpCiAgICAgICAgICAgIHNlbGYudCA9IHRbMF0gKyB0WzFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgciA9IHRpbWVyKCkKICAgICAgICAgICAgc2VsZi50ID0gclswXSArIHJbMV0gLSB0ICMgcHV0IGJhY2sgdW5yZWNvcmRlZCBkZWx0YQoKICAgICMgRGlzcGF0Y2ggcm91dGluZSBmb3IgYmVzdCB0aW1lciBwcm9ncmFtIChyZXR1cm4gPSBzY2FsYXIsIGZhc3Rlc3QgaWYKICAgICMgYW4gaW50ZWdlciBidXQgZmxvYXQgd29ya3MgdG9vIC0tIGFuZCB0aW1lLnByb2Nlc3NfdGltZSgpIHJlbGllcyBvbiB0aGF0KS4KCiAgICBkZWYgdHJhY2VfZGlzcGF0Y2hfaShzZWxmLCBmcmFtZSwgZXZlbnQsIGFyZyk6CiAgICAgICAgdGltZXIgPSBzZWxmLnRpbWVyCiAgICAgICAgdCA9IHRpbWVyKCkgLSBzZWxmLnQgLSBzZWxmLmJpYXMKCiAgICAgICAgaWYgZXZlbnQgPT0gImNfY2FsbCI6CiAgICAgICAgICAgIHNlbGYuY19mdW5jX25hbWUgPSBhcmcuX19uYW1lX18KCiAgICAgICAgaWYgc2VsZi5kaXNwYXRjaFtldmVudF0oc2VsZiwgZnJhbWUsIHQpOgogICAgICAgICAgICBzZWxmLnQgPSB0aW1lcigpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi50ID0gdGltZXIoKSAtIHQgICMgcHV0IGJhY2sgdW5yZWNvcmRlZCBkZWx0YQoKICAgICMgRGlzcGF0Y2ggcm91dGluZSBmb3IgbWFjaW50b3NoICh0aW1lciByZXR1cm5zIHRpbWUgaW4gdGlja3Mgb2YKICAgICMgMS82MHRoIHNlY29uZCkKCiAgICBkZWYgdHJhY2VfZGlzcGF0Y2hfbWFjKHNlbGYsIGZyYW1lLCBldmVudCwgYXJnKToKICAgICAgICB0aW1lciA9IHNlbGYudGltZXIKICAgICAgICB0ID0gdGltZXIoKS82MC4wIC0gc2VsZi50IC0gc2VsZi5iaWFzCgogICAgICAgIGlmIGV2ZW50ID09ICJjX2NhbGwiOgogICAgICAgICAgICBzZWxmLmNfZnVuY19uYW1lID0gYXJnLl9fbmFtZV9fCgogICAgICAgIGlmIHNlbGYuZGlzcGF0Y2hbZXZlbnRdKHNlbGYsIGZyYW1lLCB0KToKICAgICAgICAgICAgc2VsZi50ID0gdGltZXIoKS82MC4wCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi50ID0gdGltZXIoKS82MC4wIC0gdCAgIyBwdXQgYmFjayB1bnJlY29yZGVkIGRlbHRhCgogICAgIyBTTE9XIGdlbmVyaWMgZGlzcGF0Y2ggcm91dGluZSBmb3IgdGltZXIgcmV0dXJuaW5nIGxpc3RzIG9mIG51bWJlcnMKCiAgICBkZWYgdHJhY2VfZGlzcGF0Y2hfbChzZWxmLCBmcmFtZSwgZXZlbnQsIGFyZyk6CiAgICAgICAgZ2V0X3RpbWUgPSBzZWxmLmdldF90aW1lCiAgICAgICAgdCA9IGdldF90aW1lKCkgLSBzZWxmLnQgLSBzZWxmLmJpYXMKCiAgICAgICAgaWYgZXZlbnQgPT0gImNfY2FsbCI6CiAgICAgICAgICAgIHNlbGYuY19mdW5jX25hbWUgPSBhcmcuX19uYW1lX18KCiAgICAgICAgaWYgc2VsZi5kaXNwYXRjaFtldmVudF0oc2VsZiwgZnJhbWUsIHQpOgogICAgICAgICAgICBzZWxmLnQgPSBnZXRfdGltZSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi50ID0gZ2V0X3RpbWUoKSAtIHQgIyBwdXQgYmFjayB1bnJlY29yZGVkIGRlbHRhCgogICAgIyBJbiB0aGUgZXZlbnQgaGFuZGxlcnMsIHRoZSBmaXJzdCAzIGVsZW1lbnRzIG9mIHNlbGYuY3VyIGFyZSB1bnBhY2tlZAogICAgIyBpbnRvIHZyYmxzIHcvIDMtbGV0dGVyIG5hbWVzLiAgVGhlIGxhc3QgdHdvIGNoYXJhY3RlcnMgYXJlIG1lYW50IHRvIGJlCiAgICAjIG1uZW1vbmljOgogICAgIyAgICAgX3B0ICBzZWxmLmN1clswXSAicGFyZW50IHRpbWUiICAgdGltZSB0byBiZSBjaGFyZ2VkIHRvIHBhcmVudCBmcmFtZQogICAgIyAgICAgX2l0ICBzZWxmLmN1clsxXSAiaW50ZXJuYWwgdGltZSIgdGltZSBzcGVudCBkaXJlY3RseSBpbiB0aGUgZnVuY3Rpb24KICAgICMgICAgIF9ldCAgc2VsZi5jdXJbMl0gImV4dGVybmFsIHRpbWUiIHRpbWUgc3BlbnQgaW4gc3ViZnVuY3Rpb25zCgogICAgZGVmIHRyYWNlX2Rpc3BhdGNoX2V4Y2VwdGlvbihzZWxmLCBmcmFtZSwgdCk6CiAgICAgICAgcnB0LCByaXQsIHJldCwgcmZuLCByZnJhbWUsIHJjdXIgPSBzZWxmLmN1cgogICAgICAgIGlmIChyZnJhbWUgaXMgbm90IGZyYW1lKSBhbmQgcmN1cjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYudHJhY2VfZGlzcGF0Y2hfcmV0dXJuKHJmcmFtZSwgdCkKICAgICAgICBzZWxmLmN1ciA9IHJwdCwgcml0K3QsIHJldCwgcmZuLCByZnJhbWUsIHJjdXIKICAgICAgICByZXR1cm4gMQoKCiAgICBkZWYgdHJhY2VfZGlzcGF0Y2hfY2FsbChzZWxmLCBmcmFtZSwgdCk6CiAgICAgICAgaWYgc2VsZi5jdXIgYW5kIGZyYW1lLmZfYmFjayBpcyBub3Qgc2VsZi5jdXJbLTJdOgogICAgICAgICAgICBycHQsIHJpdCwgcmV0LCByZm4sIHJmcmFtZSwgcmN1ciA9IHNlbGYuY3VyCiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHJmcmFtZSwgUHJvZmlsZS5mYWtlX2ZyYW1lKToKICAgICAgICAgICAgICAgIGFzc2VydCByZnJhbWUuZl9iYWNrIGlzIGZyYW1lLmZfYmFjaywgKCJCYWQgY2FsbCIsIHJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJmcmFtZSwgcmZyYW1lLmZfYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLCBmcmFtZS5mX2JhY2spCiAgICAgICAgICAgICAgICBzZWxmLnRyYWNlX2Rpc3BhdGNoX3JldHVybihyZnJhbWUsIDApCiAgICAgICAgICAgICAgICBhc3NlcnQgKHNlbGYuY3VyIGlzIE5vbmUgb3IgXAogICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5mX2JhY2sgaXMgc2VsZi5jdXJbLTJdKSwgKCJCYWQgY2FsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJbLTNdKQogICAgICAgIGZjb2RlID0gZnJhbWUuZl9jb2RlCiAgICAgICAgZm4gPSAoZmNvZGUuY29fZmlsZW5hbWUsIGZjb2RlLmNvX2ZpcnN0bGluZW5vLCBmY29kZS5jb19uYW1lKQogICAgICAgIHNlbGYuY3VyID0gKHQsIDAsIDAsIGZuLCBmcmFtZSwgc2VsZi5jdXIpCiAgICAgICAgdGltaW5ncyA9IHNlbGYudGltaW5ncwogICAgICAgIGlmIGZuIGluIHRpbWluZ3M6CiAgICAgICAgICAgIGNjLCBucywgdHQsIGN0LCBjYWxsZXJzID0gdGltaW5nc1tmbl0KICAgICAgICAgICAgdGltaW5nc1tmbl0gPSBjYywgbnMgKyAxLCB0dCwgY3QsIGNhbGxlcnMKICAgICAgICBlbHNlOgogICAgICAgICAgICB0aW1pbmdzW2ZuXSA9IDAsIDAsIDAsIDAsIHt9CiAgICAgICAgcmV0dXJuIDEKCiAgICBkZWYgdHJhY2VfZGlzcGF0Y2hfY19jYWxsIChzZWxmLCBmcmFtZSwgdCk6CiAgICAgICAgZm4gPSAoIiIsIDAsIHNlbGYuY19mdW5jX25hbWUpCiAgICAgICAgc2VsZi5jdXIgPSAodCwgMCwgMCwgZm4sIGZyYW1lLCBzZWxmLmN1cikKICAgICAgICB0aW1pbmdzID0gc2VsZi50aW1pbmdzCiAgICAgICAgaWYgZm4gaW4gdGltaW5nczoKICAgICAgICAgICAgY2MsIG5zLCB0dCwgY3QsIGNhbGxlcnMgPSB0aW1pbmdzW2ZuXQogICAgICAgICAgICB0aW1pbmdzW2ZuXSA9IGNjLCBucysxLCB0dCwgY3QsIGNhbGxlcnMKICAgICAgICBlbHNlOgogICAgICAgICAgICB0aW1pbmdzW2ZuXSA9IDAsIDAsIDAsIDAsIHt9CiAgICAgICAgcmV0dXJuIDEKCiAgICBkZWYgdHJhY2VfZGlzcGF0Y2hfcmV0dXJuKHNlbGYsIGZyYW1lLCB0KToKICAgICAgICBpZiBmcmFtZSBpcyBub3Qgc2VsZi5jdXJbLTJdOgogICAgICAgICAgICBhc3NlcnQgZnJhbWUgaXMgc2VsZi5jdXJbLTJdLmZfYmFjaywgKCJCYWQgcmV0dXJuIiwgc2VsZi5jdXJbLTNdKQogICAgICAgICAgICBzZWxmLnRyYWNlX2Rpc3BhdGNoX3JldHVybihzZWxmLmN1clstMl0sIDApCgogICAgICAgICMgUHJlZml4ICJyIiBtZWFucyBwYXJ0IG9mIHRoZSBSZXR1cm5pbmcgb3IgZXhpdGluZyBmcmFtZS4KICAgICAgICAjIFByZWZpeCAicCIgbWVhbnMgcGFydCBvZiB0aGUgUHJldmlvdXMgb3IgUGFyZW50IG9yIG9sZGVyIGZyYW1lLgoKICAgICAgICBycHQsIHJpdCwgcmV0LCByZm4sIGZyYW1lLCByY3VyID0gc2VsZi5jdXIKICAgICAgICByaXQgPSByaXQgKyB0CiAgICAgICAgZnJhbWVfdG90YWwgPSByaXQgKyByZXQKCiAgICAgICAgcHB0LCBwaXQsIHBldCwgcGZuLCBwZnJhbWUsIHBjdXIgPSByY3VyCiAgICAgICAgc2VsZi5jdXIgPSBwcHQsIHBpdCArIHJwdCwgcGV0ICsgZnJhbWVfdG90YWwsIHBmbiwgcGZyYW1lLCBwY3VyCgogICAgICAgIHRpbWluZ3MgPSBzZWxmLnRpbWluZ3MKICAgICAgICBjYywgbnMsIHR0LCBjdCwgY2FsbGVycyA9IHRpbWluZ3NbcmZuXQogICAgICAgIGlmIG5vdCBuczoKICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBvbmx5IG9jY3VycmVuY2Ugb2YgdGhlIGZ1bmN0aW9uIG9uIHRoZSBzdGFjay4KICAgICAgICAgICAgIyBFbHNlIHRoaXMgaXMgYSAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgcmVjdXJzaXZlIGNhbGwsIGFuZAogICAgICAgICAgICAjIGl0cyBjdW11bGF0aXZlIHRpbWUgd2lsbCBnZXQgdXBkYXRlZCB3aGVuIHRoZSB0b3Btb3N0IGNhbGwgdG8KICAgICAgICAgICAgIyBpdCByZXR1cm5zLgogICAgICAgICAgICBjdCA9IGN0ICsgZnJhbWVfdG90YWwKICAgICAgICAgICAgY2MgPSBjYyArIDEKCiAgICAgICAgaWYgcGZuIGluIGNhbGxlcnM6CiAgICAgICAgICAgIGNhbGxlcnNbcGZuXSA9IGNhbGxlcnNbcGZuXSArIDEgICMgaGFjazogZ2F0aGVyIG1vcmUKICAgICAgICAgICAgIyBzdGF0cyBzdWNoIGFzIHRoZSBhbW91bnQgb2YgdGltZSBhZGRlZCB0byBjdCBjb3VydGVzeQogICAgICAgICAgICAjIG9mIHRoaXMgc3BlY2lmaWMgY2FsbCwgYW5kIHRoZSBjb250cmlidXRpb24gdG8gY2MKICAgICAgICAgICAgIyBjb3VydGVzeSBvZiB0aGlzIGNhbGwuCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY2FsbGVyc1twZm5dID0gMQoKICAgICAgICB0aW1pbmdzW3Jmbl0gPSBjYywgbnMgLSAxLCB0dCArIHJpdCwgY3QsIGNhbGxlcnMKCiAgICAgICAgcmV0dXJuIDEKCgogICAgZGlzcGF0Y2ggPSB7CiAgICAgICAgImNhbGwiOiB0cmFjZV9kaXNwYXRjaF9jYWxsLAogICAgICAgICJleGNlcHRpb24iOiB0cmFjZV9kaXNwYXRjaF9leGNlcHRpb24sCiAgICAgICAgInJldHVybiI6IHRyYWNlX2Rpc3BhdGNoX3JldHVybiwKICAgICAgICAiY19jYWxsIjogdHJhY2VfZGlzcGF0Y2hfY19jYWxsLAogICAgICAgICJjX2V4Y2VwdGlvbiI6IHRyYWNlX2Rpc3BhdGNoX3JldHVybiwgICMgdGhlIEMgZnVuY3Rpb24gcmV0dXJuZWQKICAgICAgICAiY19yZXR1cm4iOiB0cmFjZV9kaXNwYXRjaF9yZXR1cm4sCiAgICAgICAgfQoKCiAgICAjIFRoZSBuZXh0IGZldyBmdW5jdGlvbnMgcGxheSB3aXRoIHNlbGYuY21kLiBCeSBjYXJlZnVsbHkgcHJlbG9hZGluZwogICAgIyBvdXIgcGFyYWxsZWwgc3RhY2ssIHdlIGNhbiBmb3JjZSB0aGUgcHJvZmlsZWQgcmVzdWx0IHRvIGluY2x1ZGUKICAgICMgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbi4KICAgICMgV2UgdXNlIHNlbGYuY21kIGFzIHRoYXQgc3RyaW5nLCBhbmQgdGhlIHJlc3VsdGluZyBzdGF0cyBsb29rCiAgICAjIHZlcnkgbmljZSA6LSkuCgogICAgZGVmIHNldF9jbWQoc2VsZiwgY21kKToKICAgICAgICBpZiBzZWxmLmN1clstMV06IHJldHVybiAgICMgYWxyZWFkeSBzZXQKICAgICAgICBzZWxmLmNtZCA9IGNtZAogICAgICAgIHNlbGYuc2ltdWxhdGVfY2FsbChjbWQpCgogICAgY2xhc3MgZmFrZV9jb2RlOgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbGluZSwgbmFtZSk6CiAgICAgICAgICAgIHNlbGYuY29fZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICAgICAgICBzZWxmLmNvX2xpbmUgPSBsaW5lCiAgICAgICAgICAgIHNlbGYuY29fbmFtZSA9IG5hbWUKICAgICAgICAgICAgc2VsZi5jb19maXJzdGxpbmVubyA9IDAKCiAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gcmVwcigoc2VsZi5jb19maWxlbmFtZSwgc2VsZi5jb19saW5lLCBzZWxmLmNvX25hbWUpKQoKICAgIGNsYXNzIGZha2VfZnJhbWU6CiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGUsIHByaW9yKToKICAgICAgICAgICAgc2VsZi5mX2NvZGUgPSBjb2RlCiAgICAgICAgICAgIHNlbGYuZl9iYWNrID0gcHJpb3IKCiAgICBkZWYgc2ltdWxhdGVfY2FsbChzZWxmLCBuYW1lKToKICAgICAgICBjb2RlID0gc2VsZi5mYWtlX2NvZGUoJ3Byb2ZpbGUnLCAwLCBuYW1lKQogICAgICAgIGlmIHNlbGYuY3VyOgogICAgICAgICAgICBwZnJhbWUgPSBzZWxmLmN1clstMl0KICAgICAgICBlbHNlOgogICAgICAgICAgICBwZnJhbWUgPSBOb25lCiAgICAgICAgZnJhbWUgPSBzZWxmLmZha2VfZnJhbWUoY29kZSwgcGZyYW1lKQogICAgICAgIHNlbGYuZGlzcGF0Y2hbJ2NhbGwnXShzZWxmLCBmcmFtZSwgMCkKCiAgICAjIGNvbGxlY3Qgc3RhdHMgZnJvbSBwZW5kaW5nIHN0YWNrLCBpbmNsdWRpbmcgZ2V0dGluZyBmaW5hbAogICAgIyB0aW1pbmdzIGZvciBzZWxmLmNtZCBmcmFtZS4KCiAgICBkZWYgc2ltdWxhdGVfY21kX2NvbXBsZXRlKHNlbGYpOgogICAgICAgIGdldF90aW1lID0gc2VsZi5nZXRfdGltZQogICAgICAgIHQgPSBnZXRfdGltZSgpIC0gc2VsZi50CiAgICAgICAgd2hpbGUgc2VsZi5jdXJbLTFdOgogICAgICAgICAgICAjIFdlICpjYW4qIGNhdXNlIGFzc2VydGlvbiBlcnJvcnMgaGVyZSBpZgogICAgICAgICAgICAjIGRpc3BhdGNoX3RyYWNlX3JldHVybiBjaGVja3MgZm9yIGEgZnJhbWUgbWF0Y2ghCiAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hbJ3JldHVybiddKHNlbGYsIHNlbGYuY3VyWy0yXSwgdCkKICAgICAgICAgICAgdCA9IDAKICAgICAgICBzZWxmLnQgPSBnZXRfdGltZSgpIC0gdAoKCiAgICBkZWYgcHJpbnRfc3RhdHMoc2VsZiwgc29ydD0tMSk6CiAgICAgICAgaW1wb3J0IHBzdGF0cwogICAgICAgIHBzdGF0cy5TdGF0cyhzZWxmKS5zdHJpcF9kaXJzKCkuc29ydF9zdGF0cyhzb3J0KS4gXAogICAgICAgICAgICAgICAgICBwcmludF9zdGF0cygpCgogICAgZGVmIGR1bXBfc3RhdHMoc2VsZiwgZmlsZSk6CiAgICAgICAgd2l0aCBvcGVuKGZpbGUsICd3YicpIGFzIGY6CiAgICAgICAgICAgIHNlbGYuY3JlYXRlX3N0YXRzKCkKICAgICAgICAgICAgbWFyc2hhbC5kdW1wKHNlbGYuc3RhdHMsIGYpCgogICAgZGVmIGNyZWF0ZV9zdGF0cyhzZWxmKToKICAgICAgICBzZWxmLnNpbXVsYXRlX2NtZF9jb21wbGV0ZSgpCiAgICAgICAgc2VsZi5zbmFwc2hvdF9zdGF0cygpCgogICAgZGVmIHNuYXBzaG90X3N0YXRzKHNlbGYpOgogICAgICAgIHNlbGYuc3RhdHMgPSB7fQogICAgICAgIGZvciBmdW5jLCAoY2MsIG5zLCB0dCwgY3QsIGNhbGxlcnMpIGluIHNlbGYudGltaW5ncy5pdGVtcygpOgogICAgICAgICAgICBjYWxsZXJzID0gY2FsbGVycy5jb3B5KCkKICAgICAgICAgICAgbmMgPSAwCiAgICAgICAgICAgIGZvciBjYWxsY250IGluIGNhbGxlcnMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICBuYyArPSBjYWxsY250CiAgICAgICAgICAgIHNlbGYuc3RhdHNbZnVuY10gPSBjYywgbmMsIHR0LCBjdCwgY2FsbGVycwoKCiAgICAjIFRoZSBmb2xsb3dpbmcgdHdvIG1ldGhvZHMgY2FuIGJlIGNhbGxlZCBieSBjbGllbnRzIHRvIHVzZQogICAgIyBhIHByb2ZpbGVyIHRvIHByb2ZpbGUgYSBzdGF0ZW1lbnQsIGdpdmVuIGFzIGEgc3RyaW5nLgoKICAgIGRlZiBydW4oc2VsZiwgY21kKToKICAgICAgICBpbXBvcnQgX19tYWluX18KICAgICAgICBkaWN0ID0gX19tYWluX18uX19kaWN0X18KICAgICAgICByZXR1cm4gc2VsZi5ydW5jdHgoY21kLCBkaWN0LCBkaWN0KQoKICAgIGRlZiBydW5jdHgoc2VsZiwgY21kLCBnbG9iYWxzLCBsb2NhbHMpOgogICAgICAgIHNlbGYuc2V0X2NtZChjbWQpCiAgICAgICAgc3lzLnNldHByb2ZpbGUoc2VsZi5kaXNwYXRjaGVyKQogICAgICAgIHRyeToKICAgICAgICAgICAgZXhlYyhjbWQsIGdsb2JhbHMsIGxvY2FscykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzeXMuc2V0cHJvZmlsZShOb25lKQogICAgICAgIHJldHVybiBzZWxmCgogICAgIyBUaGlzIG1ldGhvZCBpcyBtb3JlIHVzZWZ1bCB0byBwcm9maWxlIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuCiAgICBkZWYgcnVuY2FsbChzZWxmLCBmdW5jLCAvLCAqYXJncywgKiprdyk6CiAgICAgICAgc2VsZi5zZXRfY21kKHJlcHIoZnVuYykpCiAgICAgICAgc3lzLnNldHByb2ZpbGUoc2VsZi5kaXNwYXRjaGVyKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3cpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc3lzLnNldHByb2ZpbGUoTm9uZSkKCgogICAgIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgIyBUaGUgZm9sbG93aW5nIGNhbGN1bGF0ZXMgdGhlIG92ZXJoZWFkIGZvciB1c2luZyBhIHByb2ZpbGVyLiAgVGhlCiAgICAjIHByb2JsZW0gaXMgdGhhdCBpdCB0YWtlcyBhIGZhaXIgYW1vdW50IG9mIHRpbWUgZm9yIHRoZSBwcm9maWxlcgogICAgIyB0byBzdG9wIHRoZSBzdG9wd2F0Y2ggKGZyb20gdGhlIHRpbWUgaXQgcmVjZWl2ZXMgYW4gZXZlbnQpLgogICAgIyBTaW1pbGFybHksIHRoZXJlIGlzIGEgZGVsYXkgZnJvbSB0aGUgdGltZSB0aGF0IHRoZSBwcm9maWxlcgogICAgIyByZS1zdGFydHMgdGhlIHN0b3B3YXRjaCBiZWZvcmUgdGhlIHVzZXIncyBjb2RlIHJlYWxseSBnZXRzIHRvCiAgICAjIGNvbnRpbnVlLiAgVGhlIGZvbGxvd2luZyBjb2RlIHRyaWVzIHRvIG1lYXN1cmUgdGhlIGRpZmZlcmVuY2Ugb24KICAgICMgYSBwZXItZXZlbnQgYmFzaXMuCiAgICAjCiAgICAjIE5vdGUgdGhhdCB0aGlzIGRpZmZlcmVuY2UgaXMgb25seSBzaWduaWZpY2FudCBpZiB0aGVyZSBhcmUgYSBsb3Qgb2YKICAgICMgZXZlbnRzLCBhbmQgcmVsYXRpdmVseSBsaXR0bGUgdXNlciBjb2RlIHBlciBldmVudC4gIEZvciBleGFtcGxlLAogICAgIyBjb2RlIHdpdGggc21hbGwgZnVuY3Rpb25zIHdpbGwgdHlwaWNhbGx5IGJlbmVmaXQgZnJvbSBoYXZpbmcgdGhlCiAgICAjIHByb2ZpbGVyIGNhbGlicmF0ZWQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLiAgVGhpcyAqY291bGQqIGJlCiAgICAjIGRvbmUgb24gdGhlIGZseSBkdXJpbmcgaW5pdCgpIHRpbWUsIGJ1dCBpdCBpcyBub3Qgd29ydGggdGhlCiAgICAjIGVmZm9ydC4gIEFsc28gbm90ZSB0aGF0IGlmIHRvbyBsYXJnZSBhIHZhbHVlIHNwZWNpZmllZCwgdGhlbgogICAgIyBleGVjdXRpb24gdGltZSBvbiBzb21lIGZ1bmN0aW9ucyB3aWxsIGFjdHVhbGx5IGFwcGVhciBhcyBhCiAgICAjIG5lZ2F0aXZlIG51bWJlci4gIEl0IGlzICpub3JtYWwqIGZvciBzb21lIGZ1bmN0aW9ucyAod2l0aCB2ZXJ5CiAgICAjIGxvdyBjYWxsIGNvdW50cykgdG8gaGF2ZSBzdWNoIG5lZ2F0aXZlIHN0YXRzLCBldmVuIGlmIHRoZQogICAgIyBjYWxpYnJhdGlvbiBmaWd1cmUgaXMgImNvcnJlY3QuIgogICAgIwogICAgIyBPbmUgYWx0ZXJuYXRpdmUgdG8gcHJvZmlsZS10aW1lIGNhbGlicmF0aW9uIGFkanVzdG1lbnRzIChpLmUuLAogICAgIyBhZGRpbmcgaW4gdGhlIG1hZ2ljIGxpdHRsZSBkZWx0YSBkdXJpbmcgZWFjaCBldmVudCkgaXMgdG8gdHJhY2sKICAgICMgbW9yZSBjYXJlZnVsbHkgdGhlIG51bWJlciBvZiBldmVudHMgKGFuZCBjdW11bGF0aXZlbHksIHRoZSBudW1iZXIKICAgICMgb2YgZXZlbnRzIGR1cmluZyBzdWIgZnVuY3Rpb25zKSB0aGF0IGFyZSBzZWVuLiAgSWYgdGhpcyB3ZXJlCiAgICAjIGRvbmUsIHRoZW4gdGhlIGFyaXRobWV0aWMgY291bGQgYmUgZG9uZSBhZnRlciB0aGUgZmFjdCAoaS5lLiwgYXQKICAgICMgZGlzcGxheSB0aW1lKS4gIEN1cnJlbnRseSwgd2UgdHJhY2sgb25seSBjYWxsL3JldHVybiBldmVudHMuCiAgICAjIFRoZXNlIHZhbHVlcyBjYW4gYmUgZGVkdWNlZCBieSBleGFtaW5pbmcgdGhlIGNhbGxlZXMgYW5kIGNhbGxlcnMKICAgICMgdmVjdG9ycyBmb3IgZWFjaCBmdW5jdGlvbnMuICBIZW5jZSB3ZSAqY2FuKiBhbG1vc3QgY29ycmVjdCB0aGUKICAgICMgaW50ZXJuYWwgdGltZSBmaWd1cmUgYXQgcHJpbnQgdGltZSAobm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkb24ndAogICAgIyB0cmFjayBleGNlcHRpb24gZXZlbnQgcHJvY2Vzc2luZyBjb3VudHMpLiAgVW5mb3J0dW5hdGVseSwgdGhlcmUKICAgICMgaXMgY3VycmVudGx5IG5vIHNpbWlsYXIgaW5mb3JtYXRpb24gZm9yIGN1bXVsYXRpdmUgc3ViLWZ1bmN0aW9uCiAgICAjIHRpbWUuICBJdCB3b3VsZCBub3QgYmUgaGFyZCB0byAiZ2V0IGFsbCB0aGlzIGluZm8iIGF0IHByb2ZpbGVyCiAgICAjIHRpbWUuICBTcGVjaWZpY2FsbHksIHdlIHdvdWxkIGhhdmUgdG8gZXh0ZW5kIHRoZSB0dXBsZXMgdG8ga2VlcAogICAgIyBjb3VudHMgb2YgdGhpcyBpbiBlYWNoIGZyYW1lLCBhbmQgdGhlbiBleHRlbmQgdGhlIGRlZnMgb2YgdGltaW5nCiAgICAjIHR1cGxlcyB0byBpbmNsdWRlIHRoZSBzaWduaWZpY2FudCB0d28gZmlndXJlcy4gSSdtIGEgYml0IGZlYXJmdWwKICAgICMgdGhhdCB0aGlzIGFkZGl0aW9uYWwgZmVhdHVyZSB3aWxsIHNsb3cgdGhlIGhlYXZpbHkgb3B0aW1pemVkCiAgICAjIGV2ZW50L3RpbWUgcmF0aW8gKGkuZS4sIHRoZSBwcm9maWxlciB3b3VsZCBydW4gc2xvd2VyLCBmdXIgYSB2ZXJ5CiAgICAjIGxvdyAidmFsdWUgYWRkZWQiIGZlYXR1cmUuKQogICAgIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgogICAgZGVmIGNhbGlicmF0ZShzZWxmLCBtLCB2ZXJib3NlPTApOgogICAgICAgIGlmIHNlbGYuX19jbGFzc19fIGlzIG5vdCBQcm9maWxlOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlN1YmNsYXNzZXMgbXVzdCBvdmVycmlkZSAuY2FsaWJyYXRlKCkuIikKCiAgICAgICAgc2F2ZWRfYmlhcyA9IHNlbGYuYmlhcwogICAgICAgIHNlbGYuYmlhcyA9IDAKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxpYnJhdGVfaW5uZXIobSwgdmVyYm9zZSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLmJpYXMgPSBzYXZlZF9iaWFzCgogICAgZGVmIF9jYWxpYnJhdGVfaW5uZXIoc2VsZiwgbSwgdmVyYm9zZSk6CiAgICAgICAgZ2V0X3RpbWUgPSBzZWxmLmdldF90aW1lCgogICAgICAgICMgU2V0IHVwIGEgdGVzdCBjYXNlIHRvIGJlIHJ1biB3aXRoIGFuZCB3aXRob3V0IHByb2ZpbGluZy4gIEluY2x1ZGUKICAgICAgICAjIGxvdHMgb2YgY2FsbHMsIGJlY2F1c2Ugd2UncmUgdHJ5aW5nIHRvIHF1YW50aWZ5IHN0b3B3YXRjaCBvdmVyaGVhZC4KICAgICAgICAjIERvIG5vdCByYWlzZSBhbnkgZXhjZXB0aW9ucywgdGhvdWdoLCBiZWNhdXNlIHdlIHdhbnQgdG8ga25vdwogICAgICAgICMgZXhhY3RseSBob3cgbWFueSBwcm9maWxlIGV2ZW50cyBhcmUgZ2VuZXJhdGVkIChvbmUgY2FsbCBldmVudCwgKwogICAgICAgICMgb25lIHJldHVybiBldmVudCwgcGVyIFB5dGhvbi1sZXZlbCBjYWxsKS4KCiAgICAgICAgZGVmIGYxKG4pOgogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKICAgICAgICAgICAgICAgIHggPSAxCgogICAgICAgIGRlZiBmKG0sIGYxPWYxKToKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobSk6CiAgICAgICAgICAgICAgICBmMSgxMDApCgogICAgICAgIGYobSkgICAgIyB3YXJtIHVwIHRoZSBjYWNoZQoKICAgICAgICAjIGVsYXBzZWRfbm9wcm9maWxlIDwtIHRpbWUgZihtKSB0YWtlcyB3aXRob3V0IHByb2ZpbGluZy4KICAgICAgICB0MCA9IGdldF90aW1lKCkKICAgICAgICBmKG0pCiAgICAgICAgdDEgPSBnZXRfdGltZSgpCiAgICAgICAgZWxhcHNlZF9ub3Byb2ZpbGUgPSB0MSAtIHQwCiAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgcHJpbnQoImVsYXBzZWQgdGltZSB3aXRob3V0IHByb2ZpbGluZyA9IiwgZWxhcHNlZF9ub3Byb2ZpbGUpCgogICAgICAgICMgZWxhcHNlZF9wcm9maWxlIDwtIHRpbWUgZihtKSB0YWtlcyB3aXRoIHByb2ZpbGluZy4gIFRoZSBkaWZmZXJlbmNlCiAgICAgICAgIyBpcyBwcm9maWxpbmcgb3ZlcmhlYWQsIG9ubHkgc29tZSBvZiB3aGljaCB0aGUgcHJvZmlsZXIgc3VidHJhY3RzCiAgICAgICAgIyBvdXQgb24gaXRzIG93bi4KICAgICAgICBwID0gUHJvZmlsZSgpCiAgICAgICAgdDAgPSBnZXRfdGltZSgpCiAgICAgICAgcC5ydW5jdHgoJ2YobSknLCBnbG9iYWxzKCksIGxvY2FscygpKQogICAgICAgIHQxID0gZ2V0X3RpbWUoKQogICAgICAgIGVsYXBzZWRfcHJvZmlsZSA9IHQxIC0gdDAKICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICBwcmludCgiZWxhcHNlZCB0aW1lIHdpdGggcHJvZmlsaW5nID0iLCBlbGFwc2VkX3Byb2ZpbGUpCgogICAgICAgICMgcmVwb3J0ZWRfdGltZSA8LSAiQ1BVIHNlY29uZHMiIHRoZSBwcm9maWxlciBjaGFyZ2VkIHRvIGYgYW5kIGYxLgogICAgICAgIHRvdGFsX2NhbGxzID0gMC4wCiAgICAgICAgcmVwb3J0ZWRfdGltZSA9IDAuMAogICAgICAgIGZvciAoZmlsZW5hbWUsIGxpbmUsIGZ1bmNuYW1lKSwgKGNjLCBucywgdHQsIGN0LCBjYWxsZXJzKSBpbiBcCiAgICAgICAgICAgICAgICBwLnRpbWluZ3MuaXRlbXMoKToKICAgICAgICAgICAgaWYgZnVuY25hbWUgaW4gKCJmIiwgImYxIik6CiAgICAgICAgICAgICAgICB0b3RhbF9jYWxscyArPSBjYwogICAgICAgICAgICAgICAgcmVwb3J0ZWRfdGltZSArPSB0dAoKICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICBwcmludCgiJ0NQVSBzZWNvbmRzJyBwcm9maWxlciByZXBvcnRlZCA9IiwgcmVwb3J0ZWRfdGltZSkKICAgICAgICAgICAgcHJpbnQoInRvdGFsICMgY2FsbHMgPSIsIHRvdGFsX2NhbGxzKQogICAgICAgIGlmIHRvdGFsX2NhbGxzICE9IG0gKyAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnRlcm5hbCBlcnJvcjogdG90YWwgY2FsbHMgPSAlZCIgJSB0b3RhbF9jYWxscykKCiAgICAgICAgIyByZXBvcnRlZF90aW1lIC0gZWxhcHNlZF9ub3Byb2ZpbGUgPSBvdmVyaGVhZCB0aGUgcHJvZmlsZXIgd2Fzbid0CiAgICAgICAgIyBhYmxlIHRvIG1lYXN1cmUuICBEaXZpZGUgYnkgdHdpY2UgdGhlIG51bWJlciBvZiBjYWxscyAoc2luY2UgdGhlcmUKICAgICAgICAjIGFyZSB0d28gcHJvZmlsZXIgZXZlbnRzIHBlciBjYWxsIGluIHRoaXMgdGVzdCkgdG8gZ2V0IHRoZSBoaWRkZW4KICAgICAgICAjIG92ZXJoZWFkIHBlciBldmVudC4KICAgICAgICBtZWFuID0gKHJlcG9ydGVkX3RpbWUgLSBlbGFwc2VkX25vcHJvZmlsZSkgLyAyLjAgLyB0b3RhbF9jYWxscwogICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgIHByaW50KCJtZWFuIHN0b3B3YXRjaCBvdmVyaGVhZCBwZXIgcHJvZmlsZSBldmVudCA9IiwgbWVhbikKICAgICAgICByZXR1cm4gbWVhbgoKIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCmRlZiBtYWluKCk6CiAgICBpbXBvcnQgb3MKICAgIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgoKICAgIHVzYWdlID0gInByb2ZpbGUucHkgWy1vIG91dHB1dF9maWxlX3BhdGhdIFstcyBzb3J0XSBbLW0gbW9kdWxlIHwgc2NyaXB0ZmlsZV0gW2FyZ10gLi4uIgogICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKHVzYWdlPXVzYWdlKQogICAgcGFyc2VyLmFsbG93X2ludGVyc3BlcnNlZF9hcmdzID0gRmFsc2UKICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbycsICctLW91dGZpbGUnLCBkZXN0PSJvdXRmaWxlIiwKICAgICAgICBoZWxwPSJTYXZlIHN0YXRzIHRvIDxvdXRmaWxlPiIsIGRlZmF1bHQ9Tm9uZSkKICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsIGRlc3Q9Im1vZHVsZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgaGVscD0iUHJvZmlsZSBhIGxpYnJhcnkgbW9kdWxlLiIsIGRlZmF1bHQ9RmFsc2UpCiAgICBwYXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1zb3J0JywgZGVzdD0ic29ydCIsCiAgICAgICAgaGVscD0iU29ydCBvcmRlciB3aGVuIHByaW50aW5nIHRvIHN0ZG91dCwgYmFzZWQgb24gcHN0YXRzLlN0YXRzIGNsYXNzIiwKICAgICAgICBkZWZhdWx0PS0xKQoKICAgIGlmIG5vdCBzeXMuYXJndlsxOl06CiAgICAgICAgcGFyc2VyLnByaW50X3VzYWdlKCkKICAgICAgICBzeXMuZXhpdCgyKQoKICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIHN5cy5hcmd2WzpdID0gYXJncwoKICAgICMgVGhlIHNjcmlwdCB0aGF0IHdlJ3JlIHByb2ZpbGluZyBtYXkgY2hkaXIsIHNvIGNhcHR1cmUgdGhlIGFic29sdXRlIHBhdGgKICAgICMgdG8gdGhlIG91dHB1dCBmaWxlIGF0IHN0YXJ0dXAuCiAgICBpZiBvcHRpb25zLm91dGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgb3B0aW9ucy5vdXRmaWxlID0gb3MucGF0aC5hYnNwYXRoKG9wdGlvbnMub3V0ZmlsZSkKCiAgICBpZiBsZW4oYXJncykgPiAwOgogICAgICAgIGlmIG9wdGlvbnMubW9kdWxlOgogICAgICAgICAgICBpbXBvcnQgcnVucHkKICAgICAgICAgICAgY29kZSA9ICJydW5fbW9kdWxlKG1vZG5hbWUsIHJ1bl9uYW1lPSdfX21haW5fXycpIgogICAgICAgICAgICBnbG9icyA9IHsKICAgICAgICAgICAgICAgICdydW5fbW9kdWxlJzogcnVucHkucnVuX21vZHVsZSwKICAgICAgICAgICAgICAgICdtb2RuYW1lJzogYXJnc1swXQogICAgICAgICAgICB9CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJvZ25hbWUgPSBhcmdzWzBdCiAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmRpcm5hbWUocHJvZ25hbWUpKQogICAgICAgICAgICB3aXRoIG9wZW4ocHJvZ25hbWUsICdyYicpIGFzIGZwOgogICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZnAucmVhZCgpLCBwcm9nbmFtZSwgJ2V4ZWMnKQogICAgICAgICAgICBnbG9icyA9IHsKICAgICAgICAgICAgICAgICdfX2ZpbGVfXyc6IHByb2duYW1lLAogICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ19fbWFpbl9fJywKICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6IE5vbmUsCiAgICAgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCiAgICAgICAgICAgIH0KICAgICAgICB0cnk6CiAgICAgICAgICAgIHJ1bmN0eChjb2RlLCBnbG9icywgTm9uZSwgb3B0aW9ucy5vdXRmaWxlLCBvcHRpb25zLnNvcnQpCiAgICAgICAgZXhjZXB0IEJyb2tlblBpcGVFcnJvciBhcyBleGM6CiAgICAgICAgICAgICMgUHJldmVudCAiRXhjZXB0aW9uIGlnbm9yZWQiIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93bi4KICAgICAgICAgICAgc3lzLnN0ZG91dCA9IE5vbmUKICAgICAgICAgICAgc3lzLmV4aXQoZXhjLmVycm5vKQogICAgZWxzZToKICAgICAgICBwYXJzZXIucHJpbnRfdXNhZ2UoKQogICAgcmV0dXJuIHBhcnNlcgoKIyBXaGVuIGludm9rZWQgYXMgbWFpbiBwcm9ncmFtLCBpbnZva2UgdGhlIHByb2ZpbGVyIG9uIGEgc2NyaXB0CmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBtYWluKCkKUEsDBBQAAAAAAAIgo1ZPkl+LrHIAAKxyAAAJAAAAcHN0YXRzLnB5IiIiQ2xhc3MgZm9yIHByaW50aW5nIHJlcG9ydHMgb24gcHJvZmlsZWQgcHl0aG9uIGNvZGUuIiIiCgojIFdyaXR0ZW4gYnkgSmFtZXMgUm9za2luZAojIEJhc2VkIG9uIHByaW9yIHByb2ZpbGUgbW9kdWxlIGJ5IFNqb2VyZCBNdWxsZW5kZXIuLi4KIyAgIHdoaWNoIHdhcyBoYWNrZWQgc29tZXdoYXQgYnk6IEd1aWRvIHZhbiBSb3NzdW0KCiMgQ29weXJpZ2h0IERpc25leSBFbnRlcnByaXNlcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQKIwojIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwojIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIwojIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsCiMgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlCiMgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCgppbXBvcnQgc3lzCmltcG9ydCBvcwppbXBvcnQgdGltZQppbXBvcnQgbWFyc2hhbAppbXBvcnQgcmUKCmZyb20gZW51bSBpbXBvcnQgU3RyRW51bSwgX3NpbXBsZV9lbnVtCmZyb20gZnVuY3Rvb2xzIGltcG9ydCBjbXBfdG9fa2V5CmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwpmcm9tIHR5cGluZyBpbXBvcnQgRGljdAoKX19hbGxfXyA9IFsiU3RhdHMiLCAiU29ydEtleSIsICJGdW5jdGlvblByb2ZpbGUiLCAiU3RhdHNQcm9maWxlIl0KCkBfc2ltcGxlX2VudW0oU3RyRW51bSkKY2xhc3MgU29ydEtleToKICAgIENBTExTID0gJ2NhbGxzJywgJ25jYWxscycKICAgIENVTVVMQVRJVkUgPSAnY3VtdWxhdGl2ZScsICdjdW10aW1lJwogICAgRklMRU5BTUUgPSAnZmlsZW5hbWUnLCAnbW9kdWxlJwogICAgTElORSA9ICdsaW5lJwogICAgTkFNRSA9ICduYW1lJwogICAgTkZMID0gJ25mbCcKICAgIFBDQUxMUyA9ICdwY2FsbHMnCiAgICBTVEROQU1FID0gJ3N0ZG5hbWUnCiAgICBUSU1FID0gJ3RpbWUnLCAndG90dGltZScKCiAgICBkZWYgX19uZXdfXyhjbHMsICp2YWx1ZXMpOgogICAgICAgIHZhbHVlID0gdmFsdWVzWzBdCiAgICAgICAgb2JqID0gc3RyLl9fbmV3X18oY2xzLCB2YWx1ZSkKICAgICAgICBvYmouX3ZhbHVlXyA9IHZhbHVlCiAgICAgICAgZm9yIG90aGVyX3ZhbHVlIGluIHZhbHVlc1sxOl06CiAgICAgICAgICAgIGNscy5fdmFsdWUybWVtYmVyX21hcF9bb3RoZXJfdmFsdWVdID0gb2JqCiAgICAgICAgb2JqLl9hbGxfdmFsdWVzID0gdmFsdWVzCiAgICAgICAgcmV0dXJuIG9iagoKCkBkYXRhY2xhc3ModW5zYWZlX2hhc2g9VHJ1ZSkKY2xhc3MgRnVuY3Rpb25Qcm9maWxlOgogICAgbmNhbGxzOiBzdHIKICAgIHRvdHRpbWU6IGZsb2F0CiAgICBwZXJjYWxsX3RvdHRpbWU6IGZsb2F0CiAgICBjdW10aW1lOiBmbG9hdAogICAgcGVyY2FsbF9jdW10aW1lOiBmbG9hdAogICAgZmlsZV9uYW1lOiBzdHIKICAgIGxpbmVfbnVtYmVyOiBpbnQKCkBkYXRhY2xhc3ModW5zYWZlX2hhc2g9VHJ1ZSkKY2xhc3MgU3RhdHNQcm9maWxlOgogICAgJycnQ2xhc3MgZm9yIGtlZXBpbmcgdHJhY2sgb2YgYW4gaXRlbSBpbiBpbnZlbnRvcnkuJycnCiAgICB0b3RhbF90dDogZmxvYXQKICAgIGZ1bmNfcHJvZmlsZXM6IERpY3Rbc3RyLCBGdW5jdGlvblByb2ZpbGVdCgpjbGFzcyBTdGF0czoKICAgICIiIlRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgY3JlYXRpbmcgcmVwb3J0cyBmcm9tIGRhdGEgZ2VuZXJhdGVkIGJ5IHRoZQogICAgUHJvZmlsZSBjbGFzcy4gIEl0IGlzIGEgImZyaWVuZCIgb2YgdGhhdCBjbGFzcywgYW5kIGltcG9ydHMgZGF0YSBlaXRoZXIKICAgIGJ5IGRpcmVjdCBhY2Nlc3MgdG8gbWVtYmVycyBvZiBQcm9maWxlIGNsYXNzLCBvciBieSByZWFkaW5nIGluIGEgZGljdGlvbmFyeQogICAgdGhhdCB3YXMgZW1pdHRlZCAodmlhIG1hcnNoYWwpIGZyb20gdGhlIFByb2ZpbGUgY2xhc3MuCgogICAgVGhlIGJpZyBjaGFuZ2UgZnJvbSB0aGUgcHJldmlvdXMgUHJvZmlsZXIgKGluIHRlcm1zIG9mIHJhdyBmdW5jdGlvbmFsaXR5KQogICAgaXMgdGhhdCBhbiAiYWRkKCkiIG1ldGhvZCBoYXMgYmVlbiBwcm92aWRlZCB0byBjb21iaW5lIFN0YXRzIGZyb20KICAgIHNldmVyYWwgZGlzdGluY3QgcHJvZmlsZSBydW5zLiAgQm90aCB0aGUgY29uc3RydWN0b3IgYW5kIHRoZSBhZGQoKQogICAgbWV0aG9kIG5vdyB0YWtlIGFyYml0cmFyaWx5IG1hbnkgZmlsZSBuYW1lcyBhcyBhcmd1bWVudHMuCgogICAgQWxsIHRoZSBwcmludCBtZXRob2RzIG5vdyB0YWtlIGFuIGFyZ3VtZW50IHRoYXQgaW5kaWNhdGVzIGhvdyBtYW55IGxpbmVzCiAgICB0byBwcmludC4gIElmIHRoZSBhcmcgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCAxLjAsIHRoZW4KICAgIGl0IGlzIHRha2VuIGFzIGEgZGVjaW1hbCBwZXJjZW50YWdlIG9mIHRoZSBhdmFpbGFibGUgbGluZXMgdG8gYmUgcHJpbnRlZAogICAgKGUuZy4sIC4xIG1lYW5zIHByaW50IDEwJSBvZiBhbGwgYXZhaWxhYmxlIGxpbmVzKS4gIElmIGl0IGlzIGFuIGludGVnZXIsCiAgICBpdCBpcyB0YWtlbiB0byBtZWFuIHRoZSBudW1iZXIgb2YgbGluZXMgb2YgZGF0YSB0aGF0IHlvdSB3aXNoIHRvIGhhdmUKICAgIHByaW50ZWQuCgogICAgVGhlIHNvcnRfc3RhdHMoKSBtZXRob2Qgbm93IHByb2Nlc3NlcyBzb21lIGFkZGl0aW9uYWwgb3B0aW9ucyAoaS5lLiwgaW4KICAgIGFkZGl0aW9uIHRvIHRoZSBvbGQgLTEsIDAsIDEsIG9yIDIgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5IGludGVycHJldGVkIGFzCiAgICAnc3RkbmFtZScsICdjYWxscycsICd0aW1lJywgYW5kICdjdW11bGF0aXZlJykuICBJdCB0YWtlcyBlaXRoZXIgYW4KICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcXVvdGVkIHN0cmluZ3Mgb3IgU29ydEtleSBlbnVtIHRvIHNlbGVjdCB0aGUgc29ydAogICAgb3JkZXIuCgogICAgRm9yIGV4YW1wbGUgc29ydF9zdGF0cygndGltZScsICduYW1lJykgb3Igc29ydF9zdGF0cyhTb3J0S2V5LlRJTUUsCiAgICBTb3J0S2V5Lk5BTUUpIHNvcnRzIG9uIHRoZSBtYWpvciBrZXkgb2YgJ2ludGVybmFsIGZ1bmN0aW9uIHRpbWUnLCBhbmQgb24KICAgIHRoZSBtaW5vciBrZXkgb2YgJ3RoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbicuICBMb29rIGF0IHRoZSB0d28gdGFibGVzIGluCiAgICBzb3J0X3N0YXRzKCkgYW5kIGdldF9zb3J0X2FyZ19kZWZzKHNlbGYpIGZvciBtb3JlIGV4YW1wbGVzLgoKICAgIEFsbCBtZXRob2RzIHJldHVybiBzZWxmLCBzbyB5b3UgY2FuIHN0cmluZyB0b2dldGhlciBjb21tYW5kcyBsaWtlOgogICAgICAgIFN0YXRzKCdmb28nLCAnZ29vJykuc3RyaXBfZGlycygpLnNvcnRfc3RhdHMoJ2NhbGxzJykuXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfc3RhdHMoNSkucHJpbnRfY2FsbGVycyg1KQogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCBzdHJlYW09Tm9uZSk6CiAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0gb3Igc3lzLnN0ZG91dAogICAgICAgIGlmIG5vdCBsZW4oYXJncyk6CiAgICAgICAgICAgIGFyZyA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBhcmcgPSBhcmdzWzBdCiAgICAgICAgICAgIGFyZ3MgPSBhcmdzWzE6XQogICAgICAgIHNlbGYuaW5pdChhcmcpCiAgICAgICAgc2VsZi5hZGQoKmFyZ3MpCgogICAgZGVmIGluaXQoc2VsZiwgYXJnKToKICAgICAgICBzZWxmLmFsbF9jYWxsZWVzID0gTm9uZSAgIyBjYWxjIG9ubHkgaWYgbmVlZGVkCiAgICAgICAgc2VsZi5maWxlcyA9IFtdCiAgICAgICAgc2VsZi5mY25fbGlzdCA9IE5vbmUKICAgICAgICBzZWxmLnRvdGFsX3R0ID0gMAogICAgICAgIHNlbGYudG90YWxfY2FsbHMgPSAwCiAgICAgICAgc2VsZi5wcmltX2NhbGxzID0gMAogICAgICAgIHNlbGYubWF4X25hbWVfbGVuID0gMAogICAgICAgIHNlbGYudG9wX2xldmVsID0gc2V0KCkKICAgICAgICBzZWxmLnN0YXRzID0ge30KICAgICAgICBzZWxmLnNvcnRfYXJnX2RpY3QgPSB7fQogICAgICAgIHNlbGYubG9hZF9zdGF0cyhhcmcpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmdldF90b3BfbGV2ZWxfc3RhdHMoKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIHRpbWluZyBkYXRhICVzIiAlCiAgICAgICAgICAgICAgICAgIChzZWxmLmZpbGVzWy0xXSBpZiBzZWxmLmZpbGVzIGVsc2UgJycpLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICByYWlzZQoKICAgIGRlZiBsb2FkX3N0YXRzKHNlbGYsIGFyZyk6CiAgICAgICAgaWYgYXJnIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuc3RhdHMgPSB7fQogICAgICAgICAgICByZXR1cm4KICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXJnLCBzdHIpOgogICAgICAgICAgICB3aXRoIG9wZW4oYXJnLCAncmInKSBhcyBmOgogICAgICAgICAgICAgICAgc2VsZi5zdGF0cyA9IG1hcnNoYWwubG9hZChmKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmaWxlX3N0YXRzID0gb3Muc3RhdChhcmcpCiAgICAgICAgICAgICAgICBhcmcgPSB0aW1lLmN0aW1lKGZpbGVfc3RhdHMuc3RfbXRpbWUpICsgIiAgICAiICsgYXJnCiAgICAgICAgICAgIGV4Y2VwdDogICMgaW4gY2FzZSB0aGlzIGlzIG5vdCB1bml4CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHNlbGYuZmlsZXMgPSBbYXJnXQogICAgICAgIGVsaWYgaGFzYXR0cihhcmcsICdjcmVhdGVfc3RhdHMnKToKICAgICAgICAgICAgYXJnLmNyZWF0ZV9zdGF0cygpCiAgICAgICAgICAgIHNlbGYuc3RhdHMgPSBhcmcuc3RhdHMKICAgICAgICAgICAgYXJnLnN0YXRzID0ge30KICAgICAgICBpZiBub3Qgc2VsZi5zdGF0czoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgY3JlYXRlIG9yIGNvbnN0cnVjdCBhICVyIG9iamVjdCBmcm9tICVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5fX2NsYXNzX18sIGFyZykpCiAgICAgICAgcmV0dXJuCgogICAgZGVmIGdldF90b3BfbGV2ZWxfc3RhdHMoc2VsZik6CiAgICAgICAgZm9yIGZ1bmMsIChjYywgbmMsIHR0LCBjdCwgY2FsbGVycykgaW4gc2VsZi5zdGF0cy5pdGVtcygpOgogICAgICAgICAgICBzZWxmLnRvdGFsX2NhbGxzICs9IG5jCiAgICAgICAgICAgIHNlbGYucHJpbV9jYWxscyAgKz0gY2MKICAgICAgICAgICAgc2VsZi50b3RhbF90dCAgICArPSB0dAogICAgICAgICAgICBpZiAoImpwcm9maWxlIiwgMCwgInByb2ZpbGVyIikgaW4gY2FsbGVyczoKICAgICAgICAgICAgICAgIHNlbGYudG9wX2xldmVsLmFkZChmdW5jKQogICAgICAgICAgICBpZiBsZW4oZnVuY19zdGRfc3RyaW5nKGZ1bmMpKSA+IHNlbGYubWF4X25hbWVfbGVuOgogICAgICAgICAgICAgICAgc2VsZi5tYXhfbmFtZV9sZW4gPSBsZW4oZnVuY19zdGRfc3RyaW5nKGZ1bmMpKQoKICAgIGRlZiBhZGQoc2VsZiwgKmFyZ19saXN0KToKICAgICAgICBpZiBub3QgYXJnX2xpc3Q6CiAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgZm9yIGl0ZW0gaW4gcmV2ZXJzZWQoYXJnX2xpc3QpOgogICAgICAgICAgICBpZiB0eXBlKHNlbGYpICE9IHR5cGUoaXRlbSk6CiAgICAgICAgICAgICAgICBpdGVtID0gU3RhdHMoaXRlbSkKICAgICAgICAgICAgc2VsZi5maWxlcyArPSBpdGVtLmZpbGVzCiAgICAgICAgICAgIHNlbGYudG90YWxfY2FsbHMgKz0gaXRlbS50b3RhbF9jYWxscwogICAgICAgICAgICBzZWxmLnByaW1fY2FsbHMgKz0gaXRlbS5wcmltX2NhbGxzCiAgICAgICAgICAgIHNlbGYudG90YWxfdHQgKz0gaXRlbS50b3RhbF90dAogICAgICAgICAgICBmb3IgZnVuYyBpbiBpdGVtLnRvcF9sZXZlbDoKICAgICAgICAgICAgICAgIHNlbGYudG9wX2xldmVsLmFkZChmdW5jKQoKICAgICAgICAgICAgaWYgc2VsZi5tYXhfbmFtZV9sZW4gPCBpdGVtLm1heF9uYW1lX2xlbjoKICAgICAgICAgICAgICAgIHNlbGYubWF4X25hbWVfbGVuID0gaXRlbS5tYXhfbmFtZV9sZW4KCiAgICAgICAgICAgIHNlbGYuZmNuX2xpc3QgPSBOb25lCgogICAgICAgICAgICBmb3IgZnVuYywgc3RhdCBpbiBpdGVtLnN0YXRzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiBmdW5jIGluIHNlbGYuc3RhdHM6CiAgICAgICAgICAgICAgICAgICAgb2xkX2Z1bmNfc3RhdCA9IHNlbGYuc3RhdHNbZnVuY10KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgb2xkX2Z1bmNfc3RhdCA9ICgwLCAwLCAwLCAwLCB7fSwpCiAgICAgICAgICAgICAgICBzZWxmLnN0YXRzW2Z1bmNdID0gYWRkX2Z1bmNfc3RhdHMob2xkX2Z1bmNfc3RhdCwgc3RhdCkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBkdW1wX3N0YXRzKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAiIiJXcml0ZSB0aGUgcHJvZmlsZSBkYXRhIHRvIGEgZmlsZSB3ZSBrbm93IGhvdyB0byBsb2FkIGJhY2suIiIiCiAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InKSBhcyBmOgogICAgICAgICAgICBtYXJzaGFsLmR1bXAoc2VsZi5zdGF0cywgZikKCiAgICAjIGxpc3QgdGhlIHR1cGxlIGluZGljZXMgYW5kIGRpcmVjdGlvbnMgZm9yIHNvcnRpbmcsCiAgICAjIGFsb25nIHdpdGggc29tZSBwcmludGFibGUgZGVzY3JpcHRpb24KICAgIHNvcnRfYXJnX2RpY3RfZGVmYXVsdCA9IHsKICAgICAgICAgICAgICAiY2FsbHMiICAgICA6ICgoKDEsLTEpLCAgICAgICAgICAgICAgKSwgImNhbGwgY291bnQiKSwKICAgICAgICAgICAgICAibmNhbGxzIiAgICA6ICgoKDEsLTEpLCAgICAgICAgICAgICAgKSwgImNhbGwgY291bnQiKSwKICAgICAgICAgICAgICAiY3VtdGltZSIgICA6ICgoKDMsLTEpLCAgICAgICAgICAgICAgKSwgImN1bXVsYXRpdmUgdGltZSIpLAogICAgICAgICAgICAgICJjdW11bGF0aXZlIjogKCgoMywtMSksICAgICAgICAgICAgICApLCAiY3VtdWxhdGl2ZSB0aW1lIiksCiAgICAgICAgICAgICAgImZpbGVuYW1lIiAgOiAoKCg0LCAxKSwgICAgICAgICAgICAgICksICJmaWxlIG5hbWUiKSwKICAgICAgICAgICAgICAibGluZSIgICAgICA6ICgoKDUsIDEpLCAgICAgICAgICAgICAgKSwgImxpbmUgbnVtYmVyIiksCiAgICAgICAgICAgICAgIm1vZHVsZSIgICAgOiAoKCg0LCAxKSwgICAgICAgICAgICAgICksICJmaWxlIG5hbWUiKSwKICAgICAgICAgICAgICAibmFtZSIgICAgICA6ICgoKDYsIDEpLCAgICAgICAgICAgICAgKSwgImZ1bmN0aW9uIG5hbWUiKSwKICAgICAgICAgICAgICAibmZsIiAgICAgICA6ICgoKDYsIDEpLCg0LCAxKSwoNSwgMSksKSwgIm5hbWUvZmlsZS9saW5lIiksCiAgICAgICAgICAgICAgInBjYWxscyIgICAgOiAoKCgwLC0xKSwgICAgICAgICAgICAgICksICJwcmltaXRpdmUgY2FsbCBjb3VudCIpLAogICAgICAgICAgICAgICJzdGRuYW1lIiAgIDogKCgoNywgMSksICAgICAgICAgICAgICApLCAic3RhbmRhcmQgbmFtZSIpLAogICAgICAgICAgICAgICJ0aW1lIiAgICAgIDogKCgoMiwtMSksICAgICAgICAgICAgICApLCAiaW50ZXJuYWwgdGltZSIpLAogICAgICAgICAgICAgICJ0b3R0aW1lIiAgIDogKCgoMiwtMSksICAgICAgICAgICAgICApLCAiaW50ZXJuYWwgdGltZSIpLAogICAgICAgICAgICAgIH0KCiAgICBkZWYgZ2V0X3NvcnRfYXJnX2RlZnMoc2VsZik6CiAgICAgICAgIiIiRXhwYW5kIGFsbCBhYmJyZXZpYXRpb25zIHRoYXQgYXJlIHVuaXF1ZS4iIiIKICAgICAgICBpZiBub3Qgc2VsZi5zb3J0X2FyZ19kaWN0OgogICAgICAgICAgICBzZWxmLnNvcnRfYXJnX2RpY3QgPSBkaWN0ID0ge30KICAgICAgICAgICAgYmFkX2xpc3QgPSB7fQogICAgICAgICAgICBmb3Igd29yZCwgdHVwIGluIHNlbGYuc29ydF9hcmdfZGljdF9kZWZhdWx0Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHdvcmQKICAgICAgICAgICAgICAgIHdoaWxlIGZyYWdtZW50OgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBmcmFnbWVudDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBpZiBmcmFnbWVudCBpbiBkaWN0OgogICAgICAgICAgICAgICAgICAgICAgICBiYWRfbGlzdFtmcmFnbWVudF0gPSAwCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgZGljdFtmcmFnbWVudF0gPSB0dXAKICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGZyYWdtZW50WzotMV0KICAgICAgICAgICAgZm9yIHdvcmQgaW4gYmFkX2xpc3Q6CiAgICAgICAgICAgICAgICBkZWwgZGljdFt3b3JkXQogICAgICAgIHJldHVybiBzZWxmLnNvcnRfYXJnX2RpY3QKCiAgICBkZWYgc29ydF9zdGF0cyhzZWxmLCAqZmllbGQpOgogICAgICAgIGlmIG5vdCBmaWVsZDoKICAgICAgICAgICAgc2VsZi5mY25fbGlzdCA9IDAKICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICBpZiBsZW4oZmllbGQpID09IDEgYW5kIGlzaW5zdGFuY2UoZmllbGRbMF0sIGludCk6CiAgICAgICAgICAgICMgQmUgY29tcGF0aWJsZSB3aXRoIG9sZCBwcm9maWxlcgogICAgICAgICAgICBmaWVsZCA9IFsgey0xOiAic3RkbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgMDogICJjYWxscyIsCiAgICAgICAgICAgICAgICAgICAgICAgMTogICJ0aW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAyOiAgImN1bXVsYXRpdmUifVtmaWVsZFswXV0gXQogICAgICAgIGVsaWYgbGVuKGZpZWxkKSA+PSAyOgogICAgICAgICAgICBmb3IgYXJnIGluIGZpZWxkWzE6XToKICAgICAgICAgICAgICAgIGlmIHR5cGUoYXJnKSAhPSB0eXBlKGZpZWxkWzBdKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IGhhdmUgbWl4ZWQgYXJndW1lbnQgdHlwZSIpCgogICAgICAgIHNvcnRfYXJnX2RlZnMgPSBzZWxmLmdldF9zb3J0X2FyZ19kZWZzKCkKCiAgICAgICAgc29ydF90dXBsZSA9ICgpCiAgICAgICAgc2VsZi5zb3J0X3R5cGUgPSAiIgogICAgICAgIGNvbm5lY3RvciA9ICIiCiAgICAgICAgZm9yIHdvcmQgaW4gZmllbGQ6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uod29yZCwgU29ydEtleSk6CiAgICAgICAgICAgICAgICB3b3JkID0gd29yZC52YWx1ZQogICAgICAgICAgICBzb3J0X3R1cGxlID0gc29ydF90dXBsZSArIHNvcnRfYXJnX2RlZnNbd29yZF1bMF0KICAgICAgICAgICAgc2VsZi5zb3J0X3R5cGUgKz0gY29ubmVjdG9yICsgc29ydF9hcmdfZGVmc1t3b3JkXVsxXQogICAgICAgICAgICBjb25uZWN0b3IgPSAiLCAiCgogICAgICAgIHN0YXRzX2xpc3QgPSBbXQogICAgICAgIGZvciBmdW5jLCAoY2MsIG5jLCB0dCwgY3QsIGNhbGxlcnMpIGluIHNlbGYuc3RhdHMuaXRlbXMoKToKICAgICAgICAgICAgc3RhdHNfbGlzdC5hcHBlbmQoKGNjLCBuYywgdHQsIGN0KSArIGZ1bmMgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY19zdGRfc3RyaW5nKGZ1bmMpLCBmdW5jKSkKCiAgICAgICAgc3RhdHNfbGlzdC5zb3J0KGtleT1jbXBfdG9fa2V5KFR1cGxlQ29tcChzb3J0X3R1cGxlKS5jb21wYXJlKSkKCiAgICAgICAgc2VsZi5mY25fbGlzdCA9IGZjbl9saXN0ID0gW10KICAgICAgICBmb3IgdHVwbGUgaW4gc3RhdHNfbGlzdDoKICAgICAgICAgICAgZmNuX2xpc3QuYXBwZW5kKHR1cGxlWy0xXSkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiByZXZlcnNlX29yZGVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZmNuX2xpc3Q6CiAgICAgICAgICAgIHNlbGYuZmNuX2xpc3QucmV2ZXJzZSgpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgc3RyaXBfZGlycyhzZWxmKToKICAgICAgICBvbGRzdGF0cyA9IHNlbGYuc3RhdHMKICAgICAgICBzZWxmLnN0YXRzID0gbmV3c3RhdHMgPSB7fQogICAgICAgIG1heF9uYW1lX2xlbiA9IDAKICAgICAgICBmb3IgZnVuYywgKGNjLCBuYywgdHQsIGN0LCBjYWxsZXJzKSBpbiBvbGRzdGF0cy5pdGVtcygpOgogICAgICAgICAgICBuZXdmdW5jID0gZnVuY19zdHJpcF9wYXRoKGZ1bmMpCiAgICAgICAgICAgIGlmIGxlbihmdW5jX3N0ZF9zdHJpbmcobmV3ZnVuYykpID4gbWF4X25hbWVfbGVuOgogICAgICAgICAgICAgICAgbWF4X25hbWVfbGVuID0gbGVuKGZ1bmNfc3RkX3N0cmluZyhuZXdmdW5jKSkKICAgICAgICAgICAgbmV3Y2FsbGVycyA9IHt9CiAgICAgICAgICAgIGZvciBmdW5jMiwgY2FsbGVyIGluIGNhbGxlcnMuaXRlbXMoKToKICAgICAgICAgICAgICAgIG5ld2NhbGxlcnNbZnVuY19zdHJpcF9wYXRoKGZ1bmMyKV0gPSBjYWxsZXIKCiAgICAgICAgICAgIGlmIG5ld2Z1bmMgaW4gbmV3c3RhdHM6CiAgICAgICAgICAgICAgICBuZXdzdGF0c1tuZXdmdW5jXSA9IGFkZF9mdW5jX3N0YXRzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3c3RhdHNbbmV3ZnVuY10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2MsIG5jLCB0dCwgY3QsIG5ld2NhbGxlcnMpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbmV3c3RhdHNbbmV3ZnVuY10gPSAoY2MsIG5jLCB0dCwgY3QsIG5ld2NhbGxlcnMpCiAgICAgICAgb2xkX3RvcCA9IHNlbGYudG9wX2xldmVsCiAgICAgICAgc2VsZi50b3BfbGV2ZWwgPSBuZXdfdG9wID0gc2V0KCkKICAgICAgICBmb3IgZnVuYyBpbiBvbGRfdG9wOgogICAgICAgICAgICBuZXdfdG9wLmFkZChmdW5jX3N0cmlwX3BhdGgoZnVuYykpCgogICAgICAgIHNlbGYubWF4X25hbWVfbGVuID0gbWF4X25hbWVfbGVuCgogICAgICAgIHNlbGYuZmNuX2xpc3QgPSBOb25lCiAgICAgICAgc2VsZi5hbGxfY2FsbGVlcyA9IE5vbmUKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBjYWxjX2NhbGxlZXMoc2VsZik6CiAgICAgICAgaWYgc2VsZi5hbGxfY2FsbGVlczoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5hbGxfY2FsbGVlcyA9IGFsbF9jYWxsZWVzID0ge30KICAgICAgICBmb3IgZnVuYywgKGNjLCBuYywgdHQsIGN0LCBjYWxsZXJzKSBpbiBzZWxmLnN0YXRzLml0ZW1zKCk6CiAgICAgICAgICAgIGlmIG5vdCBmdW5jIGluIGFsbF9jYWxsZWVzOgogICAgICAgICAgICAgICAgYWxsX2NhbGxlZXNbZnVuY10gPSB7fQogICAgICAgICAgICBmb3IgZnVuYzIsIGNhbGxlciBpbiBjYWxsZXJzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiBub3QgZnVuYzIgaW4gYWxsX2NhbGxlZXM6CiAgICAgICAgICAgICAgICAgICAgYWxsX2NhbGxlZXNbZnVuYzJdID0ge30KICAgICAgICAgICAgICAgIGFsbF9jYWxsZWVzW2Z1bmMyXVtmdW5jXSAgPSBjYWxsZXIKICAgICAgICByZXR1cm4KCiAgICAjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAjIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHN1cHBvcnQgYWN0dWFsIHByaW50aW5nIG9mIHJlcG9ydHMKICAgICMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICAjIE9wdGlvbmFsICJhbW91bnQiIGlzIGVpdGhlciBhIGxpbmUgY291bnQsIG9yIGEgcGVyY2VudGFnZSBvZiBsaW5lcy4KCiAgICBkZWYgZXZhbF9wcmludF9hbW91bnQoc2VsZiwgc2VsLCBsaXN0LCBtc2cpOgogICAgICAgIG5ld19saXN0ID0gbGlzdAogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsLCBzdHIpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXggPSByZS5jb21waWxlKHNlbCkKICAgICAgICAgICAgZXhjZXB0IHJlLmVycm9yOgogICAgICAgICAgICAgICAgbXNnICs9ICIgICA8SW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gJXI+XG4iICUgc2VsCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3X2xpc3QsIG1zZwogICAgICAgICAgICBuZXdfbGlzdCA9IFtdCiAgICAgICAgICAgIGZvciBmdW5jIGluIGxpc3Q6CiAgICAgICAgICAgICAgICBpZiByZXguc2VhcmNoKGZ1bmNfc3RkX3N0cmluZyhmdW5jKSk6CiAgICAgICAgICAgICAgICAgICAgbmV3X2xpc3QuYXBwZW5kKGZ1bmMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY291bnQgPSBsZW4obGlzdCkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWwsIGZsb2F0KSBhbmQgMC4wIDw9IHNlbCA8IDEuMDoKICAgICAgICAgICAgICAgIGNvdW50ID0gaW50KGNvdW50ICogc2VsICsgLjUpCiAgICAgICAgICAgICAgICBuZXdfbGlzdCA9IGxpc3RbOmNvdW50XQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsLCBpbnQpIGFuZCAwIDw9IHNlbCA8IGNvdW50OgogICAgICAgICAgICAgICAgY291bnQgPSBzZWwKICAgICAgICAgICAgICAgIG5ld19saXN0ID0gbGlzdFs6Y291bnRdCiAgICAgICAgaWYgbGVuKGxpc3QpICE9IGxlbihuZXdfbGlzdCk6CiAgICAgICAgICAgIG1zZyArPSAiICAgTGlzdCByZWR1Y2VkIGZyb20gJXIgdG8gJXIgZHVlIHRvIHJlc3RyaWN0aW9uIDwlcj5cbiIgJSAoCiAgICAgICAgICAgICAgICBsZW4obGlzdCksIGxlbihuZXdfbGlzdCksIHNlbCkKCiAgICAgICAgcmV0dXJuIG5ld19saXN0LCBtc2cKCiAgICBkZWYgZ2V0X3N0YXRzX3Byb2ZpbGUoc2VsZik6CiAgICAgICAgIiIiVGhpcyBtZXRob2QgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBTdGF0c1Byb2ZpbGUsIHdoaWNoIGNvbnRhaW5zIGEgbWFwcGluZwogICAgICAgIG9mIGZ1bmN0aW9uIG5hbWVzIHRvIGluc3RhbmNlcyBvZiBGdW5jdGlvblByb2ZpbGUuIEVhY2ggRnVuY3Rpb25Qcm9maWxlCiAgICAgICAgaW5zdGFuY2UgaG9sZHMgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgZnVuY3Rpb24ncyBwcm9maWxlIHN1Y2ggYXMgaG93CiAgICAgICAgbG9uZyB0aGUgZnVuY3Rpb24gdG9vayB0byBydW4sIGhvdyBtYW55IHRpbWVzIGl0IHdhcyBjYWxsZWQsIGV0Yy4uLgogICAgICAgICIiIgogICAgICAgIGZ1bmNfbGlzdCA9IHNlbGYuZmNuX2xpc3RbOl0gaWYgc2VsZi5mY25fbGlzdCBlbHNlIGxpc3Qoc2VsZi5zdGF0cy5rZXlzKCkpCiAgICAgICAgaWYgbm90IGZ1bmNfbGlzdDoKICAgICAgICAgICAgcmV0dXJuIFN0YXRzUHJvZmlsZSgwLCB7fSkKCiAgICAgICAgdG90YWxfdHQgPSBmbG9hdChmOChzZWxmLnRvdGFsX3R0KSkKICAgICAgICBmdW5jX3Byb2ZpbGVzID0ge30KICAgICAgICBzdGF0c19wcm9maWxlID0gU3RhdHNQcm9maWxlKHRvdGFsX3R0LCBmdW5jX3Byb2ZpbGVzKQoKICAgICAgICBmb3IgZnVuYyBpbiBmdW5jX2xpc3Q6CiAgICAgICAgICAgIGNjLCBuYywgdHQsIGN0LCBjYWxsZXJzID0gc2VsZi5zdGF0c1tmdW5jXQogICAgICAgICAgICBmaWxlX25hbWUsIGxpbmVfbnVtYmVyLCBmdW5jX25hbWUgPSBmdW5jCiAgICAgICAgICAgIG5jYWxscyA9IHN0cihuYykgaWYgbmMgPT0gY2MgZWxzZSAoc3RyKG5jKSArICcvJyArIHN0cihjYykpCiAgICAgICAgICAgIHRvdHRpbWUgPSBmbG9hdChmOCh0dCkpCiAgICAgICAgICAgIHBlcmNhbGxfdG90dGltZSA9IC0xIGlmIG5jID09IDAgZWxzZSBmbG9hdChmOCh0dC9uYykpCiAgICAgICAgICAgIGN1bXRpbWUgPSBmbG9hdChmOChjdCkpCiAgICAgICAgICAgIHBlcmNhbGxfY3VtdGltZSA9IC0xIGlmIGNjID09IDAgZWxzZSBmbG9hdChmOChjdC9jYykpCiAgICAgICAgICAgIGZ1bmNfcHJvZmlsZSA9IEZ1bmN0aW9uUHJvZmlsZSgKICAgICAgICAgICAgICAgIG5jYWxscywKICAgICAgICAgICAgICAgIHRvdHRpbWUsICMgdGltZSBzcGVudCBpbiB0aGlzIGZ1bmN0aW9uIGFsb25lCiAgICAgICAgICAgICAgICBwZXJjYWxsX3RvdHRpbWUsCiAgICAgICAgICAgICAgICBjdW10aW1lLCAjIHRpbWUgc3BlbnQgaW4gdGhlIGZ1bmN0aW9uIHBsdXMgYWxsIGZ1bmN0aW9ucyB0aGF0IHRoaXMgZnVuY3Rpb24gY2FsbGVkLAogICAgICAgICAgICAgICAgcGVyY2FsbF9jdW10aW1lLAogICAgICAgICAgICAgICAgZmlsZV9uYW1lLAogICAgICAgICAgICAgICAgbGluZV9udW1iZXIKICAgICAgICAgICAgKQogICAgICAgICAgICBmdW5jX3Byb2ZpbGVzW2Z1bmNfbmFtZV0gPSBmdW5jX3Byb2ZpbGUKCiAgICAgICAgcmV0dXJuIHN0YXRzX3Byb2ZpbGUKCiAgICBkZWYgZ2V0X3ByaW50X2xpc3Qoc2VsZiwgc2VsX2xpc3QpOgogICAgICAgIHdpZHRoID0gc2VsZi5tYXhfbmFtZV9sZW4KICAgICAgICBpZiBzZWxmLmZjbl9saXN0OgogICAgICAgICAgICBzdGF0X2xpc3QgPSBzZWxmLmZjbl9saXN0WzpdCiAgICAgICAgICAgIG1zZyA9ICIgICBPcmRlcmVkIGJ5OiAiICsgc2VsZi5zb3J0X3R5cGUgKyAnXG4nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3RhdF9saXN0ID0gbGlzdChzZWxmLnN0YXRzLmtleXMoKSkKICAgICAgICAgICAgbXNnID0gIiAgIFJhbmRvbSBsaXN0aW5nIG9yZGVyIHdhcyB1c2VkXG4iCgogICAgICAgIGZvciBzZWxlY3Rpb24gaW4gc2VsX2xpc3Q6CiAgICAgICAgICAgIHN0YXRfbGlzdCwgbXNnID0gc2VsZi5ldmFsX3ByaW50X2Ftb3VudChzZWxlY3Rpb24sIHN0YXRfbGlzdCwgbXNnKQoKICAgICAgICBjb3VudCA9IGxlbihzdGF0X2xpc3QpCgogICAgICAgIGlmIG5vdCBzdGF0X2xpc3Q6CiAgICAgICAgICAgIHJldHVybiAwLCBzdGF0X2xpc3QKICAgICAgICBwcmludChtc2csIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgaWYgY291bnQgPCBsZW4oc2VsZi5zdGF0cyk6CiAgICAgICAgICAgIHdpZHRoID0gMAogICAgICAgICAgICBmb3IgZnVuYyBpbiBzdGF0X2xpc3Q6CiAgICAgICAgICAgICAgICBpZiAgbGVuKGZ1bmNfc3RkX3N0cmluZyhmdW5jKSkgPiB3aWR0aDoKICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbihmdW5jX3N0ZF9zdHJpbmcoZnVuYykpCiAgICAgICAgcmV0dXJuIHdpZHRoKzIsIHN0YXRfbGlzdAoKICAgIGRlZiBwcmludF9zdGF0cyhzZWxmLCAqYW1vdW50KToKICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5maWxlczoKICAgICAgICAgICAgcHJpbnQoZmlsZW5hbWUsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgaWYgc2VsZi5maWxlczoKICAgICAgICAgICAgcHJpbnQoZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICBpbmRlbnQgPSAnICcgKiA4CiAgICAgICAgZm9yIGZ1bmMgaW4gc2VsZi50b3BfbGV2ZWw6CiAgICAgICAgICAgIHByaW50KGluZGVudCwgZnVuY19nZXRfZnVuY3Rpb25fbmFtZShmdW5jKSwgZmlsZT1zZWxmLnN0cmVhbSkKCiAgICAgICAgcHJpbnQoaW5kZW50LCBzZWxmLnRvdGFsX2NhbGxzLCAiZnVuY3Rpb24gY2FsbHMiLCBlbmQ9JyAnLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgIGlmIHNlbGYudG90YWxfY2FsbHMgIT0gc2VsZi5wcmltX2NhbGxzOgogICAgICAgICAgICBwcmludCgiKCVkIHByaW1pdGl2ZSBjYWxscykiICUgc2VsZi5wcmltX2NhbGxzLCBlbmQ9JyAnLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgIHByaW50KCJpbiAlLjNmIHNlY29uZHMiICUgc2VsZi50b3RhbF90dCwgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICBwcmludChmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgIHdpZHRoLCBsaXN0ID0gc2VsZi5nZXRfcHJpbnRfbGlzdChhbW91bnQpCiAgICAgICAgaWYgbGlzdDoKICAgICAgICAgICAgc2VsZi5wcmludF90aXRsZSgpCiAgICAgICAgICAgIGZvciBmdW5jIGluIGxpc3Q6CiAgICAgICAgICAgICAgICBzZWxmLnByaW50X2xpbmUoZnVuYykKICAgICAgICAgICAgcHJpbnQoZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICAgICAgcHJpbnQoZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBwcmludF9jYWxsZWVzKHNlbGYsICphbW91bnQpOgogICAgICAgIHdpZHRoLCBsaXN0ID0gc2VsZi5nZXRfcHJpbnRfbGlzdChhbW91bnQpCiAgICAgICAgaWYgbGlzdDoKICAgICAgICAgICAgc2VsZi5jYWxjX2NhbGxlZXMoKQoKICAgICAgICAgICAgc2VsZi5wcmludF9jYWxsX2hlYWRpbmcod2lkdGgsICJjYWxsZWQuLi4iKQogICAgICAgICAgICBmb3IgZnVuYyBpbiBsaXN0OgogICAgICAgICAgICAgICAgaWYgZnVuYyBpbiBzZWxmLmFsbF9jYWxsZWVzOgogICAgICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfY2FsbF9saW5lKHdpZHRoLCBmdW5jLCBzZWxmLmFsbF9jYWxsZWVzW2Z1bmNdKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLnByaW50X2NhbGxfbGluZSh3aWR0aCwgZnVuYywge30pCiAgICAgICAgICAgIHByaW50KGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgIHByaW50KGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgcHJpbnRfY2FsbGVycyhzZWxmLCAqYW1vdW50KToKICAgICAgICB3aWR0aCwgbGlzdCA9IHNlbGYuZ2V0X3ByaW50X2xpc3QoYW1vdW50KQogICAgICAgIGlmIGxpc3Q6CiAgICAgICAgICAgIHNlbGYucHJpbnRfY2FsbF9oZWFkaW5nKHdpZHRoLCAid2FzIGNhbGxlZCBieS4uLiIpCiAgICAgICAgICAgIGZvciBmdW5jIGluIGxpc3Q6CiAgICAgICAgICAgICAgICBjYywgbmMsIHR0LCBjdCwgY2FsbGVycyA9IHNlbGYuc3RhdHNbZnVuY10KICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfY2FsbF9saW5lKHdpZHRoLCBmdW5jLCBjYWxsZXJzLCAiPC0iKQogICAgICAgICAgICBwcmludChmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICBwcmludChmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIHByaW50X2NhbGxfaGVhZGluZyhzZWxmLCBuYW1lX3NpemUsIGNvbHVtbl90aXRsZSk6CiAgICAgICAgcHJpbnQoIkZ1bmN0aW9uICIubGp1c3QobmFtZV9zaXplKSArIGNvbHVtbl90aXRsZSwgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICAjIHByaW50IHN1Yi1oZWFkZXIgb25seSBpZiB3ZSBoYXZlIG5ldy1zdHlsZSBjYWxsZXJzCiAgICAgICAgc3ViaGVhZGVyID0gRmFsc2UKICAgICAgICBmb3IgY2MsIG5jLCB0dCwgY3QsIGNhbGxlcnMgaW4gc2VsZi5zdGF0cy52YWx1ZXMoKToKICAgICAgICAgICAgaWYgY2FsbGVyczoKICAgICAgICAgICAgICAgIHZhbHVlID0gbmV4dChpdGVyKGNhbGxlcnMudmFsdWVzKCkpKQogICAgICAgICAgICAgICAgc3ViaGVhZGVyID0gaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGlmIHN1YmhlYWRlcjoKICAgICAgICAgICAgcHJpbnQoIiAiKm5hbWVfc2l6ZSArICIgICAgbmNhbGxzICB0b3R0aW1lICBjdW10aW1lIiwgZmlsZT1zZWxmLnN0cmVhbSkKCiAgICBkZWYgcHJpbnRfY2FsbF9saW5lKHNlbGYsIG5hbWVfc2l6ZSwgc291cmNlLCBjYWxsX2RpY3QsIGFycm93PSItPiIpOgogICAgICAgIHByaW50KGZ1bmNfc3RkX3N0cmluZyhzb3VyY2UpLmxqdXN0KG5hbWVfc2l6ZSkgKyBhcnJvdywgZW5kPScgJywgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICBpZiBub3QgY2FsbF9kaWN0OgogICAgICAgICAgICBwcmludChmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBjbGlzdCA9IHNvcnRlZChjYWxsX2RpY3Qua2V5cygpKQogICAgICAgIGluZGVudCA9ICIiCiAgICAgICAgZm9yIGZ1bmMgaW4gY2xpc3Q6CiAgICAgICAgICAgIG5hbWUgPSBmdW5jX3N0ZF9zdHJpbmcoZnVuYykKICAgICAgICAgICAgdmFsdWUgPSBjYWxsX2RpY3RbZnVuY10KICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgICAgICAgICAgbmMsIGNjLCB0dCwgY3QgPSB2YWx1ZQogICAgICAgICAgICAgICAgaWYgbmMgIT0gY2M6CiAgICAgICAgICAgICAgICAgICAgc3Vic3RhdHMgPSAnJWQvJWQnICUgKG5jLCBjYykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc3Vic3RhdHMgPSAnJWQnICUgKG5jLCkKICAgICAgICAgICAgICAgIHN1YnN0YXRzID0gJyVzICVzICVzICAlcycgJSAoc3Vic3RhdHMucmp1c3QoNysyKmxlbihpbmRlbnQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjgodHQpLCBmOChjdCksIG5hbWUpCiAgICAgICAgICAgICAgICBsZWZ0X3dpZHRoID0gbmFtZV9zaXplICsgMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc3Vic3RhdHMgPSAnJXMoJXIpICVzJyAlIChuYW1lLCB2YWx1ZSwgZjgoc2VsZi5zdGF0c1tmdW5jXVszXSkpCiAgICAgICAgICAgICAgICBsZWZ0X3dpZHRoID0gbmFtZV9zaXplICsgMwogICAgICAgICAgICBwcmludChpbmRlbnQqbGVmdF93aWR0aCArIHN1YnN0YXRzLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICBpbmRlbnQgPSAiICIKCiAgICBkZWYgcHJpbnRfdGl0bGUoc2VsZik6CiAgICAgICAgcHJpbnQoJyAgIG5jYWxscyAgdG90dGltZSAgcGVyY2FsbCAgY3VtdGltZSAgcGVyY2FsbCcsIGVuZD0nICcsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgcHJpbnQoJ2ZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbiknLCBmaWxlPXNlbGYuc3RyZWFtKQoKICAgIGRlZiBwcmludF9saW5lKHNlbGYsIGZ1bmMpOiAgIyBoYWNrOiBzaG91bGQgcHJpbnQgcGVyY2VudGFnZXMKICAgICAgICBjYywgbmMsIHR0LCBjdCwgY2FsbGVycyA9IHNlbGYuc3RhdHNbZnVuY10KICAgICAgICBjID0gc3RyKG5jKQogICAgICAgIGlmIG5jICE9IGNjOgogICAgICAgICAgICBjID0gYyArICcvJyArIHN0cihjYykKICAgICAgICBwcmludChjLnJqdXN0KDkpLCBlbmQ9JyAnLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgIHByaW50KGY4KHR0KSwgZW5kPScgJywgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICBpZiBuYyA9PSAwOgogICAgICAgICAgICBwcmludCgnICcqOCwgZW5kPScgJywgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmludChmOCh0dC9uYyksIGVuZD0nICcsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgcHJpbnQoZjgoY3QpLCBlbmQ9JyAnLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgIGlmIGNjID09IDA6CiAgICAgICAgICAgIHByaW50KCcgJyo4LCBlbmQ9JyAnLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50KGY4KGN0L2NjKSwgZW5kPScgJywgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICBwcmludChmdW5jX3N0ZF9zdHJpbmcoZnVuYyksIGZpbGU9c2VsZi5zdHJlYW0pCgpjbGFzcyBUdXBsZUNvbXA6CiAgICAiIiJUaGlzIGNsYXNzIHByb3ZpZGVzIGEgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgY29tcGFyaW5nIGFueSB0d28gdHVwbGVzLgogICAgRWFjaCBpbnN0YW5jZSByZWNvcmRzIGEgbGlzdCBvZiB0dXBsZS1pbmRpY2VzIChmcm9tIG1vc3Qgc2lnbmlmaWNhbnQKICAgIHRvIGxlYXN0IHNpZ25pZmljYW50KSwgYW5kIHNvcnQgZGlyZWN0aW9uIChhc2NlbmRpbmcgb3IgZGVzY2VuZGluZykgZm9yCiAgICBlYWNoIHR1cGxlLWluZGV4LiAgVGhlIGNvbXBhcmUgZnVuY3Rpb25zIGNhbiB0aGVuIGJlIHVzZWQgYXMgdGhlIGZ1bmN0aW9uCiAgICBhcmd1bWVudCB0byB0aGUgc3lzdGVtIHNvcnQoKSBmdW5jdGlvbiB3aGVuIGEgbGlzdCBvZiB0dXBsZXMgbmVlZCB0byBiZQogICAgc29ydGVkIGluIHRoZSBpbnN0YW5jZXMgb3JkZXIuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbXBfc2VsZWN0X2xpc3QpOgogICAgICAgIHNlbGYuY29tcF9zZWxlY3RfbGlzdCA9IGNvbXBfc2VsZWN0X2xpc3QKCiAgICBkZWYgY29tcGFyZSAoc2VsZiwgbGVmdCwgcmlnaHQpOgogICAgICAgIGZvciBpbmRleCwgZGlyZWN0aW9uIGluIHNlbGYuY29tcF9zZWxlY3RfbGlzdDoKICAgICAgICAgICAgbCA9IGxlZnRbaW5kZXhdCiAgICAgICAgICAgIHIgPSByaWdodFtpbmRleF0KICAgICAgICAgICAgaWYgbCA8IHI6CiAgICAgICAgICAgICAgICByZXR1cm4gLWRpcmVjdGlvbgogICAgICAgICAgICBpZiBsID4gcjoKICAgICAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb24KICAgICAgICByZXR1cm4gMAoKCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojIGZ1bmNfbmFtZSBpcyBhIHRyaXBsZSAoZmlsZTpzdHJpbmcsIGxpbmU6aW50LCBuYW1lOnN0cmluZykKCmRlZiBmdW5jX3N0cmlwX3BhdGgoZnVuY19uYW1lKToKICAgIGZpbGVuYW1lLCBsaW5lLCBuYW1lID0gZnVuY19uYW1lCiAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSksIGxpbmUsIG5hbWUKCmRlZiBmdW5jX2dldF9mdW5jdGlvbl9uYW1lKGZ1bmMpOgogICAgcmV0dXJuIGZ1bmNbMl0KCmRlZiBmdW5jX3N0ZF9zdHJpbmcoZnVuY19uYW1lKTogIyBtYXRjaCB3aGF0IG9sZCBwcm9maWxlIHByb2R1Y2VkCiAgICBpZiBmdW5jX25hbWVbOjJdID09ICgnficsIDApOgogICAgICAgICMgc3BlY2lhbCBjYXNlIGZvciBidWlsdC1pbiBmdW5jdGlvbnMKICAgICAgICBuYW1lID0gZnVuY19uYW1lWzJdCiAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCc8JykgYW5kIG5hbWUuZW5kc3dpdGgoJz4nKToKICAgICAgICAgICAgcmV0dXJuICd7JXN9JyAlIG5hbWVbMTotMV0KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gbmFtZQogICAgZWxzZToKICAgICAgICByZXR1cm4gIiVzOiVkKCVzKSIgJSBmdW5jX25hbWUKCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGNvbWJpbmUgc3RhdGlzdGljcyBmb3IgcGFpcnMgZnVuY3Rpb25zLgojIFRoZSBidWxrIG9mIHRoZSBwcm9jZXNzaW5nIGludm9sdmVzIGNvcnJlY3RseSBoYW5kbGluZyAiY2FsbCIgbGlzdHMsCiMgc3VjaCBhcyBjYWxsZXJzIGFuZCBjYWxsZWVzLgojKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCmRlZiBhZGRfZnVuY19zdGF0cyh0YXJnZXQsIHNvdXJjZSk6CiAgICAiIiJBZGQgdG9nZXRoZXIgYWxsIHRoZSBzdGF0cyBmb3IgdHdvIHByb2ZpbGUgZW50cmllcy4iIiIKICAgIGNjLCBuYywgdHQsIGN0LCBjYWxsZXJzID0gc291cmNlCiAgICB0X2NjLCB0X25jLCB0X3R0LCB0X2N0LCB0X2NhbGxlcnMgPSB0YXJnZXQKICAgIHJldHVybiAoY2MrdF9jYywgbmMrdF9uYywgdHQrdF90dCwgY3QrdF9jdCwKICAgICAgICAgICAgICBhZGRfY2FsbGVycyh0X2NhbGxlcnMsIGNhbGxlcnMpKQoKZGVmIGFkZF9jYWxsZXJzKHRhcmdldCwgc291cmNlKToKICAgICIiIkNvbWJpbmUgdHdvIGNhbGxlciBsaXN0cyBpbiBhIHNpbmdsZSBsaXN0LiIiIgogICAgbmV3X2NhbGxlcnMgPSB7fQogICAgZm9yIGZ1bmMsIGNhbGxlciBpbiB0YXJnZXQuaXRlbXMoKToKICAgICAgICBuZXdfY2FsbGVyc1tmdW5jXSA9IGNhbGxlcgogICAgZm9yIGZ1bmMsIGNhbGxlciBpbiBzb3VyY2UuaXRlbXMoKToKICAgICAgICBpZiBmdW5jIGluIG5ld19jYWxsZXJzOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNhbGxlciwgdHVwbGUpOgogICAgICAgICAgICAgICAgIyBmb3JtYXQgdXNlZCBieSBjUHJvZmlsZQogICAgICAgICAgICAgICAgbmV3X2NhbGxlcnNbZnVuY10gPSB0dXBsZShpICsgaiBmb3IgaSwgaiBpbiB6aXAoY2FsbGVyLCBuZXdfY2FsbGVyc1tmdW5jXSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIGZvcm1hdCB1c2VkIGJ5IHByb2ZpbGUKICAgICAgICAgICAgICAgIG5ld19jYWxsZXJzW2Z1bmNdICs9IGNhbGxlcgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5ld19jYWxsZXJzW2Z1bmNdID0gY2FsbGVyCiAgICByZXR1cm4gbmV3X2NhbGxlcnMKCmRlZiBjb3VudF9jYWxscyhjYWxsZXJzKToKICAgICIiIlN1bSB0aGUgY2FsbGVyIHN0YXRpc3RpY3MgdG8gZ2V0IHRvdGFsIG51bWJlciBvZiBjYWxscyByZWNlaXZlZC4iIiIKICAgIG5jID0gMAogICAgZm9yIGNhbGxzIGluIGNhbGxlcnMudmFsdWVzKCk6CiAgICAgICAgbmMgKz0gY2FsbHMKICAgIHJldHVybiBuYwoKIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgc3VwcG9ydCBwcmludGluZyBvZiByZXBvcnRzCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKZGVmIGY4KHgpOgogICAgcmV0dXJuICIlOC4zZiIgJSB4CgojKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIyBTdGF0aXN0aWNzIGJyb3dzZXIgYWRkZWQgYnkgRVNSLCBBcHJpbCAyMDAxCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIGltcG9ydCBjbWQKICAgIHRyeToKICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICBwYXNzCgogICAgY2xhc3MgUHJvZmlsZUJyb3dzZXIoY21kLkNtZCk6CiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2ZpbGU9Tm9uZSk6CiAgICAgICAgICAgIGNtZC5DbWQuX19pbml0X18oc2VsZikKICAgICAgICAgICAgc2VsZi5wcm9tcHQgPSAiJSAiCiAgICAgICAgICAgIHNlbGYuc3RhdHMgPSBOb25lCiAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc3lzLnN0ZG91dAogICAgICAgICAgICBpZiBwcm9maWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5kb19yZWFkKHByb2ZpbGUpCgogICAgICAgIGRlZiBnZW5lcmljKHNlbGYsIGZuLCBsaW5lKToKICAgICAgICAgICAgYXJncyA9IGxpbmUuc3BsaXQoKQogICAgICAgICAgICBwcm9jZXNzZWQgPSBbXQogICAgICAgICAgICBmb3IgdGVybSBpbiBhcmdzOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC5hcHBlbmQoaW50KHRlcm0pKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZnJhYyA9IGZsb2F0KHRlcm0pCiAgICAgICAgICAgICAgICAgICAgaWYgZnJhYyA+IDEgb3IgZnJhYyA8IDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJGcmFjdGlvbiBhcmd1bWVudCBtdXN0IGJlIGluIFswLCAxXSIsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkLmFwcGVuZChmcmFjKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBwcm9jZXNzZWQuYXBwZW5kKHRlcm0pCiAgICAgICAgICAgIGlmIHNlbGYuc3RhdHM6CiAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYuc3RhdHMsIGZuKSgqcHJvY2Vzc2VkKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoIk5vIHN0YXRpc3RpY3Mgb2JqZWN0IGlzIGxvYWRlZC4iLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGRlZiBnZW5lcmljX2hlbHAoc2VsZik6CiAgICAgICAgICAgIHByaW50KCJBcmd1bWVudHMgbWF5IGJlOiIsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgIHByaW50KCIqIEFuIGludGVnZXIgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0byBwcmludC4iLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICBwcmludCgiKiBBIGRlY2ltYWwgZnJhY3Rpb25hbCBudW1iZXIgYmV0d2VlbiAwIGFuZCAxLCBjb250cm9sbGluZyIsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgIHByaW50KCIgIHdoYXQgZnJhY3Rpb24gb2Ygc2VsZWN0ZWQgZW50cmllcyB0byBwcmludC4iLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICBwcmludCgiKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbjsgb25seSBlbnRyaWVzIHdpdGggZnVuY3Rpb24gbmFtZXMiLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICBwcmludCgiICB0aGF0IG1hdGNoIGl0IGFyZSBwcmludGVkLiIsIGZpbGU9c2VsZi5zdHJlYW0pCgogICAgICAgIGRlZiBkb19hZGQoc2VsZiwgbGluZSk6CiAgICAgICAgICAgIGlmIHNlbGYuc3RhdHM6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0cy5hZGQobGluZSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkZhaWxlZCB0byBsb2FkIHN0YXRpc3RpY3MgZm9yICVzOiAlcyIgJSAobGluZSwgZSksIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludCgiTm8gc3RhdGlzdGljcyBvYmplY3QgaXMgbG9hZGVkLiIsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgZGVmIGhlbHBfYWRkKHNlbGYpOgogICAgICAgICAgICBwcmludCgiQWRkIHByb2ZpbGUgaW5mbyBmcm9tIGdpdmVuIGZpbGUgdG8gY3VycmVudCBzdGF0aXN0aWNzIG9iamVjdC4iLCBmaWxlPXNlbGYuc3RyZWFtKQoKICAgICAgICBkZWYgZG9fY2FsbGVlcyhzZWxmLCBsaW5lKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2VuZXJpYygncHJpbnRfY2FsbGVlcycsIGxpbmUpCiAgICAgICAgZGVmIGhlbHBfY2FsbGVlcyhzZWxmKToKICAgICAgICAgICAgcHJpbnQoIlByaW50IGNhbGxlZXMgc3RhdGlzdGljcyBmcm9tIHRoZSBjdXJyZW50IHN0YXQgb2JqZWN0LiIsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgIHNlbGYuZ2VuZXJpY19oZWxwKCkKCiAgICAgICAgZGVmIGRvX2NhbGxlcnMoc2VsZiwgbGluZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmdlbmVyaWMoJ3ByaW50X2NhbGxlcnMnLCBsaW5lKQogICAgICAgIGRlZiBoZWxwX2NhbGxlcnMoc2VsZik6CiAgICAgICAgICAgIHByaW50KCJQcmludCBjYWxsZXJzIHN0YXRpc3RpY3MgZnJvbSB0aGUgY3VycmVudCBzdGF0IG9iamVjdC4iLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICBzZWxmLmdlbmVyaWNfaGVscCgpCgogICAgICAgIGRlZiBkb19FT0Yoc2VsZiwgbGluZSk6CiAgICAgICAgICAgIHByaW50KCIiLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICByZXR1cm4gMQogICAgICAgIGRlZiBoZWxwX0VPRihzZWxmKToKICAgICAgICAgICAgcHJpbnQoIkxlYXZlIHRoZSBwcm9maWxlIGJyb3dzZXIuIiwgZmlsZT1zZWxmLnN0cmVhbSkKCiAgICAgICAgZGVmIGRvX3F1aXQoc2VsZiwgbGluZSk6CiAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgZGVmIGhlbHBfcXVpdChzZWxmKToKICAgICAgICAgICAgcHJpbnQoIkxlYXZlIHRoZSBwcm9maWxlIGJyb3dzZXIuIiwgZmlsZT1zZWxmLnN0cmVhbSkKCiAgICAgICAgZGVmIGRvX3JlYWQoc2VsZiwgbGluZSk6CiAgICAgICAgICAgIGlmIGxpbmU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0cyA9IFN0YXRzKGxpbmUpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyLmFyZ3NbMV0sIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICBwcmludChlcnIuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlcnIsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICBzZWxmLnByb21wdCA9IGxpbmUgKyAiJSAiCiAgICAgICAgICAgIGVsaWYgbGVuKHNlbGYucHJvbXB0KSA+IDI6CiAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5wcm9tcHRbOi0yXQogICAgICAgICAgICAgICAgc2VsZi5kb19yZWFkKGxpbmUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludCgiTm8gc3RhdGlzdGljcyBvYmplY3QgaXMgY3VycmVudCAtLSBjYW5ub3QgcmVsb2FkLiIsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgZGVmIGhlbHBfcmVhZChzZWxmKToKICAgICAgICAgICAgcHJpbnQoIlJlYWQgaW4gcHJvZmlsZSBkYXRhIGZyb20gYSBzcGVjaWZpZWQgZmlsZS4iLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICBwcmludCgiV2l0aG91dCBhcmd1bWVudCwgcmVsb2FkIHRoZSBjdXJyZW50IGZpbGUuIiwgZmlsZT1zZWxmLnN0cmVhbSkKCiAgICAgICAgZGVmIGRvX3JldmVyc2Uoc2VsZiwgbGluZSk6CiAgICAgICAgICAgIGlmIHNlbGYuc3RhdHM6CiAgICAgICAgICAgICAgICBzZWxmLnN0YXRzLnJldmVyc2Vfb3JkZXIoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoIk5vIHN0YXRpc3RpY3Mgb2JqZWN0IGlzIGxvYWRlZC4iLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGRlZiBoZWxwX3JldmVyc2Uoc2VsZik6CiAgICAgICAgICAgIHByaW50KCJSZXZlcnNlIHRoZSBzb3J0IG9yZGVyIG9mIHRoZSBwcm9maWxpbmcgcmVwb3J0LiIsIGZpbGU9c2VsZi5zdHJlYW0pCgogICAgICAgIGRlZiBkb19zb3J0KHNlbGYsIGxpbmUpOgogICAgICAgICAgICBpZiBub3Qgc2VsZi5zdGF0czoKICAgICAgICAgICAgICAgIHByaW50KCJObyBzdGF0aXN0aWNzIG9iamVjdCBpcyBsb2FkZWQuIiwgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBhYmJyZXZzID0gc2VsZi5zdGF0cy5nZXRfc29ydF9hcmdfZGVmcygpCiAgICAgICAgICAgIGlmIGxpbmUgYW5kIGFsbCgoeCBpbiBhYmJyZXZzKSBmb3IgeCBpbiBsaW5lLnNwbGl0KCkpOgogICAgICAgICAgICAgICAgc2VsZi5zdGF0cy5zb3J0X3N0YXRzKCpsaW5lLnNwbGl0KCkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludCgiVmFsaWQgc29ydCBrZXlzICh1bmlxdWUgcHJlZml4ZXMgYXJlIGFjY2VwdGVkKToiLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICAgICAgZm9yIChrZXksIHZhbHVlKSBpbiBTdGF0cy5zb3J0X2FyZ19kaWN0X2RlZmF1bHQuaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMgLS0gJXMiICUgKGtleSwgdmFsdWVbMV0pLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGRlZiBoZWxwX3NvcnQoc2VsZik6CiAgICAgICAgICAgIHByaW50KCJTb3J0IHByb2ZpbGUgZGF0YSBhY2NvcmRpbmcgdG8gc3BlY2lmaWVkIGtleXMuIiwgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICAgICAgcHJpbnQoIihUeXBpbmcgYHNvcnQnIHdpdGhvdXQgYXJndW1lbnRzIGxpc3RzIHZhbGlkIGtleXMuKSIsIGZpbGU9c2VsZi5zdHJlYW0pCiAgICAgICAgZGVmIGNvbXBsZXRlX3NvcnQoc2VsZiwgdGV4dCwgKmFyZ3MpOgogICAgICAgICAgICByZXR1cm4gW2EgZm9yIGEgaW4gU3RhdHMuc29ydF9hcmdfZGljdF9kZWZhdWx0IGlmIGEuc3RhcnRzd2l0aCh0ZXh0KV0KCiAgICAgICAgZGVmIGRvX3N0YXRzKHNlbGYsIGxpbmUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5nZW5lcmljKCdwcmludF9zdGF0cycsIGxpbmUpCiAgICAgICAgZGVmIGhlbHBfc3RhdHMoc2VsZik6CiAgICAgICAgICAgIHByaW50KCJQcmludCBzdGF0aXN0aWNzIGZyb20gdGhlIGN1cnJlbnQgc3RhdCBvYmplY3QuIiwgZmlsZT1zZWxmLnN0cmVhbSkKICAgICAgICAgICAgc2VsZi5nZW5lcmljX2hlbHAoKQoKICAgICAgICBkZWYgZG9fc3RyaXAoc2VsZiwgbGluZSk6CiAgICAgICAgICAgIGlmIHNlbGYuc3RhdHM6CiAgICAgICAgICAgICAgICBzZWxmLnN0YXRzLnN0cmlwX2RpcnMoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoIk5vIHN0YXRpc3RpY3Mgb2JqZWN0IGlzIGxvYWRlZC4iLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgIGRlZiBoZWxwX3N0cmlwKHNlbGYpOgogICAgICAgICAgICBwcmludCgiU3RyaXAgbGVhZGluZyBwYXRoIGluZm9ybWF0aW9uIGZyb20gZmlsZW5hbWVzIGluIHRoZSByZXBvcnQuIiwgZmlsZT1zZWxmLnN0cmVhbSkKCiAgICAgICAgZGVmIGhlbHBfaGVscChzZWxmKToKICAgICAgICAgICAgcHJpbnQoIlNob3cgaGVscCBmb3IgYSBnaXZlbiBjb21tYW5kLiIsIGZpbGU9c2VsZi5zdHJlYW0pCgogICAgICAgIGRlZiBwb3N0Y21kKHNlbGYsIHN0b3AsIGxpbmUpOgogICAgICAgICAgICBpZiBzdG9wOgogICAgICAgICAgICAgICAgcmV0dXJuIHN0b3AKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBpZiBsZW4oc3lzLmFyZ3YpID4gMToKICAgICAgICBpbml0cHJvZmlsZSA9IHN5cy5hcmd2WzFdCiAgICBlbHNlOgogICAgICAgIGluaXRwcm9maWxlID0gTm9uZQogICAgdHJ5OgogICAgICAgIGJyb3dzZXIgPSBQcm9maWxlQnJvd3Nlcihpbml0cHJvZmlsZSkKICAgICAgICBmb3IgcHJvZmlsZSBpbiBzeXMuYXJndlsyOl06CiAgICAgICAgICAgIGJyb3dzZXIuZG9fYWRkKHByb2ZpbGUpCiAgICAgICAgcHJpbnQoIldlbGNvbWUgdG8gdGhlIHByb2ZpbGUgc3RhdGlzdGljcyBicm93c2VyLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCiAgICAgICAgYnJvd3Nlci5jbWRsb29wKCkKICAgICAgICBwcmludCgiR29vZGJ5ZS4iLCBmaWxlPWJyb3dzZXIuc3RyZWFtKQogICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgIHBhc3MKCiMgVGhhdCdzIGFsbCwgZm9sa3MuClBLAwQUAAAAAAACIKNWyfuvF10UAABdFAAABgAAAHB0eS5weSIiIlBzZXVkbyB0ZXJtaW5hbCB1dGlsaXRpZXMuIiIiCgojIEJ1Z3M6IE5vIHNpZ25hbCBoYW5kbGluZy4gIERvZXNuJ3Qgc2V0IHNsYXZlIHRlcm1pb3MgYW5kIHdpbmRvdyBzaXplLgojICAgICAgIE9ubHkgdGVzdGVkIG9uIExpbnV4LCBGcmVlQlNELCBhbmQgbWFjT1MuCiMgU2VlOiAgVy4gUmljaGFyZCBTdGV2ZW5zLiAxOTkyLiAgQWR2YW5jZWQgUHJvZ3JhbW1pbmcgaW4gdGhlCiMgICAgICAgVU5JWCBFbnZpcm9ubWVudC4gIENoYXB0ZXIgMTkuCiMgQXV0aG9yOiBTdGVlbiBMdW1ob2x0IC0tIHdpdGggYWRkaXRpb25zIGJ5IEd1aWRvLgoKZnJvbSBzZWxlY3QgaW1wb3J0IHNlbGVjdAppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgdHR5CgojIG5hbWVzIGltcG9ydGVkIGRpcmVjdGx5IGZvciB0ZXN0IG1vY2tpbmcgcHVycG9zZXMKZnJvbSBvcyBpbXBvcnQgY2xvc2UsIHdhaXRwaWQKZnJvbSB0dHkgaW1wb3J0IHNldHJhdywgdGNnZXRhdHRyLCB0Y3NldGF0dHIKCl9fYWxsX18gPSBbIm9wZW5wdHkiLCAiZm9yayIsICJzcGF3biJdCgpTVERJTl9GSUxFTk8gPSAwClNURE9VVF9GSUxFTk8gPSAxClNUREVSUl9GSUxFTk8gPSAyCgpDSElMRCA9IDAKCmRlZiBvcGVucHR5KCk6CiAgICAiIiJvcGVucHR5KCkgLT4gKG1hc3Rlcl9mZCwgc2xhdmVfZmQpCiAgICBPcGVuIGEgcHR5IG1hc3Rlci9zbGF2ZSBwYWlyLCB1c2luZyBvcy5vcGVucHR5KCkgaWYgcG9zc2libGUuIiIiCgogICAgdHJ5OgogICAgICAgIHJldHVybiBvcy5vcGVucHR5KCkKICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgogICAgICAgIHBhc3MKICAgIG1hc3Rlcl9mZCwgc2xhdmVfbmFtZSA9IF9vcGVuX3Rlcm1pbmFsKCkKICAgIHNsYXZlX2ZkID0gc2xhdmVfb3BlbihzbGF2ZV9uYW1lKQogICAgcmV0dXJuIG1hc3Rlcl9mZCwgc2xhdmVfZmQKCmRlZiBtYXN0ZXJfb3BlbigpOgogICAgIiIibWFzdGVyX29wZW4oKSAtPiAobWFzdGVyX2ZkLCBzbGF2ZV9uYW1lKQogICAgT3BlbiBhIHB0eSBtYXN0ZXIgYW5kIHJldHVybiB0aGUgZmQsIGFuZCB0aGUgZmlsZW5hbWUgb2YgdGhlIHNsYXZlIGVuZC4KICAgIERlcHJlY2F0ZWQsIHVzZSBvcGVucHR5KCkgaW5zdGVhZC4iIiIKCiAgICB0cnk6CiAgICAgICAgbWFzdGVyX2ZkLCBzbGF2ZV9mZCA9IG9zLm9wZW5wdHkoKQogICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICBzbGF2ZV9uYW1lID0gb3MudHR5bmFtZShzbGF2ZV9mZCkKICAgICAgICBvcy5jbG9zZShzbGF2ZV9mZCkKICAgICAgICByZXR1cm4gbWFzdGVyX2ZkLCBzbGF2ZV9uYW1lCgogICAgcmV0dXJuIF9vcGVuX3Rlcm1pbmFsKCkKCmRlZiBfb3Blbl90ZXJtaW5hbCgpOgogICAgIiIiT3BlbiBwdHkgbWFzdGVyIGFuZCByZXR1cm4gKG1hc3Rlcl9mZCwgdHR5X25hbWUpLiIiIgogICAgZm9yIHggaW4gJ3BxcnN0dXZ3eHl6UFFSU1QnOgogICAgICAgIGZvciB5IGluICcwMTIzNDU2Nzg5YWJjZGVmJzoKICAgICAgICAgICAgcHR5X25hbWUgPSAnL2Rldi9wdHknICsgeCArIHkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHB0eV9uYW1lLCBvcy5PX1JEV1IpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgcmV0dXJuIChmZCwgJy9kZXYvdHR5JyArIHggKyB5KQogICAgcmFpc2UgT1NFcnJvcignb3V0IG9mIHB0eSBkZXZpY2VzJykKCmRlZiBzbGF2ZV9vcGVuKHR0eV9uYW1lKToKICAgICIiInNsYXZlX29wZW4odHR5X25hbWUpIC0+IHNsYXZlX2ZkCiAgICBPcGVuIHRoZSBwdHkgc2xhdmUgYW5kIGFjcXVpcmUgdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsLCByZXR1cm5pbmcKICAgIG9wZW5lZCBmaWxlZGVzY3JpcHRvci4KICAgIERlcHJlY2F0ZWQsIHVzZSBvcGVucHR5KCkgaW5zdGVhZC4iIiIKCiAgICByZXN1bHQgPSBvcy5vcGVuKHR0eV9uYW1lLCBvcy5PX1JEV1IpCiAgICB0cnk6CiAgICAgICAgZnJvbSBmY250bCBpbXBvcnQgaW9jdGwsIElfUFVTSAogICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgIHJldHVybiByZXN1bHQKICAgIHRyeToKICAgICAgICBpb2N0bChyZXN1bHQsIElfUFVTSCwgInB0ZW0iKQogICAgICAgIGlvY3RsKHJlc3VsdCwgSV9QVVNILCAibGR0ZXJtIikKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHBhc3MKICAgIHJldHVybiByZXN1bHQKCmRlZiBmb3JrKCk6CiAgICAiIiJmb3JrKCkgLT4gKHBpZCwgbWFzdGVyX2ZkKQogICAgRm9yayBhbmQgbWFrZSB0aGUgY2hpbGQgYSBzZXNzaW9uIGxlYWRlciB3aXRoIGEgY29udHJvbGxpbmcgdGVybWluYWwuIiIiCgogICAgdHJ5OgogICAgICAgIHBpZCwgZmQgPSBvcy5mb3JrcHR5KCkKICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgogICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgaWYgcGlkID09IENISUxEOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBvcy5zZXRzaWQoKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICMgb3MuZm9ya3B0eSgpIGFscmVhZHkgc2V0IHVzIHNlc3Npb24gbGVhZGVyCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgcmV0dXJuIHBpZCwgZmQKCiAgICBtYXN0ZXJfZmQsIHNsYXZlX2ZkID0gb3BlbnB0eSgpCiAgICBwaWQgPSBvcy5mb3JrKCkKICAgIGlmIHBpZCA9PSBDSElMRDoKICAgICAgICAjIEVzdGFibGlzaCBhIG5ldyBzZXNzaW9uLgogICAgICAgIG9zLnNldHNpZCgpCiAgICAgICAgb3MuY2xvc2UobWFzdGVyX2ZkKQoKICAgICAgICAjIFNsYXZlIGJlY29tZXMgc3RkaW4vc3Rkb3V0L3N0ZGVyciBvZiBjaGlsZC4KICAgICAgICBvcy5kdXAyKHNsYXZlX2ZkLCBTVERJTl9GSUxFTk8pCiAgICAgICAgb3MuZHVwMihzbGF2ZV9mZCwgU1RET1VUX0ZJTEVOTykKICAgICAgICBvcy5kdXAyKHNsYXZlX2ZkLCBTVERFUlJfRklMRU5PKQogICAgICAgIGlmIHNsYXZlX2ZkID4gU1RERVJSX0ZJTEVOTzoKICAgICAgICAgICAgb3MuY2xvc2Uoc2xhdmVfZmQpCgogICAgICAgICMgRXhwbGljaXRseSBvcGVuIHRoZSB0dHkgdG8gbWFrZSBpdCBiZWNvbWUgYSBjb250cm9sbGluZyB0dHkuCiAgICAgICAgdG1wX2ZkID0gb3Mub3Blbihvcy50dHluYW1lKFNURE9VVF9GSUxFTk8pLCBvcy5PX1JEV1IpCiAgICAgICAgb3MuY2xvc2UodG1wX2ZkKQogICAgZWxzZToKICAgICAgICBvcy5jbG9zZShzbGF2ZV9mZCkKCiAgICAjIFBhcmVudCBhbmQgY2hpbGQgcHJvY2Vzcy4KICAgIHJldHVybiBwaWQsIG1hc3Rlcl9mZAoKZGVmIF93cml0ZW4oZmQsIGRhdGEpOgogICAgIiIiV3JpdGUgYWxsIHRoZSBkYXRhIHRvIGEgZGVzY3JpcHRvci4iIiIKICAgIHdoaWxlIGRhdGE6CiAgICAgICAgbiA9IG9zLndyaXRlKGZkLCBkYXRhKQogICAgICAgIGRhdGEgPSBkYXRhW246XQoKZGVmIF9yZWFkKGZkKToKICAgICIiIkRlZmF1bHQgcmVhZCBmdW5jdGlvbi4iIiIKICAgIHJldHVybiBvcy5yZWFkKGZkLCAxMDI0KQoKZGVmIF9jb3B5KG1hc3Rlcl9mZCwgbWFzdGVyX3JlYWQ9X3JlYWQsIHN0ZGluX3JlYWQ9X3JlYWQpOgogICAgIiIiUGFyZW50IGNvcHkgbG9vcC4KICAgIENvcGllcwogICAgICAgICAgICBwdHkgbWFzdGVyIC0+IHN0YW5kYXJkIG91dHB1dCAgIChtYXN0ZXJfcmVhZCkKICAgICAgICAgICAgc3RhbmRhcmQgaW5wdXQgLT4gcHR5IG1hc3RlciAgICAoc3RkaW5fcmVhZCkiIiIKICAgIGZkcyA9IFttYXN0ZXJfZmQsIFNURElOX0ZJTEVOT10KICAgIHdoaWxlIGZkczoKICAgICAgICByZmRzLCBfd2ZkcywgX3hmZHMgPSBzZWxlY3QoZmRzLCBbXSwgW10pCgogICAgICAgIGlmIG1hc3Rlcl9mZCBpbiByZmRzOgogICAgICAgICAgICAjIFNvbWUgT1NlcyBzaWduYWwgRU9GIGJ5IHJldHVybmluZyBhbiBlbXB0eSBieXRlIHN0cmluZywKICAgICAgICAgICAgIyBzb21lIHRocm93IE9TRXJyb3JzLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBkYXRhID0gbWFzdGVyX3JlYWQobWFzdGVyX2ZkKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIGRhdGEgPSBiIiIKICAgICAgICAgICAgaWYgbm90IGRhdGE6ICAjIFJlYWNoZWQgRU9GLgogICAgICAgICAgICAgICAgcmV0dXJuICAgICMgQXNzdW1lIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBleGl0ZWQgYW5kIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bnJlYWNoYWJsZSwgc28gd2UgY2xlYW4gdXAuCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBvcy53cml0ZShTVERPVVRfRklMRU5PLCBkYXRhKQoKICAgICAgICBpZiBTVERJTl9GSUxFTk8gaW4gcmZkczoKICAgICAgICAgICAgZGF0YSA9IHN0ZGluX3JlYWQoU1RESU5fRklMRU5PKQogICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgIGZkcy5yZW1vdmUoU1RESU5fRklMRU5PKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgX3dyaXRlbihtYXN0ZXJfZmQsIGRhdGEpCgpkZWYgc3Bhd24oYXJndiwgbWFzdGVyX3JlYWQ9X3JlYWQsIHN0ZGluX3JlYWQ9X3JlYWQpOgogICAgIiIiQ3JlYXRlIGEgc3Bhd25lZCBwcm9jZXNzLiIiIgogICAgaWYgdHlwZShhcmd2KSA9PSB0eXBlKCcnKToKICAgICAgICBhcmd2ID0gKGFyZ3YsKQogICAgc3lzLmF1ZGl0KCdwdHkuc3Bhd24nLCBhcmd2KQoKICAgIHBpZCwgbWFzdGVyX2ZkID0gZm9yaygpCiAgICBpZiBwaWQgPT0gQ0hJTEQ6CiAgICAgICAgb3MuZXhlY2xwKGFyZ3ZbMF0sICphcmd2KQoKICAgIHRyeToKICAgICAgICBtb2RlID0gdGNnZXRhdHRyKFNURElOX0ZJTEVOTykKICAgICAgICBzZXRyYXcoU1RESU5fRklMRU5PKQogICAgICAgIHJlc3RvcmUgPSBUcnVlCiAgICBleGNlcHQgdHR5LmVycm9yOiAgICAjIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGVybWlvcy5lcnJvcgogICAgICAgIHJlc3RvcmUgPSBGYWxzZQoKICAgIHRyeToKICAgICAgICBfY29weShtYXN0ZXJfZmQsIG1hc3Rlcl9yZWFkLCBzdGRpbl9yZWFkKQogICAgZmluYWxseToKICAgICAgICBpZiByZXN0b3JlOgogICAgICAgICAgICB0Y3NldGF0dHIoU1RESU5fRklMRU5PLCB0dHkuVENTQUZMVVNILCBtb2RlKQoKICAgIGNsb3NlKG1hc3Rlcl9mZCkKICAgIHJldHVybiB3YWl0cGlkKHBpZCwgMClbMV0KUEsDBBQAAAAAAAIgo1a00974nR4AAJ0eAAANAAAAcHlfY29tcGlsZS5weSIiIlJvdXRpbmUgdG8gImNvbXBpbGUiIGEgLnB5IGZpbGUgdG8gYSAucHljIGZpbGUuCgpUaGlzIG1vZHVsZSBoYXMgaW50aW1hdGUga25vd2xlZGdlIG9mIHRoZSBmb3JtYXQgb2YgLnB5YyBmaWxlcy4KIiIiCgppbXBvcnQgZW51bQppbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwKaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKaW1wb3J0IGltcG9ydGxpYi51dGlsCmltcG9ydCBvcwppbXBvcnQgb3MucGF0aAppbXBvcnQgc3lzCmltcG9ydCB0cmFjZWJhY2sKCl9fYWxsX18gPSBbImNvbXBpbGUiLCAibWFpbiIsICJQeUNvbXBpbGVFcnJvciIsICJQeWNJbnZhbGlkYXRpb25Nb2RlIl0KCgpjbGFzcyBQeUNvbXBpbGVFcnJvcihFeGNlcHRpb24pOgogICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGFuIGVycm9yIG9jY3VycyB3aGlsZSBhdHRlbXB0aW5nIHRvCiAgICBjb21waWxlIHRoZSBmaWxlLgoKICAgIFRvIHJhaXNlIHRoaXMgZXhjZXB0aW9uLCB1c2UKCiAgICAgICAgcmFpc2UgUHlDb21waWxlRXJyb3IoZXhjX3R5cGUsZXhjX3ZhbHVlLGZpbGVbLG1zZ10pCgogICAgd2hlcmUKCiAgICAgICAgZXhjX3R5cGU6ICAgZXhjZXB0aW9uIHR5cGUgdG8gYmUgdXNlZCBpbiBlcnJvciBtZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgdHlwZSBuYW1lIGNhbiBiZSBhY2Nlc3NlcyBhcyBjbGFzcyB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICdleGNfdHlwZV9uYW1lJwoKICAgICAgICBleGNfdmFsdWU6ICBleGNlcHRpb24gdmFsdWUgdG8gYmUgdXNlZCBpbiBlcnJvciBtZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgY2FuIGJlIGFjY2Vzc2VzIGFzIGNsYXNzIHZhcmlhYmxlICdleGNfdmFsdWUnCgogICAgICAgIGZpbGU6ICAgICAgIG5hbWUgb2YgZmlsZSBiZWluZyBjb21waWxlZCB0byBiZSB1c2VkIGluIGVycm9yIG1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICBjYW4gYmUgYWNjZXNzZXMgYXMgY2xhc3MgdmFyaWFibGUgJ2ZpbGUnCgogICAgICAgIG1zZzogICAgICAgIHN0cmluZyBtZXNzYWdlIHRvIGJlIHdyaXR0ZW4gYXMgZXJyb3IgbWVzc2FnZQogICAgICAgICAgICAgICAgICAgIElmIG5vIHZhbHVlIGlzIGdpdmVuLCBhIGRlZmF1bHQgZXhjZXB0aW9uIG1lc3NhZ2Ugd2lsbCBiZQogICAgICAgICAgICAgICAgICAgIGdpdmVuLCBjb25zaXN0ZW50IHdpdGggJ3N0YW5kYXJkJyBweV9jb21waWxlIG91dHB1dC4KICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIChvciBkZWZhdWx0KSBjYW4gYmUgYWNjZXNzZXMgYXMgY2xhc3MgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAnbXNnJwoKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBmaWxlLCBtc2c9JycpOgogICAgICAgIGV4Y190eXBlX25hbWUgPSBleGNfdHlwZS5fX25hbWVfXwogICAgICAgIGlmIGV4Y190eXBlIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICB0YnRleHQgPSAnJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoCiAgICAgICAgICAgICAgICBleGNfdHlwZSwgZXhjX3ZhbHVlKSkKICAgICAgICAgICAgZXJybXNnID0gdGJ0ZXh0LnJlcGxhY2UoJ0ZpbGUgIjxzdHJpbmc+IicsICdGaWxlICIlcyInICUgZmlsZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBlcnJtc2cgPSAiU29ycnk6ICVzOiAlcyIgJSAoZXhjX3R5cGVfbmFtZSxleGNfdmFsdWUpCgogICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLG1zZyBvciBlcnJtc2csZXhjX3R5cGVfbmFtZSxleGNfdmFsdWUsZmlsZSkKCiAgICAgICAgc2VsZi5leGNfdHlwZV9uYW1lID0gZXhjX3R5cGVfbmFtZQogICAgICAgIHNlbGYuZXhjX3ZhbHVlID0gZXhjX3ZhbHVlCiAgICAgICAgc2VsZi5maWxlID0gZmlsZQogICAgICAgIHNlbGYubXNnID0gbXNnIG9yIGVycm1zZwoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLm1zZwoKCmNsYXNzIFB5Y0ludmFsaWRhdGlvbk1vZGUoZW51bS5FbnVtKToKICAgIFRJTUVTVEFNUCA9IDEKICAgIENIRUNLRURfSEFTSCA9IDIKICAgIFVOQ0hFQ0tFRF9IQVNIID0gMwoKCmRlZiBfZ2V0X2RlZmF1bHRfaW52YWxpZGF0aW9uX21vZGUoKToKICAgIGlmIG9zLmVudmlyb24uZ2V0KCdTT1VSQ0VfREFURV9FUE9DSCcpOgogICAgICAgIHJldHVybiBQeWNJbnZhbGlkYXRpb25Nb2RlLkNIRUNLRURfSEFTSAogICAgZWxzZToKICAgICAgICByZXR1cm4gUHljSW52YWxpZGF0aW9uTW9kZS5USU1FU1RBTVAKCgpkZWYgY29tcGlsZShmaWxlLCBjZmlsZT1Ob25lLCBkZmlsZT1Ob25lLCBkb3JhaXNlPUZhbHNlLCBvcHRpbWl6ZT0tMSwKICAgICAgICAgICAgaW52YWxpZGF0aW9uX21vZGU9Tm9uZSwgcXVpZXQ9MCk6CiAgICAiIiJCeXRlLWNvbXBpbGUgb25lIFB5dGhvbiBzb3VyY2UgZmlsZSB0byBQeXRob24gYnl0ZWNvZGUuCgogICAgOnBhcmFtIGZpbGU6IFRoZSBzb3VyY2UgZmlsZSBuYW1lLgogICAgOnBhcmFtIGNmaWxlOiBUaGUgdGFyZ2V0IGJ5dGUgY29tcGlsZWQgZmlsZSBuYW1lLiAgV2hlbiBub3QgZ2l2ZW4sIHRoaXMKICAgICAgICBkZWZhdWx0cyB0byB0aGUgUEVQIDMxNDcvUEVQIDQ4OCBsb2NhdGlvbi4KICAgIDpwYXJhbSBkZmlsZTogUHVycG9ydGVkIGZpbGUgbmFtZSwgaS5lLiB0aGUgZmlsZSBuYW1lIHRoYXQgc2hvd3MgdXAgaW4KICAgICAgICBlcnJvciBtZXNzYWdlcy4gIERlZmF1bHRzIHRvIHRoZSBzb3VyY2UgZmlsZSBuYW1lLgogICAgOnBhcmFtIGRvcmFpc2U6IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCBhbiBleGNlcHRpb24gc2hvdWxkIGJlCiAgICAgICAgcmFpc2VkIHdoZW4gYSBjb21waWxlIGVycm9yIGlzIGZvdW5kLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBhbmQgdGhpcwogICAgICAgIGZsYWcgaXMgc2V0IHRvIEZhbHNlLCBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBuYXR1cmUgb2YgdGhlIGV4Y2VwdGlvbgogICAgICAgIHdpbGwgYmUgcHJpbnRlZCwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiB0byB0aGUgY2FsbGVyLiBJZiBhbgogICAgICAgIGV4Y2VwdGlvbiBvY2N1cnMgYW5kIHRoaXMgZmxhZyBpcyBzZXQgdG8gVHJ1ZSwgYSBQeUNvbXBpbGVFcnJvcgogICAgICAgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4KICAgIDpwYXJhbSBvcHRpbWl6ZTogVGhlIG9wdGltaXphdGlvbiBsZXZlbCBmb3IgdGhlIGNvbXBpbGVyLiAgVmFsaWQgdmFsdWVzCiAgICAgICAgYXJlIC0xLCAwLCAxIGFuZCAyLiAgQSB2YWx1ZSBvZiAtMSBtZWFucyB0byB1c2UgdGhlIG9wdGltaXphdGlvbgogICAgICAgIGxldmVsIG9mIHRoZSBjdXJyZW50IGludGVycHJldGVyLCBhcyBnaXZlbiBieSAtTyBjb21tYW5kIGxpbmUgb3B0aW9ucy4KICAgIDpwYXJhbSBpbnZhbGlkYXRpb25fbW9kZToKICAgIDpwYXJhbSBxdWlldDogUmV0dXJuIGZ1bGwgb3V0cHV0IHdpdGggRmFsc2Ugb3IgMCwgZXJyb3JzIG9ubHkgd2l0aCAxLAogICAgICAgIGFuZCBubyBvdXRwdXQgd2l0aCAyLgoKICAgIDpyZXR1cm46IFBhdGggdG8gdGhlIHJlc3VsdGluZyBieXRlIGNvbXBpbGVkIGZpbGUuCgogICAgTm90ZSB0aGF0IGl0IGlzbid0IG5lY2Vzc2FyeSB0byBieXRlLWNvbXBpbGUgUHl0aG9uIG1vZHVsZXMgZm9yCiAgICBleGVjdXRpb24gZWZmaWNpZW5jeSAtLSBQeXRob24gaXRzZWxmIGJ5dGUtY29tcGlsZXMgYSBtb2R1bGUgd2hlbgogICAgaXQgaXMgbG9hZGVkLCBhbmQgaWYgaXQgY2FuLCB3cml0ZXMgb3V0IHRoZSBieXRlY29kZSB0byB0aGUKICAgIGNvcnJlc3BvbmRpbmcgLnB5YyBmaWxlLgoKICAgIEhvd2V2ZXIsIGlmIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB1c2VycywgaXQgaXMgYQogICAgZ29vZCBpZGVhIHRvIGJ5dGUtY29tcGlsZSBhbGwgbW9kdWxlcyB1cG9uIGluc3RhbGxhdGlvbiwgc2luY2UKICAgIG90aGVyIHVzZXJzIG1heSBub3QgYmUgYWJsZSB0byB3cml0ZSBpbiB0aGUgc291cmNlIGRpcmVjdG9yaWVzLAogICAgYW5kIHRodXMgdGhleSB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRoZSAucHljIGZpbGUsIGFuZCB0aGVuCiAgICB0aGV5IHdvdWxkIGJlIGJ5dGUtY29tcGlsaW5nIGV2ZXJ5IG1vZHVsZSBlYWNoIHRpbWUgaXQgaXMgbG9hZGVkLgogICAgVGhpcyBjYW4gc2xvdyBkb3duIHByb2dyYW0gc3RhcnQtdXAgY29uc2lkZXJhYmx5LgoKICAgIFNlZSBjb21waWxlYWxsLnB5IGZvciBhIHNjcmlwdC9tb2R1bGUgdGhhdCB1c2VzIHRoaXMgbW9kdWxlIHRvCiAgICBieXRlLWNvbXBpbGUgYWxsIGluc3RhbGxlZCBmaWxlcyAob3IgYWxsIGZpbGVzIGluIHNlbGVjdGVkCiAgICBkaXJlY3RvcmllcykuCgogICAgRG8gbm90ZSB0aGF0IEZpbGVFeGlzdHNFcnJvciBpcyByYWlzZWQgaWYgY2ZpbGUgZW5kcyB1cCBwb2ludGluZyBhdCBhCiAgICBub24tcmVndWxhciBmaWxlIG9yIHN5bWxpbmsuIEJlY2F1c2UgdGhlIGNvbXBpbGF0aW9uIHVzZXMgYSBmaWxlIHJlbmFtaW5nLAogICAgdGhlIHJlc3VsdGluZyBmaWxlIHdvdWxkIGJlIHJlZ3VsYXIgYW5kIHRodXMgbm90IHRoZSBzYW1lIHR5cGUgb2YgZmlsZSBhcwogICAgaXQgd2FzIHByZXZpb3VzbHkuCiAgICAiIiIKICAgIGlmIGludmFsaWRhdGlvbl9tb2RlIGlzIE5vbmU6CiAgICAgICAgaW52YWxpZGF0aW9uX21vZGUgPSBfZ2V0X2RlZmF1bHRfaW52YWxpZGF0aW9uX21vZGUoKQogICAgaWYgY2ZpbGUgaXMgTm9uZToKICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgogICAgICAgICAgICBvcHRpbWl6YXRpb24gPSBvcHRpbWl6ZSBpZiBvcHRpbWl6ZSA+PSAxIGVsc2UgJycKICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbj1vcHRpbWl6YXRpb24pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlKQogICAgaWYgb3MucGF0aC5pc2xpbmsoY2ZpbGUpOgogICAgICAgIG1zZyA9ICgne30gaXMgYSBzeW1saW5rIGFuZCB3aWxsIGJlIGNoYW5nZWQgaW50byBhIHJlZ3VsYXIgZmlsZSBpZiAnCiAgICAgICAgICAgICAgICdpbXBvcnQgd3JpdGVzIGEgYnl0ZS1jb21waWxlZCBmaWxlIHRvIGl0JykKICAgICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IobXNnLmZvcm1hdChjZmlsZSkpCiAgICBlbGlmIG9zLnBhdGguZXhpc3RzKGNmaWxlKSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKGNmaWxlKToKICAgICAgICBtc2cgPSAoJ3t9IGlzIGEgbm9uLXJlZ3VsYXIgZmlsZSBhbmQgd2lsbCBiZSBjaGFuZ2VkIGludG8gYSByZWd1bGFyICcKICAgICAgICAgICAgICAgJ29uZSBpZiBpbXBvcnQgd3JpdGVzIGEgYnl0ZS1jb21waWxlZCBmaWxlIHRvIGl0JykKICAgICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IobXNnLmZvcm1hdChjZmlsZSkpCiAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJzxweV9jb21waWxlPicsIGZpbGUpCiAgICBzb3VyY2VfYnl0ZXMgPSBsb2FkZXIuZ2V0X2RhdGEoZmlsZSkKICAgIHRyeToKICAgICAgICBjb2RlID0gbG9hZGVyLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgZGZpbGUgb3IgZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vcHRpbWl6ZT1vcHRpbWl6ZSkKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgIHB5X2V4YyA9IFB5Q29tcGlsZUVycm9yKGVyci5fX2NsYXNzX18sIGVyciwgZGZpbGUgb3IgZmlsZSkKICAgICAgICBpZiBxdWlldCA8IDI6CiAgICAgICAgICAgIGlmIGRvcmFpc2U6CiAgICAgICAgICAgICAgICByYWlzZSBweV9leGMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUocHlfZXhjLm1zZyArICdcbicpCiAgICAgICAgcmV0dXJuCiAgICB0cnk6CiAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShjZmlsZSkKICAgICAgICBpZiBkaXJuYW1lOgogICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQogICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICBwYXNzCiAgICBpZiBpbnZhbGlkYXRpb25fbW9kZSA9PSBQeWNJbnZhbGlkYXRpb25Nb2RlLlRJTUVTVEFNUDoKICAgICAgICBzb3VyY2Vfc3RhdHMgPSBsb2FkZXIucGF0aF9zdGF0cyhmaWxlKQogICAgICAgIGJ5dGVjb2RlID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX2NvZGVfdG9fdGltZXN0YW1wX3B5YygKICAgICAgICAgICAgY29kZSwgc291cmNlX3N0YXRzWydtdGltZSddLCBzb3VyY2Vfc3RhdHNbJ3NpemUnXSkKICAgIGVsc2U6CiAgICAgICAgc291cmNlX2hhc2ggPSBpbXBvcnRsaWIudXRpbC5zb3VyY2VfaGFzaChzb3VyY2VfYnl0ZXMpCiAgICAgICAgYnl0ZWNvZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fY29kZV90b19oYXNoX3B5YygKICAgICAgICAgICAgY29kZSwKICAgICAgICAgICAgc291cmNlX2hhc2gsCiAgICAgICAgICAgIChpbnZhbGlkYXRpb25fbW9kZSA9PSBQeWNJbnZhbGlkYXRpb25Nb2RlLkNIRUNLRURfSEFTSCksCiAgICAgICAgKQogICAgbW9kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9jYWxjX21vZGUoZmlsZSkKICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl93cml0ZV9hdG9taWMoY2ZpbGUsIGJ5dGVjb2RlLCBtb2RlKQogICAgcmV0dXJuIGNmaWxlCgoKZGVmIG1haW4oKToKICAgIGltcG9ydCBhcmdwYXJzZQoKICAgIGRlc2NyaXB0aW9uID0gJ0Egc2ltcGxlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgZm9yIHB5X2NvbXBpbGUgbW9kdWxlLicKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAnLXEnLCAnLS1xdWlldCcsCiAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICBoZWxwPSdTdXBwcmVzcyBlcnJvciBvdXRwdXQnLAogICAgKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAnZmlsZW5hbWVzJywKICAgICAgICBuYXJncz0nKycsCiAgICAgICAgaGVscD0nRmlsZXMgdG8gY29tcGlsZScsCiAgICApCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgaWYgYXJncy5maWxlbmFtZXMgPT0gWyctJ106CiAgICAgICAgZmlsZW5hbWVzID0gW2ZpbGVuYW1lLnJzdHJpcCgnXG4nKSBmb3IgZmlsZW5hbWUgaW4gc3lzLnN0ZGluLnJlYWRsaW5lcygpXQogICAgZWxzZToKICAgICAgICBmaWxlbmFtZXMgPSBhcmdzLmZpbGVuYW1lcwogICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lczoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNvbXBpbGUoZmlsZW5hbWUsIGRvcmFpc2U9VHJ1ZSkKICAgICAgICBleGNlcHQgUHlDb21waWxlRXJyb3IgYXMgZXJyb3I6CiAgICAgICAgICAgIGlmIGFyZ3MucXVpZXQ6CiAgICAgICAgICAgICAgICBwYXJzZXIuZXhpdCgxKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcGFyc2VyLmV4aXQoMSwgZXJyb3IubXNnKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgogICAgICAgICAgICBpZiBhcmdzLnF1aWV0OgogICAgICAgICAgICAgICAgcGFyc2VyLmV4aXQoMSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHBhcnNlci5leGl0KDEsIHN0cihlcnJvcikpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIG1haW4oKQpQSwMEFAAAAAAAAiCjVgFsq9GELAAAhCwAAAkAAABweWNsYnIucHkiIiJQYXJzZSBhIFB5dGhvbiBtb2R1bGUgYW5kIGRlc2NyaWJlIGl0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCgpQYXJzZSBlbm91Z2ggb2YgYSBQeXRob24gZmlsZSB0byByZWNvZ25pemUgaW1wb3J0cyBhbmQgY2xhc3MgYW5kCmZ1bmN0aW9uIGRlZmluaXRpb25zLCBhbmQgdG8gZmluZCBvdXQgdGhlIHN1cGVyY2xhc3NlcyBvZiBhIGNsYXNzLgoKVGhlIGludGVyZmFjZSBjb25zaXN0cyBvZiBhIHNpbmdsZSBmdW5jdGlvbjoKICAgIHJlYWRtb2R1bGVfZXgobW9kdWxlLCBwYXRoPU5vbmUpCndoZXJlIG1vZHVsZSBpcyB0aGUgbmFtZSBvZiBhIFB5dGhvbiBtb2R1bGUsIGFuZCBwYXRoIGlzIGFuIG9wdGlvbmFsCmxpc3Qgb2YgZGlyZWN0b3JpZXMgd2hlcmUgdGhlIG1vZHVsZSBpcyB0byBiZSBzZWFyY2hlZC4gIElmIHByZXNlbnQsCnBhdGggaXMgcHJlcGVuZGVkIHRvIHRoZSBzeXN0ZW0gc2VhcmNoIHBhdGggc3lzLnBhdGguICBUaGUgcmV0dXJuIHZhbHVlCmlzIGEgZGljdGlvbmFyeS4gIFRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5IGFyZSB0aGUgbmFtZXMgb2YgdGhlCmNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgKGluY2x1ZGluZyBjbGFzc2VzIHRoYXQgYXJlCmRlZmluZWQgdmlhIHRoZSBmcm9tIFhYWCBpbXBvcnQgWVlZIGNvbnN0cnVjdCkuICBUaGUgdmFsdWVzIGFyZQppbnN0YW5jZXMgb2YgY2xhc3NlcyBDbGFzcyBhbmQgRnVuY3Rpb24uICBPbmUgc3BlY2lhbCBrZXkvdmFsdWUgcGFpciBpcwpwcmVzZW50IGZvciBwYWNrYWdlczogdGhlIGtleSAnX19wYXRoX18nIGhhcyBhIGxpc3QgYXMgaXRzIHZhbHVlIHdoaWNoCmNvbnRhaW5zIHRoZSBwYWNrYWdlIHNlYXJjaCBwYXRoLgoKQ2xhc3NlcyBhbmQgRnVuY3Rpb25zIGhhdmUgYSBjb21tb24gc3VwZXJjbGFzczogX09iamVjdC4gIEV2ZXJ5IGluc3RhbmNlCmhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CiAgICBtb2R1bGUgIC0tIG5hbWUgb2YgdGhlIG1vZHVsZTsKICAgIG5hbWUgICAgLS0gbmFtZSBvZiB0aGUgb2JqZWN0OwogICAgZmlsZSAgICAtLSBmaWxlIGluIHdoaWNoIHRoZSBvYmplY3QgaXMgZGVmaW5lZDsKICAgIGxpbmVubyAgLS0gbGluZSBpbiB0aGUgZmlsZSB3aGVyZSB0aGUgb2JqZWN0J3MgZGVmaW5pdGlvbiBzdGFydHM7CiAgICBlbmRfbGluZW5vIC0tIGxpbmUgaW4gdGhlIGZpbGUgd2hlcmUgdGhlIG9iamVjdCdzIGRlZmluaXRpb24gZW5kczsKICAgIHBhcmVudCAgLS0gcGFyZW50IG9mIHRoaXMgb2JqZWN0LCBpZiBhbnk7CiAgICBjaGlsZHJlbiAtLSBuZXN0ZWQgb2JqZWN0cyBjb250YWluZWQgaW4gdGhpcyBvYmplY3QuClRoZSAnY2hpbGRyZW4nIGF0dHJpYnV0ZSBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBuYW1lcyB0byBvYmplY3RzLgoKSW5zdGFuY2VzIG9mIEZ1bmN0aW9uIGRlc2NyaWJlIGZ1bmN0aW9ucyB3aXRoIHRoZSBhdHRyaWJ1dGVzIGZyb20gX09iamVjdCwKcGx1cyB0aGUgZm9sbG93aW5nOgogICAgaXNfYXN5bmMgLS0gaWYgYSBmdW5jdGlvbiBpcyBkZWZpbmVkIHdpdGggYW4gJ2FzeW5jJyBwcmVmaXgKCkluc3RhbmNlcyBvZiBDbGFzcyBkZXNjcmliZSBjbGFzc2VzIHdpdGggdGhlIGF0dHJpYnV0ZXMgZnJvbSBfT2JqZWN0LApwbHVzIHRoZSBmb2xsb3dpbmc6CiAgICBzdXBlciAgIC0tIGxpc3Qgb2Ygc3VwZXIgY2xhc3NlcyAoQ2xhc3MgaW5zdGFuY2VzIGlmIHBvc3NpYmxlKTsKICAgIG1ldGhvZHMgLS0gbWFwcGluZyBvZiBtZXRob2QgbmFtZXMgdG8gYmVnaW5uaW5nIGxpbmUgbnVtYmVycy4KSWYgdGhlIG5hbWUgb2YgYSBzdXBlciBjbGFzcyBpcyBub3QgcmVjb2duaXplZCwgdGhlIGNvcnJlc3BvbmRpbmcKZW50cnkgaW4gdGhlIGxpc3Qgb2Ygc3VwZXIgY2xhc3NlcyBpcyBub3QgYSBjbGFzcyBpbnN0YW5jZSBidXQgYQpzdHJpbmcgZ2l2aW5nIHRoZSBuYW1lIG9mIHRoZSBzdXBlciBjbGFzcy4gIFNpbmNlIGltcG9ydCBzdGF0ZW1lbnRzCmFyZSByZWNvZ25pemVkIGFuZCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzY2FubmVkIGFzIHdlbGwsIHRoaXMKc2hvdWxkbid0IGhhcHBlbiBvZnRlbi4KIiIiCgppbXBvcnQgYXN0CmltcG9ydCBzeXMKaW1wb3J0IGltcG9ydGxpYi51dGlsCgpfX2FsbF9fID0gWyJyZWFkbW9kdWxlIiwgInJlYWRtb2R1bGVfZXgiLCAiQ2xhc3MiLCAiRnVuY3Rpb24iXQoKX21vZHVsZXMgPSB7fSAgIyBJbml0aWFsaXplIGNhY2hlIG9mIG1vZHVsZXMgd2UndmUgc2Vlbi4KCgpjbGFzcyBfT2JqZWN0OgogICAgIkluZm9ybWF0aW9uIGFib3V0IFB5dGhvbiBjbGFzcyBvciBmdW5jdGlvbi4iCiAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kdWxlLCBuYW1lLCBmaWxlLCBsaW5lbm8sIGVuZF9saW5lbm8sIHBhcmVudCk6CiAgICAgICAgc2VsZi5tb2R1bGUgPSBtb2R1bGUKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5maWxlID0gZmlsZQogICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgc2VsZi5lbmRfbGluZW5vID0gZW5kX2xpbmVubwogICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CiAgICAgICAgc2VsZi5jaGlsZHJlbiA9IHt9CiAgICAgICAgaWYgcGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW5bbmFtZV0gPSBzZWxmCgoKIyBPZGQgRnVuY3Rpb24gYW5kIENsYXNzIHNpZ25hdHVyZXMgYXJlIGZvciBiYWNrLWNvbXBhdGliaWxpdHkuCmNsYXNzIEZ1bmN0aW9uKF9PYmplY3QpOgogICAgIkluZm9ybWF0aW9uIGFib3V0IGEgUHl0aG9uIGZ1bmN0aW9uLCBpbmNsdWRpbmcgbWV0aG9kcy4iCiAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kdWxlLCBuYW1lLCBmaWxlLCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgcGFyZW50PU5vbmUsIGlzX2FzeW5jPUZhbHNlLCAqLCBlbmRfbGluZW5vPU5vbmUpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18obW9kdWxlLCBuYW1lLCBmaWxlLCBsaW5lbm8sIGVuZF9saW5lbm8sIHBhcmVudCkKICAgICAgICBzZWxmLmlzX2FzeW5jID0gaXNfYXN5bmMKICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmVudCwgQ2xhc3MpOgogICAgICAgICAgICBwYXJlbnQubWV0aG9kc1tuYW1lXSA9IGxpbmVubwoKCmNsYXNzIENsYXNzKF9PYmplY3QpOgogICAgIkluZm9ybWF0aW9uIGFib3V0IGEgUHl0aG9uIGNsYXNzLiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGUsIG5hbWUsIHN1cGVyXywgZmlsZSwgbGluZW5vLAogICAgICAgICAgICAgICAgIHBhcmVudD1Ob25lLCAqLCBlbmRfbGluZW5vPU5vbmUpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18obW9kdWxlLCBuYW1lLCBmaWxlLCBsaW5lbm8sIGVuZF9saW5lbm8sIHBhcmVudCkKICAgICAgICBzZWxmLnN1cGVyID0gc3VwZXJfIG9yIFtdCiAgICAgICAgc2VsZi5tZXRob2RzID0ge30KCgojIFRoZXNlIDIgZnVuY3Rpb25zIGFyZSB1c2VkIGluIHRoZXNlIHRlc3RzCiMgTGliL3Rlc3QvdGVzdF9weWNsYnIsIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2Jyb3dzZXIucHkKZGVmIF9uZXN0X2Z1bmN0aW9uKG9iLCBmdW5jX25hbWUsIGxpbmVubywgZW5kX2xpbmVubywgaXNfYXN5bmM9RmFsc2UpOgogICAgIlJldHVybiBhIEZ1bmN0aW9uIGFmdGVyIG5lc3Rpbmcgd2l0aGluIG9iLiIKICAgIHJldHVybiBGdW5jdGlvbihvYi5tb2R1bGUsIGZ1bmNfbmFtZSwgb2IuZmlsZSwgbGluZW5vLAogICAgICAgICAgICAgICAgICAgIHBhcmVudD1vYiwgaXNfYXN5bmM9aXNfYXN5bmMsIGVuZF9saW5lbm89ZW5kX2xpbmVubykKCmRlZiBfbmVzdF9jbGFzcyhvYiwgY2xhc3NfbmFtZSwgbGluZW5vLCBlbmRfbGluZW5vLCBzdXBlcj1Ob25lKToKICAgICJSZXR1cm4gYSBDbGFzcyBhZnRlciBuZXN0aW5nIHdpdGhpbiBvYi4iCiAgICByZXR1cm4gQ2xhc3Mob2IubW9kdWxlLCBjbGFzc19uYW1lLCBzdXBlciwgb2IuZmlsZSwgbGluZW5vLAogICAgICAgICAgICAgICAgIHBhcmVudD1vYiwgZW5kX2xpbmVubz1lbmRfbGluZW5vKQoKCmRlZiByZWFkbW9kdWxlKG1vZHVsZSwgcGF0aD1Ob25lKToKICAgICIiIlJldHVybiBDbGFzcyBvYmplY3RzIGZvciB0aGUgdG9wLWxldmVsIGNsYXNzZXMgaW4gbW9kdWxlLgoKICAgIFRoaXMgaXMgdGhlIG9yaWdpbmFsIGludGVyZmFjZSwgYmVmb3JlIEZ1bmN0aW9ucyB3ZXJlIGFkZGVkLgogICAgIiIiCgogICAgcmVzID0ge30KICAgIGZvciBrZXksIHZhbHVlIGluIF9yZWFkbW9kdWxlKG1vZHVsZSwgcGF0aCBvciBbXSkuaXRlbXMoKToKICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBDbGFzcyk6CiAgICAgICAgICAgIHJlc1trZXldID0gdmFsdWUKICAgIHJldHVybiByZXMKCmRlZiByZWFkbW9kdWxlX2V4KG1vZHVsZSwgcGF0aD1Ob25lKToKICAgICIiIlJldHVybiBhIGRpY3Rpb25hcnkgd2l0aCBhbGwgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIGluIG1vZHVsZS4KCiAgICBTZWFyY2ggZm9yIG1vZHVsZSBpbiBQQVRIICsgc3lzLnBhdGguCiAgICBJZiBwb3NzaWJsZSwgaW5jbHVkZSBpbXBvcnRlZCBzdXBlcmNsYXNzZXMuCiAgICBEbyB0aGlzIGJ5IHJlYWRpbmcgc291cmNlLCB3aXRob3V0IGltcG9ydGluZyAoYW5kIGV4ZWN1dGluZykgaXQuCiAgICAiIiIKICAgIHJldHVybiBfcmVhZG1vZHVsZShtb2R1bGUsIHBhdGggb3IgW10pCgoKZGVmIF9yZWFkbW9kdWxlKG1vZHVsZSwgcGF0aCwgaW5wYWNrYWdlPU5vbmUpOgogICAgIiIiRG8gdGhlIGhhcmQgd29yayBmb3IgcmVhZG1vZHVsZVtfZXhdLgoKICAgIElmIGlucGFja2FnZSBpcyBnaXZlbiwgaXQgbXVzdCBiZSB0aGUgZG90dGVkIG5hbWUgb2YgdGhlIHBhY2thZ2UgaW4KICAgIHdoaWNoIHdlIGFyZSBzZWFyY2hpbmcgZm9yIGEgc3VibW9kdWxlLCBhbmQgdGhlbiBQQVRIIG11c3QgYmUgdGhlCiAgICBwYWNrYWdlIHNlYXJjaCBwYXRoOyBvdGhlcndpc2UsIHdlIGFyZSBzZWFyY2hpbmcgZm9yIGEgdG9wLWxldmVsCiAgICBtb2R1bGUsIGFuZCBwYXRoIGlzIGNvbWJpbmVkIHdpdGggc3lzLnBhdGguCiAgICAiIiIKICAgICMgQ29tcHV0ZSB0aGUgZnVsbCBtb2R1bGUgbmFtZSAocHJlcGVuZGluZyBpbnBhY2thZ2UgaWYgc2V0KS4KICAgIGlmIGlucGFja2FnZSBpcyBub3QgTm9uZToKICAgICAgICBmdWxsbW9kdWxlID0gIiVzLiVzIiAlIChpbnBhY2thZ2UsIG1vZHVsZSkKICAgIGVsc2U6CiAgICAgICAgZnVsbG1vZHVsZSA9IG1vZHVsZQoKICAgICMgQ2hlY2sgaW4gdGhlIGNhY2hlLgogICAgaWYgZnVsbG1vZHVsZSBpbiBfbW9kdWxlczoKICAgICAgICByZXR1cm4gX21vZHVsZXNbZnVsbG1vZHVsZV0KCiAgICAjIEluaXRpYWxpemUgdGhlIGRpY3QgZm9yIHRoaXMgbW9kdWxlJ3MgY29udGVudHMuCiAgICB0cmVlID0ge30KCiAgICAjIENoZWNrIGlmIGl0IGlzIGEgYnVpbHQtaW4gbW9kdWxlOyB3ZSBkb24ndCBkbyBtdWNoIGZvciB0aGVzZS4KICAgIGlmIG1vZHVsZSBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgYW5kIGlucGFja2FnZSBpcyBOb25lOgogICAgICAgIF9tb2R1bGVzW21vZHVsZV0gPSB0cmVlCiAgICAgICAgcmV0dXJuIHRyZWUKCiAgICAjIENoZWNrIGZvciBhIGRvdHRlZCBtb2R1bGUgbmFtZS4KICAgIGkgPSBtb2R1bGUucmZpbmQoJy4nKQogICAgaWYgaSA+PSAwOgogICAgICAgIHBhY2thZ2UgPSBtb2R1bGVbOmldCiAgICAgICAgc3VibW9kdWxlID0gbW9kdWxlW2krMTpdCiAgICAgICAgcGFyZW50ID0gX3JlYWRtb2R1bGUocGFja2FnZSwgcGF0aCwgaW5wYWNrYWdlKQogICAgICAgIGlmIGlucGFja2FnZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgcGFja2FnZSA9ICIlcy4lcyIgJSAoaW5wYWNrYWdlLCBwYWNrYWdlKQogICAgICAgIGlmIG5vdCAnX19wYXRoX18nIGluIHBhcmVudDoKICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ05vIHBhY2thZ2UgbmFtZWQge30nLmZvcm1hdChwYWNrYWdlKSkKICAgICAgICByZXR1cm4gX3JlYWRtb2R1bGUoc3VibW9kdWxlLCBwYXJlbnRbJ19fcGF0aF9fJ10sIHBhY2thZ2UpCgogICAgIyBTZWFyY2ggdGhlIHBhdGggZm9yIHRoZSBtb2R1bGUuCiAgICBmID0gTm9uZQogICAgaWYgaW5wYWNrYWdlIGlzIG5vdCBOb25lOgogICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aAogICAgZWxzZToKICAgICAgICBzZWFyY2hfcGF0aCA9IHBhdGggKyBzeXMucGF0aAogICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLl9maW5kX3NwZWNfZnJvbV9wYXRoKGZ1bGxtb2R1bGUsIHNlYXJjaF9wYXRoKQogICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IoZiJubyBtb2R1bGUgbmFtZWQge2Z1bGxtb2R1bGUhcn0iLCBuYW1lPWZ1bGxtb2R1bGUpCiAgICBfbW9kdWxlc1tmdWxsbW9kdWxlXSA9IHRyZWUKICAgICMgSXMgbW9kdWxlIGEgcGFja2FnZT8KICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgbm90IE5vbmU6CiAgICAgICAgdHJlZVsnX19wYXRoX18nXSA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKICAgIHRyeToKICAgICAgICBzb3VyY2UgPSBzcGVjLmxvYWRlci5nZXRfc291cmNlKGZ1bGxtb2R1bGUpCiAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcik6CiAgICAgICAgIyBJZiBtb2R1bGUgaXMgbm90IFB5dGhvbiBzb3VyY2UsIHdlIGNhbm5vdCBkbyBhbnl0aGluZy4KICAgICAgICByZXR1cm4gdHJlZQogICAgZWxzZToKICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHRyZWUKCiAgICBmbmFtZSA9IHNwZWMubG9hZGVyLmdldF9maWxlbmFtZShmdWxsbW9kdWxlKQogICAgcmV0dXJuIF9jcmVhdGVfdHJlZShmdWxsbW9kdWxlLCBwYXRoLCBmbmFtZSwgc291cmNlLCB0cmVlLCBpbnBhY2thZ2UpCgoKY2xhc3MgX01vZHVsZUJyb3dzZXIoYXN0Lk5vZGVWaXNpdG9yKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGUsIHBhdGgsIGZpbGUsIHRyZWUsIGlucGFja2FnZSk6CiAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogICAgICAgIHNlbGYudHJlZSA9IHRyZWUKICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCiAgICAgICAgc2VsZi5tb2R1bGUgPSBtb2R1bGUKICAgICAgICBzZWxmLmlucGFja2FnZSA9IGlucGFja2FnZQogICAgICAgIHNlbGYuc3RhY2sgPSBbXQoKICAgIGRlZiB2aXNpdF9DbGFzc0RlZihzZWxmLCBub2RlKToKICAgICAgICBiYXNlcyA9IFtdCiAgICAgICAgZm9yIGJhc2UgaW4gbm9kZS5iYXNlczoKICAgICAgICAgICAgbmFtZSA9IGFzdC51bnBhcnNlKGJhc2UpCiAgICAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi50cmVlOgogICAgICAgICAgICAgICAgIyBXZSBrbm93IHRoaXMgc3VwZXIgY2xhc3MuCiAgICAgICAgICAgICAgICBiYXNlcy5hcHBlbmQoc2VsZi50cmVlW25hbWVdKQogICAgICAgICAgICBlbGlmIGxlbihuYW1lcyA6PSBuYW1lLnNwbGl0KCIuIikpID4gMToKICAgICAgICAgICAgICAgICMgU3VwZXIgY2xhc3MgZm9ybSBpcyBtb2R1bGUuY2xhc3M6CiAgICAgICAgICAgICAgICAjIGxvb2sgaW4gbW9kdWxlIGZvciBjbGFzcy4KICAgICAgICAgICAgICAgICpfLCBtb2R1bGUsIGNsYXNzXyA9IG5hbWVzCiAgICAgICAgICAgICAgICBpZiBtb2R1bGUgaW4gX21vZHVsZXM6CiAgICAgICAgICAgICAgICAgICAgYmFzZXMuYXBwZW5kKF9tb2R1bGVzW21vZHVsZV0uZ2V0KGNsYXNzXywgbmFtZSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBiYXNlcy5hcHBlbmQobmFtZSkKCiAgICAgICAgcGFyZW50ID0gc2VsZi5zdGFja1stMV0gaWYgc2VsZi5zdGFjayBlbHNlIE5vbmUKICAgICAgICBjbGFzc18gPSBDbGFzcyhzZWxmLm1vZHVsZSwgbm9kZS5uYW1lLCBiYXNlcywgc2VsZi5maWxlLCBub2RlLmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50LCBlbmRfbGluZW5vPW5vZGUuZW5kX2xpbmVubykKICAgICAgICBpZiBwYXJlbnQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi50cmVlW25vZGUubmFtZV0gPSBjbGFzc18KICAgICAgICBzZWxmLnN0YWNrLmFwcGVuZChjbGFzc18pCiAgICAgICAgc2VsZi5nZW5lcmljX3Zpc2l0KG5vZGUpCiAgICAgICAgc2VsZi5zdGFjay5wb3AoKQoKICAgIGRlZiB2aXNpdF9GdW5jdGlvbkRlZihzZWxmLCBub2RlLCAqLCBpc19hc3luYz1GYWxzZSk6CiAgICAgICAgcGFyZW50ID0gc2VsZi5zdGFja1stMV0gaWYgc2VsZi5zdGFjayBlbHNlIE5vbmUKICAgICAgICBmdW5jdGlvbiA9IEZ1bmN0aW9uKHNlbGYubW9kdWxlLCBub2RlLm5hbWUsIHNlbGYuZmlsZSwgbm9kZS5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQsIGlzX2FzeW5jLCBlbmRfbGluZW5vPW5vZGUuZW5kX2xpbmVubykKICAgICAgICBpZiBwYXJlbnQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi50cmVlW25vZGUubmFtZV0gPSBmdW5jdGlvbgogICAgICAgIHNlbGYuc3RhY2suYXBwZW5kKGZ1bmN0aW9uKQogICAgICAgIHNlbGYuZ2VuZXJpY192aXNpdChub2RlKQogICAgICAgIHNlbGYuc3RhY2sucG9wKCkKCiAgICBkZWYgdmlzaXRfQXN5bmNGdW5jdGlvbkRlZihzZWxmLCBub2RlKToKICAgICAgICBzZWxmLnZpc2l0X0Z1bmN0aW9uRGVmKG5vZGUsIGlzX2FzeW5jPVRydWUpCgogICAgZGVmIHZpc2l0X0ltcG9ydChzZWxmLCBub2RlKToKICAgICAgICBpZiBub2RlLmNvbF9vZmZzZXQgIT0gMDoKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGZvciBtb2R1bGUgaW4gbm9kZS5uYW1lczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIF9yZWFkbW9kdWxlKG1vZHVsZS5uYW1lLCBzZWxmLnBhdGgsIHNlbGYuaW5wYWNrYWdlKQogICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgICAgIF9yZWFkbW9kdWxlKG1vZHVsZS5uYW1lLCBbXSkKICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgU3ludGF4RXJyb3IpOgogICAgICAgICAgICAgICAgIyBJZiB3ZSBjYW4ndCBmaW5kIG9yIHBhcnNlIHRoZSBpbXBvcnRlZCBtb2R1bGUsCiAgICAgICAgICAgICAgICAjIHRvbyBiYWQgLS0gZG9uJ3QgZGllIGhlcmUuCiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgIGRlZiB2aXNpdF9JbXBvcnRGcm9tKHNlbGYsIG5vZGUpOgogICAgICAgIGlmIG5vZGUuY29sX29mZnNldCAhPSAwOgogICAgICAgICAgICByZXR1cm4KICAgICAgICB0cnk6CiAgICAgICAgICAgIG1vZHVsZSA9ICIuIiAqIG5vZGUubGV2ZWwKICAgICAgICAgICAgaWYgbm9kZS5tb2R1bGU6CiAgICAgICAgICAgICAgICBtb2R1bGUgKz0gbm9kZS5tb2R1bGUKICAgICAgICAgICAgbW9kdWxlID0gX3JlYWRtb2R1bGUobW9kdWxlLCBzZWxmLnBhdGgsIHNlbGYuaW5wYWNrYWdlKQogICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIFN5bnRheEVycm9yKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGZvciBuYW1lIGluIG5vZGUubmFtZXM6CiAgICAgICAgICAgIGlmIG5hbWUubmFtZSBpbiBtb2R1bGU6CiAgICAgICAgICAgICAgICBzZWxmLnRyZWVbbmFtZS5hc25hbWUgb3IgbmFtZS5uYW1lXSA9IG1vZHVsZVtuYW1lLm5hbWVdCiAgICAgICAgICAgIGVsaWYgbmFtZS5uYW1lID09ICIqIjoKICAgICAgICAgICAgICAgIGZvciBpbXBvcnRfbmFtZSwgaW1wb3J0X3ZhbHVlIGluIG1vZHVsZS5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgIGlmIGltcG9ydF9uYW1lLnN0YXJ0c3dpdGgoIl8iKToKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBzZWxmLnRyZWVbaW1wb3J0X25hbWVdID0gaW1wb3J0X3ZhbHVlCgoKZGVmIF9jcmVhdGVfdHJlZShmdWxsbW9kdWxlLCBwYXRoLCBmbmFtZSwgc291cmNlLCB0cmVlLCBpbnBhY2thZ2UpOgogICAgbWJyb3dzZXIgPSBfTW9kdWxlQnJvd3NlcihmdWxsbW9kdWxlLCBwYXRoLCBmbmFtZSwgdHJlZSwgaW5wYWNrYWdlKQogICAgbWJyb3dzZXIudmlzaXQoYXN0LnBhcnNlKHNvdXJjZSkpCiAgICByZXR1cm4gbWJyb3dzZXIudHJlZQoKCmRlZiBfbWFpbigpOgogICAgIlByaW50IG1vZHVsZSBvdXRwdXQgKGRlZmF1bHQgdGhpcyBmaWxlKSBmb3IgcXVpY2sgdmlzdWFsIGNoZWNrLiIKICAgIGltcG9ydCBvcwogICAgdHJ5OgogICAgICAgIG1vZCA9IHN5cy5hcmd2WzFdCiAgICBleGNlcHQ6CiAgICAgICAgbW9kID0gX19maWxlX18KICAgIGlmIG9zLnBhdGguZXhpc3RzKG1vZCk6CiAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUobW9kKV0KICAgICAgICBtb2QgPSBvcy5wYXRoLmJhc2VuYW1lKG1vZCkKICAgICAgICBpZiBtb2QubG93ZXIoKS5lbmRzd2l0aCgiLnB5Iik6CiAgICAgICAgICAgIG1vZCA9IG1vZFs6LTNdCiAgICBlbHNlOgogICAgICAgIHBhdGggPSBbXQogICAgdHJlZSA9IHJlYWRtb2R1bGVfZXgobW9kLCBwYXRoKQogICAgbGluZW5vX2tleSA9IGxhbWJkYSBhOiBnZXRhdHRyKGEsICdsaW5lbm8nLCAwKQogICAgb2JqcyA9IHNvcnRlZCh0cmVlLnZhbHVlcygpLCBrZXk9bGluZW5vX2tleSwgcmV2ZXJzZT1UcnVlKQogICAgaW5kZW50X2xldmVsID0gMgogICAgd2hpbGUgb2JqczoKICAgICAgICBvYmogPSBvYmpzLnBvcCgpCiAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIGxpc3QpOgogICAgICAgICAgICAjIFZhbHVlIGlzIGEgX19wYXRoX18ga2V5LgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIG5vdCBoYXNhdHRyKG9iaiwgJ2luZGVudCcpOgogICAgICAgICAgICBvYmouaW5kZW50ID0gMAoKICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgX09iamVjdCk6CiAgICAgICAgICAgIG5ld19vYmpzID0gc29ydGVkKG9iai5jaGlsZHJlbi52YWx1ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWxpbmVub19rZXksIHJldmVyc2U9VHJ1ZSkKICAgICAgICAgICAgZm9yIG9iIGluIG5ld19vYmpzOgogICAgICAgICAgICAgICAgb2IuaW5kZW50ID0gb2JqLmluZGVudCArIGluZGVudF9sZXZlbAogICAgICAgICAgICBvYmpzLmV4dGVuZChuZXdfb2JqcykKICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgQ2xhc3MpOgogICAgICAgICAgICBwcmludCgie31jbGFzcyB7fSB7fSB7fSIKICAgICAgICAgICAgICAgICAgLmZvcm1hdCgnICcgKiBvYmouaW5kZW50LCBvYmoubmFtZSwgb2JqLnN1cGVyLCBvYmoubGluZW5vKSkKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCBGdW5jdGlvbik6CiAgICAgICAgICAgIHByaW50KCJ7fWRlZiB7fSB7fSIuZm9ybWF0KCcgJyAqIG9iai5pbmRlbnQsIG9iai5uYW1lLCBvYmoubGluZW5vKSkKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBfbWFpbigpClBLAwQUAAAAAAACIKNWJ9s/ZiOpAQAjqQEACAAAAHB5ZG9jLnB5IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJHZW5lcmF0ZSBQeXRob24gZG9jdW1lbnRhdGlvbiBpbiBIVE1MIG9yIHRleHQgZm9yIGludGVyYWN0aXZlIHVzZS4KCkF0IHRoZSBQeXRob24gaW50ZXJhY3RpdmUgcHJvbXB0LCBjYWxsaW5nIGhlbHAodGhpbmcpIG9uIGEgUHl0aG9uIG9iamVjdApkb2N1bWVudHMgdGhlIG9iamVjdCwgYW5kIGNhbGxpbmcgaGVscCgpIHN0YXJ0cyB1cCBhbiBpbnRlcmFjdGl2ZQpoZWxwIHNlc3Npb24uCgpPciwgYXQgdGhlIHNoZWxsIGNvbW1hbmQgbGluZSBvdXRzaWRlIG9mIFB5dGhvbjoKClJ1biAicHlkb2MgPG5hbWU+IiB0byBzaG93IGRvY3VtZW50YXRpb24gb24gc29tZXRoaW5nLiAgPG5hbWU+IG1heSBiZQp0aGUgbmFtZSBvZiBhIGZ1bmN0aW9uLCBtb2R1bGUsIHBhY2thZ2UsIG9yIGEgZG90dGVkIHJlZmVyZW5jZSB0byBhCmNsYXNzIG9yIGZ1bmN0aW9uIHdpdGhpbiBhIG1vZHVsZSBvciBtb2R1bGUgaW4gYSBwYWNrYWdlLiAgSWYgdGhlCmFyZ3VtZW50IGNvbnRhaW5zIGEgcGF0aCBzZWdtZW50IGRlbGltaXRlciAoZS5nLiBzbGFzaCBvbiBVbml4LApiYWNrc2xhc2ggb24gV2luZG93cykgaXQgaXMgdHJlYXRlZCBhcyB0aGUgcGF0aCB0byBhIFB5dGhvbiBzb3VyY2UgZmlsZS4KClJ1biAicHlkb2MgLWsgPGtleXdvcmQ+IiB0byBzZWFyY2ggZm9yIGEga2V5d29yZCBpbiB0aGUgc3lub3BzaXMgbGluZXMKb2YgYWxsIGF2YWlsYWJsZSBtb2R1bGVzLgoKUnVuICJweWRvYyAtbiA8aG9zdG5hbWU+IiB0byBzdGFydCBhbiBIVFRQIHNlcnZlciB3aXRoIHRoZSBnaXZlbgpob3N0bmFtZSAoZGVmYXVsdDogbG9jYWxob3N0KSBvbiB0aGUgbG9jYWwgbWFjaGluZS4KClJ1biAicHlkb2MgLXAgPHBvcnQ+IiB0byBzdGFydCBhbiBIVFRQIHNlcnZlciBvbiB0aGUgZ2l2ZW4gcG9ydCBvbiB0aGUKbG9jYWwgbWFjaGluZS4gIFBvcnQgbnVtYmVyIDAgY2FuIGJlIHVzZWQgdG8gZ2V0IGFuIGFyYml0cmFyeSB1bnVzZWQgcG9ydC4KClJ1biAicHlkb2MgLWIiIHRvIHN0YXJ0IGFuIEhUVFAgc2VydmVyIG9uIGFuIGFyYml0cmFyeSB1bnVzZWQgcG9ydCBhbmQKb3BlbiBhIHdlYiBicm93c2VyIHRvIGludGVyYWN0aXZlbHkgYnJvd3NlIGRvY3VtZW50YXRpb24uICBDb21iaW5lIHdpdGgKdGhlIC1uIGFuZCAtcCBvcHRpb25zIHRvIGNvbnRyb2wgdGhlIGhvc3RuYW1lIGFuZCBwb3J0IHVzZWQuCgpSdW4gInB5ZG9jIC13IDxuYW1lPiIgdG8gd3JpdGUgb3V0IHRoZSBIVE1MIGRvY3VtZW50YXRpb24gZm9yIGEgbW9kdWxlCnRvIGEgZmlsZSBuYW1lZCAiPG5hbWU+Lmh0bWwiLgoKTW9kdWxlIGRvY3MgZm9yIGNvcmUgbW9kdWxlcyBhcmUgYXNzdW1lZCB0byBiZSBpbgoKICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnL1guWS9saWJyYXJ5LwoKVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSBQWVRIT05ET0NTIGVudmlyb25tZW50IHZhcmlhYmxlCnRvIGEgZGlmZmVyZW50IFVSTCBvciB0byBhIGxvY2FsIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBMaWJyYXJ5ClJlZmVyZW5jZSBNYW51YWwgcGFnZXMuCiIiIgpfX2FsbF9fID0gWydoZWxwJ10KX19hdXRob3JfXyA9ICJLYS1QaW5nIFllZSA8cGluZ0BsZncub3JnPiIKX19kYXRlX18gPSAiMjYgRmVicnVhcnkgMjAwMSIKCl9fY3JlZGl0c19fID0gIiIiR3VpZG8gdmFuIFJvc3N1bSwgZm9yIGFuIGV4Y2VsbGVudCBwcm9ncmFtbWluZyBsYW5ndWFnZS4KVG9tbXkgQnVybmV0dGUsIHRoZSBvcmlnaW5hbCBjcmVhdG9yIG9mIG1hbnB5LgpQYXVsIFByZXNjb2QsIGZvciBhbGwgaGlzIHdvcmsgb24gb25saW5laGVscC4KUmljaGFyZCBDaGFtYmVybGFpbiwgZm9yIHRoZSBmaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiB0ZXh0ZG9jLgoiIiIKCiMgS25vd24gYnVncyB0aGF0IGNhbid0IGJlIGZpeGVkIGhlcmU6CiMgICAtIHN5bm9wc2lzKCkgY2Fubm90IGJlIHByZXZlbnRlZCBmcm9tIGNsb2JiZXJpbmcgZXhpc3RpbmcKIyAgICAgbG9hZGVkIG1vZHVsZXMuCiMgICAtIElmIHRoZSBfX2ZpbGVfXyBhdHRyaWJ1dGUgb24gYSBtb2R1bGUgaXMgYSByZWxhdGl2ZSBwYXRoIGFuZAojICAgICB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgY2hhbmdlZCB3aXRoIG9zLmNoZGlyKCksIGFuIGluY29ycmVjdAojICAgICBwYXRoIHdpbGwgYmUgZGlzcGxheWVkLgoKaW1wb3J0IF9fZnV0dXJlX18KaW1wb3J0IGJ1aWx0aW5zCmltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAppbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwKaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKaW1wb3J0IGltcG9ydGxpYi51dGlsCmltcG9ydCBpbnNwZWN0CmltcG9ydCBpbwppbXBvcnQgb3MKaW1wb3J0IHBrZ3V0aWwKaW1wb3J0IHBsYXRmb3JtCmltcG9ydCByZQppbXBvcnQgc3lzCmltcG9ydCBzeXNjb25maWcKaW1wb3J0IHRpbWUKaW1wb3J0IHRva2VuaXplCmltcG9ydCB1cmxsaWIucGFyc2UKaW1wb3J0IHdhcm5pbmdzCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCmZyb20gcmVwcmxpYiBpbXBvcnQgUmVwcgpmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5CgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29tbW9uIHJvdXRpbmVzCgpkZWYgcGF0aGRpcnMoKToKICAgICIiIkNvbnZlcnQgc3lzLnBhdGggaW50byBhIGxpc3Qgb2YgYWJzb2x1dGUsIGV4aXN0aW5nLCB1bmlxdWUgcGF0aHMuIiIiCiAgICBkaXJzID0gW10KICAgIG5vcm1kaXJzID0gW10KICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CiAgICAgICAgZGlyID0gb3MucGF0aC5hYnNwYXRoKGRpciBvciAnLicpCiAgICAgICAgbm9ybWRpciA9IG9zLnBhdGgubm9ybWNhc2UoZGlyKQogICAgICAgIGlmIG5vcm1kaXIgbm90IGluIG5vcm1kaXJzIGFuZCBvcy5wYXRoLmlzZGlyKGRpcik6CiAgICAgICAgICAgIGRpcnMuYXBwZW5kKGRpcikKICAgICAgICAgICAgbm9ybWRpcnMuYXBwZW5kKG5vcm1kaXIpCiAgICByZXR1cm4gZGlycwoKZGVmIF9maW5kY2xhc3MoZnVuYyk6CiAgICBjbHMgPSBzeXMubW9kdWxlcy5nZXQoZnVuYy5fX21vZHVsZV9fKQogICAgaWYgY2xzIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGZvciBuYW1lIGluIGZ1bmMuX19xdWFsbmFtZV9fLnNwbGl0KCcuJylbOi0xXToKICAgICAgICBjbHMgPSBnZXRhdHRyKGNscywgbmFtZSkKICAgIGlmIG5vdCBpbnNwZWN0LmlzY2xhc3MoY2xzKToKICAgICAgICByZXR1cm4gTm9uZQogICAgcmV0dXJuIGNscwoKZGVmIF9maW5kZG9jKG9iaik6CiAgICBpZiBpbnNwZWN0LmlzbWV0aG9kKG9iaik6CiAgICAgICAgbmFtZSA9IG9iai5fX2Z1bmNfXy5fX25hbWVfXwogICAgICAgIHNlbGYgPSBvYmouX19zZWxmX18KICAgICAgICBpZiAoaW5zcGVjdC5pc2NsYXNzKHNlbGYpIGFuZAogICAgICAgICAgICBnZXRhdHRyKGdldGF0dHIoc2VsZiwgbmFtZSwgTm9uZSksICdfX2Z1bmNfXycpIGlzIG9iai5fX2Z1bmNfXyk6CiAgICAgICAgICAgICMgY2xhc3NtZXRob2QKICAgICAgICAgICAgY2xzID0gc2VsZgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCiAgICBlbGlmIGluc3BlY3QuaXNmdW5jdGlvbihvYmopOgogICAgICAgIG5hbWUgPSBvYmouX19uYW1lX18KICAgICAgICBjbHMgPSBfZmluZGNsYXNzKG9iaikKICAgICAgICBpZiBjbHMgaXMgTm9uZSBvciBnZXRhdHRyKGNscywgbmFtZSkgaXMgbm90IG9iajoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgIGVsaWYgaW5zcGVjdC5pc2J1aWx0aW4ob2JqKToKICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCiAgICAgICAgc2VsZiA9IG9iai5fX3NlbGZfXwogICAgICAgIGlmIChpbnNwZWN0LmlzY2xhc3Moc2VsZikgYW5kCiAgICAgICAgICAgIHNlbGYuX19xdWFsbmFtZV9fICsgJy4nICsgbmFtZSA9PSBvYmouX19xdWFsbmFtZV9fKToKICAgICAgICAgICAgIyBjbGFzc21ldGhvZAogICAgICAgICAgICBjbHMgPSBzZWxmCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KICAgICMgU2hvdWxkIGJlIHRlc3RlZCBiZWZvcmUgaXNkYXRhZGVzY3JpcHRvcigpLgogICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgcHJvcGVydHkpOgogICAgICAgIGZ1bmMgPSBvYmouZmdldAogICAgICAgIG5hbWUgPSBmdW5jLl9fbmFtZV9fCiAgICAgICAgY2xzID0gX2ZpbmRjbGFzcyhmdW5jKQogICAgICAgIGlmIGNscyBpcyBOb25lIG9yIGdldGF0dHIoY2xzLCBuYW1lKSBpcyBub3Qgb2JqOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgZWxpZiBpbnNwZWN0LmlzbWV0aG9kZGVzY3JpcHRvcihvYmopIG9yIGluc3BlY3QuaXNkYXRhZGVzY3JpcHRvcihvYmopOgogICAgICAgIG5hbWUgPSBvYmouX19uYW1lX18KICAgICAgICBjbHMgPSBvYmouX19vYmpjbGFzc19fCiAgICAgICAgaWYgZ2V0YXR0cihjbHMsIG5hbWUpIGlzIG5vdCBvYmo6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgaWYgaW5zcGVjdC5pc21lbWJlcmRlc2NyaXB0b3Iob2JqKToKICAgICAgICAgICAgc2xvdHMgPSBnZXRhdHRyKGNscywgJ19fc2xvdHNfXycsIE5vbmUpCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2xvdHMsIGRpY3QpIGFuZCBuYW1lIGluIHNsb3RzOgogICAgICAgICAgICAgICAgcmV0dXJuIHNsb3RzW25hbWVdCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCiAgICBmb3IgYmFzZSBpbiBjbHMuX19tcm9fXzoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRvYyA9IF9nZXRvd25kb2MoZ2V0YXR0cihiYXNlLCBuYW1lKSkKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgZG9jIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gZG9jCiAgICByZXR1cm4gTm9uZQoKZGVmIF9nZXRvd25kb2Mob2JqKToKICAgICIiIkdldCB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIGFuIG9iamVjdCBpZiBpdCBpcyBub3QKICAgIGluaGVyaXRlZCBmcm9tIGl0cyBjbGFzcy4iIiIKICAgIHRyeToKICAgICAgICBkb2MgPSBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhvYmosICdfX2RvY19fJykKICAgICAgICBpZiBkb2MgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBpZiBvYmogaXMgbm90IHR5cGU6CiAgICAgICAgICAgIHR5cGVkb2MgPSB0eXBlKG9iaikuX19kb2NfXwogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVkb2MsIHN0cikgYW5kIHR5cGVkb2MgPT0gZG9jOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gZG9jCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKCmRlZiBfZ2V0ZG9jKG9iamVjdCk6CiAgICAiIiJHZXQgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciBhbiBvYmplY3QuCgogICAgQWxsIHRhYnMgYXJlIGV4cGFuZGVkIHRvIHNwYWNlcy4gIFRvIGNsZWFuIHVwIGRvY3N0cmluZ3MgdGhhdCBhcmUKICAgIGluZGVudGVkIHRvIGxpbmUgdXAgd2l0aCBibG9ja3Mgb2YgY29kZSwgYW55IHdoaXRlc3BhY2UgdGhhbiBjYW4gYmUKICAgIHVuaWZvcm1seSByZW1vdmVkIGZyb20gdGhlIHNlY29uZCBsaW5lIG9ud2FyZHMgaXMgcmVtb3ZlZC4iIiIKICAgIGRvYyA9IF9nZXRvd25kb2Mob2JqZWN0KQogICAgaWYgZG9jIGlzIE5vbmU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBkb2MgPSBfZmluZGRvYyhvYmplY3QpCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yKToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgIGlmIG5vdCBpc2luc3RhbmNlKGRvYywgc3RyKToKICAgICAgICByZXR1cm4gTm9uZQogICAgcmV0dXJuIGluc3BlY3QuY2xlYW5kb2MoZG9jKQoKZGVmIGdldGRvYyhvYmplY3QpOgogICAgIiIiR2V0IHRoZSBkb2Mgc3RyaW5nIG9yIGNvbW1lbnRzIGZvciBhbiBvYmplY3QuIiIiCiAgICByZXN1bHQgPSBfZ2V0ZG9jKG9iamVjdCkgb3IgaW5zcGVjdC5nZXRjb21tZW50cyhvYmplY3QpCiAgICByZXR1cm4gcmVzdWx0IGFuZCByZS5zdWIoJ14gKlxuJywgJycsIHJlc3VsdC5yc3RyaXAoKSkgb3IgJycKCmRlZiBzcGxpdGRvYyhkb2MpOgogICAgIiIiU3BsaXQgYSBkb2Mgc3RyaW5nIGludG8gYSBzeW5vcHNpcyBsaW5lIChpZiBhbnkpIGFuZCB0aGUgcmVzdC4iIiIKICAgIGxpbmVzID0gZG9jLnN0cmlwKCkuc3BsaXQoJ1xuJykKICAgIGlmIGxlbihsaW5lcykgPT0gMToKICAgICAgICByZXR1cm4gbGluZXNbMF0sICcnCiAgICBlbGlmIGxlbihsaW5lcykgPj0gMiBhbmQgbm90IGxpbmVzWzFdLnJzdHJpcCgpOgogICAgICAgIHJldHVybiBsaW5lc1swXSwgJ1xuJy5qb2luKGxpbmVzWzI6XSkKICAgIHJldHVybiAnJywgJ1xuJy5qb2luKGxpbmVzKQoKZGVmIGNsYXNzbmFtZShvYmplY3QsIG1vZG5hbWUpOgogICAgIiIiR2V0IGEgY2xhc3MgbmFtZSBhbmQgcXVhbGlmeSBpdCB3aXRoIGEgbW9kdWxlIG5hbWUgaWYgbmVjZXNzYXJ5LiIiIgogICAgbmFtZSA9IG9iamVjdC5fX25hbWVfXwogICAgaWYgb2JqZWN0Ll9fbW9kdWxlX18gIT0gbW9kbmFtZToKICAgICAgICBuYW1lID0gb2JqZWN0Ll9fbW9kdWxlX18gKyAnLicgKyBuYW1lCiAgICByZXR1cm4gbmFtZQoKZGVmIGlzZGF0YShvYmplY3QpOgogICAgIiIiQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIG9mIGEgdHlwZSB0aGF0IHByb2JhYmx5IG1lYW5zIGl0J3MgZGF0YS4iIiIKICAgIHJldHVybiBub3QgKGluc3BlY3QuaXNtb2R1bGUob2JqZWN0KSBvciBpbnNwZWN0LmlzY2xhc3Mob2JqZWN0KSBvcgogICAgICAgICAgICAgICAgaW5zcGVjdC5pc3JvdXRpbmUob2JqZWN0KSBvciBpbnNwZWN0LmlzZnJhbWUob2JqZWN0KSBvcgogICAgICAgICAgICAgICAgaW5zcGVjdC5pc3RyYWNlYmFjayhvYmplY3QpIG9yIGluc3BlY3QuaXNjb2RlKG9iamVjdCkpCgpkZWYgcmVwbGFjZSh0ZXh0LCAqcGFpcnMpOgogICAgIiIiRG8gYSBzZXJpZXMgb2YgZ2xvYmFsIHJlcGxhY2VtZW50cyBvbiBhIHN0cmluZy4iIiIKICAgIHdoaWxlIHBhaXJzOgogICAgICAgIHRleHQgPSBwYWlyc1sxXS5qb2luKHRleHQuc3BsaXQocGFpcnNbMF0pKQogICAgICAgIHBhaXJzID0gcGFpcnNbMjpdCiAgICByZXR1cm4gdGV4dAoKZGVmIGNyYW0odGV4dCwgbWF4bGVuKToKICAgICIiIk9taXQgcGFydCBvZiBhIHN0cmluZyBpZiBuZWVkZWQgdG8gbWFrZSBpdCBmaXQgaW4gYSBtYXhpbXVtIGxlbmd0aC4iIiIKICAgIGlmIGxlbih0ZXh0KSA+IG1heGxlbjoKICAgICAgICBwcmUgPSBtYXgoMCwgKG1heGxlbi0zKS8vMikKICAgICAgICBwb3N0ID0gbWF4KDAsIG1heGxlbi0zLXByZSkKICAgICAgICByZXR1cm4gdGV4dFs6cHJlXSArICcuLi4nICsgdGV4dFtsZW4odGV4dCktcG9zdDpdCiAgICByZXR1cm4gdGV4dAoKX3JlX3N0cmlwaWQgPSByZS5jb21waWxlKHInIGF0IDB4WzAtOWEtZl17NiwxNn0oPispJCcsIHJlLklHTk9SRUNBU0UpCmRlZiBzdHJpcGlkKHRleHQpOgogICAgIiIiUmVtb3ZlIHRoZSBoZXhhZGVjaW1hbCBpZCBmcm9tIGEgUHl0aG9uIG9iamVjdCByZXByZXNlbnRhdGlvbi4iIiIKICAgICMgVGhlIGJlaGF2aW91ciBvZiAlcCBpcyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgaW4gdGVybXMgb2YgY2FzZS4KICAgIHJldHVybiBfcmVfc3RyaXBpZC5zdWIocidcMScsIHRleHQpCgpkZWYgX2lzX2JvdW5kX21ldGhvZChmbik6CiAgICAiIiIKICAgIFJldHVybnMgVHJ1ZSBpZiBmbiBpcyBhIGJvdW5kIG1ldGhvZCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCiAgICBmbiB3YXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uIG9yIGluIEMuCiAgICAiIiIKICAgIGlmIGluc3BlY3QuaXNtZXRob2QoZm4pOgogICAgICAgIHJldHVybiBUcnVlCiAgICBpZiBpbnNwZWN0LmlzYnVpbHRpbihmbik6CiAgICAgICAgc2VsZiA9IGdldGF0dHIoZm4sICdfX3NlbGZfXycsIE5vbmUpCiAgICAgICAgcmV0dXJuIG5vdCAoaW5zcGVjdC5pc21vZHVsZShzZWxmKSBvciAoc2VsZiBpcyBOb25lKSkKICAgIHJldHVybiBGYWxzZQoKCmRlZiBhbGxtZXRob2RzKGNsKToKICAgIG1ldGhvZHMgPSB7fQogICAgZm9yIGtleSwgdmFsdWUgaW4gaW5zcGVjdC5nZXRtZW1iZXJzKGNsLCBpbnNwZWN0Lmlzcm91dGluZSk6CiAgICAgICAgbWV0aG9kc1trZXldID0gMQogICAgZm9yIGJhc2UgaW4gY2wuX19iYXNlc19fOgogICAgICAgIG1ldGhvZHMudXBkYXRlKGFsbG1ldGhvZHMoYmFzZSkpICMgYWxsIHlvdXIgYmFzZSBhcmUgYmVsb25nIHRvIHVzCiAgICBmb3Iga2V5IGluIG1ldGhvZHMua2V5cygpOgogICAgICAgIG1ldGhvZHNba2V5XSA9IGdldGF0dHIoY2wsIGtleSkKICAgIHJldHVybiBtZXRob2RzCgpkZWYgX3NwbGl0X2xpc3QocywgcHJlZGljYXRlKToKICAgICIiIlNwbGl0IHNlcXVlbmNlIHMgdmlhIHByZWRpY2F0ZSwgYW5kIHJldHVybiBwYWlyIChbdHJ1ZV0sIFtmYWxzZV0pLgoKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSAyLXR1cGxlIG9mIGxpc3RzLAogICAgICAgIChbeCBmb3IgeCBpbiBzIGlmIHByZWRpY2F0ZSh4KV0sCiAgICAgICAgIFt4IGZvciB4IGluIHMgaWYgbm90IHByZWRpY2F0ZSh4KV0pCiAgICAiIiIKCiAgICB5ZXMgPSBbXQogICAgbm8gPSBbXQogICAgZm9yIHggaW4gczoKICAgICAgICBpZiBwcmVkaWNhdGUoeCk6CiAgICAgICAgICAgIHllcy5hcHBlbmQoeCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBuby5hcHBlbmQoeCkKICAgIHJldHVybiB5ZXMsIG5vCgpfZnV0dXJlX2ZlYXR1cmVfbmFtZXMgPSBzZXQoX19mdXR1cmVfXy5hbGxfZmVhdHVyZV9uYW1lcykKCmRlZiB2aXNpYmxlbmFtZShuYW1lLCBhbGw9Tm9uZSwgb2JqPU5vbmUpOgogICAgIiIiRGVjaWRlIHdoZXRoZXIgdG8gc2hvdyBkb2N1bWVudGF0aW9uIG9uIGEgdmFyaWFibGUuIiIiCiAgICAjIENlcnRhaW4gc3BlY2lhbCBuYW1lcyBhcmUgcmVkdW5kYW50IG9yIGludGVybmFsLgogICAgIyBYWFggUmVtb3ZlIF9faW5pdGlhbGl6aW5nX18/CiAgICBpZiBuYW1lIGluIHsnX19hdXRob3JfXycsICdfX2J1aWx0aW5zX18nLCAnX19jYWNoZWRfXycsICdfX2NyZWRpdHNfXycsCiAgICAgICAgICAgICAgICAnX19kYXRlX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX3NwZWNfXycsCiAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKICAgICAgICAgICAgICAgICdfX3BhdGhfXycsICdfX3F1YWxuYW1lX18nLCAnX19zbG90c19fJywgJ19fdmVyc2lvbl9fJ306CiAgICAgICAgcmV0dXJuIDAKICAgICMgUHJpdmF0ZSBuYW1lcyBhcmUgaGlkZGVuLCBidXQgc3BlY2lhbCBuYW1lcyBhcmUgZGlzcGxheWVkLgogICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfXycpIGFuZCBuYW1lLmVuZHN3aXRoKCdfXycpOiByZXR1cm4gMQogICAgIyBOYW1lZHR1cGxlcyBoYXZlIHB1YmxpYyBmaWVsZHMgYW5kIG1ldGhvZHMgd2l0aCBhIHNpbmdsZSBsZWFkaW5nIHVuZGVyc2NvcmUKICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpIGFuZCBoYXNhdHRyKG9iaiwgJ19maWVsZHMnKToKICAgICAgICByZXR1cm4gVHJ1ZQogICAgIyBJZ25vcmUgX19mdXR1cmVfXyBpbXBvcnRzLgogICAgaWYgb2JqIGlzIG5vdCBfX2Z1dHVyZV9fIGFuZCBuYW1lIGluIF9mdXR1cmVfZmVhdHVyZV9uYW1lczoKICAgICAgICBpZiBpc2luc3RhbmNlKGdldGF0dHIob2JqLCBuYW1lLCBOb25lKSwgX19mdXR1cmVfXy5fRmVhdHVyZSk6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgYWxsIGlzIG5vdCBOb25lOgogICAgICAgICMgb25seSBkb2N1bWVudCB0aGF0IHdoaWNoIHRoZSBwcm9ncmFtbWVyIGV4cG9ydGVkIGluIF9fYWxsX18KICAgICAgICByZXR1cm4gbmFtZSBpbiBhbGwKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKQoKZGVmIGNsYXNzaWZ5X2NsYXNzX2F0dHJzKG9iamVjdCk6CiAgICAiIiJXcmFwIGluc3BlY3QuY2xhc3NpZnlfY2xhc3NfYXR0cnMsIHdpdGggZml4dXAgZm9yIGRhdGEgZGVzY3JpcHRvcnMuIiIiCiAgICByZXN1bHRzID0gW10KICAgIGZvciAobmFtZSwga2luZCwgY2xzLCB2YWx1ZSkgaW4gaW5zcGVjdC5jbGFzc2lmeV9jbGFzc19hdHRycyhvYmplY3QpOgogICAgICAgIGlmIGluc3BlY3QuaXNkYXRhZGVzY3JpcHRvcih2YWx1ZSk6CiAgICAgICAgICAgIGtpbmQgPSAnZGF0YSBkZXNjcmlwdG9yJwogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBwcm9wZXJ0eSkgYW5kIHZhbHVlLmZzZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgIGtpbmQgPSAncmVhZG9ubHkgcHJvcGVydHknCiAgICAgICAgcmVzdWx0cy5hcHBlbmQoKG5hbWUsIGtpbmQsIGNscywgdmFsdWUpKQogICAgcmV0dXJuIHJlc3VsdHMKCmRlZiBzb3J0X2F0dHJpYnV0ZXMoYXR0cnMsIG9iamVjdCk6CiAgICAnU29ydCB0aGUgYXR0cnMgbGlzdCBpbi1wbGFjZSBieSBfZmllbGRzIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IGJ5IG5hbWUnCiAgICAjIFRoaXMgYWxsb3dzIGRhdGEgZGVzY3JpcHRvcnMgdG8gYmUgb3JkZXJlZCBhY2NvcmRpbmcKICAgICMgdG8gYSBfZmllbGRzIGF0dHJpYnV0ZSBpZiBwcmVzZW50LgogICAgZmllbGRzID0gZ2V0YXR0cihvYmplY3QsICdfZmllbGRzJywgW10pCiAgICB0cnk6CiAgICAgICAgZmllbGRfb3JkZXIgPSB7bmFtZSA6IGktbGVuKGZpZWxkcykgZm9yIChpLCBuYW1lKSBpbiBlbnVtZXJhdGUoZmllbGRzKX0KICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgZmllbGRfb3JkZXIgPSB7fQogICAga2V5ZnVuYyA9IGxhbWJkYSBhdHRyOiAoZmllbGRfb3JkZXIuZ2V0KGF0dHJbMF0sIDApLCBhdHRyWzBdKQogICAgYXR0cnMuc29ydChrZXk9a2V5ZnVuYykKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbW9kdWxlIG1hbmlwdWxhdGlvbgoKZGVmIGlzcGFja2FnZShwYXRoKToKICAgICIiIkd1ZXNzIHdoZXRoZXIgYSBwYXRoIHJlZmVycyB0byBhIHBhY2thZ2UgZGlyZWN0b3J5LiIiIgogICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnKToKICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHBhdGgsICdfX2luaXRfXycgKyBleHQpKToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCmRlZiBzb3VyY2Vfc3lub3BzaXMoZmlsZSk6CiAgICBsaW5lID0gZmlsZS5yZWFkbGluZSgpCiAgICB3aGlsZSBsaW5lWzoxXSA9PSAnIycgb3Igbm90IGxpbmUuc3RyaXAoKToKICAgICAgICBsaW5lID0gZmlsZS5yZWFkbGluZSgpCiAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCiAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICBpZiBsaW5lWzo0XSA9PSAnciIiIic6IGxpbmUgPSBsaW5lWzE6XQogICAgaWYgbGluZVs6M10gPT0gJyIiIic6CiAgICAgICAgbGluZSA9IGxpbmVbMzpdCiAgICAgICAgaWYgbGluZVstMTpdID09ICdcXCc6IGxpbmUgPSBsaW5lWzotMV0KICAgICAgICB3aGlsZSBub3QgbGluZS5zdHJpcCgpOgogICAgICAgICAgICBsaW5lID0gZmlsZS5yZWFkbGluZSgpCiAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhawogICAgICAgIHJlc3VsdCA9IGxpbmUuc3BsaXQoJyIiIicpWzBdLnN0cmlwKCkKICAgIGVsc2U6IHJlc3VsdCA9IE5vbmUKICAgIHJldHVybiByZXN1bHQKCmRlZiBzeW5vcHNpcyhmaWxlbmFtZSwgY2FjaGU9e30pOgogICAgIiIiR2V0IHRoZSBvbmUtbGluZSBzdW1tYXJ5IG91dCBvZiBhIG1vZHVsZSBmaWxlLiIiIgogICAgbXRpbWUgPSBvcy5zdGF0KGZpbGVuYW1lKS5zdF9tdGltZQogICAgbGFzdHVwZGF0ZSwgcmVzdWx0ID0gY2FjaGUuZ2V0KGZpbGVuYW1lLCAoTm9uZSwgTm9uZSkpCiAgICBpZiBsYXN0dXBkYXRlIGlzIE5vbmUgb3IgbGFzdHVwZGF0ZSA8IG10aW1lOgogICAgICAgICMgTG9vayBmb3IgYmluYXJ5IHN1ZmZpeGVzIGZpcnN0LCBmYWxsaW5nIGJhY2sgdG8gc291cmNlLgogICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKHR1cGxlKGltcG9ydGxpYi5tYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVMpKToKICAgICAgICAgICAgbG9hZGVyX2NscyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIKICAgICAgICBlbGlmIGZpbGVuYW1lLmVuZHN3aXRoKHR1cGxlKGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTKSk6CiAgICAgICAgICAgIGxvYWRlcl9jbHMgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICBsb2FkZXJfY2xzID0gTm9uZQogICAgICAgICMgTm93IGhhbmRsZSB0aGUgY2hvaWNlLgogICAgICAgIGlmIGxvYWRlcl9jbHMgaXMgTm9uZToKICAgICAgICAgICAgIyBNdXN0IGJlIGEgc291cmNlIGZpbGUuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZpbGUgPSB0b2tlbml6ZS5vcGVuKGZpbGVuYW1lKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICMgbW9kdWxlIGNhbid0IGJlIG9wZW5lZCwgc28gc2tpcCBpdAogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIyB0ZXh0IG1vZHVsZXMgY2FuIGJlIGRpcmVjdGx5IGV4YW1pbmVkCiAgICAgICAgICAgIHdpdGggZmlsZToKICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNvdXJjZV9zeW5vcHNpcyhmaWxlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgTXVzdCBiZSBhIGJpbmFyeSBtb2R1bGUsIHdoaWNoIGhhcyB0byBiZSBpbXBvcnRlZC4KICAgICAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NscygnX190ZW1wX18nLCBmaWxlbmFtZSkKICAgICAgICAgICAgIyBYWFggV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBwYXNzIGluIHRoZSBsb2FkZXIgaGVyZS4KICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKCdfX3RlbXBfXycsIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyPWxvYWRlcikKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLl9ib290c3RyYXAuX2xvYWQoc3BlYykKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydfX3RlbXBfXyddCiAgICAgICAgICAgIHJlc3VsdCA9IG1vZHVsZS5fX2RvY19fLnNwbGl0bGluZXMoKVswXSBpZiBtb2R1bGUuX19kb2NfXyBlbHNlIE5vbmUKICAgICAgICAjIENhY2hlIHRoZSByZXN1bHQuCiAgICAgICAgY2FjaGVbZmlsZW5hbWVdID0gKG10aW1lLCByZXN1bHQpCiAgICByZXR1cm4gcmVzdWx0CgpjbGFzcyBFcnJvckR1cmluZ0ltcG9ydChFeGNlcHRpb24pOgogICAgIiIiRXJyb3JzIHRoYXQgb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIGltcG9ydCBzb21ldGhpbmcgdG8gZG9jdW1lbnQgaXQuIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIGV4Y19pbmZvKToKICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgICBzZWxmLmV4Yywgc2VsZi52YWx1ZSwgc2VsZi50YiA9IGV4Y19pbmZvCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgZXhjID0gc2VsZi5leGMuX19uYW1lX18KICAgICAgICByZXR1cm4gJ3Byb2JsZW0gaW4gJXMgLSAlczogJXMnICUgKHNlbGYuZmlsZW5hbWUsIGV4Yywgc2VsZi52YWx1ZSkKCmRlZiBpbXBvcnRmaWxlKHBhdGgpOgogICAgIiIiSW1wb3J0IGEgUHl0aG9uIHNvdXJjZSBmaWxlIG9yIGNvbXBpbGVkIGZpbGUgZ2l2ZW4gaXRzIHBhdGguIiIiCiAgICBtYWdpYyA9IGltcG9ydGxpYi51dGlsLk1BR0lDX05VTUJFUgogICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZpbGU6CiAgICAgICAgaXNfYnl0ZWNvZGUgPSBtYWdpYyA9PSBmaWxlLnJlYWQobGVuKG1hZ2ljKSkKICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQogICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKICAgIGlmIGlzX2J5dGVjb2RlOgogICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLlNvdXJjZWxlc3NGaWxlTG9hZGVyKG5hbWUsIHBhdGgpCiAgICBlbHNlOgogICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkKICAgICMgWFhYIFdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8gcGFzcyBpbiB0aGUgbG9hZGVyIGhlcmUuCiAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aCwgbG9hZGVyPWxvYWRlcikKICAgIHRyeToKICAgICAgICByZXR1cm4gaW1wb3J0bGliLl9ib290c3RyYXAuX2xvYWQoc3BlYykKICAgIGV4Y2VwdDoKICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydChwYXRoLCBzeXMuZXhjX2luZm8oKSkKCmRlZiBzYWZlaW1wb3J0KHBhdGgsIGZvcmNlbG9hZD0wLCBjYWNoZT17fSk6CiAgICAiIiJJbXBvcnQgYSBtb2R1bGU7IGhhbmRsZSBlcnJvcnM7IHJldHVybiBOb25lIGlmIHRoZSBtb2R1bGUgaXNuJ3QgZm91bmQuCgogICAgSWYgdGhlIG1vZHVsZSAqaXMqIGZvdW5kIGJ1dCBhbiBleGNlcHRpb24gb2NjdXJzLCBpdCdzIHdyYXBwZWQgaW4gYW4KICAgIEVycm9yRHVyaW5nSW1wb3J0IGV4Y2VwdGlvbiBhbmQgcmVyYWlzZWQuICBVbmxpa2UgX19pbXBvcnRfXywgaWYgYQogICAgcGFja2FnZSBwYXRoIGlzIHNwZWNpZmllZCwgdGhlIG1vZHVsZSBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoIGlzIHJldHVybmVkLAogICAgbm90IHRoZSBwYWNrYWdlIGF0IHRoZSBiZWdpbm5pbmcuICBJZiB0aGUgb3B0aW9uYWwgJ2ZvcmNlbG9hZCcgYXJndW1lbnQKICAgIGlzIDEsIHdlIHJlbG9hZCB0aGUgbW9kdWxlIGZyb20gZGlzayAodW5sZXNzIGl0J3MgYSBkeW5hbWljIGV4dGVuc2lvbikuIiIiCiAgICB0cnk6CiAgICAgICAgIyBJZiBmb3JjZWxvYWQgaXMgMSBhbmQgdGhlIG1vZHVsZSBoYXMgYmVlbiBwcmV2aW91c2x5IGxvYWRlZCBmcm9tCiAgICAgICAgIyBkaXNrLCB3ZSBhbHdheXMgaGF2ZSB0byByZWxvYWQgdGhlIG1vZHVsZS4gIENoZWNraW5nIHRoZSBmaWxlJ3MKICAgICAgICAjIG10aW1lIGlzbid0IGdvb2QgZW5vdWdoIChlLmcuIHRoZSBtb2R1bGUgY291bGQgY29udGFpbiBhIGNsYXNzCiAgICAgICAgIyB0aGF0IGluaGVyaXRzIGZyb20gYW5vdGhlciBtb2R1bGUgdGhhdCBoYXMgY2hhbmdlZCkuCiAgICAgICAgaWYgZm9yY2Vsb2FkIGFuZCBwYXRoIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICBpZiBwYXRoIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6CiAgICAgICAgICAgICAgICAjIFJlbW92ZSB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMgYW5kIHJlLWltcG9ydCB0byB0cnkKICAgICAgICAgICAgICAgICMgYW5kIGF2b2lkIHByb2JsZW1zIHdpdGggcGFydGlhbGx5IGxvYWRlZCBtb2R1bGVzLgogICAgICAgICAgICAgICAgIyBBbHNvIHJlbW92ZSBhbnkgc3VibW9kdWxlcyBiZWNhdXNlIHRoZXkgd29uJ3QgYXBwZWFyCiAgICAgICAgICAgICAgICAjIGluIHRoZSBuZXdseSBsb2FkZWQgbW9kdWxlJ3MgbmFtZXNwYWNlIGlmIHRoZXkncmUgYWxyZWFkeQogICAgICAgICAgICAgICAgIyBpbiBzeXMubW9kdWxlcy4KICAgICAgICAgICAgICAgIHN1YnMgPSBbbSBmb3IgbSBpbiBzeXMubW9kdWxlcyBpZiBtLnN0YXJ0c3dpdGgocGF0aCArICcuJyldCiAgICAgICAgICAgICAgICBmb3Iga2V5IGluIFtwYXRoXSArIHN1YnM6CiAgICAgICAgICAgICAgICAgICAgIyBQcmV2ZW50IGdhcmJhZ2UgY29sbGVjdGlvbi4KICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gc3lzLm1vZHVsZXNba2V5XQogICAgICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1trZXldCiAgICAgICAgbW9kdWxlID0gX19pbXBvcnRfXyhwYXRoKQogICAgZXhjZXB0OgogICAgICAgICMgRGlkIHRoZSBlcnJvciBvY2N1ciBiZWZvcmUgb3IgYWZ0ZXIgdGhlIG1vZHVsZSB3YXMgZm91bmQ/CiAgICAgICAgKGV4YywgdmFsdWUsIHRiKSA9IGluZm8gPSBzeXMuZXhjX2luZm8oKQogICAgICAgIGlmIHBhdGggaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICMgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIHRoZSBpbXBvcnRlZCBtb2R1bGUuCiAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHN5cy5tb2R1bGVzW3BhdGhdLl9fZmlsZV9fLCBpbmZvKQogICAgICAgIGVsaWYgZXhjIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICAjIEEgU3ludGF4RXJyb3Igb2NjdXJyZWQgYmVmb3JlIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZS4KICAgICAgICAgICAgcmFpc2UgRXJyb3JEdXJpbmdJbXBvcnQodmFsdWUuZmlsZW5hbWUsIGluZm8pCiAgICAgICAgZWxpZiBpc3N1YmNsYXNzKGV4YywgSW1wb3J0RXJyb3IpIGFuZCB2YWx1ZS5uYW1lID09IHBhdGg6CiAgICAgICAgICAgICMgTm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBTb21lIG90aGVyIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUgaW1wb3J0aW5nIHByb2Nlc3MuCiAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHBhdGgsIHN5cy5leGNfaW5mbygpKQogICAgZm9yIHBhcnQgaW4gcGF0aC5zcGxpdCgnLicpWzE6XToKICAgICAgICB0cnk6IG1vZHVsZSA9IGdldGF0dHIobW9kdWxlLCBwYXJ0KQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogcmV0dXJuIE5vbmUKICAgIHJldHVybiBtb2R1bGUKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmb3JtYXR0ZXIgYmFzZSBjbGFzcwoKY2xhc3MgRG9jOgoKICAgIFBZVEhPTkRPQ1MgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9ORE9DUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZG9jcy5weXRob24ub3JnLyVkLiVkL2xpYnJhcnkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKCiAgICBkZWYgZG9jdW1lbnQoc2VsZiwgb2JqZWN0LCBuYW1lPU5vbmUsICphcmdzKToKICAgICAgICAiIiJHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZvciBhbiBvYmplY3QuIiIiCiAgICAgICAgYXJncyA9IChvYmplY3QsIG5hbWUpICsgYXJncwogICAgICAgICMgJ3RyeScgY2xhdXNlIGlzIHRvIGF0dGVtcHQgdG8gaGFuZGxlIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGluc3BlY3QKICAgICAgICAjIGlkZW50aWZpZXMgc29tZXRoaW5nIGluIGEgd2F5IHRoYXQgcHlkb2MgaXRzZWxmIGhhcyBpc3N1ZXMgaGFuZGxpbmc7CiAgICAgICAgIyB0aGluayAnc3VwZXInIGFuZCBob3cgaXQgaXMgYSBkZXNjcmlwdG9yICh3aGljaCByYWlzZXMgdGhlIGV4Y2VwdGlvbgogICAgICAgICMgYnkgbGFja2luZyBhIF9fbmFtZV9fIGF0dHJpYnV0ZSkgYW5kIGFuIGluc3RhbmNlLgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgaW5zcGVjdC5pc21vZHVsZShvYmplY3QpOiByZXR1cm4gc2VsZi5kb2Ntb2R1bGUoKmFyZ3MpCiAgICAgICAgICAgIGlmIGluc3BlY3QuaXNjbGFzcyhvYmplY3QpOiByZXR1cm4gc2VsZi5kb2NjbGFzcygqYXJncykKICAgICAgICAgICAgaWYgaW5zcGVjdC5pc3JvdXRpbmUob2JqZWN0KTogcmV0dXJuIHNlbGYuZG9jcm91dGluZSgqYXJncykKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBpZiBpbnNwZWN0LmlzZGF0YWRlc2NyaXB0b3Iob2JqZWN0KTogcmV0dXJuIHNlbGYuZG9jZGF0YSgqYXJncykKICAgICAgICByZXR1cm4gc2VsZi5kb2NvdGhlcigqYXJncykKCiAgICBkZWYgZmFpbChzZWxmLCBvYmplY3QsIG5hbWU9Tm9uZSwgKmFyZ3MpOgogICAgICAgICIiIlJhaXNlIGFuIGV4Y2VwdGlvbiBmb3IgdW5pbXBsZW1lbnRlZCB0eXBlcy4iIiIKICAgICAgICBtZXNzYWdlID0gImRvbid0IGtub3cgaG93IHRvIGRvY3VtZW50IG9iamVjdCVzIG9mIHR5cGUgJXMiICUgKAogICAgICAgICAgICBuYW1lIGFuZCAnICcgKyByZXByKG5hbWUpLCB0eXBlKG9iamVjdCkuX19uYW1lX18pCiAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1lc3NhZ2UpCgogICAgZG9jbW9kdWxlID0gZG9jY2xhc3MgPSBkb2Nyb3V0aW5lID0gZG9jb3RoZXIgPSBkb2Nwcm9wZXJ0eSA9IGRvY2RhdGEgPSBmYWlsCgogICAgZGVmIGdldGRvY2xvYyhzZWxmLCBvYmplY3QsIGJhc2VkaXI9c3lzY29uZmlnLmdldF9wYXRoKCdzdGRsaWInKSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBsb2NhdGlvbiBvZiBtb2R1bGUgZG9jcyBvciBOb25lIiIiCgogICAgICAgIHRyeToKICAgICAgICAgICAgZmlsZSA9IGluc3BlY3QuZ2V0YWJzZmlsZShvYmplY3QpCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgZmlsZSA9ICcoYnVpbHQtaW4pJwoKICAgICAgICBkb2Nsb2MgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9ORE9DUyIsIHNlbGYuUFlUSE9ORE9DUykKCiAgICAgICAgYmFzZWRpciA9IG9zLnBhdGgubm9ybWNhc2UoYmFzZWRpcikKICAgICAgICBpZiAoaXNpbnN0YW5jZShvYmplY3QsIHR5cGUob3MpKSBhbmQKICAgICAgICAgICAgKG9iamVjdC5fX25hbWVfXyBpbiAoJ2Vycm5vJywgJ2V4Y2VwdGlvbnMnLCAnZ2MnLCAnaW1wJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcnNoYWwnLCAncG9zaXgnLCAnc2lnbmFsJywgJ3N5cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfdGhyZWFkJywgJ3ppcGltcG9ydCcpIG9yCiAgICAgICAgICAgICAoZmlsZS5zdGFydHN3aXRoKGJhc2VkaXIpIGFuZAogICAgICAgICAgICAgIG5vdCBmaWxlLnN0YXJ0c3dpdGgob3MucGF0aC5qb2luKGJhc2VkaXIsICdzaXRlLXBhY2thZ2VzJykpKSkgYW5kCiAgICAgICAgICAgIG9iamVjdC5fX25hbWVfXyBub3QgaW4gKCd4bWwuZXRyZWUnLCAndGVzdC5weWRvY19tb2QnKSk6CiAgICAgICAgICAgIGlmIGRvY2xvYy5zdGFydHN3aXRoKCgiaHR0cDovLyIsICJodHRwczovLyIpKToKICAgICAgICAgICAgICAgIGRvY2xvYyA9ICJ7fS97fS5odG1sIi5mb3JtYXQoZG9jbG9jLnJzdHJpcCgiLyIpLCBvYmplY3QuX19uYW1lX18ubG93ZXIoKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGRvY2xvYyA9IG9zLnBhdGguam9pbihkb2Nsb2MsIG9iamVjdC5fX25hbWVfXy5sb3dlcigpICsgIi5odG1sIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBkb2Nsb2MgPSBOb25lCiAgICAgICAgcmV0dXJuIGRvY2xvYwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIVE1MIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yCgpjbGFzcyBIVE1MUmVwcihSZXByKToKICAgICIiIkNsYXNzIGZvciBzYWZlbHkgbWFraW5nIGFuIEhUTUwgcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gb2JqZWN0LiIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIFJlcHIuX19pbml0X18oc2VsZikKICAgICAgICBzZWxmLm1heGxpc3QgPSBzZWxmLm1heHR1cGxlID0gMjAKICAgICAgICBzZWxmLm1heGRpY3QgPSAxMAogICAgICAgIHNlbGYubWF4c3RyaW5nID0gc2VsZi5tYXhvdGhlciA9IDEwMAoKICAgIGRlZiBlc2NhcGUoc2VsZiwgdGV4dCk6CiAgICAgICAgcmV0dXJuIHJlcGxhY2UodGV4dCwgJyYnLCAnJmFtcDsnLCAnPCcsICcmbHQ7JywgJz4nLCAnJmd0OycpCgogICAgZGVmIHJlcHIoc2VsZiwgb2JqZWN0KToKICAgICAgICByZXR1cm4gUmVwci5yZXByKHNlbGYsIG9iamVjdCkKCiAgICBkZWYgcmVwcjEoc2VsZiwgeCwgbGV2ZWwpOgogICAgICAgIGlmIGhhc2F0dHIodHlwZSh4KSwgJ19fbmFtZV9fJyk6CiAgICAgICAgICAgIG1ldGhvZG5hbWUgPSAncmVwcl8nICsgJ18nLmpvaW4odHlwZSh4KS5fX25hbWVfXy5zcGxpdCgpKQogICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG1ldGhvZG5hbWUpOgogICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbWV0aG9kbmFtZSkoeCwgbGV2ZWwpCiAgICAgICAgcmV0dXJuIHNlbGYuZXNjYXBlKGNyYW0oc3RyaXBpZChyZXByKHgpKSwgc2VsZi5tYXhvdGhlcikpCgogICAgZGVmIHJlcHJfc3RyaW5nKHNlbGYsIHgsIGxldmVsKToKICAgICAgICB0ZXN0ID0gY3JhbSh4LCBzZWxmLm1heHN0cmluZykKICAgICAgICB0ZXN0cmVwciA9IHJlcHIodGVzdCkKICAgICAgICBpZiAnXFwnIGluIHRlc3QgYW5kICdcXCcgbm90IGluIHJlcGxhY2UodGVzdHJlcHIsIHInXFwnLCAnJyk6CiAgICAgICAgICAgICMgQmFja3NsYXNoZXMgYXJlIG9ubHkgbGl0ZXJhbCBpbiB0aGUgc3RyaW5nIGFuZCBhcmUgbmV2ZXIKICAgICAgICAgICAgIyBuZWVkZWQgdG8gbWFrZSBhbnkgc3BlY2lhbCBjaGFyYWN0ZXJzLCBzbyBzaG93IGEgcmF3IHN0cmluZy4KICAgICAgICAgICAgcmV0dXJuICdyJyArIHRlc3RyZXByWzBdICsgc2VsZi5lc2NhcGUodGVzdCkgKyB0ZXN0cmVwclswXQogICAgICAgIHJldHVybiByZS5zdWIocicoKFxcW1xcYWJmbnJ0dlwnIl18XFxbMC05XS4ufFxceC4ufFxcdS4uLi4pKyknLAogICAgICAgICAgICAgICAgICAgICAgcic8c3BhbiBjbGFzcz0icmVwciI+XDE8L3NwYW4+JywKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXNjYXBlKHRlc3RyZXByKSkKCiAgICByZXByX3N0ciA9IHJlcHJfc3RyaW5nCgogICAgZGVmIHJlcHJfaW5zdGFuY2Uoc2VsZiwgeCwgbGV2ZWwpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXNjYXBlKGNyYW0oc3RyaXBpZChyZXByKHgpKSwgc2VsZi5tYXhzdHJpbmcpKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXNjYXBlKCc8JXMgaW5zdGFuY2U+JyAlIHguX19jbGFzc19fLl9fbmFtZV9fKQoKICAgIHJlcHJfdW5pY29kZSA9IHJlcHJfc3RyaW5nCgpjbGFzcyBIVE1MRG9jKERvYyk6CiAgICAiIiJGb3JtYXR0ZXIgY2xhc3MgZm9yIEhUTUwgZG9jdW1lbnRhdGlvbi4iIiIKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSFRNTCBmb3JtYXR0aW5nIHV0aWxpdGllcwoKICAgIF9yZXByX2luc3RhbmNlID0gSFRNTFJlcHIoKQogICAgcmVwciA9IF9yZXByX2luc3RhbmNlLnJlcHIKICAgIGVzY2FwZSA9IF9yZXByX2luc3RhbmNlLmVzY2FwZQoKICAgIGRlZiBwYWdlKHNlbGYsIHRpdGxlLCBjb250ZW50cyk6CiAgICAgICAgIiIiRm9ybWF0IGFuIEhUTUwgcGFnZS4iIiIKICAgICAgICByZXR1cm4gJycnXAo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZW4iPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+UHl0aG9uOiAlczwvdGl0bGU+CjwvaGVhZD48Ym9keT4KJXMKPC9ib2R5PjwvaHRtbD4nJycgJSAodGl0bGUsIGNvbnRlbnRzKQoKICAgIGRlZiBoZWFkaW5nKHNlbGYsIHRpdGxlLCBleHRyYXM9JycpOgogICAgICAgICIiIkZvcm1hdCBhIHBhZ2UgaGVhZGluZy4iIiIKICAgICAgICByZXR1cm4gJycnCjx0YWJsZSBjbGFzcz0iaGVhZGluZyI+Cjx0ciBjbGFzcz0iaGVhZGluZy10ZXh0IGRlY29yIj4KPHRkIGNsYXNzPSJ0aXRsZSI+Jm5ic3A7PGJyPiVzPC90ZD4KPHRkIGNsYXNzPSJleHRyYSI+JXM8L3RkPjwvdHI+PC90YWJsZT4KICAgICcnJyAlICh0aXRsZSwgZXh0cmFzIG9yICcmbmJzcDsnKQoKICAgIGRlZiBzZWN0aW9uKHNlbGYsIHRpdGxlLCBjbHMsIGNvbnRlbnRzLCB3aWR0aD02LAogICAgICAgICAgICAgICAgcHJlbHVkZT0nJywgbWFyZ2luYWxpYT1Ob25lLCBnYXA9JyZuYnNwOycpOgogICAgICAgICIiIkZvcm1hdCBhIHNlY3Rpb24gd2l0aCBhIGhlYWRpbmcuIiIiCiAgICAgICAgaWYgbWFyZ2luYWxpYSBpcyBOb25lOgogICAgICAgICAgICBtYXJnaW5hbGlhID0gJzxzcGFuIGNsYXNzPSJjb2RlIj4nICsgJyZuYnNwOycgKiB3aWR0aCArICc8L3NwYW4+JwogICAgICAgIHJlc3VsdCA9ICcnJzxwPgo8dGFibGUgY2xhc3M9InNlY3Rpb24iPgo8dHIgY2xhc3M9ImRlY29yICVzLWRlY29yIGhlYWRpbmctdGV4dCI+Cjx0ZCBjbGFzcz0ic2VjdGlvbi10aXRsZSIgY29sc3Bhbj0zPiZuYnNwOzxicj4lczwvdGQ+PC90cj4KICAgICcnJyAlIChjbHMsIHRpdGxlKQogICAgICAgIGlmIHByZWx1ZGU6CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArICcnJwo8dHI+PHRkIGNsYXNzPSJkZWNvciAlcy1kZWNvciIgcm93c3Bhbj0yPiVzPC90ZD4KPHRkIGNsYXNzPSJkZWNvciAlcy1kZWNvciIgY29sc3Bhbj0yPiVzPC90ZD48L3RyPgo8dHI+PHRkPiVzPC90ZD4nJycgJSAoY2xzLCBtYXJnaW5hbGlhLCBjbHMsIHByZWx1ZGUsIGdhcCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAnJycKPHRyPjx0ZCBjbGFzcz0iZGVjb3IgJXMtZGVjb3IiPiVzPC90ZD48dGQ+JXM8L3RkPicnJyAlIChjbHMsIG1hcmdpbmFsaWEsIGdhcCkKCiAgICAgICAgcmV0dXJuIHJlc3VsdCArICdcbjx0ZCBjbGFzcz0ic2luZ2xlY29sdW1uIj4lczwvdGQ+PC90cj48L3RhYmxlPicgJSBjb250ZW50cwoKICAgIGRlZiBiaWdzZWN0aW9uKHNlbGYsIHRpdGxlLCAqYXJncyk6CiAgICAgICAgIiIiRm9ybWF0IGEgc2VjdGlvbiB3aXRoIGEgYmlnIGhlYWRpbmcuIiIiCiAgICAgICAgdGl0bGUgPSAnPHN0cm9uZyBjbGFzcz0iYmlnc2VjdGlvbiI+JXM8L3N0cm9uZz4nICUgdGl0bGUKICAgICAgICByZXR1cm4gc2VsZi5zZWN0aW9uKHRpdGxlLCAqYXJncykKCiAgICBkZWYgcHJlZm9ybWF0KHNlbGYsIHRleHQpOgogICAgICAgICIiIkZvcm1hdCBsaXRlcmFsIHByZWZvcm1hdHRlZCB0ZXh0LiIiIgogICAgICAgIHRleHQgPSBzZWxmLmVzY2FwZSh0ZXh0LmV4cGFuZHRhYnMoKSkKICAgICAgICByZXR1cm4gcmVwbGFjZSh0ZXh0LCAnXG5cbicsICdcbiBcbicsICdcblxuJywgJ1xuIFxuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICcsICcmbmJzcDsnLCAnXG4nLCAnPGJyPlxuJykKCiAgICBkZWYgbXVsdGljb2x1bW4oc2VsZiwgbGlzdCwgZm9ybWF0KToKICAgICAgICAiIiJGb3JtYXQgYSBsaXN0IG9mIGl0ZW1zIGludG8gYSBtdWx0aS1jb2x1bW4gbGlzdC4iIiIKICAgICAgICByZXN1bHQgPSAnJwogICAgICAgIHJvd3MgPSAobGVuKGxpc3QpICsgMykgLy8gNAogICAgICAgIGZvciBjb2wgaW4gcmFuZ2UoNCk6CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArICc8dGQgY2xhc3M9Im11bHRpY29sdW1uIj4nCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHJvd3MqY29sLCByb3dzKmNvbCtyb3dzKToKICAgICAgICAgICAgICAgIGlmIGkgPCBsZW4obGlzdCk6CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgZm9ybWF0KGxpc3RbaV0pICsgJzxicj5cbicKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgJzwvdGQ+JwogICAgICAgIHJldHVybiAnPHRhYmxlPjx0cj4lczwvdHI+PC90YWJsZT4nICUgcmVzdWx0CgogICAgZGVmIGdyZXkoc2VsZiwgdGV4dCk6IHJldHVybiAnPHNwYW4gY2xhc3M9ImdyZXkiPiVzPC9zcGFuPicgJSB0ZXh0CgogICAgZGVmIG5hbWVsaW5rKHNlbGYsIG5hbWUsICpkaWN0cyk6CiAgICAgICAgIiIiTWFrZSBhIGxpbmsgZm9yIGFuIGlkZW50aWZpZXIsIGdpdmVuIG5hbWUtdG8tVVJMIG1hcHBpbmdzLiIiIgogICAgICAgIGZvciBkaWN0IGluIGRpY3RzOgogICAgICAgICAgICBpZiBuYW1lIGluIGRpY3Q6CiAgICAgICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9IiVzIj4lczwvYT4nICUgKGRpY3RbbmFtZV0sIG5hbWUpCiAgICAgICAgcmV0dXJuIG5hbWUKCiAgICBkZWYgY2xhc3NsaW5rKHNlbGYsIG9iamVjdCwgbW9kbmFtZSk6CiAgICAgICAgIiIiTWFrZSBhIGxpbmsgZm9yIGEgY2xhc3MuIiIiCiAgICAgICAgbmFtZSwgbW9kdWxlID0gb2JqZWN0Ll9fbmFtZV9fLCBzeXMubW9kdWxlcy5nZXQob2JqZWN0Ll9fbW9kdWxlX18pCiAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsIG5hbWUpIGFuZCBnZXRhdHRyKG1vZHVsZSwgbmFtZSkgaXMgb2JqZWN0OgogICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9IiVzLmh0bWwjJXMiPiVzPC9hPicgJSAoCiAgICAgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18sIG5hbWUsIGNsYXNzbmFtZShvYmplY3QsIG1vZG5hbWUpKQogICAgICAgIHJldHVybiBjbGFzc25hbWUob2JqZWN0LCBtb2RuYW1lKQoKICAgIGRlZiBtb2R1bGVsaW5rKHNlbGYsIG9iamVjdCk6CiAgICAgICAgIiIiTWFrZSBhIGxpbmsgZm9yIGEgbW9kdWxlLiIiIgogICAgICAgIHJldHVybiAnPGEgaHJlZj0iJXMuaHRtbCI+JXM8L2E+JyAlIChvYmplY3QuX19uYW1lX18sIG9iamVjdC5fX25hbWVfXykKCiAgICBkZWYgbW9kcGtnbGluayhzZWxmLCBtb2Rwa2dpbmZvKToKICAgICAgICAiIiJNYWtlIGEgbGluayBmb3IgYSBtb2R1bGUgb3IgcGFja2FnZSB0byBkaXNwbGF5IGluIGFuIGluZGV4LiIiIgogICAgICAgIG5hbWUsIHBhdGgsIGlzcGFja2FnZSwgc2hhZG93ZWQgPSBtb2Rwa2dpbmZvCiAgICAgICAgaWYgc2hhZG93ZWQ6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmdyZXkobmFtZSkKICAgICAgICBpZiBwYXRoOgogICAgICAgICAgICB1cmwgPSAnJXMuJXMuaHRtbCcgJSAocGF0aCwgbmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB1cmwgPSAnJXMuaHRtbCcgJSBuYW1lCiAgICAgICAgaWYgaXNwYWNrYWdlOgogICAgICAgICAgICB0ZXh0ID0gJzxzdHJvbmc+JXM8L3N0cm9uZz4mbmJzcDsocGFja2FnZSknICUgbmFtZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRleHQgPSBuYW1lCiAgICAgICAgcmV0dXJuICc8YSBocmVmPSIlcyI+JXM8L2E+JyAlICh1cmwsIHRleHQpCgogICAgZGVmIGZpbGVsaW5rKHNlbGYsIHVybCwgcGF0aCk6CiAgICAgICAgIiIiTWFrZSBhIGxpbmsgdG8gc291cmNlIGZpbGUuIiIiCiAgICAgICAgcmV0dXJuICc8YSBocmVmPSJmaWxlOiVzIj4lczwvYT4nICUgKHVybCwgcGF0aCkKCiAgICBkZWYgbWFya3VwKHNlbGYsIHRleHQsIGVzY2FwZT1Ob25lLCBmdW5jcz17fSwgY2xhc3Nlcz17fSwgbWV0aG9kcz17fSk6CiAgICAgICAgIiIiTWFyayB1cCBzb21lIHBsYWluIHRleHQsIGdpdmVuIGEgY29udGV4dCBvZiBzeW1ib2xzIHRvIGxvb2sgZm9yLgogICAgICAgIEVhY2ggY29udGV4dCBkaWN0aW9uYXJ5IG1hcHMgb2JqZWN0IG5hbWVzIHRvIGFuY2hvciBuYW1lcy4iIiIKICAgICAgICBlc2NhcGUgPSBlc2NhcGUgb3Igc2VsZi5lc2NhcGUKICAgICAgICByZXN1bHRzID0gW10KICAgICAgICBoZXJlID0gMAogICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKHInXGIoKGh0dHB8aHR0cHN8ZnRwKTovL1xTK1tcdy9dfCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1JGQ1stIF0/KFxkKyl8JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInUEVQWy0gXT8oXGQrKXwnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicoc2VsZlwuKT8oXHcrKSknKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIG1hdGNoID0gcGF0dGVybi5zZWFyY2godGV4dCwgaGVyZSkKICAgICAgICAgICAgaWYgbm90IG1hdGNoOiBicmVhawogICAgICAgICAgICBzdGFydCwgZW5kID0gbWF0Y2guc3BhbigpCiAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGVzY2FwZSh0ZXh0W2hlcmU6c3RhcnRdKSkKCiAgICAgICAgICAgIGFsbCwgc2NoZW1lLCByZmMsIHBlcCwgc2VsZmRvdCwgbmFtZSA9IG1hdGNoLmdyb3VwcygpCiAgICAgICAgICAgIGlmIHNjaGVtZToKICAgICAgICAgICAgICAgIHVybCA9IGVzY2FwZShhbGwpLnJlcGxhY2UoJyInLCAnJnF1b3Q7JykKICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCc8YSBocmVmPSIlcyI+JXM8L2E+JyAlICh1cmwsIHVybCkpCiAgICAgICAgICAgIGVsaWYgcmZjOgogICAgICAgICAgICAgICAgdXJsID0gJ2h0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMlZC50eHQnICUgaW50KHJmYykKICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCc8YSBocmVmPSIlcyI+JXM8L2E+JyAlICh1cmwsIGVzY2FwZShhbGwpKSkKICAgICAgICAgICAgZWxpZiBwZXA6CiAgICAgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly9wZXBzLnB5dGhvbi5vcmcvcGVwLSUwNGQvJyAlIGludChwZXApCiAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgnPGEgaHJlZj0iJXMiPiVzPC9hPicgJSAodXJsLCBlc2NhcGUoYWxsKSkpCiAgICAgICAgICAgIGVsaWYgc2VsZmRvdDoKICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgbGluayBmb3IgbWV0aG9kcyBsaWtlICdzZWxmLm1ldGhvZCguLi4pJwogICAgICAgICAgICAgICAgIyBhbmQgdXNlIDxzdHJvbmc+IGZvciBhdHRyaWJ1dGVzIGxpa2UgJ3NlbGYuYXR0cicKICAgICAgICAgICAgICAgIGlmIHRleHRbZW5kOmVuZCsxXSA9PSAnKCc6CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoJ3NlbGYuJyArIHNlbGYubmFtZWxpbmsobmFtZSwgbWV0aG9kcykpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCdzZWxmLjxzdHJvbmc+JXM8L3N0cm9uZz4nICUgbmFtZSkKICAgICAgICAgICAgZWxpZiB0ZXh0W2VuZDplbmQrMV0gPT0gJygnOgogICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoc2VsZi5uYW1lbGluayhuYW1lLCBtZXRob2RzLCBmdW5jcywgY2xhc3NlcykpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzZWxmLm5hbWVsaW5rKG5hbWUsIGNsYXNzZXMpKQogICAgICAgICAgICBoZXJlID0gZW5kCiAgICAgICAgcmVzdWx0cy5hcHBlbmQoZXNjYXBlKHRleHRbaGVyZTpdKSkKICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHRzKQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0eXBlLXNwZWNpZmljIHJvdXRpbmVzCgogICAgZGVmIGZvcm1hdHRyZWUoc2VsZiwgdHJlZSwgbW9kbmFtZSwgcGFyZW50PU5vbmUpOgogICAgICAgICIiIlByb2R1Y2UgSFRNTCBmb3IgYSBjbGFzcyB0cmVlIGFzIGdpdmVuIGJ5IGluc3BlY3QuZ2V0Y2xhc3N0cmVlKCkuIiIiCiAgICAgICAgcmVzdWx0ID0gJycKICAgICAgICBmb3IgZW50cnkgaW4gdHJlZToKICAgICAgICAgICAgaWYgdHlwZShlbnRyeSkgaXMgdHlwZSgoKSk6CiAgICAgICAgICAgICAgICBjLCBiYXNlcyA9IGVudHJ5CiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAnPGR0IGNsYXNzPSJoZWFkaW5nLXRleHQiPicKICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuY2xhc3NsaW5rKGMsIG1vZG5hbWUpCiAgICAgICAgICAgICAgICBpZiBiYXNlcyBhbmQgYmFzZXMgIT0gKHBhcmVudCwpOgogICAgICAgICAgICAgICAgICAgIHBhcmVudHMgPSBbXQogICAgICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIGJhc2VzOgogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRzLmFwcGVuZChzZWxmLmNsYXNzbGluayhiYXNlLCBtb2RuYW1lKSkKICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAnKCcgKyAnLCAnLmpvaW4ocGFyZW50cykgKyAnKScKICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArICdcbjwvZHQ+JwogICAgICAgICAgICBlbGlmIHR5cGUoZW50cnkpIGlzIHR5cGUoW10pOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgJzxkZD5cbiVzPC9kZD5cbicgJSBzZWxmLmZvcm1hdHRyZWUoCiAgICAgICAgICAgICAgICAgICAgZW50cnksIG1vZG5hbWUsIGMpCiAgICAgICAgcmV0dXJuICc8ZGw+XG4lczwvZGw+XG4nICUgcmVzdWx0CgogICAgZGVmIGRvY21vZHVsZShzZWxmLCBvYmplY3QsIG5hbWU9Tm9uZSwgbW9kPU5vbmUsICppZ25vcmVkKToKICAgICAgICAiIiJQcm9kdWNlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgYSBtb2R1bGUgb2JqZWN0LiIiIgogICAgICAgIG5hbWUgPSBvYmplY3QuX19uYW1lX18gIyBpZ25vcmUgdGhlIHBhc3NlZC1pbiBuYW1lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhbGwgPSBvYmplY3QuX19hbGxfXwogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgYWxsID0gTm9uZQogICAgICAgIHBhcnRzID0gbmFtZS5zcGxpdCgnLicpCiAgICAgICAgbGlua3MgPSBbXQogICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihwYXJ0cyktMSk6CiAgICAgICAgICAgIGxpbmtzLmFwcGVuZCgKICAgICAgICAgICAgICAgICc8YSBocmVmPSIlcy5odG1sIiBjbGFzcz0id2hpdGUiPiVzPC9hPicgJQogICAgICAgICAgICAgICAgKCcuJy5qb2luKHBhcnRzWzppKzFdKSwgcGFydHNbaV0pKQogICAgICAgIGxpbmtlZG5hbWUgPSAnLicuam9pbihsaW5rcyArIHBhcnRzWy0xOl0pCiAgICAgICAgaGVhZCA9ICc8c3Ryb25nIGNsYXNzPSJ0aXRsZSI+JXM8L3N0cm9uZz4nICUgbGlua2VkbmFtZQogICAgICAgIHRyeToKICAgICAgICAgICAgcGF0aCA9IGluc3BlY3QuZ2V0YWJzZmlsZShvYmplY3QpCiAgICAgICAgICAgIHVybCA9IHVybGxpYi5wYXJzZS5xdW90ZShwYXRoKQogICAgICAgICAgICBmaWxlbGluayA9IHNlbGYuZmlsZWxpbmsodXJsLCBwYXRoKQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgIGZpbGVsaW5rID0gJyhidWlsdC1pbiknCiAgICAgICAgaW5mbyA9IFtdCiAgICAgICAgaWYgaGFzYXR0cihvYmplY3QsICdfX3ZlcnNpb25fXycpOgogICAgICAgICAgICB2ZXJzaW9uID0gc3RyKG9iamVjdC5fX3ZlcnNpb25fXykKICAgICAgICAgICAgaWYgdmVyc2lvbls6MTFdID09ICckJyArICdSZXZpc2lvbjogJyBhbmQgdmVyc2lvblstMTpdID09ICckJzoKICAgICAgICAgICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uWzExOi0xXS5zdHJpcCgpCiAgICAgICAgICAgIGluZm8uYXBwZW5kKCd2ZXJzaW9uICVzJyAlIHNlbGYuZXNjYXBlKHZlcnNpb24pKQogICAgICAgIGlmIGhhc2F0dHIob2JqZWN0LCAnX19kYXRlX18nKToKICAgICAgICAgICAgaW5mby5hcHBlbmQoc2VsZi5lc2NhcGUoc3RyKG9iamVjdC5fX2RhdGVfXykpKQogICAgICAgIGlmIGluZm86CiAgICAgICAgICAgIGhlYWQgPSBoZWFkICsgJyAoJXMpJyAlICcsICcuam9pbihpbmZvKQogICAgICAgIGRvY2xvYyA9IHNlbGYuZ2V0ZG9jbG9jKG9iamVjdCkKICAgICAgICBpZiBkb2Nsb2MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGRvY2xvYyA9ICc8YnI+PGEgaHJlZj0iJShkb2Nsb2MpcyI+TW9kdWxlIFJlZmVyZW5jZTwvYT4nICUgbG9jYWxzKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBkb2Nsb2MgPSAnJwogICAgICAgIHJlc3VsdCA9IHNlbGYuaGVhZGluZyhoZWFkLCAnPGEgaHJlZj0iLiI+aW5kZXg8L2E+PGJyPicgKyBmaWxlbGluayArIGRvY2xvYykKCiAgICAgICAgbW9kdWxlcyA9IGluc3BlY3QuZ2V0bWVtYmVycyhvYmplY3QsIGluc3BlY3QuaXNtb2R1bGUpCgogICAgICAgIGNsYXNzZXMsIGNkaWN0ID0gW10sIHt9CiAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaW5zcGVjdC5nZXRtZW1iZXJzKG9iamVjdCwgaW5zcGVjdC5pc2NsYXNzKToKICAgICAgICAgICAgIyBpZiBfX2FsbF9fIGV4aXN0cywgYmVsaWV2ZSBpdC4gIE90aGVyd2lzZSB1c2Ugb2xkIGhldXJpc3RpYy4KICAgICAgICAgICAgaWYgKGFsbCBpcyBub3QgTm9uZSBvcgogICAgICAgICAgICAgICAgKGluc3BlY3QuZ2V0bW9kdWxlKHZhbHVlKSBvciBvYmplY3QpIGlzIG9iamVjdCk6CiAgICAgICAgICAgICAgICBpZiB2aXNpYmxlbmFtZShrZXksIGFsbCwgb2JqZWN0KToKICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZCgoa2V5LCB2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgY2RpY3Rba2V5XSA9IGNkaWN0W3ZhbHVlXSA9ICcjJyArIGtleQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNsYXNzZXM6CiAgICAgICAgICAgIGZvciBiYXNlIGluIHZhbHVlLl9fYmFzZXNfXzoKICAgICAgICAgICAgICAgIGtleSwgbW9kbmFtZSA9IGJhc2UuX19uYW1lX18sIGJhc2UuX19tb2R1bGVfXwogICAgICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXMuZ2V0KG1vZG5hbWUpCiAgICAgICAgICAgICAgICBpZiBtb2RuYW1lICE9IG5hbWUgYW5kIG1vZHVsZSBhbmQgaGFzYXR0cihtb2R1bGUsIGtleSk6CiAgICAgICAgICAgICAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsIGtleSkgaXMgYmFzZToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGtleSBpbiBjZGljdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkaWN0W2tleV0gPSBjZGljdFtiYXNlXSA9IG1vZG5hbWUgKyAnLmh0bWwjJyArIGtleQogICAgICAgIGZ1bmNzLCBmZGljdCA9IFtdLCB7fQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIGluc3BlY3QuZ2V0bWVtYmVycyhvYmplY3QsIGluc3BlY3QuaXNyb3V0aW5lKToKICAgICAgICAgICAgIyBpZiBfX2FsbF9fIGV4aXN0cywgYmVsaWV2ZSBpdC4gIE90aGVyd2lzZSB1c2Ugb2xkIGhldXJpc3RpYy4KICAgICAgICAgICAgaWYgKGFsbCBpcyBub3QgTm9uZSBvcgogICAgICAgICAgICAgICAgaW5zcGVjdC5pc2J1aWx0aW4odmFsdWUpIG9yIGluc3BlY3QuZ2V0bW9kdWxlKHZhbHVlKSBpcyBvYmplY3QpOgogICAgICAgICAgICAgICAgaWYgdmlzaWJsZW5hbWUoa2V5LCBhbGwsIG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKChrZXksIHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICBmZGljdFtrZXldID0gJyMtJyArIGtleQogICAgICAgICAgICAgICAgICAgIGlmIGluc3BlY3QuaXNmdW5jdGlvbih2YWx1ZSk6IGZkaWN0W3ZhbHVlXSA9IGZkaWN0W2tleV0KICAgICAgICBkYXRhID0gW10KICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpbnNwZWN0LmdldG1lbWJlcnMob2JqZWN0LCBpc2RhdGEpOgogICAgICAgICAgICBpZiB2aXNpYmxlbmFtZShrZXksIGFsbCwgb2JqZWN0KToKICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKChrZXksIHZhbHVlKSkKCiAgICAgICAgZG9jID0gc2VsZi5tYXJrdXAoZ2V0ZG9jKG9iamVjdCksIHNlbGYucHJlZm9ybWF0LCBmZGljdCwgY2RpY3QpCiAgICAgICAgZG9jID0gZG9jIGFuZCAnPHNwYW4gY2xhc3M9ImNvZGUiPiVzPC9zcGFuPicgJSBkb2MKICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAnPHA+JXM8L3A+XG4nICUgZG9jCgogICAgICAgIGlmIGhhc2F0dHIob2JqZWN0LCAnX19wYXRoX18nKToKICAgICAgICAgICAgbW9kcGtncyA9IFtdCiAgICAgICAgICAgIGZvciBpbXBvcnRlciwgbW9kbmFtZSwgaXNwa2cgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMob2JqZWN0Ll9fcGF0aF9fKToKICAgICAgICAgICAgICAgIG1vZHBrZ3MuYXBwZW5kKChtb2RuYW1lLCBuYW1lLCBpc3BrZywgMCkpCiAgICAgICAgICAgIG1vZHBrZ3Muc29ydCgpCiAgICAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5tdWx0aWNvbHVtbihtb2Rwa2dzLCBzZWxmLm1vZHBrZ2xpbmspCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuYmlnc2VjdGlvbigKICAgICAgICAgICAgICAgICdQYWNrYWdlIENvbnRlbnRzJywgJ3BrZy1jb250ZW50JywgY29udGVudHMpCiAgICAgICAgZWxpZiBtb2R1bGVzOgogICAgICAgICAgICBjb250ZW50cyA9IHNlbGYubXVsdGljb2x1bW4oCiAgICAgICAgICAgICAgICBtb2R1bGVzLCBsYW1iZGEgdDogc2VsZi5tb2R1bGVsaW5rKHRbMV0pKQogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBzZWxmLmJpZ3NlY3Rpb24oCiAgICAgICAgICAgICAgICAnTW9kdWxlcycsICdwa2ctY29udGVudCcsIGNvbnRlbnRzKQoKICAgICAgICBpZiBjbGFzc2VzOgogICAgICAgICAgICBjbGFzc2xpc3QgPSBbdmFsdWUgZm9yIChrZXksIHZhbHVlKSBpbiBjbGFzc2VzXQogICAgICAgICAgICBjb250ZW50cyA9IFsKICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0dHJlZShpbnNwZWN0LmdldGNsYXNzdHJlZShjbGFzc2xpc3QsIDEpLCBuYW1lKV0KICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY2xhc3NlczoKICAgICAgICAgICAgICAgIGNvbnRlbnRzLmFwcGVuZChzZWxmLmRvY3VtZW50KHZhbHVlLCBrZXksIG5hbWUsIGZkaWN0LCBjZGljdCkpCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuYmlnc2VjdGlvbigKICAgICAgICAgICAgICAgICdDbGFzc2VzJywgJ2luZGV4JywgJyAnLmpvaW4oY29udGVudHMpKQogICAgICAgIGlmIGZ1bmNzOgogICAgICAgICAgICBjb250ZW50cyA9IFtdCiAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGZ1bmNzOgogICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKHNlbGYuZG9jdW1lbnQodmFsdWUsIGtleSwgbmFtZSwgZmRpY3QsIGNkaWN0KSkKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5iaWdzZWN0aW9uKAogICAgICAgICAgICAgICAgJ0Z1bmN0aW9ucycsICdmdW5jdGlvbnMnLCAnICcuam9pbihjb250ZW50cykpCiAgICAgICAgaWYgZGF0YToKICAgICAgICAgICAgY29udGVudHMgPSBbXQogICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkYXRhOgogICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKHNlbGYuZG9jdW1lbnQodmFsdWUsIGtleSkpCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuYmlnc2VjdGlvbigKICAgICAgICAgICAgICAgICdEYXRhJywgJ2RhdGEnLCAnPGJyPlxuJy5qb2luKGNvbnRlbnRzKSkKICAgICAgICBpZiBoYXNhdHRyKG9iamVjdCwgJ19fYXV0aG9yX18nKToKICAgICAgICAgICAgY29udGVudHMgPSBzZWxmLm1hcmt1cChzdHIob2JqZWN0Ll9fYXV0aG9yX18pLCBzZWxmLnByZWZvcm1hdCkKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5iaWdzZWN0aW9uKCdBdXRob3InLCAnYXV0aG9yJywgY29udGVudHMpCiAgICAgICAgaWYgaGFzYXR0cihvYmplY3QsICdfX2NyZWRpdHNfXycpOgogICAgICAgICAgICBjb250ZW50cyA9IHNlbGYubWFya3VwKHN0cihvYmplY3QuX19jcmVkaXRzX18pLCBzZWxmLnByZWZvcm1hdCkKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5iaWdzZWN0aW9uKCdDcmVkaXRzJywgJ2NyZWRpdHMnLCBjb250ZW50cykKCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBkb2NjbGFzcyhzZWxmLCBvYmplY3QsIG5hbWU9Tm9uZSwgbW9kPU5vbmUsIGZ1bmNzPXt9LCBjbGFzc2VzPXt9LAogICAgICAgICAgICAgICAgICppZ25vcmVkKToKICAgICAgICAiIiJQcm9kdWNlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgYSBjbGFzcyBvYmplY3QuIiIiCiAgICAgICAgcmVhbG5hbWUgPSBvYmplY3QuX19uYW1lX18KICAgICAgICBuYW1lID0gbmFtZSBvciByZWFsbmFtZQogICAgICAgIGJhc2VzID0gb2JqZWN0Ll9fYmFzZXNfXwoKICAgICAgICBjb250ZW50cyA9IFtdCiAgICAgICAgcHVzaCA9IGNvbnRlbnRzLmFwcGVuZAoKICAgICAgICAjIEN1dGUgbGl0dGxlIGNsYXNzIHRvIHB1bXAgb3V0IGEgaG9yaXpvbnRhbCBydWxlIGJldHdlZW4gc2VjdGlvbnMuCiAgICAgICAgY2xhc3MgSG9yaXpvbnRhbFJ1bGU6CiAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgICAgICAgIHNlbGYubmVlZG9uZSA9IDAKICAgICAgICAgICAgZGVmIG1heWJlKHNlbGYpOgogICAgICAgICAgICAgICAgaWYgc2VsZi5uZWVkb25lOgogICAgICAgICAgICAgICAgICAgIHB1c2goJzxocj5cbicpCiAgICAgICAgICAgICAgICBzZWxmLm5lZWRvbmUgPSAxCiAgICAgICAgaHIgPSBIb3Jpem9udGFsUnVsZSgpCgogICAgICAgICMgTGlzdCB0aGUgbXJvLCBpZiBub24tdHJpdmlhbC4KICAgICAgICBtcm8gPSBkZXF1ZShpbnNwZWN0LmdldG1ybyhvYmplY3QpKQogICAgICAgIGlmIGxlbihtcm8pID4gMjoKICAgICAgICAgICAgaHIubWF5YmUoKQogICAgICAgICAgICBwdXNoKCc8ZGw+PGR0Pk1ldGhvZCByZXNvbHV0aW9uIG9yZGVyOjwvZHQ+XG4nKQogICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86CiAgICAgICAgICAgICAgICBwdXNoKCc8ZGQ+JXM8L2RkPlxuJyAlIHNlbGYuY2xhc3NsaW5rKGJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKSkKICAgICAgICAgICAgcHVzaCgnPC9kbD5cbicpCgogICAgICAgIGRlZiBzcGlsbChtc2csIGF0dHJzLCBwcmVkaWNhdGUpOgogICAgICAgICAgICBvaywgYXR0cnMgPSBfc3BsaXRfbGlzdChhdHRycywgcHJlZGljYXRlKQogICAgICAgICAgICBpZiBvazoKICAgICAgICAgICAgICAgIGhyLm1heWJlKCkKICAgICAgICAgICAgICAgIHB1c2gobXNnKQogICAgICAgICAgICAgICAgZm9yIG5hbWUsIGtpbmQsIGhvbWVjbHMsIHZhbHVlIGluIG9rOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKG9iamVjdCwgbmFtZSkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICAgICAjIFNvbWUgZGVzY3JpcHRvcnMgbWF5IG1lZXQgYSBmYWlsdXJlIGluIHRoZWlyIF9fZ2V0X18uCiAgICAgICAgICAgICAgICAgICAgICAgICMgKGJ1ZyAjMTc4NSkKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChzZWxmLmRvY2RhdGEodmFsdWUsIG5hbWUsIG1vZCkpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChzZWxmLmRvY3VtZW50KHZhbHVlLCBuYW1lLCBtb2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jcywgY2xhc3NlcywgbWRpY3QsIG9iamVjdCkpCiAgICAgICAgICAgICAgICAgICAgcHVzaCgnXG4nKQogICAgICAgICAgICByZXR1cm4gYXR0cnMKCiAgICAgICAgZGVmIHNwaWxsZGVzY3JpcHRvcnMobXNnLCBhdHRycywgcHJlZGljYXRlKToKICAgICAgICAgICAgb2ssIGF0dHJzID0gX3NwbGl0X2xpc3QoYXR0cnMsIHByZWRpY2F0ZSkKICAgICAgICAgICAgaWYgb2s6CiAgICAgICAgICAgICAgICBoci5tYXliZSgpCiAgICAgICAgICAgICAgICBwdXNoKG1zZykKICAgICAgICAgICAgICAgIGZvciBuYW1lLCBraW5kLCBob21lY2xzLCB2YWx1ZSBpbiBvazoKICAgICAgICAgICAgICAgICAgICBwdXNoKHNlbGYuZG9jZGF0YSh2YWx1ZSwgbmFtZSwgbW9kKSkKICAgICAgICAgICAgcmV0dXJuIGF0dHJzCgogICAgICAgIGRlZiBzcGlsbGRhdGEobXNnLCBhdHRycywgcHJlZGljYXRlKToKICAgICAgICAgICAgb2ssIGF0dHJzID0gX3NwbGl0X2xpc3QoYXR0cnMsIHByZWRpY2F0ZSkKICAgICAgICAgICAgaWYgb2s6CiAgICAgICAgICAgICAgICBoci5tYXliZSgpCiAgICAgICAgICAgICAgICBwdXNoKG1zZykKICAgICAgICAgICAgICAgIGZvciBuYW1lLCBraW5kLCBob21lY2xzLCB2YWx1ZSBpbiBvazoKICAgICAgICAgICAgICAgICAgICBiYXNlID0gc2VsZi5kb2NvdGhlcihnZXRhdHRyKG9iamVjdCwgbmFtZSksIG5hbWUsIG1vZCkKICAgICAgICAgICAgICAgICAgICBkb2MgPSBnZXRkb2ModmFsdWUpCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRvYzoKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCgnPGRsPjxkdD4lczwvZGw+XG4nICUgYmFzZSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSBzZWxmLm1hcmt1cChnZXRkb2ModmFsdWUpLCBzZWxmLnByZWZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3MsIGNsYXNzZXMsIG1kaWN0KQogICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSAnPGRkPjxzcGFuIGNsYXNzPSJjb2RlIj4lczwvc3Bhbj4nICUgZG9jCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goJzxkbD48ZHQ+JXMlczwvZGw+XG4nICUgKGJhc2UsIGRvYykpCiAgICAgICAgICAgICAgICAgICAgcHVzaCgnXG4nKQogICAgICAgICAgICByZXR1cm4gYXR0cnMKCiAgICAgICAgYXR0cnMgPSBbKG5hbWUsIGtpbmQsIGNscywgdmFsdWUpCiAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIGtpbmQsIGNscywgdmFsdWUgaW4gY2xhc3NpZnlfY2xhc3NfYXR0cnMob2JqZWN0KQogICAgICAgICAgICAgICAgIGlmIHZpc2libGVuYW1lKG5hbWUsIG9iaj1vYmplY3QpXQoKICAgICAgICBtZGljdCA9IHt9CiAgICAgICAgZm9yIGtleSwga2luZCwgaG9tZWNscywgdmFsdWUgaW4gYXR0cnM6CiAgICAgICAgICAgIG1kaWN0W2tleV0gPSBhbmNob3IgPSAnIycgKyBuYW1lICsgJy0nICsga2V5CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihvYmplY3QsIG5hbWUpCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAjIFNvbWUgZGVzY3JpcHRvcnMgbWF5IG1lZXQgYSBmYWlsdXJlIGluIHRoZWlyIF9fZ2V0X18uCiAgICAgICAgICAgICAgICAjIChidWcgIzE3ODUpCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICMgVGhlIHZhbHVlIG1heSBub3QgYmUgaGFzaGFibGUgKGUuZy4sIGEgZGF0YSBhdHRyIHdpdGgKICAgICAgICAgICAgICAgICMgYSBkaWN0IG9yIGxpc3QgdmFsdWUpLgogICAgICAgICAgICAgICAgbWRpY3RbdmFsdWVdID0gYW5jaG9yCiAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCgogICAgICAgIHdoaWxlIGF0dHJzOgogICAgICAgICAgICBpZiBtcm86CiAgICAgICAgICAgICAgICB0aGlzY2xhc3MgPSBtcm8ucG9wbGVmdCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0aGlzY2xhc3MgPSBhdHRyc1swXVsyXQogICAgICAgICAgICBhdHRycywgaW5oZXJpdGVkID0gX3NwbGl0X2xpc3QoYXR0cnMsIGxhbWJkYSB0OiB0WzJdIGlzIHRoaXNjbGFzcykKCiAgICAgICAgICAgIGlmIG9iamVjdCBpcyBub3QgYnVpbHRpbnMub2JqZWN0IGFuZCB0aGlzY2xhc3MgaXMgYnVpbHRpbnMub2JqZWN0OgogICAgICAgICAgICAgICAgYXR0cnMgPSBpbmhlcml0ZWQKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgdGhpc2NsYXNzIGlzIG9iamVjdDoKICAgICAgICAgICAgICAgIHRhZyA9ICdkZWZpbmVkIGhlcmUnCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0YWcgPSAnaW5oZXJpdGVkIGZyb20gJXMnICUgc2VsZi5jbGFzc2xpbmsodGhpc2NsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQogICAgICAgICAgICB0YWcgKz0gJzo8YnI+XG4nCgogICAgICAgICAgICBzb3J0X2F0dHJpYnV0ZXMoYXR0cnMsIG9iamVjdCkKCiAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgIGF0dHJzID0gc3BpbGwoJ01ldGhvZHMgJXMnICUgdGFnLCBhdHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgdDogdFsxXSA9PSAnbWV0aG9kJykKICAgICAgICAgICAgYXR0cnMgPSBzcGlsbCgnQ2xhc3MgbWV0aG9kcyAlcycgJSB0YWcsIGF0dHJzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSB0OiB0WzFdID09ICdjbGFzcyBtZXRob2QnKQogICAgICAgICAgICBhdHRycyA9IHNwaWxsKCdTdGF0aWMgbWV0aG9kcyAlcycgJSB0YWcsIGF0dHJzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSB0OiB0WzFdID09ICdzdGF0aWMgbWV0aG9kJykKICAgICAgICAgICAgYXR0cnMgPSBzcGlsbGRlc2NyaXB0b3JzKCJSZWFkb25seSBwcm9wZXJ0aWVzICVzIiAlIHRhZywgYXR0cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgdDogdFsxXSA9PSAncmVhZG9ubHkgcHJvcGVydHknKQogICAgICAgICAgICBhdHRycyA9IHNwaWxsZGVzY3JpcHRvcnMoJ0RhdGEgZGVzY3JpcHRvcnMgJXMnICUgdGFnLCBhdHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSB0OiB0WzFdID09ICdkYXRhIGRlc2NyaXB0b3InKQogICAgICAgICAgICBhdHRycyA9IHNwaWxsZGF0YSgnRGF0YSBhbmQgb3RoZXIgYXR0cmlidXRlcyAlcycgJSB0YWcsIGF0dHJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgdDogdFsxXSA9PSAnZGF0YScpCiAgICAgICAgICAgIGFzc2VydCBhdHRycyA9PSBbXQogICAgICAgICAgICBhdHRycyA9IGluaGVyaXRlZAoKICAgICAgICBjb250ZW50cyA9ICcnLmpvaW4oY29udGVudHMpCgogICAgICAgIGlmIG5hbWUgPT0gcmVhbG5hbWU6CiAgICAgICAgICAgIHRpdGxlID0gJzxhIG5hbWU9IiVzIj5jbGFzcyA8c3Ryb25nPiVzPC9zdHJvbmc+PC9hPicgJSAoCiAgICAgICAgICAgICAgICBuYW1lLCByZWFsbmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0aXRsZSA9ICc8c3Ryb25nPiVzPC9zdHJvbmc+ID0gPGEgbmFtZT0iJXMiPmNsYXNzICVzPC9hPicgJSAoCiAgICAgICAgICAgICAgICBuYW1lLCBuYW1lLCByZWFsbmFtZSkKICAgICAgICBpZiBiYXNlczoKICAgICAgICAgICAgcGFyZW50cyA9IFtdCiAgICAgICAgICAgIGZvciBiYXNlIGluIGJhc2VzOgogICAgICAgICAgICAgICAgcGFyZW50cy5hcHBlbmQoc2VsZi5jbGFzc2xpbmsoYmFzZSwgb2JqZWN0Ll9fbW9kdWxlX18pKQogICAgICAgICAgICB0aXRsZSA9IHRpdGxlICsgJyglcyknICUgJywgJy5qb2luKHBhcmVudHMpCgogICAgICAgIGRlY2wgPSAnJwogICAgICAgIHRyeToKICAgICAgICAgICAgc2lnbmF0dXJlID0gaW5zcGVjdC5zaWduYXR1cmUob2JqZWN0KQogICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKICAgICAgICAgICAgc2lnbmF0dXJlID0gTm9uZQogICAgICAgIGlmIHNpZ25hdHVyZToKICAgICAgICAgICAgYXJnc3BlYyA9IHN0cihzaWduYXR1cmUpCiAgICAgICAgICAgIGlmIGFyZ3NwZWMgYW5kIGFyZ3NwZWMgIT0gJygpJzoKICAgICAgICAgICAgICAgIGRlY2wgPSBuYW1lICsgc2VsZi5lc2NhcGUoYXJnc3BlYykgKyAnXG5cbicKCiAgICAgICAgZG9jID0gZ2V0ZG9jKG9iamVjdCkKICAgICAgICBpZiBkZWNsOgogICAgICAgICAgICBkb2MgPSBkZWNsICsgKGRvYyBvciAnJykKICAgICAgICBkb2MgPSBzZWxmLm1hcmt1cChkb2MsIHNlbGYucHJlZm9ybWF0LCBmdW5jcywgY2xhc3NlcywgbWRpY3QpCiAgICAgICAgZG9jID0gZG9jIGFuZCAnPHNwYW4gY2xhc3M9ImNvZGUiPiVzPGJyPiZuYnNwOzwvc3Bhbj4nICUgZG9jCgogICAgICAgIHJldHVybiBzZWxmLnNlY3Rpb24odGl0bGUsICd0aXRsZScsIGNvbnRlbnRzLCAzLCBkb2MpCgogICAgZGVmIGZvcm1hdHZhbHVlKHNlbGYsIG9iamVjdCk6CiAgICAgICAgIiIiRm9ybWF0IGFuIGFyZ3VtZW50IGRlZmF1bHQgdmFsdWUgYXMgdGV4dC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5ncmV5KCc9JyArIHNlbGYucmVwcihvYmplY3QpKQoKICAgIGRlZiBkb2Nyb3V0aW5lKHNlbGYsIG9iamVjdCwgbmFtZT1Ob25lLCBtb2Q9Tm9uZSwKICAgICAgICAgICAgICAgICAgIGZ1bmNzPXt9LCBjbGFzc2VzPXt9LCBtZXRob2RzPXt9LCBjbD1Ob25lKToKICAgICAgICAiIiJQcm9kdWNlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgYSBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LiIiIgogICAgICAgIHJlYWxuYW1lID0gb2JqZWN0Ll9fbmFtZV9fCiAgICAgICAgbmFtZSA9IG5hbWUgb3IgcmVhbG5hbWUKICAgICAgICBhbmNob3IgPSAoY2wgYW5kIGNsLl9fbmFtZV9fIG9yICcnKSArICctJyArIG5hbWUKICAgICAgICBub3RlID0gJycKICAgICAgICBza2lwZG9jcyA9IDAKICAgICAgICBpZiBfaXNfYm91bmRfbWV0aG9kKG9iamVjdCk6CiAgICAgICAgICAgIGltY2xhc3MgPSBvYmplY3QuX19zZWxmX18uX19jbGFzc19fCiAgICAgICAgICAgIGlmIGNsOgogICAgICAgICAgICAgICAgaWYgaW1jbGFzcyBpcyBub3QgY2w6CiAgICAgICAgICAgICAgICAgICAgbm90ZSA9ICcgZnJvbSAnICsgc2VsZi5jbGFzc2xpbmsoaW1jbGFzcywgbW9kKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgb2JqZWN0Ll9fc2VsZl9fIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIG5vdGUgPSAnIG1ldGhvZCBvZiAlcyBpbnN0YW5jZScgJSBzZWxmLmNsYXNzbGluaygKICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fc2VsZl9fLl9fY2xhc3NfXywgbW9kKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBub3RlID0gJyB1bmJvdW5kICVzIG1ldGhvZCcgJSBzZWxmLmNsYXNzbGluayhpbWNsYXNzLG1vZCkKCiAgICAgICAgaWYgKGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbihvYmplY3QpIG9yCiAgICAgICAgICAgICAgICBpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbihvYmplY3QpKToKICAgICAgICAgICAgYXN5bmNxdWFsaWZpZXIgPSAnYXN5bmMgJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGFzeW5jcXVhbGlmaWVyID0gJycKCiAgICAgICAgaWYgbmFtZSA9PSByZWFsbmFtZToKICAgICAgICAgICAgdGl0bGUgPSAnPGEgbmFtZT0iJXMiPjxzdHJvbmc+JXM8L3N0cm9uZz48L2E+JyAlIChhbmNob3IsIHJlYWxuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGNsIGFuZCBpbnNwZWN0LmdldGF0dHJfc3RhdGljKGNsLCByZWFsbmFtZSwgW10pIGlzIG9iamVjdDoKICAgICAgICAgICAgICAgIHJlYWxsaW5rID0gJzxhIGhyZWY9IiMlcyI+JXM8L2E+JyAlICgKICAgICAgICAgICAgICAgICAgICBjbC5fX25hbWVfXyArICctJyArIHJlYWxuYW1lLCByZWFsbmFtZSkKICAgICAgICAgICAgICAgIHNraXBkb2NzID0gMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVhbGxpbmsgPSByZWFsbmFtZQogICAgICAgICAgICB0aXRsZSA9ICc8YSBuYW1lPSIlcyI+PHN0cm9uZz4lczwvc3Ryb25nPjwvYT4gPSAlcycgJSAoCiAgICAgICAgICAgICAgICBhbmNob3IsIG5hbWUsIHJlYWxsaW5rKQogICAgICAgIGFyZ3NwZWMgPSBOb25lCiAgICAgICAgaWYgaW5zcGVjdC5pc3JvdXRpbmUob2JqZWN0KToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2lnbmF0dXJlID0gaW5zcGVjdC5zaWduYXR1cmUob2JqZWN0KQogICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5cGVFcnJvcik6CiAgICAgICAgICAgICAgICBzaWduYXR1cmUgPSBOb25lCiAgICAgICAgICAgIGlmIHNpZ25hdHVyZToKICAgICAgICAgICAgICAgIGFyZ3NwZWMgPSBzdHIoc2lnbmF0dXJlKQogICAgICAgICAgICAgICAgaWYgcmVhbG5hbWUgPT0gJzxsYW1iZGE+JzoKICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICc8c3Ryb25nPiVzPC9zdHJvbmc+IDxlbT5sYW1iZGE8L2VtPiAnICUgbmFtZQogICAgICAgICAgICAgICAgICAgICMgWFhYIGxhbWJkYSdzIHdvbid0IHVzdWFsbHkgaGF2ZSBmdW5jX2Fubm90YXRpb25zWydyZXR1cm4nXQogICAgICAgICAgICAgICAgICAgICMgc2luY2UgdGhlIHN5bnRheCBkb2Vzbid0IHN1cHBvcnQgYnV0IGl0IGlzIHBvc3NpYmxlLgogICAgICAgICAgICAgICAgICAgICMgU28gcmVtb3ZpbmcgcGFyZW50aGVzZXMgaXNuJ3QgdHJ1bHkgc2FmZS4KICAgICAgICAgICAgICAgICAgICBhcmdzcGVjID0gYXJnc3BlY1sxOi0xXSAjIHJlbW92ZSBwYXJlbnRoZXNlcwogICAgICAgIGlmIG5vdCBhcmdzcGVjOgogICAgICAgICAgICBhcmdzcGVjID0gJyguLi4pJwoKICAgICAgICBkZWNsID0gYXN5bmNxdWFsaWZpZXIgKyB0aXRsZSArIHNlbGYuZXNjYXBlKGFyZ3NwZWMpICsgKG5vdGUgYW5kCiAgICAgICAgICAgICAgIHNlbGYuZ3JleSgnPHNwYW4gY2xhc3M9ImhlYWRpbmctdGV4dCI+JXM8L3NwYW4+JyAlIG5vdGUpKQoKICAgICAgICBpZiBza2lwZG9jczoKICAgICAgICAgICAgcmV0dXJuICc8ZGw+PGR0PiVzPC9kdD48L2RsPlxuJyAlIGRlY2wKICAgICAgICBlbHNlOgogICAgICAgICAgICBkb2MgPSBzZWxmLm1hcmt1cCgKICAgICAgICAgICAgICAgIGdldGRvYyhvYmplY3QpLCBzZWxmLnByZWZvcm1hdCwgZnVuY3MsIGNsYXNzZXMsIG1ldGhvZHMpCiAgICAgICAgICAgIGRvYyA9IGRvYyBhbmQgJzxkZD48c3BhbiBjbGFzcz0iY29kZSI+JXM8L3NwYW4+PC9kZD4nICUgZG9jCiAgICAgICAgICAgIHJldHVybiAnPGRsPjxkdD4lczwvZHQ+JXM8L2RsPlxuJyAlIChkZWNsLCBkb2MpCgogICAgZGVmIGRvY2RhdGEoc2VsZiwgb2JqZWN0LCBuYW1lPU5vbmUsIG1vZD1Ob25lLCBjbD1Ob25lKToKICAgICAgICAiIiJQcm9kdWNlIGh0bWwgZG9jdW1lbnRhdGlvbiBmb3IgYSBkYXRhIGRlc2NyaXB0b3IuIiIiCiAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgcHVzaCA9IHJlc3VsdHMuYXBwZW5kCgogICAgICAgIGlmIG5hbWU6CiAgICAgICAgICAgIHB1c2goJzxkbD48ZHQ+PHN0cm9uZz4lczwvc3Ryb25nPjwvZHQ+XG4nICUgbmFtZSkKICAgICAgICBkb2MgPSBzZWxmLm1hcmt1cChnZXRkb2Mob2JqZWN0KSwgc2VsZi5wcmVmb3JtYXQpCiAgICAgICAgaWYgZG9jOgogICAgICAgICAgICBwdXNoKCc8ZGQ+PHNwYW4gY2xhc3M9ImNvZGUiPiVzPC9zcGFuPjwvZGQ+XG4nICUgZG9jKQogICAgICAgIHB1c2goJzwvZGw+XG4nKQoKICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHRzKQoKICAgIGRvY3Byb3BlcnR5ID0gZG9jZGF0YQoKICAgIGRlZiBkb2NvdGhlcihzZWxmLCBvYmplY3QsIG5hbWU9Tm9uZSwgbW9kPU5vbmUsICppZ25vcmVkKToKICAgICAgICAiIiJQcm9kdWNlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgYSBkYXRhIG9iamVjdC4iIiIKICAgICAgICBsaHMgPSBuYW1lIGFuZCAnPHN0cm9uZz4lczwvc3Ryb25nPiA9ICcgJSBuYW1lIG9yICcnCiAgICAgICAgcmV0dXJuIGxocyArIHNlbGYucmVwcihvYmplY3QpCgogICAgZGVmIGluZGV4KHNlbGYsIGRpciwgc2hhZG93ZWQ9Tm9uZSk6CiAgICAgICAgIiIiR2VuZXJhdGUgYW4gSFRNTCBpbmRleCBmb3IgYSBkaXJlY3Rvcnkgb2YgbW9kdWxlcy4iIiIKICAgICAgICBtb2Rwa2dzID0gW10KICAgICAgICBpZiBzaGFkb3dlZCBpcyBOb25lOiBzaGFkb3dlZCA9IHt9CiAgICAgICAgZm9yIGltcG9ydGVyLCBuYW1lLCBpc3BrZyBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbZGlyXSk6CiAgICAgICAgICAgIGlmIGFueSgoMHhEODAwIDw9IG9yZChjaCkgPD0gMHhERkZGKSBmb3IgY2ggaW4gbmFtZSk6CiAgICAgICAgICAgICAgICAjIGlnbm9yZSBhIG1vZHVsZSBpZiBpdHMgbmFtZSBjb250YWlucyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIG1vZHBrZ3MuYXBwZW5kKChuYW1lLCAnJywgaXNwa2csIG5hbWUgaW4gc2hhZG93ZWQpKQogICAgICAgICAgICBzaGFkb3dlZFtuYW1lXSA9IDEKCiAgICAgICAgbW9kcGtncy5zb3J0KCkKICAgICAgICBjb250ZW50cyA9IHNlbGYubXVsdGljb2x1bW4obW9kcGtncywgc2VsZi5tb2Rwa2dsaW5rKQogICAgICAgIHJldHVybiBzZWxmLmJpZ3NlY3Rpb24oZGlyLCAnaW5kZXgnLCBjb250ZW50cykKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdGV4dCBkb2N1bWVudGF0aW9uIGdlbmVyYXRvcgoKY2xhc3MgVGV4dFJlcHIoUmVwcik6CiAgICAiIiJDbGFzcyBmb3Igc2FmZWx5IG1ha2luZyBhIHRleHQgcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gb2JqZWN0LiIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIFJlcHIuX19pbml0X18oc2VsZikKICAgICAgICBzZWxmLm1heGxpc3QgPSBzZWxmLm1heHR1cGxlID0gMjAKICAgICAgICBzZWxmLm1heGRpY3QgPSAxMAogICAgICAgIHNlbGYubWF4c3RyaW5nID0gc2VsZi5tYXhvdGhlciA9IDEwMAoKICAgIGRlZiByZXByMShzZWxmLCB4LCBsZXZlbCk6CiAgICAgICAgaWYgaGFzYXR0cih0eXBlKHgpLCAnX19uYW1lX18nKToKICAgICAgICAgICAgbWV0aG9kbmFtZSA9ICdyZXByXycgKyAnXycuam9pbih0eXBlKHgpLl9fbmFtZV9fLnNwbGl0KCkpCiAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbWV0aG9kbmFtZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBtZXRob2RuYW1lKSh4LCBsZXZlbCkKICAgICAgICByZXR1cm4gY3JhbShzdHJpcGlkKHJlcHIoeCkpLCBzZWxmLm1heG90aGVyKQoKICAgIGRlZiByZXByX3N0cmluZyhzZWxmLCB4LCBsZXZlbCk6CiAgICAgICAgdGVzdCA9IGNyYW0oeCwgc2VsZi5tYXhzdHJpbmcpCiAgICAgICAgdGVzdHJlcHIgPSByZXByKHRlc3QpCiAgICAgICAgaWYgJ1xcJyBpbiB0ZXN0IGFuZCAnXFwnIG5vdCBpbiByZXBsYWNlKHRlc3RyZXByLCByJ1xcJywgJycpOgogICAgICAgICAgICAjIEJhY2tzbGFzaGVzIGFyZSBvbmx5IGxpdGVyYWwgaW4gdGhlIHN0cmluZyBhbmQgYXJlIG5ldmVyCiAgICAgICAgICAgICMgbmVlZGVkIHRvIG1ha2UgYW55IHNwZWNpYWwgY2hhcmFjdGVycywgc28gc2hvdyBhIHJhdyBzdHJpbmcuCiAgICAgICAgICAgIHJldHVybiAncicgKyB0ZXN0cmVwclswXSArIHRlc3QgKyB0ZXN0cmVwclswXQogICAgICAgIHJldHVybiB0ZXN0cmVwcgoKICAgIHJlcHJfc3RyID0gcmVwcl9zdHJpbmcKCiAgICBkZWYgcmVwcl9pbnN0YW5jZShzZWxmLCB4LCBsZXZlbCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gY3JhbShzdHJpcGlkKHJlcHIoeCkpLCBzZWxmLm1heHN0cmluZykKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHJldHVybiAnPCVzIGluc3RhbmNlPicgJSB4Ll9fY2xhc3NfXy5fX25hbWVfXwoKY2xhc3MgVGV4dERvYyhEb2MpOgogICAgIiIiRm9ybWF0dGVyIGNsYXNzIGZvciB0ZXh0IGRvY3VtZW50YXRpb24uIiIiCgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHRleHQgZm9ybWF0dGluZyB1dGlsaXRpZXMKCiAgICBfcmVwcl9pbnN0YW5jZSA9IFRleHRSZXByKCkKICAgIHJlcHIgPSBfcmVwcl9pbnN0YW5jZS5yZXByCgogICAgZGVmIGJvbGQoc2VsZiwgdGV4dCk6CiAgICAgICAgIiIiRm9ybWF0IGEgc3RyaW5nIGluIGJvbGQgYnkgb3ZlcnN0cmlraW5nLiIiIgogICAgICAgIHJldHVybiAnJy5qb2luKGNoICsgJ1xiJyArIGNoIGZvciBjaCBpbiB0ZXh0KQoKICAgIGRlZiBpbmRlbnQoc2VsZiwgdGV4dCwgcHJlZml4PScgICAgJyk6CiAgICAgICAgIiIiSW5kZW50IHRleHQgYnkgcHJlcGVuZGluZyBhIGdpdmVuIHByZWZpeCB0byBlYWNoIGxpbmUuIiIiCiAgICAgICAgaWYgbm90IHRleHQ6IHJldHVybiAnJwogICAgICAgIGxpbmVzID0gW3ByZWZpeCArIGxpbmUgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdCgnXG4nKV0KICAgICAgICBpZiBsaW5lczogbGluZXNbLTFdID0gbGluZXNbLTFdLnJzdHJpcCgpCiAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKCiAgICBkZWYgc2VjdGlvbihzZWxmLCB0aXRsZSwgY29udGVudHMpOgogICAgICAgICIiIkZvcm1hdCBhIHNlY3Rpb24gd2l0aCBhIGdpdmVuIGhlYWRpbmcuIiIiCiAgICAgICAgY2xlYW5fY29udGVudHMgPSBzZWxmLmluZGVudChjb250ZW50cykucnN0cmlwKCkKICAgICAgICByZXR1cm4gc2VsZi5ib2xkKHRpdGxlKSArICdcbicgKyBjbGVhbl9jb250ZW50cyArICdcblxuJwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0eXBlLXNwZWNpZmljIHJvdXRpbmVzCgogICAgZGVmIGZvcm1hdHRyZWUoc2VsZiwgdHJlZSwgbW9kbmFtZSwgcGFyZW50PU5vbmUsIHByZWZpeD0nJyk6CiAgICAgICAgIiIiUmVuZGVyIGluIHRleHQgYSBjbGFzcyB0cmVlIGFzIHJldHVybmVkIGJ5IGluc3BlY3QuZ2V0Y2xhc3N0cmVlKCkuIiIiCiAgICAgICAgcmVzdWx0ID0gJycKICAgICAgICBmb3IgZW50cnkgaW4gdHJlZToKICAgICAgICAgICAgaWYgdHlwZShlbnRyeSkgaXMgdHlwZSgoKSk6CiAgICAgICAgICAgICAgICBjLCBiYXNlcyA9IGVudHJ5CiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBwcmVmaXggKyBjbGFzc25hbWUoYywgbW9kbmFtZSkKICAgICAgICAgICAgICAgIGlmIGJhc2VzIGFuZCBiYXNlcyAhPSAocGFyZW50LCk6CiAgICAgICAgICAgICAgICAgICAgcGFyZW50cyA9IChjbGFzc25hbWUoYywgbW9kbmFtZSkgZm9yIGMgaW4gYmFzZXMpCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgJyglcyknICUgJywgJy5qb2luKHBhcmVudHMpCiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAnXG4nCiAgICAgICAgICAgIGVsaWYgdHlwZShlbnRyeSkgaXMgdHlwZShbXSk6CiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBzZWxmLmZvcm1hdHRyZWUoCiAgICAgICAgICAgICAgICAgICAgZW50cnksIG1vZG5hbWUsIGMsIHByZWZpeCArICcgICAgJykKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGRvY21vZHVsZShzZWxmLCBvYmplY3QsIG5hbWU9Tm9uZSwgbW9kPU5vbmUpOgogICAgICAgICIiIlByb2R1Y2UgdGV4dCBkb2N1bWVudGF0aW9uIGZvciBhIGdpdmVuIG1vZHVsZSBvYmplY3QuIiIiCiAgICAgICAgbmFtZSA9IG9iamVjdC5fX25hbWVfXyAjIGlnbm9yZSB0aGUgcGFzc2VkLWluIG5hbWUKICAgICAgICBzeW5vcCwgZGVzYyA9IHNwbGl0ZG9jKGdldGRvYyhvYmplY3QpKQogICAgICAgIHJlc3VsdCA9IHNlbGYuc2VjdGlvbignTkFNRScsIG5hbWUgKyAoc3lub3AgYW5kICcgLSAnICsgc3lub3ApKQogICAgICAgIGFsbCA9IGdldGF0dHIob2JqZWN0LCAnX19hbGxfXycsIE5vbmUpCiAgICAgICAgZG9jbG9jID0gc2VsZi5nZXRkb2Nsb2Mob2JqZWN0KQogICAgICAgIGlmIGRvY2xvYyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5zZWN0aW9uKCdNT0RVTEUgUkVGRVJFTkNFJywgZG9jbG9jICsgIiIiCgpUaGUgZm9sbG93aW5nIGRvY3VtZW50YXRpb24gaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0aGUgUHl0aG9uCnNvdXJjZSBmaWxlcy4gIEl0IG1heSBiZSBpbmNvbXBsZXRlLCBpbmNvcnJlY3Qgb3IgaW5jbHVkZSBmZWF0dXJlcyB0aGF0CmFyZSBjb25zaWRlcmVkIGltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQgbWF5IHZhcnkgYmV0d2VlbiBQeXRob24KaW1wbGVtZW50YXRpb25zLiAgV2hlbiBpbiBkb3VidCwgY29uc3VsdCB0aGUgbW9kdWxlIHJlZmVyZW5jZSBhdCB0aGUKbG9jYXRpb24gbGlzdGVkIGFib3ZlLgoiIiIpCgogICAgICAgIGlmIGRlc2M6CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuc2VjdGlvbignREVTQ1JJUFRJT04nLCBkZXNjKQoKICAgICAgICBjbGFzc2VzID0gW10KICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpbnNwZWN0LmdldG1lbWJlcnMob2JqZWN0LCBpbnNwZWN0LmlzY2xhc3MpOgogICAgICAgICAgICAjIGlmIF9fYWxsX18gZXhpc3RzLCBiZWxpZXZlIGl0LiAgT3RoZXJ3aXNlIHVzZSBvbGQgaGV1cmlzdGljLgogICAgICAgICAgICBpZiAoYWxsIGlzIG5vdCBOb25lCiAgICAgICAgICAgICAgICBvciAoaW5zcGVjdC5nZXRtb2R1bGUodmFsdWUpIG9yIG9iamVjdCkgaXMgb2JqZWN0KToKICAgICAgICAgICAgICAgIGlmIHZpc2libGVuYW1lKGtleSwgYWxsLCBvYmplY3QpOgogICAgICAgICAgICAgICAgICAgIGNsYXNzZXMuYXBwZW5kKChrZXksIHZhbHVlKSkKICAgICAgICBmdW5jcyA9IFtdCiAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaW5zcGVjdC5nZXRtZW1iZXJzKG9iamVjdCwgaW5zcGVjdC5pc3JvdXRpbmUpOgogICAgICAgICAgICAjIGlmIF9fYWxsX18gZXhpc3RzLCBiZWxpZXZlIGl0LiAgT3RoZXJ3aXNlIHVzZSBvbGQgaGV1cmlzdGljLgogICAgICAgICAgICBpZiAoYWxsIGlzIG5vdCBOb25lIG9yCiAgICAgICAgICAgICAgICBpbnNwZWN0LmlzYnVpbHRpbih2YWx1ZSkgb3IgaW5zcGVjdC5nZXRtb2R1bGUodmFsdWUpIGlzIG9iamVjdCk6CiAgICAgICAgICAgICAgICBpZiB2aXNpYmxlbmFtZShrZXksIGFsbCwgb2JqZWN0KToKICAgICAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKGtleSwgdmFsdWUpKQogICAgICAgIGRhdGEgPSBbXQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIGluc3BlY3QuZ2V0bWVtYmVycyhvYmplY3QsIGlzZGF0YSk6CiAgICAgICAgICAgIGlmIHZpc2libGVuYW1lKGtleSwgYWxsLCBvYmplY3QpOgogICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoKGtleSwgdmFsdWUpKQoKICAgICAgICBtb2Rwa2dzID0gW10KICAgICAgICBtb2Rwa2dzX25hbWVzID0gc2V0KCkKICAgICAgICBpZiBoYXNhdHRyKG9iamVjdCwgJ19fcGF0aF9fJyk6CiAgICAgICAgICAgIGZvciBpbXBvcnRlciwgbW9kbmFtZSwgaXNwa2cgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMob2JqZWN0Ll9fcGF0aF9fKToKICAgICAgICAgICAgICAgIG1vZHBrZ3NfbmFtZXMuYWRkKG1vZG5hbWUpCiAgICAgICAgICAgICAgICBpZiBpc3BrZzoKICAgICAgICAgICAgICAgICAgICBtb2Rwa2dzLmFwcGVuZChtb2RuYW1lICsgJyAocGFja2FnZSknKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBtb2Rwa2dzLmFwcGVuZChtb2RuYW1lKQoKICAgICAgICAgICAgbW9kcGtncy5zb3J0KCkKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5zZWN0aW9uKAogICAgICAgICAgICAgICAgJ1BBQ0tBR0UgQ09OVEVOVFMnLCAnXG4nLmpvaW4obW9kcGtncykpCgogICAgICAgICMgRGV0ZWN0IHN1Ym1vZHVsZXMgYXMgc29tZXRpbWVzIGNyZWF0ZWQgYnkgQyBleHRlbnNpb25zCiAgICAgICAgc3VibW9kdWxlcyA9IFtdCiAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaW5zcGVjdC5nZXRtZW1iZXJzKG9iamVjdCwgaW5zcGVjdC5pc21vZHVsZSk6CiAgICAgICAgICAgIGlmIHZhbHVlLl9fbmFtZV9fLnN0YXJ0c3dpdGgobmFtZSArICcuJykgYW5kIGtleSBub3QgaW4gbW9kcGtnc19uYW1lczoKICAgICAgICAgICAgICAgIHN1Ym1vZHVsZXMuYXBwZW5kKGtleSkKICAgICAgICBpZiBzdWJtb2R1bGVzOgogICAgICAgICAgICBzdWJtb2R1bGVzLnNvcnQoKQogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBzZWxmLnNlY3Rpb24oCiAgICAgICAgICAgICAgICAnU1VCTU9EVUxFUycsICdcbicuam9pbihzdWJtb2R1bGVzKSkKCiAgICAgICAgaWYgY2xhc3NlczoKICAgICAgICAgICAgY2xhc3NsaXN0ID0gW3ZhbHVlIGZvciBrZXksIHZhbHVlIGluIGNsYXNzZXNdCiAgICAgICAgICAgIGNvbnRlbnRzID0gW3NlbGYuZm9ybWF0dHJlZSgKICAgICAgICAgICAgICAgIGluc3BlY3QuZ2V0Y2xhc3N0cmVlKGNsYXNzbGlzdCwgMSksIG5hbWUpXQogICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBjbGFzc2VzOgogICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKHNlbGYuZG9jdW1lbnQodmFsdWUsIGtleSwgbmFtZSkpCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuc2VjdGlvbignQ0xBU1NFUycsICdcbicuam9pbihjb250ZW50cykpCgogICAgICAgIGlmIGZ1bmNzOgogICAgICAgICAgICBjb250ZW50cyA9IFtdCiAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGZ1bmNzOgogICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKHNlbGYuZG9jdW1lbnQodmFsdWUsIGtleSwgbmFtZSkpCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuc2VjdGlvbignRlVOQ1RJT05TJywgJ1xuJy5qb2luKGNvbnRlbnRzKSkKCiAgICAgICAgaWYgZGF0YToKICAgICAgICAgICAgY29udGVudHMgPSBbXQogICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkYXRhOgogICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKHNlbGYuZG9jb3RoZXIodmFsdWUsIGtleSwgbmFtZSwgbWF4bGVuPTcwKSkKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5zZWN0aW9uKCdEQVRBJywgJ1xuJy5qb2luKGNvbnRlbnRzKSkKCiAgICAgICAgaWYgaGFzYXR0cihvYmplY3QsICdfX3ZlcnNpb25fXycpOgogICAgICAgICAgICB2ZXJzaW9uID0gc3RyKG9iamVjdC5fX3ZlcnNpb25fXykKICAgICAgICAgICAgaWYgdmVyc2lvbls6MTFdID09ICckJyArICdSZXZpc2lvbjogJyBhbmQgdmVyc2lvblstMTpdID09ICckJzoKICAgICAgICAgICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uWzExOi0xXS5zdHJpcCgpCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuc2VjdGlvbignVkVSU0lPTicsIHZlcnNpb24pCiAgICAgICAgaWYgaGFzYXR0cihvYmplY3QsICdfX2RhdGVfXycpOgogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyBzZWxmLnNlY3Rpb24oJ0RBVEUnLCBzdHIob2JqZWN0Ll9fZGF0ZV9fKSkKICAgICAgICBpZiBoYXNhdHRyKG9iamVjdCwgJ19fYXV0aG9yX18nKToKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5zZWN0aW9uKCdBVVRIT1InLCBzdHIob2JqZWN0Ll9fYXV0aG9yX18pKQogICAgICAgIGlmIGhhc2F0dHIob2JqZWN0LCAnX19jcmVkaXRzX18nKToKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5zZWN0aW9uKCdDUkVESVRTJywgc3RyKG9iamVjdC5fX2NyZWRpdHNfXykpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWxlID0gaW5zcGVjdC5nZXRhYnNmaWxlKG9iamVjdCkKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICBmaWxlID0gJyhidWlsdC1pbiknCiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgc2VsZi5zZWN0aW9uKCdGSUxFJywgZmlsZSkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGRvY2NsYXNzKHNlbGYsIG9iamVjdCwgbmFtZT1Ob25lLCBtb2Q9Tm9uZSwgKmlnbm9yZWQpOgogICAgICAgICIiIlByb2R1Y2UgdGV4dCBkb2N1bWVudGF0aW9uIGZvciBhIGdpdmVuIGNsYXNzIG9iamVjdC4iIiIKICAgICAgICByZWFsbmFtZSA9IG9iamVjdC5fX25hbWVfXwogICAgICAgIG5hbWUgPSBuYW1lIG9yIHJlYWxuYW1lCiAgICAgICAgYmFzZXMgPSBvYmplY3QuX19iYXNlc19fCgogICAgICAgIGRlZiBtYWtlbmFtZShjLCBtPW9iamVjdC5fX21vZHVsZV9fKToKICAgICAgICAgICAgcmV0dXJuIGNsYXNzbmFtZShjLCBtKQoKICAgICAgICBpZiBuYW1lID09IHJlYWxuYW1lOgogICAgICAgICAgICB0aXRsZSA9ICdjbGFzcyAnICsgc2VsZi5ib2xkKHJlYWxuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRpdGxlID0gc2VsZi5ib2xkKG5hbWUpICsgJyA9IGNsYXNzICcgKyByZWFsbmFtZQogICAgICAgIGlmIGJhc2VzOgogICAgICAgICAgICBwYXJlbnRzID0gbWFwKG1ha2VuYW1lLCBiYXNlcykKICAgICAgICAgICAgdGl0bGUgPSB0aXRsZSArICcoJXMpJyAlICcsICcuam9pbihwYXJlbnRzKQoKICAgICAgICBjb250ZW50cyA9IFtdCiAgICAgICAgcHVzaCA9IGNvbnRlbnRzLmFwcGVuZAoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNpZ25hdHVyZSA9IGluc3BlY3Quc2lnbmF0dXJlKG9iamVjdCkKICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5cGVFcnJvcik6CiAgICAgICAgICAgIHNpZ25hdHVyZSA9IE5vbmUKICAgICAgICBpZiBzaWduYXR1cmU6CiAgICAgICAgICAgIGFyZ3NwZWMgPSBzdHIoc2lnbmF0dXJlKQogICAgICAgICAgICBpZiBhcmdzcGVjIGFuZCBhcmdzcGVjICE9ICcoKSc6CiAgICAgICAgICAgICAgICBwdXNoKG5hbWUgKyBhcmdzcGVjICsgJ1xuJykKCiAgICAgICAgZG9jID0gZ2V0ZG9jKG9iamVjdCkKICAgICAgICBpZiBkb2M6CiAgICAgICAgICAgIHB1c2goZG9jICsgJ1xuJykKCiAgICAgICAgIyBMaXN0IHRoZSBtcm8sIGlmIG5vbi10cml2aWFsLgogICAgICAgIG1ybyA9IGRlcXVlKGluc3BlY3QuZ2V0bXJvKG9iamVjdCkpCiAgICAgICAgaWYgbGVuKG1ybykgPiAyOgogICAgICAgICAgICBwdXNoKCJNZXRob2QgcmVzb2x1dGlvbiBvcmRlcjoiKQogICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86CiAgICAgICAgICAgICAgICBwdXNoKCcgICAgJyArIG1ha2VuYW1lKGJhc2UpKQogICAgICAgICAgICBwdXNoKCcnKQoKICAgICAgICAjIExpc3QgdGhlIGJ1aWx0LWluIHN1YmNsYXNzZXMsIGlmIGFueToKICAgICAgICBzdWJjbGFzc2VzID0gc29ydGVkKAogICAgICAgICAgICAoc3RyKGNscy5fX25hbWVfXykgZm9yIGNscyBpbiB0eXBlLl9fc3ViY2xhc3Nlc19fKG9iamVjdCkKICAgICAgICAgICAgIGlmIG5vdCBjbHMuX19uYW1lX18uc3RhcnRzd2l0aCgiXyIpIGFuZCBjbHMuX19tb2R1bGVfXyA9PSAiYnVpbHRpbnMiKSwKICAgICAgICAgICAga2V5PXN0ci5sb3dlcgogICAgICAgICkKICAgICAgICBub19vZl9zdWJjbGFzc2VzID0gbGVuKHN1YmNsYXNzZXMpCiAgICAgICAgTUFYX1NVQkNMQVNTRVNfVE9fRElTUExBWSA9IDQKICAgICAgICBpZiBzdWJjbGFzc2VzOgogICAgICAgICAgICBwdXNoKCJCdWlsdC1pbiBzdWJjbGFzc2VzOiIpCiAgICAgICAgICAgIGZvciBzdWJjbGFzc25hbWUgaW4gc3ViY2xhc3Nlc1s6TUFYX1NVQkNMQVNTRVNfVE9fRElTUExBWV06CiAgICAgICAgICAgICAgICBwdXNoKCcgICAgJyArIHN1YmNsYXNzbmFtZSkKICAgICAgICAgICAgaWYgbm9fb2Zfc3ViY2xhc3NlcyA+IE1BWF9TVUJDTEFTU0VTX1RPX0RJU1BMQVk6CiAgICAgICAgICAgICAgICBwdXNoKCcgICAgLi4uIGFuZCAnICsKICAgICAgICAgICAgICAgICAgICAgc3RyKG5vX29mX3N1YmNsYXNzZXMgLSBNQVhfU1VCQ0xBU1NFU19UT19ESVNQTEFZKSArCiAgICAgICAgICAgICAgICAgICAgICcgb3RoZXIgc3ViY2xhc3NlcycpCiAgICAgICAgICAgIHB1c2goJycpCgogICAgICAgICMgQ3V0ZSBsaXR0bGUgY2xhc3MgdG8gcHVtcCBvdXQgYSBob3Jpem9udGFsIHJ1bGUgYmV0d2VlbiBzZWN0aW9ucy4KICAgICAgICBjbGFzcyBIb3Jpem9udGFsUnVsZToKICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICAgICAgICAgc2VsZi5uZWVkb25lID0gMAogICAgICAgICAgICBkZWYgbWF5YmUoc2VsZik6CiAgICAgICAgICAgICAgICBpZiBzZWxmLm5lZWRvbmU6CiAgICAgICAgICAgICAgICAgICAgcHVzaCgnLScgKiA3MCkKICAgICAgICAgICAgICAgIHNlbGYubmVlZG9uZSA9IDEKICAgICAgICBociA9IEhvcml6b250YWxSdWxlKCkKCiAgICAgICAgZGVmIHNwaWxsKG1zZywgYXR0cnMsIHByZWRpY2F0ZSk6CiAgICAgICAgICAgIG9rLCBhdHRycyA9IF9zcGxpdF9saXN0KGF0dHJzLCBwcmVkaWNhdGUpCiAgICAgICAgICAgIGlmIG9rOgogICAgICAgICAgICAgICAgaHIubWF5YmUoKQogICAgICAgICAgICAgICAgcHVzaChtc2cpCiAgICAgICAgICAgICAgICBmb3IgbmFtZSwga2luZCwgaG9tZWNscywgdmFsdWUgaW4gb2s6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldGF0dHIob2JqZWN0LCBuYW1lKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICAgICMgU29tZSBkZXNjcmlwdG9ycyBtYXkgbWVldCBhIGZhaWx1cmUgaW4gdGhlaXIgX19nZXRfXy4KICAgICAgICAgICAgICAgICAgICAgICAgIyAoYnVnICMxNzg1KQogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKHNlbGYuZG9jZGF0YSh2YWx1ZSwgbmFtZSwgbW9kKSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKHNlbGYuZG9jdW1lbnQodmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBtb2QsIG9iamVjdCkpCiAgICAgICAgICAgIHJldHVybiBhdHRycwoKICAgICAgICBkZWYgc3BpbGxkZXNjcmlwdG9ycyhtc2csIGF0dHJzLCBwcmVkaWNhdGUpOgogICAgICAgICAgICBvaywgYXR0cnMgPSBfc3BsaXRfbGlzdChhdHRycywgcHJlZGljYXRlKQogICAgICAgICAgICBpZiBvazoKICAgICAgICAgICAgICAgIGhyLm1heWJlKCkKICAgICAgICAgICAgICAgIHB1c2gobXNnKQogICAgICAgICAgICAgICAgZm9yIG5hbWUsIGtpbmQsIGhvbWVjbHMsIHZhbHVlIGluIG9rOgogICAgICAgICAgICAgICAgICAgIHB1c2goc2VsZi5kb2NkYXRhKHZhbHVlLCBuYW1lLCBtb2QpKQogICAgICAgICAgICByZXR1cm4gYXR0cnMKCiAgICAgICAgZGVmIHNwaWxsZGF0YShtc2csIGF0dHJzLCBwcmVkaWNhdGUpOgogICAgICAgICAgICBvaywgYXR0cnMgPSBfc3BsaXRfbGlzdChhdHRycywgcHJlZGljYXRlKQogICAgICAgICAgICBpZiBvazoKICAgICAgICAgICAgICAgIGhyLm1heWJlKCkKICAgICAgICAgICAgICAgIHB1c2gobXNnKQogICAgICAgICAgICAgICAgZm9yIG5hbWUsIGtpbmQsIGhvbWVjbHMsIHZhbHVlIGluIG9rOgogICAgICAgICAgICAgICAgICAgIGRvYyA9IGdldGRvYyh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqZWN0LCBuYW1lKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gaG9tZWNscy5fX2RpY3RfX1tuYW1lXQogICAgICAgICAgICAgICAgICAgIHB1c2goc2VsZi5kb2NvdGhlcihvYmosIG5hbWUsIG1vZCwgbWF4bGVuPTcwLCBkb2M9ZG9jKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nKQogICAgICAgICAgICByZXR1cm4gYXR0cnMKCiAgICAgICAgYXR0cnMgPSBbKG5hbWUsIGtpbmQsIGNscywgdmFsdWUpCiAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIGtpbmQsIGNscywgdmFsdWUgaW4gY2xhc3NpZnlfY2xhc3NfYXR0cnMob2JqZWN0KQogICAgICAgICAgICAgICAgIGlmIHZpc2libGVuYW1lKG5hbWUsIG9iaj1vYmplY3QpXQoKICAgICAgICB3aGlsZSBhdHRyczoKICAgICAgICAgICAgaWYgbXJvOgogICAgICAgICAgICAgICAgdGhpc2NsYXNzID0gbXJvLnBvcGxlZnQoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdGhpc2NsYXNzID0gYXR0cnNbMF1bMl0KICAgICAgICAgICAgYXR0cnMsIGluaGVyaXRlZCA9IF9zcGxpdF9saXN0KGF0dHJzLCBsYW1iZGEgdDogdFsyXSBpcyB0aGlzY2xhc3MpCgogICAgICAgICAgICBpZiBvYmplY3QgaXMgbm90IGJ1aWx0aW5zLm9iamVjdCBhbmQgdGhpc2NsYXNzIGlzIGJ1aWx0aW5zLm9iamVjdDoKICAgICAgICAgICAgICAgIGF0dHJzID0gaW5oZXJpdGVkCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbGlmIHRoaXNjbGFzcyBpcyBvYmplY3Q6CiAgICAgICAgICAgICAgICB0YWcgPSAiZGVmaW5lZCBoZXJlIgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdGFnID0gImluaGVyaXRlZCBmcm9tICVzIiAlIGNsYXNzbmFtZSh0aGlzY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQoKICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCgogICAgICAgICAgICAjIFB1bXAgb3V0IHRoZSBhdHRycywgc2VncmVnYXRlZCBieSBraW5kLgogICAgICAgICAgICBhdHRycyA9IHNwaWxsKCJNZXRob2RzICVzOlxuIiAlIHRhZywgYXR0cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHQ6IHRbMV0gPT0gJ21ldGhvZCcpCiAgICAgICAgICAgIGF0dHJzID0gc3BpbGwoIkNsYXNzIG1ldGhvZHMgJXM6XG4iICUgdGFnLCBhdHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgdDogdFsxXSA9PSAnY2xhc3MgbWV0aG9kJykKICAgICAgICAgICAgYXR0cnMgPSBzcGlsbCgiU3RhdGljIG1ldGhvZHMgJXM6XG4iICUgdGFnLCBhdHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgdDogdFsxXSA9PSAnc3RhdGljIG1ldGhvZCcpCiAgICAgICAgICAgIGF0dHJzID0gc3BpbGxkZXNjcmlwdG9ycygiUmVhZG9ubHkgcHJvcGVydGllcyAlczpcbiIgJSB0YWcsIGF0dHJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHQ6IHRbMV0gPT0gJ3JlYWRvbmx5IHByb3BlcnR5JykKICAgICAgICAgICAgYXR0cnMgPSBzcGlsbGRlc2NyaXB0b3JzKCJEYXRhIGRlc2NyaXB0b3JzICVzOlxuIiAlIHRhZywgYXR0cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgdDogdFsxXSA9PSAnZGF0YSBkZXNjcmlwdG9yJykKICAgICAgICAgICAgYXR0cnMgPSBzcGlsbGRhdGEoIkRhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgJXM6XG4iICUgdGFnLCBhdHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHQ6IHRbMV0gPT0gJ2RhdGEnKQoKICAgICAgICAgICAgYXNzZXJ0IGF0dHJzID09IFtdCiAgICAgICAgICAgIGF0dHJzID0gaW5oZXJpdGVkCgogICAgICAgIGNvbnRlbnRzID0gJ1xuJy5qb2luKGNvbnRlbnRzKQogICAgICAgIGlmIG5vdCBjb250ZW50czoKICAgICAgICAgICAgcmV0dXJuIHRpdGxlICsgJ1xuJwogICAgICAgIHJldHVybiB0aXRsZSArICdcbicgKyBzZWxmLmluZGVudChjb250ZW50cy5yc3RyaXAoKSwgJyB8ICAnKSArICdcbicKCiAgICBkZWYgZm9ybWF0dmFsdWUoc2VsZiwgb2JqZWN0KToKICAgICAgICAiIiJGb3JtYXQgYW4gYXJndW1lbnQgZGVmYXVsdCB2YWx1ZSBhcyB0ZXh0LiIiIgogICAgICAgIHJldHVybiAnPScgKyBzZWxmLnJlcHIob2JqZWN0KQoKICAgIGRlZiBkb2Nyb3V0aW5lKHNlbGYsIG9iamVjdCwgbmFtZT1Ob25lLCBtb2Q9Tm9uZSwgY2w9Tm9uZSk6CiAgICAgICAgIiIiUHJvZHVjZSB0ZXh0IGRvY3VtZW50YXRpb24gZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4iIiIKICAgICAgICByZWFsbmFtZSA9IG9iamVjdC5fX25hbWVfXwogICAgICAgIG5hbWUgPSBuYW1lIG9yIHJlYWxuYW1lCiAgICAgICAgbm90ZSA9ICcnCiAgICAgICAgc2tpcGRvY3MgPSAwCiAgICAgICAgaWYgX2lzX2JvdW5kX21ldGhvZChvYmplY3QpOgogICAgICAgICAgICBpbWNsYXNzID0gb2JqZWN0Ll9fc2VsZl9fLl9fY2xhc3NfXwogICAgICAgICAgICBpZiBjbDoKICAgICAgICAgICAgICAgIGlmIGltY2xhc3MgaXMgbm90IGNsOgogICAgICAgICAgICAgICAgICAgIG5vdGUgPSAnIGZyb20gJyArIGNsYXNzbmFtZShpbWNsYXNzLCBtb2QpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBvYmplY3QuX19zZWxmX18gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgbm90ZSA9ICcgbWV0aG9kIG9mICVzIGluc3RhbmNlJyAlIGNsYXNzbmFtZSgKICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fc2VsZl9fLl9fY2xhc3NfXywgbW9kKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBub3RlID0gJyB1bmJvdW5kICVzIG1ldGhvZCcgJSBjbGFzc25hbWUoaW1jbGFzcyxtb2QpCgogICAgICAgIGlmIChpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24ob2JqZWN0KSBvcgogICAgICAgICAgICAgICAgaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb24ob2JqZWN0KSk6CiAgICAgICAgICAgIGFzeW5jcXVhbGlmaWVyID0gJ2FzeW5jICcKICAgICAgICBlbHNlOgogICAgICAgICAgICBhc3luY3F1YWxpZmllciA9ICcnCgogICAgICAgIGlmIG5hbWUgPT0gcmVhbG5hbWU6CiAgICAgICAgICAgIHRpdGxlID0gc2VsZi5ib2xkKHJlYWxuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGNsIGFuZCBpbnNwZWN0LmdldGF0dHJfc3RhdGljKGNsLCByZWFsbmFtZSwgW10pIGlzIG9iamVjdDoKICAgICAgICAgICAgICAgIHNraXBkb2NzID0gMQogICAgICAgICAgICB0aXRsZSA9IHNlbGYuYm9sZChuYW1lKSArICcgPSAnICsgcmVhbG5hbWUKICAgICAgICBhcmdzcGVjID0gTm9uZQoKICAgICAgICBpZiBpbnNwZWN0Lmlzcm91dGluZShvYmplY3QpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzaWduYXR1cmUgPSBpbnNwZWN0LnNpZ25hdHVyZShvYmplY3QpCiAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKICAgICAgICAgICAgICAgIHNpZ25hdHVyZSA9IE5vbmUKICAgICAgICAgICAgaWYgc2lnbmF0dXJlOgogICAgICAgICAgICAgICAgYXJnc3BlYyA9IHN0cihzaWduYXR1cmUpCiAgICAgICAgICAgICAgICBpZiByZWFsbmFtZSA9PSAnPGxhbWJkYT4nOgogICAgICAgICAgICAgICAgICAgIHRpdGxlID0gc2VsZi5ib2xkKG5hbWUpICsgJyBsYW1iZGEgJwogICAgICAgICAgICAgICAgICAgICMgWFhYIGxhbWJkYSdzIHdvbid0IHVzdWFsbHkgaGF2ZSBmdW5jX2Fubm90YXRpb25zWydyZXR1cm4nXQogICAgICAgICAgICAgICAgICAgICMgc2luY2UgdGhlIHN5bnRheCBkb2Vzbid0IHN1cHBvcnQgYnV0IGl0IGlzIHBvc3NpYmxlLgogICAgICAgICAgICAgICAgICAgICMgU28gcmVtb3ZpbmcgcGFyZW50aGVzZXMgaXNuJ3QgdHJ1bHkgc2FmZS4KICAgICAgICAgICAgICAgICAgICBhcmdzcGVjID0gYXJnc3BlY1sxOi0xXSAjIHJlbW92ZSBwYXJlbnRoZXNlcwogICAgICAgIGlmIG5vdCBhcmdzcGVjOgogICAgICAgICAgICBhcmdzcGVjID0gJyguLi4pJwogICAgICAgIGRlY2wgPSBhc3luY3F1YWxpZmllciArIHRpdGxlICsgYXJnc3BlYyArIG5vdGUKCiAgICAgICAgaWYgc2tpcGRvY3M6CiAgICAgICAgICAgIHJldHVybiBkZWNsICsgJ1xuJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRvYyA9IGdldGRvYyhvYmplY3QpIG9yICcnCiAgICAgICAgICAgIHJldHVybiBkZWNsICsgJ1xuJyArIChkb2MgYW5kIHNlbGYuaW5kZW50KGRvYykucnN0cmlwKCkgKyAnXG4nKQoKICAgIGRlZiBkb2NkYXRhKHNlbGYsIG9iamVjdCwgbmFtZT1Ob25lLCBtb2Q9Tm9uZSwgY2w9Tm9uZSk6CiAgICAgICAgIiIiUHJvZHVjZSB0ZXh0IGRvY3VtZW50YXRpb24gZm9yIGEgZGF0YSBkZXNjcmlwdG9yLiIiIgogICAgICAgIHJlc3VsdHMgPSBbXQogICAgICAgIHB1c2ggPSByZXN1bHRzLmFwcGVuZAoKICAgICAgICBpZiBuYW1lOgogICAgICAgICAgICBwdXNoKHNlbGYuYm9sZChuYW1lKSkKICAgICAgICAgICAgcHVzaCgnXG4nKQogICAgICAgIGRvYyA9IGdldGRvYyhvYmplY3QpIG9yICcnCiAgICAgICAgaWYgZG9jOgogICAgICAgICAgICBwdXNoKHNlbGYuaW5kZW50KGRvYykpCiAgICAgICAgICAgIHB1c2goJ1xuJykKICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHRzKQoKICAgIGRvY3Byb3BlcnR5ID0gZG9jZGF0YQoKICAgIGRlZiBkb2NvdGhlcihzZWxmLCBvYmplY3QsIG5hbWU9Tm9uZSwgbW9kPU5vbmUsIHBhcmVudD1Ob25lLCBtYXhsZW49Tm9uZSwgZG9jPU5vbmUpOgogICAgICAgICIiIlByb2R1Y2UgdGV4dCBkb2N1bWVudGF0aW9uIGZvciBhIGRhdGEgb2JqZWN0LiIiIgogICAgICAgIHJlcHIgPSBzZWxmLnJlcHIob2JqZWN0KQogICAgICAgIGlmIG1heGxlbjoKICAgICAgICAgICAgbGluZSA9IChuYW1lIGFuZCBuYW1lICsgJyA9ICcgb3IgJycpICsgcmVwcgogICAgICAgICAgICBjaG9wID0gbWF4bGVuIC0gbGVuKGxpbmUpCiAgICAgICAgICAgIGlmIGNob3AgPCAwOiByZXByID0gcmVwcls6Y2hvcF0gKyAnLi4uJwogICAgICAgIGxpbmUgPSAobmFtZSBhbmQgc2VsZi5ib2xkKG5hbWUpICsgJyA9ICcgb3IgJycpICsgcmVwcgogICAgICAgIGlmIG5vdCBkb2M6CiAgICAgICAgICAgIGRvYyA9IGdldGRvYyhvYmplY3QpCiAgICAgICAgaWYgZG9jOgogICAgICAgICAgICBsaW5lICs9ICdcbicgKyBzZWxmLmluZGVudChzdHIoZG9jKSkgKyAnXG4nCiAgICAgICAgcmV0dXJuIGxpbmUKCmNsYXNzIF9QbGFpblRleHREb2MoVGV4dERvYyk6CiAgICAiIiJTdWJjbGFzcyBvZiBUZXh0RG9jIHdoaWNoIG92ZXJyaWRlcyBzdHJpbmcgc3R5bGluZyIiIgogICAgZGVmIGJvbGQoc2VsZiwgdGV4dCk6CiAgICAgICAgcmV0dXJuIHRleHQKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHVzZXIgaW50ZXJmYWNlcwoKZGVmIHBhZ2VyKHRleHQpOgogICAgIiIiVGhlIGZpcnN0IHRpbWUgdGhpcyBpcyBjYWxsZWQsIGRldGVybWluZSB3aGF0IGtpbmQgb2YgcGFnZXIgdG8gdXNlLiIiIgogICAgZ2xvYmFsIHBhZ2VyCiAgICBwYWdlciA9IGdldHBhZ2VyKCkKICAgIHBhZ2VyKHRleHQpCgpkZWYgZ2V0cGFnZXIoKToKICAgICIiIkRlY2lkZSB3aGF0IG1ldGhvZCB0byB1c2UgZm9yIHBhZ2luZyB0aHJvdWdoIHRleHQuIiIiCiAgICBpZiBub3QgaGFzYXR0cihzeXMuc3RkaW4sICJpc2F0dHkiKToKICAgICAgICByZXR1cm4gcGxhaW5wYWdlcgogICAgaWYgbm90IGhhc2F0dHIoc3lzLnN0ZG91dCwgImlzYXR0eSIpOgogICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICBpZiBub3Qgc3lzLnN0ZGluLmlzYXR0eSgpIG9yIG5vdCBzeXMuc3Rkb3V0LmlzYXR0eSgpOgogICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICBpZiBzeXMucGxhdGZvcm0gPT0gImVtc2NyaXB0ZW4iOgogICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICB1c2VfcGFnZXIgPSBvcy5lbnZpcm9uLmdldCgnTUFOUEFHRVInKSBvciBvcy5lbnZpcm9uLmdldCgnUEFHRVInKQogICAgaWYgdXNlX3BhZ2VyOgogICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIHBpcGVzIGNvbXBsZXRlbHkgYnJva2VuIGluIFdpbmRvd3MKICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiB0ZW1wZmlsZXBhZ2VyKHBsYWluKHRleHQpLCB1c2VfcGFnZXIpCiAgICAgICAgZWxpZiBvcy5lbnZpcm9uLmdldCgnVEVSTScpIGluICgnZHVtYicsICdlbWFjcycpOgogICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcihwbGFpbih0ZXh0KSwgdXNlX3BhZ2VyKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHRleHQsIHVzZV9wYWdlcikKICAgIGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6CiAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgJ21vcmUgPCcpCiAgICBpZiBoYXNhdHRyKG9zLCAnc3lzdGVtJykgYW5kIG9zLnN5c3RlbSgnKGxlc3MpIDI+L2Rldi9udWxsJykgPT0gMDoKICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcih0ZXh0LCAnbGVzcycpCgogICAgaW1wb3J0IHRlbXBmaWxlCiAgICAoZmQsIGZpbGVuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgb3MuY2xvc2UoZmQpCiAgICB0cnk6CiAgICAgICAgaWYgaGFzYXR0cihvcywgJ3N5c3RlbScpIGFuZCBvcy5zeXN0ZW0oJ21vcmUgIiVzIicgJSBmaWxlbmFtZSkgPT0gMDoKICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgJ21vcmUnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiB0dHlwYWdlcgogICAgZmluYWxseToKICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUpCgpkZWYgcGxhaW4odGV4dCk6CiAgICAiIiJSZW1vdmUgYm9sZGZhY2UgZm9ybWF0dGluZyBmcm9tIHRleHQuIiIiCiAgICByZXR1cm4gcmUuc3ViKCcuXGInLCAnJywgdGV4dCkKCmRlZiBwaXBlcGFnZXIodGV4dCwgY21kKToKICAgICIiIlBhZ2UgdGhyb3VnaCB0ZXh0IGJ5IGZlZWRpbmcgaXQgdG8gYW5vdGhlciBwcm9ncmFtLiIiIgogICAgaW1wb3J0IHN1YnByb2Nlc3MKICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc2hlbGw9VHJ1ZSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSdiYWNrc2xhc2hyZXBsYWNlJykKICAgIHRyeToKICAgICAgICB3aXRoIHByb2Muc3RkaW4gYXMgcGlwZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcGlwZS53cml0ZSh0ZXh0KQogICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAjIFdlJ3ZlIGhlcmVieSBhYmFuZG9uZWQgd2hhdGV2ZXIgdGV4dCBoYXNuJ3QgYmVlbiB3cml0dGVuLAogICAgICAgICAgICAgICAgIyBidXQgdGhlIHBhZ2VyIGlzIHN0aWxsIGluIGNvbnRyb2wgb2YgdGhlIHRlcm1pbmFsLgogICAgICAgICAgICAgICAgcGFzcwogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcGFzcyAjIElnbm9yZSBicm9rZW4gcGlwZXMgY2F1c2VkIGJ5IHF1aXR0aW5nIHRoZSBwYWdlciBwcm9ncmFtLgogICAgd2hpbGUgVHJ1ZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHByb2Mud2FpdCgpCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAjIElnbm9yZSBjdGwtYyBsaWtlIHRoZSBwYWdlciBpdHNlbGYgZG9lcy4gIE90aGVyd2lzZSB0aGUgcGFnZXIgaXMKICAgICAgICAgICAgIyBsZWZ0IHJ1bm5pbmcgYW5kIHRoZSB0ZXJtaW5hbCBpcyBpbiByYXcgbW9kZSBhbmQgdW51c2FibGUuCiAgICAgICAgICAgIHBhc3MKCmRlZiB0ZW1wZmlsZXBhZ2VyKHRleHQsIGNtZCk6CiAgICAiIiJQYWdlIHRocm91Z2ggdGV4dCBieSBpbnZva2luZyBhIHByb2dyYW0gb24gYSB0ZW1wb3JhcnkgZmlsZS4iIiIKICAgIGltcG9ydCB0ZW1wZmlsZQogICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wZGlyOgogICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdweWRvYy5vdXQnKQogICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnLCBlcnJvcnM9J2JhY2tzbGFzaHJlcGxhY2UnLAogICAgICAgICAgICAgICAgICBlbmNvZGluZz1vcy5kZXZpY2VfZW5jb2RpbmcoMCkgaWYKICAgICAgICAgICAgICAgICAgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSBOb25lCiAgICAgICAgICAgICAgICAgICkgYXMgZmlsZToKICAgICAgICAgICAgZmlsZS53cml0ZSh0ZXh0KQogICAgICAgIG9zLnN5c3RlbShjbWQgKyAnICInICsgZmlsZW5hbWUgKyAnIicpCgpkZWYgX2VzY2FwZV9zdGRvdXQodGV4dCk6CiAgICAjIEVzY2FwZSBub24tZW5jb2RhYmxlIGNoYXJhY3RlcnMgdG8gYXZvaWQgZW5jb2RpbmcgZXJyb3JzIGxhdGVyCiAgICBlbmNvZGluZyA9IGdldGF0dHIoc3lzLnN0ZG91dCwgJ2VuY29kaW5nJywgTm9uZSkgb3IgJ3V0Zi04JwogICAgcmV0dXJuIHRleHQuZW5jb2RlKGVuY29kaW5nLCAnYmFja3NsYXNocmVwbGFjZScpLmRlY29kZShlbmNvZGluZykKCmRlZiB0dHlwYWdlcih0ZXh0KToKICAgICIiIlBhZ2UgdGhyb3VnaCB0ZXh0IG9uIGEgdGV4dCB0ZXJtaW5hbC4iIiIKICAgIGxpbmVzID0gcGxhaW4oX2VzY2FwZV9zdGRvdXQodGV4dCkpLnNwbGl0KCdcbicpCiAgICB0cnk6CiAgICAgICAgaW1wb3J0IHR0eQogICAgICAgIGZkID0gc3lzLnN0ZGluLmZpbGVubygpCiAgICAgICAgb2xkID0gdHR5LnRjZ2V0YXR0cihmZCkKICAgICAgICB0dHkuc2V0Y2JyZWFrKGZkKQogICAgICAgIGdldGNoYXIgPSBsYW1iZGE6IHN5cy5zdGRpbi5yZWFkKDEpCiAgICBleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvciwgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24pOgogICAgICAgIHR0eSA9IE5vbmUKICAgICAgICBnZXRjaGFyID0gbGFtYmRhOiBzeXMuc3RkaW4ucmVhZGxpbmUoKVs6LTFdWzoxXQoKICAgIHRyeToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGggPSBpbnQob3MuZW52aXJvbi5nZXQoJ0xJTkVTJywgMCkpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIGggPSAwCiAgICAgICAgaWYgaCA8PSAxOgogICAgICAgICAgICBoID0gMjUKICAgICAgICByID0gaW5jID0gaCAtIDEKICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCdcbicuam9pbihsaW5lc1s6aW5jXSkgKyAnXG4nKQogICAgICAgIHdoaWxlIGxpbmVzW3I6XToKICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnLS0gbW9yZSAtLScpCiAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICBjID0gZ2V0Y2hhcigpCgogICAgICAgICAgICBpZiBjIGluICgncScsICdRJyk6CiAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCdcciAgICAgICAgICBccicpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbGlmIGMgaW4gKCdccicsICdcbicpOgogICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnXHIgICAgICAgICAgXHInICsgbGluZXNbcl0gKyAnXG4nKQogICAgICAgICAgICAgICAgciA9IHIgKyAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBjIGluICgnYicsICdCJywgJ1x4MWInKToKICAgICAgICAgICAgICAgIHIgPSByIC0gaW5jIC0gaW5jCiAgICAgICAgICAgICAgICBpZiByIDwgMDogciA9IDAKICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnXG4nICsgJ1xuJy5qb2luKGxpbmVzW3I6citpbmNdKSArICdcbicpCiAgICAgICAgICAgIHIgPSByICsgaW5jCgogICAgZmluYWxseToKICAgICAgICBpZiB0dHk6CiAgICAgICAgICAgIHR0eS50Y3NldGF0dHIoZmQsIHR0eS5UQ1NBRkxVU0gsIG9sZCkKCmRlZiBwbGFpbnBhZ2VyKHRleHQpOgogICAgIiIiU2ltcGx5IHByaW50IHVuZm9ybWF0dGVkIHRleHQuICBUaGlzIGlzIHRoZSB1bHRpbWF0ZSBmYWxsYmFjay4iIiIKICAgIHN5cy5zdGRvdXQud3JpdGUocGxhaW4oX2VzY2FwZV9zdGRvdXQodGV4dCkpKQoKZGVmIGRlc2NyaWJlKHRoaW5nKToKICAgICIiIlByb2R1Y2UgYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGUgZ2l2ZW4gdGhpbmcuIiIiCiAgICBpZiBpbnNwZWN0LmlzbW9kdWxlKHRoaW5nKToKICAgICAgICBpZiB0aGluZy5fX25hbWVfXyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6CiAgICAgICAgICAgIHJldHVybiAnYnVpbHQtaW4gbW9kdWxlICcgKyB0aGluZy5fX25hbWVfXwogICAgICAgIGlmIGhhc2F0dHIodGhpbmcsICdfX3BhdGhfXycpOgogICAgICAgICAgICByZXR1cm4gJ3BhY2thZ2UgJyArIHRoaW5nLl9fbmFtZV9fCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICdtb2R1bGUgJyArIHRoaW5nLl9fbmFtZV9fCiAgICBpZiBpbnNwZWN0LmlzYnVpbHRpbih0aGluZyk6CiAgICAgICAgcmV0dXJuICdidWlsdC1pbiBmdW5jdGlvbiAnICsgdGhpbmcuX19uYW1lX18KICAgIGlmIGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yKHRoaW5nKToKICAgICAgICByZXR1cm4gJ2dldHNldCBkZXNjcmlwdG9yICVzLiVzLiVzJyAlICgKICAgICAgICAgICAgdGhpbmcuX19vYmpjbGFzc19fLl9fbW9kdWxlX18sIHRoaW5nLl9fb2JqY2xhc3NfXy5fX25hbWVfXywKICAgICAgICAgICAgdGhpbmcuX19uYW1lX18pCiAgICBpZiBpbnNwZWN0LmlzbWVtYmVyZGVzY3JpcHRvcih0aGluZyk6CiAgICAgICAgcmV0dXJuICdtZW1iZXIgZGVzY3JpcHRvciAlcy4lcy4lcycgJSAoCiAgICAgICAgICAgIHRoaW5nLl9fb2JqY2xhc3NfXy5fX21vZHVsZV9fLCB0aGluZy5fX29iamNsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgIHRoaW5nLl9fbmFtZV9fKQogICAgaWYgaW5zcGVjdC5pc2NsYXNzKHRoaW5nKToKICAgICAgICByZXR1cm4gJ2NsYXNzICcgKyB0aGluZy5fX25hbWVfXwogICAgaWYgaW5zcGVjdC5pc2Z1bmN0aW9uKHRoaW5nKToKICAgICAgICByZXR1cm4gJ2Z1bmN0aW9uICcgKyB0aGluZy5fX25hbWVfXwogICAgaWYgaW5zcGVjdC5pc21ldGhvZCh0aGluZyk6CiAgICAgICAgcmV0dXJuICdtZXRob2QgJyArIHRoaW5nLl9fbmFtZV9fCiAgICByZXR1cm4gdHlwZSh0aGluZykuX19uYW1lX18KCmRlZiBsb2NhdGUocGF0aCwgZm9yY2Vsb2FkPTApOgogICAgIiIiTG9jYXRlIGFuIG9iamVjdCBieSBuYW1lIG9yIGRvdHRlZCBwYXRoLCBpbXBvcnRpbmcgYXMgbmVjZXNzYXJ5LiIiIgogICAgcGFydHMgPSBbcGFydCBmb3IgcGFydCBpbiBwYXRoLnNwbGl0KCcuJykgaWYgcGFydF0KICAgIG1vZHVsZSwgbiA9IE5vbmUsIDAKICAgIHdoaWxlIG4gPCBsZW4ocGFydHMpOgogICAgICAgIG5leHRtb2R1bGUgPSBzYWZlaW1wb3J0KCcuJy5qb2luKHBhcnRzWzpuKzFdKSwgZm9yY2Vsb2FkKQogICAgICAgIGlmIG5leHRtb2R1bGU6IG1vZHVsZSwgbiA9IG5leHRtb2R1bGUsIG4gKyAxCiAgICAgICAgZWxzZTogYnJlYWsKICAgIGlmIG1vZHVsZToKICAgICAgICBvYmplY3QgPSBtb2R1bGUKICAgIGVsc2U6CiAgICAgICAgb2JqZWN0ID0gYnVpbHRpbnMKICAgIGZvciBwYXJ0IGluIHBhcnRzW246XToKICAgICAgICB0cnk6CiAgICAgICAgICAgIG9iamVjdCA9IGdldGF0dHIob2JqZWN0LCBwYXJ0KQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgIHJldHVybiBvYmplY3QKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGludGVyYWN0aXZlIGludGVycHJldGVyIGludGVyZmFjZQoKdGV4dCA9IFRleHREb2MoKQpwbGFpbnRleHQgPSBfUGxhaW5UZXh0RG9jKCkKaHRtbCA9IEhUTUxEb2MoKQoKZGVmIHJlc29sdmUodGhpbmcsIGZvcmNlbG9hZD0wKToKICAgICIiIkdpdmVuIGFuIG9iamVjdCBvciBhIHBhdGggdG8gYW4gb2JqZWN0LCBnZXQgdGhlIG9iamVjdCBhbmQgaXRzIG5hbWUuIiIiCiAgICBpZiBpc2luc3RhbmNlKHRoaW5nLCBzdHIpOgogICAgICAgIG9iamVjdCA9IGxvY2F0ZSh0aGluZywgZm9yY2Vsb2FkKQogICAgICAgIGlmIG9iamVjdCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignJydcCk5vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlci4KVXNlIGhlbHAoKSB0byBnZXQgdGhlIGludGVyYWN0aXZlIGhlbHAgdXRpbGl0eS4KVXNlIGhlbHAoc3RyKSBmb3IgaGVscCBvbiB0aGUgc3RyIGNsYXNzLicnJyAlIHRoaW5nKQogICAgICAgIHJldHVybiBvYmplY3QsIHRoaW5nCiAgICBlbHNlOgogICAgICAgIG5hbWUgPSBnZXRhdHRyKHRoaW5nLCAnX19uYW1lX18nLCBOb25lKQogICAgICAgIHJldHVybiB0aGluZywgbmFtZSBpZiBpc2luc3RhbmNlKG5hbWUsIHN0cikgZWxzZSBOb25lCgpkZWYgcmVuZGVyX2RvYyh0aGluZywgdGl0bGU9J1B5dGhvbiBMaWJyYXJ5IERvY3VtZW50YXRpb246ICVzJywgZm9yY2Vsb2FkPTAsCiAgICAgICAgcmVuZGVyZXI9Tm9uZSk6CiAgICAiIiJSZW5kZXIgdGV4dCBkb2N1bWVudGF0aW9uLCBnaXZlbiBhbiBvYmplY3Qgb3IgYSBwYXRoIHRvIGFuIG9iamVjdC4iIiIKICAgIGlmIHJlbmRlcmVyIGlzIE5vbmU6CiAgICAgICAgcmVuZGVyZXIgPSB0ZXh0CiAgICBvYmplY3QsIG5hbWUgPSByZXNvbHZlKHRoaW5nLCBmb3JjZWxvYWQpCiAgICBkZXNjID0gZGVzY3JpYmUob2JqZWN0KQogICAgbW9kdWxlID0gaW5zcGVjdC5nZXRtb2R1bGUob2JqZWN0KQogICAgaWYgbmFtZSBhbmQgJy4nIGluIG5hbWU6CiAgICAgICAgZGVzYyArPSAnIGluICcgKyBuYW1lWzpuYW1lLnJmaW5kKCcuJyldCiAgICBlbGlmIG1vZHVsZSBhbmQgbW9kdWxlIGlzIG5vdCBvYmplY3Q6CiAgICAgICAgZGVzYyArPSAnIGluIG1vZHVsZSAnICsgbW9kdWxlLl9fbmFtZV9fCgogICAgaWYgbm90IChpbnNwZWN0LmlzbW9kdWxlKG9iamVjdCkgb3IKICAgICAgICAgICAgICBpbnNwZWN0LmlzY2xhc3Mob2JqZWN0KSBvcgogICAgICAgICAgICAgIGluc3BlY3QuaXNyb3V0aW5lKG9iamVjdCkgb3IKICAgICAgICAgICAgICBpbnNwZWN0LmlzZGF0YWRlc2NyaXB0b3Iob2JqZWN0KSBvcgogICAgICAgICAgICAgIF9nZXRkb2Mob2JqZWN0KSk6CiAgICAgICAgIyBJZiB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHBpZWNlIG9mIGRhdGEgb3IgYW4gaW5zdGFuY2UsCiAgICAgICAgIyBkb2N1bWVudCBpdHMgYXZhaWxhYmxlIG1ldGhvZHMgaW5zdGVhZCBvZiBpdHMgdmFsdWUuCiAgICAgICAgaWYgaGFzYXR0cihvYmplY3QsICdfX29yaWdpbl9fJyk6CiAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5fX29yaWdpbl9fCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb2JqZWN0ID0gdHlwZShvYmplY3QpCiAgICAgICAgICAgIGRlc2MgKz0gJyBvYmplY3QnCiAgICByZXR1cm4gdGl0bGUgJSBkZXNjICsgJ1xuXG4nICsgcmVuZGVyZXIuZG9jdW1lbnQob2JqZWN0LCBuYW1lKQoKZGVmIGRvYyh0aGluZywgdGl0bGU9J1B5dGhvbiBMaWJyYXJ5IERvY3VtZW50YXRpb246ICVzJywgZm9yY2Vsb2FkPTAsCiAgICAgICAgb3V0cHV0PU5vbmUpOgogICAgIiIiRGlzcGxheSB0ZXh0IGRvY3VtZW50YXRpb24sIGdpdmVuIGFuIG9iamVjdCBvciBhIHBhdGggdG8gYW4gb2JqZWN0LiIiIgogICAgaWYgb3V0cHV0IGlzIE5vbmU6CiAgICAgICAgcGFnZXIocmVuZGVyX2RvYyh0aGluZywgdGl0bGUsIGZvcmNlbG9hZCkpCiAgICBlbHNlOgogICAgICAgIG91dHB1dC53cml0ZShyZW5kZXJfZG9jKHRoaW5nLCB0aXRsZSwgZm9yY2Vsb2FkLCBwbGFpbnRleHQpKQoKZGVmIHdyaXRlZG9jKHRoaW5nLCBmb3JjZWxvYWQ9MCk6CiAgICAiIiJXcml0ZSBIVE1MIGRvY3VtZW50YXRpb24gdG8gYSBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4iIiIKICAgIG9iamVjdCwgbmFtZSA9IHJlc29sdmUodGhpbmcsIGZvcmNlbG9hZCkKICAgIHBhZ2UgPSBodG1sLnBhZ2UoZGVzY3JpYmUob2JqZWN0KSwgaHRtbC5kb2N1bWVudChvYmplY3QsIG5hbWUpKQogICAgd2l0aCBvcGVuKG5hbWUgKyAnLmh0bWwnLCAndycsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGZpbGU6CiAgICAgICAgZmlsZS53cml0ZShwYWdlKQogICAgcHJpbnQoJ3dyb3RlJywgbmFtZSArICcuaHRtbCcpCgpkZWYgd3JpdGVkb2NzKGRpciwgcGtncGF0aD0nJywgZG9uZT1Ob25lKToKICAgICIiIldyaXRlIG91dCBIVE1MIGRvY3VtZW50YXRpb24gZm9yIGFsbCBtb2R1bGVzIGluIGEgZGlyZWN0b3J5IHRyZWUuIiIiCiAgICBpZiBkb25lIGlzIE5vbmU6IGRvbmUgPSB7fQogICAgZm9yIGltcG9ydGVyLCBtb2RuYW1lLCBpc3BrZyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW2Rpcl0sIHBrZ3BhdGgpOgogICAgICAgIHdyaXRlZG9jKG1vZG5hbWUpCiAgICByZXR1cm4KCmNsYXNzIEhlbHBlcjoKCiAgICAjIFRoZXNlIGRpY3Rpb25hcmllcyBtYXAgYSB0b3BpYyBuYW1lIHRvIGVpdGhlciBhbiBhbGlhcywgb3IgYSB0dXBsZQogICAgIyAobGFiZWwsIHNlZWFsc28taXRlbXMpLiAgVGhlICJsYWJlbCIgaXMgdGhlIGxhYmVsIG9mIHRoZSBjb3JyZXNwb25kaW5nCiAgICAjIHNlY3Rpb24gaW4gdGhlIC5yc3QgZmlsZSB1bmRlciBEb2MvIGFuZCBhbiBpbmRleCBpbnRvIHRoZSBkaWN0aW9uYXJ5CiAgICAjIGluIHB5ZG9jX2RhdGEvdG9waWNzLnB5LgogICAgIwogICAgIyBDQVVUSU9OOiBpZiB5b3UgY2hhbmdlIG9uZSBvZiB0aGVzZSBkaWN0aW9uYXJpZXMsIGJlIHN1cmUgdG8gYWRhcHQgdGhlCiAgICAjICAgICAgICAgIGxpc3Qgb2YgbmVlZGVkIGxhYmVscyBpbiBEb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5IGFuZAogICAgIyAgICAgICAgICByZWdlbmVyYXRlIHRoZSBweWRvY19kYXRhL3RvcGljcy5weSBmaWxlIGJ5IHJ1bm5pbmcKICAgICMgICAgICAgICAgICAgIG1ha2UgcHlkb2MtdG9waWNzCiAgICAjICAgICAgICAgIGluIERvYy8gYW5kIGNvcHlpbmcgdGhlIG91dHB1dCBmaWxlIGludG8gdGhlIExpYi8gZGlyZWN0b3J5LgoKICAgIGtleXdvcmRzID0gewogICAgICAgICdGYWxzZSc6ICcnLAogICAgICAgICdOb25lJzogJycsCiAgICAgICAgJ1RydWUnOiAnJywKICAgICAgICAnYW5kJzogJ0JPT0xFQU4nLAogICAgICAgICdhcyc6ICd3aXRoJywKICAgICAgICAnYXNzZXJ0JzogKCdhc3NlcnQnLCAnJyksCiAgICAgICAgJ2FzeW5jJzogKCdhc3luYycsICcnKSwKICAgICAgICAnYXdhaXQnOiAoJ2F3YWl0JywgJycpLAogICAgICAgICdicmVhayc6ICgnYnJlYWsnLCAnd2hpbGUgZm9yJyksCiAgICAgICAgJ2NsYXNzJzogKCdjbGFzcycsICdDTEFTU0VTIFNQRUNJQUxNRVRIT0RTJyksCiAgICAgICAgJ2NvbnRpbnVlJzogKCdjb250aW51ZScsICd3aGlsZSBmb3InKSwKICAgICAgICAnZGVmJzogKCdmdW5jdGlvbicsICcnKSwKICAgICAgICAnZGVsJzogKCdkZWwnLCAnQkFTSUNNRVRIT0RTJyksCiAgICAgICAgJ2VsaWYnOiAnaWYnLAogICAgICAgICdlbHNlJzogKCdlbHNlJywgJ3doaWxlIGZvcicpLAogICAgICAgICdleGNlcHQnOiAndHJ5JywKICAgICAgICAnZmluYWxseSc6ICd0cnknLAogICAgICAgICdmb3InOiAoJ2ZvcicsICdicmVhayBjb250aW51ZSB3aGlsZScpLAogICAgICAgICdmcm9tJzogJ2ltcG9ydCcsCiAgICAgICAgJ2dsb2JhbCc6ICgnZ2xvYmFsJywgJ25vbmxvY2FsIE5BTUVTUEFDRVMnKSwKICAgICAgICAnaWYnOiAoJ2lmJywgJ1RSVVRIVkFMVUUnKSwKICAgICAgICAnaW1wb3J0JzogKCdpbXBvcnQnLCAnTU9EVUxFUycpLAogICAgICAgICdpbic6ICgnaW4nLCAnU0VRVUVOQ0VNRVRIT0RTJyksCiAgICAgICAgJ2lzJzogJ0NPTVBBUklTT04nLAogICAgICAgICdsYW1iZGEnOiAoJ2xhbWJkYScsICdGVU5DVElPTlMnKSwKICAgICAgICAnbm9ubG9jYWwnOiAoJ25vbmxvY2FsJywgJ2dsb2JhbCBOQU1FU1BBQ0VTJyksCiAgICAgICAgJ25vdCc6ICdCT09MRUFOJywKICAgICAgICAnb3InOiAnQk9PTEVBTicsCiAgICAgICAgJ3Bhc3MnOiAoJ3Bhc3MnLCAnJyksCiAgICAgICAgJ3JhaXNlJzogKCdyYWlzZScsICdFWENFUFRJT05TJyksCiAgICAgICAgJ3JldHVybic6ICgncmV0dXJuJywgJ0ZVTkNUSU9OUycpLAogICAgICAgICd0cnknOiAoJ3RyeScsICdFWENFUFRJT05TJyksCiAgICAgICAgJ3doaWxlJzogKCd3aGlsZScsICdicmVhayBjb250aW51ZSBpZiBUUlVUSFZBTFVFJyksCiAgICAgICAgJ3dpdGgnOiAoJ3dpdGgnLCAnQ09OVEVYVE1BTkFHRVJTIEVYQ0VQVElPTlMgeWllbGQnKSwKICAgICAgICAneWllbGQnOiAoJ3lpZWxkJywgJycpLAogICAgfQogICAgIyBFaXRoZXIgYWRkIHN5bWJvbHMgdG8gdGhpcyBkaWN0aW9uYXJ5IG9yIHRvIHRoZSBzeW1ib2xzIGRpY3Rpb25hcnkKICAgICMgZGlyZWN0bHk6IFdoaWNoZXZlciBpcyBlYXNpZXIuIFRoZXkgYXJlIG1lcmdlZCBsYXRlci4KICAgIF9zdHJwcmVmaXhlcyA9IFtwICsgcSBmb3IgcCBpbiAoJ2InLCAnZicsICdyJywgJ3UnKSBmb3IgcSBpbiAoIiciLCAnIicpXQogICAgX3N5bWJvbHNfaW52ZXJzZSA9IHsKICAgICAgICAnU1RSSU5HUycgOiAoIiciLCAiJycnIiwgJyInLCAnIiIiJywgKl9zdHJwcmVmaXhlcyksCiAgICAgICAgJ09QRVJBVE9SUycgOiAoJysnLCAnLScsICcqJywgJyoqJywgJy8nLCAnLy8nLCAnJScsICc8PCcsICc+PicsICcmJywKICAgICAgICAgICAgICAgICAgICAgICAnfCcsICdeJywgJ34nLCAnPCcsICc+JywgJzw9JywgJz49JywgJz09JywgJyE9JywgJzw+JyksCiAgICAgICAgJ0NPTVBBUklTT04nIDogKCc8JywgJz4nLCAnPD0nLCAnPj0nLCAnPT0nLCAnIT0nLCAnPD4nKSwKICAgICAgICAnVU5BUlknIDogKCctJywgJ34nKSwKICAgICAgICAnQVVHTUVOVEVEQVNTSUdOTUVOVCcgOiAoJys9JywgJy09JywgJyo9JywgJy89JywgJyU9JywgJyY9JywgJ3w9JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXj0nLCAnPDw9JywgJz4+PScsICcqKj0nLCAnLy89JyksCiAgICAgICAgJ0JJVFdJU0UnIDogKCc8PCcsICc+PicsICcmJywgJ3wnLCAnXicsICd+JyksCiAgICAgICAgJ0NPTVBMRVgnIDogKCdqJywgJ0onKQogICAgfQogICAgc3ltYm9scyA9IHsKICAgICAgICAnJSc6ICdPUEVSQVRPUlMgRk9STUFUVElORycsCiAgICAgICAgJyoqJzogJ1BPV0VSJywKICAgICAgICAnLCc6ICdUVVBMRVMgTElTVFMgRlVOQ1RJT05TJywKICAgICAgICAnLic6ICdBVFRSSUJVVEVTIEZMT0FUIE1PRFVMRVMgT0JKRUNUUycsCiAgICAgICAgJy4uLic6ICdFTExJUFNJUycsCiAgICAgICAgJzonOiAnU0xJQ0lOR1MgRElDVElPTkFSWUxJVEVSQUxTJywKICAgICAgICAnQCc6ICdkZWYgY2xhc3MnLAogICAgICAgICdcXCc6ICdTVFJJTkdTJywKICAgICAgICAnXyc6ICdQUklWQVRFTkFNRVMnLAogICAgICAgICdfXyc6ICdQUklWQVRFTkFNRVMgU1BFQ0lBTE1FVEhPRFMnLAogICAgICAgICdgJzogJ0JBQ0tRVU9URVMnLAogICAgICAgICcoJzogJ1RVUExFUyBGVU5DVElPTlMgQ0FMTFMnLAogICAgICAgICcpJzogJ1RVUExFUyBGVU5DVElPTlMgQ0FMTFMnLAogICAgICAgICdbJzogJ0xJU1RTIFNVQlNDUklQVFMgU0xJQ0lOR1MnLAogICAgICAgICddJzogJ0xJU1RTIFNVQlNDUklQVFMgU0xJQ0lOR1MnCiAgICB9CiAgICBmb3IgdG9waWMsIHN5bWJvbHNfIGluIF9zeW1ib2xzX2ludmVyc2UuaXRlbXMoKToKICAgICAgICBmb3Igc3ltYm9sIGluIHN5bWJvbHNfOgogICAgICAgICAgICB0b3BpY3MgPSBzeW1ib2xzLmdldChzeW1ib2wsIHRvcGljKQogICAgICAgICAgICBpZiB0b3BpYyBub3QgaW4gdG9waWNzOgogICAgICAgICAgICAgICAgdG9waWNzID0gdG9waWNzICsgJyAnICsgdG9waWMKICAgICAgICAgICAgc3ltYm9sc1tzeW1ib2xdID0gdG9waWNzCiAgICBkZWwgdG9waWMsIHN5bWJvbHNfLCBzeW1ib2wsIHRvcGljcwoKICAgIHRvcGljcyA9IHsKICAgICAgICAnVFlQRVMnOiAoJ3R5cGVzJywgJ1NUUklOR1MgVU5JQ09ERSBOVU1CRVJTIFNFUVVFTkNFUyBNQVBQSU5HUyAnCiAgICAgICAgICAgICAgICAgICdGVU5DVElPTlMgQ0xBU1NFUyBNT0RVTEVTIEZJTEVTIGluc3BlY3QnKSwKICAgICAgICAnU1RSSU5HUyc6ICgnc3RyaW5ncycsICdzdHIgVU5JQ09ERSBTRVFVRU5DRVMgU1RSSU5HTUVUSE9EUyAnCiAgICAgICAgICAgICAgICAgICAgJ0ZPUk1BVFRJTkcgVFlQRVMnKSwKICAgICAgICAnU1RSSU5HTUVUSE9EUyc6ICgnc3RyaW5nLW1ldGhvZHMnLCAnU1RSSU5HUyBGT1JNQVRUSU5HJyksCiAgICAgICAgJ0ZPUk1BVFRJTkcnOiAoJ2Zvcm1hdHN0cmluZ3MnLCAnT1BFUkFUT1JTJyksCiAgICAgICAgJ1VOSUNPREUnOiAoJ3N0cmluZ3MnLCAnZW5jb2RpbmdzIHVuaWNvZGUgU0VRVUVOQ0VTIFNUUklOR01FVEhPRFMgJwogICAgICAgICAgICAgICAgICAgICdGT1JNQVRUSU5HIFRZUEVTJyksCiAgICAgICAgJ05VTUJFUlMnOiAoJ251bWJlcnMnLCAnSU5URUdFUiBGTE9BVCBDT01QTEVYIFRZUEVTJyksCiAgICAgICAgJ0lOVEVHRVInOiAoJ2ludGVnZXJzJywgJ2ludCByYW5nZScpLAogICAgICAgICdGTE9BVCc6ICgnZmxvYXRpbmcnLCAnZmxvYXQgbWF0aCcpLAogICAgICAgICdDT01QTEVYJzogKCdpbWFnaW5hcnknLCAnY29tcGxleCBjbWF0aCcpLAogICAgICAgICdTRVFVRU5DRVMnOiAoJ3R5cGVzc2VxJywgJ1NUUklOR01FVEhPRFMgRk9STUFUVElORyByYW5nZSBMSVNUUycpLAogICAgICAgICdNQVBQSU5HUyc6ICdESUNUSU9OQVJJRVMnLAogICAgICAgICdGVU5DVElPTlMnOiAoJ3R5cGVzZnVuY3Rpb25zJywgJ2RlZiBUWVBFUycpLAogICAgICAgICdNRVRIT0RTJzogKCd0eXBlc21ldGhvZHMnLCAnY2xhc3MgZGVmIENMQVNTRVMgVFlQRVMnKSwKICAgICAgICAnQ09ERU9CSkVDVFMnOiAoJ2JsdGluLWNvZGUtb2JqZWN0cycsICdjb21waWxlIEZVTkNUSU9OUyBUWVBFUycpLAogICAgICAgICdUWVBFT0JKRUNUUyc6ICgnYmx0aW4tdHlwZS1vYmplY3RzJywgJ3R5cGVzIFRZUEVTJyksCiAgICAgICAgJ0ZSQU1FT0JKRUNUUyc6ICdUWVBFUycsCiAgICAgICAgJ1RSQUNFQkFDS1MnOiAnVFlQRVMnLAogICAgICAgICdOT05FJzogKCdibHRpbi1udWxsLW9iamVjdCcsICcnKSwKICAgICAgICAnRUxMSVBTSVMnOiAoJ2JsdGluLWVsbGlwc2lzLW9iamVjdCcsICdTTElDSU5HUycpLAogICAgICAgICdTUEVDSUFMQVRUUklCVVRFUyc6ICgnc3BlY2lhbGF0dHJzJywgJycpLAogICAgICAgICdDTEFTU0VTJzogKCd0eXBlcycsICdjbGFzcyBTUEVDSUFMTUVUSE9EUyBQUklWQVRFTkFNRVMnKSwKICAgICAgICAnTU9EVUxFUyc6ICgndHlwZXNtb2R1bGVzJywgJ2ltcG9ydCcpLAogICAgICAgICdQQUNLQUdFUyc6ICdpbXBvcnQnLAogICAgICAgICdFWFBSRVNTSU9OUyc6ICgnb3BlcmF0b3Itc3VtbWFyeScsICdsYW1iZGEgb3IgYW5kIG5vdCBpbiBpcyBCT09MRUFOICcKICAgICAgICAgICAgICAgICAgICAgICAgJ0NPTVBBUklTT04gQklUV0lTRSBTSElGVElORyBCSU5BUlkgRk9STUFUVElORyBQT1dFUiAnCiAgICAgICAgICAgICAgICAgICAgICAgICdVTkFSWSBBVFRSSUJVVEVTIFNVQlNDUklQVFMgU0xJQ0lOR1MgQ0FMTFMgVFVQTEVTICcKICAgICAgICAgICAgICAgICAgICAgICAgJ0xJU1RTIERJQ1RJT05BUklFUycpLAogICAgICAgICdPUEVSQVRPUlMnOiAnRVhQUkVTU0lPTlMnLAogICAgICAgICdQUkVDRURFTkNFJzogJ0VYUFJFU1NJT05TJywKICAgICAgICAnT0JKRUNUUyc6ICgnb2JqZWN0cycsICdUWVBFUycpLAogICAgICAgICdTUEVDSUFMTUVUSE9EUyc6ICgnc3BlY2lhbG5hbWVzJywgJ0JBU0lDTUVUSE9EUyBBVFRSSUJVVEVNRVRIT0RTICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NBTExBQkxFTUVUSE9EUyBTRVFVRU5DRU1FVEhPRFMgTUFQUElOR01FVEhPRFMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnTlVNQkVSTUVUSE9EUyBDTEFTU0VTJyksCiAgICAgICAgJ0JBU0lDTUVUSE9EUyc6ICgnY3VzdG9taXphdGlvbicsICdoYXNoIHJlcHIgc3RyIFNQRUNJQUxNRVRIT0RTJyksCiAgICAgICAgJ0FUVFJJQlVURU1FVEhPRFMnOiAoJ2F0dHJpYnV0ZS1hY2Nlc3MnLCAnQVRUUklCVVRFUyBTUEVDSUFMTUVUSE9EUycpLAogICAgICAgICdDQUxMQUJMRU1FVEhPRFMnOiAoJ2NhbGxhYmxlLXR5cGVzJywgJ0NBTExTIFNQRUNJQUxNRVRIT0RTJyksCiAgICAgICAgJ1NFUVVFTkNFTUVUSE9EUyc6ICgnc2VxdWVuY2UtdHlwZXMnLCAnU0VRVUVOQ0VTIFNFUVVFTkNFTUVUSE9EUyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NQRUNJQUxNRVRIT0RTJyksCiAgICAgICAgJ01BUFBJTkdNRVRIT0RTJzogKCdzZXF1ZW5jZS10eXBlcycsICdNQVBQSU5HUyBTUEVDSUFMTUVUSE9EUycpLAogICAgICAgICdOVU1CRVJNRVRIT0RTJzogKCdudW1lcmljLXR5cGVzJywgJ05VTUJFUlMgQVVHTUVOVEVEQVNTSUdOTUVOVCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NQRUNJQUxNRVRIT0RTJyksCiAgICAgICAgJ0VYRUNVVElPTic6ICgnZXhlY21vZGVsJywgJ05BTUVTUEFDRVMgRFlOQU1JQ0ZFQVRVUkVTIEVYQ0VQVElPTlMnKSwKICAgICAgICAnTkFNRVNQQUNFUyc6ICgnbmFtaW5nJywgJ2dsb2JhbCBub25sb2NhbCBBU1NJR05NRU5UIERFTEVUSU9OIERZTkFNSUNGRUFUVVJFUycpLAogICAgICAgICdEWU5BTUlDRkVBVFVSRVMnOiAoJ2R5bmFtaWMtZmVhdHVyZXMnLCAnJyksCiAgICAgICAgJ1NDT1BJTkcnOiAnTkFNRVNQQUNFUycsCiAgICAgICAgJ0ZSQU1FUyc6ICdOQU1FU1BBQ0VTJywKICAgICAgICAnRVhDRVBUSU9OUyc6ICgnZXhjZXB0aW9ucycsICd0cnkgZXhjZXB0IGZpbmFsbHkgcmFpc2UnKSwKICAgICAgICAnQ09OVkVSU0lPTlMnOiAoJ2NvbnZlcnNpb25zJywgJycpLAogICAgICAgICdJREVOVElGSUVSUyc6ICgnaWRlbnRpZmllcnMnLCAna2V5d29yZHMgU1BFQ0lBTElERU5USUZJRVJTJyksCiAgICAgICAgJ1NQRUNJQUxJREVOVElGSUVSUyc6ICgnaWQtY2xhc3NlcycsICcnKSwKICAgICAgICAnUFJJVkFURU5BTUVTJzogKCdhdG9tLWlkZW50aWZpZXJzJywgJycpLAogICAgICAgICdMSVRFUkFMUyc6ICgnYXRvbS1saXRlcmFscycsICdTVFJJTkdTIE5VTUJFUlMgVFVQTEVMSVRFUkFMUyAnCiAgICAgICAgICAgICAgICAgICAgICdMSVNUTElURVJBTFMgRElDVElPTkFSWUxJVEVSQUxTJyksCiAgICAgICAgJ1RVUExFUyc6ICdTRVFVRU5DRVMnLAogICAgICAgICdUVVBMRUxJVEVSQUxTJzogKCdleHBybGlzdHMnLCAnVFVQTEVTIExJVEVSQUxTJyksCiAgICAgICAgJ0xJU1RTJzogKCd0eXBlc3NlcS1tdXRhYmxlJywgJ0xJU1RMSVRFUkFMUycpLAogICAgICAgICdMSVNUTElURVJBTFMnOiAoJ2xpc3RzJywgJ0xJU1RTIExJVEVSQUxTJyksCiAgICAgICAgJ0RJQ1RJT05BUklFUyc6ICgndHlwZXNtYXBwaW5nJywgJ0RJQ1RJT05BUllMSVRFUkFMUycpLAogICAgICAgICdESUNUSU9OQVJZTElURVJBTFMnOiAoJ2RpY3QnLCAnRElDVElPTkFSSUVTIExJVEVSQUxTJyksCiAgICAgICAgJ0FUVFJJQlVURVMnOiAoJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJywgJ2dldGF0dHIgaGFzYXR0ciBzZXRhdHRyIEFUVFJJQlVURU1FVEhPRFMnKSwKICAgICAgICAnU1VCU0NSSVBUUyc6ICgnc3Vic2NyaXB0aW9ucycsICdTRVFVRU5DRU1FVEhPRFMnKSwKICAgICAgICAnU0xJQ0lOR1MnOiAoJ3NsaWNpbmdzJywgJ1NFUVVFTkNFTUVUSE9EUycpLAogICAgICAgICdDQUxMUyc6ICgnY2FsbHMnLCAnRVhQUkVTU0lPTlMnKSwKICAgICAgICAnUE9XRVInOiAoJ3Bvd2VyJywgJ0VYUFJFU1NJT05TJyksCiAgICAgICAgJ1VOQVJZJzogKCd1bmFyeScsICdFWFBSRVNTSU9OUycpLAogICAgICAgICdCSU5BUlknOiAoJ2JpbmFyeScsICdFWFBSRVNTSU9OUycpLAogICAgICAgICdTSElGVElORyc6ICgnc2hpZnRpbmcnLCAnRVhQUkVTU0lPTlMnKSwKICAgICAgICAnQklUV0lTRSc6ICgnYml0d2lzZScsICdFWFBSRVNTSU9OUycpLAogICAgICAgICdDT01QQVJJU09OJzogKCdjb21wYXJpc29ucycsICdFWFBSRVNTSU9OUyBCQVNJQ01FVEhPRFMnKSwKICAgICAgICAnQk9PTEVBTic6ICgnYm9vbGVhbnMnLCAnRVhQUkVTU0lPTlMgVFJVVEhWQUxVRScpLAogICAgICAgICdBU1NFUlRJT04nOiAnYXNzZXJ0JywKICAgICAgICAnQVNTSUdOTUVOVCc6ICgnYXNzaWdubWVudCcsICdBVUdNRU5URURBU1NJR05NRU5UJyksCiAgICAgICAgJ0FVR01FTlRFREFTU0lHTk1FTlQnOiAoJ2F1Z2Fzc2lnbicsICdOVU1CRVJNRVRIT0RTJyksCiAgICAgICAgJ0RFTEVUSU9OJzogJ2RlbCcsCiAgICAgICAgJ1JFVFVSTklORyc6ICdyZXR1cm4nLAogICAgICAgICdJTVBPUlRJTkcnOiAnaW1wb3J0JywKICAgICAgICAnQ09ORElUSU9OQUwnOiAnaWYnLAogICAgICAgICdMT09QSU5HJzogKCdjb21wb3VuZCcsICdmb3Igd2hpbGUgYnJlYWsgY29udGludWUnKSwKICAgICAgICAnVFJVVEhWQUxVRSc6ICgndHJ1dGgnLCAnaWYgd2hpbGUgYW5kIG9yIG5vdCBCQVNJQ01FVEhPRFMnKSwKICAgICAgICAnREVCVUdHSU5HJzogKCdkZWJ1Z2dlcicsICdwZGInKSwKICAgICAgICAnQ09OVEVYVE1BTkFHRVJTJzogKCdjb250ZXh0LW1hbmFnZXJzJywgJ3dpdGgnKSwKICAgIH0KCiAgICBkZWYgX19pbml0X18oc2VsZiwgaW5wdXQ9Tm9uZSwgb3V0cHV0PU5vbmUpOgogICAgICAgIHNlbGYuX2lucHV0ID0gaW5wdXQKICAgICAgICBzZWxmLl9vdXRwdXQgPSBvdXRwdXQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpbnB1dChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5faW5wdXQgb3Igc3lzLnN0ZGluCgogICAgQHByb3BlcnR5CiAgICBkZWYgb3V0cHV0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9vdXRwdXQgb3Igc3lzLnN0ZG91dAoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBpZiBpbnNwZWN0LnN0YWNrKClbMV1bM10gPT0gJz8nOgogICAgICAgICAgICBzZWxmKCkKICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgcmV0dXJuICc8JXMuJXMgaW5zdGFuY2U+JyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fKQoKICAgIF9Hb0ludGVyYWN0aXZlID0gb2JqZWN0KCkKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCByZXF1ZXN0PV9Hb0ludGVyYWN0aXZlKToKICAgICAgICBpZiByZXF1ZXN0IGlzIG5vdCBzZWxmLl9Hb0ludGVyYWN0aXZlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLmhlbHAocmVxdWVzdCkKICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICBzZWxmLm91dHB1dC53cml0ZShmJ3tlfVxuJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmludHJvKCkKICAgICAgICAgICAgc2VsZi5pbnRlcmFjdCgpCiAgICAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwpZb3UgYXJlIG5vdyBsZWF2aW5nIGhlbHAgYW5kIHJldHVybmluZyB0byB0aGUgUHl0aG9uIGludGVycHJldGVyLgpJZiB5b3Ugd2FudCB0byBhc2sgZm9yIGhlbHAgb24gYSBwYXJ0aWN1bGFyIG9iamVjdCBkaXJlY3RseSBmcm9tIHRoZQppbnRlcnByZXRlciwgeW91IGNhbiB0eXBlICJoZWxwKG9iamVjdCkiLiAgRXhlY3V0aW5nICJoZWxwKCdzdHJpbmcnKSIKaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyB0eXBpbmcgYSBwYXJ0aWN1bGFyIHN0cmluZyBhdCB0aGUgaGVscD4gcHJvbXB0LgonJycpCgogICAgZGVmIGludGVyYWN0KHNlbGYpOgogICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCdcbicpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmVxdWVzdCA9IHNlbGYuZ2V0bGluZSgnaGVscD4gJykKICAgICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0OiBicmVhawogICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC5zdHJpcCgpCgogICAgICAgICAgICAjIE1ha2Ugc3VyZSBzaWduaWZpY2FudCB0cmFpbGluZyBxdW90aW5nIG1hcmtzIG9mIGxpdGVyYWxzIGRvbid0CiAgICAgICAgICAgICMgZ2V0IGRlbGV0ZWQgd2hpbGUgY2xlYW5pbmcgaW5wdXQKICAgICAgICAgICAgaWYgKGxlbihyZXF1ZXN0KSA+IDIgYW5kIHJlcXVlc3RbMF0gPT0gcmVxdWVzdFstMV0gaW4gKCInIiwgJyInKQogICAgICAgICAgICAgICAgICAgIGFuZCByZXF1ZXN0WzBdIG5vdCBpbiByZXF1ZXN0WzE6LTFdKToKICAgICAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0WzE6LTFdCiAgICAgICAgICAgIGlmIHJlcXVlc3QubG93ZXIoKSBpbiAoJ3EnLCAncXVpdCcpOiBicmVhawogICAgICAgICAgICBpZiByZXF1ZXN0ID09ICdoZWxwJzoKICAgICAgICAgICAgICAgIHNlbGYuaW50cm8oKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5oZWxwKHJlcXVlc3QpCgogICAgZGVmIGdldGxpbmUoc2VsZiwgcHJvbXB0KToKICAgICAgICAiIiJSZWFkIG9uZSBsaW5lLCB1c2luZyBpbnB1dCgpIHdoZW4gYXBwcm9wcmlhdGUuIiIiCiAgICAgICAgaWYgc2VsZi5pbnB1dCBpcyBzeXMuc3RkaW46CiAgICAgICAgICAgIHJldHVybiBpbnB1dChwcm9tcHQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUocHJvbXB0KQogICAgICAgICAgICBzZWxmLm91dHB1dC5mbHVzaCgpCiAgICAgICAgICAgIHJldHVybiBzZWxmLmlucHV0LnJlYWRsaW5lKCkKCiAgICBkZWYgaGVscChzZWxmLCByZXF1ZXN0KToKICAgICAgICBpZiB0eXBlKHJlcXVlc3QpIGlzIHR5cGUoJycpOgogICAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC5zdHJpcCgpCiAgICAgICAgICAgIGlmIHJlcXVlc3QgPT0gJ2tleXdvcmRzJzogc2VsZi5saXN0a2V5d29yZHMoKQogICAgICAgICAgICBlbGlmIHJlcXVlc3QgPT0gJ3N5bWJvbHMnOiBzZWxmLmxpc3RzeW1ib2xzKCkKICAgICAgICAgICAgZWxpZiByZXF1ZXN0ID09ICd0b3BpY3MnOiBzZWxmLmxpc3R0b3BpY3MoKQogICAgICAgICAgICBlbGlmIHJlcXVlc3QgPT0gJ21vZHVsZXMnOiBzZWxmLmxpc3Rtb2R1bGVzKCkKICAgICAgICAgICAgZWxpZiByZXF1ZXN0Wzo4XSA9PSAnbW9kdWxlcyAnOgogICAgICAgICAgICAgICAgc2VsZi5saXN0bW9kdWxlcyhyZXF1ZXN0LnNwbGl0KClbMV0pCiAgICAgICAgICAgIGVsaWYgcmVxdWVzdCBpbiBzZWxmLnN5bWJvbHM6IHNlbGYuc2hvd3N5bWJvbChyZXF1ZXN0KQogICAgICAgICAgICBlbGlmIHJlcXVlc3QgaW4gWydUcnVlJywgJ0ZhbHNlJywgJ05vbmUnXToKICAgICAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlIHRoZXNlIGtleXdvcmRzIHNpbmNlIHRoZXkgYXJlIG9iamVjdHMgdG9vCiAgICAgICAgICAgICAgICBkb2MoZXZhbChyZXF1ZXN0KSwgJ0hlbHAgb24gJXM6JykKICAgICAgICAgICAgZWxpZiByZXF1ZXN0IGluIHNlbGYua2V5d29yZHM6IHNlbGYuc2hvd3RvcGljKHJlcXVlc3QpCiAgICAgICAgICAgIGVsaWYgcmVxdWVzdCBpbiBzZWxmLnRvcGljczogc2VsZi5zaG93dG9waWMocmVxdWVzdCkKICAgICAgICAgICAgZWxpZiByZXF1ZXN0OiBkb2MocmVxdWVzdCwgJ0hlbHAgb24gJXM6Jywgb3V0cHV0PXNlbGYuX291dHB1dCkKICAgICAgICAgICAgZWxzZTogZG9jKHN0ciwgJ0hlbHAgb24gJXM6Jywgb3V0cHV0PXNlbGYuX291dHB1dCkKICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVxdWVzdCwgSGVscGVyKTogc2VsZigpCiAgICAgICAgZWxzZTogZG9jKHJlcXVlc3QsICdIZWxwIG9uICVzOicsIG91dHB1dD1zZWxmLl9vdXRwdXQpCiAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJ1xuJykKCiAgICBkZWYgaW50cm8oc2VsZik6CiAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCldlbGNvbWUgdG8gUHl0aG9uIHswfSdzIGhlbHAgdXRpbGl0eSEKCklmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHVzaW5nIFB5dGhvbiwgeW91IHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dAp0aGUgdHV0b3JpYWwgb24gdGhlIGludGVybmV0IGF0IGh0dHBzOi8vZG9jcy5weXRob24ub3JnL3swfS90dXRvcmlhbC8uCgpFbnRlciB0aGUgbmFtZSBvZiBhbnkgbW9kdWxlLCBrZXl3b3JkLCBvciB0b3BpYyB0byBnZXQgaGVscCBvbiB3cml0aW5nClB5dGhvbiBwcm9ncmFtcyBhbmQgdXNpbmcgUHl0aG9uIG1vZHVsZXMuICBUbyBxdWl0IHRoaXMgaGVscCB1dGlsaXR5IGFuZApyZXR1cm4gdG8gdGhlIGludGVycHJldGVyLCBqdXN0IHR5cGUgInF1aXQiLgoKVG8gZ2V0IGEgbGlzdCBvZiBhdmFpbGFibGUgbW9kdWxlcywga2V5d29yZHMsIHN5bWJvbHMsIG9yIHRvcGljcywgdHlwZQoibW9kdWxlcyIsICJrZXl3b3JkcyIsICJzeW1ib2xzIiwgb3IgInRvcGljcyIuICBFYWNoIG1vZHVsZSBhbHNvIGNvbWVzCndpdGggYSBvbmUtbGluZSBzdW1tYXJ5IG9mIHdoYXQgaXQgZG9lczsgdG8gbGlzdCB0aGUgbW9kdWxlcyB3aG9zZSBuYW1lCm9yIHN1bW1hcnkgY29udGFpbiBhIGdpdmVuIHN0cmluZyBzdWNoIGFzICJzcGFtIiwgdHlwZSAibW9kdWxlcyBzcGFtIi4KJycnLmZvcm1hdCgnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pKQoKICAgIGRlZiBsaXN0KHNlbGYsIGl0ZW1zLCBjb2x1bW5zPTQsIHdpZHRoPTgwKToKICAgICAgICBpdGVtcyA9IGxpc3Qoc29ydGVkKGl0ZW1zKSkKICAgICAgICBjb2x3ID0gd2lkdGggLy8gY29sdW1ucwogICAgICAgIHJvd3MgPSAobGVuKGl0ZW1zKSArIGNvbHVtbnMgLSAxKSAvLyBjb2x1bW5zCiAgICAgICAgZm9yIHJvdyBpbiByYW5nZShyb3dzKToKICAgICAgICAgICAgZm9yIGNvbCBpbiByYW5nZShjb2x1bW5zKToKICAgICAgICAgICAgICAgIGkgPSBjb2wgKiByb3dzICsgcm93CiAgICAgICAgICAgICAgICBpZiBpIDwgbGVuKGl0ZW1zKToKICAgICAgICAgICAgICAgICAgICBzZWxmLm91dHB1dC53cml0ZShpdGVtc1tpXSkKICAgICAgICAgICAgICAgICAgICBpZiBjb2wgPCBjb2x1bW5zIC0gMToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJyAnICsgJyAnICogKGNvbHcgLSAxIC0gbGVuKGl0ZW1zW2ldKSkpCiAgICAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCdcbicpCgogICAgZGVmIGxpc3RrZXl3b3JkcyhzZWxmKToKICAgICAgICBzZWxmLm91dHB1dC53cml0ZSgnJycKSGVyZSBpcyBhIGxpc3Qgb2YgdGhlIFB5dGhvbiBrZXl3b3Jkcy4gIEVudGVyIGFueSBrZXl3b3JkIHRvIGdldCBtb3JlIGhlbHAuCgonJycpCiAgICAgICAgc2VsZi5saXN0KHNlbGYua2V5d29yZHMua2V5cygpKQoKICAgIGRlZiBsaXN0c3ltYm9scyhzZWxmKToKICAgICAgICBzZWxmLm91dHB1dC53cml0ZSgnJycKSGVyZSBpcyBhIGxpc3Qgb2YgdGhlIHB1bmN0dWF0aW9uIHN5bWJvbHMgd2hpY2ggUHl0aG9uIGFzc2lnbnMgc3BlY2lhbCBtZWFuaW5nCnRvLiBFbnRlciBhbnkgc3ltYm9sIHRvIGdldCBtb3JlIGhlbHAuCgonJycpCiAgICAgICAgc2VsZi5saXN0KHNlbGYuc3ltYm9scy5rZXlzKCkpCgogICAgZGVmIGxpc3R0b3BpY3Moc2VsZik6CiAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCkhlcmUgaXMgYSBsaXN0IG9mIGF2YWlsYWJsZSB0b3BpY3MuICBFbnRlciBhbnkgdG9waWMgbmFtZSB0byBnZXQgbW9yZSBoZWxwLgoKJycnKQogICAgICAgIHNlbGYubGlzdChzZWxmLnRvcGljcy5rZXlzKCkpCgogICAgZGVmIHNob3d0b3BpYyhzZWxmLCB0b3BpYywgbW9yZV94cmVmcz0nJyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgcHlkb2NfZGF0YS50b3BpY3MKICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwpTb3JyeSwgdG9waWMgYW5kIGtleXdvcmQgZG9jdW1lbnRhdGlvbiBpcyBub3QgYXZhaWxhYmxlIGJlY2F1c2UgdGhlCm1vZHVsZSAicHlkb2NfZGF0YS50b3BpY3MiIGNvdWxkIG5vdCBiZSBmb3VuZC4KJycnKQogICAgICAgICAgICByZXR1cm4KICAgICAgICB0YXJnZXQgPSBzZWxmLnRvcGljcy5nZXQodG9waWMsIHNlbGYua2V5d29yZHMuZ2V0KHRvcGljKSkKICAgICAgICBpZiBub3QgdGFyZ2V0OgogICAgICAgICAgICBzZWxmLm91dHB1dC53cml0ZSgnbm8gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJXNcbicgJSByZXByKHRvcGljKSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgdHlwZSh0YXJnZXQpIGlzIHR5cGUoJycpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5zaG93dG9waWModGFyZ2V0LCBtb3JlX3hyZWZzKQoKICAgICAgICBsYWJlbCwgeHJlZnMgPSB0YXJnZXQKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRvYyA9IHB5ZG9jX2RhdGEudG9waWNzLnRvcGljc1tsYWJlbF0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCdubyBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlc1xuJyAlIHJlcHIodG9waWMpKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBkb2MgPSBkb2Muc3RyaXAoKSArICdcbicKICAgICAgICBpZiBtb3JlX3hyZWZzOgogICAgICAgICAgICB4cmVmcyA9ICh4cmVmcyBvciAnJykgKyAnICcgKyBtb3JlX3hyZWZzCiAgICAgICAgaWYgeHJlZnM6CiAgICAgICAgICAgIGltcG9ydCB0ZXh0d3JhcAogICAgICAgICAgICB0ZXh0ID0gJ1JlbGF0ZWQgaGVscCB0b3BpY3M6ICcgKyAnLCAnLmpvaW4oeHJlZnMuc3BsaXQoKSkgKyAnXG4nCiAgICAgICAgICAgIHdyYXBwZWRfdGV4dCA9IHRleHR3cmFwLndyYXAodGV4dCwgNzIpCiAgICAgICAgICAgIGRvYyArPSAnXG4lc1xuJyAlICdcbicuam9pbih3cmFwcGVkX3RleHQpCiAgICAgICAgcGFnZXIoZG9jKQoKICAgIGRlZiBfZ2V0dG9waWMoc2VsZiwgdG9waWMsIG1vcmVfeHJlZnM9JycpOgogICAgICAgICIiIlJldHVybiB1bmJ1ZmZlcmVkIHR1cGxlIG9mICh0b3BpYywgeHJlZnMpLgoKICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgaGVyZSwgdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQgYW5kIGRpc3BsYXllZCBieQogICAgICAgIHRoZSB1cmwgaGFuZGxlci4KCiAgICAgICAgVGhpcyBmdW5jdGlvbiBkdXBsaWNhdGVzIHRoZSBzaG93dG9waWMgbWV0aG9kIGJ1dCByZXR1cm5zIGl0cwogICAgICAgIHJlc3VsdCBkaXJlY3RseSBzbyBpdCBjYW4gYmUgZm9ybWF0dGVkIGZvciBkaXNwbGF5IGluIGFuIGh0bWwgcGFnZS4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltcG9ydCBweWRvY19kYXRhLnRvcGljcwogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgcmV0dXJuKCcnJwpTb3JyeSwgdG9waWMgYW5kIGtleXdvcmQgZG9jdW1lbnRhdGlvbiBpcyBub3QgYXZhaWxhYmxlIGJlY2F1c2UgdGhlCm1vZHVsZSAicHlkb2NfZGF0YS50b3BpY3MiIGNvdWxkIG5vdCBiZSBmb3VuZC4KJycnICwgJycpCiAgICAgICAgdGFyZ2V0ID0gc2VsZi50b3BpY3MuZ2V0KHRvcGljLCBzZWxmLmtleXdvcmRzLmdldCh0b3BpYykpCiAgICAgICAgaWYgbm90IHRhcmdldDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY291bGQgbm90IGZpbmQgdG9waWMnKQogICAgICAgIGlmIGlzaW5zdGFuY2UodGFyZ2V0LCBzdHIpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0dG9waWModGFyZ2V0LCBtb3JlX3hyZWZzKQogICAgICAgIGxhYmVsLCB4cmVmcyA9IHRhcmdldAogICAgICAgIGRvYyA9IHB5ZG9jX2RhdGEudG9waWNzLnRvcGljc1tsYWJlbF0KICAgICAgICBpZiBtb3JlX3hyZWZzOgogICAgICAgICAgICB4cmVmcyA9ICh4cmVmcyBvciAnJykgKyAnICcgKyBtb3JlX3hyZWZzCiAgICAgICAgcmV0dXJuIGRvYywgeHJlZnMKCiAgICBkZWYgc2hvd3N5bWJvbChzZWxmLCBzeW1ib2wpOgogICAgICAgIHRhcmdldCA9IHNlbGYuc3ltYm9sc1tzeW1ib2xdCiAgICAgICAgdG9waWMsIF8sIHhyZWZzID0gdGFyZ2V0LnBhcnRpdGlvbignICcpCiAgICAgICAgc2VsZi5zaG93dG9waWModG9waWMsIHhyZWZzKQoKICAgIGRlZiBsaXN0bW9kdWxlcyhzZWxmLCBrZXk9JycpOgogICAgICAgIGlmIGtleToKICAgICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCkhlcmUgaXMgYSBsaXN0IG9mIG1vZHVsZXMgd2hvc2UgbmFtZSBvciBzdW1tYXJ5IGNvbnRhaW5zICd7fScuCklmIHRoZXJlIGFyZSBhbnksIGVudGVyIGEgbW9kdWxlIG5hbWUgdG8gZ2V0IG1vcmUgaGVscC4KCicnJy5mb3JtYXQoa2V5KSkKICAgICAgICAgICAgYXByb3BvcyhrZXkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnClBsZWFzZSB3YWl0IGEgbW9tZW50IHdoaWxlIEkgZ2F0aGVyIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIG1vZHVsZXMuLi4KCicnJykKICAgICAgICAgICAgbW9kdWxlcyA9IHt9CiAgICAgICAgICAgIGRlZiBjYWxsYmFjayhwYXRoLCBtb2RuYW1lLCBkZXNjLCBtb2R1bGVzPW1vZHVsZXMpOgogICAgICAgICAgICAgICAgaWYgbW9kbmFtZSBhbmQgbW9kbmFtZVstOTpdID09ICcuX19pbml0X18nOgogICAgICAgICAgICAgICAgICAgIG1vZG5hbWUgPSBtb2RuYW1lWzotOV0gKyAnIChwYWNrYWdlKScKICAgICAgICAgICAgICAgIGlmIG1vZG5hbWUuZmluZCgnLicpIDwgMDoKICAgICAgICAgICAgICAgICAgICBtb2R1bGVzW21vZG5hbWVdID0gMQogICAgICAgICAgICBkZWYgb25lcnJvcihtb2RuYW1lKToKICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5vbmUsIG1vZG5hbWUsIE5vbmUpCiAgICAgICAgICAgIE1vZHVsZVNjYW5uZXIoKS5ydW4oY2FsbGJhY2ssIG9uZXJyb3I9b25lcnJvcikKICAgICAgICAgICAgc2VsZi5saXN0KG1vZHVsZXMua2V5cygpKQogICAgICAgICAgICBzZWxmLm91dHB1dC53cml0ZSgnJycKRW50ZXIgYW55IG1vZHVsZSBuYW1lIHRvIGdldCBtb3JlIGhlbHAuICBPciwgdHlwZSAibW9kdWxlcyBzcGFtIiB0byBzZWFyY2gKZm9yIG1vZHVsZXMgd2hvc2UgbmFtZSBvciBzdW1tYXJ5IGNvbnRhaW4gdGhlIHN0cmluZyAic3BhbSIuCicnJykKCmhlbHAgPSBIZWxwZXIoKQoKY2xhc3MgTW9kdWxlU2Nhbm5lcjoKICAgICIiIkFuIGludGVycnVwdGlibGUgc2Nhbm5lciB0aGF0IHNlYXJjaGVzIG1vZHVsZSBzeW5vcHNlcy4iIiIKCiAgICBkZWYgcnVuKHNlbGYsIGNhbGxiYWNrLCBrZXk9Tm9uZSwgY29tcGxldGVyPU5vbmUsIG9uZXJyb3I9Tm9uZSk6CiAgICAgICAgaWYga2V5OiBrZXkgPSBrZXkubG93ZXIoKQogICAgICAgIHNlbGYucXVpdCA9IEZhbHNlCiAgICAgICAgc2VlbiA9IHt9CgogICAgICAgIGZvciBtb2RuYW1lIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKICAgICAgICAgICAgaWYgbW9kbmFtZSAhPSAnX19tYWluX18nOgogICAgICAgICAgICAgICAgc2Vlblttb2RuYW1lXSA9IDEKICAgICAgICAgICAgICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5vbmUsIG1vZG5hbWUsICcnKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBuYW1lID0gX19pbXBvcnRfXyhtb2RuYW1lKS5fX2RvY19fIG9yICcnCiAgICAgICAgICAgICAgICAgICAgZGVzYyA9IG5hbWUuc3BsaXQoJ1xuJylbMF0KICAgICAgICAgICAgICAgICAgICBuYW1lID0gbW9kbmFtZSArICcgLSAnICsgZGVzYwogICAgICAgICAgICAgICAgICAgIGlmIG5hbWUubG93ZXIoKS5maW5kKGtleSkgPj0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soTm9uZSwgbW9kbmFtZSwgZGVzYykKCiAgICAgICAgZm9yIGltcG9ydGVyLCBtb2RuYW1lLCBpc3BrZyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMob25lcnJvcj1vbmVycm9yKToKICAgICAgICAgICAgaWYgc2VsZi5xdWl0OgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgICAgICAgICAgY2FsbGJhY2soTm9uZSwgbW9kbmFtZSwgJycpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc3BlYyA9IHBrZ3V0aWwuX2dldF9zcGVjKGltcG9ydGVyLCBtb2RuYW1lKQogICAgICAgICAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yOgogICAgICAgICAgICAgICAgICAgICMgcmFpc2VkIGJ5IHRlc3RzIGZvciBiYWQgY29kaW5nIGNvb2tpZXMgb3IgQk9NCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCiAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ2dldF9zb3VyY2UnKToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKG1vZG5hbWUpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgb25lcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobW9kbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBkZXNjID0gc291cmNlX3N5bm9wc2lzKGlvLlN0cmluZ0lPKHNvdXJjZSkpIG9yICcnCiAgICAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfZmlsZW5hbWUnKToKICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGxvYWRlci5nZXRfZmlsZW5hbWUobW9kbmFtZSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gTm9uZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9sb2FkKHNwZWMpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBvbmVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lcnJvcihtb2RuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIGRlc2MgPSBtb2R1bGUuX19kb2NfXy5zcGxpdGxpbmVzKClbMF0gaWYgbW9kdWxlLl9fZG9jX18gZWxzZSAnJwogICAgICAgICAgICAgICAgICAgIHBhdGggPSBnZXRhdHRyKG1vZHVsZSwnX19maWxlX18nLE5vbmUpCiAgICAgICAgICAgICAgICBuYW1lID0gbW9kbmFtZSArICcgLSAnICsgZGVzYwogICAgICAgICAgICAgICAgaWYgbmFtZS5sb3dlcigpLmZpbmQoa2V5KSA+PSAwOgogICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHBhdGgsIG1vZG5hbWUsIGRlc2MpCgogICAgICAgIGlmIGNvbXBsZXRlcjoKICAgICAgICAgICAgY29tcGxldGVyKCkKCmRlZiBhcHJvcG9zKGtleSk6CiAgICAiIiJQcmludCBhbGwgdGhlIG9uZS1saW5lIG1vZHVsZSBzdW1tYXJpZXMgdGhhdCBjb250YWluIGEgc3Vic3RyaW5nLiIiIgogICAgZGVmIGNhbGxiYWNrKHBhdGgsIG1vZG5hbWUsIGRlc2MpOgogICAgICAgIGlmIG1vZG5hbWVbLTk6XSA9PSAnLl9faW5pdF9fJzoKICAgICAgICAgICAgbW9kbmFtZSA9IG1vZG5hbWVbOi05XSArICcgKHBhY2thZ2UpJwogICAgICAgIHByaW50KG1vZG5hbWUsIGRlc2MgYW5kICctICcgKyBkZXNjKQogICAgZGVmIG9uZXJyb3IobW9kbmFtZSk6CiAgICAgICAgcGFzcwogICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnKSAjIGlnbm9yZSBwcm9ibGVtcyBkdXJpbmcgaW1wb3J0CiAgICAgICAgTW9kdWxlU2Nhbm5lcigpLnJ1bihjYWxsYmFjaywga2V5LCBvbmVycm9yPW9uZXJyb3IpCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlbmhhbmNlZCB3ZWIgYnJvd3NlciBpbnRlcmZhY2UKCmRlZiBfc3RhcnRfc2VydmVyKHVybGhhbmRsZXIsIGhvc3RuYW1lLCBwb3J0KToKICAgICIiIlN0YXJ0IGFuIEhUVFAgc2VydmVyIHRocmVhZCBvbiBhIHNwZWNpZmljIHBvcnQuCgogICAgU3RhcnQgYW4gSFRNTC90ZXh0IHNlcnZlciB0aHJlYWQsIHNvIEhUTUwgb3IgdGV4dCBkb2N1bWVudHMgY2FuIGJlCiAgICBicm93c2VkIGR5bmFtaWNhbGx5IGFuZCBpbnRlcmFjdGl2ZWx5IHdpdGggYSB3ZWIgYnJvd3Nlci4gIEV4YW1wbGUgdXNlOgoKICAgICAgICA+Pj4gaW1wb3J0IHRpbWUKICAgICAgICA+Pj4gaW1wb3J0IHB5ZG9jCgogICAgICAgIERlZmluZSBhIFVSTCBoYW5kbGVyLiAgVG8gZGV0ZXJtaW5lIHdoYXQgdGhlIGNsaWVudCBpcyBhc2tpbmcKICAgICAgICBmb3IsIGNoZWNrIHRoZSBVUkwgYW5kIGNvbnRlbnRfdHlwZS4KCiAgICAgICAgVGhlbiBnZXQgb3IgZ2VuZXJhdGUgc29tZSB0ZXh0IG9yIEhUTUwgY29kZSBhbmQgcmV0dXJuIGl0LgoKICAgICAgICA+Pj4gZGVmIG15X3VybF9oYW5kbGVyKHVybCwgY29udGVudF90eXBlKToKICAgICAgICAuLi4gICAgIHRleHQgPSAndGhlIFVSTCBzZW50IHdhczogKCVzLCAlcyknICUgKHVybCwgY29udGVudF90eXBlKQogICAgICAgIC4uLiAgICAgcmV0dXJuIHRleHQKCiAgICAgICAgU3RhcnQgc2VydmVyIHRocmVhZCBvbiBwb3J0IDAuCiAgICAgICAgSWYgeW91IHVzZSBwb3J0IDAsIHRoZSBzZXJ2ZXIgd2lsbCBwaWNrIGEgcmFuZG9tIHBvcnQgbnVtYmVyLgogICAgICAgIFlvdSBjYW4gdGhlbiB1c2Ugc2VydmVydGhyZWFkLnBvcnQgdG8gZ2V0IHRoZSBwb3J0IG51bWJlci4KCiAgICAgICAgPj4+IHBvcnQgPSAwCiAgICAgICAgPj4+IHNlcnZlcnRocmVhZCA9IHB5ZG9jLl9zdGFydF9zZXJ2ZXIobXlfdXJsX2hhbmRsZXIsIHBvcnQpCgogICAgICAgIENoZWNrIHRoYXQgdGhlIHNlcnZlciBpcyByZWFsbHkgc3RhcnRlZC4gIElmIGl0IGlzLCBvcGVuIGJyb3dzZXIKICAgICAgICBhbmQgZ2V0IGZpcnN0IHBhZ2UuICBVc2Ugc2VydmVydGhyZWFkLnVybCBhcyB0aGUgc3RhcnRpbmcgcGFnZS4KCiAgICAgICAgPj4+IGlmIHNlcnZlcnRocmVhZC5zZXJ2aW5nOgogICAgICAgIC4uLiAgICBpbXBvcnQgd2ViYnJvd3NlcgoKICAgICAgICBUaGUgbmV4dCB0d28gbGluZXMgYXJlIGNvbW1lbnRlZCBvdXQgc28gYSBicm93c2VyIGRvZXNuJ3Qgb3BlbiBpZgogICAgICAgIGRvY3Rlc3QgaXMgcnVuIG9uIHRoaXMgbW9kdWxlLgoKICAgICAgICAjLi4uICAgIHdlYmJyb3dzZXIub3BlbihzZXJ2ZXJ0aHJlYWQudXJsKQogICAgICAgICNUcnVlCgogICAgICAgIExldCB0aGUgc2VydmVyIGRvIGl0cyB0aGluZy4gV2UganVzdCBuZWVkIHRvIG1vbml0b3IgaXRzIHN0YXR1cy4KICAgICAgICBVc2UgdGltZS5zbGVlcCBzbyB0aGUgbG9vcCBkb2Vzbid0IGhvZyB0aGUgQ1BVLgoKICAgICAgICA+Pj4gc3RhcnR0aW1lID0gdGltZS5tb25vdG9uaWMoKQogICAgICAgID4+PiB0aW1lb3V0ID0gMSAgICAgICAgICAgICAgICAgICAgI3NlY29uZHMKCiAgICAgICAgVGhpcyBpcyBhIHNob3J0IHRpbWVvdXQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCgogICAgICAgID4+PiB3aGlsZSBzZXJ2ZXJ0aHJlYWQuc2VydmluZzoKICAgICAgICAuLi4gICAgIHRpbWUuc2xlZXAoLjAxKQogICAgICAgIC4uLiAgICAgaWYgc2VydmVydGhyZWFkLnNlcnZpbmcgYW5kIHRpbWUubW9ub3RvbmljKCkgLSBzdGFydHRpbWUgPiB0aW1lb3V0OgogICAgICAgIC4uLiAgICAgICAgICBzZXJ2ZXJ0aHJlYWQuc3RvcCgpCiAgICAgICAgLi4uICAgICAgICAgIGJyZWFrCgogICAgICAgIFByaW50IGFueSBlcnJvcnMgdGhhdCBtYXkgaGF2ZSBvY2N1cnJlZC4KCiAgICAgICAgPj4+IHByaW50KHNlcnZlcnRocmVhZC5lcnJvcikKICAgICAgICBOb25lCiAgICIiIgogICAgaW1wb3J0IGh0dHAuc2VydmVyCiAgICBpbXBvcnQgZW1haWwubWVzc2FnZQogICAgaW1wb3J0IHNlbGVjdAogICAgaW1wb3J0IHRocmVhZGluZwoKICAgIGNsYXNzIERvY0hhbmRsZXIoaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CgogICAgICAgIGRlZiBkb19HRVQoc2VsZik6CiAgICAgICAgICAgICIiIlByb2Nlc3MgYSByZXF1ZXN0IGZyb20gYW4gSFRNTCBicm93c2VyLgoKICAgICAgICAgICAgVGhlIFVSTCByZWNlaXZlZCBpcyBpbiBzZWxmLnBhdGguCiAgICAgICAgICAgIEdldCBhbiBIVE1MIHBhZ2UgZnJvbSBzZWxmLnVybGhhbmRsZXIgYW5kIHNlbmQgaXQuCiAgICAgICAgICAgICIiIgogICAgICAgICAgICBpZiBzZWxmLnBhdGguZW5kc3dpdGgoJy5jc3MnKToKICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSA9ICd0ZXh0L2NzcycKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSA9ICd0ZXh0L2h0bWwnCiAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCiAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICclczsgY2hhcnNldD1VVEYtOCcgJSBjb250ZW50X3R5cGUpCiAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKHNlbGYudXJsaGFuZGxlcigKICAgICAgICAgICAgICAgIHNlbGYucGF0aCwgY29udGVudF90eXBlKS5lbmNvZGUoJ3V0Zi04JykpCgogICAgICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCAqYXJncyk6CiAgICAgICAgICAgICMgRG9uJ3QgbG9nIG1lc3NhZ2VzLgogICAgICAgICAgICBwYXNzCgogICAgY2xhc3MgRG9jU2VydmVyKGh0dHAuc2VydmVyLkhUVFBTZXJ2ZXIpOgoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgY2FsbGJhY2spOgogICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IChzZWxmLmhvc3QsIHBvcnQpCiAgICAgICAgICAgIHNlbGYuY2FsbGJhY2sgPSBjYWxsYmFjawogICAgICAgICAgICBzZWxmLmJhc2UuX19pbml0X18oc2VsZiwgc2VsZi5hZGRyZXNzLCBzZWxmLmhhbmRsZXIpCiAgICAgICAgICAgIHNlbGYucXVpdCA9IEZhbHNlCgogICAgICAgIGRlZiBzZXJ2ZV91bnRpbF9xdWl0KHNlbGYpOgogICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5xdWl0OgogICAgICAgICAgICAgICAgcmQsIHdyLCBleCA9IHNlbGVjdC5zZWxlY3QoW3NlbGYuc29ja2V0LmZpbGVubygpXSwgW10sIFtdLCAxKQogICAgICAgICAgICAgICAgaWYgcmQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfcmVxdWVzdCgpCiAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKCiAgICAgICAgZGVmIHNlcnZlcl9hY3RpdmF0ZShzZWxmKToKICAgICAgICAgICAgc2VsZi5iYXNlLnNlcnZlcl9hY3RpdmF0ZShzZWxmKQogICAgICAgICAgICBpZiBzZWxmLmNhbGxiYWNrOgogICAgICAgICAgICAgICAgc2VsZi5jYWxsYmFjayhzZWxmKQoKICAgIGNsYXNzIFNlcnZlclRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybGhhbmRsZXIsIGhvc3QsIHBvcnQpOgogICAgICAgICAgICBzZWxmLnVybGhhbmRsZXIgPSB1cmxoYW5kbGVyCiAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICAgICAgc2VsZi5wb3J0ID0gaW50KHBvcnQpCiAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKICAgICAgICAgICAgc2VsZi5zZXJ2aW5nID0gRmFsc2UKICAgICAgICAgICAgc2VsZi5lcnJvciA9IE5vbmUKCiAgICAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgICAgIiIiU3RhcnQgdGhlIHNlcnZlci4iIiIKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgRG9jU2VydmVyLmJhc2UgPSBodHRwLnNlcnZlci5IVFRQU2VydmVyCiAgICAgICAgICAgICAgICBEb2NTZXJ2ZXIuaGFuZGxlciA9IERvY0hhbmRsZXIKICAgICAgICAgICAgICAgIERvY0hhbmRsZXIuTWVzc2FnZUNsYXNzID0gZW1haWwubWVzc2FnZS5NZXNzYWdlCiAgICAgICAgICAgICAgICBEb2NIYW5kbGVyLnVybGhhbmRsZXIgPSBzdGF0aWNtZXRob2Qoc2VsZi51cmxoYW5kbGVyKQogICAgICAgICAgICAgICAgZG9jc3ZyID0gRG9jU2VydmVyKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBzZWxmLnJlYWR5KQogICAgICAgICAgICAgICAgc2VsZi5kb2NzZXJ2ZXIgPSBkb2NzdnIKICAgICAgICAgICAgICAgIGRvY3N2ci5zZXJ2ZV91bnRpbF9xdWl0KCkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgc2VsZi5lcnJvciA9IGUKCiAgICAgICAgZGVmIHJlYWR5KHNlbGYsIHNlcnZlcik6CiAgICAgICAgICAgIHNlbGYuc2VydmluZyA9IFRydWUKICAgICAgICAgICAgc2VsZi5ob3N0ID0gc2VydmVyLmhvc3QKICAgICAgICAgICAgc2VsZi5wb3J0ID0gc2VydmVyLnNlcnZlcl9wb3J0CiAgICAgICAgICAgIHNlbGYudXJsID0gJ2h0dHA6Ly8lczolZC8nICUgKHNlbGYuaG9zdCwgc2VsZi5wb3J0KQoKICAgICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgICAgIiIiU3RvcCB0aGUgc2VydmVyIGFuZCB0aGlzIHRocmVhZCBuaWNlbHkiIiIKICAgICAgICAgICAgc2VsZi5kb2NzZXJ2ZXIucXVpdCA9IFRydWUKICAgICAgICAgICAgc2VsZi5qb2luKCkKICAgICAgICAgICAgIyBleHBsaWNpdGx5IGJyZWFrIGEgcmVmZXJlbmNlIGN5Y2xlOiBEb2NTZXJ2ZXIuY2FsbGJhY2sKICAgICAgICAgICAgIyBoYXMgaW5kaXJlY3RseSBhIHJlZmVyZW5jZSB0byBTZXJ2ZXJUaHJlYWQuCiAgICAgICAgICAgIHNlbGYuZG9jc2VydmVyID0gTm9uZQogICAgICAgICAgICBzZWxmLnNlcnZpbmcgPSBGYWxzZQogICAgICAgICAgICBzZWxmLnVybCA9IE5vbmUKCiAgICB0aHJlYWQgPSBTZXJ2ZXJUaHJlYWQodXJsaGFuZGxlciwgaG9zdG5hbWUsIHBvcnQpCiAgICB0aHJlYWQuc3RhcnQoKQogICAgIyBXYWl0IHVudGlsIHRocmVhZC5zZXJ2aW5nIGlzIFRydWUgdG8gbWFrZSBzdXJlIHdlIGFyZQogICAgIyByZWFsbHkgdXAgYmVmb3JlIHJldHVybmluZy4KICAgIHdoaWxlIG5vdCB0aHJlYWQuZXJyb3IgYW5kIG5vdCB0aHJlYWQuc2VydmluZzoKICAgICAgICB0aW1lLnNsZWVwKC4wMSkKICAgIHJldHVybiB0aHJlYWQKCgpkZWYgX3VybF9oYW5kbGVyKHVybCwgY29udGVudF90eXBlPSJ0ZXh0L2h0bWwiKToKICAgICIiIlRoZSBweWRvYyB1cmwgaGFuZGxlciBmb3IgdXNlIHdpdGggdGhlIHB5ZG9jIHNlcnZlci4KCiAgICBJZiB0aGUgY29udGVudF90eXBlIGlzICd0ZXh0L2NzcycsIHRoZSBfcHlkb2MuY3NzIHN0eWxlCiAgICBzaGVldCBpcyByZWFkIGFuZCByZXR1cm5lZCBpZiBpdCBleGl0cy4KCiAgICBJZiB0aGUgY29udGVudF90eXBlIGlzICd0ZXh0L2h0bWwnLCB0aGVuIHRoZSByZXN1bHQgb2YKICAgIGdldF9odG1sX3BhZ2UodXJsKSBpcyByZXR1cm5lZC4KICAgICIiIgogICAgY2xhc3MgX0hUTUxEb2MoSFRNTERvYyk6CgogICAgICAgIGRlZiBwYWdlKHNlbGYsIHRpdGxlLCBjb250ZW50cyk6CiAgICAgICAgICAgICIiIkZvcm1hdCBhbiBIVE1MIHBhZ2UuIiIiCiAgICAgICAgICAgIGNzc19wYXRoID0gInB5ZG9jX2RhdGEvX3B5ZG9jLmNzcyIKICAgICAgICAgICAgY3NzX2xpbmsgPSAoCiAgICAgICAgICAgICAgICAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJXMiPicgJQogICAgICAgICAgICAgICAgY3NzX3BhdGgpCiAgICAgICAgICAgIHJldHVybiAnJydcCjwhRE9DVFlQRT4KPGh0bWwgbGFuZz0iZW4iPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+UHlkb2M6ICVzPC90aXRsZT4KJXM8L2hlYWQ+PGJvZHk+JXM8ZGl2IHN0eWxlPSJjbGVhcjpib3RoO3BhZGRpbmctdG9wOi41ZW07Ij4lczwvZGl2Pgo8L2JvZHk+PC9odG1sPicnJyAlICh0aXRsZSwgY3NzX2xpbmssIGh0bWxfbmF2YmFyKCksIGNvbnRlbnRzKQoKCiAgICBodG1sID0gX0hUTUxEb2MoKQoKICAgIGRlZiBodG1sX25hdmJhcigpOgogICAgICAgIHZlcnNpb24gPSBodG1sLmVzY2FwZSgiJXMgWyVzLCAlc10iICUgKHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0ucHl0aG9uX2J1aWxkKClbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0ucHl0aG9uX2NvbXBpbGVyKCkpKQogICAgICAgIHJldHVybiAiIiIKICAgICAgICAgICAgPGRpdiBzdHlsZT0nZmxvYXQ6bGVmdCc+CiAgICAgICAgICAgICAgICBQeXRob24gJXM8YnI+JXMKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9J2Zsb2F0OnJpZ2h0Jz4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaW5kZXguaHRtbCI+TW9kdWxlIEluZGV4PC9hPgogICAgICAgICAgICAgICAgICA6IDxhIGhyZWY9InRvcGljcy5odG1sIj5Ub3BpY3M8L2E+CiAgICAgICAgICAgICAgICAgIDogPGEgaHJlZj0ia2V5d29yZHMuaHRtbCI+S2V5d29yZHM8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJnZXQiIHN0eWxlPSdkaXNwbGF5OmlubGluZTsnPgogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPWtleSBzaXplPTE1PgogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJHZXQiPgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4mbmJzcDsKICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249InNlYXJjaCIgc3R5bGU9J2Rpc3BsYXk6aW5saW5lOyc+CiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9a2V5IHNpemU9MTU+CiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IlNlYXJjaCI+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAiIiIgJSAodmVyc2lvbiwgaHRtbC5lc2NhcGUocGxhdGZvcm0ucGxhdGZvcm0odGVyc2U9VHJ1ZSkpKQoKICAgIGRlZiBodG1sX2luZGV4KCk6CiAgICAgICAgIiIiTW9kdWxlIEluZGV4IHBhZ2UuIiIiCgogICAgICAgIGRlZiBibHRpbmxpbmsobmFtZSk6CiAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj0iJXMuaHRtbCI+JXM8L2E+JyAlIChuYW1lLCBuYW1lKQoKICAgICAgICBoZWFkaW5nID0gaHRtbC5oZWFkaW5nKAogICAgICAgICAgICAnPHN0cm9uZyBjbGFzcz0idGl0bGUiPkluZGV4IG9mIE1vZHVsZXM8L3N0cm9uZz4nCiAgICAgICAgKQogICAgICAgIG5hbWVzID0gW25hbWUgZm9yIG5hbWUgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCiAgICAgICAgICAgICAgICAgaWYgbmFtZSAhPSAnX19tYWluX18nXQogICAgICAgIGNvbnRlbnRzID0gaHRtbC5tdWx0aWNvbHVtbihuYW1lcywgYmx0aW5saW5rKQogICAgICAgIGNvbnRlbnRzID0gW2hlYWRpbmcsICc8cD4nICsgaHRtbC5iaWdzZWN0aW9uKAogICAgICAgICAgICAnQnVpbHQtaW4gTW9kdWxlcycsICdpbmRleCcsIGNvbnRlbnRzKV0KCiAgICAgICAgc2VlbiA9IHt9CiAgICAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKGh0bWwuaW5kZXgoZGlyLCBzZWVuKSkKCiAgICAgICAgY29udGVudHMuYXBwZW5kKAogICAgICAgICAgICAnPHAgYWxpZ249cmlnaHQgY2xhc3M9ImhlYWRpbmctdGV4dCBncmV5Ij48c3Ryb25nPnB5ZG9jPC9zdHJvbmc+IGJ5IEthLVBpbmcgWWVlJwogICAgICAgICAgICAnJmx0O3BpbmdAbGZ3Lm9yZyZndDs8L3A+JykKICAgICAgICByZXR1cm4gJ0luZGV4IG9mIE1vZHVsZXMnLCAnJy5qb2luKGNvbnRlbnRzKQoKICAgIGRlZiBodG1sX3NlYXJjaChrZXkpOgogICAgICAgICIiIlNlYXJjaCByZXN1bHRzIHBhZ2UuIiIiCiAgICAgICAgIyBzY2FuIGZvciBtb2R1bGVzCiAgICAgICAgc2VhcmNoX3Jlc3VsdCA9IFtdCgogICAgICAgIGRlZiBjYWxsYmFjayhwYXRoLCBtb2RuYW1lLCBkZXNjKToKICAgICAgICAgICAgaWYgbW9kbmFtZVstOTpdID09ICcuX19pbml0X18nOgogICAgICAgICAgICAgICAgbW9kbmFtZSA9IG1vZG5hbWVbOi05XSArICcgKHBhY2thZ2UpJwogICAgICAgICAgICBzZWFyY2hfcmVzdWx0LmFwcGVuZCgobW9kbmFtZSwgZGVzYyBhbmQgJy0gJyArIGRlc2MpKQoKICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnKSAjIGlnbm9yZSBwcm9ibGVtcyBkdXJpbmcgaW1wb3J0CiAgICAgICAgICAgIGRlZiBvbmVycm9yKG1vZG5hbWUpOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBNb2R1bGVTY2FubmVyKCkucnVuKGNhbGxiYWNrLCBrZXksIG9uZXJyb3I9b25lcnJvcikKCiAgICAgICAgIyBmb3JtYXQgcGFnZQogICAgICAgIGRlZiBibHRpbmxpbmsobmFtZSk6CiAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj0iJXMuaHRtbCI+JXM8L2E+JyAlIChuYW1lLCBuYW1lKQoKICAgICAgICByZXN1bHRzID0gW10KICAgICAgICBoZWFkaW5nID0gaHRtbC5oZWFkaW5nKAogICAgICAgICAgICAnPHN0cm9uZyBjbGFzcz0idGl0bGUiPlNlYXJjaCBSZXN1bHRzPC9zdHJvbmc+JywKICAgICAgICApCiAgICAgICAgZm9yIG5hbWUsIGRlc2MgaW4gc2VhcmNoX3Jlc3VsdDoKICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoYmx0aW5saW5rKG5hbWUpICsgZGVzYykKICAgICAgICBjb250ZW50cyA9IGhlYWRpbmcgKyBodG1sLmJpZ3NlY3Rpb24oCiAgICAgICAgICAgICdrZXkgPSAlcycgJSBrZXksICdpbmRleCcsICc8YnI+Jy5qb2luKHJlc3VsdHMpKQogICAgICAgIHJldHVybiAnU2VhcmNoIFJlc3VsdHMnLCBjb250ZW50cwoKICAgIGRlZiBodG1sX3RvcGljcygpOgogICAgICAgICIiIkluZGV4IG9mIHRvcGljIHRleHRzIGF2YWlsYWJsZS4iIiIKCiAgICAgICAgZGVmIGJsdGlubGluayhuYW1lKToKICAgICAgICAgICAgcmV0dXJuICc8YSBocmVmPSJ0b3BpYz9rZXk9JXMiPiVzPC9hPicgJSAobmFtZSwgbmFtZSkKCiAgICAgICAgaGVhZGluZyA9IGh0bWwuaGVhZGluZygKICAgICAgICAgICAgJzxzdHJvbmcgY2xhc3M9InRpdGxlIj5JTkRFWDwvc3Ryb25nPicsCiAgICAgICAgKQogICAgICAgIG5hbWVzID0gc29ydGVkKEhlbHBlci50b3BpY3Mua2V5cygpKQoKICAgICAgICBjb250ZW50cyA9IGh0bWwubXVsdGljb2x1bW4obmFtZXMsIGJsdGlubGluaykKICAgICAgICBjb250ZW50cyA9IGhlYWRpbmcgKyBodG1sLmJpZ3NlY3Rpb24oCiAgICAgICAgICAgICdUb3BpY3MnLCAnaW5kZXgnLCBjb250ZW50cykKICAgICAgICByZXR1cm4gJ1RvcGljcycsIGNvbnRlbnRzCgogICAgZGVmIGh0bWxfa2V5d29yZHMoKToKICAgICAgICAiIiJJbmRleCBvZiBrZXl3b3Jkcy4iIiIKICAgICAgICBoZWFkaW5nID0gaHRtbC5oZWFkaW5nKAogICAgICAgICAgICAnPHN0cm9uZyBjbGFzcz0idGl0bGUiPklOREVYPC9zdHJvbmc+JywKICAgICAgICApCiAgICAgICAgbmFtZXMgPSBzb3J0ZWQoSGVscGVyLmtleXdvcmRzLmtleXMoKSkKCiAgICAgICAgZGVmIGJsdGlubGluayhuYW1lKToKICAgICAgICAgICAgcmV0dXJuICc8YSBocmVmPSJ0b3BpYz9rZXk9JXMiPiVzPC9hPicgJSAobmFtZSwgbmFtZSkKCiAgICAgICAgY29udGVudHMgPSBodG1sLm11bHRpY29sdW1uKG5hbWVzLCBibHRpbmxpbmspCiAgICAgICAgY29udGVudHMgPSBoZWFkaW5nICsgaHRtbC5iaWdzZWN0aW9uKAogICAgICAgICAgICAnS2V5d29yZHMnLCAnaW5kZXgnLCBjb250ZW50cykKICAgICAgICByZXR1cm4gJ0tleXdvcmRzJywgY29udGVudHMKCiAgICBkZWYgaHRtbF90b3BpY3BhZ2UodG9waWMpOgogICAgICAgICIiIlRvcGljIG9yIGtleXdvcmQgaGVscCBwYWdlLiIiIgogICAgICAgIGJ1ZiA9IGlvLlN0cmluZ0lPKCkKICAgICAgICBodG1saGVscCA9IEhlbHBlcihidWYsIGJ1ZikKICAgICAgICBjb250ZW50cywgeHJlZnMgPSBodG1saGVscC5fZ2V0dG9waWModG9waWMpCiAgICAgICAgaWYgdG9waWMgaW4gaHRtbGhlbHAua2V5d29yZHM6CiAgICAgICAgICAgIHRpdGxlID0gJ0tFWVdPUkQnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGl0bGUgPSAnVE9QSUMnCiAgICAgICAgaGVhZGluZyA9IGh0bWwuaGVhZGluZygKICAgICAgICAgICAgJzxzdHJvbmcgY2xhc3M9InRpdGxlIj4lczwvc3Ryb25nPicgJSB0aXRsZSwKICAgICAgICApCiAgICAgICAgY29udGVudHMgPSAnPHByZT4lczwvcHJlPicgJSBodG1sLm1hcmt1cChjb250ZW50cykKICAgICAgICBjb250ZW50cyA9IGh0bWwuYmlnc2VjdGlvbih0b3BpYyAsICdpbmRleCcsIGNvbnRlbnRzKQogICAgICAgIGlmIHhyZWZzOgogICAgICAgICAgICB4cmVmcyA9IHNvcnRlZCh4cmVmcy5zcGxpdCgpKQoKICAgICAgICAgICAgZGVmIGJsdGlubGluayhuYW1lKToKICAgICAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj0idG9waWM/a2V5PSVzIj4lczwvYT4nICUgKG5hbWUsIG5hbWUpCgogICAgICAgICAgICB4cmVmcyA9IGh0bWwubXVsdGljb2x1bW4oeHJlZnMsIGJsdGlubGluaykKICAgICAgICAgICAgeHJlZnMgPSBodG1sLnNlY3Rpb24oJ1JlbGF0ZWQgaGVscCB0b3BpY3M6ICcsICdpbmRleCcsIHhyZWZzKQogICAgICAgIHJldHVybiAoJyVzICVzJyAlICh0aXRsZSwgdG9waWMpLAogICAgICAgICAgICAgICAgJycuam9pbigoaGVhZGluZywgY29udGVudHMsIHhyZWZzKSkpCgogICAgZGVmIGh0bWxfZ2V0b2JqKHVybCk6CiAgICAgICAgb2JqID0gbG9jYXRlKHVybCwgZm9yY2Vsb2FkPTEpCiAgICAgICAgaWYgb2JqIGlzIE5vbmUgYW5kIHVybCAhPSAnTm9uZSc6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIG9iamVjdCcpCiAgICAgICAgdGl0bGUgPSBkZXNjcmliZShvYmopCiAgICAgICAgY29udGVudCA9IGh0bWwuZG9jdW1lbnQob2JqLCB1cmwpCiAgICAgICAgcmV0dXJuIHRpdGxlLCBjb250ZW50CgogICAgZGVmIGh0bWxfZXJyb3IodXJsLCBleGMpOgogICAgICAgIGhlYWRpbmcgPSBodG1sLmhlYWRpbmcoCiAgICAgICAgICAgICc8c3Ryb25nIGNsYXNzPSJ0aXRsZSI+RXJyb3I8L3N0cm9uZz4nLAogICAgICAgICkKICAgICAgICBjb250ZW50cyA9ICc8YnI+Jy5qb2luKGh0bWwuZXNjYXBlKGxpbmUpIGZvciBsaW5lIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZShleGMpLCBleGMpKQogICAgICAgIGNvbnRlbnRzID0gaGVhZGluZyArIGh0bWwuYmlnc2VjdGlvbih1cmwsICdlcnJvcicsIGNvbnRlbnRzKQogICAgICAgIHJldHVybiAiRXJyb3IgLSAlcyIgJSB1cmwsIGNvbnRlbnRzCgogICAgZGVmIGdldF9odG1sX3BhZ2UodXJsKToKICAgICAgICAiIiJHZW5lcmF0ZSBhbiBIVE1MIHBhZ2UgZm9yIHVybC4iIiIKICAgICAgICBjb21wbGV0ZV91cmwgPSB1cmwKICAgICAgICBpZiB1cmwuZW5kc3dpdGgoJy5odG1sJyk6CiAgICAgICAgICAgIHVybCA9IHVybFs6LTVdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiB1cmwgaW4gKCIiLCAiaW5kZXgiKToKICAgICAgICAgICAgICAgIHRpdGxlLCBjb250ZW50ID0gaHRtbF9pbmRleCgpCiAgICAgICAgICAgIGVsaWYgdXJsID09ICJ0b3BpY3MiOgogICAgICAgICAgICAgICAgdGl0bGUsIGNvbnRlbnQgPSBodG1sX3RvcGljcygpCiAgICAgICAgICAgIGVsaWYgdXJsID09ICJrZXl3b3JkcyI6CiAgICAgICAgICAgICAgICB0aXRsZSwgY29udGVudCA9IGh0bWxfa2V5d29yZHMoKQogICAgICAgICAgICBlbGlmICc9JyBpbiB1cmw6CiAgICAgICAgICAgICAgICBvcCwgXywgdXJsID0gdXJsLnBhcnRpdGlvbignPScpCiAgICAgICAgICAgICAgICBpZiBvcCA9PSAic2VhcmNoP2tleSI6CiAgICAgICAgICAgICAgICAgICAgdGl0bGUsIGNvbnRlbnQgPSBodG1sX3NlYXJjaCh1cmwpCiAgICAgICAgICAgICAgICBlbGlmIG9wID09ICJ0b3BpYz9rZXkiOgogICAgICAgICAgICAgICAgICAgICMgdHJ5IHRvcGljcyBmaXJzdCwgdGhlbiBvYmplY3RzLgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsIGNvbnRlbnQgPSBodG1sX3RvcGljcGFnZSh1cmwpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLCBjb250ZW50ID0gaHRtbF9nZXRvYmoodXJsKQogICAgICAgICAgICAgICAgZWxpZiBvcCA9PSAiZ2V0P2tleSI6CiAgICAgICAgICAgICAgICAgICAgIyB0cnkgb2JqZWN0cyBmaXJzdCwgdGhlbiB0b3BpY3MuCiAgICAgICAgICAgICAgICAgICAgaWYgdXJsIGluICgiIiwgImluZGV4Iik6CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLCBjb250ZW50ID0gaHRtbF9pbmRleCgpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsIGNvbnRlbnQgPSBodG1sX2dldG9iaih1cmwpCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsIGNvbnRlbnQgPSBodG1sX3RvcGljcGFnZSh1cmwpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2JhZCBweWRvYyB1cmwnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdGl0bGUsIGNvbnRlbnQgPSBodG1sX2dldG9iaih1cmwpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICMgQ2F0Y2ggYW55IGVycm9ycyBhbmQgZGlzcGxheSB0aGVtIGluIGFuIGVycm9yIHBhZ2UuCiAgICAgICAgICAgIHRpdGxlLCBjb250ZW50ID0gaHRtbF9lcnJvcihjb21wbGV0ZV91cmwsIGV4YykKICAgICAgICByZXR1cm4gaHRtbC5wYWdlKHRpdGxlLCBjb250ZW50KQoKICAgIGlmIHVybC5zdGFydHN3aXRoKCcvJyk6CiAgICAgICAgdXJsID0gdXJsWzE6XQogICAgaWYgY29udGVudF90eXBlID09ICd0ZXh0L2Nzcyc6CiAgICAgICAgcGF0aF9oZXJlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKQogICAgICAgIGNzc19wYXRoID0gb3MucGF0aC5qb2luKHBhdGhfaGVyZSwgdXJsKQogICAgICAgIHdpdGggb3Blbihjc3NfcGF0aCkgYXMgZnA6CiAgICAgICAgICAgIHJldHVybiAnJy5qb2luKGZwLnJlYWRsaW5lcygpKQogICAgZWxpZiBjb250ZW50X3R5cGUgPT0gJ3RleHQvaHRtbCc6CiAgICAgICAgcmV0dXJuIGdldF9odG1sX3BhZ2UodXJsKQogICAgIyBFcnJvcnMgb3V0c2lkZSB0aGUgdXJsIGhhbmRsZXIgYXJlIGNhdWdodCBieSB0aGUgc2VydmVyLgogICAgcmFpc2UgVHlwZUVycm9yKCd1bmtub3duIGNvbnRlbnQgdHlwZSAlciBmb3IgdXJsICVzJyAlIChjb250ZW50X3R5cGUsIHVybCkpCgoKZGVmIGJyb3dzZShwb3J0PTAsICosIG9wZW5fYnJvd3Nlcj1UcnVlLCBob3N0bmFtZT0nbG9jYWxob3N0Jyk6CiAgICAiIiJTdGFydCB0aGUgZW5oYW5jZWQgcHlkb2Mgd2ViIHNlcnZlciBhbmQgb3BlbiBhIHdlYiBicm93c2VyLgoKICAgIFVzZSBwb3J0ICcwJyB0byBzdGFydCB0aGUgc2VydmVyIG9uIGFuIGFyYml0cmFyeSBwb3J0LgogICAgU2V0IG9wZW5fYnJvd3NlciB0byBGYWxzZSB0byBzdXBwcmVzcyBvcGVuaW5nIGEgYnJvd3Nlci4KICAgICIiIgogICAgaW1wb3J0IHdlYmJyb3dzZXIKICAgIHNlcnZlcnRocmVhZCA9IF9zdGFydF9zZXJ2ZXIoX3VybF9oYW5kbGVyLCBob3N0bmFtZSwgcG9ydCkKICAgIGlmIHNlcnZlcnRocmVhZC5lcnJvcjoKICAgICAgICBwcmludChzZXJ2ZXJ0aHJlYWQuZXJyb3IpCiAgICAgICAgcmV0dXJuCiAgICBpZiBzZXJ2ZXJ0aHJlYWQuc2VydmluZzoKICAgICAgICBzZXJ2ZXJfaGVscF9tc2cgPSAnU2VydmVyIGNvbW1hbmRzOiBbYl1yb3dzZXIsIFtxXXVpdCcKICAgICAgICBpZiBvcGVuX2Jyb3dzZXI6CiAgICAgICAgICAgIHdlYmJyb3dzZXIub3BlbihzZXJ2ZXJ0aHJlYWQudXJsKQogICAgICAgIHRyeToKICAgICAgICAgICAgcHJpbnQoJ1NlcnZlciByZWFkeSBhdCcsIHNlcnZlcnRocmVhZC51cmwpCiAgICAgICAgICAgIHByaW50KHNlcnZlcl9oZWxwX21zZykKICAgICAgICAgICAgd2hpbGUgc2VydmVydGhyZWFkLnNlcnZpbmc6CiAgICAgICAgICAgICAgICBjbWQgPSBpbnB1dCgnc2VydmVyPiAnKQogICAgICAgICAgICAgICAgY21kID0gY21kLmxvd2VyKCkKICAgICAgICAgICAgICAgIGlmIGNtZCA9PSAncSc6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGVsaWYgY21kID09ICdiJzoKICAgICAgICAgICAgICAgICAgICB3ZWJicm93c2VyLm9wZW4oc2VydmVydGhyZWFkLnVybCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoc2VydmVyX2hlbHBfbXNnKQogICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIEVPRkVycm9yKToKICAgICAgICAgICAgcHJpbnQoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIHNlcnZlcnRocmVhZC5zZXJ2aW5nOgogICAgICAgICAgICAgICAgc2VydmVydGhyZWFkLnN0b3AoKQogICAgICAgICAgICAgICAgcHJpbnQoJ1NlcnZlciBzdG9wcGVkJykKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UKCmRlZiBpc3BhdGgoeCk6CiAgICByZXR1cm4gaXNpbnN0YW5jZSh4LCBzdHIpIGFuZCB4LmZpbmQob3Muc2VwKSA+PSAwCgpkZWYgX2dldF9yZXZpc2VkX3BhdGgoZ2l2ZW5fcGF0aCwgYXJndjApOgogICAgIiIiRW5zdXJlcyBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbiByZXR1cm5lZCBwYXRoLCBhbmQgYXJndjAgZGlyZWN0b3J5IGlzIG5vdAoKICAgIEV4Y2VwdGlvbjogYXJndjAgZGlyIGlzIGxlZnQgYWxvbmUgaWYgaXQncyBhbHNvIHB5ZG9jJ3MgZGlyZWN0b3J5LgoKICAgIFJldHVybnMgYSBuZXcgcGF0aCBlbnRyeSBsaXN0LCBvciBOb25lIGlmIG5vIGFkanVzdG1lbnQgaXMgbmVlZGVkLgogICAgIiIiCiAgICAjIFNjcmlwdHMgbWF5IGdldCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaW4gdGhlaXIgcGF0aCBieSBkZWZhdWx0IGlmIHRoZXkncmUKICAgICMgcnVuIHdpdGggdGhlIC1tIHN3aXRjaCwgb3IgZGlyZWN0bHkgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAjIFRoZSBpbnRlcmFjdGl2ZSBwcm9tcHQgYWxzbyBhbGxvd3MgaW1wb3J0cyBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCiAgICAjIEFjY29yZGluZ2x5LCBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYWxyZWFkeSBwcmVzZW50LCBkb24ndCBtYWtlCiAgICAjIGFueSBjaGFuZ2VzIHRvIHRoZSBnaXZlbl9wYXRoCiAgICBpZiAnJyBpbiBnaXZlbl9wYXRoIG9yIG9zLmN1cmRpciBpbiBnaXZlbl9wYXRoIG9yIG9zLmdldGN3ZCgpIGluIGdpdmVuX3BhdGg6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAjIE90aGVyd2lzZSwgYWRkIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB0byB0aGUgZ2l2ZW4gcGF0aCwgYW5kIHJlbW92ZSB0aGUKICAgICMgc2NyaXB0IGRpcmVjdG9yeSAoYXMgbG9uZyBhcyB0aGUgbGF0dGVyIGlzbid0IGFsc28gcHlkb2MncyBkaXJlY3RvcnkuCiAgICBzdGRsaWJfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogICAgc2NyaXB0X2RpciA9IG9zLnBhdGguZGlybmFtZShhcmd2MCkKICAgIHJldmlzZWRfcGF0aCA9IGdpdmVuX3BhdGguY29weSgpCiAgICBpZiBzY3JpcHRfZGlyIGluIGdpdmVuX3BhdGggYW5kIG5vdCBvcy5wYXRoLnNhbWVmaWxlKHNjcmlwdF9kaXIsIHN0ZGxpYl9kaXIpOgogICAgICAgIHJldmlzZWRfcGF0aC5yZW1vdmUoc2NyaXB0X2RpcikKICAgIHJldmlzZWRfcGF0aC5pbnNlcnQoMCwgb3MuZ2V0Y3dkKCkpCiAgICByZXR1cm4gcmV2aXNlZF9wYXRoCgoKIyBOb3RlOiB0aGUgdGVzdHMgb25seSBjb3ZlciBfZ2V0X3JldmlzZWRfcGF0aCwgbm90IF9hZGp1c3RfY2xpX3BhdGggaXRzZWxmCmRlZiBfYWRqdXN0X2NsaV9zeXNfcGF0aCgpOgogICAgIiIiRW5zdXJlcyBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbiBzeXMucGF0aCwgYW5kIF9fbWFpbl9fIGRpcmVjdG9yeSBpcyBub3QuCgogICAgRXhjZXB0aW9uOiBfX21haW5fXyBkaXIgaXMgbGVmdCBhbG9uZSBpZiBpdCdzIGFsc28gcHlkb2MncyBkaXJlY3RvcnkuCiAgICAiIiIKICAgIHJldmlzZWRfcGF0aCA9IF9nZXRfcmV2aXNlZF9wYXRoKHN5cy5wYXRoLCBzeXMuYXJndlswXSkKICAgIGlmIHJldmlzZWRfcGF0aCBpcyBub3QgTm9uZToKICAgICAgICBzeXMucGF0aFs6XSA9IHJldmlzZWRfcGF0aAoKCmRlZiBjbGkoKToKICAgICIiIkNvbW1hbmQtbGluZSBpbnRlcmZhY2UgKGxvb2tzIGF0IHN5cy5hcmd2IHRvIGRlY2lkZSB3aGF0IHRvIGRvKS4iIiIKICAgIGltcG9ydCBnZXRvcHQKICAgIGNsYXNzIEJhZFVzYWdlKEV4Y2VwdGlvbik6IHBhc3MKCiAgICBfYWRqdXN0X2NsaV9zeXNfcGF0aCgpCgogICAgdHJ5OgogICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2JrOm46cDp3JykKICAgICAgICB3cml0aW5nID0gRmFsc2UKICAgICAgICBzdGFydF9zZXJ2ZXIgPSBGYWxzZQogICAgICAgIG9wZW5fYnJvd3NlciA9IEZhbHNlCiAgICAgICAgcG9ydCA9IDAKICAgICAgICBob3N0bmFtZSA9ICdsb2NhbGhvc3QnCiAgICAgICAgZm9yIG9wdCwgdmFsIGluIG9wdHM6CiAgICAgICAgICAgIGlmIG9wdCA9PSAnLWInOgogICAgICAgICAgICAgICAgc3RhcnRfc2VydmVyID0gVHJ1ZQogICAgICAgICAgICAgICAgb3Blbl9icm93c2VyID0gVHJ1ZQogICAgICAgICAgICBpZiBvcHQgPT0gJy1rJzoKICAgICAgICAgICAgICAgIGFwcm9wb3ModmFsKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmIG9wdCA9PSAnLXAnOgogICAgICAgICAgICAgICAgc3RhcnRfc2VydmVyID0gVHJ1ZQogICAgICAgICAgICAgICAgcG9ydCA9IHZhbAogICAgICAgICAgICBpZiBvcHQgPT0gJy13JzoKICAgICAgICAgICAgICAgIHdyaXRpbmcgPSBUcnVlCiAgICAgICAgICAgIGlmIG9wdCA9PSAnLW4nOgogICAgICAgICAgICAgICAgc3RhcnRfc2VydmVyID0gVHJ1ZQogICAgICAgICAgICAgICAgaG9zdG5hbWUgPSB2YWwKCiAgICAgICAgaWYgc3RhcnRfc2VydmVyOgogICAgICAgICAgICBicm93c2UocG9ydCwgaG9zdG5hbWU9aG9zdG5hbWUsIG9wZW5fYnJvd3Nlcj1vcGVuX2Jyb3dzZXIpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBub3QgYXJnczogcmFpc2UgQmFkVXNhZ2UKICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CiAgICAgICAgICAgIGlmIGlzcGF0aChhcmcpIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoYXJnKToKICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICVyIGRvZXMgbm90IGV4aXN0JyAlIGFyZykKICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGlzcGF0aChhcmcpIGFuZCBvcy5wYXRoLmlzZmlsZShhcmcpOgogICAgICAgICAgICAgICAgICAgIGFyZyA9IGltcG9ydGZpbGUoYXJnKQogICAgICAgICAgICAgICAgaWYgd3JpdGluZzoKICAgICAgICAgICAgICAgICAgICBpZiBpc3BhdGgoYXJnKSBhbmQgb3MucGF0aC5pc2RpcihhcmcpOgogICAgICAgICAgICAgICAgICAgICAgICB3cml0ZWRvY3MoYXJnKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlZG9jKGFyZykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaGVscC5oZWxwKGFyZykKICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRXJyb3JEdXJpbmdJbXBvcnQpIGFzIHZhbHVlOgogICAgICAgICAgICAgICAgcHJpbnQodmFsdWUpCiAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQoKICAgIGV4Y2VwdCAoZ2V0b3B0LmVycm9yLCBCYWRVc2FnZSk6CiAgICAgICAgY21kID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKSlbMF0KICAgICAgICBwcmludCgiIiJweWRvYyAtIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiB0b29sCgp7Y21kfSA8bmFtZT4gLi4uCiAgICBTaG93IHRleHQgZG9jdW1lbnRhdGlvbiBvbiBzb21ldGhpbmcuICA8bmFtZT4gbWF5IGJlIHRoZSBuYW1lIG9mIGEKICAgIFB5dGhvbiBrZXl3b3JkLCB0b3BpYywgZnVuY3Rpb24sIG1vZHVsZSwgb3IgcGFja2FnZSwgb3IgYSBkb3R0ZWQKICAgIHJlZmVyZW5jZSB0byBhIGNsYXNzIG9yIGZ1bmN0aW9uIHdpdGhpbiBhIG1vZHVsZSBvciBtb2R1bGUgaW4gYQogICAgcGFja2FnZS4gIElmIDxuYW1lPiBjb250YWlucyBhICd7c2VwfScsIGl0IGlzIHVzZWQgYXMgdGhlIHBhdGggdG8gYQogICAgUHl0aG9uIHNvdXJjZSBmaWxlIHRvIGRvY3VtZW50LiBJZiBuYW1lIGlzICdrZXl3b3JkcycsICd0b3BpY3MnLAogICAgb3IgJ21vZHVsZXMnLCBhIGxpc3Rpbmcgb2YgdGhlc2UgdGhpbmdzIGlzIGRpc3BsYXllZC4KCntjbWR9IC1rIDxrZXl3b3JkPgogICAgU2VhcmNoIGZvciBhIGtleXdvcmQgaW4gdGhlIHN5bm9wc2lzIGxpbmVzIG9mIGFsbCBhdmFpbGFibGUgbW9kdWxlcy4KCntjbWR9IC1uIDxob3N0bmFtZT4KICAgIFN0YXJ0IGFuIEhUVFAgc2VydmVyIHdpdGggdGhlIGdpdmVuIGhvc3RuYW1lIChkZWZhdWx0OiBsb2NhbGhvc3QpLgoKe2NtZH0gLXAgPHBvcnQ+CiAgICBTdGFydCBhbiBIVFRQIHNlcnZlciBvbiB0aGUgZ2l2ZW4gcG9ydCBvbiB0aGUgbG9jYWwgbWFjaGluZS4gIFBvcnQKICAgIG51bWJlciAwIGNhbiBiZSB1c2VkIHRvIGdldCBhbiBhcmJpdHJhcnkgdW51c2VkIHBvcnQuCgp7Y21kfSAtYgogICAgU3RhcnQgYW4gSFRUUCBzZXJ2ZXIgb24gYW4gYXJiaXRyYXJ5IHVudXNlZCBwb3J0IGFuZCBvcGVuIGEgd2ViIGJyb3dzZXIKICAgIHRvIGludGVyYWN0aXZlbHkgYnJvd3NlIGRvY3VtZW50YXRpb24uICBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCBpbgogICAgY29tYmluYXRpb24gd2l0aCAtbiBhbmQvb3IgLXAuCgp7Y21kfSAtdyA8bmFtZT4gLi4uCiAgICBXcml0ZSBvdXQgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgYSBtb2R1bGUgdG8gYSBmaWxlIGluIHRoZSBjdXJyZW50CiAgICBkaXJlY3RvcnkuICBJZiA8bmFtZT4gY29udGFpbnMgYSAne3NlcH0nLCBpdCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWU7IGlmCiAgICBpdCBuYW1lcyBhIGRpcmVjdG9yeSwgZG9jdW1lbnRhdGlvbiBpcyB3cml0dGVuIGZvciBhbGwgdGhlIGNvbnRlbnRzLgoiIiIuZm9ybWF0KGNtZD1jbWQsIHNlcD1vcy5zZXApKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIGNsaSgpClBLAwQUAAAAAAACIKNWt7z5zugsAADoLAAACAAAAHF1ZXVlLnB5JycnQSBtdWx0aS1wcm9kdWNlciwgbXVsdGktY29uc3VtZXIgcXVldWUuJycnCgppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCB0eXBlcwpmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQpmcm9tIGhlYXBxIGltcG9ydCBoZWFwcHVzaCwgaGVhcHBvcApmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCnRyeToKICAgIGZyb20gX3F1ZXVlIGltcG9ydCBTaW1wbGVRdWV1ZQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBTaW1wbGVRdWV1ZSA9IE5vbmUKCl9fYWxsX18gPSBbJ0VtcHR5JywgJ0Z1bGwnLCAnUXVldWUnLCAnUHJpb3JpdHlRdWV1ZScsICdMaWZvUXVldWUnLCAnU2ltcGxlUXVldWUnXQoKCnRyeToKICAgIGZyb20gX3F1ZXVlIGltcG9ydCBFbXB0eQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBjbGFzcyBFbXB0eShFeGNlcHRpb24pOgogICAgICAgICdFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLmdldChibG9jaz0wKS9nZXRfbm93YWl0KCkuJwogICAgICAgIHBhc3MKCmNsYXNzIEZ1bGwoRXhjZXB0aW9uKToKICAgICdFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLnB1dChibG9jaz0wKS9wdXRfbm93YWl0KCkuJwogICAgcGFzcwoKCmNsYXNzIFF1ZXVlOgogICAgJycnQ3JlYXRlIGEgcXVldWUgb2JqZWN0IHdpdGggYSBnaXZlbiBtYXhpbXVtIHNpemUuCgogICAgSWYgbWF4c2l6ZSBpcyA8PSAwLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KICAgICcnJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhzaXplPTApOgogICAgICAgIHNlbGYubWF4c2l6ZSA9IG1heHNpemUKICAgICAgICBzZWxmLl9pbml0KG1heHNpemUpCgogICAgICAgICMgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW5ldmVyIHRoZSBxdWV1ZSBpcyBtdXRhdGluZy4gIEFsbCBtZXRob2RzCiAgICAgICAgIyB0aGF0IGFjcXVpcmUgbXV0ZXggbXVzdCByZWxlYXNlIGl0IGJlZm9yZSByZXR1cm5pbmcuICBtdXRleAogICAgICAgICMgaXMgc2hhcmVkIGJldHdlZW4gdGhlIHRocmVlIGNvbmRpdGlvbnMsIHNvIGFjcXVpcmluZyBhbmQKICAgICAgICAjIHJlbGVhc2luZyB0aGUgY29uZGl0aW9ucyBhbHNvIGFjcXVpcmVzIGFuZCByZWxlYXNlcyBtdXRleC4KICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLkxvY2soKQoKICAgICAgICAjIE5vdGlmeSBub3RfZW1wdHkgd2hlbmV2ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byB0aGUgcXVldWU7IGEKICAgICAgICAjIHRocmVhZCB3YWl0aW5nIHRvIGdldCBpcyBub3RpZmllZCB0aGVuLgogICAgICAgIHNlbGYubm90X2VtcHR5ID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQoKICAgICAgICAjIE5vdGlmeSBub3RfZnVsbCB3aGVuZXZlciBhbiBpdGVtIGlzIHJlbW92ZWQgZnJvbSB0aGUgcXVldWU7CiAgICAgICAgIyBhIHRocmVhZCB3YWl0aW5nIHRvIHB1dCBpcyBub3RpZmllZCB0aGVuLgogICAgICAgIHNlbGYubm90X2Z1bGwgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCgogICAgICAgICMgTm90aWZ5IGFsbF90YXNrc19kb25lIHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgdW5maW5pc2hlZCB0YXNrcwogICAgICAgICMgZHJvcHMgdG8gemVybzsgdGhyZWFkIHdhaXRpbmcgdG8gam9pbigpIGlzIG5vdGlmaWVkIHRvIHJlc3VtZQogICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCiAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzID0gMAoKICAgIGRlZiB0YXNrX2RvbmUoc2VsZik6CiAgICAgICAgJycnSW5kaWNhdGUgdGhhdCBhIGZvcm1lcmx5IGVucXVldWVkIHRhc2sgaXMgY29tcGxldGUuCgogICAgICAgIFVzZWQgYnkgUXVldWUgY29uc3VtZXIgdGhyZWFkcy4gIEZvciBlYWNoIGdldCgpIHVzZWQgdG8gZmV0Y2ggYSB0YXNrLAogICAgICAgIGEgc3Vic2VxdWVudCBjYWxsIHRvIHRhc2tfZG9uZSgpIHRlbGxzIHRoZSBxdWV1ZSB0aGF0IHRoZSBwcm9jZXNzaW5nCiAgICAgICAgb24gdGhlIHRhc2sgaXMgY29tcGxldGUuCgogICAgICAgIElmIGEgam9pbigpIGlzIGN1cnJlbnRseSBibG9ja2luZywgaXQgd2lsbCByZXN1bWUgd2hlbiBhbGwgaXRlbXMKICAgICAgICBoYXZlIGJlZW4gcHJvY2Vzc2VkIChtZWFuaW5nIHRoYXQgYSB0YXNrX2RvbmUoKSBjYWxsIHdhcyByZWNlaXZlZAogICAgICAgIGZvciBldmVyeSBpdGVtIHRoYXQgaGFkIGJlZW4gcHV0KCkgaW50byB0aGUgcXVldWUpLgoKICAgICAgICBSYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gdGhlcmUgd2VyZSBpdGVtcwogICAgICAgIHBsYWNlZCBpbiB0aGUgcXVldWUuCiAgICAgICAgJycnCiAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICB1bmZpbmlzaGVkID0gc2VsZi51bmZpbmlzaGVkX3Rhc2tzIC0gMQogICAgICAgICAgICBpZiB1bmZpbmlzaGVkIDw9IDA6CiAgICAgICAgICAgICAgICBpZiB1bmZpbmlzaGVkIDwgMDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0YXNrX2RvbmUoKSBjYWxsZWQgdG9vIG1hbnkgdGltZXMnKQogICAgICAgICAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5ub3RpZnlfYWxsKCkKICAgICAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzID0gdW5maW5pc2hlZAoKICAgIGRlZiBqb2luKHNlbGYpOgogICAgICAgICcnJ0Jsb2NrcyB1bnRpbCBhbGwgaXRlbXMgaW4gdGhlIFF1ZXVlIGhhdmUgYmVlbiBnb3R0ZW4gYW5kIHByb2Nlc3NlZC4KCiAgICAgICAgVGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZ29lcyB1cCB3aGVuZXZlciBhbiBpdGVtIGlzIGFkZGVkIHRvIHRoZQogICAgICAgIHF1ZXVlLiBUaGUgY291bnQgZ29lcyBkb3duIHdoZW5ldmVyIGEgY29uc3VtZXIgdGhyZWFkIGNhbGxzIHRhc2tfZG9uZSgpCiAgICAgICAgdG8gaW5kaWNhdGUgdGhlIGl0ZW0gd2FzIHJldHJpZXZlZCBhbmQgYWxsIHdvcmsgb24gaXQgaXMgY29tcGxldGUuCgogICAgICAgIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywgam9pbigpIHVuYmxvY2tzLgogICAgICAgICcnJwogICAgICAgIHdpdGggc2VsZi5hbGxfdGFza3NfZG9uZToKICAgICAgICAgICAgd2hpbGUgc2VsZi51bmZpbmlzaGVkX3Rhc2tzOgogICAgICAgICAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS53YWl0KCkKCiAgICBkZWYgcXNpemUoc2VsZik6CiAgICAgICAgJycnUmV0dXJuIHRoZSBhcHByb3hpbWF0ZSBzaXplIG9mIHRoZSBxdWV1ZSAobm90IHJlbGlhYmxlISkuJycnCiAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcXNpemUoKQoKICAgIGRlZiBlbXB0eShzZWxmKToKICAgICAgICAnJydSZXR1cm4gVHJ1ZSBpZiB0aGUgcXVldWUgaXMgZW1wdHksIEZhbHNlIG90aGVyd2lzZSAobm90IHJlbGlhYmxlISkuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGxpa2VseSB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQuICBVc2UgcXNpemUoKSA9PSAwCiAgICAgICAgYXMgYSBkaXJlY3Qgc3Vic3RpdHV0ZSwgYnV0IGJlIGF3YXJlIHRoYXQgZWl0aGVyIGFwcHJvYWNoIHJpc2tzIGEgcmFjZQogICAgICAgIGNvbmRpdGlvbiB3aGVyZSBhIHF1ZXVlIGNhbiBncm93IGJlZm9yZSB0aGUgcmVzdWx0IG9mIGVtcHR5KCkgb3IKICAgICAgICBxc2l6ZSgpIGNhbiBiZSB1c2VkLgoKICAgICAgICBUbyBjcmVhdGUgY29kZSB0aGF0IG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBxdWV1ZWQgdGFza3MgdG8gYmUKICAgICAgICBjb21wbGV0ZWQsIHRoZSBwcmVmZXJyZWQgdGVjaG5pcXVlIGlzIHRvIHVzZSB0aGUgam9pbigpIG1ldGhvZC4KICAgICAgICAnJycKICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fcXNpemUoKQoKICAgIGRlZiBmdWxsKHNlbGYpOgogICAgICAgICcnJ1JldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50LiAgVXNlIHFzaXplKCkgPj0gbgogICAgICAgIGFzIGEgZGlyZWN0IHN1YnN0aXR1dGUsIGJ1dCBiZSBhd2FyZSB0aGF0IGVpdGhlciBhcHByb2FjaCByaXNrcyBhIHJhY2UKICAgICAgICBjb25kaXRpb24gd2hlcmUgYSBxdWV1ZSBjYW4gc2hyaW5rIGJlZm9yZSB0aGUgcmVzdWx0IG9mIGZ1bGwoKSBvcgogICAgICAgIHFzaXplKCkgY2FuIGJlIHVzZWQuCiAgICAgICAgJycnCiAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICByZXR1cm4gMCA8IHNlbGYubWF4c2l6ZSA8PSBzZWxmLl9xc2l6ZSgpCgogICAgZGVmIHB1dChzZWxmLCBpdGVtLCBibG9jaz1UcnVlLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICcnJ1B1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlLgoKICAgICAgICBJZiBvcHRpb25hbCBhcmdzICdibG9jaycgaXMgdHJ1ZSBhbmQgJ3RpbWVvdXQnIGlzIE5vbmUgKHRoZSBkZWZhdWx0KSwKICAgICAgICBibG9jayBpZiBuZWNlc3NhcnkgdW50aWwgYSBmcmVlIHNsb3QgaXMgYXZhaWxhYmxlLiBJZiAndGltZW91dCcgaXMKICAgICAgICBhIG5vbi1uZWdhdGl2ZSBudW1iZXIsIGl0IGJsb2NrcyBhdCBtb3N0ICd0aW1lb3V0JyBzZWNvbmRzIGFuZCByYWlzZXMKICAgICAgICB0aGUgRnVsbCBleGNlcHRpb24gaWYgbm8gZnJlZSBzbG90IHdhcyBhdmFpbGFibGUgd2l0aGluIHRoYXQgdGltZS4KICAgICAgICBPdGhlcndpc2UgKCdibG9jaycgaXMgZmFsc2UpLCBwdXQgYW4gaXRlbSBvbiB0aGUgcXVldWUgaWYgYSBmcmVlIHNsb3QKICAgICAgICBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsIGVsc2UgcmFpc2UgdGhlIEZ1bGwgZXhjZXB0aW9uICgndGltZW91dCcKICAgICAgICBpcyBpZ25vcmVkIGluIHRoYXQgY2FzZSkuCiAgICAgICAgJycnCiAgICAgICAgd2l0aCBzZWxmLm5vdF9mdWxsOgogICAgICAgICAgICBpZiBzZWxmLm1heHNpemUgPiAwOgogICAgICAgICAgICAgICAgaWYgbm90IGJsb2NrOgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3FzaXplKCkgPj0gc2VsZi5tYXhzaXplOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBGdWxsCiAgICAgICAgICAgICAgICBlbGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ub3RfZnVsbC53YWl0KCkKICAgICAgICAgICAgICAgIGVsaWYgdGltZW91dCA8IDA6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3RpbWVvdXQnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyIikKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IHRpbWUoKSArIHRpbWVvdXQKICAgICAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZW5kdGltZSAtIHRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMC4wOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRnVsbAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5vdF9mdWxsLndhaXQocmVtYWluaW5nKQogICAgICAgICAgICBzZWxmLl9wdXQoaXRlbSkKICAgICAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzICs9IDEKICAgICAgICAgICAgc2VsZi5ub3RfZW1wdHkubm90aWZ5KCkKCiAgICBkZWYgZ2V0KHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgJycnUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS4KCiAgICAgICAgSWYgb3B0aW9uYWwgYXJncyAnYmxvY2snIGlzIHRydWUgYW5kICd0aW1lb3V0JyBpcyBOb25lICh0aGUgZGVmYXVsdCksCiAgICAgICAgYmxvY2sgaWYgbmVjZXNzYXJ5IHVudGlsIGFuIGl0ZW0gaXMgYXZhaWxhYmxlLiBJZiAndGltZW91dCcgaXMKICAgICAgICBhIG5vbi1uZWdhdGl2ZSBudW1iZXIsIGl0IGJsb2NrcyBhdCBtb3N0ICd0aW1lb3V0JyBzZWNvbmRzIGFuZCByYWlzZXMKICAgICAgICB0aGUgRW1wdHkgZXhjZXB0aW9uIGlmIG5vIGl0ZW0gd2FzIGF2YWlsYWJsZSB3aXRoaW4gdGhhdCB0aW1lLgogICAgICAgIE90aGVyd2lzZSAoJ2Jsb2NrJyBpcyBmYWxzZSksIHJldHVybiBhbiBpdGVtIGlmIG9uZSBpcyBpbW1lZGlhdGVseQogICAgICAgIGF2YWlsYWJsZSwgZWxzZSByYWlzZSB0aGUgRW1wdHkgZXhjZXB0aW9uICgndGltZW91dCcgaXMgaWdub3JlZAogICAgICAgIGluIHRoYXQgY2FzZSkuCiAgICAgICAgJycnCiAgICAgICAgd2l0aCBzZWxmLm5vdF9lbXB0eToKICAgICAgICAgICAgaWYgbm90IGJsb2NrOgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3FzaXplKCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW1wdHkKICAgICAgICAgICAgZWxpZiB0aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fcXNpemUoKToKICAgICAgICAgICAgICAgICAgICBzZWxmLm5vdF9lbXB0eS53YWl0KCkKICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIid0aW1lb3V0JyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlciIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbmR0aW1lID0gdGltZSgpICsgdGltZW91dAogICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3FzaXplKCk6CiAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZW5kdGltZSAtIHRpbWUoKQogICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA8PSAwLjA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CiAgICAgICAgICAgICAgICAgICAgc2VsZi5ub3RfZW1wdHkud2FpdChyZW1haW5pbmcpCiAgICAgICAgICAgIGl0ZW0gPSBzZWxmLl9nZXQoKQogICAgICAgICAgICBzZWxmLm5vdF9mdWxsLm5vdGlmeSgpCiAgICAgICAgICAgIHJldHVybiBpdGVtCgogICAgZGVmIHB1dF9ub3dhaXQoc2VsZiwgaXRlbSk6CiAgICAgICAgJycnUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KCiAgICAgICAgT25seSBlbnF1ZXVlIHRoZSBpdGVtIGlmIGEgZnJlZSBzbG90IGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4KICAgICAgICBPdGhlcndpc2UgcmFpc2UgdGhlIEZ1bGwgZXhjZXB0aW9uLgogICAgICAgICcnJwogICAgICAgIHJldHVybiBzZWxmLnB1dChpdGVtLCBibG9jaz1GYWxzZSkKCiAgICBkZWYgZ2V0X25vd2FpdChzZWxmKToKICAgICAgICAnJydSZW1vdmUgYW5kIHJldHVybiBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlIHdpdGhvdXQgYmxvY2tpbmcuCgogICAgICAgIE9ubHkgZ2V0IGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gT3RoZXJ3aXNlCiAgICAgICAgcmFpc2UgdGhlIEVtcHR5IGV4Y2VwdGlvbi4KICAgICAgICAnJycKICAgICAgICByZXR1cm4gc2VsZi5nZXQoYmxvY2s9RmFsc2UpCgogICAgIyBPdmVycmlkZSB0aGVzZSBtZXRob2RzIHRvIGltcGxlbWVudCBvdGhlciBxdWV1ZSBvcmdhbml6YXRpb25zCiAgICAjIChlLmcuIHN0YWNrIG9yIHByaW9yaXR5IHF1ZXVlKS4KICAgICMgVGhlc2Ugd2lsbCBvbmx5IGJlIGNhbGxlZCB3aXRoIGFwcHJvcHJpYXRlIGxvY2tzIGhlbGQKCiAgICAjIEluaXRpYWxpemUgdGhlIHF1ZXVlIHJlcHJlc2VudGF0aW9uCiAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgc2VsZi5xdWV1ZSA9IGRlcXVlKCkKCiAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5xdWV1ZSkKCiAgICAjIFB1dCBhIG5ldyBpdGVtIGluIHRoZSBxdWV1ZQogICAgZGVmIF9wdXQoc2VsZiwgaXRlbSk6CiAgICAgICAgc2VsZi5xdWV1ZS5hcHBlbmQoaXRlbSkKCiAgICAjIEdldCBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlCiAgICBkZWYgX2dldChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5xdWV1ZS5wb3BsZWZ0KCkKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKHR5cGVzLkdlbmVyaWNBbGlhcykKCgpjbGFzcyBQcmlvcml0eVF1ZXVlKFF1ZXVlKToKICAgICcnJ1ZhcmlhbnQgb2YgUXVldWUgdGhhdCByZXRyaWV2ZXMgb3BlbiBlbnRyaWVzIGluIHByaW9yaXR5IG9yZGVyIChsb3dlc3QgZmlyc3QpLgoKICAgIEVudHJpZXMgYXJlIHR5cGljYWxseSB0dXBsZXMgb2YgdGhlIGZvcm06ICAocHJpb3JpdHkgbnVtYmVyLCBkYXRhKS4KICAgICcnJwoKICAgIGRlZiBfaW5pdChzZWxmLCBtYXhzaXplKToKICAgICAgICBzZWxmLnF1ZXVlID0gW10KCiAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5xdWV1ZSkKCiAgICBkZWYgX3B1dChzZWxmLCBpdGVtKToKICAgICAgICBoZWFwcHVzaChzZWxmLnF1ZXVlLCBpdGVtKQoKICAgIGRlZiBfZ2V0KHNlbGYpOgogICAgICAgIHJldHVybiBoZWFwcG9wKHNlbGYucXVldWUpCgoKY2xhc3MgTGlmb1F1ZXVlKFF1ZXVlKToKICAgICcnJ1ZhcmlhbnQgb2YgUXVldWUgdGhhdCByZXRyaWV2ZXMgbW9zdCByZWNlbnRseSBhZGRlZCBlbnRyaWVzIGZpcnN0LicnJwoKICAgIGRlZiBfaW5pdChzZWxmLCBtYXhzaXplKToKICAgICAgICBzZWxmLnF1ZXVlID0gW10KCiAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5xdWV1ZSkKCiAgICBkZWYgX3B1dChzZWxmLCBpdGVtKToKICAgICAgICBzZWxmLnF1ZXVlLmFwcGVuZChpdGVtKQoKICAgIGRlZiBfZ2V0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnF1ZXVlLnBvcCgpCgoKY2xhc3MgX1B5U2ltcGxlUXVldWU6CiAgICAnJydTaW1wbGUsIHVuYm91bmRlZCBGSUZPIHF1ZXVlLgoKICAgIFRoaXMgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gaXMgbm90IHJlZW50cmFudC4KICAgICcnJwogICAgIyBOb3RlOiB3aGlsZSB0aGlzIHB1cmUgUHl0aG9uIHZlcnNpb24gcHJvdmlkZXMgZmFpcm5lc3MKICAgICMgKGJ5IHVzaW5nIGEgdGhyZWFkaW5nLlNlbWFwaG9yZSB3aGljaCBpcyBpdHNlbGYgZmFpciwgYmVpbmcgYmFzZWQKICAgICMgIG9uIHRocmVhZGluZy5Db25kaXRpb24pLCBmYWlybmVzcyBpcyBub3QgcGFydCBvZiB0aGUgQVBJIGNvbnRyYWN0LgogICAgIyBUaGlzIGFsbG93cyB0aGUgQyB2ZXJzaW9uIHRvIHVzZSBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbi4KCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fcXVldWUgPSBkZXF1ZSgpCiAgICAgICAgc2VsZi5fY291bnQgPSB0aHJlYWRpbmcuU2VtYXBob3JlKDApCgogICAgZGVmIHB1dChzZWxmLCBpdGVtLCBibG9jaz1UcnVlLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICcnJ1B1dCB0aGUgaXRlbSBvbiB0aGUgcXVldWUuCgogICAgICAgIFRoZSBvcHRpb25hbCAnYmxvY2snIGFuZCAndGltZW91dCcgYXJndW1lbnRzIGFyZSBpZ25vcmVkLCBhcyB0aGlzIG1ldGhvZAogICAgICAgIG5ldmVyIGJsb2Nrcy4gIFRoZXkgYXJlIHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFF1ZXVlIGNsYXNzLgogICAgICAgICcnJwogICAgICAgIHNlbGYuX3F1ZXVlLmFwcGVuZChpdGVtKQogICAgICAgIHNlbGYuX2NvdW50LnJlbGVhc2UoKQoKICAgIGRlZiBnZXQoc2VsZiwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKICAgICAgICAnJydSZW1vdmUgYW5kIHJldHVybiBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlLgoKICAgICAgICBJZiBvcHRpb25hbCBhcmdzICdibG9jaycgaXMgdHJ1ZSBhbmQgJ3RpbWVvdXQnIGlzIE5vbmUgKHRoZSBkZWZhdWx0KSwKICAgICAgICBibG9jayBpZiBuZWNlc3NhcnkgdW50aWwgYW4gaXRlbSBpcyBhdmFpbGFibGUuIElmICd0aW1lb3V0JyBpcwogICAgICAgIGEgbm9uLW5lZ2F0aXZlIG51bWJlciwgaXQgYmxvY2tzIGF0IG1vc3QgJ3RpbWVvdXQnIHNlY29uZHMgYW5kIHJhaXNlcwogICAgICAgIHRoZSBFbXB0eSBleGNlcHRpb24gaWYgbm8gaXRlbSB3YXMgYXZhaWxhYmxlIHdpdGhpbiB0aGF0IHRpbWUuCiAgICAgICAgT3RoZXJ3aXNlICgnYmxvY2snIGlzIGZhbHNlKSwgcmV0dXJuIGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5CiAgICAgICAgYXZhaWxhYmxlLCBlbHNlIHJhaXNlIHRoZSBFbXB0eSBleGNlcHRpb24gKCd0aW1lb3V0JyBpcyBpZ25vcmVkCiAgICAgICAgaW4gdGhhdCBjYXNlKS4KICAgICAgICAnJycKICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3RpbWVvdXQnIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyIikKICAgICAgICBpZiBub3Qgc2VsZi5fY291bnQuYWNxdWlyZShibG9jaywgdGltZW91dCk6CiAgICAgICAgICAgIHJhaXNlIEVtcHR5CiAgICAgICAgcmV0dXJuIHNlbGYuX3F1ZXVlLnBvcGxlZnQoKQoKICAgIGRlZiBwdXRfbm93YWl0KHNlbGYsIGl0ZW0pOgogICAgICAgICcnJ1B1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlIHdpdGhvdXQgYmxvY2tpbmcuCgogICAgICAgIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBwdXQoaXRlbSwgYmxvY2s9RmFsc2UpYCBhbmQgaXMgb25seSBwcm92aWRlZAogICAgICAgIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFF1ZXVlIGNsYXNzLgogICAgICAgICcnJwogICAgICAgIHJldHVybiBzZWxmLnB1dChpdGVtLCBibG9jaz1GYWxzZSkKCiAgICBkZWYgZ2V0X25vd2FpdChzZWxmKToKICAgICAgICAnJydSZW1vdmUgYW5kIHJldHVybiBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlIHdpdGhvdXQgYmxvY2tpbmcuCgogICAgICAgIE9ubHkgZ2V0IGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gT3RoZXJ3aXNlCiAgICAgICAgcmFpc2UgdGhlIEVtcHR5IGV4Y2VwdGlvbi4KICAgICAgICAnJycKICAgICAgICByZXR1cm4gc2VsZi5nZXQoYmxvY2s9RmFsc2UpCgogICAgZGVmIGVtcHR5KHNlbGYpOgogICAgICAgICcnJ1JldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4nJycKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3F1ZXVlKSA9PSAwCgogICAgZGVmIHFzaXplKHNlbGYpOgogICAgICAgICcnJ1JldHVybiB0aGUgYXBwcm94aW1hdGUgc2l6ZSBvZiB0aGUgcXVldWUgKG5vdCByZWxpYWJsZSEpLicnJwogICAgICAgIHJldHVybiBsZW4oc2VsZi5fcXVldWUpCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZCh0eXBlcy5HZW5lcmljQWxpYXMpCgoKaWYgU2ltcGxlUXVldWUgaXMgTm9uZToKICAgIFNpbXBsZVF1ZXVlID0gX1B5U2ltcGxlUXVldWUKUEsDBBQAAAAAAAIgo1bNrMUXZBwAAGQcAAAJAAAAcXVvcHJpLnB5IyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKCiIiIkNvbnZlcnNpb25zIHRvL2Zyb20gcXVvdGVkLXByaW50YWJsZSB0cmFuc3BvcnQgZW5jb2RpbmcgYXMgcGVyIFJGQyAxNTIxLiIiIgoKIyAoRGVjIDE5OTEgdmVyc2lvbikuCgpfX2FsbF9fID0gWyJlbmNvZGUiLCAiZGVjb2RlIiwgImVuY29kZXN0cmluZyIsICJkZWNvZGVzdHJpbmciXQoKRVNDQVBFID0gYic9JwpNQVhMSU5FU0laRSA9IDc2CkhFWCA9IGInMDEyMzQ1Njc4OUFCQ0RFRicKRU1QVFlTVFJJTkcgPSBiJycKCnRyeToKICAgIGZyb20gYmluYXNjaWkgaW1wb3J0IGEyYl9xcCwgYjJhX3FwCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGEyYl9xcCA9IE5vbmUKICAgIGIyYV9xcCA9IE5vbmUKCgpkZWYgbmVlZHNxdW90aW5nKGMsIHF1b3RldGFicywgaGVhZGVyKToKICAgICIiIkRlY2lkZSB3aGV0aGVyIGEgcGFydGljdWxhciBieXRlIG9yZGluYWwgbmVlZHMgdG8gYmUgcXVvdGVkLgoKICAgIFRoZSAncXVvdGV0YWJzJyBmbGFnIGluZGljYXRlcyB3aGV0aGVyIGVtYmVkZGVkIHRhYnMgYW5kIHNwYWNlcyBzaG91bGQgYmUKICAgIHF1b3RlZC4gIE5vdGUgdGhhdCBsaW5lLWVuZGluZyB0YWJzIGFuZCBzcGFjZXMgYXJlIGFsd2F5cyBlbmNvZGVkLCBhcyBwZXIKICAgIFJGQyAxNTIxLgogICAgIiIiCiAgICBhc3NlcnQgaXNpbnN0YW5jZShjLCBieXRlcykKICAgIGlmIGMgaW4gYicgXHQnOgogICAgICAgIHJldHVybiBxdW90ZXRhYnMKICAgICMgaWYgaGVhZGVyLCB3ZSBoYXZlIHRvIGVzY2FwZSBfIGJlY2F1c2UgXyBpcyB1c2VkIHRvIGVzY2FwZSBzcGFjZQogICAgaWYgYyA9PSBiJ18nOgogICAgICAgIHJldHVybiBoZWFkZXIKICAgIHJldHVybiBjID09IEVTQ0FQRSBvciBub3QgKGInICcgPD0gYyA8PSBiJ34nKQoKZGVmIHF1b3RlKGMpOgogICAgIiIiUXVvdGUgYSBzaW5nbGUgY2hhcmFjdGVyLiIiIgogICAgYXNzZXJ0IGlzaW5zdGFuY2UoYywgYnl0ZXMpIGFuZCBsZW4oYyk9PTEKICAgIGMgPSBvcmQoYykKICAgIHJldHVybiBFU0NBUEUgKyBieXRlcygoSEVYW2MvLzE2XSwgSEVYW2MlMTZdKSkKCgoKZGVmIGVuY29kZShpbnB1dCwgb3V0cHV0LCBxdW90ZXRhYnMsIGhlYWRlcj1GYWxzZSk6CiAgICAiIiJSZWFkICdpbnB1dCcsIGFwcGx5IHF1b3RlZC1wcmludGFibGUgZW5jb2RpbmcsIGFuZCB3cml0ZSB0byAnb3V0cHV0Jy4KCiAgICAnaW5wdXQnIGFuZCAnb3V0cHV0JyBhcmUgYmluYXJ5IGZpbGUgb2JqZWN0cy4gVGhlICdxdW90ZXRhYnMnIGZsYWcKICAgIGluZGljYXRlcyB3aGV0aGVyIGVtYmVkZGVkIHRhYnMgYW5kIHNwYWNlcyBzaG91bGQgYmUgcXVvdGVkLiBOb3RlIHRoYXQKICAgIGxpbmUtZW5kaW5nIHRhYnMgYW5kIHNwYWNlcyBhcmUgYWx3YXlzIGVuY29kZWQsIGFzIHBlciBSRkMgMTUyMS4KICAgIFRoZSAnaGVhZGVyJyBmbGFnIGluZGljYXRlcyB3aGV0aGVyIHdlIGFyZSBlbmNvZGluZyBzcGFjZXMgYXMgXyBhcyBwZXIgUkZDCiAgICAxNTIyLiIiIgoKICAgIGlmIGIyYV9xcCBpcyBub3QgTm9uZToKICAgICAgICBkYXRhID0gaW5wdXQucmVhZCgpCiAgICAgICAgb2RhdGEgPSBiMmFfcXAoZGF0YSwgcXVvdGV0YWJzPXF1b3RldGFicywgaGVhZGVyPWhlYWRlcikKICAgICAgICBvdXRwdXQud3JpdGUob2RhdGEpCiAgICAgICAgcmV0dXJuCgogICAgZGVmIHdyaXRlKHMsIG91dHB1dD1vdXRwdXQsIGxpbmVFbmQ9YidcbicpOgogICAgICAgICMgUkZDIDE1MjEgcmVxdWlyZXMgdGhhdCB0aGUgbGluZSBlbmRpbmcgaW4gYSBzcGFjZSBvciB0YWIgbXVzdCBoYXZlCiAgICAgICAgIyB0aGF0IHRyYWlsaW5nIGNoYXJhY3RlciBlbmNvZGVkLgogICAgICAgIGlmIHMgYW5kIHNbLTE6XSBpbiBiJyBcdCc6CiAgICAgICAgICAgIG91dHB1dC53cml0ZShzWzotMV0gKyBxdW90ZShzWy0xOl0pICsgbGluZUVuZCkKICAgICAgICBlbGlmIHMgPT0gYicuJzoKICAgICAgICAgICAgb3V0cHV0LndyaXRlKHF1b3RlKHMpICsgbGluZUVuZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBvdXRwdXQud3JpdGUocyArIGxpbmVFbmQpCgogICAgcHJldmxpbmUgPSBOb25lCiAgICB3aGlsZSAxOgogICAgICAgIGxpbmUgPSBpbnB1dC5yZWFkbGluZSgpCiAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgb3V0bGluZSA9IFtdCiAgICAgICAgIyBTdHJpcCBvZmYgYW55IHJlYWRsaW5lIGluZHVjZWQgdHJhaWxpbmcgbmV3bGluZQogICAgICAgIHN0cmlwcGVkID0gYicnCiAgICAgICAgaWYgbGluZVstMTpdID09IGInXG4nOgogICAgICAgICAgICBsaW5lID0gbGluZVs6LTFdCiAgICAgICAgICAgIHN0cmlwcGVkID0gYidcbicKICAgICAgICAjIENhbGN1bGF0ZSB0aGUgdW4tbGVuZ3RoLWxpbWl0ZWQgZW5jb2RlZCBsaW5lCiAgICAgICAgZm9yIGMgaW4gbGluZToKICAgICAgICAgICAgYyA9IGJ5dGVzKChjLCkpCiAgICAgICAgICAgIGlmIG5lZWRzcXVvdGluZyhjLCBxdW90ZXRhYnMsIGhlYWRlcik6CiAgICAgICAgICAgICAgICBjID0gcXVvdGUoYykKICAgICAgICAgICAgaWYgaGVhZGVyIGFuZCBjID09IGInICc6CiAgICAgICAgICAgICAgICBvdXRsaW5lLmFwcGVuZChiJ18nKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgb3V0bGluZS5hcHBlbmQoYykKICAgICAgICAjIEZpcnN0LCB3cml0ZSBvdXQgdGhlIHByZXZpb3VzIGxpbmUKICAgICAgICBpZiBwcmV2bGluZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgd3JpdGUocHJldmxpbmUpCiAgICAgICAgIyBOb3cgc2VlIGlmIHdlIG5lZWQgYW55IHNvZnQgbGluZSBicmVha3MgYmVjYXVzZSBvZiBSRkMtaW1wb3NlZAogICAgICAgICMgbGVuZ3RoIGxpbWl0YXRpb25zLiAgVGhlbiBkbyB0aGUgdGhpc2xpbmUtPnByZXZsaW5lIGRhbmNlLgogICAgICAgIHRoaXNsaW5lID0gRU1QVFlTVFJJTkcuam9pbihvdXRsaW5lKQogICAgICAgIHdoaWxlIGxlbih0aGlzbGluZSkgPiBNQVhMSU5FU0laRToKICAgICAgICAgICAgIyBEb24ndCBmb3JnZXQgdG8gaW5jbHVkZSB0aGUgc29mdCBsaW5lIGJyZWFrIGA9JyBzaWduIGluIHRoZQogICAgICAgICAgICAjIGxlbmd0aCBjYWxjdWxhdGlvbiEKICAgICAgICAgICAgd3JpdGUodGhpc2xpbmVbOk1BWExJTkVTSVpFLTFdLCBsaW5lRW5kPWInPVxuJykKICAgICAgICAgICAgdGhpc2xpbmUgPSB0aGlzbGluZVtNQVhMSU5FU0laRS0xOl0KICAgICAgICAjIFdyaXRlIG91dCB0aGUgY3VycmVudCBsaW5lCiAgICAgICAgcHJldmxpbmUgPSB0aGlzbGluZQogICAgIyBXcml0ZSBvdXQgdGhlIGxhc3QgbGluZSwgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUKICAgIGlmIHByZXZsaW5lIGlzIG5vdCBOb25lOgogICAgICAgIHdyaXRlKHByZXZsaW5lLCBsaW5lRW5kPXN0cmlwcGVkKQoKZGVmIGVuY29kZXN0cmluZyhzLCBxdW90ZXRhYnM9RmFsc2UsIGhlYWRlcj1GYWxzZSk6CiAgICBpZiBiMmFfcXAgaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIGIyYV9xcChzLCBxdW90ZXRhYnM9cXVvdGV0YWJzLCBoZWFkZXI9aGVhZGVyKQogICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogICAgaW5mcCA9IEJ5dGVzSU8ocykKICAgIG91dGZwID0gQnl0ZXNJTygpCiAgICBlbmNvZGUoaW5mcCwgb3V0ZnAsIHF1b3RldGFicywgaGVhZGVyKQogICAgcmV0dXJuIG91dGZwLmdldHZhbHVlKCkKCgoKZGVmIGRlY29kZShpbnB1dCwgb3V0cHV0LCBoZWFkZXI9RmFsc2UpOgogICAgIiIiUmVhZCAnaW5wdXQnLCBhcHBseSBxdW90ZWQtcHJpbnRhYmxlIGRlY29kaW5nLCBhbmQgd3JpdGUgdG8gJ291dHB1dCcuCiAgICAnaW5wdXQnIGFuZCAnb3V0cHV0JyBhcmUgYmluYXJ5IGZpbGUgb2JqZWN0cy4KICAgIElmICdoZWFkZXInIGlzIHRydWUsIGRlY29kZSB1bmRlcnNjb3JlIGFzIHNwYWNlIChwZXIgUkZDIDE1MjIpLiIiIgoKICAgIGlmIGEyYl9xcCBpcyBub3QgTm9uZToKICAgICAgICBkYXRhID0gaW5wdXQucmVhZCgpCiAgICAgICAgb2RhdGEgPSBhMmJfcXAoZGF0YSwgaGVhZGVyPWhlYWRlcikKICAgICAgICBvdXRwdXQud3JpdGUob2RhdGEpCiAgICAgICAgcmV0dXJuCgogICAgbmV3ID0gYicnCiAgICB3aGlsZSAxOgogICAgICAgIGxpbmUgPSBpbnB1dC5yZWFkbGluZSgpCiAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCiAgICAgICAgaSwgbiA9IDAsIGxlbihsaW5lKQogICAgICAgIGlmIG4gPiAwIGFuZCBsaW5lW24tMTpuXSA9PSBiJ1xuJzoKICAgICAgICAgICAgcGFydGlhbCA9IDA7IG4gPSBuLTEKICAgICAgICAgICAgIyBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgIHdoaWxlIG4gPiAwIGFuZCBsaW5lW24tMTpuXSBpbiBiIiBcdFxyIjoKICAgICAgICAgICAgICAgIG4gPSBuLTEKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXJ0aWFsID0gMQogICAgICAgIHdoaWxlIGkgPCBuOgogICAgICAgICAgICBjID0gbGluZVtpOmkrMV0KICAgICAgICAgICAgaWYgYyA9PSBiJ18nIGFuZCBoZWFkZXI6CiAgICAgICAgICAgICAgICBuZXcgPSBuZXcgKyBiJyAnOyBpID0gaSsxCiAgICAgICAgICAgIGVsaWYgYyAhPSBFU0NBUEU6CiAgICAgICAgICAgICAgICBuZXcgPSBuZXcgKyBjOyBpID0gaSsxCiAgICAgICAgICAgIGVsaWYgaSsxID09IG4gYW5kIG5vdCBwYXJ0aWFsOgogICAgICAgICAgICAgICAgcGFydGlhbCA9IDE7IGJyZWFrCiAgICAgICAgICAgIGVsaWYgaSsxIDwgbiBhbmQgbGluZVtpKzE6aSsyXSA9PSBFU0NBUEU6CiAgICAgICAgICAgICAgICBuZXcgPSBuZXcgKyBFU0NBUEU7IGkgPSBpKzIKICAgICAgICAgICAgZWxpZiBpKzIgPCBuIGFuZCBpc2hleChsaW5lW2krMTppKzJdKSBhbmQgaXNoZXgobGluZVtpKzI6aSszXSk6CiAgICAgICAgICAgICAgICBuZXcgPSBuZXcgKyBieXRlcygodW5oZXgobGluZVtpKzE6aSszXSksKSk7IGkgPSBpKzMKICAgICAgICAgICAgZWxzZTogIyBCYWQgZXNjYXBlIHNlcXVlbmNlIC0tIGxlYXZlIGl0IGluCiAgICAgICAgICAgICAgICBuZXcgPSBuZXcgKyBjOyBpID0gaSsxCiAgICAgICAgaWYgbm90IHBhcnRpYWw6CiAgICAgICAgICAgIG91dHB1dC53cml0ZShuZXcgKyBiJ1xuJykKICAgICAgICAgICAgbmV3ID0gYicnCiAgICBpZiBuZXc6CiAgICAgICAgb3V0cHV0LndyaXRlKG5ldykKCmRlZiBkZWNvZGVzdHJpbmcocywgaGVhZGVyPUZhbHNlKToKICAgIGlmIGEyYl9xcCBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gYTJiX3FwKHMsIGhlYWRlcj1oZWFkZXIpCiAgICBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAgICBpbmZwID0gQnl0ZXNJTyhzKQogICAgb3V0ZnAgPSBCeXRlc0lPKCkKICAgIGRlY29kZShpbmZwLCBvdXRmcCwgaGVhZGVyPWhlYWRlcikKICAgIHJldHVybiBvdXRmcC5nZXR2YWx1ZSgpCgoKCiMgT3RoZXIgaGVscGVyIGZ1bmN0aW9ucwpkZWYgaXNoZXgoYyk6CiAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgYnl0ZSBvcmRpbmFsICdjJyBpcyBhIGhleGFkZWNpbWFsIGRpZ2l0IGluIEFTQ0lJLiIiIgogICAgYXNzZXJ0IGlzaW5zdGFuY2UoYywgYnl0ZXMpCiAgICByZXR1cm4gYicwJyA8PSBjIDw9IGInOScgb3IgYidhJyA8PSBjIDw9IGInZicgb3IgYidBJyA8PSBjIDw9IGInRicKCmRlZiB1bmhleChzKToKICAgICIiIkdldCB0aGUgaW50ZWdlciB2YWx1ZSBvZiBhIGhleGFkZWNpbWFsIG51bWJlci4iIiIKICAgIGJpdHMgPSAwCiAgICBmb3IgYyBpbiBzOgogICAgICAgIGMgPSBieXRlcygoYywpKQogICAgICAgIGlmIGInMCcgPD0gYyA8PSBiJzknOgogICAgICAgICAgICBpID0gb3JkKCcwJykKICAgICAgICBlbGlmIGInYScgPD0gYyA8PSBiJ2YnOgogICAgICAgICAgICBpID0gb3JkKCdhJyktMTAKICAgICAgICBlbGlmIGInQScgPD0gYyA8PSBiJ0YnOgogICAgICAgICAgICBpID0gb3JkKGInQScpLTEwCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAibm9uLWhleCBkaWdpdCAiK3JlcHIoYykKICAgICAgICBiaXRzID0gYml0cyoxNiArIChvcmQoYykgLSBpKQogICAgcmV0dXJuIGJpdHMKCgoKZGVmIG1haW4oKToKICAgIGltcG9ydCBzeXMKICAgIGltcG9ydCBnZXRvcHQKICAgIHRyeToKICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICd0ZCcpCiAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKICAgICAgICBzeXMuc3Rkb3V0ID0gc3lzLnN0ZGVycgogICAgICAgIHByaW50KG1zZykKICAgICAgICBwcmludCgidXNhZ2U6IHF1b3ByaSBbLXQgfCAtZF0gW2ZpbGVdIC4uLiIpCiAgICAgICAgcHJpbnQoIi10OiBxdW90ZSB0YWJzIikKICAgICAgICBwcmludCgiLWQ6IGRlY29kZTsgZGVmYXVsdCBlbmNvZGUiKQogICAgICAgIHN5cy5leGl0KDIpCiAgICBkZWNvID0gRmFsc2UKICAgIHRhYnMgPSBGYWxzZQogICAgZm9yIG8sIGEgaW4gb3B0czoKICAgICAgICBpZiBvID09ICctdCc6IHRhYnMgPSBUcnVlCiAgICAgICAgaWYgbyA9PSAnLWQnOiBkZWNvID0gVHJ1ZQogICAgaWYgdGFicyBhbmQgZGVjbzoKICAgICAgICBzeXMuc3Rkb3V0ID0gc3lzLnN0ZGVycgogICAgICAgIHByaW50KCItdCBhbmQgLWQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIpCiAgICAgICAgc3lzLmV4aXQoMikKICAgIGlmIG5vdCBhcmdzOiBhcmdzID0gWyctJ10KICAgIHN0cyA9IDAKICAgIGZvciBmaWxlIGluIGFyZ3M6CiAgICAgICAgaWYgZmlsZSA9PSAnLSc6CiAgICAgICAgICAgIGZwID0gc3lzLnN0ZGluLmJ1ZmZlcgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZwID0gb3BlbihmaWxlLCAicmIiKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogY2FuJ3Qgb3BlbiAoJXMpXG4iICUgKGZpbGUsIG1zZykpCiAgICAgICAgICAgICAgICBzdHMgPSAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgZGVjbzoKICAgICAgICAgICAgICAgIGRlY29kZShmcCwgc3lzLnN0ZG91dC5idWZmZXIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbmNvZGUoZnAsIHN5cy5zdGRvdXQuYnVmZmVyLCB0YWJzKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIGZpbGUgIT0gJy0nOgogICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgaWYgc3RzOgogICAgICAgIHN5cy5leGl0KHN0cykKCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQpQSwMEFAAAAAAAAiCjVrgAYyeifQAAon0AAAkAAAByYW5kb20ucHkiIiJSYW5kb20gdmFyaWFibGUgZ2VuZXJhdG9ycy4KCiAgICBieXRlcwogICAgLS0tLS0KICAgICAgICAgICB1bmlmb3JtIGJ5dGVzICh2YWx1ZXMgYmV0d2VlbiAwIGFuZCAyNTUpCgogICAgaW50ZWdlcnMKICAgIC0tLS0tLS0tCiAgICAgICAgICAgdW5pZm9ybSB3aXRoaW4gcmFuZ2UKCiAgICBzZXF1ZW5jZXMKICAgIC0tLS0tLS0tLQogICAgICAgICAgIHBpY2sgcmFuZG9tIGVsZW1lbnQKICAgICAgICAgICBwaWNrIHJhbmRvbSBzYW1wbGUKICAgICAgICAgICBwaWNrIHdlaWdodGVkIHJhbmRvbSBzYW1wbGUKICAgICAgICAgICBnZW5lcmF0ZSByYW5kb20gcGVybXV0YXRpb24KCiAgICBkaXN0cmlidXRpb25zIG9uIHRoZSByZWFsIGxpbmU6CiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICB1bmlmb3JtCiAgICAgICAgICAgdHJpYW5ndWxhcgogICAgICAgICAgIG5vcm1hbCAoR2F1c3NpYW4pCiAgICAgICAgICAgbG9nbm9ybWFsCiAgICAgICAgICAgbmVnYXRpdmUgZXhwb25lbnRpYWwKICAgICAgICAgICBnYW1tYQogICAgICAgICAgIGJldGEKICAgICAgICAgICBwYXJldG8KICAgICAgICAgICBXZWlidWxsCgogICAgZGlzdHJpYnV0aW9ucyBvbiB0aGUgY2lyY2xlIChhbmdsZXMgMCB0byAycGkpCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICBjaXJjdWxhciB1bmlmb3JtCiAgICAgICAgICAgdm9uIE1pc2VzCgpHZW5lcmFsIG5vdGVzIG9uIHRoZSB1bmRlcmx5aW5nIE1lcnNlbm5lIFR3aXN0ZXIgY29yZSBnZW5lcmF0b3I6CgoqIFRoZSBwZXJpb2QgaXMgMioqMTk5MzctMS4KKiBJdCBpcyBvbmUgb2YgdGhlIG1vc3QgZXh0ZW5zaXZlbHkgdGVzdGVkIGdlbmVyYXRvcnMgaW4gZXhpc3RlbmNlLgoqIFRoZSByYW5kb20oKSBtZXRob2QgaXMgaW1wbGVtZW50ZWQgaW4gQywgZXhlY3V0ZXMgaW4gYSBzaW5nbGUgUHl0aG9uIHN0ZXAsCiAgYW5kIGlzLCB0aGVyZWZvcmUsIHRocmVhZHNhZmUuCgoiIiIKCiMgVHJhbnNsYXRlZCBieSBHdWlkbyB2YW4gUm9zc3VtIGZyb20gQyBzb3VyY2UgcHJvdmlkZWQgYnkKIyBBZHJpYW4gQmFkZGVsZXkuICBBZGFwdGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGZvciB1c2Ugd2l0aAojIHRoZSBNZXJzZW5uZSBUd2lzdGVyICBhbmQgb3MudXJhbmRvbSgpIGNvcmUgZ2VuZXJhdG9ycy4KCmZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4gYXMgX3dhcm4KZnJvbSBtYXRoIGltcG9ydCBsb2cgYXMgX2xvZywgZXhwIGFzIF9leHAsIHBpIGFzIF9waSwgZSBhcyBfZSwgY2VpbCBhcyBfY2VpbApmcm9tIG1hdGggaW1wb3J0IHNxcnQgYXMgX3NxcnQsIGFjb3MgYXMgX2Fjb3MsIGNvcyBhcyBfY29zLCBzaW4gYXMgX3Npbgpmcm9tIG1hdGggaW1wb3J0IHRhdSBhcyBUV09QSSwgZmxvb3IgYXMgX2Zsb29yLCBpc2Zpbml0ZSBhcyBfaXNmaW5pdGUKZnJvbSBvcyBpbXBvcnQgdXJhbmRvbSBhcyBfdXJhbmRvbQpmcm9tIF9jb2xsZWN0aW9uc19hYmMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKZnJvbSBvcGVyYXRvciBpbXBvcnQgaW5kZXggYXMgX2luZGV4CmZyb20gaXRlcnRvb2xzIGltcG9ydCBhY2N1bXVsYXRlIGFzIF9hY2N1bXVsYXRlLCByZXBlYXQgYXMgX3JlcGVhdApmcm9tIGJpc2VjdCBpbXBvcnQgYmlzZWN0IGFzIF9iaXNlY3QKaW1wb3J0IG9zIGFzIF9vcwppbXBvcnQgX3JhbmRvbQoKdHJ5OgogICAgIyBoYXNobGliIGlzIHByZXR0eSBoZWF2eSB0byBsb2FkLCB0cnkgbGVhbiBpbnRlcm5hbCBtb2R1bGUgZmlyc3QKICAgIGZyb20gX3NoYTUxMiBpbXBvcnQgc2hhNTEyIGFzIF9zaGE1MTIKZXhjZXB0IEltcG9ydEVycm9yOgogICAgIyBmYWxsYmFjayB0byBvZmZpY2lhbCBpbXBsZW1lbnRhdGlvbgogICAgZnJvbSBoYXNobGliIGltcG9ydCBzaGE1MTIgYXMgX3NoYTUxMgoKX19hbGxfXyA9IFsKICAgICJSYW5kb20iLAogICAgIlN5c3RlbVJhbmRvbSIsCiAgICAiYmV0YXZhcmlhdGUiLAogICAgImNob2ljZSIsCiAgICAiY2hvaWNlcyIsCiAgICAiZXhwb3ZhcmlhdGUiLAogICAgImdhbW1hdmFyaWF0ZSIsCiAgICAiZ2F1c3MiLAogICAgImdldHJhbmRiaXRzIiwKICAgICJnZXRzdGF0ZSIsCiAgICAibG9nbm9ybXZhcmlhdGUiLAogICAgIm5vcm1hbHZhcmlhdGUiLAogICAgInBhcmV0b3ZhcmlhdGUiLAogICAgInJhbmRieXRlcyIsCiAgICAicmFuZGludCIsCiAgICAicmFuZG9tIiwKICAgICJyYW5kcmFuZ2UiLAogICAgInNhbXBsZSIsCiAgICAic2VlZCIsCiAgICAic2V0c3RhdGUiLAogICAgInNodWZmbGUiLAogICAgInRyaWFuZ3VsYXIiLAogICAgInVuaWZvcm0iLAogICAgInZvbm1pc2VzdmFyaWF0ZSIsCiAgICAid2VpYnVsbHZhcmlhdGUiLApdCgpOVl9NQUdJQ0NPTlNUID0gNCAqIF9leHAoLTAuNSkgLyBfc3FydCgyLjApCkxPRzQgPSBfbG9nKDQuMCkKU0dfTUFHSUNDT05TVCA9IDEuMCArIF9sb2coNC41KQpCUEYgPSA1MyAgICAgICAgIyBOdW1iZXIgb2YgYml0cyBpbiBhIGZsb2F0ClJFQ0lQX0JQRiA9IDIgKiogLUJQRgpfT05FID0gMQoKCmNsYXNzIFJhbmRvbShfcmFuZG9tLlJhbmRvbSk6CiAgICAiIiJSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBiYXNlIGNsYXNzIHVzZWQgYnkgYm91bmQgbW9kdWxlIGZ1bmN0aW9ucy4KCiAgICBVc2VkIHRvIGluc3RhbnRpYXRlIGluc3RhbmNlcyBvZiBSYW5kb20gdG8gZ2V0IGdlbmVyYXRvcnMgdGhhdCBkb24ndAogICAgc2hhcmUgc3RhdGUuCgogICAgQ2xhc3MgUmFuZG9tIGNhbiBhbHNvIGJlIHN1YmNsYXNzZWQgaWYgeW91IHdhbnQgdG8gdXNlIGEgZGlmZmVyZW50IGJhc2ljCiAgICBnZW5lcmF0b3Igb2YgeW91ciBvd24gZGV2aXNpbmc6IGluIHRoYXQgY2FzZSwgb3ZlcnJpZGUgdGhlIGZvbGxvd2luZwogICAgbWV0aG9kczogIHJhbmRvbSgpLCBzZWVkKCksIGdldHN0YXRlKCksIGFuZCBzZXRzdGF0ZSgpLgogICAgT3B0aW9uYWxseSwgaW1wbGVtZW50IGEgZ2V0cmFuZGJpdHMoKSBtZXRob2Qgc28gdGhhdCByYW5kcmFuZ2UoKQogICAgY2FuIGNvdmVyIGFyYml0cmFyaWx5IGxhcmdlIHJhbmdlcy4KCiAgICAiIiIKCiAgICBWRVJTSU9OID0gMyAgICAgIyB1c2VkIGJ5IGdldHN0YXRlL3NldHN0YXRlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHg9Tm9uZSk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBpbnN0YW5jZS4KCiAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQgeCBjb250cm9scyBzZWVkaW5nLCBhcyBmb3IgUmFuZG9tLnNlZWQoKS4KICAgICAgICAiIiIKCiAgICAgICAgc2VsZi5zZWVkKHgpCiAgICAgICAgc2VsZi5nYXVzc19uZXh0ID0gTm9uZQoKICAgIGRlZiBzZWVkKHNlbGYsIGE9Tm9uZSwgdmVyc2lvbj0yKToKICAgICAgICAiIiJJbml0aWFsaXplIGludGVybmFsIHN0YXRlIGZyb20gYSBzZWVkLgoKICAgICAgICBUaGUgb25seSBzdXBwb3J0ZWQgc2VlZCB0eXBlcyBhcmUgTm9uZSwgaW50LCBmbG9hdCwKICAgICAgICBzdHIsIGJ5dGVzLCBhbmQgYnl0ZWFycmF5LgoKICAgICAgICBOb25lIG9yIG5vIGFyZ3VtZW50IHNlZWRzIGZyb20gY3VycmVudCB0aW1lIG9yIGZyb20gYW4gb3BlcmF0aW5nCiAgICAgICAgc3lzdGVtIHNwZWNpZmljIHJhbmRvbW5lc3Mgc291cmNlIGlmIGF2YWlsYWJsZS4KCiAgICAgICAgSWYgKmEqIGlzIGFuIGludCwgYWxsIGJpdHMgYXJlIHVzZWQuCgogICAgICAgIEZvciB2ZXJzaW9uIDIgKHRoZSBkZWZhdWx0KSwgYWxsIG9mIHRoZSBiaXRzIGFyZSB1c2VkIGlmICphKiBpcyBhIHN0ciwKICAgICAgICBieXRlcywgb3IgYnl0ZWFycmF5LiAgRm9yIHZlcnNpb24gMSAocHJvdmlkZWQgZm9yIHJlcHJvZHVjaW5nIHJhbmRvbQogICAgICAgIHNlcXVlbmNlcyBmcm9tIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiksIHRoZSBhbGdvcml0aG0gZm9yIHN0ciBhbmQKICAgICAgICBieXRlcyBnZW5lcmF0ZXMgYSBuYXJyb3dlciByYW5nZSBvZiBzZWVkcy4KCiAgICAgICAgIiIiCgogICAgICAgIGlmIHZlcnNpb24gPT0gMSBhbmQgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICBhID0gYS5kZWNvZGUoJ2xhdGluLTEnKSBpZiBpc2luc3RhbmNlKGEsIGJ5dGVzKSBlbHNlIGEKICAgICAgICAgICAgeCA9IG9yZChhWzBdKSA8PCA3IGlmIGEgZWxzZSAwCiAgICAgICAgICAgIGZvciBjIGluIG1hcChvcmQsIGEpOgogICAgICAgICAgICAgICAgeCA9ICgoMTAwMDAwMyAqIHgpIF4gYykgJiAweEZGRkZGRkZGRkZGRkZGRkYKICAgICAgICAgICAgeCBePSBsZW4oYSkKICAgICAgICAgICAgYSA9IC0yIGlmIHggPT0gLTEgZWxzZSB4CgogICAgICAgIGVsaWYgdmVyc2lvbiA9PSAyIGFuZCBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzLCBieXRlYXJyYXkpKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgogICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKGEgKyBfc2hhNTEyKGEpLmRpZ2VzdCgpKQoKICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGEsICh0eXBlKE5vbmUpLCBpbnQsIGZsb2F0LCBzdHIsIGJ5dGVzLCBieXRlYXJyYXkpKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUaGUgb25seSBzdXBwb3J0ZWQgc2VlZCB0eXBlcyBhcmU6IE5vbmUsXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50LCBmbG9hdCwgc3RyLCBieXRlcywgYW5kIGJ5dGVhcnJheS4nKQoKICAgICAgICBzdXBlcigpLnNlZWQoYSkKICAgICAgICBzZWxmLmdhdXNzX25leHQgPSBOb25lCgogICAgZGVmIGdldHN0YXRlKHNlbGYpOgogICAgICAgICIiIlJldHVybiBpbnRlcm5hbCBzdGF0ZTsgY2FuIGJlIHBhc3NlZCB0byBzZXRzdGF0ZSgpIGxhdGVyLiIiIgogICAgICAgIHJldHVybiBzZWxmLlZFUlNJT04sIHN1cGVyKCkuZ2V0c3RhdGUoKSwgc2VsZi5nYXVzc19uZXh0CgogICAgZGVmIHNldHN0YXRlKHNlbGYsIHN0YXRlKToKICAgICAgICAiIiJSZXN0b3JlIGludGVybmFsIHN0YXRlIGZyb20gb2JqZWN0IHJldHVybmVkIGJ5IGdldHN0YXRlKCkuIiIiCiAgICAgICAgdmVyc2lvbiA9IHN0YXRlWzBdCiAgICAgICAgaWYgdmVyc2lvbiA9PSAzOgogICAgICAgICAgICB2ZXJzaW9uLCBpbnRlcm5hbHN0YXRlLCBzZWxmLmdhdXNzX25leHQgPSBzdGF0ZQogICAgICAgICAgICBzdXBlcigpLnNldHN0YXRlKGludGVybmFsc3RhdGUpCiAgICAgICAgZWxpZiB2ZXJzaW9uID09IDI6CiAgICAgICAgICAgIHZlcnNpb24sIGludGVybmFsc3RhdGUsIHNlbGYuZ2F1c3NfbmV4dCA9IHN0YXRlCiAgICAgICAgICAgICMgSW4gdmVyc2lvbiAyLCB0aGUgc3RhdGUgd2FzIHNhdmVkIGFzIHNpZ25lZCBpbnRzLCB3aGljaCBjYXVzZXMKICAgICAgICAgICAgIyAgIGluY29uc2lzdGVuY2llcyBiZXR3ZWVuIDMyLzY0LWJpdCBzeXN0ZW1zLiBUaGUgc3RhdGUgaXMKICAgICAgICAgICAgIyAgIHJlYWxseSB1bnNpZ25lZCAzMi1iaXQgaW50cywgc28gd2UgY29udmVydCBuZWdhdGl2ZSBpbnRzIGZyb20KICAgICAgICAgICAgIyAgIHZlcnNpb24gMiB0byBwb3NpdGl2ZSBsb25ncyBmb3IgdmVyc2lvbiAzLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpbnRlcm5hbHN0YXRlID0gdHVwbGUoeCAlICgyICoqIDMyKSBmb3IgeCBpbiBpbnRlcm5hbHN0YXRlKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yIGZyb20gZQogICAgICAgICAgICBzdXBlcigpLnNldHN0YXRlKGludGVybmFsc3RhdGUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3RhdGUgd2l0aCB2ZXJzaW9uICVzIHBhc3NlZCB0byAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhbmRvbS5zZXRzdGF0ZSgpIG9mIHZlcnNpb24gJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgc2VsZi5WRVJTSU9OKSkKCgogICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyMgLS0tLSBNZXRob2RzIGJlbG93IHRoaXMgcG9pbnQgZG8gbm90IG5lZWQgdG8gYmUgb3ZlcnJpZGRlbiBvciBleHRlbmRlZAogICAgIyMgLS0tLSB3aGVuIHN1YmNsYXNzaW5nIGZvciB0aGUgcHVycG9zZSBvZiB1c2luZyBhIGRpZmZlcmVudCBjb3JlIGdlbmVyYXRvci4KCgogICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gcGlja2xlIHN1cHBvcnQgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAjIElzc3VlIDE3NDg5OiBTaW5jZSBfX3JlZHVjZV9fIHdhcyBkZWZpbmVkIHRvIGZpeCAjNzU5ODg5IHRoaXMgaXMgbm8KICAgICMgbG9uZ2VyIGNhbGxlZDsgd2UgbGVhdmUgaXQgaGVyZSBiZWNhdXNlIGl0IGhhcyBiZWVuIGhlcmUgc2luY2UgcmFuZG9tIHdhcwogICAgIyByZXdyaXR0ZW4gYmFjayBpbiAyMDAxIGFuZCB3aHkgcmlzayBicmVha2luZyBzb21ldGhpbmcuCiAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOiAgIyBmb3IgcGlja2xlCiAgICAgICAgcmV0dXJuIHNlbGYuZ2V0c3RhdGUoKQoKICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOiAgIyBmb3IgcGlja2xlCiAgICAgICAgc2VsZi5zZXRzdGF0ZShzdGF0ZSkKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sICgpLCBzZWxmLmdldHN0YXRlKCkKCgogICAgIyMgLS0tLSBpbnRlcm5hbCBzdXBwb3J0IG1ldGhvZCBmb3IgZXZlbmx5IGRpc3RyaWJ1dGVkIGludGVnZXJzIC0tLS0KCiAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAvLCAqKmt3YXJncyk6CiAgICAgICAgIiIiQ29udHJvbCBob3cgc3ViY2xhc3NlcyBnZW5lcmF0ZSByYW5kb20gaW50ZWdlcnMuCgogICAgICAgIFRoZSBhbGdvcml0aG0gYSBzdWJjbGFzcyBjYW4gdXNlIGRlcGVuZHMgb24gdGhlIHJhbmRvbSgpIGFuZC9vcgogICAgICAgIGdldHJhbmRiaXRzKCkgaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIGl0IGFuZCBkZXRlcm1pbmVzCiAgICAgICAgd2hldGhlciBpdCBjYW4gZ2VuZXJhdGUgcmFuZG9tIGludGVnZXJzIGZyb20gYXJiaXRyYXJpbHkgbGFyZ2UKICAgICAgICByYW5nZXMuCiAgICAgICAgIiIiCgogICAgICAgIGZvciBjIGluIGNscy5fX21yb19fOgogICAgICAgICAgICBpZiAnX3JhbmRiZWxvdycgaW4gYy5fX2RpY3RfXzoKICAgICAgICAgICAgICAgICMganVzdCBpbmhlcml0IGl0CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiAnZ2V0cmFuZGJpdHMnIGluIGMuX19kaWN0X186CiAgICAgICAgICAgICAgICBjbHMuX3JhbmRiZWxvdyA9IGNscy5fcmFuZGJlbG93X3dpdGhfZ2V0cmFuZGJpdHMKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlmICdyYW5kb20nIGluIGMuX19kaWN0X186CiAgICAgICAgICAgICAgICBjbHMuX3JhbmRiZWxvdyA9IGNscy5fcmFuZGJlbG93X3dpdGhvdXRfZ2V0cmFuZGJpdHMKICAgICAgICAgICAgICAgIGJyZWFrCgogICAgZGVmIF9yYW5kYmVsb3dfd2l0aF9nZXRyYW5kYml0cyhzZWxmLCBuKToKICAgICAgICAiUmV0dXJuIGEgcmFuZG9tIGludCBpbiB0aGUgcmFuZ2UgWzAsbikuICBEZWZpbmVkIGZvciBuID4gMC4iCgogICAgICAgIGdldHJhbmRiaXRzID0gc2VsZi5nZXRyYW5kYml0cwogICAgICAgIGsgPSBuLmJpdF9sZW5ndGgoKSAgIyBkb24ndCB1c2UgKG4tMSkgaGVyZSBiZWNhdXNlIG4gY2FuIGJlIDEKICAgICAgICByID0gZ2V0cmFuZGJpdHMoaykgICMgMCA8PSByIDwgMioqawogICAgICAgIHdoaWxlIHIgPj0gbjoKICAgICAgICAgICAgciA9IGdldHJhbmRiaXRzKGspCiAgICAgICAgcmV0dXJuIHIKCiAgICBkZWYgX3JhbmRiZWxvd193aXRob3V0X2dldHJhbmRiaXRzKHNlbGYsIG4sIG1heHNpemU9MTw8QlBGKToKICAgICAgICAiIiJSZXR1cm4gYSByYW5kb20gaW50IGluIHRoZSByYW5nZSBbMCxuKS4gIERlZmluZWQgZm9yIG4gPiAwLgoKICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgdXNlIGdldHJhbmRiaXRzLCBidXQgb25seSByYW5kb20uCiAgICAgICAgIiIiCgogICAgICAgIHJhbmRvbSA9IHNlbGYucmFuZG9tCiAgICAgICAgaWYgbiA+PSBtYXhzaXplOgogICAgICAgICAgICBfd2FybigiVW5kZXJseWluZyByYW5kb20oKSBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcGx5IFxuIgogICAgICAgICAgICAgICAgImVub3VnaCBiaXRzIHRvIGNob29zZSBmcm9tIGEgcG9wdWxhdGlvbiByYW5nZSB0aGlzIGxhcmdlLlxuIgogICAgICAgICAgICAgICAgIlRvIHJlbW92ZSB0aGUgcmFuZ2UgbGltaXRhdGlvbiwgYWRkIGEgZ2V0cmFuZGJpdHMoKSBtZXRob2QuIikKICAgICAgICAgICAgcmV0dXJuIF9mbG9vcihyYW5kb20oKSAqIG4pCiAgICAgICAgcmVtID0gbWF4c2l6ZSAlIG4KICAgICAgICBsaW1pdCA9IChtYXhzaXplIC0gcmVtKSAvIG1heHNpemUgICAjIGludChsaW1pdCAqIG1heHNpemUpICUgbiA9PSAwCiAgICAgICAgciA9IHJhbmRvbSgpCiAgICAgICAgd2hpbGUgciA+PSBsaW1pdDoKICAgICAgICAgICAgciA9IHJhbmRvbSgpCiAgICAgICAgcmV0dXJuIF9mbG9vcihyICogbWF4c2l6ZSkgJSBuCgogICAgX3JhbmRiZWxvdyA9IF9yYW5kYmVsb3dfd2l0aF9nZXRyYW5kYml0cwoKCiAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyMgLS0tLSBNZXRob2RzIGJlbG93IHRoaXMgcG9pbnQgZ2VuZXJhdGUgY3VzdG9tIGRpc3RyaWJ1dGlvbnMKICAgICMjIC0tLS0gYmFzZWQgb24gdGhlIG1ldGhvZHMgZGVmaW5lZCBhYm92ZS4gIFRoZXkgZG8gbm90CiAgICAjIyAtLS0tIGRpcmVjdGx5IHRvdWNoIHRoZSB1bmRlcmx5aW5nIGdlbmVyYXRvciBhbmQgb25seQogICAgIyMgLS0tLSBhY2Nlc3MgcmFuZG9tbmVzcyB0aHJvdWdoIHRoZSBtZXRob2RzOiAgcmFuZG9tKCksCiAgICAjIyAtLS0tIGdldHJhbmRiaXRzKCksIG9yIF9yYW5kYmVsb3coKS4KCgogICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gYnl0ZXMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBkZWYgcmFuZGJ5dGVzKHNlbGYsIG4pOgogICAgICAgICIiIkdlbmVyYXRlIG4gcmFuZG9tIGJ5dGVzLiIiIgogICAgICAgIHJldHVybiBzZWxmLmdldHJhbmRiaXRzKG4gKiA4KS50b19ieXRlcyhuLCAnbGl0dGxlJykKCgogICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gaW50ZWdlciBtZXRob2RzICAtLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZGVmIHJhbmRyYW5nZShzZWxmLCBzdGFydCwgc3RvcD1Ob25lLCBzdGVwPV9PTkUpOgogICAgICAgICIiIkNob29zZSBhIHJhbmRvbSBpdGVtIGZyb20gcmFuZ2Uoc3RvcCkgb3IgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSkuCgogICAgICAgIFJvdWdobHkgZXF1aXZhbGVudCB0byBgYGNob2ljZShyYW5nZShzdGFydCwgc3RvcCwgc3RlcCkpYGAgYnV0CiAgICAgICAgc3VwcG9ydHMgYXJiaXRyYXJpbHkgbGFyZ2UgcmFuZ2VzIGFuZCBpcyBvcHRpbWl6ZWQgZm9yIGNvbW1vbiBjYXNlcy4KCiAgICAgICAgIiIiCgogICAgICAgICMgVGhpcyBjb2RlIGlzIGEgYml0IG1lc3N5IHRvIG1ha2UgaXQgZmFzdCBmb3IgdGhlCiAgICAgICAgIyBjb21tb24gY2FzZSB3aGlsZSBzdGlsbCBkb2luZyBhZGVxdWF0ZSBlcnJvciBjaGVja2luZy4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGlzdGFydCA9IF9pbmRleChzdGFydCkKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICBpc3RhcnQgPSBpbnQoc3RhcnQpCiAgICAgICAgICAgIGlmIGlzdGFydCAhPSBzdGFydDoKICAgICAgICAgICAgICAgIF93YXJuKCdyYW5kcmFuZ2UoKSB3aWxsIHJhaXNlIFR5cGVFcnJvciBpbiB0aGUgZnV0dXJlJywKICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vbi1pbnRlZ2VyIGFyZyAxIGZvciByYW5kcmFuZ2UoKSIpCiAgICAgICAgICAgIF93YXJuKCdub24taW50ZWdlciBhcmd1bWVudHMgdG8gcmFuZHJhbmdlKCkgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgJwogICAgICAgICAgICAgICAgICAnc2luY2UgUHl0aG9uIDMuMTAgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIHN1YnNlcXVlbnQgJwogICAgICAgICAgICAgICAgICAndmVyc2lvbicsCiAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICBpZiBzdG9wIGlzIE5vbmU6CiAgICAgICAgICAgICMgV2UgZG9uJ3QgY2hlY2sgZm9yICJzdGVwICE9IDEiIGJlY2F1c2UgaXQgaGFzbid0IGJlZW4KICAgICAgICAgICAgIyB0eXBlIGNoZWNrZWQgYW5kIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyIHlldC4KICAgICAgICAgICAgaWYgc3RlcCBpcyBub3QgX09ORToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignTWlzc2luZyBhIG5vbi1Ob25lIHN0b3AgYXJndW1lbnQnKQogICAgICAgICAgICBpZiBpc3RhcnQgPiAwOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhbmRiZWxvdyhpc3RhcnQpCiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImVtcHR5IHJhbmdlIGZvciByYW5kcmFuZ2UoKSIpCgogICAgICAgICMgc3RvcCBhcmd1bWVudCBzdXBwbGllZC4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGlzdG9wID0gX2luZGV4KHN0b3ApCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgaXN0b3AgPSBpbnQoc3RvcCkKICAgICAgICAgICAgaWYgaXN0b3AgIT0gc3RvcDoKICAgICAgICAgICAgICAgIF93YXJuKCdyYW5kcmFuZ2UoKSB3aWxsIHJhaXNlIFR5cGVFcnJvciBpbiB0aGUgZnV0dXJlJywKICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vbi1pbnRlZ2VyIHN0b3AgZm9yIHJhbmRyYW5nZSgpIikKICAgICAgICAgICAgX3dhcm4oJ25vbi1pbnRlZ2VyIGFyZ3VtZW50cyB0byByYW5kcmFuZ2UoKSBoYXZlIGJlZW4gZGVwcmVjYXRlZCAnCiAgICAgICAgICAgICAgICAgICdzaW5jZSBQeXRob24gMy4xMCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgc3Vic2VxdWVudCAnCiAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJywKICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgIHdpZHRoID0gaXN0b3AgLSBpc3RhcnQKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlzdGVwID0gX2luZGV4KHN0ZXApCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgaXN0ZXAgPSBpbnQoc3RlcCkKICAgICAgICAgICAgaWYgaXN0ZXAgIT0gc3RlcDoKICAgICAgICAgICAgICAgIF93YXJuKCdyYW5kcmFuZ2UoKSB3aWxsIHJhaXNlIFR5cGVFcnJvciBpbiB0aGUgZnV0dXJlJywKICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vbi1pbnRlZ2VyIHN0ZXAgZm9yIHJhbmRyYW5nZSgpIikKICAgICAgICAgICAgX3dhcm4oJ25vbi1pbnRlZ2VyIGFyZ3VtZW50cyB0byByYW5kcmFuZ2UoKSBoYXZlIGJlZW4gZGVwcmVjYXRlZCAnCiAgICAgICAgICAgICAgICAgICdzaW5jZSBQeXRob24gMy4xMCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgc3Vic2VxdWVudCAnCiAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJywKICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICMgRmFzdCBwYXRoLgogICAgICAgIGlmIGlzdGVwID09IDE6CiAgICAgICAgICAgIGlmIHdpZHRoID4gMDoKICAgICAgICAgICAgICAgIHJldHVybiBpc3RhcnQgKyBzZWxmLl9yYW5kYmVsb3cod2lkdGgpCiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImVtcHR5IHJhbmdlIGZvciByYW5kcmFuZ2UoKSAoJWQsICVkLCAlZCkiICUgKGlzdGFydCwgaXN0b3AsIHdpZHRoKSkKCiAgICAgICAgIyBOb24tdW5pdCBzdGVwIGFyZ3VtZW50IHN1cHBsaWVkLgogICAgICAgIGlmIGlzdGVwID4gMDoKICAgICAgICAgICAgbiA9ICh3aWR0aCArIGlzdGVwIC0gMSkgLy8gaXN0ZXAKICAgICAgICBlbGlmIGlzdGVwIDwgMDoKICAgICAgICAgICAgbiA9ICh3aWR0aCArIGlzdGVwICsgMSkgLy8gaXN0ZXAKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ6ZXJvIHN0ZXAgZm9yIHJhbmRyYW5nZSgpIikKICAgICAgICBpZiBuIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImVtcHR5IHJhbmdlIGZvciByYW5kcmFuZ2UoKSIpCiAgICAgICAgcmV0dXJuIGlzdGFydCArIGlzdGVwICogc2VsZi5fcmFuZGJlbG93KG4pCgogICAgZGVmIHJhbmRpbnQoc2VsZiwgYSwgYik6CiAgICAgICAgIiIiUmV0dXJuIHJhbmRvbSBpbnRlZ2VyIGluIHJhbmdlIFthLCBiXSwgaW5jbHVkaW5nIGJvdGggZW5kIHBvaW50cy4KICAgICAgICAiIiIKCiAgICAgICAgcmV0dXJuIHNlbGYucmFuZHJhbmdlKGEsIGIrMSkKCgogICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2VxdWVuY2UgbWV0aG9kcyAgLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGRlZiBjaG9pY2Uoc2VsZiwgc2VxKToKICAgICAgICAiIiJDaG9vc2UgYSByYW5kb20gZWxlbWVudCBmcm9tIGEgbm9uLWVtcHR5IHNlcXVlbmNlLiIiIgoKICAgICAgICAjIEFzIGFuIGFjY29tbW9kYXRpb24gZm9yIE51bVB5LCB3ZSBkb24ndCB1c2UgImlmIG5vdCBzZXEiCiAgICAgICAgIyBiZWNhdXNlIGJvb2wobnVtcHkuYXJyYXkoKSkgcmFpc2VzIGEgVmFsdWVFcnJvci4KICAgICAgICBpZiBub3QgbGVuKHNlcSk6CiAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ0Nhbm5vdCBjaG9vc2UgZnJvbSBhbiBlbXB0eSBzZXF1ZW5jZScpCiAgICAgICAgcmV0dXJuIHNlcVtzZWxmLl9yYW5kYmVsb3cobGVuKHNlcSkpXQoKICAgIGRlZiBzaHVmZmxlKHNlbGYsIHgpOgogICAgICAgICIiIlNodWZmbGUgbGlzdCB4IGluIHBsYWNlLCBhbmQgcmV0dXJuIE5vbmUuIiIiCgogICAgICAgIHJhbmRiZWxvdyA9IHNlbGYuX3JhbmRiZWxvdwogICAgICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKDEsIGxlbih4KSkpOgogICAgICAgICAgICAjIHBpY2sgYW4gZWxlbWVudCBpbiB4WzppKzFdIHdpdGggd2hpY2ggdG8gZXhjaGFuZ2UgeFtpXQogICAgICAgICAgICBqID0gcmFuZGJlbG93KGkgKyAxKQogICAgICAgICAgICB4W2ldLCB4W2pdID0geFtqXSwgeFtpXQoKICAgIGRlZiBzYW1wbGUoc2VsZiwgcG9wdWxhdGlvbiwgaywgKiwgY291bnRzPU5vbmUpOgogICAgICAgICIiIkNob29zZXMgayB1bmlxdWUgcmFuZG9tIGVsZW1lbnRzIGZyb20gYSBwb3B1bGF0aW9uIHNlcXVlbmNlLgoKICAgICAgICBSZXR1cm5zIGEgbmV3IGxpc3QgY29udGFpbmluZyBlbGVtZW50cyBmcm9tIHRoZSBwb3B1bGF0aW9uIHdoaWxlCiAgICAgICAgbGVhdmluZyB0aGUgb3JpZ2luYWwgcG9wdWxhdGlvbiB1bmNoYW5nZWQuICBUaGUgcmVzdWx0aW5nIGxpc3QgaXMKICAgICAgICBpbiBzZWxlY3Rpb24gb3JkZXIgc28gdGhhdCBhbGwgc3ViLXNsaWNlcyB3aWxsIGFsc28gYmUgdmFsaWQgcmFuZG9tCiAgICAgICAgc2FtcGxlcy4gIFRoaXMgYWxsb3dzIHJhZmZsZSB3aW5uZXJzICh0aGUgc2FtcGxlKSB0byBiZSBwYXJ0aXRpb25lZAogICAgICAgIGludG8gZ3JhbmQgcHJpemUgYW5kIHNlY29uZCBwbGFjZSB3aW5uZXJzICh0aGUgc3Vic2xpY2VzKS4KCiAgICAgICAgTWVtYmVycyBvZiB0aGUgcG9wdWxhdGlvbiBuZWVkIG5vdCBiZSBoYXNoYWJsZSBvciB1bmlxdWUuICBJZiB0aGUKICAgICAgICBwb3B1bGF0aW9uIGNvbnRhaW5zIHJlcGVhdHMsIHRoZW4gZWFjaCBvY2N1cnJlbmNlIGlzIGEgcG9zc2libGUKICAgICAgICBzZWxlY3Rpb24gaW4gdGhlIHNhbXBsZS4KCiAgICAgICAgUmVwZWF0ZWQgZWxlbWVudHMgY2FuIGJlIHNwZWNpZmllZCBvbmUgYXQgYSB0aW1lIG9yIHdpdGggdGhlIG9wdGlvbmFsCiAgICAgICAgY291bnRzIHBhcmFtZXRlci4gIEZvciBleGFtcGxlOgoKICAgICAgICAgICAgc2FtcGxlKFsncmVkJywgJ2JsdWUnXSwgY291bnRzPVs0LCAyXSwgaz01KQoKICAgICAgICBpcyBlcXVpdmFsZW50IHRvOgoKICAgICAgICAgICAgc2FtcGxlKFsncmVkJywgJ3JlZCcsICdyZWQnLCAncmVkJywgJ2JsdWUnLCAnYmx1ZSddLCBrPTUpCgogICAgICAgIFRvIGNob29zZSBhIHNhbXBsZSBmcm9tIGEgcmFuZ2Ugb2YgaW50ZWdlcnMsIHVzZSByYW5nZSgpIGZvciB0aGUKICAgICAgICBwb3B1bGF0aW9uIGFyZ3VtZW50LiAgVGhpcyBpcyBlc3BlY2lhbGx5IGZhc3QgYW5kIHNwYWNlIGVmZmljaWVudAogICAgICAgIGZvciBzYW1wbGluZyBmcm9tIGEgbGFyZ2UgcG9wdWxhdGlvbjoKCiAgICAgICAgICAgIHNhbXBsZShyYW5nZSgxMDAwMDAwMCksIDYwKQoKICAgICAgICAiIiIKCiAgICAgICAgIyBTYW1wbGluZyB3aXRob3V0IHJlcGxhY2VtZW50IGVudGFpbHMgdHJhY2tpbmcgZWl0aGVyIHBvdGVudGlhbAogICAgICAgICMgc2VsZWN0aW9ucyAodGhlIHBvb2wpIGluIGEgbGlzdCBvciBwcmV2aW91cyBzZWxlY3Rpb25zIGluIGEgc2V0LgoKICAgICAgICAjIFdoZW4gdGhlIG51bWJlciBvZiBzZWxlY3Rpb25zIGlzIHNtYWxsIGNvbXBhcmVkIHRvIHRoZQogICAgICAgICMgcG9wdWxhdGlvbiwgdGhlbiB0cmFja2luZyBzZWxlY3Rpb25zIGlzIGVmZmljaWVudCwgcmVxdWlyaW5nCiAgICAgICAgIyBvbmx5IGEgc21hbGwgc2V0IGFuZCBhbiBvY2Nhc2lvbmFsIHJlc2VsZWN0aW9uLiAgRm9yCiAgICAgICAgIyBhIGxhcmdlciBudW1iZXIgb2Ygc2VsZWN0aW9ucywgdGhlIHBvb2wgdHJhY2tpbmcgbWV0aG9kIGlzCiAgICAgICAgIyBwcmVmZXJyZWQgc2luY2UgdGhlIGxpc3QgdGFrZXMgbGVzcyBzcGFjZSB0aGFuIHRoZQogICAgICAgICMgc2V0IGFuZCBpdCBkb2Vzbid0IHN1ZmZlciBmcm9tIGZyZXF1ZW50IHJlc2VsZWN0aW9ucy4KCiAgICAgICAgIyBUaGUgbnVtYmVyIG9mIGNhbGxzIHRvIF9yYW5kYmVsb3coKSBpcyBrZXB0IGF0IG9yIG5lYXIgaywgdGhlCiAgICAgICAgIyB0aGVvcmV0aWNhbCBtaW5pbXVtLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBydW5uaW5nIHRpbWUKICAgICAgICAjIGlzIGRvbWluYXRlZCBieSBfcmFuZGJlbG93KCkgYW5kIGJlY2F1c2UgaXQgZXh0cmFjdHMgdGhlCiAgICAgICAgIyBsZWFzdCBlbnRyb3B5IGZyb20gdGhlIHVuZGVybHlpbmcgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JzLgoKICAgICAgICAjIE1lbW9yeSByZXF1aXJlbWVudHMgYXJlIGtlcHQgdG8gdGhlIHNtYWxsZXIgb2YgYSBrLWxlbmd0aAogICAgICAgICMgc2V0IG9yIGFuIG4tbGVuZ3RoIGxpc3QuCgogICAgICAgICMgVGhlcmUgYXJlIG90aGVyIHNhbXBsaW5nIGFsZ29yaXRobXMgdGhhdCBkbyBub3QgcmVxdWlyZQogICAgICAgICMgYXV4aWxpYXJ5IG1lbW9yeSwgYnV0IHRoZXkgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZXkgbWFkZQogICAgICAgICMgdG9vIG1hbnkgY2FsbHMgdG8gX3JhbmRiZWxvdygpLCBtYWtpbmcgdGhlbSBzbG93ZXIgYW5kCiAgICAgICAgIyBjYXVzaW5nIHRoZW0gdG8gZWF0IG1vcmUgZW50cm9weSB0aGFuIG5lY2Vzc2FyeS4KCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocG9wdWxhdGlvbiwgX1NlcXVlbmNlKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJQb3B1bGF0aW9uIG11c3QgYmUgYSBzZXF1ZW5jZS4gICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGb3IgZGljdHMgb3Igc2V0cywgdXNlIHNvcnRlZChkKS4iKQogICAgICAgIG4gPSBsZW4ocG9wdWxhdGlvbikKICAgICAgICBpZiBjb3VudHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGN1bV9jb3VudHMgPSBsaXN0KF9hY2N1bXVsYXRlKGNvdW50cykpCiAgICAgICAgICAgIGlmIGxlbihjdW1fY291bnRzKSAhPSBuOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGhlIG51bWJlciBvZiBjb3VudHMgZG9lcyBub3QgbWF0Y2ggdGhlIHBvcHVsYXRpb24nKQogICAgICAgICAgICB0b3RhbCA9IGN1bV9jb3VudHMucG9wKCkKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodG90YWwsIGludCk6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0NvdW50cyBtdXN0IGJlIGludGVnZXJzJykKICAgICAgICAgICAgaWYgdG90YWwgPD0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RvdGFsIG9mIGNvdW50cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvJykKICAgICAgICAgICAgc2VsZWN0aW9ucyA9IHNlbGYuc2FtcGxlKHJhbmdlKHRvdGFsKSwgaz1rKQogICAgICAgICAgICBiaXNlY3QgPSBfYmlzZWN0CiAgICAgICAgICAgIHJldHVybiBbcG9wdWxhdGlvbltiaXNlY3QoY3VtX2NvdW50cywgcyldIGZvciBzIGluIHNlbGVjdGlvbnNdCiAgICAgICAgcmFuZGJlbG93ID0gc2VsZi5fcmFuZGJlbG93CiAgICAgICAgaWYgbm90IDAgPD0gayA8PSBuOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJTYW1wbGUgbGFyZ2VyIHRoYW4gcG9wdWxhdGlvbiBvciBpcyBuZWdhdGl2ZSIpCiAgICAgICAgcmVzdWx0ID0gW05vbmVdICogawogICAgICAgIHNldHNpemUgPSAyMSAgICAgICAgIyBzaXplIG9mIGEgc21hbGwgc2V0IG1pbnVzIHNpemUgb2YgYW4gZW1wdHkgbGlzdAogICAgICAgIGlmIGsgPiA1OgogICAgICAgICAgICBzZXRzaXplICs9IDQgKiogX2NlaWwoX2xvZyhrICogMywgNCkpICAjIHRhYmxlIHNpemUgZm9yIGJpZyBzZXRzCiAgICAgICAgaWYgbiA8PSBzZXRzaXplOgogICAgICAgICAgICAjIEFuIG4tbGVuZ3RoIGxpc3QgaXMgc21hbGxlciB0aGFuIGEgay1sZW5ndGggc2V0LgogICAgICAgICAgICAjIEludmFyaWFudDogIG5vbi1zZWxlY3RlZCBhdCBwb29sWzAgOiBuLWldCiAgICAgICAgICAgIHBvb2wgPSBsaXN0KHBvcHVsYXRpb24pCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGspOgogICAgICAgICAgICAgICAgaiA9IHJhbmRiZWxvdyhuIC0gaSkKICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IHBvb2xbal0KICAgICAgICAgICAgICAgIHBvb2xbal0gPSBwb29sW24gLSBpIC0gMV0gICMgbW92ZSBub24tc2VsZWN0ZWQgaXRlbSBpbnRvIHZhY2FuY3kKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxlY3RlZCA9IHNldCgpCiAgICAgICAgICAgIHNlbGVjdGVkX2FkZCA9IHNlbGVjdGVkLmFkZAogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShrKToKICAgICAgICAgICAgICAgIGogPSByYW5kYmVsb3cobikKICAgICAgICAgICAgICAgIHdoaWxlIGogaW4gc2VsZWN0ZWQ6CiAgICAgICAgICAgICAgICAgICAgaiA9IHJhbmRiZWxvdyhuKQogICAgICAgICAgICAgICAgc2VsZWN0ZWRfYWRkKGopCiAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBwb3B1bGF0aW9uW2pdCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBjaG9pY2VzKHNlbGYsIHBvcHVsYXRpb24sIHdlaWdodHM9Tm9uZSwgKiwgY3VtX3dlaWdodHM9Tm9uZSwgaz0xKToKICAgICAgICAiIiJSZXR1cm4gYSBrIHNpemVkIGxpc3Qgb2YgcG9wdWxhdGlvbiBlbGVtZW50cyBjaG9zZW4gd2l0aCByZXBsYWNlbWVudC4KCiAgICAgICAgSWYgdGhlIHJlbGF0aXZlIHdlaWdodHMgb3IgY3VtdWxhdGl2ZSB3ZWlnaHRzIGFyZSBub3Qgc3BlY2lmaWVkLAogICAgICAgIHRoZSBzZWxlY3Rpb25zIGFyZSBtYWRlIHdpdGggZXF1YWwgcHJvYmFiaWxpdHkuCgogICAgICAgICIiIgogICAgICAgIHJhbmRvbSA9IHNlbGYucmFuZG9tCiAgICAgICAgbiA9IGxlbihwb3B1bGF0aW9uKQogICAgICAgIGlmIGN1bV93ZWlnaHRzIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHdlaWdodHMgaXMgTm9uZToKICAgICAgICAgICAgICAgIGZsb29yID0gX2Zsb29yCiAgICAgICAgICAgICAgICBuICs9IDAuMCAgICAjIGNvbnZlcnQgdG8gZmxvYXQgZm9yIGEgc21hbGwgc3BlZWQgaW1wcm92ZW1lbnQKICAgICAgICAgICAgICAgIHJldHVybiBbcG9wdWxhdGlvbltmbG9vcihyYW5kb20oKSAqIG4pXSBmb3IgaSBpbiBfcmVwZWF0KE5vbmUsIGspXQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBjdW1fd2VpZ2h0cyA9IGxpc3QoX2FjY3VtdWxhdGUod2VpZ2h0cykpCiAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh3ZWlnaHRzLCBpbnQpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICBrID0gd2VpZ2h0cwogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgIGYnVGhlIG51bWJlciBvZiBjaG9pY2VzIG11c3QgYmUgYSBrZXl3b3JkIGFyZ3VtZW50OiB7az19JwogICAgICAgICAgICAgICAgKSBmcm9tIE5vbmUKICAgICAgICBlbGlmIHdlaWdodHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IHNwZWNpZnkgYm90aCB3ZWlnaHRzIGFuZCBjdW11bGF0aXZlIHdlaWdodHMnKQogICAgICAgIGlmIGxlbihjdW1fd2VpZ2h0cykgIT0gbjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGhlIG51bWJlciBvZiB3ZWlnaHRzIGRvZXMgbm90IG1hdGNoIHRoZSBwb3B1bGF0aW9uJykKICAgICAgICB0b3RhbCA9IGN1bV93ZWlnaHRzWy0xXSArIDAuMCAgICMgY29udmVydCB0byBmbG9hdAogICAgICAgIGlmIHRvdGFsIDw9IDAuMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVG90YWwgb2Ygd2VpZ2h0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvJykKICAgICAgICBpZiBub3QgX2lzZmluaXRlKHRvdGFsKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVG90YWwgb2Ygd2VpZ2h0cyBtdXN0IGJlIGZpbml0ZScpCiAgICAgICAgYmlzZWN0ID0gX2Jpc2VjdAogICAgICAgIGhpID0gbiAtIDEKICAgICAgICByZXR1cm4gW3BvcHVsYXRpb25bYmlzZWN0KGN1bV93ZWlnaHRzLCByYW5kb20oKSAqIHRvdGFsLCAwLCBoaSldCiAgICAgICAgICAgICAgICBmb3IgaSBpbiBfcmVwZWF0KE5vbmUsIGspXQoKCiAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSByZWFsLXZhbHVlZCBkaXN0cmlidXRpb25zICAtLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZGVmIHVuaWZvcm0oc2VsZiwgYSwgYik6CiAgICAgICAgIkdldCBhIHJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFthLCBiKSBvciBbYSwgYl0gZGVwZW5kaW5nIG9uIHJvdW5kaW5nLiIKICAgICAgICByZXR1cm4gYSArIChiIC0gYSkgKiBzZWxmLnJhbmRvbSgpCgogICAgZGVmIHRyaWFuZ3VsYXIoc2VsZiwgbG93PTAuMCwgaGlnaD0xLjAsIG1vZGU9Tm9uZSk6CiAgICAgICAgIiIiVHJpYW5ndWxhciBkaXN0cmlidXRpb24uCgogICAgICAgIENvbnRpbnVvdXMgZGlzdHJpYnV0aW9uIGJvdW5kZWQgYnkgZ2l2ZW4gbG93ZXIgYW5kIHVwcGVyIGxpbWl0cywKICAgICAgICBhbmQgaGF2aW5nIGEgZ2l2ZW4gbW9kZSB2YWx1ZSBpbi1iZXR3ZWVuLgoKICAgICAgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RyaWFuZ3VsYXJfZGlzdHJpYnV0aW9uCgogICAgICAgICIiIgogICAgICAgIHUgPSBzZWxmLnJhbmRvbSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjID0gMC41IGlmIG1vZGUgaXMgTm9uZSBlbHNlIChtb2RlIC0gbG93KSAvIChoaWdoIC0gbG93KQogICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKICAgICAgICAgICAgcmV0dXJuIGxvdwogICAgICAgIGlmIHUgPiBjOgogICAgICAgICAgICB1ID0gMS4wIC0gdQogICAgICAgICAgICBjID0gMS4wIC0gYwogICAgICAgICAgICBsb3csIGhpZ2ggPSBoaWdoLCBsb3cKICAgICAgICByZXR1cm4gbG93ICsgKGhpZ2ggLSBsb3cpICogX3NxcnQodSAqIGMpCgogICAgZGVmIG5vcm1hbHZhcmlhdGUoc2VsZiwgbXU9MC4wLCBzaWdtYT0xLjApOgogICAgICAgICIiIk5vcm1hbCBkaXN0cmlidXRpb24uCgogICAgICAgIG11IGlzIHRoZSBtZWFuLCBhbmQgc2lnbWEgaXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4KCiAgICAgICAgIiIiCiAgICAgICAgIyBVc2VzIEtpbmRlcm1hbiBhbmQgTW9uYWhhbiBtZXRob2QuIFJlZmVyZW5jZTogS2luZGVybWFuLAogICAgICAgICMgQS5KLiBhbmQgTW9uYWhhbiwgSi5GLiwgIkNvbXB1dGVyIGdlbmVyYXRpb24gb2YgcmFuZG9tCiAgICAgICAgIyB2YXJpYWJsZXMgdXNpbmcgdGhlIHJhdGlvIG9mIHVuaWZvcm0gZGV2aWF0ZXMiLCBBQ00gVHJhbnMKICAgICAgICAjIE1hdGggU29mdHdhcmUsIDMsICgxOTc3KSwgcHAyNTctMjYwLgoKICAgICAgICByYW5kb20gPSBzZWxmLnJhbmRvbQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHUxID0gcmFuZG9tKCkKICAgICAgICAgICAgdTIgPSAxLjAgLSByYW5kb20oKQogICAgICAgICAgICB6ID0gTlZfTUFHSUNDT05TVCAqICh1MSAtIDAuNSkgLyB1MgogICAgICAgICAgICB6eiA9IHogKiB6IC8gNC4wCiAgICAgICAgICAgIGlmIHp6IDw9IC1fbG9nKHUyKToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgcmV0dXJuIG11ICsgeiAqIHNpZ21hCgogICAgZGVmIGdhdXNzKHNlbGYsIG11PTAuMCwgc2lnbWE9MS4wKToKICAgICAgICAiIiJHYXVzc2lhbiBkaXN0cmlidXRpb24uCgogICAgICAgIG11IGlzIHRoZSBtZWFuLCBhbmQgc2lnbWEgaXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4gIFRoaXMgaXMKICAgICAgICBzbGlnaHRseSBmYXN0ZXIgdGhhbiB0aGUgbm9ybWFsdmFyaWF0ZSgpIGZ1bmN0aW9uLgoKICAgICAgICBOb3QgdGhyZWFkLXNhZmUgd2l0aG91dCBhIGxvY2sgYXJvdW5kIGNhbGxzLgoKICAgICAgICAiIiIKICAgICAgICAjIFdoZW4geCBhbmQgeSBhcmUgdHdvIHZhcmlhYmxlcyBmcm9tIFswLCAxKSwgdW5pZm9ybWx5CiAgICAgICAgIyBkaXN0cmlidXRlZCwgdGhlbgogICAgICAgICMKICAgICAgICAjICAgIGNvcygyKnBpKngpKnNxcnQoLTIqbG9nKDEteSkpCiAgICAgICAgIyAgICBzaW4oMipwaSp4KSpzcXJ0KC0yKmxvZygxLXkpKQogICAgICAgICMKICAgICAgICAjIGFyZSB0d28gKmluZGVwZW5kZW50KiB2YXJpYWJsZXMgd2l0aCBub3JtYWwgZGlzdHJpYnV0aW9uCiAgICAgICAgIyAobXUgPSAwLCBzaWdtYSA9IDEpLgogICAgICAgICMgKExhbWJlcnQgTWVlcnRlbnMpCiAgICAgICAgIyAoY29ycmVjdGVkIHZlcnNpb247IGJ1ZyBkaXNjb3ZlcmVkIGJ5IE1pa2UgTWlsbGVyLCBmaXhlZCBieSBMTSkKCiAgICAgICAgIyBNdWx0aXRocmVhZGluZyBub3RlOiBXaGVuIHR3byB0aHJlYWRzIGNhbGwgdGhpcyBmdW5jdGlvbgogICAgICAgICMgc2ltdWx0YW5lb3VzbHksIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhleSB3aWxsIHJlY2VpdmUgdGhlCiAgICAgICAgIyBzYW1lIHJldHVybiB2YWx1ZS4gIFRoZSB3aW5kb3cgaXMgdmVyeSBzbWFsbCB0aG91Z2guICBUbwogICAgICAgICMgYXZvaWQgdGhpcywgeW91IGhhdmUgdG8gdXNlIGEgbG9jayBhcm91bmQgYWxsIGNhbGxzLiAgKEkKICAgICAgICAjIGRpZG4ndCB3YW50IHRvIHNsb3cgdGhpcyBkb3duIGluIHRoZSBzZXJpYWwgY2FzZSBieSB1c2luZyBhCiAgICAgICAgIyBsb2NrIGhlcmUuKQoKICAgICAgICByYW5kb20gPSBzZWxmLnJhbmRvbQogICAgICAgIHogPSBzZWxmLmdhdXNzX25leHQKICAgICAgICBzZWxmLmdhdXNzX25leHQgPSBOb25lCiAgICAgICAgaWYgeiBpcyBOb25lOgogICAgICAgICAgICB4MnBpID0gcmFuZG9tKCkgKiBUV09QSQogICAgICAgICAgICBnMnJhZCA9IF9zcXJ0KC0yLjAgKiBfbG9nKDEuMCAtIHJhbmRvbSgpKSkKICAgICAgICAgICAgeiA9IF9jb3MoeDJwaSkgKiBnMnJhZAogICAgICAgICAgICBzZWxmLmdhdXNzX25leHQgPSBfc2luKHgycGkpICogZzJyYWQKCiAgICAgICAgcmV0dXJuIG11ICsgeiAqIHNpZ21hCgogICAgZGVmIGxvZ25vcm12YXJpYXRlKHNlbGYsIG11LCBzaWdtYSk6CiAgICAgICAgIiIiTG9nIG5vcm1hbCBkaXN0cmlidXRpb24uCgogICAgICAgIElmIHlvdSB0YWtlIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiB0aGlzIGRpc3RyaWJ1dGlvbiwgeW91J2xsIGdldCBhCiAgICAgICAgbm9ybWFsIGRpc3RyaWJ1dGlvbiB3aXRoIG1lYW4gbXUgYW5kIHN0YW5kYXJkIGRldmlhdGlvbiBzaWdtYS4KICAgICAgICBtdSBjYW4gaGF2ZSBhbnkgdmFsdWUsIGFuZCBzaWdtYSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gX2V4cChzZWxmLm5vcm1hbHZhcmlhdGUobXUsIHNpZ21hKSkKCiAgICBkZWYgZXhwb3ZhcmlhdGUoc2VsZiwgbGFtYmQpOgogICAgICAgICIiIkV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbi4KCiAgICAgICAgbGFtYmQgaXMgMS4wIGRpdmlkZWQgYnkgdGhlIGRlc2lyZWQgbWVhbi4gIEl0IHNob3VsZCBiZQogICAgICAgIG5vbnplcm8uICAoVGhlIHBhcmFtZXRlciB3b3VsZCBiZSBjYWxsZWQgImxhbWJkYSIsIGJ1dCB0aGF0IGlzCiAgICAgICAgYSByZXNlcnZlZCB3b3JkIGluIFB5dGhvbi4pICBSZXR1cm5lZCB2YWx1ZXMgcmFuZ2UgZnJvbSAwIHRvCiAgICAgICAgcG9zaXRpdmUgaW5maW5pdHkgaWYgbGFtYmQgaXMgcG9zaXRpdmUsIGFuZCBmcm9tIG5lZ2F0aXZlCiAgICAgICAgaW5maW5pdHkgdG8gMCBpZiBsYW1iZCBpcyBuZWdhdGl2ZS4KCiAgICAgICAgIiIiCiAgICAgICAgIyBsYW1iZDogcmF0ZSBsYW1iZCA9IDEvbWVhbgogICAgICAgICMgKCdsYW1iZGEnIGlzIGEgUHl0aG9uIHJlc2VydmVkIHdvcmQpCgogICAgICAgICMgd2UgdXNlIDEtcmFuZG9tKCkgaW5zdGVhZCBvZiByYW5kb20oKSB0byBwcmVjbHVkZSB0aGUKICAgICAgICAjIHBvc3NpYmlsaXR5IG9mIHRha2luZyB0aGUgbG9nIG9mIHplcm8uCiAgICAgICAgcmV0dXJuIC1fbG9nKDEuMCAtIHNlbGYucmFuZG9tKCkpIC8gbGFtYmQKCiAgICBkZWYgdm9ubWlzZXN2YXJpYXRlKHNlbGYsIG11LCBrYXBwYSk6CiAgICAgICAgIiIiQ2lyY3VsYXIgZGF0YSBkaXN0cmlidXRpb24uCgogICAgICAgIG11IGlzIHRoZSBtZWFuIGFuZ2xlLCBleHByZXNzZWQgaW4gcmFkaWFucyBiZXR3ZWVuIDAgYW5kIDIqcGksIGFuZAogICAgICAgIGthcHBhIGlzIHRoZSBjb25jZW50cmF0aW9uIHBhcmFtZXRlciwgd2hpY2ggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IKICAgICAgICBlcXVhbCB0byB6ZXJvLiAgSWYga2FwcGEgaXMgZXF1YWwgdG8gemVybywgdGhpcyBkaXN0cmlidXRpb24gcmVkdWNlcwogICAgICAgIHRvIGEgdW5pZm9ybSByYW5kb20gYW5nbGUgb3ZlciB0aGUgcmFuZ2UgMCB0byAyKnBpLgoKICAgICAgICAiIiIKICAgICAgICAjIEJhc2VkIHVwb24gYW4gYWxnb3JpdGhtIHB1Ymxpc2hlZCBpbjogRmlzaGVyLCBOLkkuLAogICAgICAgICMgIlN0YXRpc3RpY2FsIEFuYWx5c2lzIG9mIENpcmN1bGFyIERhdGEiLCBDYW1icmlkZ2UKICAgICAgICAjIFVuaXZlcnNpdHkgUHJlc3MsIDE5OTMuCgogICAgICAgICMgVGhhbmtzIHRvIE1hZ251cyBLZXNzbGVyIGZvciBhIGNvcnJlY3Rpb24gdG8gdGhlCiAgICAgICAgIyBpbXBsZW1lbnRhdGlvbiBvZiBzdGVwIDQuCgogICAgICAgIHJhbmRvbSA9IHNlbGYucmFuZG9tCiAgICAgICAgaWYga2FwcGEgPD0gMWUtNjoKICAgICAgICAgICAgcmV0dXJuIFRXT1BJICogcmFuZG9tKCkKCiAgICAgICAgcyA9IDAuNSAvIGthcHBhCiAgICAgICAgciA9IHMgKyBfc3FydCgxLjAgKyBzICogcykKCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdTEgPSByYW5kb20oKQogICAgICAgICAgICB6ID0gX2NvcyhfcGkgKiB1MSkKCiAgICAgICAgICAgIGQgPSB6IC8gKHIgKyB6KQogICAgICAgICAgICB1MiA9IHJhbmRvbSgpCiAgICAgICAgICAgIGlmIHUyIDwgMS4wIC0gZCAqIGQgb3IgdTIgPD0gKDEuMCAtIGQpICogX2V4cChkKToKICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgIHEgPSAxLjAgLyByCiAgICAgICAgZiA9IChxICsgeikgLyAoMS4wICsgcSAqIHopCiAgICAgICAgdTMgPSByYW5kb20oKQogICAgICAgIGlmIHUzID4gMC41OgogICAgICAgICAgICB0aGV0YSA9IChtdSArIF9hY29zKGYpKSAlIFRXT1BJCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGhldGEgPSAobXUgLSBfYWNvcyhmKSkgJSBUV09QSQoKICAgICAgICByZXR1cm4gdGhldGEKCiAgICBkZWYgZ2FtbWF2YXJpYXRlKHNlbGYsIGFscGhhLCBiZXRhKToKICAgICAgICAiIiJHYW1tYSBkaXN0cmlidXRpb24uICBOb3QgdGhlIGdhbW1hIGZ1bmN0aW9uIQoKICAgICAgICBDb25kaXRpb25zIG9uIHRoZSBwYXJhbWV0ZXJzIGFyZSBhbHBoYSA+IDAgYW5kIGJldGEgPiAwLgoKICAgICAgICBUaGUgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIGlzOgoKICAgICAgICAgICAgICAgICAgICB4ICoqIChhbHBoYSAtIDEpICogbWF0aC5leHAoLXggLyBiZXRhKQogICAgICAgICAgcGRmKHgpID0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAgICAgICBtYXRoLmdhbW1hKGFscGhhKSAqIGJldGEgKiogYWxwaGEKCiAgICAgICAgIiIiCiAgICAgICAgIyBhbHBoYSA+IDAsIGJldGEgPiAwLCBtZWFuIGlzIGFscGhhKmJldGEsIHZhcmlhbmNlIGlzIGFscGhhKmJldGEqKjIKCiAgICAgICAgIyBXYXJuaW5nOiBhIGZldyBvbGRlciBzb3VyY2VzIGRlZmluZSB0aGUgZ2FtbWEgZGlzdHJpYnV0aW9uIGluIHRlcm1zCiAgICAgICAgIyBvZiBhbHBoYSA+IC0xLjAKICAgICAgICBpZiBhbHBoYSA8PSAwLjAgb3IgYmV0YSA8PSAwLjA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2dhbW1hdmFyaWF0ZTogYWxwaGEgYW5kIGJldGEgbXVzdCBiZSA+IDAuMCcpCgogICAgICAgIHJhbmRvbSA9IHNlbGYucmFuZG9tCiAgICAgICAgaWYgYWxwaGEgPiAxLjA6CgogICAgICAgICAgICAjIFVzZXMgUi5DLkguIENoZW5nLCAiVGhlIGdlbmVyYXRpb24gb2YgR2FtbWEKICAgICAgICAgICAgIyB2YXJpYWJsZXMgd2l0aCBub24taW50ZWdyYWwgc2hhcGUgcGFyYW1ldGVycyIsCiAgICAgICAgICAgICMgQXBwbGllZCBTdGF0aXN0aWNzLCAoMTk3NyksIDI2LCBOby4gMSwgcDcxLTc0CgogICAgICAgICAgICBhaW52ID0gX3NxcnQoMi4wICogYWxwaGEgLSAxLjApCiAgICAgICAgICAgIGJiYiA9IGFscGhhIC0gTE9HNAogICAgICAgICAgICBjY2MgPSBhbHBoYSArIGFpbnYKCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICB1MSA9IHJhbmRvbSgpCiAgICAgICAgICAgICAgICBpZiBub3QgMWUtNyA8IHUxIDwgMC45OTk5OTk5OgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICB1MiA9IDEuMCAtIHJhbmRvbSgpCiAgICAgICAgICAgICAgICB2ID0gX2xvZyh1MSAvICgxLjAgLSB1MSkpIC8gYWludgogICAgICAgICAgICAgICAgeCA9IGFscGhhICogX2V4cCh2KQogICAgICAgICAgICAgICAgeiA9IHUxICogdTEgKiB1MgogICAgICAgICAgICAgICAgciA9IGJiYiArIGNjYyAqIHYgLSB4CiAgICAgICAgICAgICAgICBpZiByICsgU0dfTUFHSUNDT05TVCAtIDQuNSAqIHogPj0gMC4wIG9yIHIgPj0gX2xvZyh6KToKICAgICAgICAgICAgICAgICAgICByZXR1cm4geCAqIGJldGEKCiAgICAgICAgZWxpZiBhbHBoYSA9PSAxLjA6CiAgICAgICAgICAgICMgZXhwb3ZhcmlhdGUoMS9iZXRhKQogICAgICAgICAgICByZXR1cm4gLV9sb2coMS4wIC0gcmFuZG9tKCkpICogYmV0YQoKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGFscGhhIGlzIGJldHdlZW4gMCBhbmQgMSAoZXhjbHVzaXZlKQogICAgICAgICAgICAjIFVzZXMgQUxHT1JJVEhNIEdTIG9mIFN0YXRpc3RpY2FsIENvbXB1dGluZyAtIEtlbm5lZHkgJiBHZW50bGUKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIHUgPSByYW5kb20oKQogICAgICAgICAgICAgICAgYiA9IChfZSArIGFscGhhKSAvIF9lCiAgICAgICAgICAgICAgICBwID0gYiAqIHUKICAgICAgICAgICAgICAgIGlmIHAgPD0gMS4wOgogICAgICAgICAgICAgICAgICAgIHggPSBwICoqICgxLjAgLyBhbHBoYSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgeCA9IC1fbG9nKChiIC0gcCkgLyBhbHBoYSkKICAgICAgICAgICAgICAgIHUxID0gcmFuZG9tKCkKICAgICAgICAgICAgICAgIGlmIHAgPiAxLjA6CiAgICAgICAgICAgICAgICAgICAgaWYgdTEgPD0geCAqKiAoYWxwaGEgLSAxLjApOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZWxpZiB1MSA8PSBfZXhwKC14KToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICByZXR1cm4geCAqIGJldGEKCiAgICBkZWYgYmV0YXZhcmlhdGUoc2VsZiwgYWxwaGEsIGJldGEpOgogICAgICAgICIiIkJldGEgZGlzdHJpYnV0aW9uLgoKICAgICAgICBDb25kaXRpb25zIG9uIHRoZSBwYXJhbWV0ZXJzIGFyZSBhbHBoYSA+IDAgYW5kIGJldGEgPiAwLgogICAgICAgIFJldHVybmVkIHZhbHVlcyByYW5nZSBiZXR3ZWVuIDAgYW5kIDEuCgogICAgICAgICIiIgogICAgICAgICMjIFNlZQogICAgICAgICMjIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1idWdzLWxpc3QvMjAwMS1KYW51YXJ5LzAwMzc1Mi5odG1sCiAgICAgICAgIyMgZm9yIEl2YW4gRnJvaG5lJ3MgaW5zaWdodGZ1bCBhbmFseXNpcyBvZiB3aHkgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uOgogICAgICAgICMjCiAgICAgICAgIyMgICAgZGVmIGJldGF2YXJpYXRlKHNlbGYsIGFscGhhLCBiZXRhKToKICAgICAgICAjIyAgICAgICAgIyBEaXNjcmV0ZSBFdmVudCBTaW11bGF0aW9uIGluIEMsIHBwIDg3LTg4LgogICAgICAgICMjCiAgICAgICAgIyMgICAgICAgIHkgPSBzZWxmLmV4cG92YXJpYXRlKGFscGhhKQogICAgICAgICMjICAgICAgICB6ID0gc2VsZi5leHBvdmFyaWF0ZSgxLjAvYmV0YSkKICAgICAgICAjIyAgICAgICAgcmV0dXJuIHovKHkreikKICAgICAgICAjIwogICAgICAgICMjIHdhcyBkZWFkIHdyb25nLCBhbmQgaG93IGl0IHByb2JhYmx5IGdvdCB0aGF0IHdheS4KCiAgICAgICAgIyBUaGlzIHZlcnNpb24gZHVlIHRvIEphbm5lIFNpbmtrb25lbiwgYW5kIG1hdGNoZXMgYWxsIHRoZSBzdGQKICAgICAgICAjIHRleHRzIChlLmcuLCBLbnV0aCBWb2wgMiBFZCAzIHBnIDEzNCAidGhlIGJldGEgZGlzdHJpYnV0aW9uIikuCiAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLjApCiAgICAgICAgaWYgeToKICAgICAgICAgICAgcmV0dXJuIHkgLyAoeSArIHNlbGYuZ2FtbWF2YXJpYXRlKGJldGEsIDEuMCkpCiAgICAgICAgcmV0dXJuIDAuMAoKICAgIGRlZiBwYXJldG92YXJpYXRlKHNlbGYsIGFscGhhKToKICAgICAgICAiIiJQYXJldG8gZGlzdHJpYnV0aW9uLiAgYWxwaGEgaXMgdGhlIHNoYXBlIHBhcmFtZXRlci4iIiIKICAgICAgICAjIEphaW4sIHBnLiA0OTUKCiAgICAgICAgdSA9IDEuMCAtIHNlbGYucmFuZG9tKCkKICAgICAgICByZXR1cm4gdSAqKiAoLTEuMCAvIGFscGhhKQoKICAgIGRlZiB3ZWlidWxsdmFyaWF0ZShzZWxmLCBhbHBoYSwgYmV0YSk6CiAgICAgICAgIiIiV2VpYnVsbCBkaXN0cmlidXRpb24uCgogICAgICAgIGFscGhhIGlzIHRoZSBzY2FsZSBwYXJhbWV0ZXIgYW5kIGJldGEgaXMgdGhlIHNoYXBlIHBhcmFtZXRlci4KCiAgICAgICAgIiIiCiAgICAgICAgIyBKYWluLCBwZy4gNDk5OyBidWcgZml4IGNvdXJ0ZXN5IEJpbGwgQXJtcwoKICAgICAgICB1ID0gMS4wIC0gc2VsZi5yYW5kb20oKQogICAgICAgIHJldHVybiBhbHBoYSAqICgtX2xvZyh1KSkgKiogKDEuMCAvIGJldGEpCgoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIC0tLS0tLS0tLS0tLS0tLSBPcGVyYXRpbmcgU3lzdGVtIFJhbmRvbSBTb3VyY2UgIC0tLS0tLS0tLS0tLS0tLS0tLQoKCmNsYXNzIFN5c3RlbVJhbmRvbShSYW5kb20pOgogICAgIiIiQWx0ZXJuYXRlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHVzaW5nIHNvdXJjZXMgcHJvdmlkZWQKICAgIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtIChzdWNoIGFzIC9kZXYvdXJhbmRvbSBvbiBVbml4IG9yCiAgICBDcnlwdEdlblJhbmRvbSBvbiBXaW5kb3dzKS4KCiAgICAgTm90IGF2YWlsYWJsZSBvbiBhbGwgc3lzdGVtcyAoc2VlIG9zLnVyYW5kb20oKSBmb3IgZGV0YWlscykuCgogICAgIiIiCgogICAgZGVmIHJhbmRvbShzZWxmKToKICAgICAgICAiIiJHZXQgdGhlIG5leHQgcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgMC4wIDw9IFggPCAxLjAuIiIiCiAgICAgICAgcmV0dXJuIChpbnQuZnJvbV9ieXRlcyhfdXJhbmRvbSg3KSkgPj4gMykgKiBSRUNJUF9CUEYKCiAgICBkZWYgZ2V0cmFuZGJpdHMoc2VsZiwgayk6CiAgICAgICAgIiIiZ2V0cmFuZGJpdHMoaykgLT4geC4gIEdlbmVyYXRlcyBhbiBpbnQgd2l0aCBrIHJhbmRvbSBiaXRzLiIiIgogICAgICAgIGlmIGsgPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdudW1iZXIgb2YgYml0cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpCiAgICAgICAgbnVtYnl0ZXMgPSAoayArIDcpIC8vIDggICAgICAgICAgICAgICAgICAgICAgICMgYml0cyAvIDggYW5kIHJvdW5kZWQgdXAKICAgICAgICB4ID0gaW50LmZyb21fYnl0ZXMoX3VyYW5kb20obnVtYnl0ZXMpKQogICAgICAgIHJldHVybiB4ID4+IChudW1ieXRlcyAqIDggLSBrKSAgICAgICAgICAgICAgICAjIHRyaW0gZXhjZXNzIGJpdHMKCiAgICBkZWYgcmFuZGJ5dGVzKHNlbGYsIG4pOgogICAgICAgICIiIkdlbmVyYXRlIG4gcmFuZG9tIGJ5dGVzLiIiIgogICAgICAgICMgb3MudXJhbmRvbShuKSBmYWlscyB3aXRoIFZhbHVlRXJyb3IgZm9yIG4gPCAwCiAgICAgICAgIyBhbmQgcmV0dXJucyBhbiBlbXB0eSBieXRlcyBzdHJpbmcgZm9yIG4gPT0gMC4KICAgICAgICByZXR1cm4gX3VyYW5kb20obikKCiAgICBkZWYgc2VlZChzZWxmLCAqYXJncywgKiprd2RzKToKICAgICAgICAiU3R1YiBtZXRob2QuICBOb3QgdXNlZCBmb3IgYSBzeXN0ZW0gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIF9ub3RpbXBsZW1lbnRlZChzZWxmLCAqYXJncywgKiprd2RzKToKICAgICAgICAiTWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciBhIHN5c3RlbSByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4iCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignU3lzdGVtIGVudHJvcHkgc291cmNlIGRvZXMgbm90IGhhdmUgc3RhdGUuJykKICAgIGdldHN0YXRlID0gc2V0c3RhdGUgPSBfbm90aW1wbGVtZW50ZWQKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDcmVhdGUgb25lIGluc3RhbmNlLCBzZWVkZWQgZnJvbSBjdXJyZW50IHRpbWUsIGFuZCBleHBvcnQgaXRzIG1ldGhvZHMKIyBhcyBtb2R1bGUtbGV2ZWwgZnVuY3Rpb25zLiAgVGhlIGZ1bmN0aW9ucyBzaGFyZSBzdGF0ZSBhY3Jvc3MgYWxsIHVzZXMKIyAoYm90aCBpbiB0aGUgdXNlcidzIGNvZGUgYW5kIGluIHRoZSBQeXRob24gbGlicmFyaWVzKSwgYnV0IHRoYXQncyBmaW5lCiMgZm9yIG1vc3QgcHJvZ3JhbXMgYW5kIGlzIGVhc2llciBmb3IgdGhlIGNhc3VhbCB1c2VyIHRoYW4gbWFraW5nIHRoZW0KIyBpbnN0YW50aWF0ZSB0aGVpciBvd24gUmFuZG9tKCkgaW5zdGFuY2UuCgpfaW5zdCA9IFJhbmRvbSgpCnNlZWQgPSBfaW5zdC5zZWVkCnJhbmRvbSA9IF9pbnN0LnJhbmRvbQp1bmlmb3JtID0gX2luc3QudW5pZm9ybQp0cmlhbmd1bGFyID0gX2luc3QudHJpYW5ndWxhcgpyYW5kaW50ID0gX2luc3QucmFuZGludApjaG9pY2UgPSBfaW5zdC5jaG9pY2UKcmFuZHJhbmdlID0gX2luc3QucmFuZHJhbmdlCnNhbXBsZSA9IF9pbnN0LnNhbXBsZQpzaHVmZmxlID0gX2luc3Quc2h1ZmZsZQpjaG9pY2VzID0gX2luc3QuY2hvaWNlcwpub3JtYWx2YXJpYXRlID0gX2luc3Qubm9ybWFsdmFyaWF0ZQpsb2dub3JtdmFyaWF0ZSA9IF9pbnN0LmxvZ25vcm12YXJpYXRlCmV4cG92YXJpYXRlID0gX2luc3QuZXhwb3ZhcmlhdGUKdm9ubWlzZXN2YXJpYXRlID0gX2luc3Qudm9ubWlzZXN2YXJpYXRlCmdhbW1hdmFyaWF0ZSA9IF9pbnN0LmdhbW1hdmFyaWF0ZQpnYXVzcyA9IF9pbnN0LmdhdXNzCmJldGF2YXJpYXRlID0gX2luc3QuYmV0YXZhcmlhdGUKcGFyZXRvdmFyaWF0ZSA9IF9pbnN0LnBhcmV0b3ZhcmlhdGUKd2VpYnVsbHZhcmlhdGUgPSBfaW5zdC53ZWlidWxsdmFyaWF0ZQpnZXRzdGF0ZSA9IF9pbnN0LmdldHN0YXRlCnNldHN0YXRlID0gX2luc3Quc2V0c3RhdGUKZ2V0cmFuZGJpdHMgPSBfaW5zdC5nZXRyYW5kYml0cwpyYW5kYnl0ZXMgPSBfaW5zdC5yYW5kYnl0ZXMKCgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgLS0tLS0tLS0tLS0tLS0tLS0gdGVzdCBwcm9ncmFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpkZWYgX3Rlc3RfZ2VuZXJhdG9yKG4sIGZ1bmMsIGFyZ3MpOgogICAgZnJvbSBzdGF0aXN0aWNzIGltcG9ydCBzdGRldiwgZm1lYW4gYXMgbWVhbgogICAgZnJvbSB0aW1lIGltcG9ydCBwZXJmX2NvdW50ZXIKCiAgICB0MCA9IHBlcmZfY291bnRlcigpCiAgICBkYXRhID0gW2Z1bmMoKmFyZ3MpIGZvciBpIGluIF9yZXBlYXQoTm9uZSwgbildCiAgICB0MSA9IHBlcmZfY291bnRlcigpCgogICAgeGJhciA9IG1lYW4oZGF0YSkKICAgIHNpZ21hID0gc3RkZXYoZGF0YSwgeGJhcikKICAgIGxvdyA9IG1pbihkYXRhKQogICAgaGlnaCA9IG1heChkYXRhKQoKICAgIHByaW50KGYne3QxIC0gdDA6LjNmfSBzZWMsIHtufSB0aW1lcyB7ZnVuYy5fX25hbWVfX30nKQogICAgcHJpbnQoJ2F2ZyAlZywgc3RkZGV2ICVnLCBtaW4gJWcsIG1heCAlZ1xuJyAlICh4YmFyLCBzaWdtYSwgbG93LCBoaWdoKSkKCgpkZWYgX3Rlc3QoTj0yMDAwKToKICAgIF90ZXN0X2dlbmVyYXRvcihOLCByYW5kb20sICgpKQogICAgX3Rlc3RfZ2VuZXJhdG9yKE4sIG5vcm1hbHZhcmlhdGUsICgwLjAsIDEuMCkpCiAgICBfdGVzdF9nZW5lcmF0b3IoTiwgbG9nbm9ybXZhcmlhdGUsICgwLjAsIDEuMCkpCiAgICBfdGVzdF9nZW5lcmF0b3IoTiwgdm9ubWlzZXN2YXJpYXRlLCAoMC4wLCAxLjApKQogICAgX3Rlc3RfZ2VuZXJhdG9yKE4sIGdhbW1hdmFyaWF0ZSwgKDAuMDEsIDEuMCkpCiAgICBfdGVzdF9nZW5lcmF0b3IoTiwgZ2FtbWF2YXJpYXRlLCAoMC4xLCAxLjApKQogICAgX3Rlc3RfZ2VuZXJhdG9yKE4sIGdhbW1hdmFyaWF0ZSwgKDAuMSwgMi4wKSkKICAgIF90ZXN0X2dlbmVyYXRvcihOLCBnYW1tYXZhcmlhdGUsICgwLjUsIDEuMCkpCiAgICBfdGVzdF9nZW5lcmF0b3IoTiwgZ2FtbWF2YXJpYXRlLCAoMC45LCAxLjApKQogICAgX3Rlc3RfZ2VuZXJhdG9yKE4sIGdhbW1hdmFyaWF0ZSwgKDEuMCwgMS4wKSkKICAgIF90ZXN0X2dlbmVyYXRvcihOLCBnYW1tYXZhcmlhdGUsICgyLjAsIDEuMCkpCiAgICBfdGVzdF9nZW5lcmF0b3IoTiwgZ2FtbWF2YXJpYXRlLCAoMjAuMCwgMS4wKSkKICAgIF90ZXN0X2dlbmVyYXRvcihOLCBnYW1tYXZhcmlhdGUsICgyMDAuMCwgMS4wKSkKICAgIF90ZXN0X2dlbmVyYXRvcihOLCBnYXVzcywgKDAuMCwgMS4wKSkKICAgIF90ZXN0X2dlbmVyYXRvcihOLCBiZXRhdmFyaWF0ZSwgKDMuMCwgMy4wKSkKICAgIF90ZXN0X2dlbmVyYXRvcihOLCB0cmlhbmd1bGFyLCAoMC4wLCAxLjAsIDEuMCAvIDMuMCkpCgoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMjIC0tLS0tLS0tLS0tLS0tLS0tLSBmb3JrIHN1cHBvcnQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgaGFzYXR0cihfb3MsICJmb3JrIik6CiAgICBfb3MucmVnaXN0ZXJfYXRfZm9yayhhZnRlcl9pbl9jaGlsZD1faW5zdC5zZWVkKQoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBfdGVzdCgpClBLAwQUAAAAAAACIKNWdc2+3z0VAAA9FQAACgAAAHJlcHJsaWIucHkiIiJSZWRvIHRoZSBidWlsdGluIHJlcHIoKSAocmVwcmVzZW50YXRpb24pIGJ1dCB3aXRoIGxpbWl0cyBvbiBtb3N0IHNpemVzLiIiIgoKX19hbGxfXyA9IFsiUmVwciIsICJyZXByIiwgInJlY3Vyc2l2ZV9yZXByIl0KCmltcG9ydCBidWlsdGlucwpmcm9tIGl0ZXJ0b29scyBpbXBvcnQgaXNsaWNlCmZyb20gX3RocmVhZCBpbXBvcnQgZ2V0X2lkZW50CgpkZWYgcmVjdXJzaXZlX3JlcHIoZmlsbHZhbHVlPScuLi4nKToKICAgICdEZWNvcmF0b3IgdG8gbWFrZSBhIHJlcHIgZnVuY3Rpb24gcmV0dXJuIGZpbGx2YWx1ZSBmb3IgYSByZWN1cnNpdmUgY2FsbCcKCiAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uKToKICAgICAgICByZXByX3J1bm5pbmcgPSBzZXQoKQoKICAgICAgICBkZWYgd3JhcHBlcihzZWxmKToKICAgICAgICAgICAga2V5ID0gaWQoc2VsZiksIGdldF9pZGVudCgpCiAgICAgICAgICAgIGlmIGtleSBpbiByZXByX3J1bm5pbmc6CiAgICAgICAgICAgICAgICByZXR1cm4gZmlsbHZhbHVlCiAgICAgICAgICAgIHJlcHJfcnVubmluZy5hZGQoa2V5KQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKHNlbGYpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICByZXByX3J1bm5pbmcuZGlzY2FyZChrZXkpCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICAgICAgIyBDYW4ndCB1c2UgZnVuY3Rvb2xzLndyYXBzKCkgaGVyZSBiZWNhdXNlIG9mIGJvb3RzdHJhcCBpc3N1ZXMKICAgICAgICB3cmFwcGVyLl9fbW9kdWxlX18gPSBnZXRhdHRyKHVzZXJfZnVuY3Rpb24sICdfX21vZHVsZV9fJykKICAgICAgICB3cmFwcGVyLl9fZG9jX18gPSBnZXRhdHRyKHVzZXJfZnVuY3Rpb24sICdfX2RvY19fJykKICAgICAgICB3cmFwcGVyLl9fbmFtZV9fID0gZ2V0YXR0cih1c2VyX2Z1bmN0aW9uLCAnX19uYW1lX18nKQogICAgICAgIHdyYXBwZXIuX19xdWFsbmFtZV9fID0gZ2V0YXR0cih1c2VyX2Z1bmN0aW9uLCAnX19xdWFsbmFtZV9fJykKICAgICAgICB3cmFwcGVyLl9fYW5ub3RhdGlvbnNfXyA9IGdldGF0dHIodXNlcl9mdW5jdGlvbiwgJ19fYW5ub3RhdGlvbnNfXycsIHt9KQogICAgICAgIHJldHVybiB3cmFwcGVyCgogICAgcmV0dXJuIGRlY29yYXRpbmdfZnVuY3Rpb24KCmNsYXNzIFJlcHI6CgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuZmlsbHZhbHVlID0gJy4uLicKICAgICAgICBzZWxmLm1heGxldmVsID0gNgogICAgICAgIHNlbGYubWF4dHVwbGUgPSA2CiAgICAgICAgc2VsZi5tYXhsaXN0ID0gNgogICAgICAgIHNlbGYubWF4YXJyYXkgPSA1CiAgICAgICAgc2VsZi5tYXhkaWN0ID0gNAogICAgICAgIHNlbGYubWF4c2V0ID0gNgogICAgICAgIHNlbGYubWF4ZnJvemVuc2V0ID0gNgogICAgICAgIHNlbGYubWF4ZGVxdWUgPSA2CiAgICAgICAgc2VsZi5tYXhzdHJpbmcgPSAzMAogICAgICAgIHNlbGYubWF4bG9uZyA9IDQwCiAgICAgICAgc2VsZi5tYXhvdGhlciA9IDMwCgogICAgZGVmIHJlcHIoc2VsZiwgeCk6CiAgICAgICAgcmV0dXJuIHNlbGYucmVwcjEoeCwgc2VsZi5tYXhsZXZlbCkKCiAgICBkZWYgcmVwcjEoc2VsZiwgeCwgbGV2ZWwpOgogICAgICAgIHR5cGVuYW1lID0gdHlwZSh4KS5fX25hbWVfXwogICAgICAgIGlmICcgJyBpbiB0eXBlbmFtZToKICAgICAgICAgICAgcGFydHMgPSB0eXBlbmFtZS5zcGxpdCgpCiAgICAgICAgICAgIHR5cGVuYW1lID0gJ18nLmpvaW4ocGFydHMpCiAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAncmVwcl8nICsgdHlwZW5hbWUpOgogICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCAncmVwcl8nICsgdHlwZW5hbWUpKHgsIGxldmVsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcHJfaW5zdGFuY2UoeCwgbGV2ZWwpCgogICAgZGVmIF9yZXByX2l0ZXJhYmxlKHNlbGYsIHgsIGxldmVsLCBsZWZ0LCByaWdodCwgbWF4aXRlciwgdHJhaWw9JycpOgogICAgICAgIG4gPSBsZW4oeCkKICAgICAgICBpZiBsZXZlbCA8PSAwIGFuZCBuOgogICAgICAgICAgICBzID0gc2VsZi5maWxsdmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBuZXdsZXZlbCA9IGxldmVsIC0gMQogICAgICAgICAgICByZXByMSA9IHNlbGYucmVwcjEKICAgICAgICAgICAgcGllY2VzID0gW3JlcHIxKGVsZW0sIG5ld2xldmVsKSBmb3IgZWxlbSBpbiBpc2xpY2UoeCwgbWF4aXRlcildCiAgICAgICAgICAgIGlmIG4gPiBtYXhpdGVyOgogICAgICAgICAgICAgICAgcGllY2VzLmFwcGVuZChzZWxmLmZpbGx2YWx1ZSkKICAgICAgICAgICAgcyA9ICcsICcuam9pbihwaWVjZXMpCiAgICAgICAgICAgIGlmIG4gPT0gMSBhbmQgdHJhaWw6CiAgICAgICAgICAgICAgICByaWdodCA9IHRyYWlsICsgcmlnaHQKICAgICAgICByZXR1cm4gJyVzJXMlcycgJSAobGVmdCwgcywgcmlnaHQpCgogICAgZGVmIHJlcHJfdHVwbGUoc2VsZiwgeCwgbGV2ZWwpOgogICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnKCcsICcpJywgc2VsZi5tYXh0dXBsZSwgJywnKQoKICAgIGRlZiByZXByX2xpc3Qoc2VsZiwgeCwgbGV2ZWwpOgogICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnWycsICddJywgc2VsZi5tYXhsaXN0KQoKICAgIGRlZiByZXByX2FycmF5KHNlbGYsIHgsIGxldmVsKToKICAgICAgICBpZiBub3QgeDoKICAgICAgICAgICAgcmV0dXJuICJhcnJheSgnJXMnKSIgJSB4LnR5cGVjb2RlCiAgICAgICAgaGVhZGVyID0gImFycmF5KCclcycsIFsiICUgeC50eXBlY29kZQogICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCBoZWFkZXIsICddKScsIHNlbGYubWF4YXJyYXkpCgogICAgZGVmIHJlcHJfc2V0KHNlbGYsIHgsIGxldmVsKToKICAgICAgICBpZiBub3QgeDoKICAgICAgICAgICAgcmV0dXJuICdzZXQoKScKICAgICAgICB4ID0gX3Bvc3NpYmx5X3NvcnRlZCh4KQogICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAneycsICd9Jywgc2VsZi5tYXhzZXQpCgogICAgZGVmIHJlcHJfZnJvemVuc2V0KHNlbGYsIHgsIGxldmVsKToKICAgICAgICBpZiBub3QgeDoKICAgICAgICAgICAgcmV0dXJuICdmcm96ZW5zZXQoKScKICAgICAgICB4ID0gX3Bvc3NpYmx5X3NvcnRlZCh4KQogICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnZnJvemVuc2V0KHsnLCAnfSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF4ZnJvemVuc2V0KQoKICAgIGRlZiByZXByX2RlcXVlKHNlbGYsIHgsIGxldmVsKToKICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9pdGVyYWJsZSh4LCBsZXZlbCwgJ2RlcXVlKFsnLCAnXSknLCBzZWxmLm1heGRlcXVlKQoKICAgIGRlZiByZXByX2RpY3Qoc2VsZiwgeCwgbGV2ZWwpOgogICAgICAgIG4gPSBsZW4oeCkKICAgICAgICBpZiBuID09IDA6CiAgICAgICAgICAgIHJldHVybiAne30nCiAgICAgICAgaWYgbGV2ZWwgPD0gMDoKICAgICAgICAgICAgcmV0dXJuICd7JyArIHNlbGYuZmlsbHZhbHVlICsgJ30nCiAgICAgICAgbmV3bGV2ZWwgPSBsZXZlbCAtIDEKICAgICAgICByZXByMSA9IHNlbGYucmVwcjEKICAgICAgICBwaWVjZXMgPSBbXQogICAgICAgIGZvciBrZXkgaW4gaXNsaWNlKF9wb3NzaWJseV9zb3J0ZWQoeCksIHNlbGYubWF4ZGljdCk6CiAgICAgICAgICAgIGtleXJlcHIgPSByZXByMShrZXksIG5ld2xldmVsKQogICAgICAgICAgICB2YWxyZXByID0gcmVwcjEoeFtrZXldLCBuZXdsZXZlbCkKICAgICAgICAgICAgcGllY2VzLmFwcGVuZCgnJXM6ICVzJyAlIChrZXlyZXByLCB2YWxyZXByKSkKICAgICAgICBpZiBuID4gc2VsZi5tYXhkaWN0OgogICAgICAgICAgICBwaWVjZXMuYXBwZW5kKHNlbGYuZmlsbHZhbHVlKQogICAgICAgIHMgPSAnLCAnLmpvaW4ocGllY2VzKQogICAgICAgIHJldHVybiAneyVzfScgJSAocywpCgogICAgZGVmIHJlcHJfc3RyKHNlbGYsIHgsIGxldmVsKToKICAgICAgICBzID0gYnVpbHRpbnMucmVwcih4WzpzZWxmLm1heHN0cmluZ10pCiAgICAgICAgaWYgbGVuKHMpID4gc2VsZi5tYXhzdHJpbmc6CiAgICAgICAgICAgIGkgPSBtYXgoMCwgKHNlbGYubWF4c3RyaW5nLTMpLy8yKQogICAgICAgICAgICBqID0gbWF4KDAsIHNlbGYubWF4c3RyaW5nLTMtaSkKICAgICAgICAgICAgcyA9IGJ1aWx0aW5zLnJlcHIoeFs6aV0gKyB4W2xlbih4KS1qOl0pCiAgICAgICAgICAgIHMgPSBzWzppXSArIHNlbGYuZmlsbHZhbHVlICsgc1tsZW4ocyktajpdCiAgICAgICAgcmV0dXJuIHMKCiAgICBkZWYgcmVwcl9pbnQoc2VsZiwgeCwgbGV2ZWwpOgogICAgICAgIHMgPSBidWlsdGlucy5yZXByKHgpICMgWFhYIEhvcGUgdGhpcyBpc24ndCB0b28gc2xvdy4uLgogICAgICAgIGlmIGxlbihzKSA+IHNlbGYubWF4bG9uZzoKICAgICAgICAgICAgaSA9IG1heCgwLCAoc2VsZi5tYXhsb25nLTMpLy8yKQogICAgICAgICAgICBqID0gbWF4KDAsIHNlbGYubWF4bG9uZy0zLWkpCiAgICAgICAgICAgIHMgPSBzWzppXSArIHNlbGYuZmlsbHZhbHVlICsgc1tsZW4ocyktajpdCiAgICAgICAgcmV0dXJuIHMKCiAgICBkZWYgcmVwcl9pbnN0YW5jZShzZWxmLCB4LCBsZXZlbCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzID0gYnVpbHRpbnMucmVwcih4KQogICAgICAgICAgICAjIEJ1Z3MgaW4geC5fX3JlcHJfXygpIGNhbiBjYXVzZSBhcmJpdHJhcnkKICAgICAgICAgICAgIyBleGNlcHRpb25zIC0tIHRoZW4gbWFrZSB1cCBzb21ldGhpbmcKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICByZXR1cm4gJzwlcyBpbnN0YW5jZSBhdCAlI3g+JyAlICh4Ll9fY2xhc3NfXy5fX25hbWVfXywgaWQoeCkpCiAgICAgICAgaWYgbGVuKHMpID4gc2VsZi5tYXhvdGhlcjoKICAgICAgICAgICAgaSA9IG1heCgwLCAoc2VsZi5tYXhvdGhlci0zKS8vMikKICAgICAgICAgICAgaiA9IG1heCgwLCBzZWxmLm1heG90aGVyLTMtaSkKICAgICAgICAgICAgcyA9IHNbOmldICsgc2VsZi5maWxsdmFsdWUgKyBzW2xlbihzKS1qOl0KICAgICAgICByZXR1cm4gcwoKCmRlZiBfcG9zc2libHlfc29ydGVkKHgpOgogICAgIyBTaW5jZSBub3QgYWxsIHNlcXVlbmNlcyBvZiBpdGVtcyBjYW4gYmUgc29ydGVkIGFuZCBjb21wYXJpc29uCiAgICAjIGZ1bmN0aW9ucyBtYXkgcmFpc2UgYXJiaXRyYXJ5IGV4Y2VwdGlvbnMsIHJldHVybiBhbiB1bnNvcnRlZAogICAgIyBzZXF1ZW5jZSBpbiB0aGF0IGNhc2UuCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIHNvcnRlZCh4KQogICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICByZXR1cm4gbGlzdCh4KQoKYVJlcHIgPSBSZXByKCkKcmVwciA9IGFSZXByLnJlcHIKUEsDBBQAAAAAAAIgo1aA15vTkx4AAJMeAAAOAAAAcmxjb21wbGV0ZXIucHkiIiJXb3JkIGNvbXBsZXRpb24gZm9yIEdOVSByZWFkbGluZS4KClRoZSBjb21wbGV0ZXIgY29tcGxldGVzIGtleXdvcmRzLCBidWlsdC1pbnMgYW5kIGdsb2JhbHMgaW4gYSBzZWxlY3RhYmxlCm5hbWVzcGFjZSAod2hpY2ggZGVmYXVsdHMgdG8gX19tYWluX18pOyB3aGVuIGNvbXBsZXRpbmcgTkFNRS5OQU1FLi4uLCBpdApldmFsdWF0ZXMgKCEpIHRoZSBleHByZXNzaW9uIHVwIHRvIHRoZSBsYXN0IGRvdCBhbmQgY29tcGxldGVzIGl0cyBhdHRyaWJ1dGVzLgoKSXQncyB2ZXJ5IGNvb2wgdG8gZG8gImltcG9ydCBzeXMiIHR5cGUgInN5cy4iLCBoaXQgdGhlIGNvbXBsZXRpb24ga2V5ICh0d2ljZSksCmFuZCBzZWUgdGhlIGxpc3Qgb2YgbmFtZXMgZGVmaW5lZCBieSB0aGUgc3lzIG1vZHVsZSEKClRpcDogdG8gdXNlIHRoZSB0YWIga2V5IGFzIHRoZSBjb21wbGV0aW9uIGtleSwgY2FsbAoKICAgIHJlYWRsaW5lLnBhcnNlX2FuZF9iaW5kKCJ0YWI6IGNvbXBsZXRlIikKCk5vdGVzOgoKLSBFeGNlcHRpb25zIHJhaXNlZCBieSB0aGUgY29tcGxldGVyIGZ1bmN0aW9uIGFyZSAqaWdub3JlZCogKGFuZCBnZW5lcmFsbHkgY2F1c2UKICB0aGUgY29tcGxldGlvbiB0byBmYWlsKS4gIFRoaXMgaXMgYSBmZWF0dXJlIC0tIHNpbmNlIHJlYWRsaW5lIHNldHMgdGhlIHR0eQogIGRldmljZSBpbiByYXcgKG9yIGNicmVhaykgbW9kZSwgcHJpbnRpbmcgYSB0cmFjZWJhY2sgd291bGRuJ3Qgd29yayB3ZWxsCiAgd2l0aG91dCBzb21lIGNvbXBsaWNhdGVkIGhvb3BsYSB0byBzYXZlLCByZXNldCBhbmQgcmVzdG9yZSB0aGUgdHR5IHN0YXRlLgoKLSBUaGUgZXZhbHVhdGlvbiBvZiB0aGUgTkFNRS5OQU1FLi4uIGZvcm0gbWF5IGNhdXNlIGFyYml0cmFyeSBhcHBsaWNhdGlvbgogIGRlZmluZWQgY29kZSB0byBiZSBleGVjdXRlZCBpZiBhbiBvYmplY3Qgd2l0aCBhIF9fZ2V0YXR0cl9fIGhvb2sgaXMgZm91bmQuCiAgU2luY2UgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBhcHBsaWNhdGlvbiAob3IgdGhlIHVzZXIpIHRvIGVuYWJsZSB0aGlzCiAgZmVhdHVyZSwgSSBjb25zaWRlciB0aGlzIGFuIGFjY2VwdGFibGUgcmlzay4gIE1vcmUgY29tcGxpY2F0ZWQgZXhwcmVzc2lvbnMKICAoZS5nLiBmdW5jdGlvbiBjYWxscyBvciBpbmRleGluZyBvcGVyYXRpb25zKSBhcmUgKm5vdCogZXZhbHVhdGVkLgoKLSBXaGVuIHRoZSBvcmlnaW5hbCBzdGRpbiBpcyBub3QgYSB0dHkgZGV2aWNlLCBHTlUgcmVhZGxpbmUgaXMgbmV2ZXIKICB1c2VkLCBhbmQgdGhpcyBtb2R1bGUgKGFuZCB0aGUgcmVhZGxpbmUgbW9kdWxlKSBhcmUgc2lsZW50bHkgaW5hY3RpdmUuCgoiIiIKCmltcG9ydCBhdGV4aXQKaW1wb3J0IGJ1aWx0aW5zCmltcG9ydCBpbnNwZWN0CmltcG9ydCBrZXl3b3JkCmltcG9ydCByZQppbXBvcnQgX19tYWluX18KCl9fYWxsX18gPSBbIkNvbXBsZXRlciJdCgpjbGFzcyBDb21wbGV0ZXI6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlID0gTm9uZSk6CiAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGNvbXBsZXRlciBmb3IgdGhlIGNvbW1hbmQgbGluZS4KCiAgICAgICAgQ29tcGxldGVyKFtuYW1lc3BhY2VdKSAtPiBjb21wbGV0ZXIgaW5zdGFuY2UuCgogICAgICAgIElmIHVuc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugd2hlcmUgY29tcGxldGlvbnMgYXJlIHBlcmZvcm1lZAogICAgICAgIGlzIF9fbWFpbl9fICh0ZWNobmljYWxseSwgX19tYWluX18uX19kaWN0X18pLiBOYW1lc3BhY2VzIHNob3VsZCBiZQogICAgICAgIGdpdmVuIGFzIGRpY3Rpb25hcmllcy4KCiAgICAgICAgQ29tcGxldGVyIGluc3RhbmNlcyBzaG91bGQgYmUgdXNlZCBhcyB0aGUgY29tcGxldGlvbiBtZWNoYW5pc20gb2YKICAgICAgICByZWFkbGluZSB2aWEgdGhlIHNldF9jb21wbGV0ZXIoKSBjYWxsOgoKICAgICAgICByZWFkbGluZS5zZXRfY29tcGxldGVyKENvbXBsZXRlcihteV9uYW1lc3BhY2UpLmNvbXBsZXRlKQogICAgICAgICIiIgoKICAgICAgICBpZiBuYW1lc3BhY2UgYW5kIG5vdCBpc2luc3RhbmNlKG5hbWVzcGFjZSwgZGljdCk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbmFtZXNwYWNlIG11c3QgYmUgYSBkaWN0aW9uYXJ5JykKCiAgICAgICAgIyBEb24ndCBiaW5kIHRvIG5hbWVzcGFjZSBxdWl0ZSB5ZXQsIGJ1dCBmbGFnIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgYQogICAgICAgICMgc3BlY2lmaWMgbmFtZXNwYWNlIG9yIHRvIHVzZSBfX21haW5fXy5fX2RpY3RfXy4gVGhpcyB3aWxsIGFsbG93IHVzCiAgICAgICAgIyB0byBiaW5kIHRvIF9fbWFpbl9fLl9fZGljdF9fIGF0IGNvbXBsZXRpb24gdGltZSwgbm90IG5vdy4KICAgICAgICBpZiBuYW1lc3BhY2UgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi51c2VfbWFpbl9ucyA9IDEKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnVzZV9tYWluX25zID0gMAogICAgICAgICAgICBzZWxmLm5hbWVzcGFjZSA9IG5hbWVzcGFjZQoKICAgIGRlZiBjb21wbGV0ZShzZWxmLCB0ZXh0LCBzdGF0ZSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IHBvc3NpYmxlIGNvbXBsZXRpb24gZm9yICd0ZXh0Jy4KCiAgICAgICAgVGhpcyBpcyBjYWxsZWQgc3VjY2Vzc2l2ZWx5IHdpdGggc3RhdGUgPT0gMCwgMSwgMiwgLi4uIHVudGlsIGl0CiAgICAgICAgcmV0dXJucyBOb25lLiAgVGhlIGNvbXBsZXRpb24gc2hvdWxkIGJlZ2luIHdpdGggJ3RleHQnLgoKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLnVzZV9tYWluX25zOgogICAgICAgICAgICBzZWxmLm5hbWVzcGFjZSA9IF9fbWFpbl9fLl9fZGljdF9fCgogICAgICAgIGlmIG5vdCB0ZXh0LnN0cmlwKCk6CiAgICAgICAgICAgIGlmIHN0YXRlID09IDA6CiAgICAgICAgICAgICAgICBpZiBfcmVhZGxpbmVfYXZhaWxhYmxlOgogICAgICAgICAgICAgICAgICAgIHJlYWRsaW5lLmluc2VydF90ZXh0KCdcdCcpCiAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmUucmVkaXNwbGF5KCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJycKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdcdCcKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgIGlmIHN0YXRlID09IDA6CiAgICAgICAgICAgIGlmICIuIiBpbiB0ZXh0OgogICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVzID0gc2VsZi5hdHRyX21hdGNoZXModGV4dCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYubWF0Y2hlcyA9IHNlbGYuZ2xvYmFsX21hdGNoZXModGV4dCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm1hdGNoZXNbc3RhdGVdCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIF9jYWxsYWJsZV9wb3N0Zml4KHNlbGYsIHZhbCwgd29yZCk6CiAgICAgICAgaWYgY2FsbGFibGUodmFsKToKICAgICAgICAgICAgd29yZCArPSAiKCIKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgbm90IGluc3BlY3Quc2lnbmF0dXJlKHZhbCkucGFyYW1ldGVyczoKICAgICAgICAgICAgICAgICAgICB3b3JkICs9ICIpIgogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgcmV0dXJuIHdvcmQKCiAgICBkZWYgZ2xvYmFsX21hdGNoZXMoc2VsZiwgdGV4dCk6CiAgICAgICAgIiIiQ29tcHV0ZSBtYXRjaGVzIHdoZW4gdGV4dCBpcyBhIHNpbXBsZSBuYW1lLgoKICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCBrZXl3b3JkcywgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBuYW1lcyBjdXJyZW50bHkKICAgICAgICBkZWZpbmVkIGluIHNlbGYubmFtZXNwYWNlIHRoYXQgbWF0Y2guCgogICAgICAgICIiIgogICAgICAgIG1hdGNoZXMgPSBbXQogICAgICAgIHNlZW4gPSB7Il9fYnVpbHRpbnNfXyJ9CiAgICAgICAgbiA9IGxlbih0ZXh0KQogICAgICAgIGZvciB3b3JkIGluIGtleXdvcmQua3dsaXN0ICsga2V5d29yZC5zb2Z0a3dsaXN0OgogICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSB0ZXh0OgogICAgICAgICAgICAgICAgc2Vlbi5hZGQod29yZCkKICAgICAgICAgICAgICAgIGlmIHdvcmQgaW4geydmaW5hbGx5JywgJ3RyeSd9OgogICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJzonCiAgICAgICAgICAgICAgICBlbGlmIHdvcmQgbm90IGluIHsnRmFsc2UnLCAnTm9uZScsICdUcnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdicmVhaycsICdjb250aW51ZScsICdwYXNzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbHNlJywgJ18nfToKICAgICAgICAgICAgICAgICAgICB3b3JkID0gd29yZCArICcgJwogICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQod29yZCkKICAgICAgICBmb3IgbnNwYWNlIGluIFtzZWxmLm5hbWVzcGFjZSwgYnVpbHRpbnMuX19kaWN0X19dOgogICAgICAgICAgICBmb3Igd29yZCwgdmFsIGluIG5zcGFjZS5pdGVtcygpOgogICAgICAgICAgICAgICAgaWYgd29yZFs6bl0gPT0gdGV4dCBhbmQgd29yZCBub3QgaW4gc2VlbjoKICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZCh3b3JkKQogICAgICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKHNlbGYuX2NhbGxhYmxlX3Bvc3RmaXgodmFsLCB3b3JkKSkKICAgICAgICByZXR1cm4gbWF0Y2hlcwoKICAgIGRlZiBhdHRyX21hdGNoZXMoc2VsZiwgdGV4dCk6CiAgICAgICAgIiIiQ29tcHV0ZSBtYXRjaGVzIHdoZW4gdGV4dCBjb250YWlucyBhIGRvdC4KCiAgICAgICAgQXNzdW1pbmcgdGhlIHRleHQgaXMgb2YgdGhlIGZvcm0gTkFNRS5OQU1FLi4uLltOQU1FXSwgYW5kIGlzCiAgICAgICAgZXZhbHVhYmxlIGluIHNlbGYubmFtZXNwYWNlLCBpdCB3aWxsIGJlIGV2YWx1YXRlZCBhbmQgaXRzIGF0dHJpYnV0ZXMKICAgICAgICAoYXMgcmV2ZWFsZWQgYnkgZGlyKCkpIGFyZSB1c2VkIGFzIHBvc3NpYmxlIGNvbXBsZXRpb25zLiAgKEZvciBjbGFzcwogICAgICAgIGluc3RhbmNlcywgY2xhc3MgbWVtYmVycyBhcmUgYWxzbyBjb25zaWRlcmVkLikKCiAgICAgICAgV0FSTklORzogdGhpcyBjYW4gc3RpbGwgaW52b2tlIGFyYml0cmFyeSBDIGNvZGUsIGlmIGFuIG9iamVjdAogICAgICAgIHdpdGggYSBfX2dldGF0dHJfXyBob29rIGlzIGV2YWx1YXRlZC4KCiAgICAgICAgIiIiCiAgICAgICAgbSA9IHJlLm1hdGNoKHIiKFx3KyhcLlx3KykqKVwuKFx3KikiLCB0ZXh0KQogICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICByZXR1cm4gW10KICAgICAgICBleHByLCBhdHRyID0gbS5ncm91cCgxLCAzKQogICAgICAgIHRyeToKICAgICAgICAgICAgdGhpc29iamVjdCA9IGV2YWwoZXhwciwgc2VsZi5uYW1lc3BhY2UpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgcmV0dXJuIFtdCgogICAgICAgICMgZ2V0IHRoZSBjb250ZW50IG9mIHRoZSBvYmplY3QsIGV4Y2VwdCBfX2J1aWx0aW5zX18KICAgICAgICB3b3JkcyA9IHNldChkaXIodGhpc29iamVjdCkpCiAgICAgICAgd29yZHMuZGlzY2FyZCgiX19idWlsdGluc19fIikKCiAgICAgICAgaWYgaGFzYXR0cih0aGlzb2JqZWN0LCAnX19jbGFzc19fJyk6CiAgICAgICAgICAgIHdvcmRzLmFkZCgnX19jbGFzc19fJykKICAgICAgICAgICAgd29yZHMudXBkYXRlKGdldF9jbGFzc19tZW1iZXJzKHRoaXNvYmplY3QuX19jbGFzc19fKSkKICAgICAgICBtYXRjaGVzID0gW10KICAgICAgICBuID0gbGVuKGF0dHIpCiAgICAgICAgaWYgYXR0ciA9PSAnJzoKICAgICAgICAgICAgbm9wcmVmaXggPSAnXycKICAgICAgICBlbGlmIGF0dHIgPT0gJ18nOgogICAgICAgICAgICBub3ByZWZpeCA9ICdfXycKICAgICAgICBlbHNlOgogICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBmb3Igd29yZCBpbiB3b3JkczoKICAgICAgICAgICAgICAgIGlmICh3b3JkWzpuXSA9PSBhdHRyIGFuZAogICAgICAgICAgICAgICAgICAgIG5vdCAobm9wcmVmaXggYW5kIHdvcmRbOm4rMV0gPT0gbm9wcmVmaXgpKToKICAgICAgICAgICAgICAgICAgICBtYXRjaCA9ICIlcy4lcyIgJSAoZXhwciwgd29yZCkKICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGdldGF0dHIodHlwZSh0aGlzb2JqZWN0KSwgd29yZCwgTm9uZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSk6CiAgICAgICAgICAgICAgICAgICAgICAgICMgYnBvLTQ0NzUyOiB0aGlzb2JqZWN0LndvcmQgaXMgYSBtZXRob2QgZGVjb3JhdGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICMgYEBwcm9wZXJ0eWAuIFdoYXQgZm9sbG93cyBhcHBsaWVzIGEgcG9zdGZpeCBpZgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXNvYmplY3Qud29yZCBpcyBjYWxsYWJsZSwgYnV0IGtub3cgd2Uga25vdyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBub3QgY2FsbGFibGUgKGJlY2F1c2UgaXQgaXMgYSBwcm9wZXJ0eSkuCiAgICAgICAgICAgICAgICAgICAgICAgICMgQWxzbywgZ2V0YXR0cih0aGlzb2JqZWN0LCB3b3JkKSB3aWxsIGV2YWx1YXRlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAjIHByb3BlcnR5IG1ldGhvZCwgd2hpY2ggaXMgbm90IGRlc2lyYWJsZS4KICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDo9IGdldGF0dHIodGhpc29iamVjdCwgd29yZCwgTm9uZSkpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChzZWxmLl9jYWxsYWJsZV9wb3N0Zml4KHZhbHVlLCBtYXRjaCkpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpCiAgICAgICAgICAgIGlmIG1hdGNoZXMgb3Igbm90IG5vcHJlZml4OgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgaWYgbm9wcmVmaXggPT0gJ18nOgogICAgICAgICAgICAgICAgbm9wcmVmaXggPSAnX18nCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKICAgICAgICBtYXRjaGVzLnNvcnQoKQogICAgICAgIHJldHVybiBtYXRjaGVzCgpkZWYgZ2V0X2NsYXNzX21lbWJlcnMoa2xhc3MpOgogICAgcmV0ID0gZGlyKGtsYXNzKQogICAgaWYgaGFzYXR0cihrbGFzcywnX19iYXNlc19fJyk6CiAgICAgICAgZm9yIGJhc2UgaW4ga2xhc3MuX19iYXNlc19fOgogICAgICAgICAgICByZXQgPSByZXQgKyBnZXRfY2xhc3NfbWVtYmVycyhiYXNlKQogICAgcmV0dXJuIHJldAoKdHJ5OgogICAgaW1wb3J0IHJlYWRsaW5lCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIF9yZWFkbGluZV9hdmFpbGFibGUgPSBGYWxzZQplbHNlOgogICAgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcihDb21wbGV0ZXIoKS5jb21wbGV0ZSkKICAgICMgUmVsZWFzZSByZWZlcmVuY2VzIGVhcmx5IGF0IHNodXRkb3duICh0aGUgcmVhZGxpbmUgbW9kdWxlJ3MKICAgICMgY29udGVudHMgYXJlIHF1YXNpLWltbW9ydGFsLCBhbmQgdGhlIGNvbXBsZXRlciBmdW5jdGlvbiBob2xkcyBhCiAgICAjIHJlZmVyZW5jZSB0byBnbG9iYWxzKS4KICAgIGF0ZXhpdC5yZWdpc3RlcihsYW1iZGE6IHJlYWRsaW5lLnNldF9jb21wbGV0ZXIoTm9uZSkpCiAgICBfcmVhZGxpbmVfYXZhaWxhYmxlID0gVHJ1ZQpQSwMEFAAAAAAAAiCjVtN4l8FnMwAAZzMAAAgAAABydW5weS5weSIiInJ1bnB5LnB5IC0gbG9jYXRpbmcgYW5kIHJ1bm5pbmcgUHl0aG9uIGNvZGUgdXNpbmcgdGhlIG1vZHVsZSBuYW1lc3BhY2UKClByb3ZpZGVzIHN1cHBvcnQgZm9yIGxvY2F0aW5nIGFuZCBydW5uaW5nIFB5dGhvbiBzY3JpcHRzIHVzaW5nIHRoZSBQeXRob24KbW9kdWxlIG5hbWVzcGFjZSBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgZmlsZXN5c3RlbS4KClRoaXMgYWxsb3dzIFB5dGhvbiBjb2RlIHRvIHBsYXkgbmljZWx5IHdpdGggbm9uLWZpbGVzeXN0ZW0gYmFzZWQgUEVQIDMwMgppbXBvcnRlcnMgd2hlbiBsb2NhdGluZyBzdXBwb3J0IHNjcmlwdHMgYXMgd2VsbCBhcyB3aGVuIGltcG9ydGluZyBtb2R1bGVzLgoiIiIKIyBXcml0dGVuIGJ5IE5pY2sgQ29naGxhbiA8bmNvZ2hsYW4gYXQgZ21haWwuY29tPgojICAgIHRvIGltcGxlbWVudCBQRVAgMzM4IChFeGVjdXRpbmcgTW9kdWxlcyBhcyBTY3JpcHRzKQoKCmltcG9ydCBzeXMKaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkgIyBpbXBvcnRsaWIgZmlyc3Qgc28gd2UgY2FuIHRlc3QgIzE1Mzg2IHZpYSAtbQppbXBvcnQgaW1wb3J0bGliLnV0aWwKaW1wb3J0IGlvCmltcG9ydCBvcwoKX19hbGxfXyA9IFsKICAgICJydW5fbW9kdWxlIiwgInJ1bl9wYXRoIiwKXQoKIyBhdm9pZCAnaW1wb3J0IHR5cGVzJyBqdXN0IGZvciBNb2R1bGVUeXBlCk1vZHVsZVR5cGUgPSB0eXBlKHN5cykKCmNsYXNzIF9UZW1wTW9kdWxlKG9iamVjdCk6CiAgICAiIiJUZW1wb3JhcmlseSByZXBsYWNlIGEgbW9kdWxlIGluIHN5cy5tb2R1bGVzIHdpdGggYW4gZW1wdHkgbmFtZXNwYWNlIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kX25hbWUpOgogICAgICAgIHNlbGYubW9kX25hbWUgPSBtb2RfbmFtZQogICAgICAgIHNlbGYubW9kdWxlID0gTW9kdWxlVHlwZShtb2RfbmFtZSkKICAgICAgICBzZWxmLl9zYXZlZF9tb2R1bGUgPSBbXQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgbW9kX25hbWUgPSBzZWxmLm1vZF9uYW1lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9zYXZlZF9tb2R1bGUuYXBwZW5kKHN5cy5tb2R1bGVzW21vZF9uYW1lXSkKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBzeXMubW9kdWxlc1ttb2RfbmFtZV0gPSBzZWxmLm1vZHVsZQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBpZiBzZWxmLl9zYXZlZF9tb2R1bGU6CiAgICAgICAgICAgIHN5cy5tb2R1bGVzW3NlbGYubW9kX25hbWVdID0gc2VsZi5fc2F2ZWRfbW9kdWxlWzBdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW3NlbGYubW9kX25hbWVdCiAgICAgICAgc2VsZi5fc2F2ZWRfbW9kdWxlID0gW10KCmNsYXNzIF9Nb2RpZmllZEFyZ3YwKG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgogICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQogICAgICAgIHNlbGYuX3NhdmVkX3ZhbHVlID0gc2VsZi5fc2VudGluZWwgPSBvYmplY3QoKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fc2F2ZWRfdmFsdWUgaXMgbm90IHNlbGYuX3NlbnRpbmVsOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkFscmVhZHkgcHJlc2VydmluZyBzYXZlZCB2YWx1ZSIpCiAgICAgICAgc2VsZi5fc2F2ZWRfdmFsdWUgPSBzeXMuYXJndlswXQogICAgICAgIHN5cy5hcmd2WzBdID0gc2VsZi52YWx1ZQoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgc2VsZi52YWx1ZSA9IHNlbGYuX3NlbnRpbmVsCiAgICAgICAgc3lzLmFyZ3ZbMF0gPSBzZWxmLl9zYXZlZF92YWx1ZQoKIyBUT0RPOiBSZXBsYWNlIHRoZXNlIGhlbHBlcnMgd2l0aCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCBmdW5jdGlvbnMuCmRlZiBfcnVuX2NvZGUoY29kZSwgcnVuX2dsb2JhbHMsIGluaXRfZ2xvYmFscz1Ob25lLAogICAgICAgICAgICAgIG1vZF9uYW1lPU5vbmUsIG1vZF9zcGVjPU5vbmUsCiAgICAgICAgICAgICAgcGtnX25hbWU9Tm9uZSwgc2NyaXB0X25hbWU9Tm9uZSk6CiAgICAiIiJIZWxwZXIgdG8gcnVuIGNvZGUgaW4gbm9taW5hdGVkIG5hbWVzcGFjZSIiIgogICAgaWYgaW5pdF9nbG9iYWxzIGlzIG5vdCBOb25lOgogICAgICAgIHJ1bl9nbG9iYWxzLnVwZGF0ZShpbml0X2dsb2JhbHMpCiAgICBpZiBtb2Rfc3BlYyBpcyBOb25lOgogICAgICAgIGxvYWRlciA9IE5vbmUKICAgICAgICBmbmFtZSA9IHNjcmlwdF9uYW1lCiAgICAgICAgY2FjaGVkID0gTm9uZQogICAgZWxzZToKICAgICAgICBsb2FkZXIgPSBtb2Rfc3BlYy5sb2FkZXIKICAgICAgICBmbmFtZSA9IG1vZF9zcGVjLm9yaWdpbgogICAgICAgIGNhY2hlZCA9IG1vZF9zcGVjLmNhY2hlZAogICAgICAgIGlmIHBrZ19uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHBrZ19uYW1lID0gbW9kX3NwZWMucGFyZW50CiAgICBydW5fZ2xvYmFscy51cGRhdGUoX19uYW1lX18gPSBtb2RfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBfX2ZpbGVfXyA9IGZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIF9fY2FjaGVkX18gPSBjYWNoZWQsCiAgICAgICAgICAgICAgICAgICAgICAgX19kb2NfXyA9IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgX19sb2FkZXJfXyA9IGxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICBfX3BhY2thZ2VfXyA9IHBrZ19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIF9fc3BlY19fID0gbW9kX3NwZWMpCiAgICBleGVjKGNvZGUsIHJ1bl9nbG9iYWxzKQogICAgcmV0dXJuIHJ1bl9nbG9iYWxzCgpkZWYgX3J1bl9tb2R1bGVfY29kZShjb2RlLCBpbml0X2dsb2JhbHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICBtb2RfbmFtZT1Ob25lLCBtb2Rfc3BlYz1Ob25lLAogICAgICAgICAgICAgICAgICAgIHBrZ19uYW1lPU5vbmUsIHNjcmlwdF9uYW1lPU5vbmUpOgogICAgIiIiSGVscGVyIHRvIHJ1biBjb2RlIGluIG5ldyBuYW1lc3BhY2Ugd2l0aCBzeXMgbW9kaWZpZWQiIiIKICAgIGZuYW1lID0gc2NyaXB0X25hbWUgaWYgbW9kX3NwZWMgaXMgTm9uZSBlbHNlIG1vZF9zcGVjLm9yaWdpbgogICAgd2l0aCBfVGVtcE1vZHVsZShtb2RfbmFtZSkgYXMgdGVtcF9tb2R1bGUsIF9Nb2RpZmllZEFyZ3YwKGZuYW1lKToKICAgICAgICBtb2RfZ2xvYmFscyA9IHRlbXBfbW9kdWxlLm1vZHVsZS5fX2RpY3RfXwogICAgICAgIF9ydW5fY29kZShjb2RlLCBtb2RfZ2xvYmFscywgaW5pdF9nbG9iYWxzLAogICAgICAgICAgICAgICAgICBtb2RfbmFtZSwgbW9kX3NwZWMsIHBrZ19uYW1lLCBzY3JpcHRfbmFtZSkKICAgICMgQ29weSB0aGUgZ2xvYmFscyBvZiB0aGUgdGVtcG9yYXJ5IG1vZHVsZSwgYXMgdGhleQogICAgIyBtYXkgYmUgY2xlYXJlZCB3aGVuIHRoZSB0ZW1wb3JhcnkgbW9kdWxlIGdvZXMgYXdheQogICAgcmV0dXJuIG1vZF9nbG9iYWxzLmNvcHkoKQoKIyBIZWxwZXIgdG8gZ2V0IHRoZSBmdWxsIG5hbWUsIHNwZWMgYW5kIGNvZGUgZm9yIGEgbW9kdWxlCmRlZiBfZ2V0X21vZHVsZV9kZXRhaWxzKG1vZF9uYW1lLCBlcnJvcj1JbXBvcnRFcnJvcik6CiAgICBpZiBtb2RfbmFtZS5zdGFydHN3aXRoKCIuIik6CiAgICAgICAgcmFpc2UgZXJyb3IoIlJlbGF0aXZlIG1vZHVsZSBuYW1lcyBub3Qgc3VwcG9ydGVkIikKICAgIHBrZ19uYW1lLCBfLCBfID0gbW9kX25hbWUucnBhcnRpdGlvbigiLiIpCiAgICBpZiBwa2dfbmFtZToKICAgICAgICAjIFRyeSBpbXBvcnRpbmcgdGhlIHBhcmVudCB0byBhdm9pZCBjYXRjaGluZyBpbml0aWFsaXphdGlvbiBlcnJvcnMKICAgICAgICB0cnk6CiAgICAgICAgICAgIF9faW1wb3J0X18ocGtnX25hbWUpCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CiAgICAgICAgICAgICMgSWYgdGhlIHBhcmVudCBvciBoaWdoZXIgYW5jZXN0b3IgcGFja2FnZSBpcyBtaXNzaW5nLCBsZXQgdGhlCiAgICAgICAgICAgICMgZXJyb3IgYmUgcmFpc2VkIGJ5IGZpbmRfc3BlYygpIGJlbG93IGFuZCB0aGVuIGJlIGNhdWdodC4gQnV0IGRvCiAgICAgICAgICAgICMgbm90IGFsbG93IG90aGVyIGVycm9ycyB0byBiZSBjYXVnaHQuCiAgICAgICAgICAgIGlmIGUubmFtZSBpcyBOb25lIG9yIChlLm5hbWUgIT0gcGtnX25hbWUgYW5kCiAgICAgICAgICAgICAgICAgICAgbm90IHBrZ19uYW1lLnN0YXJ0c3dpdGgoZS5uYW1lICsgIi4iKSk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICMgV2FybiBpZiB0aGUgbW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gaW1wb3J0ZWQgdW5kZXIgaXRzIG5vcm1hbCBuYW1lCiAgICAgICAgZXhpc3RpbmcgPSBzeXMubW9kdWxlcy5nZXQobW9kX25hbWUpCiAgICAgICAgaWYgZXhpc3RpbmcgaXMgbm90IE5vbmUgYW5kIG5vdCBoYXNhdHRyKGV4aXN0aW5nLCAiX19wYXRoX18iKToKICAgICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICAgICBtc2cgPSAie21vZF9uYW1lIXJ9IGZvdW5kIGluIHN5cy5tb2R1bGVzIGFmdGVyIGltcG9ydCBvZiAiIFwKICAgICAgICAgICAgICAgICJwYWNrYWdlIHtwa2dfbmFtZSFyfSwgYnV0IHByaW9yIHRvIGV4ZWN1dGlvbiBvZiAiIFwKICAgICAgICAgICAgICAgICJ7bW9kX25hbWUhcn07IHRoaXMgbWF5IHJlc3VsdCBpbiB1bnByZWRpY3RhYmxlICIgXAogICAgICAgICAgICAgICAgImJlaGF2aW91ciIuZm9ybWF0KG1vZF9uYW1lPW1vZF9uYW1lLCBwa2dfbmFtZT1wa2dfbmFtZSkKICAgICAgICAgICAgd2FybihSdW50aW1lV2FybmluZyhtc2cpKQoKICAgIHRyeToKICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG1vZF9uYW1lKQogICAgZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IsIFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZXg6CiAgICAgICAgIyBUaGlzIGhhY2sgZml4ZXMgYW4gaW1wZWRhbmNlIG1pc21hdGNoIGJldHdlZW4gcGtndXRpbCBhbmQKICAgICAgICAjIGltcG9ydGxpYiwgd2hlcmUgdGhlIGxhdHRlciByYWlzZXMgb3RoZXIgZXJyb3JzIGZvciBjYXNlcyB3aGVyZQogICAgICAgICMgcGtndXRpbCBwcmV2aW91c2x5IHJhaXNlZCBJbXBvcnRFcnJvcgogICAgICAgIG1zZyA9ICJFcnJvciB3aGlsZSBmaW5kaW5nIG1vZHVsZSBzcGVjaWZpY2F0aW9uIGZvciB7IXJ9ICh7fToge30pIgogICAgICAgIGlmIG1vZF9uYW1lLmVuZHN3aXRoKCIucHkiKToKICAgICAgICAgICAgbXNnICs9IChmIi4gVHJ5IHVzaW5nICd7bW9kX25hbWVbOi0zXX0nIGluc3RlYWQgb2YgIgogICAgICAgICAgICAgICAgICAgIGYiJ3ttb2RfbmFtZX0nIGFzIHRoZSBtb2R1bGUgbmFtZS4iKQogICAgICAgIHJhaXNlIGVycm9yKG1zZy5mb3JtYXQobW9kX25hbWUsIHR5cGUoZXgpLl9fbmFtZV9fLCBleCkpIGZyb20gZXgKICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICByYWlzZSBlcnJvcigiTm8gbW9kdWxlIG5hbWVkICVzIiAlIG1vZF9uYW1lKQogICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKICAgICAgICBpZiBtb2RfbmFtZSA9PSAiX19tYWluX18iIG9yIG1vZF9uYW1lLmVuZHN3aXRoKCIuX19tYWluX18iKToKICAgICAgICAgICAgcmFpc2UgZXJyb3IoIkNhbm5vdCB1c2UgcGFja2FnZSBhcyBfX21haW5fXyBtb2R1bGUiKQogICAgICAgIHRyeToKICAgICAgICAgICAgcGtnX21haW5fbmFtZSA9IG1vZF9uYW1lICsgIi5fX21haW5fXyIKICAgICAgICAgICAgcmV0dXJuIF9nZXRfbW9kdWxlX2RldGFpbHMocGtnX21haW5fbmFtZSwgZXJyb3IpCiAgICAgICAgZXhjZXB0IGVycm9yIGFzIGU6CiAgICAgICAgICAgIGlmIG1vZF9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgIHJhaXNlICAjIE5vIG1vZHVsZSBsb2FkZWQ7IGJlaW5nIGEgcGFja2FnZSBpcyBpcnJlbGV2YW50CiAgICAgICAgICAgIHJhaXNlIGVycm9yKCgiJXM7ICVyIGlzIGEgcGFja2FnZSBhbmQgY2Fubm90ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIGRpcmVjdGx5IGV4ZWN1dGVkIikgJShlLCBtb2RfbmFtZSkpCiAgICBsb2FkZXIgPSBzcGVjLmxvYWRlcgogICAgaWYgbG9hZGVyIGlzIE5vbmU6CiAgICAgICAgcmFpc2UgZXJyb3IoIiVyIGlzIGEgbmFtZXNwYWNlIHBhY2thZ2UgYW5kIGNhbm5vdCBiZSBleGVjdXRlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIG1vZF9uYW1lKQogICAgdHJ5OgogICAgICAgIGNvZGUgPSBsb2FkZXIuZ2V0X2NvZGUobW9kX25hbWUpCiAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKICAgICAgICByYWlzZSBlcnJvcihmb3JtYXQoZSkpIGZyb20gZQogICAgaWYgY29kZSBpcyBOb25lOgogICAgICAgIHJhaXNlIGVycm9yKCJObyBjb2RlIG9iamVjdCBhdmFpbGFibGUgZm9yICVzIiAlIG1vZF9uYW1lKQogICAgcmV0dXJuIG1vZF9uYW1lLCBzcGVjLCBjb2RlCgpjbGFzcyBfRXJyb3IoRXhjZXB0aW9uKToKICAgICIiIkVycm9yIHRoYXQgX3J1bl9tb2R1bGVfYXNfbWFpbigpIHNob3VsZCByZXBvcnQgd2l0aG91dCBhIHRyYWNlYmFjayIiIgoKIyBYWFggbmNvZ2hsYW46IFNob3VsZCB0aGlzIGJlIGRvY3VtZW50ZWQgYW5kIG1hZGUgcHVibGljPwojIChDdXJyZW50IHRob3VnaHRzOiBkb24ndCByZXBlYXQgdGhlIG1pc3Rha2UgdGhhdCBsZWFkIHRvIGl0cwojIGNyZWF0aW9uIHdoZW4gcnVuX21vZHVsZSgpIG5vIGxvbmdlciBtZXQgdGhlIG5lZWRzIG9mCiMgbWFpbm1vZHVsZS5jLCBidXQgY291bGRuJ3QgYmUgY2hhbmdlZCBiZWNhdXNlIGl0IHdhcyBwdWJsaWMpCmRlZiBfcnVuX21vZHVsZV9hc19tYWluKG1vZF9uYW1lLCBhbHRlcl9hcmd2PVRydWUpOgogICAgIiIiUnVucyB0aGUgZGVzaWduYXRlZCBtb2R1bGUgaW4gdGhlIF9fbWFpbl9fIG5hbWVzcGFjZQoKICAgICAgIE5vdGUgdGhhdCB0aGUgZXhlY3V0ZWQgbW9kdWxlIHdpbGwgaGF2ZSBmdWxsIGFjY2VzcyB0byB0aGUKICAgICAgIF9fbWFpbl9fIG5hbWVzcGFjZS4gSWYgdGhpcyBpcyBub3QgZGVzaXJhYmxlLCB0aGUgcnVuX21vZHVsZSgpCiAgICAgICBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byBydW4gdGhlIG1vZHVsZSBjb2RlIGluIGEgZnJlc2ggbmFtZXNwYWNlLgoKICAgICAgIEF0IHRoZSB2ZXJ5IGxlYXN0LCB0aGVzZSB2YXJpYWJsZXMgaW4gX19tYWluX18gd2lsbCBiZSBvdmVyd3JpdHRlbjoKICAgICAgICAgICBfX25hbWVfXwogICAgICAgICAgIF9fZmlsZV9fCiAgICAgICAgICAgX19jYWNoZWRfXwogICAgICAgICAgIF9fbG9hZGVyX18KICAgICAgICAgICBfX3BhY2thZ2VfXwogICAgIiIiCiAgICB0cnk6CiAgICAgICAgaWYgYWx0ZXJfYXJndiBvciBtb2RfbmFtZSAhPSAiX19tYWluX18iOiAjIGkuZS4gLW0gc3dpdGNoCiAgICAgICAgICAgIG1vZF9uYW1lLCBtb2Rfc3BlYywgY29kZSA9IF9nZXRfbW9kdWxlX2RldGFpbHMobW9kX25hbWUsIF9FcnJvcikKICAgICAgICBlbHNlOiAgICAgICAgICAjIGkuZS4gZGlyZWN0b3J5IG9yIHppcGZpbGUgZXhlY3V0aW9uCiAgICAgICAgICAgIG1vZF9uYW1lLCBtb2Rfc3BlYywgY29kZSA9IF9nZXRfbWFpbl9tb2R1bGVfZGV0YWlscyhfRXJyb3IpCiAgICBleGNlcHQgX0Vycm9yIGFzIGV4YzoKICAgICAgICBtc2cgPSAiJXM6ICVzIiAlIChzeXMuZXhlY3V0YWJsZSwgZXhjKQogICAgICAgIHN5cy5leGl0KG1zZykKICAgIG1haW5fZ2xvYmFscyA9IHN5cy5tb2R1bGVzWyJfX21haW5fXyJdLl9fZGljdF9fCiAgICBpZiBhbHRlcl9hcmd2OgogICAgICAgIHN5cy5hcmd2WzBdID0gbW9kX3NwZWMub3JpZ2luCiAgICByZXR1cm4gX3J1bl9jb2RlKGNvZGUsIG1haW5fZ2xvYmFscywgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgIl9fbWFpbl9fIiwgbW9kX3NwZWMpCgpkZWYgcnVuX21vZHVsZShtb2RfbmFtZSwgaW5pdF9nbG9iYWxzPU5vbmUsCiAgICAgICAgICAgICAgIHJ1bl9uYW1lPU5vbmUsIGFsdGVyX3N5cz1GYWxzZSk6CiAgICAiIiJFeGVjdXRlIGEgbW9kdWxlJ3MgY29kZSB3aXRob3V0IGltcG9ydGluZyBpdC4KCiAgICAgICBtb2RfbmFtZSAtLSBhbiBhYnNvbHV0ZSBtb2R1bGUgbmFtZSBvciBwYWNrYWdlIG5hbWUuCgogICAgICAgT3B0aW9uYWwgYXJndW1lbnRzOgogICAgICAgaW5pdF9nbG9iYWxzIC0tIGRpY3Rpb25hcnkgdXNlZCB0byBwcmUtcG9wdWxhdGUgdGhlIG1vZHVsZeKAmXMKICAgICAgIGdsb2JhbHMgZGljdGlvbmFyeSBiZWZvcmUgdGhlIGNvZGUgaXMgZXhlY3V0ZWQuCgogICAgICAgcnVuX25hbWUgLS0gaWYgbm90IE5vbmUsIHRoaXMgd2lsbCBiZSB1c2VkIGZvciBzZXR0aW5nIF9fbmFtZV9fOwogICAgICAgb3RoZXJ3aXNlLCBfX25hbWVfXyB3aWxsIGJlIHNldCB0byBtb2RfbmFtZSArICdfX21haW5fXycgaWYgdGhlCiAgICAgICBuYW1lZCBtb2R1bGUgaXMgYSBwYWNrYWdlIGFuZCB0byBqdXN0IG1vZF9uYW1lIG90aGVyd2lzZS4KCiAgICAgICBhbHRlcl9zeXMgLS0gaWYgVHJ1ZSwgc3lzLmFyZ3ZbMF0gaXMgdXBkYXRlZCB3aXRoIHRoZSB2YWx1ZSBvZgogICAgICAgX19maWxlX18gYW5kIHN5cy5tb2R1bGVzW19fbmFtZV9fXSBpcyB1cGRhdGVkIHdpdGggYSB0ZW1wb3JhcnkKICAgICAgIG1vZHVsZSBvYmplY3QgZm9yIHRoZSBtb2R1bGUgYmVpbmcgZXhlY3V0ZWQuIEJvdGggYXJlCiAgICAgICByZXN0b3JlZCB0byB0aGVpciBvcmlnaW5hbCB2YWx1ZXMgYmVmb3JlIHRoZSBmdW5jdGlvbiByZXR1cm5zLgoKICAgICAgIFJldHVybnMgdGhlIHJlc3VsdGluZyBtb2R1bGUgZ2xvYmFscyBkaWN0aW9uYXJ5LgogICAgIiIiCiAgICBtb2RfbmFtZSwgbW9kX3NwZWMsIGNvZGUgPSBfZ2V0X21vZHVsZV9kZXRhaWxzKG1vZF9uYW1lKQogICAgaWYgcnVuX25hbWUgaXMgTm9uZToKICAgICAgICBydW5fbmFtZSA9IG1vZF9uYW1lCiAgICBpZiBhbHRlcl9zeXM6CiAgICAgICAgcmV0dXJuIF9ydW5fbW9kdWxlX2NvZGUoY29kZSwgaW5pdF9nbG9iYWxzLCBydW5fbmFtZSwgbW9kX3NwZWMpCiAgICBlbHNlOgogICAgICAgICMgTGVhdmUgdGhlIHN5cyBtb2R1bGUgYWxvbmUKICAgICAgICByZXR1cm4gX3J1bl9jb2RlKGNvZGUsIHt9LCBpbml0X2dsb2JhbHMsIHJ1bl9uYW1lLCBtb2Rfc3BlYykKCmRlZiBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoZXJyb3I9SW1wb3J0RXJyb3IpOgogICAgIyBIZWxwZXIgdGhhdCBnaXZlcyBhIG5pY2VyIGVycm9yIG1lc3NhZ2Ugd2hlbiBhdHRlbXB0aW5nIHRvCiAgICAjIGV4ZWN1dGUgYSB6aXBmaWxlIG9yIGRpcmVjdG9yeSBieSBpbnZva2luZyBfX21haW5fXy5weQogICAgIyBBbHNvIG1vdmVzIHRoZSBzdGFuZGFyZCBfX21haW5fXyBvdXQgb2YgdGhlIHdheSBzbyB0aGF0IHRoZQogICAgIyBwcmVleGlzdGluZyBfX2xvYWRlcl9fIGVudHJ5IGRvZXNuJ3QgY2F1c2UgaXNzdWVzCiAgICBtYWluX25hbWUgPSAiX19tYWluX18iCiAgICBzYXZlZF9tYWluID0gc3lzLm1vZHVsZXNbbWFpbl9uYW1lXQogICAgZGVsIHN5cy5tb2R1bGVzW21haW5fbmFtZV0KICAgIHRyeToKICAgICAgICByZXR1cm4gX2dldF9tb2R1bGVfZGV0YWlscyhtYWluX25hbWUpCiAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgICAgIGlmIG1haW5fbmFtZSBpbiBzdHIoZXhjKToKICAgICAgICAgICAgcmFpc2UgZXJyb3IoImNhbid0IGZpbmQgJXIgbW9kdWxlIGluICVyIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX25hbWUsIHN5cy5wYXRoWzBdKSkgZnJvbSBleGMKICAgICAgICByYWlzZQogICAgZmluYWxseToKICAgICAgICBzeXMubW9kdWxlc1ttYWluX25hbWVdID0gc2F2ZWRfbWFpbgoKCmRlZiBfZ2V0X2NvZGVfZnJvbV9maWxlKHJ1bl9uYW1lLCBmbmFtZSk6CiAgICAjIENoZWNrIGZvciBhIGNvbXBpbGVkIGZpbGUgZmlyc3QKICAgIGZyb20gcGtndXRpbCBpbXBvcnQgcmVhZF9jb2RlCiAgICBkZWNvZGVkX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MuZnNkZWNvZGUoZm5hbWUpKQogICAgd2l0aCBpby5vcGVuX2NvZGUoZGVjb2RlZF9wYXRoKSBhcyBmOgogICAgICAgIGNvZGUgPSByZWFkX2NvZGUoZikKICAgIGlmIGNvZGUgaXMgTm9uZToKICAgICAgICAjIFRoYXQgZGlkbid0IHdvcmssIHNvIHRyeSBpdCBhcyBub3JtYWwgc291cmNlIGNvZGUKICAgICAgICB3aXRoIGlvLm9wZW5fY29kZShkZWNvZGVkX3BhdGgpIGFzIGY6CiAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGYucmVhZCgpLCBmbmFtZSwgJ2V4ZWMnKQogICAgcmV0dXJuIGNvZGUsIGZuYW1lCgpkZWYgcnVuX3BhdGgocGF0aF9uYW1lLCBpbml0X2dsb2JhbHM9Tm9uZSwgcnVuX25hbWU9Tm9uZSk6CiAgICAiIiJFeGVjdXRlIGNvZGUgbG9jYXRlZCBhdCB0aGUgc3BlY2lmaWVkIGZpbGVzeXN0ZW0gbG9jYXRpb24uCgogICAgICAgcGF0aF9uYW1lIC0tIGZpbGVzeXN0ZW0gbG9jYXRpb24gb2YgYSBQeXRob24gc2NyaXB0LCB6aXBmaWxlLAogICAgICAgb3IgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSB0b3AgbGV2ZWwgX19tYWluX18ucHkgc2NyaXB0LgoKICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50czoKICAgICAgIGluaXRfZ2xvYmFscyAtLSBkaWN0aW9uYXJ5IHVzZWQgdG8gcHJlLXBvcHVsYXRlIHRoZSBtb2R1bGXigJlzCiAgICAgICBnbG9iYWxzIGRpY3Rpb25hcnkgYmVmb3JlIHRoZSBjb2RlIGlzIGV4ZWN1dGVkLgoKICAgICAgIHJ1bl9uYW1lIC0tIGlmIG5vdCBOb25lLCB0aGlzIHdpbGwgYmUgdXNlZCB0byBzZXQgX19uYW1lX187CiAgICAgICBvdGhlcndpc2UsICc8cnVuX3BhdGg+JyB3aWxsIGJlIHVzZWQgZm9yIF9fbmFtZV9fLgoKICAgICAgIFJldHVybnMgdGhlIHJlc3VsdGluZyBtb2R1bGUgZ2xvYmFscyBkaWN0aW9uYXJ5LgogICAgIiIiCiAgICBpZiBydW5fbmFtZSBpcyBOb25lOgogICAgICAgIHJ1bl9uYW1lID0gIjxydW5fcGF0aD4iCiAgICBwa2dfbmFtZSA9IHJ1bl9uYW1lLnJwYXJ0aXRpb24oIi4iKVswXQogICAgZnJvbSBwa2d1dGlsIGltcG9ydCBnZXRfaW1wb3J0ZXIKICAgIGltcG9ydGVyID0gZ2V0X2ltcG9ydGVyKHBhdGhfbmFtZSkKICAgICMgVHJ5aW5nIHRvIGF2b2lkIGltcG9ydGluZyBpbXAgc28gYXMgdG8gbm90IGNvbnN1bWUgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcuCiAgICBpc19OdWxsSW1wb3J0ZXIgPSBGYWxzZQogICAgaWYgdHlwZShpbXBvcnRlcikuX19tb2R1bGVfXyA9PSAnaW1wJzoKICAgICAgICBpZiB0eXBlKGltcG9ydGVyKS5fX25hbWVfXyA9PSAnTnVsbEltcG9ydGVyJzoKICAgICAgICAgICAgaXNfTnVsbEltcG9ydGVyID0gVHJ1ZQogICAgaWYgaXNpbnN0YW5jZShpbXBvcnRlciwgdHlwZShOb25lKSkgb3IgaXNfTnVsbEltcG9ydGVyOgogICAgICAgICMgTm90IGEgdmFsaWQgc3lzLnBhdGggZW50cnksIHNvIHJ1biB0aGUgY29kZSBkaXJlY3RseQogICAgICAgICMgZXhlY2ZpbGUoKSBkb2Vzbid0IGhlbHAgYXMgd2Ugd2FudCB0byBhbGxvdyBjb21waWxlZCBmaWxlcwogICAgICAgIGNvZGUsIGZuYW1lID0gX2dldF9jb2RlX2Zyb21fZmlsZShydW5fbmFtZSwgcGF0aF9uYW1lKQogICAgICAgIHJldHVybiBfcnVuX21vZHVsZV9jb2RlKGNvZGUsIGluaXRfZ2xvYmFscywgcnVuX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX25hbWU9cGtnX25hbWUsIHNjcmlwdF9uYW1lPWZuYW1lKQogICAgZWxzZToKICAgICAgICAjIEZpbmRlciBpcyBkZWZpbmVkIGZvciBwYXRoLCBzbyBhZGQgaXQgdG8KICAgICAgICAjIHRoZSBzdGFydCBvZiBzeXMucGF0aAogICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBwYXRoX25hbWUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIEhlcmUncyB3aGVyZSB0aGluZ3MgYXJlIGEgbGl0dGxlIGRpZmZlcmVudCBmcm9tIHRoZSBydW5fbW9kdWxlCiAgICAgICAgICAgICMgY2FzZS4gVGhlcmUsIHdlIG9ubHkgaGFkIHRvIHJlcGxhY2UgdGhlIG1vZHVsZSBpbiBzeXMgd2hpbGUgdGhlCiAgICAgICAgICAgICMgY29kZSB3YXMgcnVubmluZyBhbmQgZG9pbmcgc28gd2FzIHNvbWV3aGF0IG9wdGlvbmFsLiBIZXJlLCB3ZQogICAgICAgICAgICAjIGhhdmUgbm8gY2hvaWNlIGFuZCB3ZSBoYXZlIHRvIHJlbW92ZSBpdCBldmVuIHdoaWxlIHdlIHJlYWQgdGhlCiAgICAgICAgICAgICMgY29kZS4gSWYgd2UgZG9uJ3QgZG8gdGhpcywgYSBfX2xvYWRlcl9fIGF0dHJpYnV0ZSBpbiB0aGUKICAgICAgICAgICAgIyBleGlzdGluZyBfX21haW5fXyBtb2R1bGUgbWF5IHByZXZlbnQgbG9jYXRpb24gb2YgdGhlIG5ldyBtb2R1bGUuCiAgICAgICAgICAgIG1vZF9uYW1lLCBtb2Rfc3BlYywgY29kZSA9IF9nZXRfbWFpbl9tb2R1bGVfZGV0YWlscygpCiAgICAgICAgICAgIHdpdGggX1RlbXBNb2R1bGUocnVuX25hbWUpIGFzIHRlbXBfbW9kdWxlLCBcCiAgICAgICAgICAgICAgICAgX01vZGlmaWVkQXJndjAocGF0aF9uYW1lKToKICAgICAgICAgICAgICAgIG1vZF9nbG9iYWxzID0gdGVtcF9tb2R1bGUubW9kdWxlLl9fZGljdF9fCiAgICAgICAgICAgICAgICByZXR1cm4gX3J1bl9jb2RlKGNvZGUsIG1vZF9nbG9iYWxzLCBpbml0X2dsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9uYW1lLCBtb2Rfc3BlYywgcGtnX25hbWUpLmNvcHkoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHN5cy5wYXRoLnJlbW92ZShwYXRoX25hbWUpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAjIFJ1biB0aGUgbW9kdWxlIHNwZWNpZmllZCBhcyB0aGUgbmV4dCBjb21tYW5kIGxpbmUgYXJndW1lbnQKICAgIGlmIGxlbihzeXMuYXJndikgPCAyOgogICAgICAgIHByaW50KCJObyBtb2R1bGUgc3BlY2lmaWVkIGZvciBleGVjdXRpb24iLCBmaWxlPXN5cy5zdGRlcnIpCiAgICBlbHNlOgogICAgICAgIGRlbCBzeXMuYXJndlswXSAjIE1ha2UgdGhlIHJlcXVlc3RlZCBtb2R1bGUgc3lzLmFyZ3ZbMF0KICAgICAgICBfcnVuX21vZHVsZV9hc19tYWluKHN5cy5hcmd2WzBdKQpQSwMEFAAAAAAAAiCjVtIGWozPGAAAzxgAAAgAAABzY2hlZC5weSIiIkEgZ2VuZXJhbGx5IHVzZWZ1bCBldmVudCBzY2hlZHVsZXIgY2xhc3MuCgpFYWNoIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgbWFuYWdlcyBpdHMgb3duIHF1ZXVlLgpObyBtdWx0aS10aHJlYWRpbmcgaXMgaW1wbGllZDsgeW91IGFyZSBzdXBwb3NlZCB0byBoYWNrIHRoYXQKeW91cnNlbGYsIG9yIHVzZSBhIHNpbmdsZSBpbnN0YW5jZSBwZXIgYXBwbGljYXRpb24uCgpFYWNoIGluc3RhbmNlIGlzIHBhcmFtZXRyaXplZCB3aXRoIHR3byBmdW5jdGlvbnMsIG9uZSB0aGF0IGlzCnN1cHBvc2VkIHRvIHJldHVybiB0aGUgY3VycmVudCB0aW1lLCBvbmUgdGhhdCBpcyBzdXBwb3NlZCB0bwppbXBsZW1lbnQgYSBkZWxheS4gIFlvdSBjYW4gaW1wbGVtZW50IHJlYWwtdGltZSBzY2hlZHVsaW5nIGJ5CnN1YnN0aXR1dGluZyB0aW1lIGFuZCBzbGVlcCBmcm9tIGJ1aWx0LWluIG1vZHVsZSB0aW1lLCBvciB5b3UgY2FuCmltcGxlbWVudCBzaW11bGF0ZWQgdGltZSBieSB3cml0aW5nIHlvdXIgb3duIGZ1bmN0aW9ucy4gIFRoaXMgY2FuCmFsc28gYmUgdXNlZCB0byBpbnRlZ3JhdGUgc2NoZWR1bGluZyB3aXRoIFNURFdJTiBldmVudHM7IHRoZSBkZWxheQpmdW5jdGlvbiBpcyBhbGxvd2VkIHRvIG1vZGlmeSB0aGUgcXVldWUuICBUaW1lIGNhbiBiZSBleHByZXNzZWQgYXMKaW50ZWdlcnMgb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYXMgbG9uZyBhcyBpdCBpcyBjb25zaXN0ZW50LgoKRXZlbnRzIGFyZSBzcGVjaWZpZWQgYnkgdHVwbGVzICh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzKS4KQXMgaW4gVU5JWCwgbG93ZXIgcHJpb3JpdHkgbnVtYmVycyBtZWFuIGhpZ2hlciBwcmlvcml0eTsgaW4gdGhpcwp3YXkgdGhlIHF1ZXVlIGNhbiBiZSBtYWludGFpbmVkIGFzIGEgcHJpb3JpdHkgcXVldWUuICBFeGVjdXRpb24gb2YgdGhlCmV2ZW50IG1lYW5zIGNhbGxpbmcgdGhlIGFjdGlvbiBmdW5jdGlvbiwgcGFzc2luZyBpdCB0aGUgYXJndW1lbnQKc2VxdWVuY2UgaW4gImFyZ3VtZW50IiAocmVtZW1iZXIgdGhhdCBpbiBQeXRob24sIG11bHRpcGxlIGZ1bmN0aW9uCmFyZ3VtZW50cyBhcmUgYmUgcGFja2VkIGluIGEgc2VxdWVuY2UpIGFuZCBrZXl3b3JkIHBhcmFtZXRlcnMgaW4gImt3YXJncyIuClRoZSBhY3Rpb24gZnVuY3Rpb24gbWF5IGJlIGFuIGluc3RhbmNlIG1ldGhvZCBzbyBpdApoYXMgYW5vdGhlciB3YXkgdG8gcmVmZXJlbmNlIHByaXZhdGUgZGF0YSAoYmVzaWRlcyBnbG9iYWwgdmFyaWFibGVzKS4KIiIiCgppbXBvcnQgdGltZQppbXBvcnQgaGVhcHEKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQpmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY291bnQKaW1wb3J0IHRocmVhZGluZwpmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQoKX19hbGxfXyA9IFsic2NoZWR1bGVyIl0KCkV2ZW50ID0gbmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIHNlcXVlbmNlLCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MnKQpFdmVudC50aW1lLl9fZG9jX18gPSAoJycnTnVtZXJpYyB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQp0aW1lZnVuYyBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLicnJykKRXZlbnQucHJpb3JpdHkuX19kb2NfXyA9ICgnJydFdmVudHMgc2NoZWR1bGVkIGZvciB0aGUgc2FtZSB0aW1lIHdpbGwgYmUgZXhlY3V0ZWQKaW4gdGhlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LicnJykKRXZlbnQuc2VxdWVuY2UuX19kb2NfXyA9ICgnJydBIGNvbnRpbnVhbGx5IGluY3JlYXNpbmcgc2VxdWVuY2UgbnVtYmVyIHRoYXQKICAgIHNlcGFyYXRlcyBldmVudHMgaWYgdGltZSBhbmQgcHJpb3JpdHkgYXJlIGVxdWFsLicnJykKRXZlbnQuYWN0aW9uLl9fZG9jX18gPSAoJycnRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcKYWN0aW9uKCphcmd1bWVudCwgKiprd2FyZ3MpJycnKQpFdmVudC5hcmd1bWVudC5fX2RvY19fID0gKCcnJ2FyZ3VtZW50IGlzIGEgc2VxdWVuY2UgaG9sZGluZyB0aGUgcG9zaXRpb25hbAphcmd1bWVudHMgZm9yIHRoZSBhY3Rpb24uJycnKQpFdmVudC5rd2FyZ3MuX19kb2NfXyA9ICgnJydrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGhvbGRpbmcgdGhlIGtleXdvcmQKYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKCl9zZW50aW5lbCA9IG9iamVjdCgpCgpjbGFzcyBzY2hlZHVsZXI6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbWVmdW5jPV90aW1lLCBkZWxheWZ1bmM9dGltZS5zbGVlcCk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZSwgcGFzc2luZyB0aGUgdGltZSBhbmQgZGVsYXkKICAgICAgICBmdW5jdGlvbnMiIiIKICAgICAgICBzZWxmLl9xdWV1ZSA9IFtdCiAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5STG9jaygpCiAgICAgICAgc2VsZi50aW1lZnVuYyA9IHRpbWVmdW5jCiAgICAgICAgc2VsZi5kZWxheWZ1bmMgPSBkZWxheWZ1bmMKICAgICAgICBzZWxmLl9zZXF1ZW5jZV9nZW5lcmF0b3IgPSBjb3VudCgpCgogICAgZGVmIGVudGVyYWJzKHNlbGYsIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50PSgpLCBrd2FyZ3M9X3NlbnRpbmVsKToKICAgICAgICAiIiJFbnRlciBhIG5ldyBldmVudCBpbiB0aGUgcXVldWUgYXQgYW4gYWJzb2x1dGUgdGltZS4KCiAgICAgICAgUmV0dXJucyBhbiBJRCBmb3IgdGhlIGV2ZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlbW92ZSBpdCwKICAgICAgICBpZiBuZWNlc3NhcnkuCgogICAgICAgICIiIgogICAgICAgIGlmIGt3YXJncyBpcyBfc2VudGluZWw6CiAgICAgICAgICAgIGt3YXJncyA9IHt9CgogICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgZXZlbnQgPSBFdmVudCh0aW1lLCBwcmlvcml0eSwgbmV4dChzZWxmLl9zZXF1ZW5jZV9nZW5lcmF0b3IpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncykKICAgICAgICAgICAgaGVhcHEuaGVhcHB1c2goc2VsZi5fcXVldWUsIGV2ZW50KQogICAgICAgIHJldHVybiBldmVudCAjIFRoZSBJRAoKICAgIGRlZiBlbnRlcihzZWxmLCBkZWxheSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9KCksIGt3YXJncz1fc2VudGluZWwpOgogICAgICAgICIiIkEgdmFyaWFudCB0aGF0IHNwZWNpZmllcyB0aGUgdGltZSBhcyBhIHJlbGF0aXZlIHRpbWUuCgogICAgICAgIFRoaXMgaXMgYWN0dWFsbHkgdGhlIG1vcmUgY29tbW9ubHkgdXNlZCBpbnRlcmZhY2UuCgogICAgICAgICIiIgogICAgICAgIHRpbWUgPSBzZWxmLnRpbWVmdW5jKCkgKyBkZWxheQogICAgICAgIHJldHVybiBzZWxmLmVudGVyYWJzKHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MpCgogICAgZGVmIGNhbmNlbChzZWxmLCBldmVudCk6CiAgICAgICAgIiIiUmVtb3ZlIGFuIGV2ZW50IGZyb20gdGhlIHF1ZXVlLgoKICAgICAgICBUaGlzIG11c3QgYmUgcHJlc2VudGVkIHRoZSBJRCBhcyByZXR1cm5lZCBieSBlbnRlcigpLgogICAgICAgIElmIHRoZSBldmVudCBpcyBub3QgaW4gdGhlIHF1ZXVlLCB0aGlzIHJhaXNlcyBWYWx1ZUVycm9yLgoKICAgICAgICAiIiIKICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnJlbW92ZShldmVudCkKICAgICAgICAgICAgaGVhcHEuaGVhcGlmeShzZWxmLl9xdWV1ZSkKCiAgICBkZWYgZW1wdHkoc2VsZik6CiAgICAgICAgIiIiQ2hlY2sgd2hldGhlciB0aGUgcXVldWUgaXMgZW1wdHkuIiIiCiAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICByZXR1cm4gbm90IHNlbGYuX3F1ZXVlCgogICAgZGVmIHJ1bihzZWxmLCBibG9ja2luZz1UcnVlKToKICAgICAgICAiIiJFeGVjdXRlIGV2ZW50cyB1bnRpbCB0aGUgcXVldWUgaXMgZW1wdHkuCiAgICAgICAgSWYgYmxvY2tpbmcgaXMgRmFsc2UgZXhlY3V0ZXMgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvCiAgICAgICAgZXhwaXJlIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBkZWFkbGluZSBvZiB0aGUKICAgICAgICBuZXh0IHNjaGVkdWxlZCBjYWxsIGluIHRoZSBzY2hlZHVsZXIuCgogICAgICAgIFdoZW4gdGhlcmUgaXMgYSBwb3NpdGl2ZSBkZWxheSB1bnRpbCB0aGUgZmlyc3QgZXZlbnQsIHRoZQogICAgICAgIGRlbGF5IGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdGhlIGV2ZW50IGlzIGxlZnQgaW4gdGhlIHF1ZXVlOwogICAgICAgIG90aGVyd2lzZSwgdGhlIGV2ZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgcXVldWUgYW5kIGV4ZWN1dGVkCiAgICAgICAgKGl0cyBhY3Rpb24gZnVuY3Rpb24gaXMgY2FsbGVkLCBwYXNzaW5nIGl0IHRoZSBhcmd1bWVudCkuICBJZgogICAgICAgIHRoZSBkZWxheSBmdW5jdGlvbiByZXR1cm5zIHByZW1hdHVyZWx5LCBpdCBpcyBzaW1wbHkKICAgICAgICByZXN0YXJ0ZWQuCgogICAgICAgIEl0IGlzIGxlZ2FsIGZvciBib3RoIHRoZSBkZWxheSBmdW5jdGlvbiBhbmQgdGhlIGFjdGlvbgogICAgICAgIGZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgcXVldWUgb3IgdG8gcmFpc2UgYW4gZXhjZXB0aW9uOwogICAgICAgIGV4Y2VwdGlvbnMgYXJlIG5vdCBjYXVnaHQgYnV0IHRoZSBzY2hlZHVsZXIncyBzdGF0ZSByZW1haW5zCiAgICAgICAgd2VsbC1kZWZpbmVkIHNvIHJ1bigpIG1heSBiZSBjYWxsZWQgYWdhaW4uCgogICAgICAgIEEgcXVlc3Rpb25hYmxlIGhhY2sgaXMgYWRkZWQgdG8gYWxsb3cgb3RoZXIgdGhyZWFkcyB0byBydW46CiAgICAgICAganVzdCBhZnRlciBhbiBldmVudCBpcyBleGVjdXRlZCwgYSBkZWxheSBvZiAwIGlzIGV4ZWN1dGVkLCB0bwogICAgICAgIGF2b2lkIG1vbm9wb2xpemluZyB0aGUgQ1BVIHdoZW4gb3RoZXIgdGhyZWFkcyBhcmUgYWxzbwogICAgICAgIHJ1bm5hYmxlLgoKICAgICAgICAiIiIKICAgICAgICAjIGxvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZAogICAgICAgICMgYW5kIHRvIGltcHJvdmUgdGhyZWFkIHNhZmV0eQogICAgICAgIGxvY2sgPSBzZWxmLl9sb2NrCiAgICAgICAgcSA9IHNlbGYuX3F1ZXVlCiAgICAgICAgZGVsYXlmdW5jID0gc2VsZi5kZWxheWZ1bmMKICAgICAgICB0aW1lZnVuYyA9IHNlbGYudGltZWZ1bmMKICAgICAgICBwb3AgPSBoZWFwcS5oZWFwcG9wCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgd2l0aCBsb2NrOgogICAgICAgICAgICAgICAgaWYgbm90IHE6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICh0aW1lLCBwcmlvcml0eSwgc2VxdWVuY2UsIGFjdGlvbiwKICAgICAgICAgICAgICAgICBhcmd1bWVudCwga3dhcmdzKSA9IHFbMF0KICAgICAgICAgICAgICAgIG5vdyA9IHRpbWVmdW5jKCkKICAgICAgICAgICAgICAgIGlmIHRpbWUgPiBub3c6CiAgICAgICAgICAgICAgICAgICAgZGVsYXkgPSBUcnVlCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICBwb3AocSkKICAgICAgICAgICAgaWYgZGVsYXk6CiAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRpbWUgLSBub3cKICAgICAgICAgICAgICAgIGRlbGF5ZnVuYyh0aW1lIC0gbm93KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYWN0aW9uKCphcmd1bWVudCwgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICBkZWxheWZ1bmMoMCkgICAjIExldCBvdGhlciB0aHJlYWRzIHJ1bgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHF1ZXVlKHNlbGYpOgogICAgICAgICIiIkFuIG9yZGVyZWQgbGlzdCBvZiB1cGNvbWluZyBldmVudHMuCgogICAgICAgIEV2ZW50cyBhcmUgbmFtZWQgdHVwbGVzIHdpdGggZmllbGRzIGZvcjoKICAgICAgICAgICAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnRzLCBrd2FyZ3MKCiAgICAgICAgIiIiCiAgICAgICAgIyBVc2UgaGVhcHEgdG8gc29ydCB0aGUgcXVldWUgcmF0aGVyIHRoYW4gdXNpbmcgJ3NvcnRlZChzZWxmLl9xdWV1ZSknLgogICAgICAgICMgV2l0aCBoZWFwcSwgdHdvIGV2ZW50cyBzY2hlZHVsZWQgYXQgdGhlIHNhbWUgdGltZSB3aWxsIHNob3cgaW4KICAgICAgICAjIHRoZSBhY3R1YWwgb3JkZXIgdGhleSB3b3VsZCBiZSByZXRyaWV2ZWQuCiAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICBldmVudHMgPSBzZWxmLl9xdWV1ZVs6XQogICAgICAgIHJldHVybiBsaXN0KG1hcChoZWFwcS5oZWFwcG9wLCBbZXZlbnRzXSpsZW4oZXZlbnRzKSkpClBLAwQUAAAAAAACIKNWjowv7OwHAADsBwAACgAAAHNlY3JldHMucHkiIiJHZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvcgptYW5hZ2luZyBzZWNyZXRzIHN1Y2ggYXMgYWNjb3VudCBhdXRoZW50aWNhdGlvbiwgdG9rZW5zLCBhbmQgc2ltaWxhci4KClNlZSBQRVAgNTA2IGZvciBtb3JlIGluZm9ybWF0aW9uLgpodHRwczovL3BlcHMucHl0aG9uLm9yZy9wZXAtMDUwNi8KCiIiIgoKX19hbGxfXyA9IFsnY2hvaWNlJywgJ3JhbmRiZWxvdycsICdyYW5kYml0cycsICdTeXN0ZW1SYW5kb20nLAogICAgICAgICAgICd0b2tlbl9ieXRlcycsICd0b2tlbl9oZXgnLCAndG9rZW5fdXJsc2FmZScsCiAgICAgICAgICAgJ2NvbXBhcmVfZGlnZXN0JywKICAgICAgICAgICBdCgoKaW1wb3J0IGJhc2U2NAppbXBvcnQgYmluYXNjaWkKCmZyb20gaG1hYyBpbXBvcnQgY29tcGFyZV9kaWdlc3QKZnJvbSByYW5kb20gaW1wb3J0IFN5c3RlbVJhbmRvbQoKX3N5c3JhbmQgPSBTeXN0ZW1SYW5kb20oKQoKcmFuZGJpdHMgPSBfc3lzcmFuZC5nZXRyYW5kYml0cwpjaG9pY2UgPSBfc3lzcmFuZC5jaG9pY2UKCmRlZiByYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKToKICAgICIiIlJldHVybiBhIHJhbmRvbSBpbnQgaW4gdGhlIHJhbmdlIFswLCBuKS4iIiIKICAgIGlmIGV4Y2x1c2l2ZV91cHBlcl9ib3VuZCA8PSAwOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVwcGVyIGJvdW5kIG11c3QgYmUgcG9zaXRpdmUuIikKICAgIHJldHVybiBfc3lzcmFuZC5fcmFuZGJlbG93KGV4Y2x1c2l2ZV91cHBlcl9ib3VuZCkKCkRFRkFVTFRfRU5UUk9QWSA9IDMyICAjIG51bWJlciBvZiBieXRlcyB0byByZXR1cm4gYnkgZGVmYXVsdAoKZGVmIHRva2VuX2J5dGVzKG5ieXRlcz1Ob25lKToKICAgICIiIlJldHVybiBhIHJhbmRvbSBieXRlIHN0cmluZyBjb250YWluaW5nICpuYnl0ZXMqIGJ5dGVzLgoKICAgIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlCiAgICBkZWZhdWx0IGlzIHVzZWQuCgogICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKICAgIGInXFx4ZWJyXFx4MTdEKnRcXHhhZVxceGQ0XFx4ZTNTXFx4YjZcXHhlMlxceGViUDFcXHg4YicKCiAgICAiIiIKICAgIGlmIG5ieXRlcyBpcyBOb25lOgogICAgICAgIG5ieXRlcyA9IERFRkFVTFRfRU5UUk9QWQogICAgcmV0dXJuIF9zeXNyYW5kLnJhbmRieXRlcyhuYnl0ZXMpCgpkZWYgdG9rZW5faGV4KG5ieXRlcz1Ob25lKToKICAgICIiIlJldHVybiBhIHJhbmRvbSB0ZXh0IHN0cmluZywgaW4gaGV4YWRlY2ltYWwuCgogICAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyogcmFuZG9tIGJ5dGVzLCBlYWNoIGJ5dGUgY29udmVydGVkIHRvIHR3bwogICAgaGV4IGRpZ2l0cy4gIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlCiAgICBkZWZhdWx0IGlzIHVzZWQuCgogICAgPj4+IHRva2VuX2hleCgxNikgICNkb2N0ZXN0OitTS0lQCiAgICAnZjliZjc4YjlhMThjZTZkNDZhMGNkMmIwYjg2ZGY5ZGEnCgogICAgIiIiCiAgICByZXR1cm4gYmluYXNjaWkuaGV4bGlmeSh0b2tlbl9ieXRlcyhuYnl0ZXMpKS5kZWNvZGUoJ2FzY2lpJykKCmRlZiB0b2tlbl91cmxzYWZlKG5ieXRlcz1Ob25lKToKICAgICIiIlJldHVybiBhIHJhbmRvbSBVUkwtc2FmZSB0ZXh0IHN0cmluZywgaW4gQmFzZTY0IGVuY29kaW5nLgoKICAgIFRoZSBzdHJpbmcgaGFzICpuYnl0ZXMqIHJhbmRvbSBieXRlcy4gIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgCiAgICBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCgogICAgPj4+IHRva2VuX3VybHNhZmUoMTYpICAjZG9jdGVzdDorU0tJUAogICAgJ0RybWh6ZTZFUGN2MGZOXzgxQmotbkEnCgogICAgIiIiCiAgICB0b2sgPSB0b2tlbl9ieXRlcyhuYnl0ZXMpCiAgICByZXR1cm4gYmFzZTY0LnVybHNhZmVfYjY0ZW5jb2RlKHRvaykucnN0cmlwKGInPScpLmRlY29kZSgnYXNjaWknKQpQSwMEFAAAAAAAAiCjVhJ0gRUdTAAAHUwAAAwAAABzZWxlY3RvcnMucHkiIiJTZWxlY3RvcnMgbW9kdWxlLgoKVGhpcyBtb2R1bGUgYWxsb3dzIGhpZ2gtbGV2ZWwgYW5kIGVmZmljaWVudCBJL08gbXVsdGlwbGV4aW5nLCBidWlsdCB1cG9uIHRoZQpgc2VsZWN0YCBtb2R1bGUgcHJpbWl0aXZlcy4KIiIiCgoKZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcKaW1wb3J0IG1hdGgKaW1wb3J0IHNlbGVjdAppbXBvcnQgc3lzCgoKIyBnZW5lcmljIGV2ZW50cywgdGhhdCBtdXN0IGJlIG1hcHBlZCB0byBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBvbmVzCkVWRU5UX1JFQUQgPSAoMSA8PCAwKQpFVkVOVF9XUklURSA9ICgxIDw8IDEpCgoKZGVmIF9maWxlb2JqX3RvX2ZkKGZpbGVvYmopOgogICAgIiIiUmV0dXJuIGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYSBmaWxlIG9iamVjdC4KCiAgICBQYXJhbWV0ZXJzOgogICAgZmlsZW9iaiAtLSBmaWxlIG9iamVjdCBvciBmaWxlIGRlc2NyaXB0b3IKCiAgICBSZXR1cm5zOgogICAgY29ycmVzcG9uZGluZyBmaWxlIGRlc2NyaXB0b3IKCiAgICBSYWlzZXM6CiAgICBWYWx1ZUVycm9yIGlmIHRoZSBvYmplY3QgaXMgaW52YWxpZAogICAgIiIiCiAgICBpZiBpc2luc3RhbmNlKGZpbGVvYmosIGludCk6CiAgICAgICAgZmQgPSBmaWxlb2JqCiAgICBlbHNlOgogICAgICAgIHRyeToKICAgICAgICAgICAgZmQgPSBpbnQoZmlsZW9iai5maWxlbm8oKSkKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGZpbGUgb2JqZWN0OiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInshcn0iLmZvcm1hdChmaWxlb2JqKSkgZnJvbSBOb25lCiAgICBpZiBmZCA8IDA6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBmaWxlIGRlc2NyaXB0b3I6IHt9Ii5mb3JtYXQoZmQpKQogICAgcmV0dXJuIGZkCgoKU2VsZWN0b3JLZXkgPSBuYW1lZHR1cGxlKCdTZWxlY3RvcktleScsIFsnZmlsZW9iaicsICdmZCcsICdldmVudHMnLCAnZGF0YSddKQoKU2VsZWN0b3JLZXkuX19kb2NfXyA9ICIiIlNlbGVjdG9yS2V5KGZpbGVvYmosIGZkLCBldmVudHMsIGRhdGEpCgogICAgT2JqZWN0IHVzZWQgdG8gYXNzb2NpYXRlIGEgZmlsZSBvYmplY3QgdG8gaXRzIGJhY2tpbmcKICAgIGZpbGUgZGVzY3JpcHRvciwgc2VsZWN0ZWQgZXZlbnQgbWFzaywgYW5kIGF0dGFjaGVkIGRhdGEuCiIiIgpTZWxlY3RvcktleS5maWxlb2JqLl9fZG9jX18gPSAnRmlsZSBvYmplY3QgcmVnaXN0ZXJlZC4nClNlbGVjdG9yS2V5LmZkLl9fZG9jX18gPSAnVW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IuJwpTZWxlY3RvcktleS5ldmVudHMuX19kb2NfXyA9ICdFdmVudHMgdGhhdCBtdXN0IGJlIHdhaXRlZCBmb3Igb24gdGhpcyBmaWxlIG9iamVjdC4nClNlbGVjdG9yS2V5LmRhdGEuX19kb2NfXyA9ICgnJydPcHRpb25hbCBvcGFxdWUgZGF0YSBhc3NvY2lhdGVkIHRvIHRoaXMgZmlsZSBvYmplY3QuCkZvciBleGFtcGxlLCB0aGlzIGNvdWxkIGJlIHVzZWQgdG8gc3RvcmUgYSBwZXItY2xpZW50IHNlc3Npb24gSUQuJycnKQoKCmNsYXNzIF9TZWxlY3Rvck1hcHBpbmcoTWFwcGluZyk6CiAgICAiIiJNYXBwaW5nIG9mIGZpbGUgb2JqZWN0cyB0byBzZWxlY3RvciBrZXlzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZWxlY3Rvcik6CiAgICAgICAgc2VsZi5fc2VsZWN0b3IgPSBzZWxlY3RvcgoKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5fc2VsZWN0b3IuX2ZkX3RvX2tleSkKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgZmlsZW9iaik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmZCA9IHNlbGYuX3NlbGVjdG9yLl9maWxlb2JqX2xvb2t1cChmaWxlb2JqKQogICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0b3IuX2ZkX3RvX2tleVtmZF0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCJ7IXJ9IGlzIG5vdCByZWdpc3RlcmVkIi5mb3JtYXQoZmlsZW9iaikpIGZyb20gTm9uZQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9zZWxlY3Rvci5fZmRfdG9fa2V5KQoKCmNsYXNzIEJhc2VTZWxlY3RvcihtZXRhY2xhc3M9QUJDTWV0YSk6CiAgICAiIiJTZWxlY3RvciBhYnN0cmFjdCBiYXNlIGNsYXNzLgoKICAgIEEgc2VsZWN0b3Igc3VwcG9ydHMgcmVnaXN0ZXJpbmcgZmlsZSBvYmplY3RzIHRvIGJlIG1vbml0b3JlZCBmb3Igc3BlY2lmaWMKICAgIEkvTyBldmVudHMuCgogICAgQSBmaWxlIG9iamVjdCBpcyBhIGZpbGUgZGVzY3JpcHRvciBvciBhbnkgb2JqZWN0IHdpdGggYSBgZmlsZW5vKClgIG1ldGhvZC4KICAgIEFuIGFyYml0cmFyeSBvYmplY3QgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBmaWxlIG9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQKICAgIGZvciBleGFtcGxlIHRvIHN0b3JlIGNvbnRleHQgaW5mb3JtYXRpb24sIGEgY2FsbGJhY2ssIGV0Yy4KCiAgICBBIHNlbGVjdG9yIGNhbiB1c2UgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMgKHNlbGVjdCgpLCBwb2xsKCksIGVwb2xsKCkuLi4pCiAgICBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLiBUaGUgZGVmYXVsdCBgU2VsZWN0b3JgIGNsYXNzIHVzZXMgdGhlIG1vc3QKICAgIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybS4KICAgICIiIgoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGZpbGVvYmosIGV2ZW50cywgZGF0YT1Ob25lKToKICAgICAgICAiIiJSZWdpc3RlciBhIGZpbGUgb2JqZWN0LgoKICAgICAgICBQYXJhbWV0ZXJzOgogICAgICAgIGZpbGVvYmogLS0gZmlsZSBvYmplY3Qgb3IgZmlsZSBkZXNjcmlwdG9yCiAgICAgICAgZXZlbnRzICAtLSBldmVudHMgdG8gbW9uaXRvciAoYml0d2lzZSBtYXNrIG9mIEVWRU5UX1JFQUR8RVZFTlRfV1JJVEUpCiAgICAgICAgZGF0YSAgICAtLSBhdHRhY2hlZCBkYXRhCgogICAgICAgIFJldHVybnM6CiAgICAgICAgU2VsZWN0b3JLZXkgaW5zdGFuY2UKCiAgICAgICAgUmFpc2VzOgogICAgICAgIFZhbHVlRXJyb3IgaWYgZXZlbnRzIGlzIGludmFsaWQKICAgICAgICBLZXlFcnJvciBpZiBmaWxlb2JqIGlzIGFscmVhZHkgcmVnaXN0ZXJlZAogICAgICAgIE9TRXJyb3IgaWYgZmlsZW9iaiBpcyBjbG9zZWQgb3Igb3RoZXJ3aXNlIGlzIHVuYWNjZXB0YWJsZSB0bwogICAgICAgICAgICAgICAgdGhlIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwgKGlmIGEgc3lzdGVtIGNhbGwgaXMgbWFkZSkKCiAgICAgICAgTm90ZToKICAgICAgICBPU0Vycm9yIG1heSBvciBtYXkgbm90IGJlIHJhaXNlZAogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiB1bnJlZ2lzdGVyKHNlbGYsIGZpbGVvYmopOgogICAgICAgICIiIlVucmVnaXN0ZXIgYSBmaWxlIG9iamVjdC4KCiAgICAgICAgUGFyYW1ldGVyczoKICAgICAgICBmaWxlb2JqIC0tIGZpbGUgb2JqZWN0IG9yIGZpbGUgZGVzY3JpcHRvcgoKICAgICAgICBSZXR1cm5zOgogICAgICAgIFNlbGVjdG9yS2V5IGluc3RhbmNlCgogICAgICAgIFJhaXNlczoKICAgICAgICBLZXlFcnJvciBpZiBmaWxlb2JqIGlzIG5vdCByZWdpc3RlcmVkCgogICAgICAgIE5vdGU6CiAgICAgICAgSWYgZmlsZW9iaiBpcyByZWdpc3RlcmVkIGJ1dCBoYXMgc2luY2UgYmVlbiBjbG9zZWQgdGhpcyBkb2VzCiAgICAgICAgKm5vdCogcmFpc2UgT1NFcnJvciAoZXZlbiBpZiB0aGUgd3JhcHBlZCBzeXNjYWxsIGRvZXMpCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBtb2RpZnkoc2VsZiwgZmlsZW9iaiwgZXZlbnRzLCBkYXRhPU5vbmUpOgogICAgICAgICIiIkNoYW5nZSBhIHJlZ2lzdGVyZWQgZmlsZSBvYmplY3QgbW9uaXRvcmVkIGV2ZW50cyBvciBhdHRhY2hlZCBkYXRhLgoKICAgICAgICBQYXJhbWV0ZXJzOgogICAgICAgIGZpbGVvYmogLS0gZmlsZSBvYmplY3Qgb3IgZmlsZSBkZXNjcmlwdG9yCiAgICAgICAgZXZlbnRzICAtLSBldmVudHMgdG8gbW9uaXRvciAoYml0d2lzZSBtYXNrIG9mIEVWRU5UX1JFQUR8RVZFTlRfV1JJVEUpCiAgICAgICAgZGF0YSAgICAtLSBhdHRhY2hlZCBkYXRhCgogICAgICAgIFJldHVybnM6CiAgICAgICAgU2VsZWN0b3JLZXkgaW5zdGFuY2UKCiAgICAgICAgUmFpc2VzOgogICAgICAgIEFueXRoaW5nIHRoYXQgdW5yZWdpc3RlcigpIG9yIHJlZ2lzdGVyKCkgcmFpc2VzCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi51bnJlZ2lzdGVyKGZpbGVvYmopCiAgICAgICAgcmV0dXJuIHNlbGYucmVnaXN0ZXIoZmlsZW9iaiwgZXZlbnRzLCBkYXRhKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHNlbGVjdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICIiIlBlcmZvcm0gdGhlIGFjdHVhbCBzZWxlY3Rpb24sIHVudGlsIHNvbWUgbW9uaXRvcmVkIGZpbGUgb2JqZWN0cyBhcmUKICAgICAgICByZWFkeSBvciBhIHRpbWVvdXQgZXhwaXJlcy4KCiAgICAgICAgUGFyYW1ldGVyczoKICAgICAgICB0aW1lb3V0IC0tIGlmIHRpbWVvdXQgPiAwLCB0aGlzIHNwZWNpZmllcyB0aGUgbWF4aW11bSB3YWl0IHRpbWUsIGluCiAgICAgICAgICAgICAgICAgICBzZWNvbmRzCiAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDw9IDAsIHRoZSBzZWxlY3QoKSBjYWxsIHdvbid0IGJsb2NrLCBhbmQgd2lsbAogICAgICAgICAgICAgICAgICAgcmVwb3J0IHRoZSBjdXJyZW50bHkgcmVhZHkgZmlsZSBvYmplY3RzCiAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmUsIHNlbGVjdCgpIHdpbGwgYmxvY2sgdW50aWwgYSBtb25pdG9yZWQKICAgICAgICAgICAgICAgICAgIGZpbGUgb2JqZWN0IGJlY29tZXMgcmVhZHkKCiAgICAgICAgUmV0dXJuczoKICAgICAgICBsaXN0IG9mIChrZXksIGV2ZW50cykgZm9yIHJlYWR5IGZpbGUgb2JqZWN0cwogICAgICAgIGBldmVudHNgIGlzIGEgYml0d2lzZSBtYXNrIG9mIEVWRU5UX1JFQUR8RVZFTlRfV1JJVEUKICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkNsb3NlIHRoZSBzZWxlY3Rvci4KCiAgICAgICAgVGhpcyBtdXN0IGJlIGNhbGxlZCB0byBtYWtlIHN1cmUgdGhhdCBhbnkgdW5kZXJseWluZyByZXNvdXJjZSBpcyBmcmVlZC4KICAgICAgICAiIiIKICAgICAgICBwYXNzCgogICAgZGVmIGdldF9rZXkoc2VsZiwgZmlsZW9iaik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBrZXkgYXNzb2NpYXRlZCB0byBhIHJlZ2lzdGVyZWQgZmlsZSBvYmplY3QuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgU2VsZWN0b3JLZXkgZm9yIHRoaXMgZmlsZSBvYmplY3QKICAgICAgICAiIiIKICAgICAgICBtYXBwaW5nID0gc2VsZi5nZXRfbWFwKCkKICAgICAgICBpZiBtYXBwaW5nIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2VsZWN0b3IgaXMgY2xvc2VkJykKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBtYXBwaW5nW2ZpbGVvYmpdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByYWlzZSBLZXlFcnJvcigieyFyfSBpcyBub3QgcmVnaXN0ZXJlZCIuZm9ybWF0KGZpbGVvYmopKSBmcm9tIE5vbmUKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBnZXRfbWFwKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIG1hcHBpbmcgb2YgZmlsZSBvYmplY3RzIHRvIHNlbGVjdG9yIGtleXMuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgogICAgICAgIHNlbGYuY2xvc2UoKQoKCmNsYXNzIF9CYXNlU2VsZWN0b3JJbXBsKEJhc2VTZWxlY3Rvcik6CiAgICAiIiJCYXNlIHNlbGVjdG9yIGltcGxlbWVudGF0aW9uLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAjIHRoaXMgbWFwcyBmaWxlIGRlc2NyaXB0b3JzIHRvIGtleXMKICAgICAgICBzZWxmLl9mZF90b19rZXkgPSB7fQogICAgICAgICMgcmVhZC1vbmx5IG1hcHBpbmcgcmV0dXJuZWQgYnkgZ2V0X21hcCgpCiAgICAgICAgc2VsZi5fbWFwID0gX1NlbGVjdG9yTWFwcGluZyhzZWxmKQoKICAgIGRlZiBfZmlsZW9ial9sb29rdXAoc2VsZiwgZmlsZW9iaik6CiAgICAgICAgIiIiUmV0dXJuIGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYSBmaWxlIG9iamVjdC4KCiAgICAgICAgVGhpcyB3cmFwcyBfZmlsZW9ial90b19mZCgpIHRvIGRvIGFuIGV4aGF1c3RpdmUgc2VhcmNoIGluIGNhc2UKICAgICAgICB0aGUgb2JqZWN0IGlzIGludmFsaWQgYnV0IHdlIHN0aWxsIGhhdmUgaXQgaW4gb3VyIG1hcC4gIFRoaXMKICAgICAgICBpcyB1c2VkIGJ5IHVucmVnaXN0ZXIoKSBzbyB3ZSBjYW4gdW5yZWdpc3RlciBhbiBvYmplY3QgdGhhdAogICAgICAgIHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgZXZlbiBpZiBpdCBpcyBjbG9zZWQuICBJdCBpcyBhbHNvCiAgICAgICAgdXNlZCBieSBfU2VsZWN0b3JNYXBwaW5nLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIF9maWxlb2JqX3RvX2ZkKGZpbGVvYmopCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICMgRG8gYW4gZXhoYXVzdGl2ZSBzZWFyY2guCiAgICAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fZmRfdG9fa2V5LnZhbHVlcygpOgogICAgICAgICAgICAgICAgaWYga2V5LmZpbGVvYmogaXMgZmlsZW9iajoKICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5LmZkCiAgICAgICAgICAgICMgUmFpc2UgVmFsdWVFcnJvciBhZnRlciBhbGwuCiAgICAgICAgICAgIHJhaXNlCgogICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGZpbGVvYmosIGV2ZW50cywgZGF0YT1Ob25lKToKICAgICAgICBpZiAobm90IGV2ZW50cykgb3IgKGV2ZW50cyAmIH4oRVZFTlRfUkVBRCB8IEVWRU5UX1dSSVRFKSk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZXZlbnRzOiB7IXJ9Ii5mb3JtYXQoZXZlbnRzKSkKCiAgICAgICAga2V5ID0gU2VsZWN0b3JLZXkoZmlsZW9iaiwgc2VsZi5fZmlsZW9ial9sb29rdXAoZmlsZW9iaiksIGV2ZW50cywgZGF0YSkKCiAgICAgICAgaWYga2V5LmZkIGluIHNlbGYuX2ZkX3RvX2tleToKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoInshcn0gKEZEIHt9KSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZmlsZW9iaiwga2V5LmZkKSkKCiAgICAgICAgc2VsZi5fZmRfdG9fa2V5W2tleS5mZF0gPSBrZXkKICAgICAgICByZXR1cm4ga2V5CgogICAgZGVmIHVucmVnaXN0ZXIoc2VsZiwgZmlsZW9iaik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBrZXkgPSBzZWxmLl9mZF90b19rZXkucG9wKHNlbGYuX2ZpbGVvYmpfbG9va3VwKGZpbGVvYmopKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoInshcn0gaXMgbm90IHJlZ2lzdGVyZWQiLmZvcm1hdChmaWxlb2JqKSkgZnJvbSBOb25lCiAgICAgICAgcmV0dXJuIGtleQoKICAgIGRlZiBtb2RpZnkoc2VsZiwgZmlsZW9iaiwgZXZlbnRzLCBkYXRhPU5vbmUpOgogICAgICAgIHRyeToKICAgICAgICAgICAga2V5ID0gc2VsZi5fZmRfdG9fa2V5W3NlbGYuX2ZpbGVvYmpfbG9va3VwKGZpbGVvYmopXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoInshcn0gaXMgbm90IHJlZ2lzdGVyZWQiLmZvcm1hdChmaWxlb2JqKSkgZnJvbSBOb25lCiAgICAgICAgaWYgZXZlbnRzICE9IGtleS5ldmVudHM6CiAgICAgICAgICAgIHNlbGYudW5yZWdpc3RlcihmaWxlb2JqKQogICAgICAgICAgICBrZXkgPSBzZWxmLnJlZ2lzdGVyKGZpbGVvYmosIGV2ZW50cywgZGF0YSkKICAgICAgICBlbGlmIGRhdGEgIT0ga2V5LmRhdGE6CiAgICAgICAgICAgICMgVXNlIGEgc2hvcnRjdXQgdG8gdXBkYXRlIHRoZSBkYXRhLgogICAgICAgICAgICBrZXkgPSBrZXkuX3JlcGxhY2UoZGF0YT1kYXRhKQogICAgICAgICAgICBzZWxmLl9mZF90b19rZXlba2V5LmZkXSA9IGtleQogICAgICAgIHJldHVybiBrZXkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgc2VsZi5fZmRfdG9fa2V5LmNsZWFyKCkKICAgICAgICBzZWxmLl9tYXAgPSBOb25lCgogICAgZGVmIGdldF9tYXAoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX21hcAoKICAgIGRlZiBfa2V5X2Zyb21fZmQoc2VsZiwgZmQpOgogICAgICAgICIiIlJldHVybiB0aGUga2V5IGFzc29jaWF0ZWQgdG8gYSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuCgogICAgICAgIFBhcmFtZXRlcnM6CiAgICAgICAgZmQgLS0gZmlsZSBkZXNjcmlwdG9yCgogICAgICAgIFJldHVybnM6CiAgICAgICAgY29ycmVzcG9uZGluZyBrZXksIG9yIE5vbmUgaWYgbm90IGZvdW5kCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fZmRfdG9fa2V5W2ZkXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCgpjbGFzcyBTZWxlY3RTZWxlY3RvcihfQmFzZVNlbGVjdG9ySW1wbCk6CiAgICAiIiJTZWxlY3QtYmFzZWQgc2VsZWN0b3IuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYuX3JlYWRlcnMgPSBzZXQoKQogICAgICAgIHNlbGYuX3dyaXRlcnMgPSBzZXQoKQoKICAgIGRlZiByZWdpc3RlcihzZWxmLCBmaWxlb2JqLCBldmVudHMsIGRhdGE9Tm9uZSk6CiAgICAgICAga2V5ID0gc3VwZXIoKS5yZWdpc3RlcihmaWxlb2JqLCBldmVudHMsIGRhdGEpCiAgICAgICAgaWYgZXZlbnRzICYgRVZFTlRfUkVBRDoKICAgICAgICAgICAgc2VsZi5fcmVhZGVycy5hZGQoa2V5LmZkKQogICAgICAgIGlmIGV2ZW50cyAmIEVWRU5UX1dSSVRFOgogICAgICAgICAgICBzZWxmLl93cml0ZXJzLmFkZChrZXkuZmQpCiAgICAgICAgcmV0dXJuIGtleQoKICAgIGRlZiB1bnJlZ2lzdGVyKHNlbGYsIGZpbGVvYmopOgogICAgICAgIGtleSA9IHN1cGVyKCkudW5yZWdpc3RlcihmaWxlb2JqKQogICAgICAgIHNlbGYuX3JlYWRlcnMuZGlzY2FyZChrZXkuZmQpCiAgICAgICAgc2VsZi5fd3JpdGVycy5kaXNjYXJkKGtleS5mZCkKICAgICAgICByZXR1cm4ga2V5CgogICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgZGVmIF9zZWxlY3Qoc2VsZiwgciwgdywgXywgdGltZW91dD1Ob25lKToKICAgICAgICAgICAgciwgdywgeCA9IHNlbGVjdC5zZWxlY3QociwgdywgdywgdGltZW91dCkKICAgICAgICAgICAgcmV0dXJuIHIsIHcgKyB4LCBbXQogICAgZWxzZToKICAgICAgICBfc2VsZWN0ID0gc2VsZWN0LnNlbGVjdAoKICAgIGRlZiBzZWxlY3Qoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICB0aW1lb3V0ID0gTm9uZSBpZiB0aW1lb3V0IGlzIE5vbmUgZWxzZSBtYXgodGltZW91dCwgMCkKICAgICAgICByZWFkeSA9IFtdCiAgICAgICAgdHJ5OgogICAgICAgICAgICByLCB3LCBfID0gc2VsZi5fc2VsZWN0KHNlbGYuX3JlYWRlcnMsIHNlbGYuX3dyaXRlcnMsIFtdLCB0aW1lb3V0KQogICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgogICAgICAgICAgICByZXR1cm4gcmVhZHkKICAgICAgICByID0gc2V0KHIpCiAgICAgICAgdyA9IHNldCh3KQogICAgICAgIGZvciBmZCBpbiByIHwgdzoKICAgICAgICAgICAgZXZlbnRzID0gMAogICAgICAgICAgICBpZiBmZCBpbiByOgogICAgICAgICAgICAgICAgZXZlbnRzIHw9IEVWRU5UX1JFQUQKICAgICAgICAgICAgaWYgZmQgaW4gdzoKICAgICAgICAgICAgICAgIGV2ZW50cyB8PSBFVkVOVF9XUklURQoKICAgICAgICAgICAga2V5ID0gc2VsZi5fa2V5X2Zyb21fZmQoZmQpCiAgICAgICAgICAgIGlmIGtleToKICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZCgoa2V5LCBldmVudHMgJiBrZXkuZXZlbnRzKSkKICAgICAgICByZXR1cm4gcmVhZHkKCgpjbGFzcyBfUG9sbExpa2VTZWxlY3RvcihfQmFzZVNlbGVjdG9ySW1wbCk6CiAgICAiIiJCYXNlIGNsYXNzIHNoYXJlZCBiZXR3ZWVuIHBvbGwsIGVwb2xsIGFuZCBkZXZwb2xsIHNlbGVjdG9ycy4iIiIKICAgIF9zZWxlY3Rvcl9jbHMgPSBOb25lCiAgICBfRVZFTlRfUkVBRCA9IE5vbmUKICAgIF9FVkVOVF9XUklURSA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5fc2VsZWN0b3IgPSBzZWxmLl9zZWxlY3Rvcl9jbHMoKQoKICAgIGRlZiByZWdpc3RlcihzZWxmLCBmaWxlb2JqLCBldmVudHMsIGRhdGE9Tm9uZSk6CiAgICAgICAga2V5ID0gc3VwZXIoKS5yZWdpc3RlcihmaWxlb2JqLCBldmVudHMsIGRhdGEpCiAgICAgICAgcG9sbGVyX2V2ZW50cyA9IDAKICAgICAgICBpZiBldmVudHMgJiBFVkVOVF9SRUFEOgogICAgICAgICAgICBwb2xsZXJfZXZlbnRzIHw9IHNlbGYuX0VWRU5UX1JFQUQKICAgICAgICBpZiBldmVudHMgJiBFVkVOVF9XUklURToKICAgICAgICAgICAgcG9sbGVyX2V2ZW50cyB8PSBzZWxmLl9FVkVOVF9XUklURQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IucmVnaXN0ZXIoa2V5LmZkLCBwb2xsZXJfZXZlbnRzKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgc3VwZXIoKS51bnJlZ2lzdGVyKGZpbGVvYmopCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgcmV0dXJuIGtleQoKICAgIGRlZiB1bnJlZ2lzdGVyKHNlbGYsIGZpbGVvYmopOgogICAgICAgIGtleSA9IHN1cGVyKCkudW5yZWdpc3RlcihmaWxlb2JqKQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmQpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICMgVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBGRCB3YXMgY2xvc2VkIHNpbmNlIGl0CiAgICAgICAgICAgICMgd2FzIHJlZ2lzdGVyZWQuCiAgICAgICAgICAgIHBhc3MKICAgICAgICByZXR1cm4ga2V5CgogICAgZGVmIG1vZGlmeShzZWxmLCBmaWxlb2JqLCBldmVudHMsIGRhdGE9Tm9uZSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBrZXkgPSBzZWxmLl9mZF90b19rZXlbc2VsZi5fZmlsZW9ial9sb29rdXAoZmlsZW9iaildCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByYWlzZSBLZXlFcnJvcihmIntmaWxlb2JqIXJ9IGlzIG5vdCByZWdpc3RlcmVkIikgZnJvbSBOb25lCgogICAgICAgIGNoYW5nZWQgPSBGYWxzZQogICAgICAgIGlmIGV2ZW50cyAhPSBrZXkuZXZlbnRzOgogICAgICAgICAgICBzZWxlY3Rvcl9ldmVudHMgPSAwCiAgICAgICAgICAgIGlmIGV2ZW50cyAmIEVWRU5UX1JFQUQ6CiAgICAgICAgICAgICAgICBzZWxlY3Rvcl9ldmVudHMgfD0gc2VsZi5fRVZFTlRfUkVBRAogICAgICAgICAgICBpZiBldmVudHMgJiBFVkVOVF9XUklURToKICAgICAgICAgICAgICAgIHNlbGVjdG9yX2V2ZW50cyB8PSBzZWxmLl9FVkVOVF9XUklURQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLl9zZWxlY3Rvci5tb2RpZnkoa2V5LmZkLCBzZWxlY3Rvcl9ldmVudHMpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHN1cGVyKCkudW5yZWdpc3RlcihmaWxlb2JqKQogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgY2hhbmdlZCA9IFRydWUKICAgICAgICBpZiBkYXRhICE9IGtleS5kYXRhOgogICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQoKICAgICAgICBpZiBjaGFuZ2VkOgogICAgICAgICAgICBrZXkgPSBrZXkuX3JlcGxhY2UoZXZlbnRzPWV2ZW50cywgZGF0YT1kYXRhKQogICAgICAgICAgICBzZWxmLl9mZF90b19rZXlba2V5LmZkXSA9IGtleQogICAgICAgIHJldHVybiBrZXkKCiAgICBkZWYgc2VsZWN0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIyBUaGlzIGlzIHNoYXJlZCBiZXR3ZWVuIHBvbGwoKSBhbmQgZXBvbGwoKS4KICAgICAgICAjIGVwb2xsKCkgaGFzIGEgZGlmZmVyZW50IHNpZ25hdHVyZSBhbmQgaGFuZGxpbmcgb2YgdGltZW91dCBwYXJhbWV0ZXIuCiAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgogICAgICAgICAgICB0aW1lb3V0ID0gTm9uZQogICAgICAgIGVsaWYgdGltZW91dCA8PSAwOgogICAgICAgICAgICB0aW1lb3V0ID0gMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgcG9sbCgpIGhhcyBhIHJlc29sdXRpb24gb2YgMSBtaWxsaXNlY29uZCwgcm91bmQgYXdheSBmcm9tCiAgICAgICAgICAgICMgemVybyB0byB3YWl0ICphdCBsZWFzdCogdGltZW91dCBzZWNvbmRzLgogICAgICAgICAgICB0aW1lb3V0ID0gbWF0aC5jZWlsKHRpbWVvdXQgKiAxZTMpCiAgICAgICAgcmVhZHkgPSBbXQogICAgICAgIHRyeToKICAgICAgICAgICAgZmRfZXZlbnRfbGlzdCA9IHNlbGYuX3NlbGVjdG9yLnBvbGwodGltZW91dCkKICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIHJlYWR5CiAgICAgICAgZm9yIGZkLCBldmVudCBpbiBmZF9ldmVudF9saXN0OgogICAgICAgICAgICBldmVudHMgPSAwCiAgICAgICAgICAgIGlmIGV2ZW50ICYgfnNlbGYuX0VWRU5UX1JFQUQ6CiAgICAgICAgICAgICAgICBldmVudHMgfD0gRVZFTlRfV1JJVEUKICAgICAgICAgICAgaWYgZXZlbnQgJiB+c2VsZi5fRVZFTlRfV1JJVEU6CiAgICAgICAgICAgICAgICBldmVudHMgfD0gRVZFTlRfUkVBRAoKICAgICAgICAgICAga2V5ID0gc2VsZi5fa2V5X2Zyb21fZmQoZmQpCiAgICAgICAgICAgIGlmIGtleToKICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZCgoa2V5LCBldmVudHMgJiBrZXkuZXZlbnRzKSkKICAgICAgICByZXR1cm4gcmVhZHkKCgppZiBoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKToKCiAgICBjbGFzcyBQb2xsU2VsZWN0b3IoX1BvbGxMaWtlU2VsZWN0b3IpOgogICAgICAgICIiIlBvbGwtYmFzZWQgc2VsZWN0b3IuIiIiCiAgICAgICAgX3NlbGVjdG9yX2NscyA9IHNlbGVjdC5wb2xsCiAgICAgICAgX0VWRU5UX1JFQUQgPSBzZWxlY3QuUE9MTElOCiAgICAgICAgX0VWRU5UX1dSSVRFID0gc2VsZWN0LlBPTExPVVQKCgppZiBoYXNhdHRyKHNlbGVjdCwgJ2Vwb2xsJyk6CgogICAgY2xhc3MgRXBvbGxTZWxlY3RvcihfUG9sbExpa2VTZWxlY3Rvcik6CiAgICAgICAgIiIiRXBvbGwtYmFzZWQgc2VsZWN0b3IuIiIiCiAgICAgICAgX3NlbGVjdG9yX2NscyA9IHNlbGVjdC5lcG9sbAogICAgICAgIF9FVkVOVF9SRUFEID0gc2VsZWN0LkVQT0xMSU4KICAgICAgICBfRVZFTlRfV1JJVEUgPSBzZWxlY3QuRVBPTExPVVQKCiAgICAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbGVjdG9yLmZpbGVubygpCgogICAgICAgIGRlZiBzZWxlY3Qoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgogICAgICAgICAgICAgICAgdGltZW91dCA9IC0xCiAgICAgICAgICAgIGVsaWYgdGltZW91dCA8PSAwOgogICAgICAgICAgICAgICAgdGltZW91dCA9IDAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgZXBvbGxfd2FpdCgpIGhhcyBhIHJlc29sdXRpb24gb2YgMSBtaWxsaXNlY29uZCwgcm91bmQgYXdheQogICAgICAgICAgICAgICAgIyBmcm9tIHplcm8gdG8gd2FpdCAqYXQgbGVhc3QqIHRpbWVvdXQgc2Vjb25kcy4KICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBtYXRoLmNlaWwodGltZW91dCAqIDFlMykgKiAxZS0zCgogICAgICAgICAgICAjIGVwb2xsX3dhaXQoKSBleHBlY3RzIGBtYXhldmVudHNgIHRvIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvOwogICAgICAgICAgICAjIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYHNlbGVjdCgpYCBjYW4gYmUgY2FsbGVkIHdoZW4gbm8KICAgICAgICAgICAgIyBGRCBpcyByZWdpc3RlcmVkLgogICAgICAgICAgICBtYXhfZXYgPSBtYXgobGVuKHNlbGYuX2ZkX3RvX2tleSksIDEpCgogICAgICAgICAgICByZWFkeSA9IFtdCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZkX2V2ZW50X2xpc3QgPSBzZWxmLl9zZWxlY3Rvci5wb2xsKHRpbWVvdXQsIG1heF9ldikKICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICByZXR1cm4gcmVhZHkKICAgICAgICAgICAgZm9yIGZkLCBldmVudCBpbiBmZF9ldmVudF9saXN0OgogICAgICAgICAgICAgICAgZXZlbnRzID0gMAogICAgICAgICAgICAgICAgaWYgZXZlbnQgJiB+c2VsZWN0LkVQT0xMSU46CiAgICAgICAgICAgICAgICAgICAgZXZlbnRzIHw9IEVWRU5UX1dSSVRFCiAgICAgICAgICAgICAgICBpZiBldmVudCAmIH5zZWxlY3QuRVBPTExPVVQ6CiAgICAgICAgICAgICAgICAgICAgZXZlbnRzIHw9IEVWRU5UX1JFQUQKCiAgICAgICAgICAgICAgICBrZXkgPSBzZWxmLl9rZXlfZnJvbV9mZChmZCkKICAgICAgICAgICAgICAgIGlmIGtleToKICAgICAgICAgICAgICAgICAgICByZWFkeS5hcHBlbmQoKGtleSwgZXZlbnRzICYga2V5LmV2ZW50cykpCiAgICAgICAgICAgIHJldHVybiByZWFkeQoKICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICAgIHNlbGYuX3NlbGVjdG9yLmNsb3NlKCkKICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCgoKaWYgaGFzYXR0cihzZWxlY3QsICdkZXZwb2xsJyk6CgogICAgY2xhc3MgRGV2cG9sbFNlbGVjdG9yKF9Qb2xsTGlrZVNlbGVjdG9yKToKICAgICAgICAiIiJTb2xhcmlzIC9kZXYvcG9sbCBzZWxlY3Rvci4iIiIKICAgICAgICBfc2VsZWN0b3JfY2xzID0gc2VsZWN0LmRldnBvbGwKICAgICAgICBfRVZFTlRfUkVBRCA9IHNlbGVjdC5QT0xMSU4KICAgICAgICBfRVZFTlRfV1JJVEUgPSBzZWxlY3QuUE9MTE9VVAoKICAgICAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0b3IuZmlsZW5vKCkKCiAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAgICBzZWxmLl9zZWxlY3Rvci5jbG9zZSgpCiAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQoKCmlmIGhhc2F0dHIoc2VsZWN0LCAna3F1ZXVlJyk6CgogICAgY2xhc3MgS3F1ZXVlU2VsZWN0b3IoX0Jhc2VTZWxlY3RvckltcGwpOgogICAgICAgICIiIktxdWV1ZS1iYXNlZCBzZWxlY3Rvci4iIiIKCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IgPSBzZWxlY3Qua3F1ZXVlKCkKCiAgICAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbGVjdG9yLmZpbGVubygpCgogICAgICAgIGRlZiByZWdpc3RlcihzZWxmLCBmaWxlb2JqLCBldmVudHMsIGRhdGE9Tm9uZSk6CiAgICAgICAgICAgIGtleSA9IHN1cGVyKCkucmVnaXN0ZXIoZmlsZW9iaiwgZXZlbnRzLCBkYXRhKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBldmVudHMgJiBFVkVOVF9SRUFEOgogICAgICAgICAgICAgICAgICAgIGtldiA9IHNlbGVjdC5rZXZlbnQoa2V5LmZkLCBzZWxlY3QuS1FfRklMVEVSX1JFQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QuS1FfRVZfQUREKQogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbGVjdG9yLmNvbnRyb2woW2tldl0sIDAsIDApCiAgICAgICAgICAgICAgICBpZiBldmVudHMgJiBFVkVOVF9XUklURToKICAgICAgICAgICAgICAgICAgICBrZXYgPSBzZWxlY3Qua2V2ZW50KGtleS5mZCwgc2VsZWN0LktRX0ZJTFRFUl9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5LUV9FVl9BREQpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IuY29udHJvbChba2V2XSwgMCwgMCkKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgc3VwZXIoKS51bnJlZ2lzdGVyKGZpbGVvYmopCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICByZXR1cm4ga2V5CgogICAgICAgIGRlZiB1bnJlZ2lzdGVyKHNlbGYsIGZpbGVvYmopOgogICAgICAgICAgICBrZXkgPSBzdXBlcigpLnVucmVnaXN0ZXIoZmlsZW9iaikKICAgICAgICAgICAgaWYga2V5LmV2ZW50cyAmIEVWRU5UX1JFQUQ6CiAgICAgICAgICAgICAgICBrZXYgPSBzZWxlY3Qua2V2ZW50KGtleS5mZCwgc2VsZWN0LktRX0ZJTFRFUl9SRUFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QuS1FfRVZfREVMRVRFKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbGVjdG9yLmNvbnRyb2woW2tldl0sIDAsIDApCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgRkQgd2FzIGNsb3NlZCBzaW5jZSBpdAogICAgICAgICAgICAgICAgICAgICMgd2FzIHJlZ2lzdGVyZWQuCiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBpZiBrZXkuZXZlbnRzICYgRVZFTlRfV1JJVEU6CiAgICAgICAgICAgICAgICBrZXYgPSBzZWxlY3Qua2V2ZW50KGtleS5mZCwgc2VsZWN0LktRX0ZJTFRFUl9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LktRX0VWX0RFTEVURSkKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWxlY3Rvci5jb250cm9sKFtrZXZdLCAwLCAwKQogICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIyBTZWUgY29tbWVudCBhYm92ZS4KICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHJldHVybiBrZXkKCiAgICAgICAgZGVmIHNlbGVjdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAgICB0aW1lb3V0ID0gTm9uZSBpZiB0aW1lb3V0IGlzIE5vbmUgZWxzZSBtYXgodGltZW91dCwgMCkKICAgICAgICAgICAgIyBJZiBtYXhfZXYgaXMgMCwga3F1ZXVlIHdpbGwgaWdub3JlIHRoZSB0aW1lb3V0LiBGb3IgY29uc2lzdGVudAogICAgICAgICAgICAjIGJlaGF2aW9yIHdpdGggdGhlIG90aGVyIHNlbGVjdG9yIGNsYXNzZXMsIHdlIHByZXZlbnQgdGhhdCBoZXJlCiAgICAgICAgICAgICMgKHVzaW5nIG1heCkuIFNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI5MjU1CiAgICAgICAgICAgIG1heF9ldiA9IG1heChsZW4oc2VsZi5fZmRfdG9fa2V5KSwgMSkKICAgICAgICAgICAgcmVhZHkgPSBbXQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBrZXZfbGlzdCA9IHNlbGYuX3NlbGVjdG9yLmNvbnRyb2woTm9uZSwgbWF4X2V2LCB0aW1lb3V0KQogICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgICAgIHJldHVybiByZWFkeQogICAgICAgICAgICBmb3Iga2V2IGluIGtldl9saXN0OgogICAgICAgICAgICAgICAgZmQgPSBrZXYuaWRlbnQKICAgICAgICAgICAgICAgIGZsYWcgPSBrZXYuZmlsdGVyCiAgICAgICAgICAgICAgICBldmVudHMgPSAwCiAgICAgICAgICAgICAgICBpZiBmbGFnID09IHNlbGVjdC5LUV9GSUxURVJfUkVBRDoKICAgICAgICAgICAgICAgICAgICBldmVudHMgfD0gRVZFTlRfUkVBRAogICAgICAgICAgICAgICAgaWYgZmxhZyA9PSBzZWxlY3QuS1FfRklMVEVSX1dSSVRFOgogICAgICAgICAgICAgICAgICAgIGV2ZW50cyB8PSBFVkVOVF9XUklURQoKICAgICAgICAgICAgICAgIGtleSA9IHNlbGYuX2tleV9mcm9tX2ZkKGZkKQogICAgICAgICAgICAgICAgaWYga2V5OgogICAgICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZCgoa2V5LCBldmVudHMgJiBrZXkuZXZlbnRzKSkKICAgICAgICAgICAgcmV0dXJuIHJlYWR5CgogICAgICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IuY2xvc2UoKQogICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKCgpkZWYgX2Nhbl91c2UobWV0aG9kKToKICAgICIiIkNoZWNrIGlmIHdlIGNhbiB1c2UgdGhlIHNlbGVjdG9yIGRlcGVuZGluZyB1cG9uIHRoZQogICAgb3BlcmF0aW5nIHN5c3RlbS4gIiIiCiAgICAjIEltcGxlbWVudGF0aW9uIGJhc2VkIHVwb24gaHR0cHM6Ly9naXRodWIuY29tL3NldGhtbGFyc29uL3NlbGVjdG9yczIvYmxvYi9tYXN0ZXIvc2VsZWN0b3JzMi5weQogICAgc2VsZWN0b3IgPSBnZXRhdHRyKHNlbGVjdCwgbWV0aG9kLCBOb25lKQogICAgaWYgc2VsZWN0b3IgaXMgTm9uZToKICAgICAgICAjIHNlbGVjdCBtb2R1bGUgZG9lcyBub3QgaW1wbGVtZW50IG1ldGhvZAogICAgICAgIHJldHVybiBGYWxzZQogICAgIyBjaGVjayBpZiB0aGUgT1MgYW5kIEtlcm5lbCBhY3R1YWxseSBzdXBwb3J0IHRoZSBtZXRob2QuIENhbGwgbWF5IGZhaWwgd2l0aAogICAgIyBPU0Vycm9yOiBbRXJybm8gMzhdIEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZAogICAgdHJ5OgogICAgICAgIHNlbGVjdG9yX29iaiA9IHNlbGVjdG9yKCkKICAgICAgICBpZiBtZXRob2QgPT0gJ3BvbGwnOgogICAgICAgICAgICAjIGNoZWNrIHRoYXQgcG9sbCBhY3R1YWxseSB3b3JrcwogICAgICAgICAgICBzZWxlY3Rvcl9vYmoucG9sbCgwKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgY2xvc2UgZXBvbGwsIGtxdWV1ZSwgYW5kIGRldnBvbGwgZmQKICAgICAgICAgICAgc2VsZWN0b3Jfb2JqLmNsb3NlKCkKICAgICAgICByZXR1cm4gVHJ1ZQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcmV0dXJuIEZhbHNlCgoKIyBDaG9vc2UgdGhlIGJlc3QgaW1wbGVtZW50YXRpb24sIHJvdWdobHk6CiMgICAgZXBvbGx8a3F1ZXVlfGRldnBvbGwgPiBwb2xsID4gc2VsZWN0LgojIHNlbGVjdCgpIGFsc28gY2FuJ3QgYWNjZXB0IGEgRkQgPiBGRF9TRVRTSVpFICh1c3VhbGx5IGFyb3VuZCAxMDI0KQppZiBfY2FuX3VzZSgna3F1ZXVlJyk6CiAgICBEZWZhdWx0U2VsZWN0b3IgPSBLcXVldWVTZWxlY3RvcgplbGlmIF9jYW5fdXNlKCdlcG9sbCcpOgogICAgRGVmYXVsdFNlbGVjdG9yID0gRXBvbGxTZWxlY3RvcgplbGlmIF9jYW5fdXNlKCdkZXZwb2xsJyk6CiAgICBEZWZhdWx0U2VsZWN0b3IgPSBEZXZwb2xsU2VsZWN0b3IKZWxpZiBfY2FuX3VzZSgncG9sbCcpOgogICAgRGVmYXVsdFNlbGVjdG9yID0gUG9sbFNlbGVjdG9yCmVsc2U6CiAgICBEZWZhdWx0U2VsZWN0b3IgPSBTZWxlY3RTZWxlY3RvcgpQSwMEFAAAAAAAAiCjVsfaJv9wIQAAcCEAAAkAAABzaGVsdmUucHkiIiJNYW5hZ2Ugc2hlbHZlcyBvZiBwaWNrbGVkIG9iamVjdHMuCgpBICJzaGVsZiIgaXMgYSBwZXJzaXN0ZW50LCBkaWN0aW9uYXJ5LWxpa2Ugb2JqZWN0LiAgVGhlIGRpZmZlcmVuY2UKd2l0aCBkYm0gZGF0YWJhc2VzIGlzIHRoYXQgdGhlIHZhbHVlcyAobm90IHRoZSBrZXlzISkgaW4gYSBzaGVsZiBjYW4KYmUgZXNzZW50aWFsbHkgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzIC0tIGFueXRoaW5nIHRoYXQgdGhlICJwaWNrbGUiCm1vZHVsZSBjYW4gaGFuZGxlLiAgVGhpcyBpbmNsdWRlcyBtb3N0IGNsYXNzIGluc3RhbmNlcywgcmVjdXJzaXZlIGRhdGEKdHlwZXMsIGFuZCBvYmplY3RzIGNvbnRhaW5pbmcgbG90cyBvZiBzaGFyZWQgc3ViLW9iamVjdHMuICBUaGUga2V5cwphcmUgb3JkaW5hcnkgc3RyaW5ncy4KClRvIHN1bW1hcml6ZSB0aGUgaW50ZXJmYWNlIChrZXkgaXMgYSBzdHJpbmcsIGRhdGEgaXMgYW4gYXJiaXRyYXJ5Cm9iamVjdCk6CgogICAgICAgIGltcG9ydCBzaGVsdmUKICAgICAgICBkID0gc2hlbHZlLm9wZW4oZmlsZW5hbWUpICMgb3Blbiwgd2l0aCAoZylkYm0gZmlsZW5hbWUgLS0gbm8gc3VmZml4CgogICAgICAgIGRba2V5XSA9IGRhdGEgICAjIHN0b3JlIGRhdGEgYXQga2V5IChvdmVyd3JpdGVzIG9sZCBkYXRhIGlmCiAgICAgICAgICAgICAgICAgICAgICAgICMgdXNpbmcgYW4gZXhpc3Rpbmcga2V5KQogICAgICAgIGRhdGEgPSBkW2tleV0gICAjIHJldHJpZXZlIGEgQ09QWSBvZiB0aGUgZGF0YSBhdCBrZXkgKHJhaXNlCiAgICAgICAgICAgICAgICAgICAgICAgICMgS2V5RXJyb3IgaWYgbm8gc3VjaCBrZXkpIC0tIE5PVEUgdGhhdCB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWNjZXNzIHJldHVybnMgYSAqY29weSogb2YgdGhlIGVudHJ5IQogICAgICAgIGRlbCBkW2tleV0gICAgICAjIGRlbGV0ZSBkYXRhIHN0b3JlZCBhdCBrZXkgKHJhaXNlcyBLZXlFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAjIGlmIG5vIHN1Y2gga2V5KQogICAgICAgIGZsYWcgPSBrZXkgaW4gZCAjIHRydWUgaWYgdGhlIGtleSBleGlzdHMKICAgICAgICBsaXN0ID0gZC5rZXlzKCkgIyBhIGxpc3Qgb2YgYWxsIGV4aXN0aW5nIGtleXMgKHNsb3chKQoKICAgICAgICBkLmNsb3NlKCkgICAgICAgIyBjbG9zZSBpdAoKRGVwZW5kZW50IG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgY2xvc2luZyBhIHBlcnNpc3RlbnQgZGljdGlvbmFyeSBtYXkKb3IgbWF5IG5vdCBiZSBuZWNlc3NhcnkgdG8gZmx1c2ggY2hhbmdlcyB0byBkaXNrLgoKTm9ybWFsbHksIGRba2V5XSByZXR1cm5zIGEgQ09QWSBvZiB0aGUgZW50cnkuICBUaGlzIG5lZWRzIGNhcmUgd2hlbgptdXRhYmxlIGVudHJpZXMgYXJlIG11dGF0ZWQ6IGZvciBleGFtcGxlLCBpZiBkW2tleV0gaXMgYSBsaXN0LAogICAgICAgIGRba2V5XS5hcHBlbmQoYW5pdGVtKQpkb2VzIE5PVCBtb2RpZnkgdGhlIGVudHJ5IGRba2V5XSBpdHNlbGYsIGFzIHN0b3JlZCBpbiB0aGUgcGVyc2lzdGVudAptYXBwaW5nIC0tIGl0IG9ubHkgbW9kaWZpZXMgdGhlIGNvcHksIHdoaWNoIGlzIHRoZW4gaW1tZWRpYXRlbHkKZGlzY2FyZGVkLCBzbyB0aGF0IHRoZSBhcHBlbmQgaGFzIE5PIGVmZmVjdCB3aGF0c29ldmVyLiAgVG8gYXBwZW5kIGFuCml0ZW0gdG8gZFtrZXldIGluIGEgd2F5IHRoYXQgd2lsbCBhZmZlY3QgdGhlIHBlcnNpc3RlbnQgbWFwcGluZywgdXNlOgogICAgICAgIGRhdGEgPSBkW2tleV0KICAgICAgICBkYXRhLmFwcGVuZChhbml0ZW0pCiAgICAgICAgZFtrZXldID0gZGF0YQoKVG8gYXZvaWQgdGhlIHByb2JsZW0gd2l0aCBtdXRhYmxlIGVudHJpZXMsIHlvdSBtYXkgcGFzcyB0aGUga2V5d29yZAphcmd1bWVudCB3cml0ZWJhY2s9VHJ1ZSBpbiB0aGUgY2FsbCB0byBzaGVsdmUub3Blbi4gIFdoZW4geW91IHVzZToKICAgICAgICBkID0gc2hlbHZlLm9wZW4oZmlsZW5hbWUsIHdyaXRlYmFjaz1UcnVlKQp0aGVuIGQga2VlcHMgYSBjYWNoZSBvZiBhbGwgZW50cmllcyB5b3UgYWNjZXNzLCBhbmQgd3JpdGVzIHRoZW0gYWxsIGJhY2sKdG8gdGhlIHBlcnNpc3RlbnQgbWFwcGluZyB3aGVuIHlvdSBjYWxsIGQuY2xvc2UoKS4gIFRoaXMgZW5zdXJlcyB0aGF0CnN1Y2ggdXNhZ2UgYXMgZFtrZXldLmFwcGVuZChhbml0ZW0pIHdvcmtzIGFzIGludGVuZGVkLgoKSG93ZXZlciwgdXNpbmcga2V5d29yZCBhcmd1bWVudCB3cml0ZWJhY2s9VHJ1ZSBtYXkgY29uc3VtZSB2YXN0IGFtb3VudApvZiBtZW1vcnkgZm9yIHRoZSBjYWNoZSwgYW5kIGl0IG1heSBtYWtlIGQuY2xvc2UoKSB2ZXJ5IHNsb3csIGlmIHlvdQphY2Nlc3MgbWFueSBvZiBkJ3MgZW50cmllcyBhZnRlciBvcGVuaW5nIGl0IGluIHRoaXMgd2F5OiBkIGhhcyBubyB3YXkgdG8KY2hlY2sgd2hpY2ggb2YgdGhlIGVudHJpZXMgeW91IGFjY2VzcyBhcmUgbXV0YWJsZSBhbmQvb3Igd2hpY2ggb25lcyB5b3UKYWN0dWFsbHkgbXV0YXRlLCBzbyBpdCBtdXN0IGNhY2hlLCBhbmQgd3JpdGUgYmFjayBhdCBjbG9zZSwgYWxsIG9mIHRoZQplbnRyaWVzIHRoYXQgeW91IGFjY2Vzcy4gIFlvdSBjYW4gY2FsbCBkLnN5bmMoKSB0byB3cml0ZSBiYWNrIGFsbCB0aGUKZW50cmllcyBpbiB0aGUgY2FjaGUsIGFuZCBlbXB0eSB0aGUgY2FjaGUgKGQuc3luYygpIGFsc28gc3luY2hyb25pemVzCnRoZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnkgb24gZGlzaywgaWYgZmVhc2libGUpLgoiIiIKCmZyb20gcGlja2xlIGltcG9ydCBERUZBVUxUX1BST1RPQ09MLCBQaWNrbGVyLCBVbnBpY2tsZXIKZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwoKaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwoKX19hbGxfXyA9IFsiU2hlbGYiLCAiQnNkRGJTaGVsZiIsICJEYmZpbGVuYW1lU2hlbGYiLCAib3BlbiJdCgpjbGFzcyBfQ2xvc2VkRGljdChjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmcpOgogICAgJ01hcmtlciBmb3IgYSBjbG9zZWQgZGljdC4gIEFjY2VzcyBhdHRlbXB0cyByYWlzZSBhIFZhbHVlRXJyb3IuJwoKICAgIGRlZiBjbG9zZWQoc2VsZiwgKmFyZ3MpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgb3BlcmF0aW9uIG9uIGNsb3NlZCBzaGVsZicpCiAgICBfX2l0ZXJfXyA9IF9fbGVuX18gPSBfX2dldGl0ZW1fXyA9IF9fc2V0aXRlbV9fID0gX19kZWxpdGVtX18gPSBrZXlzID0gY2xvc2VkCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnPENsb3NlZCBEaWN0aW9uYXJ5PicKCgpjbGFzcyBTaGVsZihjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmcpOgogICAgIiIiQmFzZSBjbGFzcyBmb3Igc2hlbGYgaW1wbGVtZW50YXRpb25zLgoKICAgIFRoaXMgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGRpY3Rpb25hcnktbGlrZSBvYmplY3QuCiAgICBTZWUgdGhlIG1vZHVsZSdzIF9fZG9jX18gc3RyaW5nIGZvciBhbiBvdmVydmlldyBvZiB0aGUgaW50ZXJmYWNlLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpY3QsIHByb3RvY29sPU5vbmUsIHdyaXRlYmFjaz1GYWxzZSwKICAgICAgICAgICAgICAgICBrZXllbmNvZGluZz0idXRmLTgiKToKICAgICAgICBzZWxmLmRpY3QgPSBkaWN0CiAgICAgICAgaWYgcHJvdG9jb2wgaXMgTm9uZToKICAgICAgICAgICAgcHJvdG9jb2wgPSBERUZBVUxUX1BST1RPQ09MCiAgICAgICAgc2VsZi5fcHJvdG9jb2wgPSBwcm90b2NvbAogICAgICAgIHNlbGYud3JpdGViYWNrID0gd3JpdGViYWNrCiAgICAgICAgc2VsZi5jYWNoZSA9IHt9CiAgICAgICAgc2VsZi5rZXllbmNvZGluZyA9IGtleWVuY29kaW5nCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIGZvciBrIGluIHNlbGYuZGljdC5rZXlzKCk6CiAgICAgICAgICAgIHlpZWxkIGsuZGVjb2RlKHNlbGYua2V5ZW5jb2RpbmcpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRpY3QpCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgIHJldHVybiBrZXkuZW5jb2RlKHNlbGYua2V5ZW5jb2RpbmcpIGluIHNlbGYuZGljdAoKICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgogICAgICAgIGlmIGtleS5lbmNvZGUoc2VsZi5rZXllbmNvZGluZykgaW4gc2VsZi5kaWN0OgogICAgICAgICAgICByZXR1cm4gc2VsZltrZXldCiAgICAgICAgcmV0dXJuIGRlZmF1bHQKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlID0gc2VsZi5jYWNoZVtrZXldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBmID0gQnl0ZXNJTyhzZWxmLmRpY3Rba2V5LmVuY29kZShzZWxmLmtleWVuY29kaW5nKV0pCiAgICAgICAgICAgIHZhbHVlID0gVW5waWNrbGVyKGYpLmxvYWQoKQogICAgICAgICAgICBpZiBzZWxmLndyaXRlYmFjazoKICAgICAgICAgICAgICAgIHNlbGYuY2FjaGVba2V5XSA9IHZhbHVlCiAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgIGlmIHNlbGYud3JpdGViYWNrOgogICAgICAgICAgICBzZWxmLmNhY2hlW2tleV0gPSB2YWx1ZQogICAgICAgIGYgPSBCeXRlc0lPKCkKICAgICAgICBwID0gUGlja2xlcihmLCBzZWxmLl9wcm90b2NvbCkKICAgICAgICBwLmR1bXAodmFsdWUpCiAgICAgICAgc2VsZi5kaWN0W2tleS5lbmNvZGUoc2VsZi5rZXllbmNvZGluZyldID0gZi5nZXR2YWx1ZSgpCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgZGVsIHNlbGYuZGljdFtrZXkuZW5jb2RlKHNlbGYua2V5ZW5jb2RpbmcpXQogICAgICAgIHRyeToKICAgICAgICAgICAgZGVsIHNlbGYuY2FjaGVba2V5XQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CiAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZGljdCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuc3luYygpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuZGljdC5jbG9zZSgpCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIENhdGNoIGVycm9ycyB0aGF0IG1heSBoYXBwZW4gd2hlbiBjbG9zZSBpcyBjYWxsZWQgZnJvbSBfX2RlbF9fCiAgICAgICAgICAgICMgYmVjYXVzZSBDUHl0aG9uIGlzIGluIGludGVycHJldGVyIHNodXRkb3duLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLmRpY3QgPSBfQ2xvc2VkRGljdCgpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHNlbGYuZGljdCA9IE5vbmUKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnd3JpdGViYWNrJyk6CiAgICAgICAgICAgICMgX19pbml0X18gZGlkbid0IHN1Y2NlZWQsIHNvIGRvbid0IGJvdGhlciBjbG9zaW5nCiAgICAgICAgICAgICMgc2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzM5MDA3IGZvciBkZXRhaWxzCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBzeW5jKHNlbGYpOgogICAgICAgIGlmIHNlbGYud3JpdGViYWNrIGFuZCBzZWxmLmNhY2hlOgogICAgICAgICAgICBzZWxmLndyaXRlYmFjayA9IEZhbHNlCiAgICAgICAgICAgIGZvciBrZXksIGVudHJ5IGluIHNlbGYuY2FjaGUuaXRlbXMoKToKICAgICAgICAgICAgICAgIHNlbGZba2V5XSA9IGVudHJ5CiAgICAgICAgICAgIHNlbGYud3JpdGViYWNrID0gVHJ1ZQogICAgICAgICAgICBzZWxmLmNhY2hlID0ge30KICAgICAgICBpZiBoYXNhdHRyKHNlbGYuZGljdCwgJ3N5bmMnKToKICAgICAgICAgICAgc2VsZi5kaWN0LnN5bmMoKQoKCmNsYXNzIEJzZERiU2hlbGYoU2hlbGYpOgogICAgIiIiU2hlbGYgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlICJCU0QiIGRiIGludGVyZmFjZS4KCiAgICBUaGlzIGFkZHMgbWV0aG9kcyBmaXJzdCgpLCBuZXh0KCksIHByZXZpb3VzKCksIGxhc3QoKSBhbmQKICAgIHNldF9sb2NhdGlvbigpIHRoYXQgaGF2ZSBubyBjb3VudGVycGFydCBpbiBbZ11kYm0gZGF0YWJhc2VzLgoKICAgIFRoZSBhY3R1YWwgZGF0YWJhc2UgbXVzdCBiZSBvcGVuZWQgdXNpbmcgb25lIG9mIHRoZSAiYnNkZGIiCiAgICBtb2R1bGVzICJvcGVuIiByb3V0aW5lcyAoaS5lLiBic2RkYi5oYXNob3BlbiwgYnNkZGIuYnRvcGVuIG9yCiAgICBic2RkYi5ybm9wZW4pIGFuZCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLgoKICAgIFNlZSB0aGUgbW9kdWxlJ3MgX19kb2NfXyBzdHJpbmcgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBpbnRlcmZhY2UuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZGljdCwgcHJvdG9jb2w9Tm9uZSwgd3JpdGViYWNrPUZhbHNlLAogICAgICAgICAgICAgICAgIGtleWVuY29kaW5nPSJ1dGYtOCIpOgogICAgICAgIFNoZWxmLl9faW5pdF9fKHNlbGYsIGRpY3QsIHByb3RvY29sLCB3cml0ZWJhY2ssIGtleWVuY29kaW5nKQoKICAgIGRlZiBzZXRfbG9jYXRpb24oc2VsZiwga2V5KToKICAgICAgICAoa2V5LCB2YWx1ZSkgPSBzZWxmLmRpY3Quc2V0X2xvY2F0aW9uKGtleSkKICAgICAgICBmID0gQnl0ZXNJTyh2YWx1ZSkKICAgICAgICByZXR1cm4gKGtleS5kZWNvZGUoc2VsZi5rZXllbmNvZGluZyksIFVucGlja2xlcihmKS5sb2FkKCkpCgogICAgZGVmIG5leHQoc2VsZik6CiAgICAgICAgKGtleSwgdmFsdWUpID0gbmV4dChzZWxmLmRpY3QpCiAgICAgICAgZiA9IEJ5dGVzSU8odmFsdWUpCiAgICAgICAgcmV0dXJuIChrZXkuZGVjb2RlKHNlbGYua2V5ZW5jb2RpbmcpLCBVbnBpY2tsZXIoZikubG9hZCgpKQoKICAgIGRlZiBwcmV2aW91cyhzZWxmKToKICAgICAgICAoa2V5LCB2YWx1ZSkgPSBzZWxmLmRpY3QucHJldmlvdXMoKQogICAgICAgIGYgPSBCeXRlc0lPKHZhbHVlKQogICAgICAgIHJldHVybiAoa2V5LmRlY29kZShzZWxmLmtleWVuY29kaW5nKSwgVW5waWNrbGVyKGYpLmxvYWQoKSkKCiAgICBkZWYgZmlyc3Qoc2VsZik6CiAgICAgICAgKGtleSwgdmFsdWUpID0gc2VsZi5kaWN0LmZpcnN0KCkKICAgICAgICBmID0gQnl0ZXNJTyh2YWx1ZSkKICAgICAgICByZXR1cm4gKGtleS5kZWNvZGUoc2VsZi5rZXllbmNvZGluZyksIFVucGlja2xlcihmKS5sb2FkKCkpCgogICAgZGVmIGxhc3Qoc2VsZik6CiAgICAgICAgKGtleSwgdmFsdWUpID0gc2VsZi5kaWN0Lmxhc3QoKQogICAgICAgIGYgPSBCeXRlc0lPKHZhbHVlKQogICAgICAgIHJldHVybiAoa2V5LmRlY29kZShzZWxmLmtleWVuY29kaW5nKSwgVW5waWNrbGVyKGYpLmxvYWQoKSkKCgpjbGFzcyBEYmZpbGVuYW1lU2hlbGYoU2hlbGYpOgogICAgIiIiU2hlbGYgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlICJkYm0iIGdlbmVyaWMgZGJtIGludGVyZmFjZS4KCiAgICBUaGlzIGlzIGluaXRpYWxpemVkIHdpdGggdGhlIGZpbGVuYW1lIGZvciB0aGUgZGJtIGRhdGFiYXNlLgogICAgU2VlIHRoZSBtb2R1bGUncyBfX2RvY19fIHN0cmluZyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGludGVyZmFjZS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZmxhZz0nYycsIHByb3RvY29sPU5vbmUsIHdyaXRlYmFjaz1GYWxzZSk6CiAgICAgICAgaW1wb3J0IGRibQogICAgICAgIFNoZWxmLl9faW5pdF9fKHNlbGYsIGRibS5vcGVuKGZpbGVuYW1lLCBmbGFnKSwgcHJvdG9jb2wsIHdyaXRlYmFjaykKCgpkZWYgb3BlbihmaWxlbmFtZSwgZmxhZz0nYycsIHByb3RvY29sPU5vbmUsIHdyaXRlYmFjaz1GYWxzZSk6CiAgICAiIiJPcGVuIGEgcGVyc2lzdGVudCBkaWN0aW9uYXJ5IGZvciByZWFkaW5nIGFuZCB3cml0aW5nLgoKICAgIFRoZSBmaWxlbmFtZSBwYXJhbWV0ZXIgaXMgdGhlIGJhc2UgZmlsZW5hbWUgZm9yIHRoZSB1bmRlcmx5aW5nCiAgICBkYXRhYmFzZS4gIEFzIGEgc2lkZS1lZmZlY3QsIGFuIGV4dGVuc2lvbiBtYXkgYmUgYWRkZWQgdG8gdGhlCiAgICBmaWxlbmFtZSBhbmQgbW9yZSB0aGFuIG9uZSBmaWxlIG1heSBiZSBjcmVhdGVkLiAgVGhlIG9wdGlvbmFsIGZsYWcKICAgIHBhcmFtZXRlciBoYXMgdGhlIHNhbWUgaW50ZXJwcmV0YXRpb24gYXMgdGhlIGZsYWcgcGFyYW1ldGVyIG9mCiAgICBkYm0ub3BlbigpLiBUaGUgb3B0aW9uYWwgcHJvdG9jb2wgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUKICAgIHZlcnNpb24gb2YgdGhlIHBpY2tsZSBwcm90b2NvbC4KCiAgICBTZWUgdGhlIG1vZHVsZSdzIF9fZG9jX18gc3RyaW5nIGZvciBhbiBvdmVydmlldyBvZiB0aGUgaW50ZXJmYWNlLgogICAgIiIiCgogICAgcmV0dXJuIERiZmlsZW5hbWVTaGVsZihmaWxlbmFtZSwgZmxhZywgcHJvdG9jb2wsIHdyaXRlYmFjaykKUEsDBBQAAAAAAAIgo1YNMr2OvTQAAL00AAAIAAAAc2hsZXgucHkiIiJBIGxleGljYWwgYW5hbHl6ZXIgY2xhc3MgZm9yIHNpbXBsZSBzaGVsbC1saWtlIHN5bnRheGVzLiIiIgoKIyBNb2R1bGUgYW5kIGRvY3VtZW50YXRpb24gYnkgRXJpYyBTLiBSYXltb25kLCAyMSBEZWMgMTk5OAojIElucHV0IHN0YWNraW5nIGFuZCBlcnJvciBtZXNzYWdlIGNsZWFudXAgYWRkZWQgYnkgRVNSLCBNYXJjaCAyMDAwCiMgcHVzaF9zb3VyY2UoKSBhbmQgcG9wX3NvdXJjZSgpIG1hZGUgZXhwbGljaXQgYnkgRVNSLCBKYW51YXJ5IDIwMDEuCiMgUG9zaXggY29tcGxpYW5jZSwgc3BsaXQoKSwgc3RyaW5nIGFyZ3VtZW50cywgYW5kCiMgaXRlcmF0b3IgaW50ZXJmYWNlIGJ5IEd1c3Rhdm8gTmllbWV5ZXIsIEFwcmlsIDIwMDMuCiMgY2hhbmdlcyB0byB0b2tlbml6ZSBtb3JlIGxpa2UgUG9zaXggc2hlbGxzIGJ5IFZpbmF5IFNhamlwLCBKdWx5IDIwMTYuCgppbXBvcnQgb3MKaW1wb3J0IHJlCmltcG9ydCBzeXMKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKCmZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCgpfX2FsbF9fID0gWyJzaGxleCIsICJzcGxpdCIsICJxdW90ZSIsICJqb2luIl0KCmNsYXNzIHNobGV4OgogICAgIkEgbGV4aWNhbCBhbmFseXplciBjbGFzcyBmb3Igc2ltcGxlIHNoZWxsLWxpa2Ugc3ludGF4ZXMuIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwKICAgICAgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycz1GYWxzZSk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShpbnN0cmVhbSwgc3RyKToKICAgICAgICAgICAgaW5zdHJlYW0gPSBTdHJpbmdJTyhpbnN0cmVhbSkKICAgICAgICBpZiBpbnN0cmVhbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5pbnN0cmVhbSA9IGluc3RyZWFtCiAgICAgICAgICAgIHNlbGYuaW5maWxlID0gaW5maWxlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5pbnN0cmVhbSA9IHN5cy5zdGRpbgogICAgICAgICAgICBzZWxmLmluZmlsZSA9IE5vbmUKICAgICAgICBzZWxmLnBvc2l4ID0gcG9zaXgKICAgICAgICBpZiBwb3NpeDoKICAgICAgICAgICAgc2VsZi5lb2YgPSBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5lb2YgPSAnJwogICAgICAgIHNlbGYuY29tbWVudGVycyA9ICcjJwogICAgICAgIHNlbGYud29yZGNoYXJzID0gKCdhYmNkZmVnaGlqa2xtbm9wcXJzdHV2d3h5eicKICAgICAgICAgICAgICAgICAgICAgICAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5XycpCiAgICAgICAgaWYgc2VsZi5wb3NpeDoKICAgICAgICAgICAgc2VsZi53b3JkY2hhcnMgKz0gKCfDn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDuMO5w7rDu8O8w73DvsO/JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDmMOZw5rDm8Ocw53DnicpCiAgICAgICAgc2VsZi53aGl0ZXNwYWNlID0gJyBcdFxyXG4nCiAgICAgICAgc2VsZi53aGl0ZXNwYWNlX3NwbGl0ID0gRmFsc2UKICAgICAgICBzZWxmLnF1b3RlcyA9ICdcJyInCiAgICAgICAgc2VsZi5lc2NhcGUgPSAnXFwnCiAgICAgICAgc2VsZi5lc2NhcGVkcXVvdGVzID0gJyInCiAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwogICAgICAgIHNlbGYucHVzaGJhY2sgPSBkZXF1ZSgpCiAgICAgICAgc2VsZi5saW5lbm8gPSAxCiAgICAgICAgc2VsZi5kZWJ1ZyA9IDAKICAgICAgICBzZWxmLnRva2VuID0gJycKICAgICAgICBzZWxmLmZpbGVzdGFjayA9IGRlcXVlKCkKICAgICAgICBzZWxmLnNvdXJjZSA9IE5vbmUKICAgICAgICBpZiBub3QgcHVuY3R1YXRpb25fY2hhcnM6CiAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzID0gJycKICAgICAgICBlbGlmIHB1bmN0dWF0aW9uX2NoYXJzIGlzIFRydWU6CiAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzID0gJygpOzw+fCYnCiAgICAgICAgc2VsZi5fcHVuY3R1YXRpb25fY2hhcnMgPSBwdW5jdHVhdGlvbl9jaGFycwogICAgICAgIGlmIHB1bmN0dWF0aW9uX2NoYXJzOgogICAgICAgICAgICAjIF9wdXNoYmFja19jaGFycyBpcyBhIHB1c2ggYmFjayBxdWV1ZSB1c2VkIGJ5IGxvb2thaGVhZCBsb2dpYwogICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycyA9IGRlcXVlKCkKICAgICAgICAgICAgIyB0aGVzZSBjaGFycyBhZGRlZCBiZWNhdXNlIGFsbG93ZWQgaW4gZmlsZSBuYW1lcywgYXJncywgd2lsZGNhcmRzCiAgICAgICAgICAgIHNlbGYud29yZGNoYXJzICs9ICd+LS4vKj89JwogICAgICAgICAgICAjcmVtb3ZlIGFueSBwdW5jdHVhdGlvbiBjaGFycyBmcm9tIHdvcmRjaGFycwogICAgICAgICAgICB0ID0gc2VsZi53b3JkY2hhcnMubWFrZXRyYW5zKGRpY3QuZnJvbWtleXMocHVuY3R1YXRpb25fY2hhcnMpKQogICAgICAgICAgICBzZWxmLndvcmRjaGFycyA9IHNlbGYud29yZGNoYXJzLnRyYW5zbGF0ZSh0KQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHB1bmN0dWF0aW9uX2NoYXJzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9wdW5jdHVhdGlvbl9jaGFycwoKICAgIGRlZiBwdXNoX3Rva2VuKHNlbGYsIHRvayk6CiAgICAgICAgIlB1c2ggYSB0b2tlbiBvbnRvIHRoZSBzdGFjayBwb3BwZWQgYnkgdGhlIGdldF90b2tlbiBtZXRob2QiCiAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAxOgogICAgICAgICAgICBwcmludCgic2hsZXg6IHB1c2hpbmcgdG9rZW4gIiArIHJlcHIodG9rKSkKICAgICAgICBzZWxmLnB1c2hiYWNrLmFwcGVuZGxlZnQodG9rKQoKICAgIGRlZiBwdXNoX3NvdXJjZShzZWxmLCBuZXdzdHJlYW0sIG5ld2ZpbGU9Tm9uZSk6CiAgICAgICAgIlB1c2ggYW4gaW5wdXQgc291cmNlIG9udG8gdGhlIGxleGVyJ3MgaW5wdXQgc291cmNlIHN0YWNrLiIKICAgICAgICBpZiBpc2luc3RhbmNlKG5ld3N0cmVhbSwgc3RyKToKICAgICAgICAgICAgbmV3c3RyZWFtID0gU3RyaW5nSU8obmV3c3RyZWFtKQogICAgICAgIHNlbGYuZmlsZXN0YWNrLmFwcGVuZGxlZnQoKHNlbGYuaW5maWxlLCBzZWxmLmluc3RyZWFtLCBzZWxmLmxpbmVubykpCiAgICAgICAgc2VsZi5pbmZpbGUgPSBuZXdmaWxlCiAgICAgICAgc2VsZi5pbnN0cmVhbSA9IG5ld3N0cmVhbQogICAgICAgIHNlbGYubGluZW5vID0gMQogICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgIGlmIG5ld2ZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBwcmludCgnc2hsZXg6IHB1c2hpbmcgdG8gZmlsZSAlcycgJSAoc2VsZi5pbmZpbGUsKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KCdzaGxleDogcHVzaGluZyB0byBzdHJlYW0gJXMnICUgKHNlbGYuaW5zdHJlYW0sKSkKCiAgICBkZWYgcG9wX3NvdXJjZShzZWxmKToKICAgICAgICAiUG9wIHRoZSBpbnB1dCBzb3VyY2Ugc3RhY2suIgogICAgICAgIHNlbGYuaW5zdHJlYW0uY2xvc2UoKQogICAgICAgIChzZWxmLmluZmlsZSwgc2VsZi5pbnN0cmVhbSwgc2VsZi5saW5lbm8pID0gc2VsZi5maWxlc3RhY2sucG9wbGVmdCgpCiAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKICAgICAgICAgICAgcHJpbnQoJ3NobGV4OiBwb3BwaW5nIHRvICVzLCBsaW5lICVkJyBcCiAgICAgICAgICAgICAgICAgICUgKHNlbGYuaW5zdHJlYW0sIHNlbGYubGluZW5vKSkKICAgICAgICBzZWxmLnN0YXRlID0gJyAnCgogICAgZGVmIGdldF90b2tlbihzZWxmKToKICAgICAgICAiR2V0IGEgdG9rZW4gZnJvbSB0aGUgaW5wdXQgc3RyZWFtIChvciBmcm9tIHN0YWNrIGlmIGl0J3Mgbm9uZW1wdHkpIgogICAgICAgIGlmIHNlbGYucHVzaGJhY2s6CiAgICAgICAgICAgIHRvayA9IHNlbGYucHVzaGJhY2sucG9wbGVmdCgpCiAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMToKICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogcG9wcGluZyB0b2tlbiAiICsgcmVwcih0b2spKQogICAgICAgICAgICByZXR1cm4gdG9rCiAgICAgICAgIyBObyBwdXNoYmFjay4gIEdldCBhIHRva2VuLgogICAgICAgIHJhdyA9IHNlbGYucmVhZF90b2tlbigpCiAgICAgICAgIyBIYW5kbGUgaW5jbHVzaW9ucwogICAgICAgIGlmIHNlbGYuc291cmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICB3aGlsZSByYXcgPT0gc2VsZi5zb3VyY2U6CiAgICAgICAgICAgICAgICBzcGVjID0gc2VsZi5zb3VyY2Vob29rKHNlbGYucmVhZF90b2tlbigpKQogICAgICAgICAgICAgICAgaWYgc3BlYzoKICAgICAgICAgICAgICAgICAgICAobmV3ZmlsZSwgbmV3c3RyZWFtKSA9IHNwZWMKICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2hfc291cmNlKG5ld3N0cmVhbSwgbmV3ZmlsZSkKICAgICAgICAgICAgICAgIHJhdyA9IHNlbGYuZ2V0X3Rva2VuKCkKICAgICAgICAjIE1heWJlIHdlIGdvdCBFT0YgaW5zdGVhZD8KICAgICAgICB3aGlsZSByYXcgPT0gc2VsZi5lb2Y6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmZpbGVzdGFjazoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVvZgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5wb3Bfc291cmNlKCkKICAgICAgICAgICAgICAgIHJhdyA9IHNlbGYuZ2V0X3Rva2VuKCkKICAgICAgICAjIE5laXRoZXIgaW5jbHVzaW9uIG5vciBFT0YKICAgICAgICBpZiBzZWxmLmRlYnVnID49IDE6CiAgICAgICAgICAgIGlmIHJhdyAhPSBzZWxmLmVvZjoKICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogdG9rZW49IiArIHJlcHIocmF3KSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogdG9rZW49RU9GIikKICAgICAgICByZXR1cm4gcmF3CgogICAgZGVmIHJlYWRfdG9rZW4oc2VsZik6CiAgICAgICAgcXVvdGVkID0gRmFsc2UKICAgICAgICBlc2NhcGVkc3RhdGUgPSAnICcKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBpZiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzIGFuZCBzZWxmLl9wdXNoYmFja19jaGFyczoKICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5fcHVzaGJhY2tfY2hhcnMucG9wKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5pbnN0cmVhbS5yZWFkKDEpCiAgICAgICAgICAgIGlmIG5leHRjaGFyID09ICdcbic6CiAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMzoKICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogaW4gc3RhdGUgJXIgSSBzZWUgY2hhcmFjdGVyOiAlciIgJSAoc2VsZi5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIpKQogICAgICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gJycgICAgICAgICMgcGFzdCBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09ICcgJzoKICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjoKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gTm9uZSAgIyBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYud2hpdGVzcGFjZToKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogSSBzZWUgd2hpdGVzcGFjZSBpbiB3aGl0ZXNwYWNlIHN0YXRlIikKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnRva2VuIG9yIChzZWxmLnBvc2l4IGFuZCBxdW90ZWQpOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhayAgICMgZW1pdCBjdXJyZW50IHRva2VuCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5jb21tZW50ZXJzOgogICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdHJlYW0ucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGU6CiAgICAgICAgICAgICAgICAgICAgZXNjYXBlZHN0YXRlID0gJ2EnCiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYud29yZGNoYXJzOgogICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5wdW5jdHVhdGlvbl9jaGFyczoKICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2MnCiAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYucXVvdGVzOgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnBvc2l4OgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgIGVsaWYgc2VsZi53aGl0ZXNwYWNlX3NwbGl0OgogICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi50b2tlbiBvciAoc2VsZi5wb3NpeCBhbmQgcXVvdGVkKToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgICAjIGVtaXQgY3VycmVudCB0b2tlbgogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSBpbiBzZWxmLnF1b3RlczoKICAgICAgICAgICAgICAgIHF1b3RlZCA9IFRydWUKICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjogICAgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAyOgogICAgICAgICAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IEkgc2VlIEVPRiBpbiBxdW90ZXMgc3RhdGUiKQogICAgICAgICAgICAgICAgICAgICMgWFhYIHdoYXQgZXJyb3Igc2hvdWxkIGJlIHJhaXNlZCBoZXJlPwogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGNsb3NpbmcgcXVvdGF0aW9uIikKICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyID09IHNlbGYuc3RhdGU6CiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgIGVsaWYgKHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlIGFuZCBzZWxmLnN0YXRlCiAgICAgICAgICAgICAgICAgICAgICBpbiBzZWxmLmVzY2FwZWRxdW90ZXMpOgogICAgICAgICAgICAgICAgICAgIGVzY2FwZWRzdGF0ZSA9IHNlbGYuc3RhdGUKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgaW4gc2VsZi5lc2NhcGU6CiAgICAgICAgICAgICAgICBpZiBub3QgbmV4dGNoYXI6ICAgICAgIyBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBJIHNlZSBFT0YgaW4gZXNjYXBlIHN0YXRlIikKICAgICAgICAgICAgICAgICAgICAjIFhYWCB3aGF0IGVycm9yIHNob3VsZCBiZSByYWlzZWQgaGVyZT8KICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBlc2NhcGVkIGNoYXJhY3RlciIpCiAgICAgICAgICAgICAgICAjIEluIHBvc2l4IHNoZWxscywgb25seSB0aGUgcXVvdGUgaXRzZWxmIG9yIHRoZSBlc2NhcGUKICAgICAgICAgICAgICAgICMgY2hhcmFjdGVyIG1heSBiZSBlc2NhcGVkIHdpdGhpbiBxdW90ZXMuCiAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZHN0YXRlIGluIHNlbGYucXVvdGVzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0Y2hhciAhPSBzZWxmLnN0YXRlIGFuZCBuZXh0Y2hhciAhPSBlc2NhcGVkc3RhdGUpOgogICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gc2VsZi5zdGF0ZQogICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IGVzY2FwZWRzdGF0ZQogICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgaW4gKCdhJywgJ2MnKToKICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjoKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gTm9uZSAgICMgZW5kIG9mIGZpbGUKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndoaXRlc3BhY2U6CiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAyOgogICAgICAgICAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IEkgc2VlIHdoaXRlc3BhY2UgaW4gd29yZCBzdGF0ZSIpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudG9rZW4gb3IgKHNlbGYucG9zaXggYW5kIHF1b3RlZCk6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICAgIyBlbWl0IGN1cnJlbnQgdG9rZW4KICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLmNvbW1lbnRlcnM6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnN0cmVhbS5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gKz0gMQogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi50b2tlbiBvciAoc2VsZi5wb3NpeCBhbmQgcXVvdGVkKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICAgIyBlbWl0IGN1cnJlbnQgdG9rZW4KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gJ2MnOgogICAgICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciBub3QgaW4gc2VsZi53aGl0ZXNwYWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMuYXBwZW5kKG5leHRjaGFyKQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYucXVvdGVzOgogICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZToKICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgIGVsaWYgKG5leHRjaGFyIGluIHNlbGYud29yZGNoYXJzIG9yIG5leHRjaGFyIGluIHNlbGYucXVvdGVzCiAgICAgICAgICAgICAgICAgICAgICBvciAoc2VsZi53aGl0ZXNwYWNlX3NwbGl0IGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjaGFyIG5vdCBpbiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzKSk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycy5hcHBlbmQobmV4dGNoYXIpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBJIHNlZSBwdW5jdHVhdGlvbiBpbiB3b3JkIHN0YXRlIikKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi50b2tlbiBvciAoc2VsZi5wb3NpeCBhbmQgcXVvdGVkKToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgICAjIGVtaXQgY3VycmVudCB0b2tlbgogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgcmVzdWx0ID0gc2VsZi50b2tlbgogICAgICAgIHNlbGYudG9rZW4gPSAnJwogICAgICAgIGlmIHNlbGYucG9zaXggYW5kIG5vdCBxdW90ZWQgYW5kIHJlc3VsdCA9PSAnJzoKICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQogICAgICAgIGlmIHNlbGYuZGVidWcgPiAxOgogICAgICAgICAgICBpZiByZXN1bHQ6CiAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IHJhdyB0b2tlbj0iICsgcmVwcihyZXN1bHQpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiByYXcgdG9rZW49RU9GIikKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIHNvdXJjZWhvb2soc2VsZiwgbmV3ZmlsZSk6CiAgICAgICAgIkhvb2sgY2FsbGVkIG9uIGEgZmlsZW5hbWUgdG8gYmUgc291cmNlZC4iCiAgICAgICAgaWYgbmV3ZmlsZVswXSA9PSAnIic6CiAgICAgICAgICAgIG5ld2ZpbGUgPSBuZXdmaWxlWzE6LTFdCiAgICAgICAgIyBUaGlzIGltcGxlbWVudHMgY3BwLWxpa2Ugc2VtYW50aWNzIGZvciByZWxhdGl2ZS1wYXRoIGluY2x1c2lvbi4KICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuaW5maWxlLCBzdHIpIGFuZCBub3Qgb3MucGF0aC5pc2FicyhuZXdmaWxlKToKICAgICAgICAgICAgbmV3ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5pbmZpbGUpLCBuZXdmaWxlKQogICAgICAgIHJldHVybiAobmV3ZmlsZSwgb3BlbihuZXdmaWxlLCAiciIpKQoKICAgIGRlZiBlcnJvcl9sZWFkZXIoc2VsZiwgaW5maWxlPU5vbmUsIGxpbmVubz1Ob25lKToKICAgICAgICAiRW1pdCBhIEMtY29tcGlsZXItbGlrZSwgRW1hY3MtZnJpZW5kbHkgZXJyb3ItbWVzc2FnZSBsZWFkZXIuIgogICAgICAgIGlmIGluZmlsZSBpcyBOb25lOgogICAgICAgICAgICBpbmZpbGUgPSBzZWxmLmluZmlsZQogICAgICAgIGlmIGxpbmVubyBpcyBOb25lOgogICAgICAgICAgICBsaW5lbm8gPSBzZWxmLmxpbmVubwogICAgICAgIHJldHVybiAiXCIlc1wiLCBsaW5lICVkOiAiICUgKGluZmlsZSwgbGluZW5vKQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX25leHRfXyhzZWxmKToKICAgICAgICB0b2tlbiA9IHNlbGYuZ2V0X3Rva2VuKCkKICAgICAgICBpZiB0b2tlbiA9PSBzZWxmLmVvZjoKICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgIHJldHVybiB0b2tlbgoKZGVmIHNwbGl0KHMsIGNvbW1lbnRzPUZhbHNlLCBwb3NpeD1UcnVlKToKICAgICIiIlNwbGl0IHRoZSBzdHJpbmcgKnMqIHVzaW5nIHNoZWxsLWxpa2Ugc3ludGF4LiIiIgogICAgaWYgcyBpcyBOb25lOgogICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgIHdhcm5pbmdzLndhcm4oIlBhc3NpbmcgTm9uZSBmb3IgJ3MnIHRvIHNobGV4LnNwbGl0KCkgaXMgZGVwcmVjYXRlZC4iLAogICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICBsZXggPSBzaGxleChzLCBwb3NpeD1wb3NpeCkKICAgIGxleC53aGl0ZXNwYWNlX3NwbGl0ID0gVHJ1ZQogICAgaWYgbm90IGNvbW1lbnRzOgogICAgICAgIGxleC5jb21tZW50ZXJzID0gJycKICAgIHJldHVybiBsaXN0KGxleCkKCgpkZWYgam9pbihzcGxpdF9jb21tYW5kKToKICAgICIiIlJldHVybiBhIHNoZWxsLWVzY2FwZWQgc3RyaW5nIGZyb20gKnNwbGl0X2NvbW1hbmQqLiIiIgogICAgcmV0dXJuICcgJy5qb2luKHF1b3RlKGFyZykgZm9yIGFyZyBpbiBzcGxpdF9jb21tYW5kKQoKCl9maW5kX3Vuc2FmZSA9IHJlLmNvbXBpbGUocidbXlx3QCUrPTosLi8tXScsIHJlLkFTQ0lJKS5zZWFyY2gKCmRlZiBxdW90ZShzKToKICAgICIiIlJldHVybiBhIHNoZWxsLWVzY2FwZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nICpzKi4iIiIKICAgIGlmIG5vdCBzOgogICAgICAgIHJldHVybiAiJyciCiAgICBpZiBfZmluZF91bnNhZmUocykgaXMgTm9uZToKICAgICAgICByZXR1cm4gcwoKICAgICMgdXNlIHNpbmdsZSBxdW90ZXMsIGFuZCBwdXQgc2luZ2xlIHF1b3RlcyBpbnRvIGRvdWJsZSBxdW90ZXMKICAgICMgdGhlIHN0cmluZyAkJ2IgaXMgdGhlbiBxdW90ZWQgYXMgJyQnIiciJ2InCiAgICByZXR1cm4gIiciICsgcy5yZXBsYWNlKCInIiwgIidcIidcIiciKSArICInIgoKCmRlZiBfcHJpbnRfdG9rZW5zKGxleGVyKToKICAgIHdoaWxlIDE6CiAgICAgICAgdHQgPSBsZXhlci5nZXRfdG9rZW4oKQogICAgICAgIGlmIG5vdCB0dDoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBwcmludCgiVG9rZW46ICIgKyByZXByKHR0KSkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBpZiBsZW4oc3lzLmFyZ3YpID09IDE6CiAgICAgICAgX3ByaW50X3Rva2VucyhzaGxleCgpKQogICAgZWxzZToKICAgICAgICBmbiA9IHN5cy5hcmd2WzFdCiAgICAgICAgd2l0aCBvcGVuKGZuKSBhcyBmOgogICAgICAgICAgICBfcHJpbnRfdG9rZW5zKHNobGV4KGYsIGZuKSkKUEsDBBQAAAAAAAIgo1ahlcFETdYAAE3WAAAJAAAAc2h1dGlsLnB5IiIiVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvcHlpbmcgYW5kIGFyY2hpdmluZyBmaWxlcyBhbmQgZGlyZWN0b3J5IHRyZWVzLgoKWFhYIFRoZSBmdW5jdGlvbnMgaGVyZSBkb24ndCBjb3B5IHRoZSByZXNvdXJjZSBmb3JrIG9yIG90aGVyIG1ldGFkYXRhIG9uIE1hYy4KCiIiIgoKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IHN0YXQKaW1wb3J0IGZubWF0Y2gKaW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCBlcnJubwoKdHJ5OgogICAgaW1wb3J0IHpsaWIKICAgIGRlbCB6bGliCiAgICBfWkxJQl9TVVBQT1JURUQgPSBUcnVlCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIF9aTElCX1NVUFBPUlRFRCA9IEZhbHNlCgp0cnk6CiAgICBpbXBvcnQgYnoyCiAgICBkZWwgYnoyCiAgICBfQloyX1NVUFBPUlRFRCA9IFRydWUKZXhjZXB0IEltcG9ydEVycm9yOgogICAgX0JaMl9TVVBQT1JURUQgPSBGYWxzZQoKdHJ5OgogICAgaW1wb3J0IGx6bWEKICAgIGRlbCBsem1hCiAgICBfTFpNQV9TVVBQT1JURUQgPSBUcnVlCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIF9MWk1BX1NVUFBPUlRFRCA9IEZhbHNlCgpfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250Jwpwb3NpeCA9IG50ID0gTm9uZQppZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICBpbXBvcnQgcG9zaXgKZWxpZiBfV0lORE9XUzoKICAgIGltcG9ydCBudAoKQ09QWV9CVUZTSVpFID0gMTAyNCAqIDEwMjQgaWYgX1dJTkRPV1MgZWxzZSA2NCAqIDEwMjQKIyBUaGlzIHNob3VsZCBuZXZlciBiZSByZW1vdmVkLCBzZWUgcmF0aW9uYWxlIGluOgojIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlNDM3NDMjbXNnMzkzNDI5Cl9VU0VfQ1BfU0VOREZJTEUgPSBoYXNhdHRyKG9zLCAic2VuZGZpbGUiKSBhbmQgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImxpbnV4IikKX0hBU19GQ09QWUZJTEUgPSBwb3NpeCBhbmQgaGFzYXR0cihwb3NpeCwgIl9mY29weWZpbGUiKSAgIyBtYWNPUwoKIyBDTUQgZGVmYXVsdHMgaW4gV2luZG93cyAxMApfV0lOX0RFRkFVTFRfUEFUSEVYVCA9ICIuQ09NOy5FWEU7LkJBVDsuQ01EOy5WQlM7LkpTOy5XUzsuTVNDIgoKX19hbGxfXyA9IFsiY29weWZpbGVvYmoiLCAiY29weWZpbGUiLCAiY29weW1vZGUiLCAiY29weXN0YXQiLCAiY29weSIsICJjb3B5MiIsCiAgICAgICAgICAgImNvcHl0cmVlIiwgIm1vdmUiLCAicm10cmVlIiwgIkVycm9yIiwgIlNwZWNpYWxGaWxlRXJyb3IiLAogICAgICAgICAgICJFeGVjRXJyb3IiLCAibWFrZV9hcmNoaXZlIiwgImdldF9hcmNoaXZlX2Zvcm1hdHMiLAogICAgICAgICAgICJyZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdCIsICJ1bnJlZ2lzdGVyX2FyY2hpdmVfZm9ybWF0IiwKICAgICAgICAgICAiZ2V0X3VucGFja19mb3JtYXRzIiwgInJlZ2lzdGVyX3VucGFja19mb3JtYXQiLAogICAgICAgICAgICJ1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQiLCAidW5wYWNrX2FyY2hpdmUiLAogICAgICAgICAgICJpZ25vcmVfcGF0dGVybnMiLCAiY2hvd24iLCAid2hpY2giLCAiZ2V0X3Rlcm1pbmFsX3NpemUiLAogICAgICAgICAgICJTYW1lRmlsZUVycm9yIl0KICAgICAgICAgICAjIGRpc2tfdXNhZ2UgaXMgYWRkZWQgbGF0ZXIsIGlmIGF2YWlsYWJsZSBvbiB0aGUgcGxhdGZvcm0KCmNsYXNzIEVycm9yKE9TRXJyb3IpOgogICAgcGFzcwoKY2xhc3MgU2FtZUZpbGVFcnJvcihFcnJvcik6CiAgICAiIiJSYWlzZWQgd2hlbiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSB0aGUgc2FtZSBmaWxlLiIiIgoKY2xhc3MgU3BlY2lhbEZpbGVFcnJvcihPU0Vycm9yKToKICAgICIiIlJhaXNlZCB3aGVuIHRyeWluZyB0byBkbyBhIGtpbmQgb2Ygb3BlcmF0aW9uIChlLmcuIGNvcHlpbmcpIHdoaWNoIGlzCiAgICBub3Qgc3VwcG9ydGVkIG9uIGEgc3BlY2lhbCBmaWxlIChlLmcuIGEgbmFtZWQgcGlwZSkiIiIKCmNsYXNzIEV4ZWNFcnJvcihPU0Vycm9yKToKICAgICIiIlJhaXNlZCB3aGVuIGEgY29tbWFuZCBjb3VsZCBub3QgYmUgZXhlY3V0ZWQiIiIKCmNsYXNzIFJlYWRFcnJvcihPU0Vycm9yKToKICAgICIiIlJhaXNlZCB3aGVuIGFuIGFyY2hpdmUgY2Fubm90IGJlIHJlYWQiIiIKCmNsYXNzIFJlZ2lzdHJ5RXJyb3IoRXhjZXB0aW9uKToKICAgICIiIlJhaXNlZCB3aGVuIGEgcmVnaXN0cnkgb3BlcmF0aW9uIHdpdGggdGhlIGFyY2hpdmluZwogICAgYW5kIHVucGFja2luZyByZWdpc3RyaWVzIGZhaWxzIiIiCgpjbGFzcyBfR2l2ZXVwT25GYXN0Q29weShFeGNlcHRpb24pOgogICAgIiIiUmFpc2VkIGFzIGEgc2lnbmFsIHRvIGZhbGxiYWNrIG9uIHVzaW5nIHJhdyByZWFkKCkvd3JpdGUoKQogICAgZmlsZSBjb3B5IHdoZW4gZmFzdC1jb3B5IGZ1bmN0aW9ucyBmYWlsIHRvIGRvIHNvLgogICAgIiIiCgpkZWYgX2Zhc3Rjb3B5X2Zjb3B5ZmlsZShmc3JjLCBmZHN0LCBmbGFncyk6CiAgICAiIiJDb3B5IGEgcmVndWxhciBmaWxlIGNvbnRlbnQgb3IgbWV0YWRhdGEgYnkgdXNpbmcgaGlnaC1wZXJmb3JtYW5jZQogICAgZmNvcHlmaWxlKDMpIHN5c2NhbGwgKG1hY09TKS4KICAgICIiIgogICAgdHJ5OgogICAgICAgIGluZmQgPSBmc3JjLmZpbGVubygpCiAgICAgICAgb3V0ZmQgPSBmZHN0LmZpbGVubygpCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICByYWlzZSBfR2l2ZXVwT25GYXN0Q29weShlcnIpICAjIG5vdCBhIHJlZ3VsYXIgZmlsZQoKICAgIHRyeToKICAgICAgICBwb3NpeC5fZmNvcHlmaWxlKGluZmQsIG91dGZkLCBmbGFncykKICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICBlcnIuZmlsZW5hbWUgPSBmc3JjLm5hbWUKICAgICAgICBlcnIuZmlsZW5hbWUyID0gZmRzdC5uYW1lCiAgICAgICAgaWYgZXJyLmVycm5vIGluIHtlcnJuby5FSU5WQUwsIGVycm5vLkVOT1RTVVB9OgogICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25GYXN0Q29weShlcnIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgZXJyIGZyb20gTm9uZQoKZGVmIF9mYXN0Y29weV9zZW5kZmlsZShmc3JjLCBmZHN0KToKICAgICIiIkNvcHkgZGF0YSBmcm9tIG9uZSByZWd1bGFyIG1tYXAtbGlrZSBmZCB0byBhbm90aGVyIGJ5IHVzaW5nCiAgICBoaWdoLXBlcmZvcm1hbmNlIHNlbmRmaWxlKDIpIHN5c2NhbGwuCiAgICBUaGlzIHNob3VsZCB3b3JrIG9uIExpbnV4ID49IDIuNi4zMyBvbmx5LgogICAgIiIiCiAgICAjIE5vdGU6IGNvcHlmaWxlb2JqKCkgaXMgbGVmdCBhbG9uZSBpbiBvcmRlciB0byBub3QgaW50cm9kdWNlIGFueQogICAgIyB1bmV4cGVjdGVkIGJyZWFrYWdlLiBQb3NzaWJsZSByaXNrcyBieSB1c2luZyB6ZXJvLWNvcHkgY2FsbHMKICAgICMgaW4gY29weWZpbGVvYmooKSBhcmU6CiAgICAjIC0gZmRzdCBjYW5ub3QgYmUgb3BlbiBpbiAiYSIocHBlbmQpIG1vZGUKICAgICMgLSBmc3JjIGFuZCBmZHN0IG1heSBiZSBvcGVuIGluICJ0IihleHQpIG1vZGUKICAgICMgLSBmc3JjIG1heSBiZSBhIEJ1ZmZlcmVkUmVhZGVyICh3aGljaCBoaWRlcyB1bnJlYWQgZGF0YSBpbiBhIGJ1ZmZlciksCiAgICAjICAgR3ppcEZpbGUgKHdoaWNoIGRlY29tcHJlc3NlcyBkYXRhKSwgSFRUUFJlc3BvbnNlICh3aGljaCBkZWNvZGVzCiAgICAjICAgY2h1bmtzKS4KICAgICMgLSBwb3NzaWJseSBvdGhlcnMgKGUuZy4gZW5jcnlwdGVkIGZzL3BhcnRpdGlvbj8pCiAgICBnbG9iYWwgX1VTRV9DUF9TRU5ERklMRQogICAgdHJ5OgogICAgICAgIGluZmQgPSBmc3JjLmZpbGVubygpCiAgICAgICAgb3V0ZmQgPSBmZHN0LmZpbGVubygpCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICByYWlzZSBfR2l2ZXVwT25GYXN0Q29weShlcnIpICAjIG5vdCBhIHJlZ3VsYXIgZmlsZQoKICAgICMgSG9wZWZ1bGx5IHRoZSB3aG9sZSBmaWxlIHdpbGwgYmUgY29waWVkIGluIGEgc2luZ2xlIGNhbGwuCiAgICAjIHNlbmRmaWxlKCkgaXMgY2FsbGVkIGluIGEgbG9vcCAndGlsbCBFT0YgaXMgcmVhY2hlZCAoMCByZXR1cm4pCiAgICAjIHNvIGEgYnVmc2l6ZSBzbWFsbGVyIG9yIGJpZ2dlciB0aGFuIHRoZSBhY3R1YWwgZmlsZSBzaXplCiAgICAjIHNob3VsZCBub3QgbWFrZSBhbnkgZGlmZmVyZW5jZSwgYWxzbyBpbiBjYXNlIHRoZSBmaWxlIGNvbnRlbnQKICAgICMgY2hhbmdlcyB3aGlsZSBiZWluZyBjb3BpZWQuCiAgICB0cnk6CiAgICAgICAgYmxvY2tzaXplID0gbWF4KG9zLmZzdGF0KGluZmQpLnN0X3NpemUsIDIgKiogMjMpICAjIG1pbiA4TWlCCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBibG9ja3NpemUgPSAyICoqIDI3ICAjIDEyOE1pQgogICAgIyBPbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB0cnVuY2F0ZSB0byAxR2lCIHRvIGF2b2lkIE92ZXJmbG93RXJyb3IsCiAgICAjIHNlZSBicG8tMzgzMTkuCiAgICBpZiBzeXMubWF4c2l6ZSA8IDIgKiogMzI6CiAgICAgICAgYmxvY2tzaXplID0gbWluKGJsb2Nrc2l6ZSwgMiAqKiAzMCkKCiAgICBvZmZzZXQgPSAwCiAgICB3aGlsZSBUcnVlOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VudCA9IG9zLnNlbmRmaWxlKG91dGZkLCBpbmZkLCBvZmZzZXQsIGJsb2Nrc2l6ZSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICMgLi4uaW4gb2RlciB0byBoYXZlIGEgbW9yZSBpbmZvcm1hdGl2ZSBleGNlcHRpb24uCiAgICAgICAgICAgIGVyci5maWxlbmFtZSA9IGZzcmMubmFtZQogICAgICAgICAgICBlcnIuZmlsZW5hbWUyID0gZmRzdC5uYW1lCgogICAgICAgICAgICBpZiBlcnIuZXJybm8gPT0gZXJybm8uRU5PVFNPQ0s6CiAgICAgICAgICAgICAgICAjIHNlbmRmaWxlKCkgb24gdGhpcyBwbGF0Zm9ybSAocHJvYmFibHkgTGludXggPCAyLjYuMzMpCiAgICAgICAgICAgICAgICAjIGRvZXMgbm90IHN1cHBvcnQgY29waWVzIGJldHdlZW4gcmVndWxhciBmaWxlcyAob25seQogICAgICAgICAgICAgICAgIyBzb2NrZXRzKS4KICAgICAgICAgICAgICAgIF9VU0VfQ1BfU0VOREZJTEUgPSBGYWxzZQogICAgICAgICAgICAgICAgcmFpc2UgX0dpdmV1cE9uRmFzdENvcHkoZXJyKQoKICAgICAgICAgICAgaWYgZXJyLmVycm5vID09IGVycm5vLkVOT1NQQzogICMgZmlsZXN5c3RlbSBpcyBmdWxsCiAgICAgICAgICAgICAgICByYWlzZSBlcnIgZnJvbSBOb25lCgogICAgICAgICAgICAjIEdpdmUgdXAgb24gZmlyc3QgY2FsbCBhbmQgaWYgbm8gZGF0YSB3YXMgY29waWVkLgogICAgICAgICAgICBpZiBvZmZzZXQgPT0gMCBhbmQgb3MubHNlZWsob3V0ZmQsIDAsIG9zLlNFRUtfQ1VSKSA9PSAwOgogICAgICAgICAgICAgICAgcmFpc2UgX0dpdmV1cE9uRmFzdENvcHkoZXJyKQoKICAgICAgICAgICAgcmFpc2UgZXJyCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc2VudCA9PSAwOgogICAgICAgICAgICAgICAgYnJlYWsgICMgRU9GCiAgICAgICAgICAgIG9mZnNldCArPSBzZW50CgpkZWYgX2NvcHlmaWxlb2JqX3JlYWRpbnRvKGZzcmMsIGZkc3QsIGxlbmd0aD1DT1BZX0JVRlNJWkUpOgogICAgIiIicmVhZGludG8oKS9tZW1vcnl2aWV3KCkgYmFzZWQgdmFyaWFudCBvZiBjb3B5ZmlsZW9iaigpLgogICAgKmZzcmMqIG11c3Qgc3VwcG9ydCByZWFkaW50bygpIG1ldGhvZCBhbmQgYm90aCBmaWxlcyBtdXN0IGJlCiAgICBvcGVuIGluIGJpbmFyeSBtb2RlLgogICAgIiIiCiAgICAjIExvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZC4KICAgIGZzcmNfcmVhZGludG8gPSBmc3JjLnJlYWRpbnRvCiAgICBmZHN0X3dyaXRlID0gZmRzdC53cml0ZQogICAgd2l0aCBtZW1vcnl2aWV3KGJ5dGVhcnJheShsZW5ndGgpKSBhcyBtdjoKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBuID0gZnNyY19yZWFkaW50byhtdikKICAgICAgICAgICAgaWYgbm90IG46CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbGlmIG4gPCBsZW5ndGg6CiAgICAgICAgICAgICAgICB3aXRoIG12WzpuXSBhcyBzbXY6CiAgICAgICAgICAgICAgICAgICAgZmRzdC53cml0ZShzbXYpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmZHN0X3dyaXRlKG12KQoKZGVmIGNvcHlmaWxlb2JqKGZzcmMsIGZkc3QsIGxlbmd0aD0wKToKICAgICIiImNvcHkgZGF0YSBmcm9tIGZpbGUtbGlrZSBvYmplY3QgZnNyYyB0byBmaWxlLWxpa2Ugb2JqZWN0IGZkc3QiIiIKICAgIGlmIG5vdCBsZW5ndGg6CiAgICAgICAgbGVuZ3RoID0gQ09QWV9CVUZTSVpFCiAgICAjIExvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZC4KICAgIGZzcmNfcmVhZCA9IGZzcmMucmVhZAogICAgZmRzdF93cml0ZSA9IGZkc3Qud3JpdGUKICAgIHdoaWxlIFRydWU6CiAgICAgICAgYnVmID0gZnNyY19yZWFkKGxlbmd0aCkKICAgICAgICBpZiBub3QgYnVmOgogICAgICAgICAgICBicmVhawogICAgICAgIGZkc3Rfd3JpdGUoYnVmKQoKZGVmIF9zYW1lZmlsZShzcmMsIGRzdCk6CiAgICAjIE1hY2ludG9zaCwgVW5peC4KICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBvcy5EaXJFbnRyeSkgYW5kIGhhc2F0dHIob3MucGF0aCwgJ3NhbWVzdGF0Jyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gb3MucGF0aC5zYW1lc3RhdChzcmMuc3RhdCgpLCBvcy5zdGF0KGRzdCkpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGlmIGhhc2F0dHIob3MucGF0aCwgJ3NhbWVmaWxlJyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gb3MucGF0aC5zYW1lZmlsZShzcmMsIGRzdCkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgIyBBbGwgb3RoZXIgcGxhdGZvcm1zOiBjaGVjayBmb3Igc2FtZSBwYXRobmFtZS4KICAgIHJldHVybiAob3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLmFic3BhdGgoc3JjKSkgPT0KICAgICAgICAgICAgb3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLmFic3BhdGgoZHN0KSkpCgpkZWYgX3N0YXQoZm4pOgogICAgcmV0dXJuIGZuLnN0YXQoKSBpZiBpc2luc3RhbmNlKGZuLCBvcy5EaXJFbnRyeSkgZWxzZSBvcy5zdGF0KGZuKQoKZGVmIF9pc2xpbmsoZm4pOgogICAgcmV0dXJuIGZuLmlzX3N5bWxpbmsoKSBpZiBpc2luc3RhbmNlKGZuLCBvcy5EaXJFbnRyeSkgZWxzZSBvcy5wYXRoLmlzbGluayhmbikKCmRlZiBjb3B5ZmlsZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgogICAgIiIiQ29weSBkYXRhIGZyb20gc3JjIHRvIGRzdCBpbiB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IHBvc3NpYmxlLgoKICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBub3Qgc2V0IGFuZCBzcmMgaXMgYSBzeW1ib2xpYyBsaW5rLCBhIG5ldwogICAgc3ltbGluayB3aWxsIGJlIGNyZWF0ZWQgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBmaWxlIGl0IHBvaW50cyB0by4KCiAgICAiIiIKICAgIHN5cy5hdWRpdCgic2h1dGlsLmNvcHlmaWxlIiwgc3JjLCBkc3QpCgogICAgaWYgX3NhbWVmaWxlKHNyYywgZHN0KToKICAgICAgICByYWlzZSBTYW1lRmlsZUVycm9yKCJ7IXJ9IGFuZCB7IXJ9IGFyZSB0aGUgc2FtZSBmaWxlIi5mb3JtYXQoc3JjLCBkc3QpKQoKICAgIGZpbGVfc2l6ZSA9IDAKICAgIGZvciBpLCBmbiBpbiBlbnVtZXJhdGUoW3NyYywgZHN0XSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzdCA9IF9zdGF0KGZuKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAjIEZpbGUgbW9zdCBsaWtlbHkgZG9lcyBub3QgZXhpc3QKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgWFhYIFdoYXQgYWJvdXQgb3RoZXIgc3BlY2lhbCBmaWxlcz8gKHNvY2tldHMsIGRldmljZXMuLi4pCiAgICAgICAgICAgIGlmIHN0YXQuU19JU0ZJRk8oc3Quc3RfbW9kZSk6CiAgICAgICAgICAgICAgICBmbiA9IGZuLnBhdGggaWYgaXNpbnN0YW5jZShmbiwgb3MuRGlyRW50cnkpIGVsc2UgZm4KICAgICAgICAgICAgICAgIHJhaXNlIFNwZWNpYWxGaWxlRXJyb3IoImAlc2AgaXMgYSBuYW1lZCBwaXBlIiAlIGZuKQogICAgICAgICAgICBpZiBfV0lORE9XUyBhbmQgaSA9PSAwOgogICAgICAgICAgICAgICAgZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQoKICAgIGlmIG5vdCBmb2xsb3dfc3ltbGlua3MgYW5kIF9pc2xpbmsoc3JjKToKICAgICAgICBvcy5zeW1saW5rKG9zLnJlYWRsaW5rKHNyYyksIGRzdCkKICAgIGVsc2U6CiAgICAgICAgd2l0aCBvcGVuKHNyYywgJ3JiJykgYXMgZnNyYzoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRzdCwgJ3diJykgYXMgZmRzdDoKICAgICAgICAgICAgICAgICAgICAjIG1hY09TCiAgICAgICAgICAgICAgICAgICAgaWYgX0hBU19GQ09QWUZJTEU6CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mYXN0Y29weV9mY29weWZpbGUoZnNyYywgZmRzdCwgcG9zaXguX0NPUFlGSUxFX0RBVEEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZHN0CiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBfR2l2ZXVwT25GYXN0Q29weToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAjIExpbnV4CiAgICAgICAgICAgICAgICAgICAgZWxpZiBfVVNFX0NQX1NFTkRGSUxFOgogICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZmFzdGNvcHlfc2VuZGZpbGUoZnNyYywgZmRzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkc3QKICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IF9HaXZldXBPbkZhc3RDb3B5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICMgV2luZG93cywgc2VlOgogICAgICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvNzE2MCNkaXNjdXNzaW9uX3IxOTU0MDUyMzAKICAgICAgICAgICAgICAgICAgICBlbGlmIF9XSU5ET1dTIGFuZCBmaWxlX3NpemUgPiAwOgogICAgICAgICAgICAgICAgICAgICAgICBfY29weWZpbGVvYmpfcmVhZGludG8oZnNyYywgZmRzdCwgbWluKGZpbGVfc2l6ZSwgQ09QWV9CVUZTSVpFKSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRzdAoKICAgICAgICAgICAgICAgICAgICBjb3B5ZmlsZW9iaihmc3JjLCBmZHN0KQoKICAgICAgICAgICAgIyBJc3N1ZSA0MzIxOSwgcmFpc2UgYSBsZXNzIGNvbmZ1c2luZyBleGNlcHRpb24KICAgICAgICAgICAgZXhjZXB0IElzQURpcmVjdG9yeUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0KToKICAgICAgICAgICAgICAgICAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcihmJ0RpcmVjdG9yeSBkb2VzIG5vdCBleGlzdDoge2RzdH0nKSBmcm9tIGUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKCiAgICByZXR1cm4gZHN0CgpkZWYgY29weW1vZGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKICAgICIiIkNvcHkgbW9kZSBiaXRzIGZyb20gc3JjIHRvIGRzdC4KCiAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgbm90IHNldCwgc3ltbGlua3MgYXJlbid0IGZvbGxvd2VkIGlmIGFuZCBvbmx5CiAgICBpZiBib3RoIGBzcmNgIGFuZCBgZHN0YCBhcmUgc3ltbGlua3MuICBJZiBgbGNobW9kYCBpc24ndCBhdmFpbGFibGUKICAgIChlLmcuIExpbnV4KSB0aGlzIG1ldGhvZCBkb2VzIG5vdGhpbmcuCgogICAgIiIiCiAgICBzeXMuYXVkaXQoInNodXRpbC5jb3B5bW9kZSIsIHNyYywgZHN0KQoKICAgIGlmIG5vdCBmb2xsb3dfc3ltbGlua3MgYW5kIF9pc2xpbmsoc3JjKSBhbmQgb3MucGF0aC5pc2xpbmsoZHN0KToKICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CiAgICAgICAgICAgIHN0YXRfZnVuYywgY2htb2RfZnVuYyA9IG9zLmxzdGF0LCBvcy5sY2htb2QKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4KICAgIGVsc2U6CiAgICAgICAgc3RhdF9mdW5jLCBjaG1vZF9mdW5jID0gX3N0YXQsIG9zLmNobW9kCgogICAgc3QgPSBzdGF0X2Z1bmMoc3JjKQogICAgY2htb2RfZnVuYyhkc3QsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSkKCmlmIGhhc2F0dHIob3MsICdsaXN0eGF0dHInKToKICAgIGRlZiBfY29weXhhdHRyKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CiAgICAgICAgIiIiQ29weSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZXMgZnJvbSBgc3JjYCB0byBgZHN0YC4KCiAgICAgICAgT3ZlcndyaXRlIGV4aXN0aW5nIGF0dHJpYnV0ZXMuCgogICAgICAgIElmIGBmb2xsb3dfc3ltbGlua3NgIGlzIGZhbHNlLCBzeW1saW5rcyB3b24ndCBiZSBmb2xsb3dlZC4KCiAgICAgICAgIiIiCgogICAgICAgIHRyeToKICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0eGF0dHIoc3JjLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChlcnJuby5FTk9UU1VQLCBlcnJuby5FTk9EQVRBLCBlcnJuby5FSU5WQUwpOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHZhbHVlID0gb3MuZ2V0eGF0dHIoc3JjLCBuYW1lLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQogICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZHN0LCBuYW1lLCB2YWx1ZSwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChlcnJuby5FUEVSTSwgZXJybm8uRU5PVFNVUCwgZXJybm8uRU5PREFUQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJuby5FSU5WQUwpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCmVsc2U6CiAgICBkZWYgX2NvcHl4YXR0cigqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHBhc3MKCmRlZiBjb3B5c3RhdChzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgogICAgIiIiQ29weSBmaWxlIG1ldGFkYXRhCgogICAgQ29weSB0aGUgcGVybWlzc2lvbiBiaXRzLCBsYXN0IGFjY2VzcyB0aW1lLCBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lLCBhbmQKICAgIGZsYWdzIGZyb20gYHNyY2AgdG8gYGRzdGAuIE9uIExpbnV4LCBjb3B5c3RhdCgpIGFsc28gY29waWVzIHRoZSAiZXh0ZW5kZWQKICAgIGF0dHJpYnV0ZXMiIHdoZXJlIHBvc3NpYmxlLiBUaGUgZmlsZSBjb250ZW50cywgb3duZXIsIGFuZCBncm91cCBhcmUKICAgIHVuYWZmZWN0ZWQuIGBzcmNgIGFuZCBgZHN0YCBhcmUgcGF0aC1saWtlIG9iamVjdHMgb3IgcGF0aCBuYW1lcyBnaXZlbiBhcwogICAgc3RyaW5ncy4KCiAgICBJZiB0aGUgb3B0aW9uYWwgZmxhZyBgZm9sbG93X3N5bWxpbmtzYCBpcyBub3Qgc2V0LCBzeW1saW5rcyBhcmVuJ3QKICAgIGZvbGxvd2VkIGlmIGFuZCBvbmx5IGlmIGJvdGggYHNyY2AgYW5kIGBkc3RgIGFyZSBzeW1saW5rcy4KICAgICIiIgogICAgc3lzLmF1ZGl0KCJzaHV0aWwuY29weXN0YXQiLCBzcmMsIGRzdCkKCiAgICBkZWYgX25vcCgqYXJncywgbnM9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPU5vbmUpOgogICAgICAgIHBhc3MKCiAgICAjIGZvbGxvdyBzeW1saW5rcyAoYWthIGRvbid0IG5vdCBmb2xsb3cgc3ltbGlua3MpCiAgICBmb2xsb3cgPSBmb2xsb3dfc3ltbGlua3Mgb3Igbm90IChfaXNsaW5rKHNyYykgYW5kIG9zLnBhdGguaXNsaW5rKGRzdCkpCiAgICBpZiBmb2xsb3c6CiAgICAgICAgIyB1c2UgdGhlIHJlYWwgZnVuY3Rpb24gaWYgaXQgZXhpc3RzCiAgICAgICAgZGVmIGxvb2t1cChuYW1lKToKICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIob3MsIG5hbWUsIF9ub3ApCiAgICBlbHNlOgogICAgICAgICMgdXNlIHRoZSByZWFsIGZ1bmN0aW9uIG9ubHkgaWYgaXQgZXhpc3RzCiAgICAgICAgIyAqYW5kKiBpdCBzdXBwb3J0cyBmb2xsb3dfc3ltbGlua3MKICAgICAgICBkZWYgbG9va3VwKG5hbWUpOgogICAgICAgICAgICBmbiA9IGdldGF0dHIob3MsIG5hbWUsIF9ub3ApCiAgICAgICAgICAgIGlmIGZuIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKICAgICAgICAgICAgICAgIHJldHVybiBmbgogICAgICAgICAgICByZXR1cm4gX25vcAoKICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBvcy5EaXJFbnRyeSk6CiAgICAgICAgc3QgPSBzcmMuc3RhdChmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQogICAgZWxzZToKICAgICAgICBzdCA9IGxvb2t1cCgic3RhdCIpKHNyYywgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKICAgIG1vZGUgPSBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkKICAgIGxvb2t1cCgidXRpbWUiKShkc3QsIG5zPShzdC5zdF9hdGltZV9ucywgc3Quc3RfbXRpbWVfbnMpLAogICAgICAgIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAgICAjIFdlIG11c3QgY29weSBleHRlbmRlZCBhdHRyaWJ1dGVzIGJlZm9yZSB0aGUgZmlsZSBpcyAocG90ZW50aWFsbHkpCiAgICAjIGNobW9kKCknZWQgcmVhZC1vbmx5LCBvdGhlcndpc2Ugc2V0eGF0dHIoKSB3aWxsIGVycm9yIHdpdGggLUVBQ0NFUy4KICAgIF9jb3B5eGF0dHIoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAgICB0cnk6CiAgICAgICAgbG9va3VwKCJjaG1vZCIpKGRzdCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICMgaWYgd2UgZ290IGEgTm90SW1wbGVtZW50ZWRFcnJvciwgaXQncyBiZWNhdXNlCiAgICAgICAgIyAgICogZm9sbG93X3N5bWxpbmtzPUZhbHNlLAogICAgICAgICMgICAqIGxjaG93bigpIGlzIHVuYXZhaWxhYmxlLCBhbmQKICAgICAgICAjICAgKiBlaXRoZXIKICAgICAgICAjICAgICAgICogZmNob3duYXQoKSBpcyB1bmF2YWlsYWJsZSBvcgogICAgICAgICMgICAgICAgKiBmY2hvd25hdCgpIGRvZXNuJ3QgaW1wbGVtZW50IEFUX1NZTUxJTktfTk9GT0xMT1cuCiAgICAgICAgIyAgICAgICAgIChpdCByZXR1cm5lZCBFTk9TVVAuKQogICAgICAgICMgdGhlcmVmb3JlIHdlJ3JlIG91dCBvZiBvcHRpb25zLS13ZSBzaW1wbHkgY2Fubm90IGNob3duIHRoZQogICAgICAgICMgc3ltbGluay4gIGdpdmUgdXAsIHN1cHByZXNzIHRoZSBlcnJvci4KICAgICAgICAjICh3aGljaCBpcyB3aGF0IHNodXRpbCBhbHdheXMgZGlkIGluIHRoaXMgY2lyY3Vtc3RhbmNlLikKICAgICAgICBwYXNzCiAgICBpZiBoYXNhdHRyKHN0LCAnc3RfZmxhZ3MnKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGxvb2t1cCgiY2hmbGFncyIpKGRzdCwgc3Quc3RfZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgogICAgICAgICAgICBmb3IgZXJyIGluICdFT1BOT1RTVVBQJywgJ0VOT1RTVVAnOgogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihlcnJubywgZXJyKSBhbmQgd2h5LmVycm5vID09IGdldGF0dHIoZXJybm8sIGVycik6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlCgpkZWYgY29weShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgogICAgIiIiQ29weSBkYXRhIGFuZCBtb2RlIGJpdHMgKCJjcCBzcmMgZHN0IikuIFJldHVybiB0aGUgZmlsZSdzIGRlc3RpbmF0aW9uLgoKICAgIFRoZSBkZXN0aW5hdGlvbiBtYXkgYmUgYSBkaXJlY3RvcnkuCgogICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIGZhbHNlLCBzeW1saW5rcyB3b24ndCBiZSBmb2xsb3dlZC4gVGhpcwogICAgcmVzZW1ibGVzIEdOVSdzICJjcCAtUCBzcmMgZHN0Ii4KCiAgICBJZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSB0aGUgc2FtZSBmaWxlLCBhIFNhbWVGaWxlRXJyb3Igd2lsbCBiZQogICAgcmFpc2VkLgoKICAgICIiIgogICAgaWYgb3MucGF0aC5pc2Rpcihkc3QpOgogICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihkc3QsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSkKICAgIGNvcHlmaWxlKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQogICAgY29weW1vZGUoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCiAgICByZXR1cm4gZHN0CgpkZWYgY29weTIoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKICAgICIiIkNvcHkgZGF0YSBhbmQgbWV0YWRhdGEuIFJldHVybiB0aGUgZmlsZSdzIGRlc3RpbmF0aW9uLgoKICAgIE1ldGFkYXRhIGlzIGNvcGllZCB3aXRoIGNvcHlzdGF0KCkuIFBsZWFzZSBzZWUgdGhlIGNvcHlzdGF0IGZ1bmN0aW9uCiAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICBUaGUgZGVzdGluYXRpb24gbWF5IGJlIGEgZGlyZWN0b3J5LgoKICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBmYWxzZSwgc3ltbGlua3Mgd29uJ3QgYmUgZm9sbG93ZWQuIFRoaXMKICAgIHJlc2VtYmxlcyBHTlUncyAiY3AgLVAgc3JjIGRzdCIuCiAgICAiIiIKICAgIGlmIG9zLnBhdGguaXNkaXIoZHN0KToKICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oZHN0LCBvcy5wYXRoLmJhc2VuYW1lKHNyYykpCiAgICBjb3B5ZmlsZShzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKICAgIGNvcHlzdGF0KHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQogICAgcmV0dXJuIGRzdAoKZGVmIGlnbm9yZV9wYXR0ZXJucygqcGF0dGVybnMpOgogICAgIiIiRnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBjb3B5dHJlZSgpIGlnbm9yZSBwYXJhbWV0ZXIuCgogICAgUGF0dGVybnMgaXMgYSBzZXF1ZW5jZSBvZiBnbG9iLXN0eWxlIHBhdHRlcm5zCiAgICB0aGF0IGFyZSB1c2VkIHRvIGV4Y2x1ZGUgZmlsZXMiIiIKICAgIGRlZiBfaWdub3JlX3BhdHRlcm5zKHBhdGgsIG5hbWVzKToKICAgICAgICBpZ25vcmVkX25hbWVzID0gW10KICAgICAgICBmb3IgcGF0dGVybiBpbiBwYXR0ZXJuczoKICAgICAgICAgICAgaWdub3JlZF9uYW1lcy5leHRlbmQoZm5tYXRjaC5maWx0ZXIobmFtZXMsIHBhdHRlcm4pKQogICAgICAgIHJldHVybiBzZXQoaWdub3JlZF9uYW1lcykKICAgIHJldHVybiBfaWdub3JlX3BhdHRlcm5zCgpkZWYgX2NvcHl0cmVlKGVudHJpZXMsIHNyYywgZHN0LCBzeW1saW5rcywgaWdub3JlLCBjb3B5X2Z1bmN0aW9uLAogICAgICAgICAgICAgIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcywgZGlyc19leGlzdF9vaz1GYWxzZSk6CiAgICBpZiBpZ25vcmUgaXMgbm90IE5vbmU6CiAgICAgICAgaWdub3JlZF9uYW1lcyA9IGlnbm9yZShvcy5mc3BhdGgoc3JjKSwgW3gubmFtZSBmb3IgeCBpbiBlbnRyaWVzXSkKICAgIGVsc2U6CiAgICAgICAgaWdub3JlZF9uYW1lcyA9IHNldCgpCgogICAgb3MubWFrZWRpcnMoZHN0LCBleGlzdF9vaz1kaXJzX2V4aXN0X29rKQogICAgZXJyb3JzID0gW10KICAgIHVzZV9zcmNlbnRyeSA9IGNvcHlfZnVuY3Rpb24gaXMgY29weTIgb3IgY29weV9mdW5jdGlvbiBpcyBjb3B5CgogICAgZm9yIHNyY2VudHJ5IGluIGVudHJpZXM6CiAgICAgICAgaWYgc3JjZW50cnkubmFtZSBpbiBpZ25vcmVkX25hbWVzOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHNyY25hbWUgPSBvcy5wYXRoLmpvaW4oc3JjLCBzcmNlbnRyeS5uYW1lKQogICAgICAgIGRzdG5hbWUgPSBvcy5wYXRoLmpvaW4oZHN0LCBzcmNlbnRyeS5uYW1lKQogICAgICAgIHNyY29iaiA9IHNyY2VudHJ5IGlmIHVzZV9zcmNlbnRyeSBlbHNlIHNyY25hbWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBzcmNlbnRyeS5pc19zeW1saW5rKCkKICAgICAgICAgICAgaWYgaXNfc3ltbGluayBhbmQgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNoZWNrIGZvciBkaXJlY3RvcnkganVuY3Rpb25zLCB3aGljaCBhcHBlYXIgYXMKICAgICAgICAgICAgICAgICMgc3ltbGlua3MgYnV0IHdlIHdhbnQgdG8gcmVjdXJzZS4KICAgICAgICAgICAgICAgIGxzdGF0ID0gc3JjZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAgICAgICAgICAgICAgICBpZiBsc3RhdC5zdF9yZXBhcnNlX3RhZyA9PSBzdGF0LklPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UOgogICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBGYWxzZQogICAgICAgICAgICBpZiBpc19zeW1saW5rOgogICAgICAgICAgICAgICAgbGlua3RvID0gb3MucmVhZGxpbmsoc3JjbmFtZSkKICAgICAgICAgICAgICAgIGlmIHN5bWxpbmtzOgogICAgICAgICAgICAgICAgICAgICMgV2UgY2FuJ3QganVzdCBsZWF2ZSBpdCB0byBgY29weV9mdW5jdGlvbmAgYmVjYXVzZSBsZWdhY3kKICAgICAgICAgICAgICAgICAgICAjIGNvZGUgd2l0aCBhIGN1c3RvbSBgY29weV9mdW5jdGlvbmAgbWF5IHJlbHkgb24gY29weXRyZWUKICAgICAgICAgICAgICAgICAgICAjIGRvaW5nIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKGxpbmt0bywgZHN0bmFtZSkKICAgICAgICAgICAgICAgICAgICBjb3B5c3RhdChzcmNvYmosIGRzdG5hbWUsIGZvbGxvd19zeW1saW5rcz1ub3Qgc3ltbGlua3MpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgaWdub3JlIGRhbmdsaW5nIHN5bWxpbmsgaWYgdGhlIGZsYWcgaXMgb24KICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGlua3RvKSBhbmQgaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGxldCB0aGUgY29weSBvY2N1ci4gY29weTIgd2lsbCByYWlzZSBhbiBlcnJvcgogICAgICAgICAgICAgICAgICAgIGlmIHNyY2VudHJ5LmlzX2RpcigpOgogICAgICAgICAgICAgICAgICAgICAgICBjb3B5dHJlZShzcmNvYmosIGRzdG5hbWUsIHN5bWxpbmtzLCBpZ25vcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfZnVuY3Rpb24sIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyc19leGlzdF9vaykKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBjb3B5X2Z1bmN0aW9uKHNyY29iaiwgZHN0bmFtZSkKICAgICAgICAgICAgZWxpZiBzcmNlbnRyeS5pc19kaXIoKToKICAgICAgICAgICAgICAgIGNvcHl0cmVlKHNyY29iaiwgZHN0bmFtZSwgc3ltbGlua3MsIGlnbm9yZSwgY29weV9mdW5jdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcywgZGlyc19leGlzdF9vaykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgV2lsbCByYWlzZSBhIFNwZWNpYWxGaWxlRXJyb3IgZm9yIHVuc3VwcG9ydGVkIGZpbGUgdHlwZXMKICAgICAgICAgICAgICAgIGNvcHlfZnVuY3Rpb24oc3Jjb2JqLCBkc3RuYW1lKQogICAgICAgICMgY2F0Y2ggdGhlIEVycm9yIGZyb20gdGhlIHJlY3Vyc2l2ZSBjb3B5dHJlZSBzbyB0aGF0IHdlIGNhbgogICAgICAgICMgY29udGludWUgd2l0aCBvdGhlciBmaWxlcwogICAgICAgIGV4Y2VwdCBFcnJvciBhcyBlcnI6CiAgICAgICAgICAgIGVycm9ycy5leHRlbmQoZXJyLmFyZ3NbMF0pCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgogICAgICAgICAgICBlcnJvcnMuYXBwZW5kKChzcmNuYW1lLCBkc3RuYW1lLCBzdHIod2h5KSkpCiAgICB0cnk6CiAgICAgICAgY29weXN0YXQoc3JjLCBkc3QpCiAgICBleGNlcHQgT1NFcnJvciBhcyB3aHk6CiAgICAgICAgIyBDb3B5aW5nIGZpbGUgYWNjZXNzIHRpbWVzIG1heSBmYWlsIG9uIFdpbmRvd3MKICAgICAgICBpZiBnZXRhdHRyKHdoeSwgJ3dpbmVycm9yJywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoc3JjLCBkc3QsIHN0cih3aHkpKSkKICAgIGlmIGVycm9yczoKICAgICAgICByYWlzZSBFcnJvcihlcnJvcnMpCiAgICByZXR1cm4gZHN0CgpkZWYgY29weXRyZWUoc3JjLCBkc3QsIHN5bWxpbmtzPUZhbHNlLCBpZ25vcmU9Tm9uZSwgY29weV9mdW5jdGlvbj1jb3B5MiwKICAgICAgICAgICAgIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcz1GYWxzZSwgZGlyc19leGlzdF9vaz1GYWxzZSk6CiAgICAiIiJSZWN1cnNpdmVseSBjb3B5IGEgZGlyZWN0b3J5IHRyZWUgYW5kIHJldHVybiB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5LgoKICAgIElmIGV4Y2VwdGlvbihzKSBvY2N1ciwgYW4gRXJyb3IgaXMgcmFpc2VkIHdpdGggYSBsaXN0IG9mIHJlYXNvbnMuCgogICAgSWYgdGhlIG9wdGlvbmFsIHN5bWxpbmtzIGZsYWcgaXMgdHJ1ZSwgc3ltYm9saWMgbGlua3MgaW4gdGhlCiAgICBzb3VyY2UgdHJlZSByZXN1bHQgaW4gc3ltYm9saWMgbGlua3MgaW4gdGhlIGRlc3RpbmF0aW9uIHRyZWU7IGlmCiAgICBpdCBpcyBmYWxzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlcyBwb2ludGVkIHRvIGJ5IHN5bWJvbGljCiAgICBsaW5rcyBhcmUgY29waWVkLiBJZiB0aGUgZmlsZSBwb2ludGVkIGJ5IHRoZSBzeW1saW5rIGRvZXNuJ3QKICAgIGV4aXN0LCBhbiBleGNlcHRpb24gd2lsbCBiZSBhZGRlZCBpbiB0aGUgbGlzdCBvZiBlcnJvcnMgcmFpc2VkIGluCiAgICBhbiBFcnJvciBleGNlcHRpb24gYXQgdGhlIGVuZCBvZiB0aGUgY29weSBwcm9jZXNzLgoKICAgIFlvdSBjYW4gc2V0IHRoZSBvcHRpb25hbCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3MgZmxhZyB0byB0cnVlIGlmIHlvdQogICAgd2FudCB0byBzaWxlbmNlIHRoaXMgZXhjZXB0aW9uLiBOb3RpY2UgdGhhdCB0aGlzIGhhcyBubyBlZmZlY3Qgb24KICAgIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgb3Muc3ltbGluay4KCiAgICBUaGUgb3B0aW9uYWwgaWdub3JlIGFyZ3VtZW50IGlzIGEgY2FsbGFibGUuIElmIGdpdmVuLCBpdAogICAgaXMgY2FsbGVkIHdpdGggdGhlIGBzcmNgIHBhcmFtZXRlciwgd2hpY2ggaXMgdGhlIGRpcmVjdG9yeQogICAgYmVpbmcgdmlzaXRlZCBieSBjb3B5dHJlZSgpLCBhbmQgYG5hbWVzYCB3aGljaCBpcyB0aGUgbGlzdCBvZgogICAgYHNyY2AgY29udGVudHMsIGFzIHJldHVybmVkIGJ5IG9zLmxpc3RkaXIoKToKCiAgICAgICAgY2FsbGFibGUoc3JjLCBuYW1lcykgLT4gaWdub3JlZF9uYW1lcwoKICAgIFNpbmNlIGNvcHl0cmVlKCkgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5LCB0aGUgY2FsbGFibGUgd2lsbCBiZQogICAgY2FsbGVkIG9uY2UgZm9yIGVhY2ggZGlyZWN0b3J5IHRoYXQgaXMgY29waWVkLiBJdCByZXR1cm5zIGEKICAgIGxpc3Qgb2YgbmFtZXMgcmVsYXRpdmUgdG8gdGhlIGBzcmNgIGRpcmVjdG9yeSB0aGF0IHNob3VsZAogICAgbm90IGJlIGNvcGllZC4KCiAgICBUaGUgb3B0aW9uYWwgY29weV9mdW5jdGlvbiBhcmd1bWVudCBpcyBhIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSB1c2VkCiAgICB0byBjb3B5IGVhY2ggZmlsZS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgc291cmNlIHBhdGggYW5kIHRoZQogICAgZGVzdGluYXRpb24gcGF0aCBhcyBhcmd1bWVudHMuIEJ5IGRlZmF1bHQsIGNvcHkyKCkgaXMgdXNlZCwgYnV0IGFueQogICAgZnVuY3Rpb24gdGhhdCBzdXBwb3J0cyB0aGUgc2FtZSBzaWduYXR1cmUgKGxpa2UgY29weSgpKSBjYW4gYmUgdXNlZC4KCiAgICBJZiBkaXJzX2V4aXN0X29rIGlzIGZhbHNlICh0aGUgZGVmYXVsdCkgYW5kIGBkc3RgIGFscmVhZHkgZXhpc3RzLCBhCiAgICBgRmlsZUV4aXN0c0Vycm9yYCBpcyByYWlzZWQuIElmIGBkaXJzX2V4aXN0X29rYCBpcyB0cnVlLCB0aGUgY29weWluZwogICAgb3BlcmF0aW9uIHdpbGwgY29udGludWUgaWYgaXQgZW5jb3VudGVycyBleGlzdGluZyBkaXJlY3RvcmllcywgYW5kIGZpbGVzCiAgICB3aXRoaW4gdGhlIGBkc3RgIHRyZWUgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSBjb3JyZXNwb25kaW5nIGZpbGVzIGZyb20gdGhlCiAgICBgc3JjYCB0cmVlLgogICAgIiIiCiAgICBzeXMuYXVkaXQoInNodXRpbC5jb3B5dHJlZSIsIHNyYywgZHN0KQogICAgd2l0aCBvcy5zY2FuZGlyKHNyYykgYXMgaXRyOgogICAgICAgIGVudHJpZXMgPSBsaXN0KGl0cikKICAgIHJldHVybiBfY29weXRyZWUoZW50cmllcz1lbnRyaWVzLCBzcmM9c3JjLCBkc3Q9ZHN0LCBzeW1saW5rcz1zeW1saW5rcywKICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZSwgY29weV9mdW5jdGlvbj1jb3B5X2Z1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M9aWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzLAogICAgICAgICAgICAgICAgICAgICBkaXJzX2V4aXN0X29rPWRpcnNfZXhpc3Rfb2spCgppZiBoYXNhdHRyKG9zLnN0YXRfcmVzdWx0LCAnc3RfZmlsZV9hdHRyaWJ1dGVzJyk6CiAgICAjIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGRpcmVjdG9yeSBqdW5jdGlvbnMgdG8gbWFrZSB0aGVtIGJlaGF2ZSBsaWtlCiAgICAjIHN5bWxpbmtzIGZvciBzaHV0aWwucm10cmVlLCBzaW5jZSBpbiBnZW5lcmFsIHRoZXkgZG8gbm90IGFwcGVhciBhcwogICAgIyByZWd1bGFyIGxpbmtzLgogICAgZGVmIF9ybXRyZWVfaXNkaXIoZW50cnkpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc3QgPSBlbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKICAgICAgICAgICAgcmV0dXJuIChzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSkgYW5kIG5vdAogICAgICAgICAgICAgICAgKHN0LnN0X2ZpbGVfYXR0cmlidXRlcyAmIHN0YXQuRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVAogICAgICAgICAgICAgICAgIGFuZCBzdC5zdF9yZXBhcnNlX3RhZyA9PSBzdGF0LklPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UKSkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9ybXRyZWVfaXNsaW5rKHBhdGgpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc3QgPSBvcy5sc3RhdChwYXRoKQogICAgICAgICAgICByZXR1cm4gKHN0YXQuU19JU0xOSyhzdC5zdF9tb2RlKSBvcgogICAgICAgICAgICAgICAgKHN0LnN0X2ZpbGVfYXR0cmlidXRlcyAmIHN0YXQuRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVAogICAgICAgICAgICAgICAgIGFuZCBzdC5zdF9yZXBhcnNlX3RhZyA9PSBzdGF0LklPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UKSkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCmVsc2U6CiAgICBkZWYgX3JtdHJlZV9pc2RpcihlbnRyeSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gZW50cnkuaXNfZGlyKGZvbGxvd19zeW1saW5rcz1GYWxzZSkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9ybXRyZWVfaXNsaW5rKHBhdGgpOgogICAgICAgIHJldHVybiBvcy5wYXRoLmlzbGluayhwYXRoKQoKIyB2ZXJzaW9uIHZ1bG5lcmFibGUgdG8gcmFjZSBjb25kaXRpb25zCmRlZiBfcm10cmVlX3Vuc2FmZShwYXRoLCBvbmVycm9yKToKICAgIHRyeToKICAgICAgICB3aXRoIG9zLnNjYW5kaXIocGF0aCkgYXMgc2NhbmRpcl9pdDoKICAgICAgICAgICAgZW50cmllcyA9IGxpc3Qoc2NhbmRpcl9pdCkKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIG9uZXJyb3Iob3Muc2NhbmRpciwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgZW50cmllcyA9IFtdCiAgICBmb3IgZW50cnkgaW4gZW50cmllczoKICAgICAgICBmdWxsbmFtZSA9IGVudHJ5LnBhdGgKICAgICAgICBpZiBfcm10cmVlX2lzZGlyKGVudHJ5KToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgZW50cnkuaXNfc3ltbGluaygpOgogICAgICAgICAgICAgICAgICAgICMgVGhpcyBjYW4gb25seSBoYXBwZW4gaWYgc29tZW9uZSByZXBsYWNlcwogICAgICAgICAgICAgICAgICAgICMgYSBkaXJlY3Rvcnkgd2l0aCBhIHN5bWxpbmsgYWZ0ZXIgdGhlIGNhbGwgdG8KICAgICAgICAgICAgICAgICAgICAjIG9zLnNjYW5kaXIgb3IgZW50cnkuaXNfZGlyIGFib3ZlLgogICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNhbm5vdCBjYWxsIHJtdHJlZSBvbiBhIHN5bWJvbGljIGxpbmsiKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MucGF0aC5pc2xpbmssIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIF9ybXRyZWVfdW5zYWZlKGZ1bGxuYW1lLCBvbmVycm9yKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG9zLnVubGluayhmdWxsbmFtZSkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnVubGluaywgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQogICAgdHJ5OgogICAgICAgIG9zLnJtZGlyKHBhdGgpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKCiMgVmVyc2lvbiB1c2luZyBmZC1iYXNlZCBBUElzIHRvIHByb3RlY3QgYWdhaW5zdCByYWNlcwpkZWYgX3JtdHJlZV9zYWZlX2ZkKHRvcGZkLCBwYXRoLCBvbmVycm9yKToKICAgIHRyeToKICAgICAgICB3aXRoIG9zLnNjYW5kaXIodG9wZmQpIGFzIHNjYW5kaXJfaXQ6CiAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXJfaXQpCiAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgZXJyLmZpbGVuYW1lID0gcGF0aAogICAgICAgIG9uZXJyb3Iob3Muc2NhbmRpciwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgcmV0dXJuCiAgICBmb3IgZW50cnkgaW4gZW50cmllczoKICAgICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBlbnRyeS5uYW1lKQogICAgICAgIHRyeToKICAgICAgICAgICAgaXNfZGlyID0gZW50cnkuaXNfZGlyKGZvbGxvd19zeW1saW5rcz1GYWxzZSkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgaXNfZGlyID0gRmFsc2UKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBpc19kaXI6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgb3JpZ19zdCA9IGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogICAgICAgICAgICAgICAgICAgIGlzX2RpciA9IHN0YXQuU19JU0RJUihvcmlnX3N0LnN0X21vZGUpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLmxzdGF0LCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBpc19kaXI6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihlbnRyeS5uYW1lLCBvcy5PX1JET05MWSwgZGlyX2ZkPXRvcGZkKQogICAgICAgICAgICAgICAgZGlyZmRfY2xvc2VkID0gRmFsc2UKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBvbmVycm9yKG9zLm9wZW4sIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLnNhbWVzdGF0KG9yaWdfc3QsIG9zLmZzdGF0KGRpcmZkKSk6CiAgICAgICAgICAgICAgICAgICAgICAgIF9ybXRyZWVfc2FmZV9mZChkaXJmZCwgZnVsbG5hbWUsIG9uZXJyb3IpCiAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGRpcmZkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZmRfY2xvc2VkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIoZW50cnkubmFtZSwgZGlyX2ZkPXRvcGZkKQogICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHNvbWVvbmUgcmVwbGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBkaXJlY3Rvcnkgd2l0aCBhIHN5bWxpbmsgYWZ0ZXIgdGhlIGNhbGwgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3Muc2NhbmRpciBvciBzdGF0LlNfSVNESVIgYWJvdmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJDYW5ub3QgY2FsbCBybXRyZWUgb24gYSBzeW1ib2xpYyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rIikKICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnBhdGguaXNsaW5rLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkaXJmZF9jbG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGRpcmZkKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG9zLnVubGluayhlbnRyeS5uYW1lLCBkaXJfZmQ9dG9wZmQpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgb25lcnJvcihvcy51bmxpbmssIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKCl91c2VfZmRfZnVuY3Rpb25zID0gKHtvcy5vcGVuLCBvcy5zdGF0LCBvcy51bmxpbmssIG9zLnJtZGlyfSA8PQogICAgICAgICAgICAgICAgICAgICBvcy5zdXBwb3J0c19kaXJfZmQgYW5kCiAgICAgICAgICAgICAgICAgICAgIG9zLnNjYW5kaXIgaW4gb3Muc3VwcG9ydHNfZmQgYW5kCiAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzKQoKZGVmIHJtdHJlZShwYXRoLCBpZ25vcmVfZXJyb3JzPUZhbHNlLCBvbmVycm9yPU5vbmUsICosIGRpcl9mZD1Ob25lKToKICAgICIiIlJlY3Vyc2l2ZWx5IGRlbGV0ZSBhIGRpcmVjdG9yeSB0cmVlLgoKICAgIElmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3Rvcnk7CiAgICBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KICAgIGRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCiAgICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCgogICAgSWYgaWdub3JlX2Vycm9ycyBpcyBzZXQsIGVycm9ycyBhcmUgaWdub3JlZDsgb3RoZXJ3aXNlLCBpZiBvbmVycm9yCiAgICBpcyBzZXQsIGl0IGlzIGNhbGxlZCB0byBoYW5kbGUgdGhlIGVycm9yIHdpdGggYXJndW1lbnRzIChmdW5jLAogICAgcGF0aCwgZXhjX2luZm8pIHdoZXJlIGZ1bmMgaXMgcGxhdGZvcm0gYW5kIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudDsKICAgIHBhdGggaXMgdGhlIGFyZ3VtZW50IHRvIHRoYXQgZnVuY3Rpb24gdGhhdCBjYXVzZWQgaXQgdG8gZmFpbDsgYW5kCiAgICBleGNfaW5mbyBpcyBhIHR1cGxlIHJldHVybmVkIGJ5IHN5cy5leGNfaW5mbygpLiAgSWYgaWdub3JlX2Vycm9ycwogICAgaXMgZmFsc2UgYW5kIG9uZXJyb3IgaXMgTm9uZSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KCiAgICAiIiIKICAgIHN5cy5hdWRpdCgic2h1dGlsLnJtdHJlZSIsIHBhdGgsIGRpcl9mZCkKICAgIGlmIGlnbm9yZV9lcnJvcnM6CiAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgogICAgICAgICAgICBwYXNzCiAgICBlbGlmIG9uZXJyb3IgaXMgTm9uZToKICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6CiAgICAgICAgICAgIHJhaXNlCiAgICBpZiBfdXNlX2ZkX2Z1bmN0aW9uczoKICAgICAgICAjIFdoaWxlIHRoZSB1bnNhZmUgcm10cmVlIHdvcmtzIGZpbmUgb24gYnl0ZXMsIHRoZSBmZCBiYXNlZCBkb2VzIG5vdC4KICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgcGF0aCA9IG9zLmZzZGVjb2RlKHBhdGgpCiAgICAgICAgIyBOb3RlOiBUbyBndWFyZCBhZ2FpbnN0IHN5bWxpbmsgcmFjZXMsIHdlIHVzZSB0aGUgc3RhbmRhcmQKICAgICAgICAjIGxzdGF0KCkvb3BlbigpL2ZzdGF0KCkgdHJpY2suCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvcmlnX3N0ID0gb3MubHN0YXQocGF0aCwgZGlyX2ZkPWRpcl9mZCkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBvbmVycm9yKG9zLmxzdGF0LCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmZCA9IG9zLm9wZW4ocGF0aCwgb3MuT19SRE9OTFksIGRpcl9mZD1kaXJfZmQpCiAgICAgICAgICAgIGZkX2Nsb3NlZCA9IEZhbHNlCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgb25lcnJvcihvcy5vcGVuLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBvcy5wYXRoLnNhbWVzdGF0KG9yaWdfc3QsIG9zLmZzdGF0KGZkKSk6CiAgICAgICAgICAgICAgICBfcm10cmVlX3NhZmVfZmQoZmQsIHBhdGgsIG9uZXJyb3IpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCiAgICAgICAgICAgICAgICAgICAgZmRfY2xvc2VkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKHBhdGgsIGRpcl9mZD1kaXJfZmQpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAjIHN5bWxpbmtzIHRvIGRpcmVjdG9yaWVzIGFyZSBmb3JiaWRkZW4sIHNlZSBidWcgIzE2NjkKICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJDYW5ub3QgY2FsbCBybXRyZWUgb24gYSBzeW1ib2xpYyBsaW5rIikKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MucGF0aC5pc2xpbmssIHBhdGgsIHN5cy5leGNfaW5mbygpKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIG5vdCBmZF9jbG9zZWQ6CiAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgIGVsc2U6CiAgICAgICAgaWYgZGlyX2ZkIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJkaXJfZmQgdW5hdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBfcm10cmVlX2lzbGluayhwYXRoKToKICAgICAgICAgICAgICAgICMgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXJlIGZvcmJpZGRlbiwgc2VlIGJ1ZyAjMTY2OQogICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiQ2Fubm90IGNhbGwgcm10cmVlIG9uIGEgc3ltYm9saWMgbGluayIpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIG9uZXJyb3Iob3MucGF0aC5pc2xpbmssIHBhdGgsIHN5cy5leGNfaW5mbygpKQogICAgICAgICAgICAjIGNhbid0IGNvbnRpbnVlIGV2ZW4gaWYgb25lcnJvciBob29rIHJldHVybnMKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgcmV0dXJuIF9ybXRyZWVfdW5zYWZlKHBhdGgsIG9uZXJyb3IpCgojIEFsbG93IGludHJvc3BlY3Rpb24gb2Ygd2hldGhlciBvciBub3QgdGhlIGhhcmRlbmluZyBhZ2FpbnN0IHN5bWxpbmsKIyBhdHRhY2tzIGlzIHN1cHBvcnRlZCBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybQpybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcyA9IF91c2VfZmRfZnVuY3Rpb25zCgpkZWYgX2Jhc2VuYW1lKHBhdGgpOgogICAgIiIiQSBiYXNlbmFtZSgpIHZhcmlhbnQgd2hpY2ggZmlyc3Qgc3RyaXBzIHRoZSB0cmFpbGluZyBzbGFzaCwgaWYgcHJlc2VudC4KICAgIFRodXMgd2UgYWx3YXlzIGdldCB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIHBhdGgsIGV2ZW4gZm9yIGRpcmVjdG9yaWVzLgoKICAgIHBhdGg6IFVuaW9uW1BhdGhMaWtlLCBzdHJdCgogICAgZS5nLgogICAgPj4+IG9zLnBhdGguYmFzZW5hbWUoJy9iYXIvZm9vJykKICAgICdmb28nCiAgICA+Pj4gb3MucGF0aC5iYXNlbmFtZSgnL2Jhci9mb28vJykKICAgICcnCiAgICA+Pj4gX2Jhc2VuYW1lKCcvYmFyL2Zvby8nKQogICAgJ2ZvbycKICAgICIiIgogICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgc2VwID0gb3MucGF0aC5zZXAgKyAob3MucGF0aC5hbHRzZXAgb3IgJycpCiAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoLnJzdHJpcChzZXApKQoKZGVmIG1vdmUoc3JjLCBkc3QsIGNvcHlfZnVuY3Rpb249Y29weTIpOgogICAgIiIiUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5IHRvIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgaXMKICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLiBSZXR1cm4gdGhlIGZpbGUgb3IgZGlyZWN0b3J5J3MKICAgIGRlc3RpbmF0aW9uLgoKICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSBvciBhIHN5bWxpbmsgdG8gYSBkaXJlY3RvcnksIHRoZSBzb3VyY2UKICAgIGlzIG1vdmVkIGluc2lkZSB0aGUgZGlyZWN0b3J5LiBUaGUgZGVzdGluYXRpb24gcGF0aCBtdXN0IG5vdCBhbHJlYWR5CiAgICBleGlzdC4KCiAgICBJZiB0aGUgZGVzdGluYXRpb24gYWxyZWFkeSBleGlzdHMgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeSwgaXQgbWF5IGJlCiAgICBvdmVyd3JpdHRlbiBkZXBlbmRpbmcgb24gb3MucmVuYW1lKCkgc2VtYW50aWNzLgoKICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiBvdXIgY3VycmVudCBmaWxlc3lzdGVtLCB0aGVuIHJlbmFtZSgpIGlzIHVzZWQuCiAgICBPdGhlcndpc2UsIHNyYyBpcyBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGFuZCB0aGVuIHJlbW92ZWQuIFN5bWxpbmtzIGFyZQogICAgcmVjcmVhdGVkIHVuZGVyIHRoZSBuZXcgbmFtZSBpZiBvcy5yZW5hbWUoKSBmYWlscyBiZWNhdXNlIG9mIGNyb3NzCiAgICBmaWxlc3lzdGVtIHJlbmFtZXMuCgogICAgVGhlIG9wdGlvbmFsIGBjb3B5X2Z1bmN0aW9uYCBhcmd1bWVudCBpcyBhIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSB1c2VkCiAgICB0byBjb3B5IHRoZSBzb3VyY2Ugb3IgaXQgd2lsbCBiZSBkZWxlZ2F0ZWQgdG8gYGNvcHl0cmVlYC4KICAgIEJ5IGRlZmF1bHQsIGNvcHkyKCkgaXMgdXNlZCwgYnV0IGFueSBmdW5jdGlvbiB0aGF0IHN1cHBvcnRzIHRoZSBzYW1lCiAgICBzaWduYXR1cmUgKGxpa2UgY29weSgpKSBjYW4gYmUgdXNlZC4KCiAgICBBIGxvdCBtb3JlIGNvdWxkIGJlIGRvbmUgaGVyZS4uLiAgQSBsb29rIGF0IGEgbXYuYyBzaG93cyBhIGxvdCBvZgogICAgdGhlIGlzc3VlcyB0aGlzIGltcGxlbWVudGF0aW9uIGdsb3NzZXMgb3Zlci4KCiAgICAiIiIKICAgIHN5cy5hdWRpdCgic2h1dGlsLm1vdmUiLCBzcmMsIGRzdCkKICAgIHJlYWxfZHN0ID0gZHN0CiAgICBpZiBvcy5wYXRoLmlzZGlyKGRzdCk6CiAgICAgICAgaWYgX3NhbWVmaWxlKHNyYywgZHN0KToKICAgICAgICAgICAgIyBXZSBtaWdodCBiZSBvbiBhIGNhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbSwKICAgICAgICAgICAgIyBwZXJmb3JtIHRoZSByZW5hbWUgYW55d2F5LgogICAgICAgICAgICBvcy5yZW5hbWUoc3JjLCBkc3QpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIFVzaW5nIF9iYXNlbmFtZSBpbnN0ZWFkIG9mIG9zLnBhdGguYmFzZW5hbWUgaXMgaW1wb3J0YW50LCBhcyB3ZSBtdXN0CiAgICAgICAgIyBpZ25vcmUgYW55IHRyYWlsaW5nIHNsYXNoIHRvIGF2b2lkIHRoZSBiYXNlbmFtZSByZXR1cm5pbmcgJycKICAgICAgICByZWFsX2RzdCA9IG9zLnBhdGguam9pbihkc3QsIF9iYXNlbmFtZShzcmMpKQoKICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhyZWFsX2RzdCk6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCJEZXN0aW5hdGlvbiBwYXRoICclcycgYWxyZWFkeSBleGlzdHMiICUgcmVhbF9kc3QpCiAgICB0cnk6CiAgICAgICAgb3MucmVuYW1lKHNyYywgcmVhbF9kc3QpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhzcmMpOgogICAgICAgICAgICBsaW5rdG8gPSBvcy5yZWFkbGluayhzcmMpCiAgICAgICAgICAgIG9zLnN5bWxpbmsobGlua3RvLCByZWFsX2RzdCkKICAgICAgICAgICAgb3MudW5saW5rKHNyYykKICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoc3JjKToKICAgICAgICAgICAgaWYgX2Rlc3RpbnNyYyhzcmMsIGRzdCk6CiAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiQ2Fubm90IG1vdmUgYSBkaXJlY3RvcnkgJyVzJyBpbnRvIGl0c2VsZiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJyVzJy4iICUgKHNyYywgZHN0KSkKICAgICAgICAgICAgaWYgKF9pc19pbW11dGFibGUoc3JjKQogICAgICAgICAgICAgICAgICAgIG9yIChub3Qgb3MuYWNjZXNzKHNyYywgb3MuV19PSykgYW5kIG9zLmxpc3RkaXIoc3JjKQogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nKSk6CiAgICAgICAgICAgICAgICByYWlzZSBQZXJtaXNzaW9uRXJyb3IoIkNhbm5vdCBtb3ZlIHRoZSBub24tZW1wdHkgZGlyZWN0b3J5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJzogTGFja2luZyB3cml0ZSBwZXJtaXNzaW9uIHRvICclcycuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNyYywgc3JjKSkKICAgICAgICAgICAgY29weXRyZWUoc3JjLCByZWFsX2RzdCwgY29weV9mdW5jdGlvbj1jb3B5X2Z1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1UcnVlKQogICAgICAgICAgICBybXRyZWUoc3JjKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvcHlfZnVuY3Rpb24oc3JjLCByZWFsX2RzdCkKICAgICAgICAgICAgb3MudW5saW5rKHNyYykKICAgIHJldHVybiByZWFsX2RzdAoKZGVmIF9kZXN0aW5zcmMoc3JjLCBkc3QpOgogICAgc3JjID0gb3MucGF0aC5hYnNwYXRoKHNyYykKICAgIGRzdCA9IG9zLnBhdGguYWJzcGF0aChkc3QpCiAgICBpZiBub3Qgc3JjLmVuZHN3aXRoKG9zLnBhdGguc2VwKToKICAgICAgICBzcmMgKz0gb3MucGF0aC5zZXAKICAgIGlmIG5vdCBkc3QuZW5kc3dpdGgob3MucGF0aC5zZXApOgogICAgICAgIGRzdCArPSBvcy5wYXRoLnNlcAogICAgcmV0dXJuIGRzdC5zdGFydHN3aXRoKHNyYykKCmRlZiBfaXNfaW1tdXRhYmxlKHNyYyk6CiAgICBzdCA9IF9zdGF0KHNyYykKICAgIGltbXV0YWJsZV9zdGF0ZXMgPSBbc3RhdC5VRl9JTU1VVEFCTEUsIHN0YXQuU0ZfSU1NVVRBQkxFXQogICAgcmV0dXJuIGhhc2F0dHIoc3QsICdzdF9mbGFncycpIGFuZCBzdC5zdF9mbGFncyBpbiBpbW11dGFibGVfc3RhdGVzCgpkZWYgX2dldF9naWQobmFtZSk6CiAgICAiIiJSZXR1cm5zIGEgZ2lkLCBnaXZlbiBhIGdyb3VwIG5hbWUuIiIiCiAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICB0cnk6CiAgICAgICAgZnJvbSBncnAgaW1wb3J0IGdldGdybmFtCiAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICB0cnk6CiAgICAgICAgcmVzdWx0ID0gZ2V0Z3JuYW0obmFtZSkKICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICByZXN1bHQgPSBOb25lCiAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIHJlc3VsdFsyXQogICAgcmV0dXJuIE5vbmUKCmRlZiBfZ2V0X3VpZChuYW1lKToKICAgICIiIlJldHVybnMgYW4gdWlkLCBnaXZlbiBhIHVzZXIgbmFtZS4iIiIKICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIHRyeToKICAgICAgICBmcm9tIHB3ZCBpbXBvcnQgZ2V0cHduYW0KICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICByZXR1cm4gTm9uZQoKICAgIHRyeToKICAgICAgICByZXN1bHQgPSBnZXRwd25hbShuYW1lKQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJlc3VsdCA9IE5vbmUKICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gcmVzdWx0WzJdCiAgICByZXR1cm4gTm9uZQoKZGVmIF9tYWtlX3RhcmJhbGwoYmFzZV9uYW1lLCBiYXNlX2RpciwgY29tcHJlc3M9Imd6aXAiLCB2ZXJib3NlPTAsIGRyeV9ydW49MCwKICAgICAgICAgICAgICAgICAgb3duZXI9Tm9uZSwgZ3JvdXA9Tm9uZSwgbG9nZ2VyPU5vbmUsIHJvb3RfZGlyPU5vbmUpOgogICAgIiIiQ3JlYXRlIGEgKHBvc3NpYmx5IGNvbXByZXNzZWQpIHRhciBmaWxlIGZyb20gYWxsIHRoZSBmaWxlcyB1bmRlcgogICAgJ2Jhc2VfZGlyJy4KCiAgICAnY29tcHJlc3MnIG11c3QgYmUgImd6aXAiICh0aGUgZGVmYXVsdCksICJiemlwMiIsICJ4eiIsIG9yIE5vbmUuCgogICAgJ293bmVyJyBhbmQgJ2dyb3VwJyBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW4gb3duZXIgYW5kIGEgZ3JvdXAgZm9yIHRoZQogICAgYXJjaGl2ZSB0aGF0IGlzIGJlaW5nIGJ1aWx0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IG93bmVyIGFuZCBncm91cAogICAgd2lsbCBiZSB1c2VkLgoKICAgIFRoZSBvdXRwdXQgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCAnYmFzZV9uYW1lJyArICAiLnRhciIsIHBvc3NpYmx5IHBsdXMKICAgIHRoZSBhcHByb3ByaWF0ZSBjb21wcmVzc2lvbiBleHRlbnNpb24gKCIuZ3oiLCAiLmJ6MiIsIG9yICIueHoiKS4KCiAgICBSZXR1cm5zIHRoZSBvdXRwdXQgZmlsZW5hbWUuCiAgICAiIiIKICAgIGlmIGNvbXByZXNzIGlzIE5vbmU6CiAgICAgICAgdGFyX2NvbXByZXNzaW9uID0gJycKICAgIGVsaWYgX1pMSUJfU1VQUE9SVEVEIGFuZCBjb21wcmVzcyA9PSAnZ3ppcCc6CiAgICAgICAgdGFyX2NvbXByZXNzaW9uID0gJ2d6JwogICAgZWxpZiBfQloyX1NVUFBPUlRFRCBhbmQgY29tcHJlc3MgPT0gJ2J6aXAyJzoKICAgICAgICB0YXJfY29tcHJlc3Npb24gPSAnYnoyJwogICAgZWxpZiBfTFpNQV9TVVBQT1JURUQgYW5kIGNvbXByZXNzID09ICd4eic6CiAgICAgICAgdGFyX2NvbXByZXNzaW9uID0gJ3h6JwogICAgZWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiYWQgdmFsdWUgZm9yICdjb21wcmVzcycsIG9yIGNvbXByZXNzaW9uIGZvcm1hdCBub3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCA6IHswfSIuZm9ybWF0KGNvbXByZXNzKSkKCiAgICBpbXBvcnQgdGFyZmlsZSAgIyBsYXRlIGltcG9ydCBmb3IgYnJlYWtpbmcgY2lyY3VsYXIgZGVwZW5kZW5jeQoKICAgIGNvbXByZXNzX2V4dCA9ICcuJyArIHRhcl9jb21wcmVzc2lvbiBpZiBjb21wcmVzcyBlbHNlICcnCiAgICBhcmNoaXZlX25hbWUgPSBiYXNlX25hbWUgKyAnLnRhcicgKyBjb21wcmVzc19leHQKICAgIGFyY2hpdmVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGFyY2hpdmVfbmFtZSkKCiAgICBpZiBhcmNoaXZlX2RpciBhbmQgbm90IG9zLnBhdGguZXhpc3RzKGFyY2hpdmVfZGlyKToKICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjcmVhdGluZyAlcyIsIGFyY2hpdmVfZGlyKQogICAgICAgIGlmIG5vdCBkcnlfcnVuOgogICAgICAgICAgICBvcy5tYWtlZGlycyhhcmNoaXZlX2RpcikKCiAgICAjIGNyZWF0aW5nIHRoZSB0YXJiYWxsCiAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CiAgICAgICAgbG9nZ2VyLmluZm8oJ0NyZWF0aW5nIHRhciBhcmNoaXZlJykKCiAgICB1aWQgPSBfZ2V0X3VpZChvd25lcikKICAgIGdpZCA9IF9nZXRfZ2lkKGdyb3VwKQoKICAgIGRlZiBfc2V0X3VpZF9naWQodGFyaW5mbyk6CiAgICAgICAgaWYgZ2lkIGlzIG5vdCBOb25lOgogICAgICAgICAgICB0YXJpbmZvLmdpZCA9IGdpZAogICAgICAgICAgICB0YXJpbmZvLmduYW1lID0gZ3JvdXAKICAgICAgICBpZiB1aWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHRhcmluZm8udWlkID0gdWlkCiAgICAgICAgICAgIHRhcmluZm8udW5hbWUgPSBvd25lcgogICAgICAgIHJldHVybiB0YXJpbmZvCgogICAgaWYgbm90IGRyeV9ydW46CiAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKGFyY2hpdmVfbmFtZSwgJ3d8JXMnICUgdGFyX2NvbXByZXNzaW9uKQogICAgICAgIGFyY25hbWUgPSBiYXNlX2RpcgogICAgICAgIGlmIHJvb3RfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBiYXNlX2RpciA9IG9zLnBhdGguam9pbihyb290X2RpciwgYmFzZV9kaXIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0YXIuYWRkKGJhc2VfZGlyLCBhcmNuYW1lLCBmaWx0ZXI9X3NldF91aWRfZ2lkKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHRhci5jbG9zZSgpCgogICAgaWYgcm9vdF9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgYXJjaGl2ZV9uYW1lID0gb3MucGF0aC5hYnNwYXRoKGFyY2hpdmVfbmFtZSkKICAgIHJldHVybiBhcmNoaXZlX25hbWUKCmRlZiBfbWFrZV96aXBmaWxlKGJhc2VfbmFtZSwgYmFzZV9kaXIsIHZlcmJvc2U9MCwgZHJ5X3J1bj0wLAogICAgICAgICAgICAgICAgICBsb2dnZXI9Tm9uZSwgb3duZXI9Tm9uZSwgZ3JvdXA9Tm9uZSwgcm9vdF9kaXI9Tm9uZSk6CiAgICAiIiJDcmVhdGUgYSB6aXAgZmlsZSBmcm9tIGFsbCB0aGUgZmlsZXMgdW5kZXIgJ2Jhc2VfZGlyJy4KCiAgICBUaGUgb3V0cHV0IHppcCBmaWxlIHdpbGwgYmUgbmFtZWQgJ2Jhc2VfbmFtZScgKyAiLnppcCIuICBSZXR1cm5zIHRoZQogICAgbmFtZSBvZiB0aGUgb3V0cHV0IHppcCBmaWxlLgogICAgIiIiCiAgICBpbXBvcnQgemlwZmlsZSAgIyBsYXRlIGltcG9ydCBmb3IgYnJlYWtpbmcgY2lyY3VsYXIgZGVwZW5kZW5jeQoKICAgIHppcF9maWxlbmFtZSA9IGJhc2VfbmFtZSArICIuemlwIgogICAgYXJjaGl2ZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoYmFzZV9uYW1lKQoKICAgIGlmIGFyY2hpdmVfZGlyIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoYXJjaGl2ZV9kaXIpOgogICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgbG9nZ2VyLmluZm8oImNyZWF0aW5nICVzIiwgYXJjaGl2ZV9kaXIpCiAgICAgICAgaWYgbm90IGRyeV9ydW46CiAgICAgICAgICAgIG9zLm1ha2VkaXJzKGFyY2hpdmVfZGlyKQoKICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKICAgICAgICBsb2dnZXIuaW5mbygiY3JlYXRpbmcgJyVzJyBhbmQgYWRkaW5nICclcycgdG8gaXQiLAogICAgICAgICAgICAgICAgICAgIHppcF9maWxlbmFtZSwgYmFzZV9kaXIpCgogICAgaWYgbm90IGRyeV9ydW46CiAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoemlwX2ZpbGVuYW1lLCAidyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb249emlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHpmOgogICAgICAgICAgICBhcmNuYW1lID0gb3MucGF0aC5ub3JtcGF0aChiYXNlX2RpcikKICAgICAgICAgICAgaWYgcm9vdF9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBiYXNlX2RpciA9IG9zLnBhdGguam9pbihyb290X2RpciwgYmFzZV9kaXIpCiAgICAgICAgICAgIGJhc2VfZGlyID0gb3MucGF0aC5ub3JtcGF0aChiYXNlX2RpcikKICAgICAgICAgICAgaWYgYXJjbmFtZSAhPSBvcy5jdXJkaXI6CiAgICAgICAgICAgICAgICB6Zi53cml0ZShiYXNlX2RpciwgYXJjbmFtZSkKICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBiYXNlX2RpcikKICAgICAgICAgICAgZm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhiYXNlX2Rpcik6CiAgICAgICAgICAgICAgICBhcmNkaXJwYXRoID0gZGlycGF0aAogICAgICAgICAgICAgICAgaWYgcm9vdF9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgYXJjZGlycGF0aCA9IG9zLnBhdGgucmVscGF0aChhcmNkaXJwYXRoLCByb290X2RpcikKICAgICAgICAgICAgICAgIGFyY2RpcnBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGFyY2RpcnBhdGgpCiAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZGlybmFtZXMpOgogICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkKICAgICAgICAgICAgICAgICAgICBhcmNuYW1lID0gb3MucGF0aC5qb2luKGFyY2RpcnBhdGgsIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgemYud3JpdGUocGF0aCwgYXJjbmFtZSkKICAgICAgICAgICAgICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJhZGRpbmcgJyVzJyIsIHBhdGgpCiAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlbmFtZXM6CiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJwYXRoLCBuYW1lKQogICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKHBhdGgpCiAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgIGFyY25hbWUgPSBvcy5wYXRoLmpvaW4oYXJjZGlycGF0aCwgbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgemYud3JpdGUocGF0aCwgYXJjbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKCiAgICBpZiByb290X2RpciBpcyBub3QgTm9uZToKICAgICAgICB6aXBfZmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoemlwX2ZpbGVuYW1lKQogICAgcmV0dXJuIHppcF9maWxlbmFtZQoKIyBNYXBzIHRoZSBuYW1lIG9mIHRoZSBhcmNoaXZlIGZvcm1hdCB0byBhIHR1cGxlIGNvbnRhaW5pbmc6CiMgKiB0aGUgYXJjaGl2aW5nIGZ1bmN0aW9uCiMgKiBleHRyYSBrZXl3b3JkIGFyZ3VtZW50cwojICogZGVzY3JpcHRpb24KIyAqIGRvZXMgaXQgc3VwcG9ydCB0aGUgcm9vdF9kaXIgYXJndW1lbnQ/Cl9BUkNISVZFX0ZPUk1BVFMgPSB7CiAgICAndGFyJzogICAoX21ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCBOb25lKV0sCiAgICAgICAgICAgICAgInVuY29tcHJlc3NlZCB0YXIgZmlsZSIsIFRydWUpLAp9CgppZiBfWkxJQl9TVVBQT1JURUQ6CiAgICBfQVJDSElWRV9GT1JNQVRTWydnenRhciddID0gKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2d6aXAnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImd6aXAnZWQgdGFyLWZpbGUiLCBUcnVlKQogICAgX0FSQ0hJVkVfRk9STUFUU1snemlwJ10gPSAoX21ha2VfemlwZmlsZSwgW10sICJaSVAgZmlsZSIsIFRydWUpCgppZiBfQloyX1NVUFBPUlRFRDoKICAgIF9BUkNISVZFX0ZPUk1BVFNbJ2J6dGFyJ10gPSAoX21ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAnYnppcDInKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ6aXAyJ2VkIHRhci1maWxlIiwgVHJ1ZSkKCmlmIF9MWk1BX1NVUFBPUlRFRDoKICAgIF9BUkNISVZFX0ZPUk1BVFNbJ3h6dGFyJ10gPSAoX21ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAneHonKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInh6J2VkIHRhci1maWxlIiwgVHJ1ZSkKCmRlZiBnZXRfYXJjaGl2ZV9mb3JtYXRzKCk6CiAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cyBmb3IgYXJjaGl2aW5nIGFuZCB1bmFyY2hpdmluZy4KCiAgICBFYWNoIGVsZW1lbnQgb2YgdGhlIHJldHVybmVkIHNlcXVlbmNlIGlzIGEgdHVwbGUgKG5hbWUsIGRlc2NyaXB0aW9uKQogICAgIiIiCiAgICBmb3JtYXRzID0gWyhuYW1lLCByZWdpc3RyeVsyXSkgZm9yIG5hbWUsIHJlZ2lzdHJ5IGluCiAgICAgICAgICAgICAgIF9BUkNISVZFX0ZPUk1BVFMuaXRlbXMoKV0KICAgIGZvcm1hdHMuc29ydCgpCiAgICByZXR1cm4gZm9ybWF0cwoKZGVmIHJlZ2lzdGVyX2FyY2hpdmVfZm9ybWF0KG5hbWUsIGZ1bmN0aW9uLCBleHRyYV9hcmdzPU5vbmUsIGRlc2NyaXB0aW9uPScnKToKICAgICIiIlJlZ2lzdGVycyBhbiBhcmNoaXZlIGZvcm1hdC4KCiAgICBuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtYXQuIGZ1bmN0aW9uIGlzIHRoZSBjYWxsYWJsZSB0aGF0IHdpbGwgYmUKICAgIHVzZWQgdG8gY3JlYXRlIGFyY2hpdmVzLiBJZiBwcm92aWRlZCwgZXh0cmFfYXJncyBpcyBhIHNlcXVlbmNlIG9mCiAgICAobmFtZSwgdmFsdWUpIHR1cGxlcyB0aGF0IHdpbGwgYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byB0aGUgY2FsbGFibGUuCiAgICBkZXNjcmlwdGlvbiBjYW4gYmUgcHJvdmlkZWQgdG8gZGVzY3JpYmUgdGhlIGZvcm1hdCwgYW5kIHdpbGwgYmUgcmV0dXJuZWQKICAgIGJ5IHRoZSBnZXRfYXJjaGl2ZV9mb3JtYXRzKCkgZnVuY3Rpb24uCiAgICAiIiIKICAgIGlmIGV4dHJhX2FyZ3MgaXMgTm9uZToKICAgICAgICBleHRyYV9hcmdzID0gW10KICAgIGlmIG5vdCBjYWxsYWJsZShmdW5jdGlvbik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUaGUgJXMgb2JqZWN0IGlzIG5vdCBjYWxsYWJsZScgJSBmdW5jdGlvbikKICAgIGlmIG5vdCBpc2luc3RhbmNlKGV4dHJhX2FyZ3MsICh0dXBsZSwgbGlzdCkpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBuZWVkcyB0byBiZSBhIHNlcXVlbmNlJykKICAgIGZvciBlbGVtZW50IGluIGV4dHJhX2FyZ3M6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZWxlbWVudCwgKHR1cGxlLCBsaXN0KSkgb3IgbGVuKGVsZW1lbnQpICE9MjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHRyYV9hcmdzIGVsZW1lbnRzIGFyZSA6IChhcmdfbmFtZSwgdmFsdWUpJykKCiAgICBfQVJDSElWRV9GT1JNQVRTW25hbWVdID0gKGZ1bmN0aW9uLCBleHRyYV9hcmdzLCBkZXNjcmlwdGlvbiwgRmFsc2UpCgpkZWYgdW5yZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdChuYW1lKToKICAgIGRlbCBfQVJDSElWRV9GT1JNQVRTW25hbWVdCgpkZWYgbWFrZV9hcmNoaXZlKGJhc2VfbmFtZSwgZm9ybWF0LCByb290X2Rpcj1Ob25lLCBiYXNlX2Rpcj1Ob25lLCB2ZXJib3NlPTAsCiAgICAgICAgICAgICAgICAgZHJ5X3J1bj0wLCBvd25lcj1Ob25lLCBncm91cD1Ob25lLCBsb2dnZXI9Tm9uZSk6CiAgICAiIiJDcmVhdGUgYW4gYXJjaGl2ZSBmaWxlIChlZy4gemlwIG9yIHRhcikuCgogICAgJ2Jhc2VfbmFtZScgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY3JlYXRlLCBtaW51cyBhbnkgZm9ybWF0LXNwZWNpZmljCiAgICBleHRlbnNpb247ICdmb3JtYXQnIGlzIHRoZSBhcmNoaXZlIGZvcm1hdDogb25lIG9mICJ6aXAiLCAidGFyIiwgImd6dGFyIiwKICAgICJienRhciIsIG9yICJ4enRhciIuICBPciBhbnkgb3RoZXIgcmVnaXN0ZXJlZCBmb3JtYXQuCgogICAgJ3Jvb3RfZGlyJyBpcyBhIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZQogICAgYXJjaGl2ZTsgaWUuIHdlIHR5cGljYWxseSBjaGRpciBpbnRvICdyb290X2RpcicgYmVmb3JlIGNyZWF0aW5nIHRoZQogICAgYXJjaGl2ZS4gICdiYXNlX2RpcicgaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSB3ZSBzdGFydCBhcmNoaXZpbmcgZnJvbTsKICAgIGllLiAnYmFzZV9kaXInIHdpbGwgYmUgdGhlIGNvbW1vbiBwcmVmaXggb2YgYWxsIGZpbGVzIGFuZAogICAgZGlyZWN0b3JpZXMgaW4gdGhlIGFyY2hpdmUuICAncm9vdF9kaXInIGFuZCAnYmFzZV9kaXInIGJvdGggZGVmYXVsdAogICAgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgYXJjaGl2ZSBmaWxlLgoKICAgICdvd25lcicgYW5kICdncm91cCcgYXJlIHVzZWQgd2hlbiBjcmVhdGluZyBhIHRhciBhcmNoaXZlLiBCeSBkZWZhdWx0LAogICAgdXNlcyB0aGUgY3VycmVudCBvd25lciBhbmQgZ3JvdXAuCiAgICAiIiIKICAgIHN5cy5hdWRpdCgic2h1dGlsLm1ha2VfYXJjaGl2ZSIsIGJhc2VfbmFtZSwgZm9ybWF0LCByb290X2RpciwgYmFzZV9kaXIpCiAgICB0cnk6CiAgICAgICAgZm9ybWF0X2luZm8gPSBfQVJDSElWRV9GT1JNQVRTW2Zvcm1hdF0KICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGFyY2hpdmUgZm9ybWF0ICclcyciICUgZm9ybWF0KSBmcm9tIE5vbmUKCiAgICBrd2FyZ3MgPSB7J2RyeV9ydW4nOiBkcnlfcnVuLCAnbG9nZ2VyJzogbG9nZ2VyLAogICAgICAgICAgICAgICdvd25lcic6IG93bmVyLCAnZ3JvdXAnOiBncm91cH0KCiAgICBmdW5jID0gZm9ybWF0X2luZm9bMF0KICAgIGZvciBhcmcsIHZhbCBpbiBmb3JtYXRfaW5mb1sxXToKICAgICAgICBrd2FyZ3NbYXJnXSA9IHZhbAoKICAgIGlmIGJhc2VfZGlyIGlzIE5vbmU6CiAgICAgICAgYmFzZV9kaXIgPSBvcy5jdXJkaXIKCiAgICBzdXBwb3J0X3Jvb3RfZGlyID0gZm9ybWF0X2luZm9bM10KICAgIHNhdmVfY3dkID0gTm9uZQogICAgaWYgcm9vdF9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgc3VwcG9ydF9yb290X2RpcjoKICAgICAgICAgICAgIyBTdXBwb3J0IHBhdGgtbGlrZSBiYXNlX25hbWUgaGVyZSBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkuCiAgICAgICAgICAgIGJhc2VfbmFtZSA9IG9zLmZzcGF0aChiYXNlX25hbWUpCiAgICAgICAgICAgIGt3YXJnc1sncm9vdF9kaXInXSA9IHJvb3RfZGlyCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2F2ZV9jd2QgPSBvcy5nZXRjd2QoKQogICAgICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImNoYW5naW5nIGludG8gJyVzJyIsIHJvb3RfZGlyKQogICAgICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmFic3BhdGgoYmFzZV9uYW1lKQogICAgICAgICAgICBpZiBub3QgZHJ5X3J1bjoKICAgICAgICAgICAgICAgIG9zLmNoZGlyKHJvb3RfZGlyKQoKICAgIHRyeToKICAgICAgICBmaWxlbmFtZSA9IGZ1bmMoYmFzZV9uYW1lLCBiYXNlX2RpciwgKiprd2FyZ3MpCiAgICBmaW5hbGx5OgogICAgICAgIGlmIHNhdmVfY3dkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImNoYW5naW5nIGJhY2sgdG8gJyVzJyIsIHNhdmVfY3dkKQogICAgICAgICAgICBvcy5jaGRpcihzYXZlX2N3ZCkKCiAgICByZXR1cm4gZmlsZW5hbWUKCgpkZWYgZ2V0X3VucGFja19mb3JtYXRzKCk6CiAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cyBmb3IgdW5wYWNraW5nLgoKICAgIEVhY2ggZWxlbWVudCBvZiB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgaXMgYSB0dXBsZQogICAgKG5hbWUsIGV4dGVuc2lvbnMsIGRlc2NyaXB0aW9uKQogICAgIiIiCiAgICBmb3JtYXRzID0gWyhuYW1lLCBpbmZvWzBdLCBpbmZvWzNdKSBmb3IgbmFtZSwgaW5mbyBpbgogICAgICAgICAgICAgICBfVU5QQUNLX0ZPUk1BVFMuaXRlbXMoKV0KICAgIGZvcm1hdHMuc29ydCgpCiAgICByZXR1cm4gZm9ybWF0cwoKZGVmIF9jaGVja191bnBhY2tfb3B0aW9ucyhleHRlbnNpb25zLCBmdW5jdGlvbiwgZXh0cmFfYXJncyk6CiAgICAiIiJDaGVja3Mgd2hhdCBnZXRzIHJlZ2lzdGVyZWQgYXMgYW4gdW5wYWNrZXIuIiIiCiAgICAjIGZpcnN0IG1ha2Ugc3VyZSBubyBvdGhlciB1bnBhY2tlciBpcyByZWdpc3RlcmVkIGZvciB0aGlzIGV4dGVuc2lvbgogICAgZXhpc3RpbmdfZXh0ZW5zaW9ucyA9IHt9CiAgICBmb3IgbmFtZSwgaW5mbyBpbiBfVU5QQUNLX0ZPUk1BVFMuaXRlbXMoKToKICAgICAgICBmb3IgZXh0IGluIGluZm9bMF06CiAgICAgICAgICAgIGV4aXN0aW5nX2V4dGVuc2lvbnNbZXh0XSA9IG5hbWUKCiAgICBmb3IgZXh0ZW5zaW9uIGluIGV4dGVuc2lvbnM6CiAgICAgICAgaWYgZXh0ZW5zaW9uIGluIGV4aXN0aW5nX2V4dGVuc2lvbnM6CiAgICAgICAgICAgIG1zZyA9ICclcyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yICIlcyInCiAgICAgICAgICAgIHJhaXNlIFJlZ2lzdHJ5RXJyb3IobXNnICUgKGV4dGVuc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdfZXh0ZW5zaW9uc1tleHRlbnNpb25dKSkKCiAgICBpZiBub3QgY2FsbGFibGUoZnVuY3Rpb24pOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignVGhlIHJlZ2lzdGVyZWQgZnVuY3Rpb24gbXVzdCBiZSBhIGNhbGxhYmxlJykKCgpkZWYgcmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdChuYW1lLCBleHRlbnNpb25zLCBmdW5jdGlvbiwgZXh0cmFfYXJncz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nJyk6CiAgICAiIiJSZWdpc3RlcnMgYW4gdW5wYWNrIGZvcm1hdC4KCiAgICBgbmFtZWAgaXMgdGhlIG5hbWUgb2YgdGhlIGZvcm1hdC4gYGV4dGVuc2lvbnNgIGlzIGEgbGlzdCBvZiBleHRlbnNpb25zCiAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBmb3JtYXQuCgogICAgYGZ1bmN0aW9uYCBpcyB0aGUgY2FsbGFibGUgdGhhdCB3aWxsIGJlCiAgICB1c2VkIHRvIHVucGFjayBhcmNoaXZlcy4gVGhlIGNhbGxhYmxlIHdpbGwgcmVjZWl2ZSBhcmNoaXZlcyB0byB1bnBhY2suCiAgICBJZiBpdCdzIHVuYWJsZSB0byBoYW5kbGUgYW4gYXJjaGl2ZSwgaXQgbmVlZHMgdG8gcmFpc2UgYSBSZWFkRXJyb3IKICAgIGV4Y2VwdGlvbi4KCiAgICBJZiBwcm92aWRlZCwgYGV4dHJhX2FyZ3NgIGlzIGEgc2VxdWVuY2Ugb2YKICAgIChuYW1lLCB2YWx1ZSkgdHVwbGVzIHRoYXQgd2lsbCBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIHRoZSBjYWxsYWJsZS4KICAgIGRlc2NyaXB0aW9uIGNhbiBiZSBwcm92aWRlZCB0byBkZXNjcmliZSB0aGUgZm9ybWF0LCBhbmQgd2lsbCBiZSByZXR1cm5lZAogICAgYnkgdGhlIGdldF91bnBhY2tfZm9ybWF0cygpIGZ1bmN0aW9uLgogICAgIiIiCiAgICBpZiBleHRyYV9hcmdzIGlzIE5vbmU6CiAgICAgICAgZXh0cmFfYXJncyA9IFtdCiAgICBfY2hlY2tfdW5wYWNrX29wdGlvbnMoZXh0ZW5zaW9ucywgZnVuY3Rpb24sIGV4dHJhX2FyZ3MpCiAgICBfVU5QQUNLX0ZPUk1BVFNbbmFtZV0gPSBleHRlbnNpb25zLCBmdW5jdGlvbiwgZXh0cmFfYXJncywgZGVzY3JpcHRpb24KCmRlZiB1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQobmFtZSk6CiAgICAiIiJSZW1vdmVzIHRoZSBwYWNrIGZvcm1hdCBmcm9tIHRoZSByZWdpc3RyeS4iIiIKICAgIGRlbCBfVU5QQUNLX0ZPUk1BVFNbbmFtZV0KCmRlZiBfZW5zdXJlX2RpcmVjdG9yeShwYXRoKToKICAgICIiIkVuc3VyZSB0aGF0IHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIGBwYXRoYCBleGlzdHMiIiIKICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUocGF0aCkKICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcm5hbWUpOgogICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCgpkZWYgX3VucGFja196aXBmaWxlKGZpbGVuYW1lLCBleHRyYWN0X2Rpcik6CiAgICAiIiJVbnBhY2sgemlwIGBmaWxlbmFtZWAgdG8gYGV4dHJhY3RfZGlyYAogICAgIiIiCiAgICBpbXBvcnQgemlwZmlsZSAgIyBsYXRlIGltcG9ydCBmb3IgYnJlYWtpbmcgY2lyY3VsYXIgZGVwZW5kZW5jeQoKICAgIGlmIG5vdCB6aXBmaWxlLmlzX3ppcGZpbGUoZmlsZW5hbWUpOgogICAgICAgIHJhaXNlIFJlYWRFcnJvcigiJXMgaXMgbm90IGEgemlwIGZpbGUiICUgZmlsZW5hbWUpCgogICAgemlwID0gemlwZmlsZS5aaXBGaWxlKGZpbGVuYW1lKQogICAgdHJ5OgogICAgICAgIGZvciBpbmZvIGluIHppcC5pbmZvbGlzdCgpOgogICAgICAgICAgICBuYW1lID0gaW5mby5maWxlbmFtZQoKICAgICAgICAgICAgIyBkb24ndCBleHRyYWN0IGFic29sdXRlIHBhdGhzIG9yIG9uZXMgd2l0aCAuLiBpbiB0aGVtCiAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnLycpIG9yICcuLicgaW4gbmFtZToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICB0YXJnZXRwYXRoID0gb3MucGF0aC5qb2luKGV4dHJhY3RfZGlyLCAqbmFtZS5zcGxpdCgnLycpKQogICAgICAgICAgICBpZiBub3QgdGFyZ2V0cGF0aDoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBfZW5zdXJlX2RpcmVjdG9yeSh0YXJnZXRwYXRoKQogICAgICAgICAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgnLycpOgogICAgICAgICAgICAgICAgIyBmaWxlCiAgICAgICAgICAgICAgICB3aXRoIHppcC5vcGVuKG5hbWUsICdyJykgYXMgc291cmNlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW4odGFyZ2V0cGF0aCwgJ3diJykgYXMgdGFyZ2V0OgogICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0KQogICAgZmluYWxseToKICAgICAgICB6aXAuY2xvc2UoKQoKZGVmIF91bnBhY2tfdGFyZmlsZShmaWxlbmFtZSwgZXh0cmFjdF9kaXIpOgogICAgIiIiVW5wYWNrIHRhci90YXIuZ3ovdGFyLmJ6Mi90YXIueHogYGZpbGVuYW1lYCB0byBgZXh0cmFjdF9kaXJgCiAgICAiIiIKICAgIGltcG9ydCB0YXJmaWxlICAjIGxhdGUgaW1wb3J0IGZvciBicmVha2luZyBjaXJjdWxhciBkZXBlbmRlbmN5CiAgICB0cnk6CiAgICAgICAgdGFyb2JqID0gdGFyZmlsZS5vcGVuKGZpbGVuYW1lKQogICAgZXhjZXB0IHRhcmZpbGUuVGFyRXJyb3I6CiAgICAgICAgcmFpc2UgUmVhZEVycm9yKAogICAgICAgICAgICAiJXMgaXMgbm90IGEgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWQgdGFyIGZpbGUiICUgZmlsZW5hbWUpCiAgICB0cnk6CiAgICAgICAgdGFyb2JqLmV4dHJhY3RhbGwoZXh0cmFjdF9kaXIpCiAgICBmaW5hbGx5OgogICAgICAgIHRhcm9iai5jbG9zZSgpCgojIE1hcHMgdGhlIG5hbWUgb2YgdGhlIHVucGFjayBmb3JtYXQgdG8gYSB0dXBsZSBjb250YWluaW5nOgojICogZXh0ZW5zaW9ucwojICogdGhlIHVucGFja2luZyBmdW5jdGlvbgojICogZXh0cmEga2V5d29yZCBhcmd1bWVudHMKIyAqIGRlc2NyaXB0aW9uCl9VTlBBQ0tfRk9STUFUUyA9IHsKICAgICd0YXInOiAgIChbJy50YXInXSwgX3VucGFja190YXJmaWxlLCBbXSwgInVuY29tcHJlc3NlZCB0YXIgZmlsZSIpLAogICAgJ3ppcCc6ICAgKFsnLnppcCddLCBfdW5wYWNrX3ppcGZpbGUsIFtdLCAiWklQIGZpbGUiKSwKfQoKaWYgX1pMSUJfU1VQUE9SVEVEOgogICAgX1VOUEFDS19GT1JNQVRTWydnenRhciddID0gKFsnLnRhci5neicsICcudGd6J10sIF91bnBhY2tfdGFyZmlsZSwgW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImd6aXAnZWQgdGFyLWZpbGUiKQoKaWYgX0JaMl9TVVBQT1JURUQ6CiAgICBfVU5QQUNLX0ZPUk1BVFNbJ2J6dGFyJ10gPSAoWycudGFyLmJ6MicsICcudGJ6MiddLCBfdW5wYWNrX3RhcmZpbGUsIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiemlwMidlZCB0YXItZmlsZSIpCgppZiBfTFpNQV9TVVBQT1JURUQ6CiAgICBfVU5QQUNLX0ZPUk1BVFNbJ3h6dGFyJ10gPSAoWycudGFyLnh6JywgJy50eHonXSwgX3VucGFja190YXJmaWxlLCBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieHonZWQgdGFyLWZpbGUiKQoKZGVmIF9maW5kX3VucGFja19mb3JtYXQoZmlsZW5hbWUpOgogICAgZm9yIG5hbWUsIGluZm8gaW4gX1VOUEFDS19GT1JNQVRTLml0ZW1zKCk6CiAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBpbmZvWzBdOgogICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aChleHRlbnNpb24pOgogICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKICAgIHJldHVybiBOb25lCgpkZWYgdW5wYWNrX2FyY2hpdmUoZmlsZW5hbWUsIGV4dHJhY3RfZGlyPU5vbmUsIGZvcm1hdD1Ob25lKToKICAgICIiIlVucGFjayBhbiBhcmNoaXZlLgoKICAgIGBmaWxlbmFtZWAgaXMgdGhlIG5hbWUgb2YgdGhlIGFyY2hpdmUuCgogICAgYGV4dHJhY3RfZGlyYCBpcyB0aGUgbmFtZSBvZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSwgd2hlcmUgdGhlIGFyY2hpdmUKICAgIGlzIHVucGFja2VkLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlzIHVzZWQuCgogICAgYGZvcm1hdGAgaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgInppcCIsICJ0YXIiLCAiZ3p0YXIiLCAiYnp0YXIiLAogICAgb3IgInh6dGFyIi4gIE9yIGFueSBvdGhlciByZWdpc3RlcmVkIGZvcm1hdC4gIElmIG5vdCBwcm92aWRlZCwKICAgIHVucGFja19hcmNoaXZlIHdpbGwgdXNlIHRoZSBmaWxlbmFtZSBleHRlbnNpb24gYW5kIHNlZSBpZiBhbiB1bnBhY2tlcgogICAgd2FzIHJlZ2lzdGVyZWQgZm9yIHRoYXQgZXh0ZW5zaW9uLgoKICAgIEluIGNhc2Ugbm9uZSBpcyBmb3VuZCwgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4KICAgICIiIgogICAgc3lzLmF1ZGl0KCJzaHV0aWwudW5wYWNrX2FyY2hpdmUiLCBmaWxlbmFtZSwgZXh0cmFjdF9kaXIsIGZvcm1hdCkKCiAgICBpZiBleHRyYWN0X2RpciBpcyBOb25lOgogICAgICAgIGV4dHJhY3RfZGlyID0gb3MuZ2V0Y3dkKCkKCiAgICBleHRyYWN0X2RpciA9IG9zLmZzcGF0aChleHRyYWN0X2RpcikKICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQoKICAgIGlmIGZvcm1hdCBpcyBub3QgTm9uZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZvcm1hdF9pbmZvID0gX1VOUEFDS19GT1JNQVRTW2Zvcm1hdF0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gdW5wYWNrIGZvcm1hdCAnezB9JyIuZm9ybWF0KGZvcm1hdCkpIGZyb20gTm9uZQoKICAgICAgICBmdW5jID0gZm9ybWF0X2luZm9bMV0KICAgICAgICBmdW5jKGZpbGVuYW1lLCBleHRyYWN0X2RpciwgKipkaWN0KGZvcm1hdF9pbmZvWzJdKSkKICAgIGVsc2U6CiAgICAgICAgIyB3ZSBuZWVkIHRvIGxvb2sgYXQgdGhlIHJlZ2lzdGVyZWQgdW5wYWNrZXJzIHN1cHBvcnRlZCBleHRlbnNpb25zCiAgICAgICAgZm9ybWF0ID0gX2ZpbmRfdW5wYWNrX2Zvcm1hdChmaWxlbmFtZSkKICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKCJVbmtub3duIGFyY2hpdmUgZm9ybWF0ICd7MH0nIi5mb3JtYXQoZmlsZW5hbWUpKQoKICAgICAgICBmdW5jID0gX1VOUEFDS19GT1JNQVRTW2Zvcm1hdF1bMV0KICAgICAgICBrd2FyZ3MgPSBkaWN0KF9VTlBBQ0tfRk9STUFUU1tmb3JtYXRdWzJdKQogICAgICAgIGZ1bmMoZmlsZW5hbWUsIGV4dHJhY3RfZGlyLCAqKmt3YXJncykKCgppZiBoYXNhdHRyKG9zLCAnc3RhdHZmcycpOgoKICAgIF9fYWxsX18uYXBwZW5kKCdkaXNrX3VzYWdlJykKICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKICAgIF9udHVwbGVfZGlza3VzYWdlLnRvdGFsLl9fZG9jX18gPSAnVG90YWwgc3BhY2UgaW4gYnl0ZXMnCiAgICBfbnR1cGxlX2Rpc2t1c2FnZS51c2VkLl9fZG9jX18gPSAnVXNlZCBzcGFjZSBpbiBieXRlcycKICAgIF9udHVwbGVfZGlza3VzYWdlLmZyZWUuX19kb2NfXyA9ICdGcmVlIHNwYWNlIGluIGJ5dGVzJwoKICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgogICAgICAgICIiIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGguCgogICAgICAgIFJldHVybmVkIHZhbHVlIGlzIGEgbmFtZWQgdHVwbGUgd2l0aCBhdHRyaWJ1dGVzICd0b3RhbCcsICd1c2VkJyBhbmQKICAgICAgICAnZnJlZScsIHdoaWNoIGFyZSB0aGUgYW1vdW50IG9mIHRvdGFsLCB1c2VkIGFuZCBmcmVlIHNwYWNlLCBpbiBieXRlcy4KICAgICAgICAiIiIKICAgICAgICBzdCA9IG9zLnN0YXR2ZnMocGF0aCkKICAgICAgICBmcmVlID0gc3QuZl9iYXZhaWwgKiBzdC5mX2Zyc2l6ZQogICAgICAgIHRvdGFsID0gc3QuZl9ibG9ja3MgKiBzdC5mX2Zyc2l6ZQogICAgICAgIHVzZWQgPSAoc3QuZl9ibG9ja3MgLSBzdC5mX2JmcmVlKSAqIHN0LmZfZnJzaXplCiAgICAgICAgcmV0dXJuIF9udHVwbGVfZGlza3VzYWdlKHRvdGFsLCB1c2VkLCBmcmVlKQoKZWxpZiBfV0lORE9XUzoKCiAgICBfX2FsbF9fLmFwcGVuZCgnZGlza191c2FnZScpCiAgICBfbnR1cGxlX2Rpc2t1c2FnZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ3VzYWdlJywgJ3RvdGFsIHVzZWQgZnJlZScpCgogICAgZGVmIGRpc2tfdXNhZ2UocGF0aCk6CiAgICAgICAgIiIiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aC4KCiAgICAgICAgUmV0dXJuZWQgdmFsdWVzIGlzIGEgbmFtZWQgdHVwbGUgd2l0aCBhdHRyaWJ1dGVzICd0b3RhbCcsICd1c2VkJyBhbmQKICAgICAgICAnZnJlZScsIHdoaWNoIGFyZSB0aGUgYW1vdW50IG9mIHRvdGFsLCB1c2VkIGFuZCBmcmVlIHNwYWNlLCBpbiBieXRlcy4KICAgICAgICAiIiIKICAgICAgICB0b3RhbCwgZnJlZSA9IG50Ll9nZXRkaXNrdXNhZ2UocGF0aCkKICAgICAgICB1c2VkID0gdG90YWwgLSBmcmVlCiAgICAgICAgcmV0dXJuIF9udHVwbGVfZGlza3VzYWdlKHRvdGFsLCB1c2VkLCBmcmVlKQoKCmRlZiBjaG93bihwYXRoLCB1c2VyPU5vbmUsIGdyb3VwPU5vbmUpOgogICAgIiIiQ2hhbmdlIG93bmVyIHVzZXIgYW5kIGdyb3VwIG9mIHRoZSBnaXZlbiBwYXRoLgoKICAgIHVzZXIgYW5kIGdyb3VwIGNhbiBiZSB0aGUgdWlkL2dpZCBvciB0aGUgdXNlci9ncm91cCBuYW1lcywgYW5kIGluIHRoYXQgY2FzZSwKICAgIHRoZXkgYXJlIGNvbnZlcnRlZCB0byB0aGVpciByZXNwZWN0aXZlIHVpZC9naWQuCiAgICAiIiIKICAgIHN5cy5hdWRpdCgnc2h1dGlsLmNob3duJywgcGF0aCwgdXNlciwgZ3JvdXApCgogICAgaWYgdXNlciBpcyBOb25lIGFuZCBncm91cCBpcyBOb25lOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVzZXIgYW5kL29yIGdyb3VwIG11c3QgYmUgc2V0IikKCiAgICBfdXNlciA9IHVzZXIKICAgIF9ncm91cCA9IGdyb3VwCgogICAgIyAtMSBtZWFucyBkb24ndCBjaGFuZ2UgaXQKICAgIGlmIHVzZXIgaXMgTm9uZToKICAgICAgICBfdXNlciA9IC0xCiAgICAjIHVzZXIgY2FuIGVpdGhlciBiZSBhbiBpbnQgKHRoZSB1aWQpIG9yIGEgc3RyaW5nICh0aGUgc3lzdGVtIHVzZXJuYW1lKQogICAgZWxpZiBpc2luc3RhbmNlKHVzZXIsIHN0cik6CiAgICAgICAgX3VzZXIgPSBfZ2V0X3VpZCh1c2VyKQogICAgICAgIGlmIF91c2VyIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIExvb2t1cEVycm9yKCJubyBzdWNoIHVzZXI6IHshcn0iLmZvcm1hdCh1c2VyKSkKCiAgICBpZiBncm91cCBpcyBOb25lOgogICAgICAgIF9ncm91cCA9IC0xCiAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGdyb3VwLCBpbnQpOgogICAgICAgIF9ncm91cCA9IF9nZXRfZ2lkKGdyb3VwKQogICAgICAgIGlmIF9ncm91cCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBMb29rdXBFcnJvcigibm8gc3VjaCBncm91cDogeyFyfSIuZm9ybWF0KGdyb3VwKSkKCiAgICBvcy5jaG93bihwYXRoLCBfdXNlciwgX2dyb3VwKQoKZGVmIGdldF90ZXJtaW5hbF9zaXplKGZhbGxiYWNrPSg4MCwgMjQpKToKICAgICIiIkdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgoKICAgIEZvciBlYWNoIG9mIHRoZSB0d28gZGltZW5zaW9ucywgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLCBDT0xVTU5TCiAgICBhbmQgTElORVMgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKICAgIHRoZSB2YWx1ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGl0IGlzIHVzZWQuCgogICAgV2hlbiBDT0xVTU5TIG9yIExJTkVTIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCiAgICB0aGUgdGVybWluYWwgY29ubmVjdGVkIHRvIHN5cy5fX3N0ZG91dF9fIGlzIHF1ZXJpZWQKICAgIGJ5IGludm9raW5nIG9zLmdldF90ZXJtaW5hbF9zaXplLgoKICAgIElmIHRoZSB0ZXJtaW5hbCBzaXplIGNhbm5vdCBiZSBzdWNjZXNzZnVsbHkgcXVlcmllZCwgZWl0aGVyIGJlY2F1c2UKICAgIHRoZSBzeXN0ZW0gZG9lc24ndCBzdXBwb3J0IHF1ZXJ5aW5nLCBvciBiZWNhdXNlIHdlIGFyZSBub3QKICAgIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCB0aGUgdmFsdWUgZ2l2ZW4gaW4gZmFsbGJhY2sgcGFyYW1ldGVyCiAgICBpcyB1c2VkLiBGYWxsYmFjayBkZWZhdWx0cyB0byAoODAsIDI0KSB3aGljaCBpcyB0aGUgZGVmYXVsdAogICAgc2l6ZSB1c2VkIGJ5IG1hbnkgdGVybWluYWwgZW11bGF0b3JzLgoKICAgIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIG5hbWVkIHR1cGxlIG9mIHR5cGUgb3MudGVybWluYWxfc2l6ZS4KICAgICIiIgogICAgIyBjb2x1bW5zLCBsaW5lcyBhcmUgdGhlIHdvcmtpbmcgdmFsdWVzCiAgICB0cnk6CiAgICAgICAgY29sdW1ucyA9IGludChvcy5lbnZpcm9uWydDT0xVTU5TJ10pCiAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICBjb2x1bW5zID0gMAoKICAgIHRyeToKICAgICAgICBsaW5lcyA9IGludChvcy5lbnZpcm9uWydMSU5FUyddKQogICAgZXhjZXB0IChLZXlFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgbGluZXMgPSAwCgogICAgIyBvbmx5IHF1ZXJ5IGlmIG5lY2Vzc2FyeQogICAgaWYgY29sdW1ucyA8PSAwIG9yIGxpbmVzIDw9IDA6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzaXplID0gb3MuZ2V0X3Rlcm1pbmFsX3NpemUoc3lzLl9fc3Rkb3V0X18uZmlsZW5vKCkpCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgICAgICMgc3Rkb3V0IGlzIE5vbmUsIGNsb3NlZCwgZGV0YWNoZWQsIG9yIG5vdCBhIHRlcm1pbmFsLCBvcgogICAgICAgICAgICAjIG9zLmdldF90ZXJtaW5hbF9zaXplKCkgaXMgdW5zdXBwb3J0ZWQKICAgICAgICAgICAgc2l6ZSA9IG9zLnRlcm1pbmFsX3NpemUoZmFsbGJhY2spCiAgICAgICAgaWYgY29sdW1ucyA8PSAwOgogICAgICAgICAgICBjb2x1bW5zID0gc2l6ZS5jb2x1bW5zIG9yIGZhbGxiYWNrWzBdCiAgICAgICAgaWYgbGluZXMgPD0gMDoKICAgICAgICAgICAgbGluZXMgPSBzaXplLmxpbmVzIG9yIGZhbGxiYWNrWzFdCgogICAgcmV0dXJuIG9zLnRlcm1pbmFsX3NpemUoKGNvbHVtbnMsIGxpbmVzKSkKCgojIENoZWNrIHRoYXQgYSBnaXZlbiBmaWxlIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBjb3JyZWN0IG1vZGUuCiMgQWRkaXRpb25hbGx5IGNoZWNrIHRoYXQgYGZpbGVgIGlzIG5vdCBhIGRpcmVjdG9yeSwgYXMgb24gV2luZG93cwojIGRpcmVjdG9yaWVzIHBhc3MgdGhlIG9zLmFjY2VzcyBjaGVjay4KZGVmIF9hY2Nlc3NfY2hlY2soZm4sIG1vZGUpOgogICAgcmV0dXJuIChvcy5wYXRoLmV4aXN0cyhmbikgYW5kIG9zLmFjY2VzcyhmbiwgbW9kZSkKICAgICAgICAgICAgYW5kIG5vdCBvcy5wYXRoLmlzZGlyKGZuKSkKCgpkZWYgd2hpY2goY21kLCBtb2RlPW9zLkZfT0sgfCBvcy5YX09LLCBwYXRoPU5vbmUpOgogICAgIiIiR2l2ZW4gYSBjb21tYW5kLCBtb2RlLCBhbmQgYSBQQVRIIHN0cmluZywgcmV0dXJuIHRoZSBwYXRoIHdoaWNoCiAgICBjb25mb3JtcyB0byB0aGUgZ2l2ZW4gbW9kZSBvbiB0aGUgUEFUSCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBzdWNoCiAgICBmaWxlLgoKICAgIGBtb2RlYCBkZWZhdWx0cyB0byBvcy5GX09LIHwgb3MuWF9PSy4gYHBhdGhgIGRlZmF1bHRzIHRvIHRoZSByZXN1bHQKICAgIG9mIG9zLmVudmlyb24uZ2V0KCJQQVRIIiksIG9yIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggYSBjdXN0b20gc2VhcmNoCiAgICBwYXRoLgoKICAgICIiIgogICAgIyBJZiB3ZSdyZSBnaXZlbiBhIHBhdGggd2l0aCBhIGRpcmVjdG9yeSBwYXJ0LCBsb29rIGl0IHVwIGRpcmVjdGx5IHJhdGhlcgogICAgIyB0aGFuIHJlZmVycmluZyB0byBQQVRIIGRpcmVjdG9yaWVzLiBUaGlzIGluY2x1ZGVzIGNoZWNraW5nIHJlbGF0aXZlIHRvIHRoZQogICAgIyBjdXJyZW50IGRpcmVjdG9yeSwgZS5nLiAuL3NjcmlwdAogICAgaWYgb3MucGF0aC5kaXJuYW1lKGNtZCk6CiAgICAgICAgaWYgX2FjY2Vzc19jaGVjayhjbWQsIG1vZGUpOgogICAgICAgICAgICByZXR1cm4gY21kCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICB1c2VfYnl0ZXMgPSBpc2luc3RhbmNlKGNtZCwgYnl0ZXMpCgogICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgIHBhdGggPSBvcy5lbnZpcm9uLmdldCgiUEFUSCIsIE5vbmUpCiAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwYXRoID0gb3MuY29uZnN0cigiQ1NfUEFUSCIpCiAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIyBvcy5jb25mc3RyKCkgb3IgQ1NfUEFUSCBpcyBub3QgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICBwYXRoID0gb3MuZGVmcGF0aAogICAgICAgICMgYnBvLTM1NzU1OiBEb24ndCB1c2Ugb3MuZGVmcGF0aCBpZiB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcwogICAgICAgICMgc2V0IHRvIGFuIGVtcHR5IHN0cmluZwoKICAgICMgUEFUSD0nJyBkb2Vzbid0IG1hdGNoLCB3aGVyZWFzIFBBVEg9JzonIGxvb2tzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQogICAgaWYgbm90IHBhdGg6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBpZiB1c2VfYnl0ZXM6CiAgICAgICAgcGF0aCA9IG9zLmZzZW5jb2RlKHBhdGgpCiAgICAgICAgcGF0aCA9IHBhdGguc3BsaXQob3MuZnNlbmNvZGUob3MucGF0aHNlcCkpCiAgICBlbHNlOgogICAgICAgIHBhdGggPSBvcy5mc2RlY29kZShwYXRoKQogICAgICAgIHBhdGggPSBwYXRoLnNwbGl0KG9zLnBhdGhzZXApCgogICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgICAgIyBUaGUgY3VycmVudCBkaXJlY3RvcnkgdGFrZXMgcHJlY2VkZW5jZSBvbiBXaW5kb3dzLgogICAgICAgIGN1cmRpciA9IG9zLmN1cmRpcgogICAgICAgIGlmIHVzZV9ieXRlczoKICAgICAgICAgICAgY3VyZGlyID0gb3MuZnNlbmNvZGUoY3VyZGlyKQogICAgICAgIGlmIGN1cmRpciBub3QgaW4gcGF0aDoKICAgICAgICAgICAgcGF0aC5pbnNlcnQoMCwgY3VyZGlyKQoKICAgICAgICAjIFBBVEhFWFQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIG9uIFdpbmRvd3MuCiAgICAgICAgcGF0aGV4dF9zb3VyY2UgPSBvcy5nZXRlbnYoIlBBVEhFWFQiKSBvciBfV0lOX0RFRkFVTFRfUEFUSEVYVAogICAgICAgIHBhdGhleHQgPSBbZXh0IGZvciBleHQgaW4gcGF0aGV4dF9zb3VyY2Uuc3BsaXQob3MucGF0aHNlcCkgaWYgZXh0XQoKICAgICAgICBpZiB1c2VfYnl0ZXM6CiAgICAgICAgICAgIHBhdGhleHQgPSBbb3MuZnNlbmNvZGUoZXh0KSBmb3IgZXh0IGluIHBhdGhleHRdCiAgICAgICAgIyBTZWUgaWYgdGhlIGdpdmVuIGZpbGUgbWF0Y2hlcyBhbnkgb2YgdGhlIGV4cGVjdGVkIHBhdGggZXh0ZW5zaW9ucy4KICAgICAgICAjIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBzaG9ydCBjaXJjdWl0IHdoZW4gZ2l2ZW4gInB5dGhvbi5leGUiLgogICAgICAgICMgSWYgaXQgZG9lcyBtYXRjaCwgb25seSB0ZXN0IHRoYXQgb25lLCBvdGhlcndpc2Ugd2UgaGF2ZSB0byB0cnkKICAgICAgICAjIG90aGVycy4KICAgICAgICBpZiBhbnkoY21kLmxvd2VyKCkuZW5kc3dpdGgoZXh0Lmxvd2VyKCkpIGZvciBleHQgaW4gcGF0aGV4dCk6CiAgICAgICAgICAgIGZpbGVzID0gW2NtZF0KICAgICAgICBlbHNlOgogICAgICAgICAgICBmaWxlcyA9IFtjbWQgKyBleHQgZm9yIGV4dCBpbiBwYXRoZXh0XQogICAgZWxzZToKICAgICAgICAjIE9uIG90aGVyIHBsYXRmb3JtcyB5b3UgZG9uJ3QgaGF2ZSB0aGluZ3MgbGlrZSBQQVRIRVhUIHRvIHRlbGwgeW91CiAgICAgICAgIyB3aGF0IGZpbGUgc3VmZml4ZXMgYXJlIGV4ZWN1dGFibGUsIHNvIGp1c3QgcGFzcyBvbiBjbWQgYXMtaXMuCiAgICAgICAgZmlsZXMgPSBbY21kXQoKICAgIHNlZW4gPSBzZXQoKQogICAgZm9yIGRpciBpbiBwYXRoOgogICAgICAgIG5vcm1kaXIgPSBvcy5wYXRoLm5vcm1jYXNlKGRpcikKICAgICAgICBpZiBub3Qgbm9ybWRpciBpbiBzZWVuOgogICAgICAgICAgICBzZWVuLmFkZChub3JtZGlyKQogICAgICAgICAgICBmb3IgdGhlZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4oZGlyLCB0aGVmaWxlKQogICAgICAgICAgICAgICAgaWYgX2FjY2Vzc19jaGVjayhuYW1lLCBtb2RlKToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQogICAgcmV0dXJuIE5vbmUKUEsDBBQAAAAAAAIgo1ZAa3UghgkAAIYJAAAJAAAAc2lnbmFsLnB5aW1wb3J0IF9zaWduYWwKZnJvbSBfc2lnbmFsIGltcG9ydCAqCmZyb20gZW51bSBpbXBvcnQgSW50RW51bSBhcyBfSW50RW51bQoKX2dsb2JhbHMgPSBnbG9iYWxzKCkKCl9JbnRFbnVtLl9jb252ZXJ0XygKICAgICAgICAnU2lnbmFscycsIF9fbmFtZV9fLAogICAgICAgIGxhbWJkYSBuYW1lOgogICAgICAgICAgICBuYW1lLmlzdXBwZXIoKQogICAgICAgICAgICBhbmQgKG5hbWUuc3RhcnRzd2l0aCgnU0lHJykgYW5kIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ1NJR18nKSkKICAgICAgICAgICAgb3IgbmFtZS5zdGFydHN3aXRoKCdDVFJMXycpKQoKX0ludEVudW0uX2NvbnZlcnRfKAogICAgICAgICdIYW5kbGVycycsIF9fbmFtZV9fLAogICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lIGluICgnU0lHX0RGTCcsICdTSUdfSUdOJykpCgppZiAncHRocmVhZF9zaWdtYXNrJyBpbiBfZ2xvYmFsczoKICAgIF9JbnRFbnVtLl9jb252ZXJ0XygKICAgICAgICAgICAgJ1NpZ21hc2tzJywgX19uYW1lX18sCiAgICAgICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lIGluICgnU0lHX0JMT0NLJywgJ1NJR19VTkJMT0NLJywgJ1NJR19TRVRNQVNLJykpCgoKZGVmIF9pbnRfdG9fZW51bSh2YWx1ZSwgZW51bV9rbGFzcyk6CiAgICAiIiJDb252ZXJ0IGEgbnVtZXJpYyB2YWx1ZSB0byBhbiBJbnRFbnVtIG1lbWJlci4KICAgIElmIGl0J3Mgbm90IGEga25vd24gbWVtYmVyLCByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUgaXRzZWxmLgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIGVudW1fa2xhc3ModmFsdWUpCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICByZXR1cm4gdmFsdWUKCgpkZWYgX2VudW1fdG9faW50KHZhbHVlKToKICAgICIiIkNvbnZlcnQgYW4gSW50RW51bSBtZW1iZXIgdG8gYSBudW1lcmljIHZhbHVlLgogICAgSWYgaXQncyBub3QgYW4gSW50RW51bSBtZW1iZXIgcmV0dXJuIHRoZSB2YWx1ZSBpdHNlbGYuCiAgICAiIiIKICAgIHRyeToKICAgICAgICByZXR1cm4gaW50KHZhbHVlKQogICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgogICAgICAgIHJldHVybiB2YWx1ZQoKCiMgU2ltaWxhciB0byBmdW5jdG9vbHMud3JhcHMoKSwgYnV0IG9ubHkgYXNzaWduIF9fZG9jX18uCiMgX19tb2R1bGVfXyBzaG91bGQgYmUgcHJlc2VydmVkLAojIF9fbmFtZV9fIGFuZCBfX3F1YWxuYW1lX18gYXJlIGFscmVhZHkgZmluZSwKIyBfX2Fubm90YXRpb25zX18gaXMgbm90IHNldC4KZGVmIF93cmFwcyh3cmFwcGVkKToKICAgIGRlZiBkZWNvcmF0b3Iod3JhcHBlcik6CiAgICAgICAgd3JhcHBlci5fX2RvY19fID0gd3JhcHBlZC5fX2RvY19fCiAgICAgICAgcmV0dXJuIHdyYXBwZXIKICAgIHJldHVybiBkZWNvcmF0b3IKCkBfd3JhcHMoX3NpZ25hbC5zaWduYWwpCmRlZiBzaWduYWwoc2lnbmFsbnVtLCBoYW5kbGVyKToKICAgIGhhbmRsZXIgPSBfc2lnbmFsLnNpZ25hbChfZW51bV90b19pbnQoc2lnbmFsbnVtKSwgX2VudW1fdG9faW50KGhhbmRsZXIpKQogICAgcmV0dXJuIF9pbnRfdG9fZW51bShoYW5kbGVyLCBIYW5kbGVycykKCgpAX3dyYXBzKF9zaWduYWwuZ2V0c2lnbmFsKQpkZWYgZ2V0c2lnbmFsKHNpZ25hbG51bSk6CiAgICBoYW5kbGVyID0gX3NpZ25hbC5nZXRzaWduYWwoc2lnbmFsbnVtKQogICAgcmV0dXJuIF9pbnRfdG9fZW51bShoYW5kbGVyLCBIYW5kbGVycykKCgppZiAncHRocmVhZF9zaWdtYXNrJyBpbiBfZ2xvYmFsczoKICAgIEBfd3JhcHMoX3NpZ25hbC5wdGhyZWFkX3NpZ21hc2spCiAgICBkZWYgcHRocmVhZF9zaWdtYXNrKGhvdywgbWFzayk6CiAgICAgICAgc2lnc19zZXQgPSBfc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spCiAgICAgICAgcmV0dXJuIHNldChfaW50X3RvX2VudW0oeCwgU2lnbmFscykgZm9yIHggaW4gc2lnc19zZXQpCgoKaWYgJ3NpZ3BlbmRpbmcnIGluIF9nbG9iYWxzOgogICAgQF93cmFwcyhfc2lnbmFsLnNpZ3BlbmRpbmcpCiAgICBkZWYgc2lncGVuZGluZygpOgogICAgICAgIHJldHVybiB7X2ludF90b19lbnVtKHgsIFNpZ25hbHMpIGZvciB4IGluIF9zaWduYWwuc2lncGVuZGluZygpfQoKCmlmICdzaWd3YWl0JyBpbiBfZ2xvYmFsczoKICAgIEBfd3JhcHMoX3NpZ25hbC5zaWd3YWl0KQogICAgZGVmIHNpZ3dhaXQoc2lnc2V0KToKICAgICAgICByZXRzaWcgPSBfc2lnbmFsLnNpZ3dhaXQoc2lnc2V0KQogICAgICAgIHJldHVybiBfaW50X3RvX2VudW0ocmV0c2lnLCBTaWduYWxzKQoKCmlmICd2YWxpZF9zaWduYWxzJyBpbiBfZ2xvYmFsczoKICAgIEBfd3JhcHMoX3NpZ25hbC52YWxpZF9zaWduYWxzKQogICAgZGVmIHZhbGlkX3NpZ25hbHMoKToKICAgICAgICByZXR1cm4ge19pbnRfdG9fZW51bSh4LCBTaWduYWxzKSBmb3IgeCBpbiBfc2lnbmFsLnZhbGlkX3NpZ25hbHMoKX0KCgpkZWwgX2dsb2JhbHMsIF93cmFwcwpQSwMEFAAAAAAAAiCjVimuAQR4WAAAeFgAAAcAAABzaXRlLnB5IiIiQXBwZW5kIG1vZHVsZSBzZWFyY2ggcGF0aHMgZm9yIHRoaXJkLXBhcnR5IHBhY2thZ2VzIHRvIHN5cy5wYXRoLgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIFRoaXMgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiAqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKClRoaXMgd2lsbCBhcHBlbmQgc2l0ZS1zcGVjaWZpYyBwYXRocyB0byB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoLiAgT24KVW5peCAoaW5jbHVkaW5nIE1hYyBPU1gpLCBpdCBzdGFydHMgd2l0aCBzeXMucHJlZml4IGFuZApzeXMuZXhlY19wcmVmaXggKGlmIGRpZmZlcmVudCkgYW5kIGFwcGVuZHMKbGliL3B5dGhvbjx2ZXJzaW9uPi9zaXRlLXBhY2thZ2VzLgpPbiBvdGhlciBwbGF0Zm9ybXMgKHN1Y2ggYXMgV2luZG93cyksIGl0IHRyaWVzIGVhY2ggb2YgdGhlCnByZWZpeGVzIGRpcmVjdGx5LCBhcyB3ZWxsIGFzIHdpdGggbGliL3NpdGUtcGFja2FnZXMgYXBwZW5kZWQuICBUaGUKcmVzdWx0aW5nIGRpcmVjdG9yaWVzLCBpZiB0aGV5IGV4aXN0LCBhcmUgYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZAphbHNvIGluc3BlY3RlZCBmb3IgcGF0aCBjb25maWd1cmF0aW9uIGZpbGVzLgoKSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4IGFyZSBzZXQgdG8gdGhhdCBkaXJlY3RvcnkgYW5kCml0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyAoc3lzLmJhc2VfcHJlZml4IGFuZApzeXMuYmFzZV9leGVjX3ByZWZpeCB3aWxsIGFsd2F5cyBiZSB0aGUgInJlYWwiIHByZWZpeGVzIG9mIHRoZSBQeXRob24KaW5zdGFsbGF0aW9uKS4gSWYgInB5dmVudi5jZmciIChhIGJvb3RzdHJhcCBjb25maWd1cmF0aW9uIGZpbGUpIGNvbnRhaW5zCnRoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKKGNhc2UtaW5zZW5zaXRpdmUpLCB0aGUgc3lzdGVtLWxldmVsIHByZWZpeGVzIHdpbGwgc3RpbGwgYWxzbyBiZQpzZWFyY2hlZCBmb3Igc2l0ZS1wYWNrYWdlczsgb3RoZXJ3aXNlIHRoZXkgd29uJ3QuCgpBbGwgb2YgdGhlIHJlc3VsdGluZyBzaXRlLXNwZWNpZmljIGRpcmVjdG9yaWVzLCBpZiB0aGV5IGV4aXN0LCBhcmUKYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZCBhbHNvIGluc3BlY3RlZCBmb3IgcGF0aCBjb25maWd1cmF0aW9uCmZpbGVzLgoKQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0KPHBhY2thZ2U+LnB0aDsgaXRzIGNvbnRlbnRzIGFyZSBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzIChvbmUgcGVyIGxpbmUpCnRvIGJlIGFkZGVkIHRvIHN5cy5wYXRoLiAgTm9uLWV4aXN0aW5nIGRpcmVjdG9yaWVzIChvcgpub24tZGlyZWN0b3JpZXMpIGFyZSBuZXZlciBhZGRlZCB0byBzeXMucGF0aDsgbm8gZGlyZWN0b3J5IGlzIGFkZGVkIHRvCnN5cy5wYXRoIG1vcmUgdGhhbiBvbmNlLiAgQmxhbmsgbGluZXMgYW5kIGxpbmVzIGJlZ2lubmluZyB3aXRoCicjJyBhcmUgc2tpcHBlZC4gTGluZXMgc3RhcnRpbmcgd2l0aCAnaW1wb3J0JyBhcmUgZXhlY3V0ZWQuCgpGb3IgZXhhbXBsZSwgc3VwcG9zZSBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0bwovdXNyL2xvY2FsIGFuZCB0aGVyZSBpcyBhIGRpcmVjdG9yeSAvdXNyL2xvY2FsL2xpYi9weXRob24yLjUvc2l0ZS1wYWNrYWdlcwp3aXRoIHRocmVlIHN1YmRpcmVjdG9yaWVzLCBmb28sIGJhciBhbmQgc3BhbSwgYW5kIHR3byBwYXRoCmNvbmZpZ3VyYXRpb24gZmlsZXMsIGZvby5wdGggYW5kIGJhci5wdGguICBBc3N1bWUgZm9vLnB0aCBjb250YWlucyB0aGUKZm9sbG93aW5nOgoKICAjIGZvbyBwYWNrYWdlIGNvbmZpZ3VyYXRpb24KICBmb28KICBiYXIKICBibGV0Y2gKCmFuZCBiYXIucHRoIGNvbnRhaW5zOgoKICAjIGJhciBwYWNrYWdlIGNvbmZpZ3VyYXRpb24KICBiYXIKClRoZW4gdGhlIGZvbGxvd2luZyBkaXJlY3RvcmllcyBhcmUgYWRkZWQgdG8gc3lzLnBhdGgsIGluIHRoaXMgb3JkZXI6CgogIC91c3IvbG9jYWwvbGliL3B5dGhvbjIuNS9zaXRlLXBhY2thZ2VzL2JhcgogIC91c3IvbG9jYWwvbGliL3B5dGhvbjIuNS9zaXRlLXBhY2thZ2VzL2ZvbwoKTm90ZSB0aGF0IGJsZXRjaCBpcyBvbWl0dGVkIGJlY2F1c2UgaXQgZG9lc24ndCBleGlzdDsgYmFyIHByZWNlZGVzIGZvbwpiZWNhdXNlIGJhci5wdGggY29tZXMgYWxwaGFiZXRpY2FsbHkgYmVmb3JlIGZvby5wdGg7IGFuZCBzcGFtIGlzCm9taXR0ZWQgYmVjYXVzZSBpdCBpcyBub3QgbWVudGlvbmVkIGluIGVpdGhlciBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZS4KClRoZSByZWFkbGluZSBtb2R1bGUgaXMgYWxzbyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgdG8gZW5hYmxlCmNvbXBsZXRpb24gZm9yIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGl0LiAgVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBpbgpzaXRlY3VzdG9taXplLCB1c2VyY3VzdG9taXplIG9yIFBZVEhPTlNUQVJUVVAuICBTdGFydGluZyBQeXRob24gaW4KaXNvbGF0ZWQgbW9kZSAoLUkpIGRpc2FibGVzIGF1dG9tYXRpYyByZWFkbGluZSBjb25maWd1cmF0aW9uLgoKQWZ0ZXIgdGhlc2Ugb3BlcmF0aW9ucywgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGltcG9ydCBhIG1vZHVsZQpuYW1lZCBzaXRlY3VzdG9taXplLCB3aGljaCBjYW4gcGVyZm9ybSBhcmJpdHJhcnkgYWRkaXRpb25hbApzaXRlLXNwZWNpZmljIGN1c3RvbWl6YXRpb25zLiAgSWYgdGhpcyBpbXBvcnQgZmFpbHMgd2l0aCBhbgpJbXBvcnRFcnJvciBleGNlcHRpb24sIGl0IGlzIHNpbGVudGx5IGlnbm9yZWQuCiIiIgoKaW1wb3J0IHN5cwppbXBvcnQgb3MKaW1wb3J0IGJ1aWx0aW5zCmltcG9ydCBfc2l0ZWJ1aWx0aW5zCmltcG9ydCBpbwoKIyBQcmVmaXhlcyBmb3Igc2l0ZS1wYWNrYWdlczsgYWRkIGFkZGl0aW9uYWwgcHJlZml4ZXMgbGlrZSAvdXNyL2xvY2FsIGhlcmUKUFJFRklYRVMgPSBbc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4XQojIEVuYWJsZSBwZXIgdXNlciBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yeQojIHNldCBpdCB0byBGYWxzZSB0byBkaXNhYmxlIHRoZSBmZWF0dXJlIG9yIFRydWUgdG8gZm9yY2UgdGhlIGZlYXR1cmUKRU5BQkxFX1VTRVJfU0lURSA9IE5vbmUKCiMgZm9yIGRpc3R1dGlscy5jb21tYW5kcy5pbnN0YWxsCiMgVGhlc2UgdmFsdWVzIGFyZSBpbml0aWFsaXplZCBieSB0aGUgZ2V0dXNlcmJhc2UoKSBhbmQgZ2V0dXNlcnNpdGVwYWNrYWdlcygpCiMgZnVuY3Rpb25zLCB0aHJvdWdoIHRoZSBtYWluKCkgZnVuY3Rpb24gd2hlbiBQeXRob24gc3RhcnRzLgpVU0VSX1NJVEUgPSBOb25lClVTRVJfQkFTRSA9IE5vbmUKCgpkZWYgX3RyYWNlKG1lc3NhZ2UpOgogICAgaWYgc3lzLmZsYWdzLnZlcmJvc2U6CiAgICAgICAgcHJpbnQobWVzc2FnZSwgZmlsZT1zeXMuc3RkZXJyKQoKCmRlZiBtYWtlcGF0aCgqcGF0aHMpOgogICAgZGlyID0gb3MucGF0aC5qb2luKCpwYXRocykKICAgIHRyeToKICAgICAgICBkaXIgPSBvcy5wYXRoLmFic3BhdGgoZGlyKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcGFzcwogICAgcmV0dXJuIGRpciwgb3MucGF0aC5ub3JtY2FzZShkaXIpCgoKZGVmIGFic19wYXRocygpOgogICAgIiIiU2V0IGFsbCBtb2R1bGUgX19maWxlX18gYW5kIF9fY2FjaGVkX18gYXR0cmlidXRlcyB0byBhbiBhYnNvbHV0ZSBwYXRoIiIiCiAgICBmb3IgbSBpbiBzZXQoc3lzLm1vZHVsZXMudmFsdWVzKCkpOgogICAgICAgIGxvYWRlcl9tb2R1bGUgPSBOb25lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBsb2FkZXJfbW9kdWxlID0gbS5fX2xvYWRlcl9fLl9fbW9kdWxlX18KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGxvYWRlcl9tb2R1bGUgPSBtLl9fc3BlY19fLmxvYWRlci5fX21vZHVsZV9fCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBpZiBsb2FkZXJfbW9kdWxlIG5vdCBpbiB7J19mcm96ZW5faW1wb3J0bGliJywgJ19mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsJ306CiAgICAgICAgICAgIGNvbnRpbnVlICAgIyBkb24ndCBtZXNzIHdpdGggYSBQRVAgMzAyLXN1cHBsaWVkIF9fZmlsZV9fCiAgICAgICAgdHJ5OgogICAgICAgICAgICBtLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG0uX19maWxlX18pCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvciwgVHlwZUVycm9yKToKICAgICAgICAgICAgcGFzcwogICAgICAgIHRyeToKICAgICAgICAgICAgbS5fX2NhY2hlZF9fID0gb3MucGF0aC5hYnNwYXRoKG0uX19jYWNoZWRfXykKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yLCBUeXBlRXJyb3IpOgogICAgICAgICAgICBwYXNzCgoKZGVmIHJlbW92ZWR1cHBhdGhzKCk6CiAgICAiIiIgUmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVzIGZyb20gc3lzLnBhdGggYWxvbmcgd2l0aCBtYWtpbmcgdGhlbQogICAgYWJzb2x1dGUiIiIKICAgICMgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGluaXRpYWwgcGF0aCBwcm92aWRlZCBieSB0aGUgaW50ZXJwcmV0ZXIgY29udGFpbnMKICAgICMgb25seSBhYnNvbHV0ZSBwYXRobmFtZXMsIGV2ZW4gaWYgd2UncmUgcnVubmluZyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkuCiAgICBMID0gW10KICAgIGtub3duX3BhdGhzID0gc2V0KCkKICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CiAgICAgICAgIyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZSBwYXRocyAob24gY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMgYWxzbwogICAgICAgICMgaWYgdGhleSBvbmx5IGRpZmZlciBpbiBjYXNlKTsgdHVybiByZWxhdGl2ZSBwYXRocyBpbnRvIGFic29sdXRlCiAgICAgICAgIyBwYXRocy4KICAgICAgICBkaXIsIGRpcmNhc2UgPSBtYWtlcGF0aChkaXIpCiAgICAgICAgaWYgZGlyY2FzZSBub3QgaW4ga25vd25fcGF0aHM6CiAgICAgICAgICAgIEwuYXBwZW5kKGRpcikKICAgICAgICAgICAga25vd25fcGF0aHMuYWRkKGRpcmNhc2UpCiAgICBzeXMucGF0aFs6XSA9IEwKICAgIHJldHVybiBrbm93bl9wYXRocwoKCmRlZiBfaW5pdF9wYXRoaW5mbygpOgogICAgIiIiUmV0dXJuIGEgc2V0IGNvbnRhaW5pbmcgYWxsIGV4aXN0aW5nIGZpbGUgc3lzdGVtIGl0ZW1zIGZyb20gc3lzLnBhdGguIiIiCiAgICBkID0gc2V0KCkKICAgIGZvciBpdGVtIGluIHN5cy5wYXRoOgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaXRlbSk6CiAgICAgICAgICAgICAgICBfLCBpdGVtY2FzZSA9IG1ha2VwYXRoKGl0ZW0pCiAgICAgICAgICAgICAgICBkLmFkZChpdGVtY2FzZSkKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICBjb250aW51ZQogICAgcmV0dXJuIGQKCgpkZWYgYWRkcGFja2FnZShzaXRlZGlyLCBuYW1lLCBrbm93bl9wYXRocyk6CiAgICAiIiJQcm9jZXNzIGEgLnB0aCBmaWxlIHdpdGhpbiB0aGUgc2l0ZS1wYWNrYWdlcyBkaXJlY3Rvcnk6CiAgICAgICBGb3IgZWFjaCBsaW5lIGluIHRoZSBmaWxlLCBlaXRoZXIgY29tYmluZSBpdCB3aXRoIHNpdGVkaXIgdG8gYSBwYXRoCiAgICAgICBhbmQgYWRkIHRoYXQgdG8ga25vd25fcGF0aHMsIG9yIGV4ZWN1dGUgaXQgaWYgaXQgc3RhcnRzIHdpdGggJ2ltcG9ydCAnLgogICAgIiIiCiAgICBpZiBrbm93bl9wYXRocyBpcyBOb25lOgogICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQogICAgICAgIHJlc2V0ID0gVHJ1ZQogICAgZWxzZToKICAgICAgICByZXNldCA9IEZhbHNlCiAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihzaXRlZGlyLCBuYW1lKQogICAgX3RyYWNlKGYiUHJvY2Vzc2luZyAucHRoIGZpbGU6IHtmdWxsbmFtZSFyfSIpCiAgICB0cnk6CiAgICAgICAgIyBsb2NhbGUgZW5jb2RpbmcgaXMgbm90IGlkZWFsIGVzcGVjaWFsbHkgb24gV2luZG93cy4gQnV0IHdlIGhhdmUgdXNlZAogICAgICAgICMgaXQgZm9yIGEgbG9uZyB0aW1lLiBzZXR1cHRvb2xzIHVzZXMgdGhlIGxvY2FsZSBlbmNvZGluZyB0b28uCiAgICAgICAgZiA9IGlvLlRleHRJT1dyYXBwZXIoaW8ub3Blbl9jb2RlKGZ1bGxuYW1lKSwgZW5jb2Rpbmc9ImxvY2FsZSIpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICByZXR1cm4KICAgIHdpdGggZjoKICAgICAgICBmb3IgbiwgbGluZSBpbiBlbnVtZXJhdGUoZik6CiAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiIyIpOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaWYgbGluZS5zdHJpcCgpID09ICIiOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCgiaW1wb3J0ICIsICJpbXBvcnRcdCIpKToKICAgICAgICAgICAgICAgICAgICBleGVjKGxpbmUpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgICAgICAgICAgICAgICBkaXIsIGRpcmNhc2UgPSBtYWtlcGF0aChzaXRlZGlyLCBsaW5lKQogICAgICAgICAgICAgICAgaWYgbm90IGRpcmNhc2UgaW4ga25vd25fcGF0aHMgYW5kIG9zLnBhdGguZXhpc3RzKGRpcik6CiAgICAgICAgICAgICAgICAgICAgc3lzLnBhdGguYXBwZW5kKGRpcikKICAgICAgICAgICAgICAgICAgICBrbm93bl9wYXRocy5hZGQoZGlyY2FzZSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIHByaW50KCJFcnJvciBwcm9jZXNzaW5nIGxpbmUgezpkfSBvZiB7fTpcbiIuZm9ybWF0KG4rMSwgZnVsbG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICAgICAgICAgZm9yIHJlY29yZCBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpOgogICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHJlY29yZC5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCcgICcrbGluZSwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgcHJpbnQoIlxuUmVtYWluZGVyIG9mIGZpbGUgaWdub3JlZCIsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgICAgIGJyZWFrCiAgICBpZiByZXNldDoKICAgICAgICBrbm93bl9wYXRocyA9IE5vbmUKICAgIHJldHVybiBrbm93bl9wYXRocwoKCmRlZiBhZGRzaXRlZGlyKHNpdGVkaXIsIGtub3duX3BhdGhzPU5vbmUpOgogICAgIiIiQWRkICdzaXRlZGlyJyBhcmd1bWVudCB0byBzeXMucGF0aCBpZiBtaXNzaW5nIGFuZCBoYW5kbGUgLnB0aCBmaWxlcyBpbgogICAgJ3NpdGVkaXInIiIiCiAgICBfdHJhY2UoZiJBZGRpbmcgZGlyZWN0b3J5OiB7c2l0ZWRpciFyfSIpCiAgICBpZiBrbm93bl9wYXRocyBpcyBOb25lOgogICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQogICAgICAgIHJlc2V0ID0gVHJ1ZQogICAgZWxzZToKICAgICAgICByZXNldCA9IEZhbHNlCiAgICBzaXRlZGlyLCBzaXRlZGlyY2FzZSA9IG1ha2VwYXRoKHNpdGVkaXIpCiAgICBpZiBub3Qgc2l0ZWRpcmNhc2UgaW4ga25vd25fcGF0aHM6CiAgICAgICAgc3lzLnBhdGguYXBwZW5kKHNpdGVkaXIpICAgICAgICAjIEFkZCBwYXRoIGNvbXBvbmVudAogICAgICAgIGtub3duX3BhdGhzLmFkZChzaXRlZGlyY2FzZSkKICAgIHRyeToKICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoc2l0ZWRpcikKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHJldHVybgogICAgbmFtZXMgPSBbbmFtZSBmb3IgbmFtZSBpbiBuYW1lcyBpZiBuYW1lLmVuZHN3aXRoKCIucHRoIildCiAgICBmb3IgbmFtZSBpbiBzb3J0ZWQobmFtZXMpOgogICAgICAgIGFkZHBhY2thZ2Uoc2l0ZWRpciwgbmFtZSwga25vd25fcGF0aHMpCiAgICBpZiByZXNldDoKICAgICAgICBrbm93bl9wYXRocyA9IE5vbmUKICAgIHJldHVybiBrbm93bl9wYXRocwoKCmRlZiBjaGVja19lbmFibGV1c2Vyc2l0ZSgpOgogICAgIiIiQ2hlY2sgaWYgdXNlciBzaXRlIGRpcmVjdG9yeSBpcyBzYWZlIGZvciBpbmNsdXNpb24KCiAgICBUaGUgZnVuY3Rpb24gdGVzdHMgZm9yIHRoZSBjb21tYW5kIGxpbmUgZmxhZyAoaW5jbHVkaW5nIGVudmlyb25tZW50IHZhciksCiAgICBwcm9jZXNzIHVpZC9naWQgZXF1YWwgdG8gZWZmZWN0aXZlIHVpZC9naWQuCgogICAgTm9uZTogRGlzYWJsZWQgZm9yIHNlY3VyaXR5IHJlYXNvbnMKICAgIEZhbHNlOiBEaXNhYmxlZCBieSB1c2VyIChjb21tYW5kIGxpbmUgb3B0aW9uKQogICAgVHJ1ZTogU2FmZSBhbmQgZW5hYmxlZAogICAgIiIiCiAgICBpZiBzeXMuZmxhZ3Mubm9fdXNlcl9zaXRlOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGlmIGhhc2F0dHIob3MsICJnZXR1aWQiKSBhbmQgaGFzYXR0cihvcywgImdldGV1aWQiKToKICAgICAgICAjIGNoZWNrIHByb2Nlc3MgdWlkID09IGVmZmVjdGl2ZSB1aWQKICAgICAgICBpZiBvcy5nZXRldWlkKCkgIT0gb3MuZ2V0dWlkKCk6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICBpZiBoYXNhdHRyKG9zLCAiZ2V0Z2lkIikgYW5kIGhhc2F0dHIob3MsICJnZXRlZ2lkIik6CiAgICAgICAgIyBjaGVjayBwcm9jZXNzIGdpZCA9PSBlZmZlY3RpdmUgZ2lkCiAgICAgICAgaWYgb3MuZ2V0ZWdpZCgpICE9IG9zLmdldGdpZCgpOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIHJldHVybiBUcnVlCgoKIyBOT1RFOiBzeXNjb25maWcgYW5kIGl0J3MgZGVwZW5kZW5jaWVzIGFyZSByZWxhdGl2ZWx5IGxhcmdlIGJ1dCBzaXRlIG1vZHVsZQojIG5lZWRzIHZlcnkgbGltaXRlZCBwYXJ0IG9mIHRoZW0uCiMgVG8gc3BlZWR1cCBzdGFydHVwIHRpbWUsIHdlIGhhdmUgY29weSBvZiB0aGVtLgojCiMgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjk1ODUKCiMgQ29weSBvZiBzeXNjb25maWcuX2dldHVzZXJiYXNlKCkKZGVmIF9nZXR1c2VyYmFzZSgpOgogICAgZW52X2Jhc2UgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVVNFUkJBU0UiLCBOb25lKQogICAgaWYgZW52X2Jhc2U6CiAgICAgICAgcmV0dXJuIGVudl9iYXNlCgogICAgIyBFbXNjcmlwdGVuLCBWeFdvcmtzLCBhbmQgV0FTSSBoYXZlIG5vIGhvbWUgZGlyZWN0b3JpZXMKICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiB7ImVtc2NyaXB0ZW4iLCAidnh3b3JrcyIsICJ3YXNpIn06CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgam9pbnVzZXIoKmFyZ3MpOgogICAgICAgIHJldHVybiBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5qb2luKCphcmdzKSkKCiAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgYmFzZSA9IG9zLmVudmlyb24uZ2V0KCJBUFBEQVRBIikgb3IgIn4iCiAgICAgICAgcmV0dXJuIGpvaW51c2VyKGJhc2UsICJQeXRob24iKQoKICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIiBhbmQgc3lzLl9mcmFtZXdvcms6CiAgICAgICAgcmV0dXJuIGpvaW51c2VyKCJ+IiwgIkxpYnJhcnkiLCBzeXMuX2ZyYW1ld29yaywKICAgICAgICAgICAgICAgICAgICAgICAgIiVkLiVkIiAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQoKICAgIHJldHVybiBqb2ludXNlcigifiIsICIubG9jYWwiKQoKCiMgU2FtZSB0byBzeXNjb25maWcuZ2V0X3BhdGgoJ3B1cmVsaWInLCBvcy5uYW1lKydfdXNlcicpCmRlZiBfZ2V0X3BhdGgodXNlcmJhc2UpOgogICAgdmVyc2lvbiA9IHN5cy52ZXJzaW9uX2luZm8KCiAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgdmVyX25vZG90ID0gc3lzLndpbnZlci5yZXBsYWNlKCcuJywgJycpCiAgICAgICAgcmV0dXJuIGYne3VzZXJiYXNlfVxcUHl0aG9ue3Zlcl9ub2RvdH1cXHNpdGUtcGFja2FnZXMnCgogICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBzeXMuX2ZyYW1ld29yazoKICAgICAgICByZXR1cm4gZid7dXNlcmJhc2V9L2xpYi9weXRob24vc2l0ZS1wYWNrYWdlcycKCiAgICByZXR1cm4gZid7dXNlcmJhc2V9L2xpYi9weXRob257dmVyc2lvblswXX0ue3ZlcnNpb25bMV19L3NpdGUtcGFja2FnZXMnCgoKZGVmIGdldHVzZXJiYXNlKCk6CiAgICAiIiJSZXR1cm5zIHRoZSBgdXNlciBiYXNlYCBkaXJlY3RvcnkgcGF0aC4KCiAgICBUaGUgYHVzZXIgYmFzZWAgZGlyZWN0b3J5IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGRhdGEuIElmIHRoZSBnbG9iYWwKICAgIHZhcmlhYmxlIGBgVVNFUl9CQVNFYGAgaXMgbm90IGluaXRpYWxpemVkIHlldCwgdGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gc2V0CiAgICBpdC4KICAgICIiIgogICAgZ2xvYmFsIFVTRVJfQkFTRQogICAgaWYgVVNFUl9CQVNFIGlzIE5vbmU6CiAgICAgICAgVVNFUl9CQVNFID0gX2dldHVzZXJiYXNlKCkKICAgIHJldHVybiBVU0VSX0JBU0UKCgpkZWYgZ2V0dXNlcnNpdGVwYWNrYWdlcygpOgogICAgIiIiUmV0dXJucyB0aGUgdXNlci1zcGVjaWZpYyBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yeSBwYXRoLgoKICAgIElmIHRoZSBnbG9iYWwgdmFyaWFibGUgYGBVU0VSX1NJVEVgYCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LCB0aGlzCiAgICBmdW5jdGlvbiB3aWxsIGFsc28gc2V0IGl0LgogICAgIiIiCiAgICBnbG9iYWwgVVNFUl9TSVRFLCBFTkFCTEVfVVNFUl9TSVRFCiAgICB1c2VyYmFzZSA9IGdldHVzZXJiYXNlKCkgIyB0aGlzIHdpbGwgYWxzbyBzZXQgVVNFUl9CQVNFCgogICAgaWYgVVNFUl9TSVRFIGlzIE5vbmU6CiAgICAgICAgaWYgdXNlcmJhc2UgaXMgTm9uZToKICAgICAgICAgICAgRU5BQkxFX1VTRVJfU0lURSA9IEZhbHNlICMgZGlzYWJsZSB1c2VyIHNpdGUgYW5kIHJldHVybiBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgVVNFUl9TSVRFID0gX2dldF9wYXRoKHVzZXJiYXNlKQoKICAgIHJldHVybiBVU0VSX1NJVEUKCmRlZiBhZGR1c2Vyc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKToKICAgICIiIkFkZCBhIHBlciB1c2VyIHNpdGUtcGFja2FnZSB0byBzeXMucGF0aAoKICAgIEVhY2ggdXNlciBoYXMgaXRzIG93biBweXRob24gZGlyZWN0b3J5IHdpdGggc2l0ZS1wYWNrYWdlcyBpbiB0aGUKICAgIGhvbWUgZGlyZWN0b3J5LgogICAgIiIiCiAgICAjIGdldCB0aGUgcGVyIHVzZXIgc2l0ZS1wYWNrYWdlIHBhdGgKICAgICMgdGhpcyBjYWxsIHdpbGwgYWxzbyBtYWtlIHN1cmUgVVNFUl9CQVNFIGFuZCBVU0VSX1NJVEUgYXJlIHNldAogICAgX3RyYWNlKCJQcm9jZXNzaW5nIHVzZXIgc2l0ZS1wYWNrYWdlcyIpCiAgICB1c2VyX3NpdGUgPSBnZXR1c2Vyc2l0ZXBhY2thZ2VzKCkKCiAgICBpZiBFTkFCTEVfVVNFUl9TSVRFIGFuZCBvcy5wYXRoLmlzZGlyKHVzZXJfc2l0ZSk6CiAgICAgICAgYWRkc2l0ZWRpcih1c2VyX3NpdGUsIGtub3duX3BhdGhzKQogICAgcmV0dXJuIGtub3duX3BhdGhzCgpkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgIiIiUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMuCgogICAgRm9yIGVhY2ggZGlyZWN0b3J5IHByZXNlbnQgaW4gYGBwcmVmaXhlc2BgIChvciB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCksCiAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlCiAgICBzeXN0ZW0gZW52aXJvbm1lbnQsIGFuZCB3aWxsIHJldHVybiBhIGxpc3Qgb2YgZnVsbCBwYXRocy4KICAgICIiIgogICAgc2l0ZXBhY2thZ2VzID0gW10KICAgIHNlZW4gPSBzZXQoKQoKICAgIGlmIHByZWZpeGVzIGlzIE5vbmU6CiAgICAgICAgcHJlZml4ZXMgPSBQUkVGSVhFUwoKICAgIGZvciBwcmVmaXggaW4gcHJlZml4ZXM6CiAgICAgICAgaWYgbm90IHByZWZpeCBvciBwcmVmaXggaW4gc2VlbjoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBzZWVuLmFkZChwcmVmaXgpCgogICAgICAgIGlmIG9zLnNlcCA9PSAnLyc6CiAgICAgICAgICAgIGxpYmRpcnMgPSBbc3lzLnBsYXRsaWJkaXJdCiAgICAgICAgICAgIGlmIHN5cy5wbGF0bGliZGlyICE9ICJsaWIiOgogICAgICAgICAgICAgICAgbGliZGlycy5hcHBlbmQoImxpYiIpCgogICAgICAgICAgICBmb3IgbGliZGlyIGluIGxpYmRpcnM6CiAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHByZWZpeCwgbGliZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikKICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQocGF0aCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKHByZWZpeCkKICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAiTGliIiwgInNpdGUtcGFja2FnZXMiKSkKICAgIHJldHVybiBzaXRlcGFja2FnZXMKCmRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgogICAgIiIiQWRkIHNpdGUtcGFja2FnZXMgdG8gc3lzLnBhdGgiIiIKICAgIF90cmFjZSgiUHJvY2Vzc2luZyBnbG9iYWwgc2l0ZS1wYWNrYWdlcyIpCiAgICBmb3Igc2l0ZWRpciBpbiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXMpOgogICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc2l0ZWRpcik6CiAgICAgICAgICAgIGFkZHNpdGVkaXIoc2l0ZWRpciwga25vd25fcGF0aHMpCgogICAgcmV0dXJuIGtub3duX3BhdGhzCgpkZWYgc2V0cXVpdCgpOgogICAgIiIiRGVmaW5lIG5ldyBidWlsdGlucyAncXVpdCcgYW5kICdleGl0Jy4KCiAgICBUaGVzZSBhcmUgb2JqZWN0cyB3aGljaCBtYWtlIHRoZSBpbnRlcnByZXRlciBleGl0IHdoZW4gY2FsbGVkLgogICAgVGhlIHJlcHIgb2YgZWFjaCBvYmplY3QgY29udGFpbnMgYSBoaW50IGF0IGhvdyBpdCB3b3Jrcy4KCiAgICAiIiIKICAgIGlmIG9zLnNlcCA9PSAnXFwnOgogICAgICAgIGVvZiA9ICdDdHJsLVogcGx1cyBSZXR1cm4nCiAgICBlbHNlOgogICAgICAgIGVvZiA9ICdDdHJsLUQgKGkuZS4gRU9GKScKCiAgICBidWlsdGlucy5xdWl0ID0gX3NpdGVidWlsdGlucy5RdWl0dGVyKCdxdWl0JywgZW9mKQogICAgYnVpbHRpbnMuZXhpdCA9IF9zaXRlYnVpbHRpbnMuUXVpdHRlcignZXhpdCcsIGVvZikKCgpkZWYgc2V0Y29weXJpZ2h0KCk6CiAgICAiIiJTZXQgJ2NvcHlyaWdodCcgYW5kICdjcmVkaXRzJyBpbiBidWlsdGlucyIiIgogICAgYnVpbHRpbnMuY29weXJpZ2h0ID0gX3NpdGVidWlsdGlucy5fUHJpbnRlcigiY29weXJpZ2h0Iiwgc3lzLmNvcHlyaWdodCkKICAgIGlmIHN5cy5wbGF0Zm9ybVs6NF0gPT0gJ2phdmEnOgogICAgICAgIGJ1aWx0aW5zLmNyZWRpdHMgPSBfc2l0ZWJ1aWx0aW5zLl9QcmludGVyKAogICAgICAgICAgICAiY3JlZGl0cyIsCiAgICAgICAgICAgICJKeXRob24gaXMgbWFpbnRhaW5lZCBieSB0aGUgSnl0aG9uIGRldmVsb3BlcnMgKHd3dy5qeXRob24ub3JnKS4iKQogICAgZWxzZToKICAgICAgICBidWlsdGlucy5jcmVkaXRzID0gX3NpdGVidWlsdGlucy5fUHJpbnRlcigiY3JlZGl0cyIsICIiIlwKICAgIFRoYW5rcyB0byBDV0ksIENOUkksIEJlT3Blbi5jb20sIFpvcGUgQ29ycG9yYXRpb24gYW5kIGEgY2FzdCBvZiB0aG91c2FuZHMKICAgIGZvciBzdXBwb3J0aW5nIFB5dGhvbiBkZXZlbG9wbWVudC4gIFNlZSB3d3cucHl0aG9uLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIiIpCiAgICBmaWxlcywgZGlycyA9IFtdLCBbXQogICAgIyBOb3QgYWxsIG1vZHVsZXMgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYSBfX2ZpbGVfXyBhdHRyaWJ1dGUuICBTZWUKICAgICMgUEVQIDQyMCBmb3IgbW9yZSBkZXRhaWxzLgogICAgaGVyZSA9IGdldGF0dHIoc3lzLCAnX3N0ZGxpYl9kaXInLCBOb25lKQogICAgaWYgbm90IGhlcmUgYW5kIGhhc2F0dHIob3MsICdfX2ZpbGVfXycpOgogICAgICAgIGhlcmUgPSBvcy5wYXRoLmRpcm5hbWUob3MuX19maWxlX18pCiAgICBpZiBoZXJlOgogICAgICAgIGZpbGVzLmV4dGVuZChbIkxJQ0VOU0UudHh0IiwgIkxJQ0VOU0UiXSkKICAgICAgICBkaXJzLmV4dGVuZChbb3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciksIGhlcmUsIG9zLmN1cmRpcl0pCiAgICBidWlsdGlucy5saWNlbnNlID0gX3NpdGVidWlsdGlucy5fUHJpbnRlcigKICAgICAgICAibGljZW5zZSIsCiAgICAgICAgIlNlZSBodHRwczovL3d3dy5weXRob24ub3JnL3BzZi9saWNlbnNlLyIsCiAgICAgICAgZmlsZXMsIGRpcnMpCgoKZGVmIHNldGhlbHBlcigpOgogICAgYnVpbHRpbnMuaGVscCA9IF9zaXRlYnVpbHRpbnMuX0hlbHBlcigpCgpkZWYgZW5hYmxlcmxjb21wbGV0ZXIoKToKICAgICIiIkVuYWJsZSBkZWZhdWx0IHJlYWRsaW5lIGNvbmZpZ3VyYXRpb24gb24gaW50ZXJhY3RpdmUgcHJvbXB0cywgYnkKICAgIHJlZ2lzdGVyaW5nIGEgc3lzLl9faW50ZXJhY3RpdmVob29rX18uCgogICAgSWYgdGhlIHJlYWRsaW5lIG1vZHVsZSBjYW4gYmUgaW1wb3J0ZWQsIHRoZSBob29rIHdpbGwgc2V0IHRoZSBUYWIga2V5CiAgICBhcyBjb21wbGV0aW9uIGtleSBhbmQgcmVnaXN0ZXIgfi8ucHl0aG9uX2hpc3RvcnkgYXMgaGlzdG9yeSBmaWxlLgogICAgVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgc2l0ZWN1c3RvbWl6ZSBvciB1c2VyY3VzdG9taXplIG1vZHVsZSwKICAgIG9yIGluIGEgUFlUSE9OU1RBUlRVUCBmaWxlLgogICAgIiIiCiAgICBkZWYgcmVnaXN0ZXJfcmVhZGxpbmUoKToKICAgICAgICBpbXBvcnQgYXRleGl0CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgICAgICAgICAgaW1wb3J0IHJsY29tcGxldGVyCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBSZWFkaW5nIHRoZSBpbml0aWFsaXphdGlvbiAoY29uZmlnKSBmaWxlIG1heSBub3QgYmUgZW5vdWdoIHRvIHNldCBhCiAgICAgICAgIyBjb21wbGV0aW9uIGtleSwgc28gd2Ugc2V0IG9uZSBmaXJzdCBhbmQgdGhlbiByZWFkIHRoZSBmaWxlLgogICAgICAgIHJlYWRsaW5lX2RvYyA9IGdldGF0dHIocmVhZGxpbmUsICdfX2RvY19fJywgJycpCiAgICAgICAgaWYgcmVhZGxpbmVfZG9jIGlzIG5vdCBOb25lIGFuZCAnbGliZWRpdCcgaW4gcmVhZGxpbmVfZG9jOgogICAgICAgICAgICByZWFkbGluZS5wYXJzZV9hbmRfYmluZCgnYmluZCBeSSBybF9jb21wbGV0ZScpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQoJ3RhYjogY29tcGxldGUnKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJlYWRsaW5lLnJlYWRfaW5pdF9maWxlKCkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIyBBbiBPU0Vycm9yIGhlcmUgY291bGQgaGF2ZSBtYW55IGNhdXNlcywgYnV0IHRoZSBtb3N0IGxpa2VseSBvbmUKICAgICAgICAgICAgIyBpcyB0aGF0IHRoZXJlJ3Mgbm8gLmlucHV0cmMgZmlsZSAob3IgLmVkaXRyYyBmaWxlIGluIHRoZSBjYXNlIG9mCiAgICAgICAgICAgICMgTWFjIE9TIFggKyBsaWJlZGl0KSBpbiB0aGUgZXhwZWN0ZWQgbG9jYXRpb24uICBJbiB0aGF0IGNhc2UsIHdlCiAgICAgICAgICAgICMgd2FudCB0byBpZ25vcmUgdGhlIGV4Y2VwdGlvbi4KICAgICAgICAgICAgcGFzcwoKICAgICAgICBpZiByZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpID09IDA6CiAgICAgICAgICAgICMgSWYgbm8gaGlzdG9yeSB3YXMgbG9hZGVkLCBkZWZhdWx0IHRvIC5weXRob25faGlzdG9yeS4KICAgICAgICAgICAgIyBUaGUgZ3VhcmQgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGRvdWJsaW5nIGhpc3Rvcnkgc2l6ZSBhdAogICAgICAgICAgICAjIGVhY2ggaW50ZXJwcmV0ZXIgZXhpdCB3aGVuIHJlYWRsaW5lIHdhcyBhbHJlYWR5IGNvbmZpZ3VyZWQKICAgICAgICAgICAgIyB0aHJvdWdoIGEgUFlUSE9OU1RBUlRVUCBob29rLCBzZWU6CiAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTU4NDUjbXNnMTk4NjM2CiAgICAgICAgICAgIGhpc3RvcnkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCd+JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5weXRob25faGlzdG9yeScpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhpc3RvcnkpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICAgICAgZGVmIHdyaXRlX2hpc3RvcnkoKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICByZWFkbGluZS53cml0ZV9oaXN0b3J5X2ZpbGUoaGlzdG9yeSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICMgYnBvLTE5ODkxLCBicG8tNDExOTM6IEhvbWUgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0CiAgICAgICAgICAgICAgICAgICAgIyBvciBpcyBub3Qgd3JpdGFibGUsIG9yIHRoZSBmaWxlc3lzdGVtIGlzIHJlYWQtb25seS4KICAgICAgICAgICAgICAgICAgICBwYXNzCgogICAgICAgICAgICBhdGV4aXQucmVnaXN0ZXIod3JpdGVfaGlzdG9yeSkKCiAgICBzeXMuX19pbnRlcmFjdGl2ZWhvb2tfXyA9IHJlZ2lzdGVyX3JlYWRsaW5lCgpkZWYgdmVudihrbm93bl9wYXRocyk6CiAgICBnbG9iYWwgUFJFRklYRVMsIEVOQUJMRV9VU0VSX1NJVEUKCiAgICBlbnYgPSBvcy5lbnZpcm9uCiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CiAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5fYmFzZV9leGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCiAgICBlbHNlOgogICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQogICAgZXhlX2RpciwgXyA9IG9zLnBhdGguc3BsaXQob3MucGF0aC5hYnNwYXRoKGV4ZWN1dGFibGUpKQogICAgc2l0ZV9wcmVmaXggPSBvcy5wYXRoLmRpcm5hbWUoZXhlX2RpcikKICAgIHN5cy5faG9tZSA9IE5vbmUKICAgIGNvbmZfYmFzZW5hbWUgPSAncHl2ZW52LmNmZycKICAgIGNhbmRpZGF0ZV9jb25mcyA9IFsKICAgICAgICBjb25mZmlsZSBmb3IgY29uZmZpbGUgaW4gKAogICAgICAgICAgICBvcy5wYXRoLmpvaW4oZXhlX2RpciwgY29uZl9iYXNlbmFtZSksCiAgICAgICAgICAgIG9zLnBhdGguam9pbihzaXRlX3ByZWZpeCwgY29uZl9iYXNlbmFtZSkKICAgICAgICAgICAgKQogICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNvbmZmaWxlKQogICAgICAgIF0KCiAgICBpZiBjYW5kaWRhdGVfY29uZnM6CiAgICAgICAgdmlydHVhbF9jb25mID0gY2FuZGlkYXRlX2NvbmZzWzBdCiAgICAgICAgc3lzdGVtX3NpdGUgPSAidHJ1ZSIKICAgICAgICAjIElzc3VlIDI1MTg1OiBVc2UgVVRGLTgsIGFzIHRoYXQncyB3aGF0IHRoZSB2ZW52IG1vZHVsZSB1c2VzIHdoZW4KICAgICAgICAjIHdyaXRpbmcgdGhlIGZpbGUuCiAgICAgICAgd2l0aCBvcGVuKHZpcnR1YWxfY29uZiwgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZjoKICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgIGlmICc9JyBpbiBsaW5lOgogICAgICAgICAgICAgICAgICAgIGtleSwgXywgdmFsdWUgPSBsaW5lLnBhcnRpdGlvbignPScpCiAgICAgICAgICAgICAgICAgICAga2V5ID0ga2V5LnN0cmlwKCkubG93ZXIoKQogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQogICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdob21lJzoKICAgICAgICAgICAgICAgICAgICAgICAgc3lzLl9ob21lID0gdmFsdWUKCiAgICAgICAgc3lzLnByZWZpeCA9IHN5cy5leGVjX3ByZWZpeCA9IHNpdGVfcHJlZml4CgogICAgICAgICMgRG9pbmcgdGhpcyBoZXJlIGVuc3VyZXMgdmVudiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdXNlci1zaXRlCiAgICAgICAgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzLCBbc3lzLnByZWZpeF0pCgogICAgICAgICMgYWRkc2l0ZXBhY2thZ2VzIHdpbGwgcHJvY2VzcyBzaXRlX3ByZWZpeCBhZ2FpbiBpZiBpdHMgaW4gUFJFRklYRVMsCiAgICAgICAgIyBidXQgdGhhdCdzIG9rOyBrbm93bl9wYXRocyB3aWxsIHByZXZlbnQgYW55dGhpbmcgYmVpbmcgYWRkZWQgdHdpY2UKICAgICAgICBpZiBzeXN0ZW1fc2l0ZSA9PSAidHJ1ZSI6CiAgICAgICAgICAgIFBSRUZJWEVTLmluc2VydCgwLCBzeXMucHJlZml4KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIFBSRUZJWEVTID0gW3N5cy5wcmVmaXhdCiAgICAgICAgICAgIEVOQUJMRV9VU0VSX1NJVEUgPSBGYWxzZQoKICAgIHJldHVybiBrbm93bl9wYXRocwoKCmRlZiBleGVjc2l0ZWN1c3RvbWl6ZSgpOgogICAgIiIiUnVuIGN1c3RvbSBzaXRlIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgIHRyeToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltcG9ydCBzaXRlY3VzdG9taXplCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gJ3NpdGVjdXN0b21pemUnOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgogICAgICAgICAgICBzeXMuZXhjZXB0aG9vaygqc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKICAgICAgICAgICAgICAgICJFcnJvciBpbiBzaXRlY3VzdG9taXplOyBzZXQgUFlUSE9OVkVSQk9TRSBmb3IgdHJhY2ViYWNrOlxuIgogICAgICAgICAgICAgICAgIiVzOiAlc1xuIiAlCiAgICAgICAgICAgICAgICAoZXJyLl9fY2xhc3NfXy5fX25hbWVfXywgZXJyKSkKCgpkZWYgZXhlY3VzZXJjdXN0b21pemUoKToKICAgICIiIlJ1biBjdXN0b20gdXNlciBzcGVjaWZpYyBjb2RlLCBpZiBhdmFpbGFibGUuIiIiCiAgICB0cnk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgdXNlcmN1c3RvbWl6ZQogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CiAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09ICd1c2VyY3VzdG9taXplJzoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZToKICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAgICAgICAgICAgICAgICAiRXJyb3IgaW4gdXNlcmN1c3RvbWl6ZTsgc2V0IFBZVEhPTlZFUkJPU0UgZm9yIHRyYWNlYmFjazpcbiIKICAgICAgICAgICAgICAgICIlczogJXNcbiIgJQogICAgICAgICAgICAgICAgKGVyci5fX2NsYXNzX18uX19uYW1lX18sIGVycikpCgoKZGVmIG1haW4oKToKICAgICIiIkFkZCBzdGFuZGFyZCBzaXRlLXNwZWNpZmljIGRpcmVjdG9yaWVzIHRvIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGguCgogICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoaXMgbW9kdWxlIGlzIGltcG9ydGVkLAogICAgdW5sZXNzIHRoZSBweXRob24gaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgLVMgZmxhZy4KICAgICIiIgogICAgZ2xvYmFsIEVOQUJMRV9VU0VSX1NJVEUKCiAgICBvcmlnX3BhdGggPSBzeXMucGF0aFs6XQogICAga25vd25fcGF0aHMgPSByZW1vdmVkdXBwYXRocygpCiAgICBpZiBvcmlnX3BhdGggIT0gc3lzLnBhdGg6CiAgICAgICAgIyByZW1vdmVkdXBwYXRocygpIG1pZ2h0IG1ha2Ugc3lzLnBhdGggYWJzb2x1dGUuCiAgICAgICAgIyBmaXggX19maWxlX18gYW5kIF9fY2FjaGVkX18gb2YgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVzIHRvby4KICAgICAgICBhYnNfcGF0aHMoKQoKICAgIGtub3duX3BhdGhzID0gdmVudihrbm93bl9wYXRocykKICAgIGlmIEVOQUJMRV9VU0VSX1NJVEUgaXMgTm9uZToKICAgICAgICBFTkFCTEVfVVNFUl9TSVRFID0gY2hlY2tfZW5hYmxldXNlcnNpdGUoKQogICAga25vd25fcGF0aHMgPSBhZGR1c2Vyc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKQogICAga25vd25fcGF0aHMgPSBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpCiAgICBzZXRxdWl0KCkKICAgIHNldGNvcHlyaWdodCgpCiAgICBzZXRoZWxwZXIoKQogICAgaWYgbm90IHN5cy5mbGFncy5pc29sYXRlZDoKICAgICAgICBlbmFibGVybGNvbXBsZXRlcigpCiAgICBleGVjc2l0ZWN1c3RvbWl6ZSgpCiAgICBpZiBFTkFCTEVfVVNFUl9TSVRFOgogICAgICAgIGV4ZWN1c2VyY3VzdG9taXplKCkKCiMgUHJldmVudCBleHRlbmRpbmcgb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKIyBzaXRlIGlzIGltcG9ydGVkIGxhdGVyLgppZiBub3Qgc3lzLmZsYWdzLm5vX3NpdGU6CiAgICBtYWluKCkKCmRlZiBfc2NyaXB0KCk6CiAgICBoZWxwID0gIiIiXAogICAgJXMgWy0tdXNlci1iYXNlXSBbLS11c2VyLXNpdGVdCgogICAgV2l0aG91dCBhcmd1bWVudHMgcHJpbnQgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KICAgIFdpdGggYXJndW1lbnRzIHByaW50IHRoZSB2YWx1ZSBvZiBVU0VSX0JBU0UgYW5kL29yIFVTRVJfU0lURSBzZXBhcmF0ZWQKICAgIGJ5ICclcycuCgogICAgRXhpdCBjb2RlcyB3aXRoIC0tdXNlci1iYXNlIG9yIC0tdXNlci1zaXRlOgogICAgICAwIC0gdXNlciBzaXRlIGRpcmVjdG9yeSBpcyBlbmFibGVkCiAgICAgIDEgLSB1c2VyIHNpdGUgZGlyZWN0b3J5IGlzIGRpc2FibGVkIGJ5IHVzZXIKICAgICAgMiAtIHVzZXIgc2l0ZSBkaXJlY3RvcnkgaXMgZGlzYWJsZWQgYnkgc3VwZXIgdXNlcgogICAgICAgICAgb3IgZm9yIHNlY3VyaXR5IHJlYXNvbnMKICAgICA+MiAtIHVua25vd24gZXJyb3IKICAgICIiIgogICAgYXJncyA9IHN5cy5hcmd2WzE6XQogICAgaWYgbm90IGFyZ3M6CiAgICAgICAgdXNlcl9iYXNlID0gZ2V0dXNlcmJhc2UoKQogICAgICAgIHVzZXJfc2l0ZSA9IGdldHVzZXJzaXRlcGFja2FnZXMoKQogICAgICAgIHByaW50KCJzeXMucGF0aCA9IFsiKQogICAgICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CiAgICAgICAgICAgIHByaW50KCIgICAgJXIsIiAlIChkaXIsKSkKICAgICAgICBwcmludCgiXSIpCiAgICAgICAgZGVmIGV4aXN0cyhwYXRoKToKICAgICAgICAgICAgaWYgcGF0aCBpcyBub3QgTm9uZSBhbmQgb3MucGF0aC5pc2RpcihwYXRoKToKICAgICAgICAgICAgICAgIHJldHVybiAiZXhpc3RzIgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuICJkb2Vzbid0IGV4aXN0IgogICAgICAgIHByaW50KGYiVVNFUl9CQVNFOiB7dXNlcl9iYXNlIXJ9ICh7ZXhpc3RzKHVzZXJfYmFzZSl9KSIpCiAgICAgICAgcHJpbnQoZiJVU0VSX1NJVEU6IHt1c2VyX3NpdGUhcn0gKHtleGlzdHModXNlcl9zaXRlKX0pIikKICAgICAgICBwcmludChmIkVOQUJMRV9VU0VSX1NJVEU6IHtFTkFCTEVfVVNFUl9TSVRFIXJ9IikKICAgICAgICBzeXMuZXhpdCgwKQoKICAgIGJ1ZmZlciA9IFtdCiAgICBpZiAnLS11c2VyLWJhc2UnIGluIGFyZ3M6CiAgICAgICAgYnVmZmVyLmFwcGVuZChVU0VSX0JBU0UpCiAgICBpZiAnLS11c2VyLXNpdGUnIGluIGFyZ3M6CiAgICAgICAgYnVmZmVyLmFwcGVuZChVU0VSX1NJVEUpCgogICAgaWYgYnVmZmVyOgogICAgICAgIHByaW50KG9zLnBhdGhzZXAuam9pbihidWZmZXIpKQogICAgICAgIGlmIEVOQUJMRV9VU0VSX1NJVEU6CiAgICAgICAgICAgIHN5cy5leGl0KDApCiAgICAgICAgZWxpZiBFTkFCTEVfVVNFUl9TSVRFIGlzIEZhbHNlOgogICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgIGVsaWYgRU5BQkxFX1VTRVJfU0lURSBpcyBOb25lOgogICAgICAgICAgICBzeXMuZXhpdCgyKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN5cy5leGl0KDMpCiAgICBlbHNlOgogICAgICAgIGltcG9ydCB0ZXh0d3JhcAogICAgICAgIHByaW50KHRleHR3cmFwLmRlZGVudChoZWxwICUgKHN5cy5hcmd2WzBdLCBvcy5wYXRoc2VwKSkpCiAgICAgICAgc3lzLmV4aXQoMTApCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgX3NjcmlwdCgpClBLAwQUAAAAAAACIKNW38F1orp5AAC6eQAACAAAAHNtdHBkLnB5IyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIiIiQW4gUkZDIDUzMjEgc210cCBwcm94eSB3aXRoIG9wdGlvbmFsIFJGQyAxODcwIGFuZCBSRkMgNjUzMSBleHRlbnNpb25zLgoKVXNhZ2U6ICUocHJvZ3JhbSlzIFtvcHRpb25zXSBbbG9jYWxob3N0OmxvY2FscG9ydCBbcmVtb3RlaG9zdDpyZW1vdGVwb3J0XV0KCk9wdGlvbnM6CgogICAgLS1ub3NldHVpZAogICAgLW4KICAgICAgICBUaGlzIHByb2dyYW0gZ2VuZXJhbGx5IHRyaWVzIHRvIHNldHVpZCBgbm9ib2R5JywgdW5sZXNzIHRoaXMgZmxhZyBpcwogICAgICAgIHNldC4gIFRoZSBzZXR1aWQgY2FsbCB3aWxsIGZhaWwgaWYgdGhpcyBwcm9ncmFtIGlzIG5vdCBydW4gYXMgcm9vdCAoaW4KICAgICAgICB3aGljaCBjYXNlLCB1c2UgdGhpcyBmbGFnKS4KCiAgICAtLXZlcnNpb24KICAgIC1WCiAgICAgICAgUHJpbnQgdGhlIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0LgoKICAgIC0tY2xhc3MgY2xhc3NuYW1lCiAgICAtYyBjbGFzc25hbWUKICAgICAgICBVc2UgYGNsYXNzbmFtZScgYXMgdGhlIGNvbmNyZXRlIFNNVFAgcHJveHkgY2xhc3MuICBVc2VzIGBQdXJlUHJveHknIGJ5CiAgICAgICAgZGVmYXVsdC4KCiAgICAtLXNpemUgbGltaXQKICAgIC1zIGxpbWl0CiAgICAgICAgUmVzdHJpY3QgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGluY29taW5nIG1lc3NhZ2UgdG8gImxpbWl0IiBudW1iZXIgb2YKICAgICAgICBieXRlcyB2aWEgdGhlIFJGQyAxODcwIFNJWkUgZXh0ZW5zaW9uLiAgRGVmYXVsdHMgdG8gMzM1NTQ0MzIgYnl0ZXMuCgogICAgLS1zbXRwdXRmOAogICAgLXUKICAgICAgICBFbmFibGUgdGhlIFNNVFBVVEY4IGV4dGVuc2lvbiBhbmQgYmVoYXZlIGFzIGFuIFJGQyA2NTMxIHNtdHAgcHJveHkuCgogICAgLS1kZWJ1ZwogICAgLWQKICAgICAgICBUdXJuIG9uIGRlYnVnZ2luZyBwcmludHMuCgogICAgLS1oZWxwCiAgICAtaAogICAgICAgIFByaW50IHRoaXMgbWVzc2FnZSBhbmQgZXhpdC4KClZlcnNpb246ICUoX192ZXJzaW9uX18pcwoKSWYgbG9jYWxob3N0IGlzIG5vdCBnaXZlbiB0aGVuIGBsb2NhbGhvc3QnIGlzIHVzZWQsIGFuZCBpZiBsb2NhbHBvcnQgaXMgbm90CmdpdmVuIHRoZW4gODAyNSBpcyB1c2VkLiAgSWYgcmVtb3RlaG9zdCBpcyBub3QgZ2l2ZW4gdGhlbiBgbG9jYWxob3N0JyBpcyB1c2VkLAphbmQgaWYgcmVtb3RlcG9ydCBpcyBub3QgZ2l2ZW4sIHRoZW4gMjUgaXMgdXNlZC4KIiIiCgojIE92ZXJ2aWV3OgojCiMgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIG1pbmltYWwgU01UUCBwcm90b2NvbCBhcyBkZWZpbmVkIGluIFJGQyA1MzIxLiAgSXQKIyBoYXMgYSBoaWVyYXJjaHkgb2YgY2xhc3NlcyB3aGljaCBpbXBsZW1lbnQgdGhlIGJhY2tlbmQgZnVuY3Rpb25hbGl0eSBmb3IgdGhlCiMgc210cGQuICBBIG51bWJlciBvZiBjbGFzc2VzIGFyZSBwcm92aWRlZDoKIwojICAgU01UUFNlcnZlciAtIHRoZSBiYXNlIGNsYXNzIGZvciB0aGUgYmFja2VuZC4gIFJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yCiMgICBpZiB5b3UgdHJ5IHRvIHVzZSBpdC4KIwojICAgRGVidWdnaW5nU2VydmVyIC0gc2ltcGx5IHByaW50cyBlYWNoIG1lc3NhZ2UgaXQgcmVjZWl2ZXMgb24gc3Rkb3V0LgojCiMgICBQdXJlUHJveHkgLSBQcm94aWVzIGFsbCBtZXNzYWdlcyB0byBhIHJlYWwgc210cGQgd2hpY2ggZG9lcyBmaW5hbAojICAgZGVsaXZlcnkuICBPbmUga25vd24gcHJvYmxlbSB3aXRoIHRoaXMgY2xhc3MgaXMgdGhhdCBpdCBkb2Vzbid0IGhhbmRsZQojICAgU01UUCBlcnJvcnMgZnJvbSB0aGUgYmFja2VuZCBzZXJ2ZXIgYXQgYWxsLiAgVGhpcyBzaG91bGQgYmUgZml4ZWQKIyAgIChjb250cmlidXRpb25zIGFyZSB3ZWxjb21lISkuCiMKIwojIEF1dGhvcjogQmFycnkgV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPgojCiMgVE9ETzoKIwojIC0gc3VwcG9ydCBtYWlsYm94IGRlbGl2ZXJ5CiMgLSBhbGlhcyBmaWxlcwojIC0gSGFuZGxlIG1vcmUgRVNNVFAgZXh0ZW5zaW9ucwojIC0gaGFuZGxlIGVycm9yIGNvZGVzIGZyb20gdGhlIGJhY2tlbmQgc210cGQKCmltcG9ydCBzeXMKaW1wb3J0IG9zCmltcG9ydCBlcnJubwppbXBvcnQgZ2V0b3B0CmltcG9ydCB0aW1lCmltcG9ydCBzb2NrZXQKaW1wb3J0IGNvbGxlY3Rpb25zCmZyb20gd2FybmluZ3MgaW1wb3J0IF9kZXByZWNhdGVkLCB3YXJuCmZyb20gZW1haWwuX2hlYWRlcl92YWx1ZV9wYXJzZXIgaW1wb3J0IGdldF9hZGRyX3NwZWMsIGdldF9hbmdsZV9hZGRyCgpfX2FsbF9fID0gWwogICAgIlNNVFBDaGFubmVsIiwgIlNNVFBTZXJ2ZXIiLCAiRGVidWdnaW5nU2VydmVyIiwgIlB1cmVQcm94eSIsCl0KCl9ERVBSRUNBVElPTl9NU0cgPSAoJ1RoZSB7bmFtZX0gbW9kdWxlIGlzIGRlcHJlY2F0ZWQgYW5kIHVubWFpbnRhaW5lZCBhbmQgd2lsbCAnCiAgICAgICAgICAgICAgICAgICAgJ2JlIHJlbW92ZWQgaW4gUHl0aG9uIHtyZW1vdmV9LiAgUGxlYXNlIHNlZSBhaW9zbXRwZCAnCiAgICAgICAgICAgICAgICAgICAgJyhodHRwczovL2Fpb3NtdHBkLnJlYWR0aGVkb2NzLmlvLykgZm9yIHRoZSByZWNvbW1lbmRlZCAnCiAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VtZW50LicpCl9kZXByZWNhdGVkKF9fbmFtZV9fLCBfREVQUkVDQVRJT05fTVNHLCByZW1vdmU9KDMsIDEyKSkKCgojIFRoZXNlIGFyZSBpbXBvcnRlZCBhZnRlciB0aGUgYWJvdmUgd2FybmluZyBzbyB0aGF0IHVzZXJzIGdldCB0aGUgY29ycmVjdAojIGRlcHJlY2F0aW9uIHdhcm5pbmcuCmltcG9ydCBhc3luY29yZQppbXBvcnQgYXN5bmNoYXQKCgpwcm9ncmFtID0gc3lzLmFyZ3ZbMF0KX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjMnCgoKY2xhc3MgRGV2bnVsbDoKICAgIGRlZiB3cml0ZShzZWxmLCBtc2cpOiBwYXNzCiAgICBkZWYgZmx1c2goc2VsZik6IHBhc3MKCgpERUJVR1NUUkVBTSA9IERldm51bGwoKQpORVdMSU5FID0gJ1xuJwpDT01NQVNQQUNFID0gJywgJwpEQVRBX1NJWkVfREVGQVVMVCA9IDMzNTU0NDMyCgoKZGVmIHVzYWdlKGNvZGUsIG1zZz0nJyk6CiAgICBwcmludChfX2RvY19fICUgZ2xvYmFscygpLCBmaWxlPXN5cy5zdGRlcnIpCiAgICBpZiBtc2c6CiAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCiAgICBzeXMuZXhpdChjb2RlKQoKCmNsYXNzIFNNVFBDaGFubmVsKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgogICAgQ09NTUFORCA9IDAKICAgIERBVEEgPSAxCgogICAgY29tbWFuZF9zaXplX2xpbWl0ID0gNTEyCiAgICBjb21tYW5kX3NpemVfbGltaXRzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhIHg9Y29tbWFuZF9zaXplX2xpbWl0OiB4KQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1heF9jb21tYW5kX3NpemVfbGltaXQoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gbWF4KHNlbGYuY29tbWFuZF9zaXplX2xpbWl0cy52YWx1ZXMoKSkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULAogICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKToKICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4sIG1hcD1tYXApCiAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHNlcnZlcgogICAgICAgIHNlbGYuY29ubiA9IGNvbm4KICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCiAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAogICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKICAgICAgICBpZiBlbmFibGVfU01UUFVURjggYW5kIGRlY29kZV9kYXRhOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQogICAgICAgIGlmIGRlY29kZV9kYXRhOgogICAgICAgICAgICBzZWxmLl9lbXB0eXN0cmluZyA9ICcnCiAgICAgICAgICAgIHNlbGYuX2xpbmVzZXAgPSAnXHJcbicKICAgICAgICAgICAgc2VsZi5fZG90c2VwID0gJy4nCiAgICAgICAgICAgIHNlbGYuX25ld2xpbmUgPSBORVdMSU5FCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fZW1wdHlzdHJpbmcgPSBiJycKICAgICAgICAgICAgc2VsZi5fbGluZXNlcCA9IGInXHJcbicKICAgICAgICAgICAgc2VsZi5fZG90c2VwID0gb3JkKGInLicpCiAgICAgICAgICAgIHNlbGYuX25ld2xpbmUgPSBiJ1xuJwogICAgICAgIHNlbGYuX3NldF9yc2V0X3N0YXRlKCkKICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSAnJwogICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCiAgICAgICAgc2VsZi5jb21tYW5kX3NpemVfbGltaXRzLmNsZWFyKCkKICAgICAgICBzZWxmLmZxZG4gPSBzb2NrZXQuZ2V0ZnFkbigpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnBlZXIgPSBjb25uLmdldHBlZXJuYW1lKCkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICMgYSByYWNlIGNvbmRpdGlvbiAgbWF5IG9jY3VyIGlmIHRoZSBvdGhlciBlbmQgaXMgY2xvc2luZwogICAgICAgICAgICAjIGJlZm9yZSB3ZSBjYW4gZ2V0IHRoZSBwZWVybmFtZQogICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVOT1RDT05OOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgcHJpbnQoJ1BlZXI6JywgcmVwcihzZWxmLnBlZXIpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgIHNlbGYucHVzaCgnMjIwICVzICVzJyAlIChzZWxmLmZxZG4sIF9fdmVyc2lvbl9fKSkKCiAgICBkZWYgX3NldF9wb3N0X2RhdGFfc3RhdGUoc2VsZik6CiAgICAgICAgIiIiUmVzZXQgc3RhdGUgdmFyaWFibGVzIHRvIHRoZWlyIHBvc3QtREFUQSBzdGF0ZS4iIiIKICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQogICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCiAgICAgICAgc2VsZi5yZXF1aXJlX1NNVFBVVEY4ID0gRmFsc2UKICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCgogICAgZGVmIF9zZXRfcnNldF9zdGF0ZShzZWxmKToKICAgICAgICAiIiJSZXNldCBhbGwgc3RhdGUgdmFyaWFibGVzIGV4Y2VwdCB0aGUgZ3JlZXRpbmcuIiIiCiAgICAgICAgc2VsZi5fc2V0X3Bvc3RfZGF0YV9zdGF0ZSgpCiAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gJycKICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KCgogICAgIyBwcm9wZXJ0aWVzIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eQogICAgQHByb3BlcnR5CiAgICBkZWYgX19zZXJ2ZXIoc2VsZik6CiAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fc2VydmVyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJ1c2UgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgIHJldHVybiBzZWxmLnNtdHBfc2VydmVyCiAgICBAX19zZXJ2ZXIuc2V0dGVyCiAgICBkZWYgX19zZXJ2ZXIoc2VsZiwgdmFsdWUpOgogICAgICAgIHdhcm4oIlNldHRpbmcgX19zZXJ2ZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgInNldCAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHZhbHVlCgogICAgQHByb3BlcnR5CiAgICBkZWYgX19saW5lKHNlbGYpOgogICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2xpbmUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgInVzZSAncmVjZWl2ZWRfbGluZXMnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgcmV0dXJuIHNlbGYucmVjZWl2ZWRfbGluZXMKICAgIEBfX2xpbmUuc2V0dGVyCiAgICBkZWYgX19saW5lKHNlbGYsIHZhbHVlKToKICAgICAgICB3YXJuKCJTZXR0aW5nIF9fbGluZSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgogICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gdmFsdWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfX3N0YXRlKHNlbGYpOgogICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3N0YXRlIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJ1c2UgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgcmV0dXJuIHNlbGYuc210cF9zdGF0ZQogICAgQF9fc3RhdGUuc2V0dGVyCiAgICBkZWYgX19zdGF0ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgd2FybigiU2V0dGluZyBfX3N0YXRlIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJzZXQgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gdmFsdWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfX2dyZWV0aW5nKHNlbGYpOgogICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2dyZWV0aW5nIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJ1c2UgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgcmV0dXJuIHNlbGYuc2Vlbl9ncmVldGluZwogICAgQF9fZ3JlZXRpbmcuc2V0dGVyCiAgICBkZWYgX19ncmVldGluZyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgd2FybigiU2V0dGluZyBfX2dyZWV0aW5nIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJzZXQgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gdmFsdWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfX21haWxmcm9tKHNlbGYpOgogICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX21haWxmcm9tIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJ1c2UgJ21haWxmcm9tJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgIHJldHVybiBzZWxmLm1haWxmcm9tCiAgICBAX19tYWlsZnJvbS5zZXR0ZXIKICAgIGRlZiBfX21haWxmcm9tKHNlbGYsIHZhbHVlKToKICAgICAgICB3YXJuKCJTZXR0aW5nIF9fbWFpbGZyb20gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgInNldCAnbWFpbGZyb20nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgc2VsZi5tYWlsZnJvbSA9IHZhbHVlCgogICAgQHByb3BlcnR5CiAgICBkZWYgX19yY3B0dG9zKHNlbGYpOgogICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3JjcHR0b3MgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgInVzZSAncmNwdHRvcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICByZXR1cm4gc2VsZi5yY3B0dG9zCiAgICBAX19yY3B0dG9zLnNldHRlcgogICAgZGVmIF9fcmNwdHRvcyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgd2FybigiU2V0dGluZyBfX3JjcHR0b3MgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgInNldCAncmNwdHRvcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICBzZWxmLnJjcHR0b3MgPSB2YWx1ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9fZGF0YShzZWxmKToKICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19kYXRhIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgcmV0dXJuIHNlbGYucmVjZWl2ZWRfZGF0YQogICAgQF9fZGF0YS5zZXR0ZXIKICAgIGRlZiBfX2RhdGEoc2VsZiwgdmFsdWUpOgogICAgICAgIHdhcm4oIlNldHRpbmcgX19kYXRhIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJzZXQgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gdmFsdWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfX2ZxZG4oc2VsZik6CiAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fZnFkbiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgogICAgICAgICAgICAidXNlICdmcWRuJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgIHJldHVybiBzZWxmLmZxZG4KICAgIEBfX2ZxZG4uc2V0dGVyCiAgICBkZWYgX19mcWRuKHNlbGYsIHZhbHVlKToKICAgICAgICB3YXJuKCJTZXR0aW5nIF9fZnFkbiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgogICAgICAgICAgICAic2V0ICdmcWRuJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgIHNlbGYuZnFkbiA9IHZhbHVlCgogICAgQHByb3BlcnR5CiAgICBkZWYgX19wZWVyKHNlbGYpOgogICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3BlZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgInVzZSAncGVlcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICByZXR1cm4gc2VsZi5wZWVyCiAgICBAX19wZWVyLnNldHRlcgogICAgZGVmIF9fcGVlcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgd2FybigiU2V0dGluZyBfX3BlZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgInNldCAncGVlcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICBzZWxmLnBlZXIgPSB2YWx1ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9fY29ubihzZWxmKToKICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19jb25uIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJ1c2UgJ2Nvbm4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgcmV0dXJuIHNlbGYuY29ubgogICAgQF9fY29ubi5zZXR0ZXIKICAgIGRlZiBfX2Nvbm4oc2VsZiwgdmFsdWUpOgogICAgICAgIHdhcm4oIlNldHRpbmcgX19jb25uIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJzZXQgJ2Nvbm4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgc2VsZi5jb25uID0gdmFsdWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfX2FkZHIoc2VsZik6CiAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fYWRkciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgogICAgICAgICAgICAidXNlICdhZGRyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgIHJldHVybiBzZWxmLmFkZHIKICAgIEBfX2FkZHIuc2V0dGVyCiAgICBkZWYgX19hZGRyKHNlbGYsIHZhbHVlKToKICAgICAgICB3YXJuKCJTZXR0aW5nIF9fYWRkciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgogICAgICAgICAgICAic2V0ICdhZGRyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgIHNlbGYuYWRkciA9IHZhbHVlCgogICAgIyBPdmVycmlkZXMgYmFzZSBjbGFzcyBmb3IgY29udmVuaWVuY2UuCiAgICBkZWYgcHVzaChzZWxmLCBtc2cpOgogICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQucHVzaChzZWxmLCBieXRlcygKICAgICAgICAgICAgbXNnICsgJ1xyXG4nLCAndXRmLTgnIGlmIHNlbGYucmVxdWlyZV9TTVRQVVRGOCBlbHNlICdhc2NpaScpKQoKICAgICMgSW1wbGVtZW50YXRpb24gb2YgYmFzZSBjbGFzcyBhYnN0cmFjdCBtZXRob2QKICAgIGRlZiBjb2xsZWN0X2luY29taW5nX2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgbGltaXQgPSBOb25lCiAgICAgICAgaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuQ09NTUFORDoKICAgICAgICAgICAgbGltaXQgPSBzZWxmLm1heF9jb21tYW5kX3NpemVfbGltaXQKICAgICAgICBlbGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkRBVEE6CiAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5kYXRhX3NpemVfbGltaXQKICAgICAgICBpZiBsaW1pdCBhbmQgc2VsZi5udW1fYnl0ZXMgPiBsaW1pdDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZWxpZiBsaW1pdDoKICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgKz0gbGVuKGRhdGEpCiAgICAgICAgaWYgc2VsZi5fZGVjb2RlX2RhdGE6CiAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMuYXBwZW5kKHN0cihkYXRhLCAndXRmLTgnKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChkYXRhKQoKICAgICMgSW1wbGVtZW50YXRpb24gb2YgYmFzZSBjbGFzcyBhYnN0cmFjdCBtZXRob2QKICAgIGRlZiBmb3VuZF90ZXJtaW5hdG9yKHNlbGYpOgogICAgICAgIGxpbmUgPSBzZWxmLl9lbXB0eXN0cmluZy5qb2luKHNlbGYucmVjZWl2ZWRfbGluZXMpCiAgICAgICAgcHJpbnQoJ0RhdGE6JywgcmVwcihsaW5lKSwgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KICAgICAgICBpZiBzZWxmLnNtdHBfc3RhdGUgPT0gc2VsZi5DT01NQU5EOgogICAgICAgICAgICBzeiwgc2VsZi5udW1fYnl0ZXMgPSBzZWxmLm51bV9ieXRlcywgMAogICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBiYWQgc3ludGF4JykKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fZGVjb2RlX2RhdGE6CiAgICAgICAgICAgICAgICBsaW5lID0gc3RyKGxpbmUsICd1dGYtOCcpCiAgICAgICAgICAgIGkgPSBsaW5lLmZpbmQoJyAnKQogICAgICAgICAgICBpZiBpIDwgMDoKICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBsaW5lLnVwcGVyKCkKICAgICAgICAgICAgICAgIGFyZyA9IE5vbmUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBsaW5lWzppXS51cHBlcigpCiAgICAgICAgICAgICAgICBhcmcgPSBsaW5lW2krMTpdLnN0cmlwKCkKICAgICAgICAgICAgbWF4X3N6ID0gKHNlbGYuY29tbWFuZF9zaXplX2xpbWl0c1tjb21tYW5kXQogICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHAgZWxzZSBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdCkKICAgICAgICAgICAgaWYgc3ogPiBtYXhfc3o6CiAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZycpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLCAnc210cF8nICsgY29tbWFuZCwgTm9uZSkKICAgICAgICAgICAgaWYgbm90IG1ldGhvZDoKICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBjb21tYW5kICIlcyIgbm90IHJlY29nbml6ZWQnICUgY29tbWFuZCkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBtZXRob2QoYXJnKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzZWxmLnNtdHBfc3RhdGUgIT0gc2VsZi5EQVRBOgogICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc0NTEgSW50ZXJuYWwgY29uZnVzaW9uJykKICAgICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0IGFuZCBzZWxmLm51bV9ieXRlcyA+IHNlbGYuZGF0YV9zaXplX2xpbWl0OgogICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YScpCiAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAjIFJlbW92ZSBleHRyYW5lb3VzIGNhcnJpYWdlIHJldHVybnMgYW5kIGRlLXRyYW5zcGFyZW5jeSBhY2NvcmRpbmcKICAgICAgICAgICAgIyB0byBSRkMgNTMyMSwgU2VjdGlvbiA0LjUuMi4KICAgICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgICAgIGZvciB0ZXh0IGluIGxpbmUuc3BsaXQoc2VsZi5fbGluZXNlcCk6CiAgICAgICAgICAgICAgICBpZiB0ZXh0IGFuZCB0ZXh0WzBdID09IHNlbGYuX2RvdHNlcDoKICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCh0ZXh0WzE6XSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQodGV4dCkKICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gc2VsZi5fbmV3bGluZS5qb2luKGRhdGEpCiAgICAgICAgICAgIGFyZ3MgPSAoc2VsZi5wZWVyLCBzZWxmLm1haWxmcm9tLCBzZWxmLnJjcHR0b3MsIHNlbGYucmVjZWl2ZWRfZGF0YSkKICAgICAgICAgICAga3dhcmdzID0ge30KICAgICAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgogICAgICAgICAgICAgICAga3dhcmdzID0gewogICAgICAgICAgICAgICAgICAgICdtYWlsX29wdGlvbnMnOiBzZWxmLm1haWxfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAncmNwdF9vcHRpb25zJzogc2VsZi5yY3B0X29wdGlvbnMsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXR1cyA9IHNlbGYuc210cF9zZXJ2ZXIucHJvY2Vzc19tZXNzYWdlKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgc2VsZi5fc2V0X3Bvc3RfZGF0YV9zdGF0ZSgpCiAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3RhdHVzKQoKICAgICMgU01UUCBhbmQgRVNNVFAgY29tbWFuZHMKICAgIGRlZiBzbXRwX0hFTE8oc2VsZiwgYXJnKToKICAgICAgICBpZiBub3QgYXJnOgogICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IEhFTE8gaG9zdG5hbWUnKQogICAgICAgICAgICByZXR1cm4KICAgICAgICAjIFNlZSBpc3N1ZSAjMjE3ODMgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGlzIGJlaGF2aW9yLgogICAgICAgIGlmIHNlbGYuc2Vlbl9ncmVldGluZzoKICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX3NldF9yc2V0X3N0YXRlKCkKICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKICAgICAgICBzZWxmLnB1c2goJzI1MCAlcycgJSBzZWxmLmZxZG4pCgogICAgZGVmIHNtdHBfRUhMTyhzZWxmLCBhcmcpOgogICAgICAgIGlmIG5vdCBhcmc6CiAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogRUhMTyBob3N0bmFtZScpCiAgICAgICAgICAgIHJldHVybgogICAgICAgICMgU2VlIGlzc3VlICMyMTc4MyBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoaXMgYmVoYXZpb3IuCiAgICAgICAgaWYgc2VsZi5zZWVuX2dyZWV0aW5nOgogICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPJykKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fc2V0X3JzZXRfc3RhdGUoKQogICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZwogICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IFRydWUKICAgICAgICBzZWxmLnB1c2goJzI1MC0lcycgJSBzZWxmLmZxZG4pCiAgICAgICAgaWYgc2VsZi5kYXRhX3NpemVfbGltaXQ6CiAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNJWkUgJXMnICUgc2VsZi5kYXRhX3NpemVfbGltaXQpCiAgICAgICAgICAgIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0c1snTUFJTCddICs9IDI2CiAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgogICAgICAgICAgICBzZWxmLnB1c2goJzI1MC04QklUTUlNRScpCiAgICAgICAgaWYgc2VsZi5lbmFibGVfU01UUFVURjg6CiAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNNVFBVVEY4JykKICAgICAgICAgICAgc2VsZi5jb21tYW5kX3NpemVfbGltaXRzWydNQUlMJ10gKz0gMTAKICAgICAgICBzZWxmLnB1c2goJzI1MCBIRUxQJykKCiAgICBkZWYgc210cF9OT09QKHNlbGYsIGFyZyk6CiAgICAgICAgaWYgYXJnOgogICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IE5PT1AnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKCiAgICBkZWYgc210cF9RVUlUKHNlbGYsIGFyZyk6CiAgICAgICAgIyBhcmdzIGlzIGlnbm9yZWQKICAgICAgICBzZWxmLnB1c2goJzIyMSBCeWUnKQogICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKCiAgICBkZWYgX3N0cmlwX2NvbW1hbmRfa2V5d29yZChzZWxmLCBrZXl3b3JkLCBhcmcpOgogICAgICAgIGtleWxlbiA9IGxlbihrZXl3b3JkKQogICAgICAgIGlmIGFyZ1s6a2V5bGVuXS51cHBlcigpID09IGtleXdvcmQ6CiAgICAgICAgICAgIHJldHVybiBhcmdba2V5bGVuOl0uc3RyaXAoKQogICAgICAgIHJldHVybiAnJwoKICAgIGRlZiBfZ2V0YWRkcihzZWxmLCBhcmcpOgogICAgICAgIGlmIG5vdCBhcmc6CiAgICAgICAgICAgIHJldHVybiAnJywgJycKICAgICAgICBpZiBhcmcubHN0cmlwKCkuc3RhcnRzd2l0aCgnPCcpOgogICAgICAgICAgICBhZGRyZXNzLCByZXN0ID0gZ2V0X2FuZ2xlX2FkZHIoYXJnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGFkZHJlc3MsIHJlc3QgPSBnZXRfYWRkcl9zcGVjKGFyZykKICAgICAgICBpZiBub3QgYWRkcmVzczoKICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3MsIHJlc3QKICAgICAgICByZXR1cm4gYWRkcmVzcy5hZGRyX3NwZWMsIHJlc3QKCiAgICBkZWYgX2dldHBhcmFtcyhzZWxmLCBwYXJhbXMpOgogICAgICAgICMgUmV0dXJuIHBhcmFtcyBhcyBkaWN0aW9uYXJ5LiBSZXR1cm4gTm9uZSBpZiBub3QgYWxsIHBhcmFtZXRlcnMKICAgICAgICAjIGFwcGVhciB0byBiZSBzeW50YWN0aWNhbGx5IHZhbGlkIGFjY29yZGluZyB0byBSRkMgMTg2OS4KICAgICAgICByZXN1bHQgPSB7fQogICAgICAgIGZvciBwYXJhbSBpbiBwYXJhbXM6CiAgICAgICAgICAgIHBhcmFtLCBlcSwgdmFsdWUgPSBwYXJhbS5wYXJ0aXRpb24oJz0nKQogICAgICAgICAgICBpZiBub3QgcGFyYW0uaXNhbG51bSgpIG9yIGVxIGFuZCBub3QgdmFsdWU6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICByZXN1bHRbcGFyYW1dID0gdmFsdWUgaWYgZXEgZWxzZSBUcnVlCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBzbXRwX0hFTFAoc2VsZiwgYXJnKToKICAgICAgICBpZiBhcmc6CiAgICAgICAgICAgIGV4dGVuZGVkID0gJyBbU1AgPG1haWwtcGFyYW1ldGVycz5dJwogICAgICAgICAgICBsY19hcmcgPSBhcmcudXBwZXIoKQogICAgICAgICAgICBpZiBsY19hcmcgPT0gJ0VITE8nOgogICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBFSExPIGhvc3RuYW1lJykKICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ0hFTE8nOgogICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBIRUxPIGhvc3RuYW1lJykKICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ01BSUwnOgogICAgICAgICAgICAgICAgbXNnID0gJzI1MCBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+JwogICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgogICAgICAgICAgICAgICAgICAgIG1zZyArPSBleHRlbmRlZAogICAgICAgICAgICAgICAgc2VsZi5wdXNoKG1zZykKICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1JDUFQnOgogICAgICAgICAgICAgICAgbXNnID0gJzI1MCBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPicKICAgICAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKICAgICAgICAgICAgICAgICAgICBtc2cgKz0gZXh0ZW5kZWQKICAgICAgICAgICAgICAgIHNlbGYucHVzaChtc2cpCiAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdEQVRBJzoKICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogREFUQScpCiAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdSU0VUJzoKICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogUlNFVCcpCiAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdOT09QJzoKICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogTk9PUCcpCiAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdRVUlUJzoKICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogUVVJVCcpCiAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdWUkZZJzoKICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogVlJGWSA8YWRkcmVzcz4nKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCBSQ1BUICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMIFJDUFQgREFUQSAnCiAgICAgICAgICAgICAgICAgICAgICAnUlNFVCBOT09QIFFVSVQgVlJGWScpCgogICAgZGVmIHNtdHBfVlJGWShzZWxmLCBhcmcpOgogICAgICAgIGlmIGFyZzoKICAgICAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCiAgICAgICAgICAgIGlmIGFkZHJlc3M6CiAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MiBDYW5ub3QgVlJGWSB1c2VyLCBidXQgd2lsbCBhY2NlcHQgbWVzc2FnZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCBhdHRlbXB0IGRlbGl2ZXJ5JykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAyIENvdWxkIG5vdCBWUkZZICVzJyAlIGFyZykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IFZSRlkgPGFkZHJlc3M+JykKCiAgICBkZWYgc210cF9NQUlMKHNlbGYsIGFyZyk6CiAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHByaW50KCc9PT0+IE1BSUwnLCBhcmcsIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgc3ludGF4ZXJyID0gJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+JwogICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKICAgICAgICAgICAgc3ludGF4ZXJyICs9ICcgW1NQIDxtYWlsLXBhcmFtZXRlcnM+XScKICAgICAgICBpZiBhcmcgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgYXJnID0gc2VsZi5fc3RyaXBfY29tbWFuZF9rZXl3b3JkKCdGUk9NOicsIGFyZykKICAgICAgICBhZGRyZXNzLCBwYXJhbXMgPSBzZWxmLl9nZXRhZGRyKGFyZykKICAgICAgICBpZiBub3QgYWRkcmVzczoKICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbm90IHNlbGYuZXh0ZW5kZWRfc210cCBhbmQgcGFyYW1zOgogICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBzZWxmLm1haWxmcm9tOgogICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVzdGVkIE1BSUwgY29tbWFuZCcpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYubWFpbF9vcHRpb25zID0gcGFyYW1zLnVwcGVyKCkuc3BsaXQoKQogICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhzZWxmLm1haWxfb3B0aW9ucykKICAgICAgICBpZiBwYXJhbXMgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgogICAgICAgICAgICBib2R5ID0gcGFyYW1zLnBvcCgnQk9EWScsICc3QklUJykKICAgICAgICAgICAgaWYgYm9keSBub3QgaW4gWyc3QklUJywgJzhCSVRNSU1FJ106CiAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBFcnJvcjogQk9EWSBjYW4gb25seSBiZSBvbmUgb2YgN0JJVCwgOEJJVE1JTUUnKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgc2VsZi5lbmFibGVfU01UUFVURjg6CiAgICAgICAgICAgIHNtdHB1dGY4ID0gcGFyYW1zLnBvcCgnU01UUFVURjgnLCBGYWxzZSkKICAgICAgICAgICAgaWYgc210cHV0ZjggaXMgVHJ1ZToKICAgICAgICAgICAgICAgIHNlbGYucmVxdWlyZV9TTVRQVVRGOCA9IFRydWUKICAgICAgICAgICAgZWxpZiBzbXRwdXRmOCBpcyBub3QgRmFsc2U6CiAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBFcnJvcjogU01UUFVURjggdGFrZXMgbm8gYXJndW1lbnRzJykKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIHNpemUgPSBwYXJhbXMucG9wKCdTSVpFJywgTm9uZSkKICAgICAgICBpZiBzaXplOgogICAgICAgICAgICBpZiBub3Qgc2l6ZS5pc2RpZ2l0KCk6CiAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGVsaWYgc2VsZi5kYXRhX3NpemVfbGltaXQgYW5kIGludChzaXplKSA+IHNlbGYuZGF0YV9zaXplX2xpbWl0OgogICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTIgRXJyb3I6IG1lc3NhZ2Ugc2l6ZSBleGNlZWRzIGZpeGVkIG1heGltdW0gbWVzc2FnZSBzaXplJykKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIGxlbihwYXJhbXMua2V5cygpKSA+IDA6CiAgICAgICAgICAgIHNlbGYucHVzaCgnNTU1IE1BSUwgRlJPTSBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYubWFpbGZyb20gPSBhZGRyZXNzCiAgICAgICAgcHJpbnQoJ3NlbmRlcjonLCBzZWxmLm1haWxmcm9tLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKCiAgICBkZWYgc210cF9SQ1BUKHNlbGYsIGFyZyk6CiAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpOwogICAgICAgICAgICByZXR1cm4KICAgICAgICBwcmludCgnPT09PiBSQ1BUJywgYXJnLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgIGlmIG5vdCBzZWxmLm1haWxmcm9tOgogICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVlZCBNQUlMIGNvbW1hbmQnKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBzeW50YXhlcnIgPSAnNTAxIFN5bnRheDogUkNQVCBUTzogPGFkZHJlc3M+JwogICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKICAgICAgICAgICAgc3ludGF4ZXJyICs9ICcgW1NQIDxtYWlsLXBhcmFtZXRlcnM+XScKICAgICAgICBpZiBhcmcgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgYXJnID0gc2VsZi5fc3RyaXBfY29tbWFuZF9rZXl3b3JkKCdUTzonLCBhcmcpCiAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCiAgICAgICAgaWYgbm90IGFkZHJlc3M6CiAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIG5vdCBzZWxmLmV4dGVuZGVkX3NtdHAgYW5kIHBhcmFtczoKICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5yY3B0X29wdGlvbnMgPSBwYXJhbXMudXBwZXIoKS5zcGxpdCgpCiAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHNlbGYucmNwdF9vcHRpb25zKQogICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgogICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQogICAgICAgICAgICByZXR1cm4KICAgICAgICAjIFhYWCBjdXJyZW50bHkgdGhlcmUgYXJlIG5vIG9wdGlvbnMgd2UgcmVjb2duaXplLgogICAgICAgIGlmIGxlbihwYXJhbXMua2V5cygpKSA+IDA6CiAgICAgICAgICAgIHNlbGYucHVzaCgnNTU1IFJDUFQgVE8gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWQnKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLnJjcHR0b3MuYXBwZW5kKGFkZHJlc3MpCiAgICAgICAgcHJpbnQoJ3JlY2lwczonLCBzZWxmLnJjcHR0b3MsIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQoKICAgIGRlZiBzbXRwX1JTRVQoc2VsZiwgYXJnKToKICAgICAgICBpZiBhcmc6CiAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogUlNFVCcpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX3NldF9yc2V0X3N0YXRlKCkKICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCgogICAgZGVmIHNtdHBfREFUQShzZWxmLCBhcmcpOgogICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6CiAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbm90IHNlbGYucmNwdHRvczoKICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IG5lZWQgUkNQVCBjb21tYW5kJykKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgYXJnOgogICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IERBVEEnKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkRBVEEKICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbi5cclxuJykKICAgICAgICBzZWxmLnB1c2goJzM1NCBFbmQgZGF0YSB3aXRoIDxDUj48TEY+LjxDUj48TEY+JykKCiAgICAjIENvbW1hbmRzIHRoYXQgaGF2ZSBub3QgYmVlbiBpbXBsZW1lbnRlZAogICAgZGVmIHNtdHBfRVhQTihzZWxmLCBhcmcpOgogICAgICAgIHNlbGYucHVzaCgnNTAyIEVYUE4gbm90IGltcGxlbWVudGVkJykKCgpjbGFzcyBTTVRQU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgogICAgIyBTTVRQQ2hhbm5lbCBjbGFzcyB0byB1c2UgZm9yIG1hbmFnaW5nIGNsaWVudCBjb25uZWN0aW9ucwogICAgY2hhbm5lbF9jbGFzcyA9IFNNVFBDaGFubmVsCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKICAgICAgICAgICAgICAgICBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsIG1hcD1Ob25lLAogICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpOgogICAgICAgIHNlbGYuX2xvY2FsYWRkciA9IGxvY2FsYWRkcgogICAgICAgIHNlbGYuX3JlbW90ZWFkZHIgPSByZW1vdGVhZGRyCiAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAogICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKICAgICAgICBpZiBlbmFibGVfU01UUFVURjggYW5kIGRlY29kZV9kYXRhOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQogICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgbWFwPW1hcCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGdhaV9yZXN1bHRzID0gc29ja2V0LmdldGFkZHJpbmZvKCpsb2NhbGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoZ2FpX3Jlc3VsdHNbMF1bMF0sIGdhaV9yZXN1bHRzWzBdWzFdKQogICAgICAgICAgICAjIHRyeSB0byByZS11c2UgYSBzZXJ2ZXIgcG9ydCBpZiBwb3NzaWJsZQogICAgICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKICAgICAgICAgICAgc2VsZi5iaW5kKGxvY2FsYWRkcikKICAgICAgICAgICAgc2VsZi5saXN0ZW4oNSkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICByYWlzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50KCclcyBzdGFydGVkIGF0ICVzXG5cdExvY2FsIGFkZHI6ICVzXG5cdFJlbW90ZSBhZGRyOiVzJyAlICgKICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCB0aW1lLmN0aW1lKHRpbWUudGltZSgpKSwKICAgICAgICAgICAgICAgIGxvY2FsYWRkciwgcmVtb3RlYWRkciksIGZpbGU9REVCVUdTVFJFQU0pCgogICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKICAgICAgICBwcmludCgnSW5jb21pbmcgY29ubmVjdGlvbiBmcm9tICVzJyAlIHJlcHIoYWRkciksIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEpCgogICAgIyBBUEkgZm9yICJkb2luZyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIG1lc3NhZ2UiCiAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3YXJncyk6CiAgICAgICAgIiIiT3ZlcnJpZGUgdGhpcyBhYnN0cmFjdCBtZXRob2QgdG8gaGFuZGxlIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudC4KCiAgICAgICAgcGVlciBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgKGlwYWRkciwgcG9ydCkgb2YgdGhlIGNsaWVudCB0aGF0IG1hZGUgdGhlCiAgICAgICAgc29ja2V0IGNvbm5lY3Rpb24gdG8gb3VyIHNtdHAgcG9ydC4KCiAgICAgICAgbWFpbGZyb20gaXMgdGhlIHJhdyBhZGRyZXNzIHRoZSBjbGllbnQgY2xhaW1zIHRoZSBtZXNzYWdlIGlzIGNvbWluZwogICAgICAgIGZyb20uCgogICAgICAgIHJjcHR0b3MgaXMgYSBsaXN0IG9mIHJhdyBhZGRyZXNzZXMgdGhlIGNsaWVudCB3aXNoZXMgdG8gZGVsaXZlciB0aGUKICAgICAgICBtZXNzYWdlIHRvLgoKICAgICAgICBkYXRhIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGVudGlyZSBmdWxsIHRleHQgb2YgdGhlIG1lc3NhZ2UsCiAgICAgICAgaGVhZGVycyAoaWYgc3VwcGxpZWQpIGFuZCBhbGwuICBJdCBoYXMgYmVlbiBgZGUtdHJhbnNwYXJlbmNpZWQnCiAgICAgICAgYWNjb3JkaW5nIHRvIFJGQyA4MjEsIFNlY3Rpb24gNC41LjIuICBJbiBvdGhlciB3b3JkcywgYSBsaW5lCiAgICAgICAgY29udGFpbmluZyBhIGAuJyBmb2xsb3dlZCBieSBvdGhlciB0ZXh0IGhhcyBoYWQgdGhlIGxlYWRpbmcgZG90CiAgICAgICAgcmVtb3ZlZC4KCiAgICAgICAga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBJdCBpcwogICAgICAgIGVtcHR5IGlmIGRlY29kZV9kYXRhPVRydWUgd2FzIGdpdmVuIGFzIGluaXQgcGFyYW1ldGVyLCBvdGhlcndpc2UKICAgICAgICBpdCB3aWxsIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgogICAgICAgICAgICAnbWFpbF9vcHRpb25zJzogbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIHRoZSBtYWlsIGNvbW1hbmQuICBBbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzIGFyZSB1cHBlcmNhc2Ugc3RyaW5ncy4gIEV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXS4KICAgICAgICAgICAgJ3JjcHRfb3B0aW9ucyc6IHNhbWUsIGZvciB0aGUgcmNwdCBjb21tYW5kLgoKICAgICAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gTm9uZSBmb3IgYSBub3JtYWwgYDI1MCBPaycgcmVzcG9uc2U7CiAgICAgICAgb3RoZXJ3aXNlLCBpdCBzaG91bGQgcmV0dXJuIHRoZSBkZXNpcmVkIHJlc3BvbnNlIHN0cmluZyBpbiBSRkMgODIxCiAgICAgICAgZm9ybWF0LgoKICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKY2xhc3MgRGVidWdnaW5nU2VydmVyKFNNVFBTZXJ2ZXIpOgoKICAgIGRlZiBfcHJpbnRfbWVzc2FnZV9jb250ZW50KHNlbGYsIHBlZXIsIGRhdGEpOgogICAgICAgIGluaGVhZGVycyA9IDEKICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXRsaW5lcygpCiAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgICAgICMgaGVhZGVycyBmaXJzdAogICAgICAgICAgICBpZiBpbmhlYWRlcnMgYW5kIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgcGVlcmhlYWRlciA9ICdYLVBlZXI6ICcgKyBwZWVyWzBdCiAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgogICAgICAgICAgICAgICAgICAgICMgZGVjb2RlZF9kYXRhPWZhbHNlOyBtYWtlIGhlYWRlciBtYXRjaCBvdGhlciBiaW5hcnkgb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgcGVlcmhlYWRlciA9IHJlcHIocGVlcmhlYWRlci5lbmNvZGUoJ3V0Zi04JykpCiAgICAgICAgICAgICAgICBwcmludChwZWVyaGVhZGVyKQogICAgICAgICAgICAgICAgaW5oZWFkZXJzID0gMAogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgogICAgICAgICAgICAgICAgIyBBdm9pZCBzcHVyaW91cyAnc3RyIG9uIGJ5dGVzIGluc3RhbmNlJyB3YXJuaW5nLgogICAgICAgICAgICAgICAgbGluZSA9IHJlcHIobGluZSkKICAgICAgICAgICAgcHJpbnQobGluZSkKCiAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3YXJncyk6CiAgICAgICAgcHJpbnQoJy0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0nKQogICAgICAgIGlmIGt3YXJnczoKICAgICAgICAgICAgaWYga3dhcmdzLmdldCgnbWFpbF9vcHRpb25zJyk6CiAgICAgICAgICAgICAgICBwcmludCgnbWFpbCBvcHRpb25zOiAlcycgJSBrd2FyZ3NbJ21haWxfb3B0aW9ucyddKQogICAgICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdyY3B0X29wdGlvbnMnKToKICAgICAgICAgICAgICAgIHByaW50KCdyY3B0IG9wdGlvbnM6ICVzXG4nICUga3dhcmdzWydyY3B0X29wdGlvbnMnXSkKICAgICAgICBzZWxmLl9wcmludF9tZXNzYWdlX2NvbnRlbnQocGVlciwgZGF0YSkKICAgICAgICBwcmludCgnLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLScpCgoKY2xhc3MgUHVyZVByb3h5KFNNVFBTZXJ2ZXIpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgaWYgJ2VuYWJsZV9TTVRQVVRGOCcgaW4ga3dhcmdzIGFuZCBrd2FyZ3NbJ2VuYWJsZV9TTVRQVVRGOCddOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQdXJlUHJveHkgZG9lcyBub3Qgc3VwcG9ydCBTTVRQVVRGOC4iKQogICAgICAgIHN1cGVyKFB1cmVQcm94eSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdCgnXG4nKQogICAgICAgICMgTG9vayBmb3IgdGhlIGxhc3QgaGVhZGVyCiAgICAgICAgaSA9IDAKICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpICs9IDEKICAgICAgICBsaW5lcy5pbnNlcnQoaSwgJ1gtUGVlcjogJXMnICUgcGVlclswXSkKICAgICAgICBkYXRhID0gTkVXTElORS5qb2luKGxpbmVzKQogICAgICAgIHJlZnVzZWQgPSBzZWxmLl9kZWxpdmVyKG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKQogICAgICAgICMgVEJEOiB3aGF0IHRvIGRvIHdpdGggcmVmdXNlZCBhZGRyZXNzZXM/CiAgICAgICAgcHJpbnQoJ3dlIGdvdCBzb21lIHJlZnVzYWxzOicsIHJlZnVzZWQsIGZpbGU9REVCVUdTVFJFQU0pCgogICAgZGVmIF9kZWxpdmVyKHNlbGYsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICBpbXBvcnQgc210cGxpYgogICAgICAgIHJlZnVzZWQgPSB7fQogICAgICAgIHRyeToKICAgICAgICAgICAgcyA9IHNtdHBsaWIuU01UUCgpCiAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLl9yZW1vdGVhZGRyWzBdLCBzZWxmLl9yZW1vdGVhZGRyWzFdKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZWZ1c2VkID0gcy5zZW5kbWFpbChtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHMucXVpdCgpCiAgICAgICAgZXhjZXB0IHNtdHBsaWIuU01UUFJlY2lwaWVudHNSZWZ1c2VkIGFzIGU6CiAgICAgICAgICAgIHByaW50KCdnb3QgU01UUFJlY2lwaWVudHNSZWZ1c2VkJywgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgICAgcmVmdXNlZCA9IGUucmVjaXBpZW50cwogICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgc210cGxpYi5TTVRQRXhjZXB0aW9uKSBhcyBlOgogICAgICAgICAgICBwcmludCgnZ290JywgZS5fX2NsYXNzX18sIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgICAgICMgQWxsIHJlY2lwaWVudHMgd2VyZSByZWZ1c2VkLiAgSWYgdGhlIGV4Y2VwdGlvbiBoYWQgYW4gYXNzb2NpYXRlZAogICAgICAgICAgICAjIGVycm9yIGNvZGUsIHVzZSBpdC4gIE90aGVyd2lzZSxmYWtlIGl0IHdpdGggYSBub24tdHJpZ2dlcmluZwogICAgICAgICAgICAjIGV4Y2VwdGlvbiBjb2RlLgogICAgICAgICAgICBlcnJjb2RlID0gZ2V0YXR0cihlLCAnc210cF9jb2RlJywgLTEpCiAgICAgICAgICAgIGVycm1zZyA9IGdldGF0dHIoZSwgJ3NtdHBfZXJyb3InLCAnaWdub3JlJykKICAgICAgICAgICAgZm9yIHIgaW4gcmNwdHRvczoKICAgICAgICAgICAgICAgIHJlZnVzZWRbcl0gPSAoZXJyY29kZSwgZXJybXNnKQogICAgICAgIHJldHVybiByZWZ1c2VkCgoKY2xhc3MgT3B0aW9uczoKICAgIHNldHVpZCA9IFRydWUKICAgIGNsYXNzbmFtZSA9ICdQdXJlUHJveHknCiAgICBzaXplX2xpbWl0ID0gTm9uZQogICAgZW5hYmxlX1NNVFBVVEY4ID0gRmFsc2UKCgpkZWYgcGFyc2VhcmdzKCk6CiAgICBnbG9iYWwgREVCVUdTVFJFQU0KICAgIHRyeToKICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdCgKICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdLCAnblZoYzpzOmR1JywKICAgICAgICAgICAgWydjbGFzcz0nLCAnbm9zZXR1aWQnLCAndmVyc2lvbicsICdoZWxwJywgJ3NpemU9JywgJ2RlYnVnJywKICAgICAgICAgICAgICdzbXRwdXRmOCddKQogICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBlOgogICAgICAgIHVzYWdlKDEsIGUpCgogICAgb3B0aW9ucyA9IE9wdGlvbnMoKQogICAgZm9yIG9wdCwgYXJnIGluIG9wdHM6CiAgICAgICAgaWYgb3B0IGluICgnLWgnLCAnLS1oZWxwJyk6CiAgICAgICAgICAgIHVzYWdlKDApCiAgICAgICAgZWxpZiBvcHQgaW4gKCctVicsICctLXZlcnNpb24nKToKICAgICAgICAgICAgcHJpbnQoX192ZXJzaW9uX18pCiAgICAgICAgICAgIHN5cy5leGl0KDApCiAgICAgICAgZWxpZiBvcHQgaW4gKCctbicsICctLW5vc2V0dWlkJyk6CiAgICAgICAgICAgIG9wdGlvbnMuc2V0dWlkID0gRmFsc2UKICAgICAgICBlbGlmIG9wdCBpbiAoJy1jJywgJy0tY2xhc3MnKToKICAgICAgICAgICAgb3B0aW9ucy5jbGFzc25hbWUgPSBhcmcKICAgICAgICBlbGlmIG9wdCBpbiAoJy1kJywgJy0tZGVidWcnKToKICAgICAgICAgICAgREVCVUdTVFJFQU0gPSBzeXMuc3RkZXJyCiAgICAgICAgZWxpZiBvcHQgaW4gKCctdScsICctLXNtdHB1dGY4Jyk6CiAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlX1NNVFBVVEY4ID0gVHJ1ZQogICAgICAgIGVsaWYgb3B0IGluICgnLXMnLCAnLS1zaXplJyk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGludF9zaXplID0gaW50KGFyZykKICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZV9saW1pdCA9IGludF9zaXplCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHByaW50KCdJbnZhbGlkIHNpemU6ICcgKyBhcmcsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCgogICAgIyBwYXJzZSB0aGUgcmVzdCBvZiB0aGUgYXJndW1lbnRzCiAgICBpZiBsZW4oYXJncykgPCAxOgogICAgICAgIGxvY2Fsc3BlYyA9ICdsb2NhbGhvc3Q6ODAyNScKICAgICAgICByZW1vdGVzcGVjID0gJ2xvY2FsaG9zdDoyNScKICAgIGVsaWYgbGVuKGFyZ3MpIDwgMjoKICAgICAgICBsb2NhbHNwZWMgPSBhcmdzWzBdCiAgICAgICAgcmVtb3Rlc3BlYyA9ICdsb2NhbGhvc3Q6MjUnCiAgICBlbGlmIGxlbihhcmdzKSA8IDM6CiAgICAgICAgbG9jYWxzcGVjID0gYXJnc1swXQogICAgICAgIHJlbW90ZXNwZWMgPSBhcmdzWzFdCiAgICBlbHNlOgogICAgICAgIHVzYWdlKDEsICdJbnZhbGlkIGFyZ3VtZW50czogJXMnICUgQ09NTUFTUEFDRS5qb2luKGFyZ3MpKQoKICAgICMgc3BsaXQgaW50byBob3N0L3BvcnQgcGFpcnMKICAgIGkgPSBsb2NhbHNwZWMuZmluZCgnOicpCiAgICBpZiBpIDwgMDoKICAgICAgICB1c2FnZSgxLCAnQmFkIGxvY2FsIHNwZWM6ICVzJyAlIGxvY2Fsc3BlYykKICAgIG9wdGlvbnMubG9jYWxob3N0ID0gbG9jYWxzcGVjWzppXQogICAgdHJ5OgogICAgICAgIG9wdGlvbnMubG9jYWxwb3J0ID0gaW50KGxvY2Fsc3BlY1tpKzE6XSkKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHVzYWdlKDEsICdCYWQgbG9jYWwgcG9ydDogJXMnICUgbG9jYWxzcGVjKQogICAgaSA9IHJlbW90ZXNwZWMuZmluZCgnOicpCiAgICBpZiBpIDwgMDoKICAgICAgICB1c2FnZSgxLCAnQmFkIHJlbW90ZSBzcGVjOiAlcycgJSByZW1vdGVzcGVjKQogICAgb3B0aW9ucy5yZW1vdGVob3N0ID0gcmVtb3Rlc3BlY1s6aV0KICAgIHRyeToKICAgICAgICBvcHRpb25zLnJlbW90ZXBvcnQgPSBpbnQocmVtb3Rlc3BlY1tpKzE6XSkKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHVzYWdlKDEsICdCYWQgcmVtb3RlIHBvcnQ6ICVzJyAlIHJlbW90ZXNwZWMpCiAgICByZXR1cm4gb3B0aW9ucwoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBvcHRpb25zID0gcGFyc2VhcmdzKCkKICAgICMgQmVjb21lIG5vYm9keQogICAgY2xhc3NuYW1lID0gb3B0aW9ucy5jbGFzc25hbWUKICAgIGlmICIuIiBpbiBjbGFzc25hbWU6CiAgICAgICAgbGFzdGRvdCA9IGNsYXNzbmFtZS5yZmluZCgiLiIpCiAgICAgICAgbW9kID0gX19pbXBvcnRfXyhjbGFzc25hbWVbOmxhc3Rkb3RdLCBnbG9iYWxzKCksIGxvY2FscygpLCBbIiJdKQogICAgICAgIGNsYXNzbmFtZSA9IGNsYXNzbmFtZVtsYXN0ZG90KzE6XQogICAgZWxzZToKICAgICAgICBpbXBvcnQgX19tYWluX18gYXMgbW9kCiAgICBjbGFzc18gPSBnZXRhdHRyKG1vZCwgY2xhc3NuYW1lKQogICAgcHJveHkgPSBjbGFzc18oKG9wdGlvbnMubG9jYWxob3N0LCBvcHRpb25zLmxvY2FscG9ydCksCiAgICAgICAgICAgICAgICAgICAob3B0aW9ucy5yZW1vdGVob3N0LCBvcHRpb25zLnJlbW90ZXBvcnQpLAogICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplX2xpbWl0LCBlbmFibGVfU01UUFVURjg9b3B0aW9ucy5lbmFibGVfU01UUFVURjgpCiAgICBpZiBvcHRpb25zLnNldHVpZDoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltcG9ydCBwd2QKICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgIHByaW50KCdDYW5ub3QgaW1wb3J0IG1vZHVsZSAicHdkIjsgdHJ5IHJ1bm5pbmcgd2l0aCAtbiBvcHRpb24uJywgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgIG5vYm9keSA9IHB3ZC5nZXRwd25hbSgnbm9ib2R5JylbMl0KICAgICAgICB0cnk6CiAgICAgICAgICAgIG9zLnNldHVpZChub2JvZHkpCiAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgcHJpbnQoJ0Nhbm5vdCBzZXR1aWQgIm5vYm9keSI7IHRyeSBydW5uaW5nIHdpdGggLW4gb3B0aW9uLicsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgc3lzLmV4aXQoMSkKICAgIHRyeToKICAgICAgICBhc3luY29yZS5sb29wKCkKICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICBwYXNzClBLAwQUAAAAAAACIKNWk05NzGqxAABqsQAACgAAAHNtdHBsaWIucHkjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKJycnU01UUC9FU01UUCBjbGllbnQgY2xhc3MuCgpUaGlzIHNob3VsZCBmb2xsb3cgUkZDIDgyMSAoU01UUCksIFJGQyAxODY5IChFU01UUCksIFJGQyAyNTU0IChTTVRQCkF1dGhlbnRpY2F0aW9uKSBhbmQgUkZDIDI0ODcgKFNlY3VyZSBTTVRQIG92ZXIgVExTKS4KCk5vdGVzOgoKUGxlYXNlIHJlbWVtYmVyLCB3aGVuIGRvaW5nIEVTTVRQLCB0aGF0IHRoZSBuYW1lcyBvZiB0aGUgU01UUCBzZXJ2aWNlCmV4dGVuc2lvbnMgYXJlIE5PVCB0aGUgc2FtZSB0aGluZyBhcyB0aGUgb3B0aW9uIGtleXdvcmRzIGZvciB0aGUgUkNQVAphbmQgTUFJTCBjb21tYW5kcyEKCkV4YW1wbGU6CgogID4+PiBpbXBvcnQgc210cGxpYgogID4+PiBzPXNtdHBsaWIuU01UUCgibG9jYWxob3N0IikKICA+Pj4gcHJpbnQocy5oZWxwKCkpCiAgVGhpcyBpcyBTZW5kbWFpbCB2ZXJzaW9uIDguOC40CiAgVG9waWNzOgogICAgICBIRUxPICAgIEVITE8gICAgTUFJTCAgICBSQ1BUICAgIERBVEEKICAgICAgUlNFVCAgICBOT09QICAgIFFVSVQgICAgSEVMUCAgICBWUkZZCiAgICAgIEVYUE4gICAgVkVSQiAgICBFVFJOICAgIERTTgogIEZvciBtb3JlIGluZm8gdXNlICJIRUxQIDx0b3BpYz4iLgogIFRvIHJlcG9ydCBidWdzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBzZW5kIGVtYWlsIHRvCiAgICAgIHNlbmRtYWlsLWJ1Z3NAc2VuZG1haWwub3JnLgogIEZvciBsb2NhbCBpbmZvcm1hdGlvbiBzZW5kIGVtYWlsIHRvIFBvc3RtYXN0ZXIgYXQgeW91ciBzaXRlLgogIEVuZCBvZiBIRUxQIGluZm8KICA+Pj4gcy5wdXRjbWQoInZyZnkiLCJzb21lb25lQGhlcmUiKQogID4+PiBzLmdldHJlcGx5KCkKICAoMjUwLCAiU29tZWJvZHkgT3ZlckhlcmUgPHNvbWVib2R5QGhlcmUubXkub3JnPiIpCiAgPj4+IHMucXVpdCgpCicnJwoKIyBBdXRob3I6IFRoZSBEcmFnb24gRGUgTW9uc3luZSA8ZHJhZ29uZG1AaW50ZWdyYWwub3JnPgojIEVTTVRQIHN1cHBvcnQsIHRlc3QgY29kZSBhbmQgZG9jIGZpeGVzIGFkZGVkIGJ5CiMgICAgIEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHRoeXJzdXMuY29tPgojIEJldHRlciBSRkMgODIxIGNvbXBsaWFuY2UgKE1BSUwgYW5kIFJDUFQsIGFuZCBDUkxGIGluIGRhdGEpCiMgICAgIGJ5IENhcmV5IEV2YW5zIDxjLmV2YW5zQGNsZWFyLm5ldC5uej4sIGZvciBwaWNreSBtYWlsIHNlcnZlcnMuCiMgUkZDIDI1NTQgKGF1dGhlbnRpY2F0aW9uKSBzdXBwb3J0IGJ5IEdlcmhhcmQgSGFlcmluZyA8Z2VyaGFyZEBiaWdmb290LmRlPi4KIwojIFRoaXMgd2FzIG1vZGlmaWVkIGZyb20gdGhlIFB5dGhvbiAxLjUgbGlicmFyeSBIVFRQIGxpYi4KCmltcG9ydCBzb2NrZXQKaW1wb3J0IGlvCmltcG9ydCByZQppbXBvcnQgZW1haWwudXRpbHMKaW1wb3J0IGVtYWlsLm1lc3NhZ2UKaW1wb3J0IGVtYWlsLmdlbmVyYXRvcgppbXBvcnQgYmFzZTY0CmltcG9ydCBobWFjCmltcG9ydCBjb3B5CmltcG9ydCBkYXRldGltZQppbXBvcnQgc3lzCmZyb20gZW1haWwuYmFzZTY0bWltZSBpbXBvcnQgYm9keV9lbmNvZGUgYXMgZW5jb2RlX2Jhc2U2NAoKX19hbGxfXyA9IFsiU01UUEV4Y2VwdGlvbiIsICJTTVRQTm90U3VwcG9ydGVkRXJyb3IiLCAiU01UUFNlcnZlckRpc2Nvbm5lY3RlZCIsICJTTVRQUmVzcG9uc2VFeGNlcHRpb24iLAogICAgICAgICAgICJTTVRQU2VuZGVyUmVmdXNlZCIsICJTTVRQUmVjaXBpZW50c1JlZnVzZWQiLCAiU01UUERhdGFFcnJvciIsCiAgICAgICAgICAgIlNNVFBDb25uZWN0RXJyb3IiLCAiU01UUEhlbG9FcnJvciIsICJTTVRQQXV0aGVudGljYXRpb25FcnJvciIsCiAgICAgICAgICAgInF1b3RlYWRkciIsICJxdW90ZWRhdGEiLCAiU01UUCJdCgpTTVRQX1BPUlQgPSAyNQpTTVRQX1NTTF9QT1JUID0gNDY1CkNSTEYgPSAiXHJcbiIKYkNSTEYgPSBiIlxyXG4iCl9NQVhMSU5FID0gODE5MiAjIG1vcmUgdGhhbiA4IHRpbWVzIGxhcmdlciB0aGFuIFJGQyA4MjEsIDQuNS4zCl9NQVhDSEFMTEVOR0UgPSA1ICAjIE1heGltdW0gbnVtYmVyIG9mIEFVVEggY2hhbGxlbmdlcyBzZW50CgpPTERTVFlMRV9BVVRIID0gcmUuY29tcGlsZShyImF1dGg9KC4qKSIsIHJlLkkpCgojIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCmNsYXNzIFNNVFBFeGNlcHRpb24oT1NFcnJvcik6CiAgICAiIiJCYXNlIGNsYXNzIGZvciBhbGwgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhpcyBtb2R1bGUuIiIiCgpjbGFzcyBTTVRQTm90U3VwcG9ydGVkRXJyb3IoU01UUEV4Y2VwdGlvbik6CiAgICAiIiJUaGUgY29tbWFuZCBvciBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgU01UUCBzZXJ2ZXIuCgogICAgVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHJ1biBhIGNvbW1hbmQgb3IgYQogICAgY29tbWFuZCB3aXRoIGFuIG9wdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCiAgICAiIiIKCmNsYXNzIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoU01UUEV4Y2VwdGlvbik6CiAgICAiIiJOb3QgY29ubmVjdGVkIHRvIGFueSBTTVRQIHNlcnZlci4KCiAgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiB0aGUgc2VydmVyIHVuZXhwZWN0ZWRseSBkaXNjb25uZWN0cywKICAgIG9yIHdoZW4gYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHVzZSB0aGUgU01UUCBpbnN0YW5jZSBiZWZvcmUKICAgIGNvbm5lY3RpbmcgaXQgdG8gYSBzZXJ2ZXIuCiAgICAiIiIKCmNsYXNzIFNNVFBSZXNwb25zZUV4Y2VwdGlvbihTTVRQRXhjZXB0aW9uKToKICAgICIiIkJhc2UgY2xhc3MgZm9yIGFsbCBleGNlcHRpb25zIHRoYXQgaW5jbHVkZSBhbiBTTVRQIGVycm9yIGNvZGUuCgogICAgVGhlc2UgZXhjZXB0aW9ucyBhcmUgZ2VuZXJhdGVkIGluIHNvbWUgaW5zdGFuY2VzIHdoZW4gdGhlIFNNVFAKICAgIHNlcnZlciByZXR1cm5zIGFuIGVycm9yIGNvZGUuICBUaGUgZXJyb3IgY29kZSBpcyBzdG9yZWQgaW4gdGhlCiAgICBgc210cF9jb2RlJyBhdHRyaWJ1dGUgb2YgdGhlIGVycm9yLCBhbmQgdGhlIGBzbXRwX2Vycm9yJyBhdHRyaWJ1dGUKICAgIGlzIHNldCB0byB0aGUgZXJyb3IgbWVzc2FnZS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2RlLCBtc2cpOgogICAgICAgIHNlbGYuc210cF9jb2RlID0gY29kZQogICAgICAgIHNlbGYuc210cF9lcnJvciA9IG1zZwogICAgICAgIHNlbGYuYXJncyA9IChjb2RlLCBtc2cpCgpjbGFzcyBTTVRQU2VuZGVyUmVmdXNlZChTTVRQUmVzcG9uc2VFeGNlcHRpb24pOgogICAgIiIiU2VuZGVyIGFkZHJlc3MgcmVmdXNlZC4KCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBzZXQgYnkgb24gYWxsIFNNVFBSZXNwb25zZUV4Y2VwdGlvbgogICAgZXhjZXB0aW9ucywgdGhpcyBzZXRzIGBzZW5kZXInIHRvIHRoZSBzdHJpbmcgdGhhdCB0aGUgU01UUCByZWZ1c2VkLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGUsIG1zZywgc2VuZGVyKToKICAgICAgICBzZWxmLnNtdHBfY29kZSA9IGNvZGUKICAgICAgICBzZWxmLnNtdHBfZXJyb3IgPSBtc2cKICAgICAgICBzZWxmLnNlbmRlciA9IHNlbmRlcgogICAgICAgIHNlbGYuYXJncyA9IChjb2RlLCBtc2csIHNlbmRlcikKCmNsYXNzIFNNVFBSZWNpcGllbnRzUmVmdXNlZChTTVRQRXhjZXB0aW9uKToKICAgICIiIkFsbCByZWNpcGllbnQgYWRkcmVzc2VzIHJlZnVzZWQuCgogICAgVGhlIGVycm9ycyBmb3IgZWFjaCByZWNpcGllbnQgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgYXR0cmlidXRlCiAgICAncmVjaXBpZW50cycsIHdoaWNoIGlzIGEgZGljdGlvbmFyeSBvZiBleGFjdGx5IHRoZSBzYW1lIHNvcnQgYXMKICAgIFNNVFAuc2VuZG1haWwoKSByZXR1cm5zLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlY2lwaWVudHMpOgogICAgICAgIHNlbGYucmVjaXBpZW50cyA9IHJlY2lwaWVudHMKICAgICAgICBzZWxmLmFyZ3MgPSAocmVjaXBpZW50cywpCgoKY2xhc3MgU01UUERhdGFFcnJvcihTTVRQUmVzcG9uc2VFeGNlcHRpb24pOgogICAgIiIiVGhlIFNNVFAgc2VydmVyIGRpZG4ndCBhY2NlcHQgdGhlIGRhdGEuIiIiCgpjbGFzcyBTTVRQQ29ubmVjdEVycm9yKFNNVFBSZXNwb25zZUV4Y2VwdGlvbik6CiAgICAiIiJFcnJvciBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LiIiIgoKY2xhc3MgU01UUEhlbG9FcnJvcihTTVRQUmVzcG9uc2VFeGNlcHRpb24pOgogICAgIiIiVGhlIHNlcnZlciByZWZ1c2VkIG91ciBIRUxPIHJlcGx5LiIiIgoKY2xhc3MgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IoU01UUFJlc3BvbnNlRXhjZXB0aW9uKToKICAgICIiIkF1dGhlbnRpY2F0aW9uIGVycm9yLgoKICAgIE1vc3QgcHJvYmFibHkgdGhlIHNlcnZlciBkaWRuJ3QgYWNjZXB0IHRoZSB1c2VybmFtZS9wYXNzd29yZAogICAgY29tYmluYXRpb24gcHJvdmlkZWQuCiAgICAiIiIKCmRlZiBxdW90ZWFkZHIoYWRkcnN0cmluZyk6CiAgICAiIiJRdW90ZSBhIHN1YnNldCBvZiB0aGUgZW1haWwgYWRkcmVzc2VzIGRlZmluZWQgYnkgUkZDIDgyMS4KCiAgICBTaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgYW55dGhpbmcgZW1haWwudXRpbHMucGFyc2VhZGRyIGNhbiBoYW5kbGUuCiAgICAiIiIKICAgIGRpc3BsYXluYW1lLCBhZGRyID0gZW1haWwudXRpbHMucGFyc2VhZGRyKGFkZHJzdHJpbmcpCiAgICBpZiAoZGlzcGxheW5hbWUsIGFkZHIpID09ICgnJywgJycpOgogICAgICAgICMgcGFyc2VhZGRyIGNvdWxkbid0IHBhcnNlIGl0LCB1c2UgaXQgYXMgaXMgYW5kIGhvcGUgZm9yIHRoZSBiZXN0LgogICAgICAgIGlmIGFkZHJzdHJpbmcuc3RyaXAoKS5zdGFydHN3aXRoKCc8Jyk6CiAgICAgICAgICAgIHJldHVybiBhZGRyc3RyaW5nCiAgICAgICAgcmV0dXJuICI8JXM+IiAlIGFkZHJzdHJpbmcKICAgIHJldHVybiAiPCVzPiIgJSBhZGRyCgpkZWYgX2FkZHJfb25seShhZGRyc3RyaW5nKToKICAgIGRpc3BsYXluYW1lLCBhZGRyID0gZW1haWwudXRpbHMucGFyc2VhZGRyKGFkZHJzdHJpbmcpCiAgICBpZiAoZGlzcGxheW5hbWUsIGFkZHIpID09ICgnJywgJycpOgogICAgICAgICMgcGFyc2VhZGRyIGNvdWxkbid0IHBhcnNlIGl0LCBzbyB1c2UgaXQgYXMgaXMuCiAgICAgICAgcmV0dXJuIGFkZHJzdHJpbmcKICAgIHJldHVybiBhZGRyCgojIExlZ2FjeSBtZXRob2Qga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KZGVmIHF1b3RlZGF0YShkYXRhKToKICAgICIiIlF1b3RlIGRhdGEgZm9yIGVtYWlsLgoKICAgIERvdWJsZSBsZWFkaW5nICcuJywgYW5kIGNoYW5nZSBVbml4IG5ld2xpbmUgJ1xcbicsIG9yIE1hYyAnXFxyJyBpbnRvCiAgICBpbnRlcm5ldCBDUkxGIGVuZC1vZi1saW5lLgogICAgIiIiCiAgICByZXR1cm4gcmUuc3ViKHInKD9tKV5cLicsICcuLicsCiAgICAgICAgcmUuc3ViKHInKD86XHJcbnxcbnxccig/IVxuKSknLCBDUkxGLCBkYXRhKSkKCmRlZiBfcXVvdGVfcGVyaW9kcyhiaW5kYXRhKToKICAgIHJldHVybiByZS5zdWIoYnInKD9tKV5cLicsIGInLi4nLCBiaW5kYXRhKQoKZGVmIF9maXhfZW9scyhkYXRhKToKICAgIHJldHVybiAgcmUuc3ViKHInKD86XHJcbnxcbnxccig/IVxuKSknLCBDUkxGLCBkYXRhKQoKdHJ5OgogICAgaW1wb3J0IHNzbApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBfaGF2ZV9zc2wgPSBGYWxzZQplbHNlOgogICAgX2hhdmVfc3NsID0gVHJ1ZQoKCmNsYXNzIFNNVFA6CiAgICAiIiJUaGlzIGNsYXNzIG1hbmFnZXMgYSBjb25uZWN0aW9uIHRvIGFuIFNNVFAgb3IgRVNNVFAgc2VydmVyLgogICAgU01UUCBPYmplY3RzOgogICAgICAgIFNNVFAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKICAgICAgICAgICAgaGVsb19yZXNwCiAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBtZXNzYWdlIGdpdmVuIGJ5IHRoZSBzZXJ2ZXIgaW4gcmVzcG9uc2UgdG8gdGhlCiAgICAgICAgICAgICAgICBtb3N0IHJlY2VudCBIRUxPIGNvbW1hbmQuCgogICAgICAgICAgICBlaGxvX3Jlc3AKICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIG1lc3NhZ2UgZ2l2ZW4gYnkgdGhlIHNlcnZlciBpbiByZXNwb25zZSB0byB0aGUKICAgICAgICAgICAgICAgIG1vc3QgcmVjZW50IEVITE8gY29tbWFuZC4gVGhpcyBpcyB1c3VhbGx5IG11bHRpbGluZS4KCiAgICAgICAgICAgIGRvZXNfZXNtdHAKICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBUcnVlIHZhbHVlIF9hZnRlciB5b3UgZG8gYW4gRUhMTyBjb21tYW5kXywgaWYgdGhlCiAgICAgICAgICAgICAgICBzZXJ2ZXIgc3VwcG9ydHMgRVNNVFAuCgogICAgICAgICAgICBlc210cF9mZWF0dXJlcwogICAgICAgICAgICAgICAgVGhpcyBpcyBhIGRpY3Rpb25hcnksIHdoaWNoLCBpZiB0aGUgc2VydmVyIHN1cHBvcnRzIEVTTVRQLAogICAgICAgICAgICAgICAgd2lsbCBfYWZ0ZXIgeW91IGRvIGFuIEVITE8gY29tbWFuZF8sIGNvbnRhaW4gdGhlIG5hbWVzIG9mIHRoZQogICAgICAgICAgICAgICAgU01UUCBzZXJ2aWNlIGV4dGVuc2lvbnMgdGhpcyBzZXJ2ZXIgc3VwcG9ydHMsIGFuZCB0aGVpcgogICAgICAgICAgICAgICAgcGFyYW1ldGVycyAoaWYgYW55KS4KCiAgICAgICAgICAgICAgICBOb3RlLCBhbGwgZXh0ZW5zaW9uIG5hbWVzIGFyZSBtYXBwZWQgdG8gbG93ZXIgY2FzZSBpbiB0aGUKICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkuCgogICAgICAgIFNlZSBlYWNoIG1ldGhvZCdzIGRvY3N0cmluZ3MgZm9yIGRldGFpbHMuICBJbiBnZW5lcmFsLCB0aGVyZSBpcyBhCiAgICAgICAgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWUgdG8gcGVyZm9ybSBlYWNoIFNNVFAgY29tbWFuZC4gIFRoZXJlIGlzIGFsc28gYQogICAgICAgIG1ldGhvZCBjYWxsZWQgJ3NlbmRtYWlsJyB0aGF0IHdpbGwgZG8gYW4gZW50aXJlIG1haWwgdHJhbnNhY3Rpb24uCiAgICAgICAgIiIiCiAgICBkZWJ1Z2xldmVsID0gMAoKICAgIHNvY2sgPSBOb25lCiAgICBmaWxlID0gTm9uZQogICAgaGVsb19yZXNwID0gTm9uZQogICAgZWhsb19tc2cgPSAiZWhsbyIKICAgIGVobG9fcmVzcCA9IE5vbmUKICAgIGRvZXNfZXNtdHAgPSBGYWxzZQogICAgZGVmYXVsdF9wb3J0ID0gU01UUF9QT1JUCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAiIiJJbml0aWFsaXplIGEgbmV3IGluc3RhbmNlLgoKICAgICAgICBJZiBzcGVjaWZpZWQsIGBob3N0YCBpcyB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgdG8gd2hpY2ggdG8KICAgICAgICBjb25uZWN0LiAgSWYgc3BlY2lmaWVkLCBgcG9ydGAgc3BlY2lmaWVzIHRoZSBwb3J0IHRvIHdoaWNoIHRvIGNvbm5lY3QuCiAgICAgICAgQnkgZGVmYXVsdCwgc210cGxpYi5TTVRQX1BPUlQgaXMgdXNlZC4gIElmIGEgaG9zdCBpcyBzcGVjaWZpZWQgdGhlCiAgICAgICAgY29ubmVjdCBtZXRob2QgaXMgY2FsbGVkLCBhbmQgaWYgaXQgcmV0dXJucyBhbnl0aGluZyBvdGhlciB0aGFuIGEKICAgICAgICBzdWNjZXNzIGNvZGUgYW4gU01UUENvbm5lY3RFcnJvciBpcyByYWlzZWQuICBJZiBzcGVjaWZpZWQsCiAgICAgICAgYGxvY2FsX2hvc3RuYW1lYCBpcyB1c2VkIGFzIHRoZSBGUUROIG9mIHRoZSBsb2NhbCBob3N0IGluIHRoZSBIRUxPL0VITE8KICAgICAgICBjb21tYW5kLiAgT3RoZXJ3aXNlLCB0aGUgbG9jYWwgaG9zdG5hbWUgaXMgZm91bmQgdXNpbmcKICAgICAgICBzb2NrZXQuZ2V0ZnFkbigpLiBUaGUgYHNvdXJjZV9hZGRyZXNzYCBwYXJhbWV0ZXIgdGFrZXMgYSAyLXR1cGxlIChob3N0LAogICAgICAgIHBvcnQpIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZQogICAgICAgIGNvbm5lY3RpbmcuIElmIHRoZSBob3N0IGlzICcnIGFuZCBwb3J0IGlzIDAsIHRoZSBPUyBkZWZhdWx0IGJlaGF2aW9yCiAgICAgICAgd2lsbCBiZSB1c2VkLgoKICAgICAgICAiIiIKICAgICAgICBzZWxmLl9ob3N0ID0gaG9zdAogICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICBzZWxmLmVzbXRwX2ZlYXR1cmVzID0ge30KICAgICAgICBzZWxmLmNvbW1hbmRfZW5jb2RpbmcgPSAnYXNjaWknCiAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcyA9IHNvdXJjZV9hZGRyZXNzCiAgICAgICAgc2VsZi5fYXV0aF9jaGFsbGVuZ2VfY291bnQgPSAwCgogICAgICAgIGlmIGhvc3Q6CiAgICAgICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5jb25uZWN0KGhvc3QsIHBvcnQpCiAgICAgICAgICAgIGlmIGNvZGUgIT0gMjIwOgogICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICByYWlzZSBTTVRQQ29ubmVjdEVycm9yKGNvZGUsIG1zZykKICAgICAgICBpZiBsb2NhbF9ob3N0bmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5sb2NhbF9ob3N0bmFtZSA9IGxvY2FsX2hvc3RuYW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBSRkMgMjgyMSBzYXlzIHdlIHNob3VsZCB1c2UgdGhlIGZxZG4gaW4gdGhlIEVITE8vSEVMTyB2ZXJiLCBhbmQKICAgICAgICAgICAgIyBpZiB0aGF0IGNhbid0IGJlIGNhbGN1bGF0ZWQsIHRoYXQgd2Ugc2hvdWxkIHVzZSBhIGRvbWFpbiBsaXRlcmFsCiAgICAgICAgICAgICMgaW5zdGVhZCAoZXNzZW50aWFsbHkgYW4gZW5jb2RlZCBJUCBhZGRyZXNzIGxpa2UgW0EuQi5DLkRdKS4KICAgICAgICAgICAgZnFkbiA9IHNvY2tldC5nZXRmcWRuKCkKICAgICAgICAgICAgaWYgJy4nIGluIGZxZG46CiAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2hvc3RuYW1lID0gZnFkbgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBXZSBjYW4ndCBmaW5kIGFuIGZxZG4gaG9zdG5hbWUsIHNvIHVzZSBhIGRvbWFpbiBsaXRlcmFsCiAgICAgICAgICAgICAgICBhZGRyID0gJzEyNy4wLjAuMScKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBhZGRyID0gc29ja2V0LmdldGhvc3RieW5hbWUoc29ja2V0LmdldGhvc3RuYW1lKCkpCiAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmdhaWVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfaG9zdG5hbWUgPSAnWyVzXScgJSBhZGRyCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBjb2RlLCBtZXNzYWdlID0gc2VsZi5kb2NtZCgiUVVJVCIpCiAgICAgICAgICAgIGlmIGNvZGUgIT0gMjIxOgogICAgICAgICAgICAgICAgcmFpc2UgU01UUFJlc3BvbnNlRXhjZXB0aW9uKGNvZGUsIG1lc3NhZ2UpCiAgICAgICAgZXhjZXB0IFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQ6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgc2V0X2RlYnVnbGV2ZWwoc2VsZiwgZGVidWdsZXZlbCk6CiAgICAgICAgIiIiU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuCgogICAgICAgIEEgbm9uLWZhbHNlIHZhbHVlIHJlc3VsdHMgaW4gZGVidWcgbWVzc2FnZXMgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwKICAgICAgICBtZXNzYWdlcyBzZW50IHRvIGFuZCByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIuCgogICAgICAgICIiIgogICAgICAgIHNlbGYuZGVidWdsZXZlbCA9IGRlYnVnbGV2ZWwKCiAgICBkZWYgX3ByaW50X2RlYnVnKHNlbGYsICphcmdzKToKICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAxOgogICAgICAgICAgICBwcmludChkYXRldGltZS5kYXRldGltZS5ub3coKS50aW1lKCksICphcmdzLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoKmFyZ3MsIGZpbGU9c3lzLnN0ZGVycikKCiAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgIyBUaGlzIG1ha2VzIGl0IHNpbXBsZXIgZm9yIFNNVFBfU1NMIHRvIHVzZSB0aGUgU01UUCBjb25uZWN0IGNvZGUKICAgICAgICAjIGFuZCBqdXN0IGFsdGVyIHRoZSBzb2NrZXQgY29ubmVjdGlvbiBiaXQuCiAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZSBhbmQgbm90IHRpbWVvdXQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vbi1ibG9ja2luZyBzb2NrZXQgKHRpbWVvdXQ9MCkgaXMgbm90IHN1cHBvcnRlZCcpCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3Q6IHRvJywgKGhvc3QsIHBvcnQpLCBzZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKCiAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTAsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICIiIkNvbm5lY3QgdG8gYSBob3N0IG9uIGEgZ2l2ZW4gcG9ydC4KCiAgICAgICAgSWYgdGhlIGhvc3RuYW1lIGVuZHMgd2l0aCBhIGNvbG9uIChgOicpIGZvbGxvd2VkIGJ5IGEgbnVtYmVyLCBhbmQKICAgICAgICB0aGVyZSBpcyBubyBwb3J0IHNwZWNpZmllZCwgdGhhdCBzdWZmaXggd2lsbCBiZSBzdHJpcHBlZCBvZmYgYW5kIHRoZQogICAgICAgIG51bWJlciBpbnRlcnByZXRlZCBhcyB0aGUgcG9ydCBudW1iZXIgdG8gdXNlLgoKICAgICAgICBOb3RlOiBUaGlzIG1ldGhvZCBpcyBhdXRvbWF0aWNhbGx5IGludm9rZWQgYnkgX19pbml0X18sIGlmIGEgaG9zdCBpcwogICAgICAgIHNwZWNpZmllZCBkdXJpbmcgaW5zdGFudGlhdGlvbi4KCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNvdXJjZV9hZGRyZXNzOgogICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKCiAgICAgICAgaWYgbm90IHBvcnQgYW5kIChob3N0LmZpbmQoJzonKSA9PSBob3N0LnJmaW5kKCc6JykpOgogICAgICAgICAgICBpID0gaG9zdC5yZmluZCgnOicpCiAgICAgICAgICAgIGlmIGkgPj0gMDoKICAgICAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBob3N0WzppXSwgaG9zdFtpICsgMTpdCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcG9ydCA9IGludChwb3J0KQogICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigibm9ubnVtZXJpYyBwb3J0IikKICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgcG9ydCA9IHNlbGYuZGVmYXVsdF9wb3J0CiAgICAgICAgc3lzLmF1ZGl0KCJzbXRwbGliLmNvbm5lY3QiLCBzZWxmLCBob3N0LCBwb3J0KQogICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2dldF9zb2NrZXQoaG9zdCwgcG9ydCwgc2VsZi50aW1lb3V0KQogICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuZ2V0cmVwbHkoKQogICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0OicsIHJlcHIobXNnKSkKICAgICAgICByZXR1cm4gKGNvZGUsIG1zZykKCiAgICBkZWYgc2VuZChzZWxmLCBzKToKICAgICAgICAiIiJTZW5kIGBzJyB0byB0aGUgc2VydmVyLiIiIgogICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdzZW5kOicsIHJlcHIocykpCiAgICAgICAgaWYgc2VsZi5zb2NrOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CiAgICAgICAgICAgICAgICAjIHNlbmQgaXMgdXNlZCBieSB0aGUgJ2RhdGEnIGNvbW1hbmQsIHdoZXJlIGNvbW1hbmRfZW5jb2RpbmcKICAgICAgICAgICAgICAgICMgc2hvdWxkIG5vdCBiZSB1c2VkLCBidXQgJ2RhdGEnIG5lZWRzIHRvIGNvbnZlcnQgdGhlIHN0cmluZyB0bwogICAgICAgICAgICAgICAgIyBiaW5hcnkgaXRzZWxmIGFueXdheSwgc28gdGhhdCdzIG5vdCBhIHByb2JsZW0uCiAgICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoc2VsZi5jb21tYW5kX2VuY29kaW5nKQogICAgICAgICAgICBzeXMuYXVkaXQoInNtdHBsaWIuc2VuZCIsIHNlbGYsIHMpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc29jay5zZW5kYWxsKHMpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICByYWlzZSBTTVRQU2VydmVyRGlzY29ubmVjdGVkKCdTZXJ2ZXIgbm90IGNvbm5lY3RlZCcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgU01UUFNlcnZlckRpc2Nvbm5lY3RlZCgncGxlYXNlIHJ1biBjb25uZWN0KCkgZmlyc3QnKQoKICAgIGRlZiBwdXRjbWQoc2VsZiwgY21kLCBhcmdzPSIiKToKICAgICAgICAiIiJTZW5kIGEgY29tbWFuZCB0byB0aGUgc2VydmVyLiIiIgogICAgICAgIGlmIGFyZ3MgPT0gIiI6CiAgICAgICAgICAgIHMgPSBjbWQKICAgICAgICBlbHNlOgogICAgICAgICAgICBzID0gZid7Y21kfSB7YXJnc30nCiAgICAgICAgaWYgJ1xyJyBpbiBzIG9yICdcbicgaW4gczoKICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgnXG4nLCAnXFxuJykucmVwbGFjZSgnXHInLCAnXFxyJykKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgIGYnY29tbWFuZCBhbmQgYXJndW1lbnRzIGNvbnRhaW4gcHJvaGliaXRlZCBuZXdsaW5lIGNoYXJhY3RlcnM6IHtzfScKICAgICAgICAgICAgKQogICAgICAgIHNlbGYuc2VuZChmJ3tzfXtDUkxGfScpCgogICAgZGVmIGdldHJlcGx5KHNlbGYpOgogICAgICAgICIiIkdldCBhIHJlcGx5IGZyb20gdGhlIHNlcnZlci4KCiAgICAgICAgUmV0dXJucyBhIHR1cGxlIGNvbnNpc3Rpbmcgb2Y6CgogICAgICAgICAgLSBzZXJ2ZXIgcmVzcG9uc2UgY29kZSAoZS5nLiAnMjUwJywgb3Igc3VjaCwgaWYgYWxsIGdvZXMgd2VsbCkKICAgICAgICAgICAgTm90ZTogcmV0dXJucyAtMSBpZiBpdCBjYW4ndCByZWFkIHJlc3BvbnNlIGNvZGUuCgogICAgICAgICAgLSBzZXJ2ZXIgcmVzcG9uc2Ugc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gcmVzcG9uc2UgY29kZSAobXVsdGlsaW5lCiAgICAgICAgICAgIHJlc3BvbnNlcyBhcmUgY29udmVydGVkIHRvIGEgc2luZ2xlLCBtdWx0aWxpbmUgc3RyaW5nKS4KCiAgICAgICAgUmFpc2VzIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQgaWYgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4KICAgICAgICAiIiIKICAgICAgICByZXNwID0gW10KICAgICAgICBpZiBzZWxmLmZpbGUgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrLm1ha2VmaWxlKCdyYicpCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuZmlsZS5yZWFkbGluZShfTUFYTElORSArIDEpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoIkNvbm5lY3Rpb24gdW5leHBlY3RlZGx5IGNsb3NlZDogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0cihlKSkKICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoIkNvbm5lY3Rpb24gdW5leHBlY3RlZGx5IGNsb3NlZCIpCiAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygncmVwbHk6JywgcmVwcihsaW5lKSkKICAgICAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBSZXNwb25zZUV4Y2VwdGlvbig1MDAsICJMaW5lIHRvbyBsb25nLiIpCiAgICAgICAgICAgIHJlc3AuYXBwZW5kKGxpbmVbNDpdLnN0cmlwKGInIFx0XHJcbicpKQogICAgICAgICAgICBjb2RlID0gbGluZVs6M10KICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBlcnJvciBjb2RlIGlzIHN5bnRhY3RpY2FsbHkgY29ycmVjdC4KICAgICAgICAgICAgIyBEb24ndCBhdHRlbXB0IHRvIHJlYWQgYSBjb250aW51YXRpb24gbGluZSBpZiBpdCBpcyBicm9rZW4uCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGVycmNvZGUgPSBpbnQoY29kZSkKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICBlcnJjb2RlID0gLTEKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICMgQ2hlY2sgaWYgbXVsdGlsaW5lIHJlc3BvbnNlLgogICAgICAgICAgICBpZiBsaW5lWzM6NF0gIT0gYiItIjoKICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgIGVycm1zZyA9IGIiXG4iLmpvaW4ocmVzcCkKICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlYScgJSAoZXJyY29kZSwgZXJybXNnKSkKICAgICAgICByZXR1cm4gZXJyY29kZSwgZXJybXNnCgogICAgZGVmIGRvY21kKHNlbGYsIGNtZCwgYXJncz0iIik6CiAgICAgICAgIiIiU2VuZCBhIGNvbW1hbmQsIGFuZCByZXR1cm4gaXRzIHJlc3BvbnNlIGNvZGUuIiIiCiAgICAgICAgc2VsZi5wdXRjbWQoY21kLCBhcmdzKQogICAgICAgIHJldHVybiBzZWxmLmdldHJlcGx5KCkKCiAgICAjIHN0ZCBzbXRwIGNvbW1hbmRzCiAgICBkZWYgaGVsbyhzZWxmLCBuYW1lPScnKToKICAgICAgICAiIiJTTVRQICdoZWxvJyBjb21tYW5kLgogICAgICAgIEhvc3RuYW1lIHRvIHNlbmQgZm9yIHRoaXMgY29tbWFuZCBkZWZhdWx0cyB0byB0aGUgRlFETiBvZiB0aGUgbG9jYWwKICAgICAgICBob3N0LgogICAgICAgICIiIgogICAgICAgIHNlbGYucHV0Y21kKCJoZWxvIiwgbmFtZSBvciBzZWxmLmxvY2FsX2hvc3RuYW1lKQogICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgc2VsZi5oZWxvX3Jlc3AgPSBtc2cKICAgICAgICByZXR1cm4gKGNvZGUsIG1zZykKCiAgICBkZWYgZWhsbyhzZWxmLCBuYW1lPScnKToKICAgICAgICAiIiIgU01UUCAnZWhsbycgY29tbWFuZC4KICAgICAgICBIb3N0bmFtZSB0byBzZW5kIGZvciB0aGlzIGNvbW1hbmQgZGVmYXVsdHMgdG8gdGhlIEZRRE4gb2YgdGhlIGxvY2FsCiAgICAgICAgaG9zdC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmVzbXRwX2ZlYXR1cmVzID0ge30KICAgICAgICBzZWxmLnB1dGNtZChzZWxmLmVobG9fbXNnLCBuYW1lIG9yIHNlbGYubG9jYWxfaG9zdG5hbWUpCiAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAjIEFjY29yZGluZyB0byBSRkMxODY5IHNvbWUgKGJhZGx5IHdyaXR0ZW4pCiAgICAgICAgIyBNVEEncyB3aWxsIGRpc2Nvbm5lY3Qgb24gYW4gZWhsby4gVG9zcyBhbiBleGNlcHRpb24gaWYKICAgICAgICAjIHRoYXQgaGFwcGVucyAtZGRtCiAgICAgICAgaWYgY29kZSA9PSAtMSBhbmQgbGVuKG1zZykgPT0gMDoKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoIlNlcnZlciBub3QgY29ubmVjdGVkIikKICAgICAgICBzZWxmLmVobG9fcmVzcCA9IG1zZwogICAgICAgIGlmIGNvZGUgIT0gMjUwOgogICAgICAgICAgICByZXR1cm4gKGNvZGUsIG1zZykKICAgICAgICBzZWxmLmRvZXNfZXNtdHAgPSBUcnVlCiAgICAgICAgI3BhcnNlIHRoZSBlaGxvIHJlc3BvbnNlIC1kZG0KICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWxmLmVobG9fcmVzcCwgYnl0ZXMpLCByZXByKHNlbGYuZWhsb19yZXNwKQogICAgICAgIHJlc3AgPSBzZWxmLmVobG9fcmVzcC5kZWNvZGUoImxhdGluLTEiKS5zcGxpdCgnXG4nKQogICAgICAgIGRlbCByZXNwWzBdCiAgICAgICAgZm9yIGVhY2ggaW4gcmVzcDoKICAgICAgICAgICAgIyBUbyBiZSBhYmxlIHRvIGNvbW11bmljYXRlIHdpdGggYXMgbWFueSBTTVRQIHNlcnZlcnMgYXMgcG9zc2libGUsCiAgICAgICAgICAgICMgd2UgaGF2ZSB0byB0YWtlIHRoZSBvbGQtc3R5bGUgYXV0aCBhZHZlcnRpc2VtZW50IGludG8gYWNjb3VudCwKICAgICAgICAgICAgIyBiZWNhdXNlOgogICAgICAgICAgICAjIDEpIEVsc2Ugb3VyIFNNVFAgZmVhdHVyZSBwYXJzZXIgZ2V0cyBjb25mdXNlZC4KICAgICAgICAgICAgIyAyKSBUaGVyZSBhcmUgc29tZSBzZXJ2ZXJzIHRoYXQgb25seSBhZHZlcnRpc2UgdGhlIGF1dGggbWV0aG9kcyB3ZQogICAgICAgICAgICAjICAgIHN1cHBvcnQgdXNpbmcgdGhlIG9sZCBzdHlsZS4KICAgICAgICAgICAgYXV0aF9tYXRjaCA9IE9MRFNUWUxFX0FVVEgubWF0Y2goZWFjaCkKICAgICAgICAgICAgaWYgYXV0aF9tYXRjaDoKICAgICAgICAgICAgICAgICMgVGhpcyBkb2Vzbid0IHJlbW92ZSBkdXBsaWNhdGVzLCBidXQgdGhhdCdzIG5vIHByb2JsZW0KICAgICAgICAgICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXNbImF1dGgiXSA9IHNlbGYuZXNtdHBfZmVhdHVyZXMuZ2V0KCJhdXRoIiwgIiIpIFwKICAgICAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBhdXRoX21hdGNoLmdyb3VwcygwKVswXQogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICMgUkZDIDE4NjkgcmVxdWlyZXMgYSBzcGFjZSBiZXR3ZWVuIGVobG8ga2V5d29yZCBhbmQgcGFyYW1ldGVycy4KICAgICAgICAgICAgIyBJdCdzIGFjdHVhbGx5IHN0cmljdGVyLCBpbiB0aGF0IG9ubHkgc3BhY2VzIGFyZSBhbGxvd2VkIGJldHdlZW4KICAgICAgICAgICAgIyBwYXJhbWV0ZXJzLCBidXQgd2VyZSBub3QgZ29pbmcgdG8gY2hlY2sgZm9yIHRoYXQgaGVyZS4gIE5vdGUKICAgICAgICAgICAgIyB0aGF0IHRoZSBzcGFjZSBpc24ndCBwcmVzZW50IGlmIHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzLgogICAgICAgICAgICBtID0gcmUubWF0Y2gocicoP1A8ZmVhdHVyZT5bQS1aYS16MC05XVtBLVphLXowLTlcLV0qKSA/JywgZWFjaCkKICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgIGZlYXR1cmUgPSBtLmdyb3VwKCJmZWF0dXJlIikubG93ZXIoKQogICAgICAgICAgICAgICAgcGFyYW1zID0gbS5zdHJpbmdbbS5lbmQoImZlYXR1cmUiKTpdLnN0cmlwKCkKICAgICAgICAgICAgICAgIGlmIGZlYXR1cmUgPT0gImF1dGgiOgogICAgICAgICAgICAgICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXNbZmVhdHVyZV0gPSBzZWxmLmVzbXRwX2ZlYXR1cmVzLmdldChmZWF0dXJlLCAiIikgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBwYXJhbXMKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5lc210cF9mZWF0dXJlc1tmZWF0dXJlXSA9IHBhcmFtcwogICAgICAgIHJldHVybiAoY29kZSwgbXNnKQoKICAgIGRlZiBoYXNfZXh0bihzZWxmLCBvcHQpOgogICAgICAgICIiIkRvZXMgdGhlIHNlcnZlciBzdXBwb3J0IGEgZ2l2ZW4gU01UUCBzZXJ2aWNlIGV4dGVuc2lvbj8iIiIKICAgICAgICByZXR1cm4gb3B0Lmxvd2VyKCkgaW4gc2VsZi5lc210cF9mZWF0dXJlcwoKICAgIGRlZiBoZWxwKHNlbGYsIGFyZ3M9JycpOgogICAgICAgICIiIlNNVFAgJ2hlbHAnIGNvbW1hbmQuCiAgICAgICAgUmV0dXJucyBoZWxwIHRleHQgZnJvbSBzZXJ2ZXIuIiIiCiAgICAgICAgc2VsZi5wdXRjbWQoImhlbHAiLCBhcmdzKQogICAgICAgIHJldHVybiBzZWxmLmdldHJlcGx5KClbMV0KCiAgICBkZWYgcnNldChzZWxmKToKICAgICAgICAiIiJTTVRQICdyc2V0JyBjb21tYW5kIC0tIHJlc2V0cyBzZXNzaW9uLiIiIgogICAgICAgIHNlbGYuY29tbWFuZF9lbmNvZGluZyA9ICdhc2NpaScKICAgICAgICByZXR1cm4gc2VsZi5kb2NtZCgicnNldCIpCgogICAgZGVmIF9yc2V0KHNlbGYpOgogICAgICAgICIiIkludGVybmFsICdyc2V0JyBjb21tYW5kIHdoaWNoIGlnbm9yZXMgYW55IFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQgZXJyb3IuCgogICAgICAgIFVzZWQgaW50ZXJuYWxseSBpbiB0aGUgbGlicmFyeSwgc2luY2UgdGhlIHNlcnZlciBkaXNjb25uZWN0ZWQgZXJyb3IKICAgICAgICBzaG91bGQgYXBwZWFyIHRvIHRoZSBhcHBsaWNhdGlvbiB3aGVuIHRoZSAqbmV4dCogY29tbWFuZCBpcyBpc3N1ZWQsIGlmCiAgICAgICAgd2UgYXJlIGRvaW5nIGFuIGludGVybmFsICJzYWZldHkiIHJlc2V0LgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5yc2V0KCkKICAgICAgICBleGNlcHQgU01UUFNlcnZlckRpc2Nvbm5lY3RlZDoKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBub29wKHNlbGYpOgogICAgICAgICIiIlNNVFAgJ25vb3AnIGNvbW1hbmQgLS0gZG9lc24ndCBkbyBhbnl0aGluZyA6PiIiIgogICAgICAgIHJldHVybiBzZWxmLmRvY21kKCJub29wIikKCiAgICBkZWYgbWFpbChzZWxmLCBzZW5kZXIsIG9wdGlvbnM9KCkpOgogICAgICAgICIiIlNNVFAgJ21haWwnIGNvbW1hbmQgLS0gYmVnaW5zIG1haWwgeGZlciBzZXNzaW9uLgoKICAgICAgICBUaGlzIG1ldGhvZCBtYXkgcmFpc2UgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKICAgICAgICAgU01UUE5vdFN1cHBvcnRlZEVycm9yICBUaGUgb3B0aW9ucyBwYXJhbWV0ZXIgaW5jbHVkZXMgJ1NNVFBVVEY4JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCB0aGUgU01UUFVURjggZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmVyLgogICAgICAgICIiIgogICAgICAgIG9wdGlvbmxpc3QgPSAnJwogICAgICAgIGlmIG9wdGlvbnMgYW5kIHNlbGYuZG9lc19lc210cDoKICAgICAgICAgICAgaWYgYW55KHgubG93ZXIoKT09J3NtdHB1dGY4JyBmb3IgeCBpbiBvcHRpb25zKToKICAgICAgICAgICAgICAgIGlmIHNlbGYuaGFzX2V4dG4oJ3NtdHB1dGY4Jyk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kX2VuY29kaW5nID0gJ3V0Zi04JwogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBTTVRQTm90U3VwcG9ydGVkRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICdTTVRQVVRGOCBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlcicpCiAgICAgICAgICAgIG9wdGlvbmxpc3QgPSAnICcgKyAnICcuam9pbihvcHRpb25zKQogICAgICAgIHNlbGYucHV0Y21kKCJtYWlsIiwgIkZST006JXMlcyIgJSAocXVvdGVhZGRyKHNlbmRlciksIG9wdGlvbmxpc3QpKQogICAgICAgIHJldHVybiBzZWxmLmdldHJlcGx5KCkKCiAgICBkZWYgcmNwdChzZWxmLCByZWNpcCwgb3B0aW9ucz0oKSk6CiAgICAgICAgIiIiU01UUCAncmNwdCcgY29tbWFuZCAtLSBpbmRpY2F0ZXMgMSByZWNpcGllbnQgZm9yIHRoaXMgbWFpbC4iIiIKICAgICAgICBvcHRpb25saXN0ID0gJycKICAgICAgICBpZiBvcHRpb25zIGFuZCBzZWxmLmRvZXNfZXNtdHA6CiAgICAgICAgICAgIG9wdGlvbmxpc3QgPSAnICcgKyAnICcuam9pbihvcHRpb25zKQogICAgICAgIHNlbGYucHV0Y21kKCJyY3B0IiwgIlRPOiVzJXMiICUgKHF1b3RlYWRkcihyZWNpcCksIG9wdGlvbmxpc3QpKQogICAgICAgIHJldHVybiBzZWxmLmdldHJlcGx5KCkKCiAgICBkZWYgZGF0YShzZWxmLCBtc2cpOgogICAgICAgICIiIlNNVFAgJ0RBVEEnIGNvbW1hbmQgLS0gc2VuZHMgbWVzc2FnZSBkYXRhIHRvIHNlcnZlci4KCiAgICAgICAgQXV0b21hdGljYWxseSBxdW90ZXMgbGluZXMgYmVnaW5uaW5nIHdpdGggYSBwZXJpb2QgcGVyIHJmYzgyMS4KICAgICAgICBSYWlzZXMgU01UUERhdGFFcnJvciBpZiB0aGVyZSBpcyBhbiB1bmV4cGVjdGVkIHJlcGx5IHRvIHRoZQogICAgICAgIERBVEEgY29tbWFuZDsgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoaXMgbWV0aG9kIGlzIHRoZSBmaW5hbAogICAgICAgIHJlc3BvbnNlIGNvZGUgcmVjZWl2ZWQgd2hlbiB0aGUgYWxsIGRhdGEgaXMgc2VudC4gIElmIG1zZwogICAgICAgIGlzIGEgc3RyaW5nLCBsb25lICdcXHInIGFuZCAnXFxuJyBjaGFyYWN0ZXJzIGFyZSBjb252ZXJ0ZWQgdG8KICAgICAgICAnXFxyXFxuJyBjaGFyYWN0ZXJzLiAgSWYgbXNnIGlzIGJ5dGVzLCBpdCBpcyB0cmFuc21pdHRlZCBhcyBpcy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnB1dGNtZCgiZGF0YSIpCiAgICAgICAgKGNvZGUsIHJlcGwpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2RhdGE6JywgKGNvZGUsIHJlcGwpKQogICAgICAgIGlmIGNvZGUgIT0gMzU0OgogICAgICAgICAgICByYWlzZSBTTVRQRGF0YUVycm9yKGNvZGUsIHJlcGwpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtc2csIHN0cik6CiAgICAgICAgICAgICAgICBtc2cgPSBfZml4X2VvbHMobXNnKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgcSA9IF9xdW90ZV9wZXJpb2RzKG1zZykKICAgICAgICAgICAgaWYgcVstMjpdICE9IGJDUkxGOgogICAgICAgICAgICAgICAgcSA9IHEgKyBiQ1JMRgogICAgICAgICAgICBxID0gcSArIGIiLiIgKyBiQ1JMRgogICAgICAgICAgICBzZWxmLnNlbmQocSkKICAgICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdkYXRhOicsIChjb2RlLCBtc2cpKQogICAgICAgICAgICByZXR1cm4gKGNvZGUsIG1zZykKCiAgICBkZWYgdmVyaWZ5KHNlbGYsIGFkZHJlc3MpOgogICAgICAgICIiIlNNVFAgJ3ZlcmlmeScgY29tbWFuZCAtLSBjaGVja3MgZm9yIGFkZHJlc3MgdmFsaWRpdHkuIiIiCiAgICAgICAgc2VsZi5wdXRjbWQoInZyZnkiLCBfYWRkcl9vbmx5KGFkZHJlc3MpKQogICAgICAgIHJldHVybiBzZWxmLmdldHJlcGx5KCkKICAgICMgYS5rLmEuCiAgICB2cmZ5ID0gdmVyaWZ5CgogICAgZGVmIGV4cG4oc2VsZiwgYWRkcmVzcyk6CiAgICAgICAgIiIiU01UUCAnZXhwbicgY29tbWFuZCAtLSBleHBhbmRzIGEgbWFpbGluZyBsaXN0LiIiIgogICAgICAgIHNlbGYucHV0Y21kKCJleHBuIiwgX2FkZHJfb25seShhZGRyZXNzKSkKICAgICAgICByZXR1cm4gc2VsZi5nZXRyZXBseSgpCgogICAgIyBzb21lIHVzZWZ1bCBtZXRob2RzCgogICAgZGVmIGVobG9fb3JfaGVsb19pZl9uZWVkZWQoc2VsZik6CiAgICAgICAgIiIiQ2FsbCBzZWxmLmVobG8oKSBhbmQvb3Igc2VsZi5oZWxvKCkgaWYgbmVlZGVkLgoKICAgICAgICBJZiB0aGVyZSBoYXMgYmVlbiBubyBwcmV2aW91cyBFSExPIG9yIEhFTE8gY29tbWFuZCB0aGlzIHNlc3Npb24sIHRoaXMKICAgICAgICBtZXRob2QgdHJpZXMgRVNNVFAgRUhMTyBmaXJzdC4KCiAgICAgICAgVGhpcyBtZXRob2QgbWF5IHJhaXNlIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKCiAgICAgICAgIFNNVFBIZWxvRXJyb3IgICAgICAgICAgICBUaGUgc2VydmVyIGRpZG4ndCByZXBseSBwcm9wZXJseSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGhlbG8gZ3JlZXRpbmcuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5oZWxvX3Jlc3AgaXMgTm9uZSBhbmQgc2VsZi5laGxvX3Jlc3AgaXMgTm9uZToKICAgICAgICAgICAgaWYgbm90ICgyMDAgPD0gc2VsZi5laGxvKClbMF0gPD0gMjk5KToKICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuaGVsbygpCiAgICAgICAgICAgICAgICBpZiBub3QgKDIwMCA8PSBjb2RlIDw9IDI5OSk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgU01UUEhlbG9FcnJvcihjb2RlLCByZXNwKQoKICAgIGRlZiBhdXRoKHNlbGYsIG1lY2hhbmlzbSwgYXV0aG9iamVjdCwgKiwgaW5pdGlhbF9yZXNwb25zZV9vaz1UcnVlKToKICAgICAgICAiIiJBdXRoZW50aWNhdGlvbiBjb21tYW5kIC0gcmVxdWlyZXMgcmVzcG9uc2UgcHJvY2Vzc2luZy4KCiAgICAgICAgJ21lY2hhbmlzbScgc3BlY2lmaWVzIHdoaWNoIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSBpcyB0bwogICAgICAgIGJlIHVzZWQgLSB0aGUgdmFsaWQgdmFsdWVzIGFyZSB0aG9zZSBsaXN0ZWQgaW4gdGhlICdhdXRoJwogICAgICAgIGVsZW1lbnQgb2YgJ2VzbXRwX2ZlYXR1cmVzJy4KCiAgICAgICAgJ2F1dGhvYmplY3QnIG11c3QgYmUgYSBjYWxsYWJsZSBvYmplY3QgdGFraW5nIGEgc2luZ2xlIGFyZ3VtZW50OgoKICAgICAgICAgICAgICAgIGRhdGEgPSBhdXRob2JqZWN0KGNoYWxsZW5nZSkKCiAgICAgICAgSXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyB0aGUgc2VydmVyJ3MgY2hhbGxlbmdlIHJlc3BvbnNlOyB0aGUKICAgICAgICBjaGFsbGVuZ2UgYXJndW1lbnQgaXQgaXMgcGFzc2VkIHdpbGwgYmUgYSBieXRlcy4gIEl0IHNob3VsZCByZXR1cm4KICAgICAgICBhbiBBU0NJSSBzdHJpbmcgdGhhdCB3aWxsIGJlIGJhc2U2NCBlbmNvZGVkIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuCgogICAgICAgIEtleXdvcmQgYXJndW1lbnRzOgogICAgICAgICAgICAtIGluaXRpYWxfcmVzcG9uc2Vfb2s6IEFsbG93IHNlbmRpbmcgdGhlIFJGQyA0OTU0IGluaXRpYWwtcmVzcG9uc2UKICAgICAgICAgICAgICB0byB0aGUgQVVUSCBjb21tYW5kLCBpZiB0aGUgYXV0aGVudGljYXRpb24gbWV0aG9kcyBzdXBwb3J0cyBpdC4KICAgICAgICAiIiIKICAgICAgICAjIFJGQyA0OTU0IGFsbG93cyBhdXRoIG1ldGhvZHMgdG8gcHJvdmlkZSBhbiBpbml0aWFsIHJlc3BvbnNlLiAgTm90IGFsbAogICAgICAgICMgbWV0aG9kcyBzdXBwb3J0IGl0LiAgQnkgZGVmaW5pdGlvbiwgaWYgdGhleSByZXR1cm4gc29tZXRoaW5nIG90aGVyCiAgICAgICAgIyB0aGFuIE5vbmUgd2hlbiBjaGFsbGVuZ2UgaXMgTm9uZSwgdGhlbiB0aGV5IGRvLiAgU2VlIGlzc3VlICMxNTAxNC4KICAgICAgICBtZWNoYW5pc20gPSBtZWNoYW5pc20udXBwZXIoKQogICAgICAgIGluaXRpYWxfcmVzcG9uc2UgPSAoYXV0aG9iamVjdCgpIGlmIGluaXRpYWxfcmVzcG9uc2Vfb2sgZWxzZSBOb25lKQogICAgICAgIGlmIGluaXRpYWxfcmVzcG9uc2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJlc3BvbnNlID0gZW5jb2RlX2Jhc2U2NChpbml0aWFsX3Jlc3BvbnNlLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKQogICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKCJBVVRIIiwgbWVjaGFuaXNtICsgIiAiICsgcmVzcG9uc2UpCiAgICAgICAgICAgIHNlbGYuX2F1dGhfY2hhbGxlbmdlX2NvdW50ID0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoIkFVVEgiLCBtZWNoYW5pc20pCiAgICAgICAgICAgIHNlbGYuX2F1dGhfY2hhbGxlbmdlX2NvdW50ID0gMAogICAgICAgICMgSWYgc2VydmVyIHJlc3BvbmRzIHdpdGggYSBjaGFsbGVuZ2UsIHNlbmQgdGhlIHJlc3BvbnNlLgogICAgICAgIHdoaWxlIGNvZGUgPT0gMzM0OgogICAgICAgICAgICBzZWxmLl9hdXRoX2NoYWxsZW5nZV9jb3VudCArPSAxCiAgICAgICAgICAgIGNoYWxsZW5nZSA9IGJhc2U2NC5kZWNvZGVieXRlcyhyZXNwKQogICAgICAgICAgICByZXNwb25zZSA9IGVuY29kZV9iYXNlNjQoCiAgICAgICAgICAgICAgICBhdXRob2JqZWN0KGNoYWxsZW5nZSkuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpCiAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQocmVzcG9uc2UpCiAgICAgICAgICAgICMgSWYgc2VydmVyIGtlZXBzIHNlbmRpbmcgY2hhbGxlbmdlcywgc29tZXRoaW5nIGlzIHdyb25nLgogICAgICAgICAgICBpZiBzZWxmLl9hdXRoX2NoYWxsZW5nZV9jb3VudCA+IF9NQVhDSEFMTEVOR0U6CiAgICAgICAgICAgICAgICByYWlzZSBTTVRQRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJTZXJ2ZXIgQVVUSCBtZWNoYW5pc20gaW5maW5pdGUgbG9vcC4gTGFzdCByZXNwb25zZTogIgogICAgICAgICAgICAgICAgICAgICsgcmVwcigoY29kZSwgcmVzcCkpCiAgICAgICAgICAgICAgICApCiAgICAgICAgaWYgY29kZSBpbiAoMjM1LCA1MDMpOgogICAgICAgICAgICByZXR1cm4gKGNvZGUsIHJlc3ApCiAgICAgICAgcmFpc2UgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IoY29kZSwgcmVzcCkKCiAgICBkZWYgYXV0aF9jcmFtX21kNShzZWxmLCBjaGFsbGVuZ2U9Tm9uZSk6CiAgICAgICAgIiIiIEF1dGhvYmplY3QgdG8gdXNlIHdpdGggQ1JBTS1NRDUgYXV0aGVudGljYXRpb24uIFJlcXVpcmVzIHNlbGYudXNlcgogICAgICAgIGFuZCBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKICAgICAgICAjIENSQU0tTUQ1IGRvZXMgbm90IHN1cHBvcnQgaW5pdGlhbC1yZXNwb25zZS4KICAgICAgICBpZiBjaGFsbGVuZ2UgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi51c2VyICsgIiAiICsgaG1hYy5ITUFDKAogICAgICAgICAgICBzZWxmLnBhc3N3b3JkLmVuY29kZSgnYXNjaWknKSwgY2hhbGxlbmdlLCAnbWQ1JykuaGV4ZGlnZXN0KCkKCiAgICBkZWYgYXV0aF9wbGFpbihzZWxmLCBjaGFsbGVuZ2U9Tm9uZSk6CiAgICAgICAgIiIiIEF1dGhvYmplY3QgdG8gdXNlIHdpdGggUExBSU4gYXV0aGVudGljYXRpb24uIFJlcXVpcmVzIHNlbGYudXNlciBhbmQKICAgICAgICBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKICAgICAgICByZXR1cm4gIlwwJXNcMCVzIiAlIChzZWxmLnVzZXIsIHNlbGYucGFzc3dvcmQpCgogICAgZGVmIGF1dGhfbG9naW4oc2VsZiwgY2hhbGxlbmdlPU5vbmUpOgogICAgICAgICIiIiBBdXRob2JqZWN0IHRvIHVzZSB3aXRoIExPR0lOIGF1dGhlbnRpY2F0aW9uLiBSZXF1aXJlcyBzZWxmLnVzZXIgYW5kCiAgICAgICAgc2VsZi5wYXNzd29yZCB0byBiZSBzZXQuIiIiCiAgICAgICAgaWYgY2hhbGxlbmdlIGlzIE5vbmUgb3Igc2VsZi5fYXV0aF9jaGFsbGVuZ2VfY291bnQgPCAyOgogICAgICAgICAgICByZXR1cm4gc2VsZi51c2VyCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFzc3dvcmQKCiAgICBkZWYgbG9naW4oc2VsZiwgdXNlciwgcGFzc3dvcmQsICosIGluaXRpYWxfcmVzcG9uc2Vfb2s9VHJ1ZSk6CiAgICAgICAgIiIiTG9nIGluIG9uIGFuIFNNVFAgc2VydmVyIHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uCgogICAgICAgIFRoZSBhcmd1bWVudHMgYXJlOgogICAgICAgICAgICAtIHVzZXI6ICAgICAgICAgVGhlIHVzZXIgbmFtZSB0byBhdXRoZW50aWNhdGUgd2l0aC4KICAgICAgICAgICAgLSBwYXNzd29yZDogICAgIFRoZSBwYXNzd29yZCBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uLgoKICAgICAgICBLZXl3b3JkIGFyZ3VtZW50czoKICAgICAgICAgICAgLSBpbml0aWFsX3Jlc3BvbnNlX29rOiBBbGxvdyBzZW5kaW5nIHRoZSBSRkMgNDk1NCBpbml0aWFsLXJlc3BvbnNlCiAgICAgICAgICAgICAgdG8gdGhlIEFVVEggY29tbWFuZCwgaWYgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgc3VwcG9ydHMgaXQuCgogICAgICAgIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzIEVITE8gb3IgSEVMTyBjb21tYW5kIHRoaXMgc2Vzc2lvbiwgdGhpcwogICAgICAgIG1ldGhvZCB0cmllcyBFU01UUCBFSExPIGZpcnN0LgoKICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBub3JtYWxseSBpZiB0aGUgYXV0aGVudGljYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCgogICAgICAgIFRoaXMgbWV0aG9kIG1heSByYWlzZSB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CgogICAgICAgICBTTVRQSGVsb0Vycm9yICAgICAgICAgICAgVGhlIHNlcnZlciBkaWRuJ3QgcmVwbHkgcHJvcGVybHkgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBoZWxvIGdyZWV0aW5nLgogICAgICAgICBTTVRQQXV0aGVudGljYXRpb25FcnJvciAgVGhlIHNlcnZlciBkaWRuJ3QgYWNjZXB0IHRoZSB1c2VybmFtZS8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkIGNvbWJpbmF0aW9uLgogICAgICAgICBTTVRQTm90U3VwcG9ydGVkRXJyb3IgICAgVGhlIEFVVEggY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLgogICAgICAgICBTTVRQRXhjZXB0aW9uICAgICAgICAgICAgTm8gc3VpdGFibGUgYXV0aGVudGljYXRpb24gbWV0aG9kIHdhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQuCiAgICAgICAgIiIiCgogICAgICAgIHNlbGYuZWhsb19vcl9oZWxvX2lmX25lZWRlZCgpCiAgICAgICAgaWYgbm90IHNlbGYuaGFzX2V4dG4oImF1dGgiKToKICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAogICAgICAgICAgICAgICAgIlNNVFAgQVVUSCBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuIikKCiAgICAgICAgIyBBdXRoZW50aWNhdGlvbiBtZXRob2RzIHRoZSBzZXJ2ZXIgY2xhaW1zIHRvIHN1cHBvcnQKICAgICAgICBhZHZlcnRpc2VkX2F1dGhsaXN0ID0gc2VsZi5lc210cF9mZWF0dXJlc1siYXV0aCJdLnNwbGl0KCkKCiAgICAgICAgIyBBdXRoZW50aWNhdGlvbiBtZXRob2RzIHdlIGNhbiBoYW5kbGUgaW4gb3VyIHByZWZlcnJlZCBvcmRlcjoKICAgICAgICBwcmVmZXJyZWRfYXV0aHMgPSBbJ0NSQU0tTUQ1JywgJ1BMQUlOJywgJ0xPR0lOJ10KCiAgICAgICAgIyBXZSB0cnkgdGhlIHN1cHBvcnRlZCBhdXRoZW50aWNhdGlvbnMgaW4gb3VyIHByZWZlcnJlZCBvcmRlciwgaWYKICAgICAgICAjIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgdGhlbS4KICAgICAgICBhdXRobGlzdCA9IFthdXRoIGZvciBhdXRoIGluIHByZWZlcnJlZF9hdXRocwogICAgICAgICAgICAgICAgICAgIGlmIGF1dGggaW4gYWR2ZXJ0aXNlZF9hdXRobGlzdF0KICAgICAgICBpZiBub3QgYXV0aGxpc3Q6CiAgICAgICAgICAgIHJhaXNlIFNNVFBFeGNlcHRpb24oIk5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBmb3VuZC4iKQoKICAgICAgICAjIFNvbWUgc2VydmVycyBhZHZlcnRpc2UgYXV0aGVudGljYXRpb24gbWV0aG9kcyB0aGV5IGRvbid0IHJlYWxseQogICAgICAgICMgc3VwcG9ydCwgc28gaWYgYXV0aGVudGljYXRpb24gZmFpbHMsIHdlIGNvbnRpbnVlIHVudGlsIHdlJ3ZlIHRyaWVkCiAgICAgICAgIyBhbGwgbWV0aG9kcy4KICAgICAgICBzZWxmLnVzZXIsIHNlbGYucGFzc3dvcmQgPSB1c2VyLCBwYXNzd29yZAogICAgICAgIGZvciBhdXRobWV0aG9kIGluIGF1dGhsaXN0OgogICAgICAgICAgICBtZXRob2RfbmFtZSA9ICdhdXRoXycgKyBhdXRobWV0aG9kLmxvd2VyKCkucmVwbGFjZSgnLScsICdfJykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5hdXRoKAogICAgICAgICAgICAgICAgICAgIGF1dGhtZXRob2QsIGdldGF0dHIoc2VsZiwgbWV0aG9kX25hbWUpLAogICAgICAgICAgICAgICAgICAgIGluaXRpYWxfcmVzcG9uc2Vfb2s9aW5pdGlhbF9yZXNwb25zZV9vaykKICAgICAgICAgICAgICAgICMgMjM1ID09ICdBdXRoZW50aWNhdGlvbiBzdWNjZXNzZnVsJwogICAgICAgICAgICAgICAgIyA1MDMgPT0gJ0Vycm9yOiBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQnCiAgICAgICAgICAgICAgICBpZiBjb2RlIGluICgyMzUsIDUwMyk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjb2RlLCByZXNwKQogICAgICAgICAgICBleGNlcHQgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGxhc3RfZXhjZXB0aW9uID0gZQoKICAgICAgICAjIFdlIGNvdWxkIG5vdCBsb2dpbiBzdWNjZXNzZnVsbHkuICBSZXR1cm4gcmVzdWx0IG9mIGxhc3QgYXR0ZW1wdC4KICAgICAgICByYWlzZSBsYXN0X2V4Y2VwdGlvbgoKICAgIGRlZiBzdGFydHRscyhzZWxmLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgIiIiUHV0cyB0aGUgY29ubmVjdGlvbiB0byB0aGUgU01UUCBzZXJ2ZXIgaW50byBUTFMgbW9kZS4KCiAgICAgICAgSWYgdGhlcmUgaGFzIGJlZW4gbm8gcHJldmlvdXMgRUhMTyBvciBIRUxPIGNvbW1hbmQgdGhpcyBzZXNzaW9uLCB0aGlzCiAgICAgICAgbWV0aG9kIHRyaWVzIEVTTVRQIEVITE8gZmlyc3QuCgogICAgICAgIElmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgVExTLCB0aGlzIHdpbGwgZW5jcnlwdCB0aGUgcmVzdCBvZiB0aGUgU01UUAogICAgICAgIHNlc3Npb24uIElmIHlvdSBwcm92aWRlIHRoZSBrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBwYXJhbWV0ZXJzLAogICAgICAgIHRoZSBpZGVudGl0eSBvZiB0aGUgU01UUCBzZXJ2ZXIgYW5kIGNsaWVudCBjYW4gYmUgY2hlY2tlZC4gVGhpcywKICAgICAgICBob3dldmVyLCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIHNvY2tldCBtb2R1bGUgcmVhbGx5IGNoZWNrcyB0aGUKICAgICAgICBjZXJ0aWZpY2F0ZXMuCgogICAgICAgIFRoaXMgbWV0aG9kIG1heSByYWlzZSB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CgogICAgICAgICBTTVRQSGVsb0Vycm9yICAgICAgICAgICAgVGhlIHNlcnZlciBkaWRuJ3QgcmVwbHkgcHJvcGVybHkgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBoZWxvIGdyZWV0aW5nLgogICAgICAgICIiIgogICAgICAgIHNlbGYuZWhsb19vcl9oZWxvX2lmX25lZWRlZCgpCiAgICAgICAgaWYgbm90IHNlbGYuaGFzX2V4dG4oInN0YXJ0dGxzIik6CiAgICAgICAgICAgIHJhaXNlIFNNVFBOb3RTdXBwb3J0ZWRFcnJvcigKICAgICAgICAgICAgICAgICJTVEFSVFRMUyBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuIikKICAgICAgICAocmVzcCwgcmVwbHkpID0gc2VsZi5kb2NtZCgiU1RBUlRUTFMiKQogICAgICAgIGlmIHJlc3AgPT0gMjIwOgogICAgICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgogICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJObyBTU0wgc3VwcG9ydCBpbmNsdWRlZCBpbiB0aGlzIFB5dGhvbiIpCiAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBrZXlmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCiAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1rZXlmaWxlKQogICAgICAgICAgICBzZWxmLnNvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c2VsZi5faG9zdCkKICAgICAgICAgICAgc2VsZi5maWxlID0gTm9uZQogICAgICAgICAgICAjIFJGQyAzMjA3OgogICAgICAgICAgICAjIFRoZSBjbGllbnQgTVVTVCBkaXNjYXJkIGFueSBrbm93bGVkZ2Ugb2J0YWluZWQgZnJvbQogICAgICAgICAgICAjIHRoZSBzZXJ2ZXIsIHN1Y2ggYXMgdGhlIGxpc3Qgb2YgU01UUCBzZXJ2aWNlIGV4dGVuc2lvbnMsCiAgICAgICAgICAgICMgd2hpY2ggd2FzIG5vdCBvYnRhaW5lZCBmcm9tIHRoZSBUTFMgbmVnb3RpYXRpb24gaXRzZWxmLgogICAgICAgICAgICBzZWxmLmhlbG9fcmVzcCA9IE5vbmUKICAgICAgICAgICAgc2VsZi5laGxvX3Jlc3AgPSBOb25lCiAgICAgICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXMgPSB7fQogICAgICAgICAgICBzZWxmLmRvZXNfZXNtdHAgPSBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgUkZDIDMyMDc6CiAgICAgICAgICAgICMgNTAxIFN5bnRheCBlcnJvciAobm8gcGFyYW1ldGVycyBhbGxvd2VkKQogICAgICAgICAgICAjIDQ1NCBUTFMgbm90IGF2YWlsYWJsZSBkdWUgdG8gdGVtcG9yYXJ5IHJlYXNvbgogICAgICAgICAgICByYWlzZSBTTVRQUmVzcG9uc2VFeGNlcHRpb24ocmVzcCwgcmVwbHkpCiAgICAgICAgcmV0dXJuIChyZXNwLCByZXBseSkKCiAgICBkZWYgc2VuZG1haWwoc2VsZiwgZnJvbV9hZGRyLCB0b19hZGRycywgbXNnLCBtYWlsX29wdGlvbnM9KCksCiAgICAgICAgICAgICAgICAgcmNwdF9vcHRpb25zPSgpKToKICAgICAgICAiIiJUaGlzIGNvbW1hbmQgcGVyZm9ybXMgYW4gZW50aXJlIG1haWwgdHJhbnNhY3Rpb24uCgogICAgICAgIFRoZSBhcmd1bWVudHMgYXJlOgogICAgICAgICAgICAtIGZyb21fYWRkciAgICA6IFRoZSBhZGRyZXNzIHNlbmRpbmcgdGhpcyBtYWlsLgogICAgICAgICAgICAtIHRvX2FkZHJzICAgICA6IEEgbGlzdCBvZiBhZGRyZXNzZXMgdG8gc2VuZCB0aGlzIG1haWwgdG8uICBBIGJhcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgd2lsbCBiZSB0cmVhdGVkIGFzIGEgbGlzdCB3aXRoIDEgYWRkcmVzcy4KICAgICAgICAgICAgLSBtc2cgICAgICAgICAgOiBUaGUgbWVzc2FnZSB0byBzZW5kLgogICAgICAgICAgICAtIG1haWxfb3B0aW9ucyA6IExpc3Qgb2YgRVNNVFAgb3B0aW9ucyAoc3VjaCBhcyA4Yml0bWltZSkgZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWwgY29tbWFuZC4KICAgICAgICAgICAgLSByY3B0X29wdGlvbnMgOiBMaXN0IG9mIEVTTVRQIG9wdGlvbnMgKHN1Y2ggYXMgRFNOIGNvbW1hbmRzKSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIHJjcHQgY29tbWFuZHMuCgogICAgICAgIG1zZyBtYXkgYmUgYSBzdHJpbmcgY29udGFpbmluZyBjaGFyYWN0ZXJzIGluIHRoZSBBU0NJSSByYW5nZSwgb3IgYSBieXRlCiAgICAgICAgc3RyaW5nLiAgQSBzdHJpbmcgaXMgZW5jb2RlZCB0byBieXRlcyB1c2luZyB0aGUgYXNjaWkgY29kZWMsIGFuZCBsb25lCiAgICAgICAgXFxyIGFuZCBcXG4gY2hhcmFjdGVycyBhcmUgY29udmVydGVkIHRvIFxcclxcbiBjaGFyYWN0ZXJzLgoKICAgICAgICBJZiB0aGVyZSBoYXMgYmVlbiBubyBwcmV2aW91cyBFSExPIG9yIEhFTE8gY29tbWFuZCB0aGlzIHNlc3Npb24sIHRoaXMKICAgICAgICBtZXRob2QgdHJpZXMgRVNNVFAgRUhMTyBmaXJzdC4gIElmIHRoZSBzZXJ2ZXIgZG9lcyBFU01UUCwgbWVzc2FnZSBzaXplCiAgICAgICAgYW5kIGVhY2ggb2YgdGhlIHNwZWNpZmllZCBvcHRpb25zIHdpbGwgYmUgcGFzc2VkIHRvIGl0LiAgSWYgRUhMTwogICAgICAgIGZhaWxzLCBIRUxPIHdpbGwgYmUgdHJpZWQgYW5kIEVTTVRQIG9wdGlvbnMgc3VwcHJlc3NlZC4KCiAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gbm9ybWFsbHkgaWYgdGhlIG1haWwgaXMgYWNjZXB0ZWQgZm9yIGF0IGxlYXN0CiAgICAgICAgb25lIHJlY2lwaWVudC4gIEl0IHJldHVybnMgYSBkaWN0aW9uYXJ5LCB3aXRoIG9uZSBlbnRyeSBmb3IgZWFjaAogICAgICAgIHJlY2lwaWVudCB0aGF0IHdhcyByZWZ1c2VkLiAgRWFjaCBlbnRyeSBjb250YWlucyBhIHR1cGxlIG9mIHRoZSBTTVRQCiAgICAgICAgZXJyb3IgY29kZSBhbmQgdGhlIGFjY29tcGFueWluZyBlcnJvciBtZXNzYWdlIHNlbnQgYnkgdGhlIHNlcnZlci4KCiAgICAgICAgVGhpcyBtZXRob2QgbWF5IHJhaXNlIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKCiAgICAgICAgIFNNVFBIZWxvRXJyb3IgICAgICAgICAgVGhlIHNlcnZlciBkaWRuJ3QgcmVwbHkgcHJvcGVybHkgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaGVsbyBncmVldGluZy4KICAgICAgICAgU01UUFJlY2lwaWVudHNSZWZ1c2VkICBUaGUgc2VydmVyIHJlamVjdGVkIEFMTCByZWNpcGllbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vIG1haWwgd2FzIHNlbnQpLgogICAgICAgICBTTVRQU2VuZGVyUmVmdXNlZCAgICAgIFRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUgZnJvbV9hZGRyLgogICAgICAgICBTTVRQRGF0YUVycm9yICAgICAgICAgIFRoZSBzZXJ2ZXIgcmVwbGllZCB3aXRoIGFuIHVuZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBjb2RlIChvdGhlciB0aGFuIGEgcmVmdXNhbCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjaXBpZW50KS4KICAgICAgICAgU01UUE5vdFN1cHBvcnRlZEVycm9yICBUaGUgbWFpbF9vcHRpb25zIHBhcmFtZXRlciBpbmNsdWRlcyAnU01UUFVURjgnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IHRoZSBTTVRQVVRGOCBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2ZXIuCgogICAgICAgIE5vdGU6IHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCgogICAgICAgIEV4YW1wbGU6CgogICAgICAgICA+Pj4gaW1wb3J0IHNtdHBsaWIKICAgICAgICAgPj4+IHM9c210cGxpYi5TTVRQKCJsb2NhbGhvc3QiKQogICAgICAgICA+Pj4gdG9saXN0PVsib25lQG9uZS5vcmciLCJ0d29AdHdvLm9yZyIsInRocmVlQHRocmVlLm9yZyIsImZvdXJAZm91ci5vcmciXQogICAgICAgICA+Pj4gbXNnID0gJycnXFwKICAgICAgICAgLi4uIEZyb206IE1lQG15Lm9yZwogICAgICAgICAuLi4gU3ViamVjdDogdGVzdGluJy4uLgogICAgICAgICAuLi4KICAgICAgICAgLi4uIFRoaXMgaXMgYSB0ZXN0ICcnJwogICAgICAgICA+Pj4gcy5zZW5kbWFpbCgibWVAbXkub3JnIix0b2xpc3QsbXNnKQogICAgICAgICB7ICJ0aHJlZUB0aHJlZS5vcmciIDogKCA1NTAgLCJVc2VyIHVua25vd24iICkgfQogICAgICAgICA+Pj4gcy5xdWl0KCkKCiAgICAgICAgSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBtZXNzYWdlIHdhcyBhY2NlcHRlZCBmb3IgZGVsaXZlcnkgdG8gdGhyZWUKICAgICAgICBvZiB0aGUgZm91ciBhZGRyZXNzZXMsIGFuZCBvbmUgd2FzIHJlamVjdGVkLCB3aXRoIHRoZSBlcnJvciBjb2RlCiAgICAgICAgNTUwLiAgSWYgYWxsIGFkZHJlc3NlcyBhcmUgYWNjZXB0ZWQsIHRoZW4gdGhlIG1ldGhvZCB3aWxsIHJldHVybiBhbgogICAgICAgIGVtcHR5IGRpY3Rpb25hcnkuCgogICAgICAgICIiIgogICAgICAgIHNlbGYuZWhsb19vcl9oZWxvX2lmX25lZWRlZCgpCiAgICAgICAgZXNtdHBfb3B0cyA9IFtdCiAgICAgICAgaWYgaXNpbnN0YW5jZShtc2csIHN0cik6CiAgICAgICAgICAgIG1zZyA9IF9maXhfZW9scyhtc2cpLmVuY29kZSgnYXNjaWknKQogICAgICAgIGlmIHNlbGYuZG9lc19lc210cDoKICAgICAgICAgICAgaWYgc2VsZi5oYXNfZXh0bignc2l6ZScpOgogICAgICAgICAgICAgICAgZXNtdHBfb3B0cy5hcHBlbmQoInNpemU9JWQiICUgbGVuKG1zZykpCiAgICAgICAgICAgIGZvciBvcHRpb24gaW4gbWFpbF9vcHRpb25zOgogICAgICAgICAgICAgICAgZXNtdHBfb3B0cy5hcHBlbmQob3B0aW9uKQogICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYubWFpbChmcm9tX2FkZHIsIGVzbXRwX29wdHMpCiAgICAgICAgaWYgY29kZSAhPSAyNTA6CiAgICAgICAgICAgIGlmIGNvZGUgPT0gNDIxOgogICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl9yc2V0KCkKICAgICAgICAgICAgcmFpc2UgU01UUFNlbmRlclJlZnVzZWQoY29kZSwgcmVzcCwgZnJvbV9hZGRyKQogICAgICAgIHNlbmRlcnJzID0ge30KICAgICAgICBpZiBpc2luc3RhbmNlKHRvX2FkZHJzLCBzdHIpOgogICAgICAgICAgICB0b19hZGRycyA9IFt0b19hZGRyc10KICAgICAgICBmb3IgZWFjaCBpbiB0b19hZGRyczoKICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5yY3B0KGVhY2gsIHJjcHRfb3B0aW9ucykKICAgICAgICAgICAgaWYgKGNvZGUgIT0gMjUwKSBhbmQgKGNvZGUgIT0gMjUxKToKICAgICAgICAgICAgICAgIHNlbmRlcnJzW2VhY2hdID0gKGNvZGUsIHJlc3ApCiAgICAgICAgICAgIGlmIGNvZGUgPT0gNDIxOgogICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICByYWlzZSBTTVRQUmVjaXBpZW50c1JlZnVzZWQoc2VuZGVycnMpCiAgICAgICAgaWYgbGVuKHNlbmRlcnJzKSA9PSBsZW4odG9fYWRkcnMpOgogICAgICAgICAgICAjIHRoZSBzZXJ2ZXIgcmVmdXNlZCBhbGwgb3VyIHJlY2lwaWVudHMKICAgICAgICAgICAgc2VsZi5fcnNldCgpCiAgICAgICAgICAgIHJhaXNlIFNNVFBSZWNpcGllbnRzUmVmdXNlZChzZW5kZXJycykKICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRhdGEobXNnKQogICAgICAgIGlmIGNvZGUgIT0gMjUwOgogICAgICAgICAgICBpZiBjb2RlID09IDQyMToKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fcnNldCgpCiAgICAgICAgICAgIHJhaXNlIFNNVFBEYXRhRXJyb3IoY29kZSwgcmVzcCkKICAgICAgICAjaWYgd2UgZ290IGhlcmUgdGhlbiBzb21lYm9keSBnb3Qgb3VyIG1haWwKICAgICAgICByZXR1cm4gc2VuZGVycnMKCiAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIG1zZywgZnJvbV9hZGRyPU5vbmUsIHRvX2FkZHJzPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucz0oKSwgcmNwdF9vcHRpb25zPSgpKToKICAgICAgICAiIiJDb252ZXJ0cyBtZXNzYWdlIHRvIGEgYnl0ZXN0cmluZyBhbmQgcGFzc2VzIGl0IHRvIHNlbmRtYWlsLgoKICAgICAgICBUaGUgYXJndW1lbnRzIGFyZSBhcyBmb3Igc2VuZG1haWwsIGV4Y2VwdCB0aGF0IG1zZyBpcyBhbgogICAgICAgIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSBvYmplY3QuICBJZiBmcm9tX2FkZHIgaXMgTm9uZSBvciB0b19hZGRycyBpcwogICAgICAgIE5vbmUsIHRoZXNlIGFyZ3VtZW50cyBhcmUgdGFrZW4gZnJvbSB0aGUgaGVhZGVycyBvZiB0aGUgTWVzc2FnZSBhcwogICAgICAgIGRlc2NyaWJlZCBpbiBSRkMgMjgyMiAoYSBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpZiB0aGVyZSBpcyBtb3JlIHRoYW4KICAgICAgICBvbmUgc2V0IG9mICdSZXNlbnQtJyBoZWFkZXJzKS4gIFJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlcyBvZiBmcm9tX2FkZHIgYW5kCiAgICAgICAgdG9fYWRkciwgYW55IEJjYyBmaWVsZCAob3IgUmVzZW50LUJjYyBmaWVsZCwgd2hlbiB0aGUgTWVzc2FnZSBpcyBhCiAgICAgICAgcmVzZW50KSBvZiB0aGUgTWVzc2FnZSBvYmplY3Qgd29uJ3QgYmUgdHJhbnNtaXR0ZWQuICBUaGUgTWVzc2FnZQogICAgICAgIG9iamVjdCBpcyB0aGVuIHNlcmlhbGl6ZWQgdXNpbmcgZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yIGFuZAogICAgICAgIHNlbmRtYWlsIGlzIGNhbGxlZCB0byB0cmFuc21pdCB0aGUgbWVzc2FnZS4gIElmIHRoZSBzZW5kZXIgb3IgYW55IG9mCiAgICAgICAgdGhlIHJlY2lwaWVudCBhZGRyZXNzZXMgY29udGFpbiBub24tQVNDSUkgYW5kIHRoZSBzZXJ2ZXIgYWR2ZXJ0aXNlcyB0aGUKICAgICAgICBTTVRQVVRGOCBjYXBhYmlsaXR5LCB0aGUgcG9saWN5IGlzIGNsb25lZCB3aXRoIHV0Zjggc2V0IHRvIFRydWUgZm9yIHRoZQogICAgICAgIHNlcmlhbGl6YXRpb24sIGFuZCBTTVRQVVRGOCBhbmQgQk9EWT04QklUTUlNRSBhcmUgYXNzZXJ0ZWQgb24gdGhlIHNlbmQuCiAgICAgICAgSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFNNVFBVVEY4LCBhbiBTTVRQTm90U3VwcG9ydGVkIGVycm9yIGlzCiAgICAgICAgcmFpc2VkLiAgT3RoZXJ3aXNlIHRoZSBnZW5lcmF0b3IgaXMgY2FsbGVkIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZQogICAgICAgIHBvbGljeS4KCiAgICAgICAgIiIiCiAgICAgICAgIyAnUmVzZW50LURhdGUnIGlzIGEgbWFuZGF0b3J5IGZpZWxkIGlmIHRoZSBNZXNzYWdlIGlzIHJlc2VudCAoUkZDIDI4MjIKICAgICAgICAjIFNlY3Rpb24gMy42LjYpLiBJbiBzdWNoIGEgY2FzZSwgd2UgdXNlIHRoZSAnUmVzZW50LSonIGZpZWxkcy4gIEhvd2V2ZXIsCiAgICAgICAgIyBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lICdSZXNlbnQtJyBibG9jayB0aGVyZSdzIG5vIHdheSB0bwogICAgICAgICMgdW5hbWJpZ3VvdXNseSBkZXRlcm1pbmUgd2hpY2ggb25lIGlzIHRoZSBtb3N0IHJlY2VudCBpbiBhbGwgY2FzZXMsCiAgICAgICAgIyBzbyByYXRoZXIgdGhhbiBndWVzcyB3ZSByYWlzZSBhIFZhbHVlRXJyb3IgaW4gdGhhdCBjYXNlLgogICAgICAgICMKICAgICAgICAjIFRPRE8gaW1wbGVtZW50IGhldXJpc3RpY3MgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgUmVzZW50LSogYmxvY2sgd2l0aCBhbgogICAgICAgICMgb3B0aW9uIGFsbG93aW5nIHRoZSB1c2VyIHRvIGVuYWJsZSB0aGUgaGV1cmlzdGljcy4gIChJdCBzaG91bGQgYmUKICAgICAgICAjIHBvc3NpYmxlIHRvIGd1ZXNzIGNvcnJlY3RseSBhbG1vc3QgYWxsIG9mIHRoZSB0aW1lLikKCiAgICAgICAgc2VsZi5laGxvX29yX2hlbG9faWZfbmVlZGVkKCkKICAgICAgICByZXNlbnQgPSBtc2cuZ2V0X2FsbCgnUmVzZW50LURhdGUnKQogICAgICAgIGlmIHJlc2VudCBpcyBOb25lOgogICAgICAgICAgICBoZWFkZXJfcHJlZml4ID0gJycKICAgICAgICBlbGlmIGxlbihyZXNlbnQpID09IDE6CiAgICAgICAgICAgIGhlYWRlcl9wcmVmaXggPSAnUmVzZW50LScKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtZXNzYWdlIGhhcyBtb3JlIHRoYW4gb25lICdSZXNlbnQtJyBoZWFkZXIgYmxvY2siKQogICAgICAgIGlmIGZyb21fYWRkciBpcyBOb25lOgogICAgICAgICAgICAjIFByZWZlciB0aGUgc2VuZGVyIGZpZWxkIHBlciBSRkMgMjgyMjozLjYuMi4KICAgICAgICAgICAgZnJvbV9hZGRyID0gKG1zZ1toZWFkZXJfcHJlZml4ICsgJ1NlbmRlciddCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfcHJlZml4ICsgJ1NlbmRlcicpIGluIG1zZwogICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0Zyb20nXSkKICAgICAgICAgICAgZnJvbV9hZGRyID0gZW1haWwudXRpbHMuZ2V0YWRkcmVzc2VzKFtmcm9tX2FkZHJdKVswXVsxXQogICAgICAgIGlmIHRvX2FkZHJzIGlzIE5vbmU6CiAgICAgICAgICAgIGFkZHJfZmllbGRzID0gW2YgZm9yIGYgaW4gKG1zZ1toZWFkZXJfcHJlZml4ICsgJ1RvJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0JjYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdDYyddKQogICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmIGlzIG5vdCBOb25lXQogICAgICAgICAgICB0b19hZGRycyA9IFthWzFdIGZvciBhIGluIGVtYWlsLnV0aWxzLmdldGFkZHJlc3NlcyhhZGRyX2ZpZWxkcyldCiAgICAgICAgIyBNYWtlIGEgbG9jYWwgY29weSBzbyB3ZSBjYW4gZGVsZXRlIHRoZSBiY2MgaGVhZGVycy4KICAgICAgICBtc2dfY29weSA9IGNvcHkuY29weShtc2cpCiAgICAgICAgZGVsIG1zZ19jb3B5WydCY2MnXQogICAgICAgIGRlbCBtc2dfY29weVsnUmVzZW50LUJjYyddCiAgICAgICAgaW50ZXJuYXRpb25hbCA9IEZhbHNlCiAgICAgICAgdHJ5OgogICAgICAgICAgICAnJy5qb2luKFtmcm9tX2FkZHIsICp0b19hZGRyc10pLmVuY29kZSgnYXNjaWknKQogICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmhhc19leHRuKCdzbXRwdXRmOCcpOgogICAgICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAogICAgICAgICAgICAgICAgICAgICJPbmUgb3IgbW9yZSBzb3VyY2Ugb3IgZGVsaXZlcnkgYWRkcmVzc2VzIHJlcXVpcmUiCiAgICAgICAgICAgICAgICAgICAgIiBpbnRlcm5hdGlvbmFsaXplZCBlbWFpbCBzdXBwb3J0LCBidXQgdGhlIHNlcnZlciIKICAgICAgICAgICAgICAgICAgICAiIGRvZXMgbm90IGFkdmVydGlzZSB0aGUgcmVxdWlyZWQgU01UUFVURjggY2FwYWJpbGl0eSIpCiAgICAgICAgICAgIGludGVybmF0aW9uYWwgPSBUcnVlCiAgICAgICAgd2l0aCBpby5CeXRlc0lPKCkgYXMgYnl0ZXNtc2c6CiAgICAgICAgICAgIGlmIGludGVybmF0aW9uYWw6CiAgICAgICAgICAgICAgICBnID0gZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgIGJ5dGVzbXNnLCBwb2xpY3k9bXNnLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpKQogICAgICAgICAgICAgICAgbWFpbF9vcHRpb25zID0gKCptYWlsX29wdGlvbnMsICdTTVRQVVRGOCcsICdCT0RZPThCSVRNSU1FJykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoYnl0ZXNtc2cpCiAgICAgICAgICAgIGcuZmxhdHRlbihtc2dfY29weSwgbGluZXNlcD0nXHJcbicpCiAgICAgICAgICAgIGZsYXRtc2cgPSBieXRlc21zZy5nZXR2YWx1ZSgpCiAgICAgICAgcmV0dXJuIHNlbGYuc2VuZG1haWwoZnJvbV9hZGRyLCB0b19hZGRycywgZmxhdG1zZywgbWFpbF9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjcHRfb3B0aW9ucykKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiQ2xvc2UgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIFNNVFAgc2VydmVyLiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgZmlsZSA9IHNlbGYuZmlsZQogICAgICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgICAgIGlmIGZpbGU6CiAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzb2NrID0gc2VsZi5zb2NrCiAgICAgICAgICAgIHNlbGYuc29jayA9IE5vbmUKICAgICAgICAgICAgaWYgc29jazoKICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQoKICAgIGRlZiBxdWl0KHNlbGYpOgogICAgICAgICIiIlRlcm1pbmF0ZSB0aGUgU01UUCBzZXNzaW9uLiIiIgogICAgICAgIHJlcyA9IHNlbGYuZG9jbWQoInF1aXQiKQogICAgICAgICMgQSBuZXcgRUhMTyBpcyByZXF1aXJlZCBhZnRlciByZWNvbm5lY3Rpbmcgd2l0aCBjb25uZWN0KCkKICAgICAgICBzZWxmLmVobG9fcmVzcCA9IHNlbGYuaGVsb19yZXNwID0gTm9uZQogICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXMgPSB7fQogICAgICAgIHNlbGYuZG9lc19lc210cCA9IEZhbHNlCiAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgcmV0dXJuIHJlcwoKaWYgX2hhdmVfc3NsOgoKICAgIGNsYXNzIFNNVFBfU1NMKFNNVFApOgogICAgICAgICIiIiBUaGlzIGlzIGEgc3ViY2xhc3MgZGVyaXZlZCBmcm9tIFNNVFAgdGhhdCBjb25uZWN0cyBvdmVyIGFuIFNTTAogICAgICAgIGVuY3J5cHRlZCBzb2NrZXQgKHRvIHVzZSB0aGlzIGNsYXNzIHlvdSBuZWVkIGEgc29ja2V0IG1vZHVsZSB0aGF0IHdhcwogICAgICAgIGNvbXBpbGVkIHdpdGggU1NMIHN1cHBvcnQpLiBJZiBob3N0IGlzIG5vdCBzcGVjaWZpZWQsICcnICh0aGUgbG9jYWwKICAgICAgICBob3N0KSBpcyB1c2VkLiBJZiBwb3J0IGlzIG9taXR0ZWQsIHRoZSBzdGFuZGFyZCBTTVRQLW92ZXItU1NMIHBvcnQKICAgICAgICAoNDY1KSBpcyB1c2VkLiAgbG9jYWxfaG9zdG5hbWUgYW5kIHNvdXJjZV9hZGRyZXNzIGhhdmUgdGhlIHNhbWUgbWVhbmluZwogICAgICAgIGFzIHRoZXkgZG8gaW4gdGhlIFNNVFAgY2xhc3MuICBrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgYWxzbyBvcHRpb25hbCAtCiAgICAgICAgdGhleSBjYW4gY29udGFpbiBhIFBFTSBmb3JtYXR0ZWQgcHJpdmF0ZSBrZXkgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUKICAgICAgICBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLiBjb250ZXh0IGFsc28gb3B0aW9uYWwsIGNhbiBjb250YWluIGEKICAgICAgICBTU0xDb250ZXh0LCBhbmQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8ga2V5ZmlsZSBhbmQgY2VydGZpbGU7IElmIGl0IGlzCiAgICAgICAgc3BlY2lmaWVkIGJvdGgga2V5ZmlsZSBhbmQgY2VydGZpbGUgbXVzdCBiZSBOb25lLgoKICAgICAgICAiIiIKCiAgICAgICAgZGVmYXVsdF9wb3J0ID0gU01UUF9TU0xfUE9SVAoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAogICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCiAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQogICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSkKICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICBTTVRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lLCB0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzKQoKICAgICAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCAoaG9zdCwgcG9ydCkpCiAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzdXBlcigpLl9nZXRfc29ja2V0KGhvc3QsIHBvcnQsIHRpbWVvdXQpCiAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzZWxmLmNvbnRleHQud3JhcF9zb2NrZXQobmV3X3NvY2tldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c2VsZi5faG9zdCkKICAgICAgICAgICAgcmV0dXJuIG5ld19zb2NrZXQKCiAgICBfX2FsbF9fLmFwcGVuZCgiU01UUF9TU0wiKQoKIwojIExNVFAgZXh0ZW5zaW9uCiMKTE1UUF9QT1JUID0gMjAwMwoKY2xhc3MgTE1UUChTTVRQKToKICAgICIiIkxNVFAgLSBMb2NhbCBNYWlsIFRyYW5zZmVyIFByb3RvY29sCgogICAgVGhlIExNVFAgcHJvdG9jb2wsIHdoaWNoIGlzIHZlcnkgc2ltaWxhciB0byBFU01UUCwgaXMgaGVhdmlseSBiYXNlZAogICAgb24gdGhlIHN0YW5kYXJkIFNNVFAgY2xpZW50LiBJdCdzIGNvbW1vbiB0byB1c2UgVW5peCBzb2NrZXRzIGZvcgogICAgTE1UUCwgc28gb3VyIGNvbm5lY3QoKSBtZXRob2QgbXVzdCBzdXBwb3J0IHRoYXQgYXMgd2VsbCBhcyBhIHJlZ3VsYXIKICAgIGhvc3Q6cG9ydCBzZXJ2ZXIuICBsb2NhbF9ob3N0bmFtZSBhbmQgc291cmNlX2FkZHJlc3MgaGF2ZSB0aGUgc2FtZQogICAgbWVhbmluZyBhcyB0aGV5IGRvIGluIHRoZSBTTVRQIGNsYXNzLiAgVG8gc3BlY2lmeSBhIFVuaXggc29ja2V0LAogICAgeW91IG11c3QgdXNlIGFuIGFic29sdXRlIHBhdGggYXMgdGhlIGhvc3QsIHN0YXJ0aW5nIHdpdGggYSAnLycuCgogICAgQXV0aGVudGljYXRpb24gaXMgc3VwcG9ydGVkLCB1c2luZyB0aGUgcmVndWxhciBTTVRQIG1lY2hhbmlzbS4gV2hlbgogICAgdXNpbmcgYSBVbml4IHNvY2tldCwgTE1UUCBnZW5lcmFsbHkgZG9uJ3Qgc3VwcG9ydCBvciByZXF1aXJlIGFueQogICAgYXV0aGVudGljYXRpb24sIGJ1dCB5b3VyIG1pbGVhZ2UgbWlnaHQgdmFyeS4iIiIKCiAgICBlaGxvX21zZyA9ICJsaGxvIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUxNVFBfUE9SVCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZS4iIiIKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lPWxvY2FsX2hvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9c291cmNlX2FkZHJlc3MsIHRpbWVvdXQ9dGltZW91dCkKCiAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTAsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICIiIkNvbm5lY3QgdG8gdGhlIExNVFAgZGFlbW9uLCBvbiBlaXRoZXIgYSBVbml4IG9yIGEgVENQIHNvY2tldC4iIiIKICAgICAgICBpZiBob3N0WzBdICE9ICcvJzoKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuY29ubmVjdChob3N0LCBwb3J0LCBzb3VyY2VfYWRkcmVzcz1zb3VyY2VfYWRkcmVzcykKCiAgICAgICAgaWYgc2VsZi50aW1lb3V0IGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi50aW1lb3V0OgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdOb24tYmxvY2tpbmcgc29ja2V0ICh0aW1lb3V0PTApIGlzIG5vdCBzdXBwb3J0ZWQnKQoKICAgICAgICAjIEhhbmRsZSBVbml4LWRvbWFpbiBzb2NrZXRzLgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IHNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVDoKICAgICAgICAgICAgICAgIHNlbGYuc29jay5zZXR0aW1lb3V0KHNlbGYudGltZW91dCkKICAgICAgICAgICAgc2VsZi5maWxlID0gTm9uZQogICAgICAgICAgICBzZWxmLnNvY2suY29ubmVjdChob3N0KQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3QgZmFpbDonLCBob3N0KQogICAgICAgICAgICBpZiBzZWxmLnNvY2s6CiAgICAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICAgICBzZWxmLnNvY2sgPSBOb25lCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCBtc2cpCiAgICAgICAgcmV0dXJuIChjb2RlLCBtc2cpCgoKIyBUZXN0IHRoZSBzZW5kbWFpbCBtZXRob2QsIHdoaWNoIHRlc3RzIG1vc3Qgb2YgdGhlIG90aGVycy4KIyBOb3RlOiBUaGlzIGFsd2F5cyBzZW5kcyB0byBsb2NhbGhvc3QuCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBkZWYgcHJvbXB0KHByb21wdCk6CiAgICAgICAgc3lzLnN0ZG91dC53cml0ZShwcm9tcHQgKyAiOiAiKQogICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgIHJldHVybiBzeXMuc3RkaW4ucmVhZGxpbmUoKS5zdHJpcCgpCgogICAgZnJvbWFkZHIgPSBwcm9tcHQoIkZyb20iKQogICAgdG9hZGRycyA9IHByb21wdCgiVG8iKS5zcGxpdCgnLCcpCiAgICBwcmludCgiRW50ZXIgbWVzc2FnZSwgZW5kIHdpdGggXkQ6IikKICAgIG1zZyA9ICcnCiAgICB3aGlsZSAxOgogICAgICAgIGxpbmUgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQogICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICBicmVhawogICAgICAgIG1zZyA9IG1zZyArIGxpbmUKICAgIHByaW50KCJNZXNzYWdlIGxlbmd0aCBpcyAlZCIgJSBsZW4obXNnKSkKCiAgICBzZXJ2ZXIgPSBTTVRQKCdsb2NhbGhvc3QnKQogICAgc2VydmVyLnNldF9kZWJ1Z2xldmVsKDEpCiAgICBzZXJ2ZXIuc2VuZG1haWwoZnJvbWFkZHIsIHRvYWRkcnMsIG1zZykKICAgIHNlcnZlci5xdWl0KCkKUEsDBBQAAAAAAAIgo1acejxRGB0AABgdAAAJAAAAc25kaGRyLnB5IiIiUm91dGluZXMgdG8gaGVscCByZWNvZ25pemluZyBzb3VuZCBmaWxlcy4KCkZ1bmN0aW9uIHdoYXRoZHIoKSByZWNvZ25pemVzIHZhcmlvdXMgdHlwZXMgb2Ygc291bmQgZmlsZSBoZWFkZXJzLgpJdCB1bmRlcnN0YW5kcyBhbG1vc3QgYWxsIGhlYWRlcnMgdGhhdCBTT1ggY2FuIGRlY29kZS4KClRoZSByZXR1cm4gdHVwbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBpdGVtcywgaW4gdGhpcyBvcmRlcjoKLSBmaWxlIHR5cGUgKGFzIFNPWCB1bmRlcnN0YW5kcyBpdCkKLSBzYW1wbGluZyByYXRlICgwIGlmIHVua25vd24gb3IgaGFyZCB0byBkZWNvZGUpCi0gbnVtYmVyIG9mIGNoYW5uZWxzICgwIGlmIHVua25vd24gb3IgaGFyZCB0byBkZWNvZGUpCi0gbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUgZmlsZSAoLTEgaWYgdW5rbm93biBvciBoYXJkIHRvIGRlY29kZSkKLSBudW1iZXIgb2YgYml0cy9zYW1wbGUsIG9yICdVJyBmb3IgVS1MQVcsIG9yICdBJyBmb3IgQS1MQVcKCklmIHRoZSBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHJlY29nbml6YWJsZSB0eXBlLCBpdCByZXR1cm5zIE5vbmUuCklmIHRoZSBmaWxlIGNhbid0IGJlIG9wZW5lZCwgT1NFcnJvciBpcyByYWlzZWQuCgpUbyBjb21wdXRlIHRoZSB0b3RhbCB0aW1lLCBkaXZpZGUgdGhlIG51bWJlciBvZiBmcmFtZXMgYnkgdGhlCnNhbXBsaW5nIHJhdGUgKGEgZnJhbWUgY29udGFpbnMgYSBzYW1wbGUgZm9yIGVhY2ggY2hhbm5lbCkuCgpGdW5jdGlvbiB3aGF0KCkgY2FsbHMgd2hhdGhkcigpLiAgKEl0IHVzZWQgdG8gYWxzbyB1c2Ugc29tZQpoZXVyaXN0aWNzIGZvciByYXcgZGF0YSwgYnV0IHRoaXMgZG9lc24ndCB3b3JrIHZlcnkgd2VsbC4pCgpGaW5hbGx5LCB0aGUgZnVuY3Rpb24gdGVzdCgpIGlzIGEgc2ltcGxlIG1haW4gcHJvZ3JhbSB0aGF0IGNhbGxzCndoYXQoKSBmb3IgYWxsIGZpbGVzIG1lbnRpb25lZCBvbiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBkaXJlY3RvcnkKYXJndW1lbnRzIGl0IGNhbGxzIHdoYXQoKSBmb3IgYWxsIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5LiAgRGVmYXVsdAphcmd1bWVudCBpcyAiLiIgKHRlc3RpbmcgYWxsIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSkuICBUaGUKb3B0aW9uIC1yIHRlbGxzIGl0IHRvIHJlY3Vyc2UgZG93biBkaXJlY3RvcmllcyBmb3VuZCBpbnNpZGUKZXhwbGljaXRseSBnaXZlbiBkaXJlY3Rvcmllcy4KIiIiCgppbXBvcnQgd2FybmluZ3MKCndhcm5pbmdzLl9kZXByZWNhdGVkKF9fbmFtZV9fLCByZW1vdmU9KDMsIDEzKSkKCiMgVGhlIGZpbGUgc3RydWN0dXJlIGlzIHRvcC1kb3duIGV4Y2VwdCB0aGF0IHRoZSB0ZXN0IHByb2dyYW0gYW5kIGl0cwojIHN1YnJvdXRpbmUgY29tZSBsYXN0LgoKX19hbGxfXyA9IFsnd2hhdCcsICd3aGF0aGRyJ10KCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKClNuZEhlYWRlcnMgPSBuYW1lZHR1cGxlKCdTbmRIZWFkZXJzJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV0eXBlIGZyYW1lcmF0ZSBuY2hhbm5lbHMgbmZyYW1lcyBzYW1wd2lkdGgnKQoKU25kSGVhZGVycy5maWxldHlwZS5fX2RvY19fID0gKCIiIlRoZSB2YWx1ZSBmb3IgdHlwZSBpbmRpY2F0ZXMgdGhlIGRhdGEgdHlwZQphbmQgd2lsbCBiZSBvbmUgb2YgdGhlIHN0cmluZ3MgJ2FpZmMnLCAnYWlmZicsICdhdScsJ2hjb20nLAonc25kcicsICdzbmR0JywgJ3ZvYycsICd3YXYnLCAnOHN2eCcsICdzYicsICd1YicsIG9yICd1bCcuIiIiKQpTbmRIZWFkZXJzLmZyYW1lcmF0ZS5fX2RvY19fID0gKCIiIlRoZSBzYW1wbGluZ19yYXRlIHdpbGwgYmUgZWl0aGVyIHRoZSBhY3R1YWwKdmFsdWUgb3IgMCBpZiB1bmtub3duIG9yIGRpZmZpY3VsdCB0byBkZWNvZGUuIiIiKQpTbmRIZWFkZXJzLm5jaGFubmVscy5fX2RvY19fID0gKCIiIlRoZSBudW1iZXIgb2YgY2hhbm5lbHMgb3IgMCBpZiBpdCBjYW5ub3QgYmUKZGV0ZXJtaW5lZCBvciBpZiB0aGUgdmFsdWUgaXMgZGlmZmljdWx0IHRvIGRlY29kZS4iIiIpClNuZEhlYWRlcnMubmZyYW1lcy5fX2RvY19fID0gKCIiIlRoZSB2YWx1ZSBmb3IgZnJhbWVzIHdpbGwgYmUgZWl0aGVyIHRoZSBudW1iZXIKb2YgZnJhbWVzIG9yIC0xLiIiIikKU25kSGVhZGVycy5zYW1wd2lkdGguX19kb2NfXyA9ICgiIiJFaXRoZXIgdGhlIHNhbXBsZSBzaXplIGluIGJpdHMgb3IKJ0EnIGZvciBBLUxBVyBvciAnVScgZm9yIHUtTEFXLiIiIikKCmRlZiB3aGF0KGZpbGVuYW1lKToKICAgICIiIkd1ZXNzIHRoZSB0eXBlIG9mIGEgc291bmQgZmlsZS4iIiIKICAgIHJlcyA9IHdoYXRoZHIoZmlsZW5hbWUpCiAgICByZXR1cm4gcmVzCgoKZGVmIHdoYXRoZHIoZmlsZW5hbWUpOgogICAgIiIiUmVjb2duaXplIHNvdW5kIGhlYWRlcnMuIiIiCiAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgaCA9IGYucmVhZCg1MTIpCiAgICAgICAgZm9yIHRmIGluIHRlc3RzOgogICAgICAgICAgICByZXMgPSB0ZihoLCBmKQogICAgICAgICAgICBpZiByZXM6CiAgICAgICAgICAgICAgICByZXR1cm4gU25kSGVhZGVycygqcmVzKQogICAgICAgIHJldHVybiBOb25lCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIwojIFN1YnJvdXRpbmVzIHBlciBzb3VuZCBoZWFkZXIgdHlwZSAjCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKCnRlc3RzID0gW10KCmRlZiB0ZXN0X2FpZmMoaCwgZik6CiAgICAiIiJBSUZDIGFuZCBBSUZGIGZpbGVzIiIiCiAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgaW1wb3J0IGFpZmMKICAgIGlmIG5vdCBoLnN0YXJ0c3dpdGgoYidGT1JNJyk6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGlmIGhbODoxMl0gPT0gYidBSUZDJzoKICAgICAgICBmbXQgPSAnYWlmYycKICAgIGVsaWYgaFs4OjEyXSA9PSBiJ0FJRkYnOgogICAgICAgIGZtdCA9ICdhaWZmJwogICAgZWxzZToKICAgICAgICByZXR1cm4gTm9uZQogICAgZi5zZWVrKDApCiAgICB0cnk6CiAgICAgICAgYSA9IGFpZmMub3BlbihmLCAncicpCiAgICBleGNlcHQgKEVPRkVycm9yLCBhaWZjLkVycm9yKToKICAgICAgICByZXR1cm4gTm9uZQogICAgcmV0dXJuIChmbXQsIGEuZ2V0ZnJhbWVyYXRlKCksIGEuZ2V0bmNoYW5uZWxzKCksCiAgICAgICAgICAgIGEuZ2V0bmZyYW1lcygpLCA4ICogYS5nZXRzYW1wd2lkdGgoKSkKCnRlc3RzLmFwcGVuZCh0ZXN0X2FpZmMpCgoKZGVmIHRlc3RfYXUoaCwgZik6CiAgICAiIiJBVSBhbmQgU05EIGZpbGVzIiIiCiAgICBpZiBoLnN0YXJ0c3dpdGgoYicuc25kJyk6CiAgICAgICAgZnVuYyA9IGdldF9sb25nX2JlCiAgICBlbGlmIGhbOjRdIGluIChiJ1wwZHMuJywgYidkbnMuJyk6CiAgICAgICAgZnVuYyA9IGdldF9sb25nX2xlCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCiAgICBmaWxldHlwZSA9ICdhdScKICAgIGhkcl9zaXplID0gZnVuYyhoWzQ6OF0pCiAgICBkYXRhX3NpemUgPSBmdW5jKGhbODoxMl0pCiAgICBlbmNvZGluZyA9IGZ1bmMoaFsxMjoxNl0pCiAgICByYXRlID0gZnVuYyhoWzE2OjIwXSkKICAgIG5jaGFubmVscyA9IGZ1bmMoaFsyMDoyNF0pCiAgICBzYW1wbGVfc2l6ZSA9IDEgIyBkZWZhdWx0CiAgICBpZiBlbmNvZGluZyA9PSAxOgogICAgICAgIHNhbXBsZV9iaXRzID0gJ1UnCiAgICBlbGlmIGVuY29kaW5nID09IDI6CiAgICAgICAgc2FtcGxlX2JpdHMgPSA4CiAgICBlbGlmIGVuY29kaW5nID09IDM6CiAgICAgICAgc2FtcGxlX2JpdHMgPSAxNgogICAgICAgIHNhbXBsZV9zaXplID0gMgogICAgZWxzZToKICAgICAgICBzYW1wbGVfYml0cyA9ICc/JwogICAgZnJhbWVfc2l6ZSA9IHNhbXBsZV9zaXplICogbmNoYW5uZWxzCiAgICBpZiBmcmFtZV9zaXplOgogICAgICAgIG5mcmFtZSA9IGRhdGFfc2l6ZSAvIGZyYW1lX3NpemUKICAgIGVsc2U6CiAgICAgICAgbmZyYW1lID0gLTEKICAgIHJldHVybiBmaWxldHlwZSwgcmF0ZSwgbmNoYW5uZWxzLCBuZnJhbWUsIHNhbXBsZV9iaXRzCgp0ZXN0cy5hcHBlbmQodGVzdF9hdSkKCgpkZWYgdGVzdF9oY29tKGgsIGYpOgogICAgIiIiSENPTSBmaWxlIiIiCiAgICBpZiBoWzY1OjY5XSAhPSBiJ0ZTU0QnIG9yIGhbMTI4OjEzMl0gIT0gYidIQ09NJzoKICAgICAgICByZXR1cm4gTm9uZQogICAgZGl2aXNvciA9IGdldF9sb25nX2JlKGhbMTQ0OjE0OF0pCiAgICBpZiBkaXZpc29yOgogICAgICAgIHJhdGUgPSAyMjA1MCAvIGRpdmlzb3IKICAgIGVsc2U6CiAgICAgICAgcmF0ZSA9IDAKICAgIHJldHVybiAnaGNvbScsIHJhdGUsIDEsIC0xLCA4Cgp0ZXN0cy5hcHBlbmQodGVzdF9oY29tKQoKCmRlZiB0ZXN0X3ZvYyhoLCBmKToKICAgICIiIlZPQyBmaWxlIiIiCiAgICBpZiBub3QgaC5zdGFydHN3aXRoKGInQ3JlYXRpdmUgVm9pY2UgRmlsZVwwMzInKToKICAgICAgICByZXR1cm4gTm9uZQogICAgc2JzZWVrID0gZ2V0X3Nob3J0X2xlKGhbMjA6MjJdKQogICAgcmF0ZSA9IDAKICAgIGlmIDAgPD0gc2JzZWVrIDwgNTAwIGFuZCBoW3Nic2Vla10gPT0gMToKICAgICAgICByYXRlY29kZSA9IDI1NiAtIGhbc2JzZWVrKzRdCiAgICAgICAgaWYgcmF0ZWNvZGU6CiAgICAgICAgICAgIHJhdGUgPSBpbnQoMTAwMDAwMC4wIC8gcmF0ZWNvZGUpCiAgICByZXR1cm4gJ3ZvYycsIHJhdGUsIDEsIC0xLCA4Cgp0ZXN0cy5hcHBlbmQodGVzdF92b2MpCgoKZGVmIHRlc3Rfd2F2KGgsIGYpOgogICAgIiIiV0FWIGZpbGUiIiIKICAgIGltcG9ydCB3YXZlCiAgICAjICdSSUZGJyA8bGVuPiAnV0FWRScgJ2ZtdCAnIDxsZW4+CiAgICBpZiBub3QgaC5zdGFydHN3aXRoKGInUklGRicpIG9yIGhbODoxMl0gIT0gYidXQVZFJyBvciBoWzEyOjE2XSAhPSBiJ2ZtdCAnOgogICAgICAgIHJldHVybiBOb25lCiAgICBmLnNlZWsoMCkKICAgIHRyeToKICAgICAgICB3ID0gd2F2ZS5vcGVuKGYsICdyJykKICAgIGV4Y2VwdCAoRU9GRXJyb3IsIHdhdmUuRXJyb3IpOgogICAgICAgIHJldHVybiBOb25lCiAgICByZXR1cm4gKCd3YXYnLCB3LmdldGZyYW1lcmF0ZSgpLCB3LmdldG5jaGFubmVscygpLAogICAgICAgICAgICAgICAgICAgdy5nZXRuZnJhbWVzKCksIDgqdy5nZXRzYW1wd2lkdGgoKSkKCnRlc3RzLmFwcGVuZCh0ZXN0X3dhdikKCgpkZWYgdGVzdF84c3Z4KGgsIGYpOgogICAgIiIiOFNWWCBmaWxlIiIiCiAgICBpZiBub3QgaC5zdGFydHN3aXRoKGInRk9STScpIG9yIGhbODoxMl0gIT0gYic4U1ZYJzoKICAgICAgICByZXR1cm4gTm9uZQogICAgIyBTaG91bGQgZGVjb2RlIGl0IHRvIGdldCAjY2hhbm5lbHMgLS0gYXNzdW1lIGFsd2F5cyAxCiAgICByZXR1cm4gJzhzdngnLCAwLCAxLCAwLCA4Cgp0ZXN0cy5hcHBlbmQodGVzdF84c3Z4KQoKCmRlZiB0ZXN0X3NuZHQoaCwgZik6CiAgICAiIiJTTkRUIGZpbGUiIiIKICAgIGlmIGguc3RhcnRzd2l0aChiJ1NPVU5EJyk6CiAgICAgICAgbnNhbXBsZXMgPSBnZXRfbG9uZ19sZShoWzg6MTJdKQogICAgICAgIHJhdGUgPSBnZXRfc2hvcnRfbGUoaFsyMDoyMl0pCiAgICAgICAgcmV0dXJuICdzbmR0JywgcmF0ZSwgMSwgbnNhbXBsZXMsIDgKCnRlc3RzLmFwcGVuZCh0ZXN0X3NuZHQpCgoKZGVmIHRlc3Rfc25kcihoLCBmKToKICAgICIiIlNORFIgZmlsZSIiIgogICAgaWYgaC5zdGFydHN3aXRoKGInXDBcMCcpOgogICAgICAgIHJhdGUgPSBnZXRfc2hvcnRfbGUoaFsyOjRdKQogICAgICAgIGlmIDQwMDAgPD0gcmF0ZSA8PSAyNTAwMDoKICAgICAgICAgICAgcmV0dXJuICdzbmRyJywgcmF0ZSwgMSwgLTEsIDgKCnRlc3RzLmFwcGVuZCh0ZXN0X3NuZHIpCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCiMgU3Vicm91dGluZXMgdG8gZXh0cmFjdCBudW1iZXJzIGZyb20gYnl0ZXMgIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKCmRlZiBnZXRfbG9uZ19iZShiKToKICAgIHJldHVybiAoYlswXSA8PCAyNCkgfCAoYlsxXSA8PCAxNikgfCAoYlsyXSA8PCA4KSB8IGJbM10KCmRlZiBnZXRfbG9uZ19sZShiKToKICAgIHJldHVybiAoYlszXSA8PCAyNCkgfCAoYlsyXSA8PCAxNikgfCAoYlsxXSA8PCA4KSB8IGJbMF0KCmRlZiBnZXRfc2hvcnRfYmUoYik6CiAgICByZXR1cm4gKGJbMF0gPDwgOCkgfCBiWzFdCgpkZWYgZ2V0X3Nob3J0X2xlKGIpOgogICAgcmV0dXJuIChiWzFdIDw8IDgpIHwgYlswXQoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLSMKIyBTbWFsbCB0ZXN0IHByb2dyYW0gIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0jCgpkZWYgdGVzdCgpOgogICAgaW1wb3J0IHN5cwogICAgcmVjdXJzaXZlID0gMAogICAgaWYgc3lzLmFyZ3ZbMTpdIGFuZCBzeXMuYXJndlsxXSA9PSAnLXInOgogICAgICAgIGRlbCBzeXMuYXJndlsxOjJdCiAgICAgICAgcmVjdXJzaXZlID0gMQogICAgdHJ5OgogICAgICAgIGlmIHN5cy5hcmd2WzE6XToKICAgICAgICAgICAgdGVzdGFsbChzeXMuYXJndlsxOl0sIHJlY3Vyc2l2ZSwgMSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0ZXN0YWxsKFsnLiddLCByZWN1cnNpdmUsIDEpCiAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnXG5bSW50ZXJydXB0ZWRdXG4nKQogICAgICAgIHN5cy5leGl0KDEpCgpkZWYgdGVzdGFsbChsaXN0LCByZWN1cnNpdmUsIHRvcGxldmVsKToKICAgIGltcG9ydCBzeXMKICAgIGltcG9ydCBvcwogICAgZm9yIGZpbGVuYW1lIGluIGxpc3Q6CiAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmaWxlbmFtZSk6CiAgICAgICAgICAgIHByaW50KGZpbGVuYW1lICsgJy86JywgZW5kPScgJykKICAgICAgICAgICAgaWYgcmVjdXJzaXZlIG9yIHRvcGxldmVsOgogICAgICAgICAgICAgICAgcHJpbnQoJ3JlY3Vyc2luZyBkb3duOicpCiAgICAgICAgICAgICAgICBpbXBvcnQgZ2xvYgogICAgICAgICAgICAgICAgbmFtZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGdsb2IuZXNjYXBlKGZpbGVuYW1lKSwgJyonKSkKICAgICAgICAgICAgICAgIHRlc3RhbGwobmFtZXMsIHJlY3Vyc2l2ZSwgMCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KCcqKiogZGlyZWN0b3J5ICh1c2UgLXIpICoqKicpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoZmlsZW5hbWUgKyAnOicsIGVuZD0nICcpCiAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwcmludCh3aGF0KGZpbGVuYW1lKSkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBwcmludCgnKioqIG5vdCBmb3VuZCAqKionKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIHRlc3QoKQpQSwMEFAAAAAAAAiCjVgy3TwmikQAAopEAAAkAAABzb2NrZXQucHkjIFdyYXBwZXIgbW9kdWxlIGZvciBfc29ja2V0LCBwcm92aWRpbmcgc29tZSBhZGRpdGlvbmFsIGZhY2lsaXRpZXMKIyBpbXBsZW1lbnRlZCBpbiBQeXRob24uCgoiIiJcClRoaXMgbW9kdWxlIHByb3ZpZGVzIHNvY2tldCBvcGVyYXRpb25zIGFuZCBzb21lIHJlbGF0ZWQgZnVuY3Rpb25zLgpPbiBVbml4LCBpdCBzdXBwb3J0cyBJUCAoSW50ZXJuZXQgUHJvdG9jb2wpIGFuZCBVbml4IGRvbWFpbiBzb2NrZXRzLgpPbiBvdGhlciBzeXN0ZW1zLCBpdCBvbmx5IHN1cHBvcnRzIElQLiBGdW5jdGlvbnMgc3BlY2lmaWMgZm9yIGEKc29ja2V0IGFyZSBhdmFpbGFibGUgYXMgbWV0aG9kcyBvZiB0aGUgc29ja2V0IG9iamVjdC4KCkZ1bmN0aW9uczoKCnNvY2tldCgpIC0tIGNyZWF0ZSBhIG5ldyBzb2NrZXQgb2JqZWN0CnNvY2tldHBhaXIoKSAtLSBjcmVhdGUgYSBwYWlyIG9mIG5ldyBzb2NrZXQgb2JqZWN0cyBbKl0KZnJvbWZkKCkgLS0gY3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIFsqXQpzZW5kX2ZkcygpIC0tIFNlbmQgZmlsZSBkZXNjcmlwdG9yIHRvIHRoZSBzb2NrZXQuCnJlY3ZfZmRzKCkgLS0gUmVjZWl2ZSBmaWxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIHNvY2tldC4KZnJvbXNoYXJlKCkgLS0gY3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGRhdGEgcmVjZWl2ZWQgZnJvbSBzb2NrZXQuc2hhcmUoKSBbKl0KZ2V0aG9zdG5hbWUoKSAtLSByZXR1cm4gdGhlIGN1cnJlbnQgaG9zdG5hbWUKZ2V0aG9zdGJ5bmFtZSgpIC0tIG1hcCBhIGhvc3RuYW1lIHRvIGl0cyBJUCBudW1iZXIKZ2V0aG9zdGJ5YWRkcigpIC0tIG1hcCBhbiBJUCBudW1iZXIgb3IgaG9zdG5hbWUgdG8gRE5TIGluZm8KZ2V0c2VydmJ5bmFtZSgpIC0tIG1hcCBhIHNlcnZpY2UgbmFtZSBhbmQgYSBwcm90b2NvbCBuYW1lIHRvIGEgcG9ydCBudW1iZXIKZ2V0cHJvdG9ieW5hbWUoKSAtLSBtYXAgYSBwcm90b2NvbCBuYW1lIChlLmcuICd0Y3AnKSB0byBhIG51bWJlcgpudG9ocygpLCBudG9obCgpIC0tIGNvbnZlcnQgMTYsIDMyIGJpdCBpbnQgZnJvbSBuZXR3b3JrIHRvIGhvc3QgYnl0ZSBvcmRlcgpodG9ucygpLCBodG9ubCgpIC0tIGNvbnZlcnQgMTYsIDMyIGJpdCBpbnQgZnJvbSBob3N0IHRvIG5ldHdvcmsgYnl0ZSBvcmRlcgppbmV0X2F0b24oKSAtLSBjb252ZXJ0IElQIGFkZHIgc3RyaW5nICgxMjMuNDUuNjcuODkpIHRvIDMyLWJpdCBwYWNrZWQgZm9ybWF0CmluZXRfbnRvYSgpIC0tIGNvbnZlcnQgMzItYml0IHBhY2tlZCBmb3JtYXQgSVAgdG8gc3RyaW5nICgxMjMuNDUuNjcuODkpCnNvY2tldC5nZXRkZWZhdWx0dGltZW91dCgpIC0tIGdldCB0aGUgZGVmYXVsdCB0aW1lb3V0IHZhbHVlCnNvY2tldC5zZXRkZWZhdWx0dGltZW91dCgpIC0tIHNldCB0aGUgZGVmYXVsdCB0aW1lb3V0IHZhbHVlCmNyZWF0ZV9jb25uZWN0aW9uKCkgLS0gY29ubmVjdHMgdG8gYW4gYWRkcmVzcywgd2l0aCBhbiBvcHRpb25hbCB0aW1lb3V0IGFuZAogICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIHNvdXJjZSBhZGRyZXNzLgoKIFsqXSBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMhCgpTcGVjaWFsIG9iamVjdHM6CgpTb2NrZXRUeXBlIC0tIHR5cGUgb2JqZWN0IGZvciBzb2NrZXQgb2JqZWN0cwplcnJvciAtLSBleGNlcHRpb24gcmFpc2VkIGZvciBJL08gZXJyb3JzCmhhc19pcHY2IC0tIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyBpZiBJUHY2IGlzIHN1cHBvcnRlZAoKSW50RW51bSBjb25zdGFudHM6CgpBRl9JTkVULCBBRl9VTklYIC0tIHNvY2tldCBkb21haW5zIChmaXJzdCBhcmd1bWVudCB0byBzb2NrZXQoKSBjYWxsKQpTT0NLX1NUUkVBTSwgU09DS19ER1JBTSwgU09DS19SQVcgLS0gc29ja2V0IHR5cGVzIChzZWNvbmQgYXJndW1lbnQpCgpJbnRlZ2VyIGNvbnN0YW50czoKCk1hbnkgb3RoZXIgY29uc3RhbnRzIG1heSBiZSBkZWZpbmVkOyB0aGVzZSBtYXkgYmUgdXNlZCBpbiBjYWxscyB0bwp0aGUgc2V0c29ja29wdCgpIGFuZCBnZXRzb2Nrb3B0KCkgbWV0aG9kcy4KIiIiCgppbXBvcnQgX3NvY2tldApmcm9tIF9zb2NrZXQgaW1wb3J0ICoKCmltcG9ydCBvcywgc3lzLCBpbywgc2VsZWN0b3JzCmZyb20gZW51bSBpbXBvcnQgSW50RW51bSwgSW50RmxhZwoKdHJ5OgogICAgaW1wb3J0IGVycm5vCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGVycm5vID0gTm9uZQpFQkFERiA9IGdldGF0dHIoZXJybm8sICdFQkFERicsIDkpCkVBR0FJTiA9IGdldGF0dHIoZXJybm8sICdFQUdBSU4nLCAxMSkKRVdPVUxEQkxPQ0sgPSBnZXRhdHRyKGVycm5vLCAnRVdPVUxEQkxPQ0snLCAxMSkKCl9fYWxsX18gPSBbImZyb21mZCIsICJnZXRmcWRuIiwgImNyZWF0ZV9jb25uZWN0aW9uIiwgImNyZWF0ZV9zZXJ2ZXIiLAogICAgICAgICAgICJoYXNfZHVhbHN0YWNrX2lwdjYiLCAiQWRkcmVzc0ZhbWlseSIsICJTb2NrZXRLaW5kIl0KX19hbGxfXy5leHRlbmQob3MuX2dldF9leHBvcnRzX2xpc3QoX3NvY2tldCkpCgojIFNldCB1cCB0aGUgc29ja2V0LkFGXyogc29ja2V0LlNPQ0tfKiBjb25zdGFudHMgYXMgbWVtYmVycyBvZiBJbnRFbnVtcyBmb3IKIyBuaWNlciBzdHJpbmcgcmVwcmVzZW50YXRpb25zLgojIE5vdGUgdGhhdCBfc29ja2V0IG9ubHkga25vd3MgYWJvdXQgdGhlIGludGVnZXIgdmFsdWVzLiBUaGUgcHVibGljIGludGVyZmFjZQojIGluIHRoaXMgbW9kdWxlIHVuZGVyc3RhbmRzIHRoZSBlbnVtcyBhbmQgdHJhbnNsYXRlcyB0aGVtIGJhY2sgZnJvbSBpbnRlZ2VycwojIHdoZXJlIG5lZWRlZCAoZS5nLiAuZmFtaWx5IHByb3BlcnR5IG9mIGEgc29ja2V0IG9iamVjdCkuCgpJbnRFbnVtLl9jb252ZXJ0XygKICAgICAgICAnQWRkcmVzc0ZhbWlseScsCiAgICAgICAgX19uYW1lX18sCiAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ0FGXycpKQoKSW50RW51bS5fY29udmVydF8oCiAgICAgICAgJ1NvY2tldEtpbmQnLAogICAgICAgIF9fbmFtZV9fLAogICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdTT0NLXycpKQoKSW50RmxhZy5fY29udmVydF8oCiAgICAgICAgJ01zZ0ZsYWcnLAogICAgICAgIF9fbmFtZV9fLAogICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdNU0dfJykpCgpJbnRGbGFnLl9jb252ZXJ0XygKICAgICAgICAnQWRkcmVzc0luZm8nLAogICAgICAgIF9fbmFtZV9fLAogICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdBSV8nKSkKCl9MT0NBTEhPU1QgICAgPSAnMTI3LjAuMC4xJwpfTE9DQUxIT1NUX1Y2ID0gJzo6MScKCgpkZWYgX2ludGVudW1fY29udmVydGVyKHZhbHVlLCBlbnVtX2tsYXNzKToKICAgICIiIkNvbnZlcnQgYSBudW1lcmljIGZhbWlseSB2YWx1ZSB0byBhbiBJbnRFbnVtIG1lbWJlci4KCiAgICBJZiBpdCdzIG5vdCBhIGtub3duIG1lbWJlciwgcmV0dXJuIHRoZSBudW1lcmljIHZhbHVlIGl0c2VsZi4KICAgICIiIgogICAgdHJ5OgogICAgICAgIHJldHVybiBlbnVtX2tsYXNzKHZhbHVlKQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgcmV0dXJuIHZhbHVlCgoKIyBXU0EgZXJyb3IgY29kZXMKaWYgc3lzLnBsYXRmb3JtLmxvd2VyKCkuc3RhcnRzd2l0aCgid2luIik6CiAgICBlcnJvclRhYiA9IHt9CiAgICBlcnJvclRhYls2XSA9ICJTcGVjaWZpZWQgZXZlbnQgb2JqZWN0IGhhbmRsZSBpcyBpbnZhbGlkLiIKICAgIGVycm9yVGFiWzhdID0gIkluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlLiIKICAgIGVycm9yVGFiWzg3XSA9ICJPbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLiIKICAgIGVycm9yVGFiWzk5NV0gPSAiT3ZlcmxhcHBlZCBvcGVyYXRpb24gYWJvcnRlZC4iCiAgICBlcnJvclRhYls5OTZdID0gIk92ZXJsYXBwZWQgSS9PIGV2ZW50IG9iamVjdCBub3QgaW4gc2lnbmFsZWQgc3RhdGUuIgogICAgZXJyb3JUYWJbOTk3XSA9ICJPdmVybGFwcGVkIG9wZXJhdGlvbiB3aWxsIGNvbXBsZXRlIGxhdGVyLiIKICAgIGVycm9yVGFiWzEwMDA0XSA9ICJUaGUgb3BlcmF0aW9uIHdhcyBpbnRlcnJ1cHRlZC4iCiAgICBlcnJvclRhYlsxMDAwOV0gPSAiQSBiYWQgZmlsZSBoYW5kbGUgd2FzIHBhc3NlZC4iCiAgICBlcnJvclRhYlsxMDAxM10gPSAiUGVybWlzc2lvbiBkZW5pZWQuIgogICAgZXJyb3JUYWJbMTAwMTRdID0gIkEgZmF1bHQgb2NjdXJyZWQgb24gdGhlIG5ldHdvcms/PyIgICMgV1NBRUZBVUxUCiAgICBlcnJvclRhYlsxMDAyMl0gPSAiQW4gaW52YWxpZCBvcGVyYXRpb24gd2FzIGF0dGVtcHRlZC4iCiAgICBlcnJvclRhYlsxMDAyNF0gPSAiVG9vIG1hbnkgb3BlbiBmaWxlcy4iCiAgICBlcnJvclRhYlsxMDAzNV0gPSAiVGhlIHNvY2tldCBvcGVyYXRpb24gd291bGQgYmxvY2suIgogICAgZXJyb3JUYWJbMTAwMzZdID0gIkEgYmxvY2tpbmcgb3BlcmF0aW9uIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuIgogICAgZXJyb3JUYWJbMTAwMzddID0gIk9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzLiIKICAgIGVycm9yVGFiWzEwMDM4XSA9ICJTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbnNvY2tldC4iCiAgICBlcnJvclRhYlsxMDAzOV0gPSAiRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZC4iCiAgICBlcnJvclRhYlsxMDA0MF0gPSAiTWVzc2FnZSB0b28gbG9uZy4iCiAgICBlcnJvclRhYlsxMDA0MV0gPSAiUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0LiIKICAgIGVycm9yVGFiWzEwMDQyXSA9ICJCYWQgcHJvdG9jb2wgb3B0aW9uLiIKICAgIGVycm9yVGFiWzEwMDQzXSA9ICJQcm90b2NvbCBub3Qgc3VwcG9ydGVkLiIKICAgIGVycm9yVGFiWzEwMDQ0XSA9ICJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkLiIKICAgIGVycm9yVGFiWzEwMDQ1XSA9ICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZC4iCiAgICBlcnJvclRhYlsxMDA0Nl0gPSAiUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQuIgogICAgZXJyb3JUYWJbMTAwNDddID0gIkFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wgZmFtaWx5LiIKICAgIGVycm9yVGFiWzEwMDQ4XSA9ICJUaGUgbmV0d29yayBhZGRyZXNzIGlzIGluIHVzZS4iCiAgICBlcnJvclRhYlsxMDA0OV0gPSAiQ2Fubm90IGFzc2lnbiByZXF1ZXN0ZWQgYWRkcmVzcy4iCiAgICBlcnJvclRhYlsxMDA1MF0gPSAiTmV0d29yayBpcyBkb3duLiIKICAgIGVycm9yVGFiWzEwMDUxXSA9ICJOZXR3b3JrIGlzIHVucmVhY2hhYmxlLiIKICAgIGVycm9yVGFiWzEwMDUyXSA9ICJOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlvbiBvbiByZXNldC4iCiAgICBlcnJvclRhYlsxMDA1M10gPSAiU29mdHdhcmUgY2F1c2VkIGNvbm5lY3Rpb24gYWJvcnQuIgogICAgZXJyb3JUYWJbMTAwNTRdID0gIlRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIHJlc2V0LiIKICAgIGVycm9yVGFiWzEwMDU1XSA9ICJObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlLiIKICAgIGVycm9yVGFiWzEwMDU2XSA9ICJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQuIgogICAgZXJyb3JUYWJbMTAwNTddID0gIlNvY2tldCBpcyBub3QgY29ubmVjdGVkLiIKICAgIGVycm9yVGFiWzEwMDU4XSA9ICJUaGUgbmV0d29yayBoYXMgYmVlbiBzaHV0IGRvd24uIgogICAgZXJyb3JUYWJbMTAwNTldID0gIlRvbyBtYW55IHJlZmVyZW5jZXMuIgogICAgZXJyb3JUYWJbMTAwNjBdID0gIlRoZSBvcGVyYXRpb24gdGltZWQgb3V0LiIKICAgIGVycm9yVGFiWzEwMDYxXSA9ICJDb25uZWN0aW9uIHJlZnVzZWQuIgogICAgZXJyb3JUYWJbMTAwNjJdID0gIkNhbm5vdCB0cmFuc2xhdGUgbmFtZS4iCiAgICBlcnJvclRhYlsxMDA2M10gPSAiVGhlIG5hbWUgaXMgdG9vIGxvbmcuIgogICAgZXJyb3JUYWJbMTAwNjRdID0gIlRoZSBob3N0IGlzIGRvd24uIgogICAgZXJyb3JUYWJbMTAwNjVdID0gIlRoZSBob3N0IGlzIHVucmVhY2hhYmxlLiIKICAgIGVycm9yVGFiWzEwMDY2XSA9ICJEaXJlY3Rvcnkgbm90IGVtcHR5LiIKICAgIGVycm9yVGFiWzEwMDY3XSA9ICJUb28gbWFueSBwcm9jZXNzZXMuIgogICAgZXJyb3JUYWJbMTAwNjhdID0gIlVzZXIgcXVvdGEgZXhjZWVkZWQuIgogICAgZXJyb3JUYWJbMTAwNjldID0gIkRpc2sgcXVvdGEgZXhjZWVkZWQuIgogICAgZXJyb3JUYWJbMTAwNzBdID0gIlN0YWxlIGZpbGUgaGFuZGxlIHJlZmVyZW5jZS4iCiAgICBlcnJvclRhYlsxMDA3MV0gPSAiSXRlbSBpcyByZW1vdGUuIgogICAgZXJyb3JUYWJbMTAwOTFdID0gIk5ldHdvcmsgc3Vic3lzdGVtIGlzIHVuYXZhaWxhYmxlLiIKICAgIGVycm9yVGFiWzEwMDkyXSA9ICJXaW5zb2NrLmRsbCB2ZXJzaW9uIG91dCBvZiByYW5nZS4iCiAgICBlcnJvclRhYlsxMDA5M10gPSAiU3VjY2Vzc2Z1bCBXU0FTdGFydHVwIG5vdCB5ZXQgcGVyZm9ybWVkLiIKICAgIGVycm9yVGFiWzEwMTAxXSA9ICJHcmFjZWZ1bCBzaHV0ZG93biBpbiBwcm9ncmVzcy4iCiAgICBlcnJvclRhYlsxMDEwMl0gPSAiTm8gbW9yZSByZXN1bHRzIGZyb20gV1NBTG9va3VwU2VydmljZU5leHQuIgogICAgZXJyb3JUYWJbMTAxMDNdID0gIkNhbGwgaGFzIGJlZW4gY2FuY2VsZWQuIgogICAgZXJyb3JUYWJbMTAxMDRdID0gIlByb2NlZHVyZSBjYWxsIHRhYmxlIGlzIGludmFsaWQuIgogICAgZXJyb3JUYWJbMTAxMDVdID0gIlNlcnZpY2UgcHJvdmlkZXIgaXMgaW52YWxpZC4iCiAgICBlcnJvclRhYlsxMDEwNl0gPSAiU2VydmljZSBwcm92aWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4iCiAgICBlcnJvclRhYlsxMDEwN10gPSAiU3lzdGVtIGNhbGwgZmFpbHVyZS4iCiAgICBlcnJvclRhYlsxMDEwOF0gPSAiU2VydmljZSBub3QgZm91bmQuIgogICAgZXJyb3JUYWJbMTAxMDldID0gIkNsYXNzIHR5cGUgbm90IGZvdW5kLiIKICAgIGVycm9yVGFiWzEwMTEwXSA9ICJObyBtb3JlIHJlc3VsdHMgZnJvbSBXU0FMb29rdXBTZXJ2aWNlTmV4dC4iCiAgICBlcnJvclRhYlsxMDExMV0gPSAiQ2FsbCB3YXMgY2FuY2VsZWQuIgogICAgZXJyb3JUYWJbMTAxMTJdID0gIkRhdGFiYXNlIHF1ZXJ5IHdhcyByZWZ1c2VkLiIKICAgIGVycm9yVGFiWzExMDAxXSA9ICJIb3N0IG5vdCBmb3VuZC4iCiAgICBlcnJvclRhYlsxMTAwMl0gPSAiTm9uYXV0aG9yaXRhdGl2ZSBob3N0IG5vdCBmb3VuZC4iCiAgICBlcnJvclRhYlsxMTAwM10gPSAiVGhpcyBpcyBhIG5vbnJlY292ZXJhYmxlIGVycm9yLiIKICAgIGVycm9yVGFiWzExMDA0XSA9ICJWYWxpZCBuYW1lLCBubyBkYXRhIHJlY29yZCByZXF1ZXN0ZWQgdHlwZS4iCiAgICBlcnJvclRhYlsxMTAwNV0gPSAiUW9TIHJlY2VpdmVycy4iCiAgICBlcnJvclRhYlsxMTAwNl0gPSAiUW9TIHNlbmRlcnMuIgogICAgZXJyb3JUYWJbMTEwMDddID0gIk5vIFFvUyBzZW5kZXJzLiIKICAgIGVycm9yVGFiWzExMDA4XSA9ICJRb1Mgbm8gcmVjZWl2ZXJzLiIKICAgIGVycm9yVGFiWzExMDA5XSA9ICJRb1MgcmVxdWVzdCBjb25maXJtZWQuIgogICAgZXJyb3JUYWJbMTEwMTBdID0gIlFvUyBhZG1pc3Npb24gZXJyb3IuIgogICAgZXJyb3JUYWJbMTEwMTFdID0gIlFvUyBwb2xpY3kgZmFpbHVyZS4iCiAgICBlcnJvclRhYlsxMTAxMl0gPSAiUW9TIGJhZCBzdHlsZS4iCiAgICBlcnJvclRhYlsxMTAxM10gPSAiUW9TIGJhZCBvYmplY3QuIgogICAgZXJyb3JUYWJbMTEwMTRdID0gIlFvUyB0cmFmZmljIGNvbnRyb2wgZXJyb3IuIgogICAgZXJyb3JUYWJbMTEwMTVdID0gIlFvUyBnZW5lcmljIGVycm9yLiIKICAgIGVycm9yVGFiWzExMDE2XSA9ICJRb1Mgc2VydmljZSB0eXBlIGVycm9yLiIKICAgIGVycm9yVGFiWzExMDE3XSA9ICJRb1MgZmxvd3NwZWMgZXJyb3IuIgogICAgZXJyb3JUYWJbMTEwMThdID0gIkludmFsaWQgUW9TIHByb3ZpZGVyIGJ1ZmZlci4iCiAgICBlcnJvclRhYlsxMTAxOV0gPSAiSW52YWxpZCBRb1MgZmlsdGVyIHN0eWxlLiIKICAgIGVycm9yVGFiWzExMDIwXSA9ICJJbnZhbGlkIFFvUyBmaWx0ZXIgc3R5bGUuIgogICAgZXJyb3JUYWJbMTEwMjFdID0gIkluY29ycmVjdCBRb1MgZmlsdGVyIGNvdW50LiIKICAgIGVycm9yVGFiWzExMDIyXSA9ICJJbnZhbGlkIFFvUyBvYmplY3QgbGVuZ3RoLiIKICAgIGVycm9yVGFiWzExMDIzXSA9ICJJbmNvcnJlY3QgUW9TIGZsb3cgY291bnQuIgogICAgZXJyb3JUYWJbMTEwMjRdID0gIlVucmVjb2duaXplZCBRb1Mgb2JqZWN0LiIKICAgIGVycm9yVGFiWzExMDI1XSA9ICJJbnZhbGlkIFFvUyBwb2xpY3kgb2JqZWN0LiIKICAgIGVycm9yVGFiWzExMDI2XSA9ICJJbnZhbGlkIFFvUyBmbG93IGRlc2NyaXB0b3IuIgogICAgZXJyb3JUYWJbMTEwMjddID0gIkludmFsaWQgUW9TIHByb3ZpZGVyLXNwZWNpZmljIGZsb3dzcGVjLiIKICAgIGVycm9yVGFiWzExMDI4XSA9ICJJbnZhbGlkIFFvUyBwcm92aWRlci1zcGVjaWZpYyBmaWx0ZXJzcGVjLiIKICAgIGVycm9yVGFiWzExMDI5XSA9ICJJbnZhbGlkIFFvUyBzaGFwZSBkaXNjYXJkIG1vZGUgb2JqZWN0LiIKICAgIGVycm9yVGFiWzExMDMwXSA9ICJJbnZhbGlkIFFvUyBzaGFwaW5nIHJhdGUgb2JqZWN0LiIKICAgIGVycm9yVGFiWzExMDMxXSA9ICJSZXNlcnZlZCBwb2xpY3kgUW9TIGVsZW1lbnQgdHlwZS4iCiAgICBfX2FsbF9fLmFwcGVuZCgiZXJyb3JUYWIiKQoKCmNsYXNzIF9HaXZldXBPblNlbmRmaWxlKEV4Y2VwdGlvbik6IHBhc3MKCgpjbGFzcyBzb2NrZXQoX3NvY2tldC5zb2NrZXQpOgoKICAgICIiIkEgc3ViY2xhc3Mgb2YgX3NvY2tldC5zb2NrZXQgYWRkaW5nIHRoZSBtYWtlZmlsZSgpIG1ldGhvZC4iIiIKCiAgICBfX3Nsb3RzX18gPSBbIl9fd2Vha3JlZl9fIiwgIl9pb19yZWZzIiwgIl9jbG9zZWQiXQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHk9LTEsIHR5cGU9LTEsIHByb3RvPS0xLCBmaWxlbm89Tm9uZSk6CiAgICAgICAgIyBGb3IgdXNlciBjb2RlIGFkZHJlc3MgZmFtaWx5IGFuZCB0eXBlIHZhbHVlcyBhcmUgSW50RW51bSBtZW1iZXJzLCBidXQKICAgICAgICAjIGZvciB0aGUgdW5kZXJseWluZyBfc29ja2V0LnNvY2tldCB0aGV5J3JlIGp1c3QgaW50ZWdlcnMuIFRoZQogICAgICAgICMgY29uc3RydWN0b3Igb2YgX3NvY2tldC5zb2NrZXQgY29udmVydHMgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuCiAgICAgICAgIyBpbnRlZ2VyIGF1dG9tYXRpY2FsbHkuCiAgICAgICAgaWYgZmlsZW5vIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIGZhbWlseSA9PSAtMToKICAgICAgICAgICAgICAgIGZhbWlseSA9IEFGX0lORVQKICAgICAgICAgICAgaWYgdHlwZSA9PSAtMToKICAgICAgICAgICAgICAgIHR5cGUgPSBTT0NLX1NUUkVBTQogICAgICAgICAgICBpZiBwcm90byA9PSAtMToKICAgICAgICAgICAgICAgIHByb3RvID0gMAogICAgICAgIF9zb2NrZXQuc29ja2V0Ll9faW5pdF9fKHNlbGYsIGZhbWlseSwgdHlwZSwgcHJvdG8sIGZpbGVubykKICAgICAgICBzZWxmLl9pb19yZWZzID0gMAogICAgICAgIHNlbGYuX2Nsb3NlZCA9IEZhbHNlCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZDoKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICIiIldyYXAgX19yZXByX18oKSB0byByZXZlYWwgdGhlIHJlYWwgY2xhc3MgbmFtZSBhbmQgc29ja2V0CiAgICAgICAgYWRkcmVzcyhlcykuCiAgICAgICAgIiIiCiAgICAgICAgY2xvc2VkID0gZ2V0YXR0cihzZWxmLCAnX2Nsb3NlZCcsIEZhbHNlKQogICAgICAgIHMgPSAiPCVzLiVzJXMgZmQ9JWksIGZhbWlseT0lcywgdHlwZT0lcywgcHJvdG89JWkiIFwKICAgICAgICAgICAgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAiIFtjbG9zZWRdIiBpZiBjbG9zZWQgZWxzZSAiIiwKICAgICAgICAgICAgICAgc2VsZi5maWxlbm8oKSwKICAgICAgICAgICAgICAgc2VsZi5mYW1pbHksCiAgICAgICAgICAgICAgIHNlbGYudHlwZSwKICAgICAgICAgICAgICAgc2VsZi5wcm90bykKICAgICAgICBpZiBub3QgY2xvc2VkOgogICAgICAgICAgICAjIGdldHNvY2tuYW1lIGFuZCBnZXRwZWVybmFtZSBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiBXQVNJLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsYWRkciA9IHNlbGYuZ2V0c29ja25hbWUoKQogICAgICAgICAgICAgICAgaWYgbGFkZHI6CiAgICAgICAgICAgICAgICAgICAgcyArPSAiLCBsYWRkcj0lcyIgJSBzdHIobGFkZHIpCiAgICAgICAgICAgIGV4Y2VwdCAoZXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmFkZHIgPSBzZWxmLmdldHBlZXJuYW1lKCkKICAgICAgICAgICAgICAgIGlmIHJhZGRyOgogICAgICAgICAgICAgICAgICAgIHMgKz0gIiwgcmFkZHI9JXMiICUgc3RyKHJhZGRyKQogICAgICAgICAgICBleGNlcHQgKGVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgcyArPSAnPicKICAgICAgICByZXR1cm4gcwoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiY2Fubm90IHBpY2tsZSB7c2VsZi5fX2NsYXNzX18uX19uYW1lX18hcn0gb2JqZWN0IikKCiAgICBkZWYgZHVwKHNlbGYpOgogICAgICAgICIiImR1cCgpIC0+IHNvY2tldCBvYmplY3QKCiAgICAgICAgRHVwbGljYXRlIHRoZSBzb2NrZXQuIFJldHVybiBhIG5ldyBzb2NrZXQgb2JqZWN0IGNvbm5lY3RlZCB0byB0aGUgc2FtZQogICAgICAgIHN5c3RlbSByZXNvdXJjZS4gVGhlIG5ldyBzb2NrZXQgaXMgbm9uLWluaGVyaXRhYmxlLgogICAgICAgICIiIgogICAgICAgIGZkID0gZHVwKHNlbGYuZmlsZW5vKCkpCiAgICAgICAgc29jayA9IHNlbGYuX19jbGFzc19fKHNlbGYuZmFtaWx5LCBzZWxmLnR5cGUsIHNlbGYucHJvdG8sIGZpbGVubz1mZCkKICAgICAgICBzb2NrLnNldHRpbWVvdXQoc2VsZi5nZXR0aW1lb3V0KCkpCiAgICAgICAgcmV0dXJuIHNvY2sKCiAgICBkZWYgYWNjZXB0KHNlbGYpOgogICAgICAgICIiImFjY2VwdCgpIC0+IChzb2NrZXQgb2JqZWN0LCBhZGRyZXNzIGluZm8pCgogICAgICAgIFdhaXQgZm9yIGFuIGluY29taW5nIGNvbm5lY3Rpb24uICBSZXR1cm4gYSBuZXcgc29ja2V0CiAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBjb25uZWN0aW9uLCBhbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIGNsaWVudC4KICAgICAgICBGb3IgSVAgc29ja2V0cywgdGhlIGFkZHJlc3MgaW5mbyBpcyBhIHBhaXIgKGhvc3RhZGRyLCBwb3J0KS4KICAgICAgICAiIiIKICAgICAgICBmZCwgYWRkciA9IHNlbGYuX2FjY2VwdCgpCiAgICAgICAgc29jayA9IHNvY2tldChzZWxmLmZhbWlseSwgc2VsZi50eXBlLCBzZWxmLnByb3RvLCBmaWxlbm89ZmQpCiAgICAgICAgIyBJc3N1ZSAjNzk5NTogaWYgbm8gZGVmYXVsdCB0aW1lb3V0IGlzIHNldCBhbmQgdGhlIGxpc3RlbmluZwogICAgICAgICMgc29ja2V0IGhhZCBhIChub24temVybykgdGltZW91dCwgZm9yY2UgdGhlIG5ldyBzb2NrZXQgaW4gYmxvY2tpbmcKICAgICAgICAjIG1vZGUgdG8gb3ZlcnJpZGUgcGxhdGZvcm0tc3BlY2lmaWMgc29ja2V0IGZsYWdzIGluaGVyaXRhbmNlLgogICAgICAgIGlmIGdldGRlZmF1bHR0aW1lb3V0KCkgaXMgTm9uZSBhbmQgc2VsZi5nZXR0aW1lb3V0KCk6CiAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoVHJ1ZSkKICAgICAgICByZXR1cm4gc29jaywgYWRkcgoKICAgIGRlZiBtYWtlZmlsZShzZWxmLCBtb2RlPSJyIiwgYnVmZmVyaW5nPU5vbmUsICosCiAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAgICAgIiIibWFrZWZpbGUoLi4uKSAtPiBhbiBJL08gc3RyZWFtIGNvbm5lY3RlZCB0byB0aGUgc29ja2V0CgogICAgICAgIFRoZSBhcmd1bWVudHMgYXJlIGFzIGZvciBpby5vcGVuKCkgYWZ0ZXIgdGhlIGZpbGVuYW1lLCBleGNlcHQgdGhlIG9ubHkKICAgICAgICBzdXBwb3J0ZWQgbW9kZSB2YWx1ZXMgYXJlICdyJyAoZGVmYXVsdCksICd3JyBhbmQgJ2InLgogICAgICAgICIiIgogICAgICAgICMgWFhYIHJlZmFjdG9yIHRvIHNoYXJlIGNvZGU/CiAgICAgICAgaWYgbm90IHNldChtb2RlKSA8PSB7InIiLCAidyIsICJiIn06CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbW9kZSAlciAob25seSByLCB3LCBiIGFsbG93ZWQpIiAlIChtb2RlLCkpCiAgICAgICAgd3JpdGluZyA9ICJ3IiBpbiBtb2RlCiAgICAgICAgcmVhZGluZyA9ICJyIiBpbiBtb2RlIG9yIG5vdCB3cml0aW5nCiAgICAgICAgYXNzZXJ0IHJlYWRpbmcgb3Igd3JpdGluZwogICAgICAgIGJpbmFyeSA9ICJiIiBpbiBtb2RlCiAgICAgICAgcmF3bW9kZSA9ICIiCiAgICAgICAgaWYgcmVhZGluZzoKICAgICAgICAgICAgcmF3bW9kZSArPSAiciIKICAgICAgICBpZiB3cml0aW5nOgogICAgICAgICAgICByYXdtb2RlICs9ICJ3IgogICAgICAgIHJhdyA9IFNvY2tldElPKHNlbGYsIHJhd21vZGUpCiAgICAgICAgc2VsZi5faW9fcmVmcyArPSAxCiAgICAgICAgaWYgYnVmZmVyaW5nIGlzIE5vbmU6CiAgICAgICAgICAgIGJ1ZmZlcmluZyA9IC0xCiAgICAgICAgaWYgYnVmZmVyaW5nIDwgMDoKICAgICAgICAgICAgYnVmZmVyaW5nID0gaW8uREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgIGlmIGJ1ZmZlcmluZyA9PSAwOgogICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5idWZmZXJlZCBzdHJlYW1zIG11c3QgYmUgYmluYXJ5IikKICAgICAgICAgICAgcmV0dXJuIHJhdwogICAgICAgIGlmIHJlYWRpbmcgYW5kIHdyaXRpbmc6CiAgICAgICAgICAgIGJ1ZmZlciA9IGlvLkJ1ZmZlcmVkUldQYWlyKHJhdywgcmF3LCBidWZmZXJpbmcpCiAgICAgICAgZWxpZiByZWFkaW5nOgogICAgICAgICAgICBidWZmZXIgPSBpby5CdWZmZXJlZFJlYWRlcihyYXcsIGJ1ZmZlcmluZykKICAgICAgICBlbHNlOgogICAgICAgICAgICBhc3NlcnQgd3JpdGluZwogICAgICAgICAgICBidWZmZXIgPSBpby5CdWZmZXJlZFdyaXRlcihyYXcsIGJ1ZmZlcmluZykKICAgICAgICBpZiBiaW5hcnk6CiAgICAgICAgICAgIHJldHVybiBidWZmZXIKICAgICAgICBlbmNvZGluZyA9IGlvLnRleHRfZW5jb2RpbmcoZW5jb2RpbmcpCiAgICAgICAgdGV4dCA9IGlvLlRleHRJT1dyYXBwZXIoYnVmZmVyLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lKQogICAgICAgIHRleHQubW9kZSA9IG1vZGUKICAgICAgICByZXR1cm4gdGV4dAoKICAgIGlmIGhhc2F0dHIob3MsICdzZW5kZmlsZScpOgoKICAgICAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kZmlsZShzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CiAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NlbmRmaWxlX3BhcmFtcyhmaWxlLCBvZmZzZXQsIGNvdW50KQogICAgICAgICAgICBzb2Nrbm8gPSBzZWxmLmZpbGVubygpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZpbGVubyA9IGZpbGUuZmlsZW5vKCkKICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24pIGFzIGVycjoKICAgICAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKGVycikgICMgbm90IGEgcmVndWxhciBmaWxlCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZzaXplID0gb3MuZnN0YXQoZmlsZW5vKS5zdF9zaXplCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKGVycikgICMgbm90IGEgcmVndWxhciBmaWxlCiAgICAgICAgICAgIGlmIG5vdCBmc2l6ZToKICAgICAgICAgICAgICAgIHJldHVybiAwICAjIGVtcHR5IGZpbGUKICAgICAgICAgICAgIyBUcnVuY2F0ZSB0byAxR2lCIHRvIGF2b2lkIE92ZXJmbG93RXJyb3IsIHNlZSBicG8tMzgzMTkuCiAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IG1pbihjb3VudCBvciBmc2l6ZSwgMiAqKiAzMCkKICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuZ2V0dGltZW91dCgpCiAgICAgICAgICAgIGlmIHRpbWVvdXQgPT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vbi1ibG9ja2luZyBzb2NrZXRzIGFyZSBub3Qgc3VwcG9ydGVkIikKICAgICAgICAgICAgIyBwb2xsL3NlbGVjdCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkKICAgICAgICAgICAgIyBleHRyYSBmaWxlIGRlc2NyaXB0b3IsIGNvbnRyYXJpbHkgdG8gZXBvbGwva3F1ZXVlCiAgICAgICAgICAgICMgKGFsc28sIHRoZXkgcmVxdWlyZSBhIHNpbmdsZSBzeXNjYWxsKS4KICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxlY3RvcnMsICdQb2xsU2VsZWN0b3InKToKICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JzLlBvbGxTZWxlY3RvcigpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycy5TZWxlY3RTZWxlY3RvcigpCiAgICAgICAgICAgIHNlbGVjdG9yLnJlZ2lzdGVyKHNvY2tubywgc2VsZWN0b3JzLkVWRU5UX1dSSVRFKQoKICAgICAgICAgICAgdG90YWxfc2VudCA9IDAKICAgICAgICAgICAgIyBsb2NhbGl6ZSB2YXJpYWJsZSBhY2Nlc3MgdG8gbWluaW1pemUgb3ZlcmhlYWQKICAgICAgICAgICAgc2VsZWN0b3Jfc2VsZWN0ID0gc2VsZWN0b3Iuc2VsZWN0CiAgICAgICAgICAgIG9zX3NlbmRmaWxlID0gb3Muc2VuZGZpbGUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGFuZCBub3Qgc2VsZWN0b3Jfc2VsZWN0KHRpbWVvdXQpOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IoJ3RpbWVkIG91dCcpCiAgICAgICAgICAgICAgICAgICAgaWYgY291bnQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IGNvdW50IC0gdG90YWxfc2VudAogICAgICAgICAgICAgICAgICAgICAgICBpZiBibG9ja3NpemUgPD0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBzZW50ID0gb3Nfc2VuZGZpbGUoc29ja25vLCBmaWxlbm8sIG9mZnNldCwgYmxvY2tzaXplKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0aW1lb3V0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCbG9jayB1bnRpbCB0aGUgc29ja2V0IGlzIHJlYWR5IHRvIHNlbmQgc29tZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhOyBhdm9pZHMgaG9nZ2luZyBDUFUgcmVzb3VyY2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3Jfc2VsZWN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRvdGFsX3NlbnQgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgY2FuIGdldCBoZXJlIGZvciBkaWZmZXJlbnQgcmVhc29ucywgdGhlIG1haW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25lIGJlaW5nICdmaWxlJyBpcyBub3QgYSByZWd1bGFyIG1tYXAoMiktbGlrZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaWxlLCBpbiB3aGljaCBjYXNlIHdlJ2xsIGZhbGwgYmFjayBvbiB1c2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwbGFpbiBzZW5kKCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZShlcnIpCiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVyciBmcm9tIE5vbmUKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBzZW50ID09IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBFT0YKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfc2VudAogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgaWYgdG90YWxfc2VudCA+IDAgYW5kIGhhc2F0dHIoZmlsZSwgJ3NlZWsnKToKICAgICAgICAgICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0KQogICAgZWxzZToKICAgICAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kZmlsZShzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CiAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKAogICAgICAgICAgICAgICAgIm9zLnNlbmRmaWxlKCkgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIikKCiAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kKHNlbGYsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKToKICAgICAgICBzZWxmLl9jaGVja19zZW5kZmlsZV9wYXJhbXMoZmlsZSwgb2Zmc2V0LCBjb3VudCkKICAgICAgICBpZiBzZWxmLmdldHRpbWVvdXQoKSA9PSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub24tYmxvY2tpbmcgc29ja2V0cyBhcmUgbm90IHN1cHBvcnRlZCIpCiAgICAgICAgaWYgb2Zmc2V0OgogICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0KQogICAgICAgIGJsb2Nrc2l6ZSA9IG1pbihjb3VudCwgODE5MikgaWYgY291bnQgZWxzZSA4MTkyCiAgICAgICAgdG90YWxfc2VudCA9IDAKICAgICAgICAjIGxvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZAogICAgICAgIGZpbGVfcmVhZCA9IGZpbGUucmVhZAogICAgICAgIHNvY2tfc2VuZCA9IHNlbGYuc2VuZAogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIGlmIGNvdW50OgogICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IG1pbihjb3VudCAtIHRvdGFsX3NlbnQsIGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICAgICBpZiBibG9ja3NpemUgPD0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGRhdGEgPSBtZW1vcnl2aWV3KGZpbGVfcmVhZChibG9ja3NpemUpKQogICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgICMgRU9GCiAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VudCA9IHNvY2tfc2VuZChkYXRhKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbnQgPCBsZW4oZGF0YSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVtzZW50Ol0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHJldHVybiB0b3RhbF9zZW50CiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgaWYgdG90YWxfc2VudCA+IDAgYW5kIGhhc2F0dHIoZmlsZSwgJ3NlZWsnKToKICAgICAgICAgICAgICAgIGZpbGUuc2VlayhvZmZzZXQgKyB0b3RhbF9zZW50KQoKICAgIGRlZiBfY2hlY2tfc2VuZGZpbGVfcGFyYW1zKHNlbGYsIGZpbGUsIG9mZnNldCwgY291bnQpOgogICAgICAgIGlmICdiJyBub3QgaW4gZ2V0YXR0cihmaWxlLCAnbW9kZScsICdiJyk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZpbGUgc2hvdWxkIGJlIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSIpCiAgICAgICAgaWYgbm90IHNlbGYudHlwZSAmIFNPQ0tfU1RSRUFNOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvbmx5IFNPQ0tfU1RSRUFNIHR5cGUgc29ja2V0cyBhcmUgc3VwcG9ydGVkIikKICAgICAgICBpZiBjb3VudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY291bnQsIGludCk6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgImNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIChnb3QgeyFyfSkiLmZvcm1hdChjb3VudCkpCiAgICAgICAgICAgIGlmIGNvdW50IDw9IDA6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICJjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciAoZ290IHshcn0pIi5mb3JtYXQoY291bnQpKQoKICAgIGRlZiBzZW5kZmlsZShzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CiAgICAgICAgIiIic2VuZGZpbGUoZmlsZVssIG9mZnNldFssIGNvdW50XV0pIC0+IHNlbnQKCiAgICAgICAgU2VuZCBhIGZpbGUgdW50aWwgRU9GIGlzIHJlYWNoZWQgYnkgdXNpbmcgaGlnaC1wZXJmb3JtYW5jZQogICAgICAgIG9zLnNlbmRmaWxlKCkgYW5kIHJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoCiAgICAgICAgd2VyZSBzZW50LgogICAgICAgICpmaWxlKiBtdXN0IGJlIGEgcmVndWxhciBmaWxlIG9iamVjdCBvcGVuZWQgaW4gYmluYXJ5IG1vZGUuCiAgICAgICAgSWYgb3Muc2VuZGZpbGUoKSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIFdpbmRvd3MpIG9yIGZpbGUgaXMKICAgICAgICBub3QgYSByZWd1bGFyIGZpbGUgc29ja2V0LnNlbmQoKSB3aWxsIGJlIHVzZWQgaW5zdGVhZC4KICAgICAgICAqb2Zmc2V0KiB0ZWxscyBmcm9tIHdoZXJlIHRvIHN0YXJ0IHJlYWRpbmcgdGhlIGZpbGUuCiAgICAgICAgSWYgc3BlY2lmaWVkLCAqY291bnQqIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdG8gdHJhbnNtaXQKICAgICAgICBhcyBvcHBvc2VkIHRvIHNlbmRpbmcgdGhlIGZpbGUgdW50aWwgRU9GIGlzIHJlYWNoZWQuCiAgICAgICAgRmlsZSBwb3NpdGlvbiBpcyB1cGRhdGVkIG9uIHJldHVybiBvciBhbHNvIGluIGNhc2Ugb2YgZXJyb3IgaW4KICAgICAgICB3aGljaCBjYXNlIGZpbGUudGVsbCgpIGNhbiBiZSB1c2VkIHRvIGZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZgogICAgICAgIGJ5dGVzIHdoaWNoIHdlcmUgc2VudC4KICAgICAgICBUaGUgc29ja2V0IG11c3QgYmUgb2YgU09DS19TVFJFQU0gdHlwZS4KICAgICAgICBOb24tYmxvY2tpbmcgc29ja2V0cyBhcmUgbm90IHN1cHBvcnRlZC4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZW5kZmlsZV91c2Vfc2VuZGZpbGUoZmlsZSwgb2Zmc2V0LCBjb3VudCkKICAgICAgICBleGNlcHQgX0dpdmV1cE9uU2VuZGZpbGU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZW5kZmlsZV91c2Vfc2VuZChmaWxlLCBvZmZzZXQsIGNvdW50KQoKICAgIGRlZiBfZGVjcmVmX3NvY2tldGlvcyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9pb19yZWZzID4gMDoKICAgICAgICAgICAgc2VsZi5faW9fcmVmcyAtPSAxCiAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgX3JlYWxfY2xvc2Uoc2VsZiwgX3NzPV9zb2NrZXQuc29ja2V0KToKICAgICAgICAjIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYW55IGdsb2JhbHMuIFNlZSBpc3N1ZSAjODA4MTY0LgogICAgICAgIF9zcy5jbG9zZShzZWxmKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAjIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCByZWZlcmVuY2UgYW55IGdsb2JhbHMuIFNlZSBpc3N1ZSAjODA4MTY0LgogICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKICAgICAgICBpZiBzZWxmLl9pb19yZWZzIDw9IDA6CiAgICAgICAgICAgIHNlbGYuX3JlYWxfY2xvc2UoKQoKICAgIGRlZiBkZXRhY2goc2VsZik6CiAgICAgICAgIiIiZGV0YWNoKCkgLT4gZmlsZSBkZXNjcmlwdG9yCgogICAgICAgIENsb3NlIHRoZSBzb2NrZXQgb2JqZWN0IHdpdGhvdXQgY2xvc2luZyB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IuCiAgICAgICAgVGhlIG9iamVjdCBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzIGNhbGwsIGJ1dCB0aGUgZmlsZSBkZXNjcmlwdG9yCiAgICAgICAgY2FuIGJlIHJldXNlZCBmb3Igb3RoZXIgcHVycG9zZXMuICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIHJldHVybmVkLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKICAgICAgICByZXR1cm4gc3VwZXIoKS5kZXRhY2goKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGZhbWlseShzZWxmKToKICAgICAgICAiIiJSZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBhZGRyZXNzIGZhbWlseSBmb3IgdGhpcyBzb2NrZXQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIF9pbnRlbnVtX2NvbnZlcnRlcihzdXBlcigpLmZhbWlseSwgQWRkcmVzc0ZhbWlseSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiB0eXBlKHNlbGYpOgogICAgICAgICIiIlJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIHNvY2tldCB0eXBlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBfaW50ZW51bV9jb252ZXJ0ZXIoc3VwZXIoKS50eXBlLCBTb2NrZXRLaW5kKQoKICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICBkZWYgZ2V0X2luaGVyaXRhYmxlKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gb3MuZ2V0X2hhbmRsZV9pbmhlcml0YWJsZShzZWxmLmZpbGVubygpKQogICAgICAgIGRlZiBzZXRfaW5oZXJpdGFibGUoc2VsZiwgaW5oZXJpdGFibGUpOgogICAgICAgICAgICBvcy5zZXRfaGFuZGxlX2luaGVyaXRhYmxlKHNlbGYuZmlsZW5vKCksIGluaGVyaXRhYmxlKQogICAgZWxzZToKICAgICAgICBkZWYgZ2V0X2luaGVyaXRhYmxlKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gb3MuZ2V0X2luaGVyaXRhYmxlKHNlbGYuZmlsZW5vKCkpCiAgICAgICAgZGVmIHNldF9pbmhlcml0YWJsZShzZWxmLCBpbmhlcml0YWJsZSk6CiAgICAgICAgICAgIG9zLnNldF9pbmhlcml0YWJsZShzZWxmLmZpbGVubygpLCBpbmhlcml0YWJsZSkKICAgIGdldF9pbmhlcml0YWJsZS5fX2RvY19fID0gIkdldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc29ja2V0IgogICAgc2V0X2luaGVyaXRhYmxlLl9fZG9jX18gPSAiU2V0IHRoZSBpbmhlcml0YWJsZSBmbGFnIG9mIHRoZSBzb2NrZXQiCgpkZWYgZnJvbWZkKGZkLCBmYW1pbHksIHR5cGUsIHByb3RvPTApOgogICAgIiIiIGZyb21mZChmZCwgZmFtaWx5LCB0eXBlWywgcHJvdG9dKSAtPiBzb2NrZXQgb2JqZWN0CgogICAgQ3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGEgZHVwbGljYXRlIG9mIHRoZSBnaXZlbiBmaWxlCiAgICBkZXNjcmlwdG9yLiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciBzb2NrZXQoKS4KICAgICIiIgogICAgbmZkID0gZHVwKGZkKQogICAgcmV0dXJuIHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvLCBuZmQpCgppZiBoYXNhdHRyKF9zb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpOgogICAgaW1wb3J0IGFycmF5CgogICAgZGVmIHNlbmRfZmRzKHNvY2ssIGJ1ZmZlcnMsIGZkcywgZmxhZ3M9MCwgYWRkcmVzcz1Ob25lKToKICAgICAgICAiIiIgc2VuZF9mZHMoc29jaywgYnVmZmVycywgZmRzWywgZmxhZ3NbLCBhZGRyZXNzXV0pIC0+IGludGVnZXIKCiAgICAgICAgU2VuZCB0aGUgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzIGZkcyBvdmVyIGFuIEFGX1VOSVggc29ja2V0LgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzb2NrLnNlbmRtc2coYnVmZmVycywgWyhfc29ja2V0LlNPTF9TT0NLRVQsCiAgICAgICAgICAgIF9zb2NrZXQuU0NNX1JJR0hUUywgYXJyYXkuYXJyYXkoImkiLCBmZHMpKV0pCiAgICBfX2FsbF9fLmFwcGVuZCgic2VuZF9mZHMiKQoKaWYgaGFzYXR0cihfc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKToKICAgIGltcG9ydCBhcnJheQoKICAgIGRlZiByZWN2X2Zkcyhzb2NrLCBidWZzaXplLCBtYXhmZHMsIGZsYWdzPTApOgogICAgICAgICIiIiByZWN2X2Zkcyhzb2NrLCBidWZzaXplLCBtYXhmZHNbLCBmbGFnc10pIC0+IChkYXRhLCBsaXN0IG9mIGZpbGUKICAgICAgICBkZXNjcmlwdG9ycywgbXNnX2ZsYWdzLCBhZGRyZXNzKQoKICAgICAgICBSZWNlaXZlIHVwIHRvIG1heGZkcyBmaWxlIGRlc2NyaXB0b3JzIHJldHVybmluZyB0aGUgbWVzc2FnZQogICAgICAgIGRhdGEgYW5kIGEgbGlzdCBjb250YWluaW5nIHRoZSBkZXNjcmlwdG9ycy4KICAgICAgICAiIiIKICAgICAgICAjIEFycmF5IG9mIGludHMKICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCiAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNvY2sucmVjdm1zZyhidWZzaXplLAogICAgICAgICAgICBfc29ja2V0LkNNU0dfTEVOKG1heGZkcyAqIGZkcy5pdGVtc2l6ZSkpCiAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CiAgICAgICAgICAgIGlmIChjbXNnX2xldmVsID09IF9zb2NrZXQuU09MX1NPQ0tFVCBhbmQgY21zZ190eXBlID09IF9zb2NrZXQuU0NNX1JJR0hUUyk6CiAgICAgICAgICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YVs6CiAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjbXNnX2RhdGEpIC0gKGxlbihjbXNnX2RhdGEpICUgZmRzLml0ZW1zaXplKV0pCgogICAgICAgIHJldHVybiBtc2csIGxpc3QoZmRzKSwgZmxhZ3MsIGFkZHIKICAgIF9fYWxsX18uYXBwZW5kKCJyZWN2X2ZkcyIpCgppZiBoYXNhdHRyKF9zb2NrZXQuc29ja2V0LCAic2hhcmUiKToKICAgIGRlZiBmcm9tc2hhcmUoaW5mbyk6CiAgICAgICAgIiIiIGZyb21zaGFyZShpbmZvKSAtPiBzb2NrZXQgb2JqZWN0CgogICAgICAgIENyZWF0ZSBhIHNvY2tldCBvYmplY3QgZnJvbSB0aGUgYnl0ZXMgb2JqZWN0IHJldHVybmVkIGJ5CiAgICAgICAgc29ja2V0LnNoYXJlKHBpZCkuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNvY2tldCgwLCAwLCAwLCBpbmZvKQogICAgX19hbGxfXy5hcHBlbmQoImZyb21zaGFyZSIpCgppZiBoYXNhdHRyKF9zb2NrZXQsICJzb2NrZXRwYWlyIik6CgogICAgZGVmIHNvY2tldHBhaXIoZmFtaWx5PU5vbmUsIHR5cGU9U09DS19TVFJFQU0sIHByb3RvPTApOgogICAgICAgICIiInNvY2tldHBhaXIoW2ZhbWlseVssIHR5cGVbLCBwcm90b11dXSkgLT4gKHNvY2tldCBvYmplY3QsIHNvY2tldCBvYmplY3QpCgogICAgICAgIENyZWF0ZSBhIHBhaXIgb2Ygc29ja2V0IG9iamVjdHMgZnJvbSB0aGUgc29ja2V0cyByZXR1cm5lZCBieSB0aGUgcGxhdGZvcm0KICAgICAgICBzb2NrZXRwYWlyKCkgZnVuY3Rpb24uCiAgICAgICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHNvY2tldCgpIGV4Y2VwdCB0aGUgZGVmYXVsdCBmYW1pbHkgaXMKICAgICAgICBBRl9VTklYIGlmIGRlZmluZWQgb24gdGhlIHBsYXRmb3JtOyBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIEFGX0lORVQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgZmFtaWx5IGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZhbWlseSA9IEFGX1VOSVgKICAgICAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKICAgICAgICAgICAgICAgIGZhbWlseSA9IEFGX0lORVQKICAgICAgICBhLCBiID0gX3NvY2tldC5zb2NrZXRwYWlyKGZhbWlseSwgdHlwZSwgcHJvdG8pCiAgICAgICAgYSA9IHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvLCBhLmRldGFjaCgpKQogICAgICAgIGIgPSBzb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgYi5kZXRhY2goKSkKICAgICAgICByZXR1cm4gYSwgYgoKZWxzZToKCiAgICAjIE9yaWdpbjogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vNDMyNTc4MywgYnkgR2VlcnQgSmFuc2VuLiAgUHVibGljIGRvbWFpbi4KICAgIGRlZiBzb2NrZXRwYWlyKGZhbWlseT1BRl9JTkVULCB0eXBlPVNPQ0tfU1RSRUFNLCBwcm90bz0wKToKICAgICAgICBpZiBmYW1pbHkgPT0gQUZfSU5FVDoKICAgICAgICAgICAgaG9zdCA9IF9MT0NBTEhPU1QKICAgICAgICBlbGlmIGZhbWlseSA9PSBBRl9JTkVUNjoKICAgICAgICAgICAgaG9zdCA9IF9MT0NBTEhPU1RfVjYKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IEFGX0lORVQgYW5kIEFGX0lORVQ2IHNvY2tldCBhZGRyZXNzIGZhbWlsaWVzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCIpCiAgICAgICAgaWYgdHlwZSAhPSBTT0NLX1NUUkVBTToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBTT0NLX1NUUkVBTSBzb2NrZXQgdHlwZSBpcyBzdXBwb3J0ZWQiKQogICAgICAgIGlmIHByb3RvICE9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9ubHkgcHJvdG9jb2wgemVybyBpcyBzdXBwb3J0ZWQiKQoKICAgICAgICAjIFdlIGNyZWF0ZSBhIGNvbm5lY3RlZCBUQ1Agc29ja2V0LiBOb3RlIHRoZSB0cmljayB3aXRoCiAgICAgICAgIyBzZXRibG9ja2luZyhGYWxzZSkgdGhhdCBwcmV2ZW50cyB1cyBmcm9tIGhhdmluZyB0byBjcmVhdGUgYSB0aHJlYWQuCiAgICAgICAgbHNvY2sgPSBzb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bykKICAgICAgICB0cnk6CiAgICAgICAgICAgIGxzb2NrLmJpbmQoKGhvc3QsIDApKQogICAgICAgICAgICBsc29jay5saXN0ZW4oKQogICAgICAgICAgICAjIE9uIElQdjYsIGlnbm9yZSBmbG93X2luZm8gYW5kIHNjb3BlX2lkCiAgICAgICAgICAgIGFkZHIsIHBvcnQgPSBsc29jay5nZXRzb2NrbmFtZSgpWzoyXQogICAgICAgICAgICBjc29jayA9IHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBjc29jay5zZXRibG9ja2luZyhGYWxzZSkKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBjc29jay5jb25uZWN0KChhZGRyLCBwb3J0KSkKICAgICAgICAgICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBjc29jay5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICAgICAgICAgc3NvY2ssIF8gPSBsc29jay5hY2NlcHQoKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBjc29jay5jbG9zZSgpCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGxzb2NrLmNsb3NlKCkKICAgICAgICByZXR1cm4gKHNzb2NrLCBjc29jaykKICAgIF9fYWxsX18uYXBwZW5kKCJzb2NrZXRwYWlyIikKCnNvY2tldHBhaXIuX19kb2NfXyA9ICIiInNvY2tldHBhaXIoW2ZhbWlseVssIHR5cGVbLCBwcm90b11dXSkgLT4gKHNvY2tldCBvYmplY3QsIHNvY2tldCBvYmplY3QpCkNyZWF0ZSBhIHBhaXIgb2Ygc29ja2V0IG9iamVjdHMgZnJvbSB0aGUgc29ja2V0cyByZXR1cm5lZCBieSB0aGUgcGxhdGZvcm0Kc29ja2V0cGFpcigpIGZ1bmN0aW9uLgpUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3Igc29ja2V0KCkgZXhjZXB0IHRoZSBkZWZhdWx0IGZhbWlseSBpcyBBRl9VTklYCmlmIGRlZmluZWQgb24gdGhlIHBsYXRmb3JtOyBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIEFGX0lORVQuCiIiIgoKX2Jsb2NraW5nX2Vycm5vcyA9IHsgRUFHQUlOLCBFV09VTERCTE9DSyB9CgpjbGFzcyBTb2NrZXRJTyhpby5SYXdJT0Jhc2UpOgoKICAgICIiIlJhdyBJL08gaW1wbGVtZW50YXRpb24gZm9yIHN0cmVhbSBzb2NrZXRzLgoKICAgIFRoaXMgY2xhc3Mgc3VwcG9ydHMgdGhlIG1ha2VmaWxlKCkgbWV0aG9kIG9uIHNvY2tldHMuICBJdCBwcm92aWRlcwogICAgdGhlIHJhdyBJL08gaW50ZXJmYWNlIG9uIHRvcCBvZiBhIHNvY2tldCBvYmplY3QuCiAgICAiIiIKCiAgICAjIE9uZSBtaWdodCB3b25kZXIgd2h5IG5vdCBsZXQgRmlsZUlPIGRvIHRoZSBqb2IgaW5zdGVhZC4gIFRoZXJlIGFyZSB0d28KICAgICMgbWFpbiByZWFzb25zIHdoeSBGaWxlSU8gaXMgbm90IGFkYXB0ZWQ6CiAgICAjIC0gaXQgd291bGRuJ3Qgd29yayB1bmRlciBXaW5kb3dzICh3aGVyZSB5b3UgY2FuJ3QgdXNlZCByZWFkKCkgYW5kCiAgICAjICAgd3JpdGUoKSBvbiBhIHNvY2tldCBoYW5kbGUpCiAgICAjIC0gaXQgd291bGRuJ3Qgd29yayB3aXRoIHNvY2tldCB0aW1lb3V0cyAoRmlsZUlPIHdvdWxkIGlnbm9yZSB0aGUKICAgICMgICB0aW1lb3V0IGFuZCBjb25zaWRlciB0aGUgc29ja2V0IG5vbi1ibG9ja2luZykKCiAgICAjIFhYWCBNb3JlIGRvY3MKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc29jaywgbW9kZSk6CiAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciLCAicnciLCAicmIiLCAid2IiLCAicndiIik6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbW9kZTogJXIiICUgbW9kZSkKICAgICAgICBpby5SYXdJT0Jhc2UuX19pbml0X18oc2VsZikKICAgICAgICBzZWxmLl9zb2NrID0gc29jawogICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKICAgICAgICAgICAgbW9kZSArPSAiYiIKICAgICAgICBzZWxmLl9tb2RlID0gbW9kZQogICAgICAgIHNlbGYuX3JlYWRpbmcgPSAiciIgaW4gbW9kZQogICAgICAgIHNlbGYuX3dyaXRpbmcgPSAidyIgaW4gbW9kZQogICAgICAgIHNlbGYuX3RpbWVvdXRfb2NjdXJyZWQgPSBGYWxzZQoKICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIHRoZSB3cml0YWJsZSBidWZmZXIgKmIqIGFuZCByZXR1cm4KICAgICAgICB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBJZiB0aGUgc29ja2V0IGlzIG5vbi1ibG9ja2luZyBhbmQgbm8gYnl0ZXMKICAgICAgICBhcmUgYXZhaWxhYmxlLCBOb25lIGlzIHJldHVybmVkLgoKICAgICAgICBJZiAqYiogaXMgbm9uLWVtcHR5LCBhIDAgcmV0dXJuIHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSBjb25uZWN0aW9uCiAgICAgICAgd2FzIHNodXRkb3duIGF0IHRoZSBvdGhlciBlbmQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgIHNlbGYuX2NoZWNrUmVhZGFibGUoKQogICAgICAgIGlmIHNlbGYuX3RpbWVvdXRfb2NjdXJyZWQ6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoImNhbm5vdCByZWFkIGZyb20gdGltZWQgb3V0IG9iamVjdCIpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2sucmVjdl9pbnRvKGIpCiAgICAgICAgICAgIGV4Y2VwdCB0aW1lb3V0OgogICAgICAgICAgICAgICAgc2VsZi5fdGltZW91dF9vY2N1cnJlZCA9IFRydWUKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlOgogICAgICAgICAgICAgICAgaWYgZS5lcnJubyBpbiBfYmxvY2tpbmdfZXJybm9zOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICByYWlzZQoKICAgIGRlZiB3cml0ZShzZWxmLCBiKToKICAgICAgICAiIiJXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCAqYiogdG8gdGhlIHNvY2tldAogICAgICAgIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgVGhpcyBjYW4gYmUgbGVzcyB0aGFuCiAgICAgICAgbGVuKGIpIGlmIG5vdCBhbGwgZGF0YSBjb3VsZCBiZSB3cml0dGVuLiAgSWYgdGhlIHNvY2tldCBpcwogICAgICAgIG5vbi1ibG9ja2luZyBhbmQgbm8gYnl0ZXMgY291bGQgYmUgd3JpdHRlbiBOb25lIGlzIHJldHVybmVkLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICBzZWxmLl9jaGVja1dyaXRhYmxlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9zb2NrLnNlbmQoYikKICAgICAgICBleGNlcHQgZXJyb3IgYXMgZToKICAgICAgICAgICAgIyBYWFggd2hhdCBhYm91dCBFSU5UUj8KICAgICAgICAgICAgaWYgZS5lcnJubyBpbiBfYmxvY2tpbmdfZXJybm9zOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgcmVhZGFibGUoc2VsZik6CiAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgU29ja2V0SU8gaXMgb3BlbiBmb3IgcmVhZGluZy4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgc29ja2V0LiIpCiAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRpbmcKCiAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgU29ja2V0SU8gaXMgb3BlbiBmb3Igd3JpdGluZy4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgc29ja2V0LiIpCiAgICAgICAgcmV0dXJuIHNlbGYuX3dyaXRpbmcKCiAgICBkZWYgc2Vla2FibGUoc2VsZik6CiAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgU29ja2V0SU8gaXMgb3BlbiBmb3Igc2Vla2luZy4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgc29ja2V0LiIpCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuc2Vla2FibGUoKQoKICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIHVuZGVybHlpbmcgc29ja2V0LgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICByZXR1cm4gc2VsZi5fc29jay5maWxlbm8oKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgogICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlbm8oKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAtMQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1vZGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiQ2xvc2UgdGhlIFNvY2tldElPIG9iamVjdC4gIFRoaXMgZG9lc24ndCBjbG9zZSB0aGUgdW5kZXJseWluZwogICAgICAgIHNvY2tldCwgZXhjZXB0IGlmIGFsbCByZWZlcmVuY2VzIHRvIGl0IGhhdmUgZGlzYXBwZWFyZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlvLlJhd0lPQmFzZS5jbG9zZShzZWxmKQogICAgICAgIHNlbGYuX3NvY2suX2RlY3JlZl9zb2NrZXRpb3MoKQogICAgICAgIHNlbGYuX3NvY2sgPSBOb25lCgoKZGVmIGdldGZxZG4obmFtZT0nJyk6CiAgICAiIiJHZXQgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIGZyb20gbmFtZS4KCiAgICBBbiBlbXB0eSBhcmd1bWVudCBpcyBpbnRlcnByZXRlZCBhcyBtZWFuaW5nIHRoZSBsb2NhbCBob3N0LgoKICAgIEZpcnN0IHRoZSBob3N0bmFtZSByZXR1cm5lZCBieSBnZXRob3N0YnlhZGRyKCkgaXMgY2hlY2tlZCwgdGhlbgogICAgcG9zc2libHkgZXhpc3RpbmcgYWxpYXNlcy4gSW4gY2FzZSBubyBGUUROIGlzIGF2YWlsYWJsZSBhbmQgYG5hbWVgCiAgICB3YXMgZ2l2ZW4sIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4gSWYgYG5hbWVgIHdhcyBlbXB0eSwgJzAuMC4wLjAnIG9yICc6OicsCiAgICBob3N0bmFtZSBmcm9tIGdldGhvc3RuYW1lKCkgaXMgcmV0dXJuZWQuCiAgICAiIiIKICAgIG5hbWUgPSBuYW1lLnN0cmlwKCkKICAgIGlmIG5vdCBuYW1lIG9yIG5hbWUgaW4gKCcwLjAuMC4wJywgJzo6Jyk6CiAgICAgICAgbmFtZSA9IGdldGhvc3RuYW1lKCkKICAgIHRyeToKICAgICAgICBob3N0bmFtZSwgYWxpYXNlcywgaXBhZGRycyA9IGdldGhvc3RieWFkZHIobmFtZSkKICAgIGV4Y2VwdCBlcnJvcjoKICAgICAgICBwYXNzCiAgICBlbHNlOgogICAgICAgIGFsaWFzZXMuaW5zZXJ0KDAsIGhvc3RuYW1lKQogICAgICAgIGZvciBuYW1lIGluIGFsaWFzZXM6CiAgICAgICAgICAgIGlmICcuJyBpbiBuYW1lOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICBuYW1lID0gaG9zdG5hbWUKICAgIHJldHVybiBuYW1lCgoKX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQgPSBvYmplY3QoKQoKZGVmIGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lLCAqLCBhbGxfZXJyb3JzPUZhbHNlKToKICAgICIiIkNvbm5lY3QgdG8gKmFkZHJlc3MqIGFuZCByZXR1cm4gdGhlIHNvY2tldCBvYmplY3QuCgogICAgQ29udmVuaWVuY2UgZnVuY3Rpb24uICBDb25uZWN0IHRvICphZGRyZXNzKiAoYSAyLXR1cGxlIGBgKGhvc3QsCiAgICBwb3J0KWBgKSBhbmQgcmV0dXJuIHRoZSBzb2NrZXQgb2JqZWN0LiAgUGFzc2luZyB0aGUgb3B0aW9uYWwKICAgICp0aW1lb3V0KiBwYXJhbWV0ZXIgd2lsbCBzZXQgdGhlIHRpbWVvdXQgb24gdGhlIHNvY2tldCBpbnN0YW5jZQogICAgYmVmb3JlIGF0dGVtcHRpbmcgdG8gY29ubmVjdC4gIElmIG5vICp0aW1lb3V0KiBpcyBzdXBwbGllZCwgdGhlCiAgICBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0IHNldHRpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGdldGRlZmF1bHR0aW1lb3V0YAogICAgaXMgdXNlZC4gIElmICpzb3VyY2VfYWRkcmVzcyogaXMgc2V0IGl0IG11c3QgYmUgYSB0dXBsZSBvZiAoaG9zdCwgcG9ydCkKICAgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgYXMgYSBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgbWFraW5nIHRoZSBjb25uZWN0aW9uLgogICAgQSBob3N0IG9mICcnIG9yIHBvcnQgMCB0ZWxscyB0aGUgT1MgdG8gdXNlIHRoZSBkZWZhdWx0LiBXaGVuIGEgY29ubmVjdGlvbgogICAgY2Fubm90IGJlIGNyZWF0ZWQsIHJhaXNlcyB0aGUgbGFzdCBlcnJvciBpZiAqYWxsX2Vycm9ycyogaXMgRmFsc2UsCiAgICBhbmQgYW4gRXhjZXB0aW9uR3JvdXAgb2YgYWxsIGVycm9ycyBpZiAqYWxsX2Vycm9ycyogaXMgVHJ1ZS4KICAgICIiIgoKICAgIGhvc3QsIHBvcnQgPSBhZGRyZXNzCiAgICBleGNlcHRpb25zID0gW10KICAgIGZvciByZXMgaW4gZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgMCwgU09DS19TVFJFQU0pOgogICAgICAgIGFmLCBzb2NrdHlwZSwgcHJvdG8sIGNhbm9ubmFtZSwgc2EgPSByZXMKICAgICAgICBzb2NrID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgc29jayA9IHNvY2tldChhZiwgc29ja3R5cGUsIHByb3RvKQogICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVDoKICAgICAgICAgICAgICAgIHNvY2suc2V0dGltZW91dCh0aW1lb3V0KQogICAgICAgICAgICBpZiBzb3VyY2VfYWRkcmVzczoKICAgICAgICAgICAgICAgIHNvY2suYmluZChzb3VyY2VfYWRkcmVzcykKICAgICAgICAgICAgc29jay5jb25uZWN0KHNhKQogICAgICAgICAgICAjIEJyZWFrIGV4cGxpY2l0bHkgYSByZWZlcmVuY2UgY3ljbGUKICAgICAgICAgICAgZXhjZXB0aW9ucy5jbGVhcigpCiAgICAgICAgICAgIHJldHVybiBzb2NrCgogICAgICAgIGV4Y2VwdCBlcnJvciBhcyBleGM6CiAgICAgICAgICAgIGlmIG5vdCBhbGxfZXJyb3JzOgogICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5jbGVhcigpICAjIHJhaXNlIG9ubHkgdGhlIGxhc3QgZXJyb3IKICAgICAgICAgICAgZXhjZXB0aW9ucy5hcHBlbmQoZXhjKQogICAgICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCgogICAgaWYgbGVuKGV4Y2VwdGlvbnMpOgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgbm90IGFsbF9lcnJvcnM6CiAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zWzBdCiAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbkdyb3VwKCJjcmVhdGVfY29ubmVjdGlvbiBmYWlsZWQiLCBleGNlcHRpb25zKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICMgQnJlYWsgZXhwbGljaXRseSBhIHJlZmVyZW5jZSBjeWNsZQogICAgICAgICAgICBleGNlcHRpb25zLmNsZWFyKCkKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgZXJyb3IoImdldGFkZHJpbmZvIHJldHVybnMgYW4gZW1wdHkgbGlzdCIpCgoKZGVmIGhhc19kdWFsc3RhY2tfaXB2NigpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIGNyZWF0aW5nIGEgU09DS19TVFJFQU0gc29ja2V0CiAgICB3aGljaCBjYW4gaGFuZGxlIGJvdGggQUZfSU5FVCBhbmQgQUZfSU5FVDYgKElQdjQgLyBJUHY2KSBjb25uZWN0aW9ucy4KICAgICIiIgogICAgaWYgbm90IGhhc19pcHY2IFwKICAgICAgICAgICAgb3Igbm90IGhhc2F0dHIoX3NvY2tldCwgJ0lQUFJPVE9fSVBWNicpIFwKICAgICAgICAgICAgb3Igbm90IGhhc2F0dHIoX3NvY2tldCwgJ0lQVjZfVjZPTkxZJyk6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICB0cnk6CiAgICAgICAgd2l0aCBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfU1RSRUFNKSBhcyBzb2NrOgogICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoSVBQUk9UT19JUFY2LCBJUFY2X1Y2T05MWSwgMCkKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgIGV4Y2VwdCBlcnJvcjoKICAgICAgICByZXR1cm4gRmFsc2UKCgpkZWYgY3JlYXRlX3NlcnZlcihhZGRyZXNzLCAqLCBmYW1pbHk9QUZfSU5FVCwgYmFja2xvZz1Ob25lLCByZXVzZV9wb3J0PUZhbHNlLAogICAgICAgICAgICAgICAgICBkdWFsc3RhY2tfaXB2Nj1GYWxzZSk6CiAgICAiIiJDb252ZW5pZW5jZSBmdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgU09DS19TVFJFQU0gdHlwZSBzb2NrZXQKICAgIGJvdW5kIHRvICphZGRyZXNzKiAoYSAyLXR1cGxlIChob3N0LCBwb3J0KSkgYW5kIHJldHVybiB0aGUgc29ja2V0CiAgICBvYmplY3QuCgogICAgKmZhbWlseSogc2hvdWxkIGJlIGVpdGhlciBBRl9JTkVUIG9yIEFGX0lORVQ2LgogICAgKmJhY2tsb2cqIGlzIHRoZSBxdWV1ZSBzaXplIHBhc3NlZCB0byBzb2NrZXQubGlzdGVuKCkuCiAgICAqcmV1c2VfcG9ydCogZGljdGF0ZXMgd2hldGhlciB0byB1c2UgdGhlIFNPX1JFVVNFUE9SVCBzb2NrZXQgb3B0aW9uLgogICAgKmR1YWxzdGFja19pcHY2KjogaWYgdHJ1ZSBhbmQgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIGl0LCBpdCB3aWxsCiAgICBjcmVhdGUgYW4gQUZfSU5FVDYgc29ja2V0IGFibGUgdG8gYWNjZXB0IGJvdGggSVB2NCBvciBJUHY2CiAgICBjb25uZWN0aW9ucy4gV2hlbiBmYWxzZSBpdCB3aWxsIGV4cGxpY2l0bHkgZGlzYWJsZSB0aGlzIG9wdGlvbiBvbgogICAgcGxhdGZvcm1zIHRoYXQgZW5hYmxlIGl0IGJ5IGRlZmF1bHQgKGUuZy4gTGludXgpLgoKICAgID4+PiB3aXRoIGNyZWF0ZV9zZXJ2ZXIoKCcnLCA4MDAwKSkgYXMgc2VydmVyOgogICAgLi4uICAgICB3aGlsZSBUcnVlOgogICAgLi4uICAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQogICAgLi4uICAgICAgICAgIyBoYW5kbGUgbmV3IGNvbm5lY3Rpb24KICAgICIiIgogICAgaWYgcmV1c2VfcG9ydCBhbmQgbm90IGhhc2F0dHIoX3NvY2tldCwgIlNPX1JFVVNFUE9SVCIpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNPX1JFVVNFUE9SVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKQogICAgaWYgZHVhbHN0YWNrX2lwdjY6CiAgICAgICAgaWYgbm90IGhhc19kdWFsc3RhY2tfaXB2NigpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdWFsc3RhY2tfaXB2NiBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKQogICAgICAgIGlmIGZhbWlseSAhPSBBRl9JTkVUNjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVhbHN0YWNrX2lwdjYgcmVxdWlyZXMgQUZfSU5FVDYgZmFtaWx5IikKICAgIHNvY2sgPSBzb2NrZXQoZmFtaWx5LCBTT0NLX1NUUkVBTSkKICAgIHRyeToKICAgICAgICAjIE5vdGUgYWJvdXQgV2luZG93cy4gV2UgZG9uJ3Qgc2V0IFNPX1JFVVNFQUREUiBiZWNhdXNlOgogICAgICAgICMgMSkgSXQncyB1bm5lY2Vzc2FyeTogYmluZCgpIHdpbGwgc3VjY2VlZCBldmVuIGluIGNhc2Ugb2YgYQogICAgICAgICMgcHJldmlvdXMgY2xvc2VkIHNvY2tldCBvbiB0aGUgc2FtZSBhZGRyZXNzIGFuZCBzdGlsbCBpbgogICAgICAgICMgVElNRV9XQUlUIHN0YXRlLgogICAgICAgICMgMikgSWYgc2V0LCBhbm90aGVyIHNvY2tldCBpcyBmcmVlIHRvIGJpbmQoKSBvbiB0aGUgc2FtZQogICAgICAgICMgYWRkcmVzcywgZWZmZWN0aXZlbHkgcHJldmVudGluZyB0aGlzIG9uZSBmcm9tIGFjY2VwdGluZwogICAgICAgICMgY29ubmVjdGlvbnMuIEFsc28sIGl0IG1heSBzZXQgdGhlIHByb2Nlc3MgaW4gYSBzdGF0ZSB3aGVyZQogICAgICAgICMgaXQnbGwgbm8gbG9uZ2VyIHJlc3BvbmQgdG8gYW55IHNpZ25hbHMgb3IgZ3JhY2VmdWwga2lsbHMuCiAgICAgICAgIyBTZWU6IG1zZG4yLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczc0MDYyMShWUy44NSkuYXNweAogICAgICAgIGlmIG9zLm5hbWUgbm90IGluICgnbnQnLCAnY3lnd2luJykgYW5kIFwKICAgICAgICAgICAgICAgIGhhc2F0dHIoX3NvY2tldCwgJ1NPX1JFVVNFQUREUicpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCAxKQogICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAjIEZhaWwgbGF0ZXIgb24gYmluZCgpLCBmb3IgcGxhdGZvcm1zIHdoaWNoIG1heSBub3QKICAgICAgICAgICAgICAgICMgc3VwcG9ydCB0aGlzIG9wdGlvbi4KICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBpZiByZXVzZV9wb3J0OgogICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fUkVVU0VQT1JULCAxKQogICAgICAgIGlmIGhhc19pcHY2IGFuZCBmYW1pbHkgPT0gQUZfSU5FVDY6CiAgICAgICAgICAgIGlmIGR1YWxzdGFja19pcHY2OgogICAgICAgICAgICAgICAgc29jay5zZXRzb2Nrb3B0KElQUFJPVE9fSVBWNiwgSVBWNl9WNk9OTFksIDApCiAgICAgICAgICAgIGVsaWYgaGFzYXR0cihfc29ja2V0LCAiSVBWNl9WNk9OTFkiKSBhbmQgXAogICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoX3NvY2tldCwgIklQUFJPVE9fSVBWNiIpOgogICAgICAgICAgICAgICAgc29jay5zZXRzb2Nrb3B0KElQUFJPVE9fSVBWNiwgSVBWNl9WNk9OTFksIDEpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzb2NrLmJpbmQoYWRkcmVzcykKICAgICAgICBleGNlcHQgZXJyb3IgYXMgZXJyOgogICAgICAgICAgICBtc2cgPSAnJXMgKHdoaWxlIGF0dGVtcHRpbmcgdG8gYmluZCBvbiBhZGRyZXNzICVyKScgJSBcCiAgICAgICAgICAgICAgICAoZXJyLnN0cmVycm9yLCBhZGRyZXNzKQogICAgICAgICAgICByYWlzZSBlcnJvcihlcnIuZXJybm8sIG1zZykgZnJvbSBOb25lCiAgICAgICAgaWYgYmFja2xvZyBpcyBOb25lOgogICAgICAgICAgICBzb2NrLmxpc3RlbigpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc29jay5saXN0ZW4oYmFja2xvZykKICAgICAgICByZXR1cm4gc29jawogICAgZXhjZXB0IGVycm9yOgogICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgIHJhaXNlCgoKZGVmIGdldGFkZHJpbmZvKGhvc3QsIHBvcnQsIGZhbWlseT0wLCB0eXBlPTAsIHByb3RvPTAsIGZsYWdzPTApOgogICAgIiIiUmVzb2x2ZSBob3N0IGFuZCBwb3J0IGludG8gbGlzdCBvZiBhZGRyZXNzIGluZm8gZW50cmllcy4KCiAgICBUcmFuc2xhdGUgdGhlIGhvc3QvcG9ydCBhcmd1bWVudCBpbnRvIGEgc2VxdWVuY2Ugb2YgNS10dXBsZXMgdGhhdCBjb250YWluCiAgICBhbGwgdGhlIG5lY2Vzc2FyeSBhcmd1bWVudHMgZm9yIGNyZWF0aW5nIGEgc29ja2V0IGNvbm5lY3RlZCB0byB0aGF0IHNlcnZpY2UuCiAgICBob3N0IGlzIGEgZG9tYWluIG5hbWUsIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQvdjYgYWRkcmVzcyBvcgogICAgTm9uZS4gcG9ydCBpcyBhIHN0cmluZyBzZXJ2aWNlIG5hbWUgc3VjaCBhcyAnaHR0cCcsIGEgbnVtZXJpYyBwb3J0IG51bWJlciBvcgogICAgTm9uZS4gQnkgcGFzc2luZyBOb25lIGFzIHRoZSB2YWx1ZSBvZiBob3N0IGFuZCBwb3J0LCB5b3UgY2FuIHBhc3MgTlVMTCB0bwogICAgdGhlIHVuZGVybHlpbmcgQyBBUEkuCgogICAgVGhlIGZhbWlseSwgdHlwZSBhbmQgcHJvdG8gYXJndW1lbnRzIGNhbiBiZSBvcHRpb25hbGx5IHNwZWNpZmllZCBpbiBvcmRlciB0bwogICAgbmFycm93IHRoZSBsaXN0IG9mIGFkZHJlc3NlcyByZXR1cm5lZC4gUGFzc2luZyB6ZXJvIGFzIGEgdmFsdWUgZm9yIGVhY2ggb2YKICAgIHRoZXNlIGFyZ3VtZW50cyBzZWxlY3RzIHRoZSBmdWxsIHJhbmdlIG9mIHJlc3VsdHMuCiAgICAiIiIKICAgICMgV2Ugb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiBzaW5jZSB3ZSB3YW50IHRvIHRyYW5zbGF0ZSB0aGUgbnVtZXJpYyBmYW1pbHkKICAgICMgYW5kIHNvY2tldCB0eXBlIHZhbHVlcyB0byBlbnVtIGNvbnN0YW50cy4KICAgIGFkZHJsaXN0ID0gW10KICAgIGZvciByZXMgaW4gX3NvY2tldC5nZXRhZGRyaW5mbyhob3N0LCBwb3J0LCBmYW1pbHksIHR5cGUsIHByb3RvLCBmbGFncyk6CiAgICAgICAgYWYsIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzYSA9IHJlcwogICAgICAgIGFkZHJsaXN0LmFwcGVuZCgoX2ludGVudW1fY29udmVydGVyKGFmLCBBZGRyZXNzRmFtaWx5KSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9pbnRlbnVtX2NvbnZlcnRlcihzb2NrdHlwZSwgU29ja2V0S2luZCksCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm90bywgY2Fub25uYW1lLCBzYSkpCiAgICByZXR1cm4gYWRkcmxpc3QKUEsDBBQAAAAAAAIgo1Ywb3eOwmsAAMJrAAAPAAAAc29ja2V0c2VydmVyLnB5IiIiR2VuZXJpYyBzb2NrZXQgc2VydmVyIGNsYXNzZXMuCgpUaGlzIG1vZHVsZSB0cmllcyB0byBjYXB0dXJlIHRoZSB2YXJpb3VzIGFzcGVjdHMgb2YgZGVmaW5pbmcgYSBzZXJ2ZXI6CgpGb3Igc29ja2V0LWJhc2VkIHNlcnZlcnM6CgotIGFkZHJlc3MgZmFtaWx5OgogICAgICAgIC0gQUZfSU5FVHssNn06IElQIChJbnRlcm5ldCBQcm90b2NvbCkgc29ja2V0cyAoZGVmYXVsdCkKICAgICAgICAtIEFGX1VOSVg6IFVuaXggZG9tYWluIHNvY2tldHMKICAgICAgICAtIG90aGVycywgZS5nLiBBRl9ERUNORVQgYXJlIGNvbmNlaXZhYmxlIChzZWUgPHNvY2tldC5oPgotIHNvY2tldCB0eXBlOgogICAgICAgIC0gU09DS19TVFJFQU0gKHJlbGlhYmxlIHN0cmVhbSwgZS5nLiBUQ1ApCiAgICAgICAgLSBTT0NLX0RHUkFNIChkYXRhZ3JhbXMsIGUuZy4gVURQKQoKRm9yIHJlcXVlc3QtYmFzZWQgc2VydmVycyAoaW5jbHVkaW5nIHNvY2tldC1iYXNlZCk6CgotIGNsaWVudCBhZGRyZXNzIHZlcmlmaWNhdGlvbiBiZWZvcmUgZnVydGhlciBsb29raW5nIGF0IHRoZSByZXF1ZXN0CiAgICAgICAgKFRoaXMgaXMgYWN0dWFsbHkgYSBob29rIGZvciBhbnkgcHJvY2Vzc2luZyB0aGF0IG5lZWRzIHRvIGxvb2sKICAgICAgICAgYXQgdGhlIHJlcXVlc3QgYmVmb3JlIGFueXRoaW5nIGVsc2UsIGUuZy4gbG9nZ2luZykKLSBob3cgdG8gaGFuZGxlIG11bHRpcGxlIHJlcXVlc3RzOgogICAgICAgIC0gc3luY2hyb25vdXMgKG9uZSByZXF1ZXN0IGlzIGhhbmRsZWQgYXQgYSB0aW1lKQogICAgICAgIC0gZm9ya2luZyAoZWFjaCByZXF1ZXN0IGlzIGhhbmRsZWQgYnkgYSBuZXcgcHJvY2VzcykKICAgICAgICAtIHRocmVhZGluZyAoZWFjaCByZXF1ZXN0IGlzIGhhbmRsZWQgYnkgYSBuZXcgdGhyZWFkKQoKVGhlIGNsYXNzZXMgaW4gdGhpcyBtb2R1bGUgZmF2b3IgdGhlIHNlcnZlciB0eXBlIHRoYXQgaXMgc2ltcGxlc3QgdG8Kd3JpdGU6IGEgc3luY2hyb25vdXMgVENQL0lQIHNlcnZlci4gIFRoaXMgaXMgYmFkIGNsYXNzIGRlc2lnbiwgYnV0CnNhdmVzIHNvbWUgdHlwaW5nLiAgKFRoZXJlJ3MgYWxzbyB0aGUgaXNzdWUgdGhhdCBhIGRlZXAgY2xhc3MgaGllcmFyY2h5CnNsb3dzIGRvd24gbWV0aG9kIGxvb2t1cHMuKQoKVGhlcmUgYXJlIGZpdmUgY2xhc3NlcyBpbiBhbiBpbmhlcml0YW5jZSBkaWFncmFtLCBmb3VyIG9mIHdoaWNoIHJlcHJlc2VudApzeW5jaHJvbm91cyBzZXJ2ZXJzIG9mIGZvdXIgdHlwZXM6CgogICAgICAgICstLS0tLS0tLS0tLS0rCiAgICAgICAgfCBCYXNlU2VydmVyIHwKICAgICAgICArLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgIHwKICAgICAgICAgICAgICB2CiAgICAgICAgKy0tLS0tLS0tLS0tKyAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICB8IFRDUFNlcnZlciB8LS0tLS0tLT58IFVuaXhTdHJlYW1TZXJ2ZXIgfAogICAgICAgICstLS0tLS0tLS0tLSsgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgICAgfAogICAgICAgICAgICAgIHYKICAgICAgICArLS0tLS0tLS0tLS0rICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgfCBVRFBTZXJ2ZXIgfC0tLS0tLS0+fCBVbml4RGF0YWdyYW1TZXJ2ZXIgfAogICAgICAgICstLS0tLS0tLS0tLSsgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLSsKCk5vdGUgdGhhdCBVbml4RGF0YWdyYW1TZXJ2ZXIgZGVyaXZlcyBmcm9tIFVEUFNlcnZlciwgbm90IGZyb20KVW5peFN0cmVhbVNlcnZlciAtLSB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gYW4gSVAgYW5kIGEgVW5peApzdHJlYW0gc2VydmVyIGlzIHRoZSBhZGRyZXNzIGZhbWlseSwgd2hpY2ggaXMgc2ltcGx5IHJlcGVhdGVkIGluIGJvdGgKdW5peCBzZXJ2ZXIgY2xhc3Nlcy4KCkZvcmtpbmcgYW5kIHRocmVhZGluZyB2ZXJzaW9ucyBvZiBlYWNoIHR5cGUgb2Ygc2VydmVyIGNhbiBiZSBjcmVhdGVkCnVzaW5nIHRoZSBGb3JraW5nTWl4SW4gYW5kIFRocmVhZGluZ01peEluIG1peC1pbiBjbGFzc2VzLiAgRm9yCmluc3RhbmNlLCBhIHRocmVhZGluZyBVRFAgc2VydmVyIGNsYXNzIGlzIGNyZWF0ZWQgYXMgZm9sbG93czoKCiAgICAgICAgY2xhc3MgVGhyZWFkaW5nVURQU2VydmVyKFRocmVhZGluZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCgpUaGUgTWl4LWluIGNsYXNzIG11c3QgY29tZSBmaXJzdCwgc2luY2UgaXQgb3ZlcnJpZGVzIGEgbWV0aG9kIGRlZmluZWQKaW4gVURQU2VydmVyISBTZXR0aW5nIHRoZSB2YXJpb3VzIG1lbWJlciB2YXJpYWJsZXMgYWxzbyBjaGFuZ2VzCnRoZSBiZWhhdmlvciBvZiB0aGUgdW5kZXJseWluZyBzZXJ2ZXIgbWVjaGFuaXNtLgoKVG8gaW1wbGVtZW50IGEgc2VydmljZSwgeW91IG11c3QgZGVyaXZlIGEgY2xhc3MgZnJvbQpCYXNlUmVxdWVzdEhhbmRsZXIgYW5kIHJlZGVmaW5lIGl0cyBoYW5kbGUoKSBtZXRob2QuICBZb3UgY2FuIHRoZW4gcnVuCnZhcmlvdXMgdmVyc2lvbnMgb2YgdGhlIHNlcnZpY2UgYnkgY29tYmluaW5nIG9uZSBvZiB0aGUgc2VydmVyIGNsYXNzZXMKd2l0aCB5b3VyIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4KClRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3MgbXVzdCBiZSBkaWZmZXJlbnQgZm9yIGRhdGFncmFtIG9yIHN0cmVhbQpzZXJ2aWNlcy4gIFRoaXMgY2FuIGJlIGhpZGRlbiBieSB1c2luZyB0aGUgcmVxdWVzdCBoYW5kbGVyCnN1YmNsYXNzZXMgU3RyZWFtUmVxdWVzdEhhbmRsZXIgb3IgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlci4KCk9mIGNvdXJzZSwgeW91IHN0aWxsIGhhdmUgdG8gdXNlIHlvdXIgaGVhZCEKCkZvciBpbnN0YW5jZSwgaXQgbWFrZXMgbm8gc2Vuc2UgdG8gdXNlIGEgZm9ya2luZyBzZXJ2ZXIgaWYgdGhlIHNlcnZpY2UKY29udGFpbnMgc3RhdGUgaW4gbWVtb3J5IHRoYXQgY2FuIGJlIG1vZGlmaWVkIGJ5IHJlcXVlc3RzIChzaW5jZSB0aGUKbW9kaWZpY2F0aW9ucyBpbiB0aGUgY2hpbGQgcHJvY2VzcyB3b3VsZCBuZXZlciByZWFjaCB0aGUgaW5pdGlhbCBzdGF0ZQprZXB0IGluIHRoZSBwYXJlbnQgcHJvY2VzcyBhbmQgcGFzc2VkIHRvIGVhY2ggY2hpbGQpLiAgSW4gdGhpcyBjYXNlLAp5b3UgY2FuIHVzZSBhIHRocmVhZGluZyBzZXJ2ZXIsIGJ1dCB5b3Ugd2lsbCBwcm9iYWJseSBoYXZlIHRvIHVzZQpsb2NrcyB0byBhdm9pZCB0d28gcmVxdWVzdHMgdGhhdCBjb21lIGluIG5lYXJseSBzaW11bHRhbmVvdXMgdG8gYXBwbHkKY29uZmxpY3RpbmcgY2hhbmdlcyB0byB0aGUgc2VydmVyIHN0YXRlLgoKT24gdGhlIG90aGVyIGhhbmQsIGlmIHlvdSBhcmUgYnVpbGRpbmcgZS5nLiBhbiBIVFRQIHNlcnZlciwgd2hlcmUgYWxsCmRhdGEgaXMgc3RvcmVkIGV4dGVybmFsbHkgKGUuZy4gaW4gdGhlIGZpbGUgc3lzdGVtKSwgYSBzeW5jaHJvbm91cwpjbGFzcyB3aWxsIGVzc2VudGlhbGx5IHJlbmRlciB0aGUgc2VydmljZSAiZGVhZiIgd2hpbGUgb25lIHJlcXVlc3QgaXMKYmVpbmcgaGFuZGxlZCAtLSB3aGljaCBtYXkgYmUgZm9yIGEgdmVyeSBsb25nIHRpbWUgaWYgYSBjbGllbnQgaXMgc2xvdwp0byByZWFkIGFsbCB0aGUgZGF0YSBpdCBoYXMgcmVxdWVzdGVkLiAgSGVyZSBhIHRocmVhZGluZyBvciBmb3JraW5nCnNlcnZlciBpcyBhcHByb3ByaWF0ZS4KCkluIHNvbWUgY2FzZXMsIGl0IG1heSBiZSBhcHByb3ByaWF0ZSB0byBwcm9jZXNzIHBhcnQgb2YgYSByZXF1ZXN0CnN5bmNocm9ub3VzbHksIGJ1dCB0byBmaW5pc2ggcHJvY2Vzc2luZyBpbiBhIGZvcmtlZCBjaGlsZCBkZXBlbmRpbmcgb24KdGhlIHJlcXVlc3QgZGF0YS4gIFRoaXMgY2FuIGJlIGltcGxlbWVudGVkIGJ5IHVzaW5nIGEgc3luY2hyb25vdXMKc2VydmVyIGFuZCBkb2luZyBhbiBleHBsaWNpdCBmb3JrIGluIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3MKaGFuZGxlKCkgbWV0aG9kLgoKQW5vdGhlciBhcHByb2FjaCB0byBoYW5kbGluZyBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVxdWVzdHMgaW4gYW4KZW52aXJvbm1lbnQgdGhhdCBzdXBwb3J0cyBuZWl0aGVyIHRocmVhZHMgbm9yIGZvcmsgKG9yIHdoZXJlIHRoZXNlIGFyZQp0b28gZXhwZW5zaXZlIG9yIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBzZXJ2aWNlKSBpcyB0byBtYWludGFpbiBhbgpleHBsaWNpdCB0YWJsZSBvZiBwYXJ0aWFsbHkgZmluaXNoZWQgcmVxdWVzdHMgYW5kIHRvIHVzZSBhIHNlbGVjdG9yIHRvCmRlY2lkZSB3aGljaCByZXF1ZXN0IHRvIHdvcmsgb24gbmV4dCAob3Igd2hldGhlciB0byBoYW5kbGUgYSBuZXcKaW5jb21pbmcgcmVxdWVzdCkuICBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yIHN0cmVhbSBzZXJ2aWNlcwp3aGVyZSBlYWNoIGNsaWVudCBjYW4gcG90ZW50aWFsbHkgYmUgY29ubmVjdGVkIGZvciBhIGxvbmcgdGltZSAoaWYKdGhyZWFkcyBvciBzdWJwcm9jZXNzZXMgY2Fubm90IGJlIHVzZWQpLgoKRnV0dXJlIHdvcms6Ci0gU3RhbmRhcmQgY2xhc3NlcyBmb3IgU3VuIFJQQyAod2hpY2ggdXNlcyBlaXRoZXIgVURQIG9yIFRDUCkKLSBTdGFuZGFyZCBtaXgtaW4gY2xhc3NlcyB0byBpbXBsZW1lbnQgdmFyaW91cyBhdXRoZW50aWNhdGlvbgogIGFuZCBlbmNyeXB0aW9uIHNjaGVtZXMKClhYWCBPcGVuIHByb2JsZW1zOgotIFdoYXQgdG8gZG8gd2l0aCBvdXQtb2YtYmFuZCBkYXRhPwoKQmFzZVNlcnZlcjoKLSBzcGxpdCBnZW5lcmljICJyZXF1ZXN0IiBmdW5jdGlvbmFsaXR5IG91dCBpbnRvIEJhc2VTZXJ2ZXIgY2xhc3MuCiAgQ29weXJpZ2h0IChDKSAyMDAwICBMdWtlIEtlbm5ldGggQ2Fzc29uIExlaWdodG9uIDxsa2NsQHNhbWJhLm9yZz4KCiAgZXhhbXBsZTogcmVhZCBlbnRyaWVzIGZyb20gYSBTUUwgZGF0YWJhc2UgKHJlcXVpcmVzIG92ZXJyaWRpbmcKICBnZXRfcmVxdWVzdCgpIHRvIHJldHVybiBhIHRhYmxlIGVudHJ5IGZyb20gdGhlIGRhdGFiYXNlKS4KICBlbnRyeSBpcyBwcm9jZXNzZWQgYnkgYSBSZXF1ZXN0SGFuZGxlckNsYXNzLgoKIiIiCgojIEF1dGhvciBvZiB0aGUgQmFzZVNlcnZlciBwYXRjaDogTHVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbgoKX192ZXJzaW9uX18gPSAiMC40IgoKCmltcG9ydCBzb2NrZXQKaW1wb3J0IHNlbGVjdG9ycwppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgdGhyZWFkaW5nCmZyb20gaW8gaW1wb3J0IEJ1ZmZlcmVkSU9CYXNlCmZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKCl9fYWxsX18gPSBbIkJhc2VTZXJ2ZXIiLCAiVENQU2VydmVyIiwgIlVEUFNlcnZlciIsCiAgICAgICAgICAgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLAogICAgICAgICAgICJCYXNlUmVxdWVzdEhhbmRsZXIiLCAiU3RyZWFtUmVxdWVzdEhhbmRsZXIiLAogICAgICAgICAgICJEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyIiwgIlRocmVhZGluZ01peEluIl0KaWYgaGFzYXR0cihvcywgImZvcmsiKToKICAgIF9fYWxsX18uZXh0ZW5kKFsiRm9ya2luZ1VEUFNlcnZlciIsIkZvcmtpbmdUQ1BTZXJ2ZXIiLCAiRm9ya2luZ01peEluIl0pCmlmIGhhc2F0dHIoc29ja2V0LCAiQUZfVU5JWCIpOgogICAgX19hbGxfXy5leHRlbmQoWyJVbml4U3RyZWFtU2VydmVyIiwiVW5peERhdGFncmFtU2VydmVyIiwKICAgICAgICAgICAgICAgICAgICAiVGhyZWFkaW5nVW5peFN0cmVhbVNlcnZlciIsCiAgICAgICAgICAgICAgICAgICAgIlRocmVhZGluZ1VuaXhEYXRhZ3JhbVNlcnZlciJdKQoKIyBwb2xsL3NlbGVjdCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkgZXh0cmEgZmlsZSBkZXNjcmlwdG9yLAojIGNvbnRyYXJpbHkgdG8gZXBvbGwva3F1ZXVlIChhbHNvLCB0aGV5IHJlcXVpcmUgYSBzaW5nbGUgc3lzY2FsbCkuCmlmIGhhc2F0dHIoc2VsZWN0b3JzLCAnUG9sbFNlbGVjdG9yJyk6CiAgICBfU2VydmVyU2VsZWN0b3IgPSBzZWxlY3RvcnMuUG9sbFNlbGVjdG9yCmVsc2U6CiAgICBfU2VydmVyU2VsZWN0b3IgPSBzZWxlY3RvcnMuU2VsZWN0U2VsZWN0b3IKCgpjbGFzcyBCYXNlU2VydmVyOgoKICAgICIiIkJhc2UgY2xhc3MgZm9yIHNlcnZlciBjbGFzc2VzLgoKICAgIE1ldGhvZHMgZm9yIHRoZSBjYWxsZXI6CgogICAgLSBfX2luaXRfXyhzZXJ2ZXJfYWRkcmVzcywgUmVxdWVzdEhhbmRsZXJDbGFzcykKICAgIC0gc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsPTAuNSkKICAgIC0gc2h1dGRvd24oKQogICAgLSBoYW5kbGVfcmVxdWVzdCgpICAjIGlmIHlvdSBkbyBub3QgdXNlIHNlcnZlX2ZvcmV2ZXIoKQogICAgLSBmaWxlbm8oKSAtPiBpbnQgICAjIGZvciBzZWxlY3RvcgoKICAgIE1ldGhvZHMgdGhhdCBtYXkgYmUgb3ZlcnJpZGRlbjoKCiAgICAtIHNlcnZlcl9iaW5kKCkKICAgIC0gc2VydmVyX2FjdGl2YXRlKCkKICAgIC0gZ2V0X3JlcXVlc3QoKSAtPiByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcwogICAgLSBoYW5kbGVfdGltZW91dCgpCiAgICAtIHZlcmlmeV9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgLSBzZXJ2ZXJfY2xvc2UoKQogICAgLSBwcm9jZXNzX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAtIHNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKICAgIC0gY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQogICAgLSBzZXJ2aWNlX2FjdGlvbnMoKQogICAgLSBoYW5kbGVfZXJyb3IoKQoKICAgIE1ldGhvZHMgZm9yIGRlcml2ZWQgY2xhc3NlczoKCiAgICAtIGZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQoKICAgIENsYXNzIHZhcmlhYmxlcyB0aGF0IG1heSBiZSBvdmVycmlkZGVuIGJ5IGRlcml2ZWQgY2xhc3NlcyBvcgogICAgaW5zdGFuY2VzOgoKICAgIC0gdGltZW91dAogICAgLSBhZGRyZXNzX2ZhbWlseQogICAgLSBzb2NrZXRfdHlwZQogICAgLSBhbGxvd19yZXVzZV9hZGRyZXNzCiAgICAtIGFsbG93X3JldXNlX3BvcnQKCiAgICBJbnN0YW5jZSB2YXJpYWJsZXM6CgogICAgLSBSZXF1ZXN0SGFuZGxlckNsYXNzCiAgICAtIHNvY2tldAoKICAgICIiIgoKICAgIHRpbWVvdXQgPSBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9hZGRyZXNzLCBSZXF1ZXN0SGFuZGxlckNsYXNzKToKICAgICAgICAiIiJDb25zdHJ1Y3Rvci4gIE1heSBiZSBleHRlbmRlZCwgZG8gbm90IG92ZXJyaWRlLiIiIgogICAgICAgIHNlbGYuc2VydmVyX2FkZHJlc3MgPSBzZXJ2ZXJfYWRkcmVzcwogICAgICAgIHNlbGYuUmVxdWVzdEhhbmRsZXJDbGFzcyA9IFJlcXVlc3RIYW5kbGVyQ2xhc3MKICAgICAgICBzZWxmLl9faXNfc2h1dF9kb3duID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICBzZWxmLl9fc2h1dGRvd25fcmVxdWVzdCA9IEZhbHNlCgogICAgZGVmIHNlcnZlcl9hY3RpdmF0ZShzZWxmKToKICAgICAgICAiIiJDYWxsZWQgYnkgY29uc3RydWN0b3IgdG8gYWN0aXZhdGUgdGhlIHNlcnZlci4KCiAgICAgICAgTWF5IGJlIG92ZXJyaWRkZW4uCgogICAgICAgICIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsPTAuNSk6CiAgICAgICAgIiIiSGFuZGxlIG9uZSByZXF1ZXN0IGF0IGEgdGltZSB1bnRpbCBzaHV0ZG93bi4KCiAgICAgICAgUG9sbHMgZm9yIHNodXRkb3duIGV2ZXJ5IHBvbGxfaW50ZXJ2YWwgc2Vjb25kcy4gSWdub3JlcwogICAgICAgIHNlbGYudGltZW91dC4gSWYgeW91IG5lZWQgdG8gZG8gcGVyaW9kaWMgdGFza3MsIGRvIHRoZW0gaW4KICAgICAgICBhbm90aGVyIHRocmVhZC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9faXNfc2h1dF9kb3duLmNsZWFyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgWFhYOiBDb25zaWRlciB1c2luZyBhbm90aGVyIGZpbGUgZGVzY3JpcHRvciBvciBjb25uZWN0aW5nIHRvIHRoZQogICAgICAgICAgICAjIHNvY2tldCB0byB3YWtlIHRoaXMgdXAgaW5zdGVhZCBvZiBwb2xsaW5nLiBQb2xsaW5nIHJlZHVjZXMgb3VyCiAgICAgICAgICAgICMgcmVzcG9uc2l2ZW5lc3MgdG8gYSBzaHV0ZG93biByZXF1ZXN0IGFuZCB3YXN0ZXMgY3B1IGF0IGFsbCBvdGhlcgogICAgICAgICAgICAjIHRpbWVzLgogICAgICAgICAgICB3aXRoIF9TZXJ2ZXJTZWxlY3RvcigpIGFzIHNlbGVjdG9yOgogICAgICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc2VsZiwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCgogICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0OgogICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gc2VsZWN0b3Iuc2VsZWN0KHBvbGxfaW50ZXJ2YWwpCiAgICAgICAgICAgICAgICAgICAgIyBicG8tMzUwMTc6IHNodXRkb3duKCkgY2FsbGVkIGR1cmluZyBzZWxlY3QoKSwgZXhpdCBpbW1lZGlhdGVseS4KICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9fc2h1dGRvd25fcmVxdWVzdDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBpZiByZWFkeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCgogICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmljZV9hY3Rpb25zKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl9fc2h1dGRvd25fcmVxdWVzdCA9IEZhbHNlCiAgICAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24uc2V0KCkKCiAgICBkZWYgc2h1dGRvd24oc2VsZik6CiAgICAgICAgIiIiU3RvcHMgdGhlIHNlcnZlX2ZvcmV2ZXIgbG9vcC4KCiAgICAgICAgQmxvY2tzIHVudGlsIHRoZSBsb29wIGhhcyBmaW5pc2hlZC4gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGlsZQogICAgICAgIHNlcnZlX2ZvcmV2ZXIoKSBpcyBydW5uaW5nIGluIGFub3RoZXIgdGhyZWFkLCBvciBpdCB3aWxsCiAgICAgICAgZGVhZGxvY2suCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fX3NodXRkb3duX3JlcXVlc3QgPSBUcnVlCiAgICAgICAgc2VsZi5fX2lzX3NodXRfZG93bi53YWl0KCkKCiAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgogICAgICAgICIiIkNhbGxlZCBieSB0aGUgc2VydmVfZm9yZXZlcigpIGxvb3AuCgogICAgICAgIE1heSBiZSBvdmVycmlkZGVuIGJ5IGEgc3ViY2xhc3MgLyBNaXhpbiB0byBpbXBsZW1lbnQgYW55IGNvZGUgdGhhdAogICAgICAgIG5lZWRzIHRvIGJlIHJ1biBkdXJpbmcgdGhlIGxvb3AuCiAgICAgICAgIiIiCiAgICAgICAgcGFzcwoKICAgICMgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gaGFuZGxpbmcsIGdldHRpbmcsIHByb2Nlc3NpbmcgYW5kIGZpbmlzaGluZyBhCiAgICAjIHJlcXVlc3QgaXMgZmFpcmx5IGFyYml0cmFyeS4gIFJlbWVtYmVyOgogICAgIwogICAgIyAtIGhhbmRsZV9yZXF1ZXN0KCkgaXMgdGhlIHRvcC1sZXZlbCBjYWxsLiAgSXQgY2FsbHMgc2VsZWN0b3Iuc2VsZWN0KCksCiAgICAjICAgZ2V0X3JlcXVlc3QoKSwgdmVyaWZ5X3JlcXVlc3QoKSBhbmQgcHJvY2Vzc19yZXF1ZXN0KCkKICAgICMgLSBnZXRfcmVxdWVzdCgpIGlzIGRpZmZlcmVudCBmb3Igc3RyZWFtIG9yIGRhdGFncmFtIHNvY2tldHMKICAgICMgLSBwcm9jZXNzX3JlcXVlc3QoKSBpcyB0aGUgcGxhY2UgdGhhdCBtYXkgZm9yayBhIG5ldyBwcm9jZXNzIG9yIGNyZWF0ZSBhCiAgICAjICAgbmV3IHRocmVhZCB0byBmaW5pc2ggdGhlIHJlcXVlc3QKICAgICMgLSBmaW5pc2hfcmVxdWVzdCgpIGluc3RhbnRpYXRlcyB0aGUgcmVxdWVzdCBoYW5kbGVyIGNsYXNzOyB0aGlzCiAgICAjICAgY29uc3RydWN0b3Igd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgYWxsIGJ5IGl0c2VsZgoKICAgIGRlZiBoYW5kbGVfcmVxdWVzdChzZWxmKToKICAgICAgICAiIiJIYW5kbGUgb25lIHJlcXVlc3QsIHBvc3NpYmx5IGJsb2NraW5nLgoKICAgICAgICBSZXNwZWN0cyBzZWxmLnRpbWVvdXQuCiAgICAgICAgIiIiCiAgICAgICAgIyBTdXBwb3J0IHBlb3BsZSB3aG8gdXNlZCBzb2NrZXQuc2V0dGltZW91dCgpIHRvIGVzY2FwZQogICAgICAgICMgaGFuZGxlX3JlcXVlc3QgYmVmb3JlIHNlbGYudGltZW91dCB3YXMgYXZhaWxhYmxlLgogICAgICAgIHRpbWVvdXQgPSBzZWxmLnNvY2tldC5nZXR0aW1lb3V0KCkKICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLnRpbWVvdXQKICAgICAgICBlbGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgdGltZW91dCA9IG1pbih0aW1lb3V0LCBzZWxmLnRpbWVvdXQpCiAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lKCkgKyB0aW1lb3V0CgogICAgICAgICMgV2FpdCB1bnRpbCBhIHJlcXVlc3QgYXJyaXZlcyBvciB0aGUgdGltZW91dCBleHBpcmVzIC0gdGhlIGxvb3AgaXMKICAgICAgICAjIG5lY2Vzc2FyeSB0byBhY2NvbW1vZGF0ZSBlYXJseSB3YWtldXBzIGR1ZSB0byBFSU5UUi4KICAgICAgICB3aXRoIF9TZXJ2ZXJTZWxlY3RvcigpIGFzIHNlbGVjdG9yOgogICAgICAgICAgICBzZWxlY3Rvci5yZWdpc3RlcihzZWxmLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICByZWFkeSA9IHNlbGVjdG9yLnNlbGVjdCh0aW1lb3V0KQogICAgICAgICAgICAgICAgaWYgcmVhZHk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfdGltZW91dCgpCgogICAgZGVmIF9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKHNlbGYpOgogICAgICAgICIiIkhhbmRsZSBvbmUgcmVxdWVzdCwgd2l0aG91dCBibG9ja2luZy4KCiAgICAgICAgSSBhc3N1bWUgdGhhdCBzZWxlY3Rvci5zZWxlY3QoKSBoYXMgcmV0dXJuZWQgdGhhdCB0aGUgc29ja2V0IGlzCiAgICAgICAgcmVhZGFibGUgYmVmb3JlIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZCwgc28gdGhlcmUgc2hvdWxkIGJlIG5vIHJpc2sgb2YKICAgICAgICBibG9ja2luZyBpbiBnZXRfcmVxdWVzdCgpLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MgPSBzZWxmLmdldF9yZXF1ZXN0KCkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgc2VsZi52ZXJpZnlfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQoKICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmKToKICAgICAgICAiIiJDYWxsZWQgaWYgbm8gbmV3IHJlcXVlc3QgYXJyaXZlcyB3aXRoaW4gc2VsZi50aW1lb3V0LgoKICAgICAgICBPdmVycmlkZGVuIGJ5IEZvcmtpbmdNaXhJbi4KICAgICAgICAiIiIKICAgICAgICBwYXNzCgogICAgZGVmIHZlcmlmeV9yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAiIiJWZXJpZnkgdGhlIHJlcXVlc3QuICBNYXkgYmUgb3ZlcnJpZGRlbi4KCiAgICAgICAgUmV0dXJuIFRydWUgaWYgd2Ugc2hvdWxkIHByb2NlZWQgd2l0aCB0aGlzIHJlcXVlc3QuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgIiIiQ2FsbCBmaW5pc2hfcmVxdWVzdC4KCiAgICAgICAgT3ZlcnJpZGRlbiBieSBGb3JraW5nTWl4SW4gYW5kIFRocmVhZGluZ01peEluLgoKICAgICAgICAiIiIKICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQoKICAgIGRlZiBzZXJ2ZXJfY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiQ2FsbGVkIHRvIGNsZWFuLXVwIHRoZSBzZXJ2ZXIuCgogICAgICAgIE1heSBiZSBvdmVycmlkZGVuLgoKICAgICAgICAiIiIKICAgICAgICBwYXNzCgogICAgZGVmIGZpbmlzaF9yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAiIiJGaW5pc2ggb25lIHJlcXVlc3QgYnkgaW5zdGFudGlhdGluZyBSZXF1ZXN0SGFuZGxlckNsYXNzLiIiIgogICAgICAgIHNlbGYuUmVxdWVzdEhhbmRsZXJDbGFzcyhyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywgc2VsZikKCiAgICBkZWYgc2h1dGRvd25fcmVxdWVzdChzZWxmLCByZXF1ZXN0KToKICAgICAgICAiIiJDYWxsZWQgdG8gc2h1dGRvd24gYW5kIGNsb3NlIGFuIGluZGl2aWR1YWwgcmVxdWVzdC4iIiIKICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKCiAgICBkZWYgY2xvc2VfcmVxdWVzdChzZWxmLCByZXF1ZXN0KToKICAgICAgICAiIiJDYWxsZWQgdG8gY2xlYW4gdXAgYW4gaW5kaXZpZHVhbCByZXF1ZXN0LiIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAiIiJIYW5kbGUgYW4gZXJyb3IgZ3JhY2VmdWxseS4gIE1heSBiZSBvdmVycmlkZGVuLgoKICAgICAgICBUaGUgZGVmYXVsdCBpcyB0byBwcmludCBhIHRyYWNlYmFjayBhbmQgY29udGludWUuCgogICAgICAgICIiIgogICAgICAgIHByaW50KCctJyo0MCwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgIHByaW50KCdFeGNlcHRpb24gb2NjdXJyZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgcmVxdWVzdCBmcm9tJywKICAgICAgICAgICAgY2xpZW50X2FkZHJlc3MsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAgICAgICAgcHJpbnQoJy0nKjQwLCBmaWxlPXN5cy5zdGRlcnIpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQoKCmNsYXNzIFRDUFNlcnZlcihCYXNlU2VydmVyKToKCiAgICAiIiJCYXNlIGNsYXNzIGZvciB2YXJpb3VzIHNvY2tldC1iYXNlZCBzZXJ2ZXIgY2xhc3Nlcy4KCiAgICBEZWZhdWx0cyB0byBzeW5jaHJvbm91cyBJUCBzdHJlYW0gKGkuZS4sIFRDUCkuCgogICAgTWV0aG9kcyBmb3IgdGhlIGNhbGxlcjoKCiAgICAtIF9faW5pdF9fKHNlcnZlcl9hZGRyZXNzLCBSZXF1ZXN0SGFuZGxlckNsYXNzLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKQogICAgLSBzZXJ2ZV9mb3JldmVyKHBvbGxfaW50ZXJ2YWw9MC41KQogICAgLSBzaHV0ZG93bigpCiAgICAtIGhhbmRsZV9yZXF1ZXN0KCkgICMgaWYgeW91IGRvbid0IHVzZSBzZXJ2ZV9mb3JldmVyKCkKICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0b3IKCiAgICBNZXRob2RzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW46CgogICAgLSBzZXJ2ZXJfYmluZCgpCiAgICAtIHNlcnZlcl9hY3RpdmF0ZSgpCiAgICAtIGdldF9yZXF1ZXN0KCkgLT4gcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MKICAgIC0gaGFuZGxlX3RpbWVvdXQoKQogICAgLSB2ZXJpZnlfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKICAgIC0gcHJvY2Vzc19yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgLSBzaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAgICAtIGNsb3NlX3JlcXVlc3QocmVxdWVzdCkKICAgIC0gaGFuZGxlX2Vycm9yKCkKCiAgICBNZXRob2RzIGZvciBkZXJpdmVkIGNsYXNzZXM6CgogICAgLSBmaW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKCiAgICBDbGFzcyB2YXJpYWJsZXMgdGhhdCBtYXkgYmUgb3ZlcnJpZGRlbiBieSBkZXJpdmVkIGNsYXNzZXMgb3IKICAgIGluc3RhbmNlczoKCiAgICAtIHRpbWVvdXQKICAgIC0gYWRkcmVzc19mYW1pbHkKICAgIC0gc29ja2V0X3R5cGUKICAgIC0gcmVxdWVzdF9xdWV1ZV9zaXplIChvbmx5IGZvciBzdHJlYW0gc29ja2V0cykKICAgIC0gYWxsb3dfcmV1c2VfYWRkcmVzcwogICAgLSBhbGxvd19yZXVzZV9wb3J0CgogICAgSW5zdGFuY2UgdmFyaWFibGVzOgoKICAgIC0gc2VydmVyX2FkZHJlc3MKICAgIC0gUmVxdWVzdEhhbmRsZXJDbGFzcwogICAgLSBzb2NrZXQKCiAgICAiIiIKCiAgICBhZGRyZXNzX2ZhbWlseSA9IHNvY2tldC5BRl9JTkVUCgogICAgc29ja2V0X3R5cGUgPSBzb2NrZXQuU09DS19TVFJFQU0KCiAgICByZXF1ZXN0X3F1ZXVlX3NpemUgPSA1CgogICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IEZhbHNlCgogICAgYWxsb3dfcmV1c2VfcG9ydCA9IEZhbHNlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9hZGRyZXNzLCBSZXF1ZXN0SGFuZGxlckNsYXNzLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKICAgICAgICAiIiJDb25zdHJ1Y3Rvci4gIE1heSBiZSBleHRlbmRlZCwgZG8gbm90IG92ZXJyaWRlLiIiIgogICAgICAgIEJhc2VTZXJ2ZXIuX19pbml0X18oc2VsZiwgc2VydmVyX2FkZHJlc3MsIFJlcXVlc3RIYW5kbGVyQ2xhc3MpCiAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXQuc29ja2V0KHNlbGYuYWRkcmVzc19mYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0X3R5cGUpCiAgICAgICAgaWYgYmluZF9hbmRfYWN0aXZhdGU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2JpbmQoKQogICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfYWN0aXZhdGUoKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgICAgICAgICByYWlzZQoKICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKICAgICAgICAiIiJDYWxsZWQgYnkgY29uc3RydWN0b3IgdG8gYmluZCB0aGUgc29ja2V0LgoKICAgICAgICBNYXkgYmUgb3ZlcnJpZGRlbi4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5hbGxvd19yZXVzZV9hZGRyZXNzIGFuZCBoYXNhdHRyKHNvY2tldCwgIlNPX1JFVVNFQUREUiIpOgogICAgICAgICAgICBzZWxmLnNvY2tldC5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgIGlmIHNlbGYuYWxsb3dfcmV1c2VfcG9ydCBhbmQgaGFzYXR0cihzb2NrZXQsICJTT19SRVVTRVBPUlQiKToKICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFUE9SVCwgMSkKICAgICAgICBzZWxmLnNvY2tldC5iaW5kKHNlbGYuc2VydmVyX2FkZHJlc3MpCiAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKCkKCiAgICBkZWYgc2VydmVyX2FjdGl2YXRlKHNlbGYpOgogICAgICAgICIiIkNhbGxlZCBieSBjb25zdHJ1Y3RvciB0byBhY3RpdmF0ZSB0aGUgc2VydmVyLgoKICAgICAgICBNYXkgYmUgb3ZlcnJpZGRlbi4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5zb2NrZXQubGlzdGVuKHNlbGYucmVxdWVzdF9xdWV1ZV9zaXplKQoKICAgIGRlZiBzZXJ2ZXJfY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiQ2FsbGVkIHRvIGNsZWFuLXVwIHRoZSBzZXJ2ZXIuCgogICAgICAgIE1heSBiZSBvdmVycmlkZGVuLgoKICAgICAgICAiIiIKICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCgogICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gc29ja2V0IGZpbGUgbnVtYmVyLgoKICAgICAgICBJbnRlcmZhY2UgcmVxdWlyZWQgYnkgc2VsZWN0b3IuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5maWxlbm8oKQoKICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKICAgICAgICAiIiJHZXQgdGhlIHJlcXVlc3QgYW5kIGNsaWVudCBhZGRyZXNzIGZyb20gdGhlIHNvY2tldC4KCiAgICAgICAgTWF5IGJlIG92ZXJyaWRkZW4uCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5hY2NlcHQoKQoKICAgIGRlZiBzaHV0ZG93bl9yZXF1ZXN0KHNlbGYsIHJlcXVlc3QpOgogICAgICAgICIiIkNhbGxlZCB0byBzaHV0ZG93biBhbmQgY2xvc2UgYW4gaW5kaXZpZHVhbCByZXF1ZXN0LiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgI2V4cGxpY2l0bHkgc2h1dGRvd24uICBzb2NrZXQuY2xvc2UoKSBtZXJlbHkgcmVsZWFzZXMKICAgICAgICAgICAgI3RoZSBzb2NrZXQgYW5kIHdhaXRzIGZvciBHQyB0byBwZXJmb3JtIHRoZSBhY3R1YWwgY2xvc2UuCiAgICAgICAgICAgIHJlcXVlc3Quc2h1dGRvd24oc29ja2V0LlNIVVRfV1IpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MgI3NvbWUgcGxhdGZvcm1zIG1heSByYWlzZSBFTk9UQ09OTiBoZXJlCiAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCgogICAgZGVmIGNsb3NlX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIiIiQ2FsbGVkIHRvIGNsZWFuIHVwIGFuIGluZGl2aWR1YWwgcmVxdWVzdC4iIiIKICAgICAgICByZXF1ZXN0LmNsb3NlKCkKCgpjbGFzcyBVRFBTZXJ2ZXIoVENQU2VydmVyKToKCiAgICAiIiJVRFAgc2VydmVyIGNsYXNzLiIiIgoKICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSBGYWxzZQoKICAgIGFsbG93X3JldXNlX3BvcnQgPSBGYWxzZQoKICAgIHNvY2tldF90eXBlID0gc29ja2V0LlNPQ0tfREdSQU0KCiAgICBtYXhfcGFja2V0X3NpemUgPSA4MTkyCgogICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgogICAgICAgIGRhdGEsIGNsaWVudF9hZGRyID0gc2VsZi5zb2NrZXQucmVjdmZyb20oc2VsZi5tYXhfcGFja2V0X3NpemUpCiAgICAgICAgcmV0dXJuIChkYXRhLCBzZWxmLnNvY2tldCksIGNsaWVudF9hZGRyCgogICAgZGVmIHNlcnZlcl9hY3RpdmF0ZShzZWxmKToKICAgICAgICAjIE5vIG5lZWQgdG8gY2FsbCBsaXN0ZW4oKSBmb3IgVURQLgogICAgICAgIHBhc3MKCiAgICBkZWYgc2h1dGRvd25fcmVxdWVzdChzZWxmLCByZXF1ZXN0KToKICAgICAgICAjIE5vIG5lZWQgdG8gc2h1dGRvd24gYW55dGhpbmcuCiAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCgogICAgZGVmIGNsb3NlX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIyBObyBuZWVkIHRvIGNsb3NlIGFueXRoaW5nLgogICAgICAgIHBhc3MKCmlmIGhhc2F0dHIob3MsICJmb3JrIik6CiAgICBjbGFzcyBGb3JraW5nTWl4SW46CiAgICAgICAgIiIiTWl4LWluIGNsYXNzIHRvIGhhbmRsZSBlYWNoIHJlcXVlc3QgaW4gYSBuZXcgcHJvY2Vzcy4iIiIKCiAgICAgICAgdGltZW91dCA9IDMwMAogICAgICAgIGFjdGl2ZV9jaGlsZHJlbiA9IE5vbmUKICAgICAgICBtYXhfY2hpbGRyZW4gPSA0MAogICAgICAgICMgSWYgdHJ1ZSwgc2VydmVyX2Nsb3NlKCkgd2FpdHMgdW50aWwgYWxsIGNoaWxkIHByb2Nlc3NlcyBjb21wbGV0ZS4KICAgICAgICBibG9ja19vbl9jbG9zZSA9IFRydWUKCiAgICAgICAgZGVmIGNvbGxlY3RfY2hpbGRyZW4oc2VsZiwgKiwgYmxvY2tpbmc9RmFsc2UpOgogICAgICAgICAgICAiIiJJbnRlcm5hbCByb3V0aW5lIHRvIHdhaXQgZm9yIGNoaWxkcmVuIHRoYXQgaGF2ZSBleGl0ZWQuIiIiCiAgICAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgICMgSWYgd2UncmUgYWJvdmUgdGhlIG1heCBudW1iZXIgb2YgY2hpbGRyZW4sIHdhaXQgYW5kIHJlYXAgdGhlbSB1bnRpbAogICAgICAgICAgICAjIHdlIGdvIGJhY2sgYmVsb3cgdGhyZXNob2xkLiBOb3RlIHRoYXQgd2UgdXNlIHdhaXRwaWQoLTEpIGJlbG93IHRvIGJlCiAgICAgICAgICAgICMgYWJsZSB0byBjb2xsZWN0IGNoaWxkcmVuIGluIHNpemUoPGRlZnVuY3QgY2hpbGRyZW4+KSBzeXNjYWxscyBpbnN0ZWFkCiAgICAgICAgICAgICMgb2Ygc2l6ZSg8Y2hpbGRyZW4+KTogdGhlIGRvd25zaWRlIGlzIHRoYXQgdGhpcyBtaWdodCByZWFwIGNoaWxkcmVuCiAgICAgICAgICAgICMgd2hpY2ggd2UgZGlkbid0IHNwYXduLCB3aGljaCBpcyB3aHkgd2Ugb25seSByZXNvcnQgdG8gdGhpcyB3aGVuIHdlJ3JlCiAgICAgICAgICAgICMgYWJvdmUgbWF4X2NoaWxkcmVuLgogICAgICAgICAgICB3aGlsZSBsZW4oc2VsZi5hY3RpdmVfY2hpbGRyZW4pID49IHNlbGYubWF4X2NoaWxkcmVuOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQoLTEsIDApCiAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCiAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbiwgd2UncmUgZG9uZQogICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgICAgICAjIE5vdyByZWFwIGFsbCBkZWZ1bmN0IGNoaWxkcmVuLgogICAgICAgICAgICBmb3IgcGlkIGluIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNvcHkoKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBmbGFncyA9IDAgaWYgYmxvY2tpbmcgZWxzZSBvcy5XTk9IQU5HCiAgICAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZChwaWQsIGZsYWdzKQogICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIGNoaWxkIGhhc24ndCBleGl0ZWQgeWV0LCBwaWQgd2lsbCBiZSAwIGFuZCBpZ25vcmVkIGJ5CiAgICAgICAgICAgICAgICAgICAgIyBkaXNjYXJkKCkgYmVsb3cKICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIHNvbWVvbmUgZWxzZSByZWFwZWQgaXQKICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgZGVmIGhhbmRsZV90aW1lb3V0KHNlbGYpOgogICAgICAgICAgICAiIiJXYWl0IGZvciB6b21iaWVzIGFmdGVyIHNlbGYudGltZW91dCBzZWNvbmRzIG9mIGluYWN0aXZpdHkuCgogICAgICAgICAgICBNYXkgYmUgZXh0ZW5kZWQsIGRvIG5vdCBvdmVycmlkZS4KICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCgogICAgICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6CiAgICAgICAgICAgICIiIkNvbGxlY3QgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMgcmVndWxhcmx5IGluIHRoZSBGb3JraW5nTWl4SW4uCgogICAgICAgICAgICBzZXJ2aWNlX2FjdGlvbnMgaXMgY2FsbGVkIGluIHRoZSBCYXNlU2VydmVyJ3Mgc2VydmVfZm9yZXZlciBsb29wLgogICAgICAgICAgICAiIiIKICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKCiAgICAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgICIiIkZvcmsgYSBuZXcgc3VicHJvY2VzcyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LiIiIgogICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKICAgICAgICAgICAgaWYgcGlkOgogICAgICAgICAgICAgICAgIyBQYXJlbnQgcHJvY2VzcwogICAgICAgICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IHNldCgpCiAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hZGQocGlkKQogICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KICAgICAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKICAgICAgICAgICAgICAgIHN0YXR1cyA9IDEKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDAKICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoc3RhdHVzKQoKICAgICAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgogICAgICAgICAgICBzdXBlcigpLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbihibG9ja2luZz1zZWxmLmJsb2NrX29uX2Nsb3NlKQoKCmNsYXNzIF9UaHJlYWRzKGxpc3QpOgogICAgIiIiCiAgICBKb2luYWJsZSBsaXN0IG9mIGFsbCBub24tZGFlbW9uIHRocmVhZHMuCiAgICAiIiIKICAgIGRlZiBhcHBlbmQoc2VsZiwgdGhyZWFkKToKICAgICAgICBzZWxmLnJlYXAoKQogICAgICAgIGlmIHRocmVhZC5kYWVtb246CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHN1cGVyKCkuYXBwZW5kKHRocmVhZCkKCiAgICBkZWYgcG9wX2FsbChzZWxmKToKICAgICAgICBzZWxmWzpdLCByZXN1bHQgPSBbXSwgc2VsZls6XQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgam9pbihzZWxmKToKICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYucG9wX2FsbCgpOgogICAgICAgICAgICB0aHJlYWQuam9pbigpCgogICAgZGVmIHJlYXAoc2VsZik6CiAgICAgICAgc2VsZls6XSA9ICh0aHJlYWQgZm9yIHRocmVhZCBpbiBzZWxmIGlmIHRocmVhZC5pc19hbGl2ZSgpKQoKCmNsYXNzIF9Ob1RocmVhZHM6CiAgICAiIiIKICAgIERlZ2VuZXJhdGUgdmVyc2lvbiBvZiBfVGhyZWFkcy4KICAgICIiIgogICAgZGVmIGFwcGVuZChzZWxmLCB0aHJlYWQpOgogICAgICAgIHBhc3MKCiAgICBkZWYgam9pbihzZWxmKToKICAgICAgICBwYXNzCgoKY2xhc3MgVGhyZWFkaW5nTWl4SW46CiAgICAiIiJNaXgtaW4gY2xhc3MgdG8gaGFuZGxlIGVhY2ggcmVxdWVzdCBpbiBhIG5ldyB0aHJlYWQuIiIiCgogICAgIyBEZWNpZGVzIGhvdyB0aHJlYWRzIHdpbGwgYWN0IHVwb24gdGVybWluYXRpb24gb2YgdGhlCiAgICAjIG1haW4gcHJvY2VzcwogICAgZGFlbW9uX3RocmVhZHMgPSBGYWxzZQogICAgIyBJZiB0cnVlLCBzZXJ2ZXJfY2xvc2UoKSB3YWl0cyB1bnRpbCBhbGwgbm9uLWRhZW1vbmljIHRocmVhZHMgdGVybWluYXRlLgogICAgYmxvY2tfb25fY2xvc2UgPSBUcnVlCiAgICAjIFRocmVhZHMgb2JqZWN0CiAgICAjIHVzZWQgYnkgc2VydmVyX2Nsb3NlKCkgdG8gd2FpdCBmb3IgYWxsIHRocmVhZHMgY29tcGxldGlvbi4KICAgIF90aHJlYWRzID0gX05vVGhyZWFkcygpCgogICAgZGVmIHByb2Nlc3NfcmVxdWVzdF90aHJlYWQoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICIiIlNhbWUgYXMgaW4gQmFzZVNlcnZlciBidXQgYXMgYSB0aHJlYWQuCgogICAgICAgIEluIGFkZGl0aW9uLCBleGNlcHRpb24gaGFuZGxpbmcgaXMgZG9uZSBoZXJlLgoKICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCgogICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgIiIiU3RhcnQgYSBuZXcgdGhyZWFkIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCiAgICAgICAgaWYgc2VsZi5ibG9ja19vbl9jbG9zZToKICAgICAgICAgICAgdmFycyhzZWxmKS5zZXRkZWZhdWx0KCdfdGhyZWFkcycsIF9UaHJlYWRzKCkpCiAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0ID0gc2VsZi5wcm9jZXNzX3JlcXVlc3RfdGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSAocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpKQogICAgICAgIHQuZGFlbW9uID0gc2VsZi5kYWVtb25fdGhyZWFkcwogICAgICAgIHNlbGYuX3RocmVhZHMuYXBwZW5kKHQpCiAgICAgICAgdC5zdGFydCgpCgogICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToKICAgICAgICBzdXBlcigpLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgc2VsZi5fdGhyZWFkcy5qb2luKCkKCgppZiBoYXNhdHRyKG9zLCAiZm9yayIpOgogICAgY2xhc3MgRm9ya2luZ1VEUFNlcnZlcihGb3JraW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKICAgIGNsYXNzIEZvcmtpbmdUQ1BTZXJ2ZXIoRm9ya2luZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCgpjbGFzcyBUaHJlYWRpbmdVRFBTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKY2xhc3MgVGhyZWFkaW5nVENQU2VydmVyKFRocmVhZGluZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCgppZiBoYXNhdHRyKHNvY2tldCwgJ0FGX1VOSVgnKToKCiAgICBjbGFzcyBVbml4U3RyZWFtU2VydmVyKFRDUFNlcnZlcik6CiAgICAgICAgYWRkcmVzc19mYW1pbHkgPSBzb2NrZXQuQUZfVU5JWAoKICAgIGNsYXNzIFVuaXhEYXRhZ3JhbVNlcnZlcihVRFBTZXJ2ZXIpOgogICAgICAgIGFkZHJlc3NfZmFtaWx5ID0gc29ja2V0LkFGX1VOSVgKCiAgICBjbGFzcyBUaHJlYWRpbmdVbml4U3RyZWFtU2VydmVyKFRocmVhZGluZ01peEluLCBVbml4U3RyZWFtU2VydmVyKTogcGFzcwoKICAgIGNsYXNzIFRocmVhZGluZ1VuaXhEYXRhZ3JhbVNlcnZlcihUaHJlYWRpbmdNaXhJbiwgVW5peERhdGFncmFtU2VydmVyKTogcGFzcwoKY2xhc3MgQmFzZVJlcXVlc3RIYW5kbGVyOgoKICAgICIiIkJhc2UgY2xhc3MgZm9yIHJlcXVlc3QgaGFuZGxlciBjbGFzc2VzLgoKICAgIFRoaXMgY2xhc3MgaXMgaW5zdGFudGlhdGVkIGZvciBlYWNoIHJlcXVlc3QgdG8gYmUgaGFuZGxlZC4gIFRoZQogICAgY29uc3RydWN0b3Igc2V0cyB0aGUgaW5zdGFuY2UgdmFyaWFibGVzIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzCiAgICBhbmQgc2VydmVyLCBhbmQgdGhlbiBjYWxscyB0aGUgaGFuZGxlKCkgbWV0aG9kLiAgVG8gaW1wbGVtZW50IGEKICAgIHNwZWNpZmljIHNlcnZpY2UsIGFsbCB5b3UgbmVlZCB0byBkbyBpcyB0byBkZXJpdmUgYSBjbGFzcyB3aGljaAogICAgZGVmaW5lcyBhIGhhbmRsZSgpIG1ldGhvZC4KCiAgICBUaGUgaGFuZGxlKCkgbWV0aG9kIGNhbiBmaW5kIHRoZSByZXF1ZXN0IGFzIHNlbGYucmVxdWVzdCwgdGhlCiAgICBjbGllbnQgYWRkcmVzcyBhcyBzZWxmLmNsaWVudF9hZGRyZXNzLCBhbmQgdGhlIHNlcnZlciAoaW4gY2FzZSBpdAogICAgbmVlZHMgYWNjZXNzIHRvIHBlci1zZXJ2ZXIgaW5mb3JtYXRpb24pIGFzIHNlbGYuc2VydmVyLiAgU2luY2UgYQogICAgc2VwYXJhdGUgaW5zdGFuY2UgaXMgY3JlYXRlZCBmb3IgZWFjaCByZXF1ZXN0LCB0aGUgaGFuZGxlKCkgbWV0aG9kCiAgICBjYW4gZGVmaW5lIG90aGVyIGFyYml0cmFyeSBpbnN0YW5jZSB2YXJpYWJsZXMuCgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpOgogICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKICAgICAgICBzZWxmLmNsaWVudF9hZGRyZXNzID0gY2xpZW50X2FkZHJlc3MKICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlcgogICAgICAgIHNlbGYuc2V0dXAoKQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5oYW5kbGUoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuZmluaXNoKCkKCiAgICBkZWYgc2V0dXAoc2VsZik6CiAgICAgICAgcGFzcwoKICAgIGRlZiBoYW5kbGUoc2VsZik6CiAgICAgICAgcGFzcwoKICAgIGRlZiBmaW5pc2goc2VsZik6CiAgICAgICAgcGFzcwoKCiMgVGhlIGZvbGxvd2luZyB0d28gY2xhc3NlcyBtYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSB0aGUgc2FtZSBzZXJ2aWNlCiMgY2xhc3MgZm9yIHN0cmVhbSBvciBkYXRhZ3JhbSBzZXJ2ZXJzLgojIEVhY2ggY2xhc3Mgc2V0cyB1cCB0aGVzZSBpbnN0YW5jZSB2YXJpYWJsZXM6CiMgLSByZmlsZTogYSBmaWxlIG9iamVjdCBmcm9tIHdoaWNoIHJlY2VpdmVzIHRoZSByZXF1ZXN0IGlzIHJlYWQKIyAtIHdmaWxlOiBhIGZpbGUgb2JqZWN0IHRvIHdoaWNoIHRoZSByZXBseSBpcyB3cml0dGVuCiMgV2hlbiB0aGUgaGFuZGxlKCkgbWV0aG9kIHJldHVybnMsIHdmaWxlIGlzIGZsdXNoZWQgcHJvcGVybHkKCgpjbGFzcyBTdHJlYW1SZXF1ZXN0SGFuZGxlcihCYXNlUmVxdWVzdEhhbmRsZXIpOgoKICAgICIiIkRlZmluZSBzZWxmLnJmaWxlIGFuZCBzZWxmLndmaWxlIGZvciBzdHJlYW0gc29ja2V0cy4iIiIKCiAgICAjIERlZmF1bHQgYnVmZmVyIHNpemVzIGZvciByZmlsZSwgd2ZpbGUuCiAgICAjIFdlIGRlZmF1bHQgcmZpbGUgdG8gYnVmZmVyZWQgYmVjYXVzZSBvdGhlcndpc2UgaXQgY291bGQgYmUKICAgICMgcmVhbGx5IHNsb3cgZm9yIGxhcmdlIGRhdGEgKGEgZ2V0YygpIGNhbGwgcGVyIGJ5dGUpOyB3ZSBtYWtlCiAgICAjIHdmaWxlIHVuYnVmZmVyZWQgYmVjYXVzZSAoYSkgb2Z0ZW4gYWZ0ZXIgYSB3cml0ZSgpIHdlIHdhbnQgdG8KICAgICMgcmVhZCBhbmQgd2UgbmVlZCB0byBmbHVzaCB0aGUgbGluZTsgKGIpIGJpZyB3cml0ZXMgdG8gdW5idWZmZXJlZAogICAgIyBmaWxlcyBhcmUgdHlwaWNhbGx5IG9wdGltaXplZCBieSBzdGRpbyBldmVuIHdoZW4gYmlnIHJlYWRzCiAgICAjIGFyZW4ndC4KICAgIHJidWZzaXplID0gLTEKICAgIHdidWZzaXplID0gMAoKICAgICMgQSB0aW1lb3V0IHRvIGFwcGx5IHRvIHRoZSByZXF1ZXN0IHNvY2tldCwgaWYgbm90IE5vbmUuCiAgICB0aW1lb3V0ID0gTm9uZQoKICAgICMgRGlzYWJsZSBuYWdsZSBhbGdvcml0aG0gZm9yIHRoaXMgc29ja2V0LCBpZiBUcnVlLgogICAgIyBVc2Ugb25seSB3aGVuIHdidWZzaXplICE9IDAsIHRvIGF2b2lkIHNtYWxsIHBhY2tldHMuCiAgICBkaXNhYmxlX25hZ2xlX2FsZ29yaXRobSA9IEZhbHNlCgogICAgZGVmIHNldHVwKHNlbGYpOgogICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IHNlbGYucmVxdWVzdAogICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQogICAgICAgIGlmIHNlbGYuZGlzYWJsZV9uYWdsZV9hbGdvcml0aG06CiAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlRDUF9OT0RFTEFZLCBUcnVlKQogICAgICAgIHNlbGYucmZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3JiJywgc2VsZi5yYnVmc2l6ZSkKICAgICAgICBpZiBzZWxmLndidWZzaXplID09IDA6CiAgICAgICAgICAgIHNlbGYud2ZpbGUgPSBfU29ja2V0V3JpdGVyKHNlbGYuY29ubmVjdGlvbikKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLndmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCd3YicsIHNlbGYud2J1ZnNpemUpCgogICAgZGVmIGZpbmlzaChzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi53ZmlsZS5jbG9zZWQ6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYud2ZpbGUuZmx1c2goKQogICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgogICAgICAgICAgICAgICAgIyBBIGZpbmFsIHNvY2tldCBlcnJvciBtYXkgaGF2ZSBvY2N1cnJlZCBoZXJlLCBzdWNoIGFzCiAgICAgICAgICAgICAgICAjIHRoZSBsb2NhbCBlcnJvciBFQ09OTkFCT1JURUQuCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgc2VsZi53ZmlsZS5jbG9zZSgpCiAgICAgICAgc2VsZi5yZmlsZS5jbG9zZSgpCgpjbGFzcyBfU29ja2V0V3JpdGVyKEJ1ZmZlcmVkSU9CYXNlKToKICAgICIiIlNpbXBsZSB3cml0YWJsZSBCdWZmZXJlZElPQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgYSBzb2NrZXQKCiAgICBEb2VzIG5vdCBob2xkIGRhdGEgaW4gYSBidWZmZXIsIGF2b2lkaW5nIGFueSBuZWVkIHRvIGNhbGwgZmx1c2goKS4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc29jayk6CiAgICAgICAgc2VsZi5fc29jayA9IHNvY2sKCiAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgd3JpdGUoc2VsZiwgYik6CiAgICAgICAgc2VsZi5fc29jay5zZW5kYWxsKGIpCiAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGIpIGFzIHZpZXc6CiAgICAgICAgICAgIHJldHVybiB2aWV3Lm5ieXRlcwoKICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2suZmlsZW5vKCkKCmNsYXNzIERhdGFncmFtUmVxdWVzdEhhbmRsZXIoQmFzZVJlcXVlc3RIYW5kbGVyKToKCiAgICAiIiJEZWZpbmUgc2VsZi5yZmlsZSBhbmQgc2VsZi53ZmlsZSBmb3IgZGF0YWdyYW0gc29ja2V0cy4iIiIKCiAgICBkZWYgc2V0dXAoc2VsZik6CiAgICAgICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogICAgICAgIHNlbGYucGFja2V0LCBzZWxmLnNvY2tldCA9IHNlbGYucmVxdWVzdAogICAgICAgIHNlbGYucmZpbGUgPSBCeXRlc0lPKHNlbGYucGFja2V0KQogICAgICAgIHNlbGYud2ZpbGUgPSBCeXRlc0lPKCkKCiAgICBkZWYgZmluaXNoKHNlbGYpOgogICAgICAgIHNlbGYuc29ja2V0LnNlbmR0byhzZWxmLndmaWxlLmdldHZhbHVlKCksIHNlbGYuY2xpZW50X2FkZHJlc3MpClBLAwQUAAAAAAACIKNWKx4XmecAAADnAAAADgAAAHNyZV9jb21waWxlLnB5aW1wb3J0IHdhcm5pbmdzCndhcm5pbmdzLndhcm4oZiJtb2R1bGUge19fbmFtZV9fIXJ9IGlzIGRlcHJlY2F0ZWQiLAogICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCgpmcm9tIHJlIGltcG9ydCBfY29tcGlsZXIgYXMgXwpnbG9iYWxzKCkudXBkYXRlKHtrOiB2IGZvciBrLCB2IGluIHZhcnMoXykuaXRlbXMoKSBpZiBrWzoyXSAhPSAnX18nfSkKUEsDBBQAAAAAAAIgo1ZIB6Qg6AAAAOgAAAAQAAAAc3JlX2NvbnN0YW50cy5weWltcG9ydCB3YXJuaW5ncwp3YXJuaW5ncy53YXJuKGYibW9kdWxlIHtfX25hbWVfXyFyfSBpcyBkZXByZWNhdGVkIiwKICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQoKZnJvbSByZSBpbXBvcnQgX2NvbnN0YW50cyBhcyBfCmdsb2JhbHMoKS51cGRhdGUoe2s6IHYgZm9yIGssIHYgaW4gdmFycyhfKS5pdGVtcygpIGlmIGtbOjJdICE9ICdfXyd9KQpQSwMEFAAAAAAAAiCjVvZkfe7lAAAA5QAAAAwAAABzcmVfcGFyc2UucHlpbXBvcnQgd2FybmluZ3MKd2FybmluZ3Mud2FybihmIm1vZHVsZSB7X19uYW1lX18hcn0gaXMgZGVwcmVjYXRlZCIsCiAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKCmZyb20gcmUgaW1wb3J0IF9wYXJzZXIgYXMgXwpnbG9iYWxzKCkudXBkYXRlKHtrOiB2IGZvciBrLCB2IGluIHZhcnMoXykuaXRlbXMoKSBpZiBrWzoyXSAhPSAnX18nfSkKUEsDBBQAAAAAAAIgo1YntGT6bRUAAG0VAAAHAAAAc3RhdC5weSIiIkNvbnN0YW50cy9mdW5jdGlvbnMgZm9yIGludGVycHJldGluZyByZXN1bHRzIG9mIG9zLnN0YXQoKSBhbmQgb3MubHN0YXQoKS4KClN1Z2dlc3RlZCB1c2FnZTogZnJvbSBzdGF0IGltcG9ydCAqCiIiIgoKIyBJbmRpY2VzIGZvciBzdGF0IHN0cnVjdCBtZW1iZXJzIGluIHRoZSB0dXBsZSByZXR1cm5lZCBieSBvcy5zdGF0KCkKClNUX01PREUgID0gMApTVF9JTk8gICA9IDEKU1RfREVWICAgPSAyClNUX05MSU5LID0gMwpTVF9VSUQgICA9IDQKU1RfR0lEICAgPSA1ClNUX1NJWkUgID0gNgpTVF9BVElNRSA9IDcKU1RfTVRJTUUgPSA4ClNUX0NUSU1FID0gOQoKIyBFeHRyYWN0IGJpdHMgZnJvbSB0aGUgbW9kZQoKZGVmIFNfSU1PREUobW9kZSk6CiAgICAiIiJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgY2FuIGJlIHNldCBieQogICAgb3MuY2htb2QoKS4KICAgICIiIgogICAgcmV0dXJuIG1vZGUgJiAwbzc3NzcKCmRlZiBTX0lGTVQobW9kZSk6CiAgICAiIiJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgZGVzY3JpYmVzIHRoZQogICAgZmlsZSB0eXBlLgogICAgIiIiCiAgICByZXR1cm4gbW9kZSAmIDBvMTcwMDAwCgojIENvbnN0YW50cyB1c2VkIGFzIFNfSUZNVCgpIGZvciB2YXJpb3VzIGZpbGUgdHlwZXMKIyAobm90IGFsbCBhcmUgaW1wbGVtZW50ZWQgb24gYWxsIHN5c3RlbXMpCgpTX0lGRElSICA9IDBvMDQwMDAwICAjIGRpcmVjdG9yeQpTX0lGQ0hSICA9IDBvMDIwMDAwICAjIGNoYXJhY3RlciBkZXZpY2UKU19JRkJMSyAgPSAwbzA2MDAwMCAgIyBibG9jayBkZXZpY2UKU19JRlJFRyAgPSAwbzEwMDAwMCAgIyByZWd1bGFyIGZpbGUKU19JRklGTyAgPSAwbzAxMDAwMCAgIyBmaWZvIChuYW1lZCBwaXBlKQpTX0lGTE5LICA9IDBvMTIwMDAwICAjIHN5bWJvbGljIGxpbmsKU19JRlNPQ0sgPSAwbzE0MDAwMCAgIyBzb2NrZXQgZmlsZQojIEZhbGxiYWNrcyBmb3IgdW5jb21tb24gcGxhdGZvcm0tc3BlY2lmaWMgY29uc3RhbnRzClNfSUZET09SID0gMApTX0lGUE9SVCA9IDAKU19JRldIVCA9IDAKCiMgRnVuY3Rpb25zIHRvIHRlc3QgZm9yIGVhY2ggZmlsZSB0eXBlCgpkZWYgU19JU0RJUihtb2RlKToKICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGRpcmVjdG9yeS4iIiIKICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkRJUgoKZGVmIFNfSVNDSFIobW9kZSk6CiAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBjaGFyYWN0ZXIgc3BlY2lhbCBkZXZpY2UgZmlsZS4iIiIKICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkNIUgoKZGVmIFNfSVNCTEsobW9kZSk6CiAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBibG9jayBzcGVjaWFsIGRldmljZSBmaWxlLiIiIgogICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGQkxLCgpkZWYgU19JU1JFRyhtb2RlKToKICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHJlZ3VsYXIgZmlsZS4iIiIKICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRlJFRwoKZGVmIFNfSVNGSUZPKG1vZGUpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgRklGTyAobmFtZWQgcGlwZSkuIiIiCiAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZJRk8KCmRlZiBTX0lTTE5LKG1vZGUpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgc3ltYm9saWMgbGluay4iIiIKICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkxOSwoKZGVmIFNfSVNTT0NLKG1vZGUpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgc29ja2V0LiIiIgogICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGU09DSwoKZGVmIFNfSVNET09SKG1vZGUpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgZG9vci4iIiIKICAgIHJldHVybiBGYWxzZQoKZGVmIFNfSVNQT1JUKG1vZGUpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGFuIGV2ZW50IHBvcnQuIiIiCiAgICByZXR1cm4gRmFsc2UKCmRlZiBTX0lTV0hUKG1vZGUpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgd2hpdGVvdXQuIiIiCiAgICByZXR1cm4gRmFsc2UKCiMgTmFtZXMgZm9yIHBlcm1pc3Npb24gYml0cwoKU19JU1VJRCA9IDBvNDAwMCAgIyBzZXQgVUlEIGJpdApTX0lTR0lEID0gMG8yMDAwICAjIHNldCBHSUQgYml0ClNfRU5GTVQgPSBTX0lTR0lEICMgZmlsZSBsb2NraW5nIGVuZm9yY2VtZW50ClNfSVNWVFggPSAwbzEwMDAgICMgc3RpY2t5IGJpdApTX0lSRUFEID0gMG8wNDAwICAjIFVuaXggVjcgc3lub255bSBmb3IgU19JUlVTUgpTX0lXUklURSA9IDBvMDIwMCAjIFVuaXggVjcgc3lub255bSBmb3IgU19JV1VTUgpTX0lFWEVDID0gMG8wMTAwICAjIFVuaXggVjcgc3lub255bSBmb3IgU19JWFVTUgpTX0lSV1hVID0gMG8wNzAwICAjIG1hc2sgZm9yIG93bmVyIHBlcm1pc3Npb25zClNfSVJVU1IgPSAwbzA0MDAgICMgcmVhZCBieSBvd25lcgpTX0lXVVNSID0gMG8wMjAwICAjIHdyaXRlIGJ5IG93bmVyClNfSVhVU1IgPSAwbzAxMDAgICMgZXhlY3V0ZSBieSBvd25lcgpTX0lSV1hHID0gMG8wMDcwICAjIG1hc2sgZm9yIGdyb3VwIHBlcm1pc3Npb25zClNfSVJHUlAgPSAwbzAwNDAgICMgcmVhZCBieSBncm91cApTX0lXR1JQID0gMG8wMDIwICAjIHdyaXRlIGJ5IGdyb3VwClNfSVhHUlAgPSAwbzAwMTAgICMgZXhlY3V0ZSBieSBncm91cApTX0lSV1hPID0gMG8wMDA3ICAjIG1hc2sgZm9yIG90aGVycyAobm90IGluIGdyb3VwKSBwZXJtaXNzaW9ucwpTX0lST1RIID0gMG8wMDA0ICAjIHJlYWQgYnkgb3RoZXJzClNfSVdPVEggPSAwbzAwMDIgICMgd3JpdGUgYnkgb3RoZXJzClNfSVhPVEggPSAwbzAwMDEgICMgZXhlY3V0ZSBieSBvdGhlcnMKCiMgTmFtZXMgZm9yIGZpbGUgZmxhZ3MKClVGX05PRFVNUCAgICA9IDB4MDAwMDAwMDEgICMgZG8gbm90IGR1bXAgZmlsZQpVRl9JTU1VVEFCTEUgPSAweDAwMDAwMDAyICAjIGZpbGUgbWF5IG5vdCBiZSBjaGFuZ2VkClVGX0FQUEVORCAgICA9IDB4MDAwMDAwMDQgICMgZmlsZSBtYXkgb25seSBiZSBhcHBlbmRlZCB0bwpVRl9PUEFRVUUgICAgPSAweDAwMDAwMDA4ICAjIGRpcmVjdG9yeSBpcyBvcGFxdWUgd2hlbiB2aWV3ZWQgdGhyb3VnaCBhIHVuaW9uIHN0YWNrClVGX05PVU5MSU5LICA9IDB4MDAwMDAwMTAgICMgZmlsZSBtYXkgbm90IGJlIHJlbmFtZWQgb3IgZGVsZXRlZApVRl9DT01QUkVTU0VEID0gMHgwMDAwMDAyMCAjIE9TIFg6IGZpbGUgaXMgaGZzLWNvbXByZXNzZWQKVUZfSElEREVOICAgID0gMHgwMDAwODAwMCAgIyBPUyBYOiBmaWxlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkClNGX0FSQ0hJVkVEICA9IDB4MDAwMTAwMDAgICMgZmlsZSBtYXkgYmUgYXJjaGl2ZWQKU0ZfSU1NVVRBQkxFID0gMHgwMDAyMDAwMCAgIyBmaWxlIG1heSBub3QgYmUgY2hhbmdlZApTRl9BUFBFTkQgICAgPSAweDAwMDQwMDAwICAjIGZpbGUgbWF5IG9ubHkgYmUgYXBwZW5kZWQgdG8KU0ZfTk9VTkxJTksgID0gMHgwMDEwMDAwMCAgIyBmaWxlIG1heSBub3QgYmUgcmVuYW1lZCBvciBkZWxldGVkClNGX1NOQVBTSE9UICA9IDB4MDAyMDAwMDAgICMgZmlsZSBpcyBhIHNuYXBzaG90IGZpbGUKCgpfZmlsZW1vZGVfdGFibGUgPSAoCiAgICAoKFNfSUZMTkssICAgICAgICAgImwiKSwKICAgICAoU19JRlNPQ0ssICAgICAgICAicyIpLCAgIyBNdXN0IGFwcGVhciBiZWZvcmUgSUZSRUcgYW5kIElGRElSIGFzIElGU09DSyA9PSBJRlJFRyB8IElGRElSCiAgICAgKFNfSUZSRUcsICAgICAgICAgIi0iKSwKICAgICAoU19JRkJMSywgICAgICAgICAiYiIpLAogICAgIChTX0lGRElSLCAgICAgICAgICJkIiksCiAgICAgKFNfSUZDSFIsICAgICAgICAgImMiKSwKICAgICAoU19JRklGTywgICAgICAgICAicCIpKSwKCiAgICAoKFNfSVJVU1IsICAgICAgICAgInIiKSwpLAogICAgKChTX0lXVVNSLCAgICAgICAgICJ3IiksKSwKICAgICgoU19JWFVTUnxTX0lTVUlELCAicyIpLAogICAgIChTX0lTVUlELCAgICAgICAgICJTIiksCiAgICAgKFNfSVhVU1IsICAgICAgICAgIngiKSksCgogICAgKChTX0lSR1JQLCAgICAgICAgICJyIiksKSwKICAgICgoU19JV0dSUCwgICAgICAgICAidyIpLCksCiAgICAoKFNfSVhHUlB8U19JU0dJRCwgInMiKSwKICAgICAoU19JU0dJRCwgICAgICAgICAiUyIpLAogICAgIChTX0lYR1JQLCAgICAgICAgICJ4IikpLAoKICAgICgoU19JUk9USCwgICAgICAgICAiciIpLCksCiAgICAoKFNfSVdPVEgsICAgICAgICAgInciKSwpLAogICAgKChTX0lYT1RIfFNfSVNWVFgsICJ0IiksCiAgICAgKFNfSVNWVFgsICAgICAgICAgIlQiKSwKICAgICAoU19JWE9USCwgICAgICAgICAieCIpKQopCgpkZWYgZmlsZW1vZGUobW9kZSk6CiAgICAiIiJDb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YgdGhlIGZvcm0gJy1yd3hyd3hyd3gnLiIiIgogICAgcGVybSA9IFtdCiAgICBmb3IgdGFibGUgaW4gX2ZpbGVtb2RlX3RhYmxlOgogICAgICAgIGZvciBiaXQsIGNoYXIgaW4gdGFibGU6CiAgICAgICAgICAgIGlmIG1vZGUgJiBiaXQgPT0gYml0OgogICAgICAgICAgICAgICAgcGVybS5hcHBlbmQoY2hhcikKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGVybS5hcHBlbmQoIi0iKQogICAgcmV0dXJuICIiLmpvaW4ocGVybSkKCgojIFdpbmRvd3MgRklMRV9BVFRSSUJVVEUgY29uc3RhbnRzIGZvciBpbnRlcnByZXRpbmcgb3Muc3RhdCgpJ3MKIyAic3RfZmlsZV9hdHRyaWJ1dGVzIiBtZW1iZXIKCkZJTEVfQVRUUklCVVRFX0FSQ0hJVkUgPSAzMgpGSUxFX0FUVFJJQlVURV9DT01QUkVTU0VEID0gMjA0OApGSUxFX0FUVFJJQlVURV9ERVZJQ0UgPSA2NApGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkgPSAxNgpGSUxFX0FUVFJJQlVURV9FTkNSWVBURUQgPSAxNjM4NApGSUxFX0FUVFJJQlVURV9ISURERU4gPSAyCkZJTEVfQVRUUklCVVRFX0lOVEVHUklUWV9TVFJFQU0gPSAzMjc2OApGSUxFX0FUVFJJQlVURV9OT1JNQUwgPSAxMjgKRklMRV9BVFRSSUJVVEVfTk9UX0NPTlRFTlRfSU5ERVhFRCA9IDgxOTIKRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQSA9IDEzMTA3MgpGSUxFX0FUVFJJQlVURV9PRkZMSU5FID0gNDA5NgpGSUxFX0FUVFJJQlVURV9SRUFET05MWSA9IDEKRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCA9IDEwMjQKRklMRV9BVFRSSUJVVEVfU1BBUlNFX0ZJTEUgPSA1MTIKRklMRV9BVFRSSUJVVEVfU1lTVEVNID0gNApGSUxFX0FUVFJJQlVURV9URU1QT1JBUlkgPSAyNTYKRklMRV9BVFRSSUJVVEVfVklSVFVBTCA9IDY1NTM2CgoKIyBJZiBhdmFpbGFibGUsIHVzZSBDIGltcGxlbWVudGF0aW9uCnRyeToKICAgIGZyb20gX3N0YXQgaW1wb3J0ICoKZXhjZXB0IEltcG9ydEVycm9yOgogICAgcGFzcwpQSwMEFAAAAAAAAiCjVore0DBZugAAWboAAA0AAABzdGF0aXN0aWNzLnB5IiIiCkJhc2ljIHN0YXRpc3RpY3MgbW9kdWxlLgoKVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBjYWxjdWxhdGluZyBzdGF0aXN0aWNzIG9mIGRhdGEsIGluY2x1ZGluZwphdmVyYWdlcywgdmFyaWFuY2UsIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24uCgpDYWxjdWxhdGluZyBhdmVyYWdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKPT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGdW5jdGlvbiAgICAgICAgICAgIERlc2NyaXB0aW9uCj09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KbWVhbiAgICAgICAgICAgICAgICBBcml0aG1ldGljIG1lYW4gKGF2ZXJhZ2UpIG9mIGRhdGEuCmZtZWFuICAgICAgICAgICAgICAgRmFzdCwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBtZWFuLgpnZW9tZXRyaWNfbWVhbiAgICAgIEdlb21ldHJpYyBtZWFuIG9mIGRhdGEuCmhhcm1vbmljX21lYW4gICAgICAgSGFybW9uaWMgbWVhbiBvZiBkYXRhLgptZWRpYW4gICAgICAgICAgICAgIE1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBkYXRhLgptZWRpYW5fbG93ICAgICAgICAgIExvdyBtZWRpYW4gb2YgZGF0YS4KbWVkaWFuX2hpZ2ggICAgICAgICBIaWdoIG1lZGlhbiBvZiBkYXRhLgptZWRpYW5fZ3JvdXBlZCAgICAgIE1lZGlhbiwgb3IgNTB0aCBwZXJjZW50aWxlLCBvZiBncm91cGVkIGRhdGEuCm1vZGUgICAgICAgICAgICAgICAgTW9kZSAobW9zdCBjb21tb24gdmFsdWUpIG9mIGRhdGEuCm11bHRpbW9kZSAgICAgICAgICAgTGlzdCBvZiBtb2RlcyAobW9zdCBjb21tb24gdmFsdWVzIG9mIGRhdGEpLgpxdWFudGlsZXMgICAgICAgICAgIERpdmlkZSBkYXRhIGludG8gaW50ZXJ2YWxzIHdpdGggZXF1YWwgcHJvYmFiaWxpdHkuCj09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkNhbGN1bGF0ZSB0aGUgYXJpdGhtZXRpYyBtZWFuICgidGhlIGF2ZXJhZ2UiKSBvZiBkYXRhOgoKPj4+IG1lYW4oWy0xLjAsIDIuNSwgMy4yNSwgNS43NV0pCjIuNjI1CgoKQ2FsY3VsYXRlIHRoZSBzdGFuZGFyZCBtZWRpYW4gb2YgZGlzY3JldGUgZGF0YToKCj4+PiBtZWRpYW4oWzIsIDMsIDQsIDVdKQozLjUKCgpDYWxjdWxhdGUgdGhlIG1lZGlhbiwgb3IgNTB0aCBwZXJjZW50aWxlLCBvZiBkYXRhIGdyb3VwZWQgaW50byBjbGFzcyBpbnRlcnZhbHMKY2VudHJlZCBvbiB0aGUgZGF0YSB2YWx1ZXMgcHJvdmlkZWQuIEUuZy4gaWYgeW91ciBkYXRhIHBvaW50cyBhcmUgcm91bmRlZCB0bwp0aGUgbmVhcmVzdCB3aG9sZSBudW1iZXI6Cgo+Pj4gbWVkaWFuX2dyb3VwZWQoWzIsIDIsIDMsIDMsIDMsIDRdKSAgI2RvY3Rlc3Q6ICtFTExJUFNJUwoyLjgzMzMzMzMzMzMuLi4KClRoaXMgc2hvdWxkIGJlIGludGVycHJldGVkIGluIHRoaXMgd2F5OiB5b3UgaGF2ZSB0d28gZGF0YSBwb2ludHMgaW4gdGhlIGNsYXNzCmludGVydmFsIDEuNS0yLjUsIHRocmVlIGRhdGEgcG9pbnRzIGluIHRoZSBjbGFzcyBpbnRlcnZhbCAyLjUtMy41LCBhbmQgb25lIGluCnRoZSBjbGFzcyBpbnRlcnZhbCAzLjUtNC41LiBUaGUgbWVkaWFuIG9mIHRoZXNlIGRhdGEgcG9pbnRzIGlzIDIuODMzMy4uLgoKCkNhbGN1bGF0aW5nIHZhcmlhYmlsaXR5IG9yIHNwcmVhZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCj09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZ1bmN0aW9uICAgICAgICAgICAgRGVzY3JpcHRpb24KPT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KcHZhcmlhbmNlICAgICAgICAgICBQb3B1bGF0aW9uIHZhcmlhbmNlIG9mIGRhdGEuCnZhcmlhbmNlICAgICAgICAgICAgU2FtcGxlIHZhcmlhbmNlIG9mIGRhdGEuCnBzdGRldiAgICAgICAgICAgICAgUG9wdWxhdGlvbiBzdGFuZGFyZCBkZXZpYXRpb24gb2YgZGF0YS4Kc3RkZXYgICAgICAgICAgICAgICBTYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIGRhdGEuCj09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpDYWxjdWxhdGUgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBvZiBzYW1wbGUgZGF0YToKCj4+PiBzdGRldihbMi41LCAzLjI1LCA1LjUsIDExLjI1LCAxMS43NV0pICAjZG9jdGVzdDogK0VMTElQU0lTCjQuMzg5NjE4NDM0NDQuLi4KCklmIHlvdSBoYXZlIHByZXZpb3VzbHkgY2FsY3VsYXRlZCB0aGUgbWVhbiwgeW91IGNhbiBwYXNzIGl0IGFzIHRoZSBvcHRpb25hbApzZWNvbmQgYXJndW1lbnQgdG8gdGhlIGZvdXIgInNwcmVhZCIgZnVuY3Rpb25zIHRvIGF2b2lkIHJlY2FsY3VsYXRpbmcgaXQ6Cgo+Pj4gZGF0YSA9IFsxLCAyLCAyLCA0LCA0LCA0LCA1LCA2XQo+Pj4gbXUgPSBtZWFuKGRhdGEpCj4+PiBwdmFyaWFuY2UoZGF0YSwgbXUpCjIuNQoKClN0YXRpc3RpY3MgZm9yIHJlbGF0aW9ucyBiZXR3ZWVuIHR3byBpbnB1dHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZ1bmN0aW9uICAgICAgICAgICAgRGVzY3JpcHRpb24KPT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmNvdmFyaWFuY2UgICAgICAgICAgU2FtcGxlIGNvdmFyaWFuY2UgZm9yIHR3byB2YXJpYWJsZXMuCmNvcnJlbGF0aW9uICAgICAgICAgUGVhcnNvbidzIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50IGZvciB0d28gdmFyaWFibGVzLgpsaW5lYXJfcmVncmVzc2lvbiAgIEludGVyY2VwdCBhbmQgc2xvcGUgZm9yIHNpbXBsZSBsaW5lYXIgcmVncmVzc2lvbi4KPT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpDYWxjdWxhdGUgY292YXJpYW5jZSwgUGVhcnNvbidzIGNvcnJlbGF0aW9uLCBhbmQgc2ltcGxlIGxpbmVhciByZWdyZXNzaW9uCmZvciB0d28gaW5wdXRzOgoKPj4+IHggPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0KPj4+IHkgPSBbMSwgMiwgMywgMSwgMiwgMywgMSwgMiwgM10KPj4+IGNvdmFyaWFuY2UoeCwgeSkKMC43NQo+Pj4gY29ycmVsYXRpb24oeCwgeSkgICNkb2N0ZXN0OiArRUxMSVBTSVMKMC4zMTYyMjc3NjYwMS4uLgo+Pj4gbGluZWFyX3JlZ3Jlc3Npb24oeCwgeSkgICNkb2N0ZXN0OgpMaW5lYXJSZWdyZXNzaW9uKHNsb3BlPTAuMSwgaW50ZXJjZXB0PTEuNSkKCgpFeGNlcHRpb25zCi0tLS0tLS0tLS0KCkEgc2luZ2xlIGV4Y2VwdGlvbiBpcyBkZWZpbmVkOiBTdGF0aXN0aWNzRXJyb3IgaXMgYSBzdWJjbGFzcyBvZiBWYWx1ZUVycm9yLgoKIiIiCgpfX2FsbF9fID0gWwogICAgJ05vcm1hbERpc3QnLAogICAgJ1N0YXRpc3RpY3NFcnJvcicsCiAgICAnY29ycmVsYXRpb24nLAogICAgJ2NvdmFyaWFuY2UnLAogICAgJ2ZtZWFuJywKICAgICdnZW9tZXRyaWNfbWVhbicsCiAgICAnaGFybW9uaWNfbWVhbicsCiAgICAnbGluZWFyX3JlZ3Jlc3Npb24nLAogICAgJ21lYW4nLAogICAgJ21lZGlhbicsCiAgICAnbWVkaWFuX2dyb3VwZWQnLAogICAgJ21lZGlhbl9oaWdoJywKICAgICdtZWRpYW5fbG93JywKICAgICdtb2RlJywKICAgICdtdWx0aW1vZGUnLAogICAgJ3BzdGRldicsCiAgICAncHZhcmlhbmNlJywKICAgICdxdWFudGlsZXMnLAogICAgJ3N0ZGV2JywKICAgICd2YXJpYW5jZScsCl0KCmltcG9ydCBtYXRoCmltcG9ydCBudW1iZXJzCmltcG9ydCByYW5kb20KaW1wb3J0IHN5cwoKZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCmZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbApmcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieSwgcmVwZWF0CmZyb20gYmlzZWN0IGltcG9ydCBiaXNlY3RfbGVmdCwgYmlzZWN0X3JpZ2h0CmZyb20gbWF0aCBpbXBvcnQgaHlwb3QsIHNxcnQsIGZhYnMsIGV4cCwgZXJmLCB0YXUsIGxvZywgZnN1bQpmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCmZyb20gb3BlcmF0b3IgaW1wb3J0IG11bApmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDb3VudGVyLCBuYW1lZHR1cGxlLCBkZWZhdWx0ZGljdAoKX1NRUlQyID0gc3FydCgyLjApCgojID09PSBFeGNlcHRpb25zID09PQoKY2xhc3MgU3RhdGlzdGljc0Vycm9yKFZhbHVlRXJyb3IpOgogICAgcGFzcwoKCiMgPT09IFByaXZhdGUgdXRpbGl0aWVzID09PQoKZGVmIF9zdW0oZGF0YSk6CiAgICAiIiJfc3VtKGRhdGEpIC0+ICh0eXBlLCBzdW0sIGNvdW50KQoKICAgIFJldHVybiBhIGhpZ2gtcHJlY2lzaW9uIHN1bSBvZiB0aGUgZ2l2ZW4gbnVtZXJpYyBkYXRhIGFzIGEgZnJhY3Rpb24sCiAgICB0b2dldGhlciB3aXRoIHRoZSB0eXBlIHRvIGJlIGNvbnZlcnRlZCB0byBhbmQgdGhlIGNvdW50IG9mIGl0ZW1zLgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQoKICAgID4+PiBfc3VtKFszLCAyLjI1LCA0LjUsIC0wLjUsIDAuMjVdKQogICAgKDxjbGFzcyAnZmxvYXQnPiwgRnJhY3Rpb24oMTksIDIpLCA1KQoKICAgIFNvbWUgc291cmNlcyBvZiByb3VuZC1vZmYgZXJyb3Igd2lsbCBiZSBhdm9pZGVkOgoKICAgICMgQnVpbHQtaW4gc3VtIHJldHVybnMgemVyby4KICAgID4+PiBfc3VtKFsxZTUwLCAxLCAtMWU1MF0gKiAxMDAwKQogICAgKDxjbGFzcyAnZmxvYXQnPiwgRnJhY3Rpb24oMTAwMCwgMSksIDMwMDApCgogICAgRnJhY3Rpb25zIGFuZCBEZWNpbWFscyBhcmUgYWxzbyBzdXBwb3J0ZWQ6CgogICAgPj4+IGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbiBhcyBGCiAgICA+Pj4gX3N1bShbRigyLCAzKSwgRig3LCA1KSwgRigxLCA0KSwgRig1LCA2KV0pCiAgICAoPGNsYXNzICdmcmFjdGlvbnMuRnJhY3Rpb24nPiwgRnJhY3Rpb24oNjMsIDIwKSwgNCkKCiAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsIGFzIEQKICAgID4+PiBkYXRhID0gW0QoIjAuMTM3NSIpLCBEKCIwLjIxMDgiKSwgRCgiMC4zMDYxIiksIEQoIjAuMDQxOSIpXQogICAgPj4+IF9zdW0oZGF0YSkKICAgICg8Y2xhc3MgJ2RlY2ltYWwuRGVjaW1hbCc+LCBGcmFjdGlvbig2OTYzLCAxMDAwMCksIDQpCgogICAgTWl4ZWQgdHlwZXMgYXJlIGN1cnJlbnRseSB0cmVhdGVkIGFzIGFuIGVycm9yLCBleGNlcHQgdGhhdCBpbnQgaXMKICAgIGFsbG93ZWQuCiAgICAiIiIKICAgIGNvdW50ID0gMAogICAgdHlwZXMgPSBzZXQoKQogICAgdHlwZXNfYWRkID0gdHlwZXMuYWRkCiAgICBwYXJ0aWFscyA9IHt9CiAgICBwYXJ0aWFsc19nZXQgPSBwYXJ0aWFscy5nZXQKICAgIGZvciB0eXAsIHZhbHVlcyBpbiBncm91cGJ5KGRhdGEsIHR5cGUpOgogICAgICAgIHR5cGVzX2FkZCh0eXApCiAgICAgICAgZm9yIG4sIGQgaW4gbWFwKF9leGFjdF9yYXRpbywgdmFsdWVzKToKICAgICAgICAgICAgY291bnQgKz0gMQogICAgICAgICAgICBwYXJ0aWFsc1tkXSA9IHBhcnRpYWxzX2dldChkLCAwKSArIG4KICAgIGlmIE5vbmUgaW4gcGFydGlhbHM6CiAgICAgICAgIyBUaGUgc3VtIHdpbGwgYmUgYSBOQU4gb3IgSU5GLiBXZSBjYW4gaWdub3JlIGFsbCB0aGUgZmluaXRlCiAgICAgICAgIyBwYXJ0aWFscywgYW5kIGp1c3QgbG9vayBhdCB0aGlzIHNwZWNpYWwgb25lLgogICAgICAgIHRvdGFsID0gcGFydGlhbHNbTm9uZV0KICAgICAgICBhc3NlcnQgbm90IF9pc2Zpbml0ZSh0b3RhbCkKICAgIGVsc2U6CiAgICAgICAgIyBTdW0gYWxsIHRoZSBwYXJ0aWFsIHN1bXMgdXNpbmcgYnVpbHRpbiBzdW0uCiAgICAgICAgdG90YWwgPSBzdW0oRnJhY3Rpb24obiwgZCkgZm9yIGQsIG4gaW4gcGFydGlhbHMuaXRlbXMoKSkKICAgIFQgPSByZWR1Y2UoX2NvZXJjZSwgdHlwZXMsIGludCkgICMgb3IgcmFpc2UgVHlwZUVycm9yCiAgICByZXR1cm4gKFQsIHRvdGFsLCBjb3VudCkKCgpkZWYgX3NzKGRhdGEsIGM9Tm9uZSk6CiAgICAiIiJSZXR1cm4gdGhlIGV4YWN0IG1lYW4gYW5kIHN1bSBvZiBzcXVhcmUgZGV2aWF0aW9ucyBvZiBzZXF1ZW5jZSBkYXRhLgoKICAgIENhbGN1bGF0aW9ucyBhcmUgZG9uZSBpbiBhIHNpbmdsZSBwYXNzLCBhbGxvd2luZyB0aGUgaW5wdXQgdG8gYmUgYW4gaXRlcmF0b3IuCgogICAgSWYgZ2l2ZW4gKmMqIGlzIHVzZWQgdGhlIG1lYW47IG90aGVyd2lzZSwgaXQgaXMgY2FsY3VsYXRlZCBmcm9tIHRoZSBkYXRhLgogICAgVXNlIHRoZSAqYyogYXJndW1lbnQgd2l0aCBjYXJlLCBhcyBpdCBjYW4gbGVhZCB0byBnYXJiYWdlIHJlc3VsdHMuCgogICAgIiIiCiAgICBpZiBjIGlzIG5vdCBOb25lOgogICAgICAgIFQsIHNzZCwgY291bnQgPSBfc3VtKChkIDo9IHggLSBjKSAqIGQgZm9yIHggaW4gZGF0YSkKICAgICAgICByZXR1cm4gKFQsIHNzZCwgYywgY291bnQpCiAgICBjb3VudCA9IDAKICAgIHR5cGVzID0gc2V0KCkKICAgIHR5cGVzX2FkZCA9IHR5cGVzLmFkZAogICAgc3hfcGFydGlhbHMgPSBkZWZhdWx0ZGljdChpbnQpCiAgICBzeHhfcGFydGlhbHMgPSBkZWZhdWx0ZGljdChpbnQpCiAgICBmb3IgdHlwLCB2YWx1ZXMgaW4gZ3JvdXBieShkYXRhLCB0eXBlKToKICAgICAgICB0eXBlc19hZGQodHlwKQogICAgICAgIGZvciBuLCBkIGluIG1hcChfZXhhY3RfcmF0aW8sIHZhbHVlcyk6CiAgICAgICAgICAgIGNvdW50ICs9IDEKICAgICAgICAgICAgc3hfcGFydGlhbHNbZF0gKz0gbgogICAgICAgICAgICBzeHhfcGFydGlhbHNbZF0gKz0gbiAqIG4KICAgIGlmIG5vdCBjb3VudDoKICAgICAgICBzc2QgPSBjID0gRnJhY3Rpb24oMCkKICAgIGVsaWYgTm9uZSBpbiBzeF9wYXJ0aWFsczoKICAgICAgICAjIFRoZSBzdW0gd2lsbCBiZSBhIE5BTiBvciBJTkYuIFdlIGNhbiBpZ25vcmUgYWxsIHRoZSBmaW5pdGUKICAgICAgICAjIHBhcnRpYWxzLCBhbmQganVzdCBsb29rIGF0IHRoaXMgc3BlY2lhbCBvbmUuCiAgICAgICAgc3NkID0gYyA9IHN4X3BhcnRpYWxzW05vbmVdCiAgICAgICAgYXNzZXJ0IG5vdCBfaXNmaW5pdGUoc3NkKQogICAgZWxzZToKICAgICAgICBzeCA9IHN1bShGcmFjdGlvbihuLCBkKSBmb3IgZCwgbiBpbiBzeF9wYXJ0aWFscy5pdGVtcygpKQogICAgICAgIHN4eCA9IHN1bShGcmFjdGlvbihuLCBkKmQpIGZvciBkLCBuIGluIHN4eF9wYXJ0aWFscy5pdGVtcygpKQogICAgICAgICMgVGhpcyBmb3JtdWxhIGhhcyBwb29yIG51bWVyaWMgcHJvcGVydGllcyBmb3IgZmxvYXRzLAogICAgICAgICMgYnV0IHdpdGggZnJhY3Rpb25zIGl0IGlzIGV4YWN0LgogICAgICAgIHNzZCA9IChjb3VudCAqIHN4eCAtIHN4ICogc3gpIC8gY291bnQKICAgICAgICBjID0gc3ggLyBjb3VudAogICAgVCA9IHJlZHVjZShfY29lcmNlLCB0eXBlcywgaW50KSAgIyBvciByYWlzZSBUeXBlRXJyb3IKICAgIHJldHVybiAoVCwgc3NkLCBjLCBjb3VudCkKCgpkZWYgX2lzZmluaXRlKHgpOgogICAgdHJ5OgogICAgICAgIHJldHVybiB4LmlzX2Zpbml0ZSgpICAjIExpa2VseSBhIERlY2ltYWwuCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgcmV0dXJuIG1hdGguaXNmaW5pdGUoeCkgICMgQ29lcmNlcyB0byBmbG9hdCBmaXJzdC4KCgpkZWYgX2NvZXJjZShULCBTKToKICAgICIiIkNvZXJjZSB0eXBlcyBUIGFuZCBTIHRvIGEgY29tbW9uIHR5cGUsIG9yIHJhaXNlIFR5cGVFcnJvci4KCiAgICBDb2VyY2lvbiBydWxlcyBhcmUgY3VycmVudGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gU2VlIHRoZSBDb2VyY2VUZXN0CiAgICB0ZXN0IGNsYXNzIGluIHRlc3Rfc3RhdGlzdGljcyBmb3IgZGV0YWlscy4KICAgICIiIgogICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI0MDY4LgogICAgYXNzZXJ0IFQgaXMgbm90IGJvb2wsICJpbml0aWFsIHR5cGUgVCBpcyBib29sIgogICAgIyBJZiB0aGUgdHlwZXMgYXJlIHRoZSBzYW1lLCBubyBuZWVkIHRvIGNvZXJjZSBhbnl0aGluZy4gUHV0IHRoaXMKICAgICMgZmlyc3QsIHNvIHRoYXQgdGhlIHVzdWFsIGNhc2UgKG5vIGNvZXJjaW9uIG5lZWRlZCkgaGFwcGVucyBhcyBzb29uCiAgICAjIGFzIHBvc3NpYmxlLgogICAgaWYgVCBpcyBTOiAgcmV0dXJuIFQKICAgICMgTWl4ZWQgaW50ICYgb3RoZXIgY29lcmNlIHRvIHRoZSBvdGhlciB0eXBlLgogICAgaWYgUyBpcyBpbnQgb3IgUyBpcyBib29sOiAgcmV0dXJuIFQKICAgIGlmIFQgaXMgaW50OiAgcmV0dXJuIFMKICAgICMgSWYgb25lIGlzIGEgKHN0cmljdCkgc3ViY2xhc3Mgb2YgdGhlIG90aGVyLCBjb2VyY2UgdG8gdGhlIHN1YmNsYXNzLgogICAgaWYgaXNzdWJjbGFzcyhTLCBUKTogIHJldHVybiBTCiAgICBpZiBpc3N1YmNsYXNzKFQsIFMpOiAgcmV0dXJuIFQKICAgICMgSW50cyBjb2VyY2UgdG8gdGhlIG90aGVyIHR5cGUuCiAgICBpZiBpc3N1YmNsYXNzKFQsIGludCk6ICByZXR1cm4gUwogICAgaWYgaXNzdWJjbGFzcyhTLCBpbnQpOiAgcmV0dXJuIFQKICAgICMgTWl4ZWQgZnJhY3Rpb24gJiBmbG9hdCBjb2VyY2VzIHRvIGZsb2F0IChvciBmbG9hdCBzdWJjbGFzcykuCiAgICBpZiBpc3N1YmNsYXNzKFQsIEZyYWN0aW9uKSBhbmQgaXNzdWJjbGFzcyhTLCBmbG9hdCk6CiAgICAgICAgcmV0dXJuIFMKICAgIGlmIGlzc3ViY2xhc3MoVCwgZmxvYXQpIGFuZCBpc3N1YmNsYXNzKFMsIEZyYWN0aW9uKToKICAgICAgICByZXR1cm4gVAogICAgIyBBbnkgb3RoZXIgY29tYmluYXRpb24gaXMgZGlzYWxsb3dlZC4KICAgIG1zZyA9ICJkb24ndCBrbm93IGhvdyB0byBjb2VyY2UgJXMgYW5kICVzIgogICAgcmFpc2UgVHlwZUVycm9yKG1zZyAlIChULl9fbmFtZV9fLCBTLl9fbmFtZV9fKSkKCgpkZWYgX2V4YWN0X3JhdGlvKHgpOgogICAgIiIiUmV0dXJuIFJlYWwgbnVtYmVyIHggdG8gZXhhY3QgKG51bWVyYXRvciwgZGVub21pbmF0b3IpIHBhaXIuCgogICAgPj4+IF9leGFjdF9yYXRpbygwLjI1KQogICAgKDEsIDQpCgogICAgeCBpcyBleHBlY3RlZCB0byBiZSBhbiBpbnQsIEZyYWN0aW9uLCBEZWNpbWFsIG9yIGZsb2F0LgogICAgIiIiCgogICAgIyBYWFggV2Ugc2hvdWxkIHJldmlzaXQgd2hldGhlciB1c2luZyBmcmFjdGlvbnMgdG8gYWNjdW11bGF0ZSBleGFjdAogICAgIyByYXRpb3MgaXMgdGhlIHJpZ2h0IHdheSB0byBnby4KCiAgICAjIFRoZSBpbnRlZ2VyIHJhdGlvcyBmb3IgYmluYXJ5IGZsb2F0cyBjYW4gaGF2ZSBudW1lcmF0b3JzIG9yCiAgICAjIGRlbm9taW5hdG9ycyB3aXRoIG92ZXIgMzAwIGRlY2ltYWwgZGlnaXRzLiAgVGhlIHByb2JsZW0gaXMgbW9yZQogICAgIyBhY3V0ZSB3aXRoIGRlY2ltYWwgZmxvYXRzIHdoZXJlIHRoZSBkZWZhdWx0IGRlY2ltYWwgY29udGV4dAogICAgIyBzdXBwb3J0cyBhIGh1Z2UgcmFuZ2Ugb2YgZXhwb25lbnRzIGZyb20gRW1pbj0tOTk5OTk5IHRvCiAgICAjIEVtYXg9OTk5OTk5LiAgV2hlbiBleHBhbmRlZCB3aXRoIGFzX2ludGVnZXJfcmF0aW8oKSwgbnVtYmVycyBsaWtlCiAgICAjIERlY2ltYWwoJzMuMTRFKzUwMDAnKSBhbmQgRGVjaW1hbCgnMy4xNEUtNTAwMCcpIGhhdmUgbGFyZ2UKICAgICMgbnVtZXJhdG9ycyBvciBkZW5vbWluYXRvcnMgdGhhdCB3aWxsIHNsb3cgY29tcHV0YXRpb24uCgogICAgIyBXaGVuIHRoZSBpbnRlZ2VyIHJhdGlvcyBhcmUgYWNjdW11bGF0ZWQgYXMgZnJhY3Rpb25zLCB0aGUgc2l6ZQogICAgIyBncm93cyB0byBjb3ZlciB0aGUgZnVsbCByYW5nZSBmcm9tIHRoZSBzbWFsbGVzdCBtYWduaXR1ZGUgdG8gdGhlCiAgICAjIGxhcmdlc3QuICBGb3IgZXhhbXBsZSwgRnJhY3Rpb24oMy4xNEUrMzAwKSArIEZyYWN0aW9uKDMuMTRFLTMwMCksCiAgICAjIGhhcyBhIDYxNiBkaWdpdCBudW1lcmF0b3IuICBMaWtld2lzZSwKICAgICMgRnJhY3Rpb24oRGVjaW1hbCgnMy4xNEUrNTAwMCcpKSArIEZyYWN0aW9uKERlY2ltYWwoJzMuMTRFLTUwMDAnKSkKICAgICMgaGFzIDEwLDAwMyBkaWdpdCBudW1lcmF0b3IuCgogICAgIyBUaGlzIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGJlZW4gcHJvYmxlbSBpbiBwcmFjdGljZSwgYnV0IGl0IGlzIGEKICAgICMgcG90ZW50aWFsIHBpdGZhbGwuCgogICAgdHJ5OgogICAgICAgIHJldHVybiB4LmFzX2ludGVnZXJfcmF0aW8oKQogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIHBhc3MKICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgIyBmbG9hdCBOQU4gb3IgSU5GLgogICAgICAgIGFzc2VydCBub3QgX2lzZmluaXRlKHgpCiAgICAgICAgcmV0dXJuICh4LCBOb25lKQogICAgdHJ5OgogICAgICAgICMgeCBtYXkgYmUgYW4gSW50ZWdyYWwgQUJDLgogICAgICAgIHJldHVybiAoeC5udW1lcmF0b3IsIHguZGVub21pbmF0b3IpCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgbXNnID0gZiJjYW4ndCBjb252ZXJ0IHR5cGUgJ3t0eXBlKHgpLl9fbmFtZV9ffScgdG8gbnVtZXJhdG9yL2Rlbm9taW5hdG9yIgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCgoKZGVmIF9jb252ZXJ0KHZhbHVlLCBUKToKICAgICIiIkNvbnZlcnQgdmFsdWUgdG8gZ2l2ZW4gbnVtZXJpYyB0eXBlIFQuIiIiCiAgICBpZiB0eXBlKHZhbHVlKSBpcyBUOgogICAgICAgICMgVGhpcyBjb3ZlcnMgdGhlIGNhc2VzIHdoZXJlIFQgaXMgRnJhY3Rpb24sIG9yIHdoZXJlIHZhbHVlIGlzCiAgICAgICAgIyBhIE5BTiBvciBJTkYgKERlY2ltYWwgb3IgZmxvYXQpLgogICAgICAgIHJldHVybiB2YWx1ZQogICAgaWYgaXNzdWJjbGFzcyhULCBpbnQpIGFuZCB2YWx1ZS5kZW5vbWluYXRvciAhPSAxOgogICAgICAgIFQgPSBmbG9hdAogICAgdHJ5OgogICAgICAgICMgRklYTUU6IHdoYXQgZG8gd2UgZG8gaWYgdGhpcyBvdmVyZmxvd3M/CiAgICAgICAgcmV0dXJuIFQodmFsdWUpCiAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgIGlmIGlzc3ViY2xhc3MoVCwgRGVjaW1hbCk6CiAgICAgICAgICAgIHJldHVybiBUKHZhbHVlLm51bWVyYXRvcikgLyBUKHZhbHVlLmRlbm9taW5hdG9yKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlCgoKZGVmIF9mYWlsX25lZyh2YWx1ZXMsIGVycm1zZz0nbmVnYXRpdmUgdmFsdWUnKToKICAgICIiIkl0ZXJhdGUgb3ZlciB2YWx1ZXMsIGZhaWxpbmcgaWYgYW55IGFyZSBsZXNzIHRoYW4gemVyby4iIiIKICAgIGZvciB4IGluIHZhbHVlczoKICAgICAgICBpZiB4IDwgMDoKICAgICAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKGVycm1zZykKICAgICAgICB5aWVsZCB4CgoKZGVmIF9pbnRlZ2VyX3NxcnRfb2ZfZnJhY19ydG8objogaW50LCBtOiBpbnQpIC0+IGludDoKICAgICIiIlNxdWFyZSByb290IG9mIG4vbSwgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHVzaW5nIHJvdW5kLXRvLW9kZC4iIiIKICAgICMgUmVmZXJlbmNlOiBodHRwczovL3d3dy5scmkuZnIvfm1lbHF1aW9uL2RvYy8wNS1pbWFjczE3XzEtZXhwb3NlLnBkZgogICAgYSA9IG1hdGguaXNxcnQobiAvLyBtKQogICAgcmV0dXJuIGEgfCAoYSphKm0gIT0gbikKCgojIEZvciA1MyBiaXQgcHJlY2lzaW9uIGZsb2F0cywgdGhlIGJpdCB3aWR0aCB1c2VkIGluCiMgX2Zsb2F0X3NxcnRfb2ZfZnJhYygpIGlzIDEwOS4KX3NxcnRfYml0X3dpZHRoOiBpbnQgPSAyICogc3lzLmZsb2F0X2luZm8ubWFudF9kaWcgKyAzCgoKZGVmIF9mbG9hdF9zcXJ0X29mX2ZyYWMobjogaW50LCBtOiBpbnQpIC0+IGZsb2F0OgogICAgIiIiU3F1YXJlIHJvb3Qgb2Ygbi9tIGFzIGEgZmxvYXQsIGNvcnJlY3RseSByb3VuZGVkLiIiIgogICAgIyBTZWUgcHJpbmNpcGxlIGFuZCBwcm9vZiBza2V0Y2ggYXQ6IGh0dHBzOi8vYnVncy5weXRob24ub3JnL21zZzQwNzA3OAogICAgcSA9IChuLmJpdF9sZW5ndGgoKSAtIG0uYml0X2xlbmd0aCgpIC0gX3NxcnRfYml0X3dpZHRoKSAvLyAyCiAgICBpZiBxID49IDA6CiAgICAgICAgbnVtZXJhdG9yID0gX2ludGVnZXJfc3FydF9vZl9mcmFjX3J0byhuLCBtIDw8IDIgKiBxKSA8PCBxCiAgICAgICAgZGVub21pbmF0b3IgPSAxCiAgICBlbHNlOgogICAgICAgIG51bWVyYXRvciA9IF9pbnRlZ2VyX3NxcnRfb2ZfZnJhY19ydG8obiA8PCAtMiAqIHEsIG0pCiAgICAgICAgZGVub21pbmF0b3IgPSAxIDw8IC1xCiAgICByZXR1cm4gbnVtZXJhdG9yIC8gZGVub21pbmF0b3IgICAjIENvbnZlcnQgdG8gZmxvYXQKCgpkZWYgX2RlY2ltYWxfc3FydF9vZl9mcmFjKG46IGludCwgbTogaW50KSAtPiBEZWNpbWFsOgogICAgIiIiU3F1YXJlIHJvb3Qgb2Ygbi9tIGFzIGEgRGVjaW1hbCwgY29ycmVjdGx5IHJvdW5kZWQuIiIiCiAgICAjIFByZW1pc2U6ICBGb3IgZGVjaW1hbCwgY29tcHV0aW5nIChuL20pLnNxcnQoKSBjYW4gYmUgb2ZmCiAgICAjICAgICAgICAgICBieSAxIHVscCBmcm9tIHRoZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQuCiAgICAjIE1ldGhvZDogICBDaGVjayB0aGUgcmVzdWx0LCBtb3ZpbmcgdXAgb3IgZG93biBhIHN0ZXAgaWYgbmVlZGVkLgogICAgaWYgbiA8PSAwOgogICAgICAgIGlmIG5vdCBuOgogICAgICAgICAgICByZXR1cm4gRGVjaW1hbCgnMC4wJykKICAgICAgICBuLCBtID0gLW4sIC1tCgogICAgcm9vdCA9IChEZWNpbWFsKG4pIC8gRGVjaW1hbChtKSkuc3FydCgpCiAgICBuciwgZHIgPSByb290LmFzX2ludGVnZXJfcmF0aW8oKQoKICAgIHBsdXMgPSByb290Lm5leHRfcGx1cygpCiAgICBucCwgZHAgPSBwbHVzLmFzX2ludGVnZXJfcmF0aW8oKQogICAgIyB0ZXN0OiBuIC8gbSA+ICgocm9vdCArIHBsdXMpIC8gMikgKiogMgogICAgaWYgNCAqIG4gKiAoZHIqZHApKioyID4gbSAqIChkcipucCArIGRwKm5yKSoqMjoKICAgICAgICByZXR1cm4gcGx1cwoKICAgIG1pbnVzID0gcm9vdC5uZXh0X21pbnVzKCkKICAgIG5tLCBkbSA9IG1pbnVzLmFzX2ludGVnZXJfcmF0aW8oKQogICAgIyB0ZXN0OiBuIC8gbSA8ICgocm9vdCArIG1pbnVzKSAvIDIpICoqIDIKICAgIGlmIDQgKiBuICogKGRyKmRtKSoqMiA8IG0gKiAoZHIqbm0gKyBkbSpucikqKjI6CiAgICAgICAgcmV0dXJuIG1pbnVzCgogICAgcmV0dXJuIHJvb3QKCgojID09PSBNZWFzdXJlcyBvZiBjZW50cmFsIHRlbmRlbmN5IChhdmVyYWdlcykgPT09CgpkZWYgbWVhbihkYXRhKToKICAgICIiIlJldHVybiB0aGUgc2FtcGxlIGFyaXRobWV0aWMgbWVhbiBvZiBkYXRhLgoKICAgID4+PiBtZWFuKFsxLCAyLCAzLCA0LCA0XSkKICAgIDIuOAoKICAgID4+PiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24gYXMgRgogICAgPj4+IG1lYW4oW0YoMywgNyksIEYoMSwgMjEpLCBGKDUsIDMpLCBGKDEsIDMpXSkKICAgIEZyYWN0aW9uKDEzLCAyMSkKCiAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsIGFzIEQKICAgID4+PiBtZWFuKFtEKCIwLjUiKSwgRCgiMC43NSIpLCBEKCIwLjYyNSIpLCBEKCIwLjM3NSIpXSkKICAgIERlY2ltYWwoJzAuNTYyNScpCgogICAgSWYgYGBkYXRhYGAgaXMgZW1wdHksIFN0YXRpc3RpY3NFcnJvciB3aWxsIGJlIHJhaXNlZC4KICAgICIiIgogICAgVCwgdG90YWwsIG4gPSBfc3VtKGRhdGEpCiAgICBpZiBuIDwgMToKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ21lYW4gcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGRhdGEgcG9pbnQnKQogICAgcmV0dXJuIF9jb252ZXJ0KHRvdGFsIC8gbiwgVCkKCgpkZWYgZm1lYW4oZGF0YSwgd2VpZ2h0cz1Ob25lKToKICAgICIiIkNvbnZlcnQgZGF0YSB0byBmbG9hdHMgYW5kIGNvbXB1dGUgdGhlIGFyaXRobWV0aWMgbWVhbi4KCiAgICBUaGlzIHJ1bnMgZmFzdGVyIHRoYW4gdGhlIG1lYW4oKSBmdW5jdGlvbiBhbmQgaXQgYWx3YXlzIHJldHVybnMgYSBmbG9hdC4KICAgIElmIHRoZSBpbnB1dCBkYXRhc2V0IGlzIGVtcHR5LCBpdCByYWlzZXMgYSBTdGF0aXN0aWNzRXJyb3IuCgogICAgPj4+IGZtZWFuKFszLjUsIDQuMCwgNS4yNV0pCiAgICA0LjI1CiAgICAiIiIKICAgIHRyeToKICAgICAgICBuID0gbGVuKGRhdGEpCiAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICMgSGFuZGxlIGl0ZXJhdG9ycyB0aGF0IGRvIG5vdCBkZWZpbmUgX19sZW5fXygpLgogICAgICAgIG4gPSAwCiAgICAgICAgZGVmIGNvdW50KGl0ZXJhYmxlKToKICAgICAgICAgICAgbm9ubG9jYWwgbgogICAgICAgICAgICBmb3IgbiwgeCBpbiBlbnVtZXJhdGUoaXRlcmFibGUsIHN0YXJ0PTEpOgogICAgICAgICAgICAgICAgeWllbGQgeAogICAgICAgIGRhdGEgPSBjb3VudChkYXRhKQogICAgaWYgd2VpZ2h0cyBpcyBOb25lOgogICAgICAgIHRvdGFsID0gZnN1bShkYXRhKQogICAgICAgIGlmIG5vdCBuOgogICAgICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2ZtZWFuIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBkYXRhIHBvaW50JykKICAgICAgICByZXR1cm4gdG90YWwgLyBuCiAgICB0cnk6CiAgICAgICAgbnVtX3dlaWdodHMgPSBsZW4od2VpZ2h0cykKICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgd2VpZ2h0cyA9IGxpc3Qod2VpZ2h0cykKICAgICAgICBudW1fd2VpZ2h0cyA9IGxlbih3ZWlnaHRzKQogICAgbnVtID0gZnN1bShtYXAobXVsLCBkYXRhLCB3ZWlnaHRzKSkKICAgIGlmIG4gIT0gbnVtX3dlaWdodHM6CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdkYXRhIGFuZCB3ZWlnaHRzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoJykKICAgIGRlbiA9IGZzdW0od2VpZ2h0cykKICAgIGlmIG5vdCBkZW46CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdzdW0gb2Ygd2VpZ2h0cyBtdXN0IGJlIG5vbi16ZXJvJykKICAgIHJldHVybiBudW0gLyBkZW4KCgpkZWYgZ2VvbWV0cmljX21lYW4oZGF0YSk6CiAgICAiIiJDb252ZXJ0IGRhdGEgdG8gZmxvYXRzIGFuZCBjb21wdXRlIHRoZSBnZW9tZXRyaWMgbWVhbi4KCiAgICBSYWlzZXMgYSBTdGF0aXN0aWNzRXJyb3IgaWYgdGhlIGlucHV0IGRhdGFzZXQgaXMgZW1wdHksCiAgICBpZiBpdCBjb250YWlucyBhIHplcm8sIG9yIGlmIGl0IGNvbnRhaW5zIGEgbmVnYXRpdmUgdmFsdWUuCgogICAgTm8gc3BlY2lhbCBlZmZvcnRzIGFyZSBtYWRlIHRvIGFjaGlldmUgZXhhY3QgcmVzdWx0cy4KICAgIChIb3dldmVyLCB0aGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4pCgogICAgPj4+IHJvdW5kKGdlb21ldHJpY19tZWFuKFs1NCwgMjQsIDM2XSksIDkpCiAgICAzNi4wCiAgICAiIiIKICAgIHRyeToKICAgICAgICByZXR1cm4gZXhwKGZtZWFuKG1hcChsb2csIGRhdGEpKSkKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignZ2VvbWV0cmljIG1lYW4gcmVxdWlyZXMgYSBub24tZW1wdHkgZGF0YXNldCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250YWluaW5nIHBvc2l0aXZlIG51bWJlcnMnKSBmcm9tIE5vbmUKCgpkZWYgaGFybW9uaWNfbWVhbihkYXRhLCB3ZWlnaHRzPU5vbmUpOgogICAgIiIiUmV0dXJuIHRoZSBoYXJtb25pYyBtZWFuIG9mIGRhdGEuCgogICAgVGhlIGhhcm1vbmljIG1lYW4gaXMgdGhlIHJlY2lwcm9jYWwgb2YgdGhlIGFyaXRobWV0aWMgbWVhbiBvZiB0aGUKICAgIHJlY2lwcm9jYWxzIG9mIHRoZSBkYXRhLiAgSXQgY2FuIGJlIHVzZWQgZm9yIGF2ZXJhZ2luZyByYXRpb3Mgb3IKICAgIHJhdGVzLCBmb3IgZXhhbXBsZSBzcGVlZHMuCgogICAgU3VwcG9zZSBhIGNhciB0cmF2ZWxzIDQwIGttL2hyIGZvciA1IGttIGFuZCB0aGVuIHNwZWVkcy11cCB0bwogICAgNjAga20vaHIgZm9yIGFub3RoZXIgNSBrbS4gV2hhdCBpcyB0aGUgYXZlcmFnZSBzcGVlZD8KCiAgICAgICAgPj4+IGhhcm1vbmljX21lYW4oWzQwLCA2MF0pCiAgICAgICAgNDguMAoKICAgIFN1cHBvc2UgYSBjYXIgdHJhdmVscyA0MCBrbS9ociBmb3IgNSBrbSwgYW5kIHdoZW4gdHJhZmZpYyBjbGVhcnMsCiAgICBzcGVlZHMtdXAgdG8gNjAga20vaHIgZm9yIHRoZSByZW1haW5pbmcgMzAga20gb2YgdGhlIGpvdXJuZXkuIFdoYXQKICAgIGlzIHRoZSBhdmVyYWdlIHNwZWVkPwoKICAgICAgICA+Pj4gaGFybW9uaWNfbWVhbihbNDAsIDYwXSwgd2VpZ2h0cz1bNSwgMzBdKQogICAgICAgIDU2LjAKCiAgICBJZiBgYGRhdGFgYCBpcyBlbXB0eSwgb3IgYW55IGVsZW1lbnQgaXMgbGVzcyB0aGFuIHplcm8sCiAgICBgYGhhcm1vbmljX21lYW5gYCB3aWxsIHJhaXNlIGBgU3RhdGlzdGljc0Vycm9yYGAuCiAgICAiIiIKICAgIGlmIGl0ZXIoZGF0YSkgaXMgZGF0YToKICAgICAgICBkYXRhID0gbGlzdChkYXRhKQogICAgZXJybXNnID0gJ2hhcm1vbmljIG1lYW4gZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMnCiAgICBuID0gbGVuKGRhdGEpCiAgICBpZiBuIDwgMToKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2hhcm1vbmljX21lYW4gcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGRhdGEgcG9pbnQnKQogICAgZWxpZiBuID09IDEgYW5kIHdlaWdodHMgaXMgTm9uZToKICAgICAgICB4ID0gZGF0YVswXQogICAgICAgIGlmIGlzaW5zdGFuY2UoeCwgKG51bWJlcnMuUmVhbCwgRGVjaW1hbCkpOgogICAgICAgICAgICBpZiB4IDwgMDoKICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcihlcnJtc2cpCiAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCB0eXBlJykKICAgIGlmIHdlaWdodHMgaXMgTm9uZToKICAgICAgICB3ZWlnaHRzID0gcmVwZWF0KDEsIG4pCiAgICAgICAgc3VtX3dlaWdodHMgPSBuCiAgICBlbHNlOgogICAgICAgIGlmIGl0ZXIod2VpZ2h0cykgaXMgd2VpZ2h0czoKICAgICAgICAgICAgd2VpZ2h0cyA9IGxpc3Qod2VpZ2h0cykKICAgICAgICBpZiBsZW4od2VpZ2h0cykgIT0gbjoKICAgICAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdOdW1iZXIgb2Ygd2VpZ2h0cyBkb2VzIG5vdCBtYXRjaCBkYXRhIHNpemUnKQogICAgICAgIF8sIHN1bV93ZWlnaHRzLCBfID0gX3N1bSh3IGZvciB3IGluIF9mYWlsX25lZyh3ZWlnaHRzLCBlcnJtc2cpKQogICAgdHJ5OgogICAgICAgIGRhdGEgPSBfZmFpbF9uZWcoZGF0YSwgZXJybXNnKQogICAgICAgIFQsIHRvdGFsLCBjb3VudCA9IF9zdW0odyAvIHggaWYgdyBlbHNlIDAgZm9yIHcsIHggaW4gemlwKHdlaWdodHMsIGRhdGEpKQogICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgogICAgICAgIHJldHVybiAwCiAgICBpZiB0b3RhbCA8PSAwOgogICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignV2VpZ2h0ZWQgc3VtIG11c3QgYmUgcG9zaXRpdmUnKQogICAgcmV0dXJuIF9jb252ZXJ0KHN1bV93ZWlnaHRzIC8gdG90YWwsIFQpCgojIEZJWE1FOiBpbnZlc3RpZ2F0ZSB3YXlzIHRvIGNhbGN1bGF0ZSBtZWRpYW5zIHdpdGhvdXQgc29ydGluZz8gUXVpY2tzZWxlY3Q/CmRlZiBtZWRpYW4oZGF0YSk6CiAgICAiIiJSZXR1cm4gdGhlIG1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBudW1lcmljIGRhdGEuCgogICAgV2hlbiB0aGUgbnVtYmVyIG9mIGRhdGEgcG9pbnRzIGlzIG9kZCwgcmV0dXJuIHRoZSBtaWRkbGUgZGF0YSBwb2ludC4KICAgIFdoZW4gdGhlIG51bWJlciBvZiBkYXRhIHBvaW50cyBpcyBldmVuLCB0aGUgbWVkaWFuIGlzIGludGVycG9sYXRlZCBieQogICAgdGFraW5nIHRoZSBhdmVyYWdlIG9mIHRoZSB0d28gbWlkZGxlIHZhbHVlczoKCiAgICA+Pj4gbWVkaWFuKFsxLCAzLCA1XSkKICAgIDMKICAgID4+PiBtZWRpYW4oWzEsIDMsIDUsIDddKQogICAgNC4wCgogICAgIiIiCiAgICBkYXRhID0gc29ydGVkKGRhdGEpCiAgICBuID0gbGVuKGRhdGEpCiAgICBpZiBuID09IDA6CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCJubyBtZWRpYW4gZm9yIGVtcHR5IGRhdGEiKQogICAgaWYgbiAlIDIgPT0gMToKICAgICAgICByZXR1cm4gZGF0YVtuIC8vIDJdCiAgICBlbHNlOgogICAgICAgIGkgPSBuIC8vIDIKICAgICAgICByZXR1cm4gKGRhdGFbaSAtIDFdICsgZGF0YVtpXSkgLyAyCgoKZGVmIG1lZGlhbl9sb3coZGF0YSk6CiAgICAiIiJSZXR1cm4gdGhlIGxvdyBtZWRpYW4gb2YgbnVtZXJpYyBkYXRhLgoKICAgIFdoZW4gdGhlIG51bWJlciBvZiBkYXRhIHBvaW50cyBpcyBvZGQsIHRoZSBtaWRkbGUgdmFsdWUgaXMgcmV0dXJuZWQuCiAgICBXaGVuIGl0IGlzIGV2ZW4sIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gbWlkZGxlIHZhbHVlcyBpcyByZXR1cm5lZC4KCiAgICA+Pj4gbWVkaWFuX2xvdyhbMSwgMywgNV0pCiAgICAzCiAgICA+Pj4gbWVkaWFuX2xvdyhbMSwgMywgNSwgN10pCiAgICAzCgogICAgIiIiCiAgICBkYXRhID0gc29ydGVkKGRhdGEpCiAgICBuID0gbGVuKGRhdGEpCiAgICBpZiBuID09IDA6CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCJubyBtZWRpYW4gZm9yIGVtcHR5IGRhdGEiKQogICAgaWYgbiAlIDIgPT0gMToKICAgICAgICByZXR1cm4gZGF0YVtuIC8vIDJdCiAgICBlbHNlOgogICAgICAgIHJldHVybiBkYXRhW24gLy8gMiAtIDFdCgoKZGVmIG1lZGlhbl9oaWdoKGRhdGEpOgogICAgIiIiUmV0dXJuIHRoZSBoaWdoIG1lZGlhbiBvZiBkYXRhLgoKICAgIFdoZW4gdGhlIG51bWJlciBvZiBkYXRhIHBvaW50cyBpcyBvZGQsIHRoZSBtaWRkbGUgdmFsdWUgaXMgcmV0dXJuZWQuCiAgICBXaGVuIGl0IGlzIGV2ZW4sIHRoZSBsYXJnZXIgb2YgdGhlIHR3byBtaWRkbGUgdmFsdWVzIGlzIHJldHVybmVkLgoKICAgID4+PiBtZWRpYW5faGlnaChbMSwgMywgNV0pCiAgICAzCiAgICA+Pj4gbWVkaWFuX2hpZ2goWzEsIDMsIDUsIDddKQogICAgNQoKICAgICIiIgogICAgZGF0YSA9IHNvcnRlZChkYXRhKQogICAgbiA9IGxlbihkYXRhKQogICAgaWYgbiA9PSAwOgogICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcigibm8gbWVkaWFuIGZvciBlbXB0eSBkYXRhIikKICAgIHJldHVybiBkYXRhW24gLy8gMl0KCgpkZWYgbWVkaWFuX2dyb3VwZWQoZGF0YSwgaW50ZXJ2YWw9MS4wKToKICAgICIiIkVzdGltYXRlcyB0aGUgbWVkaWFuIGZvciBudW1lcmljIGRhdGEgYmlubmVkIGFyb3VuZCB0aGUgbWlkcG9pbnRzCiAgICBvZiBjb25zZWN1dGl2ZSwgZml4ZWQtd2lkdGggaW50ZXJ2YWxzLgoKICAgIFRoZSAqZGF0YSogY2FuIGJlIGFueSBpdGVyYWJsZSBvZiBudW1lcmljIGRhdGEgd2l0aCBlYWNoIHZhbHVlIGJlaW5nCiAgICBleGFjdGx5IHRoZSBtaWRwb2ludCBvZiBhIGJpbi4gIEF0IGxlYXN0IG9uZSB2YWx1ZSBtdXN0IGJlIHByZXNlbnQuCgogICAgVGhlICppbnRlcnZhbCogaXMgd2lkdGggb2YgZWFjaCBiaW4uCgogICAgRm9yIGV4YW1wbGUsIGRlbW9ncmFwaGljIGluZm9ybWF0aW9uIG1heSBoYXZlIGJlZW4gc3VtbWFyaXplZCBpbnRvCiAgICBjb25zZWN1dGl2ZSB0ZW4teWVhciBhZ2UgZ3JvdXBzIHdpdGggZWFjaCBncm91cCBiZWluZyByZXByZXNlbnRlZAogICAgYnkgdGhlIDUteWVhciBtaWRwb2ludHMgb2YgdGhlIGludGVydmFsczoKCiAgICAgICAgPj4+IGRlbW9ncmFwaGljcyA9IENvdW50ZXIoewogICAgICAgIC4uLiAgICAyNTogMTcyLCAgICMgMjAgdG8gMzAgeWVhcnMgb2xkCiAgICAgICAgLi4uICAgIDM1OiA0ODQsICAgIyAzMCB0byA0MCB5ZWFycyBvbGQKICAgICAgICAuLi4gICAgNDU6IDM4NywgICAjIDQwIHRvIDUwIHllYXJzIG9sZAogICAgICAgIC4uLiAgICA1NTogIDIyLCAgICMgNTAgdG8gNjAgeWVhcnMgb2xkCiAgICAgICAgLi4uICAgIDY1OiAgIDYsICAgIyA2MCB0byA3MCB5ZWFycyBvbGQKICAgICAgICAuLi4gfSkKCiAgICBUaGUgNTB0aCBwZXJjZW50aWxlIChtZWRpYW4pIGlzIHRoZSA1MzZ0aCBwZXJzb24gb3V0IG9mIHRoZSAxMDcxCiAgICBtZW1iZXIgY29ob3J0LiAgVGhhdCBwZXJzb24gaXMgaW4gdGhlIDMwIHRvIDQwIHllYXIgb2xkIGFnZSBncm91cC4KCiAgICBUaGUgcmVndWxhciBtZWRpYW4oKSBmdW5jdGlvbiB3b3VsZCBhc3N1bWUgdGhhdCBldmVyeW9uZSBpbiB0aGUKICAgIHRyaWNlbmFyaWFuIGFnZSBncm91cCB3YXMgZXhhY3RseSAzNSB5ZWFycyBvbGQuICBBIG1vcmUgdGVuYWJsZQogICAgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZSA0ODQgbWVtYmVycyBvZiB0aGF0IGFnZSBncm91cCBhcmUgZXZlbmx5CiAgICBkaXN0cmlidXRlZCBiZXR3ZWVuIDMwIGFuZCA0MC4gIEZvciB0aGF0LCB3ZSB1c2UgbWVkaWFuX2dyb3VwZWQoKS4KCiAgICAgICAgPj4+IGRhdGEgPSBsaXN0KGRlbW9ncmFwaGljcy5lbGVtZW50cygpKQogICAgICAgID4+PiBtZWRpYW4oZGF0YSkKICAgICAgICAzNQogICAgICAgID4+PiByb3VuZChtZWRpYW5fZ3JvdXBlZChkYXRhLCBpbnRlcnZhbD0xMCksIDEpCiAgICAgICAgMzcuNQoKICAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG1ha2luZyBzdXJlIHRoZSBkYXRhIHBvaW50cyBhcmUgc2VwYXJhdGVkCiAgICBieSBleGFjdCBtdWx0aXBsZXMgb2YgKmludGVydmFsKi4gIFRoaXMgaXMgZXNzZW50aWFsIGZvciBnZXR0aW5nIGEKICAgIGNvcnJlY3QgcmVzdWx0LiAgVGhlIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoaXMgcHJlY29uZGl0aW9uLgoKICAgIElucHV0cyBtYXkgYmUgYW55IG51bWVyaWMgdHlwZSB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIGEgZmxvYXQgZHVyaW5nCiAgICB0aGUgaW50ZXJwb2xhdGlvbiBzdGVwLgoKICAgICIiIgogICAgZGF0YSA9IHNvcnRlZChkYXRhKQogICAgbiA9IGxlbihkYXRhKQogICAgaWYgbm90IG46CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCJubyBtZWRpYW4gZm9yIGVtcHR5IGRhdGEiKQoKICAgICMgRmluZCB0aGUgdmFsdWUgYXQgdGhlIG1pZHBvaW50LiBSZW1lbWJlciB0aGlzIGNvcnJlc3BvbmRzIHRvIHRoZQogICAgIyBtaWRwb2ludCBvZiB0aGUgY2xhc3MgaW50ZXJ2YWwuCiAgICB4ID0gZGF0YVtuIC8vIDJdCgogICAgIyBVc2luZyBPKGxvZyBuKSBiaXNlY3Rpb24sIGZpbmQgd2hlcmUgYWxsIHRoZSB4IHZhbHVlcyBvY2N1ciBpbiB0aGUgZGF0YS4KICAgICMgQWxsIHggd2lsbCBsaWUgd2l0aGluIGRhdGFbaTpqXS4KICAgIGkgPSBiaXNlY3RfbGVmdChkYXRhLCB4KQogICAgaiA9IGJpc2VjdF9yaWdodChkYXRhLCB4LCBsbz1pKQoKICAgICMgQ29lcmNlIHRvIGZsb2F0cywgcmFpc2luZyBhIFR5cGVFcnJvciBpZiBub3QgcG9zc2libGUKICAgIHRyeToKICAgICAgICBpbnRlcnZhbCA9IGZsb2F0KGludGVydmFsKQogICAgICAgIHggPSBmbG9hdCh4KQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnVmFsdWUgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIGZsb2F0JykKCiAgICAjIEludGVycG9sYXRlIHRoZSBtZWRpYW4gdXNpbmcgdGhlIGZvcm11bGEgZm91bmQgYXQ6CiAgICAjIGh0dHBzOi8vd3d3LmN1ZW1hdGguY29tL2RhdGEvbWVkaWFuLW9mLWdyb3VwZWQtZGF0YS8KICAgIEwgPSB4IC0gaW50ZXJ2YWwgLyAyLjAgICAgIyBMb3dlciBsaW1pdCBvZiB0aGUgbWVkaWFuIGludGVydmFsCiAgICBjZiA9IGkgICAgICAgICAgICAgICAgICAgICMgQ3VtdWxhdGl2ZSBmcmVxdWVuY3kgb2YgdGhlIHByZWNlZGluZyBpbnRlcnZhbAogICAgZiA9IGogLSBpICAgICAgICAgICAgICAgICAjIE51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbWVkaWFuIGludGVybmFsCiAgICByZXR1cm4gTCArIGludGVydmFsICogKG4gLyAyIC0gY2YpIC8gZgoKCmRlZiBtb2RlKGRhdGEpOgogICAgIiIiUmV0dXJuIHRoZSBtb3N0IGNvbW1vbiBkYXRhIHBvaW50IGZyb20gZGlzY3JldGUgb3Igbm9taW5hbCBkYXRhLgoKICAgIGBgbW9kZWBgIGFzc3VtZXMgZGlzY3JldGUgZGF0YSwgYW5kIHJldHVybnMgYSBzaW5nbGUgdmFsdWUuIFRoaXMgaXMgdGhlCiAgICBzdGFuZGFyZCB0cmVhdG1lbnQgb2YgdGhlIG1vZGUgYXMgY29tbW9ubHkgdGF1Z2h0IGluIHNjaG9vbHM6CgogICAgICAgID4+PiBtb2RlKFsxLCAxLCAyLCAzLCAzLCAzLCAzLCA0XSkKICAgICAgICAzCgogICAgVGhpcyBhbHNvIHdvcmtzIHdpdGggbm9taW5hbCAobm9uLW51bWVyaWMpIGRhdGE6CgogICAgICAgID4+PiBtb2RlKFsicmVkIiwgImJsdWUiLCAiYmx1ZSIsICJyZWQiLCAiZ3JlZW4iLCAicmVkIiwgInJlZCJdKQogICAgICAgICdyZWQnCgogICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIG1vZGVzIHdpdGggc2FtZSBmcmVxdWVuY3ksIHJldHVybiB0aGUgZmlyc3Qgb25lCiAgICBlbmNvdW50ZXJlZDoKCiAgICAgICAgPj4+IG1vZGUoWydyZWQnLCAncmVkJywgJ2dyZWVuJywgJ2JsdWUnLCAnYmx1ZSddKQogICAgICAgICdyZWQnCgogICAgSWYgKmRhdGEqIGlzIGVtcHR5LCBgYG1vZGVgYCwgcmFpc2VzIFN0YXRpc3RpY3NFcnJvci4KCiAgICAiIiIKICAgIHBhaXJzID0gQ291bnRlcihpdGVyKGRhdGEpKS5tb3N0X2NvbW1vbigxKQogICAgdHJ5OgogICAgICAgIHJldHVybiBwYWlyc1swXVswXQogICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdubyBtb2RlIGZvciBlbXB0eSBkYXRhJykgZnJvbSBOb25lCgoKZGVmIG11bHRpbW9kZShkYXRhKToKICAgICIiIlJldHVybiBhIGxpc3Qgb2YgdGhlIG1vc3QgZnJlcXVlbnRseSBvY2N1cnJpbmcgdmFsdWVzLgoKICAgIFdpbGwgcmV0dXJuIG1vcmUgdGhhbiBvbmUgcmVzdWx0IGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBtb2RlcwogICAgb3IgYW4gZW1wdHkgbGlzdCBpZiAqZGF0YSogaXMgZW1wdHkuCgogICAgPj4+IG11bHRpbW9kZSgnYWFiYmJiYmJiYmNjJykKICAgIFsnYiddCiAgICA+Pj4gbXVsdGltb2RlKCdhYWJiYmJjY2RkZGRlZWZmZmZnZycpCiAgICBbJ2InLCAnZCcsICdmJ10KICAgID4+PiBtdWx0aW1vZGUoJycpCiAgICBbXQogICAgIiIiCiAgICBjb3VudHMgPSBDb3VudGVyKGl0ZXIoZGF0YSkpCiAgICBpZiBub3QgY291bnRzOgogICAgICAgIHJldHVybiBbXQogICAgbWF4Y291bnQgPSBtYXgoY291bnRzLnZhbHVlcygpKQogICAgcmV0dXJuIFt2YWx1ZSBmb3IgdmFsdWUsIGNvdW50IGluIGNvdW50cy5pdGVtcygpIGlmIGNvdW50ID09IG1heGNvdW50XQoKCiMgTm90ZXMgb24gbWV0aG9kcyBmb3IgY29tcHV0aW5nIHF1YW50aWxlcwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoZXJlIGlzIG5vIG9uZSBwZXJmZWN0IHdheSB0byBjb21wdXRlIHF1YW50aWxlcy4gIEhlcmUgd2Ugb2ZmZXIKIyB0d28gbWV0aG9kcyB0aGF0IHNlcnZlIGNvbW1vbiBuZWVkcy4gIE1vc3Qgb3RoZXIgcGFja2FnZXMKIyBzdXJ2ZXllZCBvZmZlcmVkIGF0IGxlYXN0IG9uZSBvciBib3RoIG9mIHRoZXNlIHR3bywgbWFraW5nIHRoZW0KIyAic3RhbmRhcmQiIGluIHRoZSBzZW5zZSBvZiAid2lkZWx5LWFkb3B0ZWQgYW5kIHJlcHJvZHVjaWJsZSIuCiMgVGhleSBhcmUgYWxzbyBlYXN5IHRvIGV4cGxhaW4sIGVhc3kgdG8gY29tcHV0ZSBtYW51YWxseSwgYW5kIGhhdmUKIyBzdHJhaWdodC1mb3J3YXJkIGludGVycHJldGF0aW9ucyB0aGF0IGFyZW4ndCBzdXJwcmlzaW5nLgoKIyBUaGUgZGVmYXVsdCBtZXRob2QgaXMga25vd24gYXMgIlI2IiwgIlBFUkNFTlRJTEUuRVhDIiwgb3IgImV4cGVjdGVkCiMgdmFsdWUgb2YgcmFuayBvcmRlciBzdGF0aXN0aWNzIi4gVGhlIGFsdGVybmF0aXZlIG1ldGhvZCBpcyBrbm93biBhcwojICJSNyIsICJQRVJDRU5USUxFLklOQyIsIG9yICJtb2RlIG9mIHJhbmsgb3JkZXIgc3RhdGlzdGljcyIuCgojIEZvciBzYW1wbGUgZGF0YSB3aGVyZSB0aGVyZSBpcyBhIHBvc2l0aXZlIHByb2JhYmlsaXR5IGZvciB2YWx1ZXMKIyBiZXlvbmQgdGhlIHJhbmdlIG9mIHRoZSBkYXRhLCB0aGUgUjYgZXhjbHVzaXZlIG1ldGhvZCBpcyBhCiMgcmVhc29uYWJsZSBjaG9pY2UuICBDb25zaWRlciBhIHJhbmRvbSBzYW1wbGUgb2YgbmluZSB2YWx1ZXMgZnJvbSBhCiMgcG9wdWxhdGlvbiB3aXRoIGEgdW5pZm9ybSBkaXN0cmlidXRpb24gZnJvbSAwLjAgdG8gMS4wLiAgVGhlCiMgZGlzdHJpYnV0aW9uIG9mIHRoZSB0aGlyZCByYW5rZWQgc2FtcGxlIHBvaW50IGlzIGRlc2NyaWJlZCBieQojIGJldGF2YXJpYXRlKGFscGhhPTMsIGJldGE9Nykgd2hpY2ggaGFzIG1vZGU9MC4yNTAsIG1lZGlhbj0wLjI4NiwgYW5kCiMgbWVhbj0wLjMwMC4gIE9ubHkgdGhlIGxhdHRlciAod2hpY2ggY29ycmVzcG9uZHMgd2l0aCBSNikgZ2l2ZXMgdGhlCiMgZGVzaXJlZCBjdXQgcG9pbnQgd2l0aCAzMCUgb2YgdGhlIHBvcHVsYXRpb24gZmFsbGluZyBiZWxvdyB0aGF0CiMgdmFsdWUsIG1ha2luZyBpdCBjb21wYXJhYmxlIHRvIGEgcmVzdWx0IGZyb20gYW4gaW52X2NkZigpIGZ1bmN0aW9uLgojIFRoZSBSNiBleGNsdXNpdmUgbWV0aG9kIGlzIGFsc28gaWRlbXBvdGVudC4KCiMgRm9yIGRlc2NyaWJpbmcgcG9wdWxhdGlvbiBkYXRhIHdoZXJlIHRoZSBlbmQgcG9pbnRzIGFyZSBrbm93biB0bwojIGJlIGluY2x1ZGVkIGluIHRoZSBkYXRhLCB0aGUgUjcgaW5jbHVzaXZlIG1ldGhvZCBpcyBhIHJlYXNvbmFibGUKIyBjaG9pY2UuICBJbnN0ZWFkIG9mIHRoZSBtZWFuLCBpdCB1c2VzIHRoZSBtb2RlIG9mIHRoZSBiZXRhCiMgZGlzdHJpYnV0aW9uIGZvciB0aGUgaW50ZXJpb3IgcG9pbnRzLiAgUGVyIEh5bmRtYW4gJiBGYW4sICJPbmUgbmljZQojIHByb3BlcnR5IGlzIHRoYXQgdGhlIHZlcnRpY2VzIG9mIFE3KHApIGRpdmlkZSB0aGUgcmFuZ2UgaW50byBuIC0gMQojIGludGVydmFscywgYW5kIGV4YWN0bHkgMTAwcCUgb2YgdGhlIGludGVydmFscyBsaWUgdG8gdGhlIGxlZnQgb2YKIyBRNyhwKSBhbmQgMTAwKDEgLSBwKSUgb2YgdGhlIGludGVydmFscyBsaWUgdG8gdGhlIHJpZ2h0IG9mIFE3KHApLiIKCiMgSWYgbmVlZGVkLCBvdGhlciBtZXRob2RzIGNvdWxkIGJlIGFkZGVkLiAgSG93ZXZlciwgZm9yIG5vdywgdGhlCiMgcG9zaXRpb24gaXMgdGhhdCBmZXdlciBvcHRpb25zIG1ha2UgZm9yIGVhc2llciBjaG9pY2VzIGFuZCB0aGF0CiMgZXh0ZXJuYWwgcGFja2FnZXMgY2FuIGJlIHVzZWQgZm9yIGFueXRoaW5nIG1vcmUgYWR2YW5jZWQuCgpkZWYgcXVhbnRpbGVzKGRhdGEsICosIG49NCwgbWV0aG9kPSdleGNsdXNpdmUnKToKICAgICIiIkRpdmlkZSAqZGF0YSogaW50byAqbiogY29udGludW91cyBpbnRlcnZhbHMgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4KCiAgICBSZXR1cm5zIGEgbGlzdCBvZiAobiAtIDEpIGN1dCBwb2ludHMgc2VwYXJhdGluZyB0aGUgaW50ZXJ2YWxzLgoKICAgIFNldCAqbiogdG8gNCBmb3IgcXVhcnRpbGVzICh0aGUgZGVmYXVsdCkuICBTZXQgKm4qIHRvIDEwIGZvciBkZWNpbGVzLgogICAgU2V0ICpuKiB0byAxMDAgZm9yIHBlcmNlbnRpbGVzIHdoaWNoIGdpdmVzIHRoZSA5OSBjdXRzIHBvaW50cyB0aGF0CiAgICBzZXBhcmF0ZSAqZGF0YSogaW4gdG8gMTAwIGVxdWFsIHNpemVkIGdyb3Vwcy4KCiAgICBUaGUgKmRhdGEqIGNhbiBiZSBhbnkgaXRlcmFibGUgY29udGFpbmluZyBzYW1wbGUuCiAgICBUaGUgY3V0IHBvaW50cyBhcmUgbGluZWFybHkgaW50ZXJwb2xhdGVkIGJldHdlZW4gZGF0YSBwb2ludHMuCgogICAgSWYgKm1ldGhvZCogaXMgc2V0IHRvICppbmNsdXNpdmUqLCAqZGF0YSogaXMgdHJlYXRlZCBhcyBwb3B1bGF0aW9uCiAgICBkYXRhLiAgVGhlIG1pbmltdW0gdmFsdWUgaXMgdHJlYXRlZCBhcyB0aGUgMHRoIHBlcmNlbnRpbGUgYW5kIHRoZQogICAgbWF4aW11bSB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSAxMDB0aCBwZXJjZW50aWxlLgogICAgIiIiCiAgICBpZiBuIDwgMToKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ24gbXVzdCBiZSBhdCBsZWFzdCAxJykKICAgIGRhdGEgPSBzb3J0ZWQoZGF0YSkKICAgIGxkID0gbGVuKGRhdGEpCiAgICBpZiBsZCA8IDI6CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIGRhdGEgcG9pbnRzJykKICAgIGlmIG1ldGhvZCA9PSAnaW5jbHVzaXZlJzoKICAgICAgICBtID0gbGQgLSAxCiAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBuKToKICAgICAgICAgICAgaiwgZGVsdGEgPSBkaXZtb2QoaSAqIG0sIG4pCiAgICAgICAgICAgIGludGVycG9sYXRlZCA9IChkYXRhW2pdICogKG4gLSBkZWx0YSkgKyBkYXRhW2ogKyAxXSAqIGRlbHRhKSAvIG4KICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbnRlcnBvbGF0ZWQpCiAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgaWYgbWV0aG9kID09ICdleGNsdXNpdmUnOgogICAgICAgIG0gPSBsZCArIDEKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIGZvciBpIGluIHJhbmdlKDEsIG4pOgogICAgICAgICAgICBqID0gaSAqIG0gLy8gbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc2NhbGUgaSB0byBtL24KICAgICAgICAgICAgaiA9IDEgaWYgaiA8IDEgZWxzZSBsZC0xIGlmIGogPiBsZC0xIGVsc2UgaiAgIyBjbGFtcCB0byAxIC4uIGxkLTEKICAgICAgICAgICAgZGVsdGEgPSBpKm0gLSBqKm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBleGFjdCBpbnRlZ2VyIG1hdGgKICAgICAgICAgICAgaW50ZXJwb2xhdGVkID0gKGRhdGFbaiAtIDFdICogKG4gLSBkZWx0YSkgKyBkYXRhW2pdICogZGVsdGEpIC8gbgogICAgICAgICAgICByZXN1bHQuYXBwZW5kKGludGVycG9sYXRlZCkKICAgICAgICByZXR1cm4gcmVzdWx0CiAgICByYWlzZSBWYWx1ZUVycm9yKGYnVW5rbm93biBtZXRob2Q6IHttZXRob2Qhcn0nKQoKCiMgPT09IE1lYXN1cmVzIG9mIHNwcmVhZCA9PT0KCiMgU2VlIGh0dHA6Ly9tYXRod29ybGQud29sZnJhbS5jb20vVmFyaWFuY2UuaHRtbAojICAgICBodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29tL1NhbXBsZVZhcmlhbmNlLmh0bWwKCgpkZWYgdmFyaWFuY2UoZGF0YSwgeGJhcj1Ob25lKToKICAgICIiIlJldHVybiB0aGUgc2FtcGxlIHZhcmlhbmNlIG9mIGRhdGEuCgogICAgZGF0YSBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgUmVhbC12YWx1ZWQgbnVtYmVycywgd2l0aCBhdCBsZWFzdCB0d28KICAgIHZhbHVlcy4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHhiYXIsIGlmIGdpdmVuLCBzaG91bGQgYmUgdGhlIG1lYW4gb2YKICAgIHRoZSBkYXRhLiBJZiBpdCBpcyBtaXNzaW5nIG9yIE5vbmUsIHRoZSBtZWFuIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZC4KCiAgICBVc2UgdGhpcyBmdW5jdGlvbiB3aGVuIHlvdXIgZGF0YSBpcyBhIHNhbXBsZSBmcm9tIGEgcG9wdWxhdGlvbi4gVG8KICAgIGNhbGN1bGF0ZSB0aGUgdmFyaWFuY2UgZnJvbSB0aGUgZW50aXJlIHBvcHVsYXRpb24sIHNlZSBgYHB2YXJpYW5jZWBgLgoKICAgIEV4YW1wbGVzOgoKICAgID4+PiBkYXRhID0gWzIuNzUsIDEuNzUsIDEuMjUsIDAuMjUsIDAuNSwgMS4yNSwgMy41XQogICAgPj4+IHZhcmlhbmNlKGRhdGEpCiAgICAxLjM3MjAyMzgwOTUyMzgwOTUKCiAgICBJZiB5b3UgaGF2ZSBhbHJlYWR5IGNhbGN1bGF0ZWQgdGhlIG1lYW4gb2YgeW91ciBkYXRhLCB5b3UgY2FuIHBhc3MgaXQgYXMKICAgIHRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgYGB4YmFyYGAgdG8gYXZvaWQgcmVjYWxjdWxhdGluZyBpdDoKCiAgICA+Pj4gbSA9IG1lYW4oZGF0YSkKICAgID4+PiB2YXJpYW5jZShkYXRhLCBtKQogICAgMS4zNzIwMjM4MDk1MjM4MDk1CgogICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGF0IGBgeGJhcmBgIGlzIGFjdHVhbGx5IHRoZSBtZWFuIG9mCiAgICBgYGRhdGFgYC4gR2l2aW5nIGFyYml0cmFyeSB2YWx1ZXMgZm9yIGBgeGJhcmBgIG1heSBsZWFkIHRvIGludmFsaWQgb3IKICAgIGltcG9zc2libGUgcmVzdWx0cy4KCiAgICBEZWNpbWFscyBhbmQgRnJhY3Rpb25zIGFyZSBzdXBwb3J0ZWQ6CgogICAgPj4+IGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbCBhcyBECiAgICA+Pj4gdmFyaWFuY2UoW0QoIjI3LjUiKSwgRCgiMzAuMjUiKSwgRCgiMzAuMjUiKSwgRCgiMzQuNSIpLCBEKCI0MS43NSIpXSkKICAgIERlY2ltYWwoJzMxLjAxODc1JykKCiAgICA+Pj4gZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uIGFzIEYKICAgID4+PiB2YXJpYW5jZShbRigxLCA2KSwgRigxLCAyKSwgRig1LCAzKV0pCiAgICBGcmFjdGlvbig2NywgMTA4KQoKICAgICIiIgogICAgVCwgc3MsIGMsIG4gPSBfc3MoZGF0YSwgeGJhcikKICAgIGlmIG4gPCAyOgogICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcigndmFyaWFuY2UgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIGRhdGEgcG9pbnRzJykKICAgIHJldHVybiBfY29udmVydChzcyAvIChuIC0gMSksIFQpCgoKZGVmIHB2YXJpYW5jZShkYXRhLCBtdT1Ob25lKToKICAgICIiIlJldHVybiB0aGUgcG9wdWxhdGlvbiB2YXJpYW5jZSBvZiBgYGRhdGFgYC4KCiAgICBkYXRhIHNob3VsZCBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhYmxlIG9mIFJlYWwtdmFsdWVkIG51bWJlcnMsIHdpdGggYXQgbGVhc3Qgb25lCiAgICB2YWx1ZS4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50IG11LCBpZiBnaXZlbiwgc2hvdWxkIGJlIHRoZSBtZWFuIG9mCiAgICB0aGUgZGF0YS4gSWYgaXQgaXMgbWlzc2luZyBvciBOb25lLCB0aGUgbWVhbiBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQuCgogICAgVXNlIHRoaXMgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSB2YXJpYW5jZSBmcm9tIHRoZSBlbnRpcmUgcG9wdWxhdGlvbi4KICAgIFRvIGVzdGltYXRlIHRoZSB2YXJpYW5jZSBmcm9tIGEgc2FtcGxlLCB0aGUgYGB2YXJpYW5jZWBgIGZ1bmN0aW9uIGlzCiAgICB1c3VhbGx5IGEgYmV0dGVyIGNob2ljZS4KCiAgICBFeGFtcGxlczoKCiAgICA+Pj4gZGF0YSA9IFswLjAsIDAuMjUsIDAuMjUsIDEuMjUsIDEuNSwgMS43NSwgMi43NSwgMy4yNV0KICAgID4+PiBwdmFyaWFuY2UoZGF0YSkKICAgIDEuMjUKCiAgICBJZiB5b3UgaGF2ZSBhbHJlYWR5IGNhbGN1bGF0ZWQgdGhlIG1lYW4gb2YgdGhlIGRhdGEsIHlvdSBjYW4gcGFzcyBpdCBhcwogICAgdGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCB0byBhdm9pZCByZWNhbGN1bGF0aW5nIGl0OgoKICAgID4+PiBtdSA9IG1lYW4oZGF0YSkKICAgID4+PiBwdmFyaWFuY2UoZGF0YSwgbXUpCiAgICAxLjI1CgogICAgRGVjaW1hbHMgYW5kIEZyYWN0aW9ucyBhcmUgc3VwcG9ydGVkOgoKICAgID4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwgYXMgRAogICAgPj4+IHB2YXJpYW5jZShbRCgiMjcuNSIpLCBEKCIzMC4yNSIpLCBEKCIzMC4yNSIpLCBEKCIzNC41IiksIEQoIjQxLjc1IildKQogICAgRGVjaW1hbCgnMjQuODE1JykKCiAgICA+Pj4gZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uIGFzIEYKICAgID4+PiBwdmFyaWFuY2UoW0YoMSwgNCksIEYoNSwgNCksIEYoMSwgMildKQogICAgRnJhY3Rpb24oMTMsIDcyKQoKICAgICIiIgogICAgVCwgc3MsIGMsIG4gPSBfc3MoZGF0YSwgbXUpCiAgICBpZiBuIDwgMToKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ3B2YXJpYW5jZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgZGF0YSBwb2ludCcpCiAgICByZXR1cm4gX2NvbnZlcnQoc3MgLyBuLCBUKQoKCmRlZiBzdGRldihkYXRhLCB4YmFyPU5vbmUpOgogICAgIiIiUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgc2FtcGxlIHZhcmlhbmNlLgoKICAgIFNlZSBgYHZhcmlhbmNlYGAgZm9yIGFyZ3VtZW50cyBhbmQgb3RoZXIgZGV0YWlscy4KCiAgICA+Pj4gc3RkZXYoWzEuNSwgMi41LCAyLjUsIDIuNzUsIDMuMjUsIDQuNzVdKQogICAgMS4wODEwODc0MTU1MjE5ODI3CgogICAgIiIiCiAgICBULCBzcywgYywgbiA9IF9zcyhkYXRhLCB4YmFyKQogICAgaWYgbiA8IDI6CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdzdGRldiByZXF1aXJlcyBhdCBsZWFzdCB0d28gZGF0YSBwb2ludHMnKQogICAgbXNzID0gc3MgLyAobiAtIDEpCiAgICBpZiBpc3N1YmNsYXNzKFQsIERlY2ltYWwpOgogICAgICAgIHJldHVybiBfZGVjaW1hbF9zcXJ0X29mX2ZyYWMobXNzLm51bWVyYXRvciwgbXNzLmRlbm9taW5hdG9yKQogICAgcmV0dXJuIF9mbG9hdF9zcXJ0X29mX2ZyYWMobXNzLm51bWVyYXRvciwgbXNzLmRlbm9taW5hdG9yKQoKCmRlZiBwc3RkZXYoZGF0YSwgbXU9Tm9uZSk6CiAgICAiIiJSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHRoZSBwb3B1bGF0aW9uIHZhcmlhbmNlLgoKICAgIFNlZSBgYHB2YXJpYW5jZWBgIGZvciBhcmd1bWVudHMgYW5kIG90aGVyIGRldGFpbHMuCgogICAgPj4+IHBzdGRldihbMS41LCAyLjUsIDIuNSwgMi43NSwgMy4yNSwgNC43NV0pCiAgICAwLjk4Njg5MzI3MzUyNzI1MQoKICAgICIiIgogICAgVCwgc3MsIGMsIG4gPSBfc3MoZGF0YSwgbXUpCiAgICBpZiBuIDwgMToKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ3BzdGRldiByZXF1aXJlcyBhdCBsZWFzdCBvbmUgZGF0YSBwb2ludCcpCiAgICBtc3MgPSBzcyAvIG4KICAgIGlmIGlzc3ViY2xhc3MoVCwgRGVjaW1hbCk6CiAgICAgICAgcmV0dXJuIF9kZWNpbWFsX3NxcnRfb2ZfZnJhYyhtc3MubnVtZXJhdG9yLCBtc3MuZGVub21pbmF0b3IpCiAgICByZXR1cm4gX2Zsb2F0X3NxcnRfb2ZfZnJhYyhtc3MubnVtZXJhdG9yLCBtc3MuZGVub21pbmF0b3IpCgoKZGVmIF9tZWFuX3N0ZGV2KGRhdGEpOgogICAgIiIiSW4gb25lIHBhc3MsIGNvbXB1dGUgdGhlIG1lYW4gYW5kIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24gYXMgZmxvYXRzLiIiIgogICAgVCwgc3MsIHhiYXIsIG4gPSBfc3MoZGF0YSkKICAgIGlmIG4gPCAyOgogICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignc3RkZXYgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIGRhdGEgcG9pbnRzJykKICAgIG1zcyA9IHNzIC8gKG4gLSAxKQogICAgdHJ5OgogICAgICAgIHJldHVybiBmbG9hdCh4YmFyKSwgX2Zsb2F0X3NxcnRfb2ZfZnJhYyhtc3MubnVtZXJhdG9yLCBtc3MuZGVub21pbmF0b3IpCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIyBIYW5kbGUgTmFucyBhbmQgSW5mcyBncmFjZWZ1bGx5CiAgICAgICAgcmV0dXJuIGZsb2F0KHhiYXIpLCBmbG9hdCh4YmFyKSAvIGZsb2F0KHNzKQoKCiMgPT09IFN0YXRpc3RpY3MgZm9yIHJlbGF0aW9ucyBiZXR3ZWVuIHR3byBpbnB1dHMgPT09CgojIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db3ZhcmlhbmNlCiMgICAgIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BlYXJzb25fY29ycmVsYXRpb25fY29lZmZpY2llbnQKIyAgICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2ltcGxlX2xpbmVhcl9yZWdyZXNzaW9uCgoKZGVmIGNvdmFyaWFuY2UoeCwgeSwgLyk6CiAgICAiIiJDb3ZhcmlhbmNlCgogICAgUmV0dXJuIHRoZSBzYW1wbGUgY292YXJpYW5jZSBvZiB0d28gaW5wdXRzICp4KiBhbmQgKnkqLiBDb3ZhcmlhbmNlCiAgICBpcyBhIG1lYXN1cmUgb2YgdGhlIGpvaW50IHZhcmlhYmlsaXR5IG9mIHR3byBpbnB1dHMuCgogICAgPj4+IHggPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0KICAgID4+PiB5ID0gWzEsIDIsIDMsIDEsIDIsIDMsIDEsIDIsIDNdCiAgICA+Pj4gY292YXJpYW5jZSh4LCB5KQogICAgMC43NQogICAgPj4+IHogPSBbOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMV0KICAgID4+PiBjb3ZhcmlhbmNlKHgsIHopCiAgICAtNy41CiAgICA+Pj4gY292YXJpYW5jZSh6LCB4KQogICAgLTcuNQoKICAgICIiIgogICAgbiA9IGxlbih4KQogICAgaWYgbGVuKHkpICE9IG46CiAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdjb3ZhcmlhbmNlIHJlcXVpcmVzIHRoYXQgYm90aCBpbnB1dHMgaGF2ZSBzYW1lIG51bWJlciBvZiBkYXRhIHBvaW50cycpCiAgICBpZiBuIDwgMjoKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2NvdmFyaWFuY2UgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIGRhdGEgcG9pbnRzJykKICAgIHhiYXIgPSBmc3VtKHgpIC8gbgogICAgeWJhciA9IGZzdW0oeSkgLyBuCiAgICBzeHkgPSBmc3VtKCh4aSAtIHhiYXIpICogKHlpIC0geWJhcikgZm9yIHhpLCB5aSBpbiB6aXAoeCwgeSkpCiAgICByZXR1cm4gc3h5IC8gKG4gLSAxKQoKCmRlZiBjb3JyZWxhdGlvbih4LCB5LCAvKToKICAgICIiIlBlYXJzb24ncyBjb3JyZWxhdGlvbiBjb2VmZmljaWVudAoKICAgIFJldHVybiB0aGUgUGVhcnNvbidzIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50IGZvciB0d28gaW5wdXRzLiBQZWFyc29uJ3MKICAgIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50ICpyKiB0YWtlcyB2YWx1ZXMgYmV0d2VlbiAtMSBhbmQgKzEuIEl0IG1lYXN1cmVzIHRoZQogICAgc3RyZW5ndGggYW5kIGRpcmVjdGlvbiBvZiB0aGUgbGluZWFyIHJlbGF0aW9uc2hpcCwgd2hlcmUgKzEgbWVhbnMgdmVyeQogICAgc3Ryb25nLCBwb3NpdGl2ZSBsaW5lYXIgcmVsYXRpb25zaGlwLCAtMSB2ZXJ5IHN0cm9uZywgbmVnYXRpdmUgbGluZWFyCiAgICByZWxhdGlvbnNoaXAsIGFuZCAwIG5vIGxpbmVhciByZWxhdGlvbnNoaXAuCgogICAgPj4+IHggPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0KICAgID4+PiB5ID0gWzksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDFdCiAgICA+Pj4gY29ycmVsYXRpb24oeCwgeCkKICAgIDEuMAogICAgPj4+IGNvcnJlbGF0aW9uKHgsIHkpCiAgICAtMS4wCgogICAgIiIiCiAgICBuID0gbGVuKHgpCiAgICBpZiBsZW4oeSkgIT0gbjoKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2NvcnJlbGF0aW9uIHJlcXVpcmVzIHRoYXQgYm90aCBpbnB1dHMgaGF2ZSBzYW1lIG51bWJlciBvZiBkYXRhIHBvaW50cycpCiAgICBpZiBuIDwgMjoKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2NvcnJlbGF0aW9uIHJlcXVpcmVzIGF0IGxlYXN0IHR3byBkYXRhIHBvaW50cycpCiAgICB4YmFyID0gZnN1bSh4KSAvIG4KICAgIHliYXIgPSBmc3VtKHkpIC8gbgogICAgc3h5ID0gZnN1bSgoeGkgLSB4YmFyKSAqICh5aSAtIHliYXIpIGZvciB4aSwgeWkgaW4gemlwKHgsIHkpKQogICAgc3h4ID0gZnN1bSgoZCA6PSB4aSAtIHhiYXIpICogZCBmb3IgeGkgaW4geCkKICAgIHN5eSA9IGZzdW0oKGQgOj0geWkgLSB5YmFyKSAqIGQgZm9yIHlpIGluIHkpCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIHN4eSAvIHNxcnQoc3h4ICogc3l5KQogICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgogICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignYXQgbGVhc3Qgb25lIG9mIHRoZSBpbnB1dHMgaXMgY29uc3RhbnQnKQoKCkxpbmVhclJlZ3Jlc3Npb24gPSBuYW1lZHR1cGxlKCdMaW5lYXJSZWdyZXNzaW9uJywgKCdzbG9wZScsICdpbnRlcmNlcHQnKSkKCgpkZWYgbGluZWFyX3JlZ3Jlc3Npb24oeCwgeSwgLywgKiwgcHJvcG9ydGlvbmFsPUZhbHNlKToKICAgICIiIlNsb3BlIGFuZCBpbnRlcmNlcHQgZm9yIHNpbXBsZSBsaW5lYXIgcmVncmVzc2lvbi4KCiAgICBSZXR1cm4gdGhlIHNsb3BlIGFuZCBpbnRlcmNlcHQgb2Ygc2ltcGxlIGxpbmVhciByZWdyZXNzaW9uCiAgICBwYXJhbWV0ZXJzIGVzdGltYXRlZCB1c2luZyBvcmRpbmFyeSBsZWFzdCBzcXVhcmVzLiBTaW1wbGUgbGluZWFyCiAgICByZWdyZXNzaW9uIGRlc2NyaWJlcyByZWxhdGlvbnNoaXAgYmV0d2VlbiBhbiBpbmRlcGVuZGVudCB2YXJpYWJsZQogICAgKngqIGFuZCBhIGRlcGVuZGVudCB2YXJpYWJsZSAqeSogaW4gdGVybXMgb2YgYSBsaW5lYXIgZnVuY3Rpb246CgogICAgICAgIHkgPSBzbG9wZSAqIHggKyBpbnRlcmNlcHQgKyBub2lzZQoKICAgIHdoZXJlICpzbG9wZSogYW5kICppbnRlcmNlcHQqIGFyZSB0aGUgcmVncmVzc2lvbiBwYXJhbWV0ZXJzIHRoYXQgYXJlCiAgICBlc3RpbWF0ZWQsIGFuZCBub2lzZSByZXByZXNlbnRzIHRoZSB2YXJpYWJpbGl0eSBvZiB0aGUgZGF0YSB0aGF0IHdhcwogICAgbm90IGV4cGxhaW5lZCBieSB0aGUgbGluZWFyIHJlZ3Jlc3Npb24gKGl0IGlzIGVxdWFsIHRvIHRoZQogICAgZGlmZmVyZW5jZSBiZXR3ZWVuIHByZWRpY3RlZCBhbmQgYWN0dWFsIHZhbHVlcyBvZiB0aGUgZGVwZW5kZW50CiAgICB2YXJpYWJsZSkuCgogICAgVGhlIHBhcmFtZXRlcnMgYXJlIHJldHVybmVkIGFzIGEgbmFtZWQgdHVwbGUuCgogICAgPj4+IHggPSBbMSwgMiwgMywgNCwgNV0KICAgID4+PiBub2lzZSA9IE5vcm1hbERpc3QoKS5zYW1wbGVzKDUsIHNlZWQ9NDIpCiAgICA+Pj4geSA9IFszICogeFtpXSArIDIgKyBub2lzZVtpXSBmb3IgaSBpbiByYW5nZSg1KV0KICAgID4+PiBsaW5lYXJfcmVncmVzc2lvbih4LCB5KSAgI2RvY3Rlc3Q6ICtFTExJUFNJUwogICAgTGluZWFyUmVncmVzc2lvbihzbG9wZT0zLjA5MDc4OTE0MTcwLi4uLCBpbnRlcmNlcHQ9MS43NTY4NDk3MDQ4Ni4uLikKCiAgICBJZiAqcHJvcG9ydGlvbmFsKiBpcyB0cnVlLCB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUgKngqIGFuZCB0aGUKICAgIGRlcGVuZGVudCB2YXJpYWJsZSAqeSogYXJlIGFzc3VtZWQgdG8gYmUgZGlyZWN0bHkgcHJvcG9ydGlvbmFsLgogICAgVGhlIGRhdGEgaXMgZml0IHRvIGEgbGluZSBwYXNzaW5nIHRocm91Z2ggdGhlIG9yaWdpbi4KCiAgICBTaW5jZSB0aGUgKmludGVyY2VwdCogd2lsbCBhbHdheXMgYmUgMC4wLCB0aGUgdW5kZXJseWluZyBsaW5lYXIKICAgIGZ1bmN0aW9uIHNpbXBsaWZpZXMgdG86CgogICAgICAgIHkgPSBzbG9wZSAqIHggKyBub2lzZQoKICAgID4+PiB5ID0gWzMgKiB4W2ldICsgbm9pc2VbaV0gZm9yIGkgaW4gcmFuZ2UoNSldCiAgICA+Pj4gbGluZWFyX3JlZ3Jlc3Npb24oeCwgeSwgcHJvcG9ydGlvbmFsPVRydWUpICAjZG9jdGVzdDogK0VMTElQU0lTCiAgICBMaW5lYXJSZWdyZXNzaW9uKHNsb3BlPTMuMDI0NDc1NDI0ODQuLi4sIGludGVyY2VwdD0wLjApCgogICAgIiIiCiAgICBuID0gbGVuKHgpCiAgICBpZiBsZW4oeSkgIT0gbjoKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2xpbmVhciByZWdyZXNzaW9uIHJlcXVpcmVzIHRoYXQgYm90aCBpbnB1dHMgaGF2ZSBzYW1lIG51bWJlciBvZiBkYXRhIHBvaW50cycpCiAgICBpZiBuIDwgMjoKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2xpbmVhciByZWdyZXNzaW9uIHJlcXVpcmVzIGF0IGxlYXN0IHR3byBkYXRhIHBvaW50cycpCiAgICBpZiBwcm9wb3J0aW9uYWw6CiAgICAgICAgc3h5ID0gZnN1bSh4aSAqIHlpIGZvciB4aSwgeWkgaW4gemlwKHgsIHkpKQogICAgICAgIHN4eCA9IGZzdW0oeGkgKiB4aSBmb3IgeGkgaW4geCkKICAgIGVsc2U6CiAgICAgICAgeGJhciA9IGZzdW0oeCkgLyBuCiAgICAgICAgeWJhciA9IGZzdW0oeSkgLyBuCiAgICAgICAgc3h5ID0gZnN1bSgoeGkgLSB4YmFyKSAqICh5aSAtIHliYXIpIGZvciB4aSwgeWkgaW4gemlwKHgsIHkpKQogICAgICAgIHN4eCA9IGZzdW0oKGQgOj0geGkgLSB4YmFyKSAqIGQgZm9yIHhpIGluIHgpCiAgICB0cnk6CiAgICAgICAgc2xvcGUgPSBzeHkgLyBzeHggICAjIGVxdWl2YWxlbnQgdG86ICBjb3ZhcmlhbmNlKHgsIHkpIC8gdmFyaWFuY2UoeCkKICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ3ggaXMgY29uc3RhbnQnKQogICAgaW50ZXJjZXB0ID0gMC4wIGlmIHByb3BvcnRpb25hbCBlbHNlIHliYXIgLSBzbG9wZSAqIHhiYXIKICAgIHJldHVybiBMaW5lYXJSZWdyZXNzaW9uKHNsb3BlPXNsb3BlLCBpbnRlcmNlcHQ9aW50ZXJjZXB0KQoKCiMjIE5vcm1hbCBEaXN0cmlidXRpb24gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCgpkZWYgX25vcm1hbF9kaXN0X2ludl9jZGYocCwgbXUsIHNpZ21hKToKICAgICMgVGhlcmUgaXMgbm8gY2xvc2VkLWZvcm0gc29sdXRpb24gdG8gdGhlIGludmVyc2UgQ0RGIGZvciB0aGUgbm9ybWFsCiAgICAjIGRpc3RyaWJ1dGlvbiwgc28gd2UgdXNlIGEgcmF0aW9uYWwgYXBwcm94aW1hdGlvbiBpbnN0ZWFkOgogICAgIyBXaWNodXJhLCBNLkouICgxOTg4KS4gIkFsZ29yaXRobSBBUzI0MTogVGhlIFBlcmNlbnRhZ2UgUG9pbnRzIG9mIHRoZQogICAgIyBOb3JtYWwgRGlzdHJpYnV0aW9uIi4gIEFwcGxpZWQgU3RhdGlzdGljcy4gQmxhY2t3ZWxsIFB1Ymxpc2hpbmcuIDM3CiAgICAjICgzKTogNDc34oCTNDg0LiBkb2k6MTAuMjMwNy8yMzQ3MzMwLiBKU1RPUiAyMzQ3MzMwLgogICAgcSA9IHAgLSAwLjUKICAgIGlmIGZhYnMocSkgPD0gMC40MjU6CiAgICAgICAgciA9IDAuMTgwNjI1IC0gcSAqIHEKICAgICAgICAjIEhhc2ggc3VtOiA1NS44ODMxOV8yODgwNl8xNDkwMV80NDM5CiAgICAgICAgbnVtID0gKCgoKCgoKDIuNTA5MDhfMDkyODdfMzAxMjJfNjcyN2UrMyAqIHIgKwogICAgICAgICAgICAgICAgICAgICAzLjM0MzA1Xzc1NTgzXzU4ODEyXzgxMDVlKzQpICogciArCiAgICAgICAgICAgICAgICAgICAgIDYuNzI2NTdfNzA5MjdfMDA4NzBfMDg1M2UrNCkgKiByICsKICAgICAgICAgICAgICAgICAgICAgNC41OTIxOV81MzkzMV81NDk4N18xNDU3ZSs0KSAqIHIgKwogICAgICAgICAgICAgICAgICAgICAxLjM3MzE2XzkzNzY1XzUwOTQ2XzExMjVlKzQpICogciArCiAgICAgICAgICAgICAgICAgICAgIDEuOTcxNTlfMDk1MDNfMDY1NTFfNDQyN2UrMykgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS4zMzE0MV82Njc4OV8xNzg0M183NzQ1ZSsyKSAqIHIgKwogICAgICAgICAgICAgICAgICAgICAzLjM4NzEzXzI4NzI3Xzk2MzY2XzYwODBlKzApICogcQogICAgICAgIGRlbiA9ICgoKCgoKCg1LjIyNjQ5XzUyNzg4XzUyODU0XzU2MTBlKzMgKiByICsKICAgICAgICAgICAgICAgICAgICAgMi44NzI5MF84NTczNV83MjE5NF8yNjc0ZSs0KSAqIHIgKwogICAgICAgICAgICAgICAgICAgICAzLjkzMDc4Xzk1ODAwXzA5MjcxXzA2MTBlKzQpICogciArCiAgICAgICAgICAgICAgICAgICAgIDIuMTIxMzdfOTQzMDFfNTg2NTlfNTg2N2UrNCkgKiByICsKICAgICAgICAgICAgICAgICAgICAgNS4zOTQxOV82MDIxNF8yNDc1MV8xMDc3ZSszKSAqIHIgKwogICAgICAgICAgICAgICAgICAgICA2Ljg3MTg3XzAwNzQ5XzIwNTc5XzA4MzBlKzIpICogciArCiAgICAgICAgICAgICAgICAgICAgIDQuMjMxMzNfMzA3MDFfNjAwOTFfMTI1MmUrMSkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS4wKQogICAgICAgIHggPSBudW0gLyBkZW4KICAgICAgICByZXR1cm4gbXUgKyAoeCAqIHNpZ21hKQogICAgciA9IHAgaWYgcSA8PSAwLjAgZWxzZSAxLjAgLSBwCiAgICByID0gc3FydCgtbG9nKHIpKQogICAgaWYgciA8PSA1LjA6CiAgICAgICAgciA9IHIgLSAxLjYKICAgICAgICAjIEhhc2ggc3VtOiA0OS4zMzIwNl81MDMzMF8xNjEwMl84OTAzNgogICAgICAgIG51bSA9ICgoKCgoKCg3Ljc0NTQ1XzAxNDI3XzgzNDE0XzA3NjQwZS00ICogciArCiAgICAgICAgICAgICAgICAgICAgIDIuMjcyMzhfNDQ5ODlfMjY5MThfNDU4MzNlLTIpICogciArCiAgICAgICAgICAgICAgICAgICAgIDIuNDE3ODBfNzI1MTdfNzQ1MDZfMTE3NzBlLTEpICogciArCiAgICAgICAgICAgICAgICAgICAgIDEuMjcwNDVfODI1MjRfNTIzNjhfMzgyNThlKzApICogciArCiAgICAgICAgICAgICAgICAgICAgIDMuNjQ3ODRfODMyNDdfNjMyMDRfNjA1MDRlKzApICogciArCiAgICAgICAgICAgICAgICAgICAgIDUuNzY5NDlfNzIyMTRfNjA2OTFfNDA1NTBlKzApICogciArCiAgICAgICAgICAgICAgICAgICAgIDQuNjMwMzNfNzg0NjFfNTY1NDVfMjk1OTBlKzApICogciArCiAgICAgICAgICAgICAgICAgICAgIDEuNDIzNDNfNzExMDdfNDk2ODNfNTc3MzRlKzApCiAgICAgICAgZGVuID0gKCgoKCgoKDEuMDUwNzVfMDA3MTZfNDQ0MTZfODQzMjRlLTkgKiByICsKICAgICAgICAgICAgICAgICAgICAgNS40NzU5M184MDg0OV85NTM0NF85NDYwMGUtNCkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS41MTk4Nl82NjU2M182MTY0NV83MTk2NmUtMikgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS40ODEwM185NzY0Ml83NDgwMF83NDU5MGUtMSkgKiByICsKICAgICAgICAgICAgICAgICAgICAgNi44OTc2N18zMzQ5OF81MTAwMF8wNDU1MGUtMSkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS42NzYzOF80ODMwMV84MzgwM184NDk0MGUrMCkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMi4wNTMxOV8xNjI2Nl8zNzc1OF84MjE4N2UrMCkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS4wKQogICAgZWxzZToKICAgICAgICByID0gciAtIDUuMAogICAgICAgICMgSGFzaCBzdW06IDQ3LjUyNTgzXzMxNzU0XzkyODk2XzcxNjI5CiAgICAgICAgbnVtID0gKCgoKCgoKDIuMDEwMzNfNDM5OTJfOTIyODhfMTMyNjVlLTcgKiByICsKICAgICAgICAgICAgICAgICAgICAgMi43MTE1NV81NTY4N180MzQ4N181NzgxNWUtNSkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS4yNDI2Nl8wOTQ3M184ODA3OF80Mzg2MGUtMykgKiByICsKICAgICAgICAgICAgICAgICAgICAgMi42NTMyMV84OTUyNl81NzYxMl8zMDkzMGUtMikgKiByICsKICAgICAgICAgICAgICAgICAgICAgMi45NjU2MF81NzE4Ml84NTA0OF85MTIzMGUtMSkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS43ODQ4Ml82NTM5OV8xNzI5MV8zMzU4MGUrMCkgKiByICsKICAgICAgICAgICAgICAgICAgICAgNS40NjM3OF80OTExMV82NDExNF8zNjk5MGUrMCkgKiByICsKICAgICAgICAgICAgICAgICAgICAgNi42NTc5MF80NjQzNV8wMTEwM183NzcyMGUrMCkKICAgICAgICBkZW4gPSAoKCgoKCgoMi4wNDQyNl8zMTAzM184OTkzOV83ODU2NGUtMTUgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS40MjE1MV8xNzU4M18xNjQ0NV84ODg3MGUtNykgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS44NDYzMV84MzE3NV8xMDA1NF82ODE4MGUtNSkgKiByICsKICAgICAgICAgICAgICAgICAgICAgNy44Njg2OV8xMzExNF81NjEzMl81OTEwMGUtNCkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS40ODc1M182MTI5MF84NTA2MV80ODUyNWUtMikgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS4zNjkyOV84ODA5Ml8yNzM1OF8wNTMxMGUtMSkgKiByICsKICAgICAgICAgICAgICAgICAgICAgNS45OTgzMl8yMDY1NV81ODg3OV8zNzY5MGUtMSkgKiByICsKICAgICAgICAgICAgICAgICAgICAgMS4wKQogICAgeCA9IG51bSAvIGRlbgogICAgaWYgcSA8IDAuMDoKICAgICAgICB4ID0gLXgKICAgIHJldHVybiBtdSArICh4ICogc2lnbWEpCgoKIyBJZiBhdmFpbGFibGUsIHVzZSBDIGltcGxlbWVudGF0aW9uCnRyeToKICAgIGZyb20gX3N0YXRpc3RpY3MgaW1wb3J0IF9ub3JtYWxfZGlzdF9pbnZfY2RmCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKCgpjbGFzcyBOb3JtYWxEaXN0OgogICAgIk5vcm1hbCBkaXN0cmlidXRpb24gb2YgYSByYW5kb20gdmFyaWFibGUiCiAgICAjIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05vcm1hbF9kaXN0cmlidXRpb24KICAgICMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFyaWFuY2UjUHJvcGVydGllcwoKICAgIF9fc2xvdHNfXyA9IHsKICAgICAgICAnX211JzogJ0FyaXRobWV0aWMgbWVhbiBvZiBhIG5vcm1hbCBkaXN0cmlidXRpb24nLAogICAgICAgICdfc2lnbWEnOiAnU3RhbmRhcmQgZGV2aWF0aW9uIG9mIGEgbm9ybWFsIGRpc3RyaWJ1dGlvbicsCiAgICB9CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG11PTAuMCwgc2lnbWE9MS4wKToKICAgICAgICAiTm9ybWFsRGlzdCB3aGVyZSBtdSBpcyB0aGUgbWVhbiBhbmQgc2lnbWEgaXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4iCiAgICAgICAgaWYgc2lnbWEgPCAwLjA6CiAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignc2lnbWEgbXVzdCBiZSBub24tbmVnYXRpdmUnKQogICAgICAgIHNlbGYuX211ID0gZmxvYXQobXUpCiAgICAgICAgc2VsZi5fc2lnbWEgPSBmbG9hdChzaWdtYSkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tX3NhbXBsZXMoY2xzLCBkYXRhKToKICAgICAgICAiTWFrZSBhIG5vcm1hbCBkaXN0cmlidXRpb24gaW5zdGFuY2UgZnJvbSBzYW1wbGUgZGF0YS4iCiAgICAgICAgcmV0dXJuIGNscygqX21lYW5fc3RkZXYoZGF0YSkpCgogICAgZGVmIHNhbXBsZXMoc2VsZiwgbiwgKiwgc2VlZD1Ob25lKToKICAgICAgICAiR2VuZXJhdGUgKm4qIHNhbXBsZXMgZm9yIGEgZ2l2ZW4gbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uLiIKICAgICAgICBnYXVzcyA9IHJhbmRvbS5nYXVzcyBpZiBzZWVkIGlzIE5vbmUgZWxzZSByYW5kb20uUmFuZG9tKHNlZWQpLmdhdXNzCiAgICAgICAgbXUsIHNpZ21hID0gc2VsZi5fbXUsIHNlbGYuX3NpZ21hCiAgICAgICAgcmV0dXJuIFtnYXVzcyhtdSwgc2lnbWEpIGZvciBpIGluIHJhbmdlKG4pXQoKICAgIGRlZiBwZGYoc2VsZiwgeCk6CiAgICAgICAgIlByb2JhYmlsaXR5IGRlbnNpdHkgZnVuY3Rpb24uICBQKHggPD0gWCA8IHgrZHgpIC8gZHgiCiAgICAgICAgdmFyaWFuY2UgPSBzZWxmLl9zaWdtYSAqIHNlbGYuX3NpZ21hCiAgICAgICAgaWYgbm90IHZhcmlhbmNlOgogICAgICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ3BkZigpIG5vdCBkZWZpbmVkIHdoZW4gc2lnbWEgaXMgemVybycpCiAgICAgICAgZGlmZiA9IHggLSBzZWxmLl9tdQogICAgICAgIHJldHVybiBleHAoZGlmZiAqIGRpZmYgLyAoLTIuMCAqIHZhcmlhbmNlKSkgLyBzcXJ0KHRhdSAqIHZhcmlhbmNlKQoKICAgIGRlZiBjZGYoc2VsZiwgeCk6CiAgICAgICAgIkN1bXVsYXRpdmUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uLiAgUChYIDw9IHgpIgogICAgICAgIGlmIG5vdCBzZWxmLl9zaWdtYToKICAgICAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdjZGYoKSBub3QgZGVmaW5lZCB3aGVuIHNpZ21hIGlzIHplcm8nKQogICAgICAgIHJldHVybiAwLjUgKiAoMS4wICsgZXJmKCh4IC0gc2VsZi5fbXUpIC8gKHNlbGYuX3NpZ21hICogX1NRUlQyKSkpCgogICAgZGVmIGludl9jZGYoc2VsZiwgcCk6CiAgICAgICAgIiIiSW52ZXJzZSBjdW11bGF0aXZlIGRpc3RyaWJ1dGlvbiBmdW5jdGlvbi4gIHggOiBQKFggPD0geCkgPSBwCgogICAgICAgIEZpbmRzIHRoZSB2YWx1ZSBvZiB0aGUgcmFuZG9tIHZhcmlhYmxlIHN1Y2ggdGhhdCB0aGUgcHJvYmFiaWxpdHkgb2YKICAgICAgICB0aGUgdmFyaWFibGUgYmVpbmcgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoYXQgdmFsdWUgZXF1YWxzIHRoZSBnaXZlbgogICAgICAgIHByb2JhYmlsaXR5LgoKICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIHRoZSBwZXJjZW50IHBvaW50IGZ1bmN0aW9uIG9yIHF1YW50aWxlCiAgICAgICAgZnVuY3Rpb24uCiAgICAgICAgIiIiCiAgICAgICAgaWYgcCA8PSAwLjAgb3IgcCA+PSAxLjA6CiAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcigncCBtdXN0IGJlIGluIHRoZSByYW5nZSAwLjAgPCBwIDwgMS4wJykKICAgICAgICBpZiBzZWxmLl9zaWdtYSA8PSAwLjA6CiAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignY2RmKCkgbm90IGRlZmluZWQgd2hlbiBzaWdtYSBhdCBvciBiZWxvdyB6ZXJvJykKICAgICAgICByZXR1cm4gX25vcm1hbF9kaXN0X2ludl9jZGYocCwgc2VsZi5fbXUsIHNlbGYuX3NpZ21hKQoKICAgIGRlZiBxdWFudGlsZXMoc2VsZiwgbj00KToKICAgICAgICAiIiJEaXZpZGUgaW50byAqbiogY29udGludW91cyBpbnRlcnZhbHMgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4KCiAgICAgICAgUmV0dXJucyBhIGxpc3Qgb2YgKG4gLSAxKSBjdXQgcG9pbnRzIHNlcGFyYXRpbmcgdGhlIGludGVydmFscy4KCiAgICAgICAgU2V0ICpuKiB0byA0IGZvciBxdWFydGlsZXMgKHRoZSBkZWZhdWx0KS4gIFNldCAqbiogdG8gMTAgZm9yIGRlY2lsZXMuCiAgICAgICAgU2V0ICpuKiB0byAxMDAgZm9yIHBlcmNlbnRpbGVzIHdoaWNoIGdpdmVzIHRoZSA5OSBjdXRzIHBvaW50cyB0aGF0CiAgICAgICAgc2VwYXJhdGUgdGhlIG5vcm1hbCBkaXN0cmlidXRpb24gaW4gdG8gMTAwIGVxdWFsIHNpemVkIGdyb3Vwcy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gW3NlbGYuaW52X2NkZihpIC8gbikgZm9yIGkgaW4gcmFuZ2UoMSwgbildCgogICAgZGVmIG92ZXJsYXAoc2VsZiwgb3RoZXIpOgogICAgICAgICIiIkNvbXB1dGUgdGhlIG92ZXJsYXBwaW5nIGNvZWZmaWNpZW50IChPVkwpIGJldHdlZW4gdHdvIG5vcm1hbCBkaXN0cmlidXRpb25zLgoKICAgICAgICBNZWFzdXJlcyB0aGUgYWdyZWVtZW50IGJldHdlZW4gdHdvIG5vcm1hbCBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb25zLgogICAgICAgIFJldHVybnMgYSB2YWx1ZSBiZXR3ZWVuIDAuMCBhbmQgMS4wIGdpdmluZyB0aGUgb3ZlcmxhcHBpbmcgYXJlYSBpbgogICAgICAgIHRoZSB0d28gdW5kZXJseWluZyBwcm9iYWJpbGl0eSBkZW5zaXR5IGZ1bmN0aW9ucy4KCiAgICAgICAgICAgID4+PiBOMSA9IE5vcm1hbERpc3QoMi40LCAxLjYpCiAgICAgICAgICAgID4+PiBOMiA9IE5vcm1hbERpc3QoMy4yLCAyLjApCiAgICAgICAgICAgID4+PiBOMS5vdmVybGFwKE4yKQogICAgICAgICAgICAwLjgwMzUwNTA2NTczMzAyMDUKICAgICAgICAiIiIKICAgICAgICAjIFNlZTogIlRoZSBvdmVybGFwcGluZyBjb2VmZmljaWVudCBhcyBhIG1lYXN1cmUgb2YgYWdyZWVtZW50IGJldHdlZW4KICAgICAgICAjIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbnMgYW5kIHBvaW50IGVzdGltYXRpb24gb2YgdGhlIG92ZXJsYXAgb2YgdHdvCiAgICAgICAgIyBub3JtYWwgZGVuc2l0aWVzIiAtLSBIZW5yeSBGLiBJbm1hbiBhbmQgRWR3aW4gTC4gQnJhZGxleSBKcgogICAgICAgICMgaHR0cDovL2R4LmRvaS5vcmcvMTAuMTA4MC8wMzYxMDkyODkwODgzMDEyNwogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBOb3JtYWxEaXN0KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBhbm90aGVyIE5vcm1hbERpc3QgaW5zdGFuY2UnKQogICAgICAgIFgsIFkgPSBzZWxmLCBvdGhlcgogICAgICAgIGlmIChZLl9zaWdtYSwgWS5fbXUpIDwgKFguX3NpZ21hLCBYLl9tdSk6ICAjIHNvcnQgdG8gYXNzdXJlIGNvbW11dGF0aXZpdHkKICAgICAgICAgICAgWCwgWSA9IFksIFgKICAgICAgICBYX3ZhciwgWV92YXIgPSBYLnZhcmlhbmNlLCBZLnZhcmlhbmNlCiAgICAgICAgaWYgbm90IFhfdmFyIG9yIG5vdCBZX3ZhcjoKICAgICAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdvdmVybGFwKCkgbm90IGRlZmluZWQgd2hlbiBzaWdtYSBpcyB6ZXJvJykKICAgICAgICBkdiA9IFlfdmFyIC0gWF92YXIKICAgICAgICBkbSA9IGZhYnMoWS5fbXUgLSBYLl9tdSkKICAgICAgICBpZiBub3QgZHY6CiAgICAgICAgICAgIHJldHVybiAxLjAgLSBlcmYoZG0gLyAoMi4wICogWC5fc2lnbWEgKiBfU1FSVDIpKQogICAgICAgIGEgPSBYLl9tdSAqIFlfdmFyIC0gWS5fbXUgKiBYX3ZhcgogICAgICAgIGIgPSBYLl9zaWdtYSAqIFkuX3NpZ21hICogc3FydChkbSAqIGRtICsgZHYgKiBsb2coWV92YXIgLyBYX3ZhcikpCiAgICAgICAgeDEgPSAoYSArIGIpIC8gZHYKICAgICAgICB4MiA9IChhIC0gYikgLyBkdgogICAgICAgIHJldHVybiAxLjAgLSAoZmFicyhZLmNkZih4MSkgLSBYLmNkZih4MSkpICsgZmFicyhZLmNkZih4MikgLSBYLmNkZih4MikpKQoKICAgIGRlZiB6c2NvcmUoc2VsZiwgeCk6CiAgICAgICAgIiIiQ29tcHV0ZSB0aGUgU3RhbmRhcmQgU2NvcmUuICAoeCAtIG1lYW4pIC8gc3RkZXYKCiAgICAgICAgRGVzY3JpYmVzICp4KiBpbiB0ZXJtcyBvZiB0aGUgbnVtYmVyIG9mIHN0YW5kYXJkIGRldmlhdGlvbnMKICAgICAgICBhYm92ZSBvciBiZWxvdyB0aGUgbWVhbiBvZiB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbi4KICAgICAgICAiIiIKICAgICAgICAjIGh0dHBzOi8vd3d3LnN0YXRpc3RpY3Nob3d0by5jb20vcHJvYmFiaWxpdHktYW5kLXN0YXRpc3RpY3Mvei1zY29yZS8KICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbWE6CiAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignenNjb3JlKCkgbm90IGRlZmluZWQgd2hlbiBzaWdtYSBpcyB6ZXJvJykKICAgICAgICByZXR1cm4gKHggLSBzZWxmLl9tdSkgLyBzZWxmLl9zaWdtYQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1lYW4oc2VsZik6CiAgICAgICAgIkFyaXRobWV0aWMgbWVhbiBvZiB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbi4iCiAgICAgICAgcmV0dXJuIHNlbGYuX211CgogICAgQHByb3BlcnR5CiAgICBkZWYgbWVkaWFuKHNlbGYpOgogICAgICAgICJSZXR1cm4gdGhlIG1lZGlhbiBvZiB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbiIKICAgICAgICByZXR1cm4gc2VsZi5fbXUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtb2RlKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgbW9kZSBvZiB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbgoKICAgICAgICBUaGUgbW9kZSBpcyB0aGUgdmFsdWUgeCB3aGVyZSB3aGljaCB0aGUgcHJvYmFiaWxpdHkgZGVuc2l0eQogICAgICAgIGZ1bmN0aW9uIChwZGYpIHRha2VzIGl0cyBtYXhpbXVtIHZhbHVlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9tdQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHN0ZGV2KHNlbGYpOgogICAgICAgICJTdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIG5vcm1hbCBkaXN0cmlidXRpb24uIgogICAgICAgIHJldHVybiBzZWxmLl9zaWdtYQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZhcmlhbmNlKHNlbGYpOgogICAgICAgICJTcXVhcmUgb2YgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4iCiAgICAgICAgcmV0dXJuIHNlbGYuX3NpZ21hICogc2VsZi5fc2lnbWEKCiAgICBkZWYgX19hZGRfXyh4MSwgeDIpOgogICAgICAgICIiIkFkZCBhIGNvbnN0YW50IG9yIGFub3RoZXIgTm9ybWFsRGlzdCBpbnN0YW5jZS4KCiAgICAgICAgSWYgKm90aGVyKiBpcyBhIGNvbnN0YW50LCB0cmFuc2xhdGUgbXUgYnkgdGhlIGNvbnN0YW50LAogICAgICAgIGxlYXZpbmcgc2lnbWEgdW5jaGFuZ2VkLgoKICAgICAgICBJZiAqb3RoZXIqIGlzIGEgTm9ybWFsRGlzdCwgYWRkIGJvdGggdGhlIG1lYW5zIGFuZCB0aGUgdmFyaWFuY2VzLgogICAgICAgIE1hdGhlbWF0aWNhbGx5LCB0aGlzIHdvcmtzIG9ubHkgaWYgdGhlIHR3byBkaXN0cmlidXRpb25zIGFyZQogICAgICAgIGluZGVwZW5kZW50IG9yIGlmIHRoZXkgYXJlIGpvaW50bHkgbm9ybWFsbHkgZGlzdHJpYnV0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZSh4MiwgTm9ybWFsRGlzdCk6CiAgICAgICAgICAgIHJldHVybiBOb3JtYWxEaXN0KHgxLl9tdSArIHgyLl9tdSwgaHlwb3QoeDEuX3NpZ21hLCB4Mi5fc2lnbWEpKQogICAgICAgIHJldHVybiBOb3JtYWxEaXN0KHgxLl9tdSArIHgyLCB4MS5fc2lnbWEpCgogICAgZGVmIF9fc3ViX18oeDEsIHgyKToKICAgICAgICAiIiJTdWJ0cmFjdCBhIGNvbnN0YW50IG9yIGFub3RoZXIgTm9ybWFsRGlzdCBpbnN0YW5jZS4KCiAgICAgICAgSWYgKm90aGVyKiBpcyBhIGNvbnN0YW50LCB0cmFuc2xhdGUgYnkgdGhlIGNvbnN0YW50IG11LAogICAgICAgIGxlYXZpbmcgc2lnbWEgdW5jaGFuZ2VkLgoKICAgICAgICBJZiAqb3RoZXIqIGlzIGEgTm9ybWFsRGlzdCwgc3VidHJhY3QgdGhlIG1lYW5zIGFuZCBhZGQgdGhlIHZhcmlhbmNlcy4KICAgICAgICBNYXRoZW1hdGljYWxseSwgdGhpcyB3b3JrcyBvbmx5IGlmIHRoZSB0d28gZGlzdHJpYnV0aW9ucyBhcmUKICAgICAgICBpbmRlcGVuZGVudCBvciBpZiB0aGV5IGFyZSBqb2ludGx5IG5vcm1hbGx5IGRpc3RyaWJ1dGVkLgogICAgICAgICIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UoeDIsIE5vcm1hbERpc3QpOgogICAgICAgICAgICByZXR1cm4gTm9ybWFsRGlzdCh4MS5fbXUgLSB4Mi5fbXUsIGh5cG90KHgxLl9zaWdtYSwgeDIuX3NpZ21hKSkKICAgICAgICByZXR1cm4gTm9ybWFsRGlzdCh4MS5fbXUgLSB4MiwgeDEuX3NpZ21hKQoKICAgIGRlZiBfX211bF9fKHgxLCB4Mik6CiAgICAgICAgIiIiTXVsdGlwbHkgYm90aCBtdSBhbmQgc2lnbWEgYnkgYSBjb25zdGFudC4KCiAgICAgICAgVXNlZCBmb3IgcmVzY2FsaW5nLCBwZXJoYXBzIHRvIGNoYW5nZSBtZWFzdXJlbWVudCB1bml0cy4KICAgICAgICBTaWdtYSBpcyBzY2FsZWQgd2l0aCB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGNvbnN0YW50LgogICAgICAgICIiIgogICAgICAgIHJldHVybiBOb3JtYWxEaXN0KHgxLl9tdSAqIHgyLCB4MS5fc2lnbWEgKiBmYWJzKHgyKSkKCiAgICBkZWYgX190cnVlZGl2X18oeDEsIHgyKToKICAgICAgICAiIiJEaXZpZGUgYm90aCBtdSBhbmQgc2lnbWEgYnkgYSBjb25zdGFudC4KCiAgICAgICAgVXNlZCBmb3IgcmVzY2FsaW5nLCBwZXJoYXBzIHRvIGNoYW5nZSBtZWFzdXJlbWVudCB1bml0cy4KICAgICAgICBTaWdtYSBpcyBzY2FsZWQgd2l0aCB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGNvbnN0YW50LgogICAgICAgICIiIgogICAgICAgIHJldHVybiBOb3JtYWxEaXN0KHgxLl9tdSAvIHgyLCB4MS5fc2lnbWEgLyBmYWJzKHgyKSkKCiAgICBkZWYgX19wb3NfXyh4MSk6CiAgICAgICAgIlJldHVybiBhIGNvcHkgb2YgdGhlIGluc3RhbmNlLiIKICAgICAgICByZXR1cm4gTm9ybWFsRGlzdCh4MS5fbXUsIHgxLl9zaWdtYSkKCiAgICBkZWYgX19uZWdfXyh4MSk6CiAgICAgICAgIk5lZ2F0ZXMgbXUgd2hpbGUga2VlcGluZyBzaWdtYSB0aGUgc2FtZS4iCiAgICAgICAgcmV0dXJuIE5vcm1hbERpc3QoLXgxLl9tdSwgeDEuX3NpZ21hKQoKICAgIF9fcmFkZF9fID0gX19hZGRfXwoKICAgIGRlZiBfX3JzdWJfXyh4MSwgeDIpOgogICAgICAgICJTdWJ0cmFjdCBhIE5vcm1hbERpc3QgZnJvbSBhIGNvbnN0YW50IG9yIGFub3RoZXIgTm9ybWFsRGlzdC4iCiAgICAgICAgcmV0dXJuIC0oeDEgLSB4MikKCiAgICBfX3JtdWxfXyA9IF9fbXVsX18KCiAgICBkZWYgX19lcV9fKHgxLCB4Mik6CiAgICAgICAgIlR3byBOb3JtYWxEaXN0IG9iamVjdHMgYXJlIGVxdWFsIGlmIHRoZWlyIG11IGFuZCBzaWdtYSBhcmUgYm90aCBlcXVhbC4iCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoeDIsIE5vcm1hbERpc3QpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4geDEuX211ID09IHgyLl9tdSBhbmQgeDEuX3NpZ21hID09IHgyLl9zaWdtYQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAiTm9ybWFsRGlzdCBvYmplY3RzIGhhc2ggZXF1YWwgaWYgdGhlaXIgbXUgYW5kIHNpZ21hIGFyZSBib3RoIGVxdWFsLiIKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fbXUsIHNlbGYuX3NpZ21hKSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYne3R5cGUoc2VsZikuX19uYW1lX199KG11PXtzZWxmLl9tdSFyfSwgc2lnbWE9e3NlbGYuX3NpZ21hIXJ9KScKCiAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9tdSwgc2VsZi5fc2lnbWEKCiAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICBzZWxmLl9tdSwgc2VsZi5fc2lnbWEgPSBzdGF0ZQpQSwMEFAAAAAAAAiCjVuY2ssQKLgAACi4AAAkAAABzdHJpbmcucHkiIiJBIGNvbGxlY3Rpb24gb2Ygc3RyaW5nIGNvbnN0YW50cy4KClB1YmxpYyBtb2R1bGUgdmFyaWFibGVzOgoKd2hpdGVzcGFjZSAtLSBhIHN0cmluZyBjb250YWluaW5nIGFsbCBBU0NJSSB3aGl0ZXNwYWNlCmFzY2lpX2xvd2VyY2FzZSAtLSBhIHN0cmluZyBjb250YWluaW5nIGFsbCBBU0NJSSBsb3dlcmNhc2UgbGV0dGVycwphc2NpaV91cHBlcmNhc2UgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgQVNDSUkgdXBwZXJjYXNlIGxldHRlcnMKYXNjaWlfbGV0dGVycyAtLSBhIHN0cmluZyBjb250YWluaW5nIGFsbCBBU0NJSSBsZXR0ZXJzCmRpZ2l0cyAtLSBhIHN0cmluZyBjb250YWluaW5nIGFsbCBBU0NJSSBkZWNpbWFsIGRpZ2l0cwpoZXhkaWdpdHMgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgQVNDSUkgaGV4YWRlY2ltYWwgZGlnaXRzCm9jdGRpZ2l0cyAtLSBhIHN0cmluZyBjb250YWluaW5nIGFsbCBBU0NJSSBvY3RhbCBkaWdpdHMKcHVuY3R1YXRpb24gLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgQVNDSUkgcHVuY3R1YXRpb24gY2hhcmFjdGVycwpwcmludGFibGUgLS0gYSBzdHJpbmcgY29udGFpbmluZyBhbGwgQVNDSUkgY2hhcmFjdGVycyBjb25zaWRlcmVkIHByaW50YWJsZQoKIiIiCgpfX2FsbF9fID0gWyJhc2NpaV9sZXR0ZXJzIiwgImFzY2lpX2xvd2VyY2FzZSIsICJhc2NpaV91cHBlcmNhc2UiLCAiY2Fwd29yZHMiLAogICAgICAgICAgICJkaWdpdHMiLCAiaGV4ZGlnaXRzIiwgIm9jdGRpZ2l0cyIsICJwcmludGFibGUiLCAicHVuY3R1YXRpb24iLAogICAgICAgICAgICJ3aGl0ZXNwYWNlIiwgIkZvcm1hdHRlciIsICJUZW1wbGF0ZSJdCgppbXBvcnQgX3N0cmluZwoKIyBTb21lIHN0cmluZ3MgZm9yIGN0eXBlLXN0eWxlIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbgp3aGl0ZXNwYWNlID0gJyBcdFxuXHJcdlxmJwphc2NpaV9sb3dlcmNhc2UgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCmFzY2lpX3VwcGVyY2FzZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKYXNjaWlfbGV0dGVycyA9IGFzY2lpX2xvd2VyY2FzZSArIGFzY2lpX3VwcGVyY2FzZQpkaWdpdHMgPSAnMDEyMzQ1Njc4OScKaGV4ZGlnaXRzID0gZGlnaXRzICsgJ2FiY2RlZicgKyAnQUJDREVGJwpvY3RkaWdpdHMgPSAnMDEyMzQ1NjcnCnB1bmN0dWF0aW9uID0gciIiIiEiIyQlJicoKSorLC0uLzo7PD0+P0BbXF1eX2B7fH1+IiIiCnByaW50YWJsZSA9IGRpZ2l0cyArIGFzY2lpX2xldHRlcnMgKyBwdW5jdHVhdGlvbiArIHdoaXRlc3BhY2UKCiMgRnVuY3Rpb25zIHdoaWNoIGFyZW4ndCBhdmFpbGFibGUgYXMgc3RyaW5nIG1ldGhvZHMuCgojIENhcGl0YWxpemUgdGhlIHdvcmRzIGluIGEgc3RyaW5nLCBlLmcuICIgYUJjICBkRWYgIiAtPiAiQWJjIERlZiIuCmRlZiBjYXB3b3JkcyhzLCBzZXA9Tm9uZSk6CiAgICAiIiJjYXB3b3JkcyhzIFssc2VwXSkgLT4gc3RyaW5nCgogICAgU3BsaXQgdGhlIGFyZ3VtZW50IGludG8gd29yZHMgdXNpbmcgc3BsaXQsIGNhcGl0YWxpemUgZWFjaAogICAgd29yZCB1c2luZyBjYXBpdGFsaXplLCBhbmQgam9pbiB0aGUgY2FwaXRhbGl6ZWQgd29yZHMgdXNpbmcKICAgIGpvaW4uICBJZiB0aGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHNlcCBpcyBhYnNlbnQgb3IgTm9uZSwKICAgIHJ1bnMgb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZCBieSBhIHNpbmdsZSBzcGFjZQogICAgYW5kIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgYXJlIHJlbW92ZWQsIG90aGVyd2lzZQogICAgc2VwIGlzIHVzZWQgdG8gc3BsaXQgYW5kIGpvaW4gdGhlIHdvcmRzLgoKICAgICIiIgogICAgcmV0dXJuIChzZXAgb3IgJyAnKS5qb2luKG1hcChzdHIuY2FwaXRhbGl6ZSwgcy5zcGxpdChzZXApKSkKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwppbXBvcnQgcmUgYXMgX3JlCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwIGFzIF9DaGFpbk1hcAoKX3NlbnRpbmVsX2RpY3QgPSB7fQoKY2xhc3MgVGVtcGxhdGU6CiAgICAiIiJBIHN0cmluZyBjbGFzcyBmb3Igc3VwcG9ydGluZyAkLXN1YnN0aXR1dGlvbnMuIiIiCgogICAgZGVsaW1pdGVyID0gJyQnCiAgICAjIHInW2Etel0nIG1hdGNoZXMgdG8gbm9uLUFTQ0lJIGxldHRlcnMgd2hlbiB1c2VkIHdpdGggSUdOT1JFQ0FTRSwgYnV0CiAgICAjIHdpdGhvdXQgdGhlIEFTQ0lJIGZsYWcuICBXZSBjYW4ndCBhZGQgcmUuQVNDSUkgdG8gZmxhZ3MgYmVjYXVzZSBvZgogICAgIyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgU28gd2UgdXNlIHRoZSA/YSBsb2NhbCBmbGFnIGFuZCBbYS16XSBwYXR0ZXJuLgogICAgIyBTZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMTY3MgogICAgaWRwYXR0ZXJuID0gcicoP2E6W19hLXpdW19hLXowLTldKiknCiAgICBicmFjZWlkcGF0dGVybiA9IE5vbmUKICAgIGZsYWdzID0gX3JlLklHTk9SRUNBU0UKCiAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCkKICAgICAgICBpZiAncGF0dGVybicgaW4gY2xzLl9fZGljdF9fOgogICAgICAgICAgICBwYXR0ZXJuID0gY2xzLnBhdHRlcm4KICAgICAgICBlbHNlOgogICAgICAgICAgICBkZWxpbSA9IF9yZS5lc2NhcGUoY2xzLmRlbGltaXRlcikKICAgICAgICAgICAgaWQgPSBjbHMuaWRwYXR0ZXJuCiAgICAgICAgICAgIGJpZCA9IGNscy5icmFjZWlkcGF0dGVybiBvciBjbHMuaWRwYXR0ZXJuCiAgICAgICAgICAgIHBhdHRlcm4gPSBmciIiIgogICAgICAgICAgICB7ZGVsaW19KD86CiAgICAgICAgICAgICAgKD9QPGVzY2FwZWQ+e2RlbGltfSkgIHwgICAjIEVzY2FwZSBzZXF1ZW5jZSBvZiB0d28gZGVsaW1pdGVycwogICAgICAgICAgICAgICg/UDxuYW1lZD57aWR9KSAgICAgICB8ICAgIyBkZWxpbWl0ZXIgYW5kIGEgUHl0aG9uIGlkZW50aWZpZXIKICAgICAgICAgICAgICB7eyg/UDxicmFjZWQ+e2JpZH0pfX0gfCAgICMgZGVsaW1pdGVyIGFuZCBhIGJyYWNlZCBpZGVudGlmaWVyCiAgICAgICAgICAgICAgKD9QPGludmFsaWQ+KSAgICAgICAgICAgICAjIE90aGVyIGlsbC1mb3JtZWQgZGVsaW1pdGVyIGV4cHJzCiAgICAgICAgICAgICkKICAgICAgICAgICAgIiIiCiAgICAgICAgY2xzLnBhdHRlcm4gPSBfcmUuY29tcGlsZShwYXR0ZXJuLCBjbHMuZmxhZ3MgfCBfcmUuVkVSQk9TRSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGVtcGxhdGUpOgogICAgICAgIHNlbGYudGVtcGxhdGUgPSB0ZW1wbGF0ZQoKICAgICMgU2VhcmNoIGZvciAkJCwgJGlkZW50aWZpZXIsICR7aWRlbnRpZmllcn0sIGFuZCBhbnkgYmFyZSAkJ3MKCiAgICBkZWYgX2ludmFsaWQoc2VsZiwgbW8pOgogICAgICAgIGkgPSBtby5zdGFydCgnaW52YWxpZCcpCiAgICAgICAgbGluZXMgPSBzZWxmLnRlbXBsYXRlWzppXS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgaWYgbm90IGxpbmVzOgogICAgICAgICAgICBjb2xubyA9IDEKICAgICAgICAgICAgbGluZW5vID0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbG5vID0gaSAtIGxlbignJy5qb2luKGxpbmVzWzotMV0pKQogICAgICAgICAgICBsaW5lbm8gPSBsZW4obGluZXMpCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBwbGFjZWhvbGRlciBpbiBzdHJpbmc6IGxpbmUgJWQsIGNvbCAlZCcgJQogICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmVubywgY29sbm8pKQoKICAgIGRlZiBzdWJzdGl0dXRlKHNlbGYsIG1hcHBpbmc9X3NlbnRpbmVsX2RpY3QsIC8sICoqa3dzKToKICAgICAgICBpZiBtYXBwaW5nIGlzIF9zZW50aW5lbF9kaWN0OgogICAgICAgICAgICBtYXBwaW5nID0ga3dzCiAgICAgICAgZWxpZiBrd3M6CiAgICAgICAgICAgIG1hcHBpbmcgPSBfQ2hhaW5NYXAoa3dzLCBtYXBwaW5nKQogICAgICAgICMgSGVscGVyIGZ1bmN0aW9uIGZvciAuc3ViKCkKICAgICAgICBkZWYgY29udmVydChtbyk6CiAgICAgICAgICAgICMgQ2hlY2sgdGhlIG1vc3QgY29tbW9uIHBhdGggZmlyc3QuCiAgICAgICAgICAgIG5hbWVkID0gbW8uZ3JvdXAoJ25hbWVkJykgb3IgbW8uZ3JvdXAoJ2JyYWNlZCcpCiAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmV0dXJuIHN0cihtYXBwaW5nW25hbWVkXSkKICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2VzY2FwZWQnKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlbGltaXRlcgogICAgICAgICAgICBpZiBtby5ncm91cCgnaW52YWxpZCcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5faW52YWxpZChtbykKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5yZWNvZ25pemVkIG5hbWVkIGdyb3VwIGluIHBhdHRlcm4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0dGVybikKICAgICAgICByZXR1cm4gc2VsZi5wYXR0ZXJuLnN1Yihjb252ZXJ0LCBzZWxmLnRlbXBsYXRlKQoKICAgIGRlZiBzYWZlX3N1YnN0aXR1dGUoc2VsZiwgbWFwcGluZz1fc2VudGluZWxfZGljdCwgLywgKiprd3MpOgogICAgICAgIGlmIG1hcHBpbmcgaXMgX3NlbnRpbmVsX2RpY3Q6CiAgICAgICAgICAgIG1hcHBpbmcgPSBrd3MKICAgICAgICBlbGlmIGt3czoKICAgICAgICAgICAgbWFwcGluZyA9IF9DaGFpbk1hcChrd3MsIG1hcHBpbmcpCiAgICAgICAgIyBIZWxwZXIgZnVuY3Rpb24gZm9yIC5zdWIoKQogICAgICAgIGRlZiBjb252ZXJ0KG1vKToKICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgaWYgbmFtZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihtYXBwaW5nW25hbWVkXSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW8uZ3JvdXAoKQogICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVsaW1pdGVyCiAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdpbnZhbGlkJykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gbW8uZ3JvdXAoKQogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbml6ZWQgbmFtZWQgZ3JvdXAgaW4gcGF0dGVybicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXR0ZXJuKQogICAgICAgIHJldHVybiBzZWxmLnBhdHRlcm4uc3ViKGNvbnZlcnQsIHNlbGYudGVtcGxhdGUpCgogICAgZGVmIGlzX3ZhbGlkKHNlbGYpOgogICAgICAgIGZvciBtbyBpbiBzZWxmLnBhdHRlcm4uZmluZGl0ZXIoc2VsZi50ZW1wbGF0ZSk6CiAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdpbnZhbGlkJykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgaWYgKG1vLmdyb3VwKCduYW1lZCcpIGlzIE5vbmUKICAgICAgICAgICAgICAgIGFuZCBtby5ncm91cCgnYnJhY2VkJykgaXMgTm9uZQogICAgICAgICAgICAgICAgYW5kIG1vLmdyb3VwKCdlc2NhcGVkJykgaXMgTm9uZSk6CiAgICAgICAgICAgICAgICAjIElmIGFsbCB0aGUgZ3JvdXBzIGFyZSBOb25lLCB0aGVyZSBtdXN0IGJlCiAgICAgICAgICAgICAgICAjIGFub3RoZXIgZ3JvdXAgd2UncmUgbm90IGV4cGVjdGluZwogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5yZWNvZ25pemVkIG5hbWVkIGdyb3VwIGluIHBhdHRlcm4nLAogICAgICAgICAgICAgICAgICAgIHNlbGYucGF0dGVybikKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBnZXRfaWRlbnRpZmllcnMoc2VsZik6CiAgICAgICAgaWRzID0gW10KICAgICAgICBmb3IgbW8gaW4gc2VsZi5wYXR0ZXJuLmZpbmRpdGVyKHNlbGYudGVtcGxhdGUpOgogICAgICAgICAgICBuYW1lZCA9IG1vLmdyb3VwKCduYW1lZCcpIG9yIG1vLmdyb3VwKCdicmFjZWQnKQogICAgICAgICAgICBpZiBuYW1lZCBpcyBub3QgTm9uZSBhbmQgbmFtZWQgbm90IGluIGlkczoKICAgICAgICAgICAgICAgICMgYWRkIGEgbmFtZWQgZ3JvdXAgb25seSB0aGUgZmlyc3QgdGltZSBpdCBhcHBlYXJzCiAgICAgICAgICAgICAgICBpZHMuYXBwZW5kKG5hbWVkKQogICAgICAgICAgICBlbGlmIChuYW1lZCBpcyBOb25lCiAgICAgICAgICAgICAgICBhbmQgbW8uZ3JvdXAoJ2ludmFsaWQnKSBpcyBOb25lCiAgICAgICAgICAgICAgICBhbmQgbW8uZ3JvdXAoJ2VzY2FwZWQnKSBpcyBOb25lKToKICAgICAgICAgICAgICAgICMgSWYgYWxsIHRoZSBncm91cHMgYXJlIE5vbmUsIHRoZXJlIG11c3QgYmUKICAgICAgICAgICAgICAgICMgYW5vdGhlciBncm91cCB3ZSdyZSBub3QgZXhwZWN0aW5nCiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbml6ZWQgbmFtZWQgZ3JvdXAgaW4gcGF0dGVybicsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXR0ZXJuKQogICAgICAgIHJldHVybiBpZHMKCiMgSW5pdGlhbGl6ZSBUZW1wbGF0ZS5wYXR0ZXJuLiAgX19pbml0X3N1YmNsYXNzX18oKSBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZAojIG9ubHkgZm9yIHN1YmNsYXNzZXMsIG5vdCBmb3IgdGhlIFRlbXBsYXRlIGNsYXNzIGl0c2VsZi4KVGVtcGxhdGUuX19pbml0X3N1YmNsYXNzX18oKQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRoZSBGb3JtYXR0ZXIgY2xhc3MKIyBzZWUgUEVQIDMxMDEgZm9yIGRldGFpbHMgYW5kIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcwoKIyBUaGUgaGFyZCBwYXJ0cyBhcmUgcmV1c2VkIGZyb20gdGhlIEMgaW1wbGVtZW50YXRpb24uICBUaGV5J3JlIGV4cG9zZWQgYXMgIl8iCiMgcHJlZml4ZWQgbWV0aG9kcyBvZiBzdHIuCgojIFRoZSBvdmVyYWxsIHBhcnNlciBpcyBpbXBsZW1lbnRlZCBpbiBfc3RyaW5nLmZvcm1hdHRlcl9wYXJzZXIuCiMgVGhlIGZpZWxkIG5hbWUgcGFyc2VyIGlzIGltcGxlbWVudGVkIGluIF9zdHJpbmcuZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXQKCmNsYXNzIEZvcm1hdHRlcjoKICAgIGRlZiBmb3JtYXQoc2VsZiwgZm9ybWF0X3N0cmluZywgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICByZXR1cm4gc2VsZi52Zm9ybWF0KGZvcm1hdF9zdHJpbmcsIGFyZ3MsIGt3YXJncykKCiAgICBkZWYgdmZvcm1hdChzZWxmLCBmb3JtYXRfc3RyaW5nLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgIHVzZWRfYXJncyA9IHNldCgpCiAgICAgICAgcmVzdWx0LCBfID0gc2VsZi5fdmZvcm1hdChmb3JtYXRfc3RyaW5nLCBhcmdzLCBrd2FyZ3MsIHVzZWRfYXJncywgMikKICAgICAgICBzZWxmLmNoZWNrX3VudXNlZF9hcmdzKHVzZWRfYXJncywgYXJncywga3dhcmdzKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX3Zmb3JtYXQoc2VsZiwgZm9ybWF0X3N0cmluZywgYXJncywga3dhcmdzLCB1c2VkX2FyZ3MsIHJlY3Vyc2lvbl9kZXB0aCwKICAgICAgICAgICAgICAgICBhdXRvX2FyZ19pbmRleD0wKToKICAgICAgICBpZiByZWN1cnNpb25fZGVwdGggPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNYXggc3RyaW5nIHJlY3Vyc2lvbiBleGNlZWRlZCcpCiAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICBmb3IgbGl0ZXJhbF90ZXh0LCBmaWVsZF9uYW1lLCBmb3JtYXRfc3BlYywgY29udmVyc2lvbiBpbiBcCiAgICAgICAgICAgICAgICBzZWxmLnBhcnNlKGZvcm1hdF9zdHJpbmcpOgoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGxpdGVyYWwgdGV4dAogICAgICAgICAgICBpZiBsaXRlcmFsX3RleHQ6CiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpdGVyYWxfdGV4dCkKCiAgICAgICAgICAgICMgaWYgdGhlcmUncyBhIGZpZWxkLCBvdXRwdXQgaXQKICAgICAgICAgICAgaWYgZmllbGRfbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICMgdGhpcyBpcyBzb21lIG1hcmt1cCwgZmluZCB0aGUgb2JqZWN0IGFuZCBkbwogICAgICAgICAgICAgICAgIyAgdGhlIGZvcm1hdHRpbmcKCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBhcmcgaW5kZXhpbmcgd2hlbiBlbXB0eSBmaWVsZF9uYW1lcyBhcmUgZ2l2ZW4uCiAgICAgICAgICAgICAgICBpZiBmaWVsZF9uYW1lID09ICcnOgogICAgICAgICAgICAgICAgICAgIGlmIGF1dG9fYXJnX2luZGV4IGlzIEZhbHNlOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYW5ub3Qgc3dpdGNoIGZyb20gbWFudWFsIGZpZWxkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWNhdGlvbiB0byBhdXRvbWF0aWMgZmllbGQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXJpbmcnKQogICAgICAgICAgICAgICAgICAgIGZpZWxkX25hbWUgPSBzdHIoYXV0b19hcmdfaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgYXV0b19hcmdfaW5kZXggKz0gMQogICAgICAgICAgICAgICAgZWxpZiBmaWVsZF9uYW1lLmlzZGlnaXQoKToKICAgICAgICAgICAgICAgICAgICBpZiBhdXRvX2FyZ19pbmRleDoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHN3aXRjaCBmcm9tIG1hbnVhbCBmaWVsZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZmljYXRpb24gdG8gYXV0b21hdGljIGZpZWxkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtYmVyaW5nJykKICAgICAgICAgICAgICAgICAgICAjIGRpc2FibGUgYXV0byBhcmcgaW5jcmVtZW50aW5nLCBpZiBpdCBnZXRzCiAgICAgICAgICAgICAgICAgICAgIyB1c2VkIGxhdGVyIG9uLCB0aGVuIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZAogICAgICAgICAgICAgICAgICAgIGF1dG9fYXJnX2luZGV4ID0gRmFsc2UKCiAgICAgICAgICAgICAgICAjIGdpdmVuIHRoZSBmaWVsZF9uYW1lLCBmaW5kIHRoZSBvYmplY3QgaXQgcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgIyAgYW5kIHRoZSBhcmd1bWVudCBpdCBjYW1lIGZyb20KICAgICAgICAgICAgICAgIG9iaiwgYXJnX3VzZWQgPSBzZWxmLmdldF9maWVsZChmaWVsZF9uYW1lLCBhcmdzLCBrd2FyZ3MpCiAgICAgICAgICAgICAgICB1c2VkX2FyZ3MuYWRkKGFyZ191c2VkKQoKICAgICAgICAgICAgICAgICMgZG8gYW55IGNvbnZlcnNpb24gb24gdGhlIHJlc3VsdGluZyBvYmplY3QKICAgICAgICAgICAgICAgIG9iaiA9IHNlbGYuY29udmVydF9maWVsZChvYmosIGNvbnZlcnNpb24pCgogICAgICAgICAgICAgICAgIyBleHBhbmQgdGhlIGZvcm1hdCBzcGVjLCBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjLCBhdXRvX2FyZ19pbmRleCA9IHNlbGYuX3Zmb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWMsIGFyZ3MsIGt3YXJncywKICAgICAgICAgICAgICAgICAgICB1c2VkX2FyZ3MsIHJlY3Vyc2lvbl9kZXB0aC0xLAogICAgICAgICAgICAgICAgICAgIGF1dG9fYXJnX2luZGV4PWF1dG9fYXJnX2luZGV4KQoKICAgICAgICAgICAgICAgICMgZm9ybWF0IHRoZSBvYmplY3QgYW5kIGFwcGVuZCB0byB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNlbGYuZm9ybWF0X2ZpZWxkKG9iaiwgZm9ybWF0X3NwZWMpKQoKICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpLCBhdXRvX2FyZ19pbmRleAoKCiAgICBkZWYgZ2V0X3ZhbHVlKHNlbGYsIGtleSwgYXJncywga3dhcmdzKToKICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgaW50KToKICAgICAgICAgICAgcmV0dXJuIGFyZ3Nba2V5XQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBrd2FyZ3Nba2V5XQoKCiAgICBkZWYgY2hlY2tfdW51c2VkX2FyZ3Moc2VsZiwgdXNlZF9hcmdzLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgIHBhc3MKCgogICAgZGVmIGZvcm1hdF9maWVsZChzZWxmLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOgogICAgICAgIHJldHVybiBmb3JtYXQodmFsdWUsIGZvcm1hdF9zcGVjKQoKCiAgICBkZWYgY29udmVydF9maWVsZChzZWxmLCB2YWx1ZSwgY29udmVyc2lvbik6CiAgICAgICAgIyBkbyBhbnkgY29udmVyc2lvbiBvbiB0aGUgcmVzdWx0aW5nIG9iamVjdAogICAgICAgIGlmIGNvbnZlcnNpb24gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgZWxpZiBjb252ZXJzaW9uID09ICdzJzoKICAgICAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkKICAgICAgICBlbGlmIGNvbnZlcnNpb24gPT0gJ3InOgogICAgICAgICAgICByZXR1cm4gcmVwcih2YWx1ZSkKICAgICAgICBlbGlmIGNvbnZlcnNpb24gPT0gJ2EnOgogICAgICAgICAgICByZXR1cm4gYXNjaWkodmFsdWUpCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBjb252ZXJzaW9uIHNwZWNpZmllciB7MCFzfSIuZm9ybWF0KGNvbnZlcnNpb24pKQoKCiAgICAjIHJldHVybnMgYW4gaXRlcmFibGUgdGhhdCBjb250YWlucyB0dXBsZXMgb2YgdGhlIGZvcm06CiAgICAjIChsaXRlcmFsX3RleHQsIGZpZWxkX25hbWUsIGZvcm1hdF9zcGVjLCBjb252ZXJzaW9uKQogICAgIyBsaXRlcmFsX3RleHQgY2FuIGJlIHplcm8gbGVuZ3RoCiAgICAjIGZpZWxkX25hbWUgY2FuIGJlIE5vbmUsIGluIHdoaWNoIGNhc2UgdGhlcmUncyBubwogICAgIyAgb2JqZWN0IHRvIGZvcm1hdCBhbmQgb3V0cHV0CiAgICAjIGlmIGZpZWxkX25hbWUgaXMgbm90IE5vbmUsIGl0IGlzIGxvb2tlZCB1cCwgZm9ybWF0dGVkCiAgICAjICB3aXRoIGZvcm1hdF9zcGVjIGFuZCBjb252ZXJzaW9uIGFuZCB0aGVuIHVzZWQKICAgIGRlZiBwYXJzZShzZWxmLCBmb3JtYXRfc3RyaW5nKToKICAgICAgICByZXR1cm4gX3N0cmluZy5mb3JtYXR0ZXJfcGFyc2VyKGZvcm1hdF9zdHJpbmcpCgoKICAgICMgZ2l2ZW4gYSBmaWVsZF9uYW1lLCBmaW5kIHRoZSBvYmplY3QgaXQgcmVmZXJlbmNlcy4KICAgICMgIGZpZWxkX25hbWU6ICAgdGhlIGZpZWxkIGJlaW5nIGxvb2tlZCB1cCwgZS5nLiAiMC5uYW1lIgogICAgIyAgICAgICAgICAgICAgICAgb3IgImxvb2t1cFszXSIKICAgICMgIHVzZWRfYXJnczogICAgYSBzZXQgb2Ygd2hpY2ggYXJncyBoYXZlIGJlZW4gdXNlZAogICAgIyAgYXJncywga3dhcmdzOiBhcyBwYXNzZWQgaW4gdG8gdmZvcm1hdAogICAgZGVmIGdldF9maWVsZChzZWxmLCBmaWVsZF9uYW1lLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgIGZpcnN0LCByZXN0ID0gX3N0cmluZy5mb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdChmaWVsZF9uYW1lKQoKICAgICAgICBvYmogPSBzZWxmLmdldF92YWx1ZShmaXJzdCwgYXJncywga3dhcmdzKQoKICAgICAgICAjIGxvb3AgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGUgZmllbGRfbmFtZSwgZG9pbmcKICAgICAgICAjICBnZXRhdHRyIG9yIGdldGl0ZW0gYXMgbmVlZGVkCiAgICAgICAgZm9yIGlzX2F0dHIsIGkgaW4gcmVzdDoKICAgICAgICAgICAgaWYgaXNfYXR0cjoKICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCBpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgb2JqID0gb2JqW2ldCgogICAgICAgIHJldHVybiBvYmosIGZpcnN0ClBLAwQUAAAAAAACIKNWVeg/Q3UyAAB1MgAADQAAAHN0cmluZ3ByZXAucHkjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgbWtzdHJpbmdwcmVwLnB5LiBETyBOT1QgRURJVC4KIiIiTGlicmFyeSB0aGF0IGV4cG9zZXMgdmFyaW91cyB0YWJsZXMgZm91bmQgaW4gdGhlIFN0cmluZ1ByZXAgUkZDIDM0NTQuCgpUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIHRhYmxlczogc2V0cywgZm9yIHdoaWNoIGEgbWVtYmVyIHRlc3QgaXMgcHJvdmlkZWQsCmFuZCBtYXBwaW5ncywgZm9yIHdoaWNoIGEgbWFwcGluZyBmdW5jdGlvbiBpcyBwcm92aWRlZC4KIiIiCgpmcm9tIHVuaWNvZGVkYXRhIGltcG9ydCB1Y2RfM18yXzAgYXMgdW5pY29kZWRhdGEKCmFzc2VydCB1bmljb2RlZGF0YS51bmlkYXRhX3ZlcnNpb24gPT0gJzMuMi4wJwoKZGVmIGluX3RhYmxlX2ExKGNvZGUpOgogICAgaWYgdW5pY29kZWRhdGEuY2F0ZWdvcnkoY29kZSkgIT0gJ0NuJzogcmV0dXJuIEZhbHNlCiAgICBjID0gb3JkKGNvZGUpCiAgICBpZiAweEZERDAgPD0gYyA8IDB4RkRGMDogcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gKGMgJiAweEZGRkYpIG5vdCBpbiAoMHhGRkZFLCAweEZGRkYpCgoKYjFfc2V0ID0gc2V0KFsxNzMsIDg0NywgNjE1MCwgNjE1NSwgNjE1NiwgNjE1NywgODIwMywgODIwNCwgODIwNSwgODI4OCwgNjUyNzldICsgbGlzdChyYW5nZSg2NTAyNCw2NTA0MCkpKQpkZWYgaW5fdGFibGVfYjEoY29kZSk6CiAgICByZXR1cm4gb3JkKGNvZGUpIGluIGIxX3NldAoKCmIzX2V4Y2VwdGlvbnMgPSB7CjB4YjU6J1x1MDNiYycsIDB4ZGY6J3NzJywgMHgxMzA6J2lcdTAzMDcnLCAweDE0OTonXHUwMmJjbicsCjB4MTdmOidzJywgMHgxZjA6J2pcdTAzMGMnLCAweDM0NTonXHUwM2I5JywgMHgzN2E6JyBcdTAzYjknLAoweDM5MDonXHUwM2I5XHUwMzA4XHUwMzAxJywgMHgzYjA6J1x1MDNjNVx1MDMwOFx1MDMwMScsIDB4M2MyOidcdTAzYzMnLCAweDNkMDonXHUwM2IyJywKMHgzZDE6J1x1MDNiOCcsIDB4M2QyOidcdTAzYzUnLCAweDNkMzonXHUwM2NkJywgMHgzZDQ6J1x1MDNjYicsCjB4M2Q1OidcdTAzYzYnLCAweDNkNjonXHUwM2MwJywgMHgzZjA6J1x1MDNiYScsIDB4M2YxOidcdTAzYzEnLAoweDNmMjonXHUwM2MzJywgMHgzZjU6J1x1MDNiNScsIDB4NTg3OidcdTA1NjVcdTA1ODInLCAweDFlOTY6J2hcdTAzMzEnLAoweDFlOTc6J3RcdTAzMDgnLCAweDFlOTg6J3dcdTAzMGEnLCAweDFlOTk6J3lcdTAzMGEnLCAweDFlOWE6J2FcdTAyYmUnLAoweDFlOWI6J1x1MWU2MScsIDB4MWY1MDonXHUwM2M1XHUwMzEzJywgMHgxZjUyOidcdTAzYzVcdTAzMTNcdTAzMDAnLCAweDFmNTQ6J1x1MDNjNVx1MDMxM1x1MDMwMScsCjB4MWY1NjonXHUwM2M1XHUwMzEzXHUwMzQyJywgMHgxZjgwOidcdTFmMDBcdTAzYjknLCAweDFmODE6J1x1MWYwMVx1MDNiOScsIDB4MWY4MjonXHUxZjAyXHUwM2I5JywKMHgxZjgzOidcdTFmMDNcdTAzYjknLCAweDFmODQ6J1x1MWYwNFx1MDNiOScsIDB4MWY4NTonXHUxZjA1XHUwM2I5JywgMHgxZjg2OidcdTFmMDZcdTAzYjknLAoweDFmODc6J1x1MWYwN1x1MDNiOScsIDB4MWY4ODonXHUxZjAwXHUwM2I5JywgMHgxZjg5OidcdTFmMDFcdTAzYjknLCAweDFmOGE6J1x1MWYwMlx1MDNiOScsCjB4MWY4YjonXHUxZjAzXHUwM2I5JywgMHgxZjhjOidcdTFmMDRcdTAzYjknLCAweDFmOGQ6J1x1MWYwNVx1MDNiOScsIDB4MWY4ZTonXHUxZjA2XHUwM2I5JywKMHgxZjhmOidcdTFmMDdcdTAzYjknLCAweDFmOTA6J1x1MWYyMFx1MDNiOScsIDB4MWY5MTonXHUxZjIxXHUwM2I5JywgMHgxZjkyOidcdTFmMjJcdTAzYjknLAoweDFmOTM6J1x1MWYyM1x1MDNiOScsIDB4MWY5NDonXHUxZjI0XHUwM2I5JywgMHgxZjk1OidcdTFmMjVcdTAzYjknLCAweDFmOTY6J1x1MWYyNlx1MDNiOScsCjB4MWY5NzonXHUxZjI3XHUwM2I5JywgMHgxZjk4OidcdTFmMjBcdTAzYjknLCAweDFmOTk6J1x1MWYyMVx1MDNiOScsIDB4MWY5YTonXHUxZjIyXHUwM2I5JywKMHgxZjliOidcdTFmMjNcdTAzYjknLCAweDFmOWM6J1x1MWYyNFx1MDNiOScsIDB4MWY5ZDonXHUxZjI1XHUwM2I5JywgMHgxZjllOidcdTFmMjZcdTAzYjknLAoweDFmOWY6J1x1MWYyN1x1MDNiOScsIDB4MWZhMDonXHUxZjYwXHUwM2I5JywgMHgxZmExOidcdTFmNjFcdTAzYjknLCAweDFmYTI6J1x1MWY2Mlx1MDNiOScsCjB4MWZhMzonXHUxZjYzXHUwM2I5JywgMHgxZmE0OidcdTFmNjRcdTAzYjknLCAweDFmYTU6J1x1MWY2NVx1MDNiOScsIDB4MWZhNjonXHUxZjY2XHUwM2I5JywKMHgxZmE3OidcdTFmNjdcdTAzYjknLCAweDFmYTg6J1x1MWY2MFx1MDNiOScsIDB4MWZhOTonXHUxZjYxXHUwM2I5JywgMHgxZmFhOidcdTFmNjJcdTAzYjknLAoweDFmYWI6J1x1MWY2M1x1MDNiOScsIDB4MWZhYzonXHUxZjY0XHUwM2I5JywgMHgxZmFkOidcdTFmNjVcdTAzYjknLCAweDFmYWU6J1x1MWY2Nlx1MDNiOScsCjB4MWZhZjonXHUxZjY3XHUwM2I5JywgMHgxZmIyOidcdTFmNzBcdTAzYjknLCAweDFmYjM6J1x1MDNiMVx1MDNiOScsIDB4MWZiNDonXHUwM2FjXHUwM2I5JywKMHgxZmI2OidcdTAzYjFcdTAzNDInLCAweDFmYjc6J1x1MDNiMVx1MDM0Mlx1MDNiOScsIDB4MWZiYzonXHUwM2IxXHUwM2I5JywgMHgxZmJlOidcdTAzYjknLAoweDFmYzI6J1x1MWY3NFx1MDNiOScsIDB4MWZjMzonXHUwM2I3XHUwM2I5JywgMHgxZmM0OidcdTAzYWVcdTAzYjknLCAweDFmYzY6J1x1MDNiN1x1MDM0MicsCjB4MWZjNzonXHUwM2I3XHUwMzQyXHUwM2I5JywgMHgxZmNjOidcdTAzYjdcdTAzYjknLCAweDFmZDI6J1x1MDNiOVx1MDMwOFx1MDMwMCcsIDB4MWZkMzonXHUwM2I5XHUwMzA4XHUwMzAxJywKMHgxZmQ2OidcdTAzYjlcdTAzNDInLCAweDFmZDc6J1x1MDNiOVx1MDMwOFx1MDM0MicsIDB4MWZlMjonXHUwM2M1XHUwMzA4XHUwMzAwJywgMHgxZmUzOidcdTAzYzVcdTAzMDhcdTAzMDEnLAoweDFmZTQ6J1x1MDNjMVx1MDMxMycsIDB4MWZlNjonXHUwM2M1XHUwMzQyJywgMHgxZmU3OidcdTAzYzVcdTAzMDhcdTAzNDInLCAweDFmZjI6J1x1MWY3Y1x1MDNiOScsCjB4MWZmMzonXHUwM2M5XHUwM2I5JywgMHgxZmY0OidcdTAzY2VcdTAzYjknLCAweDFmZjY6J1x1MDNjOVx1MDM0MicsIDB4MWZmNzonXHUwM2M5XHUwMzQyXHUwM2I5JywKMHgxZmZjOidcdTAzYzlcdTAzYjknLCAweDIwYTg6J3JzJywgMHgyMTAyOidjJywgMHgyMTAzOidceGIwYycsCjB4MjEwNzonXHUwMjViJywgMHgyMTA5OidceGIwZicsIDB4MjEwYjonaCcsIDB4MjEwYzonaCcsCjB4MjEwZDonaCcsIDB4MjExMDonaScsIDB4MjExMTonaScsIDB4MjExMjonbCcsCjB4MjExNTonbicsIDB4MjExNjonbm8nLCAweDIxMTk6J3AnLCAweDIxMWE6J3EnLAoweDIxMWI6J3InLCAweDIxMWM6J3InLCAweDIxMWQ6J3InLCAweDIxMjA6J3NtJywKMHgyMTIxOid0ZWwnLCAweDIxMjI6J3RtJywgMHgyMTI0Oid6JywgMHgyMTI4Oid6JywKMHgyMTJjOidiJywgMHgyMTJkOidjJywgMHgyMTMwOidlJywgMHgyMTMxOidmJywKMHgyMTMzOidtJywgMHgyMTNlOidcdTAzYjMnLCAweDIxM2Y6J1x1MDNjMCcsIDB4MjE0NTonZCcsCjB4MzM3MTonaHBhJywgMHgzMzczOidhdScsIDB4MzM3NTonb3YnLCAweDMzODA6J3BhJywKMHgzMzgxOiduYScsIDB4MzM4MjonXHUwM2JjYScsIDB4MzM4MzonbWEnLCAweDMzODQ6J2thJywKMHgzMzg1OidrYicsIDB4MzM4NjonbWInLCAweDMzODc6J2diJywgMHgzMzhhOidwZicsCjB4MzM4YjonbmYnLCAweDMzOGM6J1x1MDNiY2YnLCAweDMzOTA6J2h6JywgMHgzMzkxOidraHonLAoweDMzOTI6J21oeicsIDB4MzM5MzonZ2h6JywgMHgzMzk0Oid0aHonLCAweDMzYTk6J3BhJywKMHgzM2FhOidrcGEnLCAweDMzYWI6J21wYScsIDB4MzNhYzonZ3BhJywgMHgzM2I0OidwdicsCjB4MzNiNTonbnYnLCAweDMzYjY6J1x1MDNiY3YnLCAweDMzYjc6J212JywgMHgzM2I4OidrdicsCjB4MzNiOTonbXYnLCAweDMzYmE6J3B3JywgMHgzM2JiOidudycsIDB4MzNiYzonXHUwM2JjdycsCjB4MzNiZDonbXcnLCAweDMzYmU6J2t3JywgMHgzM2JmOidtdycsIDB4MzNjMDona1x1MDNjOScsCjB4MzNjMTonbVx1MDNjOScsIDB4MzNjMzonYnEnLCAweDMzYzY6J2NcdTIyMTVrZycsIDB4MzNjNzonY28uJywKMHgzM2M4OidkYicsIDB4MzNjOTonZ3knLCAweDMzY2I6J2hwJywgMHgzM2NkOidraycsCjB4MzNjZTona20nLCAweDMzZDc6J3BoJywgMHgzM2Q5OidwcG0nLCAweDMzZGE6J3ByJywKMHgzM2RjOidzdicsIDB4MzNkZDond2InLCAweGZiMDA6J2ZmJywgMHhmYjAxOidmaScsCjB4ZmIwMjonZmwnLCAweGZiMDM6J2ZmaScsIDB4ZmIwNDonZmZsJywgMHhmYjA1OidzdCcsCjB4ZmIwNjonc3QnLCAweGZiMTM6J1x1MDU3NFx1MDU3NicsIDB4ZmIxNDonXHUwNTc0XHUwNTY1JywgMHhmYjE1OidcdTA1NzRcdTA1NmInLAoweGZiMTY6J1x1MDU3ZVx1MDU3NicsIDB4ZmIxNzonXHUwNTc0XHUwNTZkJywgMHgxZDQwMDonYScsIDB4MWQ0MDE6J2InLAoweDFkNDAyOidjJywgMHgxZDQwMzonZCcsIDB4MWQ0MDQ6J2UnLCAweDFkNDA1OidmJywKMHgxZDQwNjonZycsIDB4MWQ0MDc6J2gnLCAweDFkNDA4OidpJywgMHgxZDQwOTonaicsCjB4MWQ0MGE6J2snLCAweDFkNDBiOidsJywgMHgxZDQwYzonbScsIDB4MWQ0MGQ6J24nLAoweDFkNDBlOidvJywgMHgxZDQwZjoncCcsIDB4MWQ0MTA6J3EnLCAweDFkNDExOidyJywKMHgxZDQxMjoncycsIDB4MWQ0MTM6J3QnLCAweDFkNDE0Oid1JywgMHgxZDQxNTondicsCjB4MWQ0MTY6J3cnLCAweDFkNDE3Oid4JywgMHgxZDQxODoneScsIDB4MWQ0MTk6J3onLAoweDFkNDM0OidhJywgMHgxZDQzNTonYicsIDB4MWQ0MzY6J2MnLCAweDFkNDM3OidkJywKMHgxZDQzODonZScsIDB4MWQ0Mzk6J2YnLCAweDFkNDNhOidnJywgMHgxZDQzYjonaCcsCjB4MWQ0M2M6J2knLCAweDFkNDNkOidqJywgMHgxZDQzZTonaycsIDB4MWQ0M2Y6J2wnLAoweDFkNDQwOidtJywgMHgxZDQ0MTonbicsIDB4MWQ0NDI6J28nLCAweDFkNDQzOidwJywKMHgxZDQ0NDoncScsIDB4MWQ0NDU6J3InLCAweDFkNDQ2OidzJywgMHgxZDQ0NzondCcsCjB4MWQ0NDg6J3UnLCAweDFkNDQ5Oid2JywgMHgxZDQ0YTondycsIDB4MWQ0NGI6J3gnLAoweDFkNDRjOid5JywgMHgxZDQ0ZDoneicsIDB4MWQ0Njg6J2EnLCAweDFkNDY5OidiJywKMHgxZDQ2YTonYycsIDB4MWQ0NmI6J2QnLCAweDFkNDZjOidlJywgMHgxZDQ2ZDonZicsCjB4MWQ0NmU6J2cnLCAweDFkNDZmOidoJywgMHgxZDQ3MDonaScsIDB4MWQ0NzE6J2onLAoweDFkNDcyOidrJywgMHgxZDQ3MzonbCcsIDB4MWQ0NzQ6J20nLCAweDFkNDc1OiduJywKMHgxZDQ3NjonbycsIDB4MWQ0Nzc6J3AnLCAweDFkNDc4OidxJywgMHgxZDQ3OToncicsCjB4MWQ0N2E6J3MnLCAweDFkNDdiOid0JywgMHgxZDQ3YzondScsIDB4MWQ0N2Q6J3YnLAoweDFkNDdlOid3JywgMHgxZDQ3ZjoneCcsIDB4MWQ0ODA6J3knLCAweDFkNDgxOid6JywKMHgxZDQ5YzonYScsIDB4MWQ0OWU6J2MnLCAweDFkNDlmOidkJywgMHgxZDRhMjonZycsCjB4MWQ0YTU6J2onLCAweDFkNGE2OidrJywgMHgxZDRhOTonbicsIDB4MWQ0YWE6J28nLAoweDFkNGFiOidwJywgMHgxZDRhYzoncScsIDB4MWQ0YWU6J3MnLCAweDFkNGFmOid0JywKMHgxZDRiMDondScsIDB4MWQ0YjE6J3YnLCAweDFkNGIyOid3JywgMHgxZDRiMzoneCcsCjB4MWQ0YjQ6J3knLCAweDFkNGI1Oid6JywgMHgxZDRkMDonYScsIDB4MWQ0ZDE6J2InLAoweDFkNGQyOidjJywgMHgxZDRkMzonZCcsIDB4MWQ0ZDQ6J2UnLCAweDFkNGQ1OidmJywKMHgxZDRkNjonZycsIDB4MWQ0ZDc6J2gnLCAweDFkNGQ4OidpJywgMHgxZDRkOTonaicsCjB4MWQ0ZGE6J2snLCAweDFkNGRiOidsJywgMHgxZDRkYzonbScsIDB4MWQ0ZGQ6J24nLAoweDFkNGRlOidvJywgMHgxZDRkZjoncCcsIDB4MWQ0ZTA6J3EnLCAweDFkNGUxOidyJywKMHgxZDRlMjoncycsIDB4MWQ0ZTM6J3QnLCAweDFkNGU0Oid1JywgMHgxZDRlNTondicsCjB4MWQ0ZTY6J3cnLCAweDFkNGU3Oid4JywgMHgxZDRlODoneScsIDB4MWQ0ZTk6J3onLAoweDFkNTA0OidhJywgMHgxZDUwNTonYicsIDB4MWQ1MDc6J2QnLCAweDFkNTA4OidlJywKMHgxZDUwOTonZicsIDB4MWQ1MGE6J2cnLCAweDFkNTBkOidqJywgMHgxZDUwZTonaycsCjB4MWQ1MGY6J2wnLCAweDFkNTEwOidtJywgMHgxZDUxMTonbicsIDB4MWQ1MTI6J28nLAoweDFkNTEzOidwJywgMHgxZDUxNDoncScsIDB4MWQ1MTY6J3MnLCAweDFkNTE3Oid0JywKMHgxZDUxODondScsIDB4MWQ1MTk6J3YnLCAweDFkNTFhOid3JywgMHgxZDUxYjoneCcsCjB4MWQ1MWM6J3knLCAweDFkNTM4OidhJywgMHgxZDUzOTonYicsIDB4MWQ1M2I6J2QnLAoweDFkNTNjOidlJywgMHgxZDUzZDonZicsIDB4MWQ1M2U6J2cnLCAweDFkNTQwOidpJywKMHgxZDU0MTonaicsIDB4MWQ1NDI6J2snLCAweDFkNTQzOidsJywgMHgxZDU0NDonbScsCjB4MWQ1NDY6J28nLCAweDFkNTRhOidzJywgMHgxZDU0YjondCcsIDB4MWQ1NGM6J3UnLAoweDFkNTRkOid2JywgMHgxZDU0ZTondycsIDB4MWQ1NGY6J3gnLCAweDFkNTUwOid5JywKMHgxZDU2YzonYScsIDB4MWQ1NmQ6J2InLCAweDFkNTZlOidjJywgMHgxZDU2ZjonZCcsCjB4MWQ1NzA6J2UnLCAweDFkNTcxOidmJywgMHgxZDU3MjonZycsIDB4MWQ1NzM6J2gnLAoweDFkNTc0OidpJywgMHgxZDU3NTonaicsIDB4MWQ1NzY6J2snLCAweDFkNTc3OidsJywKMHgxZDU3ODonbScsIDB4MWQ1Nzk6J24nLCAweDFkNTdhOidvJywgMHgxZDU3YjoncCcsCjB4MWQ1N2M6J3EnLCAweDFkNTdkOidyJywgMHgxZDU3ZToncycsIDB4MWQ1N2Y6J3QnLAoweDFkNTgwOid1JywgMHgxZDU4MTondicsIDB4MWQ1ODI6J3cnLCAweDFkNTgzOid4JywKMHgxZDU4NDoneScsIDB4MWQ1ODU6J3onLCAweDFkNWEwOidhJywgMHgxZDVhMTonYicsCjB4MWQ1YTI6J2MnLCAweDFkNWEzOidkJywgMHgxZDVhNDonZScsIDB4MWQ1YTU6J2YnLAoweDFkNWE2OidnJywgMHgxZDVhNzonaCcsIDB4MWQ1YTg6J2knLCAweDFkNWE5OidqJywKMHgxZDVhYTonaycsIDB4MWQ1YWI6J2wnLCAweDFkNWFjOidtJywgMHgxZDVhZDonbicsCjB4MWQ1YWU6J28nLCAweDFkNWFmOidwJywgMHgxZDViMDoncScsIDB4MWQ1YjE6J3InLAoweDFkNWIyOidzJywgMHgxZDViMzondCcsIDB4MWQ1YjQ6J3UnLCAweDFkNWI1Oid2JywKMHgxZDViNjondycsIDB4MWQ1Yjc6J3gnLCAweDFkNWI4Oid5JywgMHgxZDViOToneicsCjB4MWQ1ZDQ6J2EnLCAweDFkNWQ1OidiJywgMHgxZDVkNjonYycsIDB4MWQ1ZDc6J2QnLAoweDFkNWQ4OidlJywgMHgxZDVkOTonZicsIDB4MWQ1ZGE6J2cnLCAweDFkNWRiOidoJywKMHgxZDVkYzonaScsIDB4MWQ1ZGQ6J2onLCAweDFkNWRlOidrJywgMHgxZDVkZjonbCcsCjB4MWQ1ZTA6J20nLCAweDFkNWUxOiduJywgMHgxZDVlMjonbycsIDB4MWQ1ZTM6J3AnLAoweDFkNWU0OidxJywgMHgxZDVlNToncicsIDB4MWQ1ZTY6J3MnLCAweDFkNWU3Oid0JywKMHgxZDVlODondScsIDB4MWQ1ZTk6J3YnLCAweDFkNWVhOid3JywgMHgxZDVlYjoneCcsCjB4MWQ1ZWM6J3knLCAweDFkNWVkOid6JywgMHgxZDYwODonYScsIDB4MWQ2MDk6J2InLAoweDFkNjBhOidjJywgMHgxZDYwYjonZCcsIDB4MWQ2MGM6J2UnLCAweDFkNjBkOidmJywKMHgxZDYwZTonZycsIDB4MWQ2MGY6J2gnLCAweDFkNjEwOidpJywgMHgxZDYxMTonaicsCjB4MWQ2MTI6J2snLCAweDFkNjEzOidsJywgMHgxZDYxNDonbScsIDB4MWQ2MTU6J24nLAoweDFkNjE2OidvJywgMHgxZDYxNzoncCcsIDB4MWQ2MTg6J3EnLCAweDFkNjE5OidyJywKMHgxZDYxYToncycsIDB4MWQ2MWI6J3QnLCAweDFkNjFjOid1JywgMHgxZDYxZDondicsCjB4MWQ2MWU6J3cnLCAweDFkNjFmOid4JywgMHgxZDYyMDoneScsIDB4MWQ2MjE6J3onLAoweDFkNjNjOidhJywgMHgxZDYzZDonYicsIDB4MWQ2M2U6J2MnLCAweDFkNjNmOidkJywKMHgxZDY0MDonZScsIDB4MWQ2NDE6J2YnLCAweDFkNjQyOidnJywgMHgxZDY0MzonaCcsCjB4MWQ2NDQ6J2knLCAweDFkNjQ1OidqJywgMHgxZDY0NjonaycsIDB4MWQ2NDc6J2wnLAoweDFkNjQ4OidtJywgMHgxZDY0OTonbicsIDB4MWQ2NGE6J28nLCAweDFkNjRiOidwJywKMHgxZDY0YzoncScsIDB4MWQ2NGQ6J3InLCAweDFkNjRlOidzJywgMHgxZDY0ZjondCcsCjB4MWQ2NTA6J3UnLCAweDFkNjUxOid2JywgMHgxZDY1MjondycsIDB4MWQ2NTM6J3gnLAoweDFkNjU0Oid5JywgMHgxZDY1NToneicsIDB4MWQ2NzA6J2EnLCAweDFkNjcxOidiJywKMHgxZDY3MjonYycsIDB4MWQ2NzM6J2QnLCAweDFkNjc0OidlJywgMHgxZDY3NTonZicsCjB4MWQ2NzY6J2cnLCAweDFkNjc3OidoJywgMHgxZDY3ODonaScsIDB4MWQ2Nzk6J2onLAoweDFkNjdhOidrJywgMHgxZDY3YjonbCcsIDB4MWQ2N2M6J20nLCAweDFkNjdkOiduJywKMHgxZDY3ZTonbycsIDB4MWQ2N2Y6J3AnLCAweDFkNjgwOidxJywgMHgxZDY4MToncicsCjB4MWQ2ODI6J3MnLCAweDFkNjgzOid0JywgMHgxZDY4NDondScsIDB4MWQ2ODU6J3YnLAoweDFkNjg2Oid3JywgMHgxZDY4NzoneCcsIDB4MWQ2ODg6J3knLCAweDFkNjg5Oid6JywKMHgxZDZhODonXHUwM2IxJywgMHgxZDZhOTonXHUwM2IyJywgMHgxZDZhYTonXHUwM2IzJywgMHgxZDZhYjonXHUwM2I0JywKMHgxZDZhYzonXHUwM2I1JywgMHgxZDZhZDonXHUwM2I2JywgMHgxZDZhZTonXHUwM2I3JywgMHgxZDZhZjonXHUwM2I4JywKMHgxZDZiMDonXHUwM2I5JywgMHgxZDZiMTonXHUwM2JhJywgMHgxZDZiMjonXHUwM2JiJywgMHgxZDZiMzonXHUwM2JjJywKMHgxZDZiNDonXHUwM2JkJywgMHgxZDZiNTonXHUwM2JlJywgMHgxZDZiNjonXHUwM2JmJywgMHgxZDZiNzonXHUwM2MwJywKMHgxZDZiODonXHUwM2MxJywgMHgxZDZiOTonXHUwM2I4JywgMHgxZDZiYTonXHUwM2MzJywgMHgxZDZiYjonXHUwM2M0JywKMHgxZDZiYzonXHUwM2M1JywgMHgxZDZiZDonXHUwM2M2JywgMHgxZDZiZTonXHUwM2M3JywgMHgxZDZiZjonXHUwM2M4JywKMHgxZDZjMDonXHUwM2M5JywgMHgxZDZkMzonXHUwM2MzJywgMHgxZDZlMjonXHUwM2IxJywgMHgxZDZlMzonXHUwM2IyJywKMHgxZDZlNDonXHUwM2IzJywgMHgxZDZlNTonXHUwM2I0JywgMHgxZDZlNjonXHUwM2I1JywgMHgxZDZlNzonXHUwM2I2JywKMHgxZDZlODonXHUwM2I3JywgMHgxZDZlOTonXHUwM2I4JywgMHgxZDZlYTonXHUwM2I5JywgMHgxZDZlYjonXHUwM2JhJywKMHgxZDZlYzonXHUwM2JiJywgMHgxZDZlZDonXHUwM2JjJywgMHgxZDZlZTonXHUwM2JkJywgMHgxZDZlZjonXHUwM2JlJywKMHgxZDZmMDonXHUwM2JmJywgMHgxZDZmMTonXHUwM2MwJywgMHgxZDZmMjonXHUwM2MxJywgMHgxZDZmMzonXHUwM2I4JywKMHgxZDZmNDonXHUwM2MzJywgMHgxZDZmNTonXHUwM2M0JywgMHgxZDZmNjonXHUwM2M1JywgMHgxZDZmNzonXHUwM2M2JywKMHgxZDZmODonXHUwM2M3JywgMHgxZDZmOTonXHUwM2M4JywgMHgxZDZmYTonXHUwM2M5JywgMHgxZDcwZDonXHUwM2MzJywKMHgxZDcxYzonXHUwM2IxJywgMHgxZDcxZDonXHUwM2IyJywgMHgxZDcxZTonXHUwM2IzJywgMHgxZDcxZjonXHUwM2I0JywKMHgxZDcyMDonXHUwM2I1JywgMHgxZDcyMTonXHUwM2I2JywgMHgxZDcyMjonXHUwM2I3JywgMHgxZDcyMzonXHUwM2I4JywKMHgxZDcyNDonXHUwM2I5JywgMHgxZDcyNTonXHUwM2JhJywgMHgxZDcyNjonXHUwM2JiJywgMHgxZDcyNzonXHUwM2JjJywKMHgxZDcyODonXHUwM2JkJywgMHgxZDcyOTonXHUwM2JlJywgMHgxZDcyYTonXHUwM2JmJywgMHgxZDcyYjonXHUwM2MwJywKMHgxZDcyYzonXHUwM2MxJywgMHgxZDcyZDonXHUwM2I4JywgMHgxZDcyZTonXHUwM2MzJywgMHgxZDcyZjonXHUwM2M0JywKMHgxZDczMDonXHUwM2M1JywgMHgxZDczMTonXHUwM2M2JywgMHgxZDczMjonXHUwM2M3JywgMHgxZDczMzonXHUwM2M4JywKMHgxZDczNDonXHUwM2M5JywgMHgxZDc0NzonXHUwM2MzJywgMHgxZDc1NjonXHUwM2IxJywgMHgxZDc1NzonXHUwM2IyJywKMHgxZDc1ODonXHUwM2IzJywgMHgxZDc1OTonXHUwM2I0JywgMHgxZDc1YTonXHUwM2I1JywgMHgxZDc1YjonXHUwM2I2JywKMHgxZDc1YzonXHUwM2I3JywgMHgxZDc1ZDonXHUwM2I4JywgMHgxZDc1ZTonXHUwM2I5JywgMHgxZDc1ZjonXHUwM2JhJywKMHgxZDc2MDonXHUwM2JiJywgMHgxZDc2MTonXHUwM2JjJywgMHgxZDc2MjonXHUwM2JkJywgMHgxZDc2MzonXHUwM2JlJywKMHgxZDc2NDonXHUwM2JmJywgMHgxZDc2NTonXHUwM2MwJywgMHgxZDc2NjonXHUwM2MxJywgMHgxZDc2NzonXHUwM2I4JywKMHgxZDc2ODonXHUwM2MzJywgMHgxZDc2OTonXHUwM2M0JywgMHgxZDc2YTonXHUwM2M1JywgMHgxZDc2YjonXHUwM2M2JywKMHgxZDc2YzonXHUwM2M3JywgMHgxZDc2ZDonXHUwM2M4JywgMHgxZDc2ZTonXHUwM2M5JywgMHgxZDc4MTonXHUwM2MzJywKMHgxZDc5MDonXHUwM2IxJywgMHgxZDc5MTonXHUwM2IyJywgMHgxZDc5MjonXHUwM2IzJywgMHgxZDc5MzonXHUwM2I0JywKMHgxZDc5NDonXHUwM2I1JywgMHgxZDc5NTonXHUwM2I2JywgMHgxZDc5NjonXHUwM2I3JywgMHgxZDc5NzonXHUwM2I4JywKMHgxZDc5ODonXHUwM2I5JywgMHgxZDc5OTonXHUwM2JhJywgMHgxZDc5YTonXHUwM2JiJywgMHgxZDc5YjonXHUwM2JjJywKMHgxZDc5YzonXHUwM2JkJywgMHgxZDc5ZDonXHUwM2JlJywgMHgxZDc5ZTonXHUwM2JmJywgMHgxZDc5ZjonXHUwM2MwJywKMHgxZDdhMDonXHUwM2MxJywgMHgxZDdhMTonXHUwM2I4JywgMHgxZDdhMjonXHUwM2MzJywgMHgxZDdhMzonXHUwM2M0JywKMHgxZDdhNDonXHUwM2M1JywgMHgxZDdhNTonXHUwM2M2JywgMHgxZDdhNjonXHUwM2M3JywgMHgxZDdhNzonXHUwM2M4JywKMHgxZDdhODonXHUwM2M5JywgMHgxZDdiYjonXHUwM2MzJywgfQoKZGVmIG1hcF90YWJsZV9iMyhjb2RlKToKICAgIHIgPSBiM19leGNlcHRpb25zLmdldChvcmQoY29kZSkpCiAgICBpZiByIGlzIG5vdCBOb25lOiByZXR1cm4gcgogICAgcmV0dXJuIGNvZGUubG93ZXIoKQoKCmRlZiBtYXBfdGFibGVfYjIoYSk6CiAgICBhbCA9IG1hcF90YWJsZV9iMyhhKQogICAgYiA9IHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgiTkZLQyIsIGFsKQogICAgYmwgPSAiIi5qb2luKFttYXBfdGFibGVfYjMoY2gpIGZvciBjaCBpbiBiXSkKICAgIGMgPSB1bmljb2RlZGF0YS5ub3JtYWxpemUoIk5GS0MiLCBibCkKICAgIGlmIGIgIT0gYzoKICAgICAgICByZXR1cm4gYwogICAgZWxzZToKICAgICAgICByZXR1cm4gYWwKCgpkZWYgaW5fdGFibGVfYzExKGNvZGUpOgogICAgcmV0dXJuIGNvZGUgPT0gIiAiCgoKZGVmIGluX3RhYmxlX2MxMihjb2RlKToKICAgIHJldHVybiB1bmljb2RlZGF0YS5jYXRlZ29yeShjb2RlKSA9PSAiWnMiIGFuZCBjb2RlICE9ICIgIgoKZGVmIGluX3RhYmxlX2MxMV9jMTIoY29kZSk6CiAgICByZXR1cm4gdW5pY29kZWRhdGEuY2F0ZWdvcnkoY29kZSkgPT0gIlpzIgoKCmRlZiBpbl90YWJsZV9jMjEoY29kZSk6CiAgICByZXR1cm4gb3JkKGNvZGUpIDwgMTI4IGFuZCB1bmljb2RlZGF0YS5jYXRlZ29yeShjb2RlKSA9PSAiQ2MiCgpjMjJfc3BlY2lhbHMgPSBzZXQoWzE3NTcsIDE4MDcsIDYxNTgsIDgyMDQsIDgyMDUsIDgyMzIsIDgyMzMsIDY1Mjc5XSArIGxpc3QocmFuZ2UoODI4OCw4MjkyKSkgKyBsaXN0KHJhbmdlKDgyOTgsODMwNCkpICsgbGlzdChyYW5nZSg2NTUyOSw2NTUzMykpICsgbGlzdChyYW5nZSgxMTkxNTUsMTE5MTYzKSkpCmRlZiBpbl90YWJsZV9jMjIoY29kZSk6CiAgICBjID0gb3JkKGNvZGUpCiAgICBpZiBjIDwgMTI4OiByZXR1cm4gRmFsc2UKICAgIGlmIHVuaWNvZGVkYXRhLmNhdGVnb3J5KGNvZGUpID09ICJDYyI6IHJldHVybiBUcnVlCiAgICByZXR1cm4gYyBpbiBjMjJfc3BlY2lhbHMKCmRlZiBpbl90YWJsZV9jMjFfYzIyKGNvZGUpOgogICAgcmV0dXJuIHVuaWNvZGVkYXRhLmNhdGVnb3J5KGNvZGUpID09ICJDYyIgb3IgXAogICAgICAgICAgIG9yZChjb2RlKSBpbiBjMjJfc3BlY2lhbHMKCgpkZWYgaW5fdGFibGVfYzMoY29kZSk6CiAgICByZXR1cm4gdW5pY29kZWRhdGEuY2F0ZWdvcnkoY29kZSkgPT0gIkNvIgoKCmRlZiBpbl90YWJsZV9jNChjb2RlKToKICAgIGMgPSBvcmQoY29kZSkKICAgIGlmIGMgPCAweEZERDA6IHJldHVybiBGYWxzZQogICAgaWYgYyA8IDB4RkRGMDogcmV0dXJuIFRydWUKICAgIHJldHVybiAob3JkKGNvZGUpICYgMHhGRkZGKSBpbiAoMHhGRkZFLCAweEZGRkYpCgoKZGVmIGluX3RhYmxlX2M1KGNvZGUpOgogICAgcmV0dXJuIHVuaWNvZGVkYXRhLmNhdGVnb3J5KGNvZGUpID09ICJDcyIKCgpjNl9zZXQgPSBzZXQocmFuZ2UoNjU1MjksNjU1MzQpKQpkZWYgaW5fdGFibGVfYzYoY29kZSk6CiAgICByZXR1cm4gb3JkKGNvZGUpIGluIGM2X3NldAoKCmM3X3NldCA9IHNldChyYW5nZSgxMjI3MiwxMjI4NCkpCmRlZiBpbl90YWJsZV9jNyhjb2RlKToKICAgIHJldHVybiBvcmQoY29kZSkgaW4gYzdfc2V0CgoKYzhfc2V0ID0gc2V0KFs4MzIsIDgzMywgODIwNiwgODIwN10gKyBsaXN0KHJhbmdlKDgyMzQsODIzOSkpICsgbGlzdChyYW5nZSg4Mjk4LDgzMDQpKSkKZGVmIGluX3RhYmxlX2M4KGNvZGUpOgogICAgcmV0dXJuIG9yZChjb2RlKSBpbiBjOF9zZXQKCgpjOV9zZXQgPSBzZXQoWzkxNzUwNV0gKyBsaXN0KHJhbmdlKDkxNzUzNiw5MTc2MzIpKSkKZGVmIGluX3RhYmxlX2M5KGNvZGUpOgogICAgcmV0dXJuIG9yZChjb2RlKSBpbiBjOV9zZXQKCgpkZWYgaW5fdGFibGVfZDEoY29kZSk6CiAgICByZXR1cm4gdW5pY29kZWRhdGEuYmlkaXJlY3Rpb25hbChjb2RlKSBpbiAoIlIiLCJBTCIpCgoKZGVmIGluX3RhYmxlX2QyKGNvZGUpOgogICAgcmV0dXJuIHVuaWNvZGVkYXRhLmJpZGlyZWN0aW9uYWwoY29kZSkgPT0gIkwiClBLAwQUAAAAAAACIKNWgrQI4wEBAAABAQAACQAAAHN0cnVjdC5weV9fYWxsX18gPSBbCiAgICAjIEZ1bmN0aW9ucwogICAgJ2NhbGNzaXplJywgJ3BhY2snLCAncGFja19pbnRvJywgJ3VucGFjaycsICd1bnBhY2tfZnJvbScsCiAgICAnaXRlcl91bnBhY2snLAoKICAgICMgQ2xhc3NlcwogICAgJ1N0cnVjdCcsCgogICAgIyBFeGNlcHRpb25zCiAgICAnZXJyb3InCiAgICBdCgpmcm9tIF9zdHJ1Y3QgaW1wb3J0ICoKZnJvbSBfc3RydWN0IGltcG9ydCBfY2xlYXJjYWNoZQpmcm9tIF9zdHJ1Y3QgaW1wb3J0IF9fZG9jX18KUEsDBBQAAAAAAAIgo1Yyq/VT8k4BAPJOAQANAAAAc3VicHJvY2Vzcy5weSMgc3VicHJvY2VzcyAtIFN1YnByb2Nlc3NlcyB3aXRoIGFjY2Vzc2libGUgSS9PIHN0cmVhbXMKIwojIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgbW9kdWxlLCBzZWUgUEVQIDMyNC4KIwojIENvcHlyaWdodCAoYykgMjAwMy0yMDA1IGJ5IFBldGVyIEFzdHJhbmQgPGFzdHJhbmRAbHlzYXRvci5saXUuc2U+CiMKIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCgpyIiIiU3VicHJvY2Vzc2VzIHdpdGggYWNjZXNzaWJsZSBJL08gc3RyZWFtcwoKVGhpcyBtb2R1bGUgYWxsb3dzIHlvdSB0byBzcGF3biBwcm9jZXNzZXMsIGNvbm5lY3QgdG8gdGhlaXIKaW5wdXQvb3V0cHV0L2Vycm9yIHBpcGVzLCBhbmQgb2J0YWluIHRoZWlyIHJldHVybiBjb2Rlcy4KCkZvciBhIGNvbXBsZXRlIGRlc2NyaXB0aW9uIG9mIHRoaXMgbW9kdWxlIHNlZSB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24uCgpNYWluIEFQSQo9PT09PT09PQpydW4oLi4uKTogUnVucyBhIGNvbW1hbmQsIHdhaXRzIGZvciBpdCB0byBjb21wbGV0ZSwgdGhlbiByZXR1cm5zIGEKICAgICAgICAgIENvbXBsZXRlZFByb2Nlc3MgaW5zdGFuY2UuClBvcGVuKC4uLik6IEEgY2xhc3MgZm9yIGZsZXhpYmx5IGV4ZWN1dGluZyBhIGNvbW1hbmQgaW4gYSBuZXcgcHJvY2VzcwoKQ29uc3RhbnRzCi0tLS0tLS0tLQpERVZOVUxMOiBTcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoYXQgb3MuZGV2bnVsbCBzaG91bGQgYmUgdXNlZApQSVBFOiAgICBTcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIGEgcGlwZSBzaG91bGQgYmUgY3JlYXRlZApTVERPVVQ6ICBTcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoYXQgc3RkZXJyIHNob3VsZCBnbyB0byBzdGRvdXQKCgpPbGRlciBBUEkKPT09PT09PT09CmNhbGwoLi4uKTogUnVucyBhIGNvbW1hbmQsIHdhaXRzIGZvciBpdCB0byBjb21wbGV0ZSwgdGhlbiByZXR1cm5zCiAgICB0aGUgcmV0dXJuIGNvZGUuCmNoZWNrX2NhbGwoLi4uKTogU2FtZSBhcyBjYWxsKCkgYnV0IHJhaXNlcyBDYWxsZWRQcm9jZXNzRXJyb3IoKQogICAgaWYgcmV0dXJuIGNvZGUgaXMgbm90IDAKY2hlY2tfb3V0cHV0KC4uLik6IFNhbWUgYXMgY2hlY2tfY2FsbCgpIGJ1dCByZXR1cm5zIHRoZSBjb250ZW50cyBvZgogICAgc3Rkb3V0IGluc3RlYWQgb2YgYSByZXR1cm4gY29kZQpnZXRvdXRwdXQoLi4uKTogUnVucyBhIGNvbW1hbmQgaW4gdGhlIHNoZWxsLCB3YWl0cyBmb3IgaXQgdG8gY29tcGxldGUsCiAgICB0aGVuIHJldHVybnMgdGhlIG91dHB1dApnZXRzdGF0dXNvdXRwdXQoLi4uKTogUnVucyBhIGNvbW1hbmQgaW4gdGhlIHNoZWxsLCB3YWl0cyBmb3IgaXQgdG8gY29tcGxldGUsCiAgICB0aGVuIHJldHVybnMgYSAoZXhpdGNvZGUsIG91dHB1dCkgdHVwbGUKIiIiCgppbXBvcnQgYnVpbHRpbnMKaW1wb3J0IGVycm5vCmltcG9ydCBpbwppbXBvcnQgbG9jYWxlCmltcG9ydCBvcwppbXBvcnQgdGltZQppbXBvcnQgc2lnbmFsCmltcG9ydCBzeXMKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgd2FybmluZ3MKaW1wb3J0IGNvbnRleHRsaWIKZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKaW1wb3J0IHR5cGVzCgp0cnk6CiAgICBpbXBvcnQgZmNudGwKZXhjZXB0IEltcG9ydEVycm9yOgogICAgZmNudGwgPSBOb25lCgoKX19hbGxfXyA9IFsiUG9wZW4iLCAiUElQRSIsICJTVERPVVQiLCAiY2FsbCIsICJjaGVja19jYWxsIiwgImdldHN0YXR1c291dHB1dCIsCiAgICAgICAgICAgImdldG91dHB1dCIsICJjaGVja19vdXRwdXQiLCAicnVuIiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIiwKICAgICAgICAgICAiU3VicHJvY2Vzc0Vycm9yIiwgIlRpbWVvdXRFeHBpcmVkIiwgIkNvbXBsZXRlZFByb2Nlc3MiXQogICAgICAgICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBleGNsdWRlIGxpc3QyY21kbGluZSBhcyBpdCBpcwogICAgICAgICAgICMgY29uc2lkZXJlZCBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBpc3N1ZTEwODM4LgoKIyB1c2UgcHJlc2VuY2Ugb2YgbXN2Y3J0IHRvIGRldGVjdCBXaW5kb3dzLWxpa2UgcGxhdGZvcm1zIChzZWUgYnBvLTgxMTApCnRyeToKICAgIGltcG9ydCBtc3ZjcnQKZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3I6CiAgICBfbXN3aW5kb3dzID0gRmFsc2UKZWxzZToKICAgIF9tc3dpbmRvd3MgPSBUcnVlCgojIHdhc20zMi1lbXNjcmlwdGVuIGFuZCB3YXNtMzItd2FzaSBkbyBub3Qgc3VwcG9ydCBwcm9jZXNzZXMKX2Nhbl9mb3JrX2V4ZWMgPSBzeXMucGxhdGZvcm0gbm90IGluIHsiZW1zY3JpcHRlbiIsICJ3YXNpIn0KCmlmIF9tc3dpbmRvd3M6CiAgICBpbXBvcnQgX3dpbmFwaQogICAgZnJvbSBfd2luYXBpIGltcG9ydCAoQ1JFQVRFX05FV19DT05TT0xFLCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAsCiAgICAgICAgICAgICAgICAgICAgICAgICBTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwKICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9FUlJPUl9IQU5ETEUsIFNXX0hJREUsCiAgICAgICAgICAgICAgICAgICAgICAgICBTVEFSVEZfVVNFU1RESEFORExFUywgU1RBUlRGX1VTRVNIT1dXSU5ET1csCiAgICAgICAgICAgICAgICAgICAgICAgICBBQk9WRV9OT1JNQUxfUFJJT1JJVFlfQ0xBU1MsIEJFTE9XX05PUk1BTF9QUklPUklUWV9DTEFTUywKICAgICAgICAgICAgICAgICAgICAgICAgIEhJR0hfUFJJT1JJVFlfQ0xBU1MsIElETEVfUFJJT1JJVFlfQ0xBU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICBOT1JNQUxfUFJJT1JJVFlfQ0xBU1MsIFJFQUxUSU1FX1BSSU9SSVRZX0NMQVNTLAogICAgICAgICAgICAgICAgICAgICAgICAgQ1JFQVRFX05PX1dJTkRPVywgREVUQUNIRURfUFJPQ0VTUywKICAgICAgICAgICAgICAgICAgICAgICAgIENSRUFURV9ERUZBVUxUX0VSUk9SX01PREUsIENSRUFURV9CUkVBS0FXQVlfRlJPTV9KT0IpCgogICAgX19hbGxfXy5leHRlbmQoWyJDUkVBVEVfTkVXX0NPTlNPTEUiLCAiQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQIiwKICAgICAgICAgICAgICAgICAgICAiU1REX0lOUFVUX0hBTkRMRSIsICJTVERfT1VUUFVUX0hBTkRMRSIsCiAgICAgICAgICAgICAgICAgICAgIlNURF9FUlJPUl9IQU5ETEUiLCAiU1dfSElERSIsCiAgICAgICAgICAgICAgICAgICAgIlNUQVJURl9VU0VTVERIQU5ETEVTIiwgIlNUQVJURl9VU0VTSE9XV0lORE9XIiwKICAgICAgICAgICAgICAgICAgICAiU1RBUlRVUElORk8iLAogICAgICAgICAgICAgICAgICAgICJBQk9WRV9OT1JNQUxfUFJJT1JJVFlfQ0xBU1MiLCAiQkVMT1dfTk9STUFMX1BSSU9SSVRZX0NMQVNTIiwKICAgICAgICAgICAgICAgICAgICAiSElHSF9QUklPUklUWV9DTEFTUyIsICJJRExFX1BSSU9SSVRZX0NMQVNTIiwKICAgICAgICAgICAgICAgICAgICAiTk9STUFMX1BSSU9SSVRZX0NMQVNTIiwgIlJFQUxUSU1FX1BSSU9SSVRZX0NMQVNTIiwKICAgICAgICAgICAgICAgICAgICAiQ1JFQVRFX05PX1dJTkRPVyIsICJERVRBQ0hFRF9QUk9DRVNTIiwKICAgICAgICAgICAgICAgICAgICAiQ1JFQVRFX0RFRkFVTFRfRVJST1JfTU9ERSIsICJDUkVBVEVfQlJFQUtBV0FZX0ZST01fSk9CIl0pCmVsc2U6CiAgICBpZiBfY2FuX2ZvcmtfZXhlYzoKICAgICAgICBmcm9tIF9wb3NpeHN1YnByb2Nlc3MgaW1wb3J0IGZvcmtfZXhlYyBhcyBfZm9ya19leGVjCiAgICAgICAgIyB1c2VkIGluIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkIGJ5IF9fZGVsX18KICAgICAgICBfd2FpdHBpZCA9IG9zLndhaXRwaWQKICAgICAgICBfd2FpdHN0YXR1c190b19leGl0Y29kZSA9IG9zLndhaXRzdGF0dXNfdG9fZXhpdGNvZGUKICAgICAgICBfV0lGU1RPUFBFRCA9IG9zLldJRlNUT1BQRUQKICAgICAgICBfV1NUT1BTSUcgPSBvcy5XU1RPUFNJRwogICAgICAgIF9XTk9IQU5HID0gb3MuV05PSEFORwogICAgZWxzZToKICAgICAgICBfZm9ya19leGVjID0gTm9uZQogICAgICAgIF93YWl0cGlkID0gTm9uZQogICAgICAgIF93YWl0c3RhdHVzX3RvX2V4aXRjb2RlID0gTm9uZQogICAgICAgIF9XSUZTVE9QUEVEID0gTm9uZQogICAgICAgIF9XU1RPUFNJRyA9IE5vbmUKICAgICAgICBfV05PSEFORyA9IE5vbmUKICAgIGltcG9ydCBzZWxlY3QKICAgIGltcG9ydCBzZWxlY3RvcnMKCgojIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCmNsYXNzIFN1YnByb2Nlc3NFcnJvcihFeGNlcHRpb24pOiBwYXNzCgoKY2xhc3MgQ2FsbGVkUHJvY2Vzc0Vycm9yKFN1YnByb2Nlc3NFcnJvcik6CiAgICAiIiJSYWlzZWQgd2hlbiBydW4oKSBpcyBjYWxsZWQgd2l0aCBjaGVjaz1UcnVlIGFuZCB0aGUgcHJvY2VzcwogICAgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgoKICAgIEF0dHJpYnV0ZXM6CiAgICAgIGNtZCwgcmV0dXJuY29kZSwgc3Rkb3V0LCBzdGRlcnIsIG91dHB1dAogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmV0dXJuY29kZSwgY21kLCBvdXRwdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgogICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJldHVybmNvZGUKICAgICAgICBzZWxmLmNtZCA9IGNtZAogICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CiAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgYW5kIHNlbGYucmV0dXJuY29kZSA8IDA6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIGRpZWQgd2l0aCAlci4iICUgKAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNtZCwgc2lnbmFsLlNpZ25hbHMoLXNlbGYucmV0dXJuY29kZSkpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgZGllZCB3aXRoIHVua25vd24gc2lnbmFsICVkLiIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY21kLCAtc2VsZi5yZXR1cm5jb2RlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkLiIgJSAoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBzdGRvdXQoc2VsZik6CiAgICAgICAgIiIiQWxpYXMgZm9yIG91dHB1dCBhdHRyaWJ1dGUsIHRvIG1hdGNoIHN0ZGVyciIiIgogICAgICAgIHJldHVybiBzZWxmLm91dHB1dAoKICAgIEBzdGRvdXQuc2V0dGVyCiAgICBkZWYgc3Rkb3V0KHNlbGYsIHZhbHVlKToKICAgICAgICAjIFRoZXJlJ3Mgbm8gb2J2aW91cyByZWFzb24gdG8gc2V0IHRoaXMsIGJ1dCBhbGxvdyBpdCBhbnl3YXkgc28KICAgICAgICAjIC5zdGRvdXQgaXMgYSB0cmFuc3BhcmVudCBhbGlhcyBmb3IgLm91dHB1dAogICAgICAgIHNlbGYub3V0cHV0ID0gdmFsdWUKCgpjbGFzcyBUaW1lb3V0RXhwaXJlZChTdWJwcm9jZXNzRXJyb3IpOgogICAgIiIiVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcyB3aGlsZSB3YWl0aW5nIGZvciBhCiAgICBjaGlsZCBwcm9jZXNzLgoKICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgY21kLCBvdXRwdXQsIHN0ZG91dCwgc3RkZXJyLCB0aW1lb3V0CiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsIHRpbWVvdXQsIG91dHB1dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CiAgICAgICAgc2VsZi5jbWQgPSBjbWQKICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKICAgICAgICBzZWxmLnN0ZGVyciA9IHN0ZGVycgoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAoIkNvbW1hbmQgJyVzJyB0aW1lZCBvdXQgYWZ0ZXIgJXMgc2Vjb25kcyIgJQogICAgICAgICAgICAgICAgKHNlbGYuY21kLCBzZWxmLnRpbWVvdXQpKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHN0ZG91dChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQKCiAgICBAc3Rkb3V0LnNldHRlcgogICAgZGVmIHN0ZG91dChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIyBUaGVyZSdzIG5vIG9idmlvdXMgcmVhc29uIHRvIHNldCB0aGlzLCBidXQgYWxsb3cgaXQgYW55d2F5IHNvCiAgICAgICAgIyAuc3Rkb3V0IGlzIGEgdHJhbnNwYXJlbnQgYWxpYXMgZm9yIC5vdXRwdXQKICAgICAgICBzZWxmLm91dHB1dCA9IHZhbHVlCgoKaWYgX21zd2luZG93czoKICAgIGNsYXNzIFNUQVJUVVBJTkZPOgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBkd0ZsYWdzPTAsIGhTdGRJbnB1dD1Ob25lLCBoU3RkT3V0cHV0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIGhTdGRFcnJvcj1Ob25lLCB3U2hvd1dpbmRvdz0wLCBscEF0dHJpYnV0ZUxpc3Q9Tm9uZSk6CiAgICAgICAgICAgIHNlbGYuZHdGbGFncyA9IGR3RmxhZ3MKICAgICAgICAgICAgc2VsZi5oU3RkSW5wdXQgPSBoU3RkSW5wdXQKICAgICAgICAgICAgc2VsZi5oU3RkT3V0cHV0ID0gaFN0ZE91dHB1dAogICAgICAgICAgICBzZWxmLmhTdGRFcnJvciA9IGhTdGRFcnJvcgogICAgICAgICAgICBzZWxmLndTaG93V2luZG93ID0gd1Nob3dXaW5kb3cKICAgICAgICAgICAgc2VsZi5scEF0dHJpYnV0ZUxpc3QgPSBscEF0dHJpYnV0ZUxpc3Qgb3IgeyJoYW5kbGVfbGlzdCI6IFtdfQoKICAgICAgICBkZWYgY29weShzZWxmKToKICAgICAgICAgICAgYXR0cl9saXN0ID0gc2VsZi5scEF0dHJpYnV0ZUxpc3QuY29weSgpCiAgICAgICAgICAgIGlmICdoYW5kbGVfbGlzdCcgaW4gYXR0cl9saXN0OgogICAgICAgICAgICAgICAgYXR0cl9saXN0WydoYW5kbGVfbGlzdCddID0gbGlzdChhdHRyX2xpc3RbJ2hhbmRsZV9saXN0J10pCgogICAgICAgICAgICByZXR1cm4gU1RBUlRVUElORk8oZHdGbGFncz1zZWxmLmR3RmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoU3RkSW5wdXQ9c2VsZi5oU3RkSW5wdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoU3RkT3V0cHV0PXNlbGYuaFN0ZE91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhTdGRFcnJvcj1zZWxmLmhTdGRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdTaG93V2luZG93PXNlbGYud1Nob3dXaW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscEF0dHJpYnV0ZUxpc3Q9YXR0cl9saXN0KQoKCiAgICBjbGFzcyBIYW5kbGUoaW50KToKICAgICAgICBjbG9zZWQgPSBGYWxzZQoKICAgICAgICBkZWYgQ2xvc2Uoc2VsZiwgQ2xvc2VIYW5kbGU9X3dpbmFwaS5DbG9zZUhhbmRsZSk6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQogICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoc2VsZikKCiAgICAgICAgZGVmIERldGFjaChzZWxmKToKICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgogICAgICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCiAgICAgICAgICAgICAgICByZXR1cm4gaW50KHNlbGYpCiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFscmVhZHkgY2xvc2VkIikKCiAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gIiVzKCVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGludChzZWxmKSkKCiAgICAgICAgX19kZWxfXyA9IENsb3NlCmVsc2U6CiAgICAjIFdoZW4gc2VsZWN0IG9yIHBvbGwgaGFzIGluZGljYXRlZCB0aGF0IHRoZSBmaWxlIGlzIHdyaXRhYmxlLAogICAgIyB3ZSBjYW4gd3JpdGUgdXAgdG8gX1BJUEVfQlVGIGJ5dGVzIHdpdGhvdXQgcmlzayBvZiBibG9ja2luZy4KICAgICMgUE9TSVggZGVmaW5lcyBQSVBFX0JVRiBhcyA+PSA1MTIuCiAgICBfUElQRV9CVUYgPSBnZXRhdHRyKHNlbGVjdCwgJ1BJUEVfQlVGJywgNTEyKQoKICAgICMgcG9sbC9zZWxlY3QgaGF2ZSB0aGUgYWR2YW50YWdlIG9mIG5vdCByZXF1aXJpbmcgYW55IGV4dHJhIGZpbGUKICAgICMgZGVzY3JpcHRvciwgY29udHJhcmlseSB0byBlcG9sbC9rcXVldWUgKGFsc28sIHRoZXkgcmVxdWlyZSBhIHNpbmdsZQogICAgIyBzeXNjYWxsKS4KICAgIGlmIGhhc2F0dHIoc2VsZWN0b3JzLCAnUG9sbFNlbGVjdG9yJyk6CiAgICAgICAgX1BvcGVuU2VsZWN0b3IgPSBzZWxlY3RvcnMuUG9sbFNlbGVjdG9yCiAgICBlbHNlOgogICAgICAgIF9Qb3BlblNlbGVjdG9yID0gc2VsZWN0b3JzLlNlbGVjdFNlbGVjdG9yCgoKaWYgX21zd2luZG93czoKICAgICMgT24gV2luZG93cyB3ZSBqdXN0IG5lZWQgdG8gY2xvc2UgYFBvcGVuLl9oYW5kbGVgIHdoZW4gd2Ugbm8gbG9uZ2VyIG5lZWQKICAgICMgaXQsIHNvIHRoYXQgdGhlIGtlcm5lbCBjYW4gZnJlZSBpdC4gYFBvcGVuLl9oYW5kbGVgIGdldHMgY2xvc2VkCiAgICAjIGltcGxpY2l0bHkgd2hlbiB0aGUgYFBvcGVuYCBpbnN0YW5jZSBpcyBmaW5hbGl6ZWQgKHNlZSBgSGFuZGxlLl9fZGVsX19gLAogICAgIyB3aGljaCBpcyBjYWxsaW5nIGBDbG9zZUhhbmRsZWAgYXMgcmVxdWVzdGVkIGluIFsxXSksIHNvIHRoZXJlIGlzIG5vdGhpbmcKICAgICMgZm9yIGBfY2xlYW51cGAgdG8gZG8uCiAgICAjCiAgICAjIFsxXSBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL2Rlc2t0b3AvUHJvY1RocmVhZC8KICAgICMgY3JlYXRpbmctcHJvY2Vzc2VzCiAgICBfYWN0aXZlID0gTm9uZQoKICAgIGRlZiBfY2xlYW51cCgpOgogICAgICAgIHBhc3MKZWxzZToKICAgICMgVGhpcyBsaXN0cyBob2xkcyBQb3BlbiBpbnN0YW5jZXMgZm9yIHdoaWNoIHRoZSB1bmRlcmx5aW5nIHByb2Nlc3MgaGFkIG5vdAogICAgIyBleGl0ZWQgYXQgdGhlIHRpbWUgaXRzIF9fZGVsX18gbWV0aG9kIGdvdCBjYWxsZWQ6IHRob3NlIHByb2Nlc3NlcyBhcmUKICAgICMgd2FpdCgpZWQgZm9yIHN5bmNocm9ub3VzbHkgZnJvbSBfY2xlYW51cCgpIHdoZW4gYSBuZXcgUG9wZW4gb2JqZWN0IGlzCiAgICAjIGNyZWF0ZWQsIHRvIGF2b2lkIHpvbWJpZSBwcm9jZXNzZXMuCiAgICBfYWN0aXZlID0gW10KCiAgICBkZWYgX2NsZWFudXAoKToKICAgICAgICBpZiBfYWN0aXZlIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGZvciBpbnN0IGluIF9hY3RpdmVbOl06CiAgICAgICAgICAgIHJlcyA9IGluc3QuX2ludGVybmFsX3BvbGwoX2RlYWRzdGF0ZT1zeXMubWF4c2l6ZSkKICAgICAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIF9hY3RpdmUucmVtb3ZlKGluc3QpCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgY2FuIGhhcHBlbiBpZiB0d28gdGhyZWFkcyBjcmVhdGUgYSBuZXcgUG9wZW4gaW5zdGFuY2UuCiAgICAgICAgICAgICAgICAgICAgIyBJdCdzIGhhcm1sZXNzIHRoYXQgaXQgd2FzIGFscmVhZHkgcmVtb3ZlZCwgc28gaWdub3JlLgogICAgICAgICAgICAgICAgICAgIHBhc3MKClBJUEUgPSAtMQpTVERPVVQgPSAtMgpERVZOVUxMID0gLTMKCgojIFhYWCBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcgYW5kIHRoZSB0ZXN0IHN1aXRlLAojIGJ1dCBpdCdzIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgaW1wb3J0ZWQgd2hlbiBQeXRob24gaXMgY29tcGlsZWQgd2l0aG91dAojIHRocmVhZHMuCgpkZWYgX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgogICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CiAgICBvcHRpbWl6YXRpb24gc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgogICAgYXJncyA9IFtdCiAgICB2YWx1ZSA9IHN5cy5mbGFncy5vcHRpbWl6ZQogICAgaWYgdmFsdWUgPiAwOgogICAgICAgIGFyZ3MuYXBwZW5kKCctJyArICdPJyAqIHZhbHVlKQogICAgcmV0dXJuIGFyZ3MKCgpkZWYgX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgogICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CiAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MsIHN5cy53YXJub3B0aW9ucyBhbmQgc3lzLl94b3B0aW9ucy4iIiIKICAgIGZsYWdfb3B0X21hcCA9IHsKICAgICAgICAnZGVidWcnOiAnZCcsCiAgICAgICAgIyAnaW5zcGVjdCc6ICdpJywKICAgICAgICAjICdpbnRlcmFjdGl2ZSc6ICdpJywKICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKICAgICAgICAnbm9fc2l0ZSc6ICdTJywKICAgICAgICAndmVyYm9zZSc6ICd2JywKICAgICAgICAnYnl0ZXNfd2FybmluZyc6ICdiJywKICAgICAgICAncXVpZXQnOiAncScsCiAgICAgICAgIyAtTyBpcyBoYW5kbGVkIGluIF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgfQogICAgYXJncyA9IF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgZm9yIGZsYWcsIG9wdCBpbiBmbGFnX29wdF9tYXAuaXRlbXMoKToKICAgICAgICB2ID0gZ2V0YXR0cihzeXMuZmxhZ3MsIGZsYWcpCiAgICAgICAgaWYgdiA+IDA6CiAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctJyArIG9wdCAqIHYpCgogICAgaWYgc3lzLmZsYWdzLmlzb2xhdGVkOgogICAgICAgIGFyZ3MuYXBwZW5kKCctSScpCiAgICBlbHNlOgogICAgICAgIGlmIHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CiAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctRScpCiAgICAgICAgaWYgc3lzLmZsYWdzLm5vX3VzZXJfc2l0ZToKICAgICAgICAgICAgYXJncy5hcHBlbmQoJy1zJykKICAgICAgICBpZiBzeXMuZmxhZ3Muc2FmZV9wYXRoOgogICAgICAgICAgICBhcmdzLmFwcGVuZCgnLVAnKQoKICAgICMgLVcgb3B0aW9ucwogICAgd2Fybm9wdHMgPSBzeXMud2Fybm9wdGlvbnNbOl0KICAgIHhvcHRpb25zID0gZ2V0YXR0cihzeXMsICdfeG9wdGlvbnMnLCB7fSkKICAgIGJ5dGVzX3dhcm5pbmcgPSBzeXMuZmxhZ3MuYnl0ZXNfd2FybmluZwogICAgZGV2X21vZGUgPSBzeXMuZmxhZ3MuZGV2X21vZGUKCiAgICBpZiBieXRlc193YXJuaW5nID4gMToKICAgICAgICB3YXJub3B0cy5yZW1vdmUoImVycm9yOjpCeXRlc1dhcm5pbmciKQogICAgZWxpZiBieXRlc193YXJuaW5nOgogICAgICAgIHdhcm5vcHRzLnJlbW92ZSgiZGVmYXVsdDo6Qnl0ZXNXYXJuaW5nIikKICAgIGlmIGRldl9tb2RlOgogICAgICAgIHdhcm5vcHRzLnJlbW92ZSgnZGVmYXVsdCcpCiAgICBmb3Igb3B0IGluIHdhcm5vcHRzOgogICAgICAgIGFyZ3MuYXBwZW5kKCctVycgKyBvcHQpCgogICAgIyAtWCBvcHRpb25zCiAgICBpZiBkZXZfbW9kZToKICAgICAgICBhcmdzLmV4dGVuZCgoJy1YJywgJ2RldicpKQogICAgZm9yIG9wdCBpbiAoJ2ZhdWx0aGFuZGxlcicsICd0cmFjZW1hbGxvYycsICdpbXBvcnR0aW1lJywKICAgICAgICAgICAgICAgICdzaG93cmVmY291bnQnLCAndXRmOCcpOgogICAgICAgIGlmIG9wdCBpbiB4b3B0aW9uczoKICAgICAgICAgICAgdmFsdWUgPSB4b3B0aW9uc1tvcHRdCiAgICAgICAgICAgIGlmIHZhbHVlIGlzIFRydWU6CiAgICAgICAgICAgICAgICBhcmcgPSBvcHQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGFyZyA9ICclcz0lcycgJSAob3B0LCB2YWx1ZSkKICAgICAgICAgICAgYXJncy5leHRlbmQoKCctWCcsIGFyZykpCgogICAgcmV0dXJuIGFyZ3MKCgpkZWYgX3RleHRfZW5jb2RpbmcoKToKICAgICMgUmV0dXJuIGRlZmF1bHQgdGV4dCBlbmNvZGluZyBhbmQgZW1pdCBFbmNvZGluZ1dhcm5pbmcgaWYKICAgICMgc3lzLmZsYWdzLndhcm5fZGVmYXVsdF9lbmNvZGluZyBpcyB0cnVlLgogICAgaWYgc3lzLmZsYWdzLndhcm5fZGVmYXVsdF9lbmNvZGluZzoKICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpCiAgICAgICAgZmlsZW5hbWUgPSBmLmZfY29kZS5jb19maWxlbmFtZQogICAgICAgIHN0YWNrbGV2ZWwgPSAyCiAgICAgICAgd2hpbGUgZiA6PSBmLmZfYmFjazoKICAgICAgICAgICAgaWYgZi5mX2NvZGUuY29fZmlsZW5hbWUgIT0gZmlsZW5hbWU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBzdGFja2xldmVsICs9IDEKICAgICAgICB3YXJuaW5ncy53YXJuKCInZW5jb2RpbmcnIGFyZ3VtZW50IG5vdCBzcGVjaWZpZWQuIiwKICAgICAgICAgICAgICAgICAgICAgIEVuY29kaW5nV2FybmluZywgc3RhY2tsZXZlbCkKCiAgICBpZiBzeXMuZmxhZ3MudXRmOF9tb2RlOgogICAgICAgIHJldHVybiAidXRmLTgiCiAgICBlbHNlOgogICAgICAgIHJldHVybiBsb2NhbGUuZ2V0ZW5jb2RpbmcoKQoKCmRlZiBjYWxsKCpwb3BlbmFyZ3MsIHRpbWVvdXQ9Tm9uZSwgKiprd2FyZ3MpOgogICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlIG9yCiAgICB0aW1lb3V0LCB0aGVuIHJldHVybiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGUuCgogICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CgogICAgcmV0Y29kZSA9IGNhbGwoWyJscyIsICItbCJdKQogICAgIiIiCiAgICB3aXRoIFBvcGVuKCpwb3BlbmFyZ3MsICoqa3dhcmdzKSBhcyBwOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHAud2FpdCh0aW1lb3V0PXRpbWVvdXQpCiAgICAgICAgZXhjZXB0OiAgIyBJbmNsdWRpbmcgS2V5Ym9hcmRJbnRlcnJ1cHQsIHdhaXQgaGFuZGxlZCB0aGF0LgogICAgICAgICAgICBwLmtpbGwoKQogICAgICAgICAgICAjIFdlIGRvbid0IGNhbGwgcC53YWl0KCkgYWdhaW4gYXMgcC5fX2V4aXRfXyBkb2VzIHRoYXQgZm9yIHVzLgogICAgICAgICAgICByYWlzZQoKCmRlZiBjaGVja19jYWxsKCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKICAgICIiIlJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZS4gIElmCiAgICB0aGUgZXhpdCBjb2RlIHdhcyB6ZXJvIHRoZW4gcmV0dXJuLCBvdGhlcndpc2UgcmFpc2UKICAgIENhbGxlZFByb2Nlc3NFcnJvci4gIFRoZSBDYWxsZWRQcm9jZXNzRXJyb3Igb2JqZWN0IHdpbGwgaGF2ZSB0aGUKICAgIHJldHVybiBjb2RlIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZS4KCiAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIGNhbGwgZnVuY3Rpb24uICBFeGFtcGxlOgoKICAgIGNoZWNrX2NhbGwoWyJscyIsICItbCJdKQogICAgIiIiCiAgICByZXRjb2RlID0gY2FsbCgqcG9wZW5hcmdzLCAqKmt3YXJncykKICAgIGlmIHJldGNvZGU6CiAgICAgICAgY21kID0ga3dhcmdzLmdldCgiYXJncyIpCiAgICAgICAgaWYgY21kIGlzIE5vbmU6CiAgICAgICAgICAgIGNtZCA9IHBvcGVuYXJnc1swXQogICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBjbWQpCiAgICByZXR1cm4gMAoKCmRlZiBjaGVja19vdXRwdXQoKnBvcGVuYXJncywgdGltZW91dD1Ob25lLCAqKmt3YXJncyk6CiAgICByIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0LgoKICAgIElmIHRoZSBleGl0IGNvZGUgd2FzIG5vbi16ZXJvIGl0IHJhaXNlcyBhIENhbGxlZFByb2Nlc3NFcnJvci4gIFRoZQogICAgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlIGluIHRoZSByZXR1cm5jb2RlCiAgICBhdHRyaWJ1dGUgYW5kIG91dHB1dCBpbiB0aGUgb3V0cHV0IGF0dHJpYnV0ZS4KCiAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIFBvcGVuIGNvbnN0cnVjdG9yLiAgRXhhbXBsZToKCiAgICA+Pj4gY2hlY2tfb3V0cHV0KFsibHMiLCAiLWwiLCAiL2Rldi9udWxsIl0pCiAgICBiJ2Nydy1ydy1ydy0gMSByb290IHJvb3QgMSwgMyBPY3QgMTggIDIwMDcgL2Rldi9udWxsXG4nCgogICAgVGhlIHN0ZG91dCBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCBhcyBpdCBpcyB1c2VkIGludGVybmFsbHkuCiAgICBUbyBjYXB0dXJlIHN0YW5kYXJkIGVycm9yIGluIHRoZSByZXN1bHQsIHVzZSBzdGRlcnI9U1RET1VULgoKICAgID4+PiBjaGVja19vdXRwdXQoWyIvYmluL3NoIiwgIi1jIiwKICAgIC4uLiAgICAgICAgICAgICAgICJscyAtbCBub25fZXhpc3RlbnRfZmlsZSA7IGV4aXQgMCJdLAogICAgLi4uICAgICAgICAgICAgICBzdGRlcnI9U1RET1VUKQogICAgYidsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKCiAgICBUaGVyZSBpcyBhbiBhZGRpdGlvbmFsIG9wdGlvbmFsIGFyZ3VtZW50LCAiaW5wdXQiLCBhbGxvd2luZyB5b3UgdG8KICAgIHBhc3MgYSBzdHJpbmcgdG8gdGhlIHN1YnByb2Nlc3MncyBzdGRpbi4gIElmIHlvdSB1c2UgdGhpcyBhcmd1bWVudAogICAgeW91IG1heSBub3QgYWxzbyB1c2UgdGhlIFBvcGVuIGNvbnN0cnVjdG9yJ3MgInN0ZGluIiBhcmd1bWVudCwgYXMKICAgIGl0IHRvbyB3aWxsIGJlIHVzZWQgaW50ZXJuYWxseS4gIEV4YW1wbGU6CgogICAgPj4+IGNoZWNrX291dHB1dChbInNlZCIsICItZSIsICJzL2Zvby9iYXIvIl0sCiAgICAuLi4gICAgICAgICAgICAgIGlucHV0PWIid2hlbiBpbiB0aGUgY291cnNlIG9mIGZvb21hbiBldmVudHNcbiIpCiAgICBiJ3doZW4gaW4gdGhlIGNvdXJzZSBvZiBiYXJtYW4gZXZlbnRzXG4nCgogICAgQnkgZGVmYXVsdCwgYWxsIGNvbW11bmljYXRpb24gaXMgaW4gYnl0ZXMsIGFuZCB0aGVyZWZvcmUgYW55ICJpbnB1dCIKICAgIHNob3VsZCBiZSBieXRlcywgYW5kIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBieXRlcy4gIElmIGluIHRleHQgbW9kZSwKICAgIGFueSAiaW5wdXQiIHNob3VsZCBiZSBhIHN0cmluZywgYW5kIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBhIHN0cmluZwogICAgZGVjb2RlZCBhY2NvcmRpbmcgdG8gbG9jYWxlIGVuY29kaW5nLCBvciBieSAiZW5jb2RpbmciIGlmIHNldC4gVGV4dCBtb2RlCiAgICBpcyB0cmlnZ2VyZWQgYnkgc2V0dGluZyBhbnkgb2YgdGV4dCwgZW5jb2RpbmcsIGVycm9ycyBvciB1bml2ZXJzYWxfbmV3bGluZXMuCiAgICAiIiIKICAgIGZvciBrdyBpbiAoJ3N0ZG91dCcsICdjaGVjaycpOgogICAgICAgIGlmIGt3IGluIGt3YXJnczoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ3trd30gYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi4nKQoKICAgIGlmICdpbnB1dCcgaW4ga3dhcmdzIGFuZCBrd2FyZ3NbJ2lucHV0J10gaXMgTm9uZToKICAgICAgICAjIEV4cGxpY2l0bHkgcGFzc2luZyBpbnB1dD1Ob25lIHdhcyBwcmV2aW91c2x5IGVxdWl2YWxlbnQgdG8gcGFzc2luZyBhbgogICAgICAgICMgZW1wdHkgc3RyaW5nLiBUaGF0IGlzIG1haW50YWluZWQgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCiAgICAgICAgaWYga3dhcmdzLmdldCgndW5pdmVyc2FsX25ld2xpbmVzJykgb3Iga3dhcmdzLmdldCgndGV4dCcpIG9yIGt3YXJncy5nZXQoJ2VuY29kaW5nJykgXAogICAgICAgICAgICAgICAgb3Iga3dhcmdzLmdldCgnZXJyb3JzJyk6CiAgICAgICAgICAgIGVtcHR5ID0gJycKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbXB0eSA9IGInJwogICAgICAgIGt3YXJnc1snaW5wdXQnXSA9IGVtcHR5CgogICAgcmV0dXJuIHJ1bigqcG9wZW5hcmdzLCBzdGRvdXQ9UElQRSwgdGltZW91dD10aW1lb3V0LCBjaGVjaz1UcnVlLAogICAgICAgICAgICAgICAqKmt3YXJncykuc3Rkb3V0CgoKY2xhc3MgQ29tcGxldGVkUHJvY2VzcyhvYmplY3QpOgogICAgIiIiQSBwcm9jZXNzIHRoYXQgaGFzIGZpbmlzaGVkIHJ1bm5pbmcuCgogICAgVGhpcyBpcyByZXR1cm5lZCBieSBydW4oKS4KCiAgICBBdHRyaWJ1dGVzOgogICAgICBhcmdzOiBUaGUgbGlzdCBvciBzdHIgYXJncyBwYXNzZWQgdG8gcnVuKCkuCiAgICAgIHJldHVybmNvZGU6IFRoZSBleGl0IGNvZGUgb2YgdGhlIHByb2Nlc3MsIG5lZ2F0aXZlIGZvciBzaWduYWxzLgogICAgICBzdGRvdXQ6IFRoZSBzdGFuZGFyZCBvdXRwdXQgKE5vbmUgaWYgbm90IGNhcHR1cmVkKS4KICAgICAgc3RkZXJyOiBUaGUgc3RhbmRhcmQgZXJyb3IgKE5vbmUgaWYgbm90IGNhcHR1cmVkKS4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3MsIHJldHVybmNvZGUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CiAgICAgICAgc2VsZi5hcmdzID0gYXJncwogICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJldHVybmNvZGUKICAgICAgICBzZWxmLnN0ZG91dCA9IHN0ZG91dAogICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGFyZ3MgPSBbJ2FyZ3M9eyFyfScuZm9ybWF0KHNlbGYuYXJncyksCiAgICAgICAgICAgICAgICAncmV0dXJuY29kZT17IXJ9Jy5mb3JtYXQoc2VsZi5yZXR1cm5jb2RlKV0KICAgICAgICBpZiBzZWxmLnN0ZG91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3N0ZG91dD17IXJ9Jy5mb3JtYXQoc2VsZi5zdGRvdXQpKQogICAgICAgIGlmIHNlbGYuc3RkZXJyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBhcmdzLmFwcGVuZCgnc3RkZXJyPXshcn0nLmZvcm1hdChzZWxmLnN0ZGVycikpCiAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdCh0eXBlKHNlbGYpLl9fbmFtZV9fLCAnLCAnLmpvaW4oYXJncykpCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZCh0eXBlcy5HZW5lcmljQWxpYXMpCgoKICAgIGRlZiBjaGVja19yZXR1cm5jb2RlKHNlbGYpOgogICAgICAgICIiIlJhaXNlIENhbGxlZFByb2Nlc3NFcnJvciBpZiB0aGUgZXhpdCBjb2RlIGlzIG5vbi16ZXJvLiIiIgogICAgICAgIGlmIHNlbGYucmV0dXJuY29kZToKICAgICAgICAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHNlbGYucmV0dXJuY29kZSwgc2VsZi5hcmdzLCBzZWxmLnN0ZG91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyKQoKCmRlZiBydW4oKnBvcGVuYXJncywKICAgICAgICBpbnB1dD1Ob25lLCBjYXB0dXJlX291dHB1dD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSwgKiprd2FyZ3MpOgogICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBhIENvbXBsZXRlZFByb2Nlc3MgaW5zdGFuY2UuCgogICAgVGhlIHJldHVybmVkIGluc3RhbmNlIHdpbGwgaGF2ZSBhdHRyaWJ1dGVzIGFyZ3MsIHJldHVybmNvZGUsIHN0ZG91dCBhbmQKICAgIHN0ZGVyci4gQnkgZGVmYXVsdCwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIG5vdCBjYXB0dXJlZCwgYW5kIHRob3NlIGF0dHJpYnV0ZXMKICAgIHdpbGwgYmUgTm9uZS4gUGFzcyBzdGRvdXQ9UElQRSBhbmQvb3Igc3RkZXJyPVBJUEUgaW4gb3JkZXIgdG8gY2FwdHVyZSB0aGVtLAogICAgb3IgcGFzcyBjYXB0dXJlX291dHB1dD1UcnVlIHRvIGNhcHR1cmUgYm90aC4KCiAgICBJZiBjaGVjayBpcyBUcnVlIGFuZCB0aGUgZXhpdCBjb2RlIHdhcyBub24temVybywgaXQgcmFpc2VzIGEKICAgIENhbGxlZFByb2Nlc3NFcnJvci4gVGhlIENhbGxlZFByb2Nlc3NFcnJvciBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZQogICAgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLCBhbmQgb3V0cHV0ICYgc3RkZXJyIGF0dHJpYnV0ZXMgaWYgdGhvc2Ugc3RyZWFtcwogICAgd2VyZSBjYXB0dXJlZC4KCiAgICBJZiB0aW1lb3V0IGlzIGdpdmVuLCBhbmQgdGhlIHByb2Nlc3MgdGFrZXMgdG9vIGxvbmcsIGEgVGltZW91dEV4cGlyZWQKICAgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4KCiAgICBUaGVyZSBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCAiaW5wdXQiLCBhbGxvd2luZyB5b3UgdG8KICAgIHBhc3MgYnl0ZXMgb3IgYSBzdHJpbmcgdG8gdGhlIHN1YnByb2Nlc3MncyBzdGRpbi4gIElmIHlvdSB1c2UgdGhpcyBhcmd1bWVudAogICAgeW91IG1heSBub3QgYWxzbyB1c2UgdGhlIFBvcGVuIGNvbnN0cnVjdG9yJ3MgInN0ZGluIiBhcmd1bWVudCwgYXMKICAgIGl0IHdpbGwgYmUgdXNlZCBpbnRlcm5hbGx5LgoKICAgIEJ5IGRlZmF1bHQsIGFsbCBjb21tdW5pY2F0aW9uIGlzIGluIGJ5dGVzLCBhbmQgdGhlcmVmb3JlIGFueSAiaW5wdXQiIHNob3VsZAogICAgYmUgYnl0ZXMsIGFuZCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIgd2lsbCBiZSBieXRlcy4gSWYgaW4gdGV4dCBtb2RlLCBhbnkKICAgICJpbnB1dCIgc2hvdWxkIGJlIGEgc3RyaW5nLCBhbmQgc3Rkb3V0IGFuZCBzdGRlcnIgd2lsbCBiZSBzdHJpbmdzIGRlY29kZWQKICAgIGFjY29yZGluZyB0byBsb2NhbGUgZW5jb2RpbmcsIG9yIGJ5ICJlbmNvZGluZyIgaWYgc2V0LiBUZXh0IG1vZGUgaXMKICAgIHRyaWdnZXJlZCBieSBzZXR0aW5nIGFueSBvZiB0ZXh0LCBlbmNvZGluZywgZXJyb3JzIG9yIHVuaXZlcnNhbF9uZXdsaW5lcy4KCiAgICBUaGUgb3RoZXIgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIFBvcGVuIGNvbnN0cnVjdG9yLgogICAgIiIiCiAgICBpZiBpbnB1dCBpcyBub3QgTm9uZToKICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdzdGRpbicpIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRpbiBhbmQgaW5wdXQgYXJndW1lbnRzIG1heSBub3QgYm90aCBiZSB1c2VkLicpCiAgICAgICAga3dhcmdzWydzdGRpbiddID0gUElQRQoKICAgIGlmIGNhcHR1cmVfb3V0cHV0OgogICAgICAgIGlmIGt3YXJncy5nZXQoJ3N0ZG91dCcpIGlzIG5vdCBOb25lIG9yIGt3YXJncy5nZXQoJ3N0ZGVycicpIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRvdXQgYW5kIHN0ZGVyciBhcmd1bWVudHMgbWF5IG5vdCBiZSB1c2VkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCBjYXB0dXJlX291dHB1dC4nKQogICAgICAgIGt3YXJnc1snc3Rkb3V0J10gPSBQSVBFCiAgICAgICAga3dhcmdzWydzdGRlcnInXSA9IFBJUEUKCiAgICB3aXRoIFBvcGVuKCpwb3BlbmFyZ3MsICoqa3dhcmdzKSBhcyBwcm9jZXNzOgogICAgICAgIHRyeToKICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKGlucHV0LCB0aW1lb3V0PXRpbWVvdXQpCiAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkIGFzIGV4YzoKICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgaWYgX21zd2luZG93czoKICAgICAgICAgICAgICAgICMgV2luZG93cyBhY2N1bXVsYXRlcyB0aGUgb3V0cHV0IGluIGEgc2luZ2xlIGJsb2NraW5nCiAgICAgICAgICAgICAgICAjIHJlYWQoKSBjYWxsIHJ1biBvbiBjaGlsZCB0aHJlYWRzLCB3aXRoIHRoZSB0aW1lb3V0CiAgICAgICAgICAgICAgICAjIGJlaW5nIGRvbmUgaW4gYSBqb2luKCkgb24gdGhvc2UgdGhyZWFkcy4gIGNvbW11bmljYXRlKCkKICAgICAgICAgICAgICAgICMgX2FmdGVyXyBraWxsKCkgaXMgcmVxdWlyZWQgdG8gY29sbGVjdCB0aGF0IGFuZCBhZGQgaXQKICAgICAgICAgICAgICAgICMgdG8gdGhlIGV4Y2VwdGlvbi4KICAgICAgICAgICAgICAgIGV4Yy5zdGRvdXQsIGV4Yy5zdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgUE9TSVggX2NvbW11bmljYXRlIGFscmVhZHkgcG9wdWxhdGVkIHRoZSBvdXRwdXQgc28KICAgICAgICAgICAgICAgICMgZmFyIGludG8gdGhlIFRpbWVvdXRFeHBpcmVkIGV4Y2VwdGlvbi4KICAgICAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0OiAgIyBJbmNsdWRpbmcgS2V5Ym9hcmRJbnRlcnJ1cHQsIGNvbW11bmljYXRlIGhhbmRsZWQgdGhhdC4KICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgIyBXZSBkb24ndCBjYWxsIHByb2Nlc3Mud2FpdCgpIGFzIC5fX2V4aXRfXyBkb2VzIHRoYXQgZm9yIHVzLgogICAgICAgICAgICByYWlzZQogICAgICAgIHJldGNvZGUgPSBwcm9jZXNzLnBvbGwoKQogICAgICAgIGlmIGNoZWNrIGFuZCByZXRjb2RlOgogICAgICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgcHJvY2Vzcy5hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PXN0ZG91dCwgc3RkZXJyPXN0ZGVycikKICAgIHJldHVybiBDb21wbGV0ZWRQcm9jZXNzKHByb2Nlc3MuYXJncywgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIpCgoKZGVmIGxpc3QyY21kbGluZShzZXEpOgogICAgIiIiCiAgICBUcmFuc2xhdGUgYSBzZXF1ZW5jZSBvZiBhcmd1bWVudHMgaW50byBhIGNvbW1hbmQgbGluZQogICAgc3RyaW5nLCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyB0aGUgTVMgQyBydW50aW1lOgoKICAgIDEpIEFyZ3VtZW50cyBhcmUgZGVsaW1pdGVkIGJ5IHdoaXRlIHNwYWNlLCB3aGljaCBpcyBlaXRoZXIgYQogICAgICAgc3BhY2Ugb3IgYSB0YWIuCgogICAgMikgQSBzdHJpbmcgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGlzCiAgICAgICBpbnRlcnByZXRlZCBhcyBhIHNpbmdsZSBhcmd1bWVudCwgcmVnYXJkbGVzcyBvZiB3aGl0ZSBzcGFjZQogICAgICAgY29udGFpbmVkIHdpdGhpbi4gIEEgcXVvdGVkIHN0cmluZyBjYW4gYmUgZW1iZWRkZWQgaW4gYW4KICAgICAgIGFyZ3VtZW50LgoKICAgIDMpIEEgZG91YmxlIHF1b3RhdGlvbiBtYXJrIHByZWNlZGVkIGJ5IGEgYmFja3NsYXNoIGlzCiAgICAgICBpbnRlcnByZXRlZCBhcyBhIGxpdGVyYWwgZG91YmxlIHF1b3RhdGlvbiBtYXJrLgoKICAgIDQpIEJhY2tzbGFzaGVzIGFyZSBpbnRlcnByZXRlZCBsaXRlcmFsbHksIHVubGVzcyB0aGV5CiAgICAgICBpbW1lZGlhdGVseSBwcmVjZWRlIGEgZG91YmxlIHF1b3RhdGlvbiBtYXJrLgoKICAgIDUpIElmIGJhY2tzbGFzaGVzIGltbWVkaWF0ZWx5IHByZWNlZGUgYSBkb3VibGUgcXVvdGF0aW9uIG1hcmssCiAgICAgICBldmVyeSBwYWlyIG9mIGJhY2tzbGFzaGVzIGlzIGludGVycHJldGVkIGFzIGEgbGl0ZXJhbAogICAgICAgYmFja3NsYXNoLiAgSWYgdGhlIG51bWJlciBvZiBiYWNrc2xhc2hlcyBpcyBvZGQsIHRoZSBsYXN0CiAgICAgICBiYWNrc2xhc2ggZXNjYXBlcyB0aGUgbmV4dCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgYXMKICAgICAgIGRlc2NyaWJlZCBpbiBydWxlIDMuCiAgICAiIiIKCiAgICAjIFNlZQogICAgIyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvMTd3NXlrZnQuYXNweAogICAgIyBvciBzZWFyY2ggaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbSBmb3IKICAgICMgIlBhcnNpbmcgQysrIENvbW1hbmQtTGluZSBBcmd1bWVudHMiCiAgICByZXN1bHQgPSBbXQogICAgbmVlZHF1b3RlID0gRmFsc2UKICAgIGZvciBhcmcgaW4gbWFwKG9zLmZzZGVjb2RlLCBzZXEpOgogICAgICAgIGJzX2J1ZiA9IFtdCgogICAgICAgICMgQWRkIGEgc3BhY2UgdG8gc2VwYXJhdGUgdGhpcyBhcmd1bWVudCBmcm9tIHRoZSBvdGhlcnMKICAgICAgICBpZiByZXN1bHQ6CiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKQoKICAgICAgICBuZWVkcXVvdGUgPSAoIiAiIGluIGFyZykgb3IgKCJcdCIgaW4gYXJnKSBvciBub3QgYXJnCiAgICAgICAgaWYgbmVlZHF1b3RlOgogICAgICAgICAgICByZXN1bHQuYXBwZW5kKCciJykKCiAgICAgICAgZm9yIGMgaW4gYXJnOgogICAgICAgICAgICBpZiBjID09ICdcXCc6CiAgICAgICAgICAgICAgICAjIERvbid0IGtub3cgaWYgd2UgbmVlZCB0byBkb3VibGUgeWV0LgogICAgICAgICAgICAgICAgYnNfYnVmLmFwcGVuZChjKQogICAgICAgICAgICBlbGlmIGMgPT0gJyInOgogICAgICAgICAgICAgICAgIyBEb3VibGUgYmFja3NsYXNoZXMuCiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXCcgKiBsZW4oYnNfYnVmKSoyKQogICAgICAgICAgICAgICAgYnNfYnVmID0gW10KICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xcIicpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIE5vcm1hbCBjaGFyCiAgICAgICAgICAgICAgICBpZiBic19idWY6CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChic19idWYpCiAgICAgICAgICAgICAgICAgICAgYnNfYnVmID0gW10KICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykKCiAgICAgICAgIyBBZGQgcmVtYWluaW5nIGJhY2tzbGFzaGVzLCBpZiBhbnkuCiAgICAgICAgaWYgYnNfYnVmOgogICAgICAgICAgICByZXN1bHQuZXh0ZW5kKGJzX2J1ZikKCiAgICAgICAgaWYgbmVlZHF1b3RlOgogICAgICAgICAgICByZXN1bHQuZXh0ZW5kKGJzX2J1ZikKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIicpCgogICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQoKCiMgVmFyaW91cyB0b29scyBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIGFuZCBsb29raW5nIGF0IHRoZWlyIG91dHB1dCBhbmQgc3RhdHVzLgojCgpkZWYgZ2V0c3RhdHVzb3V0cHV0KGNtZCwgKiwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgogICAgIiIiUmV0dXJuIChleGl0Y29kZSwgb3V0cHV0KSBvZiBleGVjdXRpbmcgY21kIGluIGEgc2hlbGwuCgogICAgRXhlY3V0ZSB0aGUgc3RyaW5nICdjbWQnIGluIGEgc2hlbGwgd2l0aCAnY2hlY2tfb3V0cHV0JyBhbmQKICAgIHJldHVybiBhIDItdHVwbGUgKHN0YXR1cywgb3V0cHV0KS4gVGhlIGxvY2FsZSBlbmNvZGluZyBpcyB1c2VkCiAgICB0byBkZWNvZGUgdGhlIG91dHB1dCBhbmQgcHJvY2VzcyBuZXdsaW5lcy4KCiAgICBBIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQgZnJvbSB0aGUgb3V0cHV0LgogICAgVGhlIGV4aXQgc3RhdHVzIGZvciB0aGUgY29tbWFuZCBjYW4gYmUgaW50ZXJwcmV0ZWQKICAgIGFjY29yZGluZyB0byB0aGUgcnVsZXMgZm9yIHRoZSBmdW5jdGlvbiAnd2FpdCcuIEV4YW1wbGU6CgogICAgPj4+IGltcG9ydCBzdWJwcm9jZXNzCiAgICA+Pj4gc3VicHJvY2Vzcy5nZXRzdGF0dXNvdXRwdXQoJ2xzIC9iaW4vbHMnKQogICAgKDAsICcvYmluL2xzJykKICAgID4+PiBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dCgnY2F0IC9iaW4vanVuaycpCiAgICAoMSwgJ2NhdDogL2Jpbi9qdW5rOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5JykKICAgID4+PiBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dCgnL2Jpbi9qdW5rJykKICAgICgxMjcsICdzaDogL2Jpbi9qdW5rOiBub3QgZm91bmQnKQogICAgPj4+IHN1YnByb2Nlc3MuZ2V0c3RhdHVzb3V0cHV0KCcvYmluL2tpbGwgJCQnKQogICAgKC0xNSwgJycpCiAgICAiIiIKICAgIHRyeToKICAgICAgICBkYXRhID0gY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgdGV4dD1UcnVlLCBzdGRlcnI9U1RET1VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAgICAgICAgZXhpdGNvZGUgPSAwCiAgICBleGNlcHQgQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGV4OgogICAgICAgIGRhdGEgPSBleC5vdXRwdXQKICAgICAgICBleGl0Y29kZSA9IGV4LnJldHVybmNvZGUKICAgIGlmIGRhdGFbLTE6XSA9PSAnXG4nOgogICAgICAgIGRhdGEgPSBkYXRhWzotMV0KICAgIHJldHVybiBleGl0Y29kZSwgZGF0YQoKZGVmIGdldG91dHB1dChjbWQsICosIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKICAgICIiIlJldHVybiBvdXRwdXQgKHN0ZG91dCBvciBzdGRlcnIpIG9mIGV4ZWN1dGluZyBjbWQgaW4gYSBzaGVsbC4KCiAgICBMaWtlIGdldHN0YXR1c291dHB1dCgpLCBleGNlcHQgdGhlIGV4aXQgc3RhdHVzIGlzIGlnbm9yZWQgYW5kIHRoZSByZXR1cm4KICAgIHZhbHVlIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvbW1hbmQncyBvdXRwdXQuICBFeGFtcGxlOgoKICAgID4+PiBpbXBvcnQgc3VicHJvY2VzcwogICAgPj4+IHN1YnByb2Nlc3MuZ2V0b3V0cHV0KCdscyAvYmluL2xzJykKICAgICcvYmluL2xzJwogICAgIiIiCiAgICByZXR1cm4gZ2V0c3RhdHVzb3V0cHV0KGNtZCwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpWzFdCgoKCmRlZiBfdXNlX3Bvc2l4X3NwYXduKCk6CiAgICAiIiJDaGVjayBpZiBwb3NpeF9zcGF3bigpIGNhbiBiZSB1c2VkIGZvciBzdWJwcm9jZXNzLgoKICAgIHN1YnByb2Nlc3MgcmVxdWlyZXMgYSBwb3NpeF9zcGF3bigpIGltcGxlbWVudGF0aW9uIHRoYXQgcHJvcGVybHkgcmVwb3J0cwogICAgZXJyb3JzIHRvIHRoZSBwYXJlbnQgcHJvY2VzcywgJiBzZXRzIGVycm5vIG9uIHRoZSBmb2xsb3dpbmcgZmFpbHVyZXM6CgogICAgKiBQcm9jZXNzIGF0dHJpYnV0ZSBhY3Rpb25zIGZhaWxlZC4KICAgICogRmlsZSBhY3Rpb25zIGZhaWxlZC4KICAgICogZXhlYygpIGZhaWxlZC4KCiAgICBQcmVmZXIgYW4gaW1wbGVtZW50YXRpb24gd2hpY2ggY2FuIHVzZSB2Zm9yaygpIGluIHNvbWUgY2FzZXMgZm9yIGJlc3QKICAgIHBlcmZvcm1hbmNlLgogICAgIiIiCiAgICBpZiBfbXN3aW5kb3dzIG9yIG5vdCBoYXNhdHRyKG9zLCAncG9zaXhfc3Bhd24nKToKICAgICAgICAjIG9zLnBvc2l4X3NwYXduKCkgaXMgbm90IGF2YWlsYWJsZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2RhcndpbicsICdzdW5vczUnKToKICAgICAgICAjIHBvc2l4X3NwYXduKCkgaXMgYSBzeXNjYWxsIG9uIGJvdGggbWFjT1MgYW5kIFNvbGFyaXMsCiAgICAgICAgIyBhbmQgcHJvcGVybHkgcmVwb3J0cyBlcnJvcnMKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgICMgQ2hlY2sgbGliYyBuYW1lIGFuZCBydW50aW1lIGxpYmMgdmVyc2lvbgogICAgdHJ5OgogICAgICAgIHZlciA9IG9zLmNvbmZzdHIoJ0NTX0dOVV9MSUJDX1ZFUlNJT04nKQogICAgICAgICMgcGFyc2UgJ2dsaWJjIDIuMjgnIGFzICgnZ2xpYmMnLCAoMiwgMjgpKQogICAgICAgIHBhcnRzID0gdmVyLnNwbGl0KG1heHNwbGl0PTEpCiAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSAyOgogICAgICAgICAgICAjIHJlamVjdCB1bmtub3duIGZvcm1hdAogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgbGliYyA9IHBhcnRzWzBdCiAgICAgICAgdmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIHBhcnRzWzFdLnNwbGl0KCcuJykpKQoKICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4JyBhbmQgbGliYyA9PSAnZ2xpYmMnIGFuZCB2ZXJzaW9uID49ICgyLCAyNCk6CiAgICAgICAgICAgICMgZ2xpYmMgMi4yNCBoYXMgYSBuZXcgTGludXggcG9zaXhfc3Bhd24gaW1wbGVtZW50YXRpb24gdXNpbmcgdmZvcmsKICAgICAgICAgICAgIyB3aGljaCBwcm9wZXJseSByZXBvcnRzIGVycm9ycyB0byB0aGUgcGFyZW50IHByb2Nlc3MuCiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIyBOb3RlOiBEb24ndCB1c2UgdGhlIGltcGxlbWVudGF0aW9uIGluIGVhcmxpZXIgZ2xpYmMgYmVjYXVzZSBpdCBkb2Vzbid0CiAgICAgICAgIyB1c2UgdmZvcmsgKGV2ZW4gaWYgZ2xpYmMgMi4yNiBhZGRlZCBhIHBpcGUgdG8gcHJvcGVybHkgcmVwb3J0IGVycm9ycwogICAgICAgICMgdG8gdGhlIHBhcmVudCBwcm9jZXNzKS4KICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IsIE9TRXJyb3IpOgogICAgICAgICMgb3MuY29uZnN0cigpIG9yIENTX0dOVV9MSUJDX1ZFUlNJT04gdmFsdWUgbm90IGF2YWlsYWJsZQogICAgICAgIHBhc3MKCiAgICAjIEJ5IGRlZmF1bHQsIGFzc3VtZSB0aGF0IHBvc2l4X3NwYXduKCkgZG9lcyBub3QgcHJvcGVybHkgcmVwb3J0IGVycm9ycy4KICAgIHJldHVybiBGYWxzZQoKCiMgVGhlc2UgYXJlIHByaW1hcmlseSBmYWlsLXNhZmUga25vYnMgZm9yIG5lZ2F0aXZlcy4gQSBUcnVlIHZhbHVlIGRvZXMgbm90CiMgZ3VhcmFudGVlIHRoZSBnaXZlbiBsaWJjL3N5c2NhbGwgQVBJIHdpbGwgYmUgdXNlZC4KX1VTRV9QT1NJWF9TUEFXTiA9IF91c2VfcG9zaXhfc3Bhd24oKQpfVVNFX1ZGT1JLID0gVHJ1ZQoKCmNsYXNzIFBvcGVuOgogICAgIiIiIEV4ZWN1dGUgYSBjaGlsZCBwcm9ncmFtIGluIGEgbmV3IHByb2Nlc3MuCgogICAgRm9yIGEgY29tcGxldGUgZGVzY3JpcHRpb24gb2YgdGhlIGFyZ3VtZW50cyBzZWUgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uLgoKICAgIEFyZ3VtZW50czoKICAgICAgYXJnczogQSBzdHJpbmcsIG9yIGEgc2VxdWVuY2Ugb2YgcHJvZ3JhbSBhcmd1bWVudHMuCgogICAgICBidWZzaXplOiBzdXBwbGllZCBhcyB0aGUgYnVmZmVyaW5nIGFyZ3VtZW50IHRvIHRoZSBvcGVuKCkgZnVuY3Rpb24gd2hlbgogICAgICAgICAgY3JlYXRpbmcgdGhlIHN0ZGluL3N0ZG91dC9zdGRlcnIgcGlwZSBmaWxlIG9iamVjdHMKCiAgICAgIGV4ZWN1dGFibGU6IEEgcmVwbGFjZW1lbnQgcHJvZ3JhbSB0byBleGVjdXRlLgoKICAgICAgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyOiBUaGVzZSBzcGVjaWZ5IHRoZSBleGVjdXRlZCBwcm9ncmFtcycgc3RhbmRhcmQKICAgICAgICAgIGlucHV0LCBzdGFuZGFyZCBvdXRwdXQgYW5kIHN0YW5kYXJkIGVycm9yIGZpbGUgaGFuZGxlcywgcmVzcGVjdGl2ZWx5LgoKICAgICAgcHJlZXhlY19mbjogKFBPU0lYIG9ubHkpIEFuIG9iamVjdCB0byBiZSBjYWxsZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3MKICAgICAgICAgIGp1c3QgYmVmb3JlIHRoZSBjaGlsZCBpcyBleGVjdXRlZC4KCiAgICAgIGNsb3NlX2ZkczogQ29udHJvbHMgY2xvc2luZyBvciBpbmhlcml0aW5nIG9mIGZpbGUgZGVzY3JpcHRvcnMuCgogICAgICBzaGVsbDogSWYgdHJ1ZSwgdGhlIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCB0aHJvdWdoIHRoZSBzaGVsbC4KCiAgICAgIGN3ZDogU2V0cyB0aGUgY3VycmVudCBkaXJlY3RvcnkgYmVmb3JlIHRoZSBjaGlsZCBpcyBleGVjdXRlZC4KCiAgICAgIGVudjogRGVmaW5lcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgbmV3IHByb2Nlc3MuCgogICAgICB0ZXh0OiBJZiB0cnVlLCBkZWNvZGUgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIHVzaW5nIHRoZSBnaXZlbiBlbmNvZGluZwogICAgICAgICAgKGlmIHNldCkgb3IgdGhlIHN5c3RlbSBkZWZhdWx0IG90aGVyd2lzZS4KCiAgICAgIHVuaXZlcnNhbF9uZXdsaW5lczogQWxpYXMgb2YgdGV4dCwgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgoKICAgICAgc3RhcnR1cGluZm8gYW5kIGNyZWF0aW9uZmxhZ3MgKFdpbmRvd3Mgb25seSkKCiAgICAgIHJlc3RvcmVfc2lnbmFscyAoUE9TSVggb25seSkKCiAgICAgIHN0YXJ0X25ld19zZXNzaW9uIChQT1NJWCBvbmx5KQoKICAgICAgcHJvY2Vzc19ncm91cCAoUE9TSVggb25seSkKCiAgICAgIGdyb3VwIChQT1NJWCBvbmx5KQoKICAgICAgZXh0cmFfZ3JvdXBzIChQT1NJWCBvbmx5KQoKICAgICAgdXNlciAoUE9TSVggb25seSkKCiAgICAgIHVtYXNrIChQT1NJWCBvbmx5KQoKICAgICAgcGFzc19mZHMgKFBPU0lYIG9ubHkpCgogICAgICBlbmNvZGluZyBhbmQgZXJyb3JzOiBUZXh0IG1vZGUgZW5jb2RpbmcgYW5kIGVycm9yIGhhbmRsaW5nIHRvIHVzZSBmb3IKICAgICAgICAgIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIuCgogICAgQXR0cmlidXRlczoKICAgICAgICBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHBpZCwgcmV0dXJuY29kZQogICAgIiIiCiAgICBfY2hpbGRfY3JlYXRlZCA9IEZhbHNlICAjIFNldCBoZXJlIHNpbmNlIF9fZGVsX18gY2hlY2tzIGl0CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3MsIGJ1ZnNpemU9LTEsIGV4ZWN1dGFibGU9Tm9uZSwKICAgICAgICAgICAgICAgICBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsCiAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9VHJ1ZSwKICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgY3dkPU5vbmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9Tm9uZSwKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbz1Ob25lLCBjcmVhdGlvbmZsYWdzPTAsCiAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzPVRydWUsIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLAogICAgICAgICAgICAgICAgIHBhc3NfZmRzPSgpLCAqLCB1c2VyPU5vbmUsIGdyb3VwPU5vbmUsIGV4dHJhX2dyb3Vwcz1Ob25lLAogICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCB0ZXh0PU5vbmUsIHVtYXNrPS0xLCBwaXBlc2l6ZT0tMSwKICAgICAgICAgICAgICAgICBwcm9jZXNzX2dyb3VwPU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSBuZXcgUG9wZW4gaW5zdGFuY2UuIiIiCiAgICAgICAgaWYgbm90IF9jYW5fZm9ya19leGVjOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKAogICAgICAgICAgICAgICAgZXJybm8uRU5PVFNVUCwgZiJ7c3lzLnBsYXRmb3JtfSBkb2VzIG5vdCBzdXBwb3J0IHByb2Nlc3Nlcy4iCiAgICAgICAgICAgICkKCiAgICAgICAgX2NsZWFudXAoKQogICAgICAgICMgSGVsZCB3aGlsZSBhbnl0aGluZyBpcyBjYWxsaW5nIHdhaXRwaWQgYmVmb3JlIHJldHVybmNvZGUgaGFzIGJlZW4KICAgICAgICAjIHVwZGF0ZWQgdG8gcHJldmVudCBjbG9iYmVyaW5nIHJldHVybmNvZGUgaWYgd2FpdCgpIG9yIHBvbGwoKSBhcmUKICAgICAgICAjIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQgb25jZS4gIEFmdGVyIGFjcXVpcmluZyB0aGUgbG9jaywKICAgICAgICAjIGNvZGUgbXVzdCByZS1jaGVjayBzZWxmLnJldHVybmNvZGUgdG8gc2VlIGlmIGFub3RoZXIgdGhyZWFkIGp1c3QKICAgICAgICAjIGZpbmlzaGVkIGEgd2FpdHBpZCgpIGNhbGwuCiAgICAgICAgc2VsZi5fd2FpdHBpZF9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQoKICAgICAgICBzZWxmLl9pbnB1dCA9IE5vbmUKICAgICAgICBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgPSBGYWxzZQogICAgICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKICAgICAgICAgICAgYnVmc2l6ZSA9IC0xICAjIFJlc3RvcmUgZGVmYXVsdAogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGJ1ZnNpemUsIGludCk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYnVmc2l6ZSBtdXN0IGJlIGFuIGludGVnZXIiKQoKICAgICAgICBpZiBwaXBlc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBwaXBlc2l6ZSA9IC0xICAjIFJlc3RvcmUgZGVmYXVsdAogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBpcGVzaXplLCBpbnQpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInBpcGVzaXplIG11c3QgYmUgYW4gaW50ZWdlciIpCgogICAgICAgIGlmIF9tc3dpbmRvd3M6CiAgICAgICAgICAgIGlmIHByZWV4ZWNfZm4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcmVleGVjX2ZuIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybXMiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgUE9TSVgKICAgICAgICAgICAgaWYgcGFzc19mZHMgYW5kIG5vdCBjbG9zZV9mZHM6CiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJwYXNzX2ZkcyBvdmVycmlkaW5nIGNsb3NlX2Zkcy4iLCBSdW50aW1lV2FybmluZykKICAgICAgICAgICAgICAgIGNsb3NlX2ZkcyA9IFRydWUKICAgICAgICAgICAgaWYgc3RhcnR1cGluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzdGFydHVwaW5mbyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtcyIpCiAgICAgICAgICAgIGlmIGNyZWF0aW9uZmxhZ3MgIT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNyZWF0aW9uZmxhZ3MgaXMgb25seSBzdXBwb3J0ZWQgb24gV2luZG93cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybXMiKQoKICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgc2VsZi5zdGRpbiA9IE5vbmUKICAgICAgICBzZWxmLnN0ZG91dCA9IE5vbmUKICAgICAgICBzZWxmLnN0ZGVyciA9IE5vbmUKICAgICAgICBzZWxmLnBpZCA9IE5vbmUKICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCiAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCiAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKICAgICAgICBzZWxmLnBpcGVzaXplID0gcGlwZXNpemUKCiAgICAgICAgIyBWYWxpZGF0ZSB0aGUgY29tYmluYXRpb25zIG9mIHRleHQgYW5kIHVuaXZlcnNhbF9uZXdsaW5lcwogICAgICAgIGlmICh0ZXh0IGlzIG5vdCBOb25lIGFuZCB1bml2ZXJzYWxfbmV3bGluZXMgaXMgbm90IE5vbmUKICAgICAgICAgICAgYW5kIGJvb2wodW5pdmVyc2FsX25ld2xpbmVzKSAhPSBib29sKHRleHQpKToKICAgICAgICAgICAgcmFpc2UgU3VicHJvY2Vzc0Vycm9yKCdDYW5ub3QgZGlzYW1iaWd1YXRlIHdoZW4gYm90aCB0ZXh0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgdW5pdmVyc2FsX25ld2xpbmVzIGFyZSBzdXBwbGllZCBidXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudC4gUGFzcyBvbmUgb3IgdGhlIG90aGVyLicpCgogICAgICAgICMgSW5wdXQgYW5kIG91dHB1dCBvYmplY3RzLiBUaGUgZ2VuZXJhbCBwcmluY2lwbGUgaXMgbGlrZQogICAgICAgICMgdGhpczoKICAgICAgICAjCiAgICAgICAgIyBQYXJlbnQgICAgICAgICAgICAgICAgICAgQ2hpbGQKICAgICAgICAjIC0tLS0tLSAgICAgICAgICAgICAgICAgICAtLS0tLQogICAgICAgICMgcDJjd3JpdGUgICAtLS1zdGRpbi0tLT4gIHAyY3JlYWQKICAgICAgICAjIGMycHJlYWQgICAgPC0tc3Rkb3V0LS0tICBjMnB3cml0ZQogICAgICAgICMgZXJycmVhZCAgICA8LS1zdGRlcnItLS0gIGVycndyaXRlCiAgICAgICAgIwogICAgICAgICMgT24gUE9TSVgsIHRoZSBjaGlsZCBvYmplY3RzIGFyZSBmaWxlIGRlc2NyaXB0b3JzLiAgT24KICAgICAgICAjIFdpbmRvd3MsIHRoZXNlIGFyZSBXaW5kb3dzIGZpbGUgaGFuZGxlcy4gIFRoZSBwYXJlbnQgb2JqZWN0cwogICAgICAgICMgYXJlIGZpbGUgZGVzY3JpcHRvcnMgb24gYm90aCBwbGF0Zm9ybXMuICBUaGUgcGFyZW50IG9iamVjdHMKICAgICAgICAjIGFyZSAtMSB3aGVuIG5vdCB1c2luZyBQSVBFcy4gVGhlIGNoaWxkIG9iamVjdHMgYXJlIC0xCiAgICAgICAgIyB3aGVuIG5vdCByZWRpcmVjdGluZy4KCiAgICAgICAgKHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSwKICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUpID0gc2VsZi5fZ2V0X2hhbmRsZXMoc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQoKICAgICAgICAjIFdlIHdyYXAgT1MgaGFuZGxlcyAqYmVmb3JlKiBsYXVuY2hpbmcgdGhlIGNoaWxkLCBvdGhlcndpc2UgYQogICAgICAgICMgcXVpY2tseSB0ZXJtaW5hdGluZyBjaGlsZCBjb3VsZCBtYWtlIG91ciBmZHMgdW53cmFwcGFibGUKICAgICAgICAjIChzZWUgIzg0NTgpLgoKICAgICAgICBpZiBfbXN3aW5kb3dzOgogICAgICAgICAgICBpZiBwMmN3cml0ZSAhPSAtMToKICAgICAgICAgICAgICAgIHAyY3dyaXRlID0gbXN2Y3J0Lm9wZW5fb3NmaGFuZGxlKHAyY3dyaXRlLkRldGFjaCgpLCAwKQogICAgICAgICAgICBpZiBjMnByZWFkICE9IC0xOgogICAgICAgICAgICAgICAgYzJwcmVhZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShjMnByZWFkLkRldGFjaCgpLCAwKQogICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgogICAgICAgICAgICAgICAgZXJycmVhZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShlcnJyZWFkLkRldGFjaCgpLCAwKQoKICAgICAgICBzZWxmLnRleHRfbW9kZSA9IGVuY29kaW5nIG9yIGVycm9ycyBvciB0ZXh0IG9yIHVuaXZlcnNhbF9uZXdsaW5lcwogICAgICAgIGlmIHNlbGYudGV4dF9tb2RlIGFuZCBlbmNvZGluZyBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcgPSBfdGV4dF9lbmNvZGluZygpCgogICAgICAgICMgSG93IGxvbmcgdG8gcmVzdW1lIHdhaXRpbmcgb24gYSBjaGlsZCBhZnRlciB0aGUgZmlyc3QgXkMuCiAgICAgICAgIyBUaGVyZSBpcyBubyByaWdodCB2YWx1ZSBmb3IgdGhpcy4gIFRoZSBwdXJwb3NlIGlzIHRvIGJlIHBvbGl0ZQogICAgICAgICMgeWV0IHJlbWFpbiBnb29kIGZvciBpbnRlcmFjdGl2ZSB1c2VycyB0cnlpbmcgdG8gZXhpdCBhIHRvb2wuCiAgICAgICAgc2VsZi5fc2lnaW50X3dhaXRfc2VjcyA9IDAuMjUgICMgMS94a2NkMjIxLmdldFJhbmRvbU51bWJlcigpCgogICAgICAgIHNlbGYuX2Nsb3NlZF9jaGlsZF9waXBlX2ZkcyA9IEZhbHNlCgogICAgICAgIGlmIHNlbGYudGV4dF9tb2RlOgogICAgICAgICAgICBpZiBidWZzaXplID09IDE6CiAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IFRydWUKICAgICAgICAgICAgICAgICMgVXNlIHRoZSBkZWZhdWx0IGJ1ZmZlciBzaXplIGZvciB0aGUgdW5kZXJseWluZyBiaW5hcnkgc3RyZWFtcwogICAgICAgICAgICAgICAgIyBzaW5jZSB0aGV5IGRvbid0IHN1cHBvcnQgbGluZSBidWZmZXJpbmcuCiAgICAgICAgICAgICAgICBidWZzaXplID0gLTEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nID0gRmFsc2UKCiAgICAgICAgaWYgcHJvY2Vzc19ncm91cCBpcyBOb25lOgogICAgICAgICAgICBwcm9jZXNzX2dyb3VwID0gLTEgICMgVGhlIGludGVybmFsIEFQSXMgYXJlIGludC1vbmx5CgogICAgICAgIGdpZCA9IE5vbmUKICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIob3MsICdzZXRyZWdpZCcpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlICdncm91cCcgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1cnJlbnQgcGxhdGZvcm0iKQoKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGdyb3VwLCBzdHIpOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGltcG9ydCBncnAKICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgZ3JvdXAgcGFyYW1ldGVyIGNhbm5vdCBiZSBhIHN0cmluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gc3lzdGVtcyB3aXRob3V0IHRoZSBncnAgbW9kdWxlIikKCiAgICAgICAgICAgICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oZ3JvdXApLmdyX2dpZAogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZ3JvdXAsIGludCk6CiAgICAgICAgICAgICAgICBnaWQgPSBncm91cAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJHcm91cCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGludGVnZXIsIG5vdCB7fSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHR5cGUoZ3JvdXApKSkKCiAgICAgICAgICAgIGlmIGdpZCA8IDA6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiR3JvdXAgSUQgY2Fubm90IGJlIG5lZ2F0aXZlLCBnb3Qge2dpZH0iKQoKICAgICAgICBnaWRzID0gTm9uZQogICAgICAgIGlmIGV4dHJhX2dyb3VwcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIob3MsICdzZXRncm91cHMnKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSAnZXh0cmFfZ3JvdXBzJyBwYXJhbWV0ZXIgaXMgbm90ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybSIpCgogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXh0cmFfZ3JvdXBzLCBzdHIpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiR3JvdXBzIG11c3QgYmUgYSBsaXN0LCBub3QgYSBzdHJpbmciKQoKICAgICAgICAgICAgZ2lkcyA9IFtdCiAgICAgICAgICAgIGZvciBleHRyYV9ncm91cCBpbiBleHRyYV9ncm91cHM6CiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4dHJhX2dyb3VwLCBzdHIpOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGdycAogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSXRlbXMgaW4gZXh0cmFfZ3JvdXBzIGNhbm5vdCBiZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3Mgb24gc3lzdGVtcyB3aXRob3V0IHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdycCBtb2R1bGUiKQoKICAgICAgICAgICAgICAgICAgICBnaWRzLmFwcGVuZChncnAuZ2V0Z3JuYW0oZXh0cmFfZ3JvdXApLmdyX2dpZCkKICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShleHRyYV9ncm91cCwgaW50KToKICAgICAgICAgICAgICAgICAgICBnaWRzLmFwcGVuZChleHRyYV9ncm91cCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJdGVtcyBpbiBleHRyYV9ncm91cHMgbXVzdCBiZSBhIHN0cmluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvciBpbnRlZ2VyLCBub3Qge30iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodHlwZShleHRyYV9ncm91cCkpKQoKICAgICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgZ2lkcyBhcmUgYWxsIHBvc2l0aXZlIGhlcmUgc28gd2UgY2FuIGRvIGxlc3MKICAgICAgICAgICAgIyBjaGVja2luZyBpbiB0aGUgQyBjb2RlCiAgICAgICAgICAgIGZvciBnaWRfY2hlY2sgaW4gZ2lkczoKICAgICAgICAgICAgICAgIGlmIGdpZF9jaGVjayA8IDA6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIkdyb3VwIElEIGNhbm5vdCBiZSBuZWdhdGl2ZSwgZ290IHtnaWRfY2hlY2t9IikKCiAgICAgICAgdWlkID0gTm9uZQogICAgICAgIGlmIHVzZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAnc2V0cmV1aWQnKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSAndXNlcicgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGN1cnJlbnQgcGxhdGZvcm0iKQoKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHVzZXIsIHN0cik6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHB3ZAogICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSB1c2VyIHBhcmFtZXRlciBjYW5ub3QgYmUgYSBzdHJpbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIHN5c3RlbXMgd2l0aG91dCB0aGUgcHdkIG1vZHVsZSIpCiAgICAgICAgICAgICAgICB1aWQgPSBwd2QuZ2V0cHduYW0odXNlcikucHdfdWlkCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh1c2VyLCBpbnQpOgogICAgICAgICAgICAgICAgdWlkID0gdXNlcgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVc2VyIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gaW50ZWdlciIpCgogICAgICAgICAgICBpZiB1aWQgPCAwOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIlVzZXIgSUQgY2Fubm90IGJlIG5lZ2F0aXZlLCBnb3Qge3VpZH0iKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgogICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCiAgICAgICAgICAgICAgICBpZiBzZWxmLnRleHRfbW9kZToKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGluLCB3cml0ZV90aHJvdWdoPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1saW5lX2J1ZmZlcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQogICAgICAgICAgICBpZiBjMnByZWFkICE9IC0xOgogICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCiAgICAgICAgICAgICAgICBpZiBzZWxmLnRleHRfbW9kZToKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKICAgICAgICAgICAgaWYgZXJycmVhZCAhPSAtMToKICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gaW8ub3BlbihlcnJyZWFkLCAncmInLCBidWZzaXplKQogICAgICAgICAgICAgICAgaWYgc2VsZi50ZXh0X21vZGU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCgogICAgICAgICAgICBzZWxmLl9leGVjdXRlX2NoaWxkKGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8sIGNyZWF0aW9uZmxhZ3MsIHNoZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaWQsIGdpZHMsIHVpZCwgdW1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X3Nlc3Npb24sIHByb2Nlc3NfZ3JvdXApCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAjIENsZWFudXAgaWYgdGhlIGNoaWxkIGZhaWxlZCBzdGFydGluZy4KICAgICAgICAgICAgZm9yIGYgaW4gZmlsdGVyKE5vbmUsIChzZWxmLnN0ZGluLCBzZWxmLnN0ZG91dCwgc2VsZi5zdGRlcnIpKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MgICMgSWdub3JlIEVCQURGIG9yIG90aGVyIGVycm9ycy4KCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWRfY2hpbGRfcGlwZV9mZHM6CiAgICAgICAgICAgICAgICB0b19jbG9zZSA9IFtdCiAgICAgICAgICAgICAgICBpZiBzdGRpbiA9PSBQSVBFOgogICAgICAgICAgICAgICAgICAgIHRvX2Nsb3NlLmFwcGVuZChwMmNyZWFkKQogICAgICAgICAgICAgICAgaWYgc3Rkb3V0ID09IFBJUEU6CiAgICAgICAgICAgICAgICAgICAgdG9fY2xvc2UuYXBwZW5kKGMycHdyaXRlKQogICAgICAgICAgICAgICAgaWYgc3RkZXJyID09IFBJUEU6CiAgICAgICAgICAgICAgICAgICAgdG9fY2xvc2UuYXBwZW5kKGVycndyaXRlKQogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKICAgICAgICAgICAgICAgICAgICB0b19jbG9zZS5hcHBlbmQoc2VsZi5fZGV2bnVsbCkKICAgICAgICAgICAgICAgIGZvciBmZCBpbiB0b19jbG9zZToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIF9tc3dpbmRvd3MgYW5kIGlzaW5zdGFuY2UoZmQsIEhhbmRsZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgb2JqX3JlcHIgPSAoCiAgICAgICAgICAgIGYiPHtzZWxmLl9fY2xhc3NfXy5fX25hbWVfX306ICIKICAgICAgICAgICAgZiJyZXR1cm5jb2RlOiB7c2VsZi5yZXR1cm5jb2RlfSBhcmdzOiB7c2VsZi5hcmdzIXJ9PiIKICAgICAgICApCiAgICAgICAgaWYgbGVuKG9ial9yZXByKSA+IDgwOgogICAgICAgICAgICBvYmpfcmVwciA9IG9ial9yZXByWzo3Nl0gKyAiLi4uPiIKICAgICAgICByZXR1cm4gb2JqX3JlcHIKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKHR5cGVzLkdlbmVyaWNBbGlhcykKCiAgICBAcHJvcGVydHkKICAgIGRlZiB1bml2ZXJzYWxfbmV3bGluZXMoc2VsZik6CiAgICAgICAgIyB1bml2ZXJzYWxfbmV3bGluZXMgYXMgcmV0YWluZWQgYXMgYW4gYWxpYXMgb2YgdGV4dF9tb2RlIGZvciBBUEkKICAgICAgICAjIGNvbXBhdGliaWxpdHkuIGJwby0zMTc1NgogICAgICAgIHJldHVybiBzZWxmLnRleHRfbW9kZQoKICAgIEB1bml2ZXJzYWxfbmV3bGluZXMuc2V0dGVyCiAgICBkZWYgdW5pdmVyc2FsX25ld2xpbmVzKHNlbGYsIHVuaXZlcnNhbF9uZXdsaW5lcyk6CiAgICAgICAgc2VsZi50ZXh0X21vZGUgPSBib29sKHVuaXZlcnNhbF9uZXdsaW5lcykKCiAgICBkZWYgX3RyYW5zbGF0ZV9uZXdsaW5lcyhzZWxmLCBkYXRhLCBlbmNvZGluZywgZXJyb3JzKToKICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICByZXR1cm4gZGF0YS5yZXBsYWNlKCJcclxuIiwgIlxuIikucmVwbGFjZSgiXHIiLCAiXG4iKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgogICAgICAgIGlmIHNlbGYuc3Rkb3V0OgogICAgICAgICAgICBzZWxmLnN0ZG91dC5jbG9zZSgpCiAgICAgICAgaWYgc2VsZi5zdGRlcnI6CiAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKICAgICAgICB0cnk6ICAjIEZsdXNoaW5nIGEgQnVmZmVyZWRXcml0ZXIgbWF5IHJhaXNlIGFuIGVycm9yCiAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CiAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBleGNfdHlwZSA9PSBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNTk0MgogICAgICAgICAgICAgICAgIyBJbiB0aGUgY2FzZSBvZiBhIEtleWJvYXJkSW50ZXJydXB0IHdlIGFzc3VtZSB0aGUgU0lHSU5UCiAgICAgICAgICAgICAgICAjIHdhcyBhbHNvIGFscmVhZHkgc2VudCB0byBvdXIgY2hpbGQgcHJvY2Vzc2VzLiAgV2UgY2FuJ3QKICAgICAgICAgICAgICAgICMgYmxvY2sgaW5kZWZpbml0ZWx5IGFzIHRoYXQgaXMgbm90IHVzZXIgZnJpZW5kbHkuCiAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgbm90IGFscmVhZHkgd2FpdGVkIGEgYnJpZWYgYW1vdW50IG9mIHRpbWUgaW4KICAgICAgICAgICAgICAgICMgYW4gaW50ZXJydXB0ZWQgLndhaXQoKSBvciAuY29tbXVuaWNhdGUoKSBjYWxsLCBkbyBzbyBoZXJlCiAgICAgICAgICAgICAgICAjIGZvciBjb25zaXN0ZW5jeS4KICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NpZ2ludF93YWl0X3NlY3MgPiAwOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2FpdCh0aW1lb3V0PXNlbGYuX3NpZ2ludF93YWl0X3NlY3MpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgogICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBzZWxmLl9zaWdpbnRfd2FpdF9zZWNzID0gMCAgIyBOb3RlIHRoYXQgdGhpcyBoYXMgYmVlbiBkb25lLgogICAgICAgICAgICAgICAgcmV0dXJuICAjIHJlc3VtZSB0aGUgS2V5Ym9hcmRJbnRlcnJ1cHQKCiAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIHByb2Nlc3MgdG8gdGVybWluYXRlLCB0byBhdm9pZCB6b21iaWVzLgogICAgICAgICAgICBzZWxmLndhaXQoKQoKICAgIGRlZiBfX2RlbF9fKHNlbGYsIF9tYXhzaXplPXN5cy5tYXhzaXplLCBfd2Fybj13YXJuaW5ncy53YXJuKToKICAgICAgICBpZiBub3Qgc2VsZi5fY2hpbGRfY3JlYXRlZDoKICAgICAgICAgICAgIyBXZSBkaWRuJ3QgZ2V0IHRvIHN1Y2Nlc3NmdWxseSBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzLgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgIyBOb3QgcmVhZGluZyBzdWJwcm9jZXNzIGV4aXQgc3RhdHVzIGNyZWF0ZXMgYSB6b21iaWUgcHJvY2VzcyB3aGljaAogICAgICAgICAgICAjIGlzIG9ubHkgZGVzdHJveWVkIGF0IHRoZSBwYXJlbnQgcHl0aG9uIHByb2Nlc3MgZXhpdAogICAgICAgICAgICBfd2Fybigic3VicHJvY2VzcyAlcyBpcyBzdGlsbCBydW5uaW5nIiAlIHNlbGYucGlkLAogICAgICAgICAgICAgICAgICBSZXNvdXJjZVdhcm5pbmcsIHNvdXJjZT1zZWxmKQogICAgICAgICMgSW4gY2FzZSB0aGUgY2hpbGQgaGFzbid0IGJlZW4gd2FpdGVkIG9uLCBjaGVjayBpZiBpdCdzIGRvbmUuCiAgICAgICAgc2VsZi5faW50ZXJuYWxfcG9sbChfZGVhZHN0YXRlPV9tYXhzaXplKQogICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lIGFuZCBfYWN0aXZlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIENoaWxkIGlzIHN0aWxsIHJ1bm5pbmcsIGtlZXAgdXMgYWxpdmUgdW50aWwgd2UgY2FuIHdhaXQgb24gaXQuCiAgICAgICAgICAgIF9hY3RpdmUuYXBwZW5kKHNlbGYpCgogICAgZGVmIF9nZXRfZGV2bnVsbChzZWxmKToKICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKICAgICAgICAgICAgc2VsZi5fZGV2bnVsbCA9IG9zLm9wZW4ob3MuZGV2bnVsbCwgb3MuT19SRFdSKQogICAgICAgIHJldHVybiBzZWxmLl9kZXZudWxsCgogICAgZGVmIF9zdGRpbl93cml0ZShzZWxmLCBpbnB1dCk6CiAgICAgICAgaWYgaW5wdXQ6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4ud3JpdGUoaW5wdXQpCiAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzICAjIGNvbW11bmljYXRlKCkgbXVzdCBpZ25vcmUgYnJva2VuIHBpcGUgZXJyb3JzLgogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUlOVkFMOgogICAgICAgICAgICAgICAgICAgICMgYnBvLTE5NjEyLCBicG8tMzA0MTg6IE9uIFdpbmRvd3MsIHN0ZGluLndyaXRlKCkgZmFpbHMKICAgICAgICAgICAgICAgICAgICAjIHdpdGggRUlOVkFMIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGV4aXRlZCBvciBpZiB0aGUgY2hpbGQKICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZyBidXQgY2xvc2VkIHRoZSBwaXBlLgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKICAgICAgICBleGNlcHQgQnJva2VuUGlwZUVycm9yOgogICAgICAgICAgICBwYXNzICAjIGNvbW11bmljYXRlKCkgbXVzdCBpZ25vcmUgYnJva2VuIHBpcGUgZXJyb3JzLgogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVJTlZBTDoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlCgogICAgZGVmIGNvbW11bmljYXRlKHNlbGYsIGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIiIiSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4gYW5kIGNsb3NlIGl0LgogICAgICAgIFJlYWQgZGF0YSBmcm9tIHN0ZG91dCBhbmQgc3RkZXJyLCB1bnRpbCBlbmQtb2YtZmlsZSBpcwogICAgICAgIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4KCiAgICAgICAgVGhlIG9wdGlvbmFsICJpbnB1dCIgYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUKICAgICAgICBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KICAgICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLgoKICAgICAgICBCeSBkZWZhdWx0LCBhbGwgY29tbXVuaWNhdGlvbiBpcyBpbiBieXRlcywgYW5kIHRoZXJlZm9yZSBhbnkKICAgICAgICAiaW5wdXQiIHNob3VsZCBiZSBieXRlcywgYW5kIHRoZSAoc3Rkb3V0LCBzdGRlcnIpIHdpbGwgYmUgYnl0ZXMuCiAgICAgICAgSWYgaW4gdGV4dCBtb2RlIChpbmRpY2F0ZWQgYnkgc2VsZi50ZXh0X21vZGUpLCBhbnkgImlucHV0IiBzaG91bGQKICAgICAgICBiZSBhIHN0cmluZywgYW5kIChzdGRvdXQsIHN0ZGVycikgd2lsbCBiZSBzdHJpbmdzIGRlY29kZWQKICAgICAgICBhY2NvcmRpbmcgdG8gbG9jYWxlIGVuY29kaW5nLCBvciBieSAiZW5jb2RpbmciIGlmIHNldC4gVGV4dCBtb2RlCiAgICAgICAgaXMgdHJpZ2dlcmVkIGJ5IHNldHRpbmcgYW55IG9mIHRleHQsIGVuY29kaW5nLCBlcnJvcnMgb3IKICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXMuCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCBhbmQgaW5wdXQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBzZW5kIGlucHV0IGFmdGVyIHN0YXJ0aW5nIGNvbW11bmljYXRpb24iKQoKICAgICAgICAjIE9wdGltaXphdGlvbjogSWYgd2UgYXJlIG5vdCB3b3JyaWVkIGFib3V0IHRpbWVvdXRzLCB3ZSBoYXZlbid0CiAgICAgICAgIyBzdGFydGVkIGNvbW11bmljYXRpbmcsIGFuZCB3ZSBoYXZlIG9uZSBvciB6ZXJvIHBpcGVzLCB1c2luZyBzZWxlY3QoKQogICAgICAgICMgb3IgdGhyZWFkcyBpcyB1bm5lY2Vzc2FyeS4KICAgICAgICBpZiAodGltZW91dCBpcyBOb25lIGFuZCBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkIGFuZAogICAgICAgICAgICBbc2VsZi5zdGRpbiwgc2VsZi5zdGRvdXQsIHNlbGYuc3RkZXJyXS5jb3VudChOb25lKSA+PSAyKToKICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQogICAgICAgICAgICBzdGRlcnIgPSBOb25lCiAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CiAgICAgICAgICAgICAgICBzZWxmLl9zdGRpbl93cml0ZShpbnB1dCkKICAgICAgICAgICAgZWxpZiBzZWxmLnN0ZG91dDoKICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuc3Rkb3V0LnJlYWQoKQogICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICBlbGlmIHNlbGYuc3RkZXJyOgogICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5zdGRlcnIucmVhZCgpCiAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCiAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGUoaW5wdXQsIGVuZHRpbWUsIHRpbWVvdXQpCiAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNTk0MgogICAgICAgICAgICAgICAgIyBTZWUgdGhlIGRldGFpbGVkIGNvbW1lbnQgaW4gLndhaXQoKS4KICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc2lnaW50X3RpbWVvdXQgPSBtaW4oc2VsZi5fc2lnaW50X3dhaXRfc2VjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2lnaW50X3RpbWVvdXQgPSBzZWxmLl9zaWdpbnRfd2FpdF9zZWNzCiAgICAgICAgICAgICAgICBzZWxmLl9zaWdpbnRfd2FpdF9zZWNzID0gMCAgIyBub3RoaW5nIGVsc2Ugc2hvdWxkIHdhaXQuCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2FpdCh0aW1lb3V0PXNpZ2ludF90aW1lb3V0KQogICAgICAgICAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIHJhaXNlICAjIHJlc3VtZSB0aGUgS2V5Ym9hcmRJbnRlcnJ1cHQKCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgPSBUcnVlCgogICAgICAgICAgICBzdHMgPSBzZWxmLndhaXQodGltZW91dD1zZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKCiAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKCgogICAgZGVmIHBvbGwoc2VsZik6CiAgICAgICAgIiIiQ2hlY2sgaWYgY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZC4gU2V0IGFuZCByZXR1cm4gcmV0dXJuY29kZQogICAgICAgIGF0dHJpYnV0ZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcG9sbCgpCgoKICAgIGRlZiBfcmVtYWluaW5nX3RpbWUoc2VsZiwgZW5kdGltZSk6CiAgICAgICAgIiIiQ29udmVuaWVuY2UgZm9yIF9jb21tdW5pY2F0ZSB3aGVuIGNvbXB1dGluZyB0aW1lb3V0cy4iIiIKICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGVuZHRpbWUgLSBfdGltZSgpCgoKICAgIGRlZiBfY2hlY2tfdGltZW91dChzZWxmLCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQsIHN0ZG91dF9zZXEsIHN0ZGVycl9zZXEsCiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9jaGVja19hbmRfcmFpc2U9RmFsc2UpOgogICAgICAgICIiIkNvbnZlbmllbmNlIGZvciBjaGVja2luZyBpZiBhIHRpbWVvdXQgaGFzIGV4cGlyZWQuIiIiCiAgICAgICAgaWYgZW5kdGltZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBza2lwX2NoZWNrX2FuZF9yYWlzZSBvciBfdGltZSgpID4gZW5kdGltZToKICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgb3V0cHV0PWInJy5qb2luKHN0ZG91dF9zZXEpIGlmIHN0ZG91dF9zZXEgZWxzZSBOb25lLAogICAgICAgICAgICAgICAgICAgIHN0ZGVycj1iJycuam9pbihzdGRlcnJfc2VxKSBpZiBzdGRlcnJfc2VxIGVsc2UgTm9uZSkKCgogICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZTsgcmV0dXJucyBzZWxmLnJldHVybmNvZGUuIiIiCiAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fd2FpdCh0aW1lb3V0PXRpbWVvdXQpCiAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAjIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjU5NDIKICAgICAgICAgICAgIyBUaGUgZmlyc3Qga2V5Ym9hcmQgaW50ZXJydXB0IHdhaXRzIGJyaWVmbHkgZm9yIHRoZSBjaGlsZCB0bwogICAgICAgICAgICAjIGV4aXQgdW5kZXIgdGhlIGNvbW1vbiBhc3N1bXB0aW9uIHRoYXQgaXQgYWxzbyByZWNlaXZlZCB0aGUgXkMKICAgICAgICAgICAgIyBnZW5lcmF0ZWQgU0lHSU5UIGFuZCB3aWxsIGV4aXQgcmFwaWRseS4KICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNpZ2ludF90aW1lb3V0ID0gbWluKHNlbGYuX3NpZ2ludF93YWl0X3NlY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNpZ2ludF90aW1lb3V0ID0gc2VsZi5fc2lnaW50X3dhaXRfc2VjcwogICAgICAgICAgICBzZWxmLl9zaWdpbnRfd2FpdF9zZWNzID0gMCAgIyBub3RoaW5nIGVsc2Ugc2hvdWxkIHdhaXQuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX3dhaXQodGltZW91dD1zaWdpbnRfdGltZW91dCkKICAgICAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICByYWlzZSAgIyByZXN1bWUgdGhlIEtleWJvYXJkSW50ZXJydXB0CgogICAgZGVmIF9jbG9zZV9waXBlX2ZkcyhzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlKToKICAgICAgICAjIHNlbGYuX2Rldm51bGwgaXMgbm90IGFsd2F5cyBkZWZpbmVkLgogICAgICAgIGRldm51bGxfZmQgPSBnZXRhdHRyKHNlbGYsICdfZGV2bnVsbCcsIE5vbmUpCgogICAgICAgIHdpdGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoKICAgICAgICAgICAgaWYgX21zd2luZG93czoKICAgICAgICAgICAgICAgIGlmIHAyY3JlYWQgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socDJjcmVhZC5DbG9zZSkKICAgICAgICAgICAgICAgIGlmIGMycHdyaXRlICE9IC0xOgogICAgICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKGMycHdyaXRlLkNsb3NlKQogICAgICAgICAgICAgICAgaWYgZXJyd3JpdGUgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2soZXJyd3JpdGUuQ2xvc2UpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBwMmNyZWFkICE9IC0xIGFuZCBwMmN3cml0ZSAhPSAtMSBhbmQgcDJjcmVhZCAhPSBkZXZudWxsX2ZkOgogICAgICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKG9zLmNsb3NlLCBwMmNyZWFkKQogICAgICAgICAgICAgICAgaWYgYzJwd3JpdGUgIT0gLTEgYW5kIGMycHJlYWQgIT0gLTEgYW5kIGMycHdyaXRlICE9IGRldm51bGxfZmQ6CiAgICAgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2sob3MuY2xvc2UsIGMycHdyaXRlKQogICAgICAgICAgICAgICAgaWYgZXJyd3JpdGUgIT0gLTEgYW5kIGVycnJlYWQgIT0gLTEgYW5kIGVycndyaXRlICE9IGRldm51bGxfZmQ6CiAgICAgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2sob3MuY2xvc2UsIGVycndyaXRlKQoKICAgICAgICAgICAgaWYgZGV2bnVsbF9mZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKG9zLmNsb3NlLCBkZXZudWxsX2ZkKQoKICAgICAgICAjIFByZXZlbnQgYSBkb3VibGUgY2xvc2Ugb2YgdGhlc2UgaGFuZGxlcy9mZHMgZnJvbSBfX2luaXRfXyBvbiBlcnJvci4KICAgICAgICBzZWxmLl9jbG9zZWRfY2hpbGRfcGlwZV9mZHMgPSBUcnVlCgogICAgaWYgX21zd2luZG93czoKICAgICAgICAjCiAgICAgICAgIyBXaW5kb3dzIG1ldGhvZHMKICAgICAgICAjCiAgICAgICAgZGVmIF9nZXRfaGFuZGxlcyhzZWxmLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpOgogICAgICAgICAgICAiIiJDb25zdHJ1Y3QgYW5kIHJldHVybiB0dXBsZSB3aXRoIElPIG9iamVjdHM6CiAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLCBjMnByZWFkLCBjMnB3cml0ZSwgZXJycmVhZCwgZXJyd3JpdGUKICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIGlmIHN0ZGluIGlzIE5vbmUgYW5kIHN0ZG91dCBpcyBOb25lIGFuZCBzdGRlcnIgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiAoLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSkKCiAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gLTEsIC0xCiAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gLTEsIC0xCiAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlID0gLTEsIC0xCgogICAgICAgICAgICBpZiBzdGRpbiBpcyBOb25lOgogICAgICAgICAgICAgICAgcDJjcmVhZCA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX0lOUFVUX0hBTkRMRSkKICAgICAgICAgICAgICAgIGlmIHAyY3JlYWQgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBfID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCiAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IEhhbmRsZShwMmNyZWFkKQogICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBQSVBFOgogICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gSGFuZGxlKHAyY3JlYWQpLCBIYW5kbGUocDJjd3JpdGUpCiAgICAgICAgICAgIGVsaWYgc3RkaW4gPT0gREVWTlVMTDoKICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGludCk6CiAgICAgICAgICAgICAgICBwMmNyZWFkID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc3RkaW4pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIEFzc3VtaW5nIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRpbi5maWxlbm8oKSkKICAgICAgICAgICAgcDJjcmVhZCA9IHNlbGYuX21ha2VfaW5oZXJpdGFibGUocDJjcmVhZCkKCiAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBOb25lOgogICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBfd2luYXBpLkdldFN0ZEhhbmRsZShfd2luYXBpLlNURF9PVVRQVVRfSEFORExFKQogICAgICAgICAgICAgICAgaWYgYzJwd3JpdGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBfLCBjMnB3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQogICAgICAgICAgICAgICAgICAgIGMycHdyaXRlID0gSGFuZGxlKGMycHdyaXRlKQogICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgZWxpZiBzdGRvdXQgPT0gUElQRToKICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCiAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IEhhbmRsZShjMnByZWFkKSwgSGFuZGxlKGMycHdyaXRlKQogICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBERVZOVUxMOgogICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3Rkb3V0LCBpbnQpOgogICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRvdXQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIEFzc3VtaW5nIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAgICAgICAgIGMycHdyaXRlID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc3Rkb3V0LmZpbGVubygpKQogICAgICAgICAgICBjMnB3cml0ZSA9IHNlbGYuX21ha2VfaW5oZXJpdGFibGUoYzJwd3JpdGUpCgogICAgICAgICAgICBpZiBzdGRlcnIgaXMgTm9uZToKICAgICAgICAgICAgICAgIGVycndyaXRlID0gX3dpbmFwaS5HZXRTdGRIYW5kbGUoX3dpbmFwaS5TVERfRVJST1JfSEFORExFKQogICAgICAgICAgICAgICAgaWYgZXJyd3JpdGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBfLCBlcnJ3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQogICAgICAgICAgICAgICAgICAgIGVycndyaXRlID0gSGFuZGxlKGVycndyaXRlKQogICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gUElQRToKICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCiAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IEhhbmRsZShlcnJyZWFkKSwgSGFuZGxlKGVycndyaXRlKQogICAgICAgICAgICBlbGlmIHN0ZGVyciA9PSBTVERPVVQ6CiAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IGMycHdyaXRlCiAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IERFVk5VTEw6CiAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHNlbGYuX2dldF9kZXZudWxsKCkpCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRlcnIsIGludCk6CiAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZGVycikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgQXNzdW1pbmcgZmlsZS1saWtlIG9iamVjdAogICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRlcnIuZmlsZW5vKCkpCiAgICAgICAgICAgIGVycndyaXRlID0gc2VsZi5fbWFrZV9pbmhlcml0YWJsZShlcnJ3cml0ZSkKCiAgICAgICAgICAgIHJldHVybiAocDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUpCgoKICAgICAgICBkZWYgX21ha2VfaW5oZXJpdGFibGUoc2VsZiwgaGFuZGxlKToKICAgICAgICAgICAgIiIiUmV0dXJuIGEgZHVwbGljYXRlIG9mIGhhbmRsZSwgd2hpY2ggaXMgaW5oZXJpdGFibGUiIiIKICAgICAgICAgICAgaCA9IF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAogICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsCiAgICAgICAgICAgICAgICBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCksIDAsIDEsCiAgICAgICAgICAgICAgICBfd2luYXBpLkRVUExJQ0FURV9TQU1FX0FDQ0VTUykKICAgICAgICAgICAgcmV0dXJuIEhhbmRsZShoKQoKCiAgICAgICAgZGVmIF9maWx0ZXJfaGFuZGxlX2xpc3Qoc2VsZiwgaGFuZGxlX2xpc3QpOgogICAgICAgICAgICAiIiJGaWx0ZXIgb3V0IGNvbnNvbGUgaGFuZGxlcyB0aGF0IGNhbid0IGJlIHVzZWQKICAgICAgICAgICAgaW4gbHBBdHRyaWJ1dGVMaXN0WyJoYW5kbGVfbGlzdCJdIGFuZCBtYWtlIHN1cmUgdGhlIGxpc3QKICAgICAgICAgICAgaXNuJ3QgZW1wdHkuIFRoaXMgYWxzbyByZW1vdmVzIGR1cGxpY2F0ZSBoYW5kbGVzLiIiIgogICAgICAgICAgICAjIEFuIGhhbmRsZSB3aXRoIGl0J3MgbG93ZXN0IHR3byBiaXRzIHNldCBtaWdodCBiZSBhIHNwZWNpYWwgY29uc29sZQogICAgICAgICAgICAjIGhhbmRsZSB0aGF0IGlmIHBhc3NlZCBpbiBscEF0dHJpYnV0ZUxpc3RbImhhbmRsZV9saXN0Il0sIHdpbGwKICAgICAgICAgICAgIyBjYXVzZSBpdCB0byBmYWlsLgogICAgICAgICAgICByZXR1cm4gbGlzdCh7aGFuZGxlIGZvciBoYW5kbGUgaW4gaGFuZGxlX2xpc3QKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhbmRsZSAmIDB4MyAhPSAweDMKICAgICAgICAgICAgICAgICAgICAgICAgIG9yIF93aW5hcGkuR2V0RmlsZVR5cGUoaGFuZGxlKSAhPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5GSUxFX1RZUEVfQ0hBUn0pCgoKICAgICAgICBkZWYgX2V4ZWN1dGVfY2hpbGQoc2VsZiwgYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkX3Jlc3RvcmVfc2lnbmFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkX2dpZCwgdW51c2VkX2dpZHMsIHVudXNlZF91aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZF91bWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkX3N0YXJ0X25ld19zZXNzaW9uLCB1bnVzZWRfcHJvY2Vzc19ncm91cCk6CiAgICAgICAgICAgICIiIkV4ZWN1dGUgcHJvZ3JhbSAoTVMgV2luZG93cyB2ZXJzaW9uKSIiIgoKICAgICAgICAgICAgYXNzZXJ0IG5vdCBwYXNzX2ZkcywgInBhc3NfZmRzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cy4iCgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZ3MsIHN0cik6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhcmdzLCBieXRlcyk6CiAgICAgICAgICAgICAgICBpZiBzaGVsbDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2J5dGVzIGFyZ3MgaXMgbm90IGFsbG93ZWQgb24gV2luZG93cycpCiAgICAgICAgICAgICAgICBhcmdzID0gbGlzdDJjbWRsaW5lKFthcmdzXSkKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGFyZ3MsIG9zLlBhdGhMaWtlKToKICAgICAgICAgICAgICAgIGlmIHNoZWxsOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigncGF0aC1saWtlIGFyZ3MgaXMgbm90IGFsbG93ZWQgd2hlbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGVsbCBpcyB0cnVlJykKICAgICAgICAgICAgICAgIGFyZ3MgPSBsaXN0MmNtZGxpbmUoW2FyZ3NdKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXJncyA9IGxpc3QyY21kbGluZShhcmdzKQoKICAgICAgICAgICAgaWYgZXhlY3V0YWJsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5mc2RlY29kZShleGVjdXRhYmxlKQoKICAgICAgICAgICAgIyBQcm9jZXNzIHN0YXJ0dXAgZGV0YWlscwogICAgICAgICAgICBpZiBzdGFydHVwaW5mbyBpcyBOb25lOgogICAgICAgICAgICAgICAgc3RhcnR1cGluZm8gPSBTVEFSVFVQSU5GTygpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIGJwby0zNDA0NDogQ29weSBTVEFSVFVQSU5GTyBzaW5jZSBpdCBpcyBtb2RpZmllZCBhYm92ZSwKICAgICAgICAgICAgICAgICMgc28gdGhlIGNhbGxlciBjYW4gcmV1c2UgaXQgbXVsdGlwbGUgdGltZXMuCiAgICAgICAgICAgICAgICBzdGFydHVwaW5mbyA9IHN0YXJ0dXBpbmZvLmNvcHkoKQoKICAgICAgICAgICAgdXNlX3N0ZF9oYW5kbGVzID0gLTEgbm90IGluIChwMmNyZWFkLCBjMnB3cml0ZSwgZXJyd3JpdGUpCiAgICAgICAgICAgIGlmIHVzZV9zdGRfaGFuZGxlczoKICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3dpbmFwaS5TVEFSVEZfVVNFU1RESEFORExFUwogICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uaFN0ZElucHV0ID0gcDJjcmVhZAogICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uaFN0ZE91dHB1dCA9IGMycHdyaXRlCiAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkRXJyb3IgPSBlcnJ3cml0ZQoKICAgICAgICAgICAgYXR0cmlidXRlX2xpc3QgPSBzdGFydHVwaW5mby5scEF0dHJpYnV0ZUxpc3QKICAgICAgICAgICAgaGF2ZV9oYW5kbGVfbGlzdCA9IGJvb2woYXR0cmlidXRlX2xpc3QgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGVfbGlzdCIgaW4gYXR0cmlidXRlX2xpc3QgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZV9saXN0WyJoYW5kbGVfbGlzdCJdKQoKICAgICAgICAgICAgIyBJZiB3ZSB3ZXJlIGdpdmVuIGFuIGhhbmRsZV9saXN0IG9yIG5lZWQgdG8gY3JlYXRlIG9uZQogICAgICAgICAgICBpZiBoYXZlX2hhbmRsZV9saXN0IG9yICh1c2Vfc3RkX2hhbmRsZXMgYW5kIGNsb3NlX2Zkcyk6CiAgICAgICAgICAgICAgICBpZiBhdHRyaWJ1dGVfbGlzdCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZV9saXN0ID0gc3RhcnR1cGluZm8ubHBBdHRyaWJ1dGVMaXN0ID0ge30KICAgICAgICAgICAgICAgIGhhbmRsZV9saXN0ID0gYXR0cmlidXRlX2xpc3RbImhhbmRsZV9saXN0Il0gPSBcCiAgICAgICAgICAgICAgICAgICAgbGlzdChhdHRyaWJ1dGVfbGlzdC5nZXQoImhhbmRsZV9saXN0IiwgW10pKQoKICAgICAgICAgICAgICAgIGlmIHVzZV9zdGRfaGFuZGxlczoKICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbGlzdCArPSBbaW50KHAyY3JlYWQpLCBpbnQoYzJwd3JpdGUpLCBpbnQoZXJyd3JpdGUpXQoKICAgICAgICAgICAgICAgIGhhbmRsZV9saXN0WzpdID0gc2VsZi5fZmlsdGVyX2hhbmRsZV9saXN0KGhhbmRsZV9saXN0KQoKICAgICAgICAgICAgICAgIGlmIGhhbmRsZV9saXN0OgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjbG9zZV9mZHM6CiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInN0YXJ0dXBpbmZvLmxwQXR0cmlidXRlTGlzdFsnaGFuZGxlX2xpc3QnXSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm92ZXJyaWRpbmcgY2xvc2VfZmRzIiwgUnVudGltZVdhcm5pbmcpCgogICAgICAgICAgICAgICAgICAgICMgV2hlbiB1c2luZyB0aGUgaGFuZGxlX2xpc3Qgd2UgYWx3YXlzIHJlcXVlc3QgdG8gaW5oZXJpdAogICAgICAgICAgICAgICAgICAgICMgaGFuZGxlcyBidXQgdGhlIG9ubHkgaGFuZGxlcyB0aGF0IHdpbGwgYmUgaW5oZXJpdGVkIGFyZQogICAgICAgICAgICAgICAgICAgICMgdGhlIG9uZXMgaW4gdGhlIGhhbmRsZV9saXN0CiAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzID0gRmFsc2UKCiAgICAgICAgICAgIGlmIHNoZWxsOgogICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfd2luYXBpLlNUQVJURl9VU0VTSE9XV0lORE9XCiAgICAgICAgICAgICAgICBzdGFydHVwaW5mby53U2hvd1dpbmRvdyA9IF93aW5hcGkuU1dfSElERQogICAgICAgICAgICAgICAgY29tc3BlYyA9IG9zLmVudmlyb24uZ2V0KCJDT01TUEVDIiwgImNtZC5leGUiKQogICAgICAgICAgICAgICAgYXJncyA9ICd7fSAvYyAie30iJy5mb3JtYXQgKGNvbXNwZWMsIGFyZ3MpCgogICAgICAgICAgICBpZiBjd2QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBjd2QgPSBvcy5mc2RlY29kZShjd2QpCgogICAgICAgICAgICBzeXMuYXVkaXQoInN1YnByb2Nlc3MuUG9wZW4iLCBleGVjdXRhYmxlLCBhcmdzLCBjd2QsIGVudikKCiAgICAgICAgICAgICMgU3RhcnQgdGhlIHByb2Nlc3MKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF93aW5hcGkuQ3JlYXRlUHJvY2VzcyhleGVjdXRhYmxlLCBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gc3BlY2lhbCBzZWN1cml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KG5vdCBjbG9zZV9mZHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbykKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICMgQ2hpbGQgaXMgbGF1bmNoZWQuIENsb3NlIHRoZSBwYXJlbnQncyBjb3B5IG9mIHRob3NlIHBpcGUKICAgICAgICAgICAgICAgICMgaGFuZGxlcyB0aGF0IG9ubHkgdGhlIGNoaWxkIHNob3VsZCBoYXZlIG9wZW4uICBZb3UgbmVlZAogICAgICAgICAgICAgICAgIyB0byBtYWtlIHN1cmUgdGhhdCBubyBoYW5kbGVzIHRvIHRoZSB3cml0ZSBlbmQgb2YgdGhlCiAgICAgICAgICAgICAgICAjIG91dHB1dCBwaXBlIGFyZSBtYWludGFpbmVkIGluIHRoaXMgcHJvY2VzcyBvciBlbHNlIHRoZQogICAgICAgICAgICAgICAgIyBwaXBlIHdpbGwgbm90IGNsb3NlIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZXhpdHMgYW5kIHRoZQogICAgICAgICAgICAgICAgIyBSZWFkRmlsZSB3aWxsIGhhbmcuCiAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9waXBlX2ZkcyhwMmNyZWFkLCBwMmN3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUpCgogICAgICAgICAgICAjIFJldGFpbiB0aGUgcHJvY2VzcyBoYW5kbGUsIGJ1dCBjbG9zZSB0aGUgdGhyZWFkIGhhbmRsZQogICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQogICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBIYW5kbGUoaHApCiAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCiAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaHQpCgogICAgICAgIGRlZiBfaW50ZXJuYWxfcG9sbChzZWxmLCBfZGVhZHN0YXRlPU5vbmUsCiAgICAgICAgICAgICAgICBfV2FpdEZvclNpbmdsZU9iamVjdD1fd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3QsCiAgICAgICAgICAgICAgICBfV0FJVF9PQkpFQ1RfMD1fd2luYXBpLldBSVRfT0JKRUNUXzAsCiAgICAgICAgICAgICAgICBfR2V0RXhpdENvZGVQcm9jZXNzPV93aW5hcGkuR2V0RXhpdENvZGVQcm9jZXNzKToKICAgICAgICAgICAgIiIiQ2hlY2sgaWYgY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZC4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICBhdHRyaWJ1dGUuCgogICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgX19kZWxfXywgc28gaXQgY2FuIG9ubHkgcmVmZXIgdG8gb2JqZWN0cwogICAgICAgICAgICBpbiBpdHMgbG9jYWwgc2NvcGUuCgogICAgICAgICAgICAiIiIKICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBpZiBfV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLl9oYW5kbGUsIDApID09IF9XQUlUX09CSkVDVF8wOgogICAgICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IF9HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCgoKICAgICAgICBkZWYgX3dhaXQoc2VsZiwgdGltZW91dCk6CiAgICAgICAgICAgICIiIkludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIHdhaXQoKSBvbiBXaW5kb3dzLiIiIgogICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICB0aW1lb3V0X21pbGxpcyA9IF93aW5hcGkuSU5GSU5JVEUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRpbWVvdXRfbWlsbGlzID0gaW50KHRpbWVvdXQgKiAxMDAwKQogICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICMgQVBJIG5vdGU6IFJldHVybnMgaW1tZWRpYXRlbHkgaWYgdGltZW91dF9taWxsaXMgPT0gMC4KICAgICAgICAgICAgICAgIHJlc3VsdCA9IF93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLl9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMpCiAgICAgICAgICAgICAgICBpZiByZXN1bHQgPT0gX3dpbmFwaS5XQUlUX1RJTUVPVVQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCgoKICAgICAgICBkZWYgX3JlYWRlcnRocmVhZChzZWxmLCBmaCwgYnVmZmVyKToKICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChmaC5yZWFkKCkpCiAgICAgICAgICAgIGZoLmNsb3NlKCkKCgogICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CiAgICAgICAgICAgICMgU3RhcnQgcmVhZGVyIHRocmVhZHMgZmVlZGluZyBpbnRvIGEgbGlzdCBoYW5naW5nIG9mZiBvZiB0aGlzCiAgICAgICAgICAgICMgb2JqZWN0LCB1bmxlc3MgdGhleSd2ZSBhbHJlYWR5IGJlZW4gc3RhcnRlZC4KICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgYW5kIG5vdCBoYXNhdHRyKHNlbGYsICJfc3Rkb3V0X2J1ZmYiKToKICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmID0gW10KICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0X3RocmVhZCA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fcmVhZGVydGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYuc3Rkb3V0LCBzZWxmLl9zdGRvdXRfYnVmZikpCiAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQuZGFlbW9uID0gVHJ1ZQogICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLnN0YXJ0KCkKICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgYW5kIG5vdCBoYXNhdHRyKHNlbGYsICJfc3RkZXJyX2J1ZmYiKToKICAgICAgICAgICAgICAgIHNlbGYuX3N0ZGVycl9idWZmID0gW10KICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZCA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fcmVhZGVydGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYuc3RkZXJyLCBzZWxmLl9zdGRlcnJfYnVmZikpCiAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycl90aHJlYWQuZGFlbW9uID0gVHJ1ZQogICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLnN0YXJ0KCkKCiAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CiAgICAgICAgICAgICAgICBzZWxmLl9zdGRpbl93cml0ZShpbnB1dCkKCiAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIHJlYWRlciB0aHJlYWRzLCBvciB0aW1lIG91dC4gIElmIHdlIHRpbWUgb3V0LCB0aGUKICAgICAgICAgICAgIyB0aHJlYWRzIHJlbWFpbiByZWFkaW5nIGFuZCB0aGUgZmRzIGxlZnQgb3BlbiBpbiBjYXNlIHRoZSB1c2VyCiAgICAgICAgICAgICMgY2FsbHMgY29tbXVuaWNhdGUgYWdhaW4uCiAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLmpvaW4oc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCiAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dF90aHJlYWQuaXNfYWxpdmUoKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycl90aHJlYWQuam9pbihzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyX3RocmVhZC5pc19hbGl2ZSgpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQoKICAgICAgICAgICAgIyBDb2xsZWN0IHRoZSBvdXRwdXQgZnJvbSBhbmQgY2xvc2UgYm90aCBwaXBlcywgbm93IHRoYXQgd2Uga25vdwogICAgICAgICAgICAjIGJvdGggaGF2ZSBiZWVuIHJlYWQgc3VjY2Vzc2Z1bGx5LgogICAgICAgICAgICBzdGRvdXQgPSBOb25lCiAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUKICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6CiAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9zdGRvdXRfYnVmZgogICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX3N0ZGVycl9idWZmCiAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCgogICAgICAgICAgICAjIEFsbCBkYXRhIGV4Y2hhbmdlZC4gIFRyYW5zbGF0ZSBsaXN0cyBpbnRvIHN0cmluZ3MuCiAgICAgICAgICAgIHN0ZG91dCA9IHN0ZG91dFswXSBpZiBzdGRvdXQgZWxzZSBOb25lCiAgICAgICAgICAgIHN0ZGVyciA9IHN0ZGVyclswXSBpZiBzdGRlcnIgZWxzZSBOb25lCgogICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQoKICAgICAgICBkZWYgc2VuZF9zaWduYWwoc2VsZiwgc2lnKToKICAgICAgICAgICAgIiIiU2VuZCBhIHNpZ25hbCB0byB0aGUgcHJvY2Vzcy4iIiIKICAgICAgICAgICAgIyBEb24ndCBzaWduYWwgYSBwcm9jZXNzIHRoYXQgd2Uga25vdyBoYXMgYWxyZWFkeSBkaWVkLgogICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgaWYgc2lnID09IHNpZ25hbC5TSUdURVJNOgogICAgICAgICAgICAgICAgc2VsZi50ZXJtaW5hdGUoKQogICAgICAgICAgICBlbGlmIHNpZyA9PSBzaWduYWwuQ1RSTF9DX0VWRU5UOgogICAgICAgICAgICAgICAgb3Mua2lsbChzZWxmLnBpZCwgc2lnbmFsLkNUUkxfQ19FVkVOVCkKICAgICAgICAgICAgZWxpZiBzaWcgPT0gc2lnbmFsLkNUUkxfQlJFQUtfRVZFTlQ6CiAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYucGlkLCBzaWduYWwuQ1RSTF9CUkVBS19FVkVOVCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIHNpZ25hbDoge30iLmZvcm1hdChzaWcpKQoKICAgICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICAgICAiIiJUZXJtaW5hdGVzIHRoZSBwcm9jZXNzLiIiIgogICAgICAgICAgICAjIERvbid0IHRlcm1pbmF0ZSBhIHByb2Nlc3MgdGhhdCB3ZSBrbm93IGhhcyBhbHJlYWR5IGRpZWQuCiAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBfd2luYXBpLlRlcm1pbmF0ZVByb2Nlc3Moc2VsZi5faGFuZGxlLCAxKQogICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgICAgIyBFUlJPUl9BQ0NFU1NfREVOSUVEICh3aW5lcnJvciA1KSBpcyByZWNlaXZlZCB3aGVuIHRoZQogICAgICAgICAgICAgICAgIyBwcm9jZXNzIGFscmVhZHkgZGllZC4KICAgICAgICAgICAgICAgIHJjID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQogICAgICAgICAgICAgICAgaWYgcmMgPT0gX3dpbmFwaS5TVElMTF9BQ1RJVkU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJjCgogICAgICAgIGtpbGwgPSB0ZXJtaW5hdGUKCiAgICBlbHNlOgogICAgICAgICMKICAgICAgICAjIFBPU0lYIG1ldGhvZHMKICAgICAgICAjCiAgICAgICAgZGVmIF9nZXRfaGFuZGxlcyhzZWxmLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpOgogICAgICAgICAgICAiIiJDb25zdHJ1Y3QgYW5kIHJldHVybiB0dXBsZSB3aXRoIElPIG9iamVjdHM6CiAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLCBjMnByZWFkLCBjMnB3cml0ZSwgZXJycmVhZCwgZXJyd3JpdGUKICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gLTEsIC0xCiAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gLTEsIC0xCiAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlID0gLTEsIC0xCgogICAgICAgICAgICBpZiBzdGRpbiBpcyBOb25lOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbGlmIHN0ZGluID09IFBJUEU6CiAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IG9zLnBpcGUoKQogICAgICAgICAgICAgICAgaWYgc2VsZi5waXBlc2l6ZSA+IDAgYW5kIGhhc2F0dHIoZmNudGwsICJGX1NFVFBJUEVfU1oiKToKICAgICAgICAgICAgICAgICAgICBmY250bC5mY250bChwMmN3cml0ZSwgZmNudGwuRl9TRVRQSVBFX1NaLCBzZWxmLnBpcGVzaXplKQogICAgICAgICAgICBlbGlmIHN0ZGluID09IERFVk5VTEw6CiAgICAgICAgICAgICAgICBwMmNyZWFkID0gc2VsZi5fZ2V0X2Rldm51bGwoKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGludCk6CiAgICAgICAgICAgICAgICBwMmNyZWFkID0gc3RkaW4KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgQXNzdW1pbmcgZmlsZS1saWtlIG9iamVjdAogICAgICAgICAgICAgICAgcDJjcmVhZCA9IHN0ZGluLmZpbGVubygpCgogICAgICAgICAgICBpZiBzdGRvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxpZiBzdGRvdXQgPT0gUElQRToKICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gb3MucGlwZSgpCiAgICAgICAgICAgICAgICBpZiBzZWxmLnBpcGVzaXplID4gMCBhbmQgaGFzYXR0cihmY250bCwgIkZfU0VUUElQRV9TWiIpOgogICAgICAgICAgICAgICAgICAgIGZjbnRsLmZjbnRsKGMycHdyaXRlLCBmY250bC5GX1NFVFBJUEVfU1osIHNlbGYucGlwZXNpemUpCiAgICAgICAgICAgIGVsaWYgc3Rkb3V0ID09IERFVk5VTEw6CiAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IHNlbGYuX2dldF9kZXZudWxsKCkKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKICAgICAgICAgICAgICAgIGMycHdyaXRlID0gc3Rkb3V0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIEFzc3VtaW5nIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAgICAgICAgIGMycHdyaXRlID0gc3Rkb3V0LmZpbGVubygpCgogICAgICAgICAgICBpZiBzdGRlcnIgaXMgTm9uZToKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gUElQRToKICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlID0gb3MucGlwZSgpCiAgICAgICAgICAgICAgICBpZiBzZWxmLnBpcGVzaXplID4gMCBhbmQgaGFzYXR0cihmY250bCwgIkZfU0VUUElQRV9TWiIpOgogICAgICAgICAgICAgICAgICAgIGZjbnRsLmZjbnRsKGVycndyaXRlLCBmY250bC5GX1NFVFBJUEVfU1osIHNlbGYucGlwZXNpemUpCiAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IFNURE9VVDoKICAgICAgICAgICAgICAgIGlmIGMycHdyaXRlICE9IC0xOgogICAgICAgICAgICAgICAgICAgIGVycndyaXRlID0gYzJwd3JpdGUKICAgICAgICAgICAgICAgIGVsc2U6ICMgY2hpbGQncyBzdGRvdXQgaXMgbm90IHNldCwgdXNlIHBhcmVudCdzIHN0ZG91dAogICAgICAgICAgICAgICAgICAgIGVycndyaXRlID0gc3lzLl9fc3Rkb3V0X18uZmlsZW5vKCkKICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gREVWTlVMTDoKICAgICAgICAgICAgICAgIGVycndyaXRlID0gc2VsZi5fZ2V0X2Rldm51bGwoKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCBpbnQpOgogICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzdGRlcnIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgQXNzdW1pbmcgZmlsZS1saWtlIG9iamVjdAogICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzdGRlcnIuZmlsZW5vKCkKCiAgICAgICAgICAgIHJldHVybiAocDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUpCgoKICAgICAgICBkZWYgX3Bvc2l4X3NwYXduKHNlbGYsIGFyZ3MsIGV4ZWN1dGFibGUsIGVudiwgcmVzdG9yZV9zaWduYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlKToKICAgICAgICAgICAgIiIiRXhlY3V0ZSBwcm9ncmFtIHVzaW5nIG9zLnBvc2l4X3NwYXduKCkuIiIiCiAgICAgICAgICAgIGlmIGVudiBpcyBOb25lOgogICAgICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbgoKICAgICAgICAgICAga3dhcmdzID0ge30KICAgICAgICAgICAgaWYgcmVzdG9yZV9zaWduYWxzOgogICAgICAgICAgICAgICAgIyBTZWUgX1B5X1Jlc3RvcmVTaWduYWxzKCkgaW4gUHl0aG9uL3B5bGlmZWN5Y2xlLmMKICAgICAgICAgICAgICAgIHNpZ3NldCA9IFtdCiAgICAgICAgICAgICAgICBmb3Igc2lnbmFtZSBpbiAoJ1NJR1BJUEUnLCAnU0lHWEZaJywgJ1NJR1hGU1onKToKICAgICAgICAgICAgICAgICAgICBzaWdudW0gPSBnZXRhdHRyKHNpZ25hbCwgc2lnbmFtZSwgTm9uZSkKICAgICAgICAgICAgICAgICAgICBpZiBzaWdudW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3NldC5hcHBlbmQoc2lnbnVtKQogICAgICAgICAgICAgICAga3dhcmdzWydzZXRzaWdkZWYnXSA9IHNpZ3NldAoKICAgICAgICAgICAgZmlsZV9hY3Rpb25zID0gW10KICAgICAgICAgICAgZm9yIGZkIGluIChwMmN3cml0ZSwgYzJwcmVhZCwgZXJycmVhZCk6CiAgICAgICAgICAgICAgICBpZiBmZCAhPSAtMToKICAgICAgICAgICAgICAgICAgICBmaWxlX2FjdGlvbnMuYXBwZW5kKChvcy5QT1NJWF9TUEFXTl9DTE9TRSwgZmQpKQogICAgICAgICAgICBmb3IgZmQsIGZkMiBpbiAoCiAgICAgICAgICAgICAgICAocDJjcmVhZCwgMCksCiAgICAgICAgICAgICAgICAoYzJwd3JpdGUsIDEpLAogICAgICAgICAgICAgICAgKGVycndyaXRlLCAyKSwKICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIGlmIGZkICE9IC0xOgogICAgICAgICAgICAgICAgICAgIGZpbGVfYWN0aW9ucy5hcHBlbmQoKG9zLlBPU0lYX1NQQVdOX0RVUDIsIGZkLCBmZDIpKQogICAgICAgICAgICBpZiBmaWxlX2FjdGlvbnM6CiAgICAgICAgICAgICAgICBrd2FyZ3NbJ2ZpbGVfYWN0aW9ucyddID0gZmlsZV9hY3Rpb25zCgogICAgICAgICAgICBzZWxmLnBpZCA9IG9zLnBvc2l4X3NwYXduKGV4ZWN1dGFibGUsIGFyZ3MsIGVudiwgKiprd2FyZ3MpCiAgICAgICAgICAgIHNlbGYuX2NoaWxkX2NyZWF0ZWQgPSBUcnVlCgogICAgICAgICAgICBzZWxmLl9jbG9zZV9waXBlX2ZkcyhwMmNyZWFkLCBwMmN3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlKQoKICAgICAgICBkZWYgX2V4ZWN1dGVfY2hpbGQoc2VsZiwgYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBnaWQsIGdpZHMsIHVpZCwgdW1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19zZXNzaW9uLCBwcm9jZXNzX2dyb3VwKToKICAgICAgICAgICAgIiIiRXhlY3V0ZSBwcm9ncmFtIChQT1NJWCB2ZXJzaW9uKSIiIgoKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgYXJncyA9IFthcmdzXQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXJncywgb3MuUGF0aExpa2UpOgogICAgICAgICAgICAgICAgaWYgc2hlbGw6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdwYXRoLWxpa2UgYXJncyBpcyBub3QgYWxsb3dlZCB3aGVuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoZWxsIGlzIHRydWUnKQogICAgICAgICAgICAgICAgYXJncyA9IFthcmdzXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXJncyA9IGxpc3QoYXJncykKCiAgICAgICAgICAgIGlmIHNoZWxsOgogICAgICAgICAgICAgICAgIyBPbiBBbmRyb2lkIHRoZSBkZWZhdWx0IHNoZWxsIGlzIGF0ICcvc3lzdGVtL2Jpbi9zaCcuCiAgICAgICAgICAgICAgICB1bml4X3NoZWxsID0gKCcvc3lzdGVtL2Jpbi9zaCcgaWYKICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKHN5cywgJ2dldGFuZHJvaWRhcGlsZXZlbCcpIGVsc2UgJy9iaW4vc2gnKQogICAgICAgICAgICAgICAgYXJncyA9IFt1bml4X3NoZWxsLCAiLWMiXSArIGFyZ3MKICAgICAgICAgICAgICAgIGlmIGV4ZWN1dGFibGU6CiAgICAgICAgICAgICAgICAgICAgYXJnc1swXSA9IGV4ZWN1dGFibGUKCiAgICAgICAgICAgIGlmIGV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBhcmdzWzBdCgogICAgICAgICAgICBzeXMuYXVkaXQoInN1YnByb2Nlc3MuUG9wZW4iLCBleGVjdXRhYmxlLCBhcmdzLCBjd2QsIGVudikKCiAgICAgICAgICAgIGlmIChfVVNFX1BPU0lYX1NQQVdOCiAgICAgICAgICAgICAgICAgICAgYW5kIG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKQogICAgICAgICAgICAgICAgICAgIGFuZCBwcmVleGVjX2ZuIGlzIE5vbmUKICAgICAgICAgICAgICAgICAgICBhbmQgbm90IGNsb3NlX2ZkcwogICAgICAgICAgICAgICAgICAgIGFuZCBub3QgcGFzc19mZHMKICAgICAgICAgICAgICAgICAgICBhbmQgY3dkIGlzIE5vbmUKICAgICAgICAgICAgICAgICAgICBhbmQgKHAyY3JlYWQgPT0gLTEgb3IgcDJjcmVhZCA+IDIpCiAgICAgICAgICAgICAgICAgICAgYW5kIChjMnB3cml0ZSA9PSAtMSBvciBjMnB3cml0ZSA+IDIpCiAgICAgICAgICAgICAgICAgICAgYW5kIChlcnJ3cml0ZSA9PSAtMSBvciBlcnJ3cml0ZSA+IDIpCiAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBzdGFydF9uZXdfc2Vzc2lvbgogICAgICAgICAgICAgICAgICAgIGFuZCBwcm9jZXNzX2dyb3VwID09IC0xCiAgICAgICAgICAgICAgICAgICAgYW5kIGdpZCBpcyBOb25lCiAgICAgICAgICAgICAgICAgICAgYW5kIGdpZHMgaXMgTm9uZQogICAgICAgICAgICAgICAgICAgIGFuZCB1aWQgaXMgTm9uZQogICAgICAgICAgICAgICAgICAgIGFuZCB1bWFzayA8IDApOgogICAgICAgICAgICAgICAgc2VsZi5fcG9zaXhfc3Bhd24oYXJncywgZXhlY3V0YWJsZSwgZW52LCByZXN0b3JlX3NpZ25hbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUpCiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgIG9yaWdfZXhlY3V0YWJsZSA9IGV4ZWN1dGFibGUKCiAgICAgICAgICAgICMgRm9yIHRyYW5zZmVycmluZyBwb3NzaWJsZSBleGVjIGZhaWx1cmUgZnJvbSBjaGlsZCB0byBwYXJlbnQuCiAgICAgICAgICAgICMgRGF0YSBmb3JtYXQ6ICJleGNlcHRpb24gbmFtZTpoZXggZXJybm86ZGVzY3JpcHRpb24iCiAgICAgICAgICAgICMgUGlja2xlIGlzIG5vdCB1c2VkOyBpdCBpcyBjb21wbGV4IGFuZCBpbnZvbHZlcyBtZW1vcnkgYWxsb2NhdGlvbi4KICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlID0gb3MucGlwZSgpCiAgICAgICAgICAgICMgZXJycGlwZV93cml0ZSBtdXN0IG5vdCBiZSBpbiB0aGUgc3RhbmRhcmQgaW8gMCwgMSwgb3IgMiBmZCByYW5nZS4KICAgICAgICAgICAgbG93X2Zkc190b19jbG9zZSA9IFtdCiAgICAgICAgICAgIHdoaWxlIGVycnBpcGVfd3JpdGUgPCAzOgogICAgICAgICAgICAgICAgbG93X2Zkc190b19jbG9zZS5hcHBlbmQoZXJycGlwZV93cml0ZSkKICAgICAgICAgICAgICAgIGVycnBpcGVfd3JpdGUgPSBvcy5kdXAoZXJycGlwZV93cml0ZSkKICAgICAgICAgICAgZm9yIGxvd19mZCBpbiBsb3dfZmRzX3RvX2Nsb3NlOgogICAgICAgICAgICAgICAgb3MuY2xvc2UobG93X2ZkKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIyBXZSBtdXN0IGF2b2lkIGNvbXBsZXggd29yayB0aGF0IGNvdWxkIGludm9sdmUKICAgICAgICAgICAgICAgICAgICAjIG1hbGxvYyBvciBmcmVlIGluIHRoZSBjaGlsZCBwcm9jZXNzIHRvIGF2b2lkCiAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgZGVhZGxvY2tzLCB0aHVzIHdlIGRvIGFsbCB0aGlzIGhlcmUuCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgcGFzcyBpdCB0byBmb3JrX2V4ZWMoKQoKICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGVudl9saXN0ID0gW10KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gb3MuZnNlbmNvZGUoaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGInPScgaW4gazoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbGxlZ2FsIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QuYXBwZW5kKGsgKyBiJz0nICsgb3MuZnNlbmNvZGUodikpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBOb25lICAjIFVzZSBleGVjdiBpbnN0ZWFkIG9mIGV4ZWN2ZS4KICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZnNlbmNvZGUoZXhlY3V0YWJsZSkKICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfbGlzdCA9IChleGVjdXRhYmxlLCkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygb3MuX2V4ZWN2cGUoKS4KICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gdHVwbGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuZnNlbmNvZGUoZGlyKSwgZXhlY3V0YWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkaXIgaW4gb3MuZ2V0X2V4ZWNfcGF0aChlbnYpKQogICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwID0gc2V0KHBhc3NfZmRzKQogICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwLmFkZChlcnJwaXBlX3dyaXRlKQogICAgICAgICAgICAgICAgICAgIHNlbGYucGlkID0gX2ZvcmtfZXhlYygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGV4ZWN1dGFibGVfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2ZkcywgdHVwbGUoc29ydGVkKG1hcChpbnQsIGZkc190b19rZWVwKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkLCBlbnZfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLCBjMnByZWFkLCBjMnB3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzLCBzdGFydF9uZXdfc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NfZ3JvdXAsIGdpZCwgZ2lkcywgdWlkLCB1bWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWV4ZWNfZm4sIF9VU0VfVkZPUkspCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IFRydWUKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgIyBiZSBzdXJlIHRoZSBGRCBpcyBjbG9zZWQgbm8gbWF0dGVyIHdoYXQKICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShlcnJwaXBlX3dyaXRlKQoKICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3BpcGVfZmRzKHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSkKCiAgICAgICAgICAgICAgICAjIFdhaXQgZm9yIGV4ZWMgdG8gZmFpbCBvciBzdWNjZWVkOyBwb3NzaWJseSByYWlzaW5nIGFuCiAgICAgICAgICAgICAgICAjIGV4Y2VwdGlvbiAobGltaXRlZCBpbiBzaXplKQogICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhID0gYnl0ZWFycmF5KCkKICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgcGFydCA9IG9zLnJlYWQoZXJycGlwZV9yZWFkLCA1MDAwMCkKICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX2RhdGEgKz0gcGFydAogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJ0IG9yIGxlbihlcnJwaXBlX2RhdGEpID4gNTAwMDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAjIGJlIHN1cmUgdGhlIEZEIGlzIGNsb3NlZCBubyBtYXR0ZXIgd2hhdAogICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJycGlwZV9yZWFkKQoKICAgICAgICAgICAgaWYgZXJycGlwZV9kYXRhOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gb3Mud2FpdHBpZChzZWxmLnBpZCwgMCkKICAgICAgICAgICAgICAgICAgICBpZiBwaWQgPT0gc2VsZi5waWQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9leGl0c3RhdHVzKHN0cykKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBzeXMubWF4c2l6ZQogICAgICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWUsIGhleF9lcnJubywgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnBpcGVfZGF0YS5zcGxpdChiJzonLCAyKSkKICAgICAgICAgICAgICAgICAgICAjIFRoZSBlbmNvZGluZyBoZXJlIHNob3VsZCBtYXRjaCB0aGUgZW5jb2RpbmcKICAgICAgICAgICAgICAgICAgICAjIHdyaXR0ZW4gaW4gYnkgdGhlIHN1YnByb2Nlc3MgaW1wbGVtZW50YXRpb25zCiAgICAgICAgICAgICAgICAgICAgIyBsaWtlIF9wb3NpeHN1YnByb2Nlc3MKICAgICAgICAgICAgICAgICAgICBlcnJfbXNnID0gZXJyX21zZy5kZWNvZGUoKQogICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWUgPSBiJ1N1YnByb2Nlc3NFcnJvcicKICAgICAgICAgICAgICAgICAgICBoZXhfZXJybm8gPSBiJzAnCiAgICAgICAgICAgICAgICAgICAgZXJyX21zZyA9ICdCYWQgZXhjZXB0aW9uIGRhdGEgZnJvbSBjaGlsZDogeyFyfScuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMoZXJycGlwZV9kYXRhKSkKICAgICAgICAgICAgICAgIGNoaWxkX2V4Y2VwdGlvbl90eXBlID0gZ2V0YXR0cigKICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMsIGV4Y2VwdGlvbl9uYW1lLmRlY29kZSgnYXNjaWknKSwKICAgICAgICAgICAgICAgICAgICAgICAgU3VicHJvY2Vzc0Vycm9yKQogICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhjaGlsZF9leGNlcHRpb25fdHlwZSwgT1NFcnJvcikgYW5kIGhleF9lcnJubzoKICAgICAgICAgICAgICAgICAgICBlcnJub19udW0gPSBpbnQoaGV4X2Vycm5vLCAxNikKICAgICAgICAgICAgICAgICAgICBjaGlsZF9leGVjX25ldmVyX2NhbGxlZCA9IChlcnJfbXNnID09ICJub2V4ZWMiKQogICAgICAgICAgICAgICAgICAgIGlmIGNoaWxkX2V4ZWNfbmV2ZXJfY2FsbGVkOgogICAgICAgICAgICAgICAgICAgICAgICBlcnJfbXNnID0gIiIKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgZXJyb3IgbXVzdCBiZSBmcm9tIGNoZGlyKGN3ZCkuCiAgICAgICAgICAgICAgICAgICAgICAgIGVycl9maWxlbmFtZSA9IGN3ZAogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGVycl9maWxlbmFtZSA9IG9yaWdfZXhlY3V0YWJsZQogICAgICAgICAgICAgICAgICAgIGlmIGVycm5vX251bSAhPSAwOgogICAgICAgICAgICAgICAgICAgICAgICBlcnJfbXNnID0gb3Muc3RyZXJyb3IoZXJybm9fbnVtKQogICAgICAgICAgICAgICAgICAgIHJhaXNlIGNoaWxkX2V4Y2VwdGlvbl90eXBlKGVycm5vX251bSwgZXJyX21zZywgZXJyX2ZpbGVuYW1lKQogICAgICAgICAgICAgICAgcmFpc2UgY2hpbGRfZXhjZXB0aW9uX3R5cGUoZXJyX21zZykKCgogICAgICAgIGRlZiBfaGFuZGxlX2V4aXRzdGF0dXMoc2VsZiwgc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dhaXRzdGF0dXNfdG9fZXhpdGNvZGU9X3dhaXRzdGF0dXNfdG9fZXhpdGNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfV0lGU1RPUFBFRD1fV0lGU1RPUFBFRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9XU1RPUFNJRz1fV1NUT1BTSUcpOgogICAgICAgICAgICAiIiJBbGwgY2FsbGVycyB0byB0aGlzIGZ1bmN0aW9uIE1VU1QgaG9sZCBzZWxmLl93YWl0cGlkX2xvY2suIiIiCiAgICAgICAgICAgICMgVGhpcyBtZXRob2QgaXMgY2FsbGVkIChpbmRpcmVjdGx5KSBieSBfX2RlbF9fLCBzbyBpdCBjYW5ub3QKICAgICAgICAgICAgIyByZWZlciB0byBhbnl0aGluZyBvdXRzaWRlIG9mIGl0cyBsb2NhbCBzY29wZS4KICAgICAgICAgICAgaWYgX1dJRlNUT1BQRUQoc3RzKToKICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IC1fV1NUT1BTSUcoc3RzKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gX3dhaXRzdGF0dXNfdG9fZXhpdGNvZGUoc3RzKQoKICAgICAgICBkZWYgX2ludGVybmFsX3BvbGwoc2VsZiwgX2RlYWRzdGF0ZT1Ob25lLCBfd2FpdHBpZD1fd2FpdHBpZCwKICAgICAgICAgICAgICAgIF9XTk9IQU5HPV9XTk9IQU5HLCBfRUNISUxEPWVycm5vLkVDSElMRCk6CiAgICAgICAgICAgICIiIkNoZWNrIGlmIGNoaWxkIHByb2Nlc3MgaGFzIHRlcm1pbmF0ZWQuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgYXR0cmlidXRlLgoKICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IF9fZGVsX18sIHNvIGl0IGNhbm5vdCByZWZlcmVuY2UgYW55dGhpbmcKICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGUgKG5vciBjYW4gYW55IG1ldGhvZHMgaXQgY2FsbHMpLgoKICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3dhaXRwaWRfbG9jay5hY3F1aXJlKEZhbHNlKToKICAgICAgICAgICAgICAgICAgICAjIFNvbWV0aGluZyBlbHNlIGlzIGJ1c3kgY2FsbGluZyB3YWl0cGlkLiAgRG9uJ3QgYWxsb3cgdHdvCiAgICAgICAgICAgICAgICAgICAgIyBhdCBvbmNlLiAgV2Uga25vdyBub3RoaW5nIHlldC4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZSAgIyBBbm90aGVyIHRocmVhZCB3YWl0ZWQuCiAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBfd2FpdHBpZChzZWxmLnBpZCwgX1dOT0hBTkcpCiAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXhpdHN0YXR1cyhzdHMpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgIGlmIF9kZWFkc3RhdGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IF9kZWFkc3RhdGUKICAgICAgICAgICAgICAgICAgICBlbGlmIGUuZXJybm8gPT0gX0VDSElMRDoKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgaWYgU0lHQ0xEIGlzIHNldCB0byBiZSBpZ25vcmVkIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2FpdGluZyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbgogICAgICAgICAgICAgICAgICAgICAgICAjIGRpc2FibGVkIGZvciBvdXIgcHJvY2Vzcy4gIFRoaXMgY2hpbGQgaXMgZGVhZCwgd2UKICAgICAgICAgICAgICAgICAgICAgICAgIyBjYW4ndCBnZXQgdGhlIHN0YXR1cy4KICAgICAgICAgICAgICAgICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTU3NTYKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gMAogICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWl0cGlkX2xvY2sucmVsZWFzZSgpCiAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKCgogICAgICAgIGRlZiBfdHJ5X3dhaXQoc2VsZiwgd2FpdF9mbGFncyk6CiAgICAgICAgICAgICIiIkFsbCBjYWxsZXJzIHRvIHRoaXMgZnVuY3Rpb24gTVVTVCBob2xkIHNlbGYuX3dhaXRwaWRfbG9jay4iIiIKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IG9zLndhaXRwaWQoc2VsZi5waWQsIHdhaXRfZmxhZ3MpCiAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCiAgICAgICAgICAgICAgICAjIGZvciBjaGlsZCBwcm9jZXNzZXMgaGFzIG90aGVyd2lzZSBiZWVuIGRpc2FibGVkIGZvciBvdXIKICAgICAgICAgICAgICAgICMgcHJvY2Vzcy4gIFRoaXMgY2hpbGQgaXMgZGVhZCwgd2UgY2FuJ3QgZ2V0IHRoZSBzdGF0dXMuCiAgICAgICAgICAgICAgICBwaWQgPSBzZWxmLnBpZAogICAgICAgICAgICAgICAgc3RzID0gMAogICAgICAgICAgICByZXR1cm4gKHBpZCwgc3RzKQoKCiAgICAgICAgZGVmIF93YWl0KHNlbGYsIHRpbWVvdXQpOgogICAgICAgICAgICAiIiJJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB3YWl0KCkgb24gUE9TSVguIiIiCiAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKCiAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKICAgICAgICAgICAgICAgICMgRW50ZXIgYSBidXN5IGxvb3AgaWYgd2UgaGF2ZSBhIHRpbWVvdXQuICBUaGlzIGJ1c3kgbG9vcCB3YXMKICAgICAgICAgICAgICAgICMgY3JpYmJlZCBmcm9tIExpYi90aHJlYWRpbmcucHkgaW4gVGhyZWFkLndhaXQoKSBhdCByNzEwNjUuCiAgICAgICAgICAgICAgICBkZWxheSA9IDAuMDAwNSAjIDUwMCB1cyAtPiBpbml0aWFsIGRlbGF5IG9mIDEgbXMKICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fd2FpdHBpZF9sb2NrLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgICMgQW5vdGhlciB0aHJlYWQgd2FpdGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IHNlbGYuX3RyeV93YWl0KG9zLldOT0hBTkcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcGlkID09IHNlbGYucGlkIG9yIHBpZCA9PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwaWQgPT0gc2VsZi5waWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWl0cGlkX2xvY2sucmVsZWFzZSgpCiAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gbWluKGRlbGF5ICogMiwgcmVtYWluaW5nLCAuMDUpCiAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcChkZWxheSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fd2FpdHBpZF9sb2NrOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBBbm90aGVyIHRocmVhZCB3YWl0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBzZWxmLl90cnlfd2FpdCgwKQogICAgICAgICAgICAgICAgICAgICAgICAjIENoZWNrIHRoZSBwaWQgYW5kIGxvb3AgYXMgd2FpdHBpZCBoYXMgYmVlbiBrbm93biB0bwogICAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiAwIGV2ZW4gd2l0aG91dCBXTk9IQU5HIGluIG9kZCBzaXR1YXRpb25zLgogICAgICAgICAgICAgICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNDM5Ni4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCgoKICAgICAgICBkZWYgX2NvbW11bmljYXRlKHNlbGYsIGlucHV0LCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgogICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgogICAgICAgICAgICAgICAgIyBGbHVzaCBzdGRpbyBidWZmZXIuICBUaGlzIG1pZ2h0IGJsb2NrLCBpZiB0aGUgdXNlciBoYXMKICAgICAgICAgICAgICAgICMgYmVlbiB3cml0aW5nIHRvIC5zdGRpbiBpbiBhbiB1bmNvbnRyb2xsZWQgZmFzaGlvbi4KICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmZsdXNoKCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGFzcyAgIyBjb21tdW5pY2F0ZSgpIG11c3QgaWdub3JlIEJyb2tlblBpcGVFcnJvci4KICAgICAgICAgICAgICAgIGlmIG5vdCBpbnB1dDoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgICMgY29tbXVuaWNhdGUoKSBtdXN0IGlnbm9yZSBCcm9rZW5QaXBlRXJyb3IuCgogICAgICAgICAgICBzdGRvdXQgPSBOb25lCiAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUKCiAgICAgICAgICAgICMgT25seSBjcmVhdGUgdGhpcyBtYXBwaW5nIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeS4KICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoyb3V0cHV0ID0ge30KICAgICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoyb3V0cHV0W3NlbGYuc3Rkb3V0XSA9IFtdCiAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlb2JqMm91dHB1dFtzZWxmLnN0ZGVycl0gPSBbXQoKICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6CiAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9maWxlb2JqMm91dHB1dFtzZWxmLnN0ZG91dF0KICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6CiAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl9maWxlb2JqMm91dHB1dFtzZWxmLnN0ZGVycl0KCiAgICAgICAgICAgIHNlbGYuX3NhdmVfaW5wdXQoaW5wdXQpCgogICAgICAgICAgICBpZiBzZWxmLl9pbnB1dDoKICAgICAgICAgICAgICAgIGlucHV0X3ZpZXcgPSBtZW1vcnl2aWV3KHNlbGYuX2lucHV0KQoKICAgICAgICAgICAgd2l0aCBfUG9wZW5TZWxlY3RvcigpIGFzIHNlbGVjdG9yOgogICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgaW5wdXQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc2VsZi5zdGRpbiwgc2VsZWN0b3JzLkVWRU5UX1dSSVRFKQogICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgYW5kIG5vdCBzZWxmLnN0ZG91dC5jbG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc2VsZi5zdGRvdXQsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgYW5kIG5vdCBzZWxmLnN0ZGVyci5jbG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc2VsZi5zdGRlcnIsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQoKICAgICAgICAgICAgICAgIHdoaWxlIHNlbGVjdG9yLmdldF9tYXAoKToKICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfdGltZW91dChlbmR0aW1lLCBvcmlnX3RpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9jaGVja19hbmRfcmFpc2U9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCAgIyBJbXBvc3NpYmxlIDopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2NoZWNrX3RpbWVvdXQoLi4uLCBza2lwX2NoZWNrX2FuZF9yYWlzZT1UcnVlKSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbGVkIHRvIHJhaXNlIFRpbWVvdXRFeHBpcmVkLicpCgogICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gc2VsZWN0b3Iuc2VsZWN0KHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfdGltZW91dChlbmR0aW1lLCBvcmlnX3RpbWVvdXQsIHN0ZG91dCwgc3RkZXJyKQoKICAgICAgICAgICAgICAgICAgICAjIFhYWCBSZXdyaXRlIHRoZXNlIHRvIHVzZSBub24tYmxvY2tpbmcgSS9PIG9uIHRoZSBmaWxlCiAgICAgICAgICAgICAgICAgICAgIyBvYmplY3RzOyB0aGV5IGFyZSBubyBsb25nZXIgdXNpbmcgQyBzdGRpbyEKCiAgICAgICAgICAgICAgICAgICAgZm9yIGtleSwgZXZlbnRzIGluIHJlYWR5OgogICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXkuZmlsZW9iaiBpcyBzZWxmLnN0ZGluOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBpbnB1dF92aWV3W3NlbGYuX2lucHV0X29mZnNldCA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCArPSBvcy53cml0ZShrZXkuZmQsIGNodW5rKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEJyb2tlblBpcGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci51bnJlZ2lzdGVyKGtleS5maWxlb2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5wdXRfb2Zmc2V0ID49IGxlbihzZWxmLl9pbnB1dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLnVucmVnaXN0ZXIoa2V5LmZpbGVvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkuZmlsZW9iaiBpbiAoc2VsZi5zdGRvdXQsIHNlbGYuc3RkZXJyKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKGtleS5mZCwgMzI3NjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci51bnJlZ2lzdGVyKGtleS5maWxlb2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoyb3V0cHV0W2tleS5maWxlb2JqXS5hcHBlbmQoZGF0YSkKCiAgICAgICAgICAgIHNlbGYud2FpdCh0aW1lb3V0PXNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpKQoKICAgICAgICAgICAgIyBBbGwgZGF0YSBleGNoYW5nZWQuICBUcmFuc2xhdGUgbGlzdHMgaW50byBzdHJpbmdzLgogICAgICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzdGRvdXQgPSBiJycuam9pbihzdGRvdXQpCiAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHN0ZGVyciA9IGInJy5qb2luKHN0ZGVycikKCiAgICAgICAgICAgICMgVHJhbnNsYXRlIG5ld2xpbmVzLCBpZiByZXF1ZXN0ZWQuCiAgICAgICAgICAgICMgVGhpcyBhbHNvIHR1cm5zIGJ5dGVzIGludG8gc3RyaW5ncy4KICAgICAgICAgICAgaWYgc2VsZi50ZXh0X21vZGU6CiAgICAgICAgICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5fdHJhbnNsYXRlX25ld2xpbmVzKHN0ZG91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmVycm9ycykKICAgICAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl90cmFuc2xhdGVfbmV3bGluZXMoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZXJyb3JzKQoKICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKCgogICAgICAgIGRlZiBfc2F2ZV9pbnB1dChzZWxmLCBpbnB1dCk6CiAgICAgICAgICAgICMgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlIF9jb21tdW5pY2F0ZV93aXRoXyooKSBtZXRob2RzCiAgICAgICAgICAgICMgc28gdGhhdCBpZiB3ZSB0aW1lIG91dCB3aGlsZSBjb21tdW5pY2F0aW5nLCB3ZSBjYW4gY29udGludWUKICAgICAgICAgICAgIyBzZW5kaW5nIGlucHV0IGlmIHdlIHJldHJ5LgogICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBzZWxmLl9pbnB1dCBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ID0gMAogICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBpbnB1dAogICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmUgYW5kIHNlbGYudGV4dF9tb2RlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5lcnJvcnMpCgoKICAgICAgICBkZWYgc2VuZF9zaWduYWwoc2VsZiwgc2lnKToKICAgICAgICAgICAgIiIiU2VuZCBhIHNpZ25hbCB0byB0aGUgcHJvY2Vzcy4iIiIKICAgICAgICAgICAgIyBicG8tMzg2MzA6IFBvbGxpbmcgcmVkdWNlcyB0aGUgcmlzayBvZiBzZW5kaW5nIGEgc2lnbmFsIHRvIHRoZQogICAgICAgICAgICAjIHdyb25nIHByb2Nlc3MgaWYgdGhlIHByb2Nlc3MgY29tcGxldGVkLCB0aGUgUG9wZW4ucmV0dXJuY29kZQogICAgICAgICAgICAjIGF0dHJpYnV0ZSBpcyBzdGlsbCBOb25lLCBhbmQgdGhlIHBpZCBoYXMgYmVlbiByZWFzc2lnbmVkCiAgICAgICAgICAgICMgKHJlY3ljbGVkKSB0byBhIG5ldyBkaWZmZXJlbnQgcHJvY2Vzcy4gVGhpcyByYWNlIGNvbmRpdGlvbiBjYW4KICAgICAgICAgICAgIyBoYXBwZW5zIGluIHR3byBjYXNlcy4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIENhc2UgMS4gVGhyZWFkIEEgY2FsbHMgUG9wZW4ucG9sbCgpLCB0aHJlYWQgQiBjYWxscwogICAgICAgICAgICAjIFBvcGVuLnNlbmRfc2lnbmFsKCkuIEluIHRocmVhZCBBLCB3YWl0cGlkKCkgc3VjY2VlZCBhbmQgcmV0dXJucwogICAgICAgICAgICAjIHRoZSBleGl0IHN0YXR1cy4gVGhyZWFkIEIgY2FsbHMga2lsbCgpIGJlY2F1c2UgcG9sbCgpIGluIHRocmVhZCBBCiAgICAgICAgICAgICMgZGlkIG5vdCBzZXQgcmV0dXJuY29kZSB5ZXQuIENhbGxpbmcgcG9sbCgpIGluIHRocmVhZCBCIHByZXZlbnRzCiAgICAgICAgICAgICMgdGhlIHJhY2UgY29uZGl0aW9uIHRoYW5rcyB0byBQb3Blbi5fd2FpdHBpZF9sb2NrLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgQ2FzZSAyLiB3YWl0cGlkKHBpZCwgMCkgaGFzIGJlZW4gY2FsbGVkIGRpcmVjdGx5LCB3aXRob3V0CiAgICAgICAgICAgICMgdXNpbmcgUG9wZW4gbWV0aG9kczogcmV0dXJuY29kZSBpcyBzdGlsbCBOb25lIGlzIHRoaXMgY2FzZS4KICAgICAgICAgICAgIyBDYWxsaW5nIFBvcGVuLnBvbGwoKSB3aWxsIHNldCByZXR1cm5jb2RlIHRvIGEgZGVmYXVsdCB2YWx1ZSwKICAgICAgICAgICAgIyBzaW5jZSB3YWl0cGlkKCkgZmFpbHMgd2l0aCBQcm9jZXNzTG9va3VwRXJyb3IuCiAgICAgICAgICAgIHNlbGYucG9sbCgpCiAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICMgU2tpcCBzaWduYWxsaW5nIGEgcHJvY2VzcyB0aGF0IHdlIGtub3cgaGFzIGFscmVhZHkgZGllZC4KICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgIyBUaGUgcmFjZSBjb25kaXRpb24gY2FuIHN0aWxsIGhhcHBlbiBpZiB0aGUgcmFjZSBjb25kaXRpb24KICAgICAgICAgICAgIyBkZXNjcmliZWQgYWJvdmUgaGFwcGVucyBiZXR3ZWVuIHRoZSByZXR1cm5jb2RlIHRlc3QKICAgICAgICAgICAgIyBhbmQgdGhlIGtpbGwoKSBjYWxsLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYucGlkLCBzaWcpCiAgICAgICAgICAgIGV4Y2VwdCBQcm9jZXNzTG9va3VwRXJyb3I6CiAgICAgICAgICAgICAgICAjIFN1cHByZXNzIHRoZSByYWNlIGNvbmRpdGlvbiBlcnJvcjsgYnBvLTQwNTUwLgogICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICAgICAiIiJUZXJtaW5hdGUgdGhlIHByb2Nlc3Mgd2l0aCBTSUdURVJNCiAgICAgICAgICAgICIiIgogICAgICAgICAgICBzZWxmLnNlbmRfc2lnbmFsKHNpZ25hbC5TSUdURVJNKQoKICAgICAgICBkZWYga2lsbChzZWxmKToKICAgICAgICAgICAgIiIiS2lsbCB0aGUgcHJvY2VzcyB3aXRoIFNJR0tJTEwKICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIHNlbGYuc2VuZF9zaWduYWwoc2lnbmFsLlNJR0tJTEwpClBLAwQUAAAAAAACIKNWlI8x9TBIAAAwSAAACAAAAHN1bmF1LnB5IiIiU3R1ZmYgdG8gcGFyc2UgU3VuIGFuZCBOZVhUIGF1ZGlvIGZpbGVzLgoKQW4gYXVkaW8gZmlsZSBjb25zaXN0cyBvZiBhIGhlYWRlciBmb2xsb3dlZCBieSB0aGUgZGF0YS4gIFRoZSBzdHJ1Y3R1cmUKb2YgdGhlIGhlYWRlciBpcyBhcyBmb2xsb3dzLgoKICAgICAgICArLS0tLS0tLS0tLS0tLS0tKwogICAgICAgIHwgbWFnaWMgd29yZCAgICB8CiAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsKICAgICAgICB8IGhlYWRlciBzaXplICAgfAogICAgICAgICstLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgfCBkYXRhIHNpemUgICAgIHwKICAgICAgICArLS0tLS0tLS0tLS0tLS0tKwogICAgICAgIHwgZW5jb2RpbmcgICAgICB8CiAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsKICAgICAgICB8IHNhbXBsZSByYXRlICAgfAogICAgICAgICstLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgfCAjIG9mIGNoYW5uZWxzIHwKICAgICAgICArLS0tLS0tLS0tLS0tLS0tKwogICAgICAgIHwgaW5mbyAgICAgICAgICB8CiAgICAgICAgfCAgICAgICAgICAgICAgIHwKICAgICAgICArLS0tLS0tLS0tLS0tLS0tKwoKVGhlIG1hZ2ljIHdvcmQgY29uc2lzdHMgb2YgdGhlIDQgY2hhcmFjdGVycyAnLnNuZCcuICBBcGFydCBmcm9tIHRoZQppbmZvIGZpZWxkLCBhbGwgaGVhZGVyIGZpZWxkcyBhcmUgNCBieXRlcyBpbiBzaXplLiAgVGhleSBhcmUgYWxsCjMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VycyBlbmNvZGVkIGluIGJpZy1lbmRpYW4gYnl0ZSBvcmRlci4KClRoZSBoZWFkZXIgc2l6ZSByZWFsbHkgZ2l2ZXMgdGhlIHN0YXJ0IG9mIHRoZSBkYXRhLgpUaGUgZGF0YSBzaXplIGlzIHRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkYXRhLiAgRnJvbSB0aGUgb3RoZXIKcGFyYW1ldGVycyB0aGUgbnVtYmVyIG9mIGZyYW1lcyBjYW4gYmUgY2FsY3VsYXRlZC4KVGhlIGVuY29kaW5nIGdpdmVzIHRoZSB3YXkgaW4gd2hpY2ggYXVkaW8gc2FtcGxlcyBhcmUgZW5jb2RlZC4KUG9zc2libGUgdmFsdWVzIGFyZSBsaXN0ZWQgYmVsb3cuClRoZSBpbmZvIGZpZWxkIGN1cnJlbnRseSBjb25zaXN0cyBvZiBhbiBBU0NJSSBzdHJpbmcgZ2l2aW5nIGEKaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGF1ZGlvIGZpbGUuICBUaGUgaW5mbyBmaWVsZCBpcwpwYWRkZWQgd2l0aCBOVUwgYnl0ZXMgdG8gdGhlIGhlYWRlciBzaXplLgoKVXNhZ2UuCgpSZWFkaW5nIGF1ZGlvIGZpbGVzOgogICAgICAgIGYgPSBzdW5hdS5vcGVuKGZpbGUsICdyJykKd2hlcmUgZmlsZSBpcyBlaXRoZXIgdGhlIG5hbWUgb2YgYSBmaWxlIG9yIGFuIG9wZW4gZmlsZSBwb2ludGVyLgpUaGUgb3BlbiBmaWxlIHBvaW50ZXIgbXVzdCBoYXZlIG1ldGhvZHMgcmVhZCgpLCBzZWVrKCksIGFuZCBjbG9zZSgpLgpXaGVuIHRoZSBzZXRwb3MoKSBhbmQgcmV3aW5kKCkgbWV0aG9kcyBhcmUgbm90IHVzZWQsIHRoZSBzZWVrKCkKbWV0aG9kIGlzIG5vdCAgbmVjZXNzYXJ5LgoKVGhpcyByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCB0aGUgZm9sbG93aW5nIHB1YmxpYyBtZXRob2RzOgogICAgICAgIGdldG5jaGFubmVscygpICAtLSByZXR1cm5zIG51bWJlciBvZiBhdWRpbyBjaGFubmVscyAoMSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ubywgMiBmb3Igc3RlcmVvKQogICAgICAgIGdldHNhbXB3aWR0aCgpICAtLSByZXR1cm5zIHNhbXBsZSB3aWR0aCBpbiBieXRlcwogICAgICAgIGdldGZyYW1lcmF0ZSgpICAtLSByZXR1cm5zIHNhbXBsaW5nIGZyZXF1ZW5jeQogICAgICAgIGdldG5mcmFtZXMoKSAgICAtLSByZXR1cm5zIG51bWJlciBvZiBhdWRpbyBmcmFtZXMKICAgICAgICBnZXRjb21wdHlwZSgpICAgLS0gcmV0dXJucyBjb21wcmVzc2lvbiB0eXBlICgnTk9ORScgb3IgJ1VMQVcnKQogICAgICAgIGdldGNvbXBuYW1lKCkgICAtLSByZXR1cm5zIGh1bWFuLXJlYWRhYmxlIHZlcnNpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb24gdHlwZSAoJ25vdCBjb21wcmVzc2VkJyBtYXRjaGVzICdOT05FJykKICAgICAgICBnZXRwYXJhbXMoKSAgICAgLS0gcmV0dXJucyBhIG5hbWVkdHVwbGUgY29uc2lzdGluZyBvZiBhbGwgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlIGluIHRoZSBhYm92ZSBvcmRlcgogICAgICAgIGdldG1hcmtlcnMoKSAgICAtLSByZXR1cm5zIE5vbmUgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpZmMgbW9kdWxlKQogICAgICAgIGdldG1hcmsoaWQpICAgICAtLSByYWlzZXMgYW4gZXJyb3Igc2luY2UgdGhlIG1hcmsgZG9lcyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3QgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGFpZmMgbW9kdWxlKQogICAgICAgIHJlYWRmcmFtZXMobikgICAtLSByZXR1cm5zIGF0IG1vc3QgbiBmcmFtZXMgb2YgYXVkaW8KICAgICAgICByZXdpbmQoKSAgICAgICAgLS0gcmV3aW5kIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGF1ZGlvIHN0cmVhbQogICAgICAgIHNldHBvcyhwb3MpICAgICAtLSBzZWVrIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24KICAgICAgICB0ZWxsKCkgICAgICAgICAgLS0gcmV0dXJuIHRoZSBjdXJyZW50IHBvc2l0aW9uCiAgICAgICAgY2xvc2UoKSAgICAgICAgIC0tIGNsb3NlIHRoZSBpbnN0YW5jZSAobWFrZSBpdCB1bnVzYWJsZSkKVGhlIHBvc2l0aW9uIHJldHVybmVkIGJ5IHRlbGwoKSBhbmQgdGhlIHBvc2l0aW9uIGdpdmVuIHRvIHNldHBvcygpCmFyZSBjb21wYXRpYmxlIGFuZCBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgYWN0dWFsIHBvc2l0aW9uIGluIHRoZQpmaWxlLgpUaGUgY2xvc2UoKSBtZXRob2QgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgY2xhc3MgaW5zdGFuY2UKaXMgZGVzdHJveWVkLgoKV3JpdGluZyBhdWRpbyBmaWxlczoKICAgICAgICBmID0gc3VuYXUub3BlbihmaWxlLCAndycpCndoZXJlIGZpbGUgaXMgZWl0aGVyIHRoZSBuYW1lIG9mIGEgZmlsZSBvciBhbiBvcGVuIGZpbGUgcG9pbnRlci4KVGhlIG9wZW4gZmlsZSBwb2ludGVyIG11c3QgaGF2ZSBtZXRob2RzIHdyaXRlKCksIHRlbGwoKSwgc2VlaygpLCBhbmQKY2xvc2UoKS4KClRoaXMgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHdpdGggdGhlIGZvbGxvd2luZyBwdWJsaWMgbWV0aG9kczoKICAgICAgICBzZXRuY2hhbm5lbHMobikgLS0gc2V0IHRoZSBudW1iZXIgb2YgY2hhbm5lbHMKICAgICAgICBzZXRzYW1wd2lkdGgobikgLS0gc2V0IHRoZSBzYW1wbGUgd2lkdGgKICAgICAgICBzZXRmcmFtZXJhdGUobikgLS0gc2V0IHRoZSBmcmFtZSByYXRlCiAgICAgICAgc2V0bmZyYW1lcyhuKSAgIC0tIHNldCB0aGUgbnVtYmVyIG9mIGZyYW1lcwogICAgICAgIHNldGNvbXB0eXBlKHR5cGUsIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgIC0tIHNldCB0aGUgY29tcHJlc3Npb24gdHlwZSBhbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGh1bWFuLXJlYWRhYmxlIGNvbXByZXNzaW9uIHR5cGUKICAgICAgICBzZXRwYXJhbXModHVwbGUpLS0gc2V0IGFsbCBwYXJhbWV0ZXJzIGF0IG9uY2UKICAgICAgICB0ZWxsKCkgICAgICAgICAgLS0gcmV0dXJuIGN1cnJlbnQgcG9zaXRpb24gaW4gb3V0cHV0IGZpbGUKICAgICAgICB3cml0ZWZyYW1lc3JhdyhkYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAtLSB3cml0ZSBhdWRpbyBmcmFtZXMgd2l0aG91dCBwYXRoaW5nIHVwIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGhlYWRlcgogICAgICAgIHdyaXRlZnJhbWVzKGRhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgIC0tIHdyaXRlIGF1ZGlvIGZyYW1lcyBhbmQgcGF0Y2ggdXAgdGhlIGZpbGUgaGVhZGVyCiAgICAgICAgY2xvc2UoKSAgICAgICAgIC0tIHBhdGNoIHVwIHRoZSBmaWxlIGhlYWRlciBhbmQgY2xvc2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBmaWxlCllvdSBzaG91bGQgc2V0IHRoZSBwYXJhbWV0ZXJzIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGVmcmFtZXNyYXcgb3IKd3JpdGVmcmFtZXMuICBUaGUgdG90YWwgbnVtYmVyIG9mIGZyYW1lcyBkb2VzIG5vdCBuZWVkIHRvIGJlIHNldCwKYnV0IHdoZW4gaXQgaXMgc2V0IHRvIHRoZSBjb3JyZWN0IHZhbHVlLCB0aGUgaGVhZGVyIGRvZXMgbm90IGhhdmUgdG8KYmUgcGF0Y2hlZCB1cC4KSXQgaXMgYmVzdCB0byBmaXJzdCBzZXQgYWxsIHBhcmFtZXRlcnMsIHBlcmhhcHMgcG9zc2libHkgdGhlCmNvbXByZXNzaW9uIHR5cGUsIGFuZCB0aGVuIHdyaXRlIGF1ZGlvIGZyYW1lcyB1c2luZyB3cml0ZWZyYW1lc3Jhdy4KV2hlbiBhbGwgZnJhbWVzIGhhdmUgYmVlbiB3cml0dGVuLCBlaXRoZXIgY2FsbCB3cml0ZWZyYW1lcyhiJycpIG9yCmNsb3NlKCkgdG8gcGF0Y2ggdXAgdGhlIHNpemVzIGluIHRoZSBoZWFkZXIuClRoZSBjbG9zZSgpIG1ldGhvZCBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBjbGFzcyBpbnN0YW5jZQppcyBkZXN0cm95ZWQuCiIiIgoKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQppbXBvcnQgd2FybmluZ3MKCndhcm5pbmdzLl9kZXByZWNhdGVkKF9fbmFtZV9fLCByZW1vdmU9KDMsIDEzKSkKCgpfc3VuYXVfcGFyYW1zID0gbmFtZWR0dXBsZSgnX3N1bmF1X3BhcmFtcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICduY2hhbm5lbHMgc2FtcHdpZHRoIGZyYW1lcmF0ZSBuZnJhbWVzIGNvbXB0eXBlIGNvbXBuYW1lJykKCiMgZnJvbSA8bXVsdGltZWRpYS9hdWRpb19maWxlaGRyLmg+CkFVRElPX0ZJTEVfTUFHSUMgPSAweDJlNzM2ZTY0CkFVRElPX0ZJTEVfRU5DT0RJTkdfTVVMQVdfOCA9IDEKQVVESU9fRklMRV9FTkNPRElOR19MSU5FQVJfOCA9IDIKQVVESU9fRklMRV9FTkNPRElOR19MSU5FQVJfMTYgPSAzCkFVRElPX0ZJTEVfRU5DT0RJTkdfTElORUFSXzI0ID0gNApBVURJT19GSUxFX0VOQ09ESU5HX0xJTkVBUl8zMiA9IDUKQVVESU9fRklMRV9FTkNPRElOR19GTE9BVCA9IDYKQVVESU9fRklMRV9FTkNPRElOR19ET1VCTEUgPSA3CkFVRElPX0ZJTEVfRU5DT0RJTkdfQURQQ01fRzcyMSA9IDIzCkFVRElPX0ZJTEVfRU5DT0RJTkdfQURQQ01fRzcyMiA9IDI0CkFVRElPX0ZJTEVfRU5DT0RJTkdfQURQQ01fRzcyM18zID0gMjUKQVVESU9fRklMRV9FTkNPRElOR19BRFBDTV9HNzIzXzUgPSAyNgpBVURJT19GSUxFX0VOQ09ESU5HX0FMQVdfOCA9IDI3CgojIGZyb20gPG11bHRpbWVkaWEvYXVkaW9faGRyLmg+CkFVRElPX1VOS05PV05fU0laRSA9IDB4RkZGRkZGRkYgICAgICAgICMgKCh1bnNpZ25lZCkofjApKQoKX3NpbXBsZV9lbmNvZGluZ3MgPSBbQVVESU9fRklMRV9FTkNPRElOR19NVUxBV184LAogICAgICAgICAgICAgICAgICAgICBBVURJT19GSUxFX0VOQ09ESU5HX0xJTkVBUl84LAogICAgICAgICAgICAgICAgICAgICBBVURJT19GSUxFX0VOQ09ESU5HX0xJTkVBUl8xNiwKICAgICAgICAgICAgICAgICAgICAgQVVESU9fRklMRV9FTkNPRElOR19MSU5FQVJfMjQsCiAgICAgICAgICAgICAgICAgICAgIEFVRElPX0ZJTEVfRU5DT0RJTkdfTElORUFSXzMyLAogICAgICAgICAgICAgICAgICAgICBBVURJT19GSUxFX0VOQ09ESU5HX0FMQVdfOF0KCmNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CiAgICBwYXNzCgpkZWYgX3JlYWRfdTMyKGZpbGUpOgogICAgeCA9IDAKICAgIGZvciBpIGluIHJhbmdlKDQpOgogICAgICAgIGJ5dGUgPSBmaWxlLnJlYWQoMSkKICAgICAgICBpZiBub3QgYnl0ZToKICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKICAgICAgICB4ID0geCoyNTYgKyBvcmQoYnl0ZSkKICAgIHJldHVybiB4CgpkZWYgX3dyaXRlX3UzMihmaWxlLCB4KToKICAgIGRhdGEgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2UoNCk6CiAgICAgICAgZCwgbSA9IGRpdm1vZCh4LCAyNTYpCiAgICAgICAgZGF0YS5pbnNlcnQoMCwgaW50KG0pKQogICAgICAgIHggPSBkCiAgICBmaWxlLndyaXRlKGJ5dGVzKGRhdGEpKQoKY2xhc3MgQXVfcmVhZDoKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZik6CiAgICAgICAgaWYgdHlwZShmKSA9PSB0eXBlKCcnKToKICAgICAgICAgICAgaW1wb3J0IGJ1aWx0aW5zCiAgICAgICAgICAgIGYgPSBidWlsdGlucy5vcGVuKGYsICdyYicpCiAgICAgICAgICAgIHNlbGYuX29wZW5lZCA9IFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9vcGVuZWQgPSBGYWxzZQogICAgICAgIHNlbGYuaW5pdGZwKGYpCgogICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fZmlsZToKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZGVmIGluaXRmcChzZWxmLCBmaWxlKToKICAgICAgICBzZWxmLl9maWxlID0gZmlsZQogICAgICAgIHNlbGYuX3NvdW5kcG9zID0gMAogICAgICAgIG1hZ2ljID0gaW50KF9yZWFkX3UzMihmaWxlKSkKICAgICAgICBpZiBtYWdpYyAhPSBBVURJT19GSUxFX01BR0lDOgogICAgICAgICAgICByYWlzZSBFcnJvcignYmFkIG1hZ2ljIG51bWJlcicpCiAgICAgICAgc2VsZi5faGRyX3NpemUgPSBpbnQoX3JlYWRfdTMyKGZpbGUpKQogICAgICAgIGlmIHNlbGYuX2hkcl9zaXplIDwgMjQ6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdoZWFkZXIgc2l6ZSB0b28gc21hbGwnKQogICAgICAgIGlmIHNlbGYuX2hkcl9zaXplID4gMTAwOgogICAgICAgICAgICByYWlzZSBFcnJvcignaGVhZGVyIHNpemUgcmlkaWN1bG91c2x5IGxhcmdlJykKICAgICAgICBzZWxmLl9kYXRhX3NpemUgPSBfcmVhZF91MzIoZmlsZSkKICAgICAgICBpZiBzZWxmLl9kYXRhX3NpemUgIT0gQVVESU9fVU5LTk9XTl9TSVpFOgogICAgICAgICAgICBzZWxmLl9kYXRhX3NpemUgPSBpbnQoc2VsZi5fZGF0YV9zaXplKQogICAgICAgIHNlbGYuX2VuY29kaW5nID0gaW50KF9yZWFkX3UzMihmaWxlKSkKICAgICAgICBpZiBzZWxmLl9lbmNvZGluZyBub3QgaW4gX3NpbXBsZV9lbmNvZGluZ3M6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdlbmNvZGluZyBub3QgKHlldCkgc3VwcG9ydGVkJykKICAgICAgICBpZiBzZWxmLl9lbmNvZGluZyBpbiAoQVVESU9fRklMRV9FTkNPRElOR19NVUxBV184LAogICAgICAgICAgICAgICAgICBBVURJT19GSUxFX0VOQ09ESU5HX0FMQVdfOCk6CiAgICAgICAgICAgIHNlbGYuX3NhbXB3aWR0aCA9IDIKICAgICAgICAgICAgc2VsZi5fZnJhbWVzaXplID0gMQogICAgICAgIGVsaWYgc2VsZi5fZW5jb2RpbmcgPT0gQVVESU9fRklMRV9FTkNPRElOR19MSU5FQVJfODoKICAgICAgICAgICAgc2VsZi5fZnJhbWVzaXplID0gc2VsZi5fc2FtcHdpZHRoID0gMQogICAgICAgIGVsaWYgc2VsZi5fZW5jb2RpbmcgPT0gQVVESU9fRklMRV9FTkNPRElOR19MSU5FQVJfMTY6CiAgICAgICAgICAgIHNlbGYuX2ZyYW1lc2l6ZSA9IHNlbGYuX3NhbXB3aWR0aCA9IDIKICAgICAgICBlbGlmIHNlbGYuX2VuY29kaW5nID09IEFVRElPX0ZJTEVfRU5DT0RJTkdfTElORUFSXzI0OgogICAgICAgICAgICBzZWxmLl9mcmFtZXNpemUgPSBzZWxmLl9zYW1wd2lkdGggPSAzCiAgICAgICAgZWxpZiBzZWxmLl9lbmNvZGluZyA9PSBBVURJT19GSUxFX0VOQ09ESU5HX0xJTkVBUl8zMjoKICAgICAgICAgICAgc2VsZi5fZnJhbWVzaXplID0gc2VsZi5fc2FtcHdpZHRoID0gNAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCd1bmtub3duIGVuY29kaW5nJykKICAgICAgICBzZWxmLl9mcmFtZXJhdGUgPSBpbnQoX3JlYWRfdTMyKGZpbGUpKQogICAgICAgIHNlbGYuX25jaGFubmVscyA9IGludChfcmVhZF91MzIoZmlsZSkpCiAgICAgICAgaWYgbm90IHNlbGYuX25jaGFubmVsczoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2JhZCAjIG9mIGNoYW5uZWxzJykKICAgICAgICBzZWxmLl9mcmFtZXNpemUgPSBzZWxmLl9mcmFtZXNpemUgKiBzZWxmLl9uY2hhbm5lbHMKICAgICAgICBpZiBzZWxmLl9oZHJfc2l6ZSA+IDI0OgogICAgICAgICAgICBzZWxmLl9pbmZvID0gZmlsZS5yZWFkKHNlbGYuX2hkcl9zaXplIC0gMjQpCiAgICAgICAgICAgIHNlbGYuX2luZm8sIF8sIF8gPSBzZWxmLl9pbmZvLnBhcnRpdGlvbihiJ1wwJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9pbmZvID0gYicnCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9kYXRhX3BvcyA9IGZpbGUudGVsbCgpCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgICAgIHNlbGYuX2RhdGFfcG9zID0gTm9uZQoKICAgIGRlZiBnZXRmcChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZQoKICAgIGRlZiBnZXRuY2hhbm5lbHMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX25jaGFubmVscwoKICAgIGRlZiBnZXRzYW1wd2lkdGgoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NhbXB3aWR0aAoKICAgIGRlZiBnZXRmcmFtZXJhdGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZyYW1lcmF0ZQoKICAgIGRlZiBnZXRuZnJhbWVzKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2RhdGFfc2l6ZSA9PSBBVURJT19VTktOT1dOX1NJWkU6CiAgICAgICAgICAgIHJldHVybiBBVURJT19VTktOT1dOX1NJWkUKICAgICAgICBpZiBzZWxmLl9lbmNvZGluZyBpbiBfc2ltcGxlX2VuY29kaW5nczoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGFfc2l6ZSAvLyBzZWxmLl9mcmFtZXNpemUKICAgICAgICByZXR1cm4gMCAgICAgICAgICAgICAgICAjIFhYWC0tbXVzdCBkbyBzb21lIGFyaXRobWV0aWMgaGVyZQoKICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKICAgICAgICBpZiBzZWxmLl9lbmNvZGluZyA9PSBBVURJT19GSUxFX0VOQ09ESU5HX01VTEFXXzg6CiAgICAgICAgICAgIHJldHVybiAnVUxBVycKICAgICAgICBlbGlmIHNlbGYuX2VuY29kaW5nID09IEFVRElPX0ZJTEVfRU5DT0RJTkdfQUxBV184OgogICAgICAgICAgICByZXR1cm4gJ0FMQVcnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICdOT05FJwoKICAgIGRlZiBnZXRjb21wbmFtZShzZWxmKToKICAgICAgICBpZiBzZWxmLl9lbmNvZGluZyA9PSBBVURJT19GSUxFX0VOQ09ESU5HX01VTEFXXzg6CiAgICAgICAgICAgIHJldHVybiAnQ0NJVFQgRy43MTEgdS1sYXcnCiAgICAgICAgZWxpZiBzZWxmLl9lbmNvZGluZyA9PSBBVURJT19GSUxFX0VOQ09ESU5HX0FMQVdfODoKICAgICAgICAgICAgcmV0dXJuICdDQ0lUVCBHLjcxMSBBLWxhdycKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gJ25vdCBjb21wcmVzc2VkJwoKICAgIGRlZiBnZXRwYXJhbXMoc2VsZik6CiAgICAgICAgcmV0dXJuIF9zdW5hdV9wYXJhbXMoc2VsZi5nZXRuY2hhbm5lbHMoKSwgc2VsZi5nZXRzYW1wd2lkdGgoKSwKICAgICAgICAgICAgICAgICAgc2VsZi5nZXRmcmFtZXJhdGUoKSwgc2VsZi5nZXRuZnJhbWVzKCksCiAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0Y29tcHR5cGUoKSwgc2VsZi5nZXRjb21wbmFtZSgpKQoKICAgIGRlZiBnZXRtYXJrZXJzKHNlbGYpOgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGdldG1hcmsoc2VsZiwgaWQpOgogICAgICAgIHJhaXNlIEVycm9yKCdubyBtYXJrcycpCgogICAgZGVmIHJlYWRmcmFtZXMoc2VsZiwgbmZyYW1lcyk6CiAgICAgICAgaWYgc2VsZi5fZW5jb2RpbmcgaW4gX3NpbXBsZV9lbmNvZGluZ3M6CiAgICAgICAgICAgIGlmIG5mcmFtZXMgPT0gQVVESU9fVU5LTk9XTl9TSVpFOgogICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKG5mcmFtZXMgKiBzZWxmLl9mcmFtZXNpemUpCiAgICAgICAgICAgIHNlbGYuX3NvdW5kcG9zICs9IGxlbihkYXRhKSAvLyBzZWxmLl9mcmFtZXNpemUKICAgICAgICAgICAgaWYgc2VsZi5fZW5jb2RpbmcgPT0gQVVESU9fRklMRV9FTkNPRElOR19NVUxBV184OgogICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgICAgIGltcG9ydCBhdWRpb29wCiAgICAgICAgICAgICAgICBkYXRhID0gYXVkaW9vcC51bGF3MmxpbihkYXRhLCBzZWxmLl9zYW1wd2lkdGgpCiAgICAgICAgICAgIHJldHVybiBkYXRhCiAgICAgICAgcmV0dXJuIE5vbmUgICAgICAgICAgICAgIyBYWFgtLW5vdCBpbXBsZW1lbnRlZCB5ZXQKCiAgICBkZWYgcmV3aW5kKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2RhdGFfcG9zIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2Nhbm5vdCBzZWVrJykKICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fZGF0YV9wb3MpCiAgICAgICAgc2VsZi5fc291bmRwb3MgPSAwCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NvdW5kcG9zCgogICAgZGVmIHNldHBvcyhzZWxmLCBwb3MpOgogICAgICAgIGlmIHBvcyA8IDAgb3IgcG9zID4gc2VsZi5nZXRuZnJhbWVzKCk6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdwb3NpdGlvbiBub3QgaW4gcmFuZ2UnKQogICAgICAgIGlmIHNlbGYuX2RhdGFfcG9zIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2Nhbm5vdCBzZWVrJykKICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fZGF0YV9wb3MgKyBwb3MgKiBzZWxmLl9mcmFtZXNpemUpCiAgICAgICAgc2VsZi5fc291bmRwb3MgPSBwb3MKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgZmlsZSA9IHNlbGYuX2ZpbGUKICAgICAgICBpZiBmaWxlOgogICAgICAgICAgICBzZWxmLl9maWxlID0gTm9uZQogICAgICAgICAgICBpZiBzZWxmLl9vcGVuZWQ6CiAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKCmNsYXNzIEF1X3dyaXRlOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmKToKICAgICAgICBpZiB0eXBlKGYpID09IHR5cGUoJycpOgogICAgICAgICAgICBpbXBvcnQgYnVpbHRpbnMKICAgICAgICAgICAgZiA9IGJ1aWx0aW5zLm9wZW4oZiwgJ3diJykKICAgICAgICAgICAgc2VsZi5fb3BlbmVkID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX29wZW5lZCA9IEZhbHNlCiAgICAgICAgc2VsZi5pbml0ZnAoZikKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9maWxlOgogICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICBzZWxmLl9maWxlID0gTm9uZQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgogICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBpbml0ZnAoc2VsZiwgZmlsZSk6CiAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGUKICAgICAgICBzZWxmLl9mcmFtZXJhdGUgPSAwCiAgICAgICAgc2VsZi5fbmNoYW5uZWxzID0gMAogICAgICAgIHNlbGYuX3NhbXB3aWR0aCA9IDAKICAgICAgICBzZWxmLl9mcmFtZXNpemUgPSAwCiAgICAgICAgc2VsZi5fbmZyYW1lcyA9IEFVRElPX1VOS05PV05fU0laRQogICAgICAgIHNlbGYuX25mcmFtZXN3cml0dGVuID0gMAogICAgICAgIHNlbGYuX2RhdGF3cml0dGVuID0gMAogICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSAwCiAgICAgICAgc2VsZi5faW5mbyA9IGInJwogICAgICAgIHNlbGYuX2NvbXB0eXBlID0gJ1VMQVcnICMgZGVmYXVsdCBpcyBVLWxhdwoKICAgIGRlZiBzZXRuY2hhbm5lbHMoc2VsZiwgbmNoYW5uZWxzKToKICAgICAgICBpZiBzZWxmLl9uZnJhbWVzd3JpdHRlbjoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2Nhbm5vdCBjaGFuZ2UgcGFyYW1ldGVycyBhZnRlciBzdGFydGluZyB0byB3cml0ZScpCiAgICAgICAgaWYgbmNoYW5uZWxzIG5vdCBpbiAoMSwgMiwgNCk6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdvbmx5IDEsIDIsIG9yIDQgY2hhbm5lbHMgc3VwcG9ydGVkJykKICAgICAgICBzZWxmLl9uY2hhbm5lbHMgPSBuY2hhbm5lbHMKCiAgICBkZWYgZ2V0bmNoYW5uZWxzKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9uY2hhbm5lbHM6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdudW1iZXIgb2YgY2hhbm5lbHMgbm90IHNldCcpCiAgICAgICAgcmV0dXJuIHNlbGYuX25jaGFubmVscwoKICAgIGRlZiBzZXRzYW1wd2lkdGgoc2VsZiwgc2FtcHdpZHRoKToKICAgICAgICBpZiBzZWxmLl9uZnJhbWVzd3JpdHRlbjoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2Nhbm5vdCBjaGFuZ2UgcGFyYW1ldGVycyBhZnRlciBzdGFydGluZyB0byB3cml0ZScpCiAgICAgICAgaWYgc2FtcHdpZHRoIG5vdCBpbiAoMSwgMiwgMywgNCk6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdiYWQgc2FtcGxlIHdpZHRoJykKICAgICAgICBzZWxmLl9zYW1wd2lkdGggPSBzYW1wd2lkdGgKCiAgICBkZWYgZ2V0c2FtcHdpZHRoKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9mcmFtZXJhdGU6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdzYW1wbGUgd2lkdGggbm90IHNwZWNpZmllZCcpCiAgICAgICAgcmV0dXJuIHNlbGYuX3NhbXB3aWR0aAoKICAgIGRlZiBzZXRmcmFtZXJhdGUoc2VsZiwgZnJhbWVyYXRlKToKICAgICAgICBpZiBzZWxmLl9uZnJhbWVzd3JpdHRlbjoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2Nhbm5vdCBjaGFuZ2UgcGFyYW1ldGVycyBhZnRlciBzdGFydGluZyB0byB3cml0ZScpCiAgICAgICAgc2VsZi5fZnJhbWVyYXRlID0gZnJhbWVyYXRlCgogICAgZGVmIGdldGZyYW1lcmF0ZShzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fZnJhbWVyYXRlOgogICAgICAgICAgICByYWlzZSBFcnJvcignZnJhbWUgcmF0ZSBub3Qgc2V0JykKICAgICAgICByZXR1cm4gc2VsZi5fZnJhbWVyYXRlCgogICAgZGVmIHNldG5mcmFtZXMoc2VsZiwgbmZyYW1lcyk6CiAgICAgICAgaWYgc2VsZi5fbmZyYW1lc3dyaXR0ZW46CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdjYW5ub3QgY2hhbmdlIHBhcmFtZXRlcnMgYWZ0ZXIgc3RhcnRpbmcgdG8gd3JpdGUnKQogICAgICAgIGlmIG5mcmFtZXMgPCAwOgogICAgICAgICAgICByYWlzZSBFcnJvcignIyBvZiBmcmFtZXMgY2Fubm90IGJlIG5lZ2F0aXZlJykKICAgICAgICBzZWxmLl9uZnJhbWVzID0gbmZyYW1lcwoKICAgIGRlZiBnZXRuZnJhbWVzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uZnJhbWVzd3JpdHRlbgoKICAgIGRlZiBzZXRjb21wdHlwZShzZWxmLCB0eXBlLCBuYW1lKToKICAgICAgICBpZiB0eXBlIGluICgnTk9ORScsICdVTEFXJyk6CiAgICAgICAgICAgIHNlbGYuX2NvbXB0eXBlID0gdHlwZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCd1bmtub3duIGNvbXByZXNzaW9uIHR5cGUnKQoKICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY29tcHR5cGUKCiAgICBkZWYgZ2V0Y29tcG5hbWUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY29tcHR5cGUgPT0gJ1VMQVcnOgogICAgICAgICAgICByZXR1cm4gJ0NDSVRUIEcuNzExIHUtbGF3JwogICAgICAgIGVsaWYgc2VsZi5fY29tcHR5cGUgPT0gJ0FMQVcnOgogICAgICAgICAgICByZXR1cm4gJ0NDSVRUIEcuNzExIEEtbGF3JwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnbm90IGNvbXByZXNzZWQnCgogICAgZGVmIHNldHBhcmFtcyhzZWxmLCBwYXJhbXMpOgogICAgICAgIG5jaGFubmVscywgc2FtcHdpZHRoLCBmcmFtZXJhdGUsIG5mcmFtZXMsIGNvbXB0eXBlLCBjb21wbmFtZSA9IHBhcmFtcwogICAgICAgIHNlbGYuc2V0bmNoYW5uZWxzKG5jaGFubmVscykKICAgICAgICBzZWxmLnNldHNhbXB3aWR0aChzYW1wd2lkdGgpCiAgICAgICAgc2VsZi5zZXRmcmFtZXJhdGUoZnJhbWVyYXRlKQogICAgICAgIHNlbGYuc2V0bmZyYW1lcyhuZnJhbWVzKQogICAgICAgIHNlbGYuc2V0Y29tcHR5cGUoY29tcHR5cGUsIGNvbXBuYW1lKQoKICAgIGRlZiBnZXRwYXJhbXMoc2VsZik6CiAgICAgICAgcmV0dXJuIF9zdW5hdV9wYXJhbXMoc2VsZi5nZXRuY2hhbm5lbHMoKSwgc2VsZi5nZXRzYW1wd2lkdGgoKSwKICAgICAgICAgICAgICAgICAgc2VsZi5nZXRmcmFtZXJhdGUoKSwgc2VsZi5nZXRuZnJhbWVzKCksCiAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0Y29tcHR5cGUoKSwgc2VsZi5nZXRjb21wbmFtZSgpKQoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uZnJhbWVzd3JpdHRlbgoKICAgIGRlZiB3cml0ZWZyYW1lc3JhdyhzZWxmLCBkYXRhKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgogICAgICAgICAgICBkYXRhID0gbWVtb3J5dmlldyhkYXRhKS5jYXN0KCdCJykKICAgICAgICBzZWxmLl9lbnN1cmVfaGVhZGVyX3dyaXR0ZW4oKQogICAgICAgIGlmIHNlbGYuX2NvbXB0eXBlID09ICdVTEFXJzoKICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICBpbXBvcnQgYXVkaW9vcAogICAgICAgICAgICBkYXRhID0gYXVkaW9vcC5saW4ydWxhdyhkYXRhLCBzZWxmLl9zYW1wd2lkdGgpCiAgICAgICAgbmZyYW1lcyA9IGxlbihkYXRhKSAvLyBzZWxmLl9mcmFtZXNpemUKICAgICAgICBzZWxmLl9maWxlLndyaXRlKGRhdGEpCiAgICAgICAgc2VsZi5fbmZyYW1lc3dyaXR0ZW4gPSBzZWxmLl9uZnJhbWVzd3JpdHRlbiArIG5mcmFtZXMKICAgICAgICBzZWxmLl9kYXRhd3JpdHRlbiA9IHNlbGYuX2RhdGF3cml0dGVuICsgbGVuKGRhdGEpCgogICAgZGVmIHdyaXRlZnJhbWVzKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYud3JpdGVmcmFtZXNyYXcoZGF0YSkKICAgICAgICBpZiBzZWxmLl9uZnJhbWVzd3JpdHRlbiAhPSBzZWxmLl9uZnJhbWVzIG9yIFwKICAgICAgICAgICAgICAgICAgc2VsZi5fZGF0YWxlbmd0aCAhPSBzZWxmLl9kYXRhd3JpdHRlbjoKICAgICAgICAgICAgc2VsZi5fcGF0Y2hoZWFkZXIoKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiBzZWxmLl9maWxlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLl9lbnN1cmVfaGVhZGVyX3dyaXR0ZW4oKQogICAgICAgICAgICAgICAgaWYgc2VsZi5fbmZyYW1lc3dyaXR0ZW4gIT0gc2VsZi5fbmZyYW1lcyBvciBcCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFsZW5ndGggIT0gc2VsZi5fZGF0YXdyaXR0ZW46CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGF0Y2hoZWFkZXIoKQogICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5mbHVzaCgpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBmaWxlID0gc2VsZi5fZmlsZQogICAgICAgICAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wZW5lZDoKICAgICAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKCiAgICAjCiAgICAjIHByaXZhdGUgbWV0aG9kcwogICAgIwoKICAgIGRlZiBfZW5zdXJlX2hlYWRlcl93cml0dGVuKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9uZnJhbWVzd3JpdHRlbjoKICAgICAgICAgICAgaWYgbm90IHNlbGYuX25jaGFubmVsczoKICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCcjIG9mIGNoYW5uZWxzIG5vdCBzcGVjaWZpZWQnKQogICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2FtcHdpZHRoOgogICAgICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ3NhbXBsZSB3aWR0aCBub3Qgc3BlY2lmaWVkJykKICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZyYW1lcmF0ZToKICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCdmcmFtZSByYXRlIG5vdCBzcGVjaWZpZWQnKQogICAgICAgICAgICBzZWxmLl93cml0ZV9oZWFkZXIoKQoKICAgIGRlZiBfd3JpdGVfaGVhZGVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2NvbXB0eXBlID09ICdOT05FJzoKICAgICAgICAgICAgaWYgc2VsZi5fc2FtcHdpZHRoID09IDE6CiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IEFVRElPX0ZJTEVfRU5DT0RJTkdfTElORUFSXzgKICAgICAgICAgICAgICAgIHNlbGYuX2ZyYW1lc2l6ZSA9IDEKICAgICAgICAgICAgZWxpZiBzZWxmLl9zYW1wd2lkdGggPT0gMjoKICAgICAgICAgICAgICAgIGVuY29kaW5nID0gQVVESU9fRklMRV9FTkNPRElOR19MSU5FQVJfMTYKICAgICAgICAgICAgICAgIHNlbGYuX2ZyYW1lc2l6ZSA9IDIKICAgICAgICAgICAgZWxpZiBzZWxmLl9zYW1wd2lkdGggPT0gMzoKICAgICAgICAgICAgICAgIGVuY29kaW5nID0gQVVESU9fRklMRV9FTkNPRElOR19MSU5FQVJfMjQKICAgICAgICAgICAgICAgIHNlbGYuX2ZyYW1lc2l6ZSA9IDMKICAgICAgICAgICAgZWxpZiBzZWxmLl9zYW1wd2lkdGggPT0gNDoKICAgICAgICAgICAgICAgIGVuY29kaW5nID0gQVVESU9fRklMRV9FTkNPRElOR19MSU5FQVJfMzIKICAgICAgICAgICAgICAgIHNlbGYuX2ZyYW1lc2l6ZSA9IDQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCdpbnRlcm5hbCBlcnJvcicpCiAgICAgICAgZWxpZiBzZWxmLl9jb21wdHlwZSA9PSAnVUxBVyc6CiAgICAgICAgICAgIGVuY29kaW5nID0gQVVESU9fRklMRV9FTkNPRElOR19NVUxBV184CiAgICAgICAgICAgIHNlbGYuX2ZyYW1lc2l6ZSA9IDEKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBFcnJvcignaW50ZXJuYWwgZXJyb3InKQogICAgICAgIHNlbGYuX2ZyYW1lc2l6ZSA9IHNlbGYuX2ZyYW1lc2l6ZSAqIHNlbGYuX25jaGFubmVscwogICAgICAgIF93cml0ZV91MzIoc2VsZi5fZmlsZSwgQVVESU9fRklMRV9NQUdJQykKICAgICAgICBoZWFkZXJfc2l6ZSA9IDI1ICsgbGVuKHNlbGYuX2luZm8pCiAgICAgICAgaGVhZGVyX3NpemUgPSAoaGVhZGVyX3NpemUgKyA3KSAmIH43CiAgICAgICAgX3dyaXRlX3UzMihzZWxmLl9maWxlLCBoZWFkZXJfc2l6ZSkKICAgICAgICBpZiBzZWxmLl9uZnJhbWVzID09IEFVRElPX1VOS05PV05fU0laRToKICAgICAgICAgICAgbGVuZ3RoID0gQVVESU9fVU5LTk9XTl9TSVpFCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbGVuZ3RoID0gc2VsZi5fbmZyYW1lcyAqIHNlbGYuX2ZyYW1lc2l6ZQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fZm9ybV9sZW5ndGhfcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgICAgc2VsZi5fZm9ybV9sZW5ndGhfcG9zID0gTm9uZQogICAgICAgIF93cml0ZV91MzIoc2VsZi5fZmlsZSwgbGVuZ3RoKQogICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSBsZW5ndGgKICAgICAgICBfd3JpdGVfdTMyKHNlbGYuX2ZpbGUsIGVuY29kaW5nKQogICAgICAgIF93cml0ZV91MzIoc2VsZi5fZmlsZSwgc2VsZi5fZnJhbWVyYXRlKQogICAgICAgIF93cml0ZV91MzIoc2VsZi5fZmlsZSwgc2VsZi5fbmNoYW5uZWxzKQogICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoc2VsZi5faW5mbykKICAgICAgICBzZWxmLl9maWxlLndyaXRlKGInXDAnKihoZWFkZXJfc2l6ZSAtIGxlbihzZWxmLl9pbmZvKSAtIDI0KSkKCiAgICBkZWYgX3BhdGNoaGVhZGVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2Zvcm1fbGVuZ3RoX3BvcyBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdjYW5ub3Qgc2VlaycpCiAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX2Zvcm1fbGVuZ3RoX3BvcykKICAgICAgICBfd3JpdGVfdTMyKHNlbGYuX2ZpbGUsIHNlbGYuX2RhdGF3cml0dGVuKQogICAgICAgIHNlbGYuX2RhdGFsZW5ndGggPSBzZWxmLl9kYXRhd3JpdHRlbgogICAgICAgIHNlbGYuX2ZpbGUuc2VlaygwLCAyKQoKZGVmIG9wZW4oZiwgbW9kZT1Ob25lKToKICAgIGlmIG1vZGUgaXMgTm9uZToKICAgICAgICBpZiBoYXNhdHRyKGYsICdtb2RlJyk6CiAgICAgICAgICAgIG1vZGUgPSBmLm1vZGUKICAgICAgICBlbHNlOgogICAgICAgICAgICBtb2RlID0gJ3JiJwogICAgaWYgbW9kZSBpbiAoJ3InLCAncmInKToKICAgICAgICByZXR1cm4gQXVfcmVhZChmKQogICAgZWxpZiBtb2RlIGluICgndycsICd3YicpOgogICAgICAgIHJldHVybiBBdV93cml0ZShmKQogICAgZWxzZToKICAgICAgICByYWlzZSBFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ3JiJywgJ3cnLCBvciAnd2InIikKUEsDBBQAAAAAAAIgo1acSCmkgCgAAIAoAAALAAAAc3ltdGFibGUucHkiIiJJbnRlcmZhY2UgdG8gdGhlIGNvbXBpbGVyJ3MgaW50ZXJuYWwgc3ltYm9sIHRhYmxlcyIiIgoKaW1wb3J0IF9zeW10YWJsZQpmcm9tIF9zeW10YWJsZSBpbXBvcnQgKFVTRSwgREVGX0dMT0JBTCwgREVGX05PTkxPQ0FMLCBERUZfTE9DQUwsIERFRl9QQVJBTSwKICAgICBERUZfSU1QT1JULCBERUZfQk9VTkQsIERFRl9BTk5PVCwgU0NPUEVfT0ZGLCBTQ09QRV9NQVNLLCBGUkVFLAogICAgIExPQ0FMLCBHTE9CQUxfSU1QTElDSVQsIEdMT0JBTF9FWFBMSUNJVCwgQ0VMTCkKCmltcG9ydCB3ZWFrcmVmCgpfX2FsbF9fID0gWyJzeW10YWJsZSIsICJTeW1ib2xUYWJsZSIsICJDbGFzcyIsICJGdW5jdGlvbiIsICJTeW1ib2wiXQoKZGVmIHN5bXRhYmxlKGNvZGUsIGZpbGVuYW1lLCBjb21waWxlX3R5cGUpOgogICAgIiIiIFJldHVybiB0aGUgdG9wbGV2ZWwgKlN5bWJvbFRhYmxlKiBmb3IgdGhlIHNvdXJjZSBjb2RlLgoKICAgICpmaWxlbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgd2l0aCB0aGUgY29kZQogICAgYW5kICpjb21waWxlX3R5cGUqIGlzIHRoZSAqY29tcGlsZSgpKiBtb2RlIGFyZ3VtZW50LgogICAgIiIiCiAgICB0b3AgPSBfc3ltdGFibGUuc3ltdGFibGUoY29kZSwgZmlsZW5hbWUsIGNvbXBpbGVfdHlwZSkKICAgIHJldHVybiBfbmV3U3ltYm9sVGFibGUodG9wLCBmaWxlbmFtZSkKCmNsYXNzIFN5bWJvbFRhYmxlRmFjdG9yeToKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9fbWVtbyA9IHdlYWtyZWYuV2Vha1ZhbHVlRGljdGlvbmFyeSgpCgogICAgZGVmIG5ldyhzZWxmLCB0YWJsZSwgZmlsZW5hbWUpOgogICAgICAgIGlmIHRhYmxlLnR5cGUgPT0gX3N5bXRhYmxlLlRZUEVfRlVOQ1RJT046CiAgICAgICAgICAgIHJldHVybiBGdW5jdGlvbih0YWJsZSwgZmlsZW5hbWUpCiAgICAgICAgaWYgdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9DTEFTUzoKICAgICAgICAgICAgcmV0dXJuIENsYXNzKHRhYmxlLCBmaWxlbmFtZSkKICAgICAgICByZXR1cm4gU3ltYm9sVGFibGUodGFibGUsIGZpbGVuYW1lKQoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB0YWJsZSwgZmlsZW5hbWUpOgogICAgICAgIGtleSA9IHRhYmxlLCBmaWxlbmFtZQogICAgICAgIG9iaiA9IHNlbGYuX19tZW1vLmdldChrZXksIE5vbmUpCiAgICAgICAgaWYgb2JqIGlzIE5vbmU6CiAgICAgICAgICAgIG9iaiA9IHNlbGYuX19tZW1vW2tleV0gPSBzZWxmLm5ldyh0YWJsZSwgZmlsZW5hbWUpCiAgICAgICAgcmV0dXJuIG9iagoKX25ld1N5bWJvbFRhYmxlID0gU3ltYm9sVGFibGVGYWN0b3J5KCkKCgpjbGFzcyBTeW1ib2xUYWJsZToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3RhYmxlLCBmaWxlbmFtZSk6CiAgICAgICAgc2VsZi5fdGFibGUgPSByYXdfdGFibGUKICAgICAgICBzZWxmLl9maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgc2VsZi5fc3ltYm9scyA9IHt9CgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX19jbGFzc19fID09IFN5bWJvbFRhYmxlOgogICAgICAgICAgICBraW5kID0gIiIKICAgICAgICBlbHNlOgogICAgICAgICAgICBraW5kID0gIiVzICIgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwoKICAgICAgICBpZiBzZWxmLl90YWJsZS5uYW1lID09ICJ0b3AiOgogICAgICAgICAgICByZXR1cm4gIjx7MH1TeW1ib2xUYWJsZSBmb3IgbW9kdWxlIHsxfT4iLmZvcm1hdChraW5kLCBzZWxmLl9maWxlbmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gIjx7MH1TeW1ib2xUYWJsZSBmb3IgezF9IGluIHsyfT4iLmZvcm1hdChraW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90YWJsZS5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlbmFtZSkKCiAgICBkZWYgZ2V0X3R5cGUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBzeW1ib2wgdGFibGUuCgogICAgICAgIFRoZSB2YWx1ZXMgcmV0dXJuZWQgYXJlICdjbGFzcycsICdtb2R1bGUnIGFuZAogICAgICAgICdmdW5jdGlvbicuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9NT0RVTEU6CiAgICAgICAgICAgIHJldHVybiAibW9kdWxlIgogICAgICAgIGlmIHNlbGYuX3RhYmxlLnR5cGUgPT0gX3N5bXRhYmxlLlRZUEVfRlVOQ1RJT046CiAgICAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iCiAgICAgICAgaWYgc2VsZi5fdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9DTEFTUzoKICAgICAgICAgICAgcmV0dXJuICJjbGFzcyIKICAgICAgICBhc3NlcnQgc2VsZi5fdGFibGUudHlwZSBpbiAoMSwgMiwgMyksIFwKICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgdHlwZTogezB9Ii5mb3JtYXQoc2VsZi5fdGFibGUudHlwZSkKCiAgICBkZWYgZ2V0X2lkKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhbiBpZGVudGlmaWVyIGZvciB0aGUgdGFibGUuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3RhYmxlLmlkCgogICAgZGVmIGdldF9uYW1lKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgdGFibGUncyBuYW1lLgoKICAgICAgICBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSBjbGFzcywgZnVuY3Rpb24KICAgICAgICBvciAndG9wJyBpZiB0aGUgdGFibGUgaXMgZm9yIGEgY2xhc3MsIGZ1bmN0aW9uIG9yCiAgICAgICAgZ2xvYmFsIHJlc3BlY3RpdmVseS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fdGFibGUubmFtZQoKICAgIGRlZiBnZXRfbGluZW5vKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBsaW5lIGluIHRoZQogICAgICAgIGJsb2NrIGZvciB0aGUgdGFibGUuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3RhYmxlLmxpbmVubwoKICAgIGRlZiBpc19vcHRpbWl6ZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuICpUcnVlKiBpZiB0aGUgbG9jYWxzIGluIHRoZSB0YWJsZQogICAgICAgIGFyZSBvcHRpbWl6YWJsZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gYm9vbChzZWxmLl90YWJsZS50eXBlID09IF9zeW10YWJsZS5UWVBFX0ZVTkNUSU9OKQoKICAgIGRlZiBpc19uZXN0ZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuICpUcnVlKiBpZiB0aGUgYmxvY2sgaXMgYSBuZXN0ZWQgY2xhc3MKICAgICAgICBvciBmdW5jdGlvbi4iIiIKICAgICAgICByZXR1cm4gYm9vbChzZWxmLl90YWJsZS5uZXN0ZWQpCgogICAgZGVmIGhhc19jaGlsZHJlbihzZWxmKToKICAgICAgICAiIiJSZXR1cm4gKlRydWUqIGlmIHRoZSBibG9jayBoYXMgbmVzdGVkIG5hbWVzcGFjZXMuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdGFibGUuY2hpbGRyZW4pCgogICAgZGVmIGdldF9pZGVudGlmaWVycyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSB2aWV3IG9iamVjdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBzeW1ib2xzIGluIHRoZSB0YWJsZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fdGFibGUuc3ltYm9scy5rZXlzKCkKCiAgICBkZWYgbG9va3VwKHNlbGYsIG5hbWUpOgogICAgICAgICIiIkxvb2t1cCBhICpuYW1lKiBpbiB0aGUgdGFibGUuCgogICAgICAgIFJldHVybnMgYSAqU3ltYm9sKiBpbnN0YW5jZS4KICAgICAgICAiIiIKICAgICAgICBzeW0gPSBzZWxmLl9zeW1ib2xzLmdldChuYW1lKQogICAgICAgIGlmIHN5bSBpcyBOb25lOgogICAgICAgICAgICBmbGFncyA9IHNlbGYuX3RhYmxlLnN5bWJvbHNbbmFtZV0KICAgICAgICAgICAgbmFtZXNwYWNlcyA9IHNlbGYuX19jaGVja19jaGlsZHJlbihuYW1lKQogICAgICAgICAgICBtb2R1bGVfc2NvcGUgPSAoc2VsZi5fdGFibGUubmFtZSA9PSAidG9wIikKICAgICAgICAgICAgc3ltID0gc2VsZi5fc3ltYm9sc1tuYW1lXSA9IFN5bWJvbChuYW1lLCBmbGFncywgbmFtZXNwYWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfc2NvcGU9bW9kdWxlX3Njb3BlKQogICAgICAgIHJldHVybiBzeW0KCiAgICBkZWYgZ2V0X3N5bWJvbHMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiAqU3ltYm9sKiBpbnN0YW5jZXMgZm9yCiAgICAgICAgbmFtZXMgaW4gdGhlIHRhYmxlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBbc2VsZi5sb29rdXAoaWRlbnQpIGZvciBpZGVudCBpbiBzZWxmLmdldF9pZGVudGlmaWVycygpXQoKICAgIGRlZiBfX2NoZWNrX2NoaWxkcmVuKHNlbGYsIG5hbWUpOgogICAgICAgIHJldHVybiBbX25ld1N5bWJvbFRhYmxlKHN0LCBzZWxmLl9maWxlbmFtZSkKICAgICAgICAgICAgICAgIGZvciBzdCBpbiBzZWxmLl90YWJsZS5jaGlsZHJlbgogICAgICAgICAgICAgICAgaWYgc3QubmFtZSA9PSBuYW1lXQoKICAgIGRlZiBnZXRfY2hpbGRyZW4oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiB0aGUgbmVzdGVkIHN5bWJvbCB0YWJsZXMuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIFtfbmV3U3ltYm9sVGFibGUoc3QsIHNlbGYuX2ZpbGVuYW1lKQogICAgICAgICAgICAgICAgZm9yIHN0IGluIHNlbGYuX3RhYmxlLmNoaWxkcmVuXQoKCmNsYXNzIEZ1bmN0aW9uKFN5bWJvbFRhYmxlKToKCiAgICAjIERlZmF1bHQgdmFsdWVzIGZvciBpbnN0YW5jZSB2YXJpYWJsZXMKICAgIF9fcGFyYW1zID0gTm9uZQogICAgX19sb2NhbHMgPSBOb25lCiAgICBfX2ZyZWVzID0gTm9uZQogICAgX19nbG9iYWxzID0gTm9uZQogICAgX19ub25sb2NhbHMgPSBOb25lCgogICAgZGVmIF9faWRlbnRzX21hdGNoaW5nKHNlbGYsIHRlc3RfZnVuYyk6CiAgICAgICAgcmV0dXJuIHR1cGxlKGlkZW50IGZvciBpZGVudCBpbiBzZWxmLmdldF9pZGVudGlmaWVycygpCiAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3RfZnVuYyhzZWxmLl90YWJsZS5zeW1ib2xzW2lkZW50XSkpCgogICAgZGVmIGdldF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIHBhcmFtZXRlcnMgdG8gdGhlIGZ1bmN0aW9uLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX19wYXJhbXMgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fX3BhcmFtcyA9IHNlbGYuX19pZGVudHNfbWF0Y2hpbmcobGFtYmRhIHg6eCAmIERFRl9QQVJBTSkKICAgICAgICByZXR1cm4gc2VsZi5fX3BhcmFtcwoKICAgIGRlZiBnZXRfbG9jYWxzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIGxvY2FscyBpbiB0aGUgZnVuY3Rpb24uCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fX2xvY2FscyBpcyBOb25lOgogICAgICAgICAgICBsb2NzID0gKExPQ0FMLCBDRUxMKQogICAgICAgICAgICB0ZXN0ID0gbGFtYmRhIHg6ICgoeCA+PiBTQ09QRV9PRkYpICYgU0NPUEVfTUFTSykgaW4gbG9jcwogICAgICAgICAgICBzZWxmLl9fbG9jYWxzID0gc2VsZi5fX2lkZW50c19tYXRjaGluZyh0ZXN0KQogICAgICAgIHJldHVybiBzZWxmLl9fbG9jYWxzCgogICAgZGVmIGdldF9nbG9iYWxzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIGdsb2JhbHMgaW4gdGhlIGZ1bmN0aW9uLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX19nbG9iYWxzIGlzIE5vbmU6CiAgICAgICAgICAgIGdsb2IgPSAoR0xPQkFMX0lNUExJQ0lULCBHTE9CQUxfRVhQTElDSVQpCiAgICAgICAgICAgIHRlc3QgPSBsYW1iZGEgeDooKHggPj4gU0NPUEVfT0ZGKSAmIFNDT1BFX01BU0spIGluIGdsb2IKICAgICAgICAgICAgc2VsZi5fX2dsb2JhbHMgPSBzZWxmLl9faWRlbnRzX21hdGNoaW5nKHRlc3QpCiAgICAgICAgcmV0dXJuIHNlbGYuX19nbG9iYWxzCgogICAgZGVmIGdldF9ub25sb2NhbHMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgdHVwbGUgb2Ygbm9ubG9jYWxzIGluIHRoZSBmdW5jdGlvbi4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9fbm9ubG9jYWxzIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX19ub25sb2NhbHMgPSBzZWxmLl9faWRlbnRzX21hdGNoaW5nKGxhbWJkYSB4OnggJiBERUZfTk9OTE9DQUwpCiAgICAgICAgcmV0dXJuIHNlbGYuX19ub25sb2NhbHMKCiAgICBkZWYgZ2V0X2ZyZWVzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIGZyZWUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlvbi4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9fZnJlZXMgaXMgTm9uZToKICAgICAgICAgICAgaXNfZnJlZSA9IGxhbWJkYSB4OigoeCA+PiBTQ09QRV9PRkYpICYgU0NPUEVfTUFTSykgPT0gRlJFRQogICAgICAgICAgICBzZWxmLl9fZnJlZXMgPSBzZWxmLl9faWRlbnRzX21hdGNoaW5nKGlzX2ZyZWUpCiAgICAgICAgcmV0dXJuIHNlbGYuX19mcmVlcwoKCmNsYXNzIENsYXNzKFN5bWJvbFRhYmxlKToKCiAgICBfX21ldGhvZHMgPSBOb25lCgogICAgZGVmIGdldF9tZXRob2RzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIG1ldGhvZHMgZGVjbGFyZWQgaW4gdGhlIGNsYXNzLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX19tZXRob2RzIGlzIE5vbmU6CiAgICAgICAgICAgIGQgPSB7fQogICAgICAgICAgICBmb3Igc3QgaW4gc2VsZi5fdGFibGUuY2hpbGRyZW46CiAgICAgICAgICAgICAgICBkW3N0Lm5hbWVdID0gMQogICAgICAgICAgICBzZWxmLl9fbWV0aG9kcyA9IHR1cGxlKGQpCiAgICAgICAgcmV0dXJuIHNlbGYuX19tZXRob2RzCgoKY2xhc3MgU3ltYm9sOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBmbGFncywgbmFtZXNwYWNlcz1Ob25lLCAqLCBtb2R1bGVfc2NvcGU9RmFsc2UpOgogICAgICAgIHNlbGYuX19uYW1lID0gbmFtZQogICAgICAgIHNlbGYuX19mbGFncyA9IGZsYWdzCiAgICAgICAgc2VsZi5fX3Njb3BlID0gKGZsYWdzID4+IFNDT1BFX09GRikgJiBTQ09QRV9NQVNLICMgbGlrZSBQeVNUX0dldFNjb3BlKCkKICAgICAgICBzZWxmLl9fbmFtZXNwYWNlcyA9IG5hbWVzcGFjZXMgb3IgKCkKICAgICAgICBzZWxmLl9fbW9kdWxlX3Njb3BlID0gbW9kdWxlX3Njb3BlCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPHN5bWJvbCB7MCFyfT4iLmZvcm1hdChzZWxmLl9fbmFtZSkKCiAgICBkZWYgZ2V0X25hbWUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbmFtZSBvZiBhIHN5bWJvbC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fX25hbWUKCiAgICBkZWYgaXNfcmVmZXJlbmNlZChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gKlRydWUqIGlmIHRoZSBzeW1ib2wgaXMgdXNlZCBpbgogICAgICAgIGl0cyBibG9jay4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fZmxhZ3MgJiBfc3ltdGFibGUuVVNFKQoKICAgIGRlZiBpc19wYXJhbWV0ZXIoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuICpUcnVlKiBpZiB0aGUgc3ltYm9sIGlzIGEgcGFyYW1ldGVyLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBib29sKHNlbGYuX19mbGFncyAmIERFRl9QQVJBTSkKCiAgICBkZWYgaXNfZ2xvYmFsKHNlbGYpOgogICAgICAgICIiIlJldHVybiAqVHJ1ZSogaWYgdGhlIHN5bWJvbCBpcyBnbG9iYWwuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX3Njb3BlIGluIChHTE9CQUxfSU1QTElDSVQsIEdMT0JBTF9FWFBMSUNJVCkKICAgICAgICAgICAgICAgICAgICBvciAoc2VsZi5fX21vZHVsZV9zY29wZSBhbmQgc2VsZi5fX2ZsYWdzICYgREVGX0JPVU5EKSkKCiAgICBkZWYgaXNfbm9ubG9jYWwoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuICpUcnVlKiBpZiB0aGUgc3ltYm9sIGlzIG5vbmxvY2FsLiIiIgogICAgICAgIHJldHVybiBib29sKHNlbGYuX19mbGFncyAmIERFRl9OT05MT0NBTCkKCiAgICBkZWYgaXNfZGVjbGFyZWRfZ2xvYmFsKHNlbGYpOgogICAgICAgICIiIlJldHVybiAqVHJ1ZSogaWYgdGhlIHN5bWJvbCBpcyBkZWNsYXJlZCBnbG9iYWwKICAgICAgICB3aXRoIGEgZ2xvYmFsIHN0YXRlbWVudC4iIiIKICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fc2NvcGUgPT0gR0xPQkFMX0VYUExJQ0lUKQoKICAgIGRlZiBpc19sb2NhbChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gKlRydWUqIGlmIHRoZSBzeW1ib2wgaXMgbG9jYWwuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX3Njb3BlIGluIChMT0NBTCwgQ0VMTCkKICAgICAgICAgICAgICAgICAgICBvciAoc2VsZi5fX21vZHVsZV9zY29wZSBhbmQgc2VsZi5fX2ZsYWdzICYgREVGX0JPVU5EKSkKCiAgICBkZWYgaXNfYW5ub3RhdGVkKHNlbGYpOgogICAgICAgICIiIlJldHVybiAqVHJ1ZSogaWYgdGhlIHN5bWJvbCBpcyBhbm5vdGF0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX2ZsYWdzICYgREVGX0FOTk9UKQoKICAgIGRlZiBpc19mcmVlKHNlbGYpOgogICAgICAgICIiIlJldHVybiAqVHJ1ZSogaWYgYSByZWZlcmVuY2VkIHN5bWJvbCBpcwogICAgICAgIG5vdCBhc3NpZ25lZCB0by4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fc2NvcGUgPT0gRlJFRSkKCiAgICBkZWYgaXNfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuICpUcnVlKiBpZiB0aGUgc3ltYm9sIGlzIGNyZWF0ZWQgZnJvbQogICAgICAgIGFuIGltcG9ydCBzdGF0ZW1lbnQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX2ZsYWdzICYgREVGX0lNUE9SVCkKCiAgICBkZWYgaXNfYXNzaWduZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuICpUcnVlKiBpZiBhIHN5bWJvbCBpcyBhc3NpZ25lZCB0by4iIiIKICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fZmxhZ3MgJiBERUZfTE9DQUwpCgogICAgZGVmIGlzX25hbWVzcGFjZShzZWxmKToKICAgICAgICAiIiJSZXR1cm5zICpUcnVlKiBpZiBuYW1lIGJpbmRpbmcgaW50cm9kdWNlcyBuZXcgbmFtZXNwYWNlLgoKICAgICAgICBJZiB0aGUgbmFtZSBpcyB1c2VkIGFzIHRoZSB0YXJnZXQgb2YgYSBmdW5jdGlvbiBvciBjbGFzcwogICAgICAgIHN0YXRlbWVudCwgdGhpcyB3aWxsIGJlIHRydWUuCgogICAgICAgIE5vdGUgdGhhdCBhIHNpbmdsZSBuYW1lIGNhbiBiZSBib3VuZCB0byBtdWx0aXBsZSBvYmplY3RzLiAgSWYKICAgICAgICBpc19uYW1lc3BhY2UoKSBpcyB0cnVlLCB0aGUgbmFtZSBtYXkgYWxzbyBiZSBib3VuZCB0byBvdGhlcgogICAgICAgIG9iamVjdHMsIGxpa2UgYW4gaW50IG9yIGxpc3QsIHRoYXQgZG9lcyBub3QgaW50cm9kdWNlIGEgbmV3CiAgICAgICAgbmFtZXNwYWNlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBib29sKHNlbGYuX19uYW1lc3BhY2VzKQoKICAgIGRlZiBnZXRfbmFtZXNwYWNlcyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIG5hbWVzcGFjZXMgYm91bmQgdG8gdGhpcyBuYW1lIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX19uYW1lc3BhY2VzCgogICAgZGVmIGdldF9uYW1lc3BhY2Uoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBzaW5nbGUgbmFtZXNwYWNlIGJvdW5kIHRvIHRoaXMgbmFtZS4KCiAgICAgICAgUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIG5hbWUgaXMgYm91bmQgdG8gbXVsdGlwbGUgbmFtZXNwYWNlcwogICAgICAgIG9yIG5vIG5hbWVzcGFjZS4KICAgICAgICAiIiIKICAgICAgICBpZiBsZW4oc2VsZi5fX25hbWVzcGFjZXMpID09IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5hbWUgaXMgbm90IGJvdW5kIHRvIGFueSBuYW1lc3BhY2VzIikKICAgICAgICBlbGlmIGxlbihzZWxmLl9fbmFtZXNwYWNlcykgPiAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuYW1lIGlzIGJvdW5kIHRvIG11bHRpcGxlIG5hbWVzcGFjZXMiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fbmFtZXNwYWNlc1swXQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIGltcG9ydCBvcywgc3lzCiAgICB3aXRoIG9wZW4oc3lzLmFyZ3ZbMF0pIGFzIGY6CiAgICAgICAgc3JjID0gZi5yZWFkKCkKICAgIG1vZCA9IHN5bXRhYmxlKHNyYywgb3MucGF0aC5zcGxpdChzeXMuYXJndlswXSlbMV0sICJleGVjIikKICAgIGZvciBpZGVudCBpbiBtb2QuZ2V0X2lkZW50aWZpZXJzKCk6CiAgICAgICAgaW5mbyA9IG1vZC5sb29rdXAoaWRlbnQpCiAgICAgICAgcHJpbnQoaW5mbywgaW5mby5pc19sb2NhbCgpLCBpbmZvLmlzX25hbWVzcGFjZSgpKQpQSwMEFAAAAAAAAiCjVoVlaL1rdgAAa3YAAAwAAABzeXNjb25maWcucHkiIiJBY2Nlc3MgdG8gUHl0aG9uJ3MgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4iIiIKCmltcG9ydCBvcwppbXBvcnQgc3lzCmZyb20gb3MucGF0aCBpbXBvcnQgcGFyZGlyLCByZWFscGF0aAoKX19hbGxfXyA9IFsKICAgICdnZXRfY29uZmlnX2hfZmlsZW5hbWUnLAogICAgJ2dldF9jb25maWdfdmFyJywKICAgICdnZXRfY29uZmlnX3ZhcnMnLAogICAgJ2dldF9tYWtlZmlsZV9maWxlbmFtZScsCiAgICAnZ2V0X3BhdGgnLAogICAgJ2dldF9wYXRoX25hbWVzJywKICAgICdnZXRfcGF0aHMnLAogICAgJ2dldF9wbGF0Zm9ybScsCiAgICAnZ2V0X3B5dGhvbl92ZXJzaW9uJywKICAgICdnZXRfc2NoZW1lX25hbWVzJywKICAgICdwYXJzZV9jb25maWdfaCcsCl0KCiMgS2V5cyBmb3IgZ2V0X2NvbmZpZ192YXIoKSB0aGF0IGFyZSBuZXZlciBjb252ZXJ0ZWQgdG8gUHl0aG9uIGludGVnZXJzLgpfQUxXQVlTX1NUUiA9IHsKICAgICdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnLAp9CgpfSU5TVEFMTF9TQ0hFTUVTID0gewogICAgJ3Bvc2l4X3ByZWZpeCc6IHsKICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0ve3BsYXRsaWJkaXJ9L3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS97cGxhdGxpYmRpcn0vcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9L3twbGF0bGliZGlyfS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgJ2luY2x1ZGUnOgogICAgICAgICAgICAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAogICAgICAgICdwbGF0aW5jbHVkZSc6CiAgICAgICAgICAgICd7aW5zdGFsbGVkX3BsYXRiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAogICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9iaW4nLAogICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgfSwKICAgICdwb3NpeF9ob21lJzogewogICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAncGxhdHN0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCiAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAogICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCiAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L2JpbicsCiAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICB9LAogICAgJ250JzogewogICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9MaWInLAogICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9MaWInLAogICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAogICAgICAgICdwbGF0aW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAogICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9TY3JpcHRzJywKICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgIH0sCiAgICAjIERvd25zdHJlYW0gZGlzdHJpYnV0b3JzIGNhbiBvdmVyd3JpdGUgdGhlIGRlZmF1bHQgaW5zdGFsbCBzY2hlbWUuCiAgICAjIFRoaXMgaXMgZG9uZSB0byBzdXBwb3J0IGRvd25zdHJlYW0gbW9kaWZpY2F0aW9ucyB3aGVyZSBkaXN0cmlidXRvcnMgY2hhbmdlCiAgICAjIHRoZSBpbnN0YWxsYXRpb24gbGF5b3V0IChlZy4gZGlmZmVyZW50IHNpdGUtcGFja2FnZXMgZGlyZWN0b3J5KS4KICAgICMgU28sIGRpc3RyaWJ1dG9ycyB3aWxsIGNoYW5nZSB0aGUgZGVmYXVsdCBzY2hlbWUgdG8gb25lIHRoYXQgY29ycmVjdGx5CiAgICAjIHJlcHJlc2VudHMgdGhlaXIgbGF5b3V0LgogICAgIyBUaGlzIHByZXNlbnRzIGFuIGlzc3VlIGZvciBwcm9qZWN0cy9wZW9wbGUgdGhhdCBuZWVkIHRvIGJvb3RzdHJhcCB2aXJ0dWFsCiAgICAjIGVudmlyb25tZW50cywgbGlrZSB2aXJ0dWFsZW52LiBBcyBkaXN0cmlidXRvcnMgbWlnaHQgbm93IGJlIGN1c3RvbWl6aW5nCiAgICAjIHRoZSBkZWZhdWx0IGluc3RhbGwgc2NoZW1lLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgaW5mb3JtYXRpb24KICAgICMgcmV0dXJuZWQgYnkgc3lzY29uZmlnLmdldF9kZWZhdWx0X3NjaGVtZS9nZXRfcGF0aHMgaXMgY29ycmVjdCBmb3IKICAgICMgYSB2aXJ0dWFsIGVudmlyb25tZW50LCB0aGUgb25seSBndWFyYW50ZWUgd2UgaGF2ZSBpcyB0aGF0IGl0IGlzIGNvcnJlY3QKICAgICMgZm9yIHRoZSAqY3VycmVudCogZW52aXJvbm1lbnQuIFdoZW4gYm9vdHN0cmFwcGluZyBhIHZpcnR1YWwgZW52aXJvbm1lbnQsCiAgICAjIHdlIG5lZWQgdG8ga25vdyBpdHMgbGF5b3V0LCBzbyB0aGF0IHdlIGNhbiBwbGFjZSB0aGUgZmlsZXMgaW4gdGhlCiAgICAjIGNvcnJlY3QgbG9jYXRpb25zLgogICAgIyBUaGUgIipfdmVudiIgaW5zdGFsbCBzY2hlbWUgaXMgYSBzY2hlbWUgdG8gYm9vdHN0cmFwIHZpcnR1YWwgZW52aXJvbm1lbnRzLAogICAgIyBlc3NlbnRpYWxseSBpZGVudGljYWwgdG8gdGhlIGRlZmF1bHQgcG9zaXhfcHJlZml4L250IHNjaGVtZXMuCiAgICAjIERvd25zdHJlYW0gZGlzdHJpYnV0b3JzIHdobyBwYXRjaCBwb3NpeF9wcmVmaXgvbnQgc2NoZW1lIGFyZSBlbmNvdXJhZ2VkIHRvCiAgICAjIGxlYXZlIHRoZSBmb2xsb3dpbmcgc2NoZW1lcyB1bmNoYW5nZWQKICAgICdwb3NpeF92ZW52JzogewogICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS97cGxhdGxpYmRpcn0vcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAncGxhdHN0ZGxpYic6ICd7cGxhdGJhc2V9L3twbGF0bGliZGlyfS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0ve3BsYXRsaWJkaXJ9L3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAnaW5jbHVkZSc6CiAgICAgICAgICAgICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCiAgICAgICAgJ3BsYXRpbmNsdWRlJzoKICAgICAgICAgICAgJ3tpbnN0YWxsZWRfcGxhdGJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCiAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L2JpbicsCiAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICB9LAogICAgJ250X3ZlbnYnOiB7CiAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L0xpYicsCiAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9L0xpYicsCiAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAogICAgICAgICdpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCiAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCiAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L1NjcmlwdHMnLAogICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgfSwKICAgIH0KCiMgRm9yIHRoZSBPUy1uYXRpdmUgdmVudiBzY2hlbWUsIHdlIGVzc2VudGlhbGx5IHByb3ZpZGUgYW4gYWxpYXM6CmlmIG9zLm5hbWUgPT0gJ250JzoKICAgIF9JTlNUQUxMX1NDSEVNRVNbJ3ZlbnYnXSA9IF9JTlNUQUxMX1NDSEVNRVNbJ250X3ZlbnYnXQplbHNlOgogICAgX0lOU1RBTExfU0NIRU1FU1sndmVudiddID0gX0lOU1RBTExfU0NIRU1FU1sncG9zaXhfdmVudiddCgoKIyBOT1RFOiBzaXRlLnB5IGhhcyBjb3B5IG9mIHRoaXMgZnVuY3Rpb24uCiMgU3luYyBpdCB3aGVuIG1vZGlmeSB0aGlzIGZ1bmN0aW9uLgpkZWYgX2dldHVzZXJiYXNlKCk6CiAgICBlbnZfYmFzZSA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05VU0VSQkFTRSIsIE5vbmUpCiAgICBpZiBlbnZfYmFzZToKICAgICAgICByZXR1cm4gZW52X2Jhc2UKCiAgICAjIEVtc2NyaXB0ZW4sIFZ4V29ya3MsIGFuZCBXQVNJIGhhdmUgbm8gaG9tZSBkaXJlY3RvcmllcwogICAgaWYgc3lzLnBsYXRmb3JtIGluIHsiZW1zY3JpcHRlbiIsICJ2eHdvcmtzIiwgIndhc2kifToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBqb2ludXNlcigqYXJncyk6CiAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhwYW5kdXNlcihvcy5wYXRoLmpvaW4oKmFyZ3MpKQoKICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICBiYXNlID0gb3MuZW52aXJvbi5nZXQoIkFQUERBVEEiKSBvciAifiIKICAgICAgICByZXR1cm4gam9pbnVzZXIoYmFzZSwgIlB5dGhvbiIpCgogICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iIGFuZCBzeXMuX2ZyYW1ld29yazoKICAgICAgICByZXR1cm4gam9pbnVzZXIoIn4iLCAiTGlicmFyeSIsIHN5cy5fZnJhbWV3b3JrLAogICAgICAgICAgICAgICAgICAgICAgICBmIntzeXMudmVyc2lvbl9pbmZvWzBdfS57c3lzLnZlcnNpb25faW5mb1sxXX0iKQoKICAgIHJldHVybiBqb2ludXNlcigifiIsICIubG9jYWwiKQoKX0hBU19VU0VSX0JBU0UgPSAoX2dldHVzZXJiYXNlKCkgaXMgbm90IE5vbmUpCgppZiBfSEFTX1VTRVJfQkFTRToKICAgIF9JTlNUQUxMX1NDSEVNRVMgfD0gewogICAgICAgICMgTk9URTogV2hlbiBtb2RpZnlpbmcgInB1cmVsaWIiIHNjaGVtZSwgdXBkYXRlIHNpdGUuX2dldF9wYXRoKCkgdG9vLgogICAgICAgICdudF91c2VyJzogewogICAgICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3RfcGxhdH0nLAogICAgICAgICAgICAncGxhdHN0ZGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90X3BsYXR9JywKICAgICAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdF9wbGF0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdF9wbGF0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdF9wbGF0fS9JbmNsdWRlJywKICAgICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdF9wbGF0fS9TY3JpcHRzJywKICAgICAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgICAgIH0sCiAgICAgICAgJ3Bvc2l4X3VzZXInOiB7CiAgICAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS97cGxhdGxpYmRpcn0vcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS97cGxhdGxpYmRpcn0vcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCiAgICAgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICAgICB9LAogICAgICAgICdvc3hfZnJhbWV3b3JrX3VzZXInOiB7CiAgICAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9uL3NpdGUtcGFja2FnZXMnLAogICAgICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob24vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCiAgICAgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICAgICB9LAogICAgfQoKX1NDSEVNRV9LRVlTID0gKCdzdGRsaWInLCAncGxhdHN0ZGxpYicsICdwdXJlbGliJywgJ3BsYXRsaWInLCAnaW5jbHVkZScsCiAgICAgICAgICAgICAgICAnc2NyaXB0cycsICdkYXRhJykKCl9QWV9WRVJTSU9OID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXQpfUFlfVkVSU0lPTl9TSE9SVCA9IGYne3N5cy52ZXJzaW9uX2luZm9bMF19LntzeXMudmVyc2lvbl9pbmZvWzFdfScKX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UID0gZid7c3lzLnZlcnNpb25faW5mb1swXX17c3lzLnZlcnNpb25faW5mb1sxXX0nCl9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCl9CQVNFX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KQpfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKX0JBU0VfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX2V4ZWNfcHJlZml4KQpfQ09ORklHX1ZBUlMgPSBOb25lCl9VU0VSX0JBU0UgPSBOb25lCgojIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCl92YXJpYWJsZV9yeCA9IHIiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIKX2ZpbmR2YXIxX3J4ID0gciJcJFwoKFtBLVphLXpdW0EtWmEtejAtOV9dKilcKSIKX2ZpbmR2YXIyX3J4ID0gciJcJHsoW0EtWmEtel1bQS1aYS16MC05X10qKX0iCgoKZGVmIF9zYWZlX3JlYWxwYXRoKHBhdGgpOgogICAgdHJ5OgogICAgICAgIHJldHVybiByZWFscGF0aChwYXRoKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcmV0dXJuIHBhdGgKCmlmIHN5cy5leGVjdXRhYmxlOgogICAgX1BST0pFQ1RfQkFTRSA9IG9zLnBhdGguZGlybmFtZShfc2FmZV9yZWFscGF0aChzeXMuZXhlY3V0YWJsZSkpCmVsc2U6CiAgICAjIHN5cy5leGVjdXRhYmxlIGNhbiBiZSBlbXB0eSBpZiBhcmd2WzBdIGhhcyBiZWVuIGNoYW5nZWQgYW5kIFB5dGhvbiBpcwogICAgIyB1bmFibGUgdG8gcmV0cmlldmUgdGhlIHJlYWwgcHJvZ3JhbSBuYW1lCiAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MuZ2V0Y3dkKCkpCgojIEluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgYHN5cy5faG9tZWAgZ2l2ZXMgdXMgdGhlIHRhcmdldCBkaXJlY3RvcnkKIyBgX1BST0pFQ1RfQkFTRWAgZm9yIHRoZSBleGVjdXRhYmxlIHRoYXQgY3JlYXRlZCBpdCB3aGVuIHRoZSB2aXJ0dWFsCiMgcHl0aG9uIGlzIGFuIGFjdHVhbCBleGVjdXRhYmxlICgndmVudiAtLWNvcGllcycgb3IgV2luZG93cykuCl9zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQppZiBfc3lzX2hvbWU6CiAgICBfUFJPSkVDVF9CQVNFID0gX3N5c19ob21lCgppZiBvcy5uYW1lID09ICdudCc6CiAgICAjIEluIGEgc291cmNlIGJ1aWxkLCB0aGUgZXhlY3V0YWJsZSBpcyBpbiBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgcm9vdAogICAgIyB0aGF0IHdlIHdhbnQgKDxyb290PlxQQ2J1aWxkXDxwbGF0bmFtZT4pLgogICAgIyBgX0JBU0VfUFJFRklYYCBpcyB1c2VkIGFzIHRoZSBiYXNlIGluc3RhbGxhdGlvbiBpcyB3aGVyZSB0aGUgc291cmNlCiAgICAjIHdpbGwgYmUuICBUaGUgcmVhbHBhdGggaXMgbmVlZGVkIHRvIHByZXZlbnQgbW91bnQgcG9pbnQgY29uZnVzaW9uCiAgICAjIHRoYXQgY2FuIG9jY3VyIHdpdGgganVzdCBzdHJpbmcgY29tcGFyaXNvbnMuCiAgICBpZiBfc2FmZV9yZWFscGF0aChfUFJPSkVDVF9CQVNFKS5zdGFydHN3aXRoKAogICAgICAgICAgICBfc2FmZV9yZWFscGF0aChmJ3tfQkFTRV9QUkVGSVh9XFxQQ2J1aWxkJykpOgogICAgICAgIF9QUk9KRUNUX0JBU0UgPSBfQkFTRV9QUkVGSVgKCiMgc2V0IGZvciBjcm9zcyBidWlsZHMKaWYgIl9QWVRIT05fUFJPSkVDVF9CQVNFIiBpbiBvcy5lbnZpcm9uOgogICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLmVudmlyb25bIl9QWVRIT05fUFJPSkVDVF9CQVNFIl0pCgpkZWYgaXNfcHl0aG9uX2J1aWxkKGNoZWNrX2hvbWU9Tm9uZSk6CiAgICBpZiBjaGVja19ob21lIGlzIG5vdCBOb25lOgogICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgIHdhcm5pbmdzLndhcm4oImNoZWNrX2hvbWUgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZC4iLAogICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICBmb3IgZm4gaW4gKCJTZXR1cCIsICJTZXR1cC5sb2NhbCIpOgogICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCAiTW9kdWxlcyIsIGZuKSk6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCl9QWVRIT05fQlVJTEQgPSBpc19weXRob25fYnVpbGQoKQoKaWYgX1BZVEhPTl9CVUlMRDoKICAgIGZvciBzY2hlbWUgaW4gKCdwb3NpeF9wcmVmaXgnLCAncG9zaXhfaG9tZScpOgogICAgICAgICMgT24gUE9TSVgteSBwbGF0Zm9ybXMsIFB5dGhvbiB3aWxsOgogICAgICAgICMgLSBCdWlsZCBmcm9tIC5oIGZpbGVzIGluICdoZWFkZXJzJyAod2hpY2ggaXMgb25seSBhZGRlZCB0byB0aGUKICAgICAgICAjICAgc2NoZW1lIHdoZW4gYnVpbGRpbmcgQ1B5dGhvbikKICAgICAgICAjIC0gSW5zdGFsbCAuaCBmaWxlcyB0byAnaW5jbHVkZScKICAgICAgICBzY2hlbWUgPSBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV0KICAgICAgICBzY2hlbWVbJ2hlYWRlcnMnXSA9IHNjaGVtZVsnaW5jbHVkZSddCiAgICAgICAgc2NoZW1lWydpbmNsdWRlJ10gPSAne3NyY2Rpcn0vSW5jbHVkZScKICAgICAgICBzY2hlbWVbJ3BsYXRpbmNsdWRlJ10gPSAne3Byb2plY3RiYXNlfS8uJwogICAgZGVsIHNjaGVtZQoKCmRlZiBfc3Vic3RfdmFycyhzLCBsb2NhbF92YXJzKToKICAgIHRyeToKICAgICAgICByZXR1cm4gcy5mb3JtYXQoKipsb2NhbF92YXJzKQogICAgZXhjZXB0IEtleUVycm9yIGFzIHZhcjoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzLmZvcm1hdCgqKm9zLmVudmlyb24pCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihmJ3t2YXJ9JykgZnJvbSBOb25lCgpkZWYgX2V4dGVuZF9kaWN0KHRhcmdldF9kaWN0LCBvdGhlcl9kaWN0KToKICAgIHRhcmdldF9rZXlzID0gdGFyZ2V0X2RpY3Qua2V5cygpCiAgICBmb3Iga2V5LCB2YWx1ZSBpbiBvdGhlcl9kaWN0Lml0ZW1zKCk6CiAgICAgICAgaWYga2V5IGluIHRhcmdldF9rZXlzOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRhcmdldF9kaWN0W2tleV0gPSB2YWx1ZQoKCmRlZiBfZXhwYW5kX3ZhcnMoc2NoZW1lLCB2YXJzKToKICAgIHJlcyA9IHt9CiAgICBpZiB2YXJzIGlzIE5vbmU6CiAgICAgICAgdmFycyA9IHt9CiAgICBfZXh0ZW5kX2RpY3QodmFycywgZ2V0X2NvbmZpZ192YXJzKCkpCiAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgIyBPbiBXaW5kb3dzIHdlIHdhbnQgdG8gc3Vic3RpdHV0ZSAnbGliJyBmb3Igc2NoZW1lcyByYXRoZXIKICAgICAgICAjIHRoYW4gdGhlIG5hdGl2ZSB2YWx1ZSAod2l0aG91dCBtb2RpZnlpbmcgdmFycywgaW4gY2FzZSBpdAogICAgICAgICMgd2FzIHBhc3NlZCBpbikKICAgICAgICB2YXJzID0gdmFycyB8IHsncGxhdGxpYmRpcic6ICdsaWInfQoKICAgIGZvciBrZXksIHZhbHVlIGluIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXS5pdGVtcygpOgogICAgICAgIGlmIG9zLm5hbWUgaW4gKCdwb3NpeCcsICdudCcpOgogICAgICAgICAgICB2YWx1ZSA9IG9zLnBhdGguZXhwYW5kdXNlcih2YWx1ZSkKICAgICAgICByZXNba2V5XSA9IG9zLnBhdGgubm9ybXBhdGgoX3N1YnN0X3ZhcnModmFsdWUsIHZhcnMpKQogICAgcmV0dXJuIHJlcwoKCmRlZiBfZ2V0X3ByZWZlcnJlZF9zY2hlbWVzKCk6CiAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgJ3ByZWZpeCc6ICdudCcsCiAgICAgICAgICAgICdob21lJzogJ3Bvc2l4X2hvbWUnLAogICAgICAgICAgICAndXNlcic6ICdudF91c2VyJywKICAgICAgICB9CiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIHN5cy5fZnJhbWV3b3JrOgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICdwcmVmaXgnOiAncG9zaXhfcHJlZml4JywKICAgICAgICAgICAgJ2hvbWUnOiAncG9zaXhfaG9tZScsCiAgICAgICAgICAgICd1c2VyJzogJ29zeF9mcmFtZXdvcmtfdXNlcicsCiAgICAgICAgfQogICAgcmV0dXJuIHsKICAgICAgICAncHJlZml4JzogJ3Bvc2l4X3ByZWZpeCcsCiAgICAgICAgJ2hvbWUnOiAncG9zaXhfaG9tZScsCiAgICAgICAgJ3VzZXInOiAncG9zaXhfdXNlcicsCiAgICB9CgoKZGVmIGdldF9wcmVmZXJyZWRfc2NoZW1lKGtleSk6CiAgICBpZiBrZXkgPT0gJ3ByZWZpeCcgYW5kIHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4OgogICAgICAgIHJldHVybiAndmVudicKICAgIHNjaGVtZSA9IF9nZXRfcHJlZmVycmVkX3NjaGVtZXMoKVtrZXldCiAgICBpZiBzY2hlbWUgbm90IGluIF9JTlNUQUxMX1NDSEVNRVM6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJ7a2V5IXJ9IHJldHVybmVkIHtzY2hlbWUhcn0sIHdoaWNoIGlzIG5vdCBhIHZhbGlkIHNjaGVtZSAiCiAgICAgICAgICAgIGYib24gdGhpcyBwbGF0Zm9ybSIKICAgICAgICApCiAgICByZXR1cm4gc2NoZW1lCgoKZGVmIGdldF9kZWZhdWx0X3NjaGVtZSgpOgogICAgcmV0dXJuIGdldF9wcmVmZXJyZWRfc2NoZW1lKCdwcmVmaXgnKQoKCmRlZiBfcGFyc2VfbWFrZWZpbGUoZmlsZW5hbWUsIHZhcnM9Tm9uZSwga2VlcF91bnJlc29sdmVkPVRydWUpOgogICAgIiIiUGFyc2UgYSBNYWtlZmlsZS1zdHlsZSBmaWxlLgoKICAgIEEgZGljdGlvbmFyeSBjb250YWluaW5nIG5hbWUvdmFsdWUgcGFpcnMgaXMgcmV0dXJuZWQuICBJZiBhbgogICAgb3B0aW9uYWwgZGljdGlvbmFyeSBpcyBwYXNzZWQgaW4gYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgaXQgaXMKICAgIHVzZWQgaW5zdGVhZCBvZiBhIG5ldyBkaWN0aW9uYXJ5LgogICAgIiIiCiAgICBpbXBvcnQgcmUKCiAgICBpZiB2YXJzIGlzIE5vbmU6CiAgICAgICAgdmFycyA9IHt9CiAgICBkb25lID0ge30KICAgIG5vdGRvbmUgPSB7fQoKICAgIHdpdGggb3BlbihmaWxlbmFtZSwgZW5jb2Rpbmc9c3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpLAogICAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZjoKICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKCiAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKSBvciBsaW5lLnN0cmlwKCkgPT0gJyc6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgbSA9IHJlLm1hdGNoKF92YXJpYWJsZV9yeCwgbGluZSkKICAgICAgICBpZiBtOgogICAgICAgICAgICBuLCB2ID0gbS5ncm91cCgxLCAyKQogICAgICAgICAgICB2ID0gdi5zdHJpcCgpCiAgICAgICAgICAgICMgYCQkJyBpcyBhIGxpdGVyYWwgYCQnIGluIG1ha2UKICAgICAgICAgICAgdG1wdiA9IHYucmVwbGFjZSgnJCQnLCAnJykKCiAgICAgICAgICAgIGlmICIkIiBpbiB0bXB2OgogICAgICAgICAgICAgICAgbm90ZG9uZVtuXSA9IHYKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpZiBuIGluIF9BTFdBWVNfU1RSOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCgogICAgICAgICAgICAgICAgICAgIHYgPSBpbnQodikKICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxpdGVyYWwgYCQnCiAgICAgICAgICAgICAgICAgICAgZG9uZVtuXSA9IHYucmVwbGFjZSgnJCQnLCAnJCcpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRvbmVbbl0gPSB2CgogICAgIyBkbyB2YXJpYWJsZSBpbnRlcnBvbGF0aW9uIGhlcmUKICAgIHZhcmlhYmxlcyA9IGxpc3Qobm90ZG9uZS5rZXlzKCkpCgogICAgIyBWYXJpYWJsZXMgd2l0aCBhICdQWV8nIHByZWZpeCBpbiB0aGUgbWFrZWZpbGUuIFRoZXNlIG5lZWQgdG8KICAgICMgYmUgbWFkZSBhdmFpbGFibGUgd2l0aG91dCB0aGF0IHByZWZpeCB0aHJvdWdoIHN5c2NvbmZpZy4KICAgICMgU3BlY2lhbCBjYXJlIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhhdCB2YXJpYWJsZSBleHBhbnNpb24gd29ya3MsIGV2ZW4KICAgICMgaWYgdGhlIGV4cGFuc2lvbiB1c2VzIHRoZSBuYW1lIHdpdGhvdXQgYSBwcmVmaXguCiAgICByZW5hbWVkX3ZhcmlhYmxlcyA9ICgnQ0ZMQUdTJywgJ0xERkxBR1MnLCAnQ1BQRkxBR1MnKQoKICAgIHdoaWxlIGxlbih2YXJpYWJsZXMpID4gMDoKICAgICAgICBmb3IgbmFtZSBpbiB0dXBsZSh2YXJpYWJsZXMpOgogICAgICAgICAgICB2YWx1ZSA9IG5vdGRvbmVbbmFtZV0KICAgICAgICAgICAgbTEgPSByZS5zZWFyY2goX2ZpbmR2YXIxX3J4LCB2YWx1ZSkKICAgICAgICAgICAgbTIgPSByZS5zZWFyY2goX2ZpbmR2YXIyX3J4LCB2YWx1ZSkKICAgICAgICAgICAgaWYgbTEgYW5kIG0yOgogICAgICAgICAgICAgICAgbSA9IG0xIGlmIG0xLnN0YXJ0KCkgPCBtMi5zdGFydCgpIGVsc2UgbTIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG0gPSBtMSBpZiBtMSBlbHNlIG0yCiAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBuID0gbS5ncm91cCgxKQogICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCiAgICAgICAgICAgICAgICBpZiBuIGluIGRvbmU6CiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHN0cihkb25lW25dKQogICAgICAgICAgICAgICAgZWxpZiBuIGluIG5vdGRvbmU6CiAgICAgICAgICAgICAgICAgICAgIyBnZXQgaXQgb24gYSBzdWJzZXF1ZW50IHJvdW5kCiAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBGYWxzZQogICAgICAgICAgICAgICAgZWxpZiBuIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICAgICAgICAgIyBkbyBpdCBsaWtlIG1ha2U6IGZhbGwgYmFjayB0byBlbnZpcm9ubWVudAogICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBvcy5lbnZpcm9uW25dCgogICAgICAgICAgICAgICAgZWxpZiBuIGluIHJlbmFtZWRfdmFyaWFibGVzOgogICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLnN0YXJ0c3dpdGgoJ1BZXycpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICBuYW1lWzM6XSBpbiByZW5hbWVkX3ZhcmlhYmxlcyk6CiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSAiIgoKICAgICAgICAgICAgICAgICAgICBlbGlmICdQWV8nICsgbiBpbiBub3Rkb25lOgogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCgogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBzdHIoZG9uZVsnUFlfJyArIG5dKQoKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZG9uZVtuXSA9IGl0ZW0gPSAiIgoKICAgICAgICAgICAgICAgIGlmIGZvdW5kOgogICAgICAgICAgICAgICAgICAgIGFmdGVyID0gdmFsdWVbbS5lbmQoKTpdCiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVs6bS5zdGFydCgpXSArIGl0ZW0gKyBhZnRlcgogICAgICAgICAgICAgICAgICAgIGlmICIkIiBpbiBhZnRlcjoKICAgICAgICAgICAgICAgICAgICAgICAgbm90ZG9uZVtuYW1lXSA9IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBfQUxXQVlTX1NUUjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludCh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lW25hbWVdID0gdmFsdWUuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZVtuYW1lXSA9IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy5yZW1vdmUobmFtZSkKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnUFlfJykgXAogICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmFtZVszOl0gaW4gcmVuYW1lZF92YXJpYWJsZXM6CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbMzpdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBkb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVbbmFtZV0gPSB2YWx1ZQoKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgQWRkcyB1bnJlc29sdmVkIHZhcmlhYmxlcyB0byB0aGUgZG9uZSBkaWN0LgogICAgICAgICAgICAgICAgIyBUaGlzIGlzIGRpc2FibGVkIHdoZW4gY2FsbGVkIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZwogICAgICAgICAgICAgICAgaWYga2VlcF91bnJlc29sdmVkOgogICAgICAgICAgICAgICAgICAgIGRvbmVbbmFtZV0gPSB2YWx1ZQogICAgICAgICAgICAgICAgIyBib2d1cyB2YXJpYWJsZSByZWZlcmVuY2UgKGUuZy4gInByZWZpeD0kL29wdC9weXRob24iKTsKICAgICAgICAgICAgICAgICMganVzdCBkcm9wIGl0IHNpbmNlIHdlIGNhbid0IGRlYWwKICAgICAgICAgICAgICAgIHZhcmlhYmxlcy5yZW1vdmUobmFtZSkKCiAgICAjIHN0cmlwIHNwdXJpb3VzIHNwYWNlcwogICAgZm9yIGssIHYgaW4gZG9uZS5pdGVtcygpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uodiwgc3RyKToKICAgICAgICAgICAgZG9uZVtrXSA9IHYuc3RyaXAoKQoKICAgICMgc2F2ZSB0aGUgcmVzdWx0cyBpbiB0aGUgZ2xvYmFsIGRpY3Rpb25hcnkKICAgIHZhcnMudXBkYXRlKGRvbmUpCiAgICByZXR1cm4gdmFycwoKCmRlZiBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKToKICAgICIiIlJldHVybiB0aGUgcGF0aCBvZiB0aGUgTWFrZWZpbGUuIiIiCiAgICBpZiBfUFlUSE9OX0JVSUxEOgogICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgIk1ha2VmaWxlIikKICAgIGlmIGhhc2F0dHIoc3lzLCAnYWJpZmxhZ3MnKToKICAgICAgICBjb25maWdfZGlyX25hbWUgPSBmJ2NvbmZpZy17X1BZX1ZFUlNJT05fU0hPUlR9e3N5cy5hYmlmbGFnc30nCiAgICBlbHNlOgogICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWcnCiAgICBpZiBoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnKToKICAgICAgICBjb25maWdfZGlyX25hbWUgKz0gZicte3N5cy5pbXBsZW1lbnRhdGlvbi5fbXVsdGlhcmNofScKICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZ2V0X3BhdGgoJ3N0ZGxpYicpLCBjb25maWdfZGlyX25hbWUsICdNYWtlZmlsZScpCgoKZGVmIF9nZXRfc3lzY29uZmlnZGF0YV9uYW1lKCk6CiAgICBtdWx0aWFyY2ggPSBnZXRhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnLCAnJykKICAgIHJldHVybiBvcy5lbnZpcm9uLmdldCgKICAgICAgICAnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnLAogICAgICAgIGYnX3N5c2NvbmZpZ2RhdGFfe3N5cy5hYmlmbGFnc31fe3N5cy5wbGF0Zm9ybX1fe211bHRpYXJjaH0nLAogICAgKQoKCmRlZiBfZ2VuZXJhdGVfcG9zaXhfdmFycygpOgogICAgIiIiR2VuZXJhdGUgdGhlIFB5dGhvbiBtb2R1bGUgY29udGFpbmluZyBidWlsZC10aW1lIHZhcmlhYmxlcy4iIiIKICAgIGltcG9ydCBwcHJpbnQKICAgIHZhcnMgPSB7fQogICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgTWFrZWZpbGU6CiAgICBtYWtlZmlsZSA9IGdldF9tYWtlZmlsZV9maWxlbmFtZSgpCiAgICB0cnk6CiAgICAgICAgX3BhcnNlX21ha2VmaWxlKG1ha2VmaWxlLCB2YXJzKQogICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICBtc2cgPSBmImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4ge21ha2VmaWxlfSIKICAgICAgICBpZiBoYXNhdHRyKGUsICJzdHJlcnJvciIpOgogICAgICAgICAgICBtc2cgPSBmInttc2d9ICh7ZS5zdHJlcnJvcn0pIgogICAgICAgIHJhaXNlIE9TRXJyb3IobXNnKQogICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgcHljb25maWcuaDoKICAgIGNvbmZpZ19oID0gZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCkKICAgIHRyeToKICAgICAgICB3aXRoIG9wZW4oY29uZmlnX2gsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19oKGYsIHZhcnMpCiAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgIG1zZyA9IGYiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiB7Y29uZmlnX2h9IgogICAgICAgIGlmIGhhc2F0dHIoZSwgInN0cmVycm9yIik6CiAgICAgICAgICAgIG1zZyA9IGYie21zZ30gKHtlLnN0cmVycm9yfSkiCiAgICAgICAgcmFpc2UgT1NFcnJvcihtc2cpCiAgICAjIE9uIEFJWCwgdGhlcmUgYXJlIHdyb25nIHBhdGhzIHRvIHRoZSBsaW5rZXIgc2NyaXB0cyBpbiB0aGUgTWFrZWZpbGUKICAgICMgLS0gdGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBQeXRob24gc291cmNlLCBidXQgd2hlbiBpbnN0YWxsZWQKICAgICMgdGhlIHNjcmlwdHMgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LgogICAgaWYgX1BZVEhPTl9CVUlMRDoKICAgICAgICB2YXJzWydCTERTSEFSRUQnXSA9IHZhcnNbJ0xEU0hBUkVEJ10KCiAgICAjIFRoZXJlJ3MgYSBjaGlja2VuLWFuZC1lZ2cgc2l0dWF0aW9uIG9uIE9TIFggd2l0aCByZWdhcmRzIHRvIHRoZQogICAgIyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgYWZ0ZXIgdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBieSAjMTUyOTg6CiAgICAjIGdldF9jb25maWdfdmFycygpIGlzIGNhbGxlZCBieSBnZXRfcGxhdGZvcm0oKSBhcyBwYXJ0IG9mIHRoZQogICAgIyBgbWFrZSBweWJ1aWxkZGlyLnR4dGAgdGFyZ2V0IC0tIHdoaWNoIGlzIGEgcHJlY3Vyc29yIHRvIHRoZQogICAgIyBfc3lzY29uZmlnZGF0YS5weSBtb2R1bGUgYmVpbmcgY29uc3RydWN0ZWQuICBVbmZvcnR1bmF0ZWx5LAogICAgIyBnZXRfY29uZmlnX3ZhcnMoKSBldmVudHVhbGx5IGNhbGxzIF9pbml0X3Bvc2l4KCksIHdoaWNoIGF0dGVtcHRzCiAgICAjIHRvIGltcG9ydCBfc3lzY29uZmlnZGF0YSwgd2hpY2ggd2Ugd29uJ3QgaGF2ZSBidWlsdCB5ZXQuICBJbiBvcmRlcgogICAgIyBmb3IgX2luaXRfcG9zaXgoKSB0byB3b3JrLCBpZiB3ZSdyZSBvbiBEYXJ3aW4sIGp1c3QgbW9jayB1cCB0aGUKICAgICMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIG1hbnVhbGx5IGFuZCBwb3B1bGF0ZSBpdCB3aXRoIHRoZSBidWlsZCB2YXJzLgogICAgIyBUaGlzIGlzIG1vcmUgdGhhbiBzdWZmaWNpZW50IGZvciBlbnN1cmluZyB0aGUgc3Vic2VxdWVudCBjYWxsIHRvCiAgICAjIGdldF9wbGF0Zm9ybSgpIHN1Y2NlZWRzLgogICAgbmFtZSA9IF9nZXRfc3lzY29uZmlnZGF0YV9uYW1lKCkKICAgIGlmICdkYXJ3aW4nIGluIHN5cy5wbGF0Zm9ybToKICAgICAgICBpbXBvcnQgdHlwZXMKICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgbW9kdWxlLmJ1aWxkX3RpbWVfdmFycyA9IHZhcnMKICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQoKICAgIHB5YnVpbGRkaXIgPSBmJ2J1aWxkL2xpYi57Z2V0X3BsYXRmb3JtKCl9LXtfUFlfVkVSU0lPTl9TSE9SVH0nCiAgICBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKICAgICAgICBweWJ1aWxkZGlyICs9ICctcHlkZWJ1ZycKICAgIG9zLm1ha2VkaXJzKHB5YnVpbGRkaXIsIGV4aXN0X29rPVRydWUpCiAgICBkZXN0ZmlsZSA9IG9zLnBhdGguam9pbihweWJ1aWxkZGlyLCBuYW1lICsgJy5weScpCgogICAgd2l0aCBvcGVuKGRlc3RmaWxlLCAndycsIGVuY29kaW5nPSd1dGY4JykgYXMgZjoKICAgICAgICBmLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKICAgICAgICAgICAgICAgICcgdGhlIHN5c2NvbmZpZyBtb2R1bGVcbicpCiAgICAgICAgZi53cml0ZSgnYnVpbGRfdGltZV92YXJzID0gJykKICAgICAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mKQoKICAgICMgQ3JlYXRlIGZpbGUgdXNlZCBmb3Igc3lzLnBhdGggZml4dXAgLS0gc2VlIE1vZHVsZXMvZ2V0cGF0aC5jCiAgICB3aXRoIG9wZW4oJ3B5YnVpbGRkaXIudHh0JywgJ3cnLCBlbmNvZGluZz0ndXRmOCcpIGFzIGY6CiAgICAgICAgZi53cml0ZShweWJ1aWxkZGlyKQoKZGVmIF9pbml0X3Bvc2l4KHZhcnMpOgogICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgogICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKICAgIG5hbWUgPSBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpCiAgICBfdGVtcCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWydidWlsZF90aW1lX3ZhcnMnXSwgMCkKICAgIGJ1aWxkX3RpbWVfdmFycyA9IF90ZW1wLmJ1aWxkX3RpbWVfdmFycwogICAgdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQoKZGVmIF9pbml0X25vbl9wb3NpeCh2YXJzKToKICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgTlQiIiIKICAgICMgc2V0IGJhc2ljIGluc3RhbGwgZGlyZWN0b3JpZXMKICAgIGltcG9ydCBfaW1wCiAgICB2YXJzWydMSUJERVNUJ10gPSBnZXRfcGF0aCgnc3RkbGliJykKICAgIHZhcnNbJ0JJTkxJQkRFU1QnXSA9IGdldF9wYXRoKCdwbGF0c3RkbGliJykKICAgIHZhcnNbJ0lOQ0xVREVQWSddID0gZ2V0X3BhdGgoJ2luY2x1ZGUnKQogICAgdmFyc1snRVhUX1NVRkZJWCddID0gX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKVswXQogICAgdmFyc1snRVhFJ10gPSAnLmV4ZScKICAgIHZhcnNbJ1ZFUlNJT04nXSA9IF9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVAogICAgdmFyc1snQklORElSJ10gPSBvcy5wYXRoLmRpcm5hbWUoX3NhZmVfcmVhbHBhdGgoc3lzLmV4ZWN1dGFibGUpKQogICAgdmFyc1snVFpQQVRIJ10gPSAnJwoKIwojIHB1YmxpYyBBUElzCiMKCgpkZWYgcGFyc2VfY29uZmlnX2goZnAsIHZhcnM9Tm9uZSk6CiAgICAiIiJQYXJzZSBhIGNvbmZpZy5oLXN0eWxlIGZpbGUuCgogICAgQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgbmFtZS92YWx1ZSBwYWlycyBpcyByZXR1cm5lZC4gIElmIGFuCiAgICBvcHRpb25hbCBkaWN0aW9uYXJ5IGlzIHBhc3NlZCBpbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBpdCBpcwogICAgdXNlZCBpbnN0ZWFkIG9mIGEgbmV3IGRpY3Rpb25hcnkuCiAgICAiIiIKICAgIGlmIHZhcnMgaXMgTm9uZToKICAgICAgICB2YXJzID0ge30KICAgIGltcG9ydCByZQogICAgZGVmaW5lX3J4ID0gcmUuY29tcGlsZSgiI2RlZmluZSAoW0EtWl1bQS1aYS16MC05X10rKSAoLiopXG4iKQogICAgdW5kZWZfcnggPSByZS5jb21waWxlKCIvWypdICN1bmRlZiAoW0EtWl1bQS1aYS16MC05X10rKSBbKl0vXG4iKQoKICAgIHdoaWxlIFRydWU6CiAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgYnJlYWsKICAgICAgICBtID0gZGVmaW5lX3J4Lm1hdGNoKGxpbmUpCiAgICAgICAgaWYgbToKICAgICAgICAgICAgbiwgdiA9IG0uZ3JvdXAoMSwgMikKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgbiBpbiBfQUxXQVlTX1NUUjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICAgICB2ID0gaW50KHYpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICB2YXJzW25dID0gdgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG0gPSB1bmRlZl9yeC5tYXRjaChsaW5lKQogICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgdmFyc1ttLmdyb3VwKDEpXSA9IDAKICAgIHJldHVybiB2YXJzCgoKZGVmIGdldF9jb25maWdfaF9maWxlbmFtZSgpOgogICAgIiIiUmV0dXJuIHRoZSBwYXRoIG9mIHB5Y29uZmlnLmguIiIiCiAgICBpZiBfUFlUSE9OX0JVSUxEOgogICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgICAgaW5jX2RpciA9IG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCAiUEMiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGluY19kaXIgPSBfUFJPSkVDVF9CQVNFCiAgICBlbHNlOgogICAgICAgIGluY19kaXIgPSBnZXRfcGF0aCgncGxhdGluY2x1ZGUnKQogICAgcmV0dXJuIG9zLnBhdGguam9pbihpbmNfZGlyLCAncHljb25maWcuaCcpCgoKZGVmIGdldF9zY2hlbWVfbmFtZXMoKToKICAgICIiIlJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHNjaGVtZXMgbmFtZXMuIiIiCiAgICByZXR1cm4gdHVwbGUoc29ydGVkKF9JTlNUQUxMX1NDSEVNRVMpKQoKCmRlZiBnZXRfcGF0aF9uYW1lcygpOgogICAgIiIiUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyB0aGUgcGF0aHMgbmFtZXMuIiIiCiAgICByZXR1cm4gX1NDSEVNRV9LRVlTCgoKZGVmIGdldF9wYXRocyhzY2hlbWU9Z2V0X2RlZmF1bHRfc2NoZW1lKCksIHZhcnM9Tm9uZSwgZXhwYW5kPVRydWUpOgogICAgIiIiUmV0dXJuIGEgbWFwcGluZyBjb250YWluaW5nIGFuIGluc3RhbGwgc2NoZW1lLgoKICAgIGBgc2NoZW1lYGAgaXMgdGhlIGluc3RhbGwgc2NoZW1lIG5hbWUuIElmIG5vdCBwcm92aWRlZCwgaXQgd2lsbAogICAgcmV0dXJuIHRoZSBkZWZhdWx0IHNjaGVtZSBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uCiAgICAiIiIKICAgIGlmIGV4cGFuZDoKICAgICAgICByZXR1cm4gX2V4cGFuZF92YXJzKHNjaGVtZSwgdmFycykKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXQoKCmRlZiBnZXRfcGF0aChuYW1lLCBzY2hlbWU9Z2V0X2RlZmF1bHRfc2NoZW1lKCksIHZhcnM9Tm9uZSwgZXhwYW5kPVRydWUpOgogICAgIiIiUmV0dXJuIGEgcGF0aCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzY2hlbWUuCgogICAgYGBzY2hlbWVgYCBpcyB0aGUgaW5zdGFsbCBzY2hlbWUgbmFtZS4KICAgICIiIgogICAgcmV0dXJuIGdldF9wYXRocyhzY2hlbWUsIHZhcnMsIGV4cGFuZClbbmFtZV0KCgpkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKICAgICIiIldpdGggbm8gYXJndW1lbnRzLCByZXR1cm4gYSBkaWN0aW9uYXJ5IG9mIGFsbCBjb25maWd1cmF0aW9uCiAgICB2YXJpYWJsZXMgcmVsZXZhbnQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLgoKICAgIE9uIFVuaXgsIHRoaXMgbWVhbnMgZXZlcnkgdmFyaWFibGUgZGVmaW5lZCBpbiBQeXRob24ncyBpbnN0YWxsZWQgTWFrZWZpbGU7CiAgICBPbiBXaW5kb3dzIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgoKICAgIFdpdGggYXJndW1lbnRzLCByZXR1cm4gYSBsaXN0IG9mIHZhbHVlcyB0aGF0IHJlc3VsdCBmcm9tIGxvb2tpbmcgdXAKICAgIGVhY2ggYXJndW1lbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZGljdGlvbmFyeS4KICAgICIiIgogICAgZ2xvYmFsIF9DT05GSUdfVkFSUwogICAgaWYgX0NPTkZJR19WQVJTIGlzIE5vbmU6CiAgICAgICAgX0NPTkZJR19WQVJTID0ge30KICAgICAgICAjIE5vcm1hbGl6ZWQgdmVyc2lvbnMgb2YgcHJlZml4IGFuZCBleGVjX3ByZWZpeCBhcmUgaGFuZHkgdG8gaGF2ZTsKICAgICAgICAjIGluIGZhY3QsIHRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgdmVyc2lvbnMgdXNlZCBtb3N0IHBsYWNlcyBpbiB0aGUKICAgICAgICAjIERpc3R1dGlscy4KICAgICAgICBfQ09ORklHX1ZBUlNbJ3ByZWZpeCddID0gX1BSRUZJWAogICAgICAgIF9DT05GSUdfVkFSU1snZXhlY19wcmVmaXgnXSA9IF9FWEVDX1BSRUZJWAogICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbiddID0gX1BZX1ZFUlNJT04KICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fc2hvcnQnXSA9IF9QWV9WRVJTSU9OX1NIT1JUCiAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX25vZG90J10gPSBfUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QKICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9iYXNlJ10gPSBfQkFTRV9QUkVGSVgKICAgICAgICBfQ09ORklHX1ZBUlNbJ2Jhc2UnXSA9IF9QUkVGSVgKICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9wbGF0YmFzZSddID0gX0JBU0VfRVhFQ19QUkVGSVgKICAgICAgICBfQ09ORklHX1ZBUlNbJ3BsYXRiYXNlJ10gPSBfRVhFQ19QUkVGSVgKICAgICAgICBfQ09ORklHX1ZBUlNbJ3Byb2plY3RiYXNlJ10gPSBfUFJPSkVDVF9CQVNFCiAgICAgICAgX0NPTkZJR19WQVJTWydwbGF0bGliZGlyJ10gPSBzeXMucGxhdGxpYmRpcgogICAgICAgIHRyeToKICAgICAgICAgICAgX0NPTkZJR19WQVJTWydhYmlmbGFncyddID0gc3lzLmFiaWZsYWdzCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIHN5cy5hYmlmbGFncyBtYXkgbm90IGJlIGRlZmluZWQgb24gYWxsIHBsYXRmb3Jtcy4KICAgICAgICAgICAgX0NPTkZJR19WQVJTWydhYmlmbGFncyddID0gJycKICAgICAgICB0cnk6CiAgICAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdF9wbGF0J10gPSBzeXMud2ludmVyLnJlcGxhY2UoJy4nLCAnJykKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdF9wbGF0J10gPSAnJwoKICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgIF9pbml0X25vbl9wb3NpeChfQ09ORklHX1ZBUlMpCiAgICAgICAgICAgIF9DT05GSUdfVkFSU1snVlBBVEgnXSA9IHN5cy5fdnBhdGgKICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICAgIF9pbml0X3Bvc2l4KF9DT05GSUdfVkFSUykKICAgICAgICBpZiBfSEFTX1VTRVJfQkFTRToKICAgICAgICAgICAgIyBTZXR0aW5nICd1c2VyYmFzZScgaXMgZG9uZSBiZWxvdyB0aGUgY2FsbCB0byB0aGUKICAgICAgICAgICAgIyBpbml0IGZ1bmN0aW9uIHRvIGVuYWJsZSB1c2luZyAnZ2V0X2NvbmZpZ192YXInIGluCiAgICAgICAgICAgICMgdGhlIGluaXQtZnVuY3Rpb24uCiAgICAgICAgICAgIF9DT05GSUdfVkFSU1sndXNlcmJhc2UnXSA9IF9nZXR1c2VyYmFzZSgpCgogICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKICAgICAgICBzcmNkaXIgPSBfQ09ORklHX1ZBUlMuZ2V0KCdzcmNkaXInLCBfUFJPSkVDVF9CQVNFKQogICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKICAgICAgICAgICAgaWYgX1BZVEhPTl9CVUlMRDoKICAgICAgICAgICAgICAgICMgSWYgc3JjZGlyIGlzIGEgcmVsYXRpdmUgcGF0aCAodHlwaWNhbGx5ICcuJyBvciAnLi4nKQogICAgICAgICAgICAgICAgIyB0aGVuIGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAjIGNvbnRhaW5pbmcgTWFrZWZpbGUuCiAgICAgICAgICAgICAgICBiYXNlID0gb3MucGF0aC5kaXJuYW1lKGdldF9tYWtlZmlsZV9maWxlbmFtZSgpKQogICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIHNyY2RpcikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgc3JjZGlyIGlzIG5vdCBtZWFuaW5nZnVsIHNpbmNlIHRoZSBpbnN0YWxsYXRpb24gaXMKICAgICAgICAgICAgICAgICMgc3ByZWFkIGFib3V0IHRoZSBmaWxlc3lzdGVtLiAgV2UgY2hvb3NlIHRoZQogICAgICAgICAgICAgICAgIyBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgTWFrZWZpbGUgc2luY2Ugd2Uga25vdyBpdAogICAgICAgICAgICAgICAgIyBleGlzdHMuCiAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCiAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IF9zYWZlX3JlYWxwYXRoKHNyY2RpcikKCiAgICAgICAgIyBPUyBYIHBsYXRmb3JtcyByZXF1aXJlIHNwZWNpYWwgY3VzdG9taXphdGlvbiB0byBoYW5kbGUKICAgICAgICAjIG11bHRpLWFyY2hpdGVjdHVyZSwgbXVsdGktb3MtdmVyc2lvbiBpbnN0YWxsZXJzCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0CiAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5jdXN0b21pemVfY29uZmlnX3ZhcnMoX0NPTkZJR19WQVJTKQoKICAgIGlmIGFyZ3M6CiAgICAgICAgdmFscyA9IFtdCiAgICAgICAgZm9yIG5hbWUgaW4gYXJnczoKICAgICAgICAgICAgdmFscy5hcHBlbmQoX0NPTkZJR19WQVJTLmdldChuYW1lKSkKICAgICAgICByZXR1cm4gdmFscwogICAgZWxzZToKICAgICAgICByZXR1cm4gX0NPTkZJR19WQVJTCgoKZGVmIGdldF9jb25maWdfdmFyKG5hbWUpOgogICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIHNpbmdsZSB2YXJpYWJsZSB1c2luZyB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCBieQogICAgJ2dldF9jb25maWdfdmFycygpJy4KCiAgICBFcXVpdmFsZW50IHRvIGdldF9jb25maWdfdmFycygpLmdldChuYW1lKQogICAgIiIiCiAgICByZXR1cm4gZ2V0X2NvbmZpZ192YXJzKCkuZ2V0KG5hbWUpCgoKZGVmIGdldF9wbGF0Zm9ybSgpOgogICAgIiIiUmV0dXJuIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY3VycmVudCBwbGF0Zm9ybS4KCiAgICBUaGlzIGlzIHVzZWQgbWFpbmx5IHRvIGRpc3Rpbmd1aXNoIHBsYXRmb3JtLXNwZWNpZmljIGJ1aWxkIGRpcmVjdG9yaWVzIGFuZAogICAgcGxhdGZvcm0tc3BlY2lmaWMgYnVpbHQgZGlzdHJpYnV0aW9ucy4gIFR5cGljYWxseSBpbmNsdWRlcyB0aGUgT1MgbmFtZSBhbmQKICAgIHZlcnNpb24gYW5kIHRoZSBhcmNoaXRlY3R1cmUgKGFzIHN1cHBsaWVkIGJ5ICdvcy51bmFtZSgpJyksIGFsdGhvdWdoIHRoZQogICAgZXhhY3QgaW5mb3JtYXRpb24gaW5jbHVkZWQgZGVwZW5kcyBvbiB0aGUgT1M7IG9uIExpbnV4LCB0aGUga2VybmVsIHZlcnNpb24KICAgIGlzbid0IHBhcnRpY3VsYXJseSBpbXBvcnRhbnQuCgogICAgRXhhbXBsZXMgb2YgcmV0dXJuZWQgdmFsdWVzOgogICAgICAgbGludXgtaTU4NgogICAgICAgbGludXgtYWxwaGEgKD8pCiAgICAgICBzb2xhcmlzLTIuNi1zdW40dQoKICAgIFdpbmRvd3Mgd2lsbCByZXR1cm4gb25lIG9mOgogICAgICAgd2luLWFtZDY0ICg2NGJpdCBXaW5kb3dzIG9uIEFNRDY0IChha2EgeDg2XzY0LCBJbnRlbDY0LCBFTTY0VCwgZXRjKQogICAgICAgd2luMzIgKGFsbCBvdGhlcnMgLSBzcGVjaWZpY2FsbHksIHN5cy5wbGF0Zm9ybSBpcyByZXR1cm5lZCkKCiAgICBGb3Igb3RoZXIgbm9uLVBPU0lYIHBsYXRmb3JtcywgY3VycmVudGx5IGp1c3QgcmV0dXJucyAnc3lzLnBsYXRmb3JtJy4KCiAgICAiIiIKICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICBpZiAnYW1kNjQnIGluIHN5cy52ZXJzaW9uLmxvd2VyKCk6CiAgICAgICAgICAgIHJldHVybiAnd2luLWFtZDY0JwogICAgICAgIGlmICcoYXJtKScgaW4gc3lzLnZlcnNpb24ubG93ZXIoKToKICAgICAgICAgICAgcmV0dXJuICd3aW4tYXJtMzInCiAgICAgICAgaWYgJyhhcm02NCknIGluIHN5cy52ZXJzaW9uLmxvd2VyKCk6CiAgICAgICAgICAgIHJldHVybiAnd2luLWFybTY0JwogICAgICAgIHJldHVybiBzeXMucGxhdGZvcm0KCiAgICBpZiBvcy5uYW1lICE9ICJwb3NpeCIgb3Igbm90IGhhc2F0dHIob3MsICd1bmFtZScpOgogICAgICAgICMgWFhYIHdoYXQgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZT8gTlQgaXMgSW50ZWwgb3IgQWxwaGEKICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCgogICAgIyBTZXQgZm9yIGNyb3NzIGJ1aWxkcyBleHBsaWNpdGx5CiAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgogICAgICAgIHJldHVybiBvcy5lbnZpcm9uWyJfUFlUSE9OX0hPU1RfUExBVEZPUk0iXQoKICAgICMgVHJ5IHRvIGRpc3Rpbmd1aXNoIHZhcmlvdXMgZmxhdm91cnMgb2YgVW5peAogICAgb3NuYW1lLCBob3N0LCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lID0gb3MudW5hbWUoKQoKICAgICMgQ29udmVydCB0aGUgT1MgbmFtZSB0byBsb3dlcmNhc2UsIHJlbW92ZSAnLycgY2hhcmFjdGVycywgYW5kIHRyYW5zbGF0ZQogICAgIyBzcGFjZXMgKGZvciAiUG93ZXIgTWFjaW50b3NoIikKICAgIG9zbmFtZSA9IG9zbmFtZS5sb3dlcigpLnJlcGxhY2UoJy8nLCAnJykKICAgIG1hY2hpbmUgPSBtYWNoaW5lLnJlcGxhY2UoJyAnLCAnXycpCiAgICBtYWNoaW5lID0gbWFjaGluZS5yZXBsYWNlKCcvJywgJy0nKQoKICAgIGlmIG9zbmFtZVs6NV0gPT0gImxpbnV4IjoKICAgICAgICAjIEF0IGxlYXN0IG9uIExpbnV4L0ludGVsLCAnbWFjaGluZScgaXMgdGhlIHByb2Nlc3NvciAtLQogICAgICAgICMgaTM4NiwgZXRjLgogICAgICAgICMgWFhYIHdoYXQgYWJvdXQgQWxwaGEsIFNQQVJDLCBldGM/CiAgICAgICAgcmV0dXJuICBmIntvc25hbWV9LXttYWNoaW5lfSIKICAgIGVsaWYgb3NuYW1lWzo1XSA9PSAic3Vub3MiOgogICAgICAgIGlmIHJlbGVhc2VbMF0gPj0gIjUiOiAgICAgICAgICAgIyBTdW5PUyA1ID09IFNvbGFyaXMgMgogICAgICAgICAgICBvc25hbWUgPSAic29sYXJpcyIKICAgICAgICAgICAgcmVsZWFzZSA9IGYie2ludChyZWxlYXNlWzBdKSAtIDN9LntyZWxlYXNlWzI6XX0iCiAgICAgICAgICAgICMgV2UgY2FuJ3QgdXNlICJwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKVswXSIgYmVjYXVzZSBhCiAgICAgICAgICAgICMgYm9vdHN0cmFwIHByb2JsZW0uIFdlIHVzZSBhIGRpY3QgdG8gZ2V0IGFuIGVycm9yCiAgICAgICAgICAgICMgaWYgc29tZSBzdXNwaWNpb3VzIGhhcHBlbnMuCiAgICAgICAgICAgIGJpdG5lc3MgPSB7MjE0NzQ4MzY0NzoiMzJiaXQiLCA5MjIzMzcyMDM2ODU0Nzc1ODA3OiI2NGJpdCJ9CiAgICAgICAgICAgIG1hY2hpbmUgKz0gZiIue2JpdG5lc3Nbc3lzLm1heHNpemVdfSIKICAgICAgICAjIGZhbGwgdGhyb3VnaCB0byBzdGFuZGFyZCBvc25hbWUtcmVsZWFzZS1tYWNoaW5lIHJlcHJlc2VudGF0aW9uCiAgICBlbGlmIG9zbmFtZVs6M10gPT0gImFpeCI6CiAgICAgICAgZnJvbSBfYWl4X3N1cHBvcnQgaW1wb3J0IGFpeF9wbGF0Zm9ybQogICAgICAgIHJldHVybiBhaXhfcGxhdGZvcm0oKQogICAgZWxpZiBvc25hbWVbOjZdID09ICJjeWd3aW4iOgogICAgICAgIG9zbmFtZSA9ICJjeWd3aW4iCiAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgcmVsX3JlID0gcmUuY29tcGlsZShyJ1tcZC5dKycpCiAgICAgICAgbSA9IHJlbF9yZS5tYXRjaChyZWxlYXNlKQogICAgICAgIGlmIG06CiAgICAgICAgICAgIHJlbGVhc2UgPSBtLmdyb3VwKCkKICAgIGVsaWYgb3NuYW1lWzo2XSA9PSAiZGFyd2luIjoKICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0CiAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lID0gX29zeF9zdXBwb3J0LmdldF9wbGF0Zm9ybV9vc3goCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQoKICAgIHJldHVybiBmIntvc25hbWV9LXtyZWxlYXNlfS17bWFjaGluZX0iCgoKZGVmIGdldF9weXRob25fdmVyc2lvbigpOgogICAgcmV0dXJuIF9QWV9WRVJTSU9OX1NIT1JUCgoKZGVmIGV4cGFuZF9tYWtlZmlsZV92YXJzKHMsIHZhcnMpOgogICAgIiIiRXhwYW5kIE1ha2VmaWxlLXN0eWxlIHZhcmlhYmxlcyAtLSAiJHtmb299IiBvciAiJChmb28pIiAtLSBpbgogICAgJ3N0cmluZycgYWNjb3JkaW5nIHRvICd2YXJzJyAoYSBkaWN0aW9uYXJ5IG1hcHBpbmcgdmFyaWFibGUgbmFtZXMgdG8KICAgIHZhbHVlcykuICBWYXJpYWJsZXMgbm90IHByZXNlbnQgaW4gJ3ZhcnMnIGFyZSBzaWxlbnRseSBleHBhbmRlZCB0byB0aGUKICAgIGVtcHR5IHN0cmluZy4gIFRoZSB2YXJpYWJsZSB2YWx1ZXMgaW4gJ3ZhcnMnIHNob3VsZCBub3QgY29udGFpbiBmdXJ0aGVyCiAgICB2YXJpYWJsZSBleHBhbnNpb25zOyBpZiAndmFycycgaXMgdGhlIG91dHB1dCBvZiAncGFyc2VfbWFrZWZpbGUoKScsCiAgICB5b3UncmUgZmluZS4gIFJldHVybnMgYSB2YXJpYWJsZS1leHBhbmRlZCB2ZXJzaW9uIG9mICdzJy4KICAgICIiIgogICAgaW1wb3J0IHJlCgogICAgIyBUaGlzIGFsZ29yaXRobSBkb2VzIG11bHRpcGxlIGV4cGFuc2lvbiwgc28gaWYgdmFyc1snZm9vJ10gY29udGFpbnMKICAgICMgIiR7YmFyfSIsIGl0IHdpbGwgZXhwYW5kICR7Zm9vfSB0byAke2Jhcn0sIGFuZCB0aGVuIGV4cGFuZAogICAgIyAke2Jhcn0uLi4gYW5kIHNvIGZvcnRoLiAgVGhpcyBpcyBmaW5lIGFzIGxvbmcgYXMgJ3ZhcnMnIGNvbWVzIGZyb20KICAgICMgJ3BhcnNlX21ha2VmaWxlKCknLCB3aGljaCB0YWtlcyBjYXJlIG9mIHN1Y2ggZXhwYW5zaW9ucyBlYWdlcmx5LAogICAgIyBhY2NvcmRpbmcgdG8gbWFrZSdzIHZhcmlhYmxlIGV4cGFuc2lvbiBzZW1hbnRpY3MuCgogICAgd2hpbGUgVHJ1ZToKICAgICAgICBtID0gcmUuc2VhcmNoKF9maW5kdmFyMV9yeCwgcykgb3IgcmUuc2VhcmNoKF9maW5kdmFyMl9yeCwgcykKICAgICAgICBpZiBtOgogICAgICAgICAgICAoYmVnLCBlbmQpID0gbS5zcGFuKCkKICAgICAgICAgICAgcyA9IHNbMDpiZWddICsgdmFycy5nZXQobS5ncm91cCgxKSkgKyBzW2VuZDpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYnJlYWsKICAgIHJldHVybiBzCgoKZGVmIF9wcmludF9kaWN0KHRpdGxlLCBkYXRhKToKICAgIGZvciBpbmRleCwgKGtleSwgdmFsdWUpIGluIGVudW1lcmF0ZShzb3J0ZWQoZGF0YS5pdGVtcygpKSk6CiAgICAgICAgaWYgaW5kZXggPT0gMDoKICAgICAgICAgICAgcHJpbnQoZid7dGl0bGV9OiAnKQogICAgICAgIHByaW50KGYnXHR7a2V5fSA9ICJ7dmFsdWV9IicpCgoKZGVmIF9tYWluKCk6CiAgICAiIiJEaXNwbGF5IGFsbCBpbmZvcm1hdGlvbiBzeXNjb25maWcgZGV0YWlucy4iIiIKICAgIGlmICctLWdlbmVyYXRlLXBvc2l4LXZhcnMnIGluIHN5cy5hcmd2OgogICAgICAgIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKICAgICAgICByZXR1cm4KICAgIHByaW50KGYnUGxhdGZvcm06ICJ7Z2V0X3BsYXRmb3JtKCl9IicpCiAgICBwcmludChmJ1B5dGhvbiB2ZXJzaW9uOiAie2dldF9weXRob25fdmVyc2lvbigpfSInKQogICAgcHJpbnQoZidDdXJyZW50IGluc3RhbGxhdGlvbiBzY2hlbWU6ICJ7Z2V0X2RlZmF1bHRfc2NoZW1lKCl9IicpCiAgICBwcmludCgpCiAgICBfcHJpbnRfZGljdCgnUGF0aHMnLCBnZXRfcGF0aHMoKSkKICAgIHByaW50KCkKICAgIF9wcmludF9kaWN0KCdWYXJpYWJsZXMnLCBnZXRfY29uZmlnX3ZhcnMoKSkKCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgX21haW4oKQpQSwMEFAAAAAAAAiCjVh7SSEMjLAAAIywAAAsAAAB0YWJuYW5ueS5weSMhIC91c3IvYmluL2VudiBweXRob24zCgoiIiJUaGUgVGFiIE5hbm55IGRlc3Bpc2VzIGFtYmlndW91cyBpbmRlbnRhdGlvbi4gIFNoZSBrbm93cyBubyBtZXJjeS4KCnRhYm5hbm55IC0tIERldGVjdGlvbiBvZiBhbWJpZ3VvdXMgaW5kZW50YXRpb24KCkZvciB0aGUgdGltZSBiZWluZyB0aGlzIG1vZHVsZSBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYXMgYSBzY3JpcHQuCkhvd2V2ZXIgaXQgaXMgcG9zc2libGUgdG8gaW1wb3J0IGl0IGludG8gYW4gSURFIGFuZCB1c2UgdGhlIGZ1bmN0aW9uCmNoZWNrKCkgZGVzY3JpYmVkIGJlbG93LgoKV2FybmluZzogVGhlIEFQSSBwcm92aWRlZCBieSB0aGlzIG1vZHVsZSBpcyBsaWtlbHkgdG8gY2hhbmdlIGluIGZ1dHVyZQpyZWxlYXNlczsgc3VjaCBjaGFuZ2VzIG1heSBub3QgYmUgYmFja3dhcmQgY29tcGF0aWJsZS4KIiIiCgojIFJlbGVhc2VkIHRvIHRoZSBwdWJsaWMgZG9tYWluLCBieSBUaW0gUGV0ZXJzLCAxNSBBcHJpbCAxOTk4LgoKIyBYWFggTm90ZTogdGhpcyBpcyBub3cgYSBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZS4KIyBYWFggVGhlIEFQSSBuZWVkcyB0byB1bmRlcmdvIGNoYW5nZXMgaG93ZXZlcjsgdGhlIGN1cnJlbnQgY29kZSBpcyB0b28KIyBYWFggc2NyaXB0LWxpa2UuICBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIGxhdGVyLgoKX192ZXJzaW9uX18gPSAiNiIKCmltcG9ydCBvcwppbXBvcnQgc3lzCmltcG9ydCB0b2tlbml6ZQoKX19hbGxfXyA9IFsiY2hlY2siLCAiTmFubnlOYWciLCAicHJvY2Vzc190b2tlbnMiXQoKdmVyYm9zZSA9IDAKZmlsZW5hbWVfb25seSA9IDAKCmRlZiBlcnJwcmludCgqYXJncyk6CiAgICBzZXAgPSAiIgogICAgZm9yIGFyZyBpbiBhcmdzOgogICAgICAgIHN5cy5zdGRlcnIud3JpdGUoc2VwICsgc3RyKGFyZykpCiAgICAgICAgc2VwID0gIiAiCiAgICBzeXMuc3RkZXJyLndyaXRlKCJcbiIpCgpkZWYgbWFpbigpOgogICAgaW1wb3J0IGdldG9wdAoKICAgIGdsb2JhbCB2ZXJib3NlLCBmaWxlbmFtZV9vbmx5CiAgICB0cnk6CiAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAicXYiKQogICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CiAgICAgICAgZXJycHJpbnQobXNnKQogICAgICAgIHJldHVybgogICAgZm9yIG8sIGEgaW4gb3B0czoKICAgICAgICBpZiBvID09ICctcSc6CiAgICAgICAgICAgIGZpbGVuYW1lX29ubHkgPSBmaWxlbmFtZV9vbmx5ICsgMQogICAgICAgIGlmIG8gPT0gJy12JzoKICAgICAgICAgICAgdmVyYm9zZSA9IHZlcmJvc2UgKyAxCiAgICBpZiBub3QgYXJnczoKICAgICAgICBlcnJwcmludCgiVXNhZ2U6Iiwgc3lzLmFyZ3ZbMF0sICJbLXZdIGZpbGVfb3JfZGlyZWN0b3J5IC4uLiIpCiAgICAgICAgcmV0dXJuCiAgICBmb3IgYXJnIGluIGFyZ3M6CiAgICAgICAgY2hlY2soYXJnKQoKY2xhc3MgTmFubnlOYWcoRXhjZXB0aW9uKToKICAgICIiIgogICAgUmFpc2VkIGJ5IHByb2Nlc3NfdG9rZW5zKCkgaWYgZGV0ZWN0aW5nIGFuIGFtYmlndW91cyBpbmRlbnQuCiAgICBDYXB0dXJlZCBhbmQgaGFuZGxlZCBpbiBjaGVjaygpLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZW5vLCBtc2csIGxpbmUpOgogICAgICAgIHNlbGYubGluZW5vLCBzZWxmLm1zZywgc2VsZi5saW5lID0gbGluZW5vLCBtc2csIGxpbmUKICAgIGRlZiBnZXRfbGluZW5vKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmxpbmVubwogICAgZGVmIGdldF9tc2coc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubXNnCiAgICBkZWYgZ2V0X2xpbmUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubGluZQoKZGVmIGNoZWNrKGZpbGUpOgogICAgIiIiY2hlY2soZmlsZV9vcl9kaXIpCgogICAgSWYgZmlsZV9vcl9kaXIgaXMgYSBkaXJlY3RvcnkgYW5kIG5vdCBhIHN5bWJvbGljIGxpbmssIHRoZW4gcmVjdXJzaXZlbHkKICAgIGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5IGZpbGVfb3JfZGlyLCBjaGVja2luZyBhbGwgLnB5IGZpbGVzCiAgICBhbG9uZyB0aGUgd2F5LiBJZiBmaWxlX29yX2RpciBpcyBhbiBvcmRpbmFyeSBQeXRob24gc291cmNlIGZpbGUsIGl0IGlzCiAgICBjaGVja2VkIGZvciB3aGl0ZXNwYWNlIHJlbGF0ZWQgcHJvYmxlbXMuIFRoZSBkaWFnbm9zdGljIG1lc3NhZ2VzIGFyZQogICAgd3JpdHRlbiB0byBzdGFuZGFyZCBvdXRwdXQgdXNpbmcgdGhlIHByaW50IHN0YXRlbWVudC4KICAgICIiIgoKICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZSkgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhmaWxlKToKICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICBwcmludCgiJXI6IGxpc3RpbmcgZGlyZWN0b3J5IiAlIChmaWxlLCkpCiAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGZpbGUpCiAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKGZpbGUsIG5hbWUpCiAgICAgICAgICAgIGlmIChvcy5wYXRoLmlzZGlyKGZ1bGxuYW1lKSBhbmQKICAgICAgICAgICAgICAgIG5vdCBvcy5wYXRoLmlzbGluayhmdWxsbmFtZSkgb3IKICAgICAgICAgICAgICAgIG9zLnBhdGgubm9ybWNhc2UobmFtZVstMzpdKSA9PSAiLnB5Iik6CiAgICAgICAgICAgICAgICBjaGVjayhmdWxsbmFtZSkKICAgICAgICByZXR1cm4KCiAgICB0cnk6CiAgICAgICAgZiA9IHRva2VuaXplLm9wZW4oZmlsZSkKICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICBlcnJwcmludCgiJXI6IEkvTyBFcnJvcjogJXMiICUgKGZpbGUsIG1zZykpCiAgICAgICAgcmV0dXJuCgogICAgaWYgdmVyYm9zZSA+IDE6CiAgICAgICAgcHJpbnQoImNoZWNraW5nICVyIC4uLiIgJSBmaWxlKQoKICAgIHRyeToKICAgICAgICBwcm9jZXNzX3Rva2Vucyh0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoZi5yZWFkbGluZSkpCgogICAgZXhjZXB0IHRva2VuaXplLlRva2VuRXJyb3IgYXMgbXNnOgogICAgICAgIGVycnByaW50KCIlcjogVG9rZW4gRXJyb3I6ICVzIiAlIChmaWxlLCBtc2cpKQogICAgICAgIHJldHVybgoKICAgIGV4Y2VwdCBJbmRlbnRhdGlvbkVycm9yIGFzIG1zZzoKICAgICAgICBlcnJwcmludCgiJXI6IEluZGVudGF0aW9uIEVycm9yOiAlcyIgJSAoZmlsZSwgbXNnKSkKICAgICAgICByZXR1cm4KCiAgICBleGNlcHQgTmFubnlOYWcgYXMgbmFnOgogICAgICAgIGJhZGxpbmUgPSBuYWcuZ2V0X2xpbmVubygpCiAgICAgICAgbGluZSA9IG5hZy5nZXRfbGluZSgpCiAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgcHJpbnQoIiVyOiAqKiogTGluZSAlZDogdHJvdWJsZSBpbiB0YWIgY2l0eSEgKioqIiAlIChmaWxlLCBiYWRsaW5lKSkKICAgICAgICAgICAgcHJpbnQoIm9mZmVuZGluZyBsaW5lOiAlciIgJSAobGluZSwpKQogICAgICAgICAgICBwcmludChuYWcuZ2V0X21zZygpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmICcgJyBpbiBmaWxlOiBmaWxlID0gJyInICsgZmlsZSArICciJwogICAgICAgICAgICBpZiBmaWxlbmFtZV9vbmx5OiBwcmludChmaWxlKQogICAgICAgICAgICBlbHNlOiBwcmludChmaWxlLCBiYWRsaW5lLCByZXByKGxpbmUpKQogICAgICAgIHJldHVybgoKICAgIGZpbmFsbHk6CiAgICAgICAgZi5jbG9zZSgpCgogICAgaWYgdmVyYm9zZToKICAgICAgICBwcmludCgiJXI6IENsZWFuIGJpbGwgb2YgaGVhbHRoLiIgJSAoZmlsZSwpKQoKY2xhc3MgV2hpdGVzcGFjZToKICAgICMgdGhlIGNoYXJhY3RlcnMgdXNlZCBmb3Igc3BhY2UgYW5kIHRhYgogICAgUywgVCA9ICcgXHQnCgogICAgIyBtZW1iZXJzOgogICAgIyAgIHJhdwogICAgIyAgICAgICB0aGUgb3JpZ2luYWwgc3RyaW5nCiAgICAjICAgbgogICAgIyAgICAgICB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHJhdwogICAgIyAgIG50CiAgICAjICAgICAgIHRoZSBudW1iZXIgb2YgdGFicyBpbiByYXdbOm5dCiAgICAjICAgbm9ybQogICAgIyAgICAgICB0aGUgbm9ybWFsIGZvcm0gYXMgYSBwYWlyIChjb3VudCwgdHJhaWxpbmcpLCB3aGVyZToKICAgICMgICAgICAgY291bnQKICAgICMgICAgICAgICAgIGEgdHVwbGUgc3VjaCB0aGF0IHJhd1s6bl0gY29udGFpbnMgY291bnRbaV0KICAgICMgICAgICAgICAgIGluc3RhbmNlcyBvZiBTICogaSArIFQKICAgICMgICAgICAgdHJhaWxpbmcKICAgICMgICAgICAgICAgIHRoZSBudW1iZXIgb2YgdHJhaWxpbmcgc3BhY2VzIGluIHJhd1s6bl0KICAgICMgICAgICAgSXQncyBBIFRoZW9yZW0gdGhhdCBtLmluZGVudF9sZXZlbCh0KSA9PQogICAgIyAgICAgICBuLmluZGVudF9sZXZlbCh0KSBmb3IgYWxsIHQgPj0gMSBpZmYgbS5ub3JtID09IG4ubm9ybS4KICAgICMgICBpc19zaW1wbGUKICAgICMgICAgICAgdHJ1ZSBpZmYgcmF3WzpuXSBpcyBvZiB0aGUgZm9ybSAoVCopKFMqKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3cyk6CiAgICAgICAgc2VsZi5yYXcgID0gd3MKICAgICAgICBTLCBUID0gV2hpdGVzcGFjZS5TLCBXaGl0ZXNwYWNlLlQKICAgICAgICBjb3VudCA9IFtdCiAgICAgICAgYiA9IG4gPSBudCA9IDAKICAgICAgICBmb3IgY2ggaW4gc2VsZi5yYXc6CiAgICAgICAgICAgIGlmIGNoID09IFM6CiAgICAgICAgICAgICAgICBuID0gbiArIDEKICAgICAgICAgICAgICAgIGIgPSBiICsgMQogICAgICAgICAgICBlbGlmIGNoID09IFQ6CiAgICAgICAgICAgICAgICBuID0gbiArIDEKICAgICAgICAgICAgICAgIG50ID0gbnQgKyAxCiAgICAgICAgICAgICAgICBpZiBiID49IGxlbihjb3VudCk6CiAgICAgICAgICAgICAgICAgICAgY291bnQgPSBjb3VudCArIFswXSAqIChiIC0gbGVuKGNvdW50KSArIDEpCiAgICAgICAgICAgICAgICBjb3VudFtiXSA9IGNvdW50W2JdICsgMQogICAgICAgICAgICAgICAgYiA9IDAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgc2VsZi5uICAgID0gbgogICAgICAgIHNlbGYubnQgICA9IG50CiAgICAgICAgc2VsZi5ub3JtID0gdHVwbGUoY291bnQpLCBiCiAgICAgICAgc2VsZi5pc19zaW1wbGUgPSBsZW4oY291bnQpIDw9IDEKCiAgICAjIHJldHVybiBsZW5ndGggb2YgbG9uZ2VzdCBjb250aWd1b3VzIHJ1biBvZiBzcGFjZXMgKHdoZXRoZXIgb3Igbm90CiAgICAjIHByZWNlZGluZyBhIHRhYikKICAgIGRlZiBsb25nZXN0X3J1bl9vZl9zcGFjZXMoc2VsZik6CiAgICAgICAgY291bnQsIHRyYWlsaW5nID0gc2VsZi5ub3JtCiAgICAgICAgcmV0dXJuIG1heChsZW4oY291bnQpLTEsIHRyYWlsaW5nKQoKICAgIGRlZiBpbmRlbnRfbGV2ZWwoc2VsZiwgdGFic2l6ZSk6CiAgICAgICAgIyBjb3VudCwgaWwgPSBzZWxmLm5vcm0KICAgICAgICAjIGZvciBpIGluIHJhbmdlKGxlbihjb3VudCkpOgogICAgICAgICMgICAgaWYgY291bnRbaV06CiAgICAgICAgIyAgICAgICAgaWwgPSBpbCArIChpLy90YWJzaXplICsgMSkqdGFic2l6ZSAqIGNvdW50W2ldCiAgICAgICAgIyByZXR1cm4gaWwKCiAgICAgICAgIyBxdWlja2VyOgogICAgICAgICMgaWwgPSB0cmFpbGluZyArIHN1bSAoaS8vdHMgKyAxKSp0cypjb3VudFtpXSA9CiAgICAgICAgIyB0cmFpbGluZyArIHRzICogc3VtIChpLy90cyArIDEpKmNvdW50W2ldID0KICAgICAgICAjIHRyYWlsaW5nICsgdHMgKiBzdW0gaS8vdHMqY291bnRbaV0gKyBjb3VudFtpXSA9CiAgICAgICAgIyB0cmFpbGluZyArIHRzICogWyhzdW0gaS8vdHMqY291bnRbaV0pICsgKHN1bSBjb3VudFtpXSldID0KICAgICAgICAjIHRyYWlsaW5nICsgdHMgKiBbKHN1bSBpLy90cypjb3VudFtpXSkgKyBudW1fdGFic10KICAgICAgICAjIGFuZCBub3RlIHRoYXQgaS8vdHMqY291bnRbaV0gaXMgMCB3aGVuIGkgPCB0cwoKICAgICAgICBjb3VudCwgdHJhaWxpbmcgPSBzZWxmLm5vcm0KICAgICAgICBpbCA9IDAKICAgICAgICBmb3IgaSBpbiByYW5nZSh0YWJzaXplLCBsZW4oY291bnQpKToKICAgICAgICAgICAgaWwgPSBpbCArIGkvL3RhYnNpemUgKiBjb3VudFtpXQogICAgICAgIHJldHVybiB0cmFpbGluZyArIHRhYnNpemUgKiAoaWwgKyBzZWxmLm50KQoKICAgICMgcmV0dXJuIHRydWUgaWZmIHNlbGYuaW5kZW50X2xldmVsKHQpID09IG90aGVyLmluZGVudF9sZXZlbCh0KQogICAgIyBmb3IgYWxsIHQgPj0gMQogICAgZGVmIGVxdWFsKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5ub3JtID09IG90aGVyLm5vcm0KCiAgICAjIHJldHVybiBhIGxpc3Qgb2YgdHVwbGVzICh0cywgaTEsIGkyKSBzdWNoIHRoYXQKICAgICMgaTEgPT0gc2VsZi5pbmRlbnRfbGV2ZWwodHMpICE9IG90aGVyLmluZGVudF9sZXZlbCh0cykgPT0gaTIuCiAgICAjIEludGVuZGVkIHRvIGJlIHVzZWQgYWZ0ZXIgbm90IHNlbGYuZXF1YWwob3RoZXIpIGlzIGtub3duLCBpbiB3aGljaAogICAgIyBjYXNlIGl0IHdpbGwgcmV0dXJuIGF0IGxlYXN0IG9uZSB3aXRuZXNzaW5nIHRhYiBzaXplLgogICAgZGVmIG5vdF9lcXVhbF93aXRuZXNzKHNlbGYsIG90aGVyKToKICAgICAgICBuID0gbWF4KHNlbGYubG9uZ2VzdF9ydW5fb2Zfc3BhY2VzKCksCiAgICAgICAgICAgICAgICBvdGhlci5sb25nZXN0X3J1bl9vZl9zcGFjZXMoKSkgKyAxCiAgICAgICAgYSA9IFtdCiAgICAgICAgZm9yIHRzIGluIHJhbmdlKDEsIG4rMSk6CiAgICAgICAgICAgIGlmIHNlbGYuaW5kZW50X2xldmVsKHRzKSAhPSBvdGhlci5pbmRlbnRfbGV2ZWwodHMpOgogICAgICAgICAgICAgICAgYS5hcHBlbmQoICh0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmRlbnRfbGV2ZWwodHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5pbmRlbnRfbGV2ZWwodHMpKSApCiAgICAgICAgcmV0dXJuIGEKCiAgICAjIFJldHVybiBUcnVlIGlmZiBzZWxmLmluZGVudF9sZXZlbCh0KSA8IG90aGVyLmluZGVudF9sZXZlbCh0KQogICAgIyBmb3IgYWxsIHQgPj0gMS4KICAgICMgVGhlIGFsZ29yaXRobSBpcyBkdWUgdG8gVmluY2VudCBCcm9tYW4uCiAgICAjIEVhc3kgdG8gcHJvdmUgaXQncyBjb3JyZWN0LgogICAgIyBYWFhwb3N0IHRoYXQuCiAgICAjIFRyaXZpYWwgdG8gcHJvdmUgbiBpcyBzaGFycCAoY29uc2lkZXIgVCB2cyBTVCkuCiAgICAjIFVua25vd24gd2hldGhlciB0aGVyZSdzIGEgZmFzdGVyIGdlbmVyYWwgd2F5LiAgSSBzdXNwZWN0ZWQgc28gYXQKICAgICMgZmlyc3QsIGJ1dCBubyBsb25nZXIuCiAgICAjIEZvciB0aGUgc3BlY2lhbCAoYnV0IGNvbW1vbiEpIGNhc2Ugd2hlcmUgTSBhbmQgTiBhcmUgYm90aCBvZiB0aGUKICAgICMgZm9ybSAoVCopKFMqKSwgTS5sZXNzKE4pIGlmZiBNLmxlbigpIDwgTi5sZW4oKSBhbmQKICAgICMgTS5udW1fdGFicygpIDw9IE4ubnVtX3RhYnMoKS4gUHJvb2YgaXMgZWFzeSBidXQga2luZGEgbG9uZy13aW5kZWQuCiAgICAjIFhYWHdyaXRlIHRoYXQgdXAuCiAgICAjIE5vdGUgdGhhdCBNIGlzIG9mIHRoZSBmb3JtIChUKikoUyopIGlmZiBsZW4oTS5ub3JtWzBdKSA8PSAxLgogICAgZGVmIGxlc3Moc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIHNlbGYubiA+PSBvdGhlci5uOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBpZiBzZWxmLmlzX3NpbXBsZSBhbmQgb3RoZXIuaXNfc2ltcGxlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5udCA8PSBvdGhlci5udAogICAgICAgIG4gPSBtYXgoc2VsZi5sb25nZXN0X3J1bl9vZl9zcGFjZXMoKSwKICAgICAgICAgICAgICAgIG90aGVyLmxvbmdlc3RfcnVuX29mX3NwYWNlcygpKSArIDEKICAgICAgICAjIHRoZSBzZWxmLm4gPj0gb3RoZXIubiB0ZXN0IGFscmVhZHkgZGlkIGl0IGZvciB0cz0xCiAgICAgICAgZm9yIHRzIGluIHJhbmdlKDIsIG4rMSk6CiAgICAgICAgICAgIGlmIHNlbGYuaW5kZW50X2xldmVsKHRzKSA+PSBvdGhlci5pbmRlbnRfbGV2ZWwodHMpOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICAjIHJldHVybiBhIGxpc3Qgb2YgdHVwbGVzICh0cywgaTEsIGkyKSBzdWNoIHRoYXQKICAgICMgaTEgPT0gc2VsZi5pbmRlbnRfbGV2ZWwodHMpID49IG90aGVyLmluZGVudF9sZXZlbCh0cykgPT0gaTIuCiAgICAjIEludGVuZGVkIHRvIGJlIHVzZWQgYWZ0ZXIgbm90IHNlbGYubGVzcyhvdGhlcikgaXMga25vd24sIGluIHdoaWNoCiAgICAjIGNhc2UgaXQgd2lsbCByZXR1cm4gYXQgbGVhc3Qgb25lIHdpdG5lc3NpbmcgdGFiIHNpemUuCiAgICBkZWYgbm90X2xlc3Nfd2l0bmVzcyhzZWxmLCBvdGhlcik6CiAgICAgICAgbiA9IG1heChzZWxmLmxvbmdlc3RfcnVuX29mX3NwYWNlcygpLAogICAgICAgICAgICAgICAgb3RoZXIubG9uZ2VzdF9ydW5fb2Zfc3BhY2VzKCkpICsgMQogICAgICAgIGEgPSBbXQogICAgICAgIGZvciB0cyBpbiByYW5nZSgxLCBuKzEpOgogICAgICAgICAgICBpZiBzZWxmLmluZGVudF9sZXZlbCh0cykgPj0gb3RoZXIuaW5kZW50X2xldmVsKHRzKToKICAgICAgICAgICAgICAgIGEuYXBwZW5kKCAodHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5kZW50X2xldmVsKHRzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuaW5kZW50X2xldmVsKHRzKSkgKQogICAgICAgIHJldHVybiBhCgpkZWYgZm9ybWF0X3dpdG5lc3Nlcyh3KToKICAgIGZpcnN0cyA9IChzdHIodHVwWzBdKSBmb3IgdHVwIGluIHcpCiAgICBwcmVmaXggPSAiYXQgdGFiIHNpemUiCiAgICBpZiBsZW4odykgPiAxOgogICAgICAgIHByZWZpeCA9IHByZWZpeCArICJzIgogICAgcmV0dXJuIHByZWZpeCArICIgIiArICcsICcuam9pbihmaXJzdHMpCgpkZWYgcHJvY2Vzc190b2tlbnModG9rZW5zKToKICAgIElOREVOVCA9IHRva2VuaXplLklOREVOVAogICAgREVERU5UID0gdG9rZW5pemUuREVERU5UCiAgICBORVdMSU5FID0gdG9rZW5pemUuTkVXTElORQogICAgSlVOSyA9IHRva2VuaXplLkNPTU1FTlQsIHRva2VuaXplLk5MCiAgICBpbmRlbnRzID0gW1doaXRlc3BhY2UoIiIpXQogICAgY2hlY2tfZXF1YWwgPSAwCgogICAgZm9yICh0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSkgaW4gdG9rZW5zOgogICAgICAgIGlmIHR5cGUgPT0gTkVXTElORToKICAgICAgICAgICAgIyBhIHByb2dyYW0gc3RhdGVtZW50LCBvciBFTkRNQVJLRVIsIHdpbGwgZXZlbnR1YWxseSBmb2xsb3csCiAgICAgICAgICAgICMgYWZ0ZXIgc29tZSAocG9zc2libHkgZW1wdHkpIHJ1biBvZiB0b2tlbnMgb2YgdGhlIGZvcm0KICAgICAgICAgICAgIyAgICAgKE5MIHwgQ09NTUVOVCkqIChJTkRFTlQgfCBERURFTlQrKT8KICAgICAgICAgICAgIyBJZiBhbiBJTkRFTlQgYXBwZWFycywgc2V0dGluZyBjaGVja19lcXVhbCBpcyB3cm9uZywgYW5kIHdpbGwKICAgICAgICAgICAgIyBiZSB1bmRvbmUgd2hlbiB3ZSBzZWUgdGhlIElOREVOVC4KICAgICAgICAgICAgY2hlY2tfZXF1YWwgPSAxCgogICAgICAgIGVsaWYgdHlwZSA9PSBJTkRFTlQ6CiAgICAgICAgICAgIGNoZWNrX2VxdWFsID0gMAogICAgICAgICAgICB0aGlzZ3V5ID0gV2hpdGVzcGFjZSh0b2tlbikKICAgICAgICAgICAgaWYgbm90IGluZGVudHNbLTFdLmxlc3ModGhpc2d1eSk6CiAgICAgICAgICAgICAgICB3aXRuZXNzID0gaW5kZW50c1stMV0ubm90X2xlc3Nfd2l0bmVzcyh0aGlzZ3V5KQogICAgICAgICAgICAgICAgbXNnID0gImluZGVudCBub3QgZ3JlYXRlciBlLmcuICIgKyBmb3JtYXRfd2l0bmVzc2VzKHdpdG5lc3MpCiAgICAgICAgICAgICAgICByYWlzZSBOYW5ueU5hZyhzdGFydFswXSwgbXNnLCBsaW5lKQogICAgICAgICAgICBpbmRlbnRzLmFwcGVuZCh0aGlzZ3V5KQoKICAgICAgICBlbGlmIHR5cGUgPT0gREVERU5UOgogICAgICAgICAgICAjIHRoZXJlJ3Mgbm90aGluZyB3ZSBuZWVkIHRvIGNoZWNrIGhlcmUhICB3aGF0J3MgaW1wb3J0YW50IGlzCiAgICAgICAgICAgICMgdGhhdCB3aGVuIHRoZSBydW4gb2YgREVERU5UcyBlbmRzLCB0aGUgaW5kZW50YXRpb24gb2YgdGhlCiAgICAgICAgICAgICMgcHJvZ3JhbSBzdGF0ZW1lbnQgKG9yIEVORE1BUktFUikgdGhhdCB0cmlnZ2VyZWQgdGhlIHJ1biBpcwogICAgICAgICAgICAjIGVxdWFsIHRvIHdoYXQncyBsZWZ0IGF0IHRoZSB0b3Agb2YgdGhlIGluZGVudHMgc3RhY2sKCiAgICAgICAgICAgICMgT3VjaCEgIFRoaXMgYXNzZXJ0IHRyaWdnZXJzIGlmIHRoZSBsYXN0IGxpbmUgb2YgdGhlIHNvdXJjZQogICAgICAgICAgICAjIGlzIGluZGVudGVkICphbmQqIGxhY2tzIGEgbmV3bGluZSAtLSB0aGVuIERFREVOVHMgcG9wIG91dAogICAgICAgICAgICAjIG9mIHRoaW4gYWlyLgogICAgICAgICAgICAjIGFzc2VydCBjaGVja19lcXVhbCAgIyBlbHNlIG5vIGVhcmxpZXIgTkVXTElORSwgb3IgYW4gZWFybGllciBJTkRFTlQKICAgICAgICAgICAgY2hlY2tfZXF1YWwgPSAxCgogICAgICAgICAgICBkZWwgaW5kZW50c1stMV0KCiAgICAgICAgZWxpZiBjaGVja19lcXVhbCBhbmQgdHlwZSBub3QgaW4gSlVOSzoKICAgICAgICAgICAgIyB0aGlzIGlzIHRoZSBmaXJzdCAicmVhbCB0b2tlbiIgZm9sbG93aW5nIGEgTkVXTElORSwgc28gaXQKICAgICAgICAgICAgIyBtdXN0IGJlIHRoZSBmaXJzdCB0b2tlbiBvZiB0aGUgbmV4dCBwcm9ncmFtIHN0YXRlbWVudCwgb3IgYW4KICAgICAgICAgICAgIyBFTkRNQVJLRVI7IHRoZSAibGluZSIgYXJndW1lbnQgZXhwb3NlcyB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgICMgZm9yIHRoaXMgc3RhdGVtZW50OyBpbiB0aGUgY2FzZSBvZiBFTkRNQVJLRVIsIGxpbmUgaXMgYW4gZW1wdHkKICAgICAgICAgICAgIyBzdHJpbmcsIHNvIHdpbGwgcHJvcGVybHkgbWF0Y2ggdGhlIGVtcHR5IHN0cmluZyB3aXRoIHdoaWNoIHRoZQogICAgICAgICAgICAjICJpbmRlbnRzIiBzdGFjayB3YXMgc2VlZGVkCiAgICAgICAgICAgIGNoZWNrX2VxdWFsID0gMAogICAgICAgICAgICB0aGlzZ3V5ID0gV2hpdGVzcGFjZShsaW5lKQogICAgICAgICAgICBpZiBub3QgaW5kZW50c1stMV0uZXF1YWwodGhpc2d1eSk6CiAgICAgICAgICAgICAgICB3aXRuZXNzID0gaW5kZW50c1stMV0ubm90X2VxdWFsX3dpdG5lc3ModGhpc2d1eSkKICAgICAgICAgICAgICAgIG1zZyA9ICJpbmRlbnQgbm90IGVxdWFsIGUuZy4gIiArIGZvcm1hdF93aXRuZXNzZXMod2l0bmVzcykKICAgICAgICAgICAgICAgIHJhaXNlIE5hbm55TmFnKHN0YXJ0WzBdLCBtc2csIGxpbmUpCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQpQSwMEFAAAAAAAAiCjVquwRwIJdwEACXcBAAoAAAB0YXJmaWxlLnB5IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHRhcmZpbGUucHkKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDb3B5cmlnaHQgKEMpIDIwMDIgTGFycyBHdXN0YWViZWwgPGxhcnNAZ3VzdGFlYmVsLmRlPgojIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBQZXJtaXNzaW9uICBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlICBvZiBjaGFyZ2UsICB0byAgYW55IHBlcnNvbgojIG9idGFpbmluZyBhICBjb3B5IG9mICB0aGlzIHNvZnR3YXJlICBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uCiMgZmlsZXMgICh0aGUgICJTb2Z0d2FyZSIpLCAgdG8gICBkZWFsICBpbiAgdGhlICBTb2Z0d2FyZSAgIHdpdGhvdXQKIyByZXN0cmljdGlvbiwgIGluY2x1ZGluZyAgd2l0aG91dCBsaW1pdGF0aW9uICB0aGUgIHJpZ2h0cyB0byAgdXNlLAojIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiMgY29waWVzICBvZiAgdGhlICBTb2Z0d2FyZSwgIGFuZCB0byAgcGVybWl0ICBwZXJzb25zICB0byAgd2hvbSB0aGUKIyBTb2Z0d2FyZSAgaXMgIGZ1cm5pc2hlZCAgdG8gIGRvICBzbywgIHN1YmplY3QgIHRvICB0aGUgIGZvbGxvd2luZwojIGNvbmRpdGlvbnM6CiMKIyBUaGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UgYW5kIHRoaXMgIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsICBiZQojIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgojCiMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyAgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSAgS0lORCwKIyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyAgQlVUIE5PVCBMSU1JVEVEIFRPICBUSEUgV0FSUkFOVElFUwojIE9GICBNRVJDSEFOVEFCSUxJVFksICBGSVRORVNTICAgRk9SICBBICBQQVJUSUNVTEFSICAgUFVSUE9TRSAgQU5ECiMgTk9OSU5GUklOR0VNRU5ULiAgSU4gIE5PICBFVkVOVCBTSEFMTCAgVEhFICBBVVRIT1JTICBPUiBDT1BZUklHSFQKIyBIT0xERVJTICBCRSBMSUFCTEUgIEZPUiBBTlkgIENMQUlNLCBEQU1BR0VTICBPUiBPVEhFUiAgTElBQklMSVRZLAojIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgIENPTlRSQUNULCBUT1JUICBPUiBPVEhFUldJU0UsICBBUklTSU5HCiMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgojIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KIwoiIiJSZWFkIGZyb20gYW5kIHdyaXRlIHRvIHRhciBmb3JtYXQgYXJjaGl2ZXMuCiIiIgoKdmVyc2lvbiAgICAgPSAiMC45LjAiCl9fYXV0aG9yX18gID0gIkxhcnMgR3VzdFx1MDBlNGJlbCAobGFyc0BndXN0YWViZWwuZGUpIgpfX2NyZWRpdHNfXyA9ICJHdXN0YXZvIE5pZW1leWVyLCBOaWVscyBHdXN0XHUwMGU0YmVsLCBSaWNoYXJkIFRvd25zZW5kLiIKCiMtLS0tLS0tLS0KIyBJbXBvcnRzCiMtLS0tLS0tLS0KZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBibHRuX29wZW4KaW1wb3J0IHN5cwppbXBvcnQgb3MKaW1wb3J0IGlvCmltcG9ydCBzaHV0aWwKaW1wb3J0IHN0YXQKaW1wb3J0IHRpbWUKaW1wb3J0IHN0cnVjdAppbXBvcnQgY29weQppbXBvcnQgcmUKCnRyeToKICAgIGltcG9ydCBwd2QKZXhjZXB0IEltcG9ydEVycm9yOgogICAgcHdkID0gTm9uZQp0cnk6CiAgICBpbXBvcnQgZ3JwCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGdycCA9IE5vbmUKCiMgb3Muc3ltbGluayBvbiBXaW5kb3dzIHByaW9yIHRvIDYuMCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvcgpzeW1saW5rX2V4Y2VwdGlvbiA9IChBdHRyaWJ1dGVFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcikKdHJ5OgogICAgIyBPU0Vycm9yICh3aW5lcnJvcj0xMzE0KSB3aWxsIGJlIHJhaXNlZCBpZiB0aGUgY2FsbGVyIGRvZXMgbm90IGhvbGQgdGhlCiAgICAjIFNlQ3JlYXRlU3ltYm9saWNMaW5rUHJpdmlsZWdlIHByaXZpbGVnZQogICAgc3ltbGlua19leGNlcHRpb24gKz0gKE9TRXJyb3IsKQpleGNlcHQgTmFtZUVycm9yOgogICAgcGFzcwoKIyBmcm9tIHRhcmZpbGUgaW1wb3J0ICoKX19hbGxfXyA9IFsiVGFyRmlsZSIsICJUYXJJbmZvIiwgImlzX3RhcmZpbGUiLCAiVGFyRXJyb3IiLCAiUmVhZEVycm9yIiwKICAgICAgICAgICAiQ29tcHJlc3Npb25FcnJvciIsICJTdHJlYW1FcnJvciIsICJFeHRyYWN0RXJyb3IiLCAiSGVhZGVyRXJyb3IiLAogICAgICAgICAgICJFTkNPRElORyIsICJVU1RBUl9GT1JNQVQiLCAiR05VX0ZPUk1BVCIsICJQQVhfRk9STUFUIiwKICAgICAgICAgICAiREVGQVVMVF9GT1JNQVQiLCAib3BlbiJdCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgdGFyIGNvbnN0YW50cwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk5VTCA9IGIiXDAiICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbnVsbCBjaGFyYWN0ZXIKQkxPQ0tTSVpFID0gNTEyICAgICAgICAgICAgICAgICAjIGxlbmd0aCBvZiBwcm9jZXNzaW5nIGJsb2NrcwpSRUNPUkRTSVpFID0gQkxPQ0tTSVpFICogMjAgICAgICMgbGVuZ3RoIG9mIHJlY29yZHMKR05VX01BR0lDID0gYiJ1c3RhciAgXDAiICAgICAgICAjIG1hZ2ljIGdudSB0YXIgc3RyaW5nClBPU0lYX01BR0lDID0gYiJ1c3Rhclx4MDAwMCIgICAgIyBtYWdpYyBwb3NpeCB0YXIgc3RyaW5nCgpMRU5HVEhfTkFNRSA9IDEwMCAgICAgICAgICAgICAgICMgbWF4aW11bSBsZW5ndGggb2YgYSBmaWxlbmFtZQpMRU5HVEhfTElOSyA9IDEwMCAgICAgICAgICAgICAgICMgbWF4aW11bSBsZW5ndGggb2YgYSBsaW5rbmFtZQpMRU5HVEhfUFJFRklYID0gMTU1ICAgICAgICAgICAgICMgbWF4aW11bSBsZW5ndGggb2YgdGhlIHByZWZpeCBmaWVsZAoKUkVHVFlQRSA9IGIiMCIgICAgICAgICAgICAgICAgICAjIHJlZ3VsYXIgZmlsZQpBUkVHVFlQRSA9IGIiXDAiICAgICAgICAgICAgICAgICMgcmVndWxhciBmaWxlCkxOS1RZUEUgPSBiIjEiICAgICAgICAgICAgICAgICAgIyBsaW5rIChpbnNpZGUgdGFyZmlsZSkKU1lNVFlQRSA9IGIiMiIgICAgICAgICAgICAgICAgICAjIHN5bWJvbGljIGxpbmsKQ0hSVFlQRSA9IGIiMyIgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBzcGVjaWFsIGRldmljZQpCTEtUWVBFID0gYiI0IiAgICAgICAgICAgICAgICAgICMgYmxvY2sgc3BlY2lhbCBkZXZpY2UKRElSVFlQRSA9IGIiNSIgICAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeQpGSUZPVFlQRSA9IGIiNiIgICAgICAgICAgICAgICAgICMgZmlmbyBzcGVjaWFsIGRldmljZQpDT05UVFlQRSA9IGIiNyIgICAgICAgICAgICAgICAgICMgY29udGlndW91cyBmaWxlCgpHTlVUWVBFX0xPTkdOQU1FID0gYiJMIiAgICAgICAgICMgR05VIHRhciBsb25nbmFtZQpHTlVUWVBFX0xPTkdMSU5LID0gYiJLIiAgICAgICAgICMgR05VIHRhciBsb25nbGluawpHTlVUWVBFX1NQQVJTRSA9IGIiUyIgICAgICAgICAgICMgR05VIHRhciBzcGFyc2UgZmlsZQoKWEhEVFlQRSA9IGIieCIgICAgICAgICAgICAgICAgICAjIFBPU0lYLjEtMjAwMSBleHRlbmRlZCBoZWFkZXIKWEdMVFlQRSA9IGIiZyIgICAgICAgICAgICAgICAgICAjIFBPU0lYLjEtMjAwMSBnbG9iYWwgaGVhZGVyClNPTEFSSVNfWEhEVFlQRSA9IGIiWCIgICAgICAgICAgIyBTb2xhcmlzIGV4dGVuZGVkIGhlYWRlcgoKVVNUQVJfRk9STUFUID0gMCAgICAgICAgICAgICAgICAjIFBPU0lYLjEtMTk4OCAodXN0YXIpIGZvcm1hdApHTlVfRk9STUFUID0gMSAgICAgICAgICAgICAgICAgICMgR05VIHRhciBmb3JtYXQKUEFYX0ZPUk1BVCA9IDIgICAgICAgICAgICAgICAgICAjIFBPU0lYLjEtMjAwMSAocGF4KSBmb3JtYXQKREVGQVVMVF9GT1JNQVQgPSBQQVhfRk9STUFUCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgdGFyZmlsZSBjb25zdGFudHMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEZpbGUgdHlwZXMgdGhhdCB0YXJmaWxlIHN1cHBvcnRzOgpTVVBQT1JURURfVFlQRVMgPSAoUkVHVFlQRSwgQVJFR1RZUEUsIExOS1RZUEUsCiAgICAgICAgICAgICAgICAgICBTWU1UWVBFLCBESVJUWVBFLCBGSUZPVFlQRSwKICAgICAgICAgICAgICAgICAgIENPTlRUWVBFLCBDSFJUWVBFLCBCTEtUWVBFLAogICAgICAgICAgICAgICAgICAgR05VVFlQRV9MT05HTkFNRSwgR05VVFlQRV9MT05HTElOSywKICAgICAgICAgICAgICAgICAgIEdOVVRZUEVfU1BBUlNFKQoKIyBGaWxlIHR5cGVzIHRoYXQgd2lsbCBiZSB0cmVhdGVkIGFzIGEgcmVndWxhciBmaWxlLgpSRUdVTEFSX1RZUEVTID0gKFJFR1RZUEUsIEFSRUdUWVBFLAogICAgICAgICAgICAgICAgIENPTlRUWVBFLCBHTlVUWVBFX1NQQVJTRSkKCiMgRmlsZSB0eXBlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBHTlUgdGFyIGZvcm1hdC4KR05VX1RZUEVTID0gKEdOVVRZUEVfTE9OR05BTUUsIEdOVVRZUEVfTE9OR0xJTkssCiAgICAgICAgICAgICBHTlVUWVBFX1NQQVJTRSkKCiMgRmllbGRzIGZyb20gYSBwYXggaGVhZGVyIHRoYXQgb3ZlcnJpZGUgYSBUYXJJbmZvIGF0dHJpYnV0ZS4KUEFYX0ZJRUxEUyA9ICgicGF0aCIsICJsaW5rcGF0aCIsICJzaXplIiwgIm10aW1lIiwKICAgICAgICAgICAgICAidWlkIiwgImdpZCIsICJ1bmFtZSIsICJnbmFtZSIpCgojIEZpZWxkcyBmcm9tIGEgcGF4IGhlYWRlciB0aGF0IGFyZSBhZmZlY3RlZCBieSBoZHJjaGFyc2V0LgpQQVhfTkFNRV9GSUVMRFMgPSB7InBhdGgiLCAibGlua3BhdGgiLCAidW5hbWUiLCAiZ25hbWUifQoKIyBGaWVsZHMgaW4gYSBwYXggaGVhZGVyIHRoYXQgYXJlIG51bWJlcnMsIGFsbCBvdGhlciBmaWVsZHMKIyBhcmUgdHJlYXRlZCBhcyBzdHJpbmdzLgpQQVhfTlVNQkVSX0ZJRUxEUyA9IHsKICAgICJhdGltZSI6IGZsb2F0LAogICAgImN0aW1lIjogZmxvYXQsCiAgICAibXRpbWUiOiBmbG9hdCwKICAgICJ1aWQiOiBpbnQsCiAgICAiZ2lkIjogaW50LAogICAgInNpemUiOiBpbnQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGluaXRpYWxpemF0aW9uCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaWYgb3MubmFtZSA9PSAibnQiOgogICAgRU5DT0RJTkcgPSAidXRmLTgiCmVsc2U6CiAgICBFTkNPRElORyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNvbWUgdXNlZnVsIGZ1bmN0aW9ucwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpkZWYgc3RuKHMsIGxlbmd0aCwgZW5jb2RpbmcsIGVycm9ycyk6CiAgICAiIiJDb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVsbC10ZXJtaW5hdGVkIGJ5dGVzIG9iamVjdC4KICAgICIiIgogICAgcyA9IHMuZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpCiAgICByZXR1cm4gc1s6bGVuZ3RoXSArIChsZW5ndGggLSBsZW4ocykpICogTlVMCgpkZWYgbnRzKHMsIGVuY29kaW5nLCBlcnJvcnMpOgogICAgIiIiQ29udmVydCBhIG51bGwtdGVybWluYXRlZCBieXRlcyBvYmplY3QgdG8gYSBzdHJpbmcuCiAgICAiIiIKICAgIHAgPSBzLmZpbmQoYiJcMCIpCiAgICBpZiBwICE9IC0xOgogICAgICAgIHMgPSBzWzpwXQogICAgcmV0dXJuIHMuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCgpkZWYgbnRpKHMpOgogICAgIiIiQ29udmVydCBhIG51bWJlciBmaWVsZCB0byBhIHB5dGhvbiBudW1iZXIuCiAgICAiIiIKICAgICMgVGhlcmUgYXJlIHR3byBwb3NzaWJsZSBlbmNvZGluZ3MgZm9yIGEgbnVtYmVyIGZpZWxkLCBzZWUKICAgICMgaXRuKCkgYmVsb3cuCiAgICBpZiBzWzBdIGluICgwbzIwMCwgMG8zNzcpOgogICAgICAgIG4gPSAwCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpIC0gMSk6CiAgICAgICAgICAgIG4gPDw9IDgKICAgICAgICAgICAgbiArPSBzW2kgKyAxXQogICAgICAgIGlmIHNbMF0gPT0gMG8zNzc6CiAgICAgICAgICAgIG4gPSAtKDI1NiAqKiAobGVuKHMpIC0gMSkgLSBuKQogICAgZWxzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMgPSBudHMocywgImFzY2lpIiwgInN0cmljdCIpCiAgICAgICAgICAgIG4gPSBpbnQocy5zdHJpcCgpIG9yICIwIiwgOCkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgSW52YWxpZEhlYWRlckVycm9yKCJpbnZhbGlkIGhlYWRlciIpCiAgICByZXR1cm4gbgoKZGVmIGl0bihuLCBkaWdpdHM9OCwgZm9ybWF0PURFRkFVTFRfRk9STUFUKToKICAgICIiIkNvbnZlcnQgYSBweXRob24gbnVtYmVyIHRvIGEgbnVtYmVyIGZpZWxkLgogICAgIiIiCiAgICAjIFBPU0lYIDEwMDMuMS0xOTg4IHJlcXVpcmVzIG51bWJlcnMgdG8gYmUgZW5jb2RlZCBhcyBhIHN0cmluZyBvZgogICAgIyBvY3RhbCBkaWdpdHMgZm9sbG93ZWQgYnkgYSBudWxsLWJ5dGUsIHRoaXMgYWxsb3dzIHZhbHVlcyB1cCB0bwogICAgIyAoOCoqKGRpZ2l0cy0xKSktMS4gR05VIHRhciBhbGxvd3Mgc3RvcmluZyBudW1iZXJzIGdyZWF0ZXIgdGhhbgogICAgIyB0aGF0IGlmIG5lY2Vzc2FyeS4gQSBsZWFkaW5nIDBvMjAwIG9yIDBvMzc3IGJ5dGUgaW5kaWNhdGUgdGhpcwogICAgIyBwYXJ0aWN1bGFyIGVuY29kaW5nLCB0aGUgZm9sbG93aW5nIGRpZ2l0cy0xIGJ5dGVzIGFyZSBhIGJpZy1lbmRpYW4KICAgICMgYmFzZS0yNTYgcmVwcmVzZW50YXRpb24uIFRoaXMgYWxsb3dzIHZhbHVlcyB1cCB0byAoMjU2KiooZGlnaXRzLTEpKS0xLgogICAgIyBBIDBvMjAwIGJ5dGUgaW5kaWNhdGVzIGEgcG9zaXRpdmUgbnVtYmVyLCBhIDBvMzc3IGJ5dGUgYSBuZWdhdGl2ZQogICAgIyBudW1iZXIuCiAgICBvcmlnaW5hbF9uID0gbgogICAgbiA9IGludChuKQogICAgaWYgMCA8PSBuIDwgOCAqKiAoZGlnaXRzIC0gMSk6CiAgICAgICAgcyA9IGJ5dGVzKCIlMCpvIiAlIChkaWdpdHMgLSAxLCBuKSwgImFzY2lpIikgKyBOVUwKICAgIGVsaWYgZm9ybWF0ID09IEdOVV9GT1JNQVQgYW5kIC0yNTYgKiogKGRpZ2l0cyAtIDEpIDw9IG4gPCAyNTYgKiogKGRpZ2l0cyAtIDEpOgogICAgICAgIGlmIG4gPj0gMDoKICAgICAgICAgICAgcyA9IGJ5dGVhcnJheShbMG8yMDBdKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHMgPSBieXRlYXJyYXkoWzBvMzc3XSkKICAgICAgICAgICAgbiA9IDI1NiAqKiBkaWdpdHMgKyBuCgogICAgICAgIGZvciBpIGluIHJhbmdlKGRpZ2l0cyAtIDEpOgogICAgICAgICAgICBzLmluc2VydCgxLCBuICYgMG8zNzcpCiAgICAgICAgICAgIG4gPj49IDgKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib3ZlcmZsb3cgaW4gbnVtYmVyIGZpZWxkIikKCiAgICByZXR1cm4gcwoKZGVmIGNhbGNfY2hrc3VtcyhidWYpOgogICAgIiIiQ2FsY3VsYXRlIHRoZSBjaGVja3N1bSBmb3IgYSBtZW1iZXIncyBoZWFkZXIgYnkgc3VtbWluZyB1cCBhbGwKICAgICAgIGNoYXJhY3RlcnMgZXhjZXB0IGZvciB0aGUgY2hrc3VtIGZpZWxkIHdoaWNoIGlzIHRyZWF0ZWQgYXMgaWYKICAgICAgIGl0IHdhcyBmaWxsZWQgd2l0aCBzcGFjZXMuIEFjY29yZGluZyB0byB0aGUgR05VIHRhciBzb3VyY2VzLAogICAgICAgc29tZSB0YXJzIChTdW4gYW5kIE5lWFQpIGNhbGN1bGF0ZSBjaGtzdW0gd2l0aCBzaWduZWQgY2hhciwKICAgICAgIHdoaWNoIHdpbGwgYmUgZGlmZmVyZW50IGlmIHRoZXJlIGFyZSBjaGFycyBpbiB0aGUgYnVmZmVyIHdpdGgKICAgICAgIHRoZSBoaWdoIGJpdCBzZXQuIFNvIHdlIGNhbGN1bGF0ZSB0d28gY2hlY2tzdW1zLCB1bnNpZ25lZCBhbmQKICAgICAgIHNpZ25lZC4KICAgICIiIgogICAgdW5zaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Qjh4MzU2QiIsIGJ1ZikpCiAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Yjh4MzU2YiIsIGJ1ZikpCiAgICByZXR1cm4gdW5zaWduZWRfY2hrc3VtLCBzaWduZWRfY2hrc3VtCgpkZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvciwgYnVmc2l6ZT1Ob25lKToKICAgICIiIkNvcHkgbGVuZ3RoIGJ5dGVzIGZyb20gZmlsZW9iaiBzcmMgdG8gZmlsZW9iaiBkc3QuCiAgICAgICBJZiBsZW5ndGggaXMgTm9uZSwgY29weSB0aGUgZW50aXJlIGNvbnRlbnQuCiAgICAiIiIKICAgIGJ1ZnNpemUgPSBidWZzaXplIG9yIDE2ICogMTAyNAogICAgaWYgbGVuZ3RoID09IDA6CiAgICAgICAgcmV0dXJuCiAgICBpZiBsZW5ndGggaXMgTm9uZToKICAgICAgICBzaHV0aWwuY29weWZpbGVvYmooc3JjLCBkc3QsIGJ1ZnNpemUpCiAgICAgICAgcmV0dXJuCgogICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QobGVuZ3RoLCBidWZzaXplKQogICAgZm9yIGIgaW4gcmFuZ2UoYmxvY2tzKToKICAgICAgICBidWYgPSBzcmMucmVhZChidWZzaXplKQogICAgICAgIGlmIGxlbihidWYpIDwgYnVmc2l6ZToKICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9uKCJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIikKICAgICAgICBkc3Qud3JpdGUoYnVmKQoKICAgIGlmIHJlbWFpbmRlciAhPSAwOgogICAgICAgIGJ1ZiA9IHNyYy5yZWFkKHJlbWFpbmRlcikKICAgICAgICBpZiBsZW4oYnVmKSA8IHJlbWFpbmRlcjoKICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9uKCJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIikKICAgICAgICBkc3Qud3JpdGUoYnVmKQogICAgcmV0dXJuCgpkZWYgX3NhZmVfcHJpbnQocyk6CiAgICBlbmNvZGluZyA9IGdldGF0dHIoc3lzLnN0ZG91dCwgJ2VuY29kaW5nJywgTm9uZSkKICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgIHMgPSBzLmVuY29kZShlbmNvZGluZywgJ2JhY2tzbGFzaHJlcGxhY2UnKS5kZWNvZGUoZW5jb2RpbmcpCiAgICBwcmludChzLCBlbmQ9JyAnKQoKCmNsYXNzIFRhckVycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJCYXNlIGV4Y2VwdGlvbi4iIiIKICAgIHBhc3MKY2xhc3MgRXh0cmFjdEVycm9yKFRhckVycm9yKToKICAgICIiIkdlbmVyYWwgZXhjZXB0aW9uIGZvciBleHRyYWN0IGVycm9ycy4iIiIKICAgIHBhc3MKY2xhc3MgUmVhZEVycm9yKFRhckVycm9yKToKICAgICIiIkV4Y2VwdGlvbiBmb3IgdW5yZWFkYWJsZSB0YXIgYXJjaGl2ZXMuIiIiCiAgICBwYXNzCmNsYXNzIENvbXByZXNzaW9uRXJyb3IoVGFyRXJyb3IpOgogICAgIiIiRXhjZXB0aW9uIGZvciB1bmF2YWlsYWJsZSBjb21wcmVzc2lvbiBtZXRob2RzLiIiIgogICAgcGFzcwpjbGFzcyBTdHJlYW1FcnJvcihUYXJFcnJvcik6CiAgICAiIiJFeGNlcHRpb24gZm9yIHVuc3VwcG9ydGVkIG9wZXJhdGlvbnMgb24gc3RyZWFtLWxpa2UgVGFyRmlsZXMuIiIiCiAgICBwYXNzCmNsYXNzIEhlYWRlckVycm9yKFRhckVycm9yKToKICAgICIiIkJhc2UgZXhjZXB0aW9uIGZvciBoZWFkZXIgZXJyb3JzLiIiIgogICAgcGFzcwpjbGFzcyBFbXB0eUhlYWRlckVycm9yKEhlYWRlckVycm9yKToKICAgICIiIkV4Y2VwdGlvbiBmb3IgZW1wdHkgaGVhZGVycy4iIiIKICAgIHBhc3MKY2xhc3MgVHJ1bmNhdGVkSGVhZGVyRXJyb3IoSGVhZGVyRXJyb3IpOgogICAgIiIiRXhjZXB0aW9uIGZvciB0cnVuY2F0ZWQgaGVhZGVycy4iIiIKICAgIHBhc3MKY2xhc3MgRU9GSGVhZGVyRXJyb3IoSGVhZGVyRXJyb3IpOgogICAgIiIiRXhjZXB0aW9uIGZvciBlbmQgb2YgZmlsZSBoZWFkZXJzLiIiIgogICAgcGFzcwpjbGFzcyBJbnZhbGlkSGVhZGVyRXJyb3IoSGVhZGVyRXJyb3IpOgogICAgIiIiRXhjZXB0aW9uIGZvciBpbnZhbGlkIGhlYWRlcnMuIiIiCiAgICBwYXNzCmNsYXNzIFN1YnNlcXVlbnRIZWFkZXJFcnJvcihIZWFkZXJFcnJvcik6CiAgICAiIiJFeGNlcHRpb24gZm9yIG1pc3NpbmcgYW5kIGludmFsaWQgZXh0ZW5kZWQgaGVhZGVycy4iIiIKICAgIHBhc3MKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBpbnRlcm5hbCBzdHJlYW0gaW50ZXJmYWNlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KY2xhc3MgX0xvd0xldmVsRmlsZToKICAgICIiIkxvdy1sZXZlbCBmaWxlIG9iamVjdC4gU3VwcG9ydHMgcmVhZGluZyBhbmQgd3JpdGluZy4KICAgICAgIEl0IGlzIHVzZWQgaW5zdGVhZCBvZiBhIHJlZ3VsYXIgZmlsZSBvYmplY3QgZm9yIHN0cmVhbWluZwogICAgICAgYWNjZXNzLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIG1vZGUpOgogICAgICAgIG1vZGUgPSB7CiAgICAgICAgICAgICJyIjogb3MuT19SRE9OTFksCiAgICAgICAgICAgICJ3Ijogb3MuT19XUk9OTFkgfCBvcy5PX0NSRUFUIHwgb3MuT19UUlVOQywKICAgICAgICB9W21vZGVdCiAgICAgICAgaWYgaGFzYXR0cihvcywgIk9fQklOQVJZIik6CiAgICAgICAgICAgIG1vZGUgfD0gb3MuT19CSU5BUlkKICAgICAgICBzZWxmLmZkID0gb3Mub3BlbihuYW1lLCBtb2RlLCAwbzY2NikKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgb3MuY2xvc2Uoc2VsZi5mZCkKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplKToKICAgICAgICByZXR1cm4gb3MucmVhZChzZWxmLmZkLCBzaXplKQoKICAgIGRlZiB3cml0ZShzZWxmLCBzKToKICAgICAgICBvcy53cml0ZShzZWxmLmZkLCBzKQoKY2xhc3MgX1N0cmVhbToKICAgICIiIkNsYXNzIHRoYXQgc2VydmVzIGFzIGFuIGFkYXB0ZXIgYmV0d2VlbiBUYXJGaWxlIGFuZAogICAgICAgYSBzdHJlYW0tbGlrZSBvYmplY3QuICBUaGUgc3RyZWFtLWxpa2Ugb2JqZWN0IG9ubHkKICAgICAgIG5lZWRzIHRvIGhhdmUgYSByZWFkKCkgb3Igd3JpdGUoKSBtZXRob2QgYW5kIGlzIGFjY2Vzc2VkCiAgICAgICBibG9ja3dpc2UuICBVc2Ugb2YgZ3ppcCBvciBiemlwMiBjb21wcmVzc2lvbiBpcyBwb3NzaWJsZS4KICAgICAgIEEgc3RyZWFtLWxpa2Ugb2JqZWN0IGNvdWxkIGJlIGZvciBleGFtcGxlOiBzeXMuc3RkaW4sCiAgICAgICBzeXMuc3Rkb3V0LCBhIHNvY2tldCwgYSB0YXBlIGRldmljZSBldGMuCgogICAgICAgX1N0cmVhbSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIG9ubHkgaW50ZXJuYWxseS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBtb2RlLCBjb21wdHlwZSwgZmlsZW9iaiwgYnVmc2l6ZSk6CiAgICAgICAgIiIiQ29uc3RydWN0IGEgX1N0cmVhbSBvYmplY3QuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fZXh0ZmlsZW9iaiA9IFRydWUKICAgICAgICBpZiBmaWxlb2JqIGlzIE5vbmU6CiAgICAgICAgICAgIGZpbGVvYmogPSBfTG93TGV2ZWxGaWxlKG5hbWUsIG1vZGUpCiAgICAgICAgICAgIHNlbGYuX2V4dGZpbGVvYmogPSBGYWxzZQoKICAgICAgICBpZiBjb21wdHlwZSA9PSAnKic6CiAgICAgICAgICAgICMgRW5hYmxlIHRyYW5zcGFyZW50IGNvbXByZXNzaW9uIGRldGVjdGlvbiBmb3IgdGhlCiAgICAgICAgICAgICMgc3RyZWFtIGludGVyZmFjZQogICAgICAgICAgICBmaWxlb2JqID0gX1N0cmVhbVByb3h5KGZpbGVvYmopCiAgICAgICAgICAgIGNvbXB0eXBlID0gZmlsZW9iai5nZXRjb21wdHlwZSgpCgogICAgICAgIHNlbGYubmFtZSAgICAgPSBuYW1lIG9yICIiCiAgICAgICAgc2VsZi5tb2RlICAgICA9IG1vZGUKICAgICAgICBzZWxmLmNvbXB0eXBlID0gY29tcHR5cGUKICAgICAgICBzZWxmLmZpbGVvYmogID0gZmlsZW9iagogICAgICAgIHNlbGYuYnVmc2l6ZSAgPSBidWZzaXplCiAgICAgICAgc2VsZi5idWYgICAgICA9IGIiIgogICAgICAgIHNlbGYucG9zICAgICAgPSAwCiAgICAgICAgc2VsZi5jbG9zZWQgICA9IEZhbHNlCgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgY29tcHR5cGUgPT0gImd6IjoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpbXBvcnQgemxpYgogICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoInpsaWIgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgIHNlbGYuemxpYiA9IHpsaWIKICAgICAgICAgICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpCiAgICAgICAgICAgICAgICBpZiBtb2RlID09ICJyIjoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbml0X3JlYWRfZ3ooKQogICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gemxpYi5lcnJvcgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbml0X3dyaXRlX2d6KCkKCiAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gImJ6MiI6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGJ6MgogICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImJ6MiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAiciI6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5kYnVmID0gYiIiCiAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgICAgICAgICAgICBzZWxmLmV4Y2VwdGlvbiA9IE9TRXJyb3IKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyQ29tcHJlc3NvcigpCgogICAgICAgICAgICBlbGlmIGNvbXB0eXBlID09ICJ4eiI6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGx6bWEKICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJsem1hIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikgZnJvbSBOb25lCiAgICAgICAgICAgICAgICBpZiBtb2RlID09ICJyIjoKICAgICAgICAgICAgICAgICAgICBzZWxmLmRidWYgPSBiIiIKICAgICAgICAgICAgICAgICAgICBzZWxmLmNtcCA9IGx6bWEuTFpNQURlY29tcHJlc3NvcigpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBsem1hLkxaTUFFcnJvcgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLmNtcCA9IGx6bWEuTFpNQUNvbXByZXNzb3IoKQoKICAgICAgICAgICAgZWxpZiBjb21wdHlwZSAhPSAidGFyIjoKICAgICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoInVua25vd24gY29tcHJlc3Npb24gdHlwZSAlciIgJSBjb21wdHlwZSkKCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXh0ZmlsZW9iajoKICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCiAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQogICAgICAgICAgICByYWlzZQoKICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgImNsb3NlZCIpIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBfaW5pdF93cml0ZV9neihzZWxmKToKICAgICAgICAiIiJJbml0aWFsaXplIGZvciB3cml0aW5nIHdpdGggZ3ppcCBjb21wcmVzc2lvbi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmNtcCA9IHNlbGYuemxpYi5jb21wcmVzc29iaig5LCBzZWxmLnpsaWIuREVGTEFURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXNlbGYuemxpYi5NQVhfV0JJVFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi56bGliLkRFRl9NRU1fTEVWRUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkKICAgICAgICB0aW1lc3RhbXAgPSBzdHJ1Y3QucGFjaygiPEwiLCBpbnQodGltZS50aW1lKCkpKQogICAgICAgIHNlbGYuX193cml0ZShiIlwwMzdcMjEzXDAxMFwwMTAiICsgdGltZXN0YW1wICsgYiJcMDAyXDM3NyIpCiAgICAgICAgaWYgc2VsZi5uYW1lLmVuZHN3aXRoKCIuZ3oiKToKICAgICAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5uYW1lWzotM10KICAgICAgICAjIEhvbm9yICJkaXJlY3RvcnkgY29tcG9uZW50cyByZW1vdmVkIiBmcm9tIFJGQzE5NTIKICAgICAgICBzZWxmLm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYubmFtZSkKICAgICAgICAjIFJGQzE5NTIgc2F5cyB3ZSBtdXN0IHVzZSBJU08tODg1OS0xIGZvciB0aGUgRk5BTUUgZmllbGQuCiAgICAgICAgc2VsZi5fX3dyaXRlKHNlbGYubmFtZS5lbmNvZGUoImlzby04ODU5LTEiLCAicmVwbGFjZSIpICsgTlVMKQoKICAgIGRlZiB3cml0ZShzZWxmLCBzKToKICAgICAgICAiIiJXcml0ZSBzdHJpbmcgcyB0byB0aGUgc3RyZWFtLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuY29tcHR5cGUgPT0gImd6IjoKICAgICAgICAgICAgc2VsZi5jcmMgPSBzZWxmLnpsaWIuY3JjMzIocywgc2VsZi5jcmMpCiAgICAgICAgc2VsZi5wb3MgKz0gbGVuKHMpCiAgICAgICAgaWYgc2VsZi5jb21wdHlwZSAhPSAidGFyIjoKICAgICAgICAgICAgcyA9IHNlbGYuY21wLmNvbXByZXNzKHMpCiAgICAgICAgc2VsZi5fX3dyaXRlKHMpCgogICAgZGVmIF9fd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgIiIiV3JpdGUgc3RyaW5nIHMgdG8gdGhlIHN0cmVhbSBpZiBhIHdob2xlIG5ldyBibG9jawogICAgICAgICAgIGlzIHJlYWR5IHRvIGJlIHdyaXR0ZW4uCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5idWYgKz0gcwogICAgICAgIHdoaWxlIGxlbihzZWxmLmJ1ZikgPiBzZWxmLmJ1ZnNpemU6CiAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShzZWxmLmJ1Zls6c2VsZi5idWZzaXplXSkKICAgICAgICAgICAgc2VsZi5idWYgPSBzZWxmLmJ1ZltzZWxmLmJ1ZnNpemU6XQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgX1N0cmVhbSBvYmplY3QuIE5vIG9wZXJhdGlvbiBzaG91bGQgYmUKICAgICAgICAgICBkb25lIG9uIGl0IGFmdGVyd2FyZHMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYubW9kZSA9PSAidyIgYW5kIHNlbGYuY29tcHR5cGUgIT0gInRhciI6CiAgICAgICAgICAgICAgICBzZWxmLmJ1ZiArPSBzZWxmLmNtcC5mbHVzaCgpCgogICAgICAgICAgICBpZiBzZWxmLm1vZGUgPT0gInciIGFuZCBzZWxmLmJ1ZjoKICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShzZWxmLmJ1ZikKICAgICAgICAgICAgICAgIHNlbGYuYnVmID0gYiIiCiAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbXB0eXBlID09ICJneiI6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHN0cnVjdC5wYWNrKCI8TCIsIHNlbGYuY3JjKSkKICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoc3RydWN0LnBhY2soIjxMIiwgc2VsZi5wb3MgJiAweGZmZmZGRkZGKSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXh0ZmlsZW9iajoKICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCgogICAgZGVmIF9pbml0X3JlYWRfZ3ooc2VsZik6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSBmb3IgcmVhZGluZyBhIGd6aXAgY29tcHJlc3NlZCBmaWxlb2JqLgogICAgICAgICIiIgogICAgICAgIHNlbGYuY21wID0gc2VsZi56bGliLmRlY29tcHJlc3NvYmooLXNlbGYuemxpYi5NQVhfV0JJVFMpCiAgICAgICAgc2VsZi5kYnVmID0gYiIiCgogICAgICAgICMgdGFrZW4gZnJvbSBnemlwLkd6aXBGaWxlIHdpdGggc29tZSBhbHRlcmF0aW9ucwogICAgICAgIGlmIHNlbGYuX19yZWFkKDIpICE9IGIiXDAzN1wyMTMiOgogICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoIm5vdCBhIGd6aXAgZmlsZSIpCiAgICAgICAgaWYgc2VsZi5fX3JlYWQoMSkgIT0gYiJcMDEwIjoKICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigidW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gbWV0aG9kIikKCiAgICAgICAgZmxhZyA9IG9yZChzZWxmLl9fcmVhZCgxKSkKICAgICAgICBzZWxmLl9fcmVhZCg2KQoKICAgICAgICBpZiBmbGFnICYgNDoKICAgICAgICAgICAgeGxlbiA9IG9yZChzZWxmLl9fcmVhZCgxKSkgKyAyNTYgKiBvcmQoc2VsZi5fX3JlYWQoMSkpCiAgICAgICAgICAgIHNlbGYucmVhZCh4bGVuKQogICAgICAgIGlmIGZsYWcgJiA4OgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgcyA9IHNlbGYuX19yZWFkKDEpCiAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzID09IE5VTDoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGlmIGZsYWcgJiAxNjoKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIHMgPSBzZWxmLl9fcmVhZCgxKQogICAgICAgICAgICAgICAgaWYgbm90IHMgb3IgcyA9PSBOVUw6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBmbGFnICYgMjoKICAgICAgICAgICAgc2VsZi5fX3JlYWQoMikKCiAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHN0cmVhbSdzIGZpbGUgcG9pbnRlciBwb3NpdGlvbi4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5wb3MKCiAgICBkZWYgc2VlayhzZWxmLCBwb3M9MCk6CiAgICAgICAgIiIiU2V0IHRoZSBzdHJlYW0ncyBmaWxlIHBvaW50ZXIgdG8gcG9zLiBOZWdhdGl2ZSBzZWVraW5nCiAgICAgICAgICAgaXMgZm9yYmlkZGVuLgogICAgICAgICIiIgogICAgICAgIGlmIHBvcyAtIHNlbGYucG9zID49IDA6CiAgICAgICAgICAgIGJsb2NrcywgcmVtYWluZGVyID0gZGl2bW9kKHBvcyAtIHNlbGYucG9zLCBzZWxmLmJ1ZnNpemUpCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGJsb2Nrcyk6CiAgICAgICAgICAgICAgICBzZWxmLnJlYWQoc2VsZi5idWZzaXplKQogICAgICAgICAgICBzZWxmLnJlYWQocmVtYWluZGVyKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFN0cmVhbUVycm9yKCJzZWVraW5nIGJhY2t3YXJkcyBpcyBub3QgYWxsb3dlZCIpCiAgICAgICAgcmV0dXJuIHNlbGYucG9zCgogICAgZGVmIHJlYWQoc2VsZiwgc2l6ZSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IHNpemUgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHN0cmVhbS4iIiIKICAgICAgICBhc3NlcnQgc2l6ZSBpcyBub3QgTm9uZQogICAgICAgIGJ1ZiA9IHNlbGYuX3JlYWQoc2l6ZSkKICAgICAgICBzZWxmLnBvcyArPSBsZW4oYnVmKQogICAgICAgIHJldHVybiBidWYKCiAgICBkZWYgX3JlYWQoc2VsZiwgc2l6ZSk6CiAgICAgICAgIiIiUmV0dXJuIHNpemUgYnl0ZXMgZnJvbSB0aGUgc3RyZWFtLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuY29tcHR5cGUgPT0gInRhciI6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fcmVhZChzaXplKQoKICAgICAgICBjID0gbGVuKHNlbGYuZGJ1ZikKICAgICAgICB0ID0gW3NlbGYuZGJ1Zl0KICAgICAgICB3aGlsZSBjIDwgc2l6ZToKICAgICAgICAgICAgIyBTa2lwIHVuZGVybHlpbmcgYnVmZmVyIHRvIGF2b2lkIHVuYWxpZ25lZCBkb3VibGUgYnVmZmVyaW5nLgogICAgICAgICAgICBpZiBzZWxmLmJ1ZjoKICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuYnVmCiAgICAgICAgICAgICAgICBzZWxmLmJ1ZiA9IGIiIgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnVmID0gc2VsZi5maWxlb2JqLnJlYWQoc2VsZi5idWZzaXplKQogICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmNtcC5kZWNvbXByZXNzKGJ1ZikKICAgICAgICAgICAgZXhjZXB0IHNlbGYuZXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoImludmFsaWQgY29tcHJlc3NlZCBkYXRhIikgZnJvbSBlCiAgICAgICAgICAgIHQuYXBwZW5kKGJ1ZikKICAgICAgICAgICAgYyArPSBsZW4oYnVmKQogICAgICAgIHQgPSBiIiIuam9pbih0KQogICAgICAgIHNlbGYuZGJ1ZiA9IHRbc2l6ZTpdCiAgICAgICAgcmV0dXJuIHRbOnNpemVdCgogICAgZGVmIF9fcmVhZChzZWxmLCBzaXplKToKICAgICAgICAiIiJSZXR1cm4gc2l6ZSBieXRlcyBmcm9tIHN0cmVhbS4gSWYgaW50ZXJuYWwgYnVmZmVyIGlzIGVtcHR5LAogICAgICAgICAgIHJlYWQgYW5vdGhlciBibG9jayBmcm9tIHRoZSBzdHJlYW0uCiAgICAgICAgIiIiCiAgICAgICAgYyA9IGxlbihzZWxmLmJ1ZikKICAgICAgICB0ID0gW3NlbGYuYnVmXQogICAgICAgIHdoaWxlIGMgPCBzaXplOgogICAgICAgICAgICBidWYgPSBzZWxmLmZpbGVvYmoucmVhZChzZWxmLmJ1ZnNpemUpCiAgICAgICAgICAgIGlmIG5vdCBidWY6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB0LmFwcGVuZChidWYpCiAgICAgICAgICAgIGMgKz0gbGVuKGJ1ZikKICAgICAgICB0ID0gYiIiLmpvaW4odCkKICAgICAgICBzZWxmLmJ1ZiA9IHRbc2l6ZTpdCiAgICAgICAgcmV0dXJuIHRbOnNpemVdCiMgY2xhc3MgX1N0cmVhbQoKY2xhc3MgX1N0cmVhbVByb3h5KG9iamVjdCk6CiAgICAiIiJTbWFsbCBwcm94eSBjbGFzcyB0aGF0IGVuYWJsZXMgdHJhbnNwYXJlbnQgY29tcHJlc3Npb24KICAgICAgIGRldGVjdGlvbiBmb3IgdGhlIFN0cmVhbSBpbnRlcmZhY2UgKG1vZGUgJ3J8KicpLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVvYmopOgogICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKICAgICAgICBzZWxmLmJ1ZiA9IHNlbGYuZmlsZW9iai5yZWFkKEJMT0NLU0laRSkKCiAgICBkZWYgcmVhZChzZWxmLCBzaXplKToKICAgICAgICBzZWxmLnJlYWQgPSBzZWxmLmZpbGVvYmoucmVhZAogICAgICAgIHJldHVybiBzZWxmLmJ1ZgoKICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKICAgICAgICBpZiBzZWxmLmJ1Zi5zdGFydHN3aXRoKGIiXHgxZlx4OGJceDA4Iik6CiAgICAgICAgICAgIHJldHVybiAiZ3oiCiAgICAgICAgZWxpZiBzZWxmLmJ1ZlswOjNdID09IGIiQlpoIiBhbmQgc2VsZi5idWZbNDoxMF0gPT0gYiIxQVkmU1kiOgogICAgICAgICAgICByZXR1cm4gImJ6MiIKICAgICAgICBlbGlmIHNlbGYuYnVmLnN0YXJ0c3dpdGgoKGIiXHg1ZFx4MDBceDAwXHg4MCIsIGIiXHhmZDd6WFoiKSk6CiAgICAgICAgICAgIHJldHVybiAieHoiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICJ0YXIiCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCiMgY2xhc3MgU3RyZWFtUHJveHkKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFeHRyYWN0aW9uIGZpbGUgb2JqZWN0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KY2xhc3MgX0ZpbGVJbkZpbGUob2JqZWN0KToKICAgICIiIkEgdGhpbiB3cmFwcGVyIGFyb3VuZCBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0aGF0CiAgICAgICBwcm92aWRlcyBhIHBhcnQgb2YgaXRzIGRhdGEgYXMgYW4gaW5kaXZpZHVhbCBmaWxlCiAgICAgICBvYmplY3QuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgb2Zmc2V0LCBzaXplLCBibG9ja2luZm89Tm9uZSk6CiAgICAgICAgc2VsZi5maWxlb2JqID0gZmlsZW9iagogICAgICAgIHNlbGYub2Zmc2V0ID0gb2Zmc2V0CiAgICAgICAgc2VsZi5zaXplID0gc2l6ZQogICAgICAgIHNlbGYucG9zaXRpb24gPSAwCiAgICAgICAgc2VsZi5uYW1lID0gZ2V0YXR0cihmaWxlb2JqLCAibmFtZSIsIE5vbmUpCiAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQoKICAgICAgICBpZiBibG9ja2luZm8gaXMgTm9uZToKICAgICAgICAgICAgYmxvY2tpbmZvID0gWygwLCBzaXplKV0KCiAgICAgICAgIyBDb25zdHJ1Y3QgYSBtYXAgd2l0aCBkYXRhIGFuZCB6ZXJvIGJsb2Nrcy4KICAgICAgICBzZWxmLm1hcF9pbmRleCA9IDAKICAgICAgICBzZWxmLm1hcCA9IFtdCiAgICAgICAgbGFzdHBvcyA9IDAKICAgICAgICByZWFscG9zID0gc2VsZi5vZmZzZXQKICAgICAgICBmb3Igb2Zmc2V0LCBzaXplIGluIGJsb2NraW5mbzoKICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGFzdHBvczoKICAgICAgICAgICAgICAgIHNlbGYubWFwLmFwcGVuZCgoRmFsc2UsIGxhc3Rwb3MsIG9mZnNldCwgTm9uZSkpCiAgICAgICAgICAgIHNlbGYubWFwLmFwcGVuZCgoVHJ1ZSwgb2Zmc2V0LCBvZmZzZXQgKyBzaXplLCByZWFscG9zKSkKICAgICAgICAgICAgcmVhbHBvcyArPSBzaXplCiAgICAgICAgICAgIGxhc3Rwb3MgPSBvZmZzZXQgKyBzaXplCiAgICAgICAgaWYgbGFzdHBvcyA8IHNlbGYuc2l6ZToKICAgICAgICAgICAgc2VsZi5tYXAuYXBwZW5kKChGYWxzZSwgbGFzdHBvcywgc2VsZi5zaXplLCBOb25lKSkKCiAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgcGFzcwoKICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiB3cml0YWJsZShzZWxmKToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgc2Vla2FibGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iai5zZWVrYWJsZSgpCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KCiAgICBkZWYgc2VlayhzZWxmLCBwb3NpdGlvbiwgd2hlbmNlPWlvLlNFRUtfU0VUKToKICAgICAgICAiIiJTZWVrIHRvIGEgcG9zaXRpb24gaW4gdGhlIGZpbGUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgd2hlbmNlID09IGlvLlNFRUtfU0VUOgogICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3NpdGlvbiwgMCksIHNlbGYuc2l6ZSkKICAgICAgICBlbGlmIHdoZW5jZSA9PSBpby5TRUVLX0NVUjoKICAgICAgICAgICAgaWYgcG9zaXRpb24gPCAwOgogICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChzZWxmLnBvc2l0aW9uICsgcG9zaXRpb24sIDApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKHNlbGYucG9zaXRpb24gKyBwb3NpdGlvbiwgc2VsZi5zaXplKQogICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfRU5EOgogICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWF4KG1pbihzZWxmLnNpemUgKyBwb3NpdGlvbiwgc2VsZi5zaXplKSwgMCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IikKICAgICAgICByZXR1cm4gc2VsZi5wb3NpdGlvbgoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgIiIiUmVhZCBkYXRhIGZyb20gdGhlIGZpbGUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBzaXplID0gc2VsZi5zaXplIC0gc2VsZi5wb3NpdGlvbgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNpemUgPSBtaW4oc2l6ZSwgc2VsZi5zaXplIC0gc2VsZi5wb3NpdGlvbikKCiAgICAgICAgYnVmID0gYiIiCiAgICAgICAgd2hpbGUgc2l6ZSA+IDA6CiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBkYXRhLCBzdGFydCwgc3RvcCwgb2Zmc2V0ID0gc2VsZi5tYXBbc2VsZi5tYXBfaW5kZXhdCiAgICAgICAgICAgICAgICBpZiBzdGFydCA8PSBzZWxmLnBvc2l0aW9uIDwgc3RvcDoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcF9pbmRleCArPSAxCiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5tYXBfaW5kZXggPT0gbGVuKHNlbGYubWFwKToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXBfaW5kZXggPSAwCiAgICAgICAgICAgIGxlbmd0aCA9IG1pbihzaXplLCBzdG9wIC0gc2VsZi5wb3NpdGlvbikKICAgICAgICAgICAgaWYgZGF0YToKICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKG9mZnNldCArIChzZWxmLnBvc2l0aW9uIC0gc3RhcnQpKQogICAgICAgICAgICAgICAgYiA9IHNlbGYuZmlsZW9iai5yZWFkKGxlbmd0aCkKICAgICAgICAgICAgICAgIGlmIGxlbihiKSAhPSBsZW5ndGg6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIikKICAgICAgICAgICAgICAgIGJ1ZiArPSBiCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBidWYgKz0gTlVMICogbGVuZ3RoCiAgICAgICAgICAgIHNpemUgLT0gbGVuZ3RoCiAgICAgICAgICAgIHNlbGYucG9zaXRpb24gKz0gbGVuZ3RoCiAgICAgICAgcmV0dXJuIGJ1ZgoKICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKICAgICAgICBidWYgPSBzZWxmLnJlYWQobGVuKGIpKQogICAgICAgIGJbOmxlbihidWYpXSA9IGJ1ZgogICAgICAgIHJldHVybiBsZW4oYnVmKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKI2NsYXNzIF9GaWxlSW5GaWxlCgpjbGFzcyBFeEZpbGVPYmplY3QoaW8uQnVmZmVyZWRSZWFkZXIpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJmaWxlLCB0YXJpbmZvKToKICAgICAgICBmaWxlb2JqID0gX0ZpbGVJbkZpbGUodGFyZmlsZS5maWxlb2JqLCB0YXJpbmZvLm9mZnNldF9kYXRhLAogICAgICAgICAgICAgICAgdGFyaW5mby5zaXplLCB0YXJpbmZvLnNwYXJzZSkKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGZpbGVvYmopCiNjbGFzcyBFeEZpbGVPYmplY3QKCiMtLS0tLS0tLS0tLS0tLS0tLS0KIyBFeHBvcnRlZCBDbGFzc2VzCiMtLS0tLS0tLS0tLS0tLS0tLS0KY2xhc3MgVGFySW5mbyhvYmplY3QpOgogICAgIiIiSW5mb3JtYXRpb25hbCBjbGFzcyB3aGljaCBob2xkcyB0aGUgZGV0YWlscyBhYm91dCBhbgogICAgICAgYXJjaGl2ZSBtZW1iZXIgZ2l2ZW4gYnkgYSB0YXIgaGVhZGVyIGJsb2NrLgogICAgICAgVGFySW5mbyBvYmplY3RzIGFyZSByZXR1cm5lZCBieSBUYXJGaWxlLmdldG1lbWJlcigpLAogICAgICAgVGFyRmlsZS5nZXRtZW1iZXJzKCkgYW5kIFRhckZpbGUuZ2V0dGFyaW5mbygpIGFuZCBhcmUKICAgICAgIHVzdWFsbHkgY3JlYXRlZCBpbnRlcm5hbGx5LgogICAgIiIiCgogICAgX19zbG90c19fID0gZGljdCgKICAgICAgICBuYW1lID0gJ05hbWUgb2YgdGhlIGFyY2hpdmUgbWVtYmVyLicsCiAgICAgICAgbW9kZSA9ICdQZXJtaXNzaW9uIGJpdHMuJywKICAgICAgICB1aWQgPSAnVXNlciBJRCBvZiB0aGUgdXNlciB3aG8gb3JpZ2luYWxseSBzdG9yZWQgdGhpcyBtZW1iZXIuJywKICAgICAgICBnaWQgPSAnR3JvdXAgSUQgb2YgdGhlIHVzZXIgd2hvIG9yaWdpbmFsbHkgc3RvcmVkIHRoaXMgbWVtYmVyLicsCiAgICAgICAgc2l6ZSA9ICdTaXplIGluIGJ5dGVzLicsCiAgICAgICAgbXRpbWUgPSAnVGltZSBvZiBsYXN0IG1vZGlmaWNhdGlvbi4nLAogICAgICAgIGNoa3N1bSA9ICdIZWFkZXIgY2hlY2tzdW0uJywKICAgICAgICB0eXBlID0gKCdGaWxlIHR5cGUuIHR5cGUgaXMgdXN1YWxseSBvbmUgb2YgdGhlc2UgY29uc3RhbnRzOiAnCiAgICAgICAgICAgICAgICAnUkVHVFlQRSwgQVJFR1RZUEUsIExOS1RZUEUsIFNZTVRZUEUsIERJUlRZUEUsIEZJRk9UWVBFLCAnCiAgICAgICAgICAgICAgICAnQ09OVFRZUEUsIENIUlRZUEUsIEJMS1RZUEUsIEdOVVRZUEVfU1BBUlNFLicpLAogICAgICAgIGxpbmtuYW1lID0gKCdOYW1lIG9mIHRoZSB0YXJnZXQgZmlsZSBuYW1lLCB3aGljaCBpcyBvbmx5IHByZXNlbnQgJwogICAgICAgICAgICAgICAgICAgICdpbiBUYXJJbmZvIG9iamVjdHMgb2YgdHlwZSBMTktUWVBFIGFuZCBTWU1UWVBFLicpLAogICAgICAgIHVuYW1lID0gJ1VzZXIgbmFtZS4nLAogICAgICAgIGduYW1lID0gJ0dyb3VwIG5hbWUuJywKICAgICAgICBkZXZtYWpvciA9ICdEZXZpY2UgbWFqb3IgbnVtYmVyLicsCiAgICAgICAgZGV2bWlub3IgPSAnRGV2aWNlIG1pbm9yIG51bWJlci4nLAogICAgICAgIG9mZnNldCA9ICdUaGUgdGFyIGhlYWRlciBzdGFydHMgaGVyZS4nLAogICAgICAgIG9mZnNldF9kYXRhID0gIlRoZSBmaWxlJ3MgZGF0YSBzdGFydHMgaGVyZS4iLAogICAgICAgIHBheF9oZWFkZXJzID0gKCdBIGRpY3Rpb25hcnkgY29udGFpbmluZyBrZXktdmFsdWUgcGFpcnMgb2YgYW4gJwogICAgICAgICAgICAgICAgICAgICAgICdhc3NvY2lhdGVkIHBheCBleHRlbmRlZCBoZWFkZXIuJyksCiAgICAgICAgc3BhcnNlID0gJ1NwYXJzZSBtZW1iZXIgaW5mb3JtYXRpb24uJywKICAgICAgICB0YXJmaWxlID0gTm9uZSwKICAgICAgICBfc3BhcnNlX3N0cnVjdHMgPSBOb25lLAogICAgICAgIF9saW5rX3RhcmdldCA9IE5vbmUsCiAgICAgICAgKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPSIiKToKICAgICAgICAiIiJDb25zdHJ1Y3QgYSBUYXJJbmZvIG9iamVjdC4gbmFtZSBpcyB0aGUgb3B0aW9uYWwgbmFtZQogICAgICAgICAgIG9mIHRoZSBtZW1iZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZSAgICAgICAgIyBtZW1iZXIgbmFtZQogICAgICAgIHNlbGYubW9kZSA9IDBvNjQ0ICAgICAgICMgZmlsZSBwZXJtaXNzaW9ucwogICAgICAgIHNlbGYudWlkID0gMCAgICAgICAgICAgICMgdXNlciBpZAogICAgICAgIHNlbGYuZ2lkID0gMCAgICAgICAgICAgICMgZ3JvdXAgaWQKICAgICAgICBzZWxmLnNpemUgPSAwICAgICAgICAgICAjIGZpbGUgc2l6ZQogICAgICAgIHNlbGYubXRpbWUgPSAwICAgICAgICAgICMgbW9kaWZpY2F0aW9uIHRpbWUKICAgICAgICBzZWxmLmNoa3N1bSA9IDAgICAgICAgICAjIGhlYWRlciBjaGVja3N1bQogICAgICAgIHNlbGYudHlwZSA9IFJFR1RZUEUgICAgICMgbWVtYmVyIHR5cGUKICAgICAgICBzZWxmLmxpbmtuYW1lID0gIiIgICAgICAjIGxpbmsgbmFtZQogICAgICAgIHNlbGYudW5hbWUgPSAiIiAgICAgICAgICMgdXNlciBuYW1lCiAgICAgICAgc2VsZi5nbmFtZSA9ICIiICAgICAgICAgIyBncm91cCBuYW1lCiAgICAgICAgc2VsZi5kZXZtYWpvciA9IDAgICAgICAgIyBkZXZpY2UgbWFqb3IgbnVtYmVyCiAgICAgICAgc2VsZi5kZXZtaW5vciA9IDAgICAgICAgIyBkZXZpY2UgbWlub3IgbnVtYmVyCgogICAgICAgIHNlbGYub2Zmc2V0ID0gMCAgICAgICAgICMgdGhlIHRhciBoZWFkZXIgc3RhcnRzIGhlcmUKICAgICAgICBzZWxmLm9mZnNldF9kYXRhID0gMCAgICAjIHRoZSBmaWxlJ3MgZGF0YSBzdGFydHMgaGVyZQoKICAgICAgICBzZWxmLnNwYXJzZSA9IE5vbmUgICAgICAjIHNwYXJzZSBtZW1iZXIgaW5mb3JtYXRpb24KICAgICAgICBzZWxmLnBheF9oZWFkZXJzID0ge30gICAjIHBheCBoZWFkZXIgaW5mb3JtYXRpb24KCiAgICBAcHJvcGVydHkKICAgIGRlZiBwYXRoKHNlbGYpOgogICAgICAgICdJbiBwYXggaGVhZGVycywgIm5hbWUiIGlzIGNhbGxlZCAicGF0aCIuJwogICAgICAgIHJldHVybiBzZWxmLm5hbWUKCiAgICBAcGF0aC5zZXR0ZXIKICAgIGRlZiBwYXRoKHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBsaW5rcGF0aChzZWxmKToKICAgICAgICAnSW4gcGF4IGhlYWRlcnMsICJsaW5rbmFtZSIgaXMgY2FsbGVkICJsaW5rcGF0aCIuJwogICAgICAgIHJldHVybiBzZWxmLmxpbmtuYW1lCgogICAgQGxpbmtwYXRoLnNldHRlcgogICAgZGVmIGxpbmtwYXRoKHNlbGYsIGxpbmtuYW1lKToKICAgICAgICBzZWxmLmxpbmtuYW1lID0gbGlua25hbWUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8JXMgJXIgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sc2VsZi5uYW1lLGlkKHNlbGYpKQoKICAgIGRlZiBnZXRfaW5mbyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIFRhckluZm8ncyBhdHRyaWJ1dGVzIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAiIiIKICAgICAgICBpbmZvID0gewogICAgICAgICAgICAibmFtZSI6ICAgICBzZWxmLm5hbWUsCiAgICAgICAgICAgICJtb2RlIjogICAgIHNlbGYubW9kZSAmIDBvNzc3NywKICAgICAgICAgICAgInVpZCI6ICAgICAgc2VsZi51aWQsCiAgICAgICAgICAgICJnaWQiOiAgICAgIHNlbGYuZ2lkLAogICAgICAgICAgICAic2l6ZSI6ICAgICBzZWxmLnNpemUsCiAgICAgICAgICAgICJtdGltZSI6ICAgIHNlbGYubXRpbWUsCiAgICAgICAgICAgICJjaGtzdW0iOiAgIHNlbGYuY2hrc3VtLAogICAgICAgICAgICAidHlwZSI6ICAgICBzZWxmLnR5cGUsCiAgICAgICAgICAgICJsaW5rbmFtZSI6IHNlbGYubGlua25hbWUsCiAgICAgICAgICAgICJ1bmFtZSI6ICAgIHNlbGYudW5hbWUsCiAgICAgICAgICAgICJnbmFtZSI6ICAgIHNlbGYuZ25hbWUsCiAgICAgICAgICAgICJkZXZtYWpvciI6IHNlbGYuZGV2bWFqb3IsCiAgICAgICAgICAgICJkZXZtaW5vciI6IHNlbGYuZGV2bWlub3IKICAgICAgICB9CgogICAgICAgIGlmIGluZm9bInR5cGUiXSA9PSBESVJUWVBFIGFuZCBub3QgaW5mb1sibmFtZSJdLmVuZHN3aXRoKCIvIik6CiAgICAgICAgICAgIGluZm9bIm5hbWUiXSArPSAiLyIKCiAgICAgICAgcmV0dXJuIGluZm8KCiAgICBkZWYgdG9idWYoc2VsZiwgZm9ybWF0PURFRkFVTFRfRk9STUFULCBlbmNvZGluZz1FTkNPRElORywgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKToKICAgICAgICAiIiJSZXR1cm4gYSB0YXIgaGVhZGVyIGFzIGEgc3RyaW5nIG9mIDUxMiBieXRlIGJsb2Nrcy4KICAgICAgICAiIiIKICAgICAgICBpbmZvID0gc2VsZi5nZXRfaW5mbygpCgogICAgICAgIGlmIGZvcm1hdCA9PSBVU1RBUl9GT1JNQVQ6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZV91c3Rhcl9oZWFkZXIoaW5mbywgZW5jb2RpbmcsIGVycm9ycykKICAgICAgICBlbGlmIGZvcm1hdCA9PSBHTlVfRk9STUFUOgogICAgICAgICAgICByZXR1cm4gc2VsZi5jcmVhdGVfZ251X2hlYWRlcihpbmZvLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgIGVsaWYgZm9ybWF0ID09IFBBWF9GT1JNQVQ6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZV9wYXhfaGVhZGVyKGluZm8sIGVuY29kaW5nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgZm9ybWF0IikKCiAgICBkZWYgY3JlYXRlX3VzdGFyX2hlYWRlcihzZWxmLCBpbmZvLCBlbmNvZGluZywgZXJyb3JzKToKICAgICAgICAiIiJSZXR1cm4gdGhlIG9iamVjdCBhcyBhIHVzdGFyIGhlYWRlciBibG9jay4KICAgICAgICAiIiIKICAgICAgICBpbmZvWyJtYWdpYyJdID0gUE9TSVhfTUFHSUMKCiAgICAgICAgaWYgbGVuKGluZm9bImxpbmtuYW1lIl0uZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpKSA+IExFTkdUSF9MSU5LOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJsaW5rbmFtZSBpcyB0b28gbG9uZyIpCgogICAgICAgIGlmIGxlbihpbmZvWyJuYW1lIl0uZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpKSA+IExFTkdUSF9OQU1FOgogICAgICAgICAgICBpbmZvWyJwcmVmaXgiXSwgaW5mb1sibmFtZSJdID0gc2VsZi5fcG9zaXhfc3BsaXRfbmFtZShpbmZvWyJuYW1lIl0sIGVuY29kaW5nLCBlcnJvcnMpCgogICAgICAgIHJldHVybiBzZWxmLl9jcmVhdGVfaGVhZGVyKGluZm8sIFVTVEFSX0ZPUk1BVCwgZW5jb2RpbmcsIGVycm9ycykKCiAgICBkZWYgY3JlYXRlX2dudV9oZWFkZXIoc2VsZiwgaW5mbywgZW5jb2RpbmcsIGVycm9ycyk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBvYmplY3QgYXMgYSBHTlUgaGVhZGVyIGJsb2NrIHNlcXVlbmNlLgogICAgICAgICIiIgogICAgICAgIGluZm9bIm1hZ2ljIl0gPSBHTlVfTUFHSUMKCiAgICAgICAgYnVmID0gYiIiCiAgICAgICAgaWYgbGVuKGluZm9bImxpbmtuYW1lIl0uZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpKSA+IExFTkdUSF9MSU5LOgogICAgICAgICAgICBidWYgKz0gc2VsZi5fY3JlYXRlX2dudV9sb25nX2hlYWRlcihpbmZvWyJsaW5rbmFtZSJdLCBHTlVUWVBFX0xPTkdMSU5LLCBlbmNvZGluZywgZXJyb3JzKQoKICAgICAgICBpZiBsZW4oaW5mb1sibmFtZSJdLmVuY29kZShlbmNvZGluZywgZXJyb3JzKSkgPiBMRU5HVEhfTkFNRToKICAgICAgICAgICAgYnVmICs9IHNlbGYuX2NyZWF0ZV9nbnVfbG9uZ19oZWFkZXIoaW5mb1sibmFtZSJdLCBHTlVUWVBFX0xPTkdOQU1FLCBlbmNvZGluZywgZXJyb3JzKQoKICAgICAgICByZXR1cm4gYnVmICsgc2VsZi5fY3JlYXRlX2hlYWRlcihpbmZvLCBHTlVfRk9STUFULCBlbmNvZGluZywgZXJyb3JzKQoKICAgIGRlZiBjcmVhdGVfcGF4X2hlYWRlcihzZWxmLCBpbmZvLCBlbmNvZGluZyk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBvYmplY3QgYXMgYSB1c3RhciBoZWFkZXIgYmxvY2suIElmIGl0IGNhbm5vdCBiZQogICAgICAgICAgIHJlcHJlc2VudGVkIHRoaXMgd2F5LCBwcmVwZW5kIGEgcGF4IGV4dGVuZGVkIGhlYWRlciBzZXF1ZW5jZQogICAgICAgICAgIHdpdGggc3VwcGxlbWVudCBpbmZvcm1hdGlvbi4KICAgICAgICAiIiIKICAgICAgICBpbmZvWyJtYWdpYyJdID0gUE9TSVhfTUFHSUMKICAgICAgICBwYXhfaGVhZGVycyA9IHNlbGYucGF4X2hlYWRlcnMuY29weSgpCgogICAgICAgICMgVGVzdCBzdHJpbmcgZmllbGRzIGZvciB2YWx1ZXMgdGhhdCBleGNlZWQgdGhlIGZpZWxkIGxlbmd0aCBvciBjYW5ub3QKICAgICAgICAjIGJlIHJlcHJlc2VudGVkIGluIEFTQ0lJIGVuY29kaW5nLgogICAgICAgIGZvciBuYW1lLCBobmFtZSwgbGVuZ3RoIGluICgKICAgICAgICAgICAgICAgICgibmFtZSIsICJwYXRoIiwgTEVOR1RIX05BTUUpLCAoImxpbmtuYW1lIiwgImxpbmtwYXRoIiwgTEVOR1RIX0xJTkspLAogICAgICAgICAgICAgICAgKCJ1bmFtZSIsICJ1bmFtZSIsIDMyKSwgKCJnbmFtZSIsICJnbmFtZSIsIDMyKSk6CgogICAgICAgICAgICBpZiBobmFtZSBpbiBwYXhfaGVhZGVyczoKICAgICAgICAgICAgICAgICMgVGhlIHBheCBoZWFkZXIgaGFzIHByaW9yaXR5LgogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICMgVHJ5IHRvIGVuY29kZSB0aGUgc3RyaW5nIGFzIEFTQ0lJLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpbmZvW25hbWVdLmVuY29kZSgiYXNjaWkiLCAic3RyaWN0IikKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgIHBheF9oZWFkZXJzW2huYW1lXSA9IGluZm9bbmFtZV0KICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiBsZW4oaW5mb1tuYW1lXSkgPiBsZW5ndGg6CiAgICAgICAgICAgICAgICBwYXhfaGVhZGVyc1tobmFtZV0gPSBpbmZvW25hbWVdCgogICAgICAgICMgVGVzdCBudW1iZXIgZmllbGRzIGZvciB2YWx1ZXMgdGhhdCBleGNlZWQgdGhlIGZpZWxkIGxpbWl0IG9yIHZhbHVlcwogICAgICAgICMgdGhhdCBsaWtlIHRvIGJlIHN0b3JlZCBhcyBmbG9hdC4KICAgICAgICBmb3IgbmFtZSwgZGlnaXRzIGluICgoInVpZCIsIDgpLCAoImdpZCIsIDgpLCAoInNpemUiLCAxMiksICgibXRpbWUiLCAxMikpOgogICAgICAgICAgICBuZWVkc19wYXggPSBGYWxzZQoKICAgICAgICAgICAgdmFsID0gaW5mb1tuYW1lXQogICAgICAgICAgICB2YWxfaXNfZmxvYXQgPSBpc2luc3RhbmNlKHZhbCwgZmxvYXQpCiAgICAgICAgICAgIHZhbF9pbnQgPSByb3VuZCh2YWwpIGlmIHZhbF9pc19mbG9hdCBlbHNlIHZhbAogICAgICAgICAgICBpZiBub3QgMCA8PSB2YWxfaW50IDwgOCAqKiAoZGlnaXRzIC0gMSk6CiAgICAgICAgICAgICAgICAjIEF2b2lkIG92ZXJmbG93LgogICAgICAgICAgICAgICAgaW5mb1tuYW1lXSA9IDAKICAgICAgICAgICAgICAgIG5lZWRzX3BheCA9IFRydWUKICAgICAgICAgICAgZWxpZiB2YWxfaXNfZmxvYXQ6CiAgICAgICAgICAgICAgICAjIFB1dCByb3VuZGVkIHZhbHVlIGluIHVzdGFyIGhlYWRlciwgYW5kIGZ1bGwKICAgICAgICAgICAgICAgICMgcHJlY2lzaW9uIHZhbHVlIGluIHBheCBoZWFkZXIuCiAgICAgICAgICAgICAgICBpbmZvW25hbWVdID0gdmFsX2ludAogICAgICAgICAgICAgICAgbmVlZHNfcGF4ID0gVHJ1ZQoKICAgICAgICAgICAgIyBUaGUgZXhpc3RpbmcgcGF4IGhlYWRlciBoYXMgcHJpb3JpdHkuCiAgICAgICAgICAgIGlmIG5lZWRzX3BheCBhbmQgbmFtZSBub3QgaW4gcGF4X2hlYWRlcnM6CiAgICAgICAgICAgICAgICBwYXhfaGVhZGVyc1tuYW1lXSA9IHN0cih2YWwpCgogICAgICAgICMgQ3JlYXRlIGEgcGF4IGV4dGVuZGVkIGhlYWRlciBpZiBuZWNlc3NhcnkuCiAgICAgICAgaWYgcGF4X2hlYWRlcnM6CiAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX2NyZWF0ZV9wYXhfZ2VuZXJpY19oZWFkZXIocGF4X2hlYWRlcnMsIFhIRFRZUEUsIGVuY29kaW5nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJ1ZiA9IGIiIgoKICAgICAgICByZXR1cm4gYnVmICsgc2VsZi5fY3JlYXRlX2hlYWRlcihpbmZvLCBVU1RBUl9GT1JNQVQsICJhc2NpaSIsICJyZXBsYWNlIikKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBjcmVhdGVfcGF4X2dsb2JhbF9oZWFkZXIoY2xzLCBwYXhfaGVhZGVycyk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBvYmplY3QgYXMgYSBwYXggZ2xvYmFsIGhlYWRlciBibG9jayBzZXF1ZW5jZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gY2xzLl9jcmVhdGVfcGF4X2dlbmVyaWNfaGVhZGVyKHBheF9oZWFkZXJzLCBYR0xUWVBFLCAidXRmLTgiKQoKICAgIGRlZiBfcG9zaXhfc3BsaXRfbmFtZShzZWxmLCBuYW1lLCBlbmNvZGluZywgZXJyb3JzKToKICAgICAgICAiIiJTcGxpdCBhIG5hbWUgbG9uZ2VyIHRoYW4gMTAwIGNoYXJzIGludG8gYSBwcmVmaXgKICAgICAgICAgICBhbmQgYSBuYW1lIHBhcnQuCiAgICAgICAgIiIiCiAgICAgICAgY29tcG9uZW50cyA9IG5hbWUuc3BsaXQoIi8iKQogICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbihjb21wb25lbnRzKSk6CiAgICAgICAgICAgIHByZWZpeCA9ICIvIi5qb2luKGNvbXBvbmVudHNbOmldKQogICAgICAgICAgICBuYW1lID0gIi8iLmpvaW4oY29tcG9uZW50c1tpOl0pCiAgICAgICAgICAgIGlmIGxlbihwcmVmaXguZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpKSA8PSBMRU5HVEhfUFJFRklYIGFuZCBcCiAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUuZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpKSA8PSBMRU5HVEhfTkFNRToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmFtZSBpcyB0b28gbG9uZyIpCgogICAgICAgIHJldHVybiBwcmVmaXgsIG5hbWUKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2NyZWF0ZV9oZWFkZXIoaW5mbywgZm9ybWF0LCBlbmNvZGluZywgZXJyb3JzKToKICAgICAgICAiIiJSZXR1cm4gYSBoZWFkZXIgYmxvY2suIGluZm8gaXMgYSBkaWN0aW9uYXJ5IHdpdGggZmlsZQogICAgICAgICAgIGluZm9ybWF0aW9uLCBmb3JtYXQgbXVzdCBiZSBvbmUgb2YgdGhlICpfRk9STUFUIGNvbnN0YW50cy4KICAgICAgICAiIiIKICAgICAgICBoYXNfZGV2aWNlX2ZpZWxkcyA9IGluZm8uZ2V0KCJ0eXBlIikgaW4gKENIUlRZUEUsIEJMS1RZUEUpCiAgICAgICAgaWYgaGFzX2RldmljZV9maWVsZHM6CiAgICAgICAgICAgIGRldm1ham9yID0gaXRuKGluZm8uZ2V0KCJkZXZtYWpvciIsIDApLCA4LCBmb3JtYXQpCiAgICAgICAgICAgIGRldm1pbm9yID0gaXRuKGluZm8uZ2V0KCJkZXZtaW5vciIsIDApLCA4LCBmb3JtYXQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGV2bWFqb3IgPSBzdG4oIiIsIDgsIGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgICAgIGRldm1pbm9yID0gc3RuKCIiLCA4LCBlbmNvZGluZywgZXJyb3JzKQoKICAgICAgICBwYXJ0cyA9IFsKICAgICAgICAgICAgc3RuKGluZm8uZ2V0KCJuYW1lIiwgIiIpLCAxMDAsIGVuY29kaW5nLCBlcnJvcnMpLAogICAgICAgICAgICBpdG4oaW5mby5nZXQoIm1vZGUiLCAwKSAmIDBvNzc3NywgOCwgZm9ybWF0KSwKICAgICAgICAgICAgaXRuKGluZm8uZ2V0KCJ1aWQiLCAwKSwgOCwgZm9ybWF0KSwKICAgICAgICAgICAgaXRuKGluZm8uZ2V0KCJnaWQiLCAwKSwgOCwgZm9ybWF0KSwKICAgICAgICAgICAgaXRuKGluZm8uZ2V0KCJzaXplIiwgMCksIDEyLCBmb3JtYXQpLAogICAgICAgICAgICBpdG4oaW5mby5nZXQoIm10aW1lIiwgMCksIDEyLCBmb3JtYXQpLAogICAgICAgICAgICBiIiAgICAgICAgIiwgIyBjaGVja3N1bSBmaWVsZAogICAgICAgICAgICBpbmZvLmdldCgidHlwZSIsIFJFR1RZUEUpLAogICAgICAgICAgICBzdG4oaW5mby5nZXQoImxpbmtuYW1lIiwgIiIpLCAxMDAsIGVuY29kaW5nLCBlcnJvcnMpLAogICAgICAgICAgICBpbmZvLmdldCgibWFnaWMiLCBQT1NJWF9NQUdJQyksCiAgICAgICAgICAgIHN0bihpbmZvLmdldCgidW5hbWUiLCAiIiksIDMyLCBlbmNvZGluZywgZXJyb3JzKSwKICAgICAgICAgICAgc3RuKGluZm8uZ2V0KCJnbmFtZSIsICIiKSwgMzIsIGVuY29kaW5nLCBlcnJvcnMpLAogICAgICAgICAgICBkZXZtYWpvciwKICAgICAgICAgICAgZGV2bWlub3IsCiAgICAgICAgICAgIHN0bihpbmZvLmdldCgicHJlZml4IiwgIiIpLCAxNTUsIGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgXQoKICAgICAgICBidWYgPSBzdHJ1Y3QucGFjaygiJWRzIiAlIEJMT0NLU0laRSwgYiIiLmpvaW4ocGFydHMpKQogICAgICAgIGNoa3N1bSA9IGNhbGNfY2hrc3VtcyhidWZbLUJMT0NLU0laRTpdKVswXQogICAgICAgIGJ1ZiA9IGJ1Zls6LTM2NF0gKyBieXRlcygiJTA2b1wwIiAlIGNoa3N1bSwgImFzY2lpIikgKyBidWZbLTM1NzpdCiAgICAgICAgcmV0dXJuIGJ1ZgoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfY3JlYXRlX3BheWxvYWQocGF5bG9hZCk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBzdHJpbmcgcGF5bG9hZCBmaWxsZWQgd2l0aCB6ZXJvIGJ5dGVzCiAgICAgICAgICAgdXAgdG8gdGhlIG5leHQgNTEyIGJ5dGUgYm9yZGVyLgogICAgICAgICIiIgogICAgICAgIGJsb2NrcywgcmVtYWluZGVyID0gZGl2bW9kKGxlbihwYXlsb2FkKSwgQkxPQ0tTSVpFKQogICAgICAgIGlmIHJlbWFpbmRlciA+IDA6CiAgICAgICAgICAgIHBheWxvYWQgKz0gKEJMT0NLU0laRSAtIHJlbWFpbmRlcikgKiBOVUwKICAgICAgICByZXR1cm4gcGF5bG9hZAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9jcmVhdGVfZ251X2xvbmdfaGVhZGVyKGNscywgbmFtZSwgdHlwZSwgZW5jb2RpbmcsIGVycm9ycyk6CiAgICAgICAgIiIiUmV0dXJuIGEgR05VVFlQRV9MT05HTkFNRSBvciBHTlVUWVBFX0xPTkdMSU5LIHNlcXVlbmNlCiAgICAgICAgICAgZm9yIG5hbWUuCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9IG5hbWUuZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpICsgTlVMCgogICAgICAgIGluZm8gPSB7fQogICAgICAgIGluZm9bIm5hbWUiXSA9ICIuLy4vQExvbmdMaW5rIgogICAgICAgIGluZm9bInR5cGUiXSA9IHR5cGUKICAgICAgICBpbmZvWyJzaXplIl0gPSBsZW4obmFtZSkKICAgICAgICBpbmZvWyJtYWdpYyJdID0gR05VX01BR0lDCgogICAgICAgICMgY3JlYXRlIGV4dGVuZGVkIGhlYWRlciArIG5hbWUgYmxvY2tzLgogICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZV9oZWFkZXIoaW5mbywgVVNUQVJfRk9STUFULCBlbmNvZGluZywgZXJyb3JzKSArIFwKICAgICAgICAgICAgICAgIGNscy5fY3JlYXRlX3BheWxvYWQobmFtZSkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfY3JlYXRlX3BheF9nZW5lcmljX2hlYWRlcihjbHMsIHBheF9oZWFkZXJzLCB0eXBlLCBlbmNvZGluZyk6CiAgICAgICAgIiIiUmV0dXJuIGEgUE9TSVguMS0yMDA4IGV4dGVuZGVkIG9yIGdsb2JhbCBoZWFkZXIgc2VxdWVuY2UKICAgICAgICAgICB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBrZXl3b3JkLCB2YWx1ZSBwYWlycy4gVGhlIHZhbHVlcwogICAgICAgICAgIG11c3QgYmUgc3RyaW5ncy4KICAgICAgICAiIiIKICAgICAgICAjIENoZWNrIGlmIG9uZSBvZiB0aGUgZmllbGRzIGNvbnRhaW5zIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCB0aGVyZWJ5CiAgICAgICAgIyBmb3JjZXMgaGRyY2hhcnNldD1CSU5BUlksIHNlZSBfcHJvY19wYXgoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICBiaW5hcnkgPSBGYWxzZQogICAgICAgIGZvciBrZXl3b3JkLCB2YWx1ZSBpbiBwYXhfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB2YWx1ZS5lbmNvZGUoInV0Zi04IiwgInN0cmljdCIpCiAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICBiaW5hcnkgPSBUcnVlCiAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICByZWNvcmRzID0gYiIiCiAgICAgICAgaWYgYmluYXJ5OgogICAgICAgICAgICAjIFB1dCB0aGUgaGRyY2hhcnNldCBmaWVsZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBoZWFkZXIuCiAgICAgICAgICAgIHJlY29yZHMgKz0gYiIyMSBoZHJjaGFyc2V0PUJJTkFSWVxuIgoKICAgICAgICBmb3Iga2V5d29yZCwgdmFsdWUgaW4gcGF4X2hlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAga2V5d29yZCA9IGtleXdvcmQuZW5jb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgIGlmIGJpbmFyeToKICAgICAgICAgICAgICAgICMgVHJ5IHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJ5dGUgcmVwcmVzZW50YXRpb24gb2YgYHZhbHVlJy4KICAgICAgICAgICAgICAgICMgTmVlZGxlc3MgdG8gc2F5LCB0aGF0IHRoZSBlbmNvZGluZyBtdXN0IG1hdGNoIHRoZSBzdHJpbmcuCiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZShlbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZSgidXRmLTgiKQoKICAgICAgICAgICAgbCA9IGxlbihrZXl3b3JkKSArIGxlbih2YWx1ZSkgKyAzICAgIyAnICcgKyAnPScgKyAnXG4nCiAgICAgICAgICAgIG4gPSBwID0gMAogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgbiA9IGwgKyBsZW4oc3RyKHApKQogICAgICAgICAgICAgICAgaWYgbiA9PSBwOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBwID0gbgogICAgICAgICAgICByZWNvcmRzICs9IGJ5dGVzKHN0cihwKSwgImFzY2lpIikgKyBiIiAiICsga2V5d29yZCArIGIiPSIgKyB2YWx1ZSArIGIiXG4iCgogICAgICAgICMgV2UgdXNlIGEgaGFyZGNvZGVkICIuLy4vQFBheEhlYWRlciIgbmFtZSBsaWtlIHN0YXIgZG9lcwogICAgICAgICMgaW5zdGVhZCBvZiB0aGUgb25lIHRoYXQgUE9TSVggcmVjb21tZW5kcy4KICAgICAgICBpbmZvID0ge30KICAgICAgICBpbmZvWyJuYW1lIl0gPSAiLi8uL0BQYXhIZWFkZXIiCiAgICAgICAgaW5mb1sidHlwZSJdID0gdHlwZQogICAgICAgIGluZm9bInNpemUiXSA9IGxlbihyZWNvcmRzKQogICAgICAgIGluZm9bIm1hZ2ljIl0gPSBQT1NJWF9NQUdJQwoKICAgICAgICAjIENyZWF0ZSBwYXggaGVhZGVyICsgcmVjb3JkIGJsb2Nrcy4KICAgICAgICByZXR1cm4gY2xzLl9jcmVhdGVfaGVhZGVyKGluZm8sIFVTVEFSX0ZPUk1BVCwgImFzY2lpIiwgInJlcGxhY2UiKSArIFwKICAgICAgICAgICAgICAgIGNscy5fY3JlYXRlX3BheWxvYWQocmVjb3JkcykKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tYnVmKGNscywgYnVmLCBlbmNvZGluZywgZXJyb3JzKToKICAgICAgICAiIiJDb25zdHJ1Y3QgYSBUYXJJbmZvIG9iamVjdCBmcm9tIGEgNTEyIGJ5dGUgYnl0ZXMgb2JqZWN0LgogICAgICAgICIiIgogICAgICAgIGlmIGxlbihidWYpID09IDA6CiAgICAgICAgICAgIHJhaXNlIEVtcHR5SGVhZGVyRXJyb3IoImVtcHR5IGhlYWRlciIpCiAgICAgICAgaWYgbGVuKGJ1ZikgIT0gQkxPQ0tTSVpFOgogICAgICAgICAgICByYWlzZSBUcnVuY2F0ZWRIZWFkZXJFcnJvcigidHJ1bmNhdGVkIGhlYWRlciIpCiAgICAgICAgaWYgYnVmLmNvdW50KE5VTCkgPT0gQkxPQ0tTSVpFOgogICAgICAgICAgICByYWlzZSBFT0ZIZWFkZXJFcnJvcigiZW5kIG9mIGZpbGUgaGVhZGVyIikKCiAgICAgICAgY2hrc3VtID0gbnRpKGJ1ZlsxNDg6MTU2XSkKICAgICAgICBpZiBjaGtzdW0gbm90IGluIGNhbGNfY2hrc3VtcyhidWYpOgogICAgICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRXJyb3IoImJhZCBjaGVja3N1bSIpCgogICAgICAgIG9iaiA9IGNscygpCiAgICAgICAgb2JqLm5hbWUgPSBudHMoYnVmWzA6MTAwXSwgZW5jb2RpbmcsIGVycm9ycykKICAgICAgICBvYmoubW9kZSA9IG50aShidWZbMTAwOjEwOF0pCiAgICAgICAgb2JqLnVpZCA9IG50aShidWZbMTA4OjExNl0pCiAgICAgICAgb2JqLmdpZCA9IG50aShidWZbMTE2OjEyNF0pCiAgICAgICAgb2JqLnNpemUgPSBudGkoYnVmWzEyNDoxMzZdKQogICAgICAgIG9iai5tdGltZSA9IG50aShidWZbMTM2OjE0OF0pCiAgICAgICAgb2JqLmNoa3N1bSA9IGNoa3N1bQogICAgICAgIG9iai50eXBlID0gYnVmWzE1NjoxNTddCiAgICAgICAgb2JqLmxpbmtuYW1lID0gbnRzKGJ1ZlsxNTc6MjU3XSwgZW5jb2RpbmcsIGVycm9ycykKICAgICAgICBvYmoudW5hbWUgPSBudHMoYnVmWzI2NToyOTddLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgIG9iai5nbmFtZSA9IG50cyhidWZbMjk3OjMyOV0sIGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgb2JqLmRldm1ham9yID0gbnRpKGJ1ZlszMjk6MzM3XSkKICAgICAgICBvYmouZGV2bWlub3IgPSBudGkoYnVmWzMzNzozNDVdKQogICAgICAgIHByZWZpeCA9IG50cyhidWZbMzQ1OjUwMF0sIGVuY29kaW5nLCBlcnJvcnMpCgogICAgICAgICMgT2xkIFY3IHRhciBmb3JtYXQgcmVwcmVzZW50cyBhIGRpcmVjdG9yeSBhcyBhIHJlZ3VsYXIKICAgICAgICAjIGZpbGUgd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgogICAgICAgIGlmIG9iai50eXBlID09IEFSRUdUWVBFIGFuZCBvYmoubmFtZS5lbmRzd2l0aCgiLyIpOgogICAgICAgICAgICBvYmoudHlwZSA9IERJUlRZUEUKCiAgICAgICAgIyBUaGUgb2xkIEdOVSBzcGFyc2UgZm9ybWF0IG9jY3VwaWVzIHNvbWUgb2YgdGhlIHVudXNlZAogICAgICAgICMgc3BhY2UgaW4gdGhlIGJ1ZmZlciBmb3IgdXAgdG8gNCBzcGFyc2Ugc3RydWN0dXJlcy4KICAgICAgICAjIFNhdmUgdGhlbSBmb3IgbGF0ZXIgcHJvY2Vzc2luZyBpbiBfcHJvY19zcGFyc2UoKS4KICAgICAgICBpZiBvYmoudHlwZSA9PSBHTlVUWVBFX1NQQVJTRToKICAgICAgICAgICAgcG9zID0gMzg2CiAgICAgICAgICAgIHN0cnVjdHMgPSBbXQogICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBudGkoYnVmW3Bvczpwb3MgKyAxMl0pCiAgICAgICAgICAgICAgICAgICAgbnVtYnl0ZXMgPSBudGkoYnVmW3BvcyArIDEyOnBvcyArIDI0XSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBzdHJ1Y3RzLmFwcGVuZCgob2Zmc2V0LCBudW1ieXRlcykpCiAgICAgICAgICAgICAgICBwb3MgKz0gMjQKICAgICAgICAgICAgaXNleHRlbmRlZCA9IGJvb2woYnVmWzQ4Ml0pCiAgICAgICAgICAgIG9yaWdzaXplID0gbnRpKGJ1Zls0ODM6NDk1XSkKICAgICAgICAgICAgb2JqLl9zcGFyc2Vfc3RydWN0cyA9IChzdHJ1Y3RzLCBpc2V4dGVuZGVkLCBvcmlnc2l6ZSkKCiAgICAgICAgIyBSZW1vdmUgcmVkdW5kYW50IHNsYXNoZXMgZnJvbSBkaXJlY3Rvcmllcy4KICAgICAgICBpZiBvYmouaXNkaXIoKToKICAgICAgICAgICAgb2JqLm5hbWUgPSBvYmoubmFtZS5yc3RyaXAoIi8iKQoKICAgICAgICAjIFJlY29uc3RydWN0IGEgdXN0YXIgbG9uZ25hbWUuCiAgICAgICAgaWYgcHJlZml4IGFuZCBvYmoudHlwZSBub3QgaW4gR05VX1RZUEVTOgogICAgICAgICAgICBvYmoubmFtZSA9IHByZWZpeCArICIvIiArIG9iai5uYW1lCiAgICAgICAgcmV0dXJuIG9iagoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGZyb210YXJmaWxlKGNscywgdGFyZmlsZSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IFRhckluZm8gb2JqZWN0IGZyb20gVGFyRmlsZSBvYmplY3QKICAgICAgICAgICB0YXJmaWxlLgogICAgICAgICIiIgogICAgICAgIGJ1ZiA9IHRhcmZpbGUuZmlsZW9iai5yZWFkKEJMT0NLU0laRSkKICAgICAgICBvYmogPSBjbHMuZnJvbWJ1ZihidWYsIHRhcmZpbGUuZW5jb2RpbmcsIHRhcmZpbGUuZXJyb3JzKQogICAgICAgIG9iai5vZmZzZXQgPSB0YXJmaWxlLmZpbGVvYmoudGVsbCgpIC0gQkxPQ0tTSVpFCiAgICAgICAgcmV0dXJuIG9iai5fcHJvY19tZW1iZXIodGFyZmlsZSkKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgVGhlIGZvbGxvd2luZyBhcmUgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWQgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGEKICAgICMgbWVtYmVyLiBUaGUgZW50cnkgcG9pbnQgaXMgX3Byb2NfbWVtYmVyKCkgd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gaW4gYQogICAgIyBzdWJjbGFzcyB0byBhZGQgY3VzdG9tIF9wcm9jXyooKSBtZXRob2RzLiBBIF9wcm9jXyooKSBtZXRob2QgTVVTVAogICAgIyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZwogICAgIyBvcGVyYXRpb25zOgogICAgIyAxLiBTZXQgc2VsZi5vZmZzZXRfZGF0YSB0byB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIGRhdGEgYmxvY2tzIGJlZ2luLAogICAgIyAgICBpZiB0aGVyZSBpcyBkYXRhIHRoYXQgZm9sbG93cy4KICAgICMgMi4gU2V0IHRhcmZpbGUub2Zmc2V0IHRvIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgbmV4dCBtZW1iZXIncyBoZWFkZXIgd2lsbAogICAgIyAgICBiZWdpbi4KICAgICMgMy4gUmV0dXJuIHNlbGYgb3IgYW5vdGhlciB2YWxpZCBUYXJJbmZvIG9iamVjdC4KICAgIGRlZiBfcHJvY19tZW1iZXIoc2VsZiwgdGFyZmlsZSk6CiAgICAgICAgIiIiQ2hvb3NlIHRoZSByaWdodCBwcm9jZXNzaW5nIG1ldGhvZCBkZXBlbmRpbmcgb24KICAgICAgICAgICB0aGUgdHlwZSBhbmQgY2FsbCBpdC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLnR5cGUgaW4gKEdOVVRZUEVfTE9OR05BTUUsIEdOVVRZUEVfTE9OR0xJTkspOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvY19nbnVsb25nKHRhcmZpbGUpCiAgICAgICAgZWxpZiBzZWxmLnR5cGUgPT0gR05VVFlQRV9TUEFSU0U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jX3NwYXJzZSh0YXJmaWxlKQogICAgICAgIGVsaWYgc2VsZi50eXBlIGluIChYSERUWVBFLCBYR0xUWVBFLCBTT0xBUklTX1hIRFRZUEUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvY19wYXgodGFyZmlsZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJvY19idWlsdGluKHRhcmZpbGUpCgogICAgZGVmIF9wcm9jX2J1aWx0aW4oc2VsZiwgdGFyZmlsZSk6CiAgICAgICAgIiIiUHJvY2VzcyBhIGJ1aWx0aW4gdHlwZSBvciBhbiB1bmtub3duIHR5cGUgd2hpY2gKICAgICAgICAgICB3aWxsIGJlIHRyZWF0ZWQgYXMgYSByZWd1bGFyIGZpbGUuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5vZmZzZXRfZGF0YSA9IHRhcmZpbGUuZmlsZW9iai50ZWxsKCkKICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldF9kYXRhCiAgICAgICAgaWYgc2VsZi5pc3JlZygpIG9yIHNlbGYudHlwZSBub3QgaW4gU1VQUE9SVEVEX1RZUEVTOgogICAgICAgICAgICAjIFNraXAgdGhlIGZvbGxvd2luZyBkYXRhIGJsb2Nrcy4KICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbGYuX2Jsb2NrKHNlbGYuc2l6ZSkKICAgICAgICB0YXJmaWxlLm9mZnNldCA9IG9mZnNldAoKICAgICAgICAjIFBhdGNoIHRoZSBUYXJJbmZvIG9iamVjdCB3aXRoIHNhdmVkIGdsb2JhbAogICAgICAgICMgaGVhZGVyIGluZm9ybWF0aW9uLgogICAgICAgIHNlbGYuX2FwcGx5X3BheF9pbmZvKHRhcmZpbGUucGF4X2hlYWRlcnMsIHRhcmZpbGUuZW5jb2RpbmcsIHRhcmZpbGUuZXJyb3JzKQoKICAgICAgICAjIFJlbW92ZSByZWR1bmRhbnQgc2xhc2hlcyBmcm9tIGRpcmVjdG9yaWVzLiBUaGlzIGlzIHRvIGJlIGNvbnNpc3RlbnQKICAgICAgICAjIHdpdGggZnJvbWJ1ZigpLgogICAgICAgIGlmIHNlbGYuaXNkaXIoKToKICAgICAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5uYW1lLnJzdHJpcCgiLyIpCgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9wcm9jX2dudWxvbmcoc2VsZiwgdGFyZmlsZSk6CiAgICAgICAgIiIiUHJvY2VzcyB0aGUgYmxvY2tzIHRoYXQgaG9sZCBhIEdOVSBsb25nbmFtZQogICAgICAgICAgIG9yIGxvbmdsaW5rIG1lbWJlci4KICAgICAgICAiIiIKICAgICAgICBidWYgPSB0YXJmaWxlLmZpbGVvYmoucmVhZChzZWxmLl9ibG9jayhzZWxmLnNpemUpKQoKICAgICAgICAjIEZldGNoIHRoZSBuZXh0IGhlYWRlciBhbmQgcHJvY2VzcyBpdC4KICAgICAgICB0cnk6CiAgICAgICAgICAgIG5leHQgPSBzZWxmLmZyb210YXJmaWxlKHRhcmZpbGUpCiAgICAgICAgZXhjZXB0IEhlYWRlckVycm9yIGFzIGU6CiAgICAgICAgICAgIHJhaXNlIFN1YnNlcXVlbnRIZWFkZXJFcnJvcihzdHIoZSkpIGZyb20gTm9uZQoKICAgICAgICAjIFBhdGNoIHRoZSBUYXJJbmZvIG9iamVjdCBmcm9tIHRoZSBuZXh0IGhlYWRlciB3aXRoCiAgICAgICAgIyB0aGUgbG9uZ25hbWUgaW5mb3JtYXRpb24uCiAgICAgICAgbmV4dC5vZmZzZXQgPSBzZWxmLm9mZnNldAogICAgICAgIGlmIHNlbGYudHlwZSA9PSBHTlVUWVBFX0xPTkdOQU1FOgogICAgICAgICAgICBuZXh0Lm5hbWUgPSBudHMoYnVmLCB0YXJmaWxlLmVuY29kaW5nLCB0YXJmaWxlLmVycm9ycykKICAgICAgICBlbGlmIHNlbGYudHlwZSA9PSBHTlVUWVBFX0xPTkdMSU5LOgogICAgICAgICAgICBuZXh0LmxpbmtuYW1lID0gbnRzKGJ1ZiwgdGFyZmlsZS5lbmNvZGluZywgdGFyZmlsZS5lcnJvcnMpCgogICAgICAgICMgUmVtb3ZlIHJlZHVuZGFudCBzbGFzaGVzIGZyb20gZGlyZWN0b3JpZXMuIFRoaXMgaXMgdG8gYmUgY29uc2lzdGVudAogICAgICAgICMgd2l0aCBmcm9tYnVmKCkuCiAgICAgICAgaWYgbmV4dC5pc2RpcigpOgogICAgICAgICAgICBuZXh0Lm5hbWUgPSBuZXh0Lm5hbWUucmVtb3Zlc3VmZml4KCIvIikKCiAgICAgICAgcmV0dXJuIG5leHQKCiAgICBkZWYgX3Byb2Nfc3BhcnNlKHNlbGYsIHRhcmZpbGUpOgogICAgICAgICIiIlByb2Nlc3MgYSBHTlUgc3BhcnNlIGhlYWRlciBwbHVzIGV4dHJhIGhlYWRlcnMuCiAgICAgICAgIiIiCiAgICAgICAgIyBXZSBhbHJlYWR5IGNvbGxlY3RlZCBzb21lIHNwYXJzZSBzdHJ1Y3R1cmVzIGluIGZyb21idWYoKS4KICAgICAgICBzdHJ1Y3RzLCBpc2V4dGVuZGVkLCBvcmlnc2l6ZSA9IHNlbGYuX3NwYXJzZV9zdHJ1Y3RzCiAgICAgICAgZGVsIHNlbGYuX3NwYXJzZV9zdHJ1Y3RzCgogICAgICAgICMgQ29sbGVjdCBzcGFyc2Ugc3RydWN0dXJlcyBmcm9tIGV4dGVuZGVkIGhlYWRlciBibG9ja3MuCiAgICAgICAgd2hpbGUgaXNleHRlbmRlZDoKICAgICAgICAgICAgYnVmID0gdGFyZmlsZS5maWxlb2JqLnJlYWQoQkxPQ0tTSVpFKQogICAgICAgICAgICBwb3MgPSAwCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIxKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBudGkoYnVmW3Bvczpwb3MgKyAxMl0pCiAgICAgICAgICAgICAgICAgICAgbnVtYnl0ZXMgPSBudGkoYnVmW3BvcyArIDEyOnBvcyArIDI0XSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBpZiBvZmZzZXQgYW5kIG51bWJ5dGVzOgogICAgICAgICAgICAgICAgICAgIHN0cnVjdHMuYXBwZW5kKChvZmZzZXQsIG51bWJ5dGVzKSkKICAgICAgICAgICAgICAgIHBvcyArPSAyNAogICAgICAgICAgICBpc2V4dGVuZGVkID0gYm9vbChidWZbNTA0XSkKICAgICAgICBzZWxmLnNwYXJzZSA9IHN0cnVjdHMKCiAgICAgICAgc2VsZi5vZmZzZXRfZGF0YSA9IHRhcmZpbGUuZmlsZW9iai50ZWxsKCkKICAgICAgICB0YXJmaWxlLm9mZnNldCA9IHNlbGYub2Zmc2V0X2RhdGEgKyBzZWxmLl9ibG9jayhzZWxmLnNpemUpCiAgICAgICAgc2VsZi5zaXplID0gb3JpZ3NpemUKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfcHJvY19wYXgoc2VsZiwgdGFyZmlsZSk6CiAgICAgICAgIiIiUHJvY2VzcyBhbiBleHRlbmRlZCBvciBnbG9iYWwgaGVhZGVyIGFzIGRlc2NyaWJlZCBpbgogICAgICAgICAgIFBPU0lYLjEtMjAwOC4KICAgICAgICAiIiIKICAgICAgICAjIFJlYWQgdGhlIGhlYWRlciBpbmZvcm1hdGlvbi4KICAgICAgICBidWYgPSB0YXJmaWxlLmZpbGVvYmoucmVhZChzZWxmLl9ibG9jayhzZWxmLnNpemUpKQoKICAgICAgICAjIEEgcGF4IGhlYWRlciBzdG9yZXMgc3VwcGxlbWVudGFsIGluZm9ybWF0aW9uIGZvciBlaXRoZXIKICAgICAgICAjIHRoZSBmb2xsb3dpbmcgZmlsZSAoZXh0ZW5kZWQpIG9yIGFsbCBmb2xsb3dpbmcgZmlsZXMKICAgICAgICAjIChnbG9iYWwpLgogICAgICAgIGlmIHNlbGYudHlwZSA9PSBYR0xUWVBFOgogICAgICAgICAgICBwYXhfaGVhZGVycyA9IHRhcmZpbGUucGF4X2hlYWRlcnMKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXhfaGVhZGVycyA9IHRhcmZpbGUucGF4X2hlYWRlcnMuY29weSgpCgogICAgICAgICMgQ2hlY2sgaWYgdGhlIHBheCBoZWFkZXIgY29udGFpbnMgYSBoZHJjaGFyc2V0IGZpZWxkLiBUaGlzIHRlbGxzIHVzCiAgICAgICAgIyB0aGUgZW5jb2Rpbmcgb2YgdGhlIHBhdGgsIGxpbmtwYXRoLCB1bmFtZSBhbmQgZ25hbWUgZmllbGRzLiBOb3JtYWxseSwKICAgICAgICAjIHRoZXNlIGZpZWxkcyBhcmUgVVRGLTggZW5jb2RlZCBidXQgc2luY2UgUE9TSVguMS0yMDA4IHRhcgogICAgICAgICMgaW1wbGVtZW50YXRpb25zIGFyZSBhbGxvd2VkIHRvIHN0b3JlIHRoZW0gYXMgcmF3IGJpbmFyeSBzdHJpbmdzIGlmCiAgICAgICAgIyB0aGUgdHJhbnNsYXRpb24gdG8gVVRGLTggZmFpbHMuCiAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYnIiXGQrIGhkcmNoYXJzZXQ9KFteXG5dKylcbiIsIGJ1ZikKICAgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcGF4X2hlYWRlcnNbImhkcmNoYXJzZXQiXSA9IG1hdGNoLmdyb3VwKDEpLmRlY29kZSgidXRmLTgiKQoKICAgICAgICAjIEZvciB0aGUgdGltZSBiZWluZywgd2UgZG9uJ3QgY2FyZSBhYm91dCBhbnl0aGluZyBvdGhlciB0aGFuICJCSU5BUlkiLgogICAgICAgICMgVGhlIG9ubHkgb3RoZXIgdmFsdWUgdGhhdCBpcyBjdXJyZW50bHkgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmQgaXMKICAgICAgICAjICJJU08tSVIgMTA2NDYgMjAwMCBVVEYtOCIgaW4gb3RoZXIgd29yZHMgVVRGLTguCiAgICAgICAgaGRyY2hhcnNldCA9IHBheF9oZWFkZXJzLmdldCgiaGRyY2hhcnNldCIpCiAgICAgICAgaWYgaGRyY2hhcnNldCA9PSAiQklOQVJZIjoKICAgICAgICAgICAgZW5jb2RpbmcgPSB0YXJmaWxlLmVuY29kaW5nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiCgogICAgICAgICMgUGFyc2UgcGF4IGhlYWRlciBpbmZvcm1hdGlvbi4gQSByZWNvcmQgbG9va3MgbGlrZSB0aGF0OgogICAgICAgICMgIiVkICVzPSVzXG4iICUgKGxlbmd0aCwga2V5d29yZCwgdmFsdWUpLiBsZW5ndGggaXMgdGhlIHNpemUKICAgICAgICAjIG9mIHRoZSBjb21wbGV0ZSByZWNvcmQgaW5jbHVkaW5nIHRoZSBsZW5ndGggZmllbGQgaXRzZWxmIGFuZAogICAgICAgICMgdGhlIG5ld2xpbmUuIGtleXdvcmQgYW5kIHZhbHVlIGFyZSBib3RoIFVURi04IGVuY29kZWQgc3RyaW5ncy4KICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUoYnIiKFxkKykgKFtePV0rKT0iKQogICAgICAgIHBvcyA9IDAKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBtYXRjaCA9IHJlZ2V4Lm1hdGNoKGJ1ZiwgcG9zKQogICAgICAgICAgICBpZiBub3QgbWF0Y2g6CiAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgbGVuZ3RoLCBrZXl3b3JkID0gbWF0Y2guZ3JvdXBzKCkKICAgICAgICAgICAgbGVuZ3RoID0gaW50KGxlbmd0aCkKICAgICAgICAgICAgaWYgbGVuZ3RoID09IDA6CiAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkSGVhZGVyRXJyb3IoImludmFsaWQgaGVhZGVyIikKICAgICAgICAgICAgdmFsdWUgPSBidWZbbWF0Y2guZW5kKDIpICsgMTptYXRjaC5zdGFydCgxKSArIGxlbmd0aCAtIDFdCgogICAgICAgICAgICAjIE5vcm1hbGx5LCB3ZSBjb3VsZCBqdXN0IHVzZSAidXRmLTgiIGFzIHRoZSBlbmNvZGluZyBhbmQgInN0cmljdCIKICAgICAgICAgICAgIyBhcyB0aGUgZXJyb3IgaGFuZGxlciwgYnV0IHdlIGJldHRlciBub3QgdGFrZSB0aGUgcmlzay4gRm9yCiAgICAgICAgICAgICMgZXhhbXBsZSwgR05VIHRhciA8PSAxLjIzIGlzIGtub3duIHRvIHN0b3JlIGZpbGVuYW1lcyBpdCBjYW5ub3QKICAgICAgICAgICAgIyB0cmFuc2xhdGUgdG8gVVRGLTggYXMgcmF3IHN0cmluZ3MgKHVuZm9ydHVuYXRlbHkgd2l0aG91dCBhCiAgICAgICAgICAgICMgaGRyY2hhcnNldD1CSU5BUlkgaGVhZGVyKS4KICAgICAgICAgICAgIyBXZSBmaXJzdCB0cnkgdGhlIHN0cmljdCBzdGFuZGFyZCBlbmNvZGluZywgYW5kIGlmIHRoYXQgZmFpbHMgd2UKICAgICAgICAgICAgIyBmYWxsIGJhY2sgb24gdGhlIHVzZXIncyBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KICAgICAgICAgICAga2V5d29yZCA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQoa2V5d29yZCwgInV0Zi04IiwgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICB0YXJmaWxlLmVycm9ycykKICAgICAgICAgICAgaWYga2V5d29yZCBpbiBQQVhfTkFNRV9GSUVMRFM6CiAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQodmFsdWUsIGVuY29kaW5nLCB0YXJmaWxlLmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB0YXJmaWxlLmVycm9ycykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZCh2YWx1ZSwgInV0Zi04IiwgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCgogICAgICAgICAgICBwYXhfaGVhZGVyc1trZXl3b3JkXSA9IHZhbHVlCiAgICAgICAgICAgIHBvcyArPSBsZW5ndGgKCiAgICAgICAgIyBGZXRjaCB0aGUgbmV4dCBoZWFkZXIuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBuZXh0ID0gc2VsZi5mcm9tdGFyZmlsZSh0YXJmaWxlKQogICAgICAgIGV4Y2VwdCBIZWFkZXJFcnJvciBhcyBlOgogICAgICAgICAgICByYWlzZSBTdWJzZXF1ZW50SGVhZGVyRXJyb3Ioc3RyKGUpKSBmcm9tIE5vbmUKCiAgICAgICAgIyBQcm9jZXNzIEdOVSBzcGFyc2UgaW5mb3JtYXRpb24uCiAgICAgICAgaWYgIkdOVS5zcGFyc2UubWFwIiBpbiBwYXhfaGVhZGVyczoKICAgICAgICAgICAgIyBHTlUgZXh0ZW5kZWQgc3BhcnNlIGZvcm1hdCB2ZXJzaW9uIDAuMS4KICAgICAgICAgICAgc2VsZi5fcHJvY19nbnVzcGFyc2VfMDEobmV4dCwgcGF4X2hlYWRlcnMpCgogICAgICAgIGVsaWYgIkdOVS5zcGFyc2Uuc2l6ZSIgaW4gcGF4X2hlYWRlcnM6CiAgICAgICAgICAgICMgR05VIGV4dGVuZGVkIHNwYXJzZSBmb3JtYXQgdmVyc2lvbiAwLjAuCiAgICAgICAgICAgIHNlbGYuX3Byb2NfZ251c3BhcnNlXzAwKG5leHQsIHBheF9oZWFkZXJzLCBidWYpCgogICAgICAgIGVsaWYgcGF4X2hlYWRlcnMuZ2V0KCJHTlUuc3BhcnNlLm1ham9yIikgPT0gIjEiIGFuZCBwYXhfaGVhZGVycy5nZXQoIkdOVS5zcGFyc2UubWlub3IiKSA9PSAiMCI6CiAgICAgICAgICAgICMgR05VIGV4dGVuZGVkIHNwYXJzZSBmb3JtYXQgdmVyc2lvbiAxLjAuCiAgICAgICAgICAgIHNlbGYuX3Byb2NfZ251c3BhcnNlXzEwKG5leHQsIHBheF9oZWFkZXJzLCB0YXJmaWxlKQoKICAgICAgICBpZiBzZWxmLnR5cGUgaW4gKFhIRFRZUEUsIFNPTEFSSVNfWEhEVFlQRSk6CiAgICAgICAgICAgICMgUGF0Y2ggdGhlIFRhckluZm8gb2JqZWN0IHdpdGggdGhlIGV4dGVuZGVkIGhlYWRlciBpbmZvLgogICAgICAgICAgICBuZXh0Ll9hcHBseV9wYXhfaW5mbyhwYXhfaGVhZGVycywgdGFyZmlsZS5lbmNvZGluZywgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgIG5leHQub2Zmc2V0ID0gc2VsZi5vZmZzZXQKCiAgICAgICAgICAgIGlmICJzaXplIiBpbiBwYXhfaGVhZGVyczoKICAgICAgICAgICAgICAgICMgSWYgdGhlIGV4dGVuZGVkIGhlYWRlciByZXBsYWNlcyB0aGUgc2l6ZSBmaWVsZCwKICAgICAgICAgICAgICAgICMgd2UgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBuZXh0CiAgICAgICAgICAgICAgICAjIGhlYWRlciBzdGFydHMuCiAgICAgICAgICAgICAgICBvZmZzZXQgPSBuZXh0Lm9mZnNldF9kYXRhCiAgICAgICAgICAgICAgICBpZiBuZXh0LmlzcmVnKCkgb3IgbmV4dC50eXBlIG5vdCBpbiBTVVBQT1JURURfVFlQRVM6CiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG5leHQuX2Jsb2NrKG5leHQuc2l6ZSkKICAgICAgICAgICAgICAgIHRhcmZpbGUub2Zmc2V0ID0gb2Zmc2V0CgogICAgICAgIHJldHVybiBuZXh0CgogICAgZGVmIF9wcm9jX2dudXNwYXJzZV8wMChzZWxmLCBuZXh0LCBwYXhfaGVhZGVycywgYnVmKToKICAgICAgICAiIiJQcm9jZXNzIGEgR05VIHRhciBleHRlbmRlZCBzcGFyc2UgaGVhZGVyLCB2ZXJzaW9uIDAuMC4KICAgICAgICAiIiIKICAgICAgICBvZmZzZXRzID0gW10KICAgICAgICBmb3IgbWF0Y2ggaW4gcmUuZmluZGl0ZXIoYnIiXGQrIEdOVS5zcGFyc2Uub2Zmc2V0PShcZCspXG4iLCBidWYpOgogICAgICAgICAgICBvZmZzZXRzLmFwcGVuZChpbnQobWF0Y2guZ3JvdXAoMSkpKQogICAgICAgIG51bWJ5dGVzID0gW10KICAgICAgICBmb3IgbWF0Y2ggaW4gcmUuZmluZGl0ZXIoYnIiXGQrIEdOVS5zcGFyc2UubnVtYnl0ZXM9KFxkKylcbiIsIGJ1Zik6CiAgICAgICAgICAgIG51bWJ5dGVzLmFwcGVuZChpbnQobWF0Y2guZ3JvdXAoMSkpKQogICAgICAgIG5leHQuc3BhcnNlID0gbGlzdCh6aXAob2Zmc2V0cywgbnVtYnl0ZXMpKQoKICAgIGRlZiBfcHJvY19nbnVzcGFyc2VfMDEoc2VsZiwgbmV4dCwgcGF4X2hlYWRlcnMpOgogICAgICAgICIiIlByb2Nlc3MgYSBHTlUgdGFyIGV4dGVuZGVkIHNwYXJzZSBoZWFkZXIsIHZlcnNpb24gMC4xLgogICAgICAgICIiIgogICAgICAgIHNwYXJzZSA9IFtpbnQoeCkgZm9yIHggaW4gcGF4X2hlYWRlcnNbIkdOVS5zcGFyc2UubWFwIl0uc3BsaXQoIiwiKV0KICAgICAgICBuZXh0LnNwYXJzZSA9IGxpc3QoemlwKHNwYXJzZVs6OjJdLCBzcGFyc2VbMTo6Ml0pKQoKICAgIGRlZiBfcHJvY19nbnVzcGFyc2VfMTAoc2VsZiwgbmV4dCwgcGF4X2hlYWRlcnMsIHRhcmZpbGUpOgogICAgICAgICIiIlByb2Nlc3MgYSBHTlUgdGFyIGV4dGVuZGVkIHNwYXJzZSBoZWFkZXIsIHZlcnNpb24gMS4wLgogICAgICAgICIiIgogICAgICAgIGZpZWxkcyA9IE5vbmUKICAgICAgICBzcGFyc2UgPSBbXQogICAgICAgIGJ1ZiA9IHRhcmZpbGUuZmlsZW9iai5yZWFkKEJMT0NLU0laRSkKICAgICAgICBmaWVsZHMsIGJ1ZiA9IGJ1Zi5zcGxpdChiIlxuIiwgMSkKICAgICAgICBmaWVsZHMgPSBpbnQoZmllbGRzKQogICAgICAgIHdoaWxlIGxlbihzcGFyc2UpIDwgZmllbGRzICogMjoKICAgICAgICAgICAgaWYgYiJcbiIgbm90IGluIGJ1ZjoKICAgICAgICAgICAgICAgIGJ1ZiArPSB0YXJmaWxlLmZpbGVvYmoucmVhZChCTE9DS1NJWkUpCiAgICAgICAgICAgIG51bWJlciwgYnVmID0gYnVmLnNwbGl0KGIiXG4iLCAxKQogICAgICAgICAgICBzcGFyc2UuYXBwZW5kKGludChudW1iZXIpKQogICAgICAgIG5leHQub2Zmc2V0X2RhdGEgPSB0YXJmaWxlLmZpbGVvYmoudGVsbCgpCiAgICAgICAgbmV4dC5zcGFyc2UgPSBsaXN0KHppcChzcGFyc2VbOjoyXSwgc3BhcnNlWzE6OjJdKSkKCiAgICBkZWYgX2FwcGx5X3BheF9pbmZvKHNlbGYsIHBheF9oZWFkZXJzLCBlbmNvZGluZywgZXJyb3JzKToKICAgICAgICAiIiJSZXBsYWNlIGZpZWxkcyB3aXRoIHN1cHBsZW1lbnRhbCBpbmZvcm1hdGlvbiBmcm9tIGEgcHJldmlvdXMKICAgICAgICAgICBwYXggZXh0ZW5kZWQgb3IgZ2xvYmFsIGhlYWRlci4KICAgICAgICAiIiIKICAgICAgICBmb3Iga2V5d29yZCwgdmFsdWUgaW4gcGF4X2hlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAgaWYga2V5d29yZCA9PSAiR05VLnNwYXJzZS5uYW1lIjoKICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgInBhdGgiLCB2YWx1ZSkKICAgICAgICAgICAgZWxpZiBrZXl3b3JkID09ICJHTlUuc3BhcnNlLnNpemUiOgogICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAic2l6ZSIsIGludCh2YWx1ZSkpCiAgICAgICAgICAgIGVsaWYga2V5d29yZCA9PSAiR05VLnNwYXJzZS5yZWFsc2l6ZSI6CiAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICJzaXplIiwgaW50KHZhbHVlKSkKICAgICAgICAgICAgZWxpZiBrZXl3b3JkIGluIFBBWF9GSUVMRFM6CiAgICAgICAgICAgICAgICBpZiBrZXl3b3JkIGluIFBBWF9OVU1CRVJfRklFTERTOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQQVhfTlVNQkVSX0ZJRUxEU1trZXl3b3JkXSh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwCiAgICAgICAgICAgICAgICBpZiBrZXl3b3JkID09ICJwYXRoIjoKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJzdHJpcCgiLyIpCiAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGtleXdvcmQsIHZhbHVlKQoKICAgICAgICBzZWxmLnBheF9oZWFkZXJzID0gcGF4X2hlYWRlcnMuY29weSgpCgogICAgZGVmIF9kZWNvZGVfcGF4X2ZpZWxkKHNlbGYsIHZhbHVlLCBlbmNvZGluZywgZmFsbGJhY2tfZW5jb2RpbmcsIGZhbGxiYWNrX2Vycm9ycyk6CiAgICAgICAgIiIiRGVjb2RlIGEgc2luZ2xlIGZpZWxkIGZyb20gYSBwYXggcmVjb3JkLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmRlY29kZShlbmNvZGluZywgInN0cmljdCIpCiAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmRlY29kZShmYWxsYmFja19lbmNvZGluZywgZmFsbGJhY2tfZXJyb3JzKQoKICAgIGRlZiBfYmxvY2soc2VsZiwgY291bnQpOgogICAgICAgICIiIlJvdW5kIHVwIGEgYnl0ZSBjb3VudCBieSBCTE9DS1NJWkUgYW5kIHJldHVybiBpdCwKICAgICAgICAgICBlLmcuIF9ibG9jayg4MzQpID0+IDEwMjQuCiAgICAgICAgIiIiCiAgICAgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QoY291bnQsIEJMT0NLU0laRSkKICAgICAgICBpZiByZW1haW5kZXI6CiAgICAgICAgICAgIGJsb2NrcyArPSAxCiAgICAgICAgcmV0dXJuIGJsb2NrcyAqIEJMT0NLU0laRQoKICAgIGRlZiBpc3JlZyhzZWxmKToKICAgICAgICAnUmV0dXJuIFRydWUgaWYgdGhlIFRhcmluZm8gb2JqZWN0IGlzIGEgcmVndWxhciBmaWxlLicKICAgICAgICByZXR1cm4gc2VsZi50eXBlIGluIFJFR1VMQVJfVFlQRVMKCiAgICBkZWYgaXNmaWxlKHNlbGYpOgogICAgICAgICdSZXR1cm4gVHJ1ZSBpZiB0aGUgVGFyaW5mbyBvYmplY3QgaXMgYSByZWd1bGFyIGZpbGUuJwogICAgICAgIHJldHVybiBzZWxmLmlzcmVnKCkKCiAgICBkZWYgaXNkaXIoc2VsZik6CiAgICAgICAgJ1JldHVybiBUcnVlIGlmIGl0IGlzIGEgZGlyZWN0b3J5LicKICAgICAgICByZXR1cm4gc2VsZi50eXBlID09IERJUlRZUEUKCiAgICBkZWYgaXNzeW0oc2VsZik6CiAgICAgICAgJ1JldHVybiBUcnVlIGlmIGl0IGlzIGEgc3ltYm9saWMgbGluay4nCiAgICAgICAgcmV0dXJuIHNlbGYudHlwZSA9PSBTWU1UWVBFCgogICAgZGVmIGlzbG5rKHNlbGYpOgogICAgICAgICdSZXR1cm4gVHJ1ZSBpZiBpdCBpcyBhIGhhcmQgbGluay4nCiAgICAgICAgcmV0dXJuIHNlbGYudHlwZSA9PSBMTktUWVBFCgogICAgZGVmIGlzY2hyKHNlbGYpOgogICAgICAgICdSZXR1cm4gVHJ1ZSBpZiBpdCBpcyBhIGNoYXJhY3RlciBkZXZpY2UuJwogICAgICAgIHJldHVybiBzZWxmLnR5cGUgPT0gQ0hSVFlQRQoKICAgIGRlZiBpc2JsayhzZWxmKToKICAgICAgICAnUmV0dXJuIFRydWUgaWYgaXQgaXMgYSBibG9jayBkZXZpY2UuJwogICAgICAgIHJldHVybiBzZWxmLnR5cGUgPT0gQkxLVFlQRQoKICAgIGRlZiBpc2ZpZm8oc2VsZik6CiAgICAgICAgJ1JldHVybiBUcnVlIGlmIGl0IGlzIGEgRklGTy4nCiAgICAgICAgcmV0dXJuIHNlbGYudHlwZSA9PSBGSUZPVFlQRQoKICAgIGRlZiBpc3NwYXJzZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5zcGFyc2UgaXMgbm90IE5vbmUKCiAgICBkZWYgaXNkZXYoc2VsZik6CiAgICAgICAgJ1JldHVybiBUcnVlIGlmIGl0IGlzIG9uZSBvZiBjaGFyYWN0ZXIgZGV2aWNlLCBibG9jayBkZXZpY2Ugb3IgRklGTy4nCiAgICAgICAgcmV0dXJuIHNlbGYudHlwZSBpbiAoQ0hSVFlQRSwgQkxLVFlQRSwgRklGT1RZUEUpCiMgY2xhc3MgVGFySW5mbwoKY2xhc3MgVGFyRmlsZShvYmplY3QpOgogICAgIiIiVGhlIFRhckZpbGUgQ2xhc3MgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRhciBhcmNoaXZlcy4KICAgICIiIgoKICAgIGRlYnVnID0gMCAgICAgICAgICAgICAgICAgICAjIE1heSBiZSBzZXQgZnJvbSAwIChubyBtc2dzKSB0byAzIChhbGwgbXNncykKCiAgICBkZXJlZmVyZW5jZSA9IEZhbHNlICAgICAgICAgIyBJZiB0cnVlLCBhZGQgY29udGVudCBvZiBsaW5rZWQgZmlsZSB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRhciBmaWxlLCBlbHNlIHRoZSBsaW5rLgoKICAgIGlnbm9yZV96ZXJvcyA9IEZhbHNlICAgICAgICAjIElmIHRydWUsIHNraXBzIGVtcHR5IG9yIGludmFsaWQgYmxvY2tzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGludWVzIHByb2Nlc3NpbmcuCgogICAgZXJyb3JsZXZlbCA9IDEgICAgICAgICAgICAgICMgSWYgMCwgZmF0YWwgZXJyb3JzIG9ubHkgYXBwZWFyIGluIGRlYnVnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtZXNzYWdlcyAoaWYgZGVidWcgPj0gMCkuIElmID4gMCwgZXJyb3JzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmUgcGFzc2VkIHRvIHRoZSBjYWxsZXIgYXMgZXhjZXB0aW9ucy4KCiAgICBmb3JtYXQgPSBERUZBVUxUX0ZPUk1BVCAgICAgIyBUaGUgZm9ybWF0IHRvIHVzZSB3aGVuIGNyZWF0aW5nIGFuIGFyY2hpdmUuCgogICAgZW5jb2RpbmcgPSBFTkNPRElORyAgICAgICAgICMgRW5jb2RpbmcgZm9yIDgtYml0IGNoYXJhY3RlciBzdHJpbmdzLgoKICAgIGVycm9ycyA9IE5vbmUgICAgICAgICAgICAgICAjIEVycm9yIGhhbmRsZXIgZm9yIHVuaWNvZGUgY29udmVyc2lvbi4KCiAgICB0YXJpbmZvID0gVGFySW5mbyAgICAgICAgICAgIyBUaGUgZGVmYXVsdCBUYXJJbmZvIGNsYXNzIHRvIHVzZS4KCiAgICBmaWxlb2JqZWN0ID0gRXhGaWxlT2JqZWN0ICAgIyBUaGUgZmlsZS1vYmplY3QgZm9yIGV4dHJhY3RmaWxlKCkuCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgZm9ybWF0PU5vbmUsCiAgICAgICAgICAgIHRhcmluZm89Tm9uZSwgZGVyZWZlcmVuY2U9Tm9uZSwgaWdub3JlX3plcm9zPU5vbmUsIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwKICAgICAgICAgICAgZXJyb3JsZXZlbD1Ob25lLCBjb3B5YnVmc2l6ZT1Ob25lKToKICAgICAgICAiIiJPcGVuIGFuICh1bmNvbXByZXNzZWQpIHRhciBhcmNoaXZlIGBuYW1lJy4gYG1vZGUnIGlzIGVpdGhlciAncicgdG8KICAgICAgICAgICByZWFkIGZyb20gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgJ2EnIHRvIGFwcGVuZCBkYXRhIHRvIGFuIGV4aXN0aW5nCiAgICAgICAgICAgZmlsZSBvciAndycgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb3ZlcndyaXRpbmcgYW4gZXhpc3Rpbmcgb25lLiBgbW9kZScKICAgICAgICAgICBkZWZhdWx0cyB0byAncicuCiAgICAgICAgICAgSWYgYGZpbGVvYmonIGlzIGdpdmVuLCBpdCBpcyB1c2VkIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgZGF0YS4gSWYgaXQKICAgICAgICAgICBjYW4gYmUgZGV0ZXJtaW5lZCwgYG1vZGUnIGlzIG92ZXJyaWRkZW4gYnkgYGZpbGVvYmoncyBtb2RlLgogICAgICAgICAgIGBmaWxlb2JqJyBpcyBub3QgY2xvc2VkLCB3aGVuIFRhckZpbGUgaXMgY2xvc2VkLgogICAgICAgICIiIgogICAgICAgIG1vZGVzID0geyJyIjogInJiIiwgImEiOiAicitiIiwgInciOiAid2IiLCAieCI6ICJ4YiJ9CiAgICAgICAgaWYgbW9kZSBub3QgaW4gbW9kZXM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICdhJywgJ3cnIG9yICd4JyIpCiAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgIHNlbGYuX21vZGUgPSBtb2Rlc1ttb2RlXQoKICAgICAgICBpZiBub3QgZmlsZW9iajoKICAgICAgICAgICAgaWYgc2VsZi5tb2RlID09ICJhIiBhbmQgbm90IG9zLnBhdGguZXhpc3RzKG5hbWUpOgogICAgICAgICAgICAgICAgIyBDcmVhdGUgbm9uZXhpc3RlbnQgZmlsZXMgaW4gYXBwZW5kIG1vZGUuCiAgICAgICAgICAgICAgICBzZWxmLm1vZGUgPSAidyIKICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSAid2IiCiAgICAgICAgICAgIGZpbGVvYmogPSBibHRuX29wZW4obmFtZSwgc2VsZi5fbW9kZSkKICAgICAgICAgICAgc2VsZi5fZXh0ZmlsZW9iaiA9IEZhbHNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgKG5hbWUgaXMgTm9uZSBhbmQgaGFzYXR0cihmaWxlb2JqLCAibmFtZSIpIGFuZAogICAgICAgICAgICAgICAgaXNpbnN0YW5jZShmaWxlb2JqLm5hbWUsIChzdHIsIGJ5dGVzKSkpOgogICAgICAgICAgICAgICAgbmFtZSA9IGZpbGVvYmoubmFtZQogICAgICAgICAgICBpZiBoYXNhdHRyKGZpbGVvYmosICJtb2RlIik6CiAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gZmlsZW9iai5tb2RlCiAgICAgICAgICAgIHNlbGYuX2V4dGZpbGVvYmogPSBUcnVlCiAgICAgICAgc2VsZi5uYW1lID0gb3MucGF0aC5hYnNwYXRoKG5hbWUpIGlmIG5hbWUgZWxzZSBOb25lCiAgICAgICAgc2VsZi5maWxlb2JqID0gZmlsZW9iagoKICAgICAgICAjIEluaXQgYXR0cmlidXRlcy4KICAgICAgICBpZiBmb3JtYXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuZm9ybWF0ID0gZm9ybWF0CiAgICAgICAgaWYgdGFyaW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi50YXJpbmZvID0gdGFyaW5mbwogICAgICAgIGlmIGRlcmVmZXJlbmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLmRlcmVmZXJlbmNlID0gZGVyZWZlcmVuY2UKICAgICAgICBpZiBpZ25vcmVfemVyb3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuaWdub3JlX3plcm9zID0gaWdub3JlX3plcm9zCiAgICAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZwogICAgICAgIHNlbGYuZXJyb3JzID0gZXJyb3JzCgogICAgICAgIGlmIHBheF9oZWFkZXJzIGlzIG5vdCBOb25lIGFuZCBzZWxmLmZvcm1hdCA9PSBQQVhfRk9STUFUOgogICAgICAgICAgICBzZWxmLnBheF9oZWFkZXJzID0gcGF4X2hlYWRlcnMKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnBheF9oZWFkZXJzID0ge30KCiAgICAgICAgaWYgZGVidWcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuZGVidWcgPSBkZWJ1ZwogICAgICAgIGlmIGVycm9ybGV2ZWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuZXJyb3JsZXZlbCA9IGVycm9ybGV2ZWwKCiAgICAgICAgIyBJbml0IGRhdGFzdHJ1Y3R1cmVzLgogICAgICAgIHNlbGYuY29weWJ1ZnNpemUgPSBjb3B5YnVmc2l6ZQogICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKICAgICAgICBzZWxmLm1lbWJlcnMgPSBbXSAgICAgICAjIGxpc3Qgb2YgbWVtYmVycyBhcyBUYXJJbmZvIG9iamVjdHMKICAgICAgICBzZWxmLl9sb2FkZWQgPSBGYWxzZSAgICAjIGZsYWcgaWYgYWxsIG1lbWJlcnMgaGF2ZSBiZWVuIHJlYWQKICAgICAgICBzZWxmLm9mZnNldCA9IHNlbGYuZmlsZW9iai50ZWxsKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIGFyY2hpdmUgZmlsZQogICAgICAgIHNlbGYuaW5vZGVzID0ge30gICAgICAgICMgZGljdGlvbmFyeSBjYWNoaW5nIHRoZSBpbm9kZXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFyY2hpdmUgbWVtYmVycyBhbHJlYWR5IGFkZGVkCgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5tb2RlID09ICJyIjoKICAgICAgICAgICAgICAgIHNlbGYuZmlyc3RtZW1iZXIgPSBOb25lCiAgICAgICAgICAgICAgICBzZWxmLmZpcnN0bWVtYmVyID0gc2VsZi5uZXh0KCkKCiAgICAgICAgICAgIGlmIHNlbGYubW9kZSA9PSAiYSI6CiAgICAgICAgICAgICAgICAjIE1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgYXJjaGl2ZSwKICAgICAgICAgICAgICAgICMgYmVmb3JlIHRoZSBmaXJzdCBlbXB0eSBibG9jay4KICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoc2VsZi5vZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJpbmZvLmZyb210YXJmaWxlKHNlbGYpCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVtYmVycy5hcHBlbmQodGFyaW5mbykKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRU9GSGVhZGVyRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKHNlbGYub2Zmc2V0KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBIZWFkZXJFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3Ioc3RyKGUpKSBmcm9tIE5vbmUKCiAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoImEiLCAidyIsICJ4Iik6CiAgICAgICAgICAgICAgICBzZWxmLl9sb2FkZWQgPSBUcnVlCgogICAgICAgICAgICAgICAgaWYgc2VsZi5wYXhfaGVhZGVyczoKICAgICAgICAgICAgICAgICAgICBidWYgPSBzZWxmLnRhcmluZm8uY3JlYXRlX3BheF9nbG9iYWxfaGVhZGVyKHNlbGYucGF4X2hlYWRlcnMuY29weSgpKQogICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShidWYpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuKGJ1ZikKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9leHRmaWxlb2JqOgogICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCiAgICAgICAgICAgIHJhaXNlCgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEJlbG93IGFyZSB0aGUgY2xhc3NtZXRob2RzIHdoaWNoIGFjdCBhcyBhbHRlcm5hdGUgY29uc3RydWN0b3JzIHRvIHRoZQogICAgIyBUYXJGaWxlIGNsYXNzLiBUaGUgb3BlbigpIG1ldGhvZCBpcyB0aGUgb25seSBvbmUgdGhhdCBpcyBuZWVkZWQgZm9yCiAgICAjIHB1YmxpYyB1c2U7IGl0IGlzIHRoZSAic3VwZXIiLWNvbnN0cnVjdG9yIGFuZCBpcyBhYmxlIHRvIHNlbGVjdCBhbgogICAgIyBhZGVxdWF0ZSAic3ViIi1jb25zdHJ1Y3RvciBmb3IgYSBwYXJ0aWN1bGFyIGNvbXByZXNzaW9uIHVzaW5nIHRoZSBtYXBwaW5nCiAgICAjIGZyb20gT1BFTl9NRVRILgogICAgIwogICAgIyBUaGlzIGNvbmNlcHQgYWxsb3dzIG9uZSB0byBzdWJjbGFzcyBUYXJGaWxlIHdpdGhvdXQgbG9zaW5nIHRoZSBjb21mb3J0IG9mCiAgICAjIHRoZSBzdXBlci1jb25zdHJ1Y3Rvci4gQSBzdWItY29uc3RydWN0b3IgaXMgcmVnaXN0ZXJlZCBhbmQgbWFkZSBhdmFpbGFibGUKICAgICMgYnkgYWRkaW5nIGl0IHRvIHRoZSBtYXBwaW5nIGluIE9QRU5fTUVUSC4KCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBvcGVuKGNscywgbmFtZT1Ob25lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCBidWZzaXplPVJFQ09SRFNJWkUsICoqa3dhcmdzKToKICAgICAgICAiIiJPcGVuIGEgdGFyIGFyY2hpdmUgZm9yIHJlYWRpbmcsIHdyaXRpbmcgb3IgYXBwZW5kaW5nLiBSZXR1cm4KICAgICAgICAgICBhbiBhcHByb3ByaWF0ZSBUYXJGaWxlIGNsYXNzLgoKICAgICAgICAgICBtb2RlOgogICAgICAgICAgICdyJyBvciAncjoqJyBvcGVuIGZvciByZWFkaW5nIHdpdGggdHJhbnNwYXJlbnQgY29tcHJlc3Npb24KICAgICAgICAgICAncjonICAgICAgICAgb3BlbiBmb3IgcmVhZGluZyBleGNsdXNpdmVseSB1bmNvbXByZXNzZWQKICAgICAgICAgICAncjpneicgICAgICAgb3BlbiBmb3IgcmVhZGluZyB3aXRoIGd6aXAgY29tcHJlc3Npb24KICAgICAgICAgICAncjpiejInICAgICAgb3BlbiBmb3IgcmVhZGluZyB3aXRoIGJ6aXAyIGNvbXByZXNzaW9uCiAgICAgICAgICAgJ3I6eHonICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAgICAgICAgICAgJ2EnIG9yICdhOicgIG9wZW4gZm9yIGFwcGVuZGluZywgY3JlYXRpbmcgdGhlIGZpbGUgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgJ3cnIG9yICd3OicgIG9wZW4gZm9yIHdyaXRpbmcgd2l0aG91dCBjb21wcmVzc2lvbgogICAgICAgICAgICd3Omd6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggZ3ppcCBjb21wcmVzc2lvbgogICAgICAgICAgICd3OmJ6MicgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KICAgICAgICAgICAndzp4eicgICAgICAgb3BlbiBmb3Igd3JpdGluZyB3aXRoIGx6bWEgY29tcHJlc3Npb24KCiAgICAgICAgICAgJ3gnIG9yICd4OicgIGNyZWF0ZSBhIHRhcmZpbGUgZXhjbHVzaXZlbHkgd2l0aG91dCBjb21wcmVzc2lvbiwgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgYW4gZXhjZXB0aW9uIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY3JlYXRlZAogICAgICAgICAgICd4Omd6JyAgICAgICBjcmVhdGUgYSBnemlwIGNvbXByZXNzZWQgdGFyZmlsZSwgcmFpc2UgYW4gZXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY3JlYXRlZAogICAgICAgICAgICd4OmJ6MicgICAgICBjcmVhdGUgYSBiemlwMiBjb21wcmVzc2VkIHRhcmZpbGUsIHJhaXNlIGFuIGV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAneDp4eicgICAgICAgY3JlYXRlIGFuIGx6bWEgY29tcHJlc3NlZCB0YXJmaWxlLCByYWlzZSBhbiBleGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCgogICAgICAgICAgICdyfConICAgICAgICBvcGVuIGEgc3RyZWFtIG9mIHRhciBibG9ja3Mgd2l0aCB0cmFuc3BhcmVudCBjb21wcmVzc2lvbgogICAgICAgICAgICdyfCcgICAgICAgICBvcGVuIGFuIHVuY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcyBmb3IgcmVhZGluZwogICAgICAgICAgICdyfGd6JyAgICAgICBvcGVuIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCiAgICAgICAgICAgJ3J8YnoyJyAgICAgIG9wZW4gYSBiemlwMiBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCiAgICAgICAgICAgJ3J8eHonICAgICAgIG9wZW4gYW4gbHptYSBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCiAgICAgICAgICAgJ3d8JyAgICAgICAgIG9wZW4gYW4gdW5jb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZwogICAgICAgICAgICd3fGd6JyAgICAgICBvcGVuIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZwogICAgICAgICAgICd3fGJ6MicgICAgICBvcGVuIGEgYnppcDIgY29tcHJlc3NlZCBzdHJlYW0gZm9yIHdyaXRpbmcKICAgICAgICAgICAnd3x4eicgICAgICAgb3BlbiBhbiBsem1hIGNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCiAgICAgICAgIiIiCgogICAgICAgIGlmIG5vdCBuYW1lIGFuZCBub3QgZmlsZW9iajoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm90aGluZyB0byBvcGVuIikKCiAgICAgICAgaWYgbW9kZSBpbiAoInIiLCAicjoqIik6CiAgICAgICAgICAgICMgRmluZCBvdXQgd2hpY2ggKm9wZW4oKSBpcyBhcHByb3ByaWF0ZSBmb3Igb3BlbmluZyB0aGUgZmlsZS4KICAgICAgICAgICAgZGVmIG5vdF9jb21wcmVzc2VkKGNvbXB0eXBlKToKICAgICAgICAgICAgICAgIHJldHVybiBjbHMuT1BFTl9NRVRIW2NvbXB0eXBlXSA9PSAndGFyb3BlbicKICAgICAgICAgICAgZXJyb3JfbXNncyA9IFtdCiAgICAgICAgICAgIGZvciBjb21wdHlwZSBpbiBzb3J0ZWQoY2xzLk9QRU5fTUVUSCwga2V5PW5vdF9jb21wcmVzc2VkKToKICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKGNscywgY2xzLk9QRU5fTUVUSFtjb21wdHlwZV0pCiAgICAgICAgICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHNhdmVkX3BvcyA9IGZpbGVvYmoudGVsbCgpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMobmFtZSwgInIiLCBmaWxlb2JqLCAqKmt3YXJncykKICAgICAgICAgICAgICAgIGV4Y2VwdCAoUmVhZEVycm9yLCBDb21wcmVzc2lvbkVycm9yKSBhcyBlOgogICAgICAgICAgICAgICAgICAgIGVycm9yX21zZ3MuYXBwZW5kKGYnLSBtZXRob2Qge2NvbXB0eXBlfToge2Uhcn0nKQogICAgICAgICAgICAgICAgICAgIGlmIGZpbGVvYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVvYmouc2VlayhzYXZlZF9wb3MpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZXJyb3JfbXNnc19zdW1tYXJ5ID0gJ1xuJy5qb2luKGVycm9yX21zZ3MpCiAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcihmImZpbGUgY291bGQgbm90IGJlIG9wZW5lZCBzdWNjZXNzZnVsbHk6XG57ZXJyb3JfbXNnc19zdW1tYXJ5fSIpCgogICAgICAgIGVsaWYgIjoiIGluIG1vZGU6CiAgICAgICAgICAgIGZpbGVtb2RlLCBjb21wdHlwZSA9IG1vZGUuc3BsaXQoIjoiLCAxKQogICAgICAgICAgICBmaWxlbW9kZSA9IGZpbGVtb2RlIG9yICJyIgogICAgICAgICAgICBjb21wdHlwZSA9IGNvbXB0eXBlIG9yICJ0YXIiCgogICAgICAgICAgICAjIFNlbGVjdCB0aGUgKm9wZW4oKSBmdW5jdGlvbiBhY2NvcmRpbmcgdG8KICAgICAgICAgICAgIyBnaXZlbiBjb21wcmVzc2lvbi4KICAgICAgICAgICAgaWYgY29tcHR5cGUgaW4gY2xzLk9QRU5fTUVUSDoKICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKGNscywgY2xzLk9QRU5fTUVUSFtjb21wdHlwZV0pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJ1bmtub3duIGNvbXByZXNzaW9uIHR5cGUgJXIiICUgY29tcHR5cGUpCiAgICAgICAgICAgIHJldHVybiBmdW5jKG5hbWUsIGZpbGVtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKCiAgICAgICAgZWxpZiAifCIgaW4gbW9kZToKICAgICAgICAgICAgZmlsZW1vZGUsIGNvbXB0eXBlID0gbW9kZS5zcGxpdCgifCIsIDEpCiAgICAgICAgICAgIGZpbGVtb2RlID0gZmlsZW1vZGUgb3IgInIiCiAgICAgICAgICAgIGNvbXB0eXBlID0gY29tcHR5cGUgb3IgInRhciIKCiAgICAgICAgICAgIGlmIGZpbGVtb2RlIG5vdCBpbiAoInIiLCAidyIpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJyBvciAndyciKQoKICAgICAgICAgICAgc3RyZWFtID0gX1N0cmVhbShuYW1lLCBmaWxlbW9kZSwgY29tcHR5cGUsIGZpbGVvYmosIGJ1ZnNpemUpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHQgPSBjbHMobmFtZSwgZmlsZW1vZGUsIHN0cmVhbSwgKiprd2FyZ3MpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKICAgICAgICAgICAgcmV0dXJuIHQKCiAgICAgICAgZWxpZiBtb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgcmV0dXJuIGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmRpc2Nlcm5pYmxlIG1vZGUiKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHRhcm9wZW4oY2xzLCBuYW1lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIiIiT3BlbiB1bmNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICIiIgogICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJhIiwgInciLCAieCIpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAnYScsICd3JyBvciAneCciKQogICAgICAgIHJldHVybiBjbHMobmFtZSwgbW9kZSwgZmlsZW9iaiwgKiprd2FyZ3MpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZ3pvcGVuKGNscywgbmFtZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgY29tcHJlc3NsZXZlbD05LCAqKmt3YXJncyk6CiAgICAgICAgIiIiT3BlbiBnemlwIGNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICAgIEFwcGVuZGluZyBpcyBub3QgYWxsb3dlZC4KICAgICAgICAiIiIKICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJ4Iik6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICd3JyBvciAneCciKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZyb20gZ3ppcCBpbXBvcnQgR3ppcEZpbGUKICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImd6aXAgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKSBmcm9tIE5vbmUKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWxlb2JqID0gR3ppcEZpbGUobmFtZSwgbW9kZSArICJiIiwgY29tcHJlc3NsZXZlbCwgZmlsZW9iaikKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lIGFuZCBtb2RlID09ICdyJzoKICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcigibm90IGEgZ3ppcCBmaWxlIikgZnJvbSBlCiAgICAgICAgICAgIHJhaXNlCgogICAgICAgIHRyeToKICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIGZpbGVvYmouY2xvc2UoKQogICAgICAgICAgICBpZiBtb2RlID09ICdyJzoKICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcigibm90IGEgZ3ppcCBmaWxlIikgZnJvbSBlCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBmaWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgcmFpc2UKICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKICAgICAgICByZXR1cm4gdAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGJ6Mm9wZW4oY2xzLCBuYW1lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCBjb21wcmVzc2xldmVsPTksICoqa3dhcmdzKToKICAgICAgICAiIiJPcGVuIGJ6aXAyIGNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICAgIEFwcGVuZGluZyBpcyBub3QgYWxsb3dlZC4KICAgICAgICAiIiIKICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJ4Iik6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICd3JyBvciAneCciKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZyb20gYnoyIGltcG9ydCBCWjJGaWxlCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJiejIgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKSBmcm9tIE5vbmUKCiAgICAgICAgZmlsZW9iaiA9IEJaMkZpbGUoZmlsZW9iaiBvciBuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCgogICAgICAgIHRyeToKICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQogICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRU9GRXJyb3IpIGFzIGU6CiAgICAgICAgICAgIGZpbGVvYmouY2xvc2UoKQogICAgICAgICAgICBpZiBtb2RlID09ICdyJzoKICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcigibm90IGEgYnppcDIgZmlsZSIpIGZyb20gZQogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgZmlsZW9iai5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgdC5fZXh0ZmlsZW9iaiA9IEZhbHNlCiAgICAgICAgcmV0dXJuIHQKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiB4em9wZW4oY2xzLCBuYW1lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCBwcmVzZXQ9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICIiIk9wZW4gbHptYSBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgICBBcHBlbmRpbmcgaXMgbm90IGFsbG93ZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciLCAieCIpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAndycgb3IgJ3gnIikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmcm9tIGx6bWEgaW1wb3J0IExaTUFGaWxlLCBMWk1BRXJyb3IKICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImx6bWEgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKSBmcm9tIE5vbmUKCiAgICAgICAgZmlsZW9iaiA9IExaTUFGaWxlKGZpbGVvYmogb3IgbmFtZSwgbW9kZSwgcHJlc2V0PXByZXNldCkKCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0ID0gY2xzLnRhcm9wZW4obmFtZSwgbW9kZSwgZmlsZW9iaiwgKiprd2FyZ3MpCiAgICAgICAgZXhjZXB0IChMWk1BRXJyb3IsIEVPRkVycm9yKSBhcyBlOgogICAgICAgICAgICBmaWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgaWYgbW9kZSA9PSAncic6CiAgICAgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoIm5vdCBhbiBsem1hIGZpbGUiKSBmcm9tIGUKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIGZpbGVvYmouY2xvc2UoKQogICAgICAgICAgICByYWlzZQogICAgICAgIHQuX2V4dGZpbGVvYmogPSBGYWxzZQogICAgICAgIHJldHVybiB0CgogICAgIyBBbGwgKm9wZW4oKSBtZXRob2RzIGFyZSByZWdpc3RlcmVkIGhlcmUuCiAgICBPUEVOX01FVEggPSB7CiAgICAgICAgInRhciI6ICJ0YXJvcGVuIiwgICAjIHVuY29tcHJlc3NlZCB0YXIKICAgICAgICAiZ3oiOiAgImd6b3BlbiIsICAgICMgZ3ppcCBjb21wcmVzc2VkIHRhcgogICAgICAgICJiejIiOiAiYnoyb3BlbiIsICAgIyBiemlwMiBjb21wcmVzc2VkIHRhcgogICAgICAgICJ4eiI6ICAieHpvcGVuIiAgICAgIyBsem1hIGNvbXByZXNzZWQgdGFyCiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFRoZSBwdWJsaWMgbWV0aG9kcyB3aGljaCBUYXJGaWxlIHByb3ZpZGVzOgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgVGFyRmlsZS4gSW4gd3JpdGUtbW9kZSwgdHdvIGZpbmlzaGluZyB6ZXJvIGJsb2NrcyBhcmUKICAgICAgICAgICBhcHBlbmRlZCB0byB0aGUgYXJjaGl2ZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShOVUwgKiAoQkxPQ0tTSVpFICogMikpCiAgICAgICAgICAgICAgICBzZWxmLm9mZnNldCArPSAoQkxPQ0tTSVpFICogMikKICAgICAgICAgICAgICAgICMgZmlsbCB1cCB0aGUgZW5kIHdpdGggemVyby1ibG9ja3MKICAgICAgICAgICAgICAgICMgKGxpa2Ugb3B0aW9uIC1iMjAgZm9yIHRhciBkb2VzKQogICAgICAgICAgICAgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2Qoc2VsZi5vZmZzZXQsIFJFQ09SRFNJWkUpCiAgICAgICAgICAgICAgICBpZiByZW1haW5kZXIgPiAwOgogICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShOVUwgKiAoUkVDT1JEU0laRSAtIHJlbWFpbmRlcikpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgaWYgbm90IHNlbGYuX2V4dGZpbGVvYmo6CiAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmouY2xvc2UoKQoKICAgIGRlZiBnZXRtZW1iZXIoc2VsZiwgbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIGEgVGFySW5mbyBvYmplY3QgZm9yIG1lbWJlciBgbmFtZScuIElmIGBuYW1lJyBjYW4gbm90IGJlCiAgICAgICAgICAgZm91bmQgaW4gdGhlIGFyY2hpdmUsIEtleUVycm9yIGlzIHJhaXNlZC4gSWYgYSBtZW1iZXIgb2NjdXJzIG1vcmUKICAgICAgICAgICB0aGFuIG9uY2UgaW4gdGhlIGFyY2hpdmUsIGl0cyBsYXN0IG9jY3VycmVuY2UgaXMgYXNzdW1lZCB0byBiZSB0aGUKICAgICAgICAgICBtb3N0IHVwLXRvLWRhdGUgdmVyc2lvbi4KICAgICAgICAiIiIKICAgICAgICB0YXJpbmZvID0gc2VsZi5fZ2V0bWVtYmVyKG5hbWUucnN0cmlwKCcvJykpCiAgICAgICAgaWYgdGFyaW5mbyBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiZmlsZW5hbWUgJXIgbm90IGZvdW5kIiAlIG5hbWUpCiAgICAgICAgcmV0dXJuIHRhcmluZm8KCiAgICBkZWYgZ2V0bWVtYmVycyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIG1lbWJlcnMgb2YgdGhlIGFyY2hpdmUgYXMgYSBsaXN0IG9mIFRhckluZm8gb2JqZWN0cy4gVGhlCiAgICAgICAgICAgbGlzdCBoYXMgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIG1lbWJlcnMgaW4gdGhlIGFyY2hpdmUuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2soKQogICAgICAgIGlmIG5vdCBzZWxmLl9sb2FkZWQ6ICAgICMgaWYgd2Ugd2FudCB0byBvYnRhaW4gYSBsaXN0IG9mCiAgICAgICAgICAgIHNlbGYuX2xvYWQoKSAgICAgICAgIyBhbGwgbWVtYmVycywgd2UgZmlyc3QgaGF2ZSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2NhbiB0aGUgd2hvbGUgYXJjaGl2ZS4KICAgICAgICByZXR1cm4gc2VsZi5tZW1iZXJzCgogICAgZGVmIGdldG5hbWVzKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgbWVtYmVycyBvZiB0aGUgYXJjaGl2ZSBhcyBhIGxpc3Qgb2YgdGhlaXIgbmFtZXMuIEl0IGhhcwogICAgICAgICAgIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBsaXN0IHJldHVybmVkIGJ5IGdldG1lbWJlcnMoKS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gW3RhcmluZm8ubmFtZSBmb3IgdGFyaW5mbyBpbiBzZWxmLmdldG1lbWJlcnMoKV0KCiAgICBkZWYgZ2V0dGFyaW5mbyhzZWxmLCBuYW1lPU5vbmUsIGFyY25hbWU9Tm9uZSwgZmlsZW9iaj1Ob25lKToKICAgICAgICAiIiJDcmVhdGUgYSBUYXJJbmZvIG9iamVjdCBmcm9tIHRoZSByZXN1bHQgb2Ygb3Muc3RhdCBvciBlcXVpdmFsZW50CiAgICAgICAgICAgb24gYW4gZXhpc3RpbmcgZmlsZS4gVGhlIGZpbGUgaXMgZWl0aGVyIG5hbWVkIGJ5IGBuYW1lJywgb3IKICAgICAgICAgICBzcGVjaWZpZWQgYXMgYSBmaWxlIG9iamVjdCBgZmlsZW9iaicgd2l0aCBhIGZpbGUgZGVzY3JpcHRvci4gSWYKICAgICAgICAgICBnaXZlbiwgYGFyY25hbWUnIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSBuYW1lIGZvciB0aGUgZmlsZSBpbiB0aGUKICAgICAgICAgICBhcmNoaXZlLCBvdGhlcndpc2UsIHRoZSBuYW1lIGlzIHRha2VuIGZyb20gdGhlICduYW1lJyBhdHRyaWJ1dGUgb2YKICAgICAgICAgICAnZmlsZW9iaicsIG9yIHRoZSAnbmFtZScgYXJndW1lbnQuIFRoZSBuYW1lIHNob3VsZCBiZSBhIHRleHQKICAgICAgICAgICBzdHJpbmcuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2soImF3eCIpCgogICAgICAgICMgV2hlbiBmaWxlb2JqIGlzIGdpdmVuLCByZXBsYWNlIG5hbWUgYnkKICAgICAgICAjIGZpbGVvYmoncyByZWFsIG5hbWUuCiAgICAgICAgaWYgZmlsZW9iaiBpcyBub3QgTm9uZToKICAgICAgICAgICAgbmFtZSA9IGZpbGVvYmoubmFtZQoKICAgICAgICAjIEJ1aWxkaW5nIHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgaW4gdGhlIGFyY2hpdmUuCiAgICAgICAgIyBCYWNrd2FyZCBzbGFzaGVzIGFyZSBjb252ZXJ0ZWQgdG8gZm9yd2FyZCBzbGFzaGVzLAogICAgICAgICMgQWJzb2x1dGUgcGF0aHMgYXJlIHR1cm5lZCB0byByZWxhdGl2ZSBwYXRocy4KICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIGFyY25hbWUgPSBuYW1lCiAgICAgICAgZHJ2LCBhcmNuYW1lID0gb3MucGF0aC5zcGxpdGRyaXZlKGFyY25hbWUpCiAgICAgICAgYXJjbmFtZSA9IGFyY25hbWUucmVwbGFjZShvcy5zZXAsICIvIikKICAgICAgICBhcmNuYW1lID0gYXJjbmFtZS5sc3RyaXAoIi8iKQoKICAgICAgICAjIE5vdywgZmlsbCB0aGUgVGFySW5mbyBvYmplY3Qgd2l0aAogICAgICAgICMgaW5mb3JtYXRpb24gc3BlY2lmaWMgZm9yIHRoZSBmaWxlLgogICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmluZm8oKQogICAgICAgIHRhcmluZm8udGFyZmlsZSA9IHNlbGYgICMgTm90IG5lZWRlZAoKICAgICAgICAjIFVzZSBvcy5zdGF0IG9yIG9zLmxzdGF0LCBkZXBlbmRpbmcgb24gaWYgc3ltbGlua3Mgc2hhbGwgYmUgcmVzb2x2ZWQuCiAgICAgICAgaWYgZmlsZW9iaiBpcyBOb25lOgogICAgICAgICAgICBpZiBub3Qgc2VsZi5kZXJlZmVyZW5jZToKICAgICAgICAgICAgICAgIHN0YXRyZXMgPSBvcy5sc3RhdChuYW1lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc3RhdHJlcyA9IG9zLnN0YXQobmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzdGF0cmVzID0gb3MuZnN0YXQoZmlsZW9iai5maWxlbm8oKSkKICAgICAgICBsaW5rbmFtZSA9ICIiCgogICAgICAgIHN0bWQgPSBzdGF0cmVzLnN0X21vZGUKICAgICAgICBpZiBzdGF0LlNfSVNSRUcoc3RtZCk6CiAgICAgICAgICAgIGlub2RlID0gKHN0YXRyZXMuc3RfaW5vLCBzdGF0cmVzLnN0X2RldikKICAgICAgICAgICAgaWYgbm90IHNlbGYuZGVyZWZlcmVuY2UgYW5kIHN0YXRyZXMuc3RfbmxpbmsgPiAxIGFuZCBcCiAgICAgICAgICAgICAgICAgICAgaW5vZGUgaW4gc2VsZi5pbm9kZXMgYW5kIGFyY25hbWUgIT0gc2VsZi5pbm9kZXNbaW5vZGVdOgogICAgICAgICAgICAgICAgIyBJcyBpdCBhIGhhcmRsaW5rIHRvIGFuIGFscmVhZHkKICAgICAgICAgICAgICAgICMgYXJjaGl2ZWQgZmlsZT8KICAgICAgICAgICAgICAgIHR5cGUgPSBMTktUWVBFCiAgICAgICAgICAgICAgICBsaW5rbmFtZSA9IHNlbGYuaW5vZGVzW2lub2RlXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBUaGUgaW5vZGUgaXMgYWRkZWQgb25seSBpZiBpdHMgdmFsaWQuCiAgICAgICAgICAgICAgICAjIEZvciB3aW4zMiBpdCBpcyBhbHdheXMgMC4KICAgICAgICAgICAgICAgIHR5cGUgPSBSRUdUWVBFCiAgICAgICAgICAgICAgICBpZiBpbm9kZVswXToKICAgICAgICAgICAgICAgICAgICBzZWxmLmlub2Rlc1tpbm9kZV0gPSBhcmNuYW1lCiAgICAgICAgZWxpZiBzdGF0LlNfSVNESVIoc3RtZCk6CiAgICAgICAgICAgIHR5cGUgPSBESVJUWVBFCiAgICAgICAgZWxpZiBzdGF0LlNfSVNGSUZPKHN0bWQpOgogICAgICAgICAgICB0eXBlID0gRklGT1RZUEUKICAgICAgICBlbGlmIHN0YXQuU19JU0xOSyhzdG1kKToKICAgICAgICAgICAgdHlwZSA9IFNZTVRZUEUKICAgICAgICAgICAgbGlua25hbWUgPSBvcy5yZWFkbGluayhuYW1lKQogICAgICAgIGVsaWYgc3RhdC5TX0lTQ0hSKHN0bWQpOgogICAgICAgICAgICB0eXBlID0gQ0hSVFlQRQogICAgICAgIGVsaWYgc3RhdC5TX0lTQkxLKHN0bWQpOgogICAgICAgICAgICB0eXBlID0gQkxLVFlQRQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgICMgRmlsbCB0aGUgVGFySW5mbyBvYmplY3Qgd2l0aCBhbGwKICAgICAgICAjIGluZm9ybWF0aW9uIHdlIGNhbiBnZXQuCiAgICAgICAgdGFyaW5mby5uYW1lID0gYXJjbmFtZQogICAgICAgIHRhcmluZm8ubW9kZSA9IHN0bWQKICAgICAgICB0YXJpbmZvLnVpZCA9IHN0YXRyZXMuc3RfdWlkCiAgICAgICAgdGFyaW5mby5naWQgPSBzdGF0cmVzLnN0X2dpZAogICAgICAgIGlmIHR5cGUgPT0gUkVHVFlQRToKICAgICAgICAgICAgdGFyaW5mby5zaXplID0gc3RhdHJlcy5zdF9zaXplCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGFyaW5mby5zaXplID0gMAogICAgICAgIHRhcmluZm8ubXRpbWUgPSBzdGF0cmVzLnN0X210aW1lCiAgICAgICAgdGFyaW5mby50eXBlID0gdHlwZQogICAgICAgIHRhcmluZm8ubGlua25hbWUgPSBsaW5rbmFtZQogICAgICAgIGlmIHB3ZDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdGFyaW5mby51bmFtZSA9IHB3ZC5nZXRwd3VpZCh0YXJpbmZvLnVpZClbMF0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIGlmIGdycDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdGFyaW5mby5nbmFtZSA9IGdycC5nZXRncmdpZCh0YXJpbmZvLmdpZClbMF0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICBpZiB0eXBlIGluIChDSFJUWVBFLCBCTEtUWVBFKToKICAgICAgICAgICAgaWYgaGFzYXR0cihvcywgIm1ham9yIikgYW5kIGhhc2F0dHIob3MsICJtaW5vciIpOgogICAgICAgICAgICAgICAgdGFyaW5mby5kZXZtYWpvciA9IG9zLm1ham9yKHN0YXRyZXMuc3RfcmRldikKICAgICAgICAgICAgICAgIHRhcmluZm8uZGV2bWlub3IgPSBvcy5taW5vcihzdGF0cmVzLnN0X3JkZXYpCiAgICAgICAgcmV0dXJuIHRhcmluZm8KCiAgICBkZWYgbGlzdChzZWxmLCB2ZXJib3NlPVRydWUsICosIG1lbWJlcnM9Tm9uZSk6CiAgICAgICAgIiIiUHJpbnQgYSB0YWJsZSBvZiBjb250ZW50cyB0byBzeXMuc3Rkb3V0LiBJZiBgdmVyYm9zZScgaXMgRmFsc2UsIG9ubHkKICAgICAgICAgICB0aGUgbmFtZXMgb2YgdGhlIG1lbWJlcnMgYXJlIHByaW50ZWQuIElmIGl0IGlzIFRydWUsIGFuIGBscyAtbCctbGlrZQogICAgICAgICAgIG91dHB1dCBpcyBwcm9kdWNlZC4gYG1lbWJlcnMnIGlzIG9wdGlvbmFsIGFuZCBtdXN0IGJlIGEgc3Vic2V0IG9mIHRoZQogICAgICAgICAgIGxpc3QgcmV0dXJuZWQgYnkgZ2V0bWVtYmVycygpLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrKCkKCiAgICAgICAgaWYgbWVtYmVycyBpcyBOb25lOgogICAgICAgICAgICBtZW1iZXJzID0gc2VsZgogICAgICAgIGZvciB0YXJpbmZvIGluIG1lbWJlcnM6CiAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICBfc2FmZV9wcmludChzdGF0LmZpbGVtb2RlKHRhcmluZm8ubW9kZSkpCiAgICAgICAgICAgICAgICBfc2FmZV9wcmludCgiJXMvJXMiICUgKHRhcmluZm8udW5hbWUgb3IgdGFyaW5mby51aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8uZ25hbWUgb3IgdGFyaW5mby5naWQpKQogICAgICAgICAgICAgICAgaWYgdGFyaW5mby5pc2NocigpIG9yIHRhcmluZm8uaXNibGsoKToKICAgICAgICAgICAgICAgICAgICBfc2FmZV9wcmludCgiJTEwcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCIlZCwlZCIgJSAodGFyaW5mby5kZXZtYWpvciwgdGFyaW5mby5kZXZtaW5vcikpKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBfc2FmZV9wcmludCgiJTEwZCIgJSB0YXJpbmZvLnNpemUpCiAgICAgICAgICAgICAgICBfc2FmZV9wcmludCgiJWQtJTAyZC0lMDJkICUwMmQ6JTAyZDolMDJkIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHRpbWUubG9jYWx0aW1lKHRhcmluZm8ubXRpbWUpWzo2XSkKCiAgICAgICAgICAgIF9zYWZlX3ByaW50KHRhcmluZm8ubmFtZSArICgiLyIgaWYgdGFyaW5mby5pc2RpcigpIGVsc2UgIiIpKQoKICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgIGlmIHRhcmluZm8uaXNzeW0oKToKICAgICAgICAgICAgICAgICAgICBfc2FmZV9wcmludCgiLT4gIiArIHRhcmluZm8ubGlua25hbWUpCiAgICAgICAgICAgICAgICBpZiB0YXJpbmZvLmlzbG5rKCk6CiAgICAgICAgICAgICAgICAgICAgX3NhZmVfcHJpbnQoImxpbmsgdG8gIiArIHRhcmluZm8ubGlua25hbWUpCiAgICAgICAgICAgIHByaW50KCkKCiAgICBkZWYgYWRkKHNlbGYsIG5hbWUsIGFyY25hbWU9Tm9uZSwgcmVjdXJzaXZlPVRydWUsICosIGZpbHRlcj1Ob25lKToKICAgICAgICAiIiJBZGQgdGhlIGZpbGUgYG5hbWUnIHRvIHRoZSBhcmNoaXZlLiBgbmFtZScgbWF5IGJlIGFueSB0eXBlIG9mIGZpbGUKICAgICAgICAgICAoZGlyZWN0b3J5LCBmaWZvLCBzeW1ib2xpYyBsaW5rLCBldGMuKS4gSWYgZ2l2ZW4sIGBhcmNuYW1lJwogICAgICAgICAgIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSBuYW1lIGZvciB0aGUgZmlsZSBpbiB0aGUgYXJjaGl2ZS4KICAgICAgICAgICBEaXJlY3RvcmllcyBhcmUgYWRkZWQgcmVjdXJzaXZlbHkgYnkgZGVmYXVsdC4gVGhpcyBjYW4gYmUgYXZvaWRlZCBieQogICAgICAgICAgIHNldHRpbmcgYHJlY3Vyc2l2ZScgdG8gRmFsc2UuIGBmaWx0ZXInIGlzIGEgZnVuY3Rpb24KICAgICAgICAgICB0aGF0IGV4cGVjdHMgYSBUYXJJbmZvIG9iamVjdCBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgY2hhbmdlZAogICAgICAgICAgIFRhckluZm8gb2JqZWN0LCBpZiBpdCByZXR1cm5zIE5vbmUgdGhlIFRhckluZm8gb2JqZWN0IHdpbGwgYmUKICAgICAgICAgICBleGNsdWRlZCBmcm9tIHRoZSBhcmNoaXZlLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrKCJhd3giKQoKICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIGFyY25hbWUgPSBuYW1lCgogICAgICAgICMgU2tpcCBpZiBzb21lYm9keSB0cmllcyB0byBhcmNoaXZlIHRoZSBhcmNoaXZlLi4uCiAgICAgICAgaWYgc2VsZi5uYW1lIGlzIG5vdCBOb25lIGFuZCBvcy5wYXRoLmFic3BhdGgobmFtZSkgPT0gc2VsZi5uYW1lOgogICAgICAgICAgICBzZWxmLl9kYmcoMiwgInRhcmZpbGU6IFNraXBwZWQgJXIiICUgbmFtZSkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHNlbGYuX2RiZygxLCBuYW1lKQoKICAgICAgICAjIENyZWF0ZSBhIFRhckluZm8gb2JqZWN0IGZyb20gdGhlIGZpbGUuCiAgICAgICAgdGFyaW5mbyA9IHNlbGYuZ2V0dGFyaW5mbyhuYW1lLCBhcmNuYW1lKQoKICAgICAgICBpZiB0YXJpbmZvIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2RiZygxLCAidGFyZmlsZTogVW5zdXBwb3J0ZWQgdHlwZSAlciIgJSBuYW1lKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBDaGFuZ2Ugb3IgZXhjbHVkZSB0aGUgVGFySW5mbyBvYmplY3QuCiAgICAgICAgaWYgZmlsdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICB0YXJpbmZvID0gZmlsdGVyKHRhcmluZm8pCiAgICAgICAgICAgIGlmIHRhcmluZm8gaXMgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX2RiZygyLCAidGFyZmlsZTogRXhjbHVkZWQgJXIiICUgbmFtZSkKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIEFwcGVuZCB0aGUgdGFyIGhlYWRlciBhbmQgZGF0YSB0byB0aGUgYXJjaGl2ZS4KICAgICAgICBpZiB0YXJpbmZvLmlzcmVnKCk6CiAgICAgICAgICAgIHdpdGggYmx0bl9vcGVuKG5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICAgICBzZWxmLmFkZGZpbGUodGFyaW5mbywgZikKCiAgICAgICAgZWxpZiB0YXJpbmZvLmlzZGlyKCk6CiAgICAgICAgICAgIHNlbGYuYWRkZmlsZSh0YXJpbmZvKQogICAgICAgICAgICBpZiByZWN1cnNpdmU6CiAgICAgICAgICAgICAgICBmb3IgZiBpbiBzb3J0ZWQob3MubGlzdGRpcihuYW1lKSk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQob3MucGF0aC5qb2luKG5hbWUsIGYpLCBvcy5wYXRoLmpvaW4oYXJjbmFtZSwgZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmUsIGZpbHRlcj1maWx0ZXIpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuYWRkZmlsZSh0YXJpbmZvKQoKICAgIGRlZiBhZGRmaWxlKHNlbGYsIHRhcmluZm8sIGZpbGVvYmo9Tm9uZSk6CiAgICAgICAgIiIiQWRkIHRoZSBUYXJJbmZvIG9iamVjdCBgdGFyaW5mbycgdG8gdGhlIGFyY2hpdmUuIElmIGBmaWxlb2JqJyBpcwogICAgICAgICAgIGdpdmVuLCBpdCBzaG91bGQgYmUgYSBiaW5hcnkgZmlsZSwgYW5kIHRhcmluZm8uc2l6ZSBieXRlcyBhcmUgcmVhZAogICAgICAgICAgIGZyb20gaXQgYW5kIGFkZGVkIHRvIHRoZSBhcmNoaXZlLiBZb3UgY2FuIGNyZWF0ZSBUYXJJbmZvIG9iamVjdHMKICAgICAgICAgICBkaXJlY3RseSwgb3IgYnkgdXNpbmcgZ2V0dGFyaW5mbygpLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrKCJhd3giKQoKICAgICAgICB0YXJpbmZvID0gY29weS5jb3B5KHRhcmluZm8pCgogICAgICAgIGJ1ZiA9IHRhcmluZm8udG9idWYoc2VsZi5mb3JtYXQsIHNlbGYuZW5jb2RpbmcsIHNlbGYuZXJyb3JzKQogICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShidWYpCiAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuKGJ1ZikKICAgICAgICBidWZzaXplPXNlbGYuY29weWJ1ZnNpemUKICAgICAgICAjIElmIHRoZXJlJ3MgZGF0YSB0byBmb2xsb3csIGFwcGVuZCBpdC4KICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICBjb3B5ZmlsZW9iaihmaWxlb2JqLCBzZWxmLmZpbGVvYmosIHRhcmluZm8uc2l6ZSwgYnVmc2l6ZT1idWZzaXplKQogICAgICAgICAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZCh0YXJpbmZvLnNpemUsIEJMT0NLU0laRSkKICAgICAgICAgICAgaWYgcmVtYWluZGVyID4gMDoKICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShOVUwgKiAoQkxPQ0tTSVpFIC0gcmVtYWluZGVyKSkKICAgICAgICAgICAgICAgIGJsb2NrcyArPSAxCiAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGJsb2NrcyAqIEJMT0NLU0laRQoKICAgICAgICBzZWxmLm1lbWJlcnMuYXBwZW5kKHRhcmluZm8pCgogICAgZGVmIGV4dHJhY3RhbGwoc2VsZiwgcGF0aD0iLiIsIG1lbWJlcnM9Tm9uZSwgKiwgbnVtZXJpY19vd25lcj1GYWxzZSk6CiAgICAgICAgIiIiRXh0cmFjdCBhbGwgbWVtYmVycyBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcKICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHNldCBvd25lciwgbW9kaWZpY2F0aW9uIHRpbWUgYW5kIHBlcm1pc3Npb25zIG9uCiAgICAgICAgICAgZGlyZWN0b3JpZXMgYWZ0ZXJ3YXJkcy4gYHBhdGgnIHNwZWNpZmllcyBhIGRpZmZlcmVudCBkaXJlY3RvcnkKICAgICAgICAgICB0byBleHRyYWN0IHRvLiBgbWVtYmVycycgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlCiAgICAgICAgICAgbGlzdCByZXR1cm5lZCBieSBnZXRtZW1iZXJzKCkuIElmIGBudW1lcmljX293bmVyYCBpcyBUcnVlLCBvbmx5CiAgICAgICAgICAgdGhlIG51bWJlcnMgZm9yIHVzZXIvZ3JvdXAgbmFtZXMgYXJlIHVzZWQgYW5kIG5vdCB0aGUgbmFtZXMuCiAgICAgICAgIiIiCiAgICAgICAgZGlyZWN0b3JpZXMgPSBbXQoKICAgICAgICBpZiBtZW1iZXJzIGlzIE5vbmU6CiAgICAgICAgICAgIG1lbWJlcnMgPSBzZWxmCgogICAgICAgIGZvciB0YXJpbmZvIGluIG1lbWJlcnM6CiAgICAgICAgICAgIGlmIHRhcmluZm8uaXNkaXIoKToKICAgICAgICAgICAgICAgICMgRXh0cmFjdCBkaXJlY3RvcmllcyB3aXRoIGEgc2FmZSBtb2RlLgogICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHRhcmluZm8pCiAgICAgICAgICAgICAgICB0YXJpbmZvID0gY29weS5jb3B5KHRhcmluZm8pCiAgICAgICAgICAgICAgICB0YXJpbmZvLm1vZGUgPSAwbzcwMAogICAgICAgICAgICAjIERvIG5vdCBzZXRfYXR0cnMgZGlyZWN0b3JpZXMsIGFzIHdlIHdpbGwgZG8gdGhhdCBmdXJ0aGVyIGRvd24KICAgICAgICAgICAgc2VsZi5leHRyYWN0KHRhcmluZm8sIHBhdGgsIHNldF9hdHRycz1ub3QgdGFyaW5mby5pc2RpcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19vd25lcj1udW1lcmljX293bmVyKQoKICAgICAgICAjIFJldmVyc2Ugc29ydCBkaXJlY3Rvcmllcy4KICAgICAgICBkaXJlY3Rvcmllcy5zb3J0KGtleT1sYW1iZGEgYTogYS5uYW1lKQogICAgICAgIGRpcmVjdG9yaWVzLnJldmVyc2UoKQoKICAgICAgICAjIFNldCBjb3JyZWN0IG93bmVyLCBtdGltZSBhbmQgZmlsZW1vZGUgb24gZGlyZWN0b3JpZXMuCiAgICAgICAgZm9yIHRhcmluZm8gaW4gZGlyZWN0b3JpZXM6CiAgICAgICAgICAgIGRpcnBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgdGFyaW5mby5uYW1lKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLmNob3duKHRhcmluZm8sIGRpcnBhdGgsIG51bWVyaWNfb3duZXI9bnVtZXJpY19vd25lcikKICAgICAgICAgICAgICAgIHNlbGYudXRpbWUodGFyaW5mbywgZGlycGF0aCkKICAgICAgICAgICAgICAgIHNlbGYuY2htb2QodGFyaW5mbywgZGlycGF0aCkKICAgICAgICAgICAgZXhjZXB0IEV4dHJhY3RFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgaWYgc2VsZi5lcnJvcmxldmVsID4gMToKICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYmcoMSwgInRhcmZpbGU6ICVzIiAlIGUpCgogICAgZGVmIGV4dHJhY3Qoc2VsZiwgbWVtYmVyLCBwYXRoPSIiLCBzZXRfYXR0cnM9VHJ1ZSwgKiwgbnVtZXJpY19vd25lcj1GYWxzZSk6CiAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAogICAgICAgICAgIHVzaW5nIGl0cyBmdWxsIG5hbWUuIEl0cyBmaWxlIGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBhcyBhY2N1cmF0ZWx5CiAgICAgICAgICAgYXMgcG9zc2libGUuIGBtZW1iZXInIG1heSBiZSBhIGZpbGVuYW1lIG9yIGEgVGFySW5mbyBvYmplY3QuIFlvdSBjYW4KICAgICAgICAgICBzcGVjaWZ5IGEgZGlmZmVyZW50IGRpcmVjdG9yeSB1c2luZyBgcGF0aCcuIEZpbGUgYXR0cmlidXRlcyAob3duZXIsCiAgICAgICAgICAgbXRpbWUsIG1vZGUpIGFyZSBzZXQgdW5sZXNzIGBzZXRfYXR0cnMnIGlzIEZhbHNlLiBJZiBgbnVtZXJpY19vd25lcmAKICAgICAgICAgICBpcyBUcnVlLCBvbmx5IHRoZSBudW1iZXJzIGZvciB1c2VyL2dyb3VwIG5hbWVzIGFyZSB1c2VkIGFuZCBub3QKICAgICAgICAgICB0aGUgbmFtZXMuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2soInIiKQoKICAgICAgICBpZiBpc2luc3RhbmNlKG1lbWJlciwgc3RyKToKICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYuZ2V0bWVtYmVyKG1lbWJlcikKICAgICAgICBlbHNlOgogICAgICAgICAgICB0YXJpbmZvID0gbWVtYmVyCgogICAgICAgICMgUHJlcGFyZSB0aGUgbGluayB0YXJnZXQgZm9yIG1ha2VsaW5rKCkuCiAgICAgICAgaWYgdGFyaW5mby5pc2xuaygpOgogICAgICAgICAgICB0YXJpbmZvLl9saW5rX3RhcmdldCA9IG9zLnBhdGguam9pbihwYXRoLCB0YXJpbmZvLmxpbmtuYW1lKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2V4dHJhY3RfbWVtYmVyKHRhcmluZm8sIG9zLnBhdGguam9pbihwYXRoLCB0YXJpbmZvLm5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYXR0cnM9c2V0X2F0dHJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX293bmVyPW51bWVyaWNfb3duZXIpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgaWYgc2VsZi5lcnJvcmxldmVsID4gMDoKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBlLmZpbGVuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGJnKDEsICJ0YXJmaWxlOiAlcyIgJSBlLnN0cmVycm9yKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYmcoMSwgInRhcmZpbGU6ICVzICVyIiAlIChlLnN0cmVycm9yLCBlLmZpbGVuYW1lKSkKICAgICAgICBleGNlcHQgRXh0cmFjdEVycm9yIGFzIGU6CiAgICAgICAgICAgIGlmIHNlbGYuZXJyb3JsZXZlbCA+IDE6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fZGJnKDEsICJ0YXJmaWxlOiAlcyIgJSBlKQoKICAgIGRlZiBleHRyYWN0ZmlsZShzZWxmLCBtZW1iZXIpOgogICAgICAgICIiIkV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSBhcyBhIGZpbGUgb2JqZWN0LiBgbWVtYmVyJyBtYXkgYmUKICAgICAgICAgICBhIGZpbGVuYW1lIG9yIGEgVGFySW5mbyBvYmplY3QuIElmIGBtZW1iZXInIGlzIGEgcmVndWxhciBmaWxlIG9yCiAgICAgICAgICAgYSBsaW5rLCBhbiBpby5CdWZmZXJlZFJlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuIEZvciBhbGwgb3RoZXIKICAgICAgICAgICBleGlzdGluZyBtZW1iZXJzLCBOb25lIGlzIHJldHVybmVkLiBJZiBgbWVtYmVyJyBkb2VzIG5vdCBhcHBlYXIKICAgICAgICAgICBpbiB0aGUgYXJjaGl2ZSwgS2V5RXJyb3IgaXMgcmFpc2VkLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrKCJyIikKCiAgICAgICAgaWYgaXNpbnN0YW5jZShtZW1iZXIsIHN0cik6CiAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLmdldG1lbWJlcihtZW1iZXIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGFyaW5mbyA9IG1lbWJlcgoKICAgICAgICBpZiB0YXJpbmZvLmlzcmVnKCkgb3IgdGFyaW5mby50eXBlIG5vdCBpbiBTVVBQT1JURURfVFlQRVM6CiAgICAgICAgICAgICMgTWVtYmVycyB3aXRoIHVua25vd24gdHlwZXMgYXJlIHRyZWF0ZWQgYXMgcmVndWxhciBmaWxlcy4KICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iamVjdChzZWxmLCB0YXJpbmZvKQoKICAgICAgICBlbGlmIHRhcmluZm8uaXNsbmsoKSBvciB0YXJpbmZvLmlzc3ltKCk6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5maWxlb2JqLCBfU3RyZWFtKToKICAgICAgICAgICAgICAgICMgQSBzbWFsbCBidXQgdWdseSB3b3JrYXJvdW5kIGZvciB0aGUgY2FzZSB0aGF0IHNvbWVvbmUgdHJpZXMKICAgICAgICAgICAgICAgICMgdG8gZXh0cmFjdCBhIChzeW0pbGluayBhcyBhIGZpbGUtb2JqZWN0IGZyb20gYSBub24tc2Vla2FibGUKICAgICAgICAgICAgICAgICMgc3RyZWFtIG9mIHRhciBibG9ja3MuCiAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1FcnJvcigiY2Fubm90IGV4dHJhY3QgKHN5bSlsaW5rIGFzIGZpbGUgb2JqZWN0IikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgQSAoc3ltKWxpbmsncyBmaWxlIG9iamVjdCBpcyBpdHMgdGFyZ2V0J3MgZmlsZSBvYmplY3QuCiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5leHRyYWN0ZmlsZShzZWxmLl9maW5kX2xpbmtfdGFyZ2V0KHRhcmluZm8pKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgSWYgdGhlcmUncyBubyBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVtYmVyIChkaXJlY3RvcnksIGNocmRldiwKICAgICAgICAgICAgIyBibGtkZXYsIGV0Yy4pLCByZXR1cm4gTm9uZSBpbnN0ZWFkIG9mIGEgZmlsZSBvYmplY3QuCiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIF9leHRyYWN0X21lbWJlcihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoLCBzZXRfYXR0cnM9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19vd25lcj1GYWxzZSk6CiAgICAgICAgIiIiRXh0cmFjdCB0aGUgVGFySW5mbyBvYmplY3QgdGFyaW5mbyB0byBhIHBoeXNpY2FsCiAgICAgICAgICAgZmlsZSBjYWxsZWQgdGFyZ2V0cGF0aC4KICAgICAgICAiIiIKICAgICAgICAjIEZldGNoIHRoZSBUYXJJbmZvIG9iamVjdCBmb3IgdGhlIGdpdmVuIG5hbWUKICAgICAgICAjIGFuZCBidWlsZCB0aGUgZGVzdGluYXRpb24gcGF0aG5hbWUsIHJlcGxhY2luZwogICAgICAgICMgZm9yd2FyZCBzbGFzaGVzIHRvIHBsYXRmb3JtIHNwZWNpZmljIHNlcGFyYXRvcnMuCiAgICAgICAgdGFyZ2V0cGF0aCA9IHRhcmdldHBhdGgucnN0cmlwKCIvIikKICAgICAgICB0YXJnZXRwYXRoID0gdGFyZ2V0cGF0aC5yZXBsYWNlKCIvIiwgb3Muc2VwKQoKICAgICAgICAjIENyZWF0ZSBhbGwgdXBwZXIgZGlyZWN0b3JpZXMuCiAgICAgICAgdXBwZXJkaXJzID0gb3MucGF0aC5kaXJuYW1lKHRhcmdldHBhdGgpCiAgICAgICAgaWYgdXBwZXJkaXJzIGFuZCBub3Qgb3MucGF0aC5leGlzdHModXBwZXJkaXJzKToKICAgICAgICAgICAgIyBDcmVhdGUgZGlyZWN0b3JpZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIGFyY2hpdmUgd2l0aAogICAgICAgICAgICAjIGRlZmF1bHQgcGVybWlzc2lvbnMuCiAgICAgICAgICAgIG9zLm1ha2VkaXJzKHVwcGVyZGlycykKCiAgICAgICAgaWYgdGFyaW5mby5pc2xuaygpIG9yIHRhcmluZm8uaXNzeW0oKToKICAgICAgICAgICAgc2VsZi5fZGJnKDEsICIlcyAtPiAlcyIgJSAodGFyaW5mby5uYW1lLCB0YXJpbmZvLmxpbmtuYW1lKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9kYmcoMSwgdGFyaW5mby5uYW1lKQoKICAgICAgICBpZiB0YXJpbmZvLmlzcmVnKCk6CiAgICAgICAgICAgIHNlbGYubWFrZWZpbGUodGFyaW5mbywgdGFyZ2V0cGF0aCkKICAgICAgICBlbGlmIHRhcmluZm8uaXNkaXIoKToKICAgICAgICAgICAgc2VsZi5tYWtlZGlyKHRhcmluZm8sIHRhcmdldHBhdGgpCiAgICAgICAgZWxpZiB0YXJpbmZvLmlzZmlmbygpOgogICAgICAgICAgICBzZWxmLm1ha2VmaWZvKHRhcmluZm8sIHRhcmdldHBhdGgpCiAgICAgICAgZWxpZiB0YXJpbmZvLmlzY2hyKCkgb3IgdGFyaW5mby5pc2JsaygpOgogICAgICAgICAgICBzZWxmLm1ha2VkZXYodGFyaW5mbywgdGFyZ2V0cGF0aCkKICAgICAgICBlbGlmIHRhcmluZm8uaXNsbmsoKSBvciB0YXJpbmZvLmlzc3ltKCk6CiAgICAgICAgICAgIHNlbGYubWFrZWxpbmsodGFyaW5mbywgdGFyZ2V0cGF0aCkKICAgICAgICBlbGlmIHRhcmluZm8udHlwZSBub3QgaW4gU1VQUE9SVEVEX1RZUEVTOgogICAgICAgICAgICBzZWxmLm1ha2V1bmtub3duKHRhcmluZm8sIHRhcmdldHBhdGgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5tYWtlZmlsZSh0YXJpbmZvLCB0YXJnZXRwYXRoKQoKICAgICAgICBpZiBzZXRfYXR0cnM6CiAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgdGFyZ2V0cGF0aCwgbnVtZXJpY19vd25lcikKICAgICAgICAgICAgaWYgbm90IHRhcmluZm8uaXNzeW0oKToKICAgICAgICAgICAgICAgIHNlbGYuY2htb2QodGFyaW5mbywgdGFyZ2V0cGF0aCkKICAgICAgICAgICAgICAgIHNlbGYudXRpbWUodGFyaW5mbywgdGFyZ2V0cGF0aCkKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgQmVsb3cgYXJlIHRoZSBkaWZmZXJlbnQgZmlsZSBtZXRob2RzLiBUaGV5IGFyZSBjYWxsZWQgdmlhCiAgICAjIF9leHRyYWN0X21lbWJlcigpIHdoZW4gZXh0cmFjdCgpIGlzIGNhbGxlZC4gVGhleSBjYW4gYmUgcmVwbGFjZWQgaW4gYQogICAgIyBzdWJjbGFzcyB0byBpbXBsZW1lbnQgb3RoZXIgZnVuY3Rpb25hbGl0eS4KCiAgICBkZWYgbWFrZWRpcihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKICAgICAgICAiIiJNYWtlIGEgZGlyZWN0b3J5IGNhbGxlZCB0YXJnZXRwYXRoLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgIyBVc2UgYSBzYWZlIG1vZGUgZm9yIHRoZSBkaXJlY3RvcnksIHRoZSByZWFsIG1vZGUgaXMgc2V0CiAgICAgICAgICAgICMgbGF0ZXIgaW4gX2V4dHJhY3RfbWVtYmVyKCkuCiAgICAgICAgICAgIG9zLm1rZGlyKHRhcmdldHBhdGgsIDBvNzAwKQogICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICBkZWYgbWFrZWZpbGUoc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CiAgICAgICAgIiIiTWFrZSBhIGZpbGUgY2FsbGVkIHRhcmdldHBhdGguCiAgICAgICAgIiIiCiAgICAgICAgc291cmNlID0gc2VsZi5maWxlb2JqCiAgICAgICAgc291cmNlLnNlZWsodGFyaW5mby5vZmZzZXRfZGF0YSkKICAgICAgICBidWZzaXplID0gc2VsZi5jb3B5YnVmc2l6ZQogICAgICAgIHdpdGggYmx0bl9vcGVuKHRhcmdldHBhdGgsICJ3YiIpIGFzIHRhcmdldDoKICAgICAgICAgICAgaWYgdGFyaW5mby5zcGFyc2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBmb3Igb2Zmc2V0LCBzaXplIGluIHRhcmluZm8uc3BhcnNlOgogICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZWVrKG9mZnNldCkKICAgICAgICAgICAgICAgICAgICBjb3B5ZmlsZW9iaihzb3VyY2UsIHRhcmdldCwgc2l6ZSwgUmVhZEVycm9yLCBidWZzaXplKQogICAgICAgICAgICAgICAgdGFyZ2V0LnNlZWsodGFyaW5mby5zaXplKQogICAgICAgICAgICAgICAgdGFyZ2V0LnRydW5jYXRlKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCB0YXJpbmZvLnNpemUsIFJlYWRFcnJvciwgYnVmc2l6ZSkKCiAgICBkZWYgbWFrZXVua25vd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CiAgICAgICAgIiIiTWFrZSBhIGZpbGUgZnJvbSBhIFRhckluZm8gb2JqZWN0IHdpdGggYW4gdW5rbm93biB0eXBlCiAgICAgICAgICAgYXQgdGFyZ2V0cGF0aC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLm1ha2VmaWxlKHRhcmluZm8sIHRhcmdldHBhdGgpCiAgICAgICAgc2VsZi5fZGJnKDEsICJ0YXJmaWxlOiBVbmtub3duIGZpbGUgdHlwZSAlciwgIiBcCiAgICAgICAgICAgICAgICAgICAgICJleHRyYWN0ZWQgYXMgcmVndWxhciBmaWxlLiIgJSB0YXJpbmZvLnR5cGUpCgogICAgZGVmIG1ha2VmaWZvKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgogICAgICAgICIiIk1ha2UgYSBmaWZvIGNhbGxlZCB0YXJnZXRwYXRoLgogICAgICAgICIiIgogICAgICAgIGlmIGhhc2F0dHIob3MsICJta2ZpZm8iKToKICAgICAgICAgICAgb3MubWtmaWZvKHRhcmdldHBhdGgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgRXh0cmFjdEVycm9yKCJmaWZvIG5vdCBzdXBwb3J0ZWQgYnkgc3lzdGVtIikKCiAgICBkZWYgbWFrZWRldihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKICAgICAgICAiIiJNYWtlIGEgY2hhcmFjdGVyIG9yIGJsb2NrIGRldmljZSBjYWxsZWQgdGFyZ2V0cGF0aC4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgIm1rbm9kIikgb3Igbm90IGhhc2F0dHIob3MsICJtYWtlZGV2Iik6CiAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigic3BlY2lhbCBkZXZpY2VzIG5vdCBzdXBwb3J0ZWQgYnkgc3lzdGVtIikKCiAgICAgICAgbW9kZSA9IHRhcmluZm8ubW9kZQogICAgICAgIGlmIHRhcmluZm8uaXNibGsoKToKICAgICAgICAgICAgbW9kZSB8PSBzdGF0LlNfSUZCTEsKICAgICAgICBlbHNlOgogICAgICAgICAgICBtb2RlIHw9IHN0YXQuU19JRkNIUgoKICAgICAgICBvcy5ta25vZCh0YXJnZXRwYXRoLCBtb2RlLAogICAgICAgICAgICAgICAgIG9zLm1ha2VkZXYodGFyaW5mby5kZXZtYWpvciwgdGFyaW5mby5kZXZtaW5vcikpCgogICAgZGVmIG1ha2VsaW5rKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgogICAgICAgICIiIk1ha2UgYSAoc3ltYm9saWMpIGxpbmsgY2FsbGVkIHRhcmdldHBhdGguIElmIGl0IGNhbm5vdCBiZSBjcmVhdGVkCiAgICAgICAgICAocGxhdGZvcm0gbGltaXRhdGlvbiksIHdlIHRyeSB0byBtYWtlIGEgY29weSBvZiB0aGUgcmVmZXJlbmNlZCBmaWxlCiAgICAgICAgICBpbnN0ZWFkIG9mIGEgbGluay4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgRm9yIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHN5bWJvbGljIGFuZCBoYXJkIGxpbmtzLgogICAgICAgICAgICBpZiB0YXJpbmZvLmlzc3ltKCk6CiAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHModGFyZ2V0cGF0aCk6CiAgICAgICAgICAgICAgICAgICAgIyBBdm9pZCBGaWxlRXhpc3RzRXJyb3Igb24gZm9sbG93aW5nIG9zLnN5bWxpbmsuCiAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKHRhcmdldHBhdGgpCiAgICAgICAgICAgICAgICBvcy5zeW1saW5rKHRhcmluZm8ubGlua25hbWUsIHRhcmdldHBhdGgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIFNlZSBleHRyYWN0KCkuCiAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0YXJpbmZvLl9saW5rX3RhcmdldCk6CiAgICAgICAgICAgICAgICAgICAgb3MubGluayh0YXJpbmZvLl9saW5rX3RhcmdldCwgdGFyZ2V0cGF0aCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXh0cmFjdF9tZW1iZXIoc2VsZi5fZmluZF9saW5rX3RhcmdldCh0YXJpbmZvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRwYXRoKQogICAgICAgIGV4Y2VwdCBzeW1saW5rX2V4Y2VwdGlvbjoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fZXh0cmFjdF9tZW1iZXIoc2VsZi5fZmluZF9saW5rX3RhcmdldCh0YXJpbmZvKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHBhdGgpCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigidW5hYmxlIHRvIHJlc29sdmUgbGluayBpbnNpZGUgYXJjaGl2ZSIpIGZyb20gTm9uZQoKICAgIGRlZiBjaG93bihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoLCBudW1lcmljX293bmVyKToKICAgICAgICAiIiJTZXQgb3duZXIgb2YgdGFyZ2V0cGF0aCBhY2NvcmRpbmcgdG8gdGFyaW5mby4gSWYgbnVtZXJpY19vd25lcgogICAgICAgICAgIGlzIFRydWUsIHVzZSAuZ2lkLy51aWQgaW5zdGVhZCBvZiAuZ25hbWUvLnVuYW1lLiBJZiBudW1lcmljX293bmVyCiAgICAgICAgICAgaXMgRmFsc2UsIGZhbGwgYmFjayB0byAuZ2lkLy51aWQgd2hlbiB0aGUgc2VhcmNoIGJhc2VkIG9uIG5hbWUKICAgICAgICAgICBmYWlscy4KICAgICAgICAiIiIKICAgICAgICBpZiBoYXNhdHRyKG9zLCAiZ2V0ZXVpZCIpIGFuZCBvcy5nZXRldWlkKCkgPT0gMDoKICAgICAgICAgICAgIyBXZSBoYXZlIHRvIGJlIHJvb3QgdG8gZG8gc28uCiAgICAgICAgICAgIGcgPSB0YXJpbmZvLmdpZAogICAgICAgICAgICB1ID0gdGFyaW5mby51aWQKICAgICAgICAgICAgaWYgbm90IG51bWVyaWNfb3duZXI6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaWYgZ3JwOgogICAgICAgICAgICAgICAgICAgICAgICBnID0gZ3JwLmdldGdybmFtKHRhcmluZm8uZ25hbWUpWzJdCiAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGlmIHB3ZDoKICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHB3ZC5nZXRwd25hbSh0YXJpbmZvLnVuYW1lKVsyXQogICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgdGFyaW5mby5pc3N5bSgpIGFuZCBoYXNhdHRyKG9zLCAibGNob3duIik6CiAgICAgICAgICAgICAgICAgICAgb3MubGNob3duKHRhcmdldHBhdGgsIHUsIGcpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG9zLmNob3duKHRhcmdldHBhdGgsIHUsIGcpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2Ugb3duZXIiKSBmcm9tIGUKCiAgICBkZWYgY2htb2Qoc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CiAgICAgICAgIiIiU2V0IGZpbGUgcGVybWlzc2lvbnMgb2YgdGFyZ2V0cGF0aCBhY2NvcmRpbmcgdG8gdGFyaW5mby4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIG9zLmNobW9kKHRhcmdldHBhdGgsIHRhcmluZm8ubW9kZSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2UgbW9kZSIpIGZyb20gZQoKICAgIGRlZiB1dGltZShzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKICAgICAgICAiIiJTZXQgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGFyZ2V0cGF0aCBhY2NvcmRpbmcgdG8gdGFyaW5mby4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgJ3V0aW1lJyk6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgb3MudXRpbWUodGFyZ2V0cGF0aCwgKHRhcmluZm8ubXRpbWUsIHRhcmluZm8ubXRpbWUpKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RpZmljYXRpb24gdGltZSIpIGZyb20gZQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgZGVmIG5leHQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IG1lbWJlciBvZiB0aGUgYXJjaGl2ZSBhcyBhIFRhckluZm8gb2JqZWN0LCB3aGVuCiAgICAgICAgICAgVGFyRmlsZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcuIFJldHVybiBOb25lIGlmIHRoZXJlIGlzIG5vIG1vcmUKICAgICAgICAgICBhdmFpbGFibGUuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2soInJhIikKICAgICAgICBpZiBzZWxmLmZpcnN0bWVtYmVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBtID0gc2VsZi5maXJzdG1lbWJlcgogICAgICAgICAgICBzZWxmLmZpcnN0bWVtYmVyID0gTm9uZQogICAgICAgICAgICByZXR1cm4gbQoKICAgICAgICAjIEFkdmFuY2UgdGhlIGZpbGUgcG9pbnRlci4KICAgICAgICBpZiBzZWxmLm9mZnNldCAhPSBzZWxmLmZpbGVvYmoudGVsbCgpOgogICAgICAgICAgICBpZiBzZWxmLm9mZnNldCA9PSAwOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoc2VsZi5vZmZzZXQgLSAxKQogICAgICAgICAgICBpZiBub3Qgc2VsZi5maWxlb2JqLnJlYWQoMSk6CiAgICAgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiKQoKICAgICAgICAjIFJlYWQgdGhlIG5leHQgYmxvY2suCiAgICAgICAgdGFyaW5mbyA9IE5vbmUKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJpbmZvLmZyb210YXJmaWxlKHNlbGYpCiAgICAgICAgICAgIGV4Y2VwdCBFT0ZIZWFkZXJFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgaWYgc2VsZi5pZ25vcmVfemVyb3M6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGJnKDIsICIweCVYOiAlcyIgJSAoc2VsZi5vZmZzZXQsIGUpKQogICAgICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IEJMT0NLU0laRQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGV4Y2VwdCBJbnZhbGlkSGVhZGVyRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGlmIHNlbGYuaWdub3JlX3plcm9zOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2RiZygyLCAiMHglWDogJXMiICUgKHNlbGYub2Zmc2V0LCBlKSkKICAgICAgICAgICAgICAgICAgICBzZWxmLm9mZnNldCArPSBCTE9DS1NJWkUKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgZWxpZiBzZWxmLm9mZnNldCA9PSAwOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcihzdHIoZSkpIGZyb20gTm9uZQogICAgICAgICAgICBleGNlcHQgRW1wdHlIZWFkZXJFcnJvcjoKICAgICAgICAgICAgICAgIGlmIHNlbGYub2Zmc2V0ID09IDA6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKCJlbXB0eSBmaWxlIikgZnJvbSBOb25lCiAgICAgICAgICAgIGV4Y2VwdCBUcnVuY2F0ZWRIZWFkZXJFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgaWYgc2VsZi5vZmZzZXQgPT0gMDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3Ioc3RyKGUpKSBmcm9tIE5vbmUKICAgICAgICAgICAgZXhjZXB0IFN1YnNlcXVlbnRIZWFkZXJFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKHN0cihlKSkgZnJvbSBOb25lCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpbXBvcnQgemxpYgogICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZSwgemxpYi5lcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcihmJ3psaWIgZXJyb3I6IHtlfScpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGUKICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBlCiAgICAgICAgICAgIGJyZWFrCgogICAgICAgIGlmIHRhcmluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYubWVtYmVycy5hcHBlbmQodGFyaW5mbykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9sb2FkZWQgPSBUcnVlCgogICAgICAgIHJldHVybiB0YXJpbmZvCgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIExpdHRsZSBoZWxwZXIgbWV0aG9kczoKCiAgICBkZWYgX2dldG1lbWJlcihzZWxmLCBuYW1lLCB0YXJpbmZvPU5vbmUsIG5vcm1hbGl6ZT1GYWxzZSk6CiAgICAgICAgIiIiRmluZCBhbiBhcmNoaXZlIG1lbWJlciBieSBuYW1lIGZyb20gYm90dG9tIHRvIHRvcC4KICAgICAgICAgICBJZiB0YXJpbmZvIGlzIGdpdmVuLCBpdCBpcyB1c2VkIGFzIHRoZSBzdGFydGluZyBwb2ludC4KICAgICAgICAiIiIKICAgICAgICAjIEVuc3VyZSB0aGF0IGFsbCBtZW1iZXJzIGhhdmUgYmVlbiBsb2FkZWQuCiAgICAgICAgbWVtYmVycyA9IHNlbGYuZ2V0bWVtYmVycygpCgogICAgICAgICMgTGltaXQgdGhlIG1lbWJlciBzZWFyY2ggbGlzdCB1cCB0byB0YXJpbmZvLgogICAgICAgIGlmIHRhcmluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG1lbWJlcnMgPSBtZW1iZXJzWzptZW1iZXJzLmluZGV4KHRhcmluZm8pXQoKICAgICAgICBpZiBub3JtYWxpemU6CiAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG5hbWUpCgogICAgICAgIGZvciBtZW1iZXIgaW4gcmV2ZXJzZWQobWVtYmVycyk6CiAgICAgICAgICAgIGlmIG5vcm1hbGl6ZToKICAgICAgICAgICAgICAgIG1lbWJlcl9uYW1lID0gb3MucGF0aC5ub3JtcGF0aChtZW1iZXIubmFtZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG1lbWJlcl9uYW1lID0gbWVtYmVyLm5hbWUKCiAgICAgICAgICAgIGlmIG5hbWUgPT0gbWVtYmVyX25hbWU6CiAgICAgICAgICAgICAgICByZXR1cm4gbWVtYmVyCgogICAgZGVmIF9sb2FkKHNlbGYpOgogICAgICAgICIiIlJlYWQgdGhyb3VnaCB0aGUgZW50aXJlIGFyY2hpdmUgZmlsZSBhbmQgbG9vayBmb3IgcmVhZGFibGUKICAgICAgICAgICBtZW1iZXJzLgogICAgICAgICIiIgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm5leHQoKQogICAgICAgICAgICBpZiB0YXJpbmZvIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHNlbGYuX2xvYWRlZCA9IFRydWUKCiAgICBkZWYgX2NoZWNrKHNlbGYsIG1vZGU9Tm9uZSk6CiAgICAgICAgIiIiQ2hlY2sgaWYgVGFyRmlsZSBpcyBzdGlsbCBvcGVuLCBhbmQgaWYgdGhlIG9wZXJhdGlvbidzIG1vZGUKICAgICAgICAgICBjb3JyZXNwb25kcyB0byBUYXJGaWxlJ3MgbW9kZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiJXMgaXMgY2xvc2VkIiAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgIGlmIG1vZGUgaXMgbm90IE5vbmUgYW5kIHNlbGYubW9kZSBub3QgaW4gbW9kZToKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiYmFkIG9wZXJhdGlvbiBmb3IgbW9kZSAlciIgJSBzZWxmLm1vZGUpCgogICAgZGVmIF9maW5kX2xpbmtfdGFyZ2V0KHNlbGYsIHRhcmluZm8pOgogICAgICAgICIiIkZpbmQgdGhlIHRhcmdldCBtZW1iZXIgb2YgYSBzeW1saW5rIG9yIGhhcmRsaW5rIG1lbWJlciBpbiB0aGUKICAgICAgICAgICBhcmNoaXZlLgogICAgICAgICIiIgogICAgICAgIGlmIHRhcmluZm8uaXNzeW0oKToKICAgICAgICAgICAgIyBBbHdheXMgc2VhcmNoIHRoZSBlbnRpcmUgYXJjaGl2ZS4KICAgICAgICAgICAgbGlua25hbWUgPSAiLyIuam9pbihmaWx0ZXIoTm9uZSwgKG9zLnBhdGguZGlybmFtZSh0YXJpbmZvLm5hbWUpLCB0YXJpbmZvLmxpbmtuYW1lKSkpCiAgICAgICAgICAgIGxpbWl0ID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgU2VhcmNoIHRoZSBhcmNoaXZlIGJlZm9yZSB0aGUgbGluaywgYmVjYXVzZSBhIGhhcmQgbGluayBpcwogICAgICAgICAgICAjIGp1c3QgYSByZWZlcmVuY2UgdG8gYW4gYWxyZWFkeSBhcmNoaXZlZCBmaWxlLgogICAgICAgICAgICBsaW5rbmFtZSA9IHRhcmluZm8ubGlua25hbWUKICAgICAgICAgICAgbGltaXQgPSB0YXJpbmZvCgogICAgICAgIG1lbWJlciA9IHNlbGYuX2dldG1lbWJlcihsaW5rbmFtZSwgdGFyaW5mbz1saW1pdCwgbm9ybWFsaXplPVRydWUpCiAgICAgICAgaWYgbWVtYmVyIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCJsaW5rbmFtZSAlciBub3QgZm91bmQiICUgbGlua25hbWUpCiAgICAgICAgcmV0dXJuIG1lbWJlcgoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAiIiJQcm92aWRlIGFuIGl0ZXJhdG9yIG9iamVjdC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9sb2FkZWQ6CiAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5tZW1iZXJzCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIFlpZWxkIGl0ZW1zIHVzaW5nIFRhckZpbGUncyBuZXh0KCkgbWV0aG9kLgogICAgICAgICMgV2hlbiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZCwgc2V0IFRhckZpbGUgYXMgX2xvYWRlZC4KICAgICAgICBpbmRleCA9IDAKICAgICAgICAjIEZpeCBmb3IgU0YgIzExMDA0Mjk6IFVuZGVyIHJhcmUgY2lyY3Vtc3RhbmNlcyBpdCBjYW4KICAgICAgICAjIGhhcHBlbiB0aGF0IGdldG1lbWJlcnMoKSBpcyBjYWxsZWQgZHVyaW5nIGl0ZXJhdGlvbiwKICAgICAgICAjIHdoaWNoIHdpbGwgaGF2ZSBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgbmV4dCgpIG1ldGhvZC4KICAgICAgICBpZiBzZWxmLmZpcnN0bWVtYmVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICB0YXJpbmZvID0gc2VsZi5uZXh0KCkKICAgICAgICAgICAgaW5kZXggKz0gMQogICAgICAgICAgICB5aWVsZCB0YXJpbmZvCgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGlmIGluZGV4IDwgbGVuKHNlbGYubWVtYmVycyk6CiAgICAgICAgICAgICAgICB0YXJpbmZvID0gc2VsZi5tZW1iZXJzW2luZGV4XQogICAgICAgICAgICBlbGlmIG5vdCBzZWxmLl9sb2FkZWQ6CiAgICAgICAgICAgICAgICB0YXJpbmZvID0gc2VsZi5uZXh0KCkKICAgICAgICAgICAgICAgIGlmIG5vdCB0YXJpbmZvOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpbmRleCArPSAxCiAgICAgICAgICAgIHlpZWxkIHRhcmluZm8KCiAgICBkZWYgX2RiZyhzZWxmLCBsZXZlbCwgbXNnKToKICAgICAgICAiIiJXcml0ZSBkZWJ1Z2dpbmcgb3V0cHV0IHRvIHN5cy5zdGRlcnIuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbGV2ZWwgPD0gc2VsZi5kZWJ1ZzoKICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICBzZWxmLl9jaGVjaygpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CiAgICAgICAgaWYgdHlwZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEFuIGV4Y2VwdGlvbiBvY2N1cnJlZC4gV2UgbXVzdCBub3QgY2FsbCBjbG9zZSgpIGJlY2F1c2UKICAgICAgICAgICAgIyBpdCB3b3VsZCB0cnkgdG8gd3JpdGUgZW5kLW9mLWFyY2hpdmUgYmxvY2tzIGFuZCBwYWRkaW5nLgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXh0ZmlsZW9iajoKICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCiAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZXhwb3J0ZWQgZnVuY3Rpb25zCiMtLS0tLS0tLS0tLS0tLS0tLS0tLQpkZWYgaXNfdGFyZmlsZShuYW1lKToKICAgICIiIlJldHVybiBUcnVlIGlmIG5hbWUgcG9pbnRzIHRvIGEgdGFyIGFyY2hpdmUgdGhhdCB3ZQogICAgICAgYXJlIGFibGUgdG8gaGFuZGxlLCBlbHNlIHJldHVybiBGYWxzZS4KCiAgICAgICAnbmFtZScgc2hvdWxkIGJlIGEgc3RyaW5nLCBmaWxlLCBvciBmaWxlLWxpa2Ugb2JqZWN0LgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgaWYgaGFzYXR0cihuYW1lLCAicmVhZCIpOgogICAgICAgICAgICBwb3MgPSBuYW1lLnRlbGwoKQogICAgICAgICAgICB0ID0gb3BlbihmaWxlb2JqPW5hbWUpCiAgICAgICAgICAgIG5hbWUuc2Vlayhwb3MpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdCA9IG9wZW4obmFtZSkKICAgICAgICB0LmNsb3NlKCkKICAgICAgICByZXR1cm4gVHJ1ZQogICAgZXhjZXB0IFRhckVycm9yOgogICAgICAgIHJldHVybiBGYWxzZQoKb3BlbiA9IFRhckZpbGUub3BlbgoKCmRlZiBtYWluKCk6CiAgICBpbXBvcnQgYXJncGFyc2UKCiAgICBkZXNjcmlwdGlvbiA9ICdBIHNpbXBsZSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIGZvciB0YXJmaWxlIG1vZHVsZS4nCiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1ZlcmJvc2Ugb3V0cHV0JykKICAgIGdyb3VwID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAocmVxdWlyZWQ9VHJ1ZSkKICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1saXN0JywgbWV0YXZhcj0nPHRhcmZpbGU+JywKICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTaG93IGxpc3Rpbmcgb2YgYSB0YXJmaWxlJykKICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWUnLCAnLS1leHRyYWN0JywgbmFyZ3M9JysnLAogICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9KCc8dGFyZmlsZT4nLCAnPG91dHB1dF9kaXI+JyksCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRXh0cmFjdCB0YXJmaWxlIGludG8gdGFyZ2V0IGRpcicpCiAgICBncm91cC5hZGRfYXJndW1lbnQoJy1jJywgJy0tY3JlYXRlJywgbmFyZ3M9JysnLAogICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9KCc8bmFtZT4nLCAnPGZpbGU+JyksCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQ3JlYXRlIHRhcmZpbGUgZnJvbSBzb3VyY2VzJykKICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10ZXN0JywgbWV0YXZhcj0nPHRhcmZpbGU+JywKICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUZXN0IGlmIGEgdGFyZmlsZSBpcyB2YWxpZCcpCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQoKICAgIGlmIGFyZ3MudGVzdCBpcyBub3QgTm9uZToKICAgICAgICBzcmMgPSBhcmdzLnRlc3QKICAgICAgICBpZiBpc190YXJmaWxlKHNyYyk6CiAgICAgICAgICAgIHdpdGggb3BlbihzcmMsICdyJykgYXMgdGFyOgogICAgICAgICAgICAgICAgdGFyLmdldG1lbWJlcnMoKQogICAgICAgICAgICAgICAgcHJpbnQodGFyLmdldG1lbWJlcnMoKSwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICBpZiBhcmdzLnZlcmJvc2U6CiAgICAgICAgICAgICAgICBwcmludCgneyFyfSBpcyBhIHRhciBhcmNoaXZlLicuZm9ybWF0KHNyYykpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGFyc2VyLmV4aXQoMSwgJ3shcn0gaXMgbm90IGEgdGFyIGFyY2hpdmUuXG4nLmZvcm1hdChzcmMpKQoKICAgIGVsaWYgYXJncy5saXN0IGlzIG5vdCBOb25lOgogICAgICAgIHNyYyA9IGFyZ3MubGlzdAogICAgICAgIGlmIGlzX3RhcmZpbGUoc3JjKToKICAgICAgICAgICAgd2l0aCBUYXJGaWxlLm9wZW4oc3JjLCAncjoqJykgYXMgdGY6CiAgICAgICAgICAgICAgICB0Zi5saXN0KHZlcmJvc2U9YXJncy52ZXJib3NlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcnNlci5leGl0KDEsICd7IXJ9IGlzIG5vdCBhIHRhciBhcmNoaXZlLlxuJy5mb3JtYXQoc3JjKSkKCiAgICBlbGlmIGFyZ3MuZXh0cmFjdCBpcyBub3QgTm9uZToKICAgICAgICBpZiBsZW4oYXJncy5leHRyYWN0KSA9PSAxOgogICAgICAgICAgICBzcmMgPSBhcmdzLmV4dHJhY3RbMF0KICAgICAgICAgICAgY3VyZGlyID0gb3MuY3VyZGlyCiAgICAgICAgZWxpZiBsZW4oYXJncy5leHRyYWN0KSA9PSAyOgogICAgICAgICAgICBzcmMsIGN1cmRpciA9IGFyZ3MuZXh0cmFjdAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcnNlci5leGl0KDEsIHBhcnNlci5mb3JtYXRfaGVscCgpKQoKICAgICAgICBpZiBpc190YXJmaWxlKHNyYyk6CiAgICAgICAgICAgIHdpdGggVGFyRmlsZS5vcGVuKHNyYywgJ3I6KicpIGFzIHRmOgogICAgICAgICAgICAgICAgdGYuZXh0cmFjdGFsbChwYXRoPWN1cmRpcikKICAgICAgICAgICAgaWYgYXJncy52ZXJib3NlOgogICAgICAgICAgICAgICAgaWYgY3VyZGlyID09ICcuJzoKICAgICAgICAgICAgICAgICAgICBtc2cgPSAneyFyfSBmaWxlIGlzIGV4dHJhY3RlZC4nLmZvcm1hdChzcmMpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG1zZyA9ICgneyFyfSBmaWxlIGlzIGV4dHJhY3RlZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRvIHshcn0gZGlyZWN0b3J5LicpLmZvcm1hdChzcmMsIGN1cmRpcikKICAgICAgICAgICAgICAgIHByaW50KG1zZykKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXJzZXIuZXhpdCgxLCAneyFyfSBpcyBub3QgYSB0YXIgYXJjaGl2ZS5cbicuZm9ybWF0KHNyYykpCgogICAgZWxpZiBhcmdzLmNyZWF0ZSBpcyBub3QgTm9uZToKICAgICAgICB0YXJfbmFtZSA9IGFyZ3MuY3JlYXRlLnBvcCgwKQogICAgICAgIF8sIGV4dCA9IG9zLnBhdGguc3BsaXRleHQodGFyX25hbWUpCiAgICAgICAgY29tcHJlc3Npb25zID0gewogICAgICAgICAgICAjIGd6CiAgICAgICAgICAgICcuZ3onOiAnZ3onLAogICAgICAgICAgICAnLnRneic6ICdneicsCiAgICAgICAgICAgICMgeHoKICAgICAgICAgICAgJy54eic6ICd4eicsCiAgICAgICAgICAgICcudHh6JzogJ3h6JywKICAgICAgICAgICAgIyBiejIKICAgICAgICAgICAgJy5iejInOiAnYnoyJywKICAgICAgICAgICAgJy50YnonOiAnYnoyJywKICAgICAgICAgICAgJy50YnoyJzogJ2J6MicsCiAgICAgICAgICAgICcudGIyJzogJ2J6MicsCiAgICAgICAgfQogICAgICAgIHRhcl9tb2RlID0gJ3c6JyArIGNvbXByZXNzaW9uc1tleHRdIGlmIGV4dCBpbiBjb21wcmVzc2lvbnMgZWxzZSAndycKICAgICAgICB0YXJfZmlsZXMgPSBhcmdzLmNyZWF0ZQoKICAgICAgICB3aXRoIFRhckZpbGUub3Blbih0YXJfbmFtZSwgdGFyX21vZGUpIGFzIHRmOgogICAgICAgICAgICBmb3IgZmlsZV9uYW1lIGluIHRhcl9maWxlczoKICAgICAgICAgICAgICAgIHRmLmFkZChmaWxlX25hbWUpCgogICAgICAgIGlmIGFyZ3MudmVyYm9zZToKICAgICAgICAgICAgcHJpbnQoJ3shcn0gZmlsZSBjcmVhdGVkLicuZm9ybWF0KHRhcl9uYW1lKSkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBtYWluKCkKUEsDBBQAAAAAAAIgo1YKasfbBVsAAAVbAAAMAAAAdGVsbmV0bGliLnB5ciIiIlRFTE5FVCBjbGllbnQgY2xhc3MuCgpCYXNlZCBvbiBSRkMgODU0OiBURUxORVQgUHJvdG9jb2wgU3BlY2lmaWNhdGlvbiwgYnkgSi4gUG9zdGVsIGFuZApKLiBSZXlub2xkcwoKRXhhbXBsZToKCj4+PiBmcm9tIHRlbG5ldGxpYiBpbXBvcnQgVGVsbmV0Cj4+PiB0biA9IFRlbG5ldCgnd3d3LnB5dGhvbi5vcmcnLCA3OSkgICAjIGNvbm5lY3QgdG8gZmluZ2VyIHBvcnQKPj4+IHRuLndyaXRlKGInZ3VpZG9cclxuJykKPj4+IHByaW50KHRuLnJlYWRfYWxsKCkpCkxvZ2luICAgICAgIE5hbWUgICAgICAgICAgICAgICBUVFkgICAgICAgICBJZGxlICAgIFdoZW4gICAgV2hlcmUKZ3VpZG8gICAgR3VpZG8gdmFuIFJvc3N1bSAgICAgIHB0cy8yICAgICAgICA8RGVjICAyIDExOjEwPiBzbmFnLmNucmkucmVzdG9uLi4KCj4+PgoKTm90ZSB0aGF0IHJlYWRfYWxsKCkgd29uJ3QgcmVhZCB1bnRpbCBlb2YgLS0gaXQganVzdCByZWFkcyBzb21lIGRhdGEKLS0gYnV0IGl0IGd1YXJhbnRlZXMgdG8gcmVhZCBhdCBsZWFzdCBvbmUgYnl0ZSB1bmxlc3MgRU9GIGlzIGhpdC4KCkl0IGlzIHBvc3NpYmxlIHRvIHBhc3MgYSBUZWxuZXQgb2JqZWN0IHRvIGEgc2VsZWN0b3IgaW4gb3JkZXIgdG8gd2FpdCB1bnRpbAptb3JlIGRhdGEgaXMgYXZhaWxhYmxlLiAgTm90ZSB0aGF0IGluIHRoaXMgY2FzZSwgcmVhZF9lYWdlcigpIG1heSByZXR1cm4gYicnCmV2ZW4gaWYgdGhlcmUgd2FzIGRhdGEgb24gdGhlIHNvY2tldCwgYmVjYXVzZSB0aGUgcHJvdG9jb2wgbmVnb3RpYXRpb24gbWF5IGhhdmUKZWF0ZW4gdGhlIGRhdGEuICBUaGlzIGlzIHdoeSBFT0ZFcnJvciBpcyBuZWVkZWQgaW4gc29tZSBjYXNlcyB0byBkaXN0aW5ndWlzaApiZXR3ZWVuICJubyBkYXRhIiBhbmQgImNvbm5lY3Rpb24gY2xvc2VkIiAoc2luY2UgdGhlIHNvY2tldCBhbHNvIGFwcGVhcnMgcmVhZHkKZm9yIHJlYWRpbmcgd2hlbiBpdCBpcyBjbG9zZWQpLgoKVG8gZG86Ci0gb3B0aW9uIG5lZ290aWF0aW9uCi0gdGltZW91dCBzaG91bGQgYmUgaW50cmluc2ljIHRvIHRoZSBjb25uZWN0aW9uIG9iamVjdCBpbnN0ZWFkIG9mIGFuCiAgb3B0aW9uIG9uIG9uZSBvZiB0aGUgcmVhZCBjYWxscyBvbmx5CgoiIiIKCgojIEltcG9ydGVkIG1vZHVsZXMKaW1wb3J0IHN5cwppbXBvcnQgc29ja2V0CmltcG9ydCBzZWxlY3RvcnMKZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKaW1wb3J0IHdhcm5pbmdzCgp3YXJuaW5ncy5fZGVwcmVjYXRlZChfX25hbWVfXywgcmVtb3ZlPSgzLCAxMykpCgpfX2FsbF9fID0gWyJUZWxuZXQiXQoKIyBUdW5hYmxlIHBhcmFtZXRlcnMKREVCVUdMRVZFTCA9IDAKCiMgVGVsbmV0IHByb3RvY29sIGRlZmF1bHRzClRFTE5FVF9QT1JUID0gMjMKCiMgVGVsbmV0IHByb3RvY29sIGNoYXJhY3RlcnMgKGRvbid0IGNoYW5nZSkKSUFDICA9IGJ5dGVzKFsyNTVdKSAjICJJbnRlcnByZXQgQXMgQ29tbWFuZCIKRE9OVCA9IGJ5dGVzKFsyNTRdKQpETyAgID0gYnl0ZXMoWzI1M10pCldPTlQgPSBieXRlcyhbMjUyXSkKV0lMTCA9IGJ5dGVzKFsyNTFdKQp0aGVOVUxMID0gYnl0ZXMoWzBdKQoKU0UgID0gYnl0ZXMoWzI0MF0pICAjIFN1Ym5lZ290aWF0aW9uIEVuZApOT1AgPSBieXRlcyhbMjQxXSkgICMgTm8gT3BlcmF0aW9uCkRNICA9IGJ5dGVzKFsyNDJdKSAgIyBEYXRhIE1hcmsKQlJLID0gYnl0ZXMoWzI0M10pICAjIEJyZWFrCklQICA9IGJ5dGVzKFsyNDRdKSAgIyBJbnRlcnJ1cHQgcHJvY2VzcwpBTyAgPSBieXRlcyhbMjQ1XSkgICMgQWJvcnQgb3V0cHV0CkFZVCA9IGJ5dGVzKFsyNDZdKSAgIyBBcmUgWW91IFRoZXJlCkVDICA9IGJ5dGVzKFsyNDddKSAgIyBFcmFzZSBDaGFyYWN0ZXIKRUwgID0gYnl0ZXMoWzI0OF0pICAjIEVyYXNlIExpbmUKR0EgID0gYnl0ZXMoWzI0OV0pICAjIEdvIEFoZWFkClNCID0gIGJ5dGVzKFsyNTBdKSAgIyBTdWJuZWdvdGlhdGlvbiBCZWdpbgoKCiMgVGVsbmV0IHByb3RvY29sIG9wdGlvbnMgY29kZSAoZG9uJ3QgY2hhbmdlKQojIFRoZXNlIG9uZXMgYWxsIGNvbWUgZnJvbSBhcnBhL3RlbG5ldC5oCkJJTkFSWSA9IGJ5dGVzKFswXSkgIyA4LWJpdCBkYXRhIHBhdGgKRUNITyA9IGJ5dGVzKFsxXSkgIyBlY2hvClJDUCA9IGJ5dGVzKFsyXSkgIyBwcmVwYXJlIHRvIHJlY29ubmVjdApTR0EgPSBieXRlcyhbM10pICMgc3VwcHJlc3MgZ28gYWhlYWQKTkFNUyA9IGJ5dGVzKFs0XSkgIyBhcHByb3hpbWF0ZSBtZXNzYWdlIHNpemUKU1RBVFVTID0gYnl0ZXMoWzVdKSAjIGdpdmUgc3RhdHVzClRNID0gYnl0ZXMoWzZdKSAjIHRpbWluZyBtYXJrClJDVEUgPSBieXRlcyhbN10pICMgcmVtb3RlIGNvbnRyb2xsZWQgdHJhbnNtaXNzaW9uIGFuZCBlY2hvCk5BT0wgPSBieXRlcyhbOF0pICMgbmVnb3RpYXRlIGFib3V0IG91dHB1dCBsaW5lIHdpZHRoCk5BT1AgPSBieXRlcyhbOV0pICMgbmVnb3RpYXRlIGFib3V0IG91dHB1dCBwYWdlIHNpemUKTkFPQ1JEID0gYnl0ZXMoWzEwXSkgIyBuZWdvdGlhdGUgYWJvdXQgQ1IgZGlzcG9zaXRpb24KTkFPSFRTID0gYnl0ZXMoWzExXSkgIyBuZWdvdGlhdGUgYWJvdXQgaG9yaXpvbnRhbCB0YWJzdG9wcwpOQU9IVEQgPSBieXRlcyhbMTJdKSAjIG5lZ290aWF0ZSBhYm91dCBob3Jpem9udGFsIHRhYiBkaXNwb3NpdGlvbgpOQU9GRkQgPSBieXRlcyhbMTNdKSAjIG5lZ290aWF0ZSBhYm91dCBmb3JtZmVlZCBkaXNwb3NpdGlvbgpOQU9WVFMgPSBieXRlcyhbMTRdKSAjIG5lZ290aWF0ZSBhYm91dCB2ZXJ0aWNhbCB0YWIgc3RvcHMKTkFPVlREID0gYnl0ZXMoWzE1XSkgIyBuZWdvdGlhdGUgYWJvdXQgdmVydGljYWwgdGFiIGRpc3Bvc2l0aW9uCk5BT0xGRCA9IGJ5dGVzKFsxNl0pICMgbmVnb3RpYXRlIGFib3V0IG91dHB1dCBMRiBkaXNwb3NpdGlvbgpYQVNDSUkgPSBieXRlcyhbMTddKSAjIGV4dGVuZGVkIGFzY2lpIGNoYXJhY3RlciBzZXQKTE9HT1VUID0gYnl0ZXMoWzE4XSkgIyBmb3JjZSBsb2dvdXQKQk0gPSBieXRlcyhbMTldKSAjIGJ5dGUgbWFjcm8KREVUID0gYnl0ZXMoWzIwXSkgIyBkYXRhIGVudHJ5IHRlcm1pbmFsClNVUERVUCA9IGJ5dGVzKFsyMV0pICMgc3VwZHVwIHByb3RvY29sClNVUERVUE9VVFBVVCA9IGJ5dGVzKFsyMl0pICMgc3VwZHVwIG91dHB1dApTTkRMT0MgPSBieXRlcyhbMjNdKSAjIHNlbmQgbG9jYXRpb24KVFRZUEUgPSBieXRlcyhbMjRdKSAjIHRlcm1pbmFsIHR5cGUKRU9SID0gYnl0ZXMoWzI1XSkgIyBlbmQgb3IgcmVjb3JkClRVSUQgPSBieXRlcyhbMjZdKSAjIFRBQ0FDUyB1c2VyIGlkZW50aWZpY2F0aW9uCk9VVE1SSyA9IGJ5dGVzKFsyN10pICMgb3V0cHV0IG1hcmtpbmcKVFRZTE9DID0gYnl0ZXMoWzI4XSkgIyB0ZXJtaW5hbCBsb2NhdGlvbiBudW1iZXIKVlQzMjcwUkVHSU1FID0gYnl0ZXMoWzI5XSkgIyAzMjcwIHJlZ2ltZQpYM1BBRCA9IGJ5dGVzKFszMF0pICMgWC4zIFBBRApOQVdTID0gYnl0ZXMoWzMxXSkgIyB3aW5kb3cgc2l6ZQpUU1BFRUQgPSBieXRlcyhbMzJdKSAjIHRlcm1pbmFsIHNwZWVkCkxGTE9XID0gYnl0ZXMoWzMzXSkgIyByZW1vdGUgZmxvdyBjb250cm9sCkxJTkVNT0RFID0gYnl0ZXMoWzM0XSkgIyBMaW5lbW9kZSBvcHRpb24KWERJU1BMT0MgPSBieXRlcyhbMzVdKSAjIFggRGlzcGxheSBMb2NhdGlvbgpPTERfRU5WSVJPTiA9IGJ5dGVzKFszNl0pICMgT2xkIC0gRW52aXJvbm1lbnQgdmFyaWFibGVzCkFVVEhFTlRJQ0FUSU9OID0gYnl0ZXMoWzM3XSkgIyBBdXRoZW50aWNhdGUKRU5DUllQVCA9IGJ5dGVzKFszOF0pICMgRW5jcnlwdGlvbiBvcHRpb24KTkVXX0VOVklST04gPSBieXRlcyhbMzldKSAjIE5ldyAtIEVudmlyb25tZW50IHZhcmlhYmxlcwojIHRoZSBmb2xsb3dpbmcgb25lcyBjb21lIGZyb20KIyBodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL3RlbG5ldC1vcHRpb25zCiMgVW5mb3J0dW5hdGVseSwgdGhhdCBkb2N1bWVudCBkb2VzIG5vdCBhc3NpZ24gaWRlbnRpZmllcnMKIyB0byBhbGwgb2YgdGhlbSwgc28gd2UgYXJlIG1ha2luZyB0aGVtIHVwClROMzI3MEUgPSBieXRlcyhbNDBdKSAjIFROMzI3MEUKWEFVVEggPSBieXRlcyhbNDFdKSAjIFhBVVRICkNIQVJTRVQgPSBieXRlcyhbNDJdKSAjIENIQVJTRVQKUlNQID0gYnl0ZXMoWzQzXSkgIyBUZWxuZXQgUmVtb3RlIFNlcmlhbCBQb3J0CkNPTV9QT1JUX09QVElPTiA9IGJ5dGVzKFs0NF0pICMgQ29tIFBvcnQgQ29udHJvbCBPcHRpb24KU1VQUFJFU1NfTE9DQUxfRUNITyA9IGJ5dGVzKFs0NV0pICMgVGVsbmV0IFN1cHByZXNzIExvY2FsIEVjaG8KVExTID0gYnl0ZXMoWzQ2XSkgIyBUZWxuZXQgU3RhcnQgVExTCktFUk1JVCA9IGJ5dGVzKFs0N10pICMgS0VSTUlUClNFTkRfVVJMID0gYnl0ZXMoWzQ4XSkgIyBTRU5ELVVSTApGT1JXQVJEX1ggPSBieXRlcyhbNDldKSAjIEZPUldBUkRfWApQUkFHTUFfTE9HT04gPSBieXRlcyhbMTM4XSkgIyBURUxPUFQgUFJBR01BIExPR09OClNTUElfTE9HT04gPSBieXRlcyhbMTM5XSkgIyBURUxPUFQgU1NQSSBMT0dPTgpQUkFHTUFfSEVBUlRCRUFUID0gYnl0ZXMoWzE0MF0pICMgVEVMT1BUIFBSQUdNQSBIRUFSVEJFQVQKRVhPUEwgPSBieXRlcyhbMjU1XSkgIyBFeHRlbmRlZC1PcHRpb25zLUxpc3QKTk9PUFQgPSBieXRlcyhbMF0pCgoKIyBwb2xsL3NlbGVjdCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkgZXh0cmEgZmlsZSBkZXNjcmlwdG9yLAojIGNvbnRyYXJpbHkgdG8gZXBvbGwva3F1ZXVlIChhbHNvLCB0aGV5IHJlcXVpcmUgYSBzaW5nbGUgc3lzY2FsbCkuCmlmIGhhc2F0dHIoc2VsZWN0b3JzLCAnUG9sbFNlbGVjdG9yJyk6CiAgICBfVGVsbmV0U2VsZWN0b3IgPSBzZWxlY3RvcnMuUG9sbFNlbGVjdG9yCmVsc2U6CiAgICBfVGVsbmV0U2VsZWN0b3IgPSBzZWxlY3RvcnMuU2VsZWN0U2VsZWN0b3IKCgpjbGFzcyBUZWxuZXQ6CgogICAgIiIiVGVsbmV0IGludGVyZmFjZSBjbGFzcy4KCiAgICBBbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBjb25uZWN0aW9uIHRvIGEgdGVsbmV0CiAgICBzZXJ2ZXIuICBUaGUgaW5zdGFuY2UgaXMgaW5pdGlhbGx5IG5vdCBjb25uZWN0ZWQ7IHRoZSBvcGVuKCkKICAgIG1ldGhvZCBtdXN0IGJlIHVzZWQgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbi4gIEFsdGVybmF0aXZlbHksIHRoZQogICAgaG9zdCBuYW1lIGFuZCBvcHRpb25hbCBwb3J0IG51bWJlciBjYW4gYmUgcGFzc2VkIHRvIHRoZQogICAgY29uc3RydWN0b3IsIHRvby4KCiAgICBEb24ndCB0cnkgdG8gcmVvcGVuIGFuIGFscmVhZHkgY29ubmVjdGVkIGluc3RhbmNlLgoKICAgIFRoaXMgY2xhc3MgaGFzIG1hbnkgcmVhZF8qKCkgbWV0aG9kcy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZW0KICAgIHJhaXNlIEVPRkVycm9yIHdoZW4gdGhlIGVuZCBvZiB0aGUgY29ubmVjdGlvbiBpcyByZWFkLCBiZWNhdXNlCiAgICB0aGV5IGNhbiByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGZvciBvdGhlciByZWFzb25zLiAgU2VlIHRoZQogICAgaW5kaXZpZHVhbCBkb2Mgc3RyaW5ncy4KCiAgICByZWFkX3VudGlsKGV4cGVjdGVkLCBbdGltZW91dF0pCiAgICAgICAgUmVhZCB1bnRpbCB0aGUgZXhwZWN0ZWQgc3RyaW5nIGhhcyBiZWVuIHNlZW4sIG9yIGEgdGltZW91dCBpcwogICAgICAgIGhpdCAoZGVmYXVsdCBpcyBubyB0aW1lb3V0KTsgbWF5IGJsb2NrLgoKICAgIHJlYWRfYWxsKCkKICAgICAgICBSZWFkIGFsbCBkYXRhIHVudGlsIEVPRjsgbWF5IGJsb2NrLgoKICAgIHJlYWRfc29tZSgpCiAgICAgICAgUmVhZCBhdCBsZWFzdCBvbmUgYnl0ZSBvciBFT0Y7IG1heSBibG9jay4KCiAgICByZWFkX3ZlcnlfZWFnZXIoKQogICAgICAgIFJlYWQgYWxsIGRhdGEgYXZhaWxhYmxlIGFscmVhZHkgcXVldWVkIG9yIG9uIHRoZSBzb2NrZXQsCiAgICAgICAgd2l0aG91dCBibG9ja2luZy4KCiAgICByZWFkX2VhZ2VyKCkKICAgICAgICBSZWFkIGVpdGhlciBkYXRhIGFscmVhZHkgcXVldWVkIG9yIHNvbWUgZGF0YSBhdmFpbGFibGUgb24gdGhlCiAgICAgICAgc29ja2V0LCB3aXRob3V0IGJsb2NraW5nLgoKICAgIHJlYWRfbGF6eSgpCiAgICAgICAgUmVhZCBhbGwgZGF0YSBpbiB0aGUgcmF3IHF1ZXVlIChwcm9jZXNzaW5nIGl0IGZpcnN0KSwgd2l0aG91dAogICAgICAgIGRvaW5nIGFueSBzb2NrZXQgSS9PLgoKICAgIHJlYWRfdmVyeV9sYXp5KCkKICAgICAgICBSZWFkcyBhbGwgZGF0YSBpbiB0aGUgY29va2VkIHF1ZXVlLCB3aXRob3V0IGRvaW5nIGFueSBzb2NrZXQKICAgICAgICBJL08uCgogICAgcmVhZF9zYl9kYXRhKCkKICAgICAgICBSZWFkcyBhdmFpbGFibGUgZGF0YSBiZXR3ZWVuIFNCIC4uLiBTRSBzZXF1ZW5jZS4gRG9uJ3QgYmxvY2suCgogICAgc2V0X29wdGlvbl9uZWdvdGlhdGlvbl9jYWxsYmFjayhjYWxsYmFjaykKICAgICAgICBFYWNoIHRpbWUgYSB0ZWxuZXQgb3B0aW9uIGlzIHJlYWQgb24gdGhlIGlucHV0IGZsb3csIHRoaXMgY2FsbGJhY2sKICAgICAgICAoaWYgc2V0KSBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgOgogICAgICAgIGNhbGxiYWNrKHRlbG5ldCBzb2NrZXQsIGNvbW1hbmQsIG9wdGlvbikKICAgICAgICAgICAgb3B0aW9uIHdpbGwgYmUgY2hyKDApIHdoZW4gdGhlcmUgaXMgbm8gb3B0aW9uLgogICAgICAgIE5vIG90aGVyIGFjdGlvbiBpcyBkb25lIGFmdGVyd2FyZHMgYnkgdGVsbmV0bGliLgoKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PU5vbmUsIHBvcnQ9MCwKICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CiAgICAgICAgIiIiQ29uc3RydWN0b3IuCgogICAgICAgIFdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBjcmVhdGUgYW4gdW5jb25uZWN0ZWQgaW5zdGFuY2UuCiAgICAgICAgV2l0aCBhIGhvc3RuYW1lIGFyZ3VtZW50LCBpdCBjb25uZWN0cyB0aGUgaW5zdGFuY2U7IHBvcnQgbnVtYmVyCiAgICAgICAgYW5kIHRpbWVvdXQgYXJlIG9wdGlvbmFsLgogICAgICAgICIiIgogICAgICAgIHNlbGYuZGVidWdsZXZlbCA9IERFQlVHTEVWRUwKICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICBzZWxmLnNvY2sgPSBOb25lCiAgICAgICAgc2VsZi5yYXdxID0gYicnCiAgICAgICAgc2VsZi5pcmF3cSA9IDAKICAgICAgICBzZWxmLmNvb2tlZHEgPSBiJycKICAgICAgICBzZWxmLmVvZiA9IDAKICAgICAgICBzZWxmLmlhY3NlcSA9IGInJyAjIEJ1ZmZlciBmb3IgSUFDIHNlcXVlbmNlLgogICAgICAgIHNlbGYuc2IgPSAwICMgZmxhZyBmb3IgU0IgYW5kIFNFIHNlcXVlbmNlLgogICAgICAgIHNlbGYuc2JkYXRhcSA9IGInJwogICAgICAgIHNlbGYub3B0aW9uX2NhbGxiYWNrID0gTm9uZQogICAgICAgIGlmIGhvc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYub3Blbihob3N0LCBwb3J0LCB0aW1lb3V0KQoKICAgIGRlZiBvcGVuKHNlbGYsIGhvc3QsIHBvcnQ9MCwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgogICAgICAgICIiIkNvbm5lY3QgdG8gYSBob3N0LgoKICAgICAgICBUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBwb3J0IG51bWJlciwgd2hpY2gKICAgICAgICBkZWZhdWx0cyB0byB0aGUgc3RhbmRhcmQgdGVsbmV0IHBvcnQgKDIzKS4KCiAgICAgICAgRG9uJ3QgdHJ5IHRvIHJlb3BlbiBhbiBhbHJlYWR5IGNvbm5lY3RlZCBpbnN0YW5jZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmVvZiA9IDAKICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgcG9ydCA9IFRFTE5FVF9QT1JUCiAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgc3lzLmF1ZGl0KCJ0ZWxuZXRsaWIuVGVsbmV0Lm9wZW4iLCBzZWxmLCBob3N0LCBwb3J0KQogICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQpCgogICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIiIiRGVzdHJ1Y3RvciAtLSBjbG9zZSB0aGUgY29ubmVjdGlvbi4iIiIKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgbXNnKHNlbGYsIG1zZywgKmFyZ3MpOgogICAgICAgICIiIlByaW50IGEgZGVidWcgbWVzc2FnZSwgd2hlbiB0aGUgZGVidWcgbGV2ZWwgaXMgPiAwLgoKICAgICAgICBJZiBleHRyYSBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIHN1YnN0aXR1dGVkIGluIHRoZQogICAgICAgIG1lc3NhZ2UgdXNpbmcgdGhlIHN0YW5kYXJkIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdG9yLgoKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICBwcmludCgnVGVsbmV0KCVzLCVzKTonICUgKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgZW5kPScgJykKICAgICAgICAgICAgaWYgYXJnczoKICAgICAgICAgICAgICAgIHByaW50KG1zZyAlIGFyZ3MpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludChtc2cpCgogICAgZGVmIHNldF9kZWJ1Z2xldmVsKHNlbGYsIGRlYnVnbGV2ZWwpOgogICAgICAgICIiIlNldCB0aGUgZGVidWcgbGV2ZWwuCgogICAgICAgIFRoZSBoaWdoZXIgaXQgaXMsIHRoZSBtb3JlIGRlYnVnIG91dHB1dCB5b3UgZ2V0IChvbiBzeXMuc3Rkb3V0KS4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5kZWJ1Z2xldmVsID0gZGVidWdsZXZlbAoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgY29ubmVjdGlvbi4iIiIKICAgICAgICBzb2NrID0gc2VsZi5zb2NrCiAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgIHNlbGYuZW9mID0gVHJ1ZQogICAgICAgIHNlbGYuaWFjc2VxID0gYicnCiAgICAgICAgc2VsZi5zYiA9IDAKICAgICAgICBpZiBzb2NrOgogICAgICAgICAgICBzb2NrLmNsb3NlKCkKCiAgICBkZWYgZ2V0X3NvY2tldChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHNvY2tldCBvYmplY3QgdXNlZCBpbnRlcm5hbGx5LiIiIgogICAgICAgIHJldHVybiBzZWxmLnNvY2sKCiAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgZmlsZW5vKCkgb2YgdGhlIHNvY2tldCBvYmplY3QgdXNlZCBpbnRlcm5hbGx5LiIiIgogICAgICAgIHJldHVybiBzZWxmLnNvY2suZmlsZW5vKCkKCiAgICBkZWYgd3JpdGUoc2VsZiwgYnVmZmVyKToKICAgICAgICAiIiJXcml0ZSBhIHN0cmluZyB0byB0aGUgc29ja2V0LCBkb3VibGluZyBhbnkgSUFDIGNoYXJhY3RlcnMuCgogICAgICAgIENhbiBibG9jayBpZiB0aGUgY29ubmVjdGlvbiBpcyBibG9ja2VkLiAgTWF5IHJhaXNlCiAgICAgICAgT1NFcnJvciBpZiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQuCgogICAgICAgICIiIgogICAgICAgIGlmIElBQyBpbiBidWZmZXI6CiAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5yZXBsYWNlKElBQywgSUFDK0lBQykKICAgICAgICBzeXMuYXVkaXQoInRlbG5ldGxpYi5UZWxuZXQud3JpdGUiLCBzZWxmLCBidWZmZXIpCiAgICAgICAgc2VsZi5tc2coInNlbmQgJXIiLCBidWZmZXIpCiAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwoYnVmZmVyKQoKICAgIGRlZiByZWFkX3VudGlsKHNlbGYsIG1hdGNoLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICIiIlJlYWQgdW50aWwgYSBnaXZlbiBzdHJpbmcgaXMgZW5jb3VudGVyZWQgb3IgdW50aWwgdGltZW91dC4KCiAgICAgICAgV2hlbiBubyBtYXRjaCBpcyBmb3VuZCwgcmV0dXJuIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBpbnN0ZWFkLAogICAgICAgIHBvc3NpYmx5IHRoZSBlbXB0eSBzdHJpbmcuICBSYWlzZSBFT0ZFcnJvciBpZiB0aGUgY29ubmVjdGlvbgogICAgICAgIGlzIGNsb3NlZCBhbmQgbm8gY29va2VkIGRhdGEgaXMgYXZhaWxhYmxlLgoKICAgICAgICAiIiIKICAgICAgICBuID0gbGVuKG1hdGNoKQogICAgICAgIHNlbGYucHJvY2Vzc19yYXdxKCkKICAgICAgICBpID0gc2VsZi5jb29rZWRxLmZpbmQobWF0Y2gpCiAgICAgICAgaWYgaSA+PSAwOgogICAgICAgICAgICBpID0gaStuCiAgICAgICAgICAgIGJ1ZiA9IHNlbGYuY29va2VkcVs6aV0KICAgICAgICAgICAgc2VsZi5jb29rZWRxID0gc2VsZi5jb29rZWRxW2k6XQogICAgICAgICAgICByZXR1cm4gYnVmCiAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgZGVhZGxpbmUgPSBfdGltZSgpICsgdGltZW91dAogICAgICAgIHdpdGggX1RlbG5ldFNlbGVjdG9yKCkgYXMgc2VsZWN0b3I6CiAgICAgICAgICAgIHNlbGVjdG9yLnJlZ2lzdGVyKHNlbGYsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5lb2Y6CiAgICAgICAgICAgICAgICBpZiBzZWxlY3Rvci5zZWxlY3QodGltZW91dCk6CiAgICAgICAgICAgICAgICAgICAgaSA9IG1heCgwLCBsZW4oc2VsZi5jb29rZWRxKS1uKQogICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsbF9yYXdxKCkKICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfcmF3cSgpCiAgICAgICAgICAgICAgICAgICAgaSA9IHNlbGYuY29va2VkcS5maW5kKG1hdGNoLCBpKQogICAgICAgICAgICAgICAgICAgIGlmIGkgPj0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkrbgogICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmNvb2tlZHFbOmldCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29va2VkcSA9IHNlbGYuY29va2VkcVtpOl0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZgogICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfdGltZSgpCiAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8IDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgcmV0dXJuIHNlbGYucmVhZF92ZXJ5X2xhenkoKQoKICAgIGRlZiByZWFkX2FsbChzZWxmKToKICAgICAgICAiIiJSZWFkIGFsbCBkYXRhIHVudGlsIEVPRjsgYmxvY2sgdW50aWwgY29ubmVjdGlvbiBjbG9zZWQuIiIiCiAgICAgICAgc2VsZi5wcm9jZXNzX3Jhd3EoKQogICAgICAgIHdoaWxlIG5vdCBzZWxmLmVvZjoKICAgICAgICAgICAgc2VsZi5maWxsX3Jhd3EoKQogICAgICAgICAgICBzZWxmLnByb2Nlc3NfcmF3cSgpCiAgICAgICAgYnVmID0gc2VsZi5jb29rZWRxCiAgICAgICAgc2VsZi5jb29rZWRxID0gYicnCiAgICAgICAgcmV0dXJuIGJ1ZgoKICAgIGRlZiByZWFkX3NvbWUoc2VsZik6CiAgICAgICAgIiIiUmVhZCBhdCBsZWFzdCBvbmUgYnl0ZSBvZiBjb29rZWQgZGF0YSB1bmxlc3MgRU9GIGlzIGhpdC4KCiAgICAgICAgUmV0dXJuIGInJyBpZiBFT0YgaXMgaGl0LiAgQmxvY2sgaWYgbm8gZGF0YSBpcyBpbW1lZGlhdGVseQogICAgICAgIGF2YWlsYWJsZS4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5wcm9jZXNzX3Jhd3EoKQogICAgICAgIHdoaWxlIG5vdCBzZWxmLmNvb2tlZHEgYW5kIG5vdCBzZWxmLmVvZjoKICAgICAgICAgICAgc2VsZi5maWxsX3Jhd3EoKQogICAgICAgICAgICBzZWxmLnByb2Nlc3NfcmF3cSgpCiAgICAgICAgYnVmID0gc2VsZi5jb29rZWRxCiAgICAgICAgc2VsZi5jb29rZWRxID0gYicnCiAgICAgICAgcmV0dXJuIGJ1ZgoKICAgIGRlZiByZWFkX3ZlcnlfZWFnZXIoc2VsZik6CiAgICAgICAgIiIiUmVhZCBldmVyeXRoaW5nIHRoYXQncyBwb3NzaWJsZSB3aXRob3V0IGJsb2NraW5nIGluIEkvTyAoZWFnZXIpLgoKICAgICAgICBSYWlzZSBFT0ZFcnJvciBpZiBjb25uZWN0aW9uIGNsb3NlZCBhbmQgbm8gY29va2VkIGRhdGEKICAgICAgICBhdmFpbGFibGUuICBSZXR1cm4gYicnIGlmIG5vIGNvb2tlZCBkYXRhIGF2YWlsYWJsZSBvdGhlcndpc2UuCiAgICAgICAgRG9uJ3QgYmxvY2sgdW5sZXNzIGluIHRoZSBtaWRzdCBvZiBhbiBJQUMgc2VxdWVuY2UuCgogICAgICAgICIiIgogICAgICAgIHNlbGYucHJvY2Vzc19yYXdxKCkKICAgICAgICB3aGlsZSBub3Qgc2VsZi5lb2YgYW5kIHNlbGYuc29ja19hdmFpbCgpOgogICAgICAgICAgICBzZWxmLmZpbGxfcmF3cSgpCiAgICAgICAgICAgIHNlbGYucHJvY2Vzc19yYXdxKCkKICAgICAgICByZXR1cm4gc2VsZi5yZWFkX3ZlcnlfbGF6eSgpCgogICAgZGVmIHJlYWRfZWFnZXIoc2VsZik6CiAgICAgICAgIiIiUmVhZCByZWFkaWx5IGF2YWlsYWJsZSBkYXRhLgoKICAgICAgICBSYWlzZSBFT0ZFcnJvciBpZiBjb25uZWN0aW9uIGNsb3NlZCBhbmQgbm8gY29va2VkIGRhdGEKICAgICAgICBhdmFpbGFibGUuICBSZXR1cm4gYicnIGlmIG5vIGNvb2tlZCBkYXRhIGF2YWlsYWJsZSBvdGhlcndpc2UuCiAgICAgICAgRG9uJ3QgYmxvY2sgdW5sZXNzIGluIHRoZSBtaWRzdCBvZiBhbiBJQUMgc2VxdWVuY2UuCgogICAgICAgICIiIgogICAgICAgIHNlbGYucHJvY2Vzc19yYXdxKCkKICAgICAgICB3aGlsZSBub3Qgc2VsZi5jb29rZWRxIGFuZCBub3Qgc2VsZi5lb2YgYW5kIHNlbGYuc29ja19hdmFpbCgpOgogICAgICAgICAgICBzZWxmLmZpbGxfcmF3cSgpCiAgICAgICAgICAgIHNlbGYucHJvY2Vzc19yYXdxKCkKICAgICAgICByZXR1cm4gc2VsZi5yZWFkX3ZlcnlfbGF6eSgpCgogICAgZGVmIHJlYWRfbGF6eShzZWxmKToKICAgICAgICAiIiJQcm9jZXNzIGFuZCByZXR1cm4gZGF0YSB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgcXVldWVzIChsYXp5KS4KCiAgICAgICAgUmFpc2UgRU9GRXJyb3IgaWYgY29ubmVjdGlvbiBjbG9zZWQgYW5kIG5vIGRhdGEgYXZhaWxhYmxlLgogICAgICAgIFJldHVybiBiJycgaWYgbm8gY29va2VkIGRhdGEgYXZhaWxhYmxlIG90aGVyd2lzZS4gIERvbid0IGJsb2NrCiAgICAgICAgdW5sZXNzIGluIHRoZSBtaWRzdCBvZiBhbiBJQUMgc2VxdWVuY2UuCgogICAgICAgICIiIgogICAgICAgIHNlbGYucHJvY2Vzc19yYXdxKCkKICAgICAgICByZXR1cm4gc2VsZi5yZWFkX3ZlcnlfbGF6eSgpCgogICAgZGVmIHJlYWRfdmVyeV9sYXp5KHNlbGYpOgogICAgICAgICIiIlJldHVybiBhbnkgZGF0YSBhdmFpbGFibGUgaW4gdGhlIGNvb2tlZCBxdWV1ZSAodmVyeSBsYXp5KS4KCiAgICAgICAgUmFpc2UgRU9GRXJyb3IgaWYgY29ubmVjdGlvbiBjbG9zZWQgYW5kIG5vIGRhdGEgYXZhaWxhYmxlLgogICAgICAgIFJldHVybiBiJycgaWYgbm8gY29va2VkIGRhdGEgYXZhaWxhYmxlIG90aGVyd2lzZS4gIERvbid0IGJsb2NrLgoKICAgICAgICAiIiIKICAgICAgICBidWYgPSBzZWxmLmNvb2tlZHEKICAgICAgICBzZWxmLmNvb2tlZHEgPSBiJycKICAgICAgICBpZiBub3QgYnVmIGFuZCBzZWxmLmVvZiBhbmQgbm90IHNlbGYucmF3cToKICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoJ3RlbG5ldCBjb25uZWN0aW9uIGNsb3NlZCcpCiAgICAgICAgcmV0dXJuIGJ1ZgoKICAgIGRlZiByZWFkX3NiX2RhdGEoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGFueSBkYXRhIGF2YWlsYWJsZSBpbiB0aGUgU0IgLi4uIFNFIHF1ZXVlLgoKICAgICAgICBSZXR1cm4gYicnIGlmIG5vIFNCIC4uLiBTRSBhdmFpbGFibGUuIFNob3VsZCBvbmx5IGJlIGNhbGxlZAogICAgICAgIGFmdGVyIHNlZWluZyBhIFNCIG9yIFNFIGNvbW1hbmQuIFdoZW4gYSBuZXcgU0IgY29tbWFuZCBpcwogICAgICAgIGZvdW5kLCBvbGQgdW5yZWFkIFNCIGRhdGEgd2lsbCBiZSBkaXNjYXJkZWQuIERvbid0IGJsb2NrLgoKICAgICAgICAiIiIKICAgICAgICBidWYgPSBzZWxmLnNiZGF0YXEKICAgICAgICBzZWxmLnNiZGF0YXEgPSBiJycKICAgICAgICByZXR1cm4gYnVmCgogICAgZGVmIHNldF9vcHRpb25fbmVnb3RpYXRpb25fY2FsbGJhY2soc2VsZiwgY2FsbGJhY2spOgogICAgICAgICIiIlByb3ZpZGUgYSBjYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgYWZ0ZXIgZWFjaCByZWNlaXB0IG9mIGEgdGVsbmV0IG9wdGlvbi4iIiIKICAgICAgICBzZWxmLm9wdGlvbl9jYWxsYmFjayA9IGNhbGxiYWNrCgogICAgZGVmIHByb2Nlc3NfcmF3cShzZWxmKToKICAgICAgICAiIiJUcmFuc2ZlciBmcm9tIHJhdyBxdWV1ZSB0byBjb29rZWQgcXVldWUuCgogICAgICAgIFNldCBzZWxmLmVvZiB3aGVuIGNvbm5lY3Rpb24gaXMgY2xvc2VkLiAgRG9uJ3QgYmxvY2sgdW5sZXNzIGluCiAgICAgICAgdGhlIG1pZHN0IG9mIGFuIElBQyBzZXF1ZW5jZS4KCiAgICAgICAgIiIiCiAgICAgICAgYnVmID0gW2InJywgYicnXQogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgc2VsZi5yYXdxOgogICAgICAgICAgICAgICAgYyA9IHNlbGYucmF3cV9nZXRjaGFyKCkKICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlhY3NlcToKICAgICAgICAgICAgICAgICAgICBpZiBjID09IHRoZU5VTEw6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgaWYgYyA9PSBiIlwwMjEiOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIGlmIGMgIT0gSUFDOgogICAgICAgICAgICAgICAgICAgICAgICBidWZbc2VsZi5zYl0gPSBidWZbc2VsZi5zYl0gKyBjCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pYWNzZXEgKz0gYwogICAgICAgICAgICAgICAgZWxpZiBsZW4oc2VsZi5pYWNzZXEpID09IDE6CiAgICAgICAgICAgICAgICAgICAgIyAnSUFDOiBJQUMgQ01EIFtPUFRJT04gb25seSBmb3IgV0lMTC9XT05UL0RPL0RPTlRdJwogICAgICAgICAgICAgICAgICAgIGlmIGMgaW4gKERPLCBET05ULCBXSUxMLCBXT05UKToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pYWNzZXEgKz0gYwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgICAgICBzZWxmLmlhY3NlcSA9IGInJwogICAgICAgICAgICAgICAgICAgIGlmIGMgPT0gSUFDOgogICAgICAgICAgICAgICAgICAgICAgICBidWZbc2VsZi5zYl0gPSBidWZbc2VsZi5zYl0gKyBjCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgYyA9PSBTQjogIyBTQiAuLi4gU0Ugc3RhcnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNiID0gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYmRhdGFxID0gYicnCiAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBTRToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2IgPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNiZGF0YXEgPSBzZWxmLnNiZGF0YXEgKyBidWZbMV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlsxXSA9IGInJwogICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLm9wdGlvbl9jYWxsYmFjazoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbGJhY2sgaXMgc3VwcG9zZWQgdG8gbG9vayBpbnRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBzYmRhdGFxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9wdGlvbl9jYWxsYmFjayhzZWxmLnNvY2ssIGMsIE5PT1BUKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBjYW4ndCBvZmZlciBhdXRvbWF0aWMgcHJvY2Vzc2luZyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdWJvcHRpb25zLiBBbGFzLCB3ZSBzaG91bGQgbm90IGdldCBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5sZXNzIHdlIGRpZCBhIFdJTEwvRE8gYmVmb3JlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tc2coJ0lBQyAlZCBub3QgcmVjb2duaXplZCcgJSBvcmQoYykpCiAgICAgICAgICAgICAgICBlbGlmIGxlbihzZWxmLmlhY3NlcSkgPT0gMjoKICAgICAgICAgICAgICAgICAgICBjbWQgPSBzZWxmLmlhY3NlcVsxOjJdCiAgICAgICAgICAgICAgICAgICAgc2VsZi5pYWNzZXEgPSBiJycKICAgICAgICAgICAgICAgICAgICBvcHQgPSBjCiAgICAgICAgICAgICAgICAgICAgaWYgY21kIGluIChETywgRE9OVCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubXNnKCdJQUMgJXMgJWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kID09IERPIGFuZCAnRE8nIG9yICdET05UJywgb3JkKG9wdCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYub3B0aW9uX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcHRpb25fY2FsbGJhY2soc2VsZi5zb2NrLCBjbWQsIG9wdCkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jay5zZW5kYWxsKElBQyArIFdPTlQgKyBvcHQpCiAgICAgICAgICAgICAgICAgICAgZWxpZiBjbWQgaW4gKFdJTEwsIFdPTlQpOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1zZygnSUFDICVzICVkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9PSBXSUxMIGFuZCAnV0lMTCcgb3IgJ1dPTlQnLCBvcmQob3B0KSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5vcHRpb25fY2FsbGJhY2s6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9wdGlvbl9jYWxsYmFjayhzZWxmLnNvY2ssIGNtZCwgb3B0KQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwoSUFDICsgRE9OVCArIG9wdCkKICAgICAgICBleGNlcHQgRU9GRXJyb3I6ICMgcmFpc2VkIGJ5IHNlbGYucmF3cV9nZXRjaGFyKCkKICAgICAgICAgICAgc2VsZi5pYWNzZXEgPSBiJycgIyBSZXNldCBvbiBFT0YKICAgICAgICAgICAgc2VsZi5zYiA9IDAKICAgICAgICBzZWxmLmNvb2tlZHEgPSBzZWxmLmNvb2tlZHEgKyBidWZbMF0KICAgICAgICBzZWxmLnNiZGF0YXEgPSBzZWxmLnNiZGF0YXEgKyBidWZbMV0KCiAgICBkZWYgcmF3cV9nZXRjaGFyKHNlbGYpOgogICAgICAgICIiIkdldCBuZXh0IGNoYXIgZnJvbSByYXcgcXVldWUuCgogICAgICAgIEJsb2NrIGlmIG5vIGRhdGEgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLiAgUmFpc2UgRU9GRXJyb3IKICAgICAgICB3aGVuIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgoKICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc2VsZi5yYXdxOgogICAgICAgICAgICBzZWxmLmZpbGxfcmF3cSgpCiAgICAgICAgICAgIGlmIHNlbGYuZW9mOgogICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKICAgICAgICBjID0gc2VsZi5yYXdxW3NlbGYuaXJhd3E6c2VsZi5pcmF3cSsxXQogICAgICAgIHNlbGYuaXJhd3EgPSBzZWxmLmlyYXdxICsgMQogICAgICAgIGlmIHNlbGYuaXJhd3EgPj0gbGVuKHNlbGYucmF3cSk6CiAgICAgICAgICAgIHNlbGYucmF3cSA9IGInJwogICAgICAgICAgICBzZWxmLmlyYXdxID0gMAogICAgICAgIHJldHVybiBjCgogICAgZGVmIGZpbGxfcmF3cShzZWxmKToKICAgICAgICAiIiJGaWxsIHJhdyBxdWV1ZSBmcm9tIGV4YWN0bHkgb25lIHJlY3YoKSBzeXN0ZW0gY2FsbC4KCiAgICAgICAgQmxvY2sgaWYgbm8gZGF0YSBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuICBTZXQgc2VsZi5lb2Ygd2hlbgogICAgICAgIGNvbm5lY3Rpb24gaXMgY2xvc2VkLgoKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmlyYXdxID49IGxlbihzZWxmLnJhd3EpOgogICAgICAgICAgICBzZWxmLnJhd3EgPSBiJycKICAgICAgICAgICAgc2VsZi5pcmF3cSA9IDAKICAgICAgICAjIFRoZSBidWZmZXIgc2l6ZSBzaG91bGQgYmUgZmFpcmx5IHNtYWxsIHNvIGFzIHRvIGF2b2lkIHF1YWRyYXRpYwogICAgICAgICMgYmVoYXZpb3IgaW4gcHJvY2Vzc19yYXdxKCkgYWJvdmUKICAgICAgICBidWYgPSBzZWxmLnNvY2sucmVjdig1MCkKICAgICAgICBzZWxmLm1zZygicmVjdiAlciIsIGJ1ZikKICAgICAgICBzZWxmLmVvZiA9IChub3QgYnVmKQogICAgICAgIHNlbGYucmF3cSA9IHNlbGYucmF3cSArIGJ1ZgoKICAgIGRlZiBzb2NrX2F2YWlsKHNlbGYpOgogICAgICAgICIiIlRlc3Qgd2hldGhlciBkYXRhIGlzIGF2YWlsYWJsZSBvbiB0aGUgc29ja2V0LiIiIgogICAgICAgIHdpdGggX1RlbG5ldFNlbGVjdG9yKCkgYXMgc2VsZWN0b3I6CiAgICAgICAgICAgIHNlbGVjdG9yLnJlZ2lzdGVyKHNlbGYsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgICAgICByZXR1cm4gYm9vbChzZWxlY3Rvci5zZWxlY3QoMCkpCgogICAgZGVmIGludGVyYWN0KHNlbGYpOgogICAgICAgICIiIkludGVyYWN0aW9uIGZ1bmN0aW9uLCBlbXVsYXRlcyBhIHZlcnkgZHVtYiB0ZWxuZXQgY2xpZW50LiIiIgogICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgogICAgICAgICAgICBzZWxmLm10X2ludGVyYWN0KCkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgd2l0aCBfVGVsbmV0U2VsZWN0b3IoKSBhcyBzZWxlY3RvcjoKICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc2VsZiwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCiAgICAgICAgICAgIHNlbGVjdG9yLnJlZ2lzdGVyKHN5cy5zdGRpbiwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgZm9yIGtleSwgZXZlbnRzIGluIHNlbGVjdG9yLnNlbGVjdCgpOgogICAgICAgICAgICAgICAgICAgIGlmIGtleS5maWxlb2JqIGlzIHNlbGY6CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBzZWxmLnJlYWRfZWFnZXIoKQogICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnKioqIENvbm5lY3Rpb24gY2xvc2VkIGJ5IHJlbW90ZSBob3N0ICoqKicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGV4dDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUodGV4dC5kZWNvZGUoJ2FzY2lpJykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgICAgICAgICBlbGlmIGtleS5maWxlb2JqIGlzIHN5cy5zdGRpbjoKICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IHN5cy5zdGRpbi5yZWFkbGluZSgpLmVuY29kZSgnYXNjaWknKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGxpbmUpCgogICAgZGVmIG10X2ludGVyYWN0KHNlbGYpOgogICAgICAgICIiIk11bHRpdGhyZWFkZWQgdmVyc2lvbiBvZiBpbnRlcmFjdCgpLiIiIgogICAgICAgIGltcG9ydCBfdGhyZWFkCiAgICAgICAgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKHNlbGYubGlzdGVuZXIsICgpKQogICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgIGxpbmUgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQogICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHNlbGYud3JpdGUobGluZS5lbmNvZGUoJ2FzY2lpJykpCgogICAgZGVmIGxpc3RlbmVyKHNlbGYpOgogICAgICAgICIiIkhlbHBlciBmb3IgbXRfaW50ZXJhY3QoKSAtLSB0aGlzIGV4ZWN1dGVzIGluIHRoZSBvdGhlciB0aHJlYWQuIiIiCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZF9lYWdlcigpCiAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKICAgICAgICAgICAgICAgIHByaW50KCcqKiogQ29ubmVjdGlvbiBjbG9zZWQgYnkgcmVtb3RlIGhvc3QgKioqJykKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpZiBkYXRhOgogICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShkYXRhLmRlY29kZSgnYXNjaWknKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQoKICAgIGRlZiBleHBlY3Qoc2VsZiwgbGlzdCwgdGltZW91dD1Ob25lKToKICAgICAgICAiIiJSZWFkIHVudGlsIG9uZSBmcm9tIGEgbGlzdCBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbnMgbWF0Y2hlcy4KCiAgICAgICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zLCBlaXRoZXIKICAgICAgICBjb21waWxlZCAocmUuUGF0dGVybiBpbnN0YW5jZXMpIG9yIHVuY29tcGlsZWQgKHN0cmluZ3MpLgogICAgICAgIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgaXMgYSB0aW1lb3V0LCBpbiBzZWNvbmRzOyBkZWZhdWx0CiAgICAgICAgaXMgbm8gdGltZW91dC4KCiAgICAgICAgUmV0dXJuIGEgdHVwbGUgb2YgdGhyZWUgaXRlbXM6IHRoZSBpbmRleCBpbiB0aGUgbGlzdCBvZiB0aGUKICAgICAgICBmaXJzdCByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzOyB0aGUgcmUuTWF0Y2ggb2JqZWN0CiAgICAgICAgcmV0dXJuZWQ7IGFuZCB0aGUgdGV4dCByZWFkIHVwIHRpbGwgYW5kIGluY2x1ZGluZyB0aGUgbWF0Y2guCgogICAgICAgIElmIEVPRiBpcyByZWFkIGFuZCBubyB0ZXh0IHdhcyByZWFkLCByYWlzZSBFT0ZFcnJvci4KICAgICAgICBPdGhlcndpc2UsIHdoZW4gbm90aGluZyBtYXRjaGVzLCByZXR1cm4gKC0xLCBOb25lLCB0ZXh0KSB3aGVyZQogICAgICAgIHRleHQgaXMgdGhlIHRleHQgcmVjZWl2ZWQgc28gZmFyIChtYXkgYmUgdGhlIGVtcHR5IHN0cmluZyBpZiBhCiAgICAgICAgdGltZW91dCBoYXBwZW5lZCkuCgogICAgICAgIElmIGEgcmVndWxhciBleHByZXNzaW9uIGVuZHMgd2l0aCBhIGdyZWVkeSBtYXRjaCAoZS5nLiAnLionKQogICAgICAgIG9yIGlmIG1vcmUgdGhhbiBvbmUgZXhwcmVzc2lvbiBjYW4gbWF0Y2ggdGhlIHNhbWUgaW5wdXQsIHRoZQogICAgICAgIHJlc3VsdHMgYXJlIHVuZGV0ZXJtaW5pc3RpYywgYW5kIG1heSBkZXBlbmQgb24gdGhlIEkvTyB0aW1pbmcuCgogICAgICAgICIiIgogICAgICAgIHJlID0gTm9uZQogICAgICAgIGxpc3QgPSBsaXN0WzpdCiAgICAgICAgaW5kaWNlcyA9IHJhbmdlKGxlbihsaXN0KSkKICAgICAgICBmb3IgaSBpbiBpbmRpY2VzOgogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihsaXN0W2ldLCAic2VhcmNoIik6CiAgICAgICAgICAgICAgICBpZiBub3QgcmU6IGltcG9ydCByZQogICAgICAgICAgICAgICAgbGlzdFtpXSA9IHJlLmNvbXBpbGUobGlzdFtpXSkKICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBkZWFkbGluZSA9IF90aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgd2l0aCBfVGVsbmV0U2VsZWN0b3IoKSBhcyBzZWxlY3RvcjoKICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc2VsZiwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCiAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmVvZjoKICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19yYXdxKCkKICAgICAgICAgICAgICAgIGZvciBpIGluIGluZGljZXM6CiAgICAgICAgICAgICAgICAgICAgbSA9IGxpc3RbaV0uc2VhcmNoKHNlbGYuY29va2VkcSkKICAgICAgICAgICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgICAgICAgICBlID0gbS5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gc2VsZi5jb29rZWRxWzplXQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvb2tlZHEgPSBzZWxmLmNvb2tlZHFbZTpdCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaSwgbSwgdGV4dCkKICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmVhZHkgPSBzZWxlY3Rvci5zZWxlY3QodGltZW91dCkKICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfdGltZSgpCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWR5OgogICAgICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgc2VsZi5maWxsX3Jhd3EoKQogICAgICAgIHRleHQgPSBzZWxmLnJlYWRfdmVyeV9sYXp5KCkKICAgICAgICBpZiBub3QgdGV4dCBhbmQgc2VsZi5lb2Y6CiAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgcmV0dXJuICgtMSwgTm9uZSwgdGV4dCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgogICAgICAgIHNlbGYuY2xvc2UoKQoKCmRlZiB0ZXN0KCk6CiAgICAiIiJUZXN0IHByb2dyYW0gZm9yIHRlbG5ldGxpYi4KCiAgICBVc2FnZTogcHl0aG9uIHRlbG5ldGxpYi5weSBbLWRdIC4uLiBbaG9zdCBbcG9ydF1dCgogICAgRGVmYXVsdCBob3N0IGlzIGxvY2FsaG9zdDsgZGVmYXVsdCBwb3J0IGlzIDIzLgoKICAgICIiIgogICAgZGVidWdsZXZlbCA9IDAKICAgIHdoaWxlIHN5cy5hcmd2WzE6XSBhbmQgc3lzLmFyZ3ZbMV0gPT0gJy1kJzoKICAgICAgICBkZWJ1Z2xldmVsID0gZGVidWdsZXZlbCsxCiAgICAgICAgZGVsIHN5cy5hcmd2WzFdCiAgICBob3N0ID0gJ2xvY2FsaG9zdCcKICAgIGlmIHN5cy5hcmd2WzE6XToKICAgICAgICBob3N0ID0gc3lzLmFyZ3ZbMV0KICAgIHBvcnQgPSAwCiAgICBpZiBzeXMuYXJndlsyOl06CiAgICAgICAgcG9ydHN0ciA9IHN5cy5hcmd2WzJdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwb3J0ID0gaW50KHBvcnRzdHIpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHBvcnQgPSBzb2NrZXQuZ2V0c2VydmJ5bmFtZShwb3J0c3RyLCAndGNwJykKICAgIHdpdGggVGVsbmV0KCkgYXMgdG46CiAgICAgICAgdG4uc2V0X2RlYnVnbGV2ZWwoZGVidWdsZXZlbCkKICAgICAgICB0bi5vcGVuKGhvc3QsIHBvcnQsIHRpbWVvdXQ9MC41KQogICAgICAgIHRuLmludGVyYWN0KCkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB0ZXN0KCkKUEsDBBQAAAAAAAIgo1a46ve6nXUAAJ11AAALAAAAdGVtcGZpbGUucHkiIiJUZW1wb3JhcnkgZmlsZXMuCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBnZW5lcmljLCBsb3ctIGFuZCBoaWdoLWxldmVsIGludGVyZmFjZXMgZm9yCmNyZWF0aW5nIHRlbXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuICBBbGwgb2YgdGhlIGludGVyZmFjZXMKcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgd2l0aG91dCBmZWFyIG9mIHJhY2UgY29uZGl0aW9ucwpleGNlcHQgZm9yICdta3RlbXAnLiAgJ21rdGVtcCcgaXMgc3ViamVjdCB0byByYWNlIGNvbmRpdGlvbnMgYW5kCnNob3VsZCBub3QgYmUgdXNlZDsgaXQgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb25seS4KClRoZSBkZWZhdWx0IHBhdGggbmFtZXMgYXJlIHJldHVybmVkIGFzIHN0ci4gIElmIHlvdSBzdXBwbHkgYnl0ZXMgYXMKaW5wdXQsIGFsbCByZXR1cm4gdmFsdWVzIHdpbGwgYmUgaW4gYnl0ZXMuICBFeDoKCiAgICA+Pj4gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAoNCwgJy90bXAvdG1wdHB1OW5pbjgnKQogICAgPj4+IHRlbXBmaWxlLm1rZHRlbXAoc3VmZml4PWInJykKICAgIGInL3RtcC90bXBwYmk4ZjBoeScKClRoaXMgbW9kdWxlIGFsc28gcHJvdmlkZXMgc29tZSBkYXRhIGl0ZW1zIHRvIHRoZSB1c2VyOgoKICBUTVBfTUFYICAtIG1heGltdW0gbnVtYmVyIG9mIG5hbWVzIHRoYXQgd2lsbCBiZSB0cmllZCBiZWZvcmUKICAgICAgICAgICAgIGdpdmluZyB1cC4KICB0ZW1wZGlyICAtIElmIHRoaXMgaXMgc2V0IHRvIGEgc3RyaW5nIGJlZm9yZSB0aGUgZmlyc3QgdXNlIG9mCiAgICAgICAgICAgICBhbnkgcm91dGluZSBmcm9tIHRoaXMgbW9kdWxlLCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMKICAgICAgICAgICAgIGFub3RoZXIgY2FuZGlkYXRlIGxvY2F0aW9uIHRvIHN0b3JlIHRlbXBvcmFyeSBmaWxlcy4KIiIiCgpfX2FsbF9fID0gWwogICAgIk5hbWVkVGVtcG9yYXJ5RmlsZSIsICJUZW1wb3JhcnlGaWxlIiwgIyBoaWdoIGxldmVsIHNhZmUgaW50ZXJmYWNlcwogICAgIlNwb29sZWRUZW1wb3JhcnlGaWxlIiwgIlRlbXBvcmFyeURpcmVjdG9yeSIsCiAgICAibWtzdGVtcCIsICJta2R0ZW1wIiwgICAgICAgICAgICAgICAgICAjIGxvdyBsZXZlbCBzYWZlIGludGVyZmFjZXMKICAgICJta3RlbXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVwcmVjYXRlZCB1bnNhZmUgaW50ZXJmYWNlCiAgICAiVE1QX01BWCIsICJnZXR0ZW1wcHJlZml4IiwgICAgICAgICAgICAjIGNvbnN0YW50cwogICAgInRlbXBkaXIiLCAiZ2V0dGVtcGRpciIsCiAgICAiZ2V0dGVtcHByZWZpeGIiLCAiZ2V0dGVtcGRpcmIiLAogICBdCgoKIyBJbXBvcnRzLgoKaW1wb3J0IGZ1bmN0b29scyBhcyBfZnVuY3Rvb2xzCmltcG9ydCB3YXJuaW5ncyBhcyBfd2FybmluZ3MKaW1wb3J0IGlvIGFzIF9pbwppbXBvcnQgb3MgYXMgX29zCmltcG9ydCBzaHV0aWwgYXMgX3NodXRpbAppbXBvcnQgZXJybm8gYXMgX2Vycm5vCmZyb20gcmFuZG9tIGltcG9ydCBSYW5kb20gYXMgX1JhbmRvbQppbXBvcnQgc3lzIGFzIF9zeXMKaW1wb3J0IHR5cGVzIGFzIF90eXBlcwppbXBvcnQgd2Vha3JlZiBhcyBfd2Vha3JlZgppbXBvcnQgX3RocmVhZApfYWxsb2NhdGVfbG9jayA9IF90aHJlYWQuYWxsb2NhdGVfbG9jawoKX3RleHRfb3BlbmZsYWdzID0gX29zLk9fUkRXUiB8IF9vcy5PX0NSRUFUIHwgX29zLk9fRVhDTAppZiBoYXNhdHRyKF9vcywgJ09fTk9GT0xMT1cnKToKICAgIF90ZXh0X29wZW5mbGFncyB8PSBfb3MuT19OT0ZPTExPVwoKX2Jpbl9vcGVuZmxhZ3MgPSBfdGV4dF9vcGVuZmxhZ3MKaWYgaGFzYXR0cihfb3MsICdPX0JJTkFSWScpOgogICAgX2Jpbl9vcGVuZmxhZ3MgfD0gX29zLk9fQklOQVJZCgppZiBoYXNhdHRyKF9vcywgJ1RNUF9NQVgnKToKICAgIFRNUF9NQVggPSBfb3MuVE1QX01BWAplbHNlOgogICAgVE1QX01BWCA9IDEwMDAwCgojIFRoaXMgdmFyaWFibGUgX3dhc18gdW51c2VkIGZvciBsZWdhY3kgcmVhc29ucywgc2VlIGlzc3VlIDEwMzU0LgojIEJ1dCBhcyBvZiAzLjUgd2UgYWN0dWFsbHkgdXNlIGl0IGF0IHJ1bnRpbWUgc28gY2hhbmdpbmcgaXQgd291bGQKIyBoYXZlIGEgcG9zc2libHkgZGVzaXJhYmxlIHNpZGUgZWZmZWN0Li4uICBCdXQgd2UgZG8gbm90IHdhbnQgdG8gc3VwcG9ydAojIHRoYXQgYXMgYW4gQVBJLiAgSXQgaXMgdW5kb2N1bWVudGVkIG9uIHB1cnBvc2UuICBEbyBub3QgZGVwZW5kIG9uIHRoaXMuCnRlbXBsYXRlID0gInRtcCIKCiMgSW50ZXJuYWwgcm91dGluZXMuCgpfb25jZV9sb2NrID0gX2FsbG9jYXRlX2xvY2soKQoKCmRlZiBfZXhpc3RzKGZuKToKICAgIHRyeToKICAgICAgICBfb3MubHN0YXQoZm4pCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIFRydWUKCgpkZWYgX2luZmVyX3JldHVybl90eXBlKCphcmdzKToKICAgICIiIkxvb2sgYXQgdGhlIHR5cGUgb2YgYWxsIGFyZ3MgYW5kIGRpdmluZSB0aGVpciBpbXBsaWVkIHJldHVybiB0eXBlLiIiIgogICAgcmV0dXJuX3R5cGUgPSBOb25lCiAgICBmb3IgYXJnIGluIGFyZ3M6CiAgICAgICAgaWYgYXJnIGlzIE5vbmU6CiAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBfb3MuUGF0aExpa2UpOgogICAgICAgICAgICBhcmcgPSBfb3MuZnNwYXRoKGFyZykKCiAgICAgICAgaWYgaXNpbnN0YW5jZShhcmcsIGJ5dGVzKToKICAgICAgICAgICAgaWYgcmV0dXJuX3R5cGUgaXMgc3RyOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBtaXggYnl0ZXMgYW5kIG5vbi1ieXRlcyBpbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGggY29tcG9uZW50cy4iKQogICAgICAgICAgICByZXR1cm5fdHlwZSA9IGJ5dGVzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgcmV0dXJuX3R5cGUgaXMgYnl0ZXM6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBieXRlcyBhbmQgbm9uLWJ5dGVzIGluICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCBjb21wb25lbnRzLiIpCiAgICAgICAgICAgIHJldHVybl90eXBlID0gc3RyCiAgICBpZiByZXR1cm5fdHlwZSBpcyBOb25lOgogICAgICAgIGlmIHRlbXBkaXIgaXMgTm9uZSBvciBpc2luc3RhbmNlKHRlbXBkaXIsIHN0cik6CiAgICAgICAgICAgIHJldHVybiBzdHIgICMgdGVtcGZpbGUgQVBJcyByZXR1cm4gYSBzdHIgYnkgZGVmYXVsdC4KICAgICAgICBlbHNlOgogICAgICAgICAgICAjIHdlIGNvdWxkIGNoZWNrIGZvciBieXRlcyBidXQgaXQnbGwgZmFpbCBsYXRlciBvbiBhbnl3YXkKICAgICAgICAgICAgcmV0dXJuIGJ5dGVzCiAgICByZXR1cm4gcmV0dXJuX3R5cGUKCgpkZWYgX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKToKICAgICIiIkNvbW1vbiBwYXJhbWV0ZXIgcHJvY2Vzc2luZyBmb3IgbW9zdCBBUElzIGluIHRoaXMgbW9kdWxlLiIiIgogICAgb3V0cHV0X3R5cGUgPSBfaW5mZXJfcmV0dXJuX3R5cGUocHJlZml4LCBzdWZmaXgsIGRpcikKICAgIGlmIHN1ZmZpeCBpcyBOb25lOgogICAgICAgIHN1ZmZpeCA9IG91dHB1dF90eXBlKCkKICAgIGlmIHByZWZpeCBpcyBOb25lOgogICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKICAgICAgICAgICAgcHJlZml4ID0gdGVtcGxhdGUKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmVmaXggPSBfb3MuZnNlbmNvZGUodGVtcGxhdGUpCiAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICBpZiBvdXRwdXRfdHlwZSBpcyBzdHI6CiAgICAgICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRpciA9IGdldHRlbXBkaXJiKCkKICAgIHJldHVybiBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZQoKCmNsYXNzIF9SYW5kb21OYW1lU2VxdWVuY2U6CiAgICAiIiJBbiBpbnN0YW5jZSBvZiBfUmFuZG9tTmFtZVNlcXVlbmNlIGdlbmVyYXRlcyBhbiBlbmRsZXNzCiAgICBzZXF1ZW5jZSBvZiB1bnByZWRpY3RhYmxlIHN0cmluZ3Mgd2hpY2ggY2FuIHNhZmVseSBiZSBpbmNvcnBvcmF0ZWQKICAgIGludG8gZmlsZSBuYW1lcy4gIEVhY2ggc3RyaW5nIGlzIGVpZ2h0IGNoYXJhY3RlcnMgbG9uZy4gIE11bHRpcGxlCiAgICB0aHJlYWRzIGNhbiBzYWZlbHkgdXNlIHRoZSBzYW1lIGluc3RhbmNlIGF0IHRoZSBzYW1lIHRpbWUuCgogICAgX1JhbmRvbU5hbWVTZXF1ZW5jZSBpcyBhbiBpdGVyYXRvci4iIiIKCiAgICBjaGFyYWN0ZXJzID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV8iCgogICAgQHByb3BlcnR5CiAgICBkZWYgcm5nKHNlbGYpOgogICAgICAgIGN1cl9waWQgPSBfb3MuZ2V0cGlkKCkKICAgICAgICBpZiBjdXJfcGlkICE9IGdldGF0dHIoc2VsZiwgJ19ybmdfcGlkJywgTm9uZSk6CiAgICAgICAgICAgIHNlbGYuX3JuZyA9IF9SYW5kb20oKQogICAgICAgICAgICBzZWxmLl9ybmdfcGlkID0gY3VyX3BpZAogICAgICAgIHJldHVybiBzZWxmLl9ybmcKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgcmV0dXJuICcnLmpvaW4oc2VsZi5ybmcuY2hvaWNlcyhzZWxmLmNoYXJhY3RlcnMsIGs9OCkpCgpkZWYgX2NhbmRpZGF0ZV90ZW1wZGlyX2xpc3QoKToKICAgICIiIkdlbmVyYXRlIGEgbGlzdCBvZiBjYW5kaWRhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHdoaWNoCiAgICBfZ2V0X2RlZmF1bHRfdGVtcGRpciB3aWxsIHRyeS4iIiIKCiAgICBkaXJsaXN0ID0gW10KCiAgICAjIEZpcnN0LCB0cnkgdGhlIGVudmlyb25tZW50LgogICAgZm9yIGVudm5hbWUgaW4gJ1RNUERJUicsICdURU1QJywgJ1RNUCc6CiAgICAgICAgZGlybmFtZSA9IF9vcy5nZXRlbnYoZW52bmFtZSkKICAgICAgICBpZiBkaXJuYW1lOiBkaXJsaXN0LmFwcGVuZChkaXJuYW1lKQoKICAgICMgRmFpbGluZyB0aGF0LCB0cnkgT1Mtc3BlY2lmaWMgbG9jYXRpb25zLgogICAgaWYgX29zLm5hbWUgPT0gJ250JzoKICAgICAgICBkaXJsaXN0LmV4dGVuZChbIF9vcy5wYXRoLmV4cGFuZHVzZXIocid+XEFwcERhdGFcTG9jYWxcVGVtcCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgX29zLnBhdGguZXhwYW5kdmFycyhyJyVTWVNURU1ST09UJVxUZW1wJyksCiAgICAgICAgICAgICAgICAgICAgICAgICByJ2M6XHRlbXAnLCByJ2M6XHRtcCcsIHInXHRlbXAnLCByJ1x0bXAnIF0pCiAgICBlbHNlOgogICAgICAgIGRpcmxpc3QuZXh0ZW5kKFsgJy90bXAnLCAnL3Zhci90bXAnLCAnL3Vzci90bXAnIF0pCgogICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICB0cnk6CiAgICAgICAgZGlybGlzdC5hcHBlbmQoX29zLmdldGN3ZCgpKQogICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgZGlybGlzdC5hcHBlbmQoX29zLmN1cmRpcikKCiAgICByZXR1cm4gZGlybGlzdAoKZGVmIF9nZXRfZGVmYXVsdF90ZW1wZGlyKCk6CiAgICAiIiJDYWxjdWxhdGUgdGhlIGRlZmF1bHQgZGlyZWN0b3J5IHRvIHVzZSBmb3IgdGVtcG9yYXJ5IGZpbGVzLgogICAgVGhpcyByb3V0aW5lIHNob3VsZCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgoKICAgIFdlIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIGNhbmRpZGF0ZSB0ZW1wIGRpciBpcyB1c2FibGUgYnkKICAgIHRyeWluZyB0byBjcmVhdGUgYW5kIHdyaXRlIHRvIGEgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gIElmIHRoaXMKICAgIGlzIHN1Y2Nlc3NmdWwsIHRoZSB0ZXN0IGZpbGUgaXMgZGVsZXRlZC4gIFRvIHByZXZlbnQgZGVuaWFsIG9mCiAgICBzZXJ2aWNlLCB0aGUgbmFtZSBvZiB0aGUgdGVzdCBmaWxlIG11c3QgYmUgcmFuZG9taXplZC4iIiIKCiAgICBuYW1lciA9IF9SYW5kb21OYW1lU2VxdWVuY2UoKQogICAgZGlybGlzdCA9IF9jYW5kaWRhdGVfdGVtcGRpcl9saXN0KCkKCiAgICBmb3IgZGlyIGluIGRpcmxpc3Q6CiAgICAgICAgaWYgZGlyICE9IF9vcy5jdXJkaXI6CiAgICAgICAgICAgIGRpciA9IF9vcy5wYXRoLmFic3BhdGgoZGlyKQogICAgICAgICMgVHJ5IG9ubHkgYSBmZXcgbmFtZXMgcGVyIGRpcmVjdG9yeS4KICAgICAgICBmb3Igc2VxIGluIHJhbmdlKDEwMCk6CiAgICAgICAgICAgIG5hbWUgPSBuZXh0KG5hbWVyKQogICAgICAgICAgICBmaWxlbmFtZSA9IF9vcy5wYXRoLmpvaW4oZGlyLCBuYW1lKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmZCA9IF9vcy5vcGVuKGZpbGVuYW1lLCBfYmluX29wZW5mbGFncywgMG82MDApCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBfb3Mud3JpdGUoZmQsIGInYmxhdCcpCiAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgX29zLmNsb3NlKGZkKQogICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBfb3MudW5saW5rKGZpbGVuYW1lKQogICAgICAgICAgICAgICAgcmV0dXJuIGRpcgogICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgICAgIyBUaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24gd2hlbiBhIGRpcmVjdG9yeSB3aXRoIHRoZSBjaG9zZW4gbmFtZQogICAgICAgICAgICAgICAgIyBhbHJlYWR5IGV4aXN0cyBvbiB3aW5kb3dzLgogICAgICAgICAgICAgICAgaWYgKF9vcy5uYW1lID09ICdudCcgYW5kIF9vcy5wYXRoLmlzZGlyKGRpcikgYW5kCiAgICAgICAgICAgICAgICAgICAgX29zLmFjY2VzcyhkaXIsIF9vcy5XX09LKSk6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGJyZWFrICAgIyBubyBwb2ludCB0cnlpbmcgbW9yZSBuYW1lcyBpbiB0aGlzIGRpcmVjdG9yeQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIGJyZWFrICAgIyBubyBwb2ludCB0cnlpbmcgbW9yZSBuYW1lcyBpbiB0aGlzIGRpcmVjdG9yeQogICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoX2Vycm5vLkVOT0VOVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyB1c2FibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3VuZCBpbiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlybGlzdCkKCl9uYW1lX3NlcXVlbmNlID0gTm9uZQoKZGVmIF9nZXRfY2FuZGlkYXRlX25hbWVzKCk6CiAgICAiIiJDb21tb24gc2V0dXAgc2VxdWVuY2UgZm9yIGFsbCB1c2VyLWNhbGxhYmxlIGludGVyZmFjZXMuIiIiCgogICAgZ2xvYmFsIF9uYW1lX3NlcXVlbmNlCiAgICBpZiBfbmFtZV9zZXF1ZW5jZSBpcyBOb25lOgogICAgICAgIF9vbmNlX2xvY2suYWNxdWlyZSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBfbmFtZV9zZXF1ZW5jZSBpcyBOb25lOgogICAgICAgICAgICAgICAgX25hbWVfc2VxdWVuY2UgPSBfUmFuZG9tTmFtZVNlcXVlbmNlKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBfb25jZV9sb2NrLnJlbGVhc2UoKQogICAgcmV0dXJuIF9uYW1lX3NlcXVlbmNlCgoKZGVmIF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlLCBzdWYsIGZsYWdzLCBvdXRwdXRfdHlwZSk6CiAgICAiIiJDb2RlIGNvbW1vbiB0byBta3N0ZW1wLCBUZW1wb3JhcnlGaWxlLCBhbmQgTmFtZWRUZW1wb3JhcnlGaWxlLiIiIgoKICAgIGRpciA9IF9vcy5wYXRoLmFic3BhdGgoZGlyKQogICAgbmFtZXMgPSBfZ2V0X2NhbmRpZGF0ZV9uYW1lcygpCiAgICBpZiBvdXRwdXRfdHlwZSBpcyBieXRlczoKICAgICAgICBuYW1lcyA9IG1hcChfb3MuZnNlbmNvZGUsIG5hbWVzKQoKICAgIGZvciBzZXEgaW4gcmFuZ2UoVE1QX01BWCk6CiAgICAgICAgbmFtZSA9IG5leHQobmFtZXMpCiAgICAgICAgZmlsZSA9IF9vcy5wYXRoLmpvaW4oZGlyLCBwcmUgKyBuYW1lICsgc3VmKQogICAgICAgIF9zeXMuYXVkaXQoInRlbXBmaWxlLm1rc3RlbXAiLCBmaWxlKQogICAgICAgIHRyeToKICAgICAgICAgICAgZmQgPSBfb3Mub3BlbihmaWxlLCBmbGFncywgMG82MDApCiAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAjIFRoaXMgZXhjZXB0aW9uIGlzIHRocm93biB3aGVuIGEgZGlyZWN0b3J5IHdpdGggdGhlIGNob3NlbiBuYW1lCiAgICAgICAgICAgICMgYWxyZWFkeSBleGlzdHMgb24gd2luZG93cy4KICAgICAgICAgICAgaWYgKF9vcy5uYW1lID09ICdudCcgYW5kIF9vcy5wYXRoLmlzZGlyKGRpcikgYW5kCiAgICAgICAgICAgICAgICBfb3MuYWNjZXNzKGRpciwgX29zLldfT0spKToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIHJldHVybiBmZCwgZmlsZQoKICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcihfZXJybm8uRUVYSVNULAogICAgICAgICAgICAgICAgICAgICAgICAgICJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGUgbmFtZSBmb3VuZCIpCgoKIyBVc2VyIHZpc2libGUgaW50ZXJmYWNlcy4KCmRlZiBnZXR0ZW1wcHJlZml4KCk6CiAgICAiIiJUaGUgZGVmYXVsdCBwcmVmaXggZm9yIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBhcyBzdHJpbmcuIiIiCiAgICByZXR1cm4gX29zLmZzZGVjb2RlKHRlbXBsYXRlKQoKZGVmIGdldHRlbXBwcmVmaXhiKCk6CiAgICAiIiJUaGUgZGVmYXVsdCBwcmVmaXggZm9yIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBhcyBieXRlcy4iIiIKICAgIHJldHVybiBfb3MuZnNlbmNvZGUodGVtcGxhdGUpCgp0ZW1wZGlyID0gTm9uZQoKZGVmIF9nZXR0ZW1wZGlyKCk6CiAgICAiIiJQcml2YXRlIGFjY2Vzc29yIGZvciB0ZW1wZmlsZS50ZW1wZGlyLiIiIgogICAgZ2xvYmFsIHRlbXBkaXIKICAgIGlmIHRlbXBkaXIgaXMgTm9uZToKICAgICAgICBfb25jZV9sb2NrLmFjcXVpcmUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgdGVtcGRpciBpcyBOb25lOgogICAgICAgICAgICAgICAgdGVtcGRpciA9IF9nZXRfZGVmYXVsdF90ZW1wZGlyKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBfb25jZV9sb2NrLnJlbGVhc2UoKQogICAgcmV0dXJuIHRlbXBkaXIKCmRlZiBnZXR0ZW1wZGlyKCk6CiAgICAiIiJSZXR1cm5zIHRlbXBmaWxlLnRlbXBkaXIgYXMgc3RyLiIiIgogICAgcmV0dXJuIF9vcy5mc2RlY29kZShfZ2V0dGVtcGRpcigpKQoKZGVmIGdldHRlbXBkaXJiKCk6CiAgICAiIiJSZXR1cm5zIHRlbXBmaWxlLnRlbXBkaXIgYXMgYnl0ZXMuIiIiCiAgICByZXR1cm4gX29zLmZzZW5jb2RlKF9nZXR0ZW1wZGlyKCkpCgpkZWYgbWtzdGVtcChzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsIGRpcj1Ob25lLCB0ZXh0PUZhbHNlKToKICAgICIiIlVzZXItY2FsbGFibGUgZnVuY3Rpb24gdG8gY3JlYXRlIGFuZCByZXR1cm4gYSB1bmlxdWUgdGVtcG9yYXJ5CiAgICBmaWxlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgKGZkLCBuYW1lKSB3aGVyZSBmZCBpcyB0aGUKICAgIGZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBvcy5vcGVuLCBhbmQgbmFtZSBpcyB0aGUgZmlsZW5hbWUuCgogICAgSWYgJ3N1ZmZpeCcgaXMgbm90IE5vbmUsIHRoZSBmaWxlIG5hbWUgd2lsbCBlbmQgd2l0aCB0aGF0IHN1ZmZpeCwKICAgIG90aGVyd2lzZSB0aGVyZSB3aWxsIGJlIG5vIHN1ZmZpeC4KCiAgICBJZiAncHJlZml4JyBpcyBub3QgTm9uZSwgdGhlIGZpbGUgbmFtZSB3aWxsIGJlZ2luIHdpdGggdGhhdCBwcmVmaXgsCiAgICBvdGhlcndpc2UgYSBkZWZhdWx0IHByZWZpeCBpcyB1c2VkLgoKICAgIElmICdkaXInIGlzIG5vdCBOb25lLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhhdCBkaXJlY3RvcnksCiAgICBvdGhlcndpc2UgYSBkZWZhdWx0IGRpcmVjdG9yeSBpcyB1c2VkLgoKICAgIElmICd0ZXh0JyBpcyBzcGVjaWZpZWQgYW5kIHRydWUsIHRoZSBmaWxlIGlzIG9wZW5lZCBpbiB0ZXh0CiAgICBtb2RlLiAgRWxzZSAodGhlIGRlZmF1bHQpIHRoZSBmaWxlIGlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4KCiAgICBJZiBhbnkgb2YgJ3N1ZmZpeCcsICdwcmVmaXgnIGFuZCAnZGlyJyBhcmUgbm90IE5vbmUsIHRoZXkgbXVzdCBiZSB0aGUKICAgIHNhbWUgdHlwZS4gIElmIHRoZXkgYXJlIGJ5dGVzLCB0aGUgcmV0dXJuZWQgbmFtZSB3aWxsIGJlIGJ5dGVzOyBzdHIKICAgIG90aGVyd2lzZS4KCiAgICBUaGUgZmlsZSBpcyByZWFkYWJsZSBhbmQgd3JpdGFibGUgb25seSBieSB0aGUgY3JlYXRpbmcgdXNlciBJRC4KICAgIElmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHVzZXMgcGVybWlzc2lvbiBiaXRzIHRvIGluZGljYXRlIHdoZXRoZXIgYQogICAgZmlsZSBpcyBleGVjdXRhYmxlLCB0aGUgZmlsZSBpcyBleGVjdXRhYmxlIGJ5IG5vIG9uZS4gVGhlIGZpbGUKICAgIGRlc2NyaXB0b3IgaXMgbm90IGluaGVyaXRlZCBieSBjaGlsZHJlbiBvZiB0aGlzIHByb2Nlc3MuCgogICAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgZmlsZSB3aGVuIGRvbmUgd2l0aCBpdC4KICAgICIiIgoKICAgIHByZWZpeCwgc3VmZml4LCBkaXIsIG91dHB1dF90eXBlID0gX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKQoKICAgIGlmIHRleHQ6CiAgICAgICAgZmxhZ3MgPSBfdGV4dF9vcGVuZmxhZ3MKICAgIGVsc2U6CiAgICAgICAgZmxhZ3MgPSBfYmluX29wZW5mbGFncwoKICAgIHJldHVybiBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncywgb3V0cHV0X3R5cGUpCgoKZGVmIG1rZHRlbXAoc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSk6CiAgICAiIiJVc2VyLWNhbGxhYmxlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbmQgcmV0dXJuIGEgdW5pcXVlIHRlbXBvcmFyeQogICAgZGlyZWN0b3J5LiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4KCiAgICBBcmd1bWVudHMgYXJlIGFzIGZvciBta3N0ZW1wLCBleGNlcHQgdGhhdCB0aGUgJ3RleHQnIGFyZ3VtZW50IGlzCiAgICBub3QgYWNjZXB0ZWQuCgogICAgVGhlIGRpcmVjdG9yeSBpcyByZWFkYWJsZSwgd3JpdGFibGUsIGFuZCBzZWFyY2hhYmxlIG9ubHkgYnkgdGhlCiAgICBjcmVhdGluZyB1c2VyLgoKICAgIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIGRpcmVjdG9yeSB3aGVuIGRvbmUgd2l0aCBpdC4KICAgICIiIgoKICAgIHByZWZpeCwgc3VmZml4LCBkaXIsIG91dHB1dF90eXBlID0gX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKQoKICAgIG5hbWVzID0gX2dldF9jYW5kaWRhdGVfbmFtZXMoKQogICAgaWYgb3V0cHV0X3R5cGUgaXMgYnl0ZXM6CiAgICAgICAgbmFtZXMgPSBtYXAoX29zLmZzZW5jb2RlLCBuYW1lcykKCiAgICBmb3Igc2VxIGluIHJhbmdlKFRNUF9NQVgpOgogICAgICAgIG5hbWUgPSBuZXh0KG5hbWVzKQogICAgICAgIGZpbGUgPSBfb3MucGF0aC5qb2luKGRpciwgcHJlZml4ICsgbmFtZSArIHN1ZmZpeCkKICAgICAgICBfc3lzLmF1ZGl0KCJ0ZW1wZmlsZS5ta2R0ZW1wIiwgZmlsZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIF9vcy5ta2RpcihmaWxlLCAwbzcwMCkKICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICBjb250aW51ZSAgICAjIHRyeSBhZ2FpbgogICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICMgVGhpcyBleGNlcHRpb24gaXMgdGhyb3duIHdoZW4gYSBkaXJlY3Rvcnkgd2l0aCB0aGUgY2hvc2VuIG5hbWUKICAgICAgICAgICAgIyBhbHJlYWR5IGV4aXN0cyBvbiB3aW5kb3dzLgogICAgICAgICAgICBpZiAoX29zLm5hbWUgPT0gJ250JyBhbmQgX29zLnBhdGguaXNkaXIoZGlyKSBhbmQKICAgICAgICAgICAgICAgIF9vcy5hY2Nlc3MoZGlyLCBfb3MuV19PSykpOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgcmV0dXJuIGZpbGUKCiAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoX2Vycm5vLkVFWElTVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBmb3VuZCIpCgpkZWYgbWt0ZW1wKHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLCBkaXI9Tm9uZSk6CiAgICAiIiJVc2VyLWNhbGxhYmxlIGZ1bmN0aW9uIHRvIHJldHVybiBhIHVuaXF1ZSB0ZW1wb3JhcnkgZmlsZSBuYW1lLiAgVGhlCiAgICBmaWxlIGlzIG5vdCBjcmVhdGVkLgoKICAgIEFyZ3VtZW50cyBhcmUgc2ltaWxhciB0byBta3N0ZW1wLCBleGNlcHQgdGhhdCB0aGUgJ3RleHQnIGFyZ3VtZW50IGlzCiAgICBub3QgYWNjZXB0ZWQsIGFuZCBzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUgYW5kIGJ5dGVzIGZpbGUgbmFtZXMgYXJlIG5vdAogICAgc3VwcG9ydGVkLgoKICAgIFRISVMgRlVOQ1RJT04gSVMgVU5TQUZFIEFORCBTSE9VTEQgTk9UIEJFIFVTRUQuICBUaGUgZmlsZSBuYW1lIG1heQogICAgcmVmZXIgdG8gYSBmaWxlIHRoYXQgZGlkIG5vdCBleGlzdCBhdCBzb21lIHBvaW50LCBidXQgYnkgdGhlIHRpbWUKICAgIHlvdSBnZXQgYXJvdW5kIHRvIGNyZWF0aW5nIGl0LCBzb21lb25lIGVsc2UgbWF5IGhhdmUgYmVhdGVuIHlvdSB0bwogICAgdGhlIHB1bmNoLgogICAgIiIiCgojIyAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuIGFzIF93YXJuCiMjICAgIF93YXJuKCJta3RlbXAgaXMgYSBwb3RlbnRpYWwgc2VjdXJpdHkgcmlzayB0byB5b3VyIHByb2dyYW0iLAojIyAgICAgICAgICBSdW50aW1lV2FybmluZywgc3RhY2tsZXZlbD0yKQoKICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQoKICAgIG5hbWVzID0gX2dldF9jYW5kaWRhdGVfbmFtZXMoKQogICAgZm9yIHNlcSBpbiByYW5nZShUTVBfTUFYKToKICAgICAgICBuYW1lID0gbmV4dChuYW1lcykKICAgICAgICBmaWxlID0gX29zLnBhdGguam9pbihkaXIsIHByZWZpeCArIG5hbWUgKyBzdWZmaXgpCiAgICAgICAgaWYgbm90IF9leGlzdHMoZmlsZSk6CiAgICAgICAgICAgIHJldHVybiBmaWxlCgogICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKF9lcnJuby5FRVhJU1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZmlsZW5hbWUgZm91bmQiKQoKCmNsYXNzIF9UZW1wb3JhcnlGaWxlQ2xvc2VyOgogICAgIiIiQSBzZXBhcmF0ZSBvYmplY3QgYWxsb3dpbmcgcHJvcGVyIGNsb3Npbmcgb2YgYSB0ZW1wb3JhcnkgZmlsZSdzCiAgICB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LCB3aXRob3V0IGFkZGluZyBhIF9fZGVsX18gbWV0aG9kIHRvIHRoZQogICAgdGVtcG9yYXJ5IGZpbGUuIiIiCgogICAgZmlsZSA9IE5vbmUgICMgU2V0IGhlcmUgc2luY2UgX19kZWxfXyBjaGVja3MgaXQKICAgIGNsb3NlX2NhbGxlZCA9IEZhbHNlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIG5hbWUsIGRlbGV0ZT1UcnVlKToKICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIHNlbGYuZGVsZXRlID0gZGVsZXRlCgogICAgIyBOVCBwcm92aWRlcyBkZWxldGUtb24tY2xvc2UgYXMgYSBwcmltaXRpdmUsIHNvIHdlIGRvbid0IG5lZWQKICAgICMgdGhlIHdyYXBwZXIgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4gIFdlIHN0aWxsIHVzZSBpdCBzbyB0aGF0CiAgICAjIGZpbGUubmFtZSBpcyB1c2VmdWwgKGkuZS4gbm90ICIoZmRvcGVuKSIpIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlLgogICAgaWYgX29zLm5hbWUgIT0gJ250JzoKICAgICAgICAjIENhY2hlIHRoZSB1bmxpbmtlciBzbyB3ZSBkb24ndCBnZXQgc3B1cmlvdXMgZXJyb3JzIGF0CiAgICAgICAgIyBzaHV0ZG93biB3aGVuIHRoZSBtb2R1bGUtbGV2ZWwgIm9zIiBpcyBOb25lJ2Qgb3V0LiAgTm90ZQogICAgICAgICMgdGhhdCB0aGlzIG11c3QgYmUgcmVmZXJlbmNlZCBhcyBzZWxmLnVubGluaywgYmVjYXVzZSB0aGUKICAgICAgICAjIG5hbWUgVGVtcG9yYXJ5RmlsZVdyYXBwZXIgbWF5IGFsc28gZ2V0IE5vbmUnZCBvdXQgYmVmb3JlCiAgICAgICAgIyBfX2RlbF9fIGlzIGNhbGxlZC4KCiAgICAgICAgZGVmIGNsb3NlKHNlbGYsIHVubGluaz1fb3MudW5saW5rKToKICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VfY2FsbGVkIGFuZCBzZWxmLmZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX2NhbGxlZCA9IFRydWUKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlbGV0ZToKICAgICAgICAgICAgICAgICAgICAgICAgdW5saW5rKHNlbGYubmFtZSkKCiAgICAgICAgIyBOZWVkIHRvIGVuc3VyZSB0aGUgZmlsZSBpcyBkZWxldGVkIG9uIF9fZGVsX18KICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZWxzZToKICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlX2NhbGxlZDoKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfY2FsbGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKCgpjbGFzcyBfVGVtcG9yYXJ5RmlsZVdyYXBwZXI6CiAgICAiIiJUZW1wb3JhcnkgZmlsZSB3cmFwcGVyCgogICAgVGhpcyBjbGFzcyBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kIGZpbGVzIG9wZW5lZCBmb3IKICAgIHRlbXBvcmFyeSB1c2UuICBJbiBwYXJ0aWN1bGFyLCBpdCBzZWVrcyB0byBhdXRvbWF0aWNhbGx5CiAgICByZW1vdmUgdGhlIGZpbGUgd2hlbiBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIG5hbWUsIGRlbGV0ZT1UcnVlKToKICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIHNlbGYuZGVsZXRlID0gZGVsZXRlCiAgICAgICAgc2VsZi5fY2xvc2VyID0gX1RlbXBvcmFyeUZpbGVDbG9zZXIoZmlsZSwgbmFtZSwgZGVsZXRlKQoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICAjIEF0dHJpYnV0ZSBsb29rdXBzIGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIHVuZGVybHlpbmcgZmlsZQogICAgICAgICMgYW5kIGNhY2hlZCBmb3Igbm9uLW51bWVyaWMgcmVzdWx0cwogICAgICAgICMgKGkuZS4gbWV0aG9kcyBhcmUgY2FjaGVkLCBjbG9zZWQgYW5kIGZyaWVuZHMgYXJlIG5vdCkKICAgICAgICBmaWxlID0gc2VsZi5fX2RpY3RfX1snZmlsZSddCiAgICAgICAgYSA9IGdldGF0dHIoZmlsZSwgbmFtZSkKICAgICAgICBpZiBoYXNhdHRyKGEsICdfX2NhbGxfXycpOgogICAgICAgICAgICBmdW5jID0gYQogICAgICAgICAgICBAX2Z1bmN0b29scy53cmFwcyhmdW5jKQogICAgICAgICAgICBkZWYgZnVuY193cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2FyZ3MpCiAgICAgICAgICAgICMgQXZvaWQgY2xvc2luZyB0aGUgZmlsZSBhcyBsb25nIGFzIHRoZSB3cmFwcGVyIGlzIGFsaXZlLAogICAgICAgICAgICAjIHNlZSBpc3N1ZSAjMTg4NzkuCiAgICAgICAgICAgIGZ1bmNfd3JhcHBlci5fY2xvc2VyID0gc2VsZi5fY2xvc2VyCiAgICAgICAgICAgIGEgPSBmdW5jX3dyYXBwZXIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBpbnQpOgogICAgICAgICAgICBzZXRhdHRyKHNlbGYsIG5hbWUsIGEpCiAgICAgICAgcmV0dXJuIGEKCiAgICAjIFRoZSB1bmRlcmx5aW5nIF9fZW50ZXJfXyBtZXRob2QgcmV0dXJucyB0aGUgd3Jvbmcgb2JqZWN0CiAgICAjIChzZWxmLmZpbGUpIHNvIG92ZXJyaWRlIGl0IHRvIHJldHVybiB0aGUgd3JhcHBlcgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICBzZWxmLmZpbGUuX19lbnRlcl9fKCkKICAgICAgICByZXR1cm4gc2VsZgoKICAgICMgTmVlZCB0byB0cmFwIF9fZXhpdF9fIGFzIHdlbGwgdG8gZW5zdXJlIHRoZSBmaWxlIGdldHMKICAgICMgZGVsZXRlZCB3aGVuIHVzZWQgaW4gYSB3aXRoIHN0YXRlbWVudAogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4YywgdmFsdWUsIHRiKToKICAgICAgICByZXN1bHQgPSBzZWxmLmZpbGUuX19leGl0X18oZXhjLCB2YWx1ZSwgdGIpCiAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiIKICAgICAgICBDbG9zZSB0aGUgdGVtcG9yYXJ5IGZpbGUsIHBvc3NpYmx5IGRlbGV0aW5nIGl0LgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2Nsb3Nlci5jbG9zZSgpCgogICAgIyBpdGVyKCkgZG9lc24ndCB1c2UgX19nZXRhdHRyX18gdG8gZmluZCB0aGUgX19pdGVyX18gbWV0aG9kCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIyBEb24ndCByZXR1cm4gaXRlcihzZWxmLmZpbGUpLCBidXQgeWllbGQgZnJvbSBpdCB0byBhdm9pZCBjbG9zaW5nCiAgICAgICAgIyBmaWxlIGFzIGxvbmcgYXMgaXQncyBiZWluZyB1c2VkIGFzIGl0ZXJhdG9yIChzZWUgaXNzdWUgIzIzNzAwKS4gIFdlCiAgICAgICAgIyBjYW4ndCB1c2UgJ3lpZWxkIGZyb20nIGhlcmUgYmVjYXVzZSBpdGVyKGZpbGUpIHJldHVybnMgdGhlIGZpbGUKICAgICAgICAjIG9iamVjdCBpdHNlbGYsIHdoaWNoIGhhcyBhIGNsb3NlIG1ldGhvZCwgYW5kIHRodXMgdGhlIGZpbGUgd291bGQgZ2V0CiAgICAgICAgIyBjbG9zZWQgd2hlbiB0aGUgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZCwgZHVlIHRvIFBFUDM4MCBzZW1hbnRpY3MuCiAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5maWxlOgogICAgICAgICAgICB5aWVsZCBsaW5lCgoKZGVmIE5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1Ob25lLCBzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgZGlyPU5vbmUsIGRlbGV0ZT1UcnVlLCAqLCBlcnJvcnM9Tm9uZSk6CiAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBhIHRlbXBvcmFyeSBmaWxlLgogICAgQXJndW1lbnRzOgogICAgJ3ByZWZpeCcsICdzdWZmaXgnLCAnZGlyJyAtLSBhcyBmb3IgbWtzdGVtcC4KICAgICdtb2RlJyAtLSB0aGUgbW9kZSBhcmd1bWVudCB0byBpby5vcGVuIChkZWZhdWx0ICJ3K2IiKS4KICAgICdidWZmZXJpbmcnIC0tIHRoZSBidWZmZXIgc2l6ZSBhcmd1bWVudCB0byBpby5vcGVuIChkZWZhdWx0IC0xKS4KICAgICdlbmNvZGluZycgLS0gdGhlIGVuY29kaW5nIGFyZ3VtZW50IHRvIGlvLm9wZW4gKGRlZmF1bHQgTm9uZSkKICAgICduZXdsaW5lJyAtLSB0aGUgbmV3bGluZSBhcmd1bWVudCB0byBpby5vcGVuIChkZWZhdWx0IE5vbmUpCiAgICAnZGVsZXRlJyAtLSB3aGV0aGVyIHRoZSBmaWxlIGlzIGRlbGV0ZWQgb24gY2xvc2UgKGRlZmF1bHQgVHJ1ZSkuCiAgICAnZXJyb3JzJyAtLSB0aGUgZXJyb3JzIGFyZ3VtZW50IHRvIGlvLm9wZW4gKGRlZmF1bHQgTm9uZSkKICAgIFRoZSBmaWxlIGlzIGNyZWF0ZWQgYXMgbWtzdGVtcCgpIHdvdWxkIGRvIGl0LgoKICAgIFJldHVybnMgYW4gb2JqZWN0IHdpdGggYSBmaWxlLWxpa2UgaW50ZXJmYWNlOyB0aGUgbmFtZSBvZiB0aGUgZmlsZQogICAgaXMgYWNjZXNzaWJsZSBhcyBpdHMgJ25hbWUnIGF0dHJpYnV0ZS4gIFRoZSBmaWxlIHdpbGwgYmUgYXV0b21hdGljYWxseQogICAgZGVsZXRlZCB3aGVuIGl0IGlzIGNsb3NlZCB1bmxlc3MgdGhlICdkZWxldGUnIGFyZ3VtZW50IGlzIHNldCB0byBGYWxzZS4KCiAgICBPbiBQT1NJWCwgTmFtZWRUZW1wb3JhcnlGaWxlcyBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBkZWxldGVkIGlmCiAgICB0aGUgY3JlYXRpbmcgcHJvY2VzcyBpcyB0ZXJtaW5hdGVkIGFicnVwdGx5IHdpdGggYSBTSUdLSUxMIHNpZ25hbC4KICAgIFdpbmRvd3MgY2FuIGRlbGV0ZSB0aGUgZmlsZSBldmVuIGluIHRoaXMgY2FzZS4KICAgICIiIgoKICAgIHByZWZpeCwgc3VmZml4LCBkaXIsIG91dHB1dF90eXBlID0gX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKQoKICAgIGZsYWdzID0gX2Jpbl9vcGVuZmxhZ3MKCiAgICAjIFNldHRpbmcgT19URU1QT1JBUlkgaW4gdGhlIGZsYWdzIGNhdXNlcyB0aGUgT1MgdG8gZGVsZXRlCiAgICAjIHRoZSBmaWxlIHdoZW4gaXQgaXMgY2xvc2VkLiAgVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBieSBXaW5kb3dzLgogICAgaWYgX29zLm5hbWUgPT0gJ250JyBhbmQgZGVsZXRlOgogICAgICAgIGZsYWdzIHw9IF9vcy5PX1RFTVBPUkFSWQoKICAgIGlmICJiIiBub3QgaW4gbW9kZToKICAgICAgICBlbmNvZGluZyA9IF9pby50ZXh0X2VuY29kaW5nKGVuY29kaW5nKQoKICAgIG5hbWUgPSBOb25lCiAgICBkZWYgb3BlbmVyKCphcmdzKToKICAgICAgICBub25sb2NhbCBuYW1lCiAgICAgICAgZmQsIG5hbWUgPSBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncywgb3V0cHV0X3R5cGUpCiAgICAgICAgcmV0dXJuIGZkCiAgICB0cnk6CiAgICAgICAgZmlsZSA9IF9pby5vcGVuKGRpciwgbW9kZSwgYnVmZmVyaW5nPWJ1ZmZlcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1uZXdsaW5lLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVyPW9wZW5lcikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJhdyA9IGdldGF0dHIoZmlsZSwgJ2J1ZmZlcicsIGZpbGUpCiAgICAgICAgICAgIHJhdyA9IGdldGF0dHIocmF3LCAncmF3JywgcmF3KQogICAgICAgICAgICByYXcubmFtZSA9IG5hbWUKICAgICAgICAgICAgcmV0dXJuIF9UZW1wb3JhcnlGaWxlV3JhcHBlcihmaWxlLCBuYW1lLCBkZWxldGUpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBmaWxlLmNsb3NlKCkKICAgICAgICAgICAgcmFpc2UKICAgIGV4Y2VwdDoKICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lIGFuZCBub3QgKF9vcy5uYW1lID09ICdudCcgYW5kIGRlbGV0ZSk6CiAgICAgICAgICAgIF9vcy51bmxpbmsobmFtZSkKICAgICAgICByYWlzZQoKaWYgX29zLm5hbWUgIT0gJ3Bvc2l4JyBvciBfc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nOgogICAgIyBPbiBub24tUE9TSVggYW5kIEN5Z3dpbiBzeXN0ZW1zLCBhc3N1bWUgdGhhdCB3ZSBjYW5ub3QgdW5saW5rIGEgZmlsZQogICAgIyB3aGlsZSBpdCBpcyBvcGVuLgogICAgVGVtcG9yYXJ5RmlsZSA9IE5hbWVkVGVtcG9yYXJ5RmlsZQoKZWxzZToKICAgICMgSXMgdGhlIE9fVE1QRklMRSBmbGFnIGF2YWlsYWJsZSBhbmQgZG9lcyBpdCB3b3JrPwogICAgIyBUaGUgZmxhZyBpcyBzZXQgdG8gRmFsc2UgaWYgb3Mub3BlbihkaXIsIG9zLk9fVE1QRklMRSkgcmFpc2VzIGFuCiAgICAjIElzQURpcmVjdG9yeUVycm9yIGV4Y2VwdGlvbgogICAgX09fVE1QRklMRV9XT1JLUyA9IGhhc2F0dHIoX29zLCAnT19UTVBGSUxFJykKCiAgICBkZWYgVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPU5vbmUsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGRpcj1Ob25lLCAqLCBlcnJvcnM9Tm9uZSk6CiAgICAgICAgIiIiQ3JlYXRlIGFuZCByZXR1cm4gYSB0ZW1wb3JhcnkgZmlsZS4KICAgICAgICBBcmd1bWVudHM6CiAgICAgICAgJ3ByZWZpeCcsICdzdWZmaXgnLCAnZGlyJyAtLSBhcyBmb3IgbWtzdGVtcC4KICAgICAgICAnbW9kZScgLS0gdGhlIG1vZGUgYXJndW1lbnQgdG8gaW8ub3BlbiAoZGVmYXVsdCAidytiIikuCiAgICAgICAgJ2J1ZmZlcmluZycgLS0gdGhlIGJ1ZmZlciBzaXplIGFyZ3VtZW50IHRvIGlvLm9wZW4gKGRlZmF1bHQgLTEpLgogICAgICAgICdlbmNvZGluZycgLS0gdGhlIGVuY29kaW5nIGFyZ3VtZW50IHRvIGlvLm9wZW4gKGRlZmF1bHQgTm9uZSkKICAgICAgICAnbmV3bGluZScgLS0gdGhlIG5ld2xpbmUgYXJndW1lbnQgdG8gaW8ub3BlbiAoZGVmYXVsdCBOb25lKQogICAgICAgICdlcnJvcnMnIC0tIHRoZSBlcnJvcnMgYXJndW1lbnQgdG8gaW8ub3BlbiAoZGVmYXVsdCBOb25lKQogICAgICAgIFRoZSBmaWxlIGlzIGNyZWF0ZWQgYXMgbWtzdGVtcCgpIHdvdWxkIGRvIGl0LgoKICAgICAgICBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgZmlsZS1saWtlIGludGVyZmFjZS4gIFRoZSBmaWxlIGhhcyBubwogICAgICAgIG5hbWUsIGFuZCB3aWxsIGNlYXNlIHRvIGV4aXN0IHdoZW4gaXQgaXMgY2xvc2VkLgogICAgICAgICIiIgogICAgICAgIGdsb2JhbCBfT19UTVBGSUxFX1dPUktTCgogICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKICAgICAgICAgICAgZW5jb2RpbmcgPSBfaW8udGV4dF9lbmNvZGluZyhlbmNvZGluZykKCiAgICAgICAgcHJlZml4LCBzdWZmaXgsIGRpciwgb3V0cHV0X3R5cGUgPSBfc2FuaXRpemVfcGFyYW1zKHByZWZpeCwgc3VmZml4LCBkaXIpCgogICAgICAgIGZsYWdzID0gX2Jpbl9vcGVuZmxhZ3MKICAgICAgICBpZiBfT19UTVBGSUxFX1dPUktTOgogICAgICAgICAgICBmZCA9IE5vbmUKICAgICAgICAgICAgZGVmIG9wZW5lcigqYXJncyk6CiAgICAgICAgICAgICAgICBub25sb2NhbCBmZAogICAgICAgICAgICAgICAgZmxhZ3MyID0gKGZsYWdzIHwgX29zLk9fVE1QRklMRSkgJiB+X29zLk9fQ1JFQVQKICAgICAgICAgICAgICAgIGZkID0gX29zLm9wZW4oZGlyLCBmbGFnczIsIDBvNjAwKQogICAgICAgICAgICAgICAgcmV0dXJuIGZkCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZpbGUgPSBfaW8ub3BlbihkaXIsIG1vZGUsIGJ1ZmZlcmluZz1idWZmZXJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1uZXdsaW5lLCBlbmNvZGluZz1lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9ZXJyb3JzLCBvcGVuZXI9b3BlbmVyKQogICAgICAgICAgICAgICAgcmF3ID0gZ2V0YXR0cihmaWxlLCAnYnVmZmVyJywgZmlsZSkKICAgICAgICAgICAgICAgIHJhdyA9IGdldGF0dHIocmF3LCAncmF3JywgcmF3KQogICAgICAgICAgICAgICAgcmF3Lm5hbWUgPSBmZAogICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUKICAgICAgICAgICAgZXhjZXB0IElzQURpcmVjdG9yeUVycm9yOgogICAgICAgICAgICAgICAgIyBMaW51eCBrZXJuZWwgb2xkZXIgdGhhbiAzLjExIGlnbm9yZXMgdGhlIE9fVE1QRklMRSBmbGFnOgogICAgICAgICAgICAgICAgIyBPX1RNUEZJTEUgaXMgcmVhZCBhcyBPX0RJUkVDVE9SWS4gVHJ5aW5nIHRvIG9wZW4gYSBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICMgd2l0aCBPX1JEV1J8T19ESVJFQ1RPUlkgZmFpbHMgd2l0aCBJc0FEaXJlY3RvcnlFcnJvciwgYQogICAgICAgICAgICAgICAgIyBkaXJlY3RvcnkgY2Fubm90IGJlIG9wZW4gdG8gd3JpdGUuIFNldCBmbGFnIHRvIEZhbHNlIHRvIG5vdAogICAgICAgICAgICAgICAgIyB0cnkgYWdhaW4uCiAgICAgICAgICAgICAgICBfT19UTVBGSUxFX1dPUktTID0gRmFsc2UKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAjIFRoZSBmaWxlc3lzdGVtIG9mIHRoZSBkaXJlY3RvcnkgZG9lcyBub3Qgc3VwcG9ydCBPX1RNUEZJTEUuCiAgICAgICAgICAgICAgICAjIEZvciBleGFtcGxlLCBPU0Vycm9yKDk1LCAnT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQnKS4KICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgT24gTGludXgga2VybmVsIG9sZGVyIHRoYW4gMy4xMSwgdHJ5aW5nIHRvIG9wZW4gYSByZWd1bGFyCiAgICAgICAgICAgICAgICAjIGZpbGUgKG9yIGEgc3ltYm9saWMgbGluayB0byBhIHJlZ3VsYXIgZmlsZSkgd2l0aCBPX1RNUEZJTEUKICAgICAgICAgICAgICAgICMgZmFpbHMgd2l0aCBOb3RBRGlyZWN0b3J5RXJyb3IsIGJlY2F1c2UgT19UTVBGSUxFIGlzIHJlYWQgYXMKICAgICAgICAgICAgICAgICMgT19ESVJFQ1RPUlkuCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gX21rc3RlbXBfaW5uZXIoKS4KCiAgICAgICAgZmQgPSBOb25lCiAgICAgICAgZGVmIG9wZW5lcigqYXJncyk6CiAgICAgICAgICAgIG5vbmxvY2FsIGZkCiAgICAgICAgICAgIGZkLCBuYW1lID0gX21rc3RlbXBfaW5uZXIoZGlyLCBwcmVmaXgsIHN1ZmZpeCwgZmxhZ3MsIG91dHB1dF90eXBlKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBfb3MudW5saW5rKG5hbWUpCiAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICBfb3MuY2xvc2UoZmQpCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICByZXR1cm4gZmQKICAgICAgICBmaWxlID0gX2lvLm9wZW4oZGlyLCBtb2RlLCBidWZmZXJpbmc9YnVmZmVyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPW5ld2xpbmUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICBvcGVuZXI9b3BlbmVyKQogICAgICAgIHJhdyA9IGdldGF0dHIoZmlsZSwgJ2J1ZmZlcicsIGZpbGUpCiAgICAgICAgcmF3ID0gZ2V0YXR0cihyYXcsICdyYXcnLCByYXcpCiAgICAgICAgcmF3Lm5hbWUgPSBmZAogICAgICAgIHJldHVybiBmaWxlCgpjbGFzcyBTcG9vbGVkVGVtcG9yYXJ5RmlsZShfaW8uSU9CYXNlKToKICAgICIiIlRlbXBvcmFyeSBmaWxlIHdyYXBwZXIsIHNwZWNpYWxpemVkIHRvIHN3aXRjaCBmcm9tIEJ5dGVzSU8KICAgIG9yIFN0cmluZ0lPIHRvIGEgcmVhbCBmaWxlIHdoZW4gaXQgZXhjZWVkcyBhIGNlcnRhaW4gc2l6ZSBvcgogICAgd2hlbiBhIGZpbGVubyBpcyBuZWVkZWQuCiAgICAiIiIKICAgIF9yb2xsZWQgPSBGYWxzZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfc2l6ZT0wLCBtb2RlPSd3K2InLCBidWZmZXJpbmc9LTEsCiAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgbmV3bGluZT1Ob25lLAogICAgICAgICAgICAgICAgIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUsICosIGVycm9ycz1Ob25lKToKICAgICAgICBpZiAnYicgaW4gbW9kZToKICAgICAgICAgICAgc2VsZi5fZmlsZSA9IF9pby5CeXRlc0lPKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbmNvZGluZyA9IF9pby50ZXh0X2VuY29kaW5nKGVuY29kaW5nKQogICAgICAgICAgICBzZWxmLl9maWxlID0gX2lvLlRleHRJT1dyYXBwZXIoX2lvLkJ5dGVzSU8oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1uZXdsaW5lKQogICAgICAgIHNlbGYuX21heF9zaXplID0gbWF4X3NpemUKICAgICAgICBzZWxmLl9yb2xsZWQgPSBGYWxzZQogICAgICAgIHNlbGYuX1RlbXBvcmFyeUZpbGVBcmdzID0geydtb2RlJzogbW9kZSwgJ2J1ZmZlcmluZyc6IGJ1ZmZlcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VmZml4Jzogc3VmZml4LCAncHJlZml4JzogcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmNvZGluZyc6IGVuY29kaW5nLCAnbmV3bGluZSc6IG5ld2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpcic6IGRpciwgJ2Vycm9ycyc6IGVycm9yc30KCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKF90eXBlcy5HZW5lcmljQWxpYXMpCgogICAgZGVmIF9jaGVjayhzZWxmLCBmaWxlKToKICAgICAgICBpZiBzZWxmLl9yb2xsZWQ6IHJldHVybgogICAgICAgIG1heF9zaXplID0gc2VsZi5fbWF4X3NpemUKICAgICAgICBpZiBtYXhfc2l6ZSBhbmQgZmlsZS50ZWxsKCkgPiBtYXhfc2l6ZToKICAgICAgICAgICAgc2VsZi5yb2xsb3ZlcigpCgogICAgZGVmIHJvbGxvdmVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3JvbGxlZDogcmV0dXJuCiAgICAgICAgZmlsZSA9IHNlbGYuX2ZpbGUKICAgICAgICBuZXdmaWxlID0gc2VsZi5fZmlsZSA9IFRlbXBvcmFyeUZpbGUoKipzZWxmLl9UZW1wb3JhcnlGaWxlQXJncykKICAgICAgICBkZWwgc2VsZi5fVGVtcG9yYXJ5RmlsZUFyZ3MKCiAgICAgICAgcG9zID0gZmlsZS50ZWxsKCkKICAgICAgICBpZiBoYXNhdHRyKG5ld2ZpbGUsICdidWZmZXInKToKICAgICAgICAgICAgbmV3ZmlsZS5idWZmZXIud3JpdGUoZmlsZS5kZXRhY2goKS5nZXR2YWx1ZSgpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5ld2ZpbGUud3JpdGUoZmlsZS5nZXR2YWx1ZSgpKQogICAgICAgIG5ld2ZpbGUuc2Vlayhwb3MsIDApCgogICAgICAgIHNlbGYuX3JvbGxlZCA9IFRydWUKCiAgICAjIFRoZSBtZXRob2QgY2FjaGluZyB0cmljayBmcm9tIE5hbWVkVGVtcG9yYXJ5RmlsZQogICAgIyB3b24ndCB3b3JrIGhlcmUsIGJlY2F1c2UgX2ZpbGUgbWF5IGNoYW5nZSBmcm9tIGEKICAgICMgQnl0ZXNJTy9TdHJpbmdJTyBpbnN0YW5jZSB0byBhIHJlYWwgZmlsZS4gU28gd2UgbGlzdAogICAgIyBhbGwgdGhlIG1ldGhvZHMgZGlyZWN0bHkuCgogICAgIyBDb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fZmlsZS5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBlbnRlciBjb250ZXh0IHdpdGggY2xvc2VkIGZpbGUiKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4YywgdmFsdWUsIHRiKToKICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKCiAgICAjIGZpbGUgcHJvdG9jb2wKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5fX2l0ZXJfXygpCgogICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgogICAgICAgICAgICBfd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICJVbmNsb3NlZCBmaWxlIHshcn0iLmZvcm1hdChzZWxmKSwKICAgICAgICAgICAgICAgIFJlc291cmNlV2FybmluZywKICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MiwKICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmCiAgICAgICAgICAgICkKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNsb3NlZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5jbG9zZWQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBlbmNvZGluZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5lbmNvZGluZwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGVycm9ycyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5lcnJvcnMKCiAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgIHNlbGYucm9sbG92ZXIoKQogICAgICAgIHJldHVybiBzZWxmLl9maWxlLmZpbGVubygpCgogICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgIHNlbGYuX2ZpbGUuZmx1c2goKQoKICAgIGRlZiBpc2F0dHkoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUuaXNhdHR5KCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtb2RlKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUubW9kZQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX1RlbXBvcmFyeUZpbGVBcmdzWydtb2RlJ10KCiAgICBAcHJvcGVydHkKICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUubmFtZQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBuZXdsaW5lcyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5uZXdsaW5lcwoKICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5yZWFkYWJsZSgpCgogICAgZGVmIHJlYWQoc2VsZiwgKmFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9maWxlLnJlYWQoKmFyZ3MpCgogICAgZGVmIHJlYWQxKHNlbGYsICphcmdzKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5yZWFkMSgqYXJncykKCiAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUucmVhZGludG8oYikKCiAgICBkZWYgcmVhZGludG8xKHNlbGYsIGIpOgogICAgICAgIHJldHVybiBzZWxmLl9maWxlLnJlYWRpbnRvMShiKQoKICAgIGRlZiByZWFkbGluZShzZWxmLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUucmVhZGxpbmUoKmFyZ3MpCgogICAgZGVmIHJlYWRsaW5lcyhzZWxmLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUucmVhZGxpbmVzKCphcmdzKQoKICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5zZWVrYWJsZSgpCgogICAgZGVmIHNlZWsoc2VsZiwgKmFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9maWxlLnNlZWsoKmFyZ3MpCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUudGVsbCgpCgogICAgZGVmIHRydW5jYXRlKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS50cnVuY2F0ZSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc2l6ZSA+IHNlbGYuX21heF9zaXplOgogICAgICAgICAgICAgICAgc2VsZi5yb2xsb3ZlcigpCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9maWxlLnRydW5jYXRlKHNpemUpCgogICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9maWxlLndyaXRhYmxlKCkKCiAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgZmlsZSA9IHNlbGYuX2ZpbGUKICAgICAgICBydiA9IGZpbGUud3JpdGUocykKICAgICAgICBzZWxmLl9jaGVjayhmaWxlKQogICAgICAgIHJldHVybiBydgoKICAgIGRlZiB3cml0ZWxpbmVzKHNlbGYsIGl0ZXJhYmxlKToKICAgICAgICBmaWxlID0gc2VsZi5fZmlsZQogICAgICAgIHJ2ID0gZmlsZS53cml0ZWxpbmVzKGl0ZXJhYmxlKQogICAgICAgIHNlbGYuX2NoZWNrKGZpbGUpCiAgICAgICAgcmV0dXJuIHJ2CgogICAgZGVmIGRldGFjaChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZmlsZS5kZXRhY2goKQoKCmNsYXNzIFRlbXBvcmFyeURpcmVjdG9yeToKICAgICIiIkNyZWF0ZSBhbmQgcmV0dXJuIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIFRoaXMgaGFzIHRoZSBzYW1lCiAgICBiZWhhdmlvciBhcyBta2R0ZW1wIGJ1dCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4gIEZvcgogICAgZXhhbXBsZToKCiAgICAgICAgd2l0aCBUZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CiAgICAgICAgICAgIC4uLgoKICAgIFVwb24gZXhpdGluZyB0aGUgY29udGV4dCwgdGhlIGRpcmVjdG9yeSBhbmQgZXZlcnl0aGluZyBjb250YWluZWQKICAgIGluIGl0IGFyZSByZW1vdmVkLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUsCiAgICAgICAgICAgICAgICAgaWdub3JlX2NsZWFudXBfZXJyb3JzPUZhbHNlKToKICAgICAgICBzZWxmLm5hbWUgPSBta2R0ZW1wKHN1ZmZpeCwgcHJlZml4LCBkaXIpCiAgICAgICAgc2VsZi5faWdub3JlX2NsZWFudXBfZXJyb3JzID0gaWdub3JlX2NsZWFudXBfZXJyb3JzCiAgICAgICAgc2VsZi5fZmluYWxpemVyID0gX3dlYWtyZWYuZmluYWxpemUoCiAgICAgICAgICAgIHNlbGYsIHNlbGYuX2NsZWFudXAsIHNlbGYubmFtZSwKICAgICAgICAgICAgd2Fybl9tZXNzYWdlPSJJbXBsaWNpdGx5IGNsZWFuaW5nIHVwIHshcn0iLmZvcm1hdChzZWxmKSwKICAgICAgICAgICAgaWdub3JlX2Vycm9ycz1zZWxmLl9pZ25vcmVfY2xlYW51cF9lcnJvcnMpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX3JtdHJlZShjbHMsIG5hbWUsIGlnbm9yZV9lcnJvcnM9RmFsc2UpOgogICAgICAgIGRlZiBvbmVycm9yKGZ1bmMsIHBhdGgsIGV4Y19pbmZvKToKICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhleGNfaW5mb1swXSwgUGVybWlzc2lvbkVycm9yKToKICAgICAgICAgICAgICAgIGRlZiByZXNldHBlcm1zKHBhdGgpOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgX29zLmNoZmxhZ3MocGF0aCwgMCkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICBfb3MuY2htb2QocGF0aCwgMG83MDApCgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGlmIHBhdGggIT0gbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRwZXJtcyhfb3MucGF0aC5kaXJuYW1lKHBhdGgpKQogICAgICAgICAgICAgICAgICAgIHJlc2V0cGVybXMocGF0aCkKCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBfb3MudW5saW5rKHBhdGgpCiAgICAgICAgICAgICAgICAgICAgIyBQZXJtaXNzaW9uRXJyb3IgaXMgcmFpc2VkIG9uIEZyZWVCU0QgZm9yIGRpcmVjdG9yaWVzCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChJc0FEaXJlY3RvcnlFcnJvciwgUGVybWlzc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgY2xzLl9ybXRyZWUocGF0aCwgaWdub3JlX2Vycm9ycz1pZ25vcmVfZXJyb3JzKQogICAgICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxpZiBpc3N1YmNsYXNzKGV4Y19pbmZvWzBdLCBGaWxlTm90Rm91bmRFcnJvcik6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBub3QgaWdub3JlX2Vycm9yczoKICAgICAgICAgICAgICAgICAgICByYWlzZQoKICAgICAgICBfc2h1dGlsLnJtdHJlZShuYW1lLCBvbmVycm9yPW9uZXJyb3IpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2NsZWFudXAoY2xzLCBuYW1lLCB3YXJuX21lc3NhZ2UsIGlnbm9yZV9lcnJvcnM9RmFsc2UpOgogICAgICAgIGNscy5fcm10cmVlKG5hbWUsIGlnbm9yZV9lcnJvcnM9aWdub3JlX2Vycm9ycykKICAgICAgICBfd2FybmluZ3Mud2Fybih3YXJuX21lc3NhZ2UsIFJlc291cmNlV2FybmluZykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8e30geyFyfT4iLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubmFtZQoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGMsIHZhbHVlLCB0Yik6CiAgICAgICAgc2VsZi5jbGVhbnVwKCkKCiAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICBpZiBzZWxmLl9maW5hbGl6ZXIuZGV0YWNoKCkgb3IgX29zLnBhdGguZXhpc3RzKHNlbGYubmFtZSk6CiAgICAgICAgICAgIHNlbGYuX3JtdHJlZShzZWxmLm5hbWUsIGlnbm9yZV9lcnJvcnM9c2VsZi5faWdub3JlX2NsZWFudXBfZXJyb3JzKQoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QoX3R5cGVzLkdlbmVyaWNBbGlhcykKUEsDBBQAAAAAAAIgo1bv+uITBk0AAAZNAAALAAAAdGV4dHdyYXAucHkiIiJUZXh0IHdyYXBwaW5nIGFuZCBmaWxsaW5nLgoiIiIKCiMgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgR3JlZ29yeSBQLiBXYXJkLgojIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KIyBXcml0dGVuIGJ5IEdyZWcgV2FyZCA8Z3dhcmRAcHl0aG9uLm5ldD4KCmltcG9ydCByZQoKX19hbGxfXyA9IFsnVGV4dFdyYXBwZXInLCAnd3JhcCcsICdmaWxsJywgJ2RlZGVudCcsICdpbmRlbnQnLCAnc2hvcnRlbiddCgojIEhhcmRjb2RlIHRoZSByZWNvZ25pemVkIHdoaXRlc3BhY2UgY2hhcmFjdGVycyB0byB0aGUgVVMtQVNDSUkKIyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuICBUaGUgbWFpbiByZWFzb24gZm9yIGRvaW5nIHRoaXMgaXMgdGhhdAojIHNvbWUgVW5pY29kZSBzcGFjZXMgKGxpa2UgXHUwMGEwKSBhcmUgbm9uLWJyZWFraW5nIHdoaXRlc3BhY2VzLgpfd2hpdGVzcGFjZSA9ICdcdFxuXHgwYlx4MGNcciAnCgpjbGFzcyBUZXh0V3JhcHBlcjoKICAgICIiIgogICAgT2JqZWN0IGZvciB3cmFwcGluZy9maWxsaW5nIHRleHQuICBUaGUgcHVibGljIGludGVyZmFjZSBjb25zaXN0cyBvZgogICAgdGhlIHdyYXAoKSBhbmQgZmlsbCgpIG1ldGhvZHM7IHRoZSBvdGhlciBtZXRob2RzIGFyZSBqdXN0IHRoZXJlIGZvcgogICAgc3ViY2xhc3NlcyB0byBvdmVycmlkZSBpbiBvcmRlciB0byB0d2VhayB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCiAgICBJZiB5b3Ugd2FudCB0byBjb21wbGV0ZWx5IHJlcGxhY2UgdGhlIG1haW4gd3JhcHBpbmcgYWxnb3JpdGhtLAogICAgeW91J2xsIHByb2JhYmx5IGhhdmUgdG8gb3ZlcnJpZGUgX3dyYXBfY2h1bmtzKCkuCgogICAgU2V2ZXJhbCBpbnN0YW5jZSBhdHRyaWJ1dGVzIGNvbnRyb2wgdmFyaW91cyBhc3BlY3RzIG9mIHdyYXBwaW5nOgogICAgICB3aWR0aCAoZGVmYXVsdDogNzApCiAgICAgICAgdGhlIG1heGltdW0gd2lkdGggb2Ygd3JhcHBlZCBsaW5lcyAodW5sZXNzIGJyZWFrX2xvbmdfd29yZHMKICAgICAgICBpcyBmYWxzZSkKICAgICAgaW5pdGlhbF9pbmRlbnQgKGRlZmF1bHQ6ICIiKQogICAgICAgIHN0cmluZyB0aGF0IHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSBmaXJzdCBsaW5lIG9mIHdyYXBwZWQKICAgICAgICBvdXRwdXQuICBDb3VudHMgdG93YXJkcyB0aGUgbGluZSdzIHdpZHRoLgogICAgICBzdWJzZXF1ZW50X2luZGVudCAoZGVmYXVsdDogIiIpCiAgICAgICAgc3RyaW5nIHRoYXQgd2lsbCBiZSBwcmVwZW5kZWQgdG8gYWxsIGxpbmVzIHNhdmUgdGhlIGZpcnN0CiAgICAgICAgb2Ygd3JhcHBlZCBvdXRwdXQ7IGFsc28gY291bnRzIHRvd2FyZHMgZWFjaCBsaW5lJ3Mgd2lkdGguCiAgICAgIGV4cGFuZF90YWJzIChkZWZhdWx0OiB0cnVlKQogICAgICAgIEV4cGFuZCB0YWJzIGluIGlucHV0IHRleHQgdG8gc3BhY2VzIGJlZm9yZSBmdXJ0aGVyIHByb2Nlc3NpbmcuCiAgICAgICAgRWFjaCB0YWIgd2lsbCBiZWNvbWUgMCAuLiAndGFic2l6ZScgc3BhY2VzLCBkZXBlbmRpbmcgb24gaXRzIHBvc2l0aW9uCiAgICAgICAgaW4gaXRzIGxpbmUuICBJZiBmYWxzZSwgZWFjaCB0YWIgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuCiAgICAgIHRhYnNpemUgKGRlZmF1bHQ6IDgpCiAgICAgICAgRXhwYW5kIHRhYnMgaW4gaW5wdXQgdGV4dCB0byAwIC4uICd0YWJzaXplJyBzcGFjZXMsIHVubGVzcwogICAgICAgICdleHBhbmRfdGFicycgaXMgZmFsc2UuCiAgICAgIHJlcGxhY2Vfd2hpdGVzcGFjZSAoZGVmYXVsdDogdHJ1ZSkKICAgICAgICBSZXBsYWNlIGFsbCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHRleHQgYnkgc3BhY2VzCiAgICAgICAgYWZ0ZXIgdGFiIGV4cGFuc2lvbi4gIE5vdGUgdGhhdCBpZiBleHBhbmRfdGFicyBpcyBmYWxzZSBhbmQKICAgICAgICByZXBsYWNlX3doaXRlc3BhY2UgaXMgdHJ1ZSwgZXZlcnkgdGFiIHdpbGwgYmUgY29udmVydGVkIHRvIGEKICAgICAgICBzaW5nbGUgc3BhY2UhCiAgICAgIGZpeF9zZW50ZW5jZV9lbmRpbmdzIChkZWZhdWx0OiBmYWxzZSkKICAgICAgICBFbnN1cmUgdGhhdCBzZW50ZW5jZS1lbmRpbmcgcHVuY3R1YXRpb24gaXMgYWx3YXlzIGZvbGxvd2VkCiAgICAgICAgYnkgdHdvIHNwYWNlcy4gIE9mZiBieSBkZWZhdWx0IGJlY2F1c2UgdGhlIGFsZ29yaXRobSBpcwogICAgICAgICh1bmF2b2lkYWJseSkgaW1wZXJmZWN0LgogICAgICBicmVha19sb25nX3dvcmRzIChkZWZhdWx0OiB0cnVlKQogICAgICAgIEJyZWFrIHdvcmRzIGxvbmdlciB0aGFuICd3aWR0aCcuICBJZiBmYWxzZSwgdGhvc2Ugd29yZHMgd2lsbCBub3QKICAgICAgICBiZSBicm9rZW4sIGFuZCBzb21lIGxpbmVzIG1pZ2h0IGJlIGxvbmdlciB0aGFuICd3aWR0aCcuCiAgICAgIGJyZWFrX29uX2h5cGhlbnMgKGRlZmF1bHQ6IHRydWUpCiAgICAgICAgQWxsb3cgYnJlYWtpbmcgaHlwaGVuYXRlZCB3b3Jkcy4gSWYgdHJ1ZSwgd3JhcHBpbmcgd2lsbCBvY2N1cgogICAgICAgIHByZWZlcmFibHkgb24gd2hpdGVzcGFjZXMgYW5kIHJpZ2h0IGFmdGVyIGh5cGhlbnMgcGFydCBvZgogICAgICAgIGNvbXBvdW5kIHdvcmRzLgogICAgICBkcm9wX3doaXRlc3BhY2UgKGRlZmF1bHQ6IHRydWUpCiAgICAgICAgRHJvcCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gbGluZXMuCiAgICAgIG1heF9saW5lcyAoZGVmYXVsdDogTm9uZSkKICAgICAgICBUcnVuY2F0ZSB3cmFwcGVkIGxpbmVzLgogICAgICBwbGFjZWhvbGRlciAoZGVmYXVsdDogJyBbLi4uXScpCiAgICAgICAgQXBwZW5kIHRvIHRoZSBsYXN0IGxpbmUgb2YgdHJ1bmNhdGVkIHRleHQuCiAgICAiIiIKCiAgICB1bmljb2RlX3doaXRlc3BhY2VfdHJhbnMgPSBkaWN0LmZyb21rZXlzKG1hcChvcmQsIF93aGl0ZXNwYWNlKSwgb3JkKCcgJykpCgogICAgIyBUaGlzIGZ1bmt5IGxpdHRsZSByZWdleCBpcyBqdXN0IHRoZSB0cmljayBmb3Igc3BsaXR0aW5nCiAgICAjIHRleHQgdXAgaW50byB3b3JkLXdyYXBwYWJsZSBjaHVua3MuICBFLmcuCiAgICAjICAgIkhlbGxvIHRoZXJlIC0tIHlvdSBnb29mLWJhbGwsIHVzZSB0aGUgLWIgb3B0aW9uISIKICAgICMgc3BsaXRzIGludG8KICAgICMgICBIZWxsby8gL3RoZXJlLyAvLS0vIC95b3UvIC9nb29mLS9iYWxsLC8gL3VzZS8gL3RoZS8gLy1iLyAvb3B0aW9uIQogICAgIyAoYWZ0ZXIgc3RyaXBwaW5nIG91dCBlbXB0eSBzdHJpbmdzKS4KICAgIHdvcmRfcHVuY3QgPSByJ1tcdyEiXCcmLiw/XScKICAgIGxldHRlciA9IHInW15cZFxXXScKICAgIHdoaXRlc3BhY2UgPSByJ1slc10nICUgcmUuZXNjYXBlKF93aGl0ZXNwYWNlKQogICAgbm93aGl0ZXNwYWNlID0gJ1teJyArIHdoaXRlc3BhY2VbMTpdCiAgICB3b3Jkc2VwX3JlID0gcmUuY29tcGlsZShyJycnCiAgICAgICAgKCAjIGFueSB3aGl0ZXNwYWNlCiAgICAgICAgICAlKHdzKXMrCiAgICAgICAgfCAjIGVtLWRhc2ggYmV0d2VlbiB3b3JkcwogICAgICAgICAgKD88PSUod3ApcykgLXsyLH0gKD89XHcpCiAgICAgICAgfCAjIHdvcmQsIHBvc3NpYmx5IGh5cGhlbmF0ZWQKICAgICAgICAgICUobndzKXMrPyAoPzoKICAgICAgICAgICAgIyBoeXBoZW5hdGVkIHdvcmQKICAgICAgICAgICAgICAtKD86ICg/PD0lKGx0KXN7Mn0tKSB8ICg/PD0lKGx0KXMtJShsdClzLSkpCiAgICAgICAgICAgICAgKD89ICUobHQpcyAtPyAlKGx0KXMpCiAgICAgICAgICAgIHwgIyBlbmQgb2Ygd29yZAogICAgICAgICAgICAgICg/PSUod3Mpc3xcWikKICAgICAgICAgICAgfCAjIGVtLWRhc2gKICAgICAgICAgICAgICAoPzw9JSh3cClzKSAoPz0tezIsfVx3KQogICAgICAgICAgICApCiAgICAgICAgKScnJyAlIHsnd3AnOiB3b3JkX3B1bmN0LCAnbHQnOiBsZXR0ZXIsCiAgICAgICAgICAgICAgICAnd3MnOiB3aGl0ZXNwYWNlLCAnbndzJzogbm93aGl0ZXNwYWNlfSwKICAgICAgICByZS5WRVJCT1NFKQogICAgZGVsIHdvcmRfcHVuY3QsIGxldHRlciwgbm93aGl0ZXNwYWNlCgogICAgIyBUaGlzIGxlc3MgZnVua3kgbGl0dGxlIHJlZ2V4IGp1c3Qgc3BsaXQgb24gcmVjb2duaXplZCBzcGFjZXMuIEUuZy4KICAgICMgICAiSGVsbG8gdGhlcmUgLS0geW91IGdvb2YtYmFsbCwgdXNlIHRoZSAtYiBvcHRpb24hIgogICAgIyBzcGxpdHMgaW50bwogICAgIyAgIEhlbGxvLyAvdGhlcmUvIC8tLS8gL3lvdS8gL2dvb2YtYmFsbCwvIC91c2UvIC90aGUvIC8tYi8gL29wdGlvbiEvCiAgICB3b3Jkc2VwX3NpbXBsZV9yZSA9IHJlLmNvbXBpbGUocicoJXMrKScgJSB3aGl0ZXNwYWNlKQogICAgZGVsIHdoaXRlc3BhY2UKCiAgICAjIFhYWCB0aGlzIGlzIG5vdCBsb2NhbGUtIG9yIGNoYXJzZXQtYXdhcmUgLS0gc3RyaW5nLmxvd2VyY2FzZQogICAgIyBpcyBVUy1BU0NJSSBvbmx5IChhbmQgdGhlcmVmb3JlIEVuZ2xpc2gtb25seSkKICAgIHNlbnRlbmNlX2VuZF9yZSA9IHJlLmNvbXBpbGUocidbYS16XScgICAgICAgICAgICAgIyBsb3dlcmNhc2UgbGV0dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInW1wuXCFcP10nICAgICAgICAgICMgc2VudGVuY2UtZW5kaW5nIHB1bmN0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1tcIlwnXT8nICAgICAgICAgICAjIG9wdGlvbmFsIGVuZC1vZi1xdW90ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1xaJykgICAgICAgICAgICAgICAjIGVuZCBvZiBjaHVuawoKICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgIHdpZHRoPTcwLAogICAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PSIiLAogICAgICAgICAgICAgICAgIHN1YnNlcXVlbnRfaW5kZW50PSIiLAogICAgICAgICAgICAgICAgIGV4cGFuZF90YWJzPVRydWUsCiAgICAgICAgICAgICAgICAgcmVwbGFjZV93aGl0ZXNwYWNlPVRydWUsCiAgICAgICAgICAgICAgICAgZml4X3NlbnRlbmNlX2VuZGluZ3M9RmFsc2UsCiAgICAgICAgICAgICAgICAgYnJlYWtfbG9uZ193b3Jkcz1UcnVlLAogICAgICAgICAgICAgICAgIGRyb3Bfd2hpdGVzcGFjZT1UcnVlLAogICAgICAgICAgICAgICAgIGJyZWFrX29uX2h5cGhlbnM9VHJ1ZSwKICAgICAgICAgICAgICAgICB0YWJzaXplPTgsCiAgICAgICAgICAgICAgICAgKiwKICAgICAgICAgICAgICAgICBtYXhfbGluZXM9Tm9uZSwKICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0nIFsuLi5dJyk6CiAgICAgICAgc2VsZi53aWR0aCA9IHdpZHRoCiAgICAgICAgc2VsZi5pbml0aWFsX2luZGVudCA9IGluaXRpYWxfaW5kZW50CiAgICAgICAgc2VsZi5zdWJzZXF1ZW50X2luZGVudCA9IHN1YnNlcXVlbnRfaW5kZW50CiAgICAgICAgc2VsZi5leHBhbmRfdGFicyA9IGV4cGFuZF90YWJzCiAgICAgICAgc2VsZi5yZXBsYWNlX3doaXRlc3BhY2UgPSByZXBsYWNlX3doaXRlc3BhY2UKICAgICAgICBzZWxmLmZpeF9zZW50ZW5jZV9lbmRpbmdzID0gZml4X3NlbnRlbmNlX2VuZGluZ3MKICAgICAgICBzZWxmLmJyZWFrX2xvbmdfd29yZHMgPSBicmVha19sb25nX3dvcmRzCiAgICAgICAgc2VsZi5kcm9wX3doaXRlc3BhY2UgPSBkcm9wX3doaXRlc3BhY2UKICAgICAgICBzZWxmLmJyZWFrX29uX2h5cGhlbnMgPSBicmVha19vbl9oeXBoZW5zCiAgICAgICAgc2VsZi50YWJzaXplID0gdGFic2l6ZQogICAgICAgIHNlbGYubWF4X2xpbmVzID0gbWF4X2xpbmVzCiAgICAgICAgc2VsZi5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyCgoKICAgICMgLS0gUHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIChwb3NzaWJseSB1c2VmdWwgZm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUpCgogICAgZGVmIF9tdW5nZV93aGl0ZXNwYWNlKHNlbGYsIHRleHQpOgogICAgICAgICIiIl9tdW5nZV93aGl0ZXNwYWNlKHRleHQgOiBzdHJpbmcpIC0+IHN0cmluZwoKICAgICAgICBNdW5nZSB3aGl0ZXNwYWNlIGluIHRleHQ6IGV4cGFuZCB0YWJzIGFuZCBjb252ZXJ0IGFsbCBvdGhlcgogICAgICAgIHdoaXRlc3BhY2UgY2hhcmFjdGVycyB0byBzcGFjZXMuICBFZy4gIiBmb29cXHRiYXJcXG5cXG5iYXoiCiAgICAgICAgYmVjb21lcyAiIGZvbyAgICBiYXIgIGJheiIuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5leHBhbmRfdGFiczoKICAgICAgICAgICAgdGV4dCA9IHRleHQuZXhwYW5kdGFicyhzZWxmLnRhYnNpemUpCiAgICAgICAgaWYgc2VsZi5yZXBsYWNlX3doaXRlc3BhY2U6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRyYW5zbGF0ZShzZWxmLnVuaWNvZGVfd2hpdGVzcGFjZV90cmFucykKICAgICAgICByZXR1cm4gdGV4dAoKCiAgICBkZWYgX3NwbGl0KHNlbGYsIHRleHQpOgogICAgICAgICIiIl9zcGxpdCh0ZXh0IDogc3RyaW5nKSAtPiBbc3RyaW5nXQoKICAgICAgICBTcGxpdCB0aGUgdGV4dCB0byB3cmFwIGludG8gaW5kaXZpc2libGUgY2h1bmtzLiAgQ2h1bmtzIGFyZQogICAgICAgIG5vdCBxdWl0ZSB0aGUgc2FtZSBhcyB3b3Jkczsgc2VlIF93cmFwX2NodW5rcygpIGZvciBmdWxsCiAgICAgICAgZGV0YWlscy4gIEFzIGFuIGV4YW1wbGUsIHRoZSB0ZXh0CiAgICAgICAgICBMb29rLCBnb29mLWJhbGwgLS0gdXNlIHRoZSAtYiBvcHRpb24hCiAgICAgICAgYnJlYWtzIGludG8gdGhlIGZvbGxvd2luZyBjaHVua3M6CiAgICAgICAgICAnTG9vaywnLCAnICcsICdnb29mLScsICdiYWxsJywgJyAnLCAnLS0nLCAnICcsCiAgICAgICAgICAndXNlJywgJyAnLCAndGhlJywgJyAnLCAnLWInLCAnICcsICdvcHRpb24hJwogICAgICAgIGlmIGJyZWFrX29uX2h5cGhlbnMgaXMgVHJ1ZSwgb3IgaW46CiAgICAgICAgICAnTG9vaywnLCAnICcsICdnb29mLWJhbGwnLCAnICcsICctLScsICcgJywKICAgICAgICAgICd1c2UnLCAnICcsICd0aGUnLCAnICcsICctYicsICcgJywgb3B0aW9uIScKICAgICAgICBvdGhlcndpc2UuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5icmVha19vbl9oeXBoZW5zIGlzIFRydWU6CiAgICAgICAgICAgIGNodW5rcyA9IHNlbGYud29yZHNlcF9yZS5zcGxpdCh0ZXh0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNodW5rcyA9IHNlbGYud29yZHNlcF9zaW1wbGVfcmUuc3BsaXQodGV4dCkKICAgICAgICBjaHVua3MgPSBbYyBmb3IgYyBpbiBjaHVua3MgaWYgY10KICAgICAgICByZXR1cm4gY2h1bmtzCgogICAgZGVmIF9maXhfc2VudGVuY2VfZW5kaW5ncyhzZWxmLCBjaHVua3MpOgogICAgICAgICIiIl9maXhfc2VudGVuY2VfZW5kaW5ncyhjaHVua3MgOiBbc3RyaW5nXSkKCiAgICAgICAgQ29ycmVjdCBmb3Igc2VudGVuY2UgZW5kaW5ncyBidXJpZWQgaW4gJ2NodW5rcycuICBFZy4gd2hlbiB0aGUKICAgICAgICBvcmlnaW5hbCB0ZXh0IGNvbnRhaW5zICIuLi4gZm9vLlxcbkJhciAuLi4iLCBtdW5nZV93aGl0ZXNwYWNlKCkKICAgICAgICBhbmQgc3BsaXQoKSB3aWxsIGNvbnZlcnQgdGhhdCB0byBbLi4uLCAiZm9vLiIsICIgIiwgIkJhciIsIC4uLl0KICAgICAgICB3aGljaCBoYXMgb25lIHRvbyBmZXcgc3BhY2VzOyB0aGlzIG1ldGhvZCBzaW1wbHkgY2hhbmdlcyB0aGUgb25lCiAgICAgICAgc3BhY2UgdG8gdHdvLgogICAgICAgICIiIgogICAgICAgIGkgPSAwCiAgICAgICAgcGF0c2VhcmNoID0gc2VsZi5zZW50ZW5jZV9lbmRfcmUuc2VhcmNoCiAgICAgICAgd2hpbGUgaSA8IGxlbihjaHVua3MpLTE6CiAgICAgICAgICAgIGlmIGNodW5rc1tpKzFdID09ICIgIiBhbmQgcGF0c2VhcmNoKGNodW5rc1tpXSk6CiAgICAgICAgICAgICAgICBjaHVua3NbaSsxXSA9ICIgICIKICAgICAgICAgICAgICAgIGkgKz0gMgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaSArPSAxCgogICAgZGVmIF9oYW5kbGVfbG9uZ193b3JkKHNlbGYsIHJldmVyc2VkX2NodW5rcywgY3VyX2xpbmUsIGN1cl9sZW4sIHdpZHRoKToKICAgICAgICAiIiJfaGFuZGxlX2xvbmdfd29yZChjaHVua3MgOiBbc3RyaW5nXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfbGluZSA6IFtzdHJpbmddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl9sZW4gOiBpbnQsIHdpZHRoIDogaW50KQoKICAgICAgICBIYW5kbGUgYSBjaHVuayBvZiB0ZXh0IChtb3N0IGxpa2VseSBhIHdvcmQsIG5vdCB3aGl0ZXNwYWNlKSB0aGF0CiAgICAgICAgaXMgdG9vIGxvbmcgdG8gZml0IGluIGFueSBsaW5lLgogICAgICAgICIiIgogICAgICAgICMgRmlndXJlIG91dCB3aGVuIGluZGVudCBpcyBsYXJnZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHdpZHRoLCBhbmQgbWFrZQogICAgICAgICMgc3VyZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIHN0cmlwcGVkIG9mZiBvbiBldmVyeSBwYXNzCiAgICAgICAgaWYgd2lkdGggPCAxOgogICAgICAgICAgICBzcGFjZV9sZWZ0ID0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNwYWNlX2xlZnQgPSB3aWR0aCAtIGN1cl9sZW4KCiAgICAgICAgIyBJZiB3ZSdyZSBhbGxvd2VkIHRvIGJyZWFrIGxvbmcgd29yZHMsIHRoZW4gZG8gc286IHB1dCBhcyBtdWNoCiAgICAgICAgIyBvZiB0aGUgbmV4dCBjaHVuayBvbnRvIHRoZSBjdXJyZW50IGxpbmUgYXMgd2lsbCBmaXQuCiAgICAgICAgaWYgc2VsZi5icmVha19sb25nX3dvcmRzOgogICAgICAgICAgICBlbmQgPSBzcGFjZV9sZWZ0CiAgICAgICAgICAgIGNodW5rID0gcmV2ZXJzZWRfY2h1bmtzWy0xXQogICAgICAgICAgICBpZiBzZWxmLmJyZWFrX29uX2h5cGhlbnMgYW5kIGxlbihjaHVuaykgPiBzcGFjZV9sZWZ0OgogICAgICAgICAgICAgICAgIyBicmVhayBhZnRlciBsYXN0IGh5cGhlbiwgYnV0IG9ubHkgaWYgdGhlcmUgYXJlCiAgICAgICAgICAgICAgICAjIG5vbi1oeXBoZW5zIGJlZm9yZSBpdAogICAgICAgICAgICAgICAgaHlwaGVuID0gY2h1bmsucmZpbmQoJy0nLCAwLCBzcGFjZV9sZWZ0KQogICAgICAgICAgICAgICAgaWYgaHlwaGVuID4gMCBhbmQgYW55KGMgIT0gJy0nIGZvciBjIGluIGNodW5rWzpoeXBoZW5dKToKICAgICAgICAgICAgICAgICAgICBlbmQgPSBoeXBoZW4gKyAxCiAgICAgICAgICAgIGN1cl9saW5lLmFwcGVuZChjaHVua1s6ZW5kXSkKICAgICAgICAgICAgcmV2ZXJzZWRfY2h1bmtzWy0xXSA9IGNodW5rW2VuZDpdCgogICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBoYXZlIHRvIHByZXNlcnZlIHRoZSBsb25nIHdvcmQgaW50YWN0LiAgT25seSBhZGQKICAgICAgICAjIGl0IHRvIHRoZSBjdXJyZW50IGxpbmUgaWYgdGhlcmUncyBub3RoaW5nIGFscmVhZHkgdGhlcmUgLS0KICAgICAgICAjIHRoYXQgbWluaW1pemVzIGhvdyBtdWNoIHdlIHZpb2xhdGUgdGhlIHdpZHRoIGNvbnN0cmFpbnQuCiAgICAgICAgZWxpZiBub3QgY3VyX2xpbmU6CiAgICAgICAgICAgIGN1cl9saW5lLmFwcGVuZChyZXZlcnNlZF9jaHVua3MucG9wKCkpCgogICAgICAgICMgSWYgd2UncmUgbm90IGFsbG93ZWQgdG8gYnJlYWsgbG9uZyB3b3JkcywgYW5kIHRoZXJlJ3MgYWxyZWFkeQogICAgICAgICMgdGV4dCBvbiB0aGUgY3VycmVudCBsaW5lLCBkbyBub3RoaW5nLiAgTmV4dCB0aW1lIHRocm91Z2ggdGhlCiAgICAgICAgIyBtYWluIGxvb3Agb2YgX3dyYXBfY2h1bmtzKCksIHdlJ2xsIHdpbmQgdXAgaGVyZSBhZ2FpbiwgYnV0CiAgICAgICAgIyBjdXJfbGVuIHdpbGwgYmUgemVybywgc28gdGhlIG5leHQgbGluZSB3aWxsIGJlIGVudGlyZWx5CiAgICAgICAgIyBkZXZvdGVkIHRvIHRoZSBsb25nIHdvcmQgdGhhdCB3ZSBjYW4ndCBoYW5kbGUgcmlnaHQgbm93LgoKICAgIGRlZiBfd3JhcF9jaHVua3Moc2VsZiwgY2h1bmtzKToKICAgICAgICAiIiJfd3JhcF9jaHVua3MoY2h1bmtzIDogW3N0cmluZ10pIC0+IFtzdHJpbmddCgogICAgICAgIFdyYXAgYSBzZXF1ZW5jZSBvZiB0ZXh0IGNodW5rcyBhbmQgcmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBvZgogICAgICAgIGxlbmd0aCAnc2VsZi53aWR0aCcgb3IgbGVzcy4gIChJZiAnYnJlYWtfbG9uZ193b3JkcycgaXMgZmFsc2UsCiAgICAgICAgc29tZSBsaW5lcyBtYXkgYmUgbG9uZ2VyIHRoYW4gdGhpcy4pICBDaHVua3MgY29ycmVzcG9uZCByb3VnaGx5CiAgICAgICAgdG8gd29yZHMgYW5kIHRoZSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlbTogZWFjaCBjaHVuayBpcwogICAgICAgIGluZGl2aXNpYmxlIChtb2R1bG8gJ2JyZWFrX2xvbmdfd29yZHMnKSwgYnV0IGEgbGluZSBicmVhayBjYW4KICAgICAgICBjb21lIGJldHdlZW4gYW55IHR3byBjaHVua3MuICBDaHVua3Mgc2hvdWxkIG5vdCBoYXZlIGludGVybmFsCiAgICAgICAgd2hpdGVzcGFjZTsgaWUuIGEgY2h1bmsgaXMgZWl0aGVyIGFsbCB3aGl0ZXNwYWNlIG9yIGEgIndvcmQiLgogICAgICAgIFdoaXRlc3BhY2UgY2h1bmtzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZgogICAgICAgIGxpbmVzLCBidXQgYXBhcnQgZnJvbSB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkLgogICAgICAgICIiIgogICAgICAgIGxpbmVzID0gW10KICAgICAgICBpZiBzZWxmLndpZHRoIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2lkdGggJXIgKG11c3QgYmUgPiAwKSIgJSBzZWxmLndpZHRoKQogICAgICAgIGlmIHNlbGYubWF4X2xpbmVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBzZWxmLm1heF9saW5lcyA+IDE6CiAgICAgICAgICAgICAgICBpbmRlbnQgPSBzZWxmLnN1YnNlcXVlbnRfaW5kZW50CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpbmRlbnQgPSBzZWxmLmluaXRpYWxfaW5kZW50CiAgICAgICAgICAgIGlmIGxlbihpbmRlbnQpICsgbGVuKHNlbGYucGxhY2Vob2xkZXIubHN0cmlwKCkpID4gc2VsZi53aWR0aDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBsYWNlaG9sZGVyIHRvbyBsYXJnZSBmb3IgbWF4IHdpZHRoIikKCiAgICAgICAgIyBBcnJhbmdlIGluIHJldmVyc2Ugb3JkZXIgc28gaXRlbXMgY2FuIGJlIGVmZmljaWVudGx5IHBvcHBlZAogICAgICAgICMgZnJvbSBhIHN0YWNrIG9mIGNodWNrcy4KICAgICAgICBjaHVua3MucmV2ZXJzZSgpCgogICAgICAgIHdoaWxlIGNodW5rczoKCiAgICAgICAgICAgICMgU3RhcnQgdGhlIGxpc3Qgb2YgY2h1bmtzIHRoYXQgd2lsbCBtYWtlIHVwIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgICAgICAgICMgY3VyX2xlbiBpcyBqdXN0IHRoZSBsZW5ndGggb2YgYWxsIHRoZSBjaHVua3MgaW4gY3VyX2xpbmUuCiAgICAgICAgICAgIGN1cl9saW5lID0gW10KICAgICAgICAgICAgY3VyX2xlbiA9IDAKCiAgICAgICAgICAgICMgRmlndXJlIG91dCB3aGljaCBzdGF0aWMgc3RyaW5nIHdpbGwgcHJlZml4IHRoaXMgbGluZS4KICAgICAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgICAgICBpbmRlbnQgPSBzZWxmLnN1YnNlcXVlbnRfaW5kZW50CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpbmRlbnQgPSBzZWxmLmluaXRpYWxfaW5kZW50CgogICAgICAgICAgICAjIE1heGltdW0gd2lkdGggZm9yIHRoaXMgbGluZS4KICAgICAgICAgICAgd2lkdGggPSBzZWxmLndpZHRoIC0gbGVuKGluZGVudCkKCiAgICAgICAgICAgICMgRmlyc3QgY2h1bmsgb24gbGluZSBpcyB3aGl0ZXNwYWNlIC0tIGRyb3AgaXQsIHVubGVzcyB0aGlzCiAgICAgICAgICAgICMgaXMgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0IChpZS4gbm8gbGluZXMgc3RhcnRlZCB5ZXQpLgogICAgICAgICAgICBpZiBzZWxmLmRyb3Bfd2hpdGVzcGFjZSBhbmQgY2h1bmtzWy0xXS5zdHJpcCgpID09ICcnIGFuZCBsaW5lczoKICAgICAgICAgICAgICAgIGRlbCBjaHVua3NbLTFdCgogICAgICAgICAgICB3aGlsZSBjaHVua3M6CiAgICAgICAgICAgICAgICBsID0gbGVuKGNodW5rc1stMV0pCgogICAgICAgICAgICAgICAgIyBDYW4gYXQgbGVhc3Qgc3F1ZWV6ZSB0aGlzIGNodW5rIG9udG8gdGhlIGN1cnJlbnQgbGluZS4KICAgICAgICAgICAgICAgIGlmIGN1cl9sZW4gKyBsIDw9IHdpZHRoOgogICAgICAgICAgICAgICAgICAgIGN1cl9saW5lLmFwcGVuZChjaHVua3MucG9wKCkpCiAgICAgICAgICAgICAgICAgICAgY3VyX2xlbiArPSBsCgogICAgICAgICAgICAgICAgIyBOb3BlLCB0aGlzIGxpbmUgaXMgZnVsbC4KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgICMgVGhlIGN1cnJlbnQgbGluZSBpcyBmdWxsLCBhbmQgdGhlIG5leHQgY2h1bmsgaXMgdG9vIGJpZyB0bwogICAgICAgICAgICAjIGZpdCBvbiAqYW55KiBsaW5lIChub3QganVzdCB0aGlzIG9uZSkuCiAgICAgICAgICAgIGlmIGNodW5rcyBhbmQgbGVuKGNodW5rc1stMV0pID4gd2lkdGg6CiAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfbG9uZ193b3JkKGNodW5rcywgY3VyX2xpbmUsIGN1cl9sZW4sIHdpZHRoKQogICAgICAgICAgICAgICAgY3VyX2xlbiA9IHN1bShtYXAobGVuLCBjdXJfbGluZSkpCgogICAgICAgICAgICAjIElmIHRoZSBsYXN0IGNodW5rIG9uIHRoaXMgbGluZSBpcyBhbGwgd2hpdGVzcGFjZSwgZHJvcCBpdC4KICAgICAgICAgICAgaWYgc2VsZi5kcm9wX3doaXRlc3BhY2UgYW5kIGN1cl9saW5lIGFuZCBjdXJfbGluZVstMV0uc3RyaXAoKSA9PSAnJzoKICAgICAgICAgICAgICAgIGN1cl9sZW4gLT0gbGVuKGN1cl9saW5lWy0xXSkKICAgICAgICAgICAgICAgIGRlbCBjdXJfbGluZVstMV0KCiAgICAgICAgICAgIGlmIGN1cl9saW5lOgogICAgICAgICAgICAgICAgaWYgKHNlbGYubWF4X2xpbmVzIGlzIE5vbmUgb3IKICAgICAgICAgICAgICAgICAgICBsZW4obGluZXMpICsgMSA8IHNlbGYubWF4X2xpbmVzIG9yCiAgICAgICAgICAgICAgICAgICAgKG5vdCBjaHVua3Mgb3IKICAgICAgICAgICAgICAgICAgICAgc2VsZi5kcm9wX3doaXRlc3BhY2UgYW5kCiAgICAgICAgICAgICAgICAgICAgIGxlbihjaHVua3MpID09IDEgYW5kCiAgICAgICAgICAgICAgICAgICAgIG5vdCBjaHVua3NbMF0uc3RyaXAoKSkgYW5kIGN1cl9sZW4gPD0gd2lkdGgpOgogICAgICAgICAgICAgICAgICAgICMgQ29udmVydCBjdXJyZW50IGxpbmUgYmFjayB0byBhIHN0cmluZyBhbmQgc3RvcmUgaXQgaW4KICAgICAgICAgICAgICAgICAgICAjIGxpc3Qgb2YgYWxsIGxpbmVzIChyZXR1cm4gdmFsdWUpLgogICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChpbmRlbnQgKyAnJy5qb2luKGN1cl9saW5lKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgY3VyX2xpbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJfbGluZVstMV0uc3RyaXAoKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl9sZW4gKyBsZW4oc2VsZi5wbGFjZWhvbGRlcikgPD0gd2lkdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX2xpbmUuYXBwZW5kKHNlbGYucGxhY2Vob2xkZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoaW5kZW50ICsgJycuam9pbihjdXJfbGluZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICBjdXJfbGVuIC09IGxlbihjdXJfbGluZVstMV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjdXJfbGluZVstMV0KICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfbGluZSA9IGxpbmVzWy0xXS5yc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihwcmV2X2xpbmUpICsgbGVuKHNlbGYucGxhY2Vob2xkZXIpIDw9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2lkdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzWy0xXSA9IHByZXZfbGluZSArIHNlbGYucGxhY2Vob2xkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoaW5kZW50ICsgc2VsZi5wbGFjZWhvbGRlci5sc3RyaXAoKSkKICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICByZXR1cm4gbGluZXMKCiAgICBkZWYgX3NwbGl0X2NodW5rcyhzZWxmLCB0ZXh0KToKICAgICAgICB0ZXh0ID0gc2VsZi5fbXVuZ2Vfd2hpdGVzcGFjZSh0ZXh0KQogICAgICAgIHJldHVybiBzZWxmLl9zcGxpdCh0ZXh0KQoKICAgICMgLS0gUHVibGljIGludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZGVmIHdyYXAoc2VsZiwgdGV4dCk6CiAgICAgICAgIiIid3JhcCh0ZXh0IDogc3RyaW5nKSAtPiBbc3RyaW5nXQoKICAgICAgICBSZWZvcm1hdCB0aGUgc2luZ2xlIHBhcmFncmFwaCBpbiAndGV4dCcgc28gaXQgZml0cyBpbiBsaW5lcyBvZgogICAgICAgIG5vIG1vcmUgdGhhbiAnc2VsZi53aWR0aCcgY29sdW1ucywgYW5kIHJldHVybiBhIGxpc3Qgb2Ygd3JhcHBlZAogICAgICAgIGxpbmVzLiAgVGFicyBpbiAndGV4dCcgYXJlIGV4cGFuZGVkIHdpdGggc3RyaW5nLmV4cGFuZHRhYnMoKSwKICAgICAgICBhbmQgYWxsIG90aGVyIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAoaW5jbHVkaW5nIG5ld2xpbmUpIGFyZQogICAgICAgIGNvbnZlcnRlZCB0byBzcGFjZS4KICAgICAgICAiIiIKICAgICAgICBjaHVua3MgPSBzZWxmLl9zcGxpdF9jaHVua3ModGV4dCkKICAgICAgICBpZiBzZWxmLmZpeF9zZW50ZW5jZV9lbmRpbmdzOgogICAgICAgICAgICBzZWxmLl9maXhfc2VudGVuY2VfZW5kaW5ncyhjaHVua3MpCiAgICAgICAgcmV0dXJuIHNlbGYuX3dyYXBfY2h1bmtzKGNodW5rcykKCiAgICBkZWYgZmlsbChzZWxmLCB0ZXh0KToKICAgICAgICAiIiJmaWxsKHRleHQgOiBzdHJpbmcpIC0+IHN0cmluZwoKICAgICAgICBSZWZvcm1hdCB0aGUgc2luZ2xlIHBhcmFncmFwaCBpbiAndGV4dCcgdG8gZml0IGluIGxpbmVzIG9mIG5vCiAgICAgICAgbW9yZSB0aGFuICdzZWxmLndpZHRoJyBjb2x1bW5zLCBhbmQgcmV0dXJuIGEgbmV3IHN0cmluZwogICAgICAgIGNvbnRhaW5pbmcgdGhlIGVudGlyZSB3cmFwcGVkIHBhcmFncmFwaC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gIlxuIi5qb2luKHNlbGYud3JhcCh0ZXh0KSkKCgojIC0tIENvbnZlbmllbmNlIGludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmRlZiB3cmFwKHRleHQsIHdpZHRoPTcwLCAqKmt3YXJncyk6CiAgICAiIiJXcmFwIGEgc2luZ2xlIHBhcmFncmFwaCBvZiB0ZXh0LCByZXR1cm5pbmcgYSBsaXN0IG9mIHdyYXBwZWQgbGluZXMuCgogICAgUmVmb3JtYXQgdGhlIHNpbmdsZSBwYXJhZ3JhcGggaW4gJ3RleHQnIHNvIGl0IGZpdHMgaW4gbGluZXMgb2Ygbm8KICAgIG1vcmUgdGhhbiAnd2lkdGgnIGNvbHVtbnMsIGFuZCByZXR1cm4gYSBsaXN0IG9mIHdyYXBwZWQgbGluZXMuICBCeQogICAgZGVmYXVsdCwgdGFicyBpbiAndGV4dCcgYXJlIGV4cGFuZGVkIHdpdGggc3RyaW5nLmV4cGFuZHRhYnMoKSwgYW5kCiAgICBhbGwgb3RoZXIgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIChpbmNsdWRpbmcgbmV3bGluZSkgYXJlIGNvbnZlcnRlZCB0bwogICAgc3BhY2UuICBTZWUgVGV4dFdyYXBwZXIgY2xhc3MgZm9yIGF2YWlsYWJsZSBrZXl3b3JkIGFyZ3MgdG8gY3VzdG9taXplCiAgICB3cmFwcGluZyBiZWhhdmlvdXIuCiAgICAiIiIKICAgIHcgPSBUZXh0V3JhcHBlcih3aWR0aD13aWR0aCwgKiprd2FyZ3MpCiAgICByZXR1cm4gdy53cmFwKHRleHQpCgpkZWYgZmlsbCh0ZXh0LCB3aWR0aD03MCwgKiprd2FyZ3MpOgogICAgIiIiRmlsbCBhIHNpbmdsZSBwYXJhZ3JhcGggb2YgdGV4dCwgcmV0dXJuaW5nIGEgbmV3IHN0cmluZy4KCiAgICBSZWZvcm1hdCB0aGUgc2luZ2xlIHBhcmFncmFwaCBpbiAndGV4dCcgdG8gZml0IGluIGxpbmVzIG9mIG5vIG1vcmUKICAgIHRoYW4gJ3dpZHRoJyBjb2x1bW5zLCBhbmQgcmV0dXJuIGEgbmV3IHN0cmluZyBjb250YWluaW5nIHRoZSBlbnRpcmUKICAgIHdyYXBwZWQgcGFyYWdyYXBoLiAgQXMgd2l0aCB3cmFwKCksIHRhYnMgYXJlIGV4cGFuZGVkIGFuZCBvdGhlcgogICAgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0byBzcGFjZS4gIFNlZSBUZXh0V3JhcHBlciBjbGFzcyBmb3IKICAgIGF2YWlsYWJsZSBrZXl3b3JkIGFyZ3MgdG8gY3VzdG9taXplIHdyYXBwaW5nIGJlaGF2aW91ci4KICAgICIiIgogICAgdyA9IFRleHRXcmFwcGVyKHdpZHRoPXdpZHRoLCAqKmt3YXJncykKICAgIHJldHVybiB3LmZpbGwodGV4dCkKCmRlZiBzaG9ydGVuKHRleHQsIHdpZHRoLCAqKmt3YXJncyk6CiAgICAiIiJDb2xsYXBzZSBhbmQgdHJ1bmNhdGUgdGhlIGdpdmVuIHRleHQgdG8gZml0IGluIHRoZSBnaXZlbiB3aWR0aC4KCiAgICBUaGUgdGV4dCBmaXJzdCBoYXMgaXRzIHdoaXRlc3BhY2UgY29sbGFwc2VkLiAgSWYgaXQgdGhlbiBmaXRzIGluCiAgICB0aGUgKndpZHRoKiwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuICBPdGhlcndpc2UsIGFzIG1hbnkgd29yZHMKICAgIGFzIHBvc3NpYmxlIGFyZSBqb2luZWQgYW5kIHRoZW4gdGhlIHBsYWNlaG9sZGVyIGlzIGFwcGVuZGVkOjoKCiAgICAgICAgPj4+IHRleHR3cmFwLnNob3J0ZW4oIkhlbGxvICB3b3JsZCEiLCB3aWR0aD0xMikKICAgICAgICAnSGVsbG8gd29ybGQhJwogICAgICAgID4+PiB0ZXh0d3JhcC5zaG9ydGVuKCJIZWxsbyAgd29ybGQhIiwgd2lkdGg9MTEpCiAgICAgICAgJ0hlbGxvIFsuLi5dJwogICAgIiIiCiAgICB3ID0gVGV4dFdyYXBwZXIod2lkdGg9d2lkdGgsIG1heF9saW5lcz0xLCAqKmt3YXJncykKICAgIHJldHVybiB3LmZpbGwoJyAnLmpvaW4odGV4dC5zdHJpcCgpLnNwbGl0KCkpKQoKCiMgLS0gTG9vc2VseSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKX3doaXRlc3BhY2Vfb25seV9yZSA9IHJlLmNvbXBpbGUoJ15bIFx0XSskJywgcmUuTVVMVElMSU5FKQpfbGVhZGluZ193aGl0ZXNwYWNlX3JlID0gcmUuY29tcGlsZSgnKF5bIFx0XSopKD86W14gXHRcbl0pJywgcmUuTVVMVElMSU5FKQoKZGVmIGRlZGVudCh0ZXh0KToKICAgICIiIlJlbW92ZSBhbnkgY29tbW9uIGxlYWRpbmcgd2hpdGVzcGFjZSBmcm9tIGV2ZXJ5IGxpbmUgaW4gYHRleHRgLgoKICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gbWFrZSB0cmlwbGUtcXVvdGVkIHN0cmluZ3MgbGluZSB1cCB3aXRoIHRoZSBsZWZ0CiAgICBlZGdlIG9mIHRoZSBkaXNwbGF5LCB3aGlsZSBzdGlsbCBwcmVzZW50aW5nIHRoZW0gaW4gdGhlIHNvdXJjZSBjb2RlCiAgICBpbiBpbmRlbnRlZCBmb3JtLgoKICAgIE5vdGUgdGhhdCB0YWJzIGFuZCBzcGFjZXMgYXJlIGJvdGggdHJlYXRlZCBhcyB3aGl0ZXNwYWNlLCBidXQgdGhleQogICAgYXJlIG5vdCBlcXVhbDogdGhlIGxpbmVzICIgIGhlbGxvIiBhbmQgIlxcdGhlbGxvIiBhcmUKICAgIGNvbnNpZGVyZWQgdG8gaGF2ZSBubyBjb21tb24gbGVhZGluZyB3aGl0ZXNwYWNlLgoKICAgIEVudGlyZWx5IGJsYW5rIGxpbmVzIGFyZSBub3JtYWxpemVkIHRvIGEgbmV3bGluZSBjaGFyYWN0ZXIuCiAgICAiIiIKICAgICMgTG9vayBmb3IgdGhlIGxvbmdlc3QgbGVhZGluZyBzdHJpbmcgb2Ygc3BhY2VzIGFuZCB0YWJzIGNvbW1vbiB0bwogICAgIyBhbGwgbGluZXMuCiAgICBtYXJnaW4gPSBOb25lCiAgICB0ZXh0ID0gX3doaXRlc3BhY2Vfb25seV9yZS5zdWIoJycsIHRleHQpCiAgICBpbmRlbnRzID0gX2xlYWRpbmdfd2hpdGVzcGFjZV9yZS5maW5kYWxsKHRleHQpCiAgICBmb3IgaW5kZW50IGluIGluZGVudHM6CiAgICAgICAgaWYgbWFyZ2luIGlzIE5vbmU6CiAgICAgICAgICAgIG1hcmdpbiA9IGluZGVudAoKICAgICAgICAjIEN1cnJlbnQgbGluZSBtb3JlIGRlZXBseSBpbmRlbnRlZCB0aGFuIHByZXZpb3VzIHdpbm5lcjoKICAgICAgICAjIG5vIGNoYW5nZSAocHJldmlvdXMgd2lubmVyIGlzIHN0aWxsIG9uIHRvcCkuCiAgICAgICAgZWxpZiBpbmRlbnQuc3RhcnRzd2l0aChtYXJnaW4pOgogICAgICAgICAgICBwYXNzCgogICAgICAgICMgQ3VycmVudCBsaW5lIGNvbnNpc3RlbnQgd2l0aCBhbmQgbm8gZGVlcGVyIHRoYW4gcHJldmlvdXMgd2lubmVyOgogICAgICAgICMgaXQncyB0aGUgbmV3IHdpbm5lci4KICAgICAgICBlbGlmIG1hcmdpbi5zdGFydHN3aXRoKGluZGVudCk6CiAgICAgICAgICAgIG1hcmdpbiA9IGluZGVudAoKICAgICAgICAjIEZpbmQgdGhlIGxhcmdlc3QgY29tbW9uIHdoaXRlc3BhY2UgYmV0d2VlbiBjdXJyZW50IGxpbmUgYW5kIHByZXZpb3VzCiAgICAgICAgIyB3aW5uZXIuCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZm9yIGksICh4LCB5KSBpbiBlbnVtZXJhdGUoemlwKG1hcmdpbiwgaW5kZW50KSk6CiAgICAgICAgICAgICAgICBpZiB4ICE9IHk6CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luID0gbWFyZ2luWzppXQogICAgICAgICAgICAgICAgICAgIGJyZWFrCgogICAgIyBzYW5pdHkgY2hlY2sgKHRlc3RpbmcvZGVidWdnaW5nIG9ubHkpCiAgICBpZiAwIGFuZCBtYXJnaW46CiAgICAgICAgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdCgiXG4iKToKICAgICAgICAgICAgYXNzZXJ0IG5vdCBsaW5lIG9yIGxpbmUuc3RhcnRzd2l0aChtYXJnaW4pLCBcCiAgICAgICAgICAgICAgICAgICAibGluZSA9ICVyLCBtYXJnaW4gPSAlciIgJSAobGluZSwgbWFyZ2luKQoKICAgIGlmIG1hcmdpbjoKICAgICAgICB0ZXh0ID0gcmUuc3ViKHInKD9tKV4nICsgbWFyZ2luLCAnJywgdGV4dCkKICAgIHJldHVybiB0ZXh0CgoKZGVmIGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZT1Ob25lKToKICAgICIiIkFkZHMgJ3ByZWZpeCcgdG8gdGhlIGJlZ2lubmluZyBvZiBzZWxlY3RlZCBsaW5lcyBpbiAndGV4dCcuCgogICAgSWYgJ3ByZWRpY2F0ZScgaXMgcHJvdmlkZWQsICdwcmVmaXgnIHdpbGwgb25seSBiZSBhZGRlZCB0byB0aGUgbGluZXMKICAgIHdoZXJlICdwcmVkaWNhdGUobGluZSknIGlzIFRydWUuIElmICdwcmVkaWNhdGUnIGlzIG5vdCBwcm92aWRlZCwKICAgIGl0IHdpbGwgZGVmYXVsdCB0byBhZGRpbmcgJ3ByZWZpeCcgdG8gYWxsIG5vbi1lbXB0eSBsaW5lcyB0aGF0IGRvIG5vdAogICAgY29uc2lzdCBzb2xlbHkgb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgogICAgIiIiCiAgICBpZiBwcmVkaWNhdGUgaXMgTm9uZToKICAgICAgICBkZWYgcHJlZGljYXRlKGxpbmUpOgogICAgICAgICAgICByZXR1cm4gbGluZS5zdHJpcCgpCgogICAgZGVmIHByZWZpeGVkX2xpbmVzKCk6CiAgICAgICAgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKFRydWUpOgogICAgICAgICAgICB5aWVsZCAocHJlZml4ICsgbGluZSBpZiBwcmVkaWNhdGUobGluZSkgZWxzZSBsaW5lKQogICAgcmV0dXJuICcnLmpvaW4ocHJlZml4ZWRfbGluZXMoKSkKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgI3ByaW50IGRlZGVudCgiXHRmb29cblx0YmFyIikKICAgICNwcmludCBkZWRlbnQoIiAgXHRoZWxsbyB0aGVyZVxuICBcdCAgaG93IGFyZSB5b3U/IikKICAgIHByaW50KGRlZGVudCgiSGVsbG8gdGhlcmUuXG4gIFRoaXMgaXMgaW5kZW50ZWQuIikpClBLAwQUAAAAAAACIKNW1JKCjesDAADrAwAABwAAAHRoaXMucHlzID0gIiIiR3VyIE1yYSBicyBDbGd1YmEsIG9sIEd2eiBDcmdyZWYKCk9ybmhndnNoeSB2ZiBvcmdncmUgZ3VuYSBodHlsLgpSa2N5dnB2ZyB2ZiBvcmdncmUgZ3VuYSB2emN5dnB2Zy4KRnZ6Y3lyIHZmIG9yZ2dyZSBndW5hIHBiemN5cmsuClBiemN5cmsgdmYgb3JnZ3JlIGd1bmEgcGJ6Y3l2cG5ncnEuClN5bmcgdmYgb3JnZ3JlIGd1bmEgYXJmZ3JxLgpGY25lZnIgdmYgb3JnZ3JlIGd1bmEgcXJhZnIuCkVybnFub3Z5dmdsIHBiaGFnZi4KRmNycHZueSBwbmZyZiBuZXJhJ2cgZmNycHZueSByYWJodHUgZ2Igb2VybnggZ3VyIGVoeXJmLgpOeWd1Ymh0dSBjZW5wZ3Zwbnl2Z2wgb3JuZ2YgY2hldmdsLgpSZWViZWYgZnViaHlxIGFyaXJlIGNuZmYgZnZ5cmFneWwuCkhheXJmZiBya2N5dnB2Z3lsIGZ2eXJhcHJxLgpWYSBndXIgc25wciBicyBuem92dGh2Z2wsIGVyc2hmciBndXIgZ3J6Y2duZ3ZiYSBnYiB0aHJmZi4KR3VyZXIgZnViaHlxIG9yIGJhci0tIG5hcSBjZXJzcmVub3lsIGJheWwgYmFyIC0tYm9pdmJoZiBqbmwgZ2IgcWIgdmcuCk55Z3ViaHR1IGd1bmcgam5sIHpubCBhYmcgb3IgYm9pdmJoZiBuZyBzdmVmZyBoYXlyZmYgbGJoJ2VyIFFoZ3B1LgpBYmogdmYgb3JnZ3JlIGd1bmEgYXJpcmUuCk55Z3ViaHR1IGFyaXJlIHZmIGJzZ3JhIG9yZ2dyZSBndW5hICpldnR1ZyogYWJqLgpWcyBndXIgdnpjeXJ6cmFnbmd2YmEgdmYgdW5lcSBnYiBya2N5bnZhLCB2ZydmIG4gb25xIHZxcm4uClZzIGd1ciB2emN5cnpyYWduZ3ZiYSB2ZiBybmZsIGdiIHJrY3ludmEsIHZnIHpubCBvciBuIHRiYnEgdnFybi4KQW56cmZjbnByZiBuZXIgYmFyIHViYXh2YXQgdGVybmcgdnFybiAtLSB5cmcnZiBxYiB6YmVyIGJzIGd1YmZyISIiIgoKZCA9IHt9CmZvciBjIGluICg2NSwgOTcpOgogICAgZm9yIGkgaW4gcmFuZ2UoMjYpOgogICAgICAgIGRbY2hyKGkrYyldID0gY2hyKChpKzEzKSAlIDI2ICsgYykKCnByaW50KCIiLmpvaW4oW2QuZ2V0KGMsIGMpIGZvciBjIGluIHNdKSkKUEsDBBQAAAAAAAIgo1bsG9tH2uEAANrhAAAMAAAAdGhyZWFkaW5nLnB5IiIiVGhyZWFkIG1vZHVsZSBlbXVsYXRpbmcgYSBzdWJzZXQgb2YgSmF2YSdzIHRocmVhZGluZyBtb2RlbC4iIiIKCmltcG9ydCBvcyBhcyBfb3MKaW1wb3J0IHN5cyBhcyBfc3lzCmltcG9ydCBfdGhyZWFkCmltcG9ydCBmdW5jdG9vbHMKCmZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCmZyb20gX3dlYWtyZWZzZXQgaW1wb3J0IFdlYWtTZXQKZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZSBhcyBfaXNsaWNlLCBjb3VudCBhcyBfY291bnQKdHJ5OgogICAgZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlIGFzIF9kZXF1ZQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZSBhcyBfZGVxdWUKCiMgTm90ZSByZWdhcmRpbmcgUEVQIDggY29tcGxpYW50IG5hbWVzCiMgIFRoaXMgdGhyZWFkaW5nIG1vZGVsIHdhcyBvcmlnaW5hbGx5IGluc3BpcmVkIGJ5IEphdmEsIGFuZCBpbmhlcml0ZWQKIyB0aGUgY29udmVudGlvbiBvZiBjYW1lbENhc2UgZnVuY3Rpb24gYW5kIG1ldGhvZCBuYW1lcyBmcm9tIHRoYXQKIyBsYW5ndWFnZS4gVGhvc2Ugb3JpZ2luYWwgbmFtZXMgYXJlIG5vdCBpbiBhbnkgaW1taW5lbnQgZGFuZ2VyIG9mCiMgYmVpbmcgZGVwcmVjYXRlZCAoZXZlbiBmb3IgUHkzayksc28gdGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlbSBhcyBhbgojIGFsaWFzIGZvciB0aGUgUEVQIDggY29tcGxpYW50IG5hbWVzCiMgTm90ZSB0aGF0IHVzaW5nIHRoZSBuZXcgUEVQIDggY29tcGxpYW50IG5hbWVzIGZhY2lsaXRhdGVzIHN1YnN0aXR1dGlvbgojIHdpdGggdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUsIHdoaWNoIGRvZXNuJ3QgcHJvdmlkZSB0aGUgb2xkCiMgSmF2YSBpbnNwaXJlZCBuYW1lcy4KCl9fYWxsX18gPSBbJ2dldF9pZGVudCcsICdhY3RpdmVfY291bnQnLCAnQ29uZGl0aW9uJywgJ2N1cnJlbnRfdGhyZWFkJywKICAgICAgICAgICAnZW51bWVyYXRlJywgJ21haW5fdGhyZWFkJywgJ1RJTUVPVVRfTUFYJywKICAgICAgICAgICAnRXZlbnQnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLAogICAgICAgICAgICdCYXJyaWVyJywgJ0Jyb2tlbkJhcnJpZXJFcnJvcicsICdUaW1lcicsICdUaHJlYWRFcnJvcicsCiAgICAgICAgICAgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZScsCiAgICAgICAgICAgJ2V4Y2VwdGhvb2snLCAnRXhjZXB0SG9va0FyZ3MnLCAnZ2V0dHJhY2UnLCAnZ2V0cHJvZmlsZSddCgojIFJlbmFtZSBzb21lIHN0dWZmIHNvICJmcm9tIHRocmVhZGluZyBpbXBvcnQgKiIgaXMgc2FmZQpfc3RhcnRfbmV3X3RocmVhZCA9IF90aHJlYWQuc3RhcnRfbmV3X3RocmVhZApfYWxsb2NhdGVfbG9jayA9IF90aHJlYWQuYWxsb2NhdGVfbG9jawpfc2V0X3NlbnRpbmVsID0gX3RocmVhZC5fc2V0X3NlbnRpbmVsCmdldF9pZGVudCA9IF90aHJlYWQuZ2V0X2lkZW50CnRyeToKICAgIGdldF9uYXRpdmVfaWQgPSBfdGhyZWFkLmdldF9uYXRpdmVfaWQKICAgIF9IQVZFX1RIUkVBRF9OQVRJVkVfSUQgPSBUcnVlCiAgICBfX2FsbF9fLmFwcGVuZCgnZ2V0X25hdGl2ZV9pZCcpCmV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgIF9IQVZFX1RIUkVBRF9OQVRJVkVfSUQgPSBGYWxzZQpUaHJlYWRFcnJvciA9IF90aHJlYWQuZXJyb3IKdHJ5OgogICAgX0NSTG9jayA9IF90aHJlYWQuUkxvY2sKZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgX0NSTG9jayA9IE5vbmUKVElNRU9VVF9NQVggPSBfdGhyZWFkLlRJTUVPVVRfTUFYCmRlbCBfdGhyZWFkCgoKIyBTdXBwb3J0IGZvciBwcm9maWxlIGFuZCB0cmFjZSBob29rcwoKX3Byb2ZpbGVfaG9vayA9IE5vbmUKX3RyYWNlX2hvb2sgPSBOb25lCgpkZWYgc2V0cHJvZmlsZShmdW5jKToKICAgICIiIlNldCBhIHByb2ZpbGUgZnVuY3Rpb24gZm9yIGFsbCB0aHJlYWRzIHN0YXJ0ZWQgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZS4KCiAgICBUaGUgZnVuYyB3aWxsIGJlIHBhc3NlZCB0byBzeXMuc2V0cHJvZmlsZSgpIGZvciBlYWNoIHRocmVhZCwgYmVmb3JlIGl0cwogICAgcnVuKCkgbWV0aG9kIGlzIGNhbGxlZC4KCiAgICAiIiIKICAgIGdsb2JhbCBfcHJvZmlsZV9ob29rCiAgICBfcHJvZmlsZV9ob29rID0gZnVuYwoKZGVmIGdldHByb2ZpbGUoKToKICAgICIiIkdldCB0aGUgcHJvZmlsZXIgZnVuY3Rpb24gYXMgc2V0IGJ5IHRocmVhZGluZy5zZXRwcm9maWxlKCkuIiIiCiAgICByZXR1cm4gX3Byb2ZpbGVfaG9vawoKZGVmIHNldHRyYWNlKGZ1bmMpOgogICAgIiIiU2V0IGEgdHJhY2UgZnVuY3Rpb24gZm9yIGFsbCB0aHJlYWRzIHN0YXJ0ZWQgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZS4KCiAgICBUaGUgZnVuYyB3aWxsIGJlIHBhc3NlZCB0byBzeXMuc2V0dHJhY2UoKSBmb3IgZWFjaCB0aHJlYWQsIGJlZm9yZSBpdHMgcnVuKCkKICAgIG1ldGhvZCBpcyBjYWxsZWQuCgogICAgIiIiCiAgICBnbG9iYWwgX3RyYWNlX2hvb2sKICAgIF90cmFjZV9ob29rID0gZnVuYwoKZGVmIGdldHRyYWNlKCk6CiAgICAiIiJHZXQgdGhlIHRyYWNlIGZ1bmN0aW9uIGFzIHNldCBieSB0aHJlYWRpbmcuc2V0dHJhY2UoKS4iIiIKICAgIHJldHVybiBfdHJhY2VfaG9vawoKIyBTeW5jaHJvbml6YXRpb24gY2xhc3NlcwoKTG9jayA9IF9hbGxvY2F0ZV9sb2NrCgpkZWYgUkxvY2soKmFyZ3MsICoqa3dhcmdzKToKICAgICIiIkZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgbmV3IHJlZW50cmFudCBsb2NrLgoKICAgIEEgcmVlbnRyYW50IGxvY2sgbXVzdCBiZSByZWxlYXNlZCBieSB0aGUgdGhyZWFkIHRoYXQgYWNxdWlyZWQgaXQuIE9uY2UgYQogICAgdGhyZWFkIGhhcyBhY3F1aXJlZCBhIHJlZW50cmFudCBsb2NrLCB0aGUgc2FtZSB0aHJlYWQgbWF5IGFjcXVpcmUgaXQgYWdhaW4KICAgIHdpdGhvdXQgYmxvY2tpbmc7IHRoZSB0aHJlYWQgbXVzdCByZWxlYXNlIGl0IG9uY2UgZm9yIGVhY2ggdGltZSBpdCBoYXMKICAgIGFjcXVpcmVkIGl0LgoKICAgICIiIgogICAgaWYgX0NSTG9jayBpcyBOb25lOgogICAgICAgIHJldHVybiBfUHlSTG9jaygqYXJncywgKiprd2FyZ3MpCiAgICByZXR1cm4gX0NSTG9jaygqYXJncywgKiprd2FyZ3MpCgpjbGFzcyBfUkxvY2s6CiAgICAiIiJUaGlzIGNsYXNzIGltcGxlbWVudHMgcmVlbnRyYW50IGxvY2sgb2JqZWN0cy4KCiAgICBBIHJlZW50cmFudCBsb2NrIG11c3QgYmUgcmVsZWFzZWQgYnkgdGhlIHRocmVhZCB0aGF0IGFjcXVpcmVkIGl0LiBPbmNlIGEKICAgIHRocmVhZCBoYXMgYWNxdWlyZWQgYSByZWVudHJhbnQgbG9jaywgdGhlIHNhbWUgdGhyZWFkIG1heSBhY3F1aXJlIGl0CiAgICBhZ2FpbiB3aXRob3V0IGJsb2NraW5nOyB0aGUgdGhyZWFkIG11c3QgcmVsZWFzZSBpdCBvbmNlIGZvciBlYWNoIHRpbWUgaXQKICAgIGhhcyBhY3F1aXJlZCBpdC4KCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fYmxvY2sgPSBfYWxsb2NhdGVfbG9jaygpCiAgICAgICAgc2VsZi5fb3duZXIgPSBOb25lCiAgICAgICAgc2VsZi5fY291bnQgPSAwCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIG93bmVyID0gc2VsZi5fb3duZXIKICAgICAgICB0cnk6CiAgICAgICAgICAgIG93bmVyID0gX2FjdGl2ZVtvd25lcl0ubmFtZQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIHJldHVybiAiPCVzICVzLiVzIG9iamVjdCBvd25lcj0lciBjb3VudD0lZCBhdCAlcz4iICUgKAogICAgICAgICAgICAibG9ja2VkIiBpZiBzZWxmLl9ibG9jay5sb2NrZWQoKSBlbHNlICJ1bmxvY2tlZCIsCiAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKICAgICAgICAgICAgb3duZXIsCiAgICAgICAgICAgIHNlbGYuX2NvdW50LAogICAgICAgICAgICBoZXgoaWQoc2VsZikpCiAgICAgICAgKQoKICAgIGRlZiBfYXRfZm9ya19yZWluaXQoc2VsZik6CiAgICAgICAgc2VsZi5fYmxvY2suX2F0X2ZvcmtfcmVpbml0KCkKICAgICAgICBzZWxmLl9vd25lciA9IE5vbmUKICAgICAgICBzZWxmLl9jb3VudCA9IDAKCiAgICBkZWYgYWNxdWlyZShzZWxmLCBibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKToKICAgICAgICAiIiJBY3F1aXJlIGEgbG9jaywgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nLgoKICAgICAgICBXaGVuIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHM6IGlmIHRoaXMgdGhyZWFkIGFscmVhZHkgb3ducyB0aGUgbG9jaywKICAgICAgICBpbmNyZW1lbnQgdGhlIHJlY3Vyc2lvbiBsZXZlbCBieSBvbmUsIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkuIE90aGVyd2lzZSwKICAgICAgICBpZiBhbm90aGVyIHRocmVhZCBvd25zIHRoZSBsb2NrLCBibG9jayB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZC4gT25jZQogICAgICAgIHRoZSBsb2NrIGlzIHVubG9ja2VkIChub3Qgb3duZWQgYnkgYW55IHRocmVhZCksIHRoZW4gZ3JhYiBvd25lcnNoaXAsIHNldAogICAgICAgIHRoZSByZWN1cnNpb24gbGV2ZWwgdG8gb25lLCBhbmQgcmV0dXJuLiBJZiBtb3JlIHRoYW4gb25lIHRocmVhZCBpcwogICAgICAgIGJsb2NrZWQgd2FpdGluZyB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZCwgb25seSBvbmUgYXQgYSB0aW1lIHdpbGwgYmUKICAgICAgICBhYmxlIHRvIGdyYWIgb3duZXJzaGlwIG9mIHRoZSBsb2NrLiBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUgaW4gdGhpcwogICAgICAgIGNhc2UuCgogICAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBibG9ja2luZyBhcmd1bWVudCBzZXQgdG8gdHJ1ZSwgZG8gdGhlIHNhbWUgdGhpbmcKICAgICAgICBhcyB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgYW5kIHJldHVybiB0cnVlLgoKICAgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgYmxvY2tpbmcgYXJndW1lbnQgc2V0IHRvIGZhbHNlLCBkbyBub3QgYmxvY2suIElmIGEKICAgICAgICBjYWxsIHdpdGhvdXQgYW4gYXJndW1lbnQgd291bGQgYmxvY2ssIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseTsKICAgICAgICBvdGhlcndpc2UsIGRvIHRoZSBzYW1lIHRoaW5nIGFzIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQKICAgICAgICByZXR1cm4gdHJ1ZS4KCiAgICAgICAgV2hlbiBpbnZva2VkIHdpdGggdGhlIGZsb2F0aW5nLXBvaW50IHRpbWVvdXQgYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKICAgICAgICB2YWx1ZSwgYmxvY2sgZm9yIGF0IG1vc3QgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNwZWNpZmllZCBieSB0aW1lb3V0CiAgICAgICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgUmV0dXJuIHRydWUgaWYgdGhlIGxvY2sgaGFzCiAgICAgICAgYmVlbiBhY3F1aXJlZCwgZmFsc2UgaWYgdGhlIHRpbWVvdXQgaGFzIGVsYXBzZWQuCgogICAgICAgICIiIgogICAgICAgIG1lID0gZ2V0X2lkZW50KCkKICAgICAgICBpZiBzZWxmLl9vd25lciA9PSBtZToKICAgICAgICAgICAgc2VsZi5fY291bnQgKz0gMQogICAgICAgICAgICByZXR1cm4gMQogICAgICAgIHJjID0gc2VsZi5fYmxvY2suYWNxdWlyZShibG9ja2luZywgdGltZW91dCkKICAgICAgICBpZiByYzoKICAgICAgICAgICAgc2VsZi5fb3duZXIgPSBtZQogICAgICAgICAgICBzZWxmLl9jb3VudCA9IDEKICAgICAgICByZXR1cm4gcmMKCiAgICBfX2VudGVyX18gPSBhY3F1aXJlCgogICAgZGVmIHJlbGVhc2Uoc2VsZik6CiAgICAgICAgIiIiUmVsZWFzZSBhIGxvY2ssIGRlY3JlbWVudGluZyB0aGUgcmVjdXJzaW9uIGxldmVsLgoKICAgICAgICBJZiBhZnRlciB0aGUgZGVjcmVtZW50IGl0IGlzIHplcm8sIHJlc2V0IHRoZSBsb2NrIHRvIHVubG9ja2VkIChub3Qgb3duZWQKICAgICAgICBieSBhbnkgdGhyZWFkKSwgYW5kIGlmIGFueSBvdGhlciB0aHJlYWRzIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZQogICAgICAgIGxvY2sgdG8gYmVjb21lIHVubG9ja2VkLCBhbGxvdyBleGFjdGx5IG9uZSBvZiB0aGVtIHRvIHByb2NlZWQuIElmIGFmdGVyCiAgICAgICAgdGhlIGRlY3JlbWVudCB0aGUgcmVjdXJzaW9uIGxldmVsIGlzIHN0aWxsIG5vbnplcm8sIHRoZSBsb2NrIHJlbWFpbnMKICAgICAgICBsb2NrZWQgYW5kIG93bmVkIGJ5IHRoZSBjYWxsaW5nIHRocmVhZC4KCiAgICAgICAgT25seSBjYWxsIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGNhbGxpbmcgdGhyZWFkIG93bnMgdGhlIGxvY2suIEEKICAgICAgICBSdW50aW1lRXJyb3IgaXMgcmFpc2VkIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBsb2NrIGlzCiAgICAgICAgdW5sb2NrZWQuCgogICAgICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fb3duZXIgIT0gZ2V0X2lkZW50KCk6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCiAgICAgICAgc2VsZi5fY291bnQgPSBjb3VudCA9IHNlbGYuX2NvdW50IC0gMQogICAgICAgIGlmIG5vdCBjb3VudDoKICAgICAgICAgICAgc2VsZi5fb3duZXIgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0LCB2LCB0Yik6CiAgICAgICAgc2VsZi5yZWxlYXNlKCkKCiAgICAjIEludGVybmFsIG1ldGhvZHMgdXNlZCBieSBjb25kaXRpb24gdmFyaWFibGVzCgogICAgZGVmIF9hY3F1aXJlX3Jlc3RvcmUoc2VsZiwgc3RhdGUpOgogICAgICAgIHNlbGYuX2Jsb2NrLmFjcXVpcmUoKQogICAgICAgIHNlbGYuX2NvdW50LCBzZWxmLl9vd25lciA9IHN0YXRlCgogICAgZGVmIF9yZWxlYXNlX3NhdmUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY291bnQgPT0gMDoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKICAgICAgICBjb3VudCA9IHNlbGYuX2NvdW50CiAgICAgICAgc2VsZi5fY291bnQgPSAwCiAgICAgICAgb3duZXIgPSBzZWxmLl9vd25lcgogICAgICAgIHNlbGYuX293bmVyID0gTm9uZQogICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQogICAgICAgIHJldHVybiAoY291bnQsIG93bmVyKQoKICAgIGRlZiBfaXNfb3duZWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX293bmVyID09IGdldF9pZGVudCgpCgpfUHlSTG9jayA9IF9STG9jawoKCmNsYXNzIENvbmRpdGlvbjoKICAgICIiIkNsYXNzIHRoYXQgaW1wbGVtZW50cyBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KCiAgICBBIGNvbmRpdGlvbiB2YXJpYWJsZSBhbGxvd3Mgb25lIG9yIG1vcmUgdGhyZWFkcyB0byB3YWl0IHVudGlsIHRoZXkgYXJlCiAgICBub3RpZmllZCBieSBhbm90aGVyIHRocmVhZC4KCiAgICBJZiB0aGUgbG9jayBhcmd1bWVudCBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIGl0IG11c3QgYmUgYSBMb2NrIG9yIFJMb2NrCiAgICBvYmplY3QsIGFuZCBpdCBpcyB1c2VkIGFzIHRoZSB1bmRlcmx5aW5nIGxvY2suIE90aGVyd2lzZSwgYSBuZXcgUkxvY2sgb2JqZWN0CiAgICBpcyBjcmVhdGVkIGFuZCB1c2VkIGFzIHRoZSB1bmRlcmx5aW5nIGxvY2suCgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2s9Tm9uZSk6CiAgICAgICAgaWYgbG9jayBpcyBOb25lOgogICAgICAgICAgICBsb2NrID0gUkxvY2soKQogICAgICAgIHNlbGYuX2xvY2sgPSBsb2NrCiAgICAgICAgIyBFeHBvcnQgdGhlIGxvY2sncyBhY3F1aXJlKCkgYW5kIHJlbGVhc2UoKSBtZXRob2RzCiAgICAgICAgc2VsZi5hY3F1aXJlID0gbG9jay5hY3F1aXJlCiAgICAgICAgc2VsZi5yZWxlYXNlID0gbG9jay5yZWxlYXNlCiAgICAgICAgIyBJZiB0aGUgbG9jayBkZWZpbmVzIF9yZWxlYXNlX3NhdmUoKSBhbmQvb3IgX2FjcXVpcmVfcmVzdG9yZSgpLAogICAgICAgICMgdGhlc2Ugb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zICh3aGljaCBqdXN0IGNhbGwKICAgICAgICAjIHJlbGVhc2UoKSBhbmQgYWNxdWlyZSgpIG9uIHRoZSBsb2NrKS4gIERpdHRvIGZvciBfaXNfb3duZWQoKS4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3JlbGVhc2Vfc2F2ZSA9IGxvY2suX3JlbGVhc2Vfc2F2ZQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fYWNxdWlyZV9yZXN0b3JlID0gbG9jay5fYWNxdWlyZV9yZXN0b3JlCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9pc19vd25lZCA9IGxvY2suX2lzX293bmVkCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgc2VsZi5fd2FpdGVycyA9IF9kZXF1ZSgpCgogICAgZGVmIF9hdF9mb3JrX3JlaW5pdChzZWxmKToKICAgICAgICBzZWxmLl9sb2NrLl9hdF9mb3JrX3JlaW5pdCgpCiAgICAgICAgc2VsZi5fd2FpdGVycy5jbGVhcigpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2VudGVyX18oKQoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2suX19leGl0X18oKmFyZ3MpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPENvbmRpdGlvbiglcywgJWQpPiIgJSAoc2VsZi5fbG9jaywgbGVuKHNlbGYuX3dhaXRlcnMpKQoKICAgIGRlZiBfcmVsZWFzZV9zYXZlKHNlbGYpOgogICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpICAgICAgICAgICAjIE5vIHN0YXRlIHRvIHNhdmUKCiAgICBkZWYgX2FjcXVpcmVfcmVzdG9yZShzZWxmLCB4KToKICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUoKSAgICAgICAgICAgIyBJZ25vcmUgc2F2ZWQgc3RhdGUKCiAgICBkZWYgX2lzX293bmVkKHNlbGYpOgogICAgICAgICMgUmV0dXJuIFRydWUgaWYgbG9jayBpcyBvd25lZCBieSBjdXJyZW50X3RocmVhZC4KICAgICAgICAjIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGlmIF9sb2NrIGRvZXNuJ3QgaGF2ZSBfaXNfb3duZWQoKS4KICAgICAgICBpZiBzZWxmLl9sb2NrLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIiIiV2FpdCB1bnRpbCBub3RpZmllZCBvciB1bnRpbCBhIHRpbWVvdXQgb2NjdXJzLgoKICAgICAgICBJZiB0aGUgY2FsbGluZyB0aHJlYWQgaGFzIG5vdCBhY3F1aXJlZCB0aGUgbG9jayB3aGVuIHRoaXMgbWV0aG9kIGlzCiAgICAgICAgY2FsbGVkLCBhIFJ1bnRpbWVFcnJvciBpcyByYWlzZWQuCgogICAgICAgIFRoaXMgbWV0aG9kIHJlbGVhc2VzIHRoZSB1bmRlcmx5aW5nIGxvY2ssIGFuZCB0aGVuIGJsb2NrcyB1bnRpbCBpdCBpcwogICAgICAgIGF3YWtlbmVkIGJ5IGEgbm90aWZ5KCkgb3Igbm90aWZ5X2FsbCgpIGNhbGwgZm9yIHRoZSBzYW1lIGNvbmRpdGlvbgogICAgICAgIHZhcmlhYmxlIGluIGFub3RoZXIgdGhyZWFkLCBvciB1bnRpbCB0aGUgb3B0aW9uYWwgdGltZW91dCBvY2N1cnMuIE9uY2UKICAgICAgICBhd2FrZW5lZCBvciB0aW1lZCBvdXQsIGl0IHJlLWFjcXVpcmVzIHRoZSBsb2NrIGFuZCByZXR1cm5zLgoKICAgICAgICBXaGVuIHRoZSB0aW1lb3V0IGFyZ3VtZW50IGlzIHByZXNlbnQgYW5kIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYQogICAgICAgIGZsb2F0aW5nIHBvaW50IG51bWJlciBzcGVjaWZ5aW5nIGEgdGltZW91dCBmb3IgdGhlIG9wZXJhdGlvbiBpbiBzZWNvbmRzCiAgICAgICAgKG9yIGZyYWN0aW9ucyB0aGVyZW9mKS4KCiAgICAgICAgV2hlbiB0aGUgdW5kZXJseWluZyBsb2NrIGlzIGFuIFJMb2NrLCBpdCBpcyBub3QgcmVsZWFzZWQgdXNpbmcgaXRzCiAgICAgICAgcmVsZWFzZSgpIG1ldGhvZCwgc2luY2UgdGhpcyBtYXkgbm90IGFjdHVhbGx5IHVubG9jayB0aGUgbG9jayB3aGVuIGl0CiAgICAgICAgd2FzIGFjcXVpcmVkIG11bHRpcGxlIHRpbWVzIHJlY3Vyc2l2ZWx5LiBJbnN0ZWFkLCBhbiBpbnRlcm5hbCBpbnRlcmZhY2UKICAgICAgICBvZiB0aGUgUkxvY2sgY2xhc3MgaXMgdXNlZCwgd2hpY2ggcmVhbGx5IHVubG9ja3MgaXQgZXZlbiB3aGVuIGl0IGhhcwogICAgICAgIGJlZW4gcmVjdXJzaXZlbHkgYWNxdWlyZWQgc2V2ZXJhbCB0aW1lcy4gQW5vdGhlciBpbnRlcm5hbCBpbnRlcmZhY2UgaXMKICAgICAgICB0aGVuIHVzZWQgdG8gcmVzdG9yZSB0aGUgcmVjdXJzaW9uIGxldmVsIHdoZW4gdGhlIGxvY2sgaXMgcmVhY3F1aXJlZC4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYuX2lzX293bmVkKCk6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHdhaXQgb24gdW4tYWNxdWlyZWQgbG9jayIpCiAgICAgICAgd2FpdGVyID0gX2FsbG9jYXRlX2xvY2soKQogICAgICAgIHdhaXRlci5hY3F1aXJlKCkKICAgICAgICBzZWxmLl93YWl0ZXJzLmFwcGVuZCh3YWl0ZXIpCiAgICAgICAgc2F2ZWRfc3RhdGUgPSBzZWxmLl9yZWxlYXNlX3NhdmUoKQogICAgICAgIGdvdGl0ID0gRmFsc2UKICAgICAgICB0cnk6ICAgICMgcmVzdG9yZSBzdGF0ZSBubyBtYXR0ZXIgd2hhdCAoZS5nLiwgS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgIHdhaXRlci5hY3F1aXJlKCkKICAgICAgICAgICAgICAgIGdvdGl0ID0gVHJ1ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgdGltZW91dCA+IDA6CiAgICAgICAgICAgICAgICAgICAgZ290aXQgPSB3YWl0ZXIuYWNxdWlyZShUcnVlLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBnb3RpdCA9IHdhaXRlci5hY3F1aXJlKEZhbHNlKQogICAgICAgICAgICByZXR1cm4gZ290aXQKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl9hY3F1aXJlX3Jlc3RvcmUoc2F2ZWRfc3RhdGUpCiAgICAgICAgICAgIGlmIG5vdCBnb3RpdDoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWl0ZXJzLnJlbW92ZSh3YWl0ZXIpCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCgogICAgZGVmIHdhaXRfZm9yKHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dD1Ob25lKToKICAgICAgICAiIiJXYWl0IHVudGlsIGEgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBUcnVlLgoKICAgICAgICBwcmVkaWNhdGUgc2hvdWxkIGJlIGEgY2FsbGFibGUgd2hpY2ggcmVzdWx0IHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYQogICAgICAgIGJvb2xlYW4gdmFsdWUuICBBIHRpbWVvdXQgbWF5IGJlIHByb3ZpZGVkIGdpdmluZyB0aGUgbWF4aW11bSB0aW1lIHRvCiAgICAgICAgd2FpdC4KCiAgICAgICAgIiIiCiAgICAgICAgZW5kdGltZSA9IE5vbmUKICAgICAgICB3YWl0dGltZSA9IHRpbWVvdXQKICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQogICAgICAgIHdoaWxlIG5vdCByZXN1bHQ6CiAgICAgICAgICAgIGlmIHdhaXR0aW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgd2FpdHRpbWUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgd2FpdHRpbWUgPSBlbmR0aW1lIC0gX3RpbWUoKQogICAgICAgICAgICAgICAgICAgIGlmIHdhaXR0aW1lIDw9IDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKICAgICAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIG5vdGlmeShzZWxmLCBuPTEpOgogICAgICAgICIiIldha2UgdXAgb25lIG9yIG1vcmUgdGhyZWFkcyB3YWl0aW5nIG9uIHRoaXMgY29uZGl0aW9uLCBpZiBhbnkuCgogICAgICAgIElmIHRoZSBjYWxsaW5nIHRocmVhZCBoYXMgbm90IGFjcXVpcmVkIHRoZSBsb2NrIHdoZW4gdGhpcyBtZXRob2QgaXMKICAgICAgICBjYWxsZWQsIGEgUnVudGltZUVycm9yIGlzIHJhaXNlZC4KCiAgICAgICAgVGhpcyBtZXRob2Qgd2FrZXMgdXAgYXQgbW9zdCBuIG9mIHRoZSB0aHJlYWRzIHdhaXRpbmcgZm9yIHRoZSBjb25kaXRpb24KICAgICAgICB2YXJpYWJsZTsgaXQgaXMgYSBuby1vcCBpZiBubyB0aHJlYWRzIGFyZSB3YWl0aW5nLgoKICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc2VsZi5faXNfb3duZWQoKToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3Qgbm90aWZ5IG9uIHVuLWFjcXVpcmVkIGxvY2siKQogICAgICAgIHdhaXRlcnMgPSBzZWxmLl93YWl0ZXJzCiAgICAgICAgd2hpbGUgd2FpdGVycyBhbmQgbiA+IDA6CiAgICAgICAgICAgIHdhaXRlciA9IHdhaXRlcnNbMF0KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2FpdGVyLnJlbGVhc2UoKQogICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgogICAgICAgICAgICAgICAgIyBnaC05MjUzMDogVGhlIHByZXZpb3VzIGNhbGwgb2Ygbm90aWZ5KCkgcmVsZWFzZWQgdGhlIGxvY2ssCiAgICAgICAgICAgICAgICAjIGJ1dCB3YXMgaW50ZXJydXB0ZWQgYmVmb3JlIHJlbW92aW5nIGl0IGZyb20gdGhlIHF1ZXVlLgogICAgICAgICAgICAgICAgIyBJdCBjYW4gaGFwcGVuIGlmIGEgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICMgbGlrZSBDVFJMK0Mgd2hpY2ggcmFpc2VzIEtleWJvYXJkSW50ZXJydXB0LgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbiAtPSAxCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdhaXRlcnMucmVtb3ZlKHdhaXRlcikKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCgogICAgZGVmIG5vdGlmeV9hbGwoc2VsZik6CiAgICAgICAgIiIiV2FrZSB1cCBhbGwgdGhyZWFkcyB3YWl0aW5nIG9uIHRoaXMgY29uZGl0aW9uLgoKICAgICAgICBJZiB0aGUgY2FsbGluZyB0aHJlYWQgaGFzIG5vdCBhY3F1aXJlZCB0aGUgbG9jayB3aGVuIHRoaXMgbWV0aG9kCiAgICAgICAgaXMgY2FsbGVkLCBhIFJ1bnRpbWVFcnJvciBpcyByYWlzZWQuCgogICAgICAgICIiIgogICAgICAgIHNlbGYubm90aWZ5KGxlbihzZWxmLl93YWl0ZXJzKSkKCiAgICBkZWYgbm90aWZ5QWxsKHNlbGYpOgogICAgICAgICIiIldha2UgdXAgYWxsIHRocmVhZHMgd2FpdGluZyBvbiB0aGlzIGNvbmRpdGlvbi4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlIG5vdGlmeV9hbGwoKSBpbnN0ZWFkLgoKICAgICAgICAiIiIKICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICB3YXJuaW5ncy53YXJuKCdub3RpZnlBbGwoKSBpcyBkZXByZWNhdGVkLCB1c2Ugbm90aWZ5X2FsbCgpIGluc3RlYWQnLAogICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgc2VsZi5ub3RpZnlfYWxsKCkKCgpjbGFzcyBTZW1hcGhvcmU6CiAgICAiIiJUaGlzIGNsYXNzIGltcGxlbWVudHMgc2VtYXBob3JlIG9iamVjdHMuCgogICAgU2VtYXBob3JlcyBtYW5hZ2UgYSBjb3VudGVyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHJlbGVhc2UoKSBjYWxscyBtaW51cwogICAgdGhlIG51bWJlciBvZiBhY3F1aXJlKCkgY2FsbHMsIHBsdXMgYW4gaW5pdGlhbCB2YWx1ZS4gVGhlIGFjcXVpcmUoKSBtZXRob2QKICAgIGJsb2NrcyBpZiBuZWNlc3NhcnkgdW50aWwgaXQgY2FuIHJldHVybiB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlcgogICAgbmVnYXRpdmUuIElmIG5vdCBnaXZlbiwgdmFsdWUgZGVmYXVsdHMgdG8gMS4KCiAgICAiIiIKCiAgICAjIEFmdGVyIFRpbSBQZXRlcnMnIHNlbWFwaG9yZSBjbGFzcywgYnV0IG5vdCBxdWl0ZSB0aGUgc2FtZSAobm8gbWF4aW11bSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CiAgICAgICAgaWYgdmFsdWUgPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZW1hcGhvcmUgaW5pdGlhbCB2YWx1ZSBtdXN0IGJlID49IDAiKQogICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsdWUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KICAgICAgICByZXR1cm4gKGYiPHtjbHMuX19tb2R1bGVfX30ue2Nscy5fX3F1YWxuYW1lX199IGF0IHtpZChzZWxmKTojeH06IgogICAgICAgICAgICAgICAgZiIgdmFsdWU9e3NlbGYuX3ZhbHVlfT4iKQoKICAgIGRlZiBhY3F1aXJlKHNlbGYsIGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIiIiQWNxdWlyZSBhIHNlbWFwaG9yZSwgZGVjcmVtZW50aW5nIHRoZSBpbnRlcm5hbCBjb3VudGVyIGJ5IG9uZS4KCiAgICAgICAgV2hlbiBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzOiBpZiB0aGUgaW50ZXJuYWwgY291bnRlciBpcyBsYXJnZXIgdGhhbgogICAgICAgIHplcm8gb24gZW50cnksIGRlY3JlbWVudCBpdCBieSBvbmUgYW5kIHJldHVybiBpbW1lZGlhdGVseS4gSWYgaXQgaXMgemVybwogICAgICAgIG9uIGVudHJ5LCBibG9jaywgd2FpdGluZyB1bnRpbCBzb21lIG90aGVyIHRocmVhZCBoYXMgY2FsbGVkIHJlbGVhc2UoKSB0bwogICAgICAgIG1ha2UgaXQgbGFyZ2VyIHRoYW4gemVyby4gVGhpcyBpcyBkb25lIHdpdGggcHJvcGVyIGludGVybG9ja2luZyBzbyB0aGF0CiAgICAgICAgaWYgbXVsdGlwbGUgYWNxdWlyZSgpIGNhbGxzIGFyZSBibG9ja2VkLCByZWxlYXNlKCkgd2lsbCB3YWtlIGV4YWN0bHkgb25lCiAgICAgICAgb2YgdGhlbSB1cC4gVGhlIGltcGxlbWVudGF0aW9uIG1heSBwaWNrIG9uZSBhdCByYW5kb20sIHNvIHRoZSBvcmRlciBpbgogICAgICAgIHdoaWNoIGJsb2NrZWQgdGhyZWFkcyBhcmUgYXdha2VuZWQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24uIFRoZXJlIGlzIG5vCiAgICAgICAgcmV0dXJuIHZhbHVlIGluIHRoaXMgY2FzZS4KCiAgICAgICAgV2hlbiBpbnZva2VkIHdpdGggYmxvY2tpbmcgc2V0IHRvIHRydWUsIGRvIHRoZSBzYW1lIHRoaW5nIGFzIHdoZW4gY2FsbGVkCiAgICAgICAgd2l0aG91dCBhcmd1bWVudHMsIGFuZCByZXR1cm4gdHJ1ZS4KCiAgICAgICAgV2hlbiBpbnZva2VkIHdpdGggYmxvY2tpbmcgc2V0IHRvIGZhbHNlLCBkbyBub3QgYmxvY2suIElmIGEgY2FsbCB3aXRob3V0CiAgICAgICAgYW4gYXJndW1lbnQgd291bGQgYmxvY2ssIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlLCBkbyB0aGUKICAgICAgICBzYW1lIHRoaW5nIGFzIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCgogICAgICAgIFdoZW4gaW52b2tlZCB3aXRoIGEgdGltZW91dCBvdGhlciB0aGFuIE5vbmUsIGl0IHdpbGwgYmxvY2sgZm9yIGF0CiAgICAgICAgbW9zdCB0aW1lb3V0IHNlY29uZHMuICBJZiBhY3F1aXJlIGRvZXMgbm90IGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSBpbgogICAgICAgIHRoYXQgaW50ZXJ2YWwsIHJldHVybiBmYWxzZS4gIFJldHVybiB0cnVlIG90aGVyd2lzZS4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IGJsb2NraW5nIGFuZCB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBzcGVjaWZ5IHRpbWVvdXQgZm9yIG5vbi1ibG9ja2luZyBhY3F1aXJlIikKICAgICAgICByYyA9IEZhbHNlCiAgICAgICAgZW5kdGltZSA9IE5vbmUKICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgIHdoaWxlIHNlbGYuX3ZhbHVlID09IDA6CiAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZW5kdGltZSAtIF90aW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8PSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCh0aW1lb3V0KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fdmFsdWUgLT0gMQogICAgICAgICAgICAgICAgcmMgPSBUcnVlCiAgICAgICAgcmV0dXJuIHJjCgogICAgX19lbnRlcl9fID0gYWNxdWlyZQoKICAgIGRlZiByZWxlYXNlKHNlbGYsIG49MSk6CiAgICAgICAgIiIiUmVsZWFzZSBhIHNlbWFwaG9yZSwgaW5jcmVtZW50aW5nIHRoZSBpbnRlcm5hbCBjb3VudGVyIGJ5IG9uZSBvciBtb3JlLgoKICAgICAgICBXaGVuIHRoZSBjb3VudGVyIGlzIHplcm8gb24gZW50cnkgYW5kIGFub3RoZXIgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGl0CiAgICAgICAgdG8gYmVjb21lIGxhcmdlciB0aGFuIHplcm8gYWdhaW4sIHdha2UgdXAgdGhhdCB0aHJlYWQuCgogICAgICAgICIiIgogICAgICAgIGlmIG4gPCAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduIG11c3QgYmUgb25lIG9yIG1vcmUnKQogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgc2VsZi5fdmFsdWUgKz0gbgogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKCiAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgogICAgICAgIHNlbGYucmVsZWFzZSgpCgoKY2xhc3MgQm91bmRlZFNlbWFwaG9yZShTZW1hcGhvcmUpOgogICAgIiIiSW1wbGVtZW50cyBhIGJvdW5kZWQgc2VtYXBob3JlLgoKICAgIEEgYm91bmRlZCBzZW1hcGhvcmUgY2hlY2tzIHRvIG1ha2Ugc3VyZSBpdHMgY3VycmVudCB2YWx1ZSBkb2Vzbid0IGV4Y2VlZCBpdHMKICAgIGluaXRpYWwgdmFsdWUuIElmIGl0IGRvZXMsIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiBJbiBtb3N0IHNpdHVhdGlvbnMKICAgIHNlbWFwaG9yZXMgYXJlIHVzZWQgdG8gZ3VhcmQgcmVzb3VyY2VzIHdpdGggbGltaXRlZCBjYXBhY2l0eS4KCiAgICBJZiB0aGUgc2VtYXBob3JlIGlzIHJlbGVhc2VkIHRvbyBtYW55IHRpbWVzIGl0J3MgYSBzaWduIG9mIGEgYnVnLiBJZiBub3QKICAgIGdpdmVuLCB2YWx1ZSBkZWZhdWx0cyB0byAxLgoKICAgIExpa2UgcmVndWxhciBzZW1hcGhvcmVzLCBib3VuZGVkIHNlbWFwaG9yZXMgbWFuYWdlIGEgY291bnRlciByZXByZXNlbnRpbmcKICAgIHRoZSBudW1iZXIgb2YgcmVsZWFzZSgpIGNhbGxzIG1pbnVzIHRoZSBudW1iZXIgb2YgYWNxdWlyZSgpIGNhbGxzLCBwbHVzIGFuCiAgICBpbml0aWFsIHZhbHVlLiBUaGUgYWNxdWlyZSgpIG1ldGhvZCBibG9ja3MgaWYgbmVjZXNzYXJ5IHVudGlsIGl0IGNhbiByZXR1cm4KICAgIHdpdGhvdXQgbWFraW5nIHRoZSBjb3VudGVyIG5lZ2F0aXZlLiBJZiBub3QgZ2l2ZW4sIHZhbHVlIGRlZmF1bHRzIHRvIDEuCgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPTEpOgogICAgICAgIFNlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSkKICAgICAgICBzZWxmLl9pbml0aWFsX3ZhbHVlID0gdmFsdWUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KICAgICAgICByZXR1cm4gKGYiPHtjbHMuX19tb2R1bGVfX30ue2Nscy5fX3F1YWxuYW1lX199IGF0IHtpZChzZWxmKTojeH06IgogICAgICAgICAgICAgICAgZiIgdmFsdWU9e3NlbGYuX3ZhbHVlfS97c2VsZi5faW5pdGlhbF92YWx1ZX0+IikKCiAgICBkZWYgcmVsZWFzZShzZWxmLCBuPTEpOgogICAgICAgICIiIlJlbGVhc2UgYSBzZW1hcGhvcmUsIGluY3JlbWVudGluZyB0aGUgaW50ZXJuYWwgY291bnRlciBieSBvbmUgb3IgbW9yZS4KCiAgICAgICAgV2hlbiB0aGUgY291bnRlciBpcyB6ZXJvIG9uIGVudHJ5IGFuZCBhbm90aGVyIHRocmVhZCBpcyB3YWl0aW5nIGZvciBpdAogICAgICAgIHRvIGJlY29tZSBsYXJnZXIgdGhhbiB6ZXJvIGFnYWluLCB3YWtlIHVwIHRoYXQgdGhyZWFkLgoKICAgICAgICBJZiB0aGUgbnVtYmVyIG9mIHJlbGVhc2VzIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBhY3F1aXJlcywKICAgICAgICByYWlzZSBhIFZhbHVlRXJyb3IuCgogICAgICAgICIiIgogICAgICAgIGlmIG4gPCAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduIG11c3QgYmUgb25lIG9yIG1vcmUnKQogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgaWYgc2VsZi5fdmFsdWUgKyBuID4gc2VsZi5faW5pdGlhbF92YWx1ZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNlbWFwaG9yZSByZWxlYXNlZCB0b28gbWFueSB0aW1lcyIpCiAgICAgICAgICAgIHNlbGYuX3ZhbHVlICs9IG4KICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCgoKY2xhc3MgRXZlbnQ6CiAgICAiIiJDbGFzcyBpbXBsZW1lbnRpbmcgZXZlbnQgb2JqZWN0cy4KCiAgICBFdmVudHMgbWFuYWdlIGEgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdHJ1ZSB3aXRoIHRoZSBzZXQoKSBtZXRob2QgYW5kIHJlc2V0CiAgICB0byBmYWxzZSB3aXRoIHRoZSBjbGVhcigpIG1ldGhvZC4gVGhlIHdhaXQoKSBtZXRob2QgYmxvY2tzIHVudGlsIHRoZSBmbGFnIGlzCiAgICB0cnVlLiAgVGhlIGZsYWcgaXMgaW5pdGlhbGx5IGZhbHNlLgoKICAgICIiIgoKICAgICMgQWZ0ZXIgVGltIFBldGVycycgZXZlbnQgY2xhc3MgKHdpdGhvdXQgaXNfcG9zdGVkKCkpCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgIHNlbGYuX2ZsYWcgPSBGYWxzZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBjbHMgPSBzZWxmLl9fY2xhc3NfXwogICAgICAgIHN0YXR1cyA9ICdzZXQnIGlmIHNlbGYuX2ZsYWcgZWxzZSAndW5zZXQnCiAgICAgICAgcmV0dXJuIGYiPHtjbHMuX19tb2R1bGVfX30ue2Nscy5fX3F1YWxuYW1lX199IGF0IHtpZChzZWxmKTojeH06IHtzdGF0dXN9PiIKCiAgICBkZWYgX2F0X2ZvcmtfcmVpbml0KHNlbGYpOgogICAgICAgICMgUHJpdmF0ZSBtZXRob2QgY2FsbGVkIGJ5IFRocmVhZC5fcmVzZXRfaW50ZXJuYWxfbG9ja3MoKQogICAgICAgIHNlbGYuX2NvbmQuX2F0X2ZvcmtfcmVpbml0KCkKCiAgICBkZWYgaXNfc2V0KHNlbGYpOgogICAgICAgICIiIlJldHVybiB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBpbnRlcm5hbCBmbGFnIGlzIHRydWUuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2ZsYWcKCiAgICBkZWYgaXNTZXQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGludGVybmFsIGZsYWcgaXMgdHJ1ZS4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlIGlzX3NldCgpIGluc3RlYWQuCgogICAgICAgICIiIgogICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgIHdhcm5pbmdzLndhcm4oJ2lzU2V0KCkgaXMgZGVwcmVjYXRlZCwgdXNlIGlzX3NldCgpIGluc3RlYWQnLAogICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgcmV0dXJuIHNlbGYuaXNfc2V0KCkKCiAgICBkZWYgc2V0KHNlbGYpOgogICAgICAgICIiIlNldCB0aGUgaW50ZXJuYWwgZmxhZyB0byB0cnVlLgoKICAgICAgICBBbGwgdGhyZWFkcyB3YWl0aW5nIGZvciBpdCB0byBiZWNvbWUgdHJ1ZSBhcmUgYXdha2VuZWQuIFRocmVhZHMKICAgICAgICB0aGF0IGNhbGwgd2FpdCgpIG9uY2UgdGhlIGZsYWcgaXMgdHJ1ZSB3aWxsIG5vdCBibG9jayBhdCBhbGwuCgogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgc2VsZi5fZmxhZyA9IFRydWUKICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnlfYWxsKCkKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgIiIiUmVzZXQgdGhlIGludGVybmFsIGZsYWcgdG8gZmFsc2UuCgogICAgICAgIFN1YnNlcXVlbnRseSwgdGhyZWFkcyBjYWxsaW5nIHdhaXQoKSB3aWxsIGJsb2NrIHVudGlsIHNldCgpIGlzIGNhbGxlZCB0bwogICAgICAgIHNldCB0aGUgaW50ZXJuYWwgZmxhZyB0byB0cnVlIGFnYWluLgoKICAgICAgICAiIiIKICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgIHNlbGYuX2ZsYWcgPSBGYWxzZQoKICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIiIiQmxvY2sgdW50aWwgdGhlIGludGVybmFsIGZsYWcgaXMgdHJ1ZS4KCiAgICAgICAgSWYgdGhlIGludGVybmFsIGZsYWcgaXMgdHJ1ZSBvbiBlbnRyeSwgcmV0dXJuIGltbWVkaWF0ZWx5LiBPdGhlcndpc2UsCiAgICAgICAgYmxvY2sgdW50aWwgYW5vdGhlciB0aHJlYWQgY2FsbHMgc2V0KCkgdG8gc2V0IHRoZSBmbGFnIHRvIHRydWUsIG9yIHVudGlsCiAgICAgICAgdGhlIG9wdGlvbmFsIHRpbWVvdXQgb2NjdXJzLgoKICAgICAgICBXaGVuIHRoZSB0aW1lb3V0IGFyZ3VtZW50IGlzIHByZXNlbnQgYW5kIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYQogICAgICAgIGZsb2F0aW5nIHBvaW50IG51bWJlciBzcGVjaWZ5aW5nIGEgdGltZW91dCBmb3IgdGhlIG9wZXJhdGlvbiBpbiBzZWNvbmRzCiAgICAgICAgKG9yIGZyYWN0aW9ucyB0aGVyZW9mKS4KCiAgICAgICAgVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgaW50ZXJuYWwgZmxhZyBvbiBleGl0LCBzbyBpdCB3aWxsIGFsd2F5cyByZXR1cm4KICAgICAgICBUcnVlIGV4Y2VwdCBpZiBhIHRpbWVvdXQgaXMgZ2l2ZW4gYW5kIHRoZSBvcGVyYXRpb24gdGltZXMgb3V0LgoKICAgICAgICAiIiIKICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgIHNpZ25hbGVkID0gc2VsZi5fZmxhZwogICAgICAgICAgICBpZiBub3Qgc2lnbmFsZWQ6CiAgICAgICAgICAgICAgICBzaWduYWxlZCA9IHNlbGYuX2NvbmQud2FpdCh0aW1lb3V0KQogICAgICAgICAgICByZXR1cm4gc2lnbmFsZWQKCgojIEEgYmFycmllciBjbGFzcy4gIEluc3BpcmVkIGluIHBhcnQgYnkgdGhlIHB0aHJlYWRfYmFycmllcl8qIGFwaSBhbmQKIyB0aGUgQ3ljbGljQmFycmllciBjbGFzcyBmcm9tIEphdmEuICBTZWUKIyBodHRwOi8vc291cmNld2FyZS5vcmcvcHRocmVhZHMtd2luMzIvbWFudWFsL3B0aHJlYWRfYmFycmllcl9pbml0Lmh0bWwgYW5kCiMgaHR0cDovL2phdmEuc3VuLmNvbS9qMnNlLzEuNS4wL2RvY3MvYXBpL2phdmEvdXRpbC9jb25jdXJyZW50LwojICAgICAgICBDeWNsaWNCYXJyaWVyLmh0bWwKIyBmb3IgaW5mb3JtYXRpb24uCiMgV2UgbWFpbnRhaW4gdHdvIG1haW4gc3RhdGVzLCAnZmlsbGluZycgYW5kICdkcmFpbmluZycgZW5hYmxpbmcgdGhlIGJhcnJpZXIKIyB0byBiZSBjeWNsaWMuICBUaHJlYWRzIGFyZSBub3QgYWxsb3dlZCBpbnRvIGl0IHVudGlsIGl0IGhhcyBmdWxseSBkcmFpbmVkCiMgc2luY2UgdGhlIHByZXZpb3VzIGN5Y2xlLiAgSW4gYWRkaXRpb24sIGEgJ3Jlc2V0dGluZycgc3RhdGUgZXhpc3RzIHdoaWNoIGlzCiMgc2ltaWxhciB0byAnZHJhaW5pbmcnIGV4Y2VwdCB0aGF0IHRocmVhZHMgbGVhdmUgd2l0aCBhIEJyb2tlbkJhcnJpZXJFcnJvciwKIyBhbmQgYSAnYnJva2VuJyBzdGF0ZSBpbiB3aGljaCBhbGwgdGhyZWFkcyBnZXQgdGhlIGV4Y2VwdGlvbi4KY2xhc3MgQmFycmllcjoKICAgICIiIkltcGxlbWVudHMgYSBCYXJyaWVyLgoKICAgIFVzZWZ1bCBmb3Igc3luY2hyb25pemluZyBhIGZpeGVkIG51bWJlciBvZiB0aHJlYWRzIGF0IGtub3duIHN5bmNocm9uaXphdGlvbgogICAgcG9pbnRzLiAgVGhyZWFkcyBibG9jayBvbiAnd2FpdCgpJyBhbmQgYXJlIHNpbXVsdGFuZW91c2x5IGF3b2tlbiBvbmNlIHRoZXkKICAgIGhhdmUgYWxsIG1hZGUgdGhhdCBjYWxsLgoKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAiIiJDcmVhdGUgYSBiYXJyaWVyLCBpbml0aWFsaXNlZCB0byAncGFydGllcycgdGhyZWFkcy4KCiAgICAgICAgJ2FjdGlvbicgaXMgYSBjYWxsYWJsZSB3aGljaCwgd2hlbiBzdXBwbGllZCwgd2lsbCBiZSBjYWxsZWQgYnkgb25lIG9mCiAgICAgICAgdGhlIHRocmVhZHMgYWZ0ZXIgdGhleSBoYXZlIGFsbCBlbnRlcmVkIHRoZSBiYXJyaWVyIGFuZCBqdXN0IHByaW9yIHRvCiAgICAgICAgcmVsZWFzaW5nIHRoZW0gYWxsLiBJZiBhICd0aW1lb3V0JyBpcyBwcm92aWRlZCwgaXQgaXMgdXNlZCBhcyB0aGUKICAgICAgICBkZWZhdWx0IGZvciBhbGwgc3Vic2VxdWVudCAnd2FpdCgpJyBjYWxscy4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgc2VsZi5fYWN0aW9uID0gYWN0aW9uCiAgICAgICAgc2VsZi5fdGltZW91dCA9IHRpbWVvdXQKICAgICAgICBzZWxmLl9wYXJ0aWVzID0gcGFydGllcwogICAgICAgIHNlbGYuX3N0YXRlID0gMCAgIyAwIGZpbGxpbmcsIDEgZHJhaW5pbmcsIC0xIHJlc2V0dGluZywgLTIgYnJva2VuCiAgICAgICAgc2VsZi5fY291bnQgPSAwCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCiAgICAgICAgaWYgc2VsZi5icm9rZW46CiAgICAgICAgICAgIHJldHVybiBmIjx7Y2xzLl9fbW9kdWxlX199LntjbHMuX19xdWFsbmFtZV9ffSBhdCB7aWQoc2VsZik6I3h9OiBicm9rZW4+IgogICAgICAgIHJldHVybiAoZiI8e2Nscy5fX21vZHVsZV9ffS57Y2xzLl9fcXVhbG5hbWVfX30gYXQge2lkKHNlbGYpOiN4fToiCiAgICAgICAgICAgICAgICBmIiB3YWl0ZXJzPXtzZWxmLm5fd2FpdGluZ30ve3NlbGYucGFydGllc30+IikKCiAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICIiIldhaXQgZm9yIHRoZSBiYXJyaWVyLgoKICAgICAgICBXaGVuIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRocmVhZHMgaGF2ZSBzdGFydGVkIHdhaXRpbmcsIHRoZXkgYXJlIGFsbAogICAgICAgIHNpbXVsdGFuZW91c2x5IGF3b2tlbi4gSWYgYW4gJ2FjdGlvbicgd2FzIHByb3ZpZGVkIGZvciB0aGUgYmFycmllciwgb25lCiAgICAgICAgb2YgdGhlIHRocmVhZHMgd2lsbCBoYXZlIGV4ZWN1dGVkIHRoYXQgY2FsbGJhY2sgcHJpb3IgdG8gcmV0dXJuaW5nLgogICAgICAgIFJldHVybnMgYW4gaW5kaXZpZHVhbCBpbmRleCBudW1iZXIgZnJvbSAwIHRvICdwYXJ0aWVzLTEnLgoKICAgICAgICAiIiIKICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLl90aW1lb3V0CiAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICBzZWxmLl9lbnRlcigpICMgQmxvY2sgd2hpbGUgdGhlIGJhcnJpZXIgZHJhaW5zLgogICAgICAgICAgICBpbmRleCA9IHNlbGYuX2NvdW50CiAgICAgICAgICAgIHNlbGYuX2NvdW50ICs9IDEKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgaW5kZXggKyAxID09IHNlbGYuX3BhcnRpZXM6CiAgICAgICAgICAgICAgICAgICAgIyBXZSByZWxlYXNlIHRoZSBiYXJyaWVyCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVsZWFzZSgpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgV2Ugd2FpdCB1bnRpbCBzb21lb25lIHJlbGVhc2VzIHVzCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2FpdCh0aW1lb3V0KQogICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4CiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLl9jb3VudCAtPSAxCiAgICAgICAgICAgICAgICAjIFdha2UgdXAgYW55IHRocmVhZHMgd2FpdGluZyBmb3IgYmFycmllciB0byBkcmFpbi4KICAgICAgICAgICAgICAgIHNlbGYuX2V4aXQoKQoKICAgICMgQmxvY2sgdW50aWwgdGhlIGJhcnJpZXIgaXMgcmVhZHkgZm9yIHVzLCBvciByYWlzZSBhbiBleGNlcHRpb24KICAgICMgaWYgaXQgaXMgYnJva2VuLgogICAgZGVmIF9lbnRlcihzZWxmKToKICAgICAgICB3aGlsZSBzZWxmLl9zdGF0ZSBpbiAoLTEsIDEpOgogICAgICAgICAgICAjIEl0IGlzIGRyYWluaW5nIG9yIHJlc2V0dGluZywgd2FpdCB1bnRpbCBkb25lCiAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCgpCiAgICAgICAgI3NlZSBpZiB0aGUgYmFycmllciBpcyBpbiBhIGJyb2tlbiBzdGF0ZQogICAgICAgIGlmIHNlbGYuX3N0YXRlIDwgMDoKICAgICAgICAgICAgcmFpc2UgQnJva2VuQmFycmllckVycm9yCiAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IDAKCiAgICAjIE9wdGlvbmFsbHkgcnVuIHRoZSAnYWN0aW9uJyBhbmQgcmVsZWFzZSB0aGUgdGhyZWFkcyB3YWl0aW5nCiAgICAjIGluIHRoZSBiYXJyaWVyLgogICAgZGVmIF9yZWxlYXNlKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5fYWN0aW9uOgogICAgICAgICAgICAgICAgc2VsZi5fYWN0aW9uKCkKICAgICAgICAgICAgIyBlbnRlciBkcmFpbmluZyBzdGF0ZQogICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IDEKICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnlfYWxsKCkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICNhbiBleGNlcHRpb24gZHVyaW5nIHRoZSBfYWN0aW9uIGhhbmRsZXIuICBCcmVhayBhbmQgcmVyYWlzZQogICAgICAgICAgICBzZWxmLl9icmVhaygpCiAgICAgICAgICAgIHJhaXNlCgogICAgIyBXYWl0IGluIHRoZSBiYXJyaWVyIHVudGlsIHdlIGFyZSByZWxlYXNlZC4gIFJhaXNlIGFuIGV4Y2VwdGlvbgogICAgIyBpZiB0aGUgYmFycmllciBpcyByZXNldCBvciBicm9rZW4uCiAgICBkZWYgX3dhaXQoc2VsZiwgdGltZW91dCk6CiAgICAgICAgaWYgbm90IHNlbGYuX2NvbmQud2FpdF9mb3IobGFtYmRhIDogc2VsZi5fc3RhdGUgIT0gMCwgdGltZW91dCk6CiAgICAgICAgICAgICN0aW1lZCBvdXQuICBCcmVhayB0aGUgYmFycmllcgogICAgICAgICAgICBzZWxmLl9icmVhaygpCiAgICAgICAgICAgIHJhaXNlIEJyb2tlbkJhcnJpZXJFcnJvcgogICAgICAgIGlmIHNlbGYuX3N0YXRlIDwgMDoKICAgICAgICAgICAgcmFpc2UgQnJva2VuQmFycmllckVycm9yCiAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IDEKCiAgICAjIElmIHdlIGFyZSB0aGUgbGFzdCB0aHJlYWQgdG8gZXhpdCB0aGUgYmFycmllciwgc2lnbmFsIGFueSB0aHJlYWRzCiAgICAjIHdhaXRpbmcgZm9yIHRoZSBiYXJyaWVyIHRvIGRyYWluLgogICAgZGVmIF9leGl0KHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2NvdW50ID09IDA6CiAgICAgICAgICAgIGlmIHNlbGYuX3N0YXRlIGluICgtMSwgMSk6CiAgICAgICAgICAgICAgICAjcmVzZXR0aW5nIG9yIGRyYWluaW5nCiAgICAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IDAKICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5X2FsbCgpCgogICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICIiIlJlc2V0IHRoZSBiYXJyaWVyIHRvIHRoZSBpbml0aWFsIHN0YXRlLgoKICAgICAgICBBbnkgdGhyZWFkcyBjdXJyZW50bHkgd2FpdGluZyB3aWxsIGdldCB0aGUgQnJva2VuQmFycmllciBleGNlcHRpb24KICAgICAgICByYWlzZWQuCgogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgaWYgc2VsZi5fY291bnQgPiAwOgogICAgICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gMDoKICAgICAgICAgICAgICAgICAgICAjcmVzZXQgdGhlIGJhcnJpZXIsIHdha2luZyB1cCB0aHJlYWRzCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSAtMQogICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9zdGF0ZSA9PSAtMjoKICAgICAgICAgICAgICAgICAgICAjd2FzIGJyb2tlbiwgc2V0IGl0IHRvIHJlc2V0IHN0YXRlCiAgICAgICAgICAgICAgICAgICAgI3doaWNoIGNsZWFycyB3aGVuIHRoZSBsYXN0IHRocmVhZCBleGl0cwogICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlID0gLTEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlID0gMAogICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeV9hbGwoKQoKICAgIGRlZiBhYm9ydChzZWxmKToKICAgICAgICAiIiJQbGFjZSB0aGUgYmFycmllciBpbnRvIGEgJ2Jyb2tlbicgc3RhdGUuCgogICAgICAgIFVzZWZ1bCBpbiBjYXNlIG9mIGVycm9yLiAgQW55IGN1cnJlbnRseSB3YWl0aW5nIHRocmVhZHMgYW5kIHRocmVhZHMKICAgICAgICBhdHRlbXB0aW5nIHRvICd3YWl0KCknIHdpbGwgaGF2ZSBCcm9rZW5CYXJyaWVyRXJyb3IgcmFpc2VkLgoKICAgICAgICAiIiIKICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgIHNlbGYuX2JyZWFrKCkKCiAgICBkZWYgX2JyZWFrKHNlbGYpOgogICAgICAgICMgQW4gaW50ZXJuYWwgZXJyb3Igd2FzIGRldGVjdGVkLiAgVGhlIGJhcnJpZXIgaXMgc2V0IHRvCiAgICAgICAgIyBhIGJyb2tlbiBzdGF0ZSBhbGwgcGFydGllcyBhd2FrZW5lZC4KICAgICAgICBzZWxmLl9zdGF0ZSA9IC0yCiAgICAgICAgc2VsZi5fY29uZC5ub3RpZnlfYWxsKCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBwYXJ0aWVzKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHRocmVhZHMgcmVxdWlyZWQgdG8gdHJpcCB0aGUgYmFycmllci4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fcGFydGllcwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5fd2FpdGluZyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiB0aHJlYWRzIGN1cnJlbnRseSB3YWl0aW5nIGF0IHRoZSBiYXJyaWVyLiIiIgogICAgICAgICMgV2UgZG9uJ3QgbmVlZCBzeW5jaHJvbml6YXRpb24gaGVyZSBzaW5jZSB0aGlzIGlzIGFuIGVwaGVtZXJhbCByZXN1bHQKICAgICAgICAjIGFueXdheS4gIEl0IHJldHVybnMgdGhlIGNvcnJlY3QgdmFsdWUgaW4gdGhlIHN0ZWFkeSBzdGF0ZS4KICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSAwOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fY291bnQKICAgICAgICByZXR1cm4gMAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGJyb2tlbihzZWxmKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgYmFycmllciBpcyBpbiBhIGJyb2tlbiBzdGF0ZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGUgPT0gLTIKCiMgZXhjZXB0aW9uIHJhaXNlZCBieSB0aGUgQmFycmllciBjbGFzcwpjbGFzcyBCcm9rZW5CYXJyaWVyRXJyb3IoUnVudGltZUVycm9yKToKICAgIHBhc3MKCgojIEhlbHBlciB0byBnZW5lcmF0ZSBuZXcgdGhyZWFkIG5hbWVzCl9jb3VudGVyID0gX2NvdW50KDEpLl9fbmV4dF9fCmRlZiBfbmV3bmFtZShuYW1lX3RlbXBsYXRlKToKICAgIHJldHVybiBuYW1lX3RlbXBsYXRlICUgX2NvdW50ZXIoKQoKIyBBY3RpdmUgdGhyZWFkIGFkbWluaXN0cmF0aW9uLgojCiMgYnBvLTQ0NDIyOiBVc2UgYSByZWVudHJhbnQgbG9jayB0byBhbGxvdyByZWVudHJhbnQgY2FsbHMgdG8gZnVuY3Rpb25zIGxpa2UKIyB0aHJlYWRpbmcuZW51bWVyYXRlKCkuCl9hY3RpdmVfbGltYm9fbG9jayA9IFJMb2NrKCkKX2FjdGl2ZSA9IHt9ICAgICMgbWFwcyB0aHJlYWQgaWQgdG8gVGhyZWFkIG9iamVjdApfbGltYm8gPSB7fQpfZGFuZ2xpbmcgPSBXZWFrU2V0KCkKCiMgU2V0IG9mIFRocmVhZC5fdHN0YXRlX2xvY2sgbG9ja3Mgb2Ygbm9uLWRhZW1vbiB0aHJlYWRzIHVzZWQgYnkgX3NodXRkb3duKCkKIyB0byB3YWl0IHVudGlsIGFsbCBQeXRob24gdGhyZWFkIHN0YXRlcyBnZXQgZGVsZXRlZDoKIyBzZWUgVGhyZWFkLl9zZXRfdHN0YXRlX2xvY2soKS4KX3NodXRkb3duX2xvY2tzX2xvY2sgPSBfYWxsb2NhdGVfbG9jaygpCl9zaHV0ZG93bl9sb2NrcyA9IHNldCgpCgpkZWYgX21haW50YWluX3NodXRkb3duX2xvY2tzKCk6CiAgICAiIiIKICAgIERyb3AgYW55IHNodXRkb3duIGxvY2tzIHRoYXQgZG9uJ3QgY29ycmVzcG9uZCB0byBydW5uaW5nIHRocmVhZHMgYW55bW9yZS4KCiAgICBDYWxsaW5nIHRoaXMgZnJvbSB0aW1lIHRvIHRpbWUgYXZvaWRzIGFuIGV2ZXItZ3Jvd2luZyBfc2h1dGRvd25fbG9ja3MKICAgIHNldCB3aGVuIFRocmVhZCBvYmplY3RzIGFyZSBub3Qgam9pbmVkIGV4cGxpY2l0bHkuIFNlZSBicG8tMzc3ODguCgogICAgVGhpcyBtdXN0IGJlIGNhbGxlZCB3aXRoIF9zaHV0ZG93bl9sb2Nrc19sb2NrIGFjcXVpcmVkLgogICAgIiIiCiAgICAjIElmIGEgbG9jayB3YXMgcmVsZWFzZWQsIHRoZSBjb3JyZXNwb25kaW5nIHRocmVhZCBoYXMgZXhpdGVkCiAgICB0b19yZW1vdmUgPSBbbG9jayBmb3IgbG9jayBpbiBfc2h1dGRvd25fbG9ja3MgaWYgbm90IGxvY2subG9ja2VkKCldCiAgICBfc2h1dGRvd25fbG9ja3MuZGlmZmVyZW5jZV91cGRhdGUodG9fcmVtb3ZlKQoKCiMgTWFpbiBjbGFzcyBmb3IgdGhyZWFkcwoKY2xhc3MgVGhyZWFkOgogICAgIiIiQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB0aHJlYWQgb2YgY29udHJvbC4KCiAgICBUaGlzIGNsYXNzIGNhbiBiZSBzYWZlbHkgc3ViY2xhc3NlZCBpbiBhIGxpbWl0ZWQgZmFzaGlvbi4gVGhlcmUgYXJlIHR3byB3YXlzCiAgICB0byBzcGVjaWZ5IHRoZSBhY3Rpdml0eTogYnkgcGFzc2luZyBhIGNhbGxhYmxlIG9iamVjdCB0byB0aGUgY29uc3RydWN0b3IsIG9yCiAgICBieSBvdmVycmlkaW5nIHRoZSBydW4oKSBtZXRob2QgaW4gYSBzdWJjbGFzcy4KCiAgICAiIiIKCiAgICBfaW5pdGlhbGl6ZWQgPSBGYWxzZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLAogICAgICAgICAgICAgICAgIGFyZ3M9KCksIGt3YXJncz1Ob25lLCAqLCBkYWVtb249Tm9uZSk6CiAgICAgICAgIiIiVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIGJlIGNhbGxlZCB3aXRoIGtleXdvcmQgYXJndW1lbnRzLiBBcmd1bWVudHMgYXJlOgoKICAgICAgICAqZ3JvdXAqIHNob3VsZCBiZSBOb25lOyByZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbiB3aGVuIGEgVGhyZWFkR3JvdXAKICAgICAgICBjbGFzcyBpcyBpbXBsZW1lbnRlZC4KCiAgICAgICAgKnRhcmdldCogaXMgdGhlIGNhbGxhYmxlIG9iamVjdCB0byBiZSBpbnZva2VkIGJ5IHRoZSBydW4oKQogICAgICAgIG1ldGhvZC4gRGVmYXVsdHMgdG8gTm9uZSwgbWVhbmluZyBub3RoaW5nIGlzIGNhbGxlZC4KCiAgICAgICAgKm5hbWUqIGlzIHRoZSB0aHJlYWQgbmFtZS4gQnkgZGVmYXVsdCwgYSB1bmlxdWUgbmFtZSBpcyBjb25zdHJ1Y3RlZCBvZgogICAgICAgIHRoZSBmb3JtICJUaHJlYWQtTiIgd2hlcmUgTiBpcyBhIHNtYWxsIGRlY2ltYWwgbnVtYmVyLgoKICAgICAgICAqYXJncyogaXMgYSBsaXN0IG9yIHR1cGxlIG9mIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiBEZWZhdWx0cyB0byAoKS4KCiAgICAgICAgKmt3YXJncyogaXMgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmQgYXJndW1lbnRzIGZvciB0aGUgdGFyZ2V0CiAgICAgICAgaW52b2NhdGlvbi4gRGVmYXVsdHMgdG8ge30uCgogICAgICAgIElmIGEgc3ViY2xhc3Mgb3ZlcnJpZGVzIHRoZSBjb25zdHJ1Y3RvciwgaXQgbXVzdCBtYWtlIHN1cmUgdG8gaW52b2tlCiAgICAgICAgdGhlIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgKFRocmVhZC5fX2luaXRfXygpKSBiZWZvcmUgZG9pbmcgYW55dGhpbmcKICAgICAgICBlbHNlIHRvIHRoZSB0aHJlYWQuCgogICAgICAgICIiIgogICAgICAgIGFzc2VydCBncm91cCBpcyBOb25lLCAiZ3JvdXAgYXJndW1lbnQgbXVzdCBiZSBOb25lIGZvciBub3ciCiAgICAgICAgaWYga3dhcmdzIGlzIE5vbmU6CiAgICAgICAgICAgIGt3YXJncyA9IHt9CiAgICAgICAgaWYgbmFtZToKICAgICAgICAgICAgbmFtZSA9IHN0cihuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5hbWUgPSBfbmV3bmFtZSgiVGhyZWFkLSVkIikKICAgICAgICAgICAgaWYgdGFyZ2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRhcmdldF9uYW1lID0gdGFyZ2V0Ll9fbmFtZV9fCiAgICAgICAgICAgICAgICAgICAgbmFtZSArPSBmIiAoe3RhcmdldF9uYW1lfSkiCiAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICBzZWxmLl90YXJnZXQgPSB0YXJnZXQKICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgIHNlbGYuX2FyZ3MgPSBhcmdzCiAgICAgICAgc2VsZi5fa3dhcmdzID0ga3dhcmdzCiAgICAgICAgaWYgZGFlbW9uIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9kYWVtb25pYyA9IGRhZW1vbgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gY3VycmVudF90aHJlYWQoKS5kYWVtb24KICAgICAgICBzZWxmLl9pZGVudCA9IE5vbmUKICAgICAgICBpZiBfSEFWRV9USFJFQURfTkFUSVZFX0lEOgogICAgICAgICAgICBzZWxmLl9uYXRpdmVfaWQgPSBOb25lCiAgICAgICAgc2VsZi5fdHN0YXRlX2xvY2sgPSBOb25lCiAgICAgICAgc2VsZi5fc3RhcnRlZCA9IEV2ZW50KCkKICAgICAgICBzZWxmLl9pc19zdG9wcGVkID0gRmFsc2UKICAgICAgICBzZWxmLl9pbml0aWFsaXplZCA9IFRydWUKICAgICAgICAjIENvcHkgb2Ygc3lzLnN0ZGVyciB1c2VkIGJ5IHNlbGYuX2ludm9rZV9leGNlcHRob29rKCkKICAgICAgICBzZWxmLl9zdGRlcnIgPSBfc3lzLnN0ZGVycgogICAgICAgIHNlbGYuX2ludm9rZV9leGNlcHRob29rID0gX21ha2VfaW52b2tlX2V4Y2VwdGhvb2soKQogICAgICAgICMgRm9yIGRlYnVnZ2luZyBhbmQgX2FmdGVyX2ZvcmsoKQogICAgICAgIF9kYW5nbGluZy5hZGQoc2VsZikKCiAgICBkZWYgX3Jlc2V0X2ludGVybmFsX2xvY2tzKHNlbGYsIGlzX2FsaXZlKToKICAgICAgICAjIHByaXZhdGUhICBDYWxsZWQgYnkgX2FmdGVyX2ZvcmsoKSB0byByZXNldCBvdXIgaW50ZXJuYWwgbG9ja3MgYXMKICAgICAgICAjIHRoZXkgbWF5IGJlIGluIGFuIGludmFsaWQgc3RhdGUgbGVhZGluZyB0byBhIGRlYWRsb2NrIG9yIGNyYXNoLgogICAgICAgIHNlbGYuX3N0YXJ0ZWQuX2F0X2ZvcmtfcmVpbml0KCkKICAgICAgICBpZiBpc19hbGl2ZToKICAgICAgICAgICAgIyBicG8tNDIzNTA6IElmIHRoZSBmb3JrIGhhcHBlbnMgd2hlbiB0aGUgdGhyZWFkIGlzIGFscmVhZHkgc3RvcHBlZAogICAgICAgICAgICAjIChleDogYWZ0ZXIgdGhyZWFkaW5nLl9zaHV0ZG93bigpIGhhcyBiZWVuIGNhbGxlZCksIF90c3RhdGVfbG9jawogICAgICAgICAgICAjIGlzIE5vbmUuIERvIG5vdGhpbmcgaW4gdGhpcyBjYXNlLgogICAgICAgICAgICBpZiBzZWxmLl90c3RhdGVfbG9jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX3RzdGF0ZV9sb2NrLl9hdF9mb3JrX3JlaW5pdCgpCiAgICAgICAgICAgICAgICBzZWxmLl90c3RhdGVfbG9jay5hY3F1aXJlKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFRoZSB0aHJlYWQgaXNuJ3QgYWxpdmUgYWZ0ZXIgZm9yazogaXQgZG9lc24ndCBoYXZlIGEgdHN0YXRlCiAgICAgICAgICAgICMgYW55bW9yZS4KICAgICAgICAgICAgc2VsZi5faXNfc3RvcHBlZCA9IFRydWUKICAgICAgICAgICAgc2VsZi5fdHN0YXRlX2xvY2sgPSBOb25lCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGFzc2VydCBzZWxmLl9pbml0aWFsaXplZCwgIlRocmVhZC5fX2luaXRfXygpIHdhcyBub3QgY2FsbGVkIgogICAgICAgIHN0YXR1cyA9ICJpbml0aWFsIgogICAgICAgIGlmIHNlbGYuX3N0YXJ0ZWQuaXNfc2V0KCk6CiAgICAgICAgICAgIHN0YXR1cyA9ICJzdGFydGVkIgogICAgICAgIHNlbGYuaXNfYWxpdmUoKSAjIGVhc3kgd2F5IHRvIGdldCAuX2lzX3N0b3BwZWQgc2V0IHdoZW4gYXBwcm9wcmlhdGUKICAgICAgICBpZiBzZWxmLl9pc19zdG9wcGVkOgogICAgICAgICAgICBzdGF0dXMgPSAic3RvcHBlZCIKICAgICAgICBpZiBzZWxmLl9kYWVtb25pYzoKICAgICAgICAgICAgc3RhdHVzICs9ICIgZGFlbW9uIgogICAgICAgIGlmIHNlbGYuX2lkZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICBzdGF0dXMgKz0gIiAlcyIgJSBzZWxmLl9pZGVudAogICAgICAgIHJldHVybiAiPCVzKCVzLCAlcyk+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbmFtZSwgc3RhdHVzKQoKICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAiIiJTdGFydCB0aGUgdGhyZWFkJ3MgYWN0aXZpdHkuCgogICAgICAgIEl0IG11c3QgYmUgY2FsbGVkIGF0IG1vc3Qgb25jZSBwZXIgdGhyZWFkIG9iamVjdC4gSXQgYXJyYW5nZXMgZm9yIHRoZQogICAgICAgIG9iamVjdCdzIHJ1bigpIG1ldGhvZCB0byBiZSBpbnZva2VkIGluIGEgc2VwYXJhdGUgdGhyZWFkIG9mIGNvbnRyb2wuCgogICAgICAgIFRoaXMgbWV0aG9kIHdpbGwgcmFpc2UgYSBSdW50aW1lRXJyb3IgaWYgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIG9uIHRoZQogICAgICAgIHNhbWUgdGhyZWFkIG9iamVjdC4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYuX2luaXRpYWxpemVkOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRocmVhZC5fX2luaXRfXygpIG5vdCBjYWxsZWQiKQoKICAgICAgICBpZiBzZWxmLl9zdGFydGVkLmlzX3NldCgpOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRocmVhZHMgY2FuIG9ubHkgYmUgc3RhcnRlZCBvbmNlIikKCiAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6CiAgICAgICAgICAgIF9saW1ib1tzZWxmXSA9IHNlbGYKICAgICAgICB0cnk6CiAgICAgICAgICAgIF9zdGFydF9uZXdfdGhyZWFkKHNlbGYuX2Jvb3RzdHJhcCwgKCkpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6CiAgICAgICAgICAgICAgICBkZWwgX2xpbWJvW3NlbGZdCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgc2VsZi5fc3RhcnRlZC53YWl0KCkKCiAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICIiIk1ldGhvZCByZXByZXNlbnRpbmcgdGhlIHRocmVhZCdzIGFjdGl2aXR5LgoKICAgICAgICBZb3UgbWF5IG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIGEgc3ViY2xhc3MuIFRoZSBzdGFuZGFyZCBydW4oKSBtZXRob2QKICAgICAgICBpbnZva2VzIHRoZSBjYWxsYWJsZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBvYmplY3QncyBjb25zdHJ1Y3RvciBhcyB0aGUKICAgICAgICB0YXJnZXQgYXJndW1lbnQsIGlmIGFueSwgd2l0aCBzZXF1ZW50aWFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyB0YWtlbgogICAgICAgIGZyb20gdGhlIGFyZ3MgYW5kIGt3YXJncyBhcmd1bWVudHMsIHJlc3BlY3RpdmVseS4KCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzZWxmLl90YXJnZXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLl90YXJnZXQoKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICMgQXZvaWQgYSByZWZjeWNsZSBpZiB0aGUgdGhyZWFkIGlzIHJ1bm5pbmcgYSBmdW5jdGlvbiB3aXRoCiAgICAgICAgICAgICMgYW4gYXJndW1lbnQgdGhhdCBoYXMgYSBtZW1iZXIgdGhhdCBwb2ludHMgdG8gdGhlIHRocmVhZC4KICAgICAgICAgICAgZGVsIHNlbGYuX3RhcmdldCwgc2VsZi5fYXJncywgc2VsZi5fa3dhcmdzCgogICAgZGVmIF9ib290c3RyYXAoc2VsZik6CiAgICAgICAgIyBXcmFwcGVyIGFyb3VuZCB0aGUgcmVhbCBib290c3RyYXAgY29kZSB0aGF0IGlnbm9yZXMKICAgICAgICAjIGV4Y2VwdGlvbnMgZHVyaW5nIGludGVycHJldGVyIGNsZWFudXAuICBUaG9zZSB0eXBpY2FsbHkKICAgICAgICAjIGhhcHBlbiB3aGVuIGEgZGFlbW9uIHRocmVhZCB3YWtlcyB1cCBhdCBhbiB1bmZvcnR1bmF0ZQogICAgICAgICMgbW9tZW50LCBmaW5kcyB0aGUgd29ybGQgYXJvdW5kIGl0IGRlc3Ryb3llZCwgYW5kIHJhaXNlcyBzb21lCiAgICAgICAgIyByYW5kb20gZXhjZXB0aW9uICoqKiB3aGlsZSB0cnlpbmcgdG8gcmVwb3J0IHRoZSBleGNlcHRpb24gaW4KICAgICAgICAjIF9ib290c3RyYXBfaW5uZXIoKSBiZWxvdyAqKiouICBUaG9zZSByYW5kb20gZXhjZXB0aW9ucwogICAgICAgICMgZG9uJ3QgaGVscCBhbnlib2R5LCBhbmQgdGhleSBjb25mdXNlIHVzZXJzLCBzbyB3ZSBzdXBwcmVzcwogICAgICAgICMgdGhlbS4gIFdlIHN1cHByZXNzIHRoZW0gb25seSB3aGVuIGl0IGFwcGVhcnMgdGhhdCB0aGUgd29ybGQKICAgICAgICAjIGluZGVlZCBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZCwgc28gdGhhdCBleGNlcHRpb25zIGluCiAgICAgICAgIyBfYm9vdHN0cmFwX2lubmVyKCkgZHVyaW5nIG5vcm1hbCBidXNpbmVzcyBob3VycyBhcmUgcHJvcGVybHkKICAgICAgICAjIHJlcG9ydGVkLiAgQWxzbywgd2Ugb25seSBzdXBwcmVzcyB0aGVtIGZvciBkYWVtb25pYyB0aHJlYWRzOwogICAgICAgICMgaWYgYSBub24tZGFlbW9uaWMgZW5jb3VudGVycyB0aGlzLCBzb21ldGhpbmcgZWxzZSBpcyB3cm9uZy4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2Jvb3RzdHJhcF9pbm5lcigpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBpZiBzZWxmLl9kYWVtb25pYyBhbmQgX3N5cyBpcyBOb25lOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHJhaXNlCgogICAgZGVmIF9zZXRfaWRlbnQoc2VsZik6CiAgICAgICAgc2VsZi5faWRlbnQgPSBnZXRfaWRlbnQoKQoKICAgIGlmIF9IQVZFX1RIUkVBRF9OQVRJVkVfSUQ6CiAgICAgICAgZGVmIF9zZXRfbmF0aXZlX2lkKHNlbGYpOgogICAgICAgICAgICBzZWxmLl9uYXRpdmVfaWQgPSBnZXRfbmF0aXZlX2lkKCkKCiAgICBkZWYgX3NldF90c3RhdGVfbG9jayhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBTZXQgYSBsb2NrIG9iamVjdCB3aGljaCB3aWxsIGJlIHJlbGVhc2VkIGJ5IHRoZSBpbnRlcnByZXRlciB3aGVuCiAgICAgICAgdGhlIHVuZGVybHlpbmcgdGhyZWFkIHN0YXRlIChzZWUgcHlzdGF0ZS5oKSBnZXRzIGRlbGV0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdHN0YXRlX2xvY2sgPSBfc2V0X3NlbnRpbmVsKCkKICAgICAgICBzZWxmLl90c3RhdGVfbG9jay5hY3F1aXJlKCkKCiAgICAgICAgaWYgbm90IHNlbGYuZGFlbW9uOgogICAgICAgICAgICB3aXRoIF9zaHV0ZG93bl9sb2Nrc19sb2NrOgogICAgICAgICAgICAgICAgX21haW50YWluX3NodXRkb3duX2xvY2tzKCkKICAgICAgICAgICAgICAgIF9zaHV0ZG93bl9sb2Nrcy5hZGQoc2VsZi5fdHN0YXRlX2xvY2spCgogICAgZGVmIF9ib290c3RyYXBfaW5uZXIoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9zZXRfaWRlbnQoKQogICAgICAgICAgICBzZWxmLl9zZXRfdHN0YXRlX2xvY2soKQogICAgICAgICAgICBpZiBfSEFWRV9USFJFQURfTkFUSVZFX0lEOgogICAgICAgICAgICAgICAgc2VsZi5fc2V0X25hdGl2ZV9pZCgpCiAgICAgICAgICAgIHNlbGYuX3N0YXJ0ZWQuc2V0KCkKICAgICAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6CiAgICAgICAgICAgICAgICBfYWN0aXZlW3NlbGYuX2lkZW50XSA9IHNlbGYKICAgICAgICAgICAgICAgIGRlbCBfbGltYm9bc2VsZl0KCiAgICAgICAgICAgIGlmIF90cmFjZV9ob29rOgogICAgICAgICAgICAgICAgX3N5cy5zZXR0cmFjZShfdHJhY2VfaG9vaykKICAgICAgICAgICAgaWYgX3Byb2ZpbGVfaG9vazoKICAgICAgICAgICAgICAgIF9zeXMuc2V0cHJvZmlsZShfcHJvZmlsZV9ob29rKQoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5ydW4oKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBzZWxmLl9pbnZva2VfZXhjZXB0aG9vayhzZWxmKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX2RlbGV0ZSgpCgogICAgZGVmIF9zdG9wKHNlbGYpOgogICAgICAgICMgQWZ0ZXIgY2FsbGluZyAuX3N0b3AoKSwgLmlzX2FsaXZlKCkgcmV0dXJucyBGYWxzZSBhbmQgLmpvaW4oKSByZXR1cm5zCiAgICAgICAgIyBpbW1lZGlhdGVseS4gIC5fdHN0YXRlX2xvY2sgbXVzdCBiZSByZWxlYXNlZCBiZWZvcmUgY2FsbGluZyAuX3N0b3AoKS4KICAgICAgICAjCiAgICAgICAgIyBOb3JtYWwgY2FzZTogIEMgY29kZSBhdCB0aGUgZW5kIG9mIHRoZSB0aHJlYWQncyBsaWZlCiAgICAgICAgIyAocmVsZWFzZV9zZW50aW5lbCBpbiBfdGhyZWFkbW9kdWxlLmMpIHJlbGVhc2VzIC5fdHN0YXRlX2xvY2ssIGFuZAogICAgICAgICMgdGhhdCdzIGRldGVjdGVkIGJ5IG91ciAuX3dhaXRfZm9yX3RzdGF0ZV9sb2NrKCksIGNhbGxlZCBieSAuam9pbigpCiAgICAgICAgIyBhbmQgLmlzX2FsaXZlKCkuICBBbnkgbnVtYmVyIG9mIHRocmVhZHMgX21heV8gY2FsbCAuX3N0b3AoKQogICAgICAgICMgc2ltdWx0YW5lb3VzbHkgKGZvciBleGFtcGxlLCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBibG9ja2VkIGluCiAgICAgICAgIyAuam9pbigpIGNhbGxzKSwgYW5kIHRoZXkncmUgbm90IHNlcmlhbGl6ZWQuICBUaGF0J3MgaGFybWxlc3MgLQogICAgICAgICMgdGhleSdsbCBqdXN0IG1ha2UgcmVkdW5kYW50IHJlYmluZGluZ3Mgb2YgLl9pc19zdG9wcGVkIGFuZAogICAgICAgICMgLl90c3RhdGVfbG9jay4gIE9ic2N1cmU6ICB3ZSByZWJpbmQgLl90c3RhdGVfbG9jayBsYXN0IHNvIHRoYXQgdGhlCiAgICAgICAgIyAiYXNzZXJ0IHNlbGYuX2lzX3N0b3BwZWQiIGluIC5fd2FpdF9mb3JfdHN0YXRlX2xvY2soKSBhbHdheXMgd29ya3MKICAgICAgICAjICh0aGUgYXNzZXJ0IGlzIGV4ZWN1dGVkIG9ubHkgaWYgLl90c3RhdGVfbG9jayBpcyBOb25lKS4KICAgICAgICAjCiAgICAgICAgIyBTcGVjaWFsIGNhc2U6ICBfbWFpbl90aHJlYWQgcmVsZWFzZXMgLl90c3RhdGVfbG9jayB2aWEgdGhpcwogICAgICAgICMgbW9kdWxlJ3MgX3NodXRkb3duKCkgZnVuY3Rpb24uCiAgICAgICAgbG9jayA9IHNlbGYuX3RzdGF0ZV9sb2NrCiAgICAgICAgaWYgbG9jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgYXNzZXJ0IG5vdCBsb2NrLmxvY2tlZCgpCiAgICAgICAgc2VsZi5faXNfc3RvcHBlZCA9IFRydWUKICAgICAgICBzZWxmLl90c3RhdGVfbG9jayA9IE5vbmUKICAgICAgICBpZiBub3Qgc2VsZi5kYWVtb246CiAgICAgICAgICAgIHdpdGggX3NodXRkb3duX2xvY2tzX2xvY2s6CiAgICAgICAgICAgICAgICAjIFJlbW92ZSBvdXIgbG9jayBhbmQgb3RoZXIgcmVsZWFzZWQgbG9ja3MgZnJvbSBfc2h1dGRvd25fbG9ja3MKICAgICAgICAgICAgICAgIF9tYWludGFpbl9zaHV0ZG93bl9sb2NrcygpCgogICAgZGVmIF9kZWxldGUoc2VsZik6CiAgICAgICAgIlJlbW92ZSBjdXJyZW50IHRocmVhZCBmcm9tIHRoZSBkaWN0IG9mIGN1cnJlbnRseSBydW5uaW5nIHRocmVhZHMuIgogICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICBkZWwgX2FjdGl2ZVtnZXRfaWRlbnQoKV0KICAgICAgICAgICAgIyBUaGVyZSBtdXN0IG5vdCBiZSBhbnkgcHl0aG9uIGNvZGUgYmV0d2VlbiB0aGUgcHJldmlvdXMgbGluZQogICAgICAgICAgICAjIGFuZCBhZnRlciB0aGUgbG9jayBpcyByZWxlYXNlZC4gIE90aGVyd2lzZSBhIHRyYWNpbmcgZnVuY3Rpb24KICAgICAgICAgICAgIyBjb3VsZCB0cnkgdG8gYWNxdWlyZSB0aGUgbG9jayBhZ2FpbiBpbiB0aGUgc2FtZSB0aHJlYWQsIChpbgogICAgICAgICAgICAjIGN1cnJlbnRfdGhyZWFkKCkpLCBhbmQgd291bGQgYmxvY2suCgogICAgZGVmIGpvaW4oc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICAiIiJXYWl0IHVudGlsIHRoZSB0aHJlYWQgdGVybWluYXRlcy4KCiAgICAgICAgVGhpcyBibG9ja3MgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSB0aHJlYWQgd2hvc2Ugam9pbigpIG1ldGhvZCBpcwogICAgICAgIGNhbGxlZCB0ZXJtaW5hdGVzIC0tIGVpdGhlciBub3JtYWxseSBvciB0aHJvdWdoIGFuIHVuaGFuZGxlZCBleGNlcHRpb24KICAgICAgICBvciB1bnRpbCB0aGUgb3B0aW9uYWwgdGltZW91dCBvY2N1cnMuCgogICAgICAgIFdoZW4gdGhlIHRpbWVvdXQgYXJndW1lbnQgaXMgcHJlc2VudCBhbmQgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhCiAgICAgICAgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHNwZWNpZnlpbmcgYSB0aW1lb3V0IGZvciB0aGUgb3BlcmF0aW9uIGluIHNlY29uZHMKICAgICAgICAob3IgZnJhY3Rpb25zIHRoZXJlb2YpLiBBcyBqb2luKCkgYWx3YXlzIHJldHVybnMgTm9uZSwgeW91IG11c3QgY2FsbAogICAgICAgIGlzX2FsaXZlKCkgYWZ0ZXIgam9pbigpIHRvIGRlY2lkZSB3aGV0aGVyIGEgdGltZW91dCBoYXBwZW5lZCAtLSBpZiB0aGUKICAgICAgICB0aHJlYWQgaXMgc3RpbGwgYWxpdmUsIHRoZSBqb2luKCkgY2FsbCB0aW1lZCBvdXQuCgogICAgICAgIFdoZW4gdGhlIHRpbWVvdXQgYXJndW1lbnQgaXMgbm90IHByZXNlbnQgb3IgTm9uZSwgdGhlIG9wZXJhdGlvbiB3aWxsCiAgICAgICAgYmxvY2sgdW50aWwgdGhlIHRocmVhZCB0ZXJtaW5hdGVzLgoKICAgICAgICBBIHRocmVhZCBjYW4gYmUgam9pbigpZWQgbWFueSB0aW1lcy4KCiAgICAgICAgam9pbigpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gam9pbiB0aGUgY3VycmVudAogICAgICAgIHRocmVhZCBhcyB0aGF0IHdvdWxkIGNhdXNlIGEgZGVhZGxvY2suIEl0IGlzIGFsc28gYW4gZXJyb3IgdG8gam9pbigpIGEKICAgICAgICB0aHJlYWQgYmVmb3JlIGl0IGhhcyBiZWVuIHN0YXJ0ZWQgYW5kIGF0dGVtcHRzIHRvIGRvIHNvIHJhaXNlcyB0aGUgc2FtZQogICAgICAgIGV4Y2VwdGlvbi4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYuX2luaXRpYWxpemVkOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRocmVhZC5fX2luaXRfXygpIG5vdCBjYWxsZWQiKQogICAgICAgIGlmIG5vdCBzZWxmLl9zdGFydGVkLmlzX3NldCgpOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCBqb2luIHRocmVhZCBiZWZvcmUgaXQgaXMgc3RhcnRlZCIpCiAgICAgICAgaWYgc2VsZiBpcyBjdXJyZW50X3RocmVhZCgpOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCBqb2luIGN1cnJlbnQgdGhyZWFkIikKCiAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl93YWl0X2Zvcl90c3RhdGVfbG9jaygpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyB0aGUgYmVoYXZpb3Igb2YgYSBuZWdhdGl2ZSB0aW1lb3V0IGlzbid0IGRvY3VtZW50ZWQsIGJ1dAogICAgICAgICAgICAjIGhpc3RvcmljYWxseSAuam9pbih0aW1lb3V0PXgpIGZvciB4PDAgaGFzIGFjdGVkIGFzIGlmIHRpbWVvdXQ9MAogICAgICAgICAgICBzZWxmLl93YWl0X2Zvcl90c3RhdGVfbG9jayh0aW1lb3V0PW1heCh0aW1lb3V0LCAwKSkKCiAgICBkZWYgX3dhaXRfZm9yX3RzdGF0ZV9sb2NrKHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9LTEpOgogICAgICAgICMgSXNzdWUgIzE4ODA4OiB3YWl0IGZvciB0aGUgdGhyZWFkIHN0YXRlIHRvIGJlIGdvbmUuCiAgICAgICAgIyBBdCB0aGUgZW5kIG9mIHRoZSB0aHJlYWQncyBsaWZlLCBhZnRlciBhbGwga25vd2xlZGdlIG9mIHRoZSB0aHJlYWQKICAgICAgICAjIGlzIHJlbW92ZWQgZnJvbSBDIGRhdGEgc3RydWN0dXJlcywgQyBjb2RlIHJlbGVhc2VzIG91ciBfdHN0YXRlX2xvY2suCiAgICAgICAgIyBUaGlzIG1ldGhvZCBwYXNzZXMgaXRzIGFyZ3VtZW50cyB0byBfdHN0YXRlX2xvY2suYWNxdWlyZSgpLgogICAgICAgICMgSWYgdGhlIGxvY2sgaXMgYWNxdWlyZWQsIHRoZSBDIGNvZGUgaXMgZG9uZSwgYW5kIHNlbGYuX3N0b3AoKSBpcwogICAgICAgICMgY2FsbGVkLiAgVGhhdCBzZXRzIC5faXNfc3RvcHBlZCB0byBUcnVlLCBhbmQgLl90c3RhdGVfbG9jayB0byBOb25lLgogICAgICAgIGxvY2sgPSBzZWxmLl90c3RhdGVfbG9jawogICAgICAgIGlmIGxvY2sgaXMgTm9uZToKICAgICAgICAgICAgIyBhbHJlYWR5IGRldGVybWluZWQgdGhhdCB0aGUgQyBjb2RlIGlzIGRvbmUKICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2lzX3N0b3BwZWQKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgbG9jay5hY3F1aXJlKGJsb2NrLCB0aW1lb3V0KToKICAgICAgICAgICAgICAgIGxvY2sucmVsZWFzZSgpCiAgICAgICAgICAgICAgICBzZWxmLl9zdG9wKCkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIGlmIGxvY2subG9ja2VkKCk6CiAgICAgICAgICAgICAgICAjIGJwby00NTI3NDogbG9jay5hY3F1aXJlKCkgYWNxdWlyZWQgdGhlIGxvY2ssIGJ1dCB0aGUgZnVuY3Rpb24KICAgICAgICAgICAgICAgICMgd2FzIGludGVycnVwdGVkIHdpdGggYW4gZXhjZXB0aW9uIGJlZm9yZSByZWFjaGluZyB0aGUKICAgICAgICAgICAgICAgICMgbG9jay5yZWxlYXNlKCkuIEl0IGNhbiBoYXBwZW4gaWYgYSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4KICAgICAgICAgICAgICAgICMgZXhjZXB0aW9uLCBsaWtlIENUUkwrQyB3aGljaCByYWlzZXMgS2V5Ym9hcmRJbnRlcnJ1cHQuCiAgICAgICAgICAgICAgICBsb2NrLnJlbGVhc2UoKQogICAgICAgICAgICAgICAgc2VsZi5fc3RvcCgpCiAgICAgICAgICAgIHJhaXNlCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAiIiJBIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBvbmx5LgoKICAgICAgICBJdCBoYXMgbm8gc2VtYW50aWNzLiBNdWx0aXBsZSB0aHJlYWRzIG1heSBiZSBnaXZlbiB0aGUgc2FtZSBuYW1lLiBUaGUKICAgICAgICBpbml0aWFsIG5hbWUgaXMgc2V0IGJ5IHRoZSBjb25zdHJ1Y3Rvci4KCiAgICAgICAgIiIiCiAgICAgICAgYXNzZXJ0IHNlbGYuX2luaXRpYWxpemVkLCAiVGhyZWFkLl9faW5pdF9fKCkgbm90IGNhbGxlZCIKICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQoKICAgIEBuYW1lLnNldHRlcgogICAgZGVmIG5hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgYXNzZXJ0IHNlbGYuX2luaXRpYWxpemVkLCAiVGhyZWFkLl9faW5pdF9fKCkgbm90IGNhbGxlZCIKICAgICAgICBzZWxmLl9uYW1lID0gc3RyKG5hbWUpCgogICAgQHByb3BlcnR5CiAgICBkZWYgaWRlbnQoc2VsZik6CiAgICAgICAgIiIiVGhyZWFkIGlkZW50aWZpZXIgb2YgdGhpcyB0aHJlYWQgb3IgTm9uZSBpZiBpdCBoYXMgbm90IGJlZW4gc3RhcnRlZC4KCiAgICAgICAgVGhpcyBpcyBhIG5vbnplcm8gaW50ZWdlci4gU2VlIHRoZSBnZXRfaWRlbnQoKSBmdW5jdGlvbi4gVGhyZWFkCiAgICAgICAgaWRlbnRpZmllcnMgbWF5IGJlIHJlY3ljbGVkIHdoZW4gYSB0aHJlYWQgZXhpdHMgYW5kIGFub3RoZXIgdGhyZWFkIGlzCiAgICAgICAgY3JlYXRlZC4gVGhlIGlkZW50aWZpZXIgaXMgYXZhaWxhYmxlIGV2ZW4gYWZ0ZXIgdGhlIHRocmVhZCBoYXMgZXhpdGVkLgoKICAgICAgICAiIiIKICAgICAgICBhc3NlcnQgc2VsZi5faW5pdGlhbGl6ZWQsICJUaHJlYWQuX19pbml0X18oKSBub3QgY2FsbGVkIgogICAgICAgIHJldHVybiBzZWxmLl9pZGVudAoKICAgIGlmIF9IQVZFX1RIUkVBRF9OQVRJVkVfSUQ6CiAgICAgICAgQHByb3BlcnR5CiAgICAgICAgZGVmIG5hdGl2ZV9pZChzZWxmKToKICAgICAgICAgICAgIiIiTmF0aXZlIGludGVncmFsIHRocmVhZCBJRCBvZiB0aGlzIHRocmVhZCwgb3IgTm9uZSBpZiBpdCBoYXMgbm90IGJlZW4gc3RhcnRlZC4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBub24tbmVnYXRpdmUgaW50ZWdlci4gU2VlIHRoZSBnZXRfbmF0aXZlX2lkKCkgZnVuY3Rpb24uCiAgICAgICAgICAgIFRoaXMgcmVwcmVzZW50cyB0aGUgVGhyZWFkIElEIGFzIHJlcG9ydGVkIGJ5IHRoZSBrZXJuZWwuCgogICAgICAgICAgICAiIiIKICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2luaXRpYWxpemVkLCAiVGhyZWFkLl9faW5pdF9fKCkgbm90IGNhbGxlZCIKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25hdGl2ZV9pZAoKICAgIGRlZiBpc19hbGl2ZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgdGhyZWFkIGlzIGFsaXZlLgoKICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIFRydWUganVzdCBiZWZvcmUgdGhlIHJ1bigpIG1ldGhvZCBzdGFydHMgdW50aWwganVzdAogICAgICAgIGFmdGVyIHRoZSBydW4oKSBtZXRob2QgdGVybWluYXRlcy4gU2VlIGFsc28gdGhlIG1vZHVsZSBmdW5jdGlvbgogICAgICAgIGVudW1lcmF0ZSgpLgoKICAgICAgICAiIiIKICAgICAgICBhc3NlcnQgc2VsZi5faW5pdGlhbGl6ZWQsICJUaHJlYWQuX19pbml0X18oKSBub3QgY2FsbGVkIgogICAgICAgIGlmIHNlbGYuX2lzX3N0b3BwZWQgb3Igbm90IHNlbGYuX3N0YXJ0ZWQuaXNfc2V0KCk6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHNlbGYuX3dhaXRfZm9yX3RzdGF0ZV9sb2NrKEZhbHNlKQogICAgICAgIHJldHVybiBub3Qgc2VsZi5faXNfc3RvcHBlZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRhZW1vbihzZWxmKToKICAgICAgICAiIiJBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgdGhyZWFkIGlzIGEgZGFlbW9uIHRocmVhZC4KCiAgICAgICAgVGhpcyBtdXN0IGJlIHNldCBiZWZvcmUgc3RhcnQoKSBpcyBjYWxsZWQsIG90aGVyd2lzZSBSdW50aW1lRXJyb3IgaXMKICAgICAgICByYWlzZWQuIEl0cyBpbml0aWFsIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyB0aHJlYWQ7IHRoZQogICAgICAgIG1haW4gdGhyZWFkIGlzIG5vdCBhIGRhZW1vbiB0aHJlYWQgYW5kIHRoZXJlZm9yZSBhbGwgdGhyZWFkcyBjcmVhdGVkIGluCiAgICAgICAgdGhlIG1haW4gdGhyZWFkIGRlZmF1bHQgdG8gZGFlbW9uID0gRmFsc2UuCgogICAgICAgIFRoZSBlbnRpcmUgUHl0aG9uIHByb2dyYW0gZXhpdHMgd2hlbiBvbmx5IGRhZW1vbiB0aHJlYWRzIGFyZSBsZWZ0LgoKICAgICAgICAiIiIKICAgICAgICBhc3NlcnQgc2VsZi5faW5pdGlhbGl6ZWQsICJUaHJlYWQuX19pbml0X18oKSBub3QgY2FsbGVkIgogICAgICAgIHJldHVybiBzZWxmLl9kYWVtb25pYwoKICAgIEBkYWVtb24uc2V0dGVyCiAgICBkZWYgZGFlbW9uKHNlbGYsIGRhZW1vbmljKToKICAgICAgICBpZiBub3Qgc2VsZi5faW5pdGlhbGl6ZWQ6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhyZWFkLl9faW5pdF9fKCkgbm90IGNhbGxlZCIpCiAgICAgICAgaWYgc2VsZi5fc3RhcnRlZC5pc19zZXQoKToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3Qgc2V0IGRhZW1vbiBzdGF0dXMgb2YgYWN0aXZlIHRocmVhZCIpCiAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBkYWVtb25pYwoKICAgIGRlZiBpc0RhZW1vbihzZWxmKToKICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGlzIHRocmVhZCBpcyBhIGRhZW1vbi4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlIHRoZSBkYWVtb24gYXR0cmlidXRlIGluc3RlYWQuCgogICAgICAgICIiIgogICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgIHdhcm5pbmdzLndhcm4oJ2lzRGFlbW9uKCkgaXMgZGVwcmVjYXRlZCwgZ2V0IHRoZSBkYWVtb24gYXR0cmlidXRlIGluc3RlYWQnLAogICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgcmV0dXJuIHNlbGYuZGFlbW9uCgogICAgZGVmIHNldERhZW1vbihzZWxmLCBkYWVtb25pYyk6CiAgICAgICAgIiIiU2V0IHdoZXRoZXIgdGhpcyB0aHJlYWQgaXMgYSBkYWVtb24uCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZSB0aGUgLmRhZW1vbiBwcm9wZXJ0eSBpbnN0ZWFkLgoKICAgICAgICAiIiIKICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICB3YXJuaW5ncy53YXJuKCdzZXREYWVtb24oKSBpcyBkZXByZWNhdGVkLCBzZXQgdGhlIGRhZW1vbiBhdHRyaWJ1dGUgaW5zdGVhZCcsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICBzZWxmLmRhZW1vbiA9IGRhZW1vbmljCgogICAgZGVmIGdldE5hbWUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHVzZWQgZm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzIG9ubHkuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZSB0aGUgbmFtZSBhdHRyaWJ1dGUgaW5zdGVhZC4KCiAgICAgICAgIiIiCiAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgd2FybmluZ3Mud2FybignZ2V0TmFtZSgpIGlzIGRlcHJlY2F0ZWQsIGdldCB0aGUgbmFtZSBhdHRyaWJ1dGUgaW5zdGVhZCcsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICByZXR1cm4gc2VsZi5uYW1lCgogICAgZGVmIHNldE5hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgIiIiU2V0IHRoZSBuYW1lIHN0cmluZyBmb3IgdGhpcyB0aHJlYWQuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZSB0aGUgbmFtZSBhdHRyaWJ1dGUgaW5zdGVhZC4KCiAgICAgICAgIiIiCiAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgd2FybmluZ3Mud2Fybignc2V0TmFtZSgpIGlzIGRlcHJlY2F0ZWQsIHNldCB0aGUgbmFtZSBhdHRyaWJ1dGUgaW5zdGVhZCcsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCgoKdHJ5OgogICAgZnJvbSBfdGhyZWFkIGltcG9ydCAoX2V4Y2VwdGhvb2sgYXMgZXhjZXB0aG9vaywKICAgICAgICAgICAgICAgICAgICAgICAgIF9FeGNlcHRIb29rQXJncyBhcyBFeGNlcHRIb29rQXJncykKZXhjZXB0IEltcG9ydEVycm9yOgogICAgIyBTaW1wbGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIGlmIF90aHJlYWQuX2V4Y2VwdGhvb2soKSBpcyBub3QgYXZhaWxhYmxlCiAgICBmcm9tIHRyYWNlYmFjayBpbXBvcnQgcHJpbnRfZXhjZXB0aW9uIGFzIF9wcmludF9leGNlcHRpb24KICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKCiAgICBfRXhjZXB0SG9va0FyZ3MgPSBuYW1lZHR1cGxlKAogICAgICAgICdFeGNlcHRIb29rQXJncycsCiAgICAgICAgJ2V4Y190eXBlIGV4Y192YWx1ZSBleGNfdHJhY2ViYWNrIHRocmVhZCcpCgogICAgZGVmIEV4Y2VwdEhvb2tBcmdzKGFyZ3MpOgogICAgICAgIHJldHVybiBfRXhjZXB0SG9va0FyZ3MoKmFyZ3MpCgogICAgZGVmIGV4Y2VwdGhvb2soYXJncywgLyk6CiAgICAgICAgIiIiCiAgICAgICAgSGFuZGxlIHVuY2F1Z2h0IFRocmVhZC5ydW4oKSBleGNlcHRpb24uCiAgICAgICAgIiIiCiAgICAgICAgaWYgYXJncy5leGNfdHlwZSA9PSBTeXN0ZW1FeGl0OgogICAgICAgICAgICAjIHNpbGVudGx5IGlnbm9yZSBTeXN0ZW1FeGl0CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBfc3lzIGlzIG5vdCBOb25lIGFuZCBfc3lzLnN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3RkZXJyID0gX3N5cy5zdGRlcnIKICAgICAgICBlbGlmIGFyZ3MudGhyZWFkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzdGRlcnIgPSBhcmdzLnRocmVhZC5fc3RkZXJyCiAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nIGlmIHN5cy5zdGRlcnIgaXMgTm9uZSBhbmQgc3lzLnN0ZGVyciB3YXMgTm9uZQogICAgICAgICAgICAgICAgIyB3aGVuIHRoZSB0aHJlYWQgd2FzIGNyZWF0ZWQKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgZG8gbm90aGluZyBpZiBzeXMuc3RkZXJyIGlzIE5vbmUgYW5kIGFyZ3MudGhyZWFkIGlzIE5vbmUKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIGFyZ3MudGhyZWFkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBuYW1lID0gYXJncy50aHJlYWQubmFtZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5hbWUgPSBnZXRfaWRlbnQoKQogICAgICAgIHByaW50KGYiRXhjZXB0aW9uIGluIHRocmVhZCB7bmFtZX06IiwKICAgICAgICAgICAgICBmaWxlPXN0ZGVyciwgZmx1c2g9VHJ1ZSkKICAgICAgICBfcHJpbnRfZXhjZXB0aW9uKGFyZ3MuZXhjX3R5cGUsIGFyZ3MuZXhjX3ZhbHVlLCBhcmdzLmV4Y190cmFjZWJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKICAgICAgICBzdGRlcnIuZmx1c2goKQoKCiMgT3JpZ2luYWwgdmFsdWUgb2YgdGhyZWFkaW5nLmV4Y2VwdGhvb2sKX19leGNlcHRob29rX18gPSBleGNlcHRob29rCgoKZGVmIF9tYWtlX2ludm9rZV9leGNlcHRob29rKCk6CiAgICAjIENyZWF0ZSBhIGxvY2FsIG5hbWVzcGFjZSB0byBlbnN1cmUgdGhhdCB2YXJpYWJsZXMgcmVtYWluIGFsaXZlCiAgICAjIHdoZW4gX2ludm9rZV9leGNlcHRob29rKCkgaXMgY2FsbGVkLCBldmVuIGlmIGl0IGlzIGNhbGxlZCBsYXRlIGR1cmluZwogICAgIyBQeXRob24gc2h1dGRvd24uIEl0IGlzIG1vc3RseSBuZWVkZWQgZm9yIGRhZW1vbiB0aHJlYWRzLgoKICAgIG9sZF9leGNlcHRob29rID0gZXhjZXB0aG9vawogICAgb2xkX3N5c19leGNlcHRob29rID0gX3N5cy5leGNlcHRob29rCiAgICBpZiBvbGRfZXhjZXB0aG9vayBpcyBOb25lOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGhyZWFkaW5nLmV4Y2VwdGhvb2sgaXMgTm9uZSIpCiAgICBpZiBvbGRfc3lzX2V4Y2VwdGhvb2sgaXMgTm9uZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInN5cy5leGNlcHRob29rIGlzIE5vbmUiKQoKICAgIHN5c19leGNfaW5mbyA9IF9zeXMuZXhjX2luZm8KICAgIGxvY2FsX3ByaW50ID0gcHJpbnQKICAgIGxvY2FsX3N5cyA9IF9zeXMKCiAgICBkZWYgaW52b2tlX2V4Y2VwdGhvb2sodGhyZWFkKToKICAgICAgICBnbG9iYWwgZXhjZXB0aG9vawogICAgICAgIHRyeToKICAgICAgICAgICAgaG9vayA9IGV4Y2VwdGhvb2sKICAgICAgICAgICAgaWYgaG9vayBpcyBOb25lOgogICAgICAgICAgICAgICAgaG9vayA9IG9sZF9leGNlcHRob29rCgogICAgICAgICAgICBhcmdzID0gRXhjZXB0SG9va0FyZ3MoWypzeXNfZXhjX2luZm8oKSwgdGhyZWFkXSkKCiAgICAgICAgICAgIGhvb2soYXJncykKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fID0gVHJ1ZQogICAgICAgICAgICBkZWwgZXhjCgogICAgICAgICAgICBpZiBsb2NhbF9zeXMgaXMgbm90IE5vbmUgYW5kIGxvY2FsX3N5cy5zdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzdGRlcnIgPSBsb2NhbF9zeXMuc3RkZXJyCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzdGRlcnIgPSB0aHJlYWQuX3N0ZGVycgoKICAgICAgICAgICAgbG9jYWxfcHJpbnQoIkV4Y2VwdGlvbiBpbiB0aHJlYWRpbmcuZXhjZXB0aG9vazoiLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVyciwgZmx1c2g9VHJ1ZSkKCiAgICAgICAgICAgIGlmIGxvY2FsX3N5cyBpcyBub3QgTm9uZSBhbmQgbG9jYWxfc3lzLmV4Y2VwdGhvb2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzeXNfZXhjZXB0aG9vayA9IGxvY2FsX3N5cy5leGNlcHRob29rCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzeXNfZXhjZXB0aG9vayA9IG9sZF9zeXNfZXhjZXB0aG9vawoKICAgICAgICAgICAgc3lzX2V4Y2VwdGhvb2soKnN5c19leGNfaW5mbygpKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICMgQnJlYWsgcmVmZXJlbmNlIGN5Y2xlIChleGNlcHRpb24gc3RvcmVkIGluIGEgdmFyaWFibGUpCiAgICAgICAgICAgIGFyZ3MgPSBOb25lCgogICAgcmV0dXJuIGludm9rZV9leGNlcHRob29rCgoKIyBUaGUgdGltZXIgY2xhc3Mgd2FzIGNvbnRyaWJ1dGVkIGJ5IEl0YW1hciBTaHR1bGwtVHJhdXJpbmcKCmNsYXNzIFRpbWVyKFRocmVhZCk6CiAgICAiIiJDYWxsIGEgZnVuY3Rpb24gYWZ0ZXIgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHM6CgogICAgICAgICAgICB0ID0gVGltZXIoMzAuMCwgZiwgYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSkKICAgICAgICAgICAgdC5zdGFydCgpCiAgICAgICAgICAgIHQuY2FuY2VsKCkgICAgICMgc3RvcCB0aGUgdGltZXIncyBhY3Rpb24gaWYgaXQncyBzdGlsbCB3YWl0aW5nCgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGludGVydmFsLCBmdW5jdGlvbiwgYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSk6CiAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYpCiAgICAgICAgc2VsZi5pbnRlcnZhbCA9IGludGVydmFsCiAgICAgICAgc2VsZi5mdW5jdGlvbiA9IGZ1bmN0aW9uCiAgICAgICAgc2VsZi5hcmdzID0gYXJncyBpZiBhcmdzIGlzIG5vdCBOb25lIGVsc2UgW10KICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJncyBpZiBrd2FyZ3MgaXMgbm90IE5vbmUgZWxzZSB7fQogICAgICAgIHNlbGYuZmluaXNoZWQgPSBFdmVudCgpCgogICAgZGVmIGNhbmNlbChzZWxmKToKICAgICAgICAiIiJTdG9wIHRoZSB0aW1lciBpZiBpdCBoYXNuJ3QgZmluaXNoZWQgeWV0LiIiIgogICAgICAgIHNlbGYuZmluaXNoZWQuc2V0KCkKCiAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgIHNlbGYuZmluaXNoZWQud2FpdChzZWxmLmludGVydmFsKQogICAgICAgIGlmIG5vdCBzZWxmLmZpbmlzaGVkLmlzX3NldCgpOgogICAgICAgICAgICBzZWxmLmZ1bmN0aW9uKCpzZWxmLmFyZ3MsICoqc2VsZi5rd2FyZ3MpCiAgICAgICAgc2VsZi5maW5pc2hlZC5zZXQoKQoKCiMgU3BlY2lhbCB0aHJlYWQgY2xhc3MgdG8gcmVwcmVzZW50IHRoZSBtYWluIHRocmVhZAoKY2xhc3MgX01haW5UaHJlYWQoVGhyZWFkKToKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9Ik1haW5UaHJlYWQiLCBkYWVtb249RmFsc2UpCiAgICAgICAgc2VsZi5fc2V0X3RzdGF0ZV9sb2NrKCkKICAgICAgICBzZWxmLl9zdGFydGVkLnNldCgpCiAgICAgICAgc2VsZi5fc2V0X2lkZW50KCkKICAgICAgICBpZiBfSEFWRV9USFJFQURfTkFUSVZFX0lEOgogICAgICAgICAgICBzZWxmLl9zZXRfbmF0aXZlX2lkKCkKICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCgoKIyBEdW1teSB0aHJlYWQgY2xhc3MgdG8gcmVwcmVzZW50IHRocmVhZHMgbm90IHN0YXJ0ZWQgaGVyZS4KIyBUaGVzZSBhcmVuJ3QgZ2FyYmFnZSBjb2xsZWN0ZWQgd2hlbiB0aGV5IGRpZSwgbm9yIGNhbiB0aGV5IGJlIHdhaXRlZCBmb3IuCiMgSWYgdGhleSBpbnZva2UgYW55dGhpbmcgaW4gdGhyZWFkaW5nLnB5IHRoYXQgY2FsbHMgY3VycmVudF90aHJlYWQoKSwgdGhleQojIGxlYXZlIGFuIGVudHJ5IGluIHRoZSBfYWN0aXZlIGRpY3QgZm9yZXZlciBhZnRlci4KIyBUaGVpciBwdXJwb3NlIGlzIHRvIHJldHVybiAqc29tZXRoaW5nKiBmcm9tIGN1cnJlbnRfdGhyZWFkKCkuCiMgVGhleSBhcmUgbWFya2VkIGFzIGRhZW1vbiB0aHJlYWRzIHNvIHdlIHdvbid0IHdhaXQgZm9yIHRoZW0KIyB3aGVuIHdlIGV4aXQgKGNvbmZvcm0gcHJldmlvdXMgc2VtYW50aWNzKS4KCmNsYXNzIF9EdW1teVRocmVhZChUaHJlYWQpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT1fbmV3bmFtZSgiRHVtbXktJWQiKSwgZGFlbW9uPVRydWUpCgogICAgICAgIHNlbGYuX3N0YXJ0ZWQuc2V0KCkKICAgICAgICBzZWxmLl9zZXRfaWRlbnQoKQogICAgICAgIGlmIF9IQVZFX1RIUkVBRF9OQVRJVkVfSUQ6CiAgICAgICAgICAgIHNlbGYuX3NldF9uYXRpdmVfaWQoKQogICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICBfYWN0aXZlW3NlbGYuX2lkZW50XSA9IHNlbGYKCiAgICBkZWYgX3N0b3Aoc2VsZik6CiAgICAgICAgcGFzcwoKICAgIGRlZiBpc19hbGl2ZShzZWxmKToKICAgICAgICBhc3NlcnQgbm90IHNlbGYuX2lzX3N0b3BwZWQgYW5kIHNlbGYuX3N0YXJ0ZWQuaXNfc2V0KCkKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBqb2luKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgYXNzZXJ0IEZhbHNlLCAiY2Fubm90IGpvaW4gYSBkdW1teSB0aHJlYWQiCgoKIyBHbG9iYWwgQVBJIGZ1bmN0aW9ucwoKZGVmIGN1cnJlbnRfdGhyZWFkKCk6CiAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgVGhyZWFkIG9iamVjdCwgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbGVyJ3MgdGhyZWFkIG9mIGNvbnRyb2wuCgogICAgSWYgdGhlIGNhbGxlcidzIHRocmVhZCBvZiBjb250cm9sIHdhcyBub3QgY3JlYXRlZCB0aHJvdWdoIHRoZSB0aHJlYWRpbmcKICAgIG1vZHVsZSwgYSBkdW1teSB0aHJlYWQgb2JqZWN0IHdpdGggbGltaXRlZCBmdW5jdGlvbmFsaXR5IGlzIHJldHVybmVkLgoKICAgICIiIgogICAgdHJ5OgogICAgICAgIHJldHVybiBfYWN0aXZlW2dldF9pZGVudCgpXQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJldHVybiBfRHVtbXlUaHJlYWQoKQoKZGVmIGN1cnJlbnRUaHJlYWQoKToKICAgICIiIlJldHVybiB0aGUgY3VycmVudCBUaHJlYWQgb2JqZWN0LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYWxsZXIncyB0aHJlYWQgb2YgY29udHJvbC4KCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSBjdXJyZW50X3RocmVhZCgpIGluc3RlYWQuCgogICAgIiIiCiAgICBpbXBvcnQgd2FybmluZ3MKICAgIHdhcm5pbmdzLndhcm4oJ2N1cnJlbnRUaHJlYWQoKSBpcyBkZXByZWNhdGVkLCB1c2UgY3VycmVudF90aHJlYWQoKSBpbnN0ZWFkJywKICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICByZXR1cm4gY3VycmVudF90aHJlYWQoKQoKZGVmIGFjdGl2ZV9jb3VudCgpOgogICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgVGhyZWFkIG9iamVjdHMgY3VycmVudGx5IGFsaXZlLgoKICAgIFRoZSByZXR1cm5lZCBjb3VudCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5CiAgICBlbnVtZXJhdGUoKS4KCiAgICAiIiIKICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgIHJldHVybiBsZW4oX2FjdGl2ZSkgKyBsZW4oX2xpbWJvKQoKZGVmIGFjdGl2ZUNvdW50KCk6CiAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBUaHJlYWQgb2JqZWN0cyBjdXJyZW50bHkgYWxpdmUuCgogICAgVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgYWN0aXZlX2NvdW50KCkgaW5zdGVhZC4KCiAgICAiIiIKICAgIGltcG9ydCB3YXJuaW5ncwogICAgd2FybmluZ3Mud2FybignYWN0aXZlQ291bnQoKSBpcyBkZXByZWNhdGVkLCB1c2UgYWN0aXZlX2NvdW50KCkgaW5zdGVhZCcsCiAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgcmV0dXJuIGFjdGl2ZV9jb3VudCgpCgpkZWYgX2VudW1lcmF0ZSgpOgogICAgIyBTYW1lIGFzIGVudW1lcmF0ZSgpLCBidXQgd2l0aG91dCB0aGUgbG9jay4gSW50ZXJuYWwgdXNlIG9ubHkuCiAgICByZXR1cm4gbGlzdChfYWN0aXZlLnZhbHVlcygpKSArIGxpc3QoX2xpbWJvLnZhbHVlcygpKQoKZGVmIGVudW1lcmF0ZSgpOgogICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgVGhyZWFkIG9iamVjdHMgY3VycmVudGx5IGFsaXZlLgoKICAgIFRoZSBsaXN0IGluY2x1ZGVzIGRhZW1vbmljIHRocmVhZHMsIGR1bW15IHRocmVhZCBvYmplY3RzIGNyZWF0ZWQgYnkKICAgIGN1cnJlbnRfdGhyZWFkKCksIGFuZCB0aGUgbWFpbiB0aHJlYWQuIEl0IGV4Y2x1ZGVzIHRlcm1pbmF0ZWQgdGhyZWFkcyBhbmQKICAgIHRocmVhZHMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBzdGFydGVkLgoKICAgICIiIgogICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6CiAgICAgICAgcmV0dXJuIGxpc3QoX2FjdGl2ZS52YWx1ZXMoKSkgKyBsaXN0KF9saW1iby52YWx1ZXMoKSkKCgpfdGhyZWFkaW5nX2F0ZXhpdHMgPSBbXQpfU0hVVFRJTkdfRE9XTiA9IEZhbHNlCgpkZWYgX3JlZ2lzdGVyX2F0ZXhpdChmdW5jLCAqYXJnLCAqKmt3YXJncyk6CiAgICAiIiJDUHl0aG9uIGludGVybmFsOiByZWdpc3RlciAqZnVuYyogdG8gYmUgY2FsbGVkIGJlZm9yZSBqb2luaW5nIHRocmVhZHMuCgogICAgVGhlIHJlZ2lzdGVyZWQgKmZ1bmMqIGlzIGNhbGxlZCB3aXRoIGl0cyBhcmd1bWVudHMganVzdCBiZWZvcmUgYWxsCiAgICBub24tZGFlbW9uIHRocmVhZHMgYXJlIGpvaW5lZCBpbiBgX3NodXRkb3duKClgLiBJdCBwcm92aWRlcyBhIHNpbWlsYXIKICAgIHB1cnBvc2UgdG8gYGF0ZXhpdC5yZWdpc3RlcigpYCwgYnV0IGl0cyBmdW5jdGlvbnMgYXJlIGNhbGxlZCBwcmlvciB0bwogICAgdGhyZWFkaW5nIHNodXRkb3duIGluc3RlYWQgb2YgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCgogICAgRm9yIHNpbWlsYXJpdHkgdG8gYXRleGl0LCB0aGUgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBpbiByZXZlcnNlLgogICAgIiIiCiAgICBpZiBfU0hVVFRJTkdfRE9XTjoKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbid0IHJlZ2lzdGVyIGF0ZXhpdCBhZnRlciBzaHV0ZG93biIpCgogICAgY2FsbCA9IGZ1bmN0b29scy5wYXJ0aWFsKGZ1bmMsICphcmcsICoqa3dhcmdzKQogICAgX3RocmVhZGluZ19hdGV4aXRzLmFwcGVuZChjYWxsKQoKCmZyb20gX3RocmVhZCBpbXBvcnQgc3RhY2tfc2l6ZQoKIyBDcmVhdGUgdGhlIG1haW4gdGhyZWFkIG9iamVjdCwKIyBhbmQgbWFrZSBpdCBhdmFpbGFibGUgZm9yIHRoZSBpbnRlcnByZXRlcgojIChQeV9NYWluKSBhcyB0aHJlYWRpbmcuX3NodXRkb3duLgoKX21haW5fdGhyZWFkID0gX01haW5UaHJlYWQoKQoKZGVmIF9zaHV0ZG93bigpOgogICAgIiIiCiAgICBXYWl0IHVudGlsIHRoZSBQeXRob24gdGhyZWFkIHN0YXRlIG9mIGFsbCBub24tZGFlbW9uIHRocmVhZHMgZ2V0IGRlbGV0ZWQuCiAgICAiIiIKICAgICMgT2JzY3VyZTogIG90aGVyIHRocmVhZHMgbWF5IGJlIHdhaXRpbmcgdG8gam9pbiBfbWFpbl90aHJlYWQuICBUaGF0J3MKICAgICMgZHViaW91cywgYnV0IHNvbWUgY29kZSBkb2VzIGl0LiAgV2UgY2FuJ3Qgd2FpdCBmb3IgQyBjb2RlIHRvIHJlbGVhc2UKICAgICMgdGhlIG1haW4gdGhyZWFkJ3MgdHN0YXRlX2xvY2sgLSB0aGF0IHdvbid0IGhhcHBlbiB1bnRpbCB0aGUgaW50ZXJwcmV0ZXIKICAgICMgaXMgbmVhcmx5IGRlYWQuICBTbyB3ZSByZWxlYXNlIGl0IGhlcmUuICBOb3RlIHRoYXQganVzdCBjYWxsaW5nIF9zdG9wKCkKICAgICMgaXNuJ3QgZW5vdWdoOiAgb3RoZXIgdGhyZWFkcyBtYXkgYWxyZWFkeSBiZSB3YWl0aW5nIG9uIF90c3RhdGVfbG9jay4KICAgIGlmIF9tYWluX3RocmVhZC5faXNfc3RvcHBlZDoKICAgICAgICAjIF9zaHV0ZG93bigpIHdhcyBhbHJlYWR5IGNhbGxlZAogICAgICAgIHJldHVybgoKICAgIGdsb2JhbCBfU0hVVFRJTkdfRE9XTgogICAgX1NIVVRUSU5HX0RPV04gPSBUcnVlCgogICAgIyBDYWxsIHJlZ2lzdGVyZWQgdGhyZWFkaW5nIGF0ZXhpdCBmdW5jdGlvbnMgYmVmb3JlIHRocmVhZHMgYXJlIGpvaW5lZC4KICAgICMgT3JkZXIgaXMgcmV2ZXJzZWQsIHNpbWlsYXIgdG8gYXRleGl0LgogICAgZm9yIGF0ZXhpdF9jYWxsIGluIHJldmVyc2VkKF90aHJlYWRpbmdfYXRleGl0cyk6CiAgICAgICAgYXRleGl0X2NhbGwoKQoKICAgICMgTWFpbiB0aHJlYWQKICAgIGlmIF9tYWluX3RocmVhZC5pZGVudCA9PSBnZXRfaWRlbnQoKToKICAgICAgICB0bG9jayA9IF9tYWluX3RocmVhZC5fdHN0YXRlX2xvY2sKICAgICAgICAjIFRoZSBtYWluIHRocmVhZCBpc24ndCBmaW5pc2hlZCB5ZXQsIHNvIGl0cyB0aHJlYWQgc3RhdGUgbG9jayBjYW4ndAogICAgICAgICMgaGF2ZSBiZWVuIHJlbGVhc2VkLgogICAgICAgIGFzc2VydCB0bG9jayBpcyBub3QgTm9uZQogICAgICAgIGFzc2VydCB0bG9jay5sb2NrZWQoKQogICAgICAgIHRsb2NrLnJlbGVhc2UoKQogICAgICAgIF9tYWluX3RocmVhZC5fc3RvcCgpCiAgICBlbHNlOgogICAgICAgICMgYnBvLTE1OTYzMjE6IF9zaHV0ZG93bigpIG11c3QgYmUgY2FsbGVkIGluIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAjIElmIHRoZSB0aHJlYWRpbmcgbW9kdWxlIHdhcyBub3QgaW1wb3J0ZWQgYnkgdGhlIG1haW4gdGhyZWFkLAogICAgICAgICMgX21haW5fdGhyZWFkIGlzIHRoZSB0aHJlYWQgd2hpY2ggaW1wb3J0ZWQgdGhlIHRocmVhZGluZyBtb2R1bGUuCiAgICAgICAgIyBJbiB0aGlzIGNhc2UsIGlnbm9yZSBfbWFpbl90aHJlYWQsIHNpbWlsYXIgYmVoYXZpb3IgdGhhbiBmb3IgdGhyZWFkcwogICAgICAgICMgc3Bhd25lZCBieSBDIGxpYnJhcmllcyBvciB1c2luZyBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKS4KICAgICAgICBwYXNzCgogICAgIyBKb2luIGFsbCBub24tZGVhbW9uIHRocmVhZHMKICAgIHdoaWxlIFRydWU6CiAgICAgICAgd2l0aCBfc2h1dGRvd25fbG9ja3NfbG9jazoKICAgICAgICAgICAgbG9ja3MgPSBsaXN0KF9zaHV0ZG93bl9sb2NrcykKICAgICAgICAgICAgX3NodXRkb3duX2xvY2tzLmNsZWFyKCkKCiAgICAgICAgaWYgbm90IGxvY2tzOgogICAgICAgICAgICBicmVhawoKICAgICAgICBmb3IgbG9jayBpbiBsb2NrczoKICAgICAgICAgICAgIyBtaW1pYyBUaHJlYWQuam9pbigpCiAgICAgICAgICAgIGxvY2suYWNxdWlyZSgpCiAgICAgICAgICAgIGxvY2sucmVsZWFzZSgpCgogICAgICAgICMgbmV3IHRocmVhZHMgY2FuIGJlIHNwYXduZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nIGZvciB0aGUgb3RoZXIKICAgICAgICAjIHRocmVhZHMgdG8gY29tcGxldGUKCgpkZWYgbWFpbl90aHJlYWQoKToKICAgICIiIlJldHVybiB0aGUgbWFpbiB0aHJlYWQgb2JqZWN0LgoKICAgIEluIG5vcm1hbCBjb25kaXRpb25zLCB0aGUgbWFpbiB0aHJlYWQgaXMgdGhlIHRocmVhZCBmcm9tIHdoaWNoIHRoZQogICAgUHl0aG9uIGludGVycHJldGVyIHdhcyBzdGFydGVkLgogICAgIiIiCiAgICByZXR1cm4gX21haW5fdGhyZWFkCgojIGdldCB0aHJlYWQtbG9jYWwgaW1wbGVtZW50YXRpb24sIGVpdGhlciBmcm9tIHRoZSB0aHJlYWQKIyBtb2R1bGUsIG9yIGZyb20gdGhlIHB5dGhvbiBmYWxsYmFjawoKdHJ5OgogICAgZnJvbSBfdGhyZWFkIGltcG9ydCBfbG9jYWwgYXMgbG9jYWwKZXhjZXB0IEltcG9ydEVycm9yOgogICAgZnJvbSBfdGhyZWFkaW5nX2xvY2FsIGltcG9ydCBsb2NhbAoKCmRlZiBfYWZ0ZXJfZm9yaygpOgogICAgIiIiCiAgICBDbGVhbnVwIHRocmVhZGluZyBtb2R1bGUgc3RhdGUgdGhhdCBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGEgZm9yay4KICAgICIiIgogICAgIyBSZXNldCBfYWN0aXZlX2xpbWJvX2xvY2ssIGluIGNhc2Ugd2UgZm9ya2VkIHdoaWxlIHRoZSBsb2NrIHdhcyBoZWxkCiAgICAjIGJ5IGFub3RoZXIgKG5vbi1mb3JrZWQpIHRocmVhZC4gIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4NzQ5MDAKICAgIGdsb2JhbCBfYWN0aXZlX2xpbWJvX2xvY2ssIF9tYWluX3RocmVhZAogICAgZ2xvYmFsIF9zaHV0ZG93bl9sb2Nrc19sb2NrLCBfc2h1dGRvd25fbG9ja3MKICAgIF9hY3RpdmVfbGltYm9fbG9jayA9IFJMb2NrKCkKCiAgICAjIGZvcmsoKSBvbmx5IGNvcGllZCB0aGUgY3VycmVudCB0aHJlYWQ7IGNsZWFyIHJlZmVyZW5jZXMgdG8gb3RoZXJzLgogICAgbmV3X2FjdGl2ZSA9IHt9CgogICAgdHJ5OgogICAgICAgIGN1cnJlbnQgPSBfYWN0aXZlW2dldF9pZGVudCgpXQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICMgZm9yaygpIHdhcyBjYWxsZWQgaW4gYSB0aHJlYWQgd2hpY2ggd2FzIG5vdCBzcGF3bmVkCiAgICAgICAgIyBieSB0aHJlYWRpbmcuVGhyZWFkLiBGb3IgZXhhbXBsZSwgYSB0aHJlYWQgc3Bhd25lZAogICAgICAgICMgYnkgdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKS4KICAgICAgICBjdXJyZW50ID0gX01haW5UaHJlYWQoKQoKICAgIF9tYWluX3RocmVhZCA9IGN1cnJlbnQKCiAgICAjIHJlc2V0IF9zaHV0ZG93bigpIGxvY2tzOiB0aHJlYWRzIHJlLXJlZ2lzdGVyIHRoZWlyIF90c3RhdGVfbG9jayBiZWxvdwogICAgX3NodXRkb3duX2xvY2tzX2xvY2sgPSBfYWxsb2NhdGVfbG9jaygpCiAgICBfc2h1dGRvd25fbG9ja3MgPSBzZXQoKQoKICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICMgRGFuZ2xpbmcgdGhyZWFkIGluc3RhbmNlcyBtdXN0IHN0aWxsIGhhdmUgdGhlaXIgbG9ja3MgcmVzZXQsCiAgICAgICAgIyBiZWNhdXNlIHNvbWVvbmUgbWF5IGpvaW4oKSB0aGVtLgogICAgICAgIHRocmVhZHMgPSBzZXQoX2VudW1lcmF0ZSgpKQogICAgICAgIHRocmVhZHMudXBkYXRlKF9kYW5nbGluZykKICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZHM6CiAgICAgICAgICAgICMgQW55IGxvY2svY29uZGl0aW9uIHZhcmlhYmxlIG1heSBiZSBjdXJyZW50bHkgbG9ja2VkIG9yIGluIGFuCiAgICAgICAgICAgICMgaW52YWxpZCBzdGF0ZSwgc28gd2UgcmVpbml0aWFsaXplIHRoZW0uCiAgICAgICAgICAgIGlmIHRocmVhZCBpcyBjdXJyZW50OgogICAgICAgICAgICAgICAgIyBUaGVyZSBpcyBvbmx5IG9uZSBhY3RpdmUgdGhyZWFkLiBXZSByZXNldCB0aGUgaWRlbnQgdG8KICAgICAgICAgICAgICAgICMgaXRzIG5ldyB2YWx1ZSBzaW5jZSBpdCBjYW4gaGF2ZSBjaGFuZ2VkLgogICAgICAgICAgICAgICAgdGhyZWFkLl9yZXNldF9pbnRlcm5hbF9sb2NrcyhUcnVlKQogICAgICAgICAgICAgICAgaWRlbnQgPSBnZXRfaWRlbnQoKQogICAgICAgICAgICAgICAgdGhyZWFkLl9pZGVudCA9IGlkZW50CiAgICAgICAgICAgICAgICBuZXdfYWN0aXZlW2lkZW50XSA9IHRocmVhZAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBBbGwgdGhlIG90aGVycyBhcmUgYWxyZWFkeSBzdG9wcGVkLgogICAgICAgICAgICAgICAgdGhyZWFkLl9yZXNldF9pbnRlcm5hbF9sb2NrcyhGYWxzZSkKICAgICAgICAgICAgICAgIHRocmVhZC5fc3RvcCgpCgogICAgICAgIF9saW1iby5jbGVhcigpCiAgICAgICAgX2FjdGl2ZS5jbGVhcigpCiAgICAgICAgX2FjdGl2ZS51cGRhdGUobmV3X2FjdGl2ZSkKICAgICAgICBhc3NlcnQgbGVuKF9hY3RpdmUpID09IDEKCgppZiBoYXNhdHRyKF9vcywgInJlZ2lzdGVyX2F0X2ZvcmsiKToKICAgIF9vcy5yZWdpc3Rlcl9hdF9mb3JrKGFmdGVyX2luX2NoaWxkPV9hZnRlcl9mb3JrKQpQSwMEFAAAAAAAAiCjVhPun+m3NAAAtzQAAAkAAAB0aW1laXQucHkjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKIiIiVG9vbCBmb3IgbWVhc3VyaW5nIGV4ZWN1dGlvbiB0aW1lIG9mIHNtYWxsIGNvZGUgc25pcHBldHMuCgpUaGlzIG1vZHVsZSBhdm9pZHMgYSBudW1iZXIgb2YgY29tbW9uIHRyYXBzIGZvciBtZWFzdXJpbmcgZXhlY3V0aW9uCnRpbWVzLiAgU2VlIGFsc28gVGltIFBldGVycycgaW50cm9kdWN0aW9uIHRvIHRoZSBBbGdvcml0aG1zIGNoYXB0ZXIgaW4KdGhlIFB5dGhvbiBDb29rYm9vaywgcHVibGlzaGVkIGJ5IE8nUmVpbGx5LgoKTGlicmFyeSB1c2FnZTogc2VlIHRoZSBUaW1lciBjbGFzcy4KCkNvbW1hbmQgbGluZSB1c2FnZToKICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy1wXSBbLWhdIFstLV0gW3N0YXRlbWVudF0KCk9wdGlvbnM6CiAgLW4vLS1udW1iZXIgTjogaG93IG1hbnkgdGltZXMgdG8gZXhlY3V0ZSAnc3RhdGVtZW50JyAoZGVmYXVsdDogc2VlIGJlbG93KQogIC1yLy0tcmVwZWF0IE46IGhvdyBtYW55IHRpbWVzIHRvIHJlcGVhdCB0aGUgdGltZXIgKGRlZmF1bHQgNSkKICAtcy8tLXNldHVwIFM6IHN0YXRlbWVudCB0byBiZSBleGVjdXRlZCBvbmNlIGluaXRpYWxseSAoZGVmYXVsdCAncGFzcycpLgogICAgICAgICAgICAgICAgRXhlY3V0aW9uIHRpbWUgb2YgdGhpcyBzZXR1cCBzdGF0ZW1lbnQgaXMgTk9UIHRpbWVkLgogIC1wLy0tcHJvY2VzczogdXNlIHRpbWUucHJvY2Vzc190aW1lKCkgKGRlZmF1bHQgaXMgdGltZS5wZXJmX2NvdW50ZXIoKSkKICAtdi8tLXZlcmJvc2U6IHByaW50IHJhdyB0aW1pbmcgcmVzdWx0czsgcmVwZWF0IGZvciBtb3JlIGRpZ2l0cyBwcmVjaXNpb24KICAtdS8tLXVuaXQ6IHNldCB0aGUgb3V0cHV0IHRpbWUgdW5pdCAobnNlYywgdXNlYywgbXNlYywgb3Igc2VjKQogIC1oLy0taGVscDogcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlIGFuZCBleGl0CiAgLS06IHNlcGFyYXRlIG9wdGlvbnMgZnJvbSBzdGF0ZW1lbnQsIHVzZSB3aGVuIHN0YXRlbWVudCBzdGFydHMgd2l0aCAtCiAgc3RhdGVtZW50OiBzdGF0ZW1lbnQgdG8gYmUgdGltZWQgKGRlZmF1bHQgJ3Bhc3MnKQoKQSBtdWx0aS1saW5lIHN0YXRlbWVudCBtYXkgYmUgZ2l2ZW4gYnkgc3BlY2lmeWluZyBlYWNoIGxpbmUgYXMgYQpzZXBhcmF0ZSBhcmd1bWVudDsgaW5kZW50ZWQgbGluZXMgYXJlIHBvc3NpYmxlIGJ5IGVuY2xvc2luZyBhbgphcmd1bWVudCBpbiBxdW90ZXMgYW5kIHVzaW5nIGxlYWRpbmcgc3BhY2VzLiAgTXVsdGlwbGUgLXMgb3B0aW9ucyBhcmUKdHJlYXRlZCBzaW1pbGFybHkuCgpJZiAtbiBpcyBub3QgZ2l2ZW4sIGEgc3VpdGFibGUgbnVtYmVyIG9mIGxvb3BzIGlzIGNhbGN1bGF0ZWQgYnkgdHJ5aW5nCmluY3JlYXNpbmcgbnVtYmVycyBmcm9tIHRoZSBzZXF1ZW5jZSAxLCAyLCA1LCAxMCwgMjAsIDUwLCAuLi4gdW50aWwgdGhlCnRvdGFsIHRpbWUgaXMgYXQgbGVhc3QgMC4yIHNlY29uZHMuCgpOb3RlOiB0aGVyZSBpcyBhIGNlcnRhaW4gYmFzZWxpbmUgb3ZlcmhlYWQgYXNzb2NpYXRlZCB3aXRoIGV4ZWN1dGluZyBhCnBhc3Mgc3RhdGVtZW50LiAgSXQgZGlmZmVycyBiZXR3ZWVuIHZlcnNpb25zLiAgVGhlIGNvZGUgaGVyZSBkb2Vzbid0IHRyeQp0byBoaWRlIGl0LCBidXQgeW91IHNob3VsZCBiZSBhd2FyZSBvZiBpdC4gIFRoZSBiYXNlbGluZSBvdmVyaGVhZCBjYW4gYmUKbWVhc3VyZWQgYnkgaW52b2tpbmcgdGhlIHByb2dyYW0gd2l0aG91dCBhcmd1bWVudHMuCgpDbGFzc2VzOgoKICAgIFRpbWVyCgpGdW5jdGlvbnM6CgogICAgdGltZWl0KHN0cmluZywgc3RyaW5nKSAtPiBmbG9hdAogICAgcmVwZWF0KHN0cmluZywgc3RyaW5nKSAtPiBsaXN0CiAgICBkZWZhdWx0X3RpbWVyKCkgLT4gZmxvYXQKCiIiIgoKaW1wb3J0IGdjCmltcG9ydCBzeXMKaW1wb3J0IHRpbWUKaW1wb3J0IGl0ZXJ0b29scwoKX19hbGxfXyA9IFsiVGltZXIiLCAidGltZWl0IiwgInJlcGVhdCIsICJkZWZhdWx0X3RpbWVyIl0KCmR1bW15X3NyY19uYW1lID0gIjx0aW1laXQtc3JjPiIKZGVmYXVsdF9udW1iZXIgPSAxMDAwMDAwCmRlZmF1bHRfcmVwZWF0ID0gNQpkZWZhdWx0X3RpbWVyID0gdGltZS5wZXJmX2NvdW50ZXIKCl9nbG9iYWxzID0gZ2xvYmFscwoKIyBEb24ndCBjaGFuZ2UgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZTsgdGhlIHJlaW5kZW50KCkgY2FsbHMKIyBpbiBUaW1lci5fX2luaXRfXygpIGRlcGVuZCBvbiBzZXR1cCBiZWluZyBpbmRlbnRlZCA0IHNwYWNlcyBhbmQgc3RtdAojIGJlaW5nIGluZGVudGVkIDggc3BhY2VzLgp0ZW1wbGF0ZSA9ICIiIgpkZWYgaW5uZXIoX2l0LCBfdGltZXJ7aW5pdH0pOgogICAge3NldHVwfQogICAgX3QwID0gX3RpbWVyKCkKICAgIGZvciBfaSBpbiBfaXQ6CiAgICAgICAge3N0bXR9CiAgICAgICAgcGFzcwogICAgX3QxID0gX3RpbWVyKCkKICAgIHJldHVybiBfdDEgLSBfdDAKIiIiCgpkZWYgcmVpbmRlbnQoc3JjLCBpbmRlbnQpOgogICAgIiIiSGVscGVyIHRvIHJlaW5kZW50IGEgbXVsdGktbGluZSBzdGF0ZW1lbnQuIiIiCiAgICByZXR1cm4gc3JjLnJlcGxhY2UoIlxuIiwgIlxuIiArICIgIippbmRlbnQpCgpjbGFzcyBUaW1lcjoKICAgICIiIkNsYXNzIGZvciB0aW1pbmcgZXhlY3V0aW9uIHNwZWVkIG9mIHNtYWxsIGNvZGUgc25pcHBldHMuCgogICAgVGhlIGNvbnN0cnVjdG9yIHRha2VzIGEgc3RhdGVtZW50IHRvIGJlIHRpbWVkLCBhbiBhZGRpdGlvbmFsCiAgICBzdGF0ZW1lbnQgdXNlZCBmb3Igc2V0dXAsIGFuZCBhIHRpbWVyIGZ1bmN0aW9uLiAgQm90aCBzdGF0ZW1lbnRzCiAgICBkZWZhdWx0IHRvICdwYXNzJzsgdGhlIHRpbWVyIGZ1bmN0aW9uIGlzIHBsYXRmb3JtLWRlcGVuZGVudCAoc2VlCiAgICBtb2R1bGUgZG9jIHN0cmluZykuICBJZiAnZ2xvYmFscycgaXMgc3BlY2lmaWVkLCB0aGUgY29kZSB3aWxsIGJlCiAgICBleGVjdXRlZCB3aXRoaW4gdGhhdCBuYW1lc3BhY2UgKGFzIG9wcG9zZWQgdG8gaW5zaWRlIHRpbWVpdCdzCiAgICBuYW1lc3BhY2UpLgoKICAgIFRvIG1lYXN1cmUgdGhlIGV4ZWN1dGlvbiB0aW1lIG9mIHRoZSBmaXJzdCBzdGF0ZW1lbnQsIHVzZSB0aGUKICAgIHRpbWVpdCgpIG1ldGhvZC4gIFRoZSByZXBlYXQoKSBtZXRob2QgaXMgYSBjb252ZW5pZW5jZSB0byBjYWxsCiAgICB0aW1laXQoKSBtdWx0aXBsZSB0aW1lcyBhbmQgcmV0dXJuIGEgbGlzdCBvZiByZXN1bHRzLgoKICAgIFRoZSBzdGF0ZW1lbnRzIG1heSBjb250YWluIG5ld2xpbmVzLCBhcyBsb25nIGFzIHRoZXkgZG9uJ3QgY29udGFpbgogICAgbXVsdGktbGluZSBzdHJpbmcgbGl0ZXJhbHMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKICAgICAgICAgICAgICAgICBnbG9iYWxzPU5vbmUpOgogICAgICAgICIiIkNvbnN0cnVjdG9yLiAgU2VlIGNsYXNzIGRvYyBzdHJpbmcuIiIiCiAgICAgICAgc2VsZi50aW1lciA9IHRpbWVyCiAgICAgICAgbG9jYWxfbnMgPSB7fQogICAgICAgIGdsb2JhbF9ucyA9IF9nbG9iYWxzKCkgaWYgZ2xvYmFscyBpcyBOb25lIGVsc2UgZ2xvYmFscwogICAgICAgIGluaXQgPSAnJwogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6CiAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgY29kZSBjYW4gYmUgY29tcGlsZWQgb3V0c2lkZSBhIGZ1bmN0aW9uCiAgICAgICAgICAgIGNvbXBpbGUoc2V0dXAsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCiAgICAgICAgICAgIHN0bXRwcmVmaXggPSBzZXR1cCArICdcbicKICAgICAgICAgICAgc2V0dXAgPSByZWluZGVudChzZXR1cCwgNCkKICAgICAgICBlbGlmIGNhbGxhYmxlKHNldHVwKToKICAgICAgICAgICAgbG9jYWxfbnNbJ19zZXR1cCddID0gc2V0dXAKICAgICAgICAgICAgaW5pdCArPSAnLCBfc2V0dXA9X3NldHVwJwogICAgICAgICAgICBzdG10cHJlZml4ID0gJycKICAgICAgICAgICAgc2V0dXAgPSAnX3NldHVwKCknCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2V0dXAgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQogICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RtdCwgc3RyKToKICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBjb2RlIGNhbiBiZSBjb21waWxlZCBvdXRzaWRlIGEgZnVuY3Rpb24KICAgICAgICAgICAgY29tcGlsZShzdG10cHJlZml4ICsgc3RtdCwgZHVtbXlfc3JjX25hbWUsICJleGVjIikKICAgICAgICAgICAgc3RtdCA9IHJlaW5kZW50KHN0bXQsIDgpCiAgICAgICAgZWxpZiBjYWxsYWJsZShzdG10KToKICAgICAgICAgICAgbG9jYWxfbnNbJ19zdG10J10gPSBzdG10CiAgICAgICAgICAgIGluaXQgKz0gJywgX3N0bXQ9X3N0bXQnCiAgICAgICAgICAgIHN0bXQgPSAnX3N0bXQoKScKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzdG10IGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCwgaW5pdD1pbml0KQogICAgICAgIHNlbGYuc3JjID0gc3JjICAjIFNhdmUgZm9yIHRyYWNlYmFjayBkaXNwbGF5CiAgICAgICAgY29kZSA9IGNvbXBpbGUoc3JjLCBkdW1teV9zcmNfbmFtZSwgImV4ZWMiKQogICAgICAgIGV4ZWMoY29kZSwgZ2xvYmFsX25zLCBsb2NhbF9ucykKICAgICAgICBzZWxmLmlubmVyID0gbG9jYWxfbnNbImlubmVyIl0KCiAgICBkZWYgcHJpbnRfZXhjKHNlbGYsIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiSGVscGVyIHRvIHByaW50IGEgdHJhY2ViYWNrIGZyb20gdGhlIHRpbWVkIGNvZGUuCgogICAgICAgIFR5cGljYWwgdXNlOgoKICAgICAgICAgICAgdCA9IFRpbWVyKC4uLikgICAgICAgIyBvdXRzaWRlIHRoZSB0cnkvZXhjZXB0CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHQudGltZWl0KC4uLikgICAgIyBvciB0LnJlcGVhdCguLi4pCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHQucHJpbnRfZXhjKCkKCiAgICAgICAgVGhlIGFkdmFudGFnZSBvdmVyIHRoZSBzdGFuZGFyZCB0cmFjZWJhY2sgaXMgdGhhdCBzb3VyY2UgbGluZXMKICAgICAgICBpbiB0aGUgY29tcGlsZWQgdGVtcGxhdGUgd2lsbCBiZSBkaXNwbGF5ZWQuCgogICAgICAgIFRoZSBvcHRpb25hbCBmaWxlIGFyZ3VtZW50IGRpcmVjdHMgd2hlcmUgdGhlIHRyYWNlYmFjayBpcwogICAgICAgIHNlbnQ7IGl0IGRlZmF1bHRzIHRvIHN5cy5zdGRlcnIuCiAgICAgICAgIiIiCiAgICAgICAgaW1wb3J0IGxpbmVjYWNoZSwgdHJhY2ViYWNrCiAgICAgICAgaWYgc2VsZi5zcmMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGxpbmVjYWNoZS5jYWNoZVtkdW1teV9zcmNfbmFtZV0gPSAobGVuKHNlbGYuc3JjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3JjLnNwbGl0KCJcbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bW15X3NyY19uYW1lKQogICAgICAgICMgZWxzZSB0aGUgc291cmNlIGlzIGFscmVhZHkgc3RvcmVkIHNvbWV3aGVyZSBlbHNlCgogICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1maWxlKQoKICAgIGRlZiB0aW1laXQoc2VsZiwgbnVtYmVyPWRlZmF1bHRfbnVtYmVyKToKICAgICAgICAiIiJUaW1lICdudW1iZXInIGV4ZWN1dGlvbnMgb2YgdGhlIG1haW4gc3RhdGVtZW50LgoKICAgICAgICBUbyBiZSBwcmVjaXNlLCB0aGlzIGV4ZWN1dGVzIHRoZSBzZXR1cCBzdGF0ZW1lbnQgb25jZSwgYW5kCiAgICAgICAgdGhlbiByZXR1cm5zIHRoZSB0aW1lIGl0IHRha2VzIHRvIGV4ZWN1dGUgdGhlIG1haW4gc3RhdGVtZW50CiAgICAgICAgYSBudW1iZXIgb2YgdGltZXMsIGFzIGEgZmxvYXQgbWVhc3VyZWQgaW4gc2Vjb25kcy4gIFRoZQogICAgICAgIGFyZ3VtZW50IGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhyb3VnaCB0aGUgbG9vcCwgZGVmYXVsdGluZwogICAgICAgIHRvIG9uZSBtaWxsaW9uLiAgVGhlIG1haW4gc3RhdGVtZW50LCB0aGUgc2V0dXAgc3RhdGVtZW50IGFuZAogICAgICAgIHRoZSB0aW1lciBmdW5jdGlvbiB0byBiZSB1c2VkIGFyZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLgogICAgICAgICIiIgogICAgICAgIGl0ID0gaXRlcnRvb2xzLnJlcGVhdChOb25lLCBudW1iZXIpCiAgICAgICAgZ2NvbGQgPSBnYy5pc2VuYWJsZWQoKQogICAgICAgIGdjLmRpc2FibGUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgdGltaW5nID0gc2VsZi5pbm5lcihpdCwgc2VsZi50aW1lcikKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBnY29sZDoKICAgICAgICAgICAgICAgIGdjLmVuYWJsZSgpCiAgICAgICAgcmV0dXJuIHRpbWluZwoKICAgIGRlZiByZXBlYXQoc2VsZiwgcmVwZWF0PWRlZmF1bHRfcmVwZWF0LCBudW1iZXI9ZGVmYXVsdF9udW1iZXIpOgogICAgICAgICIiIkNhbGwgdGltZWl0KCkgYSBmZXcgdGltZXMuCgogICAgICAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSB0aW1laXQoKQogICAgICAgIHJlcGVhdGVkbHksIHJldHVybmluZyBhIGxpc3Qgb2YgcmVzdWx0cy4gIFRoZSBmaXJzdCBhcmd1bWVudAogICAgICAgIHNwZWNpZmllcyBob3cgbWFueSB0aW1lcyB0byBjYWxsIHRpbWVpdCgpLCBkZWZhdWx0aW5nIHRvIDU7CiAgICAgICAgdGhlIHNlY29uZCBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHRpbWVyIGFyZ3VtZW50LCBkZWZhdWx0aW5nCiAgICAgICAgdG8gb25lIG1pbGxpb24uCgogICAgICAgIE5vdGU6IGl0J3MgdGVtcHRpbmcgdG8gY2FsY3VsYXRlIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbgogICAgICAgIGZyb20gdGhlIHJlc3VsdCB2ZWN0b3IgYW5kIHJlcG9ydCB0aGVzZS4gIEhvd2V2ZXIsIHRoaXMgaXMgbm90CiAgICAgICAgdmVyeSB1c2VmdWwuICBJbiBhIHR5cGljYWwgY2FzZSwgdGhlIGxvd2VzdCB2YWx1ZSBnaXZlcyBhCiAgICAgICAgbG93ZXIgYm91bmQgZm9yIGhvdyBmYXN0IHlvdXIgbWFjaGluZSBjYW4gcnVuIHRoZSBnaXZlbiBjb2RlCiAgICAgICAgc25pcHBldDsgaGlnaGVyIHZhbHVlcyBpbiB0aGUgcmVzdWx0IHZlY3RvciBhcmUgdHlwaWNhbGx5IG5vdAogICAgICAgIGNhdXNlZCBieSB2YXJpYWJpbGl0eSBpbiBQeXRob24ncyBzcGVlZCwgYnV0IGJ5IG90aGVyCiAgICAgICAgcHJvY2Vzc2VzIGludGVyZmVyaW5nIHdpdGggeW91ciB0aW1pbmcgYWNjdXJhY3kuICBTbyB0aGUgbWluKCkKICAgICAgICBvZiB0aGUgcmVzdWx0IGlzIHByb2JhYmx5IHRoZSBvbmx5IG51bWJlciB5b3Ugc2hvdWxkIGJlCiAgICAgICAgaW50ZXJlc3RlZCBpbi4gIEFmdGVyIHRoYXQsIHlvdSBzaG91bGQgbG9vayBhdCB0aGUgZW50aXJlCiAgICAgICAgdmVjdG9yIGFuZCBhcHBseSBjb21tb24gc2Vuc2UgcmF0aGVyIHRoYW4gc3RhdGlzdGljcy4KICAgICAgICAiIiIKICAgICAgICByID0gW10KICAgICAgICBmb3IgaSBpbiByYW5nZShyZXBlYXQpOgogICAgICAgICAgICB0ID0gc2VsZi50aW1laXQobnVtYmVyKQogICAgICAgICAgICByLmFwcGVuZCh0KQogICAgICAgIHJldHVybiByCgogICAgZGVmIGF1dG9yYW5nZShzZWxmLCBjYWxsYmFjaz1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBsb29wcyBhbmQgdGltZSB0YWtlbiBzbyB0aGF0IHRvdGFsIHRpbWUgPj0gMC4yLgoKICAgICAgICBDYWxscyB0aGUgdGltZWl0IG1ldGhvZCB3aXRoIGluY3JlYXNpbmcgbnVtYmVycyBmcm9tIHRoZSBzZXF1ZW5jZQogICAgICAgIDEsIDIsIDUsIDEwLCAyMCwgNTAsIC4uLiB1bnRpbCB0aGUgdGltZSB0YWtlbiBpcyBhdCBsZWFzdCAwLjIKICAgICAgICBzZWNvbmQuICBSZXR1cm5zIChudW1iZXIsIHRpbWVfdGFrZW4pLgoKICAgICAgICBJZiAqY2FsbGJhY2sqIGlzIGdpdmVuIGFuZCBpcyBub3QgTm9uZSwgaXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIKICAgICAgICBlYWNoIHRyaWFsIHdpdGggdHdvIGFyZ3VtZW50czogYGBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pYGAuCiAgICAgICAgIiIiCiAgICAgICAgaSA9IDEKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBmb3IgaiBpbiAxLCAyLCA1OgogICAgICAgICAgICAgICAgbnVtYmVyID0gaSAqIGoKICAgICAgICAgICAgICAgIHRpbWVfdGFrZW4gPSBzZWxmLnRpbWVpdChudW1iZXIpCiAgICAgICAgICAgICAgICBpZiBjYWxsYmFjazoKICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pCiAgICAgICAgICAgICAgICBpZiB0aW1lX3Rha2VuID49IDAuMjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG51bWJlciwgdGltZV90YWtlbikKICAgICAgICAgICAgaSAqPSAxMAoKZGVmIHRpbWVpdChzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyLAogICAgICAgICAgIG51bWJlcj1kZWZhdWx0X251bWJlciwgZ2xvYmFscz1Ob25lKToKICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgdGltZWl0IG1ldGhvZC4iIiIKICAgIHJldHVybiBUaW1lcihzdG10LCBzZXR1cCwgdGltZXIsIGdsb2JhbHMpLnRpbWVpdChudW1iZXIpCgpkZWYgcmVwZWF0KHN0bXQ9InBhc3MiLCBzZXR1cD0icGFzcyIsIHRpbWVyPWRlZmF1bHRfdGltZXIsCiAgICAgICAgICAgcmVwZWF0PWRlZmF1bHRfcmVwZWF0LCBudW1iZXI9ZGVmYXVsdF9udW1iZXIsIGdsb2JhbHM9Tm9uZSk6CiAgICAiIiJDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVhdGUgVGltZXIgb2JqZWN0IGFuZCBjYWxsIHJlcGVhdCBtZXRob2QuIiIiCiAgICByZXR1cm4gVGltZXIoc3RtdCwgc2V0dXAsIHRpbWVyLCBnbG9iYWxzKS5yZXBlYXQocmVwZWF0LCBudW1iZXIpCgpkZWYgbWFpbihhcmdzPU5vbmUsICosIF93cmFwX3RpbWVyPU5vbmUpOgogICAgIiIiTWFpbiBwcm9ncmFtLCB1c2VkIHdoZW4gcnVuIGFzIGEgc2NyaXB0LgoKICAgIFRoZSBvcHRpb25hbCAnYXJncycgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBjb21tYW5kIGxpbmUgdG8gYmUgcGFyc2VkLAogICAgZGVmYXVsdGluZyB0byBzeXMuYXJndlsxOl0uCgogICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBleGl0IGNvZGUgdG8gYmUgcGFzc2VkIHRvIHN5cy5leGl0KCk7IGl0CiAgICBtYXkgYmUgTm9uZSB0byBpbmRpY2F0ZSBzdWNjZXNzLgoKICAgIFdoZW4gYW4gZXhjZXB0aW9uIGhhcHBlbnMgZHVyaW5nIHRpbWluZywgYSB0cmFjZWJhY2sgaXMgcHJpbnRlZCB0bwogICAgc3RkZXJyIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIDEuICBFeGNlcHRpb25zIGF0IG90aGVyIHRpbWVzCiAgICAoaW5jbHVkaW5nIHRoZSB0ZW1wbGF0ZSBjb21waWxhdGlvbikgYXJlIG5vdCBjYXVnaHQuCgogICAgJ193cmFwX3RpbWVyJyBpcyBhbiBpbnRlcm5hbCBpbnRlcmZhY2UgdXNlZCBmb3IgdW5pdCB0ZXN0aW5nLiAgSWYgaXQKICAgIGlzIG5vdCBOb25lLCBpdCBtdXN0IGJlIGEgY2FsbGFibGUgdGhhdCBhY2NlcHRzIGEgdGltZXIgZnVuY3Rpb24KICAgIGFuZCByZXR1cm5zIGFub3RoZXIgdGltZXIgZnVuY3Rpb24gKHVzZWQgZm9yIHVuaXQgdGVzdGluZykuCiAgICAiIiIKICAgIGlmIGFyZ3MgaXMgTm9uZToKICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCiAgICBpbXBvcnQgZ2V0b3B0CiAgICB0cnk6CiAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46dTpzOnI6dGNwdmgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibnVtYmVyPSIsICJzZXR1cD0iLCAicmVwZWF0PSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIiwgImNsb2NrIiwgInByb2Nlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyYm9zZSIsICJ1bml0PSIsICJoZWxwIl0pCiAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGVycjoKICAgICAgICBwcmludChlcnIpCiAgICAgICAgcHJpbnQoInVzZSAtaC8tLWhlbHAgZm9yIGNvbW1hbmQgbGluZSBoZWxwIikKICAgICAgICByZXR1cm4gMgoKICAgIHRpbWVyID0gZGVmYXVsdF90aW1lcgogICAgc3RtdCA9ICJcbiIuam9pbihhcmdzKSBvciAicGFzcyIKICAgIG51bWJlciA9IDAgIyBhdXRvLWRldGVybWluZQogICAgc2V0dXAgPSBbXQogICAgcmVwZWF0ID0gZGVmYXVsdF9yZXBlYXQKICAgIHZlcmJvc2UgPSAwCiAgICB0aW1lX3VuaXQgPSBOb25lCiAgICB1bml0cyA9IHsibnNlYyI6IDFlLTksICJ1c2VjIjogMWUtNiwgIm1zZWMiOiAxZS0zLCAic2VjIjogMS4wfQogICAgcHJlY2lzaW9uID0gMwogICAgZm9yIG8sIGEgaW4gb3B0czoKICAgICAgICBpZiBvIGluICgiLW4iLCAiLS1udW1iZXIiKToKICAgICAgICAgICAgbnVtYmVyID0gaW50KGEpCiAgICAgICAgaWYgbyBpbiAoIi1zIiwgIi0tc2V0dXAiKToKICAgICAgICAgICAgc2V0dXAuYXBwZW5kKGEpCiAgICAgICAgaWYgbyBpbiAoIi11IiwgIi0tdW5pdCIpOgogICAgICAgICAgICBpZiBhIGluIHVuaXRzOgogICAgICAgICAgICAgICAgdGltZV91bml0ID0gYQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcHJpbnQoIlVucmVjb2duaXplZCB1bml0LiBQbGVhc2Ugc2VsZWN0IG5zZWMsIHVzZWMsIG1zZWMsIG9yIHNlYy4iLAogICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgICAgIHJldHVybiAyCiAgICAgICAgaWYgbyBpbiAoIi1yIiwgIi0tcmVwZWF0Iik6CiAgICAgICAgICAgIHJlcGVhdCA9IGludChhKQogICAgICAgICAgICBpZiByZXBlYXQgPD0gMDoKICAgICAgICAgICAgICAgIHJlcGVhdCA9IDEKICAgICAgICBpZiBvIGluICgiLXAiLCAiLS1wcm9jZXNzIik6CiAgICAgICAgICAgIHRpbWVyID0gdGltZS5wcm9jZXNzX3RpbWUKICAgICAgICBpZiBvIGluICgiLXYiLCAiLS12ZXJib3NlIik6CiAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICBwcmVjaXNpb24gKz0gMQogICAgICAgICAgICB2ZXJib3NlICs9IDEKICAgICAgICBpZiBvIGluICgiLWgiLCAiLS1oZWxwIik6CiAgICAgICAgICAgIHByaW50KF9fZG9jX18sIGVuZD0nICcpCiAgICAgICAgICAgIHJldHVybiAwCiAgICBzZXR1cCA9ICJcbiIuam9pbihzZXR1cCkgb3IgInBhc3MiCgogICAgIyBJbmNsdWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgc28gdGhhdCBsb2NhbCBpbXBvcnRzIHdvcmsgKHN5cy5wYXRoCiAgICAjIGNvbnRhaW5zIHRoZSBkaXJlY3Rvcnkgb2YgdGhpcyBzY3JpcHQsIHJhdGhlciB0aGFuIHRoZSBjdXJyZW50CiAgICAjIGRpcmVjdG9yeSkKICAgIGltcG9ydCBvcwogICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKICAgIGlmIF93cmFwX3RpbWVyIGlzIG5vdCBOb25lOgogICAgICAgIHRpbWVyID0gX3dyYXBfdGltZXIodGltZXIpCgogICAgdCA9IFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lcikKICAgIGlmIG51bWJlciA9PSAwOgogICAgICAgICMgZGV0ZXJtaW5lIG51bWJlciBzbyB0aGF0IDAuMiA8PSB0b3RhbCB0aW1lIDwgMi4wCiAgICAgICAgY2FsbGJhY2sgPSBOb25lCiAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgZGVmIGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbik6CiAgICAgICAgICAgICAgICBtc2cgPSAie251bX0gbG9vcHtzfSAtPiB7c2Vjczoue3ByZWN9Z30gc2VjcyIKICAgICAgICAgICAgICAgIHBsdXJhbCA9IChudW1iZXIgIT0gMSkKICAgICAgICAgICAgICAgIHByaW50KG1zZy5mb3JtYXQobnVtPW51bWJlciwgcz0ncycgaWYgcGx1cmFsIGVsc2UgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNzPXRpbWVfdGFrZW4sIHByZWM9cHJlY2lzaW9uKSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG51bWJlciwgXyA9IHQuYXV0b3JhbmdlKGNhbGxiYWNrKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgdC5wcmludF9leGMoKQogICAgICAgICAgICByZXR1cm4gMQoKICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICBwcmludCgpCgogICAgdHJ5OgogICAgICAgIHJhd190aW1pbmdzID0gdC5yZXBlYXQocmVwZWF0LCBudW1iZXIpCiAgICBleGNlcHQ6CiAgICAgICAgdC5wcmludF9leGMoKQogICAgICAgIHJldHVybiAxCgogICAgZGVmIGZvcm1hdF90aW1lKGR0KToKICAgICAgICB1bml0ID0gdGltZV91bml0CgogICAgICAgIGlmIHVuaXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNjYWxlID0gdW5pdHNbdW5pdF0KICAgICAgICBlbHNlOgogICAgICAgICAgICBzY2FsZXMgPSBbKHNjYWxlLCB1bml0KSBmb3IgdW5pdCwgc2NhbGUgaW4gdW5pdHMuaXRlbXMoKV0KICAgICAgICAgICAgc2NhbGVzLnNvcnQocmV2ZXJzZT1UcnVlKQogICAgICAgICAgICBmb3Igc2NhbGUsIHVuaXQgaW4gc2NhbGVzOgogICAgICAgICAgICAgICAgaWYgZHQgPj0gc2NhbGU6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgcmV0dXJuICIlLipnICVzIiAlIChwcmVjaXNpb24sIGR0IC8gc2NhbGUsIHVuaXQpCgogICAgaWYgdmVyYm9zZToKICAgICAgICBwcmludCgicmF3IHRpbWVzOiAlcyIgJSAiLCAiLmpvaW4obWFwKGZvcm1hdF90aW1lLCByYXdfdGltaW5ncykpKQogICAgICAgIHByaW50KCkKICAgIHRpbWluZ3MgPSBbZHQgLyBudW1iZXIgZm9yIGR0IGluIHJhd190aW1pbmdzXQoKICAgIGJlc3QgPSBtaW4odGltaW5ncykKICAgIHByaW50KCIlZCBsb29wJXMsIGJlc3Qgb2YgJWQ6ICVzIHBlciBsb29wIgogICAgICAgICAgJSAobnVtYmVyLCAncycgaWYgbnVtYmVyICE9IDEgZWxzZSAnJywKICAgICAgICAgICAgIHJlcGVhdCwgZm9ybWF0X3RpbWUoYmVzdCkpKQoKICAgIGJlc3QgPSBtaW4odGltaW5ncykKICAgIHdvcnN0ID0gbWF4KHRpbWluZ3MpCiAgICBpZiB3b3JzdCA+PSBiZXN0ICogNDoKICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICB3YXJuaW5ncy53YXJuX2V4cGxpY2l0KCJUaGUgdGVzdCByZXN1bHRzIGFyZSBsaWtlbHkgdW5yZWxpYWJsZS4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB3b3JzdCB0aW1lICglcykgd2FzIG1vcmUgdGhhbiBmb3VyIHRpbWVzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbG93ZXIgdGhhbiB0aGUgYmVzdCB0aW1lICglcykuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZm9ybWF0X3RpbWUod29yc3QpLCBmb3JtYXRfdGltZShiZXN0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZywgJycsIDApCiAgICByZXR1cm4gTm9uZQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHN5cy5leGl0KG1haW4oKSkKUEsDBBQAAAAAAAIgo1a7NjWfUgkAAFIJAAAIAAAAdG9rZW4ucHkiIiJUb2tlbiBjb25zdGFudHMuIiIiCiMgQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV90b2tlbi5weQoKX19hbGxfXyA9IFsndG9rX25hbWUnLCAnSVNURVJNSU5BTCcsICdJU05PTlRFUk1JTkFMJywgJ0lTRU9GJ10KCkVORE1BUktFUiA9IDAKTkFNRSA9IDEKTlVNQkVSID0gMgpTVFJJTkcgPSAzCk5FV0xJTkUgPSA0CklOREVOVCA9IDUKREVERU5UID0gNgpMUEFSID0gNwpSUEFSID0gOApMU1FCID0gOQpSU1FCID0gMTAKQ09MT04gPSAxMQpDT01NQSA9IDEyClNFTUkgPSAxMwpQTFVTID0gMTQKTUlOVVMgPSAxNQpTVEFSID0gMTYKU0xBU0ggPSAxNwpWQkFSID0gMTgKQU1QRVIgPSAxOQpMRVNTID0gMjAKR1JFQVRFUiA9IDIxCkVRVUFMID0gMjIKRE9UID0gMjMKUEVSQ0VOVCA9IDI0CkxCUkFDRSA9IDI1ClJCUkFDRSA9IDI2CkVRRVFVQUwgPSAyNwpOT1RFUVVBTCA9IDI4CkxFU1NFUVVBTCA9IDI5CkdSRUFURVJFUVVBTCA9IDMwClRJTERFID0gMzEKQ0lSQ1VNRkxFWCA9IDMyCkxFRlRTSElGVCA9IDMzClJJR0hUU0hJRlQgPSAzNApET1VCTEVTVEFSID0gMzUKUExVU0VRVUFMID0gMzYKTUlORVFVQUwgPSAzNwpTVEFSRVFVQUwgPSAzOApTTEFTSEVRVUFMID0gMzkKUEVSQ0VOVEVRVUFMID0gNDAKQU1QRVJFUVVBTCA9IDQxClZCQVJFUVVBTCA9IDQyCkNJUkNVTUZMRVhFUVVBTCA9IDQzCkxFRlRTSElGVEVRVUFMID0gNDQKUklHSFRTSElGVEVRVUFMID0gNDUKRE9VQkxFU1RBUkVRVUFMID0gNDYKRE9VQkxFU0xBU0ggPSA0NwpET1VCTEVTTEFTSEVRVUFMID0gNDgKQVQgPSA0OQpBVEVRVUFMID0gNTAKUkFSUk9XID0gNTEKRUxMSVBTSVMgPSA1MgpDT0xPTkVRVUFMID0gNTMKT1AgPSA1NApBV0FJVCA9IDU1CkFTWU5DID0gNTYKVFlQRV9JR05PUkUgPSA1NwpUWVBFX0NPTU1FTlQgPSA1OApTT0ZUX0tFWVdPUkQgPSA1OQojIFRoZXNlIGFyZW4ndCB1c2VkIGJ5IHRoZSBDIHRva2VuaXplciBidXQgYXJlIG5lZWRlZCBmb3IgdG9rZW5pemUucHkKRVJST1JUT0tFTiA9IDYwCkNPTU1FTlQgPSA2MQpOTCA9IDYyCkVOQ09ESU5HID0gNjMKTl9UT0tFTlMgPSA2NAojIFNwZWNpYWwgZGVmaW5pdGlvbnMgZm9yIGNvb3BlcmF0aW9uIHdpdGggcGFyc2VyCk5UX09GRlNFVCA9IDI1NgoKdG9rX25hbWUgPSB7dmFsdWU6IG5hbWUKICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGdsb2JhbHMoKS5pdGVtcygpCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCkgYW5kIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKX0KX19hbGxfXy5leHRlbmQodG9rX25hbWUudmFsdWVzKCkpCgpFWEFDVF9UT0tFTl9UWVBFUyA9IHsKICAgICchPSc6IE5PVEVRVUFMLAogICAgJyUnOiBQRVJDRU5ULAogICAgJyU9JzogUEVSQ0VOVEVRVUFMLAogICAgJyYnOiBBTVBFUiwKICAgICcmPSc6IEFNUEVSRVFVQUwsCiAgICAnKCc6IExQQVIsCiAgICAnKSc6IFJQQVIsCiAgICAnKic6IFNUQVIsCiAgICAnKionOiBET1VCTEVTVEFSLAogICAgJyoqPSc6IERPVUJMRVNUQVJFUVVBTCwKICAgICcqPSc6IFNUQVJFUVVBTCwKICAgICcrJzogUExVUywKICAgICcrPSc6IFBMVVNFUVVBTCwKICAgICcsJzogQ09NTUEsCiAgICAnLSc6IE1JTlVTLAogICAgJy09JzogTUlORVFVQUwsCiAgICAnLT4nOiBSQVJST1csCiAgICAnLic6IERPVCwKICAgICcuLi4nOiBFTExJUFNJUywKICAgICcvJzogU0xBU0gsCiAgICAnLy8nOiBET1VCTEVTTEFTSCwKICAgICcvLz0nOiBET1VCTEVTTEFTSEVRVUFMLAogICAgJy89JzogU0xBU0hFUVVBTCwKICAgICc6JzogQ09MT04sCiAgICAnOj0nOiBDT0xPTkVRVUFMLAogICAgJzsnOiBTRU1JLAogICAgJzwnOiBMRVNTLAogICAgJzw8JzogTEVGVFNISUZULAogICAgJzw8PSc6IExFRlRTSElGVEVRVUFMLAogICAgJzw9JzogTEVTU0VRVUFMLAogICAgJz0nOiBFUVVBTCwKICAgICc9PSc6IEVRRVFVQUwsCiAgICAnPic6IEdSRUFURVIsCiAgICAnPj0nOiBHUkVBVEVSRVFVQUwsCiAgICAnPj4nOiBSSUdIVFNISUZULAogICAgJz4+PSc6IFJJR0hUU0hJRlRFUVVBTCwKICAgICdAJzogQVQsCiAgICAnQD0nOiBBVEVRVUFMLAogICAgJ1snOiBMU1FCLAogICAgJ10nOiBSU1FCLAogICAgJ14nOiBDSVJDVU1GTEVYLAogICAgJ149JzogQ0lSQ1VNRkxFWEVRVUFMLAogICAgJ3snOiBMQlJBQ0UsCiAgICAnfCc6IFZCQVIsCiAgICAnfD0nOiBWQkFSRVFVQUwsCiAgICAnfSc6IFJCUkFDRSwKICAgICd+JzogVElMREUsCn0KCmRlZiBJU1RFUk1JTkFMKHgpOgogICAgcmV0dXJuIHggPCBOVF9PRkZTRVQKCmRlZiBJU05PTlRFUk1JTkFMKHgpOgogICAgcmV0dXJuIHggPj0gTlRfT0ZGU0VUCgpkZWYgSVNFT0YoeCk6CiAgICByZXR1cm4geCA9PSBFTkRNQVJLRVIKUEsDBBQAAAAAAAIgo1aqCeJ04GYAAOBmAAALAAAAdG9rZW5pemUucHkiIiJUb2tlbml6YXRpb24gaGVscCBmb3IgUHl0aG9uIHByb2dyYW1zLgoKdG9rZW5pemUocmVhZGxpbmUpIGlzIGEgZ2VuZXJhdG9yIHRoYXQgYnJlYWtzIGEgc3RyZWFtIG9mIGJ5dGVzIGludG8KUHl0aG9uIHRva2Vucy4gIEl0IGRlY29kZXMgdGhlIGJ5dGVzIGFjY29yZGluZyB0byBQRVAtMDI2MyBmb3IKZGV0ZXJtaW5pbmcgc291cmNlIGZpbGUgZW5jb2RpbmcuCgpJdCBhY2NlcHRzIGEgcmVhZGxpbmUtbGlrZSBtZXRob2Qgd2hpY2ggaXMgY2FsbGVkIHJlcGVhdGVkbHkgdG8gZ2V0IHRoZQpuZXh0IGxpbmUgb2YgaW5wdXQgKG9yIGIiIiBmb3IgRU9GKS4gIEl0IGdlbmVyYXRlcyA1LXR1cGxlcyB3aXRoIHRoZXNlCm1lbWJlcnM6CgogICAgdGhlIHRva2VuIHR5cGUgKHNlZSB0b2tlbi5weSkKICAgIHRoZSB0b2tlbiAoYSBzdHJpbmcpCiAgICB0aGUgc3RhcnRpbmcgKHJvdywgY29sdW1uKSBpbmRpY2VzIG9mIHRoZSB0b2tlbiAoYSAyLXR1cGxlIG9mIGludHMpCiAgICB0aGUgZW5kaW5nIChyb3csIGNvbHVtbikgaW5kaWNlcyBvZiB0aGUgdG9rZW4gKGEgMi10dXBsZSBvZiBpbnRzKQogICAgdGhlIG9yaWdpbmFsIGxpbmUgKHN0cmluZykKCkl0IGlzIGRlc2lnbmVkIHRvIG1hdGNoIHRoZSB3b3JraW5nIG9mIHRoZSBQeXRob24gdG9rZW5pemVyIGV4YWN0bHksIGV4Y2VwdAp0aGF0IGl0IHByb2R1Y2VzIENPTU1FTlQgdG9rZW5zIGZvciBjb21tZW50cyBhbmQgZ2l2ZXMgdHlwZSBPUCBmb3IgYWxsCm9wZXJhdG9ycy4gIEFkZGl0aW9uYWxseSwgYWxsIHRva2VuIGxpc3RzIHN0YXJ0IHdpdGggYW4gRU5DT0RJTkcgdG9rZW4Kd2hpY2ggdGVsbHMgeW91IHdoaWNoIGVuY29kaW5nIHdhcyB1c2VkIHRvIGRlY29kZSB0aGUgYnl0ZXMgc3RyZWFtLgoiIiIKCl9fYXV0aG9yX18gPSAnS2EtUGluZyBZZWUgPHBpbmdAbGZ3Lm9yZz4nCl9fY3JlZGl0c19fID0gKCdHdlIsIEVTUiwgVGltIFBldGVycywgVGhvbWFzIFdvdXRlcnMsIEZyZWQgRHJha2UsICcKICAgICAgICAgICAgICAgJ1NraXAgTW9udGFuYXJvLCBSYXltb25kIEhldHRpbmdlciwgVHJlbnQgTmVsc29uLCAnCiAgICAgICAgICAgICAgICdNaWNoYWVsIEZvb3JkJykKZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfYnVpbHRpbl9vcGVuCmZyb20gY29kZWNzIGltcG9ydCBsb29rdXAsIEJPTV9VVEY4CmltcG9ydCBjb2xsZWN0aW9ucwppbXBvcnQgZnVuY3Rvb2xzCmZyb20gaW8gaW1wb3J0IFRleHRJT1dyYXBwZXIKaW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCmltcG9ydCByZQppbXBvcnQgc3lzCmZyb20gdG9rZW4gaW1wb3J0ICoKZnJvbSB0b2tlbiBpbXBvcnQgRVhBQ1RfVE9LRU5fVFlQRVMKCmNvb2tpZV9yZSA9IHJlLmNvbXBpbGUocideWyBcdFxmXSojLio/Y29kaW5nWzo9XVsgXHRdKihbLVx3Ll0rKScsIHJlLkFTQ0lJKQpibGFua19yZSA9IHJlLmNvbXBpbGUoYnInXlsgXHRcZl0qKD86WyNcclxuXXwkKScsIHJlLkFTQ0lJKQoKaW1wb3J0IHRva2VuCl9fYWxsX18gPSB0b2tlbi5fX2FsbF9fICsgWyJ0b2tlbml6ZSIsICJnZW5lcmF0ZV90b2tlbnMiLCAiZGV0ZWN0X2VuY29kaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInVudG9rZW5pemUiLCAiVG9rZW5JbmZvIl0KZGVsIHRva2VuCgpjbGFzcyBUb2tlbkluZm8oY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnVG9rZW5JbmZvJywgJ3R5cGUgc3RyaW5nIHN0YXJ0IGVuZCBsaW5lJykpOgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGFubm90YXRlZF90eXBlID0gJyVkICglcyknICUgKHNlbGYudHlwZSwgdG9rX25hbWVbc2VsZi50eXBlXSkKICAgICAgICByZXR1cm4gKCdUb2tlbkluZm8odHlwZT0lcywgc3RyaW5nPSVyLCBzdGFydD0lciwgZW5kPSVyLCBsaW5lPSVyKScgJQogICAgICAgICAgICAgICAgc2VsZi5fcmVwbGFjZSh0eXBlPWFubm90YXRlZF90eXBlKSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBleGFjdF90eXBlKHNlbGYpOgogICAgICAgIGlmIHNlbGYudHlwZSA9PSBPUCBhbmQgc2VsZi5zdHJpbmcgaW4gRVhBQ1RfVE9LRU5fVFlQRVM6CiAgICAgICAgICAgIHJldHVybiBFWEFDVF9UT0tFTl9UWVBFU1tzZWxmLnN0cmluZ10KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi50eXBlCgpkZWYgZ3JvdXAoKmNob2ljZXMpOiByZXR1cm4gJygnICsgJ3wnLmpvaW4oY2hvaWNlcykgKyAnKScKZGVmIGFueSgqY2hvaWNlcyk6IHJldHVybiBncm91cCgqY2hvaWNlcykgKyAnKicKZGVmIG1heWJlKCpjaG9pY2VzKTogcmV0dXJuIGdyb3VwKCpjaG9pY2VzKSArICc/JwoKIyBOb3RlOiB3ZSB1c2UgdW5pY29kZSBtYXRjaGluZyBmb3IgbmFtZXMgKCJcdyIpIGJ1dCBhc2NpaSBtYXRjaGluZyBmb3IKIyBudW1iZXIgbGl0ZXJhbHMuCldoaXRlc3BhY2UgPSByJ1sgXGZcdF0qJwpDb21tZW50ID0gcicjW15cclxuXSonCklnbm9yZSA9IFdoaXRlc3BhY2UgKyBhbnkocidcXFxyP1xuJyArIFdoaXRlc3BhY2UpICsgbWF5YmUoQ29tbWVudCkKTmFtZSA9IHInXHcrJwoKSGV4bnVtYmVyID0gcicwW3hYXSg/Ol8/WzAtOWEtZkEtRl0pKycKQmlubnVtYmVyID0gcicwW2JCXSg/Ol8/WzAxXSkrJwpPY3RudW1iZXIgPSByJzBbb09dKD86Xz9bMC03XSkrJwpEZWNudW1iZXIgPSByJyg/OjAoPzpfPzApKnxbMS05XSg/Ol8/WzAtOV0pKiknCkludG51bWJlciA9IGdyb3VwKEhleG51bWJlciwgQmlubnVtYmVyLCBPY3RudW1iZXIsIERlY251bWJlcikKRXhwb25lbnQgPSByJ1tlRV1bLStdP1swLTldKD86Xz9bMC05XSkqJwpQb2ludGZsb2F0ID0gZ3JvdXAocidbMC05XSg/Ol8/WzAtOV0pKlwuKD86WzAtOV0oPzpfP1swLTldKSopPycsCiAgICAgICAgICAgICAgICAgICByJ1wuWzAtOV0oPzpfP1swLTldKSonKSArIG1heWJlKEV4cG9uZW50KQpFeHBmbG9hdCA9IHInWzAtOV0oPzpfP1swLTldKSonICsgRXhwb25lbnQKRmxvYXRudW1iZXIgPSBncm91cChQb2ludGZsb2F0LCBFeHBmbG9hdCkKSW1hZ251bWJlciA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQpOdW1iZXIgPSBncm91cChJbWFnbnVtYmVyLCBGbG9hdG51bWJlciwgSW50bnVtYmVyKQoKIyBSZXR1cm4gdGhlIGVtcHR5IHN0cmluZywgcGx1cyBhbGwgb2YgdGhlIHZhbGlkIHN0cmluZyBwcmVmaXhlcy4KZGVmIF9hbGxfc3RyaW5nX3ByZWZpeGVzKCk6CiAgICAjIFRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuIE9ubHkgY29udGFpbiB0aGUgbG93ZXIgY2FzZSB2ZXJzaW9ucywKICAgICMgIGFuZCBkb24ndCBjb250YWluIGFueSBwZXJtdXRhdGlvbnMgKGluY2x1ZGUgJ2ZyJywgYnV0IG5vdAogICAgIyAgJ3JmJykuIFRoZSB2YXJpb3VzIHBlcm11dGF0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZC4KICAgIF92YWxpZF9zdHJpbmdfcHJlZml4ZXMgPSBbJ2InLCAncicsICd1JywgJ2YnLCAnYnInLCAnZnInXQogICAgIyBpZiB3ZSBhZGQgYmluYXJ5IGYtc3RyaW5ncywgYWRkOiBbJ2ZiJywgJ2ZiciddCiAgICByZXN1bHQgPSB7Jyd9CiAgICBmb3IgcHJlZml4IGluIF92YWxpZF9zdHJpbmdfcHJlZml4ZXM6CiAgICAgICAgZm9yIHQgaW4gX2l0ZXJ0b29scy5wZXJtdXRhdGlvbnMocHJlZml4KToKICAgICAgICAgICAgIyBjcmVhdGUgYSBsaXN0IHdpdGggdXBwZXIgYW5kIGxvd2VyIHZlcnNpb25zIG9mIGVhY2gKICAgICAgICAgICAgIyAgY2hhcmFjdGVyCiAgICAgICAgICAgIGZvciB1IGluIF9pdGVydG9vbHMucHJvZHVjdCgqWyhjLCBjLnVwcGVyKCkpIGZvciBjIGluIHRdKToKICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoJycuam9pbih1KSkKICAgIHJldHVybiByZXN1bHQKCkBmdW5jdG9vbHMubHJ1X2NhY2hlCmRlZiBfY29tcGlsZShleHByKToKICAgIHJldHVybiByZS5jb21waWxlKGV4cHIsIHJlLlVOSUNPREUpCgojIE5vdGUgdGhhdCBzaW5jZSBfYWxsX3N0cmluZ19wcmVmaXhlcyBpbmNsdWRlcyB0aGUgZW1wdHkgc3RyaW5nLAojICBTdHJpbmdQcmVmaXggY2FuIGJlIHRoZSBlbXB0eSBzdHJpbmcgKG1ha2luZyBpdCBvcHRpb25hbCkuClN0cmluZ1ByZWZpeCA9IGdyb3VwKCpfYWxsX3N0cmluZ19wcmVmaXhlcygpKQoKIyBUYWlsIGVuZCBvZiAnIHN0cmluZy4KU2luZ2xlID0gciJbXidcXF0qKD86XFwuW14nXFxdKikqJyIKIyBUYWlsIGVuZCBvZiAiIHN0cmluZy4KRG91YmxlID0gcidbXiJcXF0qKD86XFwuW14iXFxdKikqIicKIyBUYWlsIGVuZCBvZiAnJycgc3RyaW5nLgpTaW5nbGUzID0gciJbXidcXF0qKD86KD86XFwufCcoPyEnJykpW14nXFxdKikqJycnIgojIFRhaWwgZW5kIG9mICIiIiBzdHJpbmcuCkRvdWJsZTMgPSByJ1teIlxcXSooPzooPzpcXC58Iig/ISIiKSlbXiJcXF0qKSoiIiInClRyaXBsZSA9IGdyb3VwKFN0cmluZ1ByZWZpeCArICInJyciLCBTdHJpbmdQcmVmaXggKyAnIiIiJykKIyBTaW5nbGUtbGluZSAnIG9yICIgc3RyaW5nLgpTdHJpbmcgPSBncm91cChTdHJpbmdQcmVmaXggKyByIidbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiciLAogICAgICAgICAgICAgICBTdHJpbmdQcmVmaXggKyByJyJbXlxuIlxcXSooPzpcXC5bXlxuIlxcXSopKiInKQoKIyBTb3J0aW5nIGluIHJldmVyc2Ugb3JkZXIgcHV0cyB0aGUgbG9uZyBvcGVyYXRvcnMgYmVmb3JlIHRoZWlyIHByZWZpeGVzLgojIE90aGVyd2lzZSBpZiA9IGNhbWUgYmVmb3JlID09LCA9PSB3b3VsZCBnZXQgcmVjb2duaXplZCBhcyB0d28gaW5zdGFuY2VzCiMgb2YgPS4KU3BlY2lhbCA9IGdyb3VwKCptYXAocmUuZXNjYXBlLCBzb3J0ZWQoRVhBQ1RfVE9LRU5fVFlQRVMsIHJldmVyc2U9VHJ1ZSkpKQpGdW5ueSA9IGdyb3VwKHInXHI/XG4nLCBTcGVjaWFsKQoKUGxhaW5Ub2tlbiA9IGdyb3VwKE51bWJlciwgRnVubnksIFN0cmluZywgTmFtZSkKVG9rZW4gPSBJZ25vcmUgKyBQbGFpblRva2VuCgojIEZpcnN0IChvciBvbmx5KSBsaW5lIG9mICcgb3IgIiBzdHJpbmcuCkNvbnRTdHIgPSBncm91cChTdHJpbmdQcmVmaXggKyByIidbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiIgKwogICAgICAgICAgICAgICAgZ3JvdXAoIiciLCByJ1xcXHI/XG4nKSwKICAgICAgICAgICAgICAgIFN0cmluZ1ByZWZpeCArIHInIlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqJyArCiAgICAgICAgICAgICAgICBncm91cCgnIicsIHInXFxccj9cbicpKQpQc2V1ZG9FeHRyYXMgPSBncm91cChyJ1xcXHI/XG58XFonLCBDb21tZW50LCBUcmlwbGUpClBzZXVkb1Rva2VuID0gV2hpdGVzcGFjZSArIGdyb3VwKFBzZXVkb0V4dHJhcywgTnVtYmVyLCBGdW5ueSwgQ29udFN0ciwgTmFtZSkKCiMgRm9yIGEgZ2l2ZW4gc3RyaW5nIHByZWZpeCBwbHVzIHF1b3RlcywgZW5kcGF0cyBtYXBzIGl0IHRvIGEgcmVnZXgKIyAgdG8gbWF0Y2ggdGhlIHJlbWFpbmRlciBvZiB0aGF0IHN0cmluZy4gX3ByZWZpeCBjYW4gYmUgZW1wdHksIGZvcgojICBhIG5vcm1hbCBzaW5nbGUgb3IgdHJpcGxlIHF1b3RlZCBzdHJpbmcgKHdpdGggbm8gcHJlZml4KS4KZW5kcGF0cyA9IHt9CmZvciBfcHJlZml4IGluIF9hbGxfc3RyaW5nX3ByZWZpeGVzKCk6CiAgICBlbmRwYXRzW19wcmVmaXggKyAiJyJdID0gU2luZ2xlCiAgICBlbmRwYXRzW19wcmVmaXggKyAnIiddID0gRG91YmxlCiAgICBlbmRwYXRzW19wcmVmaXggKyAiJycnIl0gPSBTaW5nbGUzCiAgICBlbmRwYXRzW19wcmVmaXggKyAnIiIiJ10gPSBEb3VibGUzCmRlbCBfcHJlZml4CgojIEEgc2V0IG9mIGFsbCBvZiB0aGUgc2luZ2xlIGFuZCB0cmlwbGUgcXVvdGVkIHN0cmluZyBwcmVmaXhlcywKIyAgaW5jbHVkaW5nIHRoZSBvcGVuaW5nIHF1b3Rlcy4Kc2luZ2xlX3F1b3RlZCA9IHNldCgpCnRyaXBsZV9xdW90ZWQgPSBzZXQoKQpmb3IgdCBpbiBfYWxsX3N0cmluZ19wcmVmaXhlcygpOgogICAgZm9yIHUgaW4gKHQgKyAnIicsIHQgKyAiJyIpOgogICAgICAgIHNpbmdsZV9xdW90ZWQuYWRkKHUpCiAgICBmb3IgdSBpbiAodCArICciIiInLCB0ICsgIicnJyIpOgogICAgICAgIHRyaXBsZV9xdW90ZWQuYWRkKHUpCmRlbCB0LCB1Cgp0YWJzaXplID0gOAoKY2xhc3MgVG9rZW5FcnJvcihFeGNlcHRpb24pOiBwYXNzCgpjbGFzcyBTdG9wVG9rZW5pemluZyhFeGNlcHRpb24pOiBwYXNzCgoKY2xhc3MgVW50b2tlbml6ZXI6CgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYudG9rZW5zID0gW10KICAgICAgICBzZWxmLnByZXZfcm93ID0gMQogICAgICAgIHNlbGYucHJldl9jb2wgPSAwCiAgICAgICAgc2VsZi5lbmNvZGluZyA9IE5vbmUKCiAgICBkZWYgYWRkX3doaXRlc3BhY2Uoc2VsZiwgc3RhcnQpOgogICAgICAgIHJvdywgY29sID0gc3RhcnQKICAgICAgICBpZiByb3cgPCBzZWxmLnByZXZfcm93IG9yIHJvdyA9PSBzZWxmLnByZXZfcm93IGFuZCBjb2wgPCBzZWxmLnByZXZfY29sOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzdGFydCAoe30se30pIHByZWNlZGVzIHByZXZpb3VzIGVuZCAoe30se30pIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQocm93LCBjb2wsIHNlbGYucHJldl9yb3csIHNlbGYucHJldl9jb2wpKQogICAgICAgIHJvd19vZmZzZXQgPSByb3cgLSBzZWxmLnByZXZfcm93CiAgICAgICAgaWYgcm93X29mZnNldDoKICAgICAgICAgICAgc2VsZi50b2tlbnMuYXBwZW5kKCJcXFxuIiAqIHJvd19vZmZzZXQpCiAgICAgICAgICAgIHNlbGYucHJldl9jb2wgPSAwCiAgICAgICAgY29sX29mZnNldCA9IGNvbCAtIHNlbGYucHJldl9jb2wKICAgICAgICBpZiBjb2xfb2Zmc2V0OgogICAgICAgICAgICBzZWxmLnRva2Vucy5hcHBlbmQoIiAiICogY29sX29mZnNldCkKCiAgICBkZWYgdW50b2tlbml6ZShzZWxmLCBpdGVyYWJsZSk6CiAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQogICAgICAgIGluZGVudHMgPSBbXQogICAgICAgIHN0YXJ0bGluZSA9IEZhbHNlCiAgICAgICAgZm9yIHQgaW4gaXQ6CiAgICAgICAgICAgIGlmIGxlbih0KSA9PSAyOgogICAgICAgICAgICAgICAgc2VsZi5jb21wYXQodCwgaXQpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB0b2tfdHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUgPSB0CiAgICAgICAgICAgIGlmIHRva190eXBlID09IEVOQ09ESU5HOgogICAgICAgICAgICAgICAgc2VsZi5lbmNvZGluZyA9IHRva2VuCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiB0b2tfdHlwZSA9PSBFTkRNQVJLRVI6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiB0b2tfdHlwZSA9PSBJTkRFTlQ6CiAgICAgICAgICAgICAgICBpbmRlbnRzLmFwcGVuZCh0b2tlbikKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgdG9rX3R5cGUgPT0gREVERU5UOgogICAgICAgICAgICAgICAgaW5kZW50cy5wb3AoKQogICAgICAgICAgICAgICAgc2VsZi5wcmV2X3Jvdywgc2VsZi5wcmV2X2NvbCA9IGVuZAogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZWxpZiB0b2tfdHlwZSBpbiAoTkVXTElORSwgTkwpOgogICAgICAgICAgICAgICAgc3RhcnRsaW5lID0gVHJ1ZQogICAgICAgICAgICBlbGlmIHN0YXJ0bGluZSBhbmQgaW5kZW50czoKICAgICAgICAgICAgICAgIGluZGVudCA9IGluZGVudHNbLTFdCiAgICAgICAgICAgICAgICBpZiBzdGFydFsxXSA+PSBsZW4oaW5kZW50KToKICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2Vucy5hcHBlbmQoaW5kZW50KQogICAgICAgICAgICAgICAgICAgIHNlbGYucHJldl9jb2wgPSBsZW4oaW5kZW50KQogICAgICAgICAgICAgICAgc3RhcnRsaW5lID0gRmFsc2UKICAgICAgICAgICAgc2VsZi5hZGRfd2hpdGVzcGFjZShzdGFydCkKICAgICAgICAgICAgc2VsZi50b2tlbnMuYXBwZW5kKHRva2VuKQogICAgICAgICAgICBzZWxmLnByZXZfcm93LCBzZWxmLnByZXZfY29sID0gZW5kCiAgICAgICAgICAgIGlmIHRva190eXBlIGluIChORVdMSU5FLCBOTCk6CiAgICAgICAgICAgICAgICBzZWxmLnByZXZfcm93ICs9IDEKICAgICAgICAgICAgICAgIHNlbGYucHJldl9jb2wgPSAwCiAgICAgICAgcmV0dXJuICIiLmpvaW4oc2VsZi50b2tlbnMpCgogICAgZGVmIGNvbXBhdChzZWxmLCB0b2tlbiwgaXRlcmFibGUpOgogICAgICAgIGluZGVudHMgPSBbXQogICAgICAgIHRva3NfYXBwZW5kID0gc2VsZi50b2tlbnMuYXBwZW5kCiAgICAgICAgc3RhcnRsaW5lID0gdG9rZW5bMF0gaW4gKE5FV0xJTkUsIE5MKQogICAgICAgIHByZXZzdHJpbmcgPSBGYWxzZQoKICAgICAgICBmb3IgdG9rIGluIF9pdGVydG9vbHMuY2hhaW4oW3Rva2VuXSwgaXRlcmFibGUpOgogICAgICAgICAgICB0b2tudW0sIHRva3ZhbCA9IHRva1s6Ml0KICAgICAgICAgICAgaWYgdG9rbnVtID09IEVOQ09ESU5HOgogICAgICAgICAgICAgICAgc2VsZi5lbmNvZGluZyA9IHRva3ZhbAogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGlmIHRva251bSBpbiAoTkFNRSwgTlVNQkVSKToKICAgICAgICAgICAgICAgIHRva3ZhbCArPSAnICcKCiAgICAgICAgICAgICMgSW5zZXJ0IGEgc3BhY2UgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgc3RyaW5ncwogICAgICAgICAgICBpZiB0b2tudW0gPT0gU1RSSU5HOgogICAgICAgICAgICAgICAgaWYgcHJldnN0cmluZzoKICAgICAgICAgICAgICAgICAgICB0b2t2YWwgPSAnICcgKyB0b2t2YWwKICAgICAgICAgICAgICAgIHByZXZzdHJpbmcgPSBUcnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmV2c3RyaW5nID0gRmFsc2UKCiAgICAgICAgICAgIGlmIHRva251bSA9PSBJTkRFTlQ6CiAgICAgICAgICAgICAgICBpbmRlbnRzLmFwcGVuZCh0b2t2YWwpCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbGlmIHRva251bSA9PSBERURFTlQ6CiAgICAgICAgICAgICAgICBpbmRlbnRzLnBvcCgpCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbGlmIHRva251bSBpbiAoTkVXTElORSwgTkwpOgogICAgICAgICAgICAgICAgc3RhcnRsaW5lID0gVHJ1ZQogICAgICAgICAgICBlbGlmIHN0YXJ0bGluZSBhbmQgaW5kZW50czoKICAgICAgICAgICAgICAgIHRva3NfYXBwZW5kKGluZGVudHNbLTFdKQogICAgICAgICAgICAgICAgc3RhcnRsaW5lID0gRmFsc2UKICAgICAgICAgICAgdG9rc19hcHBlbmQodG9rdmFsKQoKCmRlZiB1bnRva2VuaXplKGl0ZXJhYmxlKToKICAgICIiIlRyYW5zZm9ybSB0b2tlbnMgYmFjayBpbnRvIFB5dGhvbiBzb3VyY2UgY29kZS4KICAgIEl0IHJldHVybnMgYSBieXRlcyBvYmplY3QsIGVuY29kZWQgdXNpbmcgdGhlIEVOQ09ESU5HCiAgICB0b2tlbiwgd2hpY2ggaXMgdGhlIGZpcnN0IHRva2VuIHNlcXVlbmNlIG91dHB1dCBieSB0b2tlbml6ZS4KCiAgICBFYWNoIGVsZW1lbnQgcmV0dXJuZWQgYnkgdGhlIGl0ZXJhYmxlIG11c3QgYmUgYSB0b2tlbiBzZXF1ZW5jZQogICAgd2l0aCBhdCBsZWFzdCB0d28gZWxlbWVudHMsIGEgdG9rZW4gbnVtYmVyIGFuZCB0b2tlbiB2YWx1ZS4gIElmCiAgICBvbmx5IHR3byB0b2tlbnMgYXJlIHBhc3NlZCwgdGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgcG9vci4KCiAgICBSb3VuZC10cmlwIGludmFyaWFudCBmb3IgZnVsbCBpbnB1dDoKICAgICAgICBVbnRva2VuaXplZCBzb3VyY2Ugd2lsbCBtYXRjaCBpbnB1dCBzb3VyY2UgZXhhY3RseQoKICAgIFJvdW5kLXRyaXAgaW52YXJpYW50IGZvciBsaW1pdGVkIGlucHV0OgogICAgICAgICMgT3V0cHV0IGJ5dGVzIHdpbGwgdG9rZW5pemUgYmFjayB0byB0aGUgaW5wdXQKICAgICAgICB0MSA9IFt0b2tbOjJdIGZvciB0b2sgaW4gdG9rZW5pemUoZi5yZWFkbGluZSldCiAgICAgICAgbmV3Y29kZSA9IHVudG9rZW5pemUodDEpCiAgICAgICAgcmVhZGxpbmUgPSBCeXRlc0lPKG5ld2NvZGUpLnJlYWRsaW5lCiAgICAgICAgdDIgPSBbdG9rWzoyXSBmb3IgdG9rIGluIHRva2VuaXplKHJlYWRsaW5lKV0KICAgICAgICBhc3NlcnQgdDEgPT0gdDIKICAgICIiIgogICAgdXQgPSBVbnRva2VuaXplcigpCiAgICBvdXQgPSB1dC51bnRva2VuaXplKGl0ZXJhYmxlKQogICAgaWYgdXQuZW5jb2RpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgb3V0ID0gb3V0LmVuY29kZSh1dC5lbmNvZGluZykKICAgIHJldHVybiBvdXQKCgpkZWYgX2dldF9ub3JtYWxfbmFtZShvcmlnX2VuYyk6CiAgICAiIiJJbWl0YXRlcyBnZXRfbm9ybWFsX25hbWUgaW4gdG9rZW5pemVyLmMuIiIiCiAgICAjIE9ubHkgY2FyZSBhYm91dCB0aGUgZmlyc3QgMTIgY2hhcmFjdGVycy4KICAgIGVuYyA9IG9yaWdfZW5jWzoxMl0ubG93ZXIoKS5yZXBsYWNlKCJfIiwgIi0iKQogICAgaWYgZW5jID09ICJ1dGYtOCIgb3IgZW5jLnN0YXJ0c3dpdGgoInV0Zi04LSIpOgogICAgICAgIHJldHVybiAidXRmLTgiCiAgICBpZiBlbmMgaW4gKCJsYXRpbi0xIiwgImlzby04ODU5LTEiLCAiaXNvLWxhdGluLTEiKSBvciBcCiAgICAgICBlbmMuc3RhcnRzd2l0aCgoImxhdGluLTEtIiwgImlzby04ODU5LTEtIiwgImlzby1sYXRpbi0xLSIpKToKICAgICAgICByZXR1cm4gImlzby04ODU5LTEiCiAgICByZXR1cm4gb3JpZ19lbmMKCmRlZiBkZXRlY3RfZW5jb2RpbmcocmVhZGxpbmUpOgogICAgIiIiCiAgICBUaGUgZGV0ZWN0X2VuY29kaW5nKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBkZXRlY3QgdGhlIGVuY29kaW5nIHRoYXQgc2hvdWxkCiAgICBiZSB1c2VkIHRvIGRlY29kZSBhIFB5dGhvbiBzb3VyY2UgZmlsZS4gIEl0IHJlcXVpcmVzIG9uZSBhcmd1bWVudCwgcmVhZGxpbmUsCiAgICBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIHRva2VuaXplKCkgZ2VuZXJhdG9yLgoKICAgIEl0IHdpbGwgY2FsbCByZWFkbGluZSBhIG1heGltdW0gb2YgdHdpY2UsIGFuZCByZXR1cm4gdGhlIGVuY29kaW5nIHVzZWQKICAgIChhcyBhIHN0cmluZykgYW5kIGEgbGlzdCBvZiBhbnkgbGluZXMgKGxlZnQgYXMgYnl0ZXMpIGl0IGhhcyByZWFkIGluLgoKICAgIEl0IGRldGVjdHMgdGhlIGVuY29kaW5nIGZyb20gdGhlIHByZXNlbmNlIG9mIGEgdXRmLTggYm9tIG9yIGFuIGVuY29kaW5nCiAgICBjb29raWUgYXMgc3BlY2lmaWVkIGluIHBlcC0wMjYzLiAgSWYgYm90aCBhIGJvbSBhbmQgYSBjb29raWUgYXJlIHByZXNlbnQsCiAgICBidXQgZGlzYWdyZWUsIGEgU3ludGF4RXJyb3Igd2lsbCBiZSByYWlzZWQuICBJZiB0aGUgZW5jb2RpbmcgY29va2llIGlzIGFuCiAgICBpbnZhbGlkIGNoYXJzZXQsIHJhaXNlIGEgU3ludGF4RXJyb3IuICBOb3RlIHRoYXQgaWYgYSB1dGYtOCBib20gaXMgZm91bmQsCiAgICAndXRmLTgtc2lnJyBpcyByZXR1cm5lZC4KCiAgICBJZiBubyBlbmNvZGluZyBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGRlZmF1bHQgb2YgJ3V0Zi04JyB3aWxsIGJlIHJldHVybmVkLgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgZmlsZW5hbWUgPSByZWFkbGluZS5fX3NlbGZfXy5uYW1lCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgZmlsZW5hbWUgPSBOb25lCiAgICBib21fZm91bmQgPSBGYWxzZQogICAgZW5jb2RpbmcgPSBOb25lCiAgICBkZWZhdWx0ID0gJ3V0Zi04JwogICAgZGVmIHJlYWRfb3Jfc3RvcCgpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHJlYWRsaW5lKCkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgcmV0dXJuIGInJwoKICAgIGRlZiBmaW5kX2Nvb2tpZShsaW5lKToKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgRGVjb2RlIGFzIFVURi04LiBFaXRoZXIgdGhlIGxpbmUgaXMgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24sCiAgICAgICAgICAgICMgaW4gd2hpY2ggY2FzZSBpdCBzaG91bGQgYmUgcHVyZSBBU0NJSSwgb3IgaXQgbXVzdCBiZSBVVEYtOAogICAgICAgICAgICAjIHBlciBkZWZhdWx0IGVuY29kaW5nLgogICAgICAgICAgICBsaW5lX3N0cmluZyA9IGxpbmUuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgbXNnID0gImludmFsaWQgb3IgbWlzc2luZyBlbmNvZGluZyBkZWNsYXJhdGlvbiIKICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBtc2cgPSAne30gZm9yIHshcn0nLmZvcm1hdChtc2csIGZpbGVuYW1lKQogICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcihtc2cpCgogICAgICAgIG1hdGNoID0gY29va2llX3JlLm1hdGNoKGxpbmVfc3RyaW5nKQogICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBlbmNvZGluZyA9IF9nZXRfbm9ybWFsX25hbWUobWF0Y2guZ3JvdXAoMSkpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjb2RlYyA9IGxvb2t1cChlbmNvZGluZykKICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgICAgICAgICMgVGhpcyBiZWhhdmlvdXIgbWltaWNzIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGVuY29kaW5nOiAiICsgZW5jb2RpbmcKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGVuY29kaW5nIGZvciB7IXJ9OiB7fSIuZm9ybWF0KGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZykKICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IobXNnKQoKICAgICAgICBpZiBib21fZm91bmQ6CiAgICAgICAgICAgIGlmIGVuY29kaW5nICE9ICd1dGYtOCc6CiAgICAgICAgICAgICAgICAjIFRoaXMgYmVoYXZpb3VyIG1pbWljcyB0aGUgUHl0aG9uIGludGVycHJldGVyCiAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIG1zZyA9ICdlbmNvZGluZyBwcm9ibGVtOiB1dGYtOCcKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2VuY29kaW5nIHByb2JsZW0gZm9yIHshcn06IHV0Zi04Jy5mb3JtYXQoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcihtc2cpCiAgICAgICAgICAgIGVuY29kaW5nICs9ICctc2lnJwogICAgICAgIHJldHVybiBlbmNvZGluZwoKICAgIGZpcnN0ID0gcmVhZF9vcl9zdG9wKCkKICAgIGlmIGZpcnN0LnN0YXJ0c3dpdGgoQk9NX1VURjgpOgogICAgICAgIGJvbV9mb3VuZCA9IFRydWUKICAgICAgICBmaXJzdCA9IGZpcnN0WzM6XQogICAgICAgIGRlZmF1bHQgPSAndXRmLTgtc2lnJwogICAgaWYgbm90IGZpcnN0OgogICAgICAgIHJldHVybiBkZWZhdWx0LCBbXQoKICAgIGVuY29kaW5nID0gZmluZF9jb29raWUoZmlyc3QpCiAgICBpZiBlbmNvZGluZzoKICAgICAgICByZXR1cm4gZW5jb2RpbmcsIFtmaXJzdF0KICAgIGlmIG5vdCBibGFua19yZS5tYXRjaChmaXJzdCk6CiAgICAgICAgcmV0dXJuIGRlZmF1bHQsIFtmaXJzdF0KCiAgICBzZWNvbmQgPSByZWFkX29yX3N0b3AoKQogICAgaWYgbm90IHNlY29uZDoKICAgICAgICByZXR1cm4gZGVmYXVsdCwgW2ZpcnN0XQoKICAgIGVuY29kaW5nID0gZmluZF9jb29raWUoc2Vjb25kKQogICAgaWYgZW5jb2Rpbmc6CiAgICAgICAgcmV0dXJuIGVuY29kaW5nLCBbZmlyc3QsIHNlY29uZF0KCiAgICByZXR1cm4gZGVmYXVsdCwgW2ZpcnN0LCBzZWNvbmRdCgoKZGVmIG9wZW4oZmlsZW5hbWUpOgogICAgIiIiT3BlbiBhIGZpbGUgaW4gcmVhZCBvbmx5IG1vZGUgdXNpbmcgdGhlIGVuY29kaW5nIGRldGVjdGVkIGJ5CiAgICBkZXRlY3RfZW5jb2RpbmcoKS4KICAgICIiIgogICAgYnVmZmVyID0gX2J1aWx0aW5fb3BlbihmaWxlbmFtZSwgJ3JiJykKICAgIHRyeToKICAgICAgICBlbmNvZGluZywgbGluZXMgPSBkZXRlY3RfZW5jb2RpbmcoYnVmZmVyLnJlYWRsaW5lKQogICAgICAgIGJ1ZmZlci5zZWVrKDApCiAgICAgICAgdGV4dCA9IFRleHRJT1dyYXBwZXIoYnVmZmVyLCBlbmNvZGluZywgbGluZV9idWZmZXJpbmc9VHJ1ZSkKICAgICAgICB0ZXh0Lm1vZGUgPSAncicKICAgICAgICByZXR1cm4gdGV4dAogICAgZXhjZXB0OgogICAgICAgIGJ1ZmZlci5jbG9zZSgpCiAgICAgICAgcmFpc2UKCgpkZWYgdG9rZW5pemUocmVhZGxpbmUpOgogICAgIiIiCiAgICBUaGUgdG9rZW5pemUoKSBnZW5lcmF0b3IgcmVxdWlyZXMgb25lIGFyZ3VtZW50LCByZWFkbGluZSwgd2hpY2gKICAgIG11c3QgYmUgYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIHRoZQogICAgcmVhZGxpbmUoKSBtZXRob2Qgb2YgYnVpbHQtaW4gZmlsZSBvYmplY3RzLiAgRWFjaCBjYWxsIHRvIHRoZSBmdW5jdGlvbgogICAgc2hvdWxkIHJldHVybiBvbmUgbGluZSBvZiBpbnB1dCBhcyBieXRlcy4gIEFsdGVybmF0aXZlbHksIHJlYWRsaW5lCiAgICBjYW4gYmUgYSBjYWxsYWJsZSBmdW5jdGlvbiB0ZXJtaW5hdGluZyB3aXRoIFN0b3BJdGVyYXRpb246CiAgICAgICAgcmVhZGxpbmUgPSBvcGVuKG15ZmlsZSwgJ3JiJykuX19uZXh0X18gICMgRXhhbXBsZSBvZiBhbHRlcm5hdGUgcmVhZGxpbmUKCiAgICBUaGUgZ2VuZXJhdG9yIHByb2R1Y2VzIDUtdHVwbGVzIHdpdGggdGhlc2UgbWVtYmVyczogdGhlIHRva2VuIHR5cGU7IHRoZQogICAgdG9rZW4gc3RyaW5nOyBhIDItdHVwbGUgKHNyb3csIHNjb2wpIG9mIGludHMgc3BlY2lmeWluZyB0aGUgcm93IGFuZAogICAgY29sdW1uIHdoZXJlIHRoZSB0b2tlbiBiZWdpbnMgaW4gdGhlIHNvdXJjZTsgYSAyLXR1cGxlIChlcm93LCBlY29sKSBvZgogICAgaW50cyBzcGVjaWZ5aW5nIHRoZSByb3cgYW5kIGNvbHVtbiB3aGVyZSB0aGUgdG9rZW4gZW5kcyBpbiB0aGUgc291cmNlOwogICAgYW5kIHRoZSBsaW5lIG9uIHdoaWNoIHRoZSB0b2tlbiB3YXMgZm91bmQuICBUaGUgbGluZSBwYXNzZWQgaXMgdGhlCiAgICBwaHlzaWNhbCBsaW5lLgoKICAgIFRoZSBmaXJzdCB0b2tlbiBzZXF1ZW5jZSB3aWxsIGFsd2F5cyBiZSBhbiBFTkNPRElORyB0b2tlbgogICAgd2hpY2ggdGVsbHMgeW91IHdoaWNoIGVuY29kaW5nIHdhcyB1c2VkIHRvIGRlY29kZSB0aGUgYnl0ZXMgc3RyZWFtLgogICAgIiIiCiAgICBlbmNvZGluZywgY29uc3VtZWQgPSBkZXRlY3RfZW5jb2RpbmcocmVhZGxpbmUpCiAgICBlbXB0eSA9IF9pdGVydG9vbHMucmVwZWF0KGIiIikKICAgIHJsX2dlbiA9IF9pdGVydG9vbHMuY2hhaW4oY29uc3VtZWQsIGl0ZXIocmVhZGxpbmUsIGIiIiksIGVtcHR5KQogICAgcmV0dXJuIF90b2tlbml6ZShybF9nZW4uX19uZXh0X18sIGVuY29kaW5nKQoKCmRlZiBfdG9rZW5pemUocmVhZGxpbmUsIGVuY29kaW5nKToKICAgIGxudW0gPSBwYXJlbmxldiA9IGNvbnRpbnVlZCA9IDAKICAgIG51bWNoYXJzID0gJzAxMjM0NTY3ODknCiAgICBjb250c3RyLCBuZWVkY29udCA9ICcnLCAwCiAgICBjb250bGluZSA9IE5vbmUKICAgIGluZGVudHMgPSBbMF0KCiAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICBpZiBlbmNvZGluZyA9PSAidXRmLTgtc2lnIjoKICAgICAgICAgICAgIyBCT00gd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiBzdHJpcHBlZC4KICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgICAgeWllbGQgVG9rZW5JbmZvKEVOQ09ESU5HLCBlbmNvZGluZywgKDAsIDApLCAoMCwgMCksICcnKQogICAgbGFzdF9saW5lID0gYicnCiAgICBsaW5lID0gYicnCiAgICB3aGlsZSBUcnVlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29wIG92ZXIgbGluZXMgaW4gc3RyZWFtCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIFdlIGNhcHR1cmUgdGhlIHZhbHVlIG9mIHRoZSBsaW5lIHZhcmlhYmxlIGhlcmUgYmVjYXVzZQogICAgICAgICAgICAjIHJlYWRsaW5lIHVzZXMgdGhlIGVtcHR5IHN0cmluZyAnJyB0byBzaWduYWwgZW5kIG9mIGlucHV0LAogICAgICAgICAgICAjIGhlbmNlIGBsaW5lYCBpdHNlbGYgd2lsbCBhbHdheXMgYmUgb3ZlcndyaXR0ZW4gYXQgdGhlIGVuZAogICAgICAgICAgICAjIG9mIHRoaXMgbG9vcC4KICAgICAgICAgICAgbGFzdF9saW5lID0gbGluZQogICAgICAgICAgICBsaW5lID0gcmVhZGxpbmUoKQogICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICAgICBsaW5lID0gYicnCgogICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICBsaW5lID0gbGluZS5kZWNvZGUoZW5jb2RpbmcpCiAgICAgICAgbG51bSArPSAxCiAgICAgICAgcG9zLCBtYXggPSAwLCBsZW4obGluZSkKCiAgICAgICAgaWYgY29udHN0cjogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RyaW5nCiAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgcmFpc2UgVG9rZW5FcnJvcigiRU9GIGluIG11bHRpLWxpbmUgc3RyaW5nIiwgc3Ryc3RhcnQpCiAgICAgICAgICAgIGVuZG1hdGNoID0gZW5kcHJvZy5tYXRjaChsaW5lKQogICAgICAgICAgICBpZiBlbmRtYXRjaDoKICAgICAgICAgICAgICAgIHBvcyA9IGVuZCA9IGVuZG1hdGNoLmVuZCgwKQogICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKFNUUklORywgY29udHN0ciArIGxpbmVbOmVuZF0sCiAgICAgICAgICAgICAgICAgICAgICAgc3Ryc3RhcnQsIChsbnVtLCBlbmQpLCBjb250bGluZSArIGxpbmUpCiAgICAgICAgICAgICAgICBjb250c3RyLCBuZWVkY29udCA9ICcnLCAwCiAgICAgICAgICAgICAgICBjb250bGluZSA9IE5vbmUKICAgICAgICAgICAgZWxpZiBuZWVkY29udCBhbmQgbGluZVstMjpdICE9ICdcXFxuJyBhbmQgbGluZVstMzpdICE9ICdcXFxyXG4nOgogICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKEVSUk9SVE9LRU4sIGNvbnRzdHIgKyBsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJzdGFydCwgKGxudW0sIGxlbihsaW5lKSksIGNvbnRsaW5lKQogICAgICAgICAgICAgICAgY29udHN0ciA9ICcnCiAgICAgICAgICAgICAgICBjb250bGluZSA9IE5vbmUKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjb250c3RyID0gY29udHN0ciArIGxpbmUKICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gY29udGxpbmUgKyBsaW5lCiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBlbGlmIHBhcmVubGV2ID09IDAgYW5kIG5vdCBjb250aW51ZWQ6ICAjIG5ldyBzdGF0ZW1lbnQKICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCiAgICAgICAgICAgIGNvbHVtbiA9IDAKICAgICAgICAgICAgd2hpbGUgcG9zIDwgbWF4OiAgICAgICAgICAgICAgICAgICAjIG1lYXN1cmUgbGVhZGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgICAgICBpZiBsaW5lW3Bvc10gPT0gJyAnOgogICAgICAgICAgICAgICAgICAgIGNvbHVtbiArPSAxCiAgICAgICAgICAgICAgICBlbGlmIGxpbmVbcG9zXSA9PSAnXHQnOgogICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IChjb2x1bW4vL3RhYnNpemUgKyAxKSp0YWJzaXplCiAgICAgICAgICAgICAgICBlbGlmIGxpbmVbcG9zXSA9PSAnXGYnOgogICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IDAKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHBvcyArPSAxCiAgICAgICAgICAgIGlmIHBvcyA9PSBtYXg6CiAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgaWYgbGluZVtwb3NdIGluICcjXHJcbic6ICAgICAgICAgICAjIHNraXAgY29tbWVudHMgb3IgYmxhbmsgbGluZXMKICAgICAgICAgICAgICAgIGlmIGxpbmVbcG9zXSA9PSAnIyc6CiAgICAgICAgICAgICAgICAgICAgY29tbWVudF90b2tlbiA9IGxpbmVbcG9zOl0ucnN0cmlwKCdcclxuJykKICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oQ09NTUVOVCwgY29tbWVudF90b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxudW0sIHBvcyksIChsbnVtLCBwb3MgKyBsZW4oY29tbWVudF90b2tlbikpLCBsaW5lKQogICAgICAgICAgICAgICAgICAgIHBvcyArPSBsZW4oY29tbWVudF90b2tlbikKCiAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oTkwsIGxpbmVbcG9zOl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsbnVtLCBwb3MpLCAobG51bSwgbGVuKGxpbmUpKSwgbGluZSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiBjb2x1bW4gPiBpbmRlbnRzWy0xXTogICAgICAgICAgICMgY291bnQgaW5kZW50cyBvciBkZWRlbnRzCiAgICAgICAgICAgICAgICBpbmRlbnRzLmFwcGVuZChjb2x1bW4pCiAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oSU5ERU5ULCBsaW5lWzpwb3NdLCAobG51bSwgMCksIChsbnVtLCBwb3MpLCBsaW5lKQogICAgICAgICAgICB3aGlsZSBjb2x1bW4gPCBpbmRlbnRzWy0xXToKICAgICAgICAgICAgICAgIGlmIGNvbHVtbiBub3QgaW4gaW5kZW50czoKICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmRlbnRhdGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAidW5pbmRlbnQgZG9lcyBub3QgbWF0Y2ggYW55IG91dGVyIGluZGVudGF0aW9uIGxldmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgKCI8dG9rZW5pemU+IiwgbG51bSwgcG9zLCBsaW5lKSkKICAgICAgICAgICAgICAgIGluZGVudHMgPSBpbmRlbnRzWzotMV0KCiAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oREVERU5ULCAnJywgKGxudW0sIHBvcyksIChsbnVtLCBwb3MpLCBsaW5lKQoKICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdGF0ZW1lbnQKICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICByYWlzZSBUb2tlbkVycm9yKCJFT0YgaW4gbXVsdGktbGluZSBzdGF0ZW1lbnQiLCAobG51bSwgMCkpCiAgICAgICAgICAgIGNvbnRpbnVlZCA9IDAKCiAgICAgICAgd2hpbGUgcG9zIDwgbWF4OgogICAgICAgICAgICBwc2V1ZG9tYXRjaCA9IF9jb21waWxlKFBzZXVkb1Rva2VuKS5tYXRjaChsaW5lLCBwb3MpCiAgICAgICAgICAgIGlmIHBzZXVkb21hdGNoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzY2FuIGZvciB0b2tlbnMKICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQgPSBwc2V1ZG9tYXRjaC5zcGFuKDEpCiAgICAgICAgICAgICAgICBzcG9zLCBlcG9zLCBwb3MgPSAobG51bSwgc3RhcnQpLCAobG51bSwgZW5kKSwgZW5kCiAgICAgICAgICAgICAgICBpZiBzdGFydCA9PSBlbmQ6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIHRva2VuLCBpbml0aWFsID0gbGluZVtzdGFydDplbmRdLCBsaW5lW3N0YXJ0XQoKICAgICAgICAgICAgICAgIGlmIChpbml0aWFsIGluIG51bWNoYXJzIG9yICAgICAgICAgICAgICAgICAjIG9yZGluYXJ5IG51bWJlcgogICAgICAgICAgICAgICAgICAgIChpbml0aWFsID09ICcuJyBhbmQgdG9rZW4gIT0gJy4nIGFuZCB0b2tlbiAhPSAnLi4uJykpOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhOVU1CRVIsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsIGluICdcclxuJzoKICAgICAgICAgICAgICAgICAgICBpZiBwYXJlbmxldiA+IDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhOTCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE5FV0xJTkUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQoKICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnIyc6CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB0b2tlbi5lbmRzd2l0aCgiXG4iKQogICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKCiAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbdG9rZW5dKQogICAgICAgICAgICAgICAgICAgIGVuZG1hdGNoID0gZW5kcHJvZy5tYXRjaChsaW5lLCBwb3MpCiAgICAgICAgICAgICAgICAgICAgaWYgZW5kbWF0Y2g6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgb24gb25lIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gZW5kbWF0Y2guZW5kKDApCiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gbGluZVtzdGFydDpwb3NdCiAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhTVFJJTkcsIHRva2VuLCBzcG9zLCAobG51bSwgcG9zKSwgbGluZSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBzdHJzdGFydCA9IChsbnVtLCBzdGFydCkgICAgICAgICAgICMgbXVsdGlwbGUgbGluZXMKICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciA9IGxpbmVbc3RhcnQ6XQogICAgICAgICAgICAgICAgICAgICAgICBjb250bGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgICAgICAjIENoZWNrIHVwIHRvIHRoZSBmaXJzdCAzIGNoYXJzIG9mIHRoZSB0b2tlbiB0byBzZWUgaWYKICAgICAgICAgICAgICAgICMgIHRoZXkncmUgaW4gdGhlIHNpbmdsZV9xdW90ZWQgc2V0LiBJZiBzbywgdGhleSBzdGFydAogICAgICAgICAgICAgICAgIyAgYSBzdHJpbmcuCiAgICAgICAgICAgICAgICAjIFdlJ3JlIHVzaW5nIHRoZSBmaXJzdCAzLCBiZWNhdXNlIHdlJ3JlIGxvb2tpbmcgZm9yCiAgICAgICAgICAgICAgICAjICAicmInIiAoZm9yIGV4YW1wbGUpIGF0IHRoZSBzdGFydCBvZiB0aGUgdG9rZW4uIElmCiAgICAgICAgICAgICAgICAjICB3ZSBzd2l0Y2ggdG8gbG9uZ2VyIHByZWZpeGVzLCB0aGlzIG5lZWRzIHRvIGJlCiAgICAgICAgICAgICAgICAjICBhZGp1c3RlZC4KICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IGluaXRpYWwgPT0gdG9rZW5bOjFdLgogICAgICAgICAgICAgICAgIyBBbHNvIG5vdGUgdGhhdCBzaW5nbGUgcXVvdGUgY2hlY2tpbmcgbXVzdCBjb21lIGFmdGVyCiAgICAgICAgICAgICAgICAjICB0cmlwbGUgcXVvdGUgY2hlY2tpbmcgKGFib3ZlKS4KICAgICAgICAgICAgICAgIGVsaWYgKGluaXRpYWwgaW4gc2luZ2xlX3F1b3RlZCBvcgogICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjJdIGluIHNpbmdsZV9xdW90ZWQgb3IKICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzozXSBpbiBzaW5nbGVfcXVvdGVkKToKICAgICAgICAgICAgICAgICAgICBpZiB0b2tlblstMV0gPT0gJ1xuJzogICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryc3RhcnQgPSAobG51bSwgc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgICAgICMgQWdhaW4sIHVzaW5nIHRoZSBmaXJzdCAzIGNoYXJzIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAjICB0b2tlbi4gVGhpcyBpcyBsb29raW5nIGZvciB0aGUgbWF0Y2hpbmcgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICMgIHJlZ2V4IGZvciB0aGUgY29ycmVjdCB0eXBlIG9mIHF1b3RlCiAgICAgICAgICAgICAgICAgICAgICAgICMgIGNoYXJhY3Rlci4gU28gaXQncyByZWFsbHkgbG9va2luZyBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgIyAgZW5kcGF0c1siJyJdIG9yIGVuZHBhdHNbJyInXSwgYnkgdHJ5aW5nIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICMgIHNraXAgc3RyaW5nIHByZWZpeCBjaGFyYWN0ZXJzLCBpZiBhbnkuCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzLmdldChpbml0aWFsKSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMV0pIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzLmdldCh0b2tlblsyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRzdHIsIG5lZWRjb250ID0gbGluZVtzdGFydDpdLCAxCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3JkaW5hcnkgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhTVFJJTkcsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQoKICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbC5pc2lkZW50aWZpZXIoKTogICAgICAgICAgICAgICAjIG9yZGluYXJ5IG5hbWUKICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oTkFNRSwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgPT0gJ1xcJzogICAgICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RtdAogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlZCA9IDEKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaWYgaW5pdGlhbCBpbiAnKFt7JzoKICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW5sZXYgKz0gMQogICAgICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiAnKV19JzoKICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW5sZXYgLT0gMQogICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhPUCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oRVJST1JUT0tFTiwgbGluZVtwb3NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAobG51bSwgcG9zKSwgKGxudW0sIHBvcysxKSwgbGluZSkKICAgICAgICAgICAgICAgIHBvcyArPSAxCgogICAgIyBBZGQgYW4gaW1wbGljaXQgTkVXTElORSBpZiB0aGUgaW5wdXQgZG9lc24ndCBlbmQgaW4gb25lCiAgICBpZiBsYXN0X2xpbmUgYW5kIGxhc3RfbGluZVstMV0gbm90IGluICdcclxuJyBhbmQgbm90IGxhc3RfbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoIiMiKToKICAgICAgICB5aWVsZCBUb2tlbkluZm8oTkVXTElORSwgJycsIChsbnVtIC0gMSwgbGVuKGxhc3RfbGluZSkpLCAobG51bSAtIDEsIGxlbihsYXN0X2xpbmUpICsgMSksICcnKQogICAgZm9yIGluZGVudCBpbiBpbmRlbnRzWzE6XTogICAgICAgICAgICAgICAgICMgcG9wIHJlbWFpbmluZyBpbmRlbnQgbGV2ZWxzCiAgICAgICAgeWllbGQgVG9rZW5JbmZvKERFREVOVCwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKICAgIHlpZWxkIFRva2VuSW5mbyhFTkRNQVJLRVIsICcnLCAobG51bSwgMCksIChsbnVtLCAwKSwgJycpCgoKZGVmIGdlbmVyYXRlX3Rva2VucyhyZWFkbGluZSk6CiAgICAiIiJUb2tlbml6ZSBhIHNvdXJjZSByZWFkaW5nIFB5dGhvbiBjb2RlIGFzIHVuaWNvZGUgc3RyaW5ncy4KCiAgICBUaGlzIGhhcyB0aGUgc2FtZSBBUEkgYXMgdG9rZW5pemUoKSwgZXhjZXB0IHRoYXQgaXQgZXhwZWN0cyB0aGUgKnJlYWRsaW5lKgogICAgY2FsbGFibGUgdG8gcmV0dXJuIHN0ciBvYmplY3RzIGluc3RlYWQgb2YgYnl0ZXMuCiAgICAiIiIKICAgIHJldHVybiBfdG9rZW5pemUocmVhZGxpbmUsIE5vbmUpCgpkZWYgbWFpbigpOgogICAgaW1wb3J0IGFyZ3BhcnNlCgogICAgIyBIZWxwZXIgZXJyb3IgaGFuZGxpbmcgcm91dGluZXMKICAgIGRlZiBwZXJyb3IobWVzc2FnZSk6CiAgICAgICAgc3lzLnN0ZGVyci53cml0ZShtZXNzYWdlKQogICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuJykKCiAgICBkZWYgZXJyb3IobWVzc2FnZSwgZmlsZW5hbWU9Tm9uZSwgbG9jYXRpb249Tm9uZSk6CiAgICAgICAgaWYgbG9jYXRpb246CiAgICAgICAgICAgIGFyZ3MgPSAoZmlsZW5hbWUsKSArIGxvY2F0aW9uICsgKG1lc3NhZ2UsKQogICAgICAgICAgICBwZXJyb3IoIiVzOiVkOiVkOiBlcnJvcjogJXMiICUgYXJncykKICAgICAgICBlbGlmIGZpbGVuYW1lOgogICAgICAgICAgICBwZXJyb3IoIiVzOiBlcnJvcjogJXMiICUgKGZpbGVuYW1lLCBtZXNzYWdlKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwZXJyb3IoImVycm9yOiAlcyIgJSBtZXNzYWdlKQogICAgICAgIHN5cy5leGl0KDEpCgogICAgIyBQYXJzZSB0aGUgYXJndW1lbnRzIGFuZCBvcHRpb25zCiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdweXRob24gLW0gdG9rZW5pemUnKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudChkZXN0PSdmaWxlbmFtZScsIG5hcmdzPSc/JywKICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0nZmlsZW5hbWUucHknLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgZmlsZSB0byB0b2tlbml6ZTsgZGVmYXVsdHMgdG8gc3RkaW4nKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWUnLCAnLS1leGFjdCcsIGRlc3Q9J2V4YWN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0b2tlbiBuYW1lcyB1c2luZyB0aGUgZXhhY3QgdHlwZScpCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQoKICAgIHRyeToKICAgICAgICAjIFRva2VuaXplIHRoZSBpbnB1dAogICAgICAgIGlmIGFyZ3MuZmlsZW5hbWU6CiAgICAgICAgICAgIGZpbGVuYW1lID0gYXJncy5maWxlbmFtZQogICAgICAgICAgICB3aXRoIF9idWlsdGluX29wZW4oZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgICAgICAgICB0b2tlbnMgPSBsaXN0KHRva2VuaXplKGYucmVhZGxpbmUpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZpbGVuYW1lID0gIjxzdGRpbj4iCiAgICAgICAgICAgIHRva2VucyA9IF90b2tlbml6ZShzeXMuc3RkaW4ucmVhZGxpbmUsIE5vbmUpCgogICAgICAgICMgT3V0cHV0IHRoZSB0b2tlbml6YXRpb24KICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgogICAgICAgICAgICB0b2tlbl90eXBlID0gdG9rZW4udHlwZQogICAgICAgICAgICBpZiBhcmdzLmV4YWN0OgogICAgICAgICAgICAgICAgdG9rZW5fdHlwZSA9IHRva2VuLmV4YWN0X3R5cGUKICAgICAgICAgICAgdG9rZW5fcmFuZ2UgPSAiJWQsJWQtJWQsJWQ6IiAlICh0b2tlbi5zdGFydCArIHRva2VuLmVuZCkKICAgICAgICAgICAgcHJpbnQoIiUtMjBzJS0xNXMlLTE1ciIgJQogICAgICAgICAgICAgICAgICAodG9rZW5fcmFuZ2UsIHRva19uYW1lW3Rva2VuX3R5cGVdLCB0b2tlbi5zdHJpbmcpKQogICAgZXhjZXB0IEluZGVudGF0aW9uRXJyb3IgYXMgZXJyOgogICAgICAgIGxpbmUsIGNvbHVtbiA9IGVyci5hcmdzWzFdWzE6M10KICAgICAgICBlcnJvcihlcnIuYXJnc1swXSwgZmlsZW5hbWUsIChsaW5lLCBjb2x1bW4pKQogICAgZXhjZXB0IFRva2VuRXJyb3IgYXMgZXJyOgogICAgICAgIGxpbmUsIGNvbHVtbiA9IGVyci5hcmdzWzFdCiAgICAgICAgZXJyb3IoZXJyLmFyZ3NbMF0sIGZpbGVuYW1lLCAobGluZSwgY29sdW1uKSkKICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlcnI6CiAgICAgICAgZXJyb3IoZXJyLCBmaWxlbmFtZSkKICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICBlcnJvcihlcnIpCiAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgcHJpbnQoImludGVycnVwdGVkXG4iKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CiAgICAgICAgcGVycm9yKCJ1bmV4cGVjdGVkIGVycm9yOiAlcyIgJSBlcnIpCiAgICAgICAgcmFpc2UKCmRlZiBfZ2VuZXJhdGVfdG9rZW5zX2Zyb21fY190b2tlbml6ZXIoc291cmNlKToKICAgICIiIlRva2VuaXplIGEgc291cmNlIHJlYWRpbmcgUHl0aG9uIGNvZGUgYXMgdW5pY29kZSBzdHJpbmdzIHVzaW5nIHRoZSBpbnRlcm5hbCBDIHRva2VuaXplciIiIgogICAgaW1wb3J0IF90b2tlbml6ZSBhcyBjX3Rva2VuaXplcgogICAgZm9yIGluZm8gaW4gY190b2tlbml6ZXIuVG9rZW5pemVySXRlcihzb3VyY2UpOgogICAgICAgIHRvaywgdHlwZSwgbGluZW5vLCBlbmRfbGluZW5vLCBjb2xfb2ZmLCBlbmRfY29sX29mZiwgbGluZSA9IGluZm8KICAgICAgICB5aWVsZCBUb2tlbkluZm8odHlwZSwgdG9rLCAobGluZW5vLCBjb2xfb2ZmKSwgKGVuZF9saW5lbm8sIGVuZF9jb2xfb2ZmKSwgbGluZSkKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbWFpbigpClBLAwQUAAAAAAACIKNWMFV5wxNyAAATcgAACAAAAHRyYWNlLnB5IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKIyBwb3J0aW9ucyBjb3B5cmlnaHQgMjAwMSwgQXV0b25vbW91cyBab25lcyBJbmR1c3RyaWVzLCBJbmMuLCBhbGwgcmlnaHRzLi4uCiMgZXJyLi4uICByZXNlcnZlZCBhbmQgb2ZmZXJlZCB0byB0aGUgcHVibGljIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKIyBQeXRob24gMi4yIGxpY2Vuc2UuCiMgQXV0aG9yOiBab29rbyBPJ1doaWVsYWNyb254CiMgaHR0cDovL3pvb2tvLmNvbS8KIyBtYWlsdG86em9va29Aem9va28uY29tCiMKIyBDb3B5cmlnaHQgMjAwMCwgTW9qYW0gTWVkaWEsIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuCiMgQXV0aG9yOiBTa2lwIE1vbnRhbmFybwojCiMgQ29weXJpZ2h0IDE5OTksIEJpb3JlYXNvbiwgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZlZC4KIyBBdXRob3I6IEFuZHJldyBEYWxrZQojCiMgQ29weXJpZ2h0IDE5OTUtMTk5NywgQXV0b21hdHJpeCwgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZlZC4KIyBBdXRob3I6IFNraXAgTW9udGFuYXJvCiMKIyBDb3B5cmlnaHQgMTk5MS0xOTk1LCBTdGljaHRpbmcgTWF0aGVtYXRpc2NoIENlbnRydW0sIGFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIwojIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgUHl0aG9uIHNvZnR3YXJlIGFuZAojIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIHdpdGhvdXQgZmVlIGlzIGhlcmVieQojIGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLAojIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbgojIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgbmVpdGhlciBBdXRvbWF0cml4LAojIEJpb3JlYXNvbiBvciBNb2phbSBNZWRpYSBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvCiMgZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uCiMKIiIicHJvZ3JhbS9tb2R1bGUgdG8gdHJhY2UgUHl0aG9uIHByb2dyYW0gb3IgZnVuY3Rpb24gZXhlY3V0aW9uCgpTYW1wbGUgdXNlLCBjb21tYW5kIGxpbmU6CiAgdHJhY2UucHkgLWMgLWYgY291bnRzIC0taWdub3JlLWRpciAnJHByZWZpeCcgc3BhbS5weSBlZ2dzCiAgdHJhY2UucHkgLXQgLS1pZ25vcmUtZGlyICckcHJlZml4JyBzcGFtLnB5IGVnZ3MKICB0cmFjZS5weSAtLXRyYWNrY2FsbHMgc3BhbS5weSBlZ2dzCgpTYW1wbGUgdXNlLCBwcm9ncmFtbWF0aWNhbGx5CiAgaW1wb3J0IHN5cwoKICAjIGNyZWF0ZSBhIFRyYWNlIG9iamVjdCwgdGVsbGluZyBpdCB3aGF0IHRvIGlnbm9yZSwgYW5kIHdoZXRoZXIgdG8KICAjIGRvIHRyYWNpbmcgb3IgbGluZS1jb3VudGluZyBvciBib3RoLgogIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsXSwKICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT0wLCBjb3VudD0xKQogICMgcnVuIHRoZSBuZXcgY29tbWFuZCB1c2luZyB0aGUgZ2l2ZW4gdHJhY2VyCiAgdHJhY2VyLnJ1bignbWFpbigpJykKICAjIG1ha2UgYSByZXBvcnQsIHBsYWNpbmcgb3V0cHV0IGluIC90bXAKICByID0gdHJhY2VyLnJlc3VsdHMoKQogIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgY292ZXJkaXI9Ii90bXAiKQoiIiIKX19hbGxfXyA9IFsnVHJhY2UnLCAnQ292ZXJhZ2VSZXN1bHRzJ10KCmltcG9ydCBsaW5lY2FjaGUKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IHN5c2NvbmZpZwppbXBvcnQgdG9rZW4KaW1wb3J0IHRva2VuaXplCmltcG9ydCBpbnNwZWN0CmltcG9ydCBnYwppbXBvcnQgZGlzCmltcG9ydCBwaWNrbGUKZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKCmltcG9ydCB0aHJlYWRpbmcKClBSQUdNQV9OT0NPVkVSID0gIiNwcmFnbWEgTk8gQ09WRVIiCgpjbGFzcyBfSWdub3JlOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZXM9Tm9uZSwgZGlycz1Ob25lKToKICAgICAgICBzZWxmLl9tb2RzID0gc2V0KCkgaWYgbm90IG1vZHVsZXMgZWxzZSBzZXQobW9kdWxlcykKICAgICAgICBzZWxmLl9kaXJzID0gW10gaWYgbm90IGRpcnMgZWxzZSBbb3MucGF0aC5ub3JtcGF0aChkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBkaXJzXQogICAgICAgIHNlbGYuX2lnbm9yZSA9IHsgJzxzdHJpbmc+JzogMSB9CgogICAgZGVmIG5hbWVzKHNlbGYsIGZpbGVuYW1lLCBtb2R1bGVuYW1lKToKICAgICAgICBpZiBtb2R1bGVuYW1lIGluIHNlbGYuX2lnbm9yZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lnbm9yZVttb2R1bGVuYW1lXQoKICAgICAgICAjIGhhdmVuJ3Qgc2VlbiB0aGlzIG9uZSBiZWZvcmUsIHNvIHNlZSBpZiB0aGUgbW9kdWxlIG5hbWUgaXMKICAgICAgICAjIG9uIHRoZSBpZ25vcmUgbGlzdC4KICAgICAgICBpZiBtb2R1bGVuYW1lIGluIHNlbGYuX21vZHM6ICAjIElkZW50aWNhbCBuYW1lcywgc28gaWdub3JlCiAgICAgICAgICAgIHNlbGYuX2lnbm9yZVttb2R1bGVuYW1lXSA9IDEKICAgICAgICAgICAgcmV0dXJuIDEKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgbW9kdWxlIGlzIGEgcHJvcGVyIHN1Ym1vZHVsZSBvZiBzb21ldGhpbmcgb24KICAgICAgICAjIHRoZSBpZ25vcmUgbGlzdAogICAgICAgIGZvciBtb2QgaW4gc2VsZi5fbW9kczoKICAgICAgICAgICAgIyBOZWVkIHRvIHRha2Ugc29tZSBjYXJlIHNpbmNlIGlnbm9yaW5nCiAgICAgICAgICAgICMgImNtcCIgbXVzdG4ndCBtZWFuIGlnbm9yaW5nICJjbXBjYWNoZSIgYnV0IGlnbm9yaW5nCiAgICAgICAgICAgICMgIlNwYW0iIG11c3QgYWxzbyBtZWFuIGlnbm9yaW5nICJTcGFtLkVnZ3MiLgogICAgICAgICAgICBpZiBtb2R1bGVuYW1lLnN0YXJ0c3dpdGgobW9kICsgJy4nKToKICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZVttb2R1bGVuYW1lXSA9IDEKICAgICAgICAgICAgICAgIHJldHVybiAxCgogICAgICAgICMgTm93IGNoZWNrIHRoYXQgZmlsZW5hbWUgaXNuJ3QgaW4gb25lIG9mIHRoZSBkaXJlY3RvcmllcwogICAgICAgIGlmIGZpbGVuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICMgbXVzdCBiZSBhIGJ1aWx0LWluLCBzbyB3ZSBtdXN0IGlnbm9yZQogICAgICAgICAgICBzZWxmLl9pZ25vcmVbbW9kdWxlbmFtZV0gPSAxCiAgICAgICAgICAgIHJldHVybiAxCgogICAgICAgICMgSWdub3JlIGEgZmlsZSB3aGVuIGl0IGNvbnRhaW5zIG9uZSBvZiB0aGUgaWdub3JhYmxlIHBhdGhzCiAgICAgICAgZm9yIGQgaW4gc2VsZi5fZGlyczoKICAgICAgICAgICAgIyBUaGUgJysgb3Muc2VwJyBpcyB0byBlbnN1cmUgdGhhdCBkIGlzIGEgcGFyZW50IGRpcmVjdG9yeSwKICAgICAgICAgICAgIyBhcyBjb21wYXJlZCB0byBjYXNlcyBsaWtlOgogICAgICAgICAgICAjICBkID0gIi91c3IvbG9jYWwiCiAgICAgICAgICAgICMgIGZpbGVuYW1lID0gIi91c3IvbG9jYWwucHkiCiAgICAgICAgICAgICMgb3IKICAgICAgICAgICAgIyAgZCA9ICIvdXNyL2xvY2FsLnB5IgogICAgICAgICAgICAjICBmaWxlbmFtZSA9ICIvdXNyL2xvY2FsLnB5IgogICAgICAgICAgICBpZiBmaWxlbmFtZS5zdGFydHN3aXRoKGQgKyBvcy5zZXApOgogICAgICAgICAgICAgICAgc2VsZi5faWdub3JlW21vZHVsZW5hbWVdID0gMQogICAgICAgICAgICAgICAgcmV0dXJuIDEKCiAgICAgICAgIyBUcmllZCB0aGUgZGlmZmVyZW50IHdheXMsIHNvIHdlIGRvbid0IGlnbm9yZSB0aGlzIG1vZHVsZQogICAgICAgIHNlbGYuX2lnbm9yZVttb2R1bGVuYW1lXSA9IDAKICAgICAgICByZXR1cm4gMAoKZGVmIF9tb2RuYW1lKHBhdGgpOgogICAgIiIiUmV0dXJuIGEgcGxhdXNpYmxlIG1vZHVsZSBuYW1lIGZvciB0aGUgcGF0aC4iIiIKCiAgICBiYXNlID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQogICAgZmlsZW5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZSkKICAgIHJldHVybiBmaWxlbmFtZQoKZGVmIF9mdWxsbW9kbmFtZShwYXRoKToKICAgICIiIlJldHVybiBhIHBsYXVzaWJsZSBtb2R1bGUgbmFtZSBmb3IgdGhlIHBhdGguIiIiCgogICAgIyBJZiB0aGUgZmlsZSAncGF0aCcgaXMgcGFydCBvZiBhIHBhY2thZ2UsIHRoZW4gdGhlIGZpbGVuYW1lIGlzbid0CiAgICAjIGVub3VnaCB0byB1bmlxdWVseSBpZGVudGlmeSBpdC4gIFRyeSB0byBkbyB0aGUgcmlnaHQgdGhpbmcgYnkKICAgICMgbG9va2luZyBpbiBzeXMucGF0aCBmb3IgdGhlIGxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4LiAgV2UnbGwKICAgICMgYXNzdW1lIHRoYXQgdGhlIHJlc3QgaXMgdGhlIHBhY2thZ2UgbmFtZS4KCiAgICBjb21wYXJlcGF0aCA9IG9zLnBhdGgubm9ybWNhc2UocGF0aCkKICAgIGxvbmdlc3QgPSAiIgogICAgZm9yIGRpciBpbiBzeXMucGF0aDoKICAgICAgICBkaXIgPSBvcy5wYXRoLm5vcm1jYXNlKGRpcikKICAgICAgICBpZiBjb21wYXJlcGF0aC5zdGFydHN3aXRoKGRpcikgYW5kIGNvbXBhcmVwYXRoW2xlbihkaXIpXSA9PSBvcy5zZXA6CiAgICAgICAgICAgIGlmIGxlbihkaXIpID4gbGVuKGxvbmdlc3QpOgogICAgICAgICAgICAgICAgbG9uZ2VzdCA9IGRpcgoKICAgIGlmIGxvbmdlc3Q6CiAgICAgICAgYmFzZSA9IHBhdGhbbGVuKGxvbmdlc3QpICsgMTpdCiAgICBlbHNlOgogICAgICAgIGJhc2UgPSBwYXRoCiAgICAjIHRoZSBkcml2ZSBsZXR0ZXIgaXMgbmV2ZXIgcGFydCBvZiB0aGUgbW9kdWxlIG5hbWUKICAgIGRyaXZlLCBiYXNlID0gb3MucGF0aC5zcGxpdGRyaXZlKGJhc2UpCiAgICBiYXNlID0gYmFzZS5yZXBsYWNlKG9zLnNlcCwgIi4iKQogICAgaWYgb3MuYWx0c2VwOgogICAgICAgIGJhc2UgPSBiYXNlLnJlcGxhY2Uob3MuYWx0c2VwLCAiLiIpCiAgICBmaWxlbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChiYXNlKQogICAgcmV0dXJuIGZpbGVuYW1lLmxzdHJpcCgiLiIpCgpjbGFzcyBDb3ZlcmFnZVJlc3VsdHM6CiAgICBkZWYgX19pbml0X18oc2VsZiwgY291bnRzPU5vbmUsIGNhbGxlZGZ1bmNzPU5vbmUsIGluZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgIGNhbGxlcnM9Tm9uZSwgb3V0ZmlsZT1Ob25lKToKICAgICAgICBzZWxmLmNvdW50cyA9IGNvdW50cwogICAgICAgIGlmIHNlbGYuY291bnRzIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuY291bnRzID0ge30KICAgICAgICBzZWxmLmNvdW50ZXIgPSBzZWxmLmNvdW50cy5jb3B5KCkgIyBtYXAgKGZpbGVuYW1lLCBsaW5lbm8pIHRvIGNvdW50CiAgICAgICAgc2VsZi5jYWxsZWRmdW5jcyA9IGNhbGxlZGZ1bmNzCiAgICAgICAgaWYgc2VsZi5jYWxsZWRmdW5jcyBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmNhbGxlZGZ1bmNzID0ge30KICAgICAgICBzZWxmLmNhbGxlZGZ1bmNzID0gc2VsZi5jYWxsZWRmdW5jcy5jb3B5KCkKICAgICAgICBzZWxmLmNhbGxlcnMgPSBjYWxsZXJzCiAgICAgICAgaWYgc2VsZi5jYWxsZXJzIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuY2FsbGVycyA9IHt9CiAgICAgICAgc2VsZi5jYWxsZXJzID0gc2VsZi5jYWxsZXJzLmNvcHkoKQogICAgICAgIHNlbGYuaW5maWxlID0gaW5maWxlCiAgICAgICAgc2VsZi5vdXRmaWxlID0gb3V0ZmlsZQogICAgICAgIGlmIHNlbGYuaW5maWxlOgogICAgICAgICAgICAjIFRyeSB0byBtZXJnZSBleGlzdGluZyBjb3VudHMgZmlsZS4KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuaW5maWxlLCAncmInKSBhcyBmOgogICAgICAgICAgICAgICAgICAgIGNvdW50cywgY2FsbGVkZnVuY3MsIGNhbGxlcnMgPSBwaWNrbGUubG9hZChmKQogICAgICAgICAgICAgICAgc2VsZi51cGRhdGUoc2VsZi5fX2NsYXNzX18oY291bnRzLCBjYWxsZWRmdW5jcywgY2FsbGVycz1jYWxsZXJzKSkKICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBFT0ZFcnJvciwgVmFsdWVFcnJvcikgYXMgZXJyOgogICAgICAgICAgICAgICAgcHJpbnQoKCJTa2lwcGluZyBjb3VudHMgZmlsZSAlcjogJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5pbmZpbGUsIGVycikpLCBmaWxlPXN5cy5zdGRlcnIpCgogICAgZGVmIGlzX2lnbm9yZWRfZmlsZW5hbWUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmaWxlbmFtZSBkb2VzIG5vdCByZWZlciB0byBhIGZpbGUKICAgICAgICB3ZSB3YW50IHRvIGhhdmUgcmVwb3J0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJzwnKSBhbmQgZmlsZW5hbWUuZW5kc3dpdGgoJz4nKQoKICAgIGRlZiB1cGRhdGUoc2VsZiwgb3RoZXIpOgogICAgICAgICIiIk1lcmdlIGluIHRoZSBkYXRhIGZyb20gYW5vdGhlciBDb3ZlcmFnZVJlc3VsdHMiIiIKICAgICAgICBjb3VudHMgPSBzZWxmLmNvdW50cwogICAgICAgIGNhbGxlZGZ1bmNzID0gc2VsZi5jYWxsZWRmdW5jcwogICAgICAgIGNhbGxlcnMgPSBzZWxmLmNhbGxlcnMKICAgICAgICBvdGhlcl9jb3VudHMgPSBvdGhlci5jb3VudHMKICAgICAgICBvdGhlcl9jYWxsZWRmdW5jcyA9IG90aGVyLmNhbGxlZGZ1bmNzCiAgICAgICAgb3RoZXJfY2FsbGVycyA9IG90aGVyLmNhbGxlcnMKCiAgICAgICAgZm9yIGtleSBpbiBvdGhlcl9jb3VudHM6CiAgICAgICAgICAgIGNvdW50c1trZXldID0gY291bnRzLmdldChrZXksIDApICsgb3RoZXJfY291bnRzW2tleV0KCiAgICAgICAgZm9yIGtleSBpbiBvdGhlcl9jYWxsZWRmdW5jczoKICAgICAgICAgICAgY2FsbGVkZnVuY3Nba2V5XSA9IDEKCiAgICAgICAgZm9yIGtleSBpbiBvdGhlcl9jYWxsZXJzOgogICAgICAgICAgICBjYWxsZXJzW2tleV0gPSAxCgogICAgZGVmIHdyaXRlX3Jlc3VsdHMoc2VsZiwgc2hvd19taXNzaW5nPVRydWUsIHN1bW1hcnk9RmFsc2UsIGNvdmVyZGlyPU5vbmUpOgogICAgICAgICIiIgogICAgICAgIFdyaXRlIHRoZSBjb3ZlcmFnZSByZXN1bHRzLgoKICAgICAgICA6cGFyYW0gc2hvd19taXNzaW5nOiBTaG93IGxpbmVzIHRoYXQgaGFkIG5vIGhpdHMuCiAgICAgICAgOnBhcmFtIHN1bW1hcnk6IEluY2x1ZGUgY292ZXJhZ2Ugc3VtbWFyeSBwZXIgbW9kdWxlLgogICAgICAgIDpwYXJhbSBjb3ZlcmRpcjogSWYgTm9uZSwgdGhlIHJlc3VsdHMgb2YgZWFjaCBtb2R1bGUgYXJlIHBsYWNlZCBpbiBpdHMKICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgb3RoZXJ3aXNlIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNhbGxlZGZ1bmNzOgogICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgIHByaW50KCJmdW5jdGlvbnMgY2FsbGVkOiIpCiAgICAgICAgICAgIGNhbGxzID0gc2VsZi5jYWxsZWRmdW5jcwogICAgICAgICAgICBmb3IgZmlsZW5hbWUsIG1vZHVsZW5hbWUsIGZ1bmNuYW1lIGluIHNvcnRlZChjYWxscyk6CiAgICAgICAgICAgICAgICBwcmludCgoImZpbGVuYW1lOiAlcywgbW9kdWxlbmFtZTogJXMsIGZ1bmNuYW1lOiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAlIChmaWxlbmFtZSwgbW9kdWxlbmFtZSwgZnVuY25hbWUpKSkKCiAgICAgICAgaWYgc2VsZi5jYWxsZXJzOgogICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgIHByaW50KCJjYWxsaW5nIHJlbGF0aW9uc2hpcHM6IikKICAgICAgICAgICAgbGFzdGZpbGUgPSBsYXN0Y2ZpbGUgPSAiIgogICAgICAgICAgICBmb3IgKChwZmlsZSwgcG1vZCwgcGZ1bmMpLCAoY2ZpbGUsIGNtb2QsIGNmdW5jKSkgXAogICAgICAgICAgICAgICAgICAgIGluIHNvcnRlZChzZWxmLmNhbGxlcnMpOgogICAgICAgICAgICAgICAgaWYgcGZpbGUgIT0gbGFzdGZpbGU6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoKQogICAgICAgICAgICAgICAgICAgIHByaW50KCIqKioiLCBwZmlsZSwgIioqKiIpCiAgICAgICAgICAgICAgICAgICAgbGFzdGZpbGUgPSBwZmlsZQogICAgICAgICAgICAgICAgICAgIGxhc3RjZmlsZSA9ICIiCiAgICAgICAgICAgICAgICBpZiBjZmlsZSAhPSBwZmlsZSBhbmQgbGFzdGNmaWxlICE9IGNmaWxlOgogICAgICAgICAgICAgICAgICAgIHByaW50KCIgIC0tPiIsIGNmaWxlKQogICAgICAgICAgICAgICAgICAgIGxhc3RjZmlsZSA9IGNmaWxlCiAgICAgICAgICAgICAgICBwcmludCgiICAgICVzLiVzIC0+ICVzLiVzIiAlIChwbW9kLCBwZnVuYywgY21vZCwgY2Z1bmMpKQoKICAgICAgICAjIHR1cm4gdGhlIGNvdW50cyBkYXRhICgiKGZpbGVuYW1lLCBsaW5lbm8pID0gY291bnQiKSBpbnRvIHNvbWV0aGluZwogICAgICAgICMgYWNjZXNzaWJsZSBvbiBhIHBlci1maWxlIGJhc2lzCiAgICAgICAgcGVyX2ZpbGUgPSB7fQogICAgICAgIGZvciBmaWxlbmFtZSwgbGluZW5vIGluIHNlbGYuY291bnRzOgogICAgICAgICAgICBsaW5lc19oaXQgPSBwZXJfZmlsZVtmaWxlbmFtZV0gPSBwZXJfZmlsZS5nZXQoZmlsZW5hbWUsIHt9KQogICAgICAgICAgICBsaW5lc19oaXRbbGluZW5vXSA9IHNlbGYuY291bnRzWyhmaWxlbmFtZSwgbGluZW5vKV0KCiAgICAgICAgIyBhY2N1bXVsYXRlIHN1bW1hcnkgaW5mbywgaWYgbmVlZGVkCiAgICAgICAgc3VtcyA9IHt9CgogICAgICAgIGZvciBmaWxlbmFtZSwgY291bnQgaW4gcGVyX2ZpbGUuaXRlbXMoKToKICAgICAgICAgICAgaWYgc2VsZi5pc19pZ25vcmVkX2ZpbGVuYW1lKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgiLnB5YyIpOgogICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCgogICAgICAgICAgICBpZiBjb3ZlcmRpciBpcyBOb25lOgogICAgICAgICAgICAgICAgZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkpCiAgICAgICAgICAgICAgICBtb2R1bGVuYW1lID0gX21vZG5hbWUoZmlsZW5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkaXIgPSBjb3ZlcmRpcgogICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcik6CiAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZGlyKQogICAgICAgICAgICAgICAgbW9kdWxlbmFtZSA9IF9mdWxsbW9kbmFtZShmaWxlbmFtZSkKCiAgICAgICAgICAgICMgSWYgZGVzaXJlZCwgZ2V0IGEgbGlzdCBvZiB0aGUgbGluZSBudW1iZXJzIHdoaWNoIHJlcHJlc2VudAogICAgICAgICAgICAjIGV4ZWN1dGFibGUgY29udGVudCAocmV0dXJuZWQgYXMgYSBkaWN0IGZvciBiZXR0ZXIgbG9va3VwIHNwZWVkKQogICAgICAgICAgICBpZiBzaG93X21pc3Npbmc6CiAgICAgICAgICAgICAgICBsbm90YWIgPSBfZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmlsZW5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBsbm90YWIgPSB7fQogICAgICAgICAgICBzb3VyY2UgPSBsaW5lY2FjaGUuZ2V0bGluZXMoZmlsZW5hbWUpCiAgICAgICAgICAgIGNvdmVycGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG1vZHVsZW5hbWUgKyAiLmNvdmVyIikKICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncmInKSBhcyBmcDoKICAgICAgICAgICAgICAgIGVuY29kaW5nLCBfID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKGZwLnJlYWRsaW5lKQogICAgICAgICAgICBuX2hpdHMsIG5fbGluZXMgPSBzZWxmLndyaXRlX3Jlc3VsdHNfZmlsZShjb3ZlcnBhdGgsIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG5vdGFiLCBjb3VudCwgZW5jb2RpbmcpCiAgICAgICAgICAgIGlmIHN1bW1hcnkgYW5kIG5fbGluZXM6CiAgICAgICAgICAgICAgICBwZXJjZW50ID0gaW50KDEwMCAqIG5faGl0cyAvIG5fbGluZXMpCiAgICAgICAgICAgICAgICBzdW1zW21vZHVsZW5hbWVdID0gbl9saW5lcywgcGVyY2VudCwgbW9kdWxlbmFtZSwgZmlsZW5hbWUKCgogICAgICAgIGlmIHN1bW1hcnkgYW5kIHN1bXM6CiAgICAgICAgICAgIHByaW50KCJsaW5lcyAgIGNvdiUgICBtb2R1bGUgICAocGF0aCkiKQogICAgICAgICAgICBmb3IgbSBpbiBzb3J0ZWQoc3Vtcyk6CiAgICAgICAgICAgICAgICBuX2xpbmVzLCBwZXJjZW50LCBtb2R1bGVuYW1lLCBmaWxlbmFtZSA9IHN1bXNbbV0KICAgICAgICAgICAgICAgIHByaW50KCIlNWQgICAlM2QlJSAgICVzICAgKCVzKSIgJSBzdW1zW21dKQoKICAgICAgICBpZiBzZWxmLm91dGZpbGU6CiAgICAgICAgICAgICMgdHJ5IGFuZCBzdG9yZSBjb3VudHMgYW5kIG1vZHVsZSBpbmZvIGludG8gc2VsZi5vdXRmaWxlCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm91dGZpbGUsICd3YicpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAoKHNlbGYuY291bnRzLCBzZWxmLmNhbGxlZGZ1bmNzLCBzZWxmLmNhbGxlcnMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYsIDEpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgIHByaW50KCJDYW4ndCBzYXZlIGNvdW50cyBmaWxlcyBiZWNhdXNlICVzIiAlIGVyciwgZmlsZT1zeXMuc3RkZXJyKQoKICAgIGRlZiB3cml0ZV9yZXN1bHRzX2ZpbGUoc2VsZiwgcGF0aCwgbGluZXMsIGxub3RhYiwgbGluZXNfaGl0LCBlbmNvZGluZz1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gYSBjb3ZlcmFnZSByZXN1bHRzIGZpbGUgaW4gcGF0aC4iIiIKICAgICAgICAjIGBgbG5vdGFiYGAgaXMgYSBkaWN0IG9mIGV4ZWN1dGFibGUgbGluZXMsIG9yIGEgbGluZSBudW1iZXIgInRhYmxlIgoKICAgICAgICB0cnk6CiAgICAgICAgICAgIG91dGZpbGUgPSBvcGVuKHBhdGgsICJ3IiwgZW5jb2Rpbmc9ZW5jb2RpbmcpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICBwcmludCgoInRyYWNlOiBDb3VsZCBub3Qgb3BlbiAlciBmb3Igd3JpdGluZzogJXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0gc2tpcHBpbmciICUgKHBhdGgsIGVycikpLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgICAgIHJldHVybiAwLCAwCgogICAgICAgIG5fbGluZXMgPSAwCiAgICAgICAgbl9oaXRzID0gMAogICAgICAgIHdpdGggb3V0ZmlsZToKICAgICAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUobGluZXMsIDEpOgogICAgICAgICAgICAgICAgIyBkbyB0aGUgYmxhbmsvY29tbWVudCBtYXRjaCB0byB0cnkgdG8gbWFyayBtb3JlIGxpbmVzCiAgICAgICAgICAgICAgICAjIChoZWxwIHRoZSByZWFkZXIgZmluZCBzdHVmZiB0aGF0IGhhc24ndCBiZWVuIGNvdmVyZWQpCiAgICAgICAgICAgICAgICBpZiBsaW5lbm8gaW4gbGluZXNfaGl0OgogICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiU1ZDogIiAlIGxpbmVzX2hpdFtsaW5lbm9dKQogICAgICAgICAgICAgICAgICAgIG5faGl0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgbl9saW5lcyArPSAxCiAgICAgICAgICAgICAgICBlbGlmIGxpbmVubyBpbiBsbm90YWIgYW5kIG5vdCBQUkFHTUFfTk9DT1ZFUiBpbiBsaW5lOgogICAgICAgICAgICAgICAgICAgICMgSGlnaGxpZ2h0IG5ldmVyLWV4ZWN1dGVkIGxpbmVzLCB1bmxlc3MgdGhlIGxpbmUgY29udGFpbnMKICAgICAgICAgICAgICAgICAgICAjICNwcmFnbWE6IE5PIENPVkVSCiAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiPj4+Pj4+ICIpCiAgICAgICAgICAgICAgICAgICAgbl9saW5lcyArPSAxCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiAgICAgICAiKQogICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZShsaW5lLmV4cGFuZHRhYnMoOCkpCgogICAgICAgIHJldHVybiBuX2hpdHMsIG5fbGluZXMKCmRlZiBfZmluZF9saW5lc19mcm9tX2NvZGUoY29kZSwgc3Rycyk6CiAgICAiIiJSZXR1cm4gZGljdCB3aGVyZSBrZXlzIGFyZSBsaW5lcyBpbiB0aGUgbGluZSBudW1iZXIgdGFibGUuIiIiCiAgICBsaW5lbm9zID0ge30KCiAgICBmb3IgXywgbGluZW5vIGluIGRpcy5maW5kbGluZXN0YXJ0cyhjb2RlKToKICAgICAgICBpZiBsaW5lbm8gbm90IGluIHN0cnM6CiAgICAgICAgICAgIGxpbmVub3NbbGluZW5vXSA9IDEKCiAgICByZXR1cm4gbGluZW5vcwoKZGVmIF9maW5kX2xpbmVzKGNvZGUsIHN0cnMpOgogICAgIiIiUmV0dXJuIGxpbmVubyBkaWN0IGZvciBhbGwgY29kZSBvYmplY3RzIHJlYWNoYWJsZSBmcm9tIGNvZGUuIiIiCiAgICAjIGdldCBhbGwgb2YgdGhlIGxpbmVubyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb2RlIG9mIHRoaXMgc2NvcGUgbGV2ZWwKICAgIGxpbmVub3MgPSBfZmluZF9saW5lc19mcm9tX2NvZGUoY29kZSwgc3RycykKCiAgICAjIGFuZCBjaGVjayB0aGUgY29uc3RhbnRzIGZvciByZWZlcmVuY2VzIHRvIG90aGVyIGNvZGUgb2JqZWN0cwogICAgZm9yIGMgaW4gY29kZS5jb19jb25zdHM6CiAgICAgICAgaWYgaW5zcGVjdC5pc2NvZGUoYyk6CiAgICAgICAgICAgICMgZmluZCBhbm90aGVyIGNvZGUgb2JqZWN0LCBzbyByZWN1cnNlIGludG8gaXQKICAgICAgICAgICAgbGluZW5vcy51cGRhdGUoX2ZpbmRfbGluZXMoYywgc3RycykpCiAgICByZXR1cm4gbGluZW5vcwoKZGVmIF9maW5kX3N0cmluZ3MoZmlsZW5hbWUsIGVuY29kaW5nPU5vbmUpOgogICAgIiIiUmV0dXJuIGEgZGljdCBvZiBwb3NzaWJsZSBkb2NzdHJpbmcgcG9zaXRpb25zLgoKICAgIFRoZSBkaWN0IG1hcHMgbGluZSBudW1iZXJzIHRvIHN0cmluZ3MuICBUaGVyZSBpcyBhbiBlbnRyeSBmb3IKICAgIGxpbmUgdGhhdCBjb250YWlucyBvbmx5IGEgc3RyaW5nIG9yIGEgcGFydCBvZiBhIHRyaXBsZS1xdW90ZWQKICAgIHN0cmluZy4KICAgICIiIgogICAgZCA9IHt9CiAgICAjIElmIHRoZSBmaXJzdCB0b2tlbiBpcyBhIHN0cmluZywgdGhlbiBpdCdzIHRoZSBtb2R1bGUgZG9jc3RyaW5nLgogICAgIyBBZGQgdGhpcyBzcGVjaWFsIGNhc2Ugc28gdGhhdCB0aGUgdGVzdCBpbiB0aGUgbG9vcCBwYXNzZXMuCiAgICBwcmV2X3R0eXBlID0gdG9rZW4uSU5ERU5UCiAgICB3aXRoIG9wZW4oZmlsZW5hbWUsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmOgogICAgICAgIHRvayA9IHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhmLnJlYWRsaW5lKQogICAgICAgIGZvciB0dHlwZSwgdHN0ciwgc3RhcnQsIGVuZCwgbGluZSBpbiB0b2s6CiAgICAgICAgICAgIGlmIHR0eXBlID09IHRva2VuLlNUUklORzoKICAgICAgICAgICAgICAgIGlmIHByZXZfdHR5cGUgPT0gdG9rZW4uSU5ERU5UOgogICAgICAgICAgICAgICAgICAgIHNsaW5lLCBzY29sID0gc3RhcnQKICAgICAgICAgICAgICAgICAgICBlbGluZSwgZWNvbCA9IGVuZAogICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHNsaW5lLCBlbGluZSArIDEpOgogICAgICAgICAgICAgICAgICAgICAgICBkW2ldID0gMQogICAgICAgICAgICBwcmV2X3R0eXBlID0gdHR5cGUKICAgIHJldHVybiBkCgpkZWYgX2ZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZpbGVuYW1lKToKICAgICIiIlJldHVybiBkaWN0IHdoZXJlIGtleXMgYXJlIGxpbmUgbnVtYmVycyBpbiB0aGUgbGluZSBudW1iZXIgdGFibGUuIiIiCiAgICB0cnk6CiAgICAgICAgd2l0aCB0b2tlbml6ZS5vcGVuKGZpbGVuYW1lKSBhcyBmOgogICAgICAgICAgICBwcm9nID0gZi5yZWFkKCkKICAgICAgICAgICAgZW5jb2RpbmcgPSBmLmVuY29kaW5nCiAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgcHJpbnQoKCJOb3QgcHJpbnRpbmcgY292ZXJhZ2UgZGF0YSBmb3IgJXI6ICVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChmaWxlbmFtZSwgZXJyKSksIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICByZXR1cm4ge30KICAgIGNvZGUgPSBjb21waWxlKHByb2csIGZpbGVuYW1lLCAiZXhlYyIpCiAgICBzdHJzID0gX2ZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2RpbmcpCiAgICByZXR1cm4gX2ZpbmRfbGluZXMoY29kZSwgc3RycykKCmNsYXNzIFRyYWNlOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvdW50PTEsIHRyYWNlPTEsIGNvdW50ZnVuY3M9MCwgY291bnRjYWxsZXJzPTAsCiAgICAgICAgICAgICAgICAgaWdub3JlbW9kcz0oKSwgaWdub3JlZGlycz0oKSwgaW5maWxlPU5vbmUsIG91dGZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICB0aW1pbmc9RmFsc2UpOgogICAgICAgICIiIgogICAgICAgIEBwYXJhbSBjb3VudCB0cnVlIGlmZiBpdCBzaG91bGQgY291bnQgbnVtYmVyIG9mIHRpbWVzIGVhY2gKICAgICAgICAgICAgICAgICAgICAgbGluZSBpcyBleGVjdXRlZAogICAgICAgIEBwYXJhbSB0cmFjZSB0cnVlIGlmZiBpdCBzaG91bGQgcHJpbnQgb3V0IGVhY2ggbGluZSB0aGF0IGlzCiAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGNvdW50ZWQKICAgICAgICBAcGFyYW0gY291bnRmdW5jcyB0cnVlIGlmZiBpdCBzaG91bGQganVzdCBvdXRwdXQgYSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZSwgbW9kdWxlbmFtZSwgZnVuY25hbWUsKSBmb3IgZnVuY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2VyZSBjYWxsZWQgYXQgbGVhc3Qgb25jZTsgIFRoaXMgb3ZlcnJpZGVzCiAgICAgICAgICAgICAgICAgICAgIGBjb3VudCcgYW5kIGB0cmFjZScKICAgICAgICBAcGFyYW0gaWdub3JlbW9kcyBhIGxpc3Qgb2YgdGhlIG5hbWVzIG9mIG1vZHVsZXMgdG8gaWdub3JlCiAgICAgICAgQHBhcmFtIGlnbm9yZWRpcnMgYSBsaXN0IG9mIHRoZSBuYW1lcyBvZiBkaXJlY3RvcmllcyB0byBpZ25vcmUKICAgICAgICAgICAgICAgICAgICAgYWxsIG9mIHRoZSAocmVjdXJzaXZlKSBjb250ZW50cyBvZgogICAgICAgIEBwYXJhbSBpbmZpbGUgZmlsZSBmcm9tIHdoaWNoIHRvIHJlYWQgc3RvcmVkIGNvdW50cyB0byBiZQogICAgICAgICAgICAgICAgICAgICBhZGRlZCBpbnRvIHRoZSByZXN1bHRzCiAgICAgICAgQHBhcmFtIG91dGZpbGUgZmlsZSBpbiB3aGljaCB0byB3cml0ZSB0aGUgcmVzdWx0cwogICAgICAgIEBwYXJhbSB0aW1pbmcgdHJ1ZSBpZmYgdGltaW5nIGluZm9ybWF0aW9uIGJlIGRpc3BsYXllZAogICAgICAgICIiIgogICAgICAgIHNlbGYuaW5maWxlID0gaW5maWxlCiAgICAgICAgc2VsZi5vdXRmaWxlID0gb3V0ZmlsZQogICAgICAgIHNlbGYuaWdub3JlID0gX0lnbm9yZShpZ25vcmVtb2RzLCBpZ25vcmVkaXJzKQogICAgICAgIHNlbGYuY291bnRzID0ge30gICAjIGtleXMgYXJlIChmaWxlbmFtZSwgbGluZW51bWJlcikKICAgICAgICBzZWxmLnBhdGh0b2Jhc2VuYW1lID0ge30gIyBmb3IgbWVtb2l6aW5nIG9zLnBhdGguYmFzZW5hbWUKICAgICAgICBzZWxmLmRvbm90aGluZyA9IDAKICAgICAgICBzZWxmLnRyYWNlID0gdHJhY2UKICAgICAgICBzZWxmLl9jYWxsZWRmdW5jcyA9IHt9CiAgICAgICAgc2VsZi5fY2FsbGVycyA9IHt9CiAgICAgICAgc2VsZi5fY2FsbGVyX2NhY2hlID0ge30KICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCiAgICAgICAgaWYgdGltaW5nOgogICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBfdGltZSgpCiAgICAgICAgaWYgY291bnRjYWxsZXJzOgogICAgICAgICAgICBzZWxmLmdsb2JhbHRyYWNlID0gc2VsZi5nbG9iYWx0cmFjZV90cmFja2NhbGxlcnMKICAgICAgICBlbGlmIGNvdW50ZnVuY3M6CiAgICAgICAgICAgIHNlbGYuZ2xvYmFsdHJhY2UgPSBzZWxmLmdsb2JhbHRyYWNlX2NvdW50ZnVuY3MKICAgICAgICBlbGlmIHRyYWNlIGFuZCBjb3VudDoKICAgICAgICAgICAgc2VsZi5nbG9iYWx0cmFjZSA9IHNlbGYuZ2xvYmFsdHJhY2VfbHQKICAgICAgICAgICAgc2VsZi5sb2NhbHRyYWNlID0gc2VsZi5sb2NhbHRyYWNlX3RyYWNlX2FuZF9jb3VudAogICAgICAgIGVsaWYgdHJhY2U6CiAgICAgICAgICAgIHNlbGYuZ2xvYmFsdHJhY2UgPSBzZWxmLmdsb2JhbHRyYWNlX2x0CiAgICAgICAgICAgIHNlbGYubG9jYWx0cmFjZSA9IHNlbGYubG9jYWx0cmFjZV90cmFjZQogICAgICAgIGVsaWYgY291bnQ6CiAgICAgICAgICAgIHNlbGYuZ2xvYmFsdHJhY2UgPSBzZWxmLmdsb2JhbHRyYWNlX2x0CiAgICAgICAgICAgIHNlbGYubG9jYWx0cmFjZSA9IHNlbGYubG9jYWx0cmFjZV9jb3VudAogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgQWhlbSAtLSBkbyBub3RoaW5nPyAgT2theS4KICAgICAgICAgICAgc2VsZi5kb25vdGhpbmcgPSAxCgogICAgZGVmIHJ1bihzZWxmLCBjbWQpOgogICAgICAgIGltcG9ydCBfX21haW5fXwogICAgICAgIGRpY3QgPSBfX21haW5fXy5fX2RpY3RfXwogICAgICAgIHNlbGYucnVuY3R4KGNtZCwgZGljdCwgZGljdCkKCiAgICBkZWYgcnVuY3R4KHNlbGYsIGNtZCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSk6CiAgICAgICAgaWYgZ2xvYmFscyBpcyBOb25lOiBnbG9iYWxzID0ge30KICAgICAgICBpZiBsb2NhbHMgaXMgTm9uZTogbG9jYWxzID0ge30KICAgICAgICBpZiBub3Qgc2VsZi5kb25vdGhpbmc6CiAgICAgICAgICAgIHRocmVhZGluZy5zZXR0cmFjZShzZWxmLmdsb2JhbHRyYWNlKQogICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi5nbG9iYWx0cmFjZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGV4ZWMoY21kLCBnbG9iYWxzLCBsb2NhbHMpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgaWYgbm90IHNlbGYuZG9ub3RoaW5nOgogICAgICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCiAgICAgICAgICAgICAgICB0aHJlYWRpbmcuc2V0dHJhY2UoTm9uZSkKCiAgICBkZWYgcnVuZnVuYyhzZWxmLCBmdW5jLCAvLCAqYXJncywgKiprdyk6CiAgICAgICAgcmVzdWx0ID0gTm9uZQogICAgICAgIGlmIG5vdCBzZWxmLmRvbm90aGluZzoKICAgICAgICAgICAgc3lzLnNldHRyYWNlKHNlbGYuZ2xvYmFsdHJhY2UpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBmdW5jKCphcmdzLCAqKmt3KQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRvbm90aGluZzoKICAgICAgICAgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgZmlsZV9tb2R1bGVfZnVuY3Rpb25fb2Yoc2VsZiwgZnJhbWUpOgogICAgICAgIGNvZGUgPSBmcmFtZS5mX2NvZGUKICAgICAgICBmaWxlbmFtZSA9IGNvZGUuY29fZmlsZW5hbWUKICAgICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgICAgbW9kdWxlbmFtZSA9IF9tb2RuYW1lKGZpbGVuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1vZHVsZW5hbWUgPSBOb25lCgogICAgICAgIGZ1bmNuYW1lID0gY29kZS5jb19uYW1lCiAgICAgICAgY2xzbmFtZSA9IE5vbmUKICAgICAgICBpZiBjb2RlIGluIHNlbGYuX2NhbGxlcl9jYWNoZToKICAgICAgICAgICAgaWYgc2VsZi5fY2FsbGVyX2NhY2hlW2NvZGVdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgY2xzbmFtZSA9IHNlbGYuX2NhbGxlcl9jYWNoZVtjb2RlXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2NhbGxlcl9jYWNoZVtjb2RlXSA9IE5vbmUKICAgICAgICAgICAgIyMgdXNlIG9mIGdjLmdldF9yZWZlcnJlcnMoKSB3YXMgc3VnZ2VzdGVkIGJ5IE1pY2hhZWwgSHVkc29uCiAgICAgICAgICAgICMgYWxsIGZ1bmN0aW9ucyB3aGljaCByZWZlciB0byB0aGlzIGNvZGUgb2JqZWN0CiAgICAgICAgICAgIGZ1bmNzID0gW2YgZm9yIGYgaW4gZ2MuZ2V0X3JlZmVycmVycyhjb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5zcGVjdC5pc2Z1bmN0aW9uKGYpXQogICAgICAgICAgICAjIHJlcXVpcmUgbGVuKGZ1bmMpID09IDEgdG8gYXZvaWQgYW1iaWd1aXR5IGNhdXNlZCBieSBjYWxscyB0bwogICAgICAgICAgICAjIG5ldy5mdW5jdGlvbigpOiAiSW4gdGhlIGZhY2Ugb2YgYW1iaWd1aXR5LCByZWZ1c2UgdGhlCiAgICAgICAgICAgICMgdGVtcHRhdGlvbiB0byBndWVzcy4iCiAgICAgICAgICAgIGlmIGxlbihmdW5jcykgPT0gMToKICAgICAgICAgICAgICAgIGRpY3RzID0gW2QgZm9yIGQgaW4gZ2MuZ2V0X3JlZmVycmVycyhmdW5jc1swXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGQsIGRpY3QpXQogICAgICAgICAgICAgICAgaWYgbGVuKGRpY3RzKSA9PSAxOgogICAgICAgICAgICAgICAgICAgIGNsYXNzZXMgPSBbYyBmb3IgYyBpbiBnYy5nZXRfcmVmZXJyZXJzKGRpY3RzWzBdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoYywgIl9fYmFzZXNfXyIpXQogICAgICAgICAgICAgICAgICAgIGlmIGxlbihjbGFzc2VzKSA9PSAxOgogICAgICAgICAgICAgICAgICAgICAgICAjIGRpdHRvIGZvciBuZXcuY2xhc3NvYmooKQogICAgICAgICAgICAgICAgICAgICAgICBjbHNuYW1lID0gY2xhc3Nlc1swXS5fX25hbWVfXwogICAgICAgICAgICAgICAgICAgICAgICAjIGNhY2hlIHRoZSByZXN1bHQgLSBhc3N1bXB0aW9uIGlzIHRoYXQgbmV3LiogaXMKICAgICAgICAgICAgICAgICAgICAgICAgIyBub3QgY2FsbGVkIGxhdGVyIHRvIGRpc3R1cmIgdGhpcyByZWxhdGlvbnNoaXAKICAgICAgICAgICAgICAgICAgICAgICAgIyBfY2FsbGVyX2NhY2hlIGNvdWxkIGJlIGZsdXNoZWQgaWYgZnVuY3Rpb25zIGluCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5ldyBtb2R1bGUgZ2V0IGNhbGxlZC4KICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGVyX2NhY2hlW2NvZGVdID0gY2xzbmFtZQogICAgICAgIGlmIGNsc25hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGZ1bmNuYW1lID0gIiVzLiVzIiAlIChjbHNuYW1lLCBmdW5jbmFtZSkKCiAgICAgICAgcmV0dXJuIGZpbGVuYW1lLCBtb2R1bGVuYW1lLCBmdW5jbmFtZQoKICAgIGRlZiBnbG9iYWx0cmFjZV90cmFja2NhbGxlcnMoc2VsZiwgZnJhbWUsIHdoeSwgYXJnKToKICAgICAgICAiIiJIYW5kbGVyIGZvciBjYWxsIGV2ZW50cy4KCiAgICAgICAgQWRkcyBpbmZvcm1hdGlvbiBhYm91dCB3aG8gY2FsbGVkIHdobyB0byB0aGUgc2VsZi5fY2FsbGVycyBkaWN0LgogICAgICAgICIiIgogICAgICAgIGlmIHdoeSA9PSAnY2FsbCc6CiAgICAgICAgICAgICMgWFhYIFNob3VsZCBkbyBhIGJldHRlciBqb2Igb2YgaWRlbnRpZnlpbmcgbWV0aG9kcwogICAgICAgICAgICB0aGlzX2Z1bmMgPSBzZWxmLmZpbGVfbW9kdWxlX2Z1bmN0aW9uX29mKGZyYW1lKQogICAgICAgICAgICBwYXJlbnRfZnVuYyA9IHNlbGYuZmlsZV9tb2R1bGVfZnVuY3Rpb25fb2YoZnJhbWUuZl9iYWNrKQogICAgICAgICAgICBzZWxmLl9jYWxsZXJzWyhwYXJlbnRfZnVuYywgdGhpc19mdW5jKV0gPSAxCgogICAgZGVmIGdsb2JhbHRyYWNlX2NvdW50ZnVuY3Moc2VsZiwgZnJhbWUsIHdoeSwgYXJnKToKICAgICAgICAiIiJIYW5kbGVyIGZvciBjYWxsIGV2ZW50cy4KCiAgICAgICAgQWRkcyAoZmlsZW5hbWUsIG1vZHVsZW5hbWUsIGZ1bmNuYW1lKSB0byB0aGUgc2VsZi5fY2FsbGVkZnVuY3MgZGljdC4KICAgICAgICAiIiIKICAgICAgICBpZiB3aHkgPT0gJ2NhbGwnOgogICAgICAgICAgICB0aGlzX2Z1bmMgPSBzZWxmLmZpbGVfbW9kdWxlX2Z1bmN0aW9uX29mKGZyYW1lKQogICAgICAgICAgICBzZWxmLl9jYWxsZWRmdW5jc1t0aGlzX2Z1bmNdID0gMQoKICAgIGRlZiBnbG9iYWx0cmFjZV9sdChzZWxmLCBmcmFtZSwgd2h5LCBhcmcpOgogICAgICAgICIiIkhhbmRsZXIgZm9yIGNhbGwgZXZlbnRzLgoKICAgICAgICBJZiB0aGUgY29kZSBibG9jayBiZWluZyBlbnRlcmVkIGlzIHRvIGJlIGlnbm9yZWQsIHJldHVybnMgYE5vbmUnLAogICAgICAgIGVsc2UgcmV0dXJucyBzZWxmLmxvY2FsdHJhY2UuCiAgICAgICAgIiIiCiAgICAgICAgaWYgd2h5ID09ICdjYWxsJzoKICAgICAgICAgICAgY29kZSA9IGZyYW1lLmZfY29kZQogICAgICAgICAgICBmaWxlbmFtZSA9IGZyYW1lLmZfZ2xvYmFscy5nZXQoJ19fZmlsZV9fJywgTm9uZSkKICAgICAgICAgICAgaWYgZmlsZW5hbWU6CiAgICAgICAgICAgICAgICAjIFhYWCBfbW9kbmFtZSgpIGRvZXNuJ3Qgd29yayByaWdodCBmb3IgcGFja2FnZXMsIHNvCiAgICAgICAgICAgICAgICAjIHRoZSBpZ25vcmUgc3VwcG9ydCB3b24ndCB3b3JrIHJpZ2h0IGZvciBwYWNrYWdlcwogICAgICAgICAgICAgICAgbW9kdWxlbmFtZSA9IF9tb2RuYW1lKGZpbGVuYW1lKQogICAgICAgICAgICAgICAgaWYgbW9kdWxlbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfaXQgPSBzZWxmLmlnbm9yZS5uYW1lcyhmaWxlbmFtZSwgbW9kdWxlbmFtZSkKICAgICAgICAgICAgICAgICAgICBpZiBub3QgaWdub3JlX2l0OgogICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnRyYWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoKCIgLS0tIG1vZHVsZW5hbWU6ICVzLCBmdW5jbmFtZTogJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAobW9kdWxlbmFtZSwgY29kZS5jb19uYW1lKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxvY2FsdHJhY2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGxvY2FsdHJhY2VfdHJhY2VfYW5kX2NvdW50KHNlbGYsIGZyYW1lLCB3aHksIGFyZyk6CiAgICAgICAgaWYgd2h5ID09ICJsaW5lIjoKICAgICAgICAgICAgIyByZWNvcmQgdGhlIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIgb2YgZXZlcnkgdHJhY2UKICAgICAgICAgICAgZmlsZW5hbWUgPSBmcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUKICAgICAgICAgICAgbGluZW5vID0gZnJhbWUuZl9saW5lbm8KICAgICAgICAgICAga2V5ID0gZmlsZW5hbWUsIGxpbmVubwogICAgICAgICAgICBzZWxmLmNvdW50c1trZXldID0gc2VsZi5jb3VudHMuZ2V0KGtleSwgMCkgKyAxCgogICAgICAgICAgICBpZiBzZWxmLnN0YXJ0X3RpbWU6CiAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAoX3RpbWUoKSAtIHNlbGYuc3RhcnRfdGltZSksIGVuZD0nICcpCiAgICAgICAgICAgIGJuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkKICAgICAgICAgICAgcHJpbnQoIiVzKCVkKTogJXMiICUgKGJuYW1lLCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKSksIGVuZD0nJykKICAgICAgICByZXR1cm4gc2VsZi5sb2NhbHRyYWNlCgogICAgZGVmIGxvY2FsdHJhY2VfdHJhY2Uoc2VsZiwgZnJhbWUsIHdoeSwgYXJnKToKICAgICAgICBpZiB3aHkgPT0gImxpbmUiOgogICAgICAgICAgICAjIHJlY29yZCB0aGUgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlciBvZiBldmVyeSB0cmFjZQogICAgICAgICAgICBmaWxlbmFtZSA9IGZyYW1lLmZfY29kZS5jb19maWxlbmFtZQogICAgICAgICAgICBsaW5lbm8gPSBmcmFtZS5mX2xpbmVubwoKICAgICAgICAgICAgaWYgc2VsZi5zdGFydF90aW1lOgogICAgICAgICAgICAgICAgcHJpbnQoJyUuMmYnICUgKF90aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQogICAgICAgICAgICBibmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgICAgIHByaW50KCIlcyglZCk6ICVzIiAlIChibmFtZSwgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykpLCBlbmQ9JycpCiAgICAgICAgcmV0dXJuIHNlbGYubG9jYWx0cmFjZQoKICAgIGRlZiBsb2NhbHRyYWNlX2NvdW50KHNlbGYsIGZyYW1lLCB3aHksIGFyZyk6CiAgICAgICAgaWYgd2h5ID09ICJsaW5lIjoKICAgICAgICAgICAgZmlsZW5hbWUgPSBmcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUKICAgICAgICAgICAgbGluZW5vID0gZnJhbWUuZl9saW5lbm8KICAgICAgICAgICAga2V5ID0gZmlsZW5hbWUsIGxpbmVubwogICAgICAgICAgICBzZWxmLmNvdW50c1trZXldID0gc2VsZi5jb3VudHMuZ2V0KGtleSwgMCkgKyAxCiAgICAgICAgcmV0dXJuIHNlbGYubG9jYWx0cmFjZQoKICAgIGRlZiByZXN1bHRzKHNlbGYpOgogICAgICAgIHJldHVybiBDb3ZlcmFnZVJlc3VsdHMoc2VsZi5jb3VudHMsIGluZmlsZT1zZWxmLmluZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGU9c2VsZi5vdXRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkZnVuY3M9c2VsZi5fY2FsbGVkZnVuY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJzPXNlbGYuX2NhbGxlcnMpCgpkZWYgbWFpbigpOgogICAgaW1wb3J0IGFyZ3BhcnNlCgogICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0ndHJhY2UgMi4wJykKCiAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNYWluIG9wdGlvbnMnLAogICAgICAgICAgICAnT25lIG9mIHRoZXNlIChvciAtLXJlcG9ydCkgbXVzdCBiZSBnaXZlbicpCgogICAgZ3JwLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb3VudCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgIGhlbHA9J0NvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgZWFjaCBsaW5lIGlzIGV4ZWN1dGVkIGFuZCB3cml0ZSAnCiAgICAgICAgICAgICAgICAgJ3RoZSBjb3VudHMgdG8gPG1vZHVsZT4uY292ZXIgZm9yIGVhY2ggbW9kdWxlIGV4ZWN1dGVkLCBpbiAnCiAgICAgICAgICAgICAgICAgJ3RoZSBtb2R1bGVcJ3MgZGlyZWN0b3J5LiBTZWUgYWxzbyAtLWNvdmVyZGlyLCAtLWZpbGUsICcKICAgICAgICAgICAgICAgICAnLS1uby1yZXBvcnQgYmVsb3cuJykKICAgIGdycC5hZGRfYXJndW1lbnQoJy10JywgJy0tdHJhY2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICBoZWxwPSdQcmludCBlYWNoIGxpbmUgdG8gc3lzLnN0ZG91dCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQnKQogICAgZ3JwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1saXN0ZnVuY3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICBoZWxwPSdLZWVwIHRyYWNrIG9mIHdoaWNoIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgYXQgbGVhc3Qgb25jZSAnCiAgICAgICAgICAgICAgICAgJ2FuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLiAnCiAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBiZSBzcGVjaWZpZWQgYWxvbmdzaWRlIC0tdHJhY2Ugb3IgLS1jb3VudC4nKQogICAgZ3JwLmFkZF9hcmd1bWVudCgnLVQnLCAnLS10cmFja2NhbGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgaGVscD0nS2VlcCB0cmFjayBvZiBjYWxsZXIvY2FsbGVkIHBhaXJzIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byAnCiAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQgYWZ0ZXIgdGhlIHByb2dyYW0gZXhpdHMuJykKCiAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNb2RpZmllcnMnKQoKICAgIF9ncnAgPSBncnAuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCiAgICBfZ3JwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yZXBvcnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICBoZWxwPSdHZW5lcmF0ZSBhIHJlcG9ydCBmcm9tIGEgY291bnRzIGZpbGU7IGRvZXMgbm90IGV4ZWN1dGUgYW55ICcKICAgICAgICAgICAgICAgICAnY29kZS4gLS1maWxlIG11c3Qgc3BlY2lmeSB0aGUgcmVzdWx0cyBmaWxlIHRvIHJlYWQsIHdoaWNoICcKICAgICAgICAgICAgICAgICAnbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1biB3aXRoIC0tY291bnQgJwogICAgICAgICAgICAgICAgICctLWZpbGU9RklMRScpCiAgICBfZ3JwLmFkZF9hcmd1bWVudCgnLVInLCAnLS1uby1yZXBvcnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICBoZWxwPSdEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4gJwogICAgICAgICAgICAgICAgICdVc2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjdW11bGF0ZSBvdmVyIHNldmVyYWwgcnVucy4nKQoKICAgIGdycC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZScsCiAgICAgICAgICAgIGhlbHA9J0ZpbGUgdG8gYWNjdW11bGF0ZSBjb3VudHMgb3ZlciBzZXZlcmFsIHJ1bnMnKQogICAgZ3JwLmFkZF9hcmd1bWVudCgnLUMnLCAnLS1jb3ZlcmRpcicsCiAgICAgICAgICAgIGhlbHA9J0RpcmVjdG9yeSB3aGVyZSB0aGUgcmVwb3J0IGZpbGVzIGdvLiBUaGUgY292ZXJhZ2UgcmVwb3J0ICcKICAgICAgICAgICAgICAgICAnZm9yIDxwYWNrYWdlPi48bW9kdWxlPiB3aWxsIGJlIHdyaXR0ZW4gdG8gZmlsZSAnCiAgICAgICAgICAgICAgICAgJzxkaXI+LzxwYWNrYWdlPi88bW9kdWxlPi5jb3ZlcicpCiAgICBncnAuYWRkX2FyZ3VtZW50KCctbScsICctLW1pc3NpbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICBoZWxwPSdBbm5vdGF0ZSBleGVjdXRhYmxlIGxpbmVzIHRoYXQgd2VyZSBub3QgZXhlY3V0ZWQgd2l0aCAnCiAgICAgICAgICAgICAgICAgJyI+Pj4+Pj4gIicpCiAgICBncnAuYWRkX2FyZ3VtZW50KCctcycsICctLXN1bW1hcnknLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICBoZWxwPSdXcml0ZSBhIGJyaWVmIHN1bW1hcnkgZm9yIGVhY2ggZmlsZSB0byBzeXMuc3Rkb3V0LiAnCiAgICAgICAgICAgICAgICAgJ0NhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0JykKICAgIGdycC5hZGRfYXJndW1lbnQoJy1nJywgJy0tdGltaW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgaGVscD0nUHJlZml4IGVhY2ggbGluZSB3aXRoIHRoZSB0aW1lIHNpbmNlIHRoZSBwcm9ncmFtIHN0YXJ0ZWQuICcKICAgICAgICAgICAgICAgICAnT25seSB1c2VkIHdoaWxlIHRyYWNpbmcnKQoKICAgIGdycCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0ZpbHRlcnMnLAogICAgICAgICAgICAnQ2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcycpCiAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1tb2R1bGUnLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCiAgICAgICAgICAgIGhlbHA9J0lnbm9yZSB0aGUgZ2l2ZW4gbW9kdWxlKHMpIGFuZCBpdHMgc3VibW9kdWxlcyAnCiAgICAgICAgICAgICAgICAgJyhpZiBpdCBpcyBhIHBhY2thZ2UpLiBBY2NlcHRzIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mICcKICAgICAgICAgICAgICAgICAnbW9kdWxlIG5hbWVzLicpCiAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1kaXInLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCiAgICAgICAgICAgIGhlbHA9J0lnbm9yZSBmaWxlcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5ICcKICAgICAgICAgICAgICAgICAnKG11bHRpcGxlIGRpcmVjdG9yaWVzIGNhbiBiZSBqb2luZWQgYnkgb3MucGF0aHNlcCkuJykKCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1vZHVsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RyYWNlIGEgbW9kdWxlLiAnKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgncHJvZ25hbWUnLCBuYXJncz0nPycsCiAgICAgICAgICAgIGhlbHA9J2ZpbGUgdG8gcnVuIGFzIG1haW4gcHJvZ3JhbScpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdhcmd1bWVudHMnLCBuYXJncz1hcmdwYXJzZS5SRU1BSU5ERVIsCiAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyB0byB0aGUgcHJvZ3JhbScpCgogICAgb3B0cyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKCiAgICBpZiBvcHRzLmlnbm9yZV9kaXI6CiAgICAgICAgX3ByZWZpeCA9IHN5c2NvbmZpZy5nZXRfcGF0aCgic3RkbGliIikKICAgICAgICBfZXhlY19wcmVmaXggPSBzeXNjb25maWcuZ2V0X3BhdGgoInBsYXRzdGRsaWIiKQoKICAgIGRlZiBwYXJzZV9pZ25vcmVfZGlyKHMpOgogICAgICAgIHMgPSBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5leHBhbmR2YXJzKHMpKQogICAgICAgIHMgPSBzLnJlcGxhY2UoJyRwcmVmaXgnLCBfcHJlZml4KS5yZXBsYWNlKCckZXhlY19wcmVmaXgnLCBfZXhlY19wcmVmaXgpCiAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocykKCiAgICBvcHRzLmlnbm9yZV9tb2R1bGUgPSBbbW9kLnN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBvcHRzLmlnbm9yZV9tb2R1bGUgZm9yIG1vZCBpbiBpLnNwbGl0KCcsJyldCiAgICBvcHRzLmlnbm9yZV9kaXIgPSBbcGFyc2VfaWdub3JlX2RpcihzKQogICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIG9wdHMuaWdub3JlX2RpciBmb3IgcyBpbiBpLnNwbGl0KG9zLnBhdGhzZXApXQoKICAgIGlmIG9wdHMucmVwb3J0OgogICAgICAgIGlmIG5vdCBvcHRzLmZpbGU6CiAgICAgICAgICAgIHBhcnNlci5lcnJvcignLXIvLS1yZXBvcnQgcmVxdWlyZXMgLWYvLS1maWxlJykKICAgICAgICByZXN1bHRzID0gQ292ZXJhZ2VSZXN1bHRzKGluZmlsZT1vcHRzLmZpbGUsIG91dGZpbGU9b3B0cy5maWxlKQogICAgICAgIHJldHVybiByZXN1bHRzLndyaXRlX3Jlc3VsdHMob3B0cy5taXNzaW5nLCBvcHRzLnN1bW1hcnksIG9wdHMuY292ZXJkaXIpCgogICAgaWYgbm90IGFueShbb3B0cy50cmFjZSwgb3B0cy5jb3VudCwgb3B0cy5saXN0ZnVuY3MsIG9wdHMudHJhY2tjYWxsc10pOgogICAgICAgIHBhcnNlci5lcnJvcignbXVzdCBzcGVjaWZ5IG9uZSBvZiAtLXRyYWNlLCAtLWNvdW50LCAtLXJlcG9ydCwgJwogICAgICAgICAgICAgICAgICAgICAnLS1saXN0ZnVuY3MsIG9yIC0tdHJhY2tjYWxscycpCgogICAgaWYgb3B0cy5saXN0ZnVuY3MgYW5kIChvcHRzLmNvdW50IG9yIG9wdHMudHJhY2UpOgogICAgICAgIHBhcnNlci5lcnJvcignY2Fubm90IHNwZWNpZnkgYm90aCAtLWxpc3RmdW5jcyBhbmQgKC0tdHJhY2Ugb3IgLS1jb3VudCknKQoKICAgIGlmIG9wdHMuc3VtbWFyeSBhbmQgbm90IG9wdHMuY291bnQ6CiAgICAgICAgcGFyc2VyLmVycm9yKCctLXN1bW1hcnkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQnKQoKICAgIGlmIG9wdHMucHJvZ25hbWUgaXMgTm9uZToKICAgICAgICBwYXJzZXIuZXJyb3IoJ3Byb2duYW1lIGlzIG1pc3Npbmc6IHJlcXVpcmVkIHdpdGggdGhlIG1haW4gb3B0aW9ucycpCgogICAgdCA9IFRyYWNlKG9wdHMuY291bnQsIG9wdHMudHJhY2UsIGNvdW50ZnVuY3M9b3B0cy5saXN0ZnVuY3MsCiAgICAgICAgICAgICAgY291bnRjYWxsZXJzPW9wdHMudHJhY2tjYWxscywgaWdub3JlbW9kcz1vcHRzLmlnbm9yZV9tb2R1bGUsCiAgICAgICAgICAgICAgaWdub3JlZGlycz1vcHRzLmlnbm9yZV9kaXIsIGluZmlsZT1vcHRzLmZpbGUsCiAgICAgICAgICAgICAgb3V0ZmlsZT1vcHRzLmZpbGUsIHRpbWluZz1vcHRzLnRpbWluZykKICAgIHRyeToKICAgICAgICBpZiBvcHRzLm1vZHVsZToKICAgICAgICAgICAgaW1wb3J0IHJ1bnB5CiAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gb3B0cy5wcm9nbmFtZQogICAgICAgICAgICBtb2RfbmFtZSwgbW9kX3NwZWMsIGNvZGUgPSBydW5weS5fZ2V0X21vZHVsZV9kZXRhaWxzKG1vZHVsZV9uYW1lKQogICAgICAgICAgICBzeXMuYXJndiA9IFtjb2RlLmNvX2ZpbGVuYW1lLCAqb3B0cy5hcmd1bWVudHNdCiAgICAgICAgICAgIGdsb2JzID0gewogICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ19fbWFpbl9fJywKICAgICAgICAgICAgICAgICdfX2ZpbGVfXyc6IGNvZGUuY29fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiBtb2Rfc3BlYy5wYXJlbnQsCiAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1vZF9zcGVjLmxvYWRlciwKICAgICAgICAgICAgICAgICdfX3NwZWNfXyc6IG1vZF9zcGVjLAogICAgICAgICAgICAgICAgJ19fY2FjaGVkX18nOiBOb25lLAogICAgICAgICAgICB9CiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3lzLmFyZ3YgPSBbb3B0cy5wcm9nbmFtZSwgKm9wdHMuYXJndW1lbnRzXQogICAgICAgICAgICBzeXMucGF0aFswXSA9IG9zLnBhdGguZGlybmFtZShvcHRzLnByb2duYW1lKQoKICAgICAgICAgICAgd2l0aCBvcGVuKG9wdHMucHJvZ25hbWUsICdyYicpIGFzIGZwOgogICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZnAucmVhZCgpLCBvcHRzLnByb2duYW1lLCAnZXhlYycpCiAgICAgICAgICAgICMgdHJ5IHRvIGVtdWxhdGUgX19tYWluX18gbmFtZXNwYWNlIGFzIG11Y2ggYXMgcG9zc2libGUKICAgICAgICAgICAgZ2xvYnMgPSB7CiAgICAgICAgICAgICAgICAnX19maWxlX18nOiBvcHRzLnByb2duYW1lLAogICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ19fbWFpbl9fJywKICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6IE5vbmUsCiAgICAgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCiAgICAgICAgICAgIH0KICAgICAgICB0LnJ1bmN0eChjb2RlLCBnbG9icywgZ2xvYnMpCiAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgc3lzLmV4aXQoIkNhbm5vdCBydW4gZmlsZSAlciBiZWNhdXNlOiAlcyIgJSAoc3lzLmFyZ3ZbMF0sIGVycikpCiAgICBleGNlcHQgU3lzdGVtRXhpdDoKICAgICAgICBwYXNzCgogICAgcmVzdWx0cyA9IHQucmVzdWx0cygpCgogICAgaWYgbm90IG9wdHMubm9fcmVwb3J0OgogICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhvcHRzLm1pc3NpbmcsIG9wdHMuc3VtbWFyeSwgb3B0cy5jb3ZlcmRpcikKCmlmIF9fbmFtZV9fPT0nX19tYWluX18nOgogICAgbWFpbigpClBLAwQUAAAAAAACIKNWPcdDRRCWAAAQlgAADAAAAHRyYWNlYmFjay5weSIiIkV4dHJhY3QsIGZvcm1hdCBhbmQgcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgUHl0aG9uIHN0YWNrIHRyYWNlcy4iIiIKCmltcG9ydCBjb2xsZWN0aW9ucy5hYmMKaW1wb3J0IGl0ZXJ0b29scwppbXBvcnQgbGluZWNhY2hlCmltcG9ydCBzeXMKaW1wb3J0IHRleHR3cmFwCmZyb20gY29udGV4dGxpYiBpbXBvcnQgc3VwcHJlc3MKCl9fYWxsX18gPSBbJ2V4dHJhY3Rfc3RhY2snLCAnZXh0cmFjdF90YicsICdmb3JtYXRfZXhjZXB0aW9uJywKICAgICAgICAgICAnZm9ybWF0X2V4Y2VwdGlvbl9vbmx5JywgJ2Zvcm1hdF9saXN0JywgJ2Zvcm1hdF9zdGFjaycsCiAgICAgICAgICAgJ2Zvcm1hdF90YicsICdwcmludF9leGMnLCAnZm9ybWF0X2V4YycsICdwcmludF9leGNlcHRpb24nLAogICAgICAgICAgICdwcmludF9sYXN0JywgJ3ByaW50X3N0YWNrJywgJ3ByaW50X3RiJywgJ2NsZWFyX2ZyYW1lcycsCiAgICAgICAgICAgJ0ZyYW1lU3VtbWFyeScsICdTdGFja1N1bW1hcnknLCAnVHJhY2ViYWNrRXhjZXB0aW9uJywKICAgICAgICAgICAnd2Fsa19zdGFjaycsICd3YWxrX3RiJ10KCiMKIyBGb3JtYXR0aW5nIGFuZCBwcmludGluZyBsaXN0cyBvZiB0cmFjZWJhY2sgbGluZXMuCiMKCmRlZiBwcmludF9saXN0KGV4dHJhY3RlZF9saXN0LCBmaWxlPU5vbmUpOgogICAgIiIiUHJpbnQgdGhlIGxpc3Qgb2YgdHVwbGVzIGFzIHJldHVybmVkIGJ5IGV4dHJhY3RfdGIoKSBvcgogICAgZXh0cmFjdF9zdGFjaygpIGFzIGEgZm9ybWF0dGVkIHN0YWNrIHRyYWNlIHRvIHRoZSBnaXZlbiBmaWxlLiIiIgogICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCiAgICBmb3IgaXRlbSBpbiBTdGFja1N1bW1hcnkuZnJvbV9saXN0KGV4dHJhY3RlZF9saXN0KS5mb3JtYXQoKToKICAgICAgICBwcmludChpdGVtLCBmaWxlPWZpbGUsIGVuZD0iIikKCmRlZiBmb3JtYXRfbGlzdChleHRyYWN0ZWRfbGlzdCk6CiAgICAiIiJGb3JtYXQgYSBsaXN0IG9mIHR1cGxlcyBvciBGcmFtZVN1bW1hcnkgb2JqZWN0cyBmb3IgcHJpbnRpbmcuCgogICAgR2l2ZW4gYSBsaXN0IG9mIHR1cGxlcyBvciBGcmFtZVN1bW1hcnkgb2JqZWN0cyBhcyByZXR1cm5lZCBieQogICAgZXh0cmFjdF90YigpIG9yIGV4dHJhY3Rfc3RhY2soKSwgcmV0dXJuIGEgbGlzdCBvZiBzdHJpbmdzIHJlYWR5CiAgICBmb3IgcHJpbnRpbmcuCgogICAgRWFjaCBzdHJpbmcgaW4gdGhlIHJlc3VsdGluZyBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBpdGVtIHdpdGggdGhlCiAgICBzYW1lIGluZGV4IGluIHRoZSBhcmd1bWVudCBsaXN0LiAgRWFjaCBzdHJpbmcgZW5kcyBpbiBhIG5ld2xpbmU7CiAgICB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbCBuZXdsaW5lcyBhcyB3ZWxsLCBmb3IgdGhvc2UgaXRlbXMKICAgIHdob3NlIHNvdXJjZSB0ZXh0IGxpbmUgaXMgbm90IE5vbmUuCiAgICAiIiIKICAgIHJldHVybiBTdGFja1N1bW1hcnkuZnJvbV9saXN0KGV4dHJhY3RlZF9saXN0KS5mb3JtYXQoKQoKIwojIFByaW50aW5nIGFuZCBFeHRyYWN0aW5nIFRyYWNlYmFja3MuCiMKCmRlZiBwcmludF90Yih0YiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKToKICAgICIiIlByaW50IHVwIHRvICdsaW1pdCcgc3RhY2sgdHJhY2UgZW50cmllcyBmcm9tIHRoZSB0cmFjZWJhY2sgJ3RiJy4KCiAgICBJZiAnbGltaXQnIGlzIG9taXR0ZWQgb3IgTm9uZSwgYWxsIGVudHJpZXMgYXJlIHByaW50ZWQuICBJZiAnZmlsZScKICAgIGlzIG9taXR0ZWQgb3IgTm9uZSwgdGhlIG91dHB1dCBnb2VzIHRvIHN5cy5zdGRlcnI7IG90aGVyd2lzZQogICAgJ2ZpbGUnIHNob3VsZCBiZSBhbiBvcGVuIGZpbGUgb3IgZmlsZS1saWtlIG9iamVjdCB3aXRoIGEgd3JpdGUoKQogICAgbWV0aG9kLgogICAgIiIiCiAgICBwcmludF9saXN0KGV4dHJhY3RfdGIodGIsIGxpbWl0PWxpbWl0KSwgZmlsZT1maWxlKQoKZGVmIGZvcm1hdF90Yih0YiwgbGltaXQ9Tm9uZSk6CiAgICAiIiJBIHNob3J0aGFuZCBmb3IgJ2Zvcm1hdF9saXN0KGV4dHJhY3RfdGIodGIsIGxpbWl0KSknLiIiIgogICAgcmV0dXJuIGV4dHJhY3RfdGIodGIsIGxpbWl0PWxpbWl0KS5mb3JtYXQoKQoKZGVmIGV4dHJhY3RfdGIodGIsIGxpbWl0PU5vbmUpOgogICAgIiIiCiAgICBSZXR1cm4gYSBTdGFja1N1bW1hcnkgb2JqZWN0IHJlcHJlc2VudGluZyBhIGxpc3Qgb2YKICAgIHByZS1wcm9jZXNzZWQgZW50cmllcyBmcm9tIHRyYWNlYmFjay4KCiAgICBUaGlzIGlzIHVzZWZ1bCBmb3IgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgb2Ygc3RhY2sgdHJhY2VzLiAgSWYKICAgICdsaW1pdCcgaXMgb21pdHRlZCBvciBOb25lLCBhbGwgZW50cmllcyBhcmUgZXh0cmFjdGVkLiAgQQogICAgcHJlLXByb2Nlc3NlZCBzdGFjayB0cmFjZSBlbnRyeSBpcyBhIEZyYW1lU3VtbWFyeSBvYmplY3QKICAgIGNvbnRhaW5pbmcgYXR0cmlidXRlcyBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBhbmQgbGluZQogICAgcmVwcmVzZW50aW5nIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzdWFsbHkgcHJpbnRlZCBmb3IgYSBzdGFjawogICAgdHJhY2UuICBUaGUgbGluZSBpcyBhIHN0cmluZyB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nCiAgICB3aGl0ZXNwYWNlIHN0cmlwcGVkOyBpZiB0aGUgc291cmNlIGlzIG5vdCBhdmFpbGFibGUgaXQgaXMgTm9uZS4KICAgICIiIgogICAgcmV0dXJuIFN0YWNrU3VtbWFyeS5fZXh0cmFjdF9mcm9tX2V4dGVuZGVkX2ZyYW1lX2dlbigKICAgICAgICBfd2Fsa190Yl93aXRoX2Z1bGxfcG9zaXRpb25zKHRiKSwgbGltaXQ9bGltaXQpCgojCiMgRXhjZXB0aW9uIGZvcm1hdHRpbmcgYW5kIG91dHB1dC4KIwoKX2NhdXNlX21lc3NhZ2UgPSAoCiAgICAiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKICAgICJvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuIikKCl9jb250ZXh0X21lc3NhZ2UgPSAoCiAgICAiXG5EdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgIgogICAgImFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4iKQoKCmNsYXNzIF9TZW50aW5lbDoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIjxpbXBsaWNpdD4iCgpfc2VudGluZWwgPSBfU2VudGluZWwoKQoKZGVmIF9wYXJzZV92YWx1ZV90YihleGMsIHZhbHVlLCB0Yik6CiAgICBpZiAodmFsdWUgaXMgX3NlbnRpbmVsKSAhPSAodGIgaXMgX3NlbnRpbmVsKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJCb3RoIG9yIG5laXRoZXIgb2YgdmFsdWUgYW5kIHRiIG11c3QgYmUgZ2l2ZW4iKQogICAgaWYgdmFsdWUgaXMgdGIgaXMgX3NlbnRpbmVsOgogICAgICAgIGlmIGV4YyBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGMsIEJhc2VFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgcmV0dXJuIGV4YywgZXhjLl9fdHJhY2ViYWNrX18KCiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ0V4Y2VwdGlvbiBleHBlY3RlZCBmb3IgdmFsdWUsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYne3R5cGUoZXhjKS5fX25hbWVfX30gZm91bmQnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCiAgICByZXR1cm4gdmFsdWUsIHRiCgoKZGVmIHByaW50X2V4Y2VwdGlvbihleGMsIC8sIHZhbHVlPV9zZW50aW5lbCwgdGI9X3NlbnRpbmVsLCBsaW1pdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKToKICAgICIiIlByaW50IGV4Y2VwdGlvbiB1cCB0byAnbGltaXQnIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSAndGInIHRvICdmaWxlJy4KCiAgICBUaGlzIGRpZmZlcnMgZnJvbSBwcmludF90YigpIGluIHRoZSBmb2xsb3dpbmcgd2F5czogKDEpIGlmCiAgICB0cmFjZWJhY2sgaXMgbm90IE5vbmUsIGl0IHByaW50cyBhIGhlYWRlciAiVHJhY2ViYWNrIChtb3N0IHJlY2VudAogICAgY2FsbCBsYXN0KToiOyAoMikgaXQgcHJpbnRzIHRoZSBleGNlcHRpb24gdHlwZSBhbmQgdmFsdWUgYWZ0ZXIgdGhlCiAgICBzdGFjayB0cmFjZTsgKDMpIGlmIHR5cGUgaXMgU3ludGF4RXJyb3IgYW5kIHZhbHVlIGhhcyB0aGUKICAgIGFwcHJvcHJpYXRlIGZvcm1hdCwgaXQgcHJpbnRzIHRoZSBsaW5lIHdoZXJlIHRoZSBzeW50YXggZXJyb3IKICAgIG9jY3VycmVkIHdpdGggYSBjYXJldCBvbiB0aGUgbmV4dCBsaW5lIGluZGljYXRpbmcgdGhlIGFwcHJveGltYXRlCiAgICBwb3NpdGlvbiBvZiB0aGUgZXJyb3IuCiAgICAiIiIKICAgIHZhbHVlLCB0YiA9IF9wYXJzZV92YWx1ZV90YihleGMsIHZhbHVlLCB0YikKICAgIHRlID0gVHJhY2ViYWNrRXhjZXB0aW9uKHR5cGUodmFsdWUpLCB2YWx1ZSwgdGIsIGxpbWl0PWxpbWl0LCBjb21wYWN0PVRydWUpCiAgICB0ZS5wcmludChmaWxlPWZpbGUsIGNoYWluPWNoYWluKQoKCmRlZiBmb3JtYXRfZXhjZXB0aW9uKGV4YywgLywgdmFsdWU9X3NlbnRpbmVsLCB0Yj1fc2VudGluZWwsIGxpbWl0PU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgY2hhaW49VHJ1ZSk6CiAgICAiIiJGb3JtYXQgYSBzdGFjayB0cmFjZSBhbmQgdGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbi4KCiAgICBUaGUgYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudHMKICAgIHRvIHByaW50X2V4Y2VwdGlvbigpLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIGxpc3Qgb2Ygc3RyaW5ncywgZWFjaAogICAgZW5kaW5nIGluIGEgbmV3bGluZSBhbmQgc29tZSBjb250YWluaW5nIGludGVybmFsIG5ld2xpbmVzLiAgV2hlbgogICAgdGhlc2UgbGluZXMgYXJlIGNvbmNhdGVuYXRlZCBhbmQgcHJpbnRlZCwgZXhhY3RseSB0aGUgc2FtZSB0ZXh0IGlzCiAgICBwcmludGVkIGFzIGRvZXMgcHJpbnRfZXhjZXB0aW9uKCkuCiAgICAiIiIKICAgIHZhbHVlLCB0YiA9IF9wYXJzZV92YWx1ZV90YihleGMsIHZhbHVlLCB0YikKICAgIHRlID0gVHJhY2ViYWNrRXhjZXB0aW9uKHR5cGUodmFsdWUpLCB2YWx1ZSwgdGIsIGxpbWl0PWxpbWl0LCBjb21wYWN0PVRydWUpCiAgICByZXR1cm4gbGlzdCh0ZS5mb3JtYXQoY2hhaW49Y2hhaW4pKQoKCmRlZiBmb3JtYXRfZXhjZXB0aW9uX29ubHkoZXhjLCAvLCB2YWx1ZT1fc2VudGluZWwpOgogICAgIiIiRm9ybWF0IHRoZSBleGNlcHRpb24gcGFydCBvZiBhIHRyYWNlYmFjay4KCiAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgbGlzdCBvZiBzdHJpbmdzLCBlYWNoIGVuZGluZyBpbiBhIG5ld2xpbmUuCgogICAgTm9ybWFsbHksIHRoZSBsaXN0IGNvbnRhaW5zIGEgc2luZ2xlIHN0cmluZzsgaG93ZXZlciwgZm9yCiAgICBTeW50YXhFcnJvciBleGNlcHRpb25zLCBpdCBjb250YWlucyBzZXZlcmFsIGxpbmVzIHRoYXQgKHdoZW4KICAgIHByaW50ZWQpIGRpc3BsYXkgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlIHN5bnRheAogICAgZXJyb3Igb2NjdXJyZWQuCgogICAgVGhlIG1lc3NhZ2UgaW5kaWNhdGluZyB3aGljaCBleGNlcHRpb24gb2NjdXJyZWQgaXMgYWx3YXlzIHRoZSBsYXN0CiAgICBzdHJpbmcgaW4gdGhlIGxpc3QuCgogICAgIiIiCiAgICBpZiB2YWx1ZSBpcyBfc2VudGluZWw6CiAgICAgICAgdmFsdWUgPSBleGMKICAgIHRlID0gVHJhY2ViYWNrRXhjZXB0aW9uKHR5cGUodmFsdWUpLCB2YWx1ZSwgTm9uZSwgY29tcGFjdD1UcnVlKQogICAgcmV0dXJuIGxpc3QodGUuZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCkpCgoKIyAtLSBub3Qgb2ZmaWNpYWwgQVBJIGJ1dCBmb2xrIHByb2JhYmx5IHVzZSB0aGVzZSB0d28gZnVuY3Rpb25zLgoKZGVmIF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoZXR5cGUsIHZhbHVlKToKICAgIHZhbHVlc3RyID0gX3NhZmVfc3RyaW5nKHZhbHVlLCAnZXhjZXB0aW9uJykKICAgIGlmIHZhbHVlIGlzIE5vbmUgb3Igbm90IHZhbHVlc3RyOgogICAgICAgIGxpbmUgPSAiJXNcbiIgJSBldHlwZQogICAgZWxzZToKICAgICAgICBsaW5lID0gIiVzOiAlc1xuIiAlIChldHlwZSwgdmFsdWVzdHIpCiAgICByZXR1cm4gbGluZQoKZGVmIF9zYWZlX3N0cmluZyh2YWx1ZSwgd2hhdCwgZnVuYz1zdHIpOgogICAgdHJ5OgogICAgICAgIHJldHVybiBmdW5jKHZhbHVlKQogICAgZXhjZXB0OgogICAgICAgIHJldHVybiBmJzx7d2hhdH0ge2Z1bmMuX19uYW1lX199KCkgZmFpbGVkPicKCiMgLS0KCmRlZiBwcmludF9leGMobGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKToKICAgICIiIlNob3J0aGFuZCBmb3IgJ3ByaW50X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCksIGxpbWl0LCBmaWxlKScuIiIiCiAgICBwcmludF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpLCBsaW1pdD1saW1pdCwgZmlsZT1maWxlLCBjaGFpbj1jaGFpbikKCmRlZiBmb3JtYXRfZXhjKGxpbWl0PU5vbmUsIGNoYWluPVRydWUpOgogICAgIiIiTGlrZSBwcmludF9leGMoKSBidXQgcmV0dXJuIGEgc3RyaW5nLiIiIgogICAgcmV0dXJuICIiLmpvaW4oZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCksIGxpbWl0PWxpbWl0LCBjaGFpbj1jaGFpbikpCgpkZWYgcHJpbnRfbGFzdChsaW1pdD1Ob25lLCBmaWxlPU5vbmUsIGNoYWluPVRydWUpOgogICAgIiIiVGhpcyBpcyBhIHNob3J0aGFuZCBmb3IgJ3ByaW50X2V4Y2VwdGlvbihzeXMubGFzdF90eXBlLAogICAgc3lzLmxhc3RfdmFsdWUsIHN5cy5sYXN0X3RyYWNlYmFjaywgbGltaXQsIGZpbGUpJy4iIiIKICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgImxhc3RfdHlwZSIpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIGxhc3QgZXhjZXB0aW9uIikKICAgIHByaW50X2V4Y2VwdGlvbihzeXMubGFzdF90eXBlLCBzeXMubGFzdF92YWx1ZSwgc3lzLmxhc3RfdHJhY2ViYWNrLAogICAgICAgICAgICAgICAgICAgIGxpbWl0LCBmaWxlLCBjaGFpbikKCiMKIyBQcmludGluZyBhbmQgRXh0cmFjdGluZyBTdGFja3MuCiMKCmRlZiBwcmludF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAiIiJQcmludCBhIHN0YWNrIHRyYWNlIGZyb20gaXRzIGludm9jYXRpb24gcG9pbnQuCgogICAgVGhlIG9wdGlvbmFsICdmJyBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGFsdGVybmF0ZQogICAgc3RhY2sgZnJhbWUgYXQgd2hpY2ggdG8gc3RhcnQuIFRoZSBvcHRpb25hbCAnbGltaXQnIGFuZCAnZmlsZScKICAgIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIHByaW50X2V4Y2VwdGlvbigpLgogICAgIiIiCiAgICBpZiBmIGlzIE5vbmU6CiAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKICAgIHByaW50X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdD1saW1pdCksIGZpbGU9ZmlsZSkKCgpkZWYgZm9ybWF0X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSk6CiAgICAiIiJTaG9ydGhhbmQgZm9yICdmb3JtYXRfbGlzdChleHRyYWN0X3N0YWNrKGYsIGxpbWl0KSknLiIiIgogICAgaWYgZiBpcyBOb25lOgogICAgICAgIGYgPSBzeXMuX2dldGZyYW1lKCkuZl9iYWNrCiAgICByZXR1cm4gZm9ybWF0X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdD1saW1pdCkpCgoKZGVmIGV4dHJhY3Rfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lKToKICAgICIiIkV4dHJhY3QgdGhlIHJhdyB0cmFjZWJhY2sgZnJvbSB0aGUgY3VycmVudCBzdGFjayBmcmFtZS4KCiAgICBUaGUgcmV0dXJuIHZhbHVlIGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgZm9yIGV4dHJhY3RfdGIoKS4gIFRoZQogICAgb3B0aW9uYWwgJ2YnIGFuZCAnbGltaXQnIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCiAgICBwcmludF9zdGFjaygpLiAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IGlzIGEgcXVhZHJ1cGxlIChmaWxlbmFtZSwKICAgIGxpbmUgbnVtYmVyLCBmdW5jdGlvbiBuYW1lLCB0ZXh0KSwgYW5kIHRoZSBlbnRyaWVzIGFyZSBpbiBvcmRlcgogICAgZnJvbSBvbGRlc3QgdG8gbmV3ZXN0IHN0YWNrIGZyYW1lLgogICAgIiIiCiAgICBpZiBmIGlzIE5vbmU6CiAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKICAgIHN0YWNrID0gU3RhY2tTdW1tYXJ5LmV4dHJhY3Qod2Fsa19zdGFjayhmKSwgbGltaXQ9bGltaXQpCiAgICBzdGFjay5yZXZlcnNlKCkKICAgIHJldHVybiBzdGFjawoKCmRlZiBjbGVhcl9mcmFtZXModGIpOgogICAgIkNsZWFyIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgZnJhbWVzIG9mIGEgdHJhY2ViYWNrLiIKICAgIHdoaWxlIHRiIGlzIG5vdCBOb25lOgogICAgICAgIHRyeToKICAgICAgICAgICAgdGIudGJfZnJhbWUuY2xlYXIoKQogICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CiAgICAgICAgICAgICMgSWdub3JlIHRoZSBleGNlcHRpb24gcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBzdGlsbCBleGVjdXRpbmcuCiAgICAgICAgICAgIHBhc3MKICAgICAgICB0YiA9IHRiLnRiX25leHQKCgpjbGFzcyBGcmFtZVN1bW1hcnk6CiAgICAiIiJJbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBmcmFtZSBmcm9tIGEgdHJhY2ViYWNrLgoKICAgIC0gOmF0dHI6YGZpbGVuYW1lYCBUaGUgZmlsZW5hbWUgZm9yIHRoZSBmcmFtZS4KICAgIC0gOmF0dHI6YGxpbmVub2AgVGhlIGxpbmUgd2l0aGluIGZpbGVuYW1lIGZvciB0aGUgZnJhbWUgdGhhdCB3YXMKICAgICAgYWN0aXZlIHdoZW4gdGhlIGZyYW1lIHdhcyBjYXB0dXJlZC4KICAgIC0gOmF0dHI6YG5hbWVgIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBvciBtZXRob2QgdGhhdCB3YXMgZXhlY3V0aW5nCiAgICAgIHdoZW4gdGhlIGZyYW1lIHdhcyBjYXB0dXJlZC4KICAgIC0gOmF0dHI6YGxpbmVgIFRoZSB0ZXh0IGZyb20gdGhlIGxpbmVjYWNoZSBtb2R1bGUgZm9yIHRoZQogICAgICBvZiBjb2RlIHRoYXQgd2FzIHJ1bm5pbmcgd2hlbiB0aGUgZnJhbWUgd2FzIGNhcHR1cmVkLgogICAgLSA6YXR0cjpgbG9jYWxzYCBFaXRoZXIgTm9uZSBpZiBsb2NhbHMgd2VyZSBub3Qgc3VwcGxpZWQsIG9yIGEgZGljdAogICAgICBtYXBwaW5nIHRoZSBuYW1lIHRvIHRoZSByZXByKCkgb2YgdGhlIHZhcmlhYmxlLgogICAgIiIiCgogICAgX19zbG90c19fID0gKCdmaWxlbmFtZScsICdsaW5lbm8nLCAnZW5kX2xpbmVubycsICdjb2xubycsICdlbmRfY29sbm8nLAogICAgICAgICAgICAgICAgICduYW1lJywgJ19saW5lJywgJ2xvY2FscycpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsICosIGxvb2t1cF9saW5lPVRydWUsCiAgICAgICAgICAgIGxvY2Fscz1Ob25lLCBsaW5lPU5vbmUsCiAgICAgICAgICAgIGVuZF9saW5lbm89Tm9uZSwgY29sbm89Tm9uZSwgZW5kX2NvbG5vPU5vbmUpOgogICAgICAgICIiIkNvbnN0cnVjdCBhIEZyYW1lU3VtbWFyeS4KCiAgICAgICAgOnBhcmFtIGxvb2t1cF9saW5lOiBJZiBUcnVlLCBgbGluZWNhY2hlYCBpcyBjb25zdWx0ZWQgZm9yIHRoZSBzb3VyY2UKICAgICAgICAgICAgY29kZSBsaW5lLiBPdGhlcndpc2UsIHRoZSBsaW5lIHdpbGwgYmUgbG9va2VkIHVwIHdoZW4gZmlyc3QgbmVlZGVkLgogICAgICAgIDpwYXJhbSBsb2NhbHM6IElmIHN1cHBsaWVkIHRoZSBmcmFtZSBsb2NhbHMsIHdoaWNoIHdpbGwgYmUgY2FwdHVyZWQgYXMKICAgICAgICAgICAgb2JqZWN0IHJlcHJlc2VudGF0aW9ucy4KICAgICAgICA6cGFyYW0gbGluZTogSWYgcHJvdmlkZWQsIHVzZSB0aGlzIGluc3RlYWQgb2YgbG9va2luZyB1cCB0aGUgbGluZSBpbgogICAgICAgICAgICB0aGUgbGluZWNhY2hlLgogICAgICAgICIiIgogICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIHNlbGYuX2xpbmUgPSBsaW5lCiAgICAgICAgaWYgbG9va3VwX2xpbmU6CiAgICAgICAgICAgIHNlbGYubGluZQogICAgICAgIHNlbGYubG9jYWxzID0ge2s6IHJlcHIodikgZm9yIGssIHYgaW4gbG9jYWxzLml0ZW1zKCl9IGlmIGxvY2FscyBlbHNlIE5vbmUKICAgICAgICBzZWxmLmVuZF9saW5lbm8gPSBlbmRfbGluZW5vCiAgICAgICAgc2VsZi5jb2xubyA9IGNvbG5vCiAgICAgICAgc2VsZi5lbmRfY29sbm8gPSBlbmRfY29sbm8KCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBGcmFtZVN1bW1hcnkpOgogICAgICAgICAgICByZXR1cm4gKHNlbGYuZmlsZW5hbWUgPT0gb3RoZXIuZmlsZW5hbWUgYW5kCiAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPT0gb3RoZXIubGluZW5vIGFuZAogICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9PSBvdGhlci5uYW1lIGFuZAogICAgICAgICAgICAgICAgICAgIHNlbGYubG9jYWxzID09IG90aGVyLmxvY2FscykKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0dXBsZSk6CiAgICAgICAgICAgIHJldHVybiAoc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIHNlbGYubmFtZSwgc2VsZi5saW5lKSA9PSBvdGhlcgogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwb3MpOgogICAgICAgIHJldHVybiAoc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIHNlbGYubmFtZSwgc2VsZi5saW5lKVtwb3NdCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBpdGVyKFtzZWxmLmZpbGVuYW1lLCBzZWxmLmxpbmVubywgc2VsZi5uYW1lLCBzZWxmLmxpbmVdKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIjxGcmFtZVN1bW1hcnkgZmlsZSB7ZmlsZW5hbWV9LCBsaW5lIHtsaW5lbm99IGluIHtuYW1lfT4iLmZvcm1hdCgKICAgICAgICAgICAgZmlsZW5hbWU9c2VsZi5maWxlbmFtZSwgbGluZW5vPXNlbGYubGluZW5vLCBuYW1lPXNlbGYubmFtZSkKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gNAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9vcmlnaW5hbF9saW5lKHNlbGYpOgogICAgICAgICMgUmV0dXJucyB0aGUgbGluZSBhcy1pcyBmcm9tIHRoZSBzb3VyY2UsIHdpdGhvdXQgbW9kaWZ5aW5nIHdoaXRlc3BhY2UuCiAgICAgICAgc2VsZi5saW5lCiAgICAgICAgcmV0dXJuIHNlbGYuX2xpbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBsaW5lKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2xpbmUgaXMgTm9uZToKICAgICAgICAgICAgaWYgc2VsZi5saW5lbm8gaXMgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgIHNlbGYuX2xpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShzZWxmLmZpbGVuYW1lLCBzZWxmLmxpbmVubykKICAgICAgICByZXR1cm4gc2VsZi5fbGluZS5zdHJpcCgpCgoKZGVmIHdhbGtfc3RhY2soZik6CiAgICAiIiJXYWxrIGEgc3RhY2sgeWllbGRpbmcgdGhlIGZyYW1lIGFuZCBsaW5lIG51bWJlciBmb3IgZWFjaCBmcmFtZS4KCiAgICBUaGlzIHdpbGwgZm9sbG93IGYuZl9iYWNrIGZyb20gdGhlIGdpdmVuIGZyYW1lLiBJZiBubyBmcmFtZSBpcyBnaXZlbiwgdGhlCiAgICBjdXJyZW50IHN0YWNrIGlzIHVzZWQuIFVzdWFsbHkgdXNlZCB3aXRoIFN0YWNrU3VtbWFyeS5leHRyYWN0LgogICAgIiIiCiAgICBpZiBmIGlzIE5vbmU6CiAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2suZl9iYWNrLmZfYmFjay5mX2JhY2sKICAgIHdoaWxlIGYgaXMgbm90IE5vbmU6CiAgICAgICAgeWllbGQgZiwgZi5mX2xpbmVubwogICAgICAgIGYgPSBmLmZfYmFjawoKCmRlZiB3YWxrX3RiKHRiKToKICAgICIiIldhbGsgYSB0cmFjZWJhY2sgeWllbGRpbmcgdGhlIGZyYW1lIGFuZCBsaW5lIG51bWJlciBmb3IgZWFjaCBmcmFtZS4KCiAgICBUaGlzIHdpbGwgZm9sbG93IHRiLnRiX25leHQgKGFuZCB0aHVzIGlzIGluIHRoZSBvcHBvc2l0ZSBvcmRlciB0bwogICAgd2Fsa19zdGFjaykuIFVzdWFsbHkgdXNlZCB3aXRoIFN0YWNrU3VtbWFyeS5leHRyYWN0LgogICAgIiIiCiAgICB3aGlsZSB0YiBpcyBub3QgTm9uZToKICAgICAgICB5aWVsZCB0Yi50Yl9mcmFtZSwgdGIudGJfbGluZW5vCiAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CgoKZGVmIF93YWxrX3RiX3dpdGhfZnVsbF9wb3NpdGlvbnModGIpOgogICAgIyBJbnRlcm5hbCB2ZXJzaW9uIG9mIHdhbGtfdGIgdGhhdCB5aWVsZHMgZnVsbCBjb2RlIHBvc2l0aW9ucyBpbmNsdWRpbmcKICAgICMgZW5kIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbi4KICAgIHdoaWxlIHRiIGlzIG5vdCBOb25lOgogICAgICAgIHBvc2l0aW9ucyA9IF9nZXRfY29kZV9wb3NpdGlvbih0Yi50Yl9mcmFtZS5mX2NvZGUsIHRiLnRiX2xhc3RpKQogICAgICAgICMgWWllbGQgdGJfbGluZW5vIHdoZW4gY29fcG9zaXRpb25zIGRvZXMgbm90IGhhdmUgYSBsaW5lIG51bWJlciB0bwogICAgICAgICMgbWFpbnRhaW4gYmVoYXZpb3Igd2l0aCB3YWxrX3RiLgogICAgICAgIGlmIHBvc2l0aW9uc1swXSBpcyBOb25lOgogICAgICAgICAgICB5aWVsZCB0Yi50Yl9mcmFtZSwgKHRiLnRiX2xpbmVubywgKSArIHBvc2l0aW9uc1sxOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICB5aWVsZCB0Yi50Yl9mcmFtZSwgcG9zaXRpb25zCiAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CgoKZGVmIF9nZXRfY29kZV9wb3NpdGlvbihjb2RlLCBpbnN0cnVjdGlvbl9pbmRleCk6CiAgICBpZiBpbnN0cnVjdGlvbl9pbmRleCA8IDA6CiAgICAgICAgcmV0dXJuIChOb25lLCBOb25lLCBOb25lLCBOb25lKQogICAgcG9zaXRpb25zX2dlbiA9IGNvZGUuY29fcG9zaXRpb25zKCkKICAgIHJldHVybiBuZXh0KGl0ZXJ0b29scy5pc2xpY2UocG9zaXRpb25zX2dlbiwgaW5zdHJ1Y3Rpb25faW5kZXggLy8gMiwgTm9uZSkpCgoKX1JFQ1VSU0lWRV9DVVRPRkYgPSAzICMgQWxzbyBoYXJkY29kZWQgaW4gdHJhY2ViYWNrLmMuCgpjbGFzcyBTdGFja1N1bW1hcnkobGlzdCk6CiAgICAiIiJBIGxpc3Qgb2YgRnJhbWVTdW1tYXJ5IG9iamVjdHMsIHJlcHJlc2VudGluZyBhIHN0YWNrIG9mIGZyYW1lcy4iIiIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBleHRyYWN0KGtsYXNzLCBmcmFtZV9nZW4sICosIGxpbWl0PU5vbmUsIGxvb2t1cF9saW5lcz1UcnVlLAogICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1GYWxzZSk6CiAgICAgICAgIiIiQ3JlYXRlIGEgU3RhY2tTdW1tYXJ5IGZyb20gYSB0cmFjZWJhY2sgb3Igc3RhY2sgb2JqZWN0LgoKICAgICAgICA6cGFyYW0gZnJhbWVfZ2VuOiBBIGdlbmVyYXRvciB0aGF0IHlpZWxkcyAoZnJhbWUsIGxpbmVubykgdHVwbGVzCiAgICAgICAgICAgIHdob3NlIHN1bW1hcmllcyBhcmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHN0YWNrLgogICAgICAgIDpwYXJhbSBsaW1pdDogTm9uZSB0byBpbmNsdWRlIGFsbCBmcmFtZXMgb3IgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8KICAgICAgICAgICAgaW5jbHVkZS4KICAgICAgICA6cGFyYW0gbG9va3VwX2xpbmVzOiBJZiBUcnVlLCBsb29rdXAgbGluZXMgZm9yIGVhY2ggZnJhbWUgaW1tZWRpYXRlbHksCiAgICAgICAgICAgIG90aGVyd2lzZSBsb29rdXAgaXMgZGVmZXJyZWQgdW50aWwgdGhlIGZyYW1lIGlzIHJlbmRlcmVkLgogICAgICAgIDpwYXJhbSBjYXB0dXJlX2xvY2FsczogSWYgVHJ1ZSwgdGhlIGxvY2FsIHZhcmlhYmxlcyBmcm9tIGVhY2ggZnJhbWUgd2lsbAogICAgICAgICAgICBiZSBjYXB0dXJlZCBhcyBvYmplY3QgcmVwcmVzZW50YXRpb25zIGludG8gdGhlIEZyYW1lU3VtbWFyeS4KICAgICAgICAiIiIKICAgICAgICBkZWYgZXh0ZW5kZWRfZnJhbWVfZ2VuKCk6CiAgICAgICAgICAgIGZvciBmLCBsaW5lbm8gaW4gZnJhbWVfZ2VuOgogICAgICAgICAgICAgICAgeWllbGQgZiwgKGxpbmVubywgTm9uZSwgTm9uZSwgTm9uZSkKCiAgICAgICAgcmV0dXJuIGtsYXNzLl9leHRyYWN0X2Zyb21fZXh0ZW5kZWRfZnJhbWVfZ2VuKAogICAgICAgICAgICBleHRlbmRlZF9mcmFtZV9nZW4oKSwgbGltaXQ9bGltaXQsIGxvb2t1cF9saW5lcz1sb29rdXBfbGluZXMsCiAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPWNhcHR1cmVfbG9jYWxzKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9leHRyYWN0X2Zyb21fZXh0ZW5kZWRfZnJhbWVfZ2VuKGtsYXNzLCBmcmFtZV9nZW4sICosIGxpbWl0PU5vbmUsCiAgICAgICAgICAgIGxvb2t1cF9saW5lcz1UcnVlLCBjYXB0dXJlX2xvY2Fscz1GYWxzZSk6CiAgICAgICAgIyBTYW1lIGFzIGV4dHJhY3QgYnV0IG9wZXJhdGVzIG9uIGEgZnJhbWUgZ2VuZXJhdG9yIHRoYXQgeWllbGRzCiAgICAgICAgIyAoZnJhbWUsIChsaW5lbm8sIGVuZF9saW5lbm8sIGNvbG5vLCBlbmRfY29sbm8pKSBpbiB0aGUgc3RhY2suCiAgICAgICAgIyBPbmx5IGxpbmVubyBpcyByZXF1aXJlZCwgdGhlIHJlbWFpbmluZyBmaWVsZHMgY2FuIGJlIE5vbmUgaWYgdGhlCiAgICAgICAgIyBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlLgogICAgICAgIGlmIGxpbWl0IGlzIE5vbmU6CiAgICAgICAgICAgIGxpbWl0ID0gZ2V0YXR0cihzeXMsICd0cmFjZWJhY2tsaW1pdCcsIE5vbmUpCiAgICAgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lIGFuZCBsaW1pdCA8IDA6CiAgICAgICAgICAgICAgICBsaW1pdCA9IDAKICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbGltaXQgPj0gMDoKICAgICAgICAgICAgICAgIGZyYW1lX2dlbiA9IGl0ZXJ0b29scy5pc2xpY2UoZnJhbWVfZ2VuLCBsaW1pdCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGZyYW1lX2dlbiA9IGNvbGxlY3Rpb25zLmRlcXVlKGZyYW1lX2dlbiwgbWF4bGVuPS1saW1pdCkKCiAgICAgICAgcmVzdWx0ID0ga2xhc3MoKQogICAgICAgIGZuYW1lcyA9IHNldCgpCiAgICAgICAgZm9yIGYsIChsaW5lbm8sIGVuZF9saW5lbm8sIGNvbG5vLCBlbmRfY29sbm8pIGluIGZyYW1lX2dlbjoKICAgICAgICAgICAgY28gPSBmLmZfY29kZQogICAgICAgICAgICBmaWxlbmFtZSA9IGNvLmNvX2ZpbGVuYW1lCiAgICAgICAgICAgIG5hbWUgPSBjby5jb19uYW1lCgogICAgICAgICAgICBmbmFtZXMuYWRkKGZpbGVuYW1lKQogICAgICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKGZpbGVuYW1lLCBmLmZfZ2xvYmFscykKICAgICAgICAgICAgIyBNdXN0IGRlZmVyIGxpbmUgbG9va3VwcyB1bnRpbCB3ZSBoYXZlIGNhbGxlZCBjaGVja2NhY2hlLgogICAgICAgICAgICBpZiBjYXB0dXJlX2xvY2FsczoKICAgICAgICAgICAgICAgIGZfbG9jYWxzID0gZi5mX2xvY2FscwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZl9sb2NhbHMgPSBOb25lCiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRnJhbWVTdW1tYXJ5KAogICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbG9va3VwX2xpbmU9RmFsc2UsIGxvY2Fscz1mX2xvY2FscywKICAgICAgICAgICAgICAgIGVuZF9saW5lbm89ZW5kX2xpbmVubywgY29sbm89Y29sbm8sIGVuZF9jb2xubz1lbmRfY29sbm8pKQogICAgICAgIGZvciBmaWxlbmFtZSBpbiBmbmFtZXM6CiAgICAgICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGVuYW1lKQogICAgICAgICMgSWYgaW1tZWRpYXRlIGxvb2t1cCB3YXMgZGVzaXJlZCwgdHJpZ2dlciBsb29rdXBzIG5vdy4KICAgICAgICBpZiBsb29rdXBfbGluZXM6CiAgICAgICAgICAgIGZvciBmIGluIHJlc3VsdDoKICAgICAgICAgICAgICAgIGYubGluZQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tX2xpc3Qoa2xhc3MsIGFfbGlzdCk6CiAgICAgICAgIiIiCiAgICAgICAgQ3JlYXRlIGEgU3RhY2tTdW1tYXJ5IG9iamVjdCBmcm9tIGEgc3VwcGxpZWQgbGlzdCBvZgogICAgICAgIEZyYW1lU3VtbWFyeSBvYmplY3RzIG9yIG9sZC1zdHlsZSBsaXN0IG9mIHR1cGxlcy4KICAgICAgICAiIiIKICAgICAgICAjIFdoaWxlIGRvaW5nIGEgZmFzdC1wYXRoIGNoZWNrIGZvciBpc2luc3RhbmNlKGFfbGlzdCwgU3RhY2tTdW1tYXJ5KSBpcwogICAgICAgICMgYXBwZWFsaW5nLCBpZGxlbGliLnJ1bi5jbGVhbnVwX3RyYWNlYmFjayBhbmQgb3RoZXIgc2ltaWxhciBjb2RlIG1heQogICAgICAgICMgYnJlYWsgdGhpcyBieSBtYWtpbmcgYXJiaXRyYXJ5IGZyYW1lcyBwbGFpbiB0dXBsZXMsIHNvIHdlIG5lZWQgdG8KICAgICAgICAjIGNoZWNrIG9uIGEgZnJhbWUgYnkgZnJhbWUgYmFzaXMuCiAgICAgICAgcmVzdWx0ID0gU3RhY2tTdW1tYXJ5KCkKICAgICAgICBmb3IgZnJhbWUgaW4gYV9saXN0OgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZyYW1lLCBGcmFtZVN1bW1hcnkpOgogICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmcmFtZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgPSBmcmFtZQogICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGcmFtZVN1bW1hcnkoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZT1saW5lKSkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGZvcm1hdF9mcmFtZV9zdW1tYXJ5KHNlbGYsIGZyYW1lX3N1bW1hcnkpOgogICAgICAgICIiIkZvcm1hdCB0aGUgbGluZXMgZm9yIGEgc2luZ2xlIEZyYW1lU3VtbWFyeS4KCiAgICAgICAgUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgb25lIGZyYW1lIGludm9sdmVkIGluIHRoZSBzdGFjay4gVGhpcwogICAgICAgIGdldHMgY2FsbGVkIGZvciBldmVyeSBmcmFtZSB0byBiZSBwcmludGVkIGluIHRoZSBzdGFjayBzdW1tYXJ5LgogICAgICAgICIiIgogICAgICAgIHJvdyA9IFtdCiAgICAgICAgcm93LmFwcGVuZCgnICBGaWxlICJ7fSIsIGxpbmUge30sIGluIHt9XG4nLmZvcm1hdCgKICAgICAgICAgICAgZnJhbWVfc3VtbWFyeS5maWxlbmFtZSwgZnJhbWVfc3VtbWFyeS5saW5lbm8sIGZyYW1lX3N1bW1hcnkubmFtZSkpCiAgICAgICAgaWYgZnJhbWVfc3VtbWFyeS5saW5lOgogICAgICAgICAgICBzdHJpcHBlZF9saW5lID0gZnJhbWVfc3VtbWFyeS5saW5lLnN0cmlwKCkKICAgICAgICAgICAgcm93LmFwcGVuZCgnICAgIHt9XG4nLmZvcm1hdChzdHJpcHBlZF9saW5lKSkKCiAgICAgICAgICAgIG9yaWdfbGluZV9sZW4gPSBsZW4oZnJhbWVfc3VtbWFyeS5fb3JpZ2luYWxfbGluZSkKICAgICAgICAgICAgZnJhbWVfbGluZV9sZW4gPSBsZW4oZnJhbWVfc3VtbWFyeS5saW5lLmxzdHJpcCgpKQogICAgICAgICAgICBzdHJpcHBlZF9jaGFyYWN0ZXJzID0gb3JpZ19saW5lX2xlbiAtIGZyYW1lX2xpbmVfbGVuCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIGZyYW1lX3N1bW1hcnkuY29sbm8gaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgIGFuZCBmcmFtZV9zdW1tYXJ5LmVuZF9jb2xubyBpcyBub3QgTm9uZQogICAgICAgICAgICApOgogICAgICAgICAgICAgICAgc3RhcnRfb2Zmc2V0ID0gX2J5dGVfb2Zmc2V0X3RvX2NoYXJhY3Rlcl9vZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgZnJhbWVfc3VtbWFyeS5fb3JpZ2luYWxfbGluZSwgZnJhbWVfc3VtbWFyeS5jb2xubykgKyAxCiAgICAgICAgICAgICAgICBlbmRfb2Zmc2V0ID0gX2J5dGVfb2Zmc2V0X3RvX2NoYXJhY3Rlcl9vZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgZnJhbWVfc3VtbWFyeS5fb3JpZ2luYWxfbGluZSwgZnJhbWVfc3VtbWFyeS5lbmRfY29sbm8pICsgMQoKICAgICAgICAgICAgICAgIGFuY2hvcnMgPSBOb25lCiAgICAgICAgICAgICAgICBpZiBmcmFtZV9zdW1tYXJ5LmxpbmVubyA9PSBmcmFtZV9zdW1tYXJ5LmVuZF9saW5lbm86CiAgICAgICAgICAgICAgICAgICAgd2l0aCBzdXBwcmVzcyhFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzID0gX2V4dHJhY3RfY2FyZXRfYW5jaG9yc19mcm9tX2xpbmVfc2VnbWVudCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3N1bW1hcnkuX29yaWdpbmFsX2xpbmVbc3RhcnRfb2Zmc2V0IC0gMTplbmRfb2Zmc2V0IC0gMV0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBlbmRfb2Zmc2V0ID0gc3RyaXBwZWRfY2hhcmFjdGVycyArIGxlbihzdHJpcHBlZF9saW5lKQoKICAgICAgICAgICAgICAgICMgc2hvdyBpbmRpY2F0b3JzIGlmIHByaW1hcnkgY2hhciBkb2Vzbid0IHNwYW4gdGhlIGZyYW1lIGxpbmUKICAgICAgICAgICAgICAgIGlmIGVuZF9vZmZzZXQgLSBzdGFydF9vZmZzZXQgPCBsZW4oc3RyaXBwZWRfbGluZSkgb3IgKAogICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzIGFuZCBhbmNob3JzLnJpZ2h0X3N0YXJ0X29mZnNldCAtIGFuY2hvcnMubGVmdF9lbmRfb2Zmc2V0ID4gMCk6CiAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnICAgICcpCiAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnICcgKiAoc3RhcnRfb2Zmc2V0IC0gc3RyaXBwZWRfY2hhcmFjdGVycykpCgogICAgICAgICAgICAgICAgICAgIGlmIGFuY2hvcnM6CiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoYW5jaG9ycy5wcmltYXJ5X2NoYXIgKiAoYW5jaG9ycy5sZWZ0X2VuZF9vZmZzZXQpKQogICAgICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kKGFuY2hvcnMuc2Vjb25kYXJ5X2NoYXIgKiAoYW5jaG9ycy5yaWdodF9zdGFydF9vZmZzZXQgLSBhbmNob3JzLmxlZnRfZW5kX29mZnNldCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoYW5jaG9ycy5wcmltYXJ5X2NoYXIgKiAoZW5kX29mZnNldCAtIHN0YXJ0X29mZnNldCAtIGFuY2hvcnMucmlnaHRfc3RhcnRfb2Zmc2V0KSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCdeJyAqIChlbmRfb2Zmc2V0IC0gc3RhcnRfb2Zmc2V0KSkKCiAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnXG4nKQoKICAgICAgICBpZiBmcmFtZV9zdW1tYXJ5LmxvY2FsczoKICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNvcnRlZChmcmFtZV9zdW1tYXJ5LmxvY2Fscy5pdGVtcygpKToKICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7bmFtZX0gPSB7dmFsdWV9XG4nLmZvcm1hdChuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKCiAgICAgICAgcmV0dXJuICcnLmpvaW4ocm93KQoKICAgIGRlZiBmb3JtYXQoc2VsZik6CiAgICAgICAgIiIiRm9ybWF0IHRoZSBzdGFjayByZWFkeSBmb3IgcHJpbnRpbmcuCgogICAgICAgIFJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgcmVhZHkgZm9yIHByaW50aW5nLiAgRWFjaCBzdHJpbmcgaW4gdGhlCiAgICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCiAgICAgICAgRWFjaCBzdHJpbmcgZW5kcyBpbiBhIG5ld2xpbmU7IHRoZSBzdHJpbmdzIG1heSBjb250YWluIGludGVybmFsCiAgICAgICAgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zIHdpdGggc291cmNlIHRleHQgbGluZXMuCgogICAgICAgIEZvciBsb25nIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBmcmFtZSBhbmQgbGluZSwgdGhlIGZpcnN0IGZldwogICAgICAgIHJlcGV0aXRpb25zIGFyZSBzaG93biwgZm9sbG93ZWQgYnkgYSBzdW1tYXJ5IGxpbmUgc3RhdGluZyB0aGUgZXhhY3QKICAgICAgICBudW1iZXIgb2YgZnVydGhlciByZXBldGl0aW9ucy4KICAgICAgICAiIiIKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIGxhc3RfZmlsZSA9IE5vbmUKICAgICAgICBsYXN0X2xpbmUgPSBOb25lCiAgICAgICAgbGFzdF9uYW1lID0gTm9uZQogICAgICAgIGNvdW50ID0gMAogICAgICAgIGZvciBmcmFtZV9zdW1tYXJ5IGluIHNlbGY6CiAgICAgICAgICAgIGZvcm1hdHRlZF9mcmFtZSA9IHNlbGYuZm9ybWF0X2ZyYW1lX3N1bW1hcnkoZnJhbWVfc3VtbWFyeSkKICAgICAgICAgICAgaWYgZm9ybWF0dGVkX2ZyYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiAobGFzdF9maWxlIGlzIE5vbmUgb3IgbGFzdF9maWxlICE9IGZyYW1lX3N1bW1hcnkuZmlsZW5hbWUgb3IKICAgICAgICAgICAgICAgIGxhc3RfbGluZSBpcyBOb25lIG9yIGxhc3RfbGluZSAhPSBmcmFtZV9zdW1tYXJ5LmxpbmVubyBvcgogICAgICAgICAgICAgICAgbGFzdF9uYW1lIGlzIE5vbmUgb3IgbGFzdF9uYW1lICE9IGZyYW1lX3N1bW1hcnkubmFtZSk6CiAgICAgICAgICAgICAgICBpZiBjb3VudCA+IF9SRUNVUlNJVkVfQ1VUT0ZGOgogICAgICAgICAgICAgICAgICAgIGNvdW50IC09IF9SRUNVUlNJVkVfQ1VUT0ZGCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgZicgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudH0gbW9yZSAnCiAgICAgICAgICAgICAgICAgICAgICAgIGYndGltZXsicyIgaWYgY291bnQgPiAxIGVsc2UgIiJ9XVxuJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIGxhc3RfZmlsZSA9IGZyYW1lX3N1bW1hcnkuZmlsZW5hbWUKICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IGZyYW1lX3N1bW1hcnkubGluZW5vCiAgICAgICAgICAgICAgICBsYXN0X25hbWUgPSBmcmFtZV9zdW1tYXJ5Lm5hbWUKICAgICAgICAgICAgICAgIGNvdW50ID0gMAogICAgICAgICAgICBjb3VudCArPSAxCiAgICAgICAgICAgIGlmIGNvdW50ID4gX1JFQ1VSU0lWRV9DVVRPRkY6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICByZXN1bHQuYXBwZW5kKGZvcm1hdHRlZF9mcmFtZSkKCiAgICAgICAgaWYgY291bnQgPiBfUkVDVVJTSVZFX0NVVE9GRjoKICAgICAgICAgICAgY291bnQgLT0gX1JFQ1VSU0lWRV9DVVRPRkYKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgKICAgICAgICAgICAgICAgIGYnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgJwogICAgICAgICAgICAgICAgZid0aW1leyJzIiBpZiBjb3VudCA+IDEgZWxzZSAiIn1dXG4nCiAgICAgICAgICAgICkKICAgICAgICByZXR1cm4gcmVzdWx0CgoKZGVmIF9ieXRlX29mZnNldF90b19jaGFyYWN0ZXJfb2Zmc2V0KHN0ciwgb2Zmc2V0KToKICAgIGFzX3V0ZjggPSBzdHIuZW5jb2RlKCd1dGYtOCcpCiAgICByZXR1cm4gbGVuKGFzX3V0ZjhbOm9mZnNldF0uZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0icmVwbGFjZSIpKQoKCl9BbmNob3JzID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgKICAgICJfQW5jaG9ycyIsCiAgICBbCiAgICAgICAgImxlZnRfZW5kX29mZnNldCIsCiAgICAgICAgInJpZ2h0X3N0YXJ0X29mZnNldCIsCiAgICAgICAgInByaW1hcnlfY2hhciIsCiAgICAgICAgInNlY29uZGFyeV9jaGFyIiwKICAgIF0sCiAgICBkZWZhdWx0cz1bIn4iLCAiXiJdCikKCmRlZiBfZXh0cmFjdF9jYXJldF9hbmNob3JzX2Zyb21fbGluZV9zZWdtZW50KHNlZ21lbnQpOgogICAgaW1wb3J0IGFzdAoKICAgIHRyeToKICAgICAgICB0cmVlID0gYXN0LnBhcnNlKHNlZ21lbnQpCiAgICBleGNlcHQgU3ludGF4RXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBpZiBsZW4odHJlZS5ib2R5KSAhPSAxOgogICAgICAgIHJldHVybiBOb25lCgogICAgbm9ybWFsaXplID0gbGFtYmRhIG9mZnNldDogX2J5dGVfb2Zmc2V0X3RvX2NoYXJhY3Rlcl9vZmZzZXQoc2VnbWVudCwgb2Zmc2V0KQogICAgc3RhdGVtZW50ID0gdHJlZS5ib2R5WzBdCiAgICBtYXRjaCBzdGF0ZW1lbnQ6CiAgICAgICAgY2FzZSBhc3QuRXhwcihleHByKToKICAgICAgICAgICAgbWF0Y2ggZXhwcjoKICAgICAgICAgICAgICAgIGNhc2UgYXN0LkJpbk9wKCk6CiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Jfc3RhcnQgPSBub3JtYWxpemUoZXhwci5sZWZ0LmVuZF9jb2xfb2Zmc2V0KQogICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yX2VuZCA9IG5vcm1hbGl6ZShleHByLnJpZ2h0LmNvbF9vZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Jfc3RyID0gc2VnbWVudFtvcGVyYXRvcl9zdGFydDpvcGVyYXRvcl9lbmRdCiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Jfb2Zmc2V0ID0gbGVuKG9wZXJhdG9yX3N0cikgLSBsZW4ob3BlcmF0b3Jfc3RyLmxzdHJpcCgpKQoKICAgICAgICAgICAgICAgICAgICBsZWZ0X2FuY2hvciA9IGV4cHIubGVmdC5lbmRfY29sX29mZnNldCArIG9wZXJhdG9yX29mZnNldAogICAgICAgICAgICAgICAgICAgIHJpZ2h0X2FuY2hvciA9IGxlZnRfYW5jaG9yICsgMQogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Jfb2Zmc2V0ICsgMSA8IGxlbihvcGVyYXRvcl9zdHIpCiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3Qgb3BlcmF0b3Jfc3RyW29wZXJhdG9yX29mZnNldCArIDFdLmlzc3BhY2UoKQogICAgICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2FuY2hvciArPSAxCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9BbmNob3JzKG5vcm1hbGl6ZShsZWZ0X2FuY2hvciksIG5vcm1hbGl6ZShyaWdodF9hbmNob3IpKQogICAgICAgICAgICAgICAgY2FzZSBhc3QuU3Vic2NyaXB0KCk6CiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0X3N0YXJ0ID0gbm9ybWFsaXplKGV4cHIudmFsdWUuZW5kX2NvbF9vZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0X2VuZCA9IG5vcm1hbGl6ZShleHByLnNsaWNlLmVuZF9jb2xfb2Zmc2V0ICsgMSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gX0FuY2hvcnMoc3Vic2NyaXB0X3N0YXJ0LCBzdWJzY3JpcHRfZW5kKQoKICAgIHJldHVybiBOb25lCgoKY2xhc3MgX0V4Y2VwdGlvblByaW50Q29udGV4dDoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLnNlZW4gPSBzZXQoKQogICAgICAgIHNlbGYuZXhjZXB0aW9uX2dyb3VwX2RlcHRoID0gMAogICAgICAgIHNlbGYubmVlZF9jbG9zZSA9IEZhbHNlCgogICAgZGVmIGluZGVudChzZWxmKToKICAgICAgICByZXR1cm4gJyAnICogKDIgKiBzZWxmLmV4Y2VwdGlvbl9ncm91cF9kZXB0aCkKCiAgICBkZWYgZW1pdChzZWxmLCB0ZXh0X2dlbiwgbWFyZ2luX2NoYXI9Tm9uZSk6CiAgICAgICAgaWYgbWFyZ2luX2NoYXIgaXMgTm9uZToKICAgICAgICAgICAgbWFyZ2luX2NoYXIgPSAnfCcKICAgICAgICBpbmRlbnRfc3RyID0gc2VsZi5pbmRlbnQoKQogICAgICAgIGlmIHNlbGYuZXhjZXB0aW9uX2dyb3VwX2RlcHRoOgogICAgICAgICAgICBpbmRlbnRfc3RyICs9IG1hcmdpbl9jaGFyICsgJyAnCgogICAgICAgIGlmIGlzaW5zdGFuY2UodGV4dF9nZW4sIHN0cik6CiAgICAgICAgICAgIHlpZWxkIHRleHR3cmFwLmluZGVudCh0ZXh0X2dlbiwgaW5kZW50X3N0ciwgbGFtYmRhIGxpbmU6IFRydWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZm9yIHRleHQgaW4gdGV4dF9nZW46CiAgICAgICAgICAgICAgICB5aWVsZCB0ZXh0d3JhcC5pbmRlbnQodGV4dCwgaW5kZW50X3N0ciwgbGFtYmRhIGxpbmU6IFRydWUpCgoKY2xhc3MgVHJhY2ViYWNrRXhjZXB0aW9uOgogICAgIiIiQW4gZXhjZXB0aW9uIHJlYWR5IGZvciByZW5kZXJpbmcuCgogICAgVGhlIHRyYWNlYmFjayBtb2R1bGUgY2FwdHVyZXMgZW5vdWdoIGF0dHJpYnV0ZXMgZnJvbSB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uCiAgICB0byB0aGlzIGludGVybWVkaWFyeSBmb3JtIHRvIGVuc3VyZSB0aGF0IG5vIHJlZmVyZW5jZXMgYXJlIGhlbGQsIHdoaWxlCiAgICBzdGlsbCBiZWluZyBhYmxlIHRvIGZ1bGx5IHByaW50IG9yIGZvcm1hdCBpdC4KCiAgICBtYXhfZ3JvdXBfd2lkdGggYW5kIG1heF9ncm91cF9kZXB0aCBjb250cm9sIHRoZSBmb3JtYXR0aW5nIG9mIGV4Y2VwdGlvbgogICAgZ3JvdXBzLiBUaGUgZGVwdGggcmVmZXJzIHRvIHRoZSBuZXN0aW5nIGxldmVsIG9mIHRoZSBncm91cCwgYW5kIHRoZSB3aWR0aAogICAgcmVmZXJzIHRvIHRoZSBzaXplIG9mIGEgc2luZ2xlIGV4Y2VwdGlvbiBncm91cCdzIGV4Y2VwdGlvbnMgYXJyYXkuIFRoZQogICAgZm9ybWF0dGVkIG91dHB1dCBpcyB0cnVuY2F0ZWQgd2hlbiBlaXRoZXIgbGltaXQgaXMgZXhjZWVkZWQuCgogICAgVXNlIGBmcm9tX2V4Y2VwdGlvbmAgdG8gY3JlYXRlIFRyYWNlYmFja0V4Y2VwdGlvbiBpbnN0YW5jZXMgZnJvbSBleGNlcHRpb24KICAgIG9iamVjdHMsIG9yIHRoZSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgVHJhY2ViYWNrRXhjZXB0aW9uIGluc3RhbmNlcyBmcm9tCiAgICBpbmRpdmlkdWFsIGNvbXBvbmVudHMuCgogICAgLSA6YXR0cjpgX19jYXVzZV9fYCBBIFRyYWNlYmFja0V4Y2VwdGlvbiBvZiB0aGUgb3JpZ2luYWwgKl9fY2F1c2VfXyouCiAgICAtIDphdHRyOmBfX2NvbnRleHRfX2AgQSBUcmFjZWJhY2tFeGNlcHRpb24gb2YgdGhlIG9yaWdpbmFsICpfX2NvbnRleHRfXyouCiAgICAtIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgVGhlICpfX3N1cHByZXNzX2NvbnRleHRfXyogdmFsdWUgZnJvbSB0aGUKICAgICAgb3JpZ2luYWwgZXhjZXB0aW9uLgogICAgLSA6YXR0cjpgc3RhY2tgIEEgYFN0YWNrU3VtbWFyeWAgcmVwcmVzZW50aW5nIHRoZSB0cmFjZWJhY2suCiAgICAtIDphdHRyOmBleGNfdHlwZWAgVGhlIGNsYXNzIG9mIHRoZSBvcmlnaW5hbCB0cmFjZWJhY2suCiAgICAtIDphdHRyOmBmaWxlbmFtZWAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgZmlsZW5hbWUgd2hlcmUgdGhlIGVycm9yCiAgICAgIG9jY3VycmVkLgogICAgLSA6YXR0cjpgbGluZW5vYCBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBsaW5lbnVtYmVyIHdoZXJlIHRoZSBlcnJvcgogICAgICBvY2N1cnJlZC4KICAgIC0gOmF0dHI6YGVuZF9saW5lbm9gIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGVuZCBsaW5lbnVtYmVyIHdoZXJlIHRoZSBlcnJvcgogICAgICBvY2N1cnJlZC4gQ2FuIGJlIGBOb25lYCBpZiBub3QgcHJlc2VudC4KICAgIC0gOmF0dHI6YHRleHRgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIHRleHQgd2hlcmUgdGhlIGVycm9yCiAgICAgIG9jY3VycmVkLgogICAgLSA6YXR0cjpgb2Zmc2V0YCBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBvZmZzZXQgaW50byB0aGUgdGV4dCB3aGVyZSB0aGUKICAgICAgZXJyb3Igb2NjdXJyZWQuCiAgICAtIDphdHRyOmBlbmRfb2Zmc2V0YCBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBvZmZzZXQgaW50byB0aGUgdGV4dCB3aGVyZSB0aGUKICAgICAgZXJyb3Igb2NjdXJyZWQuIENhbiBiZSBgTm9uZWAgaWYgbm90IHByZXNlbnQuCiAgICAtIDphdHRyOmBtc2dgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjaywgKiwgbGltaXQ9Tm9uZSwKICAgICAgICAgICAgbG9va3VwX2xpbmVzPVRydWUsIGNhcHR1cmVfbG9jYWxzPUZhbHNlLCBjb21wYWN0PUZhbHNlLAogICAgICAgICAgICBtYXhfZ3JvdXBfd2lkdGg9MTUsIG1heF9ncm91cF9kZXB0aD0xMCwgX3NlZW49Tm9uZSk6CiAgICAgICAgIyBOQjogd2UgbmVlZCB0byBhY2NlcHQgZXhjX3RyYWNlYmFjaywgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrIHRvCiAgICAgICAgIyBwZXJtaXQgYmFja3dhcmRzIGNvbXBhdCB3aXRoIHRoZSBleGlzdGluZyBBUEksIG90aGVyd2lzZSB3ZQogICAgICAgICMgbmVlZCBzdHViIHRodW5rIG9iamVjdHMganVzdCB0byBnbHVlIGl0IHRvZ2V0aGVyLgogICAgICAgICMgSGFuZGxlIGxvb3BzIGluIF9fY2F1c2VfXyBvciBfX2NvbnRleHRfXy4KICAgICAgICBpc19yZWN1cnNpdmVfY2FsbCA9IF9zZWVuIGlzIG5vdCBOb25lCiAgICAgICAgaWYgX3NlZW4gaXMgTm9uZToKICAgICAgICAgICAgX3NlZW4gPSBzZXQoKQogICAgICAgIF9zZWVuLmFkZChpZChleGNfdmFsdWUpKQoKICAgICAgICBzZWxmLm1heF9ncm91cF93aWR0aCA9IG1heF9ncm91cF93aWR0aAogICAgICAgIHNlbGYubWF4X2dyb3VwX2RlcHRoID0gbWF4X2dyb3VwX2RlcHRoCgogICAgICAgIHNlbGYuc3RhY2sgPSBTdGFja1N1bW1hcnkuX2V4dHJhY3RfZnJvbV9leHRlbmRlZF9mcmFtZV9nZW4oCiAgICAgICAgICAgIF93YWxrX3RiX3dpdGhfZnVsbF9wb3NpdGlvbnMoZXhjX3RyYWNlYmFjayksCiAgICAgICAgICAgIGxpbWl0PWxpbWl0LCBsb29rdXBfbGluZXM9bG9va3VwX2xpbmVzLAogICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1jYXB0dXJlX2xvY2FscykKICAgICAgICBzZWxmLmV4Y190eXBlID0gZXhjX3R5cGUKICAgICAgICAjIENhcHR1cmUgbm93IHRvIHBlcm1pdCBmcmVlaW5nIHJlc291cmNlczogb25seSBjb21wbGljYXRpb24gaXMgaW4gdGhlCiAgICAgICAgIyB1bm9mZmljaWFsIEFQSSBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lCiAgICAgICAgc2VsZi5fc3RyID0gX3NhZmVfc3RyaW5nKGV4Y192YWx1ZSwgJ2V4Y2VwdGlvbicpCiAgICAgICAgc2VsZi5fX25vdGVzX18gPSBnZXRhdHRyKGV4Y192YWx1ZSwgJ19fbm90ZXNfXycsIE5vbmUpCgogICAgICAgIGlmIGV4Y190eXBlIGFuZCBpc3N1YmNsYXNzKGV4Y190eXBlLCBTeW50YXhFcnJvcik6CiAgICAgICAgICAgICMgSGFuZGxlIFN5bnRheEVycm9yJ3Mgc3BlY2lhbGx5CiAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBleGNfdmFsdWUuZmlsZW5hbWUKICAgICAgICAgICAgbG5vID0gZXhjX3ZhbHVlLmxpbmVubwogICAgICAgICAgICBzZWxmLmxpbmVubyA9IHN0cihsbm8pIGlmIGxubyBpcyBub3QgTm9uZSBlbHNlIE5vbmUKICAgICAgICAgICAgZW5kX2xubyA9IGV4Y192YWx1ZS5lbmRfbGluZW5vCiAgICAgICAgICAgIHNlbGYuZW5kX2xpbmVubyA9IHN0cihlbmRfbG5vKSBpZiBlbmRfbG5vIGlzIG5vdCBOb25lIGVsc2UgTm9uZQogICAgICAgICAgICBzZWxmLnRleHQgPSBleGNfdmFsdWUudGV4dAogICAgICAgICAgICBzZWxmLm9mZnNldCA9IGV4Y192YWx1ZS5vZmZzZXQKICAgICAgICAgICAgc2VsZi5lbmRfb2Zmc2V0ID0gZXhjX3ZhbHVlLmVuZF9vZmZzZXQKICAgICAgICAgICAgc2VsZi5tc2cgPSBleGNfdmFsdWUubXNnCiAgICAgICAgaWYgbG9va3VwX2xpbmVzOgogICAgICAgICAgICBzZWxmLl9sb2FkX2xpbmVzKCkKICAgICAgICBzZWxmLl9fc3VwcHJlc3NfY29udGV4dF9fID0gXAogICAgICAgICAgICBleGNfdmFsdWUuX19zdXBwcmVzc19jb250ZXh0X18gaWYgZXhjX3ZhbHVlIGlzIG5vdCBOb25lIGVsc2UgRmFsc2UKCiAgICAgICAgIyBDb252ZXJ0IF9fY2F1c2VfXyBhbmQgX19jb250ZXh0X18gdG8gYFRyYWNlYmFja0V4Y2VwdGlvbnNgcywgdXNlIGEKICAgICAgICAjIHF1ZXVlIHRvIGF2b2lkIHJlY3Vyc2lvbiAob25seSB0aGUgdG9wLWxldmVsIGNhbGwgZ2V0cyBfc2VlbiA9PSBOb25lKQogICAgICAgIGlmIG5vdCBpc19yZWN1cnNpdmVfY2FsbDoKICAgICAgICAgICAgcXVldWUgPSBbKHNlbGYsIGV4Y192YWx1ZSldCiAgICAgICAgICAgIHdoaWxlIHF1ZXVlOgogICAgICAgICAgICAgICAgdGUsIGUgPSBxdWV1ZS5wb3AoKQogICAgICAgICAgICAgICAgaWYgKGUgYW5kIGUuX19jYXVzZV9fIGlzIG5vdCBOb25lCiAgICAgICAgICAgICAgICAgICAgYW5kIGlkKGUuX19jYXVzZV9fKSBub3QgaW4gX3NlZW4pOgogICAgICAgICAgICAgICAgICAgIGNhdXNlID0gVHJhY2ViYWNrRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlKGUuX19jYXVzZV9fKSwKICAgICAgICAgICAgICAgICAgICAgICAgZS5fX2NhdXNlX18sCiAgICAgICAgICAgICAgICAgICAgICAgIGUuX19jYXVzZV9fLl9fdHJhY2ViYWNrX18sCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAogICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBfbGluZXM9bG9va3VwX2xpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1jYXB0dXJlX2xvY2FscywKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dyb3VwX3dpZHRoPW1heF9ncm91cF93aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dyb3VwX2RlcHRoPW1heF9ncm91cF9kZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgX3NlZW49X3NlZW4pCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGNhdXNlID0gTm9uZQoKICAgICAgICAgICAgICAgIGlmIGNvbXBhY3Q6CiAgICAgICAgICAgICAgICAgICAgbmVlZF9jb250ZXh0ID0gKGNhdXNlIGlzIE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBlLl9fc3VwcHJlc3NfY29udGV4dF9fKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBuZWVkX2NvbnRleHQgPSBUcnVlCiAgICAgICAgICAgICAgICBpZiAoZSBhbmQgZS5fX2NvbnRleHRfXyBpcyBub3QgTm9uZQogICAgICAgICAgICAgICAgICAgIGFuZCBuZWVkX2NvbnRleHQgYW5kIGlkKGUuX19jb250ZXh0X18pIG5vdCBpbiBfc2Vlbik6CiAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IFRyYWNlYmFja0V4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZShlLl9fY29udGV4dF9fKSwKICAgICAgICAgICAgICAgICAgICAgICAgZS5fX2NvbnRleHRfXywKICAgICAgICAgICAgICAgICAgICAgICAgZS5fX2NvbnRleHRfXy5fX3RyYWNlYmFja19fLAogICAgICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwX2xpbmVzPWxvb2t1cF9saW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9sb2NhbHM9Y2FwdHVyZV9sb2NhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9ncm91cF93aWR0aD1tYXhfZ3JvdXBfd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9ncm91cF9kZXB0aD1tYXhfZ3JvdXBfZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWVuPV9zZWVuKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gTm9uZQoKICAgICAgICAgICAgICAgIGlmIGUgYW5kIGlzaW5zdGFuY2UoZSwgQmFzZUV4Y2VwdGlvbkdyb3VwKToKICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zID0gW10KICAgICAgICAgICAgICAgICAgICBmb3IgZXhjIGluIGUuZXhjZXB0aW9uczoKICAgICAgICAgICAgICAgICAgICAgICAgdGV4YyA9IFRyYWNlYmFja0V4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUoZXhjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Yy5fX3RyYWNlYmFja19fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBfbGluZXM9bG9va3VwX2xpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9sb2NhbHM9Y2FwdHVyZV9sb2NhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ3JvdXBfd2lkdGg9bWF4X2dyb3VwX3dpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dyb3VwX2RlcHRoPW1heF9ncm91cF9kZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWVuPV9zZWVuKQogICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmFwcGVuZCh0ZXhjKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zID0gTm9uZQoKICAgICAgICAgICAgICAgIHRlLl9fY2F1c2VfXyA9IGNhdXNlCiAgICAgICAgICAgICAgICB0ZS5fX2NvbnRleHRfXyA9IGNvbnRleHQKICAgICAgICAgICAgICAgIHRlLmV4Y2VwdGlvbnMgPSBleGNlcHRpb25zCiAgICAgICAgICAgICAgICBpZiBjYXVzZToKICAgICAgICAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoKHRlLl9fY2F1c2VfXywgZS5fX2NhdXNlX18pKQogICAgICAgICAgICAgICAgaWYgY29udGV4dDoKICAgICAgICAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoKHRlLl9fY29udGV4dF9fLCBlLl9fY29udGV4dF9fKSkKICAgICAgICAgICAgICAgIGlmIGV4Y2VwdGlvbnM6CiAgICAgICAgICAgICAgICAgICAgcXVldWUuZXh0ZW5kKHppcCh0ZS5leGNlcHRpb25zLCBlLmV4Y2VwdGlvbnMpKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGZyb21fZXhjZXB0aW9uKGNscywgZXhjLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIkNyZWF0ZSBhIFRyYWNlYmFja0V4Y2VwdGlvbiBmcm9tIGFuIGV4Y2VwdGlvbi4iIiIKICAgICAgICByZXR1cm4gY2xzKHR5cGUoZXhjKSwgZXhjLCBleGMuX190cmFjZWJhY2tfXywgKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiBfbG9hZF9saW5lcyhzZWxmKToKICAgICAgICAiIiJQcml2YXRlIEFQSS4gZm9yY2UgYWxsIGxpbmVzIGluIHRoZSBzdGFjayB0byBiZSBsb2FkZWQuIiIiCiAgICAgICAgZm9yIGZyYW1lIGluIHNlbGYuc3RhY2s6CiAgICAgICAgICAgIGZyYW1lLmxpbmUKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBUcmFjZWJhY2tFeGNlcHRpb24pOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXwogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9zdHIKCiAgICBkZWYgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHNlbGYpOgogICAgICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHBhcnQgb2YgdGhlIHRyYWNlYmFjay4KCiAgICAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIGdlbmVyYXRvciBvZiBzdHJpbmdzLCBlYWNoIGVuZGluZyBpbiBhIG5ld2xpbmUuCgogICAgICAgIE5vcm1hbGx5LCB0aGUgZ2VuZXJhdG9yIGVtaXRzIGEgc2luZ2xlIHN0cmluZzsgaG93ZXZlciwgZm9yCiAgICAgICAgU3ludGF4RXJyb3IgZXhjZXB0aW9ucywgaXQgZW1pdHMgc2V2ZXJhbCBsaW5lcyB0aGF0ICh3aGVuCiAgICAgICAgcHJpbnRlZCkgZGlzcGxheSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUgc3ludGF4CiAgICAgICAgZXJyb3Igb2NjdXJyZWQuCgogICAgICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAogICAgICAgIHN0cmluZyBpbiB0aGUgb3V0cHV0LgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuZXhjX3R5cGUgaXMgTm9uZToKICAgICAgICAgICAgeWllbGQgX2Zvcm1hdF9maW5hbF9leGNfbGluZShOb25lLCBzZWxmLl9zdHIpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBzdHlwZSA9IHNlbGYuZXhjX3R5cGUuX19xdWFsbmFtZV9fCiAgICAgICAgc21vZCA9IHNlbGYuZXhjX3R5cGUuX19tb2R1bGVfXwogICAgICAgIGlmIHNtb2Qgbm90IGluICgiX19tYWluX18iLCAiYnVpbHRpbnMiKToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc21vZCwgc3RyKToKICAgICAgICAgICAgICAgIHNtb2QgPSAiPHVua25vd24+IgogICAgICAgICAgICBzdHlwZSA9IHNtb2QgKyAnLicgKyBzdHlwZQoKICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhzZWxmLmV4Y190eXBlLCBTeW50YXhFcnJvcik6CiAgICAgICAgICAgIHlpZWxkIF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoc3R5cGUsIHNlbGYuX3N0cikKICAgICAgICBlbHNlOgogICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX2Zvcm1hdF9zeW50YXhfZXJyb3Ioc3R5cGUpCiAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLl9fbm90ZXNfXywgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlKToKICAgICAgICAgICAgZm9yIG5vdGUgaW4gc2VsZi5fX25vdGVzX186CiAgICAgICAgICAgICAgICBub3RlID0gX3NhZmVfc3RyaW5nKG5vdGUsICdub3RlJykKICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gW2wgKyAnXG4nIGZvciBsIGluIG5vdGUuc3BsaXQoJ1xuJyldCiAgICAgICAgZWxpZiBzZWxmLl9fbm90ZXNfXyBpcyBub3QgTm9uZToKICAgICAgICAgICAgeWllbGQgX3NhZmVfc3RyaW5nKHNlbGYuX19ub3Rlc19fLCAnX19ub3Rlc19fJywgZnVuYz1yZXByKQoKICAgIGRlZiBfZm9ybWF0X3N5bnRheF9lcnJvcihzZWxmLCBzdHlwZSk6CiAgICAgICAgIiIiRm9ybWF0IFN5bnRheEVycm9yIGV4Y2VwdGlvbnMgKGludGVybmFsIGhlbHBlcikuIiIiCiAgICAgICAgIyBTaG93IGV4YWN0bHkgd2hlcmUgdGhlIHByb2JsZW0gd2FzIGZvdW5kLgogICAgICAgIGZpbGVuYW1lX3N1ZmZpeCA9ICcnCiAgICAgICAgaWYgc2VsZi5saW5lbm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHlpZWxkICcgIEZpbGUgInt9IiwgbGluZSB7fVxuJy5mb3JtYXQoCiAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lIG9yICI8c3RyaW5nPiIsIHNlbGYubGluZW5vKQogICAgICAgIGVsaWYgc2VsZi5maWxlbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgZmlsZW5hbWVfc3VmZml4ID0gJyAoe30pJy5mb3JtYXQoc2VsZi5maWxlbmFtZSkKCiAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgIGlmIHRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgdGV4dCAgPSAiICAgZm9vXG4iCiAgICAgICAgICAgICMgcnRleHQgPSAiICAgZm9vIgogICAgICAgICAgICAjIGx0ZXh0ID0gICAgImZvbyIKICAgICAgICAgICAgcnRleHQgPSB0ZXh0LnJzdHJpcCgnXG4nKQogICAgICAgICAgICBsdGV4dCA9IHJ0ZXh0LmxzdHJpcCgnIFxuXGYnKQogICAgICAgICAgICBzcGFjZXMgPSBsZW4ocnRleHQpIC0gbGVuKGx0ZXh0KQogICAgICAgICAgICB5aWVsZCAnICAgIHt9XG4nLmZvcm1hdChsdGV4dCkKCiAgICAgICAgICAgIGlmIHNlbGYub2Zmc2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQKICAgICAgICAgICAgICAgIGVuZF9vZmZzZXQgPSBzZWxmLmVuZF9vZmZzZXQgaWYgc2VsZi5lbmRfb2Zmc2V0IG5vdCBpbiB7Tm9uZSwgMH0gZWxzZSBvZmZzZXQKICAgICAgICAgICAgICAgIGlmIG9mZnNldCA9PSBlbmRfb2Zmc2V0IG9yIGVuZF9vZmZzZXQgPT0gLTE6CiAgICAgICAgICAgICAgICAgICAgZW5kX29mZnNldCA9IG9mZnNldCArIDEKCiAgICAgICAgICAgICAgICAjIENvbnZlcnQgMS1iYXNlZCBjb2x1bW4gb2Zmc2V0IHRvIDAtYmFzZWQgaW5kZXggaW50byBzdHJpcHBlZCB0ZXh0CiAgICAgICAgICAgICAgICBjb2xubyA9IG9mZnNldCAtIDEgLSBzcGFjZXMKICAgICAgICAgICAgICAgIGVuZF9jb2xubyA9IGVuZF9vZmZzZXQgLSAxIC0gc3BhY2VzCiAgICAgICAgICAgICAgICBpZiBjb2xubyA+PSAwOgogICAgICAgICAgICAgICAgICAgICMgbm9uLXNwYWNlIHdoaXRlc3BhY2UgKGxpa2VzIHRhYnMpIG11c3QgYmUga2VwdCBmb3IgYWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgY2FyZXRzcGFjZSA9ICgoYyBpZiBjLmlzc3BhY2UoKSBlbHNlICcgJykgZm9yIGMgaW4gbHRleHRbOmNvbG5vXSkKICAgICAgICAgICAgICAgICAgICB5aWVsZCAnICAgIHt9e30nLmZvcm1hdCgiIi5qb2luKGNhcmV0c3BhY2UpLCAoJ14nICogKGVuZF9jb2xubyAtIGNvbG5vKSArICJcbiIpKQogICAgICAgIG1zZyA9IHNlbGYubXNnIG9yICI8bm8gZGV0YWlsIGF2YWlsYWJsZT4iCiAgICAgICAgeWllbGQgInt9OiB7fXt9XG4iLmZvcm1hdChzdHlwZSwgbXNnLCBmaWxlbmFtZV9zdWZmaXgpCgogICAgZGVmIGZvcm1hdChzZWxmLCAqLCBjaGFpbj1UcnVlLCBfY3R4PU5vbmUpOgogICAgICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uLgoKICAgICAgICBJZiBjaGFpbiBpcyBub3QgKlRydWUqLCAqX19jYXVzZV9fKiBhbmQgKl9fY29udGV4dF9fKiB3aWxsIG5vdCBiZSBmb3JtYXR0ZWQuCgogICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBnZW5lcmF0b3Igb2Ygc3RyaW5ncywgZWFjaCBlbmRpbmcgaW4gYSBuZXdsaW5lIGFuZAogICAgICAgIHNvbWUgY29udGFpbmluZyBpbnRlcm5hbCBuZXdsaW5lcy4gYHByaW50X2V4Y2VwdGlvbmAgaXMgYSB3cmFwcGVyIGFyb3VuZAogICAgICAgIHRoaXMgbWV0aG9kIHdoaWNoIGp1c3QgcHJpbnRzIHRoZSBsaW5lcyB0byBhIGZpbGUuCgogICAgICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAogICAgICAgIHN0cmluZyBpbiB0aGUgb3V0cHV0LgogICAgICAgICIiIgoKICAgICAgICBpZiBfY3R4IGlzIE5vbmU6CiAgICAgICAgICAgIF9jdHggPSBfRXhjZXB0aW9uUHJpbnRDb250ZXh0KCkKCiAgICAgICAgb3V0cHV0ID0gW10KICAgICAgICBleGMgPSBzZWxmCiAgICAgICAgaWYgY2hhaW46CiAgICAgICAgICAgIHdoaWxlIGV4YzoKICAgICAgICAgICAgICAgIGlmIGV4Yy5fX2NhdXNlX18gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgY2hhaW5lZF9tc2cgPSBfY2F1c2VfbWVzc2FnZQogICAgICAgICAgICAgICAgICAgIGNoYWluZWRfZXhjID0gZXhjLl9fY2F1c2VfXwogICAgICAgICAgICAgICAgZWxpZiAoZXhjLl9fY29udGV4dF9fICBpcyBub3QgTm9uZSBhbmQKICAgICAgICAgICAgICAgICAgICAgIG5vdCBleGMuX19zdXBwcmVzc19jb250ZXh0X18pOgogICAgICAgICAgICAgICAgICAgIGNoYWluZWRfbXNnID0gX2NvbnRleHRfbWVzc2FnZQogICAgICAgICAgICAgICAgICAgIGNoYWluZWRfZXhjID0gZXhjLl9fY29udGV4dF9fCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGNoYWluZWRfbXNnID0gTm9uZQogICAgICAgICAgICAgICAgICAgIGNoYWluZWRfZXhjID0gTm9uZQoKICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoKGNoYWluZWRfbXNnLCBleGMpKQogICAgICAgICAgICAgICAgZXhjID0gY2hhaW5lZF9leGMKICAgICAgICBlbHNlOgogICAgICAgICAgICBvdXRwdXQuYXBwZW5kKChOb25lLCBleGMpKQoKICAgICAgICBmb3IgbXNnLCBleGMgaW4gcmV2ZXJzZWQob3V0cHV0KToKICAgICAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfY3R4LmVtaXQobXNnKQogICAgICAgICAgICBpZiBleGMuZXhjZXB0aW9ucyBpcyBOb25lOgogICAgICAgICAgICAgICAgaWYgZXhjLnN0YWNrOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gX2N0eC5lbWl0KCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nKQogICAgICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gX2N0eC5lbWl0KGV4Yy5zdGFjay5mb3JtYXQoKSkKICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gX2N0eC5lbWl0KGV4Yy5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKSkKICAgICAgICAgICAgZWxpZiBfY3R4LmV4Y2VwdGlvbl9ncm91cF9kZXB0aCA+IHNlbGYubWF4X2dyb3VwX2RlcHRoOgogICAgICAgICAgICAgICAgIyBleGNlcHRpb24gZ3JvdXAsIGJ1dCBkZXB0aCBleGNlZWRzIGxpbWl0CiAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIF9jdHguZW1pdCgKICAgICAgICAgICAgICAgICAgICBmIi4uLiAobWF4X2dyb3VwX2RlcHRoIGlzIHtzZWxmLm1heF9ncm91cF9kZXB0aH0pXG4iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBmb3JtYXQgZXhjZXB0aW9uIGdyb3VwCiAgICAgICAgICAgICAgICBpc190b3BsZXZlbCA9IChfY3R4LmV4Y2VwdGlvbl9ncm91cF9kZXB0aCA9PSAwKQogICAgICAgICAgICAgICAgaWYgaXNfdG9wbGV2ZWw6CiAgICAgICAgICAgICAgICAgICAgX2N0eC5leGNlcHRpb25fZ3JvdXBfZGVwdGggKz0gMQoKICAgICAgICAgICAgICAgIGlmIGV4Yy5zdGFjazoKICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIF9jdHguZW1pdCgKICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBHcm91cCBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nLAogICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5fY2hhciA9ICcrJyBpZiBpc190b3BsZXZlbCBlbHNlIE5vbmUpCiAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfY3R4LmVtaXQoZXhjLnN0YWNrLmZvcm1hdCgpKQoKICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gX2N0eC5lbWl0KGV4Yy5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKSkKICAgICAgICAgICAgICAgIG51bV9leGNzID0gbGVuKGV4Yy5leGNlcHRpb25zKQogICAgICAgICAgICAgICAgaWYgbnVtX2V4Y3MgPD0gc2VsZi5tYXhfZ3JvdXBfd2lkdGg6CiAgICAgICAgICAgICAgICAgICAgbiA9IG51bV9leGNzCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG4gPSBzZWxmLm1heF9ncm91cF93aWR0aCArIDEKICAgICAgICAgICAgICAgIF9jdHgubmVlZF9jbG9zZSA9IEZhbHNlCiAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKICAgICAgICAgICAgICAgICAgICBsYXN0X2V4YyA9IChpID09IG4tMSkKICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2V4YzoKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgY2xvc2luZyBmcmFtZSBtYXkgYmUgYWRkZWQgYnkgYSByZWN1cnNpdmUgY2FsbAogICAgICAgICAgICAgICAgICAgICAgICBfY3R4Lm5lZWRfY2xvc2UgPSBUcnVlCgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYubWF4X2dyb3VwX3dpZHRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZWQgPSAoaSA+PSBzZWxmLm1heF9ncm91cF93aWR0aCkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZWQgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgIHRpdGxlID0gZid7aSsxfScgaWYgbm90IHRydW5jYXRlZCBlbHNlICcuLi4nCiAgICAgICAgICAgICAgICAgICAgeWllbGQgKF9jdHguaW5kZW50KCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAoJystJyBpZiBpPT0wIGVsc2UgJyAgJykgKwogICAgICAgICAgICAgICAgICAgICAgICAgICBmJystLS0tLS0tLS0tLS0tLS0tIHt0aXRsZX0gLS0tLS0tLS0tLS0tLS0tLVxuJykKICAgICAgICAgICAgICAgICAgICBfY3R4LmV4Y2VwdGlvbl9ncm91cF9kZXB0aCArPSAxCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHRydW5jYXRlZDoKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBleGMuZXhjZXB0aW9uc1tpXS5mb3JtYXQoY2hhaW49Y2hhaW4sIF9jdHg9X2N0eCkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBudW1fZXhjcyAtIHNlbGYubWF4X2dyb3VwX3dpZHRoCiAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbCA9ICdzJyBpZiByZW1haW5pbmcgPiAxIGVsc2UgJycKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfY3R4LmVtaXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmImFuZCB7cmVtYWluaW5nfSBtb3JlIGV4Y2VwdGlvbntwbHVyYWx9XG4iKQoKICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2V4YyBhbmQgX2N0eC5uZWVkX2Nsb3NlOgogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAoX2N0eC5pbmRlbnQoKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIikKICAgICAgICAgICAgICAgICAgICAgICAgX2N0eC5uZWVkX2Nsb3NlID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICBfY3R4LmV4Y2VwdGlvbl9ncm91cF9kZXB0aCAtPSAxCgogICAgICAgICAgICAgICAgaWYgaXNfdG9wbGV2ZWw6CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IF9jdHguZXhjZXB0aW9uX2dyb3VwX2RlcHRoID09IDEKICAgICAgICAgICAgICAgICAgICBfY3R4LmV4Y2VwdGlvbl9ncm91cF9kZXB0aCA9IDAKCgogICAgZGVmIHByaW50KHNlbGYsICosIGZpbGU9Tm9uZSwgY2hhaW49VHJ1ZSk6CiAgICAgICAgIiIiUHJpbnQgdGhlIHJlc3VsdCBvZiBzZWxmLmZvcm1hdChjaGFpbj1jaGFpbikgdG8gJ2ZpbGUnLiIiIgogICAgICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmZvcm1hdChjaGFpbj1jaGFpbik6CiAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZmlsZSwgZW5kPSIiKQpQSwMEFAAAAAAAAiCjVuj2nqV/RgAAf0YAAA4AAAB0cmFjZW1hbGxvYy5weWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZSwgSXRlcmFibGUKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHRvdGFsX29yZGVyaW5nCmltcG9ydCBmbm1hdGNoCmltcG9ydCBsaW5lY2FjaGUKaW1wb3J0IG9zLnBhdGgKaW1wb3J0IHBpY2tsZQoKIyBJbXBvcnQgdHlwZXMgYW5kIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDCmZyb20gX3RyYWNlbWFsbG9jIGltcG9ydCAqCmZyb20gX3RyYWNlbWFsbG9jIGltcG9ydCBfZ2V0X29iamVjdF90cmFjZWJhY2ssIF9nZXRfdHJhY2VzCgoKZGVmIF9mb3JtYXRfc2l6ZShzaXplLCBzaWduKToKICAgIGZvciB1bml0IGluICgnQicsICdLaUInLCAnTWlCJywgJ0dpQicsICdUaUInKToKICAgICAgICBpZiBhYnMoc2l6ZSkgPCAxMDAgYW5kIHVuaXQgIT0gJ0InOgogICAgICAgICAgICAjIDMgZGlnaXRzICh4eC54IFVOSVQpCiAgICAgICAgICAgIGlmIHNpZ246CiAgICAgICAgICAgICAgICByZXR1cm4gIiUrLjFmICVzIiAlIChzaXplLCB1bml0KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuICIlLjFmICVzIiAlIChzaXplLCB1bml0KQogICAgICAgIGlmIGFicyhzaXplKSA8IDEwICogMTAyNCBvciB1bml0ID09ICdUaUInOgogICAgICAgICAgICAjIDQgb3IgNSBkaWdpdHMgKHh4eHggVU5JVCkKICAgICAgICAgICAgaWYgc2lnbjoKICAgICAgICAgICAgICAgIHJldHVybiAiJSsuMGYgJXMiICUgKHNpemUsIHVuaXQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gIiUuMGYgJXMiICUgKHNpemUsIHVuaXQpCiAgICAgICAgc2l6ZSAvPSAxMDI0CgoKY2xhc3MgU3RhdGlzdGljOgogICAgIiIiCiAgICBTdGF0aXN0aWMgZGlmZmVyZW5jZSBvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYmV0d2VlbiB0d28gU25hcHNob3QgaW5zdGFuY2UuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoJ3RyYWNlYmFjaycsICdzaXplJywgJ2NvdW50JykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdHJhY2ViYWNrLCBzaXplLCBjb3VudCk6CiAgICAgICAgc2VsZi50cmFjZWJhY2sgPSB0cmFjZWJhY2sKICAgICAgICBzZWxmLnNpemUgPSBzaXplCiAgICAgICAgc2VsZi5jb3VudCA9IGNvdW50CgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHJldHVybiBoYXNoKChzZWxmLnRyYWNlYmFjaywgc2VsZi5zaXplLCBzZWxmLmNvdW50KSkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU3RhdGlzdGljKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIChzZWxmLnRyYWNlYmFjayA9PSBvdGhlci50cmFjZWJhY2sKICAgICAgICAgICAgICAgIGFuZCBzZWxmLnNpemUgPT0gb3RoZXIuc2l6ZQogICAgICAgICAgICAgICAgYW5kIHNlbGYuY291bnQgPT0gb3RoZXIuY291bnQpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgdGV4dCA9ICgiJXM6IHNpemU9JXMsIGNvdW50PSVpIgogICAgICAgICAgICAgICAgICUgKHNlbGYudHJhY2ViYWNrLAogICAgICAgICAgICAgICAgICAgIF9mb3JtYXRfc2l6ZShzZWxmLnNpemUsIEZhbHNlKSwKICAgICAgICAgICAgICAgICAgICBzZWxmLmNvdW50KSkKICAgICAgICBpZiBzZWxmLmNvdW50OgogICAgICAgICAgICBhdmVyYWdlID0gc2VsZi5zaXplIC8gc2VsZi5jb3VudAogICAgICAgICAgICB0ZXh0ICs9ICIsIGF2ZXJhZ2U9JXMiICUgX2Zvcm1hdF9zaXplKGF2ZXJhZ2UsIEZhbHNlKQogICAgICAgIHJldHVybiB0ZXh0CgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAoJzxTdGF0aXN0aWMgdHJhY2ViYWNrPSVyIHNpemU9JWkgY291bnQ9JWk+JwogICAgICAgICAgICAgICAgJSAoc2VsZi50cmFjZWJhY2ssIHNlbGYuc2l6ZSwgc2VsZi5jb3VudCkpCgogICAgZGVmIF9zb3J0X2tleShzZWxmKToKICAgICAgICByZXR1cm4gKHNlbGYuc2l6ZSwgc2VsZi5jb3VudCwgc2VsZi50cmFjZWJhY2spCgoKY2xhc3MgU3RhdGlzdGljRGlmZjoKICAgICIiIgogICAgU3RhdGlzdGljIGRpZmZlcmVuY2Ugb24gbWVtb3J5IGFsbG9jYXRpb25zIGJldHdlZW4gYW4gb2xkIGFuZCBhIG5ldwogICAgU25hcHNob3QgaW5zdGFuY2UuCiAgICAiIiIKICAgIF9fc2xvdHNfXyA9ICgndHJhY2ViYWNrJywgJ3NpemUnLCAnc2l6ZV9kaWZmJywgJ2NvdW50JywgJ2NvdW50X2RpZmYnKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFjZWJhY2ssIHNpemUsIHNpemVfZGlmZiwgY291bnQsIGNvdW50X2RpZmYpOgogICAgICAgIHNlbGYudHJhY2ViYWNrID0gdHJhY2ViYWNrCiAgICAgICAgc2VsZi5zaXplID0gc2l6ZQogICAgICAgIHNlbGYuc2l6ZV9kaWZmID0gc2l6ZV9kaWZmCiAgICAgICAgc2VsZi5jb3VudCA9IGNvdW50CiAgICAgICAgc2VsZi5jb3VudF9kaWZmID0gY291bnRfZGlmZgoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi50cmFjZWJhY2ssIHNlbGYuc2l6ZSwgc2VsZi5zaXplX2RpZmYsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY291bnQsIHNlbGYuY291bnRfZGlmZikpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFN0YXRpc3RpY0RpZmYpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKHNlbGYudHJhY2ViYWNrID09IG90aGVyLnRyYWNlYmFjawogICAgICAgICAgICAgICAgYW5kIHNlbGYuc2l6ZSA9PSBvdGhlci5zaXplCiAgICAgICAgICAgICAgICBhbmQgc2VsZi5zaXplX2RpZmYgPT0gb3RoZXIuc2l6ZV9kaWZmCiAgICAgICAgICAgICAgICBhbmQgc2VsZi5jb3VudCA9PSBvdGhlci5jb3VudAogICAgICAgICAgICAgICAgYW5kIHNlbGYuY291bnRfZGlmZiA9PSBvdGhlci5jb3VudF9kaWZmKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHRleHQgPSAoIiVzOiBzaXplPSVzICglcyksIGNvdW50PSVpICglK2kpIgogICAgICAgICAgICAgICAgJSAoc2VsZi50cmFjZWJhY2ssCiAgICAgICAgICAgICAgICAgICBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksCiAgICAgICAgICAgICAgICAgICBfZm9ybWF0X3NpemUoc2VsZi5zaXplX2RpZmYsIFRydWUpLAogICAgICAgICAgICAgICAgICAgc2VsZi5jb3VudCwKICAgICAgICAgICAgICAgICAgIHNlbGYuY291bnRfZGlmZikpCiAgICAgICAgaWYgc2VsZi5jb3VudDoKICAgICAgICAgICAgYXZlcmFnZSA9IHNlbGYuc2l6ZSAvIHNlbGYuY291bnQKICAgICAgICAgICAgdGV4dCArPSAiLCBhdmVyYWdlPSVzIiAlIF9mb3JtYXRfc2l6ZShhdmVyYWdlLCBGYWxzZSkKICAgICAgICByZXR1cm4gdGV4dAoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gKCc8U3RhdGlzdGljRGlmZiB0cmFjZWJhY2s9JXIgc2l6ZT0laSAoJStpKSBjb3VudD0laSAoJStpKT4nCiAgICAgICAgICAgICAgICAlIChzZWxmLnRyYWNlYmFjaywgc2VsZi5zaXplLCBzZWxmLnNpemVfZGlmZiwKICAgICAgICAgICAgICAgICAgIHNlbGYuY291bnQsIHNlbGYuY291bnRfZGlmZikpCgogICAgZGVmIF9zb3J0X2tleShzZWxmKToKICAgICAgICByZXR1cm4gKGFicyhzZWxmLnNpemVfZGlmZiksIHNlbGYuc2l6ZSwKICAgICAgICAgICAgICAgIGFicyhzZWxmLmNvdW50X2RpZmYpLCBzZWxmLmNvdW50LAogICAgICAgICAgICAgICAgc2VsZi50cmFjZWJhY2spCgoKZGVmIF9jb21wYXJlX2dyb3VwZWRfc3RhdHMob2xkX2dyb3VwLCBuZXdfZ3JvdXApOgogICAgc3RhdGlzdGljcyA9IFtdCiAgICBmb3IgdHJhY2ViYWNrLCBzdGF0IGluIG5ld19ncm91cC5pdGVtcygpOgogICAgICAgIHByZXZpb3VzID0gb2xkX2dyb3VwLnBvcCh0cmFjZWJhY2ssIE5vbmUpCiAgICAgICAgaWYgcHJldmlvdXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHN0YXQgPSBTdGF0aXN0aWNEaWZmKHRyYWNlYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5zaXplLCBzdGF0LnNpemUgLSBwcmV2aW91cy5zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LmNvdW50LCBzdGF0LmNvdW50IC0gcHJldmlvdXMuY291bnQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3RhdCA9IFN0YXRpc3RpY0RpZmYodHJhY2ViYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LnNpemUsIHN0YXQuc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5jb3VudCwgc3RhdC5jb3VudCkKICAgICAgICBzdGF0aXN0aWNzLmFwcGVuZChzdGF0KQoKICAgIGZvciB0cmFjZWJhY2ssIHN0YXQgaW4gb2xkX2dyb3VwLml0ZW1zKCk6CiAgICAgICAgc3RhdCA9IFN0YXRpc3RpY0RpZmYodHJhY2ViYWNrLCAwLCAtc3RhdC5zaXplLCAwLCAtc3RhdC5jb3VudCkKICAgICAgICBzdGF0aXN0aWNzLmFwcGVuZChzdGF0KQogICAgcmV0dXJuIHN0YXRpc3RpY3MKCgpAdG90YWxfb3JkZXJpbmcKY2xhc3MgRnJhbWU6CiAgICAiIiIKICAgIEZyYW1lIG9mIGEgdHJhY2ViYWNrLgogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAoIl9mcmFtZSIsKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcmFtZSk6CiAgICAgICAgIyBmcmFtZSBpcyBhIHR1cGxlOiAoZmlsZW5hbWU6IHN0ciwgbGluZW5vOiBpbnQpCiAgICAgICAgc2VsZi5fZnJhbWUgPSBmcmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGZpbGVuYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9mcmFtZVswXQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGxpbmVubyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZnJhbWVbMV0KCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgRnJhbWUpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKHNlbGYuX2ZyYW1lID09IG90aGVyLl9mcmFtZSkKCiAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgRnJhbWUpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKHNlbGYuX2ZyYW1lIDwgb3RoZXIuX2ZyYW1lKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9mcmFtZSkKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIiVzOiVzIiAlIChzZWxmLmZpbGVuYW1lLCBzZWxmLmxpbmVubykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8RnJhbWUgZmlsZW5hbWU9JXIgbGluZW5vPSVyPiIgJSAoc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8pCgoKQHRvdGFsX29yZGVyaW5nCmNsYXNzIFRyYWNlYmFjayhTZXF1ZW5jZSk6CiAgICAiIiIKICAgIFNlcXVlbmNlIG9mIEZyYW1lIGluc3RhbmNlcyBzb3J0ZWQgZnJvbSB0aGUgb2xkZXN0IGZyYW1lCiAgICB0byB0aGUgbW9zdCByZWNlbnQgZnJhbWUuCiAgICAiIiIKICAgIF9fc2xvdHNfXyA9ICgiX2ZyYW1lcyIsICdfdG90YWxfbmZyYW1lJykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWVzLCB0b3RhbF9uZnJhbWU9Tm9uZSk6CiAgICAgICAgU2VxdWVuY2UuX19pbml0X18oc2VsZikKICAgICAgICAjIGZyYW1lcyBpcyBhIHR1cGxlIG9mIGZyYW1lIHR1cGxlczogc2VlIEZyYW1lIGNvbnN0cnVjdG9yIGZvciB0aGUKICAgICAgICAjIGZvcm1hdCBvZiBhIGZyYW1lIHR1cGxlOyBpdCBpcyByZXZlcnNlZCwgYmVjYXVzZSBfdHJhY2VtYWxsb2MKICAgICAgICAjIHJldHVybnMgZnJhbWVzIHNvcnRlZCBmcm9tIG1vc3QgcmVjZW50IHRvIG9sZGVzdCwgYnV0IHRoZQogICAgICAgICMgUHl0aG9uIEFQSSBleHBlY3RzIG9sZGVzdCB0byBtb3N0IHJlY2VudAogICAgICAgIHNlbGYuX2ZyYW1lcyA9IHR1cGxlKHJldmVyc2VkKGZyYW1lcykpCiAgICAgICAgc2VsZi5fdG90YWxfbmZyYW1lID0gdG90YWxfbmZyYW1lCgogICAgQHByb3BlcnR5CiAgICBkZWYgdG90YWxfbmZyYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl90b3RhbF9uZnJhbWUKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2ZyYW1lcykKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoaW5kZXgsIHNsaWNlKToKICAgICAgICAgICAgcmV0dXJuIHR1cGxlKEZyYW1lKHRyYWNlKSBmb3IgdHJhY2UgaW4gc2VsZi5fZnJhbWVzW2luZGV4XSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gRnJhbWUoc2VsZi5fZnJhbWVzW2luZGV4XSkKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGZyYW1lKToKICAgICAgICByZXR1cm4gZnJhbWUuX2ZyYW1lIGluIHNlbGYuX2ZyYW1lcwoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9mcmFtZXMpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFRyYWNlYmFjayk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiAoc2VsZi5fZnJhbWVzID09IG90aGVyLl9mcmFtZXMpCgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFRyYWNlYmFjayk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiAoc2VsZi5fZnJhbWVzIDwgb3RoZXIuX2ZyYW1lcykKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc3RyKHNlbGZbMF0pCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHMgPSBmIjxUcmFjZWJhY2sge3R1cGxlKHNlbGYpfSIKICAgICAgICBpZiBzZWxmLl90b3RhbF9uZnJhbWUgaXMgTm9uZToKICAgICAgICAgICAgcyArPSAiPiIKICAgICAgICBlbHNlOgogICAgICAgICAgICBzICs9IGYiIHRvdGFsX25mcmFtZT17c2VsZi50b3RhbF9uZnJhbWV9PiIKICAgICAgICByZXR1cm4gcwoKICAgIGRlZiBmb3JtYXQoc2VsZiwgbGltaXQ9Tm9uZSwgbW9zdF9yZWNlbnRfZmlyc3Q9RmFsc2UpOgogICAgICAgIGxpbmVzID0gW10KICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbGltaXQgPiAwOgogICAgICAgICAgICAgICAgZnJhbWVfc2xpY2UgPSBzZWxmWy1saW1pdDpdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmcmFtZV9zbGljZSA9IHNlbGZbOmxpbWl0XQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZyYW1lX3NsaWNlID0gc2VsZgoKICAgICAgICBpZiBtb3N0X3JlY2VudF9maXJzdDoKICAgICAgICAgICAgZnJhbWVfc2xpY2UgPSByZXZlcnNlZChmcmFtZV9zbGljZSkKICAgICAgICBmb3IgZnJhbWUgaW4gZnJhbWVfc2xpY2U6CiAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICBGaWxlICIlcyIsIGxpbmUgJXMnCiAgICAgICAgICAgICAgICAgICAgICAgICAlIChmcmFtZS5maWxlbmFtZSwgZnJhbWUubGluZW5vKSkKICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8pLnN0cmlwKCkKICAgICAgICAgICAgaWYgbGluZToKICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICVzJyAlIGxpbmUpCiAgICAgICAgcmV0dXJuIGxpbmVzCgoKZGVmIGdldF9vYmplY3RfdHJhY2ViYWNrKG9iaik6CiAgICAiIiIKICAgIEdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIHRoZSBQeXRob24gb2JqZWN0ICpvYmoqIHdhcyBhbGxvY2F0ZWQuCiAgICBSZXR1cm4gYSBUcmFjZWJhY2sgaW5zdGFuY2UuCgogICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyBub3QgdHJhY2luZyBtZW1vcnkgYWxsb2NhdGlvbnMgb3IKICAgIGRpZCBub3QgdHJhY2UgdGhlIGFsbG9jYXRpb24gb2YgdGhlIG9iamVjdC4KICAgICIiIgogICAgZnJhbWVzID0gX2dldF9vYmplY3RfdHJhY2ViYWNrKG9iaikKICAgIGlmIGZyYW1lcyBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gVHJhY2ViYWNrKGZyYW1lcykKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIE5vbmUKCgpjbGFzcyBUcmFjZToKICAgICIiIgogICAgVHJhY2Ugb2YgYSBtZW1vcnkgYmxvY2suCiAgICAiIiIKICAgIF9fc2xvdHNfXyA9ICgiX3RyYWNlIiwpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYWNlKToKICAgICAgICAjIHRyYWNlIGlzIGEgdHVwbGU6IChkb21haW46IGludCwgc2l6ZTogaW50LCB0cmFjZWJhY2s6IHR1cGxlKS4KICAgICAgICAjIFNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIHRyYWNlYmFjayB0dXBsZS4KICAgICAgICBzZWxmLl90cmFjZSA9IHRyYWNlCgogICAgQHByb3BlcnR5CiAgICBkZWYgZG9tYWluKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl90cmFjZVswXQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHNpemUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzFdCgogICAgQHByb3BlcnR5CiAgICBkZWYgdHJhY2ViYWNrKHNlbGYpOgogICAgICAgIHJldHVybiBUcmFjZWJhY2soKnNlbGYuX3RyYWNlWzI6XSkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgVHJhY2UpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKHNlbGYuX3RyYWNlID09IG90aGVyLl90cmFjZSkKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fdHJhY2UpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICIlczogJXMiICUgKHNlbGYudHJhY2ViYWNrLCBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSkpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAoIjxUcmFjZSBkb21haW49JXMgc2l6ZT0lcywgdHJhY2ViYWNrPSVyPiIKICAgICAgICAgICAgICAgICUgKHNlbGYuZG9tYWluLCBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKCgpjbGFzcyBfVHJhY2VzKFNlcXVlbmNlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFjZXMpOgogICAgICAgIFNlcXVlbmNlLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIyB0cmFjZXMgaXMgYSB0dXBsZSBvZiB0cmFjZSB0dXBsZXM6IHNlZSBUcmFjZSBjb25zdHJ1Y3RvcgogICAgICAgIHNlbGYuX3RyYWNlcyA9IHRyYWNlcwoKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5fdHJhY2VzKQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShpbmRleCwgc2xpY2UpOgogICAgICAgICAgICByZXR1cm4gdHVwbGUoVHJhY2UodHJhY2UpIGZvciB0cmFjZSBpbiBzZWxmLl90cmFjZXNbaW5kZXhdKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBUcmFjZShzZWxmLl90cmFjZXNbaW5kZXhdKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdHJhY2UpOgogICAgICAgIHJldHVybiB0cmFjZS5fdHJhY2UgaW4gc2VsZi5fdHJhY2VzCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9UcmFjZXMpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKHNlbGYuX3RyYWNlcyA9PSBvdGhlci5fdHJhY2VzKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIjxUcmFjZXMgbGVuPSVzPiIgJSBsZW4oc2VsZikKCgpkZWYgX25vcm1hbGl6ZV9maWxlbmFtZShmaWxlbmFtZSk6CiAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybWNhc2UoZmlsZW5hbWUpCiAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogICAgcmV0dXJuIGZpbGVuYW1lCgoKY2xhc3MgQmFzZUZpbHRlcjoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUpOgogICAgICAgIHNlbGYuaW5jbHVzaXZlID0gaW5jbHVzaXZlCgogICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIEZpbHRlcihCYXNlRmlsdGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUsIGZpbGVuYW1lX3BhdHRlcm4sCiAgICAgICAgICAgICAgICAgbGluZW5vPU5vbmUsIGFsbF9mcmFtZXM9RmFsc2UsIGRvbWFpbj1Ob25lKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGluY2x1c2l2ZSkKICAgICAgICBzZWxmLmluY2x1c2l2ZSA9IGluY2x1c2l2ZQogICAgICAgIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4gPSBfbm9ybWFsaXplX2ZpbGVuYW1lKGZpbGVuYW1lX3BhdHRlcm4pCiAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KICAgICAgICBzZWxmLmFsbF9mcmFtZXMgPSBhbGxfZnJhbWVzCiAgICAgICAgc2VsZi5kb21haW4gPSBkb21haW4KCiAgICBAcHJvcGVydHkKICAgIGRlZiBmaWxlbmFtZV9wYXR0ZXJuKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9maWxlbmFtZV9wYXR0ZXJuCgogICAgZGVmIF9tYXRjaF9mcmFtZV9pbXBsKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgogICAgICAgIGZpbGVuYW1lID0gX25vcm1hbGl6ZV9maWxlbmFtZShmaWxlbmFtZSkKICAgICAgICBpZiBub3QgZm5tYXRjaC5mbm1hdGNoKGZpbGVuYW1lLCBzZWxmLl9maWxlbmFtZV9wYXR0ZXJuKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgaWYgc2VsZi5saW5lbm8gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gKGxpbmVubyA9PSBzZWxmLmxpbmVubykKCiAgICBkZWYgX21hdGNoX2ZyYW1lKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgogICAgICAgIHJldHVybiBzZWxmLl9tYXRjaF9mcmFtZV9pbXBsKGZpbGVuYW1lLCBsaW5lbm8pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKCiAgICBkZWYgX21hdGNoX3RyYWNlYmFjayhzZWxmLCB0cmFjZWJhY2spOgogICAgICAgIGlmIHNlbGYuYWxsX2ZyYW1lczoKICAgICAgICAgICAgaWYgYW55KHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykKICAgICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSwgbGluZW5vIGluIHRyYWNlYmFjayk6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbmNsdXNpdmUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiAobm90IHNlbGYuaW5jbHVzaXZlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8gPSB0cmFjZWJhY2tbMF0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pCgogICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CiAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2ssIHRvdGFsX25mcmFtZSA9IHRyYWNlCiAgICAgICAgcmVzID0gc2VsZi5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKICAgICAgICBpZiBzZWxmLmRvbWFpbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgc2VsZi5pbmNsdXNpdmU6CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzIGFuZCAoZG9tYWluID09IHNlbGYuZG9tYWluKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlcyBvciAoZG9tYWluICE9IHNlbGYuZG9tYWluKQogICAgICAgIHJldHVybiByZXMKCgpjbGFzcyBEb21haW5GaWx0ZXIoQmFzZUZpbHRlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVzaXZlLCBkb21haW4pOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oaW5jbHVzaXZlKQogICAgICAgIHNlbGYuX2RvbWFpbiA9IGRvbWFpbgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRvbWFpbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZG9tYWluCgogICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CiAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2ssIHRvdGFsX25mcmFtZSA9IHRyYWNlCiAgICAgICAgcmV0dXJuIChkb21haW4gPT0gc2VsZi5kb21haW4pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKCgpjbGFzcyBTbmFwc2hvdDoKICAgICIiIgogICAgU25hcHNob3Qgb2YgdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkIGJ5IFB5dGhvbi4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFjZXMsIHRyYWNlYmFja19saW1pdCk6CiAgICAgICAgIyB0cmFjZXMgaXMgYSB0dXBsZSBvZiB0cmFjZSB0dXBsZXM6IHNlZSBfVHJhY2VzIGNvbnN0cnVjdG9yIGZvcgogICAgICAgICMgdGhlIGV4YWN0IGZvcm1hdAogICAgICAgIHNlbGYudHJhY2VzID0gX1RyYWNlcyh0cmFjZXMpCiAgICAgICAgc2VsZi50cmFjZWJhY2tfbGltaXQgPSB0cmFjZWJhY2tfbGltaXQKCiAgICBkZWYgZHVtcChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIiIiCiAgICAgICAgV3JpdGUgdGhlIHNuYXBzaG90IGludG8gYSBmaWxlLgogICAgICAgICIiIgogICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZnA6CiAgICAgICAgICAgIHBpY2tsZS5kdW1wKHNlbGYsIGZwLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgbG9hZChmaWxlbmFtZSk6CiAgICAgICAgIiIiCiAgICAgICAgTG9hZCBhIHNuYXBzaG90IGZyb20gYSBmaWxlLgogICAgICAgICIiIgogICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CiAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZChmcCkKCiAgICBkZWYgX2ZpbHRlcl90cmFjZShzZWxmLCBpbmNsdWRlX2ZpbHRlcnMsIGV4Y2x1ZGVfZmlsdGVycywgdHJhY2UpOgogICAgICAgIGlmIGluY2x1ZGVfZmlsdGVyczoKICAgICAgICAgICAgaWYgbm90IGFueSh0cmFjZV9maWx0ZXIuX21hdGNoKHRyYWNlKQogICAgICAgICAgICAgICAgICAgICAgIGZvciB0cmFjZV9maWx0ZXIgaW4gaW5jbHVkZV9maWx0ZXJzKToKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGlmIGV4Y2x1ZGVfZmlsdGVyczoKICAgICAgICAgICAgaWYgYW55KG5vdCB0cmFjZV9maWx0ZXIuX21hdGNoKHRyYWNlKQogICAgICAgICAgICAgICAgICAgZm9yIHRyYWNlX2ZpbHRlciBpbiBleGNsdWRlX2ZpbHRlcnMpOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgZmlsdGVyX3RyYWNlcyhzZWxmLCBmaWx0ZXJzKToKICAgICAgICAiIiIKICAgICAgICBDcmVhdGUgYSBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGZpbHRlcmVkIHRyYWNlcyBzZXF1ZW5jZSwgZmlsdGVycwogICAgICAgIGlzIGEgbGlzdCBvZiBGaWx0ZXIgb3IgRG9tYWluRmlsdGVyIGluc3RhbmNlcy4gIElmIGZpbHRlcnMgaXMgYW4gZW1wdHkKICAgICAgICBsaXN0LCByZXR1cm4gYSBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWx0ZXJzLCBJdGVyYWJsZSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsdGVycyBtdXN0IGJlIGEgbGlzdCBvZiBmaWx0ZXJzLCBub3QgJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUoZmlsdGVycykuX19uYW1lX18pCiAgICAgICAgaWYgZmlsdGVyczoKICAgICAgICAgICAgaW5jbHVkZV9maWx0ZXJzID0gW10KICAgICAgICAgICAgZXhjbHVkZV9maWx0ZXJzID0gW10KICAgICAgICAgICAgZm9yIHRyYWNlX2ZpbHRlciBpbiBmaWx0ZXJzOgogICAgICAgICAgICAgICAgaWYgdHJhY2VfZmlsdGVyLmluY2x1c2l2ZToKICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2ZpbHRlcnMuYXBwZW5kKHRyYWNlX2ZpbHRlcikKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZV9maWx0ZXJzLmFwcGVuZCh0cmFjZV9maWx0ZXIpCiAgICAgICAgICAgIG5ld190cmFjZXMgPSBbdHJhY2UgZm9yIHRyYWNlIGluIHNlbGYudHJhY2VzLl90cmFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWx0ZXJfdHJhY2UoaW5jbHVkZV9maWx0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlX2ZpbHRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlKV0KICAgICAgICBlbHNlOgogICAgICAgICAgICBuZXdfdHJhY2VzID0gc2VsZi50cmFjZXMuX3RyYWNlcy5jb3B5KCkKICAgICAgICByZXR1cm4gU25hcHNob3QobmV3X3RyYWNlcywgc2VsZi50cmFjZWJhY2tfbGltaXQpCgogICAgZGVmIF9ncm91cF9ieShzZWxmLCBrZXlfdHlwZSwgY3VtdWxhdGl2ZSk6CiAgICAgICAgaWYga2V5X3R5cGUgbm90IGluICgndHJhY2ViYWNrJywgJ2ZpbGVuYW1lJywgJ2xpbmVubycpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGtleV90eXBlOiAlciIgJSAoa2V5X3R5cGUsKSkKICAgICAgICBpZiBjdW11bGF0aXZlIGFuZCBrZXlfdHlwZSBub3QgaW4gKCdsaW5lbm8nLCAnZmlsZW5hbWUnKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY3VtdWxhdGl2ZSBtb2RlIGNhbm5vdCBieSB1c2VkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCBrZXkgdHlwZSAlciIgJSBrZXlfdHlwZSkKCiAgICAgICAgc3RhdHMgPSB7fQogICAgICAgIHRyYWNlYmFja3MgPSB7fQogICAgICAgIGlmIG5vdCBjdW11bGF0aXZlOgogICAgICAgICAgICBmb3IgdHJhY2UgaW4gc2VsZi50cmFjZXMuX3RyYWNlczoKICAgICAgICAgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrLCB0b3RhbF9uZnJhbWUgPSB0cmFjZQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja3NbdHJhY2VfdHJhY2ViYWNrXQogICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgIGlmIGtleV90eXBlID09ICd0cmFjZWJhY2snOgogICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXMgPSB0cmFjZV90cmFjZWJhY2sKICAgICAgICAgICAgICAgICAgICBlbGlmIGtleV90eXBlID09ICdsaW5lbm8nOgogICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXMgPSB0cmFjZV90cmFjZWJhY2tbOjFdCiAgICAgICAgICAgICAgICAgICAgZWxzZTogIyBrZXlfdHlwZSA9PSAnZmlsZW5hbWUnOgogICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXMgPSAoKHRyYWNlX3RyYWNlYmFja1swXVswXSwgMCksKQogICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IFRyYWNlYmFjayhmcmFtZXMpCiAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrc1t0cmFjZV90cmFjZWJhY2tdID0gdHJhY2ViYWNrCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc3RhdCA9IHN0YXRzW3RyYWNlYmFja10KICAgICAgICAgICAgICAgICAgICBzdGF0LnNpemUgKz0gc2l6ZQogICAgICAgICAgICAgICAgICAgIHN0YXQuY291bnQgKz0gMQogICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgIHN0YXRzW3RyYWNlYmFja10gPSBTdGF0aXN0aWModHJhY2ViYWNrLCBzaXplLCAxKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzCiAgICAgICAgICAgIGZvciB0cmFjZSBpbiBzZWxmLnRyYWNlcy5fdHJhY2VzOgogICAgICAgICAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZV90cmFjZWJhY2ssIHRvdGFsX25mcmFtZSA9IHRyYWNlCiAgICAgICAgICAgICAgICBmb3IgZnJhbWUgaW4gdHJhY2VfdHJhY2ViYWNrOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrc1tmcmFtZV0KICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleV90eXBlID09ICdsaW5lbm8nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzID0gKGZyYW1lLCkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZTogIyBrZXlfdHlwZSA9PSAnZmlsZW5hbWUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzID0gKChmcmFtZVswXSwgMCksKQogICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSBUcmFjZWJhY2soZnJhbWVzKQogICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2tzW2ZyYW1lXSA9IHRyYWNlYmFjawogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdCA9IHN0YXRzW3RyYWNlYmFja10KICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5zaXplICs9IHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5jb3VudCArPSAxCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBzdGF0c1t0cmFjZWJhY2tdID0gU3RhdGlzdGljKHRyYWNlYmFjaywgc2l6ZSwgMSkKICAgICAgICByZXR1cm4gc3RhdHMKCiAgICBkZWYgc3RhdGlzdGljcyhzZWxmLCBrZXlfdHlwZSwgY3VtdWxhdGl2ZT1GYWxzZSk6CiAgICAgICAgIiIiCiAgICAgICAgR3JvdXAgc3RhdGlzdGljcyBieSBrZXlfdHlwZS4gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgU3RhdGlzdGljCiAgICAgICAgaW5zdGFuY2VzLgogICAgICAgICIiIgogICAgICAgIGdyb3VwZWQgPSBzZWxmLl9ncm91cF9ieShrZXlfdHlwZSwgY3VtdWxhdGl2ZSkKICAgICAgICBzdGF0aXN0aWNzID0gbGlzdChncm91cGVkLnZhbHVlcygpKQogICAgICAgIHN0YXRpc3RpY3Muc29ydChyZXZlcnNlPVRydWUsIGtleT1TdGF0aXN0aWMuX3NvcnRfa2V5KQogICAgICAgIHJldHVybiBzdGF0aXN0aWNzCgogICAgZGVmIGNvbXBhcmVfdG8oc2VsZiwgb2xkX3NuYXBzaG90LCBrZXlfdHlwZSwgY3VtdWxhdGl2ZT1GYWxzZSk6CiAgICAgICAgIiIiCiAgICAgICAgQ29tcHV0ZSB0aGUgZGlmZmVyZW5jZXMgd2l0aCBhbiBvbGQgc25hcHNob3Qgb2xkX3NuYXBzaG90LiBHZXQKICAgICAgICBzdGF0aXN0aWNzIGFzIGEgc29ydGVkIGxpc3Qgb2YgU3RhdGlzdGljRGlmZiBpbnN0YW5jZXMsIGdyb3VwZWQgYnkKICAgICAgICBncm91cF9ieS4KICAgICAgICAiIiIKICAgICAgICBuZXdfZ3JvdXAgPSBzZWxmLl9ncm91cF9ieShrZXlfdHlwZSwgY3VtdWxhdGl2ZSkKICAgICAgICBvbGRfZ3JvdXAgPSBvbGRfc25hcHNob3QuX2dyb3VwX2J5KGtleV90eXBlLCBjdW11bGF0aXZlKQogICAgICAgIHN0YXRpc3RpY3MgPSBfY29tcGFyZV9ncm91cGVkX3N0YXRzKG9sZF9ncm91cCwgbmV3X2dyb3VwKQogICAgICAgIHN0YXRpc3RpY3Muc29ydChyZXZlcnNlPVRydWUsIGtleT1TdGF0aXN0aWNEaWZmLl9zb3J0X2tleSkKICAgICAgICByZXR1cm4gc3RhdGlzdGljcwoKCmRlZiB0YWtlX3NuYXBzaG90KCk6CiAgICAiIiIKICAgIFRha2UgYSBzbmFwc2hvdCBvZiB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgUHl0aG9uLgogICAgIiIiCiAgICBpZiBub3QgaXNfdHJhY2luZygpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBtdXN0IGJlIHRyYWNpbmcgbWVtb3J5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImFsbG9jYXRpb25zIHRvIHRha2UgYSBzbmFwc2hvdCIpCiAgICB0cmFjZXMgPSBfZ2V0X3RyYWNlcygpCiAgICB0cmFjZWJhY2tfbGltaXQgPSBnZXRfdHJhY2ViYWNrX2xpbWl0KCkKICAgIHJldHVybiBTbmFwc2hvdCh0cmFjZXMsIHRyYWNlYmFja19saW1pdCkKUEsDBBQAAAAAAAIgo1afjyOrbwMAAG8DAAAGAAAAdHR5LnB5IiIiVGVybWluYWwgdXRpbGl0aWVzLiIiIgoKIyBBdXRob3I6IFN0ZWVuIEx1bWhvbHQuCgpmcm9tIHRlcm1pb3MgaW1wb3J0ICoKCl9fYWxsX18gPSBbInNldHJhdyIsICJzZXRjYnJlYWsiXQoKIyBJbmRleGVzIGZvciB0ZXJtaW9zIGxpc3QuCklGTEFHID0gMApPRkxBRyA9IDEKQ0ZMQUcgPSAyCkxGTEFHID0gMwpJU1BFRUQgPSA0Ck9TUEVFRCA9IDUKQ0MgPSA2CgpkZWYgc2V0cmF3KGZkLCB3aGVuPVRDU0FGTFVTSCk6CiAgICAiIiJQdXQgdGVybWluYWwgaW50byBhIHJhdyBtb2RlLiIiIgogICAgbW9kZSA9IHRjZ2V0YXR0cihmZCkKICAgIG1vZGVbSUZMQUddID0gbW9kZVtJRkxBR10gJiB+KEJSS0lOVCB8IElDUk5MIHwgSU5QQ0sgfCBJU1RSSVAgfCBJWE9OKQogICAgbW9kZVtPRkxBR10gPSBtb2RlW09GTEFHXSAmIH4oT1BPU1QpCiAgICBtb2RlW0NGTEFHXSA9IG1vZGVbQ0ZMQUddICYgfihDU0laRSB8IFBBUkVOQikKICAgIG1vZGVbQ0ZMQUddID0gbW9kZVtDRkxBR10gfCBDUzgKICAgIG1vZGVbTEZMQUddID0gbW9kZVtMRkxBR10gJiB+KEVDSE8gfCBJQ0FOT04gfCBJRVhURU4gfCBJU0lHKQogICAgbW9kZVtDQ11bVk1JTl0gPSAxCiAgICBtb2RlW0NDXVtWVElNRV0gPSAwCiAgICB0Y3NldGF0dHIoZmQsIHdoZW4sIG1vZGUpCgpkZWYgc2V0Y2JyZWFrKGZkLCB3aGVuPVRDU0FGTFVTSCk6CiAgICAiIiJQdXQgdGVybWluYWwgaW50byBhIGNicmVhayBtb2RlLiIiIgogICAgbW9kZSA9IHRjZ2V0YXR0cihmZCkKICAgIG1vZGVbTEZMQUddID0gbW9kZVtMRkxBR10gJiB+KEVDSE8gfCBJQ0FOT04pCiAgICBtb2RlW0NDXVtWTUlOXSA9IDEKICAgIG1vZGVbQ0NdW1ZUSU1FXSA9IDAKICAgIHRjc2V0YXR0cihmZCwgd2hlbiwgbW9kZSkKUEsDBBQAAAAAAAIgo1Zdw9ReUycAAFMnAAAIAAAAdHlwZXMucHkiIiIKRGVmaW5lIG5hbWVzIGZvciBidWlsdC1pbiB0eXBlcyB0aGF0IGFyZW4ndCBkaXJlY3RseSBhY2Nlc3NpYmxlIGFzIGEgYnVpbHRpbi4KIiIiCmltcG9ydCBzeXMKCiMgSXRlcmF0b3JzIGluIFB5dGhvbiBhcmVuJ3QgYSBtYXR0ZXIgb2YgdHlwZSBidXQgb2YgcHJvdG9jb2wuICBBIGxhcmdlCiMgYW5kIGNoYW5naW5nIG51bWJlciBvZiBidWlsdGluIHR5cGVzIGltcGxlbWVudCAqc29tZSogZmxhdm9yIG9mCiMgaXRlcmF0b3IuICBEb24ndCBjaGVjayB0aGUgdHlwZSEgIFVzZSBoYXNhdHRyIHRvIGNoZWNrIGZvciBib3RoCiMgIl9faXRlcl9fIiBhbmQgIl9fbmV4dF9fIiBhdHRyaWJ1dGVzIGluc3RlYWQuCgpkZWYgX2YoKTogcGFzcwpGdW5jdGlvblR5cGUgPSB0eXBlKF9mKQpMYW1iZGFUeXBlID0gdHlwZShsYW1iZGE6IE5vbmUpICAgICAgICAgIyBTYW1lIGFzIEZ1bmN0aW9uVHlwZQpDb2RlVHlwZSA9IHR5cGUoX2YuX19jb2RlX18pCk1hcHBpbmdQcm94eVR5cGUgPSB0eXBlKHR5cGUuX19kaWN0X18pClNpbXBsZU5hbWVzcGFjZSA9IHR5cGUoc3lzLmltcGxlbWVudGF0aW9uKQoKZGVmIF9jZWxsX2ZhY3RvcnkoKToKICAgIGEgPSAxCiAgICBkZWYgZigpOgogICAgICAgIG5vbmxvY2FsIGEKICAgIHJldHVybiBmLl9fY2xvc3VyZV9fWzBdCkNlbGxUeXBlID0gdHlwZShfY2VsbF9mYWN0b3J5KCkpCgpkZWYgX2coKToKICAgIHlpZWxkIDEKR2VuZXJhdG9yVHlwZSA9IHR5cGUoX2coKSkKCmFzeW5jIGRlZiBfYygpOiBwYXNzCl9jID0gX2MoKQpDb3JvdXRpbmVUeXBlID0gdHlwZShfYykKX2MuY2xvc2UoKSAgIyBQcmV2ZW50IFJlc291cmNlV2FybmluZwoKYXN5bmMgZGVmIF9hZygpOgogICAgeWllbGQKX2FnID0gX2FnKCkKQXN5bmNHZW5lcmF0b3JUeXBlID0gdHlwZShfYWcpCgpjbGFzcyBfQzoKICAgIGRlZiBfbShzZWxmKTogcGFzcwpNZXRob2RUeXBlID0gdHlwZShfQygpLl9tKQoKQnVpbHRpbkZ1bmN0aW9uVHlwZSA9IHR5cGUobGVuKQpCdWlsdGluTWV0aG9kVHlwZSA9IHR5cGUoW10uYXBwZW5kKSAgICAgIyBTYW1lIGFzIEJ1aWx0aW5GdW5jdGlvblR5cGUKCldyYXBwZXJEZXNjcmlwdG9yVHlwZSA9IHR5cGUob2JqZWN0Ll9faW5pdF9fKQpNZXRob2RXcmFwcGVyVHlwZSA9IHR5cGUob2JqZWN0KCkuX19zdHJfXykKTWV0aG9kRGVzY3JpcHRvclR5cGUgPSB0eXBlKHN0ci5qb2luKQpDbGFzc01ldGhvZERlc2NyaXB0b3JUeXBlID0gdHlwZShkaWN0Ll9fZGljdF9fWydmcm9ta2V5cyddKQoKTW9kdWxlVHlwZSA9IHR5cGUoc3lzKQoKdHJ5OgogICAgcmFpc2UgVHlwZUVycm9yCmV4Y2VwdCBUeXBlRXJyb3IgYXMgZXhjOgogICAgVHJhY2ViYWNrVHlwZSA9IHR5cGUoZXhjLl9fdHJhY2ViYWNrX18pCiAgICBGcmFtZVR5cGUgPSB0eXBlKGV4Yy5fX3RyYWNlYmFja19fLnRiX2ZyYW1lKQoKIyBGb3IgSnl0aG9uLCB0aGUgZm9sbG93aW5nIHR3byB0eXBlcyBhcmUgaWRlbnRpY2FsCkdldFNldERlc2NyaXB0b3JUeXBlID0gdHlwZShGdW5jdGlvblR5cGUuX19jb2RlX18pCk1lbWJlckRlc2NyaXB0b3JUeXBlID0gdHlwZShGdW5jdGlvblR5cGUuX19nbG9iYWxzX18pCgpkZWwgc3lzLCBfZiwgX2csIF9DLCBfYywgX2FnICAjIE5vdCBmb3IgZXhwb3J0CgoKIyBQcm92aWRlIGEgUEVQIDMxMTUgY29tcGxpYW50IG1lY2hhbmlzbSBmb3IgY2xhc3MgY3JlYXRpb24KZGVmIG5ld19jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lLCBleGVjX2JvZHk9Tm9uZSk6CiAgICAiIiJDcmVhdGUgYSBjbGFzcyBvYmplY3QgZHluYW1pY2FsbHkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcy4iIiIKICAgIHJlc29sdmVkX2Jhc2VzID0gcmVzb2x2ZV9iYXNlcyhiYXNlcykKICAgIG1ldGEsIG5zLCBrd2RzID0gcHJlcGFyZV9jbGFzcyhuYW1lLCByZXNvbHZlZF9iYXNlcywga3dkcykKICAgIGlmIGV4ZWNfYm9keSBpcyBub3QgTm9uZToKICAgICAgICBleGVjX2JvZHkobnMpCiAgICBpZiByZXNvbHZlZF9iYXNlcyBpcyBub3QgYmFzZXM6CiAgICAgICAgbnNbJ19fb3JpZ19iYXNlc19fJ10gPSBiYXNlcwogICAgcmV0dXJuIG1ldGEobmFtZSwgcmVzb2x2ZWRfYmFzZXMsIG5zLCAqKmt3ZHMpCgpkZWYgcmVzb2x2ZV9iYXNlcyhiYXNlcyk6CiAgICAiIiJSZXNvbHZlIE1STyBlbnRyaWVzIGR5bmFtaWNhbGx5IGFzIHNwZWNpZmllZCBieSBQRVAgNTYwLiIiIgogICAgbmV3X2Jhc2VzID0gbGlzdChiYXNlcykKICAgIHVwZGF0ZWQgPSBGYWxzZQogICAgc2hpZnQgPSAwCiAgICBmb3IgaSwgYmFzZSBpbiBlbnVtZXJhdGUoYmFzZXMpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoYmFzZSwgdHlwZSk6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgbm90IGhhc2F0dHIoYmFzZSwgIl9fbXJvX2VudHJpZXNfXyIpOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIG5ld19iYXNlID0gYmFzZS5fX21yb19lbnRyaWVzX18oYmFzZXMpCiAgICAgICAgdXBkYXRlZCA9IFRydWUKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuZXdfYmFzZSwgdHVwbGUpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9fbXJvX2VudHJpZXNfXyBtdXN0IHJldHVybiBhIHR1cGxlIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBuZXdfYmFzZXNbaStzaGlmdDppK3NoaWZ0KzFdID0gbmV3X2Jhc2UKICAgICAgICAgICAgc2hpZnQgKz0gbGVuKG5ld19iYXNlKSAtIDEKICAgIGlmIG5vdCB1cGRhdGVkOgogICAgICAgIHJldHVybiBiYXNlcwogICAgcmV0dXJuIHR1cGxlKG5ld19iYXNlcykKCmRlZiBwcmVwYXJlX2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUpOgogICAgIiIiQ2FsbCB0aGUgX19wcmVwYXJlX18gbWV0aG9kIG9mIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MuCgogICAgUmV0dXJucyAobWV0YWNsYXNzLCBuYW1lc3BhY2UsIGt3ZHMpIGFzIGEgMy10dXBsZQoKICAgICptZXRhY2xhc3MqIGlzIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MKICAgICpuYW1lc3BhY2UqIGlzIHRoZSBwcmVwYXJlZCBjbGFzcyBuYW1lc3BhY2UKICAgICprd2RzKiBpcyBhbiB1cGRhdGVkIGNvcHkgb2YgdGhlIHBhc3NlZCBpbiBrd2RzIGFyZ3VtZW50IHdpdGggYW55CiAgICAnbWV0YWNsYXNzJyBlbnRyeSByZW1vdmVkLiBJZiBubyBrd2RzIGFyZ3VtZW50IGlzIHBhc3NlZCBpbiwgdGhpcyB3aWxsCiAgICBiZSBhbiBlbXB0eSBkaWN0LgogICAgIiIiCiAgICBpZiBrd2RzIGlzIE5vbmU6CiAgICAgICAga3dkcyA9IHt9CiAgICBlbHNlOgogICAgICAgIGt3ZHMgPSBkaWN0KGt3ZHMpICMgRG9uJ3QgYWx0ZXIgdGhlIHByb3ZpZGVkIG1hcHBpbmcKICAgIGlmICdtZXRhY2xhc3MnIGluIGt3ZHM6CiAgICAgICAgbWV0YSA9IGt3ZHMucG9wKCdtZXRhY2xhc3MnKQogICAgZWxzZToKICAgICAgICBpZiBiYXNlczoKICAgICAgICAgICAgbWV0YSA9IHR5cGUoYmFzZXNbMF0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbWV0YSA9IHR5cGUKICAgIGlmIGlzaW5zdGFuY2UobWV0YSwgdHlwZSk6CiAgICAgICAgIyB3aGVuIG1ldGEgaXMgYSB0eXBlLCB3ZSBmaXJzdCBkZXRlcm1pbmUgdGhlIG1vc3QtZGVyaXZlZCBtZXRhY2xhc3MKICAgICAgICAjIGluc3RlYWQgb2YgaW52b2tpbmcgdGhlIGluaXRpYWwgY2FuZGlkYXRlIGRpcmVjdGx5CiAgICAgICAgbWV0YSA9IF9jYWxjdWxhdGVfbWV0YShtZXRhLCBiYXNlcykKICAgIGlmIGhhc2F0dHIobWV0YSwgJ19fcHJlcGFyZV9fJyk6CiAgICAgICAgbnMgPSBtZXRhLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLCAqKmt3ZHMpCiAgICBlbHNlOgogICAgICAgIG5zID0ge30KICAgIHJldHVybiBtZXRhLCBucywga3dkcwoKZGVmIF9jYWxjdWxhdGVfbWV0YShtZXRhLCBiYXNlcyk6CiAgICAiIiJDYWxjdWxhdGUgdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MuIiIiCiAgICB3aW5uZXIgPSBtZXRhCiAgICBmb3IgYmFzZSBpbiBiYXNlczoKICAgICAgICBiYXNlX21ldGEgPSB0eXBlKGJhc2UpCiAgICAgICAgaWYgaXNzdWJjbGFzcyh3aW5uZXIsIGJhc2VfbWV0YSk6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgaXNzdWJjbGFzcyhiYXNlX21ldGEsIHdpbm5lcik6CiAgICAgICAgICAgIHdpbm5lciA9IGJhc2VfbWV0YQogICAgICAgICAgICBjb250aW51ZQogICAgICAgICMgZWxzZToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm1ldGFjbGFzcyBjb25mbGljdDogIgogICAgICAgICAgICAgICAgICAgICAgICAidGhlIG1ldGFjbGFzcyBvZiBhIGRlcml2ZWQgY2xhc3MgIgogICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIChub24tc3RyaWN0KSBzdWJjbGFzcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICJvZiB0aGUgbWV0YWNsYXNzZXMgb2YgYWxsIGl0cyBiYXNlcyIpCiAgICByZXR1cm4gd2lubmVyCgpjbGFzcyBEeW5hbWljQ2xhc3NBdHRyaWJ1dGU6CiAgICAiIiJSb3V0ZSBhdHRyaWJ1dGUgYWNjZXNzIG9uIGEgY2xhc3MgdG8gX19nZXRhdHRyX18uCgogICAgVGhpcyBpcyBhIGRlc2NyaXB0b3IsIHVzZWQgdG8gZGVmaW5lIGF0dHJpYnV0ZXMgdGhhdCBhY3QgZGlmZmVyZW50bHkgd2hlbgogICAgYWNjZXNzZWQgdGhyb3VnaCBhbiBpbnN0YW5jZSBhbmQgdGhyb3VnaCBhIGNsYXNzLiAgSW5zdGFuY2UgYWNjZXNzIHJlbWFpbnMKICAgIG5vcm1hbCwgYnV0IGFjY2VzcyB0byBhbiBhdHRyaWJ1dGUgdGhyb3VnaCBhIGNsYXNzIHdpbGwgYmUgcm91dGVkIHRvIHRoZQogICAgY2xhc3MncyBfX2dldGF0dHJfXyBtZXRob2Q7IHRoaXMgaXMgZG9uZSBieSByYWlzaW5nIEF0dHJpYnV0ZUVycm9yLgoKICAgIFRoaXMgYWxsb3dzIG9uZSB0byBoYXZlIHByb3BlcnRpZXMgYWN0aXZlIG9uIGFuIGluc3RhbmNlLCBhbmQgaGF2ZSB2aXJ0dWFsCiAgICBhdHRyaWJ1dGVzIG9uIHRoZSBjbGFzcyB3aXRoIHRoZSBzYW1lIG5hbWUuICAoRW51bSB1c2VkIHRoaXMgYmV0d2VlbiBQeXRob24KICAgIHZlcnNpb25zIDMuNCAtIDMuOSAuKQoKICAgIFN1YmNsYXNzIGZyb20gdGhpcyB0byB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIG9mIGFjY2Vzc2luZyB2aXJ0dWFsIGF0dHJpYnV0ZXMKICAgIGFuZCBzdGlsbCBiZSB0cmVhdGVkIHByb3Blcmx5IGJ5IHRoZSBpbnNwZWN0IG1vZHVsZS4gKEVudW0gdXNlcyB0aGlzIHNpbmNlCiAgICBQeXRob24gMy4xMCAuKQoKICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZnZXQ9Tm9uZSwgZnNldD1Ob25lLCBmZGVsPU5vbmUsIGRvYz1Ob25lKToKICAgICAgICBzZWxmLmZnZXQgPSBmZ2V0CiAgICAgICAgc2VsZi5mc2V0ID0gZnNldAogICAgICAgIHNlbGYuZmRlbCA9IGZkZWwKICAgICAgICAjIG5leHQgdHdvIGxpbmVzIG1ha2UgRHluYW1pY0NsYXNzQXR0cmlidXRlIGFjdCB0aGUgc2FtZSBhcyBwcm9wZXJ0eQogICAgICAgIHNlbGYuX19kb2NfXyA9IGRvYyBvciBmZ2V0Ll9fZG9jX18KICAgICAgICBzZWxmLm92ZXJ3cml0ZV9kb2MgPSBkb2MgaXMgTm9uZQogICAgICAgICMgc3VwcG9ydCBmb3IgYWJzdHJhY3QgbWV0aG9kcwogICAgICAgIHNlbGYuX19pc2Fic3RyYWN0bWV0aG9kX18gPSBib29sKGdldGF0dHIoZmdldCwgJ19faXNhYnN0cmFjdG1ldGhvZF9fJywgRmFsc2UpKQoKICAgIGRlZiBfX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcmNsYXNzPU5vbmUpOgogICAgICAgIGlmIGluc3RhbmNlIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYuX19pc2Fic3RyYWN0bWV0aG9kX186CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigpCiAgICAgICAgZWxpZiBzZWxmLmZnZXQgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoInVucmVhZGFibGUgYXR0cmlidXRlIikKICAgICAgICByZXR1cm4gc2VsZi5mZ2V0KGluc3RhbmNlKQoKICAgIGRlZiBfX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSk6CiAgICAgICAgaWYgc2VsZi5mc2V0IGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJjYW4ndCBzZXQgYXR0cmlidXRlIikKICAgICAgICBzZWxmLmZzZXQoaW5zdGFuY2UsIHZhbHVlKQoKICAgIGRlZiBfX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKToKICAgICAgICBpZiBzZWxmLmZkZWwgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoImNhbid0IGRlbGV0ZSBhdHRyaWJ1dGUiKQogICAgICAgIHNlbGYuZmRlbChpbnN0YW5jZSkKCiAgICBkZWYgZ2V0dGVyKHNlbGYsIGZnZXQpOgogICAgICAgIGZkb2MgPSBmZ2V0Ll9fZG9jX18gaWYgc2VsZi5vdmVyd3JpdGVfZG9jIGVsc2UgTm9uZQogICAgICAgIHJlc3VsdCA9IHR5cGUoc2VsZikoZmdldCwgc2VsZi5mc2V0LCBzZWxmLmZkZWwsIGZkb2Mgb3Igc2VsZi5fX2RvY19fKQogICAgICAgIHJlc3VsdC5vdmVyd3JpdGVfZG9jID0gc2VsZi5vdmVyd3JpdGVfZG9jCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBzZXR0ZXIoc2VsZiwgZnNldCk6CiAgICAgICAgcmVzdWx0ID0gdHlwZShzZWxmKShzZWxmLmZnZXQsIGZzZXQsIHNlbGYuZmRlbCwgc2VsZi5fX2RvY19fKQogICAgICAgIHJlc3VsdC5vdmVyd3JpdGVfZG9jID0gc2VsZi5vdmVyd3JpdGVfZG9jCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBkZWxldGVyKHNlbGYsIGZkZWwpOgogICAgICAgIHJlc3VsdCA9IHR5cGUoc2VsZikoc2VsZi5mZ2V0LCBzZWxmLmZzZXQsIGZkZWwsIHNlbGYuX19kb2NfXykKICAgICAgICByZXN1bHQub3ZlcndyaXRlX2RvYyA9IHNlbGYub3ZlcndyaXRlX2RvYwogICAgICAgIHJldHVybiByZXN1bHQKCgpjbGFzcyBfR2VuZXJhdG9yV3JhcHBlcjoKICAgICMgVE9ETzogSW1wbGVtZW50IHRoaXMgaW4gQy4KICAgIGRlZiBfX2luaXRfXyhzZWxmLCBnZW4pOgogICAgICAgIHNlbGYuX193cmFwcGVkID0gZ2VuCiAgICAgICAgc2VsZi5fX2lzZ2VuID0gZ2VuLl9fY2xhc3NfXyBpcyBHZW5lcmF0b3JUeXBlCiAgICAgICAgc2VsZi5fX25hbWVfXyA9IGdldGF0dHIoZ2VuLCAnX19uYW1lX18nLCBOb25lKQogICAgICAgIHNlbGYuX19xdWFsbmFtZV9fID0gZ2V0YXR0cihnZW4sICdfX3F1YWxuYW1lX18nLCBOb25lKQogICAgZGVmIHNlbmQoc2VsZiwgdmFsKToKICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuc2VuZCh2YWwpCiAgICBkZWYgdGhyb3coc2VsZiwgdHAsICpyZXN0KToKICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQudGhyb3codHAsICpyZXN0KQogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZC5jbG9zZSgpCiAgICBAcHJvcGVydHkKICAgIGRlZiBnaV9jb2RlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZC5naV9jb2RlCiAgICBAcHJvcGVydHkKICAgIGRlZiBnaV9mcmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuZ2lfZnJhbWUKICAgIEBwcm9wZXJ0eQogICAgZGVmIGdpX3J1bm5pbmcoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkLmdpX3J1bm5pbmcKICAgIEBwcm9wZXJ0eQogICAgZGVmIGdpX3lpZWxkZnJvbShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuZ2lfeWllbGRmcm9tCiAgICBjcl9jb2RlID0gZ2lfY29kZQogICAgY3JfZnJhbWUgPSBnaV9mcmFtZQogICAgY3JfcnVubmluZyA9IGdpX3J1bm5pbmcKICAgIGNyX2F3YWl0ID0gZ2lfeWllbGRmcm9tCiAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5fX3dyYXBwZWQpCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fX2lzZ2VuOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQKICAgICAgICByZXR1cm4gc2VsZgogICAgX19hd2FpdF9fID0gX19pdGVyX18KCmRlZiBjb3JvdXRpbmUoZnVuYyk6CiAgICAiIiJDb252ZXJ0IHJlZ3VsYXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRvIGEgY29yb3V0aW5lLiIiIgoKICAgIGlmIG5vdCBjYWxsYWJsZShmdW5jKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3R5cGVzLmNvcm91dGluZSgpIGV4cGVjdHMgYSBjYWxsYWJsZScpCgogICAgaWYgKGZ1bmMuX19jbGFzc19fIGlzIEZ1bmN0aW9uVHlwZSBhbmQKICAgICAgICBnZXRhdHRyKGZ1bmMsICdfX2NvZGVfXycsIE5vbmUpLl9fY2xhc3NfXyBpcyBDb2RlVHlwZSk6CgogICAgICAgIGNvX2ZsYWdzID0gZnVuYy5fX2NvZGVfXy5jb19mbGFncwoKICAgICAgICAjIENoZWNrIGlmICdmdW5jJyBpcyBhIGNvcm91dGluZSBmdW5jdGlvbi4KICAgICAgICAjICgweDE4MCA9PSBDT19DT1JPVVRJTkUgfCBDT19JVEVSQUJMRV9DT1JPVVRJTkUpCiAgICAgICAgaWYgY29fZmxhZ3MgJiAweDE4MDoKICAgICAgICAgICAgcmV0dXJuIGZ1bmMKCiAgICAgICAgIyBDaGVjayBpZiAnZnVuYycgaXMgYSBnZW5lcmF0b3IgZnVuY3Rpb24uCiAgICAgICAgIyAoMHgyMCA9PSBDT19HRU5FUkFUT1IpCiAgICAgICAgaWYgY29fZmxhZ3MgJiAweDIwOgogICAgICAgICAgICAjIFRPRE86IEltcGxlbWVudCB0aGlzIGluIEMuCiAgICAgICAgICAgIGNvID0gZnVuYy5fX2NvZGVfXwogICAgICAgICAgICAjIDB4MTAwID09IENPX0lURVJBQkxFX0NPUk9VVElORQogICAgICAgICAgICBmdW5jLl9fY29kZV9fID0gY28ucmVwbGFjZShjb19mbGFncz1jby5jb19mbGFncyB8IDB4MTAwKQogICAgICAgICAgICByZXR1cm4gZnVuYwoKICAgICMgVGhlIGZvbGxvd2luZyBjb2RlIGlzIHByaW1hcmlseSB0byBzdXBwb3J0IGZ1bmN0aW9ucyB0aGF0CiAgICAjIHJldHVybiBnZW5lcmF0b3ItbGlrZSBvYmplY3RzIChmb3IgaW5zdGFuY2UgZ2VuZXJhdG9ycwogICAgIyBjb21waWxlZCB3aXRoIEN5dGhvbikuCgogICAgIyBEZWxheSBmdW5jdG9vbHMgYW5kIF9jb2xsZWN0aW9uc19hYmMgaW1wb3J0IGZvciBzcGVlZGluZyB1cCB0eXBlcyBpbXBvcnQuCiAgICBpbXBvcnQgZnVuY3Rvb2xzCiAgICBpbXBvcnQgX2NvbGxlY3Rpb25zX2FiYwogICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQogICAgZGVmIHdyYXBwZWQoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBjb3JvID0gZnVuYygqYXJncywgKiprd2FyZ3MpCiAgICAgICAgaWYgKGNvcm8uX19jbGFzc19fIGlzIENvcm91dGluZVR5cGUgb3IKICAgICAgICAgICAgY29yby5fX2NsYXNzX18gaXMgR2VuZXJhdG9yVHlwZSBhbmQgY29yby5naV9jb2RlLmNvX2ZsYWdzICYgMHgxMDApOgogICAgICAgICAgICAjICdjb3JvJyBpcyBhIG5hdGl2ZSBjb3JvdXRpbmUgb2JqZWN0IG9yIGFuIGl0ZXJhYmxlIGNvcm91dGluZQogICAgICAgICAgICByZXR1cm4gY29ybwogICAgICAgIGlmIChpc2luc3RhbmNlKGNvcm8sIF9jb2xsZWN0aW9uc19hYmMuR2VuZXJhdG9yKSBhbmQKICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoY29ybywgX2NvbGxlY3Rpb25zX2FiYy5Db3JvdXRpbmUpKToKICAgICAgICAgICAgIyAnY29ybycgaXMgZWl0aGVyIGEgcHVyZSBQeXRob24gZ2VuZXJhdG9yIGl0ZXJhdG9yLCBvciBpdAogICAgICAgICAgICAjIGltcGxlbWVudHMgY29sbGVjdGlvbnMuYWJjLkdlbmVyYXRvciAoYW5kIGRvZXMgbm90IGltcGxlbWVudAogICAgICAgICAgICAjIGNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmUpLgogICAgICAgICAgICByZXR1cm4gX0dlbmVyYXRvcldyYXBwZXIoY29ybykKICAgICAgICAjICdjb3JvJyBpcyBlaXRoZXIgYW4gaW5zdGFuY2Ugb2YgY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZSBvcgogICAgICAgICMgc29tZSBvdGhlciBvYmplY3QgLS0gcGFzcyBpdCB0aHJvdWdoLgogICAgICAgIHJldHVybiBjb3JvCgogICAgcmV0dXJuIHdyYXBwZWQKCkdlbmVyaWNBbGlhcyA9IHR5cGUobGlzdFtpbnRdKQpVbmlvblR5cGUgPSB0eXBlKGludCB8IHN0cikKCkVsbGlwc2lzVHlwZSA9IHR5cGUoRWxsaXBzaXMpCk5vbmVUeXBlID0gdHlwZShOb25lKQpOb3RJbXBsZW1lbnRlZFR5cGUgPSB0eXBlKE5vdEltcGxlbWVudGVkKQoKX19hbGxfXyA9IFtuIGZvciBuIGluIGdsb2JhbHMoKSBpZiBuWzoxXSAhPSAnXyddClBLAwQUAAAAAAACIKNWeZ5j1GLJAQBiyQEACQAAAHR5cGluZy5weSIiIgpUaGUgdHlwaW5nIG1vZHVsZTogU3VwcG9ydCBmb3IgZ3JhZHVhbCB0eXBpbmcgYXMgZGVmaW5lZCBieSBQRVAgNDg0LgoKQXQgbGFyZ2Ugc2NhbGUsIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG1vZHVsZSBpcyBmb2xsb3dpbmc6CiogSW1wb3J0cyBhbmQgZXhwb3J0cywgYWxsIHB1YmxpYyBuYW1lcyBzaG91bGQgYmUgZXhwbGljaXRseSBhZGRlZCB0byBfX2FsbF9fLgoqIEludGVybmFsIGhlbHBlciBmdW5jdGlvbnM6IHRoZXNlIHNob3VsZCBuZXZlciBiZSB1c2VkIGluIGNvZGUgb3V0c2lkZSB0aGlzIG1vZHVsZS4KKiBfU3BlY2lhbEZvcm0gYW5kIGl0cyBpbnN0YW5jZXMgKHNwZWNpYWwgZm9ybXMpOgogIEFueSwgTm9SZXR1cm4sIE5ldmVyLCBDbGFzc1ZhciwgVW5pb24sIE9wdGlvbmFsLCBDb25jYXRlbmF0ZSwgVW5wYWNrCiogQ2xhc3NlcyB3aG9zZSBpbnN0YW5jZXMgY2FuIGJlIHR5cGUgYXJndW1lbnRzIGluIGFkZGl0aW9uIHRvIHR5cGVzOgogIEZvcndhcmRSZWYsIFR5cGVWYXIgYW5kIFBhcmFtU3BlYwoqIFRoZSBjb3JlIG9mIGludGVybmFsIGdlbmVyaWNzIEFQSTogX0dlbmVyaWNBbGlhcyBhbmQgX1ZhcmlhZGljR2VuZXJpY0FsaWFzLCB0aGUgbGF0dGVyIGlzCiAgY3VycmVudGx5IG9ubHkgdXNlZCBieSBUdXBsZSBhbmQgQ2FsbGFibGUuIEFsbCBzdWJzY3JpcHRlZCB0eXBlcyBsaWtlIFhbaW50XSwgVW5pb25baW50LCBzdHJdLAogIGV0Yy4sIGFyZSBpbnN0YW5jZXMgb2YgZWl0aGVyIG9mIHRoZXNlIGNsYXNzZXMuCiogVGhlIHB1YmxpYyBjb3VudGVycGFydCBvZiB0aGUgZ2VuZXJpY3MgQVBJIGNvbnNpc3RzIG9mIHR3byBjbGFzc2VzOiBHZW5lcmljIGFuZCBQcm90b2NvbC4KKiBQdWJsaWMgaGVscGVyIGZ1bmN0aW9uczogZ2V0X3R5cGVfaGludHMsIG92ZXJsb2FkLCBjYXN0LCBub190eXBlX2NoZWNrLAogIG5vX3R5cGVfY2hlY2tfZGVjb3JhdG9yLgoqIEdlbmVyaWMgYWxpYXNlcyBmb3IgY29sbGVjdGlvbnMuYWJjIEFCQ3MgYW5kIGZldyBhZGRpdGlvbmFsIHByb3RvY29scy4KKiBTcGVjaWFsIHR5cGVzOiBOZXdUeXBlLCBOYW1lZFR1cGxlLCBUeXBlZERpY3QuCiogV3JhcHBlciBzdWJtb2R1bGVzIGZvciByZSBhbmQgaW8gcmVsYXRlZCB0eXBlcy4KIiIiCgpmcm9tIGFiYyBpbXBvcnQgYWJzdHJhY3RtZXRob2QsIEFCQ01ldGEKaW1wb3J0IGNvbGxlY3Rpb25zCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CmltcG9ydCBjb2xsZWN0aW9ucy5hYmMKaW1wb3J0IGNvbnRleHRsaWIKaW1wb3J0IGZ1bmN0b29scwppbXBvcnQgb3BlcmF0b3IKaW1wb3J0IHJlIGFzIHN0ZGxpYl9yZSAgIyBBdm9pZCBjb25mdXNpb24gd2l0aCB0aGUgcmUgd2UgZXhwb3J0LgppbXBvcnQgc3lzCmltcG9ydCB0eXBlcwppbXBvcnQgd2FybmluZ3MKZnJvbSB0eXBlcyBpbXBvcnQgV3JhcHBlckRlc2NyaXB0b3JUeXBlLCBNZXRob2RXcmFwcGVyVHlwZSwgTWV0aG9kRGVzY3JpcHRvclR5cGUsIEdlbmVyaWNBbGlhcwoKCnRyeToKICAgIGZyb20gX3R5cGluZyBpbXBvcnQgX2lkZnVuYwpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBkZWYgX2lkZnVuYyhfLCB4KToKICAgICAgICByZXR1cm4geAoKIyBQbGVhc2Uga2VlcCBfX2FsbF9fIGFscGhhYmV0aXplZCB3aXRoaW4gZWFjaCBjYXRlZ29yeS4KX19hbGxfXyA9IFsKICAgICMgU3VwZXItc3BlY2lhbCB0eXBpbmcgcHJpbWl0aXZlcy4KICAgICdBbm5vdGF0ZWQnLAogICAgJ0FueScsCiAgICAnQ2FsbGFibGUnLAogICAgJ0NsYXNzVmFyJywKICAgICdDb25jYXRlbmF0ZScsCiAgICAnRmluYWwnLAogICAgJ0ZvcndhcmRSZWYnLAogICAgJ0dlbmVyaWMnLAogICAgJ0xpdGVyYWwnLAogICAgJ09wdGlvbmFsJywKICAgICdQYXJhbVNwZWMnLAogICAgJ1Byb3RvY29sJywKICAgICdUdXBsZScsCiAgICAnVHlwZScsCiAgICAnVHlwZVZhcicsCiAgICAnVHlwZVZhclR1cGxlJywKICAgICdVbmlvbicsCgogICAgIyBBQkNzIChmcm9tIGNvbGxlY3Rpb25zLmFiYykuCiAgICAnQWJzdHJhY3RTZXQnLCAgIyBjb2xsZWN0aW9ucy5hYmMuU2V0LgogICAgJ0J5dGVTdHJpbmcnLAogICAgJ0NvbnRhaW5lcicsCiAgICAnQ29udGV4dE1hbmFnZXInLAogICAgJ0hhc2hhYmxlJywKICAgICdJdGVtc1ZpZXcnLAogICAgJ0l0ZXJhYmxlJywKICAgICdJdGVyYXRvcicsCiAgICAnS2V5c1ZpZXcnLAogICAgJ01hcHBpbmcnLAogICAgJ01hcHBpbmdWaWV3JywKICAgICdNdXRhYmxlTWFwcGluZycsCiAgICAnTXV0YWJsZVNlcXVlbmNlJywKICAgICdNdXRhYmxlU2V0JywKICAgICdTZXF1ZW5jZScsCiAgICAnU2l6ZWQnLAogICAgJ1ZhbHVlc1ZpZXcnLAogICAgJ0F3YWl0YWJsZScsCiAgICAnQXN5bmNJdGVyYXRvcicsCiAgICAnQXN5bmNJdGVyYWJsZScsCiAgICAnQ29yb3V0aW5lJywKICAgICdDb2xsZWN0aW9uJywKICAgICdBc3luY0dlbmVyYXRvcicsCiAgICAnQXN5bmNDb250ZXh0TWFuYWdlcicsCgogICAgIyBTdHJ1Y3R1cmFsIGNoZWNrcywgYS5rLmEuIHByb3RvY29scy4KICAgICdSZXZlcnNpYmxlJywKICAgICdTdXBwb3J0c0FicycsCiAgICAnU3VwcG9ydHNCeXRlcycsCiAgICAnU3VwcG9ydHNDb21wbGV4JywKICAgICdTdXBwb3J0c0Zsb2F0JywKICAgICdTdXBwb3J0c0luZGV4JywKICAgICdTdXBwb3J0c0ludCcsCiAgICAnU3VwcG9ydHNSb3VuZCcsCgogICAgIyBDb25jcmV0ZSBjb2xsZWN0aW9uIHR5cGVzLgogICAgJ0NoYWluTWFwJywKICAgICdDb3VudGVyJywKICAgICdEZXF1ZScsCiAgICAnRGljdCcsCiAgICAnRGVmYXVsdERpY3QnLAogICAgJ0xpc3QnLAogICAgJ09yZGVyZWREaWN0JywKICAgICdTZXQnLAogICAgJ0Zyb3plblNldCcsCiAgICAnTmFtZWRUdXBsZScsICAjIE5vdCByZWFsbHkgYSB0eXBlLgogICAgJ1R5cGVkRGljdCcsICAjIE5vdCByZWFsbHkgYSB0eXBlLgogICAgJ0dlbmVyYXRvcicsCgogICAgIyBPdGhlciBjb25jcmV0ZSB0eXBlcy4KICAgICdCaW5hcnlJTycsCiAgICAnSU8nLAogICAgJ01hdGNoJywKICAgICdQYXR0ZXJuJywKICAgICdUZXh0SU8nLAoKICAgICMgT25lLW9mZiB0aGluZ3MuCiAgICAnQW55U3RyJywKICAgICdhc3NlcnRfdHlwZScsCiAgICAnYXNzZXJ0X25ldmVyJywKICAgICdjYXN0JywKICAgICdjbGVhcl9vdmVybG9hZHMnLAogICAgJ2RhdGFjbGFzc190cmFuc2Zvcm0nLAogICAgJ2ZpbmFsJywKICAgICdnZXRfYXJncycsCiAgICAnZ2V0X29yaWdpbicsCiAgICAnZ2V0X292ZXJsb2FkcycsCiAgICAnZ2V0X3R5cGVfaGludHMnLAogICAgJ2lzX3R5cGVkZGljdCcsCiAgICAnTGl0ZXJhbFN0cmluZycsCiAgICAnTmV2ZXInLAogICAgJ05ld1R5cGUnLAogICAgJ25vX3R5cGVfY2hlY2snLAogICAgJ25vX3R5cGVfY2hlY2tfZGVjb3JhdG9yJywKICAgICdOb1JldHVybicsCiAgICAnTm90UmVxdWlyZWQnLAogICAgJ292ZXJsb2FkJywKICAgICdQYXJhbVNwZWNBcmdzJywKICAgICdQYXJhbVNwZWNLd2FyZ3MnLAogICAgJ1JlcXVpcmVkJywKICAgICdyZXZlYWxfdHlwZScsCiAgICAncnVudGltZV9jaGVja2FibGUnLAogICAgJ1NlbGYnLAogICAgJ1RleHQnLAogICAgJ1RZUEVfQ0hFQ0tJTkcnLAogICAgJ1R5cGVBbGlhcycsCiAgICAnVHlwZUd1YXJkJywKICAgICdVbnBhY2snLApdCgojIFRoZSBwc2V1ZG8tc3VibW9kdWxlcyAncmUnIGFuZCAnaW8nIGFyZSBwYXJ0IG9mIHRoZSBwdWJsaWMKIyBuYW1lc3BhY2UsIGJ1dCBleGNsdWRlZCBmcm9tIF9fYWxsX18gYmVjYXVzZSB0aGV5IG1pZ2h0IHN0b21wIG9uCiMgbGVnaXRpbWF0ZSBpbXBvcnRzIG9mIHRob3NlIG1vZHVsZXMuCgoKZGVmIF90eXBlX2NvbnZlcnQoYXJnLCBtb2R1bGU9Tm9uZSwgKiwgYWxsb3dfc3BlY2lhbF9mb3Jtcz1GYWxzZSk6CiAgICAiIiJGb3IgY29udmVydGluZyBOb25lIHRvIHR5cGUoTm9uZSksIGFuZCBzdHJpbmdzIHRvIEZvcndhcmRSZWYuIiIiCiAgICBpZiBhcmcgaXMgTm9uZToKICAgICAgICByZXR1cm4gdHlwZShOb25lKQogICAgaWYgaXNpbnN0YW5jZShhcmcsIHN0cik6CiAgICAgICAgcmV0dXJuIEZvcndhcmRSZWYoYXJnLCBtb2R1bGU9bW9kdWxlLCBpc19jbGFzcz1hbGxvd19zcGVjaWFsX2Zvcm1zKQogICAgcmV0dXJuIGFyZwoKCmRlZiBfdHlwZV9jaGVjayhhcmcsIG1zZywgaXNfYXJndW1lbnQ9VHJ1ZSwgbW9kdWxlPU5vbmUsICosIGFsbG93X3NwZWNpYWxfZm9ybXM9RmFsc2UpOgogICAgIiIiQ2hlY2sgdGhhdCB0aGUgYXJndW1lbnQgaXMgYSB0eXBlLCBhbmQgcmV0dXJuIGl0IChpbnRlcm5hbCBoZWxwZXIpLgoKICAgIEFzIGEgc3BlY2lhbCBjYXNlLCBhY2NlcHQgTm9uZSBhbmQgcmV0dXJuIHR5cGUoTm9uZSkgaW5zdGVhZC4gQWxzbyB3cmFwIHN0cmluZ3MKICAgIGludG8gRm9yd2FyZFJlZiBpbnN0YW5jZXMuIENvbnNpZGVyIHNldmVyYWwgY29ybmVyIGNhc2VzLCBmb3IgZXhhbXBsZSBwbGFpbgogICAgc3BlY2lhbCBmb3JtcyBsaWtlIFVuaW9uIGFyZSBub3QgdmFsaWQsIHdoaWxlIFVuaW9uW2ludCwgc3RyXSBpcyBPSywgZXRjLgogICAgVGhlIG1zZyBhcmd1bWVudCBpcyBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UsIGUuZzo6CgogICAgICAgICJVbmlvblthcmcsIC4uLl06IGFyZyBzaG91bGQgYmUgYSB0eXBlLiIKCiAgICBXZSBhcHBlbmQgdGhlIHJlcHIoKSBvZiB0aGUgYWN0dWFsIHZhbHVlICh0cnVuY2F0ZWQgdG8gMTAwIGNoYXJzKS4KICAgICIiIgogICAgaW52YWxpZF9nZW5lcmljX2Zvcm1zID0gKEdlbmVyaWMsIFByb3RvY29sKQogICAgaWYgbm90IGFsbG93X3NwZWNpYWxfZm9ybXM6CiAgICAgICAgaW52YWxpZF9nZW5lcmljX2Zvcm1zICs9IChDbGFzc1ZhciwpCiAgICAgICAgaWYgaXNfYXJndW1lbnQ6CiAgICAgICAgICAgIGludmFsaWRfZ2VuZXJpY19mb3JtcyArPSAoRmluYWwsKQoKICAgIGFyZyA9IF90eXBlX2NvbnZlcnQoYXJnLCBtb2R1bGU9bW9kdWxlLCBhbGxvd19zcGVjaWFsX2Zvcm1zPWFsbG93X3NwZWNpYWxfZm9ybXMpCiAgICBpZiAoaXNpbnN0YW5jZShhcmcsIF9HZW5lcmljQWxpYXMpIGFuZAogICAgICAgICAgICBhcmcuX19vcmlnaW5fXyBpbiBpbnZhbGlkX2dlbmVyaWNfZm9ybXMpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmInthcmd9IGlzIG5vdCB2YWxpZCBhcyB0eXBlIGFyZ3VtZW50IikKICAgIGlmIGFyZyBpbiAoQW55LCBMaXRlcmFsU3RyaW5nLCBOb1JldHVybiwgTmV2ZXIsIFNlbGYsIFR5cGVBbGlhcyk6CiAgICAgICAgcmV0dXJuIGFyZwogICAgaWYgYWxsb3dfc3BlY2lhbF9mb3JtcyBhbmQgYXJnIGluIChDbGFzc1ZhciwgRmluYWwpOgogICAgICAgIHJldHVybiBhcmcKICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBfU3BlY2lhbEZvcm0pIG9yIGFyZyBpbiAoR2VuZXJpYywgUHJvdG9jb2wpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIlBsYWluIHthcmd9IGlzIG5vdCB2YWxpZCBhcyB0eXBlIGFyZ3VtZW50IikKICAgIGlmIHR5cGUoYXJnKSBpcyB0dXBsZToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJ7bXNnfSBHb3Qge2FyZyFyOi4xMDB9LiIpCiAgICByZXR1cm4gYXJnCgoKZGVmIF9pc19wYXJhbV9leHByKGFyZyk6CiAgICByZXR1cm4gYXJnIGlzIC4uLiBvciBpc2luc3RhbmNlKGFyZywKICAgICAgICAgICAgKHR1cGxlLCBsaXN0LCBQYXJhbVNwZWMsIF9Db25jYXRlbmF0ZUdlbmVyaWNBbGlhcykpCgoKZGVmIF9zaG91bGRfdW5mbGF0dGVuX2NhbGxhYmxlX2FyZ3ModHlwLCBhcmdzKToKICAgICIiIkludGVybmFsIGhlbHBlciBmb3IgbXVuZ2luZyBjb2xsZWN0aW9ucy5hYmMuQ2FsbGFibGUncyBfX2FyZ3NfXy4KCiAgICBUaGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGZvciBhIENhbGxhYmxlJ3MgX19hcmdzX18gZmxhdHRlbnMgdGhlCiAgICBhcmd1bWVudCB0eXBlcywgc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlNDIxOTUuIEZvciBleGFtcGxlOgoKICAgICAgICBjb2xsZWN0aW9ucy5hYmMuQ2FsbGFibGVbW2ludCwgaW50XSwgc3RyXS5fX2FyZ3NfXyA9PSAoaW50LCBpbnQsIHN0cikKICAgICAgICBjb2xsZWN0aW9ucy5hYmMuQ2FsbGFibGVbUGFyYW1TcGVjLCBzdHJdLl9fYXJnc19fID09IChQYXJhbVNwZWMsIHN0cikKCiAgICBBcyBhIHJlc3VsdCwgaWYgd2UgbmVlZCB0byByZWNvbnN0cnVjdCB0aGUgQ2FsbGFibGUgZnJvbSBpdHMgX19hcmdzX18sCiAgICB3ZSBuZWVkIHRvIHVuZmxhdHRlbiBpdC4KICAgICIiIgogICAgcmV0dXJuICgKICAgICAgICB0eXAuX19vcmlnaW5fXyBpcyBjb2xsZWN0aW9ucy5hYmMuQ2FsbGFibGUKICAgICAgICBhbmQgbm90IChsZW4oYXJncykgPT0gMiBhbmQgX2lzX3BhcmFtX2V4cHIoYXJnc1swXSkpCiAgICApCgoKZGVmIF90eXBlX3JlcHIob2JqKToKICAgICIiIlJldHVybiB0aGUgcmVwcigpIG9mIGFuIG9iamVjdCwgc3BlY2lhbC1jYXNpbmcgdHlwZXMgKGludGVybmFsIGhlbHBlcikuCgogICAgSWYgb2JqIGlzIGEgdHlwZSwgd2UgcmV0dXJuIGEgc2hvcnRlciB2ZXJzaW9uIHRoYW4gdGhlIGRlZmF1bHQKICAgIHR5cGUuX19yZXByX18sIGJhc2VkIG9uIHRoZSBtb2R1bGUgYW5kIHF1YWxpZmllZCBuYW1lLCB3aGljaCBpcwogICAgdHlwaWNhbGx5IGVub3VnaCB0byB1bmlxdWVseSBpZGVudGlmeSBhIHR5cGUuICBGb3IgZXZlcnl0aGluZwogICAgZWxzZSwgd2UgZmFsbCBiYWNrIG9uIHJlcHIob2JqKS4KICAgICIiIgogICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLkdlbmVyaWNBbGlhcyk6CiAgICAgICAgcmV0dXJuIHJlcHIob2JqKQogICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgogICAgICAgIGlmIG9iai5fX21vZHVsZV9fID09ICdidWlsdGlucyc6CiAgICAgICAgICAgIHJldHVybiBvYmouX19xdWFsbmFtZV9fCiAgICAgICAgcmV0dXJuIGYne29iai5fX21vZHVsZV9ffS57b2JqLl9fcXVhbG5hbWVfX30nCiAgICBpZiBvYmogaXMgLi4uOgogICAgICAgIHJldHVybignLi4uJykKICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5GdW5jdGlvblR5cGUpOgogICAgICAgIHJldHVybiBvYmouX19uYW1lX18KICAgIHJldHVybiByZXByKG9iaikKCgpkZWYgX2NvbGxlY3RfcGFyYW1ldGVycyhhcmdzKToKICAgICIiIkNvbGxlY3QgYWxsIHR5cGUgdmFyaWFibGVzIGFuZCBwYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbnMgaW4gYXJncwogICAgaW4gb3JkZXIgb2YgZmlyc3QgYXBwZWFyYW5jZSAobGV4aWNvZ3JhcGhpYyBvcmRlcikuIEZvciBleGFtcGxlOjoKCiAgICAgICAgX2NvbGxlY3RfcGFyYW1ldGVycygoVCwgQ2FsbGFibGVbUCwgVF0pKSA9PSAoVCwgUCkKICAgICIiIgogICAgcGFyYW1ldGVycyA9IFtdCiAgICBmb3IgdCBpbiBhcmdzOgogICAgICAgICMgV2UgZG9uJ3Qgd2FudCBfX3BhcmFtZXRlcnNfXyBkZXNjcmlwdG9yIG9mIGEgYmFyZSBQeXRob24gY2xhc3MuCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0LCB0eXBlKToKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBoYXNhdHRyKHQsICdfX3R5cGluZ19zdWJzdF9fJyk6CiAgICAgICAgICAgIGlmIHQgbm90IGluIHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZCh0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZvciB4IGluIGdldGF0dHIodCwgJ19fcGFyYW1ldGVyc19fJywgKCkpOgogICAgICAgICAgICAgICAgaWYgeCBub3QgaW4gcGFyYW1ldGVyczoKICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZCh4KQogICAgcmV0dXJuIHR1cGxlKHBhcmFtZXRlcnMpCgoKZGVmIF9jaGVja19nZW5lcmljKGNscywgcGFyYW1ldGVycywgZWxlbik6CiAgICAiIiJDaGVjayBjb3JyZWN0IGNvdW50IGZvciBwYXJhbWV0ZXJzIG9mIGEgZ2VuZXJpYyBjbHMgKGludGVybmFsIGhlbHBlcikuCiAgICBUaGlzIGdpdmVzIGEgbmljZSBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgY291bnQgbWlzbWF0Y2guCiAgICAiIiIKICAgIGlmIG5vdCBlbGVuOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIntjbHN9IGlzIG5vdCBhIGdlbmVyaWMgY2xhc3MiKQogICAgYWxlbiA9IGxlbihwYXJhbWV0ZXJzKQogICAgaWYgYWxlbiAhPSBlbGVuOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIlRvbyB7J21hbnknIGlmIGFsZW4gPiBlbGVuIGVsc2UgJ2Zldyd9IGFyZ3VtZW50cyBmb3Ige2Nsc307IgogICAgICAgICAgICAgICAgICAgICAgICBmIiBhY3R1YWwge2FsZW59LCBleHBlY3RlZCB7ZWxlbn0iKQoKZGVmIF91bnBhY2tfYXJncyhhcmdzKToKICAgIG5ld2FyZ3MgPSBbXQogICAgZm9yIGFyZyBpbiBhcmdzOgogICAgICAgIHN1YmFyZ3MgPSBnZXRhdHRyKGFyZywgJ19fdHlwaW5nX3VucGFja2VkX3R1cGxlX2FyZ3NfXycsIE5vbmUpCiAgICAgICAgaWYgc3ViYXJncyBpcyBub3QgTm9uZSBhbmQgbm90IChzdWJhcmdzIGFuZCBzdWJhcmdzWy0xXSBpcyAuLi4pOgogICAgICAgICAgICBuZXdhcmdzLmV4dGVuZChzdWJhcmdzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5ld2FyZ3MuYXBwZW5kKGFyZykKICAgIHJldHVybiBuZXdhcmdzCgpkZWYgX2RlZHVwbGljYXRlKHBhcmFtcyk6CiAgICAjIFdlZWQgb3V0IHN0cmljdCBkdXBsaWNhdGVzLCBwcmVzZXJ2aW5nIHRoZSBmaXJzdCBvZiBlYWNoIG9jY3VycmVuY2UuCiAgICBhbGxfcGFyYW1zID0gc2V0KHBhcmFtcykKICAgIGlmIGxlbihhbGxfcGFyYW1zKSA8IGxlbihwYXJhbXMpOgogICAgICAgIG5ld19wYXJhbXMgPSBbXQogICAgICAgIGZvciB0IGluIHBhcmFtczoKICAgICAgICAgICAgaWYgdCBpbiBhbGxfcGFyYW1zOgogICAgICAgICAgICAgICAgbmV3X3BhcmFtcy5hcHBlbmQodCkKICAgICAgICAgICAgICAgIGFsbF9wYXJhbXMucmVtb3ZlKHQpCiAgICAgICAgcGFyYW1zID0gbmV3X3BhcmFtcwogICAgICAgIGFzc2VydCBub3QgYWxsX3BhcmFtcywgYWxsX3BhcmFtcwogICAgcmV0dXJuIHBhcmFtcwoKCmRlZiBfcmVtb3ZlX2R1cHNfZmxhdHRlbihwYXJhbWV0ZXJzKToKICAgICIiIkFuIGludGVybmFsIGhlbHBlciBmb3IgVW5pb24gY3JlYXRpb24gYW5kIHN1YnN0aXR1dGlvbjogZmxhdHRlbiBVbmlvbnMKICAgIGFtb25nIHBhcmFtZXRlcnMsIHRoZW4gcmVtb3ZlIGR1cGxpY2F0ZXMuCiAgICAiIiIKICAgICMgRmxhdHRlbiBvdXQgVW5pb25bVW5pb25bLi4uXSwgLi4uXS4KICAgIHBhcmFtcyA9IFtdCiAgICBmb3IgcCBpbiBwYXJhbWV0ZXJzOgogICAgICAgIGlmIGlzaW5zdGFuY2UocCwgKF9VbmlvbkdlbmVyaWNBbGlhcywgdHlwZXMuVW5pb25UeXBlKSk6CiAgICAgICAgICAgIHBhcmFtcy5leHRlbmQocC5fX2FyZ3NfXykKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXJhbXMuYXBwZW5kKHApCgogICAgcmV0dXJuIHR1cGxlKF9kZWR1cGxpY2F0ZShwYXJhbXMpKQoKCmRlZiBfZmxhdHRlbl9saXRlcmFsX3BhcmFtcyhwYXJhbWV0ZXJzKToKICAgICIiIkFuIGludGVybmFsIGhlbHBlciBmb3IgTGl0ZXJhbCBjcmVhdGlvbjogZmxhdHRlbiBMaXRlcmFscyBhbW9uZyBwYXJhbWV0ZXJzIiIiCiAgICBwYXJhbXMgPSBbXQogICAgZm9yIHAgaW4gcGFyYW1ldGVyczoKICAgICAgICBpZiBpc2luc3RhbmNlKHAsIF9MaXRlcmFsR2VuZXJpY0FsaWFzKToKICAgICAgICAgICAgcGFyYW1zLmV4dGVuZChwLl9fYXJnc19fKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQocCkKICAgIHJldHVybiB0dXBsZShwYXJhbXMpCgoKX2NsZWFudXBzID0gW10KCgpkZWYgX3RwX2NhY2hlKGZ1bmM9Tm9uZSwgLywgKiwgdHlwZWQ9RmFsc2UpOgogICAgIiIiSW50ZXJuYWwgd3JhcHBlciBjYWNoaW5nIF9fZ2V0aXRlbV9fIG9mIGdlbmVyaWMgdHlwZXMgd2l0aCBhIGZhbGxiYWNrIHRvCiAgICBvcmlnaW5hbCBmdW5jdGlvbiBmb3Igbm9uLWhhc2hhYmxlIGFyZ3VtZW50cy4KICAgICIiIgogICAgZGVmIGRlY29yYXRvcihmdW5jKToKICAgICAgICBjYWNoZWQgPSBmdW5jdG9vbHMubHJ1X2NhY2hlKHR5cGVkPXR5cGVkKShmdW5jKQogICAgICAgIF9jbGVhbnVwcy5hcHBlbmQoY2FjaGVkLmNhY2hlX2NsZWFyKQoKICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCiAgICAgICAgZGVmIGlubmVyKCphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzICAjIEFsbCByZWFsIGVycm9ycyAobm90IHVuaGFzaGFibGUgYXJncykgYXJlIHJhaXNlZCBiZWxvdy4KICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dkcykKICAgICAgICByZXR1cm4gaW5uZXIKCiAgICBpZiBmdW5jIGlzIG5vdCBOb25lOgogICAgICAgIHJldHVybiBkZWNvcmF0b3IoZnVuYykKCiAgICByZXR1cm4gZGVjb3JhdG9yCgpkZWYgX2V2YWxfdHlwZSh0LCBnbG9iYWxucywgbG9jYWxucywgcmVjdXJzaXZlX2d1YXJkPWZyb3plbnNldCgpKToKICAgICIiIkV2YWx1YXRlIGFsbCBmb3J3YXJkIHJlZmVyZW5jZXMgaW4gdGhlIGdpdmVuIHR5cGUgdC4KICAgIEZvciB1c2Ugb2YgZ2xvYmFsbnMgYW5kIGxvY2FsbnMgc2VlIHRoZSBkb2NzdHJpbmcgZm9yIGdldF90eXBlX2hpbnRzKCkuCiAgICByZWN1cnNpdmVfZ3VhcmQgaXMgdXNlZCB0byBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiB3aXRoIGEgcmVjdXJzaXZlCiAgICBGb3J3YXJkUmVmLgogICAgIiIiCiAgICBpZiBpc2luc3RhbmNlKHQsIEZvcndhcmRSZWYpOgogICAgICAgIHJldHVybiB0Ll9ldmFsdWF0ZShnbG9iYWxucywgbG9jYWxucywgcmVjdXJzaXZlX2d1YXJkKQogICAgaWYgaXNpbnN0YW5jZSh0LCAoX0dlbmVyaWNBbGlhcywgR2VuZXJpY0FsaWFzLCB0eXBlcy5VbmlvblR5cGUpKToKICAgICAgICBpZiBpc2luc3RhbmNlKHQsIEdlbmVyaWNBbGlhcyk6CiAgICAgICAgICAgIGFyZ3MgPSB0dXBsZSgKICAgICAgICAgICAgICAgIEZvcndhcmRSZWYoYXJnKSBpZiBpc2luc3RhbmNlKGFyZywgc3RyKSBlbHNlIGFyZwogICAgICAgICAgICAgICAgZm9yIGFyZyBpbiB0Ll9fYXJnc19fCiAgICAgICAgICAgICkKICAgICAgICAgICAgaXNfdW5wYWNrZWQgPSB0Ll9fdW5wYWNrZWRfXwogICAgICAgICAgICBpZiBfc2hvdWxkX3VuZmxhdHRlbl9jYWxsYWJsZV9hcmdzKHQsIGFyZ3MpOgogICAgICAgICAgICAgICAgdCA9IHQuX19vcmlnaW5fX1soYXJnc1s6LTFdLCBhcmdzWy0xXSldCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0ID0gdC5fX29yaWdpbl9fW2FyZ3NdCiAgICAgICAgICAgIGlmIGlzX3VucGFja2VkOgogICAgICAgICAgICAgICAgdCA9IFVucGFja1t0XQogICAgICAgIGV2X2FyZ3MgPSB0dXBsZShfZXZhbF90eXBlKGEsIGdsb2JhbG5zLCBsb2NhbG5zLCByZWN1cnNpdmVfZ3VhcmQpIGZvciBhIGluIHQuX19hcmdzX18pCiAgICAgICAgaWYgZXZfYXJncyA9PSB0Ll9fYXJnc19fOgogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIGlmIGlzaW5zdGFuY2UodCwgR2VuZXJpY0FsaWFzKToKICAgICAgICAgICAgcmV0dXJuIEdlbmVyaWNBbGlhcyh0Ll9fb3JpZ2luX18sIGV2X2FyZ3MpCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0LCB0eXBlcy5VbmlvblR5cGUpOgogICAgICAgICAgICByZXR1cm4gZnVuY3Rvb2xzLnJlZHVjZShvcGVyYXRvci5vcl8sIGV2X2FyZ3MpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHQuY29weV93aXRoKGV2X2FyZ3MpCiAgICByZXR1cm4gdAoKCmNsYXNzIF9GaW5hbDoKICAgICIiIk1peGluIHRvIHByb2hpYml0IHN1YmNsYXNzaW5nIiIiCgogICAgX19zbG90c19fID0gKCdfX3dlYWtyZWZfXycsKQoKICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIC8sICphcmdzLCAqKmt3ZHMpOgogICAgICAgIGlmICdfcm9vdCcgbm90IGluIGt3ZHM6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IHN1YmNsYXNzIHNwZWNpYWwgdHlwaW5nIGNsYXNzZXMiKQoKY2xhc3MgX0ltbXV0YWJsZToKICAgICIiIk1peGluIHRvIGluZGljYXRlIHRoYXQgb2JqZWN0IHNob3VsZCBub3QgYmUgY29waWVkLiIiIgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgX19jb3B5X18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19kZWVwY29weV9fKHNlbGYsIG1lbW8pOgogICAgICAgIHJldHVybiBzZWxmCgoKY2xhc3MgX05vdEl0ZXJhYmxlOgogICAgIiIiTWl4aW4gdG8gcHJldmVudCBpdGVyYXRpb24sIHdpdGhvdXQgYmVpbmcgY29tcGF0aWJsZSB3aXRoIEl0ZXJhYmxlLgoKICAgIFRoYXQgaXMsIHdlIGNvdWxkIGRvOgogICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmFpc2UgVHlwZUVycm9yKCkKICAgIEJ1dCB0aGlzIHdvdWxkIG1ha2UgdXNlcnMgb2YgdGhpcyBtaXhpbiBkdWNrIHR5cGUtY29tcGF0aWJsZSB3aXRoCiAgICBjb2xsZWN0aW9ucy5hYmMuSXRlcmFibGUgLSBpc2luc3RhbmNlKGZvbywgSXRlcmFibGUpIHdvdWxkIGJlIFRydWUuCgogICAgTHVja2lseSwgd2UgY2FuIGluc3RlYWQgcHJldmVudCBpdGVyYXRpb24gYnkgc2V0dGluZyBfX2l0ZXJfXyB0byBOb25lLCB3aGljaAogICAgaXMgdHJlYXRlZCBzcGVjaWFsbHkuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoKQogICAgX19pdGVyX18gPSBOb25lCgoKIyBJbnRlcm5hbCBpbmRpY2F0b3Igb2Ygc3BlY2lhbCB0eXBpbmcgY29uc3RydWN0cy4KIyBTZWUgX19kb2NfXyBpbnN0YW5jZSBhdHRyaWJ1dGUgZm9yIHNwZWNpZmljIGRvY3MuCmNsYXNzIF9TcGVjaWFsRm9ybShfRmluYWwsIF9Ob3RJdGVyYWJsZSwgX3Jvb3Q9VHJ1ZSk6CiAgICBfX3Nsb3RzX18gPSAoJ19uYW1lJywgJ19fZG9jX18nLCAnX2dldGl0ZW0nKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBnZXRpdGVtKToKICAgICAgICBzZWxmLl9nZXRpdGVtID0gZ2V0aXRlbQogICAgICAgIHNlbGYuX25hbWUgPSBnZXRpdGVtLl9fbmFtZV9fCiAgICAgICAgc2VsZi5fX2RvY19fID0gZ2V0aXRlbS5fX2RvY19fCgogICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGl0ZW0pOgogICAgICAgIGlmIGl0ZW0gaW4geydfX25hbWVfXycsICdfX3F1YWxuYW1lX18nfToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKCiAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoaXRlbSkKCiAgICBkZWYgX19tcm9fZW50cmllc19fKHNlbGYsIGJhc2VzKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJDYW5ub3Qgc3ViY2xhc3Mge3NlbGYhcn0iKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJ3R5cGluZy4nICsgc2VsZi5fbmFtZQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uYW1lCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIkNhbm5vdCBpbnN0YW50aWF0ZSB7c2VsZiFyfSIpCgogICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIFVuaW9uW3NlbGYsIG90aGVyXQoKICAgIGRlZiBfX3Jvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gVW5pb25bb3RoZXIsIHNlbGZdCgogICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIG9iaik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYie3NlbGZ9IGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpIikKCiAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJ7c2VsZn0gY2Fubm90IGJlIHVzZWQgd2l0aCBpc3N1YmNsYXNzKCkiKQoKICAgIEBfdHBfY2FjaGUKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwYXJhbWV0ZXJzKToKICAgICAgICByZXR1cm4gc2VsZi5fZ2V0aXRlbShzZWxmLCBwYXJhbWV0ZXJzKQoKCmNsYXNzIF9MaXRlcmFsU3BlY2lhbEZvcm0oX1NwZWNpYWxGb3JtLCBfcm9vdD1UcnVlKToKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwYXJhbWV0ZXJzKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbWV0ZXJzLCB0dXBsZSk6CiAgICAgICAgICAgIHBhcmFtZXRlcnMgPSAocGFyYW1ldGVycywpCiAgICAgICAgcmV0dXJuIHNlbGYuX2dldGl0ZW0oc2VsZiwgKnBhcmFtZXRlcnMpCgoKY2xhc3MgX0FueU1ldGEodHlwZSk6CiAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKICAgICAgICBpZiBzZWxmIGlzIEFueToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eXBpbmcuQW55IGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpIikKICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2luc3RhbmNlY2hlY2tfXyhvYmopCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYgaXMgQW55OgogICAgICAgICAgICByZXR1cm4gInR5cGluZy5BbnkiCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19yZXByX18oKSAgIyByZXNwZWN0IHRvIHN1YmNsYXNzZXMKCgpjbGFzcyBBbnkobWV0YWNsYXNzPV9BbnlNZXRhKToKICAgICIiIlNwZWNpYWwgdHlwZSBpbmRpY2F0aW5nIGFuIHVuY29uc3RyYWluZWQgdHlwZS4KCiAgICAtIEFueSBpcyBjb21wYXRpYmxlIHdpdGggZXZlcnkgdHlwZS4KICAgIC0gQW55IGFzc3VtZWQgdG8gaGF2ZSBhbGwgbWV0aG9kcy4KICAgIC0gQWxsIHZhbHVlcyBhc3N1bWVkIHRvIGJlIGluc3RhbmNlcyBvZiBBbnkuCgogICAgTm90ZSB0aGF0IGFsbCB0aGUgYWJvdmUgc3RhdGVtZW50cyBhcmUgdHJ1ZSBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mCiAgICBzdGF0aWMgdHlwZSBjaGVja2Vycy4gQXQgcnVudGltZSwgQW55IHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIGluc3RhbmNlCiAgICBjaGVja3MuCiAgICAiIiIKICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBjbHMgaXMgQW55OgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkFueSBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIikKICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgKmFyZ3MsICoqa3dhcmdzKQoKCkBfU3BlY2lhbEZvcm0KZGVmIE5vUmV0dXJuKHNlbGYsIHBhcmFtZXRlcnMpOgogICAgIiIiU3BlY2lhbCB0eXBlIGluZGljYXRpbmcgZnVuY3Rpb25zIHRoYXQgbmV2ZXIgcmV0dXJuLgogICAgRXhhbXBsZTo6CgogICAgICBmcm9tIHR5cGluZyBpbXBvcnQgTm9SZXR1cm4KCiAgICAgIGRlZiBzdG9wKCkgLT4gTm9SZXR1cm46CiAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ25vIHdheScpCgogICAgTm9SZXR1cm4gY2FuIGFsc28gYmUgdXNlZCBhcyBhIGJvdHRvbSB0eXBlLCBhIHR5cGUgdGhhdAogICAgaGFzIG5vIHZhbHVlcy4gU3RhcnRpbmcgaW4gUHl0aG9uIDMuMTEsIHRoZSBOZXZlciB0eXBlIHNob3VsZAogICAgYmUgdXNlZCBmb3IgdGhpcyBjb25jZXB0IGluc3RlYWQuIFR5cGUgY2hlY2tlcnMgc2hvdWxkIHRyZWF0IHRoZSB0d28KICAgIGVxdWl2YWxlbnRseS4KCiAgICAiIiIKICAgIHJhaXNlIFR5cGVFcnJvcihmIntzZWxmfSBpcyBub3Qgc3Vic2NyaXB0YWJsZSIpCgojIFRoaXMgaXMgc2VtYW50aWNhbGx5IGlkZW50aWNhbCB0byBOb1JldHVybiwgYnV0IGl0IGlzIGltcGxlbWVudGVkCiMgc2VwYXJhdGVseSBzbyB0aGF0IHR5cGUgY2hlY2tlcnMgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3bwojIGlmIHRoZXkgd2FudC4KQF9TcGVjaWFsRm9ybQpkZWYgTmV2ZXIoc2VsZiwgcGFyYW1ldGVycyk6CiAgICAiIiJUaGUgYm90dG9tIHR5cGUsIGEgdHlwZSB0aGF0IGhhcyBubyBtZW1iZXJzLgoKICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGEgZnVuY3Rpb24gdGhhdCBzaG91bGQgbmV2ZXIgYmUKICAgIGNhbGxlZCwgb3IgYSBmdW5jdGlvbiB0aGF0IG5ldmVyIHJldHVybnM6OgoKICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgTmV2ZXIKCiAgICAgICAgZGVmIG5ldmVyX2NhbGxfbWUoYXJnOiBOZXZlcikgLT4gTm9uZToKICAgICAgICAgICAgcGFzcwoKICAgICAgICBkZWYgaW50X29yX3N0cihhcmc6IGludCB8IHN0cikgLT4gTm9uZToKICAgICAgICAgICAgbmV2ZXJfY2FsbF9tZShhcmcpICAjIHR5cGUgY2hlY2tlciBlcnJvcgogICAgICAgICAgICBtYXRjaCBhcmc6CiAgICAgICAgICAgICAgICBjYXNlIGludCgpOgogICAgICAgICAgICAgICAgICAgIHByaW50KCJJdCdzIGFuIGludCIpCiAgICAgICAgICAgICAgICBjYXNlIHN0cigpOgogICAgICAgICAgICAgICAgICAgIHByaW50KCJJdCdzIGEgc3RyIikKICAgICAgICAgICAgICAgIGNhc2UgXzoKICAgICAgICAgICAgICAgICAgICBuZXZlcl9jYWxsX21lKGFyZykgICMgb2ssIGFyZyBpcyBvZiB0eXBlIE5ldmVyCgogICAgIiIiCiAgICByYWlzZSBUeXBlRXJyb3IoZiJ7c2VsZn0gaXMgbm90IHN1YnNjcmlwdGFibGUiKQoKCkBfU3BlY2lhbEZvcm0KZGVmIFNlbGYoc2VsZiwgcGFyYW1ldGVycyk6CiAgICAiIiJVc2VkIHRvIHNwZWxsIHRoZSB0eXBlIG9mICJzZWxmIiBpbiBjbGFzc2VzLgoKICAgIEV4YW1wbGU6OgoKICAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNlbGYKCiAgICAgIGNsYXNzIEZvbzoKICAgICAgICAgIGRlZiByZXR1cm5fc2VsZihzZWxmKSAtPiBTZWxmOgogICAgICAgICAgICAgIC4uLgogICAgICAgICAgICAgIHJldHVybiBzZWxmCgogICAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3I6CiAgICAgICAgLSBjbGFzc21ldGhvZHMgdGhhdCBhcmUgdXNlZCBhcyBhbHRlcm5hdGl2ZSBjb25zdHJ1Y3RvcnMKICAgICAgICAtIGFubm90YXRpbmcgYW4gYF9fZW50ZXJfX2AgbWV0aG9kIHdoaWNoIHJldHVybnMgc2VsZgogICAgIiIiCiAgICByYWlzZSBUeXBlRXJyb3IoZiJ7c2VsZn0gaXMgbm90IHN1YnNjcmlwdGFibGUiKQoKCkBfU3BlY2lhbEZvcm0KZGVmIExpdGVyYWxTdHJpbmcoc2VsZiwgcGFyYW1ldGVycyk6CiAgICAiIiJSZXByZXNlbnRzIGFuIGFyYml0cmFyeSBsaXRlcmFsIHN0cmluZy4KCiAgICBFeGFtcGxlOjoKCiAgICAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpdGVyYWxTdHJpbmcKCiAgICAgICAgZGVmIHJ1bl9xdWVyeShzcWw6IExpdGVyYWxTdHJpbmcpIC0+IC4uLgogICAgICAgICAgICAuLi4KCiAgICAgICAgZGVmIGNhbGxlcihhcmJpdHJhcnlfc3RyaW5nOiBzdHIsIGxpdGVyYWxfc3RyaW5nOiBMaXRlcmFsU3RyaW5nKSAtPiBOb25lOgogICAgICAgICAgICBydW5fcXVlcnkoIlNFTEVDVCAqIEZST00gc3R1ZGVudHMiKSAgIyBvawogICAgICAgICAgICBydW5fcXVlcnkobGl0ZXJhbF9zdHJpbmcpICAjIG9rCiAgICAgICAgICAgIHJ1bl9xdWVyeSgiU0VMRUNUICogRlJPTSAiICsgbGl0ZXJhbF9zdHJpbmcpICAjIG9rCiAgICAgICAgICAgIHJ1bl9xdWVyeShhcmJpdHJhcnlfc3RyaW5nKSAgIyB0eXBlIGNoZWNrZXIgZXJyb3IKICAgICAgICAgICAgcnVuX3F1ZXJ5KCAgIyB0eXBlIGNoZWNrZXIgZXJyb3IKICAgICAgICAgICAgICAgIGYiU0VMRUNUICogRlJPTSBzdHVkZW50cyBXSEVSRSBuYW1lID0ge2FyYml0cmFyeV9zdHJpbmd9IgogICAgICAgICAgICApCgogICAgT25seSBzdHJpbmcgbGl0ZXJhbHMgYW5kIG90aGVyIExpdGVyYWxTdHJpbmdzIGFyZSBjb21wYXRpYmxlCiAgICB3aXRoIExpdGVyYWxTdHJpbmcuIFRoaXMgcHJvdmlkZXMgYSB0b29sIHRvIGhlbHAgcHJldmVudAogICAgc2VjdXJpdHkgaXNzdWVzIHN1Y2ggYXMgU1FMIGluamVjdGlvbi4KCiAgICAiIiIKICAgIHJhaXNlIFR5cGVFcnJvcihmIntzZWxmfSBpcyBub3Qgc3Vic2NyaXB0YWJsZSIpCgoKQF9TcGVjaWFsRm9ybQpkZWYgQ2xhc3NWYXIoc2VsZiwgcGFyYW1ldGVycyk6CiAgICAiIiJTcGVjaWFsIHR5cGUgY29uc3RydWN0IHRvIG1hcmsgY2xhc3MgdmFyaWFibGVzLgoKICAgIEFuIGFubm90YXRpb24gd3JhcHBlZCBpbiBDbGFzc1ZhciBpbmRpY2F0ZXMgdGhhdCBhIGdpdmVuCiAgICBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIGNsYXNzIHZhcmlhYmxlIGFuZAogICAgc2hvdWxkIG5vdCBiZSBzZXQgb24gaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MuIFVzYWdlOjoKCiAgICAgIGNsYXNzIFN0YXJzaGlwOgogICAgICAgICAgc3RhdHM6IENsYXNzVmFyW0RpY3Rbc3RyLCBpbnRdXSA9IHt9ICMgY2xhc3MgdmFyaWFibGUKICAgICAgICAgIGRhbWFnZTogaW50ID0gMTAgICAgICAgICAgICAgICAgICAgICAjIGluc3RhbmNlIHZhcmlhYmxlCgogICAgQ2xhc3NWYXIgYWNjZXB0cyBvbmx5IHR5cGVzIGFuZCBjYW5ub3QgYmUgZnVydGhlciBzdWJzY3JpYmVkLgoKICAgIE5vdGUgdGhhdCBDbGFzc1ZhciBpcyBub3QgYSBjbGFzcyBpdHNlbGYsIGFuZCBzaG91bGQgbm90CiAgICBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpIG9yIGlzc3ViY2xhc3MoKS4KICAgICIiIgogICAgaXRlbSA9IF90eXBlX2NoZWNrKHBhcmFtZXRlcnMsIGYne3NlbGZ9IGFjY2VwdHMgb25seSBzaW5nbGUgdHlwZS4nKQogICAgcmV0dXJuIF9HZW5lcmljQWxpYXMoc2VsZiwgKGl0ZW0sKSkKCkBfU3BlY2lhbEZvcm0KZGVmIEZpbmFsKHNlbGYsIHBhcmFtZXRlcnMpOgogICAgIiIiU3BlY2lhbCB0eXBpbmcgY29uc3RydWN0IHRvIGluZGljYXRlIGZpbmFsIG5hbWVzIHRvIHR5cGUgY2hlY2tlcnMuCgogICAgQSBmaW5hbCBuYW1lIGNhbm5vdCBiZSByZS1hc3NpZ25lZCBvciBvdmVycmlkZGVuIGluIGEgc3ViY2xhc3MuCiAgICBGb3IgZXhhbXBsZToKCiAgICAgIE1BWF9TSVpFOiBGaW5hbCA9IDkwMDAKICAgICAgTUFYX1NJWkUgKz0gMSAgIyBFcnJvciByZXBvcnRlZCBieSB0eXBlIGNoZWNrZXIKCiAgICAgIGNsYXNzIENvbm5lY3Rpb246CiAgICAgICAgICBUSU1FT1VUOiBGaW5hbFtpbnRdID0gMTAKCiAgICAgIGNsYXNzIEZhc3RDb25uZWN0b3IoQ29ubmVjdGlvbik6CiAgICAgICAgICBUSU1FT1VUID0gMSAgIyBFcnJvciByZXBvcnRlZCBieSB0eXBlIGNoZWNrZXIKCiAgICBUaGVyZSBpcyBubyBydW50aW1lIGNoZWNraW5nIG9mIHRoZXNlIHByb3BlcnRpZXMuCiAgICAiIiIKICAgIGl0ZW0gPSBfdHlwZV9jaGVjayhwYXJhbWV0ZXJzLCBmJ3tzZWxmfSBhY2NlcHRzIG9ubHkgc2luZ2xlIHR5cGUuJykKICAgIHJldHVybiBfR2VuZXJpY0FsaWFzKHNlbGYsIChpdGVtLCkpCgpAX1NwZWNpYWxGb3JtCmRlZiBVbmlvbihzZWxmLCBwYXJhbWV0ZXJzKToKICAgICIiIlVuaW9uIHR5cGU7IFVuaW9uW1gsIFldIG1lYW5zIGVpdGhlciBYIG9yIFkuCgogICAgVG8gZGVmaW5lIGEgdW5pb24sIHVzZSBlLmcuIFVuaW9uW2ludCwgc3RyXS4gIERldGFpbHM6CiAgICAtIFRoZSBhcmd1bWVudHMgbXVzdCBiZSB0eXBlcyBhbmQgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUuCiAgICAtIE5vbmUgYXMgYW4gYXJndW1lbnQgaXMgYSBzcGVjaWFsIGNhc2UgYW5kIGlzIHJlcGxhY2VkIGJ5CiAgICAgIHR5cGUoTm9uZSkuCiAgICAtIFVuaW9ucyBvZiB1bmlvbnMgYXJlIGZsYXR0ZW5lZCwgZS5nLjo6CgogICAgICAgIFVuaW9uW1VuaW9uW2ludCwgc3RyXSwgZmxvYXRdID09IFVuaW9uW2ludCwgc3RyLCBmbG9hdF0KCiAgICAtIFVuaW9ucyBvZiBhIHNpbmdsZSBhcmd1bWVudCB2YW5pc2gsIGUuZy46OgoKICAgICAgICBVbmlvbltpbnRdID09IGludCAgIyBUaGUgY29uc3RydWN0b3IgYWN0dWFsbHkgcmV0dXJucyBpbnQKCiAgICAtIFJlZHVuZGFudCBhcmd1bWVudHMgYXJlIHNraXBwZWQsIGUuZy46OgoKICAgICAgICBVbmlvbltpbnQsIHN0ciwgaW50XSA9PSBVbmlvbltpbnQsIHN0cl0KCiAgICAtIFdoZW4gY29tcGFyaW5nIHVuaW9ucywgdGhlIGFyZ3VtZW50IG9yZGVyIGlzIGlnbm9yZWQsIGUuZy46OgoKICAgICAgICBVbmlvbltpbnQsIHN0cl0gPT0gVW5pb25bc3RyLCBpbnRdCgogICAgLSBZb3UgY2Fubm90IHN1YmNsYXNzIG9yIGluc3RhbnRpYXRlIGEgdW5pb24uCiAgICAtIFlvdSBjYW4gdXNlIE9wdGlvbmFsW1hdIGFzIGEgc2hvcnRoYW5kIGZvciBVbmlvbltYLCBOb25lXS4KICAgICIiIgogICAgaWYgcGFyYW1ldGVycyA9PSAoKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCB0YWtlIGEgVW5pb24gb2Ygbm8gdHlwZXMuIikKICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhcmFtZXRlcnMsIHR1cGxlKToKICAgICAgICBwYXJhbWV0ZXJzID0gKHBhcmFtZXRlcnMsKQogICAgbXNnID0gIlVuaW9uW2FyZywgLi4uXTogZWFjaCBhcmcgbXVzdCBiZSBhIHR5cGUuIgogICAgcGFyYW1ldGVycyA9IHR1cGxlKF90eXBlX2NoZWNrKHAsIG1zZykgZm9yIHAgaW4gcGFyYW1ldGVycykKICAgIHBhcmFtZXRlcnMgPSBfcmVtb3ZlX2R1cHNfZmxhdHRlbihwYXJhbWV0ZXJzKQogICAgaWYgbGVuKHBhcmFtZXRlcnMpID09IDE6CiAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNbMF0KICAgIGlmIGxlbihwYXJhbWV0ZXJzKSA9PSAyIGFuZCB0eXBlKE5vbmUpIGluIHBhcmFtZXRlcnM6CiAgICAgICAgcmV0dXJuIF9VbmlvbkdlbmVyaWNBbGlhcyhzZWxmLCBwYXJhbWV0ZXJzLCBuYW1lPSJPcHRpb25hbCIpCiAgICByZXR1cm4gX1VuaW9uR2VuZXJpY0FsaWFzKHNlbGYsIHBhcmFtZXRlcnMpCgpAX1NwZWNpYWxGb3JtCmRlZiBPcHRpb25hbChzZWxmLCBwYXJhbWV0ZXJzKToKICAgICIiIk9wdGlvbmFsIHR5cGUuCgogICAgT3B0aW9uYWxbWF0gaXMgZXF1aXZhbGVudCB0byBVbmlvbltYLCBOb25lXS4KICAgICIiIgogICAgYXJnID0gX3R5cGVfY2hlY2socGFyYW1ldGVycywgZiJ7c2VsZn0gcmVxdWlyZXMgYSBzaW5nbGUgdHlwZS4iKQogICAgcmV0dXJuIFVuaW9uW2FyZywgdHlwZShOb25lKV0KCkBfTGl0ZXJhbFNwZWNpYWxGb3JtCkBfdHBfY2FjaGUodHlwZWQ9VHJ1ZSkKZGVmIExpdGVyYWwoc2VsZiwgKnBhcmFtZXRlcnMpOgogICAgIiIiU3BlY2lhbCB0eXBpbmcgZm9ybSB0byBkZWZpbmUgbGl0ZXJhbCB0eXBlcyAoYS5rLmEuIHZhbHVlIHR5cGVzKS4KCiAgICBUaGlzIGZvcm0gY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdG8gdHlwZSBjaGVja2VycyB0aGF0IHRoZSBjb3JyZXNwb25kaW5nCiAgICB2YXJpYWJsZSBvciBmdW5jdGlvbiBwYXJhbWV0ZXIgaGFzIGEgdmFsdWUgZXF1aXZhbGVudCB0byB0aGUgcHJvdmlkZWQKICAgIGxpdGVyYWwgKG9yIG9uZSBvZiBzZXZlcmFsIGxpdGVyYWxzKToKCiAgICAgIGRlZiB2YWxpZGF0ZV9zaW1wbGUoZGF0YTogQW55KSAtPiBMaXRlcmFsW1RydWVdOiAgIyBhbHdheXMgcmV0dXJucyBUcnVlCiAgICAgICAgICAuLi4KCiAgICAgIE1PREUgPSBMaXRlcmFsWydyJywgJ3JiJywgJ3cnLCAnd2InXQogICAgICBkZWYgb3Blbl9oZWxwZXIoZmlsZTogc3RyLCBtb2RlOiBNT0RFKSAtPiBzdHI6CiAgICAgICAgICAuLi4KCiAgICAgIG9wZW5faGVscGVyKCcvc29tZS9wYXRoJywgJ3InKSAgIyBQYXNzZXMgdHlwZSBjaGVjawogICAgICBvcGVuX2hlbHBlcignL290aGVyL3BhdGgnLCAndHlwbycpICAjIEVycm9yIGluIHR5cGUgY2hlY2tlcgoKICAgIExpdGVyYWxbLi4uXSBjYW5ub3QgYmUgc3ViY2xhc3NlZC4gQXQgcnVudGltZSwgYW4gYXJiaXRyYXJ5IHZhbHVlCiAgICBpcyBhbGxvd2VkIGFzIHR5cGUgYXJndW1lbnQgdG8gTGl0ZXJhbFsuLi5dLCBidXQgdHlwZSBjaGVja2VycyBtYXkKICAgIGltcG9zZSByZXN0cmljdGlvbnMuCiAgICAiIiIKICAgICMgVGhlcmUgaXMgbm8gJ190eXBlX2NoZWNrJyBjYWxsIGJlY2F1c2UgYXJndW1lbnRzIHRvIExpdGVyYWxbLi4uXSBhcmUKICAgICMgdmFsdWVzLCBub3QgdHlwZXMuCiAgICBwYXJhbWV0ZXJzID0gX2ZsYXR0ZW5fbGl0ZXJhbF9wYXJhbXMocGFyYW1ldGVycykKCiAgICB0cnk6CiAgICAgICAgcGFyYW1ldGVycyA9IHR1cGxlKHAgZm9yIHAsIF8gaW4gX2RlZHVwbGljYXRlKGxpc3QoX3ZhbHVlX2FuZF90eXBlX2l0ZXIocGFyYW1ldGVycykpKSkKICAgIGV4Y2VwdCBUeXBlRXJyb3I6ICAjIHVuaGFzaGFibGUgcGFyYW1ldGVycwogICAgICAgIHBhc3MKCiAgICByZXR1cm4gX0xpdGVyYWxHZW5lcmljQWxpYXMoc2VsZiwgcGFyYW1ldGVycykKCgpAX1NwZWNpYWxGb3JtCmRlZiBUeXBlQWxpYXMoc2VsZiwgcGFyYW1ldGVycyk6CiAgICAiIiJTcGVjaWFsIG1hcmtlciBpbmRpY2F0aW5nIHRoYXQgYW4gYXNzaWdubWVudCBzaG91bGQKICAgIGJlIHJlY29nbml6ZWQgYXMgYSBwcm9wZXIgdHlwZSBhbGlhcyBkZWZpbml0aW9uIGJ5IHR5cGUKICAgIGNoZWNrZXJzLgoKICAgIEZvciBleGFtcGxlOjoKCiAgICAgICAgUHJlZGljYXRlOiBUeXBlQWxpYXMgPSBDYWxsYWJsZVsuLi4sIGJvb2xdCgogICAgSXQncyBpbnZhbGlkIHdoZW4gdXNlZCBhbnl3aGVyZSBleGNlcHQgYXMgaW4gdGhlIGV4YW1wbGUgYWJvdmUuCiAgICAiIiIKICAgIHJhaXNlIFR5cGVFcnJvcihmIntzZWxmfSBpcyBub3Qgc3Vic2NyaXB0YWJsZSIpCgoKQF9TcGVjaWFsRm9ybQpkZWYgQ29uY2F0ZW5hdGUoc2VsZiwgcGFyYW1ldGVycyk6CiAgICAiIiJVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYGBQYXJhbVNwZWNgYCBhbmQgYGBDYWxsYWJsZWBgIHRvIHJlcHJlc2VudCBhCiAgICBoaWdoZXIgb3JkZXIgZnVuY3Rpb24gd2hpY2ggYWRkcywgcmVtb3ZlcyBvciB0cmFuc2Zvcm1zIHBhcmFtZXRlcnMgb2YgYQogICAgY2FsbGFibGUuCgogICAgRm9yIGV4YW1wbGU6OgoKICAgICAgIENhbGxhYmxlW0NvbmNhdGVuYXRlW2ludCwgUF0sIGludF0KCiAgICBTZWUgUEVQIDYxMiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24uCiAgICAiIiIKICAgIGlmIHBhcmFtZXRlcnMgPT0gKCk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgdGFrZSBhIENvbmNhdGVuYXRlIG9mIG5vIHR5cGVzLiIpCiAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbWV0ZXJzLCB0dXBsZSk6CiAgICAgICAgcGFyYW1ldGVycyA9IChwYXJhbWV0ZXJzLCkKICAgIGlmIG5vdCAocGFyYW1ldGVyc1stMV0gaXMgLi4uIG9yIGlzaW5zdGFuY2UocGFyYW1ldGVyc1stMV0sIFBhcmFtU3BlYykpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVGhlIGxhc3QgcGFyYW1ldGVyIHRvIENvbmNhdGVuYXRlIHNob3VsZCBiZSBhICIKICAgICAgICAgICAgICAgICAgICAgICAgIlBhcmFtU3BlYyB2YXJpYWJsZSBvciBlbGxpcHNpcy4iKQogICAgbXNnID0gIkNvbmNhdGVuYXRlW2FyZywgLi4uXTogZWFjaCBhcmcgbXVzdCBiZSBhIHR5cGUuIgogICAgcGFyYW1ldGVycyA9ICgqKF90eXBlX2NoZWNrKHAsIG1zZykgZm9yIHAgaW4gcGFyYW1ldGVyc1s6LTFdKSwgcGFyYW1ldGVyc1stMV0pCiAgICByZXR1cm4gX0NvbmNhdGVuYXRlR2VuZXJpY0FsaWFzKHNlbGYsIHBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJhbXNwZWNfdHZhcnM9VHJ1ZSkKCgpAX1NwZWNpYWxGb3JtCmRlZiBUeXBlR3VhcmQoc2VsZiwgcGFyYW1ldGVycyk6CiAgICAiIiJTcGVjaWFsIHR5cGluZyBmb3JtIHVzZWQgdG8gYW5ub3RhdGUgdGhlIHJldHVybiB0eXBlIG9mIGEgdXNlci1kZWZpbmVkCiAgICB0eXBlIGd1YXJkIGZ1bmN0aW9uLiAgYGBUeXBlR3VhcmRgYCBvbmx5IGFjY2VwdHMgYSBzaW5nbGUgdHlwZSBhcmd1bWVudC4KICAgIEF0IHJ1bnRpbWUsIGZ1bmN0aW9ucyBtYXJrZWQgdGhpcyB3YXkgc2hvdWxkIHJldHVybiBhIGJvb2xlYW4uCgogICAgYGBUeXBlR3VhcmRgYCBhaW1zIHRvIGJlbmVmaXQgKnR5cGUgbmFycm93aW5nKiAtLSBhIHRlY2huaXF1ZSB1c2VkIGJ5IHN0YXRpYwogICAgdHlwZSBjaGVja2VycyB0byBkZXRlcm1pbmUgYSBtb3JlIHByZWNpc2UgdHlwZSBvZiBhbiBleHByZXNzaW9uIHdpdGhpbiBhCiAgICBwcm9ncmFtJ3MgY29kZSBmbG93LiAgVXN1YWxseSB0eXBlIG5hcnJvd2luZyBpcyBkb25lIGJ5IGFuYWx5emluZwogICAgY29uZGl0aW9uYWwgY29kZSBmbG93IGFuZCBhcHBseWluZyB0aGUgbmFycm93aW5nIHRvIGEgYmxvY2sgb2YgY29kZS4gIFRoZQogICAgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBoZXJlIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhICJ0eXBlIGd1YXJkIi4KCiAgICBTb21ldGltZXMgaXQgd291bGQgYmUgY29udmVuaWVudCB0byB1c2UgYSB1c2VyLWRlZmluZWQgYm9vbGVhbiBmdW5jdGlvbgogICAgYXMgYSB0eXBlIGd1YXJkLiAgU3VjaCBhIGZ1bmN0aW9uIHNob3VsZCB1c2UgYGBUeXBlR3VhcmRbLi4uXWBgIGFzIGl0cwogICAgcmV0dXJuIHR5cGUgdG8gYWxlcnQgc3RhdGljIHR5cGUgY2hlY2tlcnMgdG8gdGhpcyBpbnRlbnRpb24uCgogICAgVXNpbmcgIGBgLT4gVHlwZUd1YXJkYGAgdGVsbHMgdGhlIHN0YXRpYyB0eXBlIGNoZWNrZXIgdGhhdCBmb3IgYSBnaXZlbgogICAgZnVuY3Rpb246CgogICAgMS4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIGJvb2xlYW4uCiAgICAyLiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGBgVHJ1ZWBgLCB0aGUgdHlwZSBvZiBpdHMgYXJndW1lbnQKICAgICAgIGlzIHRoZSB0eXBlIGluc2lkZSBgYFR5cGVHdWFyZGBgLgoKICAgICAgIEZvciBleGFtcGxlOjoKCiAgICAgICAgICBkZWYgaXNfc3RyKHZhbDogVW5pb25bc3RyLCBmbG9hdF0pOgogICAgICAgICAgICAgICMgImlzaW5zdGFuY2UiIHR5cGUgZ3VhcmQKICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgc3RyKToKICAgICAgICAgICAgICAgICAgIyBUeXBlIG9mIGBgdmFsYGAgaXMgbmFycm93ZWQgdG8gYGBzdHJgYAogICAgICAgICAgICAgICAgICAuLi4KICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAjIEVsc2UsIHR5cGUgb2YgYGB2YWxgYCBpcyBuYXJyb3dlZCB0byBgYGZsb2F0YGAuCiAgICAgICAgICAgICAgICAgIC4uLgoKICAgIFN0cmljdCB0eXBlIG5hcnJvd2luZyBpcyBub3QgZW5mb3JjZWQgLS0gYGBUeXBlQmBgIG5lZWQgbm90IGJlIGEgbmFycm93ZXIKICAgIGZvcm0gb2YgYGBUeXBlQWBgIChpdCBjYW4gZXZlbiBiZSBhIHdpZGVyIGZvcm0pIGFuZCB0aGlzIG1heSBsZWFkIHRvCiAgICB0eXBlLXVuc2FmZSByZXN1bHRzLiAgVGhlIG1haW4gcmVhc29uIGlzIHRvIGFsbG93IGZvciB0aGluZ3MgbGlrZQogICAgbmFycm93aW5nIGBgTGlzdFtvYmplY3RdYGAgdG8gYGBMaXN0W3N0cl1gYCBldmVuIHRob3VnaCB0aGUgbGF0dGVyIGlzIG5vdAogICAgYSBzdWJ0eXBlIG9mIHRoZSBmb3JtZXIsIHNpbmNlIGBgTGlzdGBgIGlzIGludmFyaWFudC4gIFRoZSByZXNwb25zaWJpbGl0eSBvZgogICAgd3JpdGluZyB0eXBlLXNhZmUgdHlwZSBndWFyZHMgaXMgbGVmdCB0byB0aGUgdXNlci4KCiAgICBgYFR5cGVHdWFyZGBgIGFsc28gd29ya3Mgd2l0aCB0eXBlIHZhcmlhYmxlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKICAgIFBFUCA2NDcgKFVzZXItRGVmaW5lZCBUeXBlIEd1YXJkcykuCiAgICAiIiIKICAgIGl0ZW0gPSBfdHlwZV9jaGVjayhwYXJhbWV0ZXJzLCBmJ3tzZWxmfSBhY2NlcHRzIG9ubHkgc2luZ2xlIHR5cGUuJykKICAgIHJldHVybiBfR2VuZXJpY0FsaWFzKHNlbGYsIChpdGVtLCkpCgoKY2xhc3MgRm9yd2FyZFJlZihfRmluYWwsIF9yb290PVRydWUpOgogICAgIiIiSW50ZXJuYWwgd3JhcHBlciB0byBob2xkIGEgZm9yd2FyZCByZWZlcmVuY2UuIiIiCgogICAgX19zbG90c19fID0gKCdfX2ZvcndhcmRfYXJnX18nLCAnX19mb3J3YXJkX2NvZGVfXycsCiAgICAgICAgICAgICAgICAgJ19fZm9yd2FyZF9ldmFsdWF0ZWRfXycsICdfX2ZvcndhcmRfdmFsdWVfXycsCiAgICAgICAgICAgICAgICAgJ19fZm9yd2FyZF9pc19hcmd1bWVudF9fJywgJ19fZm9yd2FyZF9pc19jbGFzc19fJywKICAgICAgICAgICAgICAgICAnX19mb3J3YXJkX21vZHVsZV9fJykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYXJnLCBpc19hcmd1bWVudD1UcnVlLCBtb2R1bGU9Tm9uZSwgKiwgaXNfY2xhc3M9RmFsc2UpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZywgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiRm9yd2FyZCByZWZlcmVuY2UgbXVzdCBiZSBhIHN0cmluZyAtLSBnb3Qge2FyZyFyfSIpCgogICAgICAgICMgSWYgd2UgZG8gYGRlZiBmKCphcmdzOiAqVHMpYCwgdGhlbiB3ZSdsbCBoYXZlIGBhcmcgPSAnKlRzJ2AuCiAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzbid0IGEgdmFsaWQgZXhwcmVzc2lvbiBvbiBpdHMgb3duLCBzbyB3ZQogICAgICAgICMgZG8gdGhlIHVucGFja2luZyBtYW51YWxseS4KICAgICAgICBpZiBhcmdbMF0gPT0gJyonOgogICAgICAgICAgICBhcmdfdG9fY29tcGlsZSA9IGYnKHthcmd9LClbMF0nICAjIEUuZy4gKCpUcywpWzBdIG9yICgqdHVwbGVbaW50LCBpbnRdLClbMF0KICAgICAgICBlbHNlOgogICAgICAgICAgICBhcmdfdG9fY29tcGlsZSA9IGFyZwogICAgICAgIHRyeToKICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoYXJnX3RvX2NvbXBpbGUsICc8c3RyaW5nPicsICdldmFsJykKICAgICAgICBleGNlcHQgU3ludGF4RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKGYiRm9yd2FyZCByZWZlcmVuY2UgbXVzdCBiZSBhbiBleHByZXNzaW9uIC0tIGdvdCB7YXJnIXJ9IikKCiAgICAgICAgc2VsZi5fX2ZvcndhcmRfYXJnX18gPSBhcmcKICAgICAgICBzZWxmLl9fZm9yd2FyZF9jb2RlX18gPSBjb2RlCiAgICAgICAgc2VsZi5fX2ZvcndhcmRfZXZhbHVhdGVkX18gPSBGYWxzZQogICAgICAgIHNlbGYuX19mb3J3YXJkX3ZhbHVlX18gPSBOb25lCiAgICAgICAgc2VsZi5fX2ZvcndhcmRfaXNfYXJndW1lbnRfXyA9IGlzX2FyZ3VtZW50CiAgICAgICAgc2VsZi5fX2ZvcndhcmRfaXNfY2xhc3NfXyA9IGlzX2NsYXNzCiAgICAgICAgc2VsZi5fX2ZvcndhcmRfbW9kdWxlX18gPSBtb2R1bGUKCiAgICBkZWYgX2V2YWx1YXRlKHNlbGYsIGdsb2JhbG5zLCBsb2NhbG5zLCByZWN1cnNpdmVfZ3VhcmQpOgogICAgICAgIGlmIHNlbGYuX19mb3J3YXJkX2FyZ19fIGluIHJlY3Vyc2l2ZV9ndWFyZDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICBpZiBub3Qgc2VsZi5fX2ZvcndhcmRfZXZhbHVhdGVkX18gb3IgbG9jYWxucyBpcyBub3QgZ2xvYmFsbnM6CiAgICAgICAgICAgIGlmIGdsb2JhbG5zIGlzIE5vbmUgYW5kIGxvY2FsbnMgaXMgTm9uZToKICAgICAgICAgICAgICAgIGdsb2JhbG5zID0gbG9jYWxucyA9IHt9CiAgICAgICAgICAgIGVsaWYgZ2xvYmFsbnMgaXMgTm9uZToKICAgICAgICAgICAgICAgIGdsb2JhbG5zID0gbG9jYWxucwogICAgICAgICAgICBlbGlmIGxvY2FsbnMgaXMgTm9uZToKICAgICAgICAgICAgICAgIGxvY2FsbnMgPSBnbG9iYWxucwogICAgICAgICAgICBpZiBzZWxmLl9fZm9yd2FyZF9tb2R1bGVfXyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGdsb2JhbG5zID0gZ2V0YXR0cigKICAgICAgICAgICAgICAgICAgICBzeXMubW9kdWxlcy5nZXQoc2VsZi5fX2ZvcndhcmRfbW9kdWxlX18sIE5vbmUpLCAnX19kaWN0X18nLCBnbG9iYWxucwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB0eXBlXyA9IF90eXBlX2NoZWNrKAogICAgICAgICAgICAgICAgZXZhbChzZWxmLl9fZm9yd2FyZF9jb2RlX18sIGdsb2JhbG5zLCBsb2NhbG5zKSwKICAgICAgICAgICAgICAgICJGb3J3YXJkIHJlZmVyZW5jZXMgbXVzdCBldmFsdWF0ZSB0byB0eXBlcy4iLAogICAgICAgICAgICAgICAgaXNfYXJndW1lbnQ9c2VsZi5fX2ZvcndhcmRfaXNfYXJndW1lbnRfXywKICAgICAgICAgICAgICAgIGFsbG93X3NwZWNpYWxfZm9ybXM9c2VsZi5fX2ZvcndhcmRfaXNfY2xhc3NfXywKICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fID0gX2V2YWxfdHlwZSgKICAgICAgICAgICAgICAgIHR5cGVfLCBnbG9iYWxucywgbG9jYWxucywgcmVjdXJzaXZlX2d1YXJkIHwge3NlbGYuX19mb3J3YXJkX2FyZ19ffQogICAgICAgICAgICApCiAgICAgICAgICAgIHNlbGYuX19mb3J3YXJkX2V2YWx1YXRlZF9fID0gVHJ1ZQogICAgICAgIHJldHVybiBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEZvcndhcmRSZWYpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICBpZiBzZWxmLl9fZm9yd2FyZF9ldmFsdWF0ZWRfXyBhbmQgb3RoZXIuX19mb3J3YXJkX2V2YWx1YXRlZF9fOgogICAgICAgICAgICByZXR1cm4gKHNlbGYuX19mb3J3YXJkX2FyZ19fID09IG90aGVyLl9fZm9yd2FyZF9hcmdfXyBhbmQKICAgICAgICAgICAgICAgICAgICBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fID09IG90aGVyLl9fZm9yd2FyZF92YWx1ZV9fKQogICAgICAgIHJldHVybiAoc2VsZi5fX2ZvcndhcmRfYXJnX18gPT0gb3RoZXIuX19mb3J3YXJkX2FyZ19fIGFuZAogICAgICAgICAgICAgICAgc2VsZi5fX2ZvcndhcmRfbW9kdWxlX18gPT0gb3RoZXIuX19mb3J3YXJkX21vZHVsZV9fKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fX2ZvcndhcmRfYXJnX18sIHNlbGYuX19mb3J3YXJkX21vZHVsZV9fKSkKCiAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gVW5pb25bc2VsZiwgb3RoZXJdCgogICAgZGVmIF9fcm9yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBVbmlvbltvdGhlciwgc2VsZl0KCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fX2ZvcndhcmRfbW9kdWxlX18gaXMgTm9uZToKICAgICAgICAgICAgbW9kdWxlX3JlcHIgPSAnJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1vZHVsZV9yZXByID0gZicsIG1vZHVsZT17c2VsZi5fX2ZvcndhcmRfbW9kdWxlX18hcn0nCiAgICAgICAgcmV0dXJuIGYnRm9yd2FyZFJlZih7c2VsZi5fX2ZvcndhcmRfYXJnX18hcn17bW9kdWxlX3JlcHJ9KScKCgpkZWYgX2lzX3VucGFja2VkX3R5cGV2YXJ0dXBsZSh4OiBBbnkpIC0+IGJvb2w6CiAgICByZXR1cm4gKChub3QgaXNpbnN0YW5jZSh4LCB0eXBlKSkgYW5kCiAgICAgICAgICAgIGdldGF0dHIoeCwgJ19fdHlwaW5nX2lzX3VucGFja2VkX3R5cGV2YXJ0dXBsZV9fJywgRmFsc2UpKQoKCmRlZiBfaXNfdHlwZXZhcl9saWtlKHg6IEFueSkgLT4gYm9vbDoKICAgIHJldHVybiBpc2luc3RhbmNlKHgsIChUeXBlVmFyLCBQYXJhbVNwZWMpKSBvciBfaXNfdW5wYWNrZWRfdHlwZXZhcnR1cGxlKHgpCgoKY2xhc3MgX1BpY2tsZVVzaW5nTmFtZU1peGluOgogICAgIiIiTWl4aW4gZW5hYmxpbmcgcGlja2xpbmcgYmFzZWQgb24gc2VsZi5fX25hbWVfXy4iIiIKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX25hbWVfXwoKCmNsYXNzIF9Cb3VuZFZhcmlhbmNlTWl4aW46CiAgICAiIiJNaXhpbiBnaXZpbmcgX19pbml0X18gYm91bmQgYW5kIHZhcmlhbmNlIGFyZ3VtZW50cy4KCiAgICBUaGlzIGlzIHVzZWQgYnkgVHlwZVZhciBhbmQgUGFyYW1TcGVjLCB3aGljaCBib3RoIGVtcGxveSB0aGUgbm90aW9ucyBvZgogICAgYSB0eXBlICdib3VuZCcgKHJlc3RyaWN0aW5nIHR5cGUgYXJndW1lbnRzIHRvIGJlIGEgc3VidHlwZSBvZiBzb21lCiAgICBzcGVjaWZpZWQgdHlwZSkgYW5kIHR5cGUgJ3ZhcmlhbmNlJyAoZGV0ZXJtaW5pbmcgc3VidHlwZSByZWxhdGlvbnMgYmV0d2VlbgogICAgZ2VuZXJpYyB0eXBlcykuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBib3VuZCwgY292YXJpYW50LCBjb250cmF2YXJpYW50KToKICAgICAgICAiIiJVc2VkIHRvIHNldHVwIFR5cGVWYXJzIGFuZCBQYXJhbVNwZWMncyBib3VuZCwgY292YXJpYW50IGFuZAogICAgICAgIGNvbnRyYXZhcmlhbnQgYXR0cmlidXRlcy4KICAgICAgICAiIiIKICAgICAgICBpZiBjb3ZhcmlhbnQgYW5kIGNvbnRyYXZhcmlhbnQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkJpdmFyaWFudCB0eXBlcyBhcmUgbm90IHN1cHBvcnRlZC4iKQogICAgICAgIHNlbGYuX19jb3ZhcmlhbnRfXyA9IGJvb2woY292YXJpYW50KQogICAgICAgIHNlbGYuX19jb250cmF2YXJpYW50X18gPSBib29sKGNvbnRyYXZhcmlhbnQpCiAgICAgICAgaWYgYm91bmQ6CiAgICAgICAgICAgIHNlbGYuX19ib3VuZF9fID0gX3R5cGVfY2hlY2soYm91bmQsICJCb3VuZCBtdXN0IGJlIGEgdHlwZS4iKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX19ib3VuZF9fID0gTm9uZQoKICAgIGRlZiBfX29yX18oc2VsZiwgcmlnaHQpOgogICAgICAgIHJldHVybiBVbmlvbltzZWxmLCByaWdodF0KCiAgICBkZWYgX19yb3JfXyhzZWxmLCBsZWZ0KToKICAgICAgICByZXR1cm4gVW5pb25bbGVmdCwgc2VsZl0KCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fX2NvdmFyaWFudF9fOgogICAgICAgICAgICBwcmVmaXggPSAnKycKICAgICAgICBlbGlmIHNlbGYuX19jb250cmF2YXJpYW50X186CiAgICAgICAgICAgIHByZWZpeCA9ICctJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByZWZpeCA9ICd+JwogICAgICAgIHJldHVybiBwcmVmaXggKyBzZWxmLl9fbmFtZV9fCgoKY2xhc3MgVHlwZVZhcihfRmluYWwsIF9JbW11dGFibGUsIF9Cb3VuZFZhcmlhbmNlTWl4aW4sIF9QaWNrbGVVc2luZ05hbWVNaXhpbiwKICAgICAgICAgICAgICBfcm9vdD1UcnVlKToKICAgICIiIlR5cGUgdmFyaWFibGUuCgogICAgVXNhZ2U6OgoKICAgICAgVCA9IFR5cGVWYXIoJ1QnKSAgIyBDYW4gYmUgYW55dGhpbmcKICAgICAgQSA9IFR5cGVWYXIoJ0EnLCBzdHIsIGJ5dGVzKSAgIyBNdXN0IGJlIHN0ciBvciBieXRlcwoKICAgIFR5cGUgdmFyaWFibGVzIGV4aXN0IHByaW1hcmlseSBmb3IgdGhlIGJlbmVmaXQgb2Ygc3RhdGljIHR5cGUKICAgIGNoZWNrZXJzLiAgVGhleSBzZXJ2ZSBhcyB0aGUgcGFyYW1ldGVycyBmb3IgZ2VuZXJpYyB0eXBlcyBhcyB3ZWxsCiAgICBhcyBmb3IgZ2VuZXJpYyBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFNlZSBjbGFzcyBHZW5lcmljIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiBvbiBnZW5lcmljIHR5cGVzLiAgR2VuZXJpYyBmdW5jdGlvbnMgd29yayBhcyBmb2xsb3dzOgoKICAgICAgZGVmIHJlcGVhdCh4OiBULCBuOiBpbnQpIC0+IExpc3RbVF06CiAgICAgICAgICAnJydSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgbiByZWZlcmVuY2VzIHRvIHguJycnCiAgICAgICAgICByZXR1cm4gW3hdKm4KCiAgICAgIGRlZiBsb25nZXN0KHg6IEEsIHk6IEEpIC0+IEE6CiAgICAgICAgICAnJydSZXR1cm4gdGhlIGxvbmdlc3Qgb2YgdHdvIHN0cmluZ3MuJycnCiAgICAgICAgICByZXR1cm4geCBpZiBsZW4oeCkgPj0gbGVuKHkpIGVsc2UgeQoKICAgIFRoZSBsYXR0ZXIgZXhhbXBsZSdzIHNpZ25hdHVyZSBpcyBlc3NlbnRpYWxseSB0aGUgb3ZlcmxvYWRpbmcKICAgIG9mIChzdHIsIHN0cikgLT4gc3RyIGFuZCAoYnl0ZXMsIGJ5dGVzKSAtPiBieXRlcy4gIEFsc28gbm90ZQogICAgdGhhdCBpZiB0aGUgYXJndW1lbnRzIGFyZSBpbnN0YW5jZXMgb2Ygc29tZSBzdWJjbGFzcyBvZiBzdHIsCiAgICB0aGUgcmV0dXJuIHR5cGUgaXMgc3RpbGwgcGxhaW4gc3RyLgoKICAgIEF0IHJ1bnRpbWUsIGlzaW5zdGFuY2UoeCwgVCkgYW5kIGlzc3ViY2xhc3MoQywgVCkgd2lsbCByYWlzZSBUeXBlRXJyb3IuCgogICAgVHlwZSB2YXJpYWJsZXMgZGVmaW5lZCB3aXRoIGNvdmFyaWFudD1UcnVlIG9yIGNvbnRyYXZhcmlhbnQ9VHJ1ZQogICAgY2FuIGJlIHVzZWQgdG8gZGVjbGFyZSBjb3ZhcmlhbnQgb3IgY29udHJhdmFyaWFudCBnZW5lcmljIHR5cGVzLgogICAgU2VlIFBFUCA0ODQgZm9yIG1vcmUgZGV0YWlscy4gQnkgZGVmYXVsdCBnZW5lcmljIHR5cGVzIGFyZSBpbnZhcmlhbnQKICAgIGluIGFsbCB0eXBlIHZhcmlhYmxlcy4KCiAgICBUeXBlIHZhcmlhYmxlcyBjYW4gYmUgaW50cm9zcGVjdGVkLiBlLmcuOgoKICAgICAgVC5fX25hbWVfXyA9PSAnVCcKICAgICAgVC5fX2NvbnN0cmFpbnRzX18gPT0gKCkKICAgICAgVC5fX2NvdmFyaWFudF9fID09IEZhbHNlCiAgICAgIFQuX19jb250cmF2YXJpYW50X18gPSBGYWxzZQogICAgICBBLl9fY29uc3RyYWludHNfXyA9PSAoc3RyLCBieXRlcykKCiAgICBOb3RlIHRoYXQgb25seSB0eXBlIHZhcmlhYmxlcyBkZWZpbmVkIGluIGdsb2JhbCBzY29wZSBjYW4gYmUgcGlja2xlZC4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCAqY29uc3RyYWludHMsIGJvdW5kPU5vbmUsCiAgICAgICAgICAgICAgICAgY292YXJpYW50PUZhbHNlLCBjb250cmF2YXJpYW50PUZhbHNlKToKICAgICAgICBzZWxmLl9fbmFtZV9fID0gbmFtZQogICAgICAgIHN1cGVyKCkuX19pbml0X18oYm91bmQsIGNvdmFyaWFudCwgY29udHJhdmFyaWFudCkKICAgICAgICBpZiBjb25zdHJhaW50cyBhbmQgYm91bmQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ29uc3RyYWludHMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggYm91bmQ9Li4uIikKICAgICAgICBpZiBjb25zdHJhaW50cyBhbmQgbGVuKGNvbnN0cmFpbnRzKSA9PSAxOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkEgc2luZ2xlIGNvbnN0cmFpbnQgaXMgbm90IGFsbG93ZWQiKQogICAgICAgIG1zZyA9ICJUeXBlVmFyKG5hbWUsIGNvbnN0cmFpbnQsIC4uLik6IGNvbnN0cmFpbnRzIG11c3QgYmUgdHlwZXMuIgogICAgICAgIHNlbGYuX19jb25zdHJhaW50c19fID0gdHVwbGUoX3R5cGVfY2hlY2sodCwgbXNnKSBmb3IgdCBpbiBjb25zdHJhaW50cykKICAgICAgICBkZWZfbW9kID0gX2NhbGxlcigpCiAgICAgICAgaWYgZGVmX21vZCAhPSAndHlwaW5nJzoKICAgICAgICAgICAgc2VsZi5fX21vZHVsZV9fID0gZGVmX21vZAoKICAgIGRlZiBfX3R5cGluZ19zdWJzdF9fKHNlbGYsIGFyZyk6CiAgICAgICAgbXNnID0gIlBhcmFtZXRlcnMgdG8gZ2VuZXJpYyB0eXBlcyBtdXN0IGJlIHR5cGVzLiIKICAgICAgICBhcmcgPSBfdHlwZV9jaGVjayhhcmcsIG1zZywgaXNfYXJndW1lbnQ9VHJ1ZSkKICAgICAgICBpZiAoKGlzaW5zdGFuY2UoYXJnLCBfR2VuZXJpY0FsaWFzKSBhbmQgYXJnLl9fb3JpZ2luX18gaXMgVW5wYWNrKSBvcgogICAgICAgICAgICAoaXNpbnN0YW5jZShhcmcsIEdlbmVyaWNBbGlhcykgYW5kIGdldGF0dHIoYXJnLCAnX191bnBhY2tlZF9fJywgRmFsc2UpKSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmInthcmd9IGlzIG5vdCB2YWxpZCBhcyB0eXBlIGFyZ3VtZW50IikKICAgICAgICByZXR1cm4gYXJnCgoKY2xhc3MgVHlwZVZhclR1cGxlKF9GaW5hbCwgX0ltbXV0YWJsZSwgX1BpY2tsZVVzaW5nTmFtZU1peGluLCBfcm9vdD1UcnVlKToKICAgICIiIlR5cGUgdmFyaWFibGUgdHVwbGUuCgogICAgVXNhZ2U6CgogICAgICBUcyA9IFR5cGVWYXJUdXBsZSgnVHMnKSAgIyBDYW4gYmUgZ2l2ZW4gYW55IG5hbWUKCiAgICBKdXN0IGFzIGEgVHlwZVZhciAodHlwZSB2YXJpYWJsZSkgaXMgYSBwbGFjZWhvbGRlciBmb3IgYSBzaW5nbGUgdHlwZSwKICAgIGEgVHlwZVZhclR1cGxlIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGFuICphcmJpdHJhcnkqIG51bWJlciBvZiB0eXBlcy4gRm9yCiAgICBleGFtcGxlLCBpZiB3ZSBkZWZpbmUgYSBnZW5lcmljIGNsYXNzIHVzaW5nIGEgVHlwZVZhclR1cGxlOgoKICAgICAgY2xhc3MgQyhHZW5lcmljWypUc10pOiAuLi4KCiAgICBUaGVuIHdlIGNhbiBwYXJhbWV0ZXJpemUgdGhhdCBjbGFzcyB3aXRoIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdHlwZQogICAgYXJndW1lbnRzOgoKICAgICAgQ1tpbnRdICAgICAgICMgRmluZQogICAgICBDW2ludCwgc3RyXSAgIyBBbHNvIGZpbmUKICAgICAgQ1soKV0gICAgICAgICMgRXZlbiB0aGlzIGlzIGZpbmUKCiAgICBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgUEVQIDY0Ni4KCiAgICBOb3RlIHRoYXQgb25seSBUeXBlVmFyVHVwbGVzIGRlZmluZWQgaW4gZ2xvYmFsIHNjb3BlIGNhbiBiZSBwaWNrbGVkLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYuX19uYW1lX18gPSBuYW1lCgogICAgICAgICMgVXNlZCBmb3IgcGlja2xpbmcuCiAgICAgICAgZGVmX21vZCA9IF9jYWxsZXIoKQogICAgICAgIGlmIGRlZl9tb2QgIT0gJ3R5cGluZyc6CiAgICAgICAgICAgIHNlbGYuX19tb2R1bGVfXyA9IGRlZl9tb2QKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgeWllbGQgVW5wYWNrW3NlbGZdCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fbmFtZV9fCgogICAgZGVmIF9fdHlwaW5nX3N1YnN0X18oc2VsZiwgYXJnKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlN1YnN0aXR1dGlvbiBvZiBiYXJlIFR5cGVWYXJUdXBsZSBpcyBub3Qgc3VwcG9ydGVkIikKCiAgICBkZWYgX190eXBpbmdfcHJlcGFyZV9zdWJzdF9fKHNlbGYsIGFsaWFzLCBhcmdzKToKICAgICAgICBwYXJhbXMgPSBhbGlhcy5fX3BhcmFtZXRlcnNfXwogICAgICAgIHR5cGV2YXJ0dXBsZV9pbmRleCA9IHBhcmFtcy5pbmRleChzZWxmKQogICAgICAgIGZvciBwYXJhbSBpbiBwYXJhbXNbdHlwZXZhcnR1cGxlX2luZGV4ICsgMTpdOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtLCBUeXBlVmFyVHVwbGUpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiTW9yZSB0aGFuIG9uZSBUeXBlVmFyVHVwbGUgcGFyYW1ldGVyIGluIHthbGlhc30iKQoKICAgICAgICBhbGVuID0gbGVuKGFyZ3MpCiAgICAgICAgcGxlbiA9IGxlbihwYXJhbXMpCiAgICAgICAgbGVmdCA9IHR5cGV2YXJ0dXBsZV9pbmRleAogICAgICAgIHJpZ2h0ID0gcGxlbiAtIHR5cGV2YXJ0dXBsZV9pbmRleCAtIDEKICAgICAgICB2YXJfdHVwbGVfaW5kZXggPSBOb25lCiAgICAgICAgZmlsbGFyZyA9IE5vbmUKICAgICAgICBmb3IgaywgYXJnIGluIGVudW1lcmF0ZShhcmdzKToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJnLCB0eXBlKToKICAgICAgICAgICAgICAgIHN1YmFyZ3MgPSBnZXRhdHRyKGFyZywgJ19fdHlwaW5nX3VucGFja2VkX3R1cGxlX2FyZ3NfXycsIE5vbmUpCiAgICAgICAgICAgICAgICBpZiBzdWJhcmdzIGFuZCBsZW4oc3ViYXJncykgPT0gMiBhbmQgc3ViYXJnc1stMV0gaXMgLi4uOgogICAgICAgICAgICAgICAgICAgIGlmIHZhcl90dXBsZV9pbmRleCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJNb3JlIHRoYW4gb25lIHVucGFja2VkIGFyYml0cmFyeS1sZW5ndGggdHVwbGUgYXJndW1lbnQiKQogICAgICAgICAgICAgICAgICAgIHZhcl90dXBsZV9pbmRleCA9IGsKICAgICAgICAgICAgICAgICAgICBmaWxsYXJnID0gc3ViYXJnc1swXQogICAgICAgIGlmIHZhcl90dXBsZV9pbmRleCBpcyBub3QgTm9uZToKICAgICAgICAgICAgbGVmdCA9IG1pbihsZWZ0LCB2YXJfdHVwbGVfaW5kZXgpCiAgICAgICAgICAgIHJpZ2h0ID0gbWluKHJpZ2h0LCBhbGVuIC0gdmFyX3R1cGxlX2luZGV4IC0gMSkKICAgICAgICBlbGlmIGxlZnQgKyByaWdodCA+IGFsZW46CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIlRvbyBmZXcgYXJndW1lbnRzIGZvciB7YWxpYXN9OyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiIGFjdHVhbCB7YWxlbn0sIGV4cGVjdGVkIGF0IGxlYXN0IHtwbGVuLTF9IikKCiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgKmFyZ3NbOmxlZnRdLAogICAgICAgICAgICAqKFtmaWxsYXJnXSoodHlwZXZhcnR1cGxlX2luZGV4IC0gbGVmdCkpLAogICAgICAgICAgICB0dXBsZShhcmdzW2xlZnQ6IGFsZW4gLSByaWdodF0pLAogICAgICAgICAgICAqKFtmaWxsYXJnXSoocGxlbiAtIHJpZ2h0IC0gbGVmdCAtIHR5cGV2YXJ0dXBsZV9pbmRleCAtIDEpKSwKICAgICAgICAgICAgKmFyZ3NbYWxlbiAtIHJpZ2h0Ol0sCiAgICAgICAgKQoKCmNsYXNzIFBhcmFtU3BlY0FyZ3MoX0ZpbmFsLCBfSW1tdXRhYmxlLCBfcm9vdD1UcnVlKToKICAgICIiIlRoZSBhcmdzIGZvciBhIFBhcmFtU3BlYyBvYmplY3QuCgogICAgR2l2ZW4gYSBQYXJhbVNwZWMgb2JqZWN0IFAsIFAuYXJncyBpcyBhbiBpbnN0YW5jZSBvZiBQYXJhbVNwZWNBcmdzLgoKICAgIFBhcmFtU3BlY0FyZ3Mgb2JqZWN0cyBoYXZlIGEgcmVmZXJlbmNlIGJhY2sgdG8gdGhlaXIgUGFyYW1TcGVjOgoKICAgICAgIFAuYXJncy5fX29yaWdpbl9fIGlzIFAKCiAgICBUaGlzIHR5cGUgaXMgbWVhbnQgZm9yIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBhbmQgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyB0bwogICAgc3RhdGljIHR5cGUgY2hlY2tlcnMuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcmlnaW4pOgogICAgICAgIHNlbGYuX19vcmlnaW5fXyA9IG9yaWdpbgoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gZiJ7c2VsZi5fX29yaWdpbl9fLl9fbmFtZV9ffS5hcmdzIgoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBQYXJhbVNwZWNBcmdzKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHNlbGYuX19vcmlnaW5fXyA9PSBvdGhlci5fX29yaWdpbl9fCgoKY2xhc3MgUGFyYW1TcGVjS3dhcmdzKF9GaW5hbCwgX0ltbXV0YWJsZSwgX3Jvb3Q9VHJ1ZSk6CiAgICAiIiJUaGUga3dhcmdzIGZvciBhIFBhcmFtU3BlYyBvYmplY3QuCgogICAgR2l2ZW4gYSBQYXJhbVNwZWMgb2JqZWN0IFAsIFAua3dhcmdzIGlzIGFuIGluc3RhbmNlIG9mIFBhcmFtU3BlY0t3YXJncy4KCiAgICBQYXJhbVNwZWNLd2FyZ3Mgb2JqZWN0cyBoYXZlIGEgcmVmZXJlbmNlIGJhY2sgdG8gdGhlaXIgUGFyYW1TcGVjOgoKICAgICAgIFAua3dhcmdzLl9fb3JpZ2luX18gaXMgUAoKICAgIFRoaXMgdHlwZSBpcyBtZWFudCBmb3IgcnVudGltZSBpbnRyb3NwZWN0aW9uIGFuZCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIHRvCiAgICBzdGF0aWMgdHlwZSBjaGVja2Vycy4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG9yaWdpbik6CiAgICAgICAgc2VsZi5fX29yaWdpbl9fID0gb3JpZ2luCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBmIntzZWxmLl9fb3JpZ2luX18uX19uYW1lX199Lmt3YXJncyIKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUGFyYW1TcGVjS3dhcmdzKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHNlbGYuX19vcmlnaW5fXyA9PSBvdGhlci5fX29yaWdpbl9fCgoKY2xhc3MgUGFyYW1TcGVjKF9GaW5hbCwgX0ltbXV0YWJsZSwgX0JvdW5kVmFyaWFuY2VNaXhpbiwgX1BpY2tsZVVzaW5nTmFtZU1peGluLAogICAgICAgICAgICAgICAgX3Jvb3Q9VHJ1ZSk6CiAgICAiIiJQYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbiB2YXJpYWJsZS4KCiAgICBVc2FnZTo6CgogICAgICAgUCA9IFBhcmFtU3BlYygnUCcpCgogICAgUGFyYW1ldGVyIHNwZWNpZmljYXRpb24gdmFyaWFibGVzIGV4aXN0IHByaW1hcmlseSBmb3IgdGhlIGJlbmVmaXQgb2Ygc3RhdGljCiAgICB0eXBlIGNoZWNrZXJzLiAgVGhleSBhcmUgdXNlZCB0byBmb3J3YXJkIHRoZSBwYXJhbWV0ZXIgdHlwZXMgb2Ygb25lCiAgICBjYWxsYWJsZSB0byBhbm90aGVyIGNhbGxhYmxlLCBhIHBhdHRlcm4gY29tbW9ubHkgZm91bmQgaW4gaGlnaGVyIG9yZGVyCiAgICBmdW5jdGlvbnMgYW5kIGRlY29yYXRvcnMuICBUaGV5IGFyZSBvbmx5IHZhbGlkIHdoZW4gdXNlZCBpbiBgYENvbmNhdGVuYXRlYGAsCiAgICBvciBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYGBDYWxsYWJsZWBgLCBvciBhcyBwYXJhbWV0ZXJzIGZvciB1c2VyLWRlZmluZWQKICAgIEdlbmVyaWNzLiAgU2VlIGNsYXNzIEdlbmVyaWMgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZ2VuZXJpYyB0eXBlcy4gIEFuCiAgICBleGFtcGxlIGZvciBhbm5vdGF0aW5nIGEgZGVjb3JhdG9yOjoKCiAgICAgICBUID0gVHlwZVZhcignVCcpCiAgICAgICBQID0gUGFyYW1TcGVjKCdQJykKCiAgICAgICBkZWYgYWRkX2xvZ2dpbmcoZjogQ2FsbGFibGVbUCwgVF0pIC0+IENhbGxhYmxlW1AsIFRdOgogICAgICAgICAgICcnJ0EgdHlwZS1zYWZlIGRlY29yYXRvciB0byBhZGQgbG9nZ2luZyB0byBhIGZ1bmN0aW9uLicnJwogICAgICAgICAgIGRlZiBpbm5lcigqYXJnczogUC5hcmdzLCAqKmt3YXJnczogUC5rd2FyZ3MpIC0+IFQ6CiAgICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbyhmJ3tmLl9fbmFtZV9ffSB3YXMgY2FsbGVkJykKICAgICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICAgIHJldHVybiBpbm5lcgoKICAgICAgIEBhZGRfbG9nZ2luZwogICAgICAgZGVmIGFkZF90d28oeDogZmxvYXQsIHk6IGZsb2F0KSAtPiBmbG9hdDoKICAgICAgICAgICAnJydBZGQgdHdvIG51bWJlcnMgdG9nZXRoZXIuJycnCiAgICAgICAgICAgcmV0dXJuIHggKyB5CgogICAgUGFyYW1ldGVyIHNwZWNpZmljYXRpb24gdmFyaWFibGVzIGRlZmluZWQgd2l0aCBjb3ZhcmlhbnQ9VHJ1ZSBvcgogICAgY29udHJhdmFyaWFudD1UcnVlIGNhbiBiZSB1c2VkIHRvIGRlY2xhcmUgY292YXJpYW50IG9yIGNvbnRyYXZhcmlhbnQKICAgIGdlbmVyaWMgdHlwZXMuICBUaGVzZSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgdmFsaWQsIGJ1dCB0aGVpciBhY3R1YWwgc2VtYW50aWNzCiAgICBhcmUgeWV0IHRvIGJlIGRlY2lkZWQuICBTZWUgUEVQIDYxMiBmb3IgZGV0YWlscy4KCiAgICBQYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbiB2YXJpYWJsZXMgY2FuIGJlIGludHJvc3BlY3RlZC4gZS5nLjoKCiAgICAgICBQLl9fbmFtZV9fID09ICdQJwogICAgICAgUC5fX2JvdW5kX18gPT0gTm9uZQogICAgICAgUC5fX2NvdmFyaWFudF9fID09IEZhbHNlCiAgICAgICBQLl9fY29udHJhdmFyaWFudF9fID09IEZhbHNlCgogICAgTm90ZSB0aGF0IG9ubHkgcGFyYW1ldGVyIHNwZWNpZmljYXRpb24gdmFyaWFibGVzIGRlZmluZWQgaW4gZ2xvYmFsIHNjb3BlIGNhbgogICAgYmUgcGlja2xlZC4KICAgICIiIgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFyZ3Moc2VsZik6CiAgICAgICAgcmV0dXJuIFBhcmFtU3BlY0FyZ3Moc2VsZikKCiAgICBAcHJvcGVydHkKICAgIGRlZiBrd2FyZ3Moc2VsZik6CiAgICAgICAgcmV0dXJuIFBhcmFtU3BlY0t3YXJncyhzZWxmKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCAqLCBib3VuZD1Ob25lLCBjb3ZhcmlhbnQ9RmFsc2UsIGNvbnRyYXZhcmlhbnQ9RmFsc2UpOgogICAgICAgIHNlbGYuX19uYW1lX18gPSBuYW1lCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhib3VuZCwgY292YXJpYW50LCBjb250cmF2YXJpYW50KQogICAgICAgIGRlZl9tb2QgPSBfY2FsbGVyKCkKICAgICAgICBpZiBkZWZfbW9kICE9ICd0eXBpbmcnOgogICAgICAgICAgICBzZWxmLl9fbW9kdWxlX18gPSBkZWZfbW9kCgogICAgZGVmIF9fdHlwaW5nX3N1YnN0X18oc2VsZiwgYXJnKToKICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgKGxpc3QsIHR1cGxlKSk6CiAgICAgICAgICAgIGFyZyA9IHR1cGxlKF90eXBlX2NoZWNrKGEsICJFeHBlY3RlZCBhIHR5cGUuIikgZm9yIGEgaW4gYXJnKQogICAgICAgIGVsaWYgbm90IF9pc19wYXJhbV9leHByKGFyZyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIkV4cGVjdGVkIGEgbGlzdCBvZiB0eXBlcywgYW4gZWxsaXBzaXMsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiUGFyYW1TcGVjLCBvciBDb25jYXRlbmF0ZS4gR290IHthcmd9IikKICAgICAgICByZXR1cm4gYXJnCgogICAgZGVmIF9fdHlwaW5nX3ByZXBhcmVfc3Vic3RfXyhzZWxmLCBhbGlhcywgYXJncyk6CiAgICAgICAgcGFyYW1zID0gYWxpYXMuX19wYXJhbWV0ZXJzX18KICAgICAgICBpID0gcGFyYW1zLmluZGV4KHNlbGYpCiAgICAgICAgaWYgaSA+PSBsZW4oYXJncyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIlRvbyBmZXcgYXJndW1lbnRzIGZvciB7YWxpYXN9IikKICAgICAgICAjIFNwZWNpYWwgY2FzZSB3aGVyZSBaW1tpbnQsIHN0ciwgYm9vbF1dID09IFpbaW50LCBzdHIsIGJvb2xdIGluIFBFUCA2MTIuCiAgICAgICAgaWYgbGVuKHBhcmFtcykgPT0gMSBhbmQgbm90IF9pc19wYXJhbV9leHByKGFyZ3NbMF0pOgogICAgICAgICAgICBhc3NlcnQgaSA9PSAwCiAgICAgICAgICAgIGFyZ3MgPSAoYXJncywpCiAgICAgICAgIyBDb252ZXJ0IGxpc3RzIHRvIHR1cGxlcyB0byBoZWxwIG90aGVyIGxpYnJhcmllcyBjYWNoZSB0aGUgcmVzdWx0cy4KICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXJnc1tpXSwgbGlzdCk6CiAgICAgICAgICAgIGFyZ3MgPSAoKmFyZ3NbOmldLCB0dXBsZShhcmdzW2ldKSwgKmFyZ3NbaSsxOl0pCiAgICAgICAgcmV0dXJuIGFyZ3MKCmRlZiBfaXNfZHVuZGVyKGF0dHIpOgogICAgcmV0dXJuIGF0dHIuc3RhcnRzd2l0aCgnX18nKSBhbmQgYXR0ci5lbmRzd2l0aCgnX18nKQoKY2xhc3MgX0Jhc2VHZW5lcmljQWxpYXMoX0ZpbmFsLCBfcm9vdD1UcnVlKToKICAgICIiIlRoZSBjZW50cmFsIHBhcnQgb2YgaW50ZXJuYWwgQVBJLgoKICAgIFRoaXMgcmVwcmVzZW50cyBhIGdlbmVyaWMgdmVyc2lvbiBvZiB0eXBlICdvcmlnaW4nIHdpdGggdHlwZSBhcmd1bWVudHMgJ3BhcmFtcycuCiAgICBUaGVyZSBhcmUgdHdvIGtpbmQgb2YgdGhlc2UgYWxpYXNlczogdXNlciBkZWZpbmVkIGFuZCBzcGVjaWFsLiBUaGUgc3BlY2lhbCBvbmVzCiAgICBhcmUgd3JhcHBlcnMgYXJvdW5kIGJ1aWx0aW4gY29sbGVjdGlvbnMgYW5kIEFCQ3MgaW4gY29sbGVjdGlvbnMuYWJjLiBUaGVzZSBtdXN0CiAgICBoYXZlICduYW1lJyBhbHdheXMgc2V0LiBJZiAnaW5zdCcgaXMgRmFsc2UsIHRoZW4gdGhlIGFsaWFzIGNhbid0IGJlIGluc3RhbnRpYXRlZCwKICAgIHRoaXMgaXMgdXNlZCBieSBlLmcuIHR5cGluZy5MaXN0IGFuZCB0eXBpbmcuRGljdC4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG9yaWdpbiwgKiwgaW5zdD1UcnVlLCBuYW1lPU5vbmUpOgogICAgICAgIHNlbGYuX2luc3QgPSBpbnN0CiAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICBzZWxmLl9fb3JpZ2luX18gPSBvcmlnaW4KICAgICAgICBzZWxmLl9fc2xvdHNfXyA9IE5vbmUgICMgVGhpcyBpcyBub3QgZG9jdW1lbnRlZC4KCiAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBub3Qgc2VsZi5faW5zdDoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiVHlwZSB7c2VsZi5fbmFtZX0gY2Fubm90IGJlIGluc3RhbnRpYXRlZDsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ1c2Uge3NlbGYuX19vcmlnaW5fXy5fX25hbWVfX30oKSBpbnN0ZWFkIikKICAgICAgICByZXN1bHQgPSBzZWxmLl9fb3JpZ2luX18oKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmVzdWx0Ll9fb3JpZ19jbGFzc19fID0gc2VsZgogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX19tcm9fZW50cmllc19fKHNlbGYsIGJhc2VzKToKICAgICAgICByZXMgPSBbXQogICAgICAgIGlmIHNlbGYuX19vcmlnaW5fXyBub3QgaW4gYmFzZXM6CiAgICAgICAgICAgIHJlcy5hcHBlbmQoc2VsZi5fX29yaWdpbl9fKQogICAgICAgIGkgPSBiYXNlcy5pbmRleChzZWxmKQogICAgICAgIGZvciBiIGluIGJhc2VzW2krMTpdOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGIsIF9CYXNlR2VuZXJpY0FsaWFzKSBvciBpc3N1YmNsYXNzKGIsIEdlbmVyaWMpOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXMuYXBwZW5kKEdlbmVyaWMpCiAgICAgICAgcmV0dXJuIHR1cGxlKHJlcykKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CiAgICAgICAgaWYgYXR0ciBpbiB7J19fbmFtZV9fJywgJ19fcXVhbG5hbWVfXyd9OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fbmFtZSBvciBzZWxmLl9fb3JpZ2luX18uX19uYW1lX18KCiAgICAgICAgIyBXZSBhcmUgY2FyZWZ1bCBmb3IgY29weSBhbmQgcGlja2xlLgogICAgICAgICMgQWxzbyBmb3Igc2ltcGxpY2l0eSB3ZSBkb24ndCByZWxheSBhbnkgZHVuZGVyIG5hbWVzCiAgICAgICAgaWYgJ19fb3JpZ2luX18nIGluIHNlbGYuX19kaWN0X18gYW5kIG5vdCBfaXNfZHVuZGVyKGF0dHIpOgogICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLl9fb3JpZ2luX18sIGF0dHIpCiAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikKCiAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgYXR0ciwgdmFsKToKICAgICAgICBpZiBfaXNfZHVuZGVyKGF0dHIpIG9yIGF0dHIgaW4geydfbmFtZScsICdfaW5zdCcsICdfbnBhcmFtcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX3BhcmFtc3BlY190dmFycyd9OgogICAgICAgICAgICBzdXBlcigpLl9fc2V0YXR0cl9fKGF0dHIsIHZhbCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZXRhdHRyKHNlbGYuX19vcmlnaW5fXywgYXR0ciwgdmFsKQoKICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgogICAgICAgIHJldHVybiBzZWxmLl9fc3ViY2xhc3NjaGVja19fKHR5cGUob2JqKSkKCiAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlN1YnNjcmlwdGVkIGdlbmVyaWNzIGNhbm5vdCBiZSB1c2VkIHdpdGgiCiAgICAgICAgICAgICAgICAgICAgICAgICIgY2xhc3MgYW5kIGluc3RhbmNlIGNoZWNrcyIpCgogICAgZGVmIF9fZGlyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxpc3Qoc2V0KHN1cGVyKCkuX19kaXJfXygpCiAgICAgICAgICAgICAgICArIFthdHRyIGZvciBhdHRyIGluIGRpcihzZWxmLl9fb3JpZ2luX18pIGlmIG5vdCBfaXNfZHVuZGVyKGF0dHIpXSkpCgoKIyBTcGVjaWFsIHR5cGluZyBjb25zdHJ1Y3RzIFVuaW9uLCBPcHRpb25hbCwgR2VuZXJpYywgQ2FsbGFibGUgYW5kIFR1cGxlCiMgdXNlIHRocmVlIHNwZWNpYWwgYXR0cmlidXRlcyBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmcgb2YgZ2VuZXJpYyB0eXBlczoKIyAqIF9fcGFyYW1ldGVyc19fIGlzIGEgdHVwbGUgb2YgdW5pcXVlIGZyZWUgdHlwZSBwYXJhbWV0ZXJzIG9mIGEgZ2VuZXJpYwojICAgdHlwZSwgZm9yIGV4YW1wbGUsIERpY3RbVCwgVF0uX19wYXJhbWV0ZXJzX18gPT0gKFQsKTsKIyAqIF9fb3JpZ2luX18ga2VlcHMgYSByZWZlcmVuY2UgdG8gYSB0eXBlIHRoYXQgd2FzIHN1YnNjcmlwdGVkLAojICAgZS5nLiwgVW5pb25bVCwgaW50XS5fX29yaWdpbl9fID09IFVuaW9uLCBvciB0aGUgbm9uLWdlbmVyaWMgdmVyc2lvbiBvZgojICAgdGhlIHR5cGUuCiMgKiBfX2FyZ3NfXyBpcyBhIHR1cGxlIG9mIGFsbCBhcmd1bWVudHMgdXNlZCBpbiBzdWJzY3JpcHRpbmcsCiMgICBlLmcuLCBEaWN0W1QsIGludF0uX19hcmdzX18gPT0gKFQsIGludCkuCgoKY2xhc3MgX0dlbmVyaWNBbGlhcyhfQmFzZUdlbmVyaWNBbGlhcywgX3Jvb3Q9VHJ1ZSk6CiAgICAjIFRoZSB0eXBlIG9mIHBhcmFtZXRlcml6ZWQgZ2VuZXJpY3MuCiAgICAjCiAgICAjIFRoYXQgaXMsIGZvciBleGFtcGxlLCBgdHlwZShMaXN0W2ludF0pYCBpcyBgX0dlbmVyaWNBbGlhc2AuCiAgICAjCiAgICAjIE9iamVjdHMgd2hpY2ggYXJlIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGluY2x1ZGU6CiAgICAjICogUGFyYW1ldGVyaXplZCBjb250YWluZXIgdHlwZXMsIGUuZy4gYFR1cGxlW2ludF1gLCBgTGlzdFtpbnRdYC4KICAgICMgICogTm90ZSB0aGF0IG5hdGl2ZSBjb250YWluZXIgdHlwZXMsIGUuZy4gYHR1cGxlYCwgYGxpc3RgLCB1c2UKICAgICMgICAgYHR5cGVzLkdlbmVyaWNBbGlhc2AgaW5zdGVhZC4KICAgICMgKiBQYXJhbWV0ZXJpemVkIGNsYXNzZXM6CiAgICAjICAgICBUID0gVHlwZVZhcignVCcpCiAgICAjICAgICBjbGFzcyBDKEdlbmVyaWNbVF0pOiBwYXNzCiAgICAjICAgICAjIENbaW50XSBpcyBhIF9HZW5lcmljQWxpYXMKICAgICMgKiBgQ2FsbGFibGVgIGFsaWFzZXMsIGdlbmVyaWMgYENhbGxhYmxlYCBhbGlhc2VzLCBhbmQKICAgICMgICBwYXJhbWV0ZXJpemVkIGBDYWxsYWJsZWAgYWxpYXNlczoKICAgICMgICAgIFQgPSBUeXBlVmFyKCdUJykKICAgICMgICAgICMgX0NhbGxhYmxlR2VuZXJpY0FsaWFzIGluaGVyaXRzIGZyb20gX0dlbmVyaWNBbGlhcy4KICAgICMgICAgIEEgPSBDYWxsYWJsZVtbXSwgTm9uZV0gICMgX0NhbGxhYmxlR2VuZXJpY0FsaWFzCiAgICAjICAgICBCID0gQ2FsbGFibGVbW1RdLCBOb25lXSAgIyBfQ2FsbGFibGVHZW5lcmljQWxpYXMKICAgICMgICAgIEMgPSBCW2ludF0gICMgX0NhbGxhYmxlR2VuZXJpY0FsaWFzCiAgICAjICogUGFyYW1ldGVyaXplZCBgRmluYWxgLCBgQ2xhc3NWYXJgIGFuZCBgVHlwZUd1YXJkYDoKICAgICMgICAgICMgQWxsIF9HZW5lcmljQWxpYXMKICAgICMgICAgIEZpbmFsW2ludF0KICAgICMgICAgIENsYXNzVmFyW2Zsb2F0XQogICAgIyAgICAgVHlwZVZhcltib29sXQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcmlnaW4sIGFyZ3MsICosIGluc3Q9VHJ1ZSwgbmFtZT1Ob25lLAogICAgICAgICAgICAgICAgIF9wYXJhbXNwZWNfdHZhcnM9RmFsc2UpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18ob3JpZ2luLCBpbnN0PWluc3QsIG5hbWU9bmFtZSkKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCB0dXBsZSk6CiAgICAgICAgICAgIGFyZ3MgPSAoYXJncywpCiAgICAgICAgc2VsZi5fX2FyZ3NfXyA9IHR1cGxlKC4uLiBpZiBhIGlzIF9UeXBpbmdFbGxpcHNpcyBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgZm9yIGEgaW4gYXJncykKICAgICAgICBzZWxmLl9fcGFyYW1ldGVyc19fID0gX2NvbGxlY3RfcGFyYW1ldGVycyhhcmdzKQogICAgICAgIHNlbGYuX3BhcmFtc3BlY190dmFycyA9IF9wYXJhbXNwZWNfdHZhcnMKICAgICAgICBpZiBub3QgbmFtZToKICAgICAgICAgICAgc2VsZi5fX21vZHVsZV9fID0gb3JpZ2luLl9fbW9kdWxlX18KCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0dlbmVyaWNBbGlhcyk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiAoc2VsZi5fX29yaWdpbl9fID09IG90aGVyLl9fb3JpZ2luX18KICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9fYXJnc19fID09IG90aGVyLl9fYXJnc19fKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fX29yaWdpbl9fLCBzZWxmLl9fYXJnc19fKSkKCiAgICBkZWYgX19vcl9fKHNlbGYsIHJpZ2h0KToKICAgICAgICByZXR1cm4gVW5pb25bc2VsZiwgcmlnaHRdCgogICAgZGVmIF9fcm9yX18oc2VsZiwgbGVmdCk6CiAgICAgICAgcmV0dXJuIFVuaW9uW2xlZnQsIHNlbGZdCgogICAgQF90cF9jYWNoZQogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGFyZ3MpOgogICAgICAgICMgUGFyYW1ldGVyaXplcyBhbiBhbHJlYWR5LXBhcmFtZXRlcml6ZWQgb2JqZWN0LgogICAgICAgICMKICAgICAgICAjIEZvciBleGFtcGxlLCB3ZSBhcnJpdmUgaGVyZSBkb2luZyBzb21ldGhpbmcgbGlrZToKICAgICAgICAjICAgVDEgPSBUeXBlVmFyKCdUMScpCiAgICAgICAgIyAgIFQyID0gVHlwZVZhcignVDInKQogICAgICAgICMgICBUMyA9IFR5cGVWYXIoJ1QzJykKICAgICAgICAjICAgY2xhc3MgQShHZW5lcmljW1QxXSk6IHBhc3MKICAgICAgICAjICAgQiA9IEFbVDJdICAjIEIgaXMgYSBfR2VuZXJpY0FsaWFzCiAgICAgICAgIyAgIEMgPSBCW1QzXSAgIyBJbnZva2VzIF9HZW5lcmljQWxpYXMuX19nZXRpdGVtX18KICAgICAgICAjCiAgICAgICAgIyBXZSBhbHNvIGFycml2ZSBoZXJlIHdoZW4gcGFyYW1ldGVyaXppbmcgYSBnZW5lcmljIGBDYWxsYWJsZWAgYWxpYXM6CiAgICAgICAgIyAgIFQgPSBUeXBlVmFyKCdUJykKICAgICAgICAjICAgQyA9IENhbGxhYmxlW1tUXSwgTm9uZV0KICAgICAgICAjICAgQ1tpbnRdICAjIEludm9rZXMgX0dlbmVyaWNBbGlhcy5fX2dldGl0ZW1fXwoKICAgICAgICBpZiBzZWxmLl9fb3JpZ2luX18gaW4gKEdlbmVyaWMsIFByb3RvY29sKToKICAgICAgICAgICAgIyBDYW4ndCBzdWJzY3JpcHQgR2VuZXJpY1suLi5dIG9yIFByb3RvY29sWy4uLl0uCiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIkNhbm5vdCBzdWJzY3JpcHQgYWxyZWFkeS1zdWJzY3JpcHRlZCB7c2VsZn0iKQogICAgICAgIGlmIG5vdCBzZWxmLl9fcGFyYW1ldGVyc19fOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJ7c2VsZn0gaXMgbm90IGEgZ2VuZXJpYyBjbGFzcyIpCgogICAgICAgICMgUHJlcHJvY2VzcyBgYXJnc2AuCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJncywgdHVwbGUpOgogICAgICAgICAgICBhcmdzID0gKGFyZ3MsKQogICAgICAgIGFyZ3MgPSB0dXBsZShfdHlwZV9jb252ZXJ0KHApIGZvciBwIGluIGFyZ3MpCiAgICAgICAgYXJncyA9IF91bnBhY2tfYXJncyhhcmdzKQogICAgICAgIG5ld19hcmdzID0gc2VsZi5fZGV0ZXJtaW5lX25ld19hcmdzKGFyZ3MpCiAgICAgICAgciA9IHNlbGYuY29weV93aXRoKG5ld19hcmdzKQogICAgICAgIHJldHVybiByCgogICAgZGVmIF9kZXRlcm1pbmVfbmV3X2FyZ3Moc2VsZiwgYXJncyk6CiAgICAgICAgIyBEZXRlcm1pbmVzIG5ldyBfX2FyZ3NfXyBmb3IgX19nZXRpdGVtX18uCiAgICAgICAgIwogICAgICAgICMgRm9yIGV4YW1wbGUsIHN1cHBvc2Ugd2UgaGFkOgogICAgICAgICMgICBUMSA9IFR5cGVWYXIoJ1QxJykKICAgICAgICAjICAgVDIgPSBUeXBlVmFyKCdUMicpCiAgICAgICAgIyAgIGNsYXNzIEEoR2VuZXJpY1tUMSwgVDJdKTogcGFzcwogICAgICAgICMgICBUMyA9IFR5cGVWYXIoJ1QzJykKICAgICAgICAjICAgQiA9IEFbaW50LCBUM10KICAgICAgICAjICAgQyA9IEJbc3RyXQogICAgICAgICMgYEIuX19hcmdzX19gIGlzIGAoaW50LCBUMylgLCBzbyBgQy5fX2FyZ3NfX2Agc2hvdWxkIGJlIGAoaW50LCBzdHIpYC4KICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHRoaXMgaXMgaGFyZGVyIHRoYW4gaXQgbG9va3MsIGJlY2F1c2UgaWYgYFQzYCBpcwogICAgICAgICMgYW55dGhpbmcgbW9yZSBleG90aWMgdGhhbiBhIHBsYWluIGBUeXBlVmFyYCwgd2UgbmVlZCB0byBjb25zaWRlcgogICAgICAgICMgZWRnZSBjYXNlcy4KCiAgICAgICAgcGFyYW1zID0gc2VsZi5fX3BhcmFtZXRlcnNfXwogICAgICAgICMgSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoaXMgd291bGQgYmUge1QzOiBzdHJ9CiAgICAgICAgZm9yIHBhcmFtIGluIHBhcmFtczoKICAgICAgICAgICAgcHJlcGFyZSA9IGdldGF0dHIocGFyYW0sICdfX3R5cGluZ19wcmVwYXJlX3N1YnN0X18nLCBOb25lKQogICAgICAgICAgICBpZiBwcmVwYXJlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgYXJncyA9IHByZXBhcmUoc2VsZiwgYXJncykKICAgICAgICBhbGVuID0gbGVuKGFyZ3MpCiAgICAgICAgcGxlbiA9IGxlbihwYXJhbXMpCiAgICAgICAgaWYgYWxlbiAhPSBwbGVuOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJUb28geydtYW55JyBpZiBhbGVuID4gcGxlbiBlbHNlICdmZXcnfSBhcmd1bWVudHMgZm9yIHtzZWxmfTsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIiBhY3R1YWwge2FsZW59LCBleHBlY3RlZCB7cGxlbn0iKQogICAgICAgIG5ld19hcmdfYnlfcGFyYW0gPSBkaWN0KHppcChwYXJhbXMsIGFyZ3MpKQoKICAgICAgICBuZXdfYXJncyA9IFtdCiAgICAgICAgZm9yIG9sZF9hcmcgaW4gc2VsZi5fX2FyZ3NfXzoKCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2xkX2FyZywgdHlwZSk6CiAgICAgICAgICAgICAgICBuZXdfYXJncy5hcHBlbmQob2xkX2FyZykKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBzdWJzdGZ1bmMgPSBnZXRhdHRyKG9sZF9hcmcsICdfX3R5cGluZ19zdWJzdF9fJywgTm9uZSkKICAgICAgICAgICAgaWYgc3Vic3RmdW5jOgogICAgICAgICAgICAgICAgbmV3X2FyZyA9IHN1YnN0ZnVuYyhuZXdfYXJnX2J5X3BhcmFtW29sZF9hcmddKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc3VicGFyYW1zID0gZ2V0YXR0cihvbGRfYXJnLCAnX19wYXJhbWV0ZXJzX18nLCAoKSkKICAgICAgICAgICAgICAgIGlmIG5vdCBzdWJwYXJhbXM6CiAgICAgICAgICAgICAgICAgICAgbmV3X2FyZyA9IG9sZF9hcmcKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc3ViYXJncyA9IFtdCiAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc3VicGFyYW1zOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHgsIFR5cGVWYXJUdXBsZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJhcmdzLmV4dGVuZChuZXdfYXJnX2J5X3BhcmFtW3hdKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViYXJncy5hcHBlbmQobmV3X2FyZ19ieV9wYXJhbVt4XSkKICAgICAgICAgICAgICAgICAgICBuZXdfYXJnID0gb2xkX2FyZ1t0dXBsZShzdWJhcmdzKV0KCiAgICAgICAgICAgIGlmIHNlbGYuX19vcmlnaW5fXyA9PSBjb2xsZWN0aW9ucy5hYmMuQ2FsbGFibGUgYW5kIGlzaW5zdGFuY2UobmV3X2FyZywgdHVwbGUpOgogICAgICAgICAgICAgICAgIyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGBDYWxsYWJsZWAuCiAgICAgICAgICAgICAgICAjICAgQyA9IENhbGxhYmxlW1tpbnRdLCBzdHJdCiAgICAgICAgICAgICAgICAjIEhlcmUsIGBDLl9fYXJnc19fYCBzaG91bGQgYmUgKGludCwgc3RyKSAtIE5PVCAoW2ludF0sIHN0cikuCiAgICAgICAgICAgICAgICAjIFRoYXQgbWVhbnMgdGhhdCBpZiB3ZSBoYWQgc29tZXRoaW5nIGxpa2UuLi4KICAgICAgICAgICAgICAgICMgICBQID0gUGFyYW1TcGVjKCdQJykKICAgICAgICAgICAgICAgICMgICBUID0gVHlwZVZhcignVCcpCiAgICAgICAgICAgICAgICAjICAgQyA9IENhbGxhYmxlW1AsIFRdCiAgICAgICAgICAgICAgICAjICAgRCA9IENbW2ludCwgc3RyXSwgZmxvYXRdCiAgICAgICAgICAgICAgICAjIC4uLndlIG5lZWQgdG8gYmUgY2FyZWZ1bDsgYG5ld19hcmdzYCBzaG91bGQgZW5kIHVwIGFzCiAgICAgICAgICAgICAgICAjIGAoaW50LCBzdHIsIGZsb2F0KWAgcmF0aGVyIHRoYW4gYChbaW50LCBzdHJdLCBmbG9hdClgLgogICAgICAgICAgICAgICAgbmV3X2FyZ3MuZXh0ZW5kKG5ld19hcmcpCiAgICAgICAgICAgIGVsaWYgX2lzX3VucGFja2VkX3R5cGV2YXJ0dXBsZShvbGRfYXJnKToKICAgICAgICAgICAgICAgICMgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBgX0dlbmVyaWNBbGlhc2AsIGBCYDoKICAgICAgICAgICAgICAgICMgICBjbGFzcyBBKEdlbmVyaWNbKlRzXSk6IC4uLgogICAgICAgICAgICAgICAgIyAgIEIgPSBBW1QsICpUc10KICAgICAgICAgICAgICAgICMgSWYgd2UgdGhlbiBkbzoKICAgICAgICAgICAgICAgICMgICBCW2Zsb2F0LCBpbnQsIHN0cl0KICAgICAgICAgICAgICAgICMgVGhlIGBuZXdfYXJnYCBjb3JyZXNwb25kaW5nIHRvIGBUYCB3aWxsIGJlIGBmbG9hdGAsIGFuZCB0aGUKICAgICAgICAgICAgICAgICMgYG5ld19hcmdgIGNvcnJlc3BvbmRpbmcgdG8gYCpUc2Agd2lsbCBiZSBgKGludCwgc3RyKWAuIFdlCiAgICAgICAgICAgICAgICAjIHNob3VsZCBqb2luIGFsbCB0aGVzZSB0eXBlcyB0b2dldGhlciBpbiBhIGZsYXQgbGlzdAogICAgICAgICAgICAgICAgIyBgKGZsb2F0LCBpbnQsIHN0cilgIC0gc28gYWdhaW4sIHdlIHNob3VsZCBgZXh0ZW5kYC4KICAgICAgICAgICAgICAgIG5ld19hcmdzLmV4dGVuZChuZXdfYXJnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbmV3X2FyZ3MuYXBwZW5kKG5ld19hcmcpCgogICAgICAgIHJldHVybiB0dXBsZShuZXdfYXJncykKCiAgICBkZWYgY29weV93aXRoKHNlbGYsIGFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fb3JpZ2luX18sIGFyZ3MsIG5hbWU9c2VsZi5fbmFtZSwgaW5zdD1zZWxmLl9pbnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFyYW1zcGVjX3R2YXJzPXNlbGYuX3BhcmFtc3BlY190dmFycykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fbmFtZToKICAgICAgICAgICAgbmFtZSA9ICd0eXBpbmcuJyArIHNlbGYuX25hbWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBuYW1lID0gX3R5cGVfcmVwcihzZWxmLl9fb3JpZ2luX18pCiAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXzoKICAgICAgICAgICAgYXJncyA9ICIsICIuam9pbihbX3R5cGVfcmVwcihhKSBmb3IgYSBpbiBzZWxmLl9fYXJnc19fXSkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFRvIGVuc3VyZSB0aGUgcmVwciBpcyBldmFsLWFibGUuCiAgICAgICAgICAgIGFyZ3MgPSAiKCkiCiAgICAgICAgcmV0dXJuIGYne25hbWV9W3thcmdzfV0nCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fbmFtZToKICAgICAgICAgICAgb3JpZ2luID0gZ2xvYmFscygpW3NlbGYuX25hbWVdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb3JpZ2luID0gc2VsZi5fX29yaWdpbl9fCiAgICAgICAgYXJncyA9IHR1cGxlKHNlbGYuX19hcmdzX18pCiAgICAgICAgaWYgbGVuKGFyZ3MpID09IDEgYW5kIG5vdCBpc2luc3RhbmNlKGFyZ3NbMF0sIHR1cGxlKToKICAgICAgICAgICAgYXJncywgPSBhcmdzCiAgICAgICAgcmV0dXJuIG9wZXJhdG9yLmdldGl0ZW0sIChvcmlnaW4sIGFyZ3MpCgogICAgZGVmIF9fbXJvX2VudHJpZXNfXyhzZWxmLCBiYXNlcyk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLl9fb3JpZ2luX18sIF9TcGVjaWFsRm9ybSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIkNhbm5vdCBzdWJjbGFzcyB7c2VsZiFyfSIpCgogICAgICAgIGlmIHNlbGYuX25hbWU6ICAjIGdlbmVyaWMgdmVyc2lvbiBvZiBhbiBBQkMgb3IgYnVpbHQtaW4gY2xhc3MKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19tcm9fZW50cmllc19fKGJhc2VzKQogICAgICAgIGlmIHNlbGYuX19vcmlnaW5fXyBpcyBHZW5lcmljOgogICAgICAgICAgICBpZiBQcm90b2NvbCBpbiBiYXNlczoKICAgICAgICAgICAgICAgIHJldHVybiAoKQogICAgICAgICAgICBpID0gYmFzZXMuaW5kZXgoc2VsZikKICAgICAgICAgICAgZm9yIGIgaW4gYmFzZXNbaSsxOl06CiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGIsIF9CYXNlR2VuZXJpY0FsaWFzKSBhbmQgYiBpcyBub3Qgc2VsZjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkKICAgICAgICByZXR1cm4gKHNlbGYuX19vcmlnaW5fXywpCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHlpZWxkIFVucGFja1tzZWxmXQoKCiMgX25wYXJhbXMgaXMgdGhlIG51bWJlciBvZiBhY2NlcHRlZCBwYXJhbWV0ZXJzLCBlLmcuIDAgZm9yIEhhc2hhYmxlLAojIDEgZm9yIExpc3QgYW5kIDIgZm9yIERpY3QuICBJdCBtYXkgYmUgLTEgaWYgdmFyaWFibGUgbnVtYmVyIG9mCiMgcGFyYW1ldGVycyBhcmUgYWNjZXB0ZWQgKG5lZWRzIGN1c3RvbSBfX2dldGl0ZW1fXykuCgpjbGFzcyBfU3BlY2lhbEdlbmVyaWNBbGlhcyhfTm90SXRlcmFibGUsIF9CYXNlR2VuZXJpY0FsaWFzLCBfcm9vdD1UcnVlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcmlnaW4sIG5wYXJhbXMsICosIGluc3Q9VHJ1ZSwgbmFtZT1Ob25lKToKICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIG5hbWUgPSBvcmlnaW4uX19uYW1lX18KICAgICAgICBzdXBlcigpLl9faW5pdF9fKG9yaWdpbiwgaW5zdD1pbnN0LCBuYW1lPW5hbWUpCiAgICAgICAgc2VsZi5fbnBhcmFtcyA9IG5wYXJhbXMKICAgICAgICBpZiBvcmlnaW4uX19tb2R1bGVfXyA9PSAnYnVpbHRpbnMnOgogICAgICAgICAgICBzZWxmLl9fZG9jX18gPSBmJ0EgZ2VuZXJpYyB2ZXJzaW9uIG9mIHtvcmlnaW4uX19xdWFsbmFtZV9ffS4nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fX2RvY19fID0gZidBIGdlbmVyaWMgdmVyc2lvbiBvZiB7b3JpZ2luLl9fbW9kdWxlX199LntvcmlnaW4uX19xdWFsbmFtZV9ffS4nCgogICAgQF90cF9jYWNoZQogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHBhcmFtcyk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1zLCB0dXBsZSk6CiAgICAgICAgICAgIHBhcmFtcyA9IChwYXJhbXMsKQogICAgICAgIG1zZyA9ICJQYXJhbWV0ZXJzIHRvIGdlbmVyaWMgdHlwZXMgbXVzdCBiZSB0eXBlcy4iCiAgICAgICAgcGFyYW1zID0gdHVwbGUoX3R5cGVfY2hlY2socCwgbXNnKSBmb3IgcCBpbiBwYXJhbXMpCiAgICAgICAgX2NoZWNrX2dlbmVyaWMoc2VsZiwgcGFyYW1zLCBzZWxmLl9ucGFyYW1zKQogICAgICAgIHJldHVybiBzZWxmLmNvcHlfd2l0aChwYXJhbXMpCgogICAgZGVmIGNvcHlfd2l0aChzZWxmLCBwYXJhbXMpOgogICAgICAgIHJldHVybiBfR2VuZXJpY0FsaWFzKHNlbGYuX19vcmlnaW5fXywgcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9c2VsZi5fbmFtZSwgaW5zdD1zZWxmLl9pbnN0KQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJ3R5cGluZy4nICsgc2VsZi5fbmFtZQoKICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoY2xzLCBfU3BlY2lhbEdlbmVyaWNBbGlhcyk6CiAgICAgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscy5fX29yaWdpbl9fLCBzZWxmLl9fb3JpZ2luX18pCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCBfR2VuZXJpY0FsaWFzKToKICAgICAgICAgICAgcmV0dXJuIGlzc3ViY2xhc3MoY2xzLCBzZWxmLl9fb3JpZ2luX18pCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uYW1lCgogICAgZGVmIF9fb3JfXyhzZWxmLCByaWdodCk6CiAgICAgICAgcmV0dXJuIFVuaW9uW3NlbGYsIHJpZ2h0XQoKICAgIGRlZiBfX3Jvcl9fKHNlbGYsIGxlZnQpOgogICAgICAgIHJldHVybiBVbmlvbltsZWZ0LCBzZWxmXQoKY2xhc3MgX0NhbGxhYmxlR2VuZXJpY0FsaWFzKF9Ob3RJdGVyYWJsZSwgX0dlbmVyaWNBbGlhcywgX3Jvb3Q9VHJ1ZSk6CiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgYXNzZXJ0IHNlbGYuX25hbWUgPT0gJ0NhbGxhYmxlJwogICAgICAgIGFyZ3MgPSBzZWxmLl9fYXJnc19fCiAgICAgICAgaWYgbGVuKGFyZ3MpID09IDIgYW5kIF9pc19wYXJhbV9leHByKGFyZ3NbMF0pOgogICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3JlcHJfXygpCiAgICAgICAgcmV0dXJuIChmJ3R5cGluZy5DYWxsYWJsZScKICAgICAgICAgICAgICAgIGYnW1t7IiwgIi5qb2luKFtfdHlwZV9yZXByKGEpIGZvciBhIGluIGFyZ3NbOi0xXV0pfV0sICcKICAgICAgICAgICAgICAgIGYne190eXBlX3JlcHIoYXJnc1stMV0pfV0nKQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIGFyZ3MgPSBzZWxmLl9fYXJnc19fCiAgICAgICAgaWYgbm90IChsZW4oYXJncykgPT0gMiBhbmQgX2lzX3BhcmFtX2V4cHIoYXJnc1swXSkpOgogICAgICAgICAgICBhcmdzID0gbGlzdChhcmdzWzotMV0pLCBhcmdzWy0xXQogICAgICAgIHJldHVybiBvcGVyYXRvci5nZXRpdGVtLCAoQ2FsbGFibGUsIGFyZ3MpCgoKY2xhc3MgX0NhbGxhYmxlVHlwZShfU3BlY2lhbEdlbmVyaWNBbGlhcywgX3Jvb3Q9VHJ1ZSk6CiAgICBkZWYgY29weV93aXRoKHNlbGYsIHBhcmFtcyk6CiAgICAgICAgcmV0dXJuIF9DYWxsYWJsZUdlbmVyaWNBbGlhcyhzZWxmLl9fb3JpZ2luX18sIHBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9c2VsZi5fbmFtZSwgaW5zdD1zZWxmLl9pbnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcmFtc3BlY190dmFycz1UcnVlKQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwYXJhbXMpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhcmFtcywgdHVwbGUpIG9yIGxlbihwYXJhbXMpICE9IDI6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FsbGFibGUgbXVzdCBiZSB1c2VkIGFzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsYWJsZVtbYXJnLCAuLi5dLCByZXN1bHRdLiIpCiAgICAgICAgYXJncywgcmVzdWx0ID0gcGFyYW1zCiAgICAgICAgIyBUaGlzIHJlbGF4ZXMgd2hhdCBhcmdzIGNhbiBiZSBvbiBwdXJwb3NlIHRvIGFsbG93IHRoaW5ncyBsaWtlCiAgICAgICAgIyBQRVAgNjEyIFBhcmFtU3BlYy4gIFJlc3BvbnNpYmlsaXR5IGZvciB3aGV0aGVyIGEgdXNlciBpcyB1c2luZwogICAgICAgICMgQ2FsbGFibGVbLi4uXSBwcm9wZXJseSBpcyBkZWZlcnJlZCB0byBzdGF0aWMgdHlwZSBjaGVja2Vycy4KICAgICAgICBpZiBpc2luc3RhbmNlKGFyZ3MsIGxpc3QpOgogICAgICAgICAgICBwYXJhbXMgPSAodHVwbGUoYXJncyksIHJlc3VsdCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXJhbXMgPSAoYXJncywgcmVzdWx0KQogICAgICAgIHJldHVybiBzZWxmLl9fZ2V0aXRlbV9pbm5lcl9fKHBhcmFtcykKCiAgICBAX3RwX2NhY2hlCiAgICBkZWYgX19nZXRpdGVtX2lubmVyX18oc2VsZiwgcGFyYW1zKToKICAgICAgICBhcmdzLCByZXN1bHQgPSBwYXJhbXMKICAgICAgICBtc2cgPSAiQ2FsbGFibGVbYXJncywgcmVzdWx0XTogcmVzdWx0IG11c3QgYmUgYSB0eXBlLiIKICAgICAgICByZXN1bHQgPSBfdHlwZV9jaGVjayhyZXN1bHQsIG1zZykKICAgICAgICBpZiBhcmdzIGlzIEVsbGlwc2lzOgogICAgICAgICAgICByZXR1cm4gc2VsZi5jb3B5X3dpdGgoKF9UeXBpbmdFbGxpcHNpcywgcmVzdWx0KSkKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCB0dXBsZSk6CiAgICAgICAgICAgIGFyZ3MgPSAoYXJncywpCiAgICAgICAgYXJncyA9IHR1cGxlKF90eXBlX2NvbnZlcnQoYXJnKSBmb3IgYXJnIGluIGFyZ3MpCiAgICAgICAgcGFyYW1zID0gYXJncyArIChyZXN1bHQsKQogICAgICAgIHJldHVybiBzZWxmLmNvcHlfd2l0aChwYXJhbXMpCgoKY2xhc3MgX1R1cGxlVHlwZShfU3BlY2lhbEdlbmVyaWNBbGlhcywgX3Jvb3Q9VHJ1ZSk6CiAgICBAX3RwX2NhY2hlCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1zKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbXMsIHR1cGxlKToKICAgICAgICAgICAgcGFyYW1zID0gKHBhcmFtcywpCiAgICAgICAgaWYgbGVuKHBhcmFtcykgPj0gMiBhbmQgcGFyYW1zWy0xXSBpcyAuLi46CiAgICAgICAgICAgIG1zZyA9ICJUdXBsZVt0LCAuLi5dOiB0IG11c3QgYmUgYSB0eXBlLiIKICAgICAgICAgICAgcGFyYW1zID0gdHVwbGUoX3R5cGVfY2hlY2socCwgbXNnKSBmb3IgcCBpbiBwYXJhbXNbOi0xXSkKICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29weV93aXRoKCgqcGFyYW1zLCBfVHlwaW5nRWxsaXBzaXMpKQogICAgICAgIG1zZyA9ICJUdXBsZVt0MCwgdDEsIC4uLl06IGVhY2ggdCBtdXN0IGJlIGEgdHlwZS4iCiAgICAgICAgcGFyYW1zID0gdHVwbGUoX3R5cGVfY2hlY2socCwgbXNnKSBmb3IgcCBpbiBwYXJhbXMpCiAgICAgICAgcmV0dXJuIHNlbGYuY29weV93aXRoKHBhcmFtcykKCgpjbGFzcyBfVW5pb25HZW5lcmljQWxpYXMoX05vdEl0ZXJhYmxlLCBfR2VuZXJpY0FsaWFzLCBfcm9vdD1UcnVlKToKICAgIGRlZiBjb3B5X3dpdGgoc2VsZiwgcGFyYW1zKToKICAgICAgICByZXR1cm4gVW5pb25bcGFyYW1zXQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoX1VuaW9uR2VuZXJpY0FsaWFzLCB0eXBlcy5VbmlvblR5cGUpKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHNldChzZWxmLl9fYXJnc19fKSA9PSBzZXQob3RoZXIuX19hcmdzX18pCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHJldHVybiBoYXNoKGZyb3plbnNldChzZWxmLl9fYXJnc19fKSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgYXJncyA9IHNlbGYuX19hcmdzX18KICAgICAgICBpZiBsZW4oYXJncykgPT0gMjoKICAgICAgICAgICAgaWYgYXJnc1swXSBpcyB0eXBlKE5vbmUpOgogICAgICAgICAgICAgICAgcmV0dXJuIGYndHlwaW5nLk9wdGlvbmFsW3tfdHlwZV9yZXByKGFyZ3NbMV0pfV0nCiAgICAgICAgICAgIGVsaWYgYXJnc1sxXSBpcyB0eXBlKE5vbmUpOgogICAgICAgICAgICAgICAgcmV0dXJuIGYndHlwaW5nLk9wdGlvbmFsW3tfdHlwZV9yZXByKGFyZ3NbMF0pfV0nCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19yZXByX18oKQoKICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgogICAgICAgIHJldHVybiBzZWxmLl9fc3ViY2xhc3NjaGVja19fKHR5cGUob2JqKSkKCiAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKICAgICAgICBmb3IgYXJnIGluIHNlbGYuX19hcmdzX186CiAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoY2xzLCBhcmcpOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICBmdW5jLCAob3JpZ2luLCBhcmdzKSA9IHN1cGVyKCkuX19yZWR1Y2VfXygpCiAgICAgICAgcmV0dXJuIGZ1bmMsIChVbmlvbiwgYXJncykKCgpkZWYgX3ZhbHVlX2FuZF90eXBlX2l0ZXIocGFyYW1ldGVycyk6CiAgICByZXR1cm4gKChwLCB0eXBlKHApKSBmb3IgcCBpbiBwYXJhbWV0ZXJzKQoKCmNsYXNzIF9MaXRlcmFsR2VuZXJpY0FsaWFzKF9HZW5lcmljQWxpYXMsIF9yb290PVRydWUpOgoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfTGl0ZXJhbEdlbmVyaWNBbGlhcyk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICAgICByZXR1cm4gc2V0KF92YWx1ZV9hbmRfdHlwZV9pdGVyKHNlbGYuX19hcmdzX18pKSA9PSBzZXQoX3ZhbHVlX2FuZF90eXBlX2l0ZXIob3RoZXIuX19hcmdzX18pKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaChmcm96ZW5zZXQoX3ZhbHVlX2FuZF90eXBlX2l0ZXIoc2VsZi5fX2FyZ3NfXykpKQoKCmNsYXNzIF9Db25jYXRlbmF0ZUdlbmVyaWNBbGlhcyhfR2VuZXJpY0FsaWFzLCBfcm9vdD1UcnVlKToKICAgIGRlZiBjb3B5X3dpdGgoc2VsZiwgcGFyYW1zKToKICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtc1stMV0sIChsaXN0LCB0dXBsZSkpOgogICAgICAgICAgICByZXR1cm4gKCpwYXJhbXNbOi0xXSwgKnBhcmFtc1stMV0pCiAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJhbXNbLTFdLCBfQ29uY2F0ZW5hdGVHZW5lcmljQWxpYXMpOgogICAgICAgICAgICBwYXJhbXMgPSAoKnBhcmFtc1s6LTFdLCAqcGFyYW1zWy0xXS5fX2FyZ3NfXykKICAgICAgICByZXR1cm4gc3VwZXIoKS5jb3B5X3dpdGgocGFyYW1zKQoKCkBfU3BlY2lhbEZvcm0KZGVmIFVucGFjayhzZWxmLCBwYXJhbWV0ZXJzKToKICAgICIiIlR5cGUgdW5wYWNrIG9wZXJhdG9yLgoKICAgIFRoZSB0eXBlIHVucGFjayBvcGVyYXRvciB0YWtlcyB0aGUgY2hpbGQgdHlwZXMgZnJvbSBzb21lIGNvbnRhaW5lciB0eXBlLAogICAgc3VjaCBhcyBgdHVwbGVbaW50LCBzdHJdYCBvciBhIGBUeXBlVmFyVHVwbGVgLCBhbmQgJ3B1bGxzIHRoZW0gb3V0Jy4gRm9yCiAgICBleGFtcGxlOgoKICAgICAgIyBGb3Igc29tZSBnZW5lcmljIGNsYXNzIGBGb29gOgogICAgICBGb29bVW5wYWNrW3R1cGxlW2ludCwgc3RyXV1dICAjIEVxdWl2YWxlbnQgdG8gRm9vW2ludCwgc3RyXQoKICAgICAgVHMgPSBUeXBlVmFyVHVwbGUoJ1RzJykKICAgICAgIyBTcGVjaWZpZXMgdGhhdCBgQmFyYCBpcyBnZW5lcmljIGluIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdHlwZXMuCiAgICAgICMgKFRoaW5rIG9mIGBUc2AgYXMgYSB0dXBsZSBvZiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGluZGl2aWR1YWwKICAgICAgIyAgYFR5cGVWYXJgcywgd2hpY2ggdGhlIGBVbnBhY2tgIGlzICdwdWxsaW5nIG91dCcgZGlyZWN0bHkgaW50byB0aGUKICAgICAgIyAgYEdlbmVyaWNbXWAuKQogICAgICBjbGFzcyBCYXIoR2VuZXJpY1tVbnBhY2tbVHNdXSk6IC4uLgogICAgICBCYXJbaW50XSAgIyBWYWxpZAogICAgICBCYXJbaW50LCBzdHJdICAjIEFsc28gdmFsaWQKCiAgICBGcm9tIFB5dGhvbiAzLjExLCB0aGlzIGNhbiBhbHNvIGJlIGRvbmUgdXNpbmcgdGhlIGAqYCBvcGVyYXRvcjoKCiAgICAgICAgRm9vWyp0dXBsZVtpbnQsIHN0cl1dCiAgICAgICAgY2xhc3MgQmFyKEdlbmVyaWNbKlRzXSk6IC4uLgoKICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBvbmx5IHNvbWUgcnVudGltZSBjaGVja2luZyBvZiB0aGlzIG9wZXJhdG9yLiBOb3QKICAgIGV2ZXJ5dGhpbmcgdGhlIHJ1bnRpbWUgYWxsb3dzIG1heSBiZSBhY2NlcHRlZCBieSBzdGF0aWMgdHlwZSBjaGVja2Vycy4KCiAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFBFUCA2NDYuCiAgICAiIiIKICAgIGl0ZW0gPSBfdHlwZV9jaGVjayhwYXJhbWV0ZXJzLCBmJ3tzZWxmfSBhY2NlcHRzIG9ubHkgc2luZ2xlIHR5cGUuJykKICAgIHJldHVybiBfVW5wYWNrR2VuZXJpY0FsaWFzKG9yaWdpbj1zZWxmLCBhcmdzPShpdGVtLCkpCgoKY2xhc3MgX1VucGFja0dlbmVyaWNBbGlhcyhfR2VuZXJpY0FsaWFzLCBfcm9vdD1UcnVlKToKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIyBgVW5wYWNrYCBvbmx5IHRha2VzIG9uZSBhcmd1bWVudCwgc28gX19hcmdzX18gc2hvdWxkIGNvbnRhaW4gb25seQogICAgICAgICMgYSBzaW5nbGUgaXRlbS4KICAgICAgICByZXR1cm4gJyonICsgcmVwcihzZWxmLl9fYXJnc19fWzBdKQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBhcmdzKToKICAgICAgICBpZiBzZWxmLl9fdHlwaW5nX2lzX3VucGFja2VkX3R5cGV2YXJ0dXBsZV9fOgogICAgICAgICAgICByZXR1cm4gYXJncwogICAgICAgIHJldHVybiBzdXBlcigpLl9fZ2V0aXRlbV9fKGFyZ3MpCgogICAgQHByb3BlcnR5CiAgICBkZWYgX190eXBpbmdfdW5wYWNrZWRfdHVwbGVfYXJnc19fKHNlbGYpOgogICAgICAgIGFzc2VydCBzZWxmLl9fb3JpZ2luX18gaXMgVW5wYWNrCiAgICAgICAgYXNzZXJ0IGxlbihzZWxmLl9fYXJnc19fKSA9PSAxCiAgICAgICAgYXJnLCA9IHNlbGYuX19hcmdzX18KICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgX0dlbmVyaWNBbGlhcyk6CiAgICAgICAgICAgIGFzc2VydCBhcmcuX19vcmlnaW5fXyBpcyB0dXBsZQogICAgICAgICAgICByZXR1cm4gYXJnLl9fYXJnc19fCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfX3R5cGluZ19pc191bnBhY2tlZF90eXBldmFydHVwbGVfXyhzZWxmKToKICAgICAgICBhc3NlcnQgc2VsZi5fX29yaWdpbl9fIGlzIFVucGFjawogICAgICAgIGFzc2VydCBsZW4oc2VsZi5fX2FyZ3NfXykgPT0gMQogICAgICAgIHJldHVybiBpc2luc3RhbmNlKHNlbGYuX19hcmdzX19bMF0sIFR5cGVWYXJUdXBsZSkKCgpjbGFzcyBHZW5lcmljOgogICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgZ2VuZXJpYyB0eXBlcy4KCiAgICBBIGdlbmVyaWMgdHlwZSBpcyB0eXBpY2FsbHkgZGVjbGFyZWQgYnkgaW5oZXJpdGluZyBmcm9tCiAgICB0aGlzIGNsYXNzIHBhcmFtZXRlcml6ZWQgd2l0aCBvbmUgb3IgbW9yZSB0eXBlIHZhcmlhYmxlcy4KICAgIEZvciBleGFtcGxlLCBhIGdlbmVyaWMgbWFwcGluZyB0eXBlIG1pZ2h0IGJlIGRlZmluZWQgYXM6OgoKICAgICAgY2xhc3MgTWFwcGluZyhHZW5lcmljW0tULCBWVF0pOgogICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleTogS1QpIC0+IFZUOgogICAgICAgICAgICAgIC4uLgogICAgICAgICAgIyBFdGMuCgogICAgVGhpcyBjbGFzcyBjYW4gdGhlbiBiZSB1c2VkIGFzIGZvbGxvd3M6OgoKICAgICAgZGVmIGxvb2t1cF9uYW1lKG1hcHBpbmc6IE1hcHBpbmdbS1QsIFZUXSwga2V5OiBLVCwgZGVmYXVsdDogVlQpIC0+IFZUOgogICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIHJldHVybiBtYXBwaW5nW2tleV0KICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgIiIiCiAgICBfX3Nsb3RzX18gPSAoKQogICAgX2lzX3Byb3RvY29sID0gRmFsc2UKCiAgICBAX3RwX2NhY2hlCiAgICBkZWYgX19jbGFzc19nZXRpdGVtX18oY2xzLCBwYXJhbXMpOgogICAgICAgICIiIlBhcmFtZXRlcml6ZXMgYSBnZW5lcmljIGNsYXNzLgoKICAgICAgICBBdCBsZWFzdCwgcGFyYW1ldGVyaXppbmcgYSBnZW5lcmljIGNsYXNzIGlzIHRoZSAqbWFpbiogdGhpbmcgdGhpcyBtZXRob2QKICAgICAgICBkb2VzLiBGb3IgZXhhbXBsZSwgZm9yIHNvbWUgZ2VuZXJpYyBjbGFzcyBgRm9vYCwgdGhpcyBpcyBjYWxsZWQgd2hlbiB3ZQogICAgICAgIGRvIGBGb29baW50XWAgLSB0aGVyZSwgd2l0aCBgY2xzPUZvb2AgYW5kIGBwYXJhbXM9aW50YC4KCiAgICAgICAgSG93ZXZlciwgbm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIGFsc28gY2FsbGVkIHdoZW4gZGVmaW5pbmcgZ2VuZXJpYwogICAgICAgIGNsYXNzZXMgaW4gdGhlIGZpcnN0IHBsYWNlIHdpdGggYGNsYXNzIEZvbyhHZW5lcmljW1RdKTogLi4uYC4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbXMsIHR1cGxlKToKICAgICAgICAgICAgcGFyYW1zID0gKHBhcmFtcywpCgogICAgICAgIHBhcmFtcyA9IHR1cGxlKF90eXBlX2NvbnZlcnQocCkgZm9yIHAgaW4gcGFyYW1zKQogICAgICAgIGlmIGNscyBpbiAoR2VuZXJpYywgUHJvdG9jb2wpOgogICAgICAgICAgICAjIEdlbmVyaWMgYW5kIFByb3RvY29sIGNhbiBvbmx5IGJlIHN1YnNjcmlwdGVkIHdpdGggdW5pcXVlIHR5cGUgdmFyaWFibGVzLgogICAgICAgICAgICBpZiBub3QgcGFyYW1zOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgIGYiUGFyYW1ldGVyIGxpc3QgdG8ge2Nscy5fX3F1YWxuYW1lX199Wy4uLl0gY2Fubm90IGJlIGVtcHR5IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBpZiBub3QgYWxsKF9pc190eXBldmFyX2xpa2UocCkgZm9yIHAgaW4gcGFyYW1zKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmIlBhcmFtZXRlcnMgdG8ge2Nscy5fX25hbWVfX31bLi4uXSBtdXN0IGFsbCBiZSB0eXBlIHZhcmlhYmxlcyAiCiAgICAgICAgICAgICAgICAgICAgZiJvciBwYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbiB2YXJpYWJsZXMuIikKICAgICAgICAgICAgaWYgbGVuKHNldChwYXJhbXMpKSAhPSBsZW4ocGFyYW1zKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmIlBhcmFtZXRlcnMgdG8ge2Nscy5fX25hbWVfX31bLi4uXSBtdXN0IGFsbCBiZSB1bmlxdWUiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgU3Vic2NyaXB0aW5nIGEgcmVndWxhciBHZW5lcmljIHN1YmNsYXNzLgogICAgICAgICAgICBmb3IgcGFyYW0gaW4gY2xzLl9fcGFyYW1ldGVyc19fOgogICAgICAgICAgICAgICAgcHJlcGFyZSA9IGdldGF0dHIocGFyYW0sICdfX3R5cGluZ19wcmVwYXJlX3N1YnN0X18nLCBOb25lKQogICAgICAgICAgICAgICAgaWYgcHJlcGFyZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBwcmVwYXJlKGNscywgcGFyYW1zKQogICAgICAgICAgICBfY2hlY2tfZ2VuZXJpYyhjbHMsIHBhcmFtcywgbGVuKGNscy5fX3BhcmFtZXRlcnNfXykpCgogICAgICAgICAgICBuZXdfYXJncyA9IFtdCiAgICAgICAgICAgIGZvciBwYXJhbSwgbmV3X2FyZyBpbiB6aXAoY2xzLl9fcGFyYW1ldGVyc19fLCBwYXJhbXMpOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJhbSwgVHlwZVZhclR1cGxlKToKICAgICAgICAgICAgICAgICAgICBuZXdfYXJncy5leHRlbmQobmV3X2FyZykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbmV3X2FyZ3MuYXBwZW5kKG5ld19hcmcpCiAgICAgICAgICAgIHBhcmFtcyA9IHR1cGxlKG5ld19hcmdzKQoKICAgICAgICByZXR1cm4gX0dlbmVyaWNBbGlhcyhjbHMsIHBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFyYW1zcGVjX3R2YXJzPVRydWUpCgogICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCphcmdzLCAqKmt3YXJncykKICAgICAgICB0dmFycyA9IFtdCiAgICAgICAgaWYgJ19fb3JpZ19iYXNlc19fJyBpbiBjbHMuX19kaWN0X186CiAgICAgICAgICAgIGVycm9yID0gR2VuZXJpYyBpbiBjbHMuX19vcmlnX2Jhc2VzX18KICAgICAgICBlbHNlOgogICAgICAgICAgICBlcnJvciA9IChHZW5lcmljIGluIGNscy5fX2Jhc2VzX18gYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGNscy5fX25hbWVfXyAhPSAnUHJvdG9jb2wnIGFuZAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlKGNscykgIT0gX1R5cGVkRGljdE1ldGEpCiAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGluaGVyaXQgZnJvbSBwbGFpbiBHZW5lcmljIikKICAgICAgICBpZiAnX19vcmlnX2Jhc2VzX18nIGluIGNscy5fX2RpY3RfXzoKICAgICAgICAgICAgdHZhcnMgPSBfY29sbGVjdF9wYXJhbWV0ZXJzKGNscy5fX29yaWdfYmFzZXNfXykKICAgICAgICAgICAgIyBMb29rIGZvciBHZW5lcmljW1QxLCAuLi4sIFRuXS4KICAgICAgICAgICAgIyBJZiBmb3VuZCwgdHZhcnMgbXVzdCBiZSBhIHN1YnNldCBvZiBpdC4KICAgICAgICAgICAgIyBJZiBub3QgZm91bmQsIHR2YXJzIGlzIGl0LgogICAgICAgICAgICAjIEFsc28gY2hlY2sgZm9yIGFuZCByZWplY3QgcGxhaW4gR2VuZXJpYywKICAgICAgICAgICAgIyBhbmQgcmVqZWN0IG11bHRpcGxlIEdlbmVyaWNbLi4uXS4KICAgICAgICAgICAgZ3ZhcnMgPSBOb25lCiAgICAgICAgICAgIGZvciBiYXNlIGluIGNscy5fX29yaWdfYmFzZXNfXzoKICAgICAgICAgICAgICAgIGlmIChpc2luc3RhbmNlKGJhc2UsIF9HZW5lcmljQWxpYXMpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICBiYXNlLl9fb3JpZ2luX18gaXMgR2VuZXJpYyk6CiAgICAgICAgICAgICAgICAgICAgaWYgZ3ZhcnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgaW5oZXJpdCBmcm9tIEdlbmVyaWNbLi4uXSBtdWx0aXBsZSB0eXBlcy4iKQogICAgICAgICAgICAgICAgICAgIGd2YXJzID0gYmFzZS5fX3BhcmFtZXRlcnNfXwogICAgICAgICAgICBpZiBndmFycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHR2YXJzZXQgPSBzZXQodHZhcnMpCiAgICAgICAgICAgICAgICBndmFyc2V0ID0gc2V0KGd2YXJzKQogICAgICAgICAgICAgICAgaWYgbm90IHR2YXJzZXQgPD0gZ3ZhcnNldDoKICAgICAgICAgICAgICAgICAgICBzX3ZhcnMgPSAnLCAnLmpvaW4oc3RyKHQpIGZvciB0IGluIHR2YXJzIGlmIHQgbm90IGluIGd2YXJzZXQpCiAgICAgICAgICAgICAgICAgICAgc19hcmdzID0gJywgJy5qb2luKHN0cihnKSBmb3IgZyBpbiBndmFycykKICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJTb21lIHR5cGUgdmFyaWFibGVzICh7c192YXJzfSkgYXJlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIiBub3QgbGlzdGVkIGluIEdlbmVyaWNbe3NfYXJnc31dIikKICAgICAgICAgICAgICAgIHR2YXJzID0gZ3ZhcnMKICAgICAgICBjbHMuX19wYXJhbWV0ZXJzX18gPSB0dXBsZSh0dmFycykKCgpjbGFzcyBfVHlwaW5nRWxsaXBzaXM6CiAgICAiIiJJbnRlcm5hbCBwbGFjZWhvbGRlciBmb3IgLi4uIChlbGxpcHNpcykuIiIiCgoKX1RZUElOR19JTlRFUk5BTFMgPSBbJ19fcGFyYW1ldGVyc19fJywgJ19fb3JpZ19iYXNlc19fJywgICdfX29yaWdfY2xhc3NfXycsCiAgICAgICAgICAgICAgICAgICAgICdfaXNfcHJvdG9jb2wnLCAnX2lzX3J1bnRpbWVfcHJvdG9jb2wnXQoKX1NQRUNJQUxfTkFNRVMgPSBbJ19fYWJzdHJhY3RtZXRob2RzX18nLCAnX19hbm5vdGF0aW9uc19fJywgJ19fZGljdF9fJywgJ19fZG9jX18nLAogICAgICAgICAgICAgICAgICAnX19pbml0X18nLCAnX19tb2R1bGVfXycsICdfX25ld19fJywgJ19fc2xvdHNfXycsCiAgICAgICAgICAgICAgICAgICdfX3N1YmNsYXNzaG9va19fJywgJ19fd2Vha3JlZl9fJywgJ19fY2xhc3NfZ2V0aXRlbV9fJ10KCiMgVGhlc2Ugc3BlY2lhbCBhdHRyaWJ1dGVzIHdpbGwgYmUgbm90IGNvbGxlY3RlZCBhcyBwcm90b2NvbCBtZW1iZXJzLgpFWENMVURFRF9BVFRSSUJVVEVTID0gX1RZUElOR19JTlRFUk5BTFMgKyBfU1BFQ0lBTF9OQU1FUyArIFsnX011dGFibGVNYXBwaW5nX19tYXJrZXInXQoKCmRlZiBfZ2V0X3Byb3RvY29sX2F0dHJzKGNscyk6CiAgICAiIiJDb2xsZWN0IHByb3RvY29sIG1lbWJlcnMgZnJvbSBhIHByb3RvY29sIGNsYXNzIG9iamVjdHMuCgogICAgVGhpcyBpbmNsdWRlcyBuYW1lcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5LCBhcyB3ZWxsCiAgICBhcyBuYW1lcyB0aGF0IGFwcGVhciBpbiBhbm5vdGF0aW9ucy4gU3BlY2lhbCBuYW1lcyAoYWJvdmUpIGFyZSBza2lwcGVkLgogICAgIiIiCiAgICBhdHRycyA9IHNldCgpCiAgICBmb3IgYmFzZSBpbiBjbHMuX19tcm9fX1s6LTFdOiAgIyB3aXRob3V0IG9iamVjdAogICAgICAgIGlmIGJhc2UuX19uYW1lX18gaW4gKCdQcm90b2NvbCcsICdHZW5lcmljJyk6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgYW5ub3RhdGlvbnMgPSBnZXRhdHRyKGJhc2UsICdfX2Fubm90YXRpb25zX18nLCB7fSkKICAgICAgICBmb3IgYXR0ciBpbiBsaXN0KGJhc2UuX19kaWN0X18ua2V5cygpKSArIGxpc3QoYW5ub3RhdGlvbnMua2V5cygpKToKICAgICAgICAgICAgaWYgbm90IGF0dHIuc3RhcnRzd2l0aCgnX2FiY18nKSBhbmQgYXR0ciBub3QgaW4gRVhDTFVERURfQVRUUklCVVRFUzoKICAgICAgICAgICAgICAgIGF0dHJzLmFkZChhdHRyKQogICAgcmV0dXJuIGF0dHJzCgoKZGVmIF9pc19jYWxsYWJsZV9tZW1iZXJzX29ubHkoY2xzKToKICAgICMgUEVQIDU0NCBwcm9oaWJpdHMgdXNpbmcgaXNzdWJjbGFzcygpIHdpdGggcHJvdG9jb2xzIHRoYXQgaGF2ZSBub24tbWV0aG9kIG1lbWJlcnMuCiAgICByZXR1cm4gYWxsKGNhbGxhYmxlKGdldGF0dHIoY2xzLCBhdHRyLCBOb25lKSkgZm9yIGF0dHIgaW4gX2dldF9wcm90b2NvbF9hdHRycyhjbHMpKQoKCmRlZiBfbm9faW5pdF9vcl9yZXBsYWNlX2luaXQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgIGNscyA9IHR5cGUoc2VsZikKCiAgICBpZiBjbHMuX2lzX3Byb3RvY29sOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcignUHJvdG9jb2xzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQnKQoKICAgICMgQWxyZWFkeSB1c2luZyBhIGN1c3RvbSBgX19pbml0X19gLiBObyBuZWVkIHRvIGNhbGN1bGF0ZSBjb3JyZWN0CiAgICAjIGBfX2luaXRfX2AgdG8gY2FsbC4gVGhpcyBjYW4gbGVhZCB0byBSZWN1cnNpb25FcnJvci4gU2VlIGJwby00NTEyMS4KICAgIGlmIGNscy5fX2luaXRfXyBpcyBub3QgX25vX2luaXRfb3JfcmVwbGFjZV9pbml0OgogICAgICAgIHJldHVybgoKICAgICMgSW5pdGlhbGx5LCBgX19pbml0X19gIG9mIGEgcHJvdG9jb2wgc3ViY2xhc3MgaXMgc2V0IHRvIGBfbm9faW5pdF9vcl9yZXBsYWNlX2luaXRgLgogICAgIyBUaGUgZmlyc3QgaW5zdGFudGlhdGlvbiBvZiB0aGUgc3ViY2xhc3Mgd2lsbCBjYWxsIGBfbm9faW5pdF9vcl9yZXBsYWNlX2luaXRgIHdoaWNoCiAgICAjIHNlYXJjaGVzIGZvciBhIHByb3BlciBuZXcgYF9faW5pdF9fYCBpbiB0aGUgTVJPLiBUaGUgbmV3IGBfX2luaXRfX2AKICAgICMgcmVwbGFjZXMgdGhlIHN1YmNsYXNzJyBvbGQgYF9faW5pdF9fYCAoaWUgYF9ub19pbml0X29yX3JlcGxhY2VfaW5pdGApLiBTdWJzZXF1ZW50CiAgICAjIGluc3RhbnRpYXRpb24gb2YgdGhlIHByb3RvY29sIHN1YmNsYXNzIHdpbGwgdGh1cyB1c2UgdGhlIG5ldwogICAgIyBgX19pbml0X19gIGFuZCBubyBsb25nZXIgY2FsbCBgX25vX2luaXRfb3JfcmVwbGFjZV9pbml0YC4KICAgIGZvciBiYXNlIGluIGNscy5fX21yb19fOgogICAgICAgIGluaXQgPSBiYXNlLl9fZGljdF9fLmdldCgnX19pbml0X18nLCBfbm9faW5pdF9vcl9yZXBsYWNlX2luaXQpCiAgICAgICAgaWYgaW5pdCBpcyBub3QgX25vX2luaXRfb3JfcmVwbGFjZV9pbml0OgogICAgICAgICAgICBjbHMuX19pbml0X18gPSBpbml0CiAgICAgICAgICAgIGJyZWFrCiAgICBlbHNlOgogICAgICAgICMgc2hvdWxkIG5vdCBoYXBwZW4KICAgICAgICBjbHMuX19pbml0X18gPSBvYmplY3QuX19pbml0X18KCiAgICBjbHMuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQoKCmRlZiBfY2FsbGVyKGRlcHRoPTEsIGRlZmF1bHQ9J19fbWFpbl9fJyk6CiAgICB0cnk6CiAgICAgICAgcmV0dXJuIHN5cy5fZ2V0ZnJhbWUoZGVwdGggKyAxKS5mX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycsIGRlZmF1bHQpCiAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKTogICMgRm9yIHBsYXRmb3JtcyB3aXRob3V0IF9nZXRmcmFtZSgpCiAgICAgICAgcmV0dXJuIE5vbmUKCgpkZWYgX2FsbG93X3JlY2tsZXNzX2NsYXNzX2NoZWNrcyhkZXB0aD0zKToKICAgICIiIkFsbG93IGluc3RhbmNlIGFuZCBjbGFzcyBjaGVja3MgZm9yIHNwZWNpYWwgc3RkbGliIG1vZHVsZXMuCgogICAgVGhlIGFiYyBhbmQgZnVuY3Rvb2xzIG1vZHVsZXMgaW5kaXNjcmltaW5hdGVseSBjYWxsIGlzaW5zdGFuY2UoKSBhbmQKICAgIGlzc3ViY2xhc3MoKSBvbiB0aGUgd2hvbGUgTVJPIG9mIGEgdXNlciBjbGFzcywgd2hpY2ggbWF5IGNvbnRhaW4gcHJvdG9jb2xzLgogICAgIiIiCiAgICByZXR1cm4gX2NhbGxlcihkZXB0aCkgaW4geydhYmMnLCAnZnVuY3Rvb2xzJywgTm9uZX0KCgpfUFJPVE9fQUxMT1dMSVNUID0gewogICAgJ2NvbGxlY3Rpb25zLmFiYyc6IFsKICAgICAgICAnQ2FsbGFibGUnLCAnQXdhaXRhYmxlJywgJ0l0ZXJhYmxlJywgJ0l0ZXJhdG9yJywgJ0FzeW5jSXRlcmFibGUnLAogICAgICAgICdIYXNoYWJsZScsICdTaXplZCcsICdDb250YWluZXInLCAnQ29sbGVjdGlvbicsICdSZXZlcnNpYmxlJywKICAgIF0sCiAgICAnY29udGV4dGxpYic6IFsnQWJzdHJhY3RDb250ZXh0TWFuYWdlcicsICdBYnN0cmFjdEFzeW5jQ29udGV4dE1hbmFnZXInXSwKfQoKCmNsYXNzIF9Qcm90b2NvbE1ldGEoQUJDTWV0YSk6CiAgICAjIFRoaXMgbWV0YWNsYXNzIGlzIHJlYWxseSB1bmZvcnR1bmF0ZSBhbmQgZXhpc3RzIG9ubHkgYmVjYXVzZSBvZgogICAgIyB0aGUgbGFjayBvZiBfX2luc3RhbmNlaG9va19fLgogICAgZGVmIF9faW5zdGFuY2VjaGVja19fKGNscywgaW5zdGFuY2UpOgogICAgICAgICMgV2UgbmVlZCB0aGlzIG1ldGhvZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBhdHRyaWJ1dGVzIGFyZQogICAgICAgICMgYXNzaWduZWQgaW4gX19pbml0X18uCiAgICAgICAgaWYgKAogICAgICAgICAgICBnZXRhdHRyKGNscywgJ19pc19wcm90b2NvbCcsIEZhbHNlKSBhbmQKICAgICAgICAgICAgbm90IGdldGF0dHIoY2xzLCAnX2lzX3J1bnRpbWVfcHJvdG9jb2wnLCBGYWxzZSkgYW5kCiAgICAgICAgICAgIG5vdCBfYWxsb3dfcmVja2xlc3NfY2xhc3NfY2hlY2tzKGRlcHRoPTIpCiAgICAgICAgKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJbnN0YW5jZSBhbmQgY2xhc3MgY2hlY2tzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgQHJ1bnRpbWVfY2hlY2thYmxlIHByb3RvY29scyIpCgogICAgICAgIGlmICgobm90IGdldGF0dHIoY2xzLCAnX2lzX3Byb3RvY29sJywgRmFsc2UpIG9yCiAgICAgICAgICAgICAgICBfaXNfY2FsbGFibGVfbWVtYmVyc19vbmx5KGNscykpIGFuZAogICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhpbnN0YW5jZS5fX2NsYXNzX18sIGNscykpOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIGlmIGNscy5faXNfcHJvdG9jb2w6CiAgICAgICAgICAgIGlmIGFsbChoYXNhdHRyKGluc3RhbmNlLCBhdHRyKSBhbmQKICAgICAgICAgICAgICAgICAgICAjIEFsbCAqbWV0aG9kcyogY2FuIGJlIGJsb2NrZWQgYnkgc2V0dGluZyB0aGVtIHRvIE5vbmUuCiAgICAgICAgICAgICAgICAgICAgKG5vdCBjYWxsYWJsZShnZXRhdHRyKGNscywgYXR0ciwgTm9uZSkpIG9yCiAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoaW5zdGFuY2UsIGF0dHIpIGlzIG5vdCBOb25lKQogICAgICAgICAgICAgICAgICAgIGZvciBhdHRyIGluIF9nZXRfcHJvdG9jb2xfYXR0cnMoY2xzKSk6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHJldHVybiBzdXBlcigpLl9faW5zdGFuY2VjaGVja19fKGluc3RhbmNlKQoKCmNsYXNzIFByb3RvY29sKEdlbmVyaWMsIG1ldGFjbGFzcz1fUHJvdG9jb2xNZXRhKToKICAgICIiIkJhc2UgY2xhc3MgZm9yIHByb3RvY29sIGNsYXNzZXMuCgogICAgUHJvdG9jb2wgY2xhc3NlcyBhcmUgZGVmaW5lZCBhczo6CgogICAgICAgIGNsYXNzIFByb3RvKFByb3RvY29sKToKICAgICAgICAgICAgZGVmIG1ldGgoc2VsZikgLT4gaW50OgogICAgICAgICAgICAgICAgLi4uCgogICAgU3VjaCBjbGFzc2VzIGFyZSBwcmltYXJpbHkgdXNlZCB3aXRoIHN0YXRpYyB0eXBlIGNoZWNrZXJzIHRoYXQgcmVjb2duaXplCiAgICBzdHJ1Y3R1cmFsIHN1YnR5cGluZyAoc3RhdGljIGR1Y2stdHlwaW5nKSwgZm9yIGV4YW1wbGU6OgoKICAgICAgICBjbGFzcyBDOgogICAgICAgICAgICBkZWYgbWV0aChzZWxmKSAtPiBpbnQ6CiAgICAgICAgICAgICAgICByZXR1cm4gMAoKICAgICAgICBkZWYgZnVuYyh4OiBQcm90bykgLT4gaW50OgogICAgICAgICAgICByZXR1cm4geC5tZXRoKCkKCiAgICAgICAgZnVuYyhDKCkpICAjIFBhc3NlcyBzdGF0aWMgdHlwZSBjaGVjawoKICAgIFNlZSBQRVAgNTQ0IGZvciBkZXRhaWxzLiBQcm90b2NvbCBjbGFzc2VzIGRlY29yYXRlZCB3aXRoCiAgICBAdHlwaW5nLnJ1bnRpbWVfY2hlY2thYmxlIGFjdCBhcyBzaW1wbGUtbWluZGVkIHJ1bnRpbWUgcHJvdG9jb2xzIHRoYXQgY2hlY2sKICAgIG9ubHkgdGhlIHByZXNlbmNlIG9mIGdpdmVuIGF0dHJpYnV0ZXMsIGlnbm9yaW5nIHRoZWlyIHR5cGUgc2lnbmF0dXJlcy4KICAgIFByb3RvY29sIGNsYXNzZXMgY2FuIGJlIGdlbmVyaWMsIHRoZXkgYXJlIGRlZmluZWQgYXM6OgoKICAgICAgICBjbGFzcyBHZW5Qcm90byhQcm90b2NvbFtUXSk6CiAgICAgICAgICAgIGRlZiBtZXRoKHNlbGYpIC0+IFQ6CiAgICAgICAgICAgICAgICAuLi4KICAgICIiIgogICAgX19zbG90c19fID0gKCkKICAgIF9pc19wcm90b2NvbCA9IFRydWUKICAgIF9pc19ydW50aW1lX3Byb3RvY29sID0gRmFsc2UKCiAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKmFyZ3MsICoqa3dhcmdzKQoKICAgICAgICAjIERldGVybWluZSBpZiB0aGlzIGlzIGEgcHJvdG9jb2wgb3IgYSBjb25jcmV0ZSBzdWJjbGFzcy4KICAgICAgICBpZiBub3QgY2xzLl9fZGljdF9fLmdldCgnX2lzX3Byb3RvY29sJywgRmFsc2UpOgogICAgICAgICAgICBjbHMuX2lzX3Byb3RvY29sID0gYW55KGIgaXMgUHJvdG9jb2wgZm9yIGIgaW4gY2xzLl9fYmFzZXNfXykKCiAgICAgICAgIyBTZXQgKG9yIG92ZXJyaWRlKSB0aGUgcHJvdG9jb2wgc3ViY2xhc3MgaG9vay4KICAgICAgICBkZWYgX3Byb3RvX2hvb2sob3RoZXIpOgogICAgICAgICAgICBpZiBub3QgY2xzLl9fZGljdF9fLmdldCgnX2lzX3Byb3RvY29sJywgRmFsc2UpOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgICAgICAgICAjIEZpcnN0LCBwZXJmb3JtIHZhcmlvdXMgc2FuaXR5IGNoZWNrcy4KICAgICAgICAgICAgaWYgbm90IGdldGF0dHIoY2xzLCAnX2lzX3J1bnRpbWVfcHJvdG9jb2wnLCBGYWxzZSk6CiAgICAgICAgICAgICAgICBpZiBfYWxsb3dfcmVja2xlc3NfY2xhc3NfY2hlY2tzKCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkluc3RhbmNlIGFuZCBjbGFzcyBjaGVja3MgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgQHJ1bnRpbWVfY2hlY2thYmxlIHByb3RvY29scyIpCiAgICAgICAgICAgIGlmIG5vdCBfaXNfY2FsbGFibGVfbWVtYmVyc19vbmx5KGNscyk6CiAgICAgICAgICAgICAgICBpZiBfYWxsb3dfcmVja2xlc3NfY2xhc3NfY2hlY2tzKCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlByb3RvY29scyB3aXRoIG5vbi1tZXRob2QgbWVtYmVycyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGRvbid0IHN1cHBvcnQgaXNzdWJjbGFzcygpIikKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHR5cGUpOgogICAgICAgICAgICAgICAgIyBTYW1lIGVycm9yIG1lc3NhZ2UgYXMgZm9yIGlzc3ViY2xhc3MoMSwgaW50KS4KICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignaXNzdWJjbGFzcygpIGFyZyAxIG11c3QgYmUgYSBjbGFzcycpCgogICAgICAgICAgICAjIFNlY29uZCwgcGVyZm9ybSB0aGUgYWN0dWFsIHN0cnVjdHVyYWwgY29tcGF0aWJpbGl0eSBjaGVjay4KICAgICAgICAgICAgZm9yIGF0dHIgaW4gX2dldF9wcm90b2NvbF9hdHRycyhjbHMpOgogICAgICAgICAgICAgICAgZm9yIGJhc2UgaW4gb3RoZXIuX19tcm9fXzoKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBtZW1iZXJzIGFwcGVhcnMgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkuLi4KICAgICAgICAgICAgICAgICAgICBpZiBhdHRyIGluIGJhc2UuX19kaWN0X186CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJhc2UuX19kaWN0X19bYXR0cl0gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgICAgICAgICAjIC4uLm9yIGluIGFubm90YXRpb25zLCBpZiBpdCBpcyBhIHN1Yi1wcm90b2NvbC4KICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9ucyA9IGdldGF0dHIoYmFzZSwgJ19fYW5ub3RhdGlvbnNfXycsIHt9KQogICAgICAgICAgICAgICAgICAgIGlmIChpc2luc3RhbmNlKGFubm90YXRpb25zLCBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZykgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyIGluIGFubm90YXRpb25zIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhvdGhlciwgR2VuZXJpYykgYW5kIG90aGVyLl9pc19wcm90b2NvbCk6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICAgICByZXR1cm4gVHJ1ZQoKICAgICAgICBpZiAnX19zdWJjbGFzc2hvb2tfXycgbm90IGluIGNscy5fX2RpY3RfXzoKICAgICAgICAgICAgY2xzLl9fc3ViY2xhc3Nob29rX18gPSBfcHJvdG9faG9vawoKICAgICAgICAjIFdlIGhhdmUgbm90aGluZyBtb3JlIHRvIGRvIGZvciBub24tcHJvdG9jb2xzLi4uCiAgICAgICAgaWYgbm90IGNscy5faXNfcHJvdG9jb2w6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIC4uLiBvdGhlcndpc2UgY2hlY2sgY29uc2lzdGVuY3kgb2YgYmFzZXMsIGFuZCBwcm9oaWJpdCBpbnN0YW50aWF0aW9uLgogICAgICAgIGZvciBiYXNlIGluIGNscy5fX2Jhc2VzX186CiAgICAgICAgICAgIGlmIG5vdCAoYmFzZSBpbiAob2JqZWN0LCBHZW5lcmljKSBvcgogICAgICAgICAgICAgICAgICAgIGJhc2UuX19tb2R1bGVfXyBpbiBfUFJPVE9fQUxMT1dMSVNUIGFuZAogICAgICAgICAgICAgICAgICAgIGJhc2UuX19uYW1lX18gaW4gX1BST1RPX0FMTE9XTElTVFtiYXNlLl9fbW9kdWxlX19dIG9yCiAgICAgICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhiYXNlLCBHZW5lcmljKSBhbmQgYmFzZS5faXNfcHJvdG9jb2wpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdQcm90b2NvbHMgY2FuIG9ubHkgaW5oZXJpdCBmcm9tIG90aGVyJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcHJvdG9jb2xzLCBnb3QgJXInICUgYmFzZSkKICAgICAgICBpZiBjbHMuX19pbml0X18gaXMgUHJvdG9jb2wuX19pbml0X186CiAgICAgICAgICAgIGNscy5fX2luaXRfXyA9IF9ub19pbml0X29yX3JlcGxhY2VfaW5pdAoKCmNsYXNzIF9Bbm5vdGF0ZWRBbGlhcyhfTm90SXRlcmFibGUsIF9HZW5lcmljQWxpYXMsIF9yb290PVRydWUpOgogICAgIiIiUnVudGltZSByZXByZXNlbnRhdGlvbiBvZiBhbiBhbm5vdGF0ZWQgdHlwZS4KCiAgICBBdCBpdHMgY29yZSAnQW5ub3RhdGVkW3QsIGRlYzEsIGRlYzIsIC4uLl0nIGlzIGFuIGFsaWFzIGZvciB0aGUgdHlwZSAndCcKICAgIHdpdGggZXh0cmEgYW5ub3RhdGlvbnMuIFRoZSBhbGlhcyBiZWhhdmVzIGxpa2UgYSBub3JtYWwgdHlwaW5nIGFsaWFzLAogICAgaW5zdGFudGlhdGluZyBpcyB0aGUgc2FtZSBhcyBpbnN0YW50aWF0aW5nIHRoZSB1bmRlcmx5aW5nIHR5cGUsIGJpbmRpbmcKICAgIGl0IHRvIHR5cGVzIGlzIGFsc28gdGhlIHNhbWUuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcmlnaW4sIG1ldGFkYXRhKToKICAgICAgICBpZiBpc2luc3RhbmNlKG9yaWdpbiwgX0Fubm90YXRlZEFsaWFzKToKICAgICAgICAgICAgbWV0YWRhdGEgPSBvcmlnaW4uX19tZXRhZGF0YV9fICsgbWV0YWRhdGEKICAgICAgICAgICAgb3JpZ2luID0gb3JpZ2luLl9fb3JpZ2luX18KICAgICAgICBzdXBlcigpLl9faW5pdF9fKG9yaWdpbiwgb3JpZ2luKQogICAgICAgIHNlbGYuX19tZXRhZGF0YV9fID0gbWV0YWRhdGEKCiAgICBkZWYgY29weV93aXRoKHNlbGYsIHBhcmFtcyk6CiAgICAgICAgYXNzZXJ0IGxlbihwYXJhbXMpID09IDEKICAgICAgICBuZXdfdHlwZSA9IHBhcmFtc1swXQogICAgICAgIHJldHVybiBfQW5ub3RhdGVkQWxpYXMobmV3X3R5cGUsIHNlbGYuX19tZXRhZGF0YV9fKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gInR5cGluZy5Bbm5vdGF0ZWRbe30sIHt9XSIuZm9ybWF0KAogICAgICAgICAgICBfdHlwZV9yZXByKHNlbGYuX19vcmlnaW5fXyksCiAgICAgICAgICAgICIsICIuam9pbihyZXByKGEpIGZvciBhIGluIHNlbGYuX19tZXRhZGF0YV9fKQogICAgICAgICkKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gb3BlcmF0b3IuZ2V0aXRlbSwgKAogICAgICAgICAgICBBbm5vdGF0ZWQsIChzZWxmLl9fb3JpZ2luX18sKSArIHNlbGYuX19tZXRhZGF0YV9fCiAgICAgICAgKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQW5ub3RhdGVkQWxpYXMpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKHNlbGYuX19vcmlnaW5fXyA9PSBvdGhlci5fX29yaWdpbl9fCiAgICAgICAgICAgICAgICBhbmQgc2VsZi5fX21ldGFkYXRhX18gPT0gb3RoZXIuX19tZXRhZGF0YV9fKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fX29yaWdpbl9fLCBzZWxmLl9fbWV0YWRhdGFfXykpCgogICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgogICAgICAgIGlmIGF0dHIgaW4geydfX25hbWVfXycsICdfX3F1YWxuYW1lX18nfToKICAgICAgICAgICAgcmV0dXJuICdBbm5vdGF0ZWQnCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19nZXRhdHRyX18oYXR0cikKCgpjbGFzcyBBbm5vdGF0ZWQ6CiAgICAiIiJBZGQgY29udGV4dCBzcGVjaWZpYyBtZXRhZGF0YSB0byBhIHR5cGUuCgogICAgRXhhbXBsZTogQW5ub3RhdGVkW2ludCwgcnVudGltZV9jaGVjay5VbnNpZ25lZF0gaW5kaWNhdGVzIHRvIHRoZQogICAgaHlwb3RoZXRpY2FsIHJ1bnRpbWVfY2hlY2sgbW9kdWxlIHRoYXQgdGhpcyB0eXBlIGlzIGFuIHVuc2lnbmVkIGludC4KICAgIEV2ZXJ5IG90aGVyIGNvbnN1bWVyIG9mIHRoaXMgdHlwZSBjYW4gaWdub3JlIHRoaXMgbWV0YWRhdGEgYW5kIHRyZWF0CiAgICB0aGlzIHR5cGUgYXMgaW50LgoKICAgIFRoZSBmaXJzdCBhcmd1bWVudCB0byBBbm5vdGF0ZWQgbXVzdCBiZSBhIHZhbGlkIHR5cGUuCgogICAgRGV0YWlsczoKCiAgICAtIEl0J3MgYW4gZXJyb3IgdG8gY2FsbCBgQW5ub3RhdGVkYCB3aXRoIGxlc3MgdGhhbiB0d28gYXJndW1lbnRzLgogICAgLSBOZXN0ZWQgQW5ub3RhdGVkIGFyZSBmbGF0dGVuZWQ6OgoKICAgICAgICBBbm5vdGF0ZWRbQW5ub3RhdGVkW1QsIEFubjEsIEFubjJdLCBBbm4zXSA9PSBBbm5vdGF0ZWRbVCwgQW5uMSwgQW5uMiwgQW5uM10KCiAgICAtIEluc3RhbnRpYXRpbmcgYW4gYW5ub3RhdGVkIHR5cGUgaXMgZXF1aXZhbGVudCB0byBpbnN0YW50aWF0aW5nIHRoZQogICAgdW5kZXJseWluZyB0eXBlOjoKCiAgICAgICAgQW5ub3RhdGVkW0MsIEFubjFdKDUpID09IEMoNSkKCiAgICAtIEFubm90YXRlZCBjYW4gYmUgdXNlZCBhcyBhIGdlbmVyaWMgdHlwZSBhbGlhczo6CgogICAgICAgIE9wdGltaXplZCA9IEFubm90YXRlZFtULCBydW50aW1lLk9wdGltaXplKCldCiAgICAgICAgT3B0aW1pemVkW2ludF0gPT0gQW5ub3RhdGVkW2ludCwgcnVudGltZS5PcHRpbWl6ZSgpXQoKICAgICAgICBPcHRpbWl6ZWRMaXN0ID0gQW5ub3RhdGVkW0xpc3RbVF0sIHJ1bnRpbWUuT3B0aW1pemUoKV0KICAgICAgICBPcHRpbWl6ZWRMaXN0W2ludF0gPT0gQW5ub3RhdGVkW0xpc3RbaW50XSwgcnVudGltZS5PcHRpbWl6ZSgpXQoKICAgIC0gQW5ub3RhdGVkIGNhbm5vdCBiZSB1c2VkIHdpdGggYW4gdW5wYWNrZWQgVHlwZVZhclR1cGxlOjoKCiAgICAgICAgQW5ub3RhdGVkWypUcywgQW5uMV0gICMgTk9UIHZhbGlkCgogICAgICBUaGlzIHdvdWxkIGJlIGVxdWl2YWxlbnQgdG8KCiAgICAgICAgQW5ub3RhdGVkW1QxLCBUMiwgVDMsIC4uLiwgQW5uMV0KCiAgICAgIHdoZXJlIFQxLCBUMiBldGMuIGFyZSBUeXBlVmFycywgd2hpY2ggd291bGQgYmUgaW52YWxpZCwgYmVjYXVzZQogICAgICBvbmx5IG9uZSB0eXBlIHNob3VsZCBiZSBwYXNzZWQgdG8gQW5ub3RhdGVkLgogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIEFubm90YXRlZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLiIpCgogICAgQF90cF9jYWNoZQogICAgZGVmIF9fY2xhc3NfZ2V0aXRlbV9fKGNscywgcGFyYW1zKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbXMsIHR1cGxlKSBvciBsZW4ocGFyYW1zKSA8IDI6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQW5ub3RhdGVkWy4uLl0gc2hvdWxkIGJlIHVzZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggYXQgbGVhc3QgdHdvIGFyZ3VtZW50cyAoYSB0eXBlIGFuZCBhbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5ub3RhdGlvbikuIikKICAgICAgICBpZiBfaXNfdW5wYWNrZWRfdHlwZXZhcnR1cGxlKHBhcmFtc1swXSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQW5ub3RhdGVkWy4uLl0gc2hvdWxkIG5vdCBiZSB1c2VkIHdpdGggYW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGFja2VkIFR5cGVWYXJUdXBsZSIpCiAgICAgICAgbXNnID0gIkFubm90YXRlZFt0LCAuLi5dOiB0IG11c3QgYmUgYSB0eXBlLiIKICAgICAgICBvcmlnaW4gPSBfdHlwZV9jaGVjayhwYXJhbXNbMF0sIG1zZywgYWxsb3dfc3BlY2lhbF9mb3Jtcz1UcnVlKQogICAgICAgIG1ldGFkYXRhID0gdHVwbGUocGFyYW1zWzE6XSkKICAgICAgICByZXR1cm4gX0Fubm90YXRlZEFsaWFzKG9yaWdpbiwgbWV0YWRhdGEpCgogICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICJDYW5ub3Qgc3ViY2xhc3Mge30uQW5ub3RhdGVkIi5mb3JtYXQoY2xzLl9fbW9kdWxlX18pCiAgICAgICAgKQoKCmRlZiBydW50aW1lX2NoZWNrYWJsZShjbHMpOgogICAgIiIiTWFyayBhIHByb3RvY29sIGNsYXNzIGFzIGEgcnVudGltZSBwcm90b2NvbC4KCiAgICBTdWNoIHByb3RvY29sIGNhbiBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpIGFuZCBpc3N1YmNsYXNzKCkuCiAgICBSYWlzZSBUeXBlRXJyb3IgaWYgYXBwbGllZCB0byBhIG5vbi1wcm90b2NvbCBjbGFzcy4KICAgIFRoaXMgYWxsb3dzIGEgc2ltcGxlLW1pbmRlZCBzdHJ1Y3R1cmFsIGNoZWNrIHZlcnkgc2ltaWxhciB0bwogICAgb25lIHRyaWNrIHBvbmllcyBpbiBjb2xsZWN0aW9ucy5hYmMgc3VjaCBhcyBJdGVyYWJsZS4KICAgIEZvciBleGFtcGxlOjoKCiAgICAgICAgQHJ1bnRpbWVfY2hlY2thYmxlCiAgICAgICAgY2xhc3MgQ2xvc2FibGUoUHJvdG9jb2wpOgogICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IC4uLgoKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvcGVuKCcvc29tZS9maWxlJyksIENsb3NhYmxlKQoKICAgIFdhcm5pbmc6IHRoaXMgd2lsbCBjaGVjayBvbmx5IHRoZSBwcmVzZW5jZSBvZiB0aGUgcmVxdWlyZWQgbWV0aG9kcywKICAgIG5vdCB0aGVpciB0eXBlIHNpZ25hdHVyZXMhCiAgICAiIiIKICAgIGlmIG5vdCBpc3N1YmNsYXNzKGNscywgR2VuZXJpYykgb3Igbm90IGNscy5faXNfcHJvdG9jb2w6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdAcnVudGltZV9jaGVja2FibGUgY2FuIGJlIG9ubHkgYXBwbGllZCB0byBwcm90b2NvbCBjbGFzc2VzLCcKICAgICAgICAgICAgICAgICAgICAgICAgJyBnb3QgJXInICUgY2xzKQogICAgY2xzLl9pc19ydW50aW1lX3Byb3RvY29sID0gVHJ1ZQogICAgcmV0dXJuIGNscwoKCmRlZiBjYXN0KHR5cCwgdmFsKToKICAgICIiIkNhc3QgYSB2YWx1ZSB0byBhIHR5cGUuCgogICAgVGhpcyByZXR1cm5zIHRoZSB2YWx1ZSB1bmNoYW5nZWQuICBUbyB0aGUgdHlwZSBjaGVja2VyIHRoaXMKICAgIHNpZ25hbHMgdGhhdCB0aGUgcmV0dXJuIHZhbHVlIGhhcyB0aGUgZGVzaWduYXRlZCB0eXBlLCBidXQgYXQKICAgIHJ1bnRpbWUgd2UgaW50ZW50aW9uYWxseSBkb24ndCBjaGVjayBhbnl0aGluZyAod2Ugd2FudCB0aGlzCiAgICB0byBiZSBhcyBmYXN0IGFzIHBvc3NpYmxlKS4KICAgICIiIgogICAgcmV0dXJuIHZhbAoKCmRlZiBhc3NlcnRfdHlwZSh2YWwsIHR5cCwgLyk6CiAgICAiIiJBc2sgYSBzdGF0aWMgdHlwZSBjaGVja2VyIHRvIGNvbmZpcm0gdGhhdCB0aGUgdmFsdWUgaXMgb2YgdGhlIGdpdmVuIHR5cGUuCgogICAgV2hlbiB0aGUgdHlwZSBjaGVja2VyIGVuY291bnRlcnMgYSBjYWxsIHRvIGFzc2VydF90eXBlKCksIGl0CiAgICBlbWl0cyBhbiBlcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IG9mIHRoZSBzcGVjaWZpZWQgdHlwZTo6CgogICAgICAgIGRlZiBncmVldChuYW1lOiBzdHIpIC0+IE5vbmU6CiAgICAgICAgICAgIGFzc2VydF90eXBlKG5hbWUsIHN0cikgICMgb2sKICAgICAgICAgICAgYXNzZXJ0X3R5cGUobmFtZSwgaW50KSAgIyB0eXBlIGNoZWNrZXIgZXJyb3IKCiAgICBBdCBydW50aW1lIHRoaXMgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgdW5jaGFuZ2VkIGFuZCBvdGhlcndpc2UKICAgIGRvZXMgbm90aGluZy4KICAgICIiIgogICAgcmV0dXJuIHZhbAoKCl9hbGxvd2VkX3R5cGVzID0gKHR5cGVzLkZ1bmN0aW9uVHlwZSwgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwKICAgICAgICAgICAgICAgICAgdHlwZXMuTWV0aG9kVHlwZSwgdHlwZXMuTW9kdWxlVHlwZSwKICAgICAgICAgICAgICAgICAgV3JhcHBlckRlc2NyaXB0b3JUeXBlLCBNZXRob2RXcmFwcGVyVHlwZSwgTWV0aG9kRGVzY3JpcHRvclR5cGUpCgoKZGVmIGdldF90eXBlX2hpbnRzKG9iaiwgZ2xvYmFsbnM9Tm9uZSwgbG9jYWxucz1Ob25lLCBpbmNsdWRlX2V4dHJhcz1GYWxzZSk6CiAgICAiIiJSZXR1cm4gdHlwZSBoaW50cyBmb3IgYW4gb2JqZWN0LgoKICAgIFRoaXMgaXMgb2Z0ZW4gdGhlIHNhbWUgYXMgb2JqLl9fYW5ub3RhdGlvbnNfXywgYnV0IGl0IGhhbmRsZXMKICAgIGZvcndhcmQgcmVmZXJlbmNlcyBlbmNvZGVkIGFzIHN0cmluZyBsaXRlcmFscyBhbmQgcmVjdXJzaXZlbHkgcmVwbGFjZXMgYWxsCiAgICAnQW5ub3RhdGVkW1QsIC4uLl0nIHdpdGggJ1QnICh1bmxlc3MgJ2luY2x1ZGVfZXh0cmFzPVRydWUnKS4KCiAgICBUaGUgYXJndW1lbnQgbWF5IGJlIGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCBvciBmdW5jdGlvbi4gVGhlIGFubm90YXRpb25zCiAgICBhcmUgcmV0dXJuZWQgYXMgYSBkaWN0aW9uYXJ5LiBGb3IgY2xhc3NlcywgYW5ub3RhdGlvbnMgaW5jbHVkZSBhbHNvCiAgICBpbmhlcml0ZWQgbWVtYmVycy4KCiAgICBUeXBlRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBhcmd1bWVudCBpcyBub3Qgb2YgYSB0eXBlIHRoYXQgY2FuIGNvbnRhaW4KICAgIGFubm90YXRpb25zLCBhbmQgYW4gZW1wdHkgZGljdGlvbmFyeSBpcyByZXR1cm5lZCBpZiBubyBhbm5vdGF0aW9ucyBhcmUKICAgIHByZXNlbnQuCgogICAgQkVXQVJFIC0tIHRoZSBiZWhhdmlvciBvZiBnbG9iYWxucyBhbmQgbG9jYWxucyBpcyBjb3VudGVyaW50dWl0aXZlCiAgICAodW5sZXNzIHlvdSBhcmUgZmFtaWxpYXIgd2l0aCBob3cgZXZhbCgpIGFuZCBleGVjKCkgd29yaykuICBUaGUKICAgIHNlYXJjaCBvcmRlciBpcyBsb2NhbHMgZmlyc3QsIHRoZW4gZ2xvYmFscy4KCiAgICAtIElmIG5vIGRpY3QgYXJndW1lbnRzIGFyZSBwYXNzZWQsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgdGhlCiAgICAgIGdsb2JhbHMgZnJvbSBvYmogKG9yIHRoZSByZXNwZWN0aXZlIG1vZHVsZSdzIGdsb2JhbHMgZm9yIGNsYXNzZXMpLAogICAgICBhbmQgdGhlc2UgYXJlIGFsc28gdXNlZCBhcyB0aGUgbG9jYWxzLiAgSWYgdGhlIG9iamVjdCBkb2VzIG5vdCBhcHBlYXIKICAgICAgdG8gaGF2ZSBnbG9iYWxzLCBhbiBlbXB0eSBkaWN0aW9uYXJ5IGlzIHVzZWQuICBGb3IgY2xhc3NlcywgdGhlIHNlYXJjaAogICAgICBvcmRlciBpcyBnbG9iYWxzIGZpcnN0IHRoZW4gbG9jYWxzLgoKICAgIC0gSWYgb25lIGRpY3QgYXJndW1lbnQgaXMgcGFzc2VkLCBpdCBpcyB1c2VkIGZvciBib3RoIGdsb2JhbHMgYW5kCiAgICAgIGxvY2Fscy4KCiAgICAtIElmIHR3byBkaWN0IGFyZ3VtZW50cyBhcmUgcGFzc2VkLCB0aGV5IHNwZWNpZnkgZ2xvYmFscyBhbmQKICAgICAgbG9jYWxzLCByZXNwZWN0aXZlbHkuCiAgICAiIiIKCiAgICBpZiBnZXRhdHRyKG9iaiwgJ19fbm9fdHlwZV9jaGVja19fJywgTm9uZSk6CiAgICAgICAgcmV0dXJuIHt9CiAgICAjIENsYXNzZXMgcmVxdWlyZSBhIHNwZWNpYWwgdHJlYXRtZW50LgogICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgogICAgICAgIGhpbnRzID0ge30KICAgICAgICBmb3IgYmFzZSBpbiByZXZlcnNlZChvYmouX19tcm9fXyk6CiAgICAgICAgICAgIGlmIGdsb2JhbG5zIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBiYXNlX2dsb2JhbHMgPSBnZXRhdHRyKHN5cy5tb2R1bGVzLmdldChiYXNlLl9fbW9kdWxlX18sIE5vbmUpLCAnX19kaWN0X18nLCB7fSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJhc2VfZ2xvYmFscyA9IGdsb2JhbG5zCiAgICAgICAgICAgIGFubiA9IGJhc2UuX19kaWN0X18uZ2V0KCdfX2Fubm90YXRpb25zX18nLCB7fSkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhbm4sIHR5cGVzLkdldFNldERlc2NyaXB0b3JUeXBlKToKICAgICAgICAgICAgICAgIGFubiA9IHt9CiAgICAgICAgICAgIGJhc2VfbG9jYWxzID0gZGljdCh2YXJzKGJhc2UpKSBpZiBsb2NhbG5zIGlzIE5vbmUgZWxzZSBsb2NhbG5zCiAgICAgICAgICAgIGlmIGxvY2FsbnMgaXMgTm9uZSBhbmQgZ2xvYmFsbnMgaXMgTm9uZToKICAgICAgICAgICAgICAgICMgVGhpcyBpcyBzdXJwcmlzaW5nLCBidXQgcmVxdWlyZWQuICBCZWZvcmUgUHl0aG9uIDMuMTAsCiAgICAgICAgICAgICAgICAjIGdldF90eXBlX2hpbnRzIG9ubHkgZXZhbHVhdGVkIHRoZSBnbG9iYWxucyBvZgogICAgICAgICAgICAgICAgIyBhIGNsYXNzLiAgVG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIHJldmVyc2UKICAgICAgICAgICAgICAgICMgdGhlIGdsb2JhbG5zIGFuZCBsb2NhbG5zIG9yZGVyIHNvIHRoYXQgZXZhbCgpIGxvb2tzIGludG8KICAgICAgICAgICAgICAgICMgKmJhc2VfZ2xvYmFscyogZmlyc3QgcmF0aGVyIHRoYW4gKmJhc2VfbG9jYWxzKi4KICAgICAgICAgICAgICAgICMgVGhpcyBvbmx5IGFmZmVjdHMgRm9yd2FyZFJlZnMuCiAgICAgICAgICAgICAgICBiYXNlX2dsb2JhbHMsIGJhc2VfbG9jYWxzID0gYmFzZV9sb2NhbHMsIGJhc2VfZ2xvYmFscwogICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gYW5uLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdHlwZShOb25lKQogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IEZvcndhcmRSZWYodmFsdWUsIGlzX2FyZ3VtZW50PUZhbHNlLCBpc19jbGFzcz1UcnVlKQogICAgICAgICAgICAgICAgdmFsdWUgPSBfZXZhbF90eXBlKHZhbHVlLCBiYXNlX2dsb2JhbHMsIGJhc2VfbG9jYWxzKQogICAgICAgICAgICAgICAgaGludHNbbmFtZV0gPSB2YWx1ZQogICAgICAgIHJldHVybiBoaW50cyBpZiBpbmNsdWRlX2V4dHJhcyBlbHNlIHtrOiBfc3RyaXBfYW5ub3RhdGlvbnModCkgZm9yIGssIHQgaW4gaGludHMuaXRlbXMoKX0KCiAgICBpZiBnbG9iYWxucyBpcyBOb25lOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Nb2R1bGVUeXBlKToKICAgICAgICAgICAgZ2xvYmFsbnMgPSBvYmouX19kaWN0X18KICAgICAgICBlbHNlOgogICAgICAgICAgICBuc29iaiA9IG9iagogICAgICAgICAgICAjIEZpbmQgZ2xvYmFsbnMgZm9yIHRoZSB1bndyYXBwZWQgb2JqZWN0LgogICAgICAgICAgICB3aGlsZSBoYXNhdHRyKG5zb2JqLCAnX193cmFwcGVkX18nKToKICAgICAgICAgICAgICAgIG5zb2JqID0gbnNvYmouX193cmFwcGVkX18KICAgICAgICAgICAgZ2xvYmFsbnMgPSBnZXRhdHRyKG5zb2JqLCAnX19nbG9iYWxzX18nLCB7fSkKICAgICAgICBpZiBsb2NhbG5zIGlzIE5vbmU6CiAgICAgICAgICAgIGxvY2FsbnMgPSBnbG9iYWxucwogICAgZWxpZiBsb2NhbG5zIGlzIE5vbmU6CiAgICAgICAgbG9jYWxucyA9IGdsb2JhbG5zCiAgICBoaW50cyA9IGdldGF0dHIob2JqLCAnX19hbm5vdGF0aW9uc19fJywgTm9uZSkKICAgIGlmIGhpbnRzIGlzIE5vbmU6CiAgICAgICAgIyBSZXR1cm4gZW1wdHkgYW5ub3RhdGlvbnMgZm9yIHNvbWV0aGluZyB0aGF0IF9jb3VsZF8gaGF2ZSB0aGVtLgogICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBfYWxsb3dlZF90eXBlcyk6CiAgICAgICAgICAgIHJldHVybiB7fQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBtb2R1bGUsIGNsYXNzLCBtZXRob2QsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvciBmdW5jdGlvbi4nLmZvcm1hdChvYmopKQogICAgaGludHMgPSBkaWN0KGhpbnRzKQogICAgZm9yIG5hbWUsIHZhbHVlIGluIGhpbnRzLml0ZW1zKCk6CiAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKICAgICAgICAgICAgdmFsdWUgPSB0eXBlKE5vbmUpCiAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgIyBjbGFzcy1sZXZlbCBmb3J3YXJkIHJlZnMgd2VyZSBoYW5kbGVkIGFib3ZlLCB0aGlzIG11c3QgYmUgZWl0aGVyCiAgICAgICAgICAgICMgYSBtb2R1bGUtbGV2ZWwgYW5ub3RhdGlvbiBvciBhIGZ1bmN0aW9uIGFyZ3VtZW50IGFubm90YXRpb24KICAgICAgICAgICAgdmFsdWUgPSBGb3J3YXJkUmVmKAogICAgICAgICAgICAgICAgdmFsdWUsCiAgICAgICAgICAgICAgICBpc19hcmd1bWVudD1ub3QgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1vZHVsZVR5cGUpLAogICAgICAgICAgICAgICAgaXNfY2xhc3M9RmFsc2UsCiAgICAgICAgICAgICkKICAgICAgICBoaW50c1tuYW1lXSA9IF9ldmFsX3R5cGUodmFsdWUsIGdsb2JhbG5zLCBsb2NhbG5zKQogICAgcmV0dXJuIGhpbnRzIGlmIGluY2x1ZGVfZXh0cmFzIGVsc2Uge2s6IF9zdHJpcF9hbm5vdGF0aW9ucyh0KSBmb3IgaywgdCBpbiBoaW50cy5pdGVtcygpfQoKCmRlZiBfc3RyaXBfYW5ub3RhdGlvbnModCk6CiAgICAiIiJTdHJpcHMgdGhlIGFubm90YXRpb25zIGZyb20gYSBnaXZlbiB0eXBlLgogICAgIiIiCiAgICBpZiBpc2luc3RhbmNlKHQsIF9Bbm5vdGF0ZWRBbGlhcyk6CiAgICAgICAgcmV0dXJuIF9zdHJpcF9hbm5vdGF0aW9ucyh0Ll9fb3JpZ2luX18pCiAgICBpZiBoYXNhdHRyKHQsICJfX29yaWdpbl9fIikgYW5kIHQuX19vcmlnaW5fXyBpbiAoUmVxdWlyZWQsIE5vdFJlcXVpcmVkKToKICAgICAgICByZXR1cm4gX3N0cmlwX2Fubm90YXRpb25zKHQuX19hcmdzX19bMF0pCiAgICBpZiBpc2luc3RhbmNlKHQsIF9HZW5lcmljQWxpYXMpOgogICAgICAgIHN0cmlwcGVkX2FyZ3MgPSB0dXBsZShfc3RyaXBfYW5ub3RhdGlvbnMoYSkgZm9yIGEgaW4gdC5fX2FyZ3NfXykKICAgICAgICBpZiBzdHJpcHBlZF9hcmdzID09IHQuX19hcmdzX186CiAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgcmV0dXJuIHQuY29weV93aXRoKHN0cmlwcGVkX2FyZ3MpCiAgICBpZiBpc2luc3RhbmNlKHQsIEdlbmVyaWNBbGlhcyk6CiAgICAgICAgc3RyaXBwZWRfYXJncyA9IHR1cGxlKF9zdHJpcF9hbm5vdGF0aW9ucyhhKSBmb3IgYSBpbiB0Ll9fYXJnc19fKQogICAgICAgIGlmIHN0cmlwcGVkX2FyZ3MgPT0gdC5fX2FyZ3NfXzoKICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICByZXR1cm4gR2VuZXJpY0FsaWFzKHQuX19vcmlnaW5fXywgc3RyaXBwZWRfYXJncykKICAgIGlmIGlzaW5zdGFuY2UodCwgdHlwZXMuVW5pb25UeXBlKToKICAgICAgICBzdHJpcHBlZF9hcmdzID0gdHVwbGUoX3N0cmlwX2Fubm90YXRpb25zKGEpIGZvciBhIGluIHQuX19hcmdzX18pCiAgICAgICAgaWYgc3RyaXBwZWRfYXJncyA9PSB0Ll9fYXJnc19fOgogICAgICAgICAgICByZXR1cm4gdAogICAgICAgIHJldHVybiBmdW5jdG9vbHMucmVkdWNlKG9wZXJhdG9yLm9yXywgc3RyaXBwZWRfYXJncykKCiAgICByZXR1cm4gdAoKCmRlZiBnZXRfb3JpZ2luKHRwKToKICAgICIiIkdldCB0aGUgdW5zdWJzY3JpcHRlZCB2ZXJzaW9uIG9mIGEgdHlwZS4KCiAgICBUaGlzIHN1cHBvcnRzIGdlbmVyaWMgdHlwZXMsIENhbGxhYmxlLCBUdXBsZSwgVW5pb24sIExpdGVyYWwsIEZpbmFsLCBDbGFzc1ZhcgogICAgYW5kIEFubm90YXRlZC4gUmV0dXJuIE5vbmUgZm9yIHVuc3VwcG9ydGVkIHR5cGVzLiBFeGFtcGxlczo6CgogICAgICAgIGdldF9vcmlnaW4oTGl0ZXJhbFs0Ml0pIGlzIExpdGVyYWwKICAgICAgICBnZXRfb3JpZ2luKGludCkgaXMgTm9uZQogICAgICAgIGdldF9vcmlnaW4oQ2xhc3NWYXJbaW50XSkgaXMgQ2xhc3NWYXIKICAgICAgICBnZXRfb3JpZ2luKEdlbmVyaWMpIGlzIEdlbmVyaWMKICAgICAgICBnZXRfb3JpZ2luKEdlbmVyaWNbVF0pIGlzIEdlbmVyaWMKICAgICAgICBnZXRfb3JpZ2luKFVuaW9uW1QsIGludF0pIGlzIFVuaW9uCiAgICAgICAgZ2V0X29yaWdpbihMaXN0W1R1cGxlW1QsIFRdXVtpbnRdKSA9PSBsaXN0CiAgICAgICAgZ2V0X29yaWdpbihQLmFyZ3MpIGlzIFAKICAgICIiIgogICAgaWYgaXNpbnN0YW5jZSh0cCwgX0Fubm90YXRlZEFsaWFzKToKICAgICAgICByZXR1cm4gQW5ub3RhdGVkCiAgICBpZiBpc2luc3RhbmNlKHRwLCAoX0Jhc2VHZW5lcmljQWxpYXMsIEdlbmVyaWNBbGlhcywKICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVNwZWNBcmdzLCBQYXJhbVNwZWNLd2FyZ3MpKToKICAgICAgICByZXR1cm4gdHAuX19vcmlnaW5fXwogICAgaWYgdHAgaXMgR2VuZXJpYzoKICAgICAgICByZXR1cm4gR2VuZXJpYwogICAgaWYgaXNpbnN0YW5jZSh0cCwgdHlwZXMuVW5pb25UeXBlKToKICAgICAgICByZXR1cm4gdHlwZXMuVW5pb25UeXBlCiAgICByZXR1cm4gTm9uZQoKCmRlZiBnZXRfYXJncyh0cCk6CiAgICAiIiJHZXQgdHlwZSBhcmd1bWVudHMgd2l0aCBhbGwgc3Vic3RpdHV0aW9ucyBwZXJmb3JtZWQuCgogICAgRm9yIHVuaW9ucywgYmFzaWMgc2ltcGxpZmljYXRpb25zIHVzZWQgYnkgVW5pb24gY29uc3RydWN0b3IgYXJlIHBlcmZvcm1lZC4KICAgIEV4YW1wbGVzOjoKICAgICAgICBnZXRfYXJncyhEaWN0W3N0ciwgaW50XSkgPT0gKHN0ciwgaW50KQogICAgICAgIGdldF9hcmdzKGludCkgPT0gKCkKICAgICAgICBnZXRfYXJncyhVbmlvbltpbnQsIFVuaW9uW1QsIGludF0sIHN0cl1baW50XSkgPT0gKGludCwgc3RyKQogICAgICAgIGdldF9hcmdzKFVuaW9uW2ludCwgVHVwbGVbVCwgaW50XV1bc3RyXSkgPT0gKGludCwgVHVwbGVbc3RyLCBpbnRdKQogICAgICAgIGdldF9hcmdzKENhbGxhYmxlW1tdLCBUXVtpbnRdKSA9PSAoW10sIGludCkKICAgICIiIgogICAgaWYgaXNpbnN0YW5jZSh0cCwgX0Fubm90YXRlZEFsaWFzKToKICAgICAgICByZXR1cm4gKHRwLl9fb3JpZ2luX18sKSArIHRwLl9fbWV0YWRhdGFfXwogICAgaWYgaXNpbnN0YW5jZSh0cCwgKF9HZW5lcmljQWxpYXMsIEdlbmVyaWNBbGlhcykpOgogICAgICAgIHJlcyA9IHRwLl9fYXJnc19fCiAgICAgICAgaWYgX3Nob3VsZF91bmZsYXR0ZW5fY2FsbGFibGVfYXJncyh0cCwgcmVzKToKICAgICAgICAgICAgcmVzID0gKGxpc3QocmVzWzotMV0pLCByZXNbLTFdKQogICAgICAgIHJldHVybiByZXMKICAgIGlmIGlzaW5zdGFuY2UodHAsIHR5cGVzLlVuaW9uVHlwZSk6CiAgICAgICAgcmV0dXJuIHRwLl9fYXJnc19fCiAgICByZXR1cm4gKCkKCgpkZWYgaXNfdHlwZWRkaWN0KHRwKToKICAgICIiIkNoZWNrIGlmIGFuIGFubm90YXRpb24gaXMgYSBUeXBlZERpY3QgY2xhc3MKCiAgICBGb3IgZXhhbXBsZTo6CiAgICAgICAgY2xhc3MgRmlsbShUeXBlZERpY3QpOgogICAgICAgICAgICB0aXRsZTogc3RyCiAgICAgICAgICAgIHllYXI6IGludAoKICAgICAgICBpc190eXBlZGRpY3QoRmlsbSkgICMgPT4gVHJ1ZQogICAgICAgIGlzX3R5cGVkZGljdChVbmlvbltsaXN0LCBzdHJdKSAgIyA9PiBGYWxzZQogICAgIiIiCiAgICByZXR1cm4gaXNpbnN0YW5jZSh0cCwgX1R5cGVkRGljdE1ldGEpCgoKX0FTU0VSVF9ORVZFUl9SRVBSX01BWF9MRU5HVEggPSAxMDAKCgpkZWYgYXNzZXJ0X25ldmVyKGFyZzogTmV2ZXIsIC8pIC0+IE5ldmVyOgogICAgIiIiU3RhdGljYWxseSBhc3NlcnQgdGhhdCBhIGxpbmUgb2YgY29kZSBpcyB1bnJlYWNoYWJsZS4KCiAgICBFeGFtcGxlOjoKCiAgICAgICAgZGVmIGludF9vcl9zdHIoYXJnOiBpbnQgfCBzdHIpIC0+IE5vbmU6CiAgICAgICAgICAgIG1hdGNoIGFyZzoKICAgICAgICAgICAgICAgIGNhc2UgaW50KCk6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkl0J3MgYW4gaW50IikKICAgICAgICAgICAgICAgIGNhc2Ugc3RyKCk6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkl0J3MgYSBzdHIiKQogICAgICAgICAgICAgICAgY2FzZSBfOgogICAgICAgICAgICAgICAgICAgIGFzc2VydF9uZXZlcihhcmcpCgogICAgSWYgYSB0eXBlIGNoZWNrZXIgZmluZHMgdGhhdCBhIGNhbGwgdG8gYXNzZXJ0X25ldmVyKCkgaXMKICAgIHJlYWNoYWJsZSwgaXQgd2lsbCBlbWl0IGFuIGVycm9yLgoKICAgIEF0IHJ1bnRpbWUsIHRoaXMgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxlZC4KCiAgICAiIiIKICAgIHZhbHVlID0gcmVwcihhcmcpCiAgICBpZiBsZW4odmFsdWUpID4gX0FTU0VSVF9ORVZFUl9SRVBSX01BWF9MRU5HVEg6CiAgICAgICAgdmFsdWUgPSB2YWx1ZVs6X0FTU0VSVF9ORVZFUl9SRVBSX01BWF9MRU5HVEhdICsgJy4uLicKICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKGYiRXhwZWN0ZWQgY29kZSB0byBiZSB1bnJlYWNoYWJsZSwgYnV0IGdvdDoge3ZhbHVlfSIpCgoKZGVmIG5vX3R5cGVfY2hlY2soYXJnKToKICAgICIiIkRlY29yYXRvciB0byBpbmRpY2F0ZSB0aGF0IGFubm90YXRpb25zIGFyZSBub3QgdHlwZSBoaW50cy4KCiAgICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGNsYXNzIG9yIGZ1bmN0aW9uOyBpZiBpdCBpcyBhIGNsYXNzLCBpdAogICAgYXBwbGllcyByZWN1cnNpdmVseSB0byBhbGwgbWV0aG9kcyBhbmQgY2xhc3NlcyBkZWZpbmVkIGluIHRoYXQgY2xhc3MKICAgIChidXQgbm90IHRvIG1ldGhvZHMgZGVmaW5lZCBpbiBpdHMgc3VwZXJjbGFzc2VzIG9yIHN1YmNsYXNzZXMpLgoKICAgIFRoaXMgbXV0YXRlcyB0aGUgZnVuY3Rpb24ocykgb3IgY2xhc3MoZXMpIGluIHBsYWNlLgogICAgIiIiCiAgICBpZiBpc2luc3RhbmNlKGFyZywgdHlwZSk6CiAgICAgICAgZm9yIGtleSBpbiBkaXIoYXJnKToKICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihhcmcsIGtleSkKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgbm90IGhhc2F0dHIob2JqLCAnX19xdWFsbmFtZV9fJykKICAgICAgICAgICAgICAgIG9yIG9iai5fX3F1YWxuYW1lX18gIT0gZid7YXJnLl9fcXVhbG5hbWVfX30ue29iai5fX25hbWVfX30nCiAgICAgICAgICAgICAgICBvciBnZXRhdHRyKG9iaiwgJ19fbW9kdWxlX18nLCBOb25lKSAhPSBhcmcuX19tb2R1bGVfXwogICAgICAgICAgICApOgogICAgICAgICAgICAgICAgIyBXZSBvbmx5IG1vZGlmeSBvYmplY3RzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGhpcyB0eXBlIGRpcmVjdGx5LgogICAgICAgICAgICAgICAgIyBJZiBjbGFzc2VzIC8gbWV0aG9kcyBhcmUgbmVzdGVkIGluIG11bHRpcGxlIGxheWVycywKICAgICAgICAgICAgICAgICMgd2Ugd2lsbCBtb2RpZnkgdGhlbSB3aGVuIHByb2Nlc3NpbmcgdGhlaXIgZGlyZWN0IGhvbGRlcnMuCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAjIEluc3RhbmNlLCBjbGFzcywgYW5kIHN0YXRpYyBtZXRob2RzOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKICAgICAgICAgICAgICAgIG9iai5fX25vX3R5cGVfY2hlY2tfXyA9IFRydWUKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1ldGhvZFR5cGUpOgogICAgICAgICAgICAgICAgb2JqLl9fZnVuY19fLl9fbm9fdHlwZV9jaGVja19fID0gVHJ1ZQogICAgICAgICAgICAjIE5lc3RlZCB0eXBlczoKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgogICAgICAgICAgICAgICAgbm9fdHlwZV9jaGVjayhvYmopCiAgICB0cnk6CiAgICAgICAgYXJnLl9fbm9fdHlwZV9jaGVja19fID0gVHJ1ZQogICAgZXhjZXB0IFR5cGVFcnJvcjogICMgYnVpbHQtaW4gY2xhc3NlcwogICAgICAgIHBhc3MKICAgIHJldHVybiBhcmcKCgpkZWYgbm9fdHlwZV9jaGVja19kZWNvcmF0b3IoZGVjb3JhdG9yKToKICAgICIiIkRlY29yYXRvciB0byBnaXZlIGFub3RoZXIgZGVjb3JhdG9yIHRoZSBAbm9fdHlwZV9jaGVjayBlZmZlY3QuCgogICAgVGhpcyB3cmFwcyB0aGUgZGVjb3JhdG9yIHdpdGggc29tZXRoaW5nIHRoYXQgd3JhcHMgdGhlIGRlY29yYXRlZAogICAgZnVuY3Rpb24gaW4gQG5vX3R5cGVfY2hlY2suCiAgICAiIiIKCiAgICBAZnVuY3Rvb2xzLndyYXBzKGRlY29yYXRvcikKICAgIGRlZiB3cmFwcGVkX2RlY29yYXRvcigqYXJncywgKiprd2RzKToKICAgICAgICBmdW5jID0gZGVjb3JhdG9yKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgZnVuYyA9IG5vX3R5cGVfY2hlY2soZnVuYykKICAgICAgICByZXR1cm4gZnVuYwoKICAgIHJldHVybiB3cmFwcGVkX2RlY29yYXRvcgoKCmRlZiBfb3ZlcmxvYWRfZHVtbXkoKmFyZ3MsICoqa3dkcyk6CiAgICAiIiJIZWxwZXIgZm9yIEBvdmVybG9hZCB0byByYWlzZSB3aGVuIGNhbGxlZC4iIiIKICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCiAgICAgICAgIllvdSBzaG91bGQgbm90IGNhbGwgYW4gb3ZlcmxvYWRlZCBmdW5jdGlvbi4gIgogICAgICAgICJBIHNlcmllcyBvZiBAb3ZlcmxvYWQtZGVjb3JhdGVkIGZ1bmN0aW9ucyAiCiAgICAgICAgIm91dHNpZGUgYSBzdHViIG1vZHVsZSBzaG91bGQgYWx3YXlzIGJlIGZvbGxvd2VkICIKICAgICAgICAiYnkgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpcyBub3QgQG92ZXJsb2FkLWVkLiIpCgoKIyB7bW9kdWxlOiB7cXVhbG5hbWU6IHtmaXJzdGxpbmVubzogZnVuY319fQpfb3ZlcmxvYWRfcmVnaXN0cnkgPSBkZWZhdWx0ZGljdChmdW5jdG9vbHMucGFydGlhbChkZWZhdWx0ZGljdCwgZGljdCkpCgoKZGVmIG92ZXJsb2FkKGZ1bmMpOgogICAgIiIiRGVjb3JhdG9yIGZvciBvdmVybG9hZGVkIGZ1bmN0aW9ucy9tZXRob2RzLgoKICAgIEluIGEgc3R1YiBmaWxlLCBwbGFjZSB0d28gb3IgbW9yZSBzdHViIGRlZmluaXRpb25zIGZvciB0aGUgc2FtZQogICAgZnVuY3Rpb24gaW4gYSByb3csIGVhY2ggZGVjb3JhdGVkIHdpdGggQG92ZXJsb2FkLiAgRm9yIGV4YW1wbGU6CgogICAgICBAb3ZlcmxvYWQKICAgICAgZGVmIHV0ZjgodmFsdWU6IE5vbmUpIC0+IE5vbmU6IC4uLgogICAgICBAb3ZlcmxvYWQKICAgICAgZGVmIHV0ZjgodmFsdWU6IGJ5dGVzKSAtPiBieXRlczogLi4uCiAgICAgIEBvdmVybG9hZAogICAgICBkZWYgdXRmOCh2YWx1ZTogc3RyKSAtPiBieXRlczogLi4uCgogICAgSW4gYSBub24tc3R1YiBmaWxlIChpLmUuIGEgcmVndWxhciAucHkgZmlsZSksIGRvIHRoZSBzYW1lIGJ1dAogICAgZm9sbG93IGl0IHdpdGggYW4gaW1wbGVtZW50YXRpb24uICBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkICpub3QqCiAgICBiZSBkZWNvcmF0ZWQgd2l0aCBAb3ZlcmxvYWQuICBGb3IgZXhhbXBsZToKCiAgICAgIEBvdmVybG9hZAogICAgICBkZWYgdXRmOCh2YWx1ZTogTm9uZSkgLT4gTm9uZTogLi4uCiAgICAgIEBvdmVybG9hZAogICAgICBkZWYgdXRmOCh2YWx1ZTogYnl0ZXMpIC0+IGJ5dGVzOiAuLi4KICAgICAgQG92ZXJsb2FkCiAgICAgIGRlZiB1dGY4KHZhbHVlOiBzdHIpIC0+IGJ5dGVzOiAuLi4KICAgICAgZGVmIHV0ZjgodmFsdWUpOgogICAgICAgICAgIyBpbXBsZW1lbnRhdGlvbiBnb2VzIGhlcmUKCiAgICBUaGUgb3ZlcmxvYWRzIGZvciBhIGZ1bmN0aW9uIGNhbiBiZSByZXRyaWV2ZWQgYXQgcnVudGltZSB1c2luZyB0aGUKICAgIGdldF9vdmVybG9hZHMoKSBmdW5jdGlvbi4KICAgICIiIgogICAgIyBjbGFzc21ldGhvZCBhbmQgc3RhdGljbWV0aG9kCiAgICBmID0gZ2V0YXR0cihmdW5jLCAiX19mdW5jX18iLCBmdW5jKQogICAgdHJ5OgogICAgICAgIF9vdmVybG9hZF9yZWdpc3RyeVtmLl9fbW9kdWxlX19dW2YuX19xdWFsbmFtZV9fXVtmLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vXSA9IGZ1bmMKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAjIE5vdCBhIG5vcm1hbCBmdW5jdGlvbjsgaWdub3JlLgogICAgICAgIHBhc3MKICAgIHJldHVybiBfb3ZlcmxvYWRfZHVtbXkKCgpkZWYgZ2V0X292ZXJsb2FkcyhmdW5jKToKICAgICIiIlJldHVybiBhbGwgZGVmaW5lZCBvdmVybG9hZHMgZm9yICpmdW5jKiBhcyBhIHNlcXVlbmNlLiIiIgogICAgIyBjbGFzc21ldGhvZCBhbmQgc3RhdGljbWV0aG9kCiAgICBmID0gZ2V0YXR0cihmdW5jLCAiX19mdW5jX18iLCBmdW5jKQogICAgaWYgZi5fX21vZHVsZV9fIG5vdCBpbiBfb3ZlcmxvYWRfcmVnaXN0cnk6CiAgICAgICAgcmV0dXJuIFtdCiAgICBtb2RfZGljdCA9IF9vdmVybG9hZF9yZWdpc3RyeVtmLl9fbW9kdWxlX19dCiAgICBpZiBmLl9fcXVhbG5hbWVfXyBub3QgaW4gbW9kX2RpY3Q6CiAgICAgICAgcmV0dXJuIFtdCiAgICByZXR1cm4gbGlzdChtb2RfZGljdFtmLl9fcXVhbG5hbWVfX10udmFsdWVzKCkpCgoKZGVmIGNsZWFyX292ZXJsb2FkcygpOgogICAgIiIiQ2xlYXIgYWxsIG92ZXJsb2FkcyBpbiB0aGUgcmVnaXN0cnkuIiIiCiAgICBfb3ZlcmxvYWRfcmVnaXN0cnkuY2xlYXIoKQoKCmRlZiBmaW5hbChmKToKICAgICIiIkEgZGVjb3JhdG9yIHRvIGluZGljYXRlIGZpbmFsIG1ldGhvZHMgYW5kIGZpbmFsIGNsYXNzZXMuCgogICAgVXNlIHRoaXMgZGVjb3JhdG9yIHRvIGluZGljYXRlIHRvIHR5cGUgY2hlY2tlcnMgdGhhdCB0aGUgZGVjb3JhdGVkCiAgICBtZXRob2QgY2Fubm90IGJlIG92ZXJyaWRkZW4sIGFuZCBkZWNvcmF0ZWQgY2xhc3MgY2Fubm90IGJlIHN1YmNsYXNzZWQuCiAgICBGb3IgZXhhbXBsZToKCiAgICAgIGNsYXNzIEJhc2U6CiAgICAgICAgICBAZmluYWwKICAgICAgICAgIGRlZiBkb25lKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgICAgICAgLi4uCiAgICAgIGNsYXNzIFN1YihCYXNlKToKICAgICAgICAgIGRlZiBkb25lKHNlbGYpIC0+IE5vbmU6ICAjIEVycm9yIHJlcG9ydGVkIGJ5IHR5cGUgY2hlY2tlcgogICAgICAgICAgICAgICAgLi4uCgogICAgICBAZmluYWwKICAgICAgY2xhc3MgTGVhZjoKICAgICAgICAgIC4uLgogICAgICBjbGFzcyBPdGhlcihMZWFmKTogICMgRXJyb3IgcmVwb3J0ZWQgYnkgdHlwZSBjaGVja2VyCiAgICAgICAgICAuLi4KCiAgICBUaGVyZSBpcyBubyBydW50aW1lIGNoZWNraW5nIG9mIHRoZXNlIHByb3BlcnRpZXMuIFRoZSBkZWNvcmF0b3IKICAgIHNldHMgdGhlIGBgX19maW5hbF9fYGAgYXR0cmlidXRlIHRvIGBgVHJ1ZWBgIG9uIHRoZSBkZWNvcmF0ZWQgb2JqZWN0CiAgICB0byBhbGxvdyBydW50aW1lIGludHJvc3BlY3Rpb24uCiAgICAiIiIKICAgIHRyeToKICAgICAgICBmLl9fZmluYWxfXyA9IFRydWUKICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFR5cGVFcnJvcik6CiAgICAgICAgIyBTa2lwIHRoZSBhdHRyaWJ1dGUgc2lsZW50bHkgaWYgaXQgaXMgbm90IHdyaXRhYmxlLgogICAgICAgICMgQXR0cmlidXRlRXJyb3IgaGFwcGVucyBpZiB0aGUgb2JqZWN0IGhhcyBfX3Nsb3RzX18gb3IgYQogICAgICAgICMgcmVhZC1vbmx5IHByb3BlcnR5LCBUeXBlRXJyb3IgaWYgaXQncyBhIGJ1aWx0aW4gY2xhc3MuCiAgICAgICAgcGFzcwogICAgcmV0dXJuIGYKCgojIFNvbWUgdW5jb25zdHJhaW5lZCB0eXBlIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB1c2VkIGJ5IHRoZSBjb250YWluZXIgdHlwZXMuCiMgKFRoZXNlIGFyZSBub3QgZm9yIGV4cG9ydC4pClQgPSBUeXBlVmFyKCdUJykgICMgQW55IHR5cGUuCktUID0gVHlwZVZhcignS1QnKSAgIyBLZXkgdHlwZS4KVlQgPSBUeXBlVmFyKCdWVCcpICAjIFZhbHVlIHR5cGUuClRfY28gPSBUeXBlVmFyKCdUX2NvJywgY292YXJpYW50PVRydWUpICAjIEFueSB0eXBlIGNvdmFyaWFudCBjb250YWluZXJzLgpWX2NvID0gVHlwZVZhcignVl9jbycsIGNvdmFyaWFudD1UcnVlKSAgIyBBbnkgdHlwZSBjb3ZhcmlhbnQgY29udGFpbmVycy4KVlRfY28gPSBUeXBlVmFyKCdWVF9jbycsIGNvdmFyaWFudD1UcnVlKSAgIyBWYWx1ZSB0eXBlIGNvdmFyaWFudCBjb250YWluZXJzLgpUX2NvbnRyYSA9IFR5cGVWYXIoJ1RfY29udHJhJywgY29udHJhdmFyaWFudD1UcnVlKSAgIyBEaXR0byBjb250cmF2YXJpYW50LgojIEludGVybmFsIHR5cGUgdmFyaWFibGUgdXNlZCBmb3IgVHlwZVtdLgpDVF9jbyA9IFR5cGVWYXIoJ0NUX2NvJywgY292YXJpYW50PVRydWUsIGJvdW5kPXR5cGUpCgojIEEgdXNlZnVsIHR5cGUgdmFyaWFibGUgd2l0aCBjb25zdHJhaW50cy4gIFRoaXMgcmVwcmVzZW50cyBzdHJpbmcgdHlwZXMuCiMgKFRoaXMgb25lICppcyogZm9yIGV4cG9ydCEpCkFueVN0ciA9IFR5cGVWYXIoJ0FueVN0cicsIGJ5dGVzLCBzdHIpCgoKIyBWYXJpb3VzIEFCQ3MgbWltaWNraW5nIHRob3NlIGluIGNvbGxlY3Rpb25zLmFiYy4KX2FsaWFzID0gX1NwZWNpYWxHZW5lcmljQWxpYXMKCkhhc2hhYmxlID0gX2FsaWFzKGNvbGxlY3Rpb25zLmFiYy5IYXNoYWJsZSwgMCkgICMgTm90IGdlbmVyaWMuCkF3YWl0YWJsZSA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuQXdhaXRhYmxlLCAxKQpDb3JvdXRpbmUgPSBfYWxpYXMoY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZSwgMykKQXN5bmNJdGVyYWJsZSA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYWJsZSwgMSkKQXN5bmNJdGVyYXRvciA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYXRvciwgMSkKSXRlcmFibGUgPSBfYWxpYXMoY29sbGVjdGlvbnMuYWJjLkl0ZXJhYmxlLCAxKQpJdGVyYXRvciA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuSXRlcmF0b3IsIDEpClJldmVyc2libGUgPSBfYWxpYXMoY29sbGVjdGlvbnMuYWJjLlJldmVyc2libGUsIDEpClNpemVkID0gX2FsaWFzKGNvbGxlY3Rpb25zLmFiYy5TaXplZCwgMCkgICMgTm90IGdlbmVyaWMuCkNvbnRhaW5lciA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuQ29udGFpbmVyLCAxKQpDb2xsZWN0aW9uID0gX2FsaWFzKGNvbGxlY3Rpb25zLmFiYy5Db2xsZWN0aW9uLCAxKQpDYWxsYWJsZSA9IF9DYWxsYWJsZVR5cGUoY29sbGVjdGlvbnMuYWJjLkNhbGxhYmxlLCAyKQpDYWxsYWJsZS5fX2RvY19fID0gXAogICAgIiIiQ2FsbGFibGUgdHlwZTsgQ2FsbGFibGVbW2ludF0sIHN0cl0gaXMgYSBmdW5jdGlvbiBvZiAoaW50KSAtPiBzdHIuCgogICAgVGhlIHN1YnNjcmlwdGlvbiBzeW50YXggbXVzdCBhbHdheXMgYmUgdXNlZCB3aXRoIGV4YWN0bHkgdHdvCiAgICB2YWx1ZXM6IHRoZSBhcmd1bWVudCBsaXN0IGFuZCB0aGUgcmV0dXJuIHR5cGUuICBUaGUgYXJndW1lbnQgbGlzdAogICAgbXVzdCBiZSBhIGxpc3Qgb2YgdHlwZXMgb3IgZWxsaXBzaXM7IHRoZSByZXR1cm4gdHlwZSBtdXN0IGJlIGEgc2luZ2xlIHR5cGUuCgogICAgVGhlcmUgaXMgbm8gc3ludGF4IHRvIGluZGljYXRlIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzLAogICAgc3VjaCBmdW5jdGlvbiB0eXBlcyBhcmUgcmFyZWx5IHVzZWQgYXMgY2FsbGJhY2sgdHlwZXMuCiAgICAiIiIKQWJzdHJhY3RTZXQgPSBfYWxpYXMoY29sbGVjdGlvbnMuYWJjLlNldCwgMSwgbmFtZT0nQWJzdHJhY3RTZXQnKQpNdXRhYmxlU2V0ID0gX2FsaWFzKGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2V0LCAxKQojIE5PVEU6IE1hcHBpbmcgaXMgb25seSBjb3ZhcmlhbnQgaW4gdGhlIHZhbHVlIHR5cGUuCk1hcHBpbmcgPSBfYWxpYXMoY29sbGVjdGlvbnMuYWJjLk1hcHBpbmcsIDIpCk11dGFibGVNYXBwaW5nID0gX2FsaWFzKGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZywgMikKU2VxdWVuY2UgPSBfYWxpYXMoY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlLCAxKQpNdXRhYmxlU2VxdWVuY2UgPSBfYWxpYXMoY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSwgMSkKQnl0ZVN0cmluZyA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuQnl0ZVN0cmluZywgMCkgICMgTm90IGdlbmVyaWMKIyBUdXBsZSBhY2NlcHRzIHZhcmlhYmxlIG51bWJlciBvZiBwYXJhbWV0ZXJzLgpUdXBsZSA9IF9UdXBsZVR5cGUodHVwbGUsIC0xLCBpbnN0PUZhbHNlLCBuYW1lPSdUdXBsZScpClR1cGxlLl9fZG9jX18gPSBcCiAgICAiIiJUdXBsZSB0eXBlOyBUdXBsZVtYLCBZXSBpcyB0aGUgY3Jvc3MtcHJvZHVjdCB0eXBlIG9mIFggYW5kIFkuCgogICAgRXhhbXBsZTogVHVwbGVbVDEsIFQyXSBpcyBhIHR1cGxlIG9mIHR3byBlbGVtZW50cyBjb3JyZXNwb25kaW5nCiAgICB0byB0eXBlIHZhcmlhYmxlcyBUMSBhbmQgVDIuICBUdXBsZVtpbnQsIGZsb2F0LCBzdHJdIGlzIGEgdHVwbGUKICAgIG9mIGFuIGludCwgYSBmbG9hdCBhbmQgYSBzdHJpbmcuCgogICAgVG8gc3BlY2lmeSBhIHZhcmlhYmxlLWxlbmd0aCB0dXBsZSBvZiBob21vZ2VuZW91cyB0eXBlLCB1c2UgVHVwbGVbVCwgLi4uXS4KICAgICIiIgpMaXN0ID0gX2FsaWFzKGxpc3QsIDEsIGluc3Q9RmFsc2UsIG5hbWU9J0xpc3QnKQpEZXF1ZSA9IF9hbGlhcyhjb2xsZWN0aW9ucy5kZXF1ZSwgMSwgbmFtZT0nRGVxdWUnKQpTZXQgPSBfYWxpYXMoc2V0LCAxLCBpbnN0PUZhbHNlLCBuYW1lPSdTZXQnKQpGcm96ZW5TZXQgPSBfYWxpYXMoZnJvemVuc2V0LCAxLCBpbnN0PUZhbHNlLCBuYW1lPSdGcm96ZW5TZXQnKQpNYXBwaW5nVmlldyA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuTWFwcGluZ1ZpZXcsIDEpCktleXNWaWV3ID0gX2FsaWFzKGNvbGxlY3Rpb25zLmFiYy5LZXlzVmlldywgMSkKSXRlbXNWaWV3ID0gX2FsaWFzKGNvbGxlY3Rpb25zLmFiYy5JdGVtc1ZpZXcsIDIpClZhbHVlc1ZpZXcgPSBfYWxpYXMoY29sbGVjdGlvbnMuYWJjLlZhbHVlc1ZpZXcsIDEpCkNvbnRleHRNYW5hZ2VyID0gX2FsaWFzKGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlciwgMSwgbmFtZT0nQ29udGV4dE1hbmFnZXInKQpBc3luY0NvbnRleHRNYW5hZ2VyID0gX2FsaWFzKGNvbnRleHRsaWIuQWJzdHJhY3RBc3luY0NvbnRleHRNYW5hZ2VyLCAxLCBuYW1lPSdBc3luY0NvbnRleHRNYW5hZ2VyJykKRGljdCA9IF9hbGlhcyhkaWN0LCAyLCBpbnN0PUZhbHNlLCBuYW1lPSdEaWN0JykKRGVmYXVsdERpY3QgPSBfYWxpYXMoY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QsIDIsIG5hbWU9J0RlZmF1bHREaWN0JykKT3JkZXJlZERpY3QgPSBfYWxpYXMoY29sbGVjdGlvbnMuT3JkZXJlZERpY3QsIDIpCkNvdW50ZXIgPSBfYWxpYXMoY29sbGVjdGlvbnMuQ291bnRlciwgMSkKQ2hhaW5NYXAgPSBfYWxpYXMoY29sbGVjdGlvbnMuQ2hhaW5NYXAsIDIpCkdlbmVyYXRvciA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yLCAzKQpBc3luY0dlbmVyYXRvciA9IF9hbGlhcyhjb2xsZWN0aW9ucy5hYmMuQXN5bmNHZW5lcmF0b3IsIDIpClR5cGUgPSBfYWxpYXModHlwZSwgMSwgaW5zdD1GYWxzZSwgbmFtZT0nVHlwZScpClR5cGUuX19kb2NfXyA9IFwKICAgICIiIkEgc3BlY2lhbCBjb25zdHJ1Y3QgdXNhYmxlIHRvIGFubm90YXRlIGNsYXNzIG9iamVjdHMuCgogICAgRm9yIGV4YW1wbGUsIHN1cHBvc2Ugd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGNsYXNzZXM6OgoKICAgICAgY2xhc3MgVXNlcjogLi4uICAjIEFic3RyYWN0IGJhc2UgZm9yIFVzZXIgY2xhc3NlcwogICAgICBjbGFzcyBCYXNpY1VzZXIoVXNlcik6IC4uLgogICAgICBjbGFzcyBQcm9Vc2VyKFVzZXIpOiAuLi4KICAgICAgY2xhc3MgVGVhbVVzZXIoVXNlcik6IC4uLgoKICAgIEFuZCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBjbGFzcyBhcmd1bWVudCB0aGF0J3MgYSBzdWJjbGFzcyBvZgogICAgVXNlciBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBjbGFzczo6CgogICAgICBVID0gVHlwZVZhcignVScsIGJvdW5kPVVzZXIpCiAgICAgIGRlZiBuZXdfdXNlcih1c2VyX2NsYXNzOiBUeXBlW1VdKSAtPiBVOgogICAgICAgICAgdXNlciA9IHVzZXJfY2xhc3MoKQogICAgICAgICAgIyAoSGVyZSB3ZSBjb3VsZCB3cml0ZSB0aGUgdXNlciBvYmplY3QgdG8gYSBkYXRhYmFzZSkKICAgICAgICAgIHJldHVybiB1c2VyCgogICAgICBqb2UgPSBuZXdfdXNlcihCYXNpY1VzZXIpCgogICAgQXQgdGhpcyBwb2ludCB0aGUgdHlwZSBjaGVja2VyIGtub3dzIHRoYXQgam9lIGhhcyB0eXBlIEJhc2ljVXNlci4KICAgICIiIgoKCkBydW50aW1lX2NoZWNrYWJsZQpjbGFzcyBTdXBwb3J0c0ludChQcm90b2NvbCk6CiAgICAiIiJBbiBBQkMgd2l0aCBvbmUgYWJzdHJhY3QgbWV0aG9kIF9faW50X18uIiIiCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9faW50X18oc2VsZikgLT4gaW50OgogICAgICAgIHBhc3MKCgpAcnVudGltZV9jaGVja2FibGUKY2xhc3MgU3VwcG9ydHNGbG9hdChQcm90b2NvbCk6CiAgICAiIiJBbiBBQkMgd2l0aCBvbmUgYWJzdHJhY3QgbWV0aG9kIF9fZmxvYXRfXy4iIiIKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19mbG9hdF9fKHNlbGYpIC0+IGZsb2F0OgogICAgICAgIHBhc3MKCgpAcnVudGltZV9jaGVja2FibGUKY2xhc3MgU3VwcG9ydHNDb21wbGV4KFByb3RvY29sKToKICAgICIiIkFuIEFCQyB3aXRoIG9uZSBhYnN0cmFjdCBtZXRob2QgX19jb21wbGV4X18uIiIiCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fY29tcGxleF9fKHNlbGYpIC0+IGNvbXBsZXg6CiAgICAgICAgcGFzcwoKCkBydW50aW1lX2NoZWNrYWJsZQpjbGFzcyBTdXBwb3J0c0J5dGVzKFByb3RvY29sKToKICAgICIiIkFuIEFCQyB3aXRoIG9uZSBhYnN0cmFjdCBtZXRob2QgX19ieXRlc19fLiIiIgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2J5dGVzX18oc2VsZikgLT4gYnl0ZXM6CiAgICAgICAgcGFzcwoKCkBydW50aW1lX2NoZWNrYWJsZQpjbGFzcyBTdXBwb3J0c0luZGV4KFByb3RvY29sKToKICAgICIiIkFuIEFCQyB3aXRoIG9uZSBhYnN0cmFjdCBtZXRob2QgX19pbmRleF9fLiIiIgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2luZGV4X18oc2VsZikgLT4gaW50OgogICAgICAgIHBhc3MKCgpAcnVudGltZV9jaGVja2FibGUKY2xhc3MgU3VwcG9ydHNBYnMoUHJvdG9jb2xbVF9jb10pOgogICAgIiIiQW4gQUJDIHdpdGggb25lIGFic3RyYWN0IG1ldGhvZCBfX2Fic19fIHRoYXQgaXMgY292YXJpYW50IGluIGl0cyByZXR1cm4gdHlwZS4iIiIKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19hYnNfXyhzZWxmKSAtPiBUX2NvOgogICAgICAgIHBhc3MKCgpAcnVudGltZV9jaGVja2FibGUKY2xhc3MgU3VwcG9ydHNSb3VuZChQcm90b2NvbFtUX2NvXSk6CiAgICAiIiJBbiBBQkMgd2l0aCBvbmUgYWJzdHJhY3QgbWV0aG9kIF9fcm91bmRfXyB0aGF0IGlzIGNvdmFyaWFudCBpbiBpdHMgcmV0dXJuIHR5cGUuIiIiCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fcm91bmRfXyhzZWxmLCBuZGlnaXRzOiBpbnQgPSAwKSAtPiBUX2NvOgogICAgICAgIHBhc3MKCgpkZWYgX21ha2Vfbm10dXBsZShuYW1lLCB0eXBlcywgbW9kdWxlLCBkZWZhdWx0cyA9ICgpKToKICAgIGZpZWxkcyA9IFtuIGZvciBuLCB0IGluIHR5cGVzXQogICAgdHlwZXMgPSB7bjogX3R5cGVfY2hlY2sodCwgZiJmaWVsZCB7bn0gYW5ub3RhdGlvbiBtdXN0IGJlIGEgdHlwZSIpCiAgICAgICAgICAgICBmb3IgbiwgdCBpbiB0eXBlc30KICAgIG5tX3RwbCA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUobmFtZSwgZmllbGRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cz1kZWZhdWx0cywgbW9kdWxlPW1vZHVsZSkKICAgIG5tX3RwbC5fX2Fubm90YXRpb25zX18gPSBubV90cGwuX19uZXdfXy5fX2Fubm90YXRpb25zX18gPSB0eXBlcwogICAgcmV0dXJuIG5tX3RwbAoKCiMgYXR0cmlidXRlcyBwcm9oaWJpdGVkIHRvIHNldCBpbiBOYW1lZFR1cGxlIGNsYXNzIHN5bnRheApfcHJvaGliaXRlZCA9IGZyb3plbnNldCh7J19fbmV3X18nLCAnX19pbml0X18nLCAnX19zbG90c19fJywgJ19fZ2V0bmV3YXJnc19fJywKICAgICAgICAgICAgICAgICAgICAgICAgICdfZmllbGRzJywgJ19maWVsZF9kZWZhdWx0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAnX21ha2UnLCAnX3JlcGxhY2UnLCAnX2FzZGljdCcsICdfc291cmNlJ30pCgpfc3BlY2lhbCA9IGZyb3plbnNldCh7J19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19hbm5vdGF0aW9uc19fJ30pCgoKY2xhc3MgTmFtZWRUdXBsZU1ldGEodHlwZSk6CgogICAgZGVmIF9fbmV3X18oY2xzLCB0eXBlbmFtZSwgYmFzZXMsIG5zKToKICAgICAgICBhc3NlcnQgX05hbWVkVHVwbGUgaW4gYmFzZXMKICAgICAgICBmb3IgYmFzZSBpbiBiYXNlczoKICAgICAgICAgICAgaWYgYmFzZSBpcyBub3QgX05hbWVkVHVwbGUgYW5kIGJhc2UgaXMgbm90IEdlbmVyaWM6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJ2NhbiBvbmx5IGluaGVyaXQgZnJvbSBhIE5hbWVkVHVwbGUgdHlwZSBhbmQgR2VuZXJpYycpCiAgICAgICAgYmFzZXMgPSB0dXBsZSh0dXBsZSBpZiBiYXNlIGlzIF9OYW1lZFR1cGxlIGVsc2UgYmFzZSBmb3IgYmFzZSBpbiBiYXNlcykKICAgICAgICB0eXBlcyA9IG5zLmdldCgnX19hbm5vdGF0aW9uc19fJywge30pCiAgICAgICAgZGVmYXVsdF9uYW1lcyA9IFtdCiAgICAgICAgZm9yIGZpZWxkX25hbWUgaW4gdHlwZXM6CiAgICAgICAgICAgIGlmIGZpZWxkX25hbWUgaW4gbnM6CiAgICAgICAgICAgICAgICBkZWZhdWx0X25hbWVzLmFwcGVuZChmaWVsZF9uYW1lKQogICAgICAgICAgICBlbGlmIGRlZmF1bHRfbmFtZXM6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJOb24tZGVmYXVsdCBuYW1lZHR1cGxlIGZpZWxkIHtmaWVsZF9uYW1lfSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJjYW5ub3QgZm9sbG93IGRlZmF1bHQgZmllbGQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7J3MnIGlmIGxlbihkZWZhdWx0X25hbWVzKSA+IDEgZWxzZSAnJ30gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYieycsICcuam9pbihkZWZhdWx0X25hbWVzKX0iKQogICAgICAgIG5tX3RwbCA9IF9tYWtlX25tdHVwbGUodHlwZW5hbWUsIHR5cGVzLml0ZW1zKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cz1bbnNbbl0gZm9yIG4gaW4gZGVmYXVsdF9uYW1lc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGU9bnNbJ19fbW9kdWxlX18nXSkKICAgICAgICBubV90cGwuX19iYXNlc19fID0gYmFzZXMKICAgICAgICBpZiBHZW5lcmljIGluIGJhc2VzOgogICAgICAgICAgICBjbGFzc19nZXRpdGVtID0gR2VuZXJpYy5fX2NsYXNzX2dldGl0ZW1fXy5fX2Z1bmNfXwogICAgICAgICAgICBubV90cGwuX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZChjbGFzc19nZXRpdGVtKQogICAgICAgICMgdXBkYXRlIGZyb20gdXNlciBuYW1lc3BhY2Ugd2l0aG91dCBvdmVycmlkaW5nIHNwZWNpYWwgbmFtZWR0dXBsZSBhdHRyaWJ1dGVzCiAgICAgICAgZm9yIGtleSBpbiBuczoKICAgICAgICAgICAgaWYga2V5IGluIF9wcm9oaWJpdGVkOgogICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNhbm5vdCBvdmVyd3JpdGUgTmFtZWRUdXBsZSBhdHRyaWJ1dGUgIiArIGtleSkKICAgICAgICAgICAgZWxpZiBrZXkgbm90IGluIF9zcGVjaWFsIGFuZCBrZXkgbm90IGluIG5tX3RwbC5fZmllbGRzOgogICAgICAgICAgICAgICAgc2V0YXR0cihubV90cGwsIGtleSwgbnNba2V5XSkKICAgICAgICBpZiBHZW5lcmljIGluIGJhc2VzOgogICAgICAgICAgICBubV90cGwuX19pbml0X3N1YmNsYXNzX18oKQogICAgICAgIHJldHVybiBubV90cGwKCgpkZWYgTmFtZWRUdXBsZSh0eXBlbmFtZSwgZmllbGRzPU5vbmUsIC8sICoqa3dhcmdzKToKICAgICIiIlR5cGVkIHZlcnNpb24gb2YgbmFtZWR0dXBsZS4KCiAgICBVc2FnZSBpbiBQeXRob24gdmVyc2lvbnMgPj0gMy42OjoKCiAgICAgICAgY2xhc3MgRW1wbG95ZWUoTmFtZWRUdXBsZSk6CiAgICAgICAgICAgIG5hbWU6IHN0cgogICAgICAgICAgICBpZDogaW50CgogICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKCiAgICAgICAgRW1wbG95ZWUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdFbXBsb3llZScsIFsnbmFtZScsICdpZCddKQoKICAgIFRoZSByZXN1bHRpbmcgY2xhc3MgaGFzIGFuIGV4dHJhIF9fYW5ub3RhdGlvbnNfXyBhdHRyaWJ1dGUsIGdpdmluZyBhCiAgICBkaWN0IHRoYXQgbWFwcyBmaWVsZCBuYW1lcyB0byB0eXBlcy4gIChUaGUgZmllbGQgbmFtZXMgYXJlIGFsc28gaW4KICAgIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZSBBUEkuKQogICAgQWx0ZXJuYXRpdmUgZXF1aXZhbGVudCBrZXl3b3JkIHN5bnRheCBpcyBhbHNvIGFjY2VwdGVkOjoKCiAgICAgICAgRW1wbG95ZWUgPSBOYW1lZFR1cGxlKCdFbXBsb3llZScsIG5hbWU9c3RyLCBpZD1pbnQpCgogICAgSW4gUHl0aG9uIHZlcnNpb25zIDw9IDMuNSB1c2U6OgoKICAgICAgICBFbXBsb3llZSA9IE5hbWVkVHVwbGUoJ0VtcGxveWVlJywgWygnbmFtZScsIHN0ciksICgnaWQnLCBpbnQpXSkKICAgICIiIgogICAgaWYgZmllbGRzIGlzIE5vbmU6CiAgICAgICAgZmllbGRzID0ga3dhcmdzLml0ZW1zKCkKICAgIGVsaWYga3dhcmdzOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiRWl0aGVyIGxpc3Qgb2YgZmllbGRzIG9yIGtleXdvcmRzIgogICAgICAgICAgICAgICAgICAgICAgICAiIGNhbiBiZSBwcm92aWRlZCB0byBOYW1lZFR1cGxlLCBub3QgYm90aCIpCiAgICByZXR1cm4gX21ha2Vfbm10dXBsZSh0eXBlbmFtZSwgZmllbGRzLCBtb2R1bGU9X2NhbGxlcigpKQoKX05hbWVkVHVwbGUgPSB0eXBlLl9fbmV3X18oTmFtZWRUdXBsZU1ldGEsICdOYW1lZFR1cGxlJywgKCksIHt9KQoKZGVmIF9uYW1lZHR1cGxlX21yb19lbnRyaWVzKGJhc2VzKToKICAgIGFzc2VydCBOYW1lZFR1cGxlIGluIGJhc2VzCiAgICByZXR1cm4gKF9OYW1lZFR1cGxlLCkKCk5hbWVkVHVwbGUuX19tcm9fZW50cmllc19fID0gX25hbWVkdHVwbGVfbXJvX2VudHJpZXMKCgpjbGFzcyBfVHlwZWREaWN0TWV0YSh0eXBlKToKICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zLCB0b3RhbD1UcnVlKToKICAgICAgICAiIiJDcmVhdGUgbmV3IHR5cGVkIGRpY3QgY2xhc3Mgb2JqZWN0LgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBUeXBlZERpY3QgaXMgc3ViY2xhc3NlZCwKICAgICAgICBvciB3aGVuIFR5cGVkRGljdCBpcyBpbnN0YW50aWF0ZWQuIFRoaXMgd2F5CiAgICAgICAgVHlwZWREaWN0IHN1cHBvcnRzIGFsbCB0aHJlZSBzeW50YXggZm9ybXMgZGVzY3JpYmVkIGluIGl0cyBkb2NzdHJpbmcuCiAgICAgICAgU3ViY2xhc3NlcyBhbmQgaW5zdGFuY2VzIG9mIFR5cGVkRGljdCByZXR1cm4gYWN0dWFsIGRpY3Rpb25hcmllcy4KICAgICAgICAiIiIKICAgICAgICBmb3IgYmFzZSBpbiBiYXNlczoKICAgICAgICAgICAgaWYgdHlwZShiYXNlKSBpcyBub3QgX1R5cGVkRGljdE1ldGEgYW5kIGJhc2UgaXMgbm90IEdlbmVyaWM6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2Nhbm5vdCBpbmhlcml0IGZyb20gYm90aCBhIFR5cGVkRGljdCB0eXBlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIGEgbm9uLVR5cGVkRGljdCBiYXNlIGNsYXNzJykKCiAgICAgICAgaWYgYW55KGlzc3ViY2xhc3MoYiwgR2VuZXJpYykgZm9yIGIgaW4gYmFzZXMpOgogICAgICAgICAgICBnZW5lcmljX2Jhc2UgPSAoR2VuZXJpYywpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZ2VuZXJpY19iYXNlID0gKCkKCiAgICAgICAgdHBfZGljdCA9IHR5cGUuX19uZXdfXyhfVHlwZWREaWN0TWV0YSwgbmFtZSwgKCpnZW5lcmljX2Jhc2UsIGRpY3QpLCBucykKCiAgICAgICAgYW5ub3RhdGlvbnMgPSB7fQogICAgICAgIG93bl9hbm5vdGF0aW9ucyA9IG5zLmdldCgnX19hbm5vdGF0aW9uc19fJywge30pCiAgICAgICAgbXNnID0gIlR5cGVkRGljdCgnTmFtZScsIHtmMDogdDAsIGYxOiB0MSwgLi4ufSk7IGVhY2ggdCBtdXN0IGJlIGEgdHlwZSIKICAgICAgICBvd25fYW5ub3RhdGlvbnMgPSB7CiAgICAgICAgICAgIG46IF90eXBlX2NoZWNrKHRwLCBtc2csIG1vZHVsZT10cF9kaWN0Ll9fbW9kdWxlX18pCiAgICAgICAgICAgIGZvciBuLCB0cCBpbiBvd25fYW5ub3RhdGlvbnMuaXRlbXMoKQogICAgICAgIH0KICAgICAgICByZXF1aXJlZF9rZXlzID0gc2V0KCkKICAgICAgICBvcHRpb25hbF9rZXlzID0gc2V0KCkKCiAgICAgICAgZm9yIGJhc2UgaW4gYmFzZXM6CiAgICAgICAgICAgIGFubm90YXRpb25zLnVwZGF0ZShiYXNlLl9fZGljdF9fLmdldCgnX19hbm5vdGF0aW9uc19fJywge30pKQogICAgICAgICAgICByZXF1aXJlZF9rZXlzLnVwZGF0ZShiYXNlLl9fZGljdF9fLmdldCgnX19yZXF1aXJlZF9rZXlzX18nLCAoKSkpCiAgICAgICAgICAgIG9wdGlvbmFsX2tleXMudXBkYXRlKGJhc2UuX19kaWN0X18uZ2V0KCdfX29wdGlvbmFsX2tleXNfXycsICgpKSkKCiAgICAgICAgYW5ub3RhdGlvbnMudXBkYXRlKG93bl9hbm5vdGF0aW9ucykKICAgICAgICBmb3IgYW5ub3RhdGlvbl9rZXksIGFubm90YXRpb25fdHlwZSBpbiBvd25fYW5ub3RhdGlvbnMuaXRlbXMoKToKICAgICAgICAgICAgYW5ub3RhdGlvbl9vcmlnaW4gPSBnZXRfb3JpZ2luKGFubm90YXRpb25fdHlwZSkKICAgICAgICAgICAgaWYgYW5ub3RhdGlvbl9vcmlnaW4gaXMgQW5ub3RhdGVkOgogICAgICAgICAgICAgICAgYW5ub3RhdGlvbl9hcmdzID0gZ2V0X2FyZ3MoYW5ub3RhdGlvbl90eXBlKQogICAgICAgICAgICAgICAgaWYgYW5ub3RhdGlvbl9hcmdzOgogICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25fdHlwZSA9IGFubm90YXRpb25fYXJnc1swXQogICAgICAgICAgICAgICAgICAgIGFubm90YXRpb25fb3JpZ2luID0gZ2V0X29yaWdpbihhbm5vdGF0aW9uX3R5cGUpCgogICAgICAgICAgICBpZiBhbm5vdGF0aW9uX29yaWdpbiBpcyBSZXF1aXJlZDoKICAgICAgICAgICAgICAgIHJlcXVpcmVkX2tleXMuYWRkKGFubm90YXRpb25fa2V5KQogICAgICAgICAgICBlbGlmIGFubm90YXRpb25fb3JpZ2luIGlzIE5vdFJlcXVpcmVkOgogICAgICAgICAgICAgICAgb3B0aW9uYWxfa2V5cy5hZGQoYW5ub3RhdGlvbl9rZXkpCiAgICAgICAgICAgIGVsaWYgdG90YWw6CiAgICAgICAgICAgICAgICByZXF1aXJlZF9rZXlzLmFkZChhbm5vdGF0aW9uX2tleSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG9wdGlvbmFsX2tleXMuYWRkKGFubm90YXRpb25fa2V5KQoKICAgICAgICB0cF9kaWN0Ll9fYW5ub3RhdGlvbnNfXyA9IGFubm90YXRpb25zCiAgICAgICAgdHBfZGljdC5fX3JlcXVpcmVkX2tleXNfXyA9IGZyb3plbnNldChyZXF1aXJlZF9rZXlzKQogICAgICAgIHRwX2RpY3QuX19vcHRpb25hbF9rZXlzX18gPSBmcm96ZW5zZXQob3B0aW9uYWxfa2V5cykKICAgICAgICBpZiBub3QgaGFzYXR0cih0cF9kaWN0LCAnX190b3RhbF9fJyk6CiAgICAgICAgICAgIHRwX2RpY3QuX190b3RhbF9fID0gdG90YWwKICAgICAgICByZXR1cm4gdHBfZGljdAoKICAgIF9fY2FsbF9fID0gZGljdCAgIyBzdGF0aWMgbWV0aG9kCgogICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKGNscywgb3RoZXIpOgogICAgICAgICMgVHlwZWQgZGljdHMgYXJlIG9ubHkgZm9yIHN0YXRpYyBzdHJ1Y3R1cmFsIHN1YnR5cGluZy4KICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1R5cGVkRGljdCBkb2VzIG5vdCBzdXBwb3J0IGluc3RhbmNlIGFuZCBjbGFzcyBjaGVja3MnKQoKICAgIF9faW5zdGFuY2VjaGVja19fID0gX19zdWJjbGFzc2NoZWNrX18KCgpkZWYgVHlwZWREaWN0KHR5cGVuYW1lLCBmaWVsZHM9Tm9uZSwgLywgKiwgdG90YWw9VHJ1ZSwgKiprd2FyZ3MpOgogICAgIiIiQSBzaW1wbGUgdHlwZWQgbmFtZXNwYWNlLiBBdCBydW50aW1lIGl0IGlzIGVxdWl2YWxlbnQgdG8gYSBwbGFpbiBkaWN0LgoKICAgIFR5cGVkRGljdCBjcmVhdGVzIGEgZGljdGlvbmFyeSB0eXBlIHRoYXQgZXhwZWN0cyBhbGwgb2YgaXRzCiAgICBpbnN0YW5jZXMgdG8gaGF2ZSBhIGNlcnRhaW4gc2V0IG9mIGtleXMsIHdoZXJlIGVhY2gga2V5IGlzCiAgICBhc3NvY2lhdGVkIHdpdGggYSB2YWx1ZSBvZiBhIGNvbnNpc3RlbnQgdHlwZS4gVGhpcyBleHBlY3RhdGlvbgogICAgaXMgbm90IGNoZWNrZWQgYXQgcnVudGltZSBidXQgaXMgb25seSBlbmZvcmNlZCBieSB0eXBlIGNoZWNrZXJzLgogICAgVXNhZ2U6OgoKICAgICAgICBjbGFzcyBQb2ludDJEKFR5cGVkRGljdCk6CiAgICAgICAgICAgIHg6IGludAogICAgICAgICAgICB5OiBpbnQKICAgICAgICAgICAgbGFiZWw6IHN0cgoKICAgICAgICBhOiBQb2ludDJEID0geyd4JzogMSwgJ3knOiAyLCAnbGFiZWwnOiAnZ29vZCd9ICAjIE9LCiAgICAgICAgYjogUG9pbnQyRCA9IHsneic6IDMsICdsYWJlbCc6ICdiYWQnfSAgICAgICAgICAgIyBGYWlscyB0eXBlIGNoZWNrCgogICAgICAgIGFzc2VydCBQb2ludDJEKHg9MSwgeT0yLCBsYWJlbD0nZmlyc3QnKSA9PSBkaWN0KHg9MSwgeT0yLCBsYWJlbD0nZmlyc3QnKQoKICAgIFRoZSB0eXBlIGluZm8gY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgUG9pbnQyRC5fX2Fubm90YXRpb25zX18gZGljdCwgYW5kCiAgICB0aGUgUG9pbnQyRC5fX3JlcXVpcmVkX2tleXNfXyBhbmQgUG9pbnQyRC5fX29wdGlvbmFsX2tleXNfXyBmcm96ZW5zZXRzLgogICAgVHlwZWREaWN0IHN1cHBvcnRzIGFuIGFkZGl0aW9uYWwgZXF1aXZhbGVudCBmb3JtOjoKCiAgICAgICAgUG9pbnQyRCA9IFR5cGVkRGljdCgnUG9pbnQyRCcsIHsneCc6IGludCwgJ3knOiBpbnQsICdsYWJlbCc6IHN0cn0pCgogICAgQnkgZGVmYXVsdCwgYWxsIGtleXMgbXVzdCBiZSBwcmVzZW50IGluIGEgVHlwZWREaWN0LiBJdCBpcyBwb3NzaWJsZQogICAgdG8gb3ZlcnJpZGUgdGhpcyBieSBzcGVjaWZ5aW5nIHRvdGFsaXR5LgogICAgVXNhZ2U6OgoKICAgICAgICBjbGFzcyBwb2ludDJEKFR5cGVkRGljdCwgdG90YWw9RmFsc2UpOgogICAgICAgICAgICB4OiBpbnQKICAgICAgICAgICAgeTogaW50CgogICAgVGhpcyBtZWFucyB0aGF0IGEgcG9pbnQyRCBUeXBlZERpY3QgY2FuIGhhdmUgYW55IG9mIHRoZSBrZXlzIG9taXR0ZWQuQSB0eXBlCiAgICBjaGVja2VyIGlzIG9ubHkgZXhwZWN0ZWQgdG8gc3VwcG9ydCBhIGxpdGVyYWwgRmFsc2Ugb3IgVHJ1ZSBhcyB0aGUgdmFsdWUgb2YKICAgIHRoZSB0b3RhbCBhcmd1bWVudC4gVHJ1ZSBpcyB0aGUgZGVmYXVsdCwgYW5kIG1ha2VzIGFsbCBpdGVtcyBkZWZpbmVkIGluIHRoZQogICAgY2xhc3MgYm9keSBiZSByZXF1aXJlZC4KCiAgICBUaGUgY2xhc3Mgc3ludGF4IGlzIG9ubHkgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjYrLCB3aGlsZSB0aGUgb3RoZXIKICAgIHN5bnRheCBmb3JtIHdvcmtzIGZvciBQeXRob24gMi43IGFuZCAzLjIrCiAgICAiIiIKICAgIGlmIGZpZWxkcyBpcyBOb25lOgogICAgICAgIGZpZWxkcyA9IGt3YXJncwogICAgZWxpZiBrd2FyZ3M6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlZERpY3QgdGFrZXMgZWl0aGVyIGEgZGljdCBvciBrZXl3b3JkIGFyZ3VtZW50cywiCiAgICAgICAgICAgICAgICAgICAgICAgICIgYnV0IG5vdCBib3RoIikKICAgIGlmIGt3YXJnczoKICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAiVGhlIGt3YXJncy1iYXNlZCBzeW50YXggZm9yIFR5cGVkRGljdCBkZWZpbml0aW9ucyBpcyBkZXByZWNhdGVkICIKICAgICAgICAgICAgImluIFB5dGhvbiAzLjExLCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuMTMsIGFuZCBtYXkgbm90IGJlICIKICAgICAgICAgICAgInVuZGVyc3Rvb2QgYnkgdGhpcmQtcGFydHkgdHlwZSBjaGVja2Vycy4iLAogICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgIHN0YWNrbGV2ZWw9MiwKICAgICAgICApCgogICAgbnMgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGRpY3QoZmllbGRzKX0KICAgIG1vZHVsZSA9IF9jYWxsZXIoKQogICAgaWYgbW9kdWxlIGlzIG5vdCBOb25lOgogICAgICAgICMgU2V0dGluZyBjb3JyZWN0IG1vZHVsZSBpcyBuZWNlc3NhcnkgdG8gbWFrZSB0eXBlZCBkaWN0IGNsYXNzZXMgcGlja2xlYWJsZS4KICAgICAgICBuc1snX19tb2R1bGVfXyddID0gbW9kdWxlCgogICAgcmV0dXJuIF9UeXBlZERpY3RNZXRhKHR5cGVuYW1lLCAoKSwgbnMsIHRvdGFsPXRvdGFsKQoKX1R5cGVkRGljdCA9IHR5cGUuX19uZXdfXyhfVHlwZWREaWN0TWV0YSwgJ1R5cGVkRGljdCcsICgpLCB7fSkKVHlwZWREaWN0Ll9fbXJvX2VudHJpZXNfXyA9IGxhbWJkYSBiYXNlczogKF9UeXBlZERpY3QsKQoKCkBfU3BlY2lhbEZvcm0KZGVmIFJlcXVpcmVkKHNlbGYsIHBhcmFtZXRlcnMpOgogICAgIiIiQSBzcGVjaWFsIHR5cGluZyBjb25zdHJ1Y3QgdG8gbWFyayBhIGtleSBvZiBhIHRvdGFsPUZhbHNlIFR5cGVkRGljdAogICAgYXMgcmVxdWlyZWQuIEZvciBleGFtcGxlOgoKICAgICAgICBjbGFzcyBNb3ZpZShUeXBlZERpY3QsIHRvdGFsPUZhbHNlKToKICAgICAgICAgICAgdGl0bGU6IFJlcXVpcmVkW3N0cl0KICAgICAgICAgICAgeWVhcjogaW50CgogICAgICAgIG0gPSBNb3ZpZSgKICAgICAgICAgICAgdGl0bGU9J1RoZSBNYXRyaXgnLCAgIyB0eXBlY2hlY2tlciBlcnJvciBpZiBrZXkgaXMgb21pdHRlZAogICAgICAgICAgICB5ZWFyPTE5OTksCiAgICAgICAgKQoKICAgIFRoZXJlIGlzIG5vIHJ1bnRpbWUgY2hlY2tpbmcgdGhhdCBhIHJlcXVpcmVkIGtleSBpcyBhY3R1YWxseSBwcm92aWRlZAogICAgd2hlbiBpbnN0YW50aWF0aW5nIGEgcmVsYXRlZCBUeXBlZERpY3QuCiAgICAiIiIKICAgIGl0ZW0gPSBfdHlwZV9jaGVjayhwYXJhbWV0ZXJzLCBmJ3tzZWxmLl9uYW1lfSBhY2NlcHRzIG9ubHkgYSBzaW5nbGUgdHlwZS4nKQogICAgcmV0dXJuIF9HZW5lcmljQWxpYXMoc2VsZiwgKGl0ZW0sKSkKCgpAX1NwZWNpYWxGb3JtCmRlZiBOb3RSZXF1aXJlZChzZWxmLCBwYXJhbWV0ZXJzKToKICAgICIiIkEgc3BlY2lhbCB0eXBpbmcgY29uc3RydWN0IHRvIG1hcmsgYSBrZXkgb2YgYSBUeXBlZERpY3QgYXMKICAgIHBvdGVudGlhbGx5IG1pc3NpbmcuIEZvciBleGFtcGxlOgoKICAgICAgICBjbGFzcyBNb3ZpZShUeXBlZERpY3QpOgogICAgICAgICAgICB0aXRsZTogc3RyCiAgICAgICAgICAgIHllYXI6IE5vdFJlcXVpcmVkW2ludF0KCiAgICAgICAgbSA9IE1vdmllKAogICAgICAgICAgICB0aXRsZT0nVGhlIE1hdHJpeCcsICAjIHR5cGVjaGVja2VyIGVycm9yIGlmIGtleSBpcyBvbWl0dGVkCiAgICAgICAgICAgIHllYXI9MTk5OSwKICAgICAgICApCiAgICAiIiIKICAgIGl0ZW0gPSBfdHlwZV9jaGVjayhwYXJhbWV0ZXJzLCBmJ3tzZWxmLl9uYW1lfSBhY2NlcHRzIG9ubHkgYSBzaW5nbGUgdHlwZS4nKQogICAgcmV0dXJuIF9HZW5lcmljQWxpYXMoc2VsZiwgKGl0ZW0sKSkKCgpjbGFzcyBOZXdUeXBlOgogICAgIiIiTmV3VHlwZSBjcmVhdGVzIHNpbXBsZSB1bmlxdWUgdHlwZXMgd2l0aCBhbG1vc3QgemVybwogICAgcnVudGltZSBvdmVyaGVhZC4gTmV3VHlwZShuYW1lLCB0cCkgaXMgY29uc2lkZXJlZCBhIHN1YnR5cGUgb2YgdHAKICAgIGJ5IHN0YXRpYyB0eXBlIGNoZWNrZXJzLiBBdCBydW50aW1lLCBOZXdUeXBlKG5hbWUsIHRwKSByZXR1cm5zCiAgICBhIGR1bW15IGNhbGxhYmxlIHRoYXQgc2ltcGx5IHJldHVybnMgaXRzIGFyZ3VtZW50LiBVc2FnZTo6CgogICAgICAgIFVzZXJJZCA9IE5ld1R5cGUoJ1VzZXJJZCcsIGludCkKCiAgICAgICAgZGVmIG5hbWVfYnlfaWQodXNlcl9pZDogVXNlcklkKSAtPiBzdHI6CiAgICAgICAgICAgIC4uLgoKICAgICAgICBVc2VySWQoJ3VzZXInKSAgICAgICAgICAjIEZhaWxzIHR5cGUgY2hlY2sKCiAgICAgICAgbmFtZV9ieV9pZCg0MikgICAgICAgICAgIyBGYWlscyB0eXBlIGNoZWNrCiAgICAgICAgbmFtZV9ieV9pZChVc2VySWQoNDIpKSAgIyBPSwoKICAgICAgICBudW0gPSBVc2VySWQoNSkgKyAxICAgICAjIHR5cGU6IGludAogICAgIiIiCgogICAgX19jYWxsX18gPSBfaWRmdW5jCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHRwKToKICAgICAgICBzZWxmLl9fcXVhbG5hbWVfXyA9IG5hbWUKICAgICAgICBpZiAnLicgaW4gbmFtZToKICAgICAgICAgICAgbmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpWy0xXQogICAgICAgIHNlbGYuX19uYW1lX18gPSBuYW1lCiAgICAgICAgc2VsZi5fX3N1cGVydHlwZV9fID0gdHAKICAgICAgICBkZWZfbW9kID0gX2NhbGxlcigpCiAgICAgICAgaWYgZGVmX21vZCAhPSAndHlwaW5nJzoKICAgICAgICAgICAgc2VsZi5fX21vZHVsZV9fID0gZGVmX21vZAoKICAgIGRlZiBfX21yb19lbnRyaWVzX18oc2VsZiwgYmFzZXMpOgogICAgICAgICMgV2UgZGVmaW5lZCBfX21yb19lbnRyaWVzX18gdG8gZ2V0IGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UKICAgICAgICAjIGlmIGEgdXNlciBhdHRlbXB0cyB0byBzdWJjbGFzcyBhIE5ld1R5cGUgaW5zdGFuY2UuIGJwby00NjE3MAogICAgICAgIHN1cGVyY2xhc3NfbmFtZSA9IHNlbGYuX19uYW1lX18KCiAgICAgICAgY2xhc3MgRHVtbXk6CiAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgogICAgICAgICAgICAgICAgc3ViY2xhc3NfbmFtZSA9IGNscy5fX25hbWVfXwogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgIGYiQ2Fubm90IHN1YmNsYXNzIGFuIGluc3RhbmNlIG9mIE5ld1R5cGUuIFBlcmhhcHMgeW91IHdlcmUgbG9va2luZyBmb3I6ICIKICAgICAgICAgICAgICAgICAgICBmImB7c3ViY2xhc3NfbmFtZX0gPSBOZXdUeXBlKHtzdWJjbGFzc19uYW1lIXJ9LCB7c3VwZXJjbGFzc19uYW1lfSlgIgogICAgICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4gKER1bW15LCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYne3NlbGYuX19tb2R1bGVfX30ue3NlbGYuX19xdWFsbmFtZV9ffScKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX3F1YWxuYW1lX18KCiAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gVW5pb25bc2VsZiwgb3RoZXJdCgogICAgZGVmIF9fcm9yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBVbmlvbltvdGhlciwgc2VsZl0KCgojIFB5dGhvbi12ZXJzaW9uLXNwZWNpZmljIGFsaWFzIChQeXRob24gMjogdW5pY29kZTsgUHl0aG9uIDM6IHN0cikKVGV4dCA9IHN0cgoKCiMgQ29uc3RhbnQgdGhhdCdzIFRydWUgd2hlbiB0eXBlIGNoZWNraW5nLCBidXQgRmFsc2UgaGVyZS4KVFlQRV9DSEVDS0lORyA9IEZhbHNlCgoKY2xhc3MgSU8oR2VuZXJpY1tBbnlTdHJdKToKICAgICIiIkdlbmVyaWMgYmFzZSBjbGFzcyBmb3IgVGV4dElPIGFuZCBCaW5hcnlJTy4KCiAgICBUaGlzIGlzIGFuIGFic3RyYWN0LCBnZW5lcmljIHZlcnNpb24gb2YgdGhlIHJldHVybiBvZiBvcGVuKCkuCgogICAgTk9URTogVGhpcyBkb2VzIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgcG9zc2libGUKICAgIGNsYXNzZXMgKHRleHQgdnMuIGJpbmFyeSwgcmVhZCB2cy4gd3JpdGUgdnMuIHJlYWQvd3JpdGUsCiAgICBhcHBlbmQtb25seSwgdW5idWZmZXJlZCkuICBUaGUgVGV4dElPIGFuZCBCaW5hcnlJTyBzdWJjbGFzc2VzCiAgICBiZWxvdyBjYXB0dXJlIHRoZSBkaXN0aW5jdGlvbnMgYmV0d2VlbiB0ZXh0IHZzLiBiaW5hcnksIHdoaWNoIGlzCiAgICBwZXJ2YXNpdmUgaW4gdGhlIGludGVyZmFjZTsgaG93ZXZlciB3ZSBjdXJyZW50bHkgZG8gbm90IG9mZmVyIGEKICAgIHdheSB0byB0cmFjayB0aGUgb3RoZXIgZGlzdGluY3Rpb25zIGluIHRoZSB0eXBlIHN5c3RlbS4KICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQHByb3BlcnR5CiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBtb2RlKHNlbGYpIC0+IHN0cjoKICAgICAgICBwYXNzCgogICAgQHByb3BlcnR5CiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBuYW1lKHNlbGYpIC0+IHN0cjoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgY2xvc2Uoc2VsZikgLT4gTm9uZToKICAgICAgICBwYXNzCgogICAgQHByb3BlcnR5CiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBjbG9zZWQoc2VsZikgLT4gYm9vbDoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgZmlsZW5vKHNlbGYpIC0+IGludDoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgZmx1c2goc2VsZikgLT4gTm9uZToKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgaXNhdHR5KHNlbGYpIC0+IGJvb2w6CiAgICAgICAgcGFzcwoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHJlYWQoc2VsZiwgbjogaW50ID0gLTEpIC0+IEFueVN0cjoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgcmVhZGFibGUoc2VsZikgLT4gYm9vbDoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgcmVhZGxpbmUoc2VsZiwgbGltaXQ6IGludCA9IC0xKSAtPiBBbnlTdHI6CiAgICAgICAgcGFzcwoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBoaW50OiBpbnQgPSAtMSkgLT4gTGlzdFtBbnlTdHJdOgogICAgICAgIHBhc3MKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldDogaW50LCB3aGVuY2U6IGludCA9IDApIC0+IGludDoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgc2Vla2FibGUoc2VsZikgLT4gYm9vbDoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgdGVsbChzZWxmKSAtPiBpbnQ6CiAgICAgICAgcGFzcwoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHRydW5jYXRlKHNlbGYsIHNpemU6IGludCA9IE5vbmUpIC0+IGludDoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgd3JpdGFibGUoc2VsZikgLT4gYm9vbDoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgd3JpdGUoc2VsZiwgczogQW55U3RyKSAtPiBpbnQ6CiAgICAgICAgcGFzcwoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgbGluZXM6IExpc3RbQW55U3RyXSkgLT4gTm9uZToKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpIC0+ICdJT1tBbnlTdHJdJzoKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjaykgLT4gTm9uZToKICAgICAgICBwYXNzCgoKY2xhc3MgQmluYXJ5SU8oSU9bYnl0ZXNdKToKICAgICIiIlR5cGVkIHZlcnNpb24gb2YgdGhlIHJldHVybiBvZiBvcGVuKCkgaW4gYmluYXJ5IG1vZGUuIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiB3cml0ZShzZWxmLCBzOiBVbmlvbltieXRlcywgYnl0ZWFycmF5XSkgLT4gaW50OgogICAgICAgIHBhc3MKCiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBfX2VudGVyX18oc2VsZikgLT4gJ0JpbmFyeUlPJzoKICAgICAgICBwYXNzCgoKY2xhc3MgVGV4dElPKElPW3N0cl0pOgogICAgIiIiVHlwZWQgdmVyc2lvbiBvZiB0aGUgcmV0dXJuIG9mIG9wZW4oKSBpbiB0ZXh0IG1vZGUuIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBAcHJvcGVydHkKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIGJ1ZmZlcihzZWxmKSAtPiBCaW5hcnlJTzoKICAgICAgICBwYXNzCgogICAgQHByb3BlcnR5CiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBlbmNvZGluZyhzZWxmKSAtPiBzdHI6CiAgICAgICAgcGFzcwoKICAgIEBwcm9wZXJ0eQogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgZXJyb3JzKHNlbGYpIC0+IE9wdGlvbmFsW3N0cl06CiAgICAgICAgcGFzcwoKICAgIEBwcm9wZXJ0eQogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgbGluZV9idWZmZXJpbmcoc2VsZikgLT4gYm9vbDoKICAgICAgICBwYXNzCgogICAgQHByb3BlcnR5CiAgICBAYWJzdHJhY3RtZXRob2QKICAgIGRlZiBuZXdsaW5lcyhzZWxmKSAtPiBBbnk6CiAgICAgICAgcGFzcwoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIF9fZW50ZXJfXyhzZWxmKSAtPiAnVGV4dElPJzoKICAgICAgICBwYXNzCgoKY2xhc3MgX0RlcHJlY2F0ZWRUeXBlKHR5cGUpOgogICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oY2xzLCBuYW1lKToKICAgICAgICBpZiBuYW1lIG5vdCBpbiAoIl9fZGljdF9fIiwgIl9fbW9kdWxlX18iKSBhbmQgbmFtZSBpbiBjbHMuX19kaWN0X186CiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICBmIntjbHMuX19uYW1lX199IGlzIGRlcHJlY2F0ZWQsIGltcG9ydCBkaXJlY3RseSAiCiAgICAgICAgICAgICAgICBmImZyb20gdHlwaW5nIGluc3RlYWQuIHtjbHMuX19uYW1lX199IHdpbGwgYmUgcmVtb3ZlZCAiCiAgICAgICAgICAgICAgICAiaW4gUHl0aG9uIDMuMTIuIiwKICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MiwKICAgICAgICAgICAgKQogICAgICAgIHJldHVybiBzdXBlcigpLl9fZ2V0YXR0cmlidXRlX18obmFtZSkKCgpjbGFzcyBpbyhtZXRhY2xhc3M9X0RlcHJlY2F0ZWRUeXBlKToKICAgICIiIldyYXBwZXIgbmFtZXNwYWNlIGZvciBJTyBnZW5lcmljIGNsYXNzZXMuIiIiCgogICAgX19hbGxfXyA9IFsnSU8nLCAnVGV4dElPJywgJ0JpbmFyeUlPJ10KICAgIElPID0gSU8KICAgIFRleHRJTyA9IFRleHRJTwogICAgQmluYXJ5SU8gPSBCaW5hcnlJTwoKCmlvLl9fbmFtZV9fID0gX19uYW1lX18gKyAnLmlvJwpzeXMubW9kdWxlc1tpby5fX25hbWVfX10gPSBpbwoKUGF0dGVybiA9IF9hbGlhcyhzdGRsaWJfcmUuUGF0dGVybiwgMSkKTWF0Y2ggPSBfYWxpYXMoc3RkbGliX3JlLk1hdGNoLCAxKQoKY2xhc3MgcmUobWV0YWNsYXNzPV9EZXByZWNhdGVkVHlwZSk6CiAgICAiIiJXcmFwcGVyIG5hbWVzcGFjZSBmb3IgcmUgdHlwZSBhbGlhc2VzLiIiIgoKICAgIF9fYWxsX18gPSBbJ1BhdHRlcm4nLCAnTWF0Y2gnXQogICAgUGF0dGVybiA9IFBhdHRlcm4KICAgIE1hdGNoID0gTWF0Y2gKCgpyZS5fX25hbWVfXyA9IF9fbmFtZV9fICsgJy5yZScKc3lzLm1vZHVsZXNbcmUuX19uYW1lX19dID0gcmUKCgpkZWYgcmV2ZWFsX3R5cGUob2JqOiBULCAvKSAtPiBUOgogICAgIiIiUmV2ZWFsIHRoZSBpbmZlcnJlZCB0eXBlIG9mIGEgdmFyaWFibGUuCgogICAgV2hlbiBhIHN0YXRpYyB0eXBlIGNoZWNrZXIgZW5jb3VudGVycyBhIGNhbGwgdG8gYGByZXZlYWxfdHlwZSgpYGAsCiAgICBpdCB3aWxsIGVtaXQgdGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIGFyZ3VtZW50OjoKCiAgICAgICAgeDogaW50ID0gMQogICAgICAgIHJldmVhbF90eXBlKHgpCgogICAgUnVubmluZyBhIHN0YXRpYyB0eXBlIGNoZWNrZXIgKGUuZy4sIGBgbXlweWBgKSBvbiB0aGlzIGV4YW1wbGUKICAgIHdpbGwgcHJvZHVjZSBvdXRwdXQgc2ltaWxhciB0byAnUmV2ZWFsZWQgdHlwZSBpcyAiYnVpbHRpbnMuaW50IicuCgogICAgQXQgcnVudGltZSwgdGhlIGZ1bmN0aW9uIHByaW50cyB0aGUgcnVudGltZSB0eXBlIG9mIHRoZQogICAgYXJndW1lbnQgYW5kIHJldHVybnMgaXQgdW5jaGFuZ2VkLgoKICAgICIiIgogICAgcHJpbnQoZiJSdW50aW1lIHR5cGUgaXMge3R5cGUob2JqKS5fX25hbWVfXyFyfSIsIGZpbGU9c3lzLnN0ZGVycikKICAgIHJldHVybiBvYmoKCgpkZWYgZGF0YWNsYXNzX3RyYW5zZm9ybSgKICAgICosCiAgICBlcV9kZWZhdWx0OiBib29sID0gVHJ1ZSwKICAgIG9yZGVyX2RlZmF1bHQ6IGJvb2wgPSBGYWxzZSwKICAgIGt3X29ubHlfZGVmYXVsdDogYm9vbCA9IEZhbHNlLAogICAgZmllbGRfc3BlY2lmaWVyczogdHVwbGVbdHlwZVtBbnldIHwgQ2FsbGFibGVbLi4uLCBBbnldLCAuLi5dID0gKCksCiAgICAqKmt3YXJnczogQW55LAopIC0+IENhbGxhYmxlW1tUXSwgVF06CiAgICAiIiJEZWNvcmF0b3IgdGhhdCBtYXJrcyBhIGZ1bmN0aW9uLCBjbGFzcywgb3IgbWV0YWNsYXNzIGFzIHByb3ZpZGluZwogICAgZGF0YWNsYXNzLWxpa2UgYmVoYXZpb3IuCgogICAgRXhhbXBsZSB1c2FnZSB3aXRoIGEgZGVjb3JhdG9yIGZ1bmN0aW9uOgoKICAgICAgICBUID0gVHlwZVZhcigiVCIpCgogICAgICAgIEBkYXRhY2xhc3NfdHJhbnNmb3JtKCkKICAgICAgICBkZWYgY3JlYXRlX21vZGVsKGNsczogdHlwZVtUXSkgLT4gdHlwZVtUXToKICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIHJldHVybiBjbHMKCiAgICAgICAgQGNyZWF0ZV9tb2RlbAogICAgICAgIGNsYXNzIEN1c3RvbWVyTW9kZWw6CiAgICAgICAgICAgIGlkOiBpbnQKICAgICAgICAgICAgbmFtZTogc3RyCgogICAgT24gYSBiYXNlIGNsYXNzOgoKICAgICAgICBAZGF0YWNsYXNzX3RyYW5zZm9ybSgpCiAgICAgICAgY2xhc3MgTW9kZWxCYXNlOiAuLi4KCiAgICAgICAgY2xhc3MgQ3VzdG9tZXJNb2RlbChNb2RlbEJhc2UpOgogICAgICAgICAgICBpZDogaW50CiAgICAgICAgICAgIG5hbWU6IHN0cgoKICAgIE9uIGEgbWV0YWNsYXNzOgoKICAgICAgICBAZGF0YWNsYXNzX3RyYW5zZm9ybSgpCiAgICAgICAgY2xhc3MgTW9kZWxNZXRhKHR5cGUpOiAuLi4KCiAgICAgICAgY2xhc3MgTW9kZWxCYXNlKG1ldGFjbGFzcz1Nb2RlbE1ldGEpOiAuLi4KCiAgICAgICAgY2xhc3MgQ3VzdG9tZXJNb2RlbChNb2RlbEJhc2UpOgogICAgICAgICAgICBpZDogaW50CiAgICAgICAgICAgIG5hbWU6IHN0cgoKICAgIFRoZSBgYEN1c3RvbWVyTW9kZWxgYCBjbGFzc2VzIGRlZmluZWQgYWJvdmUgd2lsbAogICAgYmUgdHJlYXRlZCBieSB0eXBlIGNoZWNrZXJzIHNpbWlsYXJseSB0byBjbGFzc2VzIGNyZWF0ZWQgd2l0aAogICAgYGBAZGF0YWNsYXNzZXMuZGF0YWNsYXNzYGAuCiAgICBGb3IgZXhhbXBsZSwgdHlwZSBjaGVja2VycyB3aWxsIGFzc3VtZSB0aGVzZSBjbGFzc2VzIGhhdmUKICAgIGBgX19pbml0X19gYCBtZXRob2RzIHRoYXQgYWNjZXB0IGBgaWRgYCBhbmQgYGBuYW1lYGAuCgogICAgVGhlIGFyZ3VtZW50cyB0byB0aGlzIGRlY29yYXRvciBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgdGhpcyBiZWhhdmlvcjoKICAgIC0gYGBlcV9kZWZhdWx0YGAgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGBgZXFgYCBwYXJhbWV0ZXIgaXMgYXNzdW1lZCB0byBiZQogICAgICAgIGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYCBpZiBpdCBpcyBvbWl0dGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAtIGBgb3JkZXJfZGVmYXVsdGBgIGluZGljYXRlcyB3aGV0aGVyIHRoZSBgYG9yZGVyYGAgcGFyYW1ldGVyIGlzCiAgICAgICAgYXNzdW1lZCB0byBiZSBUcnVlIG9yIEZhbHNlIGlmIGl0IGlzIG9taXR0ZWQgYnkgdGhlIGNhbGxlci4KICAgIC0gYGBrd19vbmx5X2RlZmF1bHRgYCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgYGBrd19vbmx5YGAgcGFyYW1ldGVyIGlzCiAgICAgICAgYXNzdW1lZCB0byBiZSBUcnVlIG9yIEZhbHNlIGlmIGl0IGlzIG9taXR0ZWQgYnkgdGhlIGNhbGxlci4KICAgIC0gYGBmaWVsZF9zcGVjaWZpZXJzYGAgc3BlY2lmaWVzIGEgc3RhdGljIGxpc3Qgb2Ygc3VwcG9ydGVkIGNsYXNzZXMKICAgICAgICBvciBmdW5jdGlvbnMgdGhhdCBkZXNjcmliZSBmaWVsZHMsIHNpbWlsYXIgdG8gYGBkYXRhY2xhc3Nlcy5maWVsZCgpYGAuCiAgICAtIEFyYml0cmFyeSBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgYWNjZXB0ZWQgaW4gb3JkZXIgdG8gYWxsb3cgZm9yCiAgICAgICAgcG9zc2libGUgZnV0dXJlIGV4dGVuc2lvbnMuCgogICAgQXQgcnVudGltZSwgdGhpcyBkZWNvcmF0b3IgcmVjb3JkcyBpdHMgYXJndW1lbnRzIGluIHRoZQogICAgYGBfX2RhdGFjbGFzc190cmFuc2Zvcm1fX2BgIGF0dHJpYnV0ZSBvbiB0aGUgZGVjb3JhdGVkIG9iamVjdC4KICAgIEl0IGhhcyBubyBvdGhlciBydW50aW1lIGVmZmVjdC4KCiAgICBTZWUgUEVQIDY4MSBmb3IgbW9yZSBkZXRhaWxzLgogICAgIiIiCiAgICBkZWYgZGVjb3JhdG9yKGNsc19vcl9mbik6CiAgICAgICAgY2xzX29yX2ZuLl9fZGF0YWNsYXNzX3RyYW5zZm9ybV9fID0gewogICAgICAgICAgICAiZXFfZGVmYXVsdCI6IGVxX2RlZmF1bHQsCiAgICAgICAgICAgICJvcmRlcl9kZWZhdWx0Ijogb3JkZXJfZGVmYXVsdCwKICAgICAgICAgICAgImt3X29ubHlfZGVmYXVsdCI6IGt3X29ubHlfZGVmYXVsdCwKICAgICAgICAgICAgImZpZWxkX3NwZWNpZmllcnMiOiBmaWVsZF9zcGVjaWZpZXJzLAogICAgICAgICAgICAia3dhcmdzIjoga3dhcmdzLAogICAgICAgIH0KICAgICAgICByZXR1cm4gY2xzX29yX2ZuCiAgICByZXR1cm4gZGVjb3JhdG9yClBLAwQUAAAAAAACIKNWAzUBu28bAABvGwAABQAAAHV1LnB5IyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKCiMgQ29weXJpZ2h0IDE5OTQgYnkgTGFuY2UgRWxsaW5naG91c2UKIyBDYXRoZWRyYWwgQ2l0eSwgQ2FsaWZvcm5pYSBSZXB1YmxpYywgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhLgojICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAojIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwojIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwKIyBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0CiMgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluCiMgc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBMYW5jZSBFbGxpbmdob3VzZQojIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbgojIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uCiMgTEFOQ0UgRUxMSU5HSE9VU0UgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPCiMgVEhJUyBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAojIEZJVE5FU1MsIElOIE5PIEVWRU5UIFNIQUxMIExBTkNFIEVMTElOR0hPVVNFIENFTlRSVU0gQkUgTElBQkxFCiMgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKIyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KIyBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVAojIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiMKIyBNb2RpZmllZCBieSBKYWNrIEphbnNlbiwgQ1dJLCBKdWx5IDE5OTU6CiMgLSBVc2UgYmluYXNjaWkgbW9kdWxlIHRvIGRvIHRoZSBhY3R1YWwgbGluZS1ieS1saW5lIGNvbnZlcnNpb24KIyAgIGJldHdlZW4gYXNjaWkgYW5kIGJpbmFyeS4gVGhpcyByZXN1bHRzIGluIGEgMTAwMC1mb2xkIHNwZWVkdXAuIFRoZSBDCiMgICB2ZXJzaW9uIGlzIHN0aWxsIDUgdGltZXMgZmFzdGVyLCB0aG91Z2guCiMgLSBBcmd1bWVudHMgbW9yZSBjb21wbGlhbnQgd2l0aCBweXRob24gc3RhbmRhcmQKCiIiIkltcGxlbWVudGF0aW9uIG9mIHRoZSBVVWVuY29kZSBhbmQgVVVkZWNvZGUgZnVuY3Rpb25zLgoKZW5jb2RlKGluX2ZpbGUsIG91dF9maWxlIFssbmFtZSwgbW9kZV0sICosIGJhY2t0aWNrPUZhbHNlKQpkZWNvZGUoaW5fZmlsZSBbLCBvdXRfZmlsZSwgbW9kZSwgcXVpZXRdKQoiIiIKCmltcG9ydCBiaW5hc2NpaQppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgd2FybmluZ3MKCndhcm5pbmdzLl9kZXByZWNhdGVkKF9fbmFtZV9fLCByZW1vdmU9KDMsIDEzKSkKCl9fYWxsX18gPSBbIkVycm9yIiwgImVuY29kZSIsICJkZWNvZGUiXQoKY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgIHBhc3MKCmRlZiBlbmNvZGUoaW5fZmlsZSwgb3V0X2ZpbGUsIG5hbWU9Tm9uZSwgbW9kZT1Ob25lLCAqLCBiYWNrdGljaz1GYWxzZSk6CiAgICAiIiJVdWVuY29kZSBmaWxlIiIiCiAgICAjCiAgICAjIElmIGluX2ZpbGUgaXMgYSBwYXRobmFtZSBvcGVuIGl0IGFuZCBjaGFuZ2UgZGVmYXVsdHMKICAgICMKICAgIG9wZW5lZF9maWxlcyA9IFtdCiAgICB0cnk6CiAgICAgICAgaWYgaW5fZmlsZSA9PSAnLSc6CiAgICAgICAgICAgIGluX2ZpbGUgPSBzeXMuc3RkaW4uYnVmZmVyCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKGluX2ZpbGUsIHN0cik6CiAgICAgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGluX2ZpbGUpCiAgICAgICAgICAgIGlmIG1vZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBtb2RlID0gb3Muc3RhdChpbl9maWxlKS5zdF9tb2RlCiAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBpbl9maWxlID0gb3Blbihpbl9maWxlLCAncmInKQogICAgICAgICAgICBvcGVuZWRfZmlsZXMuYXBwZW5kKGluX2ZpbGUpCiAgICAgICAgIwogICAgICAgICMgT3BlbiBvdXRfZmlsZSBpZiBpdCBpcyBhIHBhdGhuYW1lCiAgICAgICAgIwogICAgICAgIGlmIG91dF9maWxlID09ICctJzoKICAgICAgICAgICAgb3V0X2ZpbGUgPSBzeXMuc3Rkb3V0LmJ1ZmZlcgogICAgICAgIGVsaWYgaXNpbnN0YW5jZShvdXRfZmlsZSwgc3RyKToKICAgICAgICAgICAgb3V0X2ZpbGUgPSBvcGVuKG91dF9maWxlLCAnd2InKQogICAgICAgICAgICBvcGVuZWRfZmlsZXMuYXBwZW5kKG91dF9maWxlKQogICAgICAgICMKICAgICAgICAjIFNldCBkZWZhdWx0cyBmb3IgbmFtZSBhbmQgbW9kZQogICAgICAgICMKICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIG5hbWUgPSAnLScKICAgICAgICBpZiBtb2RlIGlzIE5vbmU6CiAgICAgICAgICAgIG1vZGUgPSAwbzY2NgoKICAgICAgICAjCiAgICAgICAgIyBSZW1vdmUgbmV3bGluZSBjaGFycyBmcm9tIG5hbWUKICAgICAgICAjCiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgnXG4nLCdcXG4nKQogICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoJ1xyJywnXFxyJykKCiAgICAgICAgIwogICAgICAgICMgV3JpdGUgdGhlIGRhdGEKICAgICAgICAjCiAgICAgICAgb3V0X2ZpbGUud3JpdGUoKCdiZWdpbiAlbyAlc1xuJyAlICgobW9kZSAmIDBvNzc3KSwgbmFtZSkpLmVuY29kZSgiYXNjaWkiKSkKICAgICAgICBkYXRhID0gaW5fZmlsZS5yZWFkKDQ1KQogICAgICAgIHdoaWxlIGxlbihkYXRhKSA+IDA6CiAgICAgICAgICAgIG91dF9maWxlLndyaXRlKGJpbmFzY2lpLmIyYV91dShkYXRhLCBiYWNrdGljaz1iYWNrdGljaykpCiAgICAgICAgICAgIGRhdGEgPSBpbl9maWxlLnJlYWQoNDUpCiAgICAgICAgaWYgYmFja3RpY2s6CiAgICAgICAgICAgIG91dF9maWxlLndyaXRlKGInYFxuZW5kXG4nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG91dF9maWxlLndyaXRlKGInIFxuZW5kXG4nKQogICAgZmluYWxseToKICAgICAgICBmb3IgZiBpbiBvcGVuZWRfZmlsZXM6CiAgICAgICAgICAgIGYuY2xvc2UoKQoKCmRlZiBkZWNvZGUoaW5fZmlsZSwgb3V0X2ZpbGU9Tm9uZSwgbW9kZT1Ob25lLCBxdWlldD1GYWxzZSk6CiAgICAiIiJEZWNvZGUgdXVlbmNvZGVkIGZpbGUiIiIKICAgICMKICAgICMgT3BlbiB0aGUgaW5wdXQgZmlsZSwgaWYgbmVlZGVkLgogICAgIwogICAgb3BlbmVkX2ZpbGVzID0gW10KICAgIGlmIGluX2ZpbGUgPT0gJy0nOgogICAgICAgIGluX2ZpbGUgPSBzeXMuc3RkaW4uYnVmZmVyCiAgICBlbGlmIGlzaW5zdGFuY2UoaW5fZmlsZSwgc3RyKToKICAgICAgICBpbl9maWxlID0gb3Blbihpbl9maWxlLCAncmInKQogICAgICAgIG9wZW5lZF9maWxlcy5hcHBlbmQoaW5fZmlsZSkKCiAgICB0cnk6CiAgICAgICAgIwogICAgICAgICMgUmVhZCB1bnRpbCBhIGJlZ2luIGlzIGVuY291bnRlcmVkIG9yIHdlJ3ZlIGV4aGF1c3RlZCB0aGUgZmlsZQogICAgICAgICMKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBoZHIgPSBpbl9maWxlLnJlYWRsaW5lKCkKICAgICAgICAgICAgaWYgbm90IGhkcjoKICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCdObyB2YWxpZCBiZWdpbiBsaW5lIGZvdW5kIGluIGlucHV0IGZpbGUnKQogICAgICAgICAgICBpZiBub3QgaGRyLnN0YXJ0c3dpdGgoYidiZWdpbicpOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaGRyZmllbGRzID0gaGRyLnNwbGl0KGInICcsIDIpCiAgICAgICAgICAgIGlmIGxlbihoZHJmaWVsZHMpID09IDMgYW5kIGhkcmZpZWxkc1swXSA9PSBiJ2JlZ2luJzoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpbnQoaGRyZmllbGRzWzFdLCA4KQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgaWYgb3V0X2ZpbGUgaXMgTm9uZToKICAgICAgICAgICAgIyBJZiB0aGUgZmlsZW5hbWUgaXNuJ3QgQVNDSUksIHdoYXQncyB1cCB3aXRoIHRoYXQ/IT8KICAgICAgICAgICAgb3V0X2ZpbGUgPSBoZHJmaWVsZHNbMl0ucnN0cmlwKGInIFx0XHJcblxmJykuZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG91dF9maWxlKToKICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCdDYW5ub3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGU6ICVzJyAlIG91dF9maWxlKQogICAgICAgIGlmIG1vZGUgaXMgTm9uZToKICAgICAgICAgICAgbW9kZSA9IGludChoZHJmaWVsZHNbMV0sIDgpCiAgICAgICAgIwogICAgICAgICMgT3BlbiB0aGUgb3V0cHV0IGZpbGUKICAgICAgICAjCiAgICAgICAgaWYgb3V0X2ZpbGUgPT0gJy0nOgogICAgICAgICAgICBvdXRfZmlsZSA9IHN5cy5zdGRvdXQuYnVmZmVyCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG91dF9maWxlLCBzdHIpOgogICAgICAgICAgICBmcCA9IG9wZW4ob3V0X2ZpbGUsICd3YicpCiAgICAgICAgICAgIG9zLmNobW9kKG91dF9maWxlLCBtb2RlKQogICAgICAgICAgICBvdXRfZmlsZSA9IGZwCiAgICAgICAgICAgIG9wZW5lZF9maWxlcy5hcHBlbmQob3V0X2ZpbGUpCiAgICAgICAgIwogICAgICAgICMgTWFpbiBkZWNvZGluZyBsb29wCiAgICAgICAgIwogICAgICAgIHMgPSBpbl9maWxlLnJlYWRsaW5lKCkKICAgICAgICB3aGlsZSBzIGFuZCBzLnN0cmlwKGInIFx0XHJcblxmJykgIT0gYidlbmQnOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBkYXRhID0gYmluYXNjaWkuYTJiX3V1KHMpCiAgICAgICAgICAgIGV4Y2VwdCBiaW5hc2NpaS5FcnJvciBhcyB2OgogICAgICAgICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBicm9rZW4gdXVlbmNvZGVycyBieSAvRnJlZHJpayBMdW5kaAogICAgICAgICAgICAgICAgbmJ5dGVzID0gKCgoc1swXS0zMikgJiA2MykgKiA0ICsgNSkgLy8gMwogICAgICAgICAgICAgICAgZGF0YSA9IGJpbmFzY2lpLmEyYl91dShzWzpuYnl0ZXNdKQogICAgICAgICAgICAgICAgaWYgbm90IHF1aWV0OgogICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIldhcm5pbmc6ICVzXG4iICUgdikKICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoZGF0YSkKICAgICAgICAgICAgcyA9IGluX2ZpbGUucmVhZGxpbmUoKQogICAgICAgIGlmIG5vdCBzOgogICAgICAgICAgICByYWlzZSBFcnJvcignVHJ1bmNhdGVkIGlucHV0IGZpbGUnKQogICAgZmluYWxseToKICAgICAgICBmb3IgZiBpbiBvcGVuZWRfZmlsZXM6CiAgICAgICAgICAgIGYuY2xvc2UoKQoKZGVmIHRlc3QoKToKICAgICIiInV1ZW5jb2RlL3V1ZGVjb2RlIG1haW4gcHJvZ3JhbSIiIgoKICAgIGltcG9ydCBvcHRwYXJzZQogICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgWy1kXSBbLXRdIFtpbnB1dCBbb3V0cHV0XV0nKQogICAgcGFyc2VyLmFkZF9vcHRpb24oJy1kJywgJy0tZGVjb2RlJywgZGVzdD0nZGVjb2RlJywgaGVscD0nRGVjb2RlIChpbnN0ZWFkIG9mIGVuY29kZSk/JywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRleHQnLCBkZXN0PSd0ZXh0JywgaGVscD0nZGF0YSBpcyB0ZXh0LCBlbmNvZGVkIGZvcm1hdCB1bml4LWNvbXBhdGlibGUgdGV4dD8nLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnKQoKICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIGlmIGxlbihhcmdzKSA+IDI6CiAgICAgICAgcGFyc2VyLmVycm9yKCdpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cycpCiAgICAgICAgc3lzLmV4aXQoMSkKCiAgICAjIFVzZSB0aGUgYmluYXJ5IHN0cmVhbXMgdW5kZXJseWluZyBzdGRpbi9zdGRvdXQKICAgIGlucHV0ID0gc3lzLnN0ZGluLmJ1ZmZlcgogICAgb3V0cHV0ID0gc3lzLnN0ZG91dC5idWZmZXIKICAgIGlmIGxlbihhcmdzKSA+IDA6CiAgICAgICAgaW5wdXQgPSBhcmdzWzBdCiAgICBpZiBsZW4oYXJncykgPiAxOgogICAgICAgIG91dHB1dCA9IGFyZ3NbMV0KCiAgICBpZiBvcHRpb25zLmRlY29kZToKICAgICAgICBpZiBvcHRpb25zLnRleHQ6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3V0cHV0LCBzdHIpOgogICAgICAgICAgICAgICAgb3V0cHV0ID0gb3BlbihvdXRwdXQsICd3YicpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludChzeXMuYXJndlswXSwgJzogY2Fubm90IGRvIC10IHRvIHN0ZG91dCcpCiAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgIGRlY29kZShpbnB1dCwgb3V0cHV0KQogICAgZWxzZToKICAgICAgICBpZiBvcHRpb25zLnRleHQ6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5wdXQsIHN0cik6CiAgICAgICAgICAgICAgICBpbnB1dCA9IG9wZW4oaW5wdXQsICdyYicpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludChzeXMuYXJndlswXSwgJzogY2Fubm90IGRvIC10IGZyb20gc3RkaW4nKQogICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKICAgICAgICBlbmNvZGUoaW5wdXQsIG91dHB1dCkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB0ZXN0KCkKUEsDBBQAAAAAAAIgo1bG8UPFzWsAAM1rAAAHAAAAdXVpZC5weXIiIiJVVUlEIG9iamVjdHMgKHVuaXZlcnNhbGx5IHVuaXF1ZSBpZGVudGlmaWVycykgYWNjb3JkaW5nIHRvIFJGQyA0MTIyLgoKVGhpcyBtb2R1bGUgcHJvdmlkZXMgaW1tdXRhYmxlIFVVSUQgb2JqZWN0cyAoY2xhc3MgVVVJRCkgYW5kIHRoZSBmdW5jdGlvbnMKdXVpZDEoKSwgdXVpZDMoKSwgdXVpZDQoKSwgdXVpZDUoKSBmb3IgZ2VuZXJhdGluZyB2ZXJzaW9uIDEsIDMsIDQsIGFuZCA1ClVVSURzIGFzIHNwZWNpZmllZCBpbiBSRkMgNDEyMi4KCklmIGFsbCB5b3Ugd2FudCBpcyBhIHVuaXF1ZSBJRCwgeW91IHNob3VsZCBwcm9iYWJseSBjYWxsIHV1aWQxKCkgb3IgdXVpZDQoKS4KTm90ZSB0aGF0IHV1aWQxKCkgbWF5IGNvbXByb21pc2UgcHJpdmFjeSBzaW5jZSBpdCBjcmVhdGVzIGEgVVVJRCBjb250YWluaW5nCnRoZSBjb21wdXRlcidzIG5ldHdvcmsgYWRkcmVzcy4gIHV1aWQ0KCkgY3JlYXRlcyBhIHJhbmRvbSBVVUlELgoKVHlwaWNhbCB1c2FnZToKCiAgICA+Pj4gaW1wb3J0IHV1aWQKCiAgICAjIG1ha2UgYSBVVUlEIGJhc2VkIG9uIHRoZSBob3N0IElEIGFuZCBjdXJyZW50IHRpbWUKICAgID4+PiB1dWlkLnV1aWQxKCkgICAgIyBkb2N0ZXN0OiArU0tJUAogICAgVVVJRCgnYTgwOThjMWEtZjg2ZS0xMWRhLWJkMWEtMDAxMTI0NDRiZTFlJykKCiAgICAjIG1ha2UgYSBVVUlEIHVzaW5nIGFuIE1ENSBoYXNoIG9mIGEgbmFtZXNwYWNlIFVVSUQgYW5kIGEgbmFtZQogICAgPj4+IHV1aWQudXVpZDModXVpZC5OQU1FU1BBQ0VfRE5TLCAncHl0aG9uLm9yZycpCiAgICBVVUlEKCc2ZmE0NTllYS1lZThhLTNjYTQtODk0ZS1kYjc3ZTE2MDM1NWUnKQoKICAgICMgbWFrZSBhIHJhbmRvbSBVVUlECiAgICA+Pj4gdXVpZC51dWlkNCgpICAgICMgZG9jdGVzdDogK1NLSVAKICAgIFVVSUQoJzE2ZmQyNzA2LThiYWYtNDMzYi04MmViLThjN2ZhZGE4NDdkYScpCgogICAgIyBtYWtlIGEgVVVJRCB1c2luZyBhIFNIQS0xIGhhc2ggb2YgYSBuYW1lc3BhY2UgVVVJRCBhbmQgYSBuYW1lCiAgICA+Pj4gdXVpZC51dWlkNSh1dWlkLk5BTUVTUEFDRV9ETlMsICdweXRob24ub3JnJykKICAgIFVVSUQoJzg4NjMxM2UxLTNiOGEtNTM3Mi05YjkwLTBjOWFlZTE5OWU1ZCcpCgogICAgIyBtYWtlIGEgVVVJRCBmcm9tIGEgc3RyaW5nIG9mIGhleCBkaWdpdHMgKGJyYWNlcyBhbmQgaHlwaGVucyBpZ25vcmVkKQogICAgPj4+IHggPSB1dWlkLlVVSUQoJ3swMDAxMDIwMy0wNDA1LTA2MDctMDgwOS0wYTBiMGMwZDBlMGZ9JykKCiAgICAjIGNvbnZlcnQgYSBVVUlEIHRvIGEgc3RyaW5nIG9mIGhleCBkaWdpdHMgaW4gc3RhbmRhcmQgZm9ybQogICAgPj4+IHN0cih4KQogICAgJzAwMDEwMjAzLTA0MDUtMDYwNy0wODA5LTBhMGIwYzBkMGUwZicKCiAgICAjIGdldCB0aGUgcmF3IDE2IGJ5dGVzIG9mIHRoZSBVVUlECiAgICA+Pj4geC5ieXRlcwogICAgYidceDAwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1x4MDhcdFxuXHgwYlx4MGNcclx4MGVceDBmJwoKICAgICMgbWFrZSBhIFVVSUQgZnJvbSBhIDE2LWJ5dGUgc3RyaW5nCiAgICA+Pj4gdXVpZC5VVUlEKGJ5dGVzPXguYnl0ZXMpCiAgICBVVUlEKCcwMDAxMDIwMy0wNDA1LTA2MDctMDgwOS0wYTBiMGMwZDBlMGYnKQoiIiIKCmltcG9ydCBvcwppbXBvcnQgc3lzCgpmcm9tIGVudW0gaW1wb3J0IEVudW0sIF9zaW1wbGVfZW51bQoKCl9fYXV0aG9yX18gPSAnS2EtUGluZyBZZWUgPHBpbmdAemVzdHkuY2E+JwoKIyBUaGUgcmVjb2duaXplZCBwbGF0Zm9ybXMgLSBrbm93biBiZWhhdmlvcnMKaWYgc3lzLnBsYXRmb3JtIGluICgnd2luMzInLCAnZGFyd2luJyk6CiAgICBfQUlYID0gX0xJTlVYID0gRmFsc2UKZWxzZToKICAgIGltcG9ydCBwbGF0Zm9ybQogICAgX3BsYXRmb3JtX3N5c3RlbSA9IHBsYXRmb3JtLnN5c3RlbSgpCiAgICBfQUlYICAgICA9IF9wbGF0Zm9ybV9zeXN0ZW0gPT0gJ0FJWCcKICAgIF9MSU5VWCAgID0gX3BsYXRmb3JtX3N5c3RlbSA9PSAnTGludXgnCgpfTUFDX0RFTElNID0gYic6JwpfTUFDX09NSVRTX0xFQURJTkdfWkVST0VTID0gRmFsc2UKaWYgX0FJWDoKICAgIF9NQUNfREVMSU0gPSBiJy4nCiAgICBfTUFDX09NSVRTX0xFQURJTkdfWkVST0VTID0gVHJ1ZQoKUkVTRVJWRURfTkNTLCBSRkNfNDEyMiwgUkVTRVJWRURfTUlDUk9TT0ZULCBSRVNFUlZFRF9GVVRVUkUgPSBbCiAgICAncmVzZXJ2ZWQgZm9yIE5DUyBjb21wYXRpYmlsaXR5JywgJ3NwZWNpZmllZCBpbiBSRkMgNDEyMicsCiAgICAncmVzZXJ2ZWQgZm9yIE1pY3Jvc29mdCBjb21wYXRpYmlsaXR5JywgJ3Jlc2VydmVkIGZvciBmdXR1cmUgZGVmaW5pdGlvbiddCgppbnRfID0gaW50ICAgICAgIyBUaGUgYnVpbHQtaW4gaW50IHR5cGUKYnl0ZXNfID0gYnl0ZXMgICMgVGhlIGJ1aWx0LWluIGJ5dGVzIHR5cGUKCgpAX3NpbXBsZV9lbnVtKEVudW0pCmNsYXNzIFNhZmVVVUlEOgogICAgc2FmZSA9IDAKICAgIHVuc2FmZSA9IC0xCiAgICB1bmtub3duID0gTm9uZQoKCmNsYXNzIFVVSUQ6CiAgICAiIiJJbnN0YW5jZXMgb2YgdGhlIFVVSUQgY2xhc3MgcmVwcmVzZW50IFVVSURzIGFzIHNwZWNpZmllZCBpbiBSRkMgNDEyMi4KICAgIFVVSUQgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCBoYXNoYWJsZSwgYW5kIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuCiAgICBDb252ZXJ0aW5nIGEgVVVJRCB0byBhIHN0cmluZyB3aXRoIHN0cigpIHlpZWxkcyBzb21ldGhpbmcgaW4gdGhlIGZvcm0KICAgICcxMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODlhYmMnLiAgVGhlIFVVSUQgY29uc3RydWN0b3IgYWNjZXB0cwogICAgZml2ZSBwb3NzaWJsZSBmb3JtczogYSBzaW1pbGFyIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMsIG9yIGEgdHVwbGUKICAgIG9mIHNpeCBpbnRlZ2VyIGZpZWxkcyAod2l0aCAzMi1iaXQsIDE2LWJpdCwgMTYtYml0LCA4LWJpdCwgOC1iaXQsIGFuZAogICAgNDgtYml0IHZhbHVlcyByZXNwZWN0aXZlbHkpIGFzIGFuIGFyZ3VtZW50IG5hbWVkICdmaWVsZHMnLCBvciBhIHN0cmluZwogICAgb2YgMTYgYnl0ZXMgKHdpdGggYWxsIHRoZSBpbnRlZ2VyIGZpZWxkcyBpbiBiaWctZW5kaWFuIG9yZGVyKSBhcyBhbgogICAgYXJndW1lbnQgbmFtZWQgJ2J5dGVzJywgb3IgYSBzdHJpbmcgb2YgMTYgYnl0ZXMgKHdpdGggdGhlIGZpcnN0IHRocmVlCiAgICBmaWVsZHMgaW4gbGl0dGxlLWVuZGlhbiBvcmRlcikgYXMgYW4gYXJndW1lbnQgbmFtZWQgJ2J5dGVzX2xlJywgb3IgYQogICAgc2luZ2xlIDEyOC1iaXQgaW50ZWdlciBhcyBhbiBhcmd1bWVudCBuYW1lZCAnaW50Jy4KCiAgICBVVUlEcyBoYXZlIHRoZXNlIHJlYWQtb25seSBhdHRyaWJ1dGVzOgoKICAgICAgICBieXRlcyAgICAgICB0aGUgVVVJRCBhcyBhIDE2LWJ5dGUgc3RyaW5nIChjb250YWluaW5nIHRoZSBzaXgKICAgICAgICAgICAgICAgICAgICBpbnRlZ2VyIGZpZWxkcyBpbiBiaWctZW5kaWFuIGJ5dGUgb3JkZXIpCgogICAgICAgIGJ5dGVzX2xlICAgIHRoZSBVVUlEIGFzIGEgMTYtYnl0ZSBzdHJpbmcgKHdpdGggdGltZV9sb3csIHRpbWVfbWlkLAogICAgICAgICAgICAgICAgICAgIGFuZCB0aW1lX2hpX3ZlcnNpb24gaW4gbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyKQoKICAgICAgICBmaWVsZHMgICAgICBhIHR1cGxlIG9mIHRoZSBzaXggaW50ZWdlciBmaWVsZHMgb2YgdGhlIFVVSUQsCiAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGFsc28gYXZhaWxhYmxlIGFzIHNpeCBpbmRpdmlkdWFsIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICBhbmQgdHdvIGRlcml2ZWQgYXR0cmlidXRlczoKCiAgICAgICAgICAgIHRpbWVfbG93ICAgICAgICAgICAgICAgIHRoZSBmaXJzdCAzMiBiaXRzIG9mIHRoZSBVVUlECiAgICAgICAgICAgIHRpbWVfbWlkICAgICAgICAgICAgICAgIHRoZSBuZXh0IDE2IGJpdHMgb2YgdGhlIFVVSUQKICAgICAgICAgICAgdGltZV9oaV92ZXJzaW9uICAgICAgICAgdGhlIG5leHQgMTYgYml0cyBvZiB0aGUgVVVJRAogICAgICAgICAgICBjbG9ja19zZXFfaGlfdmFyaWFudCAgICB0aGUgbmV4dCA4IGJpdHMgb2YgdGhlIFVVSUQKICAgICAgICAgICAgY2xvY2tfc2VxX2xvdyAgICAgICAgICAgdGhlIG5leHQgOCBiaXRzIG9mIHRoZSBVVUlECiAgICAgICAgICAgIG5vZGUgICAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IDQ4IGJpdHMgb2YgdGhlIFVVSUQKCiAgICAgICAgICAgIHRpbWUgICAgICAgICAgICAgICAgICAgIHRoZSA2MC1iaXQgdGltZXN0YW1wCiAgICAgICAgICAgIGNsb2NrX3NlcSAgICAgICAgICAgICAgIHRoZSAxNC1iaXQgc2VxdWVuY2UgbnVtYmVyCgogICAgICAgIGhleCAgICAgICAgIHRoZSBVVUlEIGFzIGEgMzItY2hhcmFjdGVyIGhleGFkZWNpbWFsIHN0cmluZwoKICAgICAgICBpbnQgICAgICAgICB0aGUgVVVJRCBhcyBhIDEyOC1iaXQgaW50ZWdlcgoKICAgICAgICB1cm4gICAgICAgICB0aGUgVVVJRCBhcyBhIFVSTiBhcyBzcGVjaWZpZWQgaW4gUkZDIDQxMjIKCiAgICAgICAgdmFyaWFudCAgICAgdGhlIFVVSUQgdmFyaWFudCAob25lIG9mIHRoZSBjb25zdGFudHMgUkVTRVJWRURfTkNTLAogICAgICAgICAgICAgICAgICAgIFJGQ180MTIyLCBSRVNFUlZFRF9NSUNST1NPRlQsIG9yIFJFU0VSVkVEX0ZVVFVSRSkKCiAgICAgICAgdmVyc2lvbiAgICAgdGhlIFVVSUQgdmVyc2lvbiBudW1iZXIgKDEgdGhyb3VnaCA1LCBtZWFuaW5nZnVsIG9ubHkKICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSB2YXJpYW50IGlzIFJGQ180MTIyKQoKICAgICAgICBpc19zYWZlICAgICBBbiBlbnVtIGluZGljYXRpbmcgd2hldGhlciB0aGUgVVVJRCBoYXMgYmVlbiBnZW5lcmF0ZWQgaW4KICAgICAgICAgICAgICAgICAgICBhIHdheSB0aGF0IGlzIHNhZmUgZm9yIG11bHRpcHJvY2Vzc2luZyBhcHBsaWNhdGlvbnMsIHZpYQogICAgICAgICAgICAgICAgICAgIHV1aWRfZ2VuZXJhdGVfdGltZV9zYWZlKDMpLgogICAgIiIiCgogICAgX19zbG90c19fID0gKCdpbnQnLCAnaXNfc2FmZScsICdfX3dlYWtyZWZfXycpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGhleD1Ob25lLCBieXRlcz1Ob25lLCBieXRlc19sZT1Ob25lLCBmaWVsZHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICBpbnQ9Tm9uZSwgdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICosIGlzX3NhZmU9U2FmZVVVSUQudW5rbm93bik6CiAgICAgICAgciIiIkNyZWF0ZSBhIFVVSUQgZnJvbSBlaXRoZXIgYSBzdHJpbmcgb2YgMzIgaGV4YWRlY2ltYWwgZGlnaXRzLAogICAgICAgIGEgc3RyaW5nIG9mIDE2IGJ5dGVzIGFzIHRoZSAnYnl0ZXMnIGFyZ3VtZW50LCBhIHN0cmluZyBvZiAxNiBieXRlcwogICAgICAgIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgYXMgdGhlICdieXRlc19sZScgYXJndW1lbnQsIGEgdHVwbGUgb2Ygc2l4CiAgICAgICAgaW50ZWdlcnMgKDMyLWJpdCB0aW1lX2xvdywgMTYtYml0IHRpbWVfbWlkLCAxNi1iaXQgdGltZV9oaV92ZXJzaW9uLAogICAgICAgIDgtYml0IGNsb2NrX3NlcV9oaV92YXJpYW50LCA4LWJpdCBjbG9ja19zZXFfbG93LCA0OC1iaXQgbm9kZSkgYXMKICAgICAgICB0aGUgJ2ZpZWxkcycgYXJndW1lbnQsIG9yIGEgc2luZ2xlIDEyOC1iaXQgaW50ZWdlciBhcyB0aGUgJ2ludCcKICAgICAgICBhcmd1bWVudC4gIFdoZW4gYSBzdHJpbmcgb2YgaGV4IGRpZ2l0cyBpcyBnaXZlbiwgY3VybHkgYnJhY2VzLAogICAgICAgIGh5cGhlbnMsIGFuZCBhIFVSTiBwcmVmaXggYXJlIGFsbCBvcHRpb25hbC4gIEZvciBleGFtcGxlLCB0aGVzZQogICAgICAgIGV4cHJlc3Npb25zIGFsbCB5aWVsZCB0aGUgc2FtZSBVVUlEOgoKICAgICAgICBVVUlEKCd7MTIzNDU2NzgtMTIzNC01Njc4LTEyMzQtNTY3ODEyMzQ1Njc4fScpCiAgICAgICAgVVVJRCgnMTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgnKQogICAgICAgIFVVSUQoJ3Vybjp1dWlkOjEyMzQ1Njc4LTEyMzQtNTY3OC0xMjM0LTU2NzgxMjM0NTY3OCcpCiAgICAgICAgVVVJRChieXRlcz0nXHgxMlx4MzRceDU2XHg3OCcqNCkKICAgICAgICBVVUlEKGJ5dGVzX2xlPSdceDc4XHg1Nlx4MzRceDEyXHgzNFx4MTJceDc4XHg1NicgKwogICAgICAgICAgICAgICAgICAgICAgJ1x4MTJceDM0XHg1Nlx4NzhceDEyXHgzNFx4NTZceDc4JykKICAgICAgICBVVUlEKGZpZWxkcz0oMHgxMjM0NTY3OCwgMHgxMjM0LCAweDU2NzgsIDB4MTIsIDB4MzQsIDB4NTY3ODEyMzQ1Njc4KSkKICAgICAgICBVVUlEKGludD0weDEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4KQoKICAgICAgICBFeGFjdGx5IG9uZSBvZiAnaGV4JywgJ2J5dGVzJywgJ2J5dGVzX2xlJywgJ2ZpZWxkcycsIG9yICdpbnQnIG11c3QKICAgICAgICBiZSBnaXZlbi4gIFRoZSAndmVyc2lvbicgYXJndW1lbnQgaXMgb3B0aW9uYWw7IGlmIGdpdmVuLCB0aGUgcmVzdWx0aW5nCiAgICAgICAgVVVJRCB3aWxsIGhhdmUgaXRzIHZhcmlhbnQgYW5kIHZlcnNpb24gc2V0IGFjY29yZGluZyB0byBSRkMgNDEyMiwKICAgICAgICBvdmVycmlkaW5nIHRoZSBnaXZlbiAnaGV4JywgJ2J5dGVzJywgJ2J5dGVzX2xlJywgJ2ZpZWxkcycsIG9yICdpbnQnLgoKICAgICAgICBpc19zYWZlIGlzIGFuIGVudW0gZXhwb3NlZCBhcyBhbiBhdHRyaWJ1dGUgb24gdGhlIGluc3RhbmNlLiAgSXQKICAgICAgICBpbmRpY2F0ZXMgd2hldGhlciB0aGUgVVVJRCBoYXMgYmVlbiBnZW5lcmF0ZWQgaW4gYSB3YXkgdGhhdCBpcyBzYWZlCiAgICAgICAgZm9yIG11bHRpcHJvY2Vzc2luZyBhcHBsaWNhdGlvbnMsIHZpYSB1dWlkX2dlbmVyYXRlX3RpbWVfc2FmZSgzKS4KICAgICAgICAiIiIKCiAgICAgICAgaWYgW2hleCwgYnl0ZXMsIGJ5dGVzX2xlLCBmaWVsZHMsIGludF0uY291bnQoTm9uZSkgIT0gNDoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdvbmUgb2YgdGhlIGhleCwgYnl0ZXMsIGJ5dGVzX2xlLCBmaWVsZHMsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvciBpbnQgYXJndW1lbnRzIG11c3QgYmUgZ2l2ZW4nKQogICAgICAgIGlmIGhleCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaGV4ID0gaGV4LnJlcGxhY2UoJ3VybjonLCAnJykucmVwbGFjZSgndXVpZDonLCAnJykKICAgICAgICAgICAgaGV4ID0gaGV4LnN0cmlwKCd7fScpLnJlcGxhY2UoJy0nLCAnJykKICAgICAgICAgICAgaWYgbGVuKGhleCkgIT0gMzI6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdiYWRseSBmb3JtZWQgaGV4YWRlY2ltYWwgVVVJRCBzdHJpbmcnKQogICAgICAgICAgICBpbnQgPSBpbnRfKGhleCwgMTYpCiAgICAgICAgaWYgYnl0ZXNfbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIGxlbihieXRlc19sZSkgIT0gMTY6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdieXRlc19sZSBpcyBub3QgYSAxNi1jaGFyIHN0cmluZycpCiAgICAgICAgICAgIGJ5dGVzID0gKGJ5dGVzX2xlWzQtMTo6LTFdICsgYnl0ZXNfbGVbNi0xOjQtMTotMV0gKwogICAgICAgICAgICAgICAgICAgICBieXRlc19sZVs4LTE6Ni0xOi0xXSArIGJ5dGVzX2xlWzg6XSkKICAgICAgICBpZiBieXRlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbGVuKGJ5dGVzKSAhPSAxNjoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2J5dGVzIGlzIG5vdCBhIDE2LWNoYXIgc3RyaW5nJykKICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYnl0ZXMsIGJ5dGVzXyksIHJlcHIoYnl0ZXMpCiAgICAgICAgICAgIGludCA9IGludF8uZnJvbV9ieXRlcyhieXRlcykgICMgYmlnIGVuZGlhbgogICAgICAgIGlmIGZpZWxkcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbGVuKGZpZWxkcykgIT0gNjoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ZpZWxkcyBpcyBub3QgYSA2LXR1cGxlJykKICAgICAgICAgICAgKHRpbWVfbG93LCB0aW1lX21pZCwgdGltZV9oaV92ZXJzaW9uLAogICAgICAgICAgICAgY2xvY2tfc2VxX2hpX3ZhcmlhbnQsIGNsb2NrX3NlcV9sb3csIG5vZGUpID0gZmllbGRzCiAgICAgICAgICAgIGlmIG5vdCAwIDw9IHRpbWVfbG93IDwgMTw8MzI6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmaWVsZCAxIG91dCBvZiByYW5nZSAobmVlZCBhIDMyLWJpdCB2YWx1ZSknKQogICAgICAgICAgICBpZiBub3QgMCA8PSB0aW1lX21pZCA8IDE8PDE2OgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZmllbGQgMiBvdXQgb2YgcmFuZ2UgKG5lZWQgYSAxNi1iaXQgdmFsdWUpJykKICAgICAgICAgICAgaWYgbm90IDAgPD0gdGltZV9oaV92ZXJzaW9uIDwgMTw8MTY6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmaWVsZCAzIG91dCBvZiByYW5nZSAobmVlZCBhIDE2LWJpdCB2YWx1ZSknKQogICAgICAgICAgICBpZiBub3QgMCA8PSBjbG9ja19zZXFfaGlfdmFyaWFudCA8IDE8PDg6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmaWVsZCA0IG91dCBvZiByYW5nZSAobmVlZCBhbiA4LWJpdCB2YWx1ZSknKQogICAgICAgICAgICBpZiBub3QgMCA8PSBjbG9ja19zZXFfbG93IDwgMTw8ODoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ZpZWxkIDUgb3V0IG9mIHJhbmdlIChuZWVkIGFuIDgtYml0IHZhbHVlKScpCiAgICAgICAgICAgIGlmIG5vdCAwIDw9IG5vZGUgPCAxPDw0ODoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ZpZWxkIDYgb3V0IG9mIHJhbmdlIChuZWVkIGEgNDgtYml0IHZhbHVlKScpCiAgICAgICAgICAgIGNsb2NrX3NlcSA9IChjbG9ja19zZXFfaGlfdmFyaWFudCA8PCA4KSB8IGNsb2NrX3NlcV9sb3cKICAgICAgICAgICAgaW50ID0gKCh0aW1lX2xvdyA8PCA5NikgfCAodGltZV9taWQgPDwgODApIHwKICAgICAgICAgICAgICAgICAgICh0aW1lX2hpX3ZlcnNpb24gPDwgNjQpIHwgKGNsb2NrX3NlcSA8PCA0OCkgfCBub2RlKQogICAgICAgIGlmIGludCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbm90IDAgPD0gaW50IDwgMTw8MTI4OgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW50IGlzIG91dCBvZiByYW5nZSAobmVlZCBhIDEyOC1iaXQgdmFsdWUpJykKICAgICAgICBpZiB2ZXJzaW9uIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgMSA8PSB2ZXJzaW9uIDw9IDU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbGxlZ2FsIHZlcnNpb24gbnVtYmVyJykKICAgICAgICAgICAgIyBTZXQgdGhlIHZhcmlhbnQgdG8gUkZDIDQxMjIuCiAgICAgICAgICAgIGludCAmPSB+KDB4YzAwMCA8PCA0OCkKICAgICAgICAgICAgaW50IHw9IDB4ODAwMCA8PCA0OAogICAgICAgICAgICAjIFNldCB0aGUgdmVyc2lvbiBudW1iZXIuCiAgICAgICAgICAgIGludCAmPSB+KDB4ZjAwMCA8PCA2NCkKICAgICAgICAgICAgaW50IHw9IHZlcnNpb24gPDwgNzYKICAgICAgICBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgJ2ludCcsIGludCkKICAgICAgICBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgJ2lzX3NhZmUnLCBpc19zYWZlKQoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgZCA9IHsnaW50Jzogc2VsZi5pbnR9CiAgICAgICAgaWYgc2VsZi5pc19zYWZlICE9IFNhZmVVVUlELnVua25vd246CiAgICAgICAgICAgICMgaXNfc2FmZSBpcyBhIFNhZmVVVUlEIGluc3RhbmNlLiAgUmV0dXJuIGp1c3QgaXRzIHZhbHVlLCBzbyB0aGF0CiAgICAgICAgICAgICMgaXQgY2FuIGJlIHVuLXBpY2tsZWQgaW4gb2xkZXIgUHl0aG9uIHZlcnNpb25zIHdpdGhvdXQgU2FmZVVVSUQuCiAgICAgICAgICAgIGRbJ2lzX3NhZmUnXSA9IHNlbGYuaXNfc2FmZS52YWx1ZQogICAgICAgIHJldHVybiBkCgogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsICdpbnQnLCBzdGF0ZVsnaW50J10pCiAgICAgICAgIyBpc19zYWZlIHdhcyBhZGRlZCBpbiAzLjc7IGl0IGlzIGFsc28gb21pdHRlZCB3aGVuIGl0IGlzICJ1bmtub3duIgogICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCAnaXNfc2FmZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhZmVVVUlEKHN0YXRlWydpc19zYWZlJ10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICdpc19zYWZlJyBpbiBzdGF0ZSBlbHNlIFNhZmVVVUlELnVua25vd24pCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVVVJRCk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmludCA9PSBvdGhlci5pbnQKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICAjIFEuIFdoYXQncyB0aGUgdmFsdWUgb2YgYmVpbmcgYWJsZSB0byBzb3J0IFVVSURzPwogICAgIyBBLiBVc2UgdGhlbSBhcyBrZXlzIGluIGEgQi1UcmVlIG9yIHNpbWlsYXIgbWFwcGluZy4KCiAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBVVUlEKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW50IDwgb3RoZXIuaW50CiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVVVJRCk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmludCA+IG90aGVyLmludAogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFVVSUQpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5pbnQgPD0gb3RoZXIuaW50CiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVVVJRCk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmludCA+PSBvdGhlci5pbnQKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5pbnQpCgogICAgZGVmIF9faW50X18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuaW50CgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQoKICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVVUlEIG9iamVjdHMgYXJlIGltbXV0YWJsZScpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgaGV4ID0gJyUwMzJ4JyAlIHNlbGYuaW50CiAgICAgICAgcmV0dXJuICclcy0lcy0lcy0lcy0lcycgJSAoCiAgICAgICAgICAgIGhleFs6OF0sIGhleFs4OjEyXSwgaGV4WzEyOjE2XSwgaGV4WzE2OjIwXSwgaGV4WzIwOl0pCgogICAgQHByb3BlcnR5CiAgICBkZWYgYnl0ZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuaW50LnRvX2J5dGVzKDE2KSAgIyBiaWcgZW5kaWFuCgogICAgQHByb3BlcnR5CiAgICBkZWYgYnl0ZXNfbGUoc2VsZik6CiAgICAgICAgYnl0ZXMgPSBzZWxmLmJ5dGVzCiAgICAgICAgcmV0dXJuIChieXRlc1s0LTE6Oi0xXSArIGJ5dGVzWzYtMTo0LTE6LTFdICsgYnl0ZXNbOC0xOjYtMTotMV0gKwogICAgICAgICAgICAgICAgYnl0ZXNbODpdKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGZpZWxkcyhzZWxmKToKICAgICAgICByZXR1cm4gKHNlbGYudGltZV9sb3csIHNlbGYudGltZV9taWQsIHNlbGYudGltZV9oaV92ZXJzaW9uLAogICAgICAgICAgICAgICAgc2VsZi5jbG9ja19zZXFfaGlfdmFyaWFudCwgc2VsZi5jbG9ja19zZXFfbG93LCBzZWxmLm5vZGUpCgogICAgQHByb3BlcnR5CiAgICBkZWYgdGltZV9sb3coc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuaW50ID4+IDk2CgogICAgQHByb3BlcnR5CiAgICBkZWYgdGltZV9taWQoc2VsZik6CiAgICAgICAgcmV0dXJuIChzZWxmLmludCA+PiA4MCkgJiAweGZmZmYKCiAgICBAcHJvcGVydHkKICAgIGRlZiB0aW1lX2hpX3ZlcnNpb24oc2VsZik6CiAgICAgICAgcmV0dXJuIChzZWxmLmludCA+PiA2NCkgJiAweGZmZmYKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjbG9ja19zZXFfaGlfdmFyaWFudChzZWxmKToKICAgICAgICByZXR1cm4gKHNlbGYuaW50ID4+IDU2KSAmIDB4ZmYKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjbG9ja19zZXFfbG93KHNlbGYpOgogICAgICAgIHJldHVybiAoc2VsZi5pbnQgPj4gNDgpICYgMHhmZgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHRpbWUoc2VsZik6CiAgICAgICAgcmV0dXJuICgoKHNlbGYudGltZV9oaV92ZXJzaW9uICYgMHgwZmZmKSA8PCA0OCkgfAogICAgICAgICAgICAgICAgKHNlbGYudGltZV9taWQgPDwgMzIpIHwgc2VsZi50aW1lX2xvdykKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjbG9ja19zZXEoc2VsZik6CiAgICAgICAgcmV0dXJuICgoKHNlbGYuY2xvY2tfc2VxX2hpX3ZhcmlhbnQgJiAweDNmKSA8PCA4KSB8CiAgICAgICAgICAgICAgICBzZWxmLmNsb2NrX3NlcV9sb3cpCgogICAgQHByb3BlcnR5CiAgICBkZWYgbm9kZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5pbnQgJiAweGZmZmZmZmZmZmZmZgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGhleChzZWxmKToKICAgICAgICByZXR1cm4gJyUwMzJ4JyAlIHNlbGYuaW50CgogICAgQHByb3BlcnR5CiAgICBkZWYgdXJuKHNlbGYpOgogICAgICAgIHJldHVybiAndXJuOnV1aWQ6JyArIHN0cihzZWxmKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZhcmlhbnQoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuaW50ICYgKDB4ODAwMCA8PCA0OCk6CiAgICAgICAgICAgIHJldHVybiBSRVNFUlZFRF9OQ1MKICAgICAgICBlbGlmIG5vdCBzZWxmLmludCAmICgweDQwMDAgPDwgNDgpOgogICAgICAgICAgICByZXR1cm4gUkZDXzQxMjIKICAgICAgICBlbGlmIG5vdCBzZWxmLmludCAmICgweDIwMDAgPDwgNDgpOgogICAgICAgICAgICByZXR1cm4gUkVTRVJWRURfTUlDUk9TT0ZUCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIFJFU0VSVkVEX0ZVVFVSRQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZlcnNpb24oc2VsZik6CiAgICAgICAgIyBUaGUgdmVyc2lvbiBiaXRzIGFyZSBvbmx5IG1lYW5pbmdmdWwgZm9yIFJGQyA0MTIyIFVVSURzLgogICAgICAgIGlmIHNlbGYudmFyaWFudCA9PSBSRkNfNDEyMjoKICAgICAgICAgICAgcmV0dXJuIGludCgoc2VsZi5pbnQgPj4gNzYpICYgMHhmKQoKCmRlZiBfZ2V0X2NvbW1hbmRfc3Rkb3V0KGNvbW1hbmQsICphcmdzKToKICAgIGltcG9ydCBpbywgb3MsIHNodXRpbCwgc3VicHJvY2VzcwoKICAgIHRyeToKICAgICAgICBwYXRoX2RpcnMgPSBvcy5lbnZpcm9uLmdldCgnUEFUSCcsIG9zLmRlZnBhdGgpLnNwbGl0KG9zLnBhdGhzZXApCiAgICAgICAgcGF0aF9kaXJzLmV4dGVuZChbJy9zYmluJywgJy91c3Ivc2JpbiddKQogICAgICAgIGV4ZWN1dGFibGUgPSBzaHV0aWwud2hpY2goY29tbWFuZCwgcGF0aD1vcy5wYXRoc2VwLmpvaW4ocGF0aF9kaXJzKSkKICAgICAgICBpZiBleGVjdXRhYmxlIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIyBMQ19BTEw9QyB0byBlbnN1cmUgRW5nbGlzaCBvdXRwdXQsIHN0ZGVycj1ERVZOVUxMIHRvIHByZXZlbnQgb3V0cHV0CiAgICAgICAgIyBvbiBzdGRlcnIgKE5vdGU6IHdlIGRvbid0IGhhdmUgYW4gZXhhbXBsZSB3aGVyZSB0aGUgd29yZHMgd2Ugc2VhcmNoCiAgICAgICAgIyBmb3IgYXJlIGFjdHVhbGx5IGxvY2FsaXplZCwgYnV0IGluIHRoZW9yeSBzb21lIHN5c3RlbSBjb3VsZCBkbyBzby4pCiAgICAgICAgZW52ID0gZGljdChvcy5lbnZpcm9uKQogICAgICAgIGVudlsnTENfQUxMJ10gPSAnQycKICAgICAgICAjIEVtcHR5IHN0cmluZ3Mgd2lsbCBiZSBxdW90ZWQgYnkgcG9wZW4gc28gd2Ugc2hvdWxkIGp1c3Qgb21taXQgaXQKICAgICAgICBpZiBhcmdzICE9ICgnJywpOgogICAgICAgICAgICBjb21tYW5kID0gKGV4ZWN1dGFibGUsICphcmdzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbW1hbmQgPSAoZXhlY3V0YWJsZSwpCiAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKICAgICAgICBpZiBub3QgcHJvYzoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKQogICAgICAgIHJldHVybiBpby5CeXRlc0lPKHN0ZG91dCkKICAgIGV4Y2VwdCAoT1NFcnJvciwgc3VicHJvY2Vzcy5TdWJwcm9jZXNzRXJyb3IpOgogICAgICAgIHJldHVybiBOb25lCgoKIyBGb3IgTUFDIChhLmsuYS4gSUVFRSA4MDIsIG9yIEVVSS00OCkgYWRkcmVzc2VzLCB0aGUgc2Vjb25kIGxlYXN0IHNpZ25pZmljYW50CiMgYml0IG9mIHRoZSBmaXJzdCBvY3RldCBzaWduaWZpZXMgd2hldGhlciB0aGUgTUFDIGFkZHJlc3MgaXMgdW5pdmVyc2FsbHkgKDApCiMgb3IgbG9jYWxseSAoMSkgYWRtaW5pc3RlcmVkLiAgTmV0d29yayBjYXJkcyBmcm9tIGhhcmR3YXJlIG1hbnVmYWN0dXJlcnMgd2lsbAojIGFsd2F5cyBiZSB1bml2ZXJzYWxseSBhZG1pbmlzdGVyZWQgdG8gZ3VhcmFudGVlIGdsb2JhbCB1bmlxdWVuZXNzIG9mIHRoZSBNQUMKIyBhZGRyZXNzLCBidXQgYW55IHBhcnRpY3VsYXIgbWFjaGluZSBtYXkgaGF2ZSBvdGhlciBpbnRlcmZhY2VzIHdoaWNoIGFyZQojIGxvY2FsbHkgYWRtaW5pc3RlcmVkLiAgQW4gZXhhbXBsZSBvZiB0aGUgbGF0dGVyIGlzIHRoZSBicmlkZ2UgaW50ZXJmYWNlIHRvCiMgdGhlIFRvdWNoIEJhciBvbiBNYWNCb29rIFByb3MuCiMKIyBUaGlzIGJpdCB3b3JrcyBvdXQgdG8gYmUgdGhlIDQybmQgYml0IGNvdW50aW5nIGZyb20gMSBiZWluZyB0aGUgbGVhc3QKIyBzaWduaWZpY2FudCwgb3IgMTw8NDEuICBXZSdsbCBwcmVmZXIgdW5pdmVyc2FsbHkgYWRtaW5pc3RlcmVkIE1BQyBhZGRyZXNzZXMKIyBvdmVyIGxvY2FsbHkgYWRtaW5pc3RlcmVkIG9uZXMgc2luY2UgdGhlIGZvcm1lciBhcmUgZ2xvYmFsbHkgdW5pcXVlLCBidXQKIyB3ZSdsbCByZXR1cm4gdGhlIGZpcnN0IG9mIHRoZSBsYXR0ZXIgZm91bmQgaWYgdGhhdCdzIGFsbCB0aGUgbWFjaGluZSBoYXMuCiMKIyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUFDX2FkZHJlc3MjVW5pdmVyc2FsX3ZzLl9sb2NhbAoKZGVmIF9pc191bml2ZXJzYWwobWFjKToKICAgIHJldHVybiBub3QgKG1hYyAmICgxIDw8IDQxKSkKCgpkZWYgX2ZpbmRfbWFjX25lYXJfa2V5d29yZChjb21tYW5kLCBhcmdzLCBrZXl3b3JkcywgZ2V0X3dvcmRfaW5kZXgpOgogICAgIiIiU2VhcmNoZXMgYSBjb21tYW5kJ3Mgb3V0cHV0IGZvciBhIE1BQyBhZGRyZXNzIG5lYXIgYSBrZXl3b3JkLgoKICAgIEVhY2ggbGluZSBvZiB3b3JkcyBpbiB0aGUgb3V0cHV0IGlzIGNhc2UtaW5zZW5zaXRpdmVseSBzZWFyY2hlZCBmb3IKICAgIGFueSBvZiB0aGUgZ2l2ZW4ga2V5d29yZHMuICBVcG9uIGEgbWF0Y2gsIGdldF93b3JkX2luZGV4IGlzIGludm9rZWQKICAgIHRvIHBpY2sgYSB3b3JkIGZyb20gdGhlIGxpbmUsIGdpdmVuIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2guICBGb3IKICAgIGV4YW1wbGUsIGxhbWJkYSBpOiAwIHdvdWxkIGdldCB0aGUgZmlyc3Qgd29yZCBvbiB0aGUgbGluZSwgd2hpbGUKICAgIGxhbWJkYSBpOiBpIC0gMSB3b3VsZCBnZXQgdGhlIHdvcmQgcHJlY2VkaW5nIHRoZSBrZXl3b3JkLgogICAgIiIiCiAgICBzdGRvdXQgPSBfZ2V0X2NvbW1hbmRfc3Rkb3V0KGNvbW1hbmQsIGFyZ3MpCiAgICBpZiBzdGRvdXQgaXMgTm9uZToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGZpcnN0X2xvY2FsX21hYyA9IE5vbmUKICAgIGZvciBsaW5lIGluIHN0ZG91dDoKICAgICAgICB3b3JkcyA9IGxpbmUubG93ZXIoKS5yc3RyaXAoKS5zcGxpdCgpCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHdvcmRzKSk6CiAgICAgICAgICAgIGlmIHdvcmRzW2ldIGluIGtleXdvcmRzOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1tnZXRfd29yZF9pbmRleChpKV0KICAgICAgICAgICAgICAgICAgICBtYWMgPSBpbnQod29yZC5yZXBsYWNlKF9NQUNfREVMSU0sIGInJyksIDE2KQogICAgICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yKToKICAgICAgICAgICAgICAgICAgICAjIFZpcnR1YWwgaW50ZXJmYWNlcywgc3VjaCBhcyB0aG9zZSBwcm92aWRlZCBieQogICAgICAgICAgICAgICAgICAgICMgVlBOcywgZG8gbm90IGhhdmUgYSBjb2xvbi1kZWxpbWl0ZWQgTUFDIGFkZHJlc3MKICAgICAgICAgICAgICAgICAgICAjIGFzIGV4cGVjdGVkLCBidXQgYSAxNi1ieXRlIEhXQWRkciBzZXBhcmF0ZWQgYnkKICAgICAgICAgICAgICAgICAgICAjIGRhc2hlcy4gVGhlc2Ugc2hvdWxkIGJlIGlnbm9yZWQgaW4gZmF2b3Igb2YgYQogICAgICAgICAgICAgICAgICAgICMgcmVhbCBNQUMgYWRkcmVzcwogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaWYgX2lzX3VuaXZlcnNhbChtYWMpOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFjCiAgICAgICAgICAgICAgICAgICAgZmlyc3RfbG9jYWxfbWFjID0gZmlyc3RfbG9jYWxfbWFjIG9yIG1hYwogICAgcmV0dXJuIGZpcnN0X2xvY2FsX21hYyBvciBOb25lCgoKZGVmIF9wYXJzZV9tYWMod29yZCk6CiAgICAjIEFjY2VwdCAnSEg6SEg6SEg6SEg6SEg6SEgnIE1BQyBhZGRyZXNzIChleDogJzUyOjU0OjAwOjlkOjBlOjY3JyksCiAgICAjIGJ1dCByZWplY3QgSVB2NiBhZGRyZXNzIChleDogJ2ZlODA6OjUwNTQ6ZmY6ZmU5JyBvciAnMTIzOjI6Mzo0OjU6Njo3OjgnKS4KICAgICMKICAgICMgVmlydHVhbCBpbnRlcmZhY2VzLCBzdWNoIGFzIHRob3NlIHByb3ZpZGVkIGJ5IFZQTnMsIGRvIG5vdCBoYXZlIGEKICAgICMgY29sb24tZGVsaW1pdGVkIE1BQyBhZGRyZXNzIGFzIGV4cGVjdGVkLCBidXQgYSAxNi1ieXRlIEhXQWRkciBzZXBhcmF0ZWQKICAgICMgYnkgZGFzaGVzLiBUaGVzZSBzaG91bGQgYmUgaWdub3JlZCBpbiBmYXZvciBvZiBhIHJlYWwgTUFDIGFkZHJlc3MKICAgIHBhcnRzID0gd29yZC5zcGxpdChfTUFDX0RFTElNKQogICAgaWYgbGVuKHBhcnRzKSAhPSA2OgogICAgICAgIHJldHVybgogICAgaWYgX01BQ19PTUlUU19MRUFESU5HX1pFUk9FUzoKICAgICAgICAjIChPbmx5KSBvbiBBSVggdGhlIG1hY2FkZHIgdmFsdWUgZ2l2ZW4gaXMgbm90IHByZWZpeGVkIGJ5IDAsIGUuZy4KICAgICAgICAjIGVuMCAgIDE1MDAgIGxpbmsjMiAgICAgIGZhLmJjLmRlLmY3LjYyLjQgMTEwODU0ODI0ICAgICAwIDE2MDEzMzczMyAgICAgMCAgICAgMAogICAgICAgICMgbm90CiAgICAgICAgIyBlbjAgICAxNTAwICBsaW5rIzIgICAgICBmYS5iYy5kZS5mNy42Mi4wNCAxMTA4NTQ4MjQgICAgIDAgMTYwMTMzNzMzICAgICAwICAgICAwCiAgICAgICAgaWYgbm90IGFsbCgxIDw9IGxlbihwYXJ0KSA8PSAyIGZvciBwYXJ0IGluIHBhcnRzKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaGV4c3RyID0gYicnLmpvaW4ocGFydC5yanVzdCgyLCBiJzAnKSBmb3IgcGFydCBpbiBwYXJ0cykKICAgIGVsc2U6CiAgICAgICAgaWYgbm90IGFsbChsZW4ocGFydCkgPT0gMiBmb3IgcGFydCBpbiBwYXJ0cyk6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGhleHN0ciA9IGInJy5qb2luKHBhcnRzKQogICAgdHJ5OgogICAgICAgIHJldHVybiBpbnQoaGV4c3RyLCAxNikKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHJldHVybgoKCmRlZiBfZmluZF9tYWNfdW5kZXJfaGVhZGluZyhjb21tYW5kLCBhcmdzLCBoZWFkaW5nKToKICAgICIiIkxvb2tzIGZvciBhIE1BQyBhZGRyZXNzIHVuZGVyIGEgaGVhZGluZyBpbiBhIGNvbW1hbmQncyBvdXRwdXQuCgogICAgVGhlIGZpcnN0IGxpbmUgb2Ygd29yZHMgaW4gdGhlIG91dHB1dCBpcyBzZWFyY2hlZCBmb3IgdGhlIGdpdmVuCiAgICBoZWFkaW5nLiBXb3JkcyBhdCB0aGUgc2FtZSB3b3JkIGluZGV4IGFzIHRoZSBoZWFkaW5nIGluIHN1YnNlcXVlbnQKICAgIGxpbmVzIGFyZSB0aGVuIGV4YW1pbmVkIHRvIHNlZSBpZiB0aGV5IGxvb2sgbGlrZSBNQUMgYWRkcmVzc2VzLgogICAgIiIiCiAgICBzdGRvdXQgPSBfZ2V0X2NvbW1hbmRfc3Rkb3V0KGNvbW1hbmQsIGFyZ3MpCiAgICBpZiBzdGRvdXQgaXMgTm9uZToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGtleXdvcmRzID0gc3Rkb3V0LnJlYWRsaW5lKCkucnN0cmlwKCkuc3BsaXQoKQogICAgdHJ5OgogICAgICAgIGNvbHVtbl9pbmRleCA9IGtleXdvcmRzLmluZGV4KGhlYWRpbmcpCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGZpcnN0X2xvY2FsX21hYyA9IE5vbmUKICAgIGZvciBsaW5lIGluIHN0ZG91dDoKICAgICAgICB3b3JkcyA9IGxpbmUucnN0cmlwKCkuc3BsaXQoKQogICAgICAgIHRyeToKICAgICAgICAgICAgd29yZCA9IHdvcmRzW2NvbHVtbl9pbmRleF0KICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgbWFjID0gX3BhcnNlX21hYyh3b3JkKQogICAgICAgIGlmIG1hYyBpcyBOb25lOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIF9pc191bml2ZXJzYWwobWFjKToKICAgICAgICAgICAgcmV0dXJuIG1hYwogICAgICAgIGlmIGZpcnN0X2xvY2FsX21hYyBpcyBOb25lOgogICAgICAgICAgICBmaXJzdF9sb2NhbF9tYWMgPSBtYWMKCiAgICByZXR1cm4gZmlyc3RfbG9jYWxfbWFjCgoKIyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBjYWxsIGV4dGVybmFsIHByb2dyYW1zIHRvICdnZXQnIGEgbWFjYWRkciB2YWx1ZSB0bwojIGJlIHVzZWQgYXMgYmFzaXMgZm9yIGFuIHV1aWQKZGVmIF9pZmNvbmZpZ19nZXRub2RlKCk6CiAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGlmY29uZmlnLiIiIgogICAgIyBUaGlzIHdvcmtzIG9uIExpbnV4ICgnJyBvciAnLWEnKSwgVHJ1NjQgKCctYXYnKSwgYnV0IG5vdCBhbGwgVW5peGVzLgogICAga2V5d29yZHMgPSAoYidod2FkZHInLCBiJ2V0aGVyJywgYidhZGRyZXNzOicsIGInbGxhZGRyJykKICAgIGZvciBhcmdzIGluICgnJywgJy1hJywgJy1hdicpOgogICAgICAgIG1hYyA9IF9maW5kX21hY19uZWFyX2tleXdvcmQoJ2lmY29uZmlnJywgYXJncywga2V5d29yZHMsIGxhbWJkYSBpOiBpKzEpCiAgICAgICAgaWYgbWFjOgogICAgICAgICAgICByZXR1cm4gbWFjCiAgICByZXR1cm4gTm9uZQoKZGVmIF9pcF9nZXRub2RlKCk6CiAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGlwLiIiIgogICAgIyBUaGlzIHdvcmtzIG9uIExpbnV4IHdpdGggaXByb3V0ZTIuCiAgICBtYWMgPSBfZmluZF9tYWNfbmVhcl9rZXl3b3JkKCdpcCcsICdsaW5rJywgW2InbGluay9ldGhlciddLCBsYW1iZGEgaTogaSsxKQogICAgaWYgbWFjOgogICAgICAgIHJldHVybiBtYWMKICAgIHJldHVybiBOb25lCgpkZWYgX2FycF9nZXRub2RlKCk6CiAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGFycC4iIiIKICAgIGltcG9ydCBvcywgc29ja2V0CiAgICBpZiBub3QgaGFzYXR0cihzb2NrZXQsICJnZXRob3N0YnluYW1lIik6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIHRyeToKICAgICAgICBpcF9hZGRyID0gc29ja2V0LmdldGhvc3RieW5hbWUoc29ja2V0LmdldGhvc3RuYW1lKCkpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgVHJ5IGdldHRpbmcgdGhlIE1BQyBhZGRyIGZyb20gYXJwIGJhc2VkIG9uIG91ciBJUCBhZGRyZXNzIChTb2xhcmlzKS4KICAgIG1hYyA9IF9maW5kX21hY19uZWFyX2tleXdvcmQoJ2FycCcsICctYW4nLCBbb3MuZnNlbmNvZGUoaXBfYWRkcildLCBsYW1iZGEgaTogLTEpCiAgICBpZiBtYWM6CiAgICAgICAgcmV0dXJuIG1hYwoKICAgICMgVGhpcyB3b3JrcyBvbiBPcGVuQlNECiAgICBtYWMgPSBfZmluZF9tYWNfbmVhcl9rZXl3b3JkKCdhcnAnLCAnLWFuJywgW29zLmZzZW5jb2RlKGlwX2FkZHIpXSwgbGFtYmRhIGk6IGkrMSkKICAgIGlmIG1hYzoKICAgICAgICByZXR1cm4gbWFjCgogICAgIyBUaGlzIHdvcmtzIG9uIExpbnV4LCBGcmVlQlNEIGFuZCBOZXRCU0QKICAgIG1hYyA9IF9maW5kX21hY19uZWFyX2tleXdvcmQoJ2FycCcsICctYW4nLCBbb3MuZnNlbmNvZGUoJyglcyknICUgaXBfYWRkcildLAogICAgICAgICAgICAgICAgICAgIGxhbWJkYSBpOiBpKzIpCiAgICAjIFJldHVybiBOb25lIGluc3RlYWQgb2YgMC4KICAgIGlmIG1hYzoKICAgICAgICByZXR1cm4gbWFjCiAgICByZXR1cm4gTm9uZQoKZGVmIF9sYW5zY2FuX2dldG5vZGUoKToKICAgICIiIkdldCB0aGUgaGFyZHdhcmUgYWRkcmVzcyBvbiBVbml4IGJ5IHJ1bm5pbmcgbGFuc2Nhbi4iIiIKICAgICMgVGhpcyBtaWdodCB3b3JrIG9uIEhQLVVYLgogICAgcmV0dXJuIF9maW5kX21hY19uZWFyX2tleXdvcmQoJ2xhbnNjYW4nLCAnLWFpJywgW2InbGFuMCddLCBsYW1iZGEgaTogMCkKCmRlZiBfbmV0c3RhdF9nZXRub2RlKCk6CiAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIG5ldHN0YXQuIiIiCiAgICAjIFRoaXMgd29ya3Mgb24gQUlYIGFuZCBtaWdodCB3b3JrIG9uIFRydTY0IFVOSVguCiAgICByZXR1cm4gX2ZpbmRfbWFjX3VuZGVyX2hlYWRpbmcoJ25ldHN0YXQnLCAnLWlhbicsIGInQWRkcmVzcycpCgpkZWYgX2lwY29uZmlnX2dldG5vZGUoKToKICAgICIiIltERVBSRUNBVEVEXSBHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gV2luZG93cy4iIiIKICAgICMgYnBvLTQwNTAxOiBVdWlkQ3JlYXRlU2VxdWVudGlhbCgpIGlzIG5vdyB0aGUgb25seSBzdXBwb3J0ZWQgYXBwcm9hY2gKICAgIHJldHVybiBfd2luZGxsX2dldG5vZGUoKQoKZGVmIF9uZXRiaW9zX2dldG5vZGUoKToKICAgICIiIltERVBSRUNBVEVEXSBHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gV2luZG93cy4iIiIKICAgICMgYnBvLTQwNTAxOiBVdWlkQ3JlYXRlU2VxdWVudGlhbCgpIGlzIG5vdyB0aGUgb25seSBzdXBwb3J0ZWQgYXBwcm9hY2gKICAgIHJldHVybiBfd2luZGxsX2dldG5vZGUoKQoKCiMgSW1wb3J0IG9wdGlvbmFsIEMgZXh0ZW5zaW9uIGF0IHRvcGxldmVsLCB0byBoZWxwIGRpc2FibGluZyBpdCB3aGVuIHRlc3RpbmcKdHJ5OgogICAgaW1wb3J0IF91dWlkCiAgICBfZ2VuZXJhdGVfdGltZV9zYWZlID0gZ2V0YXR0cihfdXVpZCwgImdlbmVyYXRlX3RpbWVfc2FmZSIsIE5vbmUpCiAgICBfVXVpZENyZWF0ZSA9IGdldGF0dHIoX3V1aWQsICJVdWlkQ3JlYXRlIiwgTm9uZSkKICAgIF9oYXNfdXVpZF9nZW5lcmF0ZV90aW1lX3NhZmUgPSBfdXVpZC5oYXNfdXVpZF9nZW5lcmF0ZV90aW1lX3NhZmUKZXhjZXB0IEltcG9ydEVycm9yOgogICAgX3V1aWQgPSBOb25lCiAgICBfZ2VuZXJhdGVfdGltZV9zYWZlID0gTm9uZQogICAgX1V1aWRDcmVhdGUgPSBOb25lCiAgICBfaGFzX3V1aWRfZ2VuZXJhdGVfdGltZV9zYWZlID0gTm9uZQoKCmRlZiBfbG9hZF9zeXN0ZW1fZnVuY3Rpb25zKCk6CiAgICAiIiJbREVQUkVDQVRFRF0gUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIGxvYWRlZCBhdCBpbXBvcnQgdGltZSIiIgoKCmRlZiBfdW5peF9nZXRub2RlKCk6CiAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCB1c2luZyB0aGUgX3V1aWQgZXh0ZW5zaW9uIG1vZHVsZS4iIiIKICAgIGlmIF9nZW5lcmF0ZV90aW1lX3NhZmU6CiAgICAgICAgdXVpZF90aW1lLCBfID0gX2dlbmVyYXRlX3RpbWVfc2FmZSgpCiAgICAgICAgcmV0dXJuIFVVSUQoYnl0ZXM9dXVpZF90aW1lKS5ub2RlCgpkZWYgX3dpbmRsbF9nZXRub2RlKCk6CiAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gV2luZG93cyB1c2luZyB0aGUgX3V1aWQgZXh0ZW5zaW9uIG1vZHVsZS4iIiIKICAgIGlmIF9VdWlkQ3JlYXRlOgogICAgICAgIHV1aWRfYnl0ZXMgPSBfVXVpZENyZWF0ZSgpCiAgICAgICAgcmV0dXJuIFVVSUQoYnl0ZXNfbGU9dXVpZF9ieXRlcykubm9kZQoKZGVmIF9yYW5kb21fZ2V0bm9kZSgpOgogICAgIiIiR2V0IGEgcmFuZG9tIG5vZGUgSUQuIiIiCiAgICAjIFJGQyA0MTIyLCAkNC4xLjYgc2F5cyAiRm9yIHN5c3RlbXMgd2l0aCBubyBJRUVFIGFkZHJlc3MsIGEgcmFuZG9tbHkgb3IKICAgICMgcHNldWRvLXJhbmRvbWx5IGdlbmVyYXRlZCB2YWx1ZSBtYXkgYmUgdXNlZDsgc2VlIFNlY3Rpb24gNC41LiAgVGhlCiAgICAjIG11bHRpY2FzdCBiaXQgbXVzdCBiZSBzZXQgaW4gc3VjaCBhZGRyZXNzZXMsIGluIG9yZGVyIHRoYXQgdGhleSB3aWxsCiAgICAjIG5ldmVyIGNvbmZsaWN0IHdpdGggYWRkcmVzc2VzIG9idGFpbmVkIGZyb20gbmV0d29yayBjYXJkcy4iCiAgICAjCiAgICAjIFRoZSAibXVsdGljYXN0IGJpdCIgb2YgYSBNQUMgYWRkcmVzcyBpcyBkZWZpbmVkIHRvIGJlICJ0aGUgbGVhc3QKICAgICMgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBmaXJzdCBvY3RldCIuICBUaGlzIHdvcmtzIG91dCB0byBiZSB0aGUgNDFzdCBiaXQKICAgICMgY291bnRpbmcgZnJvbSAxIGJlaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQsIG9yIDE8PDQwLgogICAgIwogICAgIyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUFDX2FkZHJlc3MjVW5pY2FzdF92cy5fbXVsdGljYXN0CiAgICBpbXBvcnQgcmFuZG9tCiAgICByZXR1cm4gcmFuZG9tLmdldHJhbmRiaXRzKDQ4KSB8ICgxIDw8IDQwKQoKCiMgX09TX0dFVFRFUlMsIHdoZW4ga25vd24sIGFyZSB0YXJnZXRlZCBmb3IgYSBzcGVjaWZpYyBPUyBvciBwbGF0Zm9ybS4KIyBUaGUgb3JkZXIgaXMgYnkgJ2NvbW1vbiBwcmFjdGljZScgb24gdGhlIHNwZWNpZmllZCBwbGF0Zm9ybS4KIyBOb3RlOiAncG9zaXgnIGFuZCAnd2luZG93cycgX09TX0dFVFRFUlMgYXJlIHByZWZpeGVkIGJ5IGEgZGxsL2RsbG9hZCgpIG1ldGhvZAojIHdoaWNoLCB3aGVuIHN1Y2Nlc3NmdWwsIG1lYW5zIG5vbmUgb2YgdGhlc2UgImV4dGVybmFsIiBtZXRob2RzIGFyZSBjYWxsZWQuCiMgX0dFVFRFUlMgaXMgKGFsc28pIHVzZWQgYnkgdGVzdF91dWlkLnB5IHRvIFNraXBVbmxlc3MoKSwgZS5nLiwKIyAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3V1aWQuX2lmY29uZmlnX2dldG5vZGUgaW4gX3V1aWQuX0dFVFRFUlMsIC4uLikKaWYgX0xJTlVYOgogICAgX09TX0dFVFRFUlMgPSBbX2lwX2dldG5vZGUsIF9pZmNvbmZpZ19nZXRub2RlXQplbGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgIF9PU19HRVRURVJTID0gW19pZmNvbmZpZ19nZXRub2RlLCBfYXJwX2dldG5vZGUsIF9uZXRzdGF0X2dldG5vZGVdCmVsaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAjIGJwby00MDIwMTogX3dpbmRsbF9nZXRub2RlIHdpbGwgYWx3YXlzIHN1Y2NlZWQsIHNvIHRoZXNlIGFyZSBub3QgbmVlZGVkCiAgICBfT1NfR0VUVEVSUyA9IFtdCmVsaWYgX0FJWDoKICAgIF9PU19HRVRURVJTID0gW19uZXRzdGF0X2dldG5vZGVdCmVsc2U6CiAgICBfT1NfR0VUVEVSUyA9IFtfaWZjb25maWdfZ2V0bm9kZSwgX2lwX2dldG5vZGUsIF9hcnBfZ2V0bm9kZSwKICAgICAgICAgICAgICAgICAgIF9uZXRzdGF0X2dldG5vZGUsIF9sYW5zY2FuX2dldG5vZGVdCmlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKICAgIF9HRVRURVJTID0gW191bml4X2dldG5vZGVdICsgX09TX0dFVFRFUlMKZWxpZiBvcy5uYW1lID09ICdudCc6CiAgICBfR0VUVEVSUyA9IFtfd2luZGxsX2dldG5vZGVdICsgX09TX0dFVFRFUlMKZWxzZToKICAgIF9HRVRURVJTID0gX09TX0dFVFRFUlMKCl9ub2RlID0gTm9uZQoKZGVmIGdldG5vZGUoKToKICAgICIiIkdldCB0aGUgaGFyZHdhcmUgYWRkcmVzcyBhcyBhIDQ4LWJpdCBwb3NpdGl2ZSBpbnRlZ2VyLgoKICAgIFRoZSBmaXJzdCB0aW1lIHRoaXMgcnVucywgaXQgbWF5IGxhdW5jaCBhIHNlcGFyYXRlIHByb2dyYW0sIHdoaWNoIGNvdWxkCiAgICBiZSBxdWl0ZSBzbG93LiAgSWYgYWxsIGF0dGVtcHRzIHRvIG9idGFpbiB0aGUgaGFyZHdhcmUgYWRkcmVzcyBmYWlsLCB3ZQogICAgY2hvb3NlIGEgcmFuZG9tIDQ4LWJpdCBudW1iZXIgd2l0aCBpdHMgZWlnaHRoIGJpdCBzZXQgdG8gMSBhcyByZWNvbW1lbmRlZAogICAgaW4gUkZDIDQxMjIuCiAgICAiIiIKICAgIGdsb2JhbCBfbm9kZQogICAgaWYgX25vZGUgaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIF9ub2RlCgogICAgZm9yIGdldHRlciBpbiBfR0VUVEVSUyArIFtfcmFuZG9tX2dldG5vZGVdOgogICAgICAgIHRyeToKICAgICAgICAgICAgX25vZGUgPSBnZXR0ZXIoKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiAoX25vZGUgaXMgbm90IE5vbmUpIGFuZCAoMCA8PSBfbm9kZSA8ICgxIDw8IDQ4KSk6CiAgICAgICAgICAgIHJldHVybiBfbm9kZQogICAgYXNzZXJ0IEZhbHNlLCAnX3JhbmRvbV9nZXRub2RlKCkgcmV0dXJuZWQgaW52YWxpZCB2YWx1ZToge30nLmZvcm1hdChfbm9kZSkKCgpfbGFzdF90aW1lc3RhbXAgPSBOb25lCgpkZWYgdXVpZDEobm9kZT1Ob25lLCBjbG9ja19zZXE9Tm9uZSk6CiAgICAiIiJHZW5lcmF0ZSBhIFVVSUQgZnJvbSBhIGhvc3QgSUQsIHNlcXVlbmNlIG51bWJlciwgYW5kIHRoZSBjdXJyZW50IHRpbWUuCiAgICBJZiAnbm9kZScgaXMgbm90IGdpdmVuLCBnZXRub2RlKCkgaXMgdXNlZCB0byBvYnRhaW4gdGhlIGhhcmR3YXJlCiAgICBhZGRyZXNzLiAgSWYgJ2Nsb2NrX3NlcScgaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgYXMgdGhlIHNlcXVlbmNlIG51bWJlcjsKICAgIG90aGVyd2lzZSBhIHJhbmRvbSAxNC1iaXQgc2VxdWVuY2UgbnVtYmVyIGlzIGNob3Nlbi4iIiIKCiAgICAjIFdoZW4gdGhlIHN5c3RlbSBwcm92aWRlcyBhIHZlcnNpb24tMSBVVUlEIGdlbmVyYXRvciwgdXNlIGl0IChidXQgZG9uJ3QKICAgICMgdXNlIFV1aWRDcmVhdGUgaGVyZSBiZWNhdXNlIGl0cyBVVUlEcyBkb24ndCBjb25mb3JtIHRvIFJGQyA0MTIyKS4KICAgIGlmIF9nZW5lcmF0ZV90aW1lX3NhZmUgaXMgbm90IE5vbmUgYW5kIG5vZGUgaXMgY2xvY2tfc2VxIGlzIE5vbmU6CiAgICAgICAgdXVpZF90aW1lLCBzYWZlbHlfZ2VuZXJhdGVkID0gX2dlbmVyYXRlX3RpbWVfc2FmZSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpc19zYWZlID0gU2FmZVVVSUQoc2FmZWx5X2dlbmVyYXRlZCkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgaXNfc2FmZSA9IFNhZmVVVUlELnVua25vd24KICAgICAgICByZXR1cm4gVVVJRChieXRlcz11dWlkX3RpbWUsIGlzX3NhZmU9aXNfc2FmZSkKCiAgICBnbG9iYWwgX2xhc3RfdGltZXN0YW1wCiAgICBpbXBvcnQgdGltZQogICAgbmFub3NlY29uZHMgPSB0aW1lLnRpbWVfbnMoKQogICAgIyAweDAxYjIxZGQyMTM4MTQwMDAgaXMgdGhlIG51bWJlciBvZiAxMDAtbnMgaW50ZXJ2YWxzIGJldHdlZW4gdGhlCiAgICAjIFVVSUQgZXBvY2ggMTU4Mi0xMC0xNSAwMDowMDowMCBhbmQgdGhlIFVuaXggZXBvY2ggMTk3MC0wMS0wMSAwMDowMDowMC4KICAgIHRpbWVzdGFtcCA9IG5hbm9zZWNvbmRzIC8vIDEwMCArIDB4MDFiMjFkZDIxMzgxNDAwMAogICAgaWYgX2xhc3RfdGltZXN0YW1wIGlzIG5vdCBOb25lIGFuZCB0aW1lc3RhbXAgPD0gX2xhc3RfdGltZXN0YW1wOgogICAgICAgIHRpbWVzdGFtcCA9IF9sYXN0X3RpbWVzdGFtcCArIDEKICAgIF9sYXN0X3RpbWVzdGFtcCA9IHRpbWVzdGFtcAogICAgaWYgY2xvY2tfc2VxIGlzIE5vbmU6CiAgICAgICAgaW1wb3J0IHJhbmRvbQogICAgICAgIGNsb2NrX3NlcSA9IHJhbmRvbS5nZXRyYW5kYml0cygxNCkgIyBpbnN0ZWFkIG9mIHN0YWJsZSBzdG9yYWdlCiAgICB0aW1lX2xvdyA9IHRpbWVzdGFtcCAmIDB4ZmZmZmZmZmYKICAgIHRpbWVfbWlkID0gKHRpbWVzdGFtcCA+PiAzMikgJiAweGZmZmYKICAgIHRpbWVfaGlfdmVyc2lvbiA9ICh0aW1lc3RhbXAgPj4gNDgpICYgMHgwZmZmCiAgICBjbG9ja19zZXFfbG93ID0gY2xvY2tfc2VxICYgMHhmZgogICAgY2xvY2tfc2VxX2hpX3ZhcmlhbnQgPSAoY2xvY2tfc2VxID4+IDgpICYgMHgzZgogICAgaWYgbm9kZSBpcyBOb25lOgogICAgICAgIG5vZGUgPSBnZXRub2RlKCkKICAgIHJldHVybiBVVUlEKGZpZWxkcz0odGltZV9sb3csIHRpbWVfbWlkLCB0aW1lX2hpX3ZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3NlcV9oaV92YXJpYW50LCBjbG9ja19zZXFfbG93LCBub2RlKSwgdmVyc2lvbj0xKQoKZGVmIHV1aWQzKG5hbWVzcGFjZSwgbmFtZSk6CiAgICAiIiJHZW5lcmF0ZSBhIFVVSUQgZnJvbSB0aGUgTUQ1IGhhc2ggb2YgYSBuYW1lc3BhY2UgVVVJRCBhbmQgYSBuYW1lLiIiIgogICAgZnJvbSBoYXNobGliIGltcG9ydCBtZDUKICAgIGRpZ2VzdCA9IG1kNSgKICAgICAgICBuYW1lc3BhY2UuYnl0ZXMgKyBieXRlcyhuYW1lLCAidXRmLTgiKSwKICAgICAgICB1c2VkZm9yc2VjdXJpdHk9RmFsc2UKICAgICkuZGlnZXN0KCkKICAgIHJldHVybiBVVUlEKGJ5dGVzPWRpZ2VzdFs6MTZdLCB2ZXJzaW9uPTMpCgpkZWYgdXVpZDQoKToKICAgICIiIkdlbmVyYXRlIGEgcmFuZG9tIFVVSUQuIiIiCiAgICByZXR1cm4gVVVJRChieXRlcz1vcy51cmFuZG9tKDE2KSwgdmVyc2lvbj00KQoKZGVmIHV1aWQ1KG5hbWVzcGFjZSwgbmFtZSk6CiAgICAiIiJHZW5lcmF0ZSBhIFVVSUQgZnJvbSB0aGUgU0hBLTEgaGFzaCBvZiBhIG5hbWVzcGFjZSBVVUlEIGFuZCBhIG5hbWUuIiIiCiAgICBmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTEKICAgIGhhc2ggPSBzaGExKG5hbWVzcGFjZS5ieXRlcyArIGJ5dGVzKG5hbWUsICJ1dGYtOCIpKS5kaWdlc3QoKQogICAgcmV0dXJuIFVVSUQoYnl0ZXM9aGFzaFs6MTZdLCB2ZXJzaW9uPTUpCgojIFRoZSBmb2xsb3dpbmcgc3RhbmRhcmQgVVVJRHMgYXJlIGZvciB1c2Ugd2l0aCB1dWlkMygpIG9yIHV1aWQ1KCkuCgpOQU1FU1BBQ0VfRE5TID0gVVVJRCgnNmJhN2I4MTAtOWRhZC0xMWQxLTgwYjQtMDBjMDRmZDQzMGM4JykKTkFNRVNQQUNFX1VSTCA9IFVVSUQoJzZiYTdiODExLTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCcpCk5BTUVTUEFDRV9PSUQgPSBVVUlEKCc2YmE3YjgxMi05ZGFkLTExZDEtODBiNC0wMGMwNGZkNDMwYzgnKQpOQU1FU1BBQ0VfWDUwMCA9IFVVSUQoJzZiYTdiODE0LTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCcpClBLAwQUAAAAAAACIKNWonOtHyFSAAAhUgAACwAAAHdhcm5pbmdzLnB5IiIiUHl0aG9uIHBhcnQgb2YgdGhlIHdhcm5pbmdzIHN1YnN5c3RlbS4iIiIKCmltcG9ydCBzeXMKCgpfX2FsbF9fID0gWyJ3YXJuIiwgIndhcm5fZXhwbGljaXQiLCAic2hvd3dhcm5pbmciLAogICAgICAgICAgICJmb3JtYXR3YXJuaW5nIiwgImZpbHRlcndhcm5pbmdzIiwgInNpbXBsZWZpbHRlciIsCiAgICAgICAgICAgInJlc2V0d2FybmluZ3MiLCAiY2F0Y2hfd2FybmluZ3MiXQoKZGVmIHNob3d3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CiAgICAiIiJIb29rIHRvIHdyaXRlIGEgd2FybmluZyB0byBhIGZpbGU7IHJlcGxhY2UgaWYgeW91IGxpa2UuIiIiCiAgICBtc2cgPSBXYXJuaW5nTWVzc2FnZShtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZSwgbGluZSkKICAgIF9zaG93d2Fybm1zZ19pbXBsKG1zZykKCmRlZiBmb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lPU5vbmUpOgogICAgIiIiRnVuY3Rpb24gdG8gZm9ybWF0IGEgd2FybmluZyB0aGUgc3RhbmRhcmQgd2F5LiIiIgogICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIE5vbmUsIGxpbmUpCiAgICByZXR1cm4gX2Zvcm1hdHdhcm5tc2dfaW1wbChtc2cpCgpkZWYgX3Nob3d3YXJubXNnX2ltcGwobXNnKToKICAgIGZpbGUgPSBtc2cuZmlsZQogICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCiAgICAgICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgICAgICAjIHN5cy5zdGRlcnIgaXMgTm9uZSB3aGVuIHJ1biB3aXRoIHB5dGhvbncuZXhlOgogICAgICAgICAgICAjIHdhcm5pbmdzIGdldCBsb3N0CiAgICAgICAgICAgIHJldHVybgogICAgdGV4dCA9IF9mb3JtYXR3YXJubXNnKG1zZykKICAgIHRyeToKICAgICAgICBmaWxlLndyaXRlKHRleHQpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgogICAgICAgIHBhc3MKCmRlZiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZyk6CiAgICBjYXRlZ29yeSA9IG1zZy5jYXRlZ29yeS5fX25hbWVfXwogICAgcyA9ICBmInttc2cuZmlsZW5hbWV9Onttc2cubGluZW5vfToge2NhdGVnb3J5fToge21zZy5tZXNzYWdlfVxuIgoKICAgIGlmIG1zZy5saW5lIGlzIE5vbmU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgbGluZWNhY2hlCiAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8pCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIyBXaGVuIGEgd2FybmluZyBpcyBsb2dnZWQgZHVyaW5nIFB5dGhvbiBzaHV0ZG93biwgbGluZWNhY2hlCiAgICAgICAgICAgICMgYW5kIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvbid0IHdvcmsgYW55bW9yZQogICAgICAgICAgICBsaW5lID0gTm9uZQogICAgICAgICAgICBsaW5lY2FjaGUgPSBOb25lCiAgICBlbHNlOgogICAgICAgIGxpbmUgPSBtc2cubGluZQogICAgaWYgbGluZToKICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgcyArPSAiICAlc1xuIiAlIGxpbmUKCiAgICBpZiBtc2cuc291cmNlIGlzIG5vdCBOb25lOgogICAgICAgIHRyeToKICAgICAgICAgICAgaW1wb3J0IHRyYWNlbWFsbG9jCiAgICAgICAgIyBMb2dnaW5nIGEgd2FybmluZyBzaG91bGQgbm90IHJhaXNlIGEgbmV3IGV4Y2VwdGlvbjoKICAgICAgICAjIGNhdGNoIEV4Y2VwdGlvbiwgbm90IG9ubHkgSW1wb3J0RXJyb3IgYW5kIFJlY3Vyc2lvbkVycm9yLgogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICMgZG9uJ3Qgc3VnZ2VzdCB0byBlbmFibGUgdHJhY2VtYWxsb2MgaWYgaXQncyBub3QgYXZhaWxhYmxlCiAgICAgICAgICAgIHRyYWNpbmcgPSBUcnVlCiAgICAgICAgICAgIHRiID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyYWNpbmcgPSB0cmFjZW1hbGxvYy5pc190cmFjaW5nKCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdGIgPSB0cmFjZW1hbGxvYy5nZXRfb2JqZWN0X3RyYWNlYmFjayhtc2cuc291cmNlKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIyBXaGVuIGEgd2FybmluZyBpcyBsb2dnZWQgZHVyaW5nIFB5dGhvbiBzaHV0ZG93biwgdHJhY2VtYWxsb2MKICAgICAgICAgICAgICAgICMgYW5kIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvbid0IHdvcmsgYW55bW9yZQogICAgICAgICAgICAgICAgdGIgPSBOb25lCgogICAgICAgIGlmIHRiIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzICs9ICdPYmplY3QgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJwogICAgICAgICAgICBmb3IgZnJhbWUgaW4gdGI6CiAgICAgICAgICAgICAgICBzICs9ICgnICBGaWxlICIlcyIsIGxpbmVubyAlc1xuJwogICAgICAgICAgICAgICAgICAgICAgJSAoZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubykpCgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGlmIGxpbmVjYWNoZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8pCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IE5vbmUKICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IE5vbmUKICAgICAgICAgICAgICAgIGlmIGxpbmU6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgIHMgKz0gJyAgICAlc1xuJyAlIGxpbmUKICAgICAgICBlbGlmIG5vdCB0cmFjaW5nOgogICAgICAgICAgICBzICs9IChmJ3tjYXRlZ29yeX06IEVuYWJsZSB0cmFjZW1hbGxvYyB0byBnZXQgdGhlIG9iamVjdCAnCiAgICAgICAgICAgICAgICAgIGYnYWxsb2NhdGlvbiB0cmFjZWJhY2tcbicpCiAgICByZXR1cm4gcwoKIyBLZWVwIGEgcmVmZXJlbmNlIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiB3YXMgcmVwbGFjZWQKX3Nob3d3YXJuaW5nX29yaWcgPSBzaG93d2FybmluZwoKZGVmIF9zaG93d2Fybm1zZyhtc2cpOgogICAgIiIiSG9vayB0byB3cml0ZSBhIHdhcm5pbmcgdG8gYSBmaWxlOyByZXBsYWNlIGlmIHlvdSBsaWtlLiIiIgogICAgdHJ5OgogICAgICAgIHN3ID0gc2hvd3dhcm5pbmcKICAgIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICBpZiBzdyBpcyBub3QgX3Nob3d3YXJuaW5nX29yaWc6CiAgICAgICAgICAgICMgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSB3YXMgcmVwbGFjZWQKICAgICAgICAgICAgaWYgbm90IGNhbGxhYmxlKHN3KToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigid2FybmluZ3Muc2hvd3dhcm5pbmcoKSBtdXN0IGJlIHNldCB0byBhICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gb3IgbWV0aG9kIikKCiAgICAgICAgICAgIHN3KG1zZy5tZXNzYWdlLCBtc2cuY2F0ZWdvcnksIG1zZy5maWxlbmFtZSwgbXNnLmxpbmVubywKICAgICAgICAgICAgICAgbXNnLmZpbGUsIG1zZy5saW5lKQogICAgICAgICAgICByZXR1cm4KICAgIF9zaG93d2Fybm1zZ19pbXBsKG1zZykKCiMgS2VlcCBhIHJlZmVyZW5jZSB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gd2FzIHJlcGxhY2VkCl9mb3JtYXR3YXJuaW5nX29yaWcgPSBmb3JtYXR3YXJuaW5nCgpkZWYgX2Zvcm1hdHdhcm5tc2cobXNnKToKICAgICIiIkZ1bmN0aW9uIHRvIGZvcm1hdCBhIHdhcm5pbmcgdGhlIHN0YW5kYXJkIHdheS4iIiIKICAgIHRyeToKICAgICAgICBmdyA9IGZvcm1hdHdhcm5pbmcKICAgIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICBpZiBmdyBpcyBub3QgX2Zvcm1hdHdhcm5pbmdfb3JpZzoKICAgICAgICAgICAgIyB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nKCkgd2FzIHJlcGxhY2VkCiAgICAgICAgICAgIHJldHVybiBmdyhtc2cubWVzc2FnZSwgbXNnLmNhdGVnb3J5LAogICAgICAgICAgICAgICAgICAgICAgbXNnLmZpbGVuYW1lLCBtc2cubGluZW5vLCBtc2cubGluZSkKICAgIHJldHVybiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZykKCmRlZiBmaWx0ZXJ3YXJuaW5ncyhhY3Rpb24sIG1lc3NhZ2U9IiIsIGNhdGVnb3J5PVdhcm5pbmcsIG1vZHVsZT0iIiwgbGluZW5vPTAsCiAgICAgICAgICAgICAgICAgICBhcHBlbmQ9RmFsc2UpOgogICAgIiIiSW5zZXJ0IGFuIGVudHJ5IGludG8gdGhlIGxpc3Qgb2Ygd2FybmluZ3MgZmlsdGVycyAoYXQgdGhlIGZyb250KS4KCiAgICAnYWN0aW9uJyAtLSBvbmUgb2YgImVycm9yIiwgImlnbm9yZSIsICJhbHdheXMiLCAiZGVmYXVsdCIsICJtb2R1bGUiLAogICAgICAgICAgICAgICAgb3IgIm9uY2UiCiAgICAnbWVzc2FnZScgLS0gYSByZWdleCB0aGF0IHRoZSB3YXJuaW5nIG1lc3NhZ2UgbXVzdCBtYXRjaAogICAgJ2NhdGVnb3J5JyAtLSBhIGNsYXNzIHRoYXQgdGhlIHdhcm5pbmcgbXVzdCBiZSBhIHN1YmNsYXNzIG9mCiAgICAnbW9kdWxlJyAtLSBhIHJlZ2V4IHRoYXQgdGhlIG1vZHVsZSBuYW1lIG11c3QgbWF0Y2gKICAgICdsaW5lbm8nIC0tIGFuIGludGVnZXIgbGluZSBudW1iZXIsIDAgbWF0Y2hlcyBhbGwgd2FybmluZ3MKICAgICdhcHBlbmQnIC0tIGlmIHRydWUsIGFwcGVuZCB0byB0aGUgbGlzdCBvZiBmaWx0ZXJzCiAgICAiIiIKICAgIGFzc2VydCBhY3Rpb24gaW4gKCJlcnJvciIsICJpZ25vcmUiLCAiYWx3YXlzIiwgImRlZmF1bHQiLCAibW9kdWxlIiwKICAgICAgICAgICAgICAgICAgICAgICJvbmNlIiksICJpbnZhbGlkIGFjdGlvbjogJXIiICUgKGFjdGlvbiwpCiAgICBhc3NlcnQgaXNpbnN0YW5jZShtZXNzYWdlLCBzdHIpLCAibWVzc2FnZSBtdXN0IGJlIGEgc3RyaW5nIgogICAgYXNzZXJ0IGlzaW5zdGFuY2UoY2F0ZWdvcnksIHR5cGUpLCAiY2F0ZWdvcnkgbXVzdCBiZSBhIGNsYXNzIgogICAgYXNzZXJ0IGlzc3ViY2xhc3MoY2F0ZWdvcnksIFdhcm5pbmcpLCAiY2F0ZWdvcnkgbXVzdCBiZSBhIFdhcm5pbmcgc3ViY2xhc3MiCiAgICBhc3NlcnQgaXNpbnN0YW5jZShtb2R1bGUsIHN0ciksICJtb2R1bGUgbXVzdCBiZSBhIHN0cmluZyIKICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmVubywgaW50KSBhbmQgbGluZW5vID49IDAsIFwKICAgICAgICAgICAibGluZW5vIG11c3QgYmUgYW4gaW50ID49IDAiCgogICAgaWYgbWVzc2FnZSBvciBtb2R1bGU6CiAgICAgICAgaW1wb3J0IHJlCgogICAgaWYgbWVzc2FnZToKICAgICAgICBtZXNzYWdlID0gcmUuY29tcGlsZShtZXNzYWdlLCByZS5JKQogICAgZWxzZToKICAgICAgICBtZXNzYWdlID0gTm9uZQogICAgaWYgbW9kdWxlOgogICAgICAgIG1vZHVsZSA9IHJlLmNvbXBpbGUobW9kdWxlKQogICAgZWxzZToKICAgICAgICBtb2R1bGUgPSBOb25lCgogICAgX2FkZF9maWx0ZXIoYWN0aW9uLCBtZXNzYWdlLCBjYXRlZ29yeSwgbW9kdWxlLCBsaW5lbm8sIGFwcGVuZD1hcHBlbmQpCgpkZWYgc2ltcGxlZmlsdGVyKGFjdGlvbiwgY2F0ZWdvcnk9V2FybmluZywgbGluZW5vPTAsIGFwcGVuZD1GYWxzZSk6CiAgICAiIiJJbnNlcnQgYSBzaW1wbGUgZW50cnkgaW50byB0aGUgbGlzdCBvZiB3YXJuaW5ncyBmaWx0ZXJzIChhdCB0aGUgZnJvbnQpLgoKICAgIEEgc2ltcGxlIGZpbHRlciBtYXRjaGVzIGFsbCBtb2R1bGVzIGFuZCBtZXNzYWdlcy4KICAgICdhY3Rpb24nIC0tIG9uZSBvZiAiZXJyb3IiLCAiaWdub3JlIiwgImFsd2F5cyIsICJkZWZhdWx0IiwgIm1vZHVsZSIsCiAgICAgICAgICAgICAgICBvciAib25jZSIKICAgICdjYXRlZ29yeScgLS0gYSBjbGFzcyB0aGF0IHRoZSB3YXJuaW5nIG11c3QgYmUgYSBzdWJjbGFzcyBvZgogICAgJ2xpbmVubycgLS0gYW4gaW50ZWdlciBsaW5lIG51bWJlciwgMCBtYXRjaGVzIGFsbCB3YXJuaW5ncwogICAgJ2FwcGVuZCcgLS0gaWYgdHJ1ZSwgYXBwZW5kIHRvIHRoZSBsaXN0IG9mIGZpbHRlcnMKICAgICIiIgogICAgYXNzZXJ0IGFjdGlvbiBpbiAoImVycm9yIiwgImlnbm9yZSIsICJhbHdheXMiLCAiZGVmYXVsdCIsICJtb2R1bGUiLAogICAgICAgICAgICAgICAgICAgICAgIm9uY2UiKSwgImludmFsaWQgYWN0aW9uOiAlciIgJSAoYWN0aW9uLCkKICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmVubywgaW50KSBhbmQgbGluZW5vID49IDAsIFwKICAgICAgICAgICAibGluZW5vIG11c3QgYmUgYW4gaW50ID49IDAiCiAgICBfYWRkX2ZpbHRlcihhY3Rpb24sIE5vbmUsIGNhdGVnb3J5LCBOb25lLCBsaW5lbm8sIGFwcGVuZD1hcHBlbmQpCgpkZWYgX2FkZF9maWx0ZXIoKml0ZW0sIGFwcGVuZCk6CiAgICAjIFJlbW92ZSBwb3NzaWJsZSBkdXBsaWNhdGUgZmlsdGVycywgc28gbmV3IG9uZSB3aWxsIGJlIHBsYWNlZAogICAgIyBpbiBjb3JyZWN0IHBsYWNlLiBJZiBhcHBlbmQ9VHJ1ZSBhbmQgZHVwbGljYXRlIGV4aXN0cywgZG8gbm90aGluZy4KICAgIGlmIG5vdCBhcHBlbmQ6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWx0ZXJzLnJlbW92ZShpdGVtKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZmlsdGVycy5pbnNlcnQoMCwgaXRlbSkKICAgIGVsc2U6CiAgICAgICAgaWYgaXRlbSBub3QgaW4gZmlsdGVyczoKICAgICAgICAgICAgZmlsdGVycy5hcHBlbmQoaXRlbSkKICAgIF9maWx0ZXJzX211dGF0ZWQoKQoKZGVmIHJlc2V0d2FybmluZ3MoKToKICAgICIiIkNsZWFyIHRoZSBsaXN0IG9mIHdhcm5pbmcgZmlsdGVycywgc28gdGhhdCBubyBmaWx0ZXJzIGFyZSBhY3RpdmUuIiIiCiAgICBmaWx0ZXJzWzpdID0gW10KICAgIF9maWx0ZXJzX211dGF0ZWQoKQoKY2xhc3MgX09wdGlvbkVycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJFeGNlcHRpb24gdXNlZCBieSBvcHRpb24gcHJvY2Vzc2luZyBoZWxwZXJzLiIiIgogICAgcGFzcwoKIyBIZWxwZXIgdG8gcHJvY2VzcyAtVyBvcHRpb25zIHBhc3NlZCB2aWEgc3lzLndhcm5vcHRpb25zCmRlZiBfcHJvY2Vzc29wdGlvbnMoYXJncyk6CiAgICBmb3IgYXJnIGluIGFyZ3M6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBfc2V0b3B0aW9uKGFyZykKICAgICAgICBleGNlcHQgX09wdGlvbkVycm9yIGFzIG1zZzoKICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgLVcgb3B0aW9uIGlnbm9yZWQ6IiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIpCgojIEhlbHBlciBmb3IgX3Byb2Nlc3NvcHRpb25zKCkKZGVmIF9zZXRvcHRpb24oYXJnKToKICAgIHBhcnRzID0gYXJnLnNwbGl0KCc6JykKICAgIGlmIGxlbihwYXJ0cykgPiA1OgogICAgICAgIHJhaXNlIF9PcHRpb25FcnJvcigidG9vIG1hbnkgZmllbGRzIChtYXggNSk6ICVyIiAlIChhcmcsKSkKICAgIHdoaWxlIGxlbihwYXJ0cykgPCA1OgogICAgICAgIHBhcnRzLmFwcGVuZCgnJykKICAgIGFjdGlvbiwgbWVzc2FnZSwgY2F0ZWdvcnksIG1vZHVsZSwgbGluZW5vID0gW3Muc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gcGFydHNdCiAgICBhY3Rpb24gPSBfZ2V0YWN0aW9uKGFjdGlvbikKICAgIGNhdGVnb3J5ID0gX2dldGNhdGVnb3J5KGNhdGVnb3J5KQogICAgaWYgbWVzc2FnZSBvciBtb2R1bGU6CiAgICAgICAgaW1wb3J0IHJlCiAgICBpZiBtZXNzYWdlOgogICAgICAgIG1lc3NhZ2UgPSByZS5lc2NhcGUobWVzc2FnZSkKICAgIGlmIG1vZHVsZToKICAgICAgICBtb2R1bGUgPSByZS5lc2NhcGUobW9kdWxlKSArIHInXFonCiAgICBpZiBsaW5lbm86CiAgICAgICAgdHJ5OgogICAgICAgICAgICBsaW5lbm8gPSBpbnQobGluZW5vKQogICAgICAgICAgICBpZiBsaW5lbm8gPCAwOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvcik6CiAgICAgICAgICAgIHJhaXNlIF9PcHRpb25FcnJvcigiaW52YWxpZCBsaW5lbm8gJXIiICUgKGxpbmVubywpKSBmcm9tIE5vbmUKICAgIGVsc2U6CiAgICAgICAgbGluZW5vID0gMAogICAgZmlsdGVyd2FybmluZ3MoYWN0aW9uLCBtZXNzYWdlLCBjYXRlZ29yeSwgbW9kdWxlLCBsaW5lbm8pCgojIEhlbHBlciBmb3IgX3NldG9wdGlvbigpCmRlZiBfZ2V0YWN0aW9uKGFjdGlvbik6CiAgICBpZiBub3QgYWN0aW9uOgogICAgICAgIHJldHVybiAiZGVmYXVsdCIKICAgIGlmIGFjdGlvbiA9PSAiYWxsIjogcmV0dXJuICJhbHdheXMiICMgQWxpYXMKICAgIGZvciBhIGluICgnZGVmYXVsdCcsICdhbHdheXMnLCAnaWdub3JlJywgJ21vZHVsZScsICdvbmNlJywgJ2Vycm9yJyk6CiAgICAgICAgaWYgYS5zdGFydHN3aXRoKGFjdGlvbik6CiAgICAgICAgICAgIHJldHVybiBhCiAgICByYWlzZSBfT3B0aW9uRXJyb3IoImludmFsaWQgYWN0aW9uOiAlciIgJSAoYWN0aW9uLCkpCgojIEhlbHBlciBmb3IgX3NldG9wdGlvbigpCmRlZiBfZ2V0Y2F0ZWdvcnkoY2F0ZWdvcnkpOgogICAgaWYgbm90IGNhdGVnb3J5OgogICAgICAgIHJldHVybiBXYXJuaW5nCiAgICBpZiAnLicgbm90IGluIGNhdGVnb3J5OgogICAgICAgIGltcG9ydCBidWlsdGlucyBhcyBtCiAgICAgICAga2xhc3MgPSBjYXRlZ29yeQogICAgZWxzZToKICAgICAgICBtb2R1bGUsIF8sIGtsYXNzID0gY2F0ZWdvcnkucnBhcnRpdGlvbignLicpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBtID0gX19pbXBvcnRfXyhtb2R1bGUsIE5vbmUsIE5vbmUsIFtrbGFzc10pCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICByYWlzZSBfT3B0aW9uRXJyb3IoImludmFsaWQgbW9kdWxlIG5hbWU6ICVyIiAlIChtb2R1bGUsKSkgZnJvbSBOb25lCiAgICB0cnk6CiAgICAgICAgY2F0ID0gZ2V0YXR0cihtLCBrbGFzcykKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICByYWlzZSBfT3B0aW9uRXJyb3IoInVua25vd24gd2FybmluZyBjYXRlZ29yeTogJXIiICUgKGNhdGVnb3J5LCkpIGZyb20gTm9uZQogICAgaWYgbm90IGlzc3ViY2xhc3MoY2F0LCBXYXJuaW5nKToKICAgICAgICByYWlzZSBfT3B0aW9uRXJyb3IoImludmFsaWQgd2FybmluZyBjYXRlZ29yeTogJXIiICUgKGNhdGVnb3J5LCkpCiAgICByZXR1cm4gY2F0CgoKZGVmIF9pc19pbnRlcm5hbF9mcmFtZShmcmFtZSk6CiAgICAiIiJTaWduYWwgd2hldGhlciB0aGUgZnJhbWUgaXMgYW4gaW50ZXJuYWwgQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuIiIiCiAgICBmaWxlbmFtZSA9IGZyYW1lLmZfY29kZS5jb19maWxlbmFtZQogICAgcmV0dXJuICdpbXBvcnRsaWInIGluIGZpbGVuYW1lIGFuZCAnX2Jvb3RzdHJhcCcgaW4gZmlsZW5hbWUKCgpkZWYgX25leHRfZXh0ZXJuYWxfZnJhbWUoZnJhbWUpOgogICAgIiIiRmluZCB0aGUgbmV4dCBmcmFtZSB0aGF0IGRvZXNuJ3QgaW52b2x2ZSBDUHl0aG9uIGludGVybmFscy4iIiIKICAgIGZyYW1lID0gZnJhbWUuZl9iYWNrCiAgICB3aGlsZSBmcmFtZSBpcyBub3QgTm9uZSBhbmQgX2lzX2ludGVybmFsX2ZyYW1lKGZyYW1lKToKICAgICAgICBmcmFtZSA9IGZyYW1lLmZfYmFjawogICAgcmV0dXJuIGZyYW1lCgoKIyBDb2RlIHR5cGljYWxseSByZXBsYWNlZCBieSBfd2FybmluZ3MKZGVmIHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSk6CiAgICAiIiJJc3N1ZSBhIHdhcm5pbmcsIG9yIG1heWJlIGlnbm9yZSBpdCBvciByYWlzZSBhbiBleGNlcHRpb24uIiIiCiAgICAjIENoZWNrIGlmIG1lc3NhZ2UgaXMgYWxyZWFkeSBhIFdhcm5pbmcgb2JqZWN0CiAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIFdhcm5pbmcpOgogICAgICAgIGNhdGVnb3J5ID0gbWVzc2FnZS5fX2NsYXNzX18KICAgICMgQ2hlY2sgY2F0ZWdvcnkgYXJndW1lbnQKICAgIGlmIGNhdGVnb3J5IGlzIE5vbmU6CiAgICAgICAgY2F0ZWdvcnkgPSBVc2VyV2FybmluZwogICAgaWYgbm90IChpc2luc3RhbmNlKGNhdGVnb3J5LCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhjYXRlZ29yeSwgV2FybmluZykpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2F0ZWdvcnkgbXVzdCBiZSBhIFdhcm5pbmcgc3ViY2xhc3MsICIKICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnezpzfSciLmZvcm1hdCh0eXBlKGNhdGVnb3J5KS5fX25hbWVfXykpCiAgICAjIEdldCBjb250ZXh0IGluZm9ybWF0aW9uCiAgICB0cnk6CiAgICAgICAgaWYgc3RhY2tsZXZlbCA8PSAxIG9yIF9pc19pbnRlcm5hbF9mcmFtZShzeXMuX2dldGZyYW1lKDEpKToKICAgICAgICAgICAgIyBJZiBmcmFtZSBpcyB0b28gc21hbGwgdG8gY2FyZSBvciBpZiB0aGUgd2FybmluZyBvcmlnaW5hdGVkIGluCiAgICAgICAgICAgICMgaW50ZXJuYWwgY29kZSwgdGhlbiBkbyBub3QgdHJ5IHRvIGhpZGUgYW55IGZyYW1lcy4KICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKHN0YWNrbGV2ZWwpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpCiAgICAgICAgICAgICMgTG9vayBmb3Igb25lIGZyYW1lIGxlc3Mgc2luY2UgdGhlIGFib3ZlIGxpbmUgc3RhcnRzIHVzIG9mZi4KICAgICAgICAgICAgZm9yIHggaW4gcmFuZ2Uoc3RhY2tsZXZlbC0xKToKICAgICAgICAgICAgICAgIGZyYW1lID0gX25leHRfZXh0ZXJuYWxfZnJhbWUoZnJhbWUpCiAgICAgICAgICAgICAgICBpZiBmcmFtZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIGdsb2JhbHMgPSBzeXMuX19kaWN0X18KICAgICAgICBmaWxlbmFtZSA9ICJzeXMiCiAgICAgICAgbGluZW5vID0gMQogICAgZWxzZToKICAgICAgICBnbG9iYWxzID0gZnJhbWUuZl9nbG9iYWxzCiAgICAgICAgZmlsZW5hbWUgPSBmcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUKICAgICAgICBsaW5lbm8gPSBmcmFtZS5mX2xpbmVubwogICAgaWYgJ19fbmFtZV9fJyBpbiBnbG9iYWxzOgogICAgICAgIG1vZHVsZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KICAgIGVsc2U6CiAgICAgICAgbW9kdWxlID0gIjxzdHJpbmc+IgogICAgcmVnaXN0cnkgPSBnbG9iYWxzLnNldGRlZmF1bHQoIl9fd2FybmluZ3JlZ2lzdHJ5X18iLCB7fSkKICAgIHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwgcmVnaXN0cnksCiAgICAgICAgICAgICAgICAgIGdsb2JhbHMsIHNvdXJjZSkKCmRlZiB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLAogICAgICAgICAgICAgICAgICBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgc291cmNlPU5vbmUpOgogICAgbGluZW5vID0gaW50KGxpbmVubykKICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgIG1vZHVsZSA9IGZpbGVuYW1lIG9yICI8dW5rbm93bj4iCiAgICAgICAgaWYgbW9kdWxlWy0zOl0ubG93ZXIoKSA9PSAiLnB5IjoKICAgICAgICAgICAgbW9kdWxlID0gbW9kdWxlWzotM10gIyBYWFggV2hhdCBhYm91dCBsZWFkaW5nIHBhdGhuYW1lPwogICAgaWYgcmVnaXN0cnkgaXMgTm9uZToKICAgICAgICByZWdpc3RyeSA9IHt9CiAgICBpZiByZWdpc3RyeS5nZXQoJ3ZlcnNpb24nLCAwKSAhPSBfZmlsdGVyc192ZXJzaW9uOgogICAgICAgIHJlZ2lzdHJ5LmNsZWFyKCkKICAgICAgICByZWdpc3RyeVsndmVyc2lvbiddID0gX2ZpbHRlcnNfdmVyc2lvbgogICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBXYXJuaW5nKToKICAgICAgICB0ZXh0ID0gc3RyKG1lc3NhZ2UpCiAgICAgICAgY2F0ZWdvcnkgPSBtZXNzYWdlLl9fY2xhc3NfXwogICAgZWxzZToKICAgICAgICB0ZXh0ID0gbWVzc2FnZQogICAgICAgIG1lc3NhZ2UgPSBjYXRlZ29yeShtZXNzYWdlKQogICAga2V5ID0gKHRleHQsIGNhdGVnb3J5LCBsaW5lbm8pCiAgICAjIFF1aWNrIHRlc3QgZm9yIGNvbW1vbiBjYXNlCiAgICBpZiByZWdpc3RyeS5nZXQoa2V5KToKICAgICAgICByZXR1cm4KICAgICMgU2VhcmNoIHRoZSBmaWx0ZXJzCiAgICBmb3IgaXRlbSBpbiBmaWx0ZXJzOgogICAgICAgIGFjdGlvbiwgbXNnLCBjYXQsIG1vZCwgbG4gPSBpdGVtCiAgICAgICAgaWYgKChtc2cgaXMgTm9uZSBvciBtc2cubWF0Y2godGV4dCkpIGFuZAogICAgICAgICAgICBpc3N1YmNsYXNzKGNhdGVnb3J5LCBjYXQpIGFuZAogICAgICAgICAgICAobW9kIGlzIE5vbmUgb3IgbW9kLm1hdGNoKG1vZHVsZSkpIGFuZAogICAgICAgICAgICAobG4gPT0gMCBvciBsaW5lbm8gPT0gbG4pKToKICAgICAgICAgICAgYnJlYWsKICAgIGVsc2U6CiAgICAgICAgYWN0aW9uID0gZGVmYXVsdGFjdGlvbgogICAgIyBFYXJseSBleGl0IGFjdGlvbnMKICAgIGlmIGFjdGlvbiA9PSAiaWdub3JlIjoKICAgICAgICByZXR1cm4KCiAgICAjIFByaW1lIHRoZSBsaW5lY2FjaGUgZm9yIGZvcm1hdHRpbmcsIGluIGNhc2UgdGhlCiAgICAjICJmaWxlIiBpcyBhY3R1YWxseSBpbiBhIHppcGZpbGUgb3Igc29tZXRoaW5nLgogICAgaW1wb3J0IGxpbmVjYWNoZQogICAgbGluZWNhY2hlLmdldGxpbmVzKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKCiAgICBpZiBhY3Rpb24gPT0gImVycm9yIjoKICAgICAgICByYWlzZSBtZXNzYWdlCiAgICAjIE90aGVyIGFjdGlvbnMKICAgIGlmIGFjdGlvbiA9PSAib25jZSI6CiAgICAgICAgcmVnaXN0cnlba2V5XSA9IDEKICAgICAgICBvbmNla2V5ID0gKHRleHQsIGNhdGVnb3J5KQogICAgICAgIGlmIG9uY2VyZWdpc3RyeS5nZXQob25jZWtleSk6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIG9uY2VyZWdpc3RyeVtvbmNla2V5XSA9IDEKICAgIGVsaWYgYWN0aW9uID09ICJhbHdheXMiOgogICAgICAgIHBhc3MKICAgIGVsaWYgYWN0aW9uID09ICJtb2R1bGUiOgogICAgICAgIHJlZ2lzdHJ5W2tleV0gPSAxCiAgICAgICAgYWx0a2V5ID0gKHRleHQsIGNhdGVnb3J5LCAwKQogICAgICAgIGlmIHJlZ2lzdHJ5LmdldChhbHRrZXkpOgogICAgICAgICAgICByZXR1cm4KICAgICAgICByZWdpc3RyeVthbHRrZXldID0gMQogICAgZWxpZiBhY3Rpb24gPT0gImRlZmF1bHQiOgogICAgICAgIHJlZ2lzdHJ5W2tleV0gPSAxCiAgICBlbHNlOgogICAgICAgICMgVW5yZWNvZ25pemVkIGFjdGlvbnMgYXJlIGVycm9ycwogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGFjdGlvbiAoJXIpIGluIHdhcm5pbmdzLmZpbHRlcnM6XG4gJXMiICUKICAgICAgICAgICAgICAoYWN0aW9uLCBpdGVtKSkKICAgICMgUHJpbnQgbWVzc2FnZSBhbmQgY29udGV4dAogICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIHNvdXJjZSkKICAgIF9zaG93d2Fybm1zZyhtc2cpCgoKY2xhc3MgV2FybmluZ01lc3NhZ2Uob2JqZWN0KToKCiAgICBfV0FSTklOR19ERVRBSUxTID0gKCJtZXNzYWdlIiwgImNhdGVnb3J5IiwgImZpbGVuYW1lIiwgImxpbmVubyIsICJmaWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiLCAic291cmNlIikKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICBsaW5lPU5vbmUsIHNvdXJjZT1Ob25lKToKICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCiAgICAgICAgc2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5CiAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCiAgICAgICAgc2VsZi5saW5lID0gbGluZQogICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCiAgICAgICAgc2VsZi5fY2F0ZWdvcnlfbmFtZSA9IGNhdGVnb3J5Ll9fbmFtZV9fIGlmIGNhdGVnb3J5IGVsc2UgTm9uZQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAoInttZXNzYWdlIDogJXIsIGNhdGVnb3J5IDogJXIsIGZpbGVuYW1lIDogJXIsIGxpbmVubyA6ICVzLCAiCiAgICAgICAgICAgICAgICAgICAgImxpbmUgOiAlcn0iICUgKHNlbGYubWVzc2FnZSwgc2VsZi5fY2F0ZWdvcnlfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIHNlbGYubGluZSkpCgoKY2xhc3MgY2F0Y2hfd2FybmluZ3Mob2JqZWN0KToKCiAgICAiIiJBIGNvbnRleHQgbWFuYWdlciB0aGF0IGNvcGllcyBhbmQgcmVzdG9yZXMgdGhlIHdhcm5pbmdzIGZpbHRlciB1cG9uCiAgICBleGl0aW5nIHRoZSBjb250ZXh0LgoKICAgIFRoZSAncmVjb3JkJyBhcmd1bWVudCBzcGVjaWZpZXMgd2hldGhlciB3YXJuaW5ncyBzaG91bGQgYmUgY2FwdHVyZWQgYnkgYQogICAgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgYW5kIGJlIGFwcGVuZGVkIHRvIGEgbGlzdAogICAgcmV0dXJuZWQgYnkgdGhlIGNvbnRleHQgbWFuYWdlci4gT3RoZXJ3aXNlIE5vbmUgaXMgcmV0dXJuZWQgYnkgdGhlIGNvbnRleHQKICAgIG1hbmFnZXIuIFRoZSBvYmplY3RzIGFwcGVuZGVkIHRvIHRoZSBsaXN0IGFyZSBhcmd1bWVudHMgd2hvc2UgYXR0cmlidXRlcwogICAgbWlycm9yIHRoZSBhcmd1bWVudHMgdG8gc2hvd3dhcm5pbmcoKS4KCiAgICBUaGUgJ21vZHVsZScgYXJndW1lbnQgaXMgdG8gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBtb2R1bGUgdG8gdGhlIG1vZHVsZQogICAgbmFtZWQgJ3dhcm5pbmdzJyBhbmQgaW1wb3J0ZWQgdW5kZXIgdGhhdCBuYW1lLiBUaGlzIGFyZ3VtZW50IGlzIG9ubHkgdXNlZnVsCiAgICB3aGVuIHRlc3RpbmcgdGhlIHdhcm5pbmdzIG1vZHVsZSBpdHNlbGYuCgogICAgSWYgdGhlICdhY3Rpb24nIGFyZ3VtZW50IGlzIG5vdCBOb25lLCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgcGFzc2VkCiAgICB0byB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoKSBhcyBpZiBpdCB3ZXJlIGNhbGxlZCBpbW1lZGlhdGVseSBvbiBlbnRlcmluZyB0aGUKICAgIGNvbnRleHQuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgcmVjb3JkPUZhbHNlLCBtb2R1bGU9Tm9uZSwKICAgICAgICAgICAgICAgICBhY3Rpb249Tm9uZSwgY2F0ZWdvcnk9V2FybmluZywgbGluZW5vPTAsIGFwcGVuZD1GYWxzZSk6CiAgICAgICAgIiIiU3BlY2lmeSB3aGV0aGVyIHRvIHJlY29yZCB3YXJuaW5ncyBhbmQgaWYgYW4gYWx0ZXJuYXRpdmUgbW9kdWxlCiAgICAgICAgc2hvdWxkIGJlIHVzZWQgb3RoZXIgdGhhbiBzeXMubW9kdWxlc1snd2FybmluZ3MnXS4KCiAgICAgICAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4wLCBwbGVhc2UgY29uc2lkZXIgYWxsIGFyZ3VtZW50cyB0byBiZQogICAgICAgIGtleXdvcmQtb25seS4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fcmVjb3JkID0gcmVjb3JkCiAgICAgICAgc2VsZi5fbW9kdWxlID0gc3lzLm1vZHVsZXNbJ3dhcm5pbmdzJ10gaWYgbW9kdWxlIGlzIE5vbmUgZWxzZSBtb2R1bGUKICAgICAgICBzZWxmLl9lbnRlcmVkID0gRmFsc2UKICAgICAgICBpZiBhY3Rpb24gaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fZmlsdGVyID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2ZpbHRlciA9IChhY3Rpb24sIGNhdGVnb3J5LCBsaW5lbm8sIGFwcGVuZCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgYXJncyA9IFtdCiAgICAgICAgaWYgc2VsZi5fcmVjb3JkOgogICAgICAgICAgICBhcmdzLmFwcGVuZCgicmVjb3JkPVRydWUiKQogICAgICAgIGlmIHNlbGYuX21vZHVsZSBpcyBub3Qgc3lzLm1vZHVsZXNbJ3dhcm5pbmdzJ106CiAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCJtb2R1bGU9JXIiICUgc2VsZi5fbW9kdWxlKQogICAgICAgIG5hbWUgPSB0eXBlKHNlbGYpLl9fbmFtZV9fCiAgICAgICAgcmV0dXJuICIlcyglcykiICUgKG5hbWUsICIsICIuam9pbihhcmdzKSkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2VudGVyZWQ6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGVudGVyICVyIHR3aWNlIiAlIHNlbGYpCiAgICAgICAgc2VsZi5fZW50ZXJlZCA9IFRydWUKICAgICAgICBzZWxmLl9maWx0ZXJzID0gc2VsZi5fbW9kdWxlLmZpbHRlcnMKICAgICAgICBzZWxmLl9tb2R1bGUuZmlsdGVycyA9IHNlbGYuX2ZpbHRlcnNbOl0KICAgICAgICBzZWxmLl9tb2R1bGUuX2ZpbHRlcnNfbXV0YXRlZCgpCiAgICAgICAgc2VsZi5fc2hvd3dhcm5pbmcgPSBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcKICAgICAgICBzZWxmLl9zaG93d2Fybm1zZ19pbXBsID0gc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZ19pbXBsCiAgICAgICAgaWYgc2VsZi5fZmlsdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzaW1wbGVmaWx0ZXIoKnNlbGYuX2ZpbHRlcikKICAgICAgICBpZiBzZWxmLl9yZWNvcmQ6CiAgICAgICAgICAgIGxvZyA9IFtdCiAgICAgICAgICAgIHNlbGYuX21vZHVsZS5fc2hvd3dhcm5tc2dfaW1wbCA9IGxvZy5hcHBlbmQKICAgICAgICAgICAgIyBSZXNldCBzaG93d2FybmluZygpIHRvIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHRvIG1ha2Ugc3VyZQogICAgICAgICAgICAjIHRoYXQgX3Nob3d3YXJubXNnKCkgY2FsbHMgX3Nob3d3YXJubXNnX2ltcGwoKQogICAgICAgICAgICBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcgPSBzZWxmLl9tb2R1bGUuX3Nob3d3YXJuaW5nX29yaWcKICAgICAgICAgICAgcmV0dXJuIGxvZwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6CiAgICAgICAgaWYgbm90IHNlbGYuX2VudGVyZWQ6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGV4aXQgJXIgd2l0aG91dCBlbnRlcmluZyBmaXJzdCIgJSBzZWxmKQogICAgICAgIHNlbGYuX21vZHVsZS5maWx0ZXJzID0gc2VsZi5fZmlsdGVycwogICAgICAgIHNlbGYuX21vZHVsZS5fZmlsdGVyc19tdXRhdGVkKCkKICAgICAgICBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcgPSBzZWxmLl9zaG93d2FybmluZwogICAgICAgIHNlbGYuX21vZHVsZS5fc2hvd3dhcm5tc2dfaW1wbCA9IHNlbGYuX3Nob3d3YXJubXNnX2ltcGwKCgpfREVQUkVDQVRFRF9NU0cgPSAie25hbWUhcn0gaXMgZGVwcmVjYXRlZCBhbmQgc2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiB7cmVtb3ZlfSIKCmRlZiBfZGVwcmVjYXRlZChuYW1lLCBtZXNzYWdlPV9ERVBSRUNBVEVEX01TRywgKiwgcmVtb3ZlLCBfdmVyc2lvbj1zeXMudmVyc2lvbl9pbmZvKToKICAgICIiIldhcm4gdGhhdCAqbmFtZSogaXMgZGVwcmVjYXRlZCBvciBzaG91bGQgYmUgcmVtb3ZlZC4KCiAgICBSdW50aW1lRXJyb3IgaXMgcmFpc2VkIGlmICpyZW1vdmUqIHNwZWNpZmllcyBhIG1ham9yL21pbm9yIHR1cGxlIG9sZGVyIHRoYW4KICAgIHRoZSBjdXJyZW50IFB5dGhvbiB2ZXJzaW9uIG9yIHRoZSBzYW1lIHZlcnNpb24gYnV0IHBhc3QgdGhlIGFscGhhLgoKICAgIFRoZSAqbWVzc2FnZSogYXJndW1lbnQgaXMgZm9ybWF0dGVkIHdpdGggKm5hbWUqIGFuZCAqcmVtb3ZlKiBhcyBhIFB5dGhvbgogICAgdmVyc2lvbiAoZS5nLiAiMy4xMSIpLgoKICAgICIiIgogICAgcmVtb3ZlX2Zvcm1hdHRlZCA9IGYie3JlbW92ZVswXX0ue3JlbW92ZVsxXX0iCiAgICBpZiAoX3ZlcnNpb25bOjJdID4gcmVtb3ZlKSBvciAoX3ZlcnNpb25bOjJdID09IHJlbW92ZSBhbmQgX3ZlcnNpb25bM10gIT0gImFscGhhIik6CiAgICAgICAgbXNnID0gZiJ7bmFtZSFyfSB3YXMgc2xhdGVkIGZvciByZW1vdmFsIGFmdGVyIFB5dGhvbiB7cmVtb3ZlX2Zvcm1hdHRlZH0gYWxwaGEiCiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1zZykKICAgIGVsc2U6CiAgICAgICAgbXNnID0gbWVzc2FnZS5mb3JtYXQobmFtZT1uYW1lLCByZW1vdmU9cmVtb3ZlX2Zvcm1hdHRlZCkKICAgICAgICB3YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTMpCgoKIyBQcml2YXRlIHV0aWxpdHkgZnVuY3Rpb24gY2FsbGVkIGJ5IF9QeUVycl9XYXJuVW5hd2FpdGVkQ29yb3V0aW5lCmRlZiBfd2Fybl91bmF3YWl0ZWRfY29yb3V0aW5lKGNvcm8pOgogICAgbXNnX2xpbmVzID0gWwogICAgICAgIGYiY29yb3V0aW5lICd7Y29yby5fX3F1YWxuYW1lX199JyB3YXMgbmV2ZXIgYXdhaXRlZFxuIgogICAgXQogICAgaWYgY29yby5jcl9vcmlnaW4gaXMgbm90IE5vbmU6CiAgICAgICAgaW1wb3J0IGxpbmVjYWNoZSwgdHJhY2ViYWNrCiAgICAgICAgZGVmIGV4dHJhY3QoKToKICAgICAgICAgICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmNuYW1lIGluIHJldmVyc2VkKGNvcm8uY3Jfb3JpZ2luKToKICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKQogICAgICAgICAgICAgICAgeWllbGQgKGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmNuYW1lLCBsaW5lKQogICAgICAgIG1zZ19saW5lcy5hcHBlbmQoIkNvcm91dGluZSBjcmVhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpXG4iKQogICAgICAgIG1zZ19saW5lcyArPSB0cmFjZWJhY2suZm9ybWF0X2xpc3QobGlzdChleHRyYWN0KCkpKQogICAgbXNnID0gIiIuam9pbihtc2dfbGluZXMpLnJzdHJpcCgiXG4iKQogICAgIyBQYXNzaW5nIHNvdXJjZT0gaGVyZSBtZWFucyB0aGF0IGlmIHRoZSB1c2VyIGhhcHBlbnMgdG8gaGF2ZSB0cmFjZW1hbGxvYwogICAgIyBlbmFibGVkIGFuZCB0cmFja2luZyB3aGVyZSB0aGUgY29yb3V0aW5lIHdhcyBjcmVhdGVkLCB0aGUgd2FybmluZyB3aWxsCiAgICAjIGNvbnRhaW4gdGhhdCB0cmFjZWJhY2suIFRoaXMgZG9lcyBtZWFuIHRoYXQgaWYgdGhleSBoYXZlICpib3RoKgogICAgIyBjb3JvdXRpbmUgb3JpZ2luIHRyYWNraW5nICphbmQqIHRyYWNlbWFsbG9jIGVuYWJsZWQsIHRoZXknbGwgZ2V0IHR3bwogICAgIyBwYXJ0aWFsbHktcmVkdW5kYW50IHRyYWNlYmFja3MuIElmIHdlIHdhbnRlZCB0byBiZSBjbGV2ZXIgd2UgY291bGQKICAgICMgcHJvYmFibHkgZGV0ZWN0IHRoaXMgY2FzZSBhbmQgYXZvaWQgaXQsIGJ1dCBmb3Igbm93IHdlIGRvbid0IGJvdGhlci4KICAgIHdhcm4obXNnLCBjYXRlZ29yeT1SdW50aW1lV2FybmluZywgc3RhY2tsZXZlbD0yLCBzb3VyY2U9Y29ybykKCgojIGZpbHRlcnMgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBmaWx0ZXIgNS10dXBsZXMKIyBUaGUgY29tcG9uZW50cyBvZiB0aGUgNS10dXBsZSBhcmU6CiMgLSBhbiBhY3Rpb246IGVycm9yLCBpZ25vcmUsIGFsd2F5cywgZGVmYXVsdCwgbW9kdWxlLCBvciBvbmNlCiMgLSBhIGNvbXBpbGVkIHJlZ2V4IHRoYXQgbXVzdCBtYXRjaCB0aGUgd2FybmluZyBtZXNzYWdlCiMgLSBhIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgd2FybmluZyBjYXRlZ29yeQojIC0gYSBjb21waWxlZCByZWdleCB0aGF0IG11c3QgbWF0Y2ggdGhlIG1vZHVsZSB0aGF0IGlzIGJlaW5nIHdhcm5lZAojIC0gYSBsaW5lIG51bWJlciBmb3IgdGhlIGxpbmUgYmVpbmcgd2FybmluZywgb3IgMCB0byBtZWFuIGFueSBsaW5lCiMgSWYgZWl0aGVyIGlmIHRoZSBjb21waWxlZCByZWdleHMgYXJlIE5vbmUsIG1hdGNoIGFueXRoaW5nLgp0cnk6CiAgICBmcm9tIF93YXJuaW5ncyBpbXBvcnQgKGZpbHRlcnMsIF9kZWZhdWx0YWN0aW9uLCBfb25jZXJlZ2lzdHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuLCB3YXJuX2V4cGxpY2l0LCBfZmlsdGVyc19tdXRhdGVkKQogICAgZGVmYXVsdGFjdGlvbiA9IF9kZWZhdWx0YWN0aW9uCiAgICBvbmNlcmVnaXN0cnkgPSBfb25jZXJlZ2lzdHJ5CiAgICBfd2FybmluZ3NfZGVmYXVsdHMgPSBUcnVlCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGZpbHRlcnMgPSBbXQogICAgZGVmYXVsdGFjdGlvbiA9ICJkZWZhdWx0IgogICAgb25jZXJlZ2lzdHJ5ID0ge30KCiAgICBfZmlsdGVyc192ZXJzaW9uID0gMQoKICAgIGRlZiBfZmlsdGVyc19tdXRhdGVkKCk6CiAgICAgICAgZ2xvYmFsIF9maWx0ZXJzX3ZlcnNpb24KICAgICAgICBfZmlsdGVyc192ZXJzaW9uICs9IDEKCiAgICBfd2FybmluZ3NfZGVmYXVsdHMgPSBGYWxzZQoKCiMgTW9kdWxlIGluaXRpYWxpemF0aW9uCl9wcm9jZXNzb3B0aW9ucyhzeXMud2Fybm9wdGlvbnMpCmlmIG5vdCBfd2FybmluZ3NfZGVmYXVsdHM6CiAgICAjIFNldmVyYWwgd2FybmluZyBjYXRlZ29yaWVzIGFyZSBpZ25vcmVkIGJ5IGRlZmF1bHQgaW4gcmVndWxhciBidWlsZHMKICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKICAgICAgICBmaWx0ZXJ3YXJuaW5ncygiZGVmYXVsdCIsIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGU9Il9fbWFpbl9fIiwgYXBwZW5kPTEpCiAgICAgICAgc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcsIGFwcGVuZD0xKQogICAgICAgIHNpbXBsZWZpbHRlcigiaWdub3JlIiwgY2F0ZWdvcnk9UGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgYXBwZW5kPTEpCiAgICAgICAgc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBjYXRlZ29yeT1JbXBvcnRXYXJuaW5nLCBhcHBlbmQ9MSkKICAgICAgICBzaW1wbGVmaWx0ZXIoImlnbm9yZSIsIGNhdGVnb3J5PVJlc291cmNlV2FybmluZywgYXBwZW5kPTEpCgpkZWwgX3dhcm5pbmdzX2RlZmF1bHRzClBLAwQUAAAAAAACIKNW23UPJU5VAABOVQAABwAAAHdhdmUucHkiIiJTdHVmZiB0byBwYXJzZSBXQVZFIGZpbGVzLgoKVXNhZ2UuCgpSZWFkaW5nIFdBVkUgZmlsZXM6CiAgICAgIGYgPSB3YXZlLm9wZW4oZmlsZSwgJ3InKQp3aGVyZSBmaWxlIGlzIGVpdGhlciB0aGUgbmFtZSBvZiBhIGZpbGUgb3IgYW4gb3BlbiBmaWxlIHBvaW50ZXIuClRoZSBvcGVuIGZpbGUgcG9pbnRlciBtdXN0IGhhdmUgbWV0aG9kcyByZWFkKCksIHNlZWsoKSwgYW5kIGNsb3NlKCkuCldoZW4gdGhlIHNldHBvcygpIGFuZCByZXdpbmQoKSBtZXRob2RzIGFyZSBub3QgdXNlZCwgdGhlIHNlZWsoKQptZXRob2QgaXMgbm90ICBuZWNlc3NhcnkuCgpUaGlzIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIHRoZSBmb2xsb3dpbmcgcHVibGljIG1ldGhvZHM6CiAgICAgIGdldG5jaGFubmVscygpICAtLSByZXR1cm5zIG51bWJlciBvZiBhdWRpbyBjaGFubmVscyAoMSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm8sIDIgZm9yIHN0ZXJlbykKICAgICAgZ2V0c2FtcHdpZHRoKCkgIC0tIHJldHVybnMgc2FtcGxlIHdpZHRoIGluIGJ5dGVzCiAgICAgIGdldGZyYW1lcmF0ZSgpICAtLSByZXR1cm5zIHNhbXBsaW5nIGZyZXF1ZW5jeQogICAgICBnZXRuZnJhbWVzKCkgICAgLS0gcmV0dXJucyBudW1iZXIgb2YgYXVkaW8gZnJhbWVzCiAgICAgIGdldGNvbXB0eXBlKCkgICAtLSByZXR1cm5zIGNvbXByZXNzaW9uIHR5cGUgKCdOT05FJyBmb3IgbGluZWFyIHNhbXBsZXMpCiAgICAgIGdldGNvbXBuYW1lKCkgICAtLSByZXR1cm5zIGh1bWFuLXJlYWRhYmxlIHZlcnNpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIHR5cGUgKCdub3QgY29tcHJlc3NlZCcgbGluZWFyIHNhbXBsZXMpCiAgICAgIGdldHBhcmFtcygpICAgICAtLSByZXR1cm5zIGEgbmFtZWR0dXBsZSBjb25zaXN0aW5nIG9mIGFsbCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlIGluIHRoZSBhYm92ZSBvcmRlcgogICAgICBnZXRtYXJrZXJzKCkgICAgLS0gcmV0dXJucyBOb25lIChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgYWlmYyBtb2R1bGUpCiAgICAgIGdldG1hcmsoaWQpICAgICAtLSByYWlzZXMgYW4gZXJyb3Igc2luY2UgdGhlIG1hcmsgZG9lcyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0IChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBhaWZjIG1vZHVsZSkKICAgICAgcmVhZGZyYW1lcyhuKSAgIC0tIHJldHVybnMgYXQgbW9zdCBuIGZyYW1lcyBvZiBhdWRpbwogICAgICByZXdpbmQoKSAgICAgICAgLS0gcmV3aW5kIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGF1ZGlvIHN0cmVhbQogICAgICBzZXRwb3MocG9zKSAgICAgLS0gc2VlayB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uCiAgICAgIHRlbGwoKSAgICAgICAgICAtLSByZXR1cm4gdGhlIGN1cnJlbnQgcG9zaXRpb24KICAgICAgY2xvc2UoKSAgICAgICAgIC0tIGNsb3NlIHRoZSBpbnN0YW5jZSAobWFrZSBpdCB1bnVzYWJsZSkKVGhlIHBvc2l0aW9uIHJldHVybmVkIGJ5IHRlbGwoKSBhbmQgdGhlIHBvc2l0aW9uIGdpdmVuIHRvIHNldHBvcygpCmFyZSBjb21wYXRpYmxlIGFuZCBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgYWN0dWFsIHBvc2l0aW9uIGluIHRoZQpmaWxlLgpUaGUgY2xvc2UoKSBtZXRob2QgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgY2xhc3MgaW5zdGFuY2UKaXMgZGVzdHJveWVkLgoKV3JpdGluZyBXQVZFIGZpbGVzOgogICAgICBmID0gd2F2ZS5vcGVuKGZpbGUsICd3JykKd2hlcmUgZmlsZSBpcyBlaXRoZXIgdGhlIG5hbWUgb2YgYSBmaWxlIG9yIGFuIG9wZW4gZmlsZSBwb2ludGVyLgpUaGUgb3BlbiBmaWxlIHBvaW50ZXIgbXVzdCBoYXZlIG1ldGhvZHMgd3JpdGUoKSwgdGVsbCgpLCBzZWVrKCksIGFuZApjbG9zZSgpLgoKVGhpcyByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCB0aGUgZm9sbG93aW5nIHB1YmxpYyBtZXRob2RzOgogICAgICBzZXRuY2hhbm5lbHMobikgLS0gc2V0IHRoZSBudW1iZXIgb2YgY2hhbm5lbHMKICAgICAgc2V0c2FtcHdpZHRoKG4pIC0tIHNldCB0aGUgc2FtcGxlIHdpZHRoCiAgICAgIHNldGZyYW1lcmF0ZShuKSAtLSBzZXQgdGhlIGZyYW1lIHJhdGUKICAgICAgc2V0bmZyYW1lcyhuKSAgIC0tIHNldCB0aGUgbnVtYmVyIG9mIGZyYW1lcwogICAgICBzZXRjb21wdHlwZSh0eXBlLCBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgLS0gc2V0IHRoZSBjb21wcmVzc2lvbiB0eXBlIGFuZCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIGh1bWFuLXJlYWRhYmxlIGNvbXByZXNzaW9uIHR5cGUKICAgICAgc2V0cGFyYW1zKHR1cGxlKQogICAgICAgICAgICAgICAgICAgICAgLS0gc2V0IGFsbCBwYXJhbWV0ZXJzIGF0IG9uY2UKICAgICAgdGVsbCgpICAgICAgICAgIC0tIHJldHVybiBjdXJyZW50IHBvc2l0aW9uIGluIG91dHB1dCBmaWxlCiAgICAgIHdyaXRlZnJhbWVzcmF3KGRhdGEpCiAgICAgICAgICAgICAgICAgICAgICAtLSB3cml0ZSBhdWRpbyBmcmFtZXMgd2l0aG91dCBwYXRjaGluZyB1cCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaGVhZGVyCiAgICAgIHdyaXRlZnJhbWVzKGRhdGEpCiAgICAgICAgICAgICAgICAgICAgICAtLSB3cml0ZSBhdWRpbyBmcmFtZXMgYW5kIHBhdGNoIHVwIHRoZSBmaWxlIGhlYWRlcgogICAgICBjbG9zZSgpICAgICAgICAgLS0gcGF0Y2ggdXAgdGhlIGZpbGUgaGVhZGVyIGFuZCBjbG9zZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBmaWxlCllvdSBzaG91bGQgc2V0IHRoZSBwYXJhbWV0ZXJzIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGVmcmFtZXNyYXcgb3IKd3JpdGVmcmFtZXMuICBUaGUgdG90YWwgbnVtYmVyIG9mIGZyYW1lcyBkb2VzIG5vdCBuZWVkIHRvIGJlIHNldCwKYnV0IHdoZW4gaXQgaXMgc2V0IHRvIHRoZSBjb3JyZWN0IHZhbHVlLCB0aGUgaGVhZGVyIGRvZXMgbm90IGhhdmUgdG8KYmUgcGF0Y2hlZCB1cC4KSXQgaXMgYmVzdCB0byBmaXJzdCBzZXQgYWxsIHBhcmFtZXRlcnMsIHBlcmhhcHMgcG9zc2libHkgdGhlCmNvbXByZXNzaW9uIHR5cGUsIGFuZCB0aGVuIHdyaXRlIGF1ZGlvIGZyYW1lcyB1c2luZyB3cml0ZWZyYW1lc3Jhdy4KV2hlbiBhbGwgZnJhbWVzIGhhdmUgYmVlbiB3cml0dGVuLCBlaXRoZXIgY2FsbCB3cml0ZWZyYW1lcyhiJycpIG9yCmNsb3NlKCkgdG8gcGF0Y2ggdXAgdGhlIHNpemVzIGluIHRoZSBoZWFkZXIuClRoZSBjbG9zZSgpIG1ldGhvZCBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBjbGFzcyBpbnN0YW5jZQppcyBkZXN0cm95ZWQuCiIiIgoKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQppbXBvcnQgYnVpbHRpbnMKaW1wb3J0IHN0cnVjdAppbXBvcnQgc3lzCgoKX19hbGxfXyA9IFsib3BlbiIsICJFcnJvciIsICJXYXZlX3JlYWQiLCAiV2F2ZV93cml0ZSJdCgpjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgcGFzcwoKV0FWRV9GT1JNQVRfUENNID0gMHgwMDAxCgpfYXJyYXlfZm10cyA9IE5vbmUsICdiJywgJ2gnLCBOb25lLCAnaScKCl93YXZlX3BhcmFtcyA9IG5hbWVkdHVwbGUoJ193YXZlX3BhcmFtcycsCiAgICAgICAgICAgICAgICAgICAgICduY2hhbm5lbHMgc2FtcHdpZHRoIGZyYW1lcmF0ZSBuZnJhbWVzIGNvbXB0eXBlIGNvbXBuYW1lJykKCmRlZiBfYnl0ZXN3YXAoZGF0YSwgd2lkdGgpOgogICAgc3dhcHBlZF9kYXRhID0gYnl0ZWFycmF5KGxlbihkYXRhKSkKCiAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZGF0YSksIHdpZHRoKToKICAgICAgICBmb3IgaiBpbiByYW5nZSh3aWR0aCk6CiAgICAgICAgICAgIHN3YXBwZWRfZGF0YVtpICsgd2lkdGggLSAxIC0gal0gPSBkYXRhW2kgKyBqXQoKICAgIHJldHVybiBieXRlcyhzd2FwcGVkX2RhdGEpCgoKY2xhc3MgX0NodW5rOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIGFsaWduPVRydWUsIGJpZ2VuZGlhbj1UcnVlLCBpbmNsaGVhZGVyPUZhbHNlKToKICAgICAgICBpbXBvcnQgc3RydWN0CiAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQogICAgICAgIHNlbGYuYWxpZ24gPSBhbGlnbiAgICAgICMgd2hldGhlciB0byBhbGlnbiB0byB3b3JkICgyLWJ5dGUpIGJvdW5kYXJpZXMKICAgICAgICBpZiBiaWdlbmRpYW46CiAgICAgICAgICAgIHN0cmZsYWcgPSAnPicKICAgICAgICBlbHNlOgogICAgICAgICAgICBzdHJmbGFnID0gJzwnCiAgICAgICAgc2VsZi5maWxlID0gZmlsZQogICAgICAgIHNlbGYuY2h1bmtuYW1lID0gZmlsZS5yZWFkKDQpCiAgICAgICAgaWYgbGVuKHNlbGYuY2h1bmtuYW1lKSA8IDQ6CiAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmNodW5rc2l6ZSA9IHN0cnVjdC51bnBhY2tfZnJvbShzdHJmbGFnKydMJywgZmlsZS5yZWFkKDQpKVswXQogICAgICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yIGZyb20gTm9uZQogICAgICAgIGlmIGluY2xoZWFkZXI6CiAgICAgICAgICAgIHNlbGYuY2h1bmtzaXplID0gc2VsZi5jaHVua3NpemUgLSA4ICMgc3VidHJhY3QgaGVhZGVyCiAgICAgICAgc2VsZi5zaXplX3JlYWQgPSAwCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLm9mZnNldCA9IHNlbGYuZmlsZS50ZWxsKCkKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgICAgc2VsZi5zZWVrYWJsZSA9IEZhbHNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5zZWVrYWJsZSA9IFRydWUKCiAgICBkZWYgZ2V0bmFtZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgKElEKSBvZiB0aGUgY3VycmVudCBjaHVuay4iIiIKICAgICAgICByZXR1cm4gc2VsZi5jaHVua25hbWUKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLnNraXAoKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCgogICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6CiAgICAgICAgIiIiU2VlayB0byBzcGVjaWZpZWQgcG9zaXRpb24gaW50byB0aGUgY2h1bmsuCiAgICAgICAgRGVmYXVsdCBwb3NpdGlvbiBpcyAwIChzdGFydCBvZiBjaHVuaykuCiAgICAgICAgSWYgdGhlIGZpbGUgaXMgbm90IHNlZWthYmxlLCB0aGlzIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgogICAgICAgICIiIgoKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCiAgICAgICAgaWYgbm90IHNlbGYuc2Vla2FibGU6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoImNhbm5vdCBzZWVrIikKICAgICAgICBpZiB3aGVuY2UgPT0gMToKICAgICAgICAgICAgcG9zID0gcG9zICsgc2VsZi5zaXplX3JlYWQKICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgogICAgICAgICAgICBwb3MgPSBwb3MgKyBzZWxmLmNodW5rc2l6ZQogICAgICAgIGlmIHBvcyA8IDAgb3IgcG9zID4gc2VsZi5jaHVua3NpemU6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgogICAgICAgIHNlbGYuZmlsZS5zZWVrKHNlbGYub2Zmc2V0ICsgcG9zLCAwKQogICAgICAgIHNlbGYuc2l6ZV9yZWFkID0gcG9zCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQogICAgICAgIHJldHVybiBzZWxmLnNpemVfcmVhZAoKICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICIiIlJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzIGZyb20gdGhlIGNodW5rLgogICAgICAgIElmIHNpemUgaXMgb21pdHRlZCBvciBuZWdhdGl2ZSwgcmVhZCB1bnRpbCB0aGUgZW5kCiAgICAgICAgb2YgdGhlIGNodW5rLgogICAgICAgICIiIgoKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCiAgICAgICAgaWYgc2VsZi5zaXplX3JlYWQgPj0gc2VsZi5jaHVua3NpemU6CiAgICAgICAgICAgIHJldHVybiBiJycKICAgICAgICBpZiBzaXplIDwgMDoKICAgICAgICAgICAgc2l6ZSA9IHNlbGYuY2h1bmtzaXplIC0gc2VsZi5zaXplX3JlYWQKICAgICAgICBpZiBzaXplID4gc2VsZi5jaHVua3NpemUgLSBzZWxmLnNpemVfcmVhZDoKICAgICAgICAgICAgc2l6ZSA9IHNlbGYuY2h1bmtzaXplIC0gc2VsZi5zaXplX3JlYWQKICAgICAgICBkYXRhID0gc2VsZi5maWxlLnJlYWQoc2l6ZSkKICAgICAgICBzZWxmLnNpemVfcmVhZCA9IHNlbGYuc2l6ZV9yZWFkICsgbGVuKGRhdGEpCiAgICAgICAgaWYgc2VsZi5zaXplX3JlYWQgPT0gc2VsZi5jaHVua3NpemUgYW5kIFwKICAgICAgICAgICBzZWxmLmFsaWduIGFuZCBcCiAgICAgICAgICAgKHNlbGYuY2h1bmtzaXplICYgMSk6CiAgICAgICAgICAgIGR1bW15ID0gc2VsZi5maWxlLnJlYWQoMSkKICAgICAgICAgICAgc2VsZi5zaXplX3JlYWQgPSBzZWxmLnNpemVfcmVhZCArIGxlbihkdW1teSkKICAgICAgICByZXR1cm4gZGF0YQoKICAgIGRlZiBza2lwKHNlbGYpOgogICAgICAgICIiIlNraXAgdGhlIHJlc3Qgb2YgdGhlIGNodW5rLgogICAgICAgIElmIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBjaHVuaywKICAgICAgICB0aGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIHNvIHRoYXQgdGhlIGZpbGUgcG9pbnRzIHRvCiAgICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNodW5rLgogICAgICAgICIiIgoKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCiAgICAgICAgaWYgc2VsZi5zZWVrYWJsZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbiA9IHNlbGYuY2h1bmtzaXplIC0gc2VsZi5zaXplX3JlYWQKICAgICAgICAgICAgICAgICMgbWF5YmUgZml4IGFsaWdubWVudAogICAgICAgICAgICAgICAgaWYgc2VsZi5hbGlnbiBhbmQgKHNlbGYuY2h1bmtzaXplICYgMSk6CiAgICAgICAgICAgICAgICAgICAgbiA9IG4gKyAxCiAgICAgICAgICAgICAgICBzZWxmLmZpbGUuc2VlayhuLCAxKQogICAgICAgICAgICAgICAgc2VsZi5zaXplX3JlYWQgPSBzZWxmLnNpemVfcmVhZCArIG4KICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICB3aGlsZSBzZWxmLnNpemVfcmVhZCA8IHNlbGYuY2h1bmtzaXplOgogICAgICAgICAgICBuID0gbWluKDgxOTIsIHNlbGYuY2h1bmtzaXplIC0gc2VsZi5zaXplX3JlYWQpCiAgICAgICAgICAgIGR1bW15ID0gc2VsZi5yZWFkKG4pCiAgICAgICAgICAgIGlmIG5vdCBkdW1teToKICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCgoKCmNsYXNzIFdhdmVfcmVhZDoKICAgICIiIlZhcmlhYmxlcyB1c2VkIGluIHRoaXMgY2xhc3M6CgogICAgVGhlc2UgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgdGhvdWdoIGFwcHJvcHJpYXRlCiAgICBtZXRob2RzIG9mIHRoaXMgY2xhc3M6CiAgICBfZmlsZSAtLSB0aGUgb3BlbiBmaWxlIHdpdGggbWV0aG9kcyByZWFkKCksIGNsb3NlKCksIGFuZCBzZWVrKCkKICAgICAgICAgICAgICBzZXQgdGhyb3VnaCB0aGUgX19pbml0X18oKSBtZXRob2QKICAgIF9uY2hhbm5lbHMgLS0gdGhlIG51bWJlciBvZiBhdWRpbyBjaGFubmVscwogICAgICAgICAgICAgIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBnZXRuY2hhbm5lbHMoKSBtZXRob2QKICAgIF9uZnJhbWVzIC0tIHRoZSBudW1iZXIgb2YgYXVkaW8gZnJhbWVzCiAgICAgICAgICAgICAgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGdldG5mcmFtZXMoKSBtZXRob2QKICAgIF9zYW1wd2lkdGggLS0gdGhlIG51bWJlciBvZiBieXRlcyBwZXIgYXVkaW8gc2FtcGxlCiAgICAgICAgICAgICAgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGdldHNhbXB3aWR0aCgpIG1ldGhvZAogICAgX2ZyYW1lcmF0ZSAtLSB0aGUgc2FtcGxpbmcgZnJlcXVlbmN5CiAgICAgICAgICAgICAgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGdldGZyYW1lcmF0ZSgpIG1ldGhvZAogICAgX2NvbXB0eXBlIC0tIHRoZSBBSUZGLUMgY29tcHJlc3Npb24gdHlwZSAoJ05PTkUnIGlmIEFJRkYpCiAgICAgICAgICAgICAgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGdldGNvbXB0eXBlKCkgbWV0aG9kCiAgICBfY29tcG5hbWUgLS0gdGhlIGh1bWFuLXJlYWRhYmxlIEFJRkYtQyBjb21wcmVzc2lvbiB0eXBlCiAgICAgICAgICAgICAgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGdldGNvbXB0eXBlKCkgbWV0aG9kCiAgICBfc291bmRwb3MgLS0gdGhlIHBvc2l0aW9uIGluIHRoZSBhdWRpbyBzdHJlYW0KICAgICAgICAgICAgICBhdmFpbGFibGUgdGhyb3VnaCB0aGUgdGVsbCgpIG1ldGhvZCwgc2V0IHRocm91Z2ggdGhlCiAgICAgICAgICAgICAgc2V0cG9zKCkgbWV0aG9kCgogICAgVGhlc2UgdmFyaWFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgb25seToKICAgIF9mbXRfY2h1bmtfcmVhZCAtLSAxIGlmZiB0aGUgRk1UIGNodW5rIGhhcyBiZWVuIHJlYWQKICAgIF9kYXRhX3NlZWtfbmVlZGVkIC0tIDEgaWZmIHBvc2l0aW9uZWQgY29ycmVjdGx5IGluIGF1ZGlvCiAgICAgICAgICAgICAgZmlsZSBmb3IgcmVhZGZyYW1lcygpCiAgICBfZGF0YV9jaHVuayAtLSBpbnN0YW50aWF0aW9uIG9mIGEgY2h1bmsgY2xhc3MgZm9yIHRoZSBEQVRBIGNodW5rCiAgICBfZnJhbWVzaXplIC0tIHNpemUgb2Ygb25lIGZyYW1lIGluIHRoZSBmaWxlCiAgICAiIiIKCiAgICBkZWYgaW5pdGZwKHNlbGYsIGZpbGUpOgogICAgICAgIHNlbGYuX2NvbnZlcnQgPSBOb25lCiAgICAgICAgc2VsZi5fc291bmRwb3MgPSAwCiAgICAgICAgc2VsZi5fZmlsZSA9IF9DaHVuayhmaWxlLCBiaWdlbmRpYW4gPSAwKQogICAgICAgIGlmIHNlbGYuX2ZpbGUuZ2V0bmFtZSgpICE9IGInUklGRic6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdmaWxlIGRvZXMgbm90IHN0YXJ0IHdpdGggUklGRiBpZCcpCiAgICAgICAgaWYgc2VsZi5fZmlsZS5yZWFkKDQpICE9IGInV0FWRSc6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdub3QgYSBXQVZFIGZpbGUnKQogICAgICAgIHNlbGYuX2ZtdF9jaHVua19yZWFkID0gMAogICAgICAgIHNlbGYuX2RhdGFfY2h1bmsgPSBOb25lCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgc2VsZi5fZGF0YV9zZWVrX25lZWRlZCA9IDEKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY2h1bmsgPSBfQ2h1bmsoc2VsZi5fZmlsZSwgYmlnZW5kaWFuID0gMCkKICAgICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgY2h1bmtuYW1lID0gY2h1bmsuZ2V0bmFtZSgpCiAgICAgICAgICAgIGlmIGNodW5rbmFtZSA9PSBiJ2ZtdCAnOgogICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9mbXRfY2h1bmsoY2h1bmspCiAgICAgICAgICAgICAgICBzZWxmLl9mbXRfY2h1bmtfcmVhZCA9IDEKICAgICAgICAgICAgZWxpZiBjaHVua25hbWUgPT0gYidkYXRhJzoKICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9mbXRfY2h1bmtfcmVhZDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcignZGF0YSBjaHVuayBiZWZvcmUgZm10IGNodW5rJykKICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFfY2h1bmsgPSBjaHVuawogICAgICAgICAgICAgICAgc2VsZi5fbmZyYW1lcyA9IGNodW5rLmNodW5rc2l6ZSAvLyBzZWxmLl9mcmFtZXNpemUKICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFfc2Vla19uZWVkZWQgPSAwCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBjaHVuay5za2lwKCkKICAgICAgICBpZiBub3Qgc2VsZi5fZm10X2NodW5rX3JlYWQgb3Igbm90IHNlbGYuX2RhdGFfY2h1bms6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdmbXQgY2h1bmsgYW5kL29yIGRhdGEgY2h1bmsgbWlzc2luZycpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGYpOgogICAgICAgIHNlbGYuX2lfb3BlbmVkX3RoZV9maWxlID0gTm9uZQogICAgICAgIGlmIGlzaW5zdGFuY2UoZiwgc3RyKToKICAgICAgICAgICAgZiA9IGJ1aWx0aW5zLm9wZW4oZiwgJ3JiJykKICAgICAgICAgICAgc2VsZi5faV9vcGVuZWRfdGhlX2ZpbGUgPSBmCiAgICAgICAgIyBlbHNlLCBhc3N1bWUgaXQgaXMgYW4gb3BlbiBmaWxlIG9iamVjdCBhbHJlYWR5CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmluaXRmcChmKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgaWYgc2VsZi5faV9vcGVuZWRfdGhlX2ZpbGU6CiAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICAjCiAgICAjIFVzZXIgdmlzaWJsZSBtZXRob2RzLgogICAgIwogICAgZGVmIGdldGZwKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9maWxlCgogICAgZGVmIHJld2luZChzZWxmKToKICAgICAgICBzZWxmLl9kYXRhX3NlZWtfbmVlZGVkID0gMQogICAgICAgIHNlbGYuX3NvdW5kcG9zID0gMAoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLl9maWxlID0gTm9uZQogICAgICAgIGZpbGUgPSBzZWxmLl9pX29wZW5lZF90aGVfZmlsZQogICAgICAgIGlmIGZpbGU6CiAgICAgICAgICAgIHNlbGYuX2lfb3BlbmVkX3RoZV9maWxlID0gTm9uZQogICAgICAgICAgICBmaWxlLmNsb3NlKCkKCiAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc291bmRwb3MKCiAgICBkZWYgZ2V0bmNoYW5uZWxzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uY2hhbm5lbHMKCiAgICBkZWYgZ2V0bmZyYW1lcyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fbmZyYW1lcwoKICAgIGRlZiBnZXRzYW1wd2lkdGgoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NhbXB3aWR0aAoKICAgIGRlZiBnZXRmcmFtZXJhdGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZyYW1lcmF0ZQoKICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY29tcHR5cGUKCiAgICBkZWYgZ2V0Y29tcG5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXBuYW1lCgogICAgZGVmIGdldHBhcmFtcyhzZWxmKToKICAgICAgICByZXR1cm4gX3dhdmVfcGFyYW1zKHNlbGYuZ2V0bmNoYW5uZWxzKCksIHNlbGYuZ2V0c2FtcHdpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRmcmFtZXJhdGUoKSwgc2VsZi5nZXRuZnJhbWVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRjb21wdHlwZSgpLCBzZWxmLmdldGNvbXBuYW1lKCkpCgogICAgZGVmIGdldG1hcmtlcnMoc2VsZik6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgZ2V0bWFyayhzZWxmLCBpZCk6CiAgICAgICAgcmFpc2UgRXJyb3IoJ25vIG1hcmtzJykKCiAgICBkZWYgc2V0cG9zKHNlbGYsIHBvcyk6CiAgICAgICAgaWYgcG9zIDwgMCBvciBwb3MgPiBzZWxmLl9uZnJhbWVzOgogICAgICAgICAgICByYWlzZSBFcnJvcigncG9zaXRpb24gbm90IGluIHJhbmdlJykKICAgICAgICBzZWxmLl9zb3VuZHBvcyA9IHBvcwogICAgICAgIHNlbGYuX2RhdGFfc2Vla19uZWVkZWQgPSAxCgogICAgZGVmIHJlYWRmcmFtZXMoc2VsZiwgbmZyYW1lcyk6CiAgICAgICAgaWYgc2VsZi5fZGF0YV9zZWVrX25lZWRlZDoKICAgICAgICAgICAgc2VsZi5fZGF0YV9jaHVuay5zZWVrKDAsIDApCiAgICAgICAgICAgIHBvcyA9IHNlbGYuX3NvdW5kcG9zICogc2VsZi5fZnJhbWVzaXplCiAgICAgICAgICAgIGlmIHBvczoKICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFfY2h1bmsuc2Vlayhwb3MsIDApCiAgICAgICAgICAgIHNlbGYuX2RhdGFfc2Vla19uZWVkZWQgPSAwCiAgICAgICAgaWYgbmZyYW1lcyA9PSAwOgogICAgICAgICAgICByZXR1cm4gYicnCiAgICAgICAgZGF0YSA9IHNlbGYuX2RhdGFfY2h1bmsucmVhZChuZnJhbWVzICogc2VsZi5fZnJhbWVzaXplKQogICAgICAgIGlmIHNlbGYuX3NhbXB3aWR0aCAhPSAxIGFuZCBzeXMuYnl0ZW9yZGVyID09ICdiaWcnOgogICAgICAgICAgICBkYXRhID0gX2J5dGVzd2FwKGRhdGEsIHNlbGYuX3NhbXB3aWR0aCkKICAgICAgICBpZiBzZWxmLl9jb252ZXJ0IGFuZCBkYXRhOgogICAgICAgICAgICBkYXRhID0gc2VsZi5fY29udmVydChkYXRhKQogICAgICAgIHNlbGYuX3NvdW5kcG9zID0gc2VsZi5fc291bmRwb3MgKyBsZW4oZGF0YSkgLy8gKHNlbGYuX25jaGFubmVscyAqIHNlbGYuX3NhbXB3aWR0aCkKICAgICAgICByZXR1cm4gZGF0YQoKICAgICMKICAgICMgSW50ZXJuYWwgbWV0aG9kcy4KICAgICMKCiAgICBkZWYgX3JlYWRfZm10X2NodW5rKHNlbGYsIGNodW5rKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdGb3JtYXRUYWcsIHNlbGYuX25jaGFubmVscywgc2VsZi5fZnJhbWVyYXRlLCBkd0F2Z0J5dGVzUGVyU2VjLCB3QmxvY2tBbGlnbiA9IHN0cnVjdC51bnBhY2tfZnJvbSgnPEhITExIJywgY2h1bmsucmVhZCgxNCkpCiAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IgZnJvbSBOb25lCiAgICAgICAgaWYgd0Zvcm1hdFRhZyA9PSBXQVZFX0ZPUk1BVF9QQ006CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNhbXB3aWR0aCA9IHN0cnVjdC51bnBhY2tfZnJvbSgnPEgnLCBjaHVuay5yZWFkKDIpKVswXQogICAgICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IgZnJvbSBOb25lCiAgICAgICAgICAgIHNlbGYuX3NhbXB3aWR0aCA9IChzYW1wd2lkdGggKyA3KSAvLyA4CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9zYW1wd2lkdGg6CiAgICAgICAgICAgICAgICByYWlzZSBFcnJvcignYmFkIHNhbXBsZSB3aWR0aCcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ3Vua25vd24gZm9ybWF0OiAlcicgJSAod0Zvcm1hdFRhZywpKQogICAgICAgIGlmIG5vdCBzZWxmLl9uY2hhbm5lbHM6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdiYWQgIyBvZiBjaGFubmVscycpCiAgICAgICAgc2VsZi5fZnJhbWVzaXplID0gc2VsZi5fbmNoYW5uZWxzICogc2VsZi5fc2FtcHdpZHRoCiAgICAgICAgc2VsZi5fY29tcHR5cGUgPSAnTk9ORScKICAgICAgICBzZWxmLl9jb21wbmFtZSA9ICdub3QgY29tcHJlc3NlZCcKCmNsYXNzIFdhdmVfd3JpdGU6CiAgICAiIiJWYXJpYWJsZXMgdXNlZCBpbiB0aGlzIGNsYXNzOgoKICAgIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNlciBzZXR0YWJsZSB0aHJvdWdoIGFwcHJvcHJpYXRlIG1ldGhvZHMKICAgIG9mIHRoaXMgY2xhc3M6CiAgICBfZmlsZSAtLSB0aGUgb3BlbiBmaWxlIHdpdGggbWV0aG9kcyB3cml0ZSgpLCBjbG9zZSgpLCB0ZWxsKCksIHNlZWsoKQogICAgICAgICAgICAgIHNldCB0aHJvdWdoIHRoZSBfX2luaXRfXygpIG1ldGhvZAogICAgX2NvbXB0eXBlIC0tIHRoZSBBSUZGLUMgY29tcHJlc3Npb24gdHlwZSAoJ05PTkUnIGluIEFJRkYpCiAgICAgICAgICAgICAgc2V0IHRocm91Z2ggdGhlIHNldGNvbXB0eXBlKCkgb3Igc2V0cGFyYW1zKCkgbWV0aG9kCiAgICBfY29tcG5hbWUgLS0gdGhlIGh1bWFuLXJlYWRhYmxlIEFJRkYtQyBjb21wcmVzc2lvbiB0eXBlCiAgICAgICAgICAgICAgc2V0IHRocm91Z2ggdGhlIHNldGNvbXB0eXBlKCkgb3Igc2V0cGFyYW1zKCkgbWV0aG9kCiAgICBfbmNoYW5uZWxzIC0tIHRoZSBudW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMKICAgICAgICAgICAgICBzZXQgdGhyb3VnaCB0aGUgc2V0bmNoYW5uZWxzKCkgb3Igc2V0cGFyYW1zKCkgbWV0aG9kCiAgICBfc2FtcHdpZHRoIC0tIHRoZSBudW1iZXIgb2YgYnl0ZXMgcGVyIGF1ZGlvIHNhbXBsZQogICAgICAgICAgICAgIHNldCB0aHJvdWdoIHRoZSBzZXRzYW1wd2lkdGgoKSBvciBzZXRwYXJhbXMoKSBtZXRob2QKICAgIF9mcmFtZXJhdGUgLS0gdGhlIHNhbXBsaW5nIGZyZXF1ZW5jeQogICAgICAgICAgICAgIHNldCB0aHJvdWdoIHRoZSBzZXRmcmFtZXJhdGUoKSBvciBzZXRwYXJhbXMoKSBtZXRob2QKICAgIF9uZnJhbWVzIC0tIHRoZSBudW1iZXIgb2YgYXVkaW8gZnJhbWVzIHdyaXR0ZW4gdG8gdGhlIGhlYWRlcgogICAgICAgICAgICAgIHNldCB0aHJvdWdoIHRoZSBzZXRuZnJhbWVzKCkgb3Igc2V0cGFyYW1zKCkgbWV0aG9kCgogICAgVGhlc2UgdmFyaWFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgb25seToKICAgIF9kYXRhbGVuZ3RoIC0tIHRoZSBzaXplIG9mIHRoZSBhdWRpbyBzYW1wbGVzIHdyaXR0ZW4gdG8gdGhlIGhlYWRlcgogICAgX25mcmFtZXN3cml0dGVuIC0tIHRoZSBudW1iZXIgb2YgZnJhbWVzIGFjdHVhbGx5IHdyaXR0ZW4KICAgIF9kYXRhd3JpdHRlbiAtLSB0aGUgc2l6ZSBvZiB0aGUgYXVkaW8gc2FtcGxlcyBhY3R1YWxseSB3cml0dGVuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZik6CiAgICAgICAgc2VsZi5faV9vcGVuZWRfdGhlX2ZpbGUgPSBOb25lCiAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBzdHIpOgogICAgICAgICAgICBmID0gYnVpbHRpbnMub3BlbihmLCAnd2InKQogICAgICAgICAgICBzZWxmLl9pX29wZW5lZF90aGVfZmlsZSA9IGYKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuaW5pdGZwKGYpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBpZiBzZWxmLl9pX29wZW5lZF90aGVfZmlsZToKICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICByYWlzZQoKICAgIGRlZiBpbml0ZnAoc2VsZiwgZmlsZSk6CiAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGUKICAgICAgICBzZWxmLl9jb252ZXJ0ID0gTm9uZQogICAgICAgIHNlbGYuX25jaGFubmVscyA9IDAKICAgICAgICBzZWxmLl9zYW1wd2lkdGggPSAwCiAgICAgICAgc2VsZi5fZnJhbWVyYXRlID0gMAogICAgICAgIHNlbGYuX25mcmFtZXMgPSAwCiAgICAgICAgc2VsZi5fbmZyYW1lc3dyaXR0ZW4gPSAwCiAgICAgICAgc2VsZi5fZGF0YXdyaXR0ZW4gPSAwCiAgICAgICAgc2VsZi5fZGF0YWxlbmd0aCA9IDAKICAgICAgICBzZWxmLl9oZWFkZXJ3cml0dGVuID0gRmFsc2UKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICAjCiAgICAjIFVzZXIgdmlzaWJsZSBtZXRob2RzLgogICAgIwogICAgZGVmIHNldG5jaGFubmVscyhzZWxmLCBuY2hhbm5lbHMpOgogICAgICAgIGlmIHNlbGYuX2RhdGF3cml0dGVuOgogICAgICAgICAgICByYWlzZSBFcnJvcignY2Fubm90IGNoYW5nZSBwYXJhbWV0ZXJzIGFmdGVyIHN0YXJ0aW5nIHRvIHdyaXRlJykKICAgICAgICBpZiBuY2hhbm5lbHMgPCAxOgogICAgICAgICAgICByYWlzZSBFcnJvcignYmFkICMgb2YgY2hhbm5lbHMnKQogICAgICAgIHNlbGYuX25jaGFubmVscyA9IG5jaGFubmVscwoKICAgIGRlZiBnZXRuY2hhbm5lbHMoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuX25jaGFubmVsczoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ251bWJlciBvZiBjaGFubmVscyBub3Qgc2V0JykKICAgICAgICByZXR1cm4gc2VsZi5fbmNoYW5uZWxzCgogICAgZGVmIHNldHNhbXB3aWR0aChzZWxmLCBzYW1wd2lkdGgpOgogICAgICAgIGlmIHNlbGYuX2RhdGF3cml0dGVuOgogICAgICAgICAgICByYWlzZSBFcnJvcignY2Fubm90IGNoYW5nZSBwYXJhbWV0ZXJzIGFmdGVyIHN0YXJ0aW5nIHRvIHdyaXRlJykKICAgICAgICBpZiBzYW1wd2lkdGggPCAxIG9yIHNhbXB3aWR0aCA+IDQ6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdiYWQgc2FtcGxlIHdpZHRoJykKICAgICAgICBzZWxmLl9zYW1wd2lkdGggPSBzYW1wd2lkdGgKCiAgICBkZWYgZ2V0c2FtcHdpZHRoKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9zYW1wd2lkdGg6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdzYW1wbGUgd2lkdGggbm90IHNldCcpCiAgICAgICAgcmV0dXJuIHNlbGYuX3NhbXB3aWR0aAoKICAgIGRlZiBzZXRmcmFtZXJhdGUoc2VsZiwgZnJhbWVyYXRlKToKICAgICAgICBpZiBzZWxmLl9kYXRhd3JpdHRlbjoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2Nhbm5vdCBjaGFuZ2UgcGFyYW1ldGVycyBhZnRlciBzdGFydGluZyB0byB3cml0ZScpCiAgICAgICAgaWYgZnJhbWVyYXRlIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdiYWQgZnJhbWUgcmF0ZScpCiAgICAgICAgc2VsZi5fZnJhbWVyYXRlID0gaW50KHJvdW5kKGZyYW1lcmF0ZSkpCgogICAgZGVmIGdldGZyYW1lcmF0ZShzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fZnJhbWVyYXRlOgogICAgICAgICAgICByYWlzZSBFcnJvcignZnJhbWUgcmF0ZSBub3Qgc2V0JykKICAgICAgICByZXR1cm4gc2VsZi5fZnJhbWVyYXRlCgogICAgZGVmIHNldG5mcmFtZXMoc2VsZiwgbmZyYW1lcyk6CiAgICAgICAgaWYgc2VsZi5fZGF0YXdyaXR0ZW46CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdjYW5ub3QgY2hhbmdlIHBhcmFtZXRlcnMgYWZ0ZXIgc3RhcnRpbmcgdG8gd3JpdGUnKQogICAgICAgIHNlbGYuX25mcmFtZXMgPSBuZnJhbWVzCgogICAgZGVmIGdldG5mcmFtZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX25mcmFtZXN3cml0dGVuCgogICAgZGVmIHNldGNvbXB0eXBlKHNlbGYsIGNvbXB0eXBlLCBjb21wbmFtZSk6CiAgICAgICAgaWYgc2VsZi5fZGF0YXdyaXR0ZW46CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCdjYW5ub3QgY2hhbmdlIHBhcmFtZXRlcnMgYWZ0ZXIgc3RhcnRpbmcgdG8gd3JpdGUnKQogICAgICAgIGlmIGNvbXB0eXBlIG5vdCBpbiAoJ05PTkUnLCk6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCd1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiB0eXBlJykKICAgICAgICBzZWxmLl9jb21wdHlwZSA9IGNvbXB0eXBlCiAgICAgICAgc2VsZi5fY29tcG5hbWUgPSBjb21wbmFtZQoKICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY29tcHR5cGUKCiAgICBkZWYgZ2V0Y29tcG5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXBuYW1lCgogICAgZGVmIHNldHBhcmFtcyhzZWxmLCBwYXJhbXMpOgogICAgICAgIG5jaGFubmVscywgc2FtcHdpZHRoLCBmcmFtZXJhdGUsIG5mcmFtZXMsIGNvbXB0eXBlLCBjb21wbmFtZSA9IHBhcmFtcwogICAgICAgIGlmIHNlbGYuX2RhdGF3cml0dGVuOgogICAgICAgICAgICByYWlzZSBFcnJvcignY2Fubm90IGNoYW5nZSBwYXJhbWV0ZXJzIGFmdGVyIHN0YXJ0aW5nIHRvIHdyaXRlJykKICAgICAgICBzZWxmLnNldG5jaGFubmVscyhuY2hhbm5lbHMpCiAgICAgICAgc2VsZi5zZXRzYW1wd2lkdGgoc2FtcHdpZHRoKQogICAgICAgIHNlbGYuc2V0ZnJhbWVyYXRlKGZyYW1lcmF0ZSkKICAgICAgICBzZWxmLnNldG5mcmFtZXMobmZyYW1lcykKICAgICAgICBzZWxmLnNldGNvbXB0eXBlKGNvbXB0eXBlLCBjb21wbmFtZSkKCiAgICBkZWYgZ2V0cGFyYW1zKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9uY2hhbm5lbHMgb3Igbm90IHNlbGYuX3NhbXB3aWR0aCBvciBub3Qgc2VsZi5fZnJhbWVyYXRlOgogICAgICAgICAgICByYWlzZSBFcnJvcignbm90IGFsbCBwYXJhbWV0ZXJzIHNldCcpCiAgICAgICAgcmV0dXJuIF93YXZlX3BhcmFtcyhzZWxmLl9uY2hhbm5lbHMsIHNlbGYuX3NhbXB3aWR0aCwgc2VsZi5fZnJhbWVyYXRlLAogICAgICAgICAgICAgIHNlbGYuX25mcmFtZXMsIHNlbGYuX2NvbXB0eXBlLCBzZWxmLl9jb21wbmFtZSkKCiAgICBkZWYgc2V0bWFyayhzZWxmLCBpZCwgcG9zLCBuYW1lKToKICAgICAgICByYWlzZSBFcnJvcignc2V0bWFyaygpIG5vdCBzdXBwb3J0ZWQnKQoKICAgIGRlZiBnZXRtYXJrKHNlbGYsIGlkKToKICAgICAgICByYWlzZSBFcnJvcignbm8gbWFya3MnKQoKICAgIGRlZiBnZXRtYXJrZXJzKHNlbGYpOgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX25mcmFtZXN3cml0dGVuCgogICAgZGVmIHdyaXRlZnJhbWVzcmF3KHNlbGYsIGRhdGEpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5KSk6CiAgICAgICAgICAgIGRhdGEgPSBtZW1vcnl2aWV3KGRhdGEpLmNhc3QoJ0InKQogICAgICAgIHNlbGYuX2Vuc3VyZV9oZWFkZXJfd3JpdHRlbihsZW4oZGF0YSkpCiAgICAgICAgbmZyYW1lcyA9IGxlbihkYXRhKSAvLyAoc2VsZi5fc2FtcHdpZHRoICogc2VsZi5fbmNoYW5uZWxzKQogICAgICAgIGlmIHNlbGYuX2NvbnZlcnQ6CiAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb252ZXJ0KGRhdGEpCiAgICAgICAgaWYgc2VsZi5fc2FtcHdpZHRoICE9IDEgYW5kIHN5cy5ieXRlb3JkZXIgPT0gJ2JpZyc6CiAgICAgICAgICAgIGRhdGEgPSBfYnl0ZXN3YXAoZGF0YSwgc2VsZi5fc2FtcHdpZHRoKQogICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoZGF0YSkKICAgICAgICBzZWxmLl9kYXRhd3JpdHRlbiArPSBsZW4oZGF0YSkKICAgICAgICBzZWxmLl9uZnJhbWVzd3JpdHRlbiA9IHNlbGYuX25mcmFtZXN3cml0dGVuICsgbmZyYW1lcwoKICAgIGRlZiB3cml0ZWZyYW1lcyhzZWxmLCBkYXRhKToKICAgICAgICBzZWxmLndyaXRlZnJhbWVzcmF3KGRhdGEpCiAgICAgICAgaWYgc2VsZi5fZGF0YWxlbmd0aCAhPSBzZWxmLl9kYXRhd3JpdHRlbjoKICAgICAgICAgICAgc2VsZi5fcGF0Y2hoZWFkZXIoKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGU6CiAgICAgICAgICAgICAgICBzZWxmLl9lbnN1cmVfaGVhZGVyX3dyaXR0ZW4oMCkKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RhdGFsZW5ndGggIT0gc2VsZi5fZGF0YXdyaXR0ZW46CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGF0Y2hoZWFkZXIoKQogICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5mbHVzaCgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKICAgICAgICAgICAgZmlsZSA9IHNlbGYuX2lfb3BlbmVkX3RoZV9maWxlCiAgICAgICAgICAgIGlmIGZpbGU6CiAgICAgICAgICAgICAgICBzZWxmLl9pX29wZW5lZF90aGVfZmlsZSA9IE5vbmUKICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQoKICAgICMKICAgICMgSW50ZXJuYWwgbWV0aG9kcy4KICAgICMKCiAgICBkZWYgX2Vuc3VyZV9oZWFkZXJfd3JpdHRlbihzZWxmLCBkYXRhc2l6ZSk6CiAgICAgICAgaWYgbm90IHNlbGYuX2hlYWRlcndyaXR0ZW46CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9uY2hhbm5lbHM6CiAgICAgICAgICAgICAgICByYWlzZSBFcnJvcignIyBjaGFubmVscyBub3Qgc3BlY2lmaWVkJykKICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NhbXB3aWR0aDoKICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCdzYW1wbGUgd2lkdGggbm90IHNwZWNpZmllZCcpCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9mcmFtZXJhdGU6CiAgICAgICAgICAgICAgICByYWlzZSBFcnJvcignc2FtcGxpbmcgcmF0ZSBub3Qgc3BlY2lmaWVkJykKICAgICAgICAgICAgc2VsZi5fd3JpdGVfaGVhZGVyKGRhdGFzaXplKQoKICAgIGRlZiBfd3JpdGVfaGVhZGVyKHNlbGYsIGluaXRsZW5ndGgpOgogICAgICAgIGFzc2VydCBub3Qgc2VsZi5faGVhZGVyd3JpdHRlbgogICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoYidSSUZGJykKICAgICAgICBpZiBub3Qgc2VsZi5fbmZyYW1lczoKICAgICAgICAgICAgc2VsZi5fbmZyYW1lcyA9IGluaXRsZW5ndGggLy8gKHNlbGYuX25jaGFubmVscyAqIHNlbGYuX3NhbXB3aWR0aCkKICAgICAgICBzZWxmLl9kYXRhbGVuZ3RoID0gc2VsZi5fbmZyYW1lcyAqIHNlbGYuX25jaGFubmVscyAqIHNlbGYuX3NhbXB3aWR0aAogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fZm9ybV9sZW5ndGhfcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgICAgc2VsZi5fZm9ybV9sZW5ndGhfcG9zID0gTm9uZQogICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoc3RydWN0LnBhY2soJzxMNHM0c0xISExMSEg0cycsCiAgICAgICAgICAgIDM2ICsgc2VsZi5fZGF0YWxlbmd0aCwgYidXQVZFJywgYidmbXQgJywgMTYsCiAgICAgICAgICAgIFdBVkVfRk9STUFUX1BDTSwgc2VsZi5fbmNoYW5uZWxzLCBzZWxmLl9mcmFtZXJhdGUsCiAgICAgICAgICAgIHNlbGYuX25jaGFubmVscyAqIHNlbGYuX2ZyYW1lcmF0ZSAqIHNlbGYuX3NhbXB3aWR0aCwKICAgICAgICAgICAgc2VsZi5fbmNoYW5uZWxzICogc2VsZi5fc2FtcHdpZHRoLAogICAgICAgICAgICBzZWxmLl9zYW1wd2lkdGggKiA4LCBiJ2RhdGEnKSkKICAgICAgICBpZiBzZWxmLl9mb3JtX2xlbmd0aF9wb3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2RhdGFfbGVuZ3RoX3BvcyA9IHNlbGYuX2ZpbGUudGVsbCgpCiAgICAgICAgc2VsZi5fZmlsZS53cml0ZShzdHJ1Y3QucGFjaygnPEwnLCBzZWxmLl9kYXRhbGVuZ3RoKSkKICAgICAgICBzZWxmLl9oZWFkZXJ3cml0dGVuID0gVHJ1ZQoKICAgIGRlZiBfcGF0Y2hoZWFkZXIoc2VsZik6CiAgICAgICAgYXNzZXJ0IHNlbGYuX2hlYWRlcndyaXR0ZW4KICAgICAgICBpZiBzZWxmLl9kYXRhd3JpdHRlbiA9PSBzZWxmLl9kYXRhbGVuZ3RoOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBjdXJwb3MgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgIHNlbGYuX2ZpbGUuc2VlayhzZWxmLl9mb3JtX2xlbmd0aF9wb3MsIDApCiAgICAgICAgc2VsZi5fZmlsZS53cml0ZShzdHJ1Y3QucGFjaygnPEwnLCAzNiArIHNlbGYuX2RhdGF3cml0dGVuKSkKICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fZGF0YV9sZW5ndGhfcG9zLCAwKQogICAgICAgIHNlbGYuX2ZpbGUud3JpdGUoc3RydWN0LnBhY2soJzxMJywgc2VsZi5fZGF0YXdyaXR0ZW4pKQogICAgICAgIHNlbGYuX2ZpbGUuc2VlayhjdXJwb3MsIDApCiAgICAgICAgc2VsZi5fZGF0YWxlbmd0aCA9IHNlbGYuX2RhdGF3cml0dGVuCgpkZWYgb3BlbihmLCBtb2RlPU5vbmUpOgogICAgaWYgbW9kZSBpcyBOb25lOgogICAgICAgIGlmIGhhc2F0dHIoZiwgJ21vZGUnKToKICAgICAgICAgICAgbW9kZSA9IGYubW9kZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1vZGUgPSAncmInCiAgICBpZiBtb2RlIGluICgncicsICdyYicpOgogICAgICAgIHJldHVybiBXYXZlX3JlYWQoZikKICAgIGVsaWYgbW9kZSBpbiAoJ3cnLCAnd2InKToKICAgICAgICByZXR1cm4gV2F2ZV93cml0ZShmKQogICAgZWxzZToKICAgICAgICByYWlzZSBFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ3JiJywgJ3cnLCBvciAnd2InIikKUEsDBBQAAAAAAAIgo1bshIh4CVQAAAlUAAAKAAAAd2Vha3JlZi5weSIiIldlYWsgcmVmZXJlbmNlIHN1cHBvcnQgZm9yIFB5dGhvbi4KClRoaXMgbW9kdWxlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIFBFUCAyMDU6CgpodHRwczovL3BlcHMucHl0aG9uLm9yZy9wZXAtMDIwNS8KIiIiCgojIE5hbWluZyBjb252ZW50aW9uOiBWYXJpYWJsZXMgbmFtZWQgIndyIiBhcmUgd2VhayByZWZlcmVuY2Ugb2JqZWN0czsKIyB0aGV5IGFyZSBjYWxsZWQgdGhpcyBpbnN0ZWFkIG9mICJyZWYiIHRvIGF2b2lkIG5hbWUgY29sbGlzaW9ucyB3aXRoCiMgdGhlIG1vZHVsZS1nbG9iYWwgcmVmKCkgZnVuY3Rpb24gaW1wb3J0ZWQgZnJvbSBfd2Vha3JlZi4KCmZyb20gX3dlYWtyZWYgaW1wb3J0ICgKICAgICBnZXR3ZWFrcmVmY291bnQsCiAgICAgZ2V0d2Vha3JlZnMsCiAgICAgcmVmLAogICAgIHByb3h5LAogICAgIENhbGxhYmxlUHJveHlUeXBlLAogICAgIFByb3h5VHlwZSwKICAgICBSZWZlcmVuY2VUeXBlLAogICAgIF9yZW1vdmVfZGVhZF93ZWFrcmVmKQoKZnJvbSBfd2Vha3JlZnNldCBpbXBvcnQgV2Vha1NldCwgX0l0ZXJhdGlvbkd1YXJkCgppbXBvcnQgX2NvbGxlY3Rpb25zX2FiYyAgIyBJbXBvcnQgYWZ0ZXIgX3dlYWtyZWYgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0LgppbXBvcnQgc3lzCmltcG9ydCBpdGVydG9vbHMKClByb3h5VHlwZXMgPSAoUHJveHlUeXBlLCBDYWxsYWJsZVByb3h5VHlwZSkKCl9fYWxsX18gPSBbInJlZiIsICJwcm94eSIsICJnZXR3ZWFrcmVmY291bnQiLCAiZ2V0d2Vha3JlZnMiLAogICAgICAgICAgICJXZWFrS2V5RGljdGlvbmFyeSIsICJSZWZlcmVuY2VUeXBlIiwgIlByb3h5VHlwZSIsCiAgICAgICAgICAgIkNhbGxhYmxlUHJveHlUeXBlIiwgIlByb3h5VHlwZXMiLCAiV2Vha1ZhbHVlRGljdGlvbmFyeSIsCiAgICAgICAgICAgIldlYWtTZXQiLCAiV2Vha01ldGhvZCIsICJmaW5hbGl6ZSJdCgoKX2NvbGxlY3Rpb25zX2FiYy5NdXRhYmxlU2V0LnJlZ2lzdGVyKFdlYWtTZXQpCgpjbGFzcyBXZWFrTWV0aG9kKHJlZik6CiAgICAiIiIKICAgIEEgY3VzdG9tIGB3ZWFrcmVmLnJlZmAgc3ViY2xhc3Mgd2hpY2ggc2ltdWxhdGVzIGEgd2VhayByZWZlcmVuY2UgdG8KICAgIGEgYm91bmQgbWV0aG9kLCB3b3JraW5nIGFyb3VuZCB0aGUgbGlmZXRpbWUgcHJvYmxlbSBvZiBib3VuZCBtZXRob2RzLgogICAgIiIiCgogICAgX19zbG90c19fID0gIl9mdW5jX3JlZiIsICJfbWV0aF90eXBlIiwgIl9hbGl2ZSIsICJfX3dlYWtyZWZfXyIKCiAgICBkZWYgX19uZXdfXyhjbHMsIG1ldGgsIGNhbGxiYWNrPU5vbmUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgb2JqID0gbWV0aC5fX3NlbGZfXwogICAgICAgICAgICBmdW5jID0gbWV0aC5fX2Z1bmNfXwogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYSBib3VuZCBtZXRob2QsIG5vdCB7fSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodHlwZShtZXRoKSkpIGZyb20gTm9uZQogICAgICAgIGRlZiBfY2IoYXJnKToKICAgICAgICAgICAgIyBUaGUgc2VsZi13ZWFrcmVmIHRyaWNrIGlzIG5lZWRlZCB0byBhdm9pZCBjcmVhdGluZyBhIHJlZmVyZW5jZQogICAgICAgICAgICAjIGN5Y2xlLgogICAgICAgICAgICBzZWxmID0gc2VsZl93cigpCiAgICAgICAgICAgIGlmIHNlbGYuX2FsaXZlOgogICAgICAgICAgICAgICAgc2VsZi5fYWxpdmUgPSBGYWxzZQogICAgICAgICAgICAgICAgaWYgY2FsbGJhY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc2VsZikKICAgICAgICBzZWxmID0gcmVmLl9fbmV3X18oY2xzLCBvYmosIF9jYikKICAgICAgICBzZWxmLl9mdW5jX3JlZiA9IHJlZihmdW5jLCBfY2IpCiAgICAgICAgc2VsZi5fbWV0aF90eXBlID0gdHlwZShtZXRoKQogICAgICAgIHNlbGYuX2FsaXZlID0gVHJ1ZQogICAgICAgIHNlbGZfd3IgPSByZWYoc2VsZikKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKICAgICAgICBvYmogPSBzdXBlcigpLl9fY2FsbF9fKCkKICAgICAgICBmdW5jID0gc2VsZi5fZnVuY19yZWYoKQogICAgICAgIGlmIG9iaiBpcyBOb25lIG9yIGZ1bmMgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5fbWV0aF90eXBlKGZ1bmMsIG9iaikKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBXZWFrTWV0aG9kKToKICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsaXZlIG9yIG5vdCBvdGhlci5fYWxpdmU6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZiBpcyBvdGhlcgogICAgICAgICAgICByZXR1cm4gcmVmLl9fZXFfXyhzZWxmLCBvdGhlcikgYW5kIHNlbGYuX2Z1bmNfcmVmID09IG90aGVyLl9mdW5jX3JlZgogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFdlYWtNZXRob2QpOgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fYWxpdmUgb3Igbm90IG90aGVyLl9hbGl2ZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmIGlzIG5vdCBvdGhlcgogICAgICAgICAgICByZXR1cm4gcmVmLl9fbmVfXyhzZWxmLCBvdGhlcikgb3Igc2VsZi5fZnVuY19yZWYgIT0gb3RoZXIuX2Z1bmNfcmVmCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgX19oYXNoX18gPSByZWYuX19oYXNoX18KCgpjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5KF9jb2xsZWN0aW9uc19hYmMuTXV0YWJsZU1hcHBpbmcpOgogICAgIiIiTWFwcGluZyBjbGFzcyB0aGF0IHJlZmVyZW5jZXMgdmFsdWVzIHdlYWtseS4KCiAgICBFbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5IHdpbGwgYmUgZGlzY2FyZGVkIHdoZW4gbm8gc3Ryb25nCiAgICByZWZlcmVuY2UgdG8gdGhlIHZhbHVlIGV4aXN0cyBhbnltb3JlCiAgICAiIiIKICAgICMgV2UgaW5oZXJpdCB0aGUgY29uc3RydWN0b3Igd2l0aG91dCB3b3JyeWluZyBhYm91dCB0aGUgaW5wdXQKICAgICMgZGljdGlvbmFyeTsgc2luY2UgaXQgdXNlcyBvdXIgLnVwZGF0ZSgpIG1ldGhvZCwgd2UgZ2V0IHRoZSByaWdodAogICAgIyBjaGVja3MgKGlmIHRoZSBvdGhlciBkaWN0aW9uYXJ5IGlzIGEgV2Vha1ZhbHVlRGljdGlvbmFyeSwKICAgICMgb2JqZWN0cyBhcmUgdW53cmFwcGVkIG9uIHRoZSB3YXkgb3V0LCBhbmQgd2UgYWx3YXlzIHdyYXAgb24gdGhlCiAgICAjIHdheSBpbikuCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG90aGVyPSgpLCAvLCAqKmt3KToKICAgICAgICBkZWYgcmVtb3ZlKHdyLCBzZWxmcmVmPXJlZihzZWxmKSwgX2F0b21pY19yZW1vdmFsPV9yZW1vdmVfZGVhZF93ZWFrcmVmKToKICAgICAgICAgICAgc2VsZiA9IHNlbGZyZWYoKQogICAgICAgICAgICBpZiBzZWxmIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgc2VsZi5faXRlcmF0aW5nOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMuYXBwZW5kKHdyLmtleSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBBdG9taWMgcmVtb3ZhbCBpcyBuZWNlc3Nhcnkgc2luY2UgdGhpcyBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICMgY2FuIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSBieSB0aGUgR0MKICAgICAgICAgICAgICAgICAgICBfYXRvbWljX3JlbW92YWwoc2VsZi5kYXRhLCB3ci5rZXkpCiAgICAgICAgc2VsZi5fcmVtb3ZlID0gcmVtb3ZlCiAgICAgICAgIyBBIGxpc3Qgb2Yga2V5cyB0byBiZSByZW1vdmVkCiAgICAgICAgc2VsZi5fcGVuZGluZ19yZW1vdmFscyA9IFtdCiAgICAgICAgc2VsZi5faXRlcmF0aW5nID0gc2V0KCkKICAgICAgICBzZWxmLmRhdGEgPSB7fQogICAgICAgIHNlbGYudXBkYXRlKG90aGVyLCAqKmt3KQoKICAgIGRlZiBfY29tbWl0X3JlbW92YWxzKHNlbGYsIF9hdG9taWNfcmVtb3ZhbD1fcmVtb3ZlX2RlYWRfd2Vha3JlZik6CiAgICAgICAgcG9wID0gc2VsZi5fcGVuZGluZ19yZW1vdmFscy5wb3AKICAgICAgICBkID0gc2VsZi5kYXRhCiAgICAgICAgIyBXZSBzaG91bGRuJ3QgZW5jb3VudGVyIGFueSBLZXlFcnJvciwgYmVjYXVzZSB0aGlzIG1ldGhvZCBzaG91bGQKICAgICAgICAjIGFsd2F5cyBiZSBjYWxsZWQgKmJlZm9yZSogbXV0YXRpbmcgdGhlIGRpY3QuCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAga2V5ID0gcG9wKCkKICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgX2F0b21pY19yZW1vdmFsKGQsIGtleSkKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgIG8gPSBzZWxmLmRhdGFba2V5XSgpCiAgICAgICAgaWYgbyBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIG8KCiAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgIGRlbCBzZWxmLmRhdGFba2V5XQoKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvID0gc2VsZi5kYXRhW2tleV0oKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIG8gaXMgbm90IE5vbmUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8JXMgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGlkKHNlbGYpKQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgIHNlbGYuZGF0YVtrZXldID0gS2V5ZWRSZWYodmFsdWUsIHNlbGYuX3JlbW92ZSwga2V5KQoKICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgbmV3ID0gV2Vha1ZhbHVlRGljdGlvbmFyeSgpCiAgICAgICAgd2l0aCBfSXRlcmF0aW9uR3VhcmQoc2VsZik6CiAgICAgICAgICAgIGZvciBrZXksIHdyIGluIHNlbGYuZGF0YS5pdGVtcygpOgogICAgICAgICAgICAgICAgbyA9IHdyKCkKICAgICAgICAgICAgICAgIGlmIG8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgbmV3W2tleV0gPSBvCiAgICAgICAgcmV0dXJuIG5ldwoKICAgIF9fY29weV9fID0gY29weQoKICAgIGRlZiBfX2RlZXBjb3B5X18oc2VsZiwgbWVtbyk6CiAgICAgICAgZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgbmV3ID0gc2VsZi5fX2NsYXNzX18oKQogICAgICAgIHdpdGggX0l0ZXJhdGlvbkd1YXJkKHNlbGYpOgogICAgICAgICAgICBmb3Iga2V5LCB3ciBpbiBzZWxmLmRhdGEuaXRlbXMoKToKICAgICAgICAgICAgICAgIG8gPSB3cigpCiAgICAgICAgICAgICAgICBpZiBvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIG5ld1tkZWVwY29weShrZXksIG1lbW8pXSA9IG8KICAgICAgICByZXR1cm4gbmV3CgogICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19yZW1vdmFsczoKICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdyID0gc2VsZi5kYXRhW2tleV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgbyA9IHdyKCkKICAgICAgICAgICAgaWYgbyBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbgogICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBvCgogICAgZGVmIGl0ZW1zKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgd2l0aCBfSXRlcmF0aW9uR3VhcmQoc2VsZik6CiAgICAgICAgICAgIGZvciBrLCB3ciBpbiBzZWxmLmRhdGEuaXRlbXMoKToKICAgICAgICAgICAgICAgIHYgPSB3cigpCiAgICAgICAgICAgICAgICBpZiB2IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGssIHYKCiAgICBkZWYga2V5cyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgIHdpdGggX0l0ZXJhdGlvbkd1YXJkKHNlbGYpOgogICAgICAgICAgICBmb3Igaywgd3IgaW4gc2VsZi5kYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiB3cigpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGsKCiAgICBfX2l0ZXJfXyA9IGtleXMKCiAgICBkZWYgaXRlcnZhbHVlcmVmcyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3IgdGhhdCB5aWVsZHMgdGhlIHdlYWsgcmVmZXJlbmNlcyB0byB0aGUgdmFsdWVzLgoKICAgICAgICBUaGUgcmVmZXJlbmNlcyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgJ2xpdmUnIGF0IHRoZSB0aW1lCiAgICAgICAgdGhleSBhcmUgdXNlZCwgc28gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSByZWZlcmVuY2VzIG5lZWRzCiAgICAgICAgdG8gYmUgY2hlY2tlZCBiZWZvcmUgYmVpbmcgdXNlZC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQKICAgICAgICBjcmVhdGluZyByZWZlcmVuY2VzIHRoYXQgd2lsbCBjYXVzZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8KICAgICAgICBrZWVwIHRoZSB2YWx1ZXMgYXJvdW5kIGxvbmdlciB0aGFuIG5lZWRlZC4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19yZW1vdmFsczoKICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICB3aXRoIF9JdGVyYXRpb25HdWFyZChzZWxmKToKICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLmRhdGEudmFsdWVzKCkKCiAgICBkZWYgdmFsdWVzKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgd2l0aCBfSXRlcmF0aW9uR3VhcmQoc2VsZik6CiAgICAgICAgICAgIGZvciB3ciBpbiBzZWxmLmRhdGEudmFsdWVzKCk6CiAgICAgICAgICAgICAgICBvYmogPSB3cigpCiAgICAgICAgICAgICAgICBpZiBvYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgeWllbGQgb2JqCgogICAgZGVmIHBvcGl0ZW0oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19yZW1vdmFsczoKICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBrZXksIHdyID0gc2VsZi5kYXRhLnBvcGl0ZW0oKQogICAgICAgICAgICBvID0gd3IoKQogICAgICAgICAgICBpZiBvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmV0dXJuIGtleSwgbwoKICAgIGRlZiBwb3Aoc2VsZiwga2V5LCAqYXJncyk6CiAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19yZW1vdmFsczoKICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG8gPSBzZWxmLmRhdGEucG9wKGtleSkoKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgbyA9IE5vbmUKICAgICAgICBpZiBvIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIGFyZ3M6CiAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1swXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBvCgogICAgZGVmIHNldGRlZmF1bHQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIG8gPSBOb25lCiAgICAgICAgaWYgbyBpcyBOb25lOgogICAgICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICAgICAgc2VsZi5kYXRhW2tleV0gPSBLZXllZFJlZihkZWZhdWx0LCBzZWxmLl9yZW1vdmUsIGtleSkKICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gbwoKICAgIGRlZiB1cGRhdGUoc2VsZiwgb3RoZXI9Tm9uZSwgLywgKiprd2FyZ3MpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgZCA9IHNlbGYuZGF0YQogICAgICAgIGlmIG90aGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihvdGhlciwgIml0ZW1zIik6CiAgICAgICAgICAgICAgICBvdGhlciA9IGRpY3Qob3RoZXIpCiAgICAgICAgICAgIGZvciBrZXksIG8gaW4gb3RoZXIuaXRlbXMoKToKICAgICAgICAgICAgICAgIGRba2V5XSA9IEtleWVkUmVmKG8sIHNlbGYuX3JlbW92ZSwga2V5KQogICAgICAgIGZvciBrZXksIG8gaW4ga3dhcmdzLml0ZW1zKCk6CiAgICAgICAgICAgIGRba2V5XSA9IEtleWVkUmVmKG8sIHNlbGYuX3JlbW92ZSwga2V5KQoKICAgIGRlZiB2YWx1ZXJlZnMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gdGhlIHZhbHVlcy4KCiAgICAgICAgVGhlIHJlZmVyZW5jZXMgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlICdsaXZlJyBhdCB0aGUgdGltZQogICAgICAgIHRoZXkgYXJlIHVzZWQsIHNvIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgcmVmZXJlbmNlcyBuZWVkcwogICAgICAgIHRvIGJlIGNoZWNrZWQgYmVmb3JlIGJlaW5nIHVzZWQuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkCiAgICAgICAgY3JlYXRpbmcgcmVmZXJlbmNlcyB0aGF0IHdpbGwgY2F1c2UgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHRvCiAgICAgICAga2VlcCB0aGUgdmFsdWVzIGFyb3VuZCBsb25nZXIgdGhhbiBuZWVkZWQuCgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CiAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCiAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5kYXRhLnZhbHVlcygpKQoKICAgIGRlZiBfX2lvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBzZWxmLnVwZGF0ZShvdGhlcikKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX29yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIF9jb2xsZWN0aW9uc19hYmMuTWFwcGluZyk6CiAgICAgICAgICAgIGMgPSBzZWxmLmNvcHkoKQogICAgICAgICAgICBjLnVwZGF0ZShvdGhlcikKICAgICAgICAgICAgcmV0dXJuIGMKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19yb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgX2NvbGxlY3Rpb25zX2FiYy5NYXBwaW5nKToKICAgICAgICAgICAgYyA9IHNlbGYuX19jbGFzc19fKCkKICAgICAgICAgICAgYy51cGRhdGUob3RoZXIpCiAgICAgICAgICAgIGMudXBkYXRlKHNlbGYpCiAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgoKY2xhc3MgS2V5ZWRSZWYocmVmKToKICAgICIiIlNwZWNpYWxpemVkIHJlZmVyZW5jZSB0aGF0IGluY2x1ZGVzIGEga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlLgoKICAgIFRoaXMgaXMgdXNlZCBpbiB0aGUgV2Vha1ZhbHVlRGljdGlvbmFyeSB0byBhdm9pZCBoYXZpbmcgdG8gY3JlYXRlCiAgICBhIGZ1bmN0aW9uIG9iamVjdCBmb3IgZWFjaCBrZXkgc3RvcmVkIGluIHRoZSBtYXBwaW5nLiAgQSBzaGFyZWQKICAgIGNhbGxiYWNrIG9iamVjdCBjYW4gdXNlIHRoZSAna2V5JyBhdHRyaWJ1dGUgb2YgYSBLZXllZFJlZiBpbnN0ZWFkCiAgICBvZiBnZXR0aW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBrZXkgZnJvbSBhbiBlbmNsb3Npbmcgc2NvcGUuCgogICAgIiIiCgogICAgX19zbG90c19fID0gImtleSIsCgogICAgZGVmIF9fbmV3X18odHlwZSwgb2IsIGNhbGxiYWNrLCBrZXkpOgogICAgICAgIHNlbGYgPSByZWYuX19uZXdfXyh0eXBlLCBvYiwgY2FsbGJhY2spCiAgICAgICAgc2VsZi5rZXkgPSBrZXkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYiwgY2FsbGJhY2ssIGtleSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhvYiwgY2FsbGJhY2spCgoKY2xhc3MgV2Vha0tleURpY3Rpb25hcnkoX2NvbGxlY3Rpb25zX2FiYy5NdXRhYmxlTWFwcGluZyk6CiAgICAiIiIgTWFwcGluZyBjbGFzcyB0aGF0IHJlZmVyZW5jZXMga2V5cyB3ZWFrbHkuCgogICAgRW50cmllcyBpbiB0aGUgZGljdGlvbmFyeSB3aWxsIGJlIGRpc2NhcmRlZCB3aGVuIHRoZXJlIGlzIG5vCiAgICBsb25nZXIgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBrZXkuIFRoaXMgY2FuIGJlIHVzZWQgdG8KICAgIGFzc29jaWF0ZSBhZGRpdGlvbmFsIGRhdGEgd2l0aCBhbiBvYmplY3Qgb3duZWQgYnkgb3RoZXIgcGFydHMgb2YKICAgIGFuIGFwcGxpY2F0aW9uIHdpdGhvdXQgYWRkaW5nIGF0dHJpYnV0ZXMgdG8gdGhvc2Ugb2JqZWN0cy4gVGhpcwogICAgY2FuIGJlIGVzcGVjaWFsbHkgdXNlZnVsIHdpdGggb2JqZWN0cyB0aGF0IG92ZXJyaWRlIGF0dHJpYnV0ZQogICAgYWNjZXNzZXMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZGljdD1Ob25lKToKICAgICAgICBzZWxmLmRhdGEgPSB7fQogICAgICAgIGRlZiByZW1vdmUoaywgc2VsZnJlZj1yZWYoc2VsZikpOgogICAgICAgICAgICBzZWxmID0gc2VsZnJlZigpCiAgICAgICAgICAgIGlmIHNlbGYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9pdGVyYXRpbmc6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVuZGluZ19yZW1vdmFscy5hcHBlbmQoaykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi5kYXRhW2tdCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgc2VsZi5fcmVtb3ZlID0gcmVtb3ZlCiAgICAgICAgIyBBIGxpc3Qgb2YgZGVhZCB3ZWFrcmVmcyAoa2V5cyB0byBiZSByZW1vdmVkKQogICAgICAgIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMgPSBbXQogICAgICAgIHNlbGYuX2l0ZXJhdGluZyA9IHNldCgpCiAgICAgICAgc2VsZi5fZGlydHlfbGVuID0gRmFsc2UKICAgICAgICBpZiBkaWN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLnVwZGF0ZShkaWN0KQoKICAgIGRlZiBfY29tbWl0X3JlbW92YWxzKHNlbGYpOgogICAgICAgICMgTk9URTogV2UgZG9uJ3QgbmVlZCB0byBjYWxsIHRoaXMgbWV0aG9kIGJlZm9yZSBtdXRhdGluZyB0aGUgZGljdCwKICAgICAgICAjIGJlY2F1c2UgYSBkZWFkIHdlYWtyZWYgbmV2ZXIgY29tcGFyZXMgZXF1YWwgdG8gYSBsaXZlIHdlYWtyZWYsCiAgICAgICAgIyBldmVuIGlmIHRoZXkgaGFwcGVuZWQgdG8gcmVmZXIgdG8gZXF1YWwgb2JqZWN0cy4KICAgICAgICAjIEhvd2V2ZXIsIGl0IG1lYW5zIGtleXMgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIHJlbW92ZWQuCiAgICAgICAgcG9wID0gc2VsZi5fcGVuZGluZ19yZW1vdmFscy5wb3AKICAgICAgICBkID0gc2VsZi5kYXRhCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAga2V5ID0gcG9wKCkKICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGRlbCBkW2tleV0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBfc2NydWJfcmVtb3ZhbHMoc2VsZik6CiAgICAgICAgZCA9IHNlbGYuZGF0YQogICAgICAgIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMgPSBbayBmb3IgayBpbiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzIGlmIGsgaW4gZF0KICAgICAgICBzZWxmLl9kaXJ0eV9sZW4gPSBGYWxzZQoKICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIHNlbGYuX2RpcnR5X2xlbiA9IFRydWUKICAgICAgICBkZWwgc2VsZi5kYXRhW3JlZihrZXkpXQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGFbcmVmKGtleSldCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fZGlydHlfbGVuIGFuZCBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgogICAgICAgICAgICAjIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMgbWF5IHN0aWxsIGNvbnRhaW4ga2V5cyB3aGljaCB3ZXJlCiAgICAgICAgICAgICMgZXhwbGljaXRseSByZW1vdmVkLCB3ZSBoYXZlIHRvIHNjcnViIHRoZW0gKHNlZSBpc3N1ZSAjMjExNzMpLgogICAgICAgICAgICBzZWxmLl9zY3J1Yl9yZW1vdmFscygpCiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpIC0gbGVuKHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPCVzIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpZChzZWxmKSkKCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgc2VsZi5kYXRhW3JlZihrZXksIHNlbGYuX3JlbW92ZSldID0gdmFsdWUKCiAgICBkZWYgY29weShzZWxmKToKICAgICAgICBuZXcgPSBXZWFrS2V5RGljdGlvbmFyeSgpCiAgICAgICAgd2l0aCBfSXRlcmF0aW9uR3VhcmQoc2VsZik6CiAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZGF0YS5pdGVtcygpOgogICAgICAgICAgICAgICAgbyA9IGtleSgpCiAgICAgICAgICAgICAgICBpZiBvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIG5ld1tvXSA9IHZhbHVlCiAgICAgICAgcmV0dXJuIG5ldwoKICAgIF9fY29weV9fID0gY29weQoKICAgIGRlZiBfX2RlZXBjb3B5X18oc2VsZiwgbWVtbyk6CiAgICAgICAgZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQogICAgICAgIG5ldyA9IHNlbGYuX19jbGFzc19fKCkKICAgICAgICB3aXRoIF9JdGVyYXRpb25HdWFyZChzZWxmKToKICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5kYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBvID0ga2V5KCkKICAgICAgICAgICAgICAgIGlmIG8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgbmV3W29dID0gZGVlcGNvcHkodmFsdWUsIG1lbW8pCiAgICAgICAgcmV0dXJuIG5ldwoKICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEuZ2V0KHJlZihrZXkpLGRlZmF1bHQpCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgIHRyeToKICAgICAgICAgICAgd3IgPSByZWYoa2V5KQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiB3ciBpbiBzZWxmLmRhdGEKCiAgICBkZWYgaXRlbXMoc2VsZik6CiAgICAgICAgd2l0aCBfSXRlcmF0aW9uR3VhcmQoc2VsZik6CiAgICAgICAgICAgIGZvciB3ciwgdmFsdWUgaW4gc2VsZi5kYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBrZXkgPSB3cigpCiAgICAgICAgICAgICAgICBpZiBrZXkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgeWllbGQga2V5LCB2YWx1ZQoKICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgIHdpdGggX0l0ZXJhdGlvbkd1YXJkKHNlbGYpOgogICAgICAgICAgICBmb3Igd3IgaW4gc2VsZi5kYXRhOgogICAgICAgICAgICAgICAgb2JqID0gd3IoKQogICAgICAgICAgICAgICAgaWYgb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIG9iagoKICAgIF9faXRlcl9fID0ga2V5cwoKICAgIGRlZiB2YWx1ZXMoc2VsZik6CiAgICAgICAgd2l0aCBfSXRlcmF0aW9uR3VhcmQoc2VsZik6CiAgICAgICAgICAgIGZvciB3ciwgdmFsdWUgaW4gc2VsZi5kYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBpZiB3cigpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlCgogICAgZGVmIGtleXJlZnMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gdGhlIGtleXMuCgogICAgICAgIFRoZSByZWZlcmVuY2VzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSAnbGl2ZScgYXQgdGhlIHRpbWUKICAgICAgICB0aGV5IGFyZSB1c2VkLCBzbyB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIHJlZmVyZW5jZXMgbmVlZHMKICAgICAgICB0byBiZSBjaGVja2VkIGJlZm9yZSBiZWluZyB1c2VkLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZAogICAgICAgIGNyZWF0aW5nIHJlZmVyZW5jZXMgdGhhdCB3aWxsIGNhdXNlIHRoZSBnYXJiYWdlIGNvbGxlY3RvciB0bwogICAgICAgIGtlZXAgdGhlIGtleXMgYXJvdW5kIGxvbmdlciB0aGFuIG5lZWRlZC4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5kYXRhKQoKICAgIGRlZiBwb3BpdGVtKHNlbGYpOgogICAgICAgIHNlbGYuX2RpcnR5X2xlbiA9IFRydWUKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBrZXksIHZhbHVlID0gc2VsZi5kYXRhLnBvcGl0ZW0oKQogICAgICAgICAgICBvID0ga2V5KCkKICAgICAgICAgICAgaWYgbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiBvLCB2YWx1ZQoKICAgIGRlZiBwb3Aoc2VsZiwga2V5LCAqYXJncyk6CiAgICAgICAgc2VsZi5fZGlydHlfbGVuID0gVHJ1ZQogICAgICAgIHJldHVybiBzZWxmLmRhdGEucG9wKHJlZihrZXkpLCAqYXJncykKCiAgICBkZWYgc2V0ZGVmYXVsdChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5zZXRkZWZhdWx0KHJlZihrZXksIHNlbGYuX3JlbW92ZSksZGVmYXVsdCkKCiAgICBkZWYgdXBkYXRlKHNlbGYsIGRpY3Q9Tm9uZSwgLywgKiprd2FyZ3MpOgogICAgICAgIGQgPSBzZWxmLmRhdGEKICAgICAgICBpZiBkaWN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihkaWN0LCAiaXRlbXMiKToKICAgICAgICAgICAgICAgIGRpY3QgPSB0eXBlKHt9KShkaWN0KQogICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICBkW3JlZihrZXksIHNlbGYuX3JlbW92ZSldID0gdmFsdWUKICAgICAgICBpZiBsZW4oa3dhcmdzKToKICAgICAgICAgICAgc2VsZi51cGRhdGUoa3dhcmdzKQoKICAgIGRlZiBfX2lvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBzZWxmLnVwZGF0ZShvdGhlcikKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX29yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIF9jb2xsZWN0aW9uc19hYmMuTWFwcGluZyk6CiAgICAgICAgICAgIGMgPSBzZWxmLmNvcHkoKQogICAgICAgICAgICBjLnVwZGF0ZShvdGhlcikKICAgICAgICAgICAgcmV0dXJuIGMKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19yb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgX2NvbGxlY3Rpb25zX2FiYy5NYXBwaW5nKToKICAgICAgICAgICAgYyA9IHNlbGYuX19jbGFzc19fKCkKICAgICAgICAgICAgYy51cGRhdGUob3RoZXIpCiAgICAgICAgICAgIGMudXBkYXRlKHNlbGYpCiAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgoKY2xhc3MgZmluYWxpemU6CiAgICAiIiJDbGFzcyBmb3IgZmluYWxpemF0aW9uIG9mIHdlYWtyZWZhYmxlIG9iamVjdHMKCiAgICBmaW5hbGl6ZShvYmosIGZ1bmMsICphcmdzLCAqKmt3YXJncykgcmV0dXJucyBhIGNhbGxhYmxlIGZpbmFsaXplcgogICAgb2JqZWN0IHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gb2JqIGlzIGdhcmJhZ2UgY29sbGVjdGVkLiBUaGUKICAgIGZpcnN0IHRpbWUgdGhlIGZpbmFsaXplciBpcyBjYWxsZWQgaXQgZXZhbHVhdGVzIGZ1bmMoKmFyZywgKiprd2FyZ3MpCiAgICBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBBZnRlciB0aGlzIHRoZSBmaW5hbGl6ZXIgaXMgZGVhZCwgYW5kCiAgICBjYWxsaW5nIGl0IGp1c3QgcmV0dXJucyBOb25lLgoKICAgIFdoZW4gdGhlIHByb2dyYW0gZXhpdHMgYW55IHJlbWFpbmluZyBmaW5hbGl6ZXJzIGZvciB3aGljaCB0aGUKICAgIGF0ZXhpdCBhdHRyaWJ1dGUgaXMgdHJ1ZSB3aWxsIGJlIHJ1biBpbiByZXZlcnNlIG9yZGVyIG9mIGNyZWF0aW9uLgogICAgQnkgZGVmYXVsdCBhdGV4aXQgaXMgdHJ1ZS4KICAgICIiIgoKICAgICMgRmluYWxpemVyIG9iamVjdHMgZG9uJ3QgaGF2ZSBhbnkgc3RhdGUgb2YgdGhlaXIgb3duLiAgVGhleSBhcmUKICAgICMganVzdCB1c2VkIGFzIGtleXMgdG8gbG9va3VwIF9JbmZvIG9iamVjdHMgaW4gdGhlIHJlZ2lzdHJ5LiAgVGhpcwogICAgIyBlbnN1cmVzIHRoYXQgdGhleSBjYW5ub3QgYmUgcGFydCBvZiBhIHJlZi1jeWNsZS4KCiAgICBfX3Nsb3RzX18gPSAoKQogICAgX3JlZ2lzdHJ5ID0ge30KICAgIF9zaHV0ZG93biA9IEZhbHNlCiAgICBfaW5kZXhfaXRlciA9IGl0ZXJ0b29scy5jb3VudCgpCiAgICBfZGlydHkgPSBGYWxzZQogICAgX3JlZ2lzdGVyZWRfd2l0aF9hdGV4aXQgPSBGYWxzZQoKICAgIGNsYXNzIF9JbmZvOgogICAgICAgIF9fc2xvdHNfXyA9ICgid2Vha3JlZiIsICJmdW5jIiwgImFyZ3MiLCAia3dhcmdzIiwgImF0ZXhpdCIsICJpbmRleCIpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iaiwgZnVuYywgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBub3Qgc2VsZi5fcmVnaXN0ZXJlZF93aXRoX2F0ZXhpdDoKICAgICAgICAgICAgIyBXZSBtYXkgcmVnaXN0ZXIgdGhlIGV4aXQgZnVuY3Rpb24gbW9yZSB0aGFuIG9uY2UgYmVjYXVzZQogICAgICAgICAgICAjIG9mIGEgdGhyZWFkIHJhY2UsIGJ1dCB0aGF0IGlzIGhhcm1sZXNzCiAgICAgICAgICAgIGltcG9ydCBhdGV4aXQKICAgICAgICAgICAgYXRleGl0LnJlZ2lzdGVyKHNlbGYuX2V4aXRmdW5jKQogICAgICAgICAgICBmaW5hbGl6ZS5fcmVnaXN0ZXJlZF93aXRoX2F0ZXhpdCA9IFRydWUKICAgICAgICBpbmZvID0gc2VsZi5fSW5mbygpCiAgICAgICAgaW5mby53ZWFrcmVmID0gcmVmKG9iaiwgc2VsZikKICAgICAgICBpbmZvLmZ1bmMgPSBmdW5jCiAgICAgICAgaW5mby5hcmdzID0gYXJncwogICAgICAgIGluZm8ua3dhcmdzID0ga3dhcmdzIG9yIE5vbmUKICAgICAgICBpbmZvLmF0ZXhpdCA9IFRydWUKICAgICAgICBpbmZvLmluZGV4ID0gbmV4dChzZWxmLl9pbmRleF9pdGVyKQogICAgICAgIHNlbGYuX3JlZ2lzdHJ5W3NlbGZdID0gaW5mbwogICAgICAgIGZpbmFsaXplLl9kaXJ0eSA9IFRydWUKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgXz1Ob25lKToKICAgICAgICAiIiJJZiBhbGl2ZSB0aGVuIG1hcmsgYXMgZGVhZCBhbmQgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKTsKICAgICAgICBvdGhlcndpc2UgcmV0dXJuIE5vbmUiIiIKICAgICAgICBpbmZvID0gc2VsZi5fcmVnaXN0cnkucG9wKHNlbGYsIE5vbmUpCiAgICAgICAgaWYgaW5mbyBhbmQgbm90IHNlbGYuX3NodXRkb3duOgogICAgICAgICAgICByZXR1cm4gaW5mby5mdW5jKCppbmZvLmFyZ3MsICoqKGluZm8ua3dhcmdzIG9yIHt9KSkKCiAgICBkZWYgZGV0YWNoKHNlbGYpOgogICAgICAgICIiIklmIGFsaXZlIHRoZW4gbWFyayBhcyBkZWFkIGFuZCByZXR1cm4gKG9iaiwgZnVuYywgYXJncywga3dhcmdzKTsKICAgICAgICBvdGhlcndpc2UgcmV0dXJuIE5vbmUiIiIKICAgICAgICBpbmZvID0gc2VsZi5fcmVnaXN0cnkuZ2V0KHNlbGYpCiAgICAgICAgb2JqID0gaW5mbyBhbmQgaW5mby53ZWFrcmVmKCkKICAgICAgICBpZiBvYmogaXMgbm90IE5vbmUgYW5kIHNlbGYuX3JlZ2lzdHJ5LnBvcChzZWxmLCBOb25lKToKICAgICAgICAgICAgcmV0dXJuIChvYmosIGluZm8uZnVuYywgaW5mby5hcmdzLCBpbmZvLmt3YXJncyBvciB7fSkKCiAgICBkZWYgcGVlayhzZWxmKToKICAgICAgICAiIiJJZiBhbGl2ZSB0aGVuIHJldHVybiAob2JqLCBmdW5jLCBhcmdzLCBrd2FyZ3MpOwogICAgICAgIG90aGVyd2lzZSByZXR1cm4gTm9uZSIiIgogICAgICAgIGluZm8gPSBzZWxmLl9yZWdpc3RyeS5nZXQoc2VsZikKICAgICAgICBvYmogPSBpbmZvIGFuZCBpbmZvLndlYWtyZWYoKQogICAgICAgIGlmIG9iaiBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIChvYmosIGluZm8uZnVuYywgaW5mby5hcmdzLCBpbmZvLmt3YXJncyBvciB7fSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhbGl2ZShzZWxmKToKICAgICAgICAiIiJXaGV0aGVyIGZpbmFsaXplciBpcyBhbGl2ZSIiIgogICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX3JlZ2lzdHJ5CgogICAgQHByb3BlcnR5CiAgICBkZWYgYXRleGl0KHNlbGYpOgogICAgICAgICIiIldoZXRoZXIgZmluYWxpemVyIHNob3VsZCBiZSBjYWxsZWQgYXQgZXhpdCIiIgogICAgICAgIGluZm8gPSBzZWxmLl9yZWdpc3RyeS5nZXQoc2VsZikKICAgICAgICByZXR1cm4gYm9vbChpbmZvKSBhbmQgaW5mby5hdGV4aXQKCiAgICBAYXRleGl0LnNldHRlcgogICAgZGVmIGF0ZXhpdChzZWxmLCB2YWx1ZSk6CiAgICAgICAgaW5mbyA9IHNlbGYuX3JlZ2lzdHJ5LmdldChzZWxmKQogICAgICAgIGlmIGluZm86CiAgICAgICAgICAgIGluZm8uYXRleGl0ID0gYm9vbCh2YWx1ZSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaW5mbyA9IHNlbGYuX3JlZ2lzdHJ5LmdldChzZWxmKQogICAgICAgIG9iaiA9IGluZm8gYW5kIGluZm8ud2Vha3JlZigpCiAgICAgICAgaWYgb2JqIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiAnPCVzIG9iamVjdCBhdCAlI3g7IGRlYWQ+JyAlICh0eXBlKHNlbGYpLl9fbmFtZV9fLCBpZChzZWxmKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gJzwlcyBvYmplY3QgYXQgJSN4OyBmb3IgJXIgYXQgJSN4PicgJSBcCiAgICAgICAgICAgICAgICAodHlwZShzZWxmKS5fX25hbWVfXywgaWQoc2VsZiksIHR5cGUob2JqKS5fX25hbWVfXywgaWQob2JqKSkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfc2VsZWN0X2Zvcl9leGl0KGNscyk6CiAgICAgICAgIyBSZXR1cm4gbGl2ZSBmaW5hbGl6ZXJzIG1hcmtlZCBmb3IgZXhpdCwgb2xkZXN0IGZpcnN0CiAgICAgICAgTCA9IFsoZixpKSBmb3IgKGYsaSkgaW4gY2xzLl9yZWdpc3RyeS5pdGVtcygpIGlmIGkuYXRleGl0XQogICAgICAgIEwuc29ydChrZXk9bGFtYmRhIGl0ZW06aXRlbVsxXS5pbmRleCkKICAgICAgICByZXR1cm4gW2YgZm9yIChmLGkpIGluIExdCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2V4aXRmdW5jKGNscyk6CiAgICAgICAgIyBBdCBzaHV0ZG93biBpbnZva2UgZmluYWxpemVycyBmb3Igd2hpY2ggYXRleGl0IGlzIHRydWUuCiAgICAgICAgIyBUaGlzIGlzIGNhbGxlZCBvbmNlIGFsbCBvdGhlciBub24tZGFlbW9uaWMgdGhyZWFkcyBoYXZlIGJlZW4KICAgICAgICAjIGpvaW5lZC4KICAgICAgICByZWVuYWJsZV9nYyA9IEZhbHNlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBjbHMuX3JlZ2lzdHJ5OgogICAgICAgICAgICAgICAgaW1wb3J0IGdjCiAgICAgICAgICAgICAgICBpZiBnYy5pc2VuYWJsZWQoKToKICAgICAgICAgICAgICAgICAgICByZWVuYWJsZV9nYyA9IFRydWUKICAgICAgICAgICAgICAgICAgICBnYy5kaXNhYmxlKCkKICAgICAgICAgICAgICAgIHBlbmRpbmcgPSBOb25lCiAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgIGlmIHBlbmRpbmcgaXMgTm9uZSBvciBmaW5hbGl6ZS5fZGlydHk6CiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmcgPSBjbHMuX3NlbGVjdF9mb3JfZXhpdCgpCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplLl9kaXJ0eSA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBlbmRpbmc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgZiA9IHBlbmRpbmcucG9wKCkKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICMgZ2MgaXMgZGlzYWJsZWQsIHNvIChhc3N1bWluZyBubyBkYWVtb25pYwogICAgICAgICAgICAgICAgICAgICAgICAjIHRocmVhZHMpIHRoZSBmb2xsb3dpbmcgaXMgdGhlIG9ubHkgbGluZSBpbgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgZnVuY3Rpb24gd2hpY2ggbWlnaHQgdHJpZ2dlciBjcmVhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAjIG9mIGEgbmV3IGZpbmFsaXplcgogICAgICAgICAgICAgICAgICAgICAgICBmKCkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhjZXB0aG9vaygqc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGYgbm90IGluIGNscy5fcmVnaXN0cnkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIHByZXZlbnQgYW55IG1vcmUgZmluYWxpemVycyBmcm9tIGV4ZWN1dGluZyBkdXJpbmcgc2h1dGRvd24KICAgICAgICAgICAgZmluYWxpemUuX3NodXRkb3duID0gVHJ1ZQogICAgICAgICAgICBpZiByZWVuYWJsZV9nYzoKICAgICAgICAgICAgICAgIGdjLmVuYWJsZSgpClBLAwQUAAAAAAACIKNWMT5+d1kXAABZFwAACQAAAHhkcmxpYi5weSIiIkltcGxlbWVudHMgKGEgc3Vic2V0IG9mKSBTdW4gWERSIC0tIGVYdGVybmFsIERhdGEgUmVwcmVzZW50YXRpb24uCgpTZWU6IFJGQyAxMDE0CgoiIiIKCmltcG9ydCBzdHJ1Y3QKZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwpmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKaW1wb3J0IHdhcm5pbmdzCgp3YXJuaW5ncy5fZGVwcmVjYXRlZChfX25hbWVfXywgcmVtb3ZlPSgzLCAxMykpCgpfX2FsbF9fID0gWyJFcnJvciIsICJQYWNrZXIiLCAiVW5wYWNrZXIiLCAiQ29udmVyc2lvbkVycm9yIl0KCiMgZXhjZXB0aW9ucwpjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgIiIiRXhjZXB0aW9uIGNsYXNzIGZvciB0aGlzIG1vZHVsZS4gVXNlOgoKICAgIGV4Y2VwdCB4ZHJsaWIuRXJyb3IgYXMgdmFyOgogICAgICAgICMgdmFyIGhhcyB0aGUgRXJyb3IgaW5zdGFuY2UgZm9yIHRoZSBleGNlcHRpb24KCiAgICBQdWJsaWMgaXZhcnM6CiAgICAgICAgbXNnIC0tIGNvbnRhaW5zIHRoZSBtZXNzYWdlCgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnKToKICAgICAgICBzZWxmLm1zZyA9IG1zZwogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiByZXByKHNlbGYubXNnKQogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHN0cihzZWxmLm1zZykKCgpjbGFzcyBDb252ZXJzaW9uRXJyb3IoRXJyb3IpOgogICAgcGFzcwoKZGVmIHJhaXNlX2NvbnZlcnNpb25fZXJyb3IoZnVuY3Rpb24pOgogICAgIiIiIFdyYXAgYW55IHJhaXNlZCBzdHJ1Y3QuZXJyb3JzIGluIGEgQ29udmVyc2lvbkVycm9yLiAiIiIKCiAgICBAd3JhcHMoZnVuY3Rpb24pCiAgICBkZWYgcmVzdWx0KHNlbGYsIHZhbHVlKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzZWxmLCB2YWx1ZSkKICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yIGFzIGU6CiAgICAgICAgICAgIHJhaXNlIENvbnZlcnNpb25FcnJvcihlLmFyZ3NbMF0pIGZyb20gTm9uZQogICAgcmV0dXJuIHJlc3VsdAoKCmNsYXNzIFBhY2tlcjoKICAgICIiIlBhY2sgdmFyaW91cyBkYXRhIHJlcHJlc2VudGF0aW9ucyBpbnRvIGEgYnVmZmVyLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLnJlc2V0KCkKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgc2VsZi5fX2J1ZiA9IEJ5dGVzSU8oKQoKICAgIGRlZiBnZXRfYnVmZmVyKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fYnVmLmdldHZhbHVlKCkKICAgICMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAgIGdldF9idWYgPSBnZXRfYnVmZmVyCgogICAgQHJhaXNlX2NvbnZlcnNpb25fZXJyb3IKICAgIGRlZiBwYWNrX3VpbnQoc2VsZiwgeCk6CiAgICAgICAgc2VsZi5fX2J1Zi53cml0ZShzdHJ1Y3QucGFjaygnPkwnLCB4KSkKCiAgICBAcmFpc2VfY29udmVyc2lvbl9lcnJvcgogICAgZGVmIHBhY2tfaW50KHNlbGYsIHgpOgogICAgICAgIHNlbGYuX19idWYud3JpdGUoc3RydWN0LnBhY2soJz5sJywgeCkpCgogICAgcGFja19lbnVtID0gcGFja19pbnQKCiAgICBkZWYgcGFja19ib29sKHNlbGYsIHgpOgogICAgICAgIGlmIHg6IHNlbGYuX19idWYud3JpdGUoYidcMFwwXDBcMScpCiAgICAgICAgZWxzZTogc2VsZi5fX2J1Zi53cml0ZShiJ1wwXDBcMFwwJykKCiAgICBkZWYgcGFja191aHlwZXIoc2VsZiwgeCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnBhY2tfdWludCh4Pj4zMiAmIDB4ZmZmZmZmZmYpCiAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIHN0cnVjdC5lcnJvcikgYXMgZToKICAgICAgICAgICAgcmFpc2UgQ29udmVyc2lvbkVycm9yKGUuYXJnc1swXSkgZnJvbSBOb25lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnBhY2tfdWludCh4ICYgMHhmZmZmZmZmZikKICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgc3RydWN0LmVycm9yKSBhcyBlOgogICAgICAgICAgICByYWlzZSBDb252ZXJzaW9uRXJyb3IoZS5hcmdzWzBdKSBmcm9tIE5vbmUKCiAgICBwYWNrX2h5cGVyID0gcGFja191aHlwZXIKCiAgICBAcmFpc2VfY29udmVyc2lvbl9lcnJvcgogICAgZGVmIHBhY2tfZmxvYXQoc2VsZiwgeCk6CiAgICAgICAgc2VsZi5fX2J1Zi53cml0ZShzdHJ1Y3QucGFjaygnPmYnLCB4KSkKCiAgICBAcmFpc2VfY29udmVyc2lvbl9lcnJvcgogICAgZGVmIHBhY2tfZG91YmxlKHNlbGYsIHgpOgogICAgICAgIHNlbGYuX19idWYud3JpdGUoc3RydWN0LnBhY2soJz5kJywgeCkpCgogICAgZGVmIHBhY2tfZnN0cmluZyhzZWxmLCBuLCBzKToKICAgICAgICBpZiBuIDwgMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZnN0cmluZyBzaXplIG11c3QgYmUgbm9ubmVnYXRpdmUnKQogICAgICAgIGRhdGEgPSBzWzpuXQogICAgICAgIG4gPSAoKG4rMykvLzQpKjQKICAgICAgICBkYXRhID0gZGF0YSArIChuIC0gbGVuKGRhdGEpKSAqIGInXDAnCiAgICAgICAgc2VsZi5fX2J1Zi53cml0ZShkYXRhKQoKICAgIHBhY2tfZm9wYXF1ZSA9IHBhY2tfZnN0cmluZwoKICAgIGRlZiBwYWNrX3N0cmluZyhzZWxmLCBzKToKICAgICAgICBuID0gbGVuKHMpCiAgICAgICAgc2VsZi5wYWNrX3VpbnQobikKICAgICAgICBzZWxmLnBhY2tfZnN0cmluZyhuLCBzKQoKICAgIHBhY2tfb3BhcXVlID0gcGFja19zdHJpbmcKICAgIHBhY2tfYnl0ZXMgPSBwYWNrX3N0cmluZwoKICAgIGRlZiBwYWNrX2xpc3Qoc2VsZiwgbGlzdCwgcGFja19pdGVtKToKICAgICAgICBmb3IgaXRlbSBpbiBsaXN0OgogICAgICAgICAgICBzZWxmLnBhY2tfdWludCgxKQogICAgICAgICAgICBwYWNrX2l0ZW0oaXRlbSkKICAgICAgICBzZWxmLnBhY2tfdWludCgwKQoKICAgIGRlZiBwYWNrX2ZhcnJheShzZWxmLCBuLCBsaXN0LCBwYWNrX2l0ZW0pOgogICAgICAgIGlmIGxlbihsaXN0KSAhPSBuOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3cm9uZyBhcnJheSBzaXplJykKICAgICAgICBmb3IgaXRlbSBpbiBsaXN0OgogICAgICAgICAgICBwYWNrX2l0ZW0oaXRlbSkKCiAgICBkZWYgcGFja19hcnJheShzZWxmLCBsaXN0LCBwYWNrX2l0ZW0pOgogICAgICAgIG4gPSBsZW4obGlzdCkKICAgICAgICBzZWxmLnBhY2tfdWludChuKQogICAgICAgIHNlbGYucGFja19mYXJyYXkobiwgbGlzdCwgcGFja19pdGVtKQoKCgpjbGFzcyBVbnBhY2tlcjoKICAgICIiIlVucGFja3MgdmFyaW91cyBkYXRhIHJlcHJlc2VudGF0aW9ucyBmcm9tIHRoZSBnaXZlbiBidWZmZXIuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYucmVzZXQoZGF0YSkKCiAgICBkZWYgcmVzZXQoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5fX2J1ZiA9IGRhdGEKICAgICAgICBzZWxmLl9fcG9zID0gMAoKICAgIGRlZiBnZXRfcG9zaXRpb24oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19wb3MKCiAgICBkZWYgc2V0X3Bvc2l0aW9uKHNlbGYsIHBvc2l0aW9uKToKICAgICAgICBzZWxmLl9fcG9zID0gcG9zaXRpb24KCiAgICBkZWYgZ2V0X2J1ZmZlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2J1ZgoKICAgIGRlZiBkb25lKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX19wb3MgPCBsZW4oc2VsZi5fX2J1Zik6CiAgICAgICAgICAgIHJhaXNlIEVycm9yKCd1bmV4dHJhY3RlZCBkYXRhIHJlbWFpbnMnKQoKICAgIGRlZiB1bnBhY2tfdWludChzZWxmKToKICAgICAgICBpID0gc2VsZi5fX3BvcwogICAgICAgIHNlbGYuX19wb3MgPSBqID0gaSs0CiAgICAgICAgZGF0YSA9IHNlbGYuX19idWZbaTpqXQogICAgICAgIGlmIGxlbihkYXRhKSA8IDQ6CiAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJz5MJywgZGF0YSlbMF0KCiAgICBkZWYgdW5wYWNrX2ludChzZWxmKToKICAgICAgICBpID0gc2VsZi5fX3BvcwogICAgICAgIHNlbGYuX19wb3MgPSBqID0gaSs0CiAgICAgICAgZGF0YSA9IHNlbGYuX19idWZbaTpqXQogICAgICAgIGlmIGxlbihkYXRhKSA8IDQ6CiAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJz5sJywgZGF0YSlbMF0KCiAgICB1bnBhY2tfZW51bSA9IHVucGFja19pbnQKCiAgICBkZWYgdW5wYWNrX2Jvb2woc2VsZik6CiAgICAgICAgcmV0dXJuIGJvb2woc2VsZi51bnBhY2tfaW50KCkpCgogICAgZGVmIHVucGFja191aHlwZXIoc2VsZik6CiAgICAgICAgaGkgPSBzZWxmLnVucGFja191aW50KCkKICAgICAgICBsbyA9IHNlbGYudW5wYWNrX3VpbnQoKQogICAgICAgIHJldHVybiBpbnQoaGkpPDwzMiB8IGxvCgogICAgZGVmIHVucGFja19oeXBlcihzZWxmKToKICAgICAgICB4ID0gc2VsZi51bnBhY2tfdWh5cGVyKCkKICAgICAgICBpZiB4ID49IDB4ODAwMDAwMDAwMDAwMDAwMDoKICAgICAgICAgICAgeCA9IHggLSAweDEwMDAwMDAwMDAwMDAwMDAwCiAgICAgICAgcmV0dXJuIHgKCiAgICBkZWYgdW5wYWNrX2Zsb2F0KHNlbGYpOgogICAgICAgIGkgPSBzZWxmLl9fcG9zCiAgICAgICAgc2VsZi5fX3BvcyA9IGogPSBpKzQKICAgICAgICBkYXRhID0gc2VsZi5fX2J1ZltpOmpdCiAgICAgICAgaWYgbGVuKGRhdGEpIDwgNDoKICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKICAgICAgICByZXR1cm4gc3RydWN0LnVucGFjaygnPmYnLCBkYXRhKVswXQoKICAgIGRlZiB1bnBhY2tfZG91YmxlKHNlbGYpOgogICAgICAgIGkgPSBzZWxmLl9fcG9zCiAgICAgICAgc2VsZi5fX3BvcyA9IGogPSBpKzgKICAgICAgICBkYXRhID0gc2VsZi5fX2J1ZltpOmpdCiAgICAgICAgaWYgbGVuKGRhdGEpIDwgODoKICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKICAgICAgICByZXR1cm4gc3RydWN0LnVucGFjaygnPmQnLCBkYXRhKVswXQoKICAgIGRlZiB1bnBhY2tfZnN0cmluZyhzZWxmLCBuKToKICAgICAgICBpZiBuIDwgMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZnN0cmluZyBzaXplIG11c3QgYmUgbm9ubmVnYXRpdmUnKQogICAgICAgIGkgPSBzZWxmLl9fcG9zCiAgICAgICAgaiA9IGkgKyAobiszKS8vNCo0CiAgICAgICAgaWYgaiA+IGxlbihzZWxmLl9fYnVmKToKICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKICAgICAgICBzZWxmLl9fcG9zID0gagogICAgICAgIHJldHVybiBzZWxmLl9fYnVmW2k6aStuXQoKICAgIHVucGFja19mb3BhcXVlID0gdW5wYWNrX2ZzdHJpbmcKCiAgICBkZWYgdW5wYWNrX3N0cmluZyhzZWxmKToKICAgICAgICBuID0gc2VsZi51bnBhY2tfdWludCgpCiAgICAgICAgcmV0dXJuIHNlbGYudW5wYWNrX2ZzdHJpbmcobikKCiAgICB1bnBhY2tfb3BhcXVlID0gdW5wYWNrX3N0cmluZwogICAgdW5wYWNrX2J5dGVzID0gdW5wYWNrX3N0cmluZwoKICAgIGRlZiB1bnBhY2tfbGlzdChzZWxmLCB1bnBhY2tfaXRlbSk6CiAgICAgICAgbGlzdCA9IFtdCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgeCA9IHNlbGYudW5wYWNrX3VpbnQoKQogICAgICAgICAgICBpZiB4ID09IDA6IGJyZWFrCiAgICAgICAgICAgIGlmIHggIT0gMToKICAgICAgICAgICAgICAgIHJhaXNlIENvbnZlcnNpb25FcnJvcignMCBvciAxIGV4cGVjdGVkLCBnb3QgJXInICUgKHgsKSkKICAgICAgICAgICAgaXRlbSA9IHVucGFja19pdGVtKCkKICAgICAgICAgICAgbGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICByZXR1cm4gbGlzdAoKICAgIGRlZiB1bnBhY2tfZmFycmF5KHNlbGYsIG4sIHVucGFja19pdGVtKToKICAgICAgICBsaXN0ID0gW10KICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKICAgICAgICAgICAgbGlzdC5hcHBlbmQodW5wYWNrX2l0ZW0oKSkKICAgICAgICByZXR1cm4gbGlzdAoKICAgIGRlZiB1bnBhY2tfYXJyYXkoc2VsZiwgdW5wYWNrX2l0ZW0pOgogICAgICAgIG4gPSBzZWxmLnVucGFja191aW50KCkKICAgICAgICByZXR1cm4gc2VsZi51bnBhY2tfZmFycmF5KG4sIHVucGFja19pdGVtKQpQSwMEFAAAAAAAAiCjVtX6kNhvHQAAbx0AAAkAAAB6aXBhcHAucHlpbXBvcnQgY29udGV4dGxpYgppbXBvcnQgb3MKaW1wb3J0IHBhdGhsaWIKaW1wb3J0IHNodXRpbAppbXBvcnQgc3RhdAppbXBvcnQgc3lzCmltcG9ydCB6aXBmaWxlCgpfX2FsbF9fID0gWydaaXBBcHBFcnJvcicsICdjcmVhdGVfYXJjaGl2ZScsICdnZXRfaW50ZXJwcmV0ZXInXQoKCiMgVGhlIF9fbWFpbl9fLnB5IHVzZWQgaWYgdGhlIHVzZXJzIHNwZWNpZmllcyAiLW0gbW9kdWxlOmZuIi4KIyBOb3RlIHRoYXQgdGhpcyB3aWxsIGFsd2F5cyBiZSB3cml0dGVuIGFzIFVURi04IChtb2R1bGUgYW5kCiMgZnVuY3Rpb24gbmFtZXMgY2FuIGJlIG5vbi1BU0NJSSBpbiBQeXRob24gMykuCiMgV2UgYWRkIGEgY29kaW5nIGNvb2tpZSBldmVuIHRob3VnaCBVVEYtOCBpcyB0aGUgZGVmYXVsdCBpbiBQeXRob24gMwojIGJlY2F1c2UgdGhlIHJlc3VsdGluZyBhcmNoaXZlIG1heSBiZSBpbnRlbmRlZCB0byBiZSBydW4gdW5kZXIgUHl0aG9uIDIuCk1BSU5fVEVNUExBVEUgPSAiIiJcCiMgLSotIGNvZGluZzogdXRmLTggLSotCmltcG9ydCB7bW9kdWxlfQp7bW9kdWxlfS57Zm59KCkKIiIiCgoKIyBUaGUgV2luZG93cyBsYXVuY2hlciBkZWZhdWx0cyB0byBVVEYtOCB3aGVuIHBhcnNpbmcgc2hlYmFuZyBsaW5lcyBpZiB0aGUKIyBmaWxlIGhhcyBubyBCT00uIFNvIHVzZSBVVEYtOCBvbiBXaW5kb3dzLgojIE9uIFVuaXgsIHVzZSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgc2hlYmFuZ19lbmNvZGluZyA9ICd1dGYtOCcKZWxzZToKICAgIHNoZWJhbmdfZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKCgpjbGFzcyBaaXBBcHBFcnJvcihWYWx1ZUVycm9yKToKICAgIHBhc3MKCgpAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgpkZWYgX21heWJlX29wZW4oYXJjaGl2ZSwgbW9kZSk6CiAgICBpZiBpc2luc3RhbmNlKGFyY2hpdmUsIChzdHIsIG9zLlBhdGhMaWtlKSk6CiAgICAgICAgd2l0aCBvcGVuKGFyY2hpdmUsIG1vZGUpIGFzIGY6CiAgICAgICAgICAgIHlpZWxkIGYKICAgIGVsc2U6CiAgICAgICAgeWllbGQgYXJjaGl2ZQoKCmRlZiBfd3JpdGVfZmlsZV9wcmVmaXgoZiwgaW50ZXJwcmV0ZXIpOgogICAgIiIiV3JpdGUgYSBzaGViYW5nIGxpbmUuIiIiCiAgICBpZiBpbnRlcnByZXRlcjoKICAgICAgICBzaGViYW5nID0gYicjIScgKyBpbnRlcnByZXRlci5lbmNvZGUoc2hlYmFuZ19lbmNvZGluZykgKyBiJ1xuJwogICAgICAgIGYud3JpdGUoc2hlYmFuZykKCgpkZWYgX2NvcHlfYXJjaGl2ZShhcmNoaXZlLCBuZXdfYXJjaGl2ZSwgaW50ZXJwcmV0ZXI9Tm9uZSk6CiAgICAiIiJDb3B5IGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUsIG1vZGlmeWluZyB0aGUgc2hlYmFuZyBsaW5lLiIiIgogICAgd2l0aCBfbWF5YmVfb3BlbihhcmNoaXZlLCAncmInKSBhcyBzcmM6CiAgICAgICAgIyBTa2lwIHRoZSBzaGViYW5nIGxpbmUgZnJvbSB0aGUgc291cmNlLgogICAgICAgICMgUmVhZCAyIGJ5dGVzIG9mIHRoZSBzb3VyY2UgYW5kIGNoZWNrIGlmIHRoZXkgYXJlICMhLgogICAgICAgIGZpcnN0XzIgPSBzcmMucmVhZCgyKQogICAgICAgIGlmIGZpcnN0XzIgPT0gYicjISc6CiAgICAgICAgICAgICMgRGlzY2FyZCB0aGUgaW5pdGlhbCAyIGJ5dGVzIGFuZCB0aGUgcmVzdCBvZiB0aGUgc2hlYmFuZyBsaW5lLgogICAgICAgICAgICBmaXJzdF8yID0gYicnCiAgICAgICAgICAgIHNyYy5yZWFkbGluZSgpCgogICAgICAgIHdpdGggX21heWJlX29wZW4obmV3X2FyY2hpdmUsICd3YicpIGFzIGRzdDoKICAgICAgICAgICAgX3dyaXRlX2ZpbGVfcHJlZml4KGRzdCwgaW50ZXJwcmV0ZXIpCiAgICAgICAgICAgICMgSWYgdGhlcmUgd2FzIG5vIHNoZWJhbmcsICJmaXJzdF8yIiBjb250YWlucyB0aGUgZmlyc3QgMiBieXRlcwogICAgICAgICAgICAjIG9mIHRoZSBzb3VyY2UgZmlsZSwgc28gd3JpdGUgdGhlbSBiZWZvcmUgY29weWluZyB0aGUgcmVzdAogICAgICAgICAgICAjIG9mIHRoZSBmaWxlLgogICAgICAgICAgICBkc3Qud3JpdGUoZmlyc3RfMikKICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0KQoKICAgIGlmIGludGVycHJldGVyIGFuZCBpc2luc3RhbmNlKG5ld19hcmNoaXZlLCBzdHIpOgogICAgICAgIG9zLmNobW9kKG5ld19hcmNoaXZlLCBvcy5zdGF0KG5ld19hcmNoaXZlKS5zdF9tb2RlIHwgc3RhdC5TX0lFWEVDKQoKCmRlZiBjcmVhdGVfYXJjaGl2ZShzb3VyY2UsIHRhcmdldD1Ob25lLCBpbnRlcnByZXRlcj1Ob25lLCBtYWluPU5vbmUsCiAgICAgICAgICAgICAgICAgICBmaWx0ZXI9Tm9uZSwgY29tcHJlc3NlZD1GYWxzZSk6CiAgICAiIiJDcmVhdGUgYW4gYXBwbGljYXRpb24gYXJjaGl2ZSBmcm9tIFNPVVJDRS4KCiAgICBUaGUgU09VUkNFIGNhbiBiZSB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSwgb3IgYSBmaWxlbmFtZSBvciBhIGZpbGUtbGlrZQogICAgb2JqZWN0IHJlZmVycmluZyB0byBhbiBleGlzdGluZyBhcmNoaXZlLgoKICAgIFRoZSBjb250ZW50IG9mIFNPVVJDRSBpcyBwYWNrZWQgaW50byBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlIGluIFRBUkdFVCwKICAgIHdoaWNoIGNhbiBiZSBhIGZpbGVuYW1lIG9yIGEgZmlsZS1saWtlIG9iamVjdC4gIElmIFNPVVJDRSBpcyBhIGRpcmVjdG9yeSwKICAgIFRBUkdFVCBjYW4gYmUgb21pdHRlZCBhbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBuYW1lIG9mIFNPVVJDRSB3aXRoIC5weXoKICAgIGFwcGVuZGVkLgoKICAgIFRoZSBjcmVhdGVkIGFwcGxpY2F0aW9uIGFyY2hpdmUgd2lsbCBoYXZlIGEgc2hlYmFuZyBsaW5lIHNwZWNpZnlpbmcKICAgIHRoYXQgaXQgc2hvdWxkIHJ1biB3aXRoIElOVEVSUFJFVEVSICh0aGVyZSB3aWxsIGJlIG5vIHNoZWJhbmcgbGluZSBpZgogICAgSU5URVJQUkVURVIgaXMgTm9uZSksIGFuZCBhIF9fbWFpbl9fLnB5IHdoaWNoIHJ1bnMgTUFJTiAoaWYgTUFJTiBpcwogICAgbm90IHNwZWNpZmllZCwgYW4gZXhpc3RpbmcgX19tYWluX18ucHkgd2lsbCBiZSB1c2VkKS4gIEl0IGlzIGFuIGVycm9yCiAgICB0byBzcGVjaWZ5IE1BSU4gZm9yIGFueXRoaW5nIG90aGVyIHRoYW4gYSBkaXJlY3Rvcnkgc291cmNlIHdpdGggbm8KICAgIF9fbWFpbl9fLnB5LCBhbmQgaXQgaXMgYW4gZXJyb3IgdG8gb21pdCBNQUlOIGlmIHRoZSBkaXJlY3RvcnkgaGFzIG5vCiAgICBfX21haW5fXy5weS4KICAgICIiIgogICAgIyBBcmUgd2UgY29weWluZyBhbiBleGlzdGluZyBhcmNoaXZlPwogICAgc291cmNlX2lzX2ZpbGUgPSBGYWxzZQogICAgaWYgaGFzYXR0cihzb3VyY2UsICdyZWFkJykgYW5kIGhhc2F0dHIoc291cmNlLCAncmVhZGxpbmUnKToKICAgICAgICBzb3VyY2VfaXNfZmlsZSA9IFRydWUKICAgIGVsc2U6CiAgICAgICAgc291cmNlID0gcGF0aGxpYi5QYXRoKHNvdXJjZSkKICAgICAgICBpZiBzb3VyY2UuaXNfZmlsZSgpOgogICAgICAgICAgICBzb3VyY2VfaXNfZmlsZSA9IFRydWUKCiAgICBpZiBzb3VyY2VfaXNfZmlsZToKICAgICAgICBfY29weV9hcmNoaXZlKHNvdXJjZSwgdGFyZ2V0LCBpbnRlcnByZXRlcikKICAgICAgICByZXR1cm4KCiAgICAjIFdlIGFyZSBjcmVhdGluZyBhIG5ldyBhcmNoaXZlIGZyb20gYSBkaXJlY3RvcnkuCiAgICBpZiBub3Qgc291cmNlLmV4aXN0cygpOgogICAgICAgIHJhaXNlIFppcEFwcEVycm9yKCJTb3VyY2UgZG9lcyBub3QgZXhpc3QiKQogICAgaGFzX21haW4gPSAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykuaXNfZmlsZSgpCiAgICBpZiBtYWluIGFuZCBoYXNfbWFpbjoKICAgICAgICByYWlzZSBaaXBBcHBFcnJvcigKICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5IGVudHJ5IHBvaW50IGlmIHRoZSBzb3VyY2UgaGFzIF9fbWFpbl9fLnB5IikKICAgIGlmIG5vdCAobWFpbiBvciBoYXNfbWFpbik6CiAgICAgICAgcmFpc2UgWmlwQXBwRXJyb3IoIkFyY2hpdmUgaGFzIG5vIGVudHJ5IHBvaW50IikKCiAgICBtYWluX3B5ID0gTm9uZQogICAgaWYgbWFpbjoKICAgICAgICAjIENoZWNrIHRoYXQgbWFpbiBoYXMgdGhlIHJpZ2h0IGZvcm1hdC4KICAgICAgICBtb2QsIHNlcCwgZm4gPSBtYWluLnBhcnRpdGlvbignOicpCiAgICAgICAgbW9kX29rID0gYWxsKHBhcnQuaXNpZGVudGlmaWVyKCkgZm9yIHBhcnQgaW4gbW9kLnNwbGl0KCcuJykpCiAgICAgICAgZm5fb2sgPSBhbGwocGFydC5pc2lkZW50aWZpZXIoKSBmb3IgcGFydCBpbiBmbi5zcGxpdCgnLicpKQogICAgICAgIGlmIG5vdCAoc2VwID09ICc6JyBhbmQgbW9kX29rIGFuZCBmbl9vayk6CiAgICAgICAgICAgIHJhaXNlIFppcEFwcEVycm9yKCJJbnZhbGlkIGVudHJ5IHBvaW50OiAiICsgbWFpbikKICAgICAgICBtYWluX3B5ID0gTUFJTl9URU1QTEFURS5mb3JtYXQobW9kdWxlPW1vZCwgZm49Zm4pCgogICAgaWYgdGFyZ2V0IGlzIE5vbmU6CiAgICAgICAgdGFyZ2V0ID0gc291cmNlLndpdGhfc3VmZml4KCcucHl6JykKICAgIGVsaWYgbm90IGhhc2F0dHIodGFyZ2V0LCAnd3JpdGUnKToKICAgICAgICB0YXJnZXQgPSBwYXRobGliLlBhdGgodGFyZ2V0KQoKICAgIHdpdGggX21heWJlX29wZW4odGFyZ2V0LCAnd2InKSBhcyBmZDoKICAgICAgICBfd3JpdGVfZmlsZV9wcmVmaXgoZmQsIGludGVycHJldGVyKQogICAgICAgIGNvbXByZXNzaW9uID0gKHppcGZpbGUuWklQX0RFRkxBVEVEIGlmIGNvbXByZXNzZWQgZWxzZQogICAgICAgICAgICAgICAgICAgICAgIHppcGZpbGUuWklQX1NUT1JFRCkKICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmZCwgJ3cnLCBjb21wcmVzc2lvbj1jb21wcmVzc2lvbikgYXMgejoKICAgICAgICAgICAgZm9yIGNoaWxkIGluIHNvdXJjZS5yZ2xvYignKicpOgogICAgICAgICAgICAgICAgYXJjbmFtZSA9IGNoaWxkLnJlbGF0aXZlX3RvKHNvdXJjZSkKICAgICAgICAgICAgICAgIGlmIGZpbHRlciBpcyBOb25lIG9yIGZpbHRlcihhcmNuYW1lKToKICAgICAgICAgICAgICAgICAgICB6LndyaXRlKGNoaWxkLCBhcmNuYW1lLmFzX3Bvc2l4KCkpCiAgICAgICAgICAgIGlmIG1haW5fcHk6CiAgICAgICAgICAgICAgICB6LndyaXRlc3RyKCdfX21haW5fXy5weScsIG1haW5fcHkuZW5jb2RlKCd1dGYtOCcpKQoKICAgIGlmIGludGVycHJldGVyIGFuZCBub3QgaGFzYXR0cih0YXJnZXQsICd3cml0ZScpOgogICAgICAgIHRhcmdldC5jaG1vZCh0YXJnZXQuc3RhdCgpLnN0X21vZGUgfCBzdGF0LlNfSUVYRUMpCgoKZGVmIGdldF9pbnRlcnByZXRlcihhcmNoaXZlKToKICAgIHdpdGggX21heWJlX29wZW4oYXJjaGl2ZSwgJ3JiJykgYXMgZjoKICAgICAgICBpZiBmLnJlYWQoMikgPT0gYicjISc6CiAgICAgICAgICAgIHJldHVybiBmLnJlYWRsaW5lKCkuc3RyaXAoKS5kZWNvZGUoc2hlYmFuZ19lbmNvZGluZykKCgpkZWYgbWFpbihhcmdzPU5vbmUpOgogICAgIiIiUnVuIHRoZSB6aXBhcHAgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KCiAgICBUaGUgQVJHUyBwYXJhbWV0ZXIgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgYXJndW1lbnQgbGlzdCBkaXJlY3RseS4KICAgIE9taXR0aW5nIEFSR1MgKG9yIHNldHRpbmcgaXQgdG8gTm9uZSkgd29ya3MgYXMgZm9yIGFyZ3BhcnNlLCB1c2luZwogICAgc3lzLmFyZ3ZbMTpdIGFzIHRoZSBhcmd1bWVudCBsaXN0LgogICAgIiIiCiAgICBpbXBvcnQgYXJncGFyc2UKCiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsICctbycsIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgaGVscD0iVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcmNoaXZlLiAiCiAgICAgICAgICAgICAgICAgIlJlcXVpcmVkIGlmIFNPVVJDRSBpcyBhbiBhcmNoaXZlLiIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXB5dGhvbicsICctcCcsIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgaGVscD0iVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byB1c2UgIgogICAgICAgICAgICAgICAgICIoZGVmYXVsdDogbm8gc2hlYmFuZyBsaW5lKS4iKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tYWluJywgJy1tJywgZGVmYXVsdD1Ob25lLAogICAgICAgICAgICBoZWxwPSJUaGUgbWFpbiBmdW5jdGlvbiBvZiB0aGUgYXBwbGljYXRpb24gIgogICAgICAgICAgICAgICAgICIoZGVmYXVsdDogdXNlIGFuIGV4aXN0aW5nIF9fbWFpbl9fLnB5KS4iKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb21wcmVzcycsICctYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgIGhlbHA9IkNvbXByZXNzIGZpbGVzIHdpdGggdGhlIGRlZmxhdGUgbWV0aG9kLiAiCiAgICAgICAgICAgICAgICAgIkZpbGVzIGFyZSBzdG9yZWQgdW5jb21wcmVzc2VkIGJ5IGRlZmF1bHQuIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5mbycsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgIGhlbHA9IkRpc3BsYXkgdGhlIGludGVycHJldGVyIGZyb20gdGhlIGFyY2hpdmUuIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3NvdXJjZScsCiAgICAgICAgICAgIGhlbHA9IlNvdXJjZSBkaXJlY3RvcnkgKG9yIGV4aXN0aW5nIGFyY2hpdmUpLiIpCgogICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCgogICAgIyBIYW5kbGUgYHB5dGhvbiAtbSB6aXBhcHAgYXJjaGl2ZS5weXogLS1pbmZvYC4KICAgIGlmIGFyZ3MuaW5mbzoKICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoYXJncy5zb3VyY2UpOgogICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCJDYW4gb25seSBnZXQgaW5mbyBmb3IgYW4gYXJjaGl2ZSBmaWxlIikKICAgICAgICBpbnRlcnByZXRlciA9IGdldF9pbnRlcnByZXRlcihhcmdzLnNvdXJjZSkKICAgICAgICBwcmludCgiSW50ZXJwcmV0ZXI6IHt9Ii5mb3JtYXQoaW50ZXJwcmV0ZXIgb3IgIjxub25lPiIpKQogICAgICAgIHN5cy5leGl0KDApCgogICAgaWYgb3MucGF0aC5pc2ZpbGUoYXJncy5zb3VyY2UpOgogICAgICAgIGlmIGFyZ3Mub3V0cHV0IGlzIE5vbmUgb3IgKG9zLnBhdGguZXhpc3RzKGFyZ3Mub3V0cHV0KSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnNhbWVmaWxlKGFyZ3Muc291cmNlLCBhcmdzLm91dHB1dCkpOgogICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCJJbi1wbGFjZSBlZGl0aW5nIG9mIGFyY2hpdmVzIGlzIG5vdCBzdXBwb3J0ZWQiKQogICAgICAgIGlmIGFyZ3MubWFpbjoKICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgiQ2Fubm90IGNoYW5nZSB0aGUgbWFpbiBmdW5jdGlvbiB3aGVuIGNvcHlpbmciKQoKICAgIGNyZWF0ZV9hcmNoaXZlKGFyZ3Muc291cmNlLCBhcmdzLm91dHB1dCwKICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyPWFyZ3MucHl0aG9uLCBtYWluPWFyZ3MubWFpbiwKICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWQ9YXJncy5jb21wcmVzcykKCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigpClBLAwQUAAAAAAACIKNWnLhfeEdoAQBHaAEACgAAAHppcGZpbGUucHkiIiIKUmVhZCBhbmQgd3JpdGUgWklQIGZpbGVzLgoKWFhYIHJlZmVyZW5jZXMgdG8gdXRmLTggbmVlZCBmdXJ0aGVyIGludmVzdGlnYXRpb24uCiIiIgppbXBvcnQgYmluYXNjaWkKaW1wb3J0IGltcG9ydGxpYi51dGlsCmltcG9ydCBpbwppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCBvcwppbXBvcnQgcG9zaXhwYXRoCmltcG9ydCBzaHV0aWwKaW1wb3J0IHN0YXQKaW1wb3J0IHN0cnVjdAppbXBvcnQgc3lzCmltcG9ydCB0aHJlYWRpbmcKaW1wb3J0IHRpbWUKaW1wb3J0IGNvbnRleHRsaWIKaW1wb3J0IHBhdGhsaWIKCnRyeToKICAgIGltcG9ydCB6bGliICMgV2UgbWF5IG5lZWQgaXRzIGNvbXByZXNzaW9uIG1ldGhvZAogICAgY3JjMzIgPSB6bGliLmNyYzMyCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHpsaWIgPSBOb25lCiAgICBjcmMzMiA9IGJpbmFzY2lpLmNyYzMyCgp0cnk6CiAgICBpbXBvcnQgYnoyICMgV2UgbWF5IG5lZWQgaXRzIGNvbXByZXNzaW9uIG1ldGhvZApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBiejIgPSBOb25lCgp0cnk6CiAgICBpbXBvcnQgbHptYSAjIFdlIG1heSBuZWVkIGl0cyBjb21wcmVzc2lvbiBtZXRob2QKZXhjZXB0IEltcG9ydEVycm9yOgogICAgbHptYSA9IE5vbmUKCl9fYWxsX18gPSBbIkJhZFppcEZpbGUiLCAiQmFkWmlwZmlsZSIsICJlcnJvciIsCiAgICAgICAgICAgIlpJUF9TVE9SRUQiLCAiWklQX0RFRkxBVEVEIiwgIlpJUF9CWklQMiIsICJaSVBfTFpNQSIsCiAgICAgICAgICAgImlzX3ppcGZpbGUiLCAiWmlwSW5mbyIsICJaaXBGaWxlIiwgIlB5WmlwRmlsZSIsICJMYXJnZVppcEZpbGUiLAogICAgICAgICAgICJQYXRoIl0KCmNsYXNzIEJhZFppcEZpbGUoRXhjZXB0aW9uKToKICAgIHBhc3MKCgpjbGFzcyBMYXJnZVppcEZpbGUoRXhjZXB0aW9uKToKICAgICIiIgogICAgUmFpc2VkIHdoZW4gd3JpdGluZyBhIHppcGZpbGUsIHRoZSB6aXBmaWxlIHJlcXVpcmVzIFpJUDY0IGV4dGVuc2lvbnMKICAgIGFuZCB0aG9zZSBleHRlbnNpb25zIGFyZSBkaXNhYmxlZC4KICAgICIiIgoKZXJyb3IgPSBCYWRaaXBmaWxlID0gQmFkWmlwRmlsZSAgICAgICMgUHJlLTMuMiBjb21wYXRpYmlsaXR5IG5hbWVzCgoKWklQNjRfTElNSVQgPSAoMSA8PCAzMSkgLSAxClpJUF9GSUxFQ09VTlRfTElNSVQgPSAoMSA8PCAxNikgLSAxClpJUF9NQVhfQ09NTUVOVCA9ICgxIDw8IDE2KSAtIDEKCiMgY29uc3RhbnRzIGZvciBaaXAgZmlsZSBjb21wcmVzc2lvbiBtZXRob2RzClpJUF9TVE9SRUQgPSAwClpJUF9ERUZMQVRFRCA9IDgKWklQX0JaSVAyID0gMTIKWklQX0xaTUEgPSAxNAojIE90aGVyIFpJUCBjb21wcmVzc2lvbiBtZXRob2RzIG5vdCBzdXBwb3J0ZWQKCkRFRkFVTFRfVkVSU0lPTiA9IDIwClpJUDY0X1ZFUlNJT04gPSA0NQpCWklQMl9WRVJTSU9OID0gNDYKTFpNQV9WRVJTSU9OID0gNjMKIyB3ZSByZWNvZ25pemUgKGJ1dCBub3QgbmVjZXNzYXJpbHkgc3VwcG9ydCkgYWxsIGZlYXR1cmVzIHVwIHRvIHRoYXQgdmVyc2lvbgpNQVhfRVhUUkFDVF9WRVJTSU9OID0gNjMKCiMgQmVsb3cgYXJlIHNvbWUgZm9ybWF0cyBhbmQgYXNzb2NpYXRlZCBkYXRhIGZvciByZWFkaW5nL3dyaXRpbmcgaGVhZGVycyB1c2luZwojIHRoZSBzdHJ1Y3QgbW9kdWxlLiAgVGhlIG5hbWVzIGFuZCBzdHJ1Y3R1cmVzIG9mIGhlYWRlcnMvcmVjb3JkcyBhcmUgdGhvc2UgdXNlZAojIGluIHRoZSBQS1dBUkUgZGVzY3JpcHRpb24gb2YgdGhlIFpJUCBmaWxlIGZvcm1hdDoKIyAgICAgaHR0cDovL3d3dy5wa3dhcmUuY29tL2RvY3VtZW50cy9jYXNlc3R1ZGllcy9BUFBOT1RFLlRYVAojIChVUkwgdmFsaWQgYXMgb2YgSmFudWFyeSAyMDA4KQoKIyBUaGUgImVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSIgc3RydWN0dXJlLCBtYWdpYyBudW1iZXIsIHNpemUsIGFuZCBpbmRpY2VzCiMgKHNlY3Rpb24gVi5JIGluIHRoZSBmb3JtYXQgZG9jdW1lbnQpCnN0cnVjdEVuZEFyY2hpdmUgPSBiIjw0czRIMkxIIgpzdHJpbmdFbmRBcmNoaXZlID0gYiJQS1wwMDVcMDA2IgpzaXplRW5kQ2VudERpciA9IHN0cnVjdC5jYWxjc2l6ZShzdHJ1Y3RFbmRBcmNoaXZlKQoKX0VDRF9TSUdOQVRVUkUgPSAwCl9FQ0RfRElTS19OVU1CRVIgPSAxCl9FQ0RfRElTS19TVEFSVCA9IDIKX0VDRF9FTlRSSUVTX1RISVNfRElTSyA9IDMKX0VDRF9FTlRSSUVTX1RPVEFMID0gNApfRUNEX1NJWkUgPSA1Cl9FQ0RfT0ZGU0VUID0gNgpfRUNEX0NPTU1FTlRfU0laRSA9IDcKIyBUaGVzZSBsYXN0IHR3byBpbmRpY2VzIGFyZSBub3QgcGFydCBvZiB0aGUgc3RydWN0dXJlIGFzIGRlZmluZWQgaW4gdGhlCiMgc3BlYywgYnV0IHRoZXkgYXJlIHVzZWQgaW50ZXJuYWxseSBieSB0aGlzIG1vZHVsZSBhcyBhIGNvbnZlbmllbmNlCl9FQ0RfQ09NTUVOVCA9IDgKX0VDRF9MT0NBVElPTiA9IDkKCiMgVGhlICJjZW50cmFsIGRpcmVjdG9yeSIgc3RydWN0dXJlLCBtYWdpYyBudW1iZXIsIHNpemUsIGFuZCBpbmRpY2VzCiMgb2YgZW50cmllcyBpbiB0aGUgc3RydWN0dXJlIChzZWN0aW9uIFYuRiBpbiB0aGUgZm9ybWF0IGRvY3VtZW50KQpzdHJ1Y3RDZW50cmFsRGlyID0gIjw0czRCNEhMMkw1SDJMIgpzdHJpbmdDZW50cmFsRGlyID0gYiJQS1wwMDFcMDAyIgpzaXplQ2VudHJhbERpciA9IHN0cnVjdC5jYWxjc2l6ZShzdHJ1Y3RDZW50cmFsRGlyKQoKIyBpbmRleGVzIG9mIGVudHJpZXMgaW4gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IHN0cnVjdHVyZQpfQ0RfU0lHTkFUVVJFID0gMApfQ0RfQ1JFQVRFX1ZFUlNJT04gPSAxCl9DRF9DUkVBVEVfU1lTVEVNID0gMgpfQ0RfRVhUUkFDVF9WRVJTSU9OID0gMwpfQ0RfRVhUUkFDVF9TWVNURU0gPSA0Cl9DRF9GTEFHX0JJVFMgPSA1Cl9DRF9DT01QUkVTU19UWVBFID0gNgpfQ0RfVElNRSA9IDcKX0NEX0RBVEUgPSA4Cl9DRF9DUkMgPSA5Cl9DRF9DT01QUkVTU0VEX1NJWkUgPSAxMApfQ0RfVU5DT01QUkVTU0VEX1NJWkUgPSAxMQpfQ0RfRklMRU5BTUVfTEVOR1RIID0gMTIKX0NEX0VYVFJBX0ZJRUxEX0xFTkdUSCA9IDEzCl9DRF9DT01NRU5UX0xFTkdUSCA9IDE0Cl9DRF9ESVNLX05VTUJFUl9TVEFSVCA9IDE1Cl9DRF9JTlRFUk5BTF9GSUxFX0FUVFJJQlVURVMgPSAxNgpfQ0RfRVhURVJOQUxfRklMRV9BVFRSSUJVVEVTID0gMTcKX0NEX0xPQ0FMX0hFQURFUl9PRkZTRVQgPSAxOAoKIyBHZW5lcmFsIHB1cnBvc2UgYml0IGZsYWdzCiMgWmlwIEFwcG5vdGU6IDQuNC40IGdlbmVyYWwgcHVycG9zZSBiaXQgZmxhZzogKDIgYnl0ZXMpCl9NQVNLX0VOQ1JZUFRFRCA9IDEgPDwgMAojIEJpdHMgMSBhbmQgMiBoYXZlIGRpZmZlcmVudCBtZWFuaW5ncyBkZXBlbmRpbmcgb24gdGhlIGNvbXByZXNzaW9uIHVzZWQuCl9NQVNLX0NPTVBSRVNTX09QVElPTl8xID0gMSA8PCAxCiMgX01BU0tfQ09NUFJFU1NfT1BUSU9OXzIgPSAxIDw8IDIKIyBfTUFTS19VU0VfREFUQV9ERVNDUklQVE9SOiBJZiBzZXQsIGNyYy0zMiwgY29tcHJlc3NlZCBzaXplIGFuZCB1bmNvbXByZXNzZWQKIyBzaXplIGFyZSB6ZXJvIGluIHRoZSBsb2NhbCBoZWFkZXIgYW5kIHRoZSByZWFsIHZhbHVlcyBhcmUgd3JpdHRlbiBpbiB0aGUgZGF0YQojIGRlc2NyaXB0b3IgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBjb21wcmVzc2VkIGRhdGEuCl9NQVNLX1VTRV9EQVRBX0RFU0NSSVBUT1IgPSAxIDw8IDMKIyBCaXQgNDogUmVzZXJ2ZWQgZm9yIHVzZSB3aXRoIGNvbXByZXNzaW9uIG1ldGhvZCA4LCBmb3IgZW5oYW5jZWQgZGVmbGF0aW5nLgojIF9NQVNLX1JFU0VSVkVEX0JJVF80ID0gMSA8PCA0Cl9NQVNLX0NPTVBSRVNTRURfUEFUQ0ggPSAxIDw8IDUKX01BU0tfU1RST05HX0VOQ1JZUFRJT04gPSAxIDw8IDYKIyBfTUFTS19VTlVTRURfQklUXzcgPSAxIDw8IDcKIyBfTUFTS19VTlVTRURfQklUXzggPSAxIDw8IDgKIyBfTUFTS19VTlVTRURfQklUXzkgPSAxIDw8IDkKIyBfTUFTS19VTlVTRURfQklUXzEwID0gMSA8PCAxMApfTUFTS19VVEZfRklMRU5BTUUgPSAxIDw8IDExCiMgQml0IDEyOiBSZXNlcnZlZCBieSBQS1dBUkUgZm9yIGVuaGFuY2VkIGNvbXByZXNzaW9uLgojIF9NQVNLX1JFU0VSVkVEX0JJVF8xMiA9IDEgPDwgMTIKIyBfTUFTS19FTkNSWVBURURfQ0VOVFJBTF9ESVIgPSAxIDw8IDEzCiMgQml0IDE0LCAxNTogUmVzZXJ2ZWQgYnkgUEtXQVJFCiMgX01BU0tfUkVTRVJWRURfQklUXzE0ID0gMSA8PCAxNAojIF9NQVNLX1JFU0VSVkVEX0JJVF8xNSA9IDEgPDwgMTUKCiMgVGhlICJsb2NhbCBmaWxlIGhlYWRlciIgc3RydWN0dXJlLCBtYWdpYyBudW1iZXIsIHNpemUsIGFuZCBpbmRpY2VzCiMgKHNlY3Rpb24gVi5BIGluIHRoZSBmb3JtYXQgZG9jdW1lbnQpCnN0cnVjdEZpbGVIZWFkZXIgPSAiPDRzMkI0SEwyTDJIIgpzdHJpbmdGaWxlSGVhZGVyID0gYiJQS1wwMDNcMDA0IgpzaXplRmlsZUhlYWRlciA9IHN0cnVjdC5jYWxjc2l6ZShzdHJ1Y3RGaWxlSGVhZGVyKQoKX0ZIX1NJR05BVFVSRSA9IDAKX0ZIX0VYVFJBQ1RfVkVSU0lPTiA9IDEKX0ZIX0VYVFJBQ1RfU1lTVEVNID0gMgpfRkhfR0VORVJBTF9QVVJQT1NFX0ZMQUdfQklUUyA9IDMKX0ZIX0NPTVBSRVNTSU9OX01FVEhPRCA9IDQKX0ZIX0xBU1RfTU9EX1RJTUUgPSA1Cl9GSF9MQVNUX01PRF9EQVRFID0gNgpfRkhfQ1JDID0gNwpfRkhfQ09NUFJFU1NFRF9TSVpFID0gOApfRkhfVU5DT01QUkVTU0VEX1NJWkUgPSA5Cl9GSF9GSUxFTkFNRV9MRU5HVEggPSAxMApfRkhfRVhUUkFfRklFTERfTEVOR1RIID0gMTEKCiMgVGhlICJaaXA2NCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgbG9jYXRvciIgc3RydWN0dXJlLCBtYWdpYyBudW1iZXIsIGFuZCBzaXplCnN0cnVjdEVuZEFyY2hpdmU2NExvY2F0b3IgPSAiPDRzTFFMIgpzdHJpbmdFbmRBcmNoaXZlNjRMb2NhdG9yID0gYiJQS1x4MDZceDA3IgpzaXplRW5kQ2VudERpcjY0TG9jYXRvciA9IHN0cnVjdC5jYWxjc2l6ZShzdHJ1Y3RFbmRBcmNoaXZlNjRMb2NhdG9yKQoKIyBUaGUgIlppcDY0IGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSIgcmVjb3JkLCBtYWdpYyBudW1iZXIsIHNpemUsIGFuZCBpbmRpY2VzCiMgKHNlY3Rpb24gVi5HIGluIHRoZSBmb3JtYXQgZG9jdW1lbnQpCnN0cnVjdEVuZEFyY2hpdmU2NCA9ICI8NHNRMkgyTDRRIgpzdHJpbmdFbmRBcmNoaXZlNjQgPSBiIlBLXHgwNlx4MDYiCnNpemVFbmRDZW50RGlyNjQgPSBzdHJ1Y3QuY2FsY3NpemUoc3RydWN0RW5kQXJjaGl2ZTY0KQoKX0NENjRfU0lHTkFUVVJFID0gMApfQ0Q2NF9ESVJFQ1RPUllfUkVDU0laRSA9IDEKX0NENjRfQ1JFQVRFX1ZFUlNJT04gPSAyCl9DRDY0X0VYVFJBQ1RfVkVSU0lPTiA9IDMKX0NENjRfRElTS19OVU1CRVIgPSA0Cl9DRDY0X0RJU0tfTlVNQkVSX1NUQVJUID0gNQpfQ0Q2NF9OVU1CRVJfRU5UUklFU19USElTX0RJU0sgPSA2Cl9DRDY0X05VTUJFUl9FTlRSSUVTX1RPVEFMID0gNwpfQ0Q2NF9ESVJFQ1RPUllfU0laRSA9IDgKX0NENjRfT0ZGU0VUX1NUQVJUX0NFTlRESVIgPSA5CgpfRERfU0lHTkFUVVJFID0gMHgwODA3NGI1MAoKX0VYVFJBX0ZJRUxEX1NUUlVDVCA9IHN0cnVjdC5TdHJ1Y3QoJzxISCcpCgpkZWYgX3N0cmlwX2V4dHJhKGV4dHJhLCB4aWRzKToKICAgICMgUmVtb3ZlIEV4dHJhIEZpZWxkcyB3aXRoIHNwZWNpZmllZCBJRHMuCiAgICB1bnBhY2sgPSBfRVhUUkFfRklFTERfU1RSVUNULnVucGFjawogICAgbW9kaWZpZWQgPSBGYWxzZQogICAgYnVmZmVyID0gW10KICAgIHN0YXJ0ID0gaSA9IDAKICAgIHdoaWxlIGkgKyA0IDw9IGxlbihleHRyYSk6CiAgICAgICAgeGlkLCB4bGVuID0gdW5wYWNrKGV4dHJhW2kgOiBpICsgNF0pCiAgICAgICAgaiA9IGkgKyA0ICsgeGxlbgogICAgICAgIGlmIHhpZCBpbiB4aWRzOgogICAgICAgICAgICBpZiBpICE9IHN0YXJ0OgogICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChleHRyYVtzdGFydCA6IGldKQogICAgICAgICAgICBzdGFydCA9IGoKICAgICAgICAgICAgbW9kaWZpZWQgPSBUcnVlCiAgICAgICAgaSA9IGoKICAgIGlmIG5vdCBtb2RpZmllZDoKICAgICAgICByZXR1cm4gZXh0cmEKICAgIHJldHVybiBiJycuam9pbihidWZmZXIpCgpkZWYgX2NoZWNrX3ppcGZpbGUoZnApOgogICAgdHJ5OgogICAgICAgIGlmIF9FbmRSZWNEYXRhKGZwKToKICAgICAgICAgICAgcmV0dXJuIFRydWUgICAgICAgICAjIGZpbGUgaGFzIGNvcnJlY3QgbWFnaWMgbnVtYmVyCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICBwYXNzCiAgICByZXR1cm4gRmFsc2UKCmRlZiBpc196aXBmaWxlKGZpbGVuYW1lKToKICAgICIiIlF1aWNrbHkgc2VlIGlmIGEgZmlsZSBpcyBhIFpJUCBmaWxlIGJ5IGNoZWNraW5nIHRoZSBtYWdpYyBudW1iZXIuCgogICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IG1heSBiZSBhIGZpbGUgb3IgZmlsZS1saWtlIG9iamVjdCB0b28uCiAgICAiIiIKICAgIHJlc3VsdCA9IEZhbHNlCiAgICB0cnk6CiAgICAgICAgaWYgaGFzYXR0cihmaWxlbmFtZSwgInJlYWQiKToKICAgICAgICAgICAgcmVzdWx0ID0gX2NoZWNrX3ppcGZpbGUoZnA9ZmlsZW5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmcDoKICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9jaGVja196aXBmaWxlKGZwKQogICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcGFzcwogICAgcmV0dXJuIHJlc3VsdAoKZGVmIF9FbmRSZWNEYXRhNjQoZnBpbiwgb2Zmc2V0LCBlbmRyZWMpOgogICAgIiIiCiAgICBSZWFkIHRoZSBaSVA2NCBlbmQtb2YtYXJjaGl2ZSByZWNvcmRzIGFuZCB1c2UgdGhhdCB0byB1cGRhdGUgZW5kcmVjCiAgICAiIiIKICAgIHRyeToKICAgICAgICBmcGluLnNlZWsob2Zmc2V0IC0gc2l6ZUVuZENlbnREaXI2NExvY2F0b3IsIDIpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAjIElmIHRoZSBzZWVrIGZhaWxzLCB0aGUgZmlsZSBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gYSBaSVA2NAogICAgICAgICMgZW5kLW9mLWFyY2hpdmUgcmVjb3JkLCBzbyBqdXN0IHJldHVybiB0aGUgZW5kIHJlY29yZCB3ZSB3ZXJlIGdpdmVuLgogICAgICAgIHJldHVybiBlbmRyZWMKCiAgICBkYXRhID0gZnBpbi5yZWFkKHNpemVFbmRDZW50RGlyNjRMb2NhdG9yKQogICAgaWYgbGVuKGRhdGEpICE9IHNpemVFbmRDZW50RGlyNjRMb2NhdG9yOgogICAgICAgIHJldHVybiBlbmRyZWMKICAgIHNpZywgZGlza25vLCByZWxvZmYsIGRpc2tzID0gc3RydWN0LnVucGFjayhzdHJ1Y3RFbmRBcmNoaXZlNjRMb2NhdG9yLCBkYXRhKQogICAgaWYgc2lnICE9IHN0cmluZ0VuZEFyY2hpdmU2NExvY2F0b3I6CiAgICAgICAgcmV0dXJuIGVuZHJlYwoKICAgIGlmIGRpc2tubyAhPSAwIG9yIGRpc2tzID4gMToKICAgICAgICByYWlzZSBCYWRaaXBGaWxlKCJ6aXBmaWxlcyB0aGF0IHNwYW4gbXVsdGlwbGUgZGlza3MgYXJlIG5vdCBzdXBwb3J0ZWQiKQoKICAgICMgQXNzdW1lIG5vICd6aXA2NCBleHRlbnNpYmxlIGRhdGEnCiAgICBmcGluLnNlZWsob2Zmc2V0IC0gc2l6ZUVuZENlbnREaXI2NExvY2F0b3IgLSBzaXplRW5kQ2VudERpcjY0LCAyKQogICAgZGF0YSA9IGZwaW4ucmVhZChzaXplRW5kQ2VudERpcjY0KQogICAgaWYgbGVuKGRhdGEpICE9IHNpemVFbmRDZW50RGlyNjQ6CiAgICAgICAgcmV0dXJuIGVuZHJlYwogICAgc2lnLCBzeiwgY3JlYXRlX3ZlcnNpb24sIHJlYWRfdmVyc2lvbiwgZGlza19udW0sIGRpc2tfZGlyLCBcCiAgICAgICAgZGlyY291bnQsIGRpcmNvdW50MiwgZGlyc2l6ZSwgZGlyb2Zmc2V0ID0gXAogICAgICAgIHN0cnVjdC51bnBhY2soc3RydWN0RW5kQXJjaGl2ZTY0LCBkYXRhKQogICAgaWYgc2lnICE9IHN0cmluZ0VuZEFyY2hpdmU2NDoKICAgICAgICByZXR1cm4gZW5kcmVjCgogICAgIyBVcGRhdGUgdGhlIG9yaWdpbmFsIGVuZHJlYyB1c2luZyBkYXRhIGZyb20gdGhlIFpJUDY0IHJlY29yZAogICAgZW5kcmVjW19FQ0RfU0lHTkFUVVJFXSA9IHNpZwogICAgZW5kcmVjW19FQ0RfRElTS19OVU1CRVJdID0gZGlza19udW0KICAgIGVuZHJlY1tfRUNEX0RJU0tfU1RBUlRdID0gZGlza19kaXIKICAgIGVuZHJlY1tfRUNEX0VOVFJJRVNfVEhJU19ESVNLXSA9IGRpcmNvdW50CiAgICBlbmRyZWNbX0VDRF9FTlRSSUVTX1RPVEFMXSA9IGRpcmNvdW50MgogICAgZW5kcmVjW19FQ0RfU0laRV0gPSBkaXJzaXplCiAgICBlbmRyZWNbX0VDRF9PRkZTRVRdID0gZGlyb2Zmc2V0CiAgICByZXR1cm4gZW5kcmVjCgoKZGVmIF9FbmRSZWNEYXRhKGZwaW4pOgogICAgIiIiUmV0dXJuIGRhdGEgZnJvbSB0aGUgIkVuZCBvZiBDZW50cmFsIERpcmVjdG9yeSIgcmVjb3JkLCBvciBOb25lLgoKICAgIFRoZSBkYXRhIGlzIGEgbGlzdCBvZiB0aGUgbmluZSBpdGVtcyBpbiB0aGUgWklQICJFbmQgb2YgY2VudHJhbCBkaXIiCiAgICByZWNvcmQgZm9sbG93ZWQgYnkgYSB0ZW50aCBpdGVtLCB0aGUgZmlsZSBzZWVrIG9mZnNldCBvZiB0aGlzIHJlY29yZC4iIiIKCiAgICAjIERldGVybWluZSBmaWxlIHNpemUKICAgIGZwaW4uc2VlaygwLCAyKQogICAgZmlsZXNpemUgPSBmcGluLnRlbGwoKQoKICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoaXMgaXMgWklQIGZpbGUgd2l0aCBubyBhcmNoaXZlIGNvbW1lbnQgKHRoZQogICAgIyAiZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IiBzdHJ1Y3R1cmUgc2hvdWxkIGJlIHRoZSBsYXN0IGl0ZW0gaW4gdGhlCiAgICAjIGZpbGUgaWYgdGhpcyBpcyB0aGUgY2FzZSkuCiAgICB0cnk6CiAgICAgICAgZnBpbi5zZWVrKC1zaXplRW5kQ2VudERpciwgMikKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHJldHVybiBOb25lCiAgICBkYXRhID0gZnBpbi5yZWFkKCkKICAgIGlmIChsZW4oZGF0YSkgPT0gc2l6ZUVuZENlbnREaXIgYW5kCiAgICAgICAgZGF0YVswOjRdID09IHN0cmluZ0VuZEFyY2hpdmUgYW5kCiAgICAgICAgZGF0YVstMjpdID09IGIiXDAwMFwwMDAiKToKICAgICAgICAjIHRoZSBzaWduYXR1cmUgaXMgY29ycmVjdCBhbmQgdGhlcmUncyBubyBjb21tZW50LCB1bnBhY2sgc3RydWN0dXJlCiAgICAgICAgZW5kcmVjID0gc3RydWN0LnVucGFjayhzdHJ1Y3RFbmRBcmNoaXZlLCBkYXRhKQogICAgICAgIGVuZHJlYz1saXN0KGVuZHJlYykKCiAgICAgICAgIyBBcHBlbmQgYSBibGFuayBjb21tZW50IGFuZCByZWNvcmQgc3RhcnQgb2Zmc2V0CiAgICAgICAgZW5kcmVjLmFwcGVuZChiIiIpCiAgICAgICAgZW5kcmVjLmFwcGVuZChmaWxlc2l6ZSAtIHNpemVFbmRDZW50RGlyKQoKICAgICAgICAjIFRyeSB0byByZWFkIHRoZSAiWmlwNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IiBzdHJ1Y3R1cmUKICAgICAgICByZXR1cm4gX0VuZFJlY0RhdGE2NChmcGluLCAtc2l6ZUVuZENlbnREaXIsIGVuZHJlYykKCiAgICAjIEVpdGhlciB0aGlzIGlzIG5vdCBhIFpJUCBmaWxlLCBvciBpdCBpcyBhIFpJUCBmaWxlIHdpdGggYW4gYXJjaGl2ZQogICAgIyBjb21tZW50LiAgU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGZpbGUgZm9yIHRoZSAiZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IgogICAgIyByZWNvcmQgc2lnbmF0dXJlLiBUaGUgY29tbWVudCBpcyB0aGUgbGFzdCBpdGVtIGluIHRoZSBaSVAgZmlsZSBhbmQgbWF5IGJlCiAgICAjIHVwIHRvIDY0SyBsb25nLiAgSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSAiZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IiBtYWdpYwogICAgIyBudW1iZXIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBjb21tZW50LgogICAgbWF4Q29tbWVudFN0YXJ0ID0gbWF4KGZpbGVzaXplIC0gKDEgPDwgMTYpIC0gc2l6ZUVuZENlbnREaXIsIDApCiAgICBmcGluLnNlZWsobWF4Q29tbWVudFN0YXJ0LCAwKQogICAgZGF0YSA9IGZwaW4ucmVhZCgpCiAgICBzdGFydCA9IGRhdGEucmZpbmQoc3RyaW5nRW5kQXJjaGl2ZSkKICAgIGlmIHN0YXJ0ID49IDA6CiAgICAgICAgIyBmb3VuZCB0aGUgbWFnaWMgbnVtYmVyOyBhdHRlbXB0IHRvIHVucGFjayBhbmQgaW50ZXJwcmV0CiAgICAgICAgcmVjRGF0YSA9IGRhdGFbc3RhcnQ6c3RhcnQrc2l6ZUVuZENlbnREaXJdCiAgICAgICAgaWYgbGVuKHJlY0RhdGEpICE9IHNpemVFbmRDZW50RGlyOgogICAgICAgICAgICAjIFppcCBmaWxlIGlzIGNvcnJ1cHRlZC4KICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBlbmRyZWMgPSBsaXN0KHN0cnVjdC51bnBhY2soc3RydWN0RW5kQXJjaGl2ZSwgcmVjRGF0YSkpCiAgICAgICAgY29tbWVudFNpemUgPSBlbmRyZWNbX0VDRF9DT01NRU5UX1NJWkVdICNhcyBjbGFpbWVkIGJ5IHRoZSB6aXAgZmlsZQogICAgICAgIGNvbW1lbnQgPSBkYXRhW3N0YXJ0K3NpemVFbmRDZW50RGlyOnN0YXJ0K3NpemVFbmRDZW50RGlyK2NvbW1lbnRTaXplXQogICAgICAgIGVuZHJlYy5hcHBlbmQoY29tbWVudCkKICAgICAgICBlbmRyZWMuYXBwZW5kKG1heENvbW1lbnRTdGFydCArIHN0YXJ0KQoKICAgICAgICAjIFRyeSB0byByZWFkIHRoZSAiWmlwNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IiBzdHJ1Y3R1cmUKICAgICAgICByZXR1cm4gX0VuZFJlY0RhdGE2NChmcGluLCBtYXhDb21tZW50U3RhcnQgKyBzdGFydCAtIGZpbGVzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHJlYykKCiAgICAjIFVuYWJsZSB0byBmaW5kIGEgdmFsaWQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IHN0cnVjdHVyZQogICAgcmV0dXJuIE5vbmUKCgpjbGFzcyBaaXBJbmZvIChvYmplY3QpOgogICAgIiIiQ2xhc3Mgd2l0aCBhdHRyaWJ1dGVzIGRlc2NyaWJpbmcgZWFjaCBmaWxlIGluIHRoZSBaSVAgYXJjaGl2ZS4iIiIKCiAgICBfX3Nsb3RzX18gPSAoCiAgICAgICAgJ29yaWdfZmlsZW5hbWUnLAogICAgICAgICdmaWxlbmFtZScsCiAgICAgICAgJ2RhdGVfdGltZScsCiAgICAgICAgJ2NvbXByZXNzX3R5cGUnLAogICAgICAgICdfY29tcHJlc3NsZXZlbCcsCiAgICAgICAgJ2NvbW1lbnQnLAogICAgICAgICdleHRyYScsCiAgICAgICAgJ2NyZWF0ZV9zeXN0ZW0nLAogICAgICAgICdjcmVhdGVfdmVyc2lvbicsCiAgICAgICAgJ2V4dHJhY3RfdmVyc2lvbicsCiAgICAgICAgJ3Jlc2VydmVkJywKICAgICAgICAnZmxhZ19iaXRzJywKICAgICAgICAndm9sdW1lJywKICAgICAgICAnaW50ZXJuYWxfYXR0cicsCiAgICAgICAgJ2V4dGVybmFsX2F0dHInLAogICAgICAgICdoZWFkZXJfb2Zmc2V0JywKICAgICAgICAnQ1JDJywKICAgICAgICAnY29tcHJlc3Nfc2l6ZScsCiAgICAgICAgJ2ZpbGVfc2l6ZScsCiAgICAgICAgJ19yYXdfdGltZScsCiAgICApCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lPSJOb05hbWUiLCBkYXRlX3RpbWU9KDE5ODAsMSwxLDAsMCwwKSk6CiAgICAgICAgc2VsZi5vcmlnX2ZpbGVuYW1lID0gZmlsZW5hbWUgICAjIE9yaWdpbmFsIGZpbGUgbmFtZSBpbiBhcmNoaXZlCgogICAgICAgICMgVGVybWluYXRlIHRoZSBmaWxlIG5hbWUgYXQgdGhlIGZpcnN0IG51bGwgYnl0ZS4gIE51bGwgYnl0ZXMgaW4gZmlsZQogICAgICAgICMgbmFtZXMgYXJlIHVzZWQgYXMgdHJpY2tzIGJ5IHZpcnVzZXMgaW4gYXJjaGl2ZXMuCiAgICAgICAgbnVsbF9ieXRlID0gZmlsZW5hbWUuZmluZChjaHIoMCkpCiAgICAgICAgaWYgbnVsbF9ieXRlID49IDA6CiAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbMDpudWxsX2J5dGVdCiAgICAgICAgIyBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIHBhdGhzIGluIGdlbmVyYXRlZCBaSVAgZmlsZXMgYWx3YXlzIHVzZQogICAgICAgICMgZm9yd2FyZCBzbGFzaGVzIGFzIHRoZSBkaXJlY3Rvcnkgc2VwYXJhdG9yLCBhcyByZXF1aXJlZCBieSB0aGUKICAgICAgICAjIFpJUCBmb3JtYXQgc3BlY2lmaWNhdGlvbi4KICAgICAgICBpZiBvcy5zZXAgIT0gIi8iIGFuZCBvcy5zZXAgaW4gZmlsZW5hbWU6CiAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZShvcy5zZXAsICIvIikKCiAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lICAgICAgICAjIE5vcm1hbGl6ZWQgZmlsZSBuYW1lCiAgICAgICAgc2VsZi5kYXRlX3RpbWUgPSBkYXRlX3RpbWUgICAgICAjIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjCgogICAgICAgIGlmIGRhdGVfdGltZVswXSA8IDE5ODA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1pJUCBkb2VzIG5vdCBzdXBwb3J0IHRpbWVzdGFtcHMgYmVmb3JlIDE5ODAnKQoKICAgICAgICAjIFN0YW5kYXJkIHZhbHVlczoKICAgICAgICBzZWxmLmNvbXByZXNzX3R5cGUgPSBaSVBfU1RPUkVEICMgVHlwZSBvZiBjb21wcmVzc2lvbiBmb3IgdGhlIGZpbGUKICAgICAgICBzZWxmLl9jb21wcmVzc2xldmVsID0gTm9uZSAgICAgICMgTGV2ZWwgZm9yIHRoZSBjb21wcmVzc29yCiAgICAgICAgc2VsZi5jb21tZW50ID0gYiIiICAgICAgICAgICAgICAjIENvbW1lbnQgZm9yIGVhY2ggZmlsZQogICAgICAgIHNlbGYuZXh0cmEgPSBiIiIgICAgICAgICAgICAgICAgIyBaSVAgZXh0cmEgZGF0YQogICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICBzZWxmLmNyZWF0ZV9zeXN0ZW0gPSAwICAgICAgICAgICMgU3lzdGVtIHdoaWNoIGNyZWF0ZWQgWklQIGFyY2hpdmUKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEFzc3VtZSBldmVyeXRoaW5nIGVsc2UgaXMgdW5peC15CiAgICAgICAgICAgIHNlbGYuY3JlYXRlX3N5c3RlbSA9IDMgICAgICAgICAgIyBTeXN0ZW0gd2hpY2ggY3JlYXRlZCBaSVAgYXJjaGl2ZQogICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSBERUZBVUxUX1ZFUlNJT04gICMgVmVyc2lvbiB3aGljaCBjcmVhdGVkIFpJUCBhcmNoaXZlCiAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBERUZBVUxUX1ZFUlNJT04gIyBWZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0IGFyY2hpdmUKICAgICAgICBzZWxmLnJlc2VydmVkID0gMCAgICAgICAgICAgICAgICMgTXVzdCBiZSB6ZXJvCiAgICAgICAgc2VsZi5mbGFnX2JpdHMgPSAwICAgICAgICAgICAgICAjIFpJUCBmbGFnIGJpdHMKICAgICAgICBzZWxmLnZvbHVtZSA9IDAgICAgICAgICAgICAgICAgICMgVm9sdW1lIG51bWJlciBvZiBmaWxlIGhlYWRlcgogICAgICAgIHNlbGYuaW50ZXJuYWxfYXR0ciA9IDAgICAgICAgICAgIyBJbnRlcm5hbCBhdHRyaWJ1dGVzCiAgICAgICAgc2VsZi5leHRlcm5hbF9hdHRyID0gMCAgICAgICAgICAjIEV4dGVybmFsIGZpbGUgYXR0cmlidXRlcwogICAgICAgIHNlbGYuY29tcHJlc3Nfc2l6ZSA9IDAgICAgICAgICAgIyBTaXplIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUKICAgICAgICBzZWxmLmZpbGVfc2l6ZSA9IDAgICAgICAgICAgICAgICMgU2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGZpbGUKICAgICAgICAjIE90aGVyIGF0dHJpYnV0ZXMgYXJlIHNldCBieSBjbGFzcyBaaXBGaWxlOgogICAgICAgICMgaGVhZGVyX29mZnNldCAgICAgICAgIEJ5dGUgb2Zmc2V0IHRvIHRoZSBmaWxlIGhlYWRlcgogICAgICAgICMgQ1JDICAgICAgICAgICAgICAgICAgIENSQy0zMiBvZiB0aGUgdW5jb21wcmVzc2VkIGZpbGUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmVzdWx0ID0gWyc8JXMgZmlsZW5hbWU9JXInICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLmZpbGVuYW1lKV0KICAgICAgICBpZiBzZWxmLmNvbXByZXNzX3R5cGUgIT0gWklQX1NUT1JFRDoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGNvbXByZXNzX3R5cGU9JXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29yX25hbWVzLmdldChzZWxmLmNvbXByZXNzX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21wcmVzc190eXBlKSkKICAgICAgICBoaSA9IHNlbGYuZXh0ZXJuYWxfYXR0ciA+PiAxNgogICAgICAgIGxvID0gc2VsZi5leHRlcm5hbF9hdHRyICYgMHhGRkZGCiAgICAgICAgaWYgaGk6CiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlbW9kZT0lcicgJSBzdGF0LmZpbGVtb2RlKGhpKSkKICAgICAgICBpZiBsbzoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGV4dGVybmFsX2F0dHI9JSN4JyAlIGxvKQogICAgICAgIGlzZGlyID0gc2VsZi5pc19kaXIoKQogICAgICAgIGlmIG5vdCBpc2RpciBvciBzZWxmLmZpbGVfc2l6ZToKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVfc2l6ZT0lcicgJSBzZWxmLmZpbGVfc2l6ZSkKICAgICAgICBpZiAoKG5vdCBpc2RpciBvciBzZWxmLmNvbXByZXNzX3NpemUpIGFuZAogICAgICAgICAgICAoc2VsZi5jb21wcmVzc190eXBlICE9IFpJUF9TVE9SRUQgb3IKICAgICAgICAgICAgIHNlbGYuZmlsZV9zaXplICE9IHNlbGYuY29tcHJlc3Nfc2l6ZSkpOgogICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgY29tcHJlc3Nfc2l6ZT0lcicgJSBzZWxmLmNvbXByZXNzX3NpemUpCiAgICAgICAgcmVzdWx0LmFwcGVuZCgnPicpCiAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQoKICAgIGRlZiBGaWxlSGVhZGVyKHNlbGYsIHppcDY0PU5vbmUpOgogICAgICAgICIiIlJldHVybiB0aGUgcGVyLWZpbGUgaGVhZGVyIGFzIGEgYnl0ZXMgb2JqZWN0LiIiIgogICAgICAgIGR0ID0gc2VsZi5kYXRlX3RpbWUKICAgICAgICBkb3NkYXRlID0gKGR0WzBdIC0gMTk4MCkgPDwgOSB8IGR0WzFdIDw8IDUgfCBkdFsyXQogICAgICAgIGRvc3RpbWUgPSBkdFszXSA8PCAxMSB8IGR0WzRdIDw8IDUgfCAoZHRbNV0gLy8gMikKICAgICAgICBpZiBzZWxmLmZsYWdfYml0cyAmIF9NQVNLX1VTRV9EQVRBX0RFU0NSSVBUT1I6CiAgICAgICAgICAgICMgU2V0IHRoZXNlIHRvIHplcm8gYmVjYXVzZSB3ZSB3cml0ZSB0aGVtIGFmdGVyIHRoZSBmaWxlIGRhdGEKICAgICAgICAgICAgQ1JDID0gY29tcHJlc3Nfc2l6ZSA9IGZpbGVfc2l6ZSA9IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICBDUkMgPSBzZWxmLkNSQwogICAgICAgICAgICBjb21wcmVzc19zaXplID0gc2VsZi5jb21wcmVzc19zaXplCiAgICAgICAgICAgIGZpbGVfc2l6ZSA9IHNlbGYuZmlsZV9zaXplCgogICAgICAgIGV4dHJhID0gc2VsZi5leHRyYQoKICAgICAgICBtaW5fdmVyc2lvbiA9IDAKICAgICAgICBpZiB6aXA2NCBpcyBOb25lOgogICAgICAgICAgICB6aXA2NCA9IGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIGNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVAogICAgICAgIGlmIHppcDY0OgogICAgICAgICAgICBmbXQgPSAnPEhIUVEnCiAgICAgICAgICAgIGV4dHJhID0gZXh0cmEgKyBzdHJ1Y3QucGFjayhmbXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBzdHJ1Y3QuY2FsY3NpemUoZm10KS00LCBmaWxlX3NpemUsIGNvbXByZXNzX3NpemUpCiAgICAgICAgaWYgZmlsZV9zaXplID4gWklQNjRfTElNSVQgb3IgY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICBpZiBub3QgemlwNjQ6CiAgICAgICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUoIkZpbGVzaXplIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCiAgICAgICAgICAgICMgRmlsZSBpcyBsYXJnZXIgdGhhbiB3aGF0IGZpdHMgaW50byBhIDQgYnl0ZSBpbnRlZ2VyLAogICAgICAgICAgICAjIGZhbGwgYmFjayB0byB0aGUgWklQNjQgZXh0ZW5zaW9uCiAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDB4ZmZmZmZmZmYKICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCgogICAgICAgIGlmIHNlbGYuY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CiAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KEJaSVAyX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQogICAgICAgIGVsaWYgc2VsZi5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgogICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChMWk1BX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQoKICAgICAgICBzZWxmLmV4dHJhY3RfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgc2VsZi5leHRyYWN0X3ZlcnNpb24pCiAgICAgICAgc2VsZi5jcmVhdGVfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgc2VsZi5jcmVhdGVfdmVyc2lvbikKICAgICAgICBmaWxlbmFtZSwgZmxhZ19iaXRzID0gc2VsZi5fZW5jb2RlRmlsZW5hbWVGbGFncygpCiAgICAgICAgaGVhZGVyID0gc3RydWN0LnBhY2soc3RydWN0RmlsZUhlYWRlciwgc3RyaW5nRmlsZUhlYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dHJhY3RfdmVyc2lvbiwgc2VsZi5yZXNlcnZlZCwgZmxhZ19iaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tcHJlc3NfdHlwZSwgZG9zdGltZSwgZG9zZGF0ZSwgQ1JDLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUsIGZpbGVfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZmlsZW5hbWUpLCBsZW4oZXh0cmEpKQogICAgICAgIHJldHVybiBoZWFkZXIgKyBmaWxlbmFtZSArIGV4dHJhCgogICAgZGVmIF9lbmNvZGVGaWxlbmFtZUZsYWdzKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWUuZW5jb2RlKCdhc2NpaScpLCBzZWxmLmZsYWdfYml0cwogICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVuYW1lLmVuY29kZSgndXRmLTgnKSwgc2VsZi5mbGFnX2JpdHMgfCBfTUFTS19VVEZfRklMRU5BTUUKCiAgICBkZWYgX2RlY29kZUV4dHJhKHNlbGYpOgogICAgICAgICMgVHJ5IHRvIGRlY29kZSB0aGUgZXh0cmEgZmllbGQuCiAgICAgICAgZXh0cmEgPSBzZWxmLmV4dHJhCiAgICAgICAgdW5wYWNrID0gc3RydWN0LnVucGFjawogICAgICAgIHdoaWxlIGxlbihleHRyYSkgPj0gNDoKICAgICAgICAgICAgdHAsIGxuID0gdW5wYWNrKCc8SEgnLCBleHRyYVs6NF0pCiAgICAgICAgICAgIGlmIGxuKzQgPiBsZW4oZXh0cmEpOgogICAgICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQ29ycnVwdCBleHRyYSBmaWVsZCAlMDR4IChzaXplPSVkKSIgJSAodHAsIGxuKSkKICAgICAgICAgICAgaWYgdHAgPT0gMHgwMDAxOgogICAgICAgICAgICAgICAgZGF0YSA9IGV4dHJhWzQ6bG4rNF0KICAgICAgICAgICAgICAgICMgWklQNjQgZXh0ZW5zaW9uIChsYXJnZSBmaWxlcyBhbmQvb3IgbGFyZ2UgYXJjaGl2ZXMpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5maWxlX3NpemUgaW4gKDB4RkZGRl9GRkZGX0ZGRkZfRkZGRiwgMHhGRkZGX0ZGRkYpOgogICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9ICJGaWxlIHNpemUiCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZV9zaXplLCA9IHVucGFjaygnPFEnLCBkYXRhWzo4XSkKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFbODpdCiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb21wcmVzc19zaXplID09IDB4RkZGRl9GRkZGOgogICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9ICJDb21wcmVzcyBzaXplIgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbXByZXNzX3NpemUsID0gdW5wYWNrKCc8UScsIGRhdGFbOjhdKQogICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVs4Ol0KICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmhlYWRlcl9vZmZzZXQgPT0gMHhGRkZGX0ZGRkY6CiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gIkhlYWRlciBvZmZzZXQiCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGVhZGVyX29mZnNldCwgPSB1bnBhY2soJzxRJywgZGF0YVs6OF0pCiAgICAgICAgICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoZiJDb3JydXB0IHppcDY0IGV4dHJhIGZpZWxkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntmaWVsZH0gbm90IGZvdW5kLiIpIGZyb20gTm9uZQoKICAgICAgICAgICAgZXh0cmEgPSBleHRyYVtsbis0Ol0KCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tX2ZpbGUoY2xzLCBmaWxlbmFtZSwgYXJjbmFtZT1Ob25lLCAqLCBzdHJpY3RfdGltZXN0YW1wcz1UcnVlKToKICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gYXBwcm9wcmlhdGUgWmlwSW5mbyBmb3IgYSBmaWxlIG9uIHRoZSBmaWxlc3lzdGVtLgoKICAgICAgICBmaWxlbmFtZSBzaG91bGQgYmUgdGhlIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBvbiB0aGUgZmlsZXN5c3RlbS4KCiAgICAgICAgYXJjbmFtZSBpcyB0aGUgbmFtZSB3aGljaCBpdCB3aWxsIGhhdmUgd2l0aGluIHRoZSBhcmNoaXZlIChieSBkZWZhdWx0LAogICAgICAgIHRoaXMgd2lsbCBiZSB0aGUgc2FtZSBhcyBmaWxlbmFtZSwgYnV0IHdpdGhvdXQgYSBkcml2ZSBsZXR0ZXIgYW5kIHdpdGgKICAgICAgICBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkKS4KICAgICAgICAiIiIKICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBvcy5QYXRoTGlrZSk6CiAgICAgICAgICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKICAgICAgICBpc2RpciA9IHN0YXQuU19JU0RJUihzdC5zdF9tb2RlKQogICAgICAgIG10aW1lID0gdGltZS5sb2NhbHRpbWUoc3Quc3RfbXRpbWUpCiAgICAgICAgZGF0ZV90aW1lID0gbXRpbWVbMDo2XQogICAgICAgIGlmIG5vdCBzdHJpY3RfdGltZXN0YW1wcyBhbmQgZGF0ZV90aW1lWzBdIDwgMTk4MDoKICAgICAgICAgICAgZGF0ZV90aW1lID0gKDE5ODAsIDEsIDEsIDAsIDAsIDApCiAgICAgICAgZWxpZiBub3Qgc3RyaWN0X3RpbWVzdGFtcHMgYW5kIGRhdGVfdGltZVswXSA+IDIxMDc6CiAgICAgICAgICAgIGRhdGVfdGltZSA9ICgyMTA3LCAxMiwgMzEsIDIzLCA1OSwgNTkpCiAgICAgICAgIyBDcmVhdGUgWmlwSW5mbyBpbnN0YW5jZSB0byBzdG9yZSBmaWxlIGluZm9ybWF0aW9uCiAgICAgICAgaWYgYXJjbmFtZSBpcyBOb25lOgogICAgICAgICAgICBhcmNuYW1lID0gZmlsZW5hbWUKICAgICAgICBhcmNuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLnNwbGl0ZHJpdmUoYXJjbmFtZSlbMV0pCiAgICAgICAgd2hpbGUgYXJjbmFtZVswXSBpbiAob3Muc2VwLCBvcy5hbHRzZXApOgogICAgICAgICAgICBhcmNuYW1lID0gYXJjbmFtZVsxOl0KICAgICAgICBpZiBpc2RpcjoKICAgICAgICAgICAgYXJjbmFtZSArPSAnLycKICAgICAgICB6aW5mbyA9IGNscyhhcmNuYW1lLCBkYXRlX3RpbWUpCiAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9IChzdC5zdF9tb2RlICYgMHhGRkZGKSA8PCAxNiAgIyBVbml4IGF0dHJpYnV0ZXMKICAgICAgICBpZiBpc2RpcjoKICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAogICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyIHw9IDB4MTAgICMgTVMtRE9TIGRpcmVjdG9yeSBmbGFnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQoKICAgICAgICByZXR1cm4gemluZm8KCiAgICBkZWYgaXNfZGlyKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoaXMgYXJjaGl2ZSBtZW1iZXIgaXMgYSBkaXJlY3RvcnkuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWVbLTFdID09ICcvJwoKCiMgWklQIGVuY3J5cHRpb24gdXNlcyB0aGUgQ1JDMzIgb25lLWJ5dGUgcHJpbWl0aXZlIGZvciBzY3JhbWJsaW5nIHNvbWUKIyBpbnRlcm5hbCBrZXlzLiBXZSBub3RpY2VkIHRoYXQgYSBkaXJlY3QgaW1wbGVtZW50YXRpb24gaXMgZmFzdGVyIHRoYW4KIyByZWx5aW5nIG9uIGJpbmFzY2lpLmNyYzMyKCkuCgpfY3JjdGFibGUgPSBOb25lCmRlZiBfZ2VuX2NyYyhjcmMpOgogICAgZm9yIGogaW4gcmFuZ2UoOCk6CiAgICAgICAgaWYgY3JjICYgMToKICAgICAgICAgICAgY3JjID0gKGNyYyA+PiAxKSBeIDB4RURCODgzMjAKICAgICAgICBlbHNlOgogICAgICAgICAgICBjcmMgPj49IDEKICAgIHJldHVybiBjcmMKCiMgWklQIHN1cHBvcnRzIGEgcGFzc3dvcmQtYmFzZWQgZm9ybSBvZiBlbmNyeXB0aW9uLiBFdmVuIHRob3VnaCBrbm93bgojIHBsYWludGV4dCBhdHRhY2tzIGhhdmUgYmVlbiBmb3VuZCBhZ2FpbnN0IGl0LCBpdCBpcyBzdGlsbCB1c2VmdWwKIyB0byBiZSBhYmxlIHRvIGdldCBkYXRhIG91dCBvZiBzdWNoIGEgZmlsZS4KIwojIFVzYWdlOgojICAgICB6ZCA9IF9aaXBEZWNyeXB0ZXIobXlwd2QpCiMgICAgIHBsYWluX2J5dGVzID0gemQoY3lwaGVyX2J5dGVzKQoKZGVmIF9aaXBEZWNyeXB0ZXIocHdkKToKICAgIGtleTAgPSAzMDU0MTk4OTYKICAgIGtleTEgPSA1OTE3NTEwNDkKICAgIGtleTIgPSA4NzgwODIxOTIKCiAgICBnbG9iYWwgX2NyY3RhYmxlCiAgICBpZiBfY3JjdGFibGUgaXMgTm9uZToKICAgICAgICBfY3JjdGFibGUgPSBsaXN0KG1hcChfZ2VuX2NyYywgcmFuZ2UoMjU2KSkpCiAgICBjcmN0YWJsZSA9IF9jcmN0YWJsZQoKICAgIGRlZiBjcmMzMihjaCwgY3JjKToKICAgICAgICAiIiJDb21wdXRlIHRoZSBDUkMzMiBwcmltaXRpdmUgb24gb25lIGJ5dGUuIiIiCiAgICAgICAgcmV0dXJuIChjcmMgPj4gOCkgXiBjcmN0YWJsZVsoY3JjIF4gY2gpICYgMHhGRl0KCiAgICBkZWYgdXBkYXRlX2tleXMoYyk6CiAgICAgICAgbm9ubG9jYWwga2V5MCwga2V5MSwga2V5MgogICAgICAgIGtleTAgPSBjcmMzMihjLCBrZXkwKQogICAgICAgIGtleTEgPSAoa2V5MSArIChrZXkwICYgMHhGRikpICYgMHhGRkZGRkZGRgogICAgICAgIGtleTEgPSAoa2V5MSAqIDEzNDc3NTgxMyArIDEpICYgMHhGRkZGRkZGRgogICAgICAgIGtleTIgPSBjcmMzMihrZXkxID4+IDI0LCBrZXkyKQoKICAgIGZvciBwIGluIHB3ZDoKICAgICAgICB1cGRhdGVfa2V5cyhwKQoKICAgIGRlZiBkZWNyeXB0ZXIoZGF0YSk6CiAgICAgICAgIiIiRGVjcnlwdCBhIGJ5dGVzIG9iamVjdC4iIiIKICAgICAgICByZXN1bHQgPSBieXRlYXJyYXkoKQogICAgICAgIGFwcGVuZCA9IHJlc3VsdC5hcHBlbmQKICAgICAgICBmb3IgYyBpbiBkYXRhOgogICAgICAgICAgICBrID0ga2V5MiB8IDIKICAgICAgICAgICAgYyBePSAoKGsgKiAoa14xKSkgPj4gOCkgJiAweEZGCiAgICAgICAgICAgIHVwZGF0ZV9rZXlzKGMpCiAgICAgICAgICAgIGFwcGVuZChjKQogICAgICAgIHJldHVybiBieXRlcyhyZXN1bHQpCgogICAgcmV0dXJuIGRlY3J5cHRlcgoKCmNsYXNzIExaTUFDb21wcmVzc29yOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9jb21wID0gTm9uZQoKICAgIGRlZiBfaW5pdChzZWxmKToKICAgICAgICBwcm9wcyA9IGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyh7J2lkJzogbHptYS5GSUxURVJfTFpNQTF9KQogICAgICAgIHNlbGYuX2NvbXAgPSBsem1hLkxaTUFDb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1bCiAgICAgICAgICAgIGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9MWk1BMSwgcHJvcHMpCiAgICAgICAgXSkKICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJzxCQkgnLCA5LCA0LCBsZW4ocHJvcHMpKSArIHByb3BzCgogICAgZGVmIGNvbXByZXNzKHNlbGYsIGRhdGEpOgogICAgICAgIGlmIHNlbGYuX2NvbXAgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2luaXQoKSArIHNlbGYuX2NvbXAuY29tcHJlc3MoZGF0YSkKICAgICAgICByZXR1cm4gc2VsZi5fY29tcC5jb21wcmVzcyhkYXRhKQoKICAgIGRlZiBmbHVzaChzZWxmKToKICAgICAgICBpZiBzZWxmLl9jb21wIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbml0KCkgKyBzZWxmLl9jb21wLmZsdXNoKCkKICAgICAgICByZXR1cm4gc2VsZi5fY29tcC5mbHVzaCgpCgoKY2xhc3MgTFpNQURlY29tcHJlc3NvcjoKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fZGVjb21wID0gTm9uZQogICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKICAgICAgICBzZWxmLmVvZiA9IEZhbHNlCgogICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgZGF0YSk6CiAgICAgICAgaWYgc2VsZi5fZGVjb21wIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgKz0gZGF0YQogICAgICAgICAgICBpZiBsZW4oc2VsZi5fdW5jb25zdW1lZCkgPD0gNDoKICAgICAgICAgICAgICAgIHJldHVybiBiJycKICAgICAgICAgICAgcHNpemUsID0gc3RydWN0LnVucGFjaygnPEgnLCBzZWxmLl91bmNvbnN1bWVkWzI6NF0pCiAgICAgICAgICAgIGlmIGxlbihzZWxmLl91bmNvbnN1bWVkKSA8PSA0ICsgcHNpemU6CiAgICAgICAgICAgICAgICByZXR1cm4gYicnCgogICAgICAgICAgICBzZWxmLl9kZWNvbXAgPSBsem1hLkxaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPVsKICAgICAgICAgICAgICAgIGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9MWk1BMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkWzQ6NCArIHBzaXplXSkKICAgICAgICAgICAgXSkKICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3VuY29uc3VtZWRbNCArIHBzaXplOl0KICAgICAgICAgICAgZGVsIHNlbGYuX3VuY29uc3VtZWQKCiAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVjb21wLmRlY29tcHJlc3MoZGF0YSkKICAgICAgICBzZWxmLmVvZiA9IHNlbGYuX2RlY29tcC5lb2YKICAgICAgICByZXR1cm4gcmVzdWx0CgoKY29tcHJlc3Nvcl9uYW1lcyA9IHsKICAgIDA6ICdzdG9yZScsCiAgICAxOiAnc2hyaW5rJywKICAgIDI6ICdyZWR1Y2UnLAogICAgMzogJ3JlZHVjZScsCiAgICA0OiAncmVkdWNlJywKICAgIDU6ICdyZWR1Y2UnLAogICAgNjogJ2ltcGxvZGUnLAogICAgNzogJ3Rva2VuaXplJywKICAgIDg6ICdkZWZsYXRlJywKICAgIDk6ICdkZWZsYXRlNjQnLAogICAgMTA6ICdpbXBsb2RlJywKICAgIDEyOiAnYnppcDInLAogICAgMTQ6ICdsem1hJywKICAgIDE4OiAndGVyc2UnLAogICAgMTk6ICdsejc3JywKICAgIDk3OiAnd2F2cGFjaycsCiAgICA5ODogJ3BwbWQnLAp9CgpkZWYgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzaW9uKToKICAgIGlmIGNvbXByZXNzaW9uID09IFpJUF9TVE9SRUQ6CiAgICAgICAgcGFzcwogICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfREVGTEFURUQ6CiAgICAgICAgaWYgbm90IHpsaWI6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIHpsaWIgbW9kdWxlIikKICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0JaSVAyOgogICAgICAgIGlmIG5vdCBiejI6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIGJ6MiBtb2R1bGUiKQogICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfTFpNQToKICAgICAgICBpZiBub3QgbHptYToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgbHptYSBtb2R1bGUiKQogICAgZWxzZToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKCgpkZWYgX2dldF9jb21wcmVzc29yKGNvbXByZXNzX3R5cGUsIGNvbXByZXNzbGV2ZWw9Tm9uZSk6CiAgICBpZiBjb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKICAgICAgICBpZiBjb21wcmVzc2xldmVsIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gemxpYi5jb21wcmVzc29iaihjb21wcmVzc2xldmVsLCB6bGliLkRFRkxBVEVELCAtMTUpCiAgICAgICAgcmV0dXJuIHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC0xNSkKICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CiAgICAgICAgaWYgY29tcHJlc3NsZXZlbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIGJ6Mi5CWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCiAgICAgICAgcmV0dXJuIGJ6Mi5CWjJDb21wcmVzc29yKCkKICAgICMgY29tcHJlc3NsZXZlbCBpcyBpZ25vcmVkIGZvciBaSVBfTFpNQQogICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9MWk1BOgogICAgICAgIHJldHVybiBMWk1BQ29tcHJlc3NvcigpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCgoKZGVmIF9nZXRfZGVjb21wcmVzc29yKGNvbXByZXNzX3R5cGUpOgogICAgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzX3R5cGUpCiAgICBpZiBjb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQ6CiAgICAgICAgcmV0dXJuIHpsaWIuZGVjb21wcmVzc29iaigtMTUpCiAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgogICAgICAgIHJldHVybiBiejIuQloyRGVjb21wcmVzc29yKCkKICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKICAgICAgICByZXR1cm4gTFpNQURlY29tcHJlc3NvcigpCiAgICBlbHNlOgogICAgICAgIGRlc2NyID0gY29tcHJlc3Nvcl9uYW1lcy5nZXQoY29tcHJlc3NfdHlwZSkKICAgICAgICBpZiBkZXNjcjoKICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3Npb24gdHlwZSAlZCAoJXMpIiAlIChjb21wcmVzc190eXBlLCBkZXNjcikpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3Npb24gdHlwZSAlZCIgJSAoY29tcHJlc3NfdHlwZSwpKQoKCmNsYXNzIF9TaGFyZWRGaWxlOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIHBvcywgY2xvc2UsIGxvY2ssIHdyaXRpbmcpOgogICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCiAgICAgICAgc2VsZi5fcG9zID0gcG9zCiAgICAgICAgc2VsZi5fY2xvc2UgPSBjbG9zZQogICAgICAgIHNlbGYuX2xvY2sgPSBsb2NrCiAgICAgICAgc2VsZi5fd3JpdGluZyA9IHdyaXRpbmcKICAgICAgICBzZWxmLnNlZWthYmxlID0gZmlsZS5zZWVrYWJsZQoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9wb3MKCiAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgIGlmIHNlbGYuX3dyaXRpbmcoKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlcG9zaXRpb24gaW4gdGhlIFpJUCBmaWxlIHdoaWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgInRoZXJlIGlzIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKICAgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSB3cml0aW5nIGhhbmRsZSBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQuIikKICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKG9mZnNldCwgd2hlbmNlKQogICAgICAgICAgICBzZWxmLl9wb3MgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgICAgICByZXR1cm4gc2VsZi5fcG9zCgogICAgZGVmIHJlYWQoc2VsZiwgbj0tMSk6CiAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICBpZiBzZWxmLl93cml0aW5nKCk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZWFkIGZyb20gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlICIKICAgICAgICAgICAgICAgICAgICAgICAgImlzIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKICAgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSB3cml0aW5nIGhhbmRsZSBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQuIikKICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX3BvcykKICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZChuKQogICAgICAgICAgICBzZWxmLl9wb3MgPSBzZWxmLl9maWxlLnRlbGwoKQogICAgICAgICAgICByZXR1cm4gZGF0YQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiBzZWxmLl9maWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBmaWxlb2JqID0gc2VsZi5fZmlsZQogICAgICAgICAgICBzZWxmLl9maWxlID0gTm9uZQogICAgICAgICAgICBzZWxmLl9jbG9zZShmaWxlb2JqKQoKIyBQcm92aWRlIHRoZSB0ZWxsIG1ldGhvZCBmb3IgdW5zZWVrYWJsZSBzdHJlYW0KY2xhc3MgX1RlbGxhYmxlOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwKToKICAgICAgICBzZWxmLmZwID0gZnAKICAgICAgICBzZWxmLm9mZnNldCA9IDAKCiAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgbiA9IHNlbGYuZnAud3JpdGUoZGF0YSkKICAgICAgICBzZWxmLm9mZnNldCArPSBuCiAgICAgICAgcmV0dXJuIG4KCiAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5vZmZzZXQKCiAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgc2VsZi5mcC5mbHVzaCgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHNlbGYuZnAuY2xvc2UoKQoKCmNsYXNzIFppcEV4dEZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgogICAgIiIiRmlsZS1saWtlIG9iamVjdCBmb3IgcmVhZGluZyBhbiBhcmNoaXZlIG1lbWJlci4KICAgICAgIElzIHJldHVybmVkIGJ5IFppcEZpbGUub3BlbigpLgogICAgIiIiCgogICAgIyBNYXggc2l6ZSBzdXBwb3J0ZWQgYnkgZGVjb21wcmVzc29yLgogICAgTUFYX04gPSAxIDw8IDMxIC0gMQoKICAgICMgUmVhZCBmcm9tIGNvbXByZXNzZWQgZmlsZXMgaW4gNGsgYmxvY2tzLgogICAgTUlOX1JFQURfU0laRSA9IDQwOTYKCiAgICAjIENodW5rIHNpemUgdG8gcmVhZCBkdXJpbmcgc2VlawogICAgTUFYX1NFRUtfUkVBRCA9IDEgPDwgMjQKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgbW9kZSwgemlwaW5mbywgcHdkPU5vbmUsCiAgICAgICAgICAgICAgICAgY2xvc2VfZmlsZW9iaj1GYWxzZSk6CiAgICAgICAgc2VsZi5fZmlsZW9iaiA9IGZpbGVvYmoKICAgICAgICBzZWxmLl9wd2QgPSBwd2QKICAgICAgICBzZWxmLl9jbG9zZV9maWxlb2JqID0gY2xvc2VfZmlsZW9iagoKICAgICAgICBzZWxmLl9jb21wcmVzc190eXBlID0gemlwaW5mby5jb21wcmVzc190eXBlCiAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCA9IHppcGluZm8uY29tcHJlc3Nfc2l6ZQogICAgICAgIHNlbGYuX2xlZnQgPSB6aXBpbmZvLmZpbGVfc2l6ZQoKICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBfZ2V0X2RlY29tcHJlc3NvcihzZWxmLl9jb21wcmVzc190eXBlKQoKICAgICAgICBzZWxmLl9lb2YgPSBGYWxzZQogICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCgogICAgICAgIHNlbGYubmV3bGluZXMgPSBOb25lCgogICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICBzZWxmLm5hbWUgPSB6aXBpbmZvLmZpbGVuYW1lCgogICAgICAgIGlmIGhhc2F0dHIoemlwaW5mbywgJ0NSQycpOgogICAgICAgICAgICBzZWxmLl9leHBlY3RlZF9jcmMgPSB6aXBpbmZvLkNSQwogICAgICAgICAgICBzZWxmLl9ydW5uaW5nX2NyYyA9IGNyYzMyKGInJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9leHBlY3RlZF9jcmMgPSBOb25lCgogICAgICAgIHNlbGYuX3NlZWthYmxlID0gRmFsc2UKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGZpbGVvYmouc2Vla2FibGUoKToKICAgICAgICAgICAgICAgIHNlbGYuX29yaWdfY29tcHJlc3Nfc3RhcnQgPSBmaWxlb2JqLnRlbGwoKQogICAgICAgICAgICAgICAgc2VsZi5fb3JpZ19jb21wcmVzc19zaXplID0gemlwaW5mby5jb21wcmVzc19zaXplCiAgICAgICAgICAgICAgICBzZWxmLl9vcmlnX2ZpbGVfc2l6ZSA9IHppcGluZm8uZmlsZV9zaXplCiAgICAgICAgICAgICAgICBzZWxmLl9vcmlnX3N0YXJ0X2NyYyA9IHNlbGYuX3J1bm5pbmdfY3JjCiAgICAgICAgICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IFRydWUKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICAgICAgc2VsZi5fZGVjcnlwdGVyID0gTm9uZQogICAgICAgIGlmIHB3ZDoKICAgICAgICAgICAgaWYgemlwaW5mby5mbGFnX2JpdHMgJiBfTUFTS19VU0VfREFUQV9ERVNDUklQVE9SOgogICAgICAgICAgICAgICAgIyBjb21wYXJlIGFnYWluc3QgdGhlIGZpbGUgdHlwZSBmcm9tIGV4dGVuZGVkIGxvY2FsIGhlYWRlcnMKICAgICAgICAgICAgICAgIGNoZWNrX2J5dGUgPSAoemlwaW5mby5fcmF3X3RpbWUgPj4gOCkgJiAweGZmCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIGNvbXBhcmUgYWdhaW5zdCB0aGUgQ1JDIG90aGVyd2lzZQogICAgICAgICAgICAgICAgY2hlY2tfYnl0ZSA9ICh6aXBpbmZvLkNSQyA+PiAyNCkgJiAweGZmCiAgICAgICAgICAgIGggPSBzZWxmLl9pbml0X2RlY3J5cHRlcigpCiAgICAgICAgICAgIGlmIGggIT0gY2hlY2tfYnl0ZToKICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQmFkIHBhc3N3b3JkIGZvciBmaWxlICVyIiAlIHppcGluZm8ub3JpZ19maWxlbmFtZSkKCgogICAgZGVmIF9pbml0X2RlY3J5cHRlcihzZWxmKToKICAgICAgICBzZWxmLl9kZWNyeXB0ZXIgPSBfWmlwRGVjcnlwdGVyKHNlbGYuX3B3ZCkKICAgICAgICAjIFRoZSBmaXJzdCAxMiBieXRlcyBpbiB0aGUgY3lwaGVyIHN0cmVhbSBpcyBhbiBlbmNyeXB0aW9uIGhlYWRlcgogICAgICAgICMgIHVzZWQgdG8gc3RyZW5ndGhlbiB0aGUgYWxnb3JpdGhtLiBUaGUgZmlyc3QgMTEgYnl0ZXMgYXJlCiAgICAgICAgIyAgY29tcGxldGVseSByYW5kb20sIHdoaWxlIHRoZSAxMnRoIGNvbnRhaW5zIHRoZSBNU0Igb2YgdGhlIENSQywKICAgICAgICAjICBvciB0aGUgTVNCIG9mIHRoZSBmaWxlIHRpbWUgZGVwZW5kaW5nIG9uIHRoZSBoZWFkZXIgdHlwZQogICAgICAgICMgIGFuZCBpcyB1c2VkIHRvIGNoZWNrIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgcGFzc3dvcmQuCiAgICAgICAgaGVhZGVyID0gc2VsZi5fZmlsZW9iai5yZWFkKDEyKQogICAgICAgIHNlbGYuX2NvbXByZXNzX2xlZnQgLT0gMTIKICAgICAgICByZXR1cm4gc2VsZi5fZGVjcnlwdGVyKGhlYWRlcilbMTFdCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJlc3VsdCA9IFsnPCVzLiVzJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pXQogICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIG5hbWU9JXIgbW9kZT0lcicgJSAoc2VsZi5uYW1lLCBzZWxmLm1vZGUpKQogICAgICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlICE9IFpJUF9TVE9SRUQ6CiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgY29tcHJlc3NfdHlwZT0lcycgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29yX25hbWVzLmdldChzZWxmLl9jb21wcmVzc190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc190eXBlKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgW2Nsb3NlZF0nKQogICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKQogICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKCiAgICBkZWYgcmVhZGxpbmUoc2VsZiwgbGltaXQ9LTEpOgogICAgICAgICIiIlJlYWQgYW5kIHJldHVybiBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtLgoKICAgICAgICBJZiBsaW1pdCBpcyBzcGVjaWZpZWQsIGF0IG1vc3QgbGltaXQgYnl0ZXMgd2lsbCBiZSByZWFkLgogICAgICAgICIiIgoKICAgICAgICBpZiBsaW1pdCA8IDA6CiAgICAgICAgICAgICMgU2hvcnRjdXQgY29tbW9uIGNhc2UgLSBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlci4KICAgICAgICAgICAgaSA9IHNlbGYuX3JlYWRidWZmZXIuZmluZChiJ1xuJywgc2VsZi5fb2Zmc2V0KSArIDEKICAgICAgICAgICAgaWYgaSA+IDA6CiAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6IGldCiAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSBpCiAgICAgICAgICAgICAgICByZXR1cm4gbGluZQoKICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgbGltaXQpCgogICAgZGVmIHBlZWsoc2VsZiwgbj0xKToKICAgICAgICAiIiJSZXR1cm5zIGJ1ZmZlcmVkIGJ5dGVzIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBwb3NpdGlvbi4iIiIKICAgICAgICBpZiBuID4gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0OgogICAgICAgICAgICBjaHVuayA9IHNlbGYucmVhZChuKQogICAgICAgICAgICBpZiBsZW4oY2h1bmspID4gc2VsZi5fb2Zmc2V0OgogICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IGNodW5rICsgc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6XQogICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0IC09IGxlbihjaHVuaykKCiAgICAgICAgIyBSZXR1cm4gdXAgdG8gNTEyIGJ5dGVzIHRvIHJlZHVjZSBhbGxvY2F0aW9uIG92ZXJoZWFkIGZvciB0aWdodCBsb29wcy4KICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6IHNlbGYuX29mZnNldCArIDUxMl0KCiAgICBkZWYgcmVhZGFibGUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUuIikKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiByZWFkKHNlbGYsIG49LTEpOgogICAgICAgICIiIlJlYWQgYW5kIHJldHVybiB1cCB0byBuIGJ5dGVzLgogICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBOb25lLCBvciBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlLiIpCiAgICAgICAgaWYgbiBpcyBOb25lIG9yIG4gPCAwOgogICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCiAgICAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fZW9mOgogICAgICAgICAgICAgICAgYnVmICs9IHNlbGYuX3JlYWQxKHNlbGYuTUFYX04pCiAgICAgICAgICAgIHJldHVybiBidWYKCiAgICAgICAgZW5kID0gbiArIHNlbGYuX29mZnNldAogICAgICAgIGlmIGVuZCA8IGxlbihzZWxmLl9yZWFkYnVmZmVyKToKICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQogICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSBlbmQKICAgICAgICAgICAgcmV0dXJuIGJ1ZgoKICAgICAgICBuID0gZW5kIC0gbGVuKHNlbGYuX3JlYWRidWZmZXIpCiAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6XQogICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCiAgICAgICAgd2hpbGUgbiA+IDAgYW5kIG5vdCBzZWxmLl9lb2Y6CiAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQogICAgICAgICAgICBpZiBuIDwgbGVuKGRhdGEpOgogICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IGRhdGEKICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KICAgICAgICAgICAgICAgIGJ1ZiArPSBkYXRhWzpuXQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgYnVmICs9IGRhdGEKICAgICAgICAgICAgbiAtPSBsZW4oZGF0YSkKICAgICAgICByZXR1cm4gYnVmCgogICAgZGVmIF91cGRhdGVfY3JjKHNlbGYsIG5ld2RhdGEpOgogICAgICAgICMgVXBkYXRlIHRoZSBDUkMgdXNpbmcgdGhlIGdpdmVuIGRhdGEuCiAgICAgICAgaWYgc2VsZi5fZXhwZWN0ZWRfY3JjIGlzIE5vbmU6CiAgICAgICAgICAgICMgTm8gbmVlZCB0byBjb21wdXRlIHRoZSBDUkMgaWYgd2UgZG9uJ3QgaGF2ZSBhIHJlZmVyZW5jZSB2YWx1ZQogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLl9ydW5uaW5nX2NyYyA9IGNyYzMyKG5ld2RhdGEsIHNlbGYuX3J1bm5pbmdfY3JjKQogICAgICAgICMgQ2hlY2sgdGhlIENSQyBpZiB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCiAgICAgICAgaWYgc2VsZi5fZW9mIGFuZCBzZWxmLl9ydW5uaW5nX2NyYyAhPSBzZWxmLl9leHBlY3RlZF9jcmM6CiAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIkJhZCBDUkMtMzIgZm9yIGZpbGUgJXIiICUgc2VsZi5uYW1lKQoKICAgIGRlZiByZWFkMShzZWxmLCBuKToKICAgICAgICAiIiJSZWFkIHVwIHRvIG4gYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwuIiIiCgogICAgICAgIGlmIG4gaXMgTm9uZSBvciBuIDwgMDoKICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6XQogICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCiAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IDAKICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX2VvZjoKICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShzZWxmLk1BWF9OKQogICAgICAgICAgICAgICAgaWYgZGF0YToKICAgICAgICAgICAgICAgICAgICBidWYgKz0gZGF0YQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHJldHVybiBidWYKCiAgICAgICAgZW5kID0gbiArIHNlbGYuX29mZnNldAogICAgICAgIGlmIGVuZCA8IGxlbihzZWxmLl9yZWFkYnVmZmVyKToKICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQogICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSBlbmQKICAgICAgICAgICAgcmV0dXJuIGJ1ZgoKICAgICAgICBuID0gZW5kIC0gbGVuKHNlbGYuX3JlYWRidWZmZXIpCiAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6XQogICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCiAgICAgICAgaWYgbiA+IDA6CiAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9lb2Y6CiAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDEobikKICAgICAgICAgICAgICAgIGlmIG4gPCBsZW4oZGF0YSk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IGRhdGEKICAgICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSBuCiAgICAgICAgICAgICAgICAgICAgYnVmICs9IGRhdGFbOm5dCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICAgICAgYnVmICs9IGRhdGEKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHJldHVybiBidWYKCiAgICBkZWYgX3JlYWQxKHNlbGYsIG4pOgogICAgICAgICMgUmVhZCB1cCB0byBuIGNvbXByZXNzZWQgYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwsCiAgICAgICAgIyBkZWNyeXB0IGFuZCBkZWNvbXByZXNzIHRoZW0uCiAgICAgICAgaWYgc2VsZi5fZW9mIG9yIG4gPD0gMDoKICAgICAgICAgICAgcmV0dXJuIGInJwoKICAgICAgICAjIFJlYWQgZnJvbSBmaWxlLgogICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgogICAgICAgICAgICAjIyBIYW5kbGUgdW5jb25zdW1lZCBkYXRhLgogICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbAogICAgICAgICAgICBpZiBuID4gbGVuKGRhdGEpOgogICAgICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9yZWFkMihuIC0gbGVuKGRhdGEpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMihuKQoKICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CiAgICAgICAgICAgIHNlbGYuX2VvZiA9IHNlbGYuX2NvbXByZXNzX2xlZnQgPD0gMAogICAgICAgIGVsaWYgc2VsZi5fY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQ6CiAgICAgICAgICAgIG4gPSBtYXgobiwgc2VsZi5NSU5fUkVBRF9TSVpFKQogICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MoZGF0YSwgbikKICAgICAgICAgICAgc2VsZi5fZW9mID0gKHNlbGYuX2RlY29tcHJlc3Nvci5lb2Ygb3IKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX2xlZnQgPD0gMCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsKQogICAgICAgICAgICBpZiBzZWxmLl9lb2Y6CiAgICAgICAgICAgICAgICBkYXRhICs9IHNlbGYuX2RlY29tcHJlc3Nvci5mbHVzaCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGRhdGEpCiAgICAgICAgICAgIHNlbGYuX2VvZiA9IHNlbGYuX2RlY29tcHJlc3Nvci5lb2Ygb3Igc2VsZi5fY29tcHJlc3NfbGVmdCA8PSAwCgogICAgICAgIGRhdGEgPSBkYXRhWzpzZWxmLl9sZWZ0XQogICAgICAgIHNlbGYuX2xlZnQgLT0gbGVuKGRhdGEpCiAgICAgICAgaWYgc2VsZi5fbGVmdCA8PSAwOgogICAgICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCiAgICAgICAgc2VsZi5fdXBkYXRlX2NyYyhkYXRhKQogICAgICAgIHJldHVybiBkYXRhCgogICAgZGVmIF9yZWFkMihzZWxmLCBuKToKICAgICAgICBpZiBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDA6CiAgICAgICAgICAgIHJldHVybiBiJycKCiAgICAgICAgbiA9IG1heChuLCBzZWxmLk1JTl9SRUFEX1NJWkUpCiAgICAgICAgbiA9IG1pbihuLCBzZWxmLl9jb21wcmVzc19sZWZ0KQoKICAgICAgICBkYXRhID0gc2VsZi5fZmlsZW9iai5yZWFkKG4pCiAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCAtPSBsZW4oZGF0YSkKICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKCiAgICAgICAgaWYgc2VsZi5fZGVjcnlwdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjcnlwdGVyKGRhdGEpCiAgICAgICAgcmV0dXJuIGRhdGEKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlb2JqOgogICAgICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5jbG9zZSgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCgogICAgZGVmIHNlZWthYmxlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlLiIpCiAgICAgICAgcmV0dXJuIHNlbGYuX3NlZWthYmxlCgogICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CiAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlZWsgb24gY2xvc2VkIGZpbGUuIikKICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6CiAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJ1bmRlcmx5aW5nIHN0cmVhbSBpcyBub3Qgc2Vla2FibGUiKQogICAgICAgIGN1cnJfcG9zID0gc2VsZi50ZWxsKCkKICAgICAgICBpZiB3aGVuY2UgPT0gMDogIyBTZWVrIGZyb20gc3RhcnQgb2YgZmlsZQogICAgICAgICAgICBuZXdfcG9zID0gb2Zmc2V0CiAgICAgICAgZWxpZiB3aGVuY2UgPT0gMTogIyBTZWVrIGZyb20gY3VycmVudCBwb3NpdGlvbgogICAgICAgICAgICBuZXdfcG9zID0gY3Vycl9wb3MgKyBvZmZzZXQKICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOiAjIFNlZWsgZnJvbSBFT0YKICAgICAgICAgICAgbmV3X3BvcyA9IHNlbGYuX29yaWdfZmlsZV9zaXplICsgb2Zmc2V0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid2hlbmNlIG11c3QgYmUgb3MuU0VFS19TRVQgKDApLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9zLlNFRUtfQ1VSICgxKSwgb3Igb3MuU0VFS19FTkQgKDIpIikKCiAgICAgICAgaWYgbmV3X3BvcyA+IHNlbGYuX29yaWdfZmlsZV9zaXplOgogICAgICAgICAgICBuZXdfcG9zID0gc2VsZi5fb3JpZ19maWxlX3NpemUKCiAgICAgICAgaWYgbmV3X3BvcyA8IDA6CiAgICAgICAgICAgIG5ld19wb3MgPSAwCgogICAgICAgIHJlYWRfb2Zmc2V0ID0gbmV3X3BvcyAtIGN1cnJfcG9zCiAgICAgICAgYnVmZl9vZmZzZXQgPSByZWFkX29mZnNldCArIHNlbGYuX29mZnNldAoKICAgICAgICBpZiBidWZmX29mZnNldCA+PSAwIGFuZCBidWZmX29mZnNldCA8IGxlbihzZWxmLl9yZWFkYnVmZmVyKToKICAgICAgICAgICAgIyBKdXN0IG1vdmUgdGhlIF9vZmZzZXQgaW5kZXggaWYgdGhlIG5ldyBwb3NpdGlvbiBpcyBpbiB0aGUgX3JlYWRidWZmZXIKICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gYnVmZl9vZmZzZXQKICAgICAgICAgICAgcmVhZF9vZmZzZXQgPSAwCiAgICAgICAgZWxpZiByZWFkX29mZnNldCA8IDA6CiAgICAgICAgICAgICMgUG9zaXRpb24gaXMgYmVmb3JlIHRoZSBjdXJyZW50IHBvc2l0aW9uLiBSZXNldCB0aGUgWmlwRXh0RmlsZQogICAgICAgICAgICBzZWxmLl9maWxlb2JqLnNlZWsoc2VsZi5fb3JpZ19jb21wcmVzc19zdGFydCkKICAgICAgICAgICAgc2VsZi5fcnVubmluZ19jcmMgPSBzZWxmLl9vcmlnX3N0YXJ0X2NyYwogICAgICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0ID0gc2VsZi5fb3JpZ19jb21wcmVzc19zaXplCiAgICAgICAgICAgIHNlbGYuX2xlZnQgPSBzZWxmLl9vcmlnX2ZpbGVfc2l6ZQogICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCiAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IDAKICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gX2dldF9kZWNvbXByZXNzb3Ioc2VsZi5fY29tcHJlc3NfdHlwZSkKICAgICAgICAgICAgc2VsZi5fZW9mID0gRmFsc2UKICAgICAgICAgICAgcmVhZF9vZmZzZXQgPSBuZXdfcG9zCiAgICAgICAgICAgIGlmIHNlbGYuX2RlY3J5cHRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfZGVjcnlwdGVyKCkKCiAgICAgICAgd2hpbGUgcmVhZF9vZmZzZXQgPiAwOgogICAgICAgICAgICByZWFkX2xlbiA9IG1pbihzZWxmLk1BWF9TRUVLX1JFQUQsIHJlYWRfb2Zmc2V0KQogICAgICAgICAgICBzZWxmLnJlYWQocmVhZF9sZW4pCiAgICAgICAgICAgIHJlYWRfb2Zmc2V0IC09IHJlYWRfbGVuCgogICAgICAgIHJldHVybiBzZWxmLnRlbGwoKQoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgIGlmIHNlbGYuY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0ZWxsIG9uIGNsb3NlZCBmaWxlLiIpCiAgICAgICAgaWYgbm90IHNlbGYuX3NlZWthYmxlOgogICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigidW5kZXJseWluZyBzdHJlYW0gaXMgbm90IHNlZWthYmxlIikKICAgICAgICBmaWxlcG9zID0gc2VsZi5fb3JpZ19maWxlX3NpemUgLSBzZWxmLl9sZWZ0IC0gbGVuKHNlbGYuX3JlYWRidWZmZXIpICsgc2VsZi5fb2Zmc2V0CiAgICAgICAgcmV0dXJuIGZpbGVwb3MKCgpjbGFzcyBfWmlwV3JpdGVGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB6ZiwgemluZm8sIHppcDY0KToKICAgICAgICBzZWxmLl96aW5mbyA9IHppbmZvCiAgICAgICAgc2VsZi5femlwNjQgPSB6aXA2NAogICAgICAgIHNlbGYuX3ppcGZpbGUgPSB6ZgogICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLl9jb21wcmVzc2xldmVsKQogICAgICAgIHNlbGYuX2ZpbGVfc2l6ZSA9IDAKICAgICAgICBzZWxmLl9jb21wcmVzc19zaXplID0gMAogICAgICAgIHNlbGYuX2NyYyA9IDAKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfZmlsZW9iaihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5femlwZmlsZS5mcAoKICAgIGRlZiB3cml0YWJsZShzZWxmKToKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZS4nKQoKICAgICAgICAjIEFjY2VwdCBhbnkgZGF0YSB0aGF0IHN1cHBvcnRzIHRoZSBidWZmZXIgcHJvdG9jb2wKICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5KSk6CiAgICAgICAgICAgIG5ieXRlcyA9IGxlbihkYXRhKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGEgPSBtZW1vcnl2aWV3KGRhdGEpCiAgICAgICAgICAgIG5ieXRlcyA9IGRhdGEubmJ5dGVzCiAgICAgICAgc2VsZi5fZmlsZV9zaXplICs9IG5ieXRlcwoKICAgICAgICBzZWxmLl9jcmMgPSBjcmMzMihkYXRhLCBzZWxmLl9jcmMpCiAgICAgICAgaWYgc2VsZi5fY29tcHJlc3NvcjoKICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2NvbXByZXNzb3IuY29tcHJlc3MoZGF0YSkKICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSArPSBsZW4oZGF0YSkKICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKGRhdGEpCiAgICAgICAgcmV0dXJuIG5ieXRlcwoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKICAgICAgICAgICAgIyBGbHVzaCBhbnkgZGF0YSBmcm9tIHRoZSBjb21wcmVzc29yLCBhbmQgdXBkYXRlIGhlYWRlciBpbmZvCiAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzb3I6CiAgICAgICAgICAgICAgICBidWYgPSBzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkKICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgKz0gbGVuKGJ1ZikKICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoYnVmKQogICAgICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSA9IHNlbGYuX2NvbXByZXNzX3NpemUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX3ppbmZvLmNvbXByZXNzX3NpemUgPSBzZWxmLl9maWxlX3NpemUKICAgICAgICAgICAgc2VsZi5femluZm8uQ1JDID0gc2VsZi5fY3JjCiAgICAgICAgICAgIHNlbGYuX3ppbmZvLmZpbGVfc2l6ZSA9IHNlbGYuX2ZpbGVfc2l6ZQoKICAgICAgICAgICAgIyBXcml0ZSB1cGRhdGVkIGhlYWRlciBpbmZvCiAgICAgICAgICAgIGlmIHNlbGYuX3ppbmZvLmZsYWdfYml0cyAmIF9NQVNLX1VTRV9EQVRBX0RFU0NSSVBUT1I6CiAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCiAgICAgICAgICAgICAgICBmbXQgPSAnPExMUVEnIGlmIHNlbGYuX3ppcDY0IGVsc2UgJzxMTExMJwogICAgICAgICAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShzdHJ1Y3QucGFjayhmbXQsIF9ERF9TSUdOQVRVUkUsIHNlbGYuX3ppbmZvLkNSQywKICAgICAgICAgICAgICAgICAgICBzZWxmLl96aW5mby5jb21wcmVzc19zaXplLCBzZWxmLl96aW5mby5maWxlX3NpemUpKQogICAgICAgICAgICAgICAgc2VsZi5femlwZmlsZS5zdGFydF9kaXIgPSBzZWxmLl9maWxlb2JqLnRlbGwoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3ppcDY0OgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlsZSBzaXplIHVuZXhwZWN0ZWRseSBleGNlZWRlZCBaSVA2NCBsaW1pdCcpCiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29tcHJlc3NlZCBzaXplIHVuZXhwZWN0ZWRseSBleGNlZWRlZCBaSVA2NCBsaW1pdCcpCiAgICAgICAgICAgICAgICAjIFNlZWsgYmFja3dhcmRzIGFuZCB3cml0ZSBmaWxlIGhlYWRlciAod2hpY2ggd2lsbCBub3cgaW5jbHVkZQogICAgICAgICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKCiAgICAgICAgICAgICAgICAjIFByZXNlcnZlIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQogICAgICAgICAgICAgICAgc2VsZi5femlwZmlsZS5zdGFydF9kaXIgPSBzZWxmLl9maWxlb2JqLnRlbGwoKQogICAgICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5zZWVrKHNlbGYuX3ppbmZvLmhlYWRlcl9vZmZzZXQpCiAgICAgICAgICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKHNlbGYuX3ppbmZvLkZpbGVIZWFkZXIoc2VsZi5femlwNjQpKQogICAgICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5zZWVrKHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyKQoKICAgICAgICAgICAgIyBTdWNjZXNzZnVsbHkgd3JpdHRlbjogQWRkIGZpbGUgdG8gb3VyIGNhY2hlcwogICAgICAgICAgICBzZWxmLl96aXBmaWxlLmZpbGVsaXN0LmFwcGVuZChzZWxmLl96aW5mbykKICAgICAgICAgICAgc2VsZi5femlwZmlsZS5OYW1lVG9JbmZvW3NlbGYuX3ppbmZvLmZpbGVuYW1lXSA9IHNlbGYuX3ppbmZvCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5femlwZmlsZS5fd3JpdGluZyA9IEZhbHNlCgoKCmNsYXNzIFppcEZpbGU6CiAgICAiIiIgQ2xhc3Mgd2l0aCBtZXRob2RzIHRvIG9wZW4sIHJlYWQsIHdyaXRlLCBjbG9zZSwgbGlzdCB6aXAgZmlsZXMuCgogICAgeiA9IFppcEZpbGUoZmlsZSwgbW9kZT0iciIsIGNvbXByZXNzaW9uPVpJUF9TVE9SRUQsIGFsbG93WmlwNjQ9VHJ1ZSwKICAgICAgICAgICAgICAgIGNvbXByZXNzbGV2ZWw9Tm9uZSkKCiAgICBmaWxlOiBFaXRoZXIgdGhlIHBhdGggdG8gdGhlIGZpbGUsIG9yIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICAgIElmIGl0IGlzIGEgcGF0aCwgdGhlIGZpbGUgd2lsbCBiZSBvcGVuZWQgYW5kIGNsb3NlZCBieSBaaXBGaWxlLgogICAgbW9kZTogVGhlIG1vZGUgY2FuIGJlIGVpdGhlciByZWFkICdyJywgd3JpdGUgJ3cnLCBleGNsdXNpdmUgY3JlYXRlICd4JywKICAgICAgICAgIG9yIGFwcGVuZCAnYScuCiAgICBjb21wcmVzc2lvbjogWklQX1NUT1JFRCAobm8gY29tcHJlc3Npb24pLCBaSVBfREVGTEFURUQgKHJlcXVpcmVzIHpsaWIpLAogICAgICAgICAgICAgICAgIFpJUF9CWklQMiAocmVxdWlyZXMgYnoyKSBvciBaSVBfTFpNQSAocmVxdWlyZXMgbHptYSkuCiAgICBhbGxvd1ppcDY0OiBpZiBUcnVlIFppcEZpbGUgd2lsbCBjcmVhdGUgZmlsZXMgd2l0aCBaSVA2NCBleHRlbnNpb25zIHdoZW4KICAgICAgICAgICAgICAgIG5lZWRlZCwgb3RoZXJ3aXNlIGl0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhpcyB3b3VsZAogICAgICAgICAgICAgICAgYmUgbmVjZXNzYXJ5LgogICAgY29tcHJlc3NsZXZlbDogTm9uZSAoZGVmYXVsdCBmb3IgdGhlIGdpdmVuIGNvbXByZXNzaW9uIHR5cGUpIG9yIGFuIGludGVnZXIKICAgICAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgdGhlIGxldmVsIHRvIHBhc3MgdG8gdGhlIGNvbXByZXNzb3IuCiAgICAgICAgICAgICAgICAgICBXaGVuIHVzaW5nIFpJUF9TVE9SRUQgb3IgWklQX0xaTUEgdGhpcyBrZXl3b3JkIGhhcyBubyBlZmZlY3QuCiAgICAgICAgICAgICAgICAgICBXaGVuIHVzaW5nIFpJUF9ERUZMQVRFRCBpbnRlZ2VycyAwIHRocm91Z2ggOSBhcmUgYWNjZXB0ZWQuCiAgICAgICAgICAgICAgICAgICBXaGVuIHVzaW5nIFpJUF9CWklQMiBpbnRlZ2VycyAxIHRocm91Z2ggOSBhcmUgYWNjZXB0ZWQuCgogICAgIiIiCgogICAgZnAgPSBOb25lICAgICAgICAgICAgICAgICAgICMgU2V0IGhlcmUgc2luY2UgX19kZWxfXyBjaGVja3MgaXQKICAgIF93aW5kb3dzX2lsbGVnYWxfbmFtZV90cmFuc190YWJsZSA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZT0iciIsIGNvbXByZXNzaW9uPVpJUF9TVE9SRUQsIGFsbG93WmlwNjQ9VHJ1ZSwKICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsPU5vbmUsICosIHN0cmljdF90aW1lc3RhbXBzPVRydWUsIG1ldGFkYXRhX2VuY29kaW5nPU5vbmUpOgogICAgICAgICIiIk9wZW4gdGhlIFpJUCBmaWxlIHdpdGggbW9kZSByZWFkICdyJywgd3JpdGUgJ3cnLCBleGNsdXNpdmUgY3JlYXRlICd4JywKICAgICAgICBvciBhcHBlbmQgJ2EnLiIiIgogICAgICAgIGlmIG1vZGUgbm90IGluICgncicsICd3JywgJ3gnLCAnYScpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJaaXBGaWxlIHJlcXVpcmVzIG1vZGUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKCiAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzaW9uKQoKICAgICAgICBzZWxmLl9hbGxvd1ppcDY0ID0gYWxsb3daaXA2NAogICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IEZhbHNlCiAgICAgICAgc2VsZi5kZWJ1ZyA9IDAgICMgTGV2ZWwgb2YgcHJpbnRpbmc6IDAgdGhyb3VnaCAzCiAgICAgICAgc2VsZi5OYW1lVG9JbmZvID0ge30gICAgIyBGaW5kIGZpbGUgaW5mbyBnaXZlbiBuYW1lCiAgICAgICAgc2VsZi5maWxlbGlzdCA9IFtdICAgICAgIyBMaXN0IG9mIFppcEluZm8gaW5zdGFuY2VzIGZvciBhcmNoaXZlCiAgICAgICAgc2VsZi5jb21wcmVzc2lvbiA9IGNvbXByZXNzaW9uICAjIE1ldGhvZCBvZiBjb21wcmVzc2lvbgogICAgICAgIHNlbGYuY29tcHJlc3NsZXZlbCA9IGNvbXByZXNzbGV2ZWwKICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgc2VsZi5wd2QgPSBOb25lCiAgICAgICAgc2VsZi5fY29tbWVudCA9IGInJwogICAgICAgIHNlbGYuX3N0cmljdF90aW1lc3RhbXBzID0gc3RyaWN0X3RpbWVzdGFtcHMKICAgICAgICBzZWxmLm1ldGFkYXRhX2VuY29kaW5nID0gbWV0YWRhdGFfZW5jb2RpbmcKCiAgICAgICAgIyBDaGVjayB0aGF0IHdlIGRvbid0IHRyeSB0byB3cml0ZSB3aXRoIG5vbmNvbmZvcm1pbmcgY29kZWNzCiAgICAgICAgaWYgc2VsZi5tZXRhZGF0YV9lbmNvZGluZyBhbmQgbW9kZSAhPSAncic6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAibWV0YWRhdGFfZW5jb2RpbmcgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHJlYWRpbmcgZmlsZXMiKQoKICAgICAgICAjIENoZWNrIGlmIHdlIHdlcmUgcGFzc2VkIGEgZmlsZS1saWtlIG9iamVjdAogICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgb3MuUGF0aExpa2UpOgogICAgICAgICAgICBmaWxlID0gb3MuZnNwYXRoKGZpbGUpCiAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCBzdHIpOgogICAgICAgICAgICAjIE5vLCBpdCdzIGEgZmlsZW5hbWUKICAgICAgICAgICAgc2VsZi5fZmlsZVBhc3NlZCA9IDAKICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGUKICAgICAgICAgICAgbW9kZURpY3QgPSB7J3InIDogJ3JiJywgJ3cnOiAndytiJywgJ3gnOiAneCtiJywgJ2EnIDogJ3IrYicsCiAgICAgICAgICAgICAgICAgICAgICAgICdyK2InOiAndytiJywgJ3crYic6ICd3YicsICd4K2InOiAneGInfQogICAgICAgICAgICBmaWxlbW9kZSA9IG1vZGVEaWN0W21vZGVdCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5mcCA9IGlvLm9wZW4oZmlsZSwgZmlsZW1vZGUpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICBpZiBmaWxlbW9kZSBpbiBtb2RlRGljdDoKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW1vZGUgPSBtb2RlRGljdFtmaWxlbW9kZV0KICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9maWxlUGFzc2VkID0gMQogICAgICAgICAgICBzZWxmLmZwID0gZmlsZQogICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gZ2V0YXR0cihmaWxlLCAnbmFtZScsIE5vbmUpCiAgICAgICAgc2VsZi5fZmlsZVJlZkNudCA9IDEKICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IFRydWUKICAgICAgICBzZWxmLl93cml0aW5nID0gRmFsc2UKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBtb2RlID09ICdyJzoKICAgICAgICAgICAgICAgIHNlbGYuX1JlYWxHZXRDb250ZW50cygpCiAgICAgICAgICAgIGVsaWYgbW9kZSBpbiAoJ3cnLCAneCcpOgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIG1vZGlmaWVkIGZsYWcgc28gY2VudHJhbCBkaXJlY3RvcnkgZ2V0cyB3cml0dGVuCiAgICAgICAgICAgICAgICAjIGV2ZW4gaWYgbm8gZmlsZXMgYXJlIGFkZGVkIHRvIHRoZSBhcmNoaXZlCiAgICAgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQogICAgICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5mcCA9IF9UZWxsYWJsZShzZWxmLmZwKQogICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gMAogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gRmFsc2UKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBTb21lIGZpbGUtbGlrZSBvYmplY3RzIGNhbiBwcm92aWRlIHRlbGwoKSBidXQgbm90IHNlZWsoKQogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IEZhbHNlCiAgICAgICAgICAgIGVsaWYgbW9kZSA9PSAnYSc6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIyBTZWUgaWYgZmlsZSBpcyBhIHppcCBmaWxlCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fUmVhbEdldENvbnRlbnRzKCkKICAgICAgICAgICAgICAgICAgICAjIHNlZWsgdG8gc3RhcnQgb2YgZGlyZWN0b3J5IGFuZCBvdmVyd3JpdGUKICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCiAgICAgICAgICAgICAgICBleGNlcHQgQmFkWmlwRmlsZToKICAgICAgICAgICAgICAgICAgICAjIGZpbGUgaXMgbm90IGEgemlwIGZpbGUsIGp1c3QgYXBwZW5kCiAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKDAsIDIpCgogICAgICAgICAgICAgICAgICAgICMgc2V0IHRoZSBtb2RpZmllZCBmbGFnIHNvIGNlbnRyYWwgZGlyZWN0b3J5IGdldHMgd3JpdHRlbgogICAgICAgICAgICAgICAgICAgICMgZXZlbiBpZiBubyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGFyY2hpdmUKICAgICAgICAgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTW9kZSBtdXN0IGJlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBmcCA9IHNlbGYuZnAKICAgICAgICAgICAgc2VsZi5mcCA9IE5vbmUKICAgICAgICAgICAgc2VsZi5fZnBjbG9zZShmcCkKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgogICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXN1bHQgPSBbJzwlcy4lcycgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fKV0KICAgICAgICBpZiBzZWxmLmZwIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBzZWxmLl9maWxlUGFzc2VkOgogICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGU9JXInICUgc2VsZi5mcCkKICAgICAgICAgICAgZWxpZiBzZWxmLmZpbGVuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVuYW1lPSVyJyAlIHNlbGYuZmlsZW5hbWUpCiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBtb2RlPSVyJyAlIHNlbGYubW9kZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgW2Nsb3NlZF0nKQogICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKQogICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKCiAgICBkZWYgX1JlYWxHZXRDb250ZW50cyhzZWxmKToKICAgICAgICAiIiJSZWFkIGluIHRoZSB0YWJsZSBvZiBjb250ZW50cyBmb3IgdGhlIFpJUCBmaWxlLiIiIgogICAgICAgIGZwID0gc2VsZi5mcAogICAgICAgIHRyeToKICAgICAgICAgICAgZW5kcmVjID0gX0VuZFJlY0RhdGEoZnApCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIkZpbGUgaXMgbm90IGEgemlwIGZpbGUiKQogICAgICAgIGlmIG5vdCBlbmRyZWM6CiAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIkZpbGUgaXMgbm90IGEgemlwIGZpbGUiKQogICAgICAgIGlmIHNlbGYuZGVidWcgPiAxOgogICAgICAgICAgICBwcmludChlbmRyZWMpCiAgICAgICAgc2l6ZV9jZCA9IGVuZHJlY1tfRUNEX1NJWkVdICAgICAgICAgICAgICMgYnl0ZXMgaW4gY2VudHJhbCBkaXJlY3RvcnkKICAgICAgICBvZmZzZXRfY2QgPSBlbmRyZWNbX0VDRF9PRkZTRVRdICAgICAgICAgIyBvZmZzZXQgb2YgY2VudHJhbCBkaXJlY3RvcnkKICAgICAgICBzZWxmLl9jb21tZW50ID0gZW5kcmVjW19FQ0RfQ09NTUVOVF0gICAgIyBhcmNoaXZlIGNvbW1lbnQKCiAgICAgICAgIyAiY29uY2F0IiBpcyB6ZXJvLCB1bmxlc3MgemlwIHdhcyBjb25jYXRlbmF0ZWQgdG8gYW5vdGhlciBmaWxlCiAgICAgICAgY29uY2F0ID0gZW5kcmVjW19FQ0RfTE9DQVRJT05dIC0gc2l6ZV9jZCAtIG9mZnNldF9jZAogICAgICAgIGlmIGVuZHJlY1tfRUNEX1NJR05BVFVSRV0gPT0gc3RyaW5nRW5kQXJjaGl2ZTY0OgogICAgICAgICAgICAjIElmIFppcDY0IGV4dGVuc2lvbiBzdHJ1Y3R1cmVzIGFyZSBwcmVzZW50LCBhY2NvdW50IGZvciB0aGVtCiAgICAgICAgICAgIGNvbmNhdCAtPSAoc2l6ZUVuZENlbnREaXI2NCArIHNpemVFbmRDZW50RGlyNjRMb2NhdG9yKQoKICAgICAgICBpZiBzZWxmLmRlYnVnID4gMjoKICAgICAgICAgICAgaW5mZXJyZWQgPSBjb25jYXQgKyBvZmZzZXRfY2QKICAgICAgICAgICAgcHJpbnQoImdpdmVuLCBpbmZlcnJlZCwgb2Zmc2V0Iiwgb2Zmc2V0X2NkLCBpbmZlcnJlZCwgY29uY2F0KQogICAgICAgICMgc2VsZi5zdGFydF9kaXI6ICBQb3NpdGlvbiBvZiBzdGFydCBvZiBjZW50cmFsIGRpcmVjdG9yeQogICAgICAgIHNlbGYuc3RhcnRfZGlyID0gb2Zmc2V0X2NkICsgY29uY2F0CiAgICAgICAgaWYgc2VsZi5zdGFydF9kaXIgPCAwOgogICAgICAgICAgICByYWlzZSBCYWRaaXBGaWxlKCJCYWQgb2Zmc2V0IGZvciBjZW50cmFsIGRpcmVjdG9yeSIpCiAgICAgICAgZnAuc2VlayhzZWxmLnN0YXJ0X2RpciwgMCkKICAgICAgICBkYXRhID0gZnAucmVhZChzaXplX2NkKQogICAgICAgIGZwID0gaW8uQnl0ZXNJTyhkYXRhKQogICAgICAgIHRvdGFsID0gMAogICAgICAgIHdoaWxlIHRvdGFsIDwgc2l6ZV9jZDoKICAgICAgICAgICAgY2VudGRpciA9IGZwLnJlYWQoc2l6ZUNlbnRyYWxEaXIpCiAgICAgICAgICAgIGlmIGxlbihjZW50ZGlyKSAhPSBzaXplQ2VudHJhbERpcjoKICAgICAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIlRydW5jYXRlZCBjZW50cmFsIGRpcmVjdG9yeSIpCiAgICAgICAgICAgIGNlbnRkaXIgPSBzdHJ1Y3QudW5wYWNrKHN0cnVjdENlbnRyYWxEaXIsIGNlbnRkaXIpCiAgICAgICAgICAgIGlmIGNlbnRkaXJbX0NEX1NJR05BVFVSRV0gIT0gc3RyaW5nQ2VudHJhbERpcjoKICAgICAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIkJhZCBtYWdpYyBudW1iZXIgZm9yIGNlbnRyYWwgZGlyZWN0b3J5IikKICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+IDI6CiAgICAgICAgICAgICAgICBwcmludChjZW50ZGlyKQogICAgICAgICAgICBmaWxlbmFtZSA9IGZwLnJlYWQoY2VudGRpcltfQ0RfRklMRU5BTUVfTEVOR1RIXSkKICAgICAgICAgICAgZmxhZ3MgPSBjZW50ZGlyW19DRF9GTEFHX0JJVFNdCiAgICAgICAgICAgIGlmIGZsYWdzICYgX01BU0tfVVRGX0ZJTEVOQU1FOgogICAgICAgICAgICAgICAgIyBVVEYtOCBmaWxlIG5hbWVzIGV4dGVuc2lvbgogICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgSGlzdG9yaWNhbCBaSVAgZmlsZW5hbWUgZW5jb2RpbmcKICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuZGVjb2RlKHNlbGYubWV0YWRhdGFfZW5jb2Rpbmcgb3IgJ2NwNDM3JykKICAgICAgICAgICAgIyBDcmVhdGUgWmlwSW5mbyBpbnN0YW5jZSB0byBzdG9yZSBmaWxlIGluZm9ybWF0aW9uCiAgICAgICAgICAgIHggPSBaaXBJbmZvKGZpbGVuYW1lKQogICAgICAgICAgICB4LmV4dHJhID0gZnAucmVhZChjZW50ZGlyW19DRF9FWFRSQV9GSUVMRF9MRU5HVEhdKQogICAgICAgICAgICB4LmNvbW1lbnQgPSBmcC5yZWFkKGNlbnRkaXJbX0NEX0NPTU1FTlRfTEVOR1RIXSkKICAgICAgICAgICAgeC5oZWFkZXJfb2Zmc2V0ID0gY2VudGRpcltfQ0RfTE9DQUxfSEVBREVSX09GRlNFVF0KICAgICAgICAgICAgKHguY3JlYXRlX3ZlcnNpb24sIHguY3JlYXRlX3N5c3RlbSwgeC5leHRyYWN0X3ZlcnNpb24sIHgucmVzZXJ2ZWQsCiAgICAgICAgICAgICB4LmZsYWdfYml0cywgeC5jb21wcmVzc190eXBlLCB0LCBkLAogICAgICAgICAgICAgeC5DUkMsIHguY29tcHJlc3Nfc2l6ZSwgeC5maWxlX3NpemUpID0gY2VudGRpclsxOjEyXQogICAgICAgICAgICBpZiB4LmV4dHJhY3RfdmVyc2lvbiA+IE1BWF9FWFRSQUNUX1ZFUlNJT046CiAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJ6aXAgZmlsZSB2ZXJzaW9uICUuMWYiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHguZXh0cmFjdF92ZXJzaW9uIC8gMTApKQogICAgICAgICAgICB4LnZvbHVtZSwgeC5pbnRlcm5hbF9hdHRyLCB4LmV4dGVybmFsX2F0dHIgPSBjZW50ZGlyWzE1OjE4XQogICAgICAgICAgICAjIENvbnZlcnQgZGF0ZS90aW1lIGNvZGUgdG8gKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjKQogICAgICAgICAgICB4Ll9yYXdfdGltZSA9IHQKICAgICAgICAgICAgeC5kYXRlX3RpbWUgPSAoIChkPj45KSsxOTgwLCAoZD4+NSkmMHhGLCBkJjB4MUYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Pj4xMSwgKHQ+PjUpJjB4M0YsICh0JjB4MUYpICogMiApCgogICAgICAgICAgICB4Ll9kZWNvZGVFeHRyYSgpCiAgICAgICAgICAgIHguaGVhZGVyX29mZnNldCA9IHguaGVhZGVyX29mZnNldCArIGNvbmNhdAogICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh4KQogICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9beC5maWxlbmFtZV0gPSB4CgogICAgICAgICAgICAjIHVwZGF0ZSB0b3RhbCBieXRlcyByZWFkIGZyb20gY2VudHJhbCBkaXJlY3RvcnkKICAgICAgICAgICAgdG90YWwgPSAodG90YWwgKyBzaXplQ2VudHJhbERpciArIGNlbnRkaXJbX0NEX0ZJTEVOQU1FX0xFTkdUSF0KICAgICAgICAgICAgICAgICAgICAgKyBjZW50ZGlyW19DRF9FWFRSQV9GSUVMRF9MRU5HVEhdCiAgICAgICAgICAgICAgICAgICAgICsgY2VudGRpcltfQ0RfQ09NTUVOVF9MRU5HVEhdKQoKICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+IDI6CiAgICAgICAgICAgICAgICBwcmludCgidG90YWwiLCB0b3RhbCkKCgogICAgZGVmIG5hbWVsaXN0KHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmlsZSBuYW1lcyBpbiB0aGUgYXJjaGl2ZS4iIiIKICAgICAgICByZXR1cm4gW2RhdGEuZmlsZW5hbWUgZm9yIGRhdGEgaW4gc2VsZi5maWxlbGlzdF0KCiAgICBkZWYgaW5mb2xpc3Qoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjbGFzcyBaaXBJbmZvIGluc3RhbmNlcyBmb3IgZmlsZXMgaW4gdGhlCiAgICAgICAgYXJjaGl2ZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5maWxlbGlzdAoKICAgIGRlZiBwcmludGRpcihzZWxmLCBmaWxlPU5vbmUpOgogICAgICAgICIiIlByaW50IGEgdGFibGUgb2YgY29udGVudHMgZm9yIHRoZSB6aXAgZmlsZS4iIiIKICAgICAgICBwcmludCgiJS00NnMgJTE5cyAlMTJzIiAlICgiRmlsZSBOYW1lIiwgIk1vZGlmaWVkICAgICIsICJTaXplIiksCiAgICAgICAgICAgICAgZmlsZT1maWxlKQogICAgICAgIGZvciB6aW5mbyBpbiBzZWxmLmZpbGVsaXN0OgogICAgICAgICAgICBkYXRlID0gIiVkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6JTAyZCIgJSB6aW5mby5kYXRlX3RpbWVbOjZdCiAgICAgICAgICAgIHByaW50KCIlLTQ2cyAlcyAlMTJkIiAlICh6aW5mby5maWxlbmFtZSwgZGF0ZSwgemluZm8uZmlsZV9zaXplKSwKICAgICAgICAgICAgICAgICAgZmlsZT1maWxlKQoKICAgIGRlZiB0ZXN0emlwKHNlbGYpOgogICAgICAgICIiIlJlYWQgYWxsIHRoZSBmaWxlcyBhbmQgY2hlY2sgdGhlIENSQy4iIiIKICAgICAgICBjaHVua19zaXplID0gMiAqKiAyMAogICAgICAgIGZvciB6aW5mbyBpbiBzZWxmLmZpbGVsaXN0OgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAjIFJlYWQgYnkgY2h1bmtzLCB0byBhdm9pZCBhbiBPdmVyZmxvd0Vycm9yIG9yIGEKICAgICAgICAgICAgICAgICMgTWVtb3J5RXJyb3Igd2l0aCB2ZXJ5IGxhcmdlIGVtYmVkZGVkIGZpbGVzLgogICAgICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4oemluZm8uZmlsZW5hbWUsICJyIikgYXMgZjoKICAgICAgICAgICAgICAgICAgICB3aGlsZSBmLnJlYWQoY2h1bmtfc2l6ZSk6ICAgICAjIENoZWNrIENSQy0zMgogICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGV4Y2VwdCBCYWRaaXBGaWxlOgogICAgICAgICAgICAgICAgcmV0dXJuIHppbmZvLmZpbGVuYW1lCgogICAgZGVmIGdldGluZm8oc2VsZiwgbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBpbnN0YW5jZSBvZiBaaXBJbmZvIGdpdmVuICduYW1lJy4iIiIKICAgICAgICBpbmZvID0gc2VsZi5OYW1lVG9JbmZvLmdldChuYW1lKQogICAgICAgIGlmIGluZm8gaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoCiAgICAgICAgICAgICAgICAnVGhlcmUgaXMgbm8gaXRlbSBuYW1lZCAlciBpbiB0aGUgYXJjaGl2ZScgJSBuYW1lKQoKICAgICAgICByZXR1cm4gaW5mbwoKICAgIGRlZiBzZXRwYXNzd29yZChzZWxmLCBwd2QpOgogICAgICAgICIiIlNldCBkZWZhdWx0IHBhc3N3b3JkIGZvciBlbmNyeXB0ZWQgZmlsZXMuIiIiCiAgICAgICAgaWYgcHdkIGFuZCBub3QgaXNpbnN0YW5jZShwd2QsIGJ5dGVzKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpLl9fbmFtZV9fKQogICAgICAgIGlmIHB3ZDoKICAgICAgICAgICAgc2VsZi5wd2QgPSBwd2QKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnB3ZCA9IE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjb21tZW50KHNlbGYpOgogICAgICAgICIiIlRoZSBjb21tZW50IHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoZSBaSVAgZmlsZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fY29tbWVudAoKICAgIEBjb21tZW50LnNldHRlcgogICAgZGVmIGNvbW1lbnQoc2VsZiwgY29tbWVudCk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWVudCwgYnl0ZXMpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNvbW1lbnQ6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShjb21tZW50KS5fX25hbWVfXykKICAgICAgICAjIGNoZWNrIGZvciB2YWxpZCBjb21tZW50IGxlbmd0aAogICAgICAgIGlmIGxlbihjb21tZW50KSA+IFpJUF9NQVhfQ09NTUVOVDoKICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ0FyY2hpdmUgY29tbWVudCBpcyB0b28gbG9uZzsgdHJ1bmNhdGluZyB0byAlZCBieXRlcycKICAgICAgICAgICAgICAgICAgICAgICAgICAlIFpJUF9NQVhfQ09NTUVOVCwgc3RhY2tsZXZlbD0yKQogICAgICAgICAgICBjb21tZW50ID0gY29tbWVudFs6WklQX01BWF9DT01NRU5UXQogICAgICAgIHNlbGYuX2NvbW1lbnQgPSBjb21tZW50CiAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQoKICAgIGRlZiByZWFkKHNlbGYsIG5hbWUsIHB3ZD1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gZmlsZSBieXRlcyBmb3IgbmFtZS4iIiIKICAgICAgICB3aXRoIHNlbGYub3BlbihuYW1lLCAiciIsIHB3ZCkgYXMgZnA6CiAgICAgICAgICAgIHJldHVybiBmcC5yZWFkKCkKCiAgICBkZWYgb3BlbihzZWxmLCBuYW1lLCBtb2RlPSJyIiwgcHdkPU5vbmUsICosIGZvcmNlX3ppcDY0PUZhbHNlKToKICAgICAgICAiIiJSZXR1cm4gZmlsZS1saWtlIG9iamVjdCBmb3IgJ25hbWUnLgoKICAgICAgICBuYW1lIGlzIGEgc3RyaW5nIGZvciB0aGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgWklQIGZpbGUsIG9yIGEgWmlwSW5mbwogICAgICAgIG9iamVjdC4KCiAgICAgICAgbW9kZSBzaG91bGQgYmUgJ3InIHRvIHJlYWQgYSBmaWxlIGFscmVhZHkgaW4gdGhlIFpJUCBmaWxlLCBvciAndycgdG8KICAgICAgICB3cml0ZSB0byBhIGZpbGUgbmV3bHkgYWRkZWQgdG8gdGhlIGFyY2hpdmUuCgogICAgICAgIHB3ZCBpcyB0aGUgcGFzc3dvcmQgdG8gZGVjcnlwdCBmaWxlcyAob25seSB1c2VkIGZvciByZWFkaW5nKS4KCiAgICAgICAgV2hlbiB3cml0aW5nLCBpZiB0aGUgZmlsZSBzaXplIGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIGJ1dCBtYXkgZXhjZWVkCiAgICAgICAgMiBHaUIsIHBhc3MgZm9yY2VfemlwNjQgdG8gdXNlIHRoZSBaSVA2NCBmb3JtYXQsIHdoaWNoIGNhbiBoYW5kbGUgbGFyZ2UKICAgICAgICBmaWxlcy4gIElmIHRoZSBzaXplIGlzIGtub3duIGluIGFkdmFuY2UsIGl0IGlzIGJlc3QgdG8gcGFzcyBhIFppcEluZm8KICAgICAgICBpbnN0YW5jZSBmb3IgbmFtZSwgd2l0aCB6aW5mby5maWxlX3NpemUgc2V0LgogICAgICAgICIiIgogICAgICAgIGlmIG1vZGUgbm90IGluIHsiciIsICJ3In06CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ29wZW4oKSByZXF1aXJlcyBtb2RlICJyIiBvciAidyInKQogICAgICAgIGlmIHB3ZCBhbmQgKG1vZGUgPT0gInciKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHdkIGlzIG9ubHkgc3VwcG9ydGVkIGZvciByZWFkaW5nIGZpbGVzIikKICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHVzZSBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCgogICAgICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW5mbyBvYmplY3QKICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIFppcEluZm8pOgogICAgICAgICAgICAjICduYW1lJyBpcyBhbHJlYWR5IGFuIGluZm8gb2JqZWN0CiAgICAgICAgICAgIHppbmZvID0gbmFtZQogICAgICAgIGVsaWYgbW9kZSA9PSAndyc6CiAgICAgICAgICAgIHppbmZvID0gWmlwSW5mbyhuYW1lKQogICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgogICAgICAgICAgICB6aW5mby5fY29tcHJlc3NsZXZlbCA9IHNlbGYuY29tcHJlc3NsZXZlbAogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgR2V0IGluZm8gb2JqZWN0IGZvciBuYW1lCiAgICAgICAgICAgIHppbmZvID0gc2VsZi5nZXRpbmZvKG5hbWUpCgogICAgICAgIGlmIG1vZGUgPT0gJ3cnOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fb3Blbl90b193cml0ZSh6aW5mbywgZm9yY2VfemlwNjQ9Zm9yY2VfemlwNjQpCgogICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlYWQgZnJvbSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgIgogICAgICAgICAgICAgICAgICAgICJpcyBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIG9uIGl0LiAiCiAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSB3cml0aW5nIGhhbmRsZSBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQuIikKCiAgICAgICAgIyBPcGVuIGZvciByZWFkaW5nOgogICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgKz0gMQogICAgICAgIHplZl9maWxlID0gX1NoYXJlZEZpbGUoc2VsZi5mcCwgemluZm8uaGVhZGVyX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2ssIGxhbWJkYTogc2VsZi5fd3JpdGluZykKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgU2tpcCB0aGUgZmlsZSBoZWFkZXI6CiAgICAgICAgICAgIGZoZWFkZXIgPSB6ZWZfZmlsZS5yZWFkKHNpemVGaWxlSGVhZGVyKQogICAgICAgICAgICBpZiBsZW4oZmhlYWRlcikgIT0gc2l6ZUZpbGVIZWFkZXI6CiAgICAgICAgICAgICAgICByYWlzZSBCYWRaaXBGaWxlKCJUcnVuY2F0ZWQgZmlsZSBoZWFkZXIiKQogICAgICAgICAgICBmaGVhZGVyID0gc3RydWN0LnVucGFjayhzdHJ1Y3RGaWxlSGVhZGVyLCBmaGVhZGVyKQogICAgICAgICAgICBpZiBmaGVhZGVyW19GSF9TSUdOQVRVUkVdICE9IHN0cmluZ0ZpbGVIZWFkZXI6CiAgICAgICAgICAgICAgICByYWlzZSBCYWRaaXBGaWxlKCJCYWQgbWFnaWMgbnVtYmVyIGZvciBmaWxlIGhlYWRlciIpCgogICAgICAgICAgICBmbmFtZSA9IHplZl9maWxlLnJlYWQoZmhlYWRlcltfRkhfRklMRU5BTUVfTEVOR1RIXSkKICAgICAgICAgICAgaWYgZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXToKICAgICAgICAgICAgICAgIHplZl9maWxlLnJlYWQoZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXSkKCiAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIF9NQVNLX0NPTVBSRVNTRURfUEFUQ0g6CiAgICAgICAgICAgICAgICAjIFppcCAyLjc6IGNvbXByZXNzZWQgcGF0Y2hlZCBkYXRhCiAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJjb21wcmVzc2VkIHBhdGNoZWQgZGF0YSAoZmxhZyBiaXQgNSkiKQoKICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgX01BU0tfU1RST05HX0VOQ1JZUFRJT046CiAgICAgICAgICAgICAgICAjIHN0cm9uZyBlbmNyeXB0aW9uCiAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdHJvbmcgZW5jcnlwdGlvbiAoZmxhZyBiaXQgNikiKQoKICAgICAgICAgICAgaWYgZmhlYWRlcltfRkhfR0VORVJBTF9QVVJQT1NFX0ZMQUdfQklUU10gJiBfTUFTS19VVEZfRklMRU5BTUU6CiAgICAgICAgICAgICAgICAjIFVURi04IGZpbGVuYW1lCiAgICAgICAgICAgICAgICBmbmFtZV9zdHIgPSBmbmFtZS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGZuYW1lX3N0ciA9IGZuYW1lLmRlY29kZShzZWxmLm1ldGFkYXRhX2VuY29kaW5nIG9yICJjcDQzNyIpCgogICAgICAgICAgICBpZiBmbmFtZV9zdHIgIT0gemluZm8ub3JpZ19maWxlbmFtZToKICAgICAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoCiAgICAgICAgICAgICAgICAgICAgJ0ZpbGUgbmFtZSBpbiBkaXJlY3RvcnkgJXIgYW5kIGhlYWRlciAlciBkaWZmZXIuJwogICAgICAgICAgICAgICAgICAgICUgKHppbmZvLm9yaWdfZmlsZW5hbWUsIGZuYW1lKSkKCiAgICAgICAgICAgICMgY2hlY2sgZm9yIGVuY3J5cHRlZCBmbGFnICYgaGFuZGxlIHBhc3N3b3JkCiAgICAgICAgICAgIGlzX2VuY3J5cHRlZCA9IHppbmZvLmZsYWdfYml0cyAmIF9NQVNLX0VOQ1JZUFRFRAogICAgICAgICAgICBpZiBpc19lbmNyeXB0ZWQ6CiAgICAgICAgICAgICAgICBpZiBub3QgcHdkOgogICAgICAgICAgICAgICAgICAgIHB3ZCA9IHNlbGYucHdkCiAgICAgICAgICAgICAgICBpZiBwd2QgYW5kIG5vdCBpc2luc3RhbmNlKHB3ZCwgYnl0ZXMpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicHdkOiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUocHdkKS5fX25hbWVfXykKICAgICAgICAgICAgICAgIGlmIG5vdCBwd2Q6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGaWxlICVyIGlzIGVuY3J5cHRlZCwgcGFzc3dvcmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQgZm9yIGV4dHJhY3Rpb24iICUgbmFtZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHB3ZCA9IE5vbmUKCiAgICAgICAgICAgIHJldHVybiBaaXBFeHRGaWxlKHplZl9maWxlLCBtb2RlLCB6aW5mbywgcHdkLCBUcnVlKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgemVmX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICByYWlzZQoKICAgIGRlZiBfb3Blbl90b193cml0ZShzZWxmLCB6aW5mbywgZm9yY2VfemlwNjQ9RmFsc2UpOgogICAgICAgIGlmIGZvcmNlX3ppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJmb3JjZV96aXA2NCBpcyBUcnVlLCBidXQgYWxsb3daaXA2NCB3YXMgRmFsc2Ugd2hlbiBvcGVuaW5nICIKICAgICAgICAgICAgICAgICJ0aGUgWklQIGZpbGUuIgogICAgICAgICAgICApCiAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3Qgd3JpdGUgdG8gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlIGlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5vdGhlciB3cml0ZSBoYW5kbGUgb3BlbiBvbiBpdC4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgZmlyc3QgaGFuZGxlIGJlZm9yZSBvcGVuaW5nIGFub3RoZXIuIikKCiAgICAgICAgIyBTaXplIGFuZCBDUkMgYXJlIG92ZXJ3cml0dGVuIHdpdGggY29ycmVjdCBkYXRhIGFmdGVyIHByb2Nlc3NpbmcgdGhlIGZpbGUKICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAogICAgICAgIHppbmZvLkNSQyA9IDAKCiAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAogICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CiAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCiAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSBfTUFTS19DT01QUkVTU19PUFRJT05fMQogICAgICAgIGlmIG5vdCBzZWxmLl9zZWVrYWJsZToKICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IF9NQVNLX1VTRV9EQVRBX0RFU0NSSVBUT1IKCiAgICAgICAgaWYgbm90IHppbmZvLmV4dGVybmFsX2F0dHI6CiAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAwbzYwMCA8PCAxNiAgIyBwZXJtaXNzaW9uczogP3J3LS0tLS0tLQoKICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKICAgICAgICB6aXA2NCA9IHNlbGYuX2FsbG93WmlwNjQgYW5kIFwKICAgICAgICAgICAgICAgIChmb3JjZV96aXA2NCBvciB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQpCgogICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgogICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCiAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpCgogICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCiAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQoKICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQoKICAgICAgICBzZWxmLl93cml0aW5nID0gVHJ1ZQogICAgICAgIHJldHVybiBfWmlwV3JpdGVGaWxlKHNlbGYsIHppbmZvLCB6aXA2NCkKCiAgICBkZWYgZXh0cmFjdChzZWxmLCBtZW1iZXIsIHBhdGg9Tm9uZSwgcHdkPU5vbmUpOgogICAgICAgICIiIkV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwKICAgICAgICAgICB1c2luZyBpdHMgZnVsbCBuYW1lLiBJdHMgZmlsZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgYXMgYWNjdXJhdGVseQogICAgICAgICAgIGFzIHBvc3NpYmxlLiBgbWVtYmVyJyBtYXkgYmUgYSBmaWxlbmFtZSBvciBhIFppcEluZm8gb2JqZWN0LiBZb3UgY2FuCiAgICAgICAgICAgc3BlY2lmeSBhIGRpZmZlcmVudCBkaXJlY3RvcnkgdXNpbmcgYHBhdGgnLgogICAgICAgICIiIgogICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgcGF0aCA9IG9zLmdldGN3ZCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQoKICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFjdF9tZW1iZXIobWVtYmVyLCBwYXRoLCBwd2QpCgogICAgZGVmIGV4dHJhY3RhbGwoc2VsZiwgcGF0aD1Ob25lLCBtZW1iZXJzPU5vbmUsIHB3ZD1Ob25lKToKICAgICAgICAiIiJFeHRyYWN0IGFsbCBtZW1iZXJzIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZwogICAgICAgICAgIGRpcmVjdG9yeS4gYHBhdGgnIHNwZWNpZmllcyBhIGRpZmZlcmVudCBkaXJlY3RvcnkgdG8gZXh0cmFjdCB0by4KICAgICAgICAgICBgbWVtYmVycycgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlIGxpc3QgcmV0dXJuZWQKICAgICAgICAgICBieSBuYW1lbGlzdCgpLgogICAgICAgICIiIgogICAgICAgIGlmIG1lbWJlcnMgaXMgTm9uZToKICAgICAgICAgICAgbWVtYmVycyA9IHNlbGYubmFtZWxpc3QoKQoKICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgICAgIHBhdGggPSBvcy5nZXRjd2QoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKCiAgICAgICAgZm9yIHppcGluZm8gaW4gbWVtYmVyczoKICAgICAgICAgICAgc2VsZi5fZXh0cmFjdF9tZW1iZXIoemlwaW5mbywgcGF0aCwgcHdkKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9zYW5pdGl6ZV93aW5kb3dzX25hbWUoY2xzLCBhcmNuYW1lLCBwYXRoc2VwKToKICAgICAgICAiIiJSZXBsYWNlIGJhZCBjaGFyYWN0ZXJzIGFuZCByZW1vdmUgdHJhaWxpbmcgZG90cyBmcm9tIHBhcnRzLiIiIgogICAgICAgIHRhYmxlID0gY2xzLl93aW5kb3dzX2lsbGVnYWxfbmFtZV90cmFuc190YWJsZQogICAgICAgIGlmIG5vdCB0YWJsZToKICAgICAgICAgICAgaWxsZWdhbCA9ICc6PD58Ij8qJwogICAgICAgICAgICB0YWJsZSA9IHN0ci5tYWtldHJhbnMoaWxsZWdhbCwgJ18nICogbGVuKGlsbGVnYWwpKQogICAgICAgICAgICBjbHMuX3dpbmRvd3NfaWxsZWdhbF9uYW1lX3RyYW5zX3RhYmxlID0gdGFibGUKICAgICAgICBhcmNuYW1lID0gYXJjbmFtZS50cmFuc2xhdGUodGFibGUpCiAgICAgICAgIyByZW1vdmUgdHJhaWxpbmcgZG90cwogICAgICAgIGFyY25hbWUgPSAoeC5yc3RyaXAoJy4nKSBmb3IgeCBpbiBhcmNuYW1lLnNwbGl0KHBhdGhzZXApKQogICAgICAgICMgcmVqb2luLCByZW1vdmluZyBlbXB0eSBwYXJ0cy4KICAgICAgICBhcmNuYW1lID0gcGF0aHNlcC5qb2luKHggZm9yIHggaW4gYXJjbmFtZSBpZiB4KQogICAgICAgIHJldHVybiBhcmNuYW1lCgogICAgZGVmIF9leHRyYWN0X21lbWJlcihzZWxmLCBtZW1iZXIsIHRhcmdldHBhdGgsIHB3ZCk6CiAgICAgICAgIiIiRXh0cmFjdCB0aGUgWmlwSW5mbyBvYmplY3QgJ21lbWJlcicgdG8gYSBwaHlzaWNhbAogICAgICAgICAgIGZpbGUgb24gdGhlIHBhdGggdGFyZ2V0cGF0aC4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtZW1iZXIsIFppcEluZm8pOgogICAgICAgICAgICBtZW1iZXIgPSBzZWxmLmdldGluZm8obWVtYmVyKQoKICAgICAgICAjIGJ1aWxkIHRoZSBkZXN0aW5hdGlvbiBwYXRobmFtZSwgcmVwbGFjaW5nCiAgICAgICAgIyBmb3J3YXJkIHNsYXNoZXMgdG8gcGxhdGZvcm0gc3BlY2lmaWMgc2VwYXJhdG9ycy4KICAgICAgICBhcmNuYW1lID0gbWVtYmVyLmZpbGVuYW1lLnJlcGxhY2UoJy8nLCBvcy5wYXRoLnNlcCkKCiAgICAgICAgaWYgb3MucGF0aC5hbHRzZXA6CiAgICAgICAgICAgIGFyY25hbWUgPSBhcmNuYW1lLnJlcGxhY2Uob3MucGF0aC5hbHRzZXAsIG9zLnBhdGguc2VwKQogICAgICAgICMgaW50ZXJwcmV0IGFic29sdXRlIHBhdGhuYW1lIGFzIHJlbGF0aXZlLCByZW1vdmUgZHJpdmUgbGV0dGVyIG9yCiAgICAgICAgIyBVTkMgcGF0aCwgcmVkdW5kYW50IHNlcGFyYXRvcnMsICIuIiBhbmQgIi4uIiBjb21wb25lbnRzLgogICAgICAgIGFyY25hbWUgPSBvcy5wYXRoLnNwbGl0ZHJpdmUoYXJjbmFtZSlbMV0KICAgICAgICBpbnZhbGlkX3BhdGhfcGFydHMgPSAoJycsIG9zLnBhdGguY3VyZGlyLCBvcy5wYXRoLnBhcmRpcikKICAgICAgICBhcmNuYW1lID0gb3MucGF0aC5zZXAuam9pbih4IGZvciB4IGluIGFyY25hbWUuc3BsaXQob3MucGF0aC5zZXApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeCBub3QgaW4gaW52YWxpZF9wYXRoX3BhcnRzKQogICAgICAgIGlmIG9zLnBhdGguc2VwID09ICdcXCc6CiAgICAgICAgICAgICMgZmlsdGVyIGlsbGVnYWwgY2hhcmFjdGVycyBvbiBXaW5kb3dzCiAgICAgICAgICAgIGFyY25hbWUgPSBzZWxmLl9zYW5pdGl6ZV93aW5kb3dzX25hbWUoYXJjbmFtZSwgb3MucGF0aC5zZXApCgogICAgICAgIHRhcmdldHBhdGggPSBvcy5wYXRoLmpvaW4odGFyZ2V0cGF0aCwgYXJjbmFtZSkKICAgICAgICB0YXJnZXRwYXRoID0gb3MucGF0aC5ub3JtcGF0aCh0YXJnZXRwYXRoKQoKICAgICAgICAjIENyZWF0ZSBhbGwgdXBwZXIgZGlyZWN0b3JpZXMgaWYgbmVjZXNzYXJ5LgogICAgICAgIHVwcGVyZGlycyA9IG9zLnBhdGguZGlybmFtZSh0YXJnZXRwYXRoKQogICAgICAgIGlmIHVwcGVyZGlycyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVwcGVyZGlycyk6CiAgICAgICAgICAgIG9zLm1ha2VkaXJzKHVwcGVyZGlycykKCiAgICAgICAgaWYgbWVtYmVyLmlzX2RpcigpOgogICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcih0YXJnZXRwYXRoKToKICAgICAgICAgICAgICAgIG9zLm1rZGlyKHRhcmdldHBhdGgpCiAgICAgICAgICAgIHJldHVybiB0YXJnZXRwYXRoCgogICAgICAgIHdpdGggc2VsZi5vcGVuKG1lbWJlciwgcHdkPXB3ZCkgYXMgc291cmNlLCBcCiAgICAgICAgICAgICBvcGVuKHRhcmdldHBhdGgsICJ3YiIpIGFzIHRhcmdldDoKICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0KQoKICAgICAgICByZXR1cm4gdGFyZ2V0cGF0aAoKICAgIGRlZiBfd3JpdGVjaGVjayhzZWxmLCB6aW5mbyk6CiAgICAgICAgIiIiQ2hlY2sgZm9yIGVycm9ycyBiZWZvcmUgd3JpdGluZyBhIGZpbGUgdG8gdGhlIGFyY2hpdmUuIiIiCiAgICAgICAgaWYgemluZm8uZmlsZW5hbWUgaW4gc2VsZi5OYW1lVG9JbmZvOgogICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgd2FybmluZ3Mud2FybignRHVwbGljYXRlIG5hbWU6ICVyJyAlIHppbmZvLmZpbGVuYW1lLCBzdGFja2xldmVsPTMpCiAgICAgICAgaWYgc2VsZi5tb2RlIG5vdCBpbiAoJ3cnLCAneCcsICdhJyk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlKCkgcmVxdWlyZXMgbW9kZSAndycsICd4Jywgb3IgJ2EnIikKICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKICAgICAgICBfY2hlY2tfY29tcHJlc3Npb24oemluZm8uY29tcHJlc3NfdHlwZSkKICAgICAgICBpZiBub3Qgc2VsZi5fYWxsb3daaXA2NDoKICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSBOb25lCiAgICAgICAgICAgIGlmIGxlbihzZWxmLmZpbGVsaXN0KSA+PSBaSVBfRklMRUNPVU5UX0xJTUlUOgogICAgICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiRmlsZXMgY291bnQiCiAgICAgICAgICAgIGVsaWYgemluZm8uZmlsZV9zaXplID4gWklQNjRfTElNSVQ6CiAgICAgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJGaWxlc2l6ZSIKICAgICAgICAgICAgZWxpZiB6aW5mby5oZWFkZXJfb2Zmc2V0ID4gWklQNjRfTElNSVQ6CiAgICAgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJaaXBmaWxlIHNpemUiCiAgICAgICAgICAgIGlmIHJlcXVpcmVzX3ppcDY0OgogICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKHJlcXVpcmVzX3ppcDY0ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCgogICAgZGVmIHdyaXRlKHNlbGYsIGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUsCiAgICAgICAgICAgICAgY29tcHJlc3NfdHlwZT1Ob25lLCBjb21wcmVzc2xldmVsPU5vbmUpOgogICAgICAgICIiIlB1dCB0aGUgYnl0ZXMgZnJvbSBmaWxlbmFtZSBpbnRvIHRoZSBhcmNoaXZlIHVuZGVyIHRoZSBuYW1lCiAgICAgICAgYXJjbmFtZS4iIiIKICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIHRvIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKICAgICAgICBpZiBzZWxmLl93cml0aW5nOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgIkNhbid0IHdyaXRlIHRvIFpJUCBhcmNoaXZlIHdoaWxlIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgZXhpc3RzIgogICAgICAgICAgICApCgogICAgICAgIHppbmZvID0gWmlwSW5mby5mcm9tX2ZpbGUoZmlsZW5hbWUsIGFyY25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RfdGltZXN0YW1wcz1zZWxmLl9zdHJpY3RfdGltZXN0YW1wcykKCiAgICAgICAgaWYgemluZm8uaXNfZGlyKCk6CiAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCiAgICAgICAgICAgIHppbmZvLkNSQyA9IDAKICAgICAgICAgICAgc2VsZi5ta2Rpcih6aW5mbykKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBzZWxmLmNvbXByZXNzaW9uCgogICAgICAgICAgICBpZiBjb21wcmVzc2xldmVsIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgemluZm8uX2NvbXByZXNzbGV2ZWwgPSBjb21wcmVzc2xldmVsCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB6aW5mby5fY29tcHJlc3NsZXZlbCA9IHNlbGYuY29tcHJlc3NsZXZlbAoKICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBzcmMsIHNlbGYub3Blbih6aW5mbywgJ3cnKSBhcyBkZXN0OgogICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZGVzdCwgMTAyNCo4KQoKICAgIGRlZiB3cml0ZXN0cihzZWxmLCB6aW5mb19vcl9hcmNuYW1lLCBkYXRhLAogICAgICAgICAgICAgICAgIGNvbXByZXNzX3R5cGU9Tm9uZSwgY29tcHJlc3NsZXZlbD1Ob25lKToKICAgICAgICAiIiJXcml0ZSBhIGZpbGUgaW50byB0aGUgYXJjaGl2ZS4gIFRoZSBjb250ZW50cyBpcyAnZGF0YScsIHdoaWNoCiAgICAgICAgbWF5IGJlIGVpdGhlciBhICdzdHInIG9yIGEgJ2J5dGVzJyBpbnN0YW5jZTsgaWYgaXQgaXMgYSAnc3RyJywKICAgICAgICBpdCBpcyBlbmNvZGVkIGFzIFVURi04IGZpcnN0LgogICAgICAgICd6aW5mb19vcl9hcmNuYW1lJyBpcyBlaXRoZXIgYSBaaXBJbmZvIGluc3RhbmNlIG9yCiAgICAgICAgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUuIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgogICAgICAgICAgICBkYXRhID0gZGF0YS5lbmNvZGUoInV0Zi04IikKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh6aW5mb19vcl9hcmNuYW1lLCBaaXBJbmZvKToKICAgICAgICAgICAgemluZm8gPSBaaXBJbmZvKGZpbGVuYW1lPXppbmZvX29yX2FyY25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3RpbWU9dGltZS5sb2NhbHRpbWUodGltZS50aW1lKCkpWzo2XSkKICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KICAgICAgICAgICAgemluZm8uX2NvbXByZXNzbGV2ZWwgPSBzZWxmLmNvbXByZXNzbGV2ZWwKICAgICAgICAgICAgaWYgemluZm8uZmlsZW5hbWVbLTFdID09ICcvJzoKICAgICAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAwbzQwNzc1IDw8IDE2ICAgIyBkcnd4cnd4ci14CiAgICAgICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyIHw9IDB4MTAgICAgICAgICAgICMgTVMtRE9TIGRpcmVjdG9yeSBmbGFnCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gMG82MDAgPDwgMTYgICAgICMgP3J3LS0tLS0tLQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHppbmZvID0gemluZm9fb3JfYXJjbmFtZQoKICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIHRvIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKICAgICAgICBpZiBzZWxmLl93cml0aW5nOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgIkNhbid0IHdyaXRlIHRvIFpJUCBhcmNoaXZlIHdoaWxlIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgZXhpc3RzLiIKICAgICAgICAgICAgKQoKICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQoKICAgICAgICBpZiBjb21wcmVzc2xldmVsIGlzIG5vdCBOb25lOgogICAgICAgICAgICB6aW5mby5fY29tcHJlc3NsZXZlbCA9IGNvbXByZXNzbGV2ZWwKCiAgICAgICAgemluZm8uZmlsZV9zaXplID0gbGVuKGRhdGEpICAgICAgICAgICAgIyBVbmNvbXByZXNzZWQgc2l6ZQogICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4oemluZm8sIG1vZGU9J3cnKSBhcyBkZXN0OgogICAgICAgICAgICAgICAgZGVzdC53cml0ZShkYXRhKQoKICAgIGRlZiBta2RpcihzZWxmLCB6aW5mb19vcl9kaXJlY3RvcnlfbmFtZSwgbW9kZT01MTEpOgogICAgICAgICIiIkNyZWF0ZXMgYSBkaXJlY3RvcnkgaW5zaWRlIHRoZSB6aXAgYXJjaGl2ZS4iIiIKICAgICAgICBpZiBpc2luc3RhbmNlKHppbmZvX29yX2RpcmVjdG9yeV9uYW1lLCBaaXBJbmZvKToKICAgICAgICAgICAgemluZm8gPSB6aW5mb19vcl9kaXJlY3RvcnlfbmFtZQogICAgICAgICAgICBpZiBub3QgemluZm8uaXNfZGlyKCk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgZ2l2ZW4gWmlwSW5mbyBkb2VzIG5vdCBkZXNjcmliZSBhIGRpcmVjdG9yeSIpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHppbmZvX29yX2RpcmVjdG9yeV9uYW1lLCBzdHIpOgogICAgICAgICAgICBkaXJlY3RvcnlfbmFtZSA9IHppbmZvX29yX2RpcmVjdG9yeV9uYW1lCiAgICAgICAgICAgIGlmIG5vdCBkaXJlY3RvcnlfbmFtZS5lbmRzd2l0aCgiLyIpOgogICAgICAgICAgICAgICAgZGlyZWN0b3J5X25hbWUgKz0gIi8iCiAgICAgICAgICAgIHppbmZvID0gWmlwSW5mbyhkaXJlY3RvcnlfbmFtZSkKICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKICAgICAgICAgICAgemluZm8uQ1JDID0gMAogICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gKCgwbzQwMDAwIHwgbW9kZSkgJiAweEZGRkYpIDw8IDE2CiAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJFeHBlY3RlZCB0eXBlIHN0ciBvciBaaXBJbmZvIikKCiAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcwogICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgogICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgogICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IF9NQVNLX0NPTVBSRVNTX09QVElPTl8xCgogICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQogICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCgogICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCiAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcihGYWxzZSkpCiAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAiIiJDYWxsIHRoZSAiY2xvc2UoKSIgbWV0aG9kIGluIGNhc2UgdGhlIHVzZXIgZm9yZ290LiIiIgogICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgZmlsZSwgYW5kIGZvciBtb2RlICd3JywgJ3gnIGFuZCAnYScgd3JpdGUgdGhlIGVuZGluZwogICAgICAgIHJlY29yZHMuIiIiCiAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgY2xvc2UgdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlIGlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBvbiBpdC4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgd3JpdGluZyBoYW5kbGUgYmVmb3JlIGNsb3NpbmcgdGhlIHppcC4iKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoJ3cnLCAneCcsICdhJykgYW5kIHNlbGYuX2RpZE1vZGlmeTogIyB3cml0ZSBlbmRpbmcgcmVjb3JkcwogICAgICAgICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfZW5kX3JlY29yZCgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgZnAgPSBzZWxmLmZwCiAgICAgICAgICAgIHNlbGYuZnAgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX2ZwY2xvc2UoZnApCgogICAgZGVmIF93cml0ZV9lbmRfcmVjb3JkKHNlbGYpOgogICAgICAgIGZvciB6aW5mbyBpbiBzZWxmLmZpbGVsaXN0OiAgICAgICAgICMgd3JpdGUgY2VudHJhbCBkaXJlY3RvcnkKICAgICAgICAgICAgZHQgPSB6aW5mby5kYXRlX3RpbWUKICAgICAgICAgICAgZG9zZGF0ZSA9IChkdFswXSAtIDE5ODApIDw8IDkgfCBkdFsxXSA8PCA1IHwgZHRbMl0KICAgICAgICAgICAgZG9zdGltZSA9IGR0WzNdIDw8IDExIHwgZHRbNF0gPDwgNSB8IChkdFs1XSAvLyAyKQogICAgICAgICAgICBleHRyYSA9IFtdCiAgICAgICAgICAgIGlmIHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIFwKICAgICAgICAgICAgICAgb3IgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmZpbGVfc2l6ZSkKICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5jb21wcmVzc19zaXplKQogICAgICAgICAgICAgICAgZmlsZV9zaXplID0gMHhmZmZmZmZmZgogICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQogICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmNvbXByZXNzX3NpemUKCiAgICAgICAgICAgIGlmIHppbmZvLmhlYWRlcl9vZmZzZXQgPiBaSVA2NF9MSU1JVDoKICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5oZWFkZXJfb2Zmc2V0KQogICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCA9IDB4ZmZmZmZmZmYKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSB6aW5mby5oZWFkZXJfb2Zmc2V0CgogICAgICAgICAgICBleHRyYV9kYXRhID0gemluZm8uZXh0cmEKICAgICAgICAgICAgbWluX3ZlcnNpb24gPSAwCiAgICAgICAgICAgIGlmIGV4dHJhOgogICAgICAgICAgICAgICAgIyBBcHBlbmQgYSBaSVA2NCBmaWVsZCB0byB0aGUgZXh0cmEncwogICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IF9zdHJpcF9leHRyYShleHRyYV9kYXRhLCAoMSwpKQogICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHN0cnVjdC5wYWNrKAogICAgICAgICAgICAgICAgICAgICc8SEgnICsgJ1EnKmxlbihleHRyYSksCiAgICAgICAgICAgICAgICAgICAgMSwgOCpsZW4oZXh0cmEpLCAqZXh0cmEpICsgZXh0cmFfZGF0YQoKICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gWklQNjRfVkVSU0lPTgoKICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CiAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChCWklQMl9WRVJTSU9OLCBtaW5fdmVyc2lvbikKICAgICAgICAgICAgZWxpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgogICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKCiAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgemluZm8uZXh0cmFjdF92ZXJzaW9uKQogICAgICAgICAgICBjcmVhdGVfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgemluZm8uY3JlYXRlX3ZlcnNpb24pCiAgICAgICAgICAgIGZpbGVuYW1lLCBmbGFnX2JpdHMgPSB6aW5mby5fZW5jb2RlRmlsZW5hbWVGbGFncygpCiAgICAgICAgICAgIGNlbnRkaXIgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RDZW50cmFsRGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQ2VudHJhbERpciwgY3JlYXRlX3ZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5jcmVhdGVfc3lzdGVtLCBleHRyYWN0X3ZlcnNpb24sIHppbmZvLnJlc2VydmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19iaXRzLCB6aW5mby5jb21wcmVzc190eXBlLCBkb3N0aW1lLCBkb3NkYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uQ1JDLCBjb21wcmVzc19zaXplLCBmaWxlX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZmlsZW5hbWUpLCBsZW4oZXh0cmFfZGF0YSksIGxlbih6aW5mby5jb21tZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHppbmZvLmludGVybmFsX2F0dHIsIHppbmZvLmV4dGVybmFsX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0KQogICAgICAgICAgICBzZWxmLmZwLndyaXRlKGNlbnRkaXIpCiAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZmlsZW5hbWUpCiAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZXh0cmFfZGF0YSkKICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5jb21tZW50KQoKICAgICAgICBwb3MyID0gc2VsZi5mcC50ZWxsKCkKICAgICAgICAjIFdyaXRlIGVuZC1vZi16aXAtYXJjaGl2ZSByZWNvcmQKICAgICAgICBjZW50RGlyQ291bnQgPSBsZW4oc2VsZi5maWxlbGlzdCkKICAgICAgICBjZW50RGlyU2l6ZSA9IHBvczIgLSBzZWxmLnN0YXJ0X2RpcgogICAgICAgIGNlbnREaXJPZmZzZXQgPSBzZWxmLnN0YXJ0X2RpcgogICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gTm9uZQogICAgICAgIGlmIGNlbnREaXJDb3VudCA+IFpJUF9GSUxFQ09VTlRfTElNSVQ6CiAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkZpbGVzIGNvdW50IgogICAgICAgIGVsaWYgY2VudERpck9mZnNldCA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJDZW50cmFsIGRpcmVjdG9yeSBvZmZzZXQiCiAgICAgICAgZWxpZiBjZW50RGlyU2l6ZSA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJDZW50cmFsIGRpcmVjdG9yeSBzaXplIgogICAgICAgIGlmIHJlcXVpcmVzX3ppcDY0OgogICAgICAgICAgICAjIE5lZWQgdG8gd3JpdGUgdGhlIFpJUDY0IGVuZC1vZi1hcmNoaXZlIHJlY29yZHMKICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93WmlwNjQ6CiAgICAgICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUocmVxdWlyZXNfemlwNjQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKICAgICAgICAgICAgemlwNjRlbmRyZWMgPSBzdHJ1Y3QucGFjaygKICAgICAgICAgICAgICAgIHN0cnVjdEVuZEFyY2hpdmU2NCwgc3RyaW5nRW5kQXJjaGl2ZTY0LAogICAgICAgICAgICAgICAgNDQsIDQ1LCA0NSwgMCwgMCwgY2VudERpckNvdW50LCBjZW50RGlyQ291bnQsCiAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSwgY2VudERpck9mZnNldCkKICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aXA2NGVuZHJlYykKCiAgICAgICAgICAgIHppcDY0bG9jcmVjID0gc3RydWN0LnBhY2soCiAgICAgICAgICAgICAgICBzdHJ1Y3RFbmRBcmNoaXZlNjRMb2NhdG9yLAogICAgICAgICAgICAgICAgc3RyaW5nRW5kQXJjaGl2ZTY0TG9jYXRvciwgMCwgcG9zMiwgMSkKICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aXA2NGxvY3JlYykKICAgICAgICAgICAgY2VudERpckNvdW50ID0gbWluKGNlbnREaXJDb3VudCwgMHhGRkZGKQogICAgICAgICAgICBjZW50RGlyU2l6ZSA9IG1pbihjZW50RGlyU2l6ZSwgMHhGRkZGRkZGRikKICAgICAgICAgICAgY2VudERpck9mZnNldCA9IG1pbihjZW50RGlyT2Zmc2V0LCAweEZGRkZGRkZGKQoKICAgICAgICBlbmRyZWMgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RFbmRBcmNoaXZlLCBzdHJpbmdFbmRBcmNoaXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIGNlbnREaXJDb3VudCwgY2VudERpckNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnREaXJTaXplLCBjZW50RGlyT2Zmc2V0LCBsZW4oc2VsZi5fY29tbWVudCkpCiAgICAgICAgc2VsZi5mcC53cml0ZShlbmRyZWMpCiAgICAgICAgc2VsZi5mcC53cml0ZShzZWxmLl9jb21tZW50KQogICAgICAgIGlmIHNlbGYubW9kZSA9PSAiYSI6CiAgICAgICAgICAgIHNlbGYuZnAudHJ1bmNhdGUoKQogICAgICAgIHNlbGYuZnAuZmx1c2goKQoKICAgIGRlZiBfZnBjbG9zZShzZWxmLCBmcCk6CiAgICAgICAgYXNzZXJ0IHNlbGYuX2ZpbGVSZWZDbnQgPiAwCiAgICAgICAgc2VsZi5fZmlsZVJlZkNudCAtPSAxCiAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVSZWZDbnQgYW5kIG5vdCBzZWxmLl9maWxlUGFzc2VkOgogICAgICAgICAgICBmcC5jbG9zZSgpCgoKY2xhc3MgUHlaaXBGaWxlKFppcEZpbGUpOgogICAgIiIiQ2xhc3MgdG8gY3JlYXRlIFpJUCBhcmNoaXZlcyB3aXRoIFB5dGhvbiBsaWJyYXJ5IGZpbGVzIGFuZCBwYWNrYWdlcy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZT0iciIsIGNvbXByZXNzaW9uPVpJUF9TVE9SRUQsCiAgICAgICAgICAgICAgICAgYWxsb3daaXA2ND1UcnVlLCBvcHRpbWl6ZT0tMSk6CiAgICAgICAgWmlwRmlsZS5fX2luaXRfXyhzZWxmLCBmaWxlLCBtb2RlPW1vZGUsIGNvbXByZXNzaW9uPWNvbXByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3daaXA2ND1hbGxvd1ppcDY0KQogICAgICAgIHNlbGYuX29wdGltaXplID0gb3B0aW1pemUKCiAgICBkZWYgd3JpdGVweShzZWxmLCBwYXRobmFtZSwgYmFzZW5hbWU9IiIsIGZpbHRlcmZ1bmM9Tm9uZSk6CiAgICAgICAgIiIiQWRkIGFsbCBmaWxlcyBmcm9tICJwYXRobmFtZSIgdG8gdGhlIFpJUCBhcmNoaXZlLgoKICAgICAgICBJZiBwYXRobmFtZSBpcyBhIHBhY2thZ2UgZGlyZWN0b3J5LCBzZWFyY2ggdGhlIGRpcmVjdG9yeSBhbmQKICAgICAgICBhbGwgcGFja2FnZSBzdWJkaXJlY3RvcmllcyByZWN1cnNpdmVseSBmb3IgYWxsICoucHkgYW5kIGVudGVyCiAgICAgICAgdGhlIG1vZHVsZXMgaW50byB0aGUgYXJjaGl2ZS4gIElmIHBhdGhuYW1lIGlzIGEgcGxhaW4KICAgICAgICBkaXJlY3RvcnksIGxpc3RkaXIgKi5weSBhbmQgZW50ZXIgYWxsIG1vZHVsZXMuICBFbHNlLCBwYXRobmFtZQogICAgICAgIG11c3QgYmUgYSBQeXRob24gKi5weSBmaWxlIGFuZCB0aGUgbW9kdWxlIHdpbGwgYmUgcHV0IGludG8gdGhlCiAgICAgICAgYXJjaGl2ZS4gIEFkZGVkIG1vZHVsZXMgYXJlIGFsd2F5cyBtb2R1bGUucHljLgogICAgICAgIFRoaXMgbWV0aG9kIHdpbGwgY29tcGlsZSB0aGUgbW9kdWxlLnB5IGludG8gbW9kdWxlLnB5YyBpZgogICAgICAgIG5lY2Vzc2FyeS4KICAgICAgICBJZiBmaWx0ZXJmdW5jKHBhdGhuYW1lKSBpcyBnaXZlbiwgaXQgaXMgY2FsbGVkIHdpdGggZXZlcnkgYXJndW1lbnQuCiAgICAgICAgV2hlbiBpdCBpcyBGYWxzZSwgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGlzIHNraXBwZWQuCiAgICAgICAgIiIiCiAgICAgICAgcGF0aG5hbWUgPSBvcy5mc3BhdGgocGF0aG5hbWUpCiAgICAgICAgaWYgZmlsdGVyZnVuYyBhbmQgbm90IGZpbHRlcmZ1bmMocGF0aG5hbWUpOgogICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgbGFiZWwgPSAncGF0aCcgaWYgb3MucGF0aC5pc2RpcihwYXRobmFtZSkgZWxzZSAnZmlsZScKICAgICAgICAgICAgICAgIHByaW50KCclcyAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgKGxhYmVsLCBwYXRobmFtZSkpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGRpciwgbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCiAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRobmFtZSk6CiAgICAgICAgICAgIGluaXRuYW1lID0gb3MucGF0aC5qb2luKHBhdGhuYW1lLCAiX19pbml0X18ucHkiKQogICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShpbml0bmFtZSk6CiAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSBwYWNrYWdlIGRpcmVjdG9yeSwgYWRkIGl0CiAgICAgICAgICAgICAgICBpZiBiYXNlbmFtZToKICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSA9ICIlcy8lcyIgJSAoYmFzZW5hbWUsIG5hbWUpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGJhc2VuYW1lID0gbmFtZQogICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKICAgICAgICAgICAgICAgICAgICBwcmludCgiQWRkaW5nIHBhY2thZ2UgaW4iLCBwYXRobmFtZSwgImFzIiwgYmFzZW5hbWUpCiAgICAgICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShpbml0bmFtZVswOi0zXSwgYmFzZW5hbWUpCiAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgICAgIHByaW50KCJBZGRpbmciLCBhcmNuYW1lKQogICAgICAgICAgICAgICAgc2VsZi53cml0ZShmbmFtZSwgYXJjbmFtZSkKICAgICAgICAgICAgICAgIGRpcmxpc3QgPSBzb3J0ZWQob3MubGlzdGRpcihwYXRobmFtZSkpCiAgICAgICAgICAgICAgICBkaXJsaXN0LnJlbW92ZSgiX19pbml0X18ucHkiKQogICAgICAgICAgICAgICAgIyBBZGQgYWxsICoucHkgZmlsZXMgYW5kIHBhY2thZ2Ugc3ViZGlyZWN0b3JpZXMKICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBkaXJsaXN0OgogICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aG5hbWUsIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgICAgIHJvb3QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHBhdGgsICJfX2luaXRfXy5weSIpKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHBhY2thZ2UgZGlyZWN0b3J5LCBhZGQgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGVweShwYXRoLCBiYXNlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJmdW5jPWZpbHRlcmZ1bmMpICAjIFJlY3Vyc2l2ZSBjYWxsCiAgICAgICAgICAgICAgICAgICAgZWxpZiBleHQgPT0gIi5weSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lLCBhcmNuYW1lID0gc2VsZi5fZ2V0X2NvZGVuYW1lKHBhdGhbMDotM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkFkZGluZyIsIGFyY25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoZm5hbWUsIGFyY25hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIFRoaXMgaXMgTk9UIGEgcGFja2FnZSBkaXJlY3RvcnksIGFkZCBpdHMgZmlsZXMgYXQgdG9wIGxldmVsCiAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgICAgIHByaW50KCJBZGRpbmcgZmlsZXMgZnJvbSBkaXJlY3RvcnkiLCBwYXRobmFtZSkKICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBzb3J0ZWQob3MubGlzdGRpcihwYXRobmFtZSkpOgogICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aG5hbWUsIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgICAgIHJvb3QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgaWYgZXh0ID09ICIucHkiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWx0ZXJmdW5jIGFuZCBub3QgZmlsdGVyZnVuYyhwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgJXIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShwYXRoWzA6LTNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJBZGRpbmciLCBhcmNuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGZuYW1lLCBhcmNuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHBhdGhuYW1lWy0zOl0gIT0gIi5weSI6CiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJ0ZpbGVzIGFkZGVkIHdpdGggd3JpdGVweSgpIG11c3QgZW5kIHdpdGggIi5weSInKQogICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShwYXRobmFtZVswOi0zXSwgYmFzZW5hbWUpCiAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgICAgICBwcmludCgiQWRkaW5nIGZpbGUiLCBhcmNuYW1lKQogICAgICAgICAgICBzZWxmLndyaXRlKGZuYW1lLCBhcmNuYW1lKQoKICAgIGRlZiBfZ2V0X2NvZGVuYW1lKHNlbGYsIHBhdGhuYW1lLCBiYXNlbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIChmaWxlbmFtZSwgYXJjaGl2ZW5hbWUpIGZvciB0aGUgcGF0aC4KCiAgICAgICAgR2l2ZW4gYSBtb2R1bGUgbmFtZSBwYXRoLCByZXR1cm4gdGhlIGNvcnJlY3QgZmlsZSBwYXRoIGFuZAogICAgICAgIGFyY2hpdmUgbmFtZSwgY29tcGlsaW5nIGlmIG5lY2Vzc2FyeS4gIEZvciBleGFtcGxlLCBnaXZlbgogICAgICAgIC9weXRob24vbGliL3N0cmluZywgcmV0dXJuICgvcHl0aG9uL2xpYi9zdHJpbmcucHljLCBzdHJpbmcpLgogICAgICAgICIiIgogICAgICAgIGRlZiBfY29tcGlsZShmaWxlLCBvcHRpbWl6ZT0tMSk6CiAgICAgICAgICAgIGltcG9ydCBweV9jb21waWxlCiAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgICAgICBwcmludCgiQ29tcGlsaW5nIiwgZmlsZSkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKGZpbGUsIGRvcmFpc2U9VHJ1ZSwgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgIGV4Y2VwdCBweV9jb21waWxlLlB5Q29tcGlsZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgIHByaW50KGVyci5tc2cpCiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgZmlsZV9weSAgPSBwYXRobmFtZSArICIucHkiCiAgICAgICAgZmlsZV9weWMgPSBwYXRobmFtZSArICIucHljIgogICAgICAgIHB5Y2FjaGVfb3B0MCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIG9wdGltaXphdGlvbj0nJykKICAgICAgICBweWNhY2hlX29wdDEgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBvcHRpbWl6YXRpb249MSkKICAgICAgICBweWNhY2hlX29wdDIgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBvcHRpbWl6YXRpb249MikKICAgICAgICBpZiBzZWxmLl9vcHRpbWl6ZSA9PSAtMToKICAgICAgICAgICAgIyBsZWdhY3kgbW9kZTogdXNlIHdoYXRldmVyIGZpbGUgaXMgcHJlc2VudAogICAgICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUoZmlsZV9weWMpIGFuZAogICAgICAgICAgICAgICAgICBvcy5zdGF0KGZpbGVfcHljKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKICAgICAgICAgICAgICAgICMgVXNlIC5weWMgZmlsZS4KICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmbmFtZSA9IGZpbGVfcHljCiAgICAgICAgICAgIGVsaWYgKG9zLnBhdGguaXNmaWxlKHB5Y2FjaGVfb3B0MCkgYW5kCiAgICAgICAgICAgICAgICAgIG9zLnN0YXQocHljYWNoZV9vcHQwKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKICAgICAgICAgICAgICAgICMgVXNlIHRoZSBfX3B5Y2FjaGVfXy8qLnB5YyBmaWxlLCBidXQgd3JpdGUgaXQgdG8gdGhlIGxlZ2FjeSBweWMKICAgICAgICAgICAgICAgICMgZmlsZSBuYW1lIGluIHRoZSBhcmNoaXZlLgogICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDAKICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwogICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShweWNhY2hlX29wdDEpIGFuZAogICAgICAgICAgICAgICAgICBvcy5zdGF0KHB5Y2FjaGVfb3B0MSkuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CiAgICAgICAgICAgICAgICAjIFVzZSB0aGUgX19weWNhY2hlX18vKi5weWMgZmlsZSwgYnV0IHdyaXRlIGl0IHRvIHRoZSBsZWdhY3kgcHljCiAgICAgICAgICAgICAgICAjIGZpbGUgbmFtZSBpbiB0aGUgYXJjaGl2ZS4KICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQxCiAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUocHljYWNoZV9vcHQyKSBhbmQKICAgICAgICAgICAgICAgICAgb3Muc3RhdChweWNhY2hlX29wdDIpLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgogICAgICAgICAgICAgICAgIyBVc2UgdGhlIF9fcHljYWNoZV9fLyoucHljIGZpbGUsIGJ1dCB3cml0ZSBpdCB0byB0aGUgbGVnYWN5IHB5YwogICAgICAgICAgICAgICAgIyBmaWxlIG5hbWUgaW4gdGhlIGFyY2hpdmUuCiAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MgogICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIENvbXBpbGUgcHkgaW50byBQRVAgMzE0NyBweWMgZmlsZS4KICAgICAgICAgICAgICAgIGlmIF9jb21waWxlKGZpbGVfcHkpOgogICAgICAgICAgICAgICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZSA9PSAwOgogICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MAogICAgICAgICAgICAgICAgICAgIGVsaWYgc3lzLmZsYWdzLm9wdGltaXplID09IDE6CiAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQxCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDIKICAgICAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBhcmNuYW1lID0gZmlsZV9weQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgbmV3IG1vZGU6IHVzZSBnaXZlbiBvcHRpbWl6YXRpb24gbGV2ZWwKICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW1pemUgPT0gMDoKICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQwCiAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwogICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW1pemUgPT0gMToKICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MQogICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9vcHRpbWl6ZSA9PSAyOgogICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQyCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG1zZyA9ICJpbnZhbGlkIHZhbHVlIGZvciAnb3B0aW1pemUnOiB7IXJ9Ii5mb3JtYXQoc2VsZi5fb3B0aW1pemUpCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCiAgICAgICAgICAgIGlmIG5vdCAob3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZAogICAgICAgICAgICAgICAgICAgIG9zLnN0YXQoZm5hbWUpLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgogICAgICAgICAgICAgICAgaWYgbm90IF9jb21waWxlKGZpbGVfcHksIG9wdGltaXplPXNlbGYuX29wdGltaXplKToKICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IGFyY25hbWUgPSBmaWxlX3B5CiAgICAgICAgYXJjaGl2ZW5hbWUgPSBvcy5wYXRoLnNwbGl0KGFyY25hbWUpWzFdCiAgICAgICAgaWYgYmFzZW5hbWU6CiAgICAgICAgICAgIGFyY2hpdmVuYW1lID0gIiVzLyVzIiAlIChiYXNlbmFtZSwgYXJjaGl2ZW5hbWUpCiAgICAgICAgcmV0dXJuIChmbmFtZSwgYXJjaGl2ZW5hbWUpCgoKZGVmIF9wYXJlbnRzKHBhdGgpOgogICAgIiIiCiAgICBHaXZlbiBhIHBhdGggd2l0aCBlbGVtZW50cyBzZXBhcmF0ZWQgYnkKICAgIHBvc2l4cGF0aC5zZXAsIGdlbmVyYXRlIGFsbCBwYXJlbnRzIG9mIHRoYXQgcGF0aC4KCiAgICA+Pj4gbGlzdChfcGFyZW50cygnYi9kJykpCiAgICBbJ2InXQogICAgPj4+IGxpc3QoX3BhcmVudHMoJy9iL2QvJykpCiAgICBbJy9iJ10KICAgID4+PiBsaXN0KF9wYXJlbnRzKCdiL2QvZi8nKSkKICAgIFsnYi9kJywgJ2InXQogICAgPj4+IGxpc3QoX3BhcmVudHMoJ2InKSkKICAgIFtdCiAgICA+Pj4gbGlzdChfcGFyZW50cygnJykpCiAgICBbXQogICAgIiIiCiAgICByZXR1cm4gaXRlcnRvb2xzLmlzbGljZShfYW5jZXN0cnkocGF0aCksIDEsIE5vbmUpCgoKZGVmIF9hbmNlc3RyeShwYXRoKToKICAgICIiIgogICAgR2l2ZW4gYSBwYXRoIHdpdGggZWxlbWVudHMgc2VwYXJhdGVkIGJ5CiAgICBwb3NpeHBhdGguc2VwLCBnZW5lcmF0ZSBhbGwgZWxlbWVudHMgb2YgdGhhdCBwYXRoCgogICAgPj4+IGxpc3QoX2FuY2VzdHJ5KCdiL2QnKSkKICAgIFsnYi9kJywgJ2InXQogICAgPj4+IGxpc3QoX2FuY2VzdHJ5KCcvYi9kLycpKQogICAgWycvYi9kJywgJy9iJ10KICAgID4+PiBsaXN0KF9hbmNlc3RyeSgnYi9kL2YvJykpCiAgICBbJ2IvZC9mJywgJ2IvZCcsICdiJ10KICAgID4+PiBsaXN0KF9hbmNlc3RyeSgnYicpKQogICAgWydiJ10KICAgID4+PiBsaXN0KF9hbmNlc3RyeSgnJykpCiAgICBbXQogICAgIiIiCiAgICBwYXRoID0gcGF0aC5yc3RyaXAocG9zaXhwYXRoLnNlcCkKICAgIHdoaWxlIHBhdGggYW5kIHBhdGggIT0gcG9zaXhwYXRoLnNlcDoKICAgICAgICB5aWVsZCBwYXRoCiAgICAgICAgcGF0aCwgdGFpbCA9IHBvc2l4cGF0aC5zcGxpdChwYXRoKQoKCl9kZWR1cGUgPSBkaWN0LmZyb21rZXlzCiIiIkRlZHVwbGljYXRlIGFuIGl0ZXJhYmxlIGluIG9yaWdpbmFsIG9yZGVyIiIiCgoKZGVmIF9kaWZmZXJlbmNlKG1pbnVlbmQsIHN1YnRyYWhlbmQpOgogICAgIiIiCiAgICBSZXR1cm4gaXRlbXMgaW4gbWludWVuZCBub3QgaW4gc3VidHJhaGVuZCwgcmV0YWluaW5nIG9yZGVyCiAgICB3aXRoIE8oMSkgbG9va3VwLgogICAgIiIiCiAgICByZXR1cm4gaXRlcnRvb2xzLmZpbHRlcmZhbHNlKHNldChzdWJ0cmFoZW5kKS5fX2NvbnRhaW5zX18sIG1pbnVlbmQpCgoKY2xhc3MgQ29tcGxldGVEaXJzKFppcEZpbGUpOgogICAgIiIiCiAgICBBIFppcEZpbGUgc3ViY2xhc3MgdGhhdCBlbnN1cmVzIHRoYXQgaW1wbGllZCBkaXJlY3RvcmllcwogICAgYXJlIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgbmFtZWxpc3QuCiAgICAiIiIKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2ltcGxpZWRfZGlycyhuYW1lcyk6CiAgICAgICAgcGFyZW50cyA9IGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKG1hcChfcGFyZW50cywgbmFtZXMpKQogICAgICAgIGFzX2RpcnMgPSAocCArIHBvc2l4cGF0aC5zZXAgZm9yIHAgaW4gcGFyZW50cykKICAgICAgICByZXR1cm4gX2RlZHVwZShfZGlmZmVyZW5jZShhc19kaXJzLCBuYW1lcykpCgogICAgZGVmIG5hbWVsaXN0KHNlbGYpOgogICAgICAgIG5hbWVzID0gc3VwZXIoQ29tcGxldGVEaXJzLCBzZWxmKS5uYW1lbGlzdCgpCiAgICAgICAgcmV0dXJuIG5hbWVzICsgbGlzdChzZWxmLl9pbXBsaWVkX2RpcnMobmFtZXMpKQoKICAgIGRlZiBfbmFtZV9zZXQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNldChzZWxmLm5hbWVsaXN0KCkpCgogICAgZGVmIHJlc29sdmVfZGlyKHNlbGYsIG5hbWUpOgogICAgICAgICIiIgogICAgICAgIElmIHRoZSBuYW1lIHJlcHJlc2VudHMgYSBkaXJlY3RvcnksIHJldHVybiB0aGF0IG5hbWUKICAgICAgICBhcyBhIGRpcmVjdG9yeSAod2l0aCB0aGUgdHJhaWxpbmcgc2xhc2gpLgogICAgICAgICIiIgogICAgICAgIG5hbWVzID0gc2VsZi5fbmFtZV9zZXQoKQogICAgICAgIGRpcm5hbWUgPSBuYW1lICsgJy8nCiAgICAgICAgZGlyX21hdGNoID0gbmFtZSBub3QgaW4gbmFtZXMgYW5kIGRpcm5hbWUgaW4gbmFtZXMKICAgICAgICByZXR1cm4gZGlybmFtZSBpZiBkaXJfbWF0Y2ggZWxzZSBuYW1lCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgbWFrZShjbHMsIHNvdXJjZSk6CiAgICAgICAgIiIiCiAgICAgICAgR2l2ZW4gYSBzb3VyY2UgKGZpbGVuYW1lIG9yIHppcGZpbGUpLCByZXR1cm4gYW4KICAgICAgICBhcHByb3ByaWF0ZSBDb21wbGV0ZURpcnMgc3ViY2xhc3MuCiAgICAgICAgIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShzb3VyY2UsIENvbXBsZXRlRGlycyk6CiAgICAgICAgICAgIHJldHVybiBzb3VyY2UKCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc291cmNlLCBaaXBGaWxlKToKICAgICAgICAgICAgcmV0dXJuIGNscyhzb3VyY2UpCgogICAgICAgICMgT25seSBhbGxvdyBmb3IgRmFzdExvb2t1cCB3aGVuIHN1cHBsaWVkIHppcGZpbGUgaXMgcmVhZC1vbmx5CiAgICAgICAgaWYgJ3InIG5vdCBpbiBzb3VyY2UubW9kZToKICAgICAgICAgICAgY2xzID0gQ29tcGxldGVEaXJzCgogICAgICAgIHNvdXJjZS5fX2NsYXNzX18gPSBjbHMKICAgICAgICByZXR1cm4gc291cmNlCgoKY2xhc3MgRmFzdExvb2t1cChDb21wbGV0ZURpcnMpOgogICAgIiIiCiAgICBaaXBGaWxlIHN1YmNsYXNzIHRvIGVuc3VyZSBpbXBsaWNpdAogICAgZGlycyBleGlzdCBhbmQgYXJlIHJlc29sdmVkIHJhcGlkbHkuCiAgICAiIiIKCiAgICBkZWYgbmFtZWxpc3Qoc2VsZik6CiAgICAgICAgd2l0aCBjb250ZXh0bGliLnN1cHByZXNzKEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19uYW1lcwogICAgICAgIHNlbGYuX19uYW1lcyA9IHN1cGVyKEZhc3RMb29rdXAsIHNlbGYpLm5hbWVsaXN0KCkKICAgICAgICByZXR1cm4gc2VsZi5fX25hbWVzCgogICAgZGVmIF9uYW1lX3NldChzZWxmKToKICAgICAgICB3aXRoIGNvbnRleHRsaWIuc3VwcHJlc3MoQXR0cmlidXRlRXJyb3IpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fX2xvb2t1cAogICAgICAgIHNlbGYuX19sb29rdXAgPSBzdXBlcihGYXN0TG9va3VwLCBzZWxmKS5fbmFtZV9zZXQoKQogICAgICAgIHJldHVybiBzZWxmLl9fbG9va3VwCgoKZGVmIF9leHRyYWN0X3RleHRfZW5jb2RpbmcoZW5jb2Rpbmc9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICMgc3RhY2tsZXZlbD0zIHNvIHRoYXQgdGhlIGNhbGxlciBvZiB0aGUgY2FsbGVyIHNlZSBhbnkgd2FybmluZy4KICAgIHJldHVybiBpby50ZXh0X2VuY29kaW5nKGVuY29kaW5nLCAzKSwgYXJncywga3dhcmdzCgoKY2xhc3MgUGF0aDoKICAgICIiIgogICAgQSBwYXRobGliLWNvbXBhdGlibGUgaW50ZXJmYWNlIGZvciB6aXAgZmlsZXMuCgogICAgQ29uc2lkZXIgYSB6aXAgZmlsZSB3aXRoIHRoaXMgc3RydWN0dXJlOjoKCiAgICAgICAgLgogICAgICAgIOKUnOKUgOKUgCBhLnR4dAogICAgICAgIOKUlOKUgOKUgCBiCiAgICAgICAgICAgIOKUnOKUgOKUgCBjLnR4dAogICAgICAgICAgICDilJTilIDilIAgZAogICAgICAgICAgICAgICAg4pSU4pSA4pSAIGUudHh0CgogICAgPj4+IGRhdGEgPSBpby5CeXRlc0lPKCkKICAgID4+PiB6ZiA9IFppcEZpbGUoZGF0YSwgJ3cnKQogICAgPj4+IHpmLndyaXRlc3RyKCdhLnR4dCcsICdjb250ZW50IG9mIGEnKQogICAgPj4+IHpmLndyaXRlc3RyKCdiL2MudHh0JywgJ2NvbnRlbnQgb2YgYycpCiAgICA+Pj4gemYud3JpdGVzdHIoJ2IvZC9lLnR4dCcsICdjb250ZW50IG9mIGUnKQogICAgPj4+IHpmLmZpbGVuYW1lID0gJ21lbS9hYmNkZS56aXAnCgogICAgUGF0aCBhY2NlcHRzIHRoZSB6aXBmaWxlIG9iamVjdCBpdHNlbGYgb3IgYSBmaWxlbmFtZQoKICAgID4+PiByb290ID0gUGF0aCh6ZikKCiAgICBGcm9tIHRoZXJlLCBzZXZlcmFsIHBhdGggb3BlcmF0aW9ucyBhcmUgYXZhaWxhYmxlLgoKICAgIERpcmVjdG9yeSBpdGVyYXRpb24gKGluY2x1ZGluZyB0aGUgemlwIGZpbGUgaXRzZWxmKToKCiAgICA+Pj4gYSwgYiA9IHJvb3QuaXRlcmRpcigpCiAgICA+Pj4gYQogICAgUGF0aCgnbWVtL2FiY2RlLnppcCcsICdhLnR4dCcpCiAgICA+Pj4gYgogICAgUGF0aCgnbWVtL2FiY2RlLnppcCcsICdiLycpCgogICAgbmFtZSBwcm9wZXJ0eToKCiAgICA+Pj4gYi5uYW1lCiAgICAnYicKCiAgICBqb2luIHdpdGggZGl2aWRlIG9wZXJhdG9yOgoKICAgID4+PiBjID0gYiAvICdjLnR4dCcKICAgID4+PiBjCiAgICBQYXRoKCdtZW0vYWJjZGUuemlwJywgJ2IvYy50eHQnKQogICAgPj4+IGMubmFtZQogICAgJ2MudHh0JwoKICAgIFJlYWQgdGV4dDoKCiAgICA+Pj4gYy5yZWFkX3RleHQoKQogICAgJ2NvbnRlbnQgb2YgYycKCiAgICBleGlzdGVuY2U6CgogICAgPj4+IGMuZXhpc3RzKCkKICAgIFRydWUKICAgID4+PiAoYiAvICdtaXNzaW5nLnR4dCcpLmV4aXN0cygpCiAgICBGYWxzZQoKICAgIENvZXJjaW9uIHRvIHN0cmluZzoKCiAgICA+Pj4gaW1wb3J0IG9zCiAgICA+Pj4gc3RyKGMpLnJlcGxhY2Uob3Muc2VwLCBwb3NpeHBhdGguc2VwKQogICAgJ21lbS9hYmNkZS56aXAvYi9jLnR4dCcKCiAgICBBdCB0aGUgcm9vdCwgYGBuYW1lYGAsIGBgZmlsZW5hbWVgYCwgYW5kIGBgcGFyZW50YGAKICAgIHJlc29sdmUgdG8gdGhlIHppcGZpbGUuIE5vdGUgdGhlc2UgYXR0cmlidXRlcyBhcmUgbm90CiAgICB2YWxpZCBhbmQgd2lsbCByYWlzZSBhIGBgVmFsdWVFcnJvcmBgIGlmIHRoZSB6aXBmaWxlCiAgICBoYXMgbm8gZmlsZW5hbWUuCgogICAgPj4+IHJvb3QubmFtZQogICAgJ2FiY2RlLnppcCcKICAgID4+PiBzdHIocm9vdC5maWxlbmFtZSkucmVwbGFjZShvcy5zZXAsIHBvc2l4cGF0aC5zZXApCiAgICAnbWVtL2FiY2RlLnppcCcKICAgID4+PiBzdHIocm9vdC5wYXJlbnQpCiAgICAnbWVtJwogICAgIiIiCgogICAgX19yZXByID0gIntzZWxmLl9fY2xhc3NfXy5fX25hbWVfX30oe3NlbGYucm9vdC5maWxlbmFtZSFyfSwge3NlbGYuYXQhcn0pIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290LCBhdD0iIik6CiAgICAgICAgIiIiCiAgICAgICAgQ29uc3RydWN0IGEgUGF0aCBmcm9tIGEgWmlwRmlsZSBvciBmaWxlbmFtZS4KCiAgICAgICAgTm90ZTogV2hlbiB0aGUgc291cmNlIGlzIGFuIGV4aXN0aW5nIFppcEZpbGUgb2JqZWN0LAogICAgICAgIGl0cyB0eXBlIChfX2NsYXNzX18pIHdpbGwgYmUgbXV0YXRlZCB0byBhCiAgICAgICAgc3BlY2lhbGl6ZWQgdHlwZS4gSWYgdGhlIGNhbGxlciB3aXNoZXMgdG8gcmV0YWluIHRoZQogICAgICAgIG9yaWdpbmFsIHR5cGUsIHRoZSBjYWxsZXIgc2hvdWxkIGVpdGhlciBjcmVhdGUgYQogICAgICAgIHNlcGFyYXRlIFppcEZpbGUgb2JqZWN0IG9yIHBhc3MgYSBmaWxlbmFtZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnJvb3QgPSBGYXN0TG9va3VwLm1ha2Uocm9vdCkKICAgICAgICBzZWxmLmF0ID0gYXQKCiAgICBkZWYgb3BlbihzZWxmLCBtb2RlPSdyJywgKmFyZ3MsIHB3ZD1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgT3BlbiB0aGlzIGVudHJ5IGFzIHRleHQgb3IgYmluYXJ5IGZvbGxvd2luZyB0aGUgc2VtYW50aWNzCiAgICAgICAgb2YgYGBwYXRobGliLlBhdGgub3BlbigpYGAgYnkgcGFzc2luZyBhcmd1bWVudHMgdGhyb3VnaAogICAgICAgIHRvIGlvLlRleHRJT1dyYXBwZXIoKS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmlzX2RpcigpOgogICAgICAgICAgICByYWlzZSBJc0FEaXJlY3RvcnlFcnJvcihzZWxmKQogICAgICAgIHppcF9tb2RlID0gbW9kZVswXQogICAgICAgIGlmIG5vdCBzZWxmLmV4aXN0cygpIGFuZCB6aXBfbW9kZSA9PSAncic6CiAgICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKHNlbGYpCiAgICAgICAgc3RyZWFtID0gc2VsZi5yb290Lm9wZW4oc2VsZi5hdCwgemlwX21vZGUsIHB3ZD1wd2QpCiAgICAgICAgaWYgJ2InIGluIG1vZGU6CiAgICAgICAgICAgIGlmIGFyZ3Mgb3Iga3dhcmdzOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZW5jb2RpbmcgYXJncyBpbnZhbGlkIGZvciBiaW5hcnkgb3BlcmF0aW9uIikKICAgICAgICAgICAgcmV0dXJuIHN0cmVhbQogICAgICAgICMgVGV4dCBtb2RlOgogICAgICAgIGVuY29kaW5nLCBhcmdzLCBrd2FyZ3MgPSBfZXh0cmFjdF90ZXh0X2VuY29kaW5nKCphcmdzLCAqKmt3YXJncykKICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcihzdHJlYW0sIGVuY29kaW5nLCAqYXJncywgKiprd2FyZ3MpCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gcGF0aGxpYi5QYXRoKHNlbGYuYXQpLm5hbWUgb3Igc2VsZi5maWxlbmFtZS5uYW1lCgogICAgQHByb3BlcnR5CiAgICBkZWYgc3VmZml4KHNlbGYpOgogICAgICAgIHJldHVybiBwYXRobGliLlBhdGgoc2VsZi5hdCkuc3VmZml4IG9yIHNlbGYuZmlsZW5hbWUuc3VmZml4CgogICAgQHByb3BlcnR5CiAgICBkZWYgc3VmZml4ZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzZWxmLmF0KS5zdWZmaXhlcyBvciBzZWxmLmZpbGVuYW1lLnN1ZmZpeGVzCgogICAgQHByb3BlcnR5CiAgICBkZWYgc3RlbShzZWxmKToKICAgICAgICByZXR1cm4gcGF0aGxpYi5QYXRoKHNlbGYuYXQpLnN0ZW0gb3Igc2VsZi5maWxlbmFtZS5zdGVtCgogICAgQHByb3BlcnR5CiAgICBkZWYgZmlsZW5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzZWxmLnJvb3QuZmlsZW5hbWUpLmpvaW5wYXRoKHNlbGYuYXQpCgogICAgZGVmIHJlYWRfdGV4dChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIGVuY29kaW5nLCBhcmdzLCBrd2FyZ3MgPSBfZXh0cmFjdF90ZXh0X2VuY29kaW5nKCphcmdzLCAqKmt3YXJncykKICAgICAgICB3aXRoIHNlbGYub3BlbigncicsIGVuY29kaW5nLCAqYXJncywgKiprd2FyZ3MpIGFzIHN0cm06CiAgICAgICAgICAgIHJldHVybiBzdHJtLnJlYWQoKQoKICAgIGRlZiByZWFkX2J5dGVzKHNlbGYpOgogICAgICAgIHdpdGggc2VsZi5vcGVuKCdyYicpIGFzIHN0cm06CiAgICAgICAgICAgIHJldHVybiBzdHJtLnJlYWQoKQoKICAgIGRlZiBfaXNfY2hpbGQoc2VsZiwgcGF0aCk6CiAgICAgICAgcmV0dXJuIHBvc2l4cGF0aC5kaXJuYW1lKHBhdGguYXQucnN0cmlwKCIvIikpID09IHNlbGYuYXQucnN0cmlwKCIvIikKCiAgICBkZWYgX25leHQoc2VsZiwgYXQpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLnJvb3QsIGF0KQoKICAgIGRlZiBpc19kaXIoc2VsZik6CiAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmF0IG9yIHNlbGYuYXQuZW5kc3dpdGgoIi8iKQoKICAgIGRlZiBpc19maWxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmV4aXN0cygpIGFuZCBub3Qgc2VsZi5pc19kaXIoKQoKICAgIGRlZiBleGlzdHMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuYXQgaW4gc2VsZi5yb290Ll9uYW1lX3NldCgpCgogICAgZGVmIGl0ZXJkaXIoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuaXNfZGlyKCk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IGxpc3RkaXIgYSBmaWxlIikKICAgICAgICBzdWJzID0gbWFwKHNlbGYuX25leHQsIHNlbGYucm9vdC5uYW1lbGlzdCgpKQogICAgICAgIHJldHVybiBmaWx0ZXIoc2VsZi5faXNfY2hpbGQsIHN1YnMpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHBvc2l4cGF0aC5qb2luKHNlbGYucm9vdC5maWxlbmFtZSwgc2VsZi5hdCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19yZXByLmZvcm1hdChzZWxmPXNlbGYpCgogICAgZGVmIGpvaW5wYXRoKHNlbGYsICpvdGhlcik6CiAgICAgICAgbmV4dCA9IHBvc2l4cGF0aC5qb2luKHNlbGYuYXQsICpvdGhlcikKICAgICAgICByZXR1cm4gc2VsZi5fbmV4dChzZWxmLnJvb3QucmVzb2x2ZV9kaXIobmV4dCkpCgogICAgX190cnVlZGl2X18gPSBqb2lucGF0aAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBhcmVudChzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5hdDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWUucGFyZW50CiAgICAgICAgcGFyZW50X2F0ID0gcG9zaXhwYXRoLmRpcm5hbWUoc2VsZi5hdC5yc3RyaXAoJy8nKSkKICAgICAgICBpZiBwYXJlbnRfYXQ6CiAgICAgICAgICAgIHBhcmVudF9hdCArPSAnLycKICAgICAgICByZXR1cm4gc2VsZi5fbmV4dChwYXJlbnRfYXQpCgoKZGVmIG1haW4oYXJncz1Ob25lKToKICAgIGltcG9ydCBhcmdwYXJzZQoKICAgIGRlc2NyaXB0aW9uID0gJ0Egc2ltcGxlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgZm9yIHppcGZpbGUgbW9kdWxlLicKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uKQogICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cChyZXF1aXJlZD1UcnVlKQogICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbCcsICctLWxpc3QnLCBtZXRhdmFyPSc8emlwZmlsZT4nLAogICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Nob3cgbGlzdGluZyBvZiBhIHppcGZpbGUnKQogICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctZScsICctLWV4dHJhY3QnLCBuYXJncz0yLAogICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9KCc8emlwZmlsZT4nLCAnPG91dHB1dF9kaXI+JyksCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRXh0cmFjdCB6aXBmaWxlIGludG8gdGFyZ2V0IGRpcicpCiAgICBncm91cC5hZGRfYXJndW1lbnQoJy1jJywgJy0tY3JlYXRlJywgbmFyZ3M9JysnLAogICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9KCc8bmFtZT4nLCAnPGZpbGU+JyksCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQ3JlYXRlIHppcGZpbGUgZnJvbSBzb3VyY2VzJykKICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10ZXN0JywgbWV0YXZhcj0nPHppcGZpbGU+JywKICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUZXN0IGlmIGEgemlwZmlsZSBpcyB2YWxpZCcpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1ldGFkYXRhLWVuY29kaW5nJywgbWV0YXZhcj0nPGVuY29kaW5nPicsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NwZWNpZnkgZW5jb2Rpbmcgb2YgbWVtYmVyIG5hbWVzIGZvciAtbCwgLWUgYW5kIC10JykKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQoKICAgIGVuY29kaW5nID0gYXJncy5tZXRhZGF0YV9lbmNvZGluZwoKICAgIGlmIGFyZ3MudGVzdCBpcyBub3QgTm9uZToKICAgICAgICBzcmMgPSBhcmdzLnRlc3QKICAgICAgICB3aXRoIFppcEZpbGUoc3JjLCAncicsIG1ldGFkYXRhX2VuY29kaW5nPWVuY29kaW5nKSBhcyB6ZjoKICAgICAgICAgICAgYmFkZmlsZSA9IHpmLnRlc3R6aXAoKQogICAgICAgIGlmIGJhZGZpbGU6CiAgICAgICAgICAgIHByaW50KCJUaGUgZm9sbG93aW5nIGVuY2xvc2VkIGZpbGUgaXMgY29ycnVwdGVkOiB7IXJ9Ii5mb3JtYXQoYmFkZmlsZSkpCiAgICAgICAgcHJpbnQoIkRvbmUgdGVzdGluZyIpCgogICAgZWxpZiBhcmdzLmxpc3QgaXMgbm90IE5vbmU6CiAgICAgICAgc3JjID0gYXJncy5saXN0CiAgICAgICAgd2l0aCBaaXBGaWxlKHNyYywgJ3InLCBtZXRhZGF0YV9lbmNvZGluZz1lbmNvZGluZykgYXMgemY6CiAgICAgICAgICAgIHpmLnByaW50ZGlyKCkKCiAgICBlbGlmIGFyZ3MuZXh0cmFjdCBpcyBub3QgTm9uZToKICAgICAgICBzcmMsIGN1cmRpciA9IGFyZ3MuZXh0cmFjdAogICAgICAgIHdpdGggWmlwRmlsZShzcmMsICdyJywgbWV0YWRhdGFfZW5jb2Rpbmc9ZW5jb2RpbmcpIGFzIHpmOgogICAgICAgICAgICB6Zi5leHRyYWN0YWxsKGN1cmRpcikKCiAgICBlbGlmIGFyZ3MuY3JlYXRlIGlzIG5vdCBOb25lOgogICAgICAgIGlmIGVuY29kaW5nOgogICAgICAgICAgICBwcmludCgiTm9uLWNvbmZvcm1pbmcgZW5jb2RpbmdzIG5vdCBzdXBwb3J0ZWQgd2l0aCAtYy4iLAogICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgICAgIHN5cy5leGl0KDEpCgogICAgICAgIHppcF9uYW1lID0gYXJncy5jcmVhdGUucG9wKDApCiAgICAgICAgZmlsZXMgPSBhcmdzLmNyZWF0ZQoKICAgICAgICBkZWYgYWRkVG9aaXAoemYsIHBhdGgsIHppcHBhdGgpOgogICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKICAgICAgICAgICAgICAgIHpmLndyaXRlKHBhdGgsIHppcHBhdGgsIFpJUF9ERUZMQVRFRCkKICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgogICAgICAgICAgICAgICAgaWYgemlwcGF0aDoKICAgICAgICAgICAgICAgICAgICB6Zi53cml0ZShwYXRoLCB6aXBwYXRoKQogICAgICAgICAgICAgICAgZm9yIG5tIGluIHNvcnRlZChvcy5saXN0ZGlyKHBhdGgpKToKICAgICAgICAgICAgICAgICAgICBhZGRUb1ppcCh6ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocGF0aCwgbm0pLCBvcy5wYXRoLmpvaW4oemlwcGF0aCwgbm0pKQogICAgICAgICAgICAjIGVsc2U6IGlnbm9yZQoKICAgICAgICB3aXRoIFppcEZpbGUoemlwX25hbWUsICd3JykgYXMgemY6CiAgICAgICAgICAgIGZvciBwYXRoIGluIGZpbGVzOgogICAgICAgICAgICAgICAgemlwcGF0aCA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKICAgICAgICAgICAgICAgIGlmIG5vdCB6aXBwYXRoOgogICAgICAgICAgICAgICAgICAgIHppcHBhdGggPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguZGlybmFtZShwYXRoKSkKICAgICAgICAgICAgICAgIGlmIHppcHBhdGggaW4gKCcnLCBvcy5jdXJkaXIsIG9zLnBhcmRpcik6CiAgICAgICAgICAgICAgICAgICAgemlwcGF0aCA9ICcnCiAgICAgICAgICAgICAgICBhZGRUb1ppcCh6ZiwgcGF0aCwgemlwcGF0aCkKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbWFpbigpClBLAwQUAAAAAAACIKNWb9/3P7F4AACxeAAADAAAAHppcGltcG9ydC5weSIiInppcGltcG9ydCBwcm92aWRlcyBzdXBwb3J0IGZvciBpbXBvcnRpbmcgUHl0aG9uIG1vZHVsZXMgZnJvbSBaaXAgYXJjaGl2ZXMuCgpUaGlzIG1vZHVsZSBleHBvcnRzIHRocmVlIG9iamVjdHM6Ci0gemlwaW1wb3J0ZXI6IGEgY2xhc3M7IGl0cyBjb25zdHJ1Y3RvciB0YWtlcyBhIHBhdGggdG8gYSBaaXAgYXJjaGl2ZS4KLSBaaXBJbXBvcnRFcnJvcjogZXhjZXB0aW9uIHJhaXNlZCBieSB6aXBpbXBvcnRlciBvYmplY3RzLiBJdCdzIGEKICBzdWJjbGFzcyBvZiBJbXBvcnRFcnJvciwgc28gaXQgY2FuIGJlIGNhdWdodCBhcyBJbXBvcnRFcnJvciwgdG9vLgotIF96aXBfZGlyZWN0b3J5X2NhY2hlOiBhIGRpY3QsIG1hcHBpbmcgYXJjaGl2ZSBwYXRocyB0byB6aXAgZGlyZWN0b3J5CiAgaW5mbyBkaWN0cywgYXMgdXNlZCBpbiB6aXBpbXBvcnRlci5fZmlsZXMuCgpJdCBpcyB1c3VhbGx5IG5vdCBuZWVkZWQgdG8gdXNlIHRoZSB6aXBpbXBvcnQgbW9kdWxlIGV4cGxpY2l0bHk7IGl0IGlzCnVzZWQgYnkgdGhlIGJ1aWx0aW4gaW1wb3J0IG1lY2hhbmlzbSBmb3Igc3lzLnBhdGggaXRlbXMgdGhhdCBhcmUgcGF0aHMKdG8gWmlwIGFyY2hpdmVzLgoiIiIKCiNmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAojZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAgICMgZm9yIF92ZXJib3NlX21lc3NhZ2UKaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsIGFzIF9ib290c3RyYXBfZXh0ZXJuYWwKZnJvbSBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCBpbXBvcnQgX3VucGFja191aW50MTYsIF91bnBhY2tfdWludDMyCmltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiBhcyBfYm9vdHN0cmFwICAjIGZvciBfdmVyYm9zZV9tZXNzYWdlCmltcG9ydCBfaW1wICAjIGZvciBjaGVja19oYXNoX2Jhc2VkX3B5Y3MKaW1wb3J0IF9pbyAgIyBmb3Igb3BlbgppbXBvcnQgbWFyc2hhbCAgIyBmb3IgbG9hZHMKaW1wb3J0IHN5cyAgIyBmb3IgbW9kdWxlcwppbXBvcnQgdGltZSAgIyBmb3IgbWt0aW1lCmltcG9ydCBfd2FybmluZ3MgICMgRm9yIHdhcm4oKQoKX19hbGxfXyA9IFsnWmlwSW1wb3J0RXJyb3InLCAnemlwaW1wb3J0ZXInXQoKCnBhdGhfc2VwID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5wYXRoX3NlcAphbHRfcGF0aF9zZXAgPSBfYm9vdHN0cmFwX2V4dGVybmFsLnBhdGhfc2VwYXJhdG9yc1sxOl0KCgpjbGFzcyBaaXBJbXBvcnRFcnJvcihJbXBvcnRFcnJvcik6CiAgICBwYXNzCgojIF9yZWFkX2RpcmVjdG9yeSgpIGNhY2hlCl96aXBfZGlyZWN0b3J5X2NhY2hlID0ge30KCl9tb2R1bGVfdHlwZSA9IHR5cGUoc3lzKQoKRU5EX0NFTlRSQUxfRElSX1NJWkUgPSAyMgpTVFJJTkdfRU5EX0FSQ0hJVkUgPSBiJ1BLXHgwNVx4MDYnCk1BWF9DT01NRU5UX0xFTiA9ICgxIDw8IDE2KSAtIDEKCmNsYXNzIHppcGltcG9ydGVyKF9ib290c3RyYXBfZXh0ZXJuYWwuX0xvYWRlckJhc2ljcyk6CiAgICAiIiJ6aXBpbXBvcnRlcihhcmNoaXZlcGF0aCkgLT4gemlwaW1wb3J0ZXIgb2JqZWN0CgogICAgQ3JlYXRlIGEgbmV3IHppcGltcG9ydGVyIGluc3RhbmNlLiAnYXJjaGl2ZXBhdGgnIG11c3QgYmUgYSBwYXRoIHRvCiAgICBhIHppcGZpbGUsIG9yIHRvIGEgc3BlY2lmaWMgcGF0aCBpbnNpZGUgYSB6aXBmaWxlLiBGb3IgZXhhbXBsZSwgaXQgY2FuIGJlCiAgICAnL3RtcC9teWltcG9ydC56aXAnLCBvciAnL3RtcC9teWltcG9ydC56aXAvbXlkaXJlY3RvcnknLCBpZiBteWRpcmVjdG9yeSBpcyBhCiAgICB2YWxpZCBkaXJlY3RvcnkgaW5zaWRlIHRoZSBhcmNoaXZlLgoKICAgICdaaXBJbXBvcnRFcnJvciBpcyByYWlzZWQgaWYgJ2FyY2hpdmVwYXRoJyBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgWmlwCiAgICBhcmNoaXZlLgoKICAgIFRoZSAnYXJjaGl2ZScgYXR0cmlidXRlIG9mIHppcGltcG9ydGVyIG9iamVjdHMgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlCiAgICB6aXBmaWxlIHRhcmdldGVkLgogICAgIiIiCgogICAgIyBTcGxpdCB0aGUgInN1YmRpcmVjdG9yeSIgZnJvbSB0aGUgWmlwIGFyY2hpdmUgcGF0aCwgbG9va3VwIGEgbWF0Y2hpbmcKICAgICMgZW50cnkgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUsIGZldGNoIHRoZSBmaWxlIGRpcmVjdG9yeSBmcm9tIHRoZXJlCiAgICAjIGlmIGZvdW5kLCBvciBlbHNlIHJlYWQgaXQgZnJvbSB0aGUgYXJjaGl2ZS4KICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXRoLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJleHBlY3RlZCBzdHIsIG5vdCB7dHlwZShwYXRoKSFyfSIpCiAgICAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKCdhcmNoaXZlIHBhdGggaXMgZW1wdHknLCBwYXRoPXBhdGgpCiAgICAgICAgaWYgYWx0X3BhdGhfc2VwOgogICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKGFsdF9wYXRoX3NlcCwgcGF0aF9zZXApCgogICAgICAgIHByZWZpeCA9IFtdCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc3QgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9wYXRoX3N0YXQocGF0aCkKICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICMgT24gV2luZG93cyBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkIGZvciB0b28gbG9uZyBwYXRocy4KICAgICAgICAgICAgICAgICMgQmFjayB1cCBvbmUgcGF0aCBlbGVtZW50LgogICAgICAgICAgICAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9wYXRoX3NwbGl0KHBhdGgpCiAgICAgICAgICAgICAgICBpZiBkaXJuYW1lID09IHBhdGg6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoJ25vdCBhIFppcCBmaWxlJywgcGF0aD1wYXRoKQogICAgICAgICAgICAgICAgcGF0aCA9IGRpcm5hbWUKICAgICAgICAgICAgICAgIHByZWZpeC5hcHBlbmQoYmFzZW5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIGl0IGV4aXN0cwogICAgICAgICAgICAgICAgaWYgKHN0LnN0X21vZGUgJiAwbzE3MDAwMCkgIT0gMG8xMDAwMDA6ICAjIHN0YXQuU19JU1JFRwogICAgICAgICAgICAgICAgICAgICMgaXQncyBhIG5vdCBmaWxlCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoJ25vdCBhIFppcCBmaWxlJywgcGF0aD1wYXRoKQogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWxlcyA9IF96aXBfZGlyZWN0b3J5X2NhY2hlW3BhdGhdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBmaWxlcyA9IF9yZWFkX2RpcmVjdG9yeShwYXRoKQogICAgICAgICAgICBfemlwX2RpcmVjdG9yeV9jYWNoZVtwYXRoXSA9IGZpbGVzCiAgICAgICAgc2VsZi5fZmlsZXMgPSBmaWxlcwogICAgICAgIHNlbGYuYXJjaGl2ZSA9IHBhdGgKICAgICAgICAjIGEgcHJlZml4IGRpcmVjdG9yeSBmb2xsb3dpbmcgdGhlIFpJUCBmaWxlIHBhdGguCiAgICAgICAgc2VsZi5wcmVmaXggPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9wYXRoX2pvaW4oKnByZWZpeFs6Oi0xXSkKICAgICAgICBpZiBzZWxmLnByZWZpeDoKICAgICAgICAgICAgc2VsZi5wcmVmaXggKz0gcGF0aF9zZXAKCgogICAgIyBDaGVjayB3aGV0aGVyIHdlIGNhbiBzYXRpc2Z5IHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSBuYW1lZCBieQogICAgIyAnZnVsbG5hbWUnLCBvciB3aGV0aGVyIGl0IGNvdWxkIGJlIGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZQogICAgIyBwYWNrYWdlLiBSZXR1cm4gc2VsZiBpZiB3ZSBjYW4gbG9hZCBpdCwgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKICAgICMgZnVsbCBwYXRoIGlmIGl0J3MgYSBwb3NzaWJsZSBuYW1lc3BhY2UgcG9ydGlvbiwgTm9uZSBpZiB3ZQogICAgIyBjYW4ndCBsb2FkIGl0LgogICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICIiImZpbmRfbG9hZGVyKGZ1bGxuYW1lLCBwYXRoPU5vbmUpIC0+IHNlbGYsIHN0ciBvciBOb25lLgoKICAgICAgICBTZWFyY2ggZm9yIGEgbW9kdWxlIHNwZWNpZmllZCBieSAnZnVsbG5hbWUnLiAnZnVsbG5hbWUnIG11c3QgYmUgdGhlCiAgICAgICAgZnVsbHkgcXVhbGlmaWVkIChkb3R0ZWQpIG1vZHVsZSBuYW1lLiBJdCByZXR1cm5zIHRoZSB6aXBpbXBvcnRlcgogICAgICAgIGluc3RhbmNlIGl0c2VsZiBpZiB0aGUgbW9kdWxlIHdhcyBmb3VuZCwgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKICAgICAgICBmdWxsIHBhdGggbmFtZSBpZiBpdCdzIHBvc3NpYmx5IGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLAogICAgICAgIG9yIE5vbmUgb3RoZXJ3aXNlLiBUaGUgb3B0aW9uYWwgJ3BhdGgnIGFyZ3VtZW50IGlzIGlnbm9yZWQgLS0gaXQncwogICAgICAgIHRoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGltcG9ydGVyIHByb3RvY29sLgoKICAgICAgICBEZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAzLjEwLiBVc2UgZmluZF9zcGVjKCkgaW5zdGVhZC4KICAgICAgICAiIiIKICAgICAgICBfd2FybmluZ3Mud2FybigiemlwaW1wb3J0ZXIuZmluZF9sb2FkZXIoKSBpcyBkZXByZWNhdGVkIGFuZCBzbGF0ZWQgZm9yICIKICAgICAgICAgICAgICAgICAgICAgICAicmVtb3ZhbCBpbiBQeXRob24gMy4xMjsgdXNlIGZpbmRfc3BlYygpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICBtaSA9IF9nZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpCiAgICAgICAgaWYgbWkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgVGhpcyBpcyBhIG1vZHVsZSBvciBwYWNrYWdlLgogICAgICAgICAgICByZXR1cm4gc2VsZiwgW10KCiAgICAgICAgIyBOb3QgYSBtb2R1bGUgb3IgcmVndWxhciBwYWNrYWdlLiBTZWUgaWYgdGhpcyBpcyBhIGRpcmVjdG9yeSwgYW5kCiAgICAgICAgIyB0aGVyZWZvcmUgcG9zc2libHkgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UuCgogICAgICAgICMgV2UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsYXN0IHBhdGggY29tcG9uZW50IG9mIGZ1bGxuYW1lCiAgICAgICAgIyBlYXJsaWVyIGNvbXBvbmVudHMgYXJlIHJlY29yZGVkIGluIHNlbGYucHJlZml4LgogICAgICAgIG1vZHBhdGggPSBfZ2V0X21vZHVsZV9wYXRoKHNlbGYsIGZ1bGxuYW1lKQogICAgICAgIGlmIF9pc19kaXIoc2VsZiwgbW9kcGF0aCk6CiAgICAgICAgICAgICMgVGhpcyBpcyBwb3NzaWJseSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKICAgICAgICAgICAgIyBwYWNrYWdlLiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRpbmcgaXRzIHBhdGgsCiAgICAgICAgICAgICMgd2l0aG91dCBhIHRyYWlsaW5nIHNlcGFyYXRvci4KICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFtmJ3tzZWxmLmFyY2hpdmV9e3BhdGhfc2VwfXttb2RwYXRofSddCgogICAgICAgIHJldHVybiBOb25lLCBbXQoKCiAgICAjIENoZWNrIHdoZXRoZXIgd2UgY2FuIHNhdGlzZnkgdGhlIGltcG9ydCBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5CiAgICAjICdmdWxsbmFtZScuIFJldHVybiBzZWxmIGlmIHdlIGNhbiwgTm9uZSBpZiB3ZSBjYW4ndC4KICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAiIiJmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aD1Ob25lKSAtPiBzZWxmIG9yIE5vbmUuCgogICAgICAgIFNlYXJjaCBmb3IgYSBtb2R1bGUgc3BlY2lmaWVkIGJ5ICdmdWxsbmFtZScuICdmdWxsbmFtZScgbXVzdCBiZSB0aGUKICAgICAgICBmdWxseSBxdWFsaWZpZWQgKGRvdHRlZCkgbW9kdWxlIG5hbWUuIEl0IHJldHVybnMgdGhlIHppcGltcG9ydGVyCiAgICAgICAgaW5zdGFuY2UgaXRzZWxmIGlmIHRoZSBtb2R1bGUgd2FzIGZvdW5kLCBvciBOb25lIGlmIGl0IHdhc24ndC4KICAgICAgICBUaGUgb3B0aW9uYWwgJ3BhdGgnIGFyZ3VtZW50IGlzIGlnbm9yZWQgLS0gaXQncyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eQogICAgICAgIHdpdGggdGhlIGltcG9ydGVyIHByb3RvY29sLgoKICAgICAgICBEZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAzLjEwLiBVc2UgZmluZF9zcGVjKCkgaW5zdGVhZC4KICAgICAgICAiIiIKICAgICAgICBfd2FybmluZ3Mud2FybigiemlwaW1wb3J0ZXIuZmluZF9tb2R1bGUoKSBpcyBkZXByZWNhdGVkIGFuZCBzbGF0ZWQgZm9yICIKICAgICAgICAgICAgICAgICAgICAgICAicmVtb3ZhbCBpbiBQeXRob24gMy4xMjsgdXNlIGZpbmRfc3BlYygpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICByZXR1cm4gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSwgcGF0aClbMF0KCiAgICBkZWYgZmluZF9zcGVjKHNlbGYsIGZ1bGxuYW1lLCB0YXJnZXQ9Tm9uZSk6CiAgICAgICAgIiIiQ3JlYXRlIGEgTW9kdWxlU3BlYyBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuCgogICAgICAgIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZC4KICAgICAgICAiIiIKICAgICAgICBtb2R1bGVfaW5mbyA9IF9nZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpCiAgICAgICAgaWYgbW9kdWxlX2luZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLnNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIHNlbGYsIGlzX3BhY2thZ2U9bW9kdWxlX2luZm8pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBOb3QgYSBtb2R1bGUgb3IgcmVndWxhciBwYWNrYWdlLiBTZWUgaWYgdGhpcyBpcyBhIGRpcmVjdG9yeSwgYW5kCiAgICAgICAgICAgICMgdGhlcmVmb3JlIHBvc3NpYmx5IGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgoKICAgICAgICAgICAgIyBXZSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxhc3QgcGF0aCBjb21wb25lbnQgb2YgZnVsbG5hbWUKICAgICAgICAgICAgIyBlYXJsaWVyIGNvbXBvbmVudHMgYXJlIHJlY29yZGVkIGluIHNlbGYucHJlZml4LgogICAgICAgICAgICBtb2RwYXRoID0gX2dldF9tb2R1bGVfcGF0aChzZWxmLCBmdWxsbmFtZSkKICAgICAgICAgICAgaWYgX2lzX2RpcihzZWxmLCBtb2RwYXRoKToKICAgICAgICAgICAgICAgICMgVGhpcyBpcyBwb3NzaWJseSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKICAgICAgICAgICAgICAgICMgcGFja2FnZS4gUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50aW5nIGl0cyBwYXRoLAogICAgICAgICAgICAgICAgIyB3aXRob3V0IGEgdHJhaWxpbmcgc2VwYXJhdG9yLgogICAgICAgICAgICAgICAgcGF0aCA9IGYne3NlbGYuYXJjaGl2ZX17cGF0aF9zZXB9e21vZHBhdGh9JwogICAgICAgICAgICAgICAgc3BlYyA9IF9ib290c3RyYXAuTW9kdWxlU3BlYyhuYW1lPWZ1bGxuYW1lLCBsb2FkZXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGFja2FnZT1UcnVlKQogICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucy5hcHBlbmQocGF0aCkKICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiZ2V0X2NvZGUoZnVsbG5hbWUpIC0+IGNvZGUgb2JqZWN0LgoKICAgICAgICBSZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4gUmFpc2UgWmlwSW1wb3J0RXJyb3IKICAgICAgICBpZiB0aGUgbW9kdWxlIGNvdWxkbid0IGJlIGltcG9ydGVkLgogICAgICAgICIiIgogICAgICAgIGNvZGUsIGlzcGFja2FnZSwgbW9kcGF0aCA9IF9nZXRfbW9kdWxlX2NvZGUoc2VsZiwgZnVsbG5hbWUpCiAgICAgICAgcmV0dXJuIGNvZGUKCgogICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGhuYW1lKToKICAgICAgICAiIiJnZXRfZGF0YShwYXRobmFtZSkgLT4gc3RyaW5nIHdpdGggZmlsZSBkYXRhLgoKICAgICAgICBSZXR1cm4gdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoICdwYXRobmFtZScuIFJhaXNlIE9TRXJyb3IgaWYKICAgICAgICB0aGUgZmlsZSB3YXNuJ3QgZm91bmQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgYWx0X3BhdGhfc2VwOgogICAgICAgICAgICBwYXRobmFtZSA9IHBhdGhuYW1lLnJlcGxhY2UoYWx0X3BhdGhfc2VwLCBwYXRoX3NlcCkKCiAgICAgICAga2V5ID0gcGF0aG5hbWUKICAgICAgICBpZiBwYXRobmFtZS5zdGFydHN3aXRoKHNlbGYuYXJjaGl2ZSArIHBhdGhfc2VwKToKICAgICAgICAgICAga2V5ID0gcGF0aG5hbWVbbGVuKHNlbGYuYXJjaGl2ZSArIHBhdGhfc2VwKTpdCgogICAgICAgIHRyeToKICAgICAgICAgICAgdG9jX2VudHJ5ID0gc2VsZi5fZmlsZXNba2V5XQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigwLCAnJywga2V5KQogICAgICAgIHJldHVybiBfZ2V0X2RhdGEoc2VsZi5hcmNoaXZlLCB0b2NfZW50cnkpCgoKICAgICMgUmV0dXJuIGEgc3RyaW5nIG1hdGNoaW5nIF9fZmlsZV9fIGZvciB0aGUgbmFtZWQgbW9kdWxlCiAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAiIiJnZXRfZmlsZW5hbWUoZnVsbG5hbWUpIC0+IGZpbGVuYW1lIHN0cmluZy4KCiAgICAgICAgUmV0dXJuIHRoZSBmaWxlbmFtZSBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcmFpc2UgWmlwSW1wb3J0RXJyb3IKICAgICAgICBpZiBpdCBjb3VsZG4ndCBiZSBpbXBvcnRlZC4KICAgICAgICAiIiIKICAgICAgICAjIERlY2lkaW5nIHRoZSBmaWxlbmFtZSByZXF1aXJlcyB3b3JraW5nIG91dCB3aGVyZSB0aGUgY29kZQogICAgICAgICMgd291bGQgY29tZSBmcm9tIGlmIHRoZSBtb2R1bGUgd2FzIGFjdHVhbGx5IGxvYWRlZAogICAgICAgIGNvZGUsIGlzcGFja2FnZSwgbW9kcGF0aCA9IF9nZXRfbW9kdWxlX2NvZGUoc2VsZiwgZnVsbG5hbWUpCiAgICAgICAgcmV0dXJuIG1vZHBhdGgKCgogICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiImdldF9zb3VyY2UoZnVsbG5hbWUpIC0+IHNvdXJjZSBzdHJpbmcuCgogICAgICAgIFJldHVybiB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLiBSYWlzZSBaaXBJbXBvcnRFcnJvcgogICAgICAgIGlmIHRoZSBtb2R1bGUgY291bGRuJ3QgYmUgZm91bmQsIHJldHVybiBOb25lIGlmIHRoZSBhcmNoaXZlIGRvZXMKICAgICAgICBjb250YWluIHRoZSBtb2R1bGUsIGJ1dCBoYXMgbm8gc291cmNlIGZvciBpdC4KICAgICAgICAiIiIKICAgICAgICBtaSA9IF9nZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpCiAgICAgICAgaWYgbWkgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZiJjYW4ndCBmaW5kIG1vZHVsZSB7ZnVsbG5hbWUhcn0iLCBuYW1lPWZ1bGxuYW1lKQoKICAgICAgICBwYXRoID0gX2dldF9tb2R1bGVfcGF0aChzZWxmLCBmdWxsbmFtZSkKICAgICAgICBpZiBtaToKICAgICAgICAgICAgZnVsbHBhdGggPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9wYXRoX2pvaW4ocGF0aCwgJ19faW5pdF9fLnB5JykKICAgICAgICBlbHNlOgogICAgICAgICAgICBmdWxscGF0aCA9IGYne3BhdGh9LnB5JwoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHRvY19lbnRyeSA9IHNlbGYuX2ZpbGVzW2Z1bGxwYXRoXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIyB3ZSBoYXZlIHRoZSBtb2R1bGUsIGJ1dCBubyBzb3VyY2UKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gX2dldF9kYXRhKHNlbGYuYXJjaGl2ZSwgdG9jX2VudHJ5KS5kZWNvZGUoKQoKCiAgICAjIFJldHVybiBhIGJvb2wgc2lnbmlmeWluZyB3aGV0aGVyIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIG9yIG5vdC4KICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAiIiJpc19wYWNrYWdlKGZ1bGxuYW1lKSAtPiBib29sLgoKICAgICAgICBSZXR1cm4gVHJ1ZSBpZiB0aGUgbW9kdWxlIHNwZWNpZmllZCBieSBmdWxsbmFtZSBpcyBhIHBhY2thZ2UuCiAgICAgICAgUmFpc2UgWmlwSW1wb3J0RXJyb3IgaWYgdGhlIG1vZHVsZSBjb3VsZG4ndCBiZSBmb3VuZC4KICAgICAgICAiIiIKICAgICAgICBtaSA9IF9nZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpCiAgICAgICAgaWYgbWkgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZiJjYW4ndCBmaW5kIG1vZHVsZSB7ZnVsbG5hbWUhcn0iLCBuYW1lPWZ1bGxuYW1lKQogICAgICAgIHJldHVybiBtaQoKCiAgICAjIExvYWQgYW5kIHJldHVybiB0aGUgbW9kdWxlIG5hbWVkIGJ5ICdmdWxsbmFtZScuCiAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiImxvYWRfbW9kdWxlKGZ1bGxuYW1lKSAtPiBtb2R1bGUuCgogICAgICAgIExvYWQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgYnkgJ2Z1bGxuYW1lJy4gJ2Z1bGxuYW1lJyBtdXN0IGJlIHRoZQogICAgICAgIGZ1bGx5IHF1YWxpZmllZCAoZG90dGVkKSBtb2R1bGUgbmFtZS4gSXQgcmV0dXJucyB0aGUgaW1wb3J0ZWQKICAgICAgICBtb2R1bGUsIG9yIHJhaXNlcyBaaXBJbXBvcnRFcnJvciBpZiBpdCBjb3VsZCBub3QgYmUgaW1wb3J0ZWQuCgogICAgICAgIERlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuMTAuIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCiAgICAgICAgIiIiCiAgICAgICAgbXNnID0gKCJ6aXBpbXBvcnQuemlwaW1wb3J0ZXIubG9hZF9tb2R1bGUoKSBpcyBkZXByZWNhdGVkIGFuZCBzbGF0ZWQgZm9yICIKICAgICAgICAgICAgICAgInJlbW92YWwgaW4gUHl0aG9uIDMuMTI7IHVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQiKQogICAgICAgIF93YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgIGNvZGUsIGlzcGFja2FnZSwgbW9kcGF0aCA9IF9nZXRfbW9kdWxlX2NvZGUoc2VsZiwgZnVsbG5hbWUpCiAgICAgICAgbW9kID0gc3lzLm1vZHVsZXMuZ2V0KGZ1bGxuYW1lKQogICAgICAgIGlmIG1vZCBpcyBOb25lIG9yIG5vdCBpc2luc3RhbmNlKG1vZCwgX21vZHVsZV90eXBlKToKICAgICAgICAgICAgbW9kID0gX21vZHVsZV90eXBlKGZ1bGxuYW1lKQogICAgICAgICAgICBzeXMubW9kdWxlc1tmdWxsbmFtZV0gPSBtb2QKICAgICAgICBtb2QuX19sb2FkZXJfXyA9IHNlbGYKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBpc3BhY2thZ2U6CiAgICAgICAgICAgICAgICAjIGFkZCBfX3BhdGhfXyB0byB0aGUgbW9kdWxlICpiZWZvcmUqIHRoZSBjb2RlIGdldHMKICAgICAgICAgICAgICAgICMgZXhlY3V0ZWQKICAgICAgICAgICAgICAgIHBhdGggPSBfZ2V0X21vZHVsZV9wYXRoKHNlbGYsIGZ1bGxuYW1lKQogICAgICAgICAgICAgICAgZnVsbHBhdGggPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9wYXRoX2pvaW4oc2VsZi5hcmNoaXZlLCBwYXRoKQogICAgICAgICAgICAgICAgbW9kLl9fcGF0aF9fID0gW2Z1bGxwYXRoXQoKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kLCAnX19idWlsdGluc19fJyk6CiAgICAgICAgICAgICAgICBtb2QuX19idWlsdGluc19fID0gX19idWlsdGluc19fCiAgICAgICAgICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX2ZpeF91cF9tb2R1bGUobW9kLl9fZGljdF9fLCBmdWxsbmFtZSwgbW9kcGF0aCkKICAgICAgICAgICAgZXhlYyhjb2RlLCBtb2QuX19kaWN0X18pCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgICAgIHJhaXNlCgogICAgICAgIHRyeToKICAgICAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihmJ0xvYWRlZCBtb2R1bGUge2Z1bGxuYW1lIXJ9IG5vdCBmb3VuZCBpbiBzeXMubW9kdWxlcycpCiAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdpbXBvcnQge30gIyBsb2FkZWQgZnJvbSBaaXAge30nLCBmdWxsbmFtZSwgbW9kcGF0aCkKICAgICAgICByZXR1cm4gbW9kCgoKICAgIGRlZiBnZXRfcmVzb3VyY2VfcmVhZGVyKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAiIiJSZXR1cm4gdGhlIFJlc291cmNlUmVhZGVyIGZvciBhIHBhY2thZ2UgaW4gYSB6aXAgZmlsZS4KCiAgICAgICAgSWYgJ2Z1bGxuYW1lJyBpcyBhIHBhY2thZ2Ugd2l0aGluIHRoZSB6aXAgZmlsZSwgcmV0dXJuIHRoZQogICAgICAgICdSZXNvdXJjZVJlYWRlcicgb2JqZWN0IGZvciB0aGUgcGFja2FnZS4gIE90aGVyd2lzZSByZXR1cm4gTm9uZS4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3BhY2thZ2UoZnVsbG5hbWUpOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBleGNlcHQgWmlwSW1wb3J0RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgZnJvbSBpbXBvcnRsaWIucmVhZGVycyBpbXBvcnQgWmlwUmVhZGVyCiAgICAgICAgcmV0dXJuIFppcFJlYWRlcihzZWxmLCBmdWxsbmFtZSkKCgogICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgogICAgICAgICIiIlJlbG9hZCB0aGUgZmlsZSBkYXRhIG9mIHRoZSBhcmNoaXZlIHBhdGguIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9maWxlcyA9IF9yZWFkX2RpcmVjdG9yeShzZWxmLmFyY2hpdmUpCiAgICAgICAgICAgIF96aXBfZGlyZWN0b3J5X2NhY2hlW3NlbGYuYXJjaGl2ZV0gPSBzZWxmLl9maWxlcwogICAgICAgIGV4Y2VwdCBaaXBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgX3ppcF9kaXJlY3RvcnlfY2FjaGUucG9wKHNlbGYuYXJjaGl2ZSwgTm9uZSkKICAgICAgICAgICAgc2VsZi5fZmlsZXMgPSB7fQoKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYnPHppcGltcG9ydGVyIG9iamVjdCAie3NlbGYuYXJjaGl2ZX17cGF0aF9zZXB9e3NlbGYucHJlZml4fSI+JwoKCiMgX3ppcF9zZWFyY2hvcmRlciBkZWZpbmVzIGhvdyB3ZSBzZWFyY2ggZm9yIGEgbW9kdWxlIGluIHRoZSBaaXAKIyBhcmNoaXZlOiB3ZSBmaXJzdCBzZWFyY2ggZm9yIGEgcGFja2FnZSBfX2luaXRfXywgdGhlbiBmb3IKIyBub24tcGFja2FnZSAucHljLCBhbmQgLnB5IGVudHJpZXMuIFRoZSAucHljIGVudHJpZXMKIyBhcmUgc3dhcHBlZCBieSBpbml0emlwaW1wb3J0KCkgaWYgd2UgcnVuIGluIG9wdGltaXplZCBtb2RlLiBBbHNvLAojICcvJyBpcyByZXBsYWNlZCBieSBwYXRoX3NlcCB0aGVyZS4KX3ppcF9zZWFyY2hvcmRlciA9ICgKICAgIChwYXRoX3NlcCArICdfX2luaXRfXy5weWMnLCBUcnVlLCBUcnVlKSwKICAgIChwYXRoX3NlcCArICdfX2luaXRfXy5weScsIEZhbHNlLCBUcnVlKSwKICAgICgnLnB5YycsIFRydWUsIEZhbHNlKSwKICAgICgnLnB5JywgRmFsc2UsIEZhbHNlKSwKKQoKIyBHaXZlbiBhIG1vZHVsZSBuYW1lLCByZXR1cm4gdGhlIHBvdGVudGlhbCBmaWxlIHBhdGggaW4gdGhlCiMgYXJjaGl2ZSAod2l0aG91dCBleHRlbnNpb24pLgpkZWYgX2dldF9tb2R1bGVfcGF0aChzZWxmLCBmdWxsbmFtZSk6CiAgICByZXR1cm4gc2VsZi5wcmVmaXggKyBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KCiMgRG9lcyB0aGlzIHBhdGggcmVwcmVzZW50IGEgZGlyZWN0b3J5PwpkZWYgX2lzX2RpcihzZWxmLCBwYXRoKToKICAgICMgU2VlIGlmIHRoaXMgaXMgYSAiZGlyZWN0b3J5Ii4gSWYgc28sIGl0J3MgZWxpZ2libGUgdG8gYmUgcGFydAogICAgIyBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiBXZSB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgbmFtZSwgd2l0aCBhbgogICAgIyBhcHBlbmRlZCBwYXRoIHNlcGFyYXRvciwgZXhpc3RzLgogICAgZGlycGF0aCA9IHBhdGggKyBwYXRoX3NlcAogICAgIyBJZiBkaXJwYXRoIGlzIHByZXNlbnQgaW4gc2VsZi5fZmlsZXMsIHdlIGhhdmUgYSBkaXJlY3RvcnkuCiAgICByZXR1cm4gZGlycGF0aCBpbiBzZWxmLl9maWxlcwoKIyBSZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBhYm91dCBhIG1vZHVsZS4KZGVmIF9nZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpOgogICAgcGF0aCA9IF9nZXRfbW9kdWxlX3BhdGgoc2VsZiwgZnVsbG5hbWUpCiAgICBmb3Igc3VmZml4LCBpc2J5dGVjb2RlLCBpc3BhY2thZ2UgaW4gX3ppcF9zZWFyY2hvcmRlcjoKICAgICAgICBmdWxscGF0aCA9IHBhdGggKyBzdWZmaXgKICAgICAgICBpZiBmdWxscGF0aCBpbiBzZWxmLl9maWxlczoKICAgICAgICAgICAgcmV0dXJuIGlzcGFja2FnZQogICAgcmV0dXJuIE5vbmUKCgojIGltcGxlbWVudGF0aW9uCgojIF9yZWFkX2RpcmVjdG9yeShhcmNoaXZlKSAtPiBmaWxlcyBkaWN0IChuZXcgcmVmZXJlbmNlKQojCiMgR2l2ZW4gYSBwYXRoIHRvIGEgWmlwIGFyY2hpdmUsIGJ1aWxkIGEgZGljdCwgbWFwcGluZyBmaWxlIG5hbWVzCiMgKGxvY2FsIHRvIHRoZSBhcmNoaXZlLCB1c2luZyBTRVAgYXMgYSBzZXBhcmF0b3IpIHRvIHRvYyBlbnRyaWVzLgojCiMgQSB0b2NfZW50cnkgaXMgYSB0dXBsZToKIwojIChfX2ZpbGVfXywgICAgICAgICMgdmFsdWUgdG8gdXNlIGZvciBfX2ZpbGVfXywgYXZhaWxhYmxlIGZvciBhbGwgZmlsZXMsCiMgICAgICAgICAgICAgICAgICAgIyBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nCiMgIGNvbXByZXNzLCAgICAgICAgIyBjb21wcmVzc2lvbiBraW5kOyAwIGZvciB1bmNvbXByZXNzZWQKIyAgZGF0YV9zaXplLCAgICAgICAjIHNpemUgb2YgY29tcHJlc3NlZCBkYXRhIG9uIGRpc2sKIyAgZmlsZV9zaXplLCAgICAgICAjIHNpemUgb2YgZGVjb21wcmVzc2VkIGRhdGEKIyAgZmlsZV9vZmZzZXQsICAgICAjIG9mZnNldCBvZiBmaWxlIGhlYWRlciBmcm9tIHN0YXJ0IG9mIGFyY2hpdmUKIyAgdGltZSwgICAgICAgICAgICAjIG1vZCB0aW1lIG9mIGZpbGUgKGluIGRvcyBmb3JtYXQpCiMgIGRhdGUsICAgICAgICAgICAgIyBtb2QgZGF0YSBvZiBmaWxlIChpbiBkb3MgZm9ybWF0KQojICBjcmMsICAgICAgICAgICAgICMgY3JjIGNoZWNrc3VtIG9mIHRoZSBkYXRhCiMgKQojCiMgRGlyZWN0b3JpZXMgY2FuIGJlIHJlY29nbml6ZWQgYnkgdGhlIHRyYWlsaW5nIHBhdGhfc2VwIGluIHRoZSBuYW1lLAojIGRhdGFfc2l6ZSBhbmQgZmlsZV9vZmZzZXQgYXJlIDAuCmRlZiBfcmVhZF9kaXJlY3RvcnkoYXJjaGl2ZSk6CiAgICB0cnk6CiAgICAgICAgZnAgPSBfaW8ub3Blbl9jb2RlKGFyY2hpdmUpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICByYWlzZSBaaXBJbXBvcnRFcnJvcihmImNhbid0IG9wZW4gWmlwIGZpbGU6IHthcmNoaXZlIXJ9IiwgcGF0aD1hcmNoaXZlKQoKICAgIHdpdGggZnA6CiAgICAgICAgIyBHSC04NzIzNTogT24gbWFjT1MgYWxsIGZpbGUgZGVzY3JpcHRvcnMgZm9yIC9kZXYvZmQvTiBzaGFyZSB0aGUgc2FtZQogICAgICAgICMgZmlsZSBvZmZzZXQsIHJlc2V0IHRoZSBmaWxlIG9mZnNldCBhZnRlciBzY2FubmluZyB0aGUgemlwZmlsZSBkaXJldG9yeQogICAgICAgICMgdG8gbm90IGNhdXNlIHByb2JsZW1zIHdoZW4gc29tZSBydW5zICdweXRob24zIC9kZXYvZmQvOSA5PHNvbWVfc2NyaXB0JwogICAgICAgIHN0YXJ0X29mZnNldCA9IGZwLnRlbGwoKQogICAgICAgIHRyeToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZnAuc2VlaygtRU5EX0NFTlRSQUxfRElSX1NJWkUsIDIpCiAgICAgICAgICAgICAgICBoZWFkZXJfcG9zaXRpb24gPSBmcC50ZWxsKCkKICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGZwLnJlYWQoRU5EX0NFTlRSQUxfRElSX1NJWkUpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZiJjYW4ndCByZWFkIFppcCBmaWxlOiB7YXJjaGl2ZSFyfSIsIHBhdGg9YXJjaGl2ZSkKICAgICAgICAgICAgaWYgbGVuKGJ1ZmZlcikgIT0gRU5EX0NFTlRSQUxfRElSX1NJWkU6CiAgICAgICAgICAgICAgICByYWlzZSBaaXBJbXBvcnRFcnJvcihmImNhbid0IHJlYWQgWmlwIGZpbGU6IHthcmNoaXZlIXJ9IiwgcGF0aD1hcmNoaXZlKQogICAgICAgICAgICBpZiBidWZmZXJbOjRdICE9IFNUUklOR19FTkRfQVJDSElWRToKICAgICAgICAgICAgICAgICMgQmFkOiBFbmQgb2YgQ2VudHJhbCBEaXIgc2lnbmF0dXJlCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZXJlJ3MgYSBjb21tZW50LgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGZwLnNlZWsoMCwgMikKICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSBmcC50ZWxsKCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKGYiY2FuJ3QgcmVhZCBaaXAgZmlsZToge2FyY2hpdmUhcn0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9YXJjaGl2ZSkKICAgICAgICAgICAgICAgIG1heF9jb21tZW50X3N0YXJ0ID0gbWF4KGZpbGVfc2l6ZSAtIE1BWF9DT01NRU5UX0xFTiAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTkRfQ0VOVFJBTF9ESVJfU0laRSwgMCkKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBmcC5zZWVrKG1heF9jb21tZW50X3N0YXJ0KQogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKGYiY2FuJ3QgcmVhZCBaaXAgZmlsZToge2FyY2hpdmUhcn0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9YXJjaGl2ZSkKICAgICAgICAgICAgICAgIHBvcyA9IGRhdGEucmZpbmQoU1RSSU5HX0VORF9BUkNISVZFKQogICAgICAgICAgICAgICAgaWYgcG9zIDwgMDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBaaXBJbXBvcnRFcnJvcihmJ25vdCBhIFppcCBmaWxlOiB7YXJjaGl2ZSFyfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1hcmNoaXZlKQogICAgICAgICAgICAgICAgYnVmZmVyID0gZGF0YVtwb3M6cG9zK0VORF9DRU5UUkFMX0RJUl9TSVpFXQogICAgICAgICAgICAgICAgaWYgbGVuKGJ1ZmZlcikgIT0gRU5EX0NFTlRSQUxfRElSX1NJWkU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZiJjb3JydXB0IFppcCBmaWxlOiB7YXJjaGl2ZSFyfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1hcmNoaXZlKQogICAgICAgICAgICAgICAgaGVhZGVyX3Bvc2l0aW9uID0gZmlsZV9zaXplIC0gbGVuKGRhdGEpICsgcG9zCgogICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IF91bnBhY2tfdWludDMyKGJ1ZmZlclsxMjoxNl0pCiAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSBfdW5wYWNrX3VpbnQzMihidWZmZXJbMTY6MjBdKQogICAgICAgICAgICBpZiBoZWFkZXJfcG9zaXRpb24gPCBoZWFkZXJfc2l6ZToKICAgICAgICAgICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKGYnYmFkIGNlbnRyYWwgZGlyZWN0b3J5IHNpemU6IHthcmNoaXZlIXJ9JywgcGF0aD1hcmNoaXZlKQogICAgICAgICAgICBpZiBoZWFkZXJfcG9zaXRpb24gPCBoZWFkZXJfb2Zmc2V0OgogICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZidiYWQgY2VudHJhbCBkaXJlY3Rvcnkgb2Zmc2V0OiB7YXJjaGl2ZSFyfScsIHBhdGg9YXJjaGl2ZSkKICAgICAgICAgICAgaGVhZGVyX3Bvc2l0aW9uIC09IGhlYWRlcl9zaXplCiAgICAgICAgICAgIGFyY19vZmZzZXQgPSBoZWFkZXJfcG9zaXRpb24gLSBoZWFkZXJfb2Zmc2V0CiAgICAgICAgICAgIGlmIGFyY19vZmZzZXQgPCAwOgogICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZidiYWQgY2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSBvciBvZmZzZXQ6IHthcmNoaXZlIXJ9JywgcGF0aD1hcmNoaXZlKQoKICAgICAgICAgICAgZmlsZXMgPSB7fQogICAgICAgICAgICAjIFN0YXJ0IG9mIENlbnRyYWwgRGlyZWN0b3J5CiAgICAgICAgICAgIGNvdW50ID0gMAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmcC5zZWVrKGhlYWRlcl9wb3NpdGlvbikKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBaaXBJbXBvcnRFcnJvcihmImNhbid0IHJlYWQgWmlwIGZpbGU6IHthcmNoaXZlIXJ9IiwgcGF0aD1hcmNoaXZlKQogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgYnVmZmVyID0gZnAucmVhZCg0NikKICAgICAgICAgICAgICAgIGlmIGxlbihidWZmZXIpIDwgNDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcignRU9GIHJlYWQgd2hlcmUgbm90IGV4cGVjdGVkJykKICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgZmlsZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmIGJ1ZmZlcls6NF0gIT0gYidQS1x4MDFceDAyJzoKICAgICAgICAgICAgICAgICAgICBicmVhayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCYWQ6IENlbnRyYWwgRGlyIEZpbGUgSGVhZGVyCiAgICAgICAgICAgICAgICBpZiBsZW4oYnVmZmVyKSAhPSA0NjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcignRU9GIHJlYWQgd2hlcmUgbm90IGV4cGVjdGVkJykKICAgICAgICAgICAgICAgIGZsYWdzID0gX3VucGFja191aW50MTYoYnVmZmVyWzg6MTBdKQogICAgICAgICAgICAgICAgY29tcHJlc3MgPSBfdW5wYWNrX3VpbnQxNihidWZmZXJbMTA6MTJdKQogICAgICAgICAgICAgICAgdGltZSA9IF91bnBhY2tfdWludDE2KGJ1ZmZlclsxMjoxNF0pCiAgICAgICAgICAgICAgICBkYXRlID0gX3VucGFja191aW50MTYoYnVmZmVyWzE0OjE2XSkKICAgICAgICAgICAgICAgIGNyYyA9IF91bnBhY2tfdWludDMyKGJ1ZmZlclsxNjoyMF0pCiAgICAgICAgICAgICAgICBkYXRhX3NpemUgPSBfdW5wYWNrX3VpbnQzMihidWZmZXJbMjA6MjRdKQogICAgICAgICAgICAgICAgZmlsZV9zaXplID0gX3VucGFja191aW50MzIoYnVmZmVyWzI0OjI4XSkKICAgICAgICAgICAgICAgIG5hbWVfc2l6ZSA9IF91bnBhY2tfdWludDE2KGJ1ZmZlclsyODozMF0pCiAgICAgICAgICAgICAgICBleHRyYV9zaXplID0gX3VucGFja191aW50MTYoYnVmZmVyWzMwOjMyXSkKICAgICAgICAgICAgICAgIGNvbW1lbnRfc2l6ZSA9IF91bnBhY2tfdWludDE2KGJ1ZmZlclszMjozNF0pCiAgICAgICAgICAgICAgICBmaWxlX29mZnNldCA9IF91bnBhY2tfdWludDMyKGJ1ZmZlcls0Mjo0Nl0pCiAgICAgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IG5hbWVfc2l6ZSArIGV4dHJhX3NpemUgKyBjb21tZW50X3NpemUKICAgICAgICAgICAgICAgIGlmIGZpbGVfb2Zmc2V0ID4gaGVhZGVyX29mZnNldDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBaaXBJbXBvcnRFcnJvcihmJ2JhZCBsb2NhbCBoZWFkZXIgb2Zmc2V0OiB7YXJjaGl2ZSFyfScsIHBhdGg9YXJjaGl2ZSkKICAgICAgICAgICAgICAgIGZpbGVfb2Zmc2V0ICs9IGFyY19vZmZzZXQKCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGZwLnJlYWQobmFtZV9zaXplKQogICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZiJjYW4ndCByZWFkIFppcCBmaWxlOiB7YXJjaGl2ZSFyfSIsIHBhdGg9YXJjaGl2ZSkKICAgICAgICAgICAgICAgIGlmIGxlbihuYW1lKSAhPSBuYW1lX3NpemU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZiJjYW4ndCByZWFkIFppcCBmaWxlOiB7YXJjaGl2ZSFyfSIsIHBhdGg9YXJjaGl2ZSkKICAgICAgICAgICAgICAgICMgT24gV2luZG93cywgY2FsbGluZyBmc2VlayB0byBza2lwIG92ZXIgdGhlIGZpZWxkcyB3ZSBkb24ndCB1c2UgaXMKICAgICAgICAgICAgICAgICMgc2xvd2VyIHRoYW4gcmVhZGluZyB0aGUgZGF0YSBiZWNhdXNlIGZzZWVrIGZsdXNoZXMgc3RkaW8ncwogICAgICAgICAgICAgICAgIyBpbnRlcm5hbCBidWZmZXJzLiAgICBTZWUgaXNzdWUgIzg3NDUuCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGZwLnJlYWQoaGVhZGVyX3NpemUgLSBuYW1lX3NpemUpKSAhPSBoZWFkZXJfc2l6ZSAtIG5hbWVfc2l6ZToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoZiJjYW4ndCByZWFkIFppcCBmaWxlOiB7YXJjaGl2ZSFyfSIsIHBhdGg9YXJjaGl2ZSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKGYiY2FuJ3QgcmVhZCBaaXAgZmlsZToge2FyY2hpdmUhcn0iLCBwYXRoPWFyY2hpdmUpCgogICAgICAgICAgICAgICAgaWYgZmxhZ3MgJiAweDgwMDoKICAgICAgICAgICAgICAgICAgICAjIFVURi04IGZpbGUgbmFtZXMgZXh0ZW5zaW9uCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuZGVjb2RlKCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBIaXN0b3JpY2FsIFpJUCBmaWxlbmFtZSBlbmNvZGluZwogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuZGVjb2RlKCdhc2NpaScpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuZGVjb2RlKCdsYXRpbjEnKS50cmFuc2xhdGUoY3A0MzdfdGFibGUpCgogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgnLycsIHBhdGhfc2VwKQogICAgICAgICAgICAgICAgcGF0aCA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX3BhdGhfam9pbihhcmNoaXZlLCBuYW1lKQogICAgICAgICAgICAgICAgdCA9IChwYXRoLCBjb21wcmVzcywgZGF0YV9zaXplLCBmaWxlX3NpemUsIGZpbGVfb2Zmc2V0LCB0aW1lLCBkYXRlLCBjcmMpCiAgICAgICAgICAgICAgICBmaWxlc1tuYW1lXSA9IHQKICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBmcC5zZWVrKHN0YXJ0X29mZnNldCkKICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnemlwaW1wb3J0OiBmb3VuZCB7fSBuYW1lcyBpbiB7IXJ9JywgY291bnQsIGFyY2hpdmUpCiAgICByZXR1cm4gZmlsZXMKCiMgRHVyaW5nIGJvb3RzdHJhcCwgd2UgbWF5IG5lZWQgdG8gbG9hZCB0aGUgZW5jb2RpbmdzCiMgcGFja2FnZSBmcm9tIGEgWklQIGZpbGUuIEJ1dCB0aGUgY3A0MzcgZW5jb2RpbmcgaXMgaW1wbGVtZW50ZWQKIyBpbiBQeXRob24gaW4gdGhlIGVuY29kaW5ncyBwYWNrYWdlLgojCiMgQnJlYWsgb3V0IG9mIHRoaXMgZGVwZW5kZW5jeSBieSB1c2luZyB0aGUgdHJhbnNsYXRpb24gdGFibGUgZm9yCiMgdGhlIGNwNDM3IGVuY29kaW5nLgpjcDQzN190YWJsZSA9ICgKICAgICMgQVNDSUkgcGFydCwgOCByb3dzIHggMTYgY2hhcnMKICAgICdceDAwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1x4MDhcdFxuXHgwYlx4MGNcclx4MGVceDBmJwogICAgJ1x4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYnCiAgICAnICEiIyQlJlwnKCkqKywtLi8nCiAgICAnMDEyMzQ1Njc4OTo7PD0+PycKICAgICdAQUJDREVGR0hJSktMTU5PJwogICAgJ1BRUlNUVVZXWFlaW1xcXV5fJwogICAgJ2BhYmNkZWZnaGlqa2xtbm8nCiAgICAncHFyc3R1dnd4eXp7fH1+XHg3ZicKICAgICMgbm9uLUFTQ0lJIHBhcnQsIDE2IHJvd3MgeCA4IGNoYXJzCiAgICAnXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTcnCiAgICAnXHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzUnCiAgICAnXHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjknCiAgICAnXHhmZlx4ZDZceGRjXHhhMlx4YTNceGE1XHUyMGE3XHUwMTkyJwogICAgJ1x4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhJwogICAgJ1x4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmInCiAgICAnXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2JwogICAgJ1x1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMCcKICAgICdcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWYnCiAgICAnXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3JwogICAgJ1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2YicKICAgICdcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODAnCiAgICAnXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzQnCiAgICAnXHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5JwogICAgJ1x1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4JwogICAgJ1x4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAnCikKCl9pbXBvcnRpbmdfemxpYiA9IEZhbHNlCgojIFJldHVybiB0aGUgemxpYi5kZWNvbXByZXNzIGZ1bmN0aW9uIG9iamVjdCwgb3IgTlVMTCBpZiB6bGliIGNvdWxkbid0CiMgYmUgaW1wb3J0ZWQuIFRoZSBmdW5jdGlvbiBpcyBjYWNoZWQgd2hlbiBmb3VuZCwgc28gc3Vic2VxdWVudCBjYWxscwojIGRvbid0IGltcG9ydCB6bGliIGFnYWluLgpkZWYgX2dldF9kZWNvbXByZXNzX2Z1bmMoKToKICAgIGdsb2JhbCBfaW1wb3J0aW5nX3psaWIKICAgIGlmIF9pbXBvcnRpbmdfemxpYjoKICAgICAgICAjIFNvbWVvbmUgaGFzIGEgemxpYi5weVtjb10gaW4gdGhlaXIgWmlwIGZpbGUKICAgICAgICAjIGxldCdzIGF2b2lkIGEgc3RhY2sgb3ZlcmZsb3cuCiAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd6aXBpbXBvcnQ6IHpsaWIgVU5BVkFJTEFCTEUnKQogICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKCJjYW4ndCBkZWNvbXByZXNzIGRhdGE7IHpsaWIgbm90IGF2YWlsYWJsZSIpCgogICAgX2ltcG9ydGluZ196bGliID0gVHJ1ZQogICAgdHJ5OgogICAgICAgIGZyb20gemxpYiBpbXBvcnQgZGVjb21wcmVzcwogICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3ppcGltcG9ydDogemxpYiBVTkFWQUlMQUJMRScpCiAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoImNhbid0IGRlY29tcHJlc3MgZGF0YTsgemxpYiBub3QgYXZhaWxhYmxlIikKICAgIGZpbmFsbHk6CiAgICAgICAgX2ltcG9ydGluZ196bGliID0gRmFsc2UKCiAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3ppcGltcG9ydDogemxpYiBhdmFpbGFibGUnKQogICAgcmV0dXJuIGRlY29tcHJlc3MKCiMgR2l2ZW4gYSBwYXRoIHRvIGEgWmlwIGZpbGUgYW5kIGEgdG9jX2VudHJ5LCByZXR1cm4gdGhlICh1bmNvbXByZXNzZWQpIGRhdGEuCmRlZiBfZ2V0X2RhdGEoYXJjaGl2ZSwgdG9jX2VudHJ5KToKICAgIGRhdGFwYXRoLCBjb21wcmVzcywgZGF0YV9zaXplLCBmaWxlX3NpemUsIGZpbGVfb2Zmc2V0LCB0aW1lLCBkYXRlLCBjcmMgPSB0b2NfZW50cnkKICAgIGlmIGRhdGFfc2l6ZSA8IDA6CiAgICAgICAgcmFpc2UgWmlwSW1wb3J0RXJyb3IoJ25lZ2F0aXZlIGRhdGEgc2l6ZScpCgogICAgd2l0aCBfaW8ub3Blbl9jb2RlKGFyY2hpdmUpIGFzIGZwOgogICAgICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBsb2NhbCBmaWxlIGhlYWRlciBpcyBjb3JyZWN0CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmcC5zZWVrKGZpbGVfb2Zmc2V0KQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICByYWlzZSBaaXBJbXBvcnRFcnJvcihmImNhbid0IHJlYWQgWmlwIGZpbGU6IHthcmNoaXZlIXJ9IiwgcGF0aD1hcmNoaXZlKQogICAgICAgIGJ1ZmZlciA9IGZwLnJlYWQoMzApCiAgICAgICAgaWYgbGVuKGJ1ZmZlcikgIT0gMzA6CiAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCdFT0YgcmVhZCB3aGVyZSBub3QgZXhwZWN0ZWQnKQoKICAgICAgICBpZiBidWZmZXJbOjRdICE9IGInUEtceDAzXHgwNCc6CiAgICAgICAgICAgICMgQmFkOiBMb2NhbCBGaWxlIEhlYWRlcgogICAgICAgICAgICByYWlzZSBaaXBJbXBvcnRFcnJvcihmJ2JhZCBsb2NhbCBmaWxlIGhlYWRlcjoge2FyY2hpdmUhcn0nLCBwYXRoPWFyY2hpdmUpCgogICAgICAgIG5hbWVfc2l6ZSA9IF91bnBhY2tfdWludDE2KGJ1ZmZlclsyNjoyOF0pCiAgICAgICAgZXh0cmFfc2l6ZSA9IF91bnBhY2tfdWludDE2KGJ1ZmZlclsyODozMF0pCiAgICAgICAgaGVhZGVyX3NpemUgPSAzMCArIG5hbWVfc2l6ZSArIGV4dHJhX3NpemUKICAgICAgICBmaWxlX29mZnNldCArPSBoZWFkZXJfc2l6ZSAgIyBTdGFydCBvZiBmaWxlIGRhdGEKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZwLnNlZWsoZmlsZV9vZmZzZXQpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKGYiY2FuJ3QgcmVhZCBaaXAgZmlsZToge2FyY2hpdmUhcn0iLCBwYXRoPWFyY2hpdmUpCiAgICAgICAgcmF3X2RhdGEgPSBmcC5yZWFkKGRhdGFfc2l6ZSkKICAgICAgICBpZiBsZW4ocmF3X2RhdGEpICE9IGRhdGFfc2l6ZToKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiemlwaW1wb3J0OiBjYW4ndCByZWFkIGRhdGEiKQoKICAgIGlmIGNvbXByZXNzID09IDA6CiAgICAgICAgIyBkYXRhIGlzIG5vdCBjb21wcmVzc2VkCiAgICAgICAgcmV0dXJuIHJhd19kYXRhCgogICAgIyBEZWNvbXByZXNzIHdpdGggemxpYgogICAgdHJ5OgogICAgICAgIGRlY29tcHJlc3MgPSBfZ2V0X2RlY29tcHJlc3NfZnVuYygpCiAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKCJjYW4ndCBkZWNvbXByZXNzIGRhdGE7IHpsaWIgbm90IGF2YWlsYWJsZSIpCiAgICByZXR1cm4gZGVjb21wcmVzcyhyYXdfZGF0YSwgLTE1KQoKCiMgTGVuaWVudCBkYXRlL3RpbWUgY29tcGFyaXNvbiBmdW5jdGlvbi4gVGhlIHByZWNpc2lvbiBvZiB0aGUgbXRpbWUKIyBpbiB0aGUgYXJjaGl2ZSBpcyBsb3dlciB0aGFuIHRoZSBtdGltZSBzdG9yZWQgaW4gYSAucHljOiB3ZQojIG11c3QgYWxsb3cgYSBkaWZmZXJlbmNlIG9mIGF0IG1vc3Qgb25lIHNlY29uZC4KZGVmIF9lcV9tdGltZSh0MSwgdDIpOgogICAgIyBkb3N0aW1lIG9ubHkgc3RvcmVzIGV2ZW4gc2Vjb25kcywgc28gYmUgbGVuaWVudAogICAgcmV0dXJuIGFicyh0MSAtIHQyKSA8PSAxCgoKIyBHaXZlbiB0aGUgY29udGVudHMgb2YgYSAucHlbY29dIGZpbGUsIHVubWFyc2hhbCB0aGUgZGF0YQojIGFuZCByZXR1cm4gdGhlIGNvZGUgb2JqZWN0LiBSYWlzZXMgSW1wb3J0RXJyb3IgaXQgdGhlIG1hZ2ljIHdvcmQgZG9lc24ndAojIG1hdGNoLCBvciBpZiB0aGUgcmVjb3JkZWQgLnB5W2NvXSBtZXRhZGF0YSBkb2VzIG5vdCBtYXRjaCB0aGUgc291cmNlLgpkZWYgX3VubWFyc2hhbF9jb2RlKHNlbGYsIHBhdGhuYW1lLCBmdWxscGF0aCwgZnVsbG5hbWUsIGRhdGEpOgogICAgZXhjX2RldGFpbHMgPSB7CiAgICAgICAgJ25hbWUnOiBmdWxsbmFtZSwKICAgICAgICAncGF0aCc6IGZ1bGxwYXRoLAogICAgfQoKICAgIGZsYWdzID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fY2xhc3NpZnlfcHljKGRhdGEsIGZ1bGxuYW1lLCBleGNfZGV0YWlscykKCiAgICBoYXNoX2Jhc2VkID0gZmxhZ3MgJiAwYjEgIT0gMAogICAgaWYgaGFzaF9iYXNlZDoKICAgICAgICBjaGVja19zb3VyY2UgPSBmbGFncyAmIDBiMTAgIT0gMAogICAgICAgIGlmIChfaW1wLmNoZWNrX2hhc2hfYmFzZWRfcHljcyAhPSAnbmV2ZXInIGFuZAogICAgICAgICAgICAgICAgKGNoZWNrX3NvdXJjZSBvciBfaW1wLmNoZWNrX2hhc2hfYmFzZWRfcHljcyA9PSAnYWx3YXlzJykpOgogICAgICAgICAgICBzb3VyY2VfYnl0ZXMgPSBfZ2V0X3B5Y19zb3VyY2Uoc2VsZiwgZnVsbHBhdGgpCiAgICAgICAgICAgIGlmIHNvdXJjZV9ieXRlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNvdXJjZV9oYXNoID0gX2ltcC5zb3VyY2VfaGFzaCgKICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwX2V4dGVybmFsLl9SQVdfTUFHSUNfTlVNQkVSLAogICAgICAgICAgICAgICAgICAgIHNvdXJjZV9ieXRlcywKICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICBfYm9vdHN0cmFwX2V4dGVybmFsLl92YWxpZGF0ZV9oYXNoX3B5YygKICAgICAgICAgICAgICAgICAgICBkYXRhLCBzb3VyY2VfaGFzaCwgZnVsbG5hbWUsIGV4Y19kZXRhaWxzKQogICAgZWxzZToKICAgICAgICBzb3VyY2VfbXRpbWUsIHNvdXJjZV9zaXplID0gXAogICAgICAgICAgICBfZ2V0X210aW1lX2FuZF9zaXplX29mX3NvdXJjZShzZWxmLCBmdWxscGF0aCkKCiAgICAgICAgaWYgc291cmNlX210aW1lOgogICAgICAgICAgICAjIFdlIGRvbid0IHVzZSBfYm9vdHN0cmFwX2V4dGVybmFsLl92YWxpZGF0ZV90aW1lc3RhbXBfcHljCiAgICAgICAgICAgICMgdG8gYWxsb3cgZm9yIGEgbW9yZSBsZW5pZW50IHRpbWVzdGFtcCBjaGVjay4KICAgICAgICAgICAgaWYgKG5vdCBfZXFfbXRpbWUoX3VucGFja191aW50MzIoZGF0YVs4OjEyXSksIHNvdXJjZV9tdGltZSkgb3IKICAgICAgICAgICAgICAgICAgICBfdW5wYWNrX3VpbnQzMihkYXRhWzEyOjE2XSkgIT0gc291cmNlX3NpemUpOgogICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKAogICAgICAgICAgICAgICAgICAgIGYnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHtmdWxsbmFtZSFyfScpCiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGNvZGUgPSBtYXJzaGFsLmxvYWRzKGRhdGFbMTY6XSkKICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvZGUsIF9jb2RlX3R5cGUpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ2NvbXBpbGVkIG1vZHVsZSB7cGF0aG5hbWUhcn0gaXMgbm90IGEgY29kZSBvYmplY3QnKQogICAgcmV0dXJuIGNvZGUKCl9jb2RlX3R5cGUgPSB0eXBlKF91bm1hcnNoYWxfY29kZS5fX2NvZGVfXykKCgojIFJlcGxhY2UgYW55IG9jY3VycmVuY2VzIG9mICdcclxuPycgaW4gdGhlIGlucHV0IHN0cmluZyB3aXRoICdcbicuCiMgVGhpcyBjb252ZXJ0cyBET1MgYW5kIE1hYyBsaW5lIGVuZGluZ3MgdG8gVW5peCBsaW5lIGVuZGluZ3MuCmRlZiBfbm9ybWFsaXplX2xpbmVfZW5kaW5ncyhzb3VyY2UpOgogICAgc291cmNlID0gc291cmNlLnJlcGxhY2UoYidcclxuJywgYidcbicpCiAgICBzb3VyY2UgPSBzb3VyY2UucmVwbGFjZShiJ1xyJywgYidcbicpCiAgICByZXR1cm4gc291cmNlCgojIEdpdmVuIGEgc3RyaW5nIGJ1ZmZlciBjb250YWluaW5nIFB5dGhvbiBzb3VyY2UgY29kZSwgY29tcGlsZSBpdAojIGFuZCByZXR1cm4gYSBjb2RlIG9iamVjdC4KZGVmIF9jb21waWxlX3NvdXJjZShwYXRobmFtZSwgc291cmNlKToKICAgIHNvdXJjZSA9IF9ub3JtYWxpemVfbGluZV9lbmRpbmdzKHNvdXJjZSkKICAgIHJldHVybiBjb21waWxlKHNvdXJjZSwgcGF0aG5hbWUsICdleGVjJywgZG9udF9pbmhlcml0PVRydWUpCgojIENvbnZlcnQgdGhlIGRhdGUvdGltZSB2YWx1ZXMgZm91bmQgaW4gdGhlIFppcCBhcmNoaXZlIHRvIGEgdmFsdWUKIyB0aGF0J3MgY29tcGF0aWJsZSB3aXRoIHRoZSB0aW1lIHN0YW1wIHN0b3JlZCBpbiAucHljIGZpbGVzLgpkZWYgX3BhcnNlX2Rvc3RpbWUoZCwgdCk6CiAgICByZXR1cm4gdGltZS5ta3RpbWUoKAogICAgICAgIChkID4+IDkpICsgMTk4MCwgICAgIyBiaXRzIDkuLjE1OiB5ZWFyCiAgICAgICAgKGQgPj4gNSkgJiAweEYsICAgICAjIGJpdHMgNS4uODogbW9udGgKICAgICAgICBkICYgMHgxRiwgICAgICAgICAgICMgYml0cyAwLi40OiBkYXkKICAgICAgICB0ID4+IDExLCAgICAgICAgICAgICMgYml0cyAxMS4uMTU6IGhvdXJzCiAgICAgICAgKHQgPj4gNSkgJiAweDNGLCAgICAjIGJpdHMgOC4uMTA6IG1pbnV0ZXMKICAgICAgICAodCAmIDB4MUYpICogMiwgICAgICMgYml0cyAwLi43OiBzZWNvbmRzIC8gMgogICAgICAgIC0xLCAtMSwgLTEpKQoKIyBHaXZlbiBhIHBhdGggdG8gYSAucHljIGZpbGUgaW4gdGhlIGFyY2hpdmUsIHJldHVybiB0aGUKIyBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgbWF0Y2hpbmcgLnB5IGZpbGUgYW5kIGl0cyBzaXplLAojIG9yICgwLCAwKSBpZiBubyBzb3VyY2UgaXMgYXZhaWxhYmxlLgpkZWYgX2dldF9tdGltZV9hbmRfc2l6ZV9vZl9zb3VyY2Uoc2VsZiwgcGF0aCk6CiAgICB0cnk6CiAgICAgICAgIyBzdHJpcCAnYycgb3IgJ28nIGZyb20gKi5weVtjb10KICAgICAgICBhc3NlcnQgcGF0aFstMTpdIGluICgnYycsICdvJykKICAgICAgICBwYXRoID0gcGF0aFs6LTFdCiAgICAgICAgdG9jX2VudHJ5ID0gc2VsZi5fZmlsZXNbcGF0aF0KICAgICAgICAjIGZldGNoIHRoZSB0aW1lIHN0YW1wIG9mIHRoZSAucHkgZmlsZSBmb3IgY29tcGFyaXNvbgogICAgICAgICMgd2l0aCBhbiBlbWJlZGRlZCBweWMgdGltZSBzdGFtcAogICAgICAgIHRpbWUgPSB0b2NfZW50cnlbNV0KICAgICAgICBkYXRlID0gdG9jX2VudHJ5WzZdCiAgICAgICAgdW5jb21wcmVzc2VkX3NpemUgPSB0b2NfZW50cnlbM10KICAgICAgICByZXR1cm4gX3BhcnNlX2Rvc3RpbWUoZGF0ZSwgdGltZSksIHVuY29tcHJlc3NlZF9zaXplCiAgICBleGNlcHQgKEtleUVycm9yLCBJbmRleEVycm9yLCBUeXBlRXJyb3IpOgogICAgICAgIHJldHVybiAwLCAwCgoKIyBHaXZlbiBhIHBhdGggdG8gYSAucHljIGZpbGUgaW4gdGhlIGFyY2hpdmUsIHJldHVybiB0aGUKIyBjb250ZW50cyBvZiB0aGUgbWF0Y2hpbmcgLnB5IGZpbGUsIG9yIE5vbmUgaWYgbm8gc291cmNlCiMgaXMgYXZhaWxhYmxlLgpkZWYgX2dldF9weWNfc291cmNlKHNlbGYsIHBhdGgpOgogICAgIyBzdHJpcCAnYycgb3IgJ28nIGZyb20gKi5weVtjb10KICAgIGFzc2VydCBwYXRoWy0xOl0gaW4gKCdjJywgJ28nKQogICAgcGF0aCA9IHBhdGhbOi0xXQoKICAgIHRyeToKICAgICAgICB0b2NfZW50cnkgPSBzZWxmLl9maWxlc1twYXRoXQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJldHVybiBOb25lCiAgICBlbHNlOgogICAgICAgIHJldHVybiBfZ2V0X2RhdGEoc2VsZi5hcmNoaXZlLCB0b2NfZW50cnkpCgoKIyBHZXQgdGhlIGNvZGUgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbW9kdWxlIHNwZWNpZmllZCBieQojICdmdWxsbmFtZScuCmRlZiBfZ2V0X21vZHVsZV9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgIHBhdGggPSBfZ2V0X21vZHVsZV9wYXRoKHNlbGYsIGZ1bGxuYW1lKQogICAgaW1wb3J0X2Vycm9yID0gTm9uZQogICAgZm9yIHN1ZmZpeCwgaXNieXRlY29kZSwgaXNwYWNrYWdlIGluIF96aXBfc2VhcmNob3JkZXI6CiAgICAgICAgZnVsbHBhdGggPSBwYXRoICsgc3VmZml4CiAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge317fXt9Jywgc2VsZi5hcmNoaXZlLCBwYXRoX3NlcCwgZnVsbHBhdGgsIHZlcmJvc2l0eT0yKQogICAgICAgIHRyeToKICAgICAgICAgICAgdG9jX2VudHJ5ID0gc2VsZi5fZmlsZXNbZnVsbHBhdGhdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbW9kcGF0aCA9IHRvY19lbnRyeVswXQogICAgICAgICAgICBkYXRhID0gX2dldF9kYXRhKHNlbGYuYXJjaGl2ZSwgdG9jX2VudHJ5KQogICAgICAgICAgICBjb2RlID0gTm9uZQogICAgICAgICAgICBpZiBpc2J5dGVjb2RlOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGNvZGUgPSBfdW5tYXJzaGFsX2NvZGUoc2VsZiwgbW9kcGF0aCwgZnVsbHBhdGgsIGZ1bGxuYW1lLCBkYXRhKQogICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAgICBpbXBvcnRfZXJyb3IgPSBleGMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvZGUgPSBfY29tcGlsZV9zb3VyY2UobW9kcGF0aCwgZGF0YSkKICAgICAgICAgICAgaWYgY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBiYWQgbWFnaWMgbnVtYmVyIG9yIG5vbi1tYXRjaGluZyBtdGltZQogICAgICAgICAgICAgICAgIyBpbiBieXRlIGNvZGUsIHRyeSBuZXh0CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBtb2RwYXRoID0gdG9jX2VudHJ5WzBdCiAgICAgICAgICAgIHJldHVybiBjb2RlLCBpc3BhY2thZ2UsIG1vZHBhdGgKICAgIGVsc2U6CiAgICAgICAgaWYgaW1wb3J0X2Vycm9yOgogICAgICAgICAgICBtc2cgPSBmIm1vZHVsZSBsb2FkIGZhaWxlZDoge2ltcG9ydF9lcnJvcn0iCiAgICAgICAgICAgIHJhaXNlIFppcEltcG9ydEVycm9yKG1zZywgbmFtZT1mdWxsbmFtZSkgZnJvbSBpbXBvcnRfZXJyb3IKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBaaXBJbXBvcnRFcnJvcihmImNhbid0IGZpbmQgbW9kdWxlIHtmdWxsbmFtZSFyfSIsIG5hbWU9ZnVsbG5hbWUpClBLAwQUAAAAAAAHIKNWDdzCPaidAAConQAALwAAAF9zeXNjb25maWdkYXRhX19lbXNjcmlwdGVuX3dhc20zMi1lbXNjcmlwdGVuLnB5IyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnkgdGhlIHN5c2NvbmZpZyBtb2R1bGUKYnVpbGRfdGltZV92YXJzID0geydBQklGTEFHUyc6ICcnLAogJ0FDX0FQUExFX1VOSVZFUlNBTF9CVUlMRCc6IDAsCiAnQUlYX0JVSUxEREFURSc6IDAsCiAnQUlYX0dFTlVJTkVfQ1BMVVNQTFVTJzogMCwKICdBTElHTk9GX0xPTkcnOiA0LAogJ0FMSUdOT0ZfU0laRV9UJzogNCwKICdBTFRfU09BQkknOiAwLAogJ0FORFJPSURfQVBJX0xFVkVMJzogMCwKICdBUic6ICcvcm9vdC9yZXBvL2Vtc2RrL2Vtc2RrL3Vwc3RyZWFtL2Vtc2NyaXB0ZW4vZW1hcicsCiAnQVJGTEFHUyc6ICdyY3MnLAogJ0JBU0VDRkxBR1MnOiAnJywKICdCQVNFQ1BQRkxBR1MnOiAnJywKICdCQVNFTU9ETElCUyc6ICcnLAogJ0JJTkRJUic6ICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9iaW4nLAogJ0JJTkxJQkRFU1QnOiAnL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvbGliL3B5dGhvbjMuMTEnLAogJ0JMRExJQlJBUlknOiAnbGlicHl0aG9uMy4xMS5hJywKICdCTERTSEFSRUQnOiAnY2MnLAogJ0JPT1RTVFJBUF9IRUFERVJTJzogJ1xcJywKICdCVUlMREVYRSc6ICcuanMnLAogJ0JVSUxEUFlUSE9OJzogJ3B5dGhvbi5qcycsCiAnQlVJTERfR05VX1RZUEUnOiAneDg2XzY0LXBjLWxpbnV4LWdudScsCiAnQllURVNUUl9ERVBTJzogJ1xcJywKICdDQyc6ICdjYycsCiAnQ0NTSEFSRUQnOiAnJywKICdDRkxBR1MnOiAnLUROREVCVUcgLWcgLWZ3cmFwdiAtTzMgLVdhbGwgLU8yIC1nMCAtZlBJQyAgLURQWV9DQUxMX1RSQU1QT0xJTkUnLAogJ0NGTEFHU0ZPUlNIQVJFRCc6ICcnLAogJ0NGTEFHU19BTElBU0lORyc6ICctZm5vLXN0cmljdC1hbGlhc2luZycsCiAnQ0ZMQUdTX05PRElTVCc6ICcnLAogJ0NPTkZJR0ZJTEVTJzogJ2NvbmZpZ3VyZSBjb25maWd1cmUuYWMgYWNjb25maWcuaCBweWNvbmZpZy5oLmluICcKICAgICAgICAgICAgICAgICdNYWtlZmlsZS5wcmUuaW4nLAogJ0NPTkZJR1VSRV9DRkxBR1MnOiAnLU8yIC1nMCAtZlBJQyAgLURQWV9DQUxMX1RSQU1QT0xJTkUnLAogJ0NPTkZJR1VSRV9DRkxBR1NfTk9ESVNUJzogJy1zdGQ9YzExIC1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mdmlzaWJpbGl0eT1oaWRkZW4nLAogJ0NPTkZJR1VSRV9DUFBGTEFHUyc6ICctc1VTRV9CWklQMj0xIC1zVVNFX1pMSUI9MScsCiAnQ09ORklHVVJFX0xERkxBR1MnOiAnJywKICdDT05GSUdVUkVfTERGTEFHU19OT0RJU1QnOiAnLXNBTExPV19NRU1PUllfR1JPV1RIIC1zVE9UQUxfTUVNT1JZPTIwOTcxNTIwICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLXNXQVNNX0JJR0lOVCAtc0ZPUkNFX0ZJTEVTWVNURU0gLWxpZGJmcy5qcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1sbm9kZWZzLmpzIC1scHJveHlmcy5qcyAtbHdvcmtlcmZzLmpzJywKICdDT05GSUdVUkVfTERGTEFHU19OT0xUTyc6ICcnLAogJ0NPTkZJR19BUkdTJzogIidDRkxBR1M9LU8yIC1nMCAtZlBJQyAgLURQWV9DQUxMX1RSQU1QT0xJTkUnICIKICAgICAgICAgICAgICAgICInQ1BQRkxBR1M9LXNVU0VfQlpJUDI9MSAtc1VTRV9aTElCPTEnICIKICAgICAgICAgICAgICAgICInUExBVEZPUk1fVFJJUExFVD13YXNtMzItZW1zY3JpcHRlbicgJy0td2l0aG91dC1weW1hbGxvYycgIgogICAgICAgICAgICAgICAgIictLWRpc2FibGUtc2hhcmVkJyAnLS1kaXNhYmxlLWlwdjYnICctLWVuYWJsZS1iaWctZGlnaXRzPTMwJyAiCiAgICAgICAgICAgICAgICAiJy0tZW5hYmxlLW9wdGltaXphdGlvbnMnICctLWhvc3Q9d2FzbTMyLXVua25vd24tZW1zY3JpcHRlbicgIgogICAgICAgICAgICAgICAgIictLWJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUnICIKICAgICAgICAgICAgICAgICInLS1wcmVmaXg9L3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjInICIKICAgICAgICAgICAgICAgICInLS13aXRoLWJ1aWxkLXB5dGhvbj0vdXNyL2xvY2FsL2Jpbi9weXRob24zLjExJyAiCiAgICAgICAgICAgICAgICAiJ2J1aWxkX2FsaWFzPXg4Nl82NC1wYy1saW51eC1nbnUnICIKICAgICAgICAgICAgICAgICInaG9zdF9hbGlhcz13YXNtMzItdW5rbm93bi1lbXNjcmlwdGVuJyAnUEtHX0NPTkZJR19QQVRIPScgIgogICAgICAgICAgICAgICAgIidQS0dfQ09ORklHX0xJQkRJUj0vcm9vdC9yZXBvL2Vtc2RrL2Vtc2RrL3Vwc3RyZWFtL2Vtc2NyaXB0ZW4vY2FjaGUvc3lzcm9vdC9sb2NhbC9saWIvcGtnY29uZmlnOi9yb290L3JlcG8vZW1zZGsvZW1zZGsvdXBzdHJlYW0vZW1zY3JpcHRlbi9jYWNoZS9zeXNyb290L2xpYi9wa2djb25maWcnICIKICAgICAgICAgICAgICAgICInQ0M9L3Jvb3QvcmVwby9lbXNkay9lbXNkay91cHN0cmVhbS9lbXNjcmlwdGVuL2VtY2MnIiwKICdDT05GSU5DTFVERURJUic6ICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9pbmNsdWRlJywKICdDT05GSU5DTFVERVBZJzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2luY2x1ZGUvcHl0aG9uMy4xMScsCiAnQ09SRVBZVEhPTlBBVEgnOiAnJywKICdDT1ZFUkFHRV9JTkZPJzogJy9yb290L3JlcG8vY3B5dGhvbi9idWlsZC9QeXRob24tMy4xMS4yL2NvdmVyYWdlLmluZm8nLAogJ0NPVkVSQUdFX0xDT1ZfT1BUSU9OUyc6ICctLXJjIGxjb3ZfYnJhbmNoX2NvdmVyYWdlPTEnLAogJ0NPVkVSQUdFX1JFUE9SVCc6ICcvcm9vdC9yZXBvL2NweXRob24vYnVpbGQvUHl0aG9uLTMuMTEuMi9sY292LXJlcG9ydCcsCiAnQ09WRVJBR0VfUkVQT1JUX09QVElPTlMnOiAnLS1yYyBsY292X2JyYW5jaF9jb3ZlcmFnZT0xIC0tYnJhbmNoLWNvdmVyYWdlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXRpdGxlICJDUHl0aG9uIDMuMTEgTENPViByZXBvcnQgW2NvbW1pdCAkKHNoZWxsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpXSInLAogJ0NQUEZMQUdTJzogJy1JLiAtSS4vSW5jbHVkZSAtc1VTRV9CWklQMj0xIC1zVVNFX1pMSUI9MScsCiAnQ1RZUEVTX0ZMQUdTJzogJy1ESEFWRV9GRklfUFJFUF9DSUZfVkFSPTEgLURIQVZFX0ZGSV9QUkVQX0NMT1NVUkVfTE9DPTEgJwogICAgICAgICAgICAgICAgICctREhBVkVfRkZJX0NMT1NVUkVfQUxMT0M9MSAtSSAuLi9saWJmZmkvaW5jbHVkZScsCiAnQ1hYJzogJ2MrKycsCiAnREVDSU1BTF9DRkxBR1MnOiAnLUkuL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMgLURDT05GSUdfMzI9MSAtREFOU0k9MScsCiAnREVDSU1BTF9MREZMQUdTJzogJy1sbSBNb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpYm1wZGVjLmEnLAogJ0RFRVBGUkVFWkVfREVQUyc6ICcuL1Rvb2xzL3NjcmlwdHMvZGVlcGZyZWV6ZS5weSAnCiAgICAgICAgICAgICAgICAgICAgJy4vUHJvZ3JhbXMvX2ZyZWV6ZV9tb2R1bGUucHkgXFwnLAogJ0RFRVBGUkVFWkVfT0JKUyc6ICdQeXRob24vZGVlcGZyZWV6ZS9kZWVwZnJlZXplLm8nLAogJ0RFU1RESVJTJzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yICcKICAgICAgICAgICAgICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9saWIgJwogICAgICAgICAgICAgJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2xpYi9weXRob24zLjExICcKICAgICAgICAgICAgICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9saWIvcHl0aG9uMy4xMS9saWItZHlubG9hZCcsCiAnREVTVExJQic6ICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9saWIvcHl0aG9uMy4xMScsCiAnREVTVFBBVEgnOiAnJywKICdERVNUU0hBUkVEJzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2xpYi9weXRob24zLjExL2xpYi1keW5sb2FkJywKICdERkxBR1MnOiAnJywKICdESVJNT0RFJzogNzU1LAogJ0RJU1QnOiAnUkVBRE1FLnJzdCBDaGFuZ2VMb2cgY29uZmlndXJlIGNvbmZpZ3VyZS5hYyBhY2NvbmZpZy5oIHB5Y29uZmlnLmguaW4gJwogICAgICAgICAnTWFrZWZpbGUucHJlLmluIEluY2x1ZGUgTGliIE1pc2MgRXh0LWR1bW15JywKICdESVNURElSUyc6ICdJbmNsdWRlIExpYiBNaXNjIEV4dC1kdW1teScsCiAnRElTVEZJTEVTJzogJ1JFQURNRS5yc3QgQ2hhbmdlTG9nIGNvbmZpZ3VyZSBjb25maWd1cmUuYWMgYWNjb25maWcuaCAnCiAgICAgICAgICAgICAgJ3B5Y29uZmlnLmguaW4gTWFrZWZpbGUucHJlLmluJywKICdETElOQ0xESVInOiAnLicsCiAnRExMTElCUkFSWSc6ICcnLAogJ0RPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQnOiAwLAogJ0RPVUJMRV9JU19CSUdfRU5ESUFOX0lFRUU3NTQnOiAwLAogJ0RPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQnOiAxLAogJ0RUUkFDRSc6ICcnLAogJ0RUUkFDRV9ERVBTJzogJ1xcJywKICdEVFJBQ0VfSEVBREVSUyc6ICcnLAogJ0RUUkFDRV9PQkpTJzogJycsCiAnRFlOTE9BREZJTEUnOiAnZHlubG9hZF9zaGxpYi5vJywKICdFTkFCTEVfSVBWNic6IDAsCiAnRU5TVVJFUElQJzogJ25vJywKICdFWEUnOiAnLmpzJywKICdFWEVNT0RFJzogNzU1LAogJ0VYUEFUX0NGTEFHUyc6ICctSS4vTW9kdWxlcy9leHBhdCcsCiAnRVhQQVRfTERGTEFHUyc6ICctbG0gTW9kdWxlcy9leHBhdC9saWJleHBhdC5hJywKICdFWFBPUlRTRlJPTSc6ICcnLAogJ0VYUE9SVFNZTVMnOiAnJywKICdFWFRSQVRFU1RPUFRTJzogJycsCiAnRVhUUkFfQ0ZMQUdTJzogJycsCiAnRVhUX1NVRkZJWCc6ICcuY3B5dGhvbi0zMTEtd2FzbTMyLWVtc2NyaXB0ZW4uc28nLAogJ0ZJTEVNT0RFJzogNjQ0LAogJ0ZMT0FUX1dPUkRTX0JJR0VORElBTic6IDAsCiAnRlJFRVpFX01PRFVMRSc6ICcvdXNyL2xvY2FsL2Jpbi9weXRob24zLjExIC4vUHJvZ3JhbXMvX2ZyZWV6ZV9tb2R1bGUucHknLAogJ0ZSRUVaRV9NT0RVTEVfQk9PVFNUUkFQJzogJy91c3IvbG9jYWwvYmluL3B5dGhvbjMuMTEgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4vUHJvZ3JhbXMvX2ZyZWV6ZV9tb2R1bGUucHknLAogJ0ZSRUVaRV9NT0RVTEVfQk9PVFNUUkFQX0RFUFMnOiAnLi9Qcm9ncmFtcy9fZnJlZXplX21vZHVsZS5weScsCiAnRlJFRVpFX01PRFVMRV9ERVBTJzogJy4vUHJvZ3JhbXMvX2ZyZWV6ZV9tb2R1bGUucHknLAogJ0ZST1pFTl9GSUxFU19JTic6ICdcXCcsCiAnRlJPWkVOX0ZJTEVTX09VVCc6ICdcXCcsCiAnR0VUUEdSUF9IQVZFX0FSRyc6IDAsCiAnR0lUQlJBTkNIJzogJycsCiAnR0lUVEFHJzogJycsCiAnR0lUVkVSU0lPTic6ICcnLAogJ0dOVUxEJzogJ25vJywKICdIQVZFX0FDQ0VQVCc6IDEsCiAnSEFWRV9BQ0NFUFQ0JzogMSwKICdIQVZFX0FDT1NIJzogMSwKICdIQVZFX0FERFJJTkZPJzogMSwKICdIQVZFX0FMQVJNJzogMCwKICdIQVZFX0FMSUdORURfUkVRVUlSRUQnOiAxLAogJ0hBVkVfQUxMT0NBX0gnOiAxLAogJ0hBVkVfQUxUWk9ORSc6IDAsCiAnSEFWRV9BU0lOSCc6IDEsCiAnSEFWRV9BU01fVFlQRVNfSCc6IDAsCiAnSEFWRV9BVEFOSCc6IDEsCiAnSEFWRV9CSU5EJzogMSwKICdIQVZFX0JJTkRfVEVYVERPTUFJTl9DT0RFU0VUJzogMSwKICdIQVZFX0JMVUVUT09USF9CTFVFVE9PVEhfSCc6IDAsCiAnSEFWRV9CTFVFVE9PVEhfSCc6IDAsCiAnSEFWRV9CUk9LRU5fTUJTVE9XQ1MnOiAwLAogJ0hBVkVfQlJPS0VOX05JQ0UnOiAwLAogJ0hBVkVfQlJPS0VOX1BJUEVfQlVGJzogMCwKICdIQVZFX0JST0tFTl9QT0xMJzogMCwKICdIQVZFX0JST0tFTl9QT1NJWF9TRU1BUEhPUkVTJzogMCwKICdIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0snOiAwLAogJ0hBVkVfQlJPS0VOX1NFTV9HRVRWQUxVRSc6IDEsCiAnSEFWRV9CUk9LRU5fVU5TRVRFTlYnOiAwLAogJ0hBVkVfQlVJTFRJTl9BVE9NSUMnOiAxLAogJ0hBVkVfQlpMSUJfSCc6IDAsCiAnSEFWRV9DSEZMQUdTJzogMCwKICdIQVZFX0NITU9EJzogMSwKICdIQVZFX0NIT1dOJzogMSwKICdIQVZFX0NIUk9PVCc6IDEsCiAnSEFWRV9DTE9DSyc6IDEsCiAnSEFWRV9DTE9DS19HRVRSRVMnOiAxLAogJ0hBVkVfQ0xPQ0tfR0VUVElNRSc6IDEsCiAnSEFWRV9DTE9DS19OQU5PU0xFRVAnOiAxLAogJ0hBVkVfQ0xPQ0tfU0VUVElNRSc6IDEsCiAnSEFWRV9DTE9TRV9SQU5HRSc6IDAsCiAnSEFWRV9DT01QVVRFRF9HT1RPUyc6IDAsCiAnSEFWRV9DT05GU1RSJzogMSwKICdIQVZFX0NPTklPX0gnOiAwLAogJ0hBVkVfQ09OTkVDVCc6IDEsCiAnSEFWRV9DT1BZX0ZJTEVfUkFOR0UnOiAwLAogJ0hBVkVfQ1JZUFRfSCc6IDEsCiAnSEFWRV9DUllQVF9SJzogMSwKICdIQVZFX0NURVJNSUQnOiAxLAogJ0hBVkVfQ1RFUk1JRF9SJzogMCwKICdIQVZFX0NVUlNFU19GSUxURVInOiAwLAogJ0hBVkVfQ1VSU0VTX0gnOiAwLAogJ0hBVkVfQ1VSU0VTX0hBU19LRVknOiAwLAogJ0hBVkVfQ1VSU0VTX0lNTUVET0snOiAwLAogJ0hBVkVfQ1VSU0VTX0lTX1BBRCc6IDAsCiAnSEFWRV9DVVJTRVNfSVNfVEVSTV9SRVNJWkVEJzogMCwKICdIQVZFX0NVUlNFU19SRVNJWkVURVJNJzogMCwKICdIQVZFX0NVUlNFU19SRVNJWkVfVEVSTSc6IDAsCiAnSEFWRV9DVVJTRVNfU1lOQ09LJzogMCwKICdIQVZFX0NVUlNFU19UWVBFQUhFQUQnOiAwLAogJ0hBVkVfQ1VSU0VTX1VTRV9FTlYnOiAwLAogJ0hBVkVfQ1VSU0VTX1dDSEdBVCc6IDAsCiAnSEFWRV9EQl9IJzogMCwKICdIQVZFX0RFQ0xfUlRMRF9ERUVQQklORCc6IDAsCiAnSEFWRV9ERUNMX1JUTERfR0xPQkFMJzogMSwKICdIQVZFX0RFQ0xfUlRMRF9MQVpZJzogMSwKICdIQVZFX0RFQ0xfUlRMRF9MT0NBTCc6IDEsCiAnSEFWRV9ERUNMX1JUTERfTUVNQkVSJzogMCwKICdIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURSc6IDEsCiAnSEFWRV9ERUNMX1JUTERfTk9MT0FEJzogMSwKICdIQVZFX0RFQ0xfUlRMRF9OT1cnOiAxLAogJ0hBVkVfREVDTF9UWk5BTUUnOiAwLAogJ0hBVkVfREVWSUNFX01BQ1JPUyc6IDEsCiAnSEFWRV9ERVZfUFRDJzogMCwKICdIQVZFX0RFVl9QVE1YJzogMCwKICdIQVZFX0RJUkVDVF9IJzogMCwKICdIQVZFX0RJUkVOVF9EX1RZUEUnOiAxLAogJ0hBVkVfRElSRU5UX0gnOiAxLAogJ0hBVkVfRElSRkQnOiAxLAogJ0hBVkVfRExGQ05fSCc6IDEsCiAnSEFWRV9ETE9QRU4nOiAxLAogJ0hBVkVfRFVQJzogMSwKICdIQVZFX0RVUDInOiAxLAogJ0hBVkVfRFVQMyc6IDEsCiAnSEFWRV9EWUxEX1NIQVJFRF9DQUNIRV9DT05UQUlOU19QQVRIJzogMCwKICdIQVZFX0RZTkFNSUNfTE9BRElORyc6IDEsCiAnSEFWRV9FTkRJQU5fSCc6IDEsCiAnSEFWRV9FUE9MTCc6IDAsCiAnSEFWRV9FUE9MTF9DUkVBVEUxJzogMCwKICdIQVZFX0VSRic6IDEsCiAnSEFWRV9FUkZDJzogMSwKICdIQVZFX0VSUk5PX0gnOiAxLAogJ0hBVkVfRVZFTlRGRCc6IDAsCiAnSEFWRV9FWEVDVic6IDEsCiAnSEFWRV9FWFBMSUNJVF9CWkVSTyc6IDEsCiAnSEFWRV9FWFBMSUNJVF9NRU1TRVQnOiAwLAogJ0hBVkVfRVhQTTEnOiAxLAogJ0hBVkVfRkFDQ0VTU0FUJzogMCwKICdIQVZFX0ZDSERJUic6IDEsCiAnSEFWRV9GQ0hNT0QnOiAxLAogJ0hBVkVfRkNITU9EQVQnOiAxLAogJ0hBVkVfRkNIT1dOJzogMSwKICdIQVZFX0ZDSE9XTkFUJzogMSwKICdIQVZFX0ZDTlRMX0gnOiAxLAogJ0hBVkVfRkRBVEFTWU5DJzogMSwKICdIQVZFX0ZET1BFTkRJUic6IDEsCiAnSEFWRV9GRFdBTEsnOiAwLAogJ0hBVkVfRkVYRUNWRSc6IDEsCiAnSEFWRV9GTE9DSyc6IDEsCiAnSEFWRV9GT1JLJzogMSwKICdIQVZFX0ZPUksxJzogMCwKICdIQVZFX0ZPUktQVFknOiAwLAogJ0hBVkVfRlBBVEhDT05GJzogMSwKICdIQVZFX0ZTRUVLNjQnOiAwLAogJ0hBVkVfRlNFRUtPJzogMSwKICdIQVZFX0ZTVEFUQVQnOiAxLAogJ0hBVkVfRlNUQVRWRlMnOiAxLAogJ0hBVkVfRlNZTkMnOiAxLAogJ0hBVkVfRlRFTEw2NCc6IDAsCiAnSEFWRV9GVEVMTE8nOiAxLAogJ0hBVkVfRlRJTUUnOiAxLAogJ0hBVkVfRlRSVU5DQVRFJzogMSwKICdIQVZFX0ZVVElNRU5TJzogMSwKICdIQVZFX0ZVVElNRVMnOiAwLAogJ0hBVkVfRlVUSU1FU0FUJzogMSwKICdIQVZFX0dBSV9TVFJFUlJPUic6IDEsCiAnSEFWRV9HQ0NfQVNNX0ZPUl9NQzY4ODgxJzogMCwKICdIQVZFX0dDQ19BU01fRk9SX1g2NCc6IDAsCiAnSEFWRV9HQ0NfQVNNX0ZPUl9YODcnOiAwLAogJ0hBVkVfR0NDX1VJTlQxMjhfVCc6IDEsCiAnSEFWRV9HREJNX0RBU0hfTkRCTV9IJzogMCwKICdIQVZFX0dEQk1fSCc6IDAsCiAnSEFWRV9HREJNX05EQk1fSCc6IDAsCiAnSEFWRV9HRVRBRERSSU5GTyc6IDEsCiAnSEFWRV9HRVRDX1VOTE9DS0VEJzogMSwKICdIQVZFX0dFVEVHSUQnOiAwLAogJ0hBVkVfR0VURU5UUk9QWSc6IDEsCiAnSEFWRV9HRVRFVUlEJzogMCwKICdIQVZFX0dFVEdJRCc6IDEsCiAnSEFWRV9HRVRHUkdJRCc6IDEsCiAnSEFWRV9HRVRHUkdJRF9SJzogMSwKICdIQVZFX0dFVEdSTkFNX1InOiAxLAogJ0hBVkVfR0VUR1JPVVBMSVNUJzogMCwKICdIQVZFX0dFVEdST1VQUyc6IDAsCiAnSEFWRV9HRVRIT1NUQllBRERSJzogMSwKICdIQVZFX0dFVEhPU1RCWU5BTUUnOiAxLAogJ0hBVkVfR0VUSE9TVEJZTkFNRV9SJzogMSwKICdIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRyc6IDAsCiAnSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9BUkcnOiAwLAogJ0hBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHJzogMSwKICdIQVZFX0dFVEhPU1ROQU1FJzogMSwKICdIQVZFX0dFVElUSU1FUic6IDEsCiAnSEFWRV9HRVRMT0FEQVZHJzogMSwKICdIQVZFX0dFVExPR0lOJzogMSwKICdIQVZFX0dFVE5BTUVJTkZPJzogMSwKICdIQVZFX0dFVFBBR0VTSVpFJzogMSwKICdIQVZFX0dFVFBFRVJOQU1FJzogMSwKICdIQVZFX0dFVFBHSUQnOiAxLAogJ0hBVkVfR0VUUEdSUCc6IDEsCiAnSEFWRV9HRVRQSUQnOiAxLAogJ0hBVkVfR0VUUFBJRCc6IDEsCiAnSEFWRV9HRVRQUklPUklUWSc6IDEsCiAnSEFWRV9HRVRQUk9UT0JZTkFNRSc6IDEsCiAnSEFWRV9HRVRQV0VOVCc6IDEsCiAnSEFWRV9HRVRQV05BTV9SJzogMSwKICdIQVZFX0dFVFBXVUlEJzogMSwKICdIQVZFX0dFVFBXVUlEX1InOiAxLAogJ0hBVkVfR0VUUkFORE9NJzogMCwKICdIQVZFX0dFVFJBTkRPTV9TWVNDQUxMJzogMCwKICdIQVZFX0dFVFJFU0dJRCc6IDAsCiAnSEFWRV9HRVRSRVNVSUQnOiAwLAogJ0hBVkVfR0VUUlVTQUdFJzogMCwKICdIQVZFX0dFVFNFUlZCWU5BTUUnOiAxLAogJ0hBVkVfR0VUU0VSVkJZUE9SVCc6IDEsCiAnSEFWRV9HRVRTSUQnOiAxLAogJ0hBVkVfR0VUU09DS05BTUUnOiAxLAogJ0hBVkVfR0VUU1BFTlQnOiAwLAogJ0hBVkVfR0VUU1BOQU0nOiAwLAogJ0hBVkVfR0VUVUlEJzogMSwKICdIQVZFX0dFVFdEJzogMCwKICdIQVZFX0dMSUJDX01FTU1PVkVfQlVHJzogMCwKICdIQVZFX0dSUF9IJzogMSwKICdIQVZFX0hTVFJFUlJPUic6IDEsCiAnSEFWRV9IVE9MRTY0JzogMSwKICdIQVZFX0lFRUVGUF9IJzogMCwKICdIQVZFX0lGX05BTUVJTkRFWCc6IDAsCiAnSEFWRV9JTkVUX0FUT04nOiAxLAogJ0hBVkVfSU5FVF9OVE9BJzogMSwKICdIQVZFX0lORVRfUFRPTic6IDEsCiAnSEFWRV9JTklUR1JPVVBTJzogMCwKICdIQVZFX0lOVFRZUEVTX0gnOiAxLAogJ0hBVkVfSU9fSCc6IDAsCiAnSEFWRV9JUEFfUFVSRV9DT05TVF9CVUcnOiAwLAogJ0hBVkVfS0lMTCc6IDEsCiAnSEFWRV9LSUxMUEcnOiAxLAogJ0hBVkVfS1FVRVVFJzogMCwKICdIQVZFX0xBTkdJTkZPX0gnOiAxLAogJ0hBVkVfTEFSR0VGSUxFX1NVUFBPUlQnOiAwLAogJ0hBVkVfTENIRkxBR1MnOiAwLAogJ0hBVkVfTENITU9EJzogMCwKICdIQVZFX0xDSE9XTic6IDAsCiAnSEFWRV9MSUJCMic6IDAsCiAnSEFWRV9MSUJEQic6IDAsCiAnSEFWRV9MSUJETCc6IDEsCiAnSEFWRV9MSUJETEQnOiAwLAogJ0hBVkVfTElCR0RCTV9DT01QQVQnOiAwLAogJ0hBVkVfTElCSUVFRSc6IDAsCiAnSEFWRV9MSUJJTlRMX0gnOiAxLAogJ0hBVkVfTElCTkRCTSc6IDAsCiAnSEFWRV9MSUJSRUFETElORSc6IDAsCiAnSEFWRV9MSUJSRVNPTFYnOiAwLAogJ0hBVkVfTElCU0VOREZJTEUnOiAwLAogJ0hBVkVfTElCU1FMSVRFMyc6IDEsCiAnSEFWRV9MSUJVVElMX0gnOiAwLAogJ0hBVkVfTElOSyc6IDAsCiAnSEFWRV9MSU5LQVQnOiAwLAogJ0hBVkVfTElOVVhfQVVYVkVDX0gnOiAwLAogJ0hBVkVfTElOVVhfQ0FOX0JDTV9IJzogMCwKICdIQVZFX0xJTlVYX0NBTl9IJzogMCwKICdIQVZFX0xJTlVYX0NBTl9KMTkzOV9IJzogMCwKICdIQVZFX0xJTlVYX0NBTl9SQVdfRkRfRlJBTUVTJzogMCwKICdIQVZFX0xJTlVYX0NBTl9SQVdfSCc6IDAsCiAnSEFWRV9MSU5VWF9DQU5fUkFXX0pPSU5fRklMVEVSUyc6IDAsCiAnSEFWRV9MSU5VWF9NRU1GRF9IJzogMCwKICdIQVZFX0xJTlVYX05FVExJTktfSCc6IDAsCiAnSEFWRV9MSU5VWF9RUlRSX0gnOiAwLAogJ0hBVkVfTElOVVhfUkFORE9NX0gnOiAwLAogJ0hBVkVfTElOVVhfU09VTkRDQVJEX0gnOiAwLAogJ0hBVkVfTElOVVhfVElQQ19IJzogMCwKICdIQVZFX0xJTlVYX1ZNX1NPQ0tFVFNfSCc6IDAsCiAnSEFWRV9MSU5VWF9XQUlUX0gnOiAwLAogJ0hBVkVfTElTVEVOJzogMSwKICdIQVZFX0xPQ0tGJzogMSwKICdIQVZFX0xPRzFQJzogMSwKICdIQVZFX0xPRzInOiAxLAogJ0hBVkVfTE9HSU5fVFRZJzogMSwKICdIQVZFX0xPTkdfRE9VQkxFJzogMSwKICdIQVZFX0xTVEFUJzogMSwKICdIQVZFX0xVVElNRVMnOiAwLAogJ0hBVkVfTFpNQV9IJzogMCwKICdIQVZFX01BRFZJU0UnOiAxLAogJ0hBVkVfTUFLRURFVic6IDEsCiAnSEFWRV9NQlJUT1dDJzogMSwKICdIQVZFX01FTUZEX0NSRUFURSc6IDAsCiAnSEFWRV9NRU1PUllfSCc6IDEsCiAnSEFWRV9NRU1SQ0hSJzogMSwKICdIQVZFX01LRElSQVQnOiAxLAogJ0hBVkVfTUtGSUZPJzogMCwKICdIQVZFX01LRklGT0FUJzogMCwKICdIQVZFX01LTk9EJzogMCwKICdIQVZFX01LTk9EQVQnOiAwLAogJ0hBVkVfTUtUSU1FJzogMSwKICdIQVZFX01NQVAnOiAxLAogJ0hBVkVfTVJFTUFQJzogMSwKICdIQVZFX05BTk9TTEVFUCc6IDEsCiAnSEFWRV9OQ1VSU0VTX0gnOiAwLAogJ0hBVkVfTkRCTV9IJzogMCwKICdIQVZFX05ESVJfSCc6IDAsCiAnSEFWRV9ORVRDQU5fQ0FOX0gnOiAwLAogJ0hBVkVfTkVUREJfSCc6IDEsCiAnSEFWRV9ORVRJTkVUX0lOX0gnOiAxLAogJ0hBVkVfTkVUUEFDS0VUX1BBQ0tFVF9IJzogMCwKICdIQVZFX05FVF9JRl9IJzogMSwKICdIQVZFX05JQ0UnOiAwLAogJ0hBVkVfTk9OX1VOSUNPREVfV0NIQVJfVF9SRVBSRVNFTlRBVElPTic6IDAsCiAnSEFWRV9PUEVOQVQnOiAxLAogJ0hBVkVfT1BFTkRJUic6IDEsCiAnSEFWRV9PUEVOUFRZJzogMCwKICdIQVZFX1BBVEhDT05GJzogMSwKICdIQVZFX1BBVVNFJzogMSwKICdIQVZFX1BJUEUnOiAxLAogJ0hBVkVfUElQRTInOiAwLAogJ0hBVkVfUExPQ0snOiAwLAogJ0hBVkVfUE9MTCc6IDEsCiAnSEFWRV9QT0xMX0gnOiAxLAogJ0hBVkVfUE9TSVhfRkFEVklTRSc6IDEsCiAnSEFWRV9QT1NJWF9GQUxMT0NBVEUnOiAwLAogJ0hBVkVfUE9TSVhfU1BBV04nOiAwLAogJ0hBVkVfUE9TSVhfU1BBV05QJzogMCwKICdIQVZFX1BSRUFEJzogMSwKICdIQVZFX1BSRUFEVic6IDAsCiAnSEFWRV9QUkVBRFYyJzogMCwKICdIQVZFX1BSTElNSVQnOiAwLAogJ0hBVkVfUFJPQ0VTU19IJzogMCwKICdIQVZFX1BST1RPVFlQRVMnOiAxLAogJ0hBVkVfUFRIUkVBRF9DT05EQVRUUl9TRVRDTE9DSyc6IDEsCiAnSEFWRV9QVEhSRUFEX0RFU1RSVUNUT1InOiAwLAogJ0hBVkVfUFRIUkVBRF9HRVRDUFVDTE9DS0lEJzogMCwKICdIQVZFX1BUSFJFQURfSCc6IDEsCiAnSEFWRV9QVEhSRUFEX0lOSVQnOiAwLAogJ0hBVkVfUFRIUkVBRF9LSUxMJzogMCwKICdIQVZFX1BUSFJFQURfU0lHTUFTSyc6IDEsCiAnSEFWRV9QVEhSRUFEX1NUVUJTJzogMCwKICdIQVZFX1BUWV9IJzogMSwKICdIQVZFX1BXUklURSc6IDEsCiAnSEFWRV9QV1JJVEVWJzogMCwKICdIQVZFX1BXUklURVYyJzogMCwKICdIQVZFX1JFQURMSU5LJzogMSwKICdIQVZFX1JFQURMSU5LQVQnOiAxLAogJ0hBVkVfUkVBRFYnOiAxLAogJ0hBVkVfUkVBTFBBVEgnOiAxLAogJ0hBVkVfUkVDVkZST00nOiAxLAogJ0hBVkVfUkVOQU1FQVQnOiAxLAogJ0hBVkVfUkxfQVBQRU5EX0hJU1RPUlknOiAwLAogJ0hBVkVfUkxfQ0FUQ0hfU0lHTkFMJzogMCwKICdIQVZFX1JMX0NPTVBMRVRJT05fQVBQRU5EX0NIQVJBQ1RFUic6IDAsCiAnSEFWRV9STF9DT01QTEVUSU9OX0RJU1BMQVlfTUFUQ0hFU19IT09LJzogMCwKICdIQVZFX1JMX0NPTVBMRVRJT05fTUFUQ0hFUyc6IDAsCiAnSEFWRV9STF9DT01QTEVUSU9OX1NVUFBSRVNTX0FQUEVORCc6IDAsCiAnSEFWRV9STF9QUkVfSU5QVVRfSE9PSyc6IDAsCiAnSEFWRV9STF9SRVNJWkVfVEVSTUlOQUwnOiAwLAogJ0hBVkVfUlBDX1JQQ19IJzogMCwKICdIQVZFX1JUUFNQQVdOJzogMCwKICdIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgnOiAwLAogJ0hBVkVfU0NIRURfSCc6IDEsCiAnSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwnOiAwLAogJ0hBVkVfU0NIRURfU0VUQUZGSU5JVFknOiAwLAogJ0hBVkVfU0NIRURfU0VUUEFSQU0nOiAwLAogJ0hBVkVfU0NIRURfU0VUU0NIRURVTEVSJzogMCwKICdIQVZFX1NFTV9DTE9DS1dBSVQnOiAwLAogJ0hBVkVfU0VNX0dFVFZBTFVFJzogMCwKICdIQVZFX1NFTV9PUEVOJzogMCwKICdIQVZFX1NFTV9USU1FRFdBSVQnOiAwLAogJ0hBVkVfU0VNX1VOTElOSyc6IDAsCiAnSEFWRV9TRU5ERklMRSc6IDAsCiAnSEFWRV9TRU5EVE8nOiAxLAogJ0hBVkVfU0VURUdJRCc6IDAsCiAnSEFWRV9TRVRFVUlEJzogMCwKICdIQVZFX1NFVEdJRCc6IDEsCiAnSEFWRV9TRVRHUk9VUFMnOiAwLAogJ0hBVkVfU0VUSE9TVE5BTUUnOiAwLAogJ0hBVkVfU0VUSVRJTUVSJzogMCwKICdIQVZFX1NFVEpNUF9IJzogMSwKICdIQVZFX1NFVExPQ0FMRSc6IDEsCiAnSEFWRV9TRVRQR0lEJzogMSwKICdIQVZFX1NFVFBHUlAnOiAxLAogJ0hBVkVfU0VUUFJJT1JJVFknOiAwLAogJ0hBVkVfU0VUUkVHSUQnOiAxLAogJ0hBVkVfU0VUUkVTR0lEJzogMCwKICdIQVZFX1NFVFJFU1VJRCc6IDAsCiAnSEFWRV9TRVRSRVVJRCc6IDEsCiAnSEFWRV9TRVRTSUQnOiAxLAogJ0hBVkVfU0VUU09DS09QVCc6IDEsCiAnSEFWRV9TRVRVSUQnOiAxLAogJ0hBVkVfU0VUVkJVRic6IDEsCiAnSEFWRV9TSEFET1dfSCc6IDEsCiAnSEFWRV9TSE1fT1BFTic6IDEsCiAnSEFWRV9TSE1fVU5MSU5LJzogMSwKICdIQVZFX1NIVVRET1dOJzogMCwKICdIQVZFX1NJR0FDVElPTic6IDAsCiAnSEFWRV9TSUdBTFRTVEFDSyc6IDEsCiAnSEFWRV9TSUdGSUxMU0VUJzogMSwKICdIQVZFX1NJR0lORk9fVF9TSV9CQU5EJzogMSwKICdIQVZFX1NJR0lOVEVSUlVQVCc6IDEsCiAnSEFWRV9TSUdOQUxfSCc6IDEsCiAnSEFWRV9TSUdQRU5ESU5HJzogMSwKICdIQVZFX1NJR1JFTFNFJzogMCwKICdIQVZFX1NJR1RJTUVEV0FJVCc6IDEsCiAnSEFWRV9TSUdXQUlUJzogMSwKICdIQVZFX1NJR1dBSVRJTkZPJzogMSwKICdIQVZFX1NOUFJJTlRGJzogMSwKICdIQVZFX1NPQ0tBRERSX0FMRyc6IDAsCiAnSEFWRV9TT0NLQUREUl9TQV9MRU4nOiAwLAogJ0hBVkVfU09DS0FERFJfU1RPUkFHRSc6IDEsCiAnSEFWRV9TT0NLRVQnOiAxLAogJ0hBVkVfU09DS0VUUEFJUic6IDAsCiAnSEFWRV9TUEFXTl9IJzogMSwKICdIQVZFX1NQTElDRSc6IDAsCiAnSEFWRV9TU0laRV9UJzogMSwKICdIQVZFX1NUQVRWRlMnOiAxLAogJ0hBVkVfU1RBVF9UVl9OU0VDJzogMSwKICdIQVZFX1NUQVRfVFZfTlNFQzInOiAwLAogJ0hBVkVfU1REQVJHX1BST1RPVFlQRVMnOiAxLAogJ0hBVkVfU1RESU5UX0gnOiAxLAogJ0hBVkVfU1RETElCX0gnOiAxLAogJ0hBVkVfU1REX0FUT01JQyc6IDEsCiAnSEFWRV9TVFJGVElNRSc6IDEsCiAnSEFWRV9TVFJJTkdTX0gnOiAxLAogJ0hBVkVfU1RSSU5HX0gnOiAxLAogJ0hBVkVfU1RSTENQWSc6IDEsCiAnSEFWRV9TVFJPUFRTX0gnOiAxLAogJ0hBVkVfU1RSU0lHTkFMJzogMSwKICdIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MnOiAxLAogJ0hBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QnOiAxLAogJ0hBVkVfU1RSVUNUX1NUQVRfU1RfQklSVEhUSU1FJzogMCwKICdIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUnOiAxLAogJ0hBVkVfU1RSVUNUX1NUQVRfU1RfQkxPQ0tTJzogMSwKICdIQVZFX1NUUlVDVF9TVEFUX1NUX0ZMQUdTJzogMCwKICdIQVZFX1NUUlVDVF9TVEFUX1NUX0dFTic6IDAsCiAnSEFWRV9TVFJVQ1RfU1RBVF9TVF9SREVWJzogMSwKICdIQVZFX1NUUlVDVF9UTV9UTV9aT05FJzogMSwKICdIQVZFX1NZTUxJTksnOiAxLAogJ0hBVkVfU1lNTElOS0FUJzogMCwKICdIQVZFX1NZTkMnOiAxLAogJ0hBVkVfU1lTQ09ORic6IDEsCiAnSEFWRV9TWVNFWElUU19IJzogMSwKICdIQVZFX1NZU0xPR19IJzogMSwKICdIQVZFX1NZU1RFTSc6IDEsCiAnSEFWRV9TWVNfQVVESU9JT19IJzogMCwKICdIQVZFX1NZU19BVVhWX0gnOiAwLAogJ0hBVkVfU1lTX0JTRFRUWV9IJzogMCwKICdIQVZFX1NZU19ERVZQT0xMX0gnOiAwLAogJ0hBVkVfU1lTX0RJUl9IJzogMCwKICdIQVZFX1NZU19FTkRJQU5fSCc6IDAsCiAnSEFWRV9TWVNfRVBPTExfSCc6IDAsCiAnSEFWRV9TWVNfRVZFTlRGRF9IJzogMCwKICdIQVZFX1NZU19FVkVOVF9IJzogMCwKICdIQVZFX1NZU19GSUxFX0gnOiAxLAogJ0hBVkVfU1lTX0lPQ1RMX0gnOiAwLAogJ0hBVkVfU1lTX0tFUk5fQ09OVFJPTF9IJzogMCwKICdIQVZFX1NZU19MT0FEQVZHX0gnOiAwLAogJ0hBVkVfU1lTX0xPQ0tfSCc6IDAsCiAnSEFWRV9TWVNfTUVNRkRfSCc6IDAsCiAnSEFWRV9TWVNfTUtERVZfSCc6IDAsCiAnSEFWRV9TWVNfTU1BTl9IJzogMSwKICdIQVZFX1NZU19NT0RFTV9IJzogMCwKICdIQVZFX1NZU19ORElSX0gnOiAwLAogJ0hBVkVfU1lTX1BBUkFNX0gnOiAxLAogJ0hBVkVfU1lTX1BPTExfSCc6IDEsCiAnSEFWRV9TWVNfUkFORE9NX0gnOiAxLAogJ0hBVkVfU1lTX1JFU09VUkNFX0gnOiAxLAogJ0hBVkVfU1lTX1NFTEVDVF9IJzogMSwKICdIQVZFX1NZU19TRU5ERklMRV9IJzogMCwKICdIQVZFX1NZU19TT0NLRVRfSCc6IDEsCiAnSEFWRV9TWVNfU09VTkRDQVJEX0gnOiAwLAogJ0hBVkVfU1lTX1NUQVRWRlNfSCc6IDEsCiAnSEFWRV9TWVNfU1RBVF9IJzogMSwKICdIQVZFX1NZU19TWVNDQUxMX0gnOiAxLAogJ0hBVkVfU1lTX1NZU01BQ1JPU19IJzogMSwKICdIQVZFX1NZU19TWVNfRE9NQUlOX0gnOiAwLAogJ0hBVkVfU1lTX1RFUk1JT19IJzogMCwKICdIQVZFX1NZU19USU1FU19IJzogMSwKICdIQVZFX1NZU19USU1FX0gnOiAxLAogJ0hBVkVfU1lTX1RZUEVTX0gnOiAxLAogJ0hBVkVfU1lTX1VJT19IJzogMSwKICdIQVZFX1NZU19VTl9IJzogMCwKICdIQVZFX1NZU19VVFNOQU1FX0gnOiAxLAogJ0hBVkVfU1lTX1dBSVRfSCc6IDEsCiAnSEFWRV9TWVNfWEFUVFJfSCc6IDEsCiAnSEFWRV9UQ0dFVFBHUlAnOiAxLAogJ0hBVkVfVENTRVRQR1JQJzogMSwKICdIQVZFX1RFTVBOQU0nOiAxLAogJ0hBVkVfVEVSTUlPU19IJzogMSwKICdIQVZFX1RFUk1fSCc6IDAsCiAnSEFWRV9USU1FR00nOiAxLAogJ0hBVkVfVElNRVMnOiAxLAogJ0hBVkVfVE1QRklMRSc6IDEsCiAnSEFWRV9UTVBOQU0nOiAxLAogJ0hBVkVfVE1QTkFNX1InOiAwLAogJ0hBVkVfVE1fWk9ORSc6IDEsCiAnSEFWRV9UUlVOQ0FURSc6IDEsCiAnSEFWRV9UVFlOQU1FJzogMSwKICdIQVZFX1RaTkFNRSc6IDAsCiAnSEFWRV9VTUFTSyc6IDEsCiAnSEFWRV9VTkFNRSc6IDEsCiAnSEFWRV9VTklTVERfSCc6IDEsCiAnSEFWRV9VTkxJTktBVCc6IDEsCiAnSEFWRV9VU0FCTEVfV0NIQVJfVCc6IDAsCiAnSEFWRV9VVElMX0gnOiAwLAogJ0hBVkVfVVRJTUVOU0FUJzogMCwKICdIQVZFX1VUSU1FUyc6IDEsCiAnSEFWRV9VVElNRV9IJzogMSwKICdIQVZFX1VUTVBfSCc6IDEsCiAnSEFWRV9VVUlEX0NSRUFURSc6IDAsCiAnSEFWRV9VVUlEX0VOQ19CRSc6IDAsCiAnSEFWRV9VVUlEX0dFTkVSQVRFX1RJTUVfU0FGRSc6IDAsCiAnSEFWRV9VVUlEX0gnOiAwLAogJ0hBVkVfVVVJRF9VVUlEX0gnOiAxLAogJ0hBVkVfVkZPUksnOiAxLAogJ0hBVkVfV0FJVCc6IDEsCiAnSEFWRV9XQUlUMyc6IDAsCiAnSEFWRV9XQUlUNCc6IDAsCiAnSEFWRV9XQUlUSUQnOiAxLAogJ0hBVkVfV0FJVFBJRCc6IDEsCiAnSEFWRV9XQ0hBUl9IJzogMSwKICdIQVZFX1dDU0NPTEwnOiAxLAogJ0hBVkVfV0NTRlRJTUUnOiAwLAogJ0hBVkVfV0NTWEZSTSc6IDEsCiAnSEFWRV9XTUVNQ01QJzogMSwKICdIQVZFX1dPUktJTkdfVFpTRVQnOiAwLAogJ0hBVkVfV1JJVEVWJzogMSwKICdIQVZFX1pMSUJfQ09QWSc6IDEsCiAnSEFWRV9aTElCX0gnOiAwLAogJ0hBVkVfX0dFVFBUWSc6IDAsCiAnSE9TVFJVTk5FUic6ICcnLAogJ0hPU1RfR05VX1RZUEUnOiAnd2FzbTMyLXVua25vd24tZW1zY3JpcHRlbicsCiAnSU5DTERJUlNUT01BS0UnOiAnL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvaW5jbHVkZSAnCiAgICAgICAgICAgICAgICAgICAnL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvaW5jbHVkZSAnCiAgICAgICAgICAgICAgICAgICAnL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvaW5jbHVkZS9weXRob24zLjExICcKICAgICAgICAgICAgICAgICAgICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9pbmNsdWRlL3B5dGhvbjMuMTEnLAogJ0lOQ0xVREVESVInOiAnL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvaW5jbHVkZScsCiAnSU5DTFVERVBZJzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2luY2x1ZGUvcHl0aG9uMy4xMScsCiAnSU5TVEFMTCc6ICcvdXNyL2Jpbi9pbnN0YWxsIC1jJywKICdJTlNUQUxMX0RBVEEnOiAnL3Vzci9iaW4vaW5zdGFsbCAtYyAtbSA2NDQnLAogJ0lOU1RBTExfUFJPR1JBTSc6ICcvdXNyL2Jpbi9pbnN0YWxsIC1jJywKICdJTlNUQUxMX1NDUklQVCc6ICcvdXNyL2Jpbi9pbnN0YWxsIC1jJywKICdJTlNUQUxMX1NIQVJFRCc6ICcvdXNyL2Jpbi9pbnN0YWxsIC1jIC1tIDc1NScsCiAnSU5TVFNPTkFNRSc6ICdsaWJweXRob24zLjExLmEnLAogJ0lPX0gnOiAnTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgnLAogJ0lPX09CSlMnOiAnXFwnLAogJ0xEQ1hYU0hBUkVEJzogJ2MrKycsCiAnTERGTEFHUyc6ICcnLAogJ0xERkxBR1NfTk9ESVNUJzogJycsCiAnTERMSUJSQVJZJzogJ2xpYnB5dGhvbjMuMTEuYScsCiAnTERMSUJSQVJZRElSJzogJycsCiAnTERTSEFSRUQnOiAnY2MnLAogJ0xEVkVSU0lPTic6ICczLjExJywKICdMSUJDJzogJycsCiAnTElCREVTVCc6ICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9saWIvcHl0aG9uMy4xMScsCiAnTElCRElSJzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2xpYicsCiAnTElCRVhQQVRfQSc6ICdNb2R1bGVzL2V4cGF0L2xpYmV4cGF0LmEnLAogJ0xJQkVYUEFUX0NGTEFHUyc6ICctSS4vTW9kdWxlcy9leHBhdCAtRE5ERUJVRyAtZyAtZndyYXB2IC1PMyAtV2FsbCAtTzIgLWcwICcKICAgICAgICAgICAgICAgICAgICAnLWZQSUMgIC1EUFlfQ0FMTF9UUkFNUE9MSU5FIC1zdGQ9YzExICcKICAgICAgICAgICAgICAgICAgICAnLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAnCiAgICAgICAgICAgICAgICAgICAgJy1mdmlzaWJpbGl0eT1oaWRkZW4gIC1JLi9JbmNsdWRlL2ludGVybmFsIC1JLiAtSS4vSW5jbHVkZSAnCiAgICAgICAgICAgICAgICAgICAgJy1zVVNFX0JaSVAyPTEgLXNVU0VfWkxJQj0xJywKICdMSUJFWFBBVF9IRUFERVJTJzogJ1xcJywKICdMSUJFWFBBVF9PQkpTJzogJ1xcJywKICdMSUJGRklfSU5DTFVERURJUic6ICcnLAogJ0xJQk0nOiAnLWxtJywKICdMSUJNUERFQ19BJzogJ01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGlibXBkZWMuYScsCiAnTElCTVBERUNfQ0ZMQUdTJzogJy1JLi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjIC1EQ09ORklHXzMyPTEgLURBTlNJPTEgJwogICAgICAgICAgICAgICAgICAgICctRE5ERUJVRyAtZyAtZndyYXB2IC1PMyAtV2FsbCAtTzIgLWcwIC1mUElDICAnCiAgICAgICAgICAgICAgICAgICAgJy1EUFlfQ0FMTF9UUkFNUE9MSU5FIC1zdGQ9YzExICcKICAgICAgICAgICAgICAgICAgICAnLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAnCiAgICAgICAgICAgICAgICAgICAgJy1mdmlzaWJpbGl0eT1oaWRkZW4gIC1JLi9JbmNsdWRlL2ludGVybmFsIC1JLiAtSS4vSW5jbHVkZSAnCiAgICAgICAgICAgICAgICAgICAgJy1zVVNFX0JaSVAyPTEgLXNVU0VfWkxJQj0xJywKICdMSUJNUERFQ19IRUFERVJTJzogJ1xcJywKICdMSUJNUERFQ19PQkpTJzogJ1xcJywKICdMSUJPQkpESVInOiAnUHl0aG9uLycsCiAnTElCT0JKUyc6ICcnLAogJ0xJQlBDJzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2xpYi9wa2djb25maWcnLAogJ0xJQlBMJzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2xpYi9weXRob24zLjExL2NvbmZpZy0zLjExLXdhc20zMi1lbXNjcmlwdGVuJywKICdMSUJQWVRIT04nOiAnJywKICdMSUJSQVJZJzogJ2xpYnB5dGhvbjMuMTEuYScsCiAnTElCUkFSWV9ERVBTJzogJ2xpYnB5dGhvbjMuMTEuYSAgJwogICAgICAgICAgICAgICAgICcuL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvbGliL3B5dGhvbjMuMTEvb3MucHkgJwogICAgICAgICAgICAgICAgICdweXRob24uaHRtbCBweXRob24ud29ya2VyLmpzJywKICdMSUJSQVJZX09CSlMnOiAnXFwnLAogJ0xJQlJBUllfT0JKU19PTUlUX0ZST1pFTic6ICdcXCcsCiAnTElCUyc6ICctbGRsICAtbHB0aHJlYWQnLAogJ0xJQlNVQkRJUlMnOiAnYXN5bmNpbyBcXCcsCiAnTElOS0NDJzogJ2NjJywKICdMSU5LRk9SU0hBUkVEJzogJy0tcHJlbG9hZC1maWxlPS4vcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMiAnCiAgICAgICAgICAgICAgICAgICctTzIgLWcwJywKICdMSU5LX1BZVEhPTl9ERVBTJzogJ2xpYnB5dGhvbjMuMTEuYSAgJwogICAgICAgICAgICAgICAgICAgICAnLi9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL2xpYi9weXRob24zLjExL29zLnB5ICcKICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbi5odG1sIHB5dGhvbi53b3JrZXIuanMnLAogJ0xJTktfUFlUSE9OX09CSlMnOiAnXFwnLAogJ0xJUE9fMzJCSVRfRkxBR1MnOiAnJywKICdMSVBPX0lOVEVMNjRfRkxBR1MnOiAnJywKICdMTFZNX1BST0ZfRVJSJzogJ25vJywKICdMTFZNX1BST0ZfRklMRSc6ICcnLAogJ0xMVk1fUFJPRl9NRVJHRVInOiAnJywKICdMTic6ICdsbicsCiAnTE9DQUxNT0RMSUJTJzogJy1ESEFWRV9GRklfUFJFUF9DSUZfVkFSPTEgLURIQVZFX0ZGSV9QUkVQX0NMT1NVUkVfTE9DPTEgJwogICAgICAgICAgICAgICAgICctREhBVkVfRkZJX0NMT1NVUkVfQUxMT0M9MSAtSSAuLi9saWJmZmkvaW5jbHVkZSAgIC1sYnoyICcKICAgICAgICAgICAgICAgICAnLXNVU0VfWkxJQiAgICAgICAgICAgICAgICAgLWxtIC1sbSAtbG0gLWxtIC1sbSAtbG0gJwogICAgICAgICAgICAgICAgICdNb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpYm1wZGVjLmEgLXNVU0VfWkxJQiAgICAgICAtbG0gJwogICAgICAgICAgICAgICAgICdNb2R1bGVzL2V4cGF0L2xpYmV4cGF0LmEnLAogJ01BQ0hERVAnOiAnZW1zY3JpcHRlbicsCiAnTUFDSERFUF9PQkpTJzogJycsCiAnTUFDSERFU1RMSUInOiAnL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvbGliL3B5dGhvbjMuMTEnLAogJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCc6ICcnLAogJ01BSU5DQyc6ICdjYycsCiAnTUFKT1JfSU5fTUtERVYnOiAwLAogJ01BSk9SX0lOX1NZU01BQ1JPUyc6IDEsCiAnTUFLRVNFVFVQJzogJy4vTW9kdWxlcy9tYWtlc2V0dXAnLAogJ01BTkRJUic6ICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9zaGFyZS9tYW4nLAogJ01LRElSX1AnOiAnL2Jpbi9ta2RpciAtcCcsCiAnTU9EQlVJTFRfTkFNRVMnOiAnX2N0eXBlcyAgX3Bvc2l4c3VicHJvY2VzcyAgX2J6MiAgemxpYiAgX3h4c3ViaW50ZXJwcmV0ZXJzICAnCiAgICAgICAgICAgICAgICAgICAnYXJyYXkgIF9hc3luY2lvICBfYmlzZWN0ICBfY29udGV4dHZhcnMgIF9jc3YgIF9oZWFwcSAgJwogICAgICAgICAgICAgICAgICAgJ19qc29uICBfbHNwcm9mICBfb3Bjb2RlICBfcGlja2xlICBfcXVldWUgIF9yYW5kb20gICcKICAgICAgICAgICAgICAgICAgICdfc3RydWN0ICBfdHlwaW5nICBfem9uZWluZm8gIGF1ZGlvb3AgIG1hdGggIGNtYXRoICAnCiAgICAgICAgICAgICAgICAgICAnX3N0YXRpc3RpY3MgIF9kYXRldGltZSAgX2RlY2ltYWwgIGJpbmFzY2lpICBfbWQ1ICBfc2hhMSAgJwogICAgICAgICAgICAgICAgICAgJ19zaGEyNTYgIF9zaGE1MTIgIF9zaGEzICBfYmxha2UyICBweWV4cGF0ICBfZWxlbWVudHRyZWUgICcKICAgICAgICAgICAgICAgICAgICdfY29kZWNzX2NuICBfY29kZWNzX2hrICBfY29kZWNzX2lzbzIwMjIgIF9jb2RlY3NfanAgICcKICAgICAgICAgICAgICAgICAgICdfY29kZWNzX2tyICBfY29kZWNzX3R3ICBfbXVsdGlieXRlY29kZWMgIHVuaWNvZGVkYXRhICAnCiAgICAgICAgICAgICAgICAgICAnX2NyeXB0ICBtbWFwICBzZWxlY3QgIF9zb2NrZXQgIHh4bGltaXRlZCAgeHhsaW1pdGVkXzM1ICAnCiAgICAgICAgICAgICAgICAgICAnYXRleGl0ICBmYXVsdGhhbmRsZXIgIHBvc2l4ICBfc2lnbmFsICBfdHJhY2VtYWxsb2MgICcKICAgICAgICAgICAgICAgICAgICdfY29kZWNzICBfY29sbGVjdGlvbnMgIGVycm5vICBfaW8gIGl0ZXJ0b29scyAgX3NyZSAgJwogICAgICAgICAgICAgICAgICAgJ190aHJlYWQgIHRpbWUgIF93ZWFrcmVmICBfYWJjICBfZnVuY3Rvb2xzICBfbG9jYWxlICAnCiAgICAgICAgICAgICAgICAgICAnX29wZXJhdG9yICBfc3RhdCAgX3N5bXRhYmxlICB4eHN1YnR5cGUnLAogJ01PRERJU0FCTEVEX05BTUVTJzogJ3B3ZCAgX3NxbGl0ZTMgIF9zc2wgIF9sem1hICBfaGFzaGxpYiAgX3V1aWQnLAogJ01PRExJQlMnOiAnLURIQVZFX0ZGSV9QUkVQX0NJRl9WQVI9MSAtREhBVkVfRkZJX1BSRVBfQ0xPU1VSRV9MT0M9MSAnCiAgICAgICAgICAgICctREhBVkVfRkZJX0NMT1NVUkVfQUxMT0M9MSAtSSAuLi9saWJmZmkvaW5jbHVkZSAgIC1sYnoyICcKICAgICAgICAgICAgJy1zVVNFX1pMSUIgICAgICAgICAgICAgICAgIC1sbSAtbG0gLWxtIC1sbSAtbG0gLWxtICcKICAgICAgICAgICAgJ01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGlibXBkZWMuYSAtc1VTRV9aTElCICAgICAgIC1sbSAnCiAgICAgICAgICAgICdNb2R1bGVzL2V4cGF0L2xpYmV4cGF0LmEnLAogJ01PRE9CSlMnOiAnTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMubyBNb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLm8gJwogICAgICAgICAgICAnTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLm8gTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5vICcKICAgICAgICAgICAgJ01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0Lm8gIE1vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL19iejJtb2R1bGUubyAgTW9kdWxlcy96bGlibW9kdWxlLm8gICcKICAgICAgICAgICAgJ01vZHVsZXMvX3h4c3ViaW50ZXJwcmV0ZXJzbW9kdWxlLm8gIE1vZHVsZXMvYXJyYXltb2R1bGUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9fYXN5bmNpb21vZHVsZS5vICBNb2R1bGVzL19iaXNlY3Rtb2R1bGUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9fY29udGV4dHZhcnNtb2R1bGUubyAgTW9kdWxlcy9fY3N2Lm8gICcKICAgICAgICAgICAgJ01vZHVsZXMvX2hlYXBxbW9kdWxlLm8gIE1vZHVsZXMvX2pzb24ubyAgTW9kdWxlcy9fbHNwcm9mLm8gJwogICAgICAgICAgICAnTW9kdWxlcy9yb3RhdGluZ3RyZWUubyAgTW9kdWxlcy9fb3Bjb2RlLm8gIE1vZHVsZXMvX3BpY2tsZS5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL19xdWV1ZW1vZHVsZS5vICBNb2R1bGVzL19yYW5kb21tb2R1bGUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9fc3RydWN0Lm8gIE1vZHVsZXMvX3R5cGluZ21vZHVsZS5vICBNb2R1bGVzL196b25laW5mby5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL2F1ZGlvb3AubyAgTW9kdWxlcy9tYXRobW9kdWxlLm8gIE1vZHVsZXMvY21hdGhtb2R1bGUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9fc3RhdGlzdGljc21vZHVsZS5vICBNb2R1bGVzL19kYXRldGltZW1vZHVsZS5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLm8gIE1vZHVsZXMvYmluYXNjaWkubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9tZDVtb2R1bGUubyAgTW9kdWxlcy9zaGExbW9kdWxlLm8gICcKICAgICAgICAgICAgJ01vZHVsZXMvc2hhMjU2bW9kdWxlLm8gIE1vZHVsZXMvc2hhNTEybW9kdWxlLm8gICcKICAgICAgICAgICAgJ01vZHVsZXMvX3NoYTMvc2hhM21vZHVsZS5vICBNb2R1bGVzL19ibGFrZTIvYmxha2UybW9kdWxlLm8gJwogICAgICAgICAgICAnTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5vIE1vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9weWV4cGF0Lm8gIE1vZHVsZXMvX2VsZW1lbnR0cmVlLm8gICcKICAgICAgICAgICAgJ01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24ubyAgTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19oay5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5vICBNb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2tyLm8gICcKICAgICAgICAgICAgJ01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMubyAgTW9kdWxlcy91bmljb2RlZGF0YS5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL19jcnlwdG1vZHVsZS5vICBNb2R1bGVzL21tYXBtb2R1bGUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9zZWxlY3Rtb2R1bGUubyAgTW9kdWxlcy9zb2NrZXRtb2R1bGUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9hdGV4aXRtb2R1bGUubyAgTW9kdWxlcy9mYXVsdGhhbmRsZXIubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9wb3NpeG1vZHVsZS5vICBNb2R1bGVzL3NpZ25hbG1vZHVsZS5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL190cmFjZW1hbGxvYy5vICBNb2R1bGVzL19jb2RlY3Ntb2R1bGUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUubyAgTW9kdWxlcy9lcnJub21vZHVsZS5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL19pby9faW9tb2R1bGUubyBNb2R1bGVzL19pby9pb2Jhc2UubyBNb2R1bGVzL19pby9maWxlaW8ubyAnCiAgICAgICAgICAgICdNb2R1bGVzL19pby9ieXRlc2lvLm8gTW9kdWxlcy9faW8vYnVmZmVyZWRpby5vICcKICAgICAgICAgICAgJ01vZHVsZXMvX2lvL3RleHRpby5vIE1vZHVsZXMvX2lvL3N0cmluZ2lvLm8gICcKICAgICAgICAgICAgJ01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLm8gIE1vZHVsZXMvX3NyZS9zcmUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9fdGhyZWFkbW9kdWxlLm8gIE1vZHVsZXMvdGltZW1vZHVsZS5vICAnCiAgICAgICAgICAgICdNb2R1bGVzL193ZWFrcmVmLm8gIE1vZHVsZXMvX2FiYy5vICBNb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9fbG9jYWxlbW9kdWxlLm8gIE1vZHVsZXMvX29wZXJhdG9yLm8gIE1vZHVsZXMvX3N0YXQubyAgJwogICAgICAgICAgICAnTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5vICBNb2R1bGVzL3h4c3VidHlwZS5vIFxcIFxcJywKICdNT0RTSEFSRURfTkFNRVMnOiAneHhsaW1pdGVkIHh4bGltaXRlZF8zNScsCiAnTU9EVUxFX0FSUkFZX0xERkxBR1MnOiAnJywKICdNT0RVTEVfQVJSQVlfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfQVRFWElUX0xERkxBR1MnOiAnJywKICdNT0RVTEVfQVVESU9PUF9MREZMQUdTJzogJy1sbScsCiAnTU9EVUxFX0FVRElPT1BfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfQklOQVNDSUlfQ0ZMQUdTJzogJy1EVVNFX1pMSUJfQ1JDMzIgLXNVU0VfWkxJQicsCiAnTU9EVUxFX0JJTkFTQ0lJX0xERkxBR1MnOiAnLXNVU0VfWkxJQicsCiAnTU9EVUxFX0JJTkFTQ0lJX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX0NNQVRIX0RFUFMnOiAnLi9Nb2R1bGVzL19tYXRoLmgnLAogJ01PRFVMRV9DTUFUSF9MREZMQUdTJzogJy1sbScsCiAnTU9EVUxFX0NNQVRIX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX0VSUk5PX0xERkxBR1MnOiAnJywKICdNT0RVTEVfRkFVTFRIQU5ETEVSX0xERkxBR1MnOiAnJywKICdNT0RVTEVfRkNOVExfU1RBVEUnOiAnbi9hJywKICdNT0RVTEVfR1JQX1NUQVRFJzogJ24vYScsCiAnTU9EVUxFX0lURVJUT09MU19MREZMQUdTJzogJycsCiAnTU9EVUxFX01BVEhfREVQUyc6ICcuL01vZHVsZXMvX21hdGguaCcsCiAnTU9EVUxFX01BVEhfTERGTEFHUyc6ICctbG0nLAogJ01PRFVMRV9NQVRIX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX01NQVBfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9NTUFQX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX05JU19TVEFURSc6ICduL2EnLAogJ01PRFVMRV9PQkpTJzogJ1xcJywKICdNT0RVTEVfT1NTQVVESU9ERVZfU1RBVEUnOiAnbi9hJywKICdNT0RVTEVfUE9TSVhfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9QV0RfU1RBVEUnOiAnbi9hJywKICdNT0RVTEVfUFlFWFBBVF9DRkxBR1MnOiAnLUkuL01vZHVsZXMvZXhwYXQnLAogJ01PRFVMRV9QWUVYUEFUX0RFUFMnOiAnXFwgTW9kdWxlcy9leHBhdC9saWJleHBhdC5hJywKICdNT0RVTEVfUFlFWFBBVF9MREZMQUdTJzogJy1sbSBNb2R1bGVzL2V4cGF0L2xpYmV4cGF0LmEnLAogJ01PRFVMRV9QWUVYUEFUX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX1JFU09VUkNFX1NUQVRFJzogJ24vYScsCiAnTU9EVUxFX1NFTEVDVF9MREZMQUdTJzogJycsCiAnTU9EVUxFX1NFTEVDVF9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9TUFdEX1NUQVRFJzogJ24vYScsCiAnTU9EVUxFX1NZU0xPR19TVEFURSc6ICduL2EnLAogJ01PRFVMRV9URVJNSU9TX1NUQVRFJzogJ24vYScsCiAnTU9EVUxFX1RJTUVfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9USU1FX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX1VOSUNPREVEQVRBX0RFUFMnOiAnLi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oJywKICdNT0RVTEVfVU5JQ09ERURBVEFfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9VTklDT0RFREFUQV9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9YWExJTUlURURfMzVfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfWFhMSU1JVEVEX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX1hYU1VCVFlQRV9MREZMQUdTJzogJycsCiAnTU9EVUxFX1pMSUJfQ0ZMQUdTJzogJy1zVVNFX1pMSUInLAogJ01PRFVMRV9aTElCX0xERkxBR1MnOiAnLXNVU0VfWkxJQicsCiAnTU9EVUxFX1pMSUJfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0FCQ19MREZMQUdTJzogJycsCiAnTU9EVUxFX19BU1lOQ0lPX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX0FTWU5DSU9fU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0JJU0VDVF9MREZMQUdTJzogJycsCiAnTU9EVUxFX19CSVNFQ1RfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0JMQUtFMl9DRkxBR1MnOiAnJywKICdNT0RVTEVfX0JMQUtFMl9ERVBTJzogJy4vTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWNvbmZpZy5oICcKICAgICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWltcGwuaCAnCiAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi5oICcKICAgICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTIuaCAnCiAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2U0MS5oICcKICAgICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yZWYuYyAnCiAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcm91bmQuaCAnCiAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmIuYyAnCiAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2UyLmggJwogICAgICAgICAgICAgICAgICAgICAgICAnLi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlNDEuaCAnCiAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC14b3AuaCAnCiAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcmVmLmMgJwogICAgICAgICAgICAgICAgICAgICAgICAnLi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJvdW5kLmggJwogICAgICAgICAgICAgICAgICAgICAgICAnLi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLmMgJwogICAgICAgICAgICAgICAgICAgICAgICAnLi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybW9kdWxlLmggLi9Nb2R1bGVzL2hhc2hsaWIuaCcsCiAnTU9EVUxFX19CTEFLRTJfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fQkxBS0UyX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19CWjJfQ0ZMQUdTJzogJy1zVVNFX0JaSVAyJywKICdNT0RVTEVfX0JaMl9MREZMQUdTJzogJy1zVVNFX0JaSVAyJywKICdNT0RVTEVfX0JaMl9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fQ09ERUNTX0NOX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX0NPREVDU19DTl9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fQ09ERUNTX0hLX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX0NPREVDU19IS19TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fQ09ERUNTX0lTTzIwMjJfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fQ09ERUNTX0lTTzIwMjJfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0NPREVDU19KUF9MREZMQUdTJzogJycsCiAnTU9EVUxFX19DT0RFQ1NfSlBfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0NPREVDU19LUl9MREZMQUdTJzogJycsCiAnTU9EVUxFX19DT0RFQ1NfS1JfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0NPREVDU19MREZMQUdTJzogJycsCiAnTU9EVUxFX19DT0RFQ1NfVFdfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fQ09ERUNTX1RXX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19DT0xMRUNUSU9OU19MREZMQUdTJzogJycsCiAnTU9EVUxFX19DT05URVhUVkFSU19MREZMQUdTJzogJycsCiAnTU9EVUxFX19DT05URVhUVkFSU19TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fQ1JZUFRfQ0ZMQUdTJzogJycsCiAnTU9EVUxFX19DUllQVF9MREZMQUdTJzogJycsCiAnTU9EVUxFX19DUllQVF9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fQ1NWX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX0NTVl9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fQ1RZUEVTX0RFUFMnOiAnLi9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgnLAogJ01PRFVMRV9fQ1RZUEVTX1RFU1RfU1RBVEUnOiAnZGlzYWJsZWQnLAogJ01PRFVMRV9fREFURVRJTUVfTERGTEFHUyc6ICctbG0nLAogJ01PRFVMRV9fREFURVRJTUVfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0RFQ0lNQUxfQ0ZMQUdTJzogJy1JLi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjIC1EQ09ORklHXzMyPTEgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAnLURBTlNJPTEnLAogJ01PRFVMRV9fREVDSU1BTF9ERVBTJzogJy4vTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggXFwgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGlibXBkZWMuYScsCiAnTU9EVUxFX19ERUNJTUFMX0xERkxBR1MnOiAnLWxtIE1vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGlibXBkZWMuYScsCiAnTU9EVUxFX19ERUNJTUFMX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19FTEVNRU5UVFJFRV9DRkxBR1MnOiAnLUkuL01vZHVsZXMvZXhwYXQnLAogJ01PRFVMRV9fRUxFTUVOVFRSRUVfREVQUyc6ICcuL01vZHVsZXMvcHlleHBhdC5jIFxcIE1vZHVsZXMvZXhwYXQvbGliZXhwYXQuYScsCiAnTU9EVUxFX19FTEVNRU5UVFJFRV9MREZMQUdTJzogJycsCiAnTU9EVUxFX19FTEVNRU5UVFJFRV9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fRlVOQ1RPT0xTX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX0dEQk1fU1RBVEUnOiAnbi9hJywKICdNT0RVTEVfX0hBU0hMSUJfREVQUyc6ICcuL01vZHVsZXMvaGFzaGxpYi5oJywKICdNT0RVTEVfX0hBU0hMSUJfU1RBVEUnOiAnbWlzc2luZycsCiAnTU9EVUxFX19IRUFQUV9MREZMQUdTJzogJycsCiAnTU9EVUxFX19IRUFQUV9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fSU9fQ0ZMQUdTJzogJy1JLi9Nb2R1bGVzL19pbycsCiAnTU9EVUxFX19JT19ERVBTJzogJy4vTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgnLAogJ01PRFVMRV9fSU9fTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fSU9fU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0pTT05fTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fSlNPTl9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fTE9DQUxFX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX0xTUFJPRl9MREZMQUdTJzogJycsCiAnTU9EVUxFX19MU1BST0ZfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX0xaTUFfU1RBVEUnOiAnbWlzc2luZycsCiAnTU9EVUxFX19NRDVfREVQUyc6ICcuL01vZHVsZXMvaGFzaGxpYi5oJywKICdNT0RVTEVfX01ENV9MREZMQUdTJzogJycsCiAnTU9EVUxFX19NRDVfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX01VTFRJQllURUNPREVDX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX01VTFRJQllURUNPREVDX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19NVUxUSVBST0NFU1NJTkdfU1RBVEUnOiAnbi9hJywKICdNT0RVTEVfX09QQ09ERV9MREZMQUdTJzogJycsCiAnTU9EVUxFX19PUENPREVfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX09QRVJBVE9SX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX1BJQ0tMRV9MREZMQUdTJzogJycsCiAnTU9EVUxFX19QSUNLTEVfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX1BPU0lYU0hNRU1fU1RBVEUnOiAnbi9hJywKICdNT0RVTEVfX1BPU0lYU1VCUFJPQ0VTU19MREZMQUdTJzogJycsCiAnTU9EVUxFX19QT1NJWFNVQlBST0NFU1NfU1RBVEUnOiAnbi9hJywKICdNT0RVTEVfX1FVRVVFX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX1FVRVVFX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19SQU5ET01fTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fUkFORE9NX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19TQ1BST1hZX1NUQVRFJzogJ24vYScsCiAnTU9EVUxFX19TSEExX0RFUFMnOiAnLi9Nb2R1bGVzL2hhc2hsaWIuaCcsCiAnTU9EVUxFX19TSEExX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX1NIQTFfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX1NIQTI1Nl9ERVBTJzogJy4vTW9kdWxlcy9oYXNobGliLmgnLAogJ01PRFVMRV9fU0hBMjU2X0xERkxBR1MnOiAnJywKICdNT0RVTEVfX1NIQTI1Nl9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fU0hBM19ERVBTJzogJy4vTW9kdWxlcy9fc2hhMy9zaGEzLmMgLi9Nb2R1bGVzL19zaGEzL3NoYTMuaCAnCiAgICAgICAgICAgICAgICAgICAgICAnLi9Nb2R1bGVzL2hhc2hsaWIuaCcsCiAnTU9EVUxFX19TSEEzX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX1NIQTNfU1RBVEUnOiAneWVzJywKICdNT0RVTEVfX1NIQTUxMl9ERVBTJzogJy4vTW9kdWxlcy9oYXNobGliLmgnLAogJ01PRFVMRV9fU0hBNTEyX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX1NIQTUxMl9TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fU0lHTkFMX0xERkxBR1MnOiAnJywKICdNT0RVTEVfX1NPQ0tFVF9ERVBTJzogJy4vTW9kdWxlcy9zb2NrZXRtb2R1bGUuaCAuL01vZHVsZXMvYWRkcmluZm8uaCAnCiAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvZ2V0YWRkcmluZm8uYyAuL01vZHVsZXMvZ2V0bmFtZWluZm8uYycsCiAnTU9EVUxFX19TT0NLRVRfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fU09DS0VUX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19TUUxJVEUzX0NGTEFHUyc6ICctc1VTRV9TUUxJVEUzIC1JLi9Nb2R1bGVzL19zcWxpdGUnLAogJ01PRFVMRV9fU1FMSVRFM19ERVBTJzogJy4vTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAnLi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmggJwogICAgICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmggJwogICAgICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oICcKICAgICAgICAgICAgICAgICAgICAgICAgICcuL01vZHVsZXMvX3NxbGl0ZS9wcmVwYXJlX3Byb3RvY29sLmggJwogICAgICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy9fc3FsaXRlL3Jvdy5oIC4vTW9kdWxlcy9fc3FsaXRlL3V0aWwuaCcsCiAnTU9EVUxFX19TUUxJVEUzX0xERkxBR1MnOiAnLXNVU0VfU1FMSVRFMycsCiAnTU9EVUxFX19TUUxJVEUzX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19TUkVfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fU1NMX0RFUFMnOiAnLi9Nb2R1bGVzL19zc2wuaCAuL01vZHVsZXMvX3NzbC9jZXJ0LmMgJwogICAgICAgICAgICAgICAgICAgICAnLi9Nb2R1bGVzL19zc2wvZGVidWdoZWxwZXJzLmMgLi9Nb2R1bGVzL19zc2wvbWlzYy5jICcKICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy9fc3NsX2RhdGEuaCAuL01vZHVsZXMvX3NzbF9kYXRhXzExMS5oICcKICAgICAgICAgICAgICAgICAgICAgJy4vTW9kdWxlcy9fc3NsX2RhdGFfMzAwLmggLi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oJywKICdNT0RVTEVfX1NTTF9TVEFURSc6ICdtaXNzaW5nJywKICdNT0RVTEVfX1NUQVRJU1RJQ1NfTERGTEFHUyc6ICctbG0nLAogJ01PRFVMRV9fU1RBVElTVElDU19TVEFURSc6ICd5ZXMnLAogJ01PRFVMRV9fU1RBVF9MREZMQUdTJzogJycsCiAnTU9EVUxFX19TVFJVQ1RfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fU1RSVUNUX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19TWU1UQUJMRV9MREZMQUdTJzogJycsCiAnTU9EVUxFX19URVNUQlVGRkVSX1NUQVRFJzogJ2Rpc2FibGVkJywKICdNT0RVTEVfX1RFU1RDQVBJX0RFUFMnOiAnLi9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaCcsCiAnTU9EVUxFX19URVNUQ0FQSV9TVEFURSc6ICdkaXNhYmxlZCcsCiAnTU9EVUxFX19URVNUQ0xJTklDX1NUQVRFJzogJ2Rpc2FibGVkJywKICdNT0RVTEVfX1RFU1RJTVBPUlRNVUxUSVBMRV9TVEFURSc6ICdkaXNhYmxlZCcsCiAnTU9EVUxFX19URVNUSU5URVJOQUxDQVBJX1NUQVRFJzogJ2Rpc2FibGVkJywKICdNT0RVTEVfX1RFU1RNVUxUSVBIQVNFX1NUQVRFJzogJ2Rpc2FibGVkJywKICdNT0RVTEVfX1RIUkVBRF9MREZMQUdTJzogJycsCiAnTU9EVUxFX19US0lOVEVSX1NUQVRFJzogJ24vYScsCiAnTU9EVUxFX19UUkFDRU1BTExPQ19MREZMQUdTJzogJycsCiAnTU9EVUxFX19UWVBJTkdfTERGTEFHUyc6ICcnLAogJ01PRFVMRV9fVFlQSU5HX1NUQVRFJzogJ3llcycsCiAnTU9EVUxFX19VVUlEX1NUQVRFJzogJ21pc3NpbmcnLAogJ01PRFVMRV9fV0VBS1JFRl9MREZMQUdTJzogJycsCiAnTU9EVUxFX19YWFNVQklOVEVSUFJFVEVSU19MREZMQUdTJzogJycsCiAnTU9EVUxFX19YWFNVQklOVEVSUFJFVEVSU19TVEFURSc6ICduL2EnLAogJ01PRFVMRV9fWFhURVNURlVaWl9TVEFURSc6ICdkaXNhYmxlZCcsCiAnTU9EVUxFX19aT05FSU5GT19MREZMQUdTJzogJycsCiAnTU9EVUxFX19aT05FSU5GT19TVEFURSc6ICd5ZXMnLAogJ01VTFRJQVJDSCc6ICd3YXNtMzItZW1zY3JpcHRlbicsCiAnTVVMVElBUkNIX0NQUEZMQUdTJzogJy1ETVVMVElBUkNIPVxcIndhc20zMi1lbXNjcmlwdGVuXFwiJywKICdNVldERUxDSF9JU19FWFBSRVNTSU9OJzogMCwKICdOT19BU19ORUVERUQnOiAnJywKICdPQkpFQ1RfT0JKUyc6ICdcXCcsCiAnT1BFTlNTTF9JTkNMVURFUyc6ICcnLAogJ09QRU5TU0xfTERGTEFHUyc6ICcnLAogJ09QRU5TU0xfTElCUyc6ICcnLAogJ09QRU5TU0xfUlBBVEgnOiAnJywKICdPUFQnOiAnLUROREVCVUcgLWcgLWZ3cmFwdiAtTzMgLVdhbGwnLAogJ09USEVSX0xJQlRPT0xfT1BUJzogJycsCiAnUEFDS0FHRV9CVUdSRVBPUlQnOiAwLAogJ1BBQ0tBR0VfTkFNRSc6IDAsCiAnUEFDS0FHRV9TVFJJTkcnOiAwLAogJ1BBQ0tBR0VfVEFSTkFNRSc6IDAsCiAnUEFDS0FHRV9VUkwnOiAwLAogJ1BBQ0tBR0VfVkVSU0lPTic6IDAsCiAnUEFSU0VSX0hFQURFUlMnOiAnXFwnLAogJ1BBUlNFUl9PQkpTJzogJ1xcIFxcIFBhcnNlci9teXJlYWRsaW5lLm8gUGFyc2VyL3Rva2VuaXplci5vJywKICdQRUdFTl9IRUFERVJTJzogJ1xcJywKICdQRUdFTl9PQkpTJzogJ1xcJywKICdQR09fUFJPRl9HRU5fRkxBRyc6ICcnLAogJ1BHT19QUk9GX1VTRV9GTEFHJzogJycsCiAnUExBVExJQkRJUic6ICdsaWInLAogJ1BPQkpTJzogJ1xcJywKICdQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEJzogMCwKICdQUk9GSUxFX1RBU0snOiAnLW0gdGVzdCAtLXBnbyAtLXRpbWVvdXQ9MTIwMCcsCiAnUFRIUkVBRF9LRVlfVF9JU19DT01QQVRJQkxFX1dJVEhfSU5UJzogMSwKICdQVEhSRUFEX1NZU1RFTV9TQ0hFRF9TVVBQT1JURUQnOiAwLAogJ1BVUklGWSc6ICcnLAogJ1BZM0xJQlJBUlknOiAnJywKICdQWUxPTkdfQklUU19JTl9ESUdJVCc6IDMwLAogJ1BZVEhPTic6ICdweXRob24uanMnLAogJ1BZVEhPTkZSQU1FV09SSyc6ICcnLAogJ1BZVEhPTkZSQU1FV09SS0RJUic6ICduby1mcmFtZXdvcmsnLAogJ1BZVEhPTkZSQU1FV09SS0lOU1RBTExESVInOiAnJywKICdQWVRIT05GUkFNRVdPUktQUkVGSVgnOiAnJywKICdQWVRIT05QQVRIJzogJycsCiAnUFlUSE9OX0ZPUl9CVUlMRCc6ICdfUFlUSE9OX1BST0pFQ1RfQkFTRT0vcm9vdC9yZXBvL2NweXRob24vYnVpbGQvUHl0aG9uLTMuMTEuMiAnCiAgICAgICAgICAgICAgICAgICAgICdfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pICcKICAgICAgICAgICAgICAgICAgICAgJ1BZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJwogICAgICAgICAgICAgICAgICAgICAnL3Jvb3QvcmVwby9jcHl0aG9uL2J1aWxkL1B5dGhvbi0zLjExLjIvYGNhdCAnCiAgICAgICAgICAgICAgICAgICAgICdweWJ1aWxkZGlyLnR4dGA6KS4vTGliICcKICAgICAgICAgICAgICAgICAgICAgJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FPV9zeXNjb25maWdkYXRhX19lbXNjcmlwdGVuX3dhc20zMi1lbXNjcmlwdGVuICcKICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvYmluL3B5dGhvbjMuMTEnLAogJ1BZVEhPTl9GT1JfQlVJTERfREVQUyc6ICcnLAogJ1BZVEhPTl9GT1JfRlJFRVpFJzogJy91c3IvbG9jYWwvYmluL3B5dGhvbjMuMTEnLAogJ1BZVEhPTl9GT1JfUkVHRU4nOiAnJywKICdQWVRIT05fSEVBREVSUyc6ICdcXCcsCiAnUFlUSE9OX09CSlMnOiAnXFwnLAogJ1BZX0JVSUxUSU5fSEFTSExJQl9IQVNIRVMnOiAnIm1kNSxzaGExLHNoYTI1NixzaGE1MTIsc2hhMyxibGFrZTIiJywKICdQWV9CVUlMVElOX01PRFVMRV9DRkxBR1MnOiAnLUROREVCVUcgLWcgLWZ3cmFwdiAtTzMgLVdhbGwgLU8yIC1nMCAtZlBJQyAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFBZX0NBTExfVFJBTVBPTElORSAtc3RkPWMxMSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZnZpc2liaWxpdHk9aGlkZGVuICAtSS4vSW5jbHVkZS9pbnRlcm5hbCAtSS4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctSS4vSW5jbHVkZSAtc1VTRV9CWklQMj0xIC1zVVNFX1pMSUI9MSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EUHlfQlVJTERfQ09SRV9CVUlMVElOJywKICdQWV9DRkxBR1MnOiAnLUROREVCVUcgLWcgLWZ3cmFwdiAtTzMgLVdhbGwgLU8yIC1nMCAtZlBJQyAgJwogICAgICAgICAgICAgICctRFBZX0NBTExfVFJBTVBPTElORScsCiAnUFlfQ0ZMQUdTX05PRElTVCc6ICctc3RkPWMxMSAtV2Vycm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uICcKICAgICAgICAgICAgICAgICAgICAgJy1mdmlzaWJpbGl0eT1oaWRkZW4gIC1JLi9JbmNsdWRlL2ludGVybmFsJywKICdQWV9DT0VSQ0VfQ19MT0NBTEUnOiAxLAogJ1BZX0NPUkVfQ0ZMQUdTJzogJy1ETkRFQlVHIC1nIC1md3JhcHYgLU8zIC1XYWxsIC1PMiAtZzAgLWZQSUMgICcKICAgICAgICAgICAgICAgICAgICctRFBZX0NBTExfVFJBTVBPTElORSAtc3RkPWMxMSAnCiAgICAgICAgICAgICAgICAgICAnLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtZnZpc2liaWxpdHk9aGlkZGVuICAnCiAgICAgICAgICAgICAgICAgICAnLUkuL0luY2x1ZGUvaW50ZXJuYWwgLUkuIC1JLi9JbmNsdWRlIC1zVVNFX0JaSVAyPTEgJwogICAgICAgICAgICAgICAgICAgJy1zVVNFX1pMSUI9MSAtRFB5X0JVSUxEX0NPUkUnLAogJ1BZX0NPUkVfTERGTEFHUyc6ICctc0FMTE9XX01FTU9SWV9HUk9XVEggLXNUT1RBTF9NRU1PUlk9MjA5NzE1MjAgJwogICAgICAgICAgICAgICAgICAgICctc1dBU01fQklHSU5UIC1zRk9SQ0VfRklMRVNZU1RFTSAtbGlkYmZzLmpzIC1sbm9kZWZzLmpzICcKICAgICAgICAgICAgICAgICAgICAnLWxwcm94eWZzLmpzIC1sd29ya2VyZnMuanMnLAogJ1BZX0NQUEZMQUdTJzogJy1JLiAtSS4vSW5jbHVkZSAtc1VTRV9CWklQMj0xIC1zVVNFX1pMSUI9MScsCiAnUFlfRU5BQkxFX1NIQVJFRCc6IDAsCiAnUFlfRk9STUFUX1NJWkVfVCc6ICcieiInLAogJ1BZX0xERkxBR1MnOiAnJywKICdQWV9MREZMQUdTX05PRElTVCc6ICctc0FMTE9XX01FTU9SWV9HUk9XVEggLXNUT1RBTF9NRU1PUlk9MjA5NzE1MjAgJwogICAgICAgICAgICAgICAgICAgICAgJy1zV0FTTV9CSUdJTlQgLXNGT1JDRV9GSUxFU1lTVEVNIC1saWRiZnMuanMgLWxub2RlZnMuanMgJwogICAgICAgICAgICAgICAgICAgICAgJy1scHJveHlmcy5qcyAtbHdvcmtlcmZzLmpzJywKICdQWV9MREZMQUdTX05PTFRPJzogJycsCiAnUFlfU1FMSVRFX0VOQUJMRV9MT0FEX0VYVEVOU0lPTic6IDAsCiAnUFlfU1FMSVRFX0hBVkVfU0VSSUFMSVpFJzogMSwKICdQWV9TU0xfREVGQVVMVF9DSVBIRVJTJzogMSwKICdQWV9TU0xfREVGQVVMVF9DSVBIRVJfU1RSSU5HJzogMCwKICdQWV9TVERNT0RVTEVfQ0ZMQUdTJzogJy1ETkRFQlVHIC1nIC1md3JhcHYgLU8zIC1XYWxsIC1PMiAtZzAgLWZQSUMgICcKICAgICAgICAgICAgICAgICAgICAgICAgJy1EUFlfQ0FMTF9UUkFNUE9MSU5FIC1zdGQ9YzExICcKICAgICAgICAgICAgICAgICAgICAgICAgJy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gJwogICAgICAgICAgICAgICAgICAgICAgICAnLWZ2aXNpYmlsaXR5PWhpZGRlbiAgLUkuL0luY2x1ZGUvaW50ZXJuYWwgLUkuICcKICAgICAgICAgICAgICAgICAgICAgICAgJy1JLi9JbmNsdWRlIC1zVVNFX0JaSVAyPTEgLXNVU0VfWkxJQj0xJywKICdQWV9TVVBQT1JUX1RJRVInOiAzLAogJ1B5X0RFQlVHJzogMCwKICdQeV9FTkFCTEVfU0hBUkVEJzogMCwKICdQeV9IQVNIX0FMR09SSVRITSc6IDAsCiAnUHlfU1RBVFMnOiAwLAogJ1B5X1RSQUNFX1JFRlMnOiAwLAogJ1FVSUNLVEVTVE9QVFMnOiAnLXggdGVzdF9zdWJwcm9jZXNzIHRlc3RfaW8gdGVzdF9saWIydG8zIFxcJywKICdSRUFERUxGJzogJ3RydWUnLAogJ1JFU1NSQ0RJUic6ICdNYWMvUmVzb3VyY2VzL2ZyYW1ld29yaycsCiAnUkVUU0lHVFlQRSc6ICd2b2lkJywKICdSVU5TSEFSRUQnOiAnJywKICdTQ1JJUFRESVInOiAnL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjIvbGliJywKICdTRVRQR1JQX0hBVkVfQVJHJzogMCwKICdTSEFSRURNT0RTJzogJ01vZHVsZXMveHhsaW1pdGVkLmNweXRob24tMzExLXdhc20zMi1lbXNjcmlwdGVuLnNvICcKICAgICAgICAgICAgICAgJ01vZHVsZXMveHhsaW1pdGVkXzM1LmNweXRob24tMzExLXdhc20zMi1lbXNjcmlwdGVuLnNvJywKICdTSEVMTCc6ICcvYmluL3NoJywKICdTSExJQlMnOiAnLWxkbCAgLWxwdGhyZWFkJywKICdTSExJQl9TVUZGSVgnOiAnLnNvJywKICdTSUdORURfUklHSFRfU0hJRlRfWkVST19GSUxMUyc6IDAsCiAnU0lURVBBVEgnOiAnJywKICdTSVpFT0ZfRE9VQkxFJzogOCwKICdTSVpFT0ZfRkxPQVQnOiA0LAogJ1NJWkVPRl9GUE9TX1QnOiAxNiwKICdTSVpFT0ZfSU5UJzogNCwKICdTSVpFT0ZfTE9ORyc6IDQsCiAnU0laRU9GX0xPTkdfRE9VQkxFJzogMTYsCiAnU0laRU9GX0xPTkdfTE9ORyc6IDgsCiAnU0laRU9GX09GRl9UJzogOCwKICdTSVpFT0ZfUElEX1QnOiA0LAogJ1NJWkVPRl9QVEhSRUFEX0tFWV9UJzogNCwKICdTSVpFT0ZfUFRIUkVBRF9UJzogNCwKICdTSVpFT0ZfU0hPUlQnOiAyLAogJ1NJWkVPRl9TSVpFX1QnOiA0LAogJ1NJWkVPRl9USU1FX1QnOiA4LAogJ1NJWkVPRl9VSU5UUFRSX1QnOiA0LAogJ1NJWkVPRl9WT0lEX1AnOiA0LAogJ1NJWkVPRl9XQ0hBUl9UJzogNCwKICdTSVpFT0ZfX0JPT0wnOiAxLAogJ1NPQUJJJzogJ2NweXRob24tMzExLXdhc20zMi1lbXNjcmlwdGVuJywKICdTUkNESVJTJzogJ01vZHVsZXMgICBNb2R1bGVzL19ibGFrZTIgICBNb2R1bGVzL19jdHlwZXMgICBNb2R1bGVzL19kZWNpbWFsICAgJwogICAgICAgICAgICAnTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYyAgIE1vZHVsZXMvX2lvICAgJwogICAgICAgICAgICAnTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nICAgTW9kdWxlcy9fc2hhMyAgIE1vZHVsZXMvX3NxbGl0ZSAgICcKICAgICAgICAgICAgJ01vZHVsZXMvX3NyZSAgIE1vZHVsZXMvX3h4dGVzdGZ1enogICBNb2R1bGVzL2Nqa2NvZGVjcyAgICcKICAgICAgICAgICAgJ01vZHVsZXMvZXhwYXQgICBPYmplY3RzICAgUGFyc2VyICAgUHJvZ3JhbXMgICBQeXRob24gICAnCiAgICAgICAgICAgICdQeXRob24vZnJvemVuX21vZHVsZXMgICBQeXRob24vZGVlcGZyZWV6ZScsCiAnU1JDX0dEQl9IT09LUyc6ICcuL1Rvb2xzL2dkYi9saWJweXRob24ucHknLAogJ1NUQVRJQ19MSUJQWVRIT04nOiAxLAogJ1NURENfSEVBREVSUyc6IDEsCiAnU1RSSUNUX1NZU1ZfQ1VSU0VTJzogIi8qIERvbid0IHVzZSBuY3Vyc2VzIGV4dGVuc2lvbnMgKi8iLAogJ1NUUklQRkxBRyc6ICctcycsCiAnU1VCRElSUyc6ICcnLAogJ1NVQkRJUlNUT08nOiAnSW5jbHVkZSBMaWIgTWlzYycsCiAnU1lTTElCUyc6ICctbG0nLAogJ1NZU19TRUxFQ1RfV0lUSF9TWVNfVElNRSc6IDEsCiAnVEVTVE9QVFMnOiAnJywKICdURVNUUEFUSCc6ICcnLAogJ1RFU1RQWVRIT04nOiAnX1BZVEhPTl9QUk9KRUNUX0JBU0U9L3Jvb3QvcmVwby9jcHl0aG9uL2J1aWxkL1B5dGhvbi0zLjExLjIgJwogICAgICAgICAgICAgICAnX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSAnCiAgICAgICAgICAgICAgICdQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICcKICAgICAgICAgICAgICAgJy9yb290L3JlcG8vY3B5dGhvbi9idWlsZC9QeXRob24tMy4xMS4yL2BjYXQgJwogICAgICAgICAgICAgICAncHlidWlsZGRpci50eHRgOikuL0xpYiAnCiAgICAgICAgICAgICAgICdfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT1fc3lzY29uZmlnZGF0YV9fZW1zY3JpcHRlbl93YXNtMzItZW1zY3JpcHRlbiAnCiAgICAgICAgICAgICAgICcvdXNyL2xvY2FsL2Jpbi9weXRob24zLjExJywKICdURVNUUFlUSE9OT1BUUyc6ICcnLAogJ1RFU1RSVU5ORVInOiAnX1BZVEhPTl9QUk9KRUNUX0JBU0U9L3Jvb3QvcmVwby9jcHl0aG9uL2J1aWxkL1B5dGhvbi0zLjExLjIgJwogICAgICAgICAgICAgICAnX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSAnCiAgICAgICAgICAgICAgICdQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICcKICAgICAgICAgICAgICAgJy9yb290L3JlcG8vY3B5dGhvbi9idWlsZC9QeXRob24tMy4xMS4yL2BjYXQgJwogICAgICAgICAgICAgICAncHlidWlsZGRpci50eHRgOikuL0xpYiAnCiAgICAgICAgICAgICAgICdfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT1fc3lzY29uZmlnZGF0YV9fZW1zY3JpcHRlbl93YXNtMzItZW1zY3JpcHRlbiAnCiAgICAgICAgICAgICAgICcvdXNyL2xvY2FsL2Jpbi9weXRob24zLjExIC4vVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHknLAogJ1RFU1RTVUJESVJTJzogJ2Rpc3R1dGlscy90ZXN0cyBcXCcsCiAnVEVTVFRJTUVPVVQnOiAxMjAwLAogJ1RFU1RfTU9EVUxFUyc6ICdubycsCiAnVEhSRUFEX1NUQUNLX1NJWkUnOiAwLAogJ1RJTUVNT0RVTEVfTElCJzogMCwKICdUSU1FX1dJVEhfU1lTX1RJTUUnOiAxLAogJ1RNX0lOX1NZU19USU1FJzogMCwKICdUWlBBVEgnOiAnL3Vzci9zaGFyZS96b25laW5mbzovdXNyL2xpYi96b25laW5mbzovdXNyL3NoYXJlL2xpYi96b25laW5mbzovZXRjL3pvbmVpbmZvJywKICdVTklDT0RFX0RFUFMnOiAnXFwnLAogJ1VOSVZFUlNBTFNESyc6ICcnLAogJ1VQREFURV9GSUxFJzogJy4vVG9vbHMvc2NyaXB0cy91cGRhdGVfZmlsZS5weScsCiAnVVNFX0NPTVBVVEVEX0dPVE9TJzogMCwKICdWRVJTSU9OJzogJzMuMTEnLAogJ1dBU01fQVNTRVRTX0RJUic6ICcuL3Jvb3QvcmVwby9jcHl0aG9uL2luc3RhbGxzL3B5dGhvbi0zLjExLjInLAogJ1dBU01fU1RETElCJzogJy4vcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMi9saWIvcHl0aG9uMy4xMS9vcy5weScsCiAnV0hFRUxfUEtHX0RJUic6ICcnLAogJ1dJTkRPV19IQVNfRkxBR1MnOiAwLAogJ1dJVEhfREVDSU1BTF9DT05URVhUVkFSJzogMSwKICdXSVRIX0RPQ19TVFJJTkdTJzogMSwKICdXSVRIX0RUUkFDRSc6IDAsCiAnV0lUSF9EWUxEJzogMCwKICdXSVRIX0VESVRMSU5FJzogMCwKICdXSVRIX0ZSRUVMSVNUUyc6IDEsCiAnV0lUSF9MSUJJTlRMJzogMCwKICdXSVRIX05FWFRfRlJBTUVXT1JLJzogMCwKICdXSVRIX1BZTUFMTE9DJzogMCwKICdXSVRIX1ZBTEdSSU5EJzogMCwKICdYODdfRE9VQkxFX1JPVU5ESU5HJzogMCwKICdYTUxMSUJTVUJESVJTJzogJ3htbCB4bWwvZG9tIHhtbC9ldHJlZSB4bWwvcGFyc2VycyB4bWwvc2F4JywKICdhYnNfYnVpbGRkaXInOiAnL3Jvb3QvcmVwby9jcHl0aG9uL2J1aWxkL1B5dGhvbi0zLjExLjInLAogJ2Fic19zcmNkaXInOiAnL3Jvb3QvcmVwby9jcHl0aG9uL2J1aWxkL1B5dGhvbi0zLjExLjInLAogJ2RhdGFyb290ZGlyJzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yL3NoYXJlJywKICdleGVjX3ByZWZpeCc6ICcvcm9vdC9yZXBvL2NweXRob24vaW5zdGFsbHMvcHl0aG9uLTMuMTEuMicsCiAncHJlZml4JzogJy9yb290L3JlcG8vY3B5dGhvbi9pbnN0YWxscy9weXRob24tMy4xMS4yJywKICdzcmNkaXInOiAnLid9ClBLAwQUAAAAAACoHqNWAAAAAAAAAAAAAAAACQAAAF9weW9kaWRlL1BLAwQUAAAAAACoHqNWAAAAAAAAAAAAAAAACAAAAHB5b2RpZGUvUEsDBBQAAAAAAKceo1YdVd28pQEAAKUBAAANAAAAd2ViYnJvd3Nlci5weSMhIC91c3IvYmluL2VudiBweXRob24zCgoiIiIKQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgd2ViYnJvd3NlciBtb2R1bGUgdG8gb3BlbiB3ZWJwYWdlcy4KU2luY2Ugd2UncmUgYWxyZWFkeSBydW5uaW5nIGEgd2ViYnJvd3NlciwgaXQncyByZWFsbHkgc2ltcGxlLi4uCiIiIgoKCmRlZiBvcGVuKHVybDogc3RyLCBuZXc6IGludCA9IDAsIGF1dG9yYWlzZTogYm9vbCA9IFRydWUpIC0+IE5vbmU6CiAgICBmcm9tIGpzIGltcG9ydCB3aW5kb3cKCiAgICB3aW5kb3cub3Blbih1cmwsICJfYmxhbmsiKQoKCmRlZiBvcGVuX25ldyh1cmw6IHN0cikgLT4gTm9uZToKICAgIHJldHVybiBvcGVuKHVybCwgMSkKCgpkZWYgb3Blbl9uZXdfdGFiKHVybDogc3RyKSAtPiBOb25lOgogICAgcmV0dXJuIG9wZW4odXJsLCAyKQpQSwMEFAAAAAAAAiCjVvUrsLCkBAAApAQAABMAAABhc3luY2lvL19faW5pdF9fLnB5IiIiVGhlIGFzeW5jaW8gcGFja2FnZSwgdHJhY2tpbmcgUEVQIDMxNTYuIiIiCgojIGZsYWtlODogbm9xYQoKaW1wb3J0IHN5cwoKIyBUaGlzIHJlbGllcyBvbiBlYWNoIG9mIHRoZSBzdWJtb2R1bGVzIGhhdmluZyBhbiBfX2FsbF9fIHZhcmlhYmxlLgpmcm9tIC5iYXNlX2V2ZW50cyBpbXBvcnQgKgpmcm9tIC5jb3JvdXRpbmVzIGltcG9ydCAqCmZyb20gLmV2ZW50cyBpbXBvcnQgKgpmcm9tIC5leGNlcHRpb25zIGltcG9ydCAqCmZyb20gLmZ1dHVyZXMgaW1wb3J0ICoKZnJvbSAubG9ja3MgaW1wb3J0ICoKZnJvbSAucHJvdG9jb2xzIGltcG9ydCAqCmZyb20gLnJ1bm5lcnMgaW1wb3J0ICoKZnJvbSAucXVldWVzIGltcG9ydCAqCmZyb20gLnN0cmVhbXMgaW1wb3J0ICoKZnJvbSAuc3VicHJvY2VzcyBpbXBvcnQgKgpmcm9tIC50YXNrcyBpbXBvcnQgKgpmcm9tIC50YXNrZ3JvdXBzIGltcG9ydCAqCmZyb20gLnRpbWVvdXRzIGltcG9ydCAqCmZyb20gLnRocmVhZHMgaW1wb3J0ICoKZnJvbSAudHJhbnNwb3J0cyBpbXBvcnQgKgoKX19hbGxfXyA9IChiYXNlX2V2ZW50cy5fX2FsbF9fICsKICAgICAgICAgICBjb3JvdXRpbmVzLl9fYWxsX18gKwogICAgICAgICAgIGV2ZW50cy5fX2FsbF9fICsKICAgICAgICAgICBleGNlcHRpb25zLl9fYWxsX18gKwogICAgICAgICAgIGZ1dHVyZXMuX19hbGxfXyArCiAgICAgICAgICAgbG9ja3MuX19hbGxfXyArCiAgICAgICAgICAgcHJvdG9jb2xzLl9fYWxsX18gKwogICAgICAgICAgIHJ1bm5lcnMuX19hbGxfXyArCiAgICAgICAgICAgcXVldWVzLl9fYWxsX18gKwogICAgICAgICAgIHN0cmVhbXMuX19hbGxfXyArCiAgICAgICAgICAgc3VicHJvY2Vzcy5fX2FsbF9fICsKICAgICAgICAgICB0YXNrcy5fX2FsbF9fICsKICAgICAgICAgICB0aHJlYWRzLl9fYWxsX18gKwogICAgICAgICAgIHRpbWVvdXRzLl9fYWxsX18gKwogICAgICAgICAgIHRyYW5zcG9ydHMuX19hbGxfXykKCmlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAgIyBwcmFnbWE6IG5vIGNvdmVyCiAgICBmcm9tIC53aW5kb3dzX2V2ZW50cyBpbXBvcnQgKgogICAgX19hbGxfXyArPSB3aW5kb3dzX2V2ZW50cy5fX2FsbF9fCmVsc2U6CiAgICBmcm9tIC51bml4X2V2ZW50cyBpbXBvcnQgKiAgIyBwcmFnbWE6IG5vIGNvdmVyCiAgICBfX2FsbF9fICs9IHVuaXhfZXZlbnRzLl9fYWxsX18KUEsDBBQAAAAAAAIgo1ZZeaBMDw0AAA8NAAATAAAAYXN5bmNpby9fX21haW5fXy5weWltcG9ydCBhc3QKaW1wb3J0IGFzeW5jaW8KaW1wb3J0IGNvZGUKaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcwppbXBvcnQgaW5zcGVjdAppbXBvcnQgc3lzCmltcG9ydCB0aHJlYWRpbmcKaW1wb3J0IHR5cGVzCmltcG9ydCB3YXJuaW5ncwoKZnJvbSAuIGltcG9ydCBmdXR1cmVzCgoKY2xhc3MgQXN5bmNJT0ludGVyYWN0aXZlQ29uc29sZShjb2RlLkludGVyYWN0aXZlQ29uc29sZSk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FscywgbG9vcCk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsb2NhbHMpCiAgICAgICAgc2VsZi5jb21waWxlLmNvbXBpbGVyLmZsYWdzIHw9IGFzdC5QeUNGX0FMTE9XX1RPUF9MRVZFTF9BV0FJVAoKICAgICAgICBzZWxmLmxvb3AgPSBsb29wCgogICAgZGVmIHJ1bmNvZGUoc2VsZiwgY29kZSk6CiAgICAgICAgZnV0dXJlID0gY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZSgpCgogICAgICAgIGRlZiBjYWxsYmFjaygpOgogICAgICAgICAgICBnbG9iYWwgcmVwbF9mdXR1cmUKICAgICAgICAgICAgZ2xvYmFsIHJlcGxfZnV0dXJlX2ludGVycnVwdGVkCgogICAgICAgICAgICByZXBsX2Z1dHVyZSA9IE5vbmUKICAgICAgICAgICAgcmVwbF9mdXR1cmVfaW50ZXJydXB0ZWQgPSBGYWxzZQoKICAgICAgICAgICAgZnVuYyA9IHR5cGVzLkZ1bmN0aW9uVHlwZShjb2RlLCBzZWxmLmxvY2FscykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY29ybyA9IGZ1bmMoKQogICAgICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdCBhcyBleDoKICAgICAgICAgICAgICAgIHJlcGxfZnV0dXJlX2ludGVycnVwdGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgZnV0dXJlLnNldF9leGNlcHRpb24oZXgpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXg6CiAgICAgICAgICAgICAgICBmdXR1cmUuc2V0X2V4Y2VwdGlvbihleCkKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgaWYgbm90IGluc3BlY3QuaXNjb3JvdXRpbmUoY29ybyk6CiAgICAgICAgICAgICAgICBmdXR1cmUuc2V0X3Jlc3VsdChjb3JvKQogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXBsX2Z1dHVyZSA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayhjb3JvKQogICAgICAgICAgICAgICAgZnV0dXJlcy5fY2hhaW5fZnV0dXJlKHJlcGxfZnV0dXJlLCBmdXR1cmUpCiAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgICAgIGZ1dHVyZS5zZXRfZXhjZXB0aW9uKGV4YykKCiAgICAgICAgbG9vcC5jYWxsX3Nvb25fdGhyZWFkc2FmZShjYWxsYmFjaykKCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gZnV0dXJlLnJlc3VsdCgpCiAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CiAgICAgICAgICAgIGlmIHJlcGxfZnV0dXJlX2ludGVycnVwdGVkOgogICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiXG5LZXlib2FyZEludGVycnVwdFxuIikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuc2hvd3RyYWNlYmFjaygpCgoKY2xhc3MgUkVQTFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKCiAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgYmFubmVyID0gKAogICAgICAgICAgICAgICAgZidhc3luY2lvIFJFUEwge3N5cy52ZXJzaW9ufSBvbiB7c3lzLnBsYXRmb3JtfVxuJwogICAgICAgICAgICAgICAgZidVc2UgImF3YWl0IiBkaXJlY3RseSBpbnN0ZWFkIG9mICJhc3luY2lvLnJ1bigpIi5cbicKICAgICAgICAgICAgICAgIGYnVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiICcKICAgICAgICAgICAgICAgIGYnZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nCiAgICAgICAgICAgICAgICBmJ3tnZXRhdHRyKHN5cywgInBzMSIsICI+Pj4gIil9aW1wb3J0IGFzeW5jaW8nCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIGNvbnNvbGUuaW50ZXJhY3QoCiAgICAgICAgICAgICAgICBiYW5uZXI9YmFubmVyLAogICAgICAgICAgICAgICAgZXhpdG1zZz0nZXhpdGluZyBhc3luY2lvIFJFUEwuLi4nKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAogICAgICAgICAgICAgICAgJ2lnbm9yZScsCiAgICAgICAgICAgICAgICBtZXNzYWdlPXInXmNvcm91dGluZSAuKiB3YXMgbmV2ZXIgYXdhaXRlZCQnLAogICAgICAgICAgICAgICAgY2F0ZWdvcnk9UnVudGltZVdhcm5pbmcpCgogICAgICAgICAgICBsb29wLmNhbGxfc29vbl90aHJlYWRzYWZlKGxvb3Auc3RvcCkKCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbG9vcCA9IGFzeW5jaW8ubmV3X2V2ZW50X2xvb3AoKQogICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChsb29wKQoKICAgIHJlcGxfbG9jYWxzID0geydhc3luY2lvJzogYXN5bmNpb30KICAgIGZvciBrZXkgaW4geydfX25hbWVfXycsICdfX3BhY2thZ2VfXycsCiAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX3NwZWNfXycsCiAgICAgICAgICAgICAgICAnX19idWlsdGluc19fJywgJ19fZmlsZV9fJ306CiAgICAgICAgcmVwbF9sb2NhbHNba2V5XSA9IGxvY2FscygpW2tleV0KCiAgICBjb25zb2xlID0gQXN5bmNJT0ludGVyYWN0aXZlQ29uc29sZShyZXBsX2xvY2FscywgbG9vcCkKCiAgICByZXBsX2Z1dHVyZSA9IE5vbmUKICAgIHJlcGxfZnV0dXJlX2ludGVycnVwdGVkID0gRmFsc2UKCiAgICB0cnk6CiAgICAgICAgaW1wb3J0IHJlYWRsaW5lICAjIE5vUUEKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICBwYXNzCgogICAgcmVwbF90aHJlYWQgPSBSRVBMVGhyZWFkKCkKICAgIHJlcGxfdGhyZWFkLmRhZW1vbiA9IFRydWUKICAgIHJlcGxfdGhyZWFkLnN0YXJ0KCkKCiAgICB3aGlsZSBUcnVlOgogICAgICAgIHRyeToKICAgICAgICAgICAgbG9vcC5ydW5fZm9yZXZlcigpCiAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICBpZiByZXBsX2Z1dHVyZSBhbmQgbm90IHJlcGxfZnV0dXJlLmRvbmUoKToKICAgICAgICAgICAgICAgIHJlcGxfZnV0dXJlLmNhbmNlbCgpCiAgICAgICAgICAgICAgICByZXBsX2Z1dHVyZV9pbnRlcnJ1cHRlZCA9IFRydWUKICAgICAgICAgICAgY29udGludWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBicmVhawpQSwMEFAAAAAAAAiCjVmQi6wo6JAEAOiQBABYAAABhc3luY2lvL2Jhc2VfZXZlbnRzLnB5IiIiQmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wLgoKVGhlIGV2ZW50IGxvb3AgY2FuIGJlIGJyb2tlbiB1cCBpbnRvIGEgbXVsdGlwbGV4ZXIgKHRoZSBwYXJ0CnJlc3BvbnNpYmxlIGZvciBub3RpZnlpbmcgdXMgb2YgSS9PIGV2ZW50cykgYW5kIHRoZSBldmVudCBsb29wIHByb3BlciwKd2hpY2ggd3JhcHMgYSBtdWx0aXBsZXhlciB3aXRoIGZ1bmN0aW9uYWxpdHkgZm9yIHNjaGVkdWxpbmcgY2FsbGJhY2tzLAppbW1lZGlhdGVseSBvciBhdCBhIGdpdmVuIHRpbWUgaW4gdGhlIGZ1dHVyZS4KCldoZW5ldmVyIGEgcHVibGljIEFQSSB0YWtlcyBhIGNhbGxiYWNrLCBzdWJzZXF1ZW50IHBvc2l0aW9uYWwKYXJndW1lbnRzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBpZi93aGVuIGl0IGlzIGNhbGxlZC4gIFRoaXMKYXZvaWRzIHRoZSBwcm9saWZlcmF0aW9uIG9mIHRyaXZpYWwgbGFtYmRhcyBpbXBsZW1lbnRpbmcgY2xvc3VyZXMuCktleXdvcmQgYXJndW1lbnRzIGZvciB0aGUgY2FsbGJhY2sgYXJlIG5vdCBzdXBwb3J0ZWQ7IHRoaXMgaXMgYQpjb25zY2lvdXMgZGVzaWduIGRlY2lzaW9uLCBsZWF2aW5nIHRoZSBkb29yIG9wZW4gZm9yIGtleXdvcmQgYXJndW1lbnRzCnRvIG1vZGlmeSB0aGUgbWVhbmluZyBvZiB0aGUgQVBJIGNhbGwgaXRzZWxmLgoiIiIKCmltcG9ydCBjb2xsZWN0aW9ucwppbXBvcnQgY29sbGVjdGlvbnMuYWJjCmltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMKaW1wb3J0IGZ1bmN0b29scwppbXBvcnQgaGVhcHEKaW1wb3J0IGl0ZXJ0b29scwppbXBvcnQgb3MKaW1wb3J0IHNvY2tldAppbXBvcnQgc3RhdAppbXBvcnQgc3VicHJvY2VzcwppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCB0aW1lCmltcG9ydCB0cmFjZWJhY2sKaW1wb3J0IHN5cwppbXBvcnQgd2FybmluZ3MKaW1wb3J0IHdlYWtyZWYKCnRyeToKICAgIGltcG9ydCBzc2wKZXhjZXB0IEltcG9ydEVycm9yOiAgIyBwcmFnbWE6IG5vIGNvdmVyCiAgICBzc2wgPSBOb25lCgpmcm9tIC4gaW1wb3J0IGNvbnN0YW50cwpmcm9tIC4gaW1wb3J0IGNvcm91dGluZXMKZnJvbSAuIGltcG9ydCBldmVudHMKZnJvbSAuIGltcG9ydCBleGNlcHRpb25zCmZyb20gLiBpbXBvcnQgZnV0dXJlcwpmcm9tIC4gaW1wb3J0IHByb3RvY29scwpmcm9tIC4gaW1wb3J0IHNzbHByb3RvCmZyb20gLiBpbXBvcnQgc3RhZ2dlcmVkCmZyb20gLiBpbXBvcnQgdGFza3MKZnJvbSAuIGltcG9ydCB0cmFuc3BvcnRzCmZyb20gLiBpbXBvcnQgdHJzb2NrCmZyb20gLmxvZyBpbXBvcnQgbG9nZ2VyCgoKX19hbGxfXyA9ICdCYXNlRXZlbnRMb29wJywnU2VydmVyJywKCgojIE1pbmltdW0gbnVtYmVyIG9mIF9zY2hlZHVsZWQgdGltZXIgaGFuZGxlcyBiZWZvcmUgY2xlYW51cCBvZgojIGNhbmNlbGxlZCBoYW5kbGVzIGlzIHBlcmZvcm1lZC4KX01JTl9TQ0hFRFVMRURfVElNRVJfSEFORExFUyA9IDEwMAoKIyBNaW5pbXVtIGZyYWN0aW9uIG9mIF9zY2hlZHVsZWQgdGltZXIgaGFuZGxlcyB0aGF0IGFyZSBjYW5jZWxsZWQKIyBiZWZvcmUgY2xlYW51cCBvZiBjYW5jZWxsZWQgaGFuZGxlcyBpcyBwZXJmb3JtZWQuCl9NSU5fQ0FOQ0VMTEVEX1RJTUVSX0hBTkRMRVNfRlJBQ1RJT04gPSAwLjUKCgpfSEFTX0lQdjYgPSBoYXNhdHRyKHNvY2tldCwgJ0FGX0lORVQ2JykKCiMgTWF4aW11bSB0aW1lb3V0IHBhc3NlZCB0byBzZWxlY3QgdG8gYXZvaWQgT1MgbGltaXRhdGlvbnMKTUFYSU1VTV9TRUxFQ1RfVElNRU9VVCA9IDI0ICogMzYwMAoKCmRlZiBfZm9ybWF0X2hhbmRsZShoYW5kbGUpOgogICAgY2IgPSBoYW5kbGUuX2NhbGxiYWNrCiAgICBpZiBpc2luc3RhbmNlKGdldGF0dHIoY2IsICdfX3NlbGZfXycsIE5vbmUpLCB0YXNrcy5UYXNrKToKICAgICAgICAjIGZvcm1hdCB0aGUgdGFzawogICAgICAgIHJldHVybiByZXByKGNiLl9fc2VsZl9fKQogICAgZWxzZToKICAgICAgICByZXR1cm4gc3RyKGhhbmRsZSkKCgpkZWYgX2Zvcm1hdF9waXBlKGZkKToKICAgIGlmIGZkID09IHN1YnByb2Nlc3MuUElQRToKICAgICAgICByZXR1cm4gJzxwaXBlPicKICAgIGVsaWYgZmQgPT0gc3VicHJvY2Vzcy5TVERPVVQ6CiAgICAgICAgcmV0dXJuICc8c3Rkb3V0PicKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIHJlcHIoZmQpCgoKZGVmIF9zZXRfcmV1c2Vwb3J0KHNvY2spOgogICAgaWYgbm90IGhhc2F0dHIoc29ja2V0LCAnU09fUkVVU0VQT1JUJyk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigncmV1c2VfcG9ydCBub3Qgc3VwcG9ydGVkIGJ5IHNvY2tldCBtb2R1bGUnKQogICAgZWxzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNvY2suc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFUE9SVCwgMSkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigncmV1c2VfcG9ydCBub3Qgc3VwcG9ydGVkIGJ5IHNvY2tldCBtb2R1bGUsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU09fUkVVU0VQT1JUIGRlZmluZWQgYnV0IG5vdCBpbXBsZW1lbnRlZC4nKQoKCmRlZiBfaXBhZGRyX2luZm8oaG9zdCwgcG9ydCwgZmFtaWx5LCB0eXBlLCBwcm90bywgZmxvd2luZm89MCwgc2NvcGVpZD0wKToKICAgICMgVHJ5IHRvIHNraXAgZ2V0YWRkcmluZm8gaWYgImhvc3QiIGlzIGFscmVhZHkgYW4gSVAuIFVzZXJzIG1pZ2h0IGhhdmUKICAgICMgaGFuZGxlZCBuYW1lIHJlc29sdXRpb24gaW4gdGhlaXIgb3duIGNvZGUgYW5kIHBhc3MgaW4gcmVzb2x2ZWQgSVBzLgogICAgaWYgbm90IGhhc2F0dHIoc29ja2V0LCAnaW5ldF9wdG9uJyk6CiAgICAgICAgcmV0dXJuCgogICAgaWYgcHJvdG8gbm90IGluIHswLCBzb2NrZXQuSVBQUk9UT19UQ1AsIHNvY2tldC5JUFBST1RPX1VEUH0gb3IgXAogICAgICAgICAgICBob3N0IGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBpZiB0eXBlID09IHNvY2tldC5TT0NLX1NUUkVBTToKICAgICAgICBwcm90byA9IHNvY2tldC5JUFBST1RPX1RDUAogICAgZWxpZiB0eXBlID09IHNvY2tldC5TT0NLX0RHUkFNOgogICAgICAgIHByb3RvID0gc29ja2V0LklQUFJPVE9fVURQCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCgogICAgaWYgcG9ydCBpcyBOb25lOgogICAgICAgIHBvcnQgPSAwCiAgICBlbGlmIGlzaW5zdGFuY2UocG9ydCwgYnl0ZXMpIGFuZCBwb3J0ID09IGInJzoKICAgICAgICBwb3J0ID0gMAogICAgZWxpZiBpc2luc3RhbmNlKHBvcnQsIHN0cikgYW5kIHBvcnQgPT0gJyc6CiAgICAgICAgcG9ydCA9IDAKICAgIGVsc2U6CiAgICAgICAgIyBJZiBwb3J0J3MgYSBzZXJ2aWNlIG5hbWUgbGlrZSAiaHR0cCIsIGRvbid0IHNraXAgZ2V0YWRkcmluZm8uCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwb3J0ID0gaW50KHBvcnQpCiAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGlmIGZhbWlseSA9PSBzb2NrZXQuQUZfVU5TUEVDOgogICAgICAgIGFmcyA9IFtzb2NrZXQuQUZfSU5FVF0KICAgICAgICBpZiBfSEFTX0lQdjY6CiAgICAgICAgICAgIGFmcy5hcHBlbmQoc29ja2V0LkFGX0lORVQ2KQogICAgZWxzZToKICAgICAgICBhZnMgPSBbZmFtaWx5XQoKICAgIGlmIGlzaW5zdGFuY2UoaG9zdCwgYnl0ZXMpOgogICAgICAgIGhvc3QgPSBob3N0LmRlY29kZSgnaWRuYScpCiAgICBpZiAnJScgaW4gaG9zdDoKICAgICAgICAjIExpbnV4J3MgaW5ldF9wdG9uIGRvZXNuJ3QgYWNjZXB0IGFuIElQdjYgem9uZSBpbmRleCBhZnRlciBob3N0LAogICAgICAgICMgbGlrZSAnOjoxJWxvMCcuCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBmb3IgYWYgaW4gYWZzOgogICAgICAgIHRyeToKICAgICAgICAgICAgc29ja2V0LmluZXRfcHRvbihhZiwgaG9zdCkKICAgICAgICAgICAgIyBUaGUgaG9zdCBoYXMgYWxyZWFkeSBiZWVuIHJlc29sdmVkLgogICAgICAgICAgICBpZiBfSEFTX0lQdjYgYW5kIGFmID09IHNvY2tldC5BRl9JTkVUNjoKICAgICAgICAgICAgICAgIHJldHVybiBhZiwgdHlwZSwgcHJvdG8sICcnLCAoaG9zdCwgcG9ydCwgZmxvd2luZm8sIHNjb3BlaWQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gYWYsIHR5cGUsIHByb3RvLCAnJywgKGhvc3QsIHBvcnQpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICAjICJob3N0IiBpcyBub3QgYW4gSVAgYWRkcmVzcy4KICAgIHJldHVybiBOb25lCgoKZGVmIF9pbnRlcmxlYXZlX2FkZHJpbmZvcyhhZGRyaW5mb3MsIGZpcnN0X2FkZHJlc3NfZmFtaWx5X2NvdW50PTEpOgogICAgIiIiSW50ZXJsZWF2ZSBsaXN0IG9mIGFkZHJpbmZvIHR1cGxlcyBieSBmYW1pbHkuIiIiCiAgICAjIEdyb3VwIGFkZHJlc3NlcyBieSBmYW1pbHkKICAgIGFkZHJpbmZvc19ieV9mYW1pbHkgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCiAgICBmb3IgYWRkciBpbiBhZGRyaW5mb3M6CiAgICAgICAgZmFtaWx5ID0gYWRkclswXQogICAgICAgIGlmIGZhbWlseSBub3QgaW4gYWRkcmluZm9zX2J5X2ZhbWlseToKICAgICAgICAgICAgYWRkcmluZm9zX2J5X2ZhbWlseVtmYW1pbHldID0gW10KICAgICAgICBhZGRyaW5mb3NfYnlfZmFtaWx5W2ZhbWlseV0uYXBwZW5kKGFkZHIpCiAgICBhZGRyaW5mb3NfbGlzdHMgPSBsaXN0KGFkZHJpbmZvc19ieV9mYW1pbHkudmFsdWVzKCkpCgogICAgcmVvcmRlcmVkID0gW10KICAgIGlmIGZpcnN0X2FkZHJlc3NfZmFtaWx5X2NvdW50ID4gMToKICAgICAgICByZW9yZGVyZWQuZXh0ZW5kKGFkZHJpbmZvc19saXN0c1swXVs6Zmlyc3RfYWRkcmVzc19mYW1pbHlfY291bnQgLSAxXSkKICAgICAgICBkZWwgYWRkcmluZm9zX2xpc3RzWzBdWzpmaXJzdF9hZGRyZXNzX2ZhbWlseV9jb3VudCAtIDFdCiAgICByZW9yZGVyZWQuZXh0ZW5kKAogICAgICAgIGEgZm9yIGEgaW4gaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUoCiAgICAgICAgICAgIGl0ZXJ0b29scy56aXBfbG9uZ2VzdCgqYWRkcmluZm9zX2xpc3RzKQogICAgICAgICkgaWYgYSBpcyBub3QgTm9uZSkKICAgIHJldHVybiByZW9yZGVyZWQKCgpkZWYgX3J1bl91bnRpbF9jb21wbGV0ZV9jYihmdXQpOgogICAgaWYgbm90IGZ1dC5jYW5jZWxsZWQoKToKICAgICAgICBleGMgPSBmdXQuZXhjZXB0aW9uKCkKICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KSk6CiAgICAgICAgICAgICMgSXNzdWUgIzIyNDI5OiBydW5fZm9yZXZlcigpIGFscmVhZHkgZmluaXNoZWQsIG5vIG5lZWQgdG8KICAgICAgICAgICAgIyBzdG9wIGl0LgogICAgICAgICAgICByZXR1cm4KICAgIGZ1dHVyZXMuX2dldF9sb29wKGZ1dCkuc3RvcCgpCgoKaWYgaGFzYXR0cihzb2NrZXQsICdUQ1BfTk9ERUxBWScpOgogICAgZGVmIF9zZXRfbm9kZWxheShzb2NrKToKICAgICAgICBpZiAoc29jay5mYW1pbHkgaW4ge3NvY2tldC5BRl9JTkVULCBzb2NrZXQuQUZfSU5FVDZ9IGFuZAogICAgICAgICAgICAgICAgc29jay50eXBlID09IHNvY2tldC5TT0NLX1NUUkVBTSBhbmQKICAgICAgICAgICAgICAgIHNvY2sucHJvdG8gPT0gc29ja2V0LklQUFJPVE9fVENQKToKICAgICAgICAgICAgc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwgc29ja2V0LlRDUF9OT0RFTEFZLCAxKQplbHNlOgogICAgZGVmIF9zZXRfbm9kZWxheShzb2NrKToKICAgICAgICBwYXNzCgoKZGVmIF9jaGVja19zc2xfc29ja2V0KHNvY2spOgogICAgaWYgc3NsIGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiU29ja2V0IGNhbm5vdCBiZSBvZiB0eXBlIFNTTFNvY2tldCIpCgoKY2xhc3MgX1NlbmRmaWxlRmFsbGJhY2tQcm90b2NvbChwcm90b2NvbHMuUHJvdG9jb2wpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5zcCk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodHJhbnNwLCB0cmFuc3BvcnRzLl9GbG93Q29udHJvbE1peGluKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0cmFuc3BvcnQgc2hvdWxkIGJlIF9GbG93Q29udHJvbE1peGluIGluc3RhbmNlIikKICAgICAgICBzZWxmLl90cmFuc3BvcnQgPSB0cmFuc3AKICAgICAgICBzZWxmLl9wcm90byA9IHRyYW5zcC5nZXRfcHJvdG9jb2woKQogICAgICAgIHNlbGYuX3Nob3VsZF9yZXN1bWVfcmVhZGluZyA9IHRyYW5zcC5pc19yZWFkaW5nKCkKICAgICAgICBzZWxmLl9zaG91bGRfcmVzdW1lX3dyaXRpbmcgPSB0cmFuc3AuX3Byb3RvY29sX3BhdXNlZAogICAgICAgIHRyYW5zcC5wYXVzZV9yZWFkaW5nKCkKICAgICAgICB0cmFuc3Auc2V0X3Byb3RvY29sKHNlbGYpCiAgICAgICAgaWYgc2VsZi5fc2hvdWxkX3Jlc3VtZV93cml0aW5nOgogICAgICAgICAgICBzZWxmLl93cml0ZV9yZWFkeV9mdXQgPSBzZWxmLl90cmFuc3BvcnQuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fd3JpdGVfcmVhZHlfZnV0ID0gTm9uZQoKICAgIGFzeW5jIGRlZiBkcmFpbihzZWxmKToKICAgICAgICBpZiBzZWxmLl90cmFuc3BvcnQuaXNfY2xvc2luZygpOgogICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uRXJyb3IoIkNvbm5lY3Rpb24gY2xvc2VkIGJ5IHBlZXIiKQogICAgICAgIGZ1dCA9IHNlbGYuX3dyaXRlX3JlYWR5X2Z1dAogICAgICAgIGlmIGZ1dCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBhd2FpdCBmdXQKCiAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNlbGYsIHRyYW5zcG9ydCk6CiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJJbnZhbGlkIHN0YXRlOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25uZWN0aW9uIHNob3VsZCBoYXZlIGJlZW4gZXN0YWJsaXNoZWQgYWxyZWFkeS4iKQoKICAgIGRlZiBjb25uZWN0aW9uX2xvc3Qoc2VsZiwgZXhjKToKICAgICAgICBpZiBzZWxmLl93cml0ZV9yZWFkeV9mdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgTmV2ZXIgaGFwcGVucyBpZiBwZWVyIGRpc2Nvbm5lY3RzIGFmdGVyIHNlbmRpbmcgdGhlIHdob2xlIGNvbnRlbnQKICAgICAgICAgICAgIyBUaHVzIGRpc2Nvbm5lY3Rpb24gaXMgYWx3YXlzIGFuIGV4Y2VwdGlvbiBmcm9tIHVzZXIgcGVyc3BlY3RpdmUKICAgICAgICAgICAgaWYgZXhjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9yZWFkeV9mdXQuc2V0X2V4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICBDb25uZWN0aW9uRXJyb3IoIkNvbm5lY3Rpb24gaXMgY2xvc2VkIGJ5IHBlZXIiKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3JlYWR5X2Z1dC5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICBzZWxmLl9wcm90by5jb25uZWN0aW9uX2xvc3QoZXhjKQoKICAgIGRlZiBwYXVzZV93cml0aW5nKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3dyaXRlX3JlYWR5X2Z1dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fd3JpdGVfcmVhZHlfZnV0ID0gc2VsZi5fdHJhbnNwb3J0Ll9sb29wLmNyZWF0ZV9mdXR1cmUoKQoKICAgIGRlZiByZXN1bWVfd3JpdGluZyhzZWxmKToKICAgICAgICBpZiBzZWxmLl93cml0ZV9yZWFkeV9mdXQgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fd3JpdGVfcmVhZHlfZnV0LnNldF9yZXN1bHQoRmFsc2UpCiAgICAgICAgc2VsZi5fd3JpdGVfcmVhZHlfZnV0ID0gTm9uZQoKICAgIGRlZiBkYXRhX3JlY2VpdmVkKHNlbGYsIGRhdGEpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiSW52YWxpZCBzdGF0ZTogcmVhZGluZyBzaG91bGQgYmUgcGF1c2VkIikKCiAgICBkZWYgZW9mX3JlY2VpdmVkKHNlbGYpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiSW52YWxpZCBzdGF0ZTogcmVhZGluZyBzaG91bGQgYmUgcGF1c2VkIikKCiAgICBhc3luYyBkZWYgcmVzdG9yZShzZWxmKToKICAgICAgICBzZWxmLl90cmFuc3BvcnQuc2V0X3Byb3RvY29sKHNlbGYuX3Byb3RvKQogICAgICAgIGlmIHNlbGYuX3Nob3VsZF9yZXN1bWVfcmVhZGluZzoKICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnJlc3VtZV9yZWFkaW5nKCkKICAgICAgICBpZiBzZWxmLl93cml0ZV9yZWFkeV9mdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgQ2FuY2VsIHRoZSBmdXR1cmUuCiAgICAgICAgICAgICMgQmFzaWNhbGx5IGl0IGhhcyBubyBlZmZlY3QgYmVjYXVzZSBwcm90b2NvbCBpcyBzd2l0Y2hlZCBiYWNrLAogICAgICAgICAgICAjIG5vIGNvZGUgc2hvdWxkIHdhaXQgZm9yIGl0IGFueW1vcmUuCiAgICAgICAgICAgIHNlbGYuX3dyaXRlX3JlYWR5X2Z1dC5jYW5jZWwoKQogICAgICAgIGlmIHNlbGYuX3Nob3VsZF9yZXN1bWVfd3JpdGluZzoKICAgICAgICAgICAgc2VsZi5fcHJvdG8ucmVzdW1lX3dyaXRpbmcoKQoKCmNsYXNzIFNlcnZlcihldmVudHMuQWJzdHJhY3RTZXJ2ZXIpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb29wLCBzb2NrZXRzLCBwcm90b2NvbF9mYWN0b3J5LCBzc2xfY29udGV4dCwgYmFja2xvZywKICAgICAgICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQsIHNzbF9zaHV0ZG93bl90aW1lb3V0PU5vbmUpOgogICAgICAgIHNlbGYuX2xvb3AgPSBsb29wCiAgICAgICAgc2VsZi5fc29ja2V0cyA9IHNvY2tldHMKICAgICAgICBzZWxmLl9hY3RpdmVfY291bnQgPSAwCiAgICAgICAgc2VsZi5fd2FpdGVycyA9IFtdCiAgICAgICAgc2VsZi5fcHJvdG9jb2xfZmFjdG9yeSA9IHByb3RvY29sX2ZhY3RvcnkKICAgICAgICBzZWxmLl9iYWNrbG9nID0gYmFja2xvZwogICAgICAgIHNlbGYuX3NzbF9jb250ZXh0ID0gc3NsX2NvbnRleHQKICAgICAgICBzZWxmLl9zc2xfaGFuZHNoYWtlX3RpbWVvdXQgPSBzc2xfaGFuZHNoYWtlX3RpbWVvdXQKICAgICAgICBzZWxmLl9zc2xfc2h1dGRvd25fdGltZW91dCA9IHNzbF9zaHV0ZG93bl90aW1lb3V0CiAgICAgICAgc2VsZi5fc2VydmluZyA9IEZhbHNlCiAgICAgICAgc2VsZi5fc2VydmluZ19mb3JldmVyX2Z1dCA9IE5vbmUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYnPHtzZWxmLl9fY2xhc3NfXy5fX25hbWVfX30gc29ja2V0cz17c2VsZi5zb2NrZXRzIXJ9PicKCiAgICBkZWYgX2F0dGFjaChzZWxmKToKICAgICAgICBhc3NlcnQgc2VsZi5fc29ja2V0cyBpcyBub3QgTm9uZQogICAgICAgIHNlbGYuX2FjdGl2ZV9jb3VudCArPSAxCgogICAgZGVmIF9kZXRhY2goc2VsZik6CiAgICAgICAgYXNzZXJ0IHNlbGYuX2FjdGl2ZV9jb3VudCA+IDAKICAgICAgICBzZWxmLl9hY3RpdmVfY291bnQgLT0gMQogICAgICAgIGlmIHNlbGYuX2FjdGl2ZV9jb3VudCA9PSAwIGFuZCBzZWxmLl9zb2NrZXRzIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3dha2V1cCgpCgogICAgZGVmIF93YWtldXAoc2VsZik6CiAgICAgICAgd2FpdGVycyA9IHNlbGYuX3dhaXRlcnMKICAgICAgICBzZWxmLl93YWl0ZXJzID0gTm9uZQogICAgICAgIGZvciB3YWl0ZXIgaW4gd2FpdGVyczoKICAgICAgICAgICAgaWYgbm90IHdhaXRlci5kb25lKCk6CiAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X3Jlc3VsdCh3YWl0ZXIpCgogICAgZGVmIF9zdGFydF9zZXJ2aW5nKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3NlcnZpbmc6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX3NlcnZpbmcgPSBUcnVlCiAgICAgICAgZm9yIHNvY2sgaW4gc2VsZi5fc29ja2V0czoKICAgICAgICAgICAgc29jay5saXN0ZW4oc2VsZi5fYmFja2xvZykKICAgICAgICAgICAgc2VsZi5fbG9vcC5fc3RhcnRfc2VydmluZygKICAgICAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sX2ZhY3RvcnksIHNvY2ssIHNlbGYuX3NzbF9jb250ZXh0LAogICAgICAgICAgICAgICAgc2VsZiwgc2VsZi5fYmFja2xvZywgc2VsZi5fc3NsX2hhbmRzaGFrZV90aW1lb3V0LAogICAgICAgICAgICAgICAgc2VsZi5fc3NsX3NodXRkb3duX3RpbWVvdXQpCgogICAgZGVmIGdldF9sb29wKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9sb29wCgogICAgZGVmIGlzX3NlcnZpbmcoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NlcnZpbmcKCiAgICBAcHJvcGVydHkKICAgIGRlZiBzb2NrZXRzKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3NvY2tldHMgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuICgpCiAgICAgICAgcmV0dXJuIHR1cGxlKHRyc29jay5UcmFuc3BvcnRTb2NrZXQocykgZm9yIHMgaW4gc2VsZi5fc29ja2V0cykKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgc29ja2V0cyA9IHNlbGYuX3NvY2tldHMKICAgICAgICBpZiBzb2NrZXRzIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX3NvY2tldHMgPSBOb25lCgogICAgICAgIGZvciBzb2NrIGluIHNvY2tldHM6CiAgICAgICAgICAgIHNlbGYuX2xvb3AuX3N0b3Bfc2VydmluZyhzb2NrKQoKICAgICAgICBzZWxmLl9zZXJ2aW5nID0gRmFsc2UKCiAgICAgICAgaWYgKHNlbGYuX3NlcnZpbmdfZm9yZXZlcl9mdXQgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICBub3Qgc2VsZi5fc2VydmluZ19mb3JldmVyX2Z1dC5kb25lKCkpOgogICAgICAgICAgICBzZWxmLl9zZXJ2aW5nX2ZvcmV2ZXJfZnV0LmNhbmNlbCgpCiAgICAgICAgICAgIHNlbGYuX3NlcnZpbmdfZm9yZXZlcl9mdXQgPSBOb25lCgogICAgICAgIGlmIHNlbGYuX2FjdGl2ZV9jb3VudCA9PSAwOgogICAgICAgICAgICBzZWxmLl93YWtldXAoKQoKICAgIGFzeW5jIGRlZiBzdGFydF9zZXJ2aW5nKHNlbGYpOgogICAgICAgIHNlbGYuX3N0YXJ0X3NlcnZpbmcoKQogICAgICAgICMgU2tpcCBvbmUgbG9vcCBpdGVyYXRpb24gc28gdGhhdCBhbGwgJ2xvb3AuYWRkX3JlYWRlcicKICAgICAgICAjIGdvIHRocm91Z2guCiAgICAgICAgYXdhaXQgdGFza3Muc2xlZXAoMCkKCiAgICBhc3luYyBkZWYgc2VydmVfZm9yZXZlcihzZWxmKToKICAgICAgICBpZiBzZWxmLl9zZXJ2aW5nX2ZvcmV2ZXJfZnV0IGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICBmJ3NlcnZlciB7c2VsZiFyfSBpcyBhbHJlYWR5IGJlaW5nIGF3YWl0ZWQgb24gc2VydmVfZm9yZXZlcigpJykKICAgICAgICBpZiBzZWxmLl9zb2NrZXRzIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmJ3NlcnZlciB7c2VsZiFyfSBpcyBjbG9zZWQnKQoKICAgICAgICBzZWxmLl9zdGFydF9zZXJ2aW5nKCkKICAgICAgICBzZWxmLl9zZXJ2aW5nX2ZvcmV2ZXJfZnV0ID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhd2FpdCBzZWxmLl9zZXJ2aW5nX2ZvcmV2ZXJfZnV0CiAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgYXdhaXQgc2VsZi53YWl0X2Nsb3NlZCgpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX3NlcnZpbmdfZm9yZXZlcl9mdXQgPSBOb25lCgogICAgYXN5bmMgZGVmIHdhaXRfY2xvc2VkKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3NvY2tldHMgaXMgTm9uZSBvciBzZWxmLl93YWl0ZXJzIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHdhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgc2VsZi5fd2FpdGVycy5hcHBlbmQod2FpdGVyKQogICAgICAgIGF3YWl0IHdhaXRlcgoKCmNsYXNzIEJhc2VFdmVudExvb3AoZXZlbnRzLkFic3RyYWN0RXZlbnRMb29wKToKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fdGltZXJfY2FuY2VsbGVkX2NvdW50ID0gMAogICAgICAgIHNlbGYuX2Nsb3NlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fc3RvcHBpbmcgPSBGYWxzZQogICAgICAgIHNlbGYuX3JlYWR5ID0gY29sbGVjdGlvbnMuZGVxdWUoKQogICAgICAgIHNlbGYuX3NjaGVkdWxlZCA9IFtdCiAgICAgICAgc2VsZi5fZGVmYXVsdF9leGVjdXRvciA9IE5vbmUKICAgICAgICBzZWxmLl9pbnRlcm5hbF9mZHMgPSAwCiAgICAgICAgIyBJZGVudGlmaWVyIG9mIHRoZSB0aHJlYWQgcnVubmluZyB0aGUgZXZlbnQgbG9vcCwgb3IgTm9uZSBpZiB0aGUKICAgICAgICAjIGV2ZW50IGxvb3AgaXMgbm90IHJ1bm5pbmcKICAgICAgICBzZWxmLl90aHJlYWRfaWQgPSBOb25lCiAgICAgICAgc2VsZi5fY2xvY2tfcmVzb2x1dGlvbiA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ21vbm90b25pYycpLnJlc29sdXRpb24KICAgICAgICBzZWxmLl9leGNlcHRpb25faGFuZGxlciA9IE5vbmUKICAgICAgICBzZWxmLnNldF9kZWJ1Zyhjb3JvdXRpbmVzLl9pc19kZWJ1Z19tb2RlKCkpCiAgICAgICAgIyBJbiBkZWJ1ZyBtb2RlLCBpZiB0aGUgZXhlY3V0aW9uIG9mIGEgY2FsbGJhY2sgb3IgYSBzdGVwIG9mIGEgdGFzawogICAgICAgICMgZXhjZWVkIHRoaXMgZHVyYXRpb24gaW4gc2Vjb25kcywgdGhlIHNsb3cgY2FsbGJhY2svdGFzayBpcyBsb2dnZWQuCiAgICAgICAgc2VsZi5zbG93X2NhbGxiYWNrX2R1cmF0aW9uID0gMC4xCiAgICAgICAgc2VsZi5fY3VycmVudF9oYW5kbGUgPSBOb25lCiAgICAgICAgc2VsZi5fdGFza19mYWN0b3J5ID0gTm9uZQogICAgICAgIHNlbGYuX2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmdfZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fY29yb3V0aW5lX29yaWdpbl90cmFja2luZ19zYXZlZF9kZXB0aCA9IE5vbmUKCiAgICAgICAgIyBBIHdlYWsgc2V0IG9mIGFsbCBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycyB0aGF0IGFyZQogICAgICAgICMgYmVpbmcgaXRlcmF0ZWQgYnkgdGhlIGxvb3AuCiAgICAgICAgc2VsZi5fYXN5bmNnZW5zID0gd2Vha3JlZi5XZWFrU2V0KCkKICAgICAgICAjIFNldCB0byBUcnVlIHdoZW4gYGxvb3Auc2h1dGRvd25fYXN5bmNnZW5zYCBpcyBjYWxsZWQuCiAgICAgICAgc2VsZi5fYXN5bmNnZW5zX3NodXRkb3duX2NhbGxlZCA9IEZhbHNlCiAgICAgICAgIyBTZXQgdG8gVHJ1ZSB3aGVuIGBsb29wLnNodXRkb3duX2RlZmF1bHRfZXhlY3V0b3JgIGlzIGNhbGxlZC4KICAgICAgICBzZWxmLl9leGVjdXRvcl9zaHV0ZG93bl9jYWxsZWQgPSBGYWxzZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBmJzx7c2VsZi5fX2NsYXNzX18uX19uYW1lX199IHJ1bm5pbmc9e3NlbGYuaXNfcnVubmluZygpfSAnCiAgICAgICAgICAgIGYnY2xvc2VkPXtzZWxmLmlzX2Nsb3NlZCgpfSBkZWJ1Zz17c2VsZi5nZXRfZGVidWcoKX0+JwogICAgICAgICkKCiAgICBkZWYgY3JlYXRlX2Z1dHVyZShzZWxmKToKICAgICAgICAiIiJDcmVhdGUgYSBGdXR1cmUgb2JqZWN0IGF0dGFjaGVkIHRvIHRoZSBsb29wLiIiIgogICAgICAgIHJldHVybiBmdXR1cmVzLkZ1dHVyZShsb29wPXNlbGYpCgogICAgZGVmIGNyZWF0ZV90YXNrKHNlbGYsIGNvcm8sICosIG5hbWU9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAiIiJTY2hlZHVsZSBhIGNvcm91dGluZSBvYmplY3QuCgogICAgICAgIFJldHVybiBhIHRhc2sgb2JqZWN0LgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgaWYgc2VsZi5fdGFza19mYWN0b3J5IGlzIE5vbmU6CiAgICAgICAgICAgIHRhc2sgPSB0YXNrcy5UYXNrKGNvcm8sIGxvb3A9c2VsZiwgbmFtZT1uYW1lLCBjb250ZXh0PWNvbnRleHQpCiAgICAgICAgICAgIGlmIHRhc2suX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgICAgICAgICBkZWwgdGFzay5fc291cmNlX3RyYWNlYmFja1stMV0KICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAjIFVzZSBsZWdhY3kgQVBJIGlmIGNvbnRleHQgaXMgbm90IG5lZWRlZAogICAgICAgICAgICAgICAgdGFzayA9IHNlbGYuX3Rhc2tfZmFjdG9yeShzZWxmLCBjb3JvKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdGFzayA9IHNlbGYuX3Rhc2tfZmFjdG9yeShzZWxmLCBjb3JvLCBjb250ZXh0PWNvbnRleHQpCgogICAgICAgICAgICB0YXNrcy5fc2V0X3Rhc2tfbmFtZSh0YXNrLCBuYW1lKQoKICAgICAgICByZXR1cm4gdGFzawoKICAgIGRlZiBzZXRfdGFza19mYWN0b3J5KHNlbGYsIGZhY3RvcnkpOgogICAgICAgICIiIlNldCBhIHRhc2sgZmFjdG9yeSB0aGF0IHdpbGwgYmUgdXNlZCBieSBsb29wLmNyZWF0ZV90YXNrKCkuCgogICAgICAgIElmIGZhY3RvcnkgaXMgTm9uZSB0aGUgZGVmYXVsdCB0YXNrIGZhY3Rvcnkgd2lsbCBiZSBzZXQuCgogICAgICAgIElmIGZhY3RvcnkgaXMgYSBjYWxsYWJsZSwgaXQgc2hvdWxkIGhhdmUgYSBzaWduYXR1cmUgbWF0Y2hpbmcKICAgICAgICAnKGxvb3AsIGNvcm8pJywgd2hlcmUgJ2xvb3AnIHdpbGwgYmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZQogICAgICAgIGV2ZW50IGxvb3AsICdjb3JvJyB3aWxsIGJlIGEgY29yb3V0aW5lIG9iamVjdC4gIFRoZSBjYWxsYWJsZQogICAgICAgIG11c3QgcmV0dXJuIGEgRnV0dXJlLgogICAgICAgICIiIgogICAgICAgIGlmIGZhY3RvcnkgaXMgbm90IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShmYWN0b3J5KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0YXNrIGZhY3RvcnkgbXVzdCBiZSBhIGNhbGxhYmxlIG9yIE5vbmUnKQogICAgICAgIHNlbGYuX3Rhc2tfZmFjdG9yeSA9IGZhY3RvcnkKCiAgICBkZWYgZ2V0X3Rhc2tfZmFjdG9yeShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSB0YXNrIGZhY3RvcnksIG9yIE5vbmUgaWYgdGhlIGRlZmF1bHQgb25lIGlzIGluIHVzZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fdGFza19mYWN0b3J5CgogICAgZGVmIF9tYWtlX3NvY2tldF90cmFuc3BvcnQoc2VsZiwgc29jaywgcHJvdG9jb2wsIHdhaXRlcj1Ob25lLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9Tm9uZSwgc2VydmVyPU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSBzb2NrZXQgdHJhbnNwb3J0LiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgX21ha2Vfc3NsX3RyYW5zcG9ydCgKICAgICAgICAgICAgc2VsZiwgcmF3c29jaywgcHJvdG9jb2wsIHNzbGNvbnRleHQsIHdhaXRlcj1Ob25lLAogICAgICAgICAgICAqLCBzZXJ2ZXJfc2lkZT1GYWxzZSwgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgIGV4dHJhPU5vbmUsIHNlcnZlcj1Ob25lLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgY2FsbF9jb25uZWN0aW9uX21hZGU9VHJ1ZSk6CiAgICAgICAgIiIiQ3JlYXRlIFNTTCB0cmFuc3BvcnQuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBfbWFrZV9kYXRhZ3JhbV90cmFuc3BvcnQoc2VsZiwgc29jaywgcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M9Tm9uZSwgd2FpdGVyPU5vbmUsIGV4dHJhPU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSBkYXRhZ3JhbSB0cmFuc3BvcnQuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBfbWFrZV9yZWFkX3BpcGVfdHJhbnNwb3J0KHNlbGYsIHBpcGUsIHByb3RvY29sLCB3YWl0ZXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSByZWFkIHBpcGUgdHJhbnNwb3J0LiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgX21ha2Vfd3JpdGVfcGlwZV90cmFuc3BvcnQoc2VsZiwgcGlwZSwgcHJvdG9jb2wsIHdhaXRlcj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSB3cml0ZSBwaXBlIHRyYW5zcG9ydC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIF9tYWtlX3N1YnByb2Nlc3NfdHJhbnNwb3J0KHNlbGYsIHByb3RvY29sLCBhcmdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIGJ1ZnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICIiIkNyZWF0ZSBzdWJwcm9jZXNzIHRyYW5zcG9ydC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF93cml0ZV90b19zZWxmKHNlbGYpOgogICAgICAgICIiIldyaXRlIGEgYnl0ZSB0byBzZWxmLXBpcGUsIHRvIHdha2UgdXAgdGhlIGV2ZW50IGxvb3AuCgogICAgICAgIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIGEgZGlmZmVyZW50IHRocmVhZC4KCiAgICAgICAgVGhlIHN1YmNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBpbXBsZW1lbnRpbmcgdGhlIHNlbGYtcGlwZS4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF9wcm9jZXNzX2V2ZW50cyhzZWxmLCBldmVudF9saXN0KToKICAgICAgICAiIiJQcm9jZXNzIHNlbGVjdG9yIGV2ZW50cy4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0V2ZW50IGxvb3AgaXMgY2xvc2VkJykKCiAgICBkZWYgX2NoZWNrX2RlZmF1bHRfZXhlY3V0b3Ioc2VsZik6CiAgICAgICAgaWYgc2VsZi5fZXhlY3V0b3Jfc2h1dGRvd25fY2FsbGVkOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0V4ZWN1dG9yIHNodXRkb3duIGhhcyBiZWVuIGNhbGxlZCcpCgogICAgZGVmIF9hc3luY2dlbl9maW5hbGl6ZXJfaG9vayhzZWxmLCBhZ2VuKToKICAgICAgICBzZWxmLl9hc3luY2dlbnMuZGlzY2FyZChhZ2VuKQogICAgICAgIGlmIG5vdCBzZWxmLmlzX2Nsb3NlZCgpOgogICAgICAgICAgICBzZWxmLmNhbGxfc29vbl90aHJlYWRzYWZlKHNlbGYuY3JlYXRlX3Rhc2ssIGFnZW4uYWNsb3NlKCkpCgogICAgZGVmIF9hc3luY2dlbl9maXJzdGl0ZXJfaG9vayhzZWxmLCBhZ2VuKToKICAgICAgICBpZiBzZWxmLl9hc3luY2dlbnNfc2h1dGRvd25fY2FsbGVkOgogICAgICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgZiJhc3luY2hyb25vdXMgZ2VuZXJhdG9yIHthZ2VuIXJ9IHdhcyBzY2hlZHVsZWQgYWZ0ZXIgIgogICAgICAgICAgICAgICAgZiJsb29wLnNodXRkb3duX2FzeW5jZ2VucygpIGNhbGwiLAogICAgICAgICAgICAgICAgUmVzb3VyY2VXYXJuaW5nLCBzb3VyY2U9c2VsZikKCiAgICAgICAgc2VsZi5fYXN5bmNnZW5zLmFkZChhZ2VuKQoKICAgIGFzeW5jIGRlZiBzaHV0ZG93bl9hc3luY2dlbnMoc2VsZik6CiAgICAgICAgIiIiU2h1dGRvd24gYWxsIGFjdGl2ZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycy4iIiIKICAgICAgICBzZWxmLl9hc3luY2dlbnNfc2h1dGRvd25fY2FsbGVkID0gVHJ1ZQoKICAgICAgICBpZiBub3QgbGVuKHNlbGYuX2FzeW5jZ2Vucyk6CiAgICAgICAgICAgICMgSWYgUHl0aG9uIHZlcnNpb24gaXMgPDMuNiBvciB3ZSBkb24ndCBoYXZlIGFueSBhc3luY2hyb25vdXMKICAgICAgICAgICAgIyBnZW5lcmF0b3JzIGFsaXZlLgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgY2xvc2luZ19hZ2VucyA9IGxpc3Qoc2VsZi5fYXN5bmNnZW5zKQogICAgICAgIHNlbGYuX2FzeW5jZ2Vucy5jbGVhcigpCgogICAgICAgIHJlc3VsdHMgPSBhd2FpdCB0YXNrcy5nYXRoZXIoCiAgICAgICAgICAgICpbYWcuYWNsb3NlKCkgZm9yIGFnIGluIGNsb3NpbmdfYWdlbnNdLAogICAgICAgICAgICByZXR1cm5fZXhjZXB0aW9ucz1UcnVlKQoKICAgICAgICBmb3IgcmVzdWx0LCBhZ2VuIGluIHppcChyZXN1bHRzLCBjbG9zaW5nX2FnZW5zKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIEV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICBzZWxmLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoewogICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogZidhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xvc2luZyBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJ2FzeW5jaHJvbm91cyBnZW5lcmF0b3Ige2FnZW4hcn0nLAogICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgJ2FzeW5jZ2VuJzogYWdlbgogICAgICAgICAgICAgICAgfSkKCiAgICBhc3luYyBkZWYgc2h1dGRvd25fZGVmYXVsdF9leGVjdXRvcihzZWxmKToKICAgICAgICAiIiJTY2hlZHVsZSB0aGUgc2h1dGRvd24gb2YgdGhlIGRlZmF1bHQgZXhlY3V0b3IuIiIiCiAgICAgICAgc2VsZi5fZXhlY3V0b3Jfc2h1dGRvd25fY2FsbGVkID0gVHJ1ZQogICAgICAgIGlmIHNlbGYuX2RlZmF1bHRfZXhlY3V0b3IgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZnV0dXJlID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9kb19zaHV0ZG93biwgYXJncz0oZnV0dXJlLCkpCiAgICAgICAgdGhyZWFkLnN0YXJ0KCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF3YWl0IGZ1dHVyZQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHRocmVhZC5qb2luKCkKCiAgICBkZWYgX2RvX3NodXRkb3duKHNlbGYsIGZ1dHVyZSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9kZWZhdWx0X2V4ZWN1dG9yLnNodXRkb3duKHdhaXQ9VHJ1ZSkKICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfY2xvc2VkKCk6CiAgICAgICAgICAgICAgICBzZWxmLmNhbGxfc29vbl90aHJlYWRzYWZlKGZ1dHVyZS5zZXRfcmVzdWx0LCBOb25lKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2Nsb3NlZCgpOgogICAgICAgICAgICAgICAgc2VsZi5jYWxsX3Nvb25fdGhyZWFkc2FmZShmdXR1cmUuc2V0X2V4Y2VwdGlvbiwgZXgpCgogICAgZGVmIF9jaGVja19ydW5uaW5nKHNlbGYpOgogICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoaXMgZXZlbnQgbG9vcCBpcyBhbHJlYWR5IHJ1bm5pbmcnKQogICAgICAgIGlmIGV2ZW50cy5fZ2V0X3J1bm5pbmdfbG9vcCgpIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAnQ2Fubm90IHJ1biB0aGUgZXZlbnQgbG9vcCB3aGlsZSBhbm90aGVyIGxvb3AgaXMgcnVubmluZycpCgogICAgZGVmIHJ1bl9mb3JldmVyKHNlbGYpOgogICAgICAgICIiIlJ1biB1bnRpbCBzdG9wKCkgaXMgY2FsbGVkLiIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgc2VsZi5fY2hlY2tfcnVubmluZygpCiAgICAgICAgc2VsZi5fc2V0X2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmcoc2VsZi5fZGVidWcpCgogICAgICAgIG9sZF9hZ2VuX2hvb2tzID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl90aHJlYWRfaWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcyhmaXJzdGl0ZXI9c2VsZi5fYXN5bmNnZW5fZmlyc3RpdGVyX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemVyPXNlbGYuX2FzeW5jZ2VuX2ZpbmFsaXplcl9ob29rKQoKICAgICAgICAgICAgZXZlbnRzLl9zZXRfcnVubmluZ19sb29wKHNlbGYpCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBzZWxmLl9ydW5fb25jZSgpCiAgICAgICAgICAgICAgICBpZiBzZWxmLl9zdG9wcGluZzoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX3N0b3BwaW5nID0gRmFsc2UKICAgICAgICAgICAgc2VsZi5fdGhyZWFkX2lkID0gTm9uZQogICAgICAgICAgICBldmVudHMuX3NldF9ydW5uaW5nX2xvb3AoTm9uZSkKICAgICAgICAgICAgc2VsZi5fc2V0X2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmcoRmFsc2UpCiAgICAgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoKm9sZF9hZ2VuX2hvb2tzKQoKICAgIGRlZiBydW5fdW50aWxfY29tcGxldGUoc2VsZiwgZnV0dXJlKToKICAgICAgICAiIiJSdW4gdW50aWwgdGhlIEZ1dHVyZSBpcyBkb25lLgoKICAgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBjb3JvdXRpbmUsIGl0IGlzIHdyYXBwZWQgaW4gYSBUYXNrLgoKICAgICAgICBXQVJOSU5HOiBJdCB3b3VsZCBiZSBkaXNhc3Ryb3VzIHRvIGNhbGwgcnVuX3VudGlsX2NvbXBsZXRlKCkKICAgICAgICB3aXRoIHRoZSBzYW1lIGNvcm91dGluZSB0d2ljZSAtLSBpdCB3b3VsZCB3cmFwIGl0IGluIHR3bwogICAgICAgIGRpZmZlcmVudCBUYXNrcyBhbmQgdGhhdCBjYW4ndCBiZSBnb29kLgoKICAgICAgICBSZXR1cm4gdGhlIEZ1dHVyZSdzIHJlc3VsdCwgb3IgcmFpc2UgaXRzIGV4Y2VwdGlvbi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIHNlbGYuX2NoZWNrX3J1bm5pbmcoKQoKICAgICAgICBuZXdfdGFzayA9IG5vdCBmdXR1cmVzLmlzZnV0dXJlKGZ1dHVyZSkKICAgICAgICBmdXR1cmUgPSB0YXNrcy5lbnN1cmVfZnV0dXJlKGZ1dHVyZSwgbG9vcD1zZWxmKQogICAgICAgIGlmIG5ld190YXNrOgogICAgICAgICAgICAjIEFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlIGZ1dHVyZSBkaWRuJ3QgY29tcGxldGUsIHNvIHRoZXJlCiAgICAgICAgICAgICMgaXMgbm8gbmVlZCB0byBsb2cgdGhlICJkZXN0cm95IHBlbmRpbmcgdGFzayIgbWVzc2FnZQogICAgICAgICAgICBmdXR1cmUuX2xvZ19kZXN0cm95X3BlbmRpbmcgPSBGYWxzZQoKICAgICAgICBmdXR1cmUuYWRkX2RvbmVfY2FsbGJhY2soX3J1bl91bnRpbF9jb21wbGV0ZV9jYikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYucnVuX2ZvcmV2ZXIoKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgaWYgbmV3X3Rhc2sgYW5kIGZ1dHVyZS5kb25lKCkgYW5kIG5vdCBmdXR1cmUuY2FuY2VsbGVkKCk6CiAgICAgICAgICAgICAgICAjIFRoZSBjb3JvdXRpbmUgcmFpc2VkIGEgQmFzZUV4Y2VwdGlvbi4gQ29uc3VtZSB0aGUgZXhjZXB0aW9uCiAgICAgICAgICAgICAgICAjIHRvIG5vdCBsb2cgYSB3YXJuaW5nLCB0aGUgY2FsbGVyIGRvZXNuJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlCiAgICAgICAgICAgICAgICAjIGxvY2FsIHRhc2suCiAgICAgICAgICAgICAgICBmdXR1cmUuZXhjZXB0aW9uKCkKICAgICAgICAgICAgcmFpc2UKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBmdXR1cmUucmVtb3ZlX2RvbmVfY2FsbGJhY2soX3J1bl91bnRpbF9jb21wbGV0ZV9jYikKICAgICAgICBpZiBub3QgZnV0dXJlLmRvbmUoKToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdFdmVudCBsb29wIHN0b3BwZWQgYmVmb3JlIEZ1dHVyZSBjb21wbGV0ZWQuJykKCiAgICAgICAgcmV0dXJuIGZ1dHVyZS5yZXN1bHQoKQoKICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICIiIlN0b3AgcnVubmluZyB0aGUgZXZlbnQgbG9vcC4KCiAgICAgICAgRXZlcnkgY2FsbGJhY2sgYWxyZWFkeSBzY2hlZHVsZWQgd2lsbCBzdGlsbCBydW4uICBUaGlzIHNpbXBseSBpbmZvcm1zCiAgICAgICAgcnVuX2ZvcmV2ZXIgdG8gc3RvcCBsb29waW5nIGFmdGVyIGEgY29tcGxldGUgaXRlcmF0aW9uLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX3N0b3BwaW5nID0gVHJ1ZQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgZXZlbnQgbG9vcC4KCiAgICAgICAgVGhpcyBjbGVhcnMgdGhlIHF1ZXVlcyBhbmQgc2h1dHMgZG93biB0aGUgZXhlY3V0b3IsCiAgICAgICAgYnV0IGRvZXMgbm90IHdhaXQgZm9yIHRoZSBleGVjdXRvciB0byBmaW5pc2guCgogICAgICAgIFRoZSBldmVudCBsb29wIG11c3Qgbm90IGJlIHJ1bm5pbmcuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5pc19ydW5uaW5nKCk6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGNsb3NlIGEgcnVubmluZyBldmVudCBsb29wIikKICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIHNlbGYuX2RlYnVnOgogICAgICAgICAgICBsb2dnZXIuZGVidWcoIkNsb3NlICVyIiwgc2VsZikKICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCiAgICAgICAgc2VsZi5fcmVhZHkuY2xlYXIoKQogICAgICAgIHNlbGYuX3NjaGVkdWxlZC5jbGVhcigpCiAgICAgICAgc2VsZi5fZXhlY3V0b3Jfc2h1dGRvd25fY2FsbGVkID0gVHJ1ZQogICAgICAgIGV4ZWN1dG9yID0gc2VsZi5fZGVmYXVsdF9leGVjdXRvcgogICAgICAgIGlmIGV4ZWN1dG9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9kZWZhdWx0X2V4ZWN1dG9yID0gTm9uZQogICAgICAgICAgICBleGVjdXRvci5zaHV0ZG93bih3YWl0PUZhbHNlKQoKICAgIGRlZiBpc19jbG9zZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHRoZSBldmVudCBsb29wIHdhcyBjbG9zZWQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2Nsb3NlZAoKICAgIGRlZiBfX2RlbF9fKHNlbGYsIF93YXJuPXdhcm5pbmdzLndhcm4pOgogICAgICAgIGlmIG5vdCBzZWxmLmlzX2Nsb3NlZCgpOgogICAgICAgICAgICBfd2FybihmInVuY2xvc2VkIGV2ZW50IGxvb3Age3NlbGYhcn0iLCBSZXNvdXJjZVdhcm5pbmcsIHNvdXJjZT1zZWxmKQogICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19ydW5uaW5nKCk6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgaXNfcnVubmluZyhzZWxmKToKICAgICAgICAiIiJSZXR1cm5zIFRydWUgaWYgdGhlIGV2ZW50IGxvb3AgaXMgcnVubmluZy4iIiIKICAgICAgICByZXR1cm4gKHNlbGYuX3RocmVhZF9pZCBpcyBub3QgTm9uZSkKCiAgICBkZWYgdGltZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgYWNjb3JkaW5nIHRvIHRoZSBldmVudCBsb29wJ3MgY2xvY2suCgogICAgICAgIFRoaXMgaXMgYSBmbG9hdCBleHByZXNzZWQgaW4gc2Vjb25kcyBzaW5jZSBhbiBlcG9jaCwgYnV0IHRoZQogICAgICAgIGVwb2NoLCBwcmVjaXNpb24sIGFjY3VyYWN5IGFuZCBkcmlmdCBhcmUgdW5zcGVjaWZpZWQgYW5kIG1heQogICAgICAgIGRpZmZlciBwZXIgZXZlbnQgbG9vcC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gdGltZS5tb25vdG9uaWMoKQoKICAgIGRlZiBjYWxsX2xhdGVyKHNlbGYsIGRlbGF5LCBjYWxsYmFjaywgKmFyZ3MsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgIiIiQXJyYW5nZSBmb3IgYSBjYWxsYmFjayB0byBiZSBjYWxsZWQgYXQgYSBnaXZlbiB0aW1lLgoKICAgICAgICBSZXR1cm4gYSBIYW5kbGU6IGFuIG9wYXF1ZSBvYmplY3Qgd2l0aCBhIGNhbmNlbCgpIG1ldGhvZCB0aGF0CiAgICAgICAgY2FuIGJlIHVzZWQgdG8gY2FuY2VsIHRoZSBjYWxsLgoKICAgICAgICBUaGUgZGVsYXkgY2FuIGJlIGFuIGludCBvciBmbG9hdCwgZXhwcmVzc2VkIGluIHNlY29uZHMuICBJdCBpcwogICAgICAgIGFsd2F5cyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0aW1lLgoKICAgICAgICBFYWNoIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGV4YWN0bHkgb25jZS4gIElmIHR3byBjYWxsYmFja3MKICAgICAgICBhcmUgc2NoZWR1bGVkIGZvciBleGFjdGx5IHRoZSBzYW1lIHRpbWUsIGl0IHVuZGVmaW5lZCB3aGljaAogICAgICAgIHdpbGwgYmUgY2FsbGVkIGZpcnN0LgoKICAgICAgICBBbnkgcG9zaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGxiYWNrIHdpbGwgYmUgcGFzc2VkIHRvCiAgICAgICAgdGhlIGNhbGxiYWNrIHdoZW4gaXQgaXMgY2FsbGVkLgogICAgICAgICIiIgogICAgICAgIGlmIGRlbGF5IGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZGVsYXkgbXVzdCBub3QgYmUgTm9uZScpCiAgICAgICAgdGltZXIgPSBzZWxmLmNhbGxfYXQoc2VsZi50aW1lKCkgKyBkZWxheSwgY2FsbGJhY2ssICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCkKICAgICAgICBpZiB0aW1lci5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgZGVsIHRpbWVyLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQogICAgICAgIHJldHVybiB0aW1lcgoKICAgIGRlZiBjYWxsX2F0KHNlbGYsIHdoZW4sIGNhbGxiYWNrLCAqYXJncywgY29udGV4dD1Ob25lKToKICAgICAgICAiIiJMaWtlIGNhbGxfbGF0ZXIoKSwgYnV0IHVzZXMgYW4gYWJzb2x1dGUgdGltZS4KCiAgICAgICAgQWJzb2x1dGUgdGltZSBjb3JyZXNwb25kcyB0byB0aGUgZXZlbnQgbG9vcCdzIHRpbWUoKSBtZXRob2QuCiAgICAgICAgIiIiCiAgICAgICAgaWYgd2hlbiBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIndoZW4gY2Fubm90IGJlIE5vbmUiKQogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgaWYgc2VsZi5fZGVidWc6CiAgICAgICAgICAgIHNlbGYuX2NoZWNrX3RocmVhZCgpCiAgICAgICAgICAgIHNlbGYuX2NoZWNrX2NhbGxiYWNrKGNhbGxiYWNrLCAnY2FsbF9hdCcpCiAgICAgICAgdGltZXIgPSBldmVudHMuVGltZXJIYW5kbGUod2hlbiwgY2FsbGJhY2ssIGFyZ3MsIHNlbGYsIGNvbnRleHQpCiAgICAgICAgaWYgdGltZXIuX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgICAgIGRlbCB0aW1lci5fc291cmNlX3RyYWNlYmFja1stMV0KICAgICAgICBoZWFwcS5oZWFwcHVzaChzZWxmLl9zY2hlZHVsZWQsIHRpbWVyKQogICAgICAgIHRpbWVyLl9zY2hlZHVsZWQgPSBUcnVlCiAgICAgICAgcmV0dXJuIHRpbWVyCgogICAgZGVmIGNhbGxfc29vbihzZWxmLCBjYWxsYmFjaywgKmFyZ3MsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgIiIiQXJyYW5nZSBmb3IgYSBjYWxsYmFjayB0byBiZSBjYWxsZWQgYXMgc29vbiBhcyBwb3NzaWJsZS4KCiAgICAgICAgVGhpcyBvcGVyYXRlcyBhcyBhIEZJRk8gcXVldWU6IGNhbGxiYWNrcyBhcmUgY2FsbGVkIGluIHRoZQogICAgICAgIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIHJlZ2lzdGVyZWQuICBFYWNoIGNhbGxiYWNrIHdpbGwgYmUKICAgICAgICBjYWxsZWQgZXhhY3RseSBvbmNlLgoKICAgICAgICBBbnkgcG9zaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGxiYWNrIHdpbGwgYmUgcGFzc2VkIHRvCiAgICAgICAgdGhlIGNhbGxiYWNrIHdoZW4gaXQgaXMgY2FsbGVkLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgaWYgc2VsZi5fZGVidWc6CiAgICAgICAgICAgIHNlbGYuX2NoZWNrX3RocmVhZCgpCiAgICAgICAgICAgIHNlbGYuX2NoZWNrX2NhbGxiYWNrKGNhbGxiYWNrLCAnY2FsbF9zb29uJykKICAgICAgICBoYW5kbGUgPSBzZWxmLl9jYWxsX3Nvb24oY2FsbGJhY2ssIGFyZ3MsIGNvbnRleHQpCiAgICAgICAgaWYgaGFuZGxlLl9zb3VyY2VfdHJhY2ViYWNrOgogICAgICAgICAgICBkZWwgaGFuZGxlLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQogICAgICAgIHJldHVybiBoYW5kbGUKCiAgICBkZWYgX2NoZWNrX2NhbGxiYWNrKHNlbGYsIGNhbGxiYWNrLCBtZXRob2QpOgogICAgICAgIGlmIChjb3JvdXRpbmVzLmlzY29yb3V0aW5lKGNhbGxiYWNrKSBvcgogICAgICAgICAgICAgICAgY29yb3V0aW5lcy5pc2Nvcm91dGluZWZ1bmN0aW9uKGNhbGxiYWNrKSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgIGYiY29yb3V0aW5lcyBjYW5ub3QgYmUgdXNlZCB3aXRoIHttZXRob2R9KCkiKQogICAgICAgIGlmIG5vdCBjYWxsYWJsZShjYWxsYmFjayk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgIGYnYSBjYWxsYWJsZSBvYmplY3Qgd2FzIGV4cGVjdGVkIGJ5IHttZXRob2R9KCksICcKICAgICAgICAgICAgICAgIGYnZ290IHtjYWxsYmFjayFyfScpCgogICAgZGVmIF9jYWxsX3Nvb24oc2VsZiwgY2FsbGJhY2ssIGFyZ3MsIGNvbnRleHQpOgogICAgICAgIGhhbmRsZSA9IGV2ZW50cy5IYW5kbGUoY2FsbGJhY2ssIGFyZ3MsIHNlbGYsIGNvbnRleHQpCiAgICAgICAgaWYgaGFuZGxlLl9zb3VyY2VfdHJhY2ViYWNrOgogICAgICAgICAgICBkZWwgaGFuZGxlLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQogICAgICAgIHNlbGYuX3JlYWR5LmFwcGVuZChoYW5kbGUpCiAgICAgICAgcmV0dXJuIGhhbmRsZQoKICAgIGRlZiBfY2hlY2tfdGhyZWFkKHNlbGYpOgogICAgICAgICIiIkNoZWNrIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHRoZSB0aHJlYWQgcnVubmluZyB0aGUgZXZlbnQgbG9vcC4KCiAgICAgICAgTm9uLXRocmVhZC1zYWZlIG1ldGhvZHMgb2YgdGhpcyBjbGFzcyBtYWtlIHRoaXMgYXNzdW1wdGlvbiBhbmQgd2lsbAogICAgICAgIGxpa2VseSBiZWhhdmUgaW5jb3JyZWN0bHkgd2hlbiB0aGUgYXNzdW1wdGlvbiBpcyB2aW9sYXRlZC4KCiAgICAgICAgU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gKHNlbGYuX2RlYnVnID09IFRydWUpLiAgVGhlIGNhbGxlciBpcwogICAgICAgIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyB0aGlzIGNvbmRpdGlvbiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl90aHJlYWRfaWQgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdGhyZWFkX2lkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAgICAgICAgaWYgdGhyZWFkX2lkICE9IHNlbGYuX3RocmVhZF9pZDoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgIk5vbi10aHJlYWQtc2FmZSBvcGVyYXRpb24gaW52b2tlZCBvbiBhbiBldmVudCBsb29wIG90aGVyICIKICAgICAgICAgICAgICAgICJ0aGFuIHRoZSBjdXJyZW50IG9uZSIpCgogICAgZGVmIGNhbGxfc29vbl90aHJlYWRzYWZlKHNlbGYsIGNhbGxiYWNrLCAqYXJncywgY29udGV4dD1Ob25lKToKICAgICAgICAiIiJMaWtlIGNhbGxfc29vbigpLCBidXQgdGhyZWFkLXNhZmUuIiIiCiAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICBpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FsbGJhY2soY2FsbGJhY2ssICdjYWxsX3Nvb25fdGhyZWFkc2FmZScpCiAgICAgICAgaGFuZGxlID0gc2VsZi5fY2FsbF9zb29uKGNhbGxiYWNrLCBhcmdzLCBjb250ZXh0KQogICAgICAgIGlmIGhhbmRsZS5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgZGVsIGhhbmRsZS5fc291cmNlX3RyYWNlYmFja1stMV0KICAgICAgICBzZWxmLl93cml0ZV90b19zZWxmKCkKICAgICAgICByZXR1cm4gaGFuZGxlCgogICAgZGVmIHJ1bl9pbl9leGVjdXRvcihzZWxmLCBleGVjdXRvciwgZnVuYywgKmFyZ3MpOgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgaWYgc2VsZi5fZGVidWc6CiAgICAgICAgICAgIHNlbGYuX2NoZWNrX2NhbGxiYWNrKGZ1bmMsICdydW5faW5fZXhlY3V0b3InKQogICAgICAgIGlmIGV4ZWN1dG9yIGlzIE5vbmU6CiAgICAgICAgICAgIGV4ZWN1dG9yID0gc2VsZi5fZGVmYXVsdF9leGVjdXRvcgogICAgICAgICAgICAjIE9ubHkgY2hlY2sgd2hlbiB0aGUgZGVmYXVsdCBleGVjdXRvciBpcyBiZWluZyB1c2VkCiAgICAgICAgICAgIHNlbGYuX2NoZWNrX2RlZmF1bHRfZXhlY3V0b3IoKQogICAgICAgICAgICBpZiBleGVjdXRvciBpcyBOb25lOgogICAgICAgICAgICAgICAgZXhlY3V0b3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKAogICAgICAgICAgICAgICAgICAgIHRocmVhZF9uYW1lX3ByZWZpeD0nYXN5bmNpbycKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHNlbGYuX2RlZmF1bHRfZXhlY3V0b3IgPSBleGVjdXRvcgogICAgICAgIHJldHVybiBmdXR1cmVzLndyYXBfZnV0dXJlKAogICAgICAgICAgICBleGVjdXRvci5zdWJtaXQoZnVuYywgKmFyZ3MpLCBsb29wPXNlbGYpCgogICAgZGVmIHNldF9kZWZhdWx0X2V4ZWN1dG9yKHNlbGYsIGV4ZWN1dG9yKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGVjdXRvciwgY29uY3VycmVudC5mdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBUaHJlYWRQb29sRXhlY3V0b3IgaW5zdGFuY2UnKQogICAgICAgIHNlbGYuX2RlZmF1bHRfZXhlY3V0b3IgPSBleGVjdXRvcgoKICAgIGRlZiBfZ2V0YWRkcmluZm9fZGVidWcoc2VsZiwgaG9zdCwgcG9ydCwgZmFtaWx5LCB0eXBlLCBwcm90bywgZmxhZ3MpOgogICAgICAgIG1zZyA9IFtmIntob3N0fTp7cG9ydCFyfSJdCiAgICAgICAgaWYgZmFtaWx5OgogICAgICAgICAgICBtc2cuYXBwZW5kKGYnZmFtaWx5PXtmYW1pbHkhcn0nKQogICAgICAgIGlmIHR5cGU6CiAgICAgICAgICAgIG1zZy5hcHBlbmQoZid0eXBlPXt0eXBlIXJ9JykKICAgICAgICBpZiBwcm90bzoKICAgICAgICAgICAgbXNnLmFwcGVuZChmJ3Byb3RvPXtwcm90byFyfScpCiAgICAgICAgaWYgZmxhZ3M6CiAgICAgICAgICAgIG1zZy5hcHBlbmQoZidmbGFncz17ZmxhZ3Mhcn0nKQogICAgICAgIG1zZyA9ICcsICcuam9pbihtc2cpCiAgICAgICAgbG9nZ2VyLmRlYnVnKCdHZXQgYWRkcmVzcyBpbmZvICVzJywgbXNnKQoKICAgICAgICB0MCA9IHNlbGYudGltZSgpCiAgICAgICAgYWRkcmluZm8gPSBzb2NrZXQuZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgZmFtaWx5LCB0eXBlLCBwcm90bywgZmxhZ3MpCiAgICAgICAgZHQgPSBzZWxmLnRpbWUoKSAtIHQwCgogICAgICAgIG1zZyA9IGYnR2V0dGluZyBhZGRyZXNzIGluZm8ge21zZ30gdG9vayB7ZHQgKiAxZTM6LjNmfW1zOiB7YWRkcmluZm8hcn0nCiAgICAgICAgaWYgZHQgPj0gc2VsZi5zbG93X2NhbGxiYWNrX2R1cmF0aW9uOgogICAgICAgICAgICBsb2dnZXIuaW5mbyhtc2cpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKG1zZykKICAgICAgICByZXR1cm4gYWRkcmluZm8KCiAgICBhc3luYyBkZWYgZ2V0YWRkcmluZm8oc2VsZiwgaG9zdCwgcG9ydCwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHk9MCwgdHlwZT0wLCBwcm90bz0wLCBmbGFncz0wKToKICAgICAgICBpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgZ2V0YWRkcl9mdW5jID0gc2VsZi5fZ2V0YWRkcmluZm9fZGVidWcKICAgICAgICBlbHNlOgogICAgICAgICAgICBnZXRhZGRyX2Z1bmMgPSBzb2NrZXQuZ2V0YWRkcmluZm8KCiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYucnVuX2luX2V4ZWN1dG9yKAogICAgICAgICAgICBOb25lLCBnZXRhZGRyX2Z1bmMsIGhvc3QsIHBvcnQsIGZhbWlseSwgdHlwZSwgcHJvdG8sIGZsYWdzKQoKICAgIGFzeW5jIGRlZiBnZXRuYW1laW5mbyhzZWxmLCBzb2NrYWRkciwgZmxhZ3M9MCk6CiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYucnVuX2luX2V4ZWN1dG9yKAogICAgICAgICAgICBOb25lLCBzb2NrZXQuZ2V0bmFtZWluZm8sIHNvY2thZGRyLCBmbGFncykKCiAgICBhc3luYyBkZWYgc29ja19zZW5kZmlsZShzZWxmLCBzb2NrLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICosIGZhbGxiYWNrPVRydWUpOgogICAgICAgIGlmIHNlbGYuX2RlYnVnIGFuZCBzb2NrLmdldHRpbWVvdXQoKSAhPSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aGUgc29ja2V0IG11c3QgYmUgbm9uLWJsb2NraW5nIikKICAgICAgICBfY2hlY2tfc3NsX3NvY2tldChzb2NrKQogICAgICAgIHNlbGYuX2NoZWNrX3NlbmRmaWxlX3BhcmFtcyhzb2NrLCBmaWxlLCBvZmZzZXQsIGNvdW50KQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3NvY2tfc2VuZGZpbGVfbmF0aXZlKHNvY2ssIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIGNvdW50KQogICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLlNlbmRmaWxlTm90QXZhaWxhYmxlRXJyb3IgYXMgZXhjOgogICAgICAgICAgICBpZiBub3QgZmFsbGJhY2s6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIHJldHVybiBhd2FpdCBzZWxmLl9zb2NrX3NlbmRmaWxlX2ZhbGxiYWNrKHNvY2ssIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBjb3VudCkKCiAgICBhc3luYyBkZWYgX3NvY2tfc2VuZGZpbGVfbmF0aXZlKHNlbGYsIHNvY2ssIGZpbGUsIG9mZnNldCwgY291bnQpOgogICAgICAgICMgTkI6IHNlbmRmaWxlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBmb3IgU1NMIHNvY2tldHMgYW5kCiAgICAgICAgIyBub24tbW1hcCBmaWxlcyBldmVuIGlmIHNlbmRmaWxlIGlzIHN1cHBvcnRlZCBieSBPUwogICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuU2VuZGZpbGVOb3RBdmFpbGFibGVFcnJvcigKICAgICAgICAgICAgZiJzeXNjYWxsIHNlbmRmaWxlIGlzIG5vdCBhdmFpbGFibGUgZm9yIHNvY2tldCB7c29jayFyfSAiCiAgICAgICAgICAgIGYiYW5kIGZpbGUge2ZpbGUhcn0gY29tYmluYXRpb24iKQoKICAgIGFzeW5jIGRlZiBfc29ja19zZW5kZmlsZV9mYWxsYmFjayhzZWxmLCBzb2NrLCBmaWxlLCBvZmZzZXQsIGNvdW50KToKICAgICAgICBpZiBvZmZzZXQ6CiAgICAgICAgICAgIGZpbGUuc2VlayhvZmZzZXQpCiAgICAgICAgYmxvY2tzaXplID0gKAogICAgICAgICAgICBtaW4oY291bnQsIGNvbnN0YW50cy5TRU5ERklMRV9GQUxMQkFDS19SRUFEQlVGRkVSX1NJWkUpCiAgICAgICAgICAgIGlmIGNvdW50IGVsc2UgY29uc3RhbnRzLlNFTkRGSUxFX0ZBTExCQUNLX1JFQURCVUZGRVJfU0laRQogICAgICAgICkKICAgICAgICBidWYgPSBieXRlYXJyYXkoYmxvY2tzaXplKQogICAgICAgIHRvdGFsX3NlbnQgPSAwCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgaWYgY291bnQ6CiAgICAgICAgICAgICAgICAgICAgYmxvY2tzaXplID0gbWluKGNvdW50IC0gdG90YWxfc2VudCwgYmxvY2tzaXplKQogICAgICAgICAgICAgICAgICAgIGlmIGJsb2Nrc2l6ZSA8PSAwOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgdmlldyA9IG1lbW9yeXZpZXcoYnVmKVs6YmxvY2tzaXplXQogICAgICAgICAgICAgICAgcmVhZCA9IGF3YWl0IHNlbGYucnVuX2luX2V4ZWN1dG9yKE5vbmUsIGZpbGUucmVhZGludG8sIHZpZXcpCiAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBFT0YKICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYuc29ja19zZW5kYWxsKHNvY2ssIHZpZXdbOnJlYWRdKQogICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSByZWFkCiAgICAgICAgICAgIHJldHVybiB0b3RhbF9zZW50CiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgaWYgdG90YWxfc2VudCA+IDAgYW5kIGhhc2F0dHIoZmlsZSwgJ3NlZWsnKToKICAgICAgICAgICAgICAgIGZpbGUuc2VlayhvZmZzZXQgKyB0b3RhbF9zZW50KQoKICAgIGRlZiBfY2hlY2tfc2VuZGZpbGVfcGFyYW1zKHNlbGYsIHNvY2ssIGZpbGUsIG9mZnNldCwgY291bnQpOgogICAgICAgIGlmICdiJyBub3QgaW4gZ2V0YXR0cihmaWxlLCAnbW9kZScsICdiJyk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZpbGUgc2hvdWxkIGJlIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSIpCiAgICAgICAgaWYgbm90IHNvY2sudHlwZSA9PSBzb2NrZXQuU09DS19TVFJFQU06CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9ubHkgU09DS19TVFJFQU0gdHlwZSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQogICAgICAgIGlmIGNvdW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb3VudCwgaW50KToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiY291bnQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgKGdvdCB7IXJ9KSIuZm9ybWF0KGNvdW50KSkKICAgICAgICAgICAgaWYgY291bnQgPD0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgImNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIChnb3QgeyFyfSkiLmZvcm1hdChjb3VudCkpCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob2Zmc2V0LCBpbnQpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAib2Zmc2V0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlciAoZ290IHshcn0pIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KSkKICAgICAgICBpZiBvZmZzZXQgPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgIm9mZnNldCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgKGdvdCB7IXJ9KSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgIG9mZnNldCkpCgogICAgYXN5bmMgZGVmIF9jb25uZWN0X3NvY2soc2VsZiwgZXhjZXB0aW9ucywgYWRkcl9pbmZvLCBsb2NhbF9hZGRyX2luZm9zPU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSwgYmluZCBhbmQgY29ubmVjdCBvbmUgc29ja2V0LiIiIgogICAgICAgIG15X2V4Y2VwdGlvbnMgPSBbXQogICAgICAgIGV4Y2VwdGlvbnMuYXBwZW5kKG15X2V4Y2VwdGlvbnMpCiAgICAgICAgZmFtaWx5LCB0eXBlXywgcHJvdG8sIF8sIGFkZHJlc3MgPSBhZGRyX2luZm8KICAgICAgICBzb2NrID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoZmFtaWx5PWZhbWlseSwgdHlwZT10eXBlXywgcHJvdG89cHJvdG8pCiAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoRmFsc2UpCiAgICAgICAgICAgIGlmIGxvY2FsX2FkZHJfaW5mb3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBmb3IgbGZhbWlseSwgXywgXywgXywgbGFkZHIgaW4gbG9jYWxfYWRkcl9pbmZvczoKICAgICAgICAgICAgICAgICAgICAjIHNraXAgbG9jYWwgYWRkcmVzc2VzIG9mIGRpZmZlcmVudCBmYW1pbHkKICAgICAgICAgICAgICAgICAgICBpZiBsZmFtaWx5ICE9IGZhbWlseToKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2suYmluZChsYWRkcikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYnZXJyb3Igd2hpbGUgYXR0ZW1wdGluZyB0byBiaW5kIG9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYnYWRkcmVzcyB7bGFkZHIhcn06ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYne2V4Yy5zdHJlcnJvci5sb3dlcigpfScKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBleGMgPSBPU0Vycm9yKGV4Yy5lcnJubywgbXNnKQogICAgICAgICAgICAgICAgICAgICAgICBteV9leGNlcHRpb25zLmFwcGVuZChleGMpCiAgICAgICAgICAgICAgICBlbHNlOiAgIyBhbGwgYmluZCBhdHRlbXB0cyBmYWlsZWQKICAgICAgICAgICAgICAgICAgICBpZiBteV9leGNlcHRpb25zOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBteV9leGNlcHRpb25zLnBvcCgpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihmIm5vIG1hdGNoaW5nIGxvY2FsIGFkZHJlc3Mgd2l0aCB7ZmFtaWx5PX0gZm91bmQiKQogICAgICAgICAgICBhd2FpdCBzZWxmLnNvY2tfY29ubmVjdChzb2NrLCBhZGRyZXNzKQogICAgICAgICAgICByZXR1cm4gc29jawogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgbXlfZXhjZXB0aW9ucy5hcHBlbmQoZXhjKQogICAgICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgZXhjZXB0aW9ucyA9IG15X2V4Y2VwdGlvbnMgPSBOb25lCgogICAgYXN5bmMgZGVmIGNyZWF0ZV9jb25uZWN0aW9uKAogICAgICAgICAgICBzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBob3N0PU5vbmUsIHBvcnQ9Tm9uZSwKICAgICAgICAgICAgKiwgc3NsPU5vbmUsIGZhbWlseT0wLAogICAgICAgICAgICBwcm90bz0wLCBmbGFncz0wLCBzb2NrPU5vbmUsCiAgICAgICAgICAgIGxvY2FsX2FkZHI9Tm9uZSwgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lLAogICAgICAgICAgICBoYXBweV9leWViYWxsc19kZWxheT1Ob25lLCBpbnRlcmxlYXZlPU5vbmUpOgogICAgICAgICIiIkNvbm5lY3QgdG8gYSBUQ1Agc2VydmVyLgoKICAgICAgICBDcmVhdGUgYSBzdHJlYW1pbmcgdHJhbnNwb3J0IGNvbm5lY3Rpb24gdG8gYSBnaXZlbiBpbnRlcm5ldCBob3N0IGFuZAogICAgICAgIHBvcnQ6IHNvY2tldCBmYW1pbHkgQUZfSU5FVCBvciBzb2NrZXQuQUZfSU5FVDYgZGVwZW5kaW5nIG9uIGhvc3QgKG9yCiAgICAgICAgZmFtaWx5IGlmIHNwZWNpZmllZCksIHNvY2tldCB0eXBlIFNPQ0tfU1RSRUFNLiBwcm90b2NvbF9mYWN0b3J5IG11c3QgYmUKICAgICAgICBhIGNhbGxhYmxlIHJldHVybmluZyBhIHByb3RvY29sIGluc3RhbmNlLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBhIGNvcm91dGluZSB3aGljaCB3aWxsIHRyeSB0byBlc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24KICAgICAgICBpbiB0aGUgYmFja2dyb3VuZC4gIFdoZW4gc3VjY2Vzc2Z1bCwgdGhlIGNvcm91dGluZSByZXR1cm5zIGEKICAgICAgICAodHJhbnNwb3J0LCBwcm90b2NvbCkgcGFpci4KICAgICAgICAiIiIKICAgICAgICBpZiBzZXJ2ZXJfaG9zdG5hbWUgaXMgbm90IE5vbmUgYW5kIG5vdCBzc2w6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlcnZlcl9ob3N0bmFtZSBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCBzc2wnKQoKICAgICAgICBpZiBzZXJ2ZXJfaG9zdG5hbWUgaXMgTm9uZSBhbmQgc3NsOgogICAgICAgICAgICAjIFVzZSBob3N0IGFzIGRlZmF1bHQgZm9yIHNlcnZlcl9ob3N0bmFtZS4gIEl0IGlzIGFuIGVycm9yCiAgICAgICAgICAgICMgaWYgaG9zdCBpcyBlbXB0eSBvciBub3Qgc2V0LCBlLmcuIHdoZW4gYW4KICAgICAgICAgICAgIyBhbHJlYWR5LWNvbm5lY3RlZCBzb2NrZXQgd2FzIHBhc3NlZCBvciB3aGVuIG9ubHkgYSBwb3J0CiAgICAgICAgICAgICMgaXMgZ2l2ZW4uICBUbyBhdm9pZCB0aGlzIGVycm9yLCB5b3UgY2FuIHBhc3MKICAgICAgICAgICAgIyBzZXJ2ZXJfaG9zdG5hbWU9JycgLS0gdGhpcyB3aWxsIGJ5cGFzcyB0aGUgaG9zdG5hbWUKICAgICAgICAgICAgIyBjaGVjay4gIChUaGlzIGFsc28gbWVhbnMgdGhhdCBpZiBob3N0IGlzIGEgbnVtZXJpYwogICAgICAgICAgICAjIElQL0lQdjYgYWRkcmVzcywgd2Ugd2lsbCBhdHRlbXB0IHRvIHZlcmlmeSB0aGF0IGV4YWN0CiAgICAgICAgICAgICMgYWRkcmVzczsgdGhpcyB3aWxsIHByb2JhYmx5IGZhaWwsIGJ1dCBpdCBpcyBwb3NzaWJsZSB0bwogICAgICAgICAgICAjIGNyZWF0ZSBhIGNlcnRpZmljYXRlIGZvciBhIHNwZWNpZmljIElQIGFkZHJlc3MsIHNvIHdlCiAgICAgICAgICAgICMgZG9uJ3QganVkZ2UgaXQgaGVyZS4pCiAgICAgICAgICAgIGlmIG5vdCBob3N0OgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignWW91IG11c3Qgc2V0IHNlcnZlcl9ob3N0bmFtZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aGVuIHVzaW5nIHNzbCB3aXRob3V0IGEgaG9zdCcpCiAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZSA9IGhvc3QKCiAgICAgICAgaWYgc3NsX2hhbmRzaGFrZV90aW1lb3V0IGlzIG5vdCBOb25lIGFuZCBub3Qgc3NsOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgJ3NzbF9oYW5kc2hha2VfdGltZW91dCBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCBzc2wnKQoKICAgICAgICBpZiBzc2xfc2h1dGRvd25fdGltZW91dCBpcyBub3QgTm9uZSBhbmQgbm90IHNzbDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICdzc2xfc2h1dGRvd25fdGltZW91dCBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCBzc2wnKQoKICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfY2hlY2tfc3NsX3NvY2tldChzb2NrKQoKICAgICAgICBpZiBoYXBweV9leWViYWxsc19kZWxheSBpcyBub3QgTm9uZSBhbmQgaW50ZXJsZWF2ZSBpcyBOb25lOgogICAgICAgICAgICAjIElmIHVzaW5nIGhhcHB5IGV5ZWJhbGxzLCBkZWZhdWx0IHRvIGludGVybGVhdmUgYWRkcmVzc2VzIGJ5IGZhbWlseQogICAgICAgICAgICBpbnRlcmxlYXZlID0gMQoKICAgICAgICBpZiBob3N0IGlzIG5vdCBOb25lIG9yIHBvcnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHNvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdob3N0L3BvcnQgYW5kIHNvY2sgY2FuIG5vdCBiZSBzcGVjaWZpZWQgYXQgdGhlIHNhbWUgdGltZScpCgogICAgICAgICAgICBpbmZvcyA9IGF3YWl0IHNlbGYuX2Vuc3VyZV9yZXNvbHZlZCgKICAgICAgICAgICAgICAgIChob3N0LCBwb3J0KSwgZmFtaWx5PWZhbWlseSwKICAgICAgICAgICAgICAgIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNLCBwcm90bz1wcm90bywgZmxhZ3M9ZmxhZ3MsIGxvb3A9c2VsZikKICAgICAgICAgICAgaWYgbm90IGluZm9zOgogICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignZ2V0YWRkcmluZm8oKSByZXR1cm5lZCBlbXB0eSBsaXN0JykKCiAgICAgICAgICAgIGlmIGxvY2FsX2FkZHIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBsYWRkcl9pbmZvcyA9IGF3YWl0IHNlbGYuX2Vuc3VyZV9yZXNvbHZlZCgKICAgICAgICAgICAgICAgICAgICBsb2NhbF9hZGRyLCBmYW1pbHk9ZmFtaWx5LAogICAgICAgICAgICAgICAgICAgIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNLCBwcm90bz1wcm90bywKICAgICAgICAgICAgICAgICAgICBmbGFncz1mbGFncywgbG9vcD1zZWxmKQogICAgICAgICAgICAgICAgaWYgbm90IGxhZGRyX2luZm9zOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2dldGFkZHJpbmZvKCkgcmV0dXJuZWQgZW1wdHkgbGlzdCcpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBsYWRkcl9pbmZvcyA9IE5vbmUKCiAgICAgICAgICAgIGlmIGludGVybGVhdmU6CiAgICAgICAgICAgICAgICBpbmZvcyA9IF9pbnRlcmxlYXZlX2FkZHJpbmZvcyhpbmZvcywgaW50ZXJsZWF2ZSkKCiAgICAgICAgICAgIGV4Y2VwdGlvbnMgPSBbXQogICAgICAgICAgICBpZiBoYXBweV9leWViYWxsc19kZWxheSBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBub3QgdXNpbmcgaGFwcHkgZXllYmFsbHMKICAgICAgICAgICAgICAgIGZvciBhZGRyaW5mbyBpbiBpbmZvczoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2sgPSBhd2FpdCBzZWxmLl9jb25uZWN0X3NvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLCBhZGRyaW5mbywgbGFkZHJfaW5mb3MpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsc2U6ICAjIHVzaW5nIGhhcHB5IGV5ZWJhbGxzCiAgICAgICAgICAgICAgICBzb2NrLCBfLCBfID0gYXdhaXQgc3RhZ2dlcmVkLnN0YWdnZXJlZF9yYWNlKAogICAgICAgICAgICAgICAgICAgIChmdW5jdG9vbHMucGFydGlhbChzZWxmLl9jb25uZWN0X3NvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMsIGFkZHJpbmZvLCBsYWRkcl9pbmZvcykKICAgICAgICAgICAgICAgICAgICAgZm9yIGFkZHJpbmZvIGluIGluZm9zKSwKICAgICAgICAgICAgICAgICAgICBoYXBweV9leWViYWxsc19kZWxheSwgbG9vcD1zZWxmKQoKICAgICAgICAgICAgaWYgc29jayBpcyBOb25lOgogICAgICAgICAgICAgICAgZXhjZXB0aW9ucyA9IFtleGMgZm9yIHN1YiBpbiBleGNlcHRpb25zIGZvciBleGMgaW4gc3ViXQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGlmIGxlbihleGNlcHRpb25zKSA9PSAxOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zWzBdCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGV5IGFsbCBoYXZlIHRoZSBzYW1lIHN0cigpLCByYWlzZSBvbmUuCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsID0gc3RyKGV4Y2VwdGlvbnNbMF0pCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFsbChzdHIoZXhjKSA9PSBtb2RlbCBmb3IgZXhjIGluIGV4Y2VwdGlvbnMpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9uc1swXQogICAgICAgICAgICAgICAgICAgICAgICAjIFJhaXNlIGEgY29tYmluZWQgZXhjZXB0aW9uIHNvIHRoZSB1c2VyIGNhbiBzZWUgYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHZhcmlvdXMgZXJyb3IgbWVzc2FnZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ011bHRpcGxlIGV4Y2VwdGlvbnM6IHt9Jy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc3RyKGV4YykgZm9yIGV4YyBpbiBleGNlcHRpb25zKSkpCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMgPSBOb25lCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHNvY2sgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJ2hvc3QgYW5kIHBvcnQgd2FzIG5vdCBzcGVjaWZpZWQgYW5kIG5vIHNvY2sgc3BlY2lmaWVkJykKICAgICAgICAgICAgaWYgc29jay50eXBlICE9IHNvY2tldC5TT0NLX1NUUkVBTToKICAgICAgICAgICAgICAgICMgV2UgYWxsb3cgQUZfSU5FVCwgQUZfSU5FVDYsIEFGX1VOSVggYXMgbG9uZyBhcyB0aGV5CiAgICAgICAgICAgICAgICAjIGFyZSBTT0NLX1NUUkVBTS4KICAgICAgICAgICAgICAgICMgV2Ugc3VwcG9ydCBwYXNzaW5nIEFGX1VOSVggc29ja2V0cyBldmVuIHRob3VnaCB3ZSBoYXZlCiAgICAgICAgICAgICAgICAjIGEgZGVkaWNhdGVkIEFQSSBmb3IgdGhhdDogY3JlYXRlX3VuaXhfY29ubmVjdGlvbi4KICAgICAgICAgICAgICAgICMgRGlzYWxsb3dpbmcgQUZfVU5JWCBpbiB0aGlzIG1ldGhvZCwgYnJlYWtzIGJhY2t3YXJkcwogICAgICAgICAgICAgICAgIyBjb21wYXRpYmlsaXR5LgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmJ0EgU3RyZWFtIFNvY2tldCB3YXMgZXhwZWN0ZWQsIGdvdCB7c29jayFyfScpCgogICAgICAgIHRyYW5zcG9ydCwgcHJvdG9jb2wgPSBhd2FpdCBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbl90cmFuc3BvcnQoCiAgICAgICAgICAgIHNvY2ssIHByb3RvY29sX2ZhY3RvcnksIHNzbCwgc2VydmVyX2hvc3RuYW1lLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9c3NsX2hhbmRzaGFrZV90aW1lb3V0LAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1zc2xfc2h1dGRvd25fdGltZW91dCkKICAgICAgICBpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgIyBHZXQgdGhlIHNvY2tldCBmcm9tIHRoZSB0cmFuc3BvcnQgYmVjYXVzZSBTU0wgdHJhbnNwb3J0IGNsb3NlcwogICAgICAgICAgICAjIHRoZSBvbGQgc29ja2V0IGFuZCBjcmVhdGVzIGEgbmV3IFNTTCBzb2NrZXQKICAgICAgICAgICAgc29jayA9IHRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbygnc29ja2V0JykKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlciBjb25uZWN0ZWQgdG8gJXM6JXI6ICglciwgJXIpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ssIGhvc3QsIHBvcnQsIHRyYW5zcG9ydCwgcHJvdG9jb2wpCiAgICAgICAgcmV0dXJuIHRyYW5zcG9ydCwgcHJvdG9jb2wKCiAgICBhc3luYyBkZWYgX2NyZWF0ZV9jb25uZWN0aW9uX3RyYW5zcG9ydCgKICAgICAgICAgICAgc2VsZiwgc29jaywgcHJvdG9jb2xfZmFjdG9yeSwgc3NsLAogICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUsIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9Tm9uZSk6CgogICAgICAgIHNvY2suc2V0YmxvY2tpbmcoRmFsc2UpCgogICAgICAgIHByb3RvY29sID0gcHJvdG9jb2xfZmFjdG9yeSgpCiAgICAgICAgd2FpdGVyID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBpZiBzc2w6CiAgICAgICAgICAgIHNzbGNvbnRleHQgPSBOb25lIGlmIGlzaW5zdGFuY2Uoc3NsLCBib29sKSBlbHNlIHNzbAogICAgICAgICAgICB0cmFuc3BvcnQgPSBzZWxmLl9tYWtlX3NzbF90cmFuc3BvcnQoCiAgICAgICAgICAgICAgICBzb2NrLCBwcm90b2NvbCwgc3NsY29udGV4dCwgd2FpdGVyLAogICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCiAgICAgICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9c3NsX2hhbmRzaGFrZV90aW1lb3V0LAogICAgICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9c3NsX3NodXRkb3duX3RpbWVvdXQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJhbnNwb3J0ID0gc2VsZi5fbWFrZV9zb2NrZXRfdHJhbnNwb3J0KHNvY2ssIHByb3RvY29sLCB3YWl0ZXIpCgogICAgICAgIHRyeToKICAgICAgICAgICAgYXdhaXQgd2FpdGVyCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICB0cmFuc3BvcnQuY2xvc2UoKQogICAgICAgICAgICByYWlzZQoKICAgICAgICByZXR1cm4gdHJhbnNwb3J0LCBwcm90b2NvbAoKICAgIGFzeW5jIGRlZiBzZW5kZmlsZShzZWxmLCB0cmFuc3BvcnQsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICosIGZhbGxiYWNrPVRydWUpOgogICAgICAgICIiIlNlbmQgYSBmaWxlIHRvIHRyYW5zcG9ydC4KCiAgICAgICAgUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2VyZSBzZW50LgoKICAgICAgICBUaGUgbWV0aG9kIHVzZXMgaGlnaC1wZXJmb3JtYW5jZSBvcy5zZW5kZmlsZSBpZiBhdmFpbGFibGUuCgogICAgICAgIGZpbGUgbXVzdCBiZSBhIHJlZ3VsYXIgZmlsZSBvYmplY3Qgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgoKICAgICAgICBvZmZzZXQgdGVsbHMgZnJvbSB3aGVyZSB0byBzdGFydCByZWFkaW5nIHRoZSBmaWxlLiBJZiBzcGVjaWZpZWQsCiAgICAgICAgY291bnQgaXMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB0byB0cmFuc21pdCBhcyBvcHBvc2VkIHRvCiAgICAgICAgc2VuZGluZyB0aGUgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gRmlsZSBwb3NpdGlvbiBpcyB1cGRhdGVkIG9uCiAgICAgICAgcmV0dXJuIG9yIGFsc28gaW4gY2FzZSBvZiBlcnJvciBpbiB3aGljaCBjYXNlIGZpbGUudGVsbCgpCiAgICAgICAgY2FuIGJlIHVzZWQgdG8gZmlndXJlIG91dCB0aGUgbnVtYmVyIG9mIGJ5dGVzCiAgICAgICAgd2hpY2ggd2VyZSBzZW50LgoKICAgICAgICBmYWxsYmFjayBzZXQgdG8gVHJ1ZSBtYWtlcyBhc3luY2lvIHRvIG1hbnVhbGx5IHJlYWQgYW5kIHNlbmQKICAgICAgICB0aGUgZmlsZSB3aGVuIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBzZW5kZmlsZSBzeXNjYWxsCiAgICAgICAgKGUuZy4gV2luZG93cyBvciBTU0wgc29ja2V0IG9uIFVuaXgpLgoKICAgICAgICBSYWlzZSBTZW5kZmlsZU5vdEF2YWlsYWJsZUVycm9yIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydAogICAgICAgIHNlbmRmaWxlIHN5c2NhbGwgYW5kIGZhbGxiYWNrIGlzIEZhbHNlLgogICAgICAgICIiIgogICAgICAgIGlmIHRyYW5zcG9ydC5pc19jbG9zaW5nKCk6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVHJhbnNwb3J0IGlzIGNsb3NpbmciKQogICAgICAgIG1vZGUgPSBnZXRhdHRyKHRyYW5zcG9ydCwgJ19zZW5kZmlsZV9jb21wYXRpYmxlJywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudHMuX1NlbmRmaWxlTW9kZS5VTlNVUFBPUlRFRCkKICAgICAgICBpZiBtb2RlIGlzIGNvbnN0YW50cy5fU2VuZGZpbGVNb2RlLlVOU1VQUE9SVEVEOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICBmInNlbmRmaWxlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRyYW5zcG9ydCB7dHJhbnNwb3J0IXJ9IikKICAgICAgICBpZiBtb2RlIGlzIGNvbnN0YW50cy5fU2VuZGZpbGVNb2RlLlRSWV9OQVRJVkU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBzZWxmLl9zZW5kZmlsZV9uYXRpdmUodHJhbnNwb3J0LCBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIGNvdW50KQogICAgICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5TZW5kZmlsZU5vdEF2YWlsYWJsZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgIGlmIG5vdCBmYWxsYmFjazoKICAgICAgICAgICAgICAgICAgICByYWlzZQoKICAgICAgICBpZiBub3QgZmFsbGJhY2s6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgIGYiZmFsbGJhY2sgaXMgZGlzYWJsZWQgYW5kIG5hdGl2ZSBzZW5kZmlsZSBpcyBub3QgIgogICAgICAgICAgICAgICAgZiJzdXBwb3J0ZWQgZm9yIHRyYW5zcG9ydCB7dHJhbnNwb3J0IXJ9IikKCiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3NlbmRmaWxlX2ZhbGxiYWNrKHRyYW5zcG9ydCwgZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBjb3VudCkKCiAgICBhc3luYyBkZWYgX3NlbmRmaWxlX25hdGl2ZShzZWxmLCB0cmFuc3AsIGZpbGUsIG9mZnNldCwgY291bnQpOgogICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuU2VuZGZpbGVOb3RBdmFpbGFibGVFcnJvcigKICAgICAgICAgICAgInNlbmRmaWxlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCIpCgogICAgYXN5bmMgZGVmIF9zZW5kZmlsZV9mYWxsYmFjayhzZWxmLCB0cmFuc3AsIGZpbGUsIG9mZnNldCwgY291bnQpOgogICAgICAgIGlmIG9mZnNldDoKICAgICAgICAgICAgZmlsZS5zZWVrKG9mZnNldCkKICAgICAgICBibG9ja3NpemUgPSBtaW4oY291bnQsIDE2Mzg0KSBpZiBjb3VudCBlbHNlIDE2Mzg0CiAgICAgICAgYnVmID0gYnl0ZWFycmF5KGJsb2Nrc2l6ZSkKICAgICAgICB0b3RhbF9zZW50ID0gMAogICAgICAgIHByb3RvID0gX1NlbmRmaWxlRmFsbGJhY2tQcm90b2NvbCh0cmFuc3ApCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgaWYgY291bnQ6CiAgICAgICAgICAgICAgICAgICAgYmxvY2tzaXplID0gbWluKGNvdW50IC0gdG90YWxfc2VudCwgYmxvY2tzaXplKQogICAgICAgICAgICAgICAgICAgIGlmIGJsb2Nrc2l6ZSA8PSAwOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfc2VudAogICAgICAgICAgICAgICAgdmlldyA9IG1lbW9yeXZpZXcoYnVmKVs6YmxvY2tzaXplXQogICAgICAgICAgICAgICAgcmVhZCA9IGF3YWl0IHNlbGYucnVuX2luX2V4ZWN1dG9yKE5vbmUsIGZpbGUucmVhZGludG8sIHZpZXcpCiAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfc2VudCAgIyBFT0YKICAgICAgICAgICAgICAgIGF3YWl0IHByb3RvLmRyYWluKCkKICAgICAgICAgICAgICAgIHRyYW5zcC53cml0ZSh2aWV3WzpyZWFkXSkKICAgICAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gcmVhZAogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIHRvdGFsX3NlbnQgPiAwIGFuZCBoYXNhdHRyKGZpbGUsICdzZWVrJyk6CiAgICAgICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0ICsgdG90YWxfc2VudCkKICAgICAgICAgICAgYXdhaXQgcHJvdG8ucmVzdG9yZSgpCgogICAgYXN5bmMgZGVmIHN0YXJ0X3RscyhzZWxmLCB0cmFuc3BvcnQsIHByb3RvY29sLCBzc2xjb250ZXh0LCAqLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lKToKICAgICAgICAiIiJVcGdyYWRlIHRyYW5zcG9ydCB0byBUTFMuCgogICAgICAgIFJldHVybiBhIG5ldyB0cmFuc3BvcnQgdGhhdCAqcHJvdG9jb2wqIHNob3VsZCBzdGFydCB1c2luZwogICAgICAgIGltbWVkaWF0ZWx5LgogICAgICAgICIiIgogICAgICAgIGlmIHNzbCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1B5dGhvbiBzc2wgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUnKQoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzc2xjb250ZXh0LCBzc2wuU1NMQ29udGV4dCk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgIGYnc3NsY29udGV4dCBpcyBleHBlY3RlZCB0byBiZSBhbiBpbnN0YW5jZSBvZiBzc2wuU1NMQ29udGV4dCwgJwogICAgICAgICAgICAgICAgZidnb3Qge3NzbGNvbnRleHQhcn0nKQoKICAgICAgICBpZiBub3QgZ2V0YXR0cih0cmFuc3BvcnQsICdfc3RhcnRfdGxzX2NvbXBhdGlibGUnLCBGYWxzZSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgIGYndHJhbnNwb3J0IHt0cmFuc3BvcnQhcn0gaXMgbm90IHN1cHBvcnRlZCBieSBzdGFydF90bHMoKScpCgogICAgICAgIHdhaXRlciA9IHNlbGYuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgc3NsX3Byb3RvY29sID0gc3NscHJvdG8uU1NMUHJvdG9jb2woCiAgICAgICAgICAgIHNlbGYsIHByb3RvY29sLCBzc2xjb250ZXh0LCB3YWl0ZXIsCiAgICAgICAgICAgIHNlcnZlcl9zaWRlLCBzZXJ2ZXJfaG9zdG5hbWUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1zc2xfaGFuZHNoYWtlX3RpbWVvdXQsCiAgICAgICAgICAgIHNzbF9zaHV0ZG93bl90aW1lb3V0PXNzbF9zaHV0ZG93bl90aW1lb3V0LAogICAgICAgICAgICBjYWxsX2Nvbm5lY3Rpb25fbWFkZT1GYWxzZSkKCiAgICAgICAgIyBQYXVzZSBlYXJseSBzbyB0aGF0ICJzc2xfcHJvdG9jb2wuZGF0YV9yZWNlaXZlZCgpIiBkb2Vzbid0CiAgICAgICAgIyBoYXZlIGEgY2hhbmNlIHRvIGdldCBjYWxsZWQgYmVmb3JlICJzc2xfcHJvdG9jb2wuY29ubmVjdGlvbl9tYWRlKCkiLgogICAgICAgIHRyYW5zcG9ydC5wYXVzZV9yZWFkaW5nKCkKCiAgICAgICAgdHJhbnNwb3J0LnNldF9wcm90b2NvbChzc2xfcHJvdG9jb2wpCiAgICAgICAgY29ubWFkZV9jYiA9IHNlbGYuY2FsbF9zb29uKHNzbF9wcm90b2NvbC5jb25uZWN0aW9uX21hZGUsIHRyYW5zcG9ydCkKICAgICAgICByZXN1bWVfY2IgPSBzZWxmLmNhbGxfc29vbih0cmFuc3BvcnQucmVzdW1lX3JlYWRpbmcpCgogICAgICAgIHRyeToKICAgICAgICAgICAgYXdhaXQgd2FpdGVyCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CiAgICAgICAgICAgIHRyYW5zcG9ydC5jbG9zZSgpCiAgICAgICAgICAgIGNvbm1hZGVfY2IuY2FuY2VsKCkKICAgICAgICAgICAgcmVzdW1lX2NiLmNhbmNlbCgpCiAgICAgICAgICAgIHJhaXNlCgogICAgICAgIHJldHVybiBzc2xfcHJvdG9jb2wuX2FwcF90cmFuc3BvcnQKCiAgICBhc3luYyBkZWYgY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50KHNlbGYsIHByb3RvY29sX2ZhY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX2FkZHI9Tm9uZSwgcmVtb3RlX2FkZHI9Tm9uZSwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5PTAsIHByb3RvPTAsIGZsYWdzPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldXNlX3BvcnQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfYnJvYWRjYXN0PU5vbmUsIHNvY2s9Tm9uZSk6CiAgICAgICAgIiIiQ3JlYXRlIGRhdGFncmFtIGNvbm5lY3Rpb24uIiIiCiAgICAgICAgaWYgc29jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgc29jay50eXBlICE9IHNvY2tldC5TT0NLX0RHUkFNOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmJ0EgVURQIFNvY2tldCB3YXMgZXhwZWN0ZWQsIGdvdCB7c29jayFyfScpCiAgICAgICAgICAgIGlmIChsb2NhbF9hZGRyIG9yIHJlbW90ZV9hZGRyIG9yCiAgICAgICAgICAgICAgICAgICAgZmFtaWx5IG9yIHByb3RvIG9yIGZsYWdzIG9yCiAgICAgICAgICAgICAgICAgICAgcmV1c2VfcG9ydCBvciBhbGxvd19icm9hZGNhc3QpOgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBwcm9ibGVtYXRpYyBrd2FyZ3MgaW4gZXhjZXB0aW9uIG1zZwogICAgICAgICAgICAgICAgb3B0cyA9IGRpY3QobG9jYWxfYWRkcj1sb2NhbF9hZGRyLCByZW1vdGVfYWRkcj1yZW1vdGVfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseT1mYW1pbHksIHByb3RvPXByb3RvLCBmbGFncz1mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldXNlX3BvcnQ9cmV1c2VfcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X2Jyb2FkY2FzdD1hbGxvd19icm9hZGNhc3QpCiAgICAgICAgICAgICAgICBwcm9ibGVtcyA9ICcsICcuam9pbihmJ3trfT17dn0nIGZvciBrLCB2IGluIG9wdHMuaXRlbXMoKSBpZiB2KQogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmJ3NvY2tldCBtb2RpZmllciBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gbm90IGJlIHVzZWQgJwogICAgICAgICAgICAgICAgICAgIGYnd2hlbiBzb2NrIGlzIHNwZWNpZmllZC4gKHtwcm9ibGVtc30pJykKICAgICAgICAgICAgc29jay5zZXRibG9ja2luZyhGYWxzZSkKICAgICAgICAgICAgcl9hZGRyID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIG5vdCAobG9jYWxfYWRkciBvciByZW1vdGVfYWRkcik6CiAgICAgICAgICAgICAgICBpZiBmYW1pbHkgPT0gMDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bmV4cGVjdGVkIGFkZHJlc3MgZmFtaWx5JykKICAgICAgICAgICAgICAgIGFkZHJfcGFpcnNfaW5mbyA9ICgoKGZhbWlseSwgcHJvdG8pLCAoTm9uZSwgTm9uZSkpLCkKICAgICAgICAgICAgZWxpZiBoYXNhdHRyKHNvY2tldCwgJ0FGX1VOSVgnKSBhbmQgZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgogICAgICAgICAgICAgICAgZm9yIGFkZHIgaW4gKGxvY2FsX2FkZHIsIHJlbW90ZV9hZGRyKToKICAgICAgICAgICAgICAgICAgICBpZiBhZGRyIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShhZGRyLCBzdHIpOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3N0cmluZyBpcyBleHBlY3RlZCcpCgogICAgICAgICAgICAgICAgaWYgbG9jYWxfYWRkciBhbmQgbG9jYWxfYWRkclswXSBub3QgaW4gKDAsICdceDAwJyk6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNTT0NLKG9zLnN0YXQobG9jYWxfYWRkcikuc3RfbW9kZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUobG9jYWxfYWRkcikKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgICAgICMgRGlyZWN0b3J5IG1heSBoYXZlIHBlcm1pc3Npb25zIG9ubHkgdG8gY3JlYXRlIHNvY2tldC4KICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdVbmFibGUgdG8gY2hlY2sgb3IgcmVtb3ZlIHN0YWxlIFVOSVggJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldCAlcjogJXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfYWRkciwgZXJyKQoKICAgICAgICAgICAgICAgIGFkZHJfcGFpcnNfaW5mbyA9ICgoKGZhbWlseSwgcHJvdG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYWxfYWRkciwgcmVtb3RlX2FkZHIpKSwgKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBqb2luIGFkZHJlc3MgYnkgKGZhbWlseSwgcHJvdG9jb2wpCiAgICAgICAgICAgICAgICBhZGRyX2luZm9zID0ge30gICMgVXNpbmcgb3JkZXIgcHJlc2VydmluZyBkaWN0CiAgICAgICAgICAgICAgICBmb3IgaWR4LCBhZGRyIGluICgoMCwgbG9jYWxfYWRkciksICgxLCByZW1vdGVfYWRkcikpOgogICAgICAgICAgICAgICAgICAgIGlmIGFkZHIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShhZGRyLCB0dXBsZSkgYW5kIGxlbihhZGRyKSA9PSAyKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignMi10dXBsZSBpcyBleHBlY3RlZCcpCgogICAgICAgICAgICAgICAgICAgICAgICBpbmZvcyA9IGF3YWl0IHNlbGYuX2Vuc3VyZV9yZXNvbHZlZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIsIGZhbWlseT1mYW1pbHksIHR5cGU9c29ja2V0LlNPQ0tfREdSQU0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90bz1wcm90bywgZmxhZ3M9ZmxhZ3MsIGxvb3A9c2VsZikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluZm9zOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignZ2V0YWRkcmluZm8oKSByZXR1cm5lZCBlbXB0eSBsaXN0JykKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmYW0sIF8sIHBybywgXywgYWRkcmVzcyBpbiBpbmZvczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IChmYW0sIHBybykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleSBub3QgaW4gYWRkcl9pbmZvczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX2luZm9zW2tleV0gPSBbTm9uZSwgTm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfaW5mb3Nba2V5XVtpZHhdID0gYWRkcmVzcwoKICAgICAgICAgICAgICAgICMgZWFjaCBhZGRyIGhhcyB0byBoYXZlIGluZm8gZm9yIGVhY2ggKGZhbWlseSwgcHJvdG8pIHBhaXIKICAgICAgICAgICAgICAgIGFkZHJfcGFpcnNfaW5mbyA9IFsKICAgICAgICAgICAgICAgICAgICAoa2V5LCBhZGRyX3BhaXIpIGZvciBrZXksIGFkZHJfcGFpciBpbiBhZGRyX2luZm9zLml0ZW1zKCkKICAgICAgICAgICAgICAgICAgICBpZiBub3QgKChsb2NhbF9hZGRyIGFuZCBhZGRyX3BhaXJbMF0gaXMgTm9uZSkgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdGVfYWRkciBhbmQgYWRkcl9wYWlyWzFdIGlzIE5vbmUpKV0KCiAgICAgICAgICAgICAgICBpZiBub3QgYWRkcl9wYWlyc19pbmZvOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NhbiBub3QgZ2V0IGFkZHJlc3MgaW5mb3JtYXRpb24nKQoKICAgICAgICAgICAgZXhjZXB0aW9ucyA9IFtdCgogICAgICAgICAgICBmb3IgKChmYW1pbHksIHByb3RvKSwKICAgICAgICAgICAgICAgICAobG9jYWxfYWRkcmVzcywgcmVtb3RlX2FkZHJlc3MpKSBpbiBhZGRyX3BhaXJzX2luZm86CiAgICAgICAgICAgICAgICBzb2NrID0gTm9uZQogICAgICAgICAgICAgICAgcl9hZGRyID0gTm9uZQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KAogICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHk9ZmFtaWx5LCB0eXBlPXNvY2tldC5TT0NLX0RHUkFNLCBwcm90bz1wcm90bykKICAgICAgICAgICAgICAgICAgICBpZiByZXVzZV9wb3J0OgogICAgICAgICAgICAgICAgICAgICAgICBfc2V0X3JldXNlcG9ydChzb2NrKQogICAgICAgICAgICAgICAgICAgIGlmIGFsbG93X2Jyb2FkY2FzdDoKICAgICAgICAgICAgICAgICAgICAgICAgc29jay5zZXRzb2Nrb3B0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19CUk9BRENBU1QsIDEpCiAgICAgICAgICAgICAgICAgICAgc29jay5zZXRibG9ja2luZyhGYWxzZSkKCiAgICAgICAgICAgICAgICAgICAgaWYgbG9jYWxfYWRkcjoKICAgICAgICAgICAgICAgICAgICAgICAgc29jay5iaW5kKGxvY2FsX2FkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgaWYgcmVtb3RlX2FkZHI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhbGxvd19icm9hZGNhc3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBzZWxmLnNvY2tfY29ubmVjdChzb2NrLCByZW1vdGVfYWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgcl9hZGRyID0gcmVtb3RlX2FkZHJlc3MKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmFwcGVuZChleGMpCiAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgc29jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnNbMF0KCiAgICAgICAgcHJvdG9jb2wgPSBwcm90b2NvbF9mYWN0b3J5KCkKICAgICAgICB3YWl0ZXIgPSBzZWxmLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIHRyYW5zcG9ydCA9IHNlbGYuX21ha2VfZGF0YWdyYW1fdHJhbnNwb3J0KAogICAgICAgICAgICBzb2NrLCBwcm90b2NvbCwgcl9hZGRyLCB3YWl0ZXIpCiAgICAgICAgaWYgc2VsZi5fZGVidWc6CiAgICAgICAgICAgIGlmIGxvY2FsX2FkZHI6CiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiRGF0YWdyYW0gZW5kcG9pbnQgbG9jYWxfYWRkcj0lciByZW1vdGVfYWRkcj0lciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRlZDogKCVyLCAlcikiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfYWRkciwgcmVtb3RlX2FkZHIsIHRyYW5zcG9ydCwgcHJvdG9jb2wpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkRhdGFncmFtIGVuZHBvaW50IHJlbW90ZV9hZGRyPSVyIGNyZWF0ZWQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCVyLCAlcikiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9hZGRyLCB0cmFuc3BvcnQsIHByb3RvY29sKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF3YWl0IHdhaXRlcgogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgdHJhbnNwb3J0LmNsb3NlKCkKICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgcmV0dXJuIHRyYW5zcG9ydCwgcHJvdG9jb2wKCiAgICBhc3luYyBkZWYgX2Vuc3VyZV9yZXNvbHZlZChzZWxmLCBhZGRyZXNzLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5PTAsIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG89MCwgZmxhZ3M9MCwgbG9vcCk6CiAgICAgICAgaG9zdCwgcG9ydCA9IGFkZHJlc3NbOjJdCiAgICAgICAgaW5mbyA9IF9pcGFkZHJfaW5mbyhob3N0LCBwb3J0LCBmYW1pbHksIHR5cGUsIHByb3RvLCAqYWRkcmVzc1syOl0pCiAgICAgICAgaWYgaW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyAiaG9zdCIgaXMgYWxyZWFkeSBhIHJlc29sdmVkIElQLgogICAgICAgICAgICByZXR1cm4gW2luZm9dCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGxvb3AuZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgZmFtaWx5PWZhbWlseSwgdHlwZT10eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90bz1wcm90bywgZmxhZ3M9ZmxhZ3MpCgogICAgYXN5bmMgZGVmIF9jcmVhdGVfc2VydmVyX2dldGFkZHJpbmZvKHNlbGYsIGhvc3QsIHBvcnQsIGZhbWlseSwgZmxhZ3MpOgogICAgICAgIGluZm9zID0gYXdhaXQgc2VsZi5fZW5zdXJlX3Jlc29sdmVkKChob3N0LCBwb3J0KSwgZmFtaWx5PWZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1mbGFncywgbG9vcD1zZWxmKQogICAgICAgIGlmIG5vdCBpbmZvczoKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihmJ2dldGFkZHJpbmZvKHtob3N0IXJ9KSByZXR1cm5lZCBlbXB0eSBsaXN0JykKICAgICAgICByZXR1cm4gaW5mb3MKCiAgICBhc3luYyBkZWYgY3JlYXRlX3NlcnZlcigKICAgICAgICAgICAgc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgaG9zdD1Ob25lLCBwb3J0PU5vbmUsCiAgICAgICAgICAgICosCiAgICAgICAgICAgIGZhbWlseT1zb2NrZXQuQUZfVU5TUEVDLAogICAgICAgICAgICBmbGFncz1zb2NrZXQuQUlfUEFTU0lWRSwKICAgICAgICAgICAgc29jaz1Ob25lLAogICAgICAgICAgICBiYWNrbG9nPTEwMCwKICAgICAgICAgICAgc3NsPU5vbmUsCiAgICAgICAgICAgIHJldXNlX2FkZHJlc3M9Tm9uZSwKICAgICAgICAgICAgcmV1c2VfcG9ydD1Ob25lLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgc3RhcnRfc2VydmluZz1UcnVlKToKICAgICAgICAiIiJDcmVhdGUgYSBUQ1Agc2VydmVyLgoKICAgICAgICBUaGUgaG9zdCBwYXJhbWV0ZXIgY2FuIGJlIGEgc3RyaW5nLCBpbiB0aGF0IGNhc2UgdGhlIFRDUCBzZXJ2ZXIgaXMKICAgICAgICBib3VuZCB0byBob3N0IGFuZCBwb3J0LgoKICAgICAgICBUaGUgaG9zdCBwYXJhbWV0ZXIgY2FuIGFsc28gYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGFuZCBpbiB0aGF0IGNhc2UKICAgICAgICB0aGUgVENQIHNlcnZlciBpcyBib3VuZCB0byBhbGwgaG9zdHMgb2YgdGhlIHNlcXVlbmNlLiBJZiBhIGhvc3QKICAgICAgICBhcHBlYXJzIG11bHRpcGxlIHRpbWVzIChwb3NzaWJseSBpbmRpcmVjdGx5IGUuZy4gd2hlbiBob3N0bmFtZXMKICAgICAgICByZXNvbHZlIHRvIHRoZSBzYW1lIElQIGFkZHJlc3MpLCB0aGUgc2VydmVyIGlzIG9ubHkgYm91bmQgb25jZSB0byB0aGF0CiAgICAgICAgaG9zdC4KCiAgICAgICAgUmV0dXJuIGEgU2VydmVyIG9iamVjdCB3aGljaCBjYW4gYmUgdXNlZCB0byBzdG9wIHRoZSBzZXJ2aWNlLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBhIGNvcm91dGluZS4KICAgICAgICAiIiIKICAgICAgICBpZiBpc2luc3RhbmNlKHNzbCwgYm9vbCk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignc3NsIGFyZ3VtZW50IG11c3QgYmUgYW4gU1NMQ29udGV4dCBvciBOb25lJykKCiAgICAgICAgaWYgc3NsX2hhbmRzaGFrZV90aW1lb3V0IGlzIG5vdCBOb25lIGFuZCBzc2wgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICdzc2xfaGFuZHNoYWtlX3RpbWVvdXQgaXMgb25seSBtZWFuaW5nZnVsIHdpdGggc3NsJykKCiAgICAgICAgaWYgc3NsX3NodXRkb3duX3RpbWVvdXQgaXMgbm90IE5vbmUgYW5kIHNzbCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgJ3NzbF9zaHV0ZG93bl90aW1lb3V0IGlzIG9ubHkgbWVhbmluZ2Z1bCB3aXRoIHNzbCcpCgogICAgICAgIGlmIHNvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF9jaGVja19zc2xfc29ja2V0KHNvY2spCgogICAgICAgIGlmIGhvc3QgaXMgbm90IE5vbmUgb3IgcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgc29jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJ2hvc3QvcG9ydCBhbmQgc29jayBjYW4gbm90IGJlIHNwZWNpZmllZCBhdCB0aGUgc2FtZSB0aW1lJykKCiAgICAgICAgICAgIGlmIHJldXNlX2FkZHJlc3MgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJldXNlX2FkZHJlc3MgPSBvcy5uYW1lID09ICJwb3NpeCIgYW5kIHN5cy5wbGF0Zm9ybSAhPSAiY3lnd2luIgogICAgICAgICAgICBzb2NrZXRzID0gW10KICAgICAgICAgICAgaWYgaG9zdCA9PSAnJzoKICAgICAgICAgICAgICAgIGhvc3RzID0gW05vbmVdCiAgICAgICAgICAgIGVsaWYgKGlzaW5zdGFuY2UoaG9zdCwgc3RyKSBvcgogICAgICAgICAgICAgICAgICBub3QgaXNpbnN0YW5jZShob3N0LCBjb2xsZWN0aW9ucy5hYmMuSXRlcmFibGUpKToKICAgICAgICAgICAgICAgIGhvc3RzID0gW2hvc3RdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBob3N0cyA9IGhvc3QKCiAgICAgICAgICAgIGZzID0gW3NlbGYuX2NyZWF0ZV9zZXJ2ZXJfZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgZmFtaWx5PWZhbWlseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1mbGFncykKICAgICAgICAgICAgICAgICAgZm9yIGhvc3QgaW4gaG9zdHNdCiAgICAgICAgICAgIGluZm9zID0gYXdhaXQgdGFza3MuZ2F0aGVyKCpmcykKICAgICAgICAgICAgaW5mb3MgPSBzZXQoaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUoaW5mb3MpKQoKICAgICAgICAgICAgY29tcGxldGVkID0gRmFsc2UKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZm9yIHJlcyBpbiBpbmZvczoKICAgICAgICAgICAgICAgICAgICBhZiwgc29ja3R5cGUsIHByb3RvLCBjYW5vbm5hbWUsIHNhID0gcmVzCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChhZiwgc29ja3R5cGUsIHByb3RvKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICMgQXNzdW1lIGl0J3MgYSBiYWQgZmFtaWx5L3R5cGUvcHJvdG9jb2wgY29tYmluYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlYnVnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ2NyZWF0ZV9zZXJ2ZXIoKSBmYWlsZWQgdG8gY3JlYXRlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQuc29ja2V0KCVyLCAlciwgJXIpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmLCBzb2NrdHlwZSwgcHJvdG8sIGV4Y19pbmZvPVRydWUpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgc29ja2V0cy5hcHBlbmQoc29jaykKICAgICAgICAgICAgICAgICAgICBpZiByZXVzZV9hZGRyZXNzOgogICAgICAgICAgICAgICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgVHJ1ZSkKICAgICAgICAgICAgICAgICAgICBpZiByZXVzZV9wb3J0OgogICAgICAgICAgICAgICAgICAgICAgICBfc2V0X3JldXNlcG9ydChzb2NrKQogICAgICAgICAgICAgICAgICAgICMgRGlzYWJsZSBJUHY0L0lQdjYgZHVhbCBzdGFjayBzdXBwb3J0IChlbmFibGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgIyBkZWZhdWx0IG9uIExpbnV4KSB3aGljaCBtYWtlcyBhIHNpbmdsZSBzb2NrZXQKICAgICAgICAgICAgICAgICAgICAjIGxpc3RlbiBvbiBib3RoIGFkZHJlc3MgZmFtaWxpZXMuCiAgICAgICAgICAgICAgICAgICAgaWYgKF9IQVNfSVB2NiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmID09IHNvY2tldC5BRl9JTkVUNiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoc29ja2V0LCAnSVBQUk9UT19JUFY2JykpOgogICAgICAgICAgICAgICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1Y2T05MWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBzb2NrLmJpbmQoc2EpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVyci5lcnJubywgJ2Vycm9yIHdoaWxlIGF0dGVtcHRpbmcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBiaW5kIG9uIGFkZHJlc3MgJXI6ICVzJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNhLCBlcnIuc3RyZXJyb3IubG93ZXIoKSkpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgY29tcGxldGVkID0gVHJ1ZQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgaWYgbm90IGNvbXBsZXRlZDoKICAgICAgICAgICAgICAgICAgICBmb3Igc29jayBpbiBzb2NrZXRzOgogICAgICAgICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdOZWl0aGVyIGhvc3QvcG9ydCBub3Igc29jayB3ZXJlIHNwZWNpZmllZCcpCiAgICAgICAgICAgIGlmIHNvY2sudHlwZSAhPSBzb2NrZXQuU09DS19TVFJFQU06CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnQSBTdHJlYW0gU29ja2V0IHdhcyBleHBlY3RlZCwgZ290IHtzb2NrIXJ9JykKICAgICAgICAgICAgc29ja2V0cyA9IFtzb2NrXQoKICAgICAgICBmb3Igc29jayBpbiBzb2NrZXRzOgogICAgICAgICAgICBzb2NrLnNldGJsb2NraW5nKEZhbHNlKQoKICAgICAgICBzZXJ2ZXIgPSBTZXJ2ZXIoc2VsZiwgc29ja2V0cywgcHJvdG9jb2xfZmFjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgc3NsLCBiYWNrbG9nLCBzc2xfaGFuZHNoYWtlX3RpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9zaHV0ZG93bl90aW1lb3V0KQogICAgICAgIGlmIHN0YXJ0X3NlcnZpbmc6CiAgICAgICAgICAgIHNlcnZlci5fc3RhcnRfc2VydmluZygpCiAgICAgICAgICAgICMgU2tpcCBvbmUgbG9vcCBpdGVyYXRpb24gc28gdGhhdCBhbGwgJ2xvb3AuYWRkX3JlYWRlcicKICAgICAgICAgICAgIyBnbyB0aHJvdWdoLgogICAgICAgICAgICBhd2FpdCB0YXNrcy5zbGVlcCgwKQoKICAgICAgICBpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgbG9nZ2VyLmluZm8oIiVyIGlzIHNlcnZpbmciLCBzZXJ2ZXIpCiAgICAgICAgcmV0dXJuIHNlcnZlcgoKICAgIGFzeW5jIGRlZiBjb25uZWN0X2FjY2VwdGVkX3NvY2tldCgKICAgICAgICAgICAgc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgc29jaywKICAgICAgICAgICAgKiwgc3NsPU5vbmUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lKToKICAgICAgICBpZiBzb2NrLnR5cGUgIT0gc29ja2V0LlNPQ0tfU1RSRUFNOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnQSBTdHJlYW0gU29ja2V0IHdhcyBleHBlY3RlZCwgZ290IHtzb2NrIXJ9JykKCiAgICAgICAgaWYgc3NsX2hhbmRzaGFrZV90aW1lb3V0IGlzIG5vdCBOb25lIGFuZCBub3Qgc3NsOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgJ3NzbF9oYW5kc2hha2VfdGltZW91dCBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCBzc2wnKQoKICAgICAgICBpZiBzc2xfc2h1dGRvd25fdGltZW91dCBpcyBub3QgTm9uZSBhbmQgbm90IHNzbDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICdzc2xfc2h1dGRvd25fdGltZW91dCBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCBzc2wnKQoKICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfY2hlY2tfc3NsX3NvY2tldChzb2NrKQoKICAgICAgICB0cmFuc3BvcnQsIHByb3RvY29sID0gYXdhaXQgc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb25fdHJhbnNwb3J0KAogICAgICAgICAgICBzb2NrLCBwcm90b2NvbF9mYWN0b3J5LCBzc2wsICcnLCBzZXJ2ZXJfc2lkZT1UcnVlLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9c3NsX2hhbmRzaGFrZV90aW1lb3V0LAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1zc2xfc2h1dGRvd25fdGltZW91dCkKICAgICAgICBpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgIyBHZXQgdGhlIHNvY2tldCBmcm9tIHRoZSB0cmFuc3BvcnQgYmVjYXVzZSBTU0wgdHJhbnNwb3J0IGNsb3NlcwogICAgICAgICAgICAjIHRoZSBvbGQgc29ja2V0IGFuZCBjcmVhdGVzIGEgbmV3IFNTTCBzb2NrZXQKICAgICAgICAgICAgc29jayA9IHRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbygnc29ja2V0JykKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlciBoYW5kbGVkOiAoJXIsICVyKSIsIHNvY2ssIHRyYW5zcG9ydCwgcHJvdG9jb2wpCiAgICAgICAgcmV0dXJuIHRyYW5zcG9ydCwgcHJvdG9jb2wKCiAgICBhc3luYyBkZWYgY29ubmVjdF9yZWFkX3BpcGUoc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgcGlwZSk6CiAgICAgICAgcHJvdG9jb2wgPSBwcm90b2NvbF9mYWN0b3J5KCkKICAgICAgICB3YWl0ZXIgPSBzZWxmLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIHRyYW5zcG9ydCA9IHNlbGYuX21ha2VfcmVhZF9waXBlX3RyYW5zcG9ydChwaXBlLCBwcm90b2NvbCwgd2FpdGVyKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF3YWl0IHdhaXRlcgogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgdHJhbnNwb3J0LmNsb3NlKCkKICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgaWYgc2VsZi5fZGVidWc6CiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnUmVhZCBwaXBlICVyIGNvbm5lY3RlZDogKCVyLCAlciknLAogICAgICAgICAgICAgICAgICAgICAgICAgcGlwZS5maWxlbm8oKSwgdHJhbnNwb3J0LCBwcm90b2NvbCkKICAgICAgICByZXR1cm4gdHJhbnNwb3J0LCBwcm90b2NvbAoKICAgIGFzeW5jIGRlZiBjb25uZWN0X3dyaXRlX3BpcGUoc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgcGlwZSk6CiAgICAgICAgcHJvdG9jb2wgPSBwcm90b2NvbF9mYWN0b3J5KCkKICAgICAgICB3YWl0ZXIgPSBzZWxmLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIHRyYW5zcG9ydCA9IHNlbGYuX21ha2Vfd3JpdGVfcGlwZV90cmFuc3BvcnQocGlwZSwgcHJvdG9jb2wsIHdhaXRlcikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhd2FpdCB3YWl0ZXIKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHRyYW5zcG9ydC5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlCgogICAgICAgIGlmIHNlbGYuX2RlYnVnOgogICAgICAgICAgICBsb2dnZXIuZGVidWcoJ1dyaXRlIHBpcGUgJXIgY29ubmVjdGVkOiAoJXIsICVyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlLmZpbGVubygpLCB0cmFuc3BvcnQsIHByb3RvY29sKQogICAgICAgIHJldHVybiB0cmFuc3BvcnQsIHByb3RvY29sCgogICAgZGVmIF9sb2dfc3VicHJvY2VzcyhzZWxmLCBtc2csIHN0ZGluLCBzdGRvdXQsIHN0ZGVycik6CiAgICAgICAgaW5mbyA9IFttc2ddCiAgICAgICAgaWYgc3RkaW4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnc3RkaW49e19mb3JtYXRfcGlwZShzdGRpbil9JykKICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmUgYW5kIHN0ZGVyciA9PSBzdWJwcm9jZXNzLlNURE9VVDoKICAgICAgICAgICAgaW5mby5hcHBlbmQoZidzdGRvdXQ9c3RkZXJyPXtfZm9ybWF0X3BpcGUoc3Rkb3V0KX0nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnc3Rkb3V0PXtfZm9ybWF0X3BpcGUoc3Rkb3V0KX0nKQogICAgICAgICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBpbmZvLmFwcGVuZChmJ3N0ZGVycj17X2Zvcm1hdF9waXBlKHN0ZGVycil9JykKICAgICAgICBsb2dnZXIuZGVidWcoJyAnLmpvaW4oaW5mbykpCgogICAgYXN5bmMgZGVmIHN1YnByb2Nlc3Nfc2hlbGwoc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgY21kLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLCBidWZzaXplPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgdGV4dD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNtZCwgKGJ5dGVzLCBzdHIpKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY21kIG11c3QgYmUgYSBzdHJpbmciKQogICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5pdmVyc2FsX25ld2xpbmVzIG11c3QgYmUgRmFsc2UiKQogICAgICAgIGlmIG5vdCBzaGVsbDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2hlbGwgbXVzdCBiZSBUcnVlIikKICAgICAgICBpZiBidWZzaXplICE9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ1ZnNpemUgbXVzdCBiZSAwIikKICAgICAgICBpZiB0ZXh0OgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0ZXh0IG11c3QgYmUgRmFsc2UiKQogICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIE5vbmUiKQogICAgICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZXJyb3JzIG11c3QgYmUgTm9uZSIpCgogICAgICAgIHByb3RvY29sID0gcHJvdG9jb2xfZmFjdG9yeSgpCiAgICAgICAgZGVidWdfbG9nID0gTm9uZQogICAgICAgIGlmIHNlbGYuX2RlYnVnOgogICAgICAgICAgICAjIGRvbid0IGxvZyBwYXJhbWV0ZXJzOiB0aGV5IG1heSBjb250YWluIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAjIChwYXNzd29yZCkgYW5kIG1heSBiZSB0b28gbG9uZwogICAgICAgICAgICBkZWJ1Z19sb2cgPSAncnVuIHNoZWxsIGNvbW1hbmQgJXInICUgY21kCiAgICAgICAgICAgIHNlbGYuX2xvZ19zdWJwcm9jZXNzKGRlYnVnX2xvZywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQogICAgICAgIHRyYW5zcG9ydCA9IGF3YWl0IHNlbGYuX21ha2Vfc3VicHJvY2Vzc190cmFuc3BvcnQoCiAgICAgICAgICAgIHByb3RvY29sLCBjbWQsIFRydWUsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgYnVmc2l6ZSwgKiprd2FyZ3MpCiAgICAgICAgaWYgc2VsZi5fZGVidWcgYW5kIGRlYnVnX2xvZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgbG9nZ2VyLmluZm8oJyVzOiAlcicsIGRlYnVnX2xvZywgdHJhbnNwb3J0KQogICAgICAgIHJldHVybiB0cmFuc3BvcnQsIHByb3RvY29sCgogICAgYXN5bmMgZGVmIHN1YnByb2Nlc3NfZXhlYyhzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBwcm9ncmFtLCAqYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCBidWZzaXplPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCB0ZXh0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuaXZlcnNhbF9uZXdsaW5lcyBtdXN0IGJlIEZhbHNlIikKICAgICAgICBpZiBzaGVsbDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2hlbGwgbXVzdCBiZSBGYWxzZSIpCiAgICAgICAgaWYgYnVmc2l6ZSAhPSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJidWZzaXplIG11c3QgYmUgMCIpCiAgICAgICAgaWYgdGV4dDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidGV4dCBtdXN0IGJlIEZhbHNlIikKICAgICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBOb25lIikKICAgICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImVycm9ycyBtdXN0IGJlIE5vbmUiKQoKICAgICAgICBwb3Blbl9hcmdzID0gKHByb2dyYW0sKSArIGFyZ3MKICAgICAgICBwcm90b2NvbCA9IHByb3RvY29sX2ZhY3RvcnkoKQogICAgICAgIGRlYnVnX2xvZyA9IE5vbmUKICAgICAgICBpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgIyBkb24ndCBsb2cgcGFyYW1ldGVyczogdGhleSBtYXkgY29udGFpbiBzZW5zaXRpdmUgaW5mb3JtYXRpb24KICAgICAgICAgICAgIyAocGFzc3dvcmQpIGFuZCBtYXkgYmUgdG9vIGxvbmcKICAgICAgICAgICAgZGVidWdfbG9nID0gZidleGVjdXRlIHByb2dyYW0ge3Byb2dyYW0hcn0nCiAgICAgICAgICAgIHNlbGYuX2xvZ19zdWJwcm9jZXNzKGRlYnVnX2xvZywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQogICAgICAgIHRyYW5zcG9ydCA9IGF3YWl0IHNlbGYuX21ha2Vfc3VicHJvY2Vzc190cmFuc3BvcnQoCiAgICAgICAgICAgIHByb3RvY29sLCBwb3Blbl9hcmdzLCBGYWxzZSwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLAogICAgICAgICAgICBidWZzaXplLCAqKmt3YXJncykKICAgICAgICBpZiBzZWxmLl9kZWJ1ZyBhbmQgZGVidWdfbG9nIGlzIG5vdCBOb25lOgogICAgICAgICAgICBsb2dnZXIuaW5mbygnJXM6ICVyJywgZGVidWdfbG9nLCB0cmFuc3BvcnQpCiAgICAgICAgcmV0dXJuIHRyYW5zcG9ydCwgcHJvdG9jb2wKCiAgICBkZWYgZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhbiBleGNlcHRpb24gaGFuZGxlciwgb3IgTm9uZSBpZiB0aGUgZGVmYXVsdCBvbmUgaXMgaW4gdXNlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb25faGFuZGxlcgoKICAgIGRlZiBzZXRfZXhjZXB0aW9uX2hhbmRsZXIoc2VsZiwgaGFuZGxlcik6CiAgICAgICAgIiIiU2V0IGhhbmRsZXIgYXMgdGhlIG5ldyBldmVudCBsb29wIGV4Y2VwdGlvbiBoYW5kbGVyLgoKICAgICAgICBJZiBoYW5kbGVyIGlzIE5vbmUsIHRoZSBkZWZhdWx0IGV4Y2VwdGlvbiBoYW5kbGVyIHdpbGwKICAgICAgICBiZSBzZXQuCgogICAgICAgIElmIGhhbmRsZXIgaXMgYSBjYWxsYWJsZSBvYmplY3QsIGl0IHNob3VsZCBoYXZlIGEKICAgICAgICBzaWduYXR1cmUgbWF0Y2hpbmcgJyhsb29wLCBjb250ZXh0KScsIHdoZXJlICdsb29wJwogICAgICAgIHdpbGwgYmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSBldmVudCBsb29wLCAnY29udGV4dCcKICAgICAgICB3aWxsIGJlIGEgZGljdCBvYmplY3QgKHNlZSBgY2FsbF9leGNlcHRpb25faGFuZGxlcigpYAogICAgICAgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMgYWJvdXQgY29udGV4dCkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgaGFuZGxlciBpcyBub3QgTm9uZSBhbmQgbm90IGNhbGxhYmxlKGhhbmRsZXIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidBIGNhbGxhYmxlIG9iamVjdCBvciBOb25lIGlzIGV4cGVjdGVkLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJ2dvdCB7aGFuZGxlciFyfScpCiAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2hhbmRsZXIgPSBoYW5kbGVyCgogICAgZGVmIGRlZmF1bHRfZXhjZXB0aW9uX2hhbmRsZXIoc2VsZiwgY29udGV4dCk6CiAgICAgICAgIiIiRGVmYXVsdCBleGNlcHRpb24gaGFuZGxlci4KCiAgICAgICAgVGhpcyBpcyBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGFuZCBubyBleGNlcHRpb24KICAgICAgICBoYW5kbGVyIGlzIHNldCwgYW5kIGNhbiBiZSBjYWxsZWQgYnkgYSBjdXN0b20gZXhjZXB0aW9uCiAgICAgICAgaGFuZGxlciB0aGF0IHdhbnRzIHRvIGRlZmVyIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgoKICAgICAgICBUaGlzIGRlZmF1bHQgaGFuZGxlciBsb2dzIHRoZSBlcnJvciBtZXNzYWdlIGFuZCBvdGhlcgogICAgICAgIGNvbnRleHQtZGVwZW5kZW50IGluZm9ybWF0aW9uLiAgSW4gZGVidWcgbW9kZSwgYSB0cnVuY2F0ZWQKICAgICAgICBzdGFjayB0cmFjZSBpcyBhbHNvIGFwcGVuZGVkIHNob3dpbmcgd2hlcmUgdGhlIGdpdmVuIG9iamVjdAogICAgICAgIChlLmcuIGEgaGFuZGxlIG9yIGZ1dHVyZSBvciB0YXNrKSB3YXMgY3JlYXRlZCwgaWYgYW55LgoKICAgICAgICBUaGUgY29udGV4dCBwYXJhbWV0ZXIgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4KICAgICAgICBgY2FsbF9leGNlcHRpb25faGFuZGxlcigpYC4KICAgICAgICAiIiIKICAgICAgICBtZXNzYWdlID0gY29udGV4dC5nZXQoJ21lc3NhZ2UnKQogICAgICAgIGlmIG5vdCBtZXNzYWdlOgogICAgICAgICAgICBtZXNzYWdlID0gJ1VuaGFuZGxlZCBleGNlcHRpb24gaW4gZXZlbnQgbG9vcCcKCiAgICAgICAgZXhjZXB0aW9uID0gY29udGV4dC5nZXQoJ2V4Y2VwdGlvbicpCiAgICAgICAgaWYgZXhjZXB0aW9uIGlzIG5vdCBOb25lOgogICAgICAgICAgICBleGNfaW5mbyA9ICh0eXBlKGV4Y2VwdGlvbiksIGV4Y2VwdGlvbiwgZXhjZXB0aW9uLl9fdHJhY2ViYWNrX18pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZXhjX2luZm8gPSBGYWxzZQoKICAgICAgICBpZiAoJ3NvdXJjZV90cmFjZWJhY2snIG5vdCBpbiBjb250ZXh0IGFuZAogICAgICAgICAgICAgICAgc2VsZi5fY3VycmVudF9oYW5kbGUgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X2hhbmRsZS5fc291cmNlX3RyYWNlYmFjayk6CiAgICAgICAgICAgIGNvbnRleHRbJ2hhbmRsZV90cmFjZWJhY2snXSA9IFwKICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfaGFuZGxlLl9zb3VyY2VfdHJhY2ViYWNrCgogICAgICAgIGxvZ19saW5lcyA9IFttZXNzYWdlXQogICAgICAgIGZvciBrZXkgaW4gc29ydGVkKGNvbnRleHQpOgogICAgICAgICAgICBpZiBrZXkgaW4geydtZXNzYWdlJywgJ2V4Y2VwdGlvbid9OgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgdmFsdWUgPSBjb250ZXh0W2tleV0KICAgICAgICAgICAgaWYga2V5ID09ICdzb3VyY2VfdHJhY2ViYWNrJzoKICAgICAgICAgICAgICAgIHRiID0gJycuam9pbih0cmFjZWJhY2suZm9ybWF0X2xpc3QodmFsdWUpKQogICAgICAgICAgICAgICAgdmFsdWUgPSAnT2JqZWN0IGNyZWF0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCiAgICAgICAgICAgICAgICB2YWx1ZSArPSB0Yi5yc3RyaXAoKQogICAgICAgICAgICBlbGlmIGtleSA9PSAnaGFuZGxlX3RyYWNlYmFjayc6CiAgICAgICAgICAgICAgICB0YiA9ICcnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9saXN0KHZhbHVlKSkKICAgICAgICAgICAgICAgIHZhbHVlID0gJ0hhbmRsZSBjcmVhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJwogICAgICAgICAgICAgICAgdmFsdWUgKz0gdGIucnN0cmlwKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHZhbHVlID0gcmVwcih2YWx1ZSkKICAgICAgICAgICAgbG9nX2xpbmVzLmFwcGVuZChmJ3trZXl9OiB7dmFsdWV9JykKCiAgICAgICAgbG9nZ2VyLmVycm9yKCdcbicuam9pbihsb2dfbGluZXMpLCBleGNfaW5mbz1leGNfaW5mbykKCiAgICBkZWYgY2FsbF9leGNlcHRpb25faGFuZGxlcihzZWxmLCBjb250ZXh0KToKICAgICAgICAiIiJDYWxsIHRoZSBjdXJyZW50IGV2ZW50IGxvb3AncyBleGNlcHRpb24gaGFuZGxlci4KCiAgICAgICAgVGhlIGNvbnRleHQgYXJndW1lbnQgaXMgYSBkaWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBrZXlzOgoKICAgICAgICAtICdtZXNzYWdlJzogRXJyb3IgbWVzc2FnZTsKICAgICAgICAtICdleGNlcHRpb24nIChvcHRpb25hbCk6IEV4Y2VwdGlvbiBvYmplY3Q7CiAgICAgICAgLSAnZnV0dXJlJyAob3B0aW9uYWwpOiBGdXR1cmUgaW5zdGFuY2U7CiAgICAgICAgLSAndGFzaycgKG9wdGlvbmFsKTogVGFzayBpbnN0YW5jZTsKICAgICAgICAtICdoYW5kbGUnIChvcHRpb25hbCk6IEhhbmRsZSBpbnN0YW5jZTsKICAgICAgICAtICdwcm90b2NvbCcgKG9wdGlvbmFsKTogUHJvdG9jb2wgaW5zdGFuY2U7CiAgICAgICAgLSAndHJhbnNwb3J0JyAob3B0aW9uYWwpOiBUcmFuc3BvcnQgaW5zdGFuY2U7CiAgICAgICAgLSAnc29ja2V0JyAob3B0aW9uYWwpOiBTb2NrZXQgaW5zdGFuY2U7CiAgICAgICAgLSAnYXN5bmNnZW4nIChvcHRpb25hbCk6IEFzeW5jaHJvbm91cyBnZW5lcmF0b3IgdGhhdCBjYXVzZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGV4Y2VwdGlvbi4KCiAgICAgICAgTmV3IGtleXMgbWF5YmUgaW50cm9kdWNlZCBpbiB0aGUgZnV0dXJlLgoKICAgICAgICBOb3RlOiBkbyBub3Qgb3ZlcmxvYWQgdGhpcyBtZXRob2QgaW4gYW4gZXZlbnQgbG9vcCBzdWJjbGFzcy4KICAgICAgICBGb3IgY3VzdG9tIGV4Y2VwdGlvbiBoYW5kbGluZywgdXNlIHRoZQogICAgICAgIGBzZXRfZXhjZXB0aW9uX2hhbmRsZXIoKWAgbWV0aG9kLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX2V4Y2VwdGlvbl9oYW5kbGVyIGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuZGVmYXVsdF9leGNlcHRpb25faGFuZGxlcihjb250ZXh0KQogICAgICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIyBTZWNvbmQgcHJvdGVjdGlvbiBsYXllciBmb3IgdW5leHBlY3RlZCBlcnJvcnMKICAgICAgICAgICAgICAgICMgaW4gdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIGFzIHdlbGwgYXMgZm9yIHN1YmNsYXNzZWQKICAgICAgICAgICAgICAgICMgZXZlbnQgbG9vcHMgd2l0aCBvdmVybG9hZGVkICJkZWZhdWx0X2V4Y2VwdGlvbl9oYW5kbGVyIi4KICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignRXhjZXB0aW9uIGluIGRlZmF1bHQgZXhjZXB0aW9uIGhhbmRsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvPVRydWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2hhbmRsZXIoc2VsZiwgY29udGV4dCkKICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICAjIEV4Y2VwdGlvbiBpbiB0aGUgdXNlciBzZXQgY3VzdG9tIGV4Y2VwdGlvbiBoYW5kbGVyLgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICMgTGV0J3MgdHJ5IGRlZmF1bHQgaGFuZGxlci4KICAgICAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHRfZXhjZXB0aW9uX2hhbmRsZXIoewogICAgICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6ICdVbmhhbmRsZWQgZXJyb3IgaW4gZXhjZXB0aW9uIGhhbmRsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCc6IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAjIEd1YXJkICdkZWZhdWx0X2V4Y2VwdGlvbl9oYW5kbGVyJyBpbiBjYXNlIGl0IGlzCiAgICAgICAgICAgICAgICAgICAgIyBvdmVybG9hZGVkLgogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignRXhjZXB0aW9uIGluIGRlZmF1bHQgZXhjZXB0aW9uIGhhbmRsZXIgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2hpbGUgaGFuZGxpbmcgYW4gdW5leHBlY3RlZCBlcnJvciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbiBjdXN0b20gZXhjZXB0aW9uIGhhbmRsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfaW5mbz1UcnVlKQoKICAgIGRlZiBfYWRkX2NhbGxiYWNrKHNlbGYsIGhhbmRsZSk6CiAgICAgICAgIiIiQWRkIGEgSGFuZGxlIHRvIF9yZWFkeS4iIiIKICAgICAgICBpZiBub3QgaGFuZGxlLl9jYW5jZWxsZWQ6CiAgICAgICAgICAgIHNlbGYuX3JlYWR5LmFwcGVuZChoYW5kbGUpCgogICAgZGVmIF9hZGRfY2FsbGJhY2tfc2lnbmFsc2FmZShzZWxmLCBoYW5kbGUpOgogICAgICAgICIiIkxpa2UgX2FkZF9jYWxsYmFjaygpIGJ1dCBjYWxsZWQgZnJvbSBhIHNpZ25hbCBoYW5kbGVyLiIiIgogICAgICAgIHNlbGYuX2FkZF9jYWxsYmFjayhoYW5kbGUpCiAgICAgICAgc2VsZi5fd3JpdGVfdG9fc2VsZigpCgogICAgZGVmIF90aW1lcl9oYW5kbGVfY2FuY2VsbGVkKHNlbGYsIGhhbmRsZSk6CiAgICAgICAgIiIiTm90aWZpY2F0aW9uIHRoYXQgYSBUaW1lckhhbmRsZSBoYXMgYmVlbiBjYW5jZWxsZWQuIiIiCiAgICAgICAgaWYgaGFuZGxlLl9zY2hlZHVsZWQ6CiAgICAgICAgICAgIHNlbGYuX3RpbWVyX2NhbmNlbGxlZF9jb3VudCArPSAxCgogICAgZGVmIF9ydW5fb25jZShzZWxmKToKICAgICAgICAiIiJSdW4gb25lIGZ1bGwgaXRlcmF0aW9uIG9mIHRoZSBldmVudCBsb29wLgoKICAgICAgICBUaGlzIGNhbGxzIGFsbCBjdXJyZW50bHkgcmVhZHkgY2FsbGJhY2tzLCBwb2xscyBmb3IgSS9PLAogICAgICAgIHNjaGVkdWxlcyB0aGUgcmVzdWx0aW5nIGNhbGxiYWNrcywgYW5kIGZpbmFsbHkgc2NoZWR1bGVzCiAgICAgICAgJ2NhbGxfbGF0ZXInIGNhbGxiYWNrcy4KICAgICAgICAiIiIKCiAgICAgICAgc2NoZWRfY291bnQgPSBsZW4oc2VsZi5fc2NoZWR1bGVkKQogICAgICAgIGlmIChzY2hlZF9jb3VudCA+IF9NSU5fU0NIRURVTEVEX1RJTUVSX0hBTkRMRVMgYW5kCiAgICAgICAgICAgIHNlbGYuX3RpbWVyX2NhbmNlbGxlZF9jb3VudCAvIHNjaGVkX2NvdW50ID4KICAgICAgICAgICAgICAgIF9NSU5fQ0FOQ0VMTEVEX1RJTUVSX0hBTkRMRVNfRlJBQ1RJT04pOgogICAgICAgICAgICAjIFJlbW92ZSBkZWxheWVkIGNhbGxzIHRoYXQgd2VyZSBjYW5jZWxsZWQgaWYgdGhlaXIgbnVtYmVyCiAgICAgICAgICAgICMgaXMgdG9vIGhpZ2gKICAgICAgICAgICAgbmV3X3NjaGVkdWxlZCA9IFtdCiAgICAgICAgICAgIGZvciBoYW5kbGUgaW4gc2VsZi5fc2NoZWR1bGVkOgogICAgICAgICAgICAgICAgaWYgaGFuZGxlLl9jYW5jZWxsZWQ6CiAgICAgICAgICAgICAgICAgICAgaGFuZGxlLl9zY2hlZHVsZWQgPSBGYWxzZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBuZXdfc2NoZWR1bGVkLmFwcGVuZChoYW5kbGUpCgogICAgICAgICAgICBoZWFwcS5oZWFwaWZ5KG5ld19zY2hlZHVsZWQpCiAgICAgICAgICAgIHNlbGYuX3NjaGVkdWxlZCA9IG5ld19zY2hlZHVsZWQKICAgICAgICAgICAgc2VsZi5fdGltZXJfY2FuY2VsbGVkX2NvdW50ID0gMAogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgUmVtb3ZlIGRlbGF5ZWQgY2FsbHMgdGhhdCB3ZXJlIGNhbmNlbGxlZCBmcm9tIGhlYWQgb2YgcXVldWUuCiAgICAgICAgICAgIHdoaWxlIHNlbGYuX3NjaGVkdWxlZCBhbmQgc2VsZi5fc2NoZWR1bGVkWzBdLl9jYW5jZWxsZWQ6CiAgICAgICAgICAgICAgICBzZWxmLl90aW1lcl9jYW5jZWxsZWRfY291bnQgLT0gMQogICAgICAgICAgICAgICAgaGFuZGxlID0gaGVhcHEuaGVhcHBvcChzZWxmLl9zY2hlZHVsZWQpCiAgICAgICAgICAgICAgICBoYW5kbGUuX3NjaGVkdWxlZCA9IEZhbHNlCgogICAgICAgIHRpbWVvdXQgPSBOb25lCiAgICAgICAgaWYgc2VsZi5fcmVhZHkgb3Igc2VsZi5fc3RvcHBpbmc6CiAgICAgICAgICAgIHRpbWVvdXQgPSAwCiAgICAgICAgZWxpZiBzZWxmLl9zY2hlZHVsZWQ6CiAgICAgICAgICAgICMgQ29tcHV0ZSB0aGUgZGVzaXJlZCB0aW1lb3V0LgogICAgICAgICAgICB3aGVuID0gc2VsZi5fc2NoZWR1bGVkWzBdLl93aGVuCiAgICAgICAgICAgIHRpbWVvdXQgPSBtaW4obWF4KDAsIHdoZW4gLSBzZWxmLnRpbWUoKSksIE1BWElNVU1fU0VMRUNUX1RJTUVPVVQpCgogICAgICAgIGV2ZW50X2xpc3QgPSBzZWxmLl9zZWxlY3Rvci5zZWxlY3QodGltZW91dCkKICAgICAgICBzZWxmLl9wcm9jZXNzX2V2ZW50cyhldmVudF9saXN0KQogICAgICAgICMgTmVlZGVkIHRvIGJyZWFrIGN5Y2xlcyB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuCiAgICAgICAgZXZlbnRfbGlzdCA9IE5vbmUKCiAgICAgICAgIyBIYW5kbGUgJ2xhdGVyJyBjYWxsYmFja3MgdGhhdCBhcmUgcmVhZHkuCiAgICAgICAgZW5kX3RpbWUgPSBzZWxmLnRpbWUoKSArIHNlbGYuX2Nsb2NrX3Jlc29sdXRpb24KICAgICAgICB3aGlsZSBzZWxmLl9zY2hlZHVsZWQ6CiAgICAgICAgICAgIGhhbmRsZSA9IHNlbGYuX3NjaGVkdWxlZFswXQogICAgICAgICAgICBpZiBoYW5kbGUuX3doZW4gPj0gZW5kX3RpbWU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBoYW5kbGUgPSBoZWFwcS5oZWFwcG9wKHNlbGYuX3NjaGVkdWxlZCkKICAgICAgICAgICAgaGFuZGxlLl9zY2hlZHVsZWQgPSBGYWxzZQogICAgICAgICAgICBzZWxmLl9yZWFkeS5hcHBlbmQoaGFuZGxlKQoKICAgICAgICAjIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2Ugd2hlcmUgY2FsbGJhY2tzIGFyZSBhY3R1YWxseSAqY2FsbGVkKi4KICAgICAgICAjIEFsbCBvdGhlciBwbGFjZXMganVzdCBhZGQgdGhlbSB0byByZWFkeS4KICAgICAgICAjIE5vdGU6IFdlIHJ1biBhbGwgY3VycmVudGx5IHNjaGVkdWxlZCBjYWxsYmFja3MsIGJ1dCBub3QgYW55CiAgICAgICAgIyBjYWxsYmFja3Mgc2NoZWR1bGVkIGJ5IGNhbGxiYWNrcyBydW4gdGhpcyB0aW1lIGFyb3VuZCAtLQogICAgICAgICMgdGhleSB3aWxsIGJlIHJ1biB0aGUgbmV4dCB0aW1lIChhZnRlciBhbm90aGVyIEkvTyBwb2xsKS4KICAgICAgICAjIFVzZSBhbiBpZGlvbSB0aGF0IGlzIHRocmVhZC1zYWZlIHdpdGhvdXQgdXNpbmcgbG9ja3MuCiAgICAgICAgbnRvZG8gPSBsZW4oc2VsZi5fcmVhZHkpCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnRvZG8pOgogICAgICAgICAgICBoYW5kbGUgPSBzZWxmLl9yZWFkeS5wb3BsZWZ0KCkKICAgICAgICAgICAgaWYgaGFuZGxlLl9jYW5jZWxsZWQ6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X2hhbmRsZSA9IGhhbmRsZQogICAgICAgICAgICAgICAgICAgIHQwID0gc2VsZi50aW1lKCkKICAgICAgICAgICAgICAgICAgICBoYW5kbGUuX3J1bigpCiAgICAgICAgICAgICAgICAgICAgZHQgPSBzZWxmLnRpbWUoKSAtIHQwCiAgICAgICAgICAgICAgICAgICAgaWYgZHQgPj0gc2VsZi5zbG93X2NhbGxiYWNrX2R1cmF0aW9uOgogICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnRXhlY3V0aW5nICVzIHRvb2sgJS4zZiBzZWNvbmRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Zvcm1hdF9oYW5kbGUoaGFuZGxlKSwgZHQpCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfaGFuZGxlID0gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaGFuZGxlLl9ydW4oKQogICAgICAgIGhhbmRsZSA9IE5vbmUgICMgTmVlZGVkIHRvIGJyZWFrIGN5Y2xlcyB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuCgogICAgZGVmIF9zZXRfY29yb3V0aW5lX29yaWdpbl90cmFja2luZyhzZWxmLCBlbmFibGVkKToKICAgICAgICBpZiBib29sKGVuYWJsZWQpID09IGJvb2woc2VsZi5fY29yb3V0aW5lX29yaWdpbl90cmFja2luZ19lbmFibGVkKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIGVuYWJsZWQ6CiAgICAgICAgICAgIHNlbGYuX2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmdfc2F2ZWRfZGVwdGggPSAoCiAgICAgICAgICAgICAgICBzeXMuZ2V0X2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmdfZGVwdGgoKSkKICAgICAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfb3JpZ2luX3RyYWNraW5nX2RlcHRoKAogICAgICAgICAgICAgICAgY29uc3RhbnRzLkRFQlVHX1NUQUNLX0RFUFRIKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN5cy5zZXRfY29yb3V0aW5lX29yaWdpbl90cmFja2luZ19kZXB0aCgKICAgICAgICAgICAgICAgIHNlbGYuX2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmdfc2F2ZWRfZGVwdGgpCgogICAgICAgIHNlbGYuX2Nvcm91dGluZV9vcmlnaW5fdHJhY2tpbmdfZW5hYmxlZCA9IGVuYWJsZWQKCiAgICBkZWYgZ2V0X2RlYnVnKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9kZWJ1ZwoKICAgIGRlZiBzZXRfZGVidWcoc2VsZiwgZW5hYmxlZCk6CiAgICAgICAgc2VsZi5fZGVidWcgPSBlbmFibGVkCgogICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgogICAgICAgICAgICBzZWxmLmNhbGxfc29vbl90aHJlYWRzYWZlKHNlbGYuX3NldF9jb3JvdXRpbmVfb3JpZ2luX3RyYWNraW5nLCBlbmFibGVkKQpQSwMEFAAAAAAAAiCjVso5zSLUBwAA1AcAABcAAABhc3luY2lvL2Jhc2VfZnV0dXJlcy5weV9fYWxsX18gPSAoKQoKaW1wb3J0IHJlcHJsaWIKZnJvbSBfdGhyZWFkIGltcG9ydCBnZXRfaWRlbnQKCmZyb20gLiBpbXBvcnQgZm9ybWF0X2hlbHBlcnMKCiMgU3RhdGVzIGZvciBGdXR1cmUuCl9QRU5ESU5HID0gJ1BFTkRJTkcnCl9DQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJwpfRklOSVNIRUQgPSAnRklOSVNIRUQnCgoKZGVmIGlzZnV0dXJlKG9iaik6CiAgICAiIiJDaGVjayBmb3IgYSBGdXR1cmUuCgogICAgVGhpcyByZXR1cm5zIFRydWUgd2hlbiBvYmogaXMgYSBGdXR1cmUgaW5zdGFuY2Ugb3IgaXMgYWR2ZXJ0aXNpbmcKICAgIGl0c2VsZiBhcyBkdWNrLXR5cGUgY29tcGF0aWJsZSBieSBzZXR0aW5nIF9hc3luY2lvX2Z1dHVyZV9ibG9ja2luZy4KICAgIFNlZSBjb21tZW50IGluIEZ1dHVyZSBmb3IgbW9yZSBkZXRhaWxzLgogICAgIiIiCiAgICByZXR1cm4gKGhhc2F0dHIob2JqLl9fY2xhc3NfXywgJ19hc3luY2lvX2Z1dHVyZV9ibG9ja2luZycpIGFuZAogICAgICAgICAgICBvYmouX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nIGlzIG5vdCBOb25lKQoKCmRlZiBfZm9ybWF0X2NhbGxiYWNrcyhjYik6CiAgICAiIiJoZWxwZXIgZnVuY3Rpb24gZm9yIEZ1dHVyZS5fX3JlcHJfXyIiIgogICAgc2l6ZSA9IGxlbihjYikKICAgIGlmIG5vdCBzaXplOgogICAgICAgIGNiID0gJycKCiAgICBkZWYgZm9ybWF0X2NiKGNhbGxiYWNrKToKICAgICAgICByZXR1cm4gZm9ybWF0X2hlbHBlcnMuX2Zvcm1hdF9jYWxsYmFja19zb3VyY2UoY2FsbGJhY2ssICgpKQoKICAgIGlmIHNpemUgPT0gMToKICAgICAgICBjYiA9IGZvcm1hdF9jYihjYlswXVswXSkKICAgIGVsaWYgc2l6ZSA9PSAyOgogICAgICAgIGNiID0gJ3t9LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXVswXSksIGZvcm1hdF9jYihjYlsxXVswXSkpCiAgICBlbGlmIHNpemUgPiAyOgogICAgICAgIGNiID0gJ3t9LCA8e30gbW9yZT4sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdWzBdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgLSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2NiKGNiWy0xXVswXSkpCiAgICByZXR1cm4gZidjYj1be2NifV0nCgoKZGVmIF9mdXR1cmVfcmVwcl9pbmZvKGZ1dHVyZSk6CiAgICAjIChGdXR1cmUpIC0+IHN0cgogICAgIiIiaGVscGVyIGZ1bmN0aW9uIGZvciBGdXR1cmUuX19yZXByX18iIiIKICAgIGluZm8gPSBbZnV0dXJlLl9zdGF0ZS5sb3dlcigpXQogICAgaWYgZnV0dXJlLl9zdGF0ZSA9PSBfRklOSVNIRUQ6CiAgICAgICAgaWYgZnV0dXJlLl9leGNlcHRpb24gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnZXhjZXB0aW9uPXtmdXR1cmUuX2V4Y2VwdGlvbiFyfScpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyB1c2UgcmVwcmxpYiB0byBsaW1pdCB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQsIGVzcGVjaWFsbHkKICAgICAgICAgICAgIyBmb3IgdmVyeSBsb25nIHN0cmluZ3MKICAgICAgICAgICAgcmVzdWx0ID0gcmVwcmxpYi5yZXByKGZ1dHVyZS5fcmVzdWx0KQogICAgICAgICAgICBpbmZvLmFwcGVuZChmJ3Jlc3VsdD17cmVzdWx0fScpCiAgICBpZiBmdXR1cmUuX2NhbGxiYWNrczoKICAgICAgICBpbmZvLmFwcGVuZChfZm9ybWF0X2NhbGxiYWNrcyhmdXR1cmUuX2NhbGxiYWNrcykpCiAgICBpZiBmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgZnJhbWUgPSBmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2tbLTFdCiAgICAgICAgaW5mby5hcHBlbmQoZidjcmVhdGVkIGF0IHtmcmFtZVswXX06e2ZyYW1lWzFdfScpCiAgICByZXR1cm4gaW5mbwoKCkByZXBybGliLnJlY3Vyc2l2ZV9yZXByKCkKZGVmIF9mdXR1cmVfcmVwcihmdXR1cmUpOgogICAgaW5mbyA9ICcgJy5qb2luKF9mdXR1cmVfcmVwcl9pbmZvKGZ1dHVyZSkpCiAgICByZXR1cm4gZic8e2Z1dHVyZS5fX2NsYXNzX18uX19uYW1lX199IHtpbmZvfT4nClBLAwQUAAAAAAACIKNWzcpaX6UiAAClIgAAGgAAAGFzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5aW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCBzdWJwcm9jZXNzCmltcG9ydCB3YXJuaW5ncwoKZnJvbSAuIGltcG9ydCBwcm90b2NvbHMKZnJvbSAuIGltcG9ydCB0cmFuc3BvcnRzCmZyb20gLmxvZyBpbXBvcnQgbG9nZ2VyCgoKY2xhc3MgQmFzZVN1YnByb2Nlc3NUcmFuc3BvcnQodHJhbnNwb3J0cy5TdWJwcm9jZXNzVHJhbnNwb3J0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbG9vcCwgcHJvdG9jb2wsIGFyZ3MsIHNoZWxsLAogICAgICAgICAgICAgICAgIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgYnVmc2l6ZSwKICAgICAgICAgICAgICAgICB3YWl0ZXI9Tm9uZSwgZXh0cmE9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oZXh0cmEpCiAgICAgICAgc2VsZi5fY2xvc2VkID0gRmFsc2UKICAgICAgICBzZWxmLl9wcm90b2NvbCA9IHByb3RvY29sCiAgICAgICAgc2VsZi5fbG9vcCA9IGxvb3AKICAgICAgICBzZWxmLl9wcm9jID0gTm9uZQogICAgICAgIHNlbGYuX3BpZCA9IE5vbmUKICAgICAgICBzZWxmLl9yZXR1cm5jb2RlID0gTm9uZQogICAgICAgIHNlbGYuX2V4aXRfd2FpdGVycyA9IFtdCiAgICAgICAgc2VsZi5fcGVuZGluZ19jYWxscyA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKICAgICAgICBzZWxmLl9waXBlcyA9IHt9CiAgICAgICAgc2VsZi5fZmluaXNoZWQgPSBGYWxzZQoKICAgICAgICBpZiBzdGRpbiA9PSBzdWJwcm9jZXNzLlBJUEU6CiAgICAgICAgICAgIHNlbGYuX3BpcGVzWzBdID0gTm9uZQogICAgICAgIGlmIHN0ZG91dCA9PSBzdWJwcm9jZXNzLlBJUEU6CiAgICAgICAgICAgIHNlbGYuX3BpcGVzWzFdID0gTm9uZQogICAgICAgIGlmIHN0ZGVyciA9PSBzdWJwcm9jZXNzLlBJUEU6CiAgICAgICAgICAgIHNlbGYuX3BpcGVzWzJdID0gTm9uZQoKICAgICAgICAjIENyZWF0ZSB0aGUgY2hpbGQgcHJvY2Vzczogc2V0IHRoZSBfcHJvYyBhdHRyaWJ1dGUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3N0YXJ0KGFyZ3M9YXJncywgc2hlbGw9c2hlbGwsIHN0ZGluPXN0ZGluLCBzdGRvdXQ9c3Rkb3V0LAogICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3RkZXJyLCBidWZzaXplPWJ1ZnNpemUsICoqa3dhcmdzKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlCgogICAgICAgIHNlbGYuX3BpZCA9IHNlbGYuX3Byb2MucGlkCiAgICAgICAgc2VsZi5fZXh0cmFbJ3N1YnByb2Nlc3MnXSA9IHNlbGYuX3Byb2MKCiAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzLCAoYnl0ZXMsIHN0cikpOgogICAgICAgICAgICAgICAgcHJvZ3JhbSA9IGFyZ3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByb2dyYW0gPSBhcmdzWzBdCiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygncHJvY2VzcyAlciBjcmVhdGVkOiBwaWQgJXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSwgc2VsZi5fcGlkKQoKICAgICAgICBzZWxmLl9sb29wLmNyZWF0ZV90YXNrKHNlbGYuX2Nvbm5lY3RfcGlwZXMod2FpdGVyKSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaW5mbyA9IFtzZWxmLl9fY2xhc3NfXy5fX25hbWVfX10KICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdjbG9zZWQnKQogICAgICAgIGlmIHNlbGYuX3BpZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaW5mby5hcHBlbmQoZidwaWQ9e3NlbGYuX3BpZH0nKQogICAgICAgIGlmIHNlbGYuX3JldHVybmNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYncmV0dXJuY29kZT17c2VsZi5fcmV0dXJuY29kZX0nKQogICAgICAgIGVsaWYgc2VsZi5fcGlkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpbmZvLmFwcGVuZCgncnVubmluZycpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ25vdCBzdGFydGVkJykKCiAgICAgICAgc3RkaW4gPSBzZWxmLl9waXBlcy5nZXQoMCkKICAgICAgICBpZiBzdGRpbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgaW5mby5hcHBlbmQoZidzdGRpbj17c3RkaW4ucGlwZX0nKQoKICAgICAgICBzdGRvdXQgPSBzZWxmLl9waXBlcy5nZXQoMSkKICAgICAgICBzdGRlcnIgPSBzZWxmLl9waXBlcy5nZXQoMikKICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmUgYW5kIHN0ZGVyciBpcyBzdGRvdXQ6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnc3Rkb3V0PXN0ZGVycj17c3Rkb3V0LnBpcGV9JykKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBpbmZvLmFwcGVuZChmJ3N0ZG91dD17c3Rkb3V0LnBpcGV9JykKICAgICAgICAgICAgaWYgc3RkZXJyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaW5mby5hcHBlbmQoZidzdGRlcnI9e3N0ZGVyci5waXBlfScpCgogICAgICAgIHJldHVybiAnPHt9PicuZm9ybWF0KCcgJy5qb2luKGluZm8pKQoKICAgIGRlZiBfc3RhcnQoc2VsZiwgYXJncywgc2hlbGwsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgYnVmc2l6ZSwgKiprd2FyZ3MpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgc2V0X3Byb3RvY29sKHNlbGYsIHByb3RvY29sKToKICAgICAgICBzZWxmLl9wcm90b2NvbCA9IHByb3RvY29sCgogICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fcHJvdG9jb2wKCiAgICBkZWYgaXNfY2xvc2luZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2xvc2VkCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fY2xvc2VkID0gVHJ1ZQoKICAgICAgICBmb3IgcHJvdG8gaW4gc2VsZi5fcGlwZXMudmFsdWVzKCk6CiAgICAgICAgICAgIGlmIHByb3RvIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBwcm90by5waXBlLmNsb3NlKCkKCiAgICAgICAgaWYgKHNlbGYuX3Byb2MgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICAjIGhhcyB0aGUgY2hpbGQgcHJvY2VzcyBmaW5pc2hlZD8KICAgICAgICAgICAgICAgIHNlbGYuX3JldHVybmNvZGUgaXMgTm9uZSBhbmQKICAgICAgICAgICAgICAgICMgdGhlIGNoaWxkIHByb2Nlc3MgaGFzIGZpbmlzaGVkLCBidXQgdGhlCiAgICAgICAgICAgICAgICAjIHRyYW5zcG9ydCBoYXNuJ3QgYmVlbiBub3RpZmllZCB5ZXQ/CiAgICAgICAgICAgICAgICBzZWxmLl9wcm9jLnBvbGwoKSBpcyBOb25lKToKCiAgICAgICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnQ2xvc2UgcnVubmluZyBjaGlsZCBwcm9jZXNzOiBraWxsICVyJywgc2VsZikKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Mua2lsbCgpCiAgICAgICAgICAgIGV4Y2VwdCBQcm9jZXNzTG9va3VwRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCgogICAgICAgICAgICAjIERvbid0IGNsZWFyIHRoZSBfcHJvYyByZWZlcmVuY2UgeWV0OiBfcG9zdF9pbml0KCkgbWF5IHN0aWxsIHJ1bgoKICAgIGRlZiBfX2RlbF9fKHNlbGYsIF93YXJuPXdhcm5pbmdzLndhcm4pOgogICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgIF93YXJuKGYidW5jbG9zZWQgdHJhbnNwb3J0IHtzZWxmIXJ9IiwgUmVzb3VyY2VXYXJuaW5nLCBzb3VyY2U9c2VsZikKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCgogICAgZGVmIGdldF9waWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3BpZAoKICAgIGRlZiBnZXRfcmV0dXJuY29kZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fcmV0dXJuY29kZQoKICAgIGRlZiBnZXRfcGlwZV90cmFuc3BvcnQoc2VsZiwgZmQpOgogICAgICAgIGlmIGZkIGluIHNlbGYuX3BpcGVzOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcGlwZXNbZmRdLnBpcGUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBfY2hlY2tfcHJvYyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9wcm9jIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFByb2Nlc3NMb29rdXBFcnJvcigpCgogICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZ25hbCk6CiAgICAgICAgc2VsZi5fY2hlY2tfcHJvYygpCiAgICAgICAgc2VsZi5fcHJvYy5zZW5kX3NpZ25hbChzaWduYWwpCgogICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKICAgICAgICBzZWxmLl9jaGVja19wcm9jKCkKICAgICAgICBzZWxmLl9wcm9jLnRlcm1pbmF0ZSgpCgogICAgZGVmIGtpbGwoc2VsZik6CiAgICAgICAgc2VsZi5fY2hlY2tfcHJvYygpCiAgICAgICAgc2VsZi5fcHJvYy5raWxsKCkKCiAgICBhc3luYyBkZWYgX2Nvbm5lY3RfcGlwZXMoc2VsZiwgd2FpdGVyKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHByb2MgPSBzZWxmLl9wcm9jCiAgICAgICAgICAgIGxvb3AgPSBzZWxmLl9sb29wCgogICAgICAgICAgICBpZiBwcm9jLnN0ZGluIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgXywgcGlwZSA9IGF3YWl0IGxvb3AuY29ubmVjdF93cml0ZV9waXBlKAogICAgICAgICAgICAgICAgICAgIGxhbWJkYTogV3JpdGVTdWJwcm9jZXNzUGlwZVByb3RvKHNlbGYsIDApLAogICAgICAgICAgICAgICAgICAgIHByb2Muc3RkaW4pCiAgICAgICAgICAgICAgICBzZWxmLl9waXBlc1swXSA9IHBpcGUKCiAgICAgICAgICAgIGlmIHByb2Muc3Rkb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgXywgcGlwZSA9IGF3YWl0IGxvb3AuY29ubmVjdF9yZWFkX3BpcGUoCiAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBSZWFkU3VicHJvY2Vzc1BpcGVQcm90byhzZWxmLCAxKSwKICAgICAgICAgICAgICAgICAgICBwcm9jLnN0ZG91dCkKICAgICAgICAgICAgICAgIHNlbGYuX3BpcGVzWzFdID0gcGlwZQoKICAgICAgICAgICAgaWYgcHJvYy5zdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBfLCBwaXBlID0gYXdhaXQgbG9vcC5jb25uZWN0X3JlYWRfcGlwZSgKICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IFJlYWRTdWJwcm9jZXNzUGlwZVByb3RvKHNlbGYsIDIpLAogICAgICAgICAgICAgICAgICAgIHByb2Muc3RkZXJyKQogICAgICAgICAgICAgICAgc2VsZi5fcGlwZXNbMl0gPSBwaXBlCgogICAgICAgICAgICBhc3NlcnQgc2VsZi5fcGVuZGluZ19jYWxscyBpcyBub3QgTm9uZQoKICAgICAgICAgICAgbG9vcC5jYWxsX3Nvb24oc2VsZi5fcHJvdG9jb2wuY29ubmVjdGlvbl9tYWRlLCBzZWxmKQogICAgICAgICAgICBmb3IgY2FsbGJhY2ssIGRhdGEgaW4gc2VsZi5fcGVuZGluZ19jYWxsczoKICAgICAgICAgICAgICAgIGxvb3AuY2FsbF9zb29uKGNhbGxiYWNrLCAqZGF0YSkKICAgICAgICAgICAgc2VsZi5fcGVuZGluZ19jYWxscyA9IE5vbmUKICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZSBhbmQgbm90IHdhaXRlci5jYW5jZWxsZWQoKToKICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiB3YWl0ZXIgaXMgbm90IE5vbmUgYW5kIG5vdCB3YWl0ZXIuY2FuY2VsbGVkKCk6CiAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQoKICAgIGRlZiBfY2FsbChzZWxmLCBjYiwgKmRhdGEpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfY2FsbHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3BlbmRpbmdfY2FsbHMuYXBwZW5kKChjYiwgZGF0YSkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oY2IsICpkYXRhKQoKICAgIGRlZiBfcGlwZV9jb25uZWN0aW9uX2xvc3Qoc2VsZiwgZmQsIGV4Yyk6CiAgICAgICAgc2VsZi5fY2FsbChzZWxmLl9wcm90b2NvbC5waXBlX2Nvbm5lY3Rpb25fbG9zdCwgZmQsIGV4YykKICAgICAgICBzZWxmLl90cnlfZmluaXNoKCkKCiAgICBkZWYgX3BpcGVfZGF0YV9yZWNlaXZlZChzZWxmLCBmZCwgZGF0YSk6CiAgICAgICAgc2VsZi5fY2FsbChzZWxmLl9wcm90b2NvbC5waXBlX2RhdGFfcmVjZWl2ZWQsIGZkLCBkYXRhKQoKICAgIGRlZiBfcHJvY2Vzc19leGl0ZWQoc2VsZiwgcmV0dXJuY29kZSk6CiAgICAgICAgYXNzZXJ0IHJldHVybmNvZGUgaXMgbm90IE5vbmUsIHJldHVybmNvZGUKICAgICAgICBhc3NlcnQgc2VsZi5fcmV0dXJuY29kZSBpcyBOb25lLCBzZWxmLl9yZXR1cm5jb2RlCiAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgbG9nZ2VyLmluZm8oJyVyIGV4aXRlZCB3aXRoIHJldHVybiBjb2RlICVyJywgc2VsZiwgcmV0dXJuY29kZSkKICAgICAgICBzZWxmLl9yZXR1cm5jb2RlID0gcmV0dXJuY29kZQogICAgICAgIGlmIHNlbGYuX3Byb2MucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAjIGFzeW5jaW8gdXNlcyBhIGNoaWxkIHdhdGNoZXI6IGNvcHkgdGhlIHN0YXR1cyBpbnRvIHRoZSBQb3BlbgogICAgICAgICAgICAjIG9iamVjdC4gT24gUHl0aG9uIDMuNiwgaXQgaXMgcmVxdWlyZWQgdG8gYXZvaWQgYSBSZXNvdXJjZVdhcm5pbmcuCiAgICAgICAgICAgIHNlbGYuX3Byb2MucmV0dXJuY29kZSA9IHJldHVybmNvZGUKICAgICAgICBzZWxmLl9jYWxsKHNlbGYuX3Byb3RvY29sLnByb2Nlc3NfZXhpdGVkKQoKICAgICAgICBzZWxmLl90cnlfZmluaXNoKCkKCiAgICBhc3luYyBkZWYgX3dhaXQoc2VsZik6CiAgICAgICAgIiIiV2FpdCB1bnRpbCB0aGUgcHJvY2VzcyBleGl0IGFuZCByZXR1cm4gdGhlIHByb2Nlc3MgcmV0dXJuIGNvZGUuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGEgY29yb3V0aW5lLiIiIgogICAgICAgIGlmIHNlbGYuX3JldHVybmNvZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXR1cm5jb2RlCgogICAgICAgIHdhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgc2VsZi5fZXhpdF93YWl0ZXJzLmFwcGVuZCh3YWl0ZXIpCiAgICAgICAgcmV0dXJuIGF3YWl0IHdhaXRlcgoKICAgIGRlZiBfdHJ5X2ZpbmlzaChzZWxmKToKICAgICAgICBhc3NlcnQgbm90IHNlbGYuX2ZpbmlzaGVkCiAgICAgICAgaWYgc2VsZi5fcmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBhbGwocCBpcyBub3QgTm9uZSBhbmQgcC5kaXNjb25uZWN0ZWQKICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5fcGlwZXMudmFsdWVzKCkpOgogICAgICAgICAgICBzZWxmLl9maW5pc2hlZCA9IFRydWUKICAgICAgICAgICAgc2VsZi5fY2FsbChzZWxmLl9jYWxsX2Nvbm5lY3Rpb25fbG9zdCwgTm9uZSkKCiAgICBkZWYgX2NhbGxfY29ubmVjdGlvbl9sb3N0KHNlbGYsIGV4Yyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9wcm90b2NvbC5jb25uZWN0aW9uX2xvc3QoZXhjKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICMgd2FrZSB1cCBmdXR1cmVzIHdhaXRpbmcgZm9yIHdhaXQoKQogICAgICAgICAgICBmb3Igd2FpdGVyIGluIHNlbGYuX2V4aXRfd2FpdGVyczoKICAgICAgICAgICAgICAgIGlmIG5vdCB3YWl0ZXIuY2FuY2VsbGVkKCk6CiAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoc2VsZi5fcmV0dXJuY29kZSkKICAgICAgICAgICAgc2VsZi5fZXhpdF93YWl0ZXJzID0gTm9uZQogICAgICAgICAgICBzZWxmLl9sb29wID0gTm9uZQogICAgICAgICAgICBzZWxmLl9wcm9jID0gTm9uZQogICAgICAgICAgICBzZWxmLl9wcm90b2NvbCA9IE5vbmUKCgpjbGFzcyBXcml0ZVN1YnByb2Nlc3NQaXBlUHJvdG8ocHJvdG9jb2xzLkJhc2VQcm90b2NvbCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2MsIGZkKToKICAgICAgICBzZWxmLnByb2MgPSBwcm9jCiAgICAgICAgc2VsZi5mZCA9IGZkCiAgICAgICAgc2VsZi5waXBlID0gTm9uZQogICAgICAgIHNlbGYuZGlzY29ubmVjdGVkID0gRmFsc2UKCiAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNlbGYsIHRyYW5zcG9ydCk6CiAgICAgICAgc2VsZi5waXBlID0gdHJhbnNwb3J0CgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBmJzx7c2VsZi5fX2NsYXNzX18uX19uYW1lX199IGZkPXtzZWxmLmZkfSBwaXBlPXtzZWxmLnBpcGUhcn0+JwoKICAgIGRlZiBjb25uZWN0aW9uX2xvc3Qoc2VsZiwgZXhjKToKICAgICAgICBzZWxmLmRpc2Nvbm5lY3RlZCA9IFRydWUKICAgICAgICBzZWxmLnByb2MuX3BpcGVfY29ubmVjdGlvbl9sb3N0KHNlbGYuZmQsIGV4YykKICAgICAgICBzZWxmLnByb2MgPSBOb25lCgogICAgZGVmIHBhdXNlX3dyaXRpbmcoc2VsZik6CiAgICAgICAgc2VsZi5wcm9jLl9wcm90b2NvbC5wYXVzZV93cml0aW5nKCkKCiAgICBkZWYgcmVzdW1lX3dyaXRpbmcoc2VsZik6CiAgICAgICAgc2VsZi5wcm9jLl9wcm90b2NvbC5yZXN1bWVfd3JpdGluZygpCgoKY2xhc3MgUmVhZFN1YnByb2Nlc3NQaXBlUHJvdG8oV3JpdGVTdWJwcm9jZXNzUGlwZVByb3RvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbHMuUHJvdG9jb2wpOgoKICAgIGRlZiBkYXRhX3JlY2VpdmVkKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYucHJvYy5fcGlwZV9kYXRhX3JlY2VpdmVkKHNlbGYuZmQsIGRhdGEpClBLAwQUAAAAAAACIKNWo0nGS1QKAABUCgAAFQAAAGFzeW5jaW8vYmFzZV90YXNrcy5weWltcG9ydCBsaW5lY2FjaGUKaW1wb3J0IHJlcHJsaWIKaW1wb3J0IHRyYWNlYmFjawoKZnJvbSAuIGltcG9ydCBiYXNlX2Z1dHVyZXMKZnJvbSAuIGltcG9ydCBjb3JvdXRpbmVzCgoKZGVmIF90YXNrX3JlcHJfaW5mbyh0YXNrKToKICAgIGluZm8gPSBiYXNlX2Z1dHVyZXMuX2Z1dHVyZV9yZXByX2luZm8odGFzaykKCiAgICBpZiB0YXNrLmNhbmNlbGxpbmcoKSBhbmQgbm90IHRhc2suZG9uZSgpOgogICAgICAgICMgcmVwbGFjZSBzdGF0dXMKICAgICAgICBpbmZvWzBdID0gJ2NhbmNlbGxpbmcnCgogICAgaW5mby5pbnNlcnQoMSwgJ25hbWU9JXInICUgdGFzay5nZXRfbmFtZSgpKQoKICAgIGNvcm8gPSBjb3JvdXRpbmVzLl9mb3JtYXRfY29yb3V0aW5lKHRhc2suX2Nvcm8pCiAgICBpbmZvLmluc2VydCgyLCBmJ2Nvcm89PHtjb3JvfT4nKQoKICAgIGlmIHRhc2suX2Z1dF93YWl0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgaW5mby5pbnNlcnQoMywgZid3YWl0X2Zvcj17dGFzay5fZnV0X3dhaXRlciFyfScpCiAgICByZXR1cm4gaW5mbwoKCkByZXBybGliLnJlY3Vyc2l2ZV9yZXByKCkKZGVmIF90YXNrX3JlcHIodGFzayk6CiAgICBpbmZvID0gJyAnLmpvaW4oX3Rhc2tfcmVwcl9pbmZvKHRhc2spKQogICAgcmV0dXJuIGYnPHt0YXNrLl9fY2xhc3NfXy5fX25hbWVfX30ge2luZm99PicKCgpkZWYgX3Rhc2tfZ2V0X3N0YWNrKHRhc2ssIGxpbWl0KToKICAgIGZyYW1lcyA9IFtdCiAgICBpZiBoYXNhdHRyKHRhc2suX2Nvcm8sICdjcl9mcmFtZScpOgogICAgICAgICMgY2FzZSAxOiAnYXN5bmMgZGVmJyBjb3JvdXRpbmVzCiAgICAgICAgZiA9IHRhc2suX2Nvcm8uY3JfZnJhbWUKICAgIGVsaWYgaGFzYXR0cih0YXNrLl9jb3JvLCAnZ2lfZnJhbWUnKToKICAgICAgICAjIGNhc2UgMjogbGVnYWN5IGNvcm91dGluZXMKICAgICAgICBmID0gdGFzay5fY29yby5naV9mcmFtZQogICAgZWxpZiBoYXNhdHRyKHRhc2suX2Nvcm8sICdhZ19mcmFtZScpOgogICAgICAgICMgY2FzZSAzOiBhc3luYyBnZW5lcmF0b3JzCiAgICAgICAgZiA9IHRhc2suX2Nvcm8uYWdfZnJhbWUKICAgIGVsc2U6CiAgICAgICAgIyBjYXNlIDQ6IHVua25vd24gb2JqZWN0cwogICAgICAgIGYgPSBOb25lCiAgICBpZiBmIGlzIG5vdCBOb25lOgogICAgICAgIHdoaWxlIGYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgbGltaXQgPD0gMDoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgbGltaXQgLT0gMQogICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGYpCiAgICAgICAgICAgIGYgPSBmLmZfYmFjawogICAgICAgIGZyYW1lcy5yZXZlcnNlKCkKICAgIGVsaWYgdGFzay5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgogICAgICAgIHRiID0gdGFzay5fZXhjZXB0aW9uLl9fdHJhY2ViYWNrX18KICAgICAgICB3aGlsZSB0YiBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBpZiBsaW1pdCA8PSAwOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBsaW1pdCAtPSAxCiAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQodGIudGJfZnJhbWUpCiAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgcmV0dXJuIGZyYW1lcwoKCmRlZiBfdGFza19wcmludF9zdGFjayh0YXNrLCBsaW1pdCwgZmlsZSk6CiAgICBleHRyYWN0ZWRfbGlzdCA9IFtdCiAgICBjaGVja2VkID0gc2V0KCkKICAgIGZvciBmIGluIHRhc2suZ2V0X3N0YWNrKGxpbWl0PWxpbWl0KToKICAgICAgICBsaW5lbm8gPSBmLmZfbGluZW5vCiAgICAgICAgY28gPSBmLmZfY29kZQogICAgICAgIGZpbGVuYW1lID0gY28uY29fZmlsZW5hbWUKICAgICAgICBuYW1lID0gY28uY29fbmFtZQogICAgICAgIGlmIGZpbGVuYW1lIG5vdCBpbiBjaGVja2VkOgogICAgICAgICAgICBjaGVja2VkLmFkZChmaWxlbmFtZSkKICAgICAgICAgICAgbGluZWNhY2hlLmNoZWNrY2FjaGUoZmlsZW5hbWUpCiAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8sIGYuZl9nbG9iYWxzKQogICAgICAgIGV4dHJhY3RlZF9saXN0LmFwcGVuZCgoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSkpCgogICAgZXhjID0gdGFzay5fZXhjZXB0aW9uCiAgICBpZiBub3QgZXh0cmFjdGVkX2xpc3Q6CiAgICAgICAgcHJpbnQoZidObyBzdGFjayBmb3Ige3Rhc2shcn0nLCBmaWxlPWZpbGUpCiAgICBlbGlmIGV4YyBpcyBub3QgTm9uZToKICAgICAgICBwcmludChmJ1RyYWNlYmFjayBmb3Ige3Rhc2shcn0gKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JywgZmlsZT1maWxlKQogICAgZWxzZToKICAgICAgICBwcmludChmJ1N0YWNrIGZvciB7dGFzayFyfSAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonLCBmaWxlPWZpbGUpCgogICAgdHJhY2ViYWNrLnByaW50X2xpc3QoZXh0cmFjdGVkX2xpc3QsIGZpbGU9ZmlsZSkKICAgIGlmIGV4YyBpcyBub3QgTm9uZToKICAgICAgICBmb3IgbGluZSBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KGV4Yy5fX2NsYXNzX18sIGV4Yyk6CiAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZmlsZSwgZW5kPScnKQpQSwMEFAAAAAAAAiCjVq34GihYBAAAWAQAABQAAABhc3luY2lvL2NvbnN0YW50cy5weWltcG9ydCBlbnVtCgojIEFmdGVyIHRoZSBjb25uZWN0aW9uIGlzIGxvc3QsIGxvZyB3YXJuaW5ncyBhZnRlciB0aGlzIG1hbnkgd3JpdGUoKXMuCkxPR19USFJFU0hPTERfRk9SX0NPTk5MT1NUX1dSSVRFUyA9IDUKCiMgU2Vjb25kcyB0byB3YWl0IGJlZm9yZSByZXRyeWluZyBhY2NlcHQoKS4KQUNDRVBUX1JFVFJZX0RFTEFZID0gMQoKIyBOdW1iZXIgb2Ygc3RhY2sgZW50cmllcyB0byBjYXB0dXJlIGluIGRlYnVnIG1vZGUuCiMgVGhlIGxhcmdlciB0aGUgbnVtYmVyLCB0aGUgc2xvd2VyIHRoZSBvcGVyYXRpb24gaW4gZGVidWcgbW9kZQojIChzZWUgZXh0cmFjdF9zdGFjaygpIGluIGZvcm1hdF9oZWxwZXJzLnB5KS4KREVCVUdfU1RBQ0tfREVQVEggPSAxMAoKIyBOdW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGZvciBTU0wgaGFuZHNoYWtlIHRvIGNvbXBsZXRlCiMgVGhlIGRlZmF1bHQgdGltZW91dCBtYXRjaGVzIHRoYXQgb2YgTmdpbnguClNTTF9IQU5EU0hBS0VfVElNRU9VVCA9IDYwLjAKCiMgTnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgU1NMIHNodXRkb3duIHRvIGNvbXBsZXRlCiMgVGhlIGRlZmF1bHQgdGltZW91dCBtaW1pY3MgbGluZ2VyaW5nX3RpbWUKU1NMX1NIVVRET1dOX1RJTUVPVVQgPSAzMC4wCgojIFVzZWQgaW4gc2VuZGZpbGUgZmFsbGJhY2sgY29kZS4gIFdlIHVzZSBmYWxsYmFjayBmb3IgcGxhdGZvcm1zCiMgdGhhdCBkb24ndCBzdXBwb3J0IHNlbmRmaWxlLCBvciBmb3IgVExTIGNvbm5lY3Rpb25zLgpTRU5ERklMRV9GQUxMQkFDS19SRUFEQlVGRkVSX1NJWkUgPSAxMDI0ICogMjU2CgpGTE9XX0NPTlRST0xfSElHSF9XQVRFUl9TU0xfUkVBRCA9IDI1NiAgIyBLaUIKRkxPV19DT05UUk9MX0hJR0hfV0FURVJfU1NMX1dSSVRFID0gNTEyICAjIEtpQgoKIyBUaGUgZW51bSBzaG91bGQgYmUgaGVyZSB0byBicmVhayBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYmV0d2VlbgojIGJhc2VfZXZlbnRzIGFuZCBzc2xwcm90bwpjbGFzcyBfU2VuZGZpbGVNb2RlKGVudW0uRW51bSk6CiAgICBVTlNVUFBPUlRFRCA9IGVudW0uYXV0bygpCiAgICBUUllfTkFUSVZFID0gZW51bS5hdXRvKCkKICAgIEZBTExCQUNLID0gZW51bS5hdXRvKCkKUEsDBBQAAAAAAAIgo1b7xfnwSA0AAEgNAAAVAAAAYXN5bmNpby9jb3JvdXRpbmVzLnB5X19hbGxfXyA9ICdpc2Nvcm91dGluZWZ1bmN0aW9uJywgJ2lzY29yb3V0aW5lJwoKaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwppbXBvcnQgaW5zcGVjdAppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgdHJhY2ViYWNrCmltcG9ydCB0eXBlcwoKCmRlZiBfaXNfZGVidWdfbW9kZSgpOgogICAgIyBTZWU6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9hc3luY2lvLWRldi5odG1sI2FzeW5jaW8tZGVidWctbW9kZS4KICAgIHJldHVybiBzeXMuZmxhZ3MuZGV2X21vZGUgb3IgKG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50IGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbChvcy5lbnZpcm9uLmdldCgnUFlUSE9OQVNZTkNJT0RFQlVHJykpKQoKCiMgQSBtYXJrZXIgZm9yIGlzY29yb3V0aW5lZnVuY3Rpb24uCl9pc19jb3JvdXRpbmUgPSBvYmplY3QoKQoKCmRlZiBpc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgZnVuYyBpcyBhIGRlY29yYXRlZCBjb3JvdXRpbmUgZnVuY3Rpb24uIiIiCiAgICByZXR1cm4gKGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbihmdW5jKSBvcgogICAgICAgICAgICBnZXRhdHRyKGZ1bmMsICdfaXNfY29yb3V0aW5lJywgTm9uZSkgaXMgX2lzX2Nvcm91dGluZSkKCgojIFByaW9yaXRpemUgbmF0aXZlIGNvcm91dGluZSBjaGVjayB0byBzcGVlZC11cAojIGFzeW5jaW8uaXNjb3JvdXRpbmUuCl9DT1JPVVRJTkVfVFlQRVMgPSAodHlwZXMuQ29yb3V0aW5lVHlwZSwgdHlwZXMuR2VuZXJhdG9yVHlwZSwKICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lKQpfaXNjb3JvdXRpbmVfdHlwZWNhY2hlID0gc2V0KCkKCgpkZWYgaXNjb3JvdXRpbmUob2JqKToKICAgICIiIlJldHVybiBUcnVlIGlmIG9iaiBpcyBhIGNvcm91dGluZSBvYmplY3QuIiIiCiAgICBpZiB0eXBlKG9iaikgaW4gX2lzY29yb3V0aW5lX3R5cGVjYWNoZToKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBfQ09ST1VUSU5FX1RZUEVTKToKICAgICAgICAjIEp1c3QgaW4gY2FzZSB3ZSBkb24ndCB3YW50IHRvIGNhY2hlIG1vcmUgdGhhbiAxMDAKICAgICAgICAjIHBvc2l0aXZlIHR5cGVzLiAgVGhhdCBzaG91bGRuJ3QgZXZlciBoYXBwZW4sIHVubGVzcwogICAgICAgICMgc29tZW9uZSBzdHJlc3NpbmcgdGhlIHN5c3RlbSBvbiBwdXJwb3NlLgogICAgICAgIGlmIGxlbihfaXNjb3JvdXRpbmVfdHlwZWNhY2hlKSA8IDEwMDoKICAgICAgICAgICAgX2lzY29yb3V0aW5lX3R5cGVjYWNoZS5hZGQodHlwZShvYmopKQogICAgICAgIHJldHVybiBUcnVlCiAgICBlbHNlOgogICAgICAgIHJldHVybiBGYWxzZQoKCmRlZiBfZm9ybWF0X2Nvcm91dGluZShjb3JvKToKICAgIGFzc2VydCBpc2Nvcm91dGluZShjb3JvKQoKICAgIGRlZiBnZXRfbmFtZShjb3JvKToKICAgICAgICAjIENvcm91dGluZXMgY29tcGlsZWQgd2l0aCBDeXRob24gc29tZXRpbWVzIGRvbid0IGhhdmUKICAgICAgICAjIHByb3BlciBfX3F1YWxuYW1lX18gb3IgX19uYW1lX18uICBXaGlsZSB0aGF0IGlzIGEgYnVnCiAgICAgICAgIyBpbiBDeXRob24sIGFzeW5jaW8gc2hvdWxkbid0IGNyYXNoIHdpdGggYW4gQXR0cmlidXRlRXJyb3IKICAgICAgICAjIGluIGl0cyBfX3JlcHJfXyBmdW5jdGlvbnMuCiAgICAgICAgaWYgaGFzYXR0cihjb3JvLCAnX19xdWFsbmFtZV9fJykgYW5kIGNvcm8uX19xdWFsbmFtZV9fOgogICAgICAgICAgICBjb3JvX25hbWUgPSBjb3JvLl9fcXVhbG5hbWVfXwogICAgICAgIGVsaWYgaGFzYXR0cihjb3JvLCAnX19uYW1lX18nKSBhbmQgY29yby5fX25hbWVfXzoKICAgICAgICAgICAgY29yb19uYW1lID0gY29yby5fX25hbWVfXwogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgU3RvcCBtYXNraW5nIEN5dGhvbiBidWdzLCBleHBvc2UgdGhlbSBpbiBhIGZyaWVuZGx5IHdheS4KICAgICAgICAgICAgY29yb19uYW1lID0gZic8e3R5cGUoY29ybykuX19uYW1lX199IHdpdGhvdXQgX19uYW1lX18+JwogICAgICAgIHJldHVybiBmJ3tjb3JvX25hbWV9KCknCgogICAgZGVmIGlzX3J1bm5pbmcoY29ybyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gY29yby5jcl9ydW5uaW5nCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gY29yby5naV9ydW5uaW5nCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGNvcm9fY29kZSA9IE5vbmUKICAgIGlmIGhhc2F0dHIoY29ybywgJ2NyX2NvZGUnKSBhbmQgY29yby5jcl9jb2RlOgogICAgICAgIGNvcm9fY29kZSA9IGNvcm8uY3JfY29kZQogICAgZWxpZiBoYXNhdHRyKGNvcm8sICdnaV9jb2RlJykgYW5kIGNvcm8uZ2lfY29kZToKICAgICAgICBjb3JvX2NvZGUgPSBjb3JvLmdpX2NvZGUKCiAgICBjb3JvX25hbWUgPSBnZXRfbmFtZShjb3JvKQoKICAgIGlmIG5vdCBjb3JvX2NvZGU6CiAgICAgICAgIyBCdWlsdC1pbiB0eXBlcyBtaWdodCBub3QgaGF2ZSBfX3F1YWxuYW1lX18gb3IgX19uYW1lX18uCiAgICAgICAgaWYgaXNfcnVubmluZyhjb3JvKToKICAgICAgICAgICAgcmV0dXJuIGYne2Nvcm9fbmFtZX0gcnVubmluZycKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gY29yb19uYW1lCgogICAgY29yb19mcmFtZSA9IE5vbmUKICAgIGlmIGhhc2F0dHIoY29ybywgJ2dpX2ZyYW1lJykgYW5kIGNvcm8uZ2lfZnJhbWU6CiAgICAgICAgY29yb19mcmFtZSA9IGNvcm8uZ2lfZnJhbWUKICAgIGVsaWYgaGFzYXR0cihjb3JvLCAnY3JfZnJhbWUnKSBhbmQgY29yby5jcl9mcmFtZToKICAgICAgICBjb3JvX2ZyYW1lID0gY29yby5jcl9mcmFtZQoKICAgICMgSWYgQ3l0aG9uJ3MgY29yb3V0aW5lIGhhcyBhIGZha2UgY29kZSBvYmplY3Qgd2l0aG91dCBwcm9wZXIKICAgICMgY29fZmlsZW5hbWUgLS0gZXhwb3NlIHRoYXQuCiAgICBmaWxlbmFtZSA9IGNvcm9fY29kZS5jb19maWxlbmFtZSBvciAnPGVtcHR5IGNvX2ZpbGVuYW1lPicKCiAgICBsaW5lbm8gPSAwCgogICAgaWYgY29yb19mcmFtZSBpcyBub3QgTm9uZToKICAgICAgICBsaW5lbm8gPSBjb3JvX2ZyYW1lLmZfbGluZW5vCiAgICAgICAgY29yb19yZXByID0gZid7Y29yb19uYW1lfSBydW5uaW5nIGF0IHtmaWxlbmFtZX06e2xpbmVub30nCgogICAgZWxzZToKICAgICAgICBsaW5lbm8gPSBjb3JvX2NvZGUuY29fZmlyc3RsaW5lbm8KICAgICAgICBjb3JvX3JlcHIgPSBmJ3tjb3JvX25hbWV9IGRvbmUsIGRlZmluZWQgYXQge2ZpbGVuYW1lfTp7bGluZW5vfScKCiAgICByZXR1cm4gY29yb19yZXByClBLAwQUAAAAAAACIKNWmZf52AdvAAAHbwAAEQAAAGFzeW5jaW8vZXZlbnRzLnB5IiIiRXZlbnQgbG9vcCBhbmQgZXZlbnQgbG9vcCBwb2xpY3kuIiIiCgpfX2FsbF9fID0gKAogICAgJ0Fic3RyYWN0RXZlbnRMb29wUG9saWN5JywKICAgICdBYnN0cmFjdEV2ZW50TG9vcCcsICdBYnN0cmFjdFNlcnZlcicsCiAgICAnSGFuZGxlJywgJ1RpbWVySGFuZGxlJywKICAgICdnZXRfZXZlbnRfbG9vcF9wb2xpY3knLCAnc2V0X2V2ZW50X2xvb3BfcG9saWN5JywKICAgICdnZXRfZXZlbnRfbG9vcCcsICdzZXRfZXZlbnRfbG9vcCcsICduZXdfZXZlbnRfbG9vcCcsCiAgICAnZ2V0X2NoaWxkX3dhdGNoZXInLCAnc2V0X2NoaWxkX3dhdGNoZXInLAogICAgJ19zZXRfcnVubmluZ19sb29wJywgJ2dldF9ydW5uaW5nX2xvb3AnLAogICAgJ19nZXRfcnVubmluZ19sb29wJywKKQoKaW1wb3J0IGNvbnRleHR2YXJzCmltcG9ydCBvcwppbXBvcnQgc29ja2V0CmltcG9ydCBzdWJwcm9jZXNzCmltcG9ydCBzeXMKaW1wb3J0IHRocmVhZGluZwoKZnJvbSAuIGltcG9ydCBmb3JtYXRfaGVscGVycwoKCmNsYXNzIEhhbmRsZToKICAgICIiIk9iamVjdCByZXR1cm5lZCBieSBjYWxsYmFjayByZWdpc3RyYXRpb24gbWV0aG9kcy4iIiIKCiAgICBfX3Nsb3RzX18gPSAoJ19jYWxsYmFjaycsICdfYXJncycsICdfY2FuY2VsbGVkJywgJ19sb29wJywKICAgICAgICAgICAgICAgICAnX3NvdXJjZV90cmFjZWJhY2snLCAnX3JlcHInLCAnX193ZWFrcmVmX18nLAogICAgICAgICAgICAgICAgICdfY29udGV4dCcpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhbGxiYWNrLCBhcmdzLCBsb29wLCBjb250ZXh0PU5vbmUpOgogICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHR2YXJzLmNvcHlfY29udGV4dCgpCiAgICAgICAgc2VsZi5fY29udGV4dCA9IGNvbnRleHQKICAgICAgICBzZWxmLl9sb29wID0gbG9vcAogICAgICAgIHNlbGYuX2NhbGxiYWNrID0gY2FsbGJhY2sKICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgIHNlbGYuX2NhbmNlbGxlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fcmVwciA9IE5vbmUKICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrID0gZm9ybWF0X2hlbHBlcnMuZXh0cmFjdF9zdGFjaygKICAgICAgICAgICAgICAgIHN5cy5fZ2V0ZnJhbWUoMSkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fc291cmNlX3RyYWNlYmFjayA9IE5vbmUKCiAgICBkZWYgX3JlcHJfaW5mbyhzZWxmKToKICAgICAgICBpbmZvID0gW3NlbGYuX19jbGFzc19fLl9fbmFtZV9fXQogICAgICAgIGlmIHNlbGYuX2NhbmNlbGxlZDoKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2NhbmNlbGxlZCcpCiAgICAgICAgaWYgc2VsZi5fY2FsbGJhY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGZvcm1hdF9oZWxwZXJzLl9mb3JtYXRfY2FsbGJhY2tfc291cmNlKAogICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2ssIHNlbGYuX2FyZ3MpKQogICAgICAgIGlmIHNlbGYuX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fc291cmNlX3RyYWNlYmFja1stMV0KICAgICAgICAgICAgaW5mby5hcHBlbmQoZidjcmVhdGVkIGF0IHtmcmFtZVswXX06e2ZyYW1lWzFdfScpCiAgICAgICAgcmV0dXJuIGluZm8KCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fcmVwciBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHIKICAgICAgICBpbmZvID0gc2VsZi5fcmVwcl9pbmZvKCkKICAgICAgICByZXR1cm4gJzx7fT4nLmZvcm1hdCgnICcuam9pbihpbmZvKSkKCiAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9jYW5jZWxsZWQ6CiAgICAgICAgICAgIHNlbGYuX2NhbmNlbGxlZCA9IFRydWUKICAgICAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgICAgICMgS2VlcCBhIHJlcHJlc2VudGF0aW9uIGluIGRlYnVnIG1vZGUgdG8ga2VlcCBjYWxsYmFjayBhbmQKICAgICAgICAgICAgICAgICMgcGFyYW1ldGVycy4gRm9yIGV4YW1wbGUsIHRvIGxvZyB0aGUgd2FybmluZwogICAgICAgICAgICAgICAgIyAiRXhlY3V0aW5nIDxIYW5kbGUuLi4+IHRvb2sgMi41IHNlY29uZCIKICAgICAgICAgICAgICAgIHNlbGYuX3JlcHIgPSByZXByKHNlbGYpCiAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrID0gTm9uZQogICAgICAgICAgICBzZWxmLl9hcmdzID0gTm9uZQoKICAgIGRlZiBjYW5jZWxsZWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NhbmNlbGxlZAoKICAgIGRlZiBfcnVuKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fY29udGV4dC5ydW4oc2VsZi5fY2FsbGJhY2ssICpzZWxmLl9hcmdzKQogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgY2IgPSBmb3JtYXRfaGVscGVycy5fZm9ybWF0X2NhbGxiYWNrX3NvdXJjZSgKICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrLCBzZWxmLl9hcmdzKQogICAgICAgICAgICBtc2cgPSBmJ0V4Y2VwdGlvbiBpbiBjYWxsYmFjayB7Y2J9JwogICAgICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBtc2csCiAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgJ2hhbmRsZSc6IHNlbGYsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgc2VsZi5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgICAgIGNvbnRleHRbJ3NvdXJjZV90cmFjZWJhY2snXSA9IHNlbGYuX3NvdXJjZV90cmFjZWJhY2sKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnRleHQpCiAgICAgICAgc2VsZiA9IE5vbmUgICMgTmVlZGVkIHRvIGJyZWFrIGN5Y2xlcyB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuCgoKY2xhc3MgVGltZXJIYW5kbGUoSGFuZGxlKToKICAgICIiIk9iamVjdCByZXR1cm5lZCBieSB0aW1lZCBjYWxsYmFjayByZWdpc3RyYXRpb24gbWV0aG9kcy4iIiIKCiAgICBfX3Nsb3RzX18gPSBbJ19zY2hlZHVsZWQnLCAnX3doZW4nXQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aGVuLCBjYWxsYmFjaywgYXJncywgbG9vcCwgY29udGV4dD1Ob25lKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGNhbGxiYWNrLCBhcmdzLCBsb29wLCBjb250ZXh0KQogICAgICAgIGlmIHNlbGYuX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgICAgIGRlbCBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQogICAgICAgIHNlbGYuX3doZW4gPSB3aGVuCiAgICAgICAgc2VsZi5fc2NoZWR1bGVkID0gRmFsc2UKCiAgICBkZWYgX3JlcHJfaW5mbyhzZWxmKToKICAgICAgICBpbmZvID0gc3VwZXIoKS5fcmVwcl9pbmZvKCkKICAgICAgICBwb3MgPSAyIGlmIHNlbGYuX2NhbmNlbGxlZCBlbHNlIDEKICAgICAgICBpbmZvLmluc2VydChwb3MsIGYnd2hlbj17c2VsZi5fd2hlbn0nKQogICAgICAgIHJldHVybiBpbmZvCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHJldHVybiBoYXNoKHNlbGYuX3doZW4pCgogICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVGltZXJIYW5kbGUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fd2hlbiA8IG90aGVyLl93aGVuCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVGltZXJIYW5kbGUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fd2hlbiA8IG90aGVyLl93aGVuIG9yIHNlbGYuX19lcV9fKG90aGVyKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFRpbWVySGFuZGxlKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3doZW4gPiBvdGhlci5fd2hlbgogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFRpbWVySGFuZGxlKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3doZW4gPiBvdGhlci5fd2hlbiBvciBzZWxmLl9fZXFfXyhvdGhlcikKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBUaW1lckhhbmRsZSk6CiAgICAgICAgICAgIHJldHVybiAoc2VsZi5fd2hlbiA9PSBvdGhlci5fd2hlbiBhbmQKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayA9PSBvdGhlci5fY2FsbGJhY2sgYW5kCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJncyA9PSBvdGhlci5fYXJncyBhbmQKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYW5jZWxsZWQgPT0gb3RoZXIuX2NhbmNlbGxlZCkKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9jYW5jZWxsZWQ6CiAgICAgICAgICAgIHNlbGYuX2xvb3AuX3RpbWVyX2hhbmRsZV9jYW5jZWxsZWQoc2VsZikKICAgICAgICBzdXBlcigpLmNhbmNlbCgpCgogICAgZGVmIHdoZW4oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgc2NoZWR1bGVkIGNhbGxiYWNrIHRpbWUuCgogICAgICAgIFRoZSB0aW1lIGlzIGFuIGFic29sdXRlIHRpbWVzdGFtcCwgdXNpbmcgdGhlIHNhbWUgdGltZQogICAgICAgIHJlZmVyZW5jZSBhcyBsb29wLnRpbWUoKS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fd2hlbgoKCmNsYXNzIEFic3RyYWN0U2VydmVyOgogICAgIiIiQWJzdHJhY3Qgc2VydmVyIHJldHVybmVkIGJ5IGNyZWF0ZV9zZXJ2ZXIoKS4iIiIKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiU3RvcCBzZXJ2aW5nLiAgVGhpcyBsZWF2ZXMgZXhpc3RpbmcgY29ubmVjdGlvbnMgb3Blbi4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGdldF9sb29wKHNlbGYpOgogICAgICAgICIiIkdldCB0aGUgZXZlbnQgbG9vcCB0aGUgU2VydmVyIG9iamVjdCBpcyBhdHRhY2hlZCB0by4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGlzX3NlcnZpbmcoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHNlcnZlciBpcyBhY2NlcHRpbmcgY29ubmVjdGlvbnMuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBzdGFydF9zZXJ2aW5nKHNlbGYpOgogICAgICAgICIiIlN0YXJ0IGFjY2VwdGluZyBjb25uZWN0aW9ucy4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgaWRlbXBvdGVudCwgc28gaXQgY2FuIGJlIGNhbGxlZCB3aGVuCiAgICAgICAgdGhlIHNlcnZlciBpcyBhbHJlYWR5IGJlaW5nIHNlcnZpbmcuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYpOgogICAgICAgICIiIlN0YXJ0IGFjY2VwdGluZyBjb25uZWN0aW9ucyB1bnRpbCB0aGUgY29yb3V0aW5lIGlzIGNhbmNlbGxlZC4KCiAgICAgICAgVGhlIHNlcnZlciBpcyBjbG9zZWQgd2hlbiB0aGUgY29yb3V0aW5lIGlzIGNhbmNlbGxlZC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIHdhaXRfY2xvc2VkKHNlbGYpOgogICAgICAgICIiIkNvcm91dGluZSB0byB3YWl0IHVudGlsIHNlcnZpY2UgaXMgY2xvc2VkLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgKmV4Yyk6CiAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgYXdhaXQgc2VsZi53YWl0X2Nsb3NlZCgpCgoKY2xhc3MgQWJzdHJhY3RFdmVudExvb3A6CiAgICAiIiJBYnN0cmFjdCBldmVudCBsb29wLiIiIgoKICAgICMgUnVubmluZyBhbmQgc3RvcHBpbmcgdGhlIGV2ZW50IGxvb3AuCgogICAgZGVmIHJ1bl9mb3JldmVyKHNlbGYpOgogICAgICAgICIiIlJ1biB0aGUgZXZlbnQgbG9vcCB1bnRpbCBzdG9wKCkgaXMgY2FsbGVkLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgcnVuX3VudGlsX2NvbXBsZXRlKHNlbGYsIGZ1dHVyZSk6CiAgICAgICAgIiIiUnVuIHRoZSBldmVudCBsb29wIHVudGlsIGEgRnV0dXJlIGlzIGRvbmUuCgogICAgICAgIFJldHVybiB0aGUgRnV0dXJlJ3MgcmVzdWx0LCBvciByYWlzZSBpdHMgZXhjZXB0aW9uLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAiIiJTdG9wIHRoZSBldmVudCBsb29wIGFzIHNvb24gYXMgcmVhc29uYWJsZS4KCiAgICAgICAgRXhhY3RseSBob3cgc29vbiB0aGF0IGlzIG1heSBkZXBlbmQgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQKICAgICAgICBubyBtb3JlIEkvTyBjYWxsYmFja3Mgc2hvdWxkIGJlIHNjaGVkdWxlZC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGlzX3J1bm5pbmcoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGV2ZW50IGxvb3AgaXMgY3VycmVudGx5IHJ1bm5pbmcuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBpc19jbG9zZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHRoZSBldmVudCBsb29wIHdhcyBjbG9zZWQuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgbG9vcC4KCiAgICAgICAgVGhlIGxvb3Agc2hvdWxkIG5vdCBiZSBydW5uaW5nLgoKICAgICAgICBUaGlzIGlzIGlkZW1wb3RlbnQgYW5kIGlycmV2ZXJzaWJsZS4KCiAgICAgICAgTm8gb3RoZXIgbWV0aG9kcyBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIHRoaXMgb25lLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBhc3luYyBkZWYgc2h1dGRvd25fYXN5bmNnZW5zKHNlbGYpOgogICAgICAgICIiIlNodXRkb3duIGFsbCBhY3RpdmUgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBzaHV0ZG93bl9kZWZhdWx0X2V4ZWN1dG9yKHNlbGYpOgogICAgICAgICIiIlNjaGVkdWxlIHRoZSBzaHV0ZG93biBvZiB0aGUgZGVmYXVsdCBleGVjdXRvci4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgIyBNZXRob2RzIHNjaGVkdWxpbmcgY2FsbGJhY2tzLiAgQWxsIHRoZXNlIHJldHVybiBIYW5kbGVzLgoKICAgIGRlZiBfdGltZXJfaGFuZGxlX2NhbmNlbGxlZChzZWxmLCBoYW5kbGUpOgogICAgICAgICIiIk5vdGlmaWNhdGlvbiB0aGF0IGEgVGltZXJIYW5kbGUgaGFzIGJlZW4gY2FuY2VsbGVkLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgY2FsbF9zb29uKHNlbGYsIGNhbGxiYWNrLCAqYXJncywgY29udGV4dD1Ob25lKToKICAgICAgICByZXR1cm4gc2VsZi5jYWxsX2xhdGVyKDAsIGNhbGxiYWNrLCAqYXJncywgY29udGV4dD1jb250ZXh0KQoKICAgIGRlZiBjYWxsX2xhdGVyKHNlbGYsIGRlbGF5LCBjYWxsYmFjaywgKmFyZ3MsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjYWxsX2F0KHNlbGYsIHdoZW4sIGNhbGxiYWNrLCAqYXJncywgY29udGV4dD1Ob25lKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIHRpbWUoc2VsZik6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjcmVhdGVfZnV0dXJlKHNlbGYpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICAjIE1ldGhvZCBzY2hlZHVsaW5nIGEgY29yb3V0aW5lIG9iamVjdDogY3JlYXRlIGEgdGFzay4KCiAgICBkZWYgY3JlYXRlX3Rhc2soc2VsZiwgY29ybywgKiwgbmFtZT1Ob25lLCBjb250ZXh0PU5vbmUpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICAjIE1ldGhvZHMgZm9yIGludGVyYWN0aW5nIHdpdGggdGhyZWFkcy4KCiAgICBkZWYgY2FsbF9zb29uX3RocmVhZHNhZmUoc2VsZiwgY2FsbGJhY2ssICphcmdzLCBjb250ZXh0PU5vbmUpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgcnVuX2luX2V4ZWN1dG9yKHNlbGYsIGV4ZWN1dG9yLCBmdW5jLCAqYXJncyk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBzZXRfZGVmYXVsdF9leGVjdXRvcihzZWxmLCBleGVjdXRvcik6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgICMgTmV0d29yayBJL08gbWV0aG9kcyByZXR1cm5pbmcgRnV0dXJlcy4KCiAgICBhc3luYyBkZWYgZ2V0YWRkcmluZm8oc2VsZiwgaG9zdCwgcG9ydCwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHk9MCwgdHlwZT0wLCBwcm90bz0wLCBmbGFncz0wKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIGdldG5hbWVpbmZvKHNlbGYsIHNvY2thZGRyLCBmbGFncz0wKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIGNyZWF0ZV9jb25uZWN0aW9uKAogICAgICAgICAgICBzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBob3N0PU5vbmUsIHBvcnQ9Tm9uZSwKICAgICAgICAgICAgKiwgc3NsPU5vbmUsIGZhbWlseT0wLCBwcm90bz0wLAogICAgICAgICAgICBmbGFncz0wLCBzb2NrPU5vbmUsIGxvY2FsX2FkZHI9Tm9uZSwKICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lLAogICAgICAgICAgICBoYXBweV9leWViYWxsc19kZWxheT1Ob25lLCBpbnRlcmxlYXZlPU5vbmUpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBhc3luYyBkZWYgY3JlYXRlX3NlcnZlcigKICAgICAgICAgICAgc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgaG9zdD1Ob25lLCBwb3J0PU5vbmUsCiAgICAgICAgICAgICosIGZhbWlseT1zb2NrZXQuQUZfVU5TUEVDLAogICAgICAgICAgICBmbGFncz1zb2NrZXQuQUlfUEFTU0lWRSwgc29jaz1Ob25lLCBiYWNrbG9nPTEwMCwKICAgICAgICAgICAgc3NsPU5vbmUsIHJldXNlX2FkZHJlc3M9Tm9uZSwgcmV1c2VfcG9ydD1Ob25lLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgc3RhcnRfc2VydmluZz1UcnVlKToKICAgICAgICAiIiJBIGNvcm91dGluZSB3aGljaCBjcmVhdGVzIGEgVENQIHNlcnZlciBib3VuZCB0byBob3N0IGFuZCBwb3J0LgoKICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgU2VydmVyIG9iamVjdCB3aGljaCBjYW4gYmUgdXNlZCB0byBzdG9wCiAgICAgICAgdGhlIHNlcnZpY2UuCgogICAgICAgIElmIGhvc3QgaXMgYW4gZW1wdHkgc3RyaW5nIG9yIE5vbmUgYWxsIGludGVyZmFjZXMgYXJlIGFzc3VtZWQKICAgICAgICBhbmQgYSBsaXN0IG9mIG11bHRpcGxlIHNvY2tldHMgd2lsbCBiZSByZXR1cm5lZCAobW9zdCBsaWtlbHkKICAgICAgICBvbmUgZm9yIElQdjQgYW5kIGFub3RoZXIgb25lIGZvciBJUHY2KS4gVGhlIGhvc3QgcGFyYW1ldGVyIGNhbiBhbHNvIGJlCiAgICAgICAgYSBzZXF1ZW5jZSAoZS5nLiBsaXN0KSBvZiBob3N0cyB0byBiaW5kIHRvLgoKICAgICAgICBmYW1pbHkgY2FuIGJlIHNldCB0byBlaXRoZXIgQUZfSU5FVCBvciBBRl9JTkVUNiB0byBmb3JjZSB0aGUKICAgICAgICBzb2NrZXQgdG8gdXNlIElQdjQgb3IgSVB2Ni4gSWYgbm90IHNldCBpdCB3aWxsIGJlIGRldGVybWluZWQKICAgICAgICBmcm9tIGhvc3QgKGRlZmF1bHRzIHRvIEFGX1VOU1BFQykuCgogICAgICAgIGZsYWdzIGlzIGEgYml0bWFzayBmb3IgZ2V0YWRkcmluZm8oKS4KCiAgICAgICAgc29jayBjYW4gb3B0aW9uYWxseSBiZSBzcGVjaWZpZWQgaW4gb3JkZXIgdG8gdXNlIGEgcHJlZXhpc3RpbmcKICAgICAgICBzb2NrZXQgb2JqZWN0LgoKICAgICAgICBiYWNrbG9nIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBxdWV1ZWQgY29ubmVjdGlvbnMgcGFzc2VkIHRvCiAgICAgICAgbGlzdGVuKCkgKGRlZmF1bHRzIHRvIDEwMCkuCgogICAgICAgIHNzbCBjYW4gYmUgc2V0IHRvIGFuIFNTTENvbnRleHQgdG8gZW5hYmxlIFNTTCBvdmVyIHRoZQogICAgICAgIGFjY2VwdGVkIGNvbm5lY3Rpb25zLgoKICAgICAgICByZXVzZV9hZGRyZXNzIHRlbGxzIHRoZSBrZXJuZWwgdG8gcmV1c2UgYSBsb2NhbCBzb2NrZXQgaW4KICAgICAgICBUSU1FX1dBSVQgc3RhdGUsIHdpdGhvdXQgd2FpdGluZyBmb3IgaXRzIG5hdHVyYWwgdGltZW91dCB0bwogICAgICAgIGV4cGlyZS4gSWYgbm90IHNwZWNpZmllZCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2V0IHRvIFRydWUgb24KICAgICAgICBVTklYLgoKICAgICAgICByZXVzZV9wb3J0IHRlbGxzIHRoZSBrZXJuZWwgdG8gYWxsb3cgdGhpcyBlbmRwb2ludCB0byBiZSBib3VuZCB0bwogICAgICAgIHRoZSBzYW1lIHBvcnQgYXMgb3RoZXIgZXhpc3RpbmcgZW5kcG9pbnRzIGFyZSBib3VuZCB0bywgc28gbG9uZyBhcwogICAgICAgIHRoZXkgYWxsIHNldCB0aGlzIGZsYWcgd2hlbiBiZWluZyBjcmVhdGVkLiBUaGlzIG9wdGlvbiBpcyBub3QKICAgICAgICBzdXBwb3J0ZWQgb24gV2luZG93cy4KCiAgICAgICAgc3NsX2hhbmRzaGFrZV90aW1lb3V0IGlzIHRoZSB0aW1lIGluIHNlY29uZHMgdGhhdCBhbiBTU0wgc2VydmVyCiAgICAgICAgd2lsbCB3YWl0IGZvciBjb21wbGV0aW9uIG9mIHRoZSBTU0wgaGFuZHNoYWtlIGJlZm9yZSBhYm9ydGluZyB0aGUKICAgICAgICBjb25uZWN0aW9uLiBEZWZhdWx0IGlzIDYwcy4KCiAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQgaXMgdGhlIHRpbWUgaW4gc2Vjb25kcyB0aGF0IGFuIFNTTCBzZXJ2ZXIKICAgICAgICB3aWxsIHdhaXQgZm9yIGNvbXBsZXRpb24gb2YgdGhlIFNTTCBzaHV0ZG93biBwcm9jZWR1cmUKICAgICAgICBiZWZvcmUgYWJvcnRpbmcgdGhlIGNvbm5lY3Rpb24uIERlZmF1bHQgaXMgMzBzLgoKICAgICAgICBzdGFydF9zZXJ2aW5nIHNldCB0byBUcnVlIChkZWZhdWx0KSBjYXVzZXMgdGhlIGNyZWF0ZWQgc2VydmVyCiAgICAgICAgdG8gc3RhcnQgYWNjZXB0aW5nIGNvbm5lY3Rpb25zIGltbWVkaWF0ZWx5LiAgV2hlbiBzZXQgdG8gRmFsc2UsCiAgICAgICAgdGhlIHVzZXIgc2hvdWxkIGF3YWl0IFNlcnZlci5zdGFydF9zZXJ2aW5nKCkgb3IgU2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQogICAgICAgIHRvIG1ha2UgdGhlIHNlcnZlciB0byBzdGFydCBhY2NlcHRpbmcgY29ubmVjdGlvbnMuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBzZW5kZmlsZShzZWxmLCB0cmFuc3BvcnQsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICosIGZhbGxiYWNrPVRydWUpOgogICAgICAgICIiIlNlbmQgYSBmaWxlIHRocm91Z2ggYSB0cmFuc3BvcnQuCgogICAgICAgIFJldHVybiBhbiBhbW91bnQgb2Ygc2VudCBieXRlcy4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIHN0YXJ0X3RscyhzZWxmLCB0cmFuc3BvcnQsIHByb3RvY29sLCBzc2xjb250ZXh0LCAqLAogICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lKToKICAgICAgICAiIiJVcGdyYWRlIGEgdHJhbnNwb3J0IHRvIFRMUy4KCiAgICAgICAgUmV0dXJuIGEgbmV3IHRyYW5zcG9ydCB0aGF0ICpwcm90b2NvbCogc2hvdWxkIHN0YXJ0IHVzaW5nCiAgICAgICAgaW1tZWRpYXRlbHkuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBjcmVhdGVfdW5peF9jb25uZWN0aW9uKAogICAgICAgICAgICBzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBwYXRoPU5vbmUsICosCiAgICAgICAgICAgIHNzbD1Ob25lLCBzb2NrPU5vbmUsCiAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9Tm9uZSk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBjcmVhdGVfdW5peF9zZXJ2ZXIoCiAgICAgICAgICAgIHNlbGYsIHByb3RvY29sX2ZhY3RvcnksIHBhdGg9Tm9uZSwgKiwKICAgICAgICAgICAgc29jaz1Ob25lLCBiYWNrbG9nPTEwMCwgc3NsPU5vbmUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lLAogICAgICAgICAgICBzdGFydF9zZXJ2aW5nPVRydWUpOgogICAgICAgICIiIkEgY29yb3V0aW5lIHdoaWNoIGNyZWF0ZXMgYSBVTklYIERvbWFpbiBTb2NrZXQgc2VydmVyLgoKICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgU2VydmVyIG9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc3RvcAogICAgICAgIHRoZSBzZXJ2aWNlLgoKICAgICAgICBwYXRoIGlzIGEgc3RyLCByZXByZXNlbnRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoIHRvIGJpbmQgdGhlCiAgICAgICAgc2VydmVyIHNvY2tldCB0by4KCiAgICAgICAgc29jayBjYW4gb3B0aW9uYWxseSBiZSBzcGVjaWZpZWQgaW4gb3JkZXIgdG8gdXNlIGEgcHJlZXhpc3RpbmcKICAgICAgICBzb2NrZXQgb2JqZWN0LgoKICAgICAgICBiYWNrbG9nIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBxdWV1ZWQgY29ubmVjdGlvbnMgcGFzc2VkIHRvCiAgICAgICAgbGlzdGVuKCkgKGRlZmF1bHRzIHRvIDEwMCkuCgogICAgICAgIHNzbCBjYW4gYmUgc2V0IHRvIGFuIFNTTENvbnRleHQgdG8gZW5hYmxlIFNTTCBvdmVyIHRoZQogICAgICAgIGFjY2VwdGVkIGNvbm5lY3Rpb25zLgoKICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQgaXMgdGhlIHRpbWUgaW4gc2Vjb25kcyB0aGF0IGFuIFNTTCBzZXJ2ZXIKICAgICAgICB3aWxsIHdhaXQgZm9yIHRoZSBTU0wgaGFuZHNoYWtlIHRvIGNvbXBsZXRlIChkZWZhdWx0cyB0byA2MHMpLgoKICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dCBpcyB0aGUgdGltZSBpbiBzZWNvbmRzIHRoYXQgYW4gU1NMIHNlcnZlcgogICAgICAgIHdpbGwgd2FpdCBmb3IgdGhlIFNTTCBzaHV0ZG93biB0byBmaW5pc2ggKGRlZmF1bHRzIHRvIDMwcykuCgogICAgICAgIHN0YXJ0X3NlcnZpbmcgc2V0IHRvIFRydWUgKGRlZmF1bHQpIGNhdXNlcyB0aGUgY3JlYXRlZCBzZXJ2ZXIKICAgICAgICB0byBzdGFydCBhY2NlcHRpbmcgY29ubmVjdGlvbnMgaW1tZWRpYXRlbHkuICBXaGVuIHNldCB0byBGYWxzZSwKICAgICAgICB0aGUgdXNlciBzaG91bGQgYXdhaXQgU2VydmVyLnN0YXJ0X3NlcnZpbmcoKSBvciBTZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAgICAgICAgdG8gbWFrZSB0aGUgc2VydmVyIHRvIHN0YXJ0IGFjY2VwdGluZyBjb25uZWN0aW9ucy4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIGNvbm5lY3RfYWNjZXB0ZWRfc29ja2V0KAogICAgICAgICAgICBzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBzb2NrLAogICAgICAgICAgICAqLCBzc2w9Tm9uZSwKICAgICAgICAgICAgc3NsX2hhbmRzaGFrZV90aW1lb3V0PU5vbmUsCiAgICAgICAgICAgIHNzbF9zaHV0ZG93bl90aW1lb3V0PU5vbmUpOgogICAgICAgICIiIkhhbmRsZSBhbiBhY2NlcHRlZCBjb25uZWN0aW9uLgoKICAgICAgICBUaGlzIGlzIHVzZWQgYnkgc2VydmVycyB0aGF0IGFjY2VwdCBjb25uZWN0aW9ucyBvdXRzaWRlIG9mCiAgICAgICAgYXN5bmNpbywgYnV0IHVzZSBhc3luY2lvIHRvIGhhbmRsZSBjb25uZWN0aW9ucy4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgYSBjb3JvdXRpbmUuICBXaGVuIGNvbXBsZXRlZCwgdGhlIGNvcm91dGluZQogICAgICAgIHJldHVybnMgYSAodHJhbnNwb3J0LCBwcm90b2NvbCkgcGFpci4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIGNyZWF0ZV9kYXRhZ3JhbV9lbmRwb2ludChzZWxmLCBwcm90b2NvbF9mYWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9hZGRyPU5vbmUsIHJlbW90ZV9hZGRyPU5vbmUsICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseT0wLCBwcm90bz0wLCBmbGFncz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXVzZV9hZGRyZXNzPU5vbmUsIHJldXNlX3BvcnQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfYnJvYWRjYXN0PU5vbmUsIHNvY2s9Tm9uZSk6CiAgICAgICAgIiIiQSBjb3JvdXRpbmUgd2hpY2ggY3JlYXRlcyBhIGRhdGFncmFtIGVuZHBvaW50LgoKICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byBlc3RhYmxpc2ggdGhlIGVuZHBvaW50IGluIHRoZSBiYWNrZ3JvdW5kLgogICAgICAgIFdoZW4gc3VjY2Vzc2Z1bCwgdGhlIGNvcm91dGluZSByZXR1cm5zIGEgKHRyYW5zcG9ydCwgcHJvdG9jb2wpIHBhaXIuCgogICAgICAgIHByb3RvY29sX2ZhY3RvcnkgbXVzdCBiZSBhIGNhbGxhYmxlIHJldHVybmluZyBhIHByb3RvY29sIGluc3RhbmNlLgoKICAgICAgICBzb2NrZXQgZmFtaWx5IEFGX0lORVQsIHNvY2tldC5BRl9JTkVUNiBvciBzb2NrZXQuQUZfVU5JWCBkZXBlbmRpbmcgb24KICAgICAgICBob3N0IChvciBmYW1pbHkgaWYgc3BlY2lmaWVkKSwgc29ja2V0IHR5cGUgU09DS19ER1JBTS4KCiAgICAgICAgcmV1c2VfYWRkcmVzcyB0ZWxscyB0aGUga2VybmVsIHRvIHJldXNlIGEgbG9jYWwgc29ja2V0IGluCiAgICAgICAgVElNRV9XQUlUIHN0YXRlLCB3aXRob3V0IHdhaXRpbmcgZm9yIGl0cyBuYXR1cmFsIHRpbWVvdXQgdG8KICAgICAgICBleHBpcmUuIElmIG5vdCBzcGVjaWZpZWQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNldCB0byBUcnVlIG9uCiAgICAgICAgVU5JWC4KCiAgICAgICAgcmV1c2VfcG9ydCB0ZWxscyB0aGUga2VybmVsIHRvIGFsbG93IHRoaXMgZW5kcG9pbnQgdG8gYmUgYm91bmQgdG8KICAgICAgICB0aGUgc2FtZSBwb3J0IGFzIG90aGVyIGV4aXN0aW5nIGVuZHBvaW50cyBhcmUgYm91bmQgdG8sIHNvIGxvbmcgYXMKICAgICAgICB0aGV5IGFsbCBzZXQgdGhpcyBmbGFnIHdoZW4gYmVpbmcgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMgbm90CiAgICAgICAgc3VwcG9ydGVkIG9uIFdpbmRvd3MgYW5kIHNvbWUgVU5JWCdzLiBJZiB0aGUKICAgICAgICA6cHk6ZGF0YTpgfnNvY2tldC5TT19SRVVTRVBPUlRgIGNvbnN0YW50IGlzIG5vdCBkZWZpbmVkIHRoZW4gdGhpcwogICAgICAgIGNhcGFiaWxpdHkgaXMgdW5zdXBwb3J0ZWQuCgogICAgICAgIGFsbG93X2Jyb2FkY2FzdCB0ZWxscyB0aGUga2VybmVsIHRvIGFsbG93IHRoaXMgZW5kcG9pbnQgdG8gc2VuZAogICAgICAgIG1lc3NhZ2VzIHRvIHRoZSBicm9hZGNhc3QgYWRkcmVzcy4KCiAgICAgICAgc29jayBjYW4gb3B0aW9uYWxseSBiZSBzcGVjaWZpZWQgaW4gb3JkZXIgdG8gdXNlIGEgcHJlZXhpc3RpbmcKICAgICAgICBzb2NrZXQgb2JqZWN0LgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICAjIFBpcGVzIGFuZCBzdWJwcm9jZXNzZXMuCgogICAgYXN5bmMgZGVmIGNvbm5lY3RfcmVhZF9waXBlKHNlbGYsIHByb3RvY29sX2ZhY3RvcnksIHBpcGUpOgogICAgICAgICIiIlJlZ2lzdGVyIHJlYWQgcGlwZSBpbiBldmVudCBsb29wLiBTZXQgdGhlIHBpcGUgdG8gbm9uLWJsb2NraW5nIG1vZGUuCgogICAgICAgIHByb3RvY29sX2ZhY3Rvcnkgc2hvdWxkIGluc3RhbnRpYXRlIG9iamVjdCB3aXRoIFByb3RvY29sIGludGVyZmFjZS4KICAgICAgICBwaXBlIGlzIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICBSZXR1cm4gcGFpciAodHJhbnNwb3J0LCBwcm90b2NvbCksIHdoZXJlIHRyYW5zcG9ydCBzdXBwb3J0cyB0aGUKICAgICAgICBSZWFkVHJhbnNwb3J0IGludGVyZmFjZS4iIiIKICAgICAgICAjIFRoZSByZWFzb24gdG8gYWNjZXB0IGZpbGUtbGlrZSBvYmplY3QgaW5zdGVhZCBvZiBqdXN0IGZpbGUgZGVzY3JpcHRvcgogICAgICAgICMgaXM6IHdlIG5lZWQgdG8gb3duIHBpcGUgYW5kIGNsb3NlIGl0IGF0IHRyYW5zcG9ydCBmaW5pc2hpbmcKICAgICAgICAjIENhbiBnb3QgY29tcGxpY2F0ZWQgZXJyb3JzIGlmIHBhc3MgZi5maWxlbm8oKSwKICAgICAgICAjIGNsb3NlIGZkIGluIHBpcGUgdHJhbnNwb3J0IHRoZW4gY2xvc2UgZiBhbmQgdmljZSB2ZXJzYS4KICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIGNvbm5lY3Rfd3JpdGVfcGlwZShzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBwaXBlKToKICAgICAgICAiIiJSZWdpc3RlciB3cml0ZSBwaXBlIGluIGV2ZW50IGxvb3AuCgogICAgICAgIHByb3RvY29sX2ZhY3Rvcnkgc2hvdWxkIGluc3RhbnRpYXRlIG9iamVjdCB3aXRoIEJhc2VQcm90b2NvbCBpbnRlcmZhY2UuCiAgICAgICAgUGlwZSBpcyBmaWxlLWxpa2Ugb2JqZWN0IGFscmVhZHkgc3dpdGNoZWQgdG8gbm9uYmxvY2tpbmcuCiAgICAgICAgUmV0dXJuIHBhaXIgKHRyYW5zcG9ydCwgcHJvdG9jb2wpLCB3aGVyZSB0cmFuc3BvcnQgc3VwcG9ydAogICAgICAgIFdyaXRlVHJhbnNwb3J0IGludGVyZmFjZS4iIiIKICAgICAgICAjIFRoZSByZWFzb24gdG8gYWNjZXB0IGZpbGUtbGlrZSBvYmplY3QgaW5zdGVhZCBvZiBqdXN0IGZpbGUgZGVzY3JpcHRvcgogICAgICAgICMgaXM6IHdlIG5lZWQgdG8gb3duIHBpcGUgYW5kIGNsb3NlIGl0IGF0IHRyYW5zcG9ydCBmaW5pc2hpbmcKICAgICAgICAjIENhbiBnb3QgY29tcGxpY2F0ZWQgZXJyb3JzIGlmIHBhc3MgZi5maWxlbm8oKSwKICAgICAgICAjIGNsb3NlIGZkIGluIHBpcGUgdHJhbnNwb3J0IHRoZW4gY2xvc2UgZiBhbmQgdmljZSB2ZXJzYS4KICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIHN1YnByb2Nlc3Nfc2hlbGwoc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgY21kLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBzdWJwcm9jZXNzX2V4ZWMoc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICAjIFJlYWR5LWJhc2VkIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBtZXRob2RzLgogICAgIyBUaGUgYWRkXyooKSBtZXRob2RzIHJldHVybiBOb25lLgogICAgIyBUaGUgcmVtb3ZlXyooKSBtZXRob2RzIHJldHVybiBUcnVlIGlmIHNvbWV0aGluZyB3YXMgcmVtb3ZlZCwKICAgICMgRmFsc2UgaWYgdGhlcmUgd2FzIG5vdGhpbmcgdG8gZGVsZXRlLgoKICAgIGRlZiBhZGRfcmVhZGVyKHNlbGYsIGZkLCBjYWxsYmFjaywgKmFyZ3MpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgcmVtb3ZlX3JlYWRlcihzZWxmLCBmZCk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBhZGRfd3JpdGVyKHNlbGYsIGZkLCBjYWxsYmFjaywgKmFyZ3MpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgcmVtb3ZlX3dyaXRlcihzZWxmLCBmZCk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgICMgQ29tcGxldGlvbiBiYXNlZCBJL08gbWV0aG9kcyByZXR1cm5pbmcgRnV0dXJlcy4KCiAgICBhc3luYyBkZWYgc29ja19yZWN2KHNlbGYsIHNvY2ssIG5ieXRlcyk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBzb2NrX3JlY3ZfaW50byhzZWxmLCBzb2NrLCBidWYpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBhc3luYyBkZWYgc29ja19yZWN2ZnJvbShzZWxmLCBzb2NrLCBidWZzaXplKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIHNvY2tfcmVjdmZyb21faW50byhzZWxmLCBzb2NrLCBidWYsIG5ieXRlcz0wKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIHNvY2tfc2VuZGFsbChzZWxmLCBzb2NrLCBkYXRhKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIHNvY2tfc2VuZHRvKHNlbGYsIHNvY2ssIGRhdGEsIGFkZHJlc3MpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBhc3luYyBkZWYgc29ja19jb25uZWN0KHNlbGYsIHNvY2ssIGFkZHJlc3MpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBhc3luYyBkZWYgc29ja19hY2NlcHQoc2VsZiwgc29jayk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiBzb2NrX3NlbmRmaWxlKHNlbGYsIHNvY2ssIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgZmFsbGJhY2s9Tm9uZSk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgICMgU2lnbmFsIGhhbmRsaW5nLgoKICAgIGRlZiBhZGRfc2lnbmFsX2hhbmRsZXIoc2VsZiwgc2lnLCBjYWxsYmFjaywgKmFyZ3MpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgcmVtb3ZlX3NpZ25hbF9oYW5kbGVyKHNlbGYsIHNpZyk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgICMgVGFzayBmYWN0b3J5LgoKICAgIGRlZiBzZXRfdGFza19mYWN0b3J5KHNlbGYsIGZhY3RvcnkpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgZ2V0X3Rhc2tfZmFjdG9yeShzZWxmKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgIyBFcnJvciBoYW5kbGVycy4KCiAgICBkZWYgZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyKHNlbGYpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgc2V0X2V4Y2VwdGlvbl9oYW5kbGVyKHNlbGYsIGhhbmRsZXIpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgZGVmYXVsdF9leGNlcHRpb25faGFuZGxlcihzZWxmLCBjb250ZXh0KToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoc2VsZiwgY29udGV4dCk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgICMgRGVidWcgZmxhZyBtYW5hZ2VtZW50LgoKICAgIGRlZiBnZXRfZGVidWcoc2VsZik6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBzZXRfZGVidWcoc2VsZiwgZW5hYmxlZCk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIEFic3RyYWN0RXZlbnRMb29wUG9saWN5OgogICAgIiIiQWJzdHJhY3QgcG9saWN5IGZvciBhY2Nlc3NpbmcgdGhlIGV2ZW50IGxvb3AuIiIiCgogICAgZGVmIGdldF9ldmVudF9sb29wKHNlbGYpOgogICAgICAgICIiIkdldCB0aGUgZXZlbnQgbG9vcCBmb3IgdGhlIGN1cnJlbnQgY29udGV4dC4KCiAgICAgICAgUmV0dXJucyBhbiBldmVudCBsb29wIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlIEJhc2VFdmVudExvb3AgaW50ZXJmYWNlLAogICAgICAgIG9yIHJhaXNlcyBhbiBleGNlcHRpb24gaW4gY2FzZSBubyBldmVudCBsb29wIGhhcyBiZWVuIHNldCBmb3IgdGhlCiAgICAgICAgY3VycmVudCBjb250ZXh0IGFuZCB0aGUgY3VycmVudCBwb2xpY3kgZG9lcyBub3Qgc3BlY2lmeSB0byBjcmVhdGUgb25lLgoKICAgICAgICBJdCBzaG91bGQgbmV2ZXIgcmV0dXJuIE5vbmUuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBzZXRfZXZlbnRfbG9vcChzZWxmLCBsb29wKToKICAgICAgICAiIiJTZXQgdGhlIGV2ZW50IGxvb3AgZm9yIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gbG9vcC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIG5ld19ldmVudF9sb29wKHNlbGYpOgogICAgICAgICIiIkNyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGV2ZW50IGxvb3Agb2JqZWN0IGFjY29yZGluZyB0byB0aGlzCiAgICAgICAgcG9saWN5J3MgcnVsZXMuIElmIHRoZXJlJ3MgbmVlZCB0byBzZXQgdGhpcyBsb29wIGFzIHRoZSBldmVudCBsb29wIGZvcgogICAgICAgIHRoZSBjdXJyZW50IGNvbnRleHQsIHNldF9ldmVudF9sb29wIG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgICMgQ2hpbGQgcHJvY2Vzc2VzIGhhbmRsaW5nIChVbml4IG9ubHkpLgoKICAgIGRlZiBnZXRfY2hpbGRfd2F0Y2hlcihzZWxmKToKICAgICAgICAiR2V0IHRoZSB3YXRjaGVyIGZvciBjaGlsZCBwcm9jZXNzZXMuIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgc2V0X2NoaWxkX3dhdGNoZXIoc2VsZiwgd2F0Y2hlcik6CiAgICAgICAgIiIiU2V0IHRoZSB3YXRjaGVyIGZvciBjaGlsZCBwcm9jZXNzZXMuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIEJhc2VEZWZhdWx0RXZlbnRMb29wUG9saWN5KEFic3RyYWN0RXZlbnRMb29wUG9saWN5KToKICAgICIiIkRlZmF1bHQgcG9saWN5IGltcGxlbWVudGF0aW9uIGZvciBhY2Nlc3NpbmcgdGhlIGV2ZW50IGxvb3AuCgogICAgSW4gdGhpcyBwb2xpY3ksIGVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIGV2ZW50IGxvb3AuICBIb3dldmVyLCB3ZQogICAgb25seSBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhbiBldmVudCBsb29wIGJ5IGRlZmF1bHQgZm9yIHRoZSBtYWluCiAgICB0aHJlYWQ7IG90aGVyIHRocmVhZHMgYnkgZGVmYXVsdCBoYXZlIG5vIGV2ZW50IGxvb3AuCgogICAgT3RoZXIgcG9saWNpZXMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzIChlLmcuIGEgc2luZ2xlIGdsb2JhbAogICAgZXZlbnQgbG9vcCwgb3IgYXV0b21hdGljYWxseSBjcmVhdGluZyBhbiBldmVudCBsb29wIHBlciB0aHJlYWQsIG9yCiAgICB1c2luZyBzb21lIG90aGVyIG5vdGlvbiBvZiBjb250ZXh0IHRvIHdoaWNoIGFuIGV2ZW50IGxvb3AgaXMKICAgIGFzc29jaWF0ZWQpLgogICAgIiIiCgogICAgX2xvb3BfZmFjdG9yeSA9IE5vbmUKCiAgICBjbGFzcyBfTG9jYWwodGhyZWFkaW5nLmxvY2FsKToKICAgICAgICBfbG9vcCA9IE5vbmUKICAgICAgICBfc2V0X2NhbGxlZCA9IEZhbHNlCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX2xvY2FsID0gc2VsZi5fTG9jYWwoKQoKICAgIGRlZiBnZXRfZXZlbnRfbG9vcChzZWxmKToKICAgICAgICAiIiJHZXQgdGhlIGV2ZW50IGxvb3AgZm9yIHRoZSBjdXJyZW50IGNvbnRleHQuCgogICAgICAgIFJldHVybnMgYW4gaW5zdGFuY2Ugb2YgRXZlbnRMb29wIG9yIHJhaXNlcyBhbiBleGNlcHRpb24uCiAgICAgICAgIiIiCiAgICAgICAgaWYgKHNlbGYuX2xvY2FsLl9sb29wIGlzIE5vbmUgYW5kCiAgICAgICAgICAgICAgICBub3Qgc2VsZi5fbG9jYWwuX3NldF9jYWxsZWQgYW5kCiAgICAgICAgICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSBpcyB0aHJlYWRpbmcubWFpbl90aHJlYWQoKSk6CiAgICAgICAgICAgIHNlbGYuc2V0X2V2ZW50X2xvb3Aoc2VsZi5uZXdfZXZlbnRfbG9vcCgpKQoKICAgICAgICBpZiBzZWxmLl9sb2NhbC5fbG9vcCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoZXJlIGlzIG5vIGN1cnJlbnQgZXZlbnQgbG9vcCBpbiB0aHJlYWQgJXIuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lKQoKICAgICAgICByZXR1cm4gc2VsZi5fbG9jYWwuX2xvb3AKCiAgICBkZWYgc2V0X2V2ZW50X2xvb3Aoc2VsZiwgbG9vcCk6CiAgICAgICAgIiIiU2V0IHRoZSBldmVudCBsb29wLiIiIgogICAgICAgIHNlbGYuX2xvY2FsLl9zZXRfY2FsbGVkID0gVHJ1ZQogICAgICAgIGlmIGxvb3AgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGxvb3AsIEFic3RyYWN0RXZlbnRMb29wKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYibG9vcCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEFic3RyYWN0RXZlbnRMb29wIG9yIE5vbmUsIG5vdCAne3R5cGUobG9vcCkuX19uYW1lX199JyIpCiAgICAgICAgc2VsZi5fbG9jYWwuX2xvb3AgPSBsb29wCgogICAgZGVmIG5ld19ldmVudF9sb29wKHNlbGYpOgogICAgICAgICIiIkNyZWF0ZSBhIG5ldyBldmVudCBsb29wLgoKICAgICAgICBZb3UgbXVzdCBjYWxsIHNldF9ldmVudF9sb29wKCkgdG8gbWFrZSB0aGlzIHRoZSBjdXJyZW50IGV2ZW50CiAgICAgICAgbG9vcC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fbG9vcF9mYWN0b3J5KCkKCgojIEV2ZW50IGxvb3AgcG9saWN5LiAgVGhlIHBvbGljeSBpdHNlbGYgaXMgYWx3YXlzIGdsb2JhbCwgZXZlbiBpZiB0aGUKIyBwb2xpY3kncyBydWxlcyBzYXkgdGhhdCB0aGVyZSBpcyBhbiBldmVudCBsb29wIHBlciB0aHJlYWQgKG9yIG90aGVyCiMgbm90aW9uIG9mIGNvbnRleHQpLiAgVGhlIGRlZmF1bHQgcG9saWN5IGlzIGluc3RhbGxlZCBieSB0aGUgZmlyc3QKIyBjYWxsIHRvIGdldF9ldmVudF9sb29wX3BvbGljeSgpLgpfZXZlbnRfbG9vcF9wb2xpY3kgPSBOb25lCgojIExvY2sgZm9yIHByb3RlY3RpbmcgdGhlIG9uLXRoZS1mbHkgY3JlYXRpb24gb2YgdGhlIGV2ZW50IGxvb3AgcG9saWN5LgpfbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKCgojIEEgVExTIGZvciB0aGUgcnVubmluZyBldmVudCBsb29wLCB1c2VkIGJ5IF9nZXRfcnVubmluZ19sb29wLgpjbGFzcyBfUnVubmluZ0xvb3AodGhyZWFkaW5nLmxvY2FsKToKICAgIGxvb3BfcGlkID0gKE5vbmUsIE5vbmUpCgoKX3J1bm5pbmdfbG9vcCA9IF9SdW5uaW5nTG9vcCgpCgoKZGVmIGdldF9ydW5uaW5nX2xvb3AoKToKICAgICIiIlJldHVybiB0aGUgcnVubmluZyBldmVudCBsb29wLiAgUmFpc2UgYSBSdW50aW1lRXJyb3IgaWYgdGhlcmUgaXMgbm9uZS4KCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHRocmVhZC1zcGVjaWZpYy4KICAgICIiIgogICAgIyBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIEMgKHNlZSBfYXN5bmNpb21vZHVsZS5jKQogICAgbG9vcCA9IF9nZXRfcnVubmluZ19sb29wKCkKICAgIGlmIGxvb3AgaXMgTm9uZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ25vIHJ1bm5pbmcgZXZlbnQgbG9vcCcpCiAgICByZXR1cm4gbG9vcAoKCmRlZiBfZ2V0X3J1bm5pbmdfbG9vcCgpOgogICAgIiIiUmV0dXJuIHRoZSBydW5uaW5nIGV2ZW50IGxvb3Agb3IgTm9uZS4KCiAgICBUaGlzIGlzIGEgbG93LWxldmVsIGZ1bmN0aW9uIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgZXZlbnQgbG9vcHMuCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHRocmVhZC1zcGVjaWZpYy4KICAgICIiIgogICAgIyBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIEMgKHNlZSBfYXN5bmNpb21vZHVsZS5jKQogICAgcnVubmluZ19sb29wLCBwaWQgPSBfcnVubmluZ19sb29wLmxvb3BfcGlkCiAgICBpZiBydW5uaW5nX2xvb3AgaXMgbm90IE5vbmUgYW5kIHBpZCA9PSBvcy5nZXRwaWQoKToKICAgICAgICByZXR1cm4gcnVubmluZ19sb29wCgoKZGVmIF9zZXRfcnVubmluZ19sb29wKGxvb3ApOgogICAgIiIiU2V0IHRoZSBydW5uaW5nIGV2ZW50IGxvb3AuCgogICAgVGhpcyBpcyBhIGxvdy1sZXZlbCBmdW5jdGlvbiBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IGV2ZW50IGxvb3BzLgogICAgVGhpcyBmdW5jdGlvbiBpcyB0aHJlYWQtc3BlY2lmaWMuCiAgICAiIiIKICAgICMgTk9URTogdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBpbiBDIChzZWUgX2FzeW5jaW9tb2R1bGUuYykKICAgIF9ydW5uaW5nX2xvb3AubG9vcF9waWQgPSAobG9vcCwgb3MuZ2V0cGlkKCkpCgoKZGVmIF9pbml0X2V2ZW50X2xvb3BfcG9saWN5KCk6CiAgICBnbG9iYWwgX2V2ZW50X2xvb3BfcG9saWN5CiAgICB3aXRoIF9sb2NrOgogICAgICAgIGlmIF9ldmVudF9sb29wX3BvbGljeSBpcyBOb25lOiAgIyBwcmFnbWE6IG5vIGJyYW5jaAogICAgICAgICAgICBmcm9tIC4gaW1wb3J0IERlZmF1bHRFdmVudExvb3BQb2xpY3kKICAgICAgICAgICAgX2V2ZW50X2xvb3BfcG9saWN5ID0gRGVmYXVsdEV2ZW50TG9vcFBvbGljeSgpCgoKZGVmIGdldF9ldmVudF9sb29wX3BvbGljeSgpOgogICAgIiIiR2V0IHRoZSBjdXJyZW50IGV2ZW50IGxvb3AgcG9saWN5LiIiIgogICAgaWYgX2V2ZW50X2xvb3BfcG9saWN5IGlzIE5vbmU6CiAgICAgICAgX2luaXRfZXZlbnRfbG9vcF9wb2xpY3koKQogICAgcmV0dXJuIF9ldmVudF9sb29wX3BvbGljeQoKCmRlZiBzZXRfZXZlbnRfbG9vcF9wb2xpY3kocG9saWN5KToKICAgICIiIlNldCB0aGUgY3VycmVudCBldmVudCBsb29wIHBvbGljeS4KCiAgICBJZiBwb2xpY3kgaXMgTm9uZSwgdGhlIGRlZmF1bHQgcG9saWN5IGlzIHJlc3RvcmVkLiIiIgogICAgZ2xvYmFsIF9ldmVudF9sb29wX3BvbGljeQogICAgaWYgcG9saWN5IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShwb2xpY3ksIEFic3RyYWN0RXZlbnRMb29wUG9saWN5KToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJwb2xpY3kgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBBYnN0cmFjdEV2ZW50TG9vcFBvbGljeSBvciBOb25lLCBub3QgJ3t0eXBlKHBvbGljeSkuX19uYW1lX199JyIpCiAgICBfZXZlbnRfbG9vcF9wb2xpY3kgPSBwb2xpY3kKCgpkZWYgZ2V0X2V2ZW50X2xvb3AoKToKICAgICIiIlJldHVybiBhbiBhc3luY2lvIGV2ZW50IGxvb3AuCgogICAgV2hlbiBjYWxsZWQgZnJvbSBhIGNvcm91dGluZSBvciBhIGNhbGxiYWNrIChlLmcuIHNjaGVkdWxlZCB3aXRoIGNhbGxfc29vbgogICAgb3Igc2ltaWxhciBBUEkpLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgcnVubmluZyBldmVudCBsb29wLgoKICAgIElmIHRoZXJlIGlzIG5vIHJ1bm5pbmcgZXZlbnQgbG9vcCBzZXQsIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybgogICAgdGhlIHJlc3VsdCBvZiBgZ2V0X2V2ZW50X2xvb3BfcG9saWN5KCkuZ2V0X2V2ZW50X2xvb3AoKWAgY2FsbC4KICAgICIiIgogICAgIyBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIEMgKHNlZSBfYXN5bmNpb21vZHVsZS5jKQogICAgcmV0dXJuIF9weV9fZ2V0X2V2ZW50X2xvb3AoKQoKCmRlZiBfZ2V0X2V2ZW50X2xvb3Aoc3RhY2tsZXZlbD0zKToKICAgICMgVGhpcyBpbnRlcm5hbCBtZXRob2QgaXMgZ29pbmcgYXdheSBpbiBQeXRob24gMy4xMiwgbGVmdCBoZXJlIG9ubHkgZm9yCiAgICAjIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggMy4xMC4wIC0gMy4xMC44IGFuZCAzLjExLjAuCiAgICAjIFNpbWlsYXJseSwgdGhpcyBtZXRob2QncyBDIGVxdWl2YWxlbnQgaW4gX2FzeW5jaW8gaXMgZ29pbmcgYXdheSBhcyB3ZWxsLgogICAgIyBTZWUgR0gtOTk5NDkgZm9yIG1vcmUgZGV0YWlscy4KICAgIGN1cnJlbnRfbG9vcCA9IF9nZXRfcnVubmluZ19sb29wKCkKICAgIGlmIGN1cnJlbnRfbG9vcCBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gY3VycmVudF9sb29wCiAgICByZXR1cm4gZ2V0X2V2ZW50X2xvb3BfcG9saWN5KCkuZ2V0X2V2ZW50X2xvb3AoKQoKCmRlZiBzZXRfZXZlbnRfbG9vcChsb29wKToKICAgICIiIkVxdWl2YWxlbnQgdG8gY2FsbGluZyBnZXRfZXZlbnRfbG9vcF9wb2xpY3koKS5zZXRfZXZlbnRfbG9vcChsb29wKS4iIiIKICAgIGdldF9ldmVudF9sb29wX3BvbGljeSgpLnNldF9ldmVudF9sb29wKGxvb3ApCgoKZGVmIG5ld19ldmVudF9sb29wKCk6CiAgICAiIiJFcXVpdmFsZW50IHRvIGNhbGxpbmcgZ2V0X2V2ZW50X2xvb3BfcG9saWN5KCkubmV3X2V2ZW50X2xvb3AoKS4iIiIKICAgIHJldHVybiBnZXRfZXZlbnRfbG9vcF9wb2xpY3koKS5uZXdfZXZlbnRfbG9vcCgpCgoKZGVmIGdldF9jaGlsZF93YXRjaGVyKCk6CiAgICAiIiJFcXVpdmFsZW50IHRvIGNhbGxpbmcgZ2V0X2V2ZW50X2xvb3BfcG9saWN5KCkuZ2V0X2NoaWxkX3dhdGNoZXIoKS4iIiIKICAgIHJldHVybiBnZXRfZXZlbnRfbG9vcF9wb2xpY3koKS5nZXRfY2hpbGRfd2F0Y2hlcigpCgoKZGVmIHNldF9jaGlsZF93YXRjaGVyKHdhdGNoZXIpOgogICAgIiIiRXF1aXZhbGVudCB0byBjYWxsaW5nCiAgICBnZXRfZXZlbnRfbG9vcF9wb2xpY3koKS5zZXRfY2hpbGRfd2F0Y2hlcih3YXRjaGVyKS4iIiIKICAgIHJldHVybiBnZXRfZXZlbnRfbG9vcF9wb2xpY3koKS5zZXRfY2hpbGRfd2F0Y2hlcih3YXRjaGVyKQoKCiMgQWxpYXMgcHVyZS1QeXRob24gaW1wbGVtZW50YXRpb25zIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgpfcHlfX2dldF9ydW5uaW5nX2xvb3AgPSBfZ2V0X3J1bm5pbmdfbG9vcApfcHlfX3NldF9ydW5uaW5nX2xvb3AgPSBfc2V0X3J1bm5pbmdfbG9vcApfcHlfZ2V0X3J1bm5pbmdfbG9vcCA9IGdldF9ydW5uaW5nX2xvb3AKX3B5X2dldF9ldmVudF9sb29wID0gZ2V0X2V2ZW50X2xvb3AKX3B5X19nZXRfZXZlbnRfbG9vcCA9IF9nZXRfZXZlbnRfbG9vcAoKCnRyeToKICAgICMgZ2V0X2V2ZW50X2xvb3AoKSBpcyBvbmUgb2YgdGhlIG1vc3QgZnJlcXVlbnRseSBjYWxsZWQKICAgICMgZnVuY3Rpb25zIGluIGFzeW5jaW8uICBQdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcwogICAgIyBhYm91dCA0IHRpbWVzIHNsb3dlciB0aGFuIEMtYWNjZWxlcmF0ZWQuCiAgICBmcm9tIF9hc3luY2lvIGltcG9ydCAoX2dldF9ydW5uaW5nX2xvb3AsIF9zZXRfcnVubmluZ19sb29wLAogICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9ydW5uaW5nX2xvb3AsIGdldF9ldmVudF9sb29wLCBfZ2V0X2V2ZW50X2xvb3ApCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgICMgQWxpYXMgQyBpbXBsZW1lbnRhdGlvbnMgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICBfY19fZ2V0X3J1bm5pbmdfbG9vcCA9IF9nZXRfcnVubmluZ19sb29wCiAgICBfY19fc2V0X3J1bm5pbmdfbG9vcCA9IF9zZXRfcnVubmluZ19sb29wCiAgICBfY19nZXRfcnVubmluZ19sb29wID0gZ2V0X3J1bm5pbmdfbG9vcAogICAgX2NfZ2V0X2V2ZW50X2xvb3AgPSBnZXRfZXZlbnRfbG9vcAogICAgX2NfX2dldF9ldmVudF9sb29wID0gX2dldF9ldmVudF9sb29wClBLAwQUAAAAAAACIKNWS1Xk9tgGAADYBgAAFQAAAGFzeW5jaW8vZXhjZXB0aW9ucy5weSIiImFzeW5jaW8gZXhjZXB0aW9ucy4iIiIKCgpfX2FsbF9fID0gKCdCcm9rZW5CYXJyaWVyRXJyb3InLAogICAgICAgICAgICdDYW5jZWxsZWRFcnJvcicsICdJbnZhbGlkU3RhdGVFcnJvcicsICdUaW1lb3V0RXJyb3InLAogICAgICAgICAgICdJbmNvbXBsZXRlUmVhZEVycm9yJywgJ0xpbWl0T3ZlcnJ1bkVycm9yJywKICAgICAgICAgICAnU2VuZGZpbGVOb3RBdmFpbGFibGVFcnJvcicpCgoKY2xhc3MgQ2FuY2VsbGVkRXJyb3IoQmFzZUV4Y2VwdGlvbik6CiAgICAiIiJUaGUgRnV0dXJlIG9yIFRhc2sgd2FzIGNhbmNlbGxlZC4iIiIKCgpUaW1lb3V0RXJyb3IgPSBUaW1lb3V0RXJyb3IgICMgbWFrZSBsb2NhbCBhbGlhcyBmb3IgdGhlIHN0YW5kYXJkIGV4Y2VwdGlvbgoKCmNsYXNzIEludmFsaWRTdGF0ZUVycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJUaGUgb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUuIiIiCgoKY2xhc3MgU2VuZGZpbGVOb3RBdmFpbGFibGVFcnJvcihSdW50aW1lRXJyb3IpOgogICAgIiIiU2VuZGZpbGUgc3lzY2FsbCBpcyBub3QgYXZhaWxhYmxlLgoKICAgIFJhaXNlZCBpZiBPUyBkb2VzIG5vdCBzdXBwb3J0IHNlbmRmaWxlIHN5c2NhbGwgZm9yIGdpdmVuIHNvY2tldCBvcgogICAgZmlsZSB0eXBlLgogICAgIiIiCgoKY2xhc3MgSW5jb21wbGV0ZVJlYWRFcnJvcihFT0ZFcnJvcik6CiAgICAiIiIKICAgIEluY29tcGxldGUgcmVhZCBlcnJvci4gQXR0cmlidXRlczoKCiAgICAtIHBhcnRpYWw6IHJlYWQgYnl0ZXMgc3RyaW5nIGJlZm9yZSB0aGUgZW5kIG9mIHN0cmVhbSB3YXMgcmVhY2hlZAogICAgLSBleHBlY3RlZDogdG90YWwgbnVtYmVyIG9mIGV4cGVjdGVkIGJ5dGVzIChvciBOb25lIGlmIHVua25vd24pCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWFsLCBleHBlY3RlZCk6CiAgICAgICAgcl9leHBlY3RlZCA9ICd1bmRlZmluZWQnIGlmIGV4cGVjdGVkIGlzIE5vbmUgZWxzZSByZXByKGV4cGVjdGVkKQogICAgICAgIHN1cGVyKCkuX19pbml0X18oZid7bGVuKHBhcnRpYWwpfSBieXRlcyByZWFkIG9uIGEgdG90YWwgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgZid7cl9leHBlY3RlZH0gZXhwZWN0ZWQgYnl0ZXMnKQogICAgICAgIHNlbGYucGFydGlhbCA9IHBhcnRpYWwKICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gdHlwZShzZWxmKSwgKHNlbGYucGFydGlhbCwgc2VsZi5leHBlY3RlZCkKCgpjbGFzcyBMaW1pdE92ZXJydW5FcnJvcihFeGNlcHRpb24pOgogICAgIiIiUmVhY2hlZCB0aGUgYnVmZmVyIGxpbWl0IHdoaWxlIGxvb2tpbmcgZm9yIGEgc2VwYXJhdG9yLgoKICAgIEF0dHJpYnV0ZXM6CiAgICAtIGNvbnN1bWVkOiB0b3RhbCBudW1iZXIgb2YgdG8gYmUgY29uc3VtZWQgYnl0ZXMuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBjb25zdW1lZCk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdlKQogICAgICAgIHNlbGYuY29uc3VtZWQgPSBjb25zdW1lZAoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiB0eXBlKHNlbGYpLCAoc2VsZi5hcmdzWzBdLCBzZWxmLmNvbnN1bWVkKQoKCmNsYXNzIEJyb2tlbkJhcnJpZXJFcnJvcihSdW50aW1lRXJyb3IpOgogICAgIiIiQmFycmllciBpcyBicm9rZW4gYnkgYmFycmllci5hYm9ydCgpIGNhbGwuIiIiClBLAwQUAAAAAAACIKNW6hGUWmQJAABkCQAAGQAAAGFzeW5jaW8vZm9ybWF0X2hlbHBlcnMucHlpbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCBpbnNwZWN0CmltcG9ydCByZXBybGliCmltcG9ydCBzeXMKaW1wb3J0IHRyYWNlYmFjawoKZnJvbSAuIGltcG9ydCBjb25zdGFudHMKCgpkZWYgX2dldF9mdW5jdGlvbl9zb3VyY2UoZnVuYyk6CiAgICBmdW5jID0gaW5zcGVjdC51bndyYXAoZnVuYykKICAgIGlmIGluc3BlY3QuaXNmdW5jdGlvbihmdW5jKToKICAgICAgICBjb2RlID0gZnVuYy5fX2NvZGVfXwogICAgICAgIHJldHVybiAoY29kZS5jb19maWxlbmFtZSwgY29kZS5jb19maXJzdGxpbmVubykKICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgIHJldHVybiBfZ2V0X2Z1bmN0aW9uX3NvdXJjZShmdW5jLmZ1bmMpCiAgICBpZiBpc2luc3RhbmNlKGZ1bmMsIGZ1bmN0b29scy5wYXJ0aWFsbWV0aG9kKToKICAgICAgICByZXR1cm4gX2dldF9mdW5jdGlvbl9zb3VyY2UoZnVuYy5mdW5jKQogICAgcmV0dXJuIE5vbmUKCgpkZWYgX2Zvcm1hdF9jYWxsYmFja19zb3VyY2UoZnVuYywgYXJncyk6CiAgICBmdW5jX3JlcHIgPSBfZm9ybWF0X2NhbGxiYWNrKGZ1bmMsIGFyZ3MsIE5vbmUpCiAgICBzb3VyY2UgPSBfZ2V0X2Z1bmN0aW9uX3NvdXJjZShmdW5jKQogICAgaWYgc291cmNlOgogICAgICAgIGZ1bmNfcmVwciArPSBmJyBhdCB7c291cmNlWzBdfTp7c291cmNlWzFdfScKICAgIHJldHVybiBmdW5jX3JlcHIKCgpkZWYgX2Zvcm1hdF9hcmdzX2FuZF9rd2FyZ3MoYXJncywga3dhcmdzKToKICAgICIiIkZvcm1hdCBmdW5jdGlvbiBhcmd1bWVudHMgYW5kIGtleXdvcmQgYXJndW1lbnRzLgoKICAgIFNwZWNpYWwgY2FzZSBmb3IgYSBzaW5nbGUgcGFyYW1ldGVyOiAoJ2hlbGxvJywpIGlzIGZvcm1hdHRlZCBhcyAoJ2hlbGxvJykuCiAgICAiIiIKICAgICMgdXNlIHJlcHJsaWIgdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0CiAgICBpdGVtcyA9IFtdCiAgICBpZiBhcmdzOgogICAgICAgIGl0ZW1zLmV4dGVuZChyZXBybGliLnJlcHIoYXJnKSBmb3IgYXJnIGluIGFyZ3MpCiAgICBpZiBrd2FyZ3M6CiAgICAgICAgaXRlbXMuZXh0ZW5kKGYne2t9PXtyZXBybGliLnJlcHIodil9JyBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKSkKICAgIHJldHVybiAnKHt9KScuZm9ybWF0KCcsICcuam9pbihpdGVtcykpCgoKZGVmIF9mb3JtYXRfY2FsbGJhY2soZnVuYywgYXJncywga3dhcmdzLCBzdWZmaXg9JycpOgogICAgaWYgaXNpbnN0YW5jZShmdW5jLCBmdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgc3VmZml4ID0gX2Zvcm1hdF9hcmdzX2FuZF9rd2FyZ3MoYXJncywga3dhcmdzKSArIHN1ZmZpeAogICAgICAgIHJldHVybiBfZm9ybWF0X2NhbGxiYWNrKGZ1bmMuZnVuYywgZnVuYy5hcmdzLCBmdW5jLmtleXdvcmRzLCBzdWZmaXgpCgogICAgaWYgaGFzYXR0cihmdW5jLCAnX19xdWFsbmFtZV9fJykgYW5kIGZ1bmMuX19xdWFsbmFtZV9fOgogICAgICAgIGZ1bmNfcmVwciA9IGZ1bmMuX19xdWFsbmFtZV9fCiAgICBlbGlmIGhhc2F0dHIoZnVuYywgJ19fbmFtZV9fJykgYW5kIGZ1bmMuX19uYW1lX186CiAgICAgICAgZnVuY19yZXByID0gZnVuYy5fX25hbWVfXwogICAgZWxzZToKICAgICAgICBmdW5jX3JlcHIgPSByZXByKGZ1bmMpCgogICAgZnVuY19yZXByICs9IF9mb3JtYXRfYXJnc19hbmRfa3dhcmdzKGFyZ3MsIGt3YXJncykKICAgIGlmIHN1ZmZpeDoKICAgICAgICBmdW5jX3JlcHIgKz0gc3VmZml4CiAgICByZXR1cm4gZnVuY19yZXByCgoKZGVmIGV4dHJhY3Rfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lKToKICAgICIiIlJlcGxhY2VtZW50IGZvciB0cmFjZWJhY2suZXh0cmFjdF9zdGFjaygpIHRoYXQgb25seSBkb2VzIHRoZQogICAgbmVjZXNzYXJ5IHdvcmsgZm9yIGFzeW5jaW8gZGVidWcgbW9kZS4KICAgICIiIgogICAgaWYgZiBpcyBOb25lOgogICAgICAgIGYgPSBzeXMuX2dldGZyYW1lKCkuZl9iYWNrCiAgICBpZiBsaW1pdCBpcyBOb25lOgogICAgICAgICMgTGltaXQgdGhlIGFtb3VudCBvZiB3b3JrIHRvIGEgcmVhc29uYWJsZSBhbW91bnQsIGFzIGV4dHJhY3Rfc3RhY2soKQogICAgICAgICMgY2FuIGJlIGNhbGxlZCBmb3IgZWFjaCBjb3JvdXRpbmUgYW5kIGZ1dHVyZSBpbiBkZWJ1ZyBtb2RlLgogICAgICAgIGxpbWl0ID0gY29uc3RhbnRzLkRFQlVHX1NUQUNLX0RFUFRICiAgICBzdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCh0cmFjZWJhY2sud2Fsa19zdGFjayhmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwX2xpbmVzPUZhbHNlKQogICAgc3RhY2sucmV2ZXJzZSgpCiAgICByZXR1cm4gc3RhY2sKUEsDBBQAAAAAAAIgo1a5FwYKhDcAAIQ3AAASAAAAYXN5bmNpby9mdXR1cmVzLnB5IiIiQSBGdXR1cmUgY2xhc3Mgc2ltaWxhciB0byB0aGUgb25lIGluIFBFUCAzMTQ4LiIiIgoKX19hbGxfXyA9ICgKICAgICdGdXR1cmUnLCAnd3JhcF9mdXR1cmUnLCAnaXNmdXR1cmUnLAopCgppbXBvcnQgY29uY3VycmVudC5mdXR1cmVzCmltcG9ydCBjb250ZXh0dmFycwppbXBvcnQgbG9nZ2luZwppbXBvcnQgc3lzCmZyb20gdHlwZXMgaW1wb3J0IEdlbmVyaWNBbGlhcwoKZnJvbSAuIGltcG9ydCBiYXNlX2Z1dHVyZXMKZnJvbSAuIGltcG9ydCBldmVudHMKZnJvbSAuIGltcG9ydCBleGNlcHRpb25zCmZyb20gLiBpbXBvcnQgZm9ybWF0X2hlbHBlcnMKCgppc2Z1dHVyZSA9IGJhc2VfZnV0dXJlcy5pc2Z1dHVyZQoKCl9QRU5ESU5HID0gYmFzZV9mdXR1cmVzLl9QRU5ESU5HCl9DQU5DRUxMRUQgPSBiYXNlX2Z1dHVyZXMuX0NBTkNFTExFRApfRklOSVNIRUQgPSBiYXNlX2Z1dHVyZXMuX0ZJTklTSEVECgoKU1RBQ0tfREVCVUcgPSBsb2dnaW5nLkRFQlVHIC0gMSAgIyBoZWF2eS1kdXR5IGRlYnVnZ2luZwoKCmNsYXNzIEZ1dHVyZToKICAgICIiIlRoaXMgY2xhc3MgaXMgKmFsbW9zdCogY29tcGF0aWJsZSB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuCgogICAgRGlmZmVyZW5jZXM6CgogICAgLSBUaGlzIGNsYXNzIGlzIG5vdCB0aHJlYWQtc2FmZS4KCiAgICAtIHJlc3VsdCgpIGFuZCBleGNlcHRpb24oKSBkbyBub3QgdGFrZSBhIHRpbWVvdXQgYXJndW1lbnQgYW5kCiAgICAgIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBmdXR1cmUgaXNuJ3QgZG9uZSB5ZXQuCgogICAgLSBDYWxsYmFja3MgcmVnaXN0ZXJlZCB3aXRoIGFkZF9kb25lX2NhbGxiYWNrKCkgYXJlIGFsd2F5cyBjYWxsZWQKICAgICAgdmlhIHRoZSBldmVudCBsb29wJ3MgY2FsbF9zb29uKCkuCgogICAgLSBUaGlzIGNsYXNzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHdhaXQoKSBhbmQgYXNfY29tcGxldGVkKCkKICAgICAgbWV0aG9kcyBpbiB0aGUgY29uY3VycmVudC5mdXR1cmVzIHBhY2thZ2UuCgogICAgKEluIFB5dGhvbiAzLjQgb3IgbGF0ZXIgd2UgbWF5IGJlIGFibGUgdG8gdW5pZnkgdGhlIGltcGxlbWVudGF0aW9ucy4pCiAgICAiIiIKCiAgICAjIENsYXNzIHZhcmlhYmxlcyBzZXJ2aW5nIGFzIGRlZmF1bHRzIGZvciBpbnN0YW5jZSB2YXJpYWJsZXMuCiAgICBfc3RhdGUgPSBfUEVORElORwogICAgX3Jlc3VsdCA9IE5vbmUKICAgIF9leGNlcHRpb24gPSBOb25lCiAgICBfbG9vcCA9IE5vbmUKICAgIF9zb3VyY2VfdHJhY2ViYWNrID0gTm9uZQogICAgX2NhbmNlbF9tZXNzYWdlID0gTm9uZQogICAgIyBBIHNhdmVkIENhbmNlbGxlZEVycm9yIGZvciBsYXRlciBjaGFpbmluZyBhcyBhbiBleGNlcHRpb24gY29udGV4dC4KICAgIF9jYW5jZWxsZWRfZXhjID0gTm9uZQoKICAgICMgVGhpcyBmaWVsZCBpcyB1c2VkIGZvciBhIGR1YWwgcHVycG9zZToKICAgICMgLSBJdHMgcHJlc2VuY2UgaXMgYSBtYXJrZXIgdG8gZGVjbGFyZSB0aGF0IGEgY2xhc3MgaW1wbGVtZW50cwogICAgIyAgIHRoZSBGdXR1cmUgcHJvdG9jb2wgKGkuZS4gaXMgaW50ZW5kZWQgdG8gYmUgZHVjay10eXBlIGNvbXBhdGlibGUpLgogICAgIyAgIFRoZSB2YWx1ZSBtdXN0IGFsc28gYmUgbm90LU5vbmUsIHRvIGVuYWJsZSBhIHN1YmNsYXNzIHRvIGRlY2xhcmUKICAgICMgICB0aGF0IGl0IGlzIG5vdCBjb21wYXRpYmxlIGJ5IHNldHRpbmcgdGhpcyB0byBOb25lLgogICAgIyAtIEl0IGlzIHNldCBieSBfX2l0ZXJfXygpIGJlbG93IHNvIHRoYXQgVGFzay5fc3RlcCgpIGNhbiB0ZWxsCiAgICAjICAgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbgogICAgIyAgIGBhd2FpdCBGdXR1cmUoKWAgb3JgeWllbGQgZnJvbSBGdXR1cmUoKWAgKGNvcnJlY3QpIHZzLgogICAgIyAgIGB5aWVsZCBGdXR1cmUoKWAgKGluY29ycmVjdCkuCiAgICBfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcgPSBGYWxzZQoKICAgIF9fbG9nX3RyYWNlYmFjayA9IEZhbHNlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICosIGxvb3A9Tm9uZSk6CiAgICAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgZnV0dXJlLgoKICAgICAgICBUaGUgb3B0aW9uYWwgZXZlbnRfbG9vcCBhcmd1bWVudCBhbGxvd3MgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBldmVudAogICAgICAgIGxvb3Agb2JqZWN0IHVzZWQgYnkgdGhlIGZ1dHVyZS4gSWYgaXQncyBub3QgcHJvdmlkZWQsIHRoZSBmdXR1cmUgdXNlcwogICAgICAgIHRoZSBkZWZhdWx0IGV2ZW50IGxvb3AuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbG9vcCBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9sb29wID0gZXZlbnRzLl9nZXRfZXZlbnRfbG9vcCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbG9vcCA9IGxvb3AKICAgICAgICBzZWxmLl9jYWxsYmFja3MgPSBbXQogICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIHNlbGYuX3NvdXJjZV90cmFjZWJhY2sgPSBmb3JtYXRfaGVscGVycy5leHRyYWN0X3N0YWNrKAogICAgICAgICAgICAgICAgc3lzLl9nZXRmcmFtZSgxKSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGJhc2VfZnV0dXJlcy5fZnV0dXJlX3JlcHIoc2VsZikKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fX2xvZ190cmFjZWJhY2s6CiAgICAgICAgICAgICMgc2V0X2V4Y2VwdGlvbigpIHdhcyBub3QgY2FsbGVkLCBvciByZXN1bHQoKSBvciBleGNlcHRpb24oKQogICAgICAgICAgICAjIGhhcyBjb25zdW1lZCB0aGUgZXhjZXB0aW9uCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGV4YyA9IHNlbGYuX2V4Y2VwdGlvbgogICAgICAgIGNvbnRleHQgPSB7CiAgICAgICAgICAgICdtZXNzYWdlJzoKICAgICAgICAgICAgICAgIGYne3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZCcsCiAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICdmdXR1cmUnOiBzZWxmLAogICAgICAgIH0KICAgICAgICBpZiBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrOgogICAgICAgICAgICBjb250ZXh0Wydzb3VyY2VfdHJhY2ViYWNrJ10gPSBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrCiAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnRleHQpCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZChHZW5lcmljQWxpYXMpCgogICAgQHByb3BlcnR5CiAgICBkZWYgX2xvZ190cmFjZWJhY2soc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19sb2dfdHJhY2ViYWNrCgogICAgQF9sb2dfdHJhY2ViYWNrLnNldHRlcgogICAgZGVmIF9sb2dfdHJhY2ViYWNrKHNlbGYsIHZhbCk6CiAgICAgICAgaWYgdmFsOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdfbG9nX3RyYWNlYmFjayBjYW4gb25seSBiZSBzZXQgdG8gRmFsc2UnKQogICAgICAgIHNlbGYuX19sb2dfdHJhY2ViYWNrID0gRmFsc2UKCiAgICBkZWYgZ2V0X2xvb3Aoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBldmVudCBsb29wIHRoZSBGdXR1cmUgaXMgYm91bmQgdG8uIiIiCiAgICAgICAgbG9vcCA9IHNlbGYuX2xvb3AKICAgICAgICBpZiBsb29wIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRnV0dXJlIG9iamVjdCBpcyBub3QgaW5pdGlhbGl6ZWQuIikKICAgICAgICByZXR1cm4gbG9vcAoKICAgIGRlZiBfbWFrZV9jYW5jZWxsZWRfZXJyb3Ioc2VsZik6CiAgICAgICAgIiIiQ3JlYXRlIHRoZSBDYW5jZWxsZWRFcnJvciB0byByYWlzZSBpZiB0aGUgRnV0dXJlIGlzIGNhbmNlbGxlZC4KCiAgICAgICAgVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSB3aGVuIGhhbmRsaW5nIGEgY2FuY2VsbGF0aW9uIHNpbmNlCiAgICAgICAgaXQgZXJhc2VzIHRoZSBzYXZlZCBjb250ZXh0IGV4Y2VwdGlvbiB2YWx1ZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9jYW5jZWxsZWRfZXhjIGlzIG5vdCBOb25lOgogICAgICAgICAgICBleGMgPSBzZWxmLl9jYW5jZWxsZWRfZXhjCiAgICAgICAgICAgIHNlbGYuX2NhbmNlbGxlZF9leGMgPSBOb25lCiAgICAgICAgICAgIHJldHVybiBleGMKCiAgICAgICAgaWYgc2VsZi5fY2FuY2VsX21lc3NhZ2UgaXMgTm9uZToKICAgICAgICAgICAgZXhjID0gZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcigpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZXhjID0gZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcihzZWxmLl9jYW5jZWxfbWVzc2FnZSkKICAgICAgICBleGMuX19jb250ZXh0X18gPSBzZWxmLl9jYW5jZWxsZWRfZXhjCiAgICAgICAgIyBSZW1vdmUgdGhlIHJlZmVyZW5jZSBzaW5jZSB3ZSBkb24ndCBuZWVkIHRoaXMgYW55bW9yZS4KICAgICAgICBzZWxmLl9jYW5jZWxsZWRfZXhjID0gTm9uZQogICAgICAgIHJldHVybiBleGMKCiAgICBkZWYgY2FuY2VsKHNlbGYsIG1zZz1Ob25lKToKICAgICAgICAiIiJDYW5jZWwgdGhlIGZ1dHVyZSBhbmQgc2NoZWR1bGUgY2FsbGJhY2tzLgoKICAgICAgICBJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSBvciBjYW5jZWxsZWQsIHJldHVybiBGYWxzZS4gIE90aGVyd2lzZSwKICAgICAgICBjaGFuZ2UgdGhlIGZ1dHVyZSdzIHN0YXRlIHRvIGNhbmNlbGxlZCwgc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQKICAgICAgICByZXR1cm4gVHJ1ZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9fbG9nX3RyYWNlYmFjayA9IEZhbHNlCiAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gX1BFTkRJTkc6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHNlbGYuX3N0YXRlID0gX0NBTkNFTExFRAogICAgICAgIHNlbGYuX2NhbmNlbF9tZXNzYWdlID0gbXNnCiAgICAgICAgc2VsZi5fX3NjaGVkdWxlX2NhbGxiYWNrcygpCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgX19zY2hlZHVsZV9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgIiIiSW50ZXJuYWw6IEFzayB0aGUgZXZlbnQgbG9vcCB0byBjYWxsIGFsbCBjYWxsYmFja3MuCgogICAgICAgIFRoZSBjYWxsYmFja3MgYXJlIHNjaGVkdWxlZCB0byBiZSBjYWxsZWQgYXMgc29vbiBhcyBwb3NzaWJsZS4gQWxzbwogICAgICAgIGNsZWFycyB0aGUgY2FsbGJhY2sgbGlzdC4KICAgICAgICAiIiIKICAgICAgICBjYWxsYmFja3MgPSBzZWxmLl9jYWxsYmFja3NbOl0KICAgICAgICBpZiBub3QgY2FsbGJhY2tzOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgc2VsZi5fY2FsbGJhY2tzWzpdID0gW10KICAgICAgICBmb3IgY2FsbGJhY2ssIGN0eCBpbiBjYWxsYmFja3M6CiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKGNhbGxiYWNrLCBzZWxmLCBjb250ZXh0PWN0eCkKCiAgICBkZWYgY2FuY2VsbGVkKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgd2FzIGNhbmNlbGxlZC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGUgPT0gX0NBTkNFTExFRAoKICAgICMgRG9uJ3QgaW1wbGVtZW50IHJ1bm5pbmcoKTsgc2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxODY5OQoKICAgIGRlZiBkb25lKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgaXMgZG9uZS4KCiAgICAgICAgRG9uZSBtZWFucyBlaXRoZXIgdGhhdCBhIHJlc3VsdCAvIGV4Y2VwdGlvbiBhcmUgYXZhaWxhYmxlLCBvciB0aGF0IHRoZQogICAgICAgIGZ1dHVyZSB3YXMgY2FuY2VsbGVkLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZSAhPSBfUEVORElORwoKICAgIGRlZiByZXN1bHQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSByZXN1bHQgdGhpcyBmdXR1cmUgcmVwcmVzZW50cy4KCiAgICAgICAgSWYgdGhlIGZ1dHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJhaXNlcyBDYW5jZWxsZWRFcnJvci4gIElmIHRoZQogICAgICAgIGZ1dHVyZSdzIHJlc3VsdCBpc24ndCB5ZXQgYXZhaWxhYmxlLCByYWlzZXMgSW52YWxpZFN0YXRlRXJyb3IuICBJZgogICAgICAgIHRoZSBmdXR1cmUgaXMgZG9uZSBhbmQgaGFzIGFuIGV4Y2VwdGlvbiBzZXQsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBfQ0FOQ0VMTEVEOgogICAgICAgICAgICBleGMgPSBzZWxmLl9tYWtlX2NhbmNlbGxlZF9lcnJvcigpCiAgICAgICAgICAgIHJhaXNlIGV4YwogICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IF9GSU5JU0hFRDoKICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5JbnZhbGlkU3RhdGVFcnJvcignUmVzdWx0IGlzIG5vdCByZWFkeS4nKQogICAgICAgIHNlbGYuX19sb2dfdHJhY2ViYWNrID0gRmFsc2UKICAgICAgICBpZiBzZWxmLl9leGNlcHRpb24gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuX2V4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayhzZWxmLl9leGNlcHRpb25fdGIpCiAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3VsdAoKICAgIGRlZiBleGNlcHRpb24oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBleGNlcHRpb24gdGhhdCB3YXMgc2V0IG9uIHRoaXMgZnV0dXJlLgoKICAgICAgICBUaGUgZXhjZXB0aW9uIChvciBOb25lIGlmIG5vIGV4Y2VwdGlvbiB3YXMgc2V0KSBpcyByZXR1cm5lZCBvbmx5IGlmCiAgICAgICAgdGhlIGZ1dHVyZSBpcyBkb25lLiAgSWYgdGhlIGZ1dHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJhaXNlcwogICAgICAgIENhbmNlbGxlZEVycm9yLiAgSWYgdGhlIGZ1dHVyZSBpc24ndCBkb25lIHlldCwgcmFpc2VzCiAgICAgICAgSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gX0NBTkNFTExFRDoKICAgICAgICAgICAgZXhjID0gc2VsZi5fbWFrZV9jYW5jZWxsZWRfZXJyb3IoKQogICAgICAgICAgICByYWlzZSBleGMKICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBfRklOSVNIRUQ6CiAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSW52YWxpZFN0YXRlRXJyb3IoJ0V4Y2VwdGlvbiBpcyBub3Qgc2V0LicpCiAgICAgICAgc2VsZi5fX2xvZ190cmFjZWJhY2sgPSBGYWxzZQogICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb24KCiAgICBkZWYgYWRkX2RvbmVfY2FsbGJhY2soc2VsZiwgZm4sICosIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgIiIiQWRkIGEgY2FsbGJhY2sgdG8gYmUgcnVuIHdoZW4gdGhlIGZ1dHVyZSBiZWNvbWVzIGRvbmUuCgogICAgICAgIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAtIHRoZSBmdXR1cmUgb2JqZWN0LiBJZgogICAgICAgIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBpcyBjYWxsZWQsIHRoZSBjYWxsYmFjayBpcwogICAgICAgIHNjaGVkdWxlZCB3aXRoIGNhbGxfc29vbi4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBfUEVORElORzoKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oZm4sIHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dHZhcnMuY29weV9jb250ZXh0KCkKICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2tzLmFwcGVuZCgoZm4sIGNvbnRleHQpKQoKICAgICMgTmV3IG1ldGhvZCBub3QgaW4gUEVQIDMxNDguCgogICAgZGVmIHJlbW92ZV9kb25lX2NhbGxiYWNrKHNlbGYsIGZuKToKICAgICAgICAiIiJSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhIGNhbGxiYWNrIGZyb20gdGhlICJjYWxsIHdoZW4gZG9uZSIgbGlzdC4KCiAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNhbGxiYWNrcyByZW1vdmVkLgogICAgICAgICIiIgogICAgICAgIGZpbHRlcmVkX2NhbGxiYWNrcyA9IFsoZiwgY3R4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGYsIGN0eCkgaW4gc2VsZi5fY2FsbGJhY2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGYgIT0gZm5dCiAgICAgICAgcmVtb3ZlZF9jb3VudCA9IGxlbihzZWxmLl9jYWxsYmFja3MpIC0gbGVuKGZpbHRlcmVkX2NhbGxiYWNrcykKICAgICAgICBpZiByZW1vdmVkX2NvdW50OgogICAgICAgICAgICBzZWxmLl9jYWxsYmFja3NbOl0gPSBmaWx0ZXJlZF9jYWxsYmFja3MKICAgICAgICByZXR1cm4gcmVtb3ZlZF9jb3VudAoKICAgICMgU28tY2FsbGVkIGludGVybmFsIG1ldGhvZHMgKG5vdGU6IG5vIHNldF9ydW5uaW5nX29yX25vdGlmeV9jYW5jZWwoKSkuCgogICAgZGVmIHNldF9yZXN1bHQoc2VsZiwgcmVzdWx0KToKICAgICAgICAiIiJNYXJrIHRoZSBmdXR1cmUgZG9uZSBhbmQgc2V0IGl0cyByZXN1bHQuCgogICAgICAgIElmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCByYWlzZXMKICAgICAgICBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBfUEVORElORzoKICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5JbnZhbGlkU3RhdGVFcnJvcihmJ3tzZWxmLl9zdGF0ZX06IHtzZWxmIXJ9JykKICAgICAgICBzZWxmLl9yZXN1bHQgPSByZXN1bHQKICAgICAgICBzZWxmLl9zdGF0ZSA9IF9GSU5JU0hFRAogICAgICAgIHNlbGYuX19zY2hlZHVsZV9jYWxsYmFja3MoKQoKICAgIGRlZiBzZXRfZXhjZXB0aW9uKHNlbGYsIGV4Y2VwdGlvbik6CiAgICAgICAgIiIiTWFyayB0aGUgZnV0dXJlIGRvbmUgYW5kIHNldCBhbiBleGNlcHRpb24uCgogICAgICAgIElmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCByYWlzZXMKICAgICAgICBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBfUEVORElORzoKICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5JbnZhbGlkU3RhdGVFcnJvcihmJ3tzZWxmLl9zdGF0ZX06IHtzZWxmIXJ9JykKICAgICAgICBpZiBpc2luc3RhbmNlKGV4Y2VwdGlvbiwgdHlwZSk6CiAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGV4Y2VwdGlvbigpCiAgICAgICAgaWYgdHlwZShleGNlcHRpb24pIGlzIFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiU3RvcEl0ZXJhdGlvbiBpbnRlcmFjdHMgYmFkbHkgd2l0aCBnZW5lcmF0b3JzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgY2Fubm90IGJlIHJhaXNlZCBpbnRvIGEgRnV0dXJlIikKICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBleGNlcHRpb24KICAgICAgICBzZWxmLl9leGNlcHRpb25fdGIgPSBleGNlcHRpb24uX190cmFjZWJhY2tfXwogICAgICAgIHNlbGYuX3N0YXRlID0gX0ZJTklTSEVECiAgICAgICAgc2VsZi5fX3NjaGVkdWxlX2NhbGxiYWNrcygpCiAgICAgICAgc2VsZi5fX2xvZ190cmFjZWJhY2sgPSBUcnVlCgogICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5kb25lKCk6CiAgICAgICAgICAgIHNlbGYuX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nID0gVHJ1ZQogICAgICAgICAgICB5aWVsZCBzZWxmICAjIFRoaXMgdGVsbHMgVGFzayB0byB3YWl0IGZvciBjb21wbGV0aW9uLgogICAgICAgIGlmIG5vdCBzZWxmLmRvbmUoKToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJhd2FpdCB3YXNuJ3QgdXNlZCB3aXRoIGZ1dHVyZSIpCiAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0KCkgICMgTWF5IHJhaXNlIHRvby4KCiAgICBfX2l0ZXJfXyA9IF9fYXdhaXRfXyAgIyBtYWtlIGNvbXBhdGlibGUgd2l0aCAneWllbGQgZnJvbScuCgoKIyBOZWVkZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCl9QeUZ1dHVyZSA9IEZ1dHVyZQoKCmRlZiBfZ2V0X2xvb3AoZnV0KToKICAgICMgVHJpZXMgdG8gY2FsbCBGdXR1cmUuZ2V0X2xvb3AoKSBpZiBpdCdzIGF2YWlsYWJsZS4KICAgICMgT3RoZXJ3aXNlIGZhbGxiYWNrcyB0byB1c2luZyB0aGUgb2xkICdfbG9vcCcgcHJvcGVydHkuCiAgICB0cnk6CiAgICAgICAgZ2V0X2xvb3AgPSBmdXQuZ2V0X2xvb3AKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICBwYXNzCiAgICBlbHNlOgogICAgICAgIHJldHVybiBnZXRfbG9vcCgpCiAgICByZXR1cm4gZnV0Ll9sb29wCgoKZGVmIF9zZXRfcmVzdWx0X3VubGVzc19jYW5jZWxsZWQoZnV0LCByZXN1bHQpOgogICAgIiIiSGVscGVyIHNldHRpbmcgdGhlIHJlc3VsdCBvbmx5IGlmIHRoZSBmdXR1cmUgd2FzIG5vdCBjYW5jZWxsZWQuIiIiCiAgICBpZiBmdXQuY2FuY2VsbGVkKCk6CiAgICAgICAgcmV0dXJuCiAgICBmdXQuc2V0X3Jlc3VsdChyZXN1bHQpCgoKZGVmIF9jb252ZXJ0X2Z1dHVyZV9leGMoZXhjKToKICAgIGV4Y19jbGFzcyA9IHR5cGUoZXhjKQogICAgaWYgZXhjX2NsYXNzIGlzIGNvbmN1cnJlbnQuZnV0dXJlcy5DYW5jZWxsZWRFcnJvcjoKICAgICAgICByZXR1cm4gZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcigqZXhjLmFyZ3MpCiAgICBlbGlmIGV4Y19jbGFzcyBpcyBjb25jdXJyZW50LmZ1dHVyZXMuVGltZW91dEVycm9yOgogICAgICAgIHJldHVybiBleGNlcHRpb25zLlRpbWVvdXRFcnJvcigqZXhjLmFyZ3MpCiAgICBlbGlmIGV4Y19jbGFzcyBpcyBjb25jdXJyZW50LmZ1dHVyZXMuSW52YWxpZFN0YXRlRXJyb3I6CiAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbnMuSW52YWxpZFN0YXRlRXJyb3IoKmV4Yy5hcmdzKQogICAgZWxzZToKICAgICAgICByZXR1cm4gZXhjCgoKZGVmIF9zZXRfY29uY3VycmVudF9mdXR1cmVfc3RhdGUoY29uY3VycmVudCwgc291cmNlKToKICAgICIiIkNvcHkgc3RhdGUgZnJvbSBhIGZ1dHVyZSB0byBhIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuIiIiCiAgICBhc3NlcnQgc291cmNlLmRvbmUoKQogICAgaWYgc291cmNlLmNhbmNlbGxlZCgpOgogICAgICAgIGNvbmN1cnJlbnQuY2FuY2VsKCkKICAgIGlmIG5vdCBjb25jdXJyZW50LnNldF9ydW5uaW5nX29yX25vdGlmeV9jYW5jZWwoKToKICAgICAgICByZXR1cm4KICAgIGV4Y2VwdGlvbiA9IHNvdXJjZS5leGNlcHRpb24oKQogICAgaWYgZXhjZXB0aW9uIGlzIG5vdCBOb25lOgogICAgICAgIGNvbmN1cnJlbnQuc2V0X2V4Y2VwdGlvbihfY29udmVydF9mdXR1cmVfZXhjKGV4Y2VwdGlvbikpCiAgICBlbHNlOgogICAgICAgIHJlc3VsdCA9IHNvdXJjZS5yZXN1bHQoKQogICAgICAgIGNvbmN1cnJlbnQuc2V0X3Jlc3VsdChyZXN1bHQpCgoKZGVmIF9jb3B5X2Z1dHVyZV9zdGF0ZShzb3VyY2UsIGRlc3QpOgogICAgIiIiSW50ZXJuYWwgaGVscGVyIHRvIGNvcHkgc3RhdGUgZnJvbSBhbm90aGVyIEZ1dHVyZS4KCiAgICBUaGUgb3RoZXIgRnV0dXJlIG1heSBiZSBhIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuCiAgICAiIiIKICAgIGFzc2VydCBzb3VyY2UuZG9uZSgpCiAgICBpZiBkZXN0LmNhbmNlbGxlZCgpOgogICAgICAgIHJldHVybgogICAgYXNzZXJ0IG5vdCBkZXN0LmRvbmUoKQogICAgaWYgc291cmNlLmNhbmNlbGxlZCgpOgogICAgICAgIGRlc3QuY2FuY2VsKCkKICAgIGVsc2U6CiAgICAgICAgZXhjZXB0aW9uID0gc291cmNlLmV4Y2VwdGlvbigpCiAgICAgICAgaWYgZXhjZXB0aW9uIGlzIG5vdCBOb25lOgogICAgICAgICAgICBkZXN0LnNldF9leGNlcHRpb24oX2NvbnZlcnRfZnV0dXJlX2V4YyhleGNlcHRpb24pKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlc3VsdCA9IHNvdXJjZS5yZXN1bHQoKQogICAgICAgICAgICBkZXN0LnNldF9yZXN1bHQocmVzdWx0KQoKCmRlZiBfY2hhaW5fZnV0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24pOgogICAgIiIiQ2hhaW4gdHdvIGZ1dHVyZXMgc28gdGhhdCB3aGVuIG9uZSBjb21wbGV0ZXMsIHNvIGRvZXMgdGhlIG90aGVyLgoKICAgIFRoZSByZXN1bHQgKG9yIGV4Y2VwdGlvbikgb2Ygc291cmNlIHdpbGwgYmUgY29waWVkIHRvIGRlc3RpbmF0aW9uLgogICAgSWYgZGVzdGluYXRpb24gaXMgY2FuY2VsbGVkLCBzb3VyY2UgZ2V0cyBjYW5jZWxsZWQgdG9vLgogICAgQ29tcGF0aWJsZSB3aXRoIGJvdGggYXN5bmNpby5GdXR1cmUgYW5kIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuCiAgICAiIiIKICAgIGlmIG5vdCBpc2Z1dHVyZShzb3VyY2UpIGFuZCBub3QgaXNpbnN0YW5jZShzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZSk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBIGZ1dHVyZSBpcyByZXF1aXJlZCBmb3Igc291cmNlIGFyZ3VtZW50JykKICAgIGlmIG5vdCBpc2Z1dHVyZShkZXN0aW5hdGlvbikgYW5kIG5vdCBpc2luc3RhbmNlKGRlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZSk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBIGZ1dHVyZSBpcyByZXF1aXJlZCBmb3IgZGVzdGluYXRpb24gYXJndW1lbnQnKQogICAgc291cmNlX2xvb3AgPSBfZ2V0X2xvb3Aoc291cmNlKSBpZiBpc2Z1dHVyZShzb3VyY2UpIGVsc2UgTm9uZQogICAgZGVzdF9sb29wID0gX2dldF9sb29wKGRlc3RpbmF0aW9uKSBpZiBpc2Z1dHVyZShkZXN0aW5hdGlvbikgZWxzZSBOb25lCgogICAgZGVmIF9zZXRfc3RhdGUoZnV0dXJlLCBvdGhlcik6CiAgICAgICAgaWYgaXNmdXR1cmUoZnV0dXJlKToKICAgICAgICAgICAgX2NvcHlfZnV0dXJlX3N0YXRlKG90aGVyLCBmdXR1cmUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgX3NldF9jb25jdXJyZW50X2Z1dHVyZV9zdGF0ZShmdXR1cmUsIG90aGVyKQoKICAgIGRlZiBfY2FsbF9jaGVja19jYW5jZWwoZGVzdGluYXRpb24pOgogICAgICAgIGlmIGRlc3RpbmF0aW9uLmNhbmNlbGxlZCgpOgogICAgICAgICAgICBpZiBzb3VyY2VfbG9vcCBpcyBOb25lIG9yIHNvdXJjZV9sb29wIGlzIGRlc3RfbG9vcDoKICAgICAgICAgICAgICAgIHNvdXJjZS5jYW5jZWwoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc291cmNlX2xvb3AuY2FsbF9zb29uX3RocmVhZHNhZmUoc291cmNlLmNhbmNlbCkKCiAgICBkZWYgX2NhbGxfc2V0X3N0YXRlKHNvdXJjZSk6CiAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmNhbmNlbGxlZCgpIGFuZAogICAgICAgICAgICAgICAgZGVzdF9sb29wIGlzIG5vdCBOb25lIGFuZCBkZXN0X2xvb3AuaXNfY2xvc2VkKCkpOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBkZXN0X2xvb3AgaXMgTm9uZSBvciBkZXN0X2xvb3AgaXMgc291cmNlX2xvb3A6CiAgICAgICAgICAgIF9zZXRfc3RhdGUoZGVzdGluYXRpb24sIHNvdXJjZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBkZXN0X2xvb3AuaXNfY2xvc2VkKCk6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZGVzdF9sb29wLmNhbGxfc29vbl90aHJlYWRzYWZlKF9zZXRfc3RhdGUsIGRlc3RpbmF0aW9uLCBzb3VyY2UpCgogICAgZGVzdGluYXRpb24uYWRkX2RvbmVfY2FsbGJhY2soX2NhbGxfY2hlY2tfY2FuY2VsKQogICAgc291cmNlLmFkZF9kb25lX2NhbGxiYWNrKF9jYWxsX3NldF9zdGF0ZSkKCgpkZWYgd3JhcF9mdXR1cmUoZnV0dXJlLCAqLCBsb29wPU5vbmUpOgogICAgIiIiV3JhcCBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlIG9iamVjdC4iIiIKICAgIGlmIGlzZnV0dXJlKGZ1dHVyZSk6CiAgICAgICAgcmV0dXJuIGZ1dHVyZQogICAgYXNzZXJ0IGlzaW5zdGFuY2UoZnV0dXJlLCBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlKSwgXAogICAgICAgIGYnY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZSBpcyBleHBlY3RlZCwgZ290IHtmdXR1cmUhcn0nCiAgICBpZiBsb29wIGlzIE5vbmU6CiAgICAgICAgbG9vcCA9IGV2ZW50cy5fZ2V0X2V2ZW50X2xvb3AoKQogICAgbmV3X2Z1dHVyZSA9IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICBfY2hhaW5fZnV0dXJlKGZ1dHVyZSwgbmV3X2Z1dHVyZSkKICAgIHJldHVybiBuZXdfZnV0dXJlCgoKdHJ5OgogICAgaW1wb3J0IF9hc3luY2lvCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgICMgX0NGdXR1cmUgaXMgbmVlZGVkIGZvciB0ZXN0cy4KICAgIEZ1dHVyZSA9IF9DRnV0dXJlID0gX2FzeW5jaW8uRnV0dXJlClBLAwQUAAAAAAACIKNWtkbujUZKAABGSgAAEAAAAGFzeW5jaW8vbG9ja3MucHkiIiJTeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcy4iIiIKCl9fYWxsX18gPSAoJ0xvY2snLCAnRXZlbnQnLCAnQ29uZGl0aW9uJywgJ1NlbWFwaG9yZScsCiAgICAgICAgICAgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnQmFycmllcicpCgppbXBvcnQgY29sbGVjdGlvbnMKaW1wb3J0IGVudW0KCmZyb20gLiBpbXBvcnQgZXhjZXB0aW9ucwpmcm9tIC4gaW1wb3J0IG1peGlucwpmcm9tIC4gaW1wb3J0IHRhc2tzCgpjbGFzcyBfQ29udGV4dE1hbmFnZXJNaXhpbjoKICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgogICAgICAgIGF3YWl0IHNlbGYuYWNxdWlyZSgpCiAgICAgICAgIyBXZSBoYXZlIG5vIHVzZSBmb3IgdGhlICJhcyAuLi4iICBjbGF1c2UgaW4gdGhlIHdpdGgKICAgICAgICAjIHN0YXRlbWVudCBmb3IgbG9ja3MuCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGMsIHRiKToKICAgICAgICBzZWxmLnJlbGVhc2UoKQoKCmNsYXNzIExvY2soX0NvbnRleHRNYW5hZ2VyTWl4aW4sIG1peGlucy5fTG9vcEJvdW5kTWl4aW4pOgogICAgIiIiUHJpbWl0aXZlIGxvY2sgb2JqZWN0cy4KCiAgICBBIHByaW1pdGl2ZSBsb2NrIGlzIGEgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZSB0aGF0IGlzIG5vdCBvd25lZAogICAgYnkgYSBwYXJ0aWN1bGFyIGNvcm91dGluZSB3aGVuIGxvY2tlZC4gIEEgcHJpbWl0aXZlIGxvY2sgaXMgaW4gb25lCiAgICBvZiB0d28gc3RhdGVzLCAnbG9ja2VkJyBvciAndW5sb2NrZWQnLgoKICAgIEl0IGlzIGNyZWF0ZWQgaW4gdGhlIHVubG9ja2VkIHN0YXRlLiAgSXQgaGFzIHR3byBiYXNpYyBtZXRob2RzLAogICAgYWNxdWlyZSgpIGFuZCByZWxlYXNlKCkuICBXaGVuIHRoZSBzdGF0ZSBpcyB1bmxvY2tlZCwgYWNxdWlyZSgpCiAgICBjaGFuZ2VzIHRoZSBzdGF0ZSB0byBsb2NrZWQgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuICBXaGVuIHRoZQogICAgc3RhdGUgaXMgbG9ja2VkLCBhY3F1aXJlKCkgYmxvY2tzIHVudGlsIGEgY2FsbCB0byByZWxlYXNlKCkgaW4KICAgIGFub3RoZXIgY29yb3V0aW5lIGNoYW5nZXMgaXQgdG8gdW5sb2NrZWQsIHRoZW4gdGhlIGFjcXVpcmUoKSBjYWxsCiAgICByZXNldHMgaXQgdG8gbG9ja2VkIGFuZCByZXR1cm5zLiAgVGhlIHJlbGVhc2UoKSBtZXRob2Qgc2hvdWxkIG9ubHkKICAgIGJlIGNhbGxlZCBpbiB0aGUgbG9ja2VkIHN0YXRlOyBpdCBjaGFuZ2VzIHRoZSBzdGF0ZSB0byB1bmxvY2tlZAogICAgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuICBJZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gcmVsZWFzZSBhbgogICAgdW5sb2NrZWQgbG9jaywgYSBSdW50aW1lRXJyb3Igd2lsbCBiZSByYWlzZWQuCgogICAgV2hlbiBtb3JlIHRoYW4gb25lIGNvcm91dGluZSBpcyBibG9ja2VkIGluIGFjcXVpcmUoKSB3YWl0aW5nIGZvcgogICAgdGhlIHN0YXRlIHRvIHR1cm4gdG8gdW5sb2NrZWQsIG9ubHkgb25lIGNvcm91dGluZSBwcm9jZWVkcyB3aGVuIGEKICAgIHJlbGVhc2UoKSBjYWxsIHJlc2V0cyB0aGUgc3RhdGUgdG8gdW5sb2NrZWQ7IGZpcnN0IGNvcm91dGluZSB3aGljaAogICAgaXMgYmxvY2tlZCBpbiBhY3F1aXJlKCkgaXMgYmVpbmcgcHJvY2Vzc2VkLgoKICAgIGFjcXVpcmUoKSBpcyBhIGNvcm91dGluZSBhbmQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoICdhd2FpdCcuCgogICAgTG9ja3MgYWxzbyBzdXBwb3J0IHRoZSBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgogICAgJ2FzeW5jIHdpdGggbG9jaycgc3RhdGVtZW50IHNob3VsZCBiZSB1c2VkLgoKICAgIFVzYWdlOgoKICAgICAgICBsb2NrID0gTG9jaygpCiAgICAgICAgLi4uCiAgICAgICAgYXdhaXQgbG9jay5hY3F1aXJlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIC4uLgogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGxvY2sucmVsZWFzZSgpCgogICAgQ29udGV4dCBtYW5hZ2VyIHVzYWdlOgoKICAgICAgICBsb2NrID0gTG9jaygpCiAgICAgICAgLi4uCiAgICAgICAgYXN5bmMgd2l0aCBsb2NrOgogICAgICAgICAgICAgLi4uCgogICAgTG9jayBvYmplY3RzIGNhbiBiZSB0ZXN0ZWQgZm9yIGxvY2tpbmcgc3RhdGU6CgogICAgICAgIGlmIG5vdCBsb2NrLmxvY2tlZCgpOgogICAgICAgICAgIGF3YWl0IGxvY2suYWNxdWlyZSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAjIGxvY2sgaXMgYWNxdWlyZWQKICAgICAgICAgICAuLi4KCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fd2FpdGVycyA9IE5vbmUKICAgICAgICBzZWxmLl9sb2NrZWQgPSBGYWxzZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXMgPSBzdXBlcigpLl9fcmVwcl9fKCkKICAgICAgICBleHRyYSA9ICdsb2NrZWQnIGlmIHNlbGYuX2xvY2tlZCBlbHNlICd1bmxvY2tlZCcKICAgICAgICBpZiBzZWxmLl93YWl0ZXJzOgogICAgICAgICAgICBleHRyYSA9IGYne2V4dHJhfSwgd2FpdGVyczp7bGVuKHNlbGYuX3dhaXRlcnMpfScKICAgICAgICByZXR1cm4gZic8e3Jlc1sxOi0xXX0gW3tleHRyYX1dPicKCiAgICBkZWYgbG9ja2VkKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIGxvY2sgaXMgYWNxdWlyZWQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2tlZAoKICAgIGFzeW5jIGRlZiBhY3F1aXJlKHNlbGYpOgogICAgICAgICIiIkFjcXVpcmUgYSBsb2NrLgoKICAgICAgICBUaGlzIG1ldGhvZCBibG9ja3MgdW50aWwgdGhlIGxvY2sgaXMgdW5sb2NrZWQsIHRoZW4gc2V0cyBpdCB0bwogICAgICAgIGxvY2tlZCBhbmQgcmV0dXJucyBUcnVlLgogICAgICAgICIiIgogICAgICAgIGlmIChub3Qgc2VsZi5fbG9ja2VkIGFuZCAoc2VsZi5fd2FpdGVycyBpcyBOb25lIG9yCiAgICAgICAgICAgICAgICBhbGwody5jYW5jZWxsZWQoKSBmb3IgdyBpbiBzZWxmLl93YWl0ZXJzKSkpOgogICAgICAgICAgICBzZWxmLl9sb2NrZWQgPSBUcnVlCiAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgICAgIGlmIHNlbGYuX3dhaXRlcnMgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fd2FpdGVycyA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKICAgICAgICBmdXQgPSBzZWxmLl9nZXRfbG9vcCgpLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIHNlbGYuX3dhaXRlcnMuYXBwZW5kKGZ1dCkKCiAgICAgICAgIyBGaW5hbGx5IGJsb2NrIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBDYW5jZWxsZWRFcnJvcgogICAgICAgICMgaGFuZGxpbmcgYXMgd2UgZG9uJ3Qgd2FudCBDYW5jZWxsZWRFcnJvciB0byBjYWxsCiAgICAgICAgIyBfd2FrZV91cF9maXJzdCgpIGFuZCBhdHRlbXB0IHRvIHdha2UgdXAgaXRzZWxmLgogICAgICAgIHRyeToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYXdhaXQgZnV0CiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLl93YWl0ZXJzLnJlbW92ZShmdXQpCiAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9sb2NrZWQ6CiAgICAgICAgICAgICAgICBzZWxmLl93YWtlX3VwX2ZpcnN0KCkKICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgc2VsZi5fbG9ja2VkID0gVHJ1ZQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHJlbGVhc2Uoc2VsZik6CiAgICAgICAgIiIiUmVsZWFzZSBhIGxvY2suCgogICAgICAgIFdoZW4gdGhlIGxvY2sgaXMgbG9ja2VkLCByZXNldCBpdCB0byB1bmxvY2tlZCwgYW5kIHJldHVybi4KICAgICAgICBJZiBhbnkgb3RoZXIgY29yb3V0aW5lcyBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvciB0aGUgbG9jayB0byBiZWNvbWUKICAgICAgICB1bmxvY2tlZCwgYWxsb3cgZXhhY3RseSBvbmUgb2YgdGhlbSB0byBwcm9jZWVkLgoKICAgICAgICBXaGVuIGludm9rZWQgb24gYW4gdW5sb2NrZWQgbG9jaywgYSBSdW50aW1lRXJyb3IgaXMgcmFpc2VkLgoKICAgICAgICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fbG9ja2VkOgogICAgICAgICAgICBzZWxmLl9sb2NrZWQgPSBGYWxzZQogICAgICAgICAgICBzZWxmLl93YWtlX3VwX2ZpcnN0KCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0xvY2sgaXMgbm90IGFjcXVpcmVkLicpCgogICAgZGVmIF93YWtlX3VwX2ZpcnN0KHNlbGYpOgogICAgICAgICIiIldha2UgdXAgdGhlIGZpcnN0IHdhaXRlciBpZiBpdCBpc24ndCBkb25lLiIiIgogICAgICAgIGlmIG5vdCBzZWxmLl93YWl0ZXJzOgogICAgICAgICAgICByZXR1cm4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGZ1dCA9IG5leHQoaXRlcihzZWxmLl93YWl0ZXJzKSkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgLmRvbmUoKSBuZWNlc3NhcmlseSBtZWFucyB0aGF0IGEgd2FpdGVyIHdpbGwgd2FrZSB1cCBsYXRlciBvbiBhbmQKICAgICAgICAjIGVpdGhlciB0YWtlIHRoZSBsb2NrLCBvciwgaWYgaXQgd2FzIGNhbmNlbGxlZCBhbmQgbG9jayB3YXNuJ3QKICAgICAgICAjIHRha2VuIGFscmVhZHksIHdpbGwgaGl0IHRoaXMgYWdhaW4gYW5kIHdha2UgdXAgYSBuZXcgd2FpdGVyLgogICAgICAgIGlmIG5vdCBmdXQuZG9uZSgpOgogICAgICAgICAgICBmdXQuc2V0X3Jlc3VsdChUcnVlKQoKCmNsYXNzIEV2ZW50KG1peGlucy5fTG9vcEJvdW5kTWl4aW4pOgogICAgIiIiQXN5bmNocm9ub3VzIGVxdWl2YWxlbnQgdG8gdGhyZWFkaW5nLkV2ZW50LgoKICAgIENsYXNzIGltcGxlbWVudGluZyBldmVudCBvYmplY3RzLiBBbiBldmVudCBtYW5hZ2VzIGEgZmxhZyB0aGF0IGNhbiBiZSBzZXQKICAgIHRvIHRydWUgd2l0aCB0aGUgc2V0KCkgbWV0aG9kIGFuZCByZXNldCB0byBmYWxzZSB3aXRoIHRoZSBjbGVhcigpIG1ldGhvZC4KICAgIFRoZSB3YWl0KCkgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgZmxhZyBpcyB0cnVlLiBUaGUgZmxhZyBpcyBpbml0aWFsbHkKICAgIGZhbHNlLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX3dhaXRlcnMgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCiAgICAgICAgc2VsZi5fdmFsdWUgPSBGYWxzZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXMgPSBzdXBlcigpLl9fcmVwcl9fKCkKICAgICAgICBleHRyYSA9ICdzZXQnIGlmIHNlbGYuX3ZhbHVlIGVsc2UgJ3Vuc2V0JwogICAgICAgIGlmIHNlbGYuX3dhaXRlcnM6CiAgICAgICAgICAgIGV4dHJhID0gZid7ZXh0cmF9LCB3YWl0ZXJzOntsZW4oc2VsZi5fd2FpdGVycyl9JwogICAgICAgIHJldHVybiBmJzx7cmVzWzE6LTFdfSBbe2V4dHJhfV0+JwoKICAgIGRlZiBpc19zZXQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGludGVybmFsIGZsYWcgaXMgdHJ1ZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKCiAgICBkZWYgc2V0KHNlbGYpOgogICAgICAgICIiIlNldCB0aGUgaW50ZXJuYWwgZmxhZyB0byB0cnVlLiBBbGwgY29yb3V0aW5lcyB3YWl0aW5nIGZvciBpdCB0bwogICAgICAgIGJlY29tZSB0cnVlIGFyZSBhd2FrZW5lZC4gQ29yb3V0aW5lIHRoYXQgY2FsbCB3YWl0KCkgb25jZSB0aGUgZmxhZyBpcwogICAgICAgIHRydWUgd2lsbCBub3QgYmxvY2sgYXQgYWxsLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBzZWxmLl92YWx1ZToKICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSBUcnVlCgogICAgICAgICAgICBmb3IgZnV0IGluIHNlbGYuX3dhaXRlcnM6CiAgICAgICAgICAgICAgICBpZiBub3QgZnV0LmRvbmUoKToKICAgICAgICAgICAgICAgICAgICBmdXQuc2V0X3Jlc3VsdChUcnVlKQoKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICAiIiJSZXNldCB0aGUgaW50ZXJuYWwgZmxhZyB0byBmYWxzZS4gU3Vic2VxdWVudGx5LCBjb3JvdXRpbmVzIGNhbGxpbmcKICAgICAgICB3YWl0KCkgd2lsbCBibG9jayB1bnRpbCBzZXQoKSBpcyBjYWxsZWQgdG8gc2V0IHRoZSBpbnRlcm5hbCBmbGFnCiAgICAgICAgdG8gdHJ1ZSBhZ2Fpbi4iIiIKICAgICAgICBzZWxmLl92YWx1ZSA9IEZhbHNlCgogICAgYXN5bmMgZGVmIHdhaXQoc2VsZik6CiAgICAgICAgIiIiQmxvY2sgdW50aWwgdGhlIGludGVybmFsIGZsYWcgaXMgdHJ1ZS4KCiAgICAgICAgSWYgdGhlIGludGVybmFsIGZsYWcgaXMgdHJ1ZSBvbiBlbnRyeSwgcmV0dXJuIFRydWUKICAgICAgICBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSwgYmxvY2sgdW50aWwgYW5vdGhlciBjb3JvdXRpbmUgY2FsbHMKICAgICAgICBzZXQoKSB0byBzZXQgdGhlIGZsYWcgdG8gdHJ1ZSwgdGhlbiByZXR1cm4gVHJ1ZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl92YWx1ZToKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgZnV0ID0gc2VsZi5fZ2V0X2xvb3AoKS5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBzZWxmLl93YWl0ZXJzLmFwcGVuZChmdXQpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhd2FpdCBmdXQKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl93YWl0ZXJzLnJlbW92ZShmdXQpCgoKY2xhc3MgQ29uZGl0aW9uKF9Db250ZXh0TWFuYWdlck1peGluLCBtaXhpbnMuX0xvb3BCb3VuZE1peGluKToKICAgICIiIkFzeW5jaHJvbm91cyBlcXVpdmFsZW50IHRvIHRocmVhZGluZy5Db25kaXRpb24uCgogICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGNvbmRpdGlvbiB2YXJpYWJsZSBvYmplY3RzLiBBIGNvbmRpdGlvbiB2YXJpYWJsZQogICAgYWxsb3dzIG9uZSBvciBtb3JlIGNvcm91dGluZXMgdG8gd2FpdCB1bnRpbCB0aGV5IGFyZSBub3RpZmllZCBieSBhbm90aGVyCiAgICBjb3JvdXRpbmUuCgogICAgQSBuZXcgTG9jayBvYmplY3QgaXMgY3JlYXRlZCBhbmQgdXNlZCBhcyB0aGUgdW5kZXJseWluZyBsb2NrLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2s9Tm9uZSk6CiAgICAgICAgaWYgbG9jayBpcyBOb25lOgogICAgICAgICAgICBsb2NrID0gTG9jaygpCgogICAgICAgIHNlbGYuX2xvY2sgPSBsb2NrCiAgICAgICAgIyBFeHBvcnQgdGhlIGxvY2sncyBsb2NrZWQoKSwgYWNxdWlyZSgpIGFuZCByZWxlYXNlKCkgbWV0aG9kcy4KICAgICAgICBzZWxmLmxvY2tlZCA9IGxvY2subG9ja2VkCiAgICAgICAgc2VsZi5hY3F1aXJlID0gbG9jay5hY3F1aXJlCiAgICAgICAgc2VsZi5yZWxlYXNlID0gbG9jay5yZWxlYXNlCgogICAgICAgIHNlbGYuX3dhaXRlcnMgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJlcyA9IHN1cGVyKCkuX19yZXByX18oKQogICAgICAgIGV4dHJhID0gJ2xvY2tlZCcgaWYgc2VsZi5sb2NrZWQoKSBlbHNlICd1bmxvY2tlZCcKICAgICAgICBpZiBzZWxmLl93YWl0ZXJzOgogICAgICAgICAgICBleHRyYSA9IGYne2V4dHJhfSwgd2FpdGVyczp7bGVuKHNlbGYuX3dhaXRlcnMpfScKICAgICAgICByZXR1cm4gZic8e3Jlc1sxOi0xXX0gW3tleHRyYX1dPicKCiAgICBhc3luYyBkZWYgd2FpdChzZWxmKToKICAgICAgICAiIiJXYWl0IHVudGlsIG5vdGlmaWVkLgoKICAgICAgICBJZiB0aGUgY2FsbGluZyBjb3JvdXRpbmUgaGFzIG5vdCBhY3F1aXJlZCB0aGUgbG9jayB3aGVuIHRoaXMKICAgICAgICBtZXRob2QgaXMgY2FsbGVkLCBhIFJ1bnRpbWVFcnJvciBpcyByYWlzZWQuCgogICAgICAgIFRoaXMgbWV0aG9kIHJlbGVhc2VzIHRoZSB1bmRlcmx5aW5nIGxvY2ssIGFuZCB0aGVuIGJsb2NrcwogICAgICAgIHVudGlsIGl0IGlzIGF3YWtlbmVkIGJ5IGEgbm90aWZ5KCkgb3Igbm90aWZ5X2FsbCgpIGNhbGwgZm9yCiAgICAgICAgdGhlIHNhbWUgY29uZGl0aW9uIHZhcmlhYmxlIGluIGFub3RoZXIgY29yb3V0aW5lLiAgT25jZQogICAgICAgIGF3YWtlbmVkLCBpdCByZS1hY3F1aXJlcyB0aGUgbG9jayBhbmQgcmV0dXJucyBUcnVlLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBzZWxmLmxvY2tlZCgpOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2Nhbm5vdCB3YWl0IG9uIHVuLWFjcXVpcmVkIGxvY2snKQoKICAgICAgICBzZWxmLnJlbGVhc2UoKQogICAgICAgIHRyeToKICAgICAgICAgICAgZnV0ID0gc2VsZi5fZ2V0X2xvb3AoKS5jcmVhdGVfZnV0dXJlKCkKICAgICAgICAgICAgc2VsZi5fd2FpdGVycy5hcHBlbmQoZnV0KQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBhd2FpdCBmdXQKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLl93YWl0ZXJzLnJlbW92ZShmdXQpCgogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICMgTXVzdCByZWFjcXVpcmUgbG9jayBldmVuIGlmIHdhaXQgaXMgY2FuY2VsbGVkCiAgICAgICAgICAgIGNhbmNlbGxlZCA9IEZhbHNlCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2VsZi5hY3F1aXJlKCkKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgY2FuY2VsbGVkID0gVHJ1ZQoKICAgICAgICAgICAgaWYgY2FuY2VsbGVkOgogICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcgoKICAgIGFzeW5jIGRlZiB3YWl0X2ZvcihzZWxmLCBwcmVkaWNhdGUpOgogICAgICAgICIiIldhaXQgdW50aWwgYSBwcmVkaWNhdGUgYmVjb21lcyB0cnVlLgoKICAgICAgICBUaGUgcHJlZGljYXRlIHNob3VsZCBiZSBhIGNhbGxhYmxlIHdoaWNoIHJlc3VsdCB3aWxsIGJlCiAgICAgICAgaW50ZXJwcmV0ZWQgYXMgYSBib29sZWFuIHZhbHVlLiAgVGhlIGZpbmFsIHByZWRpY2F0ZSB2YWx1ZSBpcwogICAgICAgIHRoZSByZXR1cm4gdmFsdWUuCiAgICAgICAgIiIiCiAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKICAgICAgICB3aGlsZSBub3QgcmVzdWx0OgogICAgICAgICAgICBhd2FpdCBzZWxmLndhaXQoKQogICAgICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgbm90aWZ5KHNlbGYsIG49MSk6CiAgICAgICAgIiIiQnkgZGVmYXVsdCwgd2FrZSB1cCBvbmUgY29yb3V0aW5lIHdhaXRpbmcgb24gdGhpcyBjb25kaXRpb24sIGlmIGFueS4KICAgICAgICBJZiB0aGUgY2FsbGluZyBjb3JvdXRpbmUgaGFzIG5vdCBhY3F1aXJlZCB0aGUgbG9jayB3aGVuIHRoaXMgbWV0aG9kCiAgICAgICAgaXMgY2FsbGVkLCBhIFJ1bnRpbWVFcnJvciBpcyByYWlzZWQuCgogICAgICAgIFRoaXMgbWV0aG9kIHdha2VzIHVwIGF0IG1vc3QgbiBvZiB0aGUgY29yb3V0aW5lcyB3YWl0aW5nIGZvciB0aGUKICAgICAgICBjb25kaXRpb24gdmFyaWFibGU7IGl0IGlzIGEgbm8tb3AgaWYgbm8gY29yb3V0aW5lcyBhcmUgd2FpdGluZy4KCiAgICAgICAgTm90ZTogYW4gYXdha2VuZWQgY29yb3V0aW5lIGRvZXMgbm90IGFjdHVhbGx5IHJldHVybiBmcm9tIGl0cwogICAgICAgIHdhaXQoKSBjYWxsIHVudGlsIGl0IGNhbiByZWFjcXVpcmUgdGhlIGxvY2suIFNpbmNlIG5vdGlmeSgpIGRvZXMKICAgICAgICBub3QgcmVsZWFzZSB0aGUgbG9jaywgaXRzIGNhbGxlciBzaG91bGQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYubG9ja2VkKCk6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignY2Fubm90IG5vdGlmeSBvbiB1bi1hY3F1aXJlZCBsb2NrJykKCiAgICAgICAgaWR4ID0gMAogICAgICAgIGZvciBmdXQgaW4gc2VsZi5fd2FpdGVyczoKICAgICAgICAgICAgaWYgaWR4ID49IG46CiAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgaWYgbm90IGZ1dC5kb25lKCk6CiAgICAgICAgICAgICAgICBpZHggKz0gMQogICAgICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQoRmFsc2UpCgogICAgZGVmIG5vdGlmeV9hbGwoc2VsZik6CiAgICAgICAgIiIiV2FrZSB1cCBhbGwgdGhyZWFkcyB3YWl0aW5nIG9uIHRoaXMgY29uZGl0aW9uLiBUaGlzIG1ldGhvZCBhY3RzCiAgICAgICAgbGlrZSBub3RpZnkoKSwgYnV0IHdha2VzIHVwIGFsbCB3YWl0aW5nIHRocmVhZHMgaW5zdGVhZCBvZiBvbmUuIElmIHRoZQogICAgICAgIGNhbGxpbmcgdGhyZWFkIGhhcyBub3QgYWNxdWlyZWQgdGhlIGxvY2sgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsCiAgICAgICAgYSBSdW50aW1lRXJyb3IgaXMgcmFpc2VkLgogICAgICAgICIiIgogICAgICAgIHNlbGYubm90aWZ5KGxlbihzZWxmLl93YWl0ZXJzKSkKCgpjbGFzcyBTZW1hcGhvcmUoX0NvbnRleHRNYW5hZ2VyTWl4aW4sIG1peGlucy5fTG9vcEJvdW5kTWl4aW4pOgogICAgIiIiQSBTZW1hcGhvcmUgaW1wbGVtZW50YXRpb24uCgogICAgQSBzZW1hcGhvcmUgbWFuYWdlcyBhbiBpbnRlcm5hbCBjb3VudGVyIHdoaWNoIGlzIGRlY3JlbWVudGVkIGJ5IGVhY2gKICAgIGFjcXVpcmUoKSBjYWxsIGFuZCBpbmNyZW1lbnRlZCBieSBlYWNoIHJlbGVhc2UoKSBjYWxsLiBUaGUgY291bnRlcgogICAgY2FuIG5ldmVyIGdvIGJlbG93IHplcm87IHdoZW4gYWNxdWlyZSgpIGZpbmRzIHRoYXQgaXQgaXMgemVybywgaXQgYmxvY2tzLAogICAgd2FpdGluZyB1bnRpbCBzb21lIG90aGVyIHRocmVhZCBjYWxscyByZWxlYXNlKCkuCgogICAgU2VtYXBob3JlcyBhbHNvIHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KCiAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgZ2l2ZXMgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBpbnRlcm5hbAogICAgY291bnRlcjsgaXQgZGVmYXVsdHMgdG8gMS4gSWYgdGhlIHZhbHVlIGdpdmVuIGlzIGxlc3MgdGhhbiAwLAogICAgVmFsdWVFcnJvciBpcyByYWlzZWQuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CiAgICAgICAgaWYgdmFsdWUgPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJTZW1hcGhvcmUgaW5pdGlhbCB2YWx1ZSBtdXN0IGJlID49IDAiKQogICAgICAgIHNlbGYuX3dhaXRlcnMgPSBOb25lCiAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWx1ZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXMgPSBzdXBlcigpLl9fcmVwcl9fKCkKICAgICAgICBleHRyYSA9ICdsb2NrZWQnIGlmIHNlbGYubG9ja2VkKCkgZWxzZSBmJ3VubG9ja2VkLCB2YWx1ZTp7c2VsZi5fdmFsdWV9JwogICAgICAgIGlmIHNlbGYuX3dhaXRlcnM6CiAgICAgICAgICAgIGV4dHJhID0gZid7ZXh0cmF9LCB3YWl0ZXJzOntsZW4oc2VsZi5fd2FpdGVycyl9JwogICAgICAgIHJldHVybiBmJzx7cmVzWzE6LTFdfSBbe2V4dHJhfV0+JwoKICAgIGRlZiBsb2NrZWQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHNlbWFwaG9yZSBjYW5ub3QgYmUgYWNxdWlyZWQgaW1tZWRpYXRlbHkuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlID09IDAgb3IgKAogICAgICAgICAgICBhbnkobm90IHcuY2FuY2VsbGVkKCkgZm9yIHcgaW4gKHNlbGYuX3dhaXRlcnMgb3IgKCkpKSkKCiAgICBhc3luYyBkZWYgYWNxdWlyZShzZWxmKToKICAgICAgICAiIiJBY3F1aXJlIGEgc2VtYXBob3JlLgoKICAgICAgICBJZiB0aGUgaW50ZXJuYWwgY291bnRlciBpcyBsYXJnZXIgdGhhbiB6ZXJvIG9uIGVudHJ5LAogICAgICAgIGRlY3JlbWVudCBpdCBieSBvbmUgYW5kIHJldHVybiBUcnVlIGltbWVkaWF0ZWx5LiAgSWYgaXQgaXMKICAgICAgICB6ZXJvIG9uIGVudHJ5LCBibG9jaywgd2FpdGluZyB1bnRpbCBzb21lIG90aGVyIGNvcm91dGluZSBoYXMKICAgICAgICBjYWxsZWQgcmVsZWFzZSgpIHRvIG1ha2UgaXQgbGFyZ2VyIHRoYW4gMCwgYW5kIHRoZW4gcmV0dXJuCiAgICAgICAgVHJ1ZS4KICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc2VsZi5sb2NrZWQoKToKICAgICAgICAgICAgc2VsZi5fdmFsdWUgLT0gMQogICAgICAgICAgICByZXR1cm4gVHJ1ZQoKICAgICAgICBpZiBzZWxmLl93YWl0ZXJzIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3dhaXRlcnMgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCiAgICAgICAgZnV0ID0gc2VsZi5fZ2V0X2xvb3AoKS5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBzZWxmLl93YWl0ZXJzLmFwcGVuZChmdXQpCgogICAgICAgICMgRmluYWxseSBibG9jayBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSB0aGUgQ2FuY2VsbGVkRXJyb3IKICAgICAgICAjIGhhbmRsaW5nIGFzIHdlIGRvbid0IHdhbnQgQ2FuY2VsbGVkRXJyb3IgdG8gY2FsbAogICAgICAgICMgX3dha2VfdXBfZmlyc3QoKSBhbmQgYXR0ZW1wdCB0byB3YWtlIHVwIGl0c2VsZi4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGF3YWl0IGZ1dAogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5fd2FpdGVycy5yZW1vdmUoZnV0KQogICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLkNhbmNlbGxlZEVycm9yOgogICAgICAgICAgICBpZiBub3QgZnV0LmNhbmNlbGxlZCgpOgogICAgICAgICAgICAgICAgc2VsZi5fdmFsdWUgKz0gMQogICAgICAgICAgICAgICAgc2VsZi5fd2FrZV91cF9uZXh0KCkKICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgaWYgc2VsZi5fdmFsdWUgPiAwOgogICAgICAgICAgICBzZWxmLl93YWtlX3VwX25leHQoKQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHJlbGVhc2Uoc2VsZik6CiAgICAgICAgIiIiUmVsZWFzZSBhIHNlbWFwaG9yZSwgaW5jcmVtZW50aW5nIHRoZSBpbnRlcm5hbCBjb3VudGVyIGJ5IG9uZS4KCiAgICAgICAgV2hlbiBpdCB3YXMgemVybyBvbiBlbnRyeSBhbmQgYW5vdGhlciBjb3JvdXRpbmUgaXMgd2FpdGluZyBmb3IgaXQgdG8KICAgICAgICBiZWNvbWUgbGFyZ2VyIHRoYW4gemVybyBhZ2Fpbiwgd2FrZSB1cCB0aGF0IGNvcm91dGluZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl92YWx1ZSArPSAxCiAgICAgICAgc2VsZi5fd2FrZV91cF9uZXh0KCkKCiAgICBkZWYgX3dha2VfdXBfbmV4dChzZWxmKToKICAgICAgICAiIiJXYWtlIHVwIHRoZSBmaXJzdCB3YWl0ZXIgdGhhdCBpc24ndCBkb25lLiIiIgogICAgICAgIGlmIG5vdCBzZWxmLl93YWl0ZXJzOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgZm9yIGZ1dCBpbiBzZWxmLl93YWl0ZXJzOgogICAgICAgICAgICBpZiBub3QgZnV0LmRvbmUoKToKICAgICAgICAgICAgICAgIHNlbGYuX3ZhbHVlIC09IDEKICAgICAgICAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KFRydWUpCiAgICAgICAgICAgICAgICByZXR1cm4KCgpjbGFzcyBCb3VuZGVkU2VtYXBob3JlKFNlbWFwaG9yZSk6CiAgICAiIiJBIGJvdW5kZWQgc2VtYXBob3JlIGltcGxlbWVudGF0aW9uLgoKICAgIFRoaXMgcmFpc2VzIFZhbHVlRXJyb3IgaW4gcmVsZWFzZSgpIGlmIGl0IHdvdWxkIGluY3JlYXNlIHRoZSB2YWx1ZQogICAgYWJvdmUgdGhlIGluaXRpYWwgdmFsdWUuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CiAgICAgICAgc2VsZi5fYm91bmRfdmFsdWUgPSB2YWx1ZQogICAgICAgIHN1cGVyKCkuX19pbml0X18odmFsdWUpCgogICAgZGVmIHJlbGVhc2Uoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fdmFsdWUgPj0gc2VsZi5fYm91bmRfdmFsdWU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JvdW5kZWRTZW1hcGhvcmUgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMnKQogICAgICAgIHN1cGVyKCkucmVsZWFzZSgpCgoKCmNsYXNzIF9CYXJyaWVyU3RhdGUoZW51bS5FbnVtKToKICAgIEZJTExJTkcgPSAnZmlsbGluZycKICAgIERSQUlOSU5HID0gJ2RyYWluaW5nJwogICAgUkVTRVRUSU5HID0gJ3Jlc2V0dGluZycKICAgIEJST0tFTiA9ICdicm9rZW4nCgoKY2xhc3MgQmFycmllcihtaXhpbnMuX0xvb3BCb3VuZE1peGluKToKICAgICIiIkFzeW5jaW8gZXF1aXZhbGVudCB0byB0aHJlYWRpbmcuQmFycmllcgoKICAgIEltcGxlbWVudHMgYSBCYXJyaWVyIHByaW1pdGl2ZS4KICAgIFVzZWZ1bCBmb3Igc3luY2hyb25pemluZyBhIGZpeGVkIG51bWJlciBvZiB0YXNrcyBhdCBrbm93biBzeW5jaHJvbml6YXRpb24KICAgIHBvaW50cy4gVGFza3MgYmxvY2sgb24gJ3dhaXQoKScgYW5kIGFyZSBzaW11bHRhbmVvdXNseSBhd29rZW4gb25jZSB0aGV5CiAgICBoYXZlIGFsbCBtYWRlIHRoZWlyIGNhbGwuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydGllcyk6CiAgICAgICAgIiIiQ3JlYXRlIGEgYmFycmllciwgaW5pdGlhbGlzZWQgdG8gJ3BhcnRpZXMnIHRhc2tzLiIiIgogICAgICAgIGlmIHBhcnRpZXMgPCAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwYXJ0aWVzIG11c3QgYmUgPiAwJykKCiAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbigpICMgbm90aWZ5IGFsbCB0YXNrcyB3aGVuIHN0YXRlIGNoYW5nZXMKCiAgICAgICAgc2VsZi5fcGFydGllcyA9IHBhcnRpZXMKICAgICAgICBzZWxmLl9zdGF0ZSA9IF9CYXJyaWVyU3RhdGUuRklMTElORwogICAgICAgIHNlbGYuX2NvdW50ID0gMCAgICAgICAjIGNvdW50IHRhc2tzIGluIEJhcnJpZXIKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmVzID0gc3VwZXIoKS5fX3JlcHJfXygpCiAgICAgICAgZXh0cmEgPSBmJ3tzZWxmLl9zdGF0ZS52YWx1ZX0nCiAgICAgICAgaWYgbm90IHNlbGYuYnJva2VuOgogICAgICAgICAgICBleHRyYSArPSBmJywgd2FpdGVyczp7c2VsZi5uX3dhaXRpbmd9L3tzZWxmLnBhcnRpZXN9JwogICAgICAgIHJldHVybiBmJzx7cmVzWzE6LTFdfSBbe2V4dHJhfV0+JwoKICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgogICAgICAgICMgd2FpdCBmb3IgdGhlIGJhcnJpZXIgcmVhY2hlcyB0aGUgcGFydGllcyBudW1iZXIKICAgICAgICAjIHdoZW4gc3RhcnQgZHJhaW5pbmcgcmVsZWFzZSBhbmQgcmV0dXJuIGluZGV4IG9mIHdhaXRlZCB0YXNrCiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYud2FpdCgpCgogICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgcGFzcwoKICAgIGFzeW5jIGRlZiB3YWl0KHNlbGYpOgogICAgICAgICIiIldhaXQgZm9yIHRoZSBiYXJyaWVyLgoKICAgICAgICBXaGVuIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRhc2tzIGhhdmUgc3RhcnRlZCB3YWl0aW5nLCB0aGV5IGFyZSBhbGwKICAgICAgICBzaW11bHRhbmVvdXNseSBhd29rZW4uCiAgICAgICAgUmV0dXJucyBhbiB1bmlxdWUgYW5kIGluZGl2aWR1YWwgaW5kZXggbnVtYmVyIGZyb20gMCB0byAncGFydGllcy0xJy4KICAgICAgICAiIiIKICAgICAgICBhc3luYyB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgIGF3YWl0IHNlbGYuX2Jsb2NrKCkgIyBCbG9jayB3aGlsZSB0aGUgYmFycmllciBkcmFpbnMgb3IgcmVzZXRzLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpbmRleCA9IHNlbGYuX2NvdW50CiAgICAgICAgICAgICAgICBzZWxmLl9jb3VudCArPSAxCiAgICAgICAgICAgICAgICBpZiBpbmRleCArIDEgPT0gc2VsZi5fcGFydGllczoKICAgICAgICAgICAgICAgICAgICAjIFdlIHJlbGVhc2UgdGhlIGJhcnJpZXIKICAgICAgICAgICAgICAgICAgICBhd2FpdCBzZWxmLl9yZWxlYXNlKCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2VsZi5fd2FpdCgpCiAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50IC09IDEKICAgICAgICAgICAgICAgICMgV2FrZSB1cCBhbnkgdGFza3Mgd2FpdGluZyBmb3IgYmFycmllciB0byBkcmFpbi4KICAgICAgICAgICAgICAgIHNlbGYuX2V4aXQoKQoKICAgIGFzeW5jIGRlZiBfYmxvY2soc2VsZik6CiAgICAgICAgIyBCbG9jayB1bnRpbCB0aGUgYmFycmllciBpcyByZWFkeSBmb3IgdXMsCiAgICAgICAgIyBvciByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgaXMgYnJva2VuLgogICAgICAgICMKICAgICAgICAjIEl0IGlzIGRyYWluaW5nIG9yIHJlc2V0dGluZywgd2FpdCB1bnRpbCBkb25lCiAgICAgICAgIyB1bmxlc3MgYSBDYW5jZWxsZWRFcnJvciBvY2N1cnMKICAgICAgICBhd2FpdCBzZWxmLl9jb25kLndhaXRfZm9yKAogICAgICAgICAgICBsYW1iZGE6IHNlbGYuX3N0YXRlIG5vdCBpbiAoCiAgICAgICAgICAgICAgICBfQmFycmllclN0YXRlLkRSQUlOSU5HLCBfQmFycmllclN0YXRlLlJFU0VUVElORwogICAgICAgICAgICApCiAgICAgICAgKQoKICAgICAgICAjIHNlZSBpZiB0aGUgYmFycmllciBpcyBpbiBhIGJyb2tlbiBzdGF0ZQogICAgICAgIGlmIHNlbGYuX3N0YXRlIGlzIF9CYXJyaWVyU3RhdGUuQlJPS0VOOgogICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkJyb2tlbkJhcnJpZXJFcnJvcigiQmFycmllciBhYm9ydGVkIikKCiAgICBhc3luYyBkZWYgX3JlbGVhc2Uoc2VsZik6CiAgICAgICAgIyBSZWxlYXNlIHRoZSB0YXNrcyB3YWl0aW5nIGluIHRoZSBiYXJyaWVyLgoKICAgICAgICAjIEVudGVyIGRyYWluaW5nIHN0YXRlLgogICAgICAgICMgTmV4dCB3YWl0aW5nIHRhc2tzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgZW5kIG9mIGRyYWluaW5nLgogICAgICAgIHNlbGYuX3N0YXRlID0gX0JhcnJpZXJTdGF0ZS5EUkFJTklORwogICAgICAgIHNlbGYuX2NvbmQubm90aWZ5X2FsbCgpCgogICAgYXN5bmMgZGVmIF93YWl0KHNlbGYpOgogICAgICAgICMgV2FpdCBpbiB0aGUgYmFycmllciB1bnRpbCB3ZSBhcmUgcmVsZWFzZWQuIFJhaXNlIGFuIGV4Y2VwdGlvbgogICAgICAgICMgaWYgdGhlIGJhcnJpZXIgaXMgcmVzZXQgb3IgYnJva2VuLgoKICAgICAgICAjIHdhaXQgZm9yIGVuZCBvZiBmaWxsaW5nCiAgICAgICAgIyB1bmxlc3MgYSBDYW5jZWxsZWRFcnJvciBvY2N1cnMKICAgICAgICBhd2FpdCBzZWxmLl9jb25kLndhaXRfZm9yKGxhbWJkYTogc2VsZi5fc3RhdGUgaXMgbm90IF9CYXJyaWVyU3RhdGUuRklMTElORykKCiAgICAgICAgaWYgc2VsZi5fc3RhdGUgaW4gKF9CYXJyaWVyU3RhdGUuQlJPS0VOLCBfQmFycmllclN0YXRlLlJFU0VUVElORyk6CiAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQnJva2VuQmFycmllckVycm9yKCJBYm9ydCBvciByZXNldCBvZiBiYXJyaWVyIikKCiAgICBkZWYgX2V4aXQoc2VsZik6CiAgICAgICAgIyBJZiB3ZSBhcmUgdGhlIGxhc3QgdGFza3MgdG8gZXhpdCB0aGUgYmFycmllciwgc2lnbmFsIGFueSB0YXNrcwogICAgICAgICMgd2FpdGluZyBmb3IgdGhlIGJhcnJpZXIgdG8gZHJhaW4uCiAgICAgICAgaWYgc2VsZi5fY291bnQgPT0gMDoKICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgaW4gKF9CYXJyaWVyU3RhdGUuUkVTRVRUSU5HLCBfQmFycmllclN0YXRlLkRSQUlOSU5HKToKICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlID0gX0JhcnJpZXJTdGF0ZS5GSUxMSU5HCiAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5X2FsbCgpCgogICAgYXN5bmMgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICIiIlJlc2V0IHRoZSBiYXJyaWVyIHRvIHRoZSBpbml0aWFsIHN0YXRlLgoKICAgICAgICBBbnkgdGFza3MgY3VycmVudGx5IHdhaXRpbmcgd2lsbCBnZXQgdGhlIEJyb2tlbkJhcnJpZXIgZXhjZXB0aW9uCiAgICAgICAgcmFpc2VkLgogICAgICAgICIiIgogICAgICAgIGFzeW5jIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgaWYgc2VsZi5fY291bnQgPiAwOgogICAgICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgaXMgbm90IF9CYXJyaWVyU3RhdGUuUkVTRVRUSU5HOgogICAgICAgICAgICAgICAgICAgICNyZXNldCB0aGUgYmFycmllciwgd2FraW5nIHVwIHRhc2tzCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSBfQmFycmllclN0YXRlLlJFU0VUVElORwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSBfQmFycmllclN0YXRlLkZJTExJTkcKICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnlfYWxsKCkKCiAgICBhc3luYyBkZWYgYWJvcnQoc2VsZik6CiAgICAgICAgIiIiUGxhY2UgdGhlIGJhcnJpZXIgaW50byBhICdicm9rZW4nIHN0YXRlLgoKICAgICAgICBVc2VmdWwgaW4gY2FzZSBvZiBlcnJvci4gIEFueSBjdXJyZW50bHkgd2FpdGluZyB0YXNrcyBhbmQgdGFza3MKICAgICAgICBhdHRlbXB0aW5nIHRvICd3YWl0KCknIHdpbGwgaGF2ZSBCcm9rZW5CYXJyaWVyRXJyb3IgcmFpc2VkLgogICAgICAgICIiIgogICAgICAgIGFzeW5jIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSBfQmFycmllclN0YXRlLkJST0tFTgogICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeV9hbGwoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBhcnRpZXMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgdGFza3MgcmVxdWlyZWQgdG8gdHJpcCB0aGUgYmFycmllci4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fcGFydGllcwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5fd2FpdGluZyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiB0YXNrcyBjdXJyZW50bHkgd2FpdGluZyBhdCB0aGUgYmFycmllci4iIiIKICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpcyBfQmFycmllclN0YXRlLkZJTExJTkc6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb3VudAogICAgICAgIHJldHVybiAwCgogICAgQHByb3BlcnR5CiAgICBkZWYgYnJva2VuKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBiYXJyaWVyIGlzIGluIGEgYnJva2VuIHN0YXRlLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZSBpcyBfQmFycmllclN0YXRlLkJST0tFTgpQSwMEFAAAAAAAAiCjVkV7Q/N8AAAAfAAAAA4AAABhc3luY2lvL2xvZy5weSIiIkxvZ2dpbmcgY29uZmlndXJhdGlvbi4iIiIKCmltcG9ydCBsb2dnaW5nCgoKIyBOYW1lIHRoZSBsb2dnZXIgYWZ0ZXIgdGhlIHBhY2thZ2UuCmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fcGFja2FnZV9fKQpQSwMEFAAAAAAAAiCjVtGJUbfhAQAA4QEAABEAAABhc3luY2lvL21peGlucy5weSIiIkV2ZW50IGxvb3AgbWl4aW5zLiIiIgoKaW1wb3J0IHRocmVhZGluZwpmcm9tIC4gaW1wb3J0IGV2ZW50cwoKX2dsb2JhbF9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQoKCmNsYXNzIF9Mb29wQm91bmRNaXhpbjoKICAgIF9sb29wID0gTm9uZQoKICAgIGRlZiBfZ2V0X2xvb3Aoc2VsZik6CiAgICAgICAgbG9vcCA9IGV2ZW50cy5fZ2V0X3J1bm5pbmdfbG9vcCgpCgogICAgICAgIGlmIHNlbGYuX2xvb3AgaXMgTm9uZToKICAgICAgICAgICAgd2l0aCBfZ2xvYmFsX2xvY2s6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9sb29wIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9vcCA9IGxvb3AKICAgICAgICBpZiBsb29wIGlzIG5vdCBzZWxmLl9sb29wOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZid7c2VsZiFyfSBpcyBib3VuZCB0byBhIGRpZmZlcmVudCBldmVudCBsb29wJykKICAgICAgICByZXR1cm4gbG9vcApQSwMEFAAAAAAAAiCjVrX2GdnwgQAA8IEAABoAAABhc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weSIiIkV2ZW50IGxvb3AgdXNpbmcgYSBwcm9hY3RvciBhbmQgcmVsYXRlZCBjbGFzc2VzLgoKQSBwcm9hY3RvciBpcyBhICJub3RpZnktb24tY29tcGxldGlvbiIgbXVsdGlwbGV4ZXIuICBDdXJyZW50bHkgYQpwcm9hY3RvciBpcyBvbmx5IGltcGxlbWVudGVkIG9uIFdpbmRvd3Mgd2l0aCBJT0NQLgoiIiIKCl9fYWxsX18gPSAnQmFzZVByb2FjdG9yRXZlbnRMb29wJywKCmltcG9ydCBpbwppbXBvcnQgb3MKaW1wb3J0IHNvY2tldAppbXBvcnQgd2FybmluZ3MKaW1wb3J0IHNpZ25hbAppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCBjb2xsZWN0aW9ucwoKZnJvbSAuIGltcG9ydCBiYXNlX2V2ZW50cwpmcm9tIC4gaW1wb3J0IGNvbnN0YW50cwpmcm9tIC4gaW1wb3J0IGZ1dHVyZXMKZnJvbSAuIGltcG9ydCBleGNlcHRpb25zCmZyb20gLiBpbXBvcnQgcHJvdG9jb2xzCmZyb20gLiBpbXBvcnQgc3NscHJvdG8KZnJvbSAuIGltcG9ydCB0cmFuc3BvcnRzCmZyb20gLiBpbXBvcnQgdHJzb2NrCmZyb20gLmxvZyBpbXBvcnQgbG9nZ2VyCgoKZGVmIF9zZXRfc29ja2V0X2V4dHJhKHRyYW5zcG9ydCwgc29jayk6CiAgICB0cmFuc3BvcnQuX2V4dHJhWydzb2NrZXQnXSA9IHRyc29jay5UcmFuc3BvcnRTb2NrZXQoc29jaykKCiAgICB0cnk6CiAgICAgICAgdHJhbnNwb3J0Ll9leHRyYVsnc29ja25hbWUnXSA9IHNvY2suZ2V0c29ja25hbWUoKQogICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKICAgICAgICBpZiB0cmFuc3BvcnQuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKAogICAgICAgICAgICAgICAgImdldHNvY2tuYW1lKCkgZmFpbGVkIG9uICVyIiwgc29jaywgZXhjX2luZm89VHJ1ZSkKCiAgICBpZiAncGVlcm5hbWUnIG5vdCBpbiB0cmFuc3BvcnQuX2V4dHJhOgogICAgICAgIHRyeToKICAgICAgICAgICAgdHJhbnNwb3J0Ll9leHRyYVsncGVlcm5hbWUnXSA9IHNvY2suZ2V0cGVlcm5hbWUoKQogICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CiAgICAgICAgICAgICMgVURQIHNvY2tldHMgbWF5IG5vdCBoYXZlIGEgcGVlciBuYW1lCiAgICAgICAgICAgIHRyYW5zcG9ydC5fZXh0cmFbJ3BlZXJuYW1lJ10gPSBOb25lCgoKY2xhc3MgX1Byb2FjdG9yQmFzZVBpcGVUcmFuc3BvcnQodHJhbnNwb3J0cy5fRmxvd0NvbnRyb2xNaXhpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0cy5CYXNlVHJhbnNwb3J0KToKICAgICIiIkJhc2UgY2xhc3MgZm9yIHBpcGUgYW5kIHNvY2tldCB0cmFuc3BvcnRzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb29wLCBzb2NrLCBwcm90b2NvbCwgd2FpdGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgZXh0cmE9Tm9uZSwgc2VydmVyPU5vbmUpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oZXh0cmEsIGxvb3ApCiAgICAgICAgc2VsZi5fc2V0X2V4dHJhKHNvY2spCiAgICAgICAgc2VsZi5fc29jayA9IHNvY2sKICAgICAgICBzZWxmLnNldF9wcm90b2NvbChwcm90b2NvbCkKICAgICAgICBzZWxmLl9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lICAjIE5vbmUgb3IgYnl0ZWFycmF5LgogICAgICAgIHNlbGYuX3JlYWRfZnV0ID0gTm9uZQogICAgICAgIHNlbGYuX3dyaXRlX2Z1dCA9IE5vbmUKICAgICAgICBzZWxmLl9wZW5kaW5nX3dyaXRlID0gMAogICAgICAgIHNlbGYuX2Nvbm5fbG9zdCA9IDAKICAgICAgICBzZWxmLl9jbG9zaW5nID0gRmFsc2UgICMgU2V0IHdoZW4gY2xvc2UoKSBjYWxsZWQuCiAgICAgICAgc2VsZi5fY2FsbGVkX2Nvbm5lY3Rpb25fbG9zdCA9IEZhbHNlCiAgICAgICAgc2VsZi5fZW9mX3dyaXR0ZW4gPSBGYWxzZQogICAgICAgIGlmIHNlbGYuX3NlcnZlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fc2VydmVyLl9hdHRhY2goKQogICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX3Byb3RvY29sLmNvbm5lY3Rpb25fbWFkZSwgc2VsZikKICAgICAgICBpZiB3YWl0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgb25seSB3YWtlIHVwIHRoZSB3YWl0ZXIgd2hlbiBjb25uZWN0aW9uX21hZGUoKSBoYXMgYmVlbiBjYWxsZWQKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oZnV0dXJlcy5fc2V0X3Jlc3VsdF91bmxlc3NfY2FuY2VsbGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0ZXIsIE5vbmUpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGluZm8gPSBbc2VsZi5fX2NsYXNzX18uX19uYW1lX19dCiAgICAgICAgaWYgc2VsZi5fc29jayBpcyBOb25lOgogICAgICAgICAgICBpbmZvLmFwcGVuZCgnY2xvc2VkJykKICAgICAgICBlbGlmIHNlbGYuX2Nsb3Npbmc6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdjbG9zaW5nJykKICAgICAgICBpZiBzZWxmLl9zb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpbmZvLmFwcGVuZChmJ2ZkPXtzZWxmLl9zb2NrLmZpbGVubygpfScpCiAgICAgICAgaWYgc2VsZi5fcmVhZF9mdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYncmVhZD17c2VsZi5fcmVhZF9mdXQhcn0nKQogICAgICAgIGlmIHNlbGYuX3dyaXRlX2Z1dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaW5mby5hcHBlbmQoZid3cml0ZT17c2VsZi5fd3JpdGVfZnV0IXJ9JykKICAgICAgICBpZiBzZWxmLl9idWZmZXI6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnd3JpdGVfYnVmc2l6ZT17bGVuKHNlbGYuX2J1ZmZlcil9JykKICAgICAgICBpZiBzZWxmLl9lb2Zfd3JpdHRlbjoKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ0VPRiB3cml0dGVuJykKICAgICAgICByZXR1cm4gJzx7fT4nLmZvcm1hdCgnICcuam9pbihpbmZvKSkKCiAgICBkZWYgX3NldF9leHRyYShzZWxmLCBzb2NrKToKICAgICAgICBzZWxmLl9leHRyYVsncGlwZSddID0gc29jawoKICAgIGRlZiBzZXRfcHJvdG9jb2woc2VsZiwgcHJvdG9jb2wpOgogICAgICAgIHNlbGYuX3Byb3RvY29sID0gcHJvdG9jb2wKCiAgICBkZWYgZ2V0X3Byb3RvY29sKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9wcm90b2NvbAoKICAgIGRlZiBpc19jbG9zaW5nKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jbG9zaW5nCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2Nsb3Npbmc6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX2Nsb3NpbmcgPSBUcnVlCiAgICAgICAgc2VsZi5fY29ubl9sb3N0ICs9IDEKICAgICAgICBpZiBub3Qgc2VsZi5fYnVmZmVyIGFuZCBzZWxmLl93cml0ZV9mdXQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi5fY2FsbF9jb25uZWN0aW9uX2xvc3QsIE5vbmUpCiAgICAgICAgaWYgc2VsZi5fcmVhZF9mdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3JlYWRfZnV0LmNhbmNlbCgpCiAgICAgICAgICAgIHNlbGYuX3JlYWRfZnV0ID0gTm9uZQoKICAgIGRlZiBfX2RlbF9fKHNlbGYsIF93YXJuPXdhcm5pbmdzLndhcm4pOgogICAgICAgIGlmIHNlbGYuX3NvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF93YXJuKGYidW5jbG9zZWQgdHJhbnNwb3J0IHtzZWxmIXJ9IiwgUmVzb3VyY2VXYXJuaW5nLCBzb3VyY2U9c2VsZikKICAgICAgICAgICAgc2VsZi5fc29jay5jbG9zZSgpCgogICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHBpcGUgdHJhbnNwb3J0Jyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgT1NFcnJvcik6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXI6ICVzIiwgc2VsZiwgbWVzc2FnZSwgZXhjX2luZm89VHJ1ZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9leGNlcHRpb25faGFuZGxlcih7CiAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICAgICAgJ3RyYW5zcG9ydCc6IHNlbGYsCiAgICAgICAgICAgICAgICAgICAgJ3Byb3RvY29sJzogc2VsZi5fcHJvdG9jb2wsCiAgICAgICAgICAgICAgICB9KQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX2ZvcmNlX2Nsb3NlKGV4YykKCiAgICBkZWYgX2ZvcmNlX2Nsb3NlKHNlbGYsIGV4Yyk6CiAgICAgICAgaWYgc2VsZi5fZW1wdHlfd2FpdGVyIGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5fZW1wdHlfd2FpdGVyLmRvbmUoKToKICAgICAgICAgICAgaWYgZXhjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLl9lbXB0eV93YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgIGlmIHNlbGYuX2Nsb3NpbmcgYW5kIHNlbGYuX2NhbGxlZF9jb25uZWN0aW9uX2xvc3Q6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX2Nsb3NpbmcgPSBUcnVlCiAgICAgICAgc2VsZi5fY29ubl9sb3N0ICs9IDEKICAgICAgICBpZiBzZWxmLl93cml0ZV9mdXQ6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Z1dC5jYW5jZWwoKQogICAgICAgICAgICBzZWxmLl93cml0ZV9mdXQgPSBOb25lCiAgICAgICAgaWYgc2VsZi5fcmVhZF9mdXQ6CiAgICAgICAgICAgIHNlbGYuX3JlYWRfZnV0LmNhbmNlbCgpCiAgICAgICAgICAgIHNlbGYuX3JlYWRfZnV0ID0gTm9uZQogICAgICAgIHNlbGYuX3BlbmRpbmdfd3JpdGUgPSAwCiAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQogICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX2NhbGxfY29ubmVjdGlvbl9sb3N0LCBleGMpCgogICAgZGVmIF9jYWxsX2Nvbm5lY3Rpb25fbG9zdChzZWxmLCBleGMpOgogICAgICAgIGlmIHNlbGYuX2NhbGxlZF9jb25uZWN0aW9uX2xvc3Q6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2wuY29ubmVjdGlvbl9sb3N0KGV4YykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIFhYWCBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgb3ZlcmxhcHBlZCByZWFkIG9uIHRoZSBvdGhlcgogICAgICAgICAgICAjIGVuZCB0aGVuIGl0IG1heSBmYWlsIHdpdGggRVJST1JfTkVUTkFNRV9ERUxFVEVEIGlmIHdlCiAgICAgICAgICAgICMganVzdCBjbG9zZSBvdXIgZW5kLiAgRmlyc3QgY2FsbGluZyBzaHV0ZG93bigpIHNlZW1zIHRvCiAgICAgICAgICAgICMgY3VyZSBpdCwgYnV0IG1heWJlIHVzaW5nIERpc2Nvbm5lY3RFeCgpIHdvdWxkIGJlIGJldHRlci4KICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9zb2NrLCAnc2h1dGRvd24nKSBhbmQgc2VsZi5fc29jay5maWxlbm8oKSAhPSAtMToKICAgICAgICAgICAgICAgIHNlbGYuX3NvY2suc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKICAgICAgICAgICAgc2VsZi5fc29jay5jbG9zZSgpCiAgICAgICAgICAgIHNlbGYuX3NvY2sgPSBOb25lCiAgICAgICAgICAgIHNlcnZlciA9IHNlbGYuX3NlcnZlcgogICAgICAgICAgICBpZiBzZXJ2ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZXJ2ZXIuX2RldGFjaCgpCiAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXIgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX2NhbGxlZF9jb25uZWN0aW9uX2xvc3QgPSBUcnVlCgogICAgZGVmIGdldF93cml0ZV9idWZmZXJfc2l6ZShzZWxmKToKICAgICAgICBzaXplID0gc2VsZi5fcGVuZGluZ193cml0ZQogICAgICAgIGlmIHNlbGYuX2J1ZmZlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2l6ZSArPSBsZW4oc2VsZi5fYnVmZmVyKQogICAgICAgIHJldHVybiBzaXplCgoKY2xhc3MgX1Byb2FjdG9yUmVhZFBpcGVUcmFuc3BvcnQoX1Byb2FjdG9yQmFzZVBpcGVUcmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydHMuUmVhZFRyYW5zcG9ydCk6CiAgICAiIiJUcmFuc3BvcnQgZm9yIHJlYWQgcGlwZXMuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvb3AsIHNvY2ssIHByb3RvY29sLCB3YWl0ZXI9Tm9uZSwKICAgICAgICAgICAgICAgICBleHRyYT1Ob25lLCBzZXJ2ZXI9Tm9uZSwgYnVmZmVyX3NpemU9NjU1MzYpOgogICAgICAgIHNlbGYuX3BlbmRpbmdfZGF0YV9sZW5ndGggPSAtMQogICAgICAgIHNlbGYuX3BhdXNlZCA9IFRydWUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGxvb3AsIHNvY2ssIHByb3RvY29sLCB3YWl0ZXIsIGV4dHJhLCBzZXJ2ZXIpCgogICAgICAgIHNlbGYuX2RhdGEgPSBieXRlYXJyYXkoYnVmZmVyX3NpemUpCiAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi5fbG9vcF9yZWFkaW5nKQogICAgICAgIHNlbGYuX3BhdXNlZCA9IEZhbHNlCgogICAgZGVmIGlzX3JlYWRpbmcoc2VsZik6CiAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9wYXVzZWQgYW5kIG5vdCBzZWxmLl9jbG9zaW5nCgogICAgZGVmIHBhdXNlX3JlYWRpbmcoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY2xvc2luZyBvciBzZWxmLl9wYXVzZWQ6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX3BhdXNlZCA9IFRydWUKCiAgICAgICAgIyBicG8tMzM2OTQ6IERvbid0IGNhbmNlbCBzZWxmLl9yZWFkX2Z1dCBiZWNhdXNlIGNhbmNlbGxpbmcgYW4KICAgICAgICAjIG92ZXJsYXBwZWQgV1NBU2VuZCgpIGxvc3Mgc2lsZW50bHkgZGF0YSB3aXRoIHRoZSBjdXJyZW50IHByb2FjdG9yCiAgICAgICAgIyBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAjCiAgICAgICAgIyBJZiBDYW5jZWxJb0V4KCkgZmFpbHMgd2l0aCBFUlJPUl9OT1RfRk9VTkQsIGl0IG1lYW5zIHRoYXQgV1NBU2VuZCgpCiAgICAgICAgIyBjb21wbGV0ZWQgKGV2ZW4gaWYgSGFzT3ZlcmxhcHBlZElvQ29tcGxldGVkKCkgcmV0dXJucyAwKSwgYnV0CiAgICAgICAgIyBPdmVybGFwcGVkLmNhbmNlbCgpIGN1cnJlbnRseSBzaWxlbnRseSBpZ25vcmVzIHRoZSBFUlJPUl9OT1RfRk9VTkQKICAgICAgICAjIGVycm9yLiBPbmNlIHRoZSBvdmVybGFwcGVkIGlzIGlnbm9yZWQsIHRoZSBJT0NQIGxvb3Agd2lsbCBpZ25vcmVzIHRoZQogICAgICAgICMgY29tcGxldGlvbiBJL08gZXZlbnQgYW5kIHNvIG5vdCByZWFkIHRoZSByZXN1bHQgb2YgdGhlIG92ZXJsYXBwZWQKICAgICAgICAjIFdTQVJlY3YoKS4KCiAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlciBwYXVzZXMgcmVhZGluZyIsIHNlbGYpCgogICAgZGVmIHJlc3VtZV9yZWFkaW5nKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2Nsb3Npbmcgb3Igbm90IHNlbGYuX3BhdXNlZDoKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHNlbGYuX3BhdXNlZCA9IEZhbHNlCiAgICAgICAgaWYgc2VsZi5fcmVhZF9mdXQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi5fbG9vcF9yZWFkaW5nLCBOb25lKQoKICAgICAgICBsZW5ndGggPSBzZWxmLl9wZW5kaW5nX2RhdGFfbGVuZ3RoCiAgICAgICAgc2VsZi5fcGVuZGluZ19kYXRhX2xlbmd0aCA9IC0xCiAgICAgICAgaWYgbGVuZ3RoID4gLTE6CiAgICAgICAgICAgICMgQ2FsbCB0aGUgcHJvdG9jb2wgbWV0aG9kIGFmdGVyIGNhbGxpbmcgX2xvb3BfcmVhZGluZygpLAogICAgICAgICAgICAjIHNpbmNlIHRoZSBwcm90b2NvbCBjYW4gZGVjaWRlIHRvIHBhdXNlIHJlYWRpbmcgYWdhaW4uCiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX2RhdGFfcmVjZWl2ZWQsIHNlbGYuX2RhdGFbOmxlbmd0aF0sIGxlbmd0aCkKCiAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlciByZXN1bWVzIHJlYWRpbmciLCBzZWxmKQoKICAgIGRlZiBfZW9mX3JlY2VpdmVkKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXIgcmVjZWl2ZWQgRU9GIiwgc2VsZikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBrZWVwX29wZW4gPSBzZWxmLl9wcm90b2NvbC5lb2ZfcmVjZWl2ZWQoKQogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoCiAgICAgICAgICAgICAgICBleGMsICdGYXRhbCBlcnJvcjogcHJvdG9jb2wuZW9mX3JlY2VpdmVkKCkgY2FsbCBmYWlsZWQuJykKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIG5vdCBrZWVwX29wZW46CiAgICAgICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBfZGF0YV9yZWNlaXZlZChzZWxmLCBkYXRhLCBsZW5ndGgpOgogICAgICAgIGlmIHNlbGYuX3BhdXNlZDoKICAgICAgICAgICAgIyBEb24ndCBjYWxsIGFueSBwcm90b2NvbCBtZXRob2Qgd2hpbGUgcmVhZGluZyBpcyBwYXVzZWQuCiAgICAgICAgICAgICMgVGhlIHByb3RvY29sIHdpbGwgYmUgY2FsbGVkIG9uIHJlc3VtZV9yZWFkaW5nKCkuCiAgICAgICAgICAgIGFzc2VydCBzZWxmLl9wZW5kaW5nX2RhdGFfbGVuZ3RoID09IC0xCiAgICAgICAgICAgIHNlbGYuX3BlbmRpbmdfZGF0YV9sZW5ndGggPSBsZW5ndGgKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIGxlbmd0aCA9PSAwOgogICAgICAgICAgICBzZWxmLl9lb2ZfcmVjZWl2ZWQoKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLl9wcm90b2NvbCwgcHJvdG9jb2xzLkJ1ZmZlcmVkUHJvdG9jb2wpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwcm90b2NvbHMuX2ZlZWRfZGF0YV90b19idWZmZXJlZF9wcm90byhzZWxmLl9wcm90b2NvbCwgZGF0YSkKICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcihleGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmF0YWwgZXJyb3I6IHByb3RvY29sLmJ1ZmZlcl91cGRhdGVkKCkgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwgZmFpbGVkLicpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9wcm90b2NvbC5kYXRhX3JlY2VpdmVkKGRhdGEpCgogICAgZGVmIF9sb29wX3JlYWRpbmcoc2VsZiwgZnV0PU5vbmUpOgogICAgICAgIGxlbmd0aCA9IC0xCiAgICAgICAgZGF0YSA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGZ1dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLl9yZWFkX2Z1dCBpcyBmdXQgb3IgKHNlbGYuX3JlYWRfZnV0IGlzIE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zaW5nKQogICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9mdXQgPSBOb25lCiAgICAgICAgICAgICAgICBpZiBmdXQuZG9uZSgpOgogICAgICAgICAgICAgICAgICAgICMgZGVsaXZlciBkYXRhIGxhdGVyIGluICJmaW5hbGx5IiBjbGF1c2UKICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBmdXQucmVzdWx0KCkKICAgICAgICAgICAgICAgICAgICBpZiBsZW5ndGggPT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBnb3QgZW5kLW9mLWZpbGUgc28gbm8gbmVlZCB0byByZXNjaGVkdWxlIGEgbmV3IHJlYWQKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kYXRhWzpsZW5ndGhdCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgdGhlIGZ1dHVyZSB3aWxsIGJlIHJlcGxhY2VkIGJ5IG5leHQgcHJvYWN0b3IucmVjdiBjYWxsCiAgICAgICAgICAgICAgICAgICAgZnV0LmNhbmNlbCgpCgogICAgICAgICAgICBpZiBzZWxmLl9jbG9zaW5nOgogICAgICAgICAgICAgICAgIyBzaW5jZSBjbG9zZSgpIGhhcyBiZWVuIGNhbGxlZCB3ZSBpZ25vcmUgYW55IHJlYWQgZGF0YQogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICAjIGJwby0zMzY5NDogYnVmZmVyX3VwZGF0ZWQoKSBoYXMgY3VycmVudGx5IG5vIGZhc3QgcGF0aCBiZWNhdXNlIG9mCiAgICAgICAgICAgICMgYSBkYXRhIGxvc3MgaXNzdWUgY2F1c2VkIGJ5IG92ZXJsYXBwZWQgV1NBU2VuZCgpIGNhbmNlbGxhdGlvbi4KCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wYXVzZWQ6CiAgICAgICAgICAgICAgICAjIHJlc2NoZWR1bGUgYSBuZXcgcmVhZAogICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9mdXQgPSBzZWxmLl9sb29wLl9wcm9hY3Rvci5yZWN2X2ludG8oc2VsZi5fc29jaywgc2VsZi5fZGF0YSkKICAgICAgICBleGNlcHQgQ29ubmVjdGlvbkFib3J0ZWRFcnJvciBhcyBleGM6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zaW5nOgogICAgICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoZXhjLCAnRmF0YWwgcmVhZCBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCcpCiAgICAgICAgICAgIGVsaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiUmVhZCBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCB3aGlsZSBjbG9zaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfaW5mbz1UcnVlKQogICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uUmVzZXRFcnJvciBhcyBleGM6CiAgICAgICAgICAgIHNlbGYuX2ZvcmNlX2Nsb3NlKGV4YykKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgIHNlbGYuX2ZhdGFsX2Vycm9yKGV4YywgJ0ZhdGFsIHJlYWQgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKQogICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLkNhbmNlbGxlZEVycm9yOgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbm90IHNlbGYuX3BhdXNlZDoKICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfZnV0LmFkZF9kb25lX2NhbGxiYWNrKHNlbGYuX2xvb3BfcmVhZGluZykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBsZW5ndGggPiAtMToKICAgICAgICAgICAgICAgIHNlbGYuX2RhdGFfcmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKQoKCmNsYXNzIF9Qcm9hY3RvckJhc2VXcml0ZVBpcGVUcmFuc3BvcnQoX1Byb2FjdG9yQmFzZVBpcGVUcmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0cy5Xcml0ZVRyYW5zcG9ydCk6CiAgICAiIiJUcmFuc3BvcnQgZm9yIHdyaXRlIHBpcGVzLiIiIgoKICAgIF9zdGFydF90bHNfY29tcGF0aWJsZSA9IFRydWUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCiAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyID0gTm9uZQoKICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSwgbWVtb3J5dmlldykpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICBmImRhdGEgYXJndW1lbnQgbXVzdCBiZSBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAiCiAgICAgICAgICAgICAgICBmIm5vdCB7dHlwZShkYXRhKS5fX25hbWVfX30iKQogICAgICAgIGlmIHNlbGYuX2VvZl93cml0dGVuOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3dyaXRlX2VvZigpIGFscmVhZHkgY2FsbGVkJykKICAgICAgICBpZiBzZWxmLl9lbXB0eV93YWl0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigndW5hYmxlIHRvIHdyaXRlOyBzZW5kZmlsZSBpcyBpbiBwcm9ncmVzcycpCgogICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgc2VsZi5fY29ubl9sb3N0OgogICAgICAgICAgICBpZiBzZWxmLl9jb25uX2xvc3QgPj0gY29uc3RhbnRzLkxPR19USFJFU0hPTERfRk9SX0NPTk5MT1NUX1dSSVRFUzoKICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdzb2NrZXQuc2VuZCgpIHJhaXNlZCBleGNlcHRpb24uJykKICAgICAgICAgICAgc2VsZi5fY29ubl9sb3N0ICs9IDEKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgT2JzZXJ2YWJsZSBzdGF0ZXM6CiAgICAgICAgIyAxLiBJRExFOiBfd3JpdGVfZnV0IGFuZCBfYnVmZmVyIGJvdGggTm9uZQogICAgICAgICMgMi4gV1JJVElORzogX3dyaXRlX2Z1dCBzZXQ7IF9idWZmZXIgTm9uZQogICAgICAgICMgMy4gQkFDS0VEIFVQOiBfd3JpdGVfZnV0IHNldDsgX2J1ZmZlciBhIGJ5dGVhcnJheQogICAgICAgICMgV2UgYWx3YXlzIGNvcHkgdGhlIGRhdGEsIHNvIHRoZSBjYWxsZXIgY2FuJ3QgbW9kaWZ5IGl0CiAgICAgICAgIyB3aGlsZSB3ZSdyZSBzdGlsbCB3YWl0aW5nIGZvciB0aGUgSS9PIHRvIGhhcHBlbi4KICAgICAgICBpZiBzZWxmLl93cml0ZV9mdXQgaXMgTm9uZTogICMgSURMRSAtPiBXUklUSU5HCiAgICAgICAgICAgIGFzc2VydCBzZWxmLl9idWZmZXIgaXMgTm9uZQogICAgICAgICAgICAjIFBhc3MgYSBjb3B5LCBleGNlcHQgaWYgaXQncyBhbHJlYWR5IGltbXV0YWJsZS4KICAgICAgICAgICAgc2VsZi5fbG9vcF93cml0aW5nKGRhdGE9Ynl0ZXMoZGF0YSkpCiAgICAgICAgZWxpZiBub3Qgc2VsZi5fYnVmZmVyOiAgIyBXUklUSU5HIC0+IEJBQ0tFRCBVUAogICAgICAgICAgICAjIE1ha2UgYSBtdXRhYmxlIGNvcHkgd2hpY2ggd2UgY2FuIGV4dGVuZC4KICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYnl0ZWFycmF5KGRhdGEpCiAgICAgICAgICAgIHNlbGYuX21heWJlX3BhdXNlX3Byb3RvY29sKCkKICAgICAgICBlbHNlOiAgIyBCQUNLRUQgVVAKICAgICAgICAgICAgIyBBcHBlbmQgdG8gYnVmZmVyIChhbHNvIGNvcGllcykuCiAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5leHRlbmQoZGF0YSkKICAgICAgICAgICAgc2VsZi5fbWF5YmVfcGF1c2VfcHJvdG9jb2woKQoKICAgIGRlZiBfbG9vcF93cml0aW5nKHNlbGYsIGY9Tm9uZSwgZGF0YT1Ob25lKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGYgaXMgbm90IE5vbmUgYW5kIHNlbGYuX3dyaXRlX2Z1dCBpcyBOb25lIGFuZCBzZWxmLl9jbG9zaW5nOgogICAgICAgICAgICAgICAgIyBYWFggbW9zdCBsaWtlbHkgc2VsZi5fZm9yY2VfY2xvc2UoKSBoYXMgYmVlbiBjYWxsZWQsIGFuZAogICAgICAgICAgICAgICAgIyBpdCBoYXMgc2V0IHNlbGYuX3dyaXRlX2Z1dCB0byBOb25lLgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGFzc2VydCBmIGlzIHNlbGYuX3dyaXRlX2Z1dAogICAgICAgICAgICBzZWxmLl93cml0ZV9mdXQgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX3BlbmRpbmdfd3JpdGUgPSAwCiAgICAgICAgICAgIGlmIGY6CiAgICAgICAgICAgICAgICBmLnJlc3VsdCgpCiAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zaW5nOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX2NhbGxfY29ubmVjdGlvbl9sb3N0LCBOb25lKQogICAgICAgICAgICAgICAgaWYgc2VsZi5fZW9mX3dyaXR0ZW46CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc29jay5zaHV0ZG93bihzb2NrZXQuU0hVVF9XUikKICAgICAgICAgICAgICAgICMgTm93IHRoYXQgd2UndmUgcmVkdWNlZCB0aGUgYnVmZmVyIHNpemUsIHRlbGwgdGhlCiAgICAgICAgICAgICAgICAjIHByb3RvY29sIHRvIHJlc3VtZSB3cml0aW5nIGlmIGl0IHdhcyBwYXVzZWQuICBOb3RlIHRoYXQKICAgICAgICAgICAgICAgICMgd2UgZG8gdGhpcyBsYXN0IHNpbmNlIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgICAgICMgYW5kIGl0IG1heSBhZGQgbW9yZSBkYXRhIHRvIHRoZSBidWZmZXIgKGV2ZW4gY2F1c2luZyB0aGUKICAgICAgICAgICAgICAgICMgcHJvdG9jb2wgdG8gYmUgcGF1c2VkIGFnYWluKS4KICAgICAgICAgICAgICAgIHNlbGYuX21heWJlX3Jlc3VtZV9wcm90b2NvbCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9mdXQgPSBzZWxmLl9sb29wLl9wcm9hY3Rvci5zZW5kKHNlbGYuX3NvY2ssIGRhdGEpCiAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fd3JpdGVfZnV0LmRvbmUoKToKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5fcGVuZGluZ193cml0ZSA9PSAwCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVuZGluZ193cml0ZSA9IGxlbihkYXRhKQogICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Z1dC5hZGRfZG9uZV9jYWxsYmFjayhzZWxmLl9sb29wX3dyaXRpbmcpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWF5YmVfcGF1c2VfcHJvdG9jb2woKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9mdXQuYWRkX2RvbmVfY2FsbGJhY2soc2VsZi5fbG9vcF93cml0aW5nKQogICAgICAgICAgICBpZiBzZWxmLl9lbXB0eV93YWl0ZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYuX3dyaXRlX2Z1dCBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKICAgICAgICBleGNlcHQgQ29ubmVjdGlvblJlc2V0RXJyb3IgYXMgZXhjOgogICAgICAgICAgICBzZWxmLl9mb3JjZV9jbG9zZShleGMpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcihleGMsICdGYXRhbCB3cml0ZSBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCcpCgogICAgZGVmIGNhbl93cml0ZV9lb2Yoc2VsZik6CiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgd3JpdGVfZW9mKHNlbGYpOgogICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBhYm9ydChzZWxmKToKICAgICAgICBzZWxmLl9mb3JjZV9jbG9zZShOb25lKQoKICAgIGRlZiBfbWFrZV9lbXB0eV93YWl0ZXIoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fZW1wdHlfd2FpdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkVtcHR5IHdhaXRlciBpcyBhbHJlYWR5IHNldCIpCiAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBpZiBzZWxmLl93cml0ZV9mdXQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKICAgICAgICByZXR1cm4gc2VsZi5fZW1wdHlfd2FpdGVyCgogICAgZGVmIF9yZXNldF9lbXB0eV93YWl0ZXIoc2VsZik6CiAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyID0gTm9uZQoKCmNsYXNzIF9Qcm9hY3RvcldyaXRlUGlwZVRyYW5zcG9ydChfUHJvYWN0b3JCYXNlV3JpdGVQaXBlVHJhbnNwb3J0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprdykKICAgICAgICBzZWxmLl9yZWFkX2Z1dCA9IHNlbGYuX2xvb3AuX3Byb2FjdG9yLnJlY3Yoc2VsZi5fc29jaywgMTYpCiAgICAgICAgc2VsZi5fcmVhZF9mdXQuYWRkX2RvbmVfY2FsbGJhY2soc2VsZi5fcGlwZV9jbG9zZWQpCgogICAgZGVmIF9waXBlX2Nsb3NlZChzZWxmLCBmdXQpOgogICAgICAgIGlmIGZ1dC5jYW5jZWxsZWQoKToKICAgICAgICAgICAgIyB0aGUgdHJhbnNwb3J0IGhhcyBiZWVuIGNsb3NlZAogICAgICAgICAgICByZXR1cm4KICAgICAgICBhc3NlcnQgZnV0LnJlc3VsdCgpID09IGInJwogICAgICAgIGlmIHNlbGYuX2Nsb3Npbmc6CiAgICAgICAgICAgIGFzc2VydCBzZWxmLl9yZWFkX2Z1dCBpcyBOb25lCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGFzc2VydCBmdXQgaXMgc2VsZi5fcmVhZF9mdXQsIChmdXQsIHNlbGYuX3JlYWRfZnV0KQogICAgICAgIHNlbGYuX3JlYWRfZnV0ID0gTm9uZQogICAgICAgIGlmIHNlbGYuX3dyaXRlX2Z1dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fZm9yY2VfY2xvc2UoQnJva2VuUGlwZUVycm9yKCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCgoKY2xhc3MgX1Byb2FjdG9yRGF0YWdyYW1UcmFuc3BvcnQoX1Byb2FjdG9yQmFzZVBpcGVUcmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydHMuRGF0YWdyYW1UcmFuc3BvcnQpOgogICAgbWF4X3NpemUgPSAyNTYgKiAxMDI0CiAgICBkZWYgX19pbml0X18oc2VsZiwgbG9vcCwgc29jaywgcHJvdG9jb2wsIGFkZHJlc3M9Tm9uZSwKICAgICAgICAgICAgICAgICB3YWl0ZXI9Tm9uZSwgZXh0cmE9Tm9uZSk6CiAgICAgICAgc2VsZi5fYWRkcmVzcyA9IGFkZHJlc3MKICAgICAgICBzZWxmLl9lbXB0eV93YWl0ZXIgPSBOb25lCiAgICAgICAgc2VsZi5fYnVmZmVyX3NpemUgPSAwCiAgICAgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNhbGwgX3Byb3RvY29sLmNvbm5lY3Rpb25fbWFkZSgpIHNpbmNlIG91ciBiYXNlCiAgICAgICAgIyBjb25zdHJ1Y3RvciBkb2VzIGl0IGZvciB1cy4KICAgICAgICBzdXBlcigpLl9faW5pdF9fKGxvb3AsIHNvY2ssIHByb3RvY29sLCB3YWl0ZXI9d2FpdGVyLCBleHRyYT1leHRyYSkKCiAgICAgICAgIyBUaGUgYmFzZSBjb25zdHJ1Y3RvciBzZXRzIF9idWZmZXIgPSBOb25lLCBzbyB3ZSBzZXQgaXQgaGVyZQogICAgICAgIHNlbGYuX2J1ZmZlciA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9sb29wX3JlYWRpbmcpCgogICAgZGVmIF9zZXRfZXh0cmEoc2VsZiwgc29jayk6CiAgICAgICAgX3NldF9zb2NrZXRfZXh0cmEoc2VsZiwgc29jaykKCiAgICBkZWYgZ2V0X3dyaXRlX2J1ZmZlcl9zaXplKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJfc2l6ZQoKICAgIGRlZiBhYm9ydChzZWxmKToKICAgICAgICBzZWxmLl9mb3JjZV9jbG9zZShOb25lKQoKICAgIGRlZiBzZW5kdG8oc2VsZiwgZGF0YSwgYWRkcj1Ob25lKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSwgbWVtb3J5dmlldykpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2RhdGEgYXJndW1lbnQgbXVzdCBiZSBieXRlcy1saWtlIG9iamVjdCAoJXIpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUoZGF0YSkpCgogICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgc2VsZi5fYWRkcmVzcyBpcyBub3QgTm9uZSBhbmQgYWRkciBub3QgaW4gKE5vbmUsIHNlbGYuX2FkZHJlc3MpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgZidJbnZhbGlkIGFkZHJlc3M6IG11c3QgYmUgTm9uZSBvciB7c2VsZi5fYWRkcmVzc30nKQoKICAgICAgICBpZiBzZWxmLl9jb25uX2xvc3QgYW5kIHNlbGYuX2FkZHJlc3M6CiAgICAgICAgICAgIGlmIHNlbGYuX2Nvbm5fbG9zdCA+PSBjb25zdGFudHMuTE9HX1RIUkVTSE9MRF9GT1JfQ09OTkxPU1RfV1JJVEVTOgogICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ3NvY2tldC5zZW5kdG8oKSByYWlzZWQgZXhjZXB0aW9uLicpCiAgICAgICAgICAgIHNlbGYuX2Nvbm5fbG9zdCArPSAxCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIEVuc3VyZSB0aGF0IHdoYXQgd2UgYnVmZmVyIGlzIGltbXV0YWJsZS4KICAgICAgICBzZWxmLl9idWZmZXIuYXBwZW5kKChieXRlcyhkYXRhKSwgYWRkcikpCiAgICAgICAgc2VsZi5fYnVmZmVyX3NpemUgKz0gbGVuKGRhdGEpCgogICAgICAgIGlmIHNlbGYuX3dyaXRlX2Z1dCBpcyBOb25lOgogICAgICAgICAgICAjIE5vIGN1cnJlbnQgd3JpdGUgb3BlcmF0aW9ucyBhcmUgYWN0aXZlLCBraWNrIG9uZSBvZmYKICAgICAgICAgICAgc2VsZi5fbG9vcF93cml0aW5nKCkKICAgICAgICAjIGVsc2U6IEEgd3JpdGUgb3BlcmF0aW9uIGlzIGFscmVhZHkga2lja2VkIG9mZgoKICAgICAgICBzZWxmLl9tYXliZV9wYXVzZV9wcm90b2NvbCgpCgogICAgZGVmIF9sb29wX3dyaXRpbmcoc2VsZiwgZnV0PU5vbmUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5fY29ubl9sb3N0OgogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICBhc3NlcnQgZnV0IGlzIHNlbGYuX3dyaXRlX2Z1dAogICAgICAgICAgICBzZWxmLl93cml0ZV9mdXQgPSBOb25lCiAgICAgICAgICAgIGlmIGZ1dDoKICAgICAgICAgICAgICAgICMgV2UgYXJlIGluIGEgX2xvb3Bfd3JpdGluZygpIGRvbmUgY2FsbGJhY2ssIGdldCB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBmdXQucmVzdWx0KCkKCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9idWZmZXIgb3IgKHNlbGYuX2Nvbm5fbG9zdCBhbmQgc2VsZi5fYWRkcmVzcyk6CiAgICAgICAgICAgICAgICAjIFRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZAogICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9jYWxsX2Nvbm5lY3Rpb25fbG9zdCwgTm9uZSkKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuX2J1ZmZlci5wb3BsZWZ0KCkKICAgICAgICAgICAgc2VsZi5fYnVmZmVyX3NpemUgLT0gbGVuKGRhdGEpCiAgICAgICAgICAgIGlmIHNlbGYuX2FkZHJlc3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9mdXQgPSBzZWxmLl9sb29wLl9wcm9hY3Rvci5zZW5kKHNlbGYuX3NvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9mdXQgPSBzZWxmLl9sb29wLl9wcm9hY3Rvci5zZW5kdG8oc2VsZi5fc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHI9YWRkcikKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sLmVycm9yX3JlY2VpdmVkKGV4YykKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoZXhjLCAnRmF0YWwgd3JpdGUgZXJyb3Igb24gZGF0YWdyYW0gdHJhbnNwb3J0JykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl93cml0ZV9mdXQuYWRkX2RvbmVfY2FsbGJhY2soc2VsZi5fbG9vcF93cml0aW5nKQogICAgICAgICAgICBzZWxmLl9tYXliZV9yZXN1bWVfcHJvdG9jb2woKQoKICAgIGRlZiBfbG9vcF9yZWFkaW5nKHNlbGYsIGZ1dD1Ob25lKToKICAgICAgICBkYXRhID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5fY29ubl9sb3N0OgogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICBhc3NlcnQgc2VsZi5fcmVhZF9mdXQgaXMgZnV0IG9yIChzZWxmLl9yZWFkX2Z1dCBpcyBOb25lIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zaW5nKQoKICAgICAgICAgICAgc2VsZi5fcmVhZF9mdXQgPSBOb25lCiAgICAgICAgICAgIGlmIGZ1dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJlcyA9IGZ1dC5yZXN1bHQoKQoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3Npbmc6CiAgICAgICAgICAgICAgICAgICAgIyBzaW5jZSBjbG9zZSgpIGhhcyBiZWVuIGNhbGxlZCB3ZSBpZ25vcmUgYW55IHJlYWQgZGF0YQogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICAgICAgaWYgc2VsZi5fYWRkcmVzcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBkYXRhLCBhZGRyID0gcmVzLCBzZWxmLl9hZGRyZXNzCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRhdGEsIGFkZHIgPSByZXMKCiAgICAgICAgICAgIGlmIHNlbGYuX2Nvbm5fbG9zdDoKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpZiBzZWxmLl9hZGRyZXNzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9mdXQgPSBzZWxmLl9sb29wLl9wcm9hY3Rvci5yZWN2KHNlbGYuX3NvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhfc2l6ZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfZnV0ID0gc2VsZi5fbG9vcC5fcHJvYWN0b3IucmVjdmZyb20oc2VsZi5fc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhfc2l6ZSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sLmVycm9yX3JlY2VpdmVkKGV4YykKICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3Npbmc6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRfZnV0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9mdXQuYWRkX2RvbmVfY2FsbGJhY2soc2VsZi5fbG9vcF9yZWFkaW5nKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICBzZWxmLl9wcm90b2NvbC5kYXRhZ3JhbV9yZWNlaXZlZChkYXRhLCBhZGRyKQoKCmNsYXNzIF9Qcm9hY3RvckR1cGxleFBpcGVUcmFuc3BvcnQoX1Byb2FjdG9yUmVhZFBpcGVUcmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Byb2FjdG9yQmFzZVdyaXRlUGlwZVRyYW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRzLlRyYW5zcG9ydCk6CiAgICAiIiJUcmFuc3BvcnQgZm9yIGR1cGxleCBwaXBlcy4iIiIKCiAgICBkZWYgY2FuX3dyaXRlX2VvZihzZWxmKToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgd3JpdGVfZW9mKHNlbGYpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCgpjbGFzcyBfUHJvYWN0b3JTb2NrZXRUcmFuc3BvcnQoX1Byb2FjdG9yUmVhZFBpcGVUcmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJvYWN0b3JCYXNlV3JpdGVQaXBlVHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0cy5UcmFuc3BvcnQpOgogICAgIiIiVHJhbnNwb3J0IGZvciBjb25uZWN0ZWQgc29ja2V0cy4iIiIKCiAgICBfc2VuZGZpbGVfY29tcGF0aWJsZSA9IGNvbnN0YW50cy5fU2VuZGZpbGVNb2RlLlRSWV9OQVRJVkUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbG9vcCwgc29jaywgcHJvdG9jb2wsIHdhaXRlcj1Ob25lLAogICAgICAgICAgICAgICAgIGV4dHJhPU5vbmUsIHNlcnZlcj1Ob25lKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGxvb3AsIHNvY2ssIHByb3RvY29sLCB3YWl0ZXIsIGV4dHJhLCBzZXJ2ZXIpCiAgICAgICAgYmFzZV9ldmVudHMuX3NldF9ub2RlbGF5KHNvY2spCgogICAgZGVmIF9zZXRfZXh0cmEoc2VsZiwgc29jayk6CiAgICAgICAgX3NldF9zb2NrZXRfZXh0cmEoc2VsZiwgc29jaykKCiAgICBkZWYgY2FuX3dyaXRlX2VvZihzZWxmKToKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiB3cml0ZV9lb2Yoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY2xvc2luZyBvciBzZWxmLl9lb2Zfd3JpdHRlbjoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fZW9mX3dyaXR0ZW4gPSBUcnVlCiAgICAgICAgaWYgc2VsZi5fd3JpdGVfZnV0IGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3NvY2suc2h1dGRvd24oc29ja2V0LlNIVVRfV1IpCgoKY2xhc3MgQmFzZVByb2FjdG9yRXZlbnRMb29wKGJhc2VfZXZlbnRzLkJhc2VFdmVudExvb3ApOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9hY3Rvcik6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgbG9nZ2VyLmRlYnVnKCdVc2luZyBwcm9hY3RvcjogJXMnLCBwcm9hY3Rvci5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgc2VsZi5fcHJvYWN0b3IgPSBwcm9hY3RvcgogICAgICAgIHNlbGYuX3NlbGVjdG9yID0gcHJvYWN0b3IgICAjIGNvbnZlbmllbnQgYWxpYXMKICAgICAgICBzZWxmLl9zZWxmX3JlYWRpbmdfZnV0dXJlID0gTm9uZQogICAgICAgIHNlbGYuX2FjY2VwdF9mdXR1cmVzID0ge30gICAjIHNvY2tldCBmaWxlIGRlc2NyaXB0b3IgPT4gRnV0dXJlCiAgICAgICAgcHJvYWN0b3Iuc2V0X2xvb3Aoc2VsZikKICAgICAgICBzZWxmLl9tYWtlX3NlbGZfcGlwZSgpCiAgICAgICAgaWYgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkgaXMgdGhyZWFkaW5nLm1haW5fdGhyZWFkKCk6CiAgICAgICAgICAgICMgd2FrZXVwIGZkIGNhbiBvbmx5IGJlIGluc3RhbGxlZCB0byBhIGZpbGUgZGVzY3JpcHRvciBmcm9tIHRoZSBtYWluIHRocmVhZAogICAgICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZChzZWxmLl9jc29jay5maWxlbm8oKSkKCiAgICBkZWYgX21ha2Vfc29ja2V0X3RyYW5zcG9ydChzZWxmLCBzb2NrLCBwcm90b2NvbCwgd2FpdGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1Ob25lLCBzZXJ2ZXI9Tm9uZSk6CiAgICAgICAgcmV0dXJuIF9Qcm9hY3RvclNvY2tldFRyYW5zcG9ydChzZWxmLCBzb2NrLCBwcm90b2NvbCwgd2FpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEsIHNlcnZlcikKCiAgICBkZWYgX21ha2Vfc3NsX3RyYW5zcG9ydCgKICAgICAgICAgICAgc2VsZiwgcmF3c29jaywgcHJvdG9jb2wsIHNzbGNvbnRleHQsIHdhaXRlcj1Ob25lLAogICAgICAgICAgICAqLCBzZXJ2ZXJfc2lkZT1GYWxzZSwgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgIGV4dHJhPU5vbmUsIHNlcnZlcj1Ob25lLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9Tm9uZSk6CiAgICAgICAgc3NsX3Byb3RvY29sID0gc3NscHJvdG8uU1NMUHJvdG9jb2woCiAgICAgICAgICAgICAgICBzZWxmLCBwcm90b2NvbCwgc3NsY29udGV4dCwgd2FpdGVyLAogICAgICAgICAgICAgICAgc2VydmVyX3NpZGUsIHNlcnZlcl9ob3N0bmFtZSwKICAgICAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1zc2xfaGFuZHNoYWtlX3RpbWVvdXQsCiAgICAgICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1zc2xfc2h1dGRvd25fdGltZW91dCkKICAgICAgICBfUHJvYWN0b3JTb2NrZXRUcmFuc3BvcnQoc2VsZiwgcmF3c29jaywgc3NsX3Byb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgc2VydmVyPXNlcnZlcikKICAgICAgICByZXR1cm4gc3NsX3Byb3RvY29sLl9hcHBfdHJhbnNwb3J0CgogICAgZGVmIF9tYWtlX2RhdGFncmFtX3RyYW5zcG9ydChzZWxmLCBzb2NrLCBwcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcz1Ob25lLCB3YWl0ZXI9Tm9uZSwgZXh0cmE9Tm9uZSk6CiAgICAgICAgcmV0dXJuIF9Qcm9hY3RvckRhdGFncmFtVHJhbnNwb3J0KHNlbGYsIHNvY2ssIHByb3RvY29sLCBhZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0ZXIsIGV4dHJhKQoKICAgIGRlZiBfbWFrZV9kdXBsZXhfcGlwZV90cmFuc3BvcnQoc2VsZiwgc29jaywgcHJvdG9jb2wsIHdhaXRlcj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1Ob25lKToKICAgICAgICByZXR1cm4gX1Byb2FjdG9yRHVwbGV4UGlwZVRyYW5zcG9ydChzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ssIHByb3RvY29sLCB3YWl0ZXIsIGV4dHJhKQoKICAgIGRlZiBfbWFrZV9yZWFkX3BpcGVfdHJhbnNwb3J0KHNlbGYsIHNvY2ssIHByb3RvY29sLCB3YWl0ZXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPU5vbmUpOgogICAgICAgIHJldHVybiBfUHJvYWN0b3JSZWFkUGlwZVRyYW5zcG9ydChzZWxmLCBzb2NrLCBwcm90b2NvbCwgd2FpdGVyLCBleHRyYSkKCiAgICBkZWYgX21ha2Vfd3JpdGVfcGlwZV90cmFuc3BvcnQoc2VsZiwgc29jaywgcHJvdG9jb2wsIHdhaXRlcj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPU5vbmUpOgogICAgICAgICMgV2Ugd2FudCBjb25uZWN0aW9uX2xvc3QoKSB0byBiZSBjYWxsZWQgd2hlbiBvdGhlciBlbmQgY2xvc2VzCiAgICAgICAgcmV0dXJuIF9Qcm9hY3RvcldyaXRlUGlwZVRyYW5zcG9ydChzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29jaywgcHJvdG9jb2wsIHdhaXRlciwgZXh0cmEpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBjbG9zZSBhIHJ1bm5pbmcgZXZlbnQgbG9vcCIpCiAgICAgICAgaWYgc2VsZi5pc19jbG9zZWQoKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpIGlzIHRocmVhZGluZy5tYWluX3RocmVhZCgpOgogICAgICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCgtMSkKICAgICAgICAjIENhbGwgdGhlc2UgbWV0aG9kcyBiZWZvcmUgY2xvc2luZyB0aGUgZXZlbnQgbG9vcCAoYmVmb3JlIGNhbGxpbmcKICAgICAgICAjIEJhc2VFdmVudExvb3AuY2xvc2UpLCBiZWNhdXNlIHRoZXkgY2FuIHNjaGVkdWxlIGNhbGxiYWNrcyB3aXRoCiAgICAgICAgIyBjYWxsX3Nvb24oKSwgd2hpY2ggaXMgZm9yYmlkZGVuIHdoZW4gdGhlIGV2ZW50IGxvb3AgaXMgY2xvc2VkLgogICAgICAgIHNlbGYuX3N0b3BfYWNjZXB0X2Z1dHVyZXMoKQogICAgICAgIHNlbGYuX2Nsb3NlX3NlbGZfcGlwZSgpCiAgICAgICAgc2VsZi5fcHJvYWN0b3IuY2xvc2UoKQogICAgICAgIHNlbGYuX3Byb2FjdG9yID0gTm9uZQogICAgICAgIHNlbGYuX3NlbGVjdG9yID0gTm9uZQoKICAgICAgICAjIENsb3NlIHRoZSBldmVudCBsb29wCiAgICAgICAgc3VwZXIoKS5jbG9zZSgpCgogICAgYXN5bmMgZGVmIHNvY2tfcmVjdihzZWxmLCBzb2NrLCBuKToKICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5fcHJvYWN0b3IucmVjdihzb2NrLCBuKQoKICAgIGFzeW5jIGRlZiBzb2NrX3JlY3ZfaW50byhzZWxmLCBzb2NrLCBidWYpOgogICAgICAgIHJldHVybiBhd2FpdCBzZWxmLl9wcm9hY3Rvci5yZWN2X2ludG8oc29jaywgYnVmKQoKICAgIGFzeW5jIGRlZiBzb2NrX3JlY3Zmcm9tKHNlbGYsIHNvY2ssIGJ1ZnNpemUpOgogICAgICAgIHJldHVybiBhd2FpdCBzZWxmLl9wcm9hY3Rvci5yZWN2ZnJvbShzb2NrLCBidWZzaXplKQoKICAgIGFzeW5jIGRlZiBzb2NrX3JlY3Zmcm9tX2ludG8oc2VsZiwgc29jaywgYnVmLCBuYnl0ZXM9MCk6CiAgICAgICAgaWYgbm90IG5ieXRlczoKICAgICAgICAgICAgbmJ5dGVzID0gbGVuKGJ1ZikKCiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3Byb2FjdG9yLnJlY3Zmcm9tX2ludG8oc29jaywgYnVmLCBuYnl0ZXMpCgogICAgYXN5bmMgZGVmIHNvY2tfc2VuZGFsbChzZWxmLCBzb2NrLCBkYXRhKToKICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5fcHJvYWN0b3Iuc2VuZChzb2NrLCBkYXRhKQoKICAgIGFzeW5jIGRlZiBzb2NrX3NlbmR0byhzZWxmLCBzb2NrLCBkYXRhLCBhZGRyZXNzKToKICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5fcHJvYWN0b3Iuc2VuZHRvKHNvY2ssIGRhdGEsIDAsIGFkZHJlc3MpCgogICAgYXN5bmMgZGVmIHNvY2tfY29ubmVjdChzZWxmLCBzb2NrLCBhZGRyZXNzKToKICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5fcHJvYWN0b3IuY29ubmVjdChzb2NrLCBhZGRyZXNzKQoKICAgIGFzeW5jIGRlZiBzb2NrX2FjY2VwdChzZWxmLCBzb2NrKToKICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5fcHJvYWN0b3IuYWNjZXB0KHNvY2spCgogICAgYXN5bmMgZGVmIF9zb2NrX3NlbmRmaWxlX25hdGl2ZShzZWxmLCBzb2NrLCBmaWxlLCBvZmZzZXQsIGNvdW50KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZpbGVubyA9IGZpbGUuZmlsZW5vKCkKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbikgYXMgZXJyOgogICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlNlbmRmaWxlTm90QXZhaWxhYmxlRXJyb3IoIm5vdCBhIHJlZ3VsYXIgZmlsZSIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmc2l6ZSA9IG9zLmZzdGF0KGZpbGVubykuc3Rfc2l6ZQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlNlbmRmaWxlTm90QXZhaWxhYmxlRXJyb3IoIm5vdCBhIHJlZ3VsYXIgZmlsZSIpCiAgICAgICAgYmxvY2tzaXplID0gY291bnQgaWYgY291bnQgZWxzZSBmc2l6ZQogICAgICAgIGlmIG5vdCBibG9ja3NpemU6CiAgICAgICAgICAgIHJldHVybiAwICAjIGVtcHR5IGZpbGUKCiAgICAgICAgYmxvY2tzaXplID0gbWluKGJsb2Nrc2l6ZSwgMHhmZmZmX2ZmZmYpCiAgICAgICAgZW5kX3BvcyA9IG1pbihvZmZzZXQgKyBjb3VudCwgZnNpemUpIGlmIGNvdW50IGVsc2UgZnNpemUKICAgICAgICBvZmZzZXQgPSBtaW4ob2Zmc2V0LCBmc2l6ZSkKICAgICAgICB0b3RhbF9zZW50ID0gMAogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IG1pbihlbmRfcG9zIC0gb2Zmc2V0LCBibG9ja3NpemUpCiAgICAgICAgICAgICAgICBpZiBibG9ja3NpemUgPD0gMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfc2VudAogICAgICAgICAgICAgICAgYXdhaXQgc2VsZi5fcHJvYWN0b3Iuc2VuZGZpbGUoc29jaywgZmlsZSwgb2Zmc2V0LCBibG9ja3NpemUpCiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gYmxvY2tzaXplCiAgICAgICAgICAgICAgICB0b3RhbF9zZW50ICs9IGJsb2Nrc2l6ZQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIHRvdGFsX3NlbnQgPiAwOgogICAgICAgICAgICAgICAgZmlsZS5zZWVrKG9mZnNldCkKCiAgICBhc3luYyBkZWYgX3NlbmRmaWxlX25hdGl2ZShzZWxmLCB0cmFuc3AsIGZpbGUsIG9mZnNldCwgY291bnQpOgogICAgICAgIHJlc3VtZV9yZWFkaW5nID0gdHJhbnNwLmlzX3JlYWRpbmcoKQogICAgICAgIHRyYW5zcC5wYXVzZV9yZWFkaW5nKCkKICAgICAgICBhd2FpdCB0cmFuc3AuX21ha2VfZW1wdHlfd2FpdGVyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBhd2FpdCBzZWxmLnNvY2tfc2VuZGZpbGUodHJhbnNwLl9zb2NrLCBmaWxlLCBvZmZzZXQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPUZhbHNlKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHRyYW5zcC5fcmVzZXRfZW1wdHlfd2FpdGVyKCkKICAgICAgICAgICAgaWYgcmVzdW1lX3JlYWRpbmc6CiAgICAgICAgICAgICAgICB0cmFuc3AucmVzdW1lX3JlYWRpbmcoKQoKICAgIGRlZiBfY2xvc2Vfc2VsZl9waXBlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3NlbGZfcmVhZGluZ19mdXR1cmUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3NlbGZfcmVhZGluZ19mdXR1cmUuY2FuY2VsKCkKICAgICAgICAgICAgc2VsZi5fc2VsZl9yZWFkaW5nX2Z1dHVyZSA9IE5vbmUKICAgICAgICBzZWxmLl9zc29jay5jbG9zZSgpCiAgICAgICAgc2VsZi5fc3NvY2sgPSBOb25lCiAgICAgICAgc2VsZi5fY3NvY2suY2xvc2UoKQogICAgICAgIHNlbGYuX2Nzb2NrID0gTm9uZQogICAgICAgIHNlbGYuX2ludGVybmFsX2ZkcyAtPSAxCgogICAgZGVmIF9tYWtlX3NlbGZfcGlwZShzZWxmKToKICAgICAgICAjIEEgc2VsZi1zb2NrZXQsIHJlYWxseS4gOi0pCiAgICAgICAgc2VsZi5fc3NvY2ssIHNlbGYuX2Nzb2NrID0gc29ja2V0LnNvY2tldHBhaXIoKQogICAgICAgIHNlbGYuX3Nzb2NrLnNldGJsb2NraW5nKEZhbHNlKQogICAgICAgIHNlbGYuX2Nzb2NrLnNldGJsb2NraW5nKEZhbHNlKQogICAgICAgIHNlbGYuX2ludGVybmFsX2ZkcyArPSAxCgogICAgZGVmIF9sb29wX3NlbGZfcmVhZGluZyhzZWxmLCBmPU5vbmUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgZiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGYucmVzdWx0KCkgICMgbWF5IHJhaXNlCiAgICAgICAgICAgIGlmIHNlbGYuX3NlbGZfcmVhZGluZ19mdXR1cmUgaXMgbm90IGY6CiAgICAgICAgICAgICAgICAjIFdoZW4gd2Ugc2NoZWR1bGVkIHRoaXMgRnV0dXJlLCB3ZSBhc3NpZ25lZCBpdCB0bwogICAgICAgICAgICAgICAgIyBfc2VsZl9yZWFkaW5nX2Z1dHVyZS4gSWYgaXQncyBub3QgdGhlcmUgbm93LCBzb21ldGhpbmcgaGFzCiAgICAgICAgICAgICAgICAjIHRyaWVkIHRvIGNhbmNlbCB0aGUgbG9vcCB3aGlsZSB0aGlzIGNhbGxiYWNrIHdhcyBzdGlsbCBpbiB0aGUKICAgICAgICAgICAgICAgICMgcXVldWUgKHNlZSB3aW5kb3dzX2V2ZW50cy5Qcm9hY3RvckV2ZW50TG9vcC5ydW5fZm9yZXZlcikuIEluCiAgICAgICAgICAgICAgICAjIHRoYXQgY2FzZSBzdG9wIGhlcmUgaW5zdGVhZCBvZiBjb250aW51aW5nIHRvIHNjaGVkdWxlIGEgbmV3CiAgICAgICAgICAgICAgICAjIGl0ZXJhdGlvbi4KICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBmID0gc2VsZi5fcHJvYWN0b3IucmVjdihzZWxmLl9zc29jaywgNDA5NikKICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgIyBfY2xvc2Vfc2VsZl9waXBlKCkgaGFzIGJlZW4gY2FsbGVkLCBzdG9wIHdhaXRpbmcgZm9yIGRhdGEKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBzZWxmLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoewogICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnRXJyb3Igb24gcmVhZGluZyBmcm9tIHRoZSBldmVudCBsb29wIHNlbGYgcGlwZScsCiAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgJ2xvb3AnOiBzZWxmLAogICAgICAgICAgICB9KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3NlbGZfcmVhZGluZ19mdXR1cmUgPSBmCiAgICAgICAgICAgIGYuYWRkX2RvbmVfY2FsbGJhY2soc2VsZi5fbG9vcF9zZWxmX3JlYWRpbmcpCgogICAgZGVmIF93cml0ZV90b19zZWxmKHNlbGYpOgogICAgICAgICMgVGhpcyBtYXkgYmUgY2FsbGVkIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLCBwb3NzaWJseSBhZnRlcgogICAgICAgICMgX2Nsb3NlX3NlbGZfcGlwZSgpIGhhcyBiZWVuIGNhbGxlZCBvciBldmVuIHdoaWxlIGl0IGlzCiAgICAgICAgIyBydW5uaW5nLiAgR3VhcmQgZm9yIHNlbGYuX2Nzb2NrIGJlaW5nIE5vbmUgb3IgY2xvc2VkLiAgV2hlbgogICAgICAgICMgYSBzb2NrZXQgaXMgY2xvc2VkLCBzZW5kKCkgcmFpc2VzIE9TRXJyb3IgKHdpdGggZXJybm8gc2V0IHRvCiAgICAgICAgIyBFQkFERiwgYnV0IGxldCdzIG5vdCByZWx5IG9uIHRoZSBleGFjdCBlcnJvciBjb2RlKS4KICAgICAgICBjc29jayA9IHNlbGYuX2Nzb2NrCiAgICAgICAgaWYgY3NvY2sgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHRyeToKICAgICAgICAgICAgY3NvY2suc2VuZChiJ1wwJykKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgaWYgc2VsZi5fZGVidWc6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkZhaWwgdG8gd3JpdGUgYSBudWxsIGJ5dGUgaW50byB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmLXBpcGUgc29ja2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfaW5mbz1UcnVlKQoKICAgIGRlZiBfc3RhcnRfc2VydmluZyhzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBzb2NrLAogICAgICAgICAgICAgICAgICAgICAgIHNzbGNvbnRleHQ9Tm9uZSwgc2VydmVyPU5vbmUsIGJhY2tsb2c9MTAwLAogICAgICAgICAgICAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgIHNzbF9zaHV0ZG93bl90aW1lb3V0PU5vbmUpOgoKICAgICAgICBkZWYgbG9vcChmPU5vbmUpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBmIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBmLnJlc3VsdCgpCiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVidWc6CiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXIgZ290IGEgbmV3IGNvbm5lY3Rpb24gZnJvbSAlcjogJXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLCBhZGRyLCBjb25uKQogICAgICAgICAgICAgICAgICAgIHByb3RvY29sID0gcHJvdG9jb2xfZmFjdG9yeSgpCiAgICAgICAgICAgICAgICAgICAgaWYgc3NsY29udGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFrZV9zc2xfdHJhbnNwb3J0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubiwgcHJvdG9jb2wsIHNzbGNvbnRleHQsIHNlcnZlcl9zaWRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT17J3BlZXJuYW1lJzogYWRkcn0sIHNlcnZlcj1zZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9c3NsX2hhbmRzaGFrZV90aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9c3NsX3NodXRkb3duX3RpbWVvdXQpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFrZV9zb2NrZXRfdHJhbnNwb3J0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubiwgcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT17J3BlZXJuYW1lJzogYWRkcn0sIHNlcnZlcj1zZXJ2ZXIpCiAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX2Nsb3NlZCgpOgogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgZiA9IHNlbGYuX3Byb2FjdG9yLmFjY2VwdChzb2NrKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICBpZiBzb2NrLmZpbGVubygpICE9IC0xOgogICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbF9leGNlcHRpb25faGFuZGxlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ0FjY2VwdCBmYWlsZWQgb24gYSBzb2NrZXQnLAogICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0JzogdHJzb2NrLlRyYW5zcG9ydFNvY2tldChzb2NrKSwKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkFjY2VwdCBmYWlsZWQgb24gc29ja2V0ICVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29jaywgZXhjX2luZm89VHJ1ZSkKICAgICAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX2FjY2VwdF9mdXR1cmVzW3NvY2suZmlsZW5vKCldID0gZgogICAgICAgICAgICAgICAgZi5hZGRfZG9uZV9jYWxsYmFjayhsb29wKQoKICAgICAgICBzZWxmLmNhbGxfc29vbihsb29wKQoKICAgIGRlZiBfcHJvY2Vzc19ldmVudHMoc2VsZiwgZXZlbnRfbGlzdCk6CiAgICAgICAgIyBFdmVudHMgYXJlIHByb2Nlc3NlZCBpbiB0aGUgSW9jcFByb2FjdG9yLl9wb2xsKCkgbWV0aG9kCiAgICAgICAgcGFzcwoKICAgIGRlZiBfc3RvcF9hY2NlcHRfZnV0dXJlcyhzZWxmKToKICAgICAgICBmb3IgZnV0dXJlIGluIHNlbGYuX2FjY2VwdF9mdXR1cmVzLnZhbHVlcygpOgogICAgICAgICAgICBmdXR1cmUuY2FuY2VsKCkKICAgICAgICBzZWxmLl9hY2NlcHRfZnV0dXJlcy5jbGVhcigpCgogICAgZGVmIF9zdG9wX3NlcnZpbmcoc2VsZiwgc29jayk6CiAgICAgICAgZnV0dXJlID0gc2VsZi5fYWNjZXB0X2Z1dHVyZXMucG9wKHNvY2suZmlsZW5vKCksIE5vbmUpCiAgICAgICAgaWYgZnV0dXJlOgogICAgICAgICAgICBmdXR1cmUuY2FuY2VsKCkKICAgICAgICBzZWxmLl9wcm9hY3Rvci5fc3RvcF9zZXJ2aW5nKHNvY2spCiAgICAgICAgc29jay5jbG9zZSgpClBLAwQUAAAAAAACIKNWq9BviS0bAAAtGwAAFAAAAGFzeW5jaW8vcHJvdG9jb2xzLnB5IiIiQWJzdHJhY3QgUHJvdG9jb2wgYmFzZSBjbGFzc2VzLiIiIgoKX19hbGxfXyA9ICgKICAgICdCYXNlUHJvdG9jb2wnLCAnUHJvdG9jb2wnLCAnRGF0YWdyYW1Qcm90b2NvbCcsCiAgICAnU3VicHJvY2Vzc1Byb3RvY29sJywgJ0J1ZmZlcmVkUHJvdG9jb2wnLAopCgoKY2xhc3MgQmFzZVByb3RvY29sOgogICAgIiIiQ29tbW9uIGJhc2UgY2xhc3MgZm9yIHByb3RvY29sIGludGVyZmFjZXMuCgogICAgVXN1YWxseSB1c2VyIGltcGxlbWVudHMgcHJvdG9jb2xzIHRoYXQgZGVyaXZlZCBmcm9tIEJhc2VQcm90b2NvbAogICAgbGlrZSBQcm90b2NvbCBvciBQcm9jZXNzUHJvdG9jb2wuCgogICAgVGhlIG9ubHkgY2FzZSB3aGVuIEJhc2VQcm90b2NvbCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgZGlyZWN0bHkgaXMKICAgIHdyaXRlLW9ubHkgdHJhbnNwb3J0IGxpa2Ugd3JpdGUgcGlwZQogICAgIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNlbGYsIHRyYW5zcG9ydCk6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSBjb25uZWN0aW9uIGlzIG1hZGUuCgogICAgICAgIFRoZSBhcmd1bWVudCBpcyB0aGUgdHJhbnNwb3J0IHJlcHJlc2VudGluZyB0aGUgcGlwZSBjb25uZWN0aW9uLgogICAgICAgIFRvIHJlY2VpdmUgZGF0YSwgd2FpdCBmb3IgZGF0YV9yZWNlaXZlZCgpIGNhbGxzLgogICAgICAgIFdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLCBjb25uZWN0aW9uX2xvc3QoKSBpcyBjYWxsZWQuCiAgICAgICAgIiIiCgogICAgZGVmIGNvbm5lY3Rpb25fbG9zdChzZWxmLCBleGMpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGxvc3Qgb3IgY2xvc2VkLgoKICAgICAgICBUaGUgYXJndW1lbnQgaXMgYW4gZXhjZXB0aW9uIG9iamVjdCBvciBOb25lICh0aGUgbGF0dGVyCiAgICAgICAgbWVhbmluZyBhIHJlZ3VsYXIgRU9GIGlzIHJlY2VpdmVkIG9yIHRoZSBjb25uZWN0aW9uIHdhcwogICAgICAgIGFib3J0ZWQgb3IgY2xvc2VkKS4KICAgICAgICAiIiIKCiAgICBkZWYgcGF1c2Vfd3JpdGluZyhzZWxmKToKICAgICAgICAiIiJDYWxsZWQgd2hlbiB0aGUgdHJhbnNwb3J0J3MgYnVmZmVyIGdvZXMgb3ZlciB0aGUgaGlnaC13YXRlciBtYXJrLgoKICAgICAgICBQYXVzZSBhbmQgcmVzdW1lIGNhbGxzIGFyZSBwYWlyZWQgLS0gcGF1c2Vfd3JpdGluZygpIGlzIGNhbGxlZAogICAgICAgIG9uY2Ugd2hlbiB0aGUgYnVmZmVyIGdvZXMgc3RyaWN0bHkgb3ZlciB0aGUgaGlnaC13YXRlciBtYXJrCiAgICAgICAgKGV2ZW4gaWYgc3Vic2VxdWVudCB3cml0ZXMgaW5jcmVhc2VzIHRoZSBidWZmZXIgc2l6ZSBldmVuCiAgICAgICAgbW9yZSksIGFuZCBldmVudHVhbGx5IHJlc3VtZV93cml0aW5nKCkgaXMgY2FsbGVkIG9uY2Ugd2hlbiB0aGUKICAgICAgICBidWZmZXIgc2l6ZSByZWFjaGVzIHRoZSBsb3ctd2F0ZXIgbWFyay4KCiAgICAgICAgTm90ZSB0aGF0IGlmIHRoZSBidWZmZXIgc2l6ZSBlcXVhbHMgdGhlIGhpZ2gtd2F0ZXIgbWFyaywKICAgICAgICBwYXVzZV93cml0aW5nKCkgaXMgbm90IGNhbGxlZCAtLSBpdCBtdXN0IGdvIHN0cmljdGx5IG92ZXIuCiAgICAgICAgQ29udmVyc2VseSwgcmVzdW1lX3dyaXRpbmcoKSBpcyBjYWxsZWQgd2hlbiB0aGUgYnVmZmVyIHNpemUgaXMKICAgICAgICBlcXVhbCBvciBsb3dlciB0aGFuIHRoZSBsb3ctd2F0ZXIgbWFyay4gIFRoZXNlIGVuZCBjb25kaXRpb25zCiAgICAgICAgYXJlIGltcG9ydGFudCB0byBlbnN1cmUgdGhhdCB0aGluZ3MgZ28gYXMgZXhwZWN0ZWQgd2hlbiBlaXRoZXIKICAgICAgICBtYXJrIGlzIHplcm8uCgogICAgICAgIE5PVEU6IFRoaXMgaXMgdGhlIG9ubHkgUHJvdG9jb2wgY2FsbGJhY2sgdGhhdCBpcyBub3QgY2FsbGVkCiAgICAgICAgdGhyb3VnaCBFdmVudExvb3AuY2FsbF9zb29uKCkgLS0gaWYgaXQgd2VyZSwgaXQgd291bGQgaGF2ZSBubwogICAgICAgIGVmZmVjdCB3aGVuIGl0J3MgbW9zdCBuZWVkZWQgKHdoZW4gdGhlIGFwcCBrZWVwcyB3cml0aW5nCiAgICAgICAgd2l0aG91dCB5aWVsZGluZyB1bnRpbCBwYXVzZV93cml0aW5nKCkgaXMgY2FsbGVkKS4KICAgICAgICAiIiIKCiAgICBkZWYgcmVzdW1lX3dyaXRpbmcoc2VsZik6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gdGhlIHRyYW5zcG9ydCdzIGJ1ZmZlciBkcmFpbnMgYmVsb3cgdGhlIGxvdy13YXRlciBtYXJrLgoKICAgICAgICBTZWUgcGF1c2Vfd3JpdGluZygpIGZvciBkZXRhaWxzLgogICAgICAgICIiIgoKCmNsYXNzIFByb3RvY29sKEJhc2VQcm90b2NvbCk6CiAgICAiIiJJbnRlcmZhY2UgZm9yIHN0cmVhbSBwcm90b2NvbC4KCiAgICBUaGUgdXNlciBzaG91bGQgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLiAgVGhleSBjYW4gaW5oZXJpdCBmcm9tCiAgICB0aGlzIGNsYXNzIGJ1dCBkb24ndCBuZWVkIHRvLiAgVGhlIGltcGxlbWVudGF0aW9ucyBoZXJlIGRvCiAgICBub3RoaW5nICh0aGV5IGRvbid0IHJhaXNlIGV4Y2VwdGlvbnMpLgoKICAgIFdoZW4gdGhlIHVzZXIgd2FudHMgdG8gcmVxdWVzdHMgYSB0cmFuc3BvcnQsIHRoZXkgcGFzcyBhIHByb3RvY29sCiAgICBmYWN0b3J5IHRvIGEgdXRpbGl0eSBmdW5jdGlvbiAoZS5nLiwgRXZlbnRMb29wLmNyZWF0ZV9jb25uZWN0aW9uKCkpLgoKICAgIFdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgbWFkZSBzdWNjZXNzZnVsbHksIGNvbm5lY3Rpb25fbWFkZSgpIGlzCiAgICBjYWxsZWQgd2l0aCBhIHN1aXRhYmxlIHRyYW5zcG9ydCBvYmplY3QuICBUaGVuIGRhdGFfcmVjZWl2ZWQoKQogICAgd2lsbCBiZSBjYWxsZWQgMCBvciBtb3JlIHRpbWVzIHdpdGggZGF0YSAoYnl0ZXMpIHJlY2VpdmVkIGZyb20gdGhlCiAgICB0cmFuc3BvcnQ7IGZpbmFsbHksIGNvbm5lY3Rpb25fbG9zdCgpIHdpbGwgYmUgY2FsbGVkIGV4YWN0bHkgb25jZQogICAgd2l0aCBlaXRoZXIgYW4gZXhjZXB0aW9uIG9iamVjdCBvciBOb25lIGFzIGFuIGFyZ3VtZW50LgoKICAgIFN0YXRlIG1hY2hpbmUgb2YgY2FsbHM6CgogICAgICBzdGFydCAtPiBDTSBbLT4gRFIqXSBbLT4gRVI/XSAtPiBDTCAtPiBlbmQKCiAgICAqIENNOiBjb25uZWN0aW9uX21hZGUoKQogICAgKiBEUjogZGF0YV9yZWNlaXZlZCgpCiAgICAqIEVSOiBlb2ZfcmVjZWl2ZWQoKQogICAgKiBDTDogY29ubmVjdGlvbl9sb3N0KCkKICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgZGVmIGRhdGFfcmVjZWl2ZWQoc2VsZiwgZGF0YSk6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gc29tZSBkYXRhIGlzIHJlY2VpdmVkLgoKICAgICAgICBUaGUgYXJndW1lbnQgaXMgYSBieXRlcyBvYmplY3QuCiAgICAgICAgIiIiCgogICAgZGVmIGVvZl9yZWNlaXZlZChzZWxmKToKICAgICAgICAiIiJDYWxsZWQgd2hlbiB0aGUgb3RoZXIgZW5kIGNhbGxzIHdyaXRlX2VvZigpIG9yIGVxdWl2YWxlbnQuCgogICAgICAgIElmIHRoaXMgcmV0dXJucyBhIGZhbHNlIHZhbHVlIChpbmNsdWRpbmcgTm9uZSksIHRoZSB0cmFuc3BvcnQKICAgICAgICB3aWxsIGNsb3NlIGl0c2VsZi4gIElmIGl0IHJldHVybnMgYSB0cnVlIHZhbHVlLCBjbG9zaW5nIHRoZQogICAgICAgIHRyYW5zcG9ydCBpcyB1cCB0byB0aGUgcHJvdG9jb2wuCiAgICAgICAgIiIiCgoKY2xhc3MgQnVmZmVyZWRQcm90b2NvbChCYXNlUHJvdG9jb2wpOgogICAgIiIiSW50ZXJmYWNlIGZvciBzdHJlYW0gcHJvdG9jb2wgd2l0aCBtYW51YWwgYnVmZmVyIGNvbnRyb2wuCgogICAgRXZlbnQgbWV0aG9kcywgc3VjaCBhcyBgY3JlYXRlX3NlcnZlcmAgYW5kIGBjcmVhdGVfY29ubmVjdGlvbmAsCiAgICBhY2NlcHQgZmFjdG9yaWVzIHRoYXQgcmV0dXJuIHByb3RvY29scyB0aGF0IGltcGxlbWVudCB0aGlzIGludGVyZmFjZS4KCiAgICBUaGUgaWRlYSBvZiBCdWZmZXJlZFByb3RvY29sIGlzIHRoYXQgaXQgYWxsb3dzIHRvIG1hbnVhbGx5IGFsbG9jYXRlCiAgICBhbmQgY29udHJvbCB0aGUgcmVjZWl2ZSBidWZmZXIuICBFdmVudCBsb29wcyBjYW4gdGhlbiB1c2UgdGhlIGJ1ZmZlcgogICAgcHJvdmlkZWQgYnkgdGhlIHByb3RvY29sIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGRhdGEgY29waWVzLiAgVGhpcwogICAgY2FuIHJlc3VsdCBpbiBub3RpY2VhYmxlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGZvciBwcm90b2NvbHMgdGhhdAogICAgcmVjZWl2ZSBiaWcgYW1vdW50cyBvZiBkYXRhLiAgU29waGlzdGljYXRlZCBwcm90b2NvbHMgY2FuIGFsbG9jYXRlCiAgICB0aGUgYnVmZmVyIG9ubHkgb25jZSBhdCBjcmVhdGlvbiB0aW1lLgoKICAgIFN0YXRlIG1hY2hpbmUgb2YgY2FsbHM6CgogICAgICBzdGFydCAtPiBDTSBbLT4gR0IgWy0+IEJVP11dKiBbLT4gRVI/XSAtPiBDTCAtPiBlbmQKCiAgICAqIENNOiBjb25uZWN0aW9uX21hZGUoKQogICAgKiBHQjogZ2V0X2J1ZmZlcigpCiAgICAqIEJVOiBidWZmZXJfdXBkYXRlZCgpCiAgICAqIEVSOiBlb2ZfcmVjZWl2ZWQoKQogICAgKiBDTDogY29ubmVjdGlvbl9sb3N0KCkKICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgZGVmIGdldF9idWZmZXIoc2VsZiwgc2l6ZWhpbnQpOgogICAgICAgICIiIkNhbGxlZCB0byBhbGxvY2F0ZSBhIG5ldyByZWNlaXZlIGJ1ZmZlci4KCiAgICAgICAgKnNpemVoaW50KiBpcyBhIHJlY29tbWVuZGVkIG1pbmltYWwgc2l6ZSBmb3IgdGhlIHJldHVybmVkCiAgICAgICAgYnVmZmVyLiAgV2hlbiBzZXQgdG8gLTEsIHRoZSBidWZmZXIgc2l6ZSBjYW4gYmUgYXJiaXRyYXJ5LgoKICAgICAgICBNdXN0IHJldHVybiBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZQogICAgICAgIDpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gLgogICAgICAgIEl0IGlzIGFuIGVycm9yIHRvIHJldHVybiBhIHplcm8tc2l6ZWQgYnVmZmVyLgogICAgICAgICIiIgoKICAgIGRlZiBidWZmZXJfdXBkYXRlZChzZWxmLCBuYnl0ZXMpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIHRoZSBidWZmZXIgd2FzIHVwZGF0ZWQgd2l0aCB0aGUgcmVjZWl2ZWQgZGF0YS4KCiAgICAgICAgKm5ieXRlcyogaXMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUgd3JpdHRlbiB0bwogICAgICAgIHRoZSBidWZmZXIuCiAgICAgICAgIiIiCgogICAgZGVmIGVvZl9yZWNlaXZlZChzZWxmKToKICAgICAgICAiIiJDYWxsZWQgd2hlbiB0aGUgb3RoZXIgZW5kIGNhbGxzIHdyaXRlX2VvZigpIG9yIGVxdWl2YWxlbnQuCgogICAgICAgIElmIHRoaXMgcmV0dXJucyBhIGZhbHNlIHZhbHVlIChpbmNsdWRpbmcgTm9uZSksIHRoZSB0cmFuc3BvcnQKICAgICAgICB3aWxsIGNsb3NlIGl0c2VsZi4gIElmIGl0IHJldHVybnMgYSB0cnVlIHZhbHVlLCBjbG9zaW5nIHRoZQogICAgICAgIHRyYW5zcG9ydCBpcyB1cCB0byB0aGUgcHJvdG9jb2wuCiAgICAgICAgIiIiCgoKY2xhc3MgRGF0YWdyYW1Qcm90b2NvbChCYXNlUHJvdG9jb2wpOgogICAgIiIiSW50ZXJmYWNlIGZvciBkYXRhZ3JhbSBwcm90b2NvbC4iIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBkYXRhZ3JhbV9yZWNlaXZlZChzZWxmLCBkYXRhLCBhZGRyKToKICAgICAgICAiIiJDYWxsZWQgd2hlbiBzb21lIGRhdGFncmFtIGlzIHJlY2VpdmVkLiIiIgoKICAgIGRlZiBlcnJvcl9yZWNlaXZlZChzZWxmLCBleGMpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIGEgc2VuZCBvciByZWNlaXZlIG9wZXJhdGlvbiByYWlzZXMgYW4gT1NFcnJvci4KCiAgICAgICAgKE90aGVyIHRoYW4gQmxvY2tpbmdJT0Vycm9yIG9yIEludGVycnVwdGVkRXJyb3IuKQogICAgICAgICIiIgoKCmNsYXNzIFN1YnByb2Nlc3NQcm90b2NvbChCYXNlUHJvdG9jb2wpOgogICAgIiIiSW50ZXJmYWNlIGZvciBwcm90b2NvbCBmb3Igc3VicHJvY2VzcyBjYWxscy4iIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBwaXBlX2RhdGFfcmVjZWl2ZWQoc2VsZiwgZmQsIGRhdGEpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIHRoZSBzdWJwcm9jZXNzIHdyaXRlcyBkYXRhIGludG8gc3Rkb3V0L3N0ZGVyciBwaXBlLgoKICAgICAgICBmZCBpcyBpbnQgZmlsZSBkZXNjcmlwdG9yLgogICAgICAgIGRhdGEgaXMgYnl0ZXMgb2JqZWN0LgogICAgICAgICIiIgoKICAgIGRlZiBwaXBlX2Nvbm5lY3Rpb25fbG9zdChzZWxmLCBmZCwgZXhjKToKICAgICAgICAiIiJDYWxsZWQgd2hlbiBhIGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggdGhlIGNoaWxkIHByb2Nlc3MgaXMKICAgICAgICBjbG9zZWQuCgogICAgICAgIGZkIGlzIHRoZSBpbnQgZmlsZSBkZXNjcmlwdG9yIHRoYXQgd2FzIGNsb3NlZC4KICAgICAgICAiIiIKCiAgICBkZWYgcHJvY2Vzc19leGl0ZWQoc2VsZik6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gc3VicHJvY2VzcyBoYXMgZXhpdGVkLiIiIgoKCmRlZiBfZmVlZF9kYXRhX3RvX2J1ZmZlcmVkX3Byb3RvKHByb3RvLCBkYXRhKToKICAgIGRhdGFfbGVuID0gbGVuKGRhdGEpCiAgICB3aGlsZSBkYXRhX2xlbjoKICAgICAgICBidWYgPSBwcm90by5nZXRfYnVmZmVyKGRhdGFfbGVuKQogICAgICAgIGJ1Zl9sZW4gPSBsZW4oYnVmKQogICAgICAgIGlmIG5vdCBidWZfbGVuOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2dldF9idWZmZXIoKSByZXR1cm5lZCBhbiBlbXB0eSBidWZmZXInKQoKICAgICAgICBpZiBidWZfbGVuID49IGRhdGFfbGVuOgogICAgICAgICAgICBidWZbOmRhdGFfbGVuXSA9IGRhdGEKICAgICAgICAgICAgcHJvdG8uYnVmZmVyX3VwZGF0ZWQoZGF0YV9sZW4pCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJ1Zls6YnVmX2xlbl0gPSBkYXRhWzpidWZfbGVuXQogICAgICAgICAgICBwcm90by5idWZmZXJfdXBkYXRlZChidWZfbGVuKQogICAgICAgICAgICBkYXRhID0gZGF0YVtidWZfbGVuOl0KICAgICAgICAgICAgZGF0YV9sZW4gPSBsZW4oZGF0YSkKUEsDBBQAAAAAAAIgo1bvZn8oJh8AACYfAAARAAAAYXN5bmNpby9xdWV1ZXMucHlfX2FsbF9fID0gKCdRdWV1ZScsICdQcmlvcml0eVF1ZXVlJywgJ0xpZm9RdWV1ZScsICdRdWV1ZUZ1bGwnLCAnUXVldWVFbXB0eScpCgppbXBvcnQgY29sbGVjdGlvbnMKaW1wb3J0IGhlYXBxCmZyb20gdHlwZXMgaW1wb3J0IEdlbmVyaWNBbGlhcwoKZnJvbSAuIGltcG9ydCBsb2Nrcwpmcm9tIC4gaW1wb3J0IG1peGlucwoKCmNsYXNzIFF1ZXVlRW1wdHkoRXhjZXB0aW9uKToKICAgICIiIlJhaXNlZCB3aGVuIFF1ZXVlLmdldF9ub3dhaXQoKSBpcyBjYWxsZWQgb24gYW4gZW1wdHkgUXVldWUuIiIiCiAgICBwYXNzCgoKY2xhc3MgUXVldWVGdWxsKEV4Y2VwdGlvbik6CiAgICAiIiJSYWlzZWQgd2hlbiB0aGUgUXVldWUucHV0X25vd2FpdCgpIG1ldGhvZCBpcyBjYWxsZWQgb24gYSBmdWxsIFF1ZXVlLiIiIgogICAgcGFzcwoKCmNsYXNzIFF1ZXVlKG1peGlucy5fTG9vcEJvdW5kTWl4aW4pOgogICAgIiIiQSBxdWV1ZSwgdXNlZnVsIGZvciBjb29yZGluYXRpbmcgcHJvZHVjZXIgYW5kIGNvbnN1bWVyIGNvcm91dGluZXMuCgogICAgSWYgbWF4c2l6ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybywgdGhlIHF1ZXVlIHNpemUgaXMgaW5maW5pdGUuIElmIGl0CiAgICBpcyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiAwLCB0aGVuICJhd2FpdCBwdXQoKSIgd2lsbCBibG9jayB3aGVuIHRoZQogICAgcXVldWUgcmVhY2hlcyBtYXhzaXplLCB1bnRpbCBhbiBpdGVtIGlzIHJlbW92ZWQgYnkgZ2V0KCkuCgogICAgVW5saWtlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IFF1ZXVlLCB5b3UgY2FuIHJlbGlhYmx5IGtub3cgdGhpcyBRdWV1ZSdzIHNpemUKICAgIHdpdGggcXNpemUoKSwgc2luY2UgeW91ciBzaW5nbGUtdGhyZWFkZWQgYXN5bmNpbyBhcHBsaWNhdGlvbiB3b24ndCBiZQogICAgaW50ZXJydXB0ZWQgYmV0d2VlbiBjYWxsaW5nIHFzaXplKCkgYW5kIGRvaW5nIGFuIG9wZXJhdGlvbiBvbiB0aGUgUXVldWUuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4c2l6ZT0wKToKICAgICAgICBzZWxmLl9tYXhzaXplID0gbWF4c2l6ZQoKICAgICAgICAjIEZ1dHVyZXMuCiAgICAgICAgc2VsZi5fZ2V0dGVycyA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKICAgICAgICAjIEZ1dHVyZXMuCiAgICAgICAgc2VsZi5fcHV0dGVycyA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKICAgICAgICBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzID0gMAogICAgICAgIHNlbGYuX2ZpbmlzaGVkID0gbG9ja3MuRXZlbnQoKQogICAgICAgIHNlbGYuX2ZpbmlzaGVkLnNldCgpCiAgICAgICAgc2VsZi5faW5pdChtYXhzaXplKQoKICAgICMgVGhlc2UgdGhyZWUgYXJlIG92ZXJyaWRhYmxlIGluIHN1YmNsYXNzZXMuCgogICAgZGVmIF9pbml0KHNlbGYsIG1heHNpemUpOgogICAgICAgIHNlbGYuX3F1ZXVlID0gY29sbGVjdGlvbnMuZGVxdWUoKQoKICAgIGRlZiBfZ2V0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9xdWV1ZS5wb3BsZWZ0KCkKCiAgICBkZWYgX3B1dChzZWxmLCBpdGVtKToKICAgICAgICBzZWxmLl9xdWV1ZS5hcHBlbmQoaXRlbSkKCiAgICAjIEVuZCBvZiB0aGUgb3ZlcnJpZGFibGUgbWV0aG9kcy4KCiAgICBkZWYgX3dha2V1cF9uZXh0KHNlbGYsIHdhaXRlcnMpOgogICAgICAgICMgV2FrZSB1cCB0aGUgbmV4dCB3YWl0ZXIgKGlmIGFueSkgdGhhdCBpc24ndCBjYW5jZWxsZWQuCiAgICAgICAgd2hpbGUgd2FpdGVyczoKICAgICAgICAgICAgd2FpdGVyID0gd2FpdGVycy5wb3BsZWZ0KCkKICAgICAgICAgICAgaWYgbm90IHdhaXRlci5kb25lKCk6CiAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQogICAgICAgICAgICAgICAgYnJlYWsKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYnPHt0eXBlKHNlbGYpLl9fbmFtZV9ffSBhdCB7aWQoc2VsZik6I3h9IHtzZWxmLl9mb3JtYXQoKX0+JwoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBmJzx7dHlwZShzZWxmKS5fX25hbWVfX30ge3NlbGYuX2Zvcm1hdCgpfT4nCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZChHZW5lcmljQWxpYXMpCgogICAgZGVmIF9mb3JtYXQoc2VsZik6CiAgICAgICAgcmVzdWx0ID0gZidtYXhzaXplPXtzZWxmLl9tYXhzaXplIXJ9JwogICAgICAgIGlmIGdldGF0dHIoc2VsZiwgJ19xdWV1ZScsIE5vbmUpOgogICAgICAgICAgICByZXN1bHQgKz0gZicgX3F1ZXVlPXtsaXN0KHNlbGYuX3F1ZXVlKSFyfScKICAgICAgICBpZiBzZWxmLl9nZXR0ZXJzOgogICAgICAgICAgICByZXN1bHQgKz0gZicgX2dldHRlcnNbe2xlbihzZWxmLl9nZXR0ZXJzKX1dJwogICAgICAgIGlmIHNlbGYuX3B1dHRlcnM6CiAgICAgICAgICAgIHJlc3VsdCArPSBmJyBfcHV0dGVyc1t7bGVuKHNlbGYuX3B1dHRlcnMpfV0nCiAgICAgICAgaWYgc2VsZi5fdW5maW5pc2hlZF90YXNrczoKICAgICAgICAgICAgcmVzdWx0ICs9IGYnIHRhc2tzPXtzZWxmLl91bmZpbmlzaGVkX3Rhc2tzfScKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIHFzaXplKHNlbGYpOgogICAgICAgICIiIk51bWJlciBvZiBpdGVtcyBpbiB0aGUgcXVldWUuIiIiCiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9xdWV1ZSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtYXhzaXplKHNlbGYpOgogICAgICAgICIiIk51bWJlciBvZiBpdGVtcyBhbGxvd2VkIGluIHRoZSBxdWV1ZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fbWF4c2l6ZQoKICAgIGRlZiBlbXB0eShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgcXVldWUgaXMgZW1wdHksIEZhbHNlIG90aGVyd2lzZS4iIiIKICAgICAgICByZXR1cm4gbm90IHNlbGYuX3F1ZXVlCgogICAgZGVmIGZ1bGwoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlcmUgYXJlIG1heHNpemUgaXRlbXMgaW4gdGhlIHF1ZXVlLgoKICAgICAgICBOb3RlOiBpZiB0aGUgUXVldWUgd2FzIGluaXRpYWxpemVkIHdpdGggbWF4c2l6ZT0wICh0aGUgZGVmYXVsdCksCiAgICAgICAgdGhlbiBmdWxsKCkgaXMgbmV2ZXIgVHJ1ZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl9tYXhzaXplIDw9IDA6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnFzaXplKCkgPj0gc2VsZi5fbWF4c2l6ZQoKICAgIGFzeW5jIGRlZiBwdXQoc2VsZiwgaXRlbSk6CiAgICAgICAgIiIiUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUuCgogICAgICAgIFB1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlLiBJZiB0aGUgcXVldWUgaXMgZnVsbCwgd2FpdCB1bnRpbCBhIGZyZWUKICAgICAgICBzbG90IGlzIGF2YWlsYWJsZSBiZWZvcmUgYWRkaW5nIGl0ZW0uCiAgICAgICAgIiIiCiAgICAgICAgd2hpbGUgc2VsZi5mdWxsKCk6CiAgICAgICAgICAgIHB1dHRlciA9IHNlbGYuX2dldF9sb29wKCkuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgICAgIHNlbGYuX3B1dHRlcnMuYXBwZW5kKHB1dHRlcikKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYXdhaXQgcHV0dGVyCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHB1dHRlci5jYW5jZWwoKSAgIyBKdXN0IGluIGNhc2UgcHV0dGVyIGlzIG5vdCBkb25lIHlldC4KICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAjIENsZWFuIHNlbGYuX3B1dHRlcnMgZnJvbSBjYW5jZWxlZCBwdXR0ZXJzLgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1dHRlcnMucmVtb3ZlKHB1dHRlcikKICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICMgVGhlIHB1dHRlciBjb3VsZCBiZSByZW1vdmVkIGZyb20gc2VsZi5fcHV0dGVycyBieSBhCiAgICAgICAgICAgICAgICAgICAgIyBwcmV2aW91cyBnZXRfbm93YWl0IGNhbGwuCiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuZnVsbCgpIGFuZCBub3QgcHV0dGVyLmNhbmNlbGxlZCgpOgogICAgICAgICAgICAgICAgICAgICMgV2Ugd2VyZSB3b2tlbiB1cCBieSBnZXRfbm93YWl0KCksIGJ1dCBjYW4ndCB0YWtlCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgY2FsbC4gIFdha2UgdXAgdGhlIG5leHQgaW4gbGluZS4KICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWtldXBfbmV4dChzZWxmLl9wdXR0ZXJzKQogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICByZXR1cm4gc2VsZi5wdXRfbm93YWl0KGl0ZW0pCgogICAgZGVmIHB1dF9ub3dhaXQoc2VsZiwgaXRlbSk6CiAgICAgICAgIiIiUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KCiAgICAgICAgSWYgbm8gZnJlZSBzbG90IGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwgcmFpc2UgUXVldWVGdWxsLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuZnVsbCgpOgogICAgICAgICAgICByYWlzZSBRdWV1ZUZ1bGwKICAgICAgICBzZWxmLl9wdXQoaXRlbSkKICAgICAgICBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzICs9IDEKICAgICAgICBzZWxmLl9maW5pc2hlZC5jbGVhcigpCiAgICAgICAgc2VsZi5fd2FrZXVwX25leHQoc2VsZi5fZ2V0dGVycykKCiAgICBhc3luYyBkZWYgZ2V0KHNlbGYpOgogICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCgogICAgICAgIElmIHF1ZXVlIGlzIGVtcHR5LCB3YWl0IHVudGlsIGFuIGl0ZW0gaXMgYXZhaWxhYmxlLgogICAgICAgICIiIgogICAgICAgIHdoaWxlIHNlbGYuZW1wdHkoKToKICAgICAgICAgICAgZ2V0dGVyID0gc2VsZi5fZ2V0X2xvb3AoKS5jcmVhdGVfZnV0dXJlKCkKICAgICAgICAgICAgc2VsZi5fZ2V0dGVycy5hcHBlbmQoZ2V0dGVyKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBhd2FpdCBnZXR0ZXIKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgZ2V0dGVyLmNhbmNlbCgpICAjIEp1c3QgaW4gY2FzZSBnZXR0ZXIgaXMgbm90IGRvbmUgeWV0LgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICMgQ2xlYW4gc2VsZi5fZ2V0dGVycyBmcm9tIGNhbmNlbGVkIGdldHRlcnMuCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0dGVycy5yZW1vdmUoZ2V0dGVyKQogICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIyBUaGUgZ2V0dGVyIGNvdWxkIGJlIHJlbW92ZWQgZnJvbSBzZWxmLl9nZXR0ZXJzIGJ5IGEKICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIHB1dF9ub3dhaXQgY2FsbC4KICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5lbXB0eSgpIGFuZCBub3QgZ2V0dGVyLmNhbmNlbGxlZCgpOgogICAgICAgICAgICAgICAgICAgICMgV2Ugd2VyZSB3b2tlbiB1cCBieSBwdXRfbm93YWl0KCksIGJ1dCBjYW4ndCB0YWtlCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgY2FsbC4gIFdha2UgdXAgdGhlIG5leHQgaW4gbGluZS4KICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWtldXBfbmV4dChzZWxmLl9nZXR0ZXJzKQogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICByZXR1cm4gc2VsZi5nZXRfbm93YWl0KCkKCiAgICBkZWYgZ2V0X25vd2FpdChzZWxmKToKICAgICAgICAiIiJSZW1vdmUgYW5kIHJldHVybiBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlLgoKICAgICAgICBSZXR1cm4gYW4gaXRlbSBpZiBvbmUgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBlbHNlIHJhaXNlIFF1ZXVlRW1wdHkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5lbXB0eSgpOgogICAgICAgICAgICByYWlzZSBRdWV1ZUVtcHR5CiAgICAgICAgaXRlbSA9IHNlbGYuX2dldCgpCiAgICAgICAgc2VsZi5fd2FrZXVwX25leHQoc2VsZi5fcHV0dGVycykKICAgICAgICByZXR1cm4gaXRlbQoKICAgIGRlZiB0YXNrX2RvbmUoc2VsZik6CiAgICAgICAgIiIiSW5kaWNhdGUgdGhhdCBhIGZvcm1lcmx5IGVucXVldWVkIHRhc2sgaXMgY29tcGxldGUuCgogICAgICAgIFVzZWQgYnkgcXVldWUgY29uc3VtZXJzLiBGb3IgZWFjaCBnZXQoKSB1c2VkIHRvIGZldGNoIGEgdGFzaywKICAgICAgICBhIHN1YnNlcXVlbnQgY2FsbCB0byB0YXNrX2RvbmUoKSB0ZWxscyB0aGUgcXVldWUgdGhhdCB0aGUgcHJvY2Vzc2luZwogICAgICAgIG9uIHRoZSB0YXNrIGlzIGNvbXBsZXRlLgoKICAgICAgICBJZiBhIGpvaW4oKSBpcyBjdXJyZW50bHkgYmxvY2tpbmcsIGl0IHdpbGwgcmVzdW1lIHdoZW4gYWxsIGl0ZW1zIGhhdmUKICAgICAgICBiZWVuIHByb2Nlc3NlZCAobWVhbmluZyB0aGF0IGEgdGFza19kb25lKCkgY2FsbCB3YXMgcmVjZWl2ZWQgZm9yIGV2ZXJ5CiAgICAgICAgaXRlbSB0aGF0IGhhZCBiZWVuIHB1dCgpIGludG8gdGhlIHF1ZXVlKS4KCiAgICAgICAgUmFpc2VzIFZhbHVlRXJyb3IgaWYgY2FsbGVkIG1vcmUgdGltZXMgdGhhbiB0aGVyZSB3ZXJlIGl0ZW1zIHBsYWNlZCBpbgogICAgICAgIHRoZSBxdWV1ZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Rhc2tfZG9uZSgpIGNhbGxlZCB0b28gbWFueSB0aW1lcycpCiAgICAgICAgc2VsZi5fdW5maW5pc2hlZF90YXNrcyAtPSAxCiAgICAgICAgaWYgc2VsZi5fdW5maW5pc2hlZF90YXNrcyA9PSAwOgogICAgICAgICAgICBzZWxmLl9maW5pc2hlZC5zZXQoKQoKICAgIGFzeW5jIGRlZiBqb2luKHNlbGYpOgogICAgICAgICIiIkJsb2NrIHVudGlsIGFsbCBpdGVtcyBpbiB0aGUgcXVldWUgaGF2ZSBiZWVuIGdvdHRlbiBhbmQgcHJvY2Vzc2VkLgoKICAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCiAgICAgICAgcXVldWUuIFRoZSBjb3VudCBnb2VzIGRvd24gd2hlbmV2ZXIgYSBjb25zdW1lciBjYWxscyB0YXNrX2RvbmUoKSB0bwogICAgICAgIGluZGljYXRlIHRoYXQgdGhlIGl0ZW0gd2FzIHJldHJpZXZlZCBhbmQgYWxsIHdvcmsgb24gaXQgaXMgY29tcGxldGUuCiAgICAgICAgV2hlbiB0aGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBkcm9wcyB0byB6ZXJvLCBqb2luKCkgdW5ibG9ja3MuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fdW5maW5pc2hlZF90YXNrcyA+IDA6CiAgICAgICAgICAgIGF3YWl0IHNlbGYuX2ZpbmlzaGVkLndhaXQoKQoKCmNsYXNzIFByaW9yaXR5UXVldWUoUXVldWUpOgogICAgIiIiQSBzdWJjbGFzcyBvZiBRdWV1ZTsgcmV0cmlldmVzIGVudHJpZXMgaW4gcHJpb3JpdHkgb3JkZXIgKGxvd2VzdCBmaXJzdCkuCgogICAgRW50cmllcyBhcmUgdHlwaWNhbGx5IHR1cGxlcyBvZiB0aGUgZm9ybTogKHByaW9yaXR5IG51bWJlciwgZGF0YSkuCiAgICAiIiIKCiAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgc2VsZi5fcXVldWUgPSBbXQoKICAgIGRlZiBfcHV0KHNlbGYsIGl0ZW0sIGhlYXBwdXNoPWhlYXBxLmhlYXBwdXNoKToKICAgICAgICBoZWFwcHVzaChzZWxmLl9xdWV1ZSwgaXRlbSkKCiAgICBkZWYgX2dldChzZWxmLCBoZWFwcG9wPWhlYXBxLmhlYXBwb3ApOgogICAgICAgIHJldHVybiBoZWFwcG9wKHNlbGYuX3F1ZXVlKQoKCmNsYXNzIExpZm9RdWV1ZShRdWV1ZSk6CiAgICAiIiJBIHN1YmNsYXNzIG9mIFF1ZXVlIHRoYXQgcmV0cmlldmVzIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cmllcyBmaXJzdC4iIiIKCiAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgc2VsZi5fcXVldWUgPSBbXQoKICAgIGRlZiBfcHV0KHNlbGYsIGl0ZW0pOgogICAgICAgIHNlbGYuX3F1ZXVlLmFwcGVuZChpdGVtKQoKICAgIGRlZiBfZ2V0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9xdWV1ZS5wb3AoKQpQSwMEFAAAAAAAAiCjVopjwxC6GgAAuhoAABIAAABhc3luY2lvL3J1bm5lcnMucHlfX2FsbF9fID0gKCdSdW5uZXInLCAncnVuJykKCmltcG9ydCBjb250ZXh0dmFycwppbXBvcnQgZW51bQppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCB0aHJlYWRpbmcKaW1wb3J0IHNpZ25hbAppbXBvcnQgc3lzCmZyb20gLiBpbXBvcnQgY29yb3V0aW5lcwpmcm9tIC4gaW1wb3J0IGV2ZW50cwpmcm9tIC4gaW1wb3J0IGV4Y2VwdGlvbnMKZnJvbSAuIGltcG9ydCB0YXNrcwoKCmNsYXNzIF9TdGF0ZShlbnVtLkVudW0pOgogICAgQ1JFQVRFRCA9ICJjcmVhdGVkIgogICAgSU5JVElBTElaRUQgPSAiaW5pdGlhbGl6ZWQiCiAgICBDTE9TRUQgPSAiY2xvc2VkIgoKCmNsYXNzIFJ1bm5lcjoKICAgICIiIkEgY29udGV4dCBtYW5hZ2VyIHRoYXQgY29udHJvbHMgZXZlbnQgbG9vcCBsaWZlIGN5Y2xlLgoKICAgIFRoZSBjb250ZXh0IG1hbmFnZXIgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgZXZlbnQgbG9vcCwKICAgIGFsbG93cyB0byBydW4gYXN5bmMgZnVuY3Rpb25zIGluc2lkZSBpdCwKICAgIGFuZCBwcm9wZXJseSBmaW5hbGl6ZXMgdGhlIGxvb3AgYXQgdGhlIGNvbnRleHQgbWFuYWdlciBleGl0LgoKICAgIElmIGRlYnVnIGlzIFRydWUsIHRoZSBldmVudCBsb29wIHdpbGwgYmUgcnVuIGluIGRlYnVnIG1vZGUuCiAgICBJZiBsb29wX2ZhY3RvcnkgaXMgcGFzc2VkLCBpdCBpcyB1c2VkIGZvciBuZXcgZXZlbnQgbG9vcCBjcmVhdGlvbi4KCiAgICBhc3luY2lvLnJ1bihtYWluKCksIGRlYnVnPVRydWUpCgogICAgaXMgYSBzaG9ydGN1dCBmb3IKCiAgICB3aXRoIGFzeW5jaW8uUnVubmVyKGRlYnVnPVRydWUpIGFzIHJ1bm5lcjoKICAgICAgICBydW5uZXIucnVuKG1haW4oKSkKCiAgICBUaGUgcnVuKCkgbWV0aG9kIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aGluIHRoZSBydW5uZXIncyBjb250ZXh0LgoKICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgaW50ZXJhY3RpdmUgY29uc29sZSAoZS5nLiBJUHl0aG9uKSwKICAgIHVuaXR0ZXN0IHJ1bm5lcnMsIGNvbnNvbGUgdG9vbHMsIC0tIGV2ZXJ5d2hlcmUgd2hlbiBhc3luYyBjb2RlCiAgICBpcyBjYWxsZWQgZnJvbSBleGlzdGluZyBzeW5jIGZyYW1ld29yayBhbmQgd2hlcmUgdGhlIHByZWZlcnJlZCBzaW5nbGUKICAgIGFzeW5jaW8ucnVuKCkgY2FsbCBkb2Vzbid0IHdvcmsuCgogICAgIiIiCgogICAgIyBOb3RlOiB0aGUgY2xhc3MgaXMgZmluYWwsIGl0IGlzIG5vdCBpbnRlbmRlZCBmb3IgaW5oZXJpdGFuY2UuCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICosIGRlYnVnPU5vbmUsIGxvb3BfZmFjdG9yeT1Ob25lKToKICAgICAgICBzZWxmLl9zdGF0ZSA9IF9TdGF0ZS5DUkVBVEVECiAgICAgICAgc2VsZi5fZGVidWcgPSBkZWJ1ZwogICAgICAgIHNlbGYuX2xvb3BfZmFjdG9yeSA9IGxvb3BfZmFjdG9yeQogICAgICAgIHNlbGYuX2xvb3AgPSBOb25lCiAgICAgICAgc2VsZi5fY29udGV4dCA9IE5vbmUKICAgICAgICBzZWxmLl9pbnRlcnJ1cHRfY291bnQgPSAwCiAgICAgICAgc2VsZi5fc2V0X2V2ZW50X2xvb3AgPSBGYWxzZQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgc2VsZi5fbGF6eV9pbml0KCkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiU2h1dGRvd24gYW5kIGNsb3NlIGV2ZW50IGxvb3AuIiIiCiAgICAgICAgaWYgc2VsZi5fc3RhdGUgaXMgbm90IF9TdGF0ZS5JTklUSUFMSVpFRDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBsb29wID0gc2VsZi5fbG9vcAogICAgICAgICAgICBfY2FuY2VsX2FsbF90YXNrcyhsb29wKQogICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShsb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQogICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShsb29wLnNodXRkb3duX2RlZmF1bHRfZXhlY3V0b3IoKSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBzZWxmLl9zZXRfZXZlbnRfbG9vcDoKICAgICAgICAgICAgICAgIGV2ZW50cy5zZXRfZXZlbnRfbG9vcChOb25lKQogICAgICAgICAgICBsb29wLmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5fbG9vcCA9IE5vbmUKICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSBfU3RhdGUuQ0xPU0VECgogICAgZGVmIGdldF9sb29wKHNlbGYpOgogICAgICAgICIiIlJldHVybiBlbWJlZGRlZCBldmVudCBsb29wLiIiIgogICAgICAgIHNlbGYuX2xhenlfaW5pdCgpCiAgICAgICAgcmV0dXJuIHNlbGYuX2xvb3AKCiAgICBkZWYgcnVuKHNlbGYsIGNvcm8sICosIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgIiIiUnVuIGEgY29yb3V0aW5lIGluc2lkZSB0aGUgZW1iZWRkZWQgZXZlbnQgbG9vcC4iIiIKICAgICAgICBpZiBub3QgY29yb3V0aW5lcy5pc2Nvcm91dGluZShjb3JvKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYSBjb3JvdXRpbmUgd2FzIGV4cGVjdGVkLCBnb3QgeyFyfSIuZm9ybWF0KGNvcm8pKQoKICAgICAgICBpZiBldmVudHMuX2dldF9ydW5uaW5nX2xvb3AoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBmYWlsIGZhc3Qgd2l0aCBzaG9ydCB0cmFjZWJhY2sKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgIlJ1bm5lci5ydW4oKSBjYW5ub3QgYmUgY2FsbGVkIGZyb20gYSBydW5uaW5nIGV2ZW50IGxvb3AiKQoKICAgICAgICBzZWxmLl9sYXp5X2luaXQoKQoKICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgIGNvbnRleHQgPSBzZWxmLl9jb250ZXh0CiAgICAgICAgdGFzayA9IHNlbGYuX2xvb3AuY3JlYXRlX3Rhc2soY29ybywgY29udGV4dD1jb250ZXh0KQoKICAgICAgICBpZiAodGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkgaXMgdGhyZWFkaW5nLm1haW5fdGhyZWFkKCkKICAgICAgICAgICAgYW5kIHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0lOVCkgaXMgc2lnbmFsLmRlZmF1bHRfaW50X2hhbmRsZXIKICAgICAgICApOgogICAgICAgICAgICBzaWdpbnRfaGFuZGxlciA9IGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX29uX3NpZ2ludCwgbWFpbl90YXNrPXRhc2spCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc2lnaW50X2hhbmRsZXIpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIyBgc2lnbmFsLnNpZ25hbGAgbWF5IHRocm93IGlmIGB0aHJlYWRpbmcubWFpbl90aHJlYWRgIGRvZXMKICAgICAgICAgICAgICAgICMgbm90IHN1cHBvcnQgc2lnbmFscyAoZS5nLiBlbWJlZGRlZCBpbnRlcnByZXRlciB3aXRoIHNpZ25hbHMKICAgICAgICAgICAgICAgICMgbm90IHJlZ2lzdGVyZWQgLSBzZWUgZ2gtOTE4ODApCiAgICAgICAgICAgICAgICBzaWdpbnRfaGFuZGxlciA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzaWdpbnRfaGFuZGxlciA9IE5vbmUKCiAgICAgICAgc2VsZi5faW50ZXJydXB0X2NvdW50ID0gMAogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCiAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgIGlmIHNlbGYuX2ludGVycnVwdF9jb3VudCA+IDA6CiAgICAgICAgICAgICAgICB1bmNhbmNlbCA9IGdldGF0dHIodGFzaywgInVuY2FuY2VsIiwgTm9uZSkKICAgICAgICAgICAgICAgIGlmIHVuY2FuY2VsIGlzIG5vdCBOb25lIGFuZCB1bmNhbmNlbCgpID09IDA6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQoKQogICAgICAgICAgICByYWlzZSAgIyBDYW5jZWxsZWRFcnJvcgogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIChzaWdpbnRfaGFuZGxlciBpcyBub3QgTm9uZQogICAgICAgICAgICAgICAgYW5kIHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0lOVCkgaXMgc2lnaW50X2hhbmRsZXIKICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc2lnbmFsLmRlZmF1bHRfaW50X2hhbmRsZXIpCgogICAgZGVmIF9sYXp5X2luaXQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fc3RhdGUgaXMgX1N0YXRlLkNMT1NFRDoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJSdW5uZXIgaXMgY2xvc2VkIikKICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpcyBfU3RhdGUuSU5JVElBTElaRUQ6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIHNlbGYuX2xvb3BfZmFjdG9yeSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9sb29wID0gZXZlbnRzLm5ld19ldmVudF9sb29wKCkKICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NldF9ldmVudF9sb29wOgogICAgICAgICAgICAgICAgIyBDYWxsIHNldF9ldmVudF9sb29wIG9ubHkgb25jZSB0byBhdm9pZCBjYWxsaW5nCiAgICAgICAgICAgICAgICAjIGF0dGFjaF9sb29wIG11bHRpcGxlIHRpbWVzIG9uIGNoaWxkIHdhdGNoZXJzCiAgICAgICAgICAgICAgICBldmVudHMuc2V0X2V2ZW50X2xvb3Aoc2VsZi5fbG9vcCkKICAgICAgICAgICAgICAgIHNlbGYuX3NldF9ldmVudF9sb29wID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2xvb3AgPSBzZWxmLl9sb29wX2ZhY3RvcnkoKQogICAgICAgIGlmIHNlbGYuX2RlYnVnIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9sb29wLnNldF9kZWJ1ZyhzZWxmLl9kZWJ1ZykKICAgICAgICBzZWxmLl9jb250ZXh0ID0gY29udGV4dHZhcnMuY29weV9jb250ZXh0KCkKICAgICAgICBzZWxmLl9zdGF0ZSA9IF9TdGF0ZS5JTklUSUFMSVpFRAoKICAgIGRlZiBfb25fc2lnaW50KHNlbGYsIHNpZ251bSwgZnJhbWUsIG1haW5fdGFzayk6CiAgICAgICAgc2VsZi5faW50ZXJydXB0X2NvdW50ICs9IDEKICAgICAgICBpZiBzZWxmLl9pbnRlcnJ1cHRfY291bnQgPT0gMSBhbmQgbm90IG1haW5fdGFzay5kb25lKCk6CiAgICAgICAgICAgIG1haW5fdGFzay5jYW5jZWwoKQogICAgICAgICAgICAjIHdha2V1cCBsb29wIGlmIGl0IGlzIGJsb2NrZWQgYnkgc2VsZWN0KCkgd2l0aCBsb25nIHRpbWVvdXQKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb25fdGhyZWFkc2FmZShsYW1iZGE6IE5vbmUpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0KCkKCgpkZWYgcnVuKG1haW4sICosIGRlYnVnPU5vbmUpOgogICAgIiIiRXhlY3V0ZSB0aGUgY29yb3V0aW5lIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KCiAgICBUaGlzIGZ1bmN0aW9uIHJ1bnMgdGhlIHBhc3NlZCBjb3JvdXRpbmUsIHRha2luZyBjYXJlIG9mCiAgICBtYW5hZ2luZyB0aGUgYXN5bmNpbyBldmVudCBsb29wIGFuZCBmaW5hbGl6aW5nIGFzeW5jaHJvbm91cwogICAgZ2VuZXJhdG9ycy4KCiAgICBUaGlzIGZ1bmN0aW9uIGNhbm5vdCBiZSBjYWxsZWQgd2hlbiBhbm90aGVyIGFzeW5jaW8gZXZlbnQgbG9vcCBpcwogICAgcnVubmluZyBpbiB0aGUgc2FtZSB0aHJlYWQuCgogICAgSWYgZGVidWcgaXMgVHJ1ZSwgdGhlIGV2ZW50IGxvb3Agd2lsbCBiZSBydW4gaW4gZGVidWcgbW9kZS4KCiAgICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGV2ZW50IGxvb3AgYW5kIGNsb3NlcyBpdCBhdCB0aGUgZW5kLgogICAgSXQgc2hvdWxkIGJlIHVzZWQgYXMgYSBtYWluIGVudHJ5IHBvaW50IGZvciBhc3luY2lvIHByb2dyYW1zLCBhbmQgc2hvdWxkCiAgICBpZGVhbGx5IG9ubHkgYmUgY2FsbGVkIG9uY2UuCgogICAgRXhhbXBsZToKCiAgICAgICAgYXN5bmMgZGVmIG1haW4oKToKICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQogICAgICAgICAgICBwcmludCgnaGVsbG8nKQoKICAgICAgICBhc3luY2lvLnJ1bihtYWluKCkpCiAgICAiIiIKICAgIGlmIGV2ZW50cy5fZ2V0X3J1bm5pbmdfbG9vcCgpIGlzIG5vdCBOb25lOgogICAgICAgICMgZmFpbCBmYXN0IHdpdGggc2hvcnQgdHJhY2ViYWNrCiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAiYXN5bmNpby5ydW4oKSBjYW5ub3QgYmUgY2FsbGVkIGZyb20gYSBydW5uaW5nIGV2ZW50IGxvb3AiKQoKICAgIHdpdGggUnVubmVyKGRlYnVnPWRlYnVnKSBhcyBydW5uZXI6CiAgICAgICAgcmV0dXJuIHJ1bm5lci5ydW4obWFpbikKCgpkZWYgX2NhbmNlbF9hbGxfdGFza3MobG9vcCk6CiAgICB0b19jYW5jZWwgPSB0YXNrcy5hbGxfdGFza3MobG9vcCkKICAgIGlmIG5vdCB0b19jYW5jZWw6CiAgICAgICAgcmV0dXJuCgogICAgZm9yIHRhc2sgaW4gdG9fY2FuY2VsOgogICAgICAgIHRhc2suY2FuY2VsKCkKCiAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrcy5nYXRoZXIoKnRvX2NhbmNlbCwgcmV0dXJuX2V4Y2VwdGlvbnM9VHJ1ZSkpCgogICAgZm9yIHRhc2sgaW4gdG9fY2FuY2VsOgogICAgICAgIGlmIHRhc2suY2FuY2VsbGVkKCk6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgdGFzay5leGNlcHRpb24oKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKHsKICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ3VuaGFuZGxlZCBleGNlcHRpb24gZHVyaW5nIGFzeW5jaW8ucnVuKCkgc2h1dGRvd24nLAogICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbic6IHRhc2suZXhjZXB0aW9uKCksCiAgICAgICAgICAgICAgICAndGFzayc6IHRhc2ssCiAgICAgICAgICAgIH0pClBLAwQUAAAAAAACIKNWph5B0TuwAAA7sAAAGgAAAGFzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5IiIiRXZlbnQgbG9vcCB1c2luZyBhIHNlbGVjdG9yIGFuZCByZWxhdGVkIGNsYXNzZXMuCgpBIHNlbGVjdG9yIGlzIGEgIm5vdGlmeS13aGVuLXJlYWR5IiBtdWx0aXBsZXhlci4gIEZvciBhIHN1YmNsYXNzIHdoaWNoCmFsc28gaW5jbHVkZXMgc3VwcG9ydCBmb3Igc2lnbmFsIGhhbmRsaW5nLCBzZWUgdGhlIHVuaXhfZXZlbnRzIHN1Yi1tb2R1bGUuCiIiIgoKX19hbGxfXyA9ICdCYXNlU2VsZWN0b3JFdmVudExvb3AnLAoKaW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCBlcnJubwppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCBzZWxlY3RvcnMKaW1wb3J0IHNvY2tldAppbXBvcnQgd2FybmluZ3MKaW1wb3J0IHdlYWtyZWYKdHJ5OgogICAgaW1wb3J0IHNzbApleGNlcHQgSW1wb3J0RXJyb3I6ICAjIHByYWdtYTogbm8gY292ZXIKICAgIHNzbCA9IE5vbmUKCmZyb20gLiBpbXBvcnQgYmFzZV9ldmVudHMKZnJvbSAuIGltcG9ydCBjb25zdGFudHMKZnJvbSAuIGltcG9ydCBldmVudHMKZnJvbSAuIGltcG9ydCBmdXR1cmVzCmZyb20gLiBpbXBvcnQgcHJvdG9jb2xzCmZyb20gLiBpbXBvcnQgc3NscHJvdG8KZnJvbSAuIGltcG9ydCB0cmFuc3BvcnRzCmZyb20gLiBpbXBvcnQgdHJzb2NrCmZyb20gLmxvZyBpbXBvcnQgbG9nZ2VyCgoKZGVmIF90ZXN0X3NlbGVjdG9yX2V2ZW50KHNlbGVjdG9yLCBmZCwgZXZlbnQpOgogICAgIyBUZXN0IGlmIHRoZSBzZWxlY3RvciBpcyBtb25pdG9yaW5nICdldmVudCcgZXZlbnRzCiAgICAjIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yICdmZCcuCiAgICB0cnk6CiAgICAgICAga2V5ID0gc2VsZWN0b3IuZ2V0X2tleShmZCkKICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGJvb2woa2V5LmV2ZW50cyAmIGV2ZW50KQoKCmNsYXNzIEJhc2VTZWxlY3RvckV2ZW50TG9vcChiYXNlX2V2ZW50cy5CYXNlRXZlbnRMb29wKToKICAgICIiIlNlbGVjdG9yIGV2ZW50IGxvb3AuCgogICAgU2VlIGV2ZW50cy5FdmVudExvb3AgZm9yIEFQSSBzcGVjaWZpY2F0aW9uLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlbGVjdG9yPU5vbmUpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQoKICAgICAgICBpZiBzZWxlY3RvciBpcyBOb25lOgogICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycy5EZWZhdWx0U2VsZWN0b3IoKQogICAgICAgIGxvZ2dlci5kZWJ1ZygnVXNpbmcgc2VsZWN0b3I6ICVzJywgc2VsZWN0b3IuX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgIHNlbGYuX3NlbGVjdG9yID0gc2VsZWN0b3IKICAgICAgICBzZWxmLl9tYWtlX3NlbGZfcGlwZSgpCiAgICAgICAgc2VsZi5fdHJhbnNwb3J0cyA9IHdlYWtyZWYuV2Vha1ZhbHVlRGljdGlvbmFyeSgpCgogICAgZGVmIF9tYWtlX3NvY2tldF90cmFuc3BvcnQoc2VsZiwgc29jaywgcHJvdG9jb2wsIHdhaXRlcj1Ob25lLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9Tm9uZSwgc2VydmVyPU5vbmUpOgogICAgICAgIHJldHVybiBfU2VsZWN0b3JTb2NrZXRUcmFuc3BvcnQoc2VsZiwgc29jaywgcHJvdG9jb2wsIHdhaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLCBzZXJ2ZXIpCgogICAgZGVmIF9tYWtlX3NzbF90cmFuc3BvcnQoCiAgICAgICAgICAgIHNlbGYsIHJhd3NvY2ssIHByb3RvY29sLCBzc2xjb250ZXh0LCB3YWl0ZXI9Tm9uZSwKICAgICAgICAgICAgKiwgc2VydmVyX3NpZGU9RmFsc2UsIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICBleHRyYT1Ob25lLCBzZXJ2ZXI9Tm9uZSwKICAgICAgICAgICAgc3NsX2hhbmRzaGFrZV90aW1lb3V0PWNvbnN0YW50cy5TU0xfSEFORFNIQUtFX1RJTUVPVVQsCiAgICAgICAgICAgIHNzbF9zaHV0ZG93bl90aW1lb3V0PWNvbnN0YW50cy5TU0xfU0hVVERPV05fVElNRU9VVCwKICAgICk6CiAgICAgICAgc3NsX3Byb3RvY29sID0gc3NscHJvdG8uU1NMUHJvdG9jb2woCiAgICAgICAgICAgIHNlbGYsIHByb3RvY29sLCBzc2xjb250ZXh0LCB3YWl0ZXIsCiAgICAgICAgICAgIHNlcnZlcl9zaWRlLCBzZXJ2ZXJfaG9zdG5hbWUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1zc2xfaGFuZHNoYWtlX3RpbWVvdXQsCiAgICAgICAgICAgIHNzbF9zaHV0ZG93bl90aW1lb3V0PXNzbF9zaHV0ZG93bl90aW1lb3V0CiAgICAgICAgKQogICAgICAgIF9TZWxlY3RvclNvY2tldFRyYW5zcG9ydChzZWxmLCByYXdzb2NrLCBzc2xfcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBzZXJ2ZXI9c2VydmVyKQogICAgICAgIHJldHVybiBzc2xfcHJvdG9jb2wuX2FwcF90cmFuc3BvcnQKCiAgICBkZWYgX21ha2VfZGF0YWdyYW1fdHJhbnNwb3J0KHNlbGYsIHNvY2ssIHByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzPU5vbmUsIHdhaXRlcj1Ob25lLCBleHRyYT1Ob25lKToKICAgICAgICByZXR1cm4gX1NlbGVjdG9yRGF0YWdyYW1UcmFuc3BvcnQoc2VsZiwgc29jaywgcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdhaXRlciwgZXh0cmEpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBjbG9zZSBhIHJ1bm5pbmcgZXZlbnQgbG9vcCIpCiAgICAgICAgaWYgc2VsZi5pc19jbG9zZWQoKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fY2xvc2Vfc2VsZl9waXBlKCkKICAgICAgICBzdXBlcigpLmNsb3NlKCkKICAgICAgICBpZiBzZWxmLl9zZWxlY3RvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IuY2xvc2UoKQogICAgICAgICAgICBzZWxmLl9zZWxlY3RvciA9IE5vbmUKCiAgICBkZWYgX2Nsb3NlX3NlbGZfcGlwZShzZWxmKToKICAgICAgICBzZWxmLl9yZW1vdmVfcmVhZGVyKHNlbGYuX3Nzb2NrLmZpbGVubygpKQogICAgICAgIHNlbGYuX3Nzb2NrLmNsb3NlKCkKICAgICAgICBzZWxmLl9zc29jayA9IE5vbmUKICAgICAgICBzZWxmLl9jc29jay5jbG9zZSgpCiAgICAgICAgc2VsZi5fY3NvY2sgPSBOb25lCiAgICAgICAgc2VsZi5faW50ZXJuYWxfZmRzIC09IDEKCiAgICBkZWYgX21ha2Vfc2VsZl9waXBlKHNlbGYpOgogICAgICAgICMgQSBzZWxmLXNvY2tldCwgcmVhbGx5LiA6LSkKICAgICAgICBzZWxmLl9zc29jaywgc2VsZi5fY3NvY2sgPSBzb2NrZXQuc29ja2V0cGFpcigpCiAgICAgICAgc2VsZi5fc3NvY2suc2V0YmxvY2tpbmcoRmFsc2UpCiAgICAgICAgc2VsZi5fY3NvY2suc2V0YmxvY2tpbmcoRmFsc2UpCiAgICAgICAgc2VsZi5faW50ZXJuYWxfZmRzICs9IDEKICAgICAgICBzZWxmLl9hZGRfcmVhZGVyKHNlbGYuX3Nzb2NrLmZpbGVubygpLCBzZWxmLl9yZWFkX2Zyb21fc2VsZikKCiAgICBkZWYgX3Byb2Nlc3Nfc2VsZl9kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgIHBhc3MKCiAgICBkZWYgX3JlYWRfZnJvbV9zZWxmKHNlbGYpOgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9zc29jay5yZWN2KDQwOTYpCiAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19zZWxmX2RhdGEoZGF0YSkKICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICBkZWYgX3dyaXRlX3RvX3NlbGYoc2VsZik6CiAgICAgICAgIyBUaGlzIG1heSBiZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQsIHBvc3NpYmx5IGFmdGVyCiAgICAgICAgIyBfY2xvc2Vfc2VsZl9waXBlKCkgaGFzIGJlZW4gY2FsbGVkIG9yIGV2ZW4gd2hpbGUgaXQgaXMKICAgICAgICAjIHJ1bm5pbmcuICBHdWFyZCBmb3Igc2VsZi5fY3NvY2sgYmVpbmcgTm9uZSBvciBjbG9zZWQuICBXaGVuCiAgICAgICAgIyBhIHNvY2tldCBpcyBjbG9zZWQsIHNlbmQoKSByYWlzZXMgT1NFcnJvciAod2l0aCBlcnJubyBzZXQgdG8KICAgICAgICAjIEVCQURGLCBidXQgbGV0J3Mgbm90IHJlbHkgb24gdGhlIGV4YWN0IGVycm9yIGNvZGUpLgogICAgICAgIGNzb2NrID0gc2VsZi5fY3NvY2sKICAgICAgICBpZiBjc29jayBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjc29jay5zZW5kKGInXDAnKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiRmFpbCB0byB3cml0ZSBhIG51bGwgYnl0ZSBpbnRvIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYtcGlwZSBzb2NrZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvPVRydWUpCgogICAgZGVmIF9zdGFydF9zZXJ2aW5nKHNlbGYsIHByb3RvY29sX2ZhY3RvcnksIHNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgc3NsY29udGV4dD1Ob25lLCBzZXJ2ZXI9Tm9uZSwgYmFja2xvZz0xMDAsCiAgICAgICAgICAgICAgICAgICAgICAgc3NsX2hhbmRzaGFrZV90aW1lb3V0PWNvbnN0YW50cy5TU0xfSEFORFNIQUtFX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQ9Y29uc3RhbnRzLlNTTF9TSFVURE9XTl9USU1FT1VUKToKICAgICAgICBzZWxmLl9hZGRfcmVhZGVyKHNvY2suZmlsZW5vKCksIHNlbGYuX2FjY2VwdF9jb25uZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2xfZmFjdG9yeSwgc29jaywgc3NsY29udGV4dCwgc2VydmVyLCBiYWNrbG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgc3NsX2hhbmRzaGFrZV90aW1lb3V0LCBzc2xfc2h1dGRvd25fdGltZW91dCkKCiAgICBkZWYgX2FjY2VwdF9jb25uZWN0aW9uKAogICAgICAgICAgICBzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBzb2NrLAogICAgICAgICAgICBzc2xjb250ZXh0PU5vbmUsIHNlcnZlcj1Ob25lLCBiYWNrbG9nPTEwMCwKICAgICAgICAgICAgc3NsX2hhbmRzaGFrZV90aW1lb3V0PWNvbnN0YW50cy5TU0xfSEFORFNIQUtFX1RJTUVPVVQsCiAgICAgICAgICAgIHNzbF9zaHV0ZG93bl90aW1lb3V0PWNvbnN0YW50cy5TU0xfU0hVVERPV05fVElNRU9VVCk6CiAgICAgICAgIyBUaGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBvbmNlIGZvciBlYWNoIGV2ZW50IGxvb3AgdGljayB3aGVyZSB0aGUKICAgICAgICAjIGxpc3RlbmluZyBzb2NrZXQgaGFzIHRyaWdnZXJlZCBhbiBFVkVOVF9SRUFELiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUKICAgICAgICAjIGNvbm5lY3Rpb25zIHdhaXRpbmcgZm9yIGFuIC5hY2NlcHQoKSBzbyBpdCBpcyBjYWxsZWQgaW4gYSBsb29wLgogICAgICAgICMgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjc5MDYgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICBmb3IgXyBpbiByYW5nZShiYWNrbG9nKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY29ubiwgYWRkciA9IHNvY2suYWNjZXB0KCkKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlYnVnOgogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXIgZ290IGEgbmV3IGNvbm5lY3Rpb24gZnJvbSAlcjogJXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIsIGFkZHIsIGNvbm4pCiAgICAgICAgICAgICAgICBjb25uLnNldGJsb2NraW5nKEZhbHNlKQogICAgICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvciwgQ29ubmVjdGlvbkFib3J0ZWRFcnJvcik6CiAgICAgICAgICAgICAgICAjIEVhcmx5IGV4aXQgYmVjYXVzZSB0aGUgc29ja2V0IGFjY2VwdCBidWZmZXIgaXMgZW1wdHkuCiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAjIFRoZXJlJ3Mgbm93aGVyZSB0byBzZW5kIHRoZSBlcnJvciwgc28ganVzdCBsb2cgaXQuCiAgICAgICAgICAgICAgICBpZiBleGMuZXJybm8gaW4gKGVycm5vLkVNRklMRSwgZXJybm8uRU5GSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJuby5FTk9CVUZTLCBlcnJuby5FTk9NRU0pOgogICAgICAgICAgICAgICAgICAgICMgU29tZSBwbGF0Zm9ybXMgKGUuZy4gTGludXgga2VlcCByZXBvcnRpbmcgdGhlIEZEIGFzCiAgICAgICAgICAgICAgICAgICAgIyByZWFkeSwgc28gd2UgcmVtb3ZlIHRoZSByZWFkIGhhbmRsZXIgdGVtcG9yYXJpbHkuCiAgICAgICAgICAgICAgICAgICAgIyBXZSdsbCB0cnkgYWdhaW4gaW4gYSB3aGlsZS4KICAgICAgICAgICAgICAgICAgICBzZWxmLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoewogICAgICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6ICdzb2NrZXQuYWNjZXB0KCkgb3V0IG9mIHN5c3RlbSByZXNvdXJjZScsCiAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQnOiB0cnNvY2suVHJhbnNwb3J0U29ja2V0KHNvY2spLAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX3JlYWRlcihzb2NrLmZpbGVubygpKQogICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbF9sYXRlcihjb25zdGFudHMuQUNDRVBUX1JFVFJZX0RFTEFZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGFydF9zZXJ2aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbF9mYWN0b3J5LCBzb2NrLCBzc2xjb250ZXh0LCBzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tsb2csIHNzbF9oYW5kc2hha2VfdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlICAjIFRoZSBldmVudCBsb29wIHdpbGwgY2F0Y2gsIGxvZyBhbmQgaWdub3JlIGl0LgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZXh0cmEgPSB7J3BlZXJuYW1lJzogYWRkcn0KICAgICAgICAgICAgICAgIGFjY2VwdCA9IHNlbGYuX2FjY2VwdF9jb25uZWN0aW9uMigKICAgICAgICAgICAgICAgICAgICBwcm90b2NvbF9mYWN0b3J5LCBjb25uLCBleHRyYSwgc3NsY29udGV4dCwgc2VydmVyLAogICAgICAgICAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dCwgc3NsX3NodXRkb3duX3RpbWVvdXQpCiAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV90YXNrKGFjY2VwdCkKCiAgICBhc3luYyBkZWYgX2FjY2VwdF9jb25uZWN0aW9uMigKICAgICAgICAgICAgc2VsZiwgcHJvdG9jb2xfZmFjdG9yeSwgY29ubiwgZXh0cmEsCiAgICAgICAgICAgIHNzbGNvbnRleHQ9Tm9uZSwgc2VydmVyPU5vbmUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1jb25zdGFudHMuU1NMX0hBTkRTSEFLRV9USU1FT1VULAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1jb25zdGFudHMuU1NMX1NIVVRET1dOX1RJTUVPVVQpOgogICAgICAgIHByb3RvY29sID0gTm9uZQogICAgICAgIHRyYW5zcG9ydCA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHByb3RvY29sID0gcHJvdG9jb2xfZmFjdG9yeSgpCiAgICAgICAgICAgIHdhaXRlciA9IHNlbGYuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgICAgIGlmIHNzbGNvbnRleHQ6CiAgICAgICAgICAgICAgICB0cmFuc3BvcnQgPSBzZWxmLl9tYWtlX3NzbF90cmFuc3BvcnQoCiAgICAgICAgICAgICAgICAgICAgY29ubiwgcHJvdG9jb2wsIHNzbGNvbnRleHQsIHdhaXRlcj13YWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwgZXh0cmE9ZXh0cmEsIHNlcnZlcj1zZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgc3NsX2hhbmRzaGFrZV90aW1lb3V0PXNzbF9oYW5kc2hha2VfdGltZW91dCwKICAgICAgICAgICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1zc2xfc2h1dGRvd25fdGltZW91dCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IHNlbGYuX21ha2Vfc29ja2V0X3RyYW5zcG9ydCgKICAgICAgICAgICAgICAgICAgICBjb25uLCBwcm90b2NvbCwgd2FpdGVyPXdhaXRlciwgZXh0cmE9ZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgc2VydmVyPXNlcnZlcikKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGF3YWl0IHdhaXRlcgogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIHRyYW5zcG9ydC5jbG9zZSgpCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIyBJdCdzIG5vdyB1cCB0byB0aGUgcHJvdG9jb2wgdG8gaGFuZGxlIHRoZSBjb25uZWN0aW9uLgoKICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIGlmIHNlbGYuX2RlYnVnOgogICAgICAgICAgICAgICAgY29udGV4dCA9IHsKICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICdFcnJvciBvbiB0cmFuc3BvcnQgY3JlYXRpb24gZm9yIGluY29taW5nIGNvbm5lY3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiBwcm90b2NvbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBjb250ZXh0Wydwcm90b2NvbCddID0gcHJvdG9jb2wKICAgICAgICAgICAgICAgIGlmIHRyYW5zcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBjb250ZXh0Wyd0cmFuc3BvcnQnXSA9IHRyYW5zcG9ydAogICAgICAgICAgICAgICAgc2VsZi5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnRleHQpCgogICAgZGVmIF9lbnN1cmVfZmRfbm9fdHJhbnNwb3J0KHNlbGYsIGZkKToKICAgICAgICBmaWxlbm8gPSBmZAogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGVubywgaW50KToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZmlsZW5vID0gaW50KGZpbGVuby5maWxlbm8oKSkKICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICMgVGhpcyBjb2RlIG1hdGNoZXMgc2VsZWN0b3JzLl9maWxlb2JqX3RvX2ZkIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIkludmFsaWQgZmlsZSBvYmplY3Q6IHtmZCFyfSIpIGZyb20gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgdHJhbnNwb3J0ID0gc2VsZi5fdHJhbnNwb3J0c1tmaWxlbm9dCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbm90IHRyYW5zcG9ydC5pc19jbG9zaW5nKCk6CiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgZidGaWxlIGRlc2NyaXB0b3Ige2ZkIXJ9IGlzIHVzZWQgYnkgdHJhbnNwb3J0ICcKICAgICAgICAgICAgICAgICAgICBmJ3t0cmFuc3BvcnQhcn0nKQoKICAgIGRlZiBfYWRkX3JlYWRlcihzZWxmLCBmZCwgY2FsbGJhY2ssICphcmdzKToKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIGhhbmRsZSA9IGV2ZW50cy5IYW5kbGUoY2FsbGJhY2ssIGFyZ3MsIHNlbGYsIE5vbmUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBrZXkgPSBzZWxmLl9zZWxlY3Rvci5nZXRfa2V5KGZkKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IucmVnaXN0ZXIoZmQsIHNlbGVjdG9ycy5FVkVOVF9SRUFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlLCBOb25lKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBtYXNrLCAocmVhZGVyLCB3cml0ZXIpID0ga2V5LmV2ZW50cywga2V5LmRhdGEKICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IubW9kaWZ5KGZkLCBtYXNrIHwgc2VsZWN0b3JzLkVWRU5UX1JFQUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlLCB3cml0ZXIpKQogICAgICAgICAgICBpZiByZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByZWFkZXIuY2FuY2VsKCkKICAgICAgICByZXR1cm4gaGFuZGxlCgogICAgZGVmIF9yZW1vdmVfcmVhZGVyKHNlbGYsIGZkKToKICAgICAgICBpZiBzZWxmLmlzX2Nsb3NlZCgpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICB0cnk6CiAgICAgICAgICAgIGtleSA9IHNlbGYuX3NlbGVjdG9yLmdldF9rZXkoZmQpCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBlbHNlOgogICAgICAgICAgICBtYXNrLCAocmVhZGVyLCB3cml0ZXIpID0ga2V5LmV2ZW50cywga2V5LmRhdGEKICAgICAgICAgICAgbWFzayAmPSB+c2VsZWN0b3JzLkVWRU5UX1JFQUQKICAgICAgICAgICAgaWYgbm90IG1hc2s6CiAgICAgICAgICAgICAgICBzZWxmLl9zZWxlY3Rvci51bnJlZ2lzdGVyKGZkKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IubW9kaWZ5KGZkLCBtYXNrLCAoTm9uZSwgd3JpdGVyKSkKCiAgICAgICAgICAgIGlmIHJlYWRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKQogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfYWRkX3dyaXRlcihzZWxmLCBmZCwgY2FsbGJhY2ssICphcmdzKToKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIGhhbmRsZSA9IGV2ZW50cy5IYW5kbGUoY2FsbGJhY2ssIGFyZ3MsIHNlbGYsIE5vbmUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBrZXkgPSBzZWxmLl9zZWxlY3Rvci5nZXRfa2V5KGZkKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IucmVnaXN0ZXIoZmQsIHNlbGVjdG9ycy5FVkVOVF9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIGhhbmRsZSkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbWFzaywgKHJlYWRlciwgd3JpdGVyKSA9IGtleS5ldmVudHMsIGtleS5kYXRhCiAgICAgICAgICAgIHNlbGYuX3NlbGVjdG9yLm1vZGlmeShmZCwgbWFzayB8IHNlbGVjdG9ycy5FVkVOVF9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkZXIsIGhhbmRsZSkpCiAgICAgICAgICAgIGlmIHdyaXRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHdyaXRlci5jYW5jZWwoKQogICAgICAgIHJldHVybiBoYW5kbGUKCiAgICBkZWYgX3JlbW92ZV93cml0ZXIoc2VsZiwgZmQpOgogICAgICAgICIiIlJlbW92ZSBhIHdyaXRlciBjYWxsYmFjay4iIiIKICAgICAgICBpZiBzZWxmLmlzX2Nsb3NlZCgpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICB0cnk6CiAgICAgICAgICAgIGtleSA9IHNlbGYuX3NlbGVjdG9yLmdldF9rZXkoZmQpCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBlbHNlOgogICAgICAgICAgICBtYXNrLCAocmVhZGVyLCB3cml0ZXIpID0ga2V5LmV2ZW50cywga2V5LmRhdGEKICAgICAgICAgICAgIyBSZW1vdmUgYm90aCB3cml0ZXIgYW5kIGNvbm5lY3Rvci4KICAgICAgICAgICAgbWFzayAmPSB+c2VsZWN0b3JzLkVWRU5UX1dSSVRFCiAgICAgICAgICAgIGlmIG5vdCBtYXNrOgogICAgICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3IudW5yZWdpc3RlcihmZCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX3NlbGVjdG9yLm1vZGlmeShmZCwgbWFzaywgKHJlYWRlciwgTm9uZSkpCgogICAgICAgICAgICBpZiB3cml0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB3cml0ZXIuY2FuY2VsKCkKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgYWRkX3JlYWRlcihzZWxmLCBmZCwgY2FsbGJhY2ssICphcmdzKToKICAgICAgICAiIiJBZGQgYSByZWFkZXIgY2FsbGJhY2suIiIiCiAgICAgICAgc2VsZi5fZW5zdXJlX2ZkX25vX3RyYW5zcG9ydChmZCkKICAgICAgICBzZWxmLl9hZGRfcmVhZGVyKGZkLCBjYWxsYmFjaywgKmFyZ3MpCgogICAgZGVmIHJlbW92ZV9yZWFkZXIoc2VsZiwgZmQpOgogICAgICAgICIiIlJlbW92ZSBhIHJlYWRlciBjYWxsYmFjay4iIiIKICAgICAgICBzZWxmLl9lbnN1cmVfZmRfbm9fdHJhbnNwb3J0KGZkKQogICAgICAgIHJldHVybiBzZWxmLl9yZW1vdmVfcmVhZGVyKGZkKQoKICAgIGRlZiBhZGRfd3JpdGVyKHNlbGYsIGZkLCBjYWxsYmFjaywgKmFyZ3MpOgogICAgICAgICIiIkFkZCBhIHdyaXRlciBjYWxsYmFjay4uIiIiCiAgICAgICAgc2VsZi5fZW5zdXJlX2ZkX25vX3RyYW5zcG9ydChmZCkKICAgICAgICBzZWxmLl9hZGRfd3JpdGVyKGZkLCBjYWxsYmFjaywgKmFyZ3MpCgogICAgZGVmIHJlbW92ZV93cml0ZXIoc2VsZiwgZmQpOgogICAgICAgICIiIlJlbW92ZSBhIHdyaXRlciBjYWxsYmFjay4iIiIKICAgICAgICBzZWxmLl9lbnN1cmVfZmRfbm9fdHJhbnNwb3J0KGZkKQogICAgICAgIHJldHVybiBzZWxmLl9yZW1vdmVfd3JpdGVyKGZkKQoKICAgIGFzeW5jIGRlZiBzb2NrX3JlY3Yoc2VsZiwgc29jaywgbik6CiAgICAgICAgIiIiUmVjZWl2ZSBkYXRhIGZyb20gdGhlIHNvY2tldC4KCiAgICAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIGJ5dGVzIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGRhdGEgcmVjZWl2ZWQuCiAgICAgICAgVGhlIG1heGltdW0gYW1vdW50IG9mIGRhdGEgdG8gYmUgcmVjZWl2ZWQgYXQgb25jZSBpcyBzcGVjaWZpZWQgYnkKICAgICAgICBuYnl0ZXMuCiAgICAgICAgIiIiCiAgICAgICAgYmFzZV9ldmVudHMuX2NoZWNrX3NzbF9zb2NrZXQoc29jaykKICAgICAgICBpZiBzZWxmLl9kZWJ1ZyBhbmQgc29jay5nZXR0aW1lb3V0KCkgIT0gMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidGhlIHNvY2tldCBtdXN0IGJlIG5vbi1ibG9ja2luZyIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc29jay5yZWN2KG4pCiAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZnV0ID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBmZCA9IHNvY2suZmlsZW5vKCkKICAgICAgICBzZWxmLl9lbnN1cmVfZmRfbm9fdHJhbnNwb3J0KGZkKQogICAgICAgIGhhbmRsZSA9IHNlbGYuX2FkZF9yZWFkZXIoZmQsIHNlbGYuX3NvY2tfcmVjdiwgZnV0LCBzb2NrLCBuKQogICAgICAgIGZ1dC5hZGRfZG9uZV9jYWxsYmFjaygKICAgICAgICAgICAgZnVuY3Rvb2xzLnBhcnRpYWwoc2VsZi5fc29ja19yZWFkX2RvbmUsIGZkLCBoYW5kbGU9aGFuZGxlKSkKICAgICAgICByZXR1cm4gYXdhaXQgZnV0CgogICAgZGVmIF9zb2NrX3JlYWRfZG9uZShzZWxmLCBmZCwgZnV0LCBoYW5kbGU9Tm9uZSk6CiAgICAgICAgaWYgaGFuZGxlIGlzIE5vbmUgb3Igbm90IGhhbmRsZS5jYW5jZWxsZWQoKToKICAgICAgICAgICAgc2VsZi5yZW1vdmVfcmVhZGVyKGZkKQoKICAgIGRlZiBfc29ja19yZWN2KHNlbGYsIGZ1dCwgc29jaywgbik6CiAgICAgICAgIyBfc29ja19yZWN2KCkgY2FuIGFkZCBpdHNlbGYgYXMgYW4gSS9PIGNhbGxiYWNrIGlmIHRoZSBvcGVyYXRpb24gY2FuJ3QKICAgICAgICAjIGJlIGRvbmUgaW1tZWRpYXRlbHkuIERvbid0IHVzZSBpdCBkaXJlY3RseSwgY2FsbCBzb2NrX3JlY3YoKS4KICAgICAgICBpZiBmdXQuZG9uZSgpOgogICAgICAgICAgICByZXR1cm4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGRhdGEgPSBzb2NrLnJlY3YobikKICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CiAgICAgICAgICAgIHJldHVybiAgIyB0cnkgYWdhaW4gbmV4dCB0aW1lCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQoZGF0YSkKCiAgICBhc3luYyBkZWYgc29ja19yZWN2X2ludG8oc2VsZiwgc29jaywgYnVmKToKICAgICAgICAiIiJSZWNlaXZlIGRhdGEgZnJvbSB0aGUgc29ja2V0LgoKICAgICAgICBUaGUgcmVjZWl2ZWQgZGF0YSBpcyB3cml0dGVuIGludG8gKmJ1ZiogKGEgd3JpdGFibGUgYnVmZmVyKS4KICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KICAgICAgICAiIiIKICAgICAgICBiYXNlX2V2ZW50cy5fY2hlY2tfc3NsX3NvY2tldChzb2NrKQogICAgICAgIGlmIHNlbGYuX2RlYnVnIGFuZCBzb2NrLmdldHRpbWVvdXQoKSAhPSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aGUgc29ja2V0IG11c3QgYmUgbm9uLWJsb2NraW5nIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzb2NrLnJlY3ZfaW50byhidWYpCiAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZnV0ID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBmZCA9IHNvY2suZmlsZW5vKCkKICAgICAgICBzZWxmLl9lbnN1cmVfZmRfbm9fdHJhbnNwb3J0KGZkKQogICAgICAgIGhhbmRsZSA9IHNlbGYuX2FkZF9yZWFkZXIoZmQsIHNlbGYuX3NvY2tfcmVjdl9pbnRvLCBmdXQsIHNvY2ssIGJ1ZikKICAgICAgICBmdXQuYWRkX2RvbmVfY2FsbGJhY2soCiAgICAgICAgICAgIGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX3NvY2tfcmVhZF9kb25lLCBmZCwgaGFuZGxlPWhhbmRsZSkpCiAgICAgICAgcmV0dXJuIGF3YWl0IGZ1dAoKICAgIGRlZiBfc29ja19yZWN2X2ludG8oc2VsZiwgZnV0LCBzb2NrLCBidWYpOgogICAgICAgICMgX3NvY2tfcmVjdl9pbnRvKCkgY2FuIGFkZCBpdHNlbGYgYXMgYW4gSS9PIGNhbGxiYWNrIGlmIHRoZSBvcGVyYXRpb24KICAgICAgICAjIGNhbid0IGJlIGRvbmUgaW1tZWRpYXRlbHkuIERvbid0IHVzZSBpdCBkaXJlY3RseSwgY2FsbAogICAgICAgICMgc29ja19yZWN2X2ludG8oKS4KICAgICAgICBpZiBmdXQuZG9uZSgpOgogICAgICAgICAgICByZXR1cm4KICAgICAgICB0cnk6CiAgICAgICAgICAgIG5ieXRlcyA9IHNvY2sucmVjdl9pbnRvKGJ1ZikKICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CiAgICAgICAgICAgIHJldHVybiAgIyB0cnkgYWdhaW4gbmV4dCB0aW1lCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQobmJ5dGVzKQoKICAgIGFzeW5jIGRlZiBzb2NrX3JlY3Zmcm9tKHNlbGYsIHNvY2ssIGJ1ZnNpemUpOgogICAgICAgICIiIlJlY2VpdmUgYSBkYXRhZ3JhbSBmcm9tIGEgZGF0YWdyYW0gc29ja2V0LgoKICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgdHVwbGUgb2YgKGJ5dGVzLCBhZGRyZXNzKSByZXByZXNlbnRpbmcgdGhlCiAgICAgICAgZGF0YWdyYW0gcmVjZWl2ZWQgYW5kIHRoZSBhZGRyZXNzIGl0IGNhbWUgZnJvbS4KICAgICAgICBUaGUgbWF4aW11bSBhbW91bnQgb2YgZGF0YSB0byBiZSByZWNlaXZlZCBhdCBvbmNlIGlzIHNwZWNpZmllZCBieQogICAgICAgIG5ieXRlcy4KICAgICAgICAiIiIKICAgICAgICBiYXNlX2V2ZW50cy5fY2hlY2tfc3NsX3NvY2tldChzb2NrKQogICAgICAgIGlmIHNlbGYuX2RlYnVnIGFuZCBzb2NrLmdldHRpbWVvdXQoKSAhPSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aGUgc29ja2V0IG11c3QgYmUgbm9uLWJsb2NraW5nIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzb2NrLnJlY3Zmcm9tKGJ1ZnNpemUpCiAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZnV0ID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBmZCA9IHNvY2suZmlsZW5vKCkKICAgICAgICBzZWxmLl9lbnN1cmVfZmRfbm9fdHJhbnNwb3J0KGZkKQogICAgICAgIGhhbmRsZSA9IHNlbGYuX2FkZF9yZWFkZXIoZmQsIHNlbGYuX3NvY2tfcmVjdmZyb20sIGZ1dCwgc29jaywgYnVmc2l6ZSkKICAgICAgICBmdXQuYWRkX2RvbmVfY2FsbGJhY2soCiAgICAgICAgICAgIGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX3NvY2tfcmVhZF9kb25lLCBmZCwgaGFuZGxlPWhhbmRsZSkpCiAgICAgICAgcmV0dXJuIGF3YWl0IGZ1dAoKICAgIGRlZiBfc29ja19yZWN2ZnJvbShzZWxmLCBmdXQsIHNvY2ssIGJ1ZnNpemUpOgogICAgICAgICMgX3NvY2tfcmVjdmZyb20oKSBjYW4gYWRkIGl0c2VsZiBhcyBhbiBJL08gY2FsbGJhY2sgaWYgdGhlIG9wZXJhdGlvbgogICAgICAgICMgY2FuJ3QgYmUgZG9uZSBpbW1lZGlhdGVseS4gRG9uJ3QgdXNlIGl0IGRpcmVjdGx5LCBjYWxsCiAgICAgICAgIyBzb2NrX3JlY3Zmcm9tKCkuCiAgICAgICAgaWYgZnV0LmRvbmUoKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBzb2NrLnJlY3Zmcm9tKGJ1ZnNpemUpCiAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgogICAgICAgICAgICByZXR1cm4gICMgdHJ5IGFnYWluIG5leHQgdGltZQogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgZnV0LnNldF9leGNlcHRpb24oZXhjKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KHJlc3VsdCkKCiAgICBhc3luYyBkZWYgc29ja19yZWN2ZnJvbV9pbnRvKHNlbGYsIHNvY2ssIGJ1ZiwgbmJ5dGVzPTApOgogICAgICAgICIiIlJlY2VpdmUgZGF0YSBmcm9tIHRoZSBzb2NrZXQuCgogICAgICAgIFRoZSByZWNlaXZlZCBkYXRhIGlzIHdyaXR0ZW4gaW50byAqYnVmKiAoYSB3cml0YWJsZSBidWZmZXIpLgogICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSB0dXBsZSBvZiAobnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4sIGFkZHJlc3MpLgogICAgICAgICIiIgogICAgICAgIGJhc2VfZXZlbnRzLl9jaGVja19zc2xfc29ja2V0KHNvY2spCiAgICAgICAgaWYgc2VsZi5fZGVidWcgYW5kIHNvY2suZ2V0dGltZW91dCgpICE9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRoZSBzb2NrZXQgbXVzdCBiZSBub24tYmxvY2tpbmciKQogICAgICAgIGlmIG5vdCBuYnl0ZXM6CiAgICAgICAgICAgIG5ieXRlcyA9IGxlbihidWYpCgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNvY2sucmVjdmZyb21faW50byhidWYsIG5ieXRlcykKICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBmdXQgPSBzZWxmLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIGZkID0gc29jay5maWxlbm8oKQogICAgICAgIHNlbGYuX2Vuc3VyZV9mZF9ub190cmFuc3BvcnQoZmQpCiAgICAgICAgaGFuZGxlID0gc2VsZi5fYWRkX3JlYWRlcihmZCwgc2VsZi5fc29ja19yZWN2ZnJvbV9pbnRvLCBmdXQsIHNvY2ssIGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlcykKICAgICAgICBmdXQuYWRkX2RvbmVfY2FsbGJhY2soCiAgICAgICAgICAgIGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX3NvY2tfcmVhZF9kb25lLCBmZCwgaGFuZGxlPWhhbmRsZSkpCiAgICAgICAgcmV0dXJuIGF3YWl0IGZ1dAoKICAgIGRlZiBfc29ja19yZWN2ZnJvbV9pbnRvKHNlbGYsIGZ1dCwgc29jaywgYnVmLCBidWZzaXplKToKICAgICAgICAjIF9zb2NrX3JlY3ZfaW50bygpIGNhbiBhZGQgaXRzZWxmIGFzIGFuIEkvTyBjYWxsYmFjayBpZiB0aGUgb3BlcmF0aW9uCiAgICAgICAgIyBjYW4ndCBiZSBkb25lIGltbWVkaWF0ZWx5LiBEb24ndCB1c2UgaXQgZGlyZWN0bHksIGNhbGwKICAgICAgICAjIHNvY2tfcmVjdl9pbnRvKCkuCiAgICAgICAgaWYgZnV0LmRvbmUoKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBzb2NrLnJlY3Zmcm9tX2ludG8oYnVmLCBidWZzaXplKQogICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgcmV0dXJuICAjIHRyeSBhZ2FpbiBuZXh0IHRpbWUKICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICBlbHNlOgogICAgICAgICAgICBmdXQuc2V0X3Jlc3VsdChyZXN1bHQpCgogICAgYXN5bmMgZGVmIHNvY2tfc2VuZGFsbChzZWxmLCBzb2NrLCBkYXRhKToKICAgICAgICAiIiJTZW5kIGRhdGEgdG8gdGhlIHNvY2tldC4KCiAgICAgICAgVGhlIHNvY2tldCBtdXN0IGJlIGNvbm5lY3RlZCB0byBhIHJlbW90ZSBzb2NrZXQuIFRoaXMgbWV0aG9kIGNvbnRpbnVlcwogICAgICAgIHRvIHNlbmQgZGF0YSBmcm9tIGRhdGEgdW50aWwgZWl0aGVyIGFsbCBkYXRhIGhhcyBiZWVuIHNlbnQgb3IgYW4KICAgICAgICBlcnJvciBvY2N1cnMuIE5vbmUgaXMgcmV0dXJuZWQgb24gc3VjY2Vzcy4gT24gZXJyb3IsIGFuIGV4Y2VwdGlvbiBpcwogICAgICAgIHJhaXNlZCwgYW5kIHRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgaG93IG11Y2ggZGF0YSwgaWYgYW55LCB3YXMKICAgICAgICBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIGJ5IHRoZSByZWNlaXZpbmcgZW5kIG9mIHRoZSBjb25uZWN0aW9uLgogICAgICAgICIiIgogICAgICAgIGJhc2VfZXZlbnRzLl9jaGVja19zc2xfc29ja2V0KHNvY2spCiAgICAgICAgaWYgc2VsZi5fZGVidWcgYW5kIHNvY2suZ2V0dGltZW91dCgpICE9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRoZSBzb2NrZXQgbXVzdCBiZSBub24tYmxvY2tpbmciKQogICAgICAgIHRyeToKICAgICAgICAgICAgbiA9IHNvY2suc2VuZChkYXRhKQogICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgbiA9IDAKCiAgICAgICAgaWYgbiA9PSBsZW4oZGF0YSk6CiAgICAgICAgICAgICMgYWxsIGRhdGEgc2VudAogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgZnV0ID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBmZCA9IHNvY2suZmlsZW5vKCkKICAgICAgICBzZWxmLl9lbnN1cmVfZmRfbm9fdHJhbnNwb3J0KGZkKQogICAgICAgICMgdXNlIGEgdHJpY2sgd2l0aCBhIGxpc3QgaW4gY2xvc3VyZSB0byBzdG9yZSBhIG11dGFibGUgc3RhdGUKICAgICAgICBoYW5kbGUgPSBzZWxmLl9hZGRfd3JpdGVyKGZkLCBzZWxmLl9zb2NrX3NlbmRhbGwsIGZ1dCwgc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcoZGF0YSksIFtuXSkKICAgICAgICBmdXQuYWRkX2RvbmVfY2FsbGJhY2soCiAgICAgICAgICAgIGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX3NvY2tfd3JpdGVfZG9uZSwgZmQsIGhhbmRsZT1oYW5kbGUpKQogICAgICAgIHJldHVybiBhd2FpdCBmdXQKCiAgICBkZWYgX3NvY2tfc2VuZGFsbChzZWxmLCBmdXQsIHNvY2ssIHZpZXcsIHBvcyk6CiAgICAgICAgaWYgZnV0LmRvbmUoKToKICAgICAgICAgICAgIyBGdXR1cmUgY2FuY2VsbGF0aW9uIGNhbiBiZSBzY2hlZHVsZWQgb24gcHJldmlvdXMgbG9vcCBpdGVyYXRpb24KICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc3RhcnQgPSBwb3NbMF0KICAgICAgICB0cnk6CiAgICAgICAgICAgIG4gPSBzb2NrLnNlbmQodmlld1tzdGFydDpdKQogICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBzdGFydCArPSBuCgogICAgICAgIGlmIHN0YXJ0ID09IGxlbih2aWV3KToKICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQoTm9uZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwb3NbMF0gPSBzdGFydAoKICAgIGFzeW5jIGRlZiBzb2NrX3NlbmR0byhzZWxmLCBzb2NrLCBkYXRhLCBhZGRyZXNzKToKICAgICAgICAiIiJTZW5kIGRhdGEgdG8gdGhlIHNvY2tldC4KCiAgICAgICAgVGhlIHNvY2tldCBtdXN0IGJlIGNvbm5lY3RlZCB0byBhIHJlbW90ZSBzb2NrZXQuIFRoaXMgbWV0aG9kIGNvbnRpbnVlcwogICAgICAgIHRvIHNlbmQgZGF0YSBmcm9tIGRhdGEgdW50aWwgZWl0aGVyIGFsbCBkYXRhIGhhcyBiZWVuIHNlbnQgb3IgYW4KICAgICAgICBlcnJvciBvY2N1cnMuIE5vbmUgaXMgcmV0dXJuZWQgb24gc3VjY2Vzcy4gT24gZXJyb3IsIGFuIGV4Y2VwdGlvbiBpcwogICAgICAgIHJhaXNlZCwgYW5kIHRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgaG93IG11Y2ggZGF0YSwgaWYgYW55LCB3YXMKICAgICAgICBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIGJ5IHRoZSByZWNlaXZpbmcgZW5kIG9mIHRoZSBjb25uZWN0aW9uLgogICAgICAgICIiIgogICAgICAgIGJhc2VfZXZlbnRzLl9jaGVja19zc2xfc29ja2V0KHNvY2spCiAgICAgICAgaWYgc2VsZi5fZGVidWcgYW5kIHNvY2suZ2V0dGltZW91dCgpICE9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRoZSBzb2NrZXQgbXVzdCBiZSBub24tYmxvY2tpbmciKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNvY2suc2VuZHRvKGRhdGEsIGFkZHJlc3MpCiAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgogICAgICAgICAgICBwYXNzCgogICAgICAgIGZ1dCA9IHNlbGYuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgZmQgPSBzb2NrLmZpbGVubygpCiAgICAgICAgc2VsZi5fZW5zdXJlX2ZkX25vX3RyYW5zcG9ydChmZCkKICAgICAgICAjIHVzZSBhIHRyaWNrIHdpdGggYSBsaXN0IGluIGNsb3N1cmUgdG8gc3RvcmUgYSBtdXRhYmxlIHN0YXRlCiAgICAgICAgaGFuZGxlID0gc2VsZi5fYWRkX3dyaXRlcihmZCwgc2VsZi5fc29ja19zZW5kdG8sIGZ1dCwgc29jaywgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCiAgICAgICAgZnV0LmFkZF9kb25lX2NhbGxiYWNrKAogICAgICAgICAgICBmdW5jdG9vbHMucGFydGlhbChzZWxmLl9zb2NrX3dyaXRlX2RvbmUsIGZkLCBoYW5kbGU9aGFuZGxlKSkKICAgICAgICByZXR1cm4gYXdhaXQgZnV0CgogICAgZGVmIF9zb2NrX3NlbmR0byhzZWxmLCBmdXQsIHNvY2ssIGRhdGEsIGFkZHJlc3MpOgogICAgICAgIGlmIGZ1dC5kb25lKCk6CiAgICAgICAgICAgICMgRnV0dXJlIGNhbmNlbGxhdGlvbiBjYW4gYmUgc2NoZWR1bGVkIG9uIHByZXZpb3VzIGxvb3AgaXRlcmF0aW9uCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgbiA9IHNvY2suc2VuZHRvKGRhdGEsIDAsIGFkZHJlc3MpCiAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICBlbHNlOgogICAgICAgICAgICBmdXQuc2V0X3Jlc3VsdChuKQoKICAgIGFzeW5jIGRlZiBzb2NrX2Nvbm5lY3Qoc2VsZiwgc29jaywgYWRkcmVzcyk6CiAgICAgICAgIiIiQ29ubmVjdCB0byBhIHJlbW90ZSBzb2NrZXQgYXQgYWRkcmVzcy4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgYSBjb3JvdXRpbmUuCiAgICAgICAgIiIiCiAgICAgICAgYmFzZV9ldmVudHMuX2NoZWNrX3NzbF9zb2NrZXQoc29jaykKICAgICAgICBpZiBzZWxmLl9kZWJ1ZyBhbmQgc29jay5nZXR0aW1lb3V0KCkgIT0gMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidGhlIHNvY2tldCBtdXN0IGJlIG5vbi1ibG9ja2luZyIpCgogICAgICAgIGlmIHNvY2suZmFtaWx5ID09IHNvY2tldC5BRl9JTkVUIG9yICgKICAgICAgICAgICAgICAgIGJhc2VfZXZlbnRzLl9IQVNfSVB2NiBhbmQgc29jay5mYW1pbHkgPT0gc29ja2V0LkFGX0lORVQ2KToKICAgICAgICAgICAgcmVzb2x2ZWQgPSBhd2FpdCBzZWxmLl9lbnN1cmVfcmVzb2x2ZWQoCiAgICAgICAgICAgICAgICBhZGRyZXNzLCBmYW1pbHk9c29jay5mYW1pbHksIHR5cGU9c29jay50eXBlLCBwcm90bz1zb2NrLnByb3RvLAogICAgICAgICAgICAgICAgbG9vcD1zZWxmLAogICAgICAgICAgICApCiAgICAgICAgICAgIF8sIF8sIF8sIF8sIGFkZHJlc3MgPSByZXNvbHZlZFswXQoKICAgICAgICBmdXQgPSBzZWxmLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIHNlbGYuX3NvY2tfY29ubmVjdChmdXQsIHNvY2ssIGFkZHJlc3MpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gYXdhaXQgZnV0CiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIyBOZWVkZWQgdG8gYnJlYWsgY3ljbGVzIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4KICAgICAgICAgICAgZnV0ID0gTm9uZQoKICAgIGRlZiBfc29ja19jb25uZWN0KHNlbGYsIGZ1dCwgc29jaywgYWRkcmVzcyk6CiAgICAgICAgZmQgPSBzb2NrLmZpbGVubygpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzb2NrLmNvbm5lY3QoYWRkcmVzcykKICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CiAgICAgICAgICAgICMgSXNzdWUgIzIzNjE4OiBXaGVuIHRoZSBDIGZ1bmN0aW9uIGNvbm5lY3QoKSBmYWlscyB3aXRoIEVJTlRSLCB0aGUKICAgICAgICAgICAgIyBjb25uZWN0aW9uIHJ1bnMgaW4gYmFja2dyb3VuZC4gV2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBzb2NrZXQKICAgICAgICAgICAgIyBiZWNvbWVzIHdyaXRhYmxlIHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIGNvbm5lY3Rpb24gc3VjY2VlZCBvcgogICAgICAgICAgICAjIGZhaWxzLgogICAgICAgICAgICBzZWxmLl9lbnN1cmVfZmRfbm9fdHJhbnNwb3J0KGZkKQogICAgICAgICAgICBoYW5kbGUgPSBzZWxmLl9hZGRfd3JpdGVyKAogICAgICAgICAgICAgICAgZmQsIHNlbGYuX3NvY2tfY29ubmVjdF9jYiwgZnV0LCBzb2NrLCBhZGRyZXNzKQogICAgICAgICAgICBmdXQuYWRkX2RvbmVfY2FsbGJhY2soCiAgICAgICAgICAgICAgICBmdW5jdG9vbHMucGFydGlhbChzZWxmLl9zb2NrX3dyaXRlX2RvbmUsIGZkLCBoYW5kbGU9aGFuZGxlKSkKICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICBlbHNlOgogICAgICAgICAgICBmdXQuc2V0X3Jlc3VsdChOb25lKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGZ1dCA9IE5vbmUKCiAgICBkZWYgX3NvY2tfd3JpdGVfZG9uZShzZWxmLCBmZCwgZnV0LCBoYW5kbGU9Tm9uZSk6CiAgICAgICAgaWYgaGFuZGxlIGlzIE5vbmUgb3Igbm90IGhhbmRsZS5jYW5jZWxsZWQoKToKICAgICAgICAgICAgc2VsZi5yZW1vdmVfd3JpdGVyKGZkKQoKICAgIGRlZiBfc29ja19jb25uZWN0X2NiKHNlbGYsIGZ1dCwgc29jaywgYWRkcmVzcyk6CiAgICAgICAgaWYgZnV0LmRvbmUoKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHRyeToKICAgICAgICAgICAgZXJyID0gc29jay5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fRVJST1IpCiAgICAgICAgICAgIGlmIGVyciAhPSAwOgogICAgICAgICAgICAgICAgIyBKdW1wIHRvIGFueSBleGNlcHQgY2xhdXNlIGJlbG93LgogICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnIsIGYnQ29ubmVjdCBjYWxsIGZhaWxlZCB7YWRkcmVzc30nKQogICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgIyBzb2NrZXQgaXMgc3RpbGwgcmVnaXN0ZXJlZCwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgcmV0cmllZCBsYXRlcgogICAgICAgICAgICBwYXNzCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQoTm9uZSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBmdXQgPSBOb25lCgogICAgYXN5bmMgZGVmIHNvY2tfYWNjZXB0KHNlbGYsIHNvY2spOgogICAgICAgICIiIkFjY2VwdCBhIGNvbm5lY3Rpb24uCgogICAgICAgIFRoZSBzb2NrZXQgbXVzdCBiZSBib3VuZCB0byBhbiBhZGRyZXNzIGFuZCBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25zLgogICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIChjb25uLCBhZGRyZXNzKSB3aGVyZSBjb25uIGlzIGEgbmV3IHNvY2tldAogICAgICAgIG9iamVjdCB1c2FibGUgdG8gc2VuZCBhbmQgcmVjZWl2ZSBkYXRhIG9uIHRoZSBjb25uZWN0aW9uLCBhbmQgYWRkcmVzcwogICAgICAgIGlzIHRoZSBhZGRyZXNzIGJvdW5kIHRvIHRoZSBzb2NrZXQgb24gdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdGlvbi4KICAgICAgICAiIiIKICAgICAgICBiYXNlX2V2ZW50cy5fY2hlY2tfc3NsX3NvY2tldChzb2NrKQogICAgICAgIGlmIHNlbGYuX2RlYnVnIGFuZCBzb2NrLmdldHRpbWVvdXQoKSAhPSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aGUgc29ja2V0IG11c3QgYmUgbm9uLWJsb2NraW5nIikKICAgICAgICBmdXQgPSBzZWxmLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIHNlbGYuX3NvY2tfYWNjZXB0KGZ1dCwgc29jaykKICAgICAgICByZXR1cm4gYXdhaXQgZnV0CgogICAgZGVmIF9zb2NrX2FjY2VwdChzZWxmLCBmdXQsIHNvY2spOgogICAgICAgIGZkID0gc29jay5maWxlbm8oKQogICAgICAgIHRyeToKICAgICAgICAgICAgY29ubiwgYWRkcmVzcyA9IHNvY2suYWNjZXB0KCkKICAgICAgICAgICAgY29ubi5zZXRibG9ja2luZyhGYWxzZSkKICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CiAgICAgICAgICAgIHNlbGYuX2Vuc3VyZV9mZF9ub190cmFuc3BvcnQoZmQpCiAgICAgICAgICAgIGhhbmRsZSA9IHNlbGYuX2FkZF9yZWFkZXIoZmQsIHNlbGYuX3NvY2tfYWNjZXB0LCBmdXQsIHNvY2spCiAgICAgICAgICAgIGZ1dC5hZGRfZG9uZV9jYWxsYmFjaygKICAgICAgICAgICAgICAgIGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX3NvY2tfcmVhZF9kb25lLCBmZCwgaGFuZGxlPWhhbmRsZSkpCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQoKGNvbm4sIGFkZHJlc3MpKQoKICAgIGFzeW5jIGRlZiBfc2VuZGZpbGVfbmF0aXZlKHNlbGYsIHRyYW5zcCwgZmlsZSwgb2Zmc2V0LCBjb3VudCk6CiAgICAgICAgZGVsIHNlbGYuX3RyYW5zcG9ydHNbdHJhbnNwLl9zb2NrX2ZkXQogICAgICAgIHJlc3VtZV9yZWFkaW5nID0gdHJhbnNwLmlzX3JlYWRpbmcoKQogICAgICAgIHRyYW5zcC5wYXVzZV9yZWFkaW5nKCkKICAgICAgICBhd2FpdCB0cmFuc3AuX21ha2VfZW1wdHlfd2FpdGVyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBhd2FpdCBzZWxmLnNvY2tfc2VuZGZpbGUodHJhbnNwLl9zb2NrLCBmaWxlLCBvZmZzZXQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPUZhbHNlKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHRyYW5zcC5fcmVzZXRfZW1wdHlfd2FpdGVyKCkKICAgICAgICAgICAgaWYgcmVzdW1lX3JlYWRpbmc6CiAgICAgICAgICAgICAgICB0cmFuc3AucmVzdW1lX3JlYWRpbmcoKQogICAgICAgICAgICBzZWxmLl90cmFuc3BvcnRzW3RyYW5zcC5fc29ja19mZF0gPSB0cmFuc3AKCiAgICBkZWYgX3Byb2Nlc3NfZXZlbnRzKHNlbGYsIGV2ZW50X2xpc3QpOgogICAgICAgIGZvciBrZXksIG1hc2sgaW4gZXZlbnRfbGlzdDoKICAgICAgICAgICAgZmlsZW9iaiwgKHJlYWRlciwgd3JpdGVyKSA9IGtleS5maWxlb2JqLCBrZXkuZGF0YQogICAgICAgICAgICBpZiBtYXNrICYgc2VsZWN0b3JzLkVWRU5UX1JFQUQgYW5kIHJlYWRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGlmIHJlYWRlci5fY2FuY2VsbGVkOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9yZWFkZXIoZmlsZW9iaikKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX2NhbGxiYWNrKHJlYWRlcikKICAgICAgICAgICAgaWYgbWFzayAmIHNlbGVjdG9ycy5FVkVOVF9XUklURSBhbmQgd3JpdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgd3JpdGVyLl9jYW5jZWxsZWQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX3dyaXRlcihmaWxlb2JqKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfY2FsbGJhY2sod3JpdGVyKQoKICAgIGRlZiBfc3RvcF9zZXJ2aW5nKHNlbGYsIHNvY2spOgogICAgICAgIHNlbGYuX3JlbW92ZV9yZWFkZXIoc29jay5maWxlbm8oKSkKICAgICAgICBzb2NrLmNsb3NlKCkKCgpjbGFzcyBfU2VsZWN0b3JUcmFuc3BvcnQodHJhbnNwb3J0cy5fRmxvd0NvbnRyb2xNaXhpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydHMuVHJhbnNwb3J0KToKCiAgICBtYXhfc2l6ZSA9IDI1NiAqIDEwMjQgICMgQnVmZmVyIHNpemUgcGFzc2VkIHRvIHJlY3YoKS4KCiAgICBfYnVmZmVyX2ZhY3RvcnkgPSBieXRlYXJyYXkgICMgQ29uc3RydWN0cyBpbml0aWFsIHZhbHVlIGZvciBzZWxmLl9idWZmZXIuCgogICAgIyBBdHRyaWJ1dGUgdXNlZCBpbiB0aGUgZGVzdHJ1Y3RvcjogaXQgbXVzdCBiZSBzZXQgZXZlbiBpZiB0aGUgY29uc3RydWN0b3IKICAgICMgaXMgbm90IGNhbGxlZCAoc2VlIF9TZWxlY3RvclNzbFRyYW5zcG9ydCB3aGljaCBtYXkgc3RhcnQgYnkgcmFpc2luZyBhbgogICAgIyBleGNlcHRpb24pCiAgICBfc29jayA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbG9vcCwgc29jaywgcHJvdG9jb2wsIGV4dHJhPU5vbmUsIHNlcnZlcj1Ob25lKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGV4dHJhLCBsb29wKQogICAgICAgIHNlbGYuX2V4dHJhWydzb2NrZXQnXSA9IHRyc29jay5UcmFuc3BvcnRTb2NrZXQoc29jaykKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2V4dHJhWydzb2NrbmFtZSddID0gc29jay5nZXRzb2NrbmFtZSgpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHNlbGYuX2V4dHJhWydzb2NrbmFtZSddID0gTm9uZQogICAgICAgIGlmICdwZWVybmFtZScgbm90IGluIHNlbGYuX2V4dHJhOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLl9leHRyYVsncGVlcm5hbWUnXSA9IHNvY2suZ2V0cGVlcm5hbWUoKQogICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgogICAgICAgICAgICAgICAgc2VsZi5fZXh0cmFbJ3BlZXJuYW1lJ10gPSBOb25lCiAgICAgICAgc2VsZi5fc29jayA9IHNvY2sKICAgICAgICBzZWxmLl9zb2NrX2ZkID0gc29jay5maWxlbm8oKQoKICAgICAgICBzZWxmLl9wcm90b2NvbF9jb25uZWN0ZWQgPSBGYWxzZQogICAgICAgIHNlbGYuc2V0X3Byb3RvY29sKHByb3RvY29sKQoKICAgICAgICBzZWxmLl9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJfZmFjdG9yeSgpCiAgICAgICAgc2VsZi5fY29ubl9sb3N0ID0gMCAgIyBTZXQgd2hlbiBjYWxsIHRvIGNvbm5lY3Rpb25fbG9zdCBzY2hlZHVsZWQuCiAgICAgICAgc2VsZi5fY2xvc2luZyA9IEZhbHNlICAjIFNldCB3aGVuIGNsb3NlKCkgY2FsbGVkLgogICAgICAgIGlmIHNlbGYuX3NlcnZlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fc2VydmVyLl9hdHRhY2goKQogICAgICAgIGxvb3AuX3RyYW5zcG9ydHNbc2VsZi5fc29ja19mZF0gPSBzZWxmCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGluZm8gPSBbc2VsZi5fX2NsYXNzX18uX19uYW1lX19dCiAgICAgICAgaWYgc2VsZi5fc29jayBpcyBOb25lOgogICAgICAgICAgICBpbmZvLmFwcGVuZCgnY2xvc2VkJykKICAgICAgICBlbGlmIHNlbGYuX2Nsb3Npbmc6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdjbG9zaW5nJykKICAgICAgICBpbmZvLmFwcGVuZChmJ2ZkPXtzZWxmLl9zb2NrX2ZkfScpCiAgICAgICAgIyB0ZXN0IGlmIHRoZSB0cmFuc3BvcnQgd2FzIGNsb3NlZAogICAgICAgIGlmIHNlbGYuX2xvb3AgaXMgbm90IE5vbmUgYW5kIG5vdCBzZWxmLl9sb29wLmlzX2Nsb3NlZCgpOgogICAgICAgICAgICBwb2xsaW5nID0gX3Rlc3Rfc2VsZWN0b3JfZXZlbnQoc2VsZi5fbG9vcC5fc2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zb2NrX2ZkLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKICAgICAgICAgICAgaWYgcG9sbGluZzoKICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdyZWFkPXBvbGxpbmcnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaW5mby5hcHBlbmQoJ3JlYWQ9aWRsZScpCgogICAgICAgICAgICBwb2xsaW5nID0gX3Rlc3Rfc2VsZWN0b3JfZXZlbnQoc2VsZi5fbG9vcC5fc2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zb2NrX2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzLkVWRU5UX1dSSVRFKQogICAgICAgICAgICBpZiBwb2xsaW5nOgogICAgICAgICAgICAgICAgc3RhdGUgPSAncG9sbGluZycKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHN0YXRlID0gJ2lkbGUnCgogICAgICAgICAgICBidWZzaXplID0gc2VsZi5nZXRfd3JpdGVfYnVmZmVyX3NpemUoKQogICAgICAgICAgICBpbmZvLmFwcGVuZChmJ3dyaXRlPTx7c3RhdGV9LCBidWZzaXplPXtidWZzaXplfT4nKQogICAgICAgIHJldHVybiAnPHt9PicuZm9ybWF0KCcgJy5qb2luKGluZm8pKQoKICAgIGRlZiBhYm9ydChzZWxmKToKICAgICAgICBzZWxmLl9mb3JjZV9jbG9zZShOb25lKQoKICAgIGRlZiBzZXRfcHJvdG9jb2woc2VsZiwgcHJvdG9jb2wpOgogICAgICAgIHNlbGYuX3Byb3RvY29sID0gcHJvdG9jb2wKICAgICAgICBzZWxmLl9wcm90b2NvbF9jb25uZWN0ZWQgPSBUcnVlCgogICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fcHJvdG9jb2wKCiAgICBkZWYgaXNfY2xvc2luZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2xvc2luZwoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiBzZWxmLl9jbG9zaW5nOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLl9jbG9zaW5nID0gVHJ1ZQogICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV9yZWFkZXIoc2VsZi5fc29ja19mZCkKICAgICAgICBpZiBub3Qgc2VsZi5fYnVmZmVyOgogICAgICAgICAgICBzZWxmLl9jb25uX2xvc3QgKz0gMQogICAgICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfd3JpdGVyKHNlbGYuX3NvY2tfZmQpCiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX2NhbGxfY29ubmVjdGlvbl9sb3N0LCBOb25lKQoKICAgIGRlZiBfX2RlbF9fKHNlbGYsIF93YXJuPXdhcm5pbmdzLndhcm4pOgogICAgICAgIGlmIHNlbGYuX3NvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF93YXJuKGYidW5jbG9zZWQgdHJhbnNwb3J0IHtzZWxmIXJ9IiwgUmVzb3VyY2VXYXJuaW5nLCBzb3VyY2U9c2VsZikKICAgICAgICAgICAgc2VsZi5fc29jay5jbG9zZSgpCgogICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHRyYW5zcG9ydCcpOgogICAgICAgICMgU2hvdWxkIGJlIGNhbGxlZCBmcm9tIGV4Y2VwdGlvbiBoYW5kbGVyIG9ubHkuCiAgICAgICAgaWYgaXNpbnN0YW5jZShleGMsIE9TRXJyb3IpOgogICAgICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlcjogJXMiLCBzZWxmLCBtZXNzYWdlLCBleGNfaW5mbz1UcnVlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9leGNlcHRpb25faGFuZGxlcih7CiAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgJ3RyYW5zcG9ydCc6IHNlbGYsCiAgICAgICAgICAgICAgICAncHJvdG9jb2wnOiBzZWxmLl9wcm90b2NvbCwKICAgICAgICAgICAgfSkKICAgICAgICBzZWxmLl9mb3JjZV9jbG9zZShleGMpCgogICAgZGVmIF9mb3JjZV9jbG9zZShzZWxmLCBleGMpOgogICAgICAgIGlmIHNlbGYuX2Nvbm5fbG9zdDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgc2VsZi5fYnVmZmVyOgogICAgICAgICAgICBzZWxmLl9idWZmZXIuY2xlYXIoKQogICAgICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfd3JpdGVyKHNlbGYuX3NvY2tfZmQpCiAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3Npbmc6CiAgICAgICAgICAgIHNlbGYuX2Nsb3NpbmcgPSBUcnVlCiAgICAgICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV9yZWFkZXIoc2VsZi5fc29ja19mZCkKICAgICAgICBzZWxmLl9jb25uX2xvc3QgKz0gMQogICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX2NhbGxfY29ubmVjdGlvbl9sb3N0LCBleGMpCgogICAgZGVmIF9jYWxsX2Nvbm5lY3Rpb25fbG9zdChzZWxmLCBleGMpOgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5fcHJvdG9jb2xfY29ubmVjdGVkOgogICAgICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2wuY29ubmVjdGlvbl9sb3N0KGV4YykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl9zb2NrLmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5fc29jayA9IE5vbmUKICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2wgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX2xvb3AgPSBOb25lCiAgICAgICAgICAgIHNlcnZlciA9IHNlbGYuX3NlcnZlcgogICAgICAgICAgICBpZiBzZXJ2ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZXJ2ZXIuX2RldGFjaCgpCiAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXIgPSBOb25lCgogICAgZGVmIGdldF93cml0ZV9idWZmZXJfc2l6ZShzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2J1ZmZlcikKCiAgICBkZWYgX2FkZF9yZWFkZXIoc2VsZiwgZmQsIGNhbGxiYWNrLCAqYXJncyk6CiAgICAgICAgaWYgc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHNlbGYuX2xvb3AuX2FkZF9yZWFkZXIoZmQsIGNhbGxiYWNrLCAqYXJncykKCgpjbGFzcyBfU2VsZWN0b3JTb2NrZXRUcmFuc3BvcnQoX1NlbGVjdG9yVHJhbnNwb3J0KToKCiAgICBfc3RhcnRfdGxzX2NvbXBhdGlibGUgPSBUcnVlCiAgICBfc2VuZGZpbGVfY29tcGF0aWJsZSA9IGNvbnN0YW50cy5fU2VuZGZpbGVNb2RlLlRSWV9OQVRJVkUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbG9vcCwgc29jaywgcHJvdG9jb2wsIHdhaXRlcj1Ob25lLAogICAgICAgICAgICAgICAgIGV4dHJhPU5vbmUsIHNlcnZlcj1Ob25lKToKCiAgICAgICAgc2VsZi5fcmVhZF9yZWFkeV9jYiA9IE5vbmUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKGxvb3AsIHNvY2ssIHByb3RvY29sLCBleHRyYSwgc2VydmVyKQogICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCiAgICAgICAgc2VsZi5fcGF1c2VkID0gRmFsc2UKICAgICAgICBzZWxmLl9lbXB0eV93YWl0ZXIgPSBOb25lCgogICAgICAgICMgRGlzYWJsZSB0aGUgTmFnbGUgYWxnb3JpdGhtIC0tIHNtYWxsIHdyaXRlcyB3aWxsIGJlCiAgICAgICAgIyBzZW50IHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIFRDUCBBQ0suICBUaGlzIGdlbmVyYWxseQogICAgICAgICMgZGVjcmVhc2VzIHRoZSBsYXRlbmN5IChpbiBzb21lIGNhc2VzIHNpZ25pZmljYW50bHkuKQogICAgICAgIGJhc2VfZXZlbnRzLl9zZXRfbm9kZWxheShzZWxmLl9zb2NrKQoKICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9wcm90b2NvbC5jb25uZWN0aW9uX21hZGUsIHNlbGYpCiAgICAgICAgIyBvbmx5IHN0YXJ0IHJlYWRpbmcgd2hlbiBjb25uZWN0aW9uX21hZGUoKSBoYXMgYmVlbiBjYWxsZWQKICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9hZGRfcmVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tfZmQsIHNlbGYuX3JlYWRfcmVhZHkpCiAgICAgICAgaWYgd2FpdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIG9ubHkgd2FrZSB1cCB0aGUgd2FpdGVyIHdoZW4gY29ubmVjdGlvbl9tYWRlKCkgaGFzIGJlZW4gY2FsbGVkCiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKGZ1dHVyZXMuX3NldF9yZXN1bHRfdW5sZXNzX2NhbmNlbGxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGVyLCBOb25lKQoKICAgIGRlZiBzZXRfcHJvdG9jb2woc2VsZiwgcHJvdG9jb2wpOgogICAgICAgIGlmIGlzaW5zdGFuY2UocHJvdG9jb2wsIHByb3RvY29scy5CdWZmZXJlZFByb3RvY29sKToKICAgICAgICAgICAgc2VsZi5fcmVhZF9yZWFkeV9jYiA9IHNlbGYuX3JlYWRfcmVhZHlfX2dldF9idWZmZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9yZWFkX3JlYWR5X2NiID0gc2VsZi5fcmVhZF9yZWFkeV9fZGF0YV9yZWNlaXZlZAoKICAgICAgICBzdXBlcigpLnNldF9wcm90b2NvbChwcm90b2NvbCkKCiAgICBkZWYgaXNfcmVhZGluZyhzZWxmKToKICAgICAgICByZXR1cm4gbm90IHNlbGYuX3BhdXNlZCBhbmQgbm90IHNlbGYuX2Nsb3NpbmcKCiAgICBkZWYgcGF1c2VfcmVhZGluZyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9jbG9zaW5nIG9yIHNlbGYuX3BhdXNlZDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fcGF1c2VkID0gVHJ1ZQogICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV9yZWFkZXIoc2VsZi5fc29ja19mZCkKICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVyIHBhdXNlcyByZWFkaW5nIiwgc2VsZikKCiAgICBkZWYgcmVzdW1lX3JlYWRpbmcoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY2xvc2luZyBvciBub3Qgc2VsZi5fcGF1c2VkOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLl9wYXVzZWQgPSBGYWxzZQogICAgICAgIHNlbGYuX2FkZF9yZWFkZXIoc2VsZi5fc29ja19mZCwgc2VsZi5fcmVhZF9yZWFkeSkKICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVyIHJlc3VtZXMgcmVhZGluZyIsIHNlbGYpCgogICAgZGVmIF9yZWFkX3JlYWR5KHNlbGYpOgogICAgICAgIHNlbGYuX3JlYWRfcmVhZHlfY2IoKQoKICAgIGRlZiBfcmVhZF9yZWFkeV9fZ2V0X2J1ZmZlcihzZWxmKToKICAgICAgICBpZiBzZWxmLl9jb25uX2xvc3Q6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX3Byb3RvY29sLmdldF9idWZmZXIoLTEpCiAgICAgICAgICAgIGlmIG5vdCBsZW4oYnVmKToKICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignZ2V0X2J1ZmZlcigpIHJldHVybmVkIGFuIGVtcHR5IGJ1ZmZlcicpCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcigKICAgICAgICAgICAgICAgIGV4YywgJ0ZhdGFsIGVycm9yOiBwcm90b2NvbC5nZXRfYnVmZmVyKCkgY2FsbCBmYWlsZWQuJykKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHRyeToKICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5fc29jay5yZWN2X2ludG8oYnVmKQogICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcihleGMsICdGYXRhbCByZWFkIGVycm9yIG9uIHNvY2tldCB0cmFuc3BvcnQnKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgbm90IG5ieXRlczoKICAgICAgICAgICAgc2VsZi5fcmVhZF9yZWFkeV9fb25fZW9mKCkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2wuYnVmZmVyX3VwZGF0ZWQobmJ5dGVzKQogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoCiAgICAgICAgICAgICAgICBleGMsICdGYXRhbCBlcnJvcjogcHJvdG9jb2wuYnVmZmVyX3VwZGF0ZWQoKSBjYWxsIGZhaWxlZC4nKQoKICAgIGRlZiBfcmVhZF9yZWFkeV9fZGF0YV9yZWNlaXZlZChzZWxmKToKICAgICAgICBpZiBzZWxmLl9jb25uX2xvc3Q6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3NvY2sucmVjdihzZWxmLm1heF9zaXplKQogICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcihleGMsICdGYXRhbCByZWFkIGVycm9yIG9uIHNvY2tldCB0cmFuc3BvcnQnKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgIHNlbGYuX3JlYWRfcmVhZHlfX29uX2VvZigpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sLmRhdGFfcmVjZWl2ZWQoZGF0YSkKICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIHNlbGYuX2ZhdGFsX2Vycm9yKAogICAgICAgICAgICAgICAgZXhjLCAnRmF0YWwgZXJyb3I6IHByb3RvY29sLmRhdGFfcmVjZWl2ZWQoKSBjYWxsIGZhaWxlZC4nKQoKICAgIGRlZiBfcmVhZF9yZWFkeV9fb25fZW9mKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXIgcmVjZWl2ZWQgRU9GIiwgc2VsZikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBrZWVwX29wZW4gPSBzZWxmLl9wcm90b2NvbC5lb2ZfcmVjZWl2ZWQoKQogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoCiAgICAgICAgICAgICAgICBleGMsICdGYXRhbCBlcnJvcjogcHJvdG9jb2wuZW9mX3JlY2VpdmVkKCkgY2FsbCBmYWlsZWQuJykKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIGtlZXBfb3BlbjoKICAgICAgICAgICAgIyBXZSdyZSBrZWVwaW5nIHRoZSBjb25uZWN0aW9uIG9wZW4gc28gdGhlCiAgICAgICAgICAgICMgcHJvdG9jb2wgY2FuIHdyaXRlIG1vcmUsIGJ1dCB3ZSBzdGlsbCBjYW4ndAogICAgICAgICAgICAjIHJlY2VpdmUgbW9yZSwgc28gcmVtb3ZlIHRoZSByZWFkZXIgY2FsbGJhY2suCiAgICAgICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV9yZWFkZXIoc2VsZi5fc29ja19mZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmNsb3NlKCkKCiAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgKGJ5dGVzLCBieXRlYXJyYXksIG1lbW9yeXZpZXcpKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnZGF0YSBhcmd1bWVudCBtdXN0IGJlIGEgYnl0ZXMtbGlrZSBvYmplY3QsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYnbm90IHt0eXBlKGRhdGEpLl9fbmFtZV9fIXJ9JykKICAgICAgICBpZiBzZWxmLl9lb2Y6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ2Fubm90IGNhbGwgd3JpdGUoKSBhZnRlciB3cml0ZV9lb2YoKScpCiAgICAgICAgaWYgc2VsZi5fZW1wdHlfd2FpdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3VuYWJsZSB0byB3cml0ZTsgc2VuZGZpbGUgaXMgaW4gcHJvZ3Jlc3MnKQogICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgc2VsZi5fY29ubl9sb3N0OgogICAgICAgICAgICBpZiBzZWxmLl9jb25uX2xvc3QgPj0gY29uc3RhbnRzLkxPR19USFJFU0hPTERfRk9SX0NPTk5MT1NUX1dSSVRFUzoKICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdzb2NrZXQuc2VuZCgpIHJhaXNlZCBleGNlcHRpb24uJykKICAgICAgICAgICAgc2VsZi5fY29ubl9sb3N0ICs9IDEKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIG5vdCBzZWxmLl9idWZmZXI6CiAgICAgICAgICAgICMgT3B0aW1pemF0aW9uOiB0cnkgdG8gc2VuZCBub3cuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zb2NrLnNlbmQoZGF0YSkKICAgICAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgICAgIHNlbGYuX2ZhdGFsX2Vycm9yKGV4YywgJ0ZhdGFsIHdyaXRlIGVycm9yIG9uIHNvY2tldCB0cmFuc3BvcnQnKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVtuOl0KICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAjIE5vdCBhbGwgd2FzIHdyaXR0ZW47IHJlZ2lzdGVyIHdyaXRlIGhhbmRsZXIuCiAgICAgICAgICAgIHNlbGYuX2xvb3AuX2FkZF93cml0ZXIoc2VsZi5fc29ja19mZCwgc2VsZi5fd3JpdGVfcmVhZHkpCgogICAgICAgICMgQWRkIGl0IHRvIHRoZSBidWZmZXIuCiAgICAgICAgc2VsZi5fYnVmZmVyLmV4dGVuZChkYXRhKQogICAgICAgIHNlbGYuX21heWJlX3BhdXNlX3Byb3RvY29sKCkKCiAgICBkZWYgX3dyaXRlX3JlYWR5KHNlbGYpOgogICAgICAgIGFzc2VydCBzZWxmLl9idWZmZXIsICdEYXRhIHNob3VsZCBub3QgYmUgZW1wdHknCgogICAgICAgIGlmIHNlbGYuX2Nvbm5fbG9zdDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBuID0gc2VsZi5fc29jay5zZW5kKHNlbGYuX2J1ZmZlcikKICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV93cml0ZXIoc2VsZi5fc29ja19mZCkKICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsZWFyKCkKICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoZXhjLCAnRmF0YWwgd3JpdGUgZXJyb3Igb24gc29ja2V0IHRyYW5zcG9ydCcpCiAgICAgICAgICAgIGlmIHNlbGYuX2VtcHR5X3dhaXRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX2VtcHR5X3dhaXRlci5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBuOgogICAgICAgICAgICAgICAgZGVsIHNlbGYuX2J1ZmZlcls6bl0KICAgICAgICAgICAgc2VsZi5fbWF5YmVfcmVzdW1lX3Byb3RvY29sKCkgICMgTWF5IGFwcGVuZCB0byBidWZmZXIuCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9idWZmZXI6CiAgICAgICAgICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfd3JpdGVyKHNlbGYuX3NvY2tfZmQpCiAgICAgICAgICAgICAgICBpZiBzZWxmLl9lbXB0eV93YWl0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3Npbmc6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbF9jb25uZWN0aW9uX2xvc3QoTm9uZSkKICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fZW9mOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2suc2h1dGRvd24oc29ja2V0LlNIVVRfV1IpCgogICAgZGVmIHdyaXRlX2VvZihzZWxmKToKICAgICAgICBpZiBzZWxmLl9jbG9zaW5nIG9yIHNlbGYuX2VvZjoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fZW9mID0gVHJ1ZQogICAgICAgIGlmIG5vdCBzZWxmLl9idWZmZXI6CiAgICAgICAgICAgIHNlbGYuX3NvY2suc2h1dGRvd24oc29ja2V0LlNIVVRfV1IpCgogICAgZGVmIGNhbl93cml0ZV9lb2Yoc2VsZik6CiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgX2NhbGxfY29ubmVjdGlvbl9sb3N0KHNlbGYsIGV4Yyk6CiAgICAgICAgc3VwZXIoKS5fY2FsbF9jb25uZWN0aW9uX2xvc3QoZXhjKQogICAgICAgIGlmIHNlbGYuX2VtcHR5X3dhaXRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyLnNldF9leGNlcHRpb24oCiAgICAgICAgICAgICAgICBDb25uZWN0aW9uRXJyb3IoIkNvbm5lY3Rpb24gaXMgY2xvc2VkIGJ5IHBlZXIiKSkKCiAgICBkZWYgX21ha2VfZW1wdHlfd2FpdGVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2VtcHR5X3dhaXRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJFbXB0eSB3YWl0ZXIgaXMgYWxyZWFkeSBzZXQiKQogICAgICAgIHNlbGYuX2VtcHR5X3dhaXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgaWYgbm90IHNlbGYuX2J1ZmZlcjoKICAgICAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKICAgICAgICByZXR1cm4gc2VsZi5fZW1wdHlfd2FpdGVyCgogICAgZGVmIF9yZXNldF9lbXB0eV93YWl0ZXIoc2VsZik6CiAgICAgICAgc2VsZi5fZW1wdHlfd2FpdGVyID0gTm9uZQoKCmNsYXNzIF9TZWxlY3RvckRhdGFncmFtVHJhbnNwb3J0KF9TZWxlY3RvclRyYW5zcG9ydCk6CgogICAgX2J1ZmZlcl9mYWN0b3J5ID0gY29sbGVjdGlvbnMuZGVxdWUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbG9vcCwgc29jaywgcHJvdG9jb2wsIGFkZHJlc3M9Tm9uZSwKICAgICAgICAgICAgICAgICB3YWl0ZXI9Tm9uZSwgZXh0cmE9Tm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsb29wLCBzb2NrLCBwcm90b2NvbCwgZXh0cmEpCiAgICAgICAgc2VsZi5fYWRkcmVzcyA9IGFkZHJlc3MKICAgICAgICBzZWxmLl9idWZmZXJfc2l6ZSA9IDAKICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9wcm90b2NvbC5jb25uZWN0aW9uX21hZGUsIHNlbGYpCiAgICAgICAgIyBvbmx5IHN0YXJ0IHJlYWRpbmcgd2hlbiBjb25uZWN0aW9uX21hZGUoKSBoYXMgYmVlbiBjYWxsZWQKICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9hZGRfcmVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tfZmQsIHNlbGYuX3JlYWRfcmVhZHkpCiAgICAgICAgaWYgd2FpdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIG9ubHkgd2FrZSB1cCB0aGUgd2FpdGVyIHdoZW4gY29ubmVjdGlvbl9tYWRlKCkgaGFzIGJlZW4gY2FsbGVkCiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKGZ1dHVyZXMuX3NldF9yZXN1bHRfdW5sZXNzX2NhbmNlbGxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGVyLCBOb25lKQoKICAgIGRlZiBnZXRfd3JpdGVfYnVmZmVyX3NpemUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcl9zaXplCgogICAgZGVmIF9yZWFkX3JlYWR5KHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2Nvbm5fbG9zdDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5fc29jay5yZWN2ZnJvbShzZWxmLm1heF9zaXplKQogICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgcGFzcwogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2wuZXJyb3JfcmVjZWl2ZWQoZXhjKQogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoZXhjLCAnRmF0YWwgcmVhZCBlcnJvciBvbiBkYXRhZ3JhbSB0cmFuc3BvcnQnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sLmRhdGFncmFtX3JlY2VpdmVkKGRhdGEsIGFkZHIpCgogICAgZGVmIHNlbmR0byhzZWxmLCBkYXRhLCBhZGRyPU5vbmUpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5LCBtZW1vcnl2aWV3KSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ2RhdGEgYXJndW1lbnQgbXVzdCBiZSBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJ25vdCB7dHlwZShkYXRhKS5fX25hbWVfXyFyfScpCiAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBzZWxmLl9hZGRyZXNzOgogICAgICAgICAgICBpZiBhZGRyIG5vdCBpbiAoTm9uZSwgc2VsZi5fYWRkcmVzcyk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgIGYnSW52YWxpZCBhZGRyZXNzOiBtdXN0IGJlIE5vbmUgb3Ige3NlbGYuX2FkZHJlc3N9JykKICAgICAgICAgICAgYWRkciA9IHNlbGYuX2FkZHJlc3MKCiAgICAgICAgaWYgc2VsZi5fY29ubl9sb3N0IGFuZCBzZWxmLl9hZGRyZXNzOgogICAgICAgICAgICBpZiBzZWxmLl9jb25uX2xvc3QgPj0gY29uc3RhbnRzLkxPR19USFJFU0hPTERfRk9SX0NPTk5MT1NUX1dSSVRFUzoKICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdzb2NrZXQuc2VuZCgpIHJhaXNlZCBleGNlcHRpb24uJykKICAgICAgICAgICAgc2VsZi5fY29ubl9sb3N0ICs9IDEKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIG5vdCBzZWxmLl9idWZmZXI6CiAgICAgICAgICAgICMgQXR0ZW1wdCB0byBzZW5kIGl0IHJpZ2h0IGF3YXkgZmlyc3QuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2V4dHJhWydwZWVybmFtZSddOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2suc2VuZChkYXRhKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9zb2NrLnNlbmR0byhkYXRhLCBhZGRyKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuX2FkZF93cml0ZXIoc2VsZi5fc29ja19mZCwgc2VsZi5fc2VuZHRvX3JlYWR5KQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9wcm90b2NvbC5lcnJvcl9yZWNlaXZlZChleGMpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcigKICAgICAgICAgICAgICAgICAgICBleGMsICdGYXRhbCB3cml0ZSBlcnJvciBvbiBkYXRhZ3JhbSB0cmFuc3BvcnQnKQogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgRW5zdXJlIHRoYXQgd2hhdCB3ZSBidWZmZXIgaXMgaW1tdXRhYmxlLgogICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQoKGJ5dGVzKGRhdGEpLCBhZGRyKSkKICAgICAgICBzZWxmLl9idWZmZXJfc2l6ZSArPSBsZW4oZGF0YSkKICAgICAgICBzZWxmLl9tYXliZV9wYXVzZV9wcm90b2NvbCgpCgogICAgZGVmIF9zZW5kdG9fcmVhZHkoc2VsZik6CiAgICAgICAgd2hpbGUgc2VsZi5fYnVmZmVyOgogICAgICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5fYnVmZmVyLnBvcGxlZnQoKQogICAgICAgICAgICBzZWxmLl9idWZmZXJfc2l6ZSAtPSBsZW4oZGF0YSkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgc2VsZi5fZXh0cmFbJ3BlZXJuYW1lJ106CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc29jay5zZW5kKGRhdGEpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2suc2VuZHRvKGRhdGEsIGFkZHIpCiAgICAgICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmRsZWZ0KChkYXRhLCBhZGRyKSkgICMgVHJ5IGFnYWluIGxhdGVyLgogICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX3NpemUgKz0gbGVuKGRhdGEpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9wcm90b2NvbC5lcnJvcl9yZWNlaXZlZChleGMpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcigKICAgICAgICAgICAgICAgICAgICBleGMsICdGYXRhbCB3cml0ZSBlcnJvciBvbiBkYXRhZ3JhbSB0cmFuc3BvcnQnKQogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHNlbGYuX21heWJlX3Jlc3VtZV9wcm90b2NvbCgpICAjIE1heSBhcHBlbmQgdG8gYnVmZmVyLgogICAgICAgIGlmIG5vdCBzZWxmLl9idWZmZXI6CiAgICAgICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV93cml0ZXIoc2VsZi5fc29ja19mZCkKICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxfY29ubmVjdGlvbl9sb3N0KE5vbmUpClBLAwQUAAAAAAACIKNWTw05k+J6AADiegAAEwAAAGFzeW5jaW8vc3NscHJvdG8ucHlpbXBvcnQgY29sbGVjdGlvbnMKaW1wb3J0IGVudW0KaW1wb3J0IHdhcm5pbmdzCnRyeToKICAgIGltcG9ydCBzc2wKZXhjZXB0IEltcG9ydEVycm9yOiAgIyBwcmFnbWE6IG5vIGNvdmVyCiAgICBzc2wgPSBOb25lCgpmcm9tIC4gaW1wb3J0IGNvbnN0YW50cwpmcm9tIC4gaW1wb3J0IGV4Y2VwdGlvbnMKZnJvbSAuIGltcG9ydCBwcm90b2NvbHMKZnJvbSAuIGltcG9ydCB0cmFuc3BvcnRzCmZyb20gLmxvZyBpbXBvcnQgbG9nZ2VyCgppZiBzc2wgaXMgbm90IE5vbmU6CiAgICBTU0xBZ2FpbkVycm9ycyA9IChzc2wuU1NMV2FudFJlYWRFcnJvciwgc3NsLlNTTFN5c2NhbGxFcnJvcikKCgpjbGFzcyBTU0xQcm90b2NvbFN0YXRlKGVudW0uRW51bSk6CiAgICBVTldSQVBQRUQgPSAiVU5XUkFQUEVEIgogICAgRE9fSEFORFNIQUtFID0gIkRPX0hBTkRTSEFLRSIKICAgIFdSQVBQRUQgPSAiV1JBUFBFRCIKICAgIEZMVVNISU5HID0gIkZMVVNISU5HIgogICAgU0hVVERPV04gPSAiU0hVVERPV04iCgoKY2xhc3MgQXBwUHJvdG9jb2xTdGF0ZShlbnVtLkVudW0pOgogICAgIyBUaGlzIHRyYWNrcyB0aGUgc3RhdGUgb2YgYXBwIHByb3RvY29sIChodHRwczovL2dpdC5pby9majU5UCk6CiAgICAjCiAgICAjICAgICBJTklUIC1jbS0+IENPTl9NQURFIFstZHIqLT5dIFstZXItPiBFT0Y/XSAtY2wtPiBDT05fTE9TVAogICAgIwogICAgIyAqIGNtOiBjb25uZWN0aW9uX21hZGUoKQogICAgIyAqIGRyOiBkYXRhX3JlY2VpdmVkKCkKICAgICMgKiBlcjogZW9mX3JlY2VpdmVkKCkKICAgICMgKiBjbDogY29ubmVjdGlvbl9sb3N0KCkKCiAgICBTVEFURV9JTklUID0gIlNUQVRFX0lOSVQiCiAgICBTVEFURV9DT05fTUFERSA9ICJTVEFURV9DT05fTUFERSIKICAgIFNUQVRFX0VPRiA9ICJTVEFURV9FT0YiCiAgICBTVEFURV9DT05fTE9TVCA9ICJTVEFURV9DT05fTE9TVCIKCgpkZWYgX2NyZWF0ZV90cmFuc3BvcnRfY29udGV4dChzZXJ2ZXJfc2lkZSwgc2VydmVyX2hvc3RuYW1lKToKICAgIGlmIHNlcnZlcl9zaWRlOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1NlcnZlciBzaWRlIFNTTCBuZWVkcyBhIHZhbGlkIFNTTENvbnRleHQnKQoKICAgICMgQ2xpZW50IHNpZGUgbWF5IHBhc3Mgc3NsPVRydWUgdG8gdXNlIGEgZGVmYXVsdAogICAgIyBjb250ZXh0OyBpbiB0aGF0IGNhc2UgdGhlIHNzbGNvbnRleHQgcGFzc2VkIGlzIE5vbmUuCiAgICAjIFRoZSBkZWZhdWx0IGlzIHNlY3VyZSBmb3IgY2xpZW50IGNvbm5lY3Rpb25zLgogICAgIyBQeXRob24gMy40KzogdXNlIHVwLXRvLWRhdGUgc3Ryb25nIHNldHRpbmdzLgogICAgc3NsY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkKICAgIGlmIG5vdCBzZXJ2ZXJfaG9zdG5hbWU6CiAgICAgICAgc3NsY29udGV4dC5jaGVja19ob3N0bmFtZSA9IEZhbHNlCiAgICByZXR1cm4gc3NsY29udGV4dAoKCmRlZiBhZGRfZmxvd2NvbnRyb2xfZGVmYXVsdHMoaGlnaCwgbG93LCBrYik6CiAgICBpZiBoaWdoIGlzIE5vbmU6CiAgICAgICAgaWYgbG93IGlzIE5vbmU6CiAgICAgICAgICAgIGhpID0ga2IgKiAxMDI0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgbG8gPSBsb3cKICAgICAgICAgICAgaGkgPSA0ICogbG8KICAgIGVsc2U6CiAgICAgICAgaGkgPSBoaWdoCiAgICBpZiBsb3cgaXMgTm9uZToKICAgICAgICBsbyA9IGhpIC8vIDQKICAgIGVsc2U6CiAgICAgICAgbG8gPSBsb3cKCiAgICBpZiBub3QgaGkgPj0gbG8gPj0gMDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdoaWdoICglcikgbXVzdCBiZSA+PSBsb3cgKCVyKSBtdXN0IGJlID49IDAnICUKICAgICAgICAgICAgICAgICAgICAgICAgIChoaSwgbG8pKQoKICAgIHJldHVybiBoaSwgbG8KCgpjbGFzcyBfU1NMUHJvdG9jb2xUcmFuc3BvcnQodHJhbnNwb3J0cy5fRmxvd0NvbnRyb2xNaXhpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydHMuVHJhbnNwb3J0KToKCiAgICBfc3RhcnRfdGxzX2NvbXBhdGlibGUgPSBUcnVlCiAgICBfc2VuZGZpbGVfY29tcGF0aWJsZSA9IGNvbnN0YW50cy5fU2VuZGZpbGVNb2RlLkZBTExCQUNLCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvb3AsIHNzbF9wcm90b2NvbCk6CiAgICAgICAgc2VsZi5fbG9vcCA9IGxvb3AKICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wgPSBzc2xfcHJvdG9jb2wKICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQoKICAgIGRlZiBnZXRfZXh0cmFfaW5mbyhzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgogICAgICAgICIiIkdldCBvcHRpb25hbCB0cmFuc3BvcnQgaW5mb3JtYXRpb24uIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3NzbF9wcm90b2NvbC5fZ2V0X2V4dHJhX2luZm8obmFtZSwgZGVmYXVsdCkKCiAgICBkZWYgc2V0X3Byb3RvY29sKHNlbGYsIHByb3RvY29sKToKICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX3NldF9hcHBfcHJvdG9jb2wocHJvdG9jb2wpCgogICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc3NsX3Byb3RvY29sLl9hcHBfcHJvdG9jb2wKCiAgICBkZWYgaXNfY2xvc2luZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2xvc2VkCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkNsb3NlIHRoZSB0cmFuc3BvcnQuCgogICAgICAgIEJ1ZmZlcmVkIGRhdGEgd2lsbCBiZSBmbHVzaGVkIGFzeW5jaHJvbm91c2x5LiAgTm8gbW9yZSBkYXRhCiAgICAgICAgd2lsbCBiZSByZWNlaXZlZC4gIEFmdGVyIGFsbCBidWZmZXJlZCBkYXRhIGlzIGZsdXNoZWQsIHRoZQogICAgICAgIHByb3RvY29sJ3MgY29ubmVjdGlvbl9sb3N0KCkgbWV0aG9kIHdpbGwgKGV2ZW50dWFsbHkpIGNhbGxlZAogICAgICAgIHdpdGggTm9uZSBhcyBpdHMgYXJndW1lbnQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZDoKICAgICAgICAgICAgc2VsZi5fY2xvc2VkID0gVHJ1ZQogICAgICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX3N0YXJ0X3NodXRkb3duKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wgPSBOb25lCgogICAgZGVmIF9fZGVsX18oc2VsZiwgX3dhcm5pbmdzPXdhcm5pbmdzKToKICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCiAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgInVuY2xvc2VkIHRyYW5zcG9ydCA8YXN5bmNpby5fU1NMUHJvdG9jb2xUcmFuc3BvcnQgIgogICAgICAgICAgICAgICAgIm9iamVjdD4iLCBSZXNvdXJjZVdhcm5pbmcpCgogICAgZGVmIGlzX3JlYWRpbmcoc2VsZik6CiAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9zc2xfcHJvdG9jb2wuX2FwcF9yZWFkaW5nX3BhdXNlZAoKICAgIGRlZiBwYXVzZV9yZWFkaW5nKHNlbGYpOgogICAgICAgICIiIlBhdXNlIHRoZSByZWNlaXZpbmcgZW5kLgoKICAgICAgICBObyBkYXRhIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBwcm90b2NvbCdzIGRhdGFfcmVjZWl2ZWQoKQogICAgICAgIG1ldGhvZCB1bnRpbCByZXN1bWVfcmVhZGluZygpIGlzIGNhbGxlZC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX3BhdXNlX3JlYWRpbmcoKQoKICAgIGRlZiByZXN1bWVfcmVhZGluZyhzZWxmKToKICAgICAgICAiIiJSZXN1bWUgdGhlIHJlY2VpdmluZyBlbmQuCgogICAgICAgIERhdGEgcmVjZWl2ZWQgd2lsbCBvbmNlIGFnYWluIGJlIHBhc3NlZCB0byB0aGUgcHJvdG9jb2wncwogICAgICAgIGRhdGFfcmVjZWl2ZWQoKSBtZXRob2QuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fc3NsX3Byb3RvY29sLl9yZXN1bWVfcmVhZGluZygpCgogICAgZGVmIHNldF93cml0ZV9idWZmZXJfbGltaXRzKHNlbGYsIGhpZ2g9Tm9uZSwgbG93PU5vbmUpOgogICAgICAgICIiIlNldCB0aGUgaGlnaC0gYW5kIGxvdy13YXRlciBsaW1pdHMgZm9yIHdyaXRlIGZsb3cgY29udHJvbC4KCiAgICAgICAgVGhlc2UgdHdvIHZhbHVlcyBjb250cm9sIHdoZW4gdG8gY2FsbCB0aGUgcHJvdG9jb2wncwogICAgICAgIHBhdXNlX3dyaXRpbmcoKSBhbmQgcmVzdW1lX3dyaXRpbmcoKSBtZXRob2RzLiAgSWYgc3BlY2lmaWVkLAogICAgICAgIHRoZSBsb3ctd2F0ZXIgbGltaXQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCiAgICAgICAgaGlnaC13YXRlciBsaW1pdC4gIE5laXRoZXIgdmFsdWUgY2FuIGJlIG5lZ2F0aXZlLgoKICAgICAgICBUaGUgZGVmYXVsdHMgYXJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljLiAgSWYgb25seSB0aGUKICAgICAgICBoaWdoLXdhdGVyIGxpbWl0IGlzIGdpdmVuLCB0aGUgbG93LXdhdGVyIGxpbWl0IGRlZmF1bHRzIHRvIGFuCiAgICAgICAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZQogICAgICAgIGhpZ2gtd2F0ZXIgbGltaXQuICBTZXR0aW5nIGhpZ2ggdG8gemVybyBmb3JjZXMgbG93IHRvIHplcm8gYXMKICAgICAgICB3ZWxsLCBhbmQgY2F1c2VzIHBhdXNlX3dyaXRpbmcoKSB0byBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlCiAgICAgICAgYnVmZmVyIGJlY29tZXMgbm9uLWVtcHR5LiAgU2V0dGluZyBsb3cgdG8gemVybyBjYXVzZXMKICAgICAgICByZXN1bWVfd3JpdGluZygpIHRvIGJlIGNhbGxlZCBvbmx5IG9uY2UgdGhlIGJ1ZmZlciBpcyBlbXB0eS4KICAgICAgICBVc2Ugb2YgemVybyBmb3IgZWl0aGVyIGxpbWl0IGlzIGdlbmVyYWxseSBzdWItb3B0aW1hbCBhcyBpdAogICAgICAgIHJlZHVjZXMgb3Bwb3J0dW5pdGllcyBmb3IgZG9pbmcgSS9PIGFuZCBjb21wdXRhdGlvbgogICAgICAgIGNvbmN1cnJlbnRseS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX3NldF93cml0ZV9idWZmZXJfbGltaXRzKGhpZ2gsIGxvdykKICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX2NvbnRyb2xfYXBwX3dyaXRpbmcoKQoKICAgIGRlZiBnZXRfd3JpdGVfYnVmZmVyX2xpbWl0cyhzZWxmKToKICAgICAgICByZXR1cm4gKHNlbGYuX3NzbF9wcm90b2NvbC5fb3V0Z29pbmdfbG93X3dhdGVyLAogICAgICAgICAgICAgICAgc2VsZi5fc3NsX3Byb3RvY29sLl9vdXRnb2luZ19oaWdoX3dhdGVyKQoKICAgIGRlZiBnZXRfd3JpdGVfYnVmZmVyX3NpemUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHdyaXRlIGJ1ZmZlcnMuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3NzbF9wcm90b2NvbC5fZ2V0X3dyaXRlX2J1ZmZlcl9zaXplKCkKCiAgICBkZWYgc2V0X3JlYWRfYnVmZmVyX2xpbWl0cyhzZWxmLCBoaWdoPU5vbmUsIGxvdz1Ob25lKToKICAgICAgICAiIiJTZXQgdGhlIGhpZ2gtIGFuZCBsb3ctd2F0ZXIgbGltaXRzIGZvciByZWFkIGZsb3cgY29udHJvbC4KCiAgICAgICAgVGhlc2UgdHdvIHZhbHVlcyBjb250cm9sIHdoZW4gdG8gY2FsbCB0aGUgdXBzdHJlYW0gdHJhbnNwb3J0J3MKICAgICAgICBwYXVzZV9yZWFkaW5nKCkgYW5kIHJlc3VtZV9yZWFkaW5nKCkgbWV0aG9kcy4gIElmIHNwZWNpZmllZCwKICAgICAgICB0aGUgbG93LXdhdGVyIGxpbWl0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZQogICAgICAgIGhpZ2gtd2F0ZXIgbGltaXQuICBOZWl0aGVyIHZhbHVlIGNhbiBiZSBuZWdhdGl2ZS4KCiAgICAgICAgVGhlIGRlZmF1bHRzIGFyZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYy4gIElmIG9ubHkgdGhlCiAgICAgICAgaGlnaC13YXRlciBsaW1pdCBpcyBnaXZlbiwgdGhlIGxvdy13YXRlciBsaW1pdCBkZWZhdWx0cyB0byBhbgogICAgICAgIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUKICAgICAgICBoaWdoLXdhdGVyIGxpbWl0LiAgU2V0dGluZyBoaWdoIHRvIHplcm8gZm9yY2VzIGxvdyB0byB6ZXJvIGFzCiAgICAgICAgd2VsbCwgYW5kIGNhdXNlcyBwYXVzZV9yZWFkaW5nKCkgdG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZQogICAgICAgIGJ1ZmZlciBiZWNvbWVzIG5vbi1lbXB0eS4gIFNldHRpbmcgbG93IHRvIHplcm8gY2F1c2VzCiAgICAgICAgcmVzdW1lX3JlYWRpbmcoKSB0byBiZSBjYWxsZWQgb25seSBvbmNlIHRoZSBidWZmZXIgaXMgZW1wdHkuCiAgICAgICAgVXNlIG9mIHplcm8gZm9yIGVpdGhlciBsaW1pdCBpcyBnZW5lcmFsbHkgc3ViLW9wdGltYWwgYXMgaXQKICAgICAgICByZWR1Y2VzIG9wcG9ydHVuaXRpZXMgZm9yIGRvaW5nIEkvTyBhbmQgY29tcHV0YXRpb24KICAgICAgICBjb25jdXJyZW50bHkuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fc3NsX3Byb3RvY29sLl9zZXRfcmVhZF9idWZmZXJfbGltaXRzKGhpZ2gsIGxvdykKICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX2NvbnRyb2xfc3NsX3JlYWRpbmcoKQoKICAgIGRlZiBnZXRfcmVhZF9idWZmZXJfbGltaXRzKHNlbGYpOgogICAgICAgIHJldHVybiAoc2VsZi5fc3NsX3Byb3RvY29sLl9pbmNvbWluZ19sb3dfd2F0ZXIsCiAgICAgICAgICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX2luY29taW5nX2hpZ2hfd2F0ZXIpCgogICAgZGVmIGdldF9yZWFkX2J1ZmZlcl9zaXplKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIHRoZSByZWFkIGJ1ZmZlci4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fc3NsX3Byb3RvY29sLl9nZXRfcmVhZF9idWZmZXJfc2l6ZSgpCgogICAgQHByb3BlcnR5CiAgICBkZWYgX3Byb3RvY29sX3BhdXNlZChzZWxmKToKICAgICAgICAjIFJlcXVpcmVkIGZvciBzZW5kZmlsZSBmYWxsYmFjayBwYXVzZV93cml0aW5nL3Jlc3VtZV93cml0aW5nIGxvZ2ljCiAgICAgICAgcmV0dXJuIHNlbGYuX3NzbF9wcm90b2NvbC5fYXBwX3dyaXRpbmdfcGF1c2VkCgogICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgICIiIldyaXRlIHNvbWUgZGF0YSBieXRlcyB0byB0aGUgdHJhbnNwb3J0LgoKICAgICAgICBUaGlzIGRvZXMgbm90IGJsb2NrOyBpdCBidWZmZXJzIHRoZSBkYXRhIGFuZCBhcnJhbmdlcyBmb3IgaXQKICAgICAgICB0byBiZSBzZW50IG91dCBhc3luY2hyb25vdXNseS4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSwgbWVtb3J5dmlldykpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJkYXRhOiBleHBlY3RpbmcgYSBieXRlcy1saWtlIGluc3RhbmNlLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmImdvdCB7dHlwZShkYXRhKS5fX25hbWVfX30iKQogICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX3dyaXRlX2FwcGRhdGEoKGRhdGEsKSkKCiAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBsaXN0X29mX2RhdGEpOgogICAgICAgICIiIldyaXRlIGEgbGlzdCAob3IgYW55IGl0ZXJhYmxlKSBvZiBkYXRhIGJ5dGVzIHRvIHRoZSB0cmFuc3BvcnQuCgogICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNvbmNhdGVuYXRlcyB0aGUgYXJndW1lbnRzIGFuZAogICAgICAgIGNhbGxzIHdyaXRlKCkgb24gdGhlIHJlc3VsdC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX3dyaXRlX2FwcGRhdGEobGlzdF9vZl9kYXRhKQoKICAgIGRlZiB3cml0ZV9lb2Yoc2VsZik6CiAgICAgICAgIiIiQ2xvc2UgdGhlIHdyaXRlIGVuZCBhZnRlciBmbHVzaGluZyBidWZmZXJlZCBkYXRhLgoKICAgICAgICBUaGlzIHJhaXNlcyA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCByaWdodCBub3cuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjYW5fd3JpdGVfZW9mKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoaXMgdHJhbnNwb3J0IHN1cHBvcnRzIHdyaXRlX2VvZigpLCBGYWxzZSBpZiBub3QuIiIiCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIGFib3J0KHNlbGYpOgogICAgICAgICIiIkNsb3NlIHRoZSB0cmFuc3BvcnQgaW1tZWRpYXRlbHkuCgogICAgICAgIEJ1ZmZlcmVkIGRhdGEgd2lsbCBiZSBsb3N0LiAgTm8gbW9yZSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuCiAgICAgICAgVGhlIHByb3RvY29sJ3MgY29ubmVjdGlvbl9sb3N0KCkgbWV0aG9kIHdpbGwgKGV2ZW50dWFsbHkpIGJlCiAgICAgICAgY2FsbGVkIHdpdGggTm9uZSBhcyBpdHMgYXJndW1lbnQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2xvc2VkID0gVHJ1ZQogICAgICAgIHNlbGYuX3NzbF9wcm90b2NvbC5fYWJvcnQoKQoKICAgIGRlZiBfZm9yY2VfY2xvc2Uoc2VsZiwgZXhjKToKICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCiAgICAgICAgc2VsZi5fc3NsX3Byb3RvY29sLl9hYm9ydChleGMpCgogICAgZGVmIF90ZXN0X19hcHBlbmRfd3JpdGVfYmFja2xvZyhzZWxmLCBkYXRhKToKICAgICAgICAjIGZvciB0ZXN0IG9ubHkKICAgICAgICBzZWxmLl9zc2xfcHJvdG9jb2wuX3dyaXRlX2JhY2tsb2cuYXBwZW5kKGRhdGEpCiAgICAgICAgc2VsZi5fc3NsX3Byb3RvY29sLl93cml0ZV9idWZmZXJfc2l6ZSArPSBsZW4oZGF0YSkKCgpjbGFzcyBTU0xQcm90b2NvbChwcm90b2NvbHMuQnVmZmVyZWRQcm90b2NvbCk6CiAgICBtYXhfc2l6ZSA9IDI1NiAqIDEwMjQgICAjIEJ1ZmZlciBzaXplIHBhc3NlZCB0byByZWFkKCkKCiAgICBfaGFuZHNoYWtlX3N0YXJ0X3RpbWUgPSBOb25lCiAgICBfaGFuZHNoYWtlX3RpbWVvdXRfaGFuZGxlID0gTm9uZQogICAgX3NodXRkb3duX3RpbWVvdXRfaGFuZGxlID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb29wLCBhcHBfcHJvdG9jb2wsIHNzbGNvbnRleHQsIHdhaXRlciwKICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgY2FsbF9jb25uZWN0aW9uX21hZGU9VHJ1ZSwKICAgICAgICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9Tm9uZSwKICAgICAgICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lKToKICAgICAgICBpZiBzc2wgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzdGRsaWIgc3NsIG1vZHVsZSBub3QgYXZhaWxhYmxlIikKCiAgICAgICAgc2VsZi5fc3NsX2J1ZmZlciA9IGJ5dGVhcnJheShzZWxmLm1heF9zaXplKQogICAgICAgIHNlbGYuX3NzbF9idWZmZXJfdmlldyA9IG1lbW9yeXZpZXcoc2VsZi5fc3NsX2J1ZmZlcikKCiAgICAgICAgaWYgc3NsX2hhbmRzaGFrZV90aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dCA9IGNvbnN0YW50cy5TU0xfSEFORFNIQUtFX1RJTUVPVVQKICAgICAgICBlbGlmIHNzbF9oYW5kc2hha2VfdGltZW91dCA8PSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgZiJzc2xfaGFuZHNoYWtlX3RpbWVvdXQgc2hvdWxkIGJlIGEgcG9zaXRpdmUgbnVtYmVyLCAiCiAgICAgICAgICAgICAgICBmImdvdCB7c3NsX2hhbmRzaGFrZV90aW1lb3V0fSIpCiAgICAgICAgaWYgc3NsX3NodXRkb3duX3RpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgc3NsX3NodXRkb3duX3RpbWVvdXQgPSBjb25zdGFudHMuU1NMX1NIVVRET1dOX1RJTUVPVVQKICAgICAgICBlbGlmIHNzbF9zaHV0ZG93bl90aW1lb3V0IDw9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICBmInNzbF9zaHV0ZG93bl90aW1lb3V0IHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlciwgIgogICAgICAgICAgICAgICAgZiJnb3Qge3NzbF9zaHV0ZG93bl90aW1lb3V0fSIpCgogICAgICAgIGlmIG5vdCBzc2xjb250ZXh0OgogICAgICAgICAgICBzc2xjb250ZXh0ID0gX2NyZWF0ZV90cmFuc3BvcnRfY29udGV4dCgKICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlLCBzZXJ2ZXJfaG9zdG5hbWUpCgogICAgICAgIHNlbGYuX3NlcnZlcl9zaWRlID0gc2VydmVyX3NpZGUKICAgICAgICBpZiBzZXJ2ZXJfaG9zdG5hbWUgYW5kIG5vdCBzZXJ2ZXJfc2lkZToKICAgICAgICAgICAgc2VsZi5fc2VydmVyX2hvc3RuYW1lID0gc2VydmVyX2hvc3RuYW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fc2VydmVyX2hvc3RuYW1lID0gTm9uZQogICAgICAgIHNlbGYuX3NzbGNvbnRleHQgPSBzc2xjb250ZXh0CiAgICAgICAgIyBTU0wtc3BlY2lmaWMgZXh0cmEgaW5mby4gTW9yZSBpbmZvIGFyZSBzZXQgd2hlbiB0aGUgaGFuZHNoYWtlCiAgICAgICAgIyBjb21wbGV0ZXMuCiAgICAgICAgc2VsZi5fZXh0cmEgPSBkaWN0KHNzbGNvbnRleHQ9c3NsY29udGV4dCkKCiAgICAgICAgIyBBcHAgZGF0YSB3cml0ZSBidWZmZXJpbmcKICAgICAgICBzZWxmLl93cml0ZV9iYWNrbG9nID0gY29sbGVjdGlvbnMuZGVxdWUoKQogICAgICAgIHNlbGYuX3dyaXRlX2J1ZmZlcl9zaXplID0gMAoKICAgICAgICBzZWxmLl93YWl0ZXIgPSB3YWl0ZXIKICAgICAgICBzZWxmLl9sb29wID0gbG9vcAogICAgICAgIHNlbGYuX3NldF9hcHBfcHJvdG9jb2woYXBwX3Byb3RvY29sKQogICAgICAgIHNlbGYuX2FwcF90cmFuc3BvcnQgPSBOb25lCiAgICAgICAgc2VsZi5fYXBwX3RyYW5zcG9ydF9jcmVhdGVkID0gRmFsc2UKICAgICAgICAjIHRyYW5zcG9ydCwgZXg6IFNlbGVjdG9yU29ja2V0VHJhbnNwb3J0CiAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0gTm9uZQogICAgICAgIHNlbGYuX3NzbF9oYW5kc2hha2VfdGltZW91dCA9IHNzbF9oYW5kc2hha2VfdGltZW91dAogICAgICAgIHNlbGYuX3NzbF9zaHV0ZG93bl90aW1lb3V0ID0gc3NsX3NodXRkb3duX3RpbWVvdXQKICAgICAgICAjIFNTTCBhbmQgc3RhdGUgbWFjaGluZQogICAgICAgIHNlbGYuX2luY29taW5nID0gc3NsLk1lbW9yeUJJTygpCiAgICAgICAgc2VsZi5fb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKICAgICAgICBzZWxmLl9zdGF0ZSA9IFNTTFByb3RvY29sU3RhdGUuVU5XUkFQUEVECiAgICAgICAgc2VsZi5fY29ubl9sb3N0ID0gMCAgIyBTZXQgd2hlbiBjb25uZWN0aW9uX2xvc3QgY2FsbGVkCiAgICAgICAgaWYgY2FsbF9jb25uZWN0aW9uX21hZGU6CiAgICAgICAgICAgIHNlbGYuX2FwcF9zdGF0ZSA9IEFwcFByb3RvY29sU3RhdGUuU1RBVEVfSU5JVAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2FwcF9zdGF0ZSA9IEFwcFByb3RvY29sU3RhdGUuU1RBVEVfQ09OX01BREUKICAgICAgICBzZWxmLl9zc2xvYmogPSBzZWxmLl9zc2xjb250ZXh0LndyYXBfYmlvKAogICAgICAgICAgICBzZWxmLl9pbmNvbWluZywgc2VsZi5fb3V0Z29pbmcsCiAgICAgICAgICAgIHNlcnZlcl9zaWRlPXNlbGYuX3NlcnZlcl9zaWRlLAogICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c2VsZi5fc2VydmVyX2hvc3RuYW1lKQoKICAgICAgICAjIEZsb3cgQ29udHJvbAoKICAgICAgICBzZWxmLl9zc2xfd3JpdGluZ19wYXVzZWQgPSBGYWxzZQoKICAgICAgICBzZWxmLl9hcHBfcmVhZGluZ19wYXVzZWQgPSBGYWxzZQoKICAgICAgICBzZWxmLl9zc2xfcmVhZGluZ19wYXVzZWQgPSBGYWxzZQogICAgICAgIHNlbGYuX2luY29taW5nX2hpZ2hfd2F0ZXIgPSAwCiAgICAgICAgc2VsZi5faW5jb21pbmdfbG93X3dhdGVyID0gMAogICAgICAgIHNlbGYuX3NldF9yZWFkX2J1ZmZlcl9saW1pdHMoKQogICAgICAgIHNlbGYuX2VvZl9yZWNlaXZlZCA9IEZhbHNlCgogICAgICAgIHNlbGYuX2FwcF93cml0aW5nX3BhdXNlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fb3V0Z29pbmdfaGlnaF93YXRlciA9IDAKICAgICAgICBzZWxmLl9vdXRnb2luZ19sb3dfd2F0ZXIgPSAwCiAgICAgICAgc2VsZi5fc2V0X3dyaXRlX2J1ZmZlcl9saW1pdHMoKQogICAgICAgIHNlbGYuX2dldF9hcHBfdHJhbnNwb3J0KCkKCiAgICBkZWYgX3NldF9hcHBfcHJvdG9jb2woc2VsZiwgYXBwX3Byb3RvY29sKToKICAgICAgICBzZWxmLl9hcHBfcHJvdG9jb2wgPSBhcHBfcHJvdG9jb2wKICAgICAgICAjIE1ha2UgZmFzdCBoYXNhdHRyIGNoZWNrIGZpcnN0CiAgICAgICAgaWYgKGhhc2F0dHIoYXBwX3Byb3RvY29sLCAnZ2V0X2J1ZmZlcicpIGFuZAogICAgICAgICAgICAgICAgaXNpbnN0YW5jZShhcHBfcHJvdG9jb2wsIHByb3RvY29scy5CdWZmZXJlZFByb3RvY29sKSk6CiAgICAgICAgICAgIHNlbGYuX2FwcF9wcm90b2NvbF9nZXRfYnVmZmVyID0gYXBwX3Byb3RvY29sLmdldF9idWZmZXIKICAgICAgICAgICAgc2VsZi5fYXBwX3Byb3RvY29sX2J1ZmZlcl91cGRhdGVkID0gYXBwX3Byb3RvY29sLmJ1ZmZlcl91cGRhdGVkCiAgICAgICAgICAgIHNlbGYuX2FwcF9wcm90b2NvbF9pc19idWZmZXIgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fYXBwX3Byb3RvY29sX2lzX2J1ZmZlciA9IEZhbHNlCgogICAgZGVmIF93YWtldXBfd2FpdGVyKHNlbGYsIGV4Yz1Ob25lKToKICAgICAgICBpZiBzZWxmLl93YWl0ZXIgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbm90IHNlbGYuX3dhaXRlci5jYW5jZWxsZWQoKToKICAgICAgICAgICAgaWYgZXhjIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fd2FpdGVyLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKICAgICAgICBzZWxmLl93YWl0ZXIgPSBOb25lCgogICAgZGVmIF9nZXRfYXBwX3RyYW5zcG9ydChzZWxmKToKICAgICAgICBpZiBzZWxmLl9hcHBfdHJhbnNwb3J0IGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYuX2FwcF90cmFuc3BvcnRfY3JlYXRlZDoKICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ3JlYXRpbmcgX1NTTFByb3RvY29sVHJhbnNwb3J0IHR3aWNlJykKICAgICAgICAgICAgc2VsZi5fYXBwX3RyYW5zcG9ydCA9IF9TU0xQcm90b2NvbFRyYW5zcG9ydChzZWxmLl9sb29wLCBzZWxmKQogICAgICAgICAgICBzZWxmLl9hcHBfdHJhbnNwb3J0X2NyZWF0ZWQgPSBUcnVlCiAgICAgICAgcmV0dXJuIHNlbGYuX2FwcF90cmFuc3BvcnQKCiAgICBkZWYgY29ubmVjdGlvbl9tYWRlKHNlbGYsIHRyYW5zcG9ydCk6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gdGhlIGxvdy1sZXZlbCBjb25uZWN0aW9uIGlzIG1hZGUuCgogICAgICAgIFN0YXJ0IHRoZSBTU0wgaGFuZHNoYWtlLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IHRyYW5zcG9ydAogICAgICAgIHNlbGYuX3N0YXJ0X2hhbmRzaGFrZSgpCgogICAgZGVmIGNvbm5lY3Rpb25fbG9zdChzZWxmLCBleGMpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIHRoZSBsb3ctbGV2ZWwgY29ubmVjdGlvbiBpcyBsb3N0IG9yIGNsb3NlZC4KCiAgICAgICAgVGhlIGFyZ3VtZW50IGlzIGFuIGV4Y2VwdGlvbiBvYmplY3Qgb3IgTm9uZSAodGhlIGxhdHRlcgogICAgICAgIG1lYW5pbmcgYSByZWd1bGFyIEVPRiBpcyByZWNlaXZlZCBvciB0aGUgY29ubmVjdGlvbiB3YXMKICAgICAgICBhYm9ydGVkIG9yIGNsb3NlZCkuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fd3JpdGVfYmFja2xvZy5jbGVhcigpCiAgICAgICAgc2VsZi5fb3V0Z29pbmcucmVhZCgpCiAgICAgICAgc2VsZi5fY29ubl9sb3N0ICs9IDEKCiAgICAgICAgIyBKdXN0IG1hcmsgdGhlIGFwcCB0cmFuc3BvcnQgYXMgY2xvc2VkIHNvIHRoYXQgaXRzIF9fZGVhbGxvY19fCiAgICAgICAgIyBkb2Vzbid0IGNvbXBsYWluLgogICAgICAgIGlmIHNlbGYuX2FwcF90cmFuc3BvcnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2FwcF90cmFuc3BvcnQuX2Nsb3NlZCA9IFRydWUKCiAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gU1NMUHJvdG9jb2xTdGF0ZS5ET19IQU5EU0hBS0U6CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIHNlbGYuX2FwcF9zdGF0ZSA9PSBBcHBQcm90b2NvbFN0YXRlLlNUQVRFX0NPTl9NQURFIG9yCiAgICAgICAgICAgICAgICBzZWxmLl9hcHBfc3RhdGUgPT0gQXBwUHJvdG9jb2xTdGF0ZS5TVEFURV9FT0YKICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIHNlbGYuX2FwcF9zdGF0ZSA9IEFwcFByb3RvY29sU3RhdGUuU1RBVEVfQ09OX0xPU1QKICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX2FwcF9wcm90b2NvbC5jb25uZWN0aW9uX2xvc3QsIGV4YykKICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU1NMUHJvdG9jb2xTdGF0ZS5VTldSQVBQRUQpCiAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0gTm9uZQogICAgICAgIHNlbGYuX2FwcF90cmFuc3BvcnQgPSBOb25lCiAgICAgICAgc2VsZi5fYXBwX3Byb3RvY29sID0gTm9uZQogICAgICAgIHNlbGYuX3dha2V1cF93YWl0ZXIoZXhjKQoKICAgICAgICBpZiBzZWxmLl9zaHV0ZG93bl90aW1lb3V0X2hhbmRsZToKICAgICAgICAgICAgc2VsZi5fc2h1dGRvd25fdGltZW91dF9oYW5kbGUuY2FuY2VsKCkKICAgICAgICAgICAgc2VsZi5fc2h1dGRvd25fdGltZW91dF9oYW5kbGUgPSBOb25lCiAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlX3RpbWVvdXRfaGFuZGxlOgogICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfdGltZW91dF9oYW5kbGUuY2FuY2VsKCkKICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX3RpbWVvdXRfaGFuZGxlID0gTm9uZQoKICAgIGRlZiBnZXRfYnVmZmVyKHNlbGYsIG4pOgogICAgICAgIHdhbnQgPSBuCiAgICAgICAgaWYgd2FudCA8PSAwIG9yIHdhbnQgPiBzZWxmLm1heF9zaXplOgogICAgICAgICAgICB3YW50ID0gc2VsZi5tYXhfc2l6ZQogICAgICAgIGlmIGxlbihzZWxmLl9zc2xfYnVmZmVyKSA8IHdhbnQ6CiAgICAgICAgICAgIHNlbGYuX3NzbF9idWZmZXIgPSBieXRlYXJyYXkod2FudCkKICAgICAgICAgICAgc2VsZi5fc3NsX2J1ZmZlcl92aWV3ID0gbWVtb3J5dmlldyhzZWxmLl9zc2xfYnVmZmVyKQogICAgICAgIHJldHVybiBzZWxmLl9zc2xfYnVmZmVyX3ZpZXcKCiAgICBkZWYgYnVmZmVyX3VwZGF0ZWQoc2VsZiwgbmJ5dGVzKToKICAgICAgICBzZWxmLl9pbmNvbWluZy53cml0ZShzZWxmLl9zc2xfYnVmZmVyX3ZpZXdbOm5ieXRlc10pCgogICAgICAgIGlmIHNlbGYuX3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuRE9fSEFORFNIQUtFOgogICAgICAgICAgICBzZWxmLl9kb19oYW5kc2hha2UoKQoKICAgICAgICBlbGlmIHNlbGYuX3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuV1JBUFBFRDoKICAgICAgICAgICAgc2VsZi5fZG9fcmVhZCgpCgogICAgICAgIGVsaWYgc2VsZi5fc3RhdGUgPT0gU1NMUHJvdG9jb2xTdGF0ZS5GTFVTSElORzoKICAgICAgICAgICAgc2VsZi5fZG9fZmx1c2goKQoKICAgICAgICBlbGlmIHNlbGYuX3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuU0hVVERPV046CiAgICAgICAgICAgIHNlbGYuX2RvX3NodXRkb3duKCkKCiAgICBkZWYgZW9mX3JlY2VpdmVkKHNlbGYpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIHRoZSBvdGhlciBlbmQgb2YgdGhlIGxvdy1sZXZlbCBzdHJlYW0KICAgICAgICBpcyBoYWxmLWNsb3NlZC4KCiAgICAgICAgSWYgdGhpcyByZXR1cm5zIGEgZmFsc2UgdmFsdWUgKGluY2x1ZGluZyBOb25lKSwgdGhlIHRyYW5zcG9ydAogICAgICAgIHdpbGwgY2xvc2UgaXRzZWxmLiAgSWYgaXQgcmV0dXJucyBhIHRydWUgdmFsdWUsIGNsb3NpbmcgdGhlCiAgICAgICAgdHJhbnNwb3J0IGlzIHVwIHRvIHRoZSBwcm90b2NvbC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9lb2ZfcmVjZWl2ZWQgPSBUcnVlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlciByZWNlaXZlZCBFT0YiLCBzZWxmKQoKICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gU1NMUHJvdG9jb2xTdGF0ZS5ET19IQU5EU0hBS0U6CiAgICAgICAgICAgICAgICBzZWxmLl9vbl9oYW5kc2hha2VfY29tcGxldGUoQ29ubmVjdGlvblJlc2V0RXJyb3IpCgogICAgICAgICAgICBlbGlmIHNlbGYuX3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuV1JBUFBFRDoKICAgICAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTU0xQcm90b2NvbFN0YXRlLkZMVVNISU5HKQogICAgICAgICAgICAgICAgaWYgc2VsZi5fYXBwX3JlYWRpbmdfcGF1c2VkOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2RvX2ZsdXNoKCkKCiAgICAgICAgICAgIGVsaWYgc2VsZi5fc3RhdGUgPT0gU1NMUHJvdG9jb2xTdGF0ZS5GTFVTSElORzoKICAgICAgICAgICAgICAgIHNlbGYuX2RvX3dyaXRlKCkKICAgICAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTU0xQcm90b2NvbFN0YXRlLlNIVVRET1dOKQogICAgICAgICAgICAgICAgc2VsZi5fZG9fc2h1dGRvd24oKQoKICAgICAgICAgICAgZWxpZiBzZWxmLl9zdGF0ZSA9PSBTU0xQcm90b2NvbFN0YXRlLlNIVVRET1dOOgogICAgICAgICAgICAgICAgc2VsZi5fZG9fc2h1dGRvd24oKQoKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBzZWxmLl90cmFuc3BvcnQuY2xvc2UoKQogICAgICAgICAgICByYWlzZQoKICAgIGRlZiBfZ2V0X2V4dHJhX2luZm8oc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKICAgICAgICBpZiBuYW1lIGluIHNlbGYuX2V4dHJhOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFbbmFtZV0KICAgICAgICBlbGlmIHNlbGYuX3RyYW5zcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbyhuYW1lLCBkZWZhdWx0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CgogICAgZGVmIF9zZXRfc3RhdGUoc2VsZiwgbmV3X3N0YXRlKToKICAgICAgICBhbGxvd2VkID0gRmFsc2UKCiAgICAgICAgaWYgbmV3X3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuVU5XUkFQUEVEOgogICAgICAgICAgICBhbGxvd2VkID0gVHJ1ZQoKICAgICAgICBlbGlmICgKICAgICAgICAgICAgc2VsZi5fc3RhdGUgPT0gU1NMUHJvdG9jb2xTdGF0ZS5VTldSQVBQRUQgYW5kCiAgICAgICAgICAgIG5ld19zdGF0ZSA9PSBTU0xQcm90b2NvbFN0YXRlLkRPX0hBTkRTSEFLRQogICAgICAgICk6CiAgICAgICAgICAgIGFsbG93ZWQgPSBUcnVlCgogICAgICAgIGVsaWYgKAogICAgICAgICAgICBzZWxmLl9zdGF0ZSA9PSBTU0xQcm90b2NvbFN0YXRlLkRPX0hBTkRTSEFLRSBhbmQKICAgICAgICAgICAgbmV3X3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuV1JBUFBFRAogICAgICAgICk6CiAgICAgICAgICAgIGFsbG93ZWQgPSBUcnVlCgogICAgICAgIGVsaWYgKAogICAgICAgICAgICBzZWxmLl9zdGF0ZSA9PSBTU0xQcm90b2NvbFN0YXRlLldSQVBQRUQgYW5kCiAgICAgICAgICAgIG5ld19zdGF0ZSA9PSBTU0xQcm90b2NvbFN0YXRlLkZMVVNISU5HCiAgICAgICAgKToKICAgICAgICAgICAgYWxsb3dlZCA9IFRydWUKCiAgICAgICAgZWxpZiAoCiAgICAgICAgICAgIHNlbGYuX3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuRkxVU0hJTkcgYW5kCiAgICAgICAgICAgIG5ld19zdGF0ZSA9PSBTU0xQcm90b2NvbFN0YXRlLlNIVVRET1dOCiAgICAgICAgKToKICAgICAgICAgICAgYWxsb3dlZCA9IFRydWUKCiAgICAgICAgaWYgYWxsb3dlZDoKICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSBuZXdfc3RhdGUKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgJ2Nhbm5vdCBzd2l0Y2ggc3RhdGUgZnJvbSB7fSB0byB7fScuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlLCBuZXdfc3RhdGUpKQoKICAgICMgSGFuZHNoYWtlIGZsb3cKCiAgICBkZWYgX3N0YXJ0X2hhbmRzaGFrZShzZWxmKToKICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVyIHN0YXJ0cyBTU0wgaGFuZHNoYWtlIiwgc2VsZikKICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX3N0YXJ0X3RpbWUgPSBzZWxmLl9sb29wLnRpbWUoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9zdGFydF90aW1lID0gTm9uZQoKICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU1NMUHJvdG9jb2xTdGF0ZS5ET19IQU5EU0hBS0UpCgogICAgICAgICMgc3RhcnQgaGFuZHNoYWtlIHRpbWVvdXQgY291bnQgZG93bgogICAgICAgIHNlbGYuX2hhbmRzaGFrZV90aW1lb3V0X2hhbmRsZSA9IFwKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2xhdGVyKHNlbGYuX3NzbF9oYW5kc2hha2VfdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogc2VsZi5fY2hlY2tfaGFuZHNoYWtlX3RpbWVvdXQoKSkKCiAgICAgICAgc2VsZi5fZG9faGFuZHNoYWtlKCkKCiAgICBkZWYgX2NoZWNrX2hhbmRzaGFrZV90aW1lb3V0KHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuRE9fSEFORFNIQUtFOgogICAgICAgICAgICBtc2cgPSAoCiAgICAgICAgICAgICAgICBmIlNTTCBoYW5kc2hha2UgaXMgdGFraW5nIGxvbmdlciB0aGFuICIKICAgICAgICAgICAgICAgIGYie3NlbGYuX3NzbF9oYW5kc2hha2VfdGltZW91dH0gc2Vjb25kczogIgogICAgICAgICAgICAgICAgZiJhYm9ydGluZyB0aGUgY29ubmVjdGlvbiIKICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcihDb25uZWN0aW9uQWJvcnRlZEVycm9yKG1zZykpCgogICAgZGVmIF9kb19oYW5kc2hha2Uoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9zc2xvYmouZG9faGFuZHNoYWtlKCkKICAgICAgICBleGNlcHQgU1NMQWdhaW5FcnJvcnM6CiAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Nfb3V0Z29pbmcoKQogICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZXhjOgogICAgICAgICAgICBzZWxmLl9vbl9oYW5kc2hha2VfY29tcGxldGUoZXhjKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX29uX2hhbmRzaGFrZV9jb21wbGV0ZShOb25lKQoKICAgIGRlZiBfb25faGFuZHNoYWtlX2NvbXBsZXRlKHNlbGYsIGhhbmRzaGFrZV9leGMpOgogICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZV90aW1lb3V0X2hhbmRsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX3RpbWVvdXRfaGFuZGxlLmNhbmNlbCgpCiAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV90aW1lb3V0X2hhbmRsZSA9IE5vbmUKCiAgICAgICAgc3Nsb2JqID0gc2VsZi5fc3Nsb2JqCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBoYW5kc2hha2VfZXhjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU1NMUHJvdG9jb2xTdGF0ZS5XUkFQUEVEKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgaGFuZHNoYWtlX2V4YwoKICAgICAgICAgICAgcGVlcmNlcnQgPSBzc2xvYmouZ2V0cGVlcmNlcnQoKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU1NMUHJvdG9jb2xTdGF0ZS5VTldSQVBQRUQpCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjLCBzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICAgICBtc2cgPSAnU1NMIGhhbmRzaGFrZSBmYWlsZWQgb24gdmVyaWZ5aW5nIHRoZSBjZXJ0aWZpY2F0ZScKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG1zZyA9ICdTU0wgaGFuZHNoYWtlIGZhaWxlZCcKICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoZXhjLCBtc2cpCiAgICAgICAgICAgIHNlbGYuX3dha2V1cF93YWl0ZXIoZXhjKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgZHQgPSBzZWxmLl9sb29wLnRpbWUoKSAtIHNlbGYuX2hhbmRzaGFrZV9zdGFydF90aW1lCiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXI6IFNTTCBoYW5kc2hha2UgdG9vayAlLjFmIG1zIiwgc2VsZiwgZHQgKiAxZTMpCgogICAgICAgICMgQWRkIGV4dHJhIGluZm8gdGhhdCBiZWNvbWVzIGF2YWlsYWJsZSBhZnRlciBoYW5kc2hha2UuCiAgICAgICAgc2VsZi5fZXh0cmEudXBkYXRlKHBlZXJjZXJ0PXBlZXJjZXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjaXBoZXI9c3Nsb2JqLmNpcGhlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbj1zc2xvYmouY29tcHJlc3Npb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX29iamVjdD1zc2xvYmopCiAgICAgICAgaWYgc2VsZi5fYXBwX3N0YXRlID09IEFwcFByb3RvY29sU3RhdGUuU1RBVEVfSU5JVDoKICAgICAgICAgICAgc2VsZi5fYXBwX3N0YXRlID0gQXBwUHJvdG9jb2xTdGF0ZS5TVEFURV9DT05fTUFERQogICAgICAgICAgICBzZWxmLl9hcHBfcHJvdG9jb2wuY29ubmVjdGlvbl9tYWRlKHNlbGYuX2dldF9hcHBfdHJhbnNwb3J0KCkpCiAgICAgICAgc2VsZi5fd2FrZXVwX3dhaXRlcigpCiAgICAgICAgc2VsZi5fZG9fcmVhZCgpCgogICAgIyBTaHV0ZG93biBmbG93CgogICAgZGVmIF9zdGFydF9zaHV0ZG93bihzZWxmKToKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYuX3N0YXRlIGluICgKICAgICAgICAgICAgICAgIFNTTFByb3RvY29sU3RhdGUuRkxVU0hJTkcsCiAgICAgICAgICAgICAgICBTU0xQcm90b2NvbFN0YXRlLlNIVVRET1dOLAogICAgICAgICAgICAgICAgU1NMUHJvdG9jb2xTdGF0ZS5VTldSQVBQRUQKICAgICAgICAgICAgKQogICAgICAgICk6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIHNlbGYuX2FwcF90cmFuc3BvcnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2FwcF90cmFuc3BvcnQuX2Nsb3NlZCA9IFRydWUKICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBTU0xQcm90b2NvbFN0YXRlLkRPX0hBTkRTSEFLRToKICAgICAgICAgICAgc2VsZi5fYWJvcnQoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3NldF9zdGF0ZShTU0xQcm90b2NvbFN0YXRlLkZMVVNISU5HKQogICAgICAgICAgICBzZWxmLl9zaHV0ZG93bl90aW1lb3V0X2hhbmRsZSA9IHNlbGYuX2xvb3AuY2FsbF9sYXRlcigKICAgICAgICAgICAgICAgIHNlbGYuX3NzbF9zaHV0ZG93bl90aW1lb3V0LAogICAgICAgICAgICAgICAgbGFtYmRhOiBzZWxmLl9jaGVja19zaHV0ZG93bl90aW1lb3V0KCkKICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLl9kb19mbHVzaCgpCgogICAgZGVmIF9jaGVja19zaHV0ZG93bl90aW1lb3V0KHNlbGYpOgogICAgICAgIGlmICgKICAgICAgICAgICAgc2VsZi5fc3RhdGUgaW4gKAogICAgICAgICAgICAgICAgU1NMUHJvdG9jb2xTdGF0ZS5GTFVTSElORywKICAgICAgICAgICAgICAgIFNTTFByb3RvY29sU3RhdGUuU0hVVERPV04KICAgICAgICAgICAgKQogICAgICAgICk6CiAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5fZm9yY2VfY2xvc2UoCiAgICAgICAgICAgICAgICBleGNlcHRpb25zLlRpbWVvdXRFcnJvcignU1NMIHNodXRkb3duIHRpbWVkIG91dCcpKQoKICAgIGRlZiBfZG9fZmx1c2goc2VsZik6CiAgICAgICAgc2VsZi5fZG9fcmVhZCgpCiAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFNTTFByb3RvY29sU3RhdGUuU0hVVERPV04pCiAgICAgICAgc2VsZi5fZG9fc2h1dGRvd24oKQoKICAgIGRlZiBfZG9fc2h1dGRvd24oc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fZW9mX3JlY2VpdmVkOgogICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnVud3JhcCgpCiAgICAgICAgZXhjZXB0IFNTTEFnYWluRXJyb3JzOgogICAgICAgICAgICBzZWxmLl9wcm9jZXNzX291dGdvaW5nKCkKICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgc2VsZi5fb25fc2h1dGRvd25fY29tcGxldGUoZXhjKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Nfb3V0Z29pbmcoKQogICAgICAgICAgICBzZWxmLl9jYWxsX2VvZl9yZWNlaXZlZCgpCiAgICAgICAgICAgIHNlbGYuX29uX3NodXRkb3duX2NvbXBsZXRlKE5vbmUpCgogICAgZGVmIF9vbl9zaHV0ZG93bl9jb21wbGV0ZShzZWxmLCBzaHV0ZG93bl9leGMpOgogICAgICAgIGlmIHNlbGYuX3NodXRkb3duX3RpbWVvdXRfaGFuZGxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9zaHV0ZG93bl90aW1lb3V0X2hhbmRsZS5jYW5jZWwoKQogICAgICAgICAgICBzZWxmLl9zaHV0ZG93bl90aW1lb3V0X2hhbmRsZSA9IE5vbmUKCiAgICAgICAgaWYgc2h1dGRvd25fZXhjOgogICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcihzaHV0ZG93bl9leGMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi5fdHJhbnNwb3J0LmNsb3NlKQoKICAgIGRlZiBfYWJvcnQoc2VsZik6CiAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFNTTFByb3RvY29sU3RhdGUuVU5XUkFQUEVEKQogICAgICAgIGlmIHNlbGYuX3RyYW5zcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LmFib3J0KCkKCiAgICAjIE91dGdvaW5nIGZsb3cKCiAgICBkZWYgX3dyaXRlX2FwcGRhdGEoc2VsZiwgbGlzdF9vZl9kYXRhKToKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYuX3N0YXRlIGluICgKICAgICAgICAgICAgICAgIFNTTFByb3RvY29sU3RhdGUuRkxVU0hJTkcsCiAgICAgICAgICAgICAgICBTU0xQcm90b2NvbFN0YXRlLlNIVVRET1dOLAogICAgICAgICAgICAgICAgU1NMUHJvdG9jb2xTdGF0ZS5VTldSQVBQRUQKICAgICAgICAgICAgKQogICAgICAgICk6CiAgICAgICAgICAgIGlmIHNlbGYuX2Nvbm5fbG9zdCA+PSBjb25zdGFudHMuTE9HX1RIUkVTSE9MRF9GT1JfQ09OTkxPU1RfV1JJVEVTOgogICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1NTTCBjb25uZWN0aW9uIGlzIGNsb3NlZCcpCiAgICAgICAgICAgIHNlbGYuX2Nvbm5fbG9zdCArPSAxCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBmb3IgZGF0YSBpbiBsaXN0X29mX2RhdGE6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlX2JhY2tsb2cuYXBwZW5kKGRhdGEpCiAgICAgICAgICAgIHNlbGYuX3dyaXRlX2J1ZmZlcl9zaXplICs9IGxlbihkYXRhKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYuX3N0YXRlID09IFNTTFByb3RvY29sU3RhdGUuV1JBUFBFRDoKICAgICAgICAgICAgICAgIHNlbGYuX2RvX3dyaXRlKCkKCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoZXgsICdGYXRhbCBlcnJvciBvbiBTU0wgcHJvdG9jb2wnKQoKICAgIGRlZiBfZG9fd3JpdGUoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aGlsZSBzZWxmLl93cml0ZV9iYWNrbG9nOgogICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3dyaXRlX2JhY2tsb2dbMF0KICAgICAgICAgICAgICAgIGNvdW50ID0gc2VsZi5fc3Nsb2JqLndyaXRlKGRhdGEpCiAgICAgICAgICAgICAgICBkYXRhX2xlbiA9IGxlbihkYXRhKQogICAgICAgICAgICAgICAgaWYgY291bnQgPCBkYXRhX2xlbjoKICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9iYWNrbG9nWzBdID0gZGF0YVtjb3VudDpdCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfYnVmZmVyX3NpemUgLT0gY291bnQKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX3dyaXRlX2JhY2tsb2dbMF0KICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9idWZmZXJfc2l6ZSAtPSBkYXRhX2xlbgogICAgICAgIGV4Y2VwdCBTU0xBZ2FpbkVycm9yczoKICAgICAgICAgICAgcGFzcwogICAgICAgIHNlbGYuX3Byb2Nlc3Nfb3V0Z29pbmcoKQoKICAgIGRlZiBfcHJvY2Vzc19vdXRnb2luZyhzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fc3NsX3dyaXRpbmdfcGF1c2VkOgogICAgICAgICAgICBkYXRhID0gc2VsZi5fb3V0Z29pbmcucmVhZCgpCiAgICAgICAgICAgIGlmIGxlbihkYXRhKToKICAgICAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC53cml0ZShkYXRhKQogICAgICAgIHNlbGYuX2NvbnRyb2xfYXBwX3dyaXRpbmcoKQoKICAgICMgSW5jb21pbmcgZmxvdwoKICAgIGRlZiBfZG9fcmVhZChzZWxmKToKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYuX3N0YXRlIG5vdCBpbiAoCiAgICAgICAgICAgICAgICBTU0xQcm90b2NvbFN0YXRlLldSQVBQRUQsCiAgICAgICAgICAgICAgICBTU0xQcm90b2NvbFN0YXRlLkZMVVNISU5HLAogICAgICAgICAgICApCiAgICAgICAgKToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fYXBwX3JlYWRpbmdfcGF1c2VkOgogICAgICAgICAgICAgICAgaWYgc2VsZi5fYXBwX3Byb3RvY29sX2lzX2J1ZmZlcjoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9kb19yZWFkX19idWZmZXJlZCgpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2RvX3JlYWRfX2NvcGllZCgpCiAgICAgICAgICAgICAgICBpZiBzZWxmLl93cml0ZV9iYWNrbG9nOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2RvX3dyaXRlKCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19vdXRnb2luZygpCiAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfc3NsX3JlYWRpbmcoKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CiAgICAgICAgICAgIHNlbGYuX2ZhdGFsX2Vycm9yKGV4LCAnRmF0YWwgZXJyb3Igb24gU1NMIHByb3RvY29sJykKCiAgICBkZWYgX2RvX3JlYWRfX2J1ZmZlcmVkKHNlbGYpOgogICAgICAgIG9mZnNldCA9IDAKICAgICAgICBjb3VudCA9IDEKCiAgICAgICAgYnVmID0gc2VsZi5fYXBwX3Byb3RvY29sX2dldF9idWZmZXIoc2VsZi5fZ2V0X3JlYWRfYnVmZmVyX3NpemUoKSkKICAgICAgICB3YW50cyA9IGxlbihidWYpCgogICAgICAgIHRyeToKICAgICAgICAgICAgY291bnQgPSBzZWxmLl9zc2xvYmoucmVhZCh3YW50cywgYnVmKQoKICAgICAgICAgICAgaWYgY291bnQgPiAwOgogICAgICAgICAgICAgICAgb2Zmc2V0ID0gY291bnQKICAgICAgICAgICAgICAgIHdoaWxlIG9mZnNldCA8IHdhbnRzOgogICAgICAgICAgICAgICAgICAgIGNvdW50ID0gc2VsZi5fc3Nsb2JqLnJlYWQod2FudHMgLSBvZmZzZXQsIGJ1ZltvZmZzZXQ6XSkKICAgICAgICAgICAgICAgICAgICBpZiBjb3VudCA+IDA6CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBjb3VudAogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKGxhbWJkYTogc2VsZi5fZG9fcmVhZCgpKQogICAgICAgIGV4Y2VwdCBTU0xBZ2FpbkVycm9yczoKICAgICAgICAgICAgcGFzcwogICAgICAgIGlmIG9mZnNldCA+IDA6CiAgICAgICAgICAgIHNlbGYuX2FwcF9wcm90b2NvbF9idWZmZXJfdXBkYXRlZChvZmZzZXQpCiAgICAgICAgaWYgbm90IGNvdW50OgogICAgICAgICAgICAjIGNsb3NlX25vdGlmeQogICAgICAgICAgICBzZWxmLl9jYWxsX2VvZl9yZWNlaXZlZCgpCiAgICAgICAgICAgIHNlbGYuX3N0YXJ0X3NodXRkb3duKCkKCiAgICBkZWYgX2RvX3JlYWRfX2NvcGllZChzZWxmKToKICAgICAgICBjaHVuayA9IGInMScKICAgICAgICB6ZXJvID0gVHJ1ZQogICAgICAgIG9uZSA9IEZhbHNlCgogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5fc3Nsb2JqLnJlYWQoc2VsZi5tYXhfc2l6ZSkKICAgICAgICAgICAgICAgIGlmIG5vdCBjaHVuazoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgaWYgemVybzoKICAgICAgICAgICAgICAgICAgICB6ZXJvID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICBvbmUgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBjaHVuawogICAgICAgICAgICAgICAgZWxpZiBvbmU6CiAgICAgICAgICAgICAgICAgICAgb25lID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICBkYXRhID0gW2ZpcnN0LCBjaHVua10KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmspCiAgICAgICAgZXhjZXB0IFNTTEFnYWluRXJyb3JzOgogICAgICAgICAgICBwYXNzCiAgICAgICAgaWYgb25lOgogICAgICAgICAgICBzZWxmLl9hcHBfcHJvdG9jb2wuZGF0YV9yZWNlaXZlZChmaXJzdCkKICAgICAgICBlbGlmIG5vdCB6ZXJvOgogICAgICAgICAgICBzZWxmLl9hcHBfcHJvdG9jb2wuZGF0YV9yZWNlaXZlZChiJycuam9pbihkYXRhKSkKICAgICAgICBpZiBub3QgY2h1bms6CiAgICAgICAgICAgICMgY2xvc2Vfbm90aWZ5CiAgICAgICAgICAgIHNlbGYuX2NhbGxfZW9mX3JlY2VpdmVkKCkKICAgICAgICAgICAgc2VsZi5fc3RhcnRfc2h1dGRvd24oKQoKICAgIGRlZiBfY2FsbF9lb2ZfcmVjZWl2ZWQoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzZWxmLl9hcHBfc3RhdGUgPT0gQXBwUHJvdG9jb2xTdGF0ZS5TVEFURV9DT05fTUFERToKICAgICAgICAgICAgICAgIHNlbGYuX2FwcF9zdGF0ZSA9IEFwcFByb3RvY29sU3RhdGUuU1RBVEVfRU9GCiAgICAgICAgICAgICAgICBrZWVwX29wZW4gPSBzZWxmLl9hcHBfcHJvdG9jb2wuZW9mX3JlY2VpdmVkKCkKICAgICAgICAgICAgICAgIGlmIGtlZXBfb3BlbjoKICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygncmV0dXJuaW5nIHRydWUgZnJvbSBlb2ZfcmVjZWl2ZWQoKSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcyBubyBlZmZlY3Qgd2hlbiB1c2luZyBzc2wnKQogICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4OgogICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcihleCwgJ0Vycm9yIGNhbGxpbmcgZW9mX3JlY2VpdmVkKCknKQoKICAgICMgRmxvdyBjb250cm9sIGZvciB3cml0ZXMgZnJvbSBBUFAgc29ja2V0CgogICAgZGVmIF9jb250cm9sX2FwcF93cml0aW5nKHNlbGYpOgogICAgICAgIHNpemUgPSBzZWxmLl9nZXRfd3JpdGVfYnVmZmVyX3NpemUoKQogICAgICAgIGlmIHNpemUgPj0gc2VsZi5fb3V0Z29pbmdfaGlnaF93YXRlciBhbmQgbm90IHNlbGYuX2FwcF93cml0aW5nX3BhdXNlZDoKICAgICAgICAgICAgc2VsZi5fYXBwX3dyaXRpbmdfcGF1c2VkID0gVHJ1ZQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLl9hcHBfcHJvdG9jb2wucGF1c2Vfd3JpdGluZygpCiAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKHsKICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6ICdwcm90b2NvbC5wYXVzZV93cml0aW5nKCkgZmFpbGVkJywKICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgICAgICd0cmFuc3BvcnQnOiBzZWxmLl9hcHBfdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICdwcm90b2NvbCc6IHNlbGYsCiAgICAgICAgICAgICAgICB9KQogICAgICAgIGVsaWYgc2l6ZSA8PSBzZWxmLl9vdXRnb2luZ19sb3dfd2F0ZXIgYW5kIHNlbGYuX2FwcF93cml0aW5nX3BhdXNlZDoKICAgICAgICAgICAgc2VsZi5fYXBwX3dyaXRpbmdfcGF1c2VkID0gRmFsc2UKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fYXBwX3Byb3RvY29sLnJlc3VtZV93cml0aW5nKCkKICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoewogICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ3Byb3RvY29sLnJlc3VtZV93cml0aW5nKCkgZmFpbGVkJywKICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgICAgICd0cmFuc3BvcnQnOiBzZWxmLl9hcHBfdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICdwcm90b2NvbCc6IHNlbGYsCiAgICAgICAgICAgICAgICB9KQoKICAgIGRlZiBfZ2V0X3dyaXRlX2J1ZmZlcl9zaXplKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9vdXRnb2luZy5wZW5kaW5nICsgc2VsZi5fd3JpdGVfYnVmZmVyX3NpemUKCiAgICBkZWYgX3NldF93cml0ZV9idWZmZXJfbGltaXRzKHNlbGYsIGhpZ2g9Tm9uZSwgbG93PU5vbmUpOgogICAgICAgIGhpZ2gsIGxvdyA9IGFkZF9mbG93Y29udHJvbF9kZWZhdWx0cygKICAgICAgICAgICAgaGlnaCwgbG93LCBjb25zdGFudHMuRkxPV19DT05UUk9MX0hJR0hfV0FURVJfU1NMX1dSSVRFKQogICAgICAgIHNlbGYuX291dGdvaW5nX2hpZ2hfd2F0ZXIgPSBoaWdoCiAgICAgICAgc2VsZi5fb3V0Z29pbmdfbG93X3dhdGVyID0gbG93CgogICAgIyBGbG93IGNvbnRyb2wgZm9yIHJlYWRzIHRvIEFQUCBzb2NrZXQKCiAgICBkZWYgX3BhdXNlX3JlYWRpbmcoc2VsZik6CiAgICAgICAgc2VsZi5fYXBwX3JlYWRpbmdfcGF1c2VkID0gVHJ1ZQoKICAgIGRlZiBfcmVzdW1lX3JlYWRpbmcoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fYXBwX3JlYWRpbmdfcGF1c2VkOgogICAgICAgICAgICBzZWxmLl9hcHBfcmVhZGluZ19wYXVzZWQgPSBGYWxzZQoKICAgICAgICAgICAgZGVmIHJlc3VtZSgpOgogICAgICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gU1NMUHJvdG9jb2xTdGF0ZS5XUkFQUEVEOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2RvX3JlYWQoKQogICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9zdGF0ZSA9PSBTU0xQcm90b2NvbFN0YXRlLkZMVVNISU5HOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2RvX2ZsdXNoKCkKICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fc3RhdGUgPT0gU1NMUHJvdG9jb2xTdGF0ZS5TSFVURE9XTjoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9kb19zaHV0ZG93bigpCiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHJlc3VtZSkKCiAgICAjIEZsb3cgY29udHJvbCBmb3IgcmVhZHMgZnJvbSBTU0wgc29ja2V0CgogICAgZGVmIF9jb250cm9sX3NzbF9yZWFkaW5nKHNlbGYpOgogICAgICAgIHNpemUgPSBzZWxmLl9nZXRfcmVhZF9idWZmZXJfc2l6ZSgpCiAgICAgICAgaWYgc2l6ZSA+PSBzZWxmLl9pbmNvbWluZ19oaWdoX3dhdGVyIGFuZCBub3Qgc2VsZi5fc3NsX3JlYWRpbmdfcGF1c2VkOgogICAgICAgICAgICBzZWxmLl9zc2xfcmVhZGluZ19wYXVzZWQgPSBUcnVlCiAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5wYXVzZV9yZWFkaW5nKCkKICAgICAgICBlbGlmIHNpemUgPD0gc2VsZi5faW5jb21pbmdfbG93X3dhdGVyIGFuZCBzZWxmLl9zc2xfcmVhZGluZ19wYXVzZWQ6CiAgICAgICAgICAgIHNlbGYuX3NzbF9yZWFkaW5nX3BhdXNlZCA9IEZhbHNlCiAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5yZXN1bWVfcmVhZGluZygpCgogICAgZGVmIF9zZXRfcmVhZF9idWZmZXJfbGltaXRzKHNlbGYsIGhpZ2g9Tm9uZSwgbG93PU5vbmUpOgogICAgICAgIGhpZ2gsIGxvdyA9IGFkZF9mbG93Y29udHJvbF9kZWZhdWx0cygKICAgICAgICAgICAgaGlnaCwgbG93LCBjb25zdGFudHMuRkxPV19DT05UUk9MX0hJR0hfV0FURVJfU1NMX1JFQUQpCiAgICAgICAgc2VsZi5faW5jb21pbmdfaGlnaF93YXRlciA9IGhpZ2gKICAgICAgICBzZWxmLl9pbmNvbWluZ19sb3dfd2F0ZXIgPSBsb3cKCiAgICBkZWYgX2dldF9yZWFkX2J1ZmZlcl9zaXplKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9pbmNvbWluZy5wZW5kaW5nCgogICAgIyBGbG93IGNvbnRyb2wgZm9yIHdyaXRlcyB0byBTU0wgc29ja2V0CgogICAgZGVmIHBhdXNlX3dyaXRpbmcoc2VsZik6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gdGhlIGxvdy1sZXZlbCB0cmFuc3BvcnQncyBidWZmZXIgZ29lcyBvdmVyCiAgICAgICAgdGhlIGhpZ2gtd2F0ZXIgbWFyay4KICAgICAgICAiIiIKICAgICAgICBhc3NlcnQgbm90IHNlbGYuX3NzbF93cml0aW5nX3BhdXNlZAogICAgICAgIHNlbGYuX3NzbF93cml0aW5nX3BhdXNlZCA9IFRydWUKCiAgICBkZWYgcmVzdW1lX3dyaXRpbmcoc2VsZik6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gdGhlIGxvdy1sZXZlbCB0cmFuc3BvcnQncyBidWZmZXIgZHJhaW5zIGJlbG93CiAgICAgICAgdGhlIGxvdy13YXRlciBtYXJrLgogICAgICAgICIiIgogICAgICAgIGFzc2VydCBzZWxmLl9zc2xfd3JpdGluZ19wYXVzZWQKICAgICAgICBzZWxmLl9zc2xfd3JpdGluZ19wYXVzZWQgPSBGYWxzZQogICAgICAgIHNlbGYuX3Byb2Nlc3Nfb3V0Z29pbmcoKQoKICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiB0cmFuc3BvcnQnKToKICAgICAgICBpZiBzZWxmLl90cmFuc3BvcnQ6CiAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5fZm9yY2VfY2xvc2UoZXhjKQoKICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgT1NFcnJvcik6CiAgICAgICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVyOiAlcyIsIHNlbGYsIG1lc3NhZ2UsIGV4Y19pbmZvPVRydWUpCiAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShleGMsIGV4Y2VwdGlvbnMuQ2FuY2VsbGVkRXJyb3IpOgogICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoewogICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLAogICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbic6IGV4YywKICAgICAgICAgICAgICAgICd0cmFuc3BvcnQnOiBzZWxmLl90cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAncHJvdG9jb2wnOiBzZWxmLAogICAgICAgICAgICB9KQpQSwMEFAAAAAAAAiCjVtmRPgJoFwAAaBcAABQAAABhc3luY2lvL3N0YWdnZXJlZC5weSIiIlN1cHBvcnQgZm9yIHJ1bm5pbmcgY29yb3V0aW5lcyBpbiBwYXJhbGxlbCB3aXRoIHN0YWdnZXJlZCBzdGFydCB0aW1lcy4iIiIKCl9fYWxsX18gPSAnc3RhZ2dlcmVkX3JhY2UnLAoKaW1wb3J0IGNvbnRleHRsaWIKaW1wb3J0IHR5cGluZwoKZnJvbSAuIGltcG9ydCBldmVudHMKZnJvbSAuIGltcG9ydCBleGNlcHRpb25zIGFzIGV4Y2VwdGlvbnNfbW9kCmZyb20gLiBpbXBvcnQgbG9ja3MKZnJvbSAuIGltcG9ydCB0YXNrcwoKCmFzeW5jIGRlZiBzdGFnZ2VyZWRfcmFjZSgKICAgICAgICBjb3JvX2ZuczogdHlwaW5nLkl0ZXJhYmxlW3R5cGluZy5DYWxsYWJsZVtbXSwgdHlwaW5nLkF3YWl0YWJsZV1dLAogICAgICAgIGRlbGF5OiB0eXBpbmcuT3B0aW9uYWxbZmxvYXRdLAogICAgICAgICosCiAgICAgICAgbG9vcDogZXZlbnRzLkFic3RyYWN0RXZlbnRMb29wID0gTm9uZSwKKSAtPiB0eXBpbmcuVHVwbGVbCiAgICB0eXBpbmcuQW55LAogICAgdHlwaW5nLk9wdGlvbmFsW2ludF0sCiAgICB0eXBpbmcuTGlzdFt0eXBpbmcuT3B0aW9uYWxbRXhjZXB0aW9uXV0KXToKICAgICIiIlJ1biBjb3JvdXRpbmVzIHdpdGggc3RhZ2dlcmVkIHN0YXJ0IHRpbWVzIGFuZCB0YWtlIHRoZSBmaXJzdCB0byBmaW5pc2guCgogICAgVGhpcyBtZXRob2QgdGFrZXMgYW4gaXRlcmFibGUgb2YgY29yb3V0aW5lIGZ1bmN0aW9ucy4gVGhlIGZpcnN0IG9uZSBpcwogICAgc3RhcnRlZCBpbW1lZGlhdGVseS4gRnJvbSB0aGVuIG9uLCB3aGVuZXZlciB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIG9uZQogICAgZmFpbHMgKHJhaXNlcyBhbiBleGNlcHRpb24pLCBvciB3aGVuICpkZWxheSogc2Vjb25kcyBoYXMgcGFzc2VkLCB0aGUgbmV4dAogICAgY29yb3V0aW5lIGlzIHN0YXJ0ZWQuIFRoaXMgY29udGludWVzIHVudGlsIG9uZSBvZiB0aGUgY29yb3V0aW5lcyBjb21wbGV0ZQogICAgc3VjY2Vzc2Z1bGx5LCBpbiB3aGljaCBjYXNlIGFsbCBvdGhlcnMgYXJlIGNhbmNlbGxlZCwgb3IgdW50aWwgYWxsCiAgICBjb3JvdXRpbmVzIGZhaWwuCgogICAgVGhlIGNvcm91dGluZXMgcHJvdmlkZWQgc2hvdWxkIGJlIHdlbGwtYmVoYXZlZCBpbiB0aGUgZm9sbG93aW5nIHdheToKCiAgICAqIFRoZXkgc2hvdWxkIG9ubHkgYGByZXR1cm5gYCBpZiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgoKICAgICogVGhleSBzaG91bGQgYWx3YXlzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGV5IGRpZCBub3QgY29tcGxldGUKICAgICAgc3VjY2Vzc2Z1bGx5LiBJbiBwYXJ0aWN1bGFyLCBpZiB0aGV5IGhhbmRsZSBjYW5jZWxsYXRpb24sIHRoZXkgc2hvdWxkCiAgICAgIHByb2JhYmx5IHJlcmFpc2UsIGxpa2UgdGhpczo6CgogICAgICAgIHRyeToKICAgICAgICAgICAgIyBkbyB3b3JrCiAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgICMgdW5kbyBwYXJ0aWFsbHkgY29tcGxldGVkIHdvcmsKICAgICAgICAgICAgcmFpc2UKCiAgICBBcmdzOgogICAgICAgIGNvcm9fZm5zOiBhbiBpdGVyYWJsZSBvZiBjb3JvdXRpbmUgZnVuY3Rpb25zLCBpLmUuIGNhbGxhYmxlcyB0aGF0CiAgICAgICAgICAgIHJldHVybiBhIGNvcm91dGluZSBvYmplY3Qgd2hlbiBjYWxsZWQuIFVzZSBgYGZ1bmN0b29scy5wYXJ0aWFsYGAgb3IKICAgICAgICAgICAgbGFtYmRhcyB0byBwYXNzIGFyZ3VtZW50cy4KCiAgICAgICAgZGVsYXk6IGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIHN0YXJ0aW5nIGNvcm91dGluZXMuIElmCiAgICAgICAgICAgIGBgTm9uZWBgLCB0aGUgY29yb3V0aW5lcyB3aWxsIHJ1biBzZXF1ZW50aWFsbHkuCgogICAgICAgIGxvb3A6IHRoZSBldmVudCBsb29wIHRvIHVzZS4KCiAgICBSZXR1cm5zOgogICAgICAgIHR1cGxlICood2lubmVyX3Jlc3VsdCwgd2lubmVyX2luZGV4LCBleGNlcHRpb25zKSogd2hlcmUKCiAgICAgICAgLSAqd2lubmVyX3Jlc3VsdCo6IHRoZSByZXN1bHQgb2YgdGhlIHdpbm5pbmcgY29yb3V0aW5lLCBvciBgYE5vbmVgYAogICAgICAgICAgaWYgbm8gY29yb3V0aW5lcyB3b24uCgogICAgICAgIC0gKndpbm5lcl9pbmRleCo6IHRoZSBpbmRleCBvZiB0aGUgd2lubmluZyBjb3JvdXRpbmUgaW4KICAgICAgICAgIGBgY29yb19mbnNgYCwgb3IgYGBOb25lYGAgaWYgbm8gY29yb3V0aW5lcyB3b24uIElmIHRoZSB3aW5uaW5nCiAgICAgICAgICBjb3JvdXRpbmUgbWF5IHJldHVybiBOb25lIG9uIHN1Y2Nlc3MsICp3aW5uZXJfaW5kZXgqIGNhbiBiZSB1c2VkCiAgICAgICAgICB0byBkZWZpbml0aXZlbHkgZGV0ZXJtaW5lIHdoZXRoZXIgYW55IGNvcm91dGluZSB3b24uCgogICAgICAgIC0gKmV4Y2VwdGlvbnMqOiBsaXN0IG9mIGV4Y2VwdGlvbnMgcmV0dXJuZWQgYnkgdGhlIGNvcm91dGluZXMuCiAgICAgICAgICBgYGxlbihleGNlcHRpb25zKWBgIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgY29yb3V0aW5lcyBhY3R1YWxseQogICAgICAgICAgc3RhcnRlZCwgYW5kIHRoZSBvcmRlciBpcyB0aGUgc2FtZSBhcyBpbiBgYGNvcm9fZm5zYGAuIFRoZSB3aW5uaW5nCiAgICAgICAgICBjb3JvdXRpbmUncyBlbnRyeSBpcyBgYE5vbmVgYC4KCiAgICAiIiIKICAgICMgVE9ETzogd2hlbiB3ZSBoYXZlIGFpdGVyKCkgYW5kIGFuZXh0KCksIGFsbG93IGFzeW5jIGl0ZXJhYmxlcyBpbiBjb3JvX2Zucy4KICAgIGxvb3AgPSBsb29wIG9yIGV2ZW50cy5nZXRfcnVubmluZ19sb29wKCkKICAgIGVudW1fY29yb19mbnMgPSBlbnVtZXJhdGUoY29yb19mbnMpCiAgICB3aW5uZXJfcmVzdWx0ID0gTm9uZQogICAgd2lubmVyX2luZGV4ID0gTm9uZQogICAgZXhjZXB0aW9ucyA9IFtdCiAgICBydW5uaW5nX3Rhc2tzID0gW10KCiAgICBhc3luYyBkZWYgcnVuX29uZV9jb3JvKAogICAgICAgICAgICBwcmV2aW91c19mYWlsZWQ6IHR5cGluZy5PcHRpb25hbFtsb2Nrcy5FdmVudF0pIC0+IE5vbmU6CiAgICAgICAgIyBXYWl0IGZvciB0aGUgcHJldmlvdXMgdGFzayB0byBmaW5pc2gsIG9yIGZvciBkZWxheSBzZWNvbmRzCiAgICAgICAgaWYgcHJldmlvdXNfZmFpbGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuc3VwcHJlc3MoZXhjZXB0aW9uc19tb2QuVGltZW91dEVycm9yKToKICAgICAgICAgICAgICAgICMgVXNlIGFzeW5jaW8ud2FpdF9mb3IoKSBpbnN0ZWFkIG9mIGFzeW5jaW8ud2FpdCgpIGhlcmUsIHNvCiAgICAgICAgICAgICAgICAjIHRoYXQgaWYgd2UgZ2V0IGNhbmNlbGxlZCBhdCB0aGlzIHBvaW50LCBFdmVudC53YWl0KCkgaXMgYWxzbwogICAgICAgICAgICAgICAgIyBjYW5jZWxsZWQsIG90aGVyd2lzZSB0aGVyZSB3aWxsIGJlIGEgIlRhc2sgZGVzdHJveWVkIGJ1dCBpdCBpcwogICAgICAgICAgICAgICAgIyBwZW5kaW5nIiBsYXRlci4KICAgICAgICAgICAgICAgIGF3YWl0IHRhc2tzLndhaXRfZm9yKHByZXZpb3VzX2ZhaWxlZC53YWl0KCksIGRlbGF5KQogICAgICAgICMgR2V0IHRoZSBuZXh0IGNvcm91dGluZSB0byBydW4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHRoaXNfaW5kZXgsIGNvcm9fZm4gPSBuZXh0KGVudW1fY29yb19mbnMpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHJldHVybgogICAgICAgICMgU3RhcnQgdGFzayB0aGF0IHdpbGwgcnVuIHRoZSBuZXh0IGNvcm91dGluZQogICAgICAgIHRoaXNfZmFpbGVkID0gbG9ja3MuRXZlbnQoKQogICAgICAgIG5leHRfdGFzayA9IGxvb3AuY3JlYXRlX3Rhc2socnVuX29uZV9jb3JvKHRoaXNfZmFpbGVkKSkKICAgICAgICBydW5uaW5nX3Rhc2tzLmFwcGVuZChuZXh0X3Rhc2spCiAgICAgICAgYXNzZXJ0IGxlbihydW5uaW5nX3Rhc2tzKSA9PSB0aGlzX2luZGV4ICsgMgogICAgICAgICMgUHJlcGFyZSBwbGFjZSB0byBwdXQgdGhpcyBjb3JvdXRpbmUncyBleGNlcHRpb25zIGlmIG5vdCB3b24KICAgICAgICBleGNlcHRpb25zLmFwcGVuZChOb25lKQogICAgICAgIGFzc2VydCBsZW4oZXhjZXB0aW9ucykgPT0gdGhpc19pbmRleCArIDEKCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBjb3JvX2ZuKCkKICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBleGNlcHRpb25zW3RoaXNfaW5kZXhdID0gZQogICAgICAgICAgICB0aGlzX2ZhaWxlZC5zZXQoKSAgIyBLaWNrc3RhcnQgdGhlIG5leHQgY29yb3V0aW5lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBTdG9yZSB3aW5uZXIncyByZXN1bHRzCiAgICAgICAgICAgIG5vbmxvY2FsIHdpbm5lcl9pbmRleCwgd2lubmVyX3Jlc3VsdAogICAgICAgICAgICBhc3NlcnQgd2lubmVyX2luZGV4IGlzIE5vbmUKICAgICAgICAgICAgd2lubmVyX2luZGV4ID0gdGhpc19pbmRleAogICAgICAgICAgICB3aW5uZXJfcmVzdWx0ID0gcmVzdWx0CiAgICAgICAgICAgICMgQ2FuY2VsIGFsbCBvdGhlciB0YXNrcy4gV2UgdGFrZSBjYXJlIHRvIG5vdCBjYW5jZWwgdGhlIGN1cnJlbnQKICAgICAgICAgICAgIyB0YXNrIGFzIHdlbGwuIElmIHdlIGRvIHNvLCB0aGVuIHNpbmNlIHRoZXJlIGlzIG5vIGBhd2FpdGAgYWZ0ZXIKICAgICAgICAgICAgIyBoZXJlIGFuZCBDYW5jZWxsZWRFcnJvciBhcmUgdXN1YWxseSB0aHJvd24gYXQgb25lLCB3ZSB3aWxsCiAgICAgICAgICAgICMgZW5jb3VudGVyIGEgY3VyaW91cyBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgY3VycmVudCB0YXNrIHdpbGwgZW5kCiAgICAgICAgICAgICMgdXAgYXMgZG9uZSgpID09IFRydWUsIGNhbmNlbGxlZCgpID09IEZhbHNlLCBleGNlcHRpb24oKSA9PQogICAgICAgICAgICAjIGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IuIFRoaXMgYmVoYXZpb3IgaXMgc3BlY2lmaWVkIGluCiAgICAgICAgICAgICMgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMDA0OAogICAgICAgICAgICBmb3IgaSwgdCBpbiBlbnVtZXJhdGUocnVubmluZ190YXNrcyk6CiAgICAgICAgICAgICAgICBpZiBpICE9IHRoaXNfaW5kZXg6CiAgICAgICAgICAgICAgICAgICAgdC5jYW5jZWwoKQoKICAgIGZpcnN0X3Rhc2sgPSBsb29wLmNyZWF0ZV90YXNrKHJ1bl9vbmVfY29ybyhOb25lKSkKICAgIHJ1bm5pbmdfdGFza3MuYXBwZW5kKGZpcnN0X3Rhc2spCiAgICB0cnk6CiAgICAgICAgIyBXYWl0IGZvciBhIGdyb3dpbmcgbGlzdCBvZiB0YXNrcyB0byBhbGwgZmluaXNoOiBwb29yIG1hbidzIHZlcnNpb24gb2YKICAgICAgICAjIGN1cmlvJ3MgVGFza0dyb3VwIG9yIHRyaW8ncyBudXJzZXJ5CiAgICAgICAgZG9uZV9jb3VudCA9IDAKICAgICAgICB3aGlsZSBkb25lX2NvdW50ICE9IGxlbihydW5uaW5nX3Rhc2tzKToKICAgICAgICAgICAgZG9uZSwgXyA9IGF3YWl0IHRhc2tzLndhaXQocnVubmluZ190YXNrcykKICAgICAgICAgICAgZG9uZV9jb3VudCA9IGxlbihkb25lKQogICAgICAgICAgICAjIElmIHJ1bl9vbmVfY29ybyByYWlzZXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiwgaXQncyBwcm9iYWJseSBhCiAgICAgICAgICAgICMgcHJvZ3JhbW1pbmcgZXJyb3IsIGFuZCBJIHdhbnQgdG8gc2VlIGl0LgogICAgICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgICAgICBmb3IgZCBpbiBkb25lOgogICAgICAgICAgICAgICAgICAgIGlmIGQuZG9uZSgpIGFuZCBub3QgZC5jYW5jZWxsZWQoKSBhbmQgZC5leGNlcHRpb24oKToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZC5leGNlcHRpb24oKQogICAgICAgIHJldHVybiB3aW5uZXJfcmVzdWx0LCB3aW5uZXJfaW5kZXgsIGV4Y2VwdGlvbnMKICAgIGZpbmFsbHk6CiAgICAgICAgIyBNYWtlIHN1cmUgbm8gdGFza3MgYXJlIGxlZnQgcnVubmluZyBpZiB3ZSBsZWF2ZSB0aGlzIGZ1bmN0aW9uCiAgICAgICAgZm9yIHQgaW4gcnVubmluZ190YXNrczoKICAgICAgICAgICAgdC5jYW5jZWwoKQpQSwMEFAAAAAAAAiCjVviagwo5aAAAOWgAABIAAABhc3luY2lvL3N0cmVhbXMucHlfX2FsbF9fID0gKAogICAgJ1N0cmVhbVJlYWRlcicsICdTdHJlYW1Xcml0ZXInLCAnU3RyZWFtUmVhZGVyUHJvdG9jb2wnLAogICAgJ29wZW5fY29ubmVjdGlvbicsICdzdGFydF9zZXJ2ZXInKQoKaW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCBzb2NrZXQKaW1wb3J0IHN5cwppbXBvcnQgd2FybmluZ3MKaW1wb3J0IHdlYWtyZWYKCmlmIGhhc2F0dHIoc29ja2V0LCAnQUZfVU5JWCcpOgogICAgX19hbGxfXyArPSAoJ29wZW5fdW5peF9jb25uZWN0aW9uJywgJ3N0YXJ0X3VuaXhfc2VydmVyJykKCmZyb20gLiBpbXBvcnQgY29yb3V0aW5lcwpmcm9tIC4gaW1wb3J0IGV2ZW50cwpmcm9tIC4gaW1wb3J0IGV4Y2VwdGlvbnMKZnJvbSAuIGltcG9ydCBmb3JtYXRfaGVscGVycwpmcm9tIC4gaW1wb3J0IHByb3RvY29scwpmcm9tIC5sb2cgaW1wb3J0IGxvZ2dlcgpmcm9tIC50YXNrcyBpbXBvcnQgc2xlZXAKCgpfREVGQVVMVF9MSU1JVCA9IDIgKiogMTYgICMgNjQgS2lCCgoKYXN5bmMgZGVmIG9wZW5fY29ubmVjdGlvbihob3N0PU5vbmUsIHBvcnQ9Tm9uZSwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdD1fREVGQVVMVF9MSU1JVCwgKiprd2RzKToKICAgICIiIkEgd3JhcHBlciBmb3IgY3JlYXRlX2Nvbm5lY3Rpb24oKSByZXR1cm5pbmcgYSAocmVhZGVyLCB3cml0ZXIpIHBhaXIuCgogICAgVGhlIHJlYWRlciByZXR1cm5lZCBpcyBhIFN0cmVhbVJlYWRlciBpbnN0YW5jZTsgdGhlIHdyaXRlciBpcyBhCiAgICBTdHJlYW1Xcml0ZXIgaW5zdGFuY2UuCgogICAgVGhlIGFyZ3VtZW50cyBhcmUgYWxsIHRoZSB1c3VhbCBhcmd1bWVudHMgdG8gY3JlYXRlX2Nvbm5lY3Rpb24oKQogICAgZXhjZXB0IHByb3RvY29sX2ZhY3Rvcnk7IG1vc3QgY29tbW9uIGFyZSBwb3NpdGlvbmFsIGhvc3QgYW5kIHBvcnQsCiAgICB3aXRoIHZhcmlvdXMgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgZm9sbG93aW5nLgoKICAgIEFkZGl0aW9uYWwgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgYXJlIGxvb3AgKHRvIHNldCB0aGUgZXZlbnQgbG9vcAogICAgaW5zdGFuY2UgdG8gdXNlKSBhbmQgbGltaXQgKHRvIHNldCB0aGUgYnVmZmVyIGxpbWl0IHBhc3NlZCB0byB0aGUKICAgIFN0cmVhbVJlYWRlcikuCgogICAgKElmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgU3RyZWFtUmVhZGVyIGFuZC9vcgogICAgU3RyZWFtUmVhZGVyUHJvdG9jb2wgY2xhc3NlcywganVzdCBjb3B5IHRoZSBjb2RlIC0tIHRoZXJlJ3MKICAgIHJlYWxseSBub3RoaW5nIHNwZWNpYWwgaGVyZSBleGNlcHQgc29tZSBjb252ZW5pZW5jZS4pCiAgICAiIiIKICAgIGxvb3AgPSBldmVudHMuZ2V0X3J1bm5pbmdfbG9vcCgpCiAgICByZWFkZXIgPSBTdHJlYW1SZWFkZXIobGltaXQ9bGltaXQsIGxvb3A9bG9vcCkKICAgIHByb3RvY29sID0gU3RyZWFtUmVhZGVyUHJvdG9jb2wocmVhZGVyLCBsb29wPWxvb3ApCiAgICB0cmFuc3BvcnQsIF8gPSBhd2FpdCBsb29wLmNyZWF0ZV9jb25uZWN0aW9uKAogICAgICAgIGxhbWJkYTogcHJvdG9jb2wsIGhvc3QsIHBvcnQsICoqa3dkcykKICAgIHdyaXRlciA9IFN0cmVhbVdyaXRlcih0cmFuc3BvcnQsIHByb3RvY29sLCByZWFkZXIsIGxvb3ApCiAgICByZXR1cm4gcmVhZGVyLCB3cml0ZXIKCgphc3luYyBkZWYgc3RhcnRfc2VydmVyKGNsaWVudF9jb25uZWN0ZWRfY2IsIGhvc3Q9Tm9uZSwgcG9ydD1Ob25lLCAqLAogICAgICAgICAgICAgICAgICAgICAgIGxpbWl0PV9ERUZBVUxUX0xJTUlULCAqKmt3ZHMpOgogICAgIiIiU3RhcnQgYSBzb2NrZXQgc2VydmVyLCBjYWxsIGJhY2sgZm9yIGVhY2ggY2xpZW50IGNvbm5lY3RlZC4KCiAgICBUaGUgZmlyc3QgcGFyYW1ldGVyLCBgY2xpZW50X2Nvbm5lY3RlZF9jYmAsIHRha2VzIHR3byBwYXJhbWV0ZXJzOgogICAgY2xpZW50X3JlYWRlciwgY2xpZW50X3dyaXRlci4gIGNsaWVudF9yZWFkZXIgaXMgYSBTdHJlYW1SZWFkZXIKICAgIG9iamVjdCwgd2hpbGUgY2xpZW50X3dyaXRlciBpcyBhIFN0cmVhbVdyaXRlciBvYmplY3QuICBUaGlzCiAgICBwYXJhbWV0ZXIgY2FuIGVpdGhlciBiZSBhIHBsYWluIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIGEgY29yb3V0aW5lOwogICAgaWYgaXQgaXMgYSBjb3JvdXRpbmUsIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgaW50byBhCiAgICBUYXNrLgoKICAgIFRoZSByZXN0IG9mIHRoZSBhcmd1bWVudHMgYXJlIGFsbCB0aGUgdXN1YWwgYXJndW1lbnRzIHRvCiAgICBsb29wLmNyZWF0ZV9zZXJ2ZXIoKSBleGNlcHQgcHJvdG9jb2xfZmFjdG9yeTsgbW9zdCBjb21tb24gYXJlCiAgICBwb3NpdGlvbmFsIGhvc3QgYW5kIHBvcnQsIHdpdGggdmFyaW91cyBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cwogICAgZm9sbG93aW5nLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBsb29wLmNyZWF0ZV9zZXJ2ZXIoKS4KCiAgICBBZGRpdGlvbmFsIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIGFyZSBsb29wICh0byBzZXQgdGhlIGV2ZW50IGxvb3AKICAgIGluc3RhbmNlIHRvIHVzZSkgYW5kIGxpbWl0ICh0byBzZXQgdGhlIGJ1ZmZlciBsaW1pdCBwYXNzZWQgdG8gdGhlCiAgICBTdHJlYW1SZWFkZXIpLgoKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHNhbWUgYXMgbG9vcC5jcmVhdGVfc2VydmVyKCksIGkuZS4gYQogICAgU2VydmVyIG9iamVjdCB3aGljaCBjYW4gYmUgdXNlZCB0byBzdG9wIHRoZSBzZXJ2aWNlLgogICAgIiIiCiAgICBsb29wID0gZXZlbnRzLmdldF9ydW5uaW5nX2xvb3AoKQoKICAgIGRlZiBmYWN0b3J5KCk6CiAgICAgICAgcmVhZGVyID0gU3RyZWFtUmVhZGVyKGxpbWl0PWxpbWl0LCBsb29wPWxvb3ApCiAgICAgICAgcHJvdG9jb2wgPSBTdHJlYW1SZWFkZXJQcm90b2NvbChyZWFkZXIsIGNsaWVudF9jb25uZWN0ZWRfY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApCiAgICAgICAgcmV0dXJuIHByb3RvY29sCgogICAgcmV0dXJuIGF3YWl0IGxvb3AuY3JlYXRlX3NlcnZlcihmYWN0b3J5LCBob3N0LCBwb3J0LCAqKmt3ZHMpCgoKaWYgaGFzYXR0cihzb2NrZXQsICdBRl9VTklYJyk6CiAgICAjIFVOSVggRG9tYWluIFNvY2tldHMgYXJlIHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtCgogICAgYXN5bmMgZGVmIG9wZW5fdW5peF9jb25uZWN0aW9uKHBhdGg9Tm9uZSwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdD1fREVGQVVMVF9MSU1JVCwgKiprd2RzKToKICAgICAgICAiIiJTaW1pbGFyIHRvIGBvcGVuX2Nvbm5lY3Rpb25gIGJ1dCB3b3JrcyB3aXRoIFVOSVggRG9tYWluIFNvY2tldHMuIiIiCiAgICAgICAgbG9vcCA9IGV2ZW50cy5nZXRfcnVubmluZ19sb29wKCkKCiAgICAgICAgcmVhZGVyID0gU3RyZWFtUmVhZGVyKGxpbWl0PWxpbWl0LCBsb29wPWxvb3ApCiAgICAgICAgcHJvdG9jb2wgPSBTdHJlYW1SZWFkZXJQcm90b2NvbChyZWFkZXIsIGxvb3A9bG9vcCkKICAgICAgICB0cmFuc3BvcnQsIF8gPSBhd2FpdCBsb29wLmNyZWF0ZV91bml4X2Nvbm5lY3Rpb24oCiAgICAgICAgICAgIGxhbWJkYTogcHJvdG9jb2wsIHBhdGgsICoqa3dkcykKICAgICAgICB3cml0ZXIgPSBTdHJlYW1Xcml0ZXIodHJhbnNwb3J0LCBwcm90b2NvbCwgcmVhZGVyLCBsb29wKQogICAgICAgIHJldHVybiByZWFkZXIsIHdyaXRlcgoKICAgIGFzeW5jIGRlZiBzdGFydF91bml4X3NlcnZlcihjbGllbnRfY29ubmVjdGVkX2NiLCBwYXRoPU5vbmUsICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9X0RFRkFVTFRfTElNSVQsICoqa3dkcyk6CiAgICAgICAgIiIiU2ltaWxhciB0byBgc3RhcnRfc2VydmVyYCBidXQgd29ya3Mgd2l0aCBVTklYIERvbWFpbiBTb2NrZXRzLiIiIgogICAgICAgIGxvb3AgPSBldmVudHMuZ2V0X3J1bm5pbmdfbG9vcCgpCgogICAgICAgIGRlZiBmYWN0b3J5KCk6CiAgICAgICAgICAgIHJlYWRlciA9IFN0cmVhbVJlYWRlcihsaW1pdD1saW1pdCwgbG9vcD1sb29wKQogICAgICAgICAgICBwcm90b2NvbCA9IFN0cmVhbVJlYWRlclByb3RvY29sKHJlYWRlciwgY2xpZW50X2Nvbm5lY3RlZF9jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApCiAgICAgICAgICAgIHJldHVybiBwcm90b2NvbAoKICAgICAgICByZXR1cm4gYXdhaXQgbG9vcC5jcmVhdGVfdW5peF9zZXJ2ZXIoZmFjdG9yeSwgcGF0aCwgKiprd2RzKQoKCmNsYXNzIEZsb3dDb250cm9sTWl4aW4ocHJvdG9jb2xzLlByb3RvY29sKToKICAgICIiIlJldXNhYmxlIGZsb3cgY29udHJvbCBsb2dpYyBmb3IgU3RyZWFtV3JpdGVyLmRyYWluKCkuCgogICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBwcm90b2NvbCBtZXRob2RzIHBhdXNlX3dyaXRpbmcoKSwKICAgIHJlc3VtZV93cml0aW5nKCkgYW5kIGNvbm5lY3Rpb25fbG9zdCgpLiAgSWYgdGhlIHN1YmNsYXNzIG92ZXJyaWRlcwogICAgdGhlc2UgaXQgbXVzdCBjYWxsIHRoZSBzdXBlciBtZXRob2RzLgoKICAgIFN0cmVhbVdyaXRlci5kcmFpbigpIG11c3Qgd2FpdCBmb3IgX2RyYWluX2hlbHBlcigpIGNvcm91dGluZS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb29wPU5vbmUpOgogICAgICAgIGlmIGxvb3AgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fbG9vcCA9IGV2ZW50cy5fZ2V0X2V2ZW50X2xvb3Aoc3RhY2tsZXZlbD00KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2xvb3AgPSBsb29wCiAgICAgICAgc2VsZi5fcGF1c2VkID0gRmFsc2UKICAgICAgICBzZWxmLl9kcmFpbl93YWl0ZXJzID0gY29sbGVjdGlvbnMuZGVxdWUoKQogICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25fbG9zdCA9IEZhbHNlCgogICAgZGVmIHBhdXNlX3dyaXRpbmcoc2VsZik6CiAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9wYXVzZWQKICAgICAgICBzZWxmLl9wYXVzZWQgPSBUcnVlCiAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIlciBwYXVzZXMgd3JpdGluZyIsIHNlbGYpCgogICAgZGVmIHJlc3VtZV93cml0aW5nKHNlbGYpOgogICAgICAgIGFzc2VydCBzZWxmLl9wYXVzZWQKICAgICAgICBzZWxmLl9wYXVzZWQgPSBGYWxzZQogICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXIgcmVzdW1lcyB3cml0aW5nIiwgc2VsZikKCiAgICAgICAgZm9yIHdhaXRlciBpbiBzZWxmLl9kcmFpbl93YWl0ZXJzOgogICAgICAgICAgICBpZiBub3Qgd2FpdGVyLmRvbmUoKToKICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0KE5vbmUpCgogICAgZGVmIGNvbm5lY3Rpb25fbG9zdChzZWxmLCBleGMpOgogICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25fbG9zdCA9IFRydWUKICAgICAgICAjIFdha2UgdXAgdGhlIHdyaXRlcihzKSBpZiBjdXJyZW50bHkgcGF1c2VkLgogICAgICAgIGlmIG5vdCBzZWxmLl9wYXVzZWQ6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBmb3Igd2FpdGVyIGluIHNlbGYuX2RyYWluX3dhaXRlcnM6CiAgICAgICAgICAgIGlmIG5vdCB3YWl0ZXIuZG9uZSgpOgogICAgICAgICAgICAgICAgaWYgZXhjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9leGNlcHRpb24oZXhjKQoKICAgIGFzeW5jIGRlZiBfZHJhaW5faGVscGVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2Nvbm5lY3Rpb25fbG9zdDoKICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblJlc2V0RXJyb3IoJ0Nvbm5lY3Rpb24gbG9zdCcpCiAgICAgICAgaWYgbm90IHNlbGYuX3BhdXNlZDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgd2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBzZWxmLl9kcmFpbl93YWl0ZXJzLmFwcGVuZCh3YWl0ZXIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhd2FpdCB3YWl0ZXIKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl9kcmFpbl93YWl0ZXJzLnJlbW92ZSh3YWl0ZXIpCgogICAgZGVmIF9nZXRfY2xvc2Vfd2FpdGVyKHNlbGYsIHN0cmVhbSk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIFN0cmVhbVJlYWRlclByb3RvY29sKEZsb3dDb250cm9sTWl4aW4sIHByb3RvY29scy5Qcm90b2NvbCk6CiAgICAiIiJIZWxwZXIgY2xhc3MgdG8gYWRhcHQgYmV0d2VlbiBQcm90b2NvbCBhbmQgU3RyZWFtUmVhZGVyLgoKICAgIChUaGlzIGlzIGEgaGVscGVyIGNsYXNzIGluc3RlYWQgb2YgbWFraW5nIFN0cmVhbVJlYWRlciBpdHNlbGYgYQogICAgUHJvdG9jb2wgc3ViY2xhc3MsIGJlY2F1c2UgdGhlIFN0cmVhbVJlYWRlciBoYXMgb3RoZXIgcG90ZW50aWFsCiAgICB1c2VzLCBhbmQgdG8gcHJldmVudCB0aGUgdXNlciBvZiB0aGUgU3RyZWFtUmVhZGVyIHRvIGFjY2lkZW50YWxseQogICAgY2FsbCBpbmFwcHJvcHJpYXRlIG1ldGhvZHMgb2YgdGhlIHByb3RvY29sLikKICAgICIiIgoKICAgIF9zb3VyY2VfdHJhY2ViYWNrID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW1fcmVhZGVyLCBjbGllbnRfY29ubmVjdGVkX2NiPU5vbmUsIGxvb3A9Tm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsb29wPWxvb3ApCiAgICAgICAgaWYgc3RyZWFtX3JlYWRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fc3RyZWFtX3JlYWRlcl93ciA9IHdlYWtyZWYucmVmKHN0cmVhbV9yZWFkZXIpCiAgICAgICAgICAgIHNlbGYuX3NvdXJjZV90cmFjZWJhY2sgPSBzdHJlYW1fcmVhZGVyLl9zb3VyY2VfdHJhY2ViYWNrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fc3RyZWFtX3JlYWRlcl93ciA9IE5vbmUKICAgICAgICBpZiBjbGllbnRfY29ubmVjdGVkX2NiIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIFRoaXMgaXMgYSBzdHJlYW0gY3JlYXRlZCBieSB0aGUgYGNyZWF0ZV9zZXJ2ZXIoKWAgZnVuY3Rpb24uCiAgICAgICAgICAgICMgS2VlcCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gdGhlIHJlYWRlciB1bnRpbCBhIGNvbm5lY3Rpb24KICAgICAgICAgICAgIyBpcyBlc3RhYmxpc2hlZC4KICAgICAgICAgICAgc2VsZi5fc3Ryb25nX3JlYWRlciA9IHN0cmVhbV9yZWFkZXIKICAgICAgICBzZWxmLl9yZWplY3RfY29ubmVjdGlvbiA9IEZhbHNlCiAgICAgICAgc2VsZi5fc3RyZWFtX3dyaXRlciA9IE5vbmUKICAgICAgICBzZWxmLl90YXNrID0gTm9uZQogICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IE5vbmUKICAgICAgICBzZWxmLl9jbGllbnRfY29ubmVjdGVkX2NiID0gY2xpZW50X2Nvbm5lY3RlZF9jYgogICAgICAgIHNlbGYuX292ZXJfc3NsID0gRmFsc2UKICAgICAgICBzZWxmLl9jbG9zZWQgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9zdHJlYW1fcmVhZGVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3N0cmVhbV9yZWFkZXJfd3IgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5fc3RyZWFtX3JlYWRlcl93cigpCgogICAgZGVmIF9yZXBsYWNlX3dyaXRlcihzZWxmLCB3cml0ZXIpOgogICAgICAgIGxvb3AgPSBzZWxmLl9sb29wCiAgICAgICAgdHJhbnNwb3J0ID0gd3JpdGVyLnRyYW5zcG9ydAogICAgICAgIHNlbGYuX3N0cmVhbV93cml0ZXIgPSB3cml0ZXIKICAgICAgICBzZWxmLl90cmFuc3BvcnQgPSB0cmFuc3BvcnQKICAgICAgICBzZWxmLl9vdmVyX3NzbCA9IHRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbygnc3NsY29udGV4dCcpIGlzIG5vdCBOb25lCgogICAgZGVmIGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0cmFuc3BvcnQpOgogICAgICAgIGlmIHNlbGYuX3JlamVjdF9jb25uZWN0aW9uOgogICAgICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAoJ0FuIG9wZW4gc3RyZWFtIHdhcyBnYXJiYWdlIGNvbGxlY3RlZCBwcmlvciB0byAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXN0YWJsaXNoaW5nIG5ldHdvcmsgY29ubmVjdGlvbjsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwgInN0cmVhbS5jbG9zZSgpIiBleHBsaWNpdGx5LicpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgc2VsZi5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgICAgIGNvbnRleHRbJ3NvdXJjZV90cmFjZWJhY2snXSA9IHNlbGYuX3NvdXJjZV90cmFjZWJhY2sKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnRleHQpCiAgICAgICAgICAgIHRyYW5zcG9ydC5hYm9ydCgpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IHRyYW5zcG9ydAogICAgICAgIHJlYWRlciA9IHNlbGYuX3N0cmVhbV9yZWFkZXIKICAgICAgICBpZiByZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJlYWRlci5zZXRfdHJhbnNwb3J0KHRyYW5zcG9ydCkKICAgICAgICBzZWxmLl9vdmVyX3NzbCA9IHRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbygnc3NsY29udGV4dCcpIGlzIG5vdCBOb25lCiAgICAgICAgaWYgc2VsZi5fY2xpZW50X2Nvbm5lY3RlZF9jYiBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fc3RyZWFtX3dyaXRlciA9IFN0cmVhbVdyaXRlcih0cmFuc3BvcnQsIHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvb3ApCiAgICAgICAgICAgIHJlcyA9IHNlbGYuX2NsaWVudF9jb25uZWN0ZWRfY2IocmVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbV93cml0ZXIpCiAgICAgICAgICAgIGlmIGNvcm91dGluZXMuaXNjb3JvdXRpbmUocmVzKToKICAgICAgICAgICAgICAgIHNlbGYuX3Rhc2sgPSBzZWxmLl9sb29wLmNyZWF0ZV90YXNrKHJlcykKICAgICAgICAgICAgc2VsZi5fc3Ryb25nX3JlYWRlciA9IE5vbmUKCiAgICBkZWYgY29ubmVjdGlvbl9sb3N0KHNlbGYsIGV4Yyk6CiAgICAgICAgcmVhZGVyID0gc2VsZi5fc3RyZWFtX3JlYWRlcgogICAgICAgIGlmIHJlYWRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgZXhjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByZWFkZXIuZmVlZF9lb2YoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVhZGVyLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQuZG9uZSgpOgogICAgICAgICAgICBpZiBleGMgaXMgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZC5zZXRfcmVzdWx0KE5vbmUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZWQuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgc3VwZXIoKS5jb25uZWN0aW9uX2xvc3QoZXhjKQogICAgICAgIHNlbGYuX3N0cmVhbV9yZWFkZXJfd3IgPSBOb25lCiAgICAgICAgc2VsZi5fc3RyZWFtX3dyaXRlciA9IE5vbmUKICAgICAgICBzZWxmLl90YXNrID0gTm9uZQogICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IE5vbmUKCiAgICBkZWYgZGF0YV9yZWNlaXZlZChzZWxmLCBkYXRhKToKICAgICAgICByZWFkZXIgPSBzZWxmLl9zdHJlYW1fcmVhZGVyCiAgICAgICAgaWYgcmVhZGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZWFkZXIuZmVlZF9kYXRhKGRhdGEpCgogICAgZGVmIGVvZl9yZWNlaXZlZChzZWxmKToKICAgICAgICByZWFkZXIgPSBzZWxmLl9zdHJlYW1fcmVhZGVyCiAgICAgICAgaWYgcmVhZGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZWFkZXIuZmVlZF9lb2YoKQogICAgICAgIGlmIHNlbGYuX292ZXJfc3NsOgogICAgICAgICAgICAjIFByZXZlbnQgYSB3YXJuaW5nIGluIFNTTFByb3RvY29sLmVvZl9yZWNlaXZlZDoKICAgICAgICAgICAgIyAicmV0dXJuaW5nIHRydWUgZnJvbSBlb2ZfcmVjZWl2ZWQoKQogICAgICAgICAgICAjIGhhcyBubyBlZmZlY3Qgd2hlbiB1c2luZyBzc2wiCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIF9nZXRfY2xvc2Vfd2FpdGVyKHNlbGYsIHN0cmVhbSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2Nsb3NlZAoKICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICMgUHJldmVudCByZXBvcnRzIGFib3V0IHVuaGFuZGxlZCBleGNlcHRpb25zLgogICAgICAgICMgQmV0dGVyIHRoYW4gc2VsZi5fY2xvc2VkLl9sb2dfdHJhY2ViYWNrID0gRmFsc2UgaGFjawogICAgICAgIHRyeToKICAgICAgICAgICAgY2xvc2VkID0gc2VsZi5fY2xvc2VkCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzICAjIGZhaWxlZCBjb25zdHJ1Y3RvcgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGNsb3NlZC5kb25lKCkgYW5kIG5vdCBjbG9zZWQuY2FuY2VsbGVkKCk6CiAgICAgICAgICAgICAgICBjbG9zZWQuZXhjZXB0aW9uKCkKCgpjbGFzcyBTdHJlYW1Xcml0ZXI6CiAgICAiIiJXcmFwcyBhIFRyYW5zcG9ydC4KCiAgICBUaGlzIGV4cG9zZXMgd3JpdGUoKSwgd3JpdGVsaW5lcygpLCBbY2FuX113cml0ZV9lb2YoKSwKICAgIGdldF9leHRyYV9pbmZvKCkgYW5kIGNsb3NlKCkuICBJdCBhZGRzIGRyYWluKCkgd2hpY2ggcmV0dXJucyBhbgogICAgb3B0aW9uYWwgRnV0dXJlIG9uIHdoaWNoIHlvdSBjYW4gd2FpdCBmb3IgZmxvdyBjb250cm9sLiAgSXQgYWxzbwogICAgYWRkcyBhIHRyYW5zcG9ydCBwcm9wZXJ0eSB3aGljaCByZWZlcmVuY2VzIHRoZSBUcmFuc3BvcnQKICAgIGRpcmVjdGx5LgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5zcG9ydCwgcHJvdG9jb2wsIHJlYWRlciwgbG9vcCk6CiAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0gdHJhbnNwb3J0CiAgICAgICAgc2VsZi5fcHJvdG9jb2wgPSBwcm90b2NvbAogICAgICAgICMgZHJhaW4oKSBleHBlY3RzIHRoYXQgdGhlIHJlYWRlciBoYXMgYW4gZXhjZXB0aW9uKCkgbWV0aG9kCiAgICAgICAgYXNzZXJ0IHJlYWRlciBpcyBOb25lIG9yIGlzaW5zdGFuY2UocmVhZGVyLCBTdHJlYW1SZWFkZXIpCiAgICAgICAgc2VsZi5fcmVhZGVyID0gcmVhZGVyCiAgICAgICAgc2VsZi5fbG9vcCA9IGxvb3AKICAgICAgICBzZWxmLl9jb21wbGV0ZV9mdXQgPSBzZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIHNlbGYuX2NvbXBsZXRlX2Z1dC5zZXRfcmVzdWx0KE5vbmUpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGluZm8gPSBbc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGYndHJhbnNwb3J0PXtzZWxmLl90cmFuc3BvcnQhcn0nXQogICAgICAgIGlmIHNlbGYuX3JlYWRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgaW5mby5hcHBlbmQoZidyZWFkZXI9e3NlbGYuX3JlYWRlciFyfScpCiAgICAgICAgcmV0dXJuICc8e30+Jy5mb3JtYXQoJyAnLmpvaW4oaW5mbykpCgogICAgQHByb3BlcnR5CiAgICBkZWYgdHJhbnNwb3J0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl90cmFuc3BvcnQKCiAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5fdHJhbnNwb3J0LndyaXRlKGRhdGEpCgogICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5fdHJhbnNwb3J0LndyaXRlbGluZXMoZGF0YSkKCiAgICBkZWYgd3JpdGVfZW9mKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl90cmFuc3BvcnQud3JpdGVfZW9mKCkKCiAgICBkZWYgY2FuX3dyaXRlX2VvZihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fdHJhbnNwb3J0LmNhbl93cml0ZV9lb2YoKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fdHJhbnNwb3J0LmNsb3NlKCkKCiAgICBkZWYgaXNfY2xvc2luZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fdHJhbnNwb3J0LmlzX2Nsb3NpbmcoKQoKICAgIGFzeW5jIGRlZiB3YWl0X2Nsb3NlZChzZWxmKToKICAgICAgICBhd2FpdCBzZWxmLl9wcm90b2NvbC5fZ2V0X2Nsb3NlX3dhaXRlcihzZWxmKQoKICAgIGRlZiBnZXRfZXh0cmFfaW5mbyhzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmLl90cmFuc3BvcnQuZ2V0X2V4dHJhX2luZm8obmFtZSwgZGVmYXVsdCkKCiAgICBhc3luYyBkZWYgZHJhaW4oc2VsZik6CiAgICAgICAgIiIiRmx1c2ggdGhlIHdyaXRlIGJ1ZmZlci4KCiAgICAgICAgVGhlIGludGVuZGVkIHVzZSBpcyB0byB3cml0ZQoKICAgICAgICAgIHcud3JpdGUoZGF0YSkKICAgICAgICAgIGF3YWl0IHcuZHJhaW4oKQogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3JlYWRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgZXhjID0gc2VsZi5fcmVhZGVyLmV4Y2VwdGlvbigpCiAgICAgICAgICAgIGlmIGV4YyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIGV4YwogICAgICAgIGlmIHNlbGYuX3RyYW5zcG9ydC5pc19jbG9zaW5nKCk6CiAgICAgICAgICAgICMgV2FpdCBmb3IgcHJvdG9jb2wuY29ubmVjdGlvbl9sb3N0KCkgY2FsbAogICAgICAgICAgICAjIFJhaXNlIGNvbm5lY3Rpb24gY2xvc2luZyBlcnJvciBpZiBhbnksCiAgICAgICAgICAgICMgQ29ubmVjdGlvblJlc2V0RXJyb3Igb3RoZXJ3aXNlCiAgICAgICAgICAgICMgWWllbGQgdG8gdGhlIGV2ZW50IGxvb3Agc28gY29ubmVjdGlvbl9sb3N0KCkgbWF5IGJlCiAgICAgICAgICAgICMgY2FsbGVkLiAgV2l0aG91dCB0aGlzLCBfZHJhaW5faGVscGVyKCkgd291bGQgcmV0dXJuCiAgICAgICAgICAgICMgaW1tZWRpYXRlbHksIGFuZCBjb2RlIHRoYXQgY2FsbHMKICAgICAgICAgICAgIyAgICAgd3JpdGUoLi4uKTsgYXdhaXQgZHJhaW4oKQogICAgICAgICAgICAjIGluIGEgbG9vcCB3b3VsZCBuZXZlciBjYWxsIGNvbm5lY3Rpb25fbG9zdCgpLCBzbyBpdAogICAgICAgICAgICAjIHdvdWxkIG5vdCBzZWUgYW4gZXJyb3Igd2hlbiB0aGUgc29ja2V0IGlzIGNsb3NlZC4KICAgICAgICAgICAgYXdhaXQgc2xlZXAoMCkKICAgICAgICBhd2FpdCBzZWxmLl9wcm90b2NvbC5fZHJhaW5faGVscGVyKCkKCiAgICBhc3luYyBkZWYgc3RhcnRfdGxzKHNlbGYsIHNzbGNvbnRleHQsICosCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIiIiVXBncmFkZSBhbiBleGlzdGluZyBzdHJlYW0tYmFzZWQgY29ubmVjdGlvbiB0byBUTFMuIiIiCiAgICAgICAgc2VydmVyX3NpZGUgPSBzZWxmLl9wcm90b2NvbC5fY2xpZW50X2Nvbm5lY3RlZF9jYiBpcyBub3QgTm9uZQogICAgICAgIHByb3RvY29sID0gc2VsZi5fcHJvdG9jb2wKICAgICAgICBhd2FpdCBzZWxmLmRyYWluKCkKICAgICAgICBuZXdfdHJhbnNwb3J0ID0gYXdhaXQgc2VsZi5fbG9vcC5zdGFydF90bHMoICAjIHR5cGU6IGlnbm9yZQogICAgICAgICAgICBzZWxmLl90cmFuc3BvcnQsIHByb3RvY29sLCBzc2xjb250ZXh0LAogICAgICAgICAgICBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSwKICAgICAgICAgICAgc3NsX2hhbmRzaGFrZV90aW1lb3V0PXNzbF9oYW5kc2hha2VfdGltZW91dCkKICAgICAgICBzZWxmLl90cmFuc3BvcnQgPSBuZXdfdHJhbnNwb3J0CiAgICAgICAgcHJvdG9jb2wuX3JlcGxhY2Vfd3JpdGVyKHNlbGYpCgoKY2xhc3MgU3RyZWFtUmVhZGVyOgoKICAgIF9zb3VyY2VfdHJhY2ViYWNrID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW1pdD1fREVGQVVMVF9MSU1JVCwgbG9vcD1Ob25lKToKICAgICAgICAjIFRoZSBsaW5lIGxlbmd0aCBsaW1pdCBpcyAgYSBzZWN1cml0eSBmZWF0dXJlOwogICAgICAgICMgaXQgYWxzbyBkb3VibGVzIGFzIGhhbGYgdGhlIGJ1ZmZlciBsaW1pdC4KCiAgICAgICAgaWYgbGltaXQgPD0gMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTGltaXQgY2Fubm90IGJlIDw9IDAnKQoKICAgICAgICBzZWxmLl9saW1pdCA9IGxpbWl0CiAgICAgICAgaWYgbG9vcCBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9sb29wID0gZXZlbnRzLl9nZXRfZXZlbnRfbG9vcCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbG9vcCA9IGxvb3AKICAgICAgICBzZWxmLl9idWZmZXIgPSBieXRlYXJyYXkoKQogICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlICAgICMgV2hldGhlciB3ZSdyZSBkb25lLgogICAgICAgIHNlbGYuX3dhaXRlciA9IE5vbmUgICMgQSBmdXR1cmUgdXNlZCBieSBfd2FpdF9mb3JfZGF0YSgpCiAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gTm9uZQogICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IE5vbmUKICAgICAgICBzZWxmLl9wYXVzZWQgPSBGYWxzZQogICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIHNlbGYuX3NvdXJjZV90cmFjZWJhY2sgPSBmb3JtYXRfaGVscGVycy5leHRyYWN0X3N0YWNrKAogICAgICAgICAgICAgICAgc3lzLl9nZXRmcmFtZSgxKSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaW5mbyA9IFsnU3RyZWFtUmVhZGVyJ10KICAgICAgICBpZiBzZWxmLl9idWZmZXI6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYne2xlbihzZWxmLl9idWZmZXIpfSBieXRlcycpCiAgICAgICAgaWYgc2VsZi5fZW9mOgogICAgICAgICAgICBpbmZvLmFwcGVuZCgnZW9mJykKICAgICAgICBpZiBzZWxmLl9saW1pdCAhPSBfREVGQVVMVF9MSU1JVDoKICAgICAgICAgICAgaW5mby5hcHBlbmQoZidsaW1pdD17c2VsZi5fbGltaXR9JykKICAgICAgICBpZiBzZWxmLl93YWl0ZXI6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnd2FpdGVyPXtzZWxmLl93YWl0ZXIhcn0nKQogICAgICAgIGlmIHNlbGYuX2V4Y2VwdGlvbjoKICAgICAgICAgICAgaW5mby5hcHBlbmQoZidleGNlcHRpb249e3NlbGYuX2V4Y2VwdGlvbiFyfScpCiAgICAgICAgaWYgc2VsZi5fdHJhbnNwb3J0OgogICAgICAgICAgICBpbmZvLmFwcGVuZChmJ3RyYW5zcG9ydD17c2VsZi5fdHJhbnNwb3J0IXJ9JykKICAgICAgICBpZiBzZWxmLl9wYXVzZWQ6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdwYXVzZWQnKQogICAgICAgIHJldHVybiAnPHt9PicuZm9ybWF0KCcgJy5qb2luKGluZm8pKQoKICAgIGRlZiBleGNlcHRpb24oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlvbgoKICAgIGRlZiBzZXRfZXhjZXB0aW9uKHNlbGYsIGV4Yyk6CiAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gZXhjCgogICAgICAgIHdhaXRlciA9IHNlbGYuX3dhaXRlcgogICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fd2FpdGVyID0gTm9uZQogICAgICAgICAgICBpZiBub3Qgd2FpdGVyLmNhbmNlbGxlZCgpOgogICAgICAgICAgICAgICAgd2FpdGVyLnNldF9leGNlcHRpb24oZXhjKQoKICAgIGRlZiBfd2FrZXVwX3dhaXRlcihzZWxmKToKICAgICAgICAiIiJXYWtldXAgcmVhZCooKSBmdW5jdGlvbnMgd2FpdGluZyBmb3IgZGF0YSBvciBFT0YuIiIiCiAgICAgICAgd2FpdGVyID0gc2VsZi5fd2FpdGVyCiAgICAgICAgaWYgd2FpdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl93YWl0ZXIgPSBOb25lCiAgICAgICAgICAgIGlmIG5vdCB3YWl0ZXIuY2FuY2VsbGVkKCk6CiAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQoKICAgIGRlZiBzZXRfdHJhbnNwb3J0KHNlbGYsIHRyYW5zcG9ydCk6CiAgICAgICAgYXNzZXJ0IHNlbGYuX3RyYW5zcG9ydCBpcyBOb25lLCAnVHJhbnNwb3J0IGFscmVhZHkgc2V0JwogICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IHRyYW5zcG9ydAoKICAgIGRlZiBfbWF5YmVfcmVzdW1lX3RyYW5zcG9ydChzZWxmKToKICAgICAgICBpZiBzZWxmLl9wYXVzZWQgYW5kIGxlbihzZWxmLl9idWZmZXIpIDw9IHNlbGYuX2xpbWl0OgogICAgICAgICAgICBzZWxmLl9wYXVzZWQgPSBGYWxzZQogICAgICAgICAgICBzZWxmLl90cmFuc3BvcnQucmVzdW1lX3JlYWRpbmcoKQoKICAgIGRlZiBmZWVkX2VvZihzZWxmKToKICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCiAgICAgICAgc2VsZi5fd2FrZXVwX3dhaXRlcigpCgogICAgZGVmIGF0X2VvZihzZWxmKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgYnVmZmVyIGlzIGVtcHR5IGFuZCAnZmVlZF9lb2YnIHdhcyBjYWxsZWQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2VvZiBhbmQgbm90IHNlbGYuX2J1ZmZlcgoKICAgIGRlZiBmZWVkX2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9lb2YsICdmZWVkX2RhdGEgYWZ0ZXIgZmVlZF9lb2YnCgogICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgc2VsZi5fYnVmZmVyLmV4dGVuZChkYXRhKQogICAgICAgIHNlbGYuX3dha2V1cF93YWl0ZXIoKQoKICAgICAgICBpZiAoc2VsZi5fdHJhbnNwb3J0IGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgbm90IHNlbGYuX3BhdXNlZCBhbmQKICAgICAgICAgICAgICAgIGxlbihzZWxmLl9idWZmZXIpID4gMiAqIHNlbGYuX2xpbWl0KToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnBhdXNlX3JlYWRpbmcoKQogICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgICMgVGhlIHRyYW5zcG9ydCBjYW4ndCBiZSBwYXVzZWQuCiAgICAgICAgICAgICAgICAjIFdlJ2xsIGp1c3QgaGF2ZSB0byBidWZmZXIgYWxsIGRhdGEuCiAgICAgICAgICAgICAgICAjIEZvcmdldCB0aGUgdHJhbnNwb3J0IHNvIHdlIGRvbid0IGtlZXAgdHJ5aW5nLgogICAgICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fcGF1c2VkID0gVHJ1ZQoKICAgIGFzeW5jIGRlZiBfd2FpdF9mb3JfZGF0YShzZWxmLCBmdW5jX25hbWUpOgogICAgICAgICIiIldhaXQgdW50aWwgZmVlZF9kYXRhKCkgb3IgZmVlZF9lb2YoKSBpcyBjYWxsZWQuCgogICAgICAgIElmIHN0cmVhbSB3YXMgcGF1c2VkLCBhdXRvbWF0aWNhbGx5IHJlc3VtZSBpdC4KICAgICAgICAiIiIKICAgICAgICAjIFN0cmVhbVJlYWRlciB1c2VzIGEgZnV0dXJlIHRvIGxpbmsgdGhlIHByb3RvY29sIGZlZWRfZGF0YSgpIG1ldGhvZAogICAgICAgICMgdG8gYSByZWFkIGNvcm91dGluZS4gUnVubmluZyB0d28gcmVhZCBjb3JvdXRpbmVzIGF0IHRoZSBzYW1lIHRpbWUKICAgICAgICAjIHdvdWxkIGhhdmUgYW4gdW5leHBlY3RlZCBiZWhhdmlvdXIuIEl0IHdvdWxkIG5vdCBwb3NzaWJsZSB0byBrbm93CiAgICAgICAgIyB3aGljaCBjb3JvdXRpbmUgd291bGQgZ2V0IHRoZSBuZXh0IGRhdGEuCiAgICAgICAgaWYgc2VsZi5fd2FpdGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICBmJ3tmdW5jX25hbWV9KCkgY2FsbGVkIHdoaWxlIGFub3RoZXIgY29yb3V0aW5lIGlzICcKICAgICAgICAgICAgICAgIGYnYWxyZWFkeSB3YWl0aW5nIGZvciBpbmNvbWluZyBkYXRhJykKCiAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9lb2YsICdfd2FpdF9mb3JfZGF0YSBhZnRlciBFT0YnCgogICAgICAgICMgV2FpdGluZyBmb3IgZGF0YSB3aGlsZSBwYXVzZWQgd2lsbCBtYWtlIGRlYWRsb2NrLCBzbyBwcmV2ZW50IGl0LgogICAgICAgICMgVGhpcyBpcyBlc3NlbnRpYWwgZm9yIHJlYWRleGFjdGx5KG4pIGZvciBjYXNlIHdoZW4gbiA+IHNlbGYuX2xpbWl0LgogICAgICAgIGlmIHNlbGYuX3BhdXNlZDoKICAgICAgICAgICAgc2VsZi5fcGF1c2VkID0gRmFsc2UKICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnJlc3VtZV9yZWFkaW5nKCkKCiAgICAgICAgc2VsZi5fd2FpdGVyID0gc2VsZi5fbG9vcC5jcmVhdGVfZnV0dXJlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF3YWl0IHNlbGYuX3dhaXRlcgogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX3dhaXRlciA9IE5vbmUKCiAgICBhc3luYyBkZWYgcmVhZGxpbmUoc2VsZik6CiAgICAgICAgIiIiUmVhZCBjaHVuayBvZiBkYXRhIGZyb20gdGhlIHN0cmVhbSB1bnRpbCBuZXdsaW5lIChiJ1xuJykgaXMgZm91bmQuCgogICAgICAgIE9uIHN1Y2Nlc3MsIHJldHVybiBjaHVuayB0aGF0IGVuZHMgd2l0aCBuZXdsaW5lLiBJZiBvbmx5IHBhcnRpYWwKICAgICAgICBsaW5lIGNhbiBiZSByZWFkIGR1ZSB0byBFT0YsIHJldHVybiBpbmNvbXBsZXRlIGxpbmUgd2l0aG91dAogICAgICAgIHRlcm1pbmF0aW5nIG5ld2xpbmUuIFdoZW4gRU9GIHdhcyByZWFjaGVkIHdoaWxlIG5vIGJ5dGVzIHJlYWQsIGVtcHR5CiAgICAgICAgYnl0ZXMgb2JqZWN0IGlzIHJldHVybmVkLgoKICAgICAgICBJZiBsaW1pdCBpcyByZWFjaGVkLCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiBJbiB0aGF0IGNhc2UsIGlmCiAgICAgICAgbmV3bGluZSB3YXMgZm91bmQsIGNvbXBsZXRlIGxpbmUgaW5jbHVkaW5nIG5ld2xpbmUgd2lsbCBiZSByZW1vdmVkCiAgICAgICAgZnJvbSBpbnRlcm5hbCBidWZmZXIuIEVsc2UsIGludGVybmFsIGJ1ZmZlciB3aWxsIGJlIGNsZWFyZWQuIExpbWl0IGlzCiAgICAgICAgY29tcGFyZWQgYWdhaW5zdCBwYXJ0IG9mIHRoZSBsaW5lIHdpdGhvdXQgbmV3bGluZS4KCiAgICAgICAgSWYgc3RyZWFtIHdhcyBwYXVzZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBhdXRvbWF0aWNhbGx5IHJlc3VtZSBpdCBpZgogICAgICAgIG5lZWRlZC4KICAgICAgICAiIiIKICAgICAgICBzZXAgPSBiJ1xuJwogICAgICAgIHNlcGxlbiA9IGxlbihzZXApCiAgICAgICAgdHJ5OgogICAgICAgICAgICBsaW5lID0gYXdhaXQgc2VsZi5yZWFkdW50aWwoc2VwKQogICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLkluY29tcGxldGVSZWFkRXJyb3IgYXMgZToKICAgICAgICAgICAgcmV0dXJuIGUucGFydGlhbAogICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLkxpbWl0T3ZlcnJ1bkVycm9yIGFzIGU6CiAgICAgICAgICAgIGlmIHNlbGYuX2J1ZmZlci5zdGFydHN3aXRoKHNlcCwgZS5jb25zdW1lZCk6CiAgICAgICAgICAgICAgICBkZWwgc2VsZi5fYnVmZmVyWzplLmNvbnN1bWVkICsgc2VwbGVuXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsZWFyKCkKICAgICAgICAgICAgc2VsZi5fbWF5YmVfcmVzdW1lX3RyYW5zcG9ydCgpCiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZS5hcmdzWzBdKQogICAgICAgIHJldHVybiBsaW5lCgogICAgYXN5bmMgZGVmIHJlYWR1bnRpbChzZWxmLCBzZXBhcmF0b3I9YidcbicpOgogICAgICAgICIiIlJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0gdW50aWwgYGBzZXBhcmF0b3JgYCBpcyBmb3VuZC4KCiAgICAgICAgT24gc3VjY2VzcywgdGhlIGRhdGEgYW5kIHNlcGFyYXRvciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKICAgICAgICBpbnRlcm5hbCBidWZmZXIgKGNvbnN1bWVkKS4gUmV0dXJuZWQgZGF0YSB3aWxsIGluY2x1ZGUgdGhlCiAgICAgICAgc2VwYXJhdG9yIGF0IHRoZSBlbmQuCgogICAgICAgIENvbmZpZ3VyZWQgc3RyZWFtIGxpbWl0IGlzIHVzZWQgdG8gY2hlY2sgcmVzdWx0LiBMaW1pdCBzZXRzIHRoZQogICAgICAgIG1heGltYWwgbGVuZ3RoIG9mIGRhdGEgdGhhdCBjYW4gYmUgcmV0dXJuZWQsIG5vdCBjb3VudGluZyB0aGUKICAgICAgICBzZXBhcmF0b3IuCgogICAgICAgIElmIGFuIEVPRiBvY2N1cnMgYW5kIHRoZSBjb21wbGV0ZSBzZXBhcmF0b3IgaXMgc3RpbGwgbm90IGZvdW5kLAogICAgICAgIGFuIEluY29tcGxldGVSZWFkRXJyb3IgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLCBhbmQgdGhlIGludGVybmFsCiAgICAgICAgYnVmZmVyIHdpbGwgYmUgcmVzZXQuICBUaGUgSW5jb21wbGV0ZVJlYWRFcnJvci5wYXJ0aWFsIGF0dHJpYnV0ZQogICAgICAgIG1heSBjb250YWluIHRoZSBzZXBhcmF0b3IgcGFydGlhbGx5LgoKICAgICAgICBJZiB0aGUgZGF0YSBjYW5ub3QgYmUgcmVhZCBiZWNhdXNlIG9mIG92ZXIgbGltaXQsIGEKICAgICAgICBMaW1pdE92ZXJydW5FcnJvciBleGNlcHRpb24gIHdpbGwgYmUgcmFpc2VkLCBhbmQgdGhlIGRhdGEKICAgICAgICB3aWxsIGJlIGxlZnQgaW4gdGhlIGludGVybmFsIGJ1ZmZlciwgc28gaXQgY2FuIGJlIHJlYWQgYWdhaW4uCiAgICAgICAgIiIiCiAgICAgICAgc2VwbGVuID0gbGVuKHNlcGFyYXRvcikKICAgICAgICBpZiBzZXBsZW4gPT0gMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2VwYXJhdG9yIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUtYnl0ZSBzdHJpbmcnKQoKICAgICAgICBpZiBzZWxmLl9leGNlcHRpb24gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuX2V4Y2VwdGlvbgoKICAgICAgICAjIENvbnN1bWUgd2hvbGUgYnVmZmVyIGV4Y2VwdCBsYXN0IGJ5dGVzLCB3aGljaCBsZW5ndGggaXMKICAgICAgICAjIG9uZSBsZXNzIHRoYW4gc2VwbGVuLiBMZXQncyBjaGVjayBjb3JuZXIgY2FzZXMgd2l0aAogICAgICAgICMgc2VwYXJhdG9yPSdTRVBBUkFUT1InOgogICAgICAgICMgKiB3ZSBoYXZlIHJlY2VpdmVkIGFsbW9zdCBjb21wbGV0ZSBzZXBhcmF0b3IgKHdpdGhvdXQgbGFzdAogICAgICAgICMgICBieXRlKS4gaS5lIGJ1ZmZlcj0nc29tZSB0ZXh0U0VQQVJBVE8nLiBJbiB0aGlzIGNhc2Ugd2UKICAgICAgICAjICAgY2FuIHNhZmVseSBjb25zdW1lIGxlbihzZXBhcmF0b3IpIC0gMSBieXRlcy4KICAgICAgICAjICogbGFzdCBieXRlIG9mIGJ1ZmZlciBpcyBmaXJzdCBieXRlIG9mIHNlcGFyYXRvciwgaS5lLgogICAgICAgICMgICBidWZmZXI9J2FiY2RlZmdoaWprbG1ub3BxclMnLiBXZSBtYXkgc2FmZWx5IGNvbnN1bWUKICAgICAgICAjICAgZXZlcnl0aGluZyBleGNlcHQgdGhhdCBsYXN0IGJ5dGUsIGJ1dCB0aGlzIHJlcXVpcmUgdG8KICAgICAgICAjICAgYW5hbHl6ZSBieXRlcyBvZiBidWZmZXIgdGhhdCBtYXRjaCBwYXJ0aWFsIHNlcGFyYXRvci4KICAgICAgICAjICAgVGhpcyBpcyBzbG93IGFuZC9vciByZXF1aXJlIEZTTS4gRm9yIHRoaXMgY2FzZSBvdXIKICAgICAgICAjICAgaW1wbGVtZW50YXRpb24gaXMgbm90IG9wdGltYWwsIHNpbmNlIHJlcXVpcmUgcmVzY2FubmluZwogICAgICAgICMgICBvZiBkYXRhIHRoYXQgaXMga25vd24gdG8gbm90IGJlbG9uZyB0byBzZXBhcmF0b3IuIEluCiAgICAgICAgIyAgIHJlYWwgd29ybGQsIHNlcGFyYXRvciB3aWxsIG5vdCBiZSBzbyBsb25nIHRvIG5vdGljZQogICAgICAgICMgICBwZXJmb3JtYW5jZSBwcm9ibGVtcy4gRXZlbiB3aGVuIHJlYWRpbmcgTUlNRS1lbmNvZGVkCiAgICAgICAgIyAgIG1lc3NhZ2VzIDopCgogICAgICAgICMgYG9mZnNldGAgaXMgdGhlIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlcgogICAgICAgICMgd2hlcmUgdGhlcmUgaXMgbm8gb2NjdXJyZW5jZSBvZiBgc2VwYXJhdG9yYC4KICAgICAgICBvZmZzZXQgPSAwCgogICAgICAgICMgTG9vcCB1bnRpbCB3ZSBmaW5kIGBzZXBhcmF0b3JgIGluIHRoZSBidWZmZXIsIGV4Y2VlZCB0aGUgYnVmZmVyIHNpemUsCiAgICAgICAgIyBvciBhbiBFT0YgaGFzIGhhcHBlbmVkLgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGJ1ZmxlbiA9IGxlbihzZWxmLl9idWZmZXIpCgogICAgICAgICAgICAjIENoZWNrIGlmIHdlIG5vdyBoYXZlIGVub3VnaCBkYXRhIGluIHRoZSBidWZmZXIgZm9yIGBzZXBhcmF0b3JgIHRvCiAgICAgICAgICAgICMgZml0LgogICAgICAgICAgICBpZiBidWZsZW4gLSBvZmZzZXQgPj0gc2VwbGVuOgogICAgICAgICAgICAgICAgaXNlcCA9IHNlbGYuX2J1ZmZlci5maW5kKHNlcGFyYXRvciwgb2Zmc2V0KQoKICAgICAgICAgICAgICAgIGlmIGlzZXAgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgIyBgc2VwYXJhdG9yYCBpcyBpbiB0aGUgYnVmZmVyLiBgaXNlcGAgd2lsbCBiZSB1c2VkIGxhdGVyCiAgICAgICAgICAgICAgICAgICAgIyB0byByZXRyaWV2ZSB0aGUgZGF0YS4KICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgICAgICMgc2VlIHVwcGVyIGNvbW1lbnQgZm9yIGV4cGxhbmF0aW9uLgogICAgICAgICAgICAgICAgb2Zmc2V0ID0gYnVmbGVuICsgMSAtIHNlcGxlbgogICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gc2VsZi5fbGltaXQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5MaW1pdE92ZXJydW5FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciBpcyBub3QgZm91bmQsIGFuZCBjaHVuayBleGNlZWQgdGhlIGxpbWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KQoKICAgICAgICAgICAgIyBDb21wbGV0ZSBtZXNzYWdlICh3aXRoIGZ1bGwgc2VwYXJhdG9yKSBtYXkgYmUgcHJlc2VudCBpbiBidWZmZXIKICAgICAgICAgICAgIyBldmVuIHdoZW4gRU9GIGZsYWcgaXMgc2V0LiBUaGlzIG1heSBoYXBwZW4gd2hlbiB0aGUgbGFzdCBjaHVuawogICAgICAgICAgICAjIGFkZHMgZGF0YSB3aGljaCBtYWtlcyBzZXBhcmF0b3IgYmUgZm91bmQuIFRoYXQncyB3aHkgd2UgY2hlY2sgZm9yCiAgICAgICAgICAgICMgRU9GICphdGVyKiBpbnNwZWN0aW5nIHRoZSBidWZmZXIuCiAgICAgICAgICAgIGlmIHNlbGYuX2VvZjoKICAgICAgICAgICAgICAgIGNodW5rID0gYnl0ZXMoc2VsZi5fYnVmZmVyKQogICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsZWFyKCkKICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSW5jb21wbGV0ZVJlYWRFcnJvcihjaHVuaywgTm9uZSkKCiAgICAgICAgICAgICMgX3dhaXRfZm9yX2RhdGEoKSB3aWxsIHJlc3VtZSByZWFkaW5nIGlmIHN0cmVhbSB3YXMgcGF1c2VkLgogICAgICAgICAgICBhd2FpdCBzZWxmLl93YWl0X2Zvcl9kYXRhKCdyZWFkdW50aWwnKQoKICAgICAgICBpZiBpc2VwID4gc2VsZi5fbGltaXQ6CiAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuTGltaXRPdmVycnVuRXJyb3IoCiAgICAgICAgICAgICAgICAnU2VwYXJhdG9yIGlzIGZvdW5kLCBidXQgY2h1bmsgaXMgbG9uZ2VyIHRoYW4gbGltaXQnLCBpc2VwKQoKICAgICAgICBjaHVuayA9IHNlbGYuX2J1ZmZlcls6aXNlcCArIHNlcGxlbl0KICAgICAgICBkZWwgc2VsZi5fYnVmZmVyWzppc2VwICsgc2VwbGVuXQogICAgICAgIHNlbGYuX21heWJlX3Jlc3VtZV90cmFuc3BvcnQoKQogICAgICAgIHJldHVybiBieXRlcyhjaHVuaykKCiAgICBhc3luYyBkZWYgcmVhZChzZWxmLCBuPS0xKToKICAgICAgICAiIiJSZWFkIHVwIHRvIGBuYCBieXRlcyBmcm9tIHRoZSBzdHJlYW0uCgogICAgICAgIElmIG4gaXMgbm90IHByb3ZpZGVkLCBvciBzZXQgdG8gLTEsIHJlYWQgdW50aWwgRU9GIGFuZCByZXR1cm4gYWxsIHJlYWQKICAgICAgICBieXRlcy4gSWYgdGhlIEVPRiB3YXMgcmVjZWl2ZWQgYW5kIHRoZSBpbnRlcm5hbCBidWZmZXIgaXMgZW1wdHksIHJldHVybgogICAgICAgIGFuIGVtcHR5IGJ5dGVzIG9iamVjdC4KCiAgICAgICAgSWYgbiBpcyB6ZXJvLCByZXR1cm4gZW1wdHkgYnl0ZXMgb2JqZWN0IGltbWVkaWF0ZWx5LgoKICAgICAgICBJZiBuIGlzIHBvc2l0aXZlLCB0aGlzIGZ1bmN0aW9uIHRyeSB0byByZWFkIGBuYCBieXRlcywgYW5kIG1heSByZXR1cm4KICAgICAgICBsZXNzIG9yIGVxdWFsIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLCBidXQgYXQgbGVhc3Qgb25lIGJ5dGUuIElmIEVPRiB3YXMKICAgICAgICByZWNlaXZlZCBiZWZvcmUgYW55IGJ5dGUgaXMgcmVhZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGVtcHR5IGJ5dGUKICAgICAgICBvYmplY3QuCgogICAgICAgIFJldHVybmVkIHZhbHVlIGlzIG5vdCBsaW1pdGVkIHdpdGggbGltaXQsIGNvbmZpZ3VyZWQgYXQgc3RyZWFtCiAgICAgICAgY3JlYXRpb24uCgogICAgICAgIElmIHN0cmVhbSB3YXMgcGF1c2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYXV0b21hdGljYWxseSByZXN1bWUgaXQgaWYKICAgICAgICBuZWVkZWQuCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYuX2V4Y2VwdGlvbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2Ugc2VsZi5fZXhjZXB0aW9uCgogICAgICAgIGlmIG4gPT0gMDoKICAgICAgICAgICAgcmV0dXJuIGInJwoKICAgICAgICBpZiBuIDwgMDoKICAgICAgICAgICAgIyBUaGlzIHVzZWQgdG8ganVzdCBsb29wIGNyZWF0aW5nIGEgbmV3IHdhaXRlciBob3BpbmcgdG8KICAgICAgICAgICAgIyBjb2xsZWN0IGV2ZXJ5dGhpbmcgaW4gc2VsZi5fYnVmZmVyLCBidXQgdGhhdCB3b3VsZAogICAgICAgICAgICAjIGRlYWRsb2NrIGlmIHRoZSBzdWJwcm9jZXNzIHNlbmRzIG1vcmUgdGhhbiBzZWxmLmxpbWl0CiAgICAgICAgICAgICMgYnl0ZXMuICBTbyBqdXN0IGNhbGwgc2VsZi5yZWFkKHNlbGYuX2xpbWl0KSB1bnRpbCBFT0YuCiAgICAgICAgICAgIGJsb2NrcyA9IFtdCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBibG9jayA9IGF3YWl0IHNlbGYucmVhZChzZWxmLl9saW1pdCkKICAgICAgICAgICAgICAgIGlmIG5vdCBibG9jazoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChibG9jaykKICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKGJsb2NrcykKCiAgICAgICAgaWYgbm90IHNlbGYuX2J1ZmZlciBhbmQgbm90IHNlbGYuX2VvZjoKICAgICAgICAgICAgYXdhaXQgc2VsZi5fd2FpdF9mb3JfZGF0YSgncmVhZCcpCgogICAgICAgICMgVGhpcyB3aWxsIHdvcmsgcmlnaHQgZXZlbiBpZiBidWZmZXIgaXMgbGVzcyB0aGFuIG4gYnl0ZXMKICAgICAgICBkYXRhID0gYnl0ZXMoc2VsZi5fYnVmZmVyWzpuXSkKICAgICAgICBkZWwgc2VsZi5fYnVmZmVyWzpuXQoKICAgICAgICBzZWxmLl9tYXliZV9yZXN1bWVfdHJhbnNwb3J0KCkKICAgICAgICByZXR1cm4gZGF0YQoKICAgIGFzeW5jIGRlZiByZWFkZXhhY3RseShzZWxmLCBuKToKICAgICAgICAiIiJSZWFkIGV4YWN0bHkgYG5gIGJ5dGVzLgoKICAgICAgICBSYWlzZSBhbiBJbmNvbXBsZXRlUmVhZEVycm9yIGlmIEVPRiBpcyByZWFjaGVkIGJlZm9yZSBgbmAgYnl0ZXMgY2FuIGJlCiAgICAgICAgcmVhZC4gVGhlIEluY29tcGxldGVSZWFkRXJyb3IucGFydGlhbCBhdHRyaWJ1dGUgb2YgdGhlIGV4Y2VwdGlvbiB3aWxsCiAgICAgICAgY29udGFpbiB0aGUgcGFydGlhbCByZWFkIGJ5dGVzLgoKICAgICAgICBpZiBuIGlzIHplcm8sIHJldHVybiBlbXB0eSBieXRlcyBvYmplY3QuCgogICAgICAgIFJldHVybmVkIHZhbHVlIGlzIG5vdCBsaW1pdGVkIHdpdGggbGltaXQsIGNvbmZpZ3VyZWQgYXQgc3RyZWFtCiAgICAgICAgY3JlYXRpb24uCgogICAgICAgIElmIHN0cmVhbSB3YXMgcGF1c2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYXV0b21hdGljYWxseSByZXN1bWUgaXQgaWYKICAgICAgICBuZWVkZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbiA8IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3JlYWRleGFjdGx5IHNpemUgY2FuIG5vdCBiZSBsZXNzIHRoYW4gemVybycpCgogICAgICAgIGlmIHNlbGYuX2V4Y2VwdGlvbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2Ugc2VsZi5fZXhjZXB0aW9uCgogICAgICAgIGlmIG4gPT0gMDoKICAgICAgICAgICAgcmV0dXJuIGInJwoKICAgICAgICB3aGlsZSBsZW4oc2VsZi5fYnVmZmVyKSA8IG46CiAgICAgICAgICAgIGlmIHNlbGYuX2VvZjoKICAgICAgICAgICAgICAgIGluY29tcGxldGUgPSBieXRlcyhzZWxmLl9idWZmZXIpCiAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIuY2xlYXIoKQogICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5JbmNvbXBsZXRlUmVhZEVycm9yKGluY29tcGxldGUsIG4pCgogICAgICAgICAgICBhd2FpdCBzZWxmLl93YWl0X2Zvcl9kYXRhKCdyZWFkZXhhY3RseScpCgogICAgICAgIGlmIGxlbihzZWxmLl9idWZmZXIpID09IG46CiAgICAgICAgICAgIGRhdGEgPSBieXRlcyhzZWxmLl9idWZmZXIpCiAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5jbGVhcigpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YSA9IGJ5dGVzKHNlbGYuX2J1ZmZlcls6bl0pCiAgICAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbOm5dCiAgICAgICAgc2VsZi5fbWF5YmVfcmVzdW1lX3RyYW5zcG9ydCgpCiAgICAgICAgcmV0dXJuIGRhdGEKCiAgICBkZWYgX19haXRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKICAgICAgICB2YWwgPSBhd2FpdCBzZWxmLnJlYWRsaW5lKCkKICAgICAgICBpZiB2YWwgPT0gYicnOgogICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KICAgICAgICByZXR1cm4gdmFsClBLAwQUAAAAAAACIKNWf3JI2+0cAADtHAAAFQAAAGFzeW5jaW8vc3VicHJvY2Vzcy5weV9fYWxsX18gPSAnY3JlYXRlX3N1YnByb2Nlc3NfZXhlYycsICdjcmVhdGVfc3VicHJvY2Vzc19zaGVsbCcKCmltcG9ydCBzdWJwcm9jZXNzCgpmcm9tIC4gaW1wb3J0IGV2ZW50cwpmcm9tIC4gaW1wb3J0IHByb3RvY29scwpmcm9tIC4gaW1wb3J0IHN0cmVhbXMKZnJvbSAuIGltcG9ydCB0YXNrcwpmcm9tIC5sb2cgaW1wb3J0IGxvZ2dlcgoKClBJUEUgPSBzdWJwcm9jZXNzLlBJUEUKU1RET1VUID0gc3VicHJvY2Vzcy5TVERPVVQKREVWTlVMTCA9IHN1YnByb2Nlc3MuREVWTlVMTAoKCmNsYXNzIFN1YnByb2Nlc3NTdHJlYW1Qcm90b2NvbChzdHJlYW1zLkZsb3dDb250cm9sTWl4aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbHMuU3VicHJvY2Vzc1Byb3RvY29sKToKICAgICIiIkxpa2UgU3RyZWFtUmVhZGVyUHJvdG9jb2wsIGJ1dCBmb3IgYSBzdWJwcm9jZXNzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW1pdCwgbG9vcCk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsb29wPWxvb3ApCiAgICAgICAgc2VsZi5fbGltaXQgPSBsaW1pdAogICAgICAgIHNlbGYuc3RkaW4gPSBzZWxmLnN0ZG91dCA9IHNlbGYuc3RkZXJyID0gTm9uZQogICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IE5vbmUKICAgICAgICBzZWxmLl9wcm9jZXNzX2V4aXRlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fcGlwZV9mZHMgPSBbXQogICAgICAgIHNlbGYuX3N0ZGluX2Nsb3NlZCA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGluZm8gPSBbc2VsZi5fX2NsYXNzX18uX19uYW1lX19dCiAgICAgICAgaWYgc2VsZi5zdGRpbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgaW5mby5hcHBlbmQoZidzdGRpbj17c2VsZi5zdGRpbiFyfScpCiAgICAgICAgaWYgc2VsZi5zdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnc3Rkb3V0PXtzZWxmLnN0ZG91dCFyfScpCiAgICAgICAgaWYgc2VsZi5zdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnc3RkZXJyPXtzZWxmLnN0ZGVyciFyfScpCiAgICAgICAgcmV0dXJuICc8e30+Jy5mb3JtYXQoJyAnLmpvaW4oaW5mbykpCgogICAgZGVmIGNvbm5lY3Rpb25fbWFkZShzZWxmLCB0cmFuc3BvcnQpOgogICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IHRyYW5zcG9ydAoKICAgICAgICBzdGRvdXRfdHJhbnNwb3J0ID0gdHJhbnNwb3J0LmdldF9waXBlX3RyYW5zcG9ydCgxKQogICAgICAgIGlmIHN0ZG91dF90cmFuc3BvcnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gc3RyZWFtcy5TdHJlYW1SZWFkZXIobGltaXQ9c2VsZi5fbGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLl9sb29wKQogICAgICAgICAgICBzZWxmLnN0ZG91dC5zZXRfdHJhbnNwb3J0KHN0ZG91dF90cmFuc3BvcnQpCiAgICAgICAgICAgIHNlbGYuX3BpcGVfZmRzLmFwcGVuZCgxKQoKICAgICAgICBzdGRlcnJfdHJhbnNwb3J0ID0gdHJhbnNwb3J0LmdldF9waXBlX3RyYW5zcG9ydCgyKQogICAgICAgIGlmIHN0ZGVycl90cmFuc3BvcnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gc3RyZWFtcy5TdHJlYW1SZWFkZXIobGltaXQ9c2VsZi5fbGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLl9sb29wKQogICAgICAgICAgICBzZWxmLnN0ZGVyci5zZXRfdHJhbnNwb3J0KHN0ZGVycl90cmFuc3BvcnQpCiAgICAgICAgICAgIHNlbGYuX3BpcGVfZmRzLmFwcGVuZCgyKQoKICAgICAgICBzdGRpbl90cmFuc3BvcnQgPSB0cmFuc3BvcnQuZ2V0X3BpcGVfdHJhbnNwb3J0KDApCiAgICAgICAgaWYgc3RkaW5fdHJhbnNwb3J0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLnN0ZGluID0gc3RyZWFtcy5TdHJlYW1Xcml0ZXIoc3RkaW5fdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w9c2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlcj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLl9sb29wKQoKICAgIGRlZiBwaXBlX2RhdGFfcmVjZWl2ZWQoc2VsZiwgZmQsIGRhdGEpOgogICAgICAgIGlmIGZkID09IDE6CiAgICAgICAgICAgIHJlYWRlciA9IHNlbGYuc3Rkb3V0CiAgICAgICAgZWxpZiBmZCA9PSAyOgogICAgICAgICAgICByZWFkZXIgPSBzZWxmLnN0ZGVycgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlYWRlciA9IE5vbmUKICAgICAgICBpZiByZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJlYWRlci5mZWVkX2RhdGEoZGF0YSkKCiAgICBkZWYgcGlwZV9jb25uZWN0aW9uX2xvc3Qoc2VsZiwgZmQsIGV4Yyk6CiAgICAgICAgaWYgZmQgPT0gMDoKICAgICAgICAgICAgcGlwZSA9IHNlbGYuc3RkaW4KICAgICAgICAgICAgaWYgcGlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHBpcGUuY2xvc2UoKQogICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb25fbG9zdChleGMpCiAgICAgICAgICAgIGlmIGV4YyBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fc3RkaW5fY2xvc2VkLnNldF9yZXN1bHQoTm9uZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX3N0ZGluX2Nsb3NlZC5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgZmQgPT0gMToKICAgICAgICAgICAgcmVhZGVyID0gc2VsZi5zdGRvdXQKICAgICAgICBlbGlmIGZkID09IDI6CiAgICAgICAgICAgIHJlYWRlciA9IHNlbGYuc3RkZXJyCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVhZGVyID0gTm9uZQogICAgICAgIGlmIHJlYWRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgZXhjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByZWFkZXIuZmVlZF9lb2YoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVhZGVyLnNldF9leGNlcHRpb24oZXhjKQoKICAgICAgICBpZiBmZCBpbiBzZWxmLl9waXBlX2ZkczoKICAgICAgICAgICAgc2VsZi5fcGlwZV9mZHMucmVtb3ZlKGZkKQogICAgICAgIHNlbGYuX21heWJlX2Nsb3NlX3RyYW5zcG9ydCgpCgogICAgZGVmIHByb2Nlc3NfZXhpdGVkKHNlbGYpOgogICAgICAgIHNlbGYuX3Byb2Nlc3NfZXhpdGVkID0gVHJ1ZQogICAgICAgIHNlbGYuX21heWJlX2Nsb3NlX3RyYW5zcG9ydCgpCgogICAgZGVmIF9tYXliZV9jbG9zZV90cmFuc3BvcnQoc2VsZik6CiAgICAgICAgaWYgbGVuKHNlbGYuX3BpcGVfZmRzKSA9PSAwIGFuZCBzZWxmLl9wcm9jZXNzX2V4aXRlZDoKICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0ID0gTm9uZQoKICAgIGRlZiBfZ2V0X2Nsb3NlX3dhaXRlcihzZWxmLCBzdHJlYW0pOgogICAgICAgIGlmIHN0cmVhbSBpcyBzZWxmLnN0ZGluOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RkaW5fY2xvc2VkCgoKY2xhc3MgUHJvY2VzczoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFuc3BvcnQsIHByb3RvY29sLCBsb29wKToKICAgICAgICBzZWxmLl90cmFuc3BvcnQgPSB0cmFuc3BvcnQKICAgICAgICBzZWxmLl9wcm90b2NvbCA9IHByb3RvY29sCiAgICAgICAgc2VsZi5fbG9vcCA9IGxvb3AKICAgICAgICBzZWxmLnN0ZGluID0gcHJvdG9jb2wuc3RkaW4KICAgICAgICBzZWxmLnN0ZG91dCA9IHByb3RvY29sLnN0ZG91dAogICAgICAgIHNlbGYuc3RkZXJyID0gcHJvdG9jb2wuc3RkZXJyCiAgICAgICAgc2VsZi5waWQgPSB0cmFuc3BvcnQuZ2V0X3BpZCgpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBmJzx7c2VsZi5fX2NsYXNzX18uX19uYW1lX199IHtzZWxmLnBpZH0+JwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHJldHVybmNvZGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3RyYW5zcG9ydC5nZXRfcmV0dXJuY29kZSgpCgogICAgYXN5bmMgZGVmIHdhaXQoc2VsZik6CiAgICAgICAgIiIiV2FpdCB1bnRpbCB0aGUgcHJvY2VzcyBleGl0IGFuZCByZXR1cm4gdGhlIHByb2Nlc3MgcmV0dXJuIGNvZGUuIiIiCiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuX3RyYW5zcG9ydC5fd2FpdCgpCgogICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZ25hbCk6CiAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNlbmRfc2lnbmFsKHNpZ25hbCkKCiAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgIHNlbGYuX3RyYW5zcG9ydC50ZXJtaW5hdGUoKQoKICAgIGRlZiBraWxsKHNlbGYpOgogICAgICAgIHNlbGYuX3RyYW5zcG9ydC5raWxsKCkKCiAgICBhc3luYyBkZWYgX2ZlZWRfc3RkaW4oc2VsZiwgaW5wdXQpOgogICAgICAgIGRlYnVnID0gc2VsZi5fbG9vcC5nZXRfZGVidWcoKQogICAgICAgIHNlbGYuc3RkaW4ud3JpdGUoaW5wdXQpCiAgICAgICAgaWYgZGVidWc6CiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygKICAgICAgICAgICAgICAgICclciBjb21tdW5pY2F0ZTogZmVlZCBzdGRpbiAoJXMgYnl0ZXMpJywgc2VsZiwgbGVuKGlucHV0KSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF3YWl0IHNlbGYuc3RkaW4uZHJhaW4oKQogICAgICAgIGV4Y2VwdCAoQnJva2VuUGlwZUVycm9yLCBDb25uZWN0aW9uUmVzZXRFcnJvcikgYXMgZXhjOgogICAgICAgICAgICAjIGNvbW11bmljYXRlKCkgaWdub3JlcyBCcm9rZW5QaXBlRXJyb3IgYW5kIENvbm5lY3Rpb25SZXNldEVycm9yCiAgICAgICAgICAgIGlmIGRlYnVnOgogICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCclciBjb21tdW5pY2F0ZTogc3RkaW4gZ290ICVyJywgc2VsZiwgZXhjKQoKICAgICAgICBpZiBkZWJ1ZzoKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCclciBjb21tdW5pY2F0ZTogY2xvc2Ugc3RkaW4nLCBzZWxmKQogICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQoKICAgIGFzeW5jIGRlZiBfbm9vcChzZWxmKToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGFzeW5jIGRlZiBfcmVhZF9zdHJlYW0oc2VsZiwgZmQpOgogICAgICAgIHRyYW5zcG9ydCA9IHNlbGYuX3RyYW5zcG9ydC5nZXRfcGlwZV90cmFuc3BvcnQoZmQpCiAgICAgICAgaWYgZmQgPT0gMjoKICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5zdGRlcnIKICAgICAgICBlbHNlOgogICAgICAgICAgICBhc3NlcnQgZmQgPT0gMQogICAgICAgICAgICBzdHJlYW0gPSBzZWxmLnN0ZG91dAogICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIG5hbWUgPSAnc3Rkb3V0JyBpZiBmZCA9PSAxIGVsc2UgJ3N0ZGVycicKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCclciBjb21tdW5pY2F0ZTogcmVhZCAlcycsIHNlbGYsIG5hbWUpCiAgICAgICAgb3V0cHV0ID0gYXdhaXQgc3RyZWFtLnJlYWQoKQogICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIG5hbWUgPSAnc3Rkb3V0JyBpZiBmZCA9PSAxIGVsc2UgJ3N0ZGVycicKICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCclciBjb21tdW5pY2F0ZTogY2xvc2UgJXMnLCBzZWxmLCBuYW1lKQogICAgICAgIHRyYW5zcG9ydC5jbG9zZSgpCiAgICAgICAgcmV0dXJuIG91dHB1dAoKICAgIGFzeW5jIGRlZiBjb21tdW5pY2F0ZShzZWxmLCBpbnB1dD1Ob25lKToKICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3RkaW4gPSBzZWxmLl9mZWVkX3N0ZGluKGlucHV0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN0ZGluID0gc2VsZi5fbm9vcCgpCiAgICAgICAgaWYgc2VsZi5zdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3JlYWRfc3RyZWFtKDEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5fbm9vcCgpCiAgICAgICAgaWYgc2VsZi5zdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX3JlYWRfc3RyZWFtKDIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fbm9vcCgpCiAgICAgICAgc3RkaW4sIHN0ZG91dCwgc3RkZXJyID0gYXdhaXQgdGFza3MuZ2F0aGVyKHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKICAgICAgICBhd2FpdCBzZWxmLndhaXQoKQogICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCgoKYXN5bmMgZGVmIGNyZWF0ZV9zdWJwcm9jZXNzX3NoZWxsKGNtZCwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9c3RyZWFtcy5fREVGQVVMVF9MSU1JVCwgKiprd2RzKToKICAgIGxvb3AgPSBldmVudHMuZ2V0X3J1bm5pbmdfbG9vcCgpCiAgICBwcm90b2NvbF9mYWN0b3J5ID0gbGFtYmRhOiBTdWJwcm9jZXNzU3RyZWFtUHJvdG9jb2wobGltaXQ9bGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKQogICAgdHJhbnNwb3J0LCBwcm90b2NvbCA9IGF3YWl0IGxvb3Auc3VicHJvY2Vzc19zaGVsbCgKICAgICAgICBwcm90b2NvbF9mYWN0b3J5LAogICAgICAgIGNtZCwgc3RkaW49c3RkaW4sIHN0ZG91dD1zdGRvdXQsCiAgICAgICAgc3RkZXJyPXN0ZGVyciwgKiprd2RzKQogICAgcmV0dXJuIFByb2Nlc3ModHJhbnNwb3J0LCBwcm90b2NvbCwgbG9vcCkKCgphc3luYyBkZWYgY3JlYXRlX3N1YnByb2Nlc3NfZXhlYyhwcm9ncmFtLCAqYXJncywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1Ob25lLCBsaW1pdD1zdHJlYW1zLl9ERUZBVUxUX0xJTUlULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3ZHMpOgogICAgbG9vcCA9IGV2ZW50cy5nZXRfcnVubmluZ19sb29wKCkKICAgIHByb3RvY29sX2ZhY3RvcnkgPSBsYW1iZGE6IFN1YnByb2Nlc3NTdHJlYW1Qcm90b2NvbChsaW1pdD1saW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApCiAgICB0cmFuc3BvcnQsIHByb3RvY29sID0gYXdhaXQgbG9vcC5zdWJwcm9jZXNzX2V4ZWMoCiAgICAgICAgcHJvdG9jb2xfZmFjdG9yeSwKICAgICAgICBwcm9ncmFtLCAqYXJncywKICAgICAgICBzdGRpbj1zdGRpbiwgc3Rkb3V0PXN0ZG91dCwKICAgICAgICBzdGRlcnI9c3RkZXJyLCAqKmt3ZHMpCiAgICByZXR1cm4gUHJvY2Vzcyh0cmFuc3BvcnQsIHByb3RvY29sLCBsb29wKQpQSwMEFAAAAAAAAiCjVvWUK7ZlHgAAZR4AABUAAABhc3luY2lvL3Rhc2tncm91cHMucHkjIEFkYXB0ZWQgd2l0aCBwZXJtaXNzaW9uIGZyb20gdGhlIEVkZ2VEQiBwcm9qZWN0OwojIGxpY2Vuc2U6IFBTRkwuCgoKX19hbGxfXyA9IFsiVGFza0dyb3VwIl0KCmZyb20gLiBpbXBvcnQgZXZlbnRzCmZyb20gLiBpbXBvcnQgZXhjZXB0aW9ucwpmcm9tIC4gaW1wb3J0IHRhc2tzCgoKY2xhc3MgVGFza0dyb3VwOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9lbnRlcmVkID0gRmFsc2UKICAgICAgICBzZWxmLl9leGl0aW5nID0gRmFsc2UKICAgICAgICBzZWxmLl9hYm9ydGluZyA9IEZhbHNlCiAgICAgICAgc2VsZi5fbG9vcCA9IE5vbmUKICAgICAgICBzZWxmLl9wYXJlbnRfdGFzayA9IE5vbmUKICAgICAgICBzZWxmLl9wYXJlbnRfY2FuY2VsX3JlcXVlc3RlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fdGFza3MgPSBzZXQoKQogICAgICAgIHNlbGYuX2Vycm9ycyA9IFtdCiAgICAgICAgc2VsZi5fYmFzZV9lcnJvciA9IE5vbmUKICAgICAgICBzZWxmLl9vbl9jb21wbGV0ZWRfZnV0ID0gTm9uZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBpbmZvID0gWycnXQogICAgICAgIGlmIHNlbGYuX3Rhc2tzOgogICAgICAgICAgICBpbmZvLmFwcGVuZChmJ3Rhc2tzPXtsZW4oc2VsZi5fdGFza3MpfScpCiAgICAgICAgaWYgc2VsZi5fZXJyb3JzOgogICAgICAgICAgICBpbmZvLmFwcGVuZChmJ2Vycm9ycz17bGVuKHNlbGYuX2Vycm9ycyl9JykKICAgICAgICBpZiBzZWxmLl9hYm9ydGluZzoKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2NhbmNlbGxpbmcnKQogICAgICAgIGVsaWYgc2VsZi5fZW50ZXJlZDoKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2VudGVyZWQnKQoKICAgICAgICBpbmZvX3N0ciA9ICcgJy5qb2luKGluZm8pCiAgICAgICAgcmV0dXJuIGYnPFRhc2tHcm91cHtpbmZvX3N0cn0+JwoKICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2VudGVyZWQ6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgIGYiVGFza0dyb3VwIHtzZWxmIXJ9IGhhcyBiZWVuIGFscmVhZHkgZW50ZXJlZCIpCiAgICAgICAgc2VsZi5fZW50ZXJlZCA9IFRydWUKCiAgICAgICAgaWYgc2VsZi5fbG9vcCBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9sb29wID0gZXZlbnRzLmdldF9ydW5uaW5nX2xvb3AoKQoKICAgICAgICBzZWxmLl9wYXJlbnRfdGFzayA9IHRhc2tzLmN1cnJlbnRfdGFzayhzZWxmLl9sb29wKQogICAgICAgIGlmIHNlbGYuX3BhcmVudF90YXNrIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgIGYnVGFza0dyb3VwIHtzZWxmIXJ9IGNhbm5vdCBkZXRlcm1pbmUgdGhlIHBhcmVudCB0YXNrJykKCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsIGV0LCBleGMsIHRiKToKICAgICAgICBzZWxmLl9leGl0aW5nID0gVHJ1ZQoKICAgICAgICBpZiAoZXhjIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgc2VsZi5faXNfYmFzZV9lcnJvcihleGMpIGFuZAogICAgICAgICAgICAgICAgc2VsZi5fYmFzZV9lcnJvciBpcyBOb25lKToKICAgICAgICAgICAgc2VsZi5fYmFzZV9lcnJvciA9IGV4YwoKICAgICAgICBwcm9wYWdhdGVfY2FuY2VsbGF0aW9uX2Vycm9yID0gXAogICAgICAgICAgICBleGMgaWYgZXQgaXMgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvciBlbHNlIE5vbmUKICAgICAgICBpZiBzZWxmLl9wYXJlbnRfY2FuY2VsX3JlcXVlc3RlZDoKICAgICAgICAgICAgIyBJZiB0aGlzIGZsYWcgaXMgc2V0IHdlICptdXN0KiBjYWxsIHVuY2FuY2VsKCkuCiAgICAgICAgICAgIGlmIHNlbGYuX3BhcmVudF90YXNrLnVuY2FuY2VsKCkgPT0gMDoKICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgYXJlIG5vIHBlbmRpbmcgY2FuY2VsbGF0aW9ucyBsZWZ0LAogICAgICAgICAgICAgICAgIyBkb24ndCBwcm9wYWdhdGUgQ2FuY2VsbGVkRXJyb3IuCiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfY2FuY2VsbGF0aW9uX2Vycm9yID0gTm9uZQoKICAgICAgICBpZiBldCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Fib3J0aW5nOgogICAgICAgICAgICAgICAgIyBPdXIgcGFyZW50IHRhc2sgaXMgYmVpbmcgY2FuY2VsbGVkOgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyAgICBhc3luYyB3aXRoIFRhc2tHcm91cCgpIGFzIGc6CiAgICAgICAgICAgICAgICAjICAgICAgICBnLmNyZWF0ZV90YXNrKC4uLikKICAgICAgICAgICAgICAgICMgICAgICAgIGF3YWl0IC4uLiAgIyA8LSBDYW5jZWxsZWRFcnJvcgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyBvciB0aGVyZSdzIGFuIGV4Y2VwdGlvbiBpbiAiYXN5bmMgd2l0aCI6CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjICAgIGFzeW5jIHdpdGggVGFza0dyb3VwKCkgYXMgZzoKICAgICAgICAgICAgICAgICMgICAgICAgIGcuY3JlYXRlX3Rhc2soLi4uKQogICAgICAgICAgICAgICAgIyAgICAgICAgMSAvIDAKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgIHNlbGYuX2Fib3J0KCkKCiAgICAgICAgIyBXZSB1c2Ugd2hpbGUtbG9vcCBoZXJlIGJlY2F1c2UgInNlbGYuX29uX2NvbXBsZXRlZF9mdXQiCiAgICAgICAgIyBjYW4gYmUgY2FuY2VsbGVkIG11bHRpcGxlIHRpbWVzIGlmIG91ciBwYXJlbnQgdGFzawogICAgICAgICMgaXMgYmVpbmcgY2FuY2VsbGVkIHJlcGVhdGVkbHkgKG9yIGV2ZW4gb25jZSwgd2hlbgogICAgICAgICMgb3VyIG93biBjYW5jZWxsYXRpb24gaXMgYWxyZWFkeSBpbiBwcm9ncmVzcykKICAgICAgICB3aGlsZSBzZWxmLl90YXNrczoKICAgICAgICAgICAgaWYgc2VsZi5fb25fY29tcGxldGVkX2Z1dCBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fb25fY29tcGxldGVkX2Z1dCA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBhd2FpdCBzZWxmLl9vbl9jb21wbGV0ZWRfZnV0CiAgICAgICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLkNhbmNlbGxlZEVycm9yIGFzIGV4OgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Fib3J0aW5nOgogICAgICAgICAgICAgICAgICAgICMgT3VyIHBhcmVudCB0YXNrIGlzIGJlaW5nIGNhbmNlbGxlZDoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgICBhc3luYyBkZWYgd3JhcHBlcigpOgogICAgICAgICAgICAgICAgICAgICMgICAgICAgIGFzeW5jIHdpdGggVGFza0dyb3VwKCkgYXMgZzoKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgZy5jcmVhdGVfdGFzayhmb28pCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgIndyYXBwZXIiIGlzIGJlaW5nIGNhbmNlbGxlZCB3aGlsZSAiZm9vIiBpcwogICAgICAgICAgICAgICAgICAgICMgc3RpbGwgcnVubmluZy4KICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfY2FuY2VsbGF0aW9uX2Vycm9yID0gZXgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hYm9ydCgpCgogICAgICAgICAgICBzZWxmLl9vbl9jb21wbGV0ZWRfZnV0ID0gTm9uZQoKICAgICAgICBhc3NlcnQgbm90IHNlbGYuX3Rhc2tzCgogICAgICAgIGlmIHNlbGYuX2Jhc2VfZXJyb3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuX2Jhc2VfZXJyb3IKCiAgICAgICAgIyBQcm9wYWdhdGUgQ2FuY2VsbGVkRXJyb3IgaWYgdGhlcmUgaXMgb25lLCBleGNlcHQgaWYgdGhlcmUKICAgICAgICAjIGFyZSBvdGhlciBlcnJvcnMgLS0gdGhvc2UgaGF2ZSBwcmlvcml0eS4KICAgICAgICBpZiBwcm9wYWdhdGVfY2FuY2VsbGF0aW9uX2Vycm9yIGFuZCBub3Qgc2VsZi5fZXJyb3JzOgogICAgICAgICAgICByYWlzZSBwcm9wYWdhdGVfY2FuY2VsbGF0aW9uX2Vycm9yCgogICAgICAgIGlmIGV0IGlzIG5vdCBOb25lIGFuZCBldCBpcyBub3QgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVuZChleGMpCgogICAgICAgIGlmIHNlbGYuX2Vycm9yczoKICAgICAgICAgICAgIyBFeGNlcHRpb25zIGFyZSBoZWF2eSBvYmplY3RzIHRoYXQgY2FuIGhhdmUgb2JqZWN0CiAgICAgICAgICAgICMgY3ljbGVzIChiYWQgZm9yIEdDKTsgbGV0J3Mgbm90IGtlZXAgYSByZWZlcmVuY2UgdG8KICAgICAgICAgICAgIyBhIGJ1bmNoIG9mIHRoZW0uCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG1lID0gQmFzZUV4Y2VwdGlvbkdyb3VwKCd1bmhhbmRsZWQgZXJyb3JzIGluIGEgVGFza0dyb3VwJywgc2VsZi5fZXJyb3JzKQogICAgICAgICAgICAgICAgcmFpc2UgbWUgZnJvbSBOb25lCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcnMgPSBOb25lCgogICAgZGVmIGNyZWF0ZV90YXNrKHNlbGYsIGNvcm8sICosIG5hbWU9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICBpZiBub3Qgc2VsZi5fZW50ZXJlZDoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYiVGFza0dyb3VwIHtzZWxmIXJ9IGhhcyBub3QgYmVlbiBlbnRlcmVkIikKICAgICAgICBpZiBzZWxmLl9leGl0aW5nIGFuZCBub3Qgc2VsZi5fdGFza3M6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIlRhc2tHcm91cCB7c2VsZiFyfSBpcyBmaW5pc2hlZCIpCiAgICAgICAgaWYgc2VsZi5fYWJvcnRpbmc6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIlRhc2tHcm91cCB7c2VsZiFyfSBpcyBzaHV0dGluZyBkb3duIikKICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgIHRhc2sgPSBzZWxmLl9sb29wLmNyZWF0ZV90YXNrKGNvcm8pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGFzayA9IHNlbGYuX2xvb3AuY3JlYXRlX3Rhc2soY29ybywgY29udGV4dD1jb250ZXh0KQogICAgICAgIHRhc2tzLl9zZXRfdGFza19uYW1lKHRhc2ssIG5hbWUpCiAgICAgICAgdGFzay5hZGRfZG9uZV9jYWxsYmFjayhzZWxmLl9vbl90YXNrX2RvbmUpCiAgICAgICAgc2VsZi5fdGFza3MuYWRkKHRhc2spCiAgICAgICAgcmV0dXJuIHRhc2sKCiAgICAjIFNpbmNlIFB5dGhvbiAzLjggVGFza3MgcHJvcGFnYXRlIGFsbCBleGNlcHRpb25zIGNvcnJlY3RseSwKICAgICMgZXhjZXB0IGZvciBLZXlib2FyZEludGVycnVwdCBhbmQgU3lzdGVtRXhpdCB3aGljaCBhcmUKICAgICMgc3RpbGwgY29uc2lkZXJlZCBzcGVjaWFsLgoKICAgIGRlZiBfaXNfYmFzZV9lcnJvcihzZWxmLCBleGM6IEJhc2VFeGNlcHRpb24pIC0+IGJvb2w6CiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZXhjLCBCYXNlRXhjZXB0aW9uKQogICAgICAgIHJldHVybiBpc2luc3RhbmNlKGV4YywgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KSkKCiAgICBkZWYgX2Fib3J0KHNlbGYpOgogICAgICAgIHNlbGYuX2Fib3J0aW5nID0gVHJ1ZQoKICAgICAgICBmb3IgdCBpbiBzZWxmLl90YXNrczoKICAgICAgICAgICAgaWYgbm90IHQuZG9uZSgpOgogICAgICAgICAgICAgICAgdC5jYW5jZWwoKQoKICAgIGRlZiBfb25fdGFza19kb25lKHNlbGYsIHRhc2spOgogICAgICAgIHNlbGYuX3Rhc2tzLmRpc2NhcmQodGFzaykKCiAgICAgICAgaWYgc2VsZi5fb25fY29tcGxldGVkX2Z1dCBpcyBub3QgTm9uZSBhbmQgbm90IHNlbGYuX3Rhc2tzOgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fb25fY29tcGxldGVkX2Z1dC5kb25lKCk6CiAgICAgICAgICAgICAgICBzZWxmLl9vbl9jb21wbGV0ZWRfZnV0LnNldF9yZXN1bHQoVHJ1ZSkKCiAgICAgICAgaWYgdGFzay5jYW5jZWxsZWQoKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGV4YyA9IHRhc2suZXhjZXB0aW9uKCkKICAgICAgICBpZiBleGMgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHNlbGYuX2Vycm9ycy5hcHBlbmQoZXhjKQogICAgICAgIGlmIHNlbGYuX2lzX2Jhc2VfZXJyb3IoZXhjKSBhbmQgc2VsZi5fYmFzZV9lcnJvciBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9iYXNlX2Vycm9yID0gZXhjCgogICAgICAgIGlmIHNlbGYuX3BhcmVudF90YXNrLmRvbmUoKToKICAgICAgICAgICAgIyBOb3Qgc3VyZSBpZiB0aGlzIGNhc2UgaXMgcG9zc2libGUsIGJ1dCB3ZSB3YW50IHRvIGhhbmRsZQogICAgICAgICAgICAjIGl0IGFueXdheXMuCiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9leGNlcHRpb25faGFuZGxlcih7CiAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IGYnVGFzayB7dGFzayFyfSBoYXMgZXJyb3JlZCBvdXQgYnV0IGl0cyBwYXJlbnQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICBmJ3Rhc2sge3NlbGYuX3BhcmVudF90YXNrfSBpcyBhbHJlYWR5IGNvbXBsZXRlZCcsCiAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgJ3Rhc2snOiB0YXNrLAogICAgICAgICAgICB9KQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgbm90IHNlbGYuX2Fib3J0aW5nIGFuZCBub3Qgc2VsZi5fcGFyZW50X2NhbmNlbF9yZXF1ZXN0ZWQ6CiAgICAgICAgICAgICMgSWYgcGFyZW50IHRhc2sgKmlzIG5vdCogYmVpbmcgY2FuY2VsbGVkLCBpdCBtZWFucyB0aGF0IHdlIHdhbnQKICAgICAgICAgICAgIyB0byBtYW51YWxseSBjYW5jZWwgaXQgdG8gYWJvcnQgd2hhdGV2ZXIgaXMgYmVpbmcgcnVuIHJpZ2h0IG5vdwogICAgICAgICAgICAjIGluIHRoZSBUYXNrR3JvdXAuICBCdXQgd2Ugd2FudCB0byBtYXJrIHBhcmVudCB0YXNrIGFzCiAgICAgICAgICAgICMgIm5vdCBjYW5jZWxsZWQiIGxhdGVyIGluIF9fYWV4aXRfXy4gIEV4YW1wbGUgc2l0dWF0aW9uIHRoYXQKICAgICAgICAgICAgIyB3ZSBuZWVkIHRvIGhhbmRsZToKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgIGFzeW5jIGRlZiBmb28oKToKICAgICAgICAgICAgIyAgICAgICAgdHJ5OgogICAgICAgICAgICAjICAgICAgICAgICAgYXN5bmMgd2l0aCBUYXNrR3JvdXAoKSBhcyBnOgogICAgICAgICAgICAjICAgICAgICAgICAgICAgIGcuY3JlYXRlX3Rhc2soY3Jhc2hfc29vbigpKQogICAgICAgICAgICAjICAgICAgICAgICAgICAgIGF3YWl0IHNvbWV0aGluZyAgIyA8LSB0aGlzIG5lZWRzIHRvIGJlIGNhbmNlbGVkCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIGJ5IHRoZSBUYXNrR3JvdXAsIGUuZy4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZm9vKCkgbmVlZHMgdG8gYmUgY2FuY2VsbGVkCiAgICAgICAgICAgICMgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICMgICAgICAgICAgICAjIElnbm9yZSBhbnkgZXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIFRhc2tHcm91cAogICAgICAgICAgICAjICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAjICAgICAgICBhd2FpdCBzb21ldGhpbmdfZWxzZSAgICAgIyB0aGlzIGxpbmUgaGFzIHRvIGJlIGNhbGxlZAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciBUYXNrR3JvdXAgaXMgZmluaXNoZWQuCiAgICAgICAgICAgIHNlbGYuX2Fib3J0KCkKICAgICAgICAgICAgc2VsZi5fcGFyZW50X2NhbmNlbF9yZXF1ZXN0ZWQgPSBUcnVlCiAgICAgICAgICAgIHNlbGYuX3BhcmVudF90YXNrLmNhbmNlbCgpClBLAwQUAAAAAAACIKNWsGEppAqEAAAKhAAAEAAAAGFzeW5jaW8vdGFza3MucHkiIiJTdXBwb3J0IGZvciB0YXNrcywgY29yb3V0aW5lcyBhbmQgdGhlIHNjaGVkdWxlci4iIiIKCl9fYWxsX18gPSAoCiAgICAnVGFzaycsICdjcmVhdGVfdGFzaycsCiAgICAnRklSU1RfQ09NUExFVEVEJywgJ0ZJUlNUX0VYQ0VQVElPTicsICdBTExfQ09NUExFVEVEJywKICAgICd3YWl0JywgJ3dhaXRfZm9yJywgJ2FzX2NvbXBsZXRlZCcsICdzbGVlcCcsCiAgICAnZ2F0aGVyJywgJ3NoaWVsZCcsICdlbnN1cmVfZnV0dXJlJywgJ3J1bl9jb3JvdXRpbmVfdGhyZWFkc2FmZScsCiAgICAnY3VycmVudF90YXNrJywgJ2FsbF90YXNrcycsCiAgICAnX3JlZ2lzdGVyX3Rhc2snLCAnX3VucmVnaXN0ZXJfdGFzaycsICdfZW50ZXJfdGFzaycsICdfbGVhdmVfdGFzaycsCikKCmltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMKaW1wb3J0IGNvbnRleHR2YXJzCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IGluc3BlY3QKaW1wb3J0IGl0ZXJ0b29scwppbXBvcnQgdHlwZXMKaW1wb3J0IHdhcm5pbmdzCmltcG9ydCB3ZWFrcmVmCmZyb20gdHlwZXMgaW1wb3J0IEdlbmVyaWNBbGlhcwoKZnJvbSAuIGltcG9ydCBiYXNlX3Rhc2tzCmZyb20gLiBpbXBvcnQgY29yb3V0aW5lcwpmcm9tIC4gaW1wb3J0IGV2ZW50cwpmcm9tIC4gaW1wb3J0IGV4Y2VwdGlvbnMKZnJvbSAuIGltcG9ydCBmdXR1cmVzCmZyb20gLmNvcm91dGluZXMgaW1wb3J0IF9pc19jb3JvdXRpbmUKCiMgSGVscGVyIHRvIGdlbmVyYXRlIG5ldyB0YXNrIG5hbWVzCiMgVGhpcyB1c2VzIGl0ZXJ0b29scy5jb3VudCgpIGluc3RlYWQgb2YgYSAiKz0gMSIgb3BlcmF0aW9uIGJlY2F1c2UgdGhlIGxhdHRlcgojIGlzIG5vdCB0aHJlYWQgc2FmZS4gU2VlIGJwby0xMTg2NiBmb3IgYSBsb25nZXIgZXhwbGFuYXRpb24uCl90YXNrX25hbWVfY291bnRlciA9IGl0ZXJ0b29scy5jb3VudCgxKS5fX25leHRfXwoKCmRlZiBjdXJyZW50X3Rhc2sobG9vcD1Ob25lKToKICAgICIiIlJldHVybiBhIGN1cnJlbnRseSBleGVjdXRlZCB0YXNrLiIiIgogICAgaWYgbG9vcCBpcyBOb25lOgogICAgICAgIGxvb3AgPSBldmVudHMuZ2V0X3J1bm5pbmdfbG9vcCgpCiAgICByZXR1cm4gX2N1cnJlbnRfdGFza3MuZ2V0KGxvb3ApCgoKZGVmIGFsbF90YXNrcyhsb29wPU5vbmUpOgogICAgIiIiUmV0dXJuIGEgc2V0IG9mIGFsbCB0YXNrcyBmb3IgdGhlIGxvb3AuIiIiCiAgICBpZiBsb29wIGlzIE5vbmU6CiAgICAgICAgbG9vcCA9IGV2ZW50cy5nZXRfcnVubmluZ19sb29wKCkKICAgICMgTG9vcGluZyBvdmVyIGEgV2Vha1NldCAoX2FsbF90YXNrcykgaXNuJ3Qgc2FmZSBhcyBpdCBjYW4gYmUgdXBkYXRlZCBmcm9tIGFub3RoZXIKICAgICMgdGhyZWFkIHdoaWxlIHdlIGRvIHNvLiBUaGVyZWZvcmUgd2UgY2FzdCBpdCB0byBsaXN0IHByaW9yIHRvIGZpbHRlcmluZy4gVGhlIGxpc3QKICAgICMgY2FzdCBpdHNlbGYgcmVxdWlyZXMgaXRlcmF0aW9uLCBzbyB3ZSByZXBlYXQgaXQgc2V2ZXJhbCB0aW1lcyBpZ25vcmluZwogICAgIyBSdW50aW1lRXJyb3JzICh3aGljaCBhcmUgbm90IHZlcnkgbGlrZWx5IHRvIG9jY3VyKS4gU2VlIGlzc3VlcyAzNDk3MCBhbmQgMzY2MDcgZm9yCiAgICAjIGRldGFpbHMuCiAgICBpID0gMAogICAgd2hpbGUgVHJ1ZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHRhc2tzID0gbGlzdChfYWxsX3Rhc2tzKQogICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CiAgICAgICAgICAgIGkgKz0gMQogICAgICAgICAgICBpZiBpID49IDEwMDA6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJyZWFrCiAgICByZXR1cm4ge3QgZm9yIHQgaW4gdGFza3MKICAgICAgICAgICAgaWYgZnV0dXJlcy5fZ2V0X2xvb3AodCkgaXMgbG9vcCBhbmQgbm90IHQuZG9uZSgpfQoKCmRlZiBfc2V0X3Rhc2tfbmFtZSh0YXNrLCBuYW1lKToKICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZXRfbmFtZSA9IHRhc2suc2V0X25hbWUKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRhc2suc2V0X25hbWUoKSB3YXMgYWRkZWQgaW4gUHl0aG9uIDMuOCwgIgogICAgICAgICAgICAgICAgICAgICAgInRoZSBtZXRob2Qgc3VwcG9ydCB3aWxsIGJlIG1hbmRhdG9yeSBmb3IgdGhpcmQtcGFydHkgIgogICAgICAgICAgICAgICAgICAgICAgInRhc2sgaW1wbGVtZW50YXRpb25zIHNpbmNlIDMuMTMuIiwKICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0zKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNldF9uYW1lKG5hbWUpCgoKY2xhc3MgVGFzayhmdXR1cmVzLl9QeUZ1dHVyZSk6ICAjIEluaGVyaXQgUHl0aG9uIFRhc2sgaW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZyb20gYSBQeXRob24gRnV0dXJlIGltcGxlbWVudGF0aW9uLgoKICAgICIiIkEgY29yb3V0aW5lIHdyYXBwZWQgaW4gYSBGdXR1cmUuIiIiCgogICAgIyBBbiBpbXBvcnRhbnQgaW52YXJpYW50IG1haW50YWluZWQgd2hpbGUgYSBUYXNrIG5vdCBkb25lOgogICAgIwogICAgIyAtIEVpdGhlciBfZnV0X3dhaXRlciBpcyBOb25lLCBhbmQgX3N0ZXAoKSBpcyBzY2hlZHVsZWQ7CiAgICAjIC0gb3IgX2Z1dF93YWl0ZXIgaXMgc29tZSBGdXR1cmUsIGFuZCBfc3RlcCgpIGlzICpub3QqIHNjaGVkdWxlZC4KICAgICMKICAgICMgVGhlIG9ubHkgdHJhbnNpdGlvbiBmcm9tIHRoZSBsYXR0ZXIgdG8gdGhlIGZvcm1lciBpcyB0aHJvdWdoCiAgICAjIF93YWtldXAoKS4gIFdoZW4gX2Z1dF93YWl0ZXIgaXMgbm90IE5vbmUsIG9uZSBvZiBpdHMgY2FsbGJhY2tzCiAgICAjIG11c3QgYmUgX3dha2V1cCgpLgoKICAgICMgSWYgRmFsc2UsIGRvbid0IGxvZyBhIG1lc3NhZ2UgaWYgdGhlIHRhc2sgaXMgZGVzdHJveWVkIHdoZXJlYXMgaXRzCiAgICAjIHN0YXR1cyBpcyBzdGlsbCBwZW5kaW5nCiAgICBfbG9nX2Rlc3Ryb3lfcGVuZGluZyA9IFRydWUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY29ybywgKiwgbG9vcD1Ob25lLCBuYW1lPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsb29wPWxvb3ApCiAgICAgICAgaWYgc2VsZi5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgZGVsIHNlbGYuX3NvdXJjZV90cmFjZWJhY2tbLTFdCiAgICAgICAgaWYgbm90IGNvcm91dGluZXMuaXNjb3JvdXRpbmUoY29ybyk6CiAgICAgICAgICAgICMgcmFpc2UgYWZ0ZXIgRnV0dXJlLl9faW5pdF9fKCksIGF0dHJzIGFyZSByZXF1aXJlZCBmb3IgX19kZWxfXwogICAgICAgICAgICAjIHByZXZlbnQgbG9nZ2luZyBmb3IgcGVuZGluZyB0YXNrIGluIF9fZGVsX18KICAgICAgICAgICAgc2VsZi5fbG9nX2Rlc3Ryb3lfcGVuZGluZyA9IEZhbHNlCiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmImEgY29yb3V0aW5lIHdhcyBleHBlY3RlZCwgZ290IHtjb3JvIXJ9IikKCiAgICAgICAgaWYgbmFtZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9uYW1lID0gZidUYXNrLXtfdGFza19uYW1lX2NvdW50ZXIoKX0nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbmFtZSA9IHN0cihuYW1lKQoKICAgICAgICBzZWxmLl9udW1fY2FuY2Vsc19yZXF1ZXN0ZWQgPSAwCiAgICAgICAgc2VsZi5fbXVzdF9jYW5jZWwgPSBGYWxzZQogICAgICAgIHNlbGYuX2Z1dF93YWl0ZXIgPSBOb25lCiAgICAgICAgc2VsZi5fY29ybyA9IGNvcm8KICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2NvbnRleHQgPSBjb250ZXh0dmFycy5jb3B5X2NvbnRleHQoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2NvbnRleHQgPSBjb250ZXh0CgogICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX19zdGVwLCBjb250ZXh0PXNlbGYuX2NvbnRleHQpCiAgICAgICAgX3JlZ2lzdGVyX3Rhc2soc2VsZikKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBmdXR1cmVzLl9QRU5ESU5HIGFuZCBzZWxmLl9sb2dfZGVzdHJveV9wZW5kaW5nOgogICAgICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgICAgJ3Rhc2snOiBzZWxmLAogICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnVGFzayB3YXMgZGVzdHJveWVkIGJ1dCBpdCBpcyBwZW5kaW5nIScsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgc2VsZi5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgICAgIGNvbnRleHRbJ3NvdXJjZV90cmFjZWJhY2snXSA9IHNlbGYuX3NvdXJjZV90cmFjZWJhY2sKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnRleHQpCiAgICAgICAgc3VwZXIoKS5fX2RlbF9fKCkKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKEdlbmVyaWNBbGlhcykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGJhc2VfdGFza3MuX3Rhc2tfcmVwcihzZWxmKQoKICAgIGRlZiBnZXRfY29ybyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY29ybwoKICAgIGRlZiBnZXRfbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQoKICAgIGRlZiBzZXRfbmFtZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5fbmFtZSA9IHN0cih2YWx1ZSkKCiAgICBkZWYgc2V0X3Jlc3VsdChzZWxmLCByZXN1bHQpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGFzayBkb2VzIG5vdCBzdXBwb3J0IHNldF9yZXN1bHQgb3BlcmF0aW9uJykKCiAgICBkZWYgc2V0X2V4Y2VwdGlvbihzZWxmLCBleGNlcHRpb24pOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVGFzayBkb2VzIG5vdCBzdXBwb3J0IHNldF9leGNlcHRpb24gb3BlcmF0aW9uJykKCiAgICBkZWYgZ2V0X3N0YWNrKHNlbGYsICosIGxpbWl0PU5vbmUpOgogICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiBzdGFjayBmcmFtZXMgZm9yIHRoaXMgdGFzaydzIGNvcm91dGluZS4KCiAgICAgICAgSWYgdGhlIGNvcm91dGluZSBpcyBub3QgZG9uZSwgdGhpcyByZXR1cm5zIHRoZSBzdGFjayB3aGVyZSBpdCBpcwogICAgICAgIHN1c3BlbmRlZC4gIElmIHRoZSBjb3JvdXRpbmUgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3Igd2FzCiAgICAgICAgY2FuY2VsbGVkLCB0aGlzIHJldHVybnMgYW4gZW1wdHkgbGlzdC4gIElmIHRoZSBjb3JvdXRpbmUgd2FzCiAgICAgICAgdGVybWluYXRlZCBieSBhbiBleGNlcHRpb24sIHRoaXMgcmV0dXJucyB0aGUgbGlzdCBvZiB0cmFjZWJhY2sKICAgICAgICBmcmFtZXMuCgogICAgICAgIFRoZSBmcmFtZXMgYXJlIGFsd2F5cyBvcmRlcmVkIGZyb20gb2xkZXN0IHRvIG5ld2VzdC4KCiAgICAgICAgVGhlIG9wdGlvbmFsIGxpbWl0IGdpdmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgdG8KICAgICAgICByZXR1cm47IGJ5IGRlZmF1bHQgYWxsIGF2YWlsYWJsZSBmcmFtZXMgYXJlIHJldHVybmVkLiAgSXRzCiAgICAgICAgbWVhbmluZyBkaWZmZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGEgc3RhY2sgb3IgYSB0cmFjZWJhY2sgaXMKICAgICAgICByZXR1cm5lZDogdGhlIG5ld2VzdCBmcmFtZXMgb2YgYSBzdGFjayBhcmUgcmV0dXJuZWQsIGJ1dCB0aGUKICAgICAgICBvbGRlc3QgZnJhbWVzIG9mIGEgdHJhY2ViYWNrIGFyZSByZXR1cm5lZC4gIChUaGlzIG1hdGNoZXMgdGhlCiAgICAgICAgYmVoYXZpb3Igb2YgdGhlIHRyYWNlYmFjayBtb2R1bGUuKQoKICAgICAgICBGb3IgcmVhc29ucyBiZXlvbmQgb3VyIGNvbnRyb2wsIG9ubHkgb25lIHN0YWNrIGZyYW1lIGlzCiAgICAgICAgcmV0dXJuZWQgZm9yIGEgc3VzcGVuZGVkIGNvcm91dGluZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gYmFzZV90YXNrcy5fdGFza19nZXRfc3RhY2soc2VsZiwgbGltaXQpCgogICAgZGVmIHByaW50X3N0YWNrKHNlbGYsICosIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgICAgIiIiUHJpbnQgdGhlIHN0YWNrIG9yIHRyYWNlYmFjayBmb3IgdGhpcyB0YXNrJ3MgY29yb3V0aW5lLgoKICAgICAgICBUaGlzIHByb2R1Y2VzIG91dHB1dCBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIHRyYWNlYmFjayBtb2R1bGUsCiAgICAgICAgZm9yIHRoZSBmcmFtZXMgcmV0cmlldmVkIGJ5IGdldF9zdGFjaygpLiAgVGhlIGxpbWl0IGFyZ3VtZW50CiAgICAgICAgaXMgcGFzc2VkIHRvIGdldF9zdGFjaygpLiAgVGhlIGZpbGUgYXJndW1lbnQgaXMgYW4gSS9PIHN0cmVhbQogICAgICAgIHRvIHdoaWNoIHRoZSBvdXRwdXQgaXMgd3JpdHRlbjsgYnkgZGVmYXVsdCBvdXRwdXQgaXMgd3JpdHRlbgogICAgICAgIHRvIHN5cy5zdGRlcnIuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGJhc2VfdGFza3MuX3Rhc2tfcHJpbnRfc3RhY2soc2VsZiwgbGltaXQsIGZpbGUpCgogICAgZGVmIGNhbmNlbChzZWxmLCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiUmVxdWVzdCB0aGF0IHRoaXMgdGFzayBjYW5jZWwgaXRzZWxmLgoKICAgICAgICBUaGlzIGFycmFuZ2VzIGZvciBhIENhbmNlbGxlZEVycm9yIHRvIGJlIHRocm93biBpbnRvIHRoZQogICAgICAgIHdyYXBwZWQgY29yb3V0aW5lIG9uIHRoZSBuZXh0IGN5Y2xlIHRocm91Z2ggdGhlIGV2ZW50IGxvb3AuCiAgICAgICAgVGhlIGNvcm91dGluZSB0aGVuIGhhcyBhIGNoYW5jZSB0byBjbGVhbiB1cCBvciBldmVuIGRlbnkKICAgICAgICB0aGUgcmVxdWVzdCB1c2luZyB0cnkvZXhjZXB0L2ZpbmFsbHkuCgogICAgICAgIFVubGlrZSBGdXR1cmUuY2FuY2VsLCB0aGlzIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IHRoZQogICAgICAgIHRhc2sgd2lsbCBiZSBjYW5jZWxsZWQ6IHRoZSBleGNlcHRpb24gbWlnaHQgYmUgY2F1Z2h0IGFuZAogICAgICAgIGFjdGVkIHVwb24sIGRlbGF5aW5nIGNhbmNlbGxhdGlvbiBvZiB0aGUgdGFzayBvciBwcmV2ZW50aW5nCiAgICAgICAgY2FuY2VsbGF0aW9uIGNvbXBsZXRlbHkuICBUaGUgdGFzayBtYXkgYWxzbyByZXR1cm4gYSB2YWx1ZSBvcgogICAgICAgIHJhaXNlIGEgZGlmZmVyZW50IGV4Y2VwdGlvbi4KCiAgICAgICAgSW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcyBtZXRob2QgaXMgY2FsbGVkLCBUYXNrLmNhbmNlbGxlZCgpIHdpbGwKICAgICAgICBub3QgcmV0dXJuIFRydWUgKHVubGVzcyB0aGUgdGFzayB3YXMgYWxyZWFkeSBjYW5jZWxsZWQpLiAgQQogICAgICAgIHRhc2sgd2lsbCBiZSBtYXJrZWQgYXMgY2FuY2VsbGVkIHdoZW4gdGhlIHdyYXBwZWQgY29yb3V0aW5lCiAgICAgICAgdGVybWluYXRlcyB3aXRoIGEgQ2FuY2VsbGVkRXJyb3IgZXhjZXB0aW9uIChldmVuIGlmIGNhbmNlbCgpCiAgICAgICAgd2FzIG5vdCBjYWxsZWQpLgoKICAgICAgICBUaGlzIGFsc28gaW5jcmVhc2VzIHRoZSB0YXNrJ3MgY291bnQgb2YgY2FuY2VsbGF0aW9uIHJlcXVlc3RzLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2xvZ190cmFjZWJhY2sgPSBGYWxzZQogICAgICAgIGlmIHNlbGYuZG9uZSgpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBzZWxmLl9udW1fY2FuY2Vsc19yZXF1ZXN0ZWQgKz0gMQogICAgICAgICMgVGhlc2UgdHdvIGxpbmVzIGFyZSBjb250cm92ZXJzaWFsLiAgU2VlIGRpc2N1c3Npb24gc3RhcnRpbmcgYXQKICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzMxMzk0I2lzc3VlY29tbWVudC0xMDUzNTQ1MzMxCiAgICAgICAgIyBBbHNvIHJlbWVtYmVyIHRoYXQgdGhpcyBpcyBkdXBsaWNhdGVkIGluIF9hc3luY2lvbW9kdWxlLmMuCiAgICAgICAgIyBpZiBzZWxmLl9udW1fY2FuY2Vsc19yZXF1ZXN0ZWQgPiAxOgogICAgICAgICMgICAgIHJldHVybiBGYWxzZQogICAgICAgIGlmIHNlbGYuX2Z1dF93YWl0ZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYuX2Z1dF93YWl0ZXIuY2FuY2VsKG1zZz1tc2cpOgogICAgICAgICAgICAgICAgIyBMZWF2ZSBzZWxmLl9mdXRfd2FpdGVyOyBpdCBtYXkgYmUgYSBUYXNrIHRoYXQKICAgICAgICAgICAgICAgICMgY2F0Y2hlcyBhbmQgaWdub3JlcyB0aGUgY2FuY2VsbGF0aW9uIHNvIHdlIG1heSBoYXZlCiAgICAgICAgICAgICAgICAjIHRvIGNhbmNlbCBpdCBhZ2FpbiBsYXRlci4KICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIyBJdCBtdXN0IGJlIHRoZSBjYXNlIHRoYXQgc2VsZi5fX3N0ZXAgaXMgYWxyZWFkeSBzY2hlZHVsZWQuCiAgICAgICAgc2VsZi5fbXVzdF9jYW5jZWwgPSBUcnVlCiAgICAgICAgc2VsZi5fY2FuY2VsX21lc3NhZ2UgPSBtc2cKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBjYW5jZWxsaW5nKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgY291bnQgb2YgdGhlIHRhc2sncyBjYW5jZWxsYXRpb24gcmVxdWVzdHMuCgogICAgICAgIFRoaXMgY291bnQgaXMgaW5jcmVtZW50ZWQgd2hlbiAuY2FuY2VsKCkgaXMgY2FsbGVkCiAgICAgICAgYW5kIG1heSBiZSBkZWNyZW1lbnRlZCB1c2luZyAudW5jYW5jZWwoKS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fbnVtX2NhbmNlbHNfcmVxdWVzdGVkCgogICAgZGVmIHVuY2FuY2VsKHNlbGYpOgogICAgICAgICIiIkRlY3JlbWVudCB0aGUgdGFzaydzIGNvdW50IG9mIGNhbmNlbGxhdGlvbiByZXF1ZXN0cy4KCiAgICAgICAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIGJ5IHRoZSBwYXJ0eSB0aGF0IGNhbGxlZCBgY2FuY2VsKClgIG9uIHRoZSB0YXNrCiAgICAgICAgYmVmb3JlaGFuZC4KCiAgICAgICAgUmV0dXJucyB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBjYW5jZWxsYXRpb24gcmVxdWVzdHMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fbnVtX2NhbmNlbHNfcmVxdWVzdGVkID4gMDoKICAgICAgICAgICAgc2VsZi5fbnVtX2NhbmNlbHNfcmVxdWVzdGVkIC09IDEKICAgICAgICByZXR1cm4gc2VsZi5fbnVtX2NhbmNlbHNfcmVxdWVzdGVkCgogICAgZGVmIF9fc3RlcChzZWxmLCBleGM9Tm9uZSk6CiAgICAgICAgaWYgc2VsZi5kb25lKCk6CiAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSW52YWxpZFN0YXRlRXJyb3IoCiAgICAgICAgICAgICAgICBmJ19zdGVwKCk6IGFscmVhZHkgZG9uZToge3NlbGYhcn0sIHtleGMhcn0nKQogICAgICAgIGlmIHNlbGYuX211c3RfY2FuY2VsOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGMsIGV4Y2VwdGlvbnMuQ2FuY2VsbGVkRXJyb3IpOgogICAgICAgICAgICAgICAgZXhjID0gc2VsZi5fbWFrZV9jYW5jZWxsZWRfZXJyb3IoKQogICAgICAgICAgICBzZWxmLl9tdXN0X2NhbmNlbCA9IEZhbHNlCiAgICAgICAgY29ybyA9IHNlbGYuX2Nvcm8KICAgICAgICBzZWxmLl9mdXRfd2FpdGVyID0gTm9uZQoKICAgICAgICBfZW50ZXJfdGFzayhzZWxmLl9sb29wLCBzZWxmKQogICAgICAgICMgQ2FsbCBlaXRoZXIgY29yby50aHJvdyhleGMpIG9yIGNvcm8uc2VuZChOb25lKS4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGV4YyBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhlIGBzZW5kYCBtZXRob2QgZGlyZWN0bHksIGJlY2F1c2UgY29yb3V0aW5lcwogICAgICAgICAgICAgICAgIyBkb24ndCBoYXZlIGBfX2l0ZXJfX2AgYW5kIGBfX25leHRfX2AgbWV0aG9kcy4KICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcm8uc2VuZChOb25lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gY29yby50aHJvdyhleGMpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXhjOgogICAgICAgICAgICBpZiBzZWxmLl9tdXN0X2NhbmNlbDoKICAgICAgICAgICAgICAgICMgVGFzayBpcyBjYW5jZWxsZWQgcmlnaHQgYmVmb3JlIGNvcm8gc3RvcHMuCiAgICAgICAgICAgICAgICBzZWxmLl9tdXN0X2NhbmNlbCA9IEZhbHNlCiAgICAgICAgICAgICAgICBzdXBlcigpLmNhbmNlbChtc2c9c2VsZi5fY2FuY2VsX21lc3NhZ2UpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzdXBlcigpLnNldF9yZXN1bHQoZXhjLnZhbHVlKQogICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLkNhbmNlbGxlZEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgIyBTYXZlIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gc28gd2UgY2FuIGNoYWluIGl0IGxhdGVyLgogICAgICAgICAgICBzZWxmLl9jYW5jZWxsZWRfZXhjID0gZXhjCiAgICAgICAgICAgIHN1cGVyKCkuY2FuY2VsKCkgICMgSS5lLiwgRnV0dXJlLmNhbmNlbChzZWxmKS4KICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KSBhcyBleGM6CiAgICAgICAgICAgIHN1cGVyKCkuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBzdXBlcigpLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJsb2NraW5nID0gZ2V0YXR0cihyZXN1bHQsICdfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcnLCBOb25lKQogICAgICAgICAgICBpZiBibG9ja2luZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICMgWWllbGRlZCBGdXR1cmUgbXVzdCBjb21lIGZyb20gRnV0dXJlLl9faXRlcl9fKCkuCiAgICAgICAgICAgICAgICBpZiBmdXR1cmVzLl9nZXRfbG9vcChyZXN1bHQpIGlzIG5vdCBzZWxmLl9sb29wOgogICAgICAgICAgICAgICAgICAgIG5ld19leGMgPSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIGYnVGFzayB7c2VsZiFyfSBnb3QgRnV0dXJlICcKICAgICAgICAgICAgICAgICAgICAgICAgZid7cmVzdWx0IXJ9IGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IGxvb3AnKQogICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RlcCwgbmV3X2V4YywgY29udGV4dD1zZWxmLl9jb250ZXh0KQogICAgICAgICAgICAgICAgZWxpZiBibG9ja2luZzoKICAgICAgICAgICAgICAgICAgICBpZiByZXN1bHQgaXMgc2VsZjoKICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2V4YyA9IFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYnVGFzayBjYW5ub3QgYXdhaXQgb24gaXRzZWxmOiB7c2VsZiFyfScpCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3N0ZXAsIG5ld19leGMsIGNvbnRleHQ9c2VsZi5fY29udGV4dCkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZF9kb25lX2NhbGxiYWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3dha2V1cCwgY29udGV4dD1zZWxmLl9jb250ZXh0KQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mdXRfd2FpdGVyID0gcmVzdWx0CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX211c3RfY2FuY2VsOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fZnV0X3dhaXRlci5jYW5jZWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1zZWxmLl9jYW5jZWxfbWVzc2FnZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXVzdF9jYW5jZWwgPSBGYWxzZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBuZXdfZXhjID0gUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBmJ3lpZWxkIHdhcyB1c2VkIGluc3RlYWQgb2YgeWllbGQgZnJvbSAnCiAgICAgICAgICAgICAgICAgICAgICAgIGYnaW4gdGFzayB7c2VsZiFyfSB3aXRoIHtyZXN1bHQhcn0nKQogICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RlcCwgbmV3X2V4YywgY29udGV4dD1zZWxmLl9jb250ZXh0KQoKICAgICAgICAgICAgZWxpZiByZXN1bHQgaXMgTm9uZToKICAgICAgICAgICAgICAgICMgQmFyZSB5aWVsZCByZWxpbnF1aXNoZXMgY29udHJvbCBmb3Igb25lIGV2ZW50IGxvb3AgaXRlcmF0aW9uLgogICAgICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi5fX3N0ZXAsIGNvbnRleHQ9c2VsZi5fY29udGV4dCkKICAgICAgICAgICAgZWxpZiBpbnNwZWN0LmlzZ2VuZXJhdG9yKHJlc3VsdCk6CiAgICAgICAgICAgICAgICAjIFlpZWxkaW5nIGEgZ2VuZXJhdG9yIGlzIGp1c3Qgd3JvbmcuCiAgICAgICAgICAgICAgICBuZXdfZXhjID0gUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICAgIGYneWllbGQgd2FzIHVzZWQgaW5zdGVhZCBvZiB5aWVsZCBmcm9tIGZvciAnCiAgICAgICAgICAgICAgICAgICAgZidnZW5lcmF0b3IgaW4gdGFzayB7c2VsZiFyfSB3aXRoIHtyZXN1bHQhcn0nKQogICAgICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3N0ZXAsIG5ld19leGMsIGNvbnRleHQ9c2VsZi5fY29udGV4dCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgWWllbGRpbmcgc29tZXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IuCiAgICAgICAgICAgICAgICBuZXdfZXhjID0gUnVudGltZUVycm9yKGYnVGFzayBnb3QgYmFkIHlpZWxkOiB7cmVzdWx0IXJ9JykKICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKAogICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGVwLCBuZXdfZXhjLCBjb250ZXh0PXNlbGYuX2NvbnRleHQpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgX2xlYXZlX3Rhc2soc2VsZi5fbG9vcCwgc2VsZikKICAgICAgICAgICAgc2VsZiA9IE5vbmUgICMgTmVlZGVkIHRvIGJyZWFrIGN5Y2xlcyB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuCgogICAgZGVmIF9fd2FrZXVwKHNlbGYsIGZ1dHVyZSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmdXR1cmUucmVzdWx0KCkKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICMgVGhpcyBtYXkgYWxzbyBiZSBhIGNhbmNlbGxhdGlvbi4KICAgICAgICAgICAgc2VsZi5fX3N0ZXAoZXhjKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgRG9uJ3QgcGFzcyB0aGUgdmFsdWUgb2YgYGZ1dHVyZS5yZXN1bHQoKWAgZXhwbGljaXRseSwKICAgICAgICAgICAgIyBhcyBgRnV0dXJlLl9faXRlcl9fYCBhbmQgYEZ1dHVyZS5fX2F3YWl0X19gIGRvbid0IG5lZWQgaXQuCiAgICAgICAgICAgICMgSWYgd2UgY2FsbCBgX3N0ZXAodmFsdWUsIE5vbmUpYCBpbnN0ZWFkIG9mIGBfc3RlcCgpYCwKICAgICAgICAgICAgIyBQeXRob24gZXZhbCBsb29wIHdvdWxkIHVzZSBgLnNlbmQodmFsdWUpYCBtZXRob2QgY2FsbCwKICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIGBfX25leHRfXygpYCwgd2hpY2ggaXMgc2xvd2VyIGZvciBmdXR1cmVzCiAgICAgICAgICAgICMgdGhhdCByZXR1cm4gbm9uLWdlbmVyYXRvciBpdGVyYXRvcnMgZnJvbSB0aGVpciBgX19pdGVyX19gLgogICAgICAgICAgICBzZWxmLl9fc3RlcCgpCiAgICAgICAgc2VsZiA9IE5vbmUgICMgTmVlZGVkIHRvIGJyZWFrIGN5Y2xlcyB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuCgoKX1B5VGFzayA9IFRhc2sKCgp0cnk6CiAgICBpbXBvcnQgX2FzeW5jaW8KZXhjZXB0IEltcG9ydEVycm9yOgogICAgcGFzcwplbHNlOgogICAgIyBfQ1Rhc2sgaXMgbmVlZGVkIGZvciB0ZXN0cy4KICAgIFRhc2sgPSBfQ1Rhc2sgPSBfYXN5bmNpby5UYXNrCgoKZGVmIGNyZWF0ZV90YXNrKGNvcm8sICosIG5hbWU9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICIiIlNjaGVkdWxlIHRoZSBleGVjdXRpb24gb2YgYSBjb3JvdXRpbmUgb2JqZWN0IGluIGEgc3Bhd24gdGFzay4KCiAgICBSZXR1cm4gYSBUYXNrIG9iamVjdC4KICAgICIiIgogICAgbG9vcCA9IGV2ZW50cy5nZXRfcnVubmluZ19sb29wKCkKICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAjIFVzZSBsZWdhY3kgQVBJIGlmIGNvbnRleHQgaXMgbm90IG5lZWRlZAogICAgICAgIHRhc2sgPSBsb29wLmNyZWF0ZV90YXNrKGNvcm8pCiAgICBlbHNlOgogICAgICAgIHRhc2sgPSBsb29wLmNyZWF0ZV90YXNrKGNvcm8sIGNvbnRleHQ9Y29udGV4dCkKCiAgICBfc2V0X3Rhc2tfbmFtZSh0YXNrLCBuYW1lKQogICAgcmV0dXJuIHRhc2sKCgojIHdhaXQoKSBhbmQgYXNfY29tcGxldGVkKCkgc2ltaWxhciB0byB0aG9zZSBpbiBQRVAgMzE0OC4KCkZJUlNUX0NPTVBMRVRFRCA9IGNvbmN1cnJlbnQuZnV0dXJlcy5GSVJTVF9DT01QTEVURUQKRklSU1RfRVhDRVBUSU9OID0gY29uY3VycmVudC5mdXR1cmVzLkZJUlNUX0VYQ0VQVElPTgpBTExfQ09NUExFVEVEID0gY29uY3VycmVudC5mdXR1cmVzLkFMTF9DT01QTEVURUQKCgphc3luYyBkZWYgd2FpdChmcywgKiwgdGltZW91dD1Ob25lLCByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKToKICAgICIiIldhaXQgZm9yIHRoZSBGdXR1cmVzIG9yIFRhc2tzIGdpdmVuIGJ5IGZzIHRvIGNvbXBsZXRlLgoKICAgIFRoZSBmcyBpdGVyYWJsZSBtdXN0IG5vdCBiZSBlbXB0eS4KCiAgICBDb3JvdXRpbmVzIHdpbGwgYmUgd3JhcHBlZCBpbiBUYXNrcy4KCiAgICBSZXR1cm5zIHR3byBzZXRzIG9mIEZ1dHVyZTogKGRvbmUsIHBlbmRpbmcpLgoKICAgIFVzYWdlOgoKICAgICAgICBkb25lLCBwZW5kaW5nID0gYXdhaXQgYXN5bmNpby53YWl0KGZzKQoKICAgIE5vdGU6IFRoaXMgZG9lcyBub3QgcmFpc2UgVGltZW91dEVycm9yISBGdXR1cmVzIHRoYXQgYXJlbid0IGRvbmUKICAgIHdoZW4gdGhlIHRpbWVvdXQgb2NjdXJzIGFyZSByZXR1cm5lZCBpbiB0aGUgc2Vjb25kIHNldC4KICAgICIiIgogICAgaWYgZnV0dXJlcy5pc2Z1dHVyZShmcykgb3IgY29yb3V0aW5lcy5pc2Nvcm91dGluZShmcyk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiZXhwZWN0IGEgbGlzdCBvZiBmdXR1cmVzLCBub3Qge3R5cGUoZnMpLl9fbmFtZV9ffSIpCiAgICBpZiBub3QgZnM6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2V0IG9mIFRhc2tzL0Z1dHVyZXMgaXMgZW1wdHkuJykKICAgIGlmIHJldHVybl93aGVuIG5vdCBpbiAoRklSU1RfQ09NUExFVEVELCBGSVJTVF9FWENFUFRJT04sIEFMTF9DT01QTEVURUQpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidJbnZhbGlkIHJldHVybl93aGVuIHZhbHVlOiB7cmV0dXJuX3doZW59JykKCiAgICBmcyA9IHNldChmcykKCiAgICBpZiBhbnkoY29yb3V0aW5lcy5pc2Nvcm91dGluZShmKSBmb3IgZiBpbiBmcyk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJQYXNzaW5nIGNvcm91dGluZXMgaXMgZm9yYmlkZGVuLCB1c2UgdGFza3MgZXhwbGljaXRseS4iKQoKICAgIGxvb3AgPSBldmVudHMuZ2V0X3J1bm5pbmdfbG9vcCgpCiAgICByZXR1cm4gYXdhaXQgX3dhaXQoZnMsIHRpbWVvdXQsIHJldHVybl93aGVuLCBsb29wKQoKCmRlZiBfcmVsZWFzZV93YWl0ZXIod2FpdGVyLCAqYXJncyk6CiAgICBpZiBub3Qgd2FpdGVyLmRvbmUoKToKICAgICAgICB3YWl0ZXIuc2V0X3Jlc3VsdChOb25lKQoKCmFzeW5jIGRlZiB3YWl0X2ZvcihmdXQsIHRpbWVvdXQpOgogICAgIiIiV2FpdCBmb3IgdGhlIHNpbmdsZSBGdXR1cmUgb3IgY29yb3V0aW5lIHRvIGNvbXBsZXRlLCB3aXRoIHRpbWVvdXQuCgogICAgQ29yb3V0aW5lIHdpbGwgYmUgd3JhcHBlZCBpbiBUYXNrLgoKICAgIFJldHVybnMgcmVzdWx0IG9mIHRoZSBGdXR1cmUgb3IgY29yb3V0aW5lLiAgV2hlbiBhIHRpbWVvdXQgb2NjdXJzLAogICAgaXQgY2FuY2VscyB0aGUgdGFzayBhbmQgcmFpc2VzIFRpbWVvdXRFcnJvci4gIFRvIGF2b2lkIHRoZSB0YXNrCiAgICBjYW5jZWxsYXRpb24sIHdyYXAgaXQgaW4gc2hpZWxkKCkuCgogICAgSWYgdGhlIHdhaXQgaXMgY2FuY2VsbGVkLCB0aGUgdGFzayBpcyBhbHNvIGNhbmNlbGxlZC4KCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGEgY29yb3V0aW5lLgogICAgIiIiCiAgICBsb29wID0gZXZlbnRzLmdldF9ydW5uaW5nX2xvb3AoKQoKICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICByZXR1cm4gYXdhaXQgZnV0CgogICAgaWYgdGltZW91dCA8PSAwOgogICAgICAgIGZ1dCA9IGVuc3VyZV9mdXR1cmUoZnV0LCBsb29wPWxvb3ApCgogICAgICAgIGlmIGZ1dC5kb25lKCk6CiAgICAgICAgICAgIHJldHVybiBmdXQucmVzdWx0KCkKCiAgICAgICAgYXdhaXQgX2NhbmNlbF9hbmRfd2FpdChmdXQsIGxvb3A9bG9vcCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBmdXQucmVzdWx0KCkKICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvciBhcyBleGM6CiAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuVGltZW91dEVycm9yKCkgZnJvbSBleGMKCiAgICB3YWl0ZXIgPSBsb29wLmNyZWF0ZV9mdXR1cmUoKQogICAgdGltZW91dF9oYW5kbGUgPSBsb29wLmNhbGxfbGF0ZXIodGltZW91dCwgX3JlbGVhc2Vfd2FpdGVyLCB3YWl0ZXIpCiAgICBjYiA9IGZ1bmN0b29scy5wYXJ0aWFsKF9yZWxlYXNlX3dhaXRlciwgd2FpdGVyKQoKICAgIGZ1dCA9IGVuc3VyZV9mdXR1cmUoZnV0LCBsb29wPWxvb3ApCiAgICBmdXQuYWRkX2RvbmVfY2FsbGJhY2soY2IpCgogICAgdHJ5OgogICAgICAgICMgd2FpdCB1bnRpbCB0aGUgZnV0dXJlIGNvbXBsZXRlcyBvciB0aGUgdGltZW91dAogICAgICAgIHRyeToKICAgICAgICAgICAgYXdhaXQgd2FpdGVyCiAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgIGlmIGZ1dC5kb25lKCk6CiAgICAgICAgICAgICAgICByZXR1cm4gZnV0LnJlc3VsdCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmdXQucmVtb3ZlX2RvbmVfY2FsbGJhY2soY2IpCiAgICAgICAgICAgICAgICAjIFdlIG11c3QgZW5zdXJlIHRoYXQgdGhlIHRhc2sgaXMgbm90IHJ1bm5pbmcKICAgICAgICAgICAgICAgICMgYWZ0ZXIgd2FpdF9mb3IoKSByZXR1cm5zLgogICAgICAgICAgICAgICAgIyBTZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMjc1MQogICAgICAgICAgICAgICAgYXdhaXQgX2NhbmNlbF9hbmRfd2FpdChmdXQsIGxvb3A9bG9vcCkKICAgICAgICAgICAgICAgIHJhaXNlCgogICAgICAgIGlmIGZ1dC5kb25lKCk6CiAgICAgICAgICAgIHJldHVybiBmdXQucmVzdWx0KCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBmdXQucmVtb3ZlX2RvbmVfY2FsbGJhY2soY2IpCiAgICAgICAgICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdGFzayBpcyBub3QgcnVubmluZwogICAgICAgICAgICAjIGFmdGVyIHdhaXRfZm9yKCkgcmV0dXJucy4KICAgICAgICAgICAgIyBTZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMjc1MQogICAgICAgICAgICBhd2FpdCBfY2FuY2VsX2FuZF93YWl0KGZ1dCwgbG9vcD1sb29wKQogICAgICAgICAgICAjIEluIGNhc2UgdGFzayBjYW5jZWxsYXRpb24gZmFpbGVkIHdpdGggc29tZQogICAgICAgICAgICAjIGV4Y2VwdGlvbiwgd2Ugc2hvdWxkIHJlLXJhaXNlIGl0CiAgICAgICAgICAgICMgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlNDA2MDcKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIGZ1dC5yZXN1bHQoKQogICAgICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlRpbWVvdXRFcnJvcigpIGZyb20gZXhjCiAgICBmaW5hbGx5OgogICAgICAgIHRpbWVvdXRfaGFuZGxlLmNhbmNlbCgpCgoKYXN5bmMgZGVmIF93YWl0KGZzLCB0aW1lb3V0LCByZXR1cm5fd2hlbiwgbG9vcCk6CiAgICAiIiJJbnRlcm5hbCBoZWxwZXIgZm9yIHdhaXQoKS4KCiAgICBUaGUgZnMgYXJndW1lbnQgbXVzdCBiZSBhIGNvbGxlY3Rpb24gb2YgRnV0dXJlcy4KICAgICIiIgogICAgYXNzZXJ0IGZzLCAnU2V0IG9mIEZ1dHVyZXMgaXMgZW1wdHkuJwogICAgd2FpdGVyID0gbG9vcC5jcmVhdGVfZnV0dXJlKCkKICAgIHRpbWVvdXRfaGFuZGxlID0gTm9uZQogICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICB0aW1lb3V0X2hhbmRsZSA9IGxvb3AuY2FsbF9sYXRlcih0aW1lb3V0LCBfcmVsZWFzZV93YWl0ZXIsIHdhaXRlcikKICAgIGNvdW50ZXIgPSBsZW4oZnMpCgogICAgZGVmIF9vbl9jb21wbGV0aW9uKGYpOgogICAgICAgIG5vbmxvY2FsIGNvdW50ZXIKICAgICAgICBjb3VudGVyIC09IDEKICAgICAgICBpZiAoY291bnRlciA8PSAwIG9yCiAgICAgICAgICAgIHJldHVybl93aGVuID09IEZJUlNUX0NPTVBMRVRFRCBvcgogICAgICAgICAgICByZXR1cm5fd2hlbiA9PSBGSVJTVF9FWENFUFRJT04gYW5kIChub3QgZi5jYW5jZWxsZWQoKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5leGNlcHRpb24oKSBpcyBub3QgTm9uZSkpOgogICAgICAgICAgICBpZiB0aW1lb3V0X2hhbmRsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHRpbWVvdXRfaGFuZGxlLmNhbmNlbCgpCiAgICAgICAgICAgIGlmIG5vdCB3YWl0ZXIuZG9uZSgpOgogICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKCiAgICBmb3IgZiBpbiBmczoKICAgICAgICBmLmFkZF9kb25lX2NhbGxiYWNrKF9vbl9jb21wbGV0aW9uKQoKICAgIHRyeToKICAgICAgICBhd2FpdCB3YWl0ZXIKICAgIGZpbmFsbHk6CiAgICAgICAgaWYgdGltZW91dF9oYW5kbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHRpbWVvdXRfaGFuZGxlLmNhbmNlbCgpCiAgICAgICAgZm9yIGYgaW4gZnM6CiAgICAgICAgICAgIGYucmVtb3ZlX2RvbmVfY2FsbGJhY2soX29uX2NvbXBsZXRpb24pCgogICAgZG9uZSwgcGVuZGluZyA9IHNldCgpLCBzZXQoKQogICAgZm9yIGYgaW4gZnM6CiAgICAgICAgaWYgZi5kb25lKCk6CiAgICAgICAgICAgIGRvbmUuYWRkKGYpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGVuZGluZy5hZGQoZikKICAgIHJldHVybiBkb25lLCBwZW5kaW5nCgoKYXN5bmMgZGVmIF9jYW5jZWxfYW5kX3dhaXQoZnV0LCBsb29wKToKICAgICIiIkNhbmNlbCB0aGUgKmZ1dCogZnV0dXJlIG9yIHRhc2sgYW5kIHdhaXQgdW50aWwgaXQgY29tcGxldGVzLiIiIgoKICAgIHdhaXRlciA9IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICBjYiA9IGZ1bmN0b29scy5wYXJ0aWFsKF9yZWxlYXNlX3dhaXRlciwgd2FpdGVyKQogICAgZnV0LmFkZF9kb25lX2NhbGxiYWNrKGNiKQoKICAgIHRyeToKICAgICAgICBmdXQuY2FuY2VsKCkKICAgICAgICAjIFdlIGNhbm5vdCB3YWl0IG9uICpmdXQqIGRpcmVjdGx5IHRvIG1ha2UKICAgICAgICAjIHN1cmUgX2NhbmNlbF9hbmRfd2FpdCBpdHNlbGYgaXMgcmVsaWFibHkgY2FuY2VsbGFibGUuCiAgICAgICAgYXdhaXQgd2FpdGVyCiAgICBmaW5hbGx5OgogICAgICAgIGZ1dC5yZW1vdmVfZG9uZV9jYWxsYmFjayhjYikKCgojIFRoaXMgaXMgKm5vdCogYSBAY29yb3V0aW5lISAgSXQgaXMganVzdCBhbiBpdGVyYXRvciAoeWllbGRpbmcgRnV0dXJlcykuCmRlZiBhc19jb21wbGV0ZWQoZnMsICosIHRpbWVvdXQ9Tm9uZSk6CiAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igd2hvc2UgdmFsdWVzIGFyZSBjb3JvdXRpbmVzLgoKICAgIFdoZW4gd2FpdGluZyBmb3IgdGhlIHlpZWxkZWQgY29yb3V0aW5lcyB5b3UnbGwgZ2V0IHRoZSByZXN1bHRzIChvcgogICAgZXhjZXB0aW9ucyEpIG9mIHRoZSBvcmlnaW5hbCBGdXR1cmVzIChvciBjb3JvdXRpbmVzKSwgaW4gdGhlIG9yZGVyCiAgICBpbiB3aGljaCBhbmQgYXMgc29vbiBhcyB0aGV5IGNvbXBsZXRlLgoKICAgIFRoaXMgZGlmZmVycyBmcm9tIFBFUCAzMTQ4OyB0aGUgcHJvcGVyIHdheSB0byB1c2UgdGhpcyBpczoKCiAgICAgICAgZm9yIGYgaW4gYXNfY29tcGxldGVkKGZzKToKICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZiAgIyBUaGUgJ2F3YWl0JyBtYXkgcmFpc2UuCiAgICAgICAgICAgICMgVXNlIHJlc3VsdC4KCiAgICBJZiBhIHRpbWVvdXQgaXMgc3BlY2lmaWVkLCB0aGUgJ2F3YWl0JyB3aWxsIHJhaXNlCiAgICBUaW1lb3V0RXJyb3Igd2hlbiB0aGUgdGltZW91dCBvY2N1cnMgYmVmb3JlIGFsbCBGdXR1cmVzIGFyZSBkb25lLgoKICAgIE5vdGU6IFRoZSBmdXR1cmVzICdmJyBhcmUgbm90IG5lY2Vzc2FyaWx5IG1lbWJlcnMgb2YgZnMuCiAgICAiIiIKICAgIGlmIGZ1dHVyZXMuaXNmdXR1cmUoZnMpIG9yIGNvcm91dGluZXMuaXNjb3JvdXRpbmUoZnMpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmImV4cGVjdCBhbiBpdGVyYWJsZSBvZiBmdXR1cmVzLCBub3Qge3R5cGUoZnMpLl9fbmFtZV9ffSIpCgogICAgZnJvbSAucXVldWVzIGltcG9ydCBRdWV1ZSAgIyBJbXBvcnQgaGVyZSB0byBhdm9pZCBjaXJjdWxhciBpbXBvcnQgcHJvYmxlbS4KICAgIGRvbmUgPSBRdWV1ZSgpCgogICAgbG9vcCA9IGV2ZW50cy5fZ2V0X2V2ZW50X2xvb3AoKQogICAgdG9kbyA9IHtlbnN1cmVfZnV0dXJlKGYsIGxvb3A9bG9vcCkgZm9yIGYgaW4gc2V0KGZzKX0KICAgIHRpbWVvdXRfaGFuZGxlID0gTm9uZQoKICAgIGRlZiBfb25fdGltZW91dCgpOgogICAgICAgIGZvciBmIGluIHRvZG86CiAgICAgICAgICAgIGYucmVtb3ZlX2RvbmVfY2FsbGJhY2soX29uX2NvbXBsZXRpb24pCiAgICAgICAgICAgIGRvbmUucHV0X25vd2FpdChOb25lKSAgIyBRdWV1ZSBhIGR1bW15IHZhbHVlIGZvciBfd2FpdF9mb3Jfb25lKCkuCiAgICAgICAgdG9kby5jbGVhcigpICAjIENhbid0IGRvIHRvZG8ucmVtb3ZlKGYpIGluIHRoZSBsb29wLgoKICAgIGRlZiBfb25fY29tcGxldGlvbihmKToKICAgICAgICBpZiBub3QgdG9kbzoKICAgICAgICAgICAgcmV0dXJuICAjIF9vbl90aW1lb3V0KCkgd2FzIGhlcmUgZmlyc3QuCiAgICAgICAgdG9kby5yZW1vdmUoZikKICAgICAgICBkb25lLnB1dF9ub3dhaXQoZikKICAgICAgICBpZiBub3QgdG9kbyBhbmQgdGltZW91dF9oYW5kbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHRpbWVvdXRfaGFuZGxlLmNhbmNlbCgpCgogICAgYXN5bmMgZGVmIF93YWl0X2Zvcl9vbmUoKToKICAgICAgICBmID0gYXdhaXQgZG9uZS5nZXQoKQogICAgICAgIGlmIGYgaXMgTm9uZToKICAgICAgICAgICAgIyBEdW1teSB2YWx1ZSBmcm9tIF9vbl90aW1lb3V0KCkuCiAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuVGltZW91dEVycm9yCiAgICAgICAgcmV0dXJuIGYucmVzdWx0KCkgICMgTWF5IHJhaXNlIGYuZXhjZXB0aW9uKCkuCgogICAgZm9yIGYgaW4gdG9kbzoKICAgICAgICBmLmFkZF9kb25lX2NhbGxiYWNrKF9vbl9jb21wbGV0aW9uKQogICAgaWYgdG9kbyBhbmQgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICB0aW1lb3V0X2hhbmRsZSA9IGxvb3AuY2FsbF9sYXRlcih0aW1lb3V0LCBfb25fdGltZW91dCkKICAgIGZvciBfIGluIHJhbmdlKGxlbih0b2RvKSk6CiAgICAgICAgeWllbGQgX3dhaXRfZm9yX29uZSgpCgoKQHR5cGVzLmNvcm91dGluZQpkZWYgX19zbGVlcDAoKToKICAgICIiIlNraXAgb25lIGV2ZW50IGxvb3AgcnVuIGN5Y2xlLgoKICAgIFRoaXMgaXMgYSBwcml2YXRlIGhlbHBlciBmb3IgJ2FzeW5jaW8uc2xlZXAoKScsIHVzZWQKICAgIHdoZW4gdGhlICdkZWxheScgaXMgc2V0IHRvIDAuICBJdCB1c2VzIGEgYmFyZSAneWllbGQnCiAgICBleHByZXNzaW9uICh3aGljaCBUYXNrLl9fc3RlcCBrbm93cyBob3cgdG8gaGFuZGxlKQogICAgaW5zdGVhZCBvZiBjcmVhdGluZyBhIEZ1dHVyZSBvYmplY3QuCiAgICAiIiIKICAgIHlpZWxkCgoKYXN5bmMgZGVmIHNsZWVwKGRlbGF5LCByZXN1bHQ9Tm9uZSk6CiAgICAiIiJDb3JvdXRpbmUgdGhhdCBjb21wbGV0ZXMgYWZ0ZXIgYSBnaXZlbiB0aW1lIChpbiBzZWNvbmRzKS4iIiIKICAgIGlmIGRlbGF5IDw9IDA6CiAgICAgICAgYXdhaXQgX19zbGVlcDAoKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBsb29wID0gZXZlbnRzLmdldF9ydW5uaW5nX2xvb3AoKQogICAgZnV0dXJlID0gbG9vcC5jcmVhdGVfZnV0dXJlKCkKICAgIGggPSBsb29wLmNhbGxfbGF0ZXIoZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZXMuX3NldF9yZXN1bHRfdW5sZXNzX2NhbmNlbGxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgZnV0dXJlLCByZXN1bHQpCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIGF3YWl0IGZ1dHVyZQogICAgZmluYWxseToKICAgICAgICBoLmNhbmNlbCgpCgoKZGVmIGVuc3VyZV9mdXR1cmUoY29yb19vcl9mdXR1cmUsICosIGxvb3A9Tm9uZSk6CiAgICAiIiJXcmFwIGEgY29yb3V0aW5lIG9yIGFuIGF3YWl0YWJsZSBpbiBhIGZ1dHVyZS4KCiAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBGdXR1cmUsIGl0IGlzIHJldHVybmVkIGRpcmVjdGx5LgogICAgIiIiCiAgICByZXR1cm4gX2Vuc3VyZV9mdXR1cmUoY29yb19vcl9mdXR1cmUsIGxvb3A9bG9vcCkKCgpkZWYgX2Vuc3VyZV9mdXR1cmUoY29yb19vcl9mdXR1cmUsICosIGxvb3A9Tm9uZSk6CiAgICBpZiBmdXR1cmVzLmlzZnV0dXJlKGNvcm9fb3JfZnV0dXJlKToKICAgICAgICBpZiBsb29wIGlzIG5vdCBOb25lIGFuZCBsb29wIGlzIG5vdCBmdXR1cmVzLl9nZXRfbG9vcChjb3JvX29yX2Z1dHVyZSk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RoZSBmdXR1cmUgYmVsb25ncyB0byBhIGRpZmZlcmVudCBsb29wIHRoYW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBvbmUgc3BlY2lmaWVkIGFzIHRoZSBsb29wIGFyZ3VtZW50JykKICAgICAgICByZXR1cm4gY29yb19vcl9mdXR1cmUKICAgIGNhbGxlZF93cmFwX2F3YWl0YWJsZSA9IEZhbHNlCiAgICBpZiBub3QgY29yb3V0aW5lcy5pc2Nvcm91dGluZShjb3JvX29yX2Z1dHVyZSk6CiAgICAgICAgaWYgaW5zcGVjdC5pc2F3YWl0YWJsZShjb3JvX29yX2Z1dHVyZSk6CiAgICAgICAgICAgIGNvcm9fb3JfZnV0dXJlID0gX3dyYXBfYXdhaXRhYmxlKGNvcm9fb3JfZnV0dXJlKQogICAgICAgICAgICBjYWxsZWRfd3JhcF9hd2FpdGFibGUgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBbiBhc3luY2lvLkZ1dHVyZSwgYSBjb3JvdXRpbmUgb3IgYW4gYXdhaXRhYmxlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyByZXF1aXJlZCcpCgogICAgaWYgbG9vcCBpcyBOb25lOgogICAgICAgIGxvb3AgPSBldmVudHMuX2dldF9ldmVudF9sb29wKHN0YWNrbGV2ZWw9NCkKICAgIHRyeToKICAgICAgICByZXR1cm4gbG9vcC5jcmVhdGVfdGFzayhjb3JvX29yX2Z1dHVyZSkKICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CiAgICAgICAgaWYgbm90IGNhbGxlZF93cmFwX2F3YWl0YWJsZToKICAgICAgICAgICAgY29yb19vcl9mdXR1cmUuY2xvc2UoKQogICAgICAgIHJhaXNlCgoKQHR5cGVzLmNvcm91dGluZQpkZWYgX3dyYXBfYXdhaXRhYmxlKGF3YWl0YWJsZSk6CiAgICAiIiJIZWxwZXIgZm9yIGFzeW5jaW8uZW5zdXJlX2Z1dHVyZSgpLgoKICAgIFdyYXBzIGF3YWl0YWJsZSAoYW4gb2JqZWN0IHdpdGggX19hd2FpdF9fKSBpbnRvIGEgY29yb3V0aW5lCiAgICB0aGF0IHdpbGwgbGF0ZXIgYmUgd3JhcHBlZCBpbiBhIFRhc2sgYnkgZW5zdXJlX2Z1dHVyZSgpLgogICAgIiIiCiAgICByZXR1cm4gKHlpZWxkIGZyb20gYXdhaXRhYmxlLl9fYXdhaXRfXygpKQoKX3dyYXBfYXdhaXRhYmxlLl9pc19jb3JvdXRpbmUgPSBfaXNfY29yb3V0aW5lCgoKY2xhc3MgX0dhdGhlcmluZ0Z1dHVyZShmdXR1cmVzLkZ1dHVyZSk6CiAgICAiIiJIZWxwZXIgZm9yIGdhdGhlcigpLgoKICAgIFRoaXMgb3ZlcnJpZGVzIGNhbmNlbCgpIHRvIGNhbmNlbCBhbGwgdGhlIGNoaWxkcmVuIGFuZCBhY3QgbW9yZQogICAgbGlrZSBUYXNrLmNhbmNlbCgpLCB3aGljaCBkb2Vzbid0IGltbWVkaWF0ZWx5IG1hcmsgaXRzZWxmIGFzCiAgICBjYW5jZWxsZWQuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY2hpbGRyZW4sICosIGxvb3ApOgogICAgICAgIGFzc2VydCBsb29wIGlzIG5vdCBOb25lCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsb29wPWxvb3ApCiAgICAgICAgc2VsZi5fY2hpbGRyZW4gPSBjaGlsZHJlbgogICAgICAgIHNlbGYuX2NhbmNlbF9yZXF1ZXN0ZWQgPSBGYWxzZQoKICAgIGRlZiBjYW5jZWwoc2VsZiwgbXNnPU5vbmUpOgogICAgICAgIGlmIHNlbGYuZG9uZSgpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXQgPSBGYWxzZQogICAgICAgIGZvciBjaGlsZCBpbiBzZWxmLl9jaGlsZHJlbjoKICAgICAgICAgICAgaWYgY2hpbGQuY2FuY2VsKG1zZz1tc2cpOgogICAgICAgICAgICAgICAgcmV0ID0gVHJ1ZQogICAgICAgIGlmIHJldDoKICAgICAgICAgICAgIyBJZiBhbnkgY2hpbGQgdGFza3Mgd2VyZSBhY3R1YWxseSBjYW5jZWxsZWQsIHdlIHNob3VsZAogICAgICAgICAgICAjIHByb3BhZ2F0ZSB0aGUgY2FuY2VsbGF0aW9uIHJlcXVlc3QgcmVnYXJkbGVzcyBvZgogICAgICAgICAgICAjICpyZXR1cm5fZXhjZXB0aW9ucyogYXJndW1lbnQuICBTZWUgaXNzdWUgMzI2ODQuCiAgICAgICAgICAgIHNlbGYuX2NhbmNlbF9yZXF1ZXN0ZWQgPSBUcnVlCiAgICAgICAgcmV0dXJuIHJldAoKCmRlZiBnYXRoZXIoKmNvcm9zX29yX2Z1dHVyZXMsIHJldHVybl9leGNlcHRpb25zPUZhbHNlKToKICAgICIiIlJldHVybiBhIGZ1dHVyZSBhZ2dyZWdhdGluZyByZXN1bHRzIGZyb20gdGhlIGdpdmVuIGNvcm91dGluZXMvZnV0dXJlcy4KCiAgICBDb3JvdXRpbmVzIHdpbGwgYmUgd3JhcHBlZCBpbiBhIGZ1dHVyZSBhbmQgc2NoZWR1bGVkIGluIHRoZSBldmVudAogICAgbG9vcC4gVGhleSB3aWxsIG5vdCBuZWNlc3NhcmlseSBiZSBzY2hlZHVsZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMKICAgIHBhc3NlZCBpbi4KCiAgICBBbGwgZnV0dXJlcyBtdXN0IHNoYXJlIHRoZSBzYW1lIGV2ZW50IGxvb3AuICBJZiBhbGwgdGhlIHRhc2tzIGFyZQogICAgZG9uZSBzdWNjZXNzZnVsbHksIHRoZSByZXR1cm5lZCBmdXR1cmUncyByZXN1bHQgaXMgdGhlIGxpc3Qgb2YKICAgIHJlc3VsdHMgKGluIHRoZSBvcmRlciBvZiB0aGUgb3JpZ2luYWwgc2VxdWVuY2UsIG5vdCBuZWNlc3NhcmlseQogICAgdGhlIG9yZGVyIG9mIHJlc3VsdHMgYXJyaXZhbCkuICBJZiAqcmV0dXJuX2V4Y2VwdGlvbnMqIGlzIFRydWUsCiAgICBleGNlcHRpb25zIGluIHRoZSB0YXNrcyBhcmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBzdWNjZXNzZnVsCiAgICByZXN1bHRzLCBhbmQgZ2F0aGVyZWQgaW4gdGhlIHJlc3VsdCBsaXN0OyBvdGhlcndpc2UsIHRoZSBmaXJzdAogICAgcmFpc2VkIGV4Y2VwdGlvbiB3aWxsIGJlIGltbWVkaWF0ZWx5IHByb3BhZ2F0ZWQgdG8gdGhlIHJldHVybmVkCiAgICBmdXR1cmUuCgogICAgQ2FuY2VsbGF0aW9uOiBpZiB0aGUgb3V0ZXIgRnV0dXJlIGlzIGNhbmNlbGxlZCwgYWxsIGNoaWxkcmVuICh0aGF0CiAgICBoYXZlIG5vdCBjb21wbGV0ZWQgeWV0KSBhcmUgYWxzbyBjYW5jZWxsZWQuICBJZiBhbnkgY2hpbGQgaXMKICAgIGNhbmNlbGxlZCwgdGhpcyBpcyB0cmVhdGVkIGFzIGlmIGl0IHJhaXNlZCBDYW5jZWxsZWRFcnJvciAtLQogICAgdGhlIG91dGVyIEZ1dHVyZSBpcyAqbm90KiBjYW5jZWxsZWQgaW4gdGhpcyBjYXNlLiAgKFRoaXMgaXMgdG8KICAgIHByZXZlbnQgdGhlIGNhbmNlbGxhdGlvbiBvZiBvbmUgY2hpbGQgdG8gY2F1c2Ugb3RoZXIgY2hpbGRyZW4gdG8KICAgIGJlIGNhbmNlbGxlZC4pCgogICAgSWYgKnJldHVybl9leGNlcHRpb25zKiBpcyBGYWxzZSwgY2FuY2VsbGluZyBnYXRoZXIoKSBhZnRlciBpdAogICAgaGFzIGJlZW4gbWFya2VkIGRvbmUgd29uJ3QgY2FuY2VsIGFueSBzdWJtaXR0ZWQgYXdhaXRhYmxlcy4KICAgIEZvciBpbnN0YW5jZSwgZ2F0aGVyIGNhbiBiZSBtYXJrZWQgZG9uZSBhZnRlciBwcm9wYWdhdGluZyBhbgogICAgZXhjZXB0aW9uIHRvIHRoZSBjYWxsZXIsIHRoZXJlZm9yZSwgY2FsbGluZyBgYGdhdGhlci5jYW5jZWwoKWBgCiAgICBhZnRlciBjYXRjaGluZyBhbiBleGNlcHRpb24gKHJhaXNlZCBieSBvbmUgb2YgdGhlIGF3YWl0YWJsZXMpIGZyb20KICAgIGdhdGhlciB3b24ndCBjYW5jZWwgYW55IG90aGVyIGF3YWl0YWJsZXMuCiAgICAiIiIKICAgIGlmIG5vdCBjb3Jvc19vcl9mdXR1cmVzOgogICAgICAgIGxvb3AgPSBldmVudHMuX2dldF9ldmVudF9sb29wKCkKICAgICAgICBvdXRlciA9IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgb3V0ZXIuc2V0X3Jlc3VsdChbXSkKICAgICAgICByZXR1cm4gb3V0ZXIKCiAgICBkZWYgX2RvbmVfY2FsbGJhY2soZnV0KToKICAgICAgICBub25sb2NhbCBuZmluaXNoZWQKICAgICAgICBuZmluaXNoZWQgKz0gMQoKICAgICAgICBpZiBvdXRlciBpcyBOb25lIG9yIG91dGVyLmRvbmUoKToKICAgICAgICAgICAgaWYgbm90IGZ1dC5jYW5jZWxsZWQoKToKICAgICAgICAgICAgICAgICMgTWFyayBleGNlcHRpb24gcmV0cmlldmVkLgogICAgICAgICAgICAgICAgZnV0LmV4Y2VwdGlvbigpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBub3QgcmV0dXJuX2V4Y2VwdGlvbnM6CiAgICAgICAgICAgIGlmIGZ1dC5jYW5jZWxsZWQoKToKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgJ2Z1dCcgaXMgY2FuY2VsbGVkIGZpcnN0LCBhcwogICAgICAgICAgICAgICAgIyAnZnV0LmV4Y2VwdGlvbigpJyB3aWxsICpyYWlzZSogYSBDYW5jZWxsZWRFcnJvcgogICAgICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIHJldHVybmluZyBpdC4KICAgICAgICAgICAgICAgIGV4YyA9IGZ1dC5fbWFrZV9jYW5jZWxsZWRfZXJyb3IoKQogICAgICAgICAgICAgICAgb3V0ZXIuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGV4YyA9IGZ1dC5leGNlcHRpb24oKQogICAgICAgICAgICAgICAgaWYgZXhjIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIG91dGVyLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBuZmluaXNoZWQgPT0gbmZ1dHM6CiAgICAgICAgICAgICMgQWxsIGZ1dHVyZXMgYXJlIGRvbmU7IGNyZWF0ZSBhIGxpc3Qgb2YgcmVzdWx0cwogICAgICAgICAgICAjIGFuZCBzZXQgaXQgdG8gdGhlICdvdXRlcicgZnV0dXJlLgogICAgICAgICAgICByZXN1bHRzID0gW10KCiAgICAgICAgICAgIGZvciBmdXQgaW4gY2hpbGRyZW46CiAgICAgICAgICAgICAgICBpZiBmdXQuY2FuY2VsbGVkKCk6CiAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiAnZnV0JyBpcyBjYW5jZWxsZWQgZmlyc3QsIGFzICdmdXQuZXhjZXB0aW9uKCknCiAgICAgICAgICAgICAgICAgICAgIyB3aWxsICpyYWlzZSogYSBDYW5jZWxsZWRFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZyBpdC4KICAgICAgICAgICAgICAgICAgICAjIEFsc28sIHNpbmNlIHdlJ3JlIGFkZGluZyB0aGUgZXhjZXB0aW9uIHJldHVybiB2YWx1ZQogICAgICAgICAgICAgICAgICAgICMgdG8gJ3Jlc3VsdHMnIGluc3RlYWQgb2YgcmFpc2luZyBpdCwgZG9uJ3QgYm90aGVyCiAgICAgICAgICAgICAgICAgICAgIyBzZXR0aW5nIF9fY29udGV4dF9fLiAgVGhpcyBhbHNvIGxldHMgdXMgcHJlc2VydmUKICAgICAgICAgICAgICAgICAgICAjIGNhbGxpbmcgJ19tYWtlX2NhbmNlbGxlZF9lcnJvcigpJyBhdCBtb3N0IG9uY2UuCiAgICAgICAgICAgICAgICAgICAgcmVzID0gZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgJycgaWYgZnV0Ll9jYW5jZWxfbWVzc2FnZSBpcyBOb25lIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZnV0Ll9jYW5jZWxfbWVzc2FnZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmVzID0gZnV0LmV4Y2VwdGlvbigpCiAgICAgICAgICAgICAgICAgICAgaWYgcmVzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IGZ1dC5yZXN1bHQoKQogICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzKQoKICAgICAgICAgICAgaWYgb3V0ZXIuX2NhbmNlbF9yZXF1ZXN0ZWQ6CiAgICAgICAgICAgICAgICAjIElmIGdhdGhlciBpcyBiZWluZyBjYW5jZWxsZWQgd2UgbXVzdCBwcm9wYWdhdGUgdGhlCiAgICAgICAgICAgICAgICAjIGNhbmNlbGxhdGlvbiByZWdhcmRsZXNzIG9mICpyZXR1cm5fZXhjZXB0aW9ucyogYXJndW1lbnQuCiAgICAgICAgICAgICAgICAjIFNlZSBpc3N1ZSAzMjY4NC4KICAgICAgICAgICAgICAgIGV4YyA9IGZ1dC5fbWFrZV9jYW5jZWxsZWRfZXJyb3IoKQogICAgICAgICAgICAgICAgb3V0ZXIuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBvdXRlci5zZXRfcmVzdWx0KHJlc3VsdHMpCgogICAgYXJnX3RvX2Z1dCA9IHt9CiAgICBjaGlsZHJlbiA9IFtdCiAgICBuZnV0cyA9IDAKICAgIG5maW5pc2hlZCA9IDAKICAgIGxvb3AgPSBOb25lCiAgICBvdXRlciA9IE5vbmUgICMgYnBvLTQ2NjcyCiAgICBmb3IgYXJnIGluIGNvcm9zX29yX2Z1dHVyZXM6CiAgICAgICAgaWYgYXJnIG5vdCBpbiBhcmdfdG9fZnV0OgogICAgICAgICAgICBmdXQgPSBfZW5zdXJlX2Z1dHVyZShhcmcsIGxvb3A9bG9vcCkKICAgICAgICAgICAgaWYgbG9vcCBpcyBOb25lOgogICAgICAgICAgICAgICAgbG9vcCA9IGZ1dHVyZXMuX2dldF9sb29wKGZ1dCkKICAgICAgICAgICAgaWYgZnV0IGlzIG5vdCBhcmc6CiAgICAgICAgICAgICAgICAjICdhcmcnIHdhcyBub3QgYSBGdXR1cmUsIHRoZXJlZm9yZSwgJ2Z1dCcgaXMgYSBuZXcKICAgICAgICAgICAgICAgICMgRnV0dXJlIGNyZWF0ZWQgc3BlY2lmaWNhbGx5IGZvciAnYXJnJy4gIFNpbmNlIHRoZSBjYWxsZXIKICAgICAgICAgICAgICAgICMgY2FuJ3QgY29udHJvbCBpdCwgZGlzYWJsZSB0aGUgImRlc3Ryb3kgcGVuZGluZyB0YXNrIgogICAgICAgICAgICAgICAgIyB3YXJuaW5nLgogICAgICAgICAgICAgICAgZnV0Ll9sb2dfZGVzdHJveV9wZW5kaW5nID0gRmFsc2UKCiAgICAgICAgICAgIG5mdXRzICs9IDEKICAgICAgICAgICAgYXJnX3RvX2Z1dFthcmddID0gZnV0CiAgICAgICAgICAgIGZ1dC5hZGRfZG9uZV9jYWxsYmFjayhfZG9uZV9jYWxsYmFjaykKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBUaGVyZSdzIGEgZHVwbGljYXRlIEZ1dHVyZSBvYmplY3QgaW4gY29yb3Nfb3JfZnV0dXJlcy4KICAgICAgICAgICAgZnV0ID0gYXJnX3RvX2Z1dFthcmddCgogICAgICAgIGNoaWxkcmVuLmFwcGVuZChmdXQpCgogICAgb3V0ZXIgPSBfR2F0aGVyaW5nRnV0dXJlKGNoaWxkcmVuLCBsb29wPWxvb3ApCiAgICByZXR1cm4gb3V0ZXIKCgpkZWYgc2hpZWxkKGFyZyk6CiAgICAiIiJXYWl0IGZvciBhIGZ1dHVyZSwgc2hpZWxkaW5nIGl0IGZyb20gY2FuY2VsbGF0aW9uLgoKICAgIFRoZSBzdGF0ZW1lbnQKCiAgICAgICAgdGFzayA9IGFzeW5jaW8uY3JlYXRlX3Rhc2soc29tZXRoaW5nKCkpCiAgICAgICAgcmVzID0gYXdhaXQgc2hpZWxkKHRhc2spCgogICAgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIHRoZSBzdGF0ZW1lbnQKCiAgICAgICAgcmVzID0gYXdhaXQgc29tZXRoaW5nKCkKCiAgICAqZXhjZXB0KiB0aGF0IGlmIHRoZSBjb3JvdXRpbmUgY29udGFpbmluZyBpdCBpcyBjYW5jZWxsZWQsIHRoZQogICAgdGFzayBydW5uaW5nIGluIHNvbWV0aGluZygpIGlzIG5vdCBjYW5jZWxsZWQuICBGcm9tIHRoZSBQT1Ygb2YKICAgIHNvbWV0aGluZygpLCB0aGUgY2FuY2VsbGF0aW9uIGRpZCBub3QgaGFwcGVuLiAgQnV0IGl0cyBjYWxsZXIgaXMKICAgIHN0aWxsIGNhbmNlbGxlZCwgc28gdGhlIHlpZWxkLWZyb20gZXhwcmVzc2lvbiBzdGlsbCByYWlzZXMKICAgIENhbmNlbGxlZEVycm9yLiAgTm90ZTogSWYgc29tZXRoaW5nKCkgaXMgY2FuY2VsbGVkIGJ5IG90aGVyIG1lYW5zCiAgICB0aGlzIHdpbGwgc3RpbGwgY2FuY2VsIHNoaWVsZCgpLgoKICAgIElmIHlvdSB3YW50IHRvIGNvbXBsZXRlbHkgaWdub3JlIGNhbmNlbGxhdGlvbiAobm90IHJlY29tbWVuZGVkKQogICAgeW91IGNhbiBjb21iaW5lIHNoaWVsZCgpIHdpdGggYSB0cnkvZXhjZXB0IGNsYXVzZSwgYXMgZm9sbG93czoKCiAgICAgICAgdGFzayA9IGFzeW5jaW8uY3JlYXRlX3Rhc2soc29tZXRoaW5nKCkpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXMgPSBhd2FpdCBzaGllbGQodGFzaykKICAgICAgICBleGNlcHQgQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgIHJlcyA9IE5vbmUKCiAgICBTYXZlIGEgcmVmZXJlbmNlIHRvIHRhc2tzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLCB0byBhdm9pZAogICAgYSB0YXNrIGRpc2FwcGVhcmluZyBtaWQtZXhlY3V0aW9uLiBUaGUgZXZlbnQgbG9vcCBvbmx5IGtlZXBzCiAgICB3ZWFrIHJlZmVyZW5jZXMgdG8gdGFza3MuIEEgdGFzayB0aGF0IGlzbid0IHJlZmVyZW5jZWQgZWxzZXdoZXJlCiAgICBtYXkgZ2V0IGdhcmJhZ2UgY29sbGVjdGVkIGF0IGFueSB0aW1lLCBldmVuIGJlZm9yZSBpdCdzIGRvbmUuCiAgICAiIiIKICAgIGlubmVyID0gX2Vuc3VyZV9mdXR1cmUoYXJnKQogICAgaWYgaW5uZXIuZG9uZSgpOgogICAgICAgICMgU2hvcnRjdXQuCiAgICAgICAgcmV0dXJuIGlubmVyCiAgICBsb29wID0gZnV0dXJlcy5fZ2V0X2xvb3AoaW5uZXIpCiAgICBvdXRlciA9IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCgogICAgZGVmIF9pbm5lcl9kb25lX2NhbGxiYWNrKGlubmVyKToKICAgICAgICBpZiBvdXRlci5jYW5jZWxsZWQoKToKICAgICAgICAgICAgaWYgbm90IGlubmVyLmNhbmNlbGxlZCgpOgogICAgICAgICAgICAgICAgIyBNYXJrIGlubmVyJ3MgcmVzdWx0IGFzIHJldHJpZXZlZC4KICAgICAgICAgICAgICAgIGlubmVyLmV4Y2VwdGlvbigpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBpbm5lci5jYW5jZWxsZWQoKToKICAgICAgICAgICAgb3V0ZXIuY2FuY2VsKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBleGMgPSBpbm5lci5leGNlcHRpb24oKQogICAgICAgICAgICBpZiBleGMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBvdXRlci5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG91dGVyLnNldF9yZXN1bHQoaW5uZXIucmVzdWx0KCkpCgoKICAgIGRlZiBfb3V0ZXJfZG9uZV9jYWxsYmFjayhvdXRlcik6CiAgICAgICAgaWYgbm90IGlubmVyLmRvbmUoKToKICAgICAgICAgICAgaW5uZXIucmVtb3ZlX2RvbmVfY2FsbGJhY2soX2lubmVyX2RvbmVfY2FsbGJhY2spCgogICAgaW5uZXIuYWRkX2RvbmVfY2FsbGJhY2soX2lubmVyX2RvbmVfY2FsbGJhY2spCiAgICBvdXRlci5hZGRfZG9uZV9jYWxsYmFjayhfb3V0ZXJfZG9uZV9jYWxsYmFjaykKICAgIHJldHVybiBvdXRlcgoKCmRlZiBydW5fY29yb3V0aW5lX3RocmVhZHNhZmUoY29ybywgbG9vcCk6CiAgICAiIiJTdWJtaXQgYSBjb3JvdXRpbmUgb2JqZWN0IHRvIGEgZ2l2ZW4gZXZlbnQgbG9vcC4KCiAgICBSZXR1cm4gYSBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlIHRvIGFjY2VzcyB0aGUgcmVzdWx0LgogICAgIiIiCiAgICBpZiBub3QgY29yb3V0aW5lcy5pc2Nvcm91dGluZShjb3JvKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0EgY29yb3V0aW5lIG9iamVjdCBpcyByZXF1aXJlZCcpCiAgICBmdXR1cmUgPSBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlKCkKCiAgICBkZWYgY2FsbGJhY2soKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZ1dHVyZXMuX2NoYWluX2Z1dHVyZShlbnN1cmVfZnV0dXJlKGNvcm8sIGxvb3A9bG9vcCksIGZ1dHVyZSkKICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIGlmIGZ1dHVyZS5zZXRfcnVubmluZ19vcl9ub3RpZnlfY2FuY2VsKCk6CiAgICAgICAgICAgICAgICBmdXR1cmUuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgICAgIHJhaXNlCgogICAgbG9vcC5jYWxsX3Nvb25fdGhyZWFkc2FmZShjYWxsYmFjaykKICAgIHJldHVybiBmdXR1cmUKCgojIFdlYWtTZXQgY29udGFpbmluZyBhbGwgYWxpdmUgdGFza3MuCl9hbGxfdGFza3MgPSB3ZWFrcmVmLldlYWtTZXQoKQoKIyBEaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGFza3MgdGhhdCBhcmUgY3VycmVudGx5IGFjdGl2ZSBpbgojIGFsbCBydW5uaW5nIGV2ZW50IGxvb3BzLiAge0V2ZW50TG9vcDogVGFza30KX2N1cnJlbnRfdGFza3MgPSB7fQoKCmRlZiBfcmVnaXN0ZXJfdGFzayh0YXNrKToKICAgICIiIlJlZ2lzdGVyIGEgbmV3IHRhc2sgaW4gYXN5bmNpbyBhcyBleGVjdXRlZCBieSBsb29wLiIiIgogICAgX2FsbF90YXNrcy5hZGQodGFzaykKCgpkZWYgX2VudGVyX3Rhc2sobG9vcCwgdGFzayk6CiAgICBjdXJyZW50X3Rhc2sgPSBfY3VycmVudF90YXNrcy5nZXQobG9vcCkKICAgIGlmIGN1cnJlbnRfdGFzayBpcyBub3QgTm9uZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZiJDYW5ub3QgZW50ZXIgaW50byB0YXNrIHt0YXNrIXJ9IHdoaWxlIGFub3RoZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICBmInRhc2sge2N1cnJlbnRfdGFzayFyfSBpcyBiZWluZyBleGVjdXRlZC4iKQogICAgX2N1cnJlbnRfdGFza3NbbG9vcF0gPSB0YXNrCgoKZGVmIF9sZWF2ZV90YXNrKGxvb3AsIHRhc2spOgogICAgY3VycmVudF90YXNrID0gX2N1cnJlbnRfdGFza3MuZ2V0KGxvb3ApCiAgICBpZiBjdXJyZW50X3Rhc2sgaXMgbm90IHRhc2s6CiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYiTGVhdmluZyB0YXNrIHt0YXNrIXJ9IGRvZXMgbm90IG1hdGNoICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ0aGUgY3VycmVudCB0YXNrIHtjdXJyZW50X3Rhc2shcn0uIikKICAgIGRlbCBfY3VycmVudF90YXNrc1tsb29wXQoKCmRlZiBfdW5yZWdpc3Rlcl90YXNrKHRhc2spOgogICAgIiIiVW5yZWdpc3RlciBhIHRhc2suIiIiCiAgICBfYWxsX3Rhc2tzLmRpc2NhcmQodGFzaykKCgpfcHlfcmVnaXN0ZXJfdGFzayA9IF9yZWdpc3Rlcl90YXNrCl9weV91bnJlZ2lzdGVyX3Rhc2sgPSBfdW5yZWdpc3Rlcl90YXNrCl9weV9lbnRlcl90YXNrID0gX2VudGVyX3Rhc2sKX3B5X2xlYXZlX3Rhc2sgPSBfbGVhdmVfdGFzawoKCnRyeToKICAgIGZyb20gX2FzeW5jaW8gaW1wb3J0IChfcmVnaXN0ZXJfdGFzaywgX3VucmVnaXN0ZXJfdGFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICBfZW50ZXJfdGFzaywgX2xlYXZlX3Rhc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgX2FsbF90YXNrcywgX2N1cnJlbnRfdGFza3MpCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgIF9jX3JlZ2lzdGVyX3Rhc2sgPSBfcmVnaXN0ZXJfdGFzawogICAgX2NfdW5yZWdpc3Rlcl90YXNrID0gX3VucmVnaXN0ZXJfdGFzawogICAgX2NfZW50ZXJfdGFzayA9IF9lbnRlcl90YXNrCiAgICBfY19sZWF2ZV90YXNrID0gX2xlYXZlX3Rhc2sKUEsDBBQAAAAAAAIgo1bna1lAFgMAABYDAAASAAAAYXN5bmNpby90aHJlYWRzLnB5IiIiSGlnaC1sZXZlbCBzdXBwb3J0IGZvciB3b3JraW5nIHdpdGggdGhyZWFkcyBpbiBhc3luY2lvIiIiCgppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCBjb250ZXh0dmFycwoKZnJvbSAuIGltcG9ydCBldmVudHMKCgpfX2FsbF9fID0gInRvX3RocmVhZCIsCgoKYXN5bmMgZGVmIHRvX3RocmVhZChmdW5jLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgIiIiQXN5bmNocm9ub3VzbHkgcnVuIGZ1bmN0aW9uICpmdW5jKiBpbiBhIHNlcGFyYXRlIHRocmVhZC4KCiAgICBBbnkgKmFyZ3MgYW5kICoqa3dhcmdzIHN1cHBsaWVkIGZvciB0aGlzIGZ1bmN0aW9uIGFyZSBkaXJlY3RseSBwYXNzZWQKICAgIHRvICpmdW5jKi4gQWxzbywgdGhlIGN1cnJlbnQgOmNsYXNzOmBjb250ZXh0dmFycy5Db250ZXh0YCBpcyBwcm9wYWdhdGVkLAogICAgYWxsb3dpbmcgY29udGV4dCB2YXJpYWJsZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgdG8gYmUgYWNjZXNzZWQgaW4gdGhlCiAgICBzZXBhcmF0ZSB0aHJlYWQuCgogICAgUmV0dXJuIGEgY29yb3V0aW5lIHRoYXQgY2FuIGJlIGF3YWl0ZWQgdG8gZ2V0IHRoZSBldmVudHVhbCByZXN1bHQgb2YgKmZ1bmMqLgogICAgIiIiCiAgICBsb29wID0gZXZlbnRzLmdldF9ydW5uaW5nX2xvb3AoKQogICAgY3R4ID0gY29udGV4dHZhcnMuY29weV9jb250ZXh0KCkKICAgIGZ1bmNfY2FsbCA9IGZ1bmN0b29scy5wYXJ0aWFsKGN0eC5ydW4sIGZ1bmMsICphcmdzLCAqKmt3YXJncykKICAgIHJldHVybiBhd2FpdCBsb29wLnJ1bl9pbl9leGVjdXRvcihOb25lLCBmdW5jX2NhbGwpClBLAwQUAAAAAAACIKNWZfB11MwRAADMEQAAEwAAAGFzeW5jaW8vdGltZW91dHMucHlpbXBvcnQgZW51bQoKZnJvbSB0eXBlcyBpbXBvcnQgVHJhY2ViYWNrVHlwZQpmcm9tIHR5cGluZyBpbXBvcnQgZmluYWwsIE9wdGlvbmFsLCBUeXBlCgpmcm9tIC4gaW1wb3J0IGV2ZW50cwpmcm9tIC4gaW1wb3J0IGV4Y2VwdGlvbnMKZnJvbSAuIGltcG9ydCB0YXNrcwoKCl9fYWxsX18gPSAoCiAgICAiVGltZW91dCIsCiAgICAidGltZW91dCIsCiAgICAidGltZW91dF9hdCIsCikKCgpjbGFzcyBfU3RhdGUoZW51bS5FbnVtKToKICAgIENSRUFURUQgPSAiY3JlYXRlZCIKICAgIEVOVEVSRUQgPSAiYWN0aXZlIgogICAgRVhQSVJJTkcgPSAiZXhwaXJpbmciCiAgICBFWFBJUkVEID0gImV4cGlyZWQiCiAgICBFWElURUQgPSAiZmluaXNoZWQiCgoKQGZpbmFsCmNsYXNzIFRpbWVvdXQ6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHdoZW46IE9wdGlvbmFsW2Zsb2F0XSkgLT4gTm9uZToKICAgICAgICBzZWxmLl9zdGF0ZSA9IF9TdGF0ZS5DUkVBVEVECgogICAgICAgIHNlbGYuX3RpbWVvdXRfaGFuZGxlcjogT3B0aW9uYWxbZXZlbnRzLlRpbWVySGFuZGxlXSA9IE5vbmUKICAgICAgICBzZWxmLl90YXNrOiBPcHRpb25hbFt0YXNrcy5UYXNrXSA9IE5vbmUKICAgICAgICBzZWxmLl93aGVuID0gd2hlbgoKICAgIGRlZiB3aGVuKHNlbGYpIC0+IE9wdGlvbmFsW2Zsb2F0XToKICAgICAgICByZXR1cm4gc2VsZi5fd2hlbgoKICAgIGRlZiByZXNjaGVkdWxlKHNlbGYsIHdoZW46IE9wdGlvbmFsW2Zsb2F0XSkgLT4gTm9uZToKICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgaXMgbm90IF9TdGF0ZS5DUkVBVEVECiAgICAgICAgaWYgc2VsZi5fc3RhdGUgaXMgbm90IF9TdGF0ZS5FTlRFUkVEOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICBmIkNhbm5vdCBjaGFuZ2Ugc3RhdGUgb2Yge3NlbGYuX3N0YXRlLnZhbHVlfSBUaW1lb3V0IiwKICAgICAgICAgICAgKQoKICAgICAgICBzZWxmLl93aGVuID0gd2hlbgoKICAgICAgICBpZiBzZWxmLl90aW1lb3V0X2hhbmRsZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3RpbWVvdXRfaGFuZGxlci5jYW5jZWwoKQoKICAgICAgICBpZiB3aGVuIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3RpbWVvdXRfaGFuZGxlciA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBsb29wID0gZXZlbnRzLmdldF9ydW5uaW5nX2xvb3AoKQogICAgICAgICAgICBpZiB3aGVuIDw9IGxvb3AudGltZSgpOgogICAgICAgICAgICAgICAgc2VsZi5fdGltZW91dF9oYW5kbGVyID0gbG9vcC5jYWxsX3Nvb24oc2VsZi5fb25fdGltZW91dCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX3RpbWVvdXRfaGFuZGxlciA9IGxvb3AuY2FsbF9hdCh3aGVuLCBzZWxmLl9vbl90aW1lb3V0KQoKICAgIGRlZiBleHBpcmVkKHNlbGYpIC0+IGJvb2w6CiAgICAgICAgIiIiSXMgdGltZW91dCBleHBpcmVkIGR1cmluZyBleGVjdXRpb24/IiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlIGluIChfU3RhdGUuRVhQSVJJTkcsIF9TdGF0ZS5FWFBJUkVEKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgaW5mbyA9IFsnJ10KICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpcyBfU3RhdGUuRU5URVJFRDoKICAgICAgICAgICAgd2hlbiA9IHJvdW5kKHNlbGYuX3doZW4sIDMpIGlmIHNlbGYuX3doZW4gaXMgbm90IE5vbmUgZWxzZSBOb25lCiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYid2hlbj17d2hlbn0iKQogICAgICAgIGluZm9fc3RyID0gJyAnLmpvaW4oaW5mbykKICAgICAgICByZXR1cm4gZiI8VGltZW91dCBbe3NlbGYuX3N0YXRlLnZhbHVlfV17aW5mb19zdHJ9PiIKCiAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKSAtPiAiVGltZW91dCI6CiAgICAgICAgc2VsZi5fc3RhdGUgPSBfU3RhdGUuRU5URVJFRAogICAgICAgIHNlbGYuX3Rhc2sgPSB0YXNrcy5jdXJyZW50X3Rhc2soKQogICAgICAgIGlmIHNlbGYuX3Rhc2sgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaW1lb3V0IHNob3VsZCBiZSB1c2VkIGluc2lkZSBhIHRhc2siKQogICAgICAgIHNlbGYucmVzY2hlZHVsZShzZWxmLl93aGVuKQogICAgICAgIHJldHVybiBzZWxmCgogICAgYXN5bmMgZGVmIF9fYWV4aXRfXygKICAgICAgICBzZWxmLAogICAgICAgIGV4Y190eXBlOiBPcHRpb25hbFtUeXBlW0Jhc2VFeGNlcHRpb25dXSwKICAgICAgICBleGNfdmFsOiBPcHRpb25hbFtCYXNlRXhjZXB0aW9uXSwKICAgICAgICBleGNfdGI6IE9wdGlvbmFsW1RyYWNlYmFja1R5cGVdLAogICAgKSAtPiBPcHRpb25hbFtib29sXToKICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgaW4gKF9TdGF0ZS5FTlRFUkVELCBfU3RhdGUuRVhQSVJJTkcpCgogICAgICAgIGlmIHNlbGYuX3RpbWVvdXRfaGFuZGxlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fdGltZW91dF9oYW5kbGVyLmNhbmNlbCgpCiAgICAgICAgICAgIHNlbGYuX3RpbWVvdXRfaGFuZGxlciA9IE5vbmUKCiAgICAgICAgaWYgc2VsZi5fc3RhdGUgaXMgX1N0YXRlLkVYUElSSU5HOgogICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IF9TdGF0ZS5FWFBJUkVECgogICAgICAgICAgICBpZiBzZWxmLl90YXNrLnVuY2FuY2VsKCkgPT0gMCBhbmQgZXhjX3R5cGUgaXMgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgICAgICMgU2luY2UgdGhlcmUgYXJlIG5vIG91dHN0YW5kaW5nIGNhbmNlbCByZXF1ZXN0cywgd2UncmUKICAgICAgICAgICAgICAgICMgaGFuZGxpbmcgdGhpcy4KICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcgogICAgICAgIGVsaWYgc2VsZi5fc3RhdGUgaXMgX1N0YXRlLkVOVEVSRUQ6CiAgICAgICAgICAgIHNlbGYuX3N0YXRlID0gX1N0YXRlLkVYSVRFRAoKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBfb25fdGltZW91dChzZWxmKSAtPiBOb25lOgogICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZSBpcyBfU3RhdGUuRU5URVJFRAogICAgICAgIHNlbGYuX3Rhc2suY2FuY2VsKCkKICAgICAgICBzZWxmLl9zdGF0ZSA9IF9TdGF0ZS5FWFBJUklORwogICAgICAgICMgZHJvcCB0aGUgcmVmZXJlbmNlIGVhcmx5CiAgICAgICAgc2VsZi5fdGltZW91dF9oYW5kbGVyID0gTm9uZQoKCmRlZiB0aW1lb3V0KGRlbGF5OiBPcHRpb25hbFtmbG9hdF0pIC0+IFRpbWVvdXQ6CiAgICAiIiJUaW1lb3V0IGFzeW5jIGNvbnRleHQgbWFuYWdlci4KCiAgICBVc2VmdWwgaW4gY2FzZXMgd2hlbiB5b3Ugd2FudCB0byBhcHBseSB0aW1lb3V0IGxvZ2ljIGFyb3VuZCBibG9jawogICAgb2YgY29kZSBvciBpbiBjYXNlcyB3aGVuIGFzeW5jaW8ud2FpdF9mb3IgaXMgbm90IHN1aXRhYmxlLiBGb3IgZXhhbXBsZToKCiAgICA+Pj4gYXN5bmMgd2l0aCBhc3luY2lvLnRpbWVvdXQoMTApOiAgIyAxMCBzZWNvbmRzIHRpbWVvdXQKICAgIC4uLiAgICAgYXdhaXQgbG9uZ19ydW5uaW5nX3Rhc2soKQoKCiAgICBkZWxheSAtIHZhbHVlIGluIHNlY29uZHMgb3IgTm9uZSB0byBkaXNhYmxlIHRpbWVvdXQgbG9naWMKCiAgICBsb25nX3J1bm5pbmdfdGFzaygpIGlzIGludGVycnVwdGVkIGJ5IHJhaXNpbmcgYXN5bmNpby5DYW5jZWxsZWRFcnJvciwKICAgIHRoZSB0b3AtbW9zdCBhZmZlY3RlZCB0aW1lb3V0KCkgY29udGV4dCBtYW5hZ2VyIGNvbnZlcnRzIENhbmNlbGxlZEVycm9yCiAgICBpbnRvIFRpbWVvdXRFcnJvci4KICAgICIiIgogICAgbG9vcCA9IGV2ZW50cy5nZXRfcnVubmluZ19sb29wKCkKICAgIHJldHVybiBUaW1lb3V0KGxvb3AudGltZSgpICsgZGVsYXkgaWYgZGVsYXkgaXMgbm90IE5vbmUgZWxzZSBOb25lKQoKCmRlZiB0aW1lb3V0X2F0KHdoZW46IE9wdGlvbmFsW2Zsb2F0XSkgLT4gVGltZW91dDoKICAgICIiIlNjaGVkdWxlIHRoZSB0aW1lb3V0IGF0IGFic29sdXRlIHRpbWUuCgogICAgTGlrZSB0aW1lb3V0KCkgYnV0IGFyZ3VtZW50IGdpdmVzIGFic29sdXRlIHRpbWUgaW4gdGhlIHNhbWUgY2xvY2sgc3lzdGVtCiAgICBhcyBsb29wLnRpbWUoKS4KCiAgICBQbGVhc2Ugbm90ZTogaXQgaXMgbm90IFBPU0lYIHRpbWUgYnV0IGEgdGltZSB3aXRoCiAgICB1bmRlZmluZWQgc3RhcnRpbmcgYmFzZSwgZS5nLiB0aGUgdGltZSBvZiB0aGUgc3lzdGVtIHBvd2VyIG9uLgoKICAgID4+PiBhc3luYyB3aXRoIGFzeW5jaW8udGltZW91dF9hdChsb29wLnRpbWUoKSArIDEwKToKICAgIC4uLiAgICAgYXdhaXQgbG9uZ19ydW5uaW5nX3Rhc2soKQoKCiAgICB3aGVuIC0gYSBkZWFkbGluZSB3aGVuIHRpbWVvdXQgb2NjdXJzIG9yIE5vbmUgdG8gZGlzYWJsZSB0aW1lb3V0IGxvZ2ljCgogICAgbG9uZ19ydW5uaW5nX3Rhc2soKSBpcyBpbnRlcnJ1cHRlZCBieSByYWlzaW5nIGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IsCiAgICB0aGUgdG9wLW1vc3QgYWZmZWN0ZWQgdGltZW91dCgpIGNvbnRleHQgbWFuYWdlciBjb252ZXJ0cyBDYW5jZWxsZWRFcnJvcgogICAgaW50byBUaW1lb3V0RXJyb3IuCiAgICAiIiIKICAgIHJldHVybiBUaW1lb3V0KHdoZW4pClBLAwQUAAAAAAACIKNWgg6x1OIpAADiKQAAFQAAAGFzeW5jaW8vdHJhbnNwb3J0cy5weSIiIkFic3RyYWN0IFRyYW5zcG9ydCBjbGFzcy4iIiIKCl9fYWxsX18gPSAoCiAgICAnQmFzZVRyYW5zcG9ydCcsICdSZWFkVHJhbnNwb3J0JywgJ1dyaXRlVHJhbnNwb3J0JywKICAgICdUcmFuc3BvcnQnLCAnRGF0YWdyYW1UcmFuc3BvcnQnLCAnU3VicHJvY2Vzc1RyYW5zcG9ydCcsCikKCgpjbGFzcyBCYXNlVHJhbnNwb3J0OgogICAgIiIiQmFzZSBjbGFzcyBmb3IgdHJhbnNwb3J0cy4iIiIKCiAgICBfX3Nsb3RzX18gPSAoJ19leHRyYScsKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHRyYT1Ob25lKToKICAgICAgICBpZiBleHRyYSBpcyBOb25lOgogICAgICAgICAgICBleHRyYSA9IHt9CiAgICAgICAgc2VsZi5fZXh0cmEgPSBleHRyYQoKICAgIGRlZiBnZXRfZXh0cmFfaW5mbyhzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgogICAgICAgICIiIkdldCBvcHRpb25hbCB0cmFuc3BvcnQgaW5mb3JtYXRpb24uIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhLmdldChuYW1lLCBkZWZhdWx0KQoKICAgIGRlZiBpc19jbG9zaW5nKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSB0cmFuc3BvcnQgaXMgY2xvc2luZyBvciBjbG9zZWQuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgdHJhbnNwb3J0LgoKICAgICAgICBCdWZmZXJlZCBkYXRhIHdpbGwgYmUgZmx1c2hlZCBhc3luY2hyb25vdXNseS4gIE5vIG1vcmUgZGF0YQogICAgICAgIHdpbGwgYmUgcmVjZWl2ZWQuICBBZnRlciBhbGwgYnVmZmVyZWQgZGF0YSBpcyBmbHVzaGVkLCB0aGUKICAgICAgICBwcm90b2NvbCdzIGNvbm5lY3Rpb25fbG9zdCgpIG1ldGhvZCB3aWxsIChldmVudHVhbGx5KSBiZQogICAgICAgIGNhbGxlZCB3aXRoIE5vbmUgYXMgaXRzIGFyZ3VtZW50LgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgc2V0X3Byb3RvY29sKHNlbGYsIHByb3RvY29sKToKICAgICAgICAiIiJTZXQgYSBuZXcgcHJvdG9jb2wuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBnZXRfcHJvdG9jb2woc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IHByb3RvY29sLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCgpjbGFzcyBSZWFkVHJhbnNwb3J0KEJhc2VUcmFuc3BvcnQpOgogICAgIiIiSW50ZXJmYWNlIGZvciByZWFkLW9ubHkgdHJhbnNwb3J0cy4iIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBpc19yZWFkaW5nKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSB0cmFuc3BvcnQgaXMgcmVjZWl2aW5nLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgcGF1c2VfcmVhZGluZyhzZWxmKToKICAgICAgICAiIiJQYXVzZSB0aGUgcmVjZWl2aW5nIGVuZC4KCiAgICAgICAgTm8gZGF0YSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgcHJvdG9jb2wncyBkYXRhX3JlY2VpdmVkKCkKICAgICAgICBtZXRob2QgdW50aWwgcmVzdW1lX3JlYWRpbmcoKSBpcyBjYWxsZWQuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiByZXN1bWVfcmVhZGluZyhzZWxmKToKICAgICAgICAiIiJSZXN1bWUgdGhlIHJlY2VpdmluZyBlbmQuCgogICAgICAgIERhdGEgcmVjZWl2ZWQgd2lsbCBvbmNlIGFnYWluIGJlIHBhc3NlZCB0byB0aGUgcHJvdG9jb2wncwogICAgICAgIGRhdGFfcmVjZWl2ZWQoKSBtZXRob2QuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIFdyaXRlVHJhbnNwb3J0KEJhc2VUcmFuc3BvcnQpOgogICAgIiIiSW50ZXJmYWNlIGZvciB3cml0ZS1vbmx5IHRyYW5zcG9ydHMuIiIiCgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgc2V0X3dyaXRlX2J1ZmZlcl9saW1pdHMoc2VsZiwgaGlnaD1Ob25lLCBsb3c9Tm9uZSk6CiAgICAgICAgIiIiU2V0IHRoZSBoaWdoLSBhbmQgbG93LXdhdGVyIGxpbWl0cyBmb3Igd3JpdGUgZmxvdyBjb250cm9sLgoKICAgICAgICBUaGVzZSB0d28gdmFsdWVzIGNvbnRyb2wgd2hlbiB0byBjYWxsIHRoZSBwcm90b2NvbCdzCiAgICAgICAgcGF1c2Vfd3JpdGluZygpIGFuZCByZXN1bWVfd3JpdGluZygpIG1ldGhvZHMuICBJZiBzcGVjaWZpZWQsCiAgICAgICAgdGhlIGxvdy13YXRlciBsaW1pdCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUKICAgICAgICBoaWdoLXdhdGVyIGxpbWl0LiAgTmVpdGhlciB2YWx1ZSBjYW4gYmUgbmVnYXRpdmUuCgogICAgICAgIFRoZSBkZWZhdWx0cyBhcmUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMuICBJZiBvbmx5IHRoZQogICAgICAgIGhpZ2gtd2F0ZXIgbGltaXQgaXMgZ2l2ZW4sIHRoZSBsb3ctd2F0ZXIgbGltaXQgZGVmYXVsdHMgdG8gYW4KICAgICAgICBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCiAgICAgICAgaGlnaC13YXRlciBsaW1pdC4gIFNldHRpbmcgaGlnaCB0byB6ZXJvIGZvcmNlcyBsb3cgdG8gemVybyBhcwogICAgICAgIHdlbGwsIGFuZCBjYXVzZXMgcGF1c2Vfd3JpdGluZygpIHRvIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUKICAgICAgICBidWZmZXIgYmVjb21lcyBub24tZW1wdHkuICBTZXR0aW5nIGxvdyB0byB6ZXJvIGNhdXNlcwogICAgICAgIHJlc3VtZV93cml0aW5nKCkgdG8gYmUgY2FsbGVkIG9ubHkgb25jZSB0aGUgYnVmZmVyIGlzIGVtcHR5LgogICAgICAgIFVzZSBvZiB6ZXJvIGZvciBlaXRoZXIgbGltaXQgaXMgZ2VuZXJhbGx5IHN1Yi1vcHRpbWFsIGFzIGl0CiAgICAgICAgcmVkdWNlcyBvcHBvcnR1bml0aWVzIGZvciBkb2luZyBJL08gYW5kIGNvbXB1dGF0aW9uCiAgICAgICAgY29uY3VycmVudGx5LgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgZ2V0X3dyaXRlX2J1ZmZlcl9zaXplKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIHRoZSB3cml0ZSBidWZmZXIuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBnZXRfd3JpdGVfYnVmZmVyX2xpbWl0cyhzZWxmKToKICAgICAgICAiIiJHZXQgdGhlIGhpZ2ggYW5kIGxvdyB3YXRlcm1hcmtzIGZvciB3cml0ZSBmbG93IGNvbnRyb2wuCiAgICAgICAgUmV0dXJuIGEgdHVwbGUgKGxvdywgaGlnaCkgd2hlcmUgbG93IGFuZCBoaWdoIGFyZQogICAgICAgIHBvc2l0aXZlIG51bWJlciBvZiBieXRlcy4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgICIiIldyaXRlIHNvbWUgZGF0YSBieXRlcyB0byB0aGUgdHJhbnNwb3J0LgoKICAgICAgICBUaGlzIGRvZXMgbm90IGJsb2NrOyBpdCBidWZmZXJzIHRoZSBkYXRhIGFuZCBhcnJhbmdlcyBmb3IgaXQKICAgICAgICB0byBiZSBzZW50IG91dCBhc3luY2hyb25vdXNseS4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgbGlzdF9vZl9kYXRhKToKICAgICAgICAiIiJXcml0ZSBhIGxpc3QgKG9yIGFueSBpdGVyYWJsZSkgb2YgZGF0YSBieXRlcyB0byB0aGUgdHJhbnNwb3J0LgoKICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjb25jYXRlbmF0ZXMgdGhlIGFyZ3VtZW50cyBhbmQKICAgICAgICBjYWxscyB3cml0ZSgpIG9uIHRoZSByZXN1bHQuCiAgICAgICAgIiIiCiAgICAgICAgZGF0YSA9IGInJy5qb2luKGxpc3Rfb2ZfZGF0YSkKICAgICAgICBzZWxmLndyaXRlKGRhdGEpCgogICAgZGVmIHdyaXRlX2VvZihzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgd3JpdGUgZW5kIGFmdGVyIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEuCgogICAgICAgIChUaGlzIGlzIGxpa2UgdHlwaW5nIF5EIGludG8gYSBVTklYIHByb2dyYW0gcmVhZGluZyBmcm9tIHN0ZGluLikKCiAgICAgICAgRGF0YSBtYXkgc3RpbGwgYmUgcmVjZWl2ZWQuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjYW5fd3JpdGVfZW9mKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoaXMgdHJhbnNwb3J0IHN1cHBvcnRzIHdyaXRlX2VvZigpLCBGYWxzZSBpZiBub3QuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBhYm9ydChzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgdHJhbnNwb3J0IGltbWVkaWF0ZWx5LgoKICAgICAgICBCdWZmZXJlZCBkYXRhIHdpbGwgYmUgbG9zdC4gIE5vIG1vcmUgZGF0YSB3aWxsIGJlIHJlY2VpdmVkLgogICAgICAgIFRoZSBwcm90b2NvbCdzIGNvbm5lY3Rpb25fbG9zdCgpIG1ldGhvZCB3aWxsIChldmVudHVhbGx5KSBiZQogICAgICAgIGNhbGxlZCB3aXRoIE5vbmUgYXMgaXRzIGFyZ3VtZW50LgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCgpjbGFzcyBUcmFuc3BvcnQoUmVhZFRyYW5zcG9ydCwgV3JpdGVUcmFuc3BvcnQpOgogICAgIiIiSW50ZXJmYWNlIHJlcHJlc2VudGluZyBhIGJpZGlyZWN0aW9uYWwgdHJhbnNwb3J0LgoKICAgIFRoZXJlIG1heSBiZSBzZXZlcmFsIGltcGxlbWVudGF0aW9ucywgYnV0IHR5cGljYWxseSwgdGhlIHVzZXIgZG9lcwogICAgbm90IGltcGxlbWVudCBuZXcgdHJhbnNwb3J0czsgcmF0aGVyLCB0aGUgcGxhdGZvcm0gcHJvdmlkZXMgc29tZQogICAgdXNlZnVsIHRyYW5zcG9ydHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIHBsYXRmb3JtJ3MgYmVzdAogICAgcHJhY3RpY2VzLgoKICAgIFRoZSB1c2VyIG5ldmVyIGluc3RhbnRpYXRlcyBhIHRyYW5zcG9ydCBkaXJlY3RseTsgdGhleSBjYWxsIGEKICAgIHV0aWxpdHkgZnVuY3Rpb24sIHBhc3NpbmcgaXQgYSBwcm90b2NvbCBmYWN0b3J5IGFuZCBvdGhlcgogICAgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGNyZWF0ZSB0aGUgdHJhbnNwb3J0IGFuZCBwcm90b2NvbC4gIChFLmcuCiAgICBFdmVudExvb3AuY3JlYXRlX2Nvbm5lY3Rpb24oKSBvciBFdmVudExvb3AuY3JlYXRlX3NlcnZlcigpLikKCiAgICBUaGUgdXRpbGl0eSBmdW5jdGlvbiB3aWxsIGFzeW5jaHJvbm91c2x5IGNyZWF0ZSBhIHRyYW5zcG9ydCBhbmQgYQogICAgcHJvdG9jb2wgYW5kIGhvb2sgdGhlbSB1cCBieSBjYWxsaW5nIHRoZSBwcm90b2NvbCdzCiAgICBjb25uZWN0aW9uX21hZGUoKSBtZXRob2QsIHBhc3NpbmcgaXQgdGhlIHRyYW5zcG9ydC4KCiAgICBUaGUgaW1wbGVtZW50YXRpb24gaGVyZSByYWlzZXMgTm90SW1wbGVtZW50ZWQgZm9yIGV2ZXJ5IG1ldGhvZAogICAgZXhjZXB0IHdyaXRlbGluZXMoKSwgd2hpY2ggY2FsbHMgd3JpdGUoKSBpbiBhIGxvb3AuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKCmNsYXNzIERhdGFncmFtVHJhbnNwb3J0KEJhc2VUcmFuc3BvcnQpOgogICAgIiIiSW50ZXJmYWNlIGZvciBkYXRhZ3JhbSAoVURQKSB0cmFuc3BvcnRzLiIiIgoKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgZGVmIHNlbmR0byhzZWxmLCBkYXRhLCBhZGRyPU5vbmUpOgogICAgICAgICIiIlNlbmQgZGF0YSB0byB0aGUgdHJhbnNwb3J0LgoKICAgICAgICBUaGlzIGRvZXMgbm90IGJsb2NrOyBpdCBidWZmZXJzIHRoZSBkYXRhIGFuZCBhcnJhbmdlcyBmb3IgaXQKICAgICAgICB0byBiZSBzZW50IG91dCBhc3luY2hyb25vdXNseS4KICAgICAgICBhZGRyIGlzIHRhcmdldCBzb2NrZXQgYWRkcmVzcy4KICAgICAgICBJZiBhZGRyIGlzIE5vbmUgdXNlIHRhcmdldCBhZGRyZXNzIHBvaW50ZWQgb24gdHJhbnNwb3J0IGNyZWF0aW9uLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgYWJvcnQoc2VsZik6CiAgICAgICAgIiIiQ2xvc2UgdGhlIHRyYW5zcG9ydCBpbW1lZGlhdGVseS4KCiAgICAgICAgQnVmZmVyZWQgZGF0YSB3aWxsIGJlIGxvc3QuICBObyBtb3JlIGRhdGEgd2lsbCBiZSByZWNlaXZlZC4KICAgICAgICBUaGUgcHJvdG9jb2wncyBjb25uZWN0aW9uX2xvc3QoKSBtZXRob2Qgd2lsbCAoZXZlbnR1YWxseSkgYmUKICAgICAgICBjYWxsZWQgd2l0aCBOb25lIGFzIGl0cyBhcmd1bWVudC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKY2xhc3MgU3VicHJvY2Vzc1RyYW5zcG9ydChCYXNlVHJhbnNwb3J0KToKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBnZXRfcGlkKHNlbGYpOgogICAgICAgICIiIkdldCBzdWJwcm9jZXNzIGlkLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgZ2V0X3JldHVybmNvZGUoc2VsZik6CiAgICAgICAgIiIiR2V0IHN1YnByb2Nlc3MgcmV0dXJuY29kZS4KCiAgICAgICAgU2VlIGFsc28KICAgICAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9zdWJwcm9jZXNzI3N1YnByb2Nlc3MuUG9wZW4ucmV0dXJuY29kZQogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgZ2V0X3BpcGVfdHJhbnNwb3J0KHNlbGYsIGZkKToKICAgICAgICAiIiJHZXQgdHJhbnNwb3J0IGZvciBwaXBlIHdpdGggbnVtYmVyIGZkLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgc2VuZF9zaWduYWwoc2VsZiwgc2lnbmFsKToKICAgICAgICAiIiJTZW5kIHNpZ25hbCB0byBzdWJwcm9jZXNzLgoKICAgICAgICBTZWUgYWxzbzoKICAgICAgICBkb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3N1YnByb2Nlc3Mjc3VicHJvY2Vzcy5Qb3Blbi5zZW5kX3NpZ25hbAogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICIiIlN0b3AgdGhlIHN1YnByb2Nlc3MuCgogICAgICAgIEFsaWFzIGZvciBjbG9zZSgpIG1ldGhvZC4KCiAgICAgICAgT24gUG9zaXggT1NzIHRoZSBtZXRob2Qgc2VuZHMgU0lHVEVSTSB0byB0aGUgc3VicHJvY2Vzcy4KICAgICAgICBPbiBXaW5kb3dzIHRoZSBXaW4zMiBBUEkgZnVuY3Rpb24gVGVybWluYXRlUHJvY2VzcygpCiAgICAgICAgIGlzIGNhbGxlZCB0byBzdG9wIHRoZSBzdWJwcm9jZXNzLgoKICAgICAgICBTZWUgYWxzbzoKICAgICAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9zdWJwcm9jZXNzI3N1YnByb2Nlc3MuUG9wZW4udGVybWluYXRlCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBraWxsKHNlbGYpOgogICAgICAgICIiIktpbGwgdGhlIHN1YnByb2Nlc3MuCgogICAgICAgIE9uIFBvc2l4IE9TcyB0aGUgZnVuY3Rpb24gc2VuZHMgU0lHS0lMTCB0byB0aGUgc3VicHJvY2Vzcy4KICAgICAgICBPbiBXaW5kb3dzIGtpbGwoKSBpcyBhbiBhbGlhcyBmb3IgdGVybWluYXRlKCkuCgogICAgICAgIFNlZSBhbHNvOgogICAgICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3N1YnByb2Nlc3Mjc3VicHJvY2Vzcy5Qb3Blbi5raWxsCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIF9GbG93Q29udHJvbE1peGluKFRyYW5zcG9ydCk6CiAgICAiIiJBbGwgdGhlIGxvZ2ljIGZvciAod3JpdGUpIGZsb3cgY29udHJvbCBpbiBhIG1peC1pbiBiYXNlIGNsYXNzLgoKICAgIFRoZSBzdWJjbGFzcyBtdXN0IGltcGxlbWVudCBnZXRfd3JpdGVfYnVmZmVyX3NpemUoKS4gIEl0IG11c3QgY2FsbAogICAgX21heWJlX3BhdXNlX3Byb3RvY29sKCkgd2hlbmV2ZXIgdGhlIHdyaXRlIGJ1ZmZlciBzaXplIGluY3JlYXNlcywKICAgIGFuZCBfbWF5YmVfcmVzdW1lX3Byb3RvY29sKCkgd2hlbmV2ZXIgaXQgZGVjcmVhc2VzLiAgSXQgbWF5IGFsc28KICAgIG92ZXJyaWRlIHNldF93cml0ZV9idWZmZXJfbGltaXRzKCkgKGUuZy4gdG8gc3BlY2lmeSBkaWZmZXJlbnQKICAgIGRlZmF1bHRzKS4KCiAgICBUaGUgc3ViY2xhc3MgY29uc3RydWN0b3IgbXVzdCBjYWxsIHN1cGVyKCkuX19pbml0X18oZXh0cmEpLiAgVGhpcwogICAgd2lsbCBjYWxsIHNldF93cml0ZV9idWZmZXJfbGltaXRzKCkuCgogICAgVGhlIHVzZXIgbWF5IGNhbGwgc2V0X3dyaXRlX2J1ZmZlcl9saW1pdHMoKSBhbmQKICAgIGdldF93cml0ZV9idWZmZXJfc2l6ZSgpLCBhbmQgdGhlaXIgcHJvdG9jb2wncyBwYXVzZV93cml0aW5nKCkgYW5kCiAgICByZXN1bWVfd3JpdGluZygpIG1heSBiZSBjYWxsZWQuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoJ19sb29wJywgJ19wcm90b2NvbF9wYXVzZWQnLCAnX2hpZ2hfd2F0ZXInLCAnX2xvd193YXRlcicpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4dHJhPU5vbmUsIGxvb3A9Tm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhleHRyYSkKICAgICAgICBhc3NlcnQgbG9vcCBpcyBub3QgTm9uZQogICAgICAgIHNlbGYuX2xvb3AgPSBsb29wCiAgICAgICAgc2VsZi5fcHJvdG9jb2xfcGF1c2VkID0gRmFsc2UKICAgICAgICBzZWxmLl9zZXRfd3JpdGVfYnVmZmVyX2xpbWl0cygpCgogICAgZGVmIF9tYXliZV9wYXVzZV9wcm90b2NvbChzZWxmKToKICAgICAgICBzaXplID0gc2VsZi5nZXRfd3JpdGVfYnVmZmVyX3NpemUoKQogICAgICAgIGlmIHNpemUgPD0gc2VsZi5faGlnaF93YXRlcjoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbm90IHNlbGYuX3Byb3RvY29sX3BhdXNlZDoKICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2xfcGF1c2VkID0gVHJ1ZQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLl9wcm90b2NvbC5wYXVzZV93cml0aW5nKCkKICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoewogICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ3Byb3RvY29sLnBhdXNlX3dyaXRpbmcoKSBmYWlsZWQnLAogICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICAgICAgJ3RyYW5zcG9ydCc6IHNlbGYsCiAgICAgICAgICAgICAgICAgICAgJ3Byb3RvY29sJzogc2VsZi5fcHJvdG9jb2wsCiAgICAgICAgICAgICAgICB9KQoKICAgIGRlZiBfbWF5YmVfcmVzdW1lX3Byb3RvY29sKHNlbGYpOgogICAgICAgIGlmIChzZWxmLl9wcm90b2NvbF9wYXVzZWQgYW5kCiAgICAgICAgICAgICAgICBzZWxmLmdldF93cml0ZV9idWZmZXJfc2l6ZSgpIDw9IHNlbGYuX2xvd193YXRlcik6CiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sX3BhdXNlZCA9IEZhbHNlCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sLnJlc3VtZV93cml0aW5nKCkKICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoewogICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ3Byb3RvY29sLnJlc3VtZV93cml0aW5nKCkgZmFpbGVkJywKICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uJzogZXhjLAogICAgICAgICAgICAgICAgICAgICd0cmFuc3BvcnQnOiBzZWxmLAogICAgICAgICAgICAgICAgICAgICdwcm90b2NvbCc6IHNlbGYuX3Byb3RvY29sLAogICAgICAgICAgICAgICAgfSkKCiAgICBkZWYgZ2V0X3dyaXRlX2J1ZmZlcl9saW1pdHMoc2VsZik6CiAgICAgICAgcmV0dXJuIChzZWxmLl9sb3dfd2F0ZXIsIHNlbGYuX2hpZ2hfd2F0ZXIpCgogICAgZGVmIF9zZXRfd3JpdGVfYnVmZmVyX2xpbWl0cyhzZWxmLCBoaWdoPU5vbmUsIGxvdz1Ob25lKToKICAgICAgICBpZiBoaWdoIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIGxvdyBpcyBOb25lOgogICAgICAgICAgICAgICAgaGlnaCA9IDY0ICogMTAyNAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaGlnaCA9IDQgKiBsb3cKICAgICAgICBpZiBsb3cgaXMgTm9uZToKICAgICAgICAgICAgbG93ID0gaGlnaCAvLyA0CgogICAgICAgIGlmIG5vdCBoaWdoID49IGxvdyA+PSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgZidoaWdoICh7aGlnaCFyfSkgbXVzdCBiZSA+PSBsb3cgKHtsb3chcn0pIG11c3QgYmUgPj0gMCcpCgogICAgICAgIHNlbGYuX2hpZ2hfd2F0ZXIgPSBoaWdoCiAgICAgICAgc2VsZi5fbG93X3dhdGVyID0gbG93CgogICAgZGVmIHNldF93cml0ZV9idWZmZXJfbGltaXRzKHNlbGYsIGhpZ2g9Tm9uZSwgbG93PU5vbmUpOgogICAgICAgIHNlbGYuX3NldF93cml0ZV9idWZmZXJfbGltaXRzKGhpZ2g9aGlnaCwgbG93PWxvdykKICAgICAgICBzZWxmLl9tYXliZV9wYXVzZV9wcm90b2NvbCgpCgogICAgZGVmIGdldF93cml0ZV9idWZmZXJfc2l6ZShzZWxmKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yClBLAwQUAAAAAAACIKNWsE2+KqsJAACrCQAAEQAAAGFzeW5jaW8vdHJzb2NrLnB5aW1wb3J0IHNvY2tldAoKCmNsYXNzIFRyYW5zcG9ydFNvY2tldDoKCiAgICAiIiJBIHNvY2tldC1saWtlIHdyYXBwZXIgZm9yIGV4cG9zaW5nIHJlYWwgdHJhbnNwb3J0IHNvY2tldHMuCgogICAgVGhlc2Ugb2JqZWN0cyBjYW4gYmUgc2FmZWx5IHJldHVybmVkIGJ5IEFQSXMgbGlrZQogICAgYHRyYW5zcG9ydC5nZXRfZXh0cmFfaW5mbygnc29ja2V0JylgLiAgQWxsIHBvdGVudGlhbGx5IGRpc3J1cHRpdmUKICAgIG9wZXJhdGlvbnMgKGxpa2UgInNvY2tldC5jbG9zZSgpIikgYXJlIGJhbm5lZC4KICAgICIiIgoKICAgIF9fc2xvdHNfXyA9ICgnX3NvY2snLCkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc29jazogc29ja2V0LnNvY2tldCk6CiAgICAgICAgc2VsZi5fc29jayA9IHNvY2sKCiAgICBAcHJvcGVydHkKICAgIGRlZiBmYW1pbHkoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2suZmFtaWx5CgogICAgQHByb3BlcnR5CiAgICBkZWYgdHlwZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc29jay50eXBlCgogICAgQHByb3BlcnR5CiAgICBkZWYgcHJvdG8oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2sucHJvdG8KCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcyA9ICgKICAgICAgICAgICAgZiI8YXN5bmNpby5UcmFuc3BvcnRTb2NrZXQgZmQ9e3NlbGYuZmlsZW5vKCl9LCAiCiAgICAgICAgICAgIGYiZmFtaWx5PXtzZWxmLmZhbWlseSFzfSwgdHlwZT17c2VsZi50eXBlIXN9LCAiCiAgICAgICAgICAgIGYicHJvdG89e3NlbGYucHJvdG99IgogICAgICAgICkKCiAgICAgICAgaWYgc2VsZi5maWxlbm8oKSAhPSAtMToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbGFkZHIgPSBzZWxmLmdldHNvY2tuYW1lKCkKICAgICAgICAgICAgICAgIGlmIGxhZGRyOgogICAgICAgICAgICAgICAgICAgIHMgPSBmIntzfSwgbGFkZHI9e2xhZGRyfSIKICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmFkZHIgPSBzZWxmLmdldHBlZXJuYW1lKCkKICAgICAgICAgICAgICAgIGlmIHJhZGRyOgogICAgICAgICAgICAgICAgICAgIHMgPSBmIntzfSwgcmFkZHI9e3JhZGRyfSIKICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgcmV0dXJuIGYie3N9PiIKCiAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IHNlcmlhbGl6ZSBhc3luY2lvLlRyYW5zcG9ydFNvY2tldCBvYmplY3QiKQoKICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2suZmlsZW5vKCkKCiAgICBkZWYgZHVwKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9zb2NrLmR1cCgpCgogICAgZGVmIGdldF9pbmhlcml0YWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc29jay5nZXRfaW5oZXJpdGFibGUoKQoKICAgIGRlZiBzaHV0ZG93bihzZWxmLCBob3cpOgogICAgICAgICMgYXN5bmNpbyBkb2Vzbid0IGN1cnJlbnRseSBwcm92aWRlIGEgaGlnaC1sZXZlbCB0cmFuc3BvcnQgQVBJCiAgICAgICAgIyB0byBzaHV0ZG93biB0aGUgY29ubmVjdGlvbi4KICAgICAgICBzZWxmLl9zb2NrLnNodXRkb3duKGhvdykKCiAgICBkZWYgZ2V0c29ja29wdChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9zb2NrLmdldHNvY2tvcHQoKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiBzZXRzb2Nrb3B0KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5fc29jay5zZXRzb2Nrb3B0KCphcmdzLCAqKmt3YXJncykKCiAgICBkZWYgZ2V0cGVlcm5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2suZ2V0cGVlcm5hbWUoKQoKICAgIGRlZiBnZXRzb2NrbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc29jay5nZXRzb2NrbmFtZSgpCgogICAgZGVmIGdldHNvY2tieW5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2suZ2V0c29ja2J5bmFtZSgpCgogICAgZGVmIHNldHRpbWVvdXQoc2VsZiwgdmFsdWUpOgogICAgICAgIGlmIHZhbHVlID09IDA6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICdzZXR0aW1lb3V0KCk6IG9ubHkgMCB0aW1lb3V0IGlzIGFsbG93ZWQgb24gdHJhbnNwb3J0IHNvY2tldHMnKQoKICAgIGRlZiBnZXR0aW1lb3V0KHNlbGYpOgogICAgICAgIHJldHVybiAwCgogICAgZGVmIHNldGJsb2NraW5nKHNlbGYsIGZsYWcpOgogICAgICAgIGlmIG5vdCBmbGFnOgogICAgICAgICAgICByZXR1cm4KICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAnc2V0YmxvY2tpbmcoKTogdHJhbnNwb3J0IHNvY2tldHMgY2Fubm90IGJlIGJsb2NraW5nJykKUEsDBBQAAAAAAAIgo1YNhL/FnssAAJ7LAAAWAAAAYXN5bmNpby91bml4X2V2ZW50cy5weSIiIlNlbGVjdG9yIGV2ZW50IGxvb3AgZm9yIFVuaXggd2l0aCBzaWduYWwgaGFuZGxpbmcuIiIiCgppbXBvcnQgZXJybm8KaW1wb3J0IGlvCmltcG9ydCBpdGVydG9vbHMKaW1wb3J0IG9zCmltcG9ydCBzZWxlY3RvcnMKaW1wb3J0IHNpZ25hbAppbXBvcnQgc29ja2V0CmltcG9ydCBzdGF0CmltcG9ydCBzdWJwcm9jZXNzCmltcG9ydCBzeXMKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgd2FybmluZ3MKCmZyb20gLiBpbXBvcnQgYmFzZV9ldmVudHMKZnJvbSAuIGltcG9ydCBiYXNlX3N1YnByb2Nlc3MKZnJvbSAuIGltcG9ydCBjb25zdGFudHMKZnJvbSAuIGltcG9ydCBjb3JvdXRpbmVzCmZyb20gLiBpbXBvcnQgZXZlbnRzCmZyb20gLiBpbXBvcnQgZXhjZXB0aW9ucwpmcm9tIC4gaW1wb3J0IGZ1dHVyZXMKZnJvbSAuIGltcG9ydCBzZWxlY3Rvcl9ldmVudHMKZnJvbSAuIGltcG9ydCB0YXNrcwpmcm9tIC4gaW1wb3J0IHRyYW5zcG9ydHMKZnJvbSAubG9nIGltcG9ydCBsb2dnZXIKCgpfX2FsbF9fID0gKAogICAgJ1NlbGVjdG9yRXZlbnRMb29wJywKICAgICdBYnN0cmFjdENoaWxkV2F0Y2hlcicsICdTYWZlQ2hpbGRXYXRjaGVyJywKICAgICdGYXN0Q2hpbGRXYXRjaGVyJywgJ1BpZGZkQ2hpbGRXYXRjaGVyJywKICAgICdNdWx0aUxvb3BDaGlsZFdhdGNoZXInLCAnVGhyZWFkZWRDaGlsZFdhdGNoZXInLAogICAgJ0RlZmF1bHRFdmVudExvb3BQb2xpY3knLAopCgoKaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6ICAjIHByYWdtYTogbm8gY292ZXIKICAgIHJhaXNlIEltcG9ydEVycm9yKCdTaWduYWxzIGFyZSBub3QgcmVhbGx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzJykKCgpkZWYgX3NpZ2hhbmRsZXJfbm9vcChzaWdudW0sIGZyYW1lKToKICAgICIiIkR1bW15IHNpZ25hbCBoYW5kbGVyLiIiIgogICAgcGFzcwoKCmRlZiB3YWl0c3RhdHVzX3RvX2V4aXRjb2RlKHN0YXR1cyk6CiAgICB0cnk6CiAgICAgICAgcmV0dXJuIG9zLndhaXRzdGF0dXNfdG9fZXhpdGNvZGUoc3RhdHVzKQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIyBUaGUgY2hpbGQgZXhpdGVkLCBidXQgd2UgZG9uJ3QgdW5kZXJzdGFuZCBpdHMgc3RhdHVzLgogICAgICAgICMgVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgaWYgaXQgZG9lcywgbGV0J3MganVzdAogICAgICAgICMgcmV0dXJuIHRoYXQgc3RhdHVzOyBwZXJoYXBzIHRoYXQgaGVscHMgZGVidWcgaXQuCiAgICAgICAgcmV0dXJuIHN0YXR1cwoKCmNsYXNzIF9Vbml4U2VsZWN0b3JFdmVudExvb3Aoc2VsZWN0b3JfZXZlbnRzLkJhc2VTZWxlY3RvckV2ZW50TG9vcCk6CiAgICAiIiJVbml4IGV2ZW50IGxvb3AuCgogICAgQWRkcyBzaWduYWwgaGFuZGxpbmcgYW5kIFVOSVggRG9tYWluIFNvY2tldCBzdXBwb3J0IHRvIFNlbGVjdG9yRXZlbnRMb29wLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlbGVjdG9yPU5vbmUpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oc2VsZWN0b3IpCiAgICAgICAgc2VsZi5fc2lnbmFsX2hhbmRsZXJzID0ge30KCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgc3VwZXIoKS5jbG9zZSgpCiAgICAgICAgaWYgbm90IHN5cy5pc19maW5hbGl6aW5nKCk6CiAgICAgICAgICAgIGZvciBzaWcgaW4gbGlzdChzZWxmLl9zaWduYWxfaGFuZGxlcnMpOgogICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfc2lnbmFsX2hhbmRsZXIoc2lnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHNlbGYuX3NpZ25hbF9oYW5kbGVyczoKICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oZiJDbG9zaW5nIHRoZSBsb29wIHtzZWxmIXJ9ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJvbiBpbnRlcnByZXRlciBzaHV0ZG93biAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYic3RhZ2UsIHNraXBwaW5nIHNpZ25hbCBoYW5kbGVycyByZW1vdmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VXYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgIHNlbGYuX3NpZ25hbF9oYW5kbGVycy5jbGVhcigpCgogICAgZGVmIF9wcm9jZXNzX3NlbGZfZGF0YShzZWxmLCBkYXRhKToKICAgICAgICBmb3Igc2lnbnVtIGluIGRhdGE6CiAgICAgICAgICAgIGlmIG5vdCBzaWdudW06CiAgICAgICAgICAgICAgICAjIGlnbm9yZSBudWxsIGJ5dGVzIHdyaXR0ZW4gYnkgX3dyaXRlX3RvX3NlbGYoKQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgc2VsZi5faGFuZGxlX3NpZ25hbChzaWdudW0pCgogICAgZGVmIGFkZF9zaWduYWxfaGFuZGxlcihzZWxmLCBzaWcsIGNhbGxiYWNrLCAqYXJncyk6CiAgICAgICAgIiIiQWRkIGEgaGFuZGxlciBmb3IgYSBzaWduYWwuICBVTklYIG9ubHkuCgogICAgICAgIFJhaXNlIFZhbHVlRXJyb3IgaWYgdGhlIHNpZ25hbCBudW1iZXIgaXMgaW52YWxpZCBvciB1bmNhdGNoYWJsZS4KICAgICAgICBSYWlzZSBSdW50aW1lRXJyb3IgaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHNldHRpbmcgdXAgdGhlIGhhbmRsZXIuCiAgICAgICAgIiIiCiAgICAgICAgaWYgKGNvcm91dGluZXMuaXNjb3JvdXRpbmUoY2FsbGJhY2spIG9yCiAgICAgICAgICAgICAgICBjb3JvdXRpbmVzLmlzY29yb3V0aW5lZnVuY3Rpb24oY2FsbGJhY2spKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjb3JvdXRpbmVzIGNhbm5vdCBiZSB1c2VkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIGFkZF9zaWduYWxfaGFuZGxlcigpIikKICAgICAgICBzZWxmLl9jaGVja19zaWduYWwoc2lnKQogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIHNldF93YWtldXBfZmQoKSByYWlzZXMgVmFsdWVFcnJvciBpZiB0aGlzIGlzIG5vdCB0aGUKICAgICAgICAgICAgIyBtYWluIHRocmVhZC4gIEJ5IGNhbGxpbmcgaXQgZWFybHkgd2UgZW5zdXJlIHRoYXQgYW4KICAgICAgICAgICAgIyBldmVudCBsb29wIHJ1bm5pbmcgaW4gYW5vdGhlciB0aHJlYWQgY2Fubm90IGFkZCBhIHNpZ25hbAogICAgICAgICAgICAjIGhhbmRsZXIuCiAgICAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHNlbGYuX2Nzb2NrLmZpbGVubygpKQogICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgT1NFcnJvcikgYXMgZXhjOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Ioc3RyKGV4YykpCgogICAgICAgIGhhbmRsZSA9IGV2ZW50cy5IYW5kbGUoY2FsbGJhY2ssIGFyZ3MsIHNlbGYsIE5vbmUpCiAgICAgICAgc2VsZi5fc2lnbmFsX2hhbmRsZXJzW3NpZ10gPSBoYW5kbGUKCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIFJlZ2lzdGVyIGEgZHVtbXkgc2lnbmFsIGhhbmRsZXIgdG8gYXNrIFB5dGhvbiB0byB3cml0ZSB0aGUgc2lnbmFsCiAgICAgICAgICAgICMgbnVtYmVyIGluIHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yLiBfcHJvY2Vzc19zZWxmX2RhdGEoKSB3aWxsCiAgICAgICAgICAgICMgcmVhZCBzaWduYWwgbnVtYmVycyBmcm9tIHRoaXMgZmlsZSBkZXNjcmlwdG9yIHRvIGhhbmRsZSBzaWduYWxzLgogICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZywgX3NpZ2hhbmRsZXJfbm9vcCkKCiAgICAgICAgICAgICMgU2V0IFNBX1JFU1RBUlQgdG8gbGltaXQgRUlOVFIgb2NjdXJyZW5jZXMuCiAgICAgICAgICAgIHNpZ25hbC5zaWdpbnRlcnJ1cHQoc2lnLCBGYWxzZSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgIGRlbCBzZWxmLl9zaWduYWxfaGFuZGxlcnNbc2lnXQogICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbmFsX2hhbmRsZXJzOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKQogICAgICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBPU0Vycm9yKSBhcyBuZXhjOgogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdzZXRfd2FrZXVwX2ZkKC0xKSBmYWlsZWQ6ICVzJywgbmV4YykKCiAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FSU5WQUw6CiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZidzaWcge3NpZ30gY2Fubm90IGJlIGNhdWdodCcpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZQoKICAgIGRlZiBfaGFuZGxlX3NpZ25hbChzZWxmLCBzaWcpOgogICAgICAgICIiIkludGVybmFsIGhlbHBlciB0aGF0IGlzIHRoZSBhY3R1YWwgc2lnbmFsIGhhbmRsZXIuIiIiCiAgICAgICAgaGFuZGxlID0gc2VsZi5fc2lnbmFsX2hhbmRsZXJzLmdldChzaWcpCiAgICAgICAgaWYgaGFuZGxlIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiAgIyBBc3N1bWUgaXQncyBzb21lIHJhY2UgY29uZGl0aW9uLgogICAgICAgIGlmIGhhbmRsZS5fY2FuY2VsbGVkOgogICAgICAgICAgICBzZWxmLnJlbW92ZV9zaWduYWxfaGFuZGxlcihzaWcpICAjIFJlbW92ZSBpdCBwcm9wZXJseS4KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9hZGRfY2FsbGJhY2tfc2lnbmFsc2FmZShoYW5kbGUpCgogICAgZGVmIHJlbW92ZV9zaWduYWxfaGFuZGxlcihzZWxmLCBzaWcpOgogICAgICAgICIiIlJlbW92ZSBhIGhhbmRsZXIgZm9yIGEgc2lnbmFsLiAgVU5JWCBvbmx5LgoKICAgICAgICBSZXR1cm4gVHJ1ZSBpZiBhIHNpZ25hbCBoYW5kbGVyIHdhcyByZW1vdmVkLCBGYWxzZSBpZiBub3QuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2tfc2lnbmFsKHNpZykKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBzZWxmLl9zaWduYWxfaGFuZGxlcnNbc2lnXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIGlmIHNpZyA9PSBzaWduYWwuU0lHSU5UOgogICAgICAgICAgICBoYW5kbGVyID0gc2lnbmFsLmRlZmF1bHRfaW50X2hhbmRsZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICBoYW5kbGVyID0gc2lnbmFsLlNJR19ERkwKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZywgaGFuZGxlcikKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FSU5WQUw6CiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZidzaWcge3NpZ30gY2Fubm90IGJlIGNhdWdodCcpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZQoKICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbmFsX2hhbmRsZXJzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCgtMSkKICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBPU0Vycm9yKSBhcyBleGM6CiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnc2V0X3dha2V1cF9mZCgtMSkgZmFpbGVkOiAlcycsIGV4YykKCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgX2NoZWNrX3NpZ25hbChzZWxmLCBzaWcpOgogICAgICAgICIiIkludGVybmFsIGhlbHBlciB0byB2YWxpZGF0ZSBhIHNpZ25hbC4KCiAgICAgICAgUmFpc2UgVmFsdWVFcnJvciBpZiB0aGUgc2lnbmFsIG51bWJlciBpcyBpbnZhbGlkIG9yIHVuY2F0Y2hhYmxlLgogICAgICAgIFJhaXNlIFJ1bnRpbWVFcnJvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gc2V0dGluZyB1cCB0aGUgaGFuZGxlci4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzaWcsIGludCk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmJ3NpZyBtdXN0IGJlIGFuIGludCwgbm90IHtzaWchcn0nKQoKICAgICAgICBpZiBzaWcgbm90IGluIHNpZ25hbC52YWxpZF9zaWduYWxzKCk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidpbnZhbGlkIHNpZ25hbCBudW1iZXIge3NpZ30nKQoKICAgIGRlZiBfbWFrZV9yZWFkX3BpcGVfdHJhbnNwb3J0KHNlbGYsIHBpcGUsIHByb3RvY29sLCB3YWl0ZXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPU5vbmUpOgogICAgICAgIHJldHVybiBfVW5peFJlYWRQaXBlVHJhbnNwb3J0KHNlbGYsIHBpcGUsIHByb3RvY29sLCB3YWl0ZXIsIGV4dHJhKQoKICAgIGRlZiBfbWFrZV93cml0ZV9waXBlX3RyYW5zcG9ydChzZWxmLCBwaXBlLCBwcm90b2NvbCwgd2FpdGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9Tm9uZSk6CiAgICAgICAgcmV0dXJuIF9Vbml4V3JpdGVQaXBlVHJhbnNwb3J0KHNlbGYsIHBpcGUsIHByb3RvY29sLCB3YWl0ZXIsIGV4dHJhKQoKICAgIGFzeW5jIGRlZiBfbWFrZV9zdWJwcm9jZXNzX3RyYW5zcG9ydChzZWxmLCBwcm90b2NvbCwgYXJncywgc2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBidWZzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPU5vbmUsICoqa3dhcmdzKToKICAgICAgICB3aXRoIGV2ZW50cy5nZXRfY2hpbGRfd2F0Y2hlcigpIGFzIHdhdGNoZXI6CiAgICAgICAgICAgIGlmIG5vdCB3YXRjaGVyLmlzX2FjdGl2ZSgpOgogICAgICAgICAgICAgICAgIyBDaGVjayBlYXJseS4KICAgICAgICAgICAgICAgICMgUmFpc2luZyBleGNlcHRpb24gYmVmb3JlIHByb2Nlc3MgY3JlYXRpb24KICAgICAgICAgICAgICAgICMgcHJldmVudHMgc3VicHJvY2VzcyBleGVjdXRpb24gaWYgdGhlIHdhdGNoZXIKICAgICAgICAgICAgICAgICMgaXMgbm90IHJlYWR5IHRvIGhhbmRsZSBpdC4KICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiYXN5bmNpby5nZXRfY2hpbGRfd2F0Y2hlcigpIGlzIG5vdCBhY3RpdmF0ZWQsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VicHJvY2VzcyBzdXBwb3J0IGlzIG5vdCBpbnN0YWxsZWQuIikKICAgICAgICAgICAgd2FpdGVyID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICAgICAgdHJhbnNwID0gX1VuaXhTdWJwcm9jZXNzVHJhbnNwb3J0KHNlbGYsIHByb3RvY29sLCBhcmdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgYnVmc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlcj13YWl0ZXIsIGV4dHJhPWV4dHJhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCgogICAgICAgICAgICB3YXRjaGVyLmFkZF9jaGlsZF9oYW5kbGVyKHRyYW5zcC5nZXRfcGlkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hpbGRfd2F0Y2hlcl9jYWxsYmFjaywgdHJhbnNwKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBhd2FpdCB3YWl0ZXIKICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIHRyYW5zcC5jbG9zZSgpCiAgICAgICAgICAgICAgICBhd2FpdCB0cmFuc3AuX3dhaXQoKQogICAgICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgcmV0dXJuIHRyYW5zcAoKICAgIGRlZiBfY2hpbGRfd2F0Y2hlcl9jYWxsYmFjayhzZWxmLCBwaWQsIHJldHVybmNvZGUsIHRyYW5zcCk6CiAgICAgICAgIyBTa2lwIG9uZSBpdGVyYXRpb24gZm9yIGNhbGxiYWNrcyB0byBiZSBleGVjdXRlZAogICAgICAgIHNlbGYuY2FsbF9zb29uX3RocmVhZHNhZmUoc2VsZi5jYWxsX3Nvb24sIHRyYW5zcC5fcHJvY2Vzc19leGl0ZWQsIHJldHVybmNvZGUpCgogICAgYXN5bmMgZGVmIGNyZWF0ZV91bml4X2Nvbm5lY3Rpb24oCiAgICAgICAgICAgIHNlbGYsIHByb3RvY29sX2ZhY3RvcnksIHBhdGg9Tm9uZSwgKiwKICAgICAgICAgICAgc3NsPU5vbmUsIHNvY2s9Tm9uZSwKICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lKToKICAgICAgICBhc3NlcnQgc2VydmVyX2hvc3RuYW1lIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShzZXJ2ZXJfaG9zdG5hbWUsIHN0cikKICAgICAgICBpZiBzc2w6CiAgICAgICAgICAgIGlmIHNlcnZlcl9ob3N0bmFtZSBpcyBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAneW91IGhhdmUgdG8gcGFzcyBzZXJ2ZXJfaG9zdG5hbWUgd2hlbiB1c2luZyBzc2wnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHNlcnZlcl9ob3N0bmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlcnZlcl9ob3N0bmFtZSBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCBzc2wnKQogICAgICAgICAgICBpZiBzc2xfaGFuZHNoYWtlX3RpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdzc2xfaGFuZHNoYWtlX3RpbWVvdXQgaXMgb25seSBtZWFuaW5nZnVsIHdpdGggc3NsJykKICAgICAgICAgICAgaWYgc3NsX3NodXRkb3duX3RpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdzc2xfc2h1dGRvd25fdGltZW91dCBpcyBvbmx5IG1lYW5pbmdmdWwgd2l0aCBzc2wnKQoKICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAncGF0aCBhbmQgc29jayBjYW4gbm90IGJlIHNwZWNpZmllZCBhdCB0aGUgc2FtZSB0aW1lJykKCiAgICAgICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSwgMCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc29jay5zZXRibG9ja2luZyhGYWxzZSkKICAgICAgICAgICAgICAgIGF3YWl0IHNlbGYuc29ja19jb25uZWN0KHNvY2ssIHBhdGgpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc29jayBpcyBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbm8gcGF0aCBhbmQgc29jayB3ZXJlIHNwZWNpZmllZCcpCiAgICAgICAgICAgIGlmIChzb2NrLmZhbWlseSAhPSBzb2NrZXQuQUZfVU5JWCBvcgogICAgICAgICAgICAgICAgICAgIHNvY2sudHlwZSAhPSBzb2NrZXQuU09DS19TVFJFQU0pOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmJ0EgVU5JWCBEb21haW4gU3RyZWFtIFNvY2tldCB3YXMgZXhwZWN0ZWQsIGdvdCB7c29jayFyfScpCiAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoRmFsc2UpCgogICAgICAgIHRyYW5zcG9ydCwgcHJvdG9jb2wgPSBhd2FpdCBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbl90cmFuc3BvcnQoCiAgICAgICAgICAgIHNvY2ssIHByb3RvY29sX2ZhY3RvcnksIHNzbCwgc2VydmVyX2hvc3RuYW1lLAogICAgICAgICAgICBzc2xfaGFuZHNoYWtlX3RpbWVvdXQ9c3NsX2hhbmRzaGFrZV90aW1lb3V0LAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1zc2xfc2h1dGRvd25fdGltZW91dCkKICAgICAgICByZXR1cm4gdHJhbnNwb3J0LCBwcm90b2NvbAoKICAgIGFzeW5jIGRlZiBjcmVhdGVfdW5peF9zZXJ2ZXIoCiAgICAgICAgICAgIHNlbGYsIHByb3RvY29sX2ZhY3RvcnksIHBhdGg9Tm9uZSwgKiwKICAgICAgICAgICAgc29jaz1Ob25lLCBiYWNrbG9nPTEwMCwgc3NsPU5vbmUsCiAgICAgICAgICAgIHNzbF9oYW5kc2hha2VfdGltZW91dD1Ob25lLAogICAgICAgICAgICBzc2xfc2h1dGRvd25fdGltZW91dD1Ob25lLAogICAgICAgICAgICBzdGFydF9zZXJ2aW5nPVRydWUpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uoc3NsLCBib29sKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdzc2wgYXJndW1lbnQgbXVzdCBiZSBhbiBTU0xDb250ZXh0IG9yIE5vbmUnKQoKICAgICAgICBpZiBzc2xfaGFuZHNoYWtlX3RpbWVvdXQgaXMgbm90IE5vbmUgYW5kIG5vdCBzc2w6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAnc3NsX2hhbmRzaGFrZV90aW1lb3V0IGlzIG9ubHkgbWVhbmluZ2Z1bCB3aXRoIHNzbCcpCgogICAgICAgIGlmIHNzbF9zaHV0ZG93bl90aW1lb3V0IGlzIG5vdCBOb25lIGFuZCBub3Qgc3NsOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgJ3NzbF9zaHV0ZG93bl90aW1lb3V0IGlzIG9ubHkgbWVhbmluZ2Z1bCB3aXRoIHNzbCcpCgogICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHNvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdwYXRoIGFuZCBzb2NrIGNhbiBub3QgYmUgc3BlY2lmaWVkIGF0IHRoZSBzYW1lIHRpbWUnKQoKICAgICAgICAgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQoKICAgICAgICAgICAgIyBDaGVjayBmb3IgYWJzdHJhY3Qgc29ja2V0LiBgc3RyYCBhbmQgYGJ5dGVzYCBwYXRocyBhcmUgc3VwcG9ydGVkLgogICAgICAgICAgICBpZiBwYXRoWzBdIG5vdCBpbiAoMCwgJ1x4MDAnKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNTT0NLKG9zLnN0YXQocGF0aCkuc3RfbW9kZSk6CiAgICAgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQogICAgICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAjIERpcmVjdG9yeSBtYXkgaGF2ZSBwZXJtaXNzaW9ucyBvbmx5IHRvIGNyZWF0ZSBzb2NrZXQuCiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdVbmFibGUgdG8gY2hlY2sgb3IgcmVtb3ZlIHN0YWxlIFVOSVggc29ja2V0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVyOiAlcicsIHBhdGgsIGVycikKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNvY2suYmluZChwYXRoKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FQUREUklOVVNFOgogICAgICAgICAgICAgICAgICAgICMgTGV0J3MgaW1wcm92ZSB0aGUgZXJyb3IgbWVzc2FnZSBieSBhZGRpbmcKICAgICAgICAgICAgICAgICAgICAjIHdpdGggd2hhdCBleGFjdCBhZGRyZXNzIGl0IG9jY3Vycy4KICAgICAgICAgICAgICAgICAgICBtc2cgPSBmJ0FkZHJlc3Mge3BhdGghcn0gaXMgYWxyZWFkeSBpbiB1c2UnCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FQUREUklOVVNFLCBtc2cpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc29jayBpcyBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAncGF0aCB3YXMgbm90IHNwZWNpZmllZCwgYW5kIG5vIHNvY2sgc3BlY2lmaWVkJykKCiAgICAgICAgICAgIGlmIChzb2NrLmZhbWlseSAhPSBzb2NrZXQuQUZfVU5JWCBvcgogICAgICAgICAgICAgICAgICAgIHNvY2sudHlwZSAhPSBzb2NrZXQuU09DS19TVFJFQU0pOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmJ0EgVU5JWCBEb21haW4gU3RyZWFtIFNvY2tldCB3YXMgZXhwZWN0ZWQsIGdvdCB7c29jayFyfScpCgogICAgICAgIHNvY2suc2V0YmxvY2tpbmcoRmFsc2UpCiAgICAgICAgc2VydmVyID0gYmFzZV9ldmVudHMuU2VydmVyKHNlbGYsIFtzb2NrXSwgcHJvdG9jb2xfZmFjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLCBiYWNrbG9nLCBzc2xfaGFuZHNoYWtlX3RpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9zaHV0ZG93bl90aW1lb3V0KQogICAgICAgIGlmIHN0YXJ0X3NlcnZpbmc6CiAgICAgICAgICAgIHNlcnZlci5fc3RhcnRfc2VydmluZygpCiAgICAgICAgICAgICMgU2tpcCBvbmUgbG9vcCBpdGVyYXRpb24gc28gdGhhdCBhbGwgJ2xvb3AuYWRkX3JlYWRlcicKICAgICAgICAgICAgIyBnbyB0aHJvdWdoLgogICAgICAgICAgICBhd2FpdCB0YXNrcy5zbGVlcCgwKQoKICAgICAgICByZXR1cm4gc2VydmVyCgogICAgYXN5bmMgZGVmIF9zb2NrX3NlbmRmaWxlX25hdGl2ZShzZWxmLCBzb2NrLCBmaWxlLCBvZmZzZXQsIGNvdW50KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIG9zLnNlbmRmaWxlCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlNlbmRmaWxlTm90QXZhaWxhYmxlRXJyb3IoCiAgICAgICAgICAgICAgICAib3Muc2VuZGZpbGUoKSBpcyBub3QgYXZhaWxhYmxlIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZpbGVubyA9IGZpbGUuZmlsZW5vKCkKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbikgYXMgZXJyOgogICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlNlbmRmaWxlTm90QXZhaWxhYmxlRXJyb3IoIm5vdCBhIHJlZ3VsYXIgZmlsZSIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmc2l6ZSA9IG9zLmZzdGF0KGZpbGVubykuc3Rfc2l6ZQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlNlbmRmaWxlTm90QXZhaWxhYmxlRXJyb3IoIm5vdCBhIHJlZ3VsYXIgZmlsZSIpCiAgICAgICAgYmxvY2tzaXplID0gY291bnQgaWYgY291bnQgZWxzZSBmc2l6ZQogICAgICAgIGlmIG5vdCBibG9ja3NpemU6CiAgICAgICAgICAgIHJldHVybiAwICAjIGVtcHR5IGZpbGUKCiAgICAgICAgZnV0ID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICBzZWxmLl9zb2NrX3NlbmRmaWxlX25hdGl2ZV9pbXBsKGZ1dCwgTm9uZSwgc29jaywgZmlsZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBjb3VudCwgYmxvY2tzaXplLCAwKQogICAgICAgIHJldHVybiBhd2FpdCBmdXQKCiAgICBkZWYgX3NvY2tfc2VuZGZpbGVfbmF0aXZlX2ltcGwoc2VsZiwgZnV0LCByZWdpc3RlcmVkX2ZkLCBzb2NrLCBmaWxlbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBjb3VudCwgYmxvY2tzaXplLCB0b3RhbF9zZW50KToKICAgICAgICBmZCA9IHNvY2suZmlsZW5vKCkKICAgICAgICBpZiByZWdpc3RlcmVkX2ZkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIFJlbW92ZSB0aGUgY2FsbGJhY2sgZWFybHkuICBJdCBzaG91bGQgYmUgcmFyZSB0aGF0IHRoZQogICAgICAgICAgICAjIHNlbGVjdG9yIHNheXMgdGhlIGZkIGlzIHJlYWR5IGJ1dCB0aGUgY2FsbCBzdGlsbCByZXR1cm5zCiAgICAgICAgICAgICMgRUFHQUlOLCBhbmQgSSBhbSB3aWxsaW5nIHRvIHRha2UgYSBoaXQgaW4gdGhhdCBjYXNlIGluCiAgICAgICAgICAgICMgb3JkZXIgdG8gc2ltcGxpZnkgdGhlIGNvbW1vbiBjYXNlLgogICAgICAgICAgICBzZWxmLnJlbW92ZV93cml0ZXIocmVnaXN0ZXJlZF9mZCkKICAgICAgICBpZiBmdXQuY2FuY2VsbGVkKCk6CiAgICAgICAgICAgIHNlbGYuX3NvY2tfc2VuZGZpbGVfdXBkYXRlX2ZpbGVwb3MoZmlsZW5vLCBvZmZzZXQsIHRvdGFsX3NlbnQpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIGNvdW50OgogICAgICAgICAgICBibG9ja3NpemUgPSBjb3VudCAtIHRvdGFsX3NlbnQKICAgICAgICAgICAgaWYgYmxvY2tzaXplIDw9IDA6CiAgICAgICAgICAgICAgICBzZWxmLl9zb2NrX3NlbmRmaWxlX3VwZGF0ZV9maWxlcG9zKGZpbGVubywgb2Zmc2V0LCB0b3RhbF9zZW50KQogICAgICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQodG90YWxfc2VudCkKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbnQgPSBvcy5zZW5kZmlsZShmZCwgZmlsZW5vLCBvZmZzZXQsIGJsb2Nrc2l6ZSkKICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CiAgICAgICAgICAgIGlmIHJlZ2lzdGVyZWRfZmQgaXMgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tfYWRkX2NhbmNlbGxhdGlvbl9jYWxsYmFjayhmdXQsIHNvY2spCiAgICAgICAgICAgIHNlbGYuYWRkX3dyaXRlcihmZCwgc2VsZi5fc29ja19zZW5kZmlsZV9uYXRpdmVfaW1wbCwgZnV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIHNvY2ssIGZpbGVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwgY291bnQsIGJsb2Nrc2l6ZSwgdG90YWxfc2VudCkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgIGlmIChyZWdpc3RlcmVkX2ZkIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgICAgIGV4Yy5lcnJubyA9PSBlcnJuby5FTk9UQ09OTiBhbmQKICAgICAgICAgICAgICAgICAgICB0eXBlKGV4YykgaXMgbm90IENvbm5lY3Rpb25FcnJvcik6CiAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgYW4gRU5PVENPTk4gYW5kIHRoaXMgaXNuJ3QgYSBmaXJzdCBjYWxsIHRvCiAgICAgICAgICAgICAgICAjIHNlbmRmaWxlKCksIGkuZS4gdGhlIGNvbm5lY3Rpb24gd2FzIGNsb3NlZCBpbiB0aGUgbWlkZGxlCiAgICAgICAgICAgICAgICAjIG9mIHRoZSBvcGVyYXRpb24sIG5vcm1hbGl6ZSB0aGUgZXJyb3IgdG8gQ29ubmVjdGlvbkVycm9yCiAgICAgICAgICAgICAgICAjIHRvIG1ha2UgaXQgY29uc2lzdGVudCBhY3Jvc3MgYWxsIFBvc2l4IHN5c3RlbXMuCiAgICAgICAgICAgICAgICBuZXdfZXhjID0gQ29ubmVjdGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICJzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCIsIGVycm5vLkVOT1RDT05OKQogICAgICAgICAgICAgICAgbmV3X2V4Yy5fX2NhdXNlX18gPSBleGMKICAgICAgICAgICAgICAgIGV4YyA9IG5ld19leGMKICAgICAgICAgICAgaWYgdG90YWxfc2VudCA9PSAwOgogICAgICAgICAgICAgICAgIyBXZSBjYW4gZ2V0IGhlcmUgZm9yIGRpZmZlcmVudCByZWFzb25zLCB0aGUgbWFpbgogICAgICAgICAgICAgICAgIyBvbmUgYmVpbmcgJ2ZpbGUnIGlzIG5vdCBhIHJlZ3VsYXIgbW1hcCgyKS1saWtlCiAgICAgICAgICAgICAgICAjIGZpbGUsIGluIHdoaWNoIGNhc2Ugd2UnbGwgZmFsbCBiYWNrIG9uIHVzaW5nCiAgICAgICAgICAgICAgICAjIHBsYWluIHNlbmQoKS4KICAgICAgICAgICAgICAgIGVyciA9IGV4Y2VwdGlvbnMuU2VuZGZpbGVOb3RBdmFpbGFibGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAib3Muc2VuZGZpbGUgY2FsbCBmYWlsZWQiKQogICAgICAgICAgICAgICAgc2VsZi5fc29ja19zZW5kZmlsZV91cGRhdGVfZmlsZXBvcyhmaWxlbm8sIG9mZnNldCwgdG90YWxfc2VudCkKICAgICAgICAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKGVycikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tfc2VuZGZpbGVfdXBkYXRlX2ZpbGVwb3MoZmlsZW5vLCBvZmZzZXQsIHRvdGFsX3NlbnQpCiAgICAgICAgICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBzZWxmLl9zb2NrX3NlbmRmaWxlX3VwZGF0ZV9maWxlcG9zKGZpbGVubywgb2Zmc2V0LCB0b3RhbF9zZW50KQogICAgICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc2VudCA9PSAwOgogICAgICAgICAgICAgICAgIyBFT0YKICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tfc2VuZGZpbGVfdXBkYXRlX2ZpbGVwb3MoZmlsZW5vLCBvZmZzZXQsIHRvdGFsX3NlbnQpCiAgICAgICAgICAgICAgICBmdXQuc2V0X3Jlc3VsdCh0b3RhbF9zZW50KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKICAgICAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAogICAgICAgICAgICAgICAgaWYgcmVnaXN0ZXJlZF9mZCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tfYWRkX2NhbmNlbGxhdGlvbl9jYWxsYmFjayhmdXQsIHNvY2spCiAgICAgICAgICAgICAgICBzZWxmLmFkZF93cml0ZXIoZmQsIHNlbGYuX3NvY2tfc2VuZGZpbGVfbmF0aXZlX2ltcGwsIGZ1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgc29jaywgZmlsZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwgY291bnQsIGJsb2Nrc2l6ZSwgdG90YWxfc2VudCkKCiAgICBkZWYgX3NvY2tfc2VuZGZpbGVfdXBkYXRlX2ZpbGVwb3Moc2VsZiwgZmlsZW5vLCBvZmZzZXQsIHRvdGFsX3NlbnQpOgogICAgICAgIGlmIHRvdGFsX3NlbnQgPiAwOgogICAgICAgICAgICBvcy5sc2VlayhmaWxlbm8sIG9mZnNldCwgb3MuU0VFS19TRVQpCgogICAgZGVmIF9zb2NrX2FkZF9jYW5jZWxsYXRpb25fY2FsbGJhY2soc2VsZiwgZnV0LCBzb2NrKToKICAgICAgICBkZWYgY2IoZnV0KToKICAgICAgICAgICAgaWYgZnV0LmNhbmNlbGxlZCgpOgogICAgICAgICAgICAgICAgZmQgPSBzb2NrLmZpbGVubygpCiAgICAgICAgICAgICAgICBpZiBmZCAhPSAtMToKICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZV93cml0ZXIoZmQpCiAgICAgICAgZnV0LmFkZF9kb25lX2NhbGxiYWNrKGNiKQoKCmNsYXNzIF9Vbml4UmVhZFBpcGVUcmFuc3BvcnQodHJhbnNwb3J0cy5SZWFkVHJhbnNwb3J0KToKCiAgICBtYXhfc2l6ZSA9IDI1NiAqIDEwMjQgICMgbWF4IGJ5dGVzIHdlIHJlYWQgaW4gb25lIGV2ZW50IGxvb3AgaXRlcmF0aW9uCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvb3AsIHBpcGUsIHByb3RvY29sLCB3YWl0ZXI9Tm9uZSwgZXh0cmE9Tm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhleHRyYSkKICAgICAgICBzZWxmLl9leHRyYVsncGlwZSddID0gcGlwZQogICAgICAgIHNlbGYuX2xvb3AgPSBsb29wCiAgICAgICAgc2VsZi5fcGlwZSA9IHBpcGUKICAgICAgICBzZWxmLl9maWxlbm8gPSBwaXBlLmZpbGVubygpCiAgICAgICAgc2VsZi5fcHJvdG9jb2wgPSBwcm90b2NvbAogICAgICAgIHNlbGYuX2Nsb3NpbmcgPSBGYWxzZQogICAgICAgIHNlbGYuX3BhdXNlZCA9IEZhbHNlCgogICAgICAgIG1vZGUgPSBvcy5mc3RhdChzZWxmLl9maWxlbm8pLnN0X21vZGUKICAgICAgICBpZiBub3QgKHN0YXQuU19JU0ZJRk8obW9kZSkgb3IKICAgICAgICAgICAgICAgIHN0YXQuU19JU1NPQ0sobW9kZSkgb3IKICAgICAgICAgICAgICAgIHN0YXQuU19JU0NIUihtb2RlKSk6CiAgICAgICAgICAgIHNlbGYuX3BpcGUgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX2ZpbGVubyA9IE5vbmUKICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2wgPSBOb25lCiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBpcGUgdHJhbnNwb3J0IGlzIGZvciBwaXBlcy9zb2NrZXRzIG9ubHkuIikKCiAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHNlbGYuX2ZpbGVubywgRmFsc2UpCgogICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX3Byb3RvY29sLmNvbm5lY3Rpb25fbWFkZSwgc2VsZikKICAgICAgICAjIG9ubHkgc3RhcnQgcmVhZGluZyB3aGVuIGNvbm5lY3Rpb25fbWFkZSgpIGhhcyBiZWVuIGNhbGxlZAogICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX2xvb3AuX2FkZF9yZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZW5vLCBzZWxmLl9yZWFkX3JlYWR5KQogICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBvbmx5IHdha2UgdXAgdGhlIHdhaXRlciB3aGVuIGNvbm5lY3Rpb25fbWFkZSgpIGhhcyBiZWVuIGNhbGxlZAogICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihmdXR1cmVzLl9zZXRfcmVzdWx0X3VubGVzc19jYW5jZWxsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlciwgTm9uZSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaW5mbyA9IFtzZWxmLl9fY2xhc3NfXy5fX25hbWVfX10KICAgICAgICBpZiBzZWxmLl9waXBlIGlzIE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdjbG9zZWQnKQogICAgICAgIGVsaWYgc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2Nsb3NpbmcnKQogICAgICAgIGluZm8uYXBwZW5kKGYnZmQ9e3NlbGYuX2ZpbGVub30nKQogICAgICAgIHNlbGVjdG9yID0gZ2V0YXR0cihzZWxmLl9sb29wLCAnX3NlbGVjdG9yJywgTm9uZSkKICAgICAgICBpZiBzZWxmLl9waXBlIGlzIG5vdCBOb25lIGFuZCBzZWxlY3RvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgcG9sbGluZyA9IHNlbGVjdG9yX2V2ZW50cy5fdGVzdF9zZWxlY3Rvcl9ldmVudCgKICAgICAgICAgICAgICAgIHNlbGVjdG9yLCBzZWxmLl9maWxlbm8sIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgICAgICBpZiBwb2xsaW5nOgogICAgICAgICAgICAgICAgaW5mby5hcHBlbmQoJ3BvbGxpbmcnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2lkbGUnKQogICAgICAgIGVsaWYgc2VsZi5fcGlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ29wZW4nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdjbG9zZWQnKQogICAgICAgIHJldHVybiAnPHt9PicuZm9ybWF0KCcgJy5qb2luKGluZm8pKQoKICAgIGRlZiBfcmVhZF9yZWFkeShzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKHNlbGYuX2ZpbGVubywgc2VsZi5tYXhfc2l6ZSkKICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgIHNlbGYuX2ZhdGFsX2Vycm9yKGV4YywgJ0ZhdGFsIHJlYWQgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICBzZWxmLl9wcm90b2NvbC5kYXRhX3JlY2VpdmVkKGRhdGEpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlciB3YXMgY2xvc2VkIGJ5IHBlZXIiLCBzZWxmKQogICAgICAgICAgICAgICAgc2VsZi5fY2xvc2luZyA9IFRydWUKICAgICAgICAgICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV9yZWFkZXIoc2VsZi5fZmlsZW5vKQogICAgICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi5fcHJvdG9jb2wuZW9mX3JlY2VpdmVkKQogICAgICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi5fY2FsbF9jb25uZWN0aW9uX2xvc3QsIE5vbmUpCgogICAgZGVmIHBhdXNlX3JlYWRpbmcoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY2xvc2luZyBvciBzZWxmLl9wYXVzZWQ6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYuX3BhdXNlZCA9IFRydWUKICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfcmVhZGVyKHNlbGYuX2ZpbGVubykKICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVyIHBhdXNlcyByZWFkaW5nIiwgc2VsZikKCiAgICBkZWYgcmVzdW1lX3JlYWRpbmcoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY2xvc2luZyBvciBub3Qgc2VsZi5fcGF1c2VkOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLl9wYXVzZWQgPSBGYWxzZQogICAgICAgIHNlbGYuX2xvb3AuX2FkZF9yZWFkZXIoc2VsZi5fZmlsZW5vLCBzZWxmLl9yZWFkX3JlYWR5KQogICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiJXIgcmVzdW1lcyByZWFkaW5nIiwgc2VsZikKCiAgICBkZWYgc2V0X3Byb3RvY29sKHNlbGYsIHByb3RvY29sKToKICAgICAgICBzZWxmLl9wcm90b2NvbCA9IHByb3RvY29sCgogICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fcHJvdG9jb2wKCiAgICBkZWYgaXNfY2xvc2luZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2xvc2luZwoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgc2VsZi5fY2xvc2UoTm9uZSkKCiAgICBkZWYgX19kZWxfXyhzZWxmLCBfd2Fybj13YXJuaW5ncy53YXJuKToKICAgICAgICBpZiBzZWxmLl9waXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfd2FybihmInVuY2xvc2VkIHRyYW5zcG9ydCB7c2VsZiFyfSIsIFJlc291cmNlV2FybmluZywgc291cmNlPXNlbGYpCiAgICAgICAgICAgIHNlbGYuX3BpcGUuY2xvc2UoKQoKICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCcpOgogICAgICAgICMgc2hvdWxkIGJlIGNhbGxlZCBieSBleGNlcHRpb24gaGFuZGxlciBvbmx5CiAgICAgICAgaWYgKGlzaW5zdGFuY2UoZXhjLCBPU0Vycm9yKSBhbmQgZXhjLmVycm5vID09IGVycm5vLkVJTyk6CiAgICAgICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVyOiAlcyIsIHNlbGYsIG1lc3NhZ2UsIGV4Y19pbmZvPVRydWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKHsKICAgICAgICAgICAgICAgICdtZXNzYWdlJzogbWVzc2FnZSwKICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICAndHJhbnNwb3J0Jzogc2VsZiwKICAgICAgICAgICAgICAgICdwcm90b2NvbCc6IHNlbGYuX3Byb3RvY29sLAogICAgICAgICAgICB9KQogICAgICAgIHNlbGYuX2Nsb3NlKGV4YykKCiAgICBkZWYgX2Nsb3NlKHNlbGYsIGV4Yyk6CiAgICAgICAgc2VsZi5fY2xvc2luZyA9IFRydWUKICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfcmVhZGVyKHNlbGYuX2ZpbGVubykKICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9jYWxsX2Nvbm5lY3Rpb25fbG9zdCwgZXhjKQoKICAgIGRlZiBfY2FsbF9jb25uZWN0aW9uX2xvc3Qoc2VsZiwgZXhjKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sLmNvbm5lY3Rpb25fbG9zdChleGMpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCiAgICAgICAgICAgIHNlbGYuX3BpcGUgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sID0gTm9uZQogICAgICAgICAgICBzZWxmLl9sb29wID0gTm9uZQoKCmNsYXNzIF9Vbml4V3JpdGVQaXBlVHJhbnNwb3J0KHRyYW5zcG9ydHMuX0Zsb3dDb250cm9sTWl4aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydHMuV3JpdGVUcmFuc3BvcnQpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb29wLCBwaXBlLCBwcm90b2NvbCwgd2FpdGVyPU5vbmUsIGV4dHJhPU5vbmUpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oZXh0cmEsIGxvb3ApCiAgICAgICAgc2VsZi5fZXh0cmFbJ3BpcGUnXSA9IHBpcGUKICAgICAgICBzZWxmLl9waXBlID0gcGlwZQogICAgICAgIHNlbGYuX2ZpbGVubyA9IHBpcGUuZmlsZW5vKCkKICAgICAgICBzZWxmLl9wcm90b2NvbCA9IHByb3RvY29sCiAgICAgICAgc2VsZi5fYnVmZmVyID0gYnl0ZWFycmF5KCkKICAgICAgICBzZWxmLl9jb25uX2xvc3QgPSAwCiAgICAgICAgc2VsZi5fY2xvc2luZyA9IEZhbHNlICAjIFNldCB3aGVuIGNsb3NlKCkgb3Igd3JpdGVfZW9mKCkgY2FsbGVkLgoKICAgICAgICBtb2RlID0gb3MuZnN0YXQoc2VsZi5fZmlsZW5vKS5zdF9tb2RlCiAgICAgICAgaXNfY2hhciA9IHN0YXQuU19JU0NIUihtb2RlKQogICAgICAgIGlzX2ZpZm8gPSBzdGF0LlNfSVNGSUZPKG1vZGUpCiAgICAgICAgaXNfc29ja2V0ID0gc3RhdC5TX0lTU09DSyhtb2RlKQogICAgICAgIGlmIG5vdCAoaXNfY2hhciBvciBpc19maWZvIG9yIGlzX3NvY2tldCk6CiAgICAgICAgICAgIHNlbGYuX3BpcGUgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX2ZpbGVubyA9IE5vbmUKICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2wgPSBOb25lCiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBpcGUgdHJhbnNwb3J0IGlzIG9ubHkgZm9yICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGlwZXMsIHNvY2tldHMgYW5kIGNoYXJhY3RlciBkZXZpY2VzIikKCiAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHNlbGYuX2ZpbGVubywgRmFsc2UpCiAgICAgICAgc2VsZi5fbG9vcC5jYWxsX3Nvb24oc2VsZi5fcHJvdG9jb2wuY29ubmVjdGlvbl9tYWRlLCBzZWxmKQoKICAgICAgICAjIE9uIEFJWCwgdGhlIHJlYWRlciB0cmljayAodG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgcmVhZCBlbmQgb2YgdGhlCiAgICAgICAgIyBzb2NrZXQgaXMgY2xvc2VkKSBvbmx5IHdvcmtzIGZvciBzb2NrZXRzLiBPbiBvdGhlciBwbGF0Zm9ybXMgaXQKICAgICAgICAjIHdvcmtzIGZvciBwaXBlcyBhbmQgc29ja2V0cy4gKEV4Y2VwdGlvbjogT1MgWCAxMC40PyAgSXNzdWUgIzE5Mjk0LikKICAgICAgICBpZiBpc19zb2NrZXQgb3IgKGlzX2ZpZm8gYW5kIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiYWl4IikpOgogICAgICAgICAgICAjIG9ubHkgc3RhcnQgcmVhZGluZyB3aGVuIGNvbm5lY3Rpb25fbWFkZSgpIGhhcyBiZWVuIGNhbGxlZAogICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9sb29wLl9hZGRfcmVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlbm8sIHNlbGYuX3JlYWRfcmVhZHkpCgogICAgICAgIGlmIHdhaXRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBvbmx5IHdha2UgdXAgdGhlIHdhaXRlciB3aGVuIGNvbm5lY3Rpb25fbWFkZSgpIGhhcyBiZWVuIGNhbGxlZAogICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihmdXR1cmVzLl9zZXRfcmVzdWx0X3VubGVzc19jYW5jZWxsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlciwgTm9uZSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaW5mbyA9IFtzZWxmLl9fY2xhc3NfXy5fX25hbWVfX10KICAgICAgICBpZiBzZWxmLl9waXBlIGlzIE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdjbG9zZWQnKQogICAgICAgIGVsaWYgc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2Nsb3NpbmcnKQogICAgICAgIGluZm8uYXBwZW5kKGYnZmQ9e3NlbGYuX2ZpbGVub30nKQogICAgICAgIHNlbGVjdG9yID0gZ2V0YXR0cihzZWxmLl9sb29wLCAnX3NlbGVjdG9yJywgTm9uZSkKICAgICAgICBpZiBzZWxmLl9waXBlIGlzIG5vdCBOb25lIGFuZCBzZWxlY3RvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgcG9sbGluZyA9IHNlbGVjdG9yX2V2ZW50cy5fdGVzdF9zZWxlY3Rvcl9ldmVudCgKICAgICAgICAgICAgICAgIHNlbGVjdG9yLCBzZWxmLl9maWxlbm8sIHNlbGVjdG9ycy5FVkVOVF9XUklURSkKICAgICAgICAgICAgaWYgcG9sbGluZzoKICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdwb2xsaW5nJykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdpZGxlJykKCiAgICAgICAgICAgIGJ1ZnNpemUgPSBzZWxmLmdldF93cml0ZV9idWZmZXJfc2l6ZSgpCiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnYnVmc2l6ZT17YnVmc2l6ZX0nKQogICAgICAgIGVsaWYgc2VsZi5fcGlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ29wZW4nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdjbG9zZWQnKQogICAgICAgIHJldHVybiAnPHt9PicuZm9ybWF0KCcgJy5qb2luKGluZm8pKQoKICAgIGRlZiBnZXRfd3JpdGVfYnVmZmVyX3NpemUoc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9idWZmZXIpCgogICAgZGVmIF9yZWFkX3JlYWR5KHNlbGYpOgogICAgICAgICMgUGlwZSB3YXMgY2xvc2VkIGJ5IHBlZXIuCiAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgbG9nZ2VyLmluZm8oIiVyIHdhcyBjbG9zZWQgYnkgcGVlciIsIHNlbGYpCiAgICAgICAgaWYgc2VsZi5fYnVmZmVyOgogICAgICAgICAgICBzZWxmLl9jbG9zZShCcm9rZW5QaXBlRXJyb3IoKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9jbG9zZSgpCgogICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5LCBtZW1vcnl2aWV3KSksIHJlcHIoZGF0YSkKICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGJ5dGVhcnJheSk6CiAgICAgICAgICAgIGRhdGEgPSBtZW1vcnl2aWV3KGRhdGEpCiAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBzZWxmLl9jb25uX2xvc3Qgb3Igc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgaWYgc2VsZi5fY29ubl9sb3N0ID49IGNvbnN0YW50cy5MT0dfVEhSRVNIT0xEX0ZPUl9DT05OTE9TVF9XUklURVM6CiAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygncGlwZSBjbG9zZWQgYnkgcGVlciBvciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3Mud3JpdGUocGlwZSwgZGF0YSkgcmFpc2VkIGV4Y2VwdGlvbi4nKQogICAgICAgICAgICBzZWxmLl9jb25uX2xvc3QgKz0gMQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgbm90IHNlbGYuX2J1ZmZlcjoKICAgICAgICAgICAgIyBBdHRlbXB0IHRvIHNlbmQgaXQgcmlnaHQgYXdheSBmaXJzdC4KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbiA9IG9zLndyaXRlKHNlbGYuX2ZpbGVubywgZGF0YSkKICAgICAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgogICAgICAgICAgICAgICAgbiA9IDAKICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICBzZWxmLl9jb25uX2xvc3QgKz0gMQogICAgICAgICAgICAgICAgc2VsZi5fZmF0YWxfZXJyb3IoZXhjLCAnRmF0YWwgd3JpdGUgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmIG4gPT0gbGVuKGRhdGEpOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGVsaWYgbiA+IDA6CiAgICAgICAgICAgICAgICBkYXRhID0gbWVtb3J5dmlldyhkYXRhKVtuOl0KICAgICAgICAgICAgc2VsZi5fbG9vcC5fYWRkX3dyaXRlcihzZWxmLl9maWxlbm8sIHNlbGYuX3dyaXRlX3JlYWR5KQoKICAgICAgICBzZWxmLl9idWZmZXIgKz0gZGF0YQogICAgICAgIHNlbGYuX21heWJlX3BhdXNlX3Byb3RvY29sKCkKCiAgICBkZWYgX3dyaXRlX3JlYWR5KHNlbGYpOgogICAgICAgIGFzc2VydCBzZWxmLl9idWZmZXIsICdEYXRhIHNob3VsZCBub3QgYmUgZW1wdHknCgogICAgICAgIHRyeToKICAgICAgICAgICAgbiA9IG9zLndyaXRlKHNlbGYuX2ZpbGVubywgc2VsZi5fYnVmZmVyKQogICAgICAgIGV4Y2VwdCAoQmxvY2tpbmdJT0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yKToKICAgICAgICAgICAgcGFzcwogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsZWFyKCkKICAgICAgICAgICAgc2VsZi5fY29ubl9sb3N0ICs9IDEKICAgICAgICAgICAgIyBSZW1vdmUgd3JpdGVyIGhlcmUsIF9mYXRhbF9lcnJvcigpIGRvZXNuJ3QgaXQKICAgICAgICAgICAgIyBiZWNhdXNlIF9idWZmZXIgaXMgZW1wdHkuCiAgICAgICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV93cml0ZXIoc2VsZi5fZmlsZW5vKQogICAgICAgICAgICBzZWxmLl9mYXRhbF9lcnJvcihleGMsICdGYXRhbCB3cml0ZSBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbiA9PSBsZW4oc2VsZi5fYnVmZmVyKToKICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5jbGVhcigpCiAgICAgICAgICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfd3JpdGVyKHNlbGYuX2ZpbGVubykKICAgICAgICAgICAgICAgIHNlbGYuX21heWJlX3Jlc3VtZV9wcm90b2NvbCgpICAjIE1heSBhcHBlbmQgdG8gYnVmZmVyLgogICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2luZzoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfcmVhZGVyKHNlbGYuX2ZpbGVubykKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsX2Nvbm5lY3Rpb25fbG9zdChOb25lKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGVsaWYgbiA+IDA6CiAgICAgICAgICAgICAgICBkZWwgc2VsZi5fYnVmZmVyWzpuXQoKICAgIGRlZiBjYW5fd3JpdGVfZW9mKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHdyaXRlX2VvZihzZWxmKToKICAgICAgICBpZiBzZWxmLl9jbG9zaW5nOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBhc3NlcnQgc2VsZi5fcGlwZQogICAgICAgIHNlbGYuX2Nsb3NpbmcgPSBUcnVlCiAgICAgICAgaWYgbm90IHNlbGYuX2J1ZmZlcjoKICAgICAgICAgICAgc2VsZi5fbG9vcC5fcmVtb3ZlX3JlYWRlcihzZWxmLl9maWxlbm8pCiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9zb29uKHNlbGYuX2NhbGxfY29ubmVjdGlvbl9sb3N0LCBOb25lKQoKICAgIGRlZiBzZXRfcHJvdG9jb2woc2VsZiwgcHJvdG9jb2wpOgogICAgICAgIHNlbGYuX3Byb3RvY29sID0gcHJvdG9jb2wKCiAgICBkZWYgZ2V0X3Byb3RvY29sKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9wcm90b2NvbAoKICAgIGRlZiBpc19jbG9zaW5nKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jbG9zaW5nCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3BpcGUgaXMgbm90IE5vbmUgYW5kIG5vdCBzZWxmLl9jbG9zaW5nOgogICAgICAgICAgICAjIHdyaXRlX2VvZiBpcyBhbGwgd2hhdCB3ZSBuZWVkZWQgdG8gY2xvc2UgdGhlIHdyaXRlIHBpcGUKICAgICAgICAgICAgc2VsZi53cml0ZV9lb2YoKQoKICAgIGRlZiBfX2RlbF9fKHNlbGYsIF93YXJuPXdhcm5pbmdzLndhcm4pOgogICAgICAgIGlmIHNlbGYuX3BpcGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF93YXJuKGYidW5jbG9zZWQgdHJhbnNwb3J0IHtzZWxmIXJ9IiwgUmVzb3VyY2VXYXJuaW5nLCBzb3VyY2U9c2VsZikKICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCgogICAgZGVmIGFib3J0KHNlbGYpOgogICAgICAgIHNlbGYuX2Nsb3NlKE5vbmUpCgogICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHBpcGUgdHJhbnNwb3J0Jyk6CiAgICAgICAgIyBzaG91bGQgYmUgY2FsbGVkIGJ5IGV4Y2VwdGlvbiBoYW5kbGVyIG9ubHkKICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgT1NFcnJvcik6CiAgICAgICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIiVyOiAlcyIsIHNlbGYsIG1lc3NhZ2UsIGV4Y19pbmZvPVRydWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKHsKICAgICAgICAgICAgICAgICdtZXNzYWdlJzogbWVzc2FnZSwKICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICAndHJhbnNwb3J0Jzogc2VsZiwKICAgICAgICAgICAgICAgICdwcm90b2NvbCc6IHNlbGYuX3Byb3RvY29sLAogICAgICAgICAgICB9KQogICAgICAgIHNlbGYuX2Nsb3NlKGV4YykKCiAgICBkZWYgX2Nsb3NlKHNlbGYsIGV4Yz1Ob25lKToKICAgICAgICBzZWxmLl9jbG9zaW5nID0gVHJ1ZQogICAgICAgIGlmIHNlbGYuX2J1ZmZlcjoKICAgICAgICAgICAgc2VsZi5fbG9vcC5fcmVtb3ZlX3dyaXRlcihzZWxmLl9maWxlbm8pCiAgICAgICAgc2VsZi5fYnVmZmVyLmNsZWFyKCkKICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfcmVhZGVyKHNlbGYuX2ZpbGVubykKICAgICAgICBzZWxmLl9sb29wLmNhbGxfc29vbihzZWxmLl9jYWxsX2Nvbm5lY3Rpb25fbG9zdCwgZXhjKQoKICAgIGRlZiBfY2FsbF9jb25uZWN0aW9uX2xvc3Qoc2VsZiwgZXhjKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sLmNvbm5lY3Rpb25fbG9zdChleGMpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCiAgICAgICAgICAgIHNlbGYuX3BpcGUgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX3Byb3RvY29sID0gTm9uZQogICAgICAgICAgICBzZWxmLl9sb29wID0gTm9uZQoKCmNsYXNzIF9Vbml4U3VicHJvY2Vzc1RyYW5zcG9ydChiYXNlX3N1YnByb2Nlc3MuQmFzZVN1YnByb2Nlc3NUcmFuc3BvcnQpOgoKICAgIGRlZiBfc3RhcnQoc2VsZiwgYXJncywgc2hlbGwsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgYnVmc2l6ZSwgKiprd2FyZ3MpOgogICAgICAgIHN0ZGluX3cgPSBOb25lCiAgICAgICAgaWYgc3RkaW4gPT0gc3VicHJvY2Vzcy5QSVBFIGFuZCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnYWl4Jyk6CiAgICAgICAgICAgICMgVXNlIGEgc29ja2V0IHBhaXIgZm9yIHN0ZGluIG9uIEFJWCwgc2luY2UgaXQgZG9lcyBub3QKICAgICAgICAgICAgIyBzdXBwb3J0IHNlbGVjdGluZyByZWFkIGV2ZW50cyBvbiB0aGUgd3JpdGUgZW5kIG9mIGEKICAgICAgICAgICAgIyBzb2NrZXQgKHdoaWNoIHdlIHVzZSBpbiBvcmRlciB0byBkZXRlY3QgY2xvc2luZyBvZiB0aGUKICAgICAgICAgICAgIyBvdGhlciBlbmQpLgogICAgICAgICAgICBzdGRpbiwgc3RkaW5fdyA9IHNvY2tldC5zb2NrZXRwYWlyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBzdWJwcm9jZXNzLlBvcGVuKAogICAgICAgICAgICAgICAgYXJncywgc2hlbGw9c2hlbGwsIHN0ZGluPXN0ZGluLCBzdGRvdXQ9c3Rkb3V0LCBzdGRlcnI9c3RkZXJyLAogICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBidWZzaXplPWJ1ZnNpemUsICoqa3dhcmdzKQogICAgICAgICAgICBpZiBzdGRpbl93IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc3RkaW4uY2xvc2UoKQogICAgICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbiA9IG9wZW4oc3RkaW5fdy5kZXRhY2goKSwgJ3diJywgYnVmZmVyaW5nPWJ1ZnNpemUpCiAgICAgICAgICAgICAgICBzdGRpbl93ID0gTm9uZQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIHN0ZGluX3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzdGRpbi5jbG9zZSgpCiAgICAgICAgICAgICAgICBzdGRpbl93LmNsb3NlKCkKCgpjbGFzcyBBYnN0cmFjdENoaWxkV2F0Y2hlcjoKICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIG1vbml0b3JpbmcgY2hpbGQgcHJvY2Vzc2VzLgoKICAgIE9iamVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgY2xhc3MgbW9uaXRvciBhIGNvbGxlY3Rpb24gb2Ygc3VicHJvY2Vzc2VzIGFuZAogICAgcmVwb3J0IHRoZWlyIHRlcm1pbmF0aW9uIG9yIGludGVycnVwdGlvbiBieSBhIHNpZ25hbC4KCiAgICBOZXcgY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkIHdpdGggLmFkZF9jaGlsZF9oYW5kbGVyKCkuIFN0YXJ0aW5nIGEgbmV3CiAgICBwcm9jZXNzIG11c3QgYmUgZG9uZSB3aXRoaW4gYSAnd2l0aCcgYmxvY2sgdG8gYWxsb3cgdGhlIHdhdGNoZXIgdG8gc3VzcGVuZAogICAgaXRzIGFjdGl2aXR5IHVudGlsIHRoZSBuZXcgcHJvY2VzcyBpZiBmdWxseSByZWdpc3RlcmVkICh0aGlzIGlzIG5lZWRlZCB0bwogICAgcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIGluIHNvbWUgaW1wbGVtZW50YXRpb25zKS4KCiAgICBFeGFtcGxlOgogICAgICAgIHdpdGggd2F0Y2hlcjoKICAgICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oInNsZWVwIDEiKQogICAgICAgICAgICB3YXRjaGVyLmFkZF9jaGlsZF9oYW5kbGVyKHByb2MucGlkLCBjYWxsYmFjaykKCiAgICBOb3RlczoKICAgICAgICBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIHRocmVhZC1zYWZlLgoKICAgICAgICBTaW5jZSBjaGlsZCB3YXRjaGVyIG9iamVjdHMgbWF5IGNhdGNoIHRoZSBTSUdDSExEIHNpZ25hbCBhbmQgY2FsbAogICAgICAgIHdhaXRwaWQoLTEpLCB0aGVyZSBzaG91bGQgYmUgb25seSBvbmUgYWN0aXZlIG9iamVjdCBwZXIgcHJvY2Vzcy4KICAgICIiIgoKICAgIGRlZiBhZGRfY2hpbGRfaGFuZGxlcihzZWxmLCBwaWQsIGNhbGxiYWNrLCAqYXJncyk6CiAgICAgICAgIiIiUmVnaXN0ZXIgYSBuZXcgY2hpbGQgaGFuZGxlci4KCiAgICAgICAgQXJyYW5nZSBmb3IgY2FsbGJhY2socGlkLCByZXR1cm5jb2RlLCAqYXJncykgdG8gYmUgY2FsbGVkIHdoZW4KICAgICAgICBwcm9jZXNzICdwaWQnIHRlcm1pbmF0ZXMuIFNwZWNpZnlpbmcgYW5vdGhlciBjYWxsYmFjayBmb3IgdGhlIHNhbWUKICAgICAgICBwcm9jZXNzIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBoYW5kbGVyLgoKICAgICAgICBOb3RlOiBjYWxsYmFjaygpIG11c3QgYmUgdGhyZWFkLXNhZmUuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCgogICAgZGVmIHJlbW92ZV9jaGlsZF9oYW5kbGVyKHNlbGYsIHBpZCk6CiAgICAgICAgIiIiUmVtb3ZlcyB0aGUgaGFuZGxlciBmb3IgcHJvY2VzcyAncGlkJy4KCiAgICAgICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgVHJ1ZSBpZiB0aGUgaGFuZGxlciB3YXMgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQsCiAgICAgICAgRmFsc2UgaWYgdGhlcmUgd2FzIG5vdGhpbmcgdG8gcmVtb3ZlLiIiIgoKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKCiAgICBkZWYgYXR0YWNoX2xvb3Aoc2VsZiwgbG9vcCk6CiAgICAgICAgIiIiQXR0YWNoIHRoZSB3YXRjaGVyIHRvIGFuIGV2ZW50IGxvb3AuCgogICAgICAgIElmIHRoZSB3YXRjaGVyIHdhcyBwcmV2aW91c2x5IGF0dGFjaGVkIHRvIGFuIGV2ZW50IGxvb3AsIHRoZW4gaXQgaXMKICAgICAgICBmaXJzdCBkZXRhY2hlZCBiZWZvcmUgYXR0YWNoaW5nIHRvIHRoZSBuZXcgbG9vcC4KCiAgICAgICAgTm90ZTogbG9vcCBtYXkgYmUgTm9uZS4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiQ2xvc2UgdGhlIHdhdGNoZXIuCgogICAgICAgIFRoaXMgbXVzdCBiZSBjYWxsZWQgdG8gbWFrZSBzdXJlIHRoYXQgYW55IHVuZGVybHlpbmcgcmVzb3VyY2UgaXMgZnJlZWQuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCgogICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHdhdGNoZXIgaXMgYWN0aXZlIGFuZCBpcyB1c2VkIGJ5IHRoZSBldmVudCBsb29wLgoKICAgICAgICBSZXR1cm4gVHJ1ZSBpZiB0aGUgd2F0Y2hlciBpcyBpbnN0YWxsZWQgYW5kIHJlYWR5IHRvIGhhbmRsZSBwcm9jZXNzIGV4aXQKICAgICAgICBub3RpZmljYXRpb25zLgoKICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICIiIkVudGVyIHRoZSB3YXRjaGVyJ3MgY29udGV4dCBhbmQgYWxsb3cgc3RhcnRpbmcgbmV3IHByb2Nlc3NlcwoKICAgICAgICBUaGlzIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHNlbGYiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKCiAgICBkZWYgX19leGl0X18oc2VsZiwgYSwgYiwgYyk6CiAgICAgICAgIiIiRXhpdCB0aGUgd2F0Y2hlcidzIGNvbnRleHQiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKCgpjbGFzcyBQaWRmZENoaWxkV2F0Y2hlcihBYnN0cmFjdENoaWxkV2F0Y2hlcik6CiAgICAiIiJDaGlsZCB3YXRjaGVyIGltcGxlbWVudGF0aW9uIHVzaW5nIExpbnV4J3MgcGlkIGZpbGUgZGVzY3JpcHRvcnMuCgogICAgVGhpcyBjaGlsZCB3YXRjaGVyIHBvbGxzIHByb2Nlc3MgZmlsZSBkZXNjcmlwdG9ycyAocGlkZmRzKSB0byBhd2FpdCBjaGlsZAogICAgcHJvY2VzcyB0ZXJtaW5hdGlvbi4gSW4gc29tZSByZXNwZWN0cywgUGlkZmRDaGlsZFdhdGNoZXIgaXMgYSAiR29sZGlsb2NrcyIKICAgIGNoaWxkIHdhdGNoZXIgaW1wbGVtZW50YXRpb24uIEl0IGRvZXNuJ3QgcmVxdWlyZSBzaWduYWxzIG9yIHRocmVhZHMsIGRvZXNuJ3QKICAgIGludGVyZmVyZSB3aXRoIGFueSBwcm9jZXNzZXMgbGF1bmNoZWQgb3V0c2lkZSB0aGUgZXZlbnQgbG9vcCwgYW5kIHNjYWxlcwogICAgbGluZWFybHkgd2l0aCB0aGUgbnVtYmVyIG9mIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSB0aGUgZXZlbnQgbG9vcC4gVGhlCiAgICBtYWluIGRpc2FkdmFudGFnZSBpcyB0aGF0IHBpZGZkcyBhcmUgc3BlY2lmaWMgdG8gTGludXgsIGFuZCBvbmx5IHdvcmsgb24KICAgIHJlY2VudCAoNS4zKykga2VybmVscy4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9sb29wID0gTm9uZQogICAgICAgIHNlbGYuX2NhbGxiYWNrcyA9IHt9CgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrKToKICAgICAgICBwYXNzCgogICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fbG9vcCBpcyBub3QgTm9uZSBhbmQgc2VsZi5fbG9vcC5pc19ydW5uaW5nKCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgc2VsZi5hdHRhY2hfbG9vcChOb25lKQoKICAgIGRlZiBhdHRhY2hfbG9vcChzZWxmLCBsb29wKToKICAgICAgICBpZiBzZWxmLl9sb29wIGlzIG5vdCBOb25lIGFuZCBsb29wIGlzIE5vbmUgYW5kIHNlbGYuX2NhbGxiYWNrczoKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICdBIGxvb3AgaXMgYmVpbmcgZGV0YWNoZWQgJwogICAgICAgICAgICAgICAgJ2Zyb20gYSBjaGlsZCB3YXRjaGVyIHdpdGggcGVuZGluZyBoYW5kbGVycycsCiAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKICAgICAgICBmb3IgcGlkZmQsIF8sIF8gaW4gc2VsZi5fY2FsbGJhY2tzLnZhbHVlcygpOgogICAgICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfcmVhZGVyKHBpZGZkKQogICAgICAgICAgICBvcy5jbG9zZShwaWRmZCkKICAgICAgICBzZWxmLl9jYWxsYmFja3MuY2xlYXIoKQogICAgICAgIHNlbGYuX2xvb3AgPSBsb29wCgogICAgZGVmIGFkZF9jaGlsZF9oYW5kbGVyKHNlbGYsIHBpZCwgY2FsbGJhY2ssICphcmdzKToKICAgICAgICBleGlzdGluZyA9IHNlbGYuX2NhbGxiYWNrcy5nZXQocGlkKQogICAgICAgIGlmIGV4aXN0aW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9jYWxsYmFja3NbcGlkXSA9IGV4aXN0aW5nWzBdLCBjYWxsYmFjaywgYXJncwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBpZGZkID0gb3MucGlkZmRfb3BlbihwaWQpCiAgICAgICAgICAgIHNlbGYuX2xvb3AuX2FkZF9yZWFkZXIocGlkZmQsIHNlbGYuX2RvX3dhaXQsIHBpZCkKICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2tzW3BpZF0gPSBwaWRmZCwgY2FsbGJhY2ssIGFyZ3MKCiAgICBkZWYgX2RvX3dhaXQoc2VsZiwgcGlkKToKICAgICAgICBwaWRmZCwgY2FsbGJhY2ssIGFyZ3MgPSBzZWxmLl9jYWxsYmFja3MucG9wKHBpZCkKICAgICAgICBzZWxmLl9sb29wLl9yZW1vdmVfcmVhZGVyKHBpZGZkKQogICAgICAgIHRyeToKICAgICAgICAgICAgXywgc3RhdHVzID0gb3Mud2FpdHBpZChwaWQsIDApCiAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAjIFRoZSBjaGlsZCBwcm9jZXNzIGlzIGFscmVhZHkgcmVhcGVkCiAgICAgICAgICAgICMgKG1heSBoYXBwZW4gaWYgd2FpdHBpZCgpIGlzIGNhbGxlZCBlbHNld2hlcmUpLgogICAgICAgICAgICByZXR1cm5jb2RlID0gMjU1CiAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKAogICAgICAgICAgICAgICAgImNoaWxkIHByb2Nlc3MgcGlkICVkIGV4aXQgc3RhdHVzIGFscmVhZHkgcmVhZDogIgogICAgICAgICAgICAgICAgIiB3aWxsIHJlcG9ydCByZXR1cm5jb2RlIDI1NSIsCiAgICAgICAgICAgICAgICBwaWQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuY29kZSA9IHdhaXRzdGF0dXNfdG9fZXhpdGNvZGUoc3RhdHVzKQoKICAgICAgICBvcy5jbG9zZShwaWRmZCkKICAgICAgICBjYWxsYmFjayhwaWQsIHJldHVybmNvZGUsICphcmdzKQoKICAgIGRlZiByZW1vdmVfY2hpbGRfaGFuZGxlcihzZWxmLCBwaWQpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcGlkZmQsIF8sIF8gPSBzZWxmLl9jYWxsYmFja3MucG9wKHBpZCkKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHNlbGYuX2xvb3AuX3JlbW92ZV9yZWFkZXIocGlkZmQpCiAgICAgICAgb3MuY2xvc2UocGlkZmQpCiAgICAgICAgcmV0dXJuIFRydWUKCgpjbGFzcyBCYXNlQ2hpbGRXYXRjaGVyKEFic3RyYWN0Q2hpbGRXYXRjaGVyKToKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fbG9vcCA9IE5vbmUKICAgICAgICBzZWxmLl9jYWxsYmFja3MgPSB7fQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLmF0dGFjaF9sb29wKE5vbmUpCgogICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fbG9vcCBpcyBub3QgTm9uZSBhbmQgc2VsZi5fbG9vcC5pc19ydW5uaW5nKCkKCiAgICBkZWYgX2RvX3dhaXRwaWQoc2VsZiwgZXhwZWN0ZWRfcGlkKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKCiAgICBkZWYgX2RvX3dhaXRwaWRfYWxsKHNlbGYpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQoKICAgIGRlZiBhdHRhY2hfbG9vcChzZWxmLCBsb29wKToKICAgICAgICBhc3NlcnQgbG9vcCBpcyBOb25lIG9yIGlzaW5zdGFuY2UobG9vcCwgZXZlbnRzLkFic3RyYWN0RXZlbnRMb29wKQoKICAgICAgICBpZiBzZWxmLl9sb29wIGlzIG5vdCBOb25lIGFuZCBsb29wIGlzIE5vbmUgYW5kIHNlbGYuX2NhbGxiYWNrczoKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICdBIGxvb3AgaXMgYmVpbmcgZGV0YWNoZWQgJwogICAgICAgICAgICAgICAgJ2Zyb20gYSBjaGlsZCB3YXRjaGVyIHdpdGggcGVuZGluZyBoYW5kbGVycycsCiAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKCiAgICAgICAgaWYgc2VsZi5fbG9vcCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fbG9vcC5yZW1vdmVfc2lnbmFsX2hhbmRsZXIoc2lnbmFsLlNJR0NITEQpCgogICAgICAgIHNlbGYuX2xvb3AgPSBsb29wCiAgICAgICAgaWYgbG9vcCBpcyBub3QgTm9uZToKICAgICAgICAgICAgbG9vcC5hZGRfc2lnbmFsX2hhbmRsZXIoc2lnbmFsLlNJR0NITEQsIHNlbGYuX3NpZ19jaGxkKQoKICAgICAgICAgICAgIyBQcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gaW4gY2FzZSBhIGNoaWxkIHRlcm1pbmF0ZWQKICAgICAgICAgICAgIyBkdXJpbmcgdGhlIHN3aXRjaC4KICAgICAgICAgICAgc2VsZi5fZG9fd2FpdHBpZF9hbGwoKQoKICAgIGRlZiBfc2lnX2NobGQoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9kb193YWl0cGlkX2FsbCgpCiAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICAjIHNlbGYuX2xvb3Agc2hvdWxkIGFsd2F5cyBiZSBhdmFpbGFibGUgaGVyZQogICAgICAgICAgICAjIGFzICdfc2lnX2NobGQnIGlzIGFkZGVkIGFzIGEgc2lnbmFsIGhhbmRsZXIKICAgICAgICAgICAgIyBpbiAnYXR0YWNoX2xvb3AnCiAgICAgICAgICAgIHNlbGYuX2xvb3AuY2FsbF9leGNlcHRpb25faGFuZGxlcih7CiAgICAgICAgICAgICAgICAnbWVzc2FnZSc6ICdVbmtub3duIGV4Y2VwdGlvbiBpbiBTSUdDSExEIGhhbmRsZXInLAogICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbic6IGV4YywKICAgICAgICAgICAgfSkKCgpjbGFzcyBTYWZlQ2hpbGRXYXRjaGVyKEJhc2VDaGlsZFdhdGNoZXIpOgogICAgIiIiJ1NhZmUnIGNoaWxkIHdhdGNoZXIgaW1wbGVtZW50YXRpb24uCgogICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBhdm9pZHMgZGlzcnVwdGluZyBvdGhlciBjb2RlIHNwYXduaW5nIHByb2Nlc3NlcyBieQogICAgcG9sbGluZyBleHBsaWNpdGx5IGVhY2ggcHJvY2VzcyBpbiB0aGUgU0lHQ0hMRCBoYW5kbGVyIGluc3RlYWQgb2YgY2FsbGluZwogICAgb3Mud2FpdHBpZCgtMSkuCgogICAgVGhpcyBpcyBhIHNhZmUgc29sdXRpb24gYnV0IGl0IGhhcyBhIHNpZ25pZmljYW50IG92ZXJoZWFkIHdoZW4gaGFuZGxpbmcgYQogICAgYmlnIG51bWJlciBvZiBjaGlsZHJlbiAoTyhuKSBlYWNoIHRpbWUgU0lHQ0hMRCBpcyByYWlzZWQpCiAgICAiIiIKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgc2VsZi5fY2FsbGJhY2tzLmNsZWFyKCkKICAgICAgICBzdXBlcigpLmNsb3NlKCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGEsIGIsIGMpOgogICAgICAgIHBhc3MKCiAgICBkZWYgYWRkX2NoaWxkX2hhbmRsZXIoc2VsZiwgcGlkLCBjYWxsYmFjaywgKmFyZ3MpOgogICAgICAgIHNlbGYuX2NhbGxiYWNrc1twaWRdID0gKGNhbGxiYWNrLCBhcmdzKQoKICAgICAgICAjIFByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBpbiBjYXNlIHRoZSBjaGlsZCBpcyBhbHJlYWR5IHRlcm1pbmF0ZWQuCiAgICAgICAgc2VsZi5fZG9fd2FpdHBpZChwaWQpCgogICAgZGVmIHJlbW92ZV9jaGlsZF9oYW5kbGVyKHNlbGYsIHBpZCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBkZWwgc2VsZi5fY2FsbGJhY2tzW3BpZF0KICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfZG9fd2FpdHBpZF9hbGwoc2VsZik6CgogICAgICAgIGZvciBwaWQgaW4gbGlzdChzZWxmLl9jYWxsYmFja3MpOgogICAgICAgICAgICBzZWxmLl9kb193YWl0cGlkKHBpZCkKCiAgICBkZWYgX2RvX3dhaXRwaWQoc2VsZiwgZXhwZWN0ZWRfcGlkKToKICAgICAgICBhc3NlcnQgZXhwZWN0ZWRfcGlkID4gMAoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBpZCwgc3RhdHVzID0gb3Mud2FpdHBpZChleHBlY3RlZF9waWQsIG9zLldOT0hBTkcpCiAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAjIFRoZSBjaGlsZCBwcm9jZXNzIGlzIGFscmVhZHkgcmVhcGVkCiAgICAgICAgICAgICMgKG1heSBoYXBwZW4gaWYgd2FpdHBpZCgpIGlzIGNhbGxlZCBlbHNld2hlcmUpLgogICAgICAgICAgICBwaWQgPSBleHBlY3RlZF9waWQKICAgICAgICAgICAgcmV0dXJuY29kZSA9IDI1NQogICAgICAgICAgICBsb2dnZXIud2FybmluZygKICAgICAgICAgICAgICAgICJVbmtub3duIGNoaWxkIHByb2Nlc3MgcGlkICVkLCB3aWxsIHJlcG9ydCByZXR1cm5jb2RlIDI1NSIsCiAgICAgICAgICAgICAgICBwaWQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgcGlkID09IDA6CiAgICAgICAgICAgICAgICAjIFRoZSBjaGlsZCBwcm9jZXNzIGlzIHN0aWxsIGFsaXZlLgogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICByZXR1cm5jb2RlID0gd2FpdHN0YXR1c190b19leGl0Y29kZShzdGF0dXMpCiAgICAgICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ3Byb2Nlc3MgJXMgZXhpdGVkIHdpdGggcmV0dXJuY29kZSAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGlkLCByZXR1cm5jb2RlKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNhbGxiYWNrLCBhcmdzID0gc2VsZi5fY2FsbGJhY2tzLnBvcChwaWQpCiAgICAgICAgZXhjZXB0IEtleUVycm9yOiAgIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICMgTWF5IGhhcHBlbiBpZiAucmVtb3ZlX2NoaWxkX2hhbmRsZXIoKSBpcyBjYWxsZWQKICAgICAgICAgICAgIyBhZnRlciBvcy53YWl0cGlkKCkgcmV0dXJucy4KICAgICAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDaGlsZCB3YXRjaGVyIGdvdCBhbiB1bmV4cGVjdGVkIHBpZDogJXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCBleGNfaW5mbz1UcnVlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNhbGxiYWNrKHBpZCwgcmV0dXJuY29kZSwgKmFyZ3MpCgoKY2xhc3MgRmFzdENoaWxkV2F0Y2hlcihCYXNlQ2hpbGRXYXRjaGVyKToKICAgICIiIidGYXN0JyBjaGlsZCB3YXRjaGVyIGltcGxlbWVudGF0aW9uLgoKICAgIFRoaXMgaW1wbGVtZW50YXRpb24gcmVhcHMgZXZlcnkgdGVybWluYXRlZCBwcm9jZXNzZXMgYnkgY2FsbGluZwogICAgb3Mud2FpdHBpZCgtMSkgZGlyZWN0bHksIHBvc3NpYmx5IGJyZWFraW5nIG90aGVyIGNvZGUgc3Bhd25pbmcgcHJvY2Vzc2VzCiAgICBhbmQgd2FpdGluZyBmb3IgdGhlaXIgdGVybWluYXRpb24uCgogICAgVGhlcmUgaXMgbm8gbm90aWNlYWJsZSBvdmVyaGVhZCB3aGVuIGhhbmRsaW5nIGEgYmlnIG51bWJlciBvZiBjaGlsZHJlbgogICAgKE8oMSkgZWFjaCB0aW1lIGEgY2hpbGQgdGVybWluYXRlcykuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogICAgICAgIHNlbGYuX3pvbWJpZXMgPSB7fQogICAgICAgIHNlbGYuX2ZvcmtzID0gMAoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLl9jYWxsYmFja3MuY2xlYXIoKQogICAgICAgIHNlbGYuX3pvbWJpZXMuY2xlYXIoKQogICAgICAgIHN1cGVyKCkuY2xvc2UoKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICBzZWxmLl9mb3JrcyArPSAxCgogICAgICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBhLCBiLCBjKToKICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgIHNlbGYuX2ZvcmtzIC09IDEKCiAgICAgICAgICAgIGlmIHNlbGYuX2ZvcmtzIG9yIG5vdCBzZWxmLl96b21iaWVzOgogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICBjb2xsYXRlcmFsX3ZpY3RpbXMgPSBzdHIoc2VsZi5fem9tYmllcykKICAgICAgICAgICAgc2VsZi5fem9tYmllcy5jbGVhcigpCgogICAgICAgIGxvZ2dlci53YXJuaW5nKAogICAgICAgICAgICAiQ2F1Z2h0IHN1YnByb2Nlc3NlcyB0ZXJtaW5hdGlvbiBmcm9tIHVua25vd24gcGlkczogJXMiLAogICAgICAgICAgICBjb2xsYXRlcmFsX3ZpY3RpbXMpCgogICAgZGVmIGFkZF9jaGlsZF9oYW5kbGVyKHNlbGYsIHBpZCwgY2FsbGJhY2ssICphcmdzKToKICAgICAgICBhc3NlcnQgc2VsZi5fZm9ya3MsICJNdXN0IHVzZSB0aGUgY29udGV4dCBtYW5hZ2VyIgoKICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybmNvZGUgPSBzZWxmLl96b21iaWVzLnBvcChwaWQpCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICMgVGhlIGNoaWxkIGlzIHJ1bm5pbmcuCiAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFja3NbcGlkXSA9IGNhbGxiYWNrLCBhcmdzCiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBUaGUgY2hpbGQgaXMgZGVhZCBhbHJlYWR5LiBXZSBjYW4gZmlyZSB0aGUgY2FsbGJhY2suCiAgICAgICAgY2FsbGJhY2socGlkLCByZXR1cm5jb2RlLCAqYXJncykKCiAgICBkZWYgcmVtb3ZlX2NoaWxkX2hhbmRsZXIoc2VsZiwgcGlkKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBzZWxmLl9jYWxsYmFja3NbcGlkXQogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9kb193YWl0cGlkX2FsbChzZWxmKToKICAgICAgICAjIEJlY2F1c2Ugb2Ygc2lnbmFsIGNvYWxlc2NpbmcsIHdlIG11c3Qga2VlcCBjYWxsaW5nIHdhaXRwaWQoKSBhcwogICAgICAgICMgbG9uZyBhcyB3ZSdyZSBhYmxlIHRvIHJlYXAgYSBjaGlsZC4KICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQoLTEsIG9zLldOT0hBTkcpCiAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICMgTm8gbW9yZSBjaGlsZCBwcm9jZXNzZXMgZXhpc3QuCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIHBpZCA9PSAwOgogICAgICAgICAgICAgICAgICAgICMgQSBjaGlsZCBwcm9jZXNzIGlzIHN0aWxsIGFsaXZlLgogICAgICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgICAgIHJldHVybmNvZGUgPSB3YWl0c3RhdHVzX3RvX2V4aXRjb2RlKHN0YXR1cykKCiAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywgYXJncyA9IHNlbGYuX2NhbGxiYWNrcy5wb3AocGlkKQogICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICMgdW5rbm93biBjaGlsZAogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZvcmtzOgogICAgICAgICAgICAgICAgICAgICAgICAjIEl0IG1heSBub3QgYmUgcmVnaXN0ZXJlZCB5ZXQuCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3pvbWJpZXNbcGlkXSA9IHJldHVybmNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fbG9vcC5nZXRfZGVidWcoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygndW5rbm93biBwcm9jZXNzICVzIGV4aXRlZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggcmV0dXJuY29kZSAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCByZXR1cm5jb2RlKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gTm9uZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ3Byb2Nlc3MgJXMgZXhpdGVkIHdpdGggcmV0dXJuY29kZSAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIHJldHVybmNvZGUpCgogICAgICAgICAgICBpZiBjYWxsYmFjayBpcyBOb25lOgogICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoCiAgICAgICAgICAgICAgICAgICAgIkNhdWdodCBzdWJwcm9jZXNzIHRlcm1pbmF0aW9uIGZyb20gdW5rbm93biBwaWQ6ICIKICAgICAgICAgICAgICAgICAgICAiJWQgLT4gJWQiLCBwaWQsIHJldHVybmNvZGUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjYWxsYmFjayhwaWQsIHJldHVybmNvZGUsICphcmdzKQoKCmNsYXNzIE11bHRpTG9vcENoaWxkV2F0Y2hlcihBYnN0cmFjdENoaWxkV2F0Y2hlcik6CiAgICAiIiJBIHdhdGNoZXIgdGhhdCBkb2Vzbid0IHJlcXVpcmUgcnVubmluZyBsb29wIGluIHRoZSBtYWluIHRocmVhZC4KCiAgICBUaGlzIGltcGxlbWVudGF0aW9uIHJlZ2lzdGVycyBhIFNJR0NITEQgc2lnbmFsIGhhbmRsZXIgb24KICAgIGluc3RhbnRpYXRpb24gKHdoaWNoIG1heSBjb25mbGljdCB3aXRoIG90aGVyIGNvZGUgdGhhdAogICAgaW5zdGFsbCBvd24gaGFuZGxlciBmb3IgdGhpcyBzaWduYWwpLgoKICAgIFRoZSBzb2x1dGlvbiBpcyBzYWZlIGJ1dCBpdCBoYXMgYSBzaWduaWZpY2FudCBvdmVyaGVhZCB3aGVuCiAgICBoYW5kbGluZyBhIGJpZyBudW1iZXIgb2YgcHJvY2Vzc2VzICgqTyhuKSogZWFjaCB0aW1lIGEKICAgIFNJR0NITEQgaXMgcmVjZWl2ZWQpLgogICAgIiIiCgogICAgIyBJbXBsZW1lbnRhdGlvbiBub3RlOgogICAgIyBUaGUgY2xhc3Mga2VlcHMgY29tcGF0aWJpbGl0eSB3aXRoIEFic3RyYWN0Q2hpbGRXYXRjaGVyIEFCQwogICAgIyBUbyBhY2hpZXZlIHRoaXMgaXQgaGFzIGVtcHR5IGF0dGFjaF9sb29wKCkgbWV0aG9kCiAgICAjIGFuZCBkb2Vzbid0IGFjY2VwdCBleHBsaWNpdCBsb29wIGFyZ3VtZW50CiAgICAjIGZvciBhZGRfY2hpbGRfaGFuZGxlcigpL3JlbW92ZV9jaGlsZF9oYW5kbGVyKCkKICAgICMgYnV0IHJldHJpZXZlcyB0aGUgY3VycmVudCBsb29wIGJ5IGdldF9ydW5uaW5nX2xvb3AoKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9jYWxsYmFja3MgPSB7fQogICAgICAgIHNlbGYuX3NhdmVkX3NpZ2hhbmRsZXIgPSBOb25lCgogICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc2F2ZWRfc2lnaGFuZGxlciBpcyBub3QgTm9uZQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLl9jYWxsYmFja3MuY2xlYXIoKQogICAgICAgIGlmIHNlbGYuX3NhdmVkX3NpZ2hhbmRsZXIgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGhhbmRsZXIgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdDSExEKQogICAgICAgIGlmIGhhbmRsZXIgIT0gc2VsZi5fc2lnX2NobGQ6CiAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJTSUdDSExEIGhhbmRsZXIgd2FzIGNoYW5nZWQgYnkgb3V0c2lkZSBjb2RlIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdDSExELCBzZWxmLl9zYXZlZF9zaWdoYW5kbGVyKQogICAgICAgIHNlbGYuX3NhdmVkX3NpZ2hhbmRsZXIgPSBOb25lCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKICAgICAgICBwYXNzCgogICAgZGVmIGFkZF9jaGlsZF9oYW5kbGVyKHNlbGYsIHBpZCwgY2FsbGJhY2ssICphcmdzKToKICAgICAgICBsb29wID0gZXZlbnRzLmdldF9ydW5uaW5nX2xvb3AoKQogICAgICAgIHNlbGYuX2NhbGxiYWNrc1twaWRdID0gKGxvb3AsIGNhbGxiYWNrLCBhcmdzKQoKICAgICAgICAjIFByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBpbiBjYXNlIHRoZSBjaGlsZCBpcyBhbHJlYWR5IHRlcm1pbmF0ZWQuCiAgICAgICAgc2VsZi5fZG9fd2FpdHBpZChwaWQpCgogICAgZGVmIHJlbW92ZV9jaGlsZF9oYW5kbGVyKHNlbGYsIHBpZCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBkZWwgc2VsZi5fY2FsbGJhY2tzW3BpZF0KICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBhdHRhY2hfbG9vcChzZWxmLCBsb29wKToKICAgICAgICAjIERvbid0IHNhdmUgdGhlIGxvb3AgYnV0IGluaXRpYWxpemUgaXRzZWxmIGlmIGNhbGxlZCBmaXJzdCB0aW1lCiAgICAgICAgIyBUaGUgcmVhc29uIHRvIGRvIGl0IGhlcmUgaXMgdGhhdCBhdHRhY2hfbG9vcCgpIGlzIGNhbGxlZCBmcm9tCiAgICAgICAgIyB1bml4IHBvbGljeSBvbmx5IGZvciB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIyBNYWluIHRocmVhZCBpcyByZXF1aXJlZCBmb3Igc3Vic2NyaXB0aW9uIG9uIFNJR0NITEQgc2lnbmFsCiAgICAgICAgaWYgc2VsZi5fc2F2ZWRfc2lnaGFuZGxlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHNlbGYuX3NhdmVkX3NpZ2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdDSExELCBzZWxmLl9zaWdfY2hsZCkKICAgICAgICBpZiBzZWxmLl9zYXZlZF9zaWdoYW5kbGVyIGlzIE5vbmU6CiAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJQcmV2aW91cyBTSUdDSExEIGhhbmRsZXIgd2FzIHNldCBieSBub24tUHl0aG9uIGNvZGUsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc3RvcmUgdG8gZGVmYXVsdCBoYW5kbGVyIG9uIHdhdGNoZXIgY2xvc2UuIikKICAgICAgICAgICAgc2VsZi5fc2F2ZWRfc2lnaGFuZGxlciA9IHNpZ25hbC5TSUdfREZMCgogICAgICAgICMgU2V0IFNBX1JFU1RBUlQgdG8gbGltaXQgRUlOVFIgb2NjdXJyZW5jZXMuCiAgICAgICAgc2lnbmFsLnNpZ2ludGVycnVwdChzaWduYWwuU0lHQ0hMRCwgRmFsc2UpCgogICAgZGVmIF9kb193YWl0cGlkX2FsbChzZWxmKToKICAgICAgICBmb3IgcGlkIGluIGxpc3Qoc2VsZi5fY2FsbGJhY2tzKToKICAgICAgICAgICAgc2VsZi5fZG9fd2FpdHBpZChwaWQpCgogICAgZGVmIF9kb193YWl0cGlkKHNlbGYsIGV4cGVjdGVkX3BpZCk6CiAgICAgICAgYXNzZXJ0IGV4cGVjdGVkX3BpZCA+IDAKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQoZXhwZWN0ZWRfcGlkLCBvcy5XTk9IQU5HKQogICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgIyBUaGUgY2hpbGQgcHJvY2VzcyBpcyBhbHJlYWR5IHJlYXBlZAogICAgICAgICAgICAjIChtYXkgaGFwcGVuIGlmIHdhaXRwaWQoKSBpcyBjYWxsZWQgZWxzZXdoZXJlKS4KICAgICAgICAgICAgcGlkID0gZXhwZWN0ZWRfcGlkCiAgICAgICAgICAgIHJldHVybmNvZGUgPSAyNTUKICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoCiAgICAgICAgICAgICAgICAiVW5rbm93biBjaGlsZCBwcm9jZXNzIHBpZCAlZCwgd2lsbCByZXBvcnQgcmV0dXJuY29kZSAyNTUiLAogICAgICAgICAgICAgICAgcGlkKQogICAgICAgICAgICBkZWJ1Z19sb2cgPSBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHBpZCA9PSAwOgogICAgICAgICAgICAgICAgIyBUaGUgY2hpbGQgcHJvY2VzcyBpcyBzdGlsbCBhbGl2ZS4KICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgcmV0dXJuY29kZSA9IHdhaXRzdGF0dXNfdG9fZXhpdGNvZGUoc3RhdHVzKQogICAgICAgICAgICBkZWJ1Z19sb2cgPSBUcnVlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBsb29wLCBjYWxsYmFjaywgYXJncyA9IHNlbGYuX2NhbGxiYWNrcy5wb3AocGlkKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjogICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAjIE1heSBoYXBwZW4gaWYgLnJlbW92ZV9jaGlsZF9oYW5kbGVyKCkgaXMgY2FsbGVkCiAgICAgICAgICAgICMgYWZ0ZXIgb3Mud2FpdHBpZCgpIHJldHVybnMuCiAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDaGlsZCB3YXRjaGVyIGdvdCBhbiB1bmV4cGVjdGVkIHBpZDogJXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIGV4Y19pbmZvPVRydWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbG9vcC5pc19jbG9zZWQoKToKICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJMb29wICVyIHRoYXQgaGFuZGxlcyBwaWQgJXIgaXMgY2xvc2VkIiwgbG9vcCwgcGlkKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgZGVidWdfbG9nIGFuZCBsb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygncHJvY2VzcyAlcyBleGl0ZWQgd2l0aCByZXR1cm5jb2RlICVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGlkLCByZXR1cm5jb2RlKQogICAgICAgICAgICAgICAgbG9vcC5jYWxsX3Nvb25fdGhyZWFkc2FmZShjYWxsYmFjaywgcGlkLCByZXR1cm5jb2RlLCAqYXJncykKCiAgICBkZWYgX3NpZ19jaGxkKHNlbGYsIHNpZ251bSwgZnJhbWUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fZG9fd2FpdHBpZF9hbGwoKQogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICBsb2dnZXIud2FybmluZygnVW5rbm93biBleGNlcHRpb24gaW4gU0lHQ0hMRCBoYW5kbGVyJywgZXhjX2luZm89VHJ1ZSkKCgpjbGFzcyBUaHJlYWRlZENoaWxkV2F0Y2hlcihBYnN0cmFjdENoaWxkV2F0Y2hlcik6CiAgICAiIiJUaHJlYWRlZCBjaGlsZCB3YXRjaGVyIGltcGxlbWVudGF0aW9uLgoKICAgIFRoZSB3YXRjaGVyIHVzZXMgYSB0aHJlYWQgcGVyIHByb2Nlc3MKICAgIGZvciB3YWl0aW5nIGZvciB0aGUgcHJvY2VzcyBmaW5pc2guCgogICAgSXQgZG9lc24ndCByZXF1aXJlIHN1YnNjcmlwdGlvbiBvbiBQT1NJWCBzaWduYWwKICAgIGJ1dCBhIHRocmVhZCBjcmVhdGlvbiBpcyBub3QgZnJlZS4KCiAgICBUaGUgd2F0Y2hlciBoYXMgTygxKSBjb21wbGV4aXR5LCBpdHMgcGVyZm9ybWFuY2UgZG9lc24ndCBkZXBlbmQKICAgIG9uIGFtb3VudCBvZiBzcGF3biBwcm9jZXNzZXMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fcGlkX2NvdW50ZXIgPSBpdGVydG9vbHMuY291bnQoMCkKICAgICAgICBzZWxmLl90aHJlYWRzID0ge30KCiAgICBkZWYgaXNfYWN0aXZlKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHNlbGYuX2pvaW5fdGhyZWFkcygpCgogICAgZGVmIF9qb2luX3RocmVhZHMoc2VsZik6CiAgICAgICAgIiIiSW50ZXJuYWw6IEpvaW4gYWxsIG5vbi1kYWVtb24gdGhyZWFkcyIiIgogICAgICAgIHRocmVhZHMgPSBbdGhyZWFkIGZvciB0aHJlYWQgaW4gbGlzdChzZWxmLl90aHJlYWRzLnZhbHVlcygpKQogICAgICAgICAgICAgICAgICAgaWYgdGhyZWFkLmlzX2FsaXZlKCkgYW5kIG5vdCB0aHJlYWQuZGFlbW9uXQogICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkczoKICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CiAgICAgICAgcGFzcwoKICAgIGRlZiBfX2RlbF9fKHNlbGYsIF93YXJuPXdhcm5pbmdzLndhcm4pOgogICAgICAgIHRocmVhZHMgPSBbdGhyZWFkIGZvciB0aHJlYWQgaW4gbGlzdChzZWxmLl90aHJlYWRzLnZhbHVlcygpKQogICAgICAgICAgICAgICAgICAgaWYgdGhyZWFkLmlzX2FsaXZlKCldCiAgICAgICAgaWYgdGhyZWFkczoKICAgICAgICAgICAgX3dhcm4oZiJ7c2VsZi5fX2NsYXNzX199IGhhcyByZWdpc3RlcmVkIGJ1dCBub3QgZmluaXNoZWQgY2hpbGQgcHJvY2Vzc2VzIiwKICAgICAgICAgICAgICAgICAgUmVzb3VyY2VXYXJuaW5nLAogICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKCiAgICBkZWYgYWRkX2NoaWxkX2hhbmRsZXIoc2VsZiwgcGlkLCBjYWxsYmFjaywgKmFyZ3MpOgogICAgICAgIGxvb3AgPSBldmVudHMuZ2V0X3J1bm5pbmdfbG9vcCgpCiAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fZG9fd2FpdHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZiJ3YWl0cGlkLXtuZXh0KHNlbGYuX3BpZF9jb3VudGVyKX0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0obG9vcCwgcGlkLCBjYWxsYmFjaywgYXJncyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYWVtb249VHJ1ZSkKICAgICAgICBzZWxmLl90aHJlYWRzW3BpZF0gPSB0aHJlYWQKICAgICAgICB0aHJlYWQuc3RhcnQoKQoKICAgIGRlZiByZW1vdmVfY2hpbGRfaGFuZGxlcihzZWxmLCBwaWQpOgogICAgICAgICMgYXN5bmNpbyBuZXZlciBjYWxscyByZW1vdmVfY2hpbGRfaGFuZGxlcigpICEhIQogICAgICAgICMgVGhlIG1ldGhvZCBpcyBuby1vcCBidXQgaXMgaW1wbGVtZW50ZWQgYmVjYXVzZQogICAgICAgICMgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlcXVpcmUgaXQuCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgYXR0YWNoX2xvb3Aoc2VsZiwgbG9vcCk6CiAgICAgICAgcGFzcwoKICAgIGRlZiBfZG9fd2FpdHBpZChzZWxmLCBsb29wLCBleHBlY3RlZF9waWQsIGNhbGxiYWNrLCBhcmdzKToKICAgICAgICBhc3NlcnQgZXhwZWN0ZWRfcGlkID4gMAoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBpZCwgc3RhdHVzID0gb3Mud2FpdHBpZChleHBlY3RlZF9waWQsIDApCiAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAjIFRoZSBjaGlsZCBwcm9jZXNzIGlzIGFscmVhZHkgcmVhcGVkCiAgICAgICAgICAgICMgKG1heSBoYXBwZW4gaWYgd2FpdHBpZCgpIGlzIGNhbGxlZCBlbHNld2hlcmUpLgogICAgICAgICAgICBwaWQgPSBleHBlY3RlZF9waWQKICAgICAgICAgICAgcmV0dXJuY29kZSA9IDI1NQogICAgICAgICAgICBsb2dnZXIud2FybmluZygKICAgICAgICAgICAgICAgICJVbmtub3duIGNoaWxkIHByb2Nlc3MgcGlkICVkLCB3aWxsIHJlcG9ydCByZXR1cm5jb2RlIDI1NSIsCiAgICAgICAgICAgICAgICBwaWQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuY29kZSA9IHdhaXRzdGF0dXNfdG9fZXhpdGNvZGUoc3RhdHVzKQogICAgICAgICAgICBpZiBsb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdwcm9jZXNzICVzIGV4aXRlZCB3aXRoIHJldHVybmNvZGUgJXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BpZCwgcmV0dXJuY29kZSkKCiAgICAgICAgaWYgbG9vcC5pc19jbG9zZWQoKToKICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkxvb3AgJXIgdGhhdCBoYW5kbGVzIHBpZCAlciBpcyBjbG9zZWQiLCBsb29wLCBwaWQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbG9vcC5jYWxsX3Nvb25fdGhyZWFkc2FmZShjYWxsYmFjaywgcGlkLCByZXR1cm5jb2RlLCAqYXJncykKCiAgICAgICAgc2VsZi5fdGhyZWFkcy5wb3AoZXhwZWN0ZWRfcGlkKQoKCmNsYXNzIF9Vbml4RGVmYXVsdEV2ZW50TG9vcFBvbGljeShldmVudHMuQmFzZURlZmF1bHRFdmVudExvb3BQb2xpY3kpOgogICAgIiIiVU5JWCBldmVudCBsb29wIHBvbGljeSB3aXRoIGEgd2F0Y2hlciBmb3IgY2hpbGQgcHJvY2Vzc2VzLiIiIgogICAgX2xvb3BfZmFjdG9yeSA9IF9Vbml4U2VsZWN0b3JFdmVudExvb3AKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5fd2F0Y2hlciA9IE5vbmUKCiAgICBkZWYgX2luaXRfd2F0Y2hlcihzZWxmKToKICAgICAgICB3aXRoIGV2ZW50cy5fbG9jazoKICAgICAgICAgICAgaWYgc2VsZi5fd2F0Y2hlciBpcyBOb25lOiAgIyBwcmFnbWE6IG5vIGJyYW5jaAogICAgICAgICAgICAgICAgc2VsZi5fd2F0Y2hlciA9IFRocmVhZGVkQ2hpbGRXYXRjaGVyKCkKICAgICAgICAgICAgICAgIGlmIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpIGlzIHRocmVhZGluZy5tYWluX3RocmVhZCgpOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3dhdGNoZXIuYXR0YWNoX2xvb3Aoc2VsZi5fbG9jYWwuX2xvb3ApCgogICAgZGVmIHNldF9ldmVudF9sb29wKHNlbGYsIGxvb3ApOgogICAgICAgICIiIlNldCB0aGUgZXZlbnQgbG9vcC4KCiAgICAgICAgQXMgYSBzaWRlIGVmZmVjdCwgaWYgYSBjaGlsZCB3YXRjaGVyIHdhcyBzZXQgYmVmb3JlLCB0aGVuIGNhbGxpbmcKICAgICAgICAuc2V0X2V2ZW50X2xvb3AoKSBmcm9tIHRoZSBtYWluIHRocmVhZCB3aWxsIGNhbGwgLmF0dGFjaF9sb29wKGxvb3ApIG9uCiAgICAgICAgdGhlIGNoaWxkIHdhdGNoZXIuCiAgICAgICAgIiIiCgogICAgICAgIHN1cGVyKCkuc2V0X2V2ZW50X2xvb3AobG9vcCkKCiAgICAgICAgaWYgKHNlbGYuX3dhdGNoZXIgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSBpcyB0aHJlYWRpbmcubWFpbl90aHJlYWQoKSk6CiAgICAgICAgICAgIHNlbGYuX3dhdGNoZXIuYXR0YWNoX2xvb3AobG9vcCkKCiAgICBkZWYgZ2V0X2NoaWxkX3dhdGNoZXIoc2VsZik6CiAgICAgICAgIiIiR2V0IHRoZSB3YXRjaGVyIGZvciBjaGlsZCBwcm9jZXNzZXMuCgogICAgICAgIElmIG5vdCB5ZXQgc2V0LCBhIFRocmVhZGVkQ2hpbGRXYXRjaGVyIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fd2F0Y2hlciBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9pbml0X3dhdGNoZXIoKQoKICAgICAgICByZXR1cm4gc2VsZi5fd2F0Y2hlcgoKICAgIGRlZiBzZXRfY2hpbGRfd2F0Y2hlcihzZWxmLCB3YXRjaGVyKToKICAgICAgICAiIiJTZXQgdGhlIHdhdGNoZXIgZm9yIGNoaWxkIHByb2Nlc3Nlcy4iIiIKCiAgICAgICAgYXNzZXJ0IHdhdGNoZXIgaXMgTm9uZSBvciBpc2luc3RhbmNlKHdhdGNoZXIsIEFic3RyYWN0Q2hpbGRXYXRjaGVyKQoKICAgICAgICBpZiBzZWxmLl93YXRjaGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl93YXRjaGVyLmNsb3NlKCkKCiAgICAgICAgc2VsZi5fd2F0Y2hlciA9IHdhdGNoZXIKCgpTZWxlY3RvckV2ZW50TG9vcCA9IF9Vbml4U2VsZWN0b3JFdmVudExvb3AKRGVmYXVsdEV2ZW50TG9vcFBvbGljeSA9IF9Vbml4RGVmYXVsdEV2ZW50TG9vcFBvbGljeQpQSwMEFAAAAAAAAiCjVlbfs2JBhQAAQYUAABkAAABhc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5IiIiU2VsZWN0b3IgYW5kIHByb2FjdG9yIGV2ZW50IGxvb3BzIGZvciBXaW5kb3dzLiIiIgoKaW1wb3J0IHN5cwoKaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6ICAjIHByYWdtYTogbm8gY292ZXIKICAgIHJhaXNlIEltcG9ydEVycm9yKCd3aW4zMiBvbmx5JykKCmltcG9ydCBfb3ZlcmxhcHBlZAppbXBvcnQgX3dpbmFwaQppbXBvcnQgZXJybm8KaW1wb3J0IG1hdGgKaW1wb3J0IG1zdmNydAppbXBvcnQgc29ja2V0CmltcG9ydCBzdHJ1Y3QKaW1wb3J0IHRpbWUKaW1wb3J0IHdlYWtyZWYKCmZyb20gLiBpbXBvcnQgZXZlbnRzCmZyb20gLiBpbXBvcnQgYmFzZV9zdWJwcm9jZXNzCmZyb20gLiBpbXBvcnQgZnV0dXJlcwpmcm9tIC4gaW1wb3J0IGV4Y2VwdGlvbnMKZnJvbSAuIGltcG9ydCBwcm9hY3Rvcl9ldmVudHMKZnJvbSAuIGltcG9ydCBzZWxlY3Rvcl9ldmVudHMKZnJvbSAuIGltcG9ydCB0YXNrcwpmcm9tIC4gaW1wb3J0IHdpbmRvd3NfdXRpbHMKZnJvbSAubG9nIGltcG9ydCBsb2dnZXIKCgpfX2FsbF9fID0gKAogICAgJ1NlbGVjdG9yRXZlbnRMb29wJywgJ1Byb2FjdG9yRXZlbnRMb29wJywgJ0lvY3BQcm9hY3RvcicsCiAgICAnRGVmYXVsdEV2ZW50TG9vcFBvbGljeScsICdXaW5kb3dzU2VsZWN0b3JFdmVudExvb3BQb2xpY3knLAogICAgJ1dpbmRvd3NQcm9hY3RvckV2ZW50TG9vcFBvbGljeScsCikKCgpOVUxMID0gX3dpbmFwaS5OVUxMCklORklOSVRFID0gX3dpbmFwaS5JTkZJTklURQpFUlJPUl9DT05ORUNUSU9OX1JFRlVTRUQgPSAxMjI1CkVSUk9SX0NPTk5FQ1RJT05fQUJPUlRFRCA9IDEyMzYKCiMgSW5pdGlhbCBkZWxheSBpbiBzZWNvbmRzIGZvciBjb25uZWN0X3BpcGUoKSBiZWZvcmUgcmV0cnlpbmcgdG8gY29ubmVjdApDT05ORUNUX1BJUEVfSU5JVF9ERUxBWSA9IDAuMDAxCgojIE1heGltdW0gZGVsYXkgaW4gc2Vjb25kcyBmb3IgY29ubmVjdF9waXBlKCkgYmVmb3JlIHJldHJ5aW5nIHRvIGNvbm5lY3QKQ09OTkVDVF9QSVBFX01BWF9ERUxBWSA9IDAuMTAwCgoKY2xhc3MgX092ZXJsYXBwZWRGdXR1cmUoZnV0dXJlcy5GdXR1cmUpOgogICAgIiIiU3ViY2xhc3Mgb2YgRnV0dXJlIHdoaWNoIHJlcHJlc2VudHMgYW4gb3ZlcmxhcHBlZCBvcGVyYXRpb24uCgogICAgQ2FuY2VsbGluZyBpdCB3aWxsIGltbWVkaWF0ZWx5IGNhbmNlbCB0aGUgb3ZlcmxhcHBlZCBvcGVyYXRpb24uCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgb3YsICosIGxvb3A9Tm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsb29wPWxvb3ApCiAgICAgICAgaWYgc2VsZi5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgZGVsIHNlbGYuX3NvdXJjZV90cmFjZWJhY2tbLTFdCiAgICAgICAgc2VsZi5fb3YgPSBvdgoKICAgIGRlZiBfcmVwcl9pbmZvKHNlbGYpOgogICAgICAgIGluZm8gPSBzdXBlcigpLl9yZXByX2luZm8oKQogICAgICAgIGlmIHNlbGYuX292IGlzIG5vdCBOb25lOgogICAgICAgICAgICBzdGF0ZSA9ICdwZW5kaW5nJyBpZiBzZWxmLl9vdi5wZW5kaW5nIGVsc2UgJ2NvbXBsZXRlZCcKICAgICAgICAgICAgaW5mby5pbnNlcnQoMSwgZidvdmVybGFwcGVkPTx7c3RhdGV9LCB7c2VsZi5fb3YuYWRkcmVzczojeH0+JykKICAgICAgICByZXR1cm4gaW5mbwoKICAgIGRlZiBfY2FuY2VsX292ZXJsYXBwZWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fb3YgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9vdi5jYW5jZWwoKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgY29udGV4dCA9IHsKICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ0NhbmNlbGxpbmcgYW4gb3ZlcmxhcHBlZCBmdXR1cmUgZmFpbGVkJywKICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICAnZnV0dXJlJzogc2VsZiwKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrOgogICAgICAgICAgICAgICAgY29udGV4dFsnc291cmNlX3RyYWNlYmFjayddID0gc2VsZi5fc291cmNlX3RyYWNlYmFjawogICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoY29udGV4dCkKICAgICAgICBzZWxmLl9vdiA9IE5vbmUKCiAgICBkZWYgY2FuY2VsKHNlbGYsIG1zZz1Ob25lKToKICAgICAgICBzZWxmLl9jYW5jZWxfb3ZlcmxhcHBlZCgpCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuY2FuY2VsKG1zZz1tc2cpCgogICAgZGVmIHNldF9leGNlcHRpb24oc2VsZiwgZXhjZXB0aW9uKToKICAgICAgICBzdXBlcigpLnNldF9leGNlcHRpb24oZXhjZXB0aW9uKQogICAgICAgIHNlbGYuX2NhbmNlbF9vdmVybGFwcGVkKCkKCiAgICBkZWYgc2V0X3Jlc3VsdChzZWxmLCByZXN1bHQpOgogICAgICAgIHN1cGVyKCkuc2V0X3Jlc3VsdChyZXN1bHQpCiAgICAgICAgc2VsZi5fb3YgPSBOb25lCgoKY2xhc3MgX0Jhc2VXYWl0SGFuZGxlRnV0dXJlKGZ1dHVyZXMuRnV0dXJlKToKICAgICIiIlN1YmNsYXNzIG9mIEZ1dHVyZSB3aGljaCByZXByZXNlbnRzIGEgd2FpdCBoYW5kbGUuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG92LCBoYW5kbGUsIHdhaXRfaGFuZGxlLCAqLCBsb29wPU5vbmUpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18obG9vcD1sb29wKQogICAgICAgIGlmIHNlbGYuX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgICAgIGRlbCBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQogICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgT3ZlcmxhcHBlZCBvYmplY3QgdG8ga2VlcCBpdCBhbGl2ZSB1bnRpbCB0aGUKICAgICAgICAjIHdhaXQgaXMgdW5yZWdpc3RlcmVkCiAgICAgICAgc2VsZi5fb3YgPSBvdgogICAgICAgIHNlbGYuX2hhbmRsZSA9IGhhbmRsZQogICAgICAgIHNlbGYuX3dhaXRfaGFuZGxlID0gd2FpdF9oYW5kbGUKCiAgICAgICAgIyBTaG91bGQgd2UgY2FsbCBVbnJlZ2lzdGVyV2FpdEV4KCkgaWYgdGhlIHdhaXQgY29tcGxldGVzCiAgICAgICAgIyBvciBpcyBjYW5jZWxsZWQ/CiAgICAgICAgc2VsZi5fcmVnaXN0ZXJlZCA9IFRydWUKCiAgICBkZWYgX3BvbGwoc2VsZik6CiAgICAgICAgIyBub24tYmxvY2tpbmcgd2FpdDogdXNlIGEgdGltZW91dCBvZiAwIG1pbGxpc2Vjb25kCiAgICAgICAgcmV0dXJuIChfd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3Qoc2VsZi5faGFuZGxlLCAwKSA9PQogICAgICAgICAgICAgICAgX3dpbmFwaS5XQUlUX09CSkVDVF8wKQoKICAgIGRlZiBfcmVwcl9pbmZvKHNlbGYpOgogICAgICAgIGluZm8gPSBzdXBlcigpLl9yZXByX2luZm8oKQogICAgICAgIGluZm8uYXBwZW5kKGYnaGFuZGxlPXtzZWxmLl9oYW5kbGU6I3h9JykKICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHN0YXRlID0gJ3NpZ25hbGVkJyBpZiBzZWxmLl9wb2xsKCkgZWxzZSAnd2FpdGluZycKICAgICAgICAgICAgaW5mby5hcHBlbmQoc3RhdGUpCiAgICAgICAgaWYgc2VsZi5fd2FpdF9oYW5kbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKGYnd2FpdF9oYW5kbGU9e3NlbGYuX3dhaXRfaGFuZGxlOiN4fScpCiAgICAgICAgcmV0dXJuIGluZm8KCiAgICBkZWYgX3VucmVnaXN0ZXJfd2FpdF9jYihzZWxmLCBmdXQpOgogICAgICAgICMgVGhlIHdhaXQgd2FzIHVucmVnaXN0ZXJlZDogaXQncyBub3Qgc2FmZSB0byBkZXN0cm95IHRoZSBPdmVybGFwcGVkCiAgICAgICAgIyBvYmplY3QKICAgICAgICBzZWxmLl9vdiA9IE5vbmUKCiAgICBkZWYgX3VucmVnaXN0ZXJfd2FpdChzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fcmVnaXN0ZXJlZDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fcmVnaXN0ZXJlZCA9IEZhbHNlCgogICAgICAgIHdhaXRfaGFuZGxlID0gc2VsZi5fd2FpdF9oYW5kbGUKICAgICAgICBzZWxmLl93YWl0X2hhbmRsZSA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIF9vdmVybGFwcGVkLlVucmVnaXN0ZXJXYWl0KHdhaXRfaGFuZGxlKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yICE9IF9vdmVybGFwcGVkLkVSUk9SX0lPX1BFTkRJTkc6CiAgICAgICAgICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ0ZhaWxlZCB0byB1bnJlZ2lzdGVyIHRoZSB3YWl0IGhhbmRsZScsCiAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbic6IGV4YywKICAgICAgICAgICAgICAgICAgICAnZnV0dXJlJzogc2VsZiwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgICAgICAgICAgICAgY29udGV4dFsnc291cmNlX3RyYWNlYmFjayddID0gc2VsZi5fc291cmNlX3RyYWNlYmFjawogICAgICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnRleHQpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIyBFUlJPUl9JT19QRU5ESU5HIG1lYW5zIHRoYXQgdGhlIHVucmVnaXN0ZXIgaXMgcGVuZGluZwoKICAgICAgICBzZWxmLl91bnJlZ2lzdGVyX3dhaXRfY2IoTm9uZSkKCiAgICBkZWYgY2FuY2VsKHNlbGYsIG1zZz1Ob25lKToKICAgICAgICBzZWxmLl91bnJlZ2lzdGVyX3dhaXQoKQogICAgICAgIHJldHVybiBzdXBlcigpLmNhbmNlbChtc2c9bXNnKQoKICAgIGRlZiBzZXRfZXhjZXB0aW9uKHNlbGYsIGV4Y2VwdGlvbik6CiAgICAgICAgc2VsZi5fdW5yZWdpc3Rlcl93YWl0KCkKICAgICAgICBzdXBlcigpLnNldF9leGNlcHRpb24oZXhjZXB0aW9uKQoKICAgIGRlZiBzZXRfcmVzdWx0KHNlbGYsIHJlc3VsdCk6CiAgICAgICAgc2VsZi5fdW5yZWdpc3Rlcl93YWl0KCkKICAgICAgICBzdXBlcigpLnNldF9yZXN1bHQocmVzdWx0KQoKCmNsYXNzIF9XYWl0Q2FuY2VsRnV0dXJlKF9CYXNlV2FpdEhhbmRsZUZ1dHVyZSk6CiAgICAiIiJTdWJjbGFzcyBvZiBGdXR1cmUgd2hpY2ggcmVwcmVzZW50cyBhIHdhaXQgZm9yIHRoZSBjYW5jZWxsYXRpb24gb2YgYQogICAgX1dhaXRIYW5kbGVGdXR1cmUgdXNpbmcgYW4gZXZlbnQuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgb3YsIGV2ZW50LCB3YWl0X2hhbmRsZSwgKiwgbG9vcD1Ob25lKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKG92LCBldmVudCwgd2FpdF9oYW5kbGUsIGxvb3A9bG9vcCkKCiAgICAgICAgc2VsZi5fZG9uZV9jYWxsYmFjayA9IE5vbmUKCiAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiX1dhaXRDYW5jZWxGdXR1cmUgbXVzdCBub3QgYmUgY2FuY2VsbGVkIikKCiAgICBkZWYgc2V0X3Jlc3VsdChzZWxmLCByZXN1bHQpOgogICAgICAgIHN1cGVyKCkuc2V0X3Jlc3VsdChyZXN1bHQpCiAgICAgICAgaWYgc2VsZi5fZG9uZV9jYWxsYmFjayBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fZG9uZV9jYWxsYmFjayhzZWxmKQoKICAgIGRlZiBzZXRfZXhjZXB0aW9uKHNlbGYsIGV4Y2VwdGlvbik6CiAgICAgICAgc3VwZXIoKS5zZXRfZXhjZXB0aW9uKGV4Y2VwdGlvbikKICAgICAgICBpZiBzZWxmLl9kb25lX2NhbGxiYWNrIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9kb25lX2NhbGxiYWNrKHNlbGYpCgoKY2xhc3MgX1dhaXRIYW5kbGVGdXR1cmUoX0Jhc2VXYWl0SGFuZGxlRnV0dXJlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdiwgaGFuZGxlLCB3YWl0X2hhbmRsZSwgcHJvYWN0b3IsICosIGxvb3A9Tm9uZSk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhvdiwgaGFuZGxlLCB3YWl0X2hhbmRsZSwgbG9vcD1sb29wKQogICAgICAgIHNlbGYuX3Byb2FjdG9yID0gcHJvYWN0b3IKICAgICAgICBzZWxmLl91bnJlZ2lzdGVyX3Byb2FjdG9yID0gVHJ1ZQogICAgICAgIHNlbGYuX2V2ZW50ID0gX292ZXJsYXBwZWQuQ3JlYXRlRXZlbnQoTm9uZSwgVHJ1ZSwgRmFsc2UsIE5vbmUpCiAgICAgICAgc2VsZi5fZXZlbnRfZnV0ID0gTm9uZQoKICAgIGRlZiBfdW5yZWdpc3Rlcl93YWl0X2NiKHNlbGYsIGZ1dCk6CiAgICAgICAgaWYgc2VsZi5fZXZlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoc2VsZi5fZXZlbnQpCiAgICAgICAgICAgIHNlbGYuX2V2ZW50ID0gTm9uZQogICAgICAgICAgICBzZWxmLl9ldmVudF9mdXQgPSBOb25lCgogICAgICAgICMgSWYgdGhlIHdhaXQgd2FzIGNhbmNlbGxlZCwgdGhlIHdhaXQgbWF5IG5ldmVyIGJlIHNpZ25hbGxlZCwgc28KICAgICAgICAjIGl0J3MgcmVxdWlyZWQgdG8gdW5yZWdpc3RlciBpdC4gT3RoZXJ3aXNlLCBJb2NwUHJvYWN0b3IuY2xvc2UoKSB3aWxsCiAgICAgICAgIyB3YWl0IGZvcmV2ZXIgZm9yIGFuIGV2ZW50IHdoaWNoIHdpbGwgbmV2ZXIgY29tZS4KICAgICAgICAjCiAgICAgICAgIyBJZiB0aGUgSW9jcFByb2FjdG9yIGFscmVhZHkgcmVjZWl2ZWQgdGhlIGV2ZW50LCBpdCdzIHNhZmUgdG8gY2FsbAogICAgICAgICMgX3VucmVnaXN0ZXIoKSBiZWNhdXNlIHdlIGtlcHQgYSByZWZlcmVuY2UgdG8gdGhlIE92ZXJsYXBwZWQgb2JqZWN0CiAgICAgICAgIyB3aGljaCBpcyB1c2VkIGFzIGEgdW5pcXVlIGtleS4KICAgICAgICBzZWxmLl9wcm9hY3Rvci5fdW5yZWdpc3RlcihzZWxmLl9vdikKICAgICAgICBzZWxmLl9wcm9hY3RvciA9IE5vbmUKCiAgICAgICAgc3VwZXIoKS5fdW5yZWdpc3Rlcl93YWl0X2NiKGZ1dCkKCiAgICBkZWYgX3VucmVnaXN0ZXJfd2FpdChzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fcmVnaXN0ZXJlZDoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fcmVnaXN0ZXJlZCA9IEZhbHNlCgogICAgICAgIHdhaXRfaGFuZGxlID0gc2VsZi5fd2FpdF9oYW5kbGUKICAgICAgICBzZWxmLl93YWl0X2hhbmRsZSA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIF9vdmVybGFwcGVkLlVucmVnaXN0ZXJXYWl0RXgod2FpdF9oYW5kbGUsIHNlbGYuX2V2ZW50KQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yICE9IF9vdmVybGFwcGVkLkVSUk9SX0lPX1BFTkRJTkc6CiAgICAgICAgICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ0ZhaWxlZCB0byB1bnJlZ2lzdGVyIHRoZSB3YWl0IGhhbmRsZScsCiAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbic6IGV4YywKICAgICAgICAgICAgICAgICAgICAnZnV0dXJlJzogc2VsZiwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgICAgICAgICAgICAgY29udGV4dFsnc291cmNlX3RyYWNlYmFjayddID0gc2VsZi5fc291cmNlX3RyYWNlYmFjawogICAgICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnRleHQpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIyBFUlJPUl9JT19QRU5ESU5HIGlzIG5vdCBhbiBlcnJvciwgdGhlIHdhaXQgd2FzIHVucmVnaXN0ZXJlZAoKICAgICAgICBzZWxmLl9ldmVudF9mdXQgPSBzZWxmLl9wcm9hY3Rvci5fd2FpdF9jYW5jZWwoc2VsZi5fZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3VucmVnaXN0ZXJfd2FpdF9jYikKCgpjbGFzcyBQaXBlU2VydmVyKG9iamVjdCk6CiAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgYSBwaXBlIHNlcnZlci4KCiAgICBUaGlzIGlzIG11Y2ggbGlrZSBhIGJvdW5kLCBsaXN0ZW5pbmcgc29ja2V0LgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CiAgICAgICAgc2VsZi5fYWRkcmVzcyA9IGFkZHJlc3MKICAgICAgICBzZWxmLl9mcmVlX2luc3RhbmNlcyA9IHdlYWtyZWYuV2Vha1NldCgpCiAgICAgICAgIyBpbml0aWFsaXplIHRoZSBwaXBlIGF0dHJpYnV0ZSBiZWZvcmUgY2FsbGluZyBfc2VydmVyX3BpcGVfaGFuZGxlKCkKICAgICAgICAjIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCB0aGUgZGVzdHJ1Y3RvciBjYWxscwogICAgICAgICMgdGhlIGNsb3NlKCkgbWV0aG9kCiAgICAgICAgc2VsZi5fcGlwZSA9IE5vbmUKICAgICAgICBzZWxmLl9hY2NlcHRfcGlwZV9mdXR1cmUgPSBOb25lCiAgICAgICAgc2VsZi5fcGlwZSA9IHNlbGYuX3NlcnZlcl9waXBlX2hhbmRsZShUcnVlKQoKICAgIGRlZiBfZ2V0X3VuY29ubmVjdGVkX3BpcGUoc2VsZik6CiAgICAgICAgIyBDcmVhdGUgbmV3IGluc3RhbmNlIGFuZCByZXR1cm4gcHJldmlvdXMgb25lLiAgVGhpcyBlbnN1cmVzCiAgICAgICAgIyB0aGF0ICh1bnRpbCB0aGUgc2VydmVyIGlzIGNsb3NlZCkgdGhlcmUgaXMgYWx3YXlzIGF0IGxlYXN0CiAgICAgICAgIyBvbmUgcGlwZSBoYW5kbGUgZm9yIGFkZHJlc3MuICBUaGVyZWZvcmUgaWYgYSBjbGllbnQgYXR0ZW1wdAogICAgICAgICMgdG8gY29ubmVjdCBpdCB3aWxsIG5vdCBmYWlsIHdpdGggRmlsZU5vdEZvdW5kRXJyb3IuCiAgICAgICAgdG1wLCBzZWxmLl9waXBlID0gc2VsZi5fcGlwZSwgc2VsZi5fc2VydmVyX3BpcGVfaGFuZGxlKEZhbHNlKQogICAgICAgIHJldHVybiB0bXAKCiAgICBkZWYgX3NlcnZlcl9waXBlX2hhbmRsZShzZWxmLCBmaXJzdCk6CiAgICAgICAgIyBSZXR1cm4gYSB3cmFwcGVyIGZvciBhIG5ldyBwaXBlIGhhbmRsZS4KICAgICAgICBpZiBzZWxmLmNsb3NlZCgpOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGZsYWdzID0gX3dpbmFwaS5QSVBFX0FDQ0VTU19EVVBMRVggfCBfd2luYXBpLkZJTEVfRkxBR19PVkVSTEFQUEVECiAgICAgICAgaWYgZmlyc3Q6CiAgICAgICAgICAgIGZsYWdzIHw9IF93aW5hcGkuRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0UKICAgICAgICBoID0gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCiAgICAgICAgICAgIHNlbGYuX2FkZHJlc3MsIGZsYWdzLAogICAgICAgICAgICBfd2luYXBpLlBJUEVfVFlQRV9NRVNTQUdFIHwgX3dpbmFwaS5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAogICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKICAgICAgICAgICAgX3dpbmFwaS5QSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMsCiAgICAgICAgICAgIHdpbmRvd3NfdXRpbHMuQlVGU0laRSwgd2luZG93c191dGlscy5CVUZTSVpFLAogICAgICAgICAgICBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwpCiAgICAgICAgcGlwZSA9IHdpbmRvd3NfdXRpbHMuUGlwZUhhbmRsZShoKQogICAgICAgIHNlbGYuX2ZyZWVfaW5zdGFuY2VzLmFkZChwaXBlKQogICAgICAgIHJldHVybiBwaXBlCgogICAgZGVmIGNsb3NlZChzZWxmKToKICAgICAgICByZXR1cm4gKHNlbGYuX2FkZHJlc3MgaXMgTm9uZSkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fYWNjZXB0X3BpcGVfZnV0dXJlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9hY2NlcHRfcGlwZV9mdXR1cmUuY2FuY2VsKCkKICAgICAgICAgICAgc2VsZi5fYWNjZXB0X3BpcGVfZnV0dXJlID0gTm9uZQogICAgICAgICMgQ2xvc2UgYWxsIGluc3RhbmNlcyB3aGljaCBoYXZlIG5vdCBiZWVuIGNvbm5lY3RlZCB0byBieSBhIGNsaWVudC4KICAgICAgICBpZiBzZWxmLl9hZGRyZXNzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBmb3IgcGlwZSBpbiBzZWxmLl9mcmVlX2luc3RhbmNlczoKICAgICAgICAgICAgICAgIHBpcGUuY2xvc2UoKQogICAgICAgICAgICBzZWxmLl9waXBlID0gTm9uZQogICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gTm9uZQogICAgICAgICAgICBzZWxmLl9mcmVlX2luc3RhbmNlcy5jbGVhcigpCgogICAgX19kZWxfXyA9IGNsb3NlCgoKY2xhc3MgX1dpbmRvd3NTZWxlY3RvckV2ZW50TG9vcChzZWxlY3Rvcl9ldmVudHMuQmFzZVNlbGVjdG9yRXZlbnRMb29wKToKICAgICIiIldpbmRvd3MgdmVyc2lvbiBvZiBzZWxlY3RvciBldmVudCBsb29wLiIiIgoKCmNsYXNzIFByb2FjdG9yRXZlbnRMb29wKHByb2FjdG9yX2V2ZW50cy5CYXNlUHJvYWN0b3JFdmVudExvb3ApOgogICAgIiIiV2luZG93cyB2ZXJzaW9uIG9mIHByb2FjdG9yIGV2ZW50IGxvb3AgdXNpbmcgSU9DUC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvYWN0b3I9Tm9uZSk6CiAgICAgICAgaWYgcHJvYWN0b3IgaXMgTm9uZToKICAgICAgICAgICAgcHJvYWN0b3IgPSBJb2NwUHJvYWN0b3IoKQogICAgICAgIHN1cGVyKCkuX19pbml0X18ocHJvYWN0b3IpCgogICAgZGVmIHJ1bl9mb3JldmVyKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX3NlbGZfcmVhZGluZ19mdXR1cmUgaXMgTm9uZQogICAgICAgICAgICBzZWxmLmNhbGxfc29vbihzZWxmLl9sb29wX3NlbGZfcmVhZGluZykKICAgICAgICAgICAgc3VwZXIoKS5ydW5fZm9yZXZlcigpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgaWYgc2VsZi5fc2VsZl9yZWFkaW5nX2Z1dHVyZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIG92ID0gc2VsZi5fc2VsZl9yZWFkaW5nX2Z1dHVyZS5fb3YKICAgICAgICAgICAgICAgIHNlbGYuX3NlbGZfcmVhZGluZ19mdXR1cmUuY2FuY2VsKCkKICAgICAgICAgICAgICAgICMgc2VsZl9yZWFkaW5nX2Z1dHVyZSB3YXMganVzdCBjYW5jZWxsZWQgc28gaWYgaXQgaGFzbid0IGJlZW4KICAgICAgICAgICAgICAgICMgZmluaXNoZWQgeWV0LCBpdCBuZXZlciB3aWxsIGJlIChpdCdzIHBvc3NpYmxlIHRoYXQgaXQgaGFzCiAgICAgICAgICAgICAgICAjIGFscmVhZHkgZmluaXNoZWQgYW5kIGl0cyBjYWxsYmFjayBpcyB3YWl0aW5nIGluIHRoZSBxdWV1ZSwKICAgICAgICAgICAgICAgICMgd2hlcmUgaXQgY291bGQgc3RpbGwgaGFwcGVuIGlmIHRoZSBldmVudCBsb29wIGlzIHJlc3RhcnRlZCkuCiAgICAgICAgICAgICAgICAjIFVucmVnaXN0ZXIgaXQgb3RoZXJ3aXNlIElvY3BQcm9hY3Rvci5jbG9zZSB3aWxsIHdhaXQgZm9yIGl0CiAgICAgICAgICAgICAgICAjIGZvcmV2ZXIKICAgICAgICAgICAgICAgIGlmIG92IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3Byb2FjdG9yLl91bnJlZ2lzdGVyKG92KQogICAgICAgICAgICAgICAgc2VsZi5fc2VsZl9yZWFkaW5nX2Z1dHVyZSA9IE5vbmUKCiAgICBhc3luYyBkZWYgY3JlYXRlX3BpcGVfY29ubmVjdGlvbihzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBhZGRyZXNzKToKICAgICAgICBmID0gc2VsZi5fcHJvYWN0b3IuY29ubmVjdF9waXBlKGFkZHJlc3MpCiAgICAgICAgcGlwZSA9IGF3YWl0IGYKICAgICAgICBwcm90b2NvbCA9IHByb3RvY29sX2ZhY3RvcnkoKQogICAgICAgIHRyYW5zID0gc2VsZi5fbWFrZV9kdXBsZXhfcGlwZV90cmFuc3BvcnQocGlwZSwgcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT17J2FkZHInOiBhZGRyZXNzfSkKICAgICAgICByZXR1cm4gdHJhbnMsIHByb3RvY29sCgogICAgYXN5bmMgZGVmIHN0YXJ0X3NlcnZpbmdfcGlwZShzZWxmLCBwcm90b2NvbF9mYWN0b3J5LCBhZGRyZXNzKToKICAgICAgICBzZXJ2ZXIgPSBQaXBlU2VydmVyKGFkZHJlc3MpCgogICAgICAgIGRlZiBsb29wX2FjY2VwdF9waXBlKGY9Tm9uZSk6CiAgICAgICAgICAgIHBpcGUgPSBOb25lCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGY6CiAgICAgICAgICAgICAgICAgICAgcGlwZSA9IGYucmVzdWx0KCkKICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIuX2ZyZWVfaW5zdGFuY2VzLmRpc2NhcmQocGlwZSkKCiAgICAgICAgICAgICAgICAgICAgaWYgc2VydmVyLmNsb3NlZCgpOgogICAgICAgICAgICAgICAgICAgICAgICAjIEEgY2xpZW50IGNvbm5lY3RlZCBiZWZvcmUgdGhlIHNlcnZlciB3YXMgY2xvc2VkOgogICAgICAgICAgICAgICAgICAgICAgICAjIGRyb3AgdGhlIGNsaWVudCAoY2xvc2UgdGhlIHBpcGUpIGFuZCBleGl0CiAgICAgICAgICAgICAgICAgICAgICAgIHBpcGUuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wgPSBwcm90b2NvbF9mYWN0b3J5KCkKICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYWtlX2R1cGxleF9waXBlX3RyYW5zcG9ydCgKICAgICAgICAgICAgICAgICAgICAgICAgcGlwZSwgcHJvdG9jb2wsIGV4dHJhPXsnYWRkcic6IGFkZHJlc3N9KQoKICAgICAgICAgICAgICAgIHBpcGUgPSBzZXJ2ZXIuX2dldF91bmNvbm5lY3RlZF9waXBlKCkKICAgICAgICAgICAgICAgIGlmIHBpcGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgICAgICBmID0gc2VsZi5fcHJvYWN0b3IuYWNjZXB0X3BpcGUocGlwZSkKICAgICAgICAgICAgZXhjZXB0IEJyb2tlblBpcGVFcnJvcjoKICAgICAgICAgICAgICAgIGlmIHBpcGUgYW5kIHBpcGUuZmlsZW5vKCkgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgcGlwZS5jbG9zZSgpCiAgICAgICAgICAgICAgICBzZWxmLmNhbGxfc29vbihsb29wX2FjY2VwdF9waXBlKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICBpZiBwaXBlIGFuZCBwaXBlLmZpbGVubygpICE9IC0xOgogICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbF9leGNlcHRpb25faGFuZGxlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ1BpcGUgYWNjZXB0IGZhaWxlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlJzogcGlwZSwKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIHBpcGUuY2xvc2UoKQogICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9kZWJ1ZzoKICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQWNjZXB0IHBpcGUgZmFpbGVkIG9uIHBpcGUgJXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGUsIGV4Y19pbmZvPVRydWUpCiAgICAgICAgICAgICAgICBzZWxmLmNhbGxfc29vbihsb29wX2FjY2VwdF9waXBlKQogICAgICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgICAgIGlmIHBpcGU6CiAgICAgICAgICAgICAgICAgICAgcGlwZS5jbG9zZSgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZXJ2ZXIuX2FjY2VwdF9waXBlX2Z1dHVyZSA9IGYKICAgICAgICAgICAgICAgIGYuYWRkX2RvbmVfY2FsbGJhY2sobG9vcF9hY2NlcHRfcGlwZSkKCiAgICAgICAgc2VsZi5jYWxsX3Nvb24obG9vcF9hY2NlcHRfcGlwZSkKICAgICAgICByZXR1cm4gW3NlcnZlcl0KCiAgICBhc3luYyBkZWYgX21ha2Vfc3VicHJvY2Vzc190cmFuc3BvcnQoc2VsZiwgcHJvdG9jb2wsIGFyZ3MsIHNoZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgYnVmc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgd2FpdGVyID0gc2VsZi5jcmVhdGVfZnV0dXJlKCkKICAgICAgICB0cmFuc3AgPSBfV2luZG93c1N1YnByb2Nlc3NUcmFuc3BvcnQoc2VsZiwgcHJvdG9jb2wsIGFyZ3MsIHNoZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIGJ1ZnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlcj13YWl0ZXIsIGV4dHJhPWV4dHJhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF3YWl0IHdhaXRlcgogICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICB0cmFuc3AuY2xvc2UoKQogICAgICAgICAgICBhd2FpdCB0cmFuc3AuX3dhaXQoKQogICAgICAgICAgICByYWlzZQoKICAgICAgICByZXR1cm4gdHJhbnNwCgoKY2xhc3MgSW9jcFByb2FjdG9yOgogICAgIiIiUHJvYWN0b3IgaW1wbGVtZW50YXRpb24gdXNpbmcgSU9DUC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY29uY3VycmVuY3k9SU5GSU5JVEUpOgogICAgICAgIHNlbGYuX2xvb3AgPSBOb25lCiAgICAgICAgc2VsZi5fcmVzdWx0cyA9IFtdCiAgICAgICAgc2VsZi5faW9jcCA9IF9vdmVybGFwcGVkLkNyZWF0ZUlvQ29tcGxldGlvblBvcnQoCiAgICAgICAgICAgIF9vdmVybGFwcGVkLklOVkFMSURfSEFORExFX1ZBTFVFLCBOVUxMLCAwLCBjb25jdXJyZW5jeSkKICAgICAgICBzZWxmLl9jYWNoZSA9IHt9CiAgICAgICAgc2VsZi5fcmVnaXN0ZXJlZCA9IHdlYWtyZWYuV2Vha1NldCgpCiAgICAgICAgc2VsZi5fdW5yZWdpc3RlcmVkID0gW10KICAgICAgICBzZWxmLl9zdG9wcGVkX3NlcnZpbmcgPSB3ZWFrcmVmLldlYWtTZXQoKQoKICAgIGRlZiBfY2hlY2tfY2xvc2VkKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2lvY3AgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdJb2NwUHJvYWN0b3IgaXMgY2xvc2VkJykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaW5mbyA9IFsnb3ZlcmxhcHBlZCM9JXMnICUgbGVuKHNlbGYuX2NhY2hlKSwKICAgICAgICAgICAgICAgICdyZXN1bHQjPSVzJyAlIGxlbihzZWxmLl9yZXN1bHRzKV0KICAgICAgICBpZiBzZWxmLl9pb2NwIGlzIE5vbmU6CiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdjbG9zZWQnKQogICAgICAgIHJldHVybiAnPCVzICVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICIgIi5qb2luKGluZm8pKQoKICAgIGRlZiBzZXRfbG9vcChzZWxmLCBsb29wKToKICAgICAgICBzZWxmLl9sb29wID0gbG9vcAoKICAgIGRlZiBzZWxlY3Qoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICBpZiBub3Qgc2VsZi5fcmVzdWx0czoKICAgICAgICAgICAgc2VsZi5fcG9sbCh0aW1lb3V0KQogICAgICAgIHRtcCA9IHNlbGYuX3Jlc3VsdHMKICAgICAgICBzZWxmLl9yZXN1bHRzID0gW10KICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiB0bXAKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIE5lZWRlZCB0byBicmVhayBjeWNsZXMgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLgogICAgICAgICAgICB0bXAgPSBOb25lCgogICAgZGVmIF9yZXN1bHQoc2VsZiwgdmFsdWUpOgogICAgICAgIGZ1dCA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgZnV0LnNldF9yZXN1bHQodmFsdWUpCiAgICAgICAgcmV0dXJuIGZ1dAoKICAgIGRlZiByZWN2KHNlbGYsIGNvbm4sIG5ieXRlcywgZmxhZ3M9MCk6CiAgICAgICAgc2VsZi5fcmVnaXN0ZXJfd2l0aF9pb2NwKGNvbm4pCiAgICAgICAgb3YgPSBfb3ZlcmxhcHBlZC5PdmVybGFwcGVkKE5VTEwpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNvY2tldC5zb2NrZXQpOgogICAgICAgICAgICAgICAgb3YuV1NBUmVjdihjb25uLmZpbGVubygpLCBuYnl0ZXMsIGZsYWdzKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgb3YuUmVhZEZpbGUoY29ubi5maWxlbm8oKSwgbmJ5dGVzKQogICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHQoYicnKQoKICAgICAgICBkZWYgZmluaXNoX3JlY3YodHJhbnMsIGtleSwgb3YpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gb3YuZ2V0cmVzdWx0KCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yIGluIChfb3ZlcmxhcHBlZC5FUlJPUl9ORVROQU1FX0RFTEVURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vdmVybGFwcGVkLkVSUk9SX09QRVJBVElPTl9BQk9SVEVEKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uUmVzZXRFcnJvcigqZXhjLmFyZ3MpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCgogICAgICAgIHJldHVybiBzZWxmLl9yZWdpc3RlcihvdiwgY29ubiwgZmluaXNoX3JlY3YpCgogICAgZGVmIHJlY3ZfaW50byhzZWxmLCBjb25uLCBidWYsIGZsYWdzPTApOgogICAgICAgIHNlbGYuX3JlZ2lzdGVyX3dpdGhfaW9jcChjb25uKQogICAgICAgIG92ID0gX292ZXJsYXBwZWQuT3ZlcmxhcHBlZChOVUxMKQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzb2NrZXQuc29ja2V0KToKICAgICAgICAgICAgICAgIG92LldTQVJlY3ZJbnRvKGNvbm4uZmlsZW5vKCksIGJ1ZiwgZmxhZ3MpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBvdi5SZWFkRmlsZUludG8oY29ubi5maWxlbm8oKSwgYnVmKQogICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHQoMCkKCiAgICAgICAgZGVmIGZpbmlzaF9yZWN2KHRyYW5zLCBrZXksIG92KToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIG92LmdldHJlc3VsdCgpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgIGlmIGV4Yy53aW5lcnJvciBpbiAoX292ZXJsYXBwZWQuRVJST1JfTkVUTkFNRV9ERUxFVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3ZlcmxhcHBlZC5FUlJPUl9PUEVSQVRJT05fQUJPUlRFRCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblJlc2V0RXJyb3IoKmV4Yy5hcmdzKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZQoKICAgICAgICByZXR1cm4gc2VsZi5fcmVnaXN0ZXIob3YsIGNvbm4sIGZpbmlzaF9yZWN2KQoKICAgIGRlZiByZWN2ZnJvbShzZWxmLCBjb25uLCBuYnl0ZXMsIGZsYWdzPTApOgogICAgICAgIHNlbGYuX3JlZ2lzdGVyX3dpdGhfaW9jcChjb25uKQogICAgICAgIG92ID0gX292ZXJsYXBwZWQuT3ZlcmxhcHBlZChOVUxMKQogICAgICAgIHRyeToKICAgICAgICAgICAgb3YuV1NBUmVjdkZyb20oY29ubi5maWxlbm8oKSwgbmJ5dGVzLCBmbGFncykKICAgICAgICBleGNlcHQgQnJva2VuUGlwZUVycm9yOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0KChiJycsIE5vbmUpKQoKICAgICAgICBkZWYgZmluaXNoX3JlY3YodHJhbnMsIGtleSwgb3YpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gb3YuZ2V0cmVzdWx0KCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yIGluIChfb3ZlcmxhcHBlZC5FUlJPUl9ORVROQU1FX0RFTEVURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vdmVybGFwcGVkLkVSUk9SX09QRVJBVElPTl9BQk9SVEVEKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uUmVzZXRFcnJvcigqZXhjLmFyZ3MpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCgogICAgICAgIHJldHVybiBzZWxmLl9yZWdpc3RlcihvdiwgY29ubiwgZmluaXNoX3JlY3YpCgogICAgZGVmIHJlY3Zmcm9tX2ludG8oc2VsZiwgY29ubiwgYnVmLCBmbGFncz0wKToKICAgICAgICBzZWxmLl9yZWdpc3Rlcl93aXRoX2lvY3AoY29ubikKICAgICAgICBvdiA9IF9vdmVybGFwcGVkLk92ZXJsYXBwZWQoTlVMTCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG92LldTQVJlY3ZGcm9tSW50byhjb25uLmZpbGVubygpLCBidWYsIGZsYWdzKQogICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHQoKDAsIE5vbmUpKQoKICAgICAgICBkZWYgZmluaXNoX3JlY3YodHJhbnMsIGtleSwgb3YpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gb3YuZ2V0cmVzdWx0KCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yIGluIChfb3ZlcmxhcHBlZC5FUlJPUl9ORVROQU1FX0RFTEVURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vdmVybGFwcGVkLkVSUk9SX09QRVJBVElPTl9BQk9SVEVEKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uUmVzZXRFcnJvcigqZXhjLmFyZ3MpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCgogICAgICAgIHJldHVybiBzZWxmLl9yZWdpc3RlcihvdiwgY29ubiwgZmluaXNoX3JlY3YpCgogICAgZGVmIHNlbmR0byhzZWxmLCBjb25uLCBidWYsIGZsYWdzPTAsIGFkZHI9Tm9uZSk6CiAgICAgICAgc2VsZi5fcmVnaXN0ZXJfd2l0aF9pb2NwKGNvbm4pCiAgICAgICAgb3YgPSBfb3ZlcmxhcHBlZC5PdmVybGFwcGVkKE5VTEwpCgogICAgICAgIG92LldTQVNlbmRUbyhjb25uLmZpbGVubygpLCBidWYsIGZsYWdzLCBhZGRyKQoKICAgICAgICBkZWYgZmluaXNoX3NlbmQodHJhbnMsIGtleSwgb3YpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gb3YuZ2V0cmVzdWx0KCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yIGluIChfb3ZlcmxhcHBlZC5FUlJPUl9ORVROQU1FX0RFTEVURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vdmVybGFwcGVkLkVSUk9SX09QRVJBVElPTl9BQk9SVEVEKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uUmVzZXRFcnJvcigqZXhjLmFyZ3MpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCgogICAgICAgIHJldHVybiBzZWxmLl9yZWdpc3RlcihvdiwgY29ubiwgZmluaXNoX3NlbmQpCgogICAgZGVmIHNlbmQoc2VsZiwgY29ubiwgYnVmLCBmbGFncz0wKToKICAgICAgICBzZWxmLl9yZWdpc3Rlcl93aXRoX2lvY3AoY29ubikKICAgICAgICBvdiA9IF9vdmVybGFwcGVkLk92ZXJsYXBwZWQoTlVMTCkKICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNvY2tldC5zb2NrZXQpOgogICAgICAgICAgICBvdi5XU0FTZW5kKGNvbm4uZmlsZW5vKCksIGJ1ZiwgZmxhZ3MpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb3YuV3JpdGVGaWxlKGNvbm4uZmlsZW5vKCksIGJ1ZikKCiAgICAgICAgZGVmIGZpbmlzaF9zZW5kKHRyYW5zLCBrZXksIG92KToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIG92LmdldHJlc3VsdCgpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgIGlmIGV4Yy53aW5lcnJvciBpbiAoX292ZXJsYXBwZWQuRVJST1JfTkVUTkFNRV9ERUxFVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3ZlcmxhcHBlZC5FUlJPUl9PUEVSQVRJT05fQUJPUlRFRCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblJlc2V0RXJyb3IoKmV4Yy5hcmdzKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZQoKICAgICAgICByZXR1cm4gc2VsZi5fcmVnaXN0ZXIob3YsIGNvbm4sIGZpbmlzaF9zZW5kKQoKICAgIGRlZiBhY2NlcHQoc2VsZiwgbGlzdGVuZXIpOgogICAgICAgIHNlbGYuX3JlZ2lzdGVyX3dpdGhfaW9jcChsaXN0ZW5lcikKICAgICAgICBjb25uID0gc2VsZi5fZ2V0X2FjY2VwdF9zb2NrZXQobGlzdGVuZXIuZmFtaWx5KQogICAgICAgIG92ID0gX292ZXJsYXBwZWQuT3ZlcmxhcHBlZChOVUxMKQogICAgICAgIG92LkFjY2VwdEV4KGxpc3RlbmVyLmZpbGVubygpLCBjb25uLmZpbGVubygpKQoKICAgICAgICBkZWYgZmluaXNoX2FjY2VwdCh0cmFucywga2V5LCBvdik6CiAgICAgICAgICAgIG92LmdldHJlc3VsdCgpCiAgICAgICAgICAgICMgVXNlIFNPX1VQREFURV9BQ0NFUFRfQ09OVEVYVCBzbyBnZXRzb2NrbmFtZSgpIGV0YyB3b3JrLgogICAgICAgICAgICBidWYgPSBzdHJ1Y3QucGFjaygnQFAnLCBsaXN0ZW5lci5maWxlbm8oKSkKICAgICAgICAgICAgY29ubi5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX292ZXJsYXBwZWQuU09fVVBEQVRFX0FDQ0VQVF9DT05URVhULCBidWYpCiAgICAgICAgICAgIGNvbm4uc2V0dGltZW91dChsaXN0ZW5lci5nZXR0aW1lb3V0KCkpCiAgICAgICAgICAgIHJldHVybiBjb25uLCBjb25uLmdldHBlZXJuYW1lKCkKCiAgICAgICAgYXN5bmMgZGVmIGFjY2VwdF9jb3JvKGZ1dHVyZSwgY29ubik6CiAgICAgICAgICAgICMgQ29yb3V0aW5lIGNsb3NpbmcgdGhlIGFjY2VwdCBzb2NrZXQgaWYgdGhlIGZ1dHVyZSBpcyBjYW5jZWxsZWQKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYXdhaXQgZnV0dXJlCiAgICAgICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLkNhbmNlbGxlZEVycm9yOgogICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICAgICByYWlzZQoKICAgICAgICBmdXR1cmUgPSBzZWxmLl9yZWdpc3RlcihvdiwgbGlzdGVuZXIsIGZpbmlzaF9hY2NlcHQpCiAgICAgICAgY29ybyA9IGFjY2VwdF9jb3JvKGZ1dHVyZSwgY29ubikKICAgICAgICB0YXNrcy5lbnN1cmVfZnV0dXJlKGNvcm8sIGxvb3A9c2VsZi5fbG9vcCkKICAgICAgICByZXR1cm4gZnV0dXJlCgogICAgZGVmIGNvbm5lY3Qoc2VsZiwgY29ubiwgYWRkcmVzcyk6CiAgICAgICAgaWYgY29ubi50eXBlID09IHNvY2tldC5TT0NLX0RHUkFNOgogICAgICAgICAgICAjIFdTQUNvbm5lY3Qgd2lsbCBjb21wbGV0ZSBpbW1lZGlhdGVseSBmb3IgVURQIHNvY2tldHMgc28gd2UgZG9uJ3QKICAgICAgICAgICAgIyBuZWVkIHRvIHJlZ2lzdGVyIGFueSBJT0NQIG9wZXJhdGlvbgogICAgICAgICAgICBfb3ZlcmxhcHBlZC5XU0FDb25uZWN0KGNvbm4uZmlsZW5vKCksIGFkZHJlc3MpCiAgICAgICAgICAgIGZ1dCA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KE5vbmUpCiAgICAgICAgICAgIHJldHVybiBmdXQKCiAgICAgICAgc2VsZi5fcmVnaXN0ZXJfd2l0aF9pb2NwKGNvbm4pCiAgICAgICAgIyBUaGUgc29ja2V0IG5lZWRzIHRvIGJlIGxvY2FsbHkgYm91bmQgYmVmb3JlIHdlIGNhbGwgQ29ubmVjdEV4KCkuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBfb3ZlcmxhcHBlZC5CaW5kTG9jYWwoY29ubi5maWxlbm8oKSwgY29ubi5mYW1pbHkpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgaWYgZS53aW5lcnJvciAhPSBlcnJuby5XU0FFSU5WQUw6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAjIFByb2JhYmx5IGFscmVhZHkgbG9jYWxseSBib3VuZDsgY2hlY2sgdXNpbmcgZ2V0c29ja25hbWUoKS4KICAgICAgICAgICAgaWYgY29ubi5nZXRzb2NrbmFtZSgpWzFdID09IDA6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIG92ID0gX292ZXJsYXBwZWQuT3ZlcmxhcHBlZChOVUxMKQogICAgICAgIG92LkNvbm5lY3RFeChjb25uLmZpbGVubygpLCBhZGRyZXNzKQoKICAgICAgICBkZWYgZmluaXNoX2Nvbm5lY3QodHJhbnMsIGtleSwgb3YpOgogICAgICAgICAgICBvdi5nZXRyZXN1bHQoKQogICAgICAgICAgICAjIFVzZSBTT19VUERBVEVfQ09OTkVDVF9DT05URVhUIHNvIGdldHNvY2tuYW1lKCkgZXRjIHdvcmsuCiAgICAgICAgICAgIGNvbm4uc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vdmVybGFwcGVkLlNPX1VQREFURV9DT05ORUNUX0NPTlRFWFQsIDApCiAgICAgICAgICAgIHJldHVybiBjb25uCgogICAgICAgIHJldHVybiBzZWxmLl9yZWdpc3RlcihvdiwgY29ubiwgZmluaXNoX2Nvbm5lY3QpCgogICAgZGVmIHNlbmRmaWxlKHNlbGYsIHNvY2ssIGZpbGUsIG9mZnNldCwgY291bnQpOgogICAgICAgIHNlbGYuX3JlZ2lzdGVyX3dpdGhfaW9jcChzb2NrKQogICAgICAgIG92ID0gX292ZXJsYXBwZWQuT3ZlcmxhcHBlZChOVUxMKQogICAgICAgIG9mZnNldF9sb3cgPSBvZmZzZXQgJiAweGZmZmZfZmZmZgogICAgICAgIG9mZnNldF9oaWdoID0gKG9mZnNldCA+PiAzMikgJiAweGZmZmZfZmZmZgogICAgICAgIG92LlRyYW5zbWl0RmlsZShzb2NrLmZpbGVubygpLAogICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuZ2V0X29zZmhhbmRsZShmaWxlLmZpbGVubygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X2xvdywgb2Zmc2V0X2hpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCAwLCAwKQoKICAgICAgICBkZWYgZmluaXNoX3NlbmRmaWxlKHRyYW5zLCBrZXksIG92KToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIG92LmdldHJlc3VsdCgpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgIGlmIGV4Yy53aW5lcnJvciBpbiAoX292ZXJsYXBwZWQuRVJST1JfTkVUTkFNRV9ERUxFVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3ZlcmxhcHBlZC5FUlJPUl9PUEVSQVRJT05fQUJPUlRFRCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblJlc2V0RXJyb3IoKmV4Yy5hcmdzKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIHJldHVybiBzZWxmLl9yZWdpc3Rlcihvdiwgc29jaywgZmluaXNoX3NlbmRmaWxlKQoKICAgIGRlZiBhY2NlcHRfcGlwZShzZWxmLCBwaXBlKToKICAgICAgICBzZWxmLl9yZWdpc3Rlcl93aXRoX2lvY3AocGlwZSkKICAgICAgICBvdiA9IF9vdmVybGFwcGVkLk92ZXJsYXBwZWQoTlVMTCkKICAgICAgICBjb25uZWN0ZWQgPSBvdi5Db25uZWN0TmFtZWRQaXBlKHBpcGUuZmlsZW5vKCkpCgogICAgICAgIGlmIGNvbm5lY3RlZDoKICAgICAgICAgICAgIyBDb25uZWN0TmFtZVBpcGUoKSBmYWlsZWQgd2l0aCBFUlJPUl9QSVBFX0NPTk5FQ1RFRCB3aGljaCBtZWFucwogICAgICAgICAgICAjIHRoYXQgdGhlIHBpcGUgaXMgY29ubmVjdGVkLiBUaGVyZSBpcyBubyBuZWVkIHRvIHdhaXQgZm9yIHRoZQogICAgICAgICAgICAjIGNvbXBsZXRpb24gb2YgdGhlIGNvbm5lY3Rpb24uCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHQocGlwZSkKCiAgICAgICAgZGVmIGZpbmlzaF9hY2NlcHRfcGlwZSh0cmFucywga2V5LCBvdik6CiAgICAgICAgICAgIG92LmdldHJlc3VsdCgpCiAgICAgICAgICAgIHJldHVybiBwaXBlCgogICAgICAgIHJldHVybiBzZWxmLl9yZWdpc3RlcihvdiwgcGlwZSwgZmluaXNoX2FjY2VwdF9waXBlKQoKICAgIGFzeW5jIGRlZiBjb25uZWN0X3BpcGUoc2VsZiwgYWRkcmVzcyk6CiAgICAgICAgZGVsYXkgPSBDT05ORUNUX1BJUEVfSU5JVF9ERUxBWQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICMgVW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyB3YXkgdG8gZG8gYW4gb3ZlcmxhcHBlZCBjb25uZWN0IHRvCiAgICAgICAgICAgICMgYSBwaXBlLiAgQ2FsbCBDcmVhdGVGaWxlKCkgaW4gYSBsb29wIHVudGlsIGl0IGRvZXNuJ3QgZmFpbCB3aXRoCiAgICAgICAgICAgICMgRVJST1JfUElQRV9CVVNZLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBoYW5kbGUgPSBfb3ZlcmxhcHBlZC5Db25uZWN0UGlwZShhZGRyZXNzKQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yICE9IF9vdmVybGFwcGVkLkVSUk9SX1BJUEVfQlVTWToKICAgICAgICAgICAgICAgICAgICByYWlzZQoKICAgICAgICAgICAgIyBDb25uZWN0UGlwZSgpIGZhaWxlZCB3aXRoIEVSUk9SX1BJUEVfQlVTWTogcmV0cnkgbGF0ZXIKICAgICAgICAgICAgZGVsYXkgPSBtaW4oZGVsYXkgKiAyLCBDT05ORUNUX1BJUEVfTUFYX0RFTEFZKQogICAgICAgICAgICBhd2FpdCB0YXNrcy5zbGVlcChkZWxheSkKCiAgICAgICAgcmV0dXJuIHdpbmRvd3NfdXRpbHMuUGlwZUhhbmRsZShoYW5kbGUpCgogICAgZGVmIHdhaXRfZm9yX2hhbmRsZShzZWxmLCBoYW5kbGUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIiIiV2FpdCBmb3IgYSBoYW5kbGUuCgogICAgICAgIFJldHVybiBhIEZ1dHVyZSBvYmplY3QuIFRoZSByZXN1bHQgb2YgdGhlIGZ1dHVyZSBpcyBUcnVlIGlmIHRoZSB3YWl0CiAgICAgICAgY29tcGxldGVkLCBvciBGYWxzZSBpZiB0aGUgd2FpdCBkaWQgbm90IGNvbXBsZXRlIChvbiB0aW1lb3V0KS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fd2FpdF9mb3JfaGFuZGxlKGhhbmRsZSwgdGltZW91dCwgRmFsc2UpCgogICAgZGVmIF93YWl0X2NhbmNlbChzZWxmLCBldmVudCwgZG9uZV9jYWxsYmFjayk6CiAgICAgICAgZnV0ID0gc2VsZi5fd2FpdF9mb3JfaGFuZGxlKGV2ZW50LCBOb25lLCBUcnVlKQogICAgICAgICMgYWRkX2RvbmVfY2FsbGJhY2soKSBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIHRoZSB3YWl0IG1heSBvbmx5IGNvbXBsZXRlCiAgICAgICAgIyBpbiBJb2NwUHJvYWN0b3IuY2xvc2UoKSwgd2hpbGUgdGhlIGV2ZW50IGxvb3AgaXMgbm90IHJ1bm5pbmcuCiAgICAgICAgZnV0Ll9kb25lX2NhbGxiYWNrID0gZG9uZV9jYWxsYmFjawogICAgICAgIHJldHVybiBmdXQKCiAgICBkZWYgX3dhaXRfZm9yX2hhbmRsZShzZWxmLCBoYW5kbGUsIHRpbWVvdXQsIF9pc19jYW5jZWwpOgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCgogICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgbXMgPSBfd2luYXBpLklORklOSVRFCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBSZWdpc3RlcldhaXRGb3JTaW5nbGVPYmplY3QoKSBoYXMgYSByZXNvbHV0aW9uIG9mIDEgbWlsbGlzZWNvbmQsCiAgICAgICAgICAgICMgcm91bmQgYXdheSBmcm9tIHplcm8gdG8gd2FpdCAqYXQgbGVhc3QqIHRpbWVvdXQgc2Vjb25kcy4KICAgICAgICAgICAgbXMgPSBtYXRoLmNlaWwodGltZW91dCAqIDFlMykKCiAgICAgICAgIyBXZSBvbmx5IGNyZWF0ZSBvdiBzbyB3ZSBjYW4gdXNlIG92LmFkZHJlc3MgYXMgYSBrZXkgZm9yIHRoZSBjYWNoZS4KICAgICAgICBvdiA9IF9vdmVybGFwcGVkLk92ZXJsYXBwZWQoTlVMTCkKICAgICAgICB3YWl0X2hhbmRsZSA9IF9vdmVybGFwcGVkLlJlZ2lzdGVyV2FpdFdpdGhRdWV1ZSgKICAgICAgICAgICAgaGFuZGxlLCBzZWxmLl9pb2NwLCBvdi5hZGRyZXNzLCBtcykKICAgICAgICBpZiBfaXNfY2FuY2VsOgogICAgICAgICAgICBmID0gX1dhaXRDYW5jZWxGdXR1cmUob3YsIGhhbmRsZSwgd2FpdF9oYW5kbGUsIGxvb3A9c2VsZi5fbG9vcCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBmID0gX1dhaXRIYW5kbGVGdXR1cmUob3YsIGhhbmRsZSwgd2FpdF9oYW5kbGUsIHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYuX2xvb3ApCiAgICAgICAgaWYgZi5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgZGVsIGYuX3NvdXJjZV90cmFjZWJhY2tbLTFdCgogICAgICAgIGRlZiBmaW5pc2hfd2FpdF9mb3JfaGFuZGxlKHRyYW5zLCBrZXksIG92KToKICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBzZWNvbmQgd2FpdCBtZWFucyB0aGF0IHdlIHNob3VsZCBvbmx5IHVzZQogICAgICAgICAgICAjIHRoaXMgd2l0aCBoYW5kbGVzIHR5cGVzIHdoZXJlIGEgc3VjY2Vzc2Z1bCB3YWl0IGhhcyBubwogICAgICAgICAgICAjIGVmZmVjdC4gIFNvIGV2ZW50cyBvciBwcm9jZXNzZXMgYXJlIGFsbCByaWdodCwgYnV0IGxvY2tzCiAgICAgICAgICAgICMgb3Igc2VtYXBob3JlcyBhcmUgbm90LiAgQWxzbyBub3RlIGlmIHRoZSBoYW5kbGUgaXMKICAgICAgICAgICAgIyBzaWduYWxsZWQgYW5kIHRoZW4gcXVpY2tseSByZXNldCwgdGhlbiB3ZSBtYXkgcmV0dXJuCiAgICAgICAgICAgICMgRmFsc2UgZXZlbiB0aG91Z2ggd2UgaGF2ZSBub3QgdGltZWQgb3V0LgogICAgICAgICAgICByZXR1cm4gZi5fcG9sbCgpCgogICAgICAgIHNlbGYuX2NhY2hlW292LmFkZHJlc3NdID0gKGYsIG92LCAwLCBmaW5pc2hfd2FpdF9mb3JfaGFuZGxlKQogICAgICAgIHJldHVybiBmCgogICAgZGVmIF9yZWdpc3Rlcl93aXRoX2lvY3Aoc2VsZiwgb2JqKToKICAgICAgICAjIFRvIGdldCBub3RpZmljYXRpb25zIG9mIGZpbmlzaGVkIG9wcyBvbiB0aGlzIG9iamVjdHMgc2VudCB0byB0aGUKICAgICAgICAjIGNvbXBsZXRpb24gcG9ydCwgd2VyZSBtdXN0IHJlZ2lzdGVyIHRoZSBoYW5kbGUuCiAgICAgICAgaWYgb2JqIG5vdCBpbiBzZWxmLl9yZWdpc3RlcmVkOgogICAgICAgICAgICBzZWxmLl9yZWdpc3RlcmVkLmFkZChvYmopCiAgICAgICAgICAgIF9vdmVybGFwcGVkLkNyZWF0ZUlvQ29tcGxldGlvblBvcnQob2JqLmZpbGVubygpLCBzZWxmLl9pb2NwLCAwLCAwKQogICAgICAgICAgICAjIFhYWCBXZSBjb3VsZCBhbHNvIHVzZSBTZXRGaWxlQ29tcGxldGlvbk5vdGlmaWNhdGlvbk1vZGVzKCkKICAgICAgICAgICAgIyB0byBhdm9pZCBzZW5kaW5nIG5vdGlmaWNhdGlvbnMgdG8gY29tcGxldGlvbiBwb3J0IG9mIG9wcwogICAgICAgICAgICAjIHRoYXQgc3VjY2VlZCBpbW1lZGlhdGVseS4KCiAgICBkZWYgX3JlZ2lzdGVyKHNlbGYsIG92LCBvYmosIGNhbGxiYWNrKToKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQoKICAgICAgICAjIFJldHVybiBhIGZ1dHVyZSB3aGljaCB3aWxsIGJlIHNldCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlCiAgICAgICAgIyBvcGVyYXRpb24gd2hlbiBpdCBjb21wbGV0ZXMuICBUaGUgZnV0dXJlJ3MgdmFsdWUgaXMgYWN0dWFsbHkKICAgICAgICAjIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBjYWxsYmFjaygpLgogICAgICAgIGYgPSBfT3ZlcmxhcHBlZEZ1dHVyZShvdiwgbG9vcD1zZWxmLl9sb29wKQogICAgICAgIGlmIGYuX3NvdXJjZV90cmFjZWJhY2s6CiAgICAgICAgICAgIGRlbCBmLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQogICAgICAgIGlmIG5vdCBvdi5wZW5kaW5nOgogICAgICAgICAgICAjIFRoZSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZCwgc28gbm8gbmVlZCB0byBwb3N0cG9uZSB0aGUKICAgICAgICAgICAgIyB3b3JrLiAgV2UgY2Fubm90IHRha2UgdGhpcyBzaG9ydCBjdXQgaWYgd2UgbmVlZCB0aGUKICAgICAgICAgICAgIyBOdW1iZXJPZkJ5dGVzLCBDb21wbGV0aW9uS2V5IHZhbHVlcyByZXR1cm5lZCBieQogICAgICAgICAgICAjIFBvc3RRdWV1ZWRDb21wbGV0aW9uU3RhdHVzKCkuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2soTm9uZSwgTm9uZSwgb3YpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICBmLnNldF9leGNlcHRpb24oZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGYuc2V0X3Jlc3VsdCh2YWx1ZSkKICAgICAgICAgICAgIyBFdmVuIGlmIEdldE92ZXJsYXBwZWRSZXN1bHQoKSB3YXMgY2FsbGVkLCB3ZSBoYXZlIHRvIHdhaXQgZm9yIHRoZQogICAgICAgICAgICAjIG5vdGlmaWNhdGlvbiBvZiB0aGUgY29tcGxldGlvbiBpbiBHZXRRdWV1ZWRDb21wbGV0aW9uU3RhdHVzKCkuCiAgICAgICAgICAgICMgUmVnaXN0ZXIgdGhlIG92ZXJsYXBwZWQgb3BlcmF0aW9uIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlCiAgICAgICAgICAgICMgT1ZFUkxBUFBFRCBvYmplY3QsIG90aGVyd2lzZSB0aGUgbWVtb3J5IGlzIGZyZWVkIGFuZCBXaW5kb3dzIG1heQogICAgICAgICAgICAjIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkuCgogICAgICAgICMgUmVnaXN0ZXIgdGhlIG92ZXJsYXBwZWQgb3BlcmF0aW9uIGZvciBsYXRlci4gIE5vdGUgdGhhdAogICAgICAgICMgd2Ugb25seSBzdG9yZSBvYmogdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIGdhcmJhZ2UKICAgICAgICAjIGNvbGxlY3RlZCB0b28gZWFybHkuCiAgICAgICAgc2VsZi5fY2FjaGVbb3YuYWRkcmVzc10gPSAoZiwgb3YsIG9iaiwgY2FsbGJhY2spCiAgICAgICAgcmV0dXJuIGYKCiAgICBkZWYgX3VucmVnaXN0ZXIoc2VsZiwgb3YpOgogICAgICAgICIiIlVucmVnaXN0ZXIgYW4gb3ZlcmxhcHBlZCBvYmplY3QuCgogICAgICAgIENhbGwgdGhpcyBtZXRob2Qgd2hlbiBpdHMgZnV0dXJlIGhhcyBiZWVuIGNhbmNlbGxlZC4gVGhlIGV2ZW50IGNhbgogICAgICAgIGFscmVhZHkgYmUgc2lnbmFsbGVkIChwZW5kaW5nIGluIHRoZSBwcm9hY3RvciBldmVudCBxdWV1ZSkuIEl0IGlzIGFsc28KICAgICAgICBzYWZlIGlmIHRoZSBldmVudCBpcyBuZXZlciBzaWduYWxsZWQgKGJlY2F1c2UgaXQgd2FzIGNhbmNlbGxlZCkuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICBzZWxmLl91bnJlZ2lzdGVyZWQuYXBwZW5kKG92KQoKICAgIGRlZiBfZ2V0X2FjY2VwdF9zb2NrZXQoc2VsZiwgZmFtaWx5KToKICAgICAgICBzID0gc29ja2V0LnNvY2tldChmYW1pbHkpCiAgICAgICAgcy5zZXR0aW1lb3V0KDApCiAgICAgICAgcmV0dXJuIHMKCiAgICBkZWYgX3BvbGwoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgIG1zID0gSU5GSU5JVEUKICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSB0aW1lb3V0IikKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEdldFF1ZXVlZENvbXBsZXRpb25TdGF0dXMoKSBoYXMgYSByZXNvbHV0aW9uIG9mIDEgbWlsbGlzZWNvbmQsCiAgICAgICAgICAgICMgcm91bmQgYXdheSBmcm9tIHplcm8gdG8gd2FpdCAqYXQgbGVhc3QqIHRpbWVvdXQgc2Vjb25kcy4KICAgICAgICAgICAgbXMgPSBtYXRoLmNlaWwodGltZW91dCAqIDFlMykKICAgICAgICAgICAgaWYgbXMgPj0gSU5GSU5JVEU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aW1lb3V0IHRvbyBiaWciKQoKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBzdGF0dXMgPSBfb3ZlcmxhcHBlZC5HZXRRdWV1ZWRDb21wbGV0aW9uU3RhdHVzKHNlbGYuX2lvY3AsIG1zKQogICAgICAgICAgICBpZiBzdGF0dXMgaXMgTm9uZToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIG1zID0gMAoKICAgICAgICAgICAgZXJyLCB0cmFuc2ZlcnJlZCwga2V5LCBhZGRyZXNzID0gc3RhdHVzCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGYsIG92LCBvYmosIGNhbGxiYWNrID0gc2VsZi5fY2FjaGUucG9wKGFkZHJlc3MpCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAoJ0dldFF1ZXVlZENvbXBsZXRpb25TdGF0dXMoKSByZXR1cm5lZCBhbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkIGV2ZW50JyksCiAgICAgICAgICAgICAgICAgICAgICAgICdzdGF0dXMnOiAoJ2Vycj0lcyB0cmFuc2ZlcnJlZD0lcyBrZXk9JSN4IGFkZHJlc3M9JSN4JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGVyciwgdHJhbnNmZXJyZWQsIGtleSwgYWRkcmVzcykpLAogICAgICAgICAgICAgICAgICAgIH0pCgogICAgICAgICAgICAgICAgIyBrZXkgaXMgZWl0aGVyIHplcm8sIG9yIGl0IGlzIHVzZWQgdG8gcmV0dXJuIGEgcGlwZQogICAgICAgICAgICAgICAgIyBoYW5kbGUgd2hpY2ggc2hvdWxkIGJlIGNsb3NlZCB0byBhdm9pZCBhIGxlYWsuCiAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluICgwLCBfb3ZlcmxhcHBlZC5JTlZBTElEX0hBTkRMRV9WQUxVRSk6CiAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShrZXkpCiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgaWYgb2JqIGluIHNlbGYuX3N0b3BwZWRfc2VydmluZzoKICAgICAgICAgICAgICAgIGYuY2FuY2VsKCkKICAgICAgICAgICAgIyBEb24ndCBjYWxsIHRoZSBjYWxsYmFjayBpZiBfcmVnaXN0ZXIoKSBhbHJlYWR5IHJlYWQgdGhlIHJlc3VsdCBvcgogICAgICAgICAgICAjIGlmIHRoZSBvdmVybGFwcGVkIGhhcyBiZWVuIGNhbmNlbGxlZAogICAgICAgICAgICBlbGlmIG5vdCBmLmRvbmUoKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrKHRyYW5zZmVycmVkLCBrZXksIG92KQogICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICBmLnNldF9leGNlcHRpb24oZSkKICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHRzLmFwcGVuZChmKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBmLnNldF9yZXN1bHQodmFsdWUpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0cy5hcHBlbmQoZikKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgZiA9IE5vbmUKCiAgICAgICAgIyBSZW1vdmUgdW5yZWdpc3RlcmVkIGZ1dHVyZXMKICAgICAgICBmb3Igb3YgaW4gc2VsZi5fdW5yZWdpc3RlcmVkOgogICAgICAgICAgICBzZWxmLl9jYWNoZS5wb3Aob3YuYWRkcmVzcywgTm9uZSkKICAgICAgICBzZWxmLl91bnJlZ2lzdGVyZWQuY2xlYXIoKQoKICAgIGRlZiBfc3RvcF9zZXJ2aW5nKHNlbGYsIG9iaik6CiAgICAgICAgIyBvYmogaXMgYSBzb2NrZXQgb3IgcGlwZSBoYW5kbGUuICBJdCB3aWxsIGJlIGNsb3NlZCBpbgogICAgICAgICMgQmFzZVByb2FjdG9yRXZlbnRMb29wLl9zdG9wX3NlcnZpbmcoKSB3aGljaCB3aWxsIG1ha2UgYW55CiAgICAgICAgIyBwZW5kaW5nIG9wZXJhdGlvbnMgZmFpbCBxdWlja2x5LgogICAgICAgIHNlbGYuX3N0b3BwZWRfc2VydmluZy5hZGQob2JqKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiBzZWxmLl9pb2NwIGlzIE5vbmU6CiAgICAgICAgICAgICMgYWxyZWFkeSBjbG9zZWQKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgQ2FuY2VsIHJlbWFpbmluZyByZWdpc3RlcmVkIG9wZXJhdGlvbnMuCiAgICAgICAgZm9yIGZ1dCwgb3YsIG9iaiwgY2FsbGJhY2sgaW4gbGlzdChzZWxmLl9jYWNoZS52YWx1ZXMoKSk6CiAgICAgICAgICAgIGlmIGZ1dC5jYW5jZWxsZWQoKToKICAgICAgICAgICAgICAgICMgTm90aGluZyB0byBkbyB3aXRoIGNhbmNlbGxlZCBmdXR1cmVzCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmdXQsIF9XYWl0Q2FuY2VsRnV0dXJlKToKICAgICAgICAgICAgICAgICMgX1dhaXRDYW5jZWxGdXR1cmUgbXVzdCBub3QgYmUgY2FuY2VsbGVkCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZnV0LmNhbmNlbCgpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fbG9vcCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogJ0NhbmNlbGxpbmcgYSBmdXR1cmUgZmFpbGVkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24nOiBleGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnV0dXJlJzogZnV0LAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZ1dC5fc291cmNlX3RyYWNlYmFjazoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRbJ3NvdXJjZV90cmFjZWJhY2snXSA9IGZ1dC5fc291cmNlX3RyYWNlYmFjawogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb29wLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoY29udGV4dCkKCiAgICAgICAgIyBXYWl0IHVudGlsIGFsbCBjYW5jZWxsZWQgb3ZlcmxhcHBlZCBjb21wbGV0ZTogZG9uJ3QgZXhpdCB3aXRoIHJ1bm5pbmcKICAgICAgICAjIG92ZXJsYXBwZWQgdG8gcHJldmVudCBhIGNyYXNoLiBEaXNwbGF5IHByb2dyZXNzIGV2ZXJ5IHNlY29uZCBpZiB0aGUKICAgICAgICAjIGxvb3AgaXMgc3RpbGwgcnVubmluZy4KICAgICAgICBtc2dfdXBkYXRlID0gMS4wCiAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKICAgICAgICBuZXh0X21zZyA9IHN0YXJ0X3RpbWUgKyBtc2dfdXBkYXRlCiAgICAgICAgd2hpbGUgc2VsZi5fY2FjaGU6CiAgICAgICAgICAgIGlmIG5leHRfbXNnIDw9IHRpbWUubW9ub3RvbmljKCk6CiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJyVyIGlzIHJ1bm5pbmcgYWZ0ZXIgY2xvc2luZyBmb3IgJS4xZiBzZWNvbmRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCB0aW1lLm1vbm90b25pYygpIC0gc3RhcnRfdGltZSkKICAgICAgICAgICAgICAgIG5leHRfbXNnID0gdGltZS5tb25vdG9uaWMoKSArIG1zZ191cGRhdGUKCiAgICAgICAgICAgICMgaGFuZGxlIGEgZmV3IGV2ZW50cywgb3IgdGltZW91dAogICAgICAgICAgICBzZWxmLl9wb2xsKG1zZ191cGRhdGUpCgogICAgICAgIHNlbGYuX3Jlc3VsdHMgPSBbXQoKICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKHNlbGYuX2lvY3ApCiAgICAgICAgc2VsZi5faW9jcCA9IE5vbmUKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBzZWxmLmNsb3NlKCkKCgpjbGFzcyBfV2luZG93c1N1YnByb2Nlc3NUcmFuc3BvcnQoYmFzZV9zdWJwcm9jZXNzLkJhc2VTdWJwcm9jZXNzVHJhbnNwb3J0KToKCiAgICBkZWYgX3N0YXJ0KHNlbGYsIGFyZ3MsIHNoZWxsLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIGJ1ZnNpemUsICoqa3dhcmdzKToKICAgICAgICBzZWxmLl9wcm9jID0gd2luZG93c191dGlscy5Qb3BlbigKICAgICAgICAgICAgYXJncywgc2hlbGw9c2hlbGwsIHN0ZGluPXN0ZGluLCBzdGRvdXQ9c3Rkb3V0LCBzdGRlcnI9c3RkZXJyLAogICAgICAgICAgICBidWZzaXplPWJ1ZnNpemUsICoqa3dhcmdzKQoKICAgICAgICBkZWYgY2FsbGJhY2soZik6CiAgICAgICAgICAgIHJldHVybmNvZGUgPSBzZWxmLl9wcm9jLnBvbGwoKQogICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2V4aXRlZChyZXR1cm5jb2RlKQoKICAgICAgICBmID0gc2VsZi5fbG9vcC5fcHJvYWN0b3Iud2FpdF9mb3JfaGFuZGxlKGludChzZWxmLl9wcm9jLl9oYW5kbGUpKQogICAgICAgIGYuYWRkX2RvbmVfY2FsbGJhY2soY2FsbGJhY2spCgoKU2VsZWN0b3JFdmVudExvb3AgPSBfV2luZG93c1NlbGVjdG9yRXZlbnRMb29wCgoKY2xhc3MgV2luZG93c1NlbGVjdG9yRXZlbnRMb29wUG9saWN5KGV2ZW50cy5CYXNlRGVmYXVsdEV2ZW50TG9vcFBvbGljeSk6CiAgICBfbG9vcF9mYWN0b3J5ID0gU2VsZWN0b3JFdmVudExvb3AKCgpjbGFzcyBXaW5kb3dzUHJvYWN0b3JFdmVudExvb3BQb2xpY3koZXZlbnRzLkJhc2VEZWZhdWx0RXZlbnRMb29wUG9saWN5KToKICAgIF9sb29wX2ZhY3RvcnkgPSBQcm9hY3RvckV2ZW50TG9vcAoKCkRlZmF1bHRFdmVudExvb3BQb2xpY3kgPSBXaW5kb3dzUHJvYWN0b3JFdmVudExvb3BQb2xpY3kKUEsDBBQAAAAAAAIgo1ZWyENDxBMAAMQTAAAYAAAAYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5IiIiVmFyaW91cyBXaW5kb3dzIHNwZWNpZmljIGJpdHMgYW5kIHBpZWNlcy4iIiIKCmltcG9ydCBzeXMKCmlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOiAgIyBwcmFnbWE6IG5vIGNvdmVyCiAgICByYWlzZSBJbXBvcnRFcnJvcignd2luMzIgb25seScpCgppbXBvcnQgX3dpbmFwaQppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCBtc3ZjcnQKaW1wb3J0IG9zCmltcG9ydCBzdWJwcm9jZXNzCmltcG9ydCB0ZW1wZmlsZQppbXBvcnQgd2FybmluZ3MKCgpfX2FsbF9fID0gJ3BpcGUnLCAnUG9wZW4nLCAnUElQRScsICdQaXBlSGFuZGxlJwoKCiMgQ29uc3RhbnRzL2dsb2JhbHMKCgpCVUZTSVpFID0gODE5MgpQSVBFID0gc3VicHJvY2Vzcy5QSVBFClNURE9VVCA9IHN1YnByb2Nlc3MuU1RET1VUCl9tbWFwX2NvdW50ZXIgPSBpdGVydG9vbHMuY291bnQoKQoKCiMgUmVwbGFjZW1lbnQgZm9yIG9zLnBpcGUoKSB1c2luZyBoYW5kbGVzIGluc3RlYWQgb2YgZmRzCgoKZGVmIHBpcGUoKiwgZHVwbGV4PUZhbHNlLCBvdmVybGFwcGVkPShUcnVlLCBUcnVlKSwgYnVmc2l6ZT1CVUZTSVpFKToKICAgICIiIkxpa2Ugb3MucGlwZSgpIGJ1dCB3aXRoIG92ZXJsYXBwZWQgc3VwcG9ydCBhbmQgdXNpbmcgaGFuZGxlcyBub3QgZmRzLiIiIgogICAgYWRkcmVzcyA9IHRlbXBmaWxlLm1rdGVtcCgKICAgICAgICBwcmVmaXg9cidcXC5ccGlwZVxweXRob24tcGlwZS17OmR9LXs6ZH0tJy5mb3JtYXQoCiAgICAgICAgICAgIG9zLmdldHBpZCgpLCBuZXh0KF9tbWFwX2NvdW50ZXIpKSkKCiAgICBpZiBkdXBsZXg6CiAgICAgICAgb3Blbm1vZGUgPSBfd2luYXBpLlBJUEVfQUNDRVNTX0RVUExFWAogICAgICAgIGFjY2VzcyA9IF93aW5hcGkuR0VORVJJQ19SRUFEIHwgX3dpbmFwaS5HRU5FUklDX1dSSVRFCiAgICAgICAgb2JzaXplLCBpYnNpemUgPSBidWZzaXplLCBidWZzaXplCiAgICBlbHNlOgogICAgICAgIG9wZW5tb2RlID0gX3dpbmFwaS5QSVBFX0FDQ0VTU19JTkJPVU5ECiAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1dSSVRFCiAgICAgICAgb2JzaXplLCBpYnNpemUgPSAwLCBidWZzaXplCgogICAgb3Blbm1vZGUgfD0gX3dpbmFwaS5GSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRQoKICAgIGlmIG92ZXJsYXBwZWRbMF06CiAgICAgICAgb3Blbm1vZGUgfD0gX3dpbmFwaS5GSUxFX0ZMQUdfT1ZFUkxBUFBFRAoKICAgIGlmIG92ZXJsYXBwZWRbMV06CiAgICAgICAgZmxhZ3NfYW5kX2F0dHJpYnMgPSBfd2luYXBpLkZJTEVfRkxBR19PVkVSTEFQUEVECiAgICBlbHNlOgogICAgICAgIGZsYWdzX2FuZF9hdHRyaWJzID0gMAoKICAgIGgxID0gaDIgPSBOb25lCiAgICB0cnk6CiAgICAgICAgaDEgPSBfd2luYXBpLkNyZWF0ZU5hbWVkUGlwZSgKICAgICAgICAgICAgYWRkcmVzcywgb3Blbm1vZGUsIF93aW5hcGkuUElQRV9XQUlULAogICAgICAgICAgICAxLCBvYnNpemUsIGlic2l6ZSwgX3dpbmFwaS5OTVBXQUlUX1dBSVRfRk9SRVZFUiwgX3dpbmFwaS5OVUxMKQoKICAgICAgICBoMiA9IF93aW5hcGkuQ3JlYXRlRmlsZSgKICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCBfd2luYXBpLk5VTEwsIF93aW5hcGkuT1BFTl9FWElTVElORywKICAgICAgICAgICAgZmxhZ3NfYW5kX2F0dHJpYnMsIF93aW5hcGkuTlVMTCkKCiAgICAgICAgb3YgPSBfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUoaDEsIG92ZXJsYXBwZWQ9VHJ1ZSkKICAgICAgICBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCiAgICAgICAgcmV0dXJuIGgxLCBoMgogICAgZXhjZXB0OgogICAgICAgIGlmIGgxIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGgxKQogICAgICAgIGlmIGgyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGgyKQogICAgICAgIHJhaXNlCgoKIyBXcmFwcGVyIGZvciBhIHBpcGUgaGFuZGxlCgoKY2xhc3MgUGlwZUhhbmRsZToKICAgICIiIldyYXBwZXIgZm9yIGFuIG92ZXJsYXBwZWQgcGlwZSBoYW5kbGUgd2hpY2ggaXMgdmFndWVseSBmaWxlLW9iamVjdCBsaWtlLgoKICAgIFRoZSBJT0NQIGV2ZW50IGxvb3AgY2FuIHVzZSB0aGVzZSBpbnN0ZWFkIG9mIHNvY2tldCBvYmplY3RzLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlKToKICAgICAgICBzZWxmLl9oYW5kbGUgPSBoYW5kbGUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaWYgc2VsZi5faGFuZGxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBoYW5kbGUgPSBmJ2hhbmRsZT17c2VsZi5faGFuZGxlIXJ9JwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGhhbmRsZSA9ICdjbG9zZWQnCiAgICAgICAgcmV0dXJuIGYnPHtzZWxmLl9fY2xhc3NfXy5fX25hbWVfX30ge2hhbmRsZX0+JwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGhhbmRsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlCgogICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgcGlwZSIpCiAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZQoKICAgIGRlZiBjbG9zZShzZWxmLCAqLCBDbG9zZUhhbmRsZT1fd2luYXBpLkNsb3NlSGFuZGxlKToKICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIENsb3NlSGFuZGxlKHNlbGYuX2hhbmRsZSkKICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gTm9uZQoKICAgIGRlZiBfX2RlbF9fKHNlbGYsIF93YXJuPXdhcm5pbmdzLndhcm4pOgogICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgX3dhcm4oZiJ1bmNsb3NlZCB7c2VsZiFyfSIsIFJlc291cmNlV2FybmluZywgc291cmNlPXNlbGYpCiAgICAgICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgogICAgICAgIHNlbGYuY2xvc2UoKQoKCiMgUmVwbGFjZW1lbnQgZm9yIHN1YnByb2Nlc3MuUG9wZW4gdXNpbmcgb3ZlcmxhcHBlZCBwaXBlIGhhbmRsZXMKCgpjbGFzcyBQb3BlbihzdWJwcm9jZXNzLlBvcGVuKToKICAgICIiIlJlcGxhY2VtZW50IGZvciBzdWJwcm9jZXNzLlBvcGVuIHVzaW5nIG92ZXJsYXBwZWQgcGlwZSBoYW5kbGVzLgoKICAgIFRoZSBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgYXJlIE5vbmUgb3IgaW5zdGFuY2VzIG9mIFBpcGVIYW5kbGUuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsICoqa3dkcyk6CiAgICAgICAgYXNzZXJ0IG5vdCBrd2RzLmdldCgndW5pdmVyc2FsX25ld2xpbmVzJykKICAgICAgICBhc3NlcnQga3dkcy5nZXQoJ2J1ZnNpemUnLCAwKSA9PSAwCiAgICAgICAgc3RkaW5fcmZkID0gc3Rkb3V0X3dmZCA9IHN0ZGVycl93ZmQgPSBOb25lCiAgICAgICAgc3RkaW5fd2ggPSBzdGRvdXRfcmggPSBzdGRlcnJfcmggPSBOb25lCiAgICAgICAgaWYgc3RkaW4gPT0gUElQRToKICAgICAgICAgICAgc3RkaW5fcmgsIHN0ZGluX3doID0gcGlwZShvdmVybGFwcGVkPShGYWxzZSwgVHJ1ZSksIGR1cGxleD1UcnVlKQogICAgICAgICAgICBzdGRpbl9yZmQgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUoc3RkaW5fcmgsIG9zLk9fUkRPTkxZKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN0ZGluX3JmZCA9IHN0ZGluCiAgICAgICAgaWYgc3Rkb3V0ID09IFBJUEU6CiAgICAgICAgICAgIHN0ZG91dF9yaCwgc3Rkb3V0X3doID0gcGlwZShvdmVybGFwcGVkPShUcnVlLCBGYWxzZSkpCiAgICAgICAgICAgIHN0ZG91dF93ZmQgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUoc3Rkb3V0X3doLCAwKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN0ZG91dF93ZmQgPSBzdGRvdXQKICAgICAgICBpZiBzdGRlcnIgPT0gUElQRToKICAgICAgICAgICAgc3RkZXJyX3JoLCBzdGRlcnJfd2ggPSBwaXBlKG92ZXJsYXBwZWQ9KFRydWUsIEZhbHNlKSkKICAgICAgICAgICAgc3RkZXJyX3dmZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShzdGRlcnJfd2gsIDApCiAgICAgICAgZWxpZiBzdGRlcnIgPT0gU1RET1VUOgogICAgICAgICAgICBzdGRlcnJfd2ZkID0gc3Rkb3V0X3dmZAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN0ZGVycl93ZmQgPSBzdGRlcnIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oYXJncywgc3RkaW49c3RkaW5fcmZkLCBzdGRvdXQ9c3Rkb3V0X3dmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3RkZXJyX3dmZCwgKiprd2RzKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgZm9yIGggaW4gKHN0ZGluX3doLCBzdGRvdXRfcmgsIHN0ZGVycl9yaCk6CiAgICAgICAgICAgICAgICBpZiBoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaCkKICAgICAgICAgICAgcmFpc2UKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzdGRpbl93aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBQaXBlSGFuZGxlKHN0ZGluX3doKQogICAgICAgICAgICBpZiBzdGRvdXRfcmggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IFBpcGVIYW5kbGUoc3Rkb3V0X3JoKQogICAgICAgICAgICBpZiBzdGRlcnJfcmggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyciA9IFBpcGVIYW5kbGUoc3RkZXJyX3JoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIHN0ZGluID09IFBJUEU6CiAgICAgICAgICAgICAgICBvcy5jbG9zZShzdGRpbl9yZmQpCiAgICAgICAgICAgIGlmIHN0ZG91dCA9PSBQSVBFOgogICAgICAgICAgICAgICAgb3MuY2xvc2Uoc3Rkb3V0X3dmZCkKICAgICAgICAgICAgaWYgc3RkZXJyID09IFBJUEU6CiAgICAgICAgICAgICAgICBvcy5jbG9zZShzdGRlcnJfd2ZkKQpQSwMEFAAAAAAAAiCjVsJJ4aXZygAA2coAABcAAABjb2xsZWN0aW9ucy9fX2luaXRfXy5weScnJ1RoaXMgbW9kdWxlIGltcGxlbWVudHMgc3BlY2lhbGl6ZWQgY29udGFpbmVyIGRhdGF0eXBlcyBwcm92aWRpbmcKYWx0ZXJuYXRpdmVzIHRvIFB5dGhvbidzIGdlbmVyYWwgcHVycG9zZSBidWlsdC1pbiBjb250YWluZXJzLCBkaWN0LApsaXN0LCBzZXQsIGFuZCB0dXBsZS4KCiogbmFtZWR0dXBsZSAgIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHR1cGxlIHN1YmNsYXNzZXMgd2l0aCBuYW1lZCBmaWVsZHMKKiBkZXF1ZSAgICAgICAgbGlzdC1saWtlIGNvbnRhaW5lciB3aXRoIGZhc3QgYXBwZW5kcyBhbmQgcG9wcyBvbiBlaXRoZXIgZW5kCiogQ2hhaW5NYXAgICAgIGRpY3QtbGlrZSBjbGFzcyBmb3IgY3JlYXRpbmcgYSBzaW5nbGUgdmlldyBvZiBtdWx0aXBsZSBtYXBwaW5ncwoqIENvdW50ZXIgICAgICBkaWN0IHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzCiogT3JkZXJlZERpY3QgIGRpY3Qgc3ViY2xhc3MgdGhhdCByZW1lbWJlcnMgdGhlIG9yZGVyIGVudHJpZXMgd2VyZSBhZGRlZAoqIGRlZmF1bHRkaWN0ICBkaWN0IHN1YmNsYXNzIHRoYXQgY2FsbHMgYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIHN1cHBseSBtaXNzaW5nIHZhbHVlcwoqIFVzZXJEaWN0ICAgICB3cmFwcGVyIGFyb3VuZCBkaWN0aW9uYXJ5IG9iamVjdHMgZm9yIGVhc2llciBkaWN0IHN1YmNsYXNzaW5nCiogVXNlckxpc3QgICAgIHdyYXBwZXIgYXJvdW5kIGxpc3Qgb2JqZWN0cyBmb3IgZWFzaWVyIGxpc3Qgc3ViY2xhc3NpbmcKKiBVc2VyU3RyaW5nICAgd3JhcHBlciBhcm91bmQgc3RyaW5nIG9iamVjdHMgZm9yIGVhc2llciBzdHJpbmcgc3ViY2xhc3NpbmcKCicnJwoKX19hbGxfXyA9IFsKICAgICdDaGFpbk1hcCcsCiAgICAnQ291bnRlcicsCiAgICAnT3JkZXJlZERpY3QnLAogICAgJ1VzZXJEaWN0JywKICAgICdVc2VyTGlzdCcsCiAgICAnVXNlclN0cmluZycsCiAgICAnZGVmYXVsdGRpY3QnLAogICAgJ2RlcXVlJywKICAgICduYW1lZHR1cGxlJywKXQoKaW1wb3J0IF9jb2xsZWN0aW9uc19hYmMKaW1wb3J0IHN5cyBhcyBfc3lzCgpmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4gYXMgX2NoYWluCmZyb20gaXRlcnRvb2xzIGltcG9ydCByZXBlYXQgYXMgX3JlcGVhdApmcm9tIGl0ZXJ0b29scyBpbXBvcnQgc3Rhcm1hcCBhcyBfc3Rhcm1hcApmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZCBhcyBfaXNrZXl3b3JkCmZyb20gb3BlcmF0b3IgaW1wb3J0IGVxIGFzIF9lcQpmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyIGFzIF9pdGVtZ2V0dGVyCmZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIgYXMgX3JlY3Vyc2l2ZV9yZXByCmZyb20gX3dlYWtyZWYgaW1wb3J0IHByb3h5IGFzIF9wcm94eQoKdHJ5OgogICAgZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgIF9jb2xsZWN0aW9uc19hYmMuTXV0YWJsZVNlcXVlbmNlLnJlZ2lzdGVyKGRlcXVlKQoKdHJ5OgogICAgZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgT3JkZXJlZERpY3QKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmNsYXNzIF9PcmRlcmVkRGljdEtleXNWaWV3KF9jb2xsZWN0aW9uc19hYmMuS2V5c1ZpZXcpOgoKICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CiAgICAgICAgeWllbGQgZnJvbSByZXZlcnNlZChzZWxmLl9tYXBwaW5nKQoKY2xhc3MgX09yZGVyZWREaWN0SXRlbXNWaWV3KF9jb2xsZWN0aW9uc19hYmMuSXRlbXNWaWV3KToKCiAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgogICAgICAgIGZvciBrZXkgaW4gcmV2ZXJzZWQoc2VsZi5fbWFwcGluZyk6CiAgICAgICAgICAgIHlpZWxkIChrZXksIHNlbGYuX21hcHBpbmdba2V5XSkKCmNsYXNzIF9PcmRlcmVkRGljdFZhbHVlc1ZpZXcoX2NvbGxlY3Rpb25zX2FiYy5WYWx1ZXNWaWV3KToKCiAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgogICAgICAgIGZvciBrZXkgaW4gcmV2ZXJzZWQoc2VsZi5fbWFwcGluZyk6CiAgICAgICAgICAgIHlpZWxkIHNlbGYuX21hcHBpbmdba2V5XQoKY2xhc3MgX0xpbmsob2JqZWN0KToKICAgIF9fc2xvdHNfXyA9ICdwcmV2JywgJ25leHQnLCAna2V5JywgJ19fd2Vha3JlZl9fJwoKY2xhc3MgT3JkZXJlZERpY3QoZGljdCk6CiAgICAnRGljdGlvbmFyeSB0aGF0IHJlbWVtYmVycyBpbnNlcnRpb24gb3JkZXInCiAgICAjIEFuIGluaGVyaXRlZCBkaWN0IG1hcHMga2V5cyB0byB2YWx1ZXMuCiAgICAjIFRoZSBpbmhlcml0ZWQgZGljdCBwcm92aWRlcyBfX2dldGl0ZW1fXywgX19sZW5fXywgX19jb250YWluc19fLCBhbmQgZ2V0LgogICAgIyBUaGUgcmVtYWluaW5nIG1ldGhvZHMgYXJlIG9yZGVyLWF3YXJlLgogICAgIyBCaWctTyBydW5uaW5nIHRpbWVzIGZvciBhbGwgbWV0aG9kcyBhcmUgdGhlIHNhbWUgYXMgcmVndWxhciBkaWN0aW9uYXJpZXMuCgogICAgIyBUaGUgaW50ZXJuYWwgc2VsZi5fX21hcCBkaWN0IG1hcHMga2V5cyB0byBsaW5rcyBpbiBhIGRvdWJseSBsaW5rZWQgbGlzdC4KICAgICMgVGhlIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdCBzdGFydHMgYW5kIGVuZHMgd2l0aCBhIHNlbnRpbmVsIGVsZW1lbnQuCiAgICAjIFRoZSBzZW50aW5lbCBlbGVtZW50IG5ldmVyIGdldHMgZGVsZXRlZCAodGhpcyBzaW1wbGlmaWVzIHRoZSBhbGdvcml0aG0pLgogICAgIyBUaGUgc2VudGluZWwgaXMgaW4gc2VsZi5fX2hhcmRyb290IHdpdGggYSB3ZWFrcmVmIHByb3h5IGluIHNlbGYuX19yb290LgogICAgIyBUaGUgcHJldiBsaW5rcyBhcmUgd2Vha3JlZiBwcm94aWVzICh0byBwcmV2ZW50IGNpcmN1bGFyIHJlZmVyZW5jZXMpLgogICAgIyBJbmRpdmlkdWFsIGxpbmtzIGFyZSBrZXB0IGFsaXZlIGJ5IHRoZSBoYXJkIHJlZmVyZW5jZSBpbiBzZWxmLl9fbWFwLgogICAgIyBUaG9zZSBoYXJkIHJlZmVyZW5jZXMgZGlzYXBwZWFyIHdoZW4gYSBrZXkgaXMgZGVsZXRlZCBmcm9tIGFuIE9yZGVyZWREaWN0LgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdGhlcj0oKSwgLywgKiprd2RzKToKICAgICAgICAnJydJbml0aWFsaXplIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4gIFRoZSBzaWduYXR1cmUgaXMgdGhlIHNhbWUgYXMKICAgICAgICByZWd1bGFyIGRpY3Rpb25hcmllcy4gIEtleXdvcmQgYXJndW1lbnQgb3JkZXIgaXMgcHJlc2VydmVkLgogICAgICAgICcnJwogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fX3Jvb3QKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHNlbGYuX19oYXJkcm9vdCA9IF9MaW5rKCkKICAgICAgICAgICAgc2VsZi5fX3Jvb3QgPSByb290ID0gX3Byb3h5KHNlbGYuX19oYXJkcm9vdCkKICAgICAgICAgICAgcm9vdC5wcmV2ID0gcm9vdC5uZXh0ID0gcm9vdAogICAgICAgICAgICBzZWxmLl9fbWFwID0ge30KICAgICAgICBzZWxmLl9fdXBkYXRlKG90aGVyLCAqKmt3ZHMpCgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgZGljdF9zZXRpdGVtPWRpY3QuX19zZXRpdGVtX18sIHByb3h5PV9wcm94eSwgTGluaz1fTGluayk6CiAgICAgICAgJ29kLl9fc2V0aXRlbV9fKGksIHkpIDw9PT4gb2RbaV09eScKICAgICAgICAjIFNldHRpbmcgYSBuZXcgaXRlbSBjcmVhdGVzIGEgbmV3IGxpbmsgYXQgdGhlIGVuZCBvZiB0aGUgbGlua2VkIGxpc3QsCiAgICAgICAgIyBhbmQgdGhlIGluaGVyaXRlZCBkaWN0aW9uYXJ5IGlzIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IGtleS92YWx1ZSBwYWlyLgogICAgICAgIGlmIGtleSBub3QgaW4gc2VsZjoKICAgICAgICAgICAgc2VsZi5fX21hcFtrZXldID0gbGluayA9IExpbmsoKQogICAgICAgICAgICByb290ID0gc2VsZi5fX3Jvb3QKICAgICAgICAgICAgbGFzdCA9IHJvb3QucHJldgogICAgICAgICAgICBsaW5rLnByZXYsIGxpbmsubmV4dCwgbGluay5rZXkgPSBsYXN0LCByb290LCBrZXkKICAgICAgICAgICAgbGFzdC5uZXh0ID0gbGluawogICAgICAgICAgICByb290LnByZXYgPSBwcm94eShsaW5rKQogICAgICAgIGRpY3Rfc2V0aXRlbShzZWxmLCBrZXksIHZhbHVlKQoKICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXksIGRpY3RfZGVsaXRlbT1kaWN0Ll9fZGVsaXRlbV9fKToKICAgICAgICAnb2QuX19kZWxpdGVtX18oeSkgPD09PiBkZWwgb2RbeV0nCiAgICAgICAgIyBEZWxldGluZyBhbiBleGlzdGluZyBpdGVtIHVzZXMgc2VsZi5fX21hcCB0byBmaW5kIHRoZSBsaW5rIHdoaWNoIGdldHMKICAgICAgICAjIHJlbW92ZWQgYnkgdXBkYXRpbmcgdGhlIGxpbmtzIGluIHRoZSBwcmVkZWNlc3NvciBhbmQgc3VjY2Vzc29yIG5vZGVzLgogICAgICAgIGRpY3RfZGVsaXRlbShzZWxmLCBrZXkpCiAgICAgICAgbGluayA9IHNlbGYuX19tYXAucG9wKGtleSkKICAgICAgICBsaW5rX3ByZXYgPSBsaW5rLnByZXYKICAgICAgICBsaW5rX25leHQgPSBsaW5rLm5leHQKICAgICAgICBsaW5rX3ByZXYubmV4dCA9IGxpbmtfbmV4dAogICAgICAgIGxpbmtfbmV4dC5wcmV2ID0gbGlua19wcmV2CiAgICAgICAgbGluay5wcmV2ID0gTm9uZQogICAgICAgIGxpbmsubmV4dCA9IE5vbmUKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgJ29kLl9faXRlcl9fKCkgPD09PiBpdGVyKG9kKScKICAgICAgICAjIFRyYXZlcnNlIHRoZSBsaW5rZWQgbGlzdCBpbiBvcmRlci4KICAgICAgICByb290ID0gc2VsZi5fX3Jvb3QKICAgICAgICBjdXJyID0gcm9vdC5uZXh0CiAgICAgICAgd2hpbGUgY3VyciBpcyBub3Qgcm9vdDoKICAgICAgICAgICAgeWllbGQgY3Vyci5rZXkKICAgICAgICAgICAgY3VyciA9IGN1cnIubmV4dAoKICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CiAgICAgICAgJ29kLl9fcmV2ZXJzZWRfXygpIDw9PT4gcmV2ZXJzZWQob2QpJwogICAgICAgICMgVHJhdmVyc2UgdGhlIGxpbmtlZCBsaXN0IGluIHJldmVyc2Ugb3JkZXIuCiAgICAgICAgcm9vdCA9IHNlbGYuX19yb290CiAgICAgICAgY3VyciA9IHJvb3QucHJldgogICAgICAgIHdoaWxlIGN1cnIgaXMgbm90IHJvb3Q6CiAgICAgICAgICAgIHlpZWxkIGN1cnIua2V5CiAgICAgICAgICAgIGN1cnIgPSBjdXJyLnByZXYKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgJ29kLmNsZWFyKCkgLT4gTm9uZS4gIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSBvZC4nCiAgICAgICAgcm9vdCA9IHNlbGYuX19yb290CiAgICAgICAgcm9vdC5wcmV2ID0gcm9vdC5uZXh0ID0gcm9vdAogICAgICAgIHNlbGYuX19tYXAuY2xlYXIoKQogICAgICAgIGRpY3QuY2xlYXIoc2VsZikKCiAgICBkZWYgcG9waXRlbShzZWxmLCBsYXN0PVRydWUpOgogICAgICAgICcnJ1JlbW92ZSBhbmQgcmV0dXJuIGEgKGtleSwgdmFsdWUpIHBhaXIgZnJvbSB0aGUgZGljdGlvbmFyeS4KCiAgICAgICAgUGFpcnMgYXJlIHJldHVybmVkIGluIExJRk8gb3JkZXIgaWYgbGFzdCBpcyB0cnVlIG9yIEZJRk8gb3JkZXIgaWYgZmFsc2UuCiAgICAgICAgJycnCiAgICAgICAgaWYgbm90IHNlbGY6CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCdkaWN0aW9uYXJ5IGlzIGVtcHR5JykKICAgICAgICByb290ID0gc2VsZi5fX3Jvb3QKICAgICAgICBpZiBsYXN0OgogICAgICAgICAgICBsaW5rID0gcm9vdC5wcmV2CiAgICAgICAgICAgIGxpbmtfcHJldiA9IGxpbmsucHJldgogICAgICAgICAgICBsaW5rX3ByZXYubmV4dCA9IHJvb3QKICAgICAgICAgICAgcm9vdC5wcmV2ID0gbGlua19wcmV2CiAgICAgICAgZWxzZToKICAgICAgICAgICAgbGluayA9IHJvb3QubmV4dAogICAgICAgICAgICBsaW5rX25leHQgPSBsaW5rLm5leHQKICAgICAgICAgICAgcm9vdC5uZXh0ID0gbGlua19uZXh0CiAgICAgICAgICAgIGxpbmtfbmV4dC5wcmV2ID0gcm9vdAogICAgICAgIGtleSA9IGxpbmsua2V5CiAgICAgICAgZGVsIHNlbGYuX19tYXBba2V5XQogICAgICAgIHZhbHVlID0gZGljdC5wb3Aoc2VsZiwga2V5KQogICAgICAgIHJldHVybiBrZXksIHZhbHVlCgogICAgZGVmIG1vdmVfdG9fZW5kKHNlbGYsIGtleSwgbGFzdD1UcnVlKToKICAgICAgICAnJydNb3ZlIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8gdGhlIGVuZCAob3IgYmVnaW5uaW5nIGlmIGxhc3QgaXMgZmFsc2UpLgoKICAgICAgICBSYWlzZSBLZXlFcnJvciBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBleGlzdC4KICAgICAgICAnJycKICAgICAgICBsaW5rID0gc2VsZi5fX21hcFtrZXldCiAgICAgICAgbGlua19wcmV2ID0gbGluay5wcmV2CiAgICAgICAgbGlua19uZXh0ID0gbGluay5uZXh0CiAgICAgICAgc29mdF9saW5rID0gbGlua19uZXh0LnByZXYKICAgICAgICBsaW5rX3ByZXYubmV4dCA9IGxpbmtfbmV4dAogICAgICAgIGxpbmtfbmV4dC5wcmV2ID0gbGlua19wcmV2CiAgICAgICAgcm9vdCA9IHNlbGYuX19yb290CiAgICAgICAgaWYgbGFzdDoKICAgICAgICAgICAgbGFzdCA9IHJvb3QucHJldgogICAgICAgICAgICBsaW5rLnByZXYgPSBsYXN0CiAgICAgICAgICAgIGxpbmsubmV4dCA9IHJvb3QKICAgICAgICAgICAgcm9vdC5wcmV2ID0gc29mdF9saW5rCiAgICAgICAgICAgIGxhc3QubmV4dCA9IGxpbmsKICAgICAgICBlbHNlOgogICAgICAgICAgICBmaXJzdCA9IHJvb3QubmV4dAogICAgICAgICAgICBsaW5rLnByZXYgPSByb290CiAgICAgICAgICAgIGxpbmsubmV4dCA9IGZpcnN0CiAgICAgICAgICAgIGZpcnN0LnByZXYgPSBzb2Z0X2xpbmsKICAgICAgICAgICAgcm9vdC5uZXh0ID0gbGluawoKICAgIGRlZiBfX3NpemVvZl9fKHNlbGYpOgogICAgICAgIHNpemVvZiA9IF9zeXMuZ2V0c2l6ZW9mCiAgICAgICAgbiA9IGxlbihzZWxmKSArIDEgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIGxpbmtzIGluY2x1ZGluZyByb290CiAgICAgICAgc2l6ZSA9IHNpemVvZihzZWxmLl9fZGljdF9fKSAgICAgICAgICAgICMgaW5zdGFuY2UgZGljdGlvbmFyeQogICAgICAgIHNpemUgKz0gc2l6ZW9mKHNlbGYuX19tYXApICogMiAgICAgICAgICAjIGludGVybmFsIGRpY3QgYW5kIGluaGVyaXRlZCBkaWN0CiAgICAgICAgc2l6ZSArPSBzaXplb2Yoc2VsZi5fX2hhcmRyb290KSAqIG4gICAgICMgbGluayBvYmplY3RzCiAgICAgICAgc2l6ZSArPSBzaXplb2Yoc2VsZi5fX3Jvb3QpICogbiAgICAgICAgICMgcHJveHkgb2JqZWN0cwogICAgICAgIHJldHVybiBzaXplCgogICAgdXBkYXRlID0gX191cGRhdGUgPSBfY29sbGVjdGlvbnNfYWJjLk11dGFibGVNYXBwaW5nLnVwZGF0ZQoKICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgICJELmtleXMoKSAtPiBhIHNldC1saWtlIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIEQncyBrZXlzIgogICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RLZXlzVmlldyhzZWxmKQoKICAgIGRlZiBpdGVtcyhzZWxmKToKICAgICAgICAiRC5pdGVtcygpIC0+IGEgc2V0LWxpa2Ugb2JqZWN0IHByb3ZpZGluZyBhIHZpZXcgb24gRCdzIGl0ZW1zIgogICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RJdGVtc1ZpZXcoc2VsZikKCiAgICBkZWYgdmFsdWVzKHNlbGYpOgogICAgICAgICJELnZhbHVlcygpIC0+IGFuIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIEQncyB2YWx1ZXMiCiAgICAgICAgcmV0dXJuIF9PcmRlcmVkRGljdFZhbHVlc1ZpZXcoc2VsZikKCiAgICBfX25lX18gPSBfY29sbGVjdGlvbnNfYWJjLk11dGFibGVNYXBwaW5nLl9fbmVfXwoKICAgIF9fbWFya2VyID0gb2JqZWN0KCkKCiAgICBkZWYgcG9wKHNlbGYsIGtleSwgZGVmYXVsdD1fX21hcmtlcik6CiAgICAgICAgJycnb2QucG9wKGtbLGRdKSAtPiB2LCByZW1vdmUgc3BlY2lmaWVkIGtleSBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAgdmFsdWUuICBJZiBrZXkgaXMgbm90IGZvdW5kLCBkIGlzIHJldHVybmVkIGlmIGdpdmVuLCBvdGhlcndpc2UgS2V5RXJyb3IKICAgICAgICBpcyByYWlzZWQuCgogICAgICAgICcnJwogICAgICAgIG1hcmtlciA9IHNlbGYuX19tYXJrZXIKICAgICAgICByZXN1bHQgPSBkaWN0LnBvcChzZWxmLCBrZXksIG1hcmtlcikKICAgICAgICBpZiByZXN1bHQgaXMgbm90IG1hcmtlcjoKICAgICAgICAgICAgIyBUaGUgc2FtZSBhcyBpbiBfX2RlbGl0ZW1fXygpLgogICAgICAgICAgICBsaW5rID0gc2VsZi5fX21hcC5wb3Aoa2V5KQogICAgICAgICAgICBsaW5rX3ByZXYgPSBsaW5rLnByZXYKICAgICAgICAgICAgbGlua19uZXh0ID0gbGluay5uZXh0CiAgICAgICAgICAgIGxpbmtfcHJldi5uZXh0ID0gbGlua19uZXh0CiAgICAgICAgICAgIGxpbmtfbmV4dC5wcmV2ID0gbGlua19wcmV2CiAgICAgICAgICAgIGxpbmsucHJldiA9IE5vbmUKICAgICAgICAgICAgbGluay5uZXh0ID0gTm9uZQogICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgaWYgZGVmYXVsdCBpcyBtYXJrZXI6CiAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKICAgICAgICByZXR1cm4gZGVmYXVsdAoKICAgIGRlZiBzZXRkZWZhdWx0KHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lKToKICAgICAgICAnJydJbnNlcnQga2V5IHdpdGggYSB2YWx1ZSBvZiBkZWZhdWx0IGlmIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuCgogICAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yIGtleSBpZiBrZXkgaXMgaW4gdGhlIGRpY3Rpb25hcnksIGVsc2UgZGVmYXVsdC4KICAgICAgICAnJycKICAgICAgICBpZiBrZXkgaW4gc2VsZjoKICAgICAgICAgICAgcmV0dXJuIHNlbGZba2V5XQogICAgICAgIHNlbGZba2V5XSA9IGRlZmF1bHQKICAgICAgICByZXR1cm4gZGVmYXVsdAoKICAgIEBfcmVjdXJzaXZlX3JlcHIoKQogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICdvZC5fX3JlcHJfXygpIDw9PT4gcmVwcihvZCknCiAgICAgICAgaWYgbm90IHNlbGY6CiAgICAgICAgICAgIHJldHVybiAnJXMoKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sKQogICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbGlzdChzZWxmLml0ZW1zKCkpKQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICdSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nJwogICAgICAgIHN0YXRlID0gc2VsZi5fX2dldHN0YXRlX18oKQogICAgICAgIGlmIHN0YXRlOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHN0YXRlLCB0dXBsZSk6CiAgICAgICAgICAgICAgICBzdGF0ZSwgc2xvdHMgPSBzdGF0ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2xvdHMgPSB7fQogICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLmNvcHkoKQogICAgICAgICAgICBzbG90cyA9IHNsb3RzLmNvcHkoKQogICAgICAgICAgICBmb3IgayBpbiB2YXJzKE9yZGVyZWREaWN0KCkpOgogICAgICAgICAgICAgICAgc3RhdGUucG9wKGssIE5vbmUpCiAgICAgICAgICAgICAgICBzbG90cy5wb3AoaywgTm9uZSkKICAgICAgICAgICAgaWYgc2xvdHM6CiAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLCBzbG90cwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZSBvciBOb25lCiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoKSwgc3RhdGUsIE5vbmUsIGl0ZXIoc2VsZi5pdGVtcygpKQoKICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgICdvZC5jb3B5KCkgLT4gYSBzaGFsbG93IGNvcHkgb2Ygb2QnCiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbWtleXMoY2xzLCBpdGVyYWJsZSwgdmFsdWU9Tm9uZSk6CiAgICAgICAgJycnQ3JlYXRlIGEgbmV3IG9yZGVyZWQgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSBpdGVyYWJsZSBhbmQgdmFsdWVzIHNldCB0byB2YWx1ZS4KICAgICAgICAnJycKICAgICAgICBzZWxmID0gY2xzKCkKICAgICAgICBmb3Iga2V5IGluIGl0ZXJhYmxlOgogICAgICAgICAgICBzZWxmW2tleV0gPSB2YWx1ZQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgJycnb2QuX19lcV9fKHkpIDw9PT4gb2Q9PXkuICBDb21wYXJpc29uIHRvIGFub3RoZXIgT0QgaXMgb3JkZXItc2Vuc2l0aXZlCiAgICAgICAgd2hpbGUgY29tcGFyaXNvbiB0byBhIHJlZ3VsYXIgbWFwcGluZyBpcyBvcmRlci1pbnNlbnNpdGl2ZS4KCiAgICAgICAgJycnCiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgT3JkZXJlZERpY3QpOgogICAgICAgICAgICByZXR1cm4gZGljdC5fX2VxX18oc2VsZiwgb3RoZXIpIGFuZCBhbGwobWFwKF9lcSwgc2VsZiwgb3RoZXIpKQogICAgICAgIHJldHVybiBkaWN0Ll9fZXFfXyhzZWxmLCBvdGhlcikKCiAgICBkZWYgX19pb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgc2VsZi51cGRhdGUob3RoZXIpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgZGljdCk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIG5ldyA9IHNlbGYuX19jbGFzc19fKHNlbGYpCiAgICAgICAgbmV3LnVwZGF0ZShvdGhlcikKICAgICAgICByZXR1cm4gbmV3CgogICAgZGVmIF9fcm9yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkaWN0KToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgbmV3ID0gc2VsZi5fX2NsYXNzX18ob3RoZXIpCiAgICAgICAgbmV3LnVwZGF0ZShzZWxmKQogICAgICAgIHJldHVybiBuZXcKCgp0cnk6CiAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKZXhjZXB0IEltcG9ydEVycm9yOgogICAgIyBMZWF2ZSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbiBpbiBwbGFjZS4KICAgIHBhc3MKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgbmFtZWR0dXBsZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKdHJ5OgogICAgZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IF90dXBsZWdldHRlcgpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBfdHVwbGVnZXR0ZXIgPSBsYW1iZGEgaW5kZXgsIGRvYzogcHJvcGVydHkoX2l0ZW1nZXR0ZXIoaW5kZXgpLCBkb2M9ZG9jKQoKZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCAqLCByZW5hbWU9RmFsc2UsIGRlZmF1bHRzPU5vbmUsIG1vZHVsZT1Ob25lKToKICAgICIiIlJldHVybnMgYSBuZXcgc3ViY2xhc3Mgb2YgdHVwbGUgd2l0aCBuYW1lZCBmaWVsZHMuCgogICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQogICAgPj4+IFBvaW50Ll9fZG9jX18gICAgICAgICAgICAgICAgICAgIyBkb2NzdHJpbmcgZm9yIHRoZSBuZXcgY2xhc3MKICAgICdQb2ludCh4LCB5KScKICAgID4+PiBwID0gUG9pbnQoMTEsIHk9MjIpICAgICAgICAgICAgICMgaW5zdGFudGlhdGUgd2l0aCBwb3NpdGlvbmFsIGFyZ3Mgb3Iga2V5d29yZHMKICAgID4+PiBwWzBdICsgcFsxXSAgICAgICAgICAgICAgICAgICAgICMgaW5kZXhhYmxlIGxpa2UgYSBwbGFpbiB0dXBsZQogICAgMzMKICAgID4+PiB4LCB5ID0gcCAgICAgICAgICAgICAgICAgICAgICAgICMgdW5wYWNrIGxpa2UgYSByZWd1bGFyIHR1cGxlCiAgICA+Pj4geCwgeQogICAgKDExLCAyMikKICAgID4+PiBwLnggKyBwLnkgICAgICAgICAgICAgICAgICAgICAgICMgZmllbGRzIGFsc28gYWNjZXNzaWJsZSBieSBuYW1lCiAgICAzMwogICAgPj4+IGQgPSBwLl9hc2RpY3QoKSAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHRvIGEgZGljdGlvbmFyeQogICAgPj4+IGRbJ3gnXQogICAgMTEKICAgID4+PiBQb2ludCgqKmQpICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBmcm9tIGEgZGljdGlvbmFyeQogICAgUG9pbnQoeD0xMSwgeT0yMikKICAgID4+PiBwLl9yZXBsYWNlKHg9MTAwKSAgICAgICAgICAgICAgICMgX3JlcGxhY2UoKSBpcyBsaWtlIHN0ci5yZXBsYWNlKCkgYnV0IHRhcmdldHMgbmFtZWQgZmllbGRzCiAgICBQb2ludCh4PTEwMCwgeT0yMikKCiAgICAiIiIKCiAgICAjIFZhbGlkYXRlIHRoZSBmaWVsZCBuYW1lcy4gIEF0IHRoZSB1c2VyJ3Mgb3B0aW9uLCBlaXRoZXIgZ2VuZXJhdGUgYW4gZXJyb3IKICAgICMgbWVzc2FnZSBvciBhdXRvbWF0aWNhbGx5IHJlcGxhY2UgdGhlIGZpZWxkIG5hbWUgd2l0aCBhIHZhbGlkIG5hbWUuCiAgICBpZiBpc2luc3RhbmNlKGZpZWxkX25hbWVzLCBzdHIpOgogICAgICAgIGZpZWxkX25hbWVzID0gZmllbGRfbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgZmllbGRfbmFtZXMgPSBsaXN0KG1hcChzdHIsIGZpZWxkX25hbWVzKSkKICAgIHR5cGVuYW1lID0gX3N5cy5pbnRlcm4oc3RyKHR5cGVuYW1lKSkKCiAgICBpZiByZW5hbWU6CiAgICAgICAgc2VlbiA9IHNldCgpCiAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZShmaWVsZF9uYW1lcyk6CiAgICAgICAgICAgIGlmIChub3QgbmFtZS5pc2lkZW50aWZpZXIoKQogICAgICAgICAgICAgICAgb3IgX2lza2V5d29yZChuYW1lKQogICAgICAgICAgICAgICAgb3IgbmFtZS5zdGFydHN3aXRoKCdfJykKICAgICAgICAgICAgICAgIG9yIG5hbWUgaW4gc2Vlbik6CiAgICAgICAgICAgICAgICBmaWVsZF9uYW1lc1tpbmRleF0gPSBmJ197aW5kZXh9JwogICAgICAgICAgICBzZWVuLmFkZChuYW1lKQoKICAgIGZvciBuYW1lIGluIFt0eXBlbmFtZV0gKyBmaWVsZF9uYW1lczoKICAgICAgICBpZiB0eXBlKG5hbWUpIGlzIG5vdCBzdHI6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgbXVzdCBiZSBzdHJpbmdzJykKICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgbXVzdCBiZSB2YWxpZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZidpZGVudGlmaWVyczoge25hbWUhcn0nKQogICAgICAgIGlmIF9pc2tleXdvcmQobmFtZSk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbm5vdCBiZSBhICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJ2tleXdvcmQ6IHtuYW1lIXJ9JykKCiAgICBzZWVuID0gc2V0KCkKICAgIGZvciBuYW1lIGluIGZpZWxkX25hbWVzOgogICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpIGFuZCBub3QgcmVuYW1lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZid7bmFtZSFyfScpCiAgICAgICAgaWYgbmFtZSBpbiBzZWVuOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnRW5jb3VudGVyZWQgZHVwbGljYXRlIGZpZWxkIG5hbWU6IHtuYW1lIXJ9JykKICAgICAgICBzZWVuLmFkZChuYW1lKQoKICAgIGZpZWxkX2RlZmF1bHRzID0ge30KICAgIGlmIGRlZmF1bHRzIGlzIG5vdCBOb25lOgogICAgICAgIGRlZmF1bHRzID0gdHVwbGUoZGVmYXVsdHMpCiAgICAgICAgaWYgbGVuKGRlZmF1bHRzKSA+IGxlbihmaWVsZF9uYW1lcyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignR290IG1vcmUgZGVmYXVsdCB2YWx1ZXMgdGhhbiBmaWVsZCBuYW1lcycpCiAgICAgICAgZmllbGRfZGVmYXVsdHMgPSBkaWN0KHJldmVyc2VkKGxpc3QoemlwKHJldmVyc2VkKGZpZWxkX25hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZWQoZGVmYXVsdHMpKSkpKQoKICAgICMgVmFyaWFibGVzIHVzZWQgaW4gdGhlIG1ldGhvZHMgYW5kIGRvY3N0cmluZ3MKICAgIGZpZWxkX25hbWVzID0gdHVwbGUobWFwKF9zeXMuaW50ZXJuLCBmaWVsZF9uYW1lcykpCiAgICBudW1fZmllbGRzID0gbGVuKGZpZWxkX25hbWVzKQogICAgYXJnX2xpc3QgPSAnLCAnLmpvaW4oZmllbGRfbmFtZXMpCiAgICBpZiBudW1fZmllbGRzID09IDE6CiAgICAgICAgYXJnX2xpc3QgKz0gJywnCiAgICByZXByX2ZtdCA9ICcoJyArICcsICcuam9pbihmJ3tuYW1lfT0lcicgZm9yIG5hbWUgaW4gZmllbGRfbmFtZXMpICsgJyknCiAgICB0dXBsZV9uZXcgPSB0dXBsZS5fX25ld19fCiAgICBfZGljdCwgX3R1cGxlLCBfbGVuLCBfbWFwLCBfemlwID0gZGljdCwgdHVwbGUsIGxlbiwgbWFwLCB6aXAKCiAgICAjIENyZWF0ZSBhbGwgdGhlIG5hbWVkIHR1cGxlIG1ldGhvZHMgdG8gYmUgYWRkZWQgdG8gdGhlIGNsYXNzIG5hbWVzcGFjZQoKICAgIG5hbWVzcGFjZSA9IHsKICAgICAgICAnX3R1cGxlX25ldyc6IHR1cGxlX25ldywKICAgICAgICAnX19idWlsdGluc19fJzoge30sCiAgICAgICAgJ19fbmFtZV9fJzogZiduYW1lZHR1cGxlX3t0eXBlbmFtZX0nLAogICAgfQogICAgY29kZSA9IGYnbGFtYmRhIF9jbHMsIHthcmdfbGlzdH06IF90dXBsZV9uZXcoX2NscywgKHthcmdfbGlzdH0pKScKICAgIF9fbmV3X18gPSBldmFsKGNvZGUsIG5hbWVzcGFjZSkKICAgIF9fbmV3X18uX19uYW1lX18gPSAnX19uZXdfXycKICAgIF9fbmV3X18uX19kb2NfXyA9IGYnQ3JlYXRlIG5ldyBpbnN0YW5jZSBvZiB7dHlwZW5hbWV9KHthcmdfbGlzdH0pJwogICAgaWYgZGVmYXVsdHMgaXMgbm90IE5vbmU6CiAgICAgICAgX19uZXdfXy5fX2RlZmF1bHRzX18gPSBkZWZhdWx0cwoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9tYWtlKGNscywgaXRlcmFibGUpOgogICAgICAgIHJlc3VsdCA9IHR1cGxlX25ldyhjbHMsIGl0ZXJhYmxlKQogICAgICAgIGlmIF9sZW4ocmVzdWx0KSAhPSBudW1fZmllbGRzOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidFeHBlY3RlZCB7bnVtX2ZpZWxkc30gYXJndW1lbnRzLCBnb3Qge2xlbihyZXN1bHQpfScpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIF9tYWtlLl9fZnVuY19fLl9fZG9jX18gPSAoZidNYWtlIGEgbmV3IHt0eXBlbmFtZX0gb2JqZWN0IGZyb20gYSBzZXF1ZW5jZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvciBpdGVyYWJsZScpCgogICAgZGVmIF9yZXBsYWNlKHNlbGYsIC8sICoqa3dkcyk6CiAgICAgICAgcmVzdWx0ID0gc2VsZi5fbWFrZShfbWFwKGt3ZHMucG9wLCBmaWVsZF9uYW1lcywgc2VsZikpCiAgICAgICAgaWYga3dkczoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ0dvdCB1bmV4cGVjdGVkIGZpZWxkIG5hbWVzOiB7bGlzdChrd2RzKSFyfScpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIF9yZXBsYWNlLl9fZG9jX18gPSAoZidSZXR1cm4gYSBuZXcge3R5cGVuYW1lfSBvYmplY3QgcmVwbGFjaW5nIHNwZWNpZmllZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZHMgd2l0aCBuZXcgdmFsdWVzJykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgJ1JldHVybiBhIG5pY2VseSBmb3JtYXR0ZWQgcmVwcmVzZW50YXRpb24gc3RyaW5nJwogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyArIHJlcHJfZm10ICUgc2VsZgoKICAgIGRlZiBfYXNkaWN0KHNlbGYpOgogICAgICAgICdSZXR1cm4gYSBuZXcgZGljdCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIHZhbHVlcy4nCiAgICAgICAgcmV0dXJuIF9kaWN0KF96aXAoc2VsZi5fZmllbGRzLCBzZWxmKSkKCiAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CiAgICAgICAgJ1JldHVybiBzZWxmIGFzIGEgcGxhaW4gdHVwbGUuICBVc2VkIGJ5IGNvcHkgYW5kIHBpY2tsZS4nCiAgICAgICAgcmV0dXJuIF90dXBsZShzZWxmKQoKICAgICMgTW9kaWZ5IGZ1bmN0aW9uIG1ldGFkYXRhIHRvIGhlbHAgd2l0aCBpbnRyb3NwZWN0aW9uIGFuZCBkZWJ1Z2dpbmcKICAgIGZvciBtZXRob2QgaW4gKAogICAgICAgIF9fbmV3X18sCiAgICAgICAgX21ha2UuX19mdW5jX18sCiAgICAgICAgX3JlcGxhY2UsCiAgICAgICAgX19yZXByX18sCiAgICAgICAgX2FzZGljdCwKICAgICAgICBfX2dldG5ld2FyZ3NfXywKICAgICk6CiAgICAgICAgbWV0aG9kLl9fcXVhbG5hbWVfXyA9IGYne3R5cGVuYW1lfS57bWV0aG9kLl9fbmFtZV9ffScKCiAgICAjIEJ1aWxkLXVwIHRoZSBjbGFzcyBuYW1lc3BhY2UgZGljdGlvbmFyeQogICAgIyBhbmQgdXNlIHR5cGUoKSB0byBidWlsZCB0aGUgcmVzdWx0IGNsYXNzCiAgICBjbGFzc19uYW1lc3BhY2UgPSB7CiAgICAgICAgJ19fZG9jX18nOiBmJ3t0eXBlbmFtZX0oe2FyZ19saXN0fSknLAogICAgICAgICdfX3Nsb3RzX18nOiAoKSwKICAgICAgICAnX2ZpZWxkcyc6IGZpZWxkX25hbWVzLAogICAgICAgICdfZmllbGRfZGVmYXVsdHMnOiBmaWVsZF9kZWZhdWx0cywKICAgICAgICAnX19uZXdfXyc6IF9fbmV3X18sCiAgICAgICAgJ19tYWtlJzogX21ha2UsCiAgICAgICAgJ19yZXBsYWNlJzogX3JlcGxhY2UsCiAgICAgICAgJ19fcmVwcl9fJzogX19yZXByX18sCiAgICAgICAgJ19hc2RpY3QnOiBfYXNkaWN0LAogICAgICAgICdfX2dldG5ld2FyZ3NfXyc6IF9fZ2V0bmV3YXJnc19fLAogICAgICAgICdfX21hdGNoX2FyZ3NfXyc6IGZpZWxkX25hbWVzLAogICAgfQogICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZShmaWVsZF9uYW1lcyk6CiAgICAgICAgZG9jID0gX3N5cy5pbnRlcm4oZidBbGlhcyBmb3IgZmllbGQgbnVtYmVyIHtpbmRleH0nKQogICAgICAgIGNsYXNzX25hbWVzcGFjZVtuYW1lXSA9IF90dXBsZWdldHRlcihpbmRleCwgZG9jKQoKICAgIHJlc3VsdCA9IHR5cGUodHlwZW5hbWUsICh0dXBsZSwpLCBjbGFzc19uYW1lc3BhY2UpCgogICAgIyBGb3IgcGlja2xpbmcgdG8gd29yaywgdGhlIF9fbW9kdWxlX18gdmFyaWFibGUgbmVlZHMgdG8gYmUgc2V0IHRvIHRoZSBmcmFtZQogICAgIyB3aGVyZSB0aGUgbmFtZWQgdHVwbGUgaXMgY3JlYXRlZC4gIEJ5cGFzcyB0aGlzIHN0ZXAgaW4gZW52aXJvbm1lbnRzIHdoZXJlCiAgICAjIHN5cy5fZ2V0ZnJhbWUgaXMgbm90IGRlZmluZWQgKEp5dGhvbiBmb3IgZXhhbXBsZSkgb3Igc3lzLl9nZXRmcmFtZSBpcyBub3QKICAgICMgZGVmaW5lZCBmb3IgYXJndW1lbnRzIGdyZWF0ZXIgdGhhbiAwIChJcm9uUHl0aG9uKSwgb3Igd2hlcmUgdGhlIHVzZXIgaGFzCiAgICAjIHNwZWNpZmllZCBhIHBhcnRpY3VsYXIgbW9kdWxlLgogICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBtb2R1bGUgPSBfc3lzLl9nZXRmcmFtZSgxKS5mX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycsICdfX21haW5fXycpCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgIHBhc3MKICAgIGlmIG1vZHVsZSBpcyBub3QgTm9uZToKICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IG1vZHVsZQoKICAgIHJldHVybiByZXN1bHQKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICBDb3VudGVyCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZGVmIF9jb3VudF9lbGVtZW50cyhtYXBwaW5nLCBpdGVyYWJsZSk6CiAgICAnVGFsbHkgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUuJwogICAgbWFwcGluZ19nZXQgPSBtYXBwaW5nLmdldAogICAgZm9yIGVsZW0gaW4gaXRlcmFibGU6CiAgICAgICAgbWFwcGluZ1tlbGVtXSA9IG1hcHBpbmdfZ2V0KGVsZW0sIDApICsgMQoKdHJ5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTG9hZCBDIGhlbHBlciBmdW5jdGlvbiBpZiBhdmFpbGFibGUKICAgIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBfY291bnRfZWxlbWVudHMKZXhjZXB0IEltcG9ydEVycm9yOgogICAgcGFzcwoKY2xhc3MgQ291bnRlcihkaWN0KToKICAgICcnJ0RpY3Qgc3ViY2xhc3MgZm9yIGNvdW50aW5nIGhhc2hhYmxlIGl0ZW1zLiAgU29tZXRpbWVzIGNhbGxlZCBhIGJhZwogICAgb3IgbXVsdGlzZXQuICBFbGVtZW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkga2V5cyBhbmQgdGhlaXIgY291bnRzCiAgICBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkgdmFsdWVzLgoKICAgID4+PiBjID0gQ291bnRlcignYWJjZGVhYmNkYWJjYWJhJykgICMgY291bnQgZWxlbWVudHMgZnJvbSBhIHN0cmluZwoKICAgID4+PiBjLm1vc3RfY29tbW9uKDMpICAgICAgICAgICAgICAgICMgdGhyZWUgbW9zdCBjb21tb24gZWxlbWVudHMKICAgIFsoJ2EnLCA1KSwgKCdiJywgNCksICgnYycsIDMpXQogICAgPj4+IHNvcnRlZChjKSAgICAgICAgICAgICAgICAgICAgICAgIyBsaXN0IGFsbCB1bmlxdWUgZWxlbWVudHMKICAgIFsnYScsICdiJywgJ2MnLCAnZCcsICdlJ10KICAgID4+PiAnJy5qb2luKHNvcnRlZChjLmVsZW1lbnRzKCkpKSAgICMgbGlzdCBlbGVtZW50cyB3aXRoIHJlcGV0aXRpb25zCiAgICAnYWFhYWFiYmJiY2NjZGRlJwogICAgPj4+IHN1bShjLnZhbHVlcygpKSAgICAgICAgICAgICAgICAgIyB0b3RhbCBvZiBhbGwgY291bnRzCiAgICAxNQoKICAgID4+PiBjWydhJ10gICAgICAgICAgICAgICAgICAgICAgICAgICMgY291bnQgb2YgbGV0dGVyICdhJwogICAgNQogICAgPj4+IGZvciBlbGVtIGluICdzaGF6YW0nOiAgICAgICAgICAgIyB1cGRhdGUgY291bnRzIGZyb20gYW4gaXRlcmFibGUKICAgIC4uLiAgICAgY1tlbGVtXSArPSAxICAgICAgICAgICAgICAgICMgYnkgYWRkaW5nIDEgdG8gZWFjaCBlbGVtZW50J3MgY291bnQKICAgID4+PiBjWydhJ10gICAgICAgICAgICAgICAgICAgICAgICAgICMgbm93IHRoZXJlIGFyZSBzZXZlbiAnYScKICAgIDcKICAgID4+PiBkZWwgY1snYiddICAgICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIGFsbCAnYicKICAgID4+PiBjWydiJ10gICAgICAgICAgICAgICAgICAgICAgICAgICMgbm93IHRoZXJlIGFyZSB6ZXJvICdiJwogICAgMAoKICAgID4+PiBkID0gQ291bnRlcignc2ltc2FsYWJpbScpICAgICAgICMgbWFrZSBhbm90aGVyIGNvdW50ZXIKICAgID4+PiBjLnVwZGF0ZShkKSAgICAgICAgICAgICAgICAgICAgICMgYWRkIGluIHRoZSBzZWNvbmQgY291bnRlcgogICAgPj4+IGNbJ2EnXSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub3cgdGhlcmUgYXJlIG5pbmUgJ2EnCiAgICA5CgogICAgPj4+IGMuY2xlYXIoKSAgICAgICAgICAgICAgICAgICAgICAgIyBlbXB0eSB0aGUgY291bnRlcgogICAgPj4+IGMKICAgIENvdW50ZXIoKQoKICAgIE5vdGU6ICBJZiBhIGNvdW50IGlzIHNldCB0byB6ZXJvIG9yIHJlZHVjZWQgdG8gemVybywgaXQgd2lsbCByZW1haW4KICAgIGluIHRoZSBjb3VudGVyIHVudGlsIHRoZSBlbnRyeSBpcyBkZWxldGVkIG9yIHRoZSBjb3VudGVyIGlzIGNsZWFyZWQ6CgogICAgPj4+IGMgPSBDb3VudGVyKCdhYWFiYmMnKQogICAgPj4+IGNbJ2InXSAtPSAyICAgICAgICAgICAgICAgICAgICAgIyByZWR1Y2UgdGhlIGNvdW50IG9mICdiJyBieSB0d28KICAgID4+PiBjLm1vc3RfY29tbW9uKCkgICAgICAgICAgICAgICAgICMgJ2InIGlzIHN0aWxsIGluLCBidXQgaXRzIGNvdW50IGlzIHplcm8KICAgIFsoJ2EnLCAzKSwgKCdjJywgMSksICgnYicsIDApXQoKICAgICcnJwogICAgIyBSZWZlcmVuY2VzOgogICAgIyAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTXVsdGlzZXQKICAgICMgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc21hbGx0YWxrL21hbnVhbC1iYXNlL2h0bWxfbm9kZS9CYWcuaHRtbAogICAgIyAgIGh0dHA6Ly93d3cuZGVtbzJzLmNvbS9UdXRvcmlhbC9DcHAvMDM4MF9fc2V0LW11bHRpc2V0L0NhdGFsb2cwMzgwX19zZXQtbXVsdGlzZXQuaHRtCiAgICAjICAgaHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvMjU5MTc0LwogICAgIyAgIEtudXRoLCBUQU9DUCBWb2wuIElJIHNlY3Rpb24gNC42LjMKCiAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGU9Tm9uZSwgLywgKiprd2RzKToKICAgICAgICAnJydDcmVhdGUgYSBuZXcsIGVtcHR5IENvdW50ZXIgb2JqZWN0LiAgQW5kIGlmIGdpdmVuLCBjb3VudCBlbGVtZW50cwogICAgICAgIGZyb20gYW4gaW5wdXQgaXRlcmFibGUuICBPciwgaW5pdGlhbGl6ZSB0aGUgY291bnQgZnJvbSBhbm90aGVyIG1hcHBpbmcKICAgICAgICBvZiBlbGVtZW50cyB0byB0aGVpciBjb3VudHMuCgogICAgICAgID4+PiBjID0gQ291bnRlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG5ldywgZW1wdHkgY291bnRlcgogICAgICAgID4+PiBjID0gQ291bnRlcignZ2FsbGFoYWQnKSAgICAgICAgICAgICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20gYW4gaXRlcmFibGUKICAgICAgICA+Pj4gYyA9IENvdW50ZXIoeydhJzogNCwgJ2InOiAyfSkgICAgICAgICAgICMgYSBuZXcgY291bnRlciBmcm9tIGEgbWFwcGluZwogICAgICAgID4+PiBjID0gQ291bnRlcihhPTQsIGI9MikgICAgICAgICAgICAgICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20ga2V5d29yZCBhcmdzCgogICAgICAgICcnJwogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYudXBkYXRlKGl0ZXJhYmxlLCAqKmt3ZHMpCgogICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6CiAgICAgICAgJ1RoZSBjb3VudCBvZiBlbGVtZW50cyBub3QgaW4gdGhlIENvdW50ZXIgaXMgemVyby4nCiAgICAgICAgIyBOZWVkZWQgc28gdGhhdCBzZWxmW21pc3NpbmdfaXRlbV0gZG9lcyBub3QgcmFpc2UgS2V5RXJyb3IKICAgICAgICByZXR1cm4gMAoKICAgIGRlZiB0b3RhbChzZWxmKToKICAgICAgICAnU3VtIG9mIHRoZSBjb3VudHMnCiAgICAgICAgcmV0dXJuIHN1bShzZWxmLnZhbHVlcygpKQoKICAgIGRlZiBtb3N0X2NvbW1vbihzZWxmLCBuPU5vbmUpOgogICAgICAgICcnJ0xpc3QgdGhlIG4gbW9zdCBjb21tb24gZWxlbWVudHMgYW5kIHRoZWlyIGNvdW50cyBmcm9tIHRoZSBtb3N0CiAgICAgICAgY29tbW9uIHRvIHRoZSBsZWFzdC4gIElmIG4gaXMgTm9uZSwgdGhlbiBsaXN0IGFsbCBlbGVtZW50IGNvdW50cy4KCiAgICAgICAgPj4+IENvdW50ZXIoJ2FicmFjYWRhYnJhJykubW9zdF9jb21tb24oMykKICAgICAgICBbKCdhJywgNSksICgnYicsIDIpLCAoJ3InLCAyKV0KCiAgICAgICAgJycnCiAgICAgICAgIyBFbXVsYXRlIEJhZy5zb3J0ZWRCeUNvdW50IGZyb20gU21hbGx0YWxrCiAgICAgICAgaWYgbiBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc29ydGVkKHNlbGYuaXRlbXMoKSwga2V5PV9pdGVtZ2V0dGVyKDEpLCByZXZlcnNlPVRydWUpCgogICAgICAgICMgTGF6eSBpbXBvcnQgdG8gc3BlZWR1cCBQeXRob24gc3RhcnR1cCB0aW1lCiAgICAgICAgaW1wb3J0IGhlYXBxCiAgICAgICAgcmV0dXJuIGhlYXBxLm5sYXJnZXN0KG4sIHNlbGYuaXRlbXMoKSwga2V5PV9pdGVtZ2V0dGVyKDEpKQoKICAgIGRlZiBlbGVtZW50cyhzZWxmKToKICAgICAgICAnJydJdGVyYXRvciBvdmVyIGVsZW1lbnRzIHJlcGVhdGluZyBlYWNoIGFzIG1hbnkgdGltZXMgYXMgaXRzIGNvdW50LgoKICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ0FCQ0FCQycpCiAgICAgICAgPj4+IHNvcnRlZChjLmVsZW1lbnRzKCkpCiAgICAgICAgWydBJywgJ0EnLCAnQicsICdCJywgJ0MnLCAnQyddCgogICAgICAgICMgS251dGgncyBleGFtcGxlIGZvciBwcmltZSBmYWN0b3JzIG9mIDE4MzY6ICAyKioyICogMyoqMyAqIDE3KioxCiAgICAgICAgPj4+IGltcG9ydCBtYXRoCiAgICAgICAgPj4+IHByaW1lX2ZhY3RvcnMgPSBDb3VudGVyKHsyOiAyLCAzOiAzLCAxNzogMX0pCiAgICAgICAgPj4+IG1hdGgucHJvZChwcmltZV9mYWN0b3JzLmVsZW1lbnRzKCkpCiAgICAgICAgMTgzNgoKICAgICAgICBOb3RlLCBpZiBhbiBlbGVtZW50J3MgY291bnQgaGFzIGJlZW4gc2V0IHRvIHplcm8gb3IgaXMgYSBuZWdhdGl2ZQogICAgICAgIG51bWJlciwgZWxlbWVudHMoKSB3aWxsIGlnbm9yZSBpdC4KCiAgICAgICAgJycnCiAgICAgICAgIyBFbXVsYXRlIEJhZy5kbyBmcm9tIFNtYWxsdGFsayBhbmQgTXVsdGlzZXQuYmVnaW4gZnJvbSBDKysuCiAgICAgICAgcmV0dXJuIF9jaGFpbi5mcm9tX2l0ZXJhYmxlKF9zdGFybWFwKF9yZXBlYXQsIHNlbGYuaXRlbXMoKSkpCgogICAgIyBPdmVycmlkZSBkaWN0IG1ldGhvZHMgd2hlcmUgbmVjZXNzYXJ5CgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbWtleXMoY2xzLCBpdGVyYWJsZSwgdj1Ob25lKToKICAgICAgICAjIFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgbWV0aG9kIGZvciBjb3VudGVycyBiZWNhdXNlIHRoZSBzZW1hbnRpY3MKICAgICAgICAjIHdvdWxkIGJlIGFtYmlndW91cyBpbiBjYXNlcyBzdWNoIGFzIENvdW50ZXIuZnJvbWtleXMoJ2FhYWJiYycsIHY9MikuCiAgICAgICAgIyBJbml0aWFsaXppbmcgY291bnRlcnMgdG8gemVybyB2YWx1ZXMgaXNuJ3QgbmVjZXNzYXJ5IGJlY2F1c2UgemVybwogICAgICAgICMgaXMgYWxyZWFkeSB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgY291bnRlciBsb29rdXBzLiAgSW5pdGlhbGl6aW5nCiAgICAgICAgIyB0byBvbmUgaXMgZWFzaWx5IGFjY29tcGxpc2hlZCB3aXRoIENvdW50ZXIoc2V0KGl0ZXJhYmxlKSkuICBGb3IKICAgICAgICAjIG1vcmUgZXhvdGljIGNhc2VzLCBjcmVhdGUgYSBkaWN0aW9uYXJ5IGZpcnN0IHVzaW5nIGEgZGljdGlvbmFyeQogICAgICAgICMgY29tcHJlaGVuc2lvbiBvciBkaWN0LmZyb21rZXlzKCkuCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKICAgICAgICAgICAgJ0NvdW50ZXIuZnJvbWtleXMoKSBpcyB1bmRlZmluZWQuICBVc2UgQ291bnRlcihpdGVyYWJsZSkgaW5zdGVhZC4nKQoKICAgIGRlZiB1cGRhdGUoc2VsZiwgaXRlcmFibGU9Tm9uZSwgLywgKiprd2RzKToKICAgICAgICAnJydMaWtlIGRpY3QudXBkYXRlKCkgYnV0IGFkZCBjb3VudHMgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlbS4KCiAgICAgICAgU291cmNlIGNhbiBiZSBhbiBpdGVyYWJsZSwgYSBkaWN0aW9uYXJ5LCBvciBhbm90aGVyIENvdW50ZXIgaW5zdGFuY2UuCgogICAgICAgID4+PiBjID0gQ291bnRlcignd2hpY2gnKQogICAgICAgID4+PiBjLnVwZGF0ZSgnd2l0Y2gnKSAgICAgICAgICAgIyBhZGQgZWxlbWVudHMgZnJvbSBhbm90aGVyIGl0ZXJhYmxlCiAgICAgICAgPj4+IGQgPSBDb3VudGVyKCd3YXRjaCcpCiAgICAgICAgPj4+IGMudXBkYXRlKGQpICAgICAgICAgICAgICAgICAjIGFkZCBlbGVtZW50cyBmcm9tIGFub3RoZXIgY291bnRlcgogICAgICAgID4+PiBjWydoJ10gICAgICAgICAgICAgICAgICAgICAgIyBmb3VyICdoJyBpbiB3aGljaCwgd2l0Y2gsIGFuZCB3YXRjaAogICAgICAgIDQKCiAgICAgICAgJycnCiAgICAgICAgIyBUaGUgcmVndWxhciBkaWN0LnVwZGF0ZSgpIG9wZXJhdGlvbiBtYWtlcyBubyBzZW5zZSBoZXJlIGJlY2F1c2UgdGhlCiAgICAgICAgIyByZXBsYWNlIGJlaGF2aW9yIHJlc3VsdHMgaW4gdGhlIHNvbWUgb2Ygb3JpZ2luYWwgdW50b3VjaGVkIGNvdW50cwogICAgICAgICMgYmVpbmcgbWl4ZWQtaW4gd2l0aCBhbGwgb2YgdGhlIG90aGVyIGNvdW50cyBmb3IgYSBtaXNtYXNoIHRoYXQKICAgICAgICAjIGRvZXNuJ3QgaGF2ZSBhIHN0cmFpZ2h0LWZvcndhcmQgaW50ZXJwcmV0YXRpb24gaW4gbW9zdCBjb3VudGluZwogICAgICAgICMgY29udGV4dHMuICBJbnN0ZWFkLCB3ZSBpbXBsZW1lbnQgc3RyYWlnaHQtYWRkaXRpb24uICBCb3RoIHRoZSBpbnB1dHMKICAgICAgICAjIGFuZCBvdXRwdXRzIGFyZSBhbGxvd2VkIHRvIGNvbnRhaW4gemVybyBhbmQgbmVnYXRpdmUgY291bnRzLgoKICAgICAgICBpZiBpdGVyYWJsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVyYWJsZSwgX2NvbGxlY3Rpb25zX2FiYy5NYXBwaW5nKToKICAgICAgICAgICAgICAgIGlmIHNlbGY6CiAgICAgICAgICAgICAgICAgICAgc2VsZl9nZXQgPSBzZWxmLmdldAogICAgICAgICAgICAgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBpdGVyYWJsZS5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmW2VsZW1dID0gY291bnQgKyBzZWxmX2dldChlbGVtLCAwKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIGZhc3QgcGF0aCB3aGVuIGNvdW50ZXIgaXMgZW1wdHkKICAgICAgICAgICAgICAgICAgICBzdXBlcigpLnVwZGF0ZShpdGVyYWJsZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIF9jb3VudF9lbGVtZW50cyhzZWxmLCBpdGVyYWJsZSkKICAgICAgICBpZiBrd2RzOgogICAgICAgICAgICBzZWxmLnVwZGF0ZShrd2RzKQoKICAgIGRlZiBzdWJ0cmFjdChzZWxmLCBpdGVyYWJsZT1Ob25lLCAvLCAqKmt3ZHMpOgogICAgICAgICcnJ0xpa2UgZGljdC51cGRhdGUoKSBidXQgc3VidHJhY3RzIGNvdW50cyBpbnN0ZWFkIG9mIHJlcGxhY2luZyB0aGVtLgogICAgICAgIENvdW50cyBjYW4gYmUgcmVkdWNlZCBiZWxvdyB6ZXJvLiAgQm90aCB0aGUgaW5wdXRzIGFuZCBvdXRwdXRzIGFyZQogICAgICAgIGFsbG93ZWQgdG8gY29udGFpbiB6ZXJvIGFuZCBuZWdhdGl2ZSBjb3VudHMuCgogICAgICAgIFNvdXJjZSBjYW4gYmUgYW4gaXRlcmFibGUsIGEgZGljdGlvbmFyeSwgb3IgYW5vdGhlciBDb3VudGVyIGluc3RhbmNlLgoKICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ3doaWNoJykKICAgICAgICA+Pj4gYy5zdWJ0cmFjdCgnd2l0Y2gnKSAgICAgICAgICAgICAjIHN1YnRyYWN0IGVsZW1lbnRzIGZyb20gYW5vdGhlciBpdGVyYWJsZQogICAgICAgID4+PiBjLnN1YnRyYWN0KENvdW50ZXIoJ3dhdGNoJykpICAgICMgc3VidHJhY3QgZWxlbWVudHMgZnJvbSBhbm90aGVyIGNvdW50ZXIKICAgICAgICA+Pj4gY1snaCddICAgICAgICAgICAgICAgICAgICAgICAgICAjIDIgaW4gd2hpY2gsIG1pbnVzIDEgaW4gd2l0Y2gsIG1pbnVzIDEgaW4gd2F0Y2gKICAgICAgICAwCiAgICAgICAgPj4+IGNbJ3cnXSAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxIGluIHdoaWNoLCBtaW51cyAxIGluIHdpdGNoLCBtaW51cyAxIGluIHdhdGNoCiAgICAgICAgLTEKCiAgICAgICAgJycnCiAgICAgICAgaWYgaXRlcmFibGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGZfZ2V0ID0gc2VsZi5nZXQKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVyYWJsZSwgX2NvbGxlY3Rpb25zX2FiYy5NYXBwaW5nKToKICAgICAgICAgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBpdGVyYWJsZS5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgIHNlbGZbZWxlbV0gPSBzZWxmX2dldChlbGVtLCAwKSAtIGNvdW50CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiBpdGVyYWJsZToKICAgICAgICAgICAgICAgICAgICBzZWxmW2VsZW1dID0gc2VsZl9nZXQoZWxlbSwgMCkgLSAxCiAgICAgICAgaWYga3dkczoKICAgICAgICAgICAgc2VsZi5zdWJ0cmFjdChrd2RzKQoKICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgICdSZXR1cm4gYSBzaGFsbG93IGNvcHkuJwogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmKQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKGRpY3Qoc2VsZiksKQoKICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBlbGVtKToKICAgICAgICAnTGlrZSBkaWN0Ll9fZGVsaXRlbV9fKCkgYnV0IGRvZXMgbm90IHJhaXNlIEtleUVycm9yIGZvciBtaXNzaW5nIHZhbHVlcy4nCiAgICAgICAgaWYgZWxlbSBpbiBzZWxmOgogICAgICAgICAgICBzdXBlcigpLl9fZGVsaXRlbV9fKGVsZW0pCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmOgogICAgICAgICAgICByZXR1cm4gZid7c2VsZi5fX2NsYXNzX18uX19uYW1lX199KCknCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIGRpY3QoKSBwcmVzZXJ2ZXMgdGhlIG9yZGVyaW5nIHJldHVybmVkIGJ5IG1vc3RfY29tbW9uKCkKICAgICAgICAgICAgZCA9IGRpY3Qoc2VsZi5tb3N0X2NvbW1vbigpKQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICMgaGFuZGxlIGNhc2Ugd2hlcmUgdmFsdWVzIGFyZSBub3Qgb3JkZXJhYmxlCiAgICAgICAgICAgIGQgPSBkaWN0KHNlbGYpCiAgICAgICAgcmV0dXJuIGYne3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffSh7ZCFyfSknCgogICAgIyBNdWx0aXNldC1zdHlsZSBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBkaXNjdXNzZWQgaW46CiAgICAjICAgICAgIEtudXRoIFRBT0NQIFZvbHVtZSBJSSBzZWN0aW9uIDQuNi4zIGV4ZXJjaXNlIDE5CiAgICAjICAgICAgIGFuZCBhdCBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpc2V0CiAgICAjCiAgICAjIE91dHB1dHMgZ3VhcmFudGVlZCB0byBvbmx5IGluY2x1ZGUgcG9zaXRpdmUgY291bnRzLgogICAgIwogICAgIyBUbyBzdHJpcCBuZWdhdGl2ZSBhbmQgemVybyBjb3VudHMsIGFkZC1pbiBhbiBlbXB0eSBjb3VudGVyOgogICAgIyAgICAgICBjICs9IENvdW50ZXIoKQogICAgIwogICAgIyBSZXN1bHRzIGFyZSBvcmRlcmVkIGFjY29yZGluZyB0byB3aGVuIGFuIGVsZW1lbnQgaXMgZmlyc3QKICAgICMgZW5jb3VudGVyZWQgaW4gdGhlIGxlZnQgb3BlcmFuZCBhbmQgdGhlbiBieSB0aGUgb3JkZXIKICAgICMgZW5jb3VudGVyZWQgaW4gdGhlIHJpZ2h0IG9wZXJhbmQuCiAgICAjCiAgICAjIFdoZW4gdGhlIG11bHRpcGxpY2l0aWVzIGFyZSBhbGwgemVybyBvciBvbmUsIG11bHRpc2V0IG9wZXJhdGlvbnMKICAgICMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb25zCiAgICAjIGZvciByZWd1bGFyIHNldHMuCiAgICAjICAgICBHaXZlbiBjb3VudGVyIG11bHRpc2V0cyBzdWNoIGFzOgogICAgIyAgICAgICAgIGNwID0gQ291bnRlcihhPTEsIGI9MCwgYz0xKQogICAgIyAgICAgICAgIGNxID0gQ291bnRlcihjPTEsIGQ9MCwgZT0xKQogICAgIyAgICAgVGhlIGNvcnJlc3BvbmRpbmcgcmVndWxhciBzZXRzIHdvdWxkIGJlOgogICAgIyAgICAgICAgIHNwID0geydhJywgJ2MnfQogICAgIyAgICAgICAgIHNxID0geydjJywgJ2UnfQogICAgIyAgICAgQWxsIG9mIHRoZSBmb2xsb3dpbmcgcmVsYXRpb25zIHdvdWxkIGhvbGQ6CiAgICAjICAgICAgICAgc2V0KGNwICsgY3EpID09IHNwIHwgc3EKICAgICMgICAgICAgICBzZXQoY3AgLSBjcSkgPT0gc3AgLSBzcQogICAgIyAgICAgICAgIHNldChjcCB8IGNxKSA9PSBzcCB8IHNxCiAgICAjICAgICAgICAgc2V0KGNwICYgY3EpID09IHNwICYgc3EKICAgICMgICAgICAgICAoY3AgPT0gY3EpID09IChzcCA9PSBzcSkKICAgICMgICAgICAgICAoY3AgIT0gY3EpID09IChzcCAhPSBzcSkKICAgICMgICAgICAgICAoY3AgPD0gY3EpID09IChzcCA8PSBzcSkKICAgICMgICAgICAgICAoY3AgPCBjcSkgPT0gKHNwIDwgc3EpCiAgICAjICAgICAgICAgKGNwID49IGNxKSA9PSAoc3AgPj0gc3EpCiAgICAjICAgICAgICAgKGNwID4gY3EpID09IChzcCA+IHNxKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICdUcnVlIGlmIGFsbCBjb3VudHMgYWdyZWUuIE1pc3NpbmcgY291bnRzIGFyZSB0cmVhdGVkIGFzIHplcm8uJwogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBDb3VudGVyKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIGFsbChzZWxmW2VdID09IG90aGVyW2VdIGZvciBjIGluIChzZWxmLCBvdGhlcikgZm9yIGUgaW4gYykKCiAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAnVHJ1ZSBpZiBhbnkgY291bnRzIGRpc2FncmVlLiBNaXNzaW5nIGNvdW50cyBhcmUgdHJlYXRlZCBhcyB6ZXJvLicKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgQ291bnRlcik6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJldHVybiBub3Qgc2VsZiA9PSBvdGhlcgoKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICdUcnVlIGlmIGFsbCBjb3VudHMgaW4gc2VsZiBhcmUgYSBzdWJzZXQgb2YgdGhvc2UgaW4gb3RoZXIuJwogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBDb3VudGVyKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIGFsbChzZWxmW2VdIDw9IG90aGVyW2VdIGZvciBjIGluIChzZWxmLCBvdGhlcikgZm9yIGUgaW4gYykKCiAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICAnVHJ1ZSBpZiBhbGwgY291bnRzIGluIHNlbGYgYXJlIGEgcHJvcGVyIHN1YnNldCBvZiB0aG9zZSBpbiBvdGhlci4nCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIENvdW50ZXIpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gc2VsZiA8PSBvdGhlciBhbmQgc2VsZiAhPSBvdGhlcgoKICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICdUcnVlIGlmIGFsbCBjb3VudHMgaW4gc2VsZiBhcmUgYSBzdXBlcnNldCBvZiB0aG9zZSBpbiBvdGhlci4nCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIENvdW50ZXIpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gYWxsKHNlbGZbZV0gPj0gb3RoZXJbZV0gZm9yIGMgaW4gKHNlbGYsIG90aGVyKSBmb3IgZSBpbiBjKQoKICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICdUcnVlIGlmIGFsbCBjb3VudHMgaW4gc2VsZiBhcmUgYSBwcm9wZXIgc3VwZXJzZXQgb2YgdGhvc2UgaW4gb3RoZXIuJwogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBDb3VudGVyKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHNlbGYgPj0gb3RoZXIgYW5kIHNlbGYgIT0gb3RoZXIKCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgJycnQWRkIGNvdW50cyBmcm9tIHR3byBjb3VudGVycy4KCiAgICAgICAgPj4+IENvdW50ZXIoJ2FiYmInKSArIENvdW50ZXIoJ2JjYycpCiAgICAgICAgQ291bnRlcih7J2InOiA0LCAnYyc6IDIsICdhJzogMX0pCgogICAgICAgICcnJwogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBDb3VudGVyKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmVzdWx0ID0gQ291bnRlcigpCiAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIHNlbGYuaXRlbXMoKToKICAgICAgICAgICAgbmV3Y291bnQgPSBjb3VudCArIG90aGVyW2VsZW1dCiAgICAgICAgICAgIGlmIG5ld2NvdW50ID4gMDoKICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IG5ld2NvdW50CiAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIG90aGVyLml0ZW1zKCk6CiAgICAgICAgICAgIGlmIGVsZW0gbm90IGluIHNlbGYgYW5kIGNvdW50ID4gMDoKICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IGNvdW50CiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyKToKICAgICAgICAnJycgU3VidHJhY3QgY291bnQsIGJ1dCBrZWVwIG9ubHkgcmVzdWx0cyB3aXRoIHBvc2l0aXZlIGNvdW50cy4KCiAgICAgICAgPj4+IENvdW50ZXIoJ2FiYmJjJykgLSBDb3VudGVyKCdiY2NkJykKICAgICAgICBDb3VudGVyKHsnYic6IDIsICdhJzogMX0pCgogICAgICAgICcnJwogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBDb3VudGVyKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmVzdWx0ID0gQ291bnRlcigpCiAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIHNlbGYuaXRlbXMoKToKICAgICAgICAgICAgbmV3Y291bnQgPSBjb3VudCAtIG90aGVyW2VsZW1dCiAgICAgICAgICAgIGlmIG5ld2NvdW50ID4gMDoKICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IG5ld2NvdW50CiAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIG90aGVyLml0ZW1zKCk6CiAgICAgICAgICAgIGlmIGVsZW0gbm90IGluIHNlbGYgYW5kIGNvdW50IDwgMDoKICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IDAgLSBjb3VudAogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKICAgICAgICAnJydVbmlvbiBpcyB0aGUgbWF4aW11bSBvZiB2YWx1ZSBpbiBlaXRoZXIgb2YgdGhlIGlucHV0IGNvdW50ZXJzLgoKICAgICAgICA+Pj4gQ291bnRlcignYWJiYicpIHwgQ291bnRlcignYmNjJykKICAgICAgICBDb3VudGVyKHsnYic6IDMsICdjJzogMiwgJ2EnOiAxfSkKCiAgICAgICAgJycnCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIENvdW50ZXIpOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXN1bHQgPSBDb3VudGVyKCkKICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgogICAgICAgICAgICBvdGhlcl9jb3VudCA9IG90aGVyW2VsZW1dCiAgICAgICAgICAgIG5ld2NvdW50ID0gb3RoZXJfY291bnQgaWYgY291bnQgPCBvdGhlcl9jb3VudCBlbHNlIGNvdW50CiAgICAgICAgICAgIGlmIG5ld2NvdW50ID4gMDoKICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IG5ld2NvdW50CiAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIG90aGVyLml0ZW1zKCk6CiAgICAgICAgICAgIGlmIGVsZW0gbm90IGluIHNlbGYgYW5kIGNvdW50ID4gMDoKICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IGNvdW50CiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKICAgICAgICAnJycgSW50ZXJzZWN0aW9uIGlzIHRoZSBtaW5pbXVtIG9mIGNvcnJlc3BvbmRpbmcgY291bnRzLgoKICAgICAgICA+Pj4gQ291bnRlcignYWJiYicpICYgQ291bnRlcignYmNjJykKICAgICAgICBDb3VudGVyKHsnYic6IDF9KQoKICAgICAgICAnJycKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgQ291bnRlcik6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIHJlc3VsdCA9IENvdW50ZXIoKQogICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCk6CiAgICAgICAgICAgIG90aGVyX2NvdW50ID0gb3RoZXJbZWxlbV0KICAgICAgICAgICAgbmV3Y291bnQgPSBjb3VudCBpZiBjb3VudCA8IG90aGVyX2NvdW50IGVsc2Ugb3RoZXJfY291bnQKICAgICAgICAgICAgaWYgbmV3Y291bnQgPiAwOgogICAgICAgICAgICAgICAgcmVzdWx0W2VsZW1dID0gbmV3Y291bnQKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIF9fcG9zX18oc2VsZik6CiAgICAgICAgJ0FkZHMgYW4gZW1wdHkgY291bnRlciwgZWZmZWN0aXZlbHkgc3RyaXBwaW5nIG5lZ2F0aXZlIGFuZCB6ZXJvIGNvdW50cycKICAgICAgICByZXN1bHQgPSBDb3VudGVyKCkKICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgogICAgICAgICAgICBpZiBjb3VudCA+IDA6CiAgICAgICAgICAgICAgICByZXN1bHRbZWxlbV0gPSBjb3VudAogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX19uZWdfXyhzZWxmKToKICAgICAgICAnJydTdWJ0cmFjdHMgZnJvbSBhbiBlbXB0eSBjb3VudGVyLiAgU3RyaXBzIHBvc2l0aXZlIGFuZCB6ZXJvIGNvdW50cywKICAgICAgICBhbmQgZmxpcHMgdGhlIHNpZ24gb24gbmVnYXRpdmUgY291bnRzLgoKICAgICAgICAnJycKICAgICAgICByZXN1bHQgPSBDb3VudGVyKCkKICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgogICAgICAgICAgICBpZiBjb3VudCA8IDA6CiAgICAgICAgICAgICAgICByZXN1bHRbZWxlbV0gPSAwIC0gY291bnQKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIF9rZWVwX3Bvc2l0aXZlKHNlbGYpOgogICAgICAgICcnJ0ludGVybmFsIG1ldGhvZCB0byBzdHJpcCBlbGVtZW50cyB3aXRoIGEgbmVnYXRpdmUgb3IgemVybyBjb3VudCcnJwogICAgICAgIG5vbnBvc2l0aXZlID0gW2VsZW0gZm9yIGVsZW0sIGNvdW50IGluIHNlbGYuaXRlbXMoKSBpZiBub3QgY291bnQgPiAwXQogICAgICAgIGZvciBlbGVtIGluIG5vbnBvc2l0aXZlOgogICAgICAgICAgICBkZWwgc2VsZltlbGVtXQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9faWFkZF9fKHNlbGYsIG90aGVyKToKICAgICAgICAnJydJbnBsYWNlIGFkZCBmcm9tIGFub3RoZXIgY291bnRlciwga2VlcGluZyBvbmx5IHBvc2l0aXZlIGNvdW50cy4KCiAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiJykKICAgICAgICA+Pj4gYyArPSBDb3VudGVyKCdiY2MnKQogICAgICAgID4+PiBjCiAgICAgICAgQ291bnRlcih7J2InOiA0LCAnYyc6IDIsICdhJzogMX0pCgogICAgICAgICcnJwogICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBvdGhlci5pdGVtcygpOgogICAgICAgICAgICBzZWxmW2VsZW1dICs9IGNvdW50CiAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQoKICAgIGRlZiBfX2lzdWJfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgJycnSW5wbGFjZSBzdWJ0cmFjdCBjb3VudGVyLCBidXQga2VlcCBvbmx5IHJlc3VsdHMgd2l0aCBwb3NpdGl2ZSBjb3VudHMuCgogICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYmMnKQogICAgICAgID4+PiBjIC09IENvdW50ZXIoJ2JjY2QnKQogICAgICAgID4+PiBjCiAgICAgICAgQ291bnRlcih7J2InOiAyLCAnYSc6IDF9KQoKICAgICAgICAnJycKICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gb3RoZXIuaXRlbXMoKToKICAgICAgICAgICAgc2VsZltlbGVtXSAtPSBjb3VudAogICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKCiAgICBkZWYgX19pb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgJycnSW5wbGFjZSB1bmlvbiBpcyB0aGUgbWF4aW11bSBvZiB2YWx1ZSBmcm9tIGVpdGhlciBjb3VudGVyLgoKICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmInKQogICAgICAgID4+PiBjIHw9IENvdW50ZXIoJ2JjYycpCiAgICAgICAgPj4+IGMKICAgICAgICBDb3VudGVyKHsnYic6IDMsICdjJzogMiwgJ2EnOiAxfSkKCiAgICAgICAgJycnCiAgICAgICAgZm9yIGVsZW0sIG90aGVyX2NvdW50IGluIG90aGVyLml0ZW1zKCk6CiAgICAgICAgICAgIGNvdW50ID0gc2VsZltlbGVtXQogICAgICAgICAgICBpZiBvdGhlcl9jb3VudCA+IGNvdW50OgogICAgICAgICAgICAgICAgc2VsZltlbGVtXSA9IG90aGVyX2NvdW50CiAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQoKICAgIGRlZiBfX2lhbmRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgJycnSW5wbGFjZSBpbnRlcnNlY3Rpb24gaXMgdGhlIG1pbmltdW0gb2YgY29ycmVzcG9uZGluZyBjb3VudHMuCgogICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYicpCiAgICAgICAgPj4+IGMgJj0gQ291bnRlcignYmNjJykKICAgICAgICA+Pj4gYwogICAgICAgIENvdW50ZXIoeydiJzogMX0pCgogICAgICAgICcnJwogICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCk6CiAgICAgICAgICAgIG90aGVyX2NvdW50ID0gb3RoZXJbZWxlbV0KICAgICAgICAgICAgaWYgb3RoZXJfY291bnQgPCBjb3VudDoKICAgICAgICAgICAgICAgIHNlbGZbZWxlbV0gPSBvdGhlcl9jb3VudAogICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICBDaGFpbk1hcAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmNsYXNzIENoYWluTWFwKF9jb2xsZWN0aW9uc19hYmMuTXV0YWJsZU1hcHBpbmcpOgogICAgJycnIEEgQ2hhaW5NYXAgZ3JvdXBzIG11bHRpcGxlIGRpY3RzIChvciBvdGhlciBtYXBwaW5ncykgdG9nZXRoZXIKICAgIHRvIGNyZWF0ZSBhIHNpbmdsZSwgdXBkYXRlYWJsZSB2aWV3LgoKICAgIFRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGFyZSBzdG9yZWQgaW4gYSBsaXN0LiAgVGhhdCBsaXN0IGlzIHB1YmxpYyBhbmQgY2FuCiAgICBiZSBhY2Nlc3NlZCBvciB1cGRhdGVkIHVzaW5nIHRoZSAqbWFwcyogYXR0cmlidXRlLiAgVGhlcmUgaXMgbm8gb3RoZXIKICAgIHN0YXRlLgoKICAgIExvb2t1cHMgc2VhcmNoIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIHN1Y2Nlc3NpdmVseSB1bnRpbCBhIGtleSBpcyBmb3VuZC4KICAgIEluIGNvbnRyYXN0LCB3cml0ZXMsIHVwZGF0ZXMsIGFuZCBkZWxldGlvbnMgb25seSBvcGVyYXRlIG9uIHRoZSBmaXJzdAogICAgbWFwcGluZy4KCiAgICAnJycKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKm1hcHMpOgogICAgICAgICcnJ0luaXRpYWxpemUgYSBDaGFpbk1hcCBieSBzZXR0aW5nICptYXBzKiB0byB0aGUgZ2l2ZW4gbWFwcGluZ3MuCiAgICAgICAgSWYgbm8gbWFwcGluZ3MgYXJlIHByb3ZpZGVkLCBhIHNpbmdsZSBlbXB0eSBkaWN0aW9uYXJ5IGlzIHVzZWQuCgogICAgICAgICcnJwogICAgICAgIHNlbGYubWFwcyA9IGxpc3QobWFwcykgb3IgW3t9XSAgICAgICAgICAjIGFsd2F5cyBhdCBsZWFzdCBvbmUgbWFwCgogICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6CiAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIGZvciBtYXBwaW5nIGluIHNlbGYubWFwczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmdba2V5XSAgICAgICAgICAgICAjIGNhbid0IHVzZSAna2V5IGluIG1hcHBpbmcnIHdpdGggZGVmYXVsdGRpY3QKICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIHJldHVybiBzZWxmLl9fbWlzc2luZ19fKGtleSkgICAgICAgICAgICAjIHN1cHBvcnQgc3ViY2xhc3NlcyB0aGF0IGRlZmluZSBfX21pc3NpbmdfXwoKICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmW2tleV0gaWYga2V5IGluIHNlbGYgZWxzZSBkZWZhdWx0CgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZXQoKS51bmlvbigqc2VsZi5tYXBzKSkgICAgICMgcmV1c2VzIHN0b3JlZCBoYXNoIHZhbHVlcyBpZiBwb3NzaWJsZQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICBkID0ge30KICAgICAgICBmb3IgbWFwcGluZyBpbiByZXZlcnNlZChzZWxmLm1hcHMpOgogICAgICAgICAgICBkLnVwZGF0ZShkaWN0LmZyb21rZXlzKG1hcHBpbmcpKSAgICAjIHJldXNlcyBzdG9yZWQgaGFzaCB2YWx1ZXMgaWYgcG9zc2libGUKICAgICAgICByZXR1cm4gaXRlcihkKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwga2V5KToKICAgICAgICByZXR1cm4gYW55KGtleSBpbiBtIGZvciBtIGluIHNlbGYubWFwcykKCiAgICBkZWYgX19ib29sX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGFueShzZWxmLm1hcHMpCgogICAgQF9yZWN1cnNpdmVfcmVwcigpCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYne3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffSh7IiwgIi5qb2luKG1hcChyZXByLCBzZWxmLm1hcHMpKX0pJwoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGZyb21rZXlzKGNscywgaXRlcmFibGUsICphcmdzKToKICAgICAgICAnQ3JlYXRlIGEgQ2hhaW5NYXAgd2l0aCBhIHNpbmdsZSBkaWN0IGNyZWF0ZWQgZnJvbSB0aGUgaXRlcmFibGUuJwogICAgICAgIHJldHVybiBjbHMoZGljdC5mcm9ta2V5cyhpdGVyYWJsZSwgKmFyZ3MpKQoKICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgICdOZXcgQ2hhaW5NYXAgb3Igc3ViY2xhc3Mgd2l0aCBhIG5ldyBjb3B5IG9mIG1hcHNbMF0gYW5kIHJlZnMgdG8gbWFwc1sxOl0nCiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYubWFwc1swXS5jb3B5KCksICpzZWxmLm1hcHNbMTpdKQoKICAgIF9fY29weV9fID0gY29weQoKICAgIGRlZiBuZXdfY2hpbGQoc2VsZiwgbT1Ob25lLCAqKmt3YXJncyk6ICAgICAgIyBsaWtlIERqYW5nbydzIENvbnRleHQucHVzaCgpCiAgICAgICAgJycnTmV3IENoYWluTWFwIHdpdGggYSBuZXcgbWFwIGZvbGxvd2VkIGJ5IGFsbCBwcmV2aW91cyBtYXBzLgogICAgICAgIElmIG5vIG1hcCBpcyBwcm92aWRlZCwgYW4gZW1wdHkgZGljdCBpcyB1c2VkLgogICAgICAgIEtleXdvcmQgYXJndW1lbnRzIHVwZGF0ZSB0aGUgbWFwIG9yIG5ldyBlbXB0eSBkaWN0LgogICAgICAgICcnJwogICAgICAgIGlmIG0gaXMgTm9uZToKICAgICAgICAgICAgbSA9IGt3YXJncwogICAgICAgIGVsaWYga3dhcmdzOgogICAgICAgICAgICBtLnVwZGF0ZShrd2FyZ3MpCiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKG0sICpzZWxmLm1hcHMpCgogICAgQHByb3BlcnR5CiAgICBkZWYgcGFyZW50cyhzZWxmKTogICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlrZSBEamFuZ28ncyBDb250ZXh0LnBvcCgpCiAgICAgICAgJ05ldyBDaGFpbk1hcCBmcm9tIG1hcHNbMTpdLicKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oKnNlbGYubWFwc1sxOl0pCgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgIHNlbGYubWFwc1swXVtrZXldID0gdmFsdWUKCiAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBzZWxmLm1hcHNbMF1ba2V5XQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoZidLZXkgbm90IGZvdW5kIGluIHRoZSBmaXJzdCBtYXBwaW5nOiB7a2V5IXJ9JykKCiAgICBkZWYgcG9waXRlbShzZWxmKToKICAgICAgICAnUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBwYWlyIGZyb20gbWFwc1swXS4gUmFpc2UgS2V5RXJyb3IgaXMgbWFwc1swXSBpcyBlbXB0eS4nCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5tYXBzWzBdLnBvcGl0ZW0oKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoJ05vIGtleXMgZm91bmQgaW4gdGhlIGZpcnN0IG1hcHBpbmcuJykKCiAgICBkZWYgcG9wKHNlbGYsIGtleSwgKmFyZ3MpOgogICAgICAgICdSZW1vdmUgKmtleSogZnJvbSBtYXBzWzBdIGFuZCByZXR1cm4gaXRzIHZhbHVlLiBSYWlzZSBLZXlFcnJvciBpZiAqa2V5KiBub3QgaW4gbWFwc1swXS4nCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5tYXBzWzBdLnBvcChrZXksICphcmdzKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoZidLZXkgbm90IGZvdW5kIGluIHRoZSBmaXJzdCBtYXBwaW5nOiB7a2V5IXJ9JykKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgJ0NsZWFyIG1hcHNbMF0sIGxlYXZpbmcgbWFwc1sxOl0gaW50YWN0LicKICAgICAgICBzZWxmLm1hcHNbMF0uY2xlYXIoKQoKICAgIGRlZiBfX2lvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBzZWxmLm1hcHNbMF0udXBkYXRlKG90aGVyKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9jb2xsZWN0aW9uc19hYmMuTWFwcGluZyk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIG0gPSBzZWxmLmNvcHkoKQogICAgICAgIG0ubWFwc1swXS51cGRhdGUob3RoZXIpCiAgICAgICAgcmV0dXJuIG0KCiAgICBkZWYgX19yb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9jb2xsZWN0aW9uc19hYmMuTWFwcGluZyk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgIG0gPSBkaWN0KG90aGVyKQogICAgICAgIGZvciBjaGlsZCBpbiByZXZlcnNlZChzZWxmLm1hcHMpOgogICAgICAgICAgICBtLnVwZGF0ZShjaGlsZCkKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18obSkKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgVXNlckRpY3QKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmNsYXNzIFVzZXJEaWN0KF9jb2xsZWN0aW9uc19hYmMuTXV0YWJsZU1hcHBpbmcpOgoKICAgICMgU3RhcnQgYnkgZmlsbGluZy1vdXQgdGhlIGFic3RyYWN0IG1ldGhvZHMKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaWN0PU5vbmUsIC8sICoqa3dhcmdzKToKICAgICAgICBzZWxmLmRhdGEgPSB7fQogICAgICAgIGlmIGRpY3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYudXBkYXRlKGRpY3QpCiAgICAgICAgaWYga3dhcmdzOgogICAgICAgICAgICBzZWxmLnVwZGF0ZShrd2FyZ3MpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgaWYga2V5IGluIHNlbGYuZGF0YToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtrZXldCiAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9fY2xhc3NfXywgIl9fbWlzc2luZ19fIik6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXy5fX21pc3NpbmdfXyhzZWxmLCBrZXkpCiAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIGl0ZW0pOgogICAgICAgIHNlbGYuZGF0YVtrZXldID0gaXRlbQoKICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgIGRlbCBzZWxmLmRhdGFba2V5XQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gaXRlcihzZWxmLmRhdGEpCgogICAgIyBNb2RpZnkgX19jb250YWluc19fIHRvIHdvcmsgY29ycmVjdGx5IHdoZW4gX19taXNzaW5nX18gaXMgcHJlc2VudAogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5kYXRhCgogICAgIyBOb3csIGFkZCB0aGUgbWV0aG9kcyBpbiBkaWN0cyBidXQgbm90IGluIE11dGFibGVNYXBwaW5nCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHJlcHIoc2VsZi5kYXRhKQoKICAgIGRlZiBfX29yX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFVzZXJEaWN0KToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YSB8IG90aGVyLmRhdGEpCiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGljdCk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEgfCBvdGhlcikKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBkZWYgX19yb3JfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVXNlckRpY3QpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18ob3RoZXIuZGF0YSB8IHNlbGYuZGF0YSkKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkaWN0KToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKG90aGVyIHwgc2VsZi5kYXRhKQogICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgIGRlZiBfX2lvcl9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBVc2VyRGljdCk6CiAgICAgICAgICAgIHNlbGYuZGF0YSB8PSBvdGhlci5kYXRhCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5kYXRhIHw9IG90aGVyCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19jb3B5X18oc2VsZik6CiAgICAgICAgaW5zdCA9IHNlbGYuX19jbGFzc19fLl9fbmV3X18oc2VsZi5fX2NsYXNzX18pCiAgICAgICAgaW5zdC5fX2RpY3RfXy51cGRhdGUoc2VsZi5fX2RpY3RfXykKICAgICAgICAjIENyZWF0ZSBhIGNvcHkgYW5kIGF2b2lkIHRyaWdnZXJpbmcgZGVzY3JpcHRvcnMKICAgICAgICBpbnN0Ll9fZGljdF9fWyJkYXRhIl0gPSBzZWxmLl9fZGljdF9fWyJkYXRhIl0uY29weSgpCiAgICAgICAgcmV0dXJuIGluc3QKCiAgICBkZWYgY29weShzZWxmKToKICAgICAgICBpZiBzZWxmLl9fY2xhc3NfXyBpcyBVc2VyRGljdDoKICAgICAgICAgICAgcmV0dXJuIFVzZXJEaWN0KHNlbGYuZGF0YS5jb3B5KCkpCiAgICAgICAgaW1wb3J0IGNvcHkKICAgICAgICBkYXRhID0gc2VsZi5kYXRhCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmRhdGEgPSB7fQogICAgICAgICAgICBjID0gY29weS5jb3B5KHNlbGYpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5kYXRhID0gZGF0YQogICAgICAgIGMudXBkYXRlKHNlbGYpCiAgICAgICAgcmV0dXJuIGMKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9ta2V5cyhjbHMsIGl0ZXJhYmxlLCB2YWx1ZT1Ob25lKToKICAgICAgICBkID0gY2xzKCkKICAgICAgICBmb3Iga2V5IGluIGl0ZXJhYmxlOgogICAgICAgICAgICBkW2tleV0gPSB2YWx1ZQogICAgICAgIHJldHVybiBkCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIFVzZXJMaXN0CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpjbGFzcyBVc2VyTGlzdChfY29sbGVjdGlvbnNfYWJjLk11dGFibGVTZXF1ZW5jZSk6CiAgICAiIiJBIG1vcmUgb3IgbGVzcyBjb21wbGV0ZSB1c2VyLWRlZmluZWQgd3JhcHBlciBhcm91bmQgbGlzdCBvYmplY3RzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbml0bGlzdD1Ob25lKToKICAgICAgICBzZWxmLmRhdGEgPSBbXQogICAgICAgIGlmIGluaXRsaXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIFhYWCBzaG91bGQgdGhpcyBhY2NlcHQgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlPwogICAgICAgICAgICBpZiB0eXBlKGluaXRsaXN0KSA9PSB0eXBlKHNlbGYuZGF0YSk6CiAgICAgICAgICAgICAgICBzZWxmLmRhdGFbOl0gPSBpbml0bGlzdAogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoaW5pdGxpc3QsIFVzZXJMaXN0KToKICAgICAgICAgICAgICAgIHNlbGYuZGF0YVs6XSA9IGluaXRsaXN0LmRhdGFbOl0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuZGF0YSA9IGxpc3QoaW5pdGxpc3QpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiByZXByKHNlbGYuZGF0YSkKCiAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhIDwgc2VsZi5fX2Nhc3Qob3RoZXIpCgogICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA8PSBzZWxmLl9fY2FzdChvdGhlcikKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhID09IHNlbGYuX19jYXN0KG90aGVyKQoKICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEgPiBzZWxmLl9fY2FzdChvdGhlcikKCiAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhID49IHNlbGYuX19jYXN0KG90aGVyKQoKICAgIGRlZiBfX2Nhc3Qoc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBvdGhlci5kYXRhIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFVzZXJMaXN0KSBlbHNlIG90aGVyCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKICAgICAgICByZXR1cm4gaXRlbSBpbiBzZWxmLmRhdGEKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YSkKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShpLCBzbGljZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGFbaV0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtpXQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpLCBpdGVtKToKICAgICAgICBzZWxmLmRhdGFbaV0gPSBpdGVtCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGkpOgogICAgICAgIGRlbCBzZWxmLmRhdGFbaV0KCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVXNlckxpc3QpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhICsgb3RoZXIuZGF0YSkKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIHR5cGUoc2VsZi5kYXRhKSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEgKyBvdGhlcikKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhICsgbGlzdChvdGhlcikpCgogICAgZGVmIF9fcmFkZF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBVc2VyTGlzdCk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhvdGhlci5kYXRhICsgc2VsZi5kYXRhKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShvdGhlciwgdHlwZShzZWxmLmRhdGEpKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKG90aGVyICsgc2VsZi5kYXRhKQogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhsaXN0KG90aGVyKSArIHNlbGYuZGF0YSkKCiAgICBkZWYgX19pYWRkX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFVzZXJMaXN0KToKICAgICAgICAgICAgc2VsZi5kYXRhICs9IG90aGVyLmRhdGEKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIHR5cGUoc2VsZi5kYXRhKSk6CiAgICAgICAgICAgIHNlbGYuZGF0YSArPSBvdGhlcgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuZGF0YSArPSBsaXN0KG90aGVyKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fbXVsX18oc2VsZiwgbik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YSAqIG4pCgogICAgX19ybXVsX18gPSBfX211bF9fCgogICAgZGVmIF9faW11bF9fKHNlbGYsIG4pOgogICAgICAgIHNlbGYuZGF0YSAqPSBuCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19jb3B5X18oc2VsZik6CiAgICAgICAgaW5zdCA9IHNlbGYuX19jbGFzc19fLl9fbmV3X18oc2VsZi5fX2NsYXNzX18pCiAgICAgICAgaW5zdC5fX2RpY3RfXy51cGRhdGUoc2VsZi5fX2RpY3RfXykKICAgICAgICAjIENyZWF0ZSBhIGNvcHkgYW5kIGF2b2lkIHRyaWdnZXJpbmcgZGVzY3JpcHRvcnMKICAgICAgICBpbnN0Ll9fZGljdF9fWyJkYXRhIl0gPSBzZWxmLl9fZGljdF9fWyJkYXRhIl1bOl0KICAgICAgICByZXR1cm4gaW5zdAoKICAgIGRlZiBhcHBlbmQoc2VsZiwgaXRlbSk6CiAgICAgICAgc2VsZi5kYXRhLmFwcGVuZChpdGVtKQoKICAgIGRlZiBpbnNlcnQoc2VsZiwgaSwgaXRlbSk6CiAgICAgICAgc2VsZi5kYXRhLmluc2VydChpLCBpdGVtKQoKICAgIGRlZiBwb3Aoc2VsZiwgaT0tMSk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5wb3AoaSkKCiAgICBkZWYgcmVtb3ZlKHNlbGYsIGl0ZW0pOgogICAgICAgIHNlbGYuZGF0YS5yZW1vdmUoaXRlbSkKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgc2VsZi5kYXRhLmNsZWFyKCkKCiAgICBkZWYgY29weShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZikKCiAgICBkZWYgY291bnQoc2VsZiwgaXRlbSk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5jb3VudChpdGVtKQoKICAgIGRlZiBpbmRleChzZWxmLCBpdGVtLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5pbmRleChpdGVtLCAqYXJncykKCiAgICBkZWYgcmV2ZXJzZShzZWxmKToKICAgICAgICBzZWxmLmRhdGEucmV2ZXJzZSgpCgogICAgZGVmIHNvcnQoc2VsZiwgLywgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgc2VsZi5kYXRhLnNvcnQoKmFyZ3MsICoqa3dkcykKCiAgICBkZWYgZXh0ZW5kKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBVc2VyTGlzdCk6CiAgICAgICAgICAgIHNlbGYuZGF0YS5leHRlbmQob3RoZXIuZGF0YSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmRhdGEuZXh0ZW5kKG90aGVyKQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyBVc2VyU3RyaW5nCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpjbGFzcyBVc2VyU3RyaW5nKF9jb2xsZWN0aW9uc19hYmMuU2VxdWVuY2UpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXEpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VxLCBzdHIpOgogICAgICAgICAgICBzZWxmLmRhdGEgPSBzZXEKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VxLCBVc2VyU3RyaW5nKToKICAgICAgICAgICAgc2VsZi5kYXRhID0gc2VxLmRhdGFbOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmRhdGEgPSBzdHIoc2VxKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzdHIoc2VsZi5kYXRhKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gcmVwcihzZWxmLmRhdGEpCgogICAgZGVmIF9faW50X18oc2VsZik6CiAgICAgICAgcmV0dXJuIGludChzZWxmLmRhdGEpCgogICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKICAgICAgICByZXR1cm4gZmxvYXQoc2VsZi5kYXRhKQoKICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKToKICAgICAgICByZXR1cm4gY29tcGxleChzZWxmLmRhdGEpCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHJldHVybiBoYXNoKHNlbGYuZGF0YSkKCiAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CiAgICAgICAgcmV0dXJuIChzZWxmLmRhdGFbOl0sKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgc3RyaW5nKToKICAgICAgICBpZiBpc2luc3RhbmNlKHN0cmluZywgVXNlclN0cmluZyk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRhdGEgPT0gc3RyaW5nLmRhdGEKICAgICAgICByZXR1cm4gc2VsZi5kYXRhID09IHN0cmluZwoKICAgIGRlZiBfX2x0X18oc2VsZiwgc3RyaW5nKToKICAgICAgICBpZiBpc2luc3RhbmNlKHN0cmluZywgVXNlclN0cmluZyk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRhdGEgPCBzdHJpbmcuZGF0YQogICAgICAgIHJldHVybiBzZWxmLmRhdGEgPCBzdHJpbmcKCiAgICBkZWYgX19sZV9fKHNlbGYsIHN0cmluZyk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kYXRhIDw9IHN0cmluZy5kYXRhCiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA8PSBzdHJpbmcKCiAgICBkZWYgX19ndF9fKHNlbGYsIHN0cmluZyk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kYXRhID4gc3RyaW5nLmRhdGEKICAgICAgICByZXR1cm4gc2VsZi5kYXRhID4gc3RyaW5nCgogICAgZGVmIF9fZ2VfXyhzZWxmLCBzdHJpbmcpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RyaW5nLCBVc2VyU3RyaW5nKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA+PSBzdHJpbmcuZGF0YQogICAgICAgIHJldHVybiBzZWxmLmRhdGEgPj0gc3RyaW5nCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBjaGFyKToKICAgICAgICBpZiBpc2luc3RhbmNlKGNoYXIsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICBjaGFyID0gY2hhci5kYXRhCiAgICAgICAgcmV0dXJuIGNoYXIgaW4gc2VsZi5kYXRhCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhW2luZGV4XSkKCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVXNlclN0cmluZyk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEgKyBvdGhlci5kYXRhKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShvdGhlciwgc3RyKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YSArIG90aGVyKQogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEgKyBzdHIob3RoZXIpKQoKICAgIGRlZiBfX3JhZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgc3RyKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKG90aGVyICsgc2VsZi5kYXRhKQogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzdHIob3RoZXIpICsgc2VsZi5kYXRhKQoKICAgIGRlZiBfX211bF9fKHNlbGYsIG4pOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEgKiBuKQoKICAgIF9fcm11bF9fID0gX19tdWxfXwoKICAgIGRlZiBfX21vZF9fKHNlbGYsIGFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEgJSBhcmdzKQoKICAgIGRlZiBfX3Jtb2RfXyhzZWxmLCB0ZW1wbGF0ZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHN0cih0ZW1wbGF0ZSkgJSBzZWxmKQoKICAgICMgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBkZWZpbmVkIGluIGFscGhhYmV0aWNhbCBvcmRlcjoKICAgIGRlZiBjYXBpdGFsaXplKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2FwaXRhbGl6ZSgpKQoKICAgIGRlZiBjYXNlZm9sZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLmNhc2Vmb2xkKCkpCgogICAgZGVmIGNlbnRlcihzZWxmLCB3aWR0aCwgKmFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2VudGVyKHdpZHRoLCAqYXJncykpCgogICAgZGVmIGNvdW50KHNlbGYsIHN1Yiwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShzdWIsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICBzdWIgPSBzdWIuZGF0YQogICAgICAgIHJldHVybiBzZWxmLmRhdGEuY291bnQoc3ViLCBzdGFydCwgZW5kKQoKICAgIGRlZiByZW1vdmVwcmVmaXgoc2VsZiwgcHJlZml4LCAvKToKICAgICAgICBpZiBpc2luc3RhbmNlKHByZWZpeCwgVXNlclN0cmluZyk6CiAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeC5kYXRhCiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5yZW1vdmVwcmVmaXgocHJlZml4KSkKCiAgICBkZWYgcmVtb3Zlc3VmZml4KHNlbGYsIHN1ZmZpeCwgLyk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShzdWZmaXgsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICBzdWZmaXggPSBzdWZmaXguZGF0YQogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEucmVtb3Zlc3VmZml4KHN1ZmZpeCkpCgogICAgZGVmIGVuY29kZShzZWxmLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIGVuY29kaW5nID0gJ3V0Zi04JyBpZiBlbmNvZGluZyBpcyBOb25lIGVsc2UgZW5jb2RpbmcKICAgICAgICBlcnJvcnMgPSAnc3RyaWN0JyBpZiBlcnJvcnMgaXMgTm9uZSBlbHNlIGVycm9ycwogICAgICAgIHJldHVybiBzZWxmLmRhdGEuZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpCgogICAgZGVmIGVuZHN3aXRoKHNlbGYsIHN1ZmZpeCwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5lbmRzd2l0aChzdWZmaXgsIHN0YXJ0LCBlbmQpCgogICAgZGVmIGV4cGFuZHRhYnMoc2VsZiwgdGFic2l6ZT04KToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLmV4cGFuZHRhYnModGFic2l6ZSkpCgogICAgZGVmIGZpbmQoc2VsZiwgc3ViLCBzdGFydD0wLCBlbmQ9X3N5cy5tYXhzaXplKToKICAgICAgICBpZiBpc2luc3RhbmNlKHN1YiwgVXNlclN0cmluZyk6CiAgICAgICAgICAgIHN1YiA9IHN1Yi5kYXRhCiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5maW5kKHN1Yiwgc3RhcnQsIGVuZCkKCiAgICBkZWYgZm9ybWF0KHNlbGYsIC8sICphcmdzLCAqKmt3ZHMpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0KCphcmdzLCAqKmt3ZHMpCgogICAgZGVmIGZvcm1hdF9tYXAoc2VsZiwgbWFwcGluZyk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5mb3JtYXRfbWFwKG1hcHBpbmcpCgogICAgZGVmIGluZGV4KHNlbGYsIHN1Yiwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5pbmRleChzdWIsIHN0YXJ0LCBlbmQpCgogICAgZGVmIGlzYWxwaGEoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5pc2FscGhhKCkKCiAgICBkZWYgaXNhbG51bShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmlzYWxudW0oKQoKICAgIGRlZiBpc2FzY2lpKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEuaXNhc2NpaSgpCgogICAgZGVmIGlzZGVjaW1hbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmlzZGVjaW1hbCgpCgogICAgZGVmIGlzZGlnaXQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5pc2RpZ2l0KCkKCiAgICBkZWYgaXNpZGVudGlmaWVyKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEuaXNpZGVudGlmaWVyKCkKCiAgICBkZWYgaXNsb3dlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmlzbG93ZXIoKQoKICAgIGRlZiBpc251bWVyaWMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5pc251bWVyaWMoKQoKICAgIGRlZiBpc3ByaW50YWJsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmlzcHJpbnRhYmxlKCkKCiAgICBkZWYgaXNzcGFjZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmlzc3BhY2UoKQoKICAgIGRlZiBpc3RpdGxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEuaXN0aXRsZSgpCgogICAgZGVmIGlzdXBwZXIoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5pc3VwcGVyKCkKCiAgICBkZWYgam9pbihzZWxmLCBzZXEpOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEuam9pbihzZXEpCgogICAgZGVmIGxqdXN0KHNlbGYsIHdpZHRoLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sanVzdCh3aWR0aCwgKmFyZ3MpKQoKICAgIGRlZiBsb3dlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLmxvd2VyKCkpCgogICAgZGVmIGxzdHJpcChzZWxmLCBjaGFycz1Ob25lKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLmxzdHJpcChjaGFycykpCgogICAgbWFrZXRyYW5zID0gc3RyLm1ha2V0cmFucwoKICAgIGRlZiBwYXJ0aXRpb24oc2VsZiwgc2VwKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnBhcnRpdGlvbihzZXApCgogICAgZGVmIHJlcGxhY2Uoc2VsZiwgb2xkLCBuZXcsIG1heHNwbGl0PS0xKToKICAgICAgICBpZiBpc2luc3RhbmNlKG9sZCwgVXNlclN0cmluZyk6CiAgICAgICAgICAgIG9sZCA9IG9sZC5kYXRhCiAgICAgICAgaWYgaXNpbnN0YW5jZShuZXcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICBuZXcgPSBuZXcuZGF0YQogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEucmVwbGFjZShvbGQsIG5ldywgbWF4c3BsaXQpKQoKICAgIGRlZiByZmluZChzZWxmLCBzdWIsIHN0YXJ0PTAsIGVuZD1fc3lzLm1heHNpemUpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uoc3ViLCBVc2VyU3RyaW5nKToKICAgICAgICAgICAgc3ViID0gc3ViLmRhdGEKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnJmaW5kKHN1Yiwgc3RhcnQsIGVuZCkKCiAgICBkZWYgcmluZGV4KHNlbGYsIHN1Yiwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5yaW5kZXgoc3ViLCBzdGFydCwgZW5kKQoKICAgIGRlZiByanVzdChzZWxmLCB3aWR0aCwgKmFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEucmp1c3Qod2lkdGgsICphcmdzKSkKCiAgICBkZWYgcnBhcnRpdGlvbihzZWxmLCBzZXApOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEucnBhcnRpdGlvbihzZXApCgogICAgZGVmIHJzdHJpcChzZWxmLCBjaGFycz1Ob25lKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnJzdHJpcChjaGFycykpCgogICAgZGVmIHNwbGl0KHNlbGYsIHNlcD1Ob25lLCBtYXhzcGxpdD0tMSk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5zcGxpdChzZXAsIG1heHNwbGl0KQoKICAgIGRlZiByc3BsaXQoc2VsZiwgc2VwPU5vbmUsIG1heHNwbGl0PS0xKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnJzcGxpdChzZXAsIG1heHNwbGl0KQoKICAgIGRlZiBzcGxpdGxpbmVzKHNlbGYsIGtlZXBlbmRzPUZhbHNlKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnNwbGl0bGluZXMoa2VlcGVuZHMpCgogICAgZGVmIHN0YXJ0c3dpdGgoc2VsZiwgcHJlZml4LCBzdGFydD0wLCBlbmQ9X3N5cy5tYXhzaXplKToKICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnN0YXJ0c3dpdGgocHJlZml4LCBzdGFydCwgZW5kKQoKICAgIGRlZiBzdHJpcChzZWxmLCBjaGFycz1Ob25lKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnN0cmlwKGNoYXJzKSkKCiAgICBkZWYgc3dhcGNhc2Uoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5zd2FwY2FzZSgpKQoKICAgIGRlZiB0aXRsZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnRpdGxlKCkpCgogICAgZGVmIHRyYW5zbGF0ZShzZWxmLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS50cmFuc2xhdGUoKmFyZ3MpKQoKICAgIGRlZiB1cHBlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnVwcGVyKCkpCgogICAgZGVmIHpmaWxsKHNlbGYsIHdpZHRoKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnpmaWxsKHdpZHRoKSkKUEsDBBQAAAAAAAIgo1bC8a7XdwAAAHcAAAASAAAAY29sbGVjdGlvbnMvYWJjLnB5ZnJvbSBfY29sbGVjdGlvbnNfYWJjIGltcG9ydCAqCmZyb20gX2NvbGxlY3Rpb25zX2FiYyBpbXBvcnQgX19hbGxfXwpmcm9tIF9jb2xsZWN0aW9uc19hYmMgaW1wb3J0IF9DYWxsYWJsZUdlbmVyaWNBbGlhcwpQSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAABMAAABjb25jdXJyZW50L2Z1dHVyZXMvUEsDBBQAAAAAAAIgo1baztZJJgAAACYAAAAWAAAAY29uY3VycmVudC9fX2luaXRfXy5weSMgVGhpcyBkaXJlY3RvcnkgaXMgYSBQeXRob24gcGFja2FnZS4KUEsDBBQAAAAAAAIgo1ZNLDUEFgYAABYGAAAeAAAAY29uY3VycmVudC9mdXR1cmVzL19faW5pdF9fLnB5IyBDb3B5cmlnaHQgMjAwOSBCcmlhbiBRdWlubGFuLiBBbGwgUmlnaHRzIFJlc2VydmVkLgojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KCiIiIkV4ZWN1dGUgY29tcHV0YXRpb25zIGFzeW5jaHJvbm91c2x5IHVzaW5nIHRocmVhZHMgb3IgcHJvY2Vzc2VzLiIiIgoKX19hdXRob3JfXyA9ICdCcmlhbiBRdWlubGFuIChicmlhbkBzd2VldGFwcC5jb20pJwoKZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMuX2Jhc2UgaW1wb3J0IChGSVJTVF9DT01QTEVURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklSU1RfRVhDRVBUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFMTF9DT01QTEVURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsbGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZW91dEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRTdGF0ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyb2tlbkV4ZWN1dG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzX2NvbXBsZXRlZCkKCl9fYWxsX18gPSAoCiAgICAnRklSU1RfQ09NUExFVEVEJywKICAgICdGSVJTVF9FWENFUFRJT04nLAogICAgJ0FMTF9DT01QTEVURUQnLAogICAgJ0NhbmNlbGxlZEVycm9yJywKICAgICdUaW1lb3V0RXJyb3InLAogICAgJ0Jyb2tlbkV4ZWN1dG9yJywKICAgICdGdXR1cmUnLAogICAgJ0V4ZWN1dG9yJywKICAgICd3YWl0JywKICAgICdhc19jb21wbGV0ZWQnLAogICAgJ1Byb2Nlc3NQb29sRXhlY3V0b3InLAogICAgJ1RocmVhZFBvb2xFeGVjdXRvcicsCikKCgpkZWYgX19kaXJfXygpOgogICAgcmV0dXJuIF9fYWxsX18gKyAoJ19fYXV0aG9yX18nLCAnX19kb2NfXycpCgoKZGVmIF9fZ2V0YXR0cl9fKG5hbWUpOgogICAgZ2xvYmFsIFByb2Nlc3NQb29sRXhlY3V0b3IsIFRocmVhZFBvb2xFeGVjdXRvcgoKICAgIGlmIG5hbWUgPT0gJ1Byb2Nlc3NQb29sRXhlY3V0b3InOgogICAgICAgIGZyb20gLnByb2Nlc3MgaW1wb3J0IFByb2Nlc3NQb29sRXhlY3V0b3IgYXMgcGUKICAgICAgICBQcm9jZXNzUG9vbEV4ZWN1dG9yID0gcGUKICAgICAgICByZXR1cm4gcGUKCiAgICBpZiBuYW1lID09ICdUaHJlYWRQb29sRXhlY3V0b3InOgogICAgICAgIGZyb20gLnRocmVhZCBpbXBvcnQgVGhyZWFkUG9vbEV4ZWN1dG9yIGFzIHRlCiAgICAgICAgVGhyZWFkUG9vbEV4ZWN1dG9yID0gdGUKICAgICAgICByZXR1cm4gdGUKCiAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihmIm1vZHVsZSB7X19uYW1lX18hcn0gaGFzIG5vIGF0dHJpYnV0ZSB7bmFtZSFyfSIpClBLAwQUAAAAAAACIKNWUjjyaDFZAAAxWQAAGwAAAGNvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weSMgQ29weXJpZ2h0IDIwMDkgQnJpYW4gUXVpbmxhbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCgpfX2F1dGhvcl9fID0gJ0JyaWFuIFF1aW5sYW4gKGJyaWFuQHN3ZWV0YXBwLmNvbSknCgppbXBvcnQgY29sbGVjdGlvbnMKaW1wb3J0IGxvZ2dpbmcKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgdGltZQppbXBvcnQgdHlwZXMKCkZJUlNUX0NPTVBMRVRFRCA9ICdGSVJTVF9DT01QTEVURUQnCkZJUlNUX0VYQ0VQVElPTiA9ICdGSVJTVF9FWENFUFRJT04nCkFMTF9DT01QTEVURUQgPSAnQUxMX0NPTVBMRVRFRCcKX0FTX0NPTVBMRVRFRCA9ICdfQVNfQ09NUExFVEVEJwoKIyBQb3NzaWJsZSBmdXR1cmUgc3RhdGVzIChmb3IgaW50ZXJuYWwgdXNlIGJ5IHRoZSBmdXR1cmVzIHBhY2thZ2UpLgpQRU5ESU5HID0gJ1BFTkRJTkcnClJVTk5JTkcgPSAnUlVOTklORycKIyBUaGUgZnV0dXJlIHdhcyBjYW5jZWxsZWQgYnkgdGhlIHVzZXIuLi4KQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcKIyAuLi5hbmQgX1dhaXRlci5hZGRfY2FuY2VsbGVkKCkgd2FzIGNhbGxlZCBieSBhIHdvcmtlci4KQ0FOQ0VMTEVEX0FORF9OT1RJRklFRCA9ICdDQU5DRUxMRURfQU5EX05PVElGSUVEJwpGSU5JU0hFRCA9ICdGSU5JU0hFRCcKCl9GVVRVUkVfU1RBVEVTID0gWwogICAgUEVORElORywKICAgIFJVTk5JTkcsCiAgICBDQU5DRUxMRUQsCiAgICBDQU5DRUxMRURfQU5EX05PVElGSUVELAogICAgRklOSVNIRUQKXQoKX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUCA9IHsKICAgIFBFTkRJTkc6ICJwZW5kaW5nIiwKICAgIFJVTk5JTkc6ICJydW5uaW5nIiwKICAgIENBTkNFTExFRDogImNhbmNlbGxlZCIsCiAgICBDQU5DRUxMRURfQU5EX05PVElGSUVEOiAiY2FuY2VsbGVkIiwKICAgIEZJTklTSEVEOiAiZmluaXNoZWQiCn0KCiMgTG9nZ2VyIGZvciBpbnRlcm5hbCB1c2UgYnkgdGhlIGZ1dHVyZXMgcGFja2FnZS4KTE9HR0VSID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbmN1cnJlbnQuZnV0dXJlcyIpCgpjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgIiIiQmFzZSBjbGFzcyBmb3IgYWxsIGZ1dHVyZS1yZWxhdGVkIGV4Y2VwdGlvbnMuIiIiCiAgICBwYXNzCgpjbGFzcyBDYW5jZWxsZWRFcnJvcihFcnJvcik6CiAgICAiIiJUaGUgRnV0dXJlIHdhcyBjYW5jZWxsZWQuIiIiCiAgICBwYXNzCgpUaW1lb3V0RXJyb3IgPSBUaW1lb3V0RXJyb3IgICMgbWFrZSBsb2NhbCBhbGlhcyBmb3IgdGhlIHN0YW5kYXJkIGV4Y2VwdGlvbgoKY2xhc3MgSW52YWxpZFN0YXRlRXJyb3IoRXJyb3IpOgogICAgIiIiVGhlIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlLiIiIgogICAgcGFzcwoKY2xhc3MgX1dhaXRlcihvYmplY3QpOgogICAgIiIiUHJvdmlkZXMgdGhlIGV2ZW50IHRoYXQgd2FpdCgpIGFuZCBhc19jb21wbGV0ZWQoKSBibG9jayBvbi4iIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLmV2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICBzZWxmLmZpbmlzaGVkX2Z1dHVyZXMgPSBbXQoKICAgIGRlZiBhZGRfcmVzdWx0KHNlbGYsIGZ1dHVyZSk6CiAgICAgICAgc2VsZi5maW5pc2hlZF9mdXR1cmVzLmFwcGVuZChmdXR1cmUpCgogICAgZGVmIGFkZF9leGNlcHRpb24oc2VsZiwgZnV0dXJlKToKICAgICAgICBzZWxmLmZpbmlzaGVkX2Z1dHVyZXMuYXBwZW5kKGZ1dHVyZSkKCiAgICBkZWYgYWRkX2NhbmNlbGxlZChzZWxmLCBmdXR1cmUpOgogICAgICAgIHNlbGYuZmluaXNoZWRfZnV0dXJlcy5hcHBlbmQoZnV0dXJlKQoKY2xhc3MgX0FzQ29tcGxldGVkV2FpdGVyKF9XYWl0ZXIpOgogICAgIiIiVXNlZCBieSBhc19jb21wbGV0ZWQoKS4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc3VwZXIoX0FzQ29tcGxldGVkV2FpdGVyLCBzZWxmKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQoKICAgIGRlZiBhZGRfcmVzdWx0KHNlbGYsIGZ1dHVyZSk6CiAgICAgICAgd2l0aCBzZWxmLmxvY2s6CiAgICAgICAgICAgIHN1cGVyKF9Bc0NvbXBsZXRlZFdhaXRlciwgc2VsZikuYWRkX3Jlc3VsdChmdXR1cmUpCiAgICAgICAgICAgIHNlbGYuZXZlbnQuc2V0KCkKCiAgICBkZWYgYWRkX2V4Y2VwdGlvbihzZWxmLCBmdXR1cmUpOgogICAgICAgIHdpdGggc2VsZi5sb2NrOgogICAgICAgICAgICBzdXBlcihfQXNDb21wbGV0ZWRXYWl0ZXIsIHNlbGYpLmFkZF9leGNlcHRpb24oZnV0dXJlKQogICAgICAgICAgICBzZWxmLmV2ZW50LnNldCgpCgogICAgZGVmIGFkZF9jYW5jZWxsZWQoc2VsZiwgZnV0dXJlKToKICAgICAgICB3aXRoIHNlbGYubG9jazoKICAgICAgICAgICAgc3VwZXIoX0FzQ29tcGxldGVkV2FpdGVyLCBzZWxmKS5hZGRfY2FuY2VsbGVkKGZ1dHVyZSkKICAgICAgICAgICAgc2VsZi5ldmVudC5zZXQoKQoKY2xhc3MgX0ZpcnN0Q29tcGxldGVkV2FpdGVyKF9XYWl0ZXIpOgogICAgIiIiVXNlZCBieSB3YWl0KHJldHVybl93aGVuPUZJUlNUX0NPTVBMRVRFRCkuIiIiCgogICAgZGVmIGFkZF9yZXN1bHQoc2VsZiwgZnV0dXJlKToKICAgICAgICBzdXBlcigpLmFkZF9yZXN1bHQoZnV0dXJlKQogICAgICAgIHNlbGYuZXZlbnQuc2V0KCkKCiAgICBkZWYgYWRkX2V4Y2VwdGlvbihzZWxmLCBmdXR1cmUpOgogICAgICAgIHN1cGVyKCkuYWRkX2V4Y2VwdGlvbihmdXR1cmUpCiAgICAgICAgc2VsZi5ldmVudC5zZXQoKQoKICAgIGRlZiBhZGRfY2FuY2VsbGVkKHNlbGYsIGZ1dHVyZSk6CiAgICAgICAgc3VwZXIoKS5hZGRfY2FuY2VsbGVkKGZ1dHVyZSkKICAgICAgICBzZWxmLmV2ZW50LnNldCgpCgpjbGFzcyBfQWxsQ29tcGxldGVkV2FpdGVyKF9XYWl0ZXIpOgogICAgIiIiVXNlZCBieSB3YWl0KHJldHVybl93aGVuPUZJUlNUX0VYQ0VQVElPTiBhbmQgQUxMX0NPTVBMRVRFRCkuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG51bV9wZW5kaW5nX2NhbGxzLCBzdG9wX29uX2V4Y2VwdGlvbik6CiAgICAgICAgc2VsZi5udW1fcGVuZGluZ19jYWxscyA9IG51bV9wZW5kaW5nX2NhbGxzCiAgICAgICAgc2VsZi5zdG9wX29uX2V4Y2VwdGlvbiA9IHN0b3Bfb25fZXhjZXB0aW9uCiAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQoKICAgIGRlZiBfZGVjcmVtZW50X3BlbmRpbmdfY2FsbHMoc2VsZik6CiAgICAgICAgd2l0aCBzZWxmLmxvY2s6CiAgICAgICAgICAgIHNlbGYubnVtX3BlbmRpbmdfY2FsbHMgLT0gMQogICAgICAgICAgICBpZiBub3Qgc2VsZi5udW1fcGVuZGluZ19jYWxsczoKICAgICAgICAgICAgICAgIHNlbGYuZXZlbnQuc2V0KCkKCiAgICBkZWYgYWRkX3Jlc3VsdChzZWxmLCBmdXR1cmUpOgogICAgICAgIHN1cGVyKCkuYWRkX3Jlc3VsdChmdXR1cmUpCiAgICAgICAgc2VsZi5fZGVjcmVtZW50X3BlbmRpbmdfY2FsbHMoKQoKICAgIGRlZiBhZGRfZXhjZXB0aW9uKHNlbGYsIGZ1dHVyZSk6CiAgICAgICAgc3VwZXIoKS5hZGRfZXhjZXB0aW9uKGZ1dHVyZSkKICAgICAgICBpZiBzZWxmLnN0b3Bfb25fZXhjZXB0aW9uOgogICAgICAgICAgICBzZWxmLmV2ZW50LnNldCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fZGVjcmVtZW50X3BlbmRpbmdfY2FsbHMoKQoKICAgIGRlZiBhZGRfY2FuY2VsbGVkKHNlbGYsIGZ1dHVyZSk6CiAgICAgICAgc3VwZXIoKS5hZGRfY2FuY2VsbGVkKGZ1dHVyZSkKICAgICAgICBzZWxmLl9kZWNyZW1lbnRfcGVuZGluZ19jYWxscygpCgpjbGFzcyBfQWNxdWlyZUZ1dHVyZXMob2JqZWN0KToKICAgICIiIkEgY29udGV4dCBtYW5hZ2VyIHRoYXQgZG9lcyBhbiBvcmRlcmVkIGFjcXVpcmUgb2YgRnV0dXJlIGNvbmRpdGlvbnMuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1dHVyZXMpOgogICAgICAgIHNlbGYuZnV0dXJlcyA9IHNvcnRlZChmdXR1cmVzLCBrZXk9aWQpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICBmb3IgZnV0dXJlIGluIHNlbGYuZnV0dXJlczoKICAgICAgICAgICAgZnV0dXJlLl9jb25kaXRpb24uYWNxdWlyZSgpCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBmb3IgZnV0dXJlIGluIHNlbGYuZnV0dXJlczoKICAgICAgICAgICAgZnV0dXJlLl9jb25kaXRpb24ucmVsZWFzZSgpCgpkZWYgX2NyZWF0ZV9hbmRfaW5zdGFsbF93YWl0ZXJzKGZzLCByZXR1cm5fd2hlbik6CiAgICBpZiByZXR1cm5fd2hlbiA9PSBfQVNfQ09NUExFVEVEOgogICAgICAgIHdhaXRlciA9IF9Bc0NvbXBsZXRlZFdhaXRlcigpCiAgICBlbGlmIHJldHVybl93aGVuID09IEZJUlNUX0NPTVBMRVRFRDoKICAgICAgICB3YWl0ZXIgPSBfRmlyc3RDb21wbGV0ZWRXYWl0ZXIoKQogICAgZWxzZToKICAgICAgICBwZW5kaW5nX2NvdW50ID0gc3VtKAogICAgICAgICAgICAgICAgZi5fc3RhdGUgbm90IGluIFtDQU5DRUxMRURfQU5EX05PVElGSUVELCBGSU5JU0hFRF0gZm9yIGYgaW4gZnMpCgogICAgICAgIGlmIHJldHVybl93aGVuID09IEZJUlNUX0VYQ0VQVElPTjoKICAgICAgICAgICAgd2FpdGVyID0gX0FsbENvbXBsZXRlZFdhaXRlcihwZW5kaW5nX2NvdW50LCBzdG9wX29uX2V4Y2VwdGlvbj1UcnVlKQogICAgICAgIGVsaWYgcmV0dXJuX3doZW4gPT0gQUxMX0NPTVBMRVRFRDoKICAgICAgICAgICAgd2FpdGVyID0gX0FsbENvbXBsZXRlZFdhaXRlcihwZW5kaW5nX2NvdW50LCBzdG9wX29uX2V4Y2VwdGlvbj1GYWxzZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHJldHVybiBjb25kaXRpb246ICVyIiAlIHJldHVybl93aGVuKQoKICAgIGZvciBmIGluIGZzOgogICAgICAgIGYuX3dhaXRlcnMuYXBwZW5kKHdhaXRlcikKCiAgICByZXR1cm4gd2FpdGVyCgoKZGVmIF95aWVsZF9maW5pc2hlZF9mdXR1cmVzKGZzLCB3YWl0ZXIsIHJlZl9jb2xsZWN0KToKICAgICIiIgogICAgSXRlcmF0ZSBvbiB0aGUgbGlzdCAqZnMqLCB5aWVsZGluZyBmaW5pc2hlZCBmdXR1cmVzIG9uZSBieSBvbmUgaW4KICAgIHJldmVyc2Ugb3JkZXIuCiAgICBCZWZvcmUgeWllbGRpbmcgYSBmdXR1cmUsICp3YWl0ZXIqIGlzIHJlbW92ZWQgZnJvbSBpdHMgd2FpdGVycwogICAgYW5kIHRoZSBmdXR1cmUgaXMgcmVtb3ZlZCBmcm9tIGVhY2ggc2V0IGluIHRoZSBjb2xsZWN0aW9uIG9mIHNldHMKICAgICpyZWZfY29sbGVjdCouCgogICAgVGhlIGFpbSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRvIGF2b2lkIGtlZXBpbmcgc3RhbGUgcmVmZXJlbmNlcyBhZnRlcgogICAgdGhlIGZ1dHVyZSBpcyB5aWVsZGVkIGFuZCBiZWZvcmUgdGhlIGl0ZXJhdG9yIHJlc3VtZXMuCiAgICAiIiIKICAgIHdoaWxlIGZzOgogICAgICAgIGYgPSBmc1stMV0KICAgICAgICBmb3IgZnV0dXJlc19zZXQgaW4gcmVmX2NvbGxlY3Q6CiAgICAgICAgICAgIGZ1dHVyZXNfc2V0LnJlbW92ZShmKQogICAgICAgIHdpdGggZi5fY29uZGl0aW9uOgogICAgICAgICAgICBmLl93YWl0ZXJzLnJlbW92ZSh3YWl0ZXIpCiAgICAgICAgZGVsIGYKICAgICAgICAjIENhcmVmdWwgbm90IHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHBvcHBlZCB2YWx1ZQogICAgICAgIHlpZWxkIGZzLnBvcCgpCgoKZGVmIGFzX2NvbXBsZXRlZChmcywgdGltZW91dD1Ob25lKToKICAgICIiIkFuIGl0ZXJhdG9yIG92ZXIgdGhlIGdpdmVuIGZ1dHVyZXMgdGhhdCB5aWVsZHMgZWFjaCBhcyBpdCBjb21wbGV0ZXMuCgogICAgQXJnczoKICAgICAgICBmczogVGhlIHNlcXVlbmNlIG9mIEZ1dHVyZXMgKHBvc3NpYmx5IGNyZWF0ZWQgYnkgZGlmZmVyZW50IEV4ZWN1dG9ycykgdG8KICAgICAgICAgICAgaXRlcmF0ZSBvdmVyLgogICAgICAgIHRpbWVvdXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQuIElmIE5vbmUsIHRoZW4gdGhlcmUKICAgICAgICAgICAgaXMgbm8gbGltaXQgb24gdGhlIHdhaXQgdGltZS4KCiAgICBSZXR1cm5zOgogICAgICAgIEFuIGl0ZXJhdG9yIHRoYXQgeWllbGRzIHRoZSBnaXZlbiBGdXR1cmVzIGFzIHRoZXkgY29tcGxldGUgKGZpbmlzaGVkIG9yCiAgICAgICAgY2FuY2VsbGVkKS4gSWYgYW55IGdpdmVuIEZ1dHVyZXMgYXJlIGR1cGxpY2F0ZWQsIHRoZXkgd2lsbCBiZSByZXR1cm5lZAogICAgICAgIG9uY2UuCgogICAgUmFpc2VzOgogICAgICAgIFRpbWVvdXRFcnJvcjogSWYgdGhlIGVudGlyZSByZXN1bHQgaXRlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAogICAgICAgICAgICBiZWZvcmUgdGhlIGdpdmVuIHRpbWVvdXQuCiAgICAiIiIKICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgZW5kX3RpbWUgPSB0aW1lb3V0ICsgdGltZS5tb25vdG9uaWMoKQoKICAgIGZzID0gc2V0KGZzKQogICAgdG90YWxfZnV0dXJlcyA9IGxlbihmcykKICAgIHdpdGggX0FjcXVpcmVGdXR1cmVzKGZzKToKICAgICAgICBmaW5pc2hlZCA9IHNldCgKICAgICAgICAgICAgICAgIGYgZm9yIGYgaW4gZnMKICAgICAgICAgICAgICAgIGlmIGYuX3N0YXRlIGluIFtDQU5DRUxMRURfQU5EX05PVElGSUVELCBGSU5JU0hFRF0pCiAgICAgICAgcGVuZGluZyA9IGZzIC0gZmluaXNoZWQKICAgICAgICB3YWl0ZXIgPSBfY3JlYXRlX2FuZF9pbnN0YWxsX3dhaXRlcnMoZnMsIF9BU19DT01QTEVURUQpCiAgICBmaW5pc2hlZCA9IGxpc3QoZmluaXNoZWQpCiAgICB0cnk6CiAgICAgICAgeWllbGQgZnJvbSBfeWllbGRfZmluaXNoZWRfZnV0dXJlcyhmaW5pc2hlZCwgd2FpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX2NvbGxlY3Q9KGZzLCkpCgogICAgICAgIHdoaWxlIHBlbmRpbmc6CiAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgIHdhaXRfdGltZW91dCA9IE5vbmUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHdhaXRfdGltZW91dCA9IGVuZF90aW1lIC0gdGltZS5tb25vdG9uaWMoKQogICAgICAgICAgICAgICAgaWYgd2FpdF90aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQgKG9mICVkKSBmdXR1cmVzIHVuZmluaXNoZWQnICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHBlbmRpbmcpLCB0b3RhbF9mdXR1cmVzKSkKCiAgICAgICAgICAgIHdhaXRlci5ldmVudC53YWl0KHdhaXRfdGltZW91dCkKCiAgICAgICAgICAgIHdpdGggd2FpdGVyLmxvY2s6CiAgICAgICAgICAgICAgICBmaW5pc2hlZCA9IHdhaXRlci5maW5pc2hlZF9mdXR1cmVzCiAgICAgICAgICAgICAgICB3YWl0ZXIuZmluaXNoZWRfZnV0dXJlcyA9IFtdCiAgICAgICAgICAgICAgICB3YWl0ZXIuZXZlbnQuY2xlYXIoKQoKICAgICAgICAgICAgIyByZXZlcnNlIHRvIGtlZXAgZmluaXNoaW5nIG9yZGVyCiAgICAgICAgICAgIGZpbmlzaGVkLnJldmVyc2UoKQogICAgICAgICAgICB5aWVsZCBmcm9tIF95aWVsZF9maW5pc2hlZF9mdXR1cmVzKGZpbmlzaGVkLCB3YWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmX2NvbGxlY3Q9KGZzLCBwZW5kaW5nKSkKCiAgICBmaW5hbGx5OgogICAgICAgICMgUmVtb3ZlIHdhaXRlciBmcm9tIHVuZmluaXNoZWQgZnV0dXJlcwogICAgICAgIGZvciBmIGluIGZzOgogICAgICAgICAgICB3aXRoIGYuX2NvbmRpdGlvbjoKICAgICAgICAgICAgICAgIGYuX3dhaXRlcnMucmVtb3ZlKHdhaXRlcikKCkRvbmVBbmROb3REb25lRnV0dXJlcyA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoCiAgICAgICAgJ0RvbmVBbmROb3REb25lRnV0dXJlcycsICdkb25lIG5vdF9kb25lJykKZGVmIHdhaXQoZnMsIHRpbWVvdXQ9Tm9uZSwgcmV0dXJuX3doZW49QUxMX0NPTVBMRVRFRCk6CiAgICAiIiJXYWl0IGZvciB0aGUgZnV0dXJlcyBpbiB0aGUgZ2l2ZW4gc2VxdWVuY2UgdG8gY29tcGxldGUuCgogICAgQXJnczoKICAgICAgICBmczogVGhlIHNlcXVlbmNlIG9mIEZ1dHVyZXMgKHBvc3NpYmx5IGNyZWF0ZWQgYnkgZGlmZmVyZW50IEV4ZWN1dG9ycykgdG8KICAgICAgICAgICAgd2FpdCB1cG9uLgogICAgICAgIHRpbWVvdXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQuIElmIE5vbmUsIHRoZW4gdGhlcmUKICAgICAgICAgICAgaXMgbm8gbGltaXQgb24gdGhlIHdhaXQgdGltZS4KICAgICAgICByZXR1cm5fd2hlbjogSW5kaWNhdGVzIHdoZW4gdGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuLiBUaGUgb3B0aW9ucwogICAgICAgICAgICBhcmU6CgogICAgICAgICAgICBGSVJTVF9DT01QTEVURUQgLSBSZXR1cm4gd2hlbiBhbnkgZnV0dXJlIGZpbmlzaGVzIG9yIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbGxlZC4KICAgICAgICAgICAgRklSU1RfRVhDRVBUSU9OIC0gUmV0dXJuIHdoZW4gYW55IGZ1dHVyZSBmaW5pc2hlcyBieSByYWlzaW5nIGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbi4gSWYgbm8gZnV0dXJlIHJhaXNlcyBhbiBleGNlcHRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBpdCBpcyBlcXVpdmFsZW50IHRvIEFMTF9DT01QTEVURUQuCiAgICAgICAgICAgIEFMTF9DT01QTEVURUQgLSAgIFJldHVybiB3aGVuIGFsbCBmdXR1cmVzIGZpbmlzaCBvciBhcmUgY2FuY2VsbGVkLgoKICAgIFJldHVybnM6CiAgICAgICAgQSBuYW1lZCAyLXR1cGxlIG9mIHNldHMuIFRoZSBmaXJzdCBzZXQsIG5hbWVkICdkb25lJywgY29udGFpbnMgdGhlCiAgICAgICAgZnV0dXJlcyB0aGF0IGNvbXBsZXRlZCAoaXMgZmluaXNoZWQgb3IgY2FuY2VsbGVkKSBiZWZvcmUgdGhlIHdhaXQKICAgICAgICBjb21wbGV0ZWQuIFRoZSBzZWNvbmQgc2V0LCBuYW1lZCAnbm90X2RvbmUnLCBjb250YWlucyB1bmNvbXBsZXRlZAogICAgICAgIGZ1dHVyZXMuIER1cGxpY2F0ZSBmdXR1cmVzIGdpdmVuIHRvICpmcyogYXJlIHJlbW92ZWQgYW5kIHdpbGwgYmUKICAgICAgICByZXR1cm5lZCBvbmx5IG9uY2UuCiAgICAiIiIKICAgIGZzID0gc2V0KGZzKQogICAgd2l0aCBfQWNxdWlyZUZ1dHVyZXMoZnMpOgogICAgICAgIGRvbmUgPSB7ZiBmb3IgZiBpbiBmcwogICAgICAgICAgICAgICAgICAgaWYgZi5fc3RhdGUgaW4gW0NBTkNFTExFRF9BTkRfTk9USUZJRUQsIEZJTklTSEVEXX0KICAgICAgICBub3RfZG9uZSA9IGZzIC0gZG9uZQogICAgICAgIGlmIChyZXR1cm5fd2hlbiA9PSBGSVJTVF9DT01QTEVURUQpIGFuZCBkb25lOgogICAgICAgICAgICByZXR1cm4gRG9uZUFuZE5vdERvbmVGdXR1cmVzKGRvbmUsIG5vdF9kb25lKQogICAgICAgIGVsaWYgKHJldHVybl93aGVuID09IEZJUlNUX0VYQ0VQVElPTikgYW5kIGRvbmU6CiAgICAgICAgICAgIGlmIGFueShmIGZvciBmIGluIGRvbmUKICAgICAgICAgICAgICAgICAgIGlmIG5vdCBmLmNhbmNlbGxlZCgpIGFuZCBmLmV4Y2VwdGlvbigpIGlzIG5vdCBOb25lKToKICAgICAgICAgICAgICAgIHJldHVybiBEb25lQW5kTm90RG9uZUZ1dHVyZXMoZG9uZSwgbm90X2RvbmUpCgogICAgICAgIGlmIGxlbihkb25lKSA9PSBsZW4oZnMpOgogICAgICAgICAgICByZXR1cm4gRG9uZUFuZE5vdERvbmVGdXR1cmVzKGRvbmUsIG5vdF9kb25lKQoKICAgICAgICB3YWl0ZXIgPSBfY3JlYXRlX2FuZF9pbnN0YWxsX3dhaXRlcnMoZnMsIHJldHVybl93aGVuKQoKICAgIHdhaXRlci5ldmVudC53YWl0KHRpbWVvdXQpCiAgICBmb3IgZiBpbiBmczoKICAgICAgICB3aXRoIGYuX2NvbmRpdGlvbjoKICAgICAgICAgICAgZi5fd2FpdGVycy5yZW1vdmUod2FpdGVyKQoKICAgIGRvbmUudXBkYXRlKHdhaXRlci5maW5pc2hlZF9mdXR1cmVzKQogICAgcmV0dXJuIERvbmVBbmROb3REb25lRnV0dXJlcyhkb25lLCBmcyAtIGRvbmUpCgoKZGVmIF9yZXN1bHRfb3JfY2FuY2VsKGZ1dCwgdGltZW91dD1Ob25lKToKICAgIHRyeToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBmdXQucmVzdWx0KHRpbWVvdXQpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgZnV0LmNhbmNlbCgpCiAgICBmaW5hbGx5OgogICAgICAgICMgQnJlYWsgYSByZWZlcmVuY2UgY3ljbGUgd2l0aCB0aGUgZXhjZXB0aW9uIGluIHNlbGYuX2V4Y2VwdGlvbgogICAgICAgIGRlbCBmdXQKCgpjbGFzcyBGdXR1cmUob2JqZWN0KToKICAgICIiIlJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhbiBhc3luY2hyb25vdXMgY29tcHV0YXRpb24uIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICIiIkluaXRpYWxpemVzIHRoZSBmdXR1cmUuIFNob3VsZCBub3QgYmUgY2FsbGVkIGJ5IGNsaWVudHMuIiIiCiAgICAgICAgc2VsZi5fY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCiAgICAgICAgc2VsZi5fc3RhdGUgPSBQRU5ESU5HCiAgICAgICAgc2VsZi5fcmVzdWx0ID0gTm9uZQogICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IE5vbmUKICAgICAgICBzZWxmLl93YWl0ZXJzID0gW10KICAgICAgICBzZWxmLl9kb25lX2NhbGxiYWNrcyA9IFtdCgogICAgZGVmIF9pbnZva2VfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgIGZvciBjYWxsYmFjayBpbiBzZWxmLl9kb25lX2NhbGxiYWNrczoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY2FsbGJhY2soc2VsZikKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIExPR0dFUi5leGNlcHRpb24oJ2V4Y2VwdGlvbiBjYWxsaW5nIGNhbGxiYWNrIGZvciAlcicsIHNlbGYpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBGSU5JU0hFRDoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2V4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbi5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPCVzIGF0ICUjeCBzdGF0ZT0lcyByZXR1cm5lZCAlcz4nICUgKAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgIF9TVEFURV9UT19ERVNDUklQVElPTl9NQVBbc2VsZi5fc3RhdGVdLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHQuX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXM+JyAlICgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwKICAgICAgICAgICAgICAgICAgIF9TVEFURV9UT19ERVNDUklQVElPTl9NQVBbc2VsZi5fc3RhdGVdKQoKICAgIGRlZiBjYW5jZWwoc2VsZik6CiAgICAgICAgIiIiQ2FuY2VsIHRoZSBmdXR1cmUgaWYgcG9zc2libGUuCgogICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgZnV0dXJlIHdhcyBjYW5jZWxsZWQsIEZhbHNlIG90aGVyd2lzZS4gQSBmdXR1cmUKICAgICAgICBjYW5ub3QgYmUgY2FuY2VsbGVkIGlmIGl0IGlzIHJ1bm5pbmcgb3IgaGFzIGFscmVhZHkgY29tcGxldGVkLgogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiBbUlVOTklORywgRklOSVNIRURdOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiBbQ0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVEXToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IENBTkNFTExFRAogICAgICAgICAgICBzZWxmLl9jb25kaXRpb24ubm90aWZ5X2FsbCgpCgogICAgICAgIHNlbGYuX2ludm9rZV9jYWxsYmFja3MoKQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIGNhbmNlbGxlZChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIHdhcyBjYW5jZWxsZWQuIiIiCiAgICAgICAgd2l0aCBzZWxmLl9jb25kaXRpb246CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZSBpbiBbQ0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVEXQoKICAgIGRlZiBydW5uaW5nKHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgaXMgY3VycmVudGx5IGV4ZWN1dGluZy4iIiIKICAgICAgICB3aXRoIHNlbGYuX2NvbmRpdGlvbjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlID09IFJVTk5JTkcKCiAgICBkZWYgZG9uZShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIHdhcyBjYW5jZWxsZWQgb3IgZmluaXNoZWQgZXhlY3V0aW5nLiIiIgogICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGUgaW4gW0NBTkNFTExFRCwgQ0FOQ0VMTEVEX0FORF9OT1RJRklFRCwgRklOSVNIRURdCgogICAgZGVmIF9fZ2V0X3Jlc3VsdChzZWxmKToKICAgICAgICBpZiBzZWxmLl9leGNlcHRpb246CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuX2V4Y2VwdGlvbgogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIyBCcmVhayBhIHJlZmVyZW5jZSBjeWNsZSB3aXRoIHRoZSBleGNlcHRpb24gaW4gc2VsZi5fZXhjZXB0aW9uCiAgICAgICAgICAgICAgICBzZWxmID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHQKCiAgICBkZWYgYWRkX2RvbmVfY2FsbGJhY2soc2VsZiwgZm4pOgogICAgICAgICIiIkF0dGFjaGVzIGEgY2FsbGFibGUgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBmdXR1cmUgZmluaXNoZXMuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIGZuOiBBIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGlzIGZ1dHVyZSBhcyBpdHMgb25seQogICAgICAgICAgICAgICAgYXJndW1lbnQgd2hlbiB0aGUgZnV0dXJlIGNvbXBsZXRlcyBvciBpcyBjYW5jZWxsZWQuIFRoZSBjYWxsYWJsZQogICAgICAgICAgICAgICAgd2lsbCBhbHdheXMgYmUgY2FsbGVkIGJ5IGEgdGhyZWFkIGluIHRoZSBzYW1lIHByb2Nlc3MgaW4gd2hpY2gKICAgICAgICAgICAgICAgIGl0IHdhcyBhZGRlZC4gSWYgdGhlIGZ1dHVyZSBoYXMgYWxyZWFkeSBjb21wbGV0ZWQgb3IgYmVlbgogICAgICAgICAgICAgICAgY2FuY2VsbGVkIHRoZW4gdGhlIGNhbGxhYmxlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5LiBUaGVzZQogICAgICAgICAgICAgICAgY2FsbGFibGVzIGFyZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSB3ZXJlIGFkZGVkLgogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSBub3QgaW4gW0NBTkNFTExFRCwgQ0FOQ0VMTEVEX0FORF9OT1RJRklFRCwgRklOSVNIRURdOgogICAgICAgICAgICAgICAgc2VsZi5fZG9uZV9jYWxsYmFja3MuYXBwZW5kKGZuKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmbihzZWxmKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIExPR0dFUi5leGNlcHRpb24oJ2V4Y2VwdGlvbiBjYWxsaW5nIGNhbGxiYWNrIGZvciAlcicsIHNlbGYpCgogICAgZGVmIHJlc3VsdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICIiIlJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsIHRoYXQgdGhlIGZ1dHVyZSByZXByZXNlbnRzLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICB0aW1lb3V0OiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIHJlc3VsdCBpZiB0aGUgZnV0dXJlCiAgICAgICAgICAgICAgICBpc24ndCBkb25lLiBJZiBOb25lLCB0aGVuIHRoZXJlIGlzIG5vIGxpbWl0IG9uIHRoZSB3YWl0IHRpbWUuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgdGhhdCB0aGUgZnV0dXJlIHJlcHJlc2VudHMuCgogICAgICAgIFJhaXNlczoKICAgICAgICAgICAgQ2FuY2VsbGVkRXJyb3I6IElmIHRoZSBmdXR1cmUgd2FzIGNhbmNlbGxlZC4KICAgICAgICAgICAgVGltZW91dEVycm9yOiBJZiB0aGUgZnV0dXJlIGRpZG4ndCBmaW5pc2ggZXhlY3V0aW5nIGJlZm9yZSB0aGUgZ2l2ZW4KICAgICAgICAgICAgICAgIHRpbWVvdXQuCiAgICAgICAgICAgIEV4Y2VwdGlvbjogSWYgdGhlIGNhbGwgcmFpc2VkIHRoZW4gdGhhdCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aXRoIHNlbGYuX2NvbmRpdGlvbjoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N0YXRlIGluIFtDQU5DRUxMRUQsIENBTkNFTExFRF9BTkRfTk9USUZJRURdOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIENhbmNlbGxlZEVycm9yKCkKICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fc3RhdGUgPT0gRklOSVNIRUQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19nZXRfcmVzdWx0KCkKCiAgICAgICAgICAgICAgICBzZWxmLl9jb25kaXRpb24ud2FpdCh0aW1lb3V0KQoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N0YXRlIGluIFtDQU5DRUxMRUQsIENBTkNFTExFRF9BTkRfTk9USUZJRURdOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIENhbmNlbGxlZEVycm9yKCkKICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fc3RhdGUgPT0gRklOSVNIRUQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19nZXRfcmVzdWx0KCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIEJyZWFrIGEgcmVmZXJlbmNlIGN5Y2xlIHdpdGggdGhlIGV4Y2VwdGlvbiBpbiBzZWxmLl9leGNlcHRpb24KICAgICAgICAgICAgc2VsZiA9IE5vbmUKCiAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBleGNlcHRpb24gcmFpc2VkIGJ5IHRoZSBjYWxsIHRoYXQgdGhlIGZ1dHVyZSByZXByZXNlbnRzLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICB0aW1lb3V0OiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIGV4Y2VwdGlvbiBpZiB0aGUKICAgICAgICAgICAgICAgIGZ1dHVyZSBpc24ndCBkb25lLiBJZiBOb25lLCB0aGVuIHRoZXJlIGlzIG5vIGxpbWl0IG9uIHRoZSB3YWl0CiAgICAgICAgICAgICAgICB0aW1lLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBUaGUgZXhjZXB0aW9uIHJhaXNlZCBieSB0aGUgY2FsbCB0aGF0IHRoZSBmdXR1cmUgcmVwcmVzZW50cyBvciBOb25lCiAgICAgICAgICAgIGlmIHRoZSBjYWxsIGNvbXBsZXRlZCB3aXRob3V0IHJhaXNpbmcuCgogICAgICAgIFJhaXNlczoKICAgICAgICAgICAgQ2FuY2VsbGVkRXJyb3I6IElmIHRoZSBmdXR1cmUgd2FzIGNhbmNlbGxlZC4KICAgICAgICAgICAgVGltZW91dEVycm9yOiBJZiB0aGUgZnV0dXJlIGRpZG4ndCBmaW5pc2ggZXhlY3V0aW5nIGJlZm9yZSB0aGUgZ2l2ZW4KICAgICAgICAgICAgICAgIHRpbWVvdXQuCiAgICAgICAgIiIiCgogICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiBbQ0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVEXToKICAgICAgICAgICAgICAgIHJhaXNlIENhbmNlbGxlZEVycm9yKCkKICAgICAgICAgICAgZWxpZiBzZWxmLl9zdGF0ZSA9PSBGSU5JU0hFRDoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb24KCiAgICAgICAgICAgIHNlbGYuX2NvbmRpdGlvbi53YWl0KHRpbWVvdXQpCgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiBbQ0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVEXToKICAgICAgICAgICAgICAgIHJhaXNlIENhbmNlbGxlZEVycm9yKCkKICAgICAgICAgICAgZWxpZiBzZWxmLl9zdGF0ZSA9PSBGSU5JU0hFRDoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb24KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcigpCgogICAgIyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBFeGVjdXRvcnMgYW5kIGluIHRlc3RzLgogICAgZGVmIHNldF9ydW5uaW5nX29yX25vdGlmeV9jYW5jZWwoc2VsZik6CiAgICAgICAgIiIiTWFyayB0aGUgZnV0dXJlIGFzIHJ1bm5pbmcgb3IgcHJvY2VzcyBhbnkgY2FuY2VsIG5vdGlmaWNhdGlvbnMuCgogICAgICAgIFNob3VsZCBvbmx5IGJlIHVzZWQgYnkgRXhlY3V0b3IgaW1wbGVtZW50YXRpb25zIGFuZCB1bml0IHRlc3RzLgoKICAgICAgICBJZiB0aGUgZnV0dXJlIGhhcyBiZWVuIGNhbmNlbGxlZCAoY2FuY2VsKCkgd2FzIGNhbGxlZCBhbmQgcmV0dXJuZWQKICAgICAgICBUcnVlKSB0aGVuIGFueSB0aHJlYWRzIHdhaXRpbmcgb24gdGhlIGZ1dHVyZSBjb21wbGV0aW5nICh0aG91Z2ggY2FsbHMKICAgICAgICB0byBhc19jb21wbGV0ZWQoKSBvciB3YWl0KCkpIGFyZSBub3RpZmllZCBhbmQgRmFsc2UgaXMgcmV0dXJuZWQuCgogICAgICAgIElmIHRoZSBmdXR1cmUgd2FzIG5vdCBjYW5jZWxsZWQgdGhlbiBpdCBpcyBwdXQgaW4gdGhlIHJ1bm5pbmcgc3RhdGUKICAgICAgICAoZnV0dXJlIGNhbGxzIHRvIHJ1bm5pbmcoKSB3aWxsIHJldHVybiBUcnVlKSBhbmQgVHJ1ZSBpcyByZXR1cm5lZC4KCiAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBieSBFeGVjdXRvciBpbXBsZW1lbnRhdGlvbnMgYmVmb3JlCiAgICAgICAgZXhlY3V0aW5nIHRoZSB3b3JrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZ1dHVyZS4gSWYgdGhpcyBtZXRob2QgcmV0dXJucwogICAgICAgIEZhbHNlIHRoZW4gdGhlIHdvcmsgc2hvdWxkIG5vdCBiZSBleGVjdXRlZC4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgRmFsc2UgaWYgdGhlIEZ1dHVyZSB3YXMgY2FuY2VsbGVkLCBUcnVlIG90aGVyd2lzZS4KCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBSdW50aW1lRXJyb3I6IGlmIHRoaXMgbWV0aG9kIHdhcyBhbHJlYWR5IGNhbGxlZCBvciBpZiBzZXRfcmVzdWx0KCkKICAgICAgICAgICAgICAgIG9yIHNldF9leGNlcHRpb24oKSB3YXMgY2FsbGVkLgogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBDQU5DRUxMRUQ6CiAgICAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IENBTkNFTExFRF9BTkRfTk9USUZJRUQKICAgICAgICAgICAgICAgIGZvciB3YWl0ZXIgaW4gc2VsZi5fd2FpdGVyczoKICAgICAgICAgICAgICAgICAgICB3YWl0ZXIuYWRkX2NhbmNlbGxlZChzZWxmKQogICAgICAgICAgICAgICAgIyBzZWxmLl9jb25kaXRpb24ubm90aWZ5X2FsbCgpIGlzIG5vdCBuZWNlc3NhcnkgYmVjYXVzZQogICAgICAgICAgICAgICAgIyBzZWxmLmNhbmNlbCgpIHRyaWdnZXJzIGEgbm90aWZpY2F0aW9uLgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgIGVsaWYgc2VsZi5fc3RhdGUgPT0gUEVORElORzoKICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlID0gUlVOTklORwogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIExPR0dFUi5jcml0aWNhbCgnRnV0dXJlICVzIGluIHVuZXhwZWN0ZWQgc3RhdGU6ICVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGF0ZSkKICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRnV0dXJlIGluIHVuZXhwZWN0ZWQgc3RhdGUnKQoKICAgIGRlZiBzZXRfcmVzdWx0KHNlbGYsIHJlc3VsdCk6CiAgICAgICAgIiIiU2V0cyB0aGUgcmV0dXJuIHZhbHVlIG9mIHdvcmsgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdXR1cmUuCgogICAgICAgIFNob3VsZCBvbmx5IGJlIHVzZWQgYnkgRXhlY3V0b3IgaW1wbGVtZW50YXRpb25zIGFuZCB1bml0IHRlc3RzLgogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiB7Q0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVELCBGSU5JU0hFRH06CiAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkU3RhdGVFcnJvcigne306IHshcn0nLmZvcm1hdChzZWxmLl9zdGF0ZSwgc2VsZikpCiAgICAgICAgICAgIHNlbGYuX3Jlc3VsdCA9IHJlc3VsdAogICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IEZJTklTSEVECiAgICAgICAgICAgIGZvciB3YWl0ZXIgaW4gc2VsZi5fd2FpdGVyczoKICAgICAgICAgICAgICAgIHdhaXRlci5hZGRfcmVzdWx0KHNlbGYpCiAgICAgICAgICAgIHNlbGYuX2NvbmRpdGlvbi5ub3RpZnlfYWxsKCkKICAgICAgICBzZWxmLl9pbnZva2VfY2FsbGJhY2tzKCkKCiAgICBkZWYgc2V0X2V4Y2VwdGlvbihzZWxmLCBleGNlcHRpb24pOgogICAgICAgICIiIlNldHMgdGhlIHJlc3VsdCBvZiB0aGUgZnV0dXJlIGFzIGJlaW5nIHRoZSBnaXZlbiBleGNlcHRpb24uCgogICAgICAgIFNob3VsZCBvbmx5IGJlIHVzZWQgYnkgRXhlY3V0b3IgaW1wbGVtZW50YXRpb25zIGFuZCB1bml0IHRlc3RzLgogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiB7Q0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVELCBGSU5JU0hFRH06CiAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkU3RhdGVFcnJvcigne306IHshcn0nLmZvcm1hdChzZWxmLl9zdGF0ZSwgc2VsZikpCiAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IGV4Y2VwdGlvbgogICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IEZJTklTSEVECiAgICAgICAgICAgIGZvciB3YWl0ZXIgaW4gc2VsZi5fd2FpdGVyczoKICAgICAgICAgICAgICAgIHdhaXRlci5hZGRfZXhjZXB0aW9uKHNlbGYpCiAgICAgICAgICAgIHNlbGYuX2NvbmRpdGlvbi5ub3RpZnlfYWxsKCkKICAgICAgICBzZWxmLl9pbnZva2VfY2FsbGJhY2tzKCkKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKHR5cGVzLkdlbmVyaWNBbGlhcykKCmNsYXNzIEV4ZWN1dG9yKG9iamVjdCk6CiAgICAiIiJUaGlzIGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbmNyZXRlIGFzeW5jaHJvbm91cyBleGVjdXRvcnMuIiIiCgogICAgZGVmIHN1Ym1pdChzZWxmLCBmbiwgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiJTdWJtaXRzIGEgY2FsbGFibGUgdG8gYmUgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLgoKICAgICAgICBTY2hlZHVsZXMgdGhlIGNhbGxhYmxlIHRvIGJlIGV4ZWN1dGVkIGFzIGZuKCphcmdzLCAqKmt3YXJncykgYW5kIHJldHVybnMKICAgICAgICBhIEZ1dHVyZSBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY2FsbGFibGUuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgRnV0dXJlIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gY2FsbC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKCiAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUsIGNodW5rc2l6ZT0xKToKICAgICAgICAiIiJSZXR1cm5zIGFuIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG8gbWFwKGZuLCBpdGVyKS4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgZm46IEEgY2FsbGFibGUgdGhhdCB3aWxsIHRha2UgYXMgbWFueSBhcmd1bWVudHMgYXMgdGhlcmUgYXJlCiAgICAgICAgICAgICAgICBwYXNzZWQgaXRlcmFibGVzLgogICAgICAgICAgICB0aW1lb3V0OiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0LiBJZiBOb25lLCB0aGVuIHRoZXJlCiAgICAgICAgICAgICAgICBpcyBubyBsaW1pdCBvbiB0aGUgd2FpdCB0aW1lLgogICAgICAgICAgICBjaHVua3NpemU6IFRoZSBzaXplIG9mIHRoZSBjaHVua3MgdGhlIGl0ZXJhYmxlIHdpbGwgYmUgYnJva2VuIGludG8KICAgICAgICAgICAgICAgIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gYSBjaGlsZCBwcm9jZXNzLiBUaGlzIGFyZ3VtZW50IGlzIG9ubHkKICAgICAgICAgICAgICAgIHVzZWQgYnkgUHJvY2Vzc1Bvb2xFeGVjdXRvcjsgaXQgaXMgaWdub3JlZCBieQogICAgICAgICAgICAgICAgVGhyZWFkUG9vbEV4ZWN1dG9yLgoKICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICBBbiBpdGVyYXRvciBlcXVpdmFsZW50IHRvOiBtYXAoZnVuYywgKml0ZXJhYmxlcykgYnV0IHRoZSBjYWxscyBtYXkKICAgICAgICAgICAgYmUgZXZhbHVhdGVkIG91dC1vZi1vcmRlci4KCiAgICAgICAgUmFpc2VzOgogICAgICAgICAgICBUaW1lb3V0RXJyb3I6IElmIHRoZSBlbnRpcmUgcmVzdWx0IGl0ZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKICAgICAgICAgICAgICAgIGJlZm9yZSB0aGUgZ2l2ZW4gdGltZW91dC4KICAgICAgICAgICAgRXhjZXB0aW9uOiBJZiBmbigqYXJncykgcmFpc2VzIGZvciBhbnkgdmFsdWVzLgogICAgICAgICIiIgogICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGVuZF90aW1lID0gdGltZW91dCArIHRpbWUubW9ub3RvbmljKCkKCiAgICAgICAgZnMgPSBbc2VsZi5zdWJtaXQoZm4sICphcmdzKSBmb3IgYXJncyBpbiB6aXAoKml0ZXJhYmxlcyldCgogICAgICAgICMgWWllbGQgbXVzdCBiZSBoaWRkZW4gaW4gY2xvc3VyZSBzbyB0aGF0IHRoZSBmdXR1cmVzIGFyZSBzdWJtaXR0ZWQKICAgICAgICAjIGJlZm9yZSB0aGUgZmlyc3QgaXRlcmF0b3IgdmFsdWUgaXMgcmVxdWlyZWQuCiAgICAgICAgZGVmIHJlc3VsdF9pdGVyYXRvcigpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAjIHJldmVyc2UgdG8ga2VlcCBmaW5pc2hpbmcgb3JkZXIKICAgICAgICAgICAgICAgIGZzLnJldmVyc2UoKQogICAgICAgICAgICAgICAgd2hpbGUgZnM6CiAgICAgICAgICAgICAgICAgICAgIyBDYXJlZnVsIG5vdCB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBwb3BwZWQgZnV0dXJlCiAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfcmVzdWx0X29yX2NhbmNlbChmcy5wb3AoKSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfcmVzdWx0X29yX2NhbmNlbChmcy5wb3AoKSwgZW5kX3RpbWUgLSB0aW1lLm1vbm90b25pYygpKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKICAgICAgICAgICAgICAgICAgICBmdXR1cmUuY2FuY2VsKCkKICAgICAgICByZXR1cm4gcmVzdWx0X2l0ZXJhdG9yKCkKCiAgICBkZWYgc2h1dGRvd24oc2VsZiwgd2FpdD1UcnVlLCAqLCBjYW5jZWxfZnV0dXJlcz1GYWxzZSk6CiAgICAgICAgIiIiQ2xlYW4tdXAgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIEV4ZWN1dG9yLgoKICAgICAgICBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2Qgc2V2ZXJhbCB0aW1lcy4gT3RoZXJ3aXNlLCBubyBvdGhlcgogICAgICAgIG1ldGhvZHMgY2FuIGJlIGNhbGxlZCBhZnRlciB0aGlzIG9uZS4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgd2FpdDogSWYgVHJ1ZSB0aGVuIHNodXRkb3duIHdpbGwgbm90IHJldHVybiB1bnRpbCBhbGwgcnVubmluZwogICAgICAgICAgICAgICAgZnV0dXJlcyBoYXZlIGZpbmlzaGVkIGV4ZWN1dGluZyBhbmQgdGhlIHJlc291cmNlcyB1c2VkIGJ5IHRoZQogICAgICAgICAgICAgICAgZXhlY3V0b3IgaGF2ZSBiZWVuIHJlY2xhaW1lZC4KICAgICAgICAgICAgY2FuY2VsX2Z1dHVyZXM6IElmIFRydWUgdGhlbiBzaHV0ZG93biB3aWxsIGNhbmNlbCBhbGwgcGVuZGluZwogICAgICAgICAgICAgICAgZnV0dXJlcy4gRnV0dXJlcyB0aGF0IGFyZSBjb21wbGV0ZWQgb3IgcnVubmluZyB3aWxsIG5vdCBiZQogICAgICAgICAgICAgICAgY2FuY2VsbGVkLgogICAgICAgICIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgogICAgICAgIHNlbGYuc2h1dGRvd24od2FpdD1UcnVlKQogICAgICAgIHJldHVybiBGYWxzZQoKCmNsYXNzIEJyb2tlbkV4ZWN1dG9yKFJ1bnRpbWVFcnJvcik6CiAgICAiIiIKICAgIFJhaXNlZCB3aGVuIGEgZXhlY3V0b3IgaGFzIGJlY29tZSBub24tZnVuY3Rpb25hbCBhZnRlciBhIHNldmVyZSBmYWlsdXJlLgogICAgIiIiClBLAwQUAAAAAAACIKNWx8MD4fqEAAD6hAAAHQAAAGNvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5IyBDb3B5cmlnaHQgMjAwOSBCcmlhbiBRdWlubGFuLiBBbGwgUmlnaHRzIFJlc2VydmVkLgojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KCiIiIkltcGxlbWVudHMgUHJvY2Vzc1Bvb2xFeGVjdXRvci4KClRoZSBmb2xsb3dpbmcgZGlhZ3JhbSBhbmQgdGV4dCBkZXNjcmliZSB0aGUgZGF0YS1mbG93IHRocm91Z2ggdGhlIHN5c3RlbToKCnw9PT09PT09PT09PT09PT09PT09PT09PSBJbi1wcm9jZXNzID09PT09PT09PT09PT09PT09PT09PXw9PSBPdXQtb2YtcHJvY2VzcyA9PXwKCistLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0rICAgICAgICstLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLSsgICAgKy0tLS0tLS0tLSsKfCAgICAgICAgICB8ICA9PiB8IFdvcmsgSWRzIHwgICAgICAgfCAgICAgICAgfCAgICAgfCBDYWxsIFEgICAgfCAgICB8IFByb2Nlc3MgfAp8ICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tKyAgICAgICB8ICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICAgIHwgIFBvb2wgICB8CnwgICAgICAgICAgfCAgICAgfCAuLi4gICAgICB8ICAgICAgIHwgICAgICAgIHwgICAgIHwgLi4uICAgICAgIHwgICAgKy0tLS0tLS0tLSsKfCAgICAgICAgICB8ICAgICB8IDYgICAgICAgIHwgICAgPT4gfCAgICAgICAgfCAgPT4gfCA1LCBjYWxsKCkgfCA9PiB8ICAgICAgICAgfAp8ICAgICAgICAgIHwgICAgIHwgNyAgICAgICAgfCAgICAgICB8ICAgICAgICB8ICAgICB8IC4uLiAgICAgICB8ICAgIHwgICAgICAgICB8CnwgUHJvY2VzcyAgfCAgICAgfCAuLi4gICAgICB8ICAgICAgIHwgTG9jYWwgIHwgICAgICstLS0tLS0tLS0tLSsgICAgfCBQcm9jZXNzIHwKfCAgUG9vbCAgICB8ICAgICArLS0tLS0tLS0tLSsgICAgICAgfCBXb3JrZXIgfCAgICAgICAgICAgICAgICAgICAgICB8ICAjMS4ubiAgfAp8IEV4ZWN1dG9yIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFRocmVhZCB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8CnwgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tICsgICAgIHwgICAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgICAgfCAgICAgICAgIHwKfCAgICAgICAgICB8IDw9PiB8IFdvcmsgSXRlbXMgfCA8PT4gfCAgICAgICAgfCA8PSAgfCBSZXN1bHQgUSAgfCA8PSB8ICAgICAgICAgfAp8ICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLS0rICAgICB8ICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICAgIHwgICAgICAgICB8CnwgICAgICAgICAgfCAgICAgfCA2OiBjYWxsKCkgIHwgICAgIHwgICAgICAgIHwgICAgIHwgLi4uICAgICAgIHwgICAgfCAgICAgICAgIHwKfCAgICAgICAgICB8ICAgICB8ICAgIGZ1dHVyZSAgfCAgICAgfCAgICAgICAgfCAgICAgfCA0LCByZXN1bHQgfCAgICB8ICAgICAgICAgfAp8ICAgICAgICAgIHwgICAgIHwgLi4uICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8IDMsIGV4Y2VwdCB8ICAgIHwgICAgICAgICB8CistLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLSsgICAgKy0tLS0tLS0tLSsKCkV4ZWN1dG9yLnN1Ym1pdCgpIGNhbGxlZDoKLSBjcmVhdGVzIGEgdW5pcXVlbHkgbnVtYmVyZWQgX1dvcmtJdGVtIGFuZCBhZGRzIGl0IHRvIHRoZSAiV29yayBJdGVtcyIgZGljdAotIGFkZHMgdGhlIGlkIG9mIHRoZSBfV29ya0l0ZW0gdG8gdGhlICJXb3JrIElkcyIgcXVldWUKCkxvY2FsIHdvcmtlciB0aHJlYWQ6Ci0gcmVhZHMgd29yayBpZHMgZnJvbSB0aGUgIldvcmsgSWRzIiBxdWV1ZSBhbmQgbG9va3MgdXAgdGhlIGNvcnJlc3BvbmRpbmcKICBXb3JrSXRlbSBmcm9tIHRoZSAiV29yayBJdGVtcyIgZGljdDogaWYgdGhlIHdvcmsgaXRlbSBoYXMgYmVlbiBjYW5jZWxsZWQgdGhlbgogIGl0IGlzIHNpbXBseSByZW1vdmVkIGZyb20gdGhlIGRpY3QsIG90aGVyd2lzZSBpdCBpcyByZXBhY2thZ2VkIGFzIGEKICBfQ2FsbEl0ZW0gYW5kIHB1dCBpbiB0aGUgIkNhbGwgUSIuIE5ldyBfQ2FsbEl0ZW1zIGFyZSBwdXQgaW4gdGhlICJDYWxsIFEiCiAgdW50aWwgIkNhbGwgUSIgaXMgZnVsbC4gTk9URTogdGhlIHNpemUgb2YgdGhlICJDYWxsIFEiIGlzIGtlcHQgc21hbGwgYmVjYXVzZQogIGNhbGxzIHBsYWNlZCBpbiB0aGUgIkNhbGwgUSIgY2FuIG5vIGxvbmdlciBiZSBjYW5jZWxsZWQgd2l0aCBGdXR1cmUuY2FuY2VsKCkuCi0gcmVhZHMgX1Jlc3VsdEl0ZW1zIGZyb20gIlJlc3VsdCBRIiwgdXBkYXRlcyB0aGUgZnV0dXJlIHN0b3JlZCBpbiB0aGUKICAiV29yayBJdGVtcyIgZGljdCBhbmQgZGVsZXRlcyB0aGUgZGljdCBlbnRyeQoKUHJvY2VzcyAjMS4ubjoKLSByZWFkcyBfQ2FsbEl0ZW1zIGZyb20gIkNhbGwgUSIsIGV4ZWN1dGVzIHRoZSBjYWxscywgYW5kIHB1dHMgdGhlIHJlc3VsdGluZwogIF9SZXN1bHRJdGVtcyBpbiAiUmVzdWx0IFEiCiIiIgoKX19hdXRob3JfXyA9ICdCcmlhbiBRdWlubGFuIChicmlhbkBzd2VldGFwcC5jb20pJwoKaW1wb3J0IG9zCmZyb20gY29uY3VycmVudC5mdXR1cmVzIGltcG9ydCBfYmFzZQppbXBvcnQgcXVldWUKaW1wb3J0IG11bHRpcHJvY2Vzc2luZyBhcyBtcAppbXBvcnQgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24KZnJvbSBtdWx0aXByb2Nlc3NpbmcucXVldWVzIGltcG9ydCBRdWV1ZQppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCB3ZWFrcmVmCmZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCmltcG9ydCBpdGVydG9vbHMKaW1wb3J0IHN5cwpmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4Y2VwdGlvbgoKCl90aHJlYWRzX3dha2V1cHMgPSB3ZWFrcmVmLldlYWtLZXlEaWN0aW9uYXJ5KCkKX2dsb2JhbF9zaHV0ZG93biA9IEZhbHNlCgoKY2xhc3MgX1RocmVhZFdha2V1cDoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQogICAgICAgIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyID0gbXAuUGlwZShkdXBsZXg9RmFsc2UpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKICAgICAgICAgICAgc2VsZi5fd3JpdGVyLmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5fcmVhZGVyLmNsb3NlKCkKCiAgICBkZWYgd2FrZXVwKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlci5zZW5kX2J5dGVzKGIiIikKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZDoKICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmVhZGVyLnBvbGwoKToKICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRlci5yZWN2X2J5dGVzKCkKCgpkZWYgX3B5dGhvbl9leGl0KCk6CiAgICBnbG9iYWwgX2dsb2JhbF9zaHV0ZG93bgogICAgX2dsb2JhbF9zaHV0ZG93biA9IFRydWUKICAgIGl0ZW1zID0gbGlzdChfdGhyZWFkc193YWtldXBzLml0ZW1zKCkpCiAgICBmb3IgXywgdGhyZWFkX3dha2V1cCBpbiBpdGVtczoKICAgICAgICAjIGNhbGwgbm90IHByb3RlY3RlZCBieSBQcm9jZXNzUG9vbEV4ZWN1dG9yLl9zaHV0ZG93bl9sb2NrCiAgICAgICAgdGhyZWFkX3dha2V1cC53YWtldXAoKQogICAgZm9yIHQsIF8gaW4gaXRlbXM6CiAgICAgICAgdC5qb2luKCkKCiMgUmVnaXN0ZXIgZm9yIGBfcHl0aG9uX2V4aXQoKWAgdG8gYmUgY2FsbGVkIGp1c3QgYmVmb3JlIGpvaW5pbmcgYWxsCiMgbm9uLWRhZW1vbiB0aHJlYWRzLiBUaGlzIGlzIHVzZWQgaW5zdGVhZCBvZiBgYXRleGl0LnJlZ2lzdGVyKClgIGZvcgojIGNvbXBhdGliaWxpdHkgd2l0aCBzdWJpbnRlcnByZXRlcnMsIHdoaWNoIG5vIGxvbmdlciBzdXBwb3J0IGRhZW1vbiB0aHJlYWRzLgojIFNlZSBicG8tMzk4MTIgZm9yIGNvbnRleHQuCnRocmVhZGluZy5fcmVnaXN0ZXJfYXRleGl0KF9weXRob25fZXhpdCkKCiMgQ29udHJvbHMgaG93IG1hbnkgbW9yZSBjYWxscyB0aGFuIHByb2Nlc3NlcyB3aWxsIGJlIHF1ZXVlZCBpbiB0aGUgY2FsbCBxdWV1ZS4KIyBBIHNtYWxsZXIgbnVtYmVyIHdpbGwgbWVhbiB0aGF0IHByb2Nlc3NlcyBzcGVuZCBtb3JlIHRpbWUgaWRsZSB3YWl0aW5nIGZvcgojIHdvcmsgd2hpbGUgYSBsYXJnZXIgbnVtYmVyIHdpbGwgbWFrZSBGdXR1cmUuY2FuY2VsKCkgc3VjY2VlZCBsZXNzIGZyZXF1ZW50bHkKIyAoRnV0dXJlcyBpbiB0aGUgY2FsbCBxdWV1ZSBjYW5ub3QgYmUgY2FuY2VsbGVkKS4KRVhUUkFfUVVFVUVEX0NBTExTID0gMQoKCiMgT24gV2luZG93cywgV2FpdEZvck11bHRpcGxlT2JqZWN0cyBpcyB1c2VkIHRvIHdhaXQgZm9yIHByb2Nlc3NlcyB0byBmaW5pc2guCiMgSXQgY2FuIHdhaXQgb24sIGF0IG1vc3QsIDYzIG9iamVjdHMuIFRoZXJlIGlzIGFuIG92ZXJoZWFkIG9mIHR3byBvYmplY3RzOgojIC0gdGhlIHJlc3VsdCBxdWV1ZSByZWFkZXIKIyAtIHRoZSB0aHJlYWQgd2FrZXVwIHJlYWRlcgpfTUFYX1dJTkRPV1NfV09SS0VSUyA9IDYzIC0gMgoKIyBIYWNrIHRvIGVtYmVkIHN0cmluZ2lmaWNhdGlvbiBvZiByZW1vdGUgdHJhY2ViYWNrIGluIGxvY2FsIHRyYWNlYmFjawoKY2xhc3MgX1JlbW90ZVRyYWNlYmFjayhFeGNlcHRpb24pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRiKToKICAgICAgICBzZWxmLnRiID0gdGIKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnRiCgpjbGFzcyBfRXhjZXB0aW9uV2l0aFRyYWNlYmFjazoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGMsIHRiKToKICAgICAgICB0YiA9ICcnLmpvaW4oZm9ybWF0X2V4Y2VwdGlvbih0eXBlKGV4YyksIGV4YywgdGIpKQogICAgICAgIHNlbGYuZXhjID0gZXhjCiAgICAgICAgIyBUcmFjZWJhY2sgb2JqZWN0IG5lZWRzIHRvIGJlIGdhcmJhZ2UtY29sbGVjdGVkIGFzIGl0cyBmcmFtZXMKICAgICAgICAjIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGV4Y2VwdGlvbiBzY29wZQogICAgICAgIHNlbGYuZXhjLl9fdHJhY2ViYWNrX18gPSBOb25lCiAgICAgICAgc2VsZi50YiA9ICdcbiIiIlxuJXMiIiInICUgdGIKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiBfcmVidWlsZF9leGMsIChzZWxmLmV4Yywgc2VsZi50YikKCmRlZiBfcmVidWlsZF9leGMoZXhjLCB0Yik6CiAgICBleGMuX19jYXVzZV9fID0gX1JlbW90ZVRyYWNlYmFjayh0YikKICAgIHJldHVybiBleGMKCmNsYXNzIF9Xb3JrSXRlbShvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1dHVyZSwgZm4sIGFyZ3MsIGt3YXJncyk6CiAgICAgICAgc2VsZi5mdXR1cmUgPSBmdXR1cmUKICAgICAgICBzZWxmLmZuID0gZm4KICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgc2VsZi5rd2FyZ3MgPSBrd2FyZ3MKCmNsYXNzIF9SZXN1bHRJdGVtKG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgd29ya19pZCwgZXhjZXB0aW9uPU5vbmUsIHJlc3VsdD1Ob25lLCBleGl0X3BpZD1Ob25lKToKICAgICAgICBzZWxmLndvcmtfaWQgPSB3b3JrX2lkCiAgICAgICAgc2VsZi5leGNlcHRpb24gPSBleGNlcHRpb24KICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdAogICAgICAgIHNlbGYuZXhpdF9waWQgPSBleGl0X3BpZAoKY2xhc3MgX0NhbGxJdGVtKG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgd29ya19pZCwgZm4sIGFyZ3MsIGt3YXJncyk6CiAgICAgICAgc2VsZi53b3JrX2lkID0gd29ya19pZAogICAgICAgIHNlbGYuZm4gPSBmbgogICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJncwoKCmNsYXNzIF9TYWZlUXVldWUoUXVldWUpOgogICAgIiIiU2FmZSBRdWV1ZSBzZXQgZXhjZXB0aW9uIHRvIHRoZSBmdXR1cmUgb2JqZWN0IGxpbmtlZCB0byBhIGpvYiIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF9zaXplPTAsICosIGN0eCwgcGVuZGluZ193b3JrX2l0ZW1zLCBzaHV0ZG93bl9sb2NrLAogICAgICAgICAgICAgICAgIHRocmVhZF93YWtldXApOgogICAgICAgIHNlbGYucGVuZGluZ193b3JrX2l0ZW1zID0gcGVuZGluZ193b3JrX2l0ZW1zCiAgICAgICAgc2VsZi5zaHV0ZG93bl9sb2NrID0gc2h1dGRvd25fbG9jawogICAgICAgIHNlbGYudGhyZWFkX3dha2V1cCA9IHRocmVhZF93YWtldXAKICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1heF9zaXplLCBjdHg9Y3R4KQoKICAgIGRlZiBfb25fcXVldWVfZmVlZGVyX2Vycm9yKHNlbGYsIGUsIG9iaik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIF9DYWxsSXRlbSk6CiAgICAgICAgICAgIHRiID0gZm9ybWF0X2V4Y2VwdGlvbih0eXBlKGUpLCBlLCBlLl9fdHJhY2ViYWNrX18pCiAgICAgICAgICAgIGUuX19jYXVzZV9fID0gX1JlbW90ZVRyYWNlYmFjaygnXG4iIiJcbnt9IiIiJy5mb3JtYXQoJycuam9pbih0YikpKQogICAgICAgICAgICB3b3JrX2l0ZW0gPSBzZWxmLnBlbmRpbmdfd29ya19pdGVtcy5wb3Aob2JqLndvcmtfaWQsIE5vbmUpCiAgICAgICAgICAgIHdpdGggc2VsZi5zaHV0ZG93bl9sb2NrOgogICAgICAgICAgICAgICAgc2VsZi50aHJlYWRfd2FrZXVwLndha2V1cCgpCiAgICAgICAgICAgICMgd29ya19pdGVtIGNhbiBiZSBOb25lIGlmIGFub3RoZXIgcHJvY2VzcyB0ZXJtaW5hdGVkLiBJbiB0aGlzCiAgICAgICAgICAgICMgY2FzZSwgdGhlIGV4ZWN1dG9yX21hbmFnZXJfdGhyZWFkIGZhaWxzIGFsbCB3b3JrX2l0ZW1zCiAgICAgICAgICAgICMgd2l0aCBCcm9rZW5Qcm9jZXNzUG9vbAogICAgICAgICAgICBpZiB3b3JrX2l0ZW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9leGNlcHRpb24oZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzdXBlcigpLl9vbl9xdWV1ZV9mZWVkZXJfZXJyb3IoZSwgb2JqKQoKCmRlZiBfZ2V0X2NodW5rcygqaXRlcmFibGVzLCBjaHVua3NpemUpOgogICAgIiIiIEl0ZXJhdGVzIG92ZXIgemlwKCllZCBpdGVyYWJsZXMgaW4gY2h1bmtzLiAiIiIKICAgIGl0ID0gemlwKCppdGVyYWJsZXMpCiAgICB3aGlsZSBUcnVlOgogICAgICAgIGNodW5rID0gdHVwbGUoaXRlcnRvb2xzLmlzbGljZShpdCwgY2h1bmtzaXplKSkKICAgICAgICBpZiBub3QgY2h1bms6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHlpZWxkIGNodW5rCgoKZGVmIF9wcm9jZXNzX2NodW5rKGZuLCBjaHVuayk6CiAgICAiIiIgUHJvY2Vzc2VzIGEgY2h1bmsgb2YgYW4gaXRlcmFibGUgcGFzc2VkIHRvIG1hcC4KCiAgICBSdW5zIHRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gbWFwKCkgb24gYSBjaHVuayBvZiB0aGUKICAgIGl0ZXJhYmxlIHBhc3NlZCB0byBtYXAuCgogICAgVGhpcyBmdW5jdGlvbiBpcyBydW4gaW4gYSBzZXBhcmF0ZSBwcm9jZXNzLgoKICAgICIiIgogICAgcmV0dXJuIFtmbigqYXJncykgZm9yIGFyZ3MgaW4gY2h1bmtdCgoKZGVmIF9zZW5kYmFja19yZXN1bHQocmVzdWx0X3F1ZXVlLCB3b3JrX2lkLCByZXN1bHQ9Tm9uZSwgZXhjZXB0aW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIGV4aXRfcGlkPU5vbmUpOgogICAgIiIiU2FmZWx5IHNlbmQgYmFjayB0aGUgZ2l2ZW4gcmVzdWx0IG9yIGV4Y2VwdGlvbiIiIgogICAgdHJ5OgogICAgICAgIHJlc3VsdF9xdWV1ZS5wdXQoX1Jlc3VsdEl0ZW0od29ya19pZCwgcmVzdWx0PXJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbj1leGNlcHRpb24sIGV4aXRfcGlkPWV4aXRfcGlkKSkKICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgZXhjID0gX0V4Y2VwdGlvbldpdGhUcmFjZWJhY2soZSwgZS5fX3RyYWNlYmFja19fKQogICAgICAgIHJlc3VsdF9xdWV1ZS5wdXQoX1Jlc3VsdEl0ZW0od29ya19pZCwgZXhjZXB0aW9uPWV4YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRfcGlkPWV4aXRfcGlkKSkKCgpkZWYgX3Byb2Nlc3Nfd29ya2VyKGNhbGxfcXVldWUsIHJlc3VsdF9xdWV1ZSwgaW5pdGlhbGl6ZXIsIGluaXRhcmdzLCBtYXhfdGFza3M9Tm9uZSk6CiAgICAiIiJFdmFsdWF0ZXMgY2FsbHMgZnJvbSBjYWxsX3F1ZXVlIGFuZCBwbGFjZXMgdGhlIHJlc3VsdHMgaW4gcmVzdWx0X3F1ZXVlLgoKICAgIFRoaXMgd29ya2VyIGlzIHJ1biBpbiBhIHNlcGFyYXRlIHByb2Nlc3MuCgogICAgQXJnczoKICAgICAgICBjYWxsX3F1ZXVlOiBBIGN0eC5RdWV1ZSBvZiBfQ2FsbEl0ZW1zIHRoYXQgd2lsbCBiZSByZWFkIGFuZAogICAgICAgICAgICBldmFsdWF0ZWQgYnkgdGhlIHdvcmtlci4KICAgICAgICByZXN1bHRfcXVldWU6IEEgY3R4LlF1ZXVlIG9mIF9SZXN1bHRJdGVtcyB0aGF0IHdpbGwgd3JpdHRlbgogICAgICAgICAgICB0byBieSB0aGUgd29ya2VyLgogICAgICAgIGluaXRpYWxpemVyOiBBIGNhbGxhYmxlIGluaXRpYWxpemVyLCBvciBOb25lCiAgICAgICAgaW5pdGFyZ3M6IEEgdHVwbGUgb2YgYXJncyBmb3IgdGhlIGluaXRpYWxpemVyCiAgICAiIiIKICAgIGlmIGluaXRpYWxpemVyIGlzIG5vdCBOb25lOgogICAgICAgIHRyeToKICAgICAgICAgICAgaW5pdGlhbGl6ZXIoKmluaXRhcmdzKQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICBfYmFzZS5MT0dHRVIuY3JpdGljYWwoJ0V4Y2VwdGlvbiBpbiBpbml0aWFsaXplcjonLCBleGNfaW5mbz1UcnVlKQogICAgICAgICAgICAjIFRoZSBwYXJlbnQgd2lsbCBub3RpY2UgdGhhdCB0aGUgcHJvY2VzcyBzdG9wcGVkIGFuZAogICAgICAgICAgICAjIG1hcmsgdGhlIHBvb2wgYnJva2VuCiAgICAgICAgICAgIHJldHVybgogICAgbnVtX3Rhc2tzID0gMAogICAgZXhpdF9waWQgPSBOb25lCiAgICB3aGlsZSBUcnVlOgogICAgICAgIGNhbGxfaXRlbSA9IGNhbGxfcXVldWUuZ2V0KGJsb2NrPVRydWUpCiAgICAgICAgaWYgY2FsbF9pdGVtIGlzIE5vbmU6CiAgICAgICAgICAgICMgV2FrZSB1cCBxdWV1ZSBtYW5hZ2VtZW50IHRocmVhZAogICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KG9zLmdldHBpZCgpKQogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgbWF4X3Rhc2tzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBudW1fdGFza3MgKz0gMQogICAgICAgICAgICBpZiBudW1fdGFza3MgPj0gbWF4X3Rhc2tzOgogICAgICAgICAgICAgICAgZXhpdF9waWQgPSBvcy5nZXRwaWQoKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHIgPSBjYWxsX2l0ZW0uZm4oKmNhbGxfaXRlbS5hcmdzLCAqKmNhbGxfaXRlbS5rd2FyZ3MpCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgZXhjID0gX0V4Y2VwdGlvbldpdGhUcmFjZWJhY2soZSwgZS5fX3RyYWNlYmFja19fKQogICAgICAgICAgICBfc2VuZGJhY2tfcmVzdWx0KHJlc3VsdF9xdWV1ZSwgY2FsbF9pdGVtLndvcmtfaWQsIGV4Y2VwdGlvbj1leGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdF9waWQ9ZXhpdF9waWQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgX3NlbmRiYWNrX3Jlc3VsdChyZXN1bHRfcXVldWUsIGNhbGxfaXRlbS53b3JrX2lkLCByZXN1bHQ9ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0X3BpZD1leGl0X3BpZCkKICAgICAgICAgICAgZGVsIHIKCiAgICAgICAgIyBMaWJlcmF0ZSB0aGUgcmVzb3VyY2UgYXMgc29vbiBhcyBwb3NzaWJsZSwgdG8gYXZvaWQgaG9sZGluZyBvbnRvCiAgICAgICAgIyBvcGVuIGZpbGVzIG9yIHNoYXJlZCBtZW1vcnkgdGhhdCBpcyBub3QgbmVlZGVkIGFueW1vcmUKICAgICAgICBkZWwgY2FsbF9pdGVtCgogICAgICAgIGlmIGV4aXRfcGlkIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4KCgpjbGFzcyBfRXhlY3V0b3JNYW5hZ2VyVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgIiIiTWFuYWdlcyB0aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoaXMgcHJvY2VzcyBhbmQgdGhlIHdvcmtlciBwcm9jZXNzZXMuCgogICAgVGhlIG1hbmFnZXIgaXMgcnVuIGluIGEgbG9jYWwgdGhyZWFkLgoKICAgIEFyZ3M6CiAgICAgICAgZXhlY3V0b3I6IEEgcmVmZXJlbmNlIHRvIHRoZSBQcm9jZXNzUG9vbEV4ZWN1dG9yIHRoYXQgb3ducwogICAgICAgICAgICB0aGlzIHRocmVhZC4gQSB3ZWFrcmVmIHdpbGwgYmUgb3duIGJ5IHRoZSBtYW5hZ2VyIGFzIHdlbGwgYXMKICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBpbnRlcm5hbCBvYmplY3RzIHVzZWQgdG8gaW50cm9zcGVjdCB0aGUgc3RhdGUgb2YKICAgICAgICAgICAgdGhlIGV4ZWN1dG9yLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4ZWN1dG9yKToKICAgICAgICAjIFN0b3JlIHJlZmVyZW5jZXMgdG8gbmVjZXNzYXJ5IGludGVybmFscyBvZiB0aGUgZXhlY3V0b3IuCgogICAgICAgICMgQSBfVGhyZWFkV2FrZXVwIHRvIGFsbG93IHdha2luZyB1cCB0aGUgcXVldWVfbWFuYWdlcl90aHJlYWQgZnJvbSB0aGUKICAgICAgICAjIG1haW4gVGhyZWFkIGFuZCBhdm9pZCBkZWFkbG9ja3MgY2F1c2VkIGJ5IHBlcm1hbmVudGx5IGxvY2tlZCBxdWV1ZXMuCiAgICAgICAgc2VsZi50aHJlYWRfd2FrZXVwID0gZXhlY3V0b3IuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkX3dha2V1cAogICAgICAgIHNlbGYuc2h1dGRvd25fbG9jayA9IGV4ZWN1dG9yLl9zaHV0ZG93bl9sb2NrCgogICAgICAgICMgQSB3ZWFrcmVmLnJlZiB0byB0aGUgUHJvY2Vzc1Bvb2xFeGVjdXRvciB0aGF0IG93bnMgdGhpcyB0aHJlYWQuIFVzZWQKICAgICAgICAjIHRvIGRldGVybWluZSBpZiB0aGUgUHJvY2Vzc1Bvb2xFeGVjdXRvciBoYXMgYmVlbiBnYXJiYWdlIGNvbGxlY3RlZAogICAgICAgICMgYW5kIHRoYXQgdGhlIG1hbmFnZXIgY2FuIGV4aXQuCiAgICAgICAgIyBXaGVuIHRoZSBleGVjdXRvciBnZXRzIGdhcmJhZ2UgY29sbGVjdGVkLCB0aGUgd2Vha3JlZiBjYWxsYmFjawogICAgICAgICMgd2lsbCB3YWtlIHVwIHRoZSBxdWV1ZSBtYW5hZ2VtZW50IHRocmVhZCBzbyB0aGF0IGl0IGNhbiB0ZXJtaW5hdGUKICAgICAgICAjIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgd29yayBpdGVtLgogICAgICAgIGRlZiB3ZWFrcmVmX2NiKF8sCiAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX3dha2V1cD1zZWxmLnRocmVhZF93YWtldXAsCiAgICAgICAgICAgICAgICAgICAgICAgc2h1dGRvd25fbG9jaz1zZWxmLnNodXRkb3duX2xvY2spOgogICAgICAgICAgICBtcC51dGlsLmRlYnVnKCdFeGVjdXRvciBjb2xsZWN0ZWQ6IHRyaWdnZXJpbmcgY2FsbGJhY2sgZm9yJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgUXVldWVNYW5hZ2VyIHdha2V1cCcpCiAgICAgICAgICAgIHdpdGggc2h1dGRvd25fbG9jazoKICAgICAgICAgICAgICAgIHRocmVhZF93YWtldXAud2FrZXVwKCkKCiAgICAgICAgc2VsZi5leGVjdXRvcl9yZWZlcmVuY2UgPSB3ZWFrcmVmLnJlZihleGVjdXRvciwgd2Vha3JlZl9jYikKCiAgICAgICAgIyBBIGxpc3Qgb2YgdGhlIGN0eC5Qcm9jZXNzIGluc3RhbmNlcyB1c2VkIGFzIHdvcmtlcnMuCiAgICAgICAgc2VsZi5wcm9jZXNzZXMgPSBleGVjdXRvci5fcHJvY2Vzc2VzCgogICAgICAgICMgQSBjdHguUXVldWUgdGhhdCB3aWxsIGJlIGZpbGxlZCB3aXRoIF9DYWxsSXRlbXMgZGVyaXZlZCBmcm9tCiAgICAgICAgIyBfV29ya0l0ZW1zIGZvciBwcm9jZXNzaW5nIGJ5IHRoZSBwcm9jZXNzIHdvcmtlcnMuCiAgICAgICAgc2VsZi5jYWxsX3F1ZXVlID0gZXhlY3V0b3IuX2NhbGxfcXVldWUKCiAgICAgICAgIyBBIGN0eC5TaW1wbGVRdWV1ZSBvZiBfUmVzdWx0SXRlbXMgZ2VuZXJhdGVkIGJ5IHRoZSBwcm9jZXNzIHdvcmtlcnMuCiAgICAgICAgc2VsZi5yZXN1bHRfcXVldWUgPSBleGVjdXRvci5fcmVzdWx0X3F1ZXVlCgogICAgICAgICMgQSBxdWV1ZS5RdWV1ZSBvZiB3b3JrIGlkcyBlLmcuIFF1ZXVlKFs1LCA2LCAuLi5dKS4KICAgICAgICBzZWxmLndvcmtfaWRzX3F1ZXVlID0gZXhlY3V0b3IuX3dvcmtfaWRzCgogICAgICAgICMgTWF4aW11bSBudW1iZXIgb2YgdGFza3MgYSB3b3JrZXIgcHJvY2VzcyBjYW4gZXhlY3V0ZSBiZWZvcmUKICAgICAgICAjIGV4aXRpbmcgc2FmZWx5CiAgICAgICAgc2VsZi5tYXhfdGFza3NfcGVyX2NoaWxkID0gZXhlY3V0b3IuX21heF90YXNrc19wZXJfY2hpbGQKCiAgICAgICAgIyBBIGRpY3QgbWFwcGluZyB3b3JrIGlkcyB0byBfV29ya0l0ZW1zIGUuZy4KICAgICAgICAjICAgICB7NTogPF9Xb3JrSXRlbS4uLj4sIDY6IDxfV29ya0l0ZW0uLi4+LCAuLi59CiAgICAgICAgc2VsZi5wZW5kaW5nX3dvcmtfaXRlbXMgPSBleGVjdXRvci5fcGVuZGluZ193b3JrX2l0ZW1zCgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQoKICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIyBNYWluIGxvb3AgZm9yIHRoZSBleGVjdXRvciBtYW5hZ2VyIHRocmVhZC4KCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgc2VsZi5hZGRfY2FsbF9pdGVtX3RvX3F1ZXVlKCkKCiAgICAgICAgICAgIHJlc3VsdF9pdGVtLCBpc19icm9rZW4sIGNhdXNlID0gc2VsZi53YWl0X3Jlc3VsdF9icm9rZW5fb3Jfd2FrZXVwKCkKCiAgICAgICAgICAgIGlmIGlzX2Jyb2tlbjoKICAgICAgICAgICAgICAgIHNlbGYudGVybWluYXRlX2Jyb2tlbihjYXVzZSkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpZiByZXN1bHRfaXRlbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19yZXN1bHRfaXRlbShyZXN1bHRfaXRlbSkKCiAgICAgICAgICAgICAgICBwcm9jZXNzX2V4aXRlZCA9IHJlc3VsdF9pdGVtLmV4aXRfcGlkIGlzIG5vdCBOb25lCiAgICAgICAgICAgICAgICBpZiBwcm9jZXNzX2V4aXRlZDoKICAgICAgICAgICAgICAgICAgICBwID0gc2VsZi5wcm9jZXNzZXMucG9wKHJlc3VsdF9pdGVtLmV4aXRfcGlkKQogICAgICAgICAgICAgICAgICAgIHAuam9pbigpCgogICAgICAgICAgICAgICAgIyBEZWxldGUgcmVmZXJlbmNlIHRvIHJlc3VsdF9pdGVtIHRvIGF2b2lkIGtlZXBpbmcgcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgIyB3aGlsZSB3YWl0aW5nIG9uIG5ldyByZXN1bHRzLgogICAgICAgICAgICAgICAgZGVsIHJlc3VsdF9pdGVtCgogICAgICAgICAgICAgICAgaWYgZXhlY3V0b3IgOj0gc2VsZi5leGVjdXRvcl9yZWZlcmVuY2UoKToKICAgICAgICAgICAgICAgICAgICBpZiBwcm9jZXNzX2V4aXRlZDoKICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnNodXRkb3duX2xvY2s6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRvci5fYWRqdXN0X3Byb2Nlc3NfY291bnQoKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dG9yLl9pZGxlX3dvcmtlcl9zZW1hcGhvcmUucmVsZWFzZSgpCiAgICAgICAgICAgICAgICAgICAgZGVsIGV4ZWN1dG9yCgogICAgICAgICAgICBpZiBzZWxmLmlzX3NodXR0aW5nX2Rvd24oKToKICAgICAgICAgICAgICAgIHNlbGYuZmxhZ19leGVjdXRvcl9zaHV0dGluZ19kb3duKCkKCiAgICAgICAgICAgICAgICAjIFNpbmNlIG5vIG5ldyB3b3JrIGl0ZW1zIGNhbiBiZSBhZGRlZCwgaXQgaXMgc2FmZSB0byBzaHV0ZG93bgogICAgICAgICAgICAgICAgIyB0aGlzIHRocmVhZCBpZiB0aGVyZSBhcmUgbm8gcGVuZGluZyB3b3JrIGl0ZW1zLgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucGVuZGluZ193b3JrX2l0ZW1zOgogICAgICAgICAgICAgICAgICAgIHNlbGYuam9pbl9leGVjdXRvcl9pbnRlcm5hbHMoKQogICAgICAgICAgICAgICAgICAgIHJldHVybgoKICAgIGRlZiBhZGRfY2FsbF9pdGVtX3RvX3F1ZXVlKHNlbGYpOgogICAgICAgICMgRmlsbHMgY2FsbF9xdWV1ZSB3aXRoIF9Xb3JrSXRlbXMgZnJvbSBwZW5kaW5nX3dvcmtfaXRlbXMuCiAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIG5ldmVyIGJsb2Nrcy4KICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBpZiBzZWxmLmNhbGxfcXVldWUuZnVsbCgpOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdvcmtfaWQgPSBzZWxmLndvcmtfaWRzX3F1ZXVlLmdldChibG9jaz1GYWxzZSkKICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB3b3JrX2l0ZW0gPSBzZWxmLnBlbmRpbmdfd29ya19pdGVtc1t3b3JrX2lkXQoKICAgICAgICAgICAgICAgIGlmIHdvcmtfaXRlbS5mdXR1cmUuc2V0X3J1bm5pbmdfb3Jfbm90aWZ5X2NhbmNlbCgpOgogICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbF9xdWV1ZS5wdXQoX0NhbGxJdGVtKHdvcmtfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya19pdGVtLmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5rd2FyZ3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2s9VHJ1ZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYucGVuZGluZ193b3JrX2l0ZW1zW3dvcmtfaWRdCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKCiAgICBkZWYgd2FpdF9yZXN1bHRfYnJva2VuX29yX3dha2V1cChzZWxmKToKICAgICAgICAjIFdhaXQgZm9yIGEgcmVzdWx0IHRvIGJlIHJlYWR5IGluIHRoZSByZXN1bHRfcXVldWUgd2hpbGUgY2hlY2tpbmcKICAgICAgICAjIHRoYXQgYWxsIHdvcmtlciBwcm9jZXNzZXMgYXJlIHN0aWxsIHJ1bm5pbmcsIG9yIGZvciBhIHdha2UgdXAKICAgICAgICAjIHNpZ25hbCBzZW5kLiBUaGUgd2FrZSB1cCBzaWduYWxzIGNvbWUgZWl0aGVyIGZyb20gbmV3IHRhc2tzIGJlaW5nCiAgICAgICAgIyBzdWJtaXR0ZWQsIGZyb20gdGhlIGV4ZWN1dG9yIGJlaW5nIHNodXRkb3duL2djLWVkLCBvciBmcm9tIHRoZQogICAgICAgICMgc2h1dGRvd24gb2YgdGhlIHB5dGhvbiBpbnRlcnByZXRlci4KICAgICAgICByZXN1bHRfcmVhZGVyID0gc2VsZi5yZXN1bHRfcXVldWUuX3JlYWRlcgogICAgICAgIGFzc2VydCBub3Qgc2VsZi50aHJlYWRfd2FrZXVwLl9jbG9zZWQKICAgICAgICB3YWtldXBfcmVhZGVyID0gc2VsZi50aHJlYWRfd2FrZXVwLl9yZWFkZXIKICAgICAgICByZWFkZXJzID0gW3Jlc3VsdF9yZWFkZXIsIHdha2V1cF9yZWFkZXJdCiAgICAgICAgd29ya2VyX3NlbnRpbmVscyA9IFtwLnNlbnRpbmVsIGZvciBwIGluIGxpc3Qoc2VsZi5wcm9jZXNzZXMudmFsdWVzKCkpXQogICAgICAgIHJlYWR5ID0gbXAuY29ubmVjdGlvbi53YWl0KHJlYWRlcnMgKyB3b3JrZXJfc2VudGluZWxzKQoKICAgICAgICBjYXVzZSA9IE5vbmUKICAgICAgICBpc19icm9rZW4gPSBUcnVlCiAgICAgICAgcmVzdWx0X2l0ZW0gPSBOb25lCiAgICAgICAgaWYgcmVzdWx0X3JlYWRlciBpbiByZWFkeToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmVzdWx0X2l0ZW0gPSByZXN1bHRfcmVhZGVyLnJlY3YoKQogICAgICAgICAgICAgICAgaXNfYnJva2VuID0gRmFsc2UKICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgIGNhdXNlID0gZm9ybWF0X2V4Y2VwdGlvbih0eXBlKGUpLCBlLCBlLl9fdHJhY2ViYWNrX18pCgogICAgICAgIGVsaWYgd2FrZXVwX3JlYWRlciBpbiByZWFkeToKICAgICAgICAgICAgaXNfYnJva2VuID0gRmFsc2UKCiAgICAgICAgd2l0aCBzZWxmLnNodXRkb3duX2xvY2s6CiAgICAgICAgICAgIHNlbGYudGhyZWFkX3dha2V1cC5jbGVhcigpCgogICAgICAgIHJldHVybiByZXN1bHRfaXRlbSwgaXNfYnJva2VuLCBjYXVzZQoKICAgIGRlZiBwcm9jZXNzX3Jlc3VsdF9pdGVtKHNlbGYsIHJlc3VsdF9pdGVtKToKICAgICAgICAjIFByb2Nlc3MgdGhlIHJlY2VpdmVkIGEgcmVzdWx0X2l0ZW0uIFRoaXMgY2FuIGJlIGVpdGhlciB0aGUgUElEIG9mIGEKICAgICAgICAjIHdvcmtlciB0aGF0IGV4aXRlZCBncmFjZWZ1bGx5IG9yIGEgX1Jlc3VsdEl0ZW0KCiAgICAgICAgaWYgaXNpbnN0YW5jZShyZXN1bHRfaXRlbSwgaW50KToKICAgICAgICAgICAgIyBDbGVhbiBzaHV0ZG93biBvZiBhIHdvcmtlciB1c2luZyBpdHMgUElECiAgICAgICAgICAgICMgKGF2b2lkcyBtYXJraW5nIHRoZSBleGVjdXRvciBicm9rZW4pCiAgICAgICAgICAgIGFzc2VydCBzZWxmLmlzX3NodXR0aW5nX2Rvd24oKQogICAgICAgICAgICBwID0gc2VsZi5wcm9jZXNzZXMucG9wKHJlc3VsdF9pdGVtKQogICAgICAgICAgICBwLmpvaW4oKQogICAgICAgICAgICBpZiBub3Qgc2VsZi5wcm9jZXNzZXM6CiAgICAgICAgICAgICAgICBzZWxmLmpvaW5fZXhlY3V0b3JfaW50ZXJuYWxzKCkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgUmVjZWl2ZWQgYSBfUmVzdWx0SXRlbSBzbyBtYXJrIHRoZSBmdXR1cmUgYXMgY29tcGxldGVkLgogICAgICAgICAgICB3b3JrX2l0ZW0gPSBzZWxmLnBlbmRpbmdfd29ya19pdGVtcy5wb3AocmVzdWx0X2l0ZW0ud29ya19pZCwgTm9uZSkKICAgICAgICAgICAgIyB3b3JrX2l0ZW0gY2FuIGJlIE5vbmUgaWYgYW5vdGhlciBwcm9jZXNzIHRlcm1pbmF0ZWQgKHNlZSBhYm92ZSkKICAgICAgICAgICAgaWYgd29ya19pdGVtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgcmVzdWx0X2l0ZW0uZXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X2V4Y2VwdGlvbihyZXN1bHRfaXRlbS5leGNlcHRpb24pCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X3Jlc3VsdChyZXN1bHRfaXRlbS5yZXN1bHQpCgogICAgZGVmIGlzX3NodXR0aW5nX2Rvd24oc2VsZik6CiAgICAgICAgIyBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBzdGFydCBzaHV0dGluZyBkb3duIHRoZSBleGVjdXRvci4KICAgICAgICBleGVjdXRvciA9IHNlbGYuZXhlY3V0b3JfcmVmZXJlbmNlKCkKICAgICAgICAjIE5vIG1vcmUgd29yayBpdGVtcyBjYW4gYmUgYWRkZWQgaWY6CiAgICAgICAgIyAgIC0gVGhlIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd24gT1IKICAgICAgICAjICAgLSBUaGUgZXhlY3V0b3IgdGhhdCBvd25zIHRoaXMgd29ya2VyIGhhcyBiZWVuIGNvbGxlY3RlZCBPUgogICAgICAgICMgICAtIFRoZSBleGVjdXRvciB0aGF0IG93bnMgdGhpcyB3b3JrZXIgaGFzIGJlZW4gc2h1dGRvd24uCiAgICAgICAgcmV0dXJuIChfZ2xvYmFsX3NodXRkb3duIG9yIGV4ZWN1dG9yIGlzIE5vbmUKICAgICAgICAgICAgICAgIG9yIGV4ZWN1dG9yLl9zaHV0ZG93bl90aHJlYWQpCgogICAgZGVmIHRlcm1pbmF0ZV9icm9rZW4oc2VsZiwgY2F1c2UpOgogICAgICAgICMgVGVybWluYXRlIHRoZSBleGVjdXRvciBiZWNhdXNlIGl0IGlzIGluIGEgYnJva2VuIHN0YXRlLiBUaGUgY2F1c2UKICAgICAgICAjIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgZXJyb3IgdGhhdAogICAgICAgICMgbGVhZCB0aGUgZXhlY3V0b3IgaW50byBiZWNvbWluZyBicm9rZW4uCgogICAgICAgICMgTWFyayB0aGUgcHJvY2VzcyBwb29sIGJyb2tlbiBzbyB0aGF0IHN1Ym1pdHMgZmFpbCByaWdodCBub3cuCiAgICAgICAgZXhlY3V0b3IgPSBzZWxmLmV4ZWN1dG9yX3JlZmVyZW5jZSgpCiAgICAgICAgaWYgZXhlY3V0b3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGV4ZWN1dG9yLl9icm9rZW4gPSAoJ0EgY2hpbGQgcHJvY2VzcyB0ZXJtaW5hdGVkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWJydXB0bHksIHRoZSBwcm9jZXNzIHBvb2wgaXMgbm90ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNhYmxlIGFueW1vcmUnKQogICAgICAgICAgICBleGVjdXRvci5fc2h1dGRvd25fdGhyZWFkID0gVHJ1ZQogICAgICAgICAgICBleGVjdXRvciA9IE5vbmUKCiAgICAgICAgIyBBbGwgcGVuZGluZyB0YXNrcyBhcmUgdG8gYmUgbWFya2VkIGZhaWxlZCB3aXRoIHRoZSBmb2xsb3dpbmcKICAgICAgICAjIEJyb2tlblByb2Nlc3NQb29sIGVycm9yCiAgICAgICAgYnBlID0gQnJva2VuUHJvY2Vzc1Bvb2woIkEgcHJvY2VzcyBpbiB0aGUgcHJvY2VzcyBwb29sIHdhcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlcm1pbmF0ZWQgYWJydXB0bHkgd2hpbGUgdGhlIGZ1dHVyZSB3YXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJydW5uaW5nIG9yIHBlbmRpbmcuIikKICAgICAgICBpZiBjYXVzZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgYnBlLl9fY2F1c2VfXyA9IF9SZW1vdGVUcmFjZWJhY2soCiAgICAgICAgICAgICAgICBmIlxuJycnXG57Jycuam9pbihjYXVzZSl9JycnIikKCiAgICAgICAgIyBNYXJrIHBlbmRpbmcgdGFza3MgYXMgZmFpbGVkLgogICAgICAgIGZvciB3b3JrX2lkLCB3b3JrX2l0ZW0gaW4gc2VsZi5wZW5kaW5nX3dvcmtfaXRlbXMuaXRlbXMoKToKICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfZXhjZXB0aW9uKGJwZSkKICAgICAgICAgICAgIyBEZWxldGUgcmVmZXJlbmNlcyB0byBvYmplY3QuIFNlZSBpc3N1ZTE2Mjg0CiAgICAgICAgICAgIGRlbCB3b3JrX2l0ZW0KICAgICAgICBzZWxmLnBlbmRpbmdfd29ya19pdGVtcy5jbGVhcigpCgogICAgICAgICMgVGVybWluYXRlIHJlbWFpbmluZyB3b3JrZXJzIGZvcmNpYmx5OiB0aGUgcXVldWVzIG9yIHRoZWlyCiAgICAgICAgIyBsb2NrcyBtYXkgYmUgaW4gYSBkaXJ0eSBzdGF0ZSBhbmQgYmxvY2sgZm9yZXZlci4KICAgICAgICBmb3IgcCBpbiBzZWxmLnByb2Nlc3Nlcy52YWx1ZXMoKToKICAgICAgICAgICAgcC50ZXJtaW5hdGUoKQoKICAgICAgICAjIGNsZWFuIHVwIHJlc291cmNlcwogICAgICAgIHNlbGYuam9pbl9leGVjdXRvcl9pbnRlcm5hbHMoKQoKICAgIGRlZiBmbGFnX2V4ZWN1dG9yX3NodXR0aW5nX2Rvd24oc2VsZik6CiAgICAgICAgIyBGbGFnIHRoZSBleGVjdXRvciBhcyBzaHV0dGluZyBkb3duIGFuZCBjYW5jZWwgcmVtYWluaW5nIHRhc2tzIGlmCiAgICAgICAgIyByZXF1ZXN0ZWQgYXMgZWFybHkgYXMgcG9zc2libGUgaWYgaXQgaXMgbm90IGdjLWVkIHlldC4KICAgICAgICBleGVjdXRvciA9IHNlbGYuZXhlY3V0b3JfcmVmZXJlbmNlKCkKICAgICAgICBpZiBleGVjdXRvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZCA9IFRydWUKICAgICAgICAgICAgIyBDYW5jZWwgcGVuZGluZyB3b3JrIGl0ZW1zIGlmIHJlcXVlc3RlZC4KICAgICAgICAgICAgaWYgZXhlY3V0b3IuX2NhbmNlbF9wZW5kaW5nX2Z1dHVyZXM6CiAgICAgICAgICAgICAgICAjIENhbmNlbCBhbGwgcGVuZGluZyBmdXR1cmVzIGFuZCB1cGRhdGUgcGVuZGluZ193b3JrX2l0ZW1zCiAgICAgICAgICAgICAgICAjIHRvIG9ubHkgaGF2ZSBmdXR1cmVzIHRoYXQgYXJlIGN1cnJlbnRseSBydW5uaW5nLgogICAgICAgICAgICAgICAgbmV3X3BlbmRpbmdfd29ya19pdGVtcyA9IHt9CiAgICAgICAgICAgICAgICBmb3Igd29ya19pZCwgd29ya19pdGVtIGluIHNlbGYucGVuZGluZ193b3JrX2l0ZW1zLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHdvcmtfaXRlbS5mdXR1cmUuY2FuY2VsKCk6CiAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wZW5kaW5nX3dvcmtfaXRlbXNbd29ya19pZF0gPSB3b3JrX2l0ZW0KICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ193b3JrX2l0ZW1zID0gbmV3X3BlbmRpbmdfd29ya19pdGVtcwogICAgICAgICAgICAgICAgIyBEcmFpbiB3b3JrX2lkc19xdWV1ZSBzaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0bwogICAgICAgICAgICAgICAgIyBhZGQgaXRlbXMgdG8gdGhlIGNhbGwgcXVldWUuCiAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53b3JrX2lkc19xdWV1ZS5nZXRfbm93YWl0KCkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBkbyB0aGlzIG9ubHkgb25jZSB0byBub3Qgd2FzdGUgdGltZSBsb29waW5nCiAgICAgICAgICAgICAgICAjIG9uIHJ1bm5pbmcgcHJvY2Vzc2VzIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICAgICBleGVjdXRvci5fY2FuY2VsX3BlbmRpbmdfZnV0dXJlcyA9IEZhbHNlCgogICAgZGVmIHNodXRkb3duX3dvcmtlcnMoc2VsZik6CiAgICAgICAgbl9jaGlsZHJlbl90b19zdG9wID0gc2VsZi5nZXRfbl9jaGlsZHJlbl9hbGl2ZSgpCiAgICAgICAgbl9zZW50aW5lbHNfc2VudCA9IDAKICAgICAgICAjIFNlbmQgdGhlIHJpZ2h0IG51bWJlciBvZiBzZW50aW5lbHMsIHRvIG1ha2Ugc3VyZSBhbGwgY2hpbGRyZW4gYXJlCiAgICAgICAgIyBwcm9wZXJseSB0ZXJtaW5hdGVkLgogICAgICAgIHdoaWxlIChuX3NlbnRpbmVsc19zZW50IDwgbl9jaGlsZHJlbl90b19zdG9wCiAgICAgICAgICAgICAgICBhbmQgc2VsZi5nZXRfbl9jaGlsZHJlbl9hbGl2ZSgpID4gMCk6CiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG5fY2hpbGRyZW5fdG9fc3RvcCAtIG5fc2VudGluZWxzX3NlbnQpOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbF9xdWV1ZS5wdXRfbm93YWl0KE5vbmUpCiAgICAgICAgICAgICAgICAgICAgbl9zZW50aW5lbHNfc2VudCArPSAxCiAgICAgICAgICAgICAgICBleGNlcHQgcXVldWUuRnVsbDoKICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgIGRlZiBqb2luX2V4ZWN1dG9yX2ludGVybmFscyhzZWxmKToKICAgICAgICBzZWxmLnNodXRkb3duX3dvcmtlcnMoKQogICAgICAgICMgUmVsZWFzZSB0aGUgcXVldWUncyByZXNvdXJjZXMgYXMgc29vbiBhcyBwb3NzaWJsZS4KICAgICAgICBzZWxmLmNhbGxfcXVldWUuY2xvc2UoKQogICAgICAgIHNlbGYuY2FsbF9xdWV1ZS5qb2luX3RocmVhZCgpCiAgICAgICAgd2l0aCBzZWxmLnNodXRkb3duX2xvY2s6CiAgICAgICAgICAgIHNlbGYudGhyZWFkX3dha2V1cC5jbG9zZSgpCiAgICAgICAgIyBJZiAuam9pbigpIGlzIG5vdCBjYWxsZWQgb24gdGhlIGNyZWF0ZWQgcHJvY2Vzc2VzIHRoZW4KICAgICAgICAjIHNvbWUgY3R4LlF1ZXVlIG1ldGhvZHMgbWF5IGRlYWRsb2NrIG9uIE1hYyBPUyBYLgogICAgICAgIGZvciBwIGluIHNlbGYucHJvY2Vzc2VzLnZhbHVlcygpOgogICAgICAgICAgICBwLmpvaW4oKQoKICAgIGRlZiBnZXRfbl9jaGlsZHJlbl9hbGl2ZShzZWxmKToKICAgICAgICAjIFRoaXMgaXMgYW4gdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBjaGlsZHJlbiBhbGl2ZS4KICAgICAgICByZXR1cm4gc3VtKHAuaXNfYWxpdmUoKSBmb3IgcCBpbiBzZWxmLnByb2Nlc3Nlcy52YWx1ZXMoKSkKCgpfc3lzdGVtX2xpbWl0c19jaGVja2VkID0gRmFsc2UKX3N5c3RlbV9saW1pdGVkID0gTm9uZQoKCmRlZiBfY2hlY2tfc3lzdGVtX2xpbWl0cygpOgogICAgZ2xvYmFsIF9zeXN0ZW1fbGltaXRzX2NoZWNrZWQsIF9zeXN0ZW1fbGltaXRlZAogICAgaWYgX3N5c3RlbV9saW1pdHNfY2hlY2tlZDoKICAgICAgICBpZiBfc3lzdGVtX2xpbWl0ZWQ6CiAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoX3N5c3RlbV9saW1pdGVkKQogICAgX3N5c3RlbV9saW1pdHNfY2hlY2tlZCA9IFRydWUKICAgIHRyeToKICAgICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplCiAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgX3N5c3RlbV9saW1pdGVkID0gKAogICAgICAgICAgICAiVGhpcyBQeXRob24gYnVpbGQgbGFja3MgbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplLCB1c3VhbGx5IGR1ZSAiCiAgICAgICAgICAgICJ0byBuYW1lZCBzZW1hcGhvcmVzIGJlaW5nIHVuYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0uIgogICAgICAgICkKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKF9zeXN0ZW1fbGltaXRlZCkKICAgIHRyeToKICAgICAgICBuc2Vtc19tYXggPSBvcy5zeXNjb25mKCJTQ19TRU1fTlNFTVNfTUFYIikKICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICMgc3lzY29uZiBub3QgYXZhaWxhYmxlIG9yIHNldHRpbmcgbm90IGF2YWlsYWJsZQogICAgICAgIHJldHVybgogICAgaWYgbnNlbXNfbWF4ID09IC0xOgogICAgICAgICMgaW5kZXRlcm1pbmVkIGxpbWl0LCBhc3N1bWUgdGhhdCBsaW1pdCBpcyBkZXRlcm1pbmVkCiAgICAgICAgIyBieSBhdmFpbGFibGUgbWVtb3J5IG9ubHkKICAgICAgICByZXR1cm4KICAgIGlmIG5zZW1zX21heCA+PSAyNTY6CiAgICAgICAgIyBtaW5pbXVtIG51bWJlciBvZiBzZW1hcGhvcmVzIGF2YWlsYWJsZQogICAgICAgICMgYWNjb3JkaW5nIHRvIFBPU0lYCiAgICAgICAgcmV0dXJuCiAgICBfc3lzdGVtX2xpbWl0ZWQgPSAoInN5c3RlbSBwcm92aWRlcyB0b28gZmV3IHNlbWFwaG9yZXMgKCVkIgogICAgICAgICAgICAgICAgICAgICAgICIgYXZhaWxhYmxlLCAyNTYgbmVjZXNzYXJ5KSIgJSBuc2Vtc19tYXgpCiAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKF9zeXN0ZW1fbGltaXRlZCkKCgpkZWYgX2NoYWluX2Zyb21faXRlcmFibGVfb2ZfbGlzdHMoaXRlcmFibGUpOgogICAgIiIiCiAgICBTcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZS4KICAgIEVhY2ggaXRlbSBpbiAqaXRlcmFibGUqIHNob3VsZCBiZSBhIGxpc3QuICBUaGlzIGZ1bmN0aW9uIGlzCiAgICBjYXJlZnVsIG5vdCB0byBrZWVwIHJlZmVyZW5jZXMgdG8geWllbGRlZCBvYmplY3RzLgogICAgIiIiCiAgICBmb3IgZWxlbWVudCBpbiBpdGVyYWJsZToKICAgICAgICBlbGVtZW50LnJldmVyc2UoKQogICAgICAgIHdoaWxlIGVsZW1lbnQ6CiAgICAgICAgICAgIHlpZWxkIGVsZW1lbnQucG9wKCkKCgpjbGFzcyBCcm9rZW5Qcm9jZXNzUG9vbChfYmFzZS5Ccm9rZW5FeGVjdXRvcik6CiAgICAiIiIKICAgIFJhaXNlZCB3aGVuIGEgcHJvY2VzcyBpbiBhIFByb2Nlc3NQb29sRXhlY3V0b3IgdGVybWluYXRlZCBhYnJ1cHRseQogICAgd2hpbGUgYSBmdXR1cmUgd2FzIGluIHRoZSBydW5uaW5nIHN0YXRlLgogICAgIiIiCgoKY2xhc3MgUHJvY2Vzc1Bvb2xFeGVjdXRvcihfYmFzZS5FeGVjdXRvcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSwgbXBfY29udGV4dD1Ob25lLAogICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPU5vbmUsIGluaXRhcmdzPSgpLCAqLCBtYXhfdGFza3NfcGVyX2NoaWxkPU5vbmUpOgogICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFByb2Nlc3NQb29sRXhlY3V0b3IgaW5zdGFuY2UuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIG1heF93b3JrZXJzOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcHJvY2Vzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGdpdmVuIGNhbGxzLiBJZiBOb25lIG9yIG5vdCBnaXZlbiB0aGVuIGFzIG1hbnkKICAgICAgICAgICAgICAgIHdvcmtlciBwcm9jZXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFzIHRoZSBtYWNoaW5lIGhhcyBwcm9jZXNzb3JzLgogICAgICAgICAgICBtcF9jb250ZXh0OiBBIG11bHRpcHJvY2Vzc2luZyBjb250ZXh0IHRvIGxhdW5jaCB0aGUgd29ya2Vycy4gVGhpcwogICAgICAgICAgICAgICAgb2JqZWN0IHNob3VsZCBwcm92aWRlIFNpbXBsZVF1ZXVlLCBRdWV1ZSBhbmQgUHJvY2Vzcy4gVXNlZnVsCiAgICAgICAgICAgICAgICB0byBhbGxvdyBzcGVjaWZpYyBtdWx0aXByb2Nlc3Npbmcgc3RhcnQgbWV0aG9kcy4KICAgICAgICAgICAgaW5pdGlhbGl6ZXI6IEEgY2FsbGFibGUgdXNlZCB0byBpbml0aWFsaXplIHdvcmtlciBwcm9jZXNzZXMuCiAgICAgICAgICAgIGluaXRhcmdzOiBBIHR1cGxlIG9mIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBpbml0aWFsaXplci4KICAgICAgICAgICAgbWF4X3Rhc2tzX3Blcl9jaGlsZDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzIGEgd29ya2VyIHByb2Nlc3MKICAgICAgICAgICAgICAgIGNhbiBjb21wbGV0ZSBiZWZvcmUgaXQgd2lsbCBleGl0IGFuZCBiZSByZXBsYWNlZCB3aXRoIGEgZnJlc2gKICAgICAgICAgICAgICAgIHdvcmtlciBwcm9jZXNzLiBUaGUgZGVmYXVsdCBvZiBOb25lIG1lYW5zIHdvcmtlciBwcm9jZXNzIHdpbGwKICAgICAgICAgICAgICAgIGxpdmUgYXMgbG9uZyBhcyB0aGUgZXhlY3V0b3IuIFJlcXVpcmVzIGEgbm9uLSdmb3JrJyBtcF9jb250ZXh0CiAgICAgICAgICAgICAgICBzdGFydCBtZXRob2QuIFdoZW4gZ2l2ZW4sIHdlIGRlZmF1bHQgdG8gdXNpbmcgJ3NwYXduJyBpZiBubwogICAgICAgICAgICAgICAgbXBfY29udGV4dCBpcyBzdXBwbGllZC4KICAgICAgICAiIiIKICAgICAgICBfY2hlY2tfc3lzdGVtX2xpbWl0cygpCgogICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gb3MuY3B1X2NvdW50KCkgb3IgMQogICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gbWluKF9NQVhfV0lORE9XU19XT1JLRVJTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWF4X3dvcmtlcnMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbWF4X3dvcmtlcnMgPD0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1heF93b3JrZXJzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKQogICAgICAgICAgICBlbGlmIChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBhbmQKICAgICAgICAgICAgICAgIG1heF93b3JrZXJzID4gX01BWF9XSU5ET1dTX1dPUktFUlMpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICBmIm1heF93b3JrZXJzIG11c3QgYmUgPD0ge19NQVhfV0lORE9XU19XT1JLRVJTfSIpCgogICAgICAgICAgICBzZWxmLl9tYXhfd29ya2VycyA9IG1heF93b3JrZXJzCgogICAgICAgIGlmIG1wX2NvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgaWYgbWF4X3Rhc2tzX3Blcl9jaGlsZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIG1wX2NvbnRleHQgPSBtcC5nZXRfY29udGV4dCgic3Bhd24iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbXBfY29udGV4dCA9IG1wLmdldF9jb250ZXh0KCkKICAgICAgICBzZWxmLl9tcF9jb250ZXh0ID0gbXBfY29udGV4dAoKICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9pc3N1ZXMvOTA2MjIKICAgICAgICBzZWxmLl9zYWZlX3RvX2R5bmFtaWNhbGx5X3NwYXduX2NoaWxkcmVuID0gKAogICAgICAgICAgICAgICAgc2VsZi5fbXBfY29udGV4dC5nZXRfc3RhcnRfbWV0aG9kKGFsbG93X25vbmU9RmFsc2UpICE9ICJmb3JrIikKCiAgICAgICAgaWYgaW5pdGlhbGl6ZXIgaXMgbm90IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShpbml0aWFsaXplcik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW5pdGlhbGl6ZXIgbXVzdCBiZSBhIGNhbGxhYmxlIikKICAgICAgICBzZWxmLl9pbml0aWFsaXplciA9IGluaXRpYWxpemVyCiAgICAgICAgc2VsZi5faW5pdGFyZ3MgPSBpbml0YXJncwoKICAgICAgICBpZiBtYXhfdGFza3NfcGVyX2NoaWxkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtYXhfdGFza3NfcGVyX2NoaWxkLCBpbnQpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtYXhfdGFza3NfcGVyX2NoaWxkIG11c3QgYmUgYW4gaW50ZWdlciIpCiAgICAgICAgICAgIGVsaWYgbWF4X3Rhc2tzX3Blcl9jaGlsZCA8PSAwOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWF4X3Rhc2tzX3Blcl9jaGlsZCBtdXN0IGJlID49IDEiKQogICAgICAgICAgICBpZiBzZWxmLl9tcF9jb250ZXh0LmdldF9zdGFydF9tZXRob2QoYWxsb3dfbm9uZT1GYWxzZSkgPT0gImZvcmsiOgogICAgICAgICAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vaXNzdWVzLzkwNjIyCiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtYXhfdGFza3NfcGVyX2NoaWxkIGlzIGluY29tcGF0aWJsZSB3aXRoIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRoZSAnZm9yaycgbXVsdGlwcm9jZXNzaW5nIHN0YXJ0IG1ldGhvZDsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcGx5IGEgZGlmZmVyZW50IG1wX2NvbnRleHQuIikKICAgICAgICBzZWxmLl9tYXhfdGFza3NfcGVyX2NoaWxkID0gbWF4X3Rhc2tzX3Blcl9jaGlsZAoKICAgICAgICAjIE1hbmFnZW1lbnQgdGhyZWFkCiAgICAgICAgc2VsZi5fZXhlY3V0b3JfbWFuYWdlcl90aHJlYWQgPSBOb25lCgogICAgICAgICMgTWFwIG9mIHBpZHMgdG8gcHJvY2Vzc2VzCiAgICAgICAgc2VsZi5fcHJvY2Vzc2VzID0ge30KCiAgICAgICAgIyBTaHV0ZG93biBpcyBhIHR3by1zdGVwIHByb2Nlc3MuCiAgICAgICAgc2VsZi5fc2h1dGRvd25fdGhyZWFkID0gRmFsc2UKICAgICAgICBzZWxmLl9zaHV0ZG93bl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogICAgICAgIHNlbGYuX2lkbGVfd29ya2VyX3NlbWFwaG9yZSA9IHRocmVhZGluZy5TZW1hcGhvcmUoMCkKICAgICAgICBzZWxmLl9icm9rZW4gPSBGYWxzZQogICAgICAgIHNlbGYuX3F1ZXVlX2NvdW50ID0gMAogICAgICAgIHNlbGYuX3BlbmRpbmdfd29ya19pdGVtcyA9IHt9CiAgICAgICAgc2VsZi5fY2FuY2VsX3BlbmRpbmdfZnV0dXJlcyA9IEZhbHNlCgogICAgICAgICMgX1RocmVhZFdha2V1cCBpcyBhIGNvbW11bmljYXRpb24gY2hhbm5lbCB1c2VkIHRvIGludGVycnVwdCB0aGUgd2FpdAogICAgICAgICMgb2YgdGhlIG1haW4gbG9vcCBvZiBleGVjdXRvcl9tYW5hZ2VyX3RocmVhZCBmcm9tIGFub3RoZXIgdGhyZWFkIChlLmcuCiAgICAgICAgIyB3aGVuIGNhbGxpbmcgZXhlY3V0b3Iuc3VibWl0IG9yIGV4ZWN1dG9yLnNodXRkb3duKS4gV2UgZG8gbm90IHVzZSB0aGUKICAgICAgICAjIF9yZXN1bHRfcXVldWUgdG8gc2VuZCB3YWtldXAgc2lnbmFscyB0byB0aGUgZXhlY3V0b3JfbWFuYWdlcl90aHJlYWQKICAgICAgICAjIGFzIGl0IGNvdWxkIHJlc3VsdCBpbiBhIGRlYWRsb2NrIGlmIGEgd29ya2VyIHByb2Nlc3MgZGllcyB3aXRoIHRoZQogICAgICAgICMgX3Jlc3VsdF9xdWV1ZSB3cml0ZSBsb2NrIHN0aWxsIGFjcXVpcmVkLgogICAgICAgICMKICAgICAgICAjIF9zaHV0ZG93bl9sb2NrIG11c3QgYmUgbG9ja2VkIHRvIGFjY2VzcyBfVGhyZWFkV2FrZXVwLgogICAgICAgIHNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkX3dha2V1cCA9IF9UaHJlYWRXYWtldXAoKQoKICAgICAgICAjIENyZWF0ZSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzIGZvciB0aGUgZXhlY3V0b3IKICAgICAgICAjIE1ha2UgdGhlIGNhbGwgcXVldWUgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgdG8KICAgICAgICAjIHByZXZlbnQgdGhlIHdvcmtlciBwcm9jZXNzZXMgZnJvbSBpZGxpbmcuIEJ1dCBkb24ndCBtYWtlIGl0IHRvbyBiaWcKICAgICAgICAjIGJlY2F1c2UgZnV0dXJlcyBpbiB0aGUgY2FsbCBxdWV1ZSBjYW5ub3QgYmUgY2FuY2VsbGVkLgogICAgICAgIHF1ZXVlX3NpemUgPSBzZWxmLl9tYXhfd29ya2VycyArIEVYVFJBX1FVRVVFRF9DQUxMUwogICAgICAgIHNlbGYuX2NhbGxfcXVldWUgPSBfU2FmZVF1ZXVlKAogICAgICAgICAgICBtYXhfc2l6ZT1xdWV1ZV9zaXplLCBjdHg9c2VsZi5fbXBfY29udGV4dCwKICAgICAgICAgICAgcGVuZGluZ193b3JrX2l0ZW1zPXNlbGYuX3BlbmRpbmdfd29ya19pdGVtcywKICAgICAgICAgICAgc2h1dGRvd25fbG9jaz1zZWxmLl9zaHV0ZG93bl9sb2NrLAogICAgICAgICAgICB0aHJlYWRfd2FrZXVwPXNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkX3dha2V1cCkKICAgICAgICAjIEtpbGxlZCB3b3JrZXIgcHJvY2Vzc2VzIGNhbiBwcm9kdWNlIHNwdXJpb3VzICJicm9rZW4gcGlwZSIKICAgICAgICAjIHRyYWNlYmFja3MgaW4gdGhlIHF1ZXVlJ3Mgb3duIHdvcmtlciB0aHJlYWQuIEJ1dCB3ZSBkZXRlY3Qga2lsbGVkCiAgICAgICAgIyBwcm9jZXNzZXMgYW55d2F5LCBzbyBzaWxlbmNlIHRoZSB0cmFjZWJhY2tzLgogICAgICAgIHNlbGYuX2NhbGxfcXVldWUuX2lnbm9yZV9lcGlwZSA9IFRydWUKICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBtcF9jb250ZXh0LlNpbXBsZVF1ZXVlKCkKICAgICAgICBzZWxmLl93b3JrX2lkcyA9IHF1ZXVlLlF1ZXVlKCkKCiAgICBkZWYgX3N0YXJ0X2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkIGlzIE5vbmU6CiAgICAgICAgICAgICMgU3RhcnQgdGhlIHByb2Nlc3NlcyBzbyB0aGF0IHRoZWlyIHNlbnRpbmVscyBhcmUga25vd24uCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9zYWZlX3RvX2R5bmFtaWNhbGx5X3NwYXduX2NoaWxkcmVuOiAgIyBpZSwgdXNpbmcgZm9yay4KICAgICAgICAgICAgICAgIHNlbGYuX2xhdW5jaF9wcm9jZXNzZXMoKQogICAgICAgICAgICBzZWxmLl9leGVjdXRvcl9tYW5hZ2VyX3RocmVhZCA9IF9FeGVjdXRvck1hbmFnZXJUaHJlYWQoc2VsZikKICAgICAgICAgICAgc2VsZi5fZXhlY3V0b3JfbWFuYWdlcl90aHJlYWQuc3RhcnQoKQogICAgICAgICAgICBfdGhyZWFkc193YWtldXBzW3NlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkXSA9IFwKICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkX3dha2V1cAoKICAgIGRlZiBfYWRqdXN0X3Byb2Nlc3NfY291bnQoc2VsZik6CiAgICAgICAgIyBpZiB0aGVyZSdzIGFuIGlkbGUgcHJvY2Vzcywgd2UgZG9uJ3QgbmVlZCB0byBzcGF3biBhIG5ldyBvbmUuCiAgICAgICAgaWYgc2VsZi5faWRsZV93b3JrZXJfc2VtYXBob3JlLmFjcXVpcmUoYmxvY2tpbmc9RmFsc2UpOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgcHJvY2Vzc19jb3VudCA9IGxlbihzZWxmLl9wcm9jZXNzZXMpCiAgICAgICAgaWYgcHJvY2Vzc19jb3VudCA8IHNlbGYuX21heF93b3JrZXJzOgogICAgICAgICAgICAjIEFzc2VydGlvbiBkaXNhYmxlZCBhcyB0aGlzIGNvZGVwYXRoIGlzIGFsc28gdXNlZCB0byByZXBsYWNlIGEKICAgICAgICAgICAgIyB3b3JrZXIgdGhhdCB1bmV4cGVjdGVkbHkgZGllcywgZXZlbiB3aGVuIHVzaW5nIHRoZSAnZm9yaycgc3RhcnQKICAgICAgICAgICAgIyBtZXRob2QuIFRoYXQgbWVhbnMgdGhlcmUgaXMgc3RpbGwgYSBwb3RlbnRpYWwgZGVhZGxvY2sgYnVnLiBJZiBhCiAgICAgICAgICAgICMgJ2ZvcmsnIG1wX2NvbnRleHQgd29ya2VyIGRpZXMsIHdlJ2xsIGJlIGZvcmtpbmcgYSBuZXcgb25lIHdoZW4KICAgICAgICAgICAgIyB3ZSBrbm93IGEgdGhyZWFkIGlzIHJ1bm5pbmcgKHNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkKS4KICAgICAgICAgICAgI2Fzc2VydCBzZWxmLl9zYWZlX3RvX2R5bmFtaWNhbGx5X3NwYXduX2NoaWxkcmVuIG9yIG5vdCBzZWxmLl9leGVjdXRvcl9tYW5hZ2VyX3RocmVhZCwgJ2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9pc3N1ZXMvOTA2MjInCiAgICAgICAgICAgIHNlbGYuX3NwYXduX3Byb2Nlc3MoKQoKICAgIGRlZiBfbGF1bmNoX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9pc3N1ZXMvOTA2MjIKICAgICAgICBhc3NlcnQgbm90IHNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkLCAoCiAgICAgICAgICAgICAgICAnUHJvY2Vzc2VzIGNhbm5vdCBiZSBmb3JrKCllZCBhZnRlciB0aGUgdGhyZWFkIGhhcyBzdGFydGVkLCAnCiAgICAgICAgICAgICAgICAnZGVhZGxvY2sgaW4gdGhlIGNoaWxkIHByb2Nlc3NlcyBjb3VsZCByZXN1bHQuJykKICAgICAgICBmb3IgXyBpbiByYW5nZShsZW4oc2VsZi5fcHJvY2Vzc2VzKSwgc2VsZi5fbWF4X3dvcmtlcnMpOgogICAgICAgICAgICBzZWxmLl9zcGF3bl9wcm9jZXNzKCkKCiAgICBkZWYgX3NwYXduX3Byb2Nlc3Moc2VsZik6CiAgICAgICAgcCA9IHNlbGYuX21wX2NvbnRleHQuUHJvY2VzcygKICAgICAgICAgICAgdGFyZ2V0PV9wcm9jZXNzX3dvcmtlciwKICAgICAgICAgICAgYXJncz0oc2VsZi5fY2FsbF9xdWV1ZSwKICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlLAogICAgICAgICAgICAgICAgICBzZWxmLl9pbml0aWFsaXplciwKICAgICAgICAgICAgICAgICAgc2VsZi5faW5pdGFyZ3MsCiAgICAgICAgICAgICAgICAgIHNlbGYuX21heF90YXNrc19wZXJfY2hpbGQpKQogICAgICAgIHAuc3RhcnQoKQogICAgICAgIHNlbGYuX3Byb2Nlc3Nlc1twLnBpZF0gPSBwCgogICAgZGVmIHN1Ym1pdChzZWxmLCBmbiwgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CiAgICAgICAgICAgIGlmIHNlbGYuX2Jyb2tlbjoKICAgICAgICAgICAgICAgIHJhaXNlIEJyb2tlblByb2Nlc3NQb29sKHNlbGYuX2Jyb2tlbikKICAgICAgICAgICAgaWYgc2VsZi5fc2h1dGRvd25fdGhyZWFkOgogICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdjYW5ub3Qgc2NoZWR1bGUgbmV3IGZ1dHVyZXMgYWZ0ZXIgc2h1dGRvd24nKQogICAgICAgICAgICBpZiBfZ2xvYmFsX3NodXRkb3duOgogICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdjYW5ub3Qgc2NoZWR1bGUgbmV3IGZ1dHVyZXMgYWZ0ZXIgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlciBzaHV0ZG93bicpCgogICAgICAgICAgICBmID0gX2Jhc2UuRnV0dXJlKCkKICAgICAgICAgICAgdyA9IF9Xb3JrSXRlbShmLCBmbiwgYXJncywga3dhcmdzKQoKICAgICAgICAgICAgc2VsZi5fcGVuZGluZ193b3JrX2l0ZW1zW3NlbGYuX3F1ZXVlX2NvdW50XSA9IHcKICAgICAgICAgICAgc2VsZi5fd29ya19pZHMucHV0KHNlbGYuX3F1ZXVlX2NvdW50KQogICAgICAgICAgICBzZWxmLl9xdWV1ZV9jb3VudCArPSAxCiAgICAgICAgICAgICMgV2FrZSB1cCBxdWV1ZSBtYW5hZ2VtZW50IHRocmVhZAogICAgICAgICAgICBzZWxmLl9leGVjdXRvcl9tYW5hZ2VyX3RocmVhZF93YWtldXAud2FrZXVwKCkKCiAgICAgICAgICAgIGlmIHNlbGYuX3NhZmVfdG9fZHluYW1pY2FsbHlfc3Bhd25fY2hpbGRyZW46CiAgICAgICAgICAgICAgICBzZWxmLl9hZGp1c3RfcHJvY2Vzc19jb3VudCgpCiAgICAgICAgICAgIHNlbGYuX3N0YXJ0X2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkKCkKICAgICAgICAgICAgcmV0dXJuIGYKICAgIHN1Ym1pdC5fX2RvY19fID0gX2Jhc2UuRXhlY3V0b3Iuc3VibWl0Ll9fZG9jX18KCiAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUsIGNodW5rc2l6ZT0xKToKICAgICAgICAiIiJSZXR1cm5zIGFuIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG8gbWFwKGZuLCBpdGVyKS4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgZm46IEEgY2FsbGFibGUgdGhhdCB3aWxsIHRha2UgYXMgbWFueSBhcmd1bWVudHMgYXMgdGhlcmUgYXJlCiAgICAgICAgICAgICAgICBwYXNzZWQgaXRlcmFibGVzLgogICAgICAgICAgICB0aW1lb3V0OiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0LiBJZiBOb25lLCB0aGVuIHRoZXJlCiAgICAgICAgICAgICAgICBpcyBubyBsaW1pdCBvbiB0aGUgd2FpdCB0aW1lLgogICAgICAgICAgICBjaHVua3NpemU6IElmIGdyZWF0ZXIgdGhhbiBvbmUsIHRoZSBpdGVyYWJsZXMgd2lsbCBiZSBjaG9wcGVkIGludG8KICAgICAgICAgICAgICAgIGNodW5rcyBvZiBzaXplIGNodW5rc2l6ZSBhbmQgc3VibWl0dGVkIHRvIHRoZSBwcm9jZXNzIHBvb2wuCiAgICAgICAgICAgICAgICBJZiBzZXQgdG8gb25lLCB0aGUgaXRlbXMgaW4gdGhlIGxpc3Qgd2lsbCBiZSBzZW50IG9uZSBhdCBhIHRpbWUuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEFuIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG86IG1hcChmdW5jLCAqaXRlcmFibGVzKSBidXQgdGhlIGNhbGxzIG1heQogICAgICAgICAgICBiZSBldmFsdWF0ZWQgb3V0LW9mLW9yZGVyLgoKICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgIFRpbWVvdXRFcnJvcjogSWYgdGhlIGVudGlyZSByZXN1bHQgaXRlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAogICAgICAgICAgICAgICAgYmVmb3JlIHRoZSBnaXZlbiB0aW1lb3V0LgogICAgICAgICAgICBFeGNlcHRpb246IElmIGZuKCphcmdzKSByYWlzZXMgZm9yIGFueSB2YWx1ZXMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgY2h1bmtzaXplIDwgMToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2h1bmtzaXplIG11c3QgYmUgPj0gMS4iKQoKICAgICAgICByZXN1bHRzID0gc3VwZXIoKS5tYXAocGFydGlhbChfcHJvY2Vzc19jaHVuaywgZm4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2V0X2NodW5rcygqaXRlcmFibGVzLCBjaHVua3NpemU9Y2h1bmtzaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0KQogICAgICAgIHJldHVybiBfY2hhaW5fZnJvbV9pdGVyYWJsZV9vZl9saXN0cyhyZXN1bHRzKQoKICAgIGRlZiBzaHV0ZG93bihzZWxmLCB3YWl0PVRydWUsICosIGNhbmNlbF9mdXR1cmVzPUZhbHNlKToKICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CiAgICAgICAgICAgIHNlbGYuX2NhbmNlbF9wZW5kaW5nX2Z1dHVyZXMgPSBjYW5jZWxfZnV0dXJlcwogICAgICAgICAgICBzZWxmLl9zaHV0ZG93bl90aHJlYWQgPSBUcnVlCiAgICAgICAgICAgIGlmIHNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkX3dha2V1cCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICMgV2FrZSB1cCBxdWV1ZSBtYW5hZ2VtZW50IHRocmVhZAogICAgICAgICAgICAgICAgc2VsZi5fZXhlY3V0b3JfbWFuYWdlcl90aHJlYWRfd2FrZXVwLndha2V1cCgpCgogICAgICAgIGlmIHNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkIGlzIG5vdCBOb25lIGFuZCB3YWl0OgogICAgICAgICAgICBzZWxmLl9leGVjdXRvcl9tYW5hZ2VyX3RocmVhZC5qb2luKCkKICAgICAgICAjIFRvIHJlZHVjZSB0aGUgcmlzayBvZiBvcGVuaW5nIHRvbyBtYW55IGZpbGVzLCByZW1vdmUgcmVmZXJlbmNlcyB0bwogICAgICAgICMgb2JqZWN0cyB0aGF0IHVzZSBmaWxlIGRlc2NyaXB0b3JzLgogICAgICAgIHNlbGYuX2V4ZWN1dG9yX21hbmFnZXJfdGhyZWFkID0gTm9uZQogICAgICAgIHNlbGYuX2NhbGxfcXVldWUgPSBOb25lCiAgICAgICAgaWYgc2VsZi5fcmVzdWx0X3F1ZXVlIGlzIG5vdCBOb25lIGFuZCB3YWl0OgogICAgICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUuY2xvc2UoKQogICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZSA9IE5vbmUKICAgICAgICBzZWxmLl9wcm9jZXNzZXMgPSBOb25lCiAgICAgICAgc2VsZi5fZXhlY3V0b3JfbWFuYWdlcl90aHJlYWRfd2FrZXVwID0gTm9uZQoKICAgIHNodXRkb3duLl9fZG9jX18gPSBfYmFzZS5FeGVjdXRvci5zaHV0ZG93bi5fX2RvY19fClBLAwQUAAAAAAACIKNWUsZH+kMiAABDIgAAHAAAAGNvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkjIENvcHlyaWdodCAyMDA5IEJyaWFuIFF1aW5sYW4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgoKIiIiSW1wbGVtZW50cyBUaHJlYWRQb29sRXhlY3V0b3IuIiIiCgpfX2F1dGhvcl9fID0gJ0JyaWFuIFF1aW5sYW4gKGJyaWFuQHN3ZWV0YXBwLmNvbSknCgpmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgX2Jhc2UKaW1wb3J0IGl0ZXJ0b29scwppbXBvcnQgcXVldWUKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgdHlwZXMKaW1wb3J0IHdlYWtyZWYKaW1wb3J0IG9zCgoKX3RocmVhZHNfcXVldWVzID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCl9zaHV0ZG93biA9IEZhbHNlCiMgTG9jayB0aGF0IGVuc3VyZXMgdGhhdCBuZXcgd29ya2VycyBhcmUgbm90IGNyZWF0ZWQgd2hpbGUgdGhlIGludGVycHJldGVyIGlzCiMgc2h1dHRpbmcgZG93bi4gTXVzdCBiZSBoZWxkIHdoaWxlIG11dGF0aW5nIF90aHJlYWRzX3F1ZXVlcyBhbmQgX3NodXRkb3duLgpfZ2xvYmFsX3NodXRkb3duX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCgpkZWYgX3B5dGhvbl9leGl0KCk6CiAgICBnbG9iYWwgX3NodXRkb3duCiAgICB3aXRoIF9nbG9iYWxfc2h1dGRvd25fbG9jazoKICAgICAgICBfc2h1dGRvd24gPSBUcnVlCiAgICBpdGVtcyA9IGxpc3QoX3RocmVhZHNfcXVldWVzLml0ZW1zKCkpCiAgICBmb3IgdCwgcSBpbiBpdGVtczoKICAgICAgICBxLnB1dChOb25lKQogICAgZm9yIHQsIHEgaW4gaXRlbXM6CiAgICAgICAgdC5qb2luKCkKCiMgUmVnaXN0ZXIgZm9yIGBfcHl0aG9uX2V4aXQoKWAgdG8gYmUgY2FsbGVkIGp1c3QgYmVmb3JlIGpvaW5pbmcgYWxsCiMgbm9uLWRhZW1vbiB0aHJlYWRzLiBUaGlzIGlzIHVzZWQgaW5zdGVhZCBvZiBgYXRleGl0LnJlZ2lzdGVyKClgIGZvcgojIGNvbXBhdGliaWxpdHkgd2l0aCBzdWJpbnRlcnByZXRlcnMsIHdoaWNoIG5vIGxvbmdlciBzdXBwb3J0IGRhZW1vbiB0aHJlYWRzLgojIFNlZSBicG8tMzk4MTIgZm9yIGNvbnRleHQuCnRocmVhZGluZy5fcmVnaXN0ZXJfYXRleGl0KF9weXRob25fZXhpdCkKCiMgQXQgZm9yaywgcmVpbml0aWFsaXplIHRoZSBgX2dsb2JhbF9zaHV0ZG93bl9sb2NrYCBsb2NrIGluIHRoZSBjaGlsZCBwcm9jZXNzCmlmIGhhc2F0dHIob3MsICdyZWdpc3Rlcl9hdF9mb3JrJyk6CiAgICBvcy5yZWdpc3Rlcl9hdF9mb3JrKGJlZm9yZT1fZ2xvYmFsX3NodXRkb3duX2xvY2suYWNxdWlyZSwKICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJfaW5fY2hpbGQ9X2dsb2JhbF9zaHV0ZG93bl9sb2NrLl9hdF9mb3JrX3JlaW5pdCwKICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJfaW5fcGFyZW50PV9nbG9iYWxfc2h1dGRvd25fbG9jay5yZWxlYXNlKQoKCmNsYXNzIF9Xb3JrSXRlbShvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1dHVyZSwgZm4sIGFyZ3MsIGt3YXJncyk6CiAgICAgICAgc2VsZi5mdXR1cmUgPSBmdXR1cmUKICAgICAgICBzZWxmLmZuID0gZm4KICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgc2VsZi5rd2FyZ3MgPSBrd2FyZ3MKCiAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLmZ1dHVyZS5zZXRfcnVubmluZ19vcl9ub3RpZnlfY2FuY2VsKCk6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuZm4oKnNlbGYuYXJncywgKipzZWxmLmt3YXJncykKICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgIHNlbGYuZnV0dXJlLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICAgICAjIEJyZWFrIGEgcmVmZXJlbmNlIGN5Y2xlIHdpdGggdGhlIGV4Y2VwdGlvbiAnZXhjJwogICAgICAgICAgICBzZWxmID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuZnV0dXJlLnNldF9yZXN1bHQocmVzdWx0KQoKICAgIF9fY2xhc3NfZ2V0aXRlbV9fID0gY2xhc3NtZXRob2QodHlwZXMuR2VuZXJpY0FsaWFzKQoKCmRlZiBfd29ya2VyKGV4ZWN1dG9yX3JlZmVyZW5jZSwgd29ya19xdWV1ZSwgaW5pdGlhbGl6ZXIsIGluaXRhcmdzKToKICAgIGlmIGluaXRpYWxpemVyIGlzIG5vdCBOb25lOgogICAgICAgIHRyeToKICAgICAgICAgICAgaW5pdGlhbGl6ZXIoKmluaXRhcmdzKQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICBfYmFzZS5MT0dHRVIuY3JpdGljYWwoJ0V4Y2VwdGlvbiBpbiBpbml0aWFsaXplcjonLCBleGNfaW5mbz1UcnVlKQogICAgICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX3JlZmVyZW5jZSgpCiAgICAgICAgICAgIGlmIGV4ZWN1dG9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgZXhlY3V0b3IuX2luaXRpYWxpemVyX2ZhaWxlZCgpCiAgICAgICAgICAgIHJldHVybgogICAgdHJ5OgogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHdvcmtfaXRlbSA9IHdvcmtfcXVldWUuZ2V0KGJsb2NrPVRydWUpCiAgICAgICAgICAgIGlmIHdvcmtfaXRlbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5ydW4oKQogICAgICAgICAgICAgICAgIyBEZWxldGUgcmVmZXJlbmNlcyB0byBvYmplY3QuIFNlZSBpc3N1ZTE2Mjg0CiAgICAgICAgICAgICAgICBkZWwgd29ya19pdGVtCgogICAgICAgICAgICAgICAgIyBhdHRlbXB0IHRvIGluY3JlbWVudCBpZGxlIGNvdW50CiAgICAgICAgICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX3JlZmVyZW5jZSgpCiAgICAgICAgICAgICAgICBpZiBleGVjdXRvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBleGVjdXRvci5faWRsZV9zZW1hcGhvcmUucmVsZWFzZSgpCiAgICAgICAgICAgICAgICBkZWwgZXhlY3V0b3IKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX3JlZmVyZW5jZSgpCiAgICAgICAgICAgICMgRXhpdCBpZjoKICAgICAgICAgICAgIyAgIC0gVGhlIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd24gT1IKICAgICAgICAgICAgIyAgIC0gVGhlIGV4ZWN1dG9yIHRoYXQgb3ducyB0aGUgd29ya2VyIGhhcyBiZWVuIGNvbGxlY3RlZCBPUgogICAgICAgICAgICAjICAgLSBUaGUgZXhlY3V0b3IgdGhhdCBvd25zIHRoZSB3b3JrZXIgaGFzIGJlZW4gc2h1dGRvd24uCiAgICAgICAgICAgIGlmIF9zaHV0ZG93biBvciBleGVjdXRvciBpcyBOb25lIG9yIGV4ZWN1dG9yLl9zaHV0ZG93bjoKICAgICAgICAgICAgICAgICMgRmxhZyB0aGUgZXhlY3V0b3IgYXMgc2h1dHRpbmcgZG93biBhcyBlYXJseSBhcyBwb3NzaWJsZSBpZiBpdAogICAgICAgICAgICAgICAgIyBpcyBub3QgZ2MtZWQgeWV0LgogICAgICAgICAgICAgICAgaWYgZXhlY3V0b3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgZXhlY3V0b3IuX3NodXRkb3duID0gVHJ1ZQogICAgICAgICAgICAgICAgIyBOb3RpY2Ugb3RoZXIgd29ya2VycwogICAgICAgICAgICAgICAgd29ya19xdWV1ZS5wdXQoTm9uZSkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBkZWwgZXhlY3V0b3IKICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgIF9iYXNlLkxPR0dFUi5jcml0aWNhbCgnRXhjZXB0aW9uIGluIHdvcmtlcicsIGV4Y19pbmZvPVRydWUpCgoKY2xhc3MgQnJva2VuVGhyZWFkUG9vbChfYmFzZS5Ccm9rZW5FeGVjdXRvcik6CiAgICAiIiIKICAgIFJhaXNlZCB3aGVuIGEgd29ya2VyIHRocmVhZCBpbiBhIFRocmVhZFBvb2xFeGVjdXRvciBmYWlsZWQgaW5pdGlhbGl6aW5nLgogICAgIiIiCgoKY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKCiAgICAjIFVzZWQgdG8gYXNzaWduIHVuaXF1ZSB0aHJlYWQgbmFtZXMgd2hlbiB0aHJlYWRfbmFtZV9wcmVmaXggaXMgbm90IHN1cHBsaWVkLgogICAgX2NvdW50ZXIgPSBpdGVydG9vbHMuY291bnQoKS5fX25leHRfXwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfd29ya2Vycz1Ob25lLCB0aHJlYWRfbmFtZV9wcmVmaXg9JycsCiAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCkpOgogICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFRocmVhZFBvb2xFeGVjdXRvciBpbnN0YW5jZS4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgbWF4X3dvcmtlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGdpdmVuIGNhbGxzLgogICAgICAgICAgICB0aHJlYWRfbmFtZV9wcmVmaXg6IEFuIG9wdGlvbmFsIG5hbWUgcHJlZml4IHRvIGdpdmUgb3VyIHRocmVhZHMuCiAgICAgICAgICAgIGluaXRpYWxpemVyOiBBIGNhbGxhYmxlIHVzZWQgdG8gaW5pdGlhbGl6ZSB3b3JrZXIgdGhyZWFkcy4KICAgICAgICAgICAgaW5pdGFyZ3M6IEEgdHVwbGUgb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGluaXRpYWxpemVyLgogICAgICAgICIiIgogICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICMgVGhyZWFkUG9vbEV4ZWN1dG9yIGlzIG9mdGVuIHVzZWQgdG86CiAgICAgICAgICAgICMgKiBDUFUgYm91bmQgdGFzayB3aGljaCByZWxlYXNlcyBHSUwKICAgICAgICAgICAgIyAqIEkvTyBib3VuZCB0YXNrICh3aGljaCByZWxlYXNlcyBHSUwsIG9mIGNvdXJzZSkKICAgICAgICAgICAgIwogICAgICAgICAgICAjIFdlIHVzZSBjcHVfY291bnQgKyA0IGZvciBib3RoIHR5cGVzIG9mIHRhc2tzLgogICAgICAgICAgICAjIEJ1dCB3ZSBsaW1pdCBpdCB0byAzMiB0byBhdm9pZCBjb25zdW1pbmcgc3VycHJpc2luZ2x5IGxhcmdlIHJlc291cmNlCiAgICAgICAgICAgICMgb24gbWFueSBjb3JlIG1hY2hpbmUuCiAgICAgICAgICAgIG1heF93b3JrZXJzID0gbWluKDMyLCAob3MuY3B1X2NvdW50KCkgb3IgMSkgKyA0KQogICAgICAgIGlmIG1heF93b3JrZXJzIDw9IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1heF93b3JrZXJzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKQoKICAgICAgICBpZiBpbml0aWFsaXplciBpcyBub3QgTm9uZSBhbmQgbm90IGNhbGxhYmxlKGluaXRpYWxpemVyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbml0aWFsaXplciBtdXN0IGJlIGEgY2FsbGFibGUiKQoKICAgICAgICBzZWxmLl9tYXhfd29ya2VycyA9IG1heF93b3JrZXJzCiAgICAgICAgc2VsZi5fd29ya19xdWV1ZSA9IHF1ZXVlLlNpbXBsZVF1ZXVlKCkKICAgICAgICBzZWxmLl9pZGxlX3NlbWFwaG9yZSA9IHRocmVhZGluZy5TZW1hcGhvcmUoMCkKICAgICAgICBzZWxmLl90aHJlYWRzID0gc2V0KCkKICAgICAgICBzZWxmLl9icm9rZW4gPSBGYWxzZQogICAgICAgIHNlbGYuX3NodXRkb3duID0gRmFsc2UKICAgICAgICBzZWxmLl9zaHV0ZG93bl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogICAgICAgIHNlbGYuX3RocmVhZF9uYW1lX3ByZWZpeCA9ICh0aHJlYWRfbmFtZV9wcmVmaXggb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJUaHJlYWRQb29sRXhlY3V0b3ItJWQiICUgc2VsZi5fY291bnRlcigpKSkKICAgICAgICBzZWxmLl9pbml0aWFsaXplciA9IGluaXRpYWxpemVyCiAgICAgICAgc2VsZi5faW5pdGFyZ3MgPSBpbml0YXJncwoKICAgIGRlZiBzdWJtaXQoc2VsZiwgZm4sIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrLCBfZ2xvYmFsX3NodXRkb3duX2xvY2s6CiAgICAgICAgICAgIGlmIHNlbGYuX2Jyb2tlbjoKICAgICAgICAgICAgICAgIHJhaXNlIEJyb2tlblRocmVhZFBvb2woc2VsZi5fYnJva2VuKQoKICAgICAgICAgICAgaWYgc2VsZi5fc2h1dGRvd246CiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2Nhbm5vdCBzY2hlZHVsZSBuZXcgZnV0dXJlcyBhZnRlciBzaHV0ZG93bicpCiAgICAgICAgICAgIGlmIF9zaHV0ZG93bjoKICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignY2Fubm90IHNjaGVkdWxlIG5ldyBmdXR1cmVzIGFmdGVyICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXIgc2h1dGRvd24nKQoKICAgICAgICAgICAgZiA9IF9iYXNlLkZ1dHVyZSgpCiAgICAgICAgICAgIHcgPSBfV29ya0l0ZW0oZiwgZm4sIGFyZ3MsIGt3YXJncykKCiAgICAgICAgICAgIHNlbGYuX3dvcmtfcXVldWUucHV0KHcpCiAgICAgICAgICAgIHNlbGYuX2FkanVzdF90aHJlYWRfY291bnQoKQogICAgICAgICAgICByZXR1cm4gZgogICAgc3VibWl0Ll9fZG9jX18gPSBfYmFzZS5FeGVjdXRvci5zdWJtaXQuX19kb2NfXwoKICAgIGRlZiBfYWRqdXN0X3RocmVhZF9jb3VudChzZWxmKToKICAgICAgICAjIGlmIGlkbGUgdGhyZWFkcyBhcmUgYXZhaWxhYmxlLCBkb24ndCBzcGluIG5ldyB0aHJlYWRzCiAgICAgICAgaWYgc2VsZi5faWRsZV9zZW1hcGhvcmUuYWNxdWlyZSh0aW1lb3V0PTApOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgIyBXaGVuIHRoZSBleGVjdXRvciBnZXRzIGxvc3QsIHRoZSB3ZWFrcmVmIGNhbGxiYWNrIHdpbGwgd2FrZSB1cAogICAgICAgICMgdGhlIHdvcmtlciB0aHJlYWRzLgogICAgICAgIGRlZiB3ZWFrcmVmX2NiKF8sIHE9c2VsZi5fd29ya19xdWV1ZSk6CiAgICAgICAgICAgIHEucHV0KE5vbmUpCgogICAgICAgIG51bV90aHJlYWRzID0gbGVuKHNlbGYuX3RocmVhZHMpCiAgICAgICAgaWYgbnVtX3RocmVhZHMgPCBzZWxmLl9tYXhfd29ya2VyczoKICAgICAgICAgICAgdGhyZWFkX25hbWUgPSAnJXNfJWQnICUgKHNlbGYuX3RocmVhZF9uYW1lX3ByZWZpeCBvciBzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3RocmVhZHMpCiAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKG5hbWU9dGhyZWFkX25hbWUsIHRhcmdldD1fd29ya2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPSh3ZWFrcmVmLnJlZihzZWxmLCB3ZWFrcmVmX2NiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd29ya19xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5pdGlhbGl6ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRhcmdzKSkKICAgICAgICAgICAgdC5zdGFydCgpCiAgICAgICAgICAgIHNlbGYuX3RocmVhZHMuYWRkKHQpCiAgICAgICAgICAgIF90aHJlYWRzX3F1ZXVlc1t0XSA9IHNlbGYuX3dvcmtfcXVldWUKCiAgICBkZWYgX2luaXRpYWxpemVyX2ZhaWxlZChzZWxmKToKICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CiAgICAgICAgICAgIHNlbGYuX2Jyb2tlbiA9ICgnQSB0aHJlYWQgaW5pdGlhbGl6ZXIgZmFpbGVkLCB0aGUgdGhyZWFkIHBvb2wgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5vdCB1c2FibGUgYW55bW9yZScpCiAgICAgICAgICAgICMgRHJhaW4gd29yayBxdWV1ZSBhbmQgbWFyayBwZW5kaW5nIGZ1dHVyZXMgZmFpbGVkCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgd29ya19pdGVtID0gc2VsZi5fd29ya19xdWV1ZS5nZXRfbm93YWl0KCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgaWYgd29ya19pdGVtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X2V4Y2VwdGlvbihCcm9rZW5UaHJlYWRQb29sKHNlbGYuX2Jyb2tlbikpCgogICAgZGVmIHNodXRkb3duKHNlbGYsIHdhaXQ9VHJ1ZSwgKiwgY2FuY2VsX2Z1dHVyZXM9RmFsc2UpOgogICAgICAgIHdpdGggc2VsZi5fc2h1dGRvd25fbG9jazoKICAgICAgICAgICAgc2VsZi5fc2h1dGRvd24gPSBUcnVlCiAgICAgICAgICAgIGlmIGNhbmNlbF9mdXR1cmVzOgogICAgICAgICAgICAgICAgIyBEcmFpbiBhbGwgd29yayBpdGVtcyBmcm9tIHRoZSBxdWV1ZSwgYW5kIHRoZW4gY2FuY2VsIHRoZWlyCiAgICAgICAgICAgICAgICAjIGFzc29jaWF0ZWQgZnV0dXJlcy4KICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2l0ZW0gPSBzZWxmLl93b3JrX3F1ZXVlLmdldF9ub3dhaXQoKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBpZiB3b3JrX2l0ZW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuY2FuY2VsKCkKCiAgICAgICAgICAgICMgU2VuZCBhIHdha2UtdXAgdG8gcHJldmVudCB0aHJlYWRzIGNhbGxpbmcKICAgICAgICAgICAgIyBfd29ya19xdWV1ZS5nZXQoYmxvY2s9VHJ1ZSkgZnJvbSBwZXJtYW5lbnRseSBibG9ja2luZy4KICAgICAgICAgICAgc2VsZi5fd29ya19xdWV1ZS5wdXQoTm9uZSkKICAgICAgICBpZiB3YWl0OgogICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl90aHJlYWRzOgogICAgICAgICAgICAgICAgdC5qb2luKCkKICAgIHNodXRkb3duLl9fZG9jX18gPSBfYmFzZS5FeGVjdXRvci5zaHV0ZG93bi5fX2RvY19fClBLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAAEAAAAGN0eXBlcy9tYWNob2xpYi9QSwMEFAAAAAAAAiCjVgJVZQe0RQAAtEUAABIAAABjdHlwZXMvX19pbml0X18ucHkiIiJjcmVhdGUgYW5kIG1hbmlwdWxhdGUgQyBkYXRhIHR5cGVzIGluIFB5dGhvbiIiIgoKaW1wb3J0IG9zIGFzIF9vcywgc3lzIGFzIF9zeXMKaW1wb3J0IHR5cGVzIGFzIF90eXBlcwoKX192ZXJzaW9uX18gPSAiMS4xLjAiCgpmcm9tIF9jdHlwZXMgaW1wb3J0IFVuaW9uLCBTdHJ1Y3R1cmUsIEFycmF5CmZyb20gX2N0eXBlcyBpbXBvcnQgX1BvaW50ZXIKZnJvbSBfY3R5cGVzIGltcG9ydCBDRnVuY1B0ciBhcyBfQ0Z1bmNQdHIKZnJvbSBfY3R5cGVzIGltcG9ydCBfX3ZlcnNpb25fXyBhcyBfY3R5cGVzX3ZlcnNpb24KZnJvbSBfY3R5cGVzIGltcG9ydCBSVExEX0xPQ0FMLCBSVExEX0dMT0JBTApmcm9tIF9jdHlwZXMgaW1wb3J0IEFyZ3VtZW50RXJyb3IKCmZyb20gc3RydWN0IGltcG9ydCBjYWxjc2l6ZSBhcyBfY2FsY3NpemUKCmlmIF9fdmVyc2lvbl9fICE9IF9jdHlwZXNfdmVyc2lvbjoKICAgIHJhaXNlIEV4Y2VwdGlvbigiVmVyc2lvbiBudW1iZXIgbWlzbWF0Y2giLCBfX3ZlcnNpb25fXywgX2N0eXBlc192ZXJzaW9uKQoKaWYgX29zLm5hbWUgPT0gIm50IjoKICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgRm9ybWF0RXJyb3IKCkRFRkFVTFRfTU9ERSA9IFJUTERfTE9DQUwKaWYgX29zLm5hbWUgPT0gInBvc2l4IiBhbmQgX3N5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICMgT24gT1MgWCAxMC4zLCB3ZSB1c2UgUlRMRF9HTE9CQUwgYXMgZGVmYXVsdCBtb2RlCiAgICAjIGJlY2F1c2UgUlRMRF9MT0NBTCBkb2VzIG5vdCB3b3JrIGF0IGxlYXN0IG9uIHNvbWUKICAgICMgbGlicmFyaWVzLiAgT1MgWCAxMC4zIGlzIERhcndpbiA3LCBzbyB3ZSBjaGVjayBmb3IKICAgICMgdGhhdC4KCiAgICBpZiBpbnQoX29zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA8IDg6CiAgICAgICAgREVGQVVMVF9NT0RFID0gUlRMRF9HTE9CQUwKCmZyb20gX2N0eXBlcyBpbXBvcnQgRlVOQ0ZMQUdfQ0RFQ0wgYXMgX0ZVTkNGTEFHX0NERUNMLCBcCiAgICAgRlVOQ0ZMQUdfUFlUSE9OQVBJIGFzIF9GVU5DRkxBR19QWVRIT05BUEksIFwKICAgICBGVU5DRkxBR19VU0VfRVJSTk8gYXMgX0ZVTkNGTEFHX1VTRV9FUlJOTywgXAogICAgIEZVTkNGTEFHX1VTRV9MQVNURVJST1IgYXMgX0ZVTkNGTEFHX1VTRV9MQVNURVJST1IKCiMgV0lOT0xFQVBJIC0+IEhSRVNVTFQKIyBXSU5PTEVBUElfKHR5cGUpCiMKIyBTVERNRVRIT0RDQUxMVFlQRQojCiMgU1RETUVUSE9EKG5hbWUpCiMgU1RETUVUSE9EXyh0eXBlLCBuYW1lKQojCiMgU1REQVBJQ0FMTFRZUEUKCmRlZiBjcmVhdGVfc3RyaW5nX2J1ZmZlcihpbml0LCBzaXplPU5vbmUpOgogICAgIiIiY3JlYXRlX3N0cmluZ19idWZmZXIoYUJ5dGVzKSAtPiBjaGFyYWN0ZXIgYXJyYXkKICAgIGNyZWF0ZV9zdHJpbmdfYnVmZmVyKGFuSW50ZWdlcikgLT4gY2hhcmFjdGVyIGFycmF5CiAgICBjcmVhdGVfc3RyaW5nX2J1ZmZlcihhQnl0ZXMsIGFuSW50ZWdlcikgLT4gY2hhcmFjdGVyIGFycmF5CiAgICAiIiIKICAgIGlmIGlzaW5zdGFuY2UoaW5pdCwgYnl0ZXMpOgogICAgICAgIGlmIHNpemUgaXMgTm9uZToKICAgICAgICAgICAgc2l6ZSA9IGxlbihpbml0KSsxCiAgICAgICAgX3N5cy5hdWRpdCgiY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyIiwgaW5pdCwgc2l6ZSkKICAgICAgICBidWZ0eXBlID0gY19jaGFyICogc2l6ZQogICAgICAgIGJ1ZiA9IGJ1ZnR5cGUoKQogICAgICAgIGJ1Zi52YWx1ZSA9IGluaXQKICAgICAgICByZXR1cm4gYnVmCiAgICBlbGlmIGlzaW5zdGFuY2UoaW5pdCwgaW50KToKICAgICAgICBfc3lzLmF1ZGl0KCJjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIiLCBOb25lLCBpbml0KQogICAgICAgIGJ1ZnR5cGUgPSBjX2NoYXIgKiBpbml0CiAgICAgICAgYnVmID0gYnVmdHlwZSgpCiAgICAgICAgcmV0dXJuIGJ1ZgogICAgcmFpc2UgVHlwZUVycm9yKGluaXQpCgojIEFsaWFzIHRvIGNyZWF0ZV9zdHJpbmdfYnVmZmVyKCkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKY19idWZmZXIgPSBjcmVhdGVfc3RyaW5nX2J1ZmZlcgoKX2NfZnVuY3R5cGVfY2FjaGUgPSB7fQpkZWYgQ0ZVTkNUWVBFKHJlc3R5cGUsICphcmd0eXBlcywgKiprdyk6CiAgICAiIiJDRlVOQ1RZUEUocmVzdHlwZSwgKmFyZ3R5cGVzLAogICAgICAgICAgICAgICAgIHVzZV9lcnJubz1GYWxzZSwgdXNlX2xhc3RfZXJyb3I9RmFsc2UpIC0+IGZ1bmN0aW9uIHByb3RvdHlwZS4KCiAgICByZXN0eXBlOiB0aGUgcmVzdWx0IHR5cGUKICAgIGFyZ3R5cGVzOiBhIHNlcXVlbmNlIHNwZWNpZnlpbmcgdGhlIGFyZ3VtZW50IHR5cGVzCgogICAgVGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBjYW4gYmUgY2FsbGVkIGluIGRpZmZlcmVudCB3YXlzIHRvIGNyZWF0ZSBhCiAgICBjYWxsYWJsZSBvYmplY3Q6CgogICAgcHJvdG90eXBlKGludGVnZXIgYWRkcmVzcykgLT4gZm9yZWlnbiBmdW5jdGlvbgogICAgcHJvdG90eXBlKGNhbGxhYmxlKSAtPiBjcmVhdGUgYW5kIHJldHVybiBhIEMgY2FsbGFibGUgZnVuY3Rpb24gZnJvbSBjYWxsYWJsZQogICAgcHJvdG90eXBlKGludGVnZXIgaW5kZXgsIG1ldGhvZCBuYW1lWywgcGFyYW1mbGFnc10pIC0+IGZvcmVpZ24gZnVuY3Rpb24gY2FsbGluZyBhIENPTSBtZXRob2QKICAgIHByb3RvdHlwZSgob3JkaW5hbCBudW1iZXIsIGRsbCBvYmplY3QpWywgcGFyYW1mbGFnc10pIC0+IGZvcmVpZ24gZnVuY3Rpb24gZXhwb3J0ZWQgYnkgb3JkaW5hbAogICAgcHJvdG90eXBlKChmdW5jdGlvbiBuYW1lLCBkbGwgb2JqZWN0KVssIHBhcmFtZmxhZ3NdKSAtPiBmb3JlaWduIGZ1bmN0aW9uIGV4cG9ydGVkIGJ5IG5hbWUKICAgICIiIgogICAgZmxhZ3MgPSBfRlVOQ0ZMQUdfQ0RFQ0wKICAgIGlmIGt3LnBvcCgidXNlX2Vycm5vIiwgRmFsc2UpOgogICAgICAgIGZsYWdzIHw9IF9GVU5DRkxBR19VU0VfRVJSTk8KICAgIGlmIGt3LnBvcCgidXNlX2xhc3RfZXJyb3IiLCBGYWxzZSk6CiAgICAgICAgZmxhZ3MgfD0gX0ZVTkNGTEFHX1VTRV9MQVNURVJST1IKICAgIGlmIGt3OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudChzKSAlcyIgJSBrdy5rZXlzKCkpCgogICAgdHJ5OgogICAgICAgIHJldHVybiBfY19mdW5jdHlwZV9jYWNoZVsocmVzdHlwZSwgYXJndHlwZXMsIGZsYWdzKV0KICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICBwYXNzCgogICAgY2xhc3MgQ0Z1bmN0aW9uVHlwZShfQ0Z1bmNQdHIpOgogICAgICAgIF9hcmd0eXBlc18gPSBhcmd0eXBlcwogICAgICAgIF9yZXN0eXBlXyA9IHJlc3R5cGUKICAgICAgICBfZmxhZ3NfID0gZmxhZ3MKICAgIF9jX2Z1bmN0eXBlX2NhY2hlWyhyZXN0eXBlLCBhcmd0eXBlcywgZmxhZ3MpXSA9IENGdW5jdGlvblR5cGUKICAgIHJldHVybiBDRnVuY3Rpb25UeXBlCgppZiBfb3MubmFtZSA9PSAibnQiOgogICAgZnJvbSBfY3R5cGVzIGltcG9ydCBMb2FkTGlicmFyeSBhcyBfZGxvcGVuCiAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IEZVTkNGTEFHX1NURENBTEwgYXMgX0ZVTkNGTEFHX1NURENBTEwKCiAgICBfd2luX2Z1bmN0eXBlX2NhY2hlID0ge30KICAgIGRlZiBXSU5GVU5DVFlQRShyZXN0eXBlLCAqYXJndHlwZXMsICoqa3cpOgogICAgICAgICMgZG9jc3RyaW5nIHNldCBsYXRlciAodmVyeSBzaW1pbGFyIHRvIENGVU5DVFlQRS5fX2RvY19fKQogICAgICAgIGZsYWdzID0gX0ZVTkNGTEFHX1NURENBTEwKICAgICAgICBpZiBrdy5wb3AoInVzZV9lcnJubyIsIEZhbHNlKToKICAgICAgICAgICAgZmxhZ3MgfD0gX0ZVTkNGTEFHX1VTRV9FUlJOTwogICAgICAgIGlmIGt3LnBvcCgidXNlX2xhc3RfZXJyb3IiLCBGYWxzZSk6CiAgICAgICAgICAgIGZsYWdzIHw9IF9GVU5DRkxBR19VU0VfTEFTVEVSUk9SCiAgICAgICAgaWYga3c6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudChzKSAlcyIgJSBrdy5rZXlzKCkpCgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIF93aW5fZnVuY3R5cGVfY2FjaGVbKHJlc3R5cGUsIGFyZ3R5cGVzLCBmbGFncyldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBwYXNzCgogICAgICAgIGNsYXNzIFdpbkZ1bmN0aW9uVHlwZShfQ0Z1bmNQdHIpOgogICAgICAgICAgICBfYXJndHlwZXNfID0gYXJndHlwZXMKICAgICAgICAgICAgX3Jlc3R5cGVfID0gcmVzdHlwZQogICAgICAgICAgICBfZmxhZ3NfID0gZmxhZ3MKICAgICAgICBfd2luX2Z1bmN0eXBlX2NhY2hlWyhyZXN0eXBlLCBhcmd0eXBlcywgZmxhZ3MpXSA9IFdpbkZ1bmN0aW9uVHlwZQogICAgICAgIHJldHVybiBXaW5GdW5jdGlvblR5cGUKICAgIGlmIFdJTkZVTkNUWVBFLl9fZG9jX186CiAgICAgICAgV0lORlVOQ1RZUEUuX19kb2NfXyA9IENGVU5DVFlQRS5fX2RvY19fLnJlcGxhY2UoIkNGVU5DVFlQRSIsICJXSU5GVU5DVFlQRSIpCgplbGlmIF9vcy5uYW1lID09ICJwb3NpeCI6CiAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IGRsb3BlbiBhcyBfZGxvcGVuCgpmcm9tIF9jdHlwZXMgaW1wb3J0IHNpemVvZiwgYnlyZWYsIGFkZHJlc3NvZiwgYWxpZ25tZW50LCByZXNpemUKZnJvbSBfY3R5cGVzIGltcG9ydCBnZXRfZXJybm8sIHNldF9lcnJubwpmcm9tIF9jdHlwZXMgaW1wb3J0IF9TaW1wbGVDRGF0YQoKZGVmIF9jaGVja19zaXplKHR5cCwgdHlwZWNvZGU9Tm9uZSk6CiAgICAjIENoZWNrIGlmIHNpemVvZihjdHlwZXNfdHlwZSkgYWdhaW5zdCBzdHJ1Y3QuY2FsY3NpemUuICBUaGlzCiAgICAjIHNob3VsZCBwcm90ZWN0IHNvbWV3aGF0IGFnYWluc3QgYSBtaXNjb25maWd1cmVkIGxpYmZmaS4KICAgIGZyb20gc3RydWN0IGltcG9ydCBjYWxjc2l6ZQogICAgaWYgdHlwZWNvZGUgaXMgTm9uZToKICAgICAgICAjIE1vc3QgX3R5cGVfIGNvZGVzIGFyZSB0aGUgc2FtZSBhcyB1c2VkIGluIHN0cnVjdAogICAgICAgIHR5cGVjb2RlID0gdHlwLl90eXBlXwogICAgYWN0dWFsLCByZXF1aXJlZCA9IHNpemVvZih0eXApLCBjYWxjc2l6ZSh0eXBlY29kZSkKICAgIGlmIGFjdHVhbCAhPSByZXF1aXJlZDoKICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcigic2l6ZW9mKCVzKSB3cm9uZzogJWQgaW5zdGVhZCBvZiAlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cCwgYWN0dWFsLCByZXF1aXJlZCkpCgpjbGFzcyBweV9vYmplY3QoX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJPIgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19yZXByX18oKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gIiVzKDxOVUxMPikiICUgdHlwZShzZWxmKS5fX25hbWVfXwpfY2hlY2tfc2l6ZShweV9vYmplY3QsICJQIikKCmNsYXNzIGNfc2hvcnQoX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJoIgpfY2hlY2tfc2l6ZShjX3Nob3J0KQoKY2xhc3MgY191c2hvcnQoX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJIIgpfY2hlY2tfc2l6ZShjX3VzaG9ydCkKCmNsYXNzIGNfbG9uZyhfU2ltcGxlQ0RhdGEpOgogICAgX3R5cGVfID0gImwiCl9jaGVja19zaXplKGNfbG9uZykKCmNsYXNzIGNfdWxvbmcoX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJMIgpfY2hlY2tfc2l6ZShjX3Vsb25nKQoKaWYgX2NhbGNzaXplKCJpIikgPT0gX2NhbGNzaXplKCJsIik6CiAgICAjIGlmIGludCBhbmQgbG9uZyBoYXZlIHRoZSBzYW1lIHNpemUsIG1ha2UgY19pbnQgYW4gYWxpYXMgZm9yIGNfbG9uZwogICAgY19pbnQgPSBjX2xvbmcKICAgIGNfdWludCA9IGNfdWxvbmcKZWxzZToKICAgIGNsYXNzIGNfaW50KF9TaW1wbGVDRGF0YSk6CiAgICAgICAgX3R5cGVfID0gImkiCiAgICBfY2hlY2tfc2l6ZShjX2ludCkKCiAgICBjbGFzcyBjX3VpbnQoX1NpbXBsZUNEYXRhKToKICAgICAgICBfdHlwZV8gPSAiSSIKICAgIF9jaGVja19zaXplKGNfdWludCkKCmNsYXNzIGNfZmxvYXQoX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJmIgpfY2hlY2tfc2l6ZShjX2Zsb2F0KQoKY2xhc3MgY19kb3VibGUoX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJkIgpfY2hlY2tfc2l6ZShjX2RvdWJsZSkKCmNsYXNzIGNfbG9uZ2RvdWJsZShfU2ltcGxlQ0RhdGEpOgogICAgX3R5cGVfID0gImciCmlmIHNpemVvZihjX2xvbmdkb3VibGUpID09IHNpemVvZihjX2RvdWJsZSk6CiAgICBjX2xvbmdkb3VibGUgPSBjX2RvdWJsZQoKaWYgX2NhbGNzaXplKCJsIikgPT0gX2NhbGNzaXplKCJxIik6CiAgICAjIGlmIGxvbmcgYW5kIGxvbmcgbG9uZyBoYXZlIHRoZSBzYW1lIHNpemUsIG1ha2UgY19sb25nbG9uZyBhbiBhbGlhcyBmb3IgY19sb25nCiAgICBjX2xvbmdsb25nID0gY19sb25nCiAgICBjX3Vsb25nbG9uZyA9IGNfdWxvbmcKZWxzZToKICAgIGNsYXNzIGNfbG9uZ2xvbmcoX1NpbXBsZUNEYXRhKToKICAgICAgICBfdHlwZV8gPSAicSIKICAgIF9jaGVja19zaXplKGNfbG9uZ2xvbmcpCgogICAgY2xhc3MgY191bG9uZ2xvbmcoX1NpbXBsZUNEYXRhKToKICAgICAgICBfdHlwZV8gPSAiUSIKICAgICMjICAgIGRlZiBmcm9tX3BhcmFtKGNscywgdmFsKToKICAgICMjICAgICAgICByZXR1cm4gKCdkJywgZmxvYXQodmFsKSwgdmFsKQogICAgIyMgICAgZnJvbV9wYXJhbSA9IGNsYXNzbWV0aG9kKGZyb21fcGFyYW0pCiAgICBfY2hlY2tfc2l6ZShjX3Vsb25nbG9uZykKCmNsYXNzIGNfdWJ5dGUoX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJCIgpjX3VieXRlLl9fY3R5cGVfbGVfXyA9IGNfdWJ5dGUuX19jdHlwZV9iZV9fID0gY191Ynl0ZQojIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6CiMjY191Y2hhciA9IGNfdWJ5dGUKX2NoZWNrX3NpemUoY191Ynl0ZSkKCmNsYXNzIGNfYnl0ZShfU2ltcGxlQ0RhdGEpOgogICAgX3R5cGVfID0gImIiCmNfYnl0ZS5fX2N0eXBlX2xlX18gPSBjX2J5dGUuX19jdHlwZV9iZV9fID0gY19ieXRlCl9jaGVja19zaXplKGNfYnl0ZSkKCmNsYXNzIGNfY2hhcihfU2ltcGxlQ0RhdGEpOgogICAgX3R5cGVfID0gImMiCmNfY2hhci5fX2N0eXBlX2xlX18gPSBjX2NoYXIuX19jdHlwZV9iZV9fID0gY19jaGFyCl9jaGVja19zaXplKGNfY2hhcikKCmNsYXNzIGNfY2hhcl9wKF9TaW1wbGVDRGF0YSk6CiAgICBfdHlwZV8gPSAieiIKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGNfdm9pZF9wLmZyb21fYnVmZmVyKHNlbGYpLnZhbHVlKQpfY2hlY2tfc2l6ZShjX2NoYXJfcCwgIlAiKQoKY2xhc3MgY192b2lkX3AoX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJQIgpjX3ZvaWRwID0gY192b2lkX3AgIyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAodG8gYSBidWcpCl9jaGVja19zaXplKGNfdm9pZF9wKQoKY2xhc3MgY19ib29sKF9TaW1wbGVDRGF0YSk6CiAgICBfdHlwZV8gPSAiPyIKCmZyb20gX2N0eXBlcyBpbXBvcnQgUE9JTlRFUiwgcG9pbnRlciwgX3BvaW50ZXJfdHlwZV9jYWNoZQoKY2xhc3MgY193Y2hhcl9wKF9TaW1wbGVDRGF0YSk6CiAgICBfdHlwZV8gPSAiWiIKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGNfdm9pZF9wLmZyb21fYnVmZmVyKHNlbGYpLnZhbHVlKQoKY2xhc3MgY193Y2hhcihfU2ltcGxlQ0RhdGEpOgogICAgX3R5cGVfID0gInUiCgpkZWYgX3Jlc2V0X2NhY2hlKCk6CiAgICBfcG9pbnRlcl90eXBlX2NhY2hlLmNsZWFyKCkKICAgIF9jX2Z1bmN0eXBlX2NhY2hlLmNsZWFyKCkKICAgIGlmIF9vcy5uYW1lID09ICJudCI6CiAgICAgICAgX3dpbl9mdW5jdHlwZV9jYWNoZS5jbGVhcigpCiAgICAjIF9TaW1wbGVDRGF0YS5jX3djaGFyX3BfZnJvbV9wYXJhbQogICAgUE9JTlRFUihjX3djaGFyKS5mcm9tX3BhcmFtID0gY193Y2hhcl9wLmZyb21fcGFyYW0KICAgICMgX1NpbXBsZUNEYXRhLmNfY2hhcl9wX2Zyb21fcGFyYW0KICAgIFBPSU5URVIoY19jaGFyKS5mcm9tX3BhcmFtID0gY19jaGFyX3AuZnJvbV9wYXJhbQogICAgX3BvaW50ZXJfdHlwZV9jYWNoZVtOb25lXSA9IGNfdm9pZF9wCgpkZWYgY3JlYXRlX3VuaWNvZGVfYnVmZmVyKGluaXQsIHNpemU9Tm9uZSk6CiAgICAiIiJjcmVhdGVfdW5pY29kZV9idWZmZXIoYVN0cmluZykgLT4gY2hhcmFjdGVyIGFycmF5CiAgICBjcmVhdGVfdW5pY29kZV9idWZmZXIoYW5JbnRlZ2VyKSAtPiBjaGFyYWN0ZXIgYXJyYXkKICAgIGNyZWF0ZV91bmljb2RlX2J1ZmZlcihhU3RyaW5nLCBhbkludGVnZXIpIC0+IGNoYXJhY3RlciBhcnJheQogICAgIiIiCiAgICBpZiBpc2luc3RhbmNlKGluaXQsIHN0cik6CiAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBpZiBzaXplb2YoY193Y2hhcikgPT0gMjoKICAgICAgICAgICAgICAgICMgVVRGLTE2IHJlcXVpcmVzIGEgc3Vycm9nYXRlIHBhaXIgKDIgd2NoYXJfdCkgZm9yIG5vbi1CTVAKICAgICAgICAgICAgICAgICMgY2hhcmFjdGVycyAob3V0c2lkZSBbVSswMDAwOyBVK0ZGRkZdIHJhbmdlKS4gKzEgZm9yIHRyYWlsaW5nCiAgICAgICAgICAgICAgICAjIE5VTCBjaGFyYWN0ZXIuCiAgICAgICAgICAgICAgICBzaXplID0gc3VtKDIgaWYgb3JkKGMpID4gMHhGRkZGIGVsc2UgMSBmb3IgYyBpbiBpbml0KSArIDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgMzItYml0IHdjaGFyX3QgKDEgd2NoYXJfdCBwZXIgVW5pY29kZSBjaGFyYWN0ZXIpLiArMSBmb3IKICAgICAgICAgICAgICAgICMgdHJhaWxpbmcgTlVMIGNoYXJhY3Rlci4KICAgICAgICAgICAgICAgIHNpemUgPSBsZW4oaW5pdCkgKyAxCiAgICAgICAgX3N5cy5hdWRpdCgiY3R5cGVzLmNyZWF0ZV91bmljb2RlX2J1ZmZlciIsIGluaXQsIHNpemUpCiAgICAgICAgYnVmdHlwZSA9IGNfd2NoYXIgKiBzaXplCiAgICAgICAgYnVmID0gYnVmdHlwZSgpCiAgICAgICAgYnVmLnZhbHVlID0gaW5pdAogICAgICAgIHJldHVybiBidWYKICAgIGVsaWYgaXNpbnN0YW5jZShpbml0LCBpbnQpOgogICAgICAgIF9zeXMuYXVkaXQoImN0eXBlcy5jcmVhdGVfdW5pY29kZV9idWZmZXIiLCBOb25lLCBpbml0KQogICAgICAgIGJ1ZnR5cGUgPSBjX3djaGFyICogaW5pdAogICAgICAgIGJ1ZiA9IGJ1ZnR5cGUoKQogICAgICAgIHJldHVybiBidWYKICAgIHJhaXNlIFR5cGVFcnJvcihpbml0KQoKCiMgWFhYIERlcHJlY2F0ZWQKZGVmIFNldFBvaW50ZXJUeXBlKHBvaW50ZXIsIGNscyk6CiAgICBpZiBfcG9pbnRlcl90eXBlX2NhY2hlLmdldChjbHMsIE5vbmUpIGlzIG5vdCBOb25lOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhpcyB0eXBlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBjYWNoZSIpCiAgICBpZiBpZChwb2ludGVyKSBub3QgaW4gX3BvaW50ZXJfdHlwZV9jYWNoZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIldoYXQncyB0aGlzPz8/IikKICAgIHBvaW50ZXIuc2V0X3R5cGUoY2xzKQogICAgX3BvaW50ZXJfdHlwZV9jYWNoZVtjbHNdID0gcG9pbnRlcgogICAgZGVsIF9wb2ludGVyX3R5cGVfY2FjaGVbaWQocG9pbnRlcildCgojIFhYWCBEZXByZWNhdGVkCmRlZiBBUlJBWSh0eXAsIGxlbik6CiAgICByZXR1cm4gdHlwICogbGVuCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoKY2xhc3MgQ0RMTChvYmplY3QpOgogICAgIiIiQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZXByZXNlbnRzIGEgbG9hZGVkIGRsbC9zaGFyZWQKICAgIGxpYnJhcnksIGV4cG9ydGluZyBmdW5jdGlvbnMgdXNpbmcgdGhlIHN0YW5kYXJkIEMgY2FsbGluZwogICAgY29udmVudGlvbiAobmFtZWQgJ2NkZWNsJyBvbiBXaW5kb3dzKS4KCiAgICBUaGUgZXhwb3J0ZWQgZnVuY3Rpb25zIGNhbiBiZSBhY2Nlc3NlZCBhcyBhdHRyaWJ1dGVzLCBvciBieQogICAgaW5kZXhpbmcgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZS4gIEV4YW1wbGVzOgoKICAgIDxvYmo+LnFzb3J0IC0+IGNhbGxhYmxlIG9iamVjdAogICAgPG9iaj5bJ3Fzb3J0J10gLT4gY2FsbGFibGUgb2JqZWN0CgogICAgQ2FsbGluZyB0aGUgZnVuY3Rpb25zIHJlbGVhc2VzIHRoZSBQeXRob24gR0lMIGR1cmluZyB0aGUgY2FsbCBhbmQKICAgIHJlYWNxdWlyZXMgaXQgYWZ0ZXJ3YXJkcy4KICAgICIiIgogICAgX2Z1bmNfZmxhZ3NfID0gX0ZVTkNGTEFHX0NERUNMCiAgICBfZnVuY19yZXN0eXBlXyA9IGNfaW50CiAgICAjIGRlZmF1bHQgdmFsdWVzIGZvciByZXByCiAgICBfbmFtZSA9ICc8dW5pbml0aWFsaXplZD4nCiAgICBfaGFuZGxlID0gMAogICAgX0Z1bmNQdHIgPSBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIG1vZGU9REVGQVVMVF9NT0RFLCBoYW5kbGU9Tm9uZSwKICAgICAgICAgICAgICAgICB1c2VfZXJybm89RmFsc2UsCiAgICAgICAgICAgICAgICAgdXNlX2xhc3RfZXJyb3I9RmFsc2UsCiAgICAgICAgICAgICAgICAgd2lubW9kZT1Ob25lKToKICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgIGZsYWdzID0gc2VsZi5fZnVuY19mbGFnc18KICAgICAgICBpZiB1c2VfZXJybm86CiAgICAgICAgICAgIGZsYWdzIHw9IF9GVU5DRkxBR19VU0VfRVJSTk8KICAgICAgICBpZiB1c2VfbGFzdF9lcnJvcjoKICAgICAgICAgICAgZmxhZ3MgfD0gX0ZVTkNGTEFHX1VTRV9MQVNURVJST1IKICAgICAgICBpZiBfc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImFpeCIpOgogICAgICAgICAgICAiIiJXaGVuIHRoZSBuYW1lIGNvbnRhaW5zICIuYSgiIGFuZCBlbmRzIHdpdGggIikiLAogICAgICAgICAgICAgICBlLmcuLCAibGliRk9PLmEobGliRk9PLnNvKSIgLSB0aGlzIGlzIHRha2VuIHRvIGJlIGFuCiAgICAgICAgICAgICAgIGFyY2hpdmUobWVtYmVyKSBzeW50YXggZm9yIGRsb3BlbigpLCBhbmQgdGhlIG1vZGUgaXMgYWRqdXN0ZWQuCiAgICAgICAgICAgICAgIE90aGVyd2lzZSwgbmFtZSBpcyBwcmVzZW50ZWQgdG8gZGxvcGVuKCkgYXMgYSBmaWxlIGFyZ3VtZW50LgogICAgICAgICAgICAiIiIKICAgICAgICAgICAgaWYgbmFtZSBhbmQgbmFtZS5lbmRzd2l0aCgiKSIpIGFuZCAiLmEoIiBpbiBuYW1lOgogICAgICAgICAgICAgICAgbW9kZSB8PSAoIF9vcy5SVExEX01FTUJFUiB8IF9vcy5SVExEX05PVyApCiAgICAgICAgaWYgX29zLm5hbWUgPT0gIm50IjoKICAgICAgICAgICAgaWYgd2lubW9kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIG1vZGUgPSB3aW5tb2RlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpbXBvcnQgbnQKICAgICAgICAgICAgICAgIG1vZGUgPSBudC5fTE9BRF9MSUJSQVJZX1NFQVJDSF9ERUZBVUxUX0RJUlMKICAgICAgICAgICAgICAgIGlmICcvJyBpbiBuYW1lIG9yICdcXCcgaW4gbmFtZToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lID0gbnQuX2dldGZ1bGxwYXRobmFtZShzZWxmLl9uYW1lKQogICAgICAgICAgICAgICAgICAgIG1vZGUgfD0gbnQuX0xPQURfTElCUkFSWV9TRUFSQ0hfRExMX0xPQURfRElSCgogICAgICAgIGNsYXNzIF9GdW5jUHRyKF9DRnVuY1B0cik6CiAgICAgICAgICAgIF9mbGFnc18gPSBmbGFncwogICAgICAgICAgICBfcmVzdHlwZV8gPSBzZWxmLl9mdW5jX3Jlc3R5cGVfCiAgICAgICAgc2VsZi5fRnVuY1B0ciA9IF9GdW5jUHRyCgogICAgICAgIGlmIGhhbmRsZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBfZGxvcGVuKHNlbGYuX25hbWUsIG1vZGUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaGFuZGxlCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPCVzICclcycsIGhhbmRsZSAleCBhdCAlI3g+IiAlIFwKICAgICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9uYW1lLAogICAgICAgICAgICAgICAgKHNlbGYuX2hhbmRsZSAmIChfc3lzLm1heHNpemUqMiArIDEpKSwKICAgICAgICAgICAgICAgIGlkKHNlbGYpICYgKF9zeXMubWF4c2l6ZSoyICsgMSkpCgogICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnX18nKSBhbmQgbmFtZS5lbmRzd2l0aCgnX18nKToKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKICAgICAgICBmdW5jID0gc2VsZi5fX2dldGl0ZW1fXyhuYW1lKQogICAgICAgIHNldGF0dHIoc2VsZiwgbmFtZSwgZnVuYykKICAgICAgICByZXR1cm4gZnVuYwoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lX29yX29yZGluYWwpOgogICAgICAgIGZ1bmMgPSBzZWxmLl9GdW5jUHRyKChuYW1lX29yX29yZGluYWwsIHNlbGYpKQogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWVfb3Jfb3JkaW5hbCwgaW50KToKICAgICAgICAgICAgZnVuYy5fX25hbWVfXyA9IG5hbWVfb3Jfb3JkaW5hbAogICAgICAgIHJldHVybiBmdW5jCgpjbGFzcyBQeURMTChDRExMKToKICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgUHl0aG9uIGxpYnJhcnkgaXRzZWxmLiAgSXQgYWxsb3dzCiAgICBhY2Nlc3NpbmcgUHl0aG9uIEFQSSBmdW5jdGlvbnMuICBUaGUgR0lMIGlzIG5vdCByZWxlYXNlZCwgYW5kCiAgICBQeXRob24gZXhjZXB0aW9ucyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAiIiIKICAgIF9mdW5jX2ZsYWdzXyA9IF9GVU5DRkxBR19DREVDTCB8IF9GVU5DRkxBR19QWVRIT05BUEkKCmlmIF9vcy5uYW1lID09ICJudCI6CgogICAgY2xhc3MgV2luRExMKENETEwpOgogICAgICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGRsbCBleHBvcnRpbmcgZnVuY3Rpb25zIHVzaW5nIHRoZQogICAgICAgIFdpbmRvd3Mgc3RkY2FsbCBjYWxsaW5nIGNvbnZlbnRpb24uCiAgICAgICAgIiIiCiAgICAgICAgX2Z1bmNfZmxhZ3NfID0gX0ZVTkNGTEFHX1NURENBTEwKCiAgICAjIFhYWCBIbSwgd2hhdCBhYm91dCBIUkVTVUxUIGFzIG5vcm1hbCBwYXJhbWV0ZXI/CiAgICAjIE11c3RuJ3QgaXQgZGVyaXZlIGZyb20gY19sb25nIHRoZW4/CiAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IF9jaGVja19IUkVTVUxULCBfU2ltcGxlQ0RhdGEKICAgIGNsYXNzIEhSRVNVTFQoX1NpbXBsZUNEYXRhKToKICAgICAgICBfdHlwZV8gPSAibCIKICAgICAgICAjIF9jaGVja19yZXR2YWxfIGlzIGNhbGxlZCB3aXRoIHRoZSBmdW5jdGlvbidzIHJlc3VsdCB3aGVuIGl0CiAgICAgICAgIyBpcyB1c2VkIGFzIHJlc3R5cGUuICBJdCBjaGVja3MgZm9yIHRoZSBGQUlMRUQgYml0LCBhbmQKICAgICAgICAjIHJhaXNlcyBhbiBPU0Vycm9yIGlmIGl0IGlzIHNldC4KICAgICAgICAjCiAgICAgICAgIyBUaGUgX2NoZWNrX3JldHZhbF8gbWV0aG9kIGlzIGltcGxlbWVudGVkIGluIEMsIHNvIHRoYXQgdGhlCiAgICAgICAgIyBtZXRob2QgZGVmaW5pdGlvbiBpdHNlbGYgaXMgbm90IGluY2x1ZGVkIGluIHRoZSB0cmFjZWJhY2sKICAgICAgICAjIHdoZW4gaXQgcmFpc2VzIGFuIGVycm9yIC0gdGhhdCBpcyB3aGF0IHdlIHdhbnQgKGFuZCBQeXRob24KICAgICAgICAjIGRvZXNuJ3QgaGF2ZSBhIHdheSB0byByYWlzZSBhbiBleGNlcHRpb24gaW4gdGhlIGNhbGxlcidzCiAgICAgICAgIyBmcmFtZSkuCiAgICAgICAgX2NoZWNrX3JldHZhbF8gPSBfY2hlY2tfSFJFU1VMVAoKICAgIGNsYXNzIE9sZURMTChDRExMKToKICAgICAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBkbGwgZXhwb3J0aW5nIGZ1bmN0aW9ucyB1c2luZyB0aGUKICAgICAgICBXaW5kb3dzIHN0ZGNhbGwgY2FsbGluZyBjb252ZW50aW9uLCBhbmQgcmV0dXJuaW5nIEhSRVNVTFQuCiAgICAgICAgSFJFU1VMVCBlcnJvciB2YWx1ZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmFpc2VkIGFzIE9TRXJyb3IKICAgICAgICBleGNlcHRpb25zLgogICAgICAgICIiIgogICAgICAgIF9mdW5jX2ZsYWdzXyA9IF9GVU5DRkxBR19TVERDQUxMCiAgICAgICAgX2Z1bmNfcmVzdHlwZV8gPSBIUkVTVUxUCgpjbGFzcyBMaWJyYXJ5TG9hZGVyKG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZGxsdHlwZSk6CiAgICAgICAgc2VsZi5fZGxsdHlwZSA9IGRsbHR5cGUKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgaWYgbmFtZVswXSA9PSAnXyc6CiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCiAgICAgICAgZGxsID0gc2VsZi5fZGxsdHlwZShuYW1lKQogICAgICAgIHNldGF0dHIoc2VsZiwgbmFtZSwgZGxsKQogICAgICAgIHJldHVybiBkbGwKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CiAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkKCiAgICBkZWYgTG9hZExpYnJhcnkoc2VsZiwgbmFtZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2RsbHR5cGUobmFtZSkKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKF90eXBlcy5HZW5lcmljQWxpYXMpCgpjZGxsID0gTGlicmFyeUxvYWRlcihDRExMKQpweWRsbCA9IExpYnJhcnlMb2FkZXIoUHlETEwpCgppZiBfb3MubmFtZSA9PSAibnQiOgogICAgcHl0aG9uYXBpID0gUHlETEwoInB5dGhvbiBkbGwiLCBOb25lLCBfc3lzLmRsbGhhbmRsZSkKZWxpZiBfc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgogICAgcHl0aG9uYXBpID0gUHlETEwoImxpYnB5dGhvbiVkLiVkLmRsbCIgJSBfc3lzLnZlcnNpb25faW5mb1s6Ml0pCmVsc2U6CiAgICBweXRob25hcGkgPSBQeURMTChOb25lKQoKCmlmIF9vcy5uYW1lID09ICJudCI6CiAgICB3aW5kbGwgPSBMaWJyYXJ5TG9hZGVyKFdpbkRMTCkKICAgIG9sZWRsbCA9IExpYnJhcnlMb2FkZXIoT2xlRExMKQoKICAgIEdldExhc3RFcnJvciA9IHdpbmRsbC5rZXJuZWwzMi5HZXRMYXN0RXJyb3IKICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgZ2V0X2xhc3RfZXJyb3IsIHNldF9sYXN0X2Vycm9yCgogICAgZGVmIFdpbkVycm9yKGNvZGU9Tm9uZSwgZGVzY3I9Tm9uZSk6CiAgICAgICAgaWYgY29kZSBpcyBOb25lOgogICAgICAgICAgICBjb2RlID0gR2V0TGFzdEVycm9yKCkKICAgICAgICBpZiBkZXNjciBpcyBOb25lOgogICAgICAgICAgICBkZXNjciA9IEZvcm1hdEVycm9yKGNvZGUpLnN0cmlwKCkKICAgICAgICByZXR1cm4gT1NFcnJvcihOb25lLCBkZXNjciwgTm9uZSwgY29kZSkKCmlmIHNpemVvZihjX3VpbnQpID09IHNpemVvZihjX3ZvaWRfcCk6CiAgICBjX3NpemVfdCA9IGNfdWludAogICAgY19zc2l6ZV90ID0gY19pbnQKZWxpZiBzaXplb2YoY191bG9uZykgPT0gc2l6ZW9mKGNfdm9pZF9wKToKICAgIGNfc2l6ZV90ID0gY191bG9uZwogICAgY19zc2l6ZV90ID0gY19sb25nCmVsaWYgc2l6ZW9mKGNfdWxvbmdsb25nKSA9PSBzaXplb2YoY192b2lkX3ApOgogICAgY19zaXplX3QgPSBjX3Vsb25nbG9uZwogICAgY19zc2l6ZV90ID0gY19sb25nbG9uZwoKIyBmdW5jdGlvbnMKCmZyb20gX2N0eXBlcyBpbXBvcnQgX21lbW1vdmVfYWRkciwgX21lbXNldF9hZGRyLCBfc3RyaW5nX2F0X2FkZHIsIF9jYXN0X2FkZHIKCiMjIHZvaWQgKm1lbW1vdmUodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7Cm1lbW1vdmUgPSBDRlVOQ1RZUEUoY192b2lkX3AsIGNfdm9pZF9wLCBjX3ZvaWRfcCwgY19zaXplX3QpKF9tZW1tb3ZlX2FkZHIpCgojIyB2b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCkKbWVtc2V0ID0gQ0ZVTkNUWVBFKGNfdm9pZF9wLCBjX3ZvaWRfcCwgY19pbnQsIGNfc2l6ZV90KShfbWVtc2V0X2FkZHIpCgpkZWYgUFlGVU5DVFlQRShyZXN0eXBlLCAqYXJndHlwZXMpOgogICAgY2xhc3MgQ0Z1bmN0aW9uVHlwZShfQ0Z1bmNQdHIpOgogICAgICAgIF9hcmd0eXBlc18gPSBhcmd0eXBlcwogICAgICAgIF9yZXN0eXBlXyA9IHJlc3R5cGUKICAgICAgICBfZmxhZ3NfID0gX0ZVTkNGTEFHX0NERUNMIHwgX0ZVTkNGTEFHX1BZVEhPTkFQSQogICAgcmV0dXJuIENGdW5jdGlvblR5cGUKCl9jYXN0ID0gUFlGVU5DVFlQRShweV9vYmplY3QsIGNfdm9pZF9wLCBweV9vYmplY3QsIHB5X29iamVjdCkoX2Nhc3RfYWRkcikKZGVmIGNhc3Qob2JqLCB0eXApOgogICAgcmV0dXJuIF9jYXN0KG9iaiwgb2JqLCB0eXApCgpfc3RyaW5nX2F0ID0gUFlGVU5DVFlQRShweV9vYmplY3QsIGNfdm9pZF9wLCBjX2ludCkoX3N0cmluZ19hdF9hZGRyKQpkZWYgc3RyaW5nX2F0KHB0ciwgc2l6ZT0tMSk6CiAgICAiIiJzdHJpbmdfYXQoYWRkclssIHNpemVdKSAtPiBzdHJpbmcKCiAgICBSZXR1cm4gdGhlIHN0cmluZyBhdCBhZGRyLiIiIgogICAgcmV0dXJuIF9zdHJpbmdfYXQocHRyLCBzaXplKQoKdHJ5OgogICAgZnJvbSBfY3R5cGVzIGltcG9ydCBfd3N0cmluZ19hdF9hZGRyCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgIF93c3RyaW5nX2F0ID0gUFlGVU5DVFlQRShweV9vYmplY3QsIGNfdm9pZF9wLCBjX2ludCkoX3dzdHJpbmdfYXRfYWRkcikKICAgIGRlZiB3c3RyaW5nX2F0KHB0ciwgc2l6ZT0tMSk6CiAgICAgICAgIiIid3N0cmluZ19hdChhZGRyWywgc2l6ZV0pIC0+IHN0cmluZwoKICAgICAgICBSZXR1cm4gdGhlIHN0cmluZyBhdCBhZGRyLiIiIgogICAgICAgIHJldHVybiBfd3N0cmluZ19hdChwdHIsIHNpemUpCgoKaWYgX29zLm5hbWUgPT0gIm50IjogIyBDT00gc3R1ZmYKICAgIGRlZiBEbGxHZXRDbGFzc09iamVjdChyY2xzaWQsIHJpaWQsIHBwdik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBjY29tID0gX19pbXBvcnRfXygiY29tdHlwZXMuc2VydmVyLmlucHJvY3NlcnZlciIsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnKiddKQogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIC0yMTQ3MjIxMjMxICMgQ0xBU1NfRV9DTEFTU05PVEFWQUlMQUJMRQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBjY29tLkRsbEdldENsYXNzT2JqZWN0KHJjbHNpZCwgcmlpZCwgcHB2KQoKICAgIGRlZiBEbGxDYW5VbmxvYWROb3coKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNjb20gPSBfX2ltcG9ydF9fKCJjb210eXBlcy5zZXJ2ZXIuaW5wcm9jc2VydmVyIiwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWycqJ10pCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICByZXR1cm4gMCAjIFNfT0sKICAgICAgICByZXR1cm4gY2NvbS5EbGxDYW5VbmxvYWROb3coKQoKZnJvbSBjdHlwZXMuX2VuZGlhbiBpbXBvcnQgQmlnRW5kaWFuU3RydWN0dXJlLCBMaXR0bGVFbmRpYW5TdHJ1Y3R1cmUKZnJvbSBjdHlwZXMuX2VuZGlhbiBpbXBvcnQgQmlnRW5kaWFuVW5pb24sIExpdHRsZUVuZGlhblVuaW9uCgojIEZpbGwgaW4gc3BlY2lmaWNhbGx5LXNpemVkIHR5cGVzCmNfaW50OCA9IGNfYnl0ZQpjX3VpbnQ4ID0gY191Ynl0ZQpmb3Iga2luZCBpbiBbY19zaG9ydCwgY19pbnQsIGNfbG9uZywgY19sb25nbG9uZ106CiAgICBpZiBzaXplb2Yoa2luZCkgPT0gMjogY19pbnQxNiA9IGtpbmQKICAgIGVsaWYgc2l6ZW9mKGtpbmQpID09IDQ6IGNfaW50MzIgPSBraW5kCiAgICBlbGlmIHNpemVvZihraW5kKSA9PSA4OiBjX2ludDY0ID0ga2luZApmb3Iga2luZCBpbiBbY191c2hvcnQsIGNfdWludCwgY191bG9uZywgY191bG9uZ2xvbmddOgogICAgaWYgc2l6ZW9mKGtpbmQpID09IDI6IGNfdWludDE2ID0ga2luZAogICAgZWxpZiBzaXplb2Yoa2luZCkgPT0gNDogY191aW50MzIgPSBraW5kCiAgICBlbGlmIHNpemVvZihraW5kKSA9PSA4OiBjX3VpbnQ2NCA9IGtpbmQKZGVsKGtpbmQpCgpfcmVzZXRfY2FjaGUoKQpQSwMEFAAAAAAAAiCjVk5/Wx4fMQAAHzEAAA4AAABjdHlwZXMvX2FpeC5weSIiIgpMaWIvY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkgc3VwcG9ydCBmb3IgQUlYClNpbWlsYXIgYXBwcm9hY2ggYXMgZG9uZSBmb3IgRGFyd2luIHN1cHBvcnQgYnkgdXNpbmcgc2VwYXJhdGUgZmlsZXMKYnV0IHVubGlrZSBEYXJ3aW4gLSBubyBleHRlbnNpb24gc3VjaCBhcyBjdHlwZXMubWFjaG9saWIuKgoKZGxvcGVuKCkgaXMgYW4gaW50ZXJmYWNlIHRvIEFJWCBpbml0QW5kTG9hZCgpIC0gcHJpbWFyeSBkb2N1bWVudGF0aW9uIGF0OgpodHRwczovL3d3dy5pYm0uY29tL3N1cHBvcnQva25vd2xlZGdlY2VudGVyL2VuL3Nzd19haXhfNjEvY29tLmlibS5haXguYmFzZXRyZjEvZGxvcGVuLmh0bQpodHRwczovL3d3dy5pYm0uY29tL3N1cHBvcnQva25vd2xlZGdlY2VudGVyL2VuL3Nzd19haXhfNjEvY29tLmlibS5haXguYmFzZXRyZjEvbG9hZC5odG0KCkFJWCBzdXBwb3J0cyB0d28gc3R5bGVzIGZvciBkbG9wZW4oKTogc3ZyNCAoU3lzdGVtIFYgUmVsZWFzZSA0KSB3aGljaCBpcyBjb21tb24gb24gcG9zaXgKcGxhdGZvcm1zLCBidXQgYWxzbyBhIEJTRCBzdHlsZSAtIGFrYSBTVlIzLgoKRnJvbSBBSVggNS4zIERpZmZlcmVuY2UgQWRkZW5kdW0gKERlY2VtYmVyIDIwMDQpCjIuOSBTVlI0IGxpbmtpbmcgYWZmaW5pdHkKTm93YWRheXMsIHRoZXJlIGFyZSB0d28gbWFqb3Igb2JqZWN0IGZpbGUgZm9ybWF0cyB1c2VkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtczoKWENPRkY6IFRoZSBDT0ZGIGVuaGFuY2VkIGJ5IElCTSBhbmQgb3RoZXJzLiBUaGUgb3JpZ2luYWwgQ09GRiAoQ29tbW9uCk9iamVjdCBGaWxlIEZvcm1hdCkgd2FzIHRoZSBiYXNlIG9mIFNWUjMgYW5kIEJTRCA0LjIgc3lzdGVtcy4KRUxGOiAgIEV4ZWN1dGFibGUgYW5kIExpbmtpbmcgRm9ybWF0IHRoYXQgd2FzIGRldmVsb3BlZCBieSBBVCZUIGFuZCBpcyBhCmJhc2UgZm9yIFNWUjQgVU5JWC4KCldoaWxlIHRoZSBzaGFyZWQgbGlicmFyeSBjb250ZW50IGlzIGlkZW50aWNhbCBvbiBBSVggLSBvbmUgaXMgbG9jYXRlZCBhcyBhIGZpbGVwYXRoIG5hbWUKKHN2cjQgc3R5bGUpIGFuZCB0aGUgb3RoZXIgaXMgbG9jYXRlZCBhcyBhIG1lbWJlciBvZiBhbiBhcmNoaXZlIChhbmQgdGhlIGFyY2hpdmUKaXMgbG9jYXRlZCBhcyBhIGZpbGVwYXRoIG5hbWUpLgoKVGhlIGtleSBkaWZmZXJlbmNlIGFyaXNlcyB3aGVuIHN1cHBvcnRpbmcgbXVsdGlwbGUgYWJpIGZvcm1hdHMgKGkuZS4sIDMyIGFuZCA2NCBiaXQpLgpGb3Igc3ZyNCBlaXRoZXIgb25seSBvbmUgQUJJIGlzIHN1cHBvcnRlZCwgb3IgdGhlcmUgYXJlIHR3byBkaXJlY3Rvcmllcywgb3IgdGhlcmUKYXJlIGRpZmZlcmVudCBmaWxlIG5hbWVzLiBUaGUgbW9zdCBjb21tb24gc29sdXRpb24gZm9yIG11bHRpcGxlIEFCSSBpcyBtdWx0aXBsZQpkaXJlY3Rvcmllcy4KCkZvciB0aGUgWENPRkYgKGFrYSBBSVgpIHN0eWxlIC0gb25lIGRpcmVjdG9yeSAob25lIGFyY2hpdmUgZmlsZSkgaXMgc3VmZmljaWVudAphcyBtdWx0aXBsZSBzaGFyZWQgbGlicmFyaWVzIGNhbiBiZSBpbiB0aGUgYXJjaGl2ZSAtIGV2ZW4gc2hhcmluZyB0aGUgc2FtZSBuYW1lLgpJbiBkb2N1bWVudGF0aW9uIHRoZSBhcmNoaXZlIGlzIGFsc28gcmVmZXJyZWQgdG8gYXMgdGhlICJiYXNlIiBhbmQgdGhlIHNoYXJlZApsaWJyYXJ5IG9iamVjdCBpcyByZWZlcnJlZCB0byBhcyB0aGUgIm1lbWJlciIuCgpGb3IgZGxvcGVuKCkgb24gQUlYIChyZWFkIGluaXRBbmRMb2FkKCkpIHRoZSBjYWxscyBhcmUgc2ltaWxhci4KRGVmYXVsdCBhY3Rpdml0eSBvY2N1cnMgd2hlbiBubyBwYXRoIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkLiBXaGVuIHBhdGgKaW5mb3JtYXRpb24gaXMgcHJvdmlkZWQgZGxvcGVuKCkgZG9lcyBub3Qgc2VhcmNoIGFueSBvdGhlciBkaXJlY3Rvcmllcy4KCkZvciBTVlI0IC0gdGhlIHNoYXJlZCBsaWJyYXJ5IG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZXhwZWN0ZWQ6IGxpYkZPTy5zbwpGb3IgQUlYIC0gdGhlIHNoYXJlZCBsaWJyYXJ5IGlzIGV4cHJlc3NlZCBhcyBiYXNlKG1lbWJlcikuIFRoZSBzZWFyY2ggaXMgZm9yIHRoZQpiYXNlIChlLmcuLCBsaWJGT08uYSkgYW5kIG9uY2UgdGhlIGJhc2UgaXMgZm91bmQgdGhlIHNoYXJlZCBsaWJyYXJ5IC0gaWRlbnRpZmllZCBieQptZW1iZXIgKGUuZy4sIGxpYkZPTy5zbywgb3Igc2hyLm8pIGlzIGxvY2F0ZWQgYW5kIGxvYWRlZC4KClRoZSBtb2RlIGJpdCBSVExEX01FTUJFUiB0ZWxscyBpbml0QW5kTG9hZCgpIHRoYXQgaXQgbmVlZHMgdG8gdXNlIHRoZSBBSVggKFNWUjMpCm5hbWluZyBzdHlsZS4KIiIiCl9fYXV0aG9yX18gPSAiTWljaGFlbCBGZWx0IDxhaXh0b29sc0BmZWx0LmRlbW9uLm5sPiIKCmltcG9ydCByZQpmcm9tIG9zIGltcG9ydCBlbnZpcm9uLCBwYXRoCmZyb20gc3lzIGltcG9ydCBleGVjdXRhYmxlCmZyb20gY3R5cGVzIGltcG9ydCBjX3ZvaWRfcCwgc2l6ZW9mCmZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUsIERFVk5VTEwKCiMgRXhlY3V0YWJsZSBiaXQgc2l6ZSAtIDMyIG9yIDY0CiMgVXNlZCB0byBmaWx0ZXIgdGhlIHNlYXJjaCBpbiBhbiBhcmNoaXZlIGJ5IHNpemUsIGUuZy4sIC1YNjQKQUlYX0FCSSA9IHNpemVvZihjX3ZvaWRfcCkgKiA4CgoKZnJvbSBzeXMgaW1wb3J0IG1heHNpemUKZGVmIF9sYXN0X3ZlcnNpb24obGlibmFtZXMsIHNlcCk6CiAgICBkZWYgX251bV92ZXJzaW9uKGxpYm5hbWUpOgogICAgICAgICMgImxpYnh5ei5zby5NQUpPUi5NSU5PUiIgPT4gW01BSk9SLCBNSU5PUl0KICAgICAgICBwYXJ0cyA9IGxpYm5hbWUuc3BsaXQoc2VwKQogICAgICAgIG51bXMgPSBbXQogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgcGFydHM6CiAgICAgICAgICAgICAgICBudW1zLmluc2VydCgwLCBpbnQocGFydHMucG9wKCkpKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgcmV0dXJuIG51bXMgb3IgW21heHNpemVdCiAgICByZXR1cm4gbWF4KHJldmVyc2VkKGxpYm5hbWVzKSwga2V5PV9udW1fdmVyc2lvbikKCmRlZiBnZXRfbGRfaGVhZGVyKHApOgogICAgIyAibmVzdGVkLWZ1bmN0aW9uLCBidXQgcGxhY2VkIGF0IG1vZHVsZSBsZXZlbAogICAgbGRfaGVhZGVyID0gTm9uZQogICAgZm9yIGxpbmUgaW4gcC5zdGRvdXQ6CiAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCgnLycsICcuLycsICcuLi8nKSk6CiAgICAgICAgICAgIGxkX2hlYWRlciA9IGxpbmUKICAgICAgICBlbGlmICJJTkRFWCIgaW4gbGluZToKICAgICAgICAgICAgcmV0dXJuIGxkX2hlYWRlci5yc3RyaXAoJ1xuJykKICAgIHJldHVybiBOb25lCgpkZWYgZ2V0X2xkX2hlYWRlcl9pbmZvKHApOgogICAgIyAibmVzdGVkLWZ1bmN0aW9uLCBidXQgcGxhY2VkIGF0IG1vZHVsZSBsZXZlbAogICAgIyBhcyBhbiBsZF9oZWFkZXIgd2FzIGZvdW5kLCByZXR1cm4ga25vd24gcGF0aHMsIGFyY2hpdmVzIGFuZCBtZW1iZXJzCiAgICAjIHRoZXNlIGxpbmVzIHN0YXJ0IHdpdGggYSBkaWdpdAogICAgaW5mbyA9IFtdCiAgICBmb3IgbGluZSBpbiBwLnN0ZG91dDoKICAgICAgICBpZiByZS5tYXRjaCgiWzAtOV0iLCBsaW5lKToKICAgICAgICAgICAgaW5mby5hcHBlbmQobGluZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGJsYW5rIGxpbmUgKHNlcGFyYXRvciksIGNvbnN1bWUgbGluZSBhbmQgZW5kIGZvciBsb29wCiAgICAgICAgICAgIGJyZWFrCiAgICByZXR1cm4gaW5mbwoKZGVmIGdldF9sZF9oZWFkZXJzKGZpbGUpOgogICAgIiIiCiAgICBQYXJzZSB0aGUgaGVhZGVyIG9mIHRoZSBsb2FkZXIgc2VjdGlvbiBvZiBleGVjdXRhYmxlIGFuZCBhcmNoaXZlcwogICAgVGhpcyBmdW5jdGlvbiBjYWxscyAvdXNyL2Jpbi9kdW1wIC1IIGFzIGEgc3VicHJvY2VzcwogICAgYW5kIHJldHVybnMgYSBsaXN0IG9mIChsZF9oZWFkZXIsIGxkX2hlYWRlcl9pbmZvKSB0dXBsZXMuCiAgICAiIiIKICAgICMgZ2V0X2xkX2hlYWRlcnMgcGFyc2luZzoKICAgICMgMS4gRmluZCBhIGxpbmUgdGhhdCBzdGFydHMgd2l0aCAvLCAuLywgb3IgLi4vIC0gc2V0IGFzIGxkX2hlYWRlcgogICAgIyAyLiBJZiAiSU5ERVgiIGluIG9jY3VycyBpbiBhIGZvbGxvd2luZyBsaW5lIC0gcmV0dXJuIGxkX2hlYWRlcgogICAgIyAzLiBnZXQgaW5mbyAobGluZXMgc3RhcnRpbmcgd2l0aCBbMC05XSkKICAgIGxkcl9oZWFkZXJzID0gW10KICAgIHAgPSBQb3BlbihbIi91c3IvYmluL2R1bXAiLCBmIi1Ye0FJWF9BQkl9IiwgIi1IIiwgZmlsZV0sCiAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9REVWTlVMTCkKICAgICMgYmUgc3VyZSB0byByZWFkIHRvIHRoZSBlbmQtb2YtZmlsZSAtIGdldHRpbmcgYWxsIGVudHJpZXMKICAgIHdoaWxlIFRydWU6CiAgICAgICAgbGRfaGVhZGVyID0gZ2V0X2xkX2hlYWRlcihwKQogICAgICAgIGlmIGxkX2hlYWRlcjoKICAgICAgICAgICAgbGRyX2hlYWRlcnMuYXBwZW5kKChsZF9oZWFkZXIsIGdldF9sZF9oZWFkZXJfaW5mbyhwKSkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYnJlYWsKICAgIHAuc3Rkb3V0LmNsb3NlKCkKICAgIHAud2FpdCgpCiAgICByZXR1cm4gbGRyX2hlYWRlcnMKCmRlZiBnZXRfc2hhcmVkKGxkX2hlYWRlcnMpOgogICAgIiIiCiAgICBleHRyYWN0IHRoZSBzaGFyZWFibGUgb2JqZWN0cyBmcm9tIGxkX2hlYWRlcnMKICAgIGNoYXJhY3RlciAiWyIgaXMgdXNlZCB0byBzdHJpcCBvZmYgdGhlIHBhdGggaW5mb3JtYXRpb24uCiAgICBOb3RlOiB0aGUgIlsiIGFuZCAiXSIgY2hhcmFjdGVycyB0aGF0IGFyZSBwYXJ0IG9mIGR1bXAgLUggb3V0cHV0CiAgICBhcmUgbm90IHJlbW92ZWQgaGVyZS4KICAgICIiIgogICAgc2hhcmVkID0gW10KICAgIGZvciAobGluZSwgXykgaW4gbGRfaGVhZGVyczoKICAgICAgICAjIHBvdGVudGlhbCBtZW1iZXIgbGluZXMgY29udGFpbiAiWyIKICAgICAgICAjIG90aGVyd2lzZSwgbm8gcHJvY2Vzc2luZyBuZWVkZWQKICAgICAgICBpZiAiWyIgaW4gbGluZToKICAgICAgICAgICAgIyBTdHJpcCBvZmYgdHJhaWxpbmcgY29sb24gKDopCiAgICAgICAgICAgIHNoYXJlZC5hcHBlbmQobGluZVtsaW5lLmluZGV4KCJbIik6LTFdKQogICAgcmV0dXJuIHNoYXJlZAoKZGVmIGdldF9vbmVfbWF0Y2goZXhwciwgbGluZXMpOgogICAgIiIiCiAgICBNdXN0IGJlIG9ubHkgb25lIG1hdGNoLCBvdGhlcndpc2UgcmVzdWx0IGlzIE5vbmUuCiAgICBXaGVuIHRoZXJlIGlzIGEgbWF0Y2gsIHN0cmlwIGxlYWRpbmcgIlsiIGFuZCB0cmFpbGluZyAiXSIKICAgICIiIgogICAgIyBtZW1iZXIgbmFtZXMgaW4gdGhlIGxkX2hlYWRlcnMgb3V0cHV0IGFyZSBiZXR3ZWVuIHNxdWFyZSBicmFja2V0cwogICAgZXhwciA9IHJmJ1xbKHtleHByfSlcXScKICAgIG1hdGNoZXMgPSBsaXN0KGZpbHRlcihOb25lLCAocmUuc2VhcmNoKGV4cHIsIGxpbmUpIGZvciBsaW5lIGluIGxpbmVzKSkpCiAgICBpZiBsZW4obWF0Y2hlcykgPT0gMToKICAgICAgICByZXR1cm4gbWF0Y2hlc1swXS5ncm91cCgxKQogICAgZWxzZToKICAgICAgICByZXR1cm4gTm9uZQoKIyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgdG8gZGVhbCB3aXRoIEFJWCBsZWdhY3kgbmFtZXMgZm9yIDY0LWJpdCBtZW1iZXJzCmRlZiBnZXRfbGVnYWN5KG1lbWJlcnMpOgogICAgIiIiCiAgICBUaGlzIHJvdXRpbmUgcHJvdmlkZXMgaGlzdG9yaWNhbCBha2EgbGVnYWN5IG5hbWluZyBzY2hlbWVzIHN0YXJ0ZWQKICAgIGluIEFJWDQgc2hhcmVkIGxpYnJhcnkgc3VwcG9ydCBmb3IgbGlicmFyeSBtZW1iZXJzIG5hbWVzLgogICAgZS5nLiwgaW4gL3Vzci9saWIvbGliYy5hIHRoZSBtZW1iZXIgbmFtZSBzaHIubyBmb3IgMzItYml0IGJpbmFyeSBhbmQKICAgIHNocl82NC5vIGZvciA2NC1iaXQgYmluYXJ5LgogICAgIiIiCiAgICBpZiBBSVhfQUJJID09IDY0OgogICAgICAgICMgQUlYIDY0LWJpdCBtZW1iZXIgaXMgb25lIG9mIHNocjY0Lm8sIHNocl82NC5vLCBvciBzaHI0XzY0Lm8KICAgICAgICBleHByID0gcidzaHI0P18/NjRcLm8nCiAgICAgICAgbWVtYmVyID0gZ2V0X29uZV9tYXRjaChleHByLCBtZW1iZXJzKQogICAgICAgIGlmIG1lbWJlcjoKICAgICAgICAgICAgcmV0dXJuIG1lbWJlcgogICAgZWxzZToKICAgICAgICAjIDMyLWJpdCBsZWdhY3kgbmFtZXMgLSBib3RoIHNoci5vIGFuZCBzaHI0Lm8gZXhpc3QuCiAgICAgICAgIyBzaHIubyBpcyB0aGUgcHJlZmVycmVkIG5hbWUgc28gd2UgbG9vayBmb3Igc2hyLm8gZmlyc3QKICAgICAgICAjICBpLmUuLCBzaHI0Lm8gaXMgcmV0dXJuZWQgb25seSB3aGVuIHNoci5vIGRvZXMgbm90IGV4aXN0CiAgICAgICAgZm9yIG5hbWUgaW4gWydzaHIubycsICdzaHI0Lm8nXToKICAgICAgICAgICAgbWVtYmVyID0gZ2V0X29uZV9tYXRjaChyZS5lc2NhcGUobmFtZSksIG1lbWJlcnMpCiAgICAgICAgICAgIGlmIG1lbWJlcjoKICAgICAgICAgICAgICAgIHJldHVybiBtZW1iZXIKICAgIHJldHVybiBOb25lCgpkZWYgZ2V0X3ZlcnNpb24obmFtZSwgbWVtYmVycyk6CiAgICAiIiIKICAgIFNvcnQgbGlzdCBvZiBtZW1iZXJzIGFuZCByZXR1cm4gaGlnaGVzdCBudW1iZXJlZCB2ZXJzaW9uIC0gaWYgaXQgZXhpc3RzLgogICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhbiB1bnZlcnNpb25lZCBsaWJGT08uYShsaWJGT08uc28pIGhhcwogICAgbm90IGJlZW4gZm91bmQuCgogICAgVmVyc2lvbmluZyBmb3IgdGhlIG1lbWJlciBuYW1lIGlzIGV4cGVjdGVkIHRvIGZvbGxvdwogICAgR05VIExJQlRPT0wgY29udmVudGlvbnM6IHRoZSBoaWdoZXN0IHZlcnNpb24gKHgsIHRoZW4gWC55LCB0aGVuIFguWS56KQogICAgICogZmluZCBbbGliRm9vLnNvLlhdCiAgICAgKiBmaW5kIFtsaWJGb28uc28uWC5ZXQogICAgICogZmluZCBbbGliRm9vLnNvLlguWS5aXQoKICAgIEJlZm9yZSB0aGUgR05VIGNvbnZlbnRpb24gYmVjYW1lIHRoZSBzdGFuZGFyZCBzY2hlbWUgcmVnYXJkbGVzcyBvZgogICAgYmluYXJ5IHNpemUgQUlYIHBhY2thZ2VycyB1c2VkIEdOVSBjb252ZW50aW9uICJhcy1pcyIgZm9yIDMyLWJpdAogICAgYXJjaGl2ZSBtZW1iZXJzIGJ1dCB1c2VkIGFuICJkaXN0aW5ndWlzaGluZyIgbmFtZSBmb3IgNjQtYml0IG1lbWJlcnMuCiAgICBUaGlzIHNjaGVtZSBpbnNlcnRlZCBlaXRoZXIgNjQgb3IgXzY0IGJldHdlZW4gbGliRk9PIGFuZCAuc28KICAgIC0gZ2VuZXJhbGx5IGxpYkZPT182NC5zbywgYnV0IG9jY2FzaW9uYWxseSBsaWJGT082NC5zbwogICAgIiIiCiAgICAjIHRoZSBleHByZXNzaW9uIGVuZGluZyBmb3IgdmVyc2lvbnMgbXVzdCBzdGFydCBhcwogICAgIyAnLnNvLlswLTldJywgaS5lLiwgKi5zby5bYXQgbGVhc3Qgb25lIGRpZ2l0XQogICAgIyB3aGlsZSBtdWx0aXBsZSwgbW9yZSBzcGVjaWZpYyBleHByZXNzaW9ucyBjb3VsZCBiZSBzcGVjaWZpZWQKICAgICMgdG8gc2VhcmNoIGZvciAuc28uWCwgLnNvLlguWSBhbmQgLnNvLlguWS5aCiAgICAjIGFmdGVyIHRoZSBmaXJzdCByZXF1aXJlZCAnZG90JyBkaWdpdAogICAgIyBhbnkgY29tYmluYXRpb24gb2YgYWRkaXRpb25hbCAnZG90JyBkaWdpdHMgcGFpcnMgYXJlIGFjY2VwdGVkCiAgICAjIGFueXRoaW5nIG1vcmUgdGhhbiBsaWJGT08uc28uZGlnaXRzLmRpZ2l0cy5kaWdpdHMKICAgICMgc2hvdWxkIGJlIHNlZW4gYXMgYSBtZW1iZXIgbmFtZSBvdXRzaWRlIG5vcm1hbCBleHBlY3RhdGlvbnMKICAgIGV4cHJzID0gW3JmJ2xpYntuYW1lfVwuc29cLlswLTldK1swLTkuXSonLAogICAgICAgIHJmJ2xpYntuYW1lfV8/NjRcLnNvXC5bMC05XStbMC05Ll0qJ10KICAgIGZvciBleHByIGluIGV4cHJzOgogICAgICAgIHZlcnNpb25zID0gW10KICAgICAgICBmb3IgbGluZSBpbiBtZW1iZXJzOgogICAgICAgICAgICBtID0gcmUuc2VhcmNoKGV4cHIsIGxpbmUpCiAgICAgICAgICAgIGlmIG06CiAgICAgICAgICAgICAgICB2ZXJzaW9ucy5hcHBlbmQobS5ncm91cCgwKSkKICAgICAgICBpZiB2ZXJzaW9uczoKICAgICAgICAgICAgcmV0dXJuIF9sYXN0X3ZlcnNpb24odmVyc2lvbnMsICcuJykKICAgIHJldHVybiBOb25lCgpkZWYgZ2V0X21lbWJlcihuYW1lLCBtZW1iZXJzKToKICAgICIiIgogICAgUmV0dXJuIGFuIGFyY2hpdmUgbWVtYmVyIG1hdGNoaW5nIHRoZSByZXF1ZXN0IGluIG5hbWUuCiAgICBOYW1lIGlzIHRoZSBsaWJyYXJ5IG5hbWUgd2l0aG91dCBhbnkgcHJlZml4IGxpa2UgbGliLCBzdWZmaXggbGlrZSAuc28sCiAgICBvciB2ZXJzaW9uIG51bWJlci4KICAgIEdpdmVuIGEgbGlzdCBvZiBtZW1iZXJzIGZpbmQgYW5kIHJldHVybiB0aGUgbW9zdCBhcHByb3ByaWF0ZSByZXN1bHQKICAgIFByaW9yaXR5IGlzIGdpdmVuIHRvIGdlbmVyaWMgbGliWFhYLnNvLCB0aGVuIGEgdmVyc2lvbmVkIGxpYlhYWC5zby5hLmIuYwogICAgYW5kIGZpbmFsbHksIGxlZ2FjeSBBSVggbmFtaW5nIHNjaGVtZS4KICAgICIiIgogICAgIyBsb29rIGZpcnN0IGZvciBhIGdlbmVyaWMgbWF0Y2ggLSBwcmVwZW5kIGxpYiBhbmQgYXBwZW5kIC5zbwogICAgZXhwciA9IHJmJ2xpYntuYW1lfVwuc28nCiAgICBtZW1iZXIgPSBnZXRfb25lX21hdGNoKGV4cHIsIG1lbWJlcnMpCiAgICBpZiBtZW1iZXI6CiAgICAgICAgcmV0dXJuIG1lbWJlcgogICAgZWxpZiBBSVhfQUJJID09IDY0OgogICAgICAgIGV4cHIgPSByZidsaWJ7bmFtZX02NFwuc28nCiAgICAgICAgbWVtYmVyID0gZ2V0X29uZV9tYXRjaChleHByLCBtZW1iZXJzKQogICAgaWYgbWVtYmVyOgogICAgICAgIHJldHVybiBtZW1iZXIKICAgICMgc2luY2UgYW4gZXhhY3QgbWF0Y2ggd2l0aCAuc28gYXMgc3VmZml4IHdhcyBub3QgZm91bmQKICAgICMgbG9vayBmb3IgYSB2ZXJzaW9uZWQgbmFtZQogICAgIyBJZiBhIHZlcnNpb25lZCBuYW1lIGlzIG5vdCBmb3VuZCwgbG9vayBmb3IgQUlYIGxlZ2FjeSBtZW1iZXIgbmFtZQogICAgbWVtYmVyID0gZ2V0X3ZlcnNpb24obmFtZSwgbWVtYmVycykKICAgIGlmIG1lbWJlcjoKICAgICAgICByZXR1cm4gbWVtYmVyCiAgICBlbHNlOgogICAgICAgIHJldHVybiBnZXRfbGVnYWN5KG1lbWJlcnMpCgpkZWYgZ2V0X2xpYnBhdGhzKCk6CiAgICAiIiIKICAgIE9uIEFJWCwgdGhlIGJ1aWxkdGltZSBzZWFyY2hwYXRoIGlzIHN0b3JlZCBpbiB0aGUgZXhlY3V0YWJsZS4KICAgIGFzICJsb2FkZXIgaGVhZGVyIGluZm9ybWF0aW9uIi4KICAgIFRoZSBjb21tYW5kIC91c3IvYmluL2R1bXAgLUggZXh0cmFjdHMgdGhpcyBpbmZvLgogICAgUHJlZml4IHNlYXJjaGVkIGxpYnJhcmllcyB3aXRoIExEX0xJQlJBUllfUEFUSCAocHJlZmVycmVkKSwKICAgIG9yIExJQlBBVEggaWYgZGVmaW5lZC4gVGhlc2UgcGF0aHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBwYXRocwogICAgdG8gbGlicmFyaWVzIHRoZSBweXRob24gZXhlY3V0YWJsZSBpcyBsaW5rZWQgd2l0aC4KICAgIFRoaXMgbWltaWNzIEFJWCBkbG9wZW4oKSBiZWhhdmlvci4KICAgICIiIgogICAgbGlicGF0aHMgPSBlbnZpcm9uLmdldCgiTERfTElCUkFSWV9QQVRIIikKICAgIGlmIGxpYnBhdGhzIGlzIE5vbmU6CiAgICAgICAgbGlicGF0aHMgPSBlbnZpcm9uLmdldCgiTElCUEFUSCIpCiAgICBpZiBsaWJwYXRocyBpcyBOb25lOgogICAgICAgIGxpYnBhdGhzID0gW10KICAgIGVsc2U6CiAgICAgICAgbGlicGF0aHMgPSBsaWJwYXRocy5zcGxpdCgiOiIpCiAgICBvYmplY3RzID0gZ2V0X2xkX2hlYWRlcnMoZXhlY3V0YWJsZSkKICAgIGZvciAoXywgbGluZXMpIGluIG9iamVjdHM6CiAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgICAgICMgdGhlIHNlY29uZCAob3B0aW9uYWwpIGFyZ3VtZW50IGlzIFBBVEggaWYgaXQgaW5jbHVkZXMgYSAvCiAgICAgICAgICAgIHBhdGggPSBsaW5lLnNwbGl0KClbMV0KICAgICAgICAgICAgaWYgIi8iIGluIHBhdGg6CiAgICAgICAgICAgICAgICBsaWJwYXRocy5leHRlbmQocGF0aC5zcGxpdCgiOiIpKQogICAgcmV0dXJuIGxpYnBhdGhzCgpkZWYgZmluZF9zaGFyZWQocGF0aHMsIG5hbWUpOgogICAgIiIiCiAgICBwYXRocyBpcyBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBhbiBhcmNoaXZlLgogICAgbmFtZSBpcyB0aGUgYWJicmV2aWF0ZWQgbmFtZSBnaXZlbiB0byBmaW5kX2xpYnJhcnkoKS4KICAgIFByb2Nlc3M6IHNlYXJjaCAicGF0aHMiIGZvciBhcmNoaXZlLCBhbmQgaWYgYW4gYXJjaGl2ZSBpcyBmb3VuZAogICAgcmV0dXJuIHRoZSByZXN1bHQgb2YgZ2V0X21lbWJlcigpLgogICAgSWYgYW4gYXJjaGl2ZSBpcyBub3QgZm91bmQgdGhlbiByZXR1cm4gTm9uZQogICAgIiIiCiAgICBmb3IgZGlyIGluIHBhdGhzOgogICAgICAgICMgL2xpYiBpcyBhIHN5bWJvbGljIGxpbmsgdG8gL3Vzci9saWIsIHNraXAgaXQKICAgICAgICBpZiBkaXIgPT0gIi9saWIiOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgICMgImxpYiIgaXMgcHJlZml4ZWQgdG8gZW11bGF0ZSBjb21waWxlciBuYW1lIHJlc29sdXRpb24sCiAgICAgICAgIyBlLmcuLCAtbGMgdG8gbGliYwogICAgICAgIGJhc2UgPSBmJ2xpYntuYW1lfS5hJwogICAgICAgIGFyY2hpdmUgPSBwYXRoLmpvaW4oZGlyLCBiYXNlKQogICAgICAgIGlmIHBhdGguZXhpc3RzKGFyY2hpdmUpOgogICAgICAgICAgICBtZW1iZXJzID0gZ2V0X3NoYXJlZChnZXRfbGRfaGVhZGVycyhhcmNoaXZlKSkKICAgICAgICAgICAgbWVtYmVyID0gZ2V0X21lbWJlcihyZS5lc2NhcGUobmFtZSksIG1lbWJlcnMpCiAgICAgICAgICAgIGlmIG1lbWJlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiAoYmFzZSwgbWVtYmVyKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lKQogICAgcmV0dXJuIChOb25lLCBOb25lKQoKZGVmIGZpbmRfbGlicmFyeShuYW1lKToKICAgICIiIkFJWCBpbXBsZW1lbnRhdGlvbiBvZiBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKQogICAgRmluZCBhbiBhcmNoaXZlIG1lbWJlciB0aGF0IHdpbGwgZGxvcGVuKCkuIElmIG5vdCBhdmFpbGFibGUsCiAgICBhbHNvIHNlYXJjaCBmb3IgYSBmaWxlIChvciBsaW5rKSB3aXRoIGEgLnNvIHN1ZmZpeC4KCiAgICBBSVggc3VwcG9ydHMgdHdvIHR5cGVzIG9mIHNjaGVtZXMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIGRsb3BlbigpLgogICAgVGhlIHNvLWNhbGxlZCBTeXN0ZW1WIFJlbGVhc2U0IChzdnI0KSBmb3JtYXQgaXMgY29tbW9ubHkgc3VmZml4ZWQKICAgIHdpdGggLnNvIHdoaWxlIHRoZSAoZGVmYXVsdCkgQUlYIHNjaGVtZSBoYXMgdGhlIGxpYnJhcnkgKGFyY2hpdmUpCiAgICBlbmRpbmcgd2l0aCB0aGUgc3VmZml4IC5hCiAgICBBcyBhbiBhcmNoaXZlIGhhcyBtdWx0aXBsZSBtZW1iZXJzIChlLmcuLCAzMi1iaXQgYW5kIDY0LWJpdCkgaW4gb25lIGZpbGUKICAgIHRoZSBhcmd1bWVudCBwYXNzZWQgdG8gZGxvcGVuIG11c3QgaW5jbHVkZSBib3RoIHRoZSBsaWJyYXJ5IGFuZAogICAgdGhlIG1lbWJlciBuYW1lcyBpbiBhIHNpbmdsZSBzdHJpbmcuCgogICAgZmluZF9saWJyYXJ5KCkgbG9va3MgZmlyc3QgZm9yIGFuIGFyY2hpdmUgKC5hKSB3aXRoIGEgc3VpdGFibGUgbWVtYmVyLgogICAgSWYgbm8gYXJjaGl2ZSttZW1iZXIgcGFpciBpcyBmb3VuZCwgbG9vayBmb3IgYSAuc28gZmlsZS4KICAgICIiIgoKICAgIGxpYnBhdGhzID0gZ2V0X2xpYnBhdGhzKCkKICAgIChiYXNlLCBtZW1iZXIpID0gZmluZF9zaGFyZWQobGlicGF0aHMsIG5hbWUpCiAgICBpZiBiYXNlIGlzIG5vdCBOb25lOgogICAgICAgIHJldHVybiBmIntiYXNlfSh7bWVtYmVyfSkiCgogICAgIyBUbyBnZXQgaGVyZSwgYSBtZW1iZXIgaW4gYW4gYXJjaGl2ZSBoYXMgbm90IGJlZW4gZm91bmQKICAgICMgSW4gb3RoZXIgd29yZHMsIGVpdGhlcjoKICAgICMgYSkgYSAuYSBmaWxlIHdhcyBub3QgZm91bmQKICAgICMgYikgYSAuYSBmaWxlIGRpZCBub3QgaGF2ZSBhIHN1aXRhYmxlIG1lbWJlcgogICAgIyBTbywgbG9vayBmb3IgYSAuc28gZmlsZQogICAgIyBDaGVjayBsaWJwYXRocyBmb3IgLnNvIGZpbGUKICAgICMgTm90ZSwgdGhlIGluc3RhbGxhdGlvbiBtdXN0IHByZXBhcmUgYSBsaW5rIGZyb20gYSAuc28KICAgICMgdG8gYSB2ZXJzaW9uZWQgZmlsZQogICAgIyBUaGlzIGlzIGNvbW1vbiBwcmFjdGljZSBieSBHTlUgbGlidG9vbCBvbiBvdGhlciBwbGF0Zm9ybXMKICAgIHNvbmFtZSA9IGYibGlie25hbWV9LnNvIgogICAgZm9yIGRpciBpbiBsaWJwYXRoczoKICAgICAgICAjIC9saWIgaXMgYSBzeW1ib2xpYyBsaW5rIHRvIC91c3IvbGliLCBza2lwIGl0CiAgICAgICAgaWYgZGlyID09ICIvbGliIjoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBzaGxpYiA9IHBhdGguam9pbihkaXIsIHNvbmFtZSkKICAgICAgICBpZiBwYXRoLmV4aXN0cyhzaGxpYik6CiAgICAgICAgICAgIHJldHVybiBzb25hbWUKICAgICMgaWYgd2UgYXJlIGhlcmUsIHdlIGhhdmUgbm90IGZvdW5kIGFueXRoaW5nIHBsYXVzaWJsZQogICAgcmV0dXJuIE5vbmUKUEsDBBQAAAAAAAIgo1YOG5Xn1gkAANYJAAARAAAAY3R5cGVzL19lbmRpYW4ucHlpbXBvcnQgc3lzCmZyb20gY3R5cGVzIGltcG9ydCAqCgpfYXJyYXlfdHlwZSA9IHR5cGUoQXJyYXkpCgpkZWYgX290aGVyX2VuZGlhbih0eXApOgogICAgIiIiUmV0dXJuIHRoZSB0eXBlIHdpdGggdGhlICdvdGhlcicgYnl0ZSBvcmRlci4gIFNpbXBsZSB0eXBlcyBsaWtlCiAgICBjX2ludCBhbmQgc28gb24gYWxyZWFkeSBoYXZlIF9fY3R5cGVfYmVfXyBhbmQgX19jdHlwZV9sZV9fCiAgICBhdHRyaWJ1dGVzIHdoaWNoIGNvbnRhaW4gdGhlIHR5cGVzLCBmb3IgbW9yZSBjb21wbGljYXRlZCB0eXBlcwogICAgYXJyYXlzIGFuZCBzdHJ1Y3R1cmVzIGFyZSBzdXBwb3J0ZWQuCiAgICAiIiIKICAgICMgY2hlY2sgX09USEVSX0VORElBTiBhdHRyaWJ1dGUgKHByZXNlbnQgaWYgdHlwIGlzIHByaW1pdGl2ZSB0eXBlKQogICAgaWYgaGFzYXR0cih0eXAsIF9PVEhFUl9FTkRJQU4pOgogICAgICAgIHJldHVybiBnZXRhdHRyKHR5cCwgX09USEVSX0VORElBTikKICAgICMgaWYgdHlwIGlzIGFycmF5CiAgICBpZiBpc2luc3RhbmNlKHR5cCwgX2FycmF5X3R5cGUpOgogICAgICAgIHJldHVybiBfb3RoZXJfZW5kaWFuKHR5cC5fdHlwZV8pICogdHlwLl9sZW5ndGhfCiAgICAjIGlmIHR5cCBpcyBzdHJ1Y3R1cmUKICAgIGlmIGlzc3ViY2xhc3ModHlwLCBTdHJ1Y3R1cmUpOgogICAgICAgIHJldHVybiB0eXAKICAgIHJhaXNlIFR5cGVFcnJvcigiVGhpcyB0eXBlIGRvZXMgbm90IHN1cHBvcnQgb3RoZXIgZW5kaWFuOiAlcyIgJSB0eXApCgpjbGFzcyBfc3dhcHBlZF9tZXRhOgogICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIGF0dHJuYW1lLCB2YWx1ZSk6CiAgICAgICAgaWYgYXR0cm5hbWUgPT0gIl9maWVsZHNfIjoKICAgICAgICAgICAgZmllbGRzID0gW10KICAgICAgICAgICAgZm9yIGRlc2MgaW4gdmFsdWU6CiAgICAgICAgICAgICAgICBuYW1lID0gZGVzY1swXQogICAgICAgICAgICAgICAgdHlwID0gZGVzY1sxXQogICAgICAgICAgICAgICAgcmVzdCA9IGRlc2NbMjpdCiAgICAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKChuYW1lLCBfb3RoZXJfZW5kaWFuKHR5cCkpICsgcmVzdCkKICAgICAgICAgICAgdmFsdWUgPSBmaWVsZHMKICAgICAgICBzdXBlcigpLl9fc2V0YXR0cl9fKGF0dHJuYW1lLCB2YWx1ZSkKY2xhc3MgX3N3YXBwZWRfc3RydWN0X21ldGEoX3N3YXBwZWRfbWV0YSwgdHlwZShTdHJ1Y3R1cmUpKTogcGFzcwpjbGFzcyBfc3dhcHBlZF91bmlvbl9tZXRhKF9zd2FwcGVkX21ldGEsIHR5cGUoVW5pb24pKTogcGFzcwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBOb3RlOiBUaGUgU3RydWN0dXJlIG1ldGFjbGFzcyBjaGVja3MgZm9yIHRoZSAqcHJlc2VuY2UqIChub3QgdGhlCiMgdmFsdWUhKSBvZiBhIF9zd2FwcGVkX2J5dGVzXyBhdHRyaWJ1dGUgdG8gZGV0ZXJtaW5lIHRoZSBiaXQgb3JkZXIgaW4KIyBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgYml0IGZpZWxkcy4KCmlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CiAgICBfT1RIRVJfRU5ESUFOID0gIl9fY3R5cGVfYmVfXyIKCiAgICBMaXR0bGVFbmRpYW5TdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmUKCiAgICBjbGFzcyBCaWdFbmRpYW5TdHJ1Y3R1cmUoU3RydWN0dXJlLCBtZXRhY2xhc3M9X3N3YXBwZWRfc3RydWN0X21ldGEpOgogICAgICAgICIiIlN0cnVjdHVyZSB3aXRoIGJpZyBlbmRpYW4gYnl0ZSBvcmRlciIiIgogICAgICAgIF9fc2xvdHNfXyA9ICgpCiAgICAgICAgX3N3YXBwZWRieXRlc18gPSBOb25lCgogICAgTGl0dGxlRW5kaWFuVW5pb24gPSBVbmlvbgoKICAgIGNsYXNzIEJpZ0VuZGlhblVuaW9uKFVuaW9uLCBtZXRhY2xhc3M9X3N3YXBwZWRfdW5pb25fbWV0YSk6CiAgICAgICAgIiIiVW5pb24gd2l0aCBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIiIiIKICAgICAgICBfX3Nsb3RzX18gPSAoKQogICAgICAgIF9zd2FwcGVkYnl0ZXNfID0gTm9uZQoKZWxpZiBzeXMuYnl0ZW9yZGVyID09ICJiaWciOgogICAgX09USEVSX0VORElBTiA9ICJfX2N0eXBlX2xlX18iCgogICAgQmlnRW5kaWFuU3RydWN0dXJlID0gU3RydWN0dXJlCgogICAgY2xhc3MgTGl0dGxlRW5kaWFuU3RydWN0dXJlKFN0cnVjdHVyZSwgbWV0YWNsYXNzPV9zd2FwcGVkX3N0cnVjdF9tZXRhKToKICAgICAgICAiIiJTdHJ1Y3R1cmUgd2l0aCBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIiIiIKICAgICAgICBfX3Nsb3RzX18gPSAoKQogICAgICAgIF9zd2FwcGVkYnl0ZXNfID0gTm9uZQoKICAgIEJpZ0VuZGlhblVuaW9uID0gVW5pb24KCiAgICBjbGFzcyBMaXR0bGVFbmRpYW5VbmlvbihVbmlvbiwgbWV0YWNsYXNzPV9zd2FwcGVkX3VuaW9uX21ldGEpOgogICAgICAgICIiIlVuaW9uIHdpdGggbGl0dGxlIGVuZGlhbiBieXRlIG9yZGVyIiIiCiAgICAgICAgX19zbG90c19fID0gKCkKICAgICAgICBfc3dhcHBlZGJ5dGVzXyA9IE5vbmUKCmVsc2U6CiAgICByYWlzZSBSdW50aW1lRXJyb3IoIkludmFsaWQgYnl0ZW9yZGVyIikKUEsDBBQAAAAAAAIgo1ZWCiuRGzkAABs5AAAOAAAAY3R5cGVzL3V0aWwucHlpbXBvcnQgb3MKaW1wb3J0IHNodXRpbAppbXBvcnQgc3VicHJvY2VzcwppbXBvcnQgc3lzCgojIGZpbmRfbGlicmFyeShuYW1lKSByZXR1cm5zIHRoZSBwYXRobmFtZSBvZiBhIGxpYnJhcnksIG9yIE5vbmUuCmlmIG9zLm5hbWUgPT0gIm50IjoKCiAgICBkZWYgX2dldF9idWlsZF92ZXJzaW9uKCk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSB2ZXJzaW9uIG9mIE1TVkMgdGhhdCB3YXMgdXNlZCB0byBidWlsZCBQeXRob24uCgogICAgICAgIEZvciBQeXRob24gMi4zIGFuZCB1cCwgdGhlIHZlcnNpb24gbnVtYmVyIGlzIGluY2x1ZGVkIGluCiAgICAgICAgc3lzLnZlcnNpb24uICBGb3IgZWFybGllciB2ZXJzaW9ucywgYXNzdW1lIHRoZSBjb21waWxlciBpcyBNU1ZDIDYuCiAgICAgICAgIiIiCiAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHdhcyBjb3BpZWQgZnJvbSBMaWIvZGlzdHV0aWxzL21zdmNjb21waWxlci5weQogICAgICAgIHByZWZpeCA9ICJNU0Mgdi4iCiAgICAgICAgaSA9IHN5cy52ZXJzaW9uLmZpbmQocHJlZml4KQogICAgICAgIGlmIGkgPT0gLTE6CiAgICAgICAgICAgIHJldHVybiA2CiAgICAgICAgaSA9IGkgKyBsZW4ocHJlZml4KQogICAgICAgIHMsIHJlc3QgPSBzeXMudmVyc2lvbltpOl0uc3BsaXQoIiAiLCAxKQogICAgICAgIG1ham9yVmVyc2lvbiA9IGludChzWzotMl0pIC0gNgogICAgICAgIGlmIG1ham9yVmVyc2lvbiA+PSAxMzoKICAgICAgICAgICAgbWFqb3JWZXJzaW9uICs9IDEKICAgICAgICBtaW5vclZlcnNpb24gPSBpbnQoc1syOjNdKSAvIDEwLjAKICAgICAgICAjIEkgZG9uJ3QgdGhpbmsgcGF0aHMgYXJlIGFmZmVjdGVkIGJ5IG1pbm9yIHZlcnNpb24gaW4gdmVyc2lvbiA2CiAgICAgICAgaWYgbWFqb3JWZXJzaW9uID09IDY6CiAgICAgICAgICAgIG1pbm9yVmVyc2lvbiA9IDAKICAgICAgICBpZiBtYWpvclZlcnNpb24gPj0gNjoKICAgICAgICAgICAgcmV0dXJuIG1ham9yVmVyc2lvbiArIG1pbm9yVmVyc2lvbgogICAgICAgICMgZWxzZSB3ZSBkb24ndCBrbm93IHdoYXQgdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgdGhpcyBpcwogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGZpbmRfbXN2Y3J0KCk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBWQyBydW50aW1lIGRsbCIiIgogICAgICAgIHZlcnNpb24gPSBfZ2V0X2J1aWxkX3ZlcnNpb24oKQogICAgICAgIGlmIHZlcnNpb24gaXMgTm9uZToKICAgICAgICAgICAgIyBiZXR0ZXIgYmUgc2FmZSB0aGFuIHNvcnJ5CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgaWYgdmVyc2lvbiA8PSA2OgogICAgICAgICAgICBjbGlibmFtZSA9ICdtc3ZjcnQnCiAgICAgICAgZWxpZiB2ZXJzaW9uIDw9IDEzOgogICAgICAgICAgICBjbGlibmFtZSA9ICdtc3ZjciVkJyAlICh2ZXJzaW9uICogMTApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBDUlQgaXMgbm8gbG9uZ2VyIGRpcmVjdGx5IGxvYWRhYmxlLiBTZWUgaXNzdWUyMzYwNiBmb3IgdGhlCiAgICAgICAgICAgICMgZGlzY3Vzc2lvbiBhYm91dCBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzLgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICAjIElmIHB5dGhvbiB3YXMgYnVpbHQgd2l0aCBpbiBkZWJ1ZyBtb2RlCiAgICAgICAgaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKICAgICAgICBpZiAnX2QucHlkJyBpbiBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgY2xpYm5hbWUgKz0gJ2QnCiAgICAgICAgcmV0dXJuIGNsaWJuYW1lKycuZGxsJwoKICAgIGRlZiBmaW5kX2xpYnJhcnkobmFtZSk6CiAgICAgICAgaWYgbmFtZSBpbiAoJ2MnLCAnbScpOgogICAgICAgICAgICByZXR1cm4gZmluZF9tc3ZjcnQoKQogICAgICAgICMgU2VlIE1TRE4gZm9yIHRoZSBSRUFMIHNlYXJjaCBvcmRlci4KICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG9zLmVudmlyb25bJ1BBVEgnXS5zcGxpdChvcy5wYXRoc2VwKToKICAgICAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBuYW1lKQogICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gZm5hbWUKICAgICAgICAgICAgaWYgZm5hbWUubG93ZXIoKS5lbmRzd2l0aCgiLmRsbCIpOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgZm5hbWUgPSBmbmFtZSArICIuZGxsIgogICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gZm5hbWUKICAgICAgICByZXR1cm4gTm9uZQoKZWxpZiBvcy5uYW1lID09ICJwb3NpeCIgYW5kIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgIGZyb20gY3R5cGVzLm1hY2hvbGliLmR5bGQgaW1wb3J0IGR5bGRfZmluZCBhcyBfZHlsZF9maW5kCiAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgogICAgICAgIHBvc3NpYmxlID0gWydsaWIlcy5keWxpYicgJSBuYW1lLAogICAgICAgICAgICAgICAgICAgICclcy5keWxpYicgJSBuYW1lLAogICAgICAgICAgICAgICAgICAgICclcy5mcmFtZXdvcmsvJXMnICUgKG5hbWUsIG5hbWUpXQogICAgICAgIGZvciBuYW1lIGluIHBvc3NpYmxlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gX2R5bGRfZmluZChuYW1lKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgcmV0dXJuIE5vbmUKCmVsaWYgb3MubmFtZSA9PSAicG9zaXgiIGFuZCBzeXMucGxhdGZvcm0gPT0gImVtc2NyaXB0ZW4iOgogICAgZGVmIF9pc193YXNtKGZpbGVuYW1lKToKICAgICAgICAjIFJldHVybiBUcnVlIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGFuIFdBU00gbW9kdWxlCiAgICAgICAgd2FzbV9oZWFkZXIgPSBiJ1x4MDBhc20nCiAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnYnInKSBhcyB0aGVmaWxlOgogICAgICAgICAgICByZXR1cm4gdGhlZmlsZS5yZWFkKDQpID09IHdhc21faGVhZGVyCgogICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKICAgICAgICBwb3NzaWJsZSA9IFsnbGliJXMuc28nICUgbmFtZSwKICAgICAgICAgICAgICAgICAgICAnbGliJXMud2FzbScgJSBuYW1lXQoKICAgICAgICBwYXRocyA9IG9zLmVudmlyb24uZ2V0KCdMRF9MSUJSQVJZX1BBVEgnLCAnJykKICAgICAgICBmb3IgZGlyIGluIHBhdGhzLnNwbGl0KCI6Iik6CiAgICAgICAgICAgIGZvciBuYW1lIGluIHBvc3NpYmxlOgogICAgICAgICAgICAgICAgbGliZmlsZSA9IG9zLnBhdGguam9pbihkaXIsIG5hbWUpCgogICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobGliZmlsZSk6CiAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9pc193YXNtKGxpYmZpbGUpOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGliZmlsZQoKICAgICAgICByZXR1cm4gTm9uZQoKZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiYWl4Iik6CiAgICAjIEFJWCBoYXMgdHdvIHN0eWxlcyBvZiBzdG9yaW5nIHNoYXJlZCBsaWJyYXJpZXMKICAgICMgR05VIGF1dG9fdG9vbHMgcmVmZXIgdG8gdGhlc2UgYXMgc3ZyNCBhbmQgYWl4CiAgICAjIHN2cjQgKFN5c3RlbSBWIFJlbGVhc2UgNCkgaXMgYSByZWd1bGFyIGZpbGUsIG9mdGVuIHdpdGggLnNvIGFzIHN1ZmZpeAogICAgIyBBSVggc3R5bGUgdXNlcyBhbiBhcmNoaXZlIChzdWZmaXggLmEpIHdpdGggbWVtYmVycyAoZS5nLiwgc2hyLm8sIGxpYnNzbC5zbykKICAgICMgc2VlIGlzc3VlIzI2NDM5IGFuZCBfYWl4LnB5IGZvciBtb3JlIGRldGFpbHMKCiAgICBmcm9tIGN0eXBlcy5fYWl4IGltcG9ydCBmaW5kX2xpYnJhcnkKCmVsaWYgb3MubmFtZSA9PSAicG9zaXgiOgogICAgIyBBbmRyZWFzIERlZ2VydCdzIGZpbmQgZnVuY3Rpb25zLCB1c2luZyBnY2MsIC9zYmluL2xkY29uZmlnLCBvYmpkdW1wCiAgICBpbXBvcnQgcmUsIHRlbXBmaWxlCgogICAgZGVmIF9pc19lbGYoZmlsZW5hbWUpOgogICAgICAgICJSZXR1cm4gVHJ1ZSBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBFTEYgZmlsZSIKICAgICAgICBlbGZfaGVhZGVyID0gYidceDdmRUxGJwogICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ2JyJykgYXMgdGhlZmlsZToKICAgICAgICAgICAgcmV0dXJuIHRoZWZpbGUucmVhZCg0KSA9PSBlbGZfaGVhZGVyCgogICAgZGVmIF9maW5kTGliX2djYyhuYW1lKToKICAgICAgICAjIFJ1biBHQ0MncyBsaW5rZXIgd2l0aCB0aGUgLXQgKGFrYSAtLXRyYWNlKSBvcHRpb24gYW5kIGV4YW1pbmUgdGhlCiAgICAgICAgIyBsaWJyYXJ5IG5hbWUgaXQgcHJpbnRzIG91dC4gVGhlIEdDQyBjb21tYW5kIHdpbGwgZmFpbCBiZWNhdXNlIHdlCiAgICAgICAgIyBoYXZlbid0IHN1cHBsaWVkIGEgcHJvcGVyIHByb2dyYW0gd2l0aCBtYWluKCksIGJ1dCB0aGF0IGRvZXMgbm90CiAgICAgICAgIyBtYXR0ZXIuCiAgICAgICAgZXhwciA9IG9zLmZzZW5jb2RlKHInW15cKFwpXHNdKmxpYiVzXC5bXlwoXClcc10qJyAlIHJlLmVzY2FwZShuYW1lKSkKCiAgICAgICAgY19jb21waWxlciA9IHNodXRpbC53aGljaCgnZ2NjJykKICAgICAgICBpZiBub3QgY19jb21waWxlcjoKICAgICAgICAgICAgY19jb21waWxlciA9IHNodXRpbC53aGljaCgnY2MnKQogICAgICAgIGlmIG5vdCBjX2NvbXBpbGVyOgogICAgICAgICAgICAjIE5vIEMgY29tcGlsZXIgYXZhaWxhYmxlLCBnaXZlIHVwCiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgIHRlbXAgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgYXJncyA9IFtjX2NvbXBpbGVyLCAnLVdsLC10JywgJy1vJywgdGVtcC5uYW1lLCAnLWwnICsgbmFtZV0KCiAgICAgICAgICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKICAgICAgICAgICAgZW52WydMQ19BTEwnXSA9ICdDJwogICAgICAgICAgICBlbnZbJ0xBTkcnXSA9ICdDJwogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBFLmcuIGJhZCBleGVjdXRhYmxlCiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICB3aXRoIHByb2M6CiAgICAgICAgICAgICAgICB0cmFjZSA9IHByb2Muc3Rkb3V0LnJlYWQoKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHRlbXAuY2xvc2UoKQogICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgICAgICAjIFJhaXNlZCBpZiB0aGUgZmlsZSB3YXMgYWxyZWFkeSByZW1vdmVkLCB3aGljaCBpcyB0aGUgbm9ybWFsCiAgICAgICAgICAgICAgICAjIGJlaGF2aW91ciBvZiBHQ0MgaWYgbGlua2luZyBmYWlscwogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIHJlcyA9IHJlLmZpbmRhbGwoZXhwciwgdHJhY2UpCiAgICAgICAgaWYgbm90IHJlczoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgZm9yIGZpbGUgaW4gcmVzOgogICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGFuIGVsZiBmaWxlOiBnY2MgY2FuIHJlcG9ydAogICAgICAgICAgICAjIHNvbWUgZmlsZXMgdGhhdCBhcmUgbGlua2VyIHNjcmlwdHMgYW5kIG5vdCBhY3R1YWwKICAgICAgICAgICAgIyBzaGFyZWQgb2JqZWN0cy4gU2VlIGJwby00MTk3NiBmb3IgbW9yZSBkZXRhaWxzCiAgICAgICAgICAgIGlmIG5vdCBfaXNfZWxmKGZpbGUpOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgcmV0dXJuIG9zLmZzZGVjb2RlKGZpbGUpCgoKICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAic3Vub3M1IjoKICAgICAgICAjIHVzZSAvdXNyL2Njcy9iaW4vZHVtcCBvbiBzb2xhcmlzCiAgICAgICAgZGVmIF9nZXRfc29uYW1lKGYpOgogICAgICAgICAgICBpZiBub3QgZjoKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigoIi91c3IvY2NzL2Jpbi9kdW1wIiwgIi1McHYiLCBmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjogICMgRS5nLiBjb21tYW5kIG5vdCBmb3VuZAogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgd2l0aCBwcm9jOgogICAgICAgICAgICAgICAgZGF0YSA9IHByb2Muc3Rkb3V0LnJlYWQoKQogICAgICAgICAgICByZXMgPSByZS5zZWFyY2goYnInXFsuKlxdXHNTT05BTUVccysoW15cc10rKScsIGRhdGEpCiAgICAgICAgICAgIGlmIG5vdCByZXM6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICByZXR1cm4gb3MuZnNkZWNvZGUocmVzLmdyb3VwKDEpKQogICAgZWxzZToKICAgICAgICBkZWYgX2dldF9zb25hbWUoZik6CiAgICAgICAgICAgICMgYXNzdW1pbmcgR05VIGJpbnV0aWxzIC8gRUxGCiAgICAgICAgICAgIGlmIG5vdCBmOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgb2JqZHVtcCA9IHNodXRpbC53aGljaCgnb2JqZHVtcCcpCiAgICAgICAgICAgIGlmIG5vdCBvYmpkdW1wOgogICAgICAgICAgICAgICAgIyBvYmpkdW1wIGlzIG5vdCBhdmFpbGFibGUsIGdpdmUgdXAKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3Blbigob2JqZHVtcCwgJy1wJywgJy1qJywgJy5keW5hbWljJywgZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6ICAjIEUuZy4gYmFkIGV4ZWN1dGFibGUKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgIHdpdGggcHJvYzoKICAgICAgICAgICAgICAgIGR1bXAgPSBwcm9jLnN0ZG91dC5yZWFkKCkKICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKGJyJ1xzU09OQU1FXHMrKFteXHNdKyknLCBkdW1wKQogICAgICAgICAgICBpZiBub3QgcmVzOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgcmV0dXJuIG9zLmZzZGVjb2RlKHJlcy5ncm91cCgxKSkKCiAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoImZyZWVic2QiLCAib3BlbmJzZCIsICJkcmFnb25mbHkiKSk6CgogICAgICAgIGRlZiBfbnVtX3ZlcnNpb24obGlibmFtZSk6CiAgICAgICAgICAgICMgImxpYnh5ei5zby5NQUpPUi5NSU5PUiIgPT4gWyBNQUpPUiwgTUlOT1IgXQogICAgICAgICAgICBwYXJ0cyA9IGxpYm5hbWUuc3BsaXQoYiIuIikKICAgICAgICAgICAgbnVtcyA9IFtdCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdoaWxlIHBhcnRzOgogICAgICAgICAgICAgICAgICAgIG51bXMuaW5zZXJ0KDAsIGludChwYXJ0cy5wb3AoKSkpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICByZXR1cm4gbnVtcyBvciBbc3lzLm1heHNpemVdCgogICAgICAgIGRlZiBmaW5kX2xpYnJhcnkobmFtZSk6CiAgICAgICAgICAgIGVuYW1lID0gcmUuZXNjYXBlKG5hbWUpCiAgICAgICAgICAgIGV4cHIgPSByJzotbCVzXC5cUysgPT4gXFMqLyhsaWIlc1wuXFMrKScgJSAoZW5hbWUsIGVuYW1lKQogICAgICAgICAgICBleHByID0gb3MuZnNlbmNvZGUoZXhwcikKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKCgnL3NiaW4vbGRjb25maWcnLCAnLXInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjogICMgRS5nLiBjb21tYW5kIG5vdCBmb3VuZAogICAgICAgICAgICAgICAgZGF0YSA9IGInJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgd2l0aCBwcm9jOgogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBwcm9jLnN0ZG91dC5yZWFkKCkKCiAgICAgICAgICAgIHJlcyA9IHJlLmZpbmRhbGwoZXhwciwgZGF0YSkKICAgICAgICAgICAgaWYgbm90IHJlczoKICAgICAgICAgICAgICAgIHJldHVybiBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkpCiAgICAgICAgICAgIHJlcy5zb3J0KGtleT1fbnVtX3ZlcnNpb24pCiAgICAgICAgICAgIHJldHVybiBvcy5mc2RlY29kZShyZXNbLTFdKQoKICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICJzdW5vczUiOgoKICAgICAgICBkZWYgX2ZpbmRMaWJfY3JsZShuYW1lLCBpczY0KToKICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCcvdXNyL2Jpbi9jcmxlJyk6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICAgICAgZW52ID0gZGljdChvcy5lbnZpcm9uKQogICAgICAgICAgICBlbnZbJ0xDX0FMTCddID0gJ0MnCgogICAgICAgICAgICBpZiBpczY0OgogICAgICAgICAgICAgICAgYXJncyA9ICgnL3Vzci9iaW4vY3JsZScsICctNjQnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXJncyA9ICgnL3Vzci9iaW4vY3JsZScsKQoKICAgICAgICAgICAgcGF0aHMgPSBOb25lCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAgIyBFLmcuIGJhZCBleGVjdXRhYmxlCiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICB3aXRoIHByb2M6CiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBwcm9jLnN0ZG91dDoKICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKGInRGVmYXVsdCBMaWJyYXJ5IFBhdGggKEVMRik6Jyk6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzID0gb3MuZnNkZWNvZGUobGluZSkuc3BsaXQoKVs0XQoKICAgICAgICAgICAgaWYgbm90IHBhdGhzOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgICAgIGZvciBkaXIgaW4gcGF0aHMuc3BsaXQoIjoiKToKICAgICAgICAgICAgICAgIGxpYmZpbGUgPSBvcy5wYXRoLmpvaW4oZGlyLCAibGliJXMuc28iICUgbmFtZSkKICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxpYmZpbGUpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBsaWJmaWxlCgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUsIGlzNjQgPSBGYWxzZSk6CiAgICAgICAgICAgIHJldHVybiBfZ2V0X3NvbmFtZShfZmluZExpYl9jcmxlKG5hbWUsIGlzNjQpIG9yIF9maW5kTGliX2djYyhuYW1lKSkKCiAgICBlbHNlOgoKICAgICAgICBkZWYgX2ZpbmRTb25hbWVfbGRjb25maWcobmFtZSk6CiAgICAgICAgICAgIGltcG9ydCBzdHJ1Y3QKICAgICAgICAgICAgaWYgc3RydWN0LmNhbGNzaXplKCdsJykgPT0gNDoKICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpLm1hY2hpbmUgKyAnLTMyJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZSArICctNjQnCiAgICAgICAgICAgIG1hY2hfbWFwID0gewogICAgICAgICAgICAgICAgJ3g4Nl82NC02NCc6ICdsaWJjNix4ODYtNjQnLAogICAgICAgICAgICAgICAgJ3BwYzY0LTY0JzogJ2xpYmM2LDY0Yml0JywKICAgICAgICAgICAgICAgICdzcGFyYzY0LTY0JzogJ2xpYmM2LDY0Yml0JywKICAgICAgICAgICAgICAgICdzMzkweC02NCc6ICdsaWJjNiw2NGJpdCcsCiAgICAgICAgICAgICAgICAnaWE2NC02NCc6ICdsaWJjNixJQS02NCcsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGFiaV90eXBlID0gbWFjaF9tYXAuZ2V0KG1hY2hpbmUsICdsaWJjNicpCgogICAgICAgICAgICAjIFhYWCBhc3N1bWluZyBHTElCQydzIGxkY29uZmlnICh3aXRoIG9wdGlvbiAtcCkKICAgICAgICAgICAgcmVnZXggPSByJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnCiAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUocmVnZXggJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJy9zYmluL2xkY29uZmlnJywgJy1wJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9eydMQ19BTEwnOiAnQycsICdMQU5HJzogJ0MnfSkgYXMgcDoKICAgICAgICAgICAgICAgICAgICByZXMgPSByZS5zZWFyY2gocmVnZXgsIHAuc3Rkb3V0LnJlYWQoKSkKICAgICAgICAgICAgICAgICAgICBpZiByZXM6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5mc2RlY29kZShyZXMuZ3JvdXAoMSkpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICBkZWYgX2ZpbmRMaWJfbGQobmFtZSk6CiAgICAgICAgICAgICMgU2VlIGlzc3VlICM5OTk4IGZvciB3aHkgdGhpcyBpcyBuZWVkZWQKICAgICAgICAgICAgZXhwciA9IHInW15cKFwpXHNdKmxpYiVzXC5bXlwoXClcc10qJyAlIHJlLmVzY2FwZShuYW1lKQogICAgICAgICAgICBjbWQgPSBbJ2xkJywgJy10J10KICAgICAgICAgICAgbGlicGF0aCA9IG9zLmVudmlyb24uZ2V0KCdMRF9MSUJSQVJZX1BBVEgnKQogICAgICAgICAgICBpZiBsaWJwYXRoOgogICAgICAgICAgICAgICAgZm9yIGQgaW4gbGlicGF0aC5zcGxpdCgnOicpOgogICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctTCcsIGRdKQogICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLW8nLCBvcy5kZXZudWxsLCAnLWwlcycgJSBuYW1lXSkKICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCiAgICAgICAgICAgICAgICBvdXQsIF8gPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgICAgICAgIHJlcyA9IHJlLmZpbmRhbGwoZXhwciwgb3MuZnNkZWNvZGUob3V0KSkKICAgICAgICAgICAgICAgIGZvciBmaWxlIGluIHJlczoKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGFuIGVsZiBmaWxlOiBnY2MgY2FuIHJlcG9ydAogICAgICAgICAgICAgICAgICAgICMgc29tZSBmaWxlcyB0aGF0IGFyZSBsaW5rZXIgc2NyaXB0cyBhbmQgbm90IGFjdHVhbAogICAgICAgICAgICAgICAgICAgICMgc2hhcmVkIG9iamVjdHMuIFNlZSBicG8tNDE5NzYgZm9yIG1vcmUgZGV0YWlscwogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaXNfZWxmKGZpbGUpOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5mc2RlY29kZShmaWxlKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgcGFzcyAgIyByZXN1bHQgd2lsbCBiZSBOb25lCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzk5OTgKICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIFwKICAgICAgICAgICAgICAgICAgIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSkgb3IgX2dldF9zb25hbWUoX2ZpbmRMaWJfbGQobmFtZSkpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgdGVzdCBjb2RlCgpkZWYgdGVzdCgpOgogICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNkbGwKICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICBwcmludChjZGxsLm1zdmNydCkKICAgICAgICBwcmludChjZGxsLmxvYWQoIm1zdmNydCIpKQogICAgICAgIHByaW50KGZpbmRfbGlicmFyeSgibXN2Y3J0IikpCgogICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgogICAgICAgICMgZmluZCBhbmQgbG9hZF92ZXJzaW9uCiAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJtIikpCiAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJjIikpCiAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJiejIiKSkKCiAgICAgICAgIyBsb2FkCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgogICAgICAgICAgICBwcmludChjZGxsLkxvYWRMaWJyYXJ5KCJsaWJtLmR5bGliIikpCiAgICAgICAgICAgIHByaW50KGNkbGwuTG9hZExpYnJhcnkoImxpYmNyeXB0by5keWxpYiIpKQogICAgICAgICAgICBwcmludChjZGxsLkxvYWRMaWJyYXJ5KCJsaWJTeXN0ZW0uZHlsaWIiKSkKICAgICAgICAgICAgcHJpbnQoY2RsbC5Mb2FkTGlicmFyeSgiU3lzdGVtLmZyYW1ld29yay9TeXN0ZW0iKSkKICAgICAgICAjIGlzc3VlLTI2NDM5IC0gZml4IGJyb2tlbiB0ZXN0IGNhbGwgZm9yIEFJWAogICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImFpeCIpOgogICAgICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgQ0RMTAogICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA8IDIqKjMyOgogICAgICAgICAgICAgICAgcHJpbnQoZiJVc2luZyBDRExMKG5hbWUsIG9zLlJUTERfTUVNQkVSKToge0NETEwoJ2xpYmMuYShzaHIubyknLCBvcy5SVExEX01FTUJFUil9IikKICAgICAgICAgICAgICAgIHByaW50KGYiVXNpbmcgY2RsbC5Mb2FkTGlicmFyeSgpOiB7Y2RsbC5Mb2FkTGlicmFyeSgnbGliYy5hKHNoci5vKScpfSIpCiAgICAgICAgICAgICAgICAjIGxpYnJwbS5zbyBpcyBvbmx5IGF2YWlsYWJsZSBhcyAzMi1iaXQgc2hhcmVkIGxpYnJhcnkKICAgICAgICAgICAgICAgIHByaW50KGZpbmRfbGlicmFyeSgicnBtIikpCiAgICAgICAgICAgICAgICBwcmludChjZGxsLkxvYWRMaWJyYXJ5KCJsaWJycG0uc28iKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByaW50KGYiVXNpbmcgQ0RMTChuYW1lLCBvcy5SVExEX01FTUJFUik6IHtDRExMKCdsaWJjLmEoc2hyXzY0Lm8pJywgb3MuUlRMRF9NRU1CRVIpfSIpCiAgICAgICAgICAgICAgICBwcmludChmIlVzaW5nIGNkbGwuTG9hZExpYnJhcnkoKToge2NkbGwuTG9hZExpYnJhcnkoJ2xpYmMuYShzaHJfNjQubyknKX0iKQogICAgICAgICAgICBwcmludChmImNyeXB0XHQ6OiB7ZmluZF9saWJyYXJ5KCdjcnlwdCcpfSIpCiAgICAgICAgICAgIHByaW50KGYiY3J5cHRcdDo6IHtjZGxsLkxvYWRMaWJyYXJ5KGZpbmRfbGlicmFyeSgnY3J5cHQnKSl9IikKICAgICAgICAgICAgcHJpbnQoZiJjcnlwdG9cdDo6IHtmaW5kX2xpYnJhcnkoJ2NyeXB0bycpfSIpCiAgICAgICAgICAgIHByaW50KGYiY3J5cHRvXHQ6OiB7Y2RsbC5Mb2FkTGlicmFyeShmaW5kX2xpYnJhcnkoJ2NyeXB0bycpKX0iKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50KGNkbGwuTG9hZExpYnJhcnkoImxpYm0uc28iKSkKICAgICAgICAgICAgcHJpbnQoY2RsbC5Mb2FkTGlicmFyeSgibGliY3J5cHQuc28iKSkKICAgICAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJjcnlwdCIpKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHRlc3QoKQpQSwMEFAAAAAAAAiCjVuOt5f/8FQAA/BUAABIAAABjdHlwZXMvd2ludHlwZXMucHkjIFRoZSBtb3N0IHVzZWZ1bCB3aW5kb3dzIGRhdGF0eXBlcwppbXBvcnQgY3R5cGVzCgpCWVRFID0gY3R5cGVzLmNfYnl0ZQpXT1JEID0gY3R5cGVzLmNfdXNob3J0CkRXT1JEID0gY3R5cGVzLmNfdWxvbmcKCiNVQ0hBUiA9IGN0eXBlcy5jX3VjaGFyCkNIQVIgPSBjdHlwZXMuY19jaGFyCldDSEFSID0gY3R5cGVzLmNfd2NoYXIKVUlOVCA9IGN0eXBlcy5jX3VpbnQKSU5UID0gY3R5cGVzLmNfaW50CgpET1VCTEUgPSBjdHlwZXMuY19kb3VibGUKRkxPQVQgPSBjdHlwZXMuY19mbG9hdAoKQk9PTEVBTiA9IEJZVEUKQk9PTCA9IGN0eXBlcy5jX2xvbmcKCmNsYXNzIFZBUklBTlRfQk9PTChjdHlwZXMuX1NpbXBsZUNEYXRhKToKICAgIF90eXBlXyA9ICJ2IgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiJXMoJXIpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi52YWx1ZSkKClVMT05HID0gY3R5cGVzLmNfdWxvbmcKTE9ORyA9IGN0eXBlcy5jX2xvbmcKClVTSE9SVCA9IGN0eXBlcy5jX3VzaG9ydApTSE9SVCA9IGN0eXBlcy5jX3Nob3J0CgojIGluIHRoZSB3aW5kb3dzIGhlYWRlciBmaWxlcywgdGhlc2UgYXJlIHN0cnVjdHVyZXMuCl9MQVJHRV9JTlRFR0VSID0gTEFSR0VfSU5URUdFUiA9IGN0eXBlcy5jX2xvbmdsb25nCl9VTEFSR0VfSU5URUdFUiA9IFVMQVJHRV9JTlRFR0VSID0gY3R5cGVzLmNfdWxvbmdsb25nCgpMUENPTEVTVFIgPSBMUE9MRVNUUiA9IE9MRVNUUiA9IGN0eXBlcy5jX3djaGFyX3AKTFBDV1NUUiA9IExQV1NUUiA9IGN0eXBlcy5jX3djaGFyX3AKTFBDU1RSID0gTFBTVFIgPSBjdHlwZXMuY19jaGFyX3AKTFBDVk9JRCA9IExQVk9JRCA9IGN0eXBlcy5jX3ZvaWRfcAoKIyBXUEFSQU0gaXMgZGVmaW5lZCBhcyBVSU5UX1BUUiAodW5zaWduZWQgdHlwZSkKIyBMUEFSQU0gaXMgZGVmaW5lZCBhcyBMT05HX1BUUiAoc2lnbmVkIHR5cGUpCmlmIGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfbG9uZykgPT0gY3R5cGVzLnNpemVvZihjdHlwZXMuY192b2lkX3ApOgogICAgV1BBUkFNID0gY3R5cGVzLmNfdWxvbmcKICAgIExQQVJBTSA9IGN0eXBlcy5jX2xvbmcKZWxpZiBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX2xvbmdsb25nKSA9PSBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX3ZvaWRfcCk6CiAgICBXUEFSQU0gPSBjdHlwZXMuY191bG9uZ2xvbmcKICAgIExQQVJBTSA9IGN0eXBlcy5jX2xvbmdsb25nCgpBVE9NID0gV09SRApMQU5HSUQgPSBXT1JECgpDT0xPUlJFRiA9IERXT1JECkxHUlBJRCA9IERXT1JECkxDVFlQRSA9IERXT1JECgpMQ0lEID0gRFdPUkQKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBIQU5ETEUgdHlwZXMKSEFORExFID0gY3R5cGVzLmNfdm9pZF9wICMgaW4gdGhlIGhlYWRlciBmaWxlczogdm9pZCAqCgpIQUNDRUwgPSBIQU5ETEUKSEJJVE1BUCA9IEhBTkRMRQpIQlJVU0ggPSBIQU5ETEUKSENPTE9SU1BBQ0UgPSBIQU5ETEUKSERDID0gSEFORExFCkhERVNLID0gSEFORExFCkhEV1AgPSBIQU5ETEUKSEVOSE1FVEFGSUxFID0gSEFORExFCkhGT05UID0gSEFORExFCkhHRElPQkogPSBIQU5ETEUKSEdMT0JBTCA9IEhBTkRMRQpISE9PSyA9IEhBTkRMRQpISUNPTiA9IEhBTkRMRQpISU5TVEFOQ0UgPSBIQU5ETEUKSEtFWSA9IEhBTkRMRQpIS0wgPSBIQU5ETEUKSExPQ0FMID0gSEFORExFCkhNRU5VID0gSEFORExFCkhNRVRBRklMRSA9IEhBTkRMRQpITU9EVUxFID0gSEFORExFCkhNT05JVE9SID0gSEFORExFCkhQQUxFVFRFID0gSEFORExFCkhQRU4gPSBIQU5ETEUKSFJHTiA9IEhBTkRMRQpIUlNSQyA9IEhBTkRMRQpIU1RSID0gSEFORExFCkhUQVNLID0gSEFORExFCkhXSU5TVEEgPSBIQU5ETEUKSFdORCA9IEhBTkRMRQpTQ19IQU5ETEUgPSBIQU5ETEUKU0VSVklDRV9TVEFUVVNfSEFORExFID0gSEFORExFCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgU29tZSBpbXBvcnRhbnQgc3RydWN0dXJlIGRlZmluaXRpb25zCgpjbGFzcyBSRUNUKGN0eXBlcy5TdHJ1Y3R1cmUpOgogICAgX2ZpZWxkc18gPSBbKCJsZWZ0IiwgTE9ORyksCiAgICAgICAgICAgICAgICAoInRvcCIsIExPTkcpLAogICAgICAgICAgICAgICAgKCJyaWdodCIsIExPTkcpLAogICAgICAgICAgICAgICAgKCJib3R0b20iLCBMT05HKV0KdGFnUkVDVCA9IF9SRUNUTCA9IFJFQ1RMID0gUkVDVAoKY2xhc3MgX1NNQUxMX1JFQ1QoY3R5cGVzLlN0cnVjdHVyZSk6CiAgICBfZmllbGRzXyA9IFsoJ0xlZnQnLCBTSE9SVCksCiAgICAgICAgICAgICAgICAoJ1RvcCcsIFNIT1JUKSwKICAgICAgICAgICAgICAgICgnUmlnaHQnLCBTSE9SVCksCiAgICAgICAgICAgICAgICAoJ0JvdHRvbScsIFNIT1JUKV0KU01BTExfUkVDVCA9IF9TTUFMTF9SRUNUCgpjbGFzcyBfQ09PUkQoY3R5cGVzLlN0cnVjdHVyZSk6CiAgICBfZmllbGRzXyA9IFsoJ1gnLCBTSE9SVCksCiAgICAgICAgICAgICAgICAoJ1knLCBTSE9SVCldCgpjbGFzcyBQT0lOVChjdHlwZXMuU3RydWN0dXJlKToKICAgIF9maWVsZHNfID0gWygieCIsIExPTkcpLAogICAgICAgICAgICAgICAgKCJ5IiwgTE9ORyldCnRhZ1BPSU5UID0gX1BPSU5UTCA9IFBPSU5UTCA9IFBPSU5UCgpjbGFzcyBTSVpFKGN0eXBlcy5TdHJ1Y3R1cmUpOgogICAgX2ZpZWxkc18gPSBbKCJjeCIsIExPTkcpLAogICAgICAgICAgICAgICAgKCJjeSIsIExPTkcpXQp0YWdTSVpFID0gU0laRUwgPSBTSVpFCgpkZWYgUkdCKHJlZCwgZ3JlZW4sIGJsdWUpOgogICAgcmV0dXJuIHJlZCArIChncmVlbiA8PCA4KSArIChibHVlIDw8IDE2KQoKY2xhc3MgRklMRVRJTUUoY3R5cGVzLlN0cnVjdHVyZSk6CiAgICBfZmllbGRzXyA9IFsoImR3TG93RGF0ZVRpbWUiLCBEV09SRCksCiAgICAgICAgICAgICAgICAoImR3SGlnaERhdGVUaW1lIiwgRFdPUkQpXQpfRklMRVRJTUUgPSBGSUxFVElNRQoKY2xhc3MgTVNHKGN0eXBlcy5TdHJ1Y3R1cmUpOgogICAgX2ZpZWxkc18gPSBbKCJoV25kIiwgSFdORCksCiAgICAgICAgICAgICAgICAoIm1lc3NhZ2UiLCBVSU5UKSwKICAgICAgICAgICAgICAgICgid1BhcmFtIiwgV1BBUkFNKSwKICAgICAgICAgICAgICAgICgibFBhcmFtIiwgTFBBUkFNKSwKICAgICAgICAgICAgICAgICgidGltZSIsIERXT1JEKSwKICAgICAgICAgICAgICAgICgicHQiLCBQT0lOVCldCnRhZ01TRyA9IE1TRwpNQVhfUEFUSCA9IDI2MAoKY2xhc3MgV0lOMzJfRklORF9EQVRBQShjdHlwZXMuU3RydWN0dXJlKToKICAgIF9maWVsZHNfID0gWygiZHdGaWxlQXR0cmlidXRlcyIsIERXT1JEKSwKICAgICAgICAgICAgICAgICgiZnRDcmVhdGlvblRpbWUiLCBGSUxFVElNRSksCiAgICAgICAgICAgICAgICAoImZ0TGFzdEFjY2Vzc1RpbWUiLCBGSUxFVElNRSksCiAgICAgICAgICAgICAgICAoImZ0TGFzdFdyaXRlVGltZSIsIEZJTEVUSU1FKSwKICAgICAgICAgICAgICAgICgibkZpbGVTaXplSGlnaCIsIERXT1JEKSwKICAgICAgICAgICAgICAgICgibkZpbGVTaXplTG93IiwgRFdPUkQpLAogICAgICAgICAgICAgICAgKCJkd1Jlc2VydmVkMCIsIERXT1JEKSwKICAgICAgICAgICAgICAgICgiZHdSZXNlcnZlZDEiLCBEV09SRCksCiAgICAgICAgICAgICAgICAoImNGaWxlTmFtZSIsIENIQVIgKiBNQVhfUEFUSCksCiAgICAgICAgICAgICAgICAoImNBbHRlcm5hdGVGaWxlTmFtZSIsIENIQVIgKiAxNCldCgpjbGFzcyBXSU4zMl9GSU5EX0RBVEFXKGN0eXBlcy5TdHJ1Y3R1cmUpOgogICAgX2ZpZWxkc18gPSBbKCJkd0ZpbGVBdHRyaWJ1dGVzIiwgRFdPUkQpLAogICAgICAgICAgICAgICAgKCJmdENyZWF0aW9uVGltZSIsIEZJTEVUSU1FKSwKICAgICAgICAgICAgICAgICgiZnRMYXN0QWNjZXNzVGltZSIsIEZJTEVUSU1FKSwKICAgICAgICAgICAgICAgICgiZnRMYXN0V3JpdGVUaW1lIiwgRklMRVRJTUUpLAogICAgICAgICAgICAgICAgKCJuRmlsZVNpemVIaWdoIiwgRFdPUkQpLAogICAgICAgICAgICAgICAgKCJuRmlsZVNpemVMb3ciLCBEV09SRCksCiAgICAgICAgICAgICAgICAoImR3UmVzZXJ2ZWQwIiwgRFdPUkQpLAogICAgICAgICAgICAgICAgKCJkd1Jlc2VydmVkMSIsIERXT1JEKSwKICAgICAgICAgICAgICAgICgiY0ZpbGVOYW1lIiwgV0NIQVIgKiBNQVhfUEFUSCksCiAgICAgICAgICAgICAgICAoImNBbHRlcm5hdGVGaWxlTmFtZSIsIFdDSEFSICogMTQpXQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFBvaW50ZXIgdHlwZXMKCkxQQk9PTCA9IFBCT09MID0gY3R5cGVzLlBPSU5URVIoQk9PTCkKUEJPT0xFQU4gPSBjdHlwZXMuUE9JTlRFUihCT09MRUFOKQpMUEJZVEUgPSBQQllURSA9IGN0eXBlcy5QT0lOVEVSKEJZVEUpClBDSEFSID0gY3R5cGVzLlBPSU5URVIoQ0hBUikKTFBDT0xPUlJFRiA9IGN0eXBlcy5QT0lOVEVSKENPTE9SUkVGKQpMUERXT1JEID0gUERXT1JEID0gY3R5cGVzLlBPSU5URVIoRFdPUkQpCkxQRklMRVRJTUUgPSBQRklMRVRJTUUgPSBjdHlwZXMuUE9JTlRFUihGSUxFVElNRSkKUEZMT0FUID0gY3R5cGVzLlBPSU5URVIoRkxPQVQpCkxQSEFORExFID0gUEhBTkRMRSA9IGN0eXBlcy5QT0lOVEVSKEhBTkRMRSkKUEhLRVkgPSBjdHlwZXMuUE9JTlRFUihIS0VZKQpMUEhLTCA9IGN0eXBlcy5QT0lOVEVSKEhLTCkKTFBJTlQgPSBQSU5UID0gY3R5cGVzLlBPSU5URVIoSU5UKQpQTEFSR0VfSU5URUdFUiA9IGN0eXBlcy5QT0lOVEVSKExBUkdFX0lOVEVHRVIpClBMQ0lEID0gY3R5cGVzLlBPSU5URVIoTENJRCkKTFBMT05HID0gUExPTkcgPSBjdHlwZXMuUE9JTlRFUihMT05HKQpMUE1TRyA9IFBNU0cgPSBjdHlwZXMuUE9JTlRFUihNU0cpCkxQUE9JTlQgPSBQUE9JTlQgPSBjdHlwZXMuUE9JTlRFUihQT0lOVCkKUFBPSU5UTCA9IGN0eXBlcy5QT0lOVEVSKFBPSU5UTCkKTFBSRUNUID0gUFJFQ1QgPSBjdHlwZXMuUE9JTlRFUihSRUNUKQpMUFJFQ1RMID0gUFJFQ1RMID0gY3R5cGVzLlBPSU5URVIoUkVDVEwpCkxQU0NfSEFORExFID0gY3R5cGVzLlBPSU5URVIoU0NfSEFORExFKQpQU0hPUlQgPSBjdHlwZXMuUE9JTlRFUihTSE9SVCkKTFBTSVpFID0gUFNJWkUgPSBjdHlwZXMuUE9JTlRFUihTSVpFKQpMUFNJWkVMID0gUFNJWkVMID0gY3R5cGVzLlBPSU5URVIoU0laRUwpClBTTUFMTF9SRUNUID0gY3R5cGVzLlBPSU5URVIoU01BTExfUkVDVCkKTFBVSU5UID0gUFVJTlQgPSBjdHlwZXMuUE9JTlRFUihVSU5UKQpQVUxBUkdFX0lOVEVHRVIgPSBjdHlwZXMuUE9JTlRFUihVTEFSR0VfSU5URUdFUikKUFVMT05HID0gY3R5cGVzLlBPSU5URVIoVUxPTkcpClBVU0hPUlQgPSBjdHlwZXMuUE9JTlRFUihVU0hPUlQpClBXQ0hBUiA9IGN0eXBlcy5QT0lOVEVSKFdDSEFSKQpMUFdJTjMyX0ZJTkRfREFUQUEgPSBQV0lOMzJfRklORF9EQVRBQSA9IGN0eXBlcy5QT0lOVEVSKFdJTjMyX0ZJTkRfREFUQUEpCkxQV0lOMzJfRklORF9EQVRBVyA9IFBXSU4zMl9GSU5EX0RBVEFXID0gY3R5cGVzLlBPSU5URVIoV0lOMzJfRklORF9EQVRBVykKTFBXT1JEID0gUFdPUkQgPSBjdHlwZXMuUE9JTlRFUihXT1JEKQpQSwMEFAAAAAAAAiCjVkqti78oAQAAKAEAAB0AAABjdHlwZXMvbWFjaG9saWIvUkVBRE1FLmN0eXBlc0ZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGNvbWUgZnJvbSBCb2IgSXBwb2xpdG8ncyBweTJhcHAuCgpMaWNlbnNlOiBBbnkgY29tcG9uZW50cyBvZiB0aGUgcHkyYXBwIHN1aXRlIG1heSBiZSBkaXN0cmlidXRlZCB1bmRlcgp0aGUgTUlUIG9yIFBTRiBvcGVuIHNvdXJjZSBsaWNlbnNlcy4KClRoaXMgaXMgdmVyc2lvbiAxLjAsIFNWTiByZXZpc2lvbiA3ODksIGZyb20gMjAwNi8wMS8yNS4KVGhlIG1haW4gcmVwb3NpdG9yeSBpcyBodHRwOi8vc3ZuLnJlZC1iZWFuLmNvbS9ib2IvbWFjaG9saWIvdHJ1bmsvbWFjaG9saWIvUEsDBBQAAAAAAAIgo1Z0N3mJmgAAAJoAAAAbAAAAY3R5cGVzL21hY2hvbGliL19faW5pdF9fLnB5IiIiCkVub3VnaCBNYWNoLU8gdG8gbWFrZSB5b3VyIGhlYWQgc3Bpbi4KClNlZSB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzIGluIC91c3IvaW5jbHVkZS9tYWNoLW8KCkFuZCBhbHNvIEFwcGxlJ3MgZG9jdW1lbnRhdGlvbi4KIiIiCgpfX3ZlcnNpb25fXyA9ICcxLjAnClBLAwQUAAAAAAACIKNWgZvmiaATAACgEwAAFwAAAGN0eXBlcy9tYWNob2xpYi9keWxkLnB5IiIiCmR5bGQgZW11bGF0aW9uCiIiIgoKaW1wb3J0IG9zCmZyb20gY3R5cGVzLm1hY2hvbGliLmZyYW1ld29yayBpbXBvcnQgZnJhbWV3b3JrX2luZm8KZnJvbSBjdHlwZXMubWFjaG9saWIuZHlsaWIgaW1wb3J0IGR5bGliX2luZm8KZnJvbSBpdGVydG9vbHMgaW1wb3J0ICoKdHJ5OgogICAgZnJvbSBfY3R5cGVzIGltcG9ydCBfZHlsZF9zaGFyZWRfY2FjaGVfY29udGFpbnNfcGF0aApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBkZWYgX2R5bGRfc2hhcmVkX2NhY2hlX2NvbnRhaW5zX3BhdGgoKmFyZ3MpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCl9fYWxsX18gPSBbCiAgICAnZHlsZF9maW5kJywgJ2ZyYW1ld29ya19maW5kJywKICAgICdmcmFtZXdvcmtfaW5mbycsICdkeWxpYl9pbmZvJywKXQoKIyBUaGVzZSBhcmUgdGhlIGRlZmF1bHRzIGFzIHBlciBtYW4gZHlsZCgxKQojCkRFRkFVTFRfRlJBTUVXT1JLX0ZBTExCQUNLID0gWwogICAgb3MucGF0aC5leHBhbmR1c2VyKCJ+L0xpYnJhcnkvRnJhbWV3b3JrcyIpLAogICAgIi9MaWJyYXJ5L0ZyYW1ld29ya3MiLAogICAgIi9OZXR3b3JrL0xpYnJhcnkvRnJhbWV3b3JrcyIsCiAgICAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MiLApdCgpERUZBVUxUX0xJQlJBUllfRkFMTEJBQ0sgPSBbCiAgICBvcy5wYXRoLmV4cGFuZHVzZXIoIn4vbGliIiksCiAgICAiL3Vzci9sb2NhbC9saWIiLAogICAgIi9saWIiLAogICAgIi91c3IvbGliIiwKXQoKZGVmIGR5bGRfZW52KGVudiwgdmFyKToKICAgIGlmIGVudiBpcyBOb25lOgogICAgICAgIGVudiA9IG9zLmVudmlyb24KICAgIHJ2YWwgPSBlbnYuZ2V0KHZhcikKICAgIGlmIHJ2YWwgaXMgTm9uZToKICAgICAgICByZXR1cm4gW10KICAgIHJldHVybiBydmFsLnNwbGl0KCc6JykKCmRlZiBkeWxkX2ltYWdlX3N1ZmZpeChlbnY9Tm9uZSk6CiAgICBpZiBlbnYgaXMgTm9uZToKICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCiAgICByZXR1cm4gZW52LmdldCgnRFlMRF9JTUFHRV9TVUZGSVgnKQoKZGVmIGR5bGRfZnJhbWV3b3JrX3BhdGgoZW52PU5vbmUpOgogICAgcmV0dXJuIGR5bGRfZW52KGVudiwgJ0RZTERfRlJBTUVXT1JLX1BBVEgnKQoKZGVmIGR5bGRfbGlicmFyeV9wYXRoKGVudj1Ob25lKToKICAgIHJldHVybiBkeWxkX2VudihlbnYsICdEWUxEX0xJQlJBUllfUEFUSCcpCgpkZWYgZHlsZF9mYWxsYmFja19mcmFtZXdvcmtfcGF0aChlbnY9Tm9uZSk6CiAgICByZXR1cm4gZHlsZF9lbnYoZW52LCAnRFlMRF9GQUxMQkFDS19GUkFNRVdPUktfUEFUSCcpCgpkZWYgZHlsZF9mYWxsYmFja19saWJyYXJ5X3BhdGgoZW52PU5vbmUpOgogICAgcmV0dXJuIGR5bGRfZW52KGVudiwgJ0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIJykKCmRlZiBkeWxkX2ltYWdlX3N1ZmZpeF9zZWFyY2goaXRlcmF0b3IsIGVudj1Ob25lKToKICAgICIiIkZvciBhIHBvdGVudGlhbCBwYXRoIGl0ZXJhdG9yLCBhZGQgRFlMRF9JTUFHRV9TVUZGSVggc2VtYW50aWNzIiIiCiAgICBzdWZmaXggPSBkeWxkX2ltYWdlX3N1ZmZpeChlbnYpCiAgICBpZiBzdWZmaXggaXMgTm9uZToKICAgICAgICByZXR1cm4gaXRlcmF0b3IKICAgIGRlZiBfaW5qZWN0KGl0ZXJhdG9yPWl0ZXJhdG9yLCBzdWZmaXg9c3VmZml4KToKICAgICAgICBmb3IgcGF0aCBpbiBpdGVyYXRvcjoKICAgICAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgnLmR5bGliJyk6CiAgICAgICAgICAgICAgICB5aWVsZCBwYXRoWzotbGVuKCcuZHlsaWInKV0gKyBzdWZmaXggKyAnLmR5bGliJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgeWllbGQgcGF0aCArIHN1ZmZpeAogICAgICAgICAgICB5aWVsZCBwYXRoCiAgICByZXR1cm4gX2luamVjdCgpCgpkZWYgZHlsZF9vdmVycmlkZV9zZWFyY2gobmFtZSwgZW52PU5vbmUpOgogICAgIyBJZiBEWUxEX0ZSQU1FV09SS19QQVRIIGlzIHNldCBhbmQgdGhpcyBkeWxpYl9uYW1lIGlzIGEKICAgICMgZnJhbWV3b3JrIG5hbWUsIHVzZSB0aGUgZmlyc3QgZmlsZSB0aGF0IGV4aXN0cyBpbiB0aGUgZnJhbWV3b3JrCiAgICAjIHBhdGggaWYgYW55LiAgSWYgdGhlcmUgaXMgbm9uZSBnbyBvbiB0byBzZWFyY2ggdGhlIERZTERfTElCUkFSWV9QQVRICiAgICAjIGlmIGFueS4KCiAgICBmcmFtZXdvcmsgPSBmcmFtZXdvcmtfaW5mbyhuYW1lKQoKICAgIGlmIGZyYW1ld29yayBpcyBub3QgTm9uZToKICAgICAgICBmb3IgcGF0aCBpbiBkeWxkX2ZyYW1ld29ya19wYXRoKGVudik6CiAgICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbihwYXRoLCBmcmFtZXdvcmtbJ25hbWUnXSkKCiAgICAjIElmIERZTERfTElCUkFSWV9QQVRIIGlzIHNldCB0aGVuIHVzZSB0aGUgZmlyc3QgZmlsZSB0aGF0IGV4aXN0cwogICAgIyBpbiB0aGUgcGF0aC4gIElmIG5vbmUgdXNlIHRoZSBvcmlnaW5hbCBuYW1lLgogICAgZm9yIHBhdGggaW4gZHlsZF9saWJyYXJ5X3BhdGgoZW52KToKICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4ocGF0aCwgb3MucGF0aC5iYXNlbmFtZShuYW1lKSkKCmRlZiBkeWxkX2V4ZWN1dGFibGVfcGF0aF9zZWFyY2gobmFtZSwgZXhlY3V0YWJsZV9wYXRoPU5vbmUpOgogICAgIyBJZiB3ZSBoYXZlbid0IGRvbmUgYW55IHNlYXJjaGluZyBhbmQgZm91bmQgYSBsaWJyYXJ5IGFuZCB0aGUKICAgICMgZHlsaWJfbmFtZSBzdGFydHMgd2l0aCAiQGV4ZWN1dGFibGVfcGF0aC8iIHRoZW4gY29uc3RydWN0IHRoZQogICAgIyBsaWJyYXJ5IG5hbWUuCiAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ0BleGVjdXRhYmxlX3BhdGgvJykgYW5kIGV4ZWN1dGFibGVfcGF0aCBpcyBub3QgTm9uZToKICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4oZXhlY3V0YWJsZV9wYXRoLCBuYW1lW2xlbignQGV4ZWN1dGFibGVfcGF0aC8nKTpdKQoKZGVmIGR5bGRfZGVmYXVsdF9zZWFyY2gobmFtZSwgZW52PU5vbmUpOgogICAgeWllbGQgbmFtZQoKICAgIGZyYW1ld29yayA9IGZyYW1ld29ya19pbmZvKG5hbWUpCgogICAgaWYgZnJhbWV3b3JrIGlzIG5vdCBOb25lOgogICAgICAgIGZhbGxiYWNrX2ZyYW1ld29ya19wYXRoID0gZHlsZF9mYWxsYmFja19mcmFtZXdvcmtfcGF0aChlbnYpCiAgICAgICAgZm9yIHBhdGggaW4gZmFsbGJhY2tfZnJhbWV3b3JrX3BhdGg6CiAgICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbihwYXRoLCBmcmFtZXdvcmtbJ25hbWUnXSkKCiAgICBmYWxsYmFja19saWJyYXJ5X3BhdGggPSBkeWxkX2ZhbGxiYWNrX2xpYnJhcnlfcGF0aChlbnYpCiAgICBmb3IgcGF0aCBpbiBmYWxsYmFja19saWJyYXJ5X3BhdGg6CiAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKHBhdGgsIG9zLnBhdGguYmFzZW5hbWUobmFtZSkpCgogICAgaWYgZnJhbWV3b3JrIGlzIG5vdCBOb25lIGFuZCBub3QgZmFsbGJhY2tfZnJhbWV3b3JrX3BhdGg6CiAgICAgICAgZm9yIHBhdGggaW4gREVGQVVMVF9GUkFNRVdPUktfRkFMTEJBQ0s6CiAgICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbihwYXRoLCBmcmFtZXdvcmtbJ25hbWUnXSkKCiAgICBpZiBub3QgZmFsbGJhY2tfbGlicmFyeV9wYXRoOgogICAgICAgIGZvciBwYXRoIGluIERFRkFVTFRfTElCUkFSWV9GQUxMQkFDSzoKICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKHBhdGgsIG9zLnBhdGguYmFzZW5hbWUobmFtZSkpCgpkZWYgZHlsZF9maW5kKG5hbWUsIGV4ZWN1dGFibGVfcGF0aD1Ob25lLCBlbnY9Tm9uZSk6CiAgICAiIiIKICAgIEZpbmQgYSBsaWJyYXJ5IG9yIGZyYW1ld29yayB1c2luZyBkeWxkIHNlbWFudGljcwogICAgIiIiCiAgICBmb3IgcGF0aCBpbiBkeWxkX2ltYWdlX3N1ZmZpeF9zZWFyY2goY2hhaW4oCiAgICAgICAgICAgICAgICBkeWxkX292ZXJyaWRlX3NlYXJjaChuYW1lLCBlbnYpLAogICAgICAgICAgICAgICAgZHlsZF9leGVjdXRhYmxlX3BhdGhfc2VhcmNoKG5hbWUsIGV4ZWN1dGFibGVfcGF0aCksCiAgICAgICAgICAgICAgICBkeWxkX2RlZmF1bHRfc2VhcmNoKG5hbWUsIGVudiksCiAgICAgICAgICAgICksIGVudik6CgogICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgogICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgX2R5bGRfc2hhcmVkX2NhY2hlX2NvbnRhaW5zX3BhdGgocGF0aCk6CiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICBwYXNzCgogICAgcmFpc2UgVmFsdWVFcnJvcigiZHlsaWIgJXMgY291bGQgbm90IGJlIGZvdW5kIiAlIChuYW1lLCkpCgpkZWYgZnJhbWV3b3JrX2ZpbmQoZm4sIGV4ZWN1dGFibGVfcGF0aD1Ob25lLCBlbnY9Tm9uZSk6CiAgICAiIiIKICAgIEZpbmQgYSBmcmFtZXdvcmsgdXNpbmcgZHlsZCBzZW1hbnRpY3MgaW4gYSB2ZXJ5IGxvb3NlIG1hbm5lci4KCiAgICBXaWxsIHRha2UgaW5wdXQgc3VjaCBhczoKICAgICAgICBQeXRob24KICAgICAgICBQeXRob24uZnJhbWV3b3JrCiAgICAgICAgUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9DdXJyZW50CiAgICAiIiIKICAgIGVycm9yID0gTm9uZQogICAgdHJ5OgogICAgICAgIHJldHVybiBkeWxkX2ZpbmQoZm4sIGV4ZWN1dGFibGVfcGF0aD1leGVjdXRhYmxlX3BhdGgsIGVudj1lbnYpCiAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgIGVycm9yID0gZQogICAgZm13a19pbmRleCA9IGZuLnJmaW5kKCcuZnJhbWV3b3JrJykKICAgIGlmIGZtd2tfaW5kZXggPT0gLTE6CiAgICAgICAgZm13a19pbmRleCA9IGxlbihmbikKICAgICAgICBmbiArPSAnLmZyYW1ld29yaycKICAgIGZuID0gb3MucGF0aC5qb2luKGZuLCBvcy5wYXRoLmJhc2VuYW1lKGZuWzpmbXdrX2luZGV4XSkpCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIGR5bGRfZmluZChmbiwgZXhlY3V0YWJsZV9wYXRoPWV4ZWN1dGFibGVfcGF0aCwgZW52PWVudikKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHJhaXNlIGVycm9yCiAgICBmaW5hbGx5OgogICAgICAgIGVycm9yID0gTm9uZQpQSwMEFAAAAAAAAiCjVlNE9iHAAwAAwAMAABgAAABjdHlwZXMvbWFjaG9saWIvZHlsaWIucHkiIiIKR2VuZXJpYyBkeWxpYiBwYXRoIG1hbmlwdWxhdGlvbgoiIiIKCmltcG9ydCByZQoKX19hbGxfXyA9IFsnZHlsaWJfaW5mbyddCgpEWUxJQl9SRSA9IHJlLmNvbXBpbGUociIiIig/eCkKKD9QPGxvY2F0aW9uPl4uKikoPzpefC8pCig/UDxuYW1lPgogICAgKD9QPHNob3J0bmFtZT5cdys/KQogICAgKD86XC4oP1A8dmVyc2lvbj5bXi5fXSspKT8KICAgICg/Ol8oP1A8c3VmZml4PlteLl9dKykpPwogICAgXC5keWxpYiQKKQoiIiIpCgpkZWYgZHlsaWJfaW5mbyhmaWxlbmFtZSk6CiAgICAiIiIKICAgIEEgZHlsaWIgbmFtZSBjYW4gdGFrZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3VyIGZvcm1zOgogICAgICAgIExvY2F0aW9uL05hbWUuU29tZVZlcnNpb25fU3VmZml4LmR5bGliCiAgICAgICAgTG9jYXRpb24vTmFtZS5Tb21lVmVyc2lvbi5keWxpYgogICAgICAgIExvY2F0aW9uL05hbWVfU3VmZml4LmR5bGliCiAgICAgICAgTG9jYXRpb24vTmFtZS5keWxpYgoKICAgIHJldHVybnMgTm9uZSBpZiBub3QgZm91bmQgb3IgYSBtYXBwaW5nIGVxdWl2YWxlbnQgdG86CiAgICAgICAgZGljdCgKICAgICAgICAgICAgbG9jYXRpb249J0xvY2F0aW9uJywKICAgICAgICAgICAgbmFtZT0nTmFtZS5Tb21lVmVyc2lvbl9TdWZmaXguZHlsaWInLAogICAgICAgICAgICBzaG9ydG5hbWU9J05hbWUnLAogICAgICAgICAgICB2ZXJzaW9uPSdTb21lVmVyc2lvbicsCiAgICAgICAgICAgIHN1ZmZpeD0nU3VmZml4JywKICAgICAgICApCgogICAgTm90ZSB0aGF0IFNvbWVWZXJzaW9uIGFuZCBTdWZmaXggYXJlIG9wdGlvbmFsIGFuZCBtYXkgYmUgTm9uZQogICAgaWYgbm90IHByZXNlbnQuCiAgICAiIiIKICAgIGlzX2R5bGliID0gRFlMSUJfUkUubWF0Y2goZmlsZW5hbWUpCiAgICBpZiBub3QgaXNfZHlsaWI6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIHJldHVybiBpc19keWxpYi5ncm91cGRpY3QoKQpQSwMEFAAAAAAAAiCjVksKQx5UAAAAVAAAAB4AAABjdHlwZXMvbWFjaG9saWIvZmV0Y2hfbWFjaG9saWIjIS9iaW4vc2gKc3ZuIGV4cG9ydCAtLWZvcmNlIGh0dHA6Ly9zdm4ucmVkLWJlYW4uY29tL2JvYi9tYWNob2xpYi90cnVuay9tYWNob2xpYi8gLgpQSwMEFAAAAAAAAiCjVu67IB9LAAAASwAAACIAAABjdHlwZXMvbWFjaG9saWIvZmV0Y2hfbWFjaG9saWIuYmF0c3ZuIGV4cG9ydCAtLWZvcmNlIGh0dHA6Ly9zdm4ucmVkLWJlYW4uY29tL2JvYi9tYWNob2xpYi90cnVuay9tYWNob2xpYi8gLg0KUEsDBBQAAAAAAAIgo1ZlkukHUQQAAFEEAAAcAAAAY3R5cGVzL21hY2hvbGliL2ZyYW1ld29yay5weSIiIgpHZW5lcmljIGZyYW1ld29yayBwYXRoIG1hbmlwdWxhdGlvbgoiIiIKCmltcG9ydCByZQoKX19hbGxfXyA9IFsnZnJhbWV3b3JrX2luZm8nXQoKU1RSSUNUX0ZSQU1FV09SS19SRSA9IHJlLmNvbXBpbGUociIiIig/eCkKKD9QPGxvY2F0aW9uPl4uKikoPzpefC8pCig/UDxuYW1lPgogICAgKD9QPHNob3J0bmFtZT5cdyspLmZyYW1ld29yay8KICAgICg/OlZlcnNpb25zLyg/UDx2ZXJzaW9uPlteL10rKS8pPwogICAgKD9QPXNob3J0bmFtZSkKICAgICg/Ol8oP1A8c3VmZml4PlteX10rKSk/CikkCiIiIikKCmRlZiBmcmFtZXdvcmtfaW5mbyhmaWxlbmFtZSk6CiAgICAiIiIKICAgIEEgZnJhbWV3b3JrIG5hbWUgY2FuIHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgZm91ciBmb3JtczoKICAgICAgICBMb2NhdGlvbi9OYW1lLmZyYW1ld29yay9WZXJzaW9ucy9Tb21lVmVyc2lvbi9OYW1lX1N1ZmZpeAogICAgICAgIExvY2F0aW9uL05hbWUuZnJhbWV3b3JrL1ZlcnNpb25zL1NvbWVWZXJzaW9uL05hbWUKICAgICAgICBMb2NhdGlvbi9OYW1lLmZyYW1ld29yay9OYW1lX1N1ZmZpeAogICAgICAgIExvY2F0aW9uL05hbWUuZnJhbWV3b3JrL05hbWUKCiAgICByZXR1cm5zIE5vbmUgaWYgbm90IGZvdW5kLCBvciBhIG1hcHBpbmcgZXF1aXZhbGVudCB0bzoKICAgICAgICBkaWN0KAogICAgICAgICAgICBsb2NhdGlvbj0nTG9jYXRpb24nLAogICAgICAgICAgICBuYW1lPSdOYW1lLmZyYW1ld29yay9WZXJzaW9ucy9Tb21lVmVyc2lvbi9OYW1lX1N1ZmZpeCcsCiAgICAgICAgICAgIHNob3J0bmFtZT0nTmFtZScsCiAgICAgICAgICAgIHZlcnNpb249J1NvbWVWZXJzaW9uJywKICAgICAgICAgICAgc3VmZml4PSdTdWZmaXgnLAogICAgICAgICkKCiAgICBOb3RlIHRoYXQgU29tZVZlcnNpb24gYW5kIFN1ZmZpeCBhcmUgb3B0aW9uYWwgYW5kIG1heSBiZSBOb25lCiAgICBpZiBub3QgcHJlc2VudAogICAgIiIiCiAgICBpc19mcmFtZXdvcmsgPSBTVFJJQ1RfRlJBTUVXT1JLX1JFLm1hdGNoKGZpbGVuYW1lKQogICAgaWYgbm90IGlzX2ZyYW1ld29yazoKICAgICAgICByZXR1cm4gTm9uZQogICAgcmV0dXJuIGlzX2ZyYW1ld29yay5ncm91cGRpY3QoKQpQSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAAAsAAABlbWFpbC9taW1lL1BLAwQUAAAAAAACIKNWDHrqLeYGAADmBgAAEQAAAGVtYWlsL19faW5pdF9fLnB5IyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgojIEF1dGhvcjogQmFycnkgV2Fyc2F3CiMgQ29udGFjdDogZW1haWwtc2lnQHB5dGhvbi5vcmcKCiIiIkEgcGFja2FnZSBmb3IgcGFyc2luZywgaGFuZGxpbmcsIGFuZCBnZW5lcmF0aW5nIGVtYWlsIG1lc3NhZ2VzLiIiIgoKX19hbGxfXyA9IFsKICAgICdiYXNlNjRtaW1lJywKICAgICdjaGFyc2V0JywKICAgICdlbmNvZGVycycsCiAgICAnZXJyb3JzJywKICAgICdmZWVkcGFyc2VyJywKICAgICdnZW5lcmF0b3InLAogICAgJ2hlYWRlcicsCiAgICAnaXRlcmF0b3JzJywKICAgICdtZXNzYWdlJywKICAgICdtZXNzYWdlX2Zyb21fZmlsZScsCiAgICAnbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlJywKICAgICdtZXNzYWdlX2Zyb21fc3RyaW5nJywKICAgICdtZXNzYWdlX2Zyb21fYnl0ZXMnLAogICAgJ21pbWUnLAogICAgJ3BhcnNlcicsCiAgICAncXVvcHJpbWltZScsCiAgICAndXRpbHMnLAogICAgXQoKCgwKIyBTb21lIGNvbnZlbmllbmNlIHJvdXRpbmVzLiAgRG9uJ3QgaW1wb3J0IFBhcnNlciBhbmQgTWVzc2FnZSBhcyBzaWRlLWVmZmVjdHMKIyBvZiBpbXBvcnRpbmcgZW1haWwgc2luY2UgdGhvc2UgY2FzY2FkaW5nbHkgaW1wb3J0IG1vc3Qgb2YgdGhlIHJlc3Qgb2YgdGhlCiMgZW1haWwgcGFja2FnZS4KZGVmIG1lc3NhZ2VfZnJvbV9zdHJpbmcocywgKmFyZ3MsICoqa3dzKToKICAgICIiIlBhcnNlIGEgc3RyaW5nIGludG8gYSBNZXNzYWdlIG9iamVjdCBtb2RlbC4KCiAgICBPcHRpb25hbCBfY2xhc3MgYW5kIHN0cmljdCBhcmUgcGFzc2VkIHRvIHRoZSBQYXJzZXIgY29uc3RydWN0b3IuCiAgICAiIiIKICAgIGZyb20gZW1haWwucGFyc2VyIGltcG9ydCBQYXJzZXIKICAgIHJldHVybiBQYXJzZXIoKmFyZ3MsICoqa3dzKS5wYXJzZXN0cihzKQoKZGVmIG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCAqYXJncywgKiprd3MpOgogICAgIiIiUGFyc2UgYSBieXRlcyBzdHJpbmcgaW50byBhIE1lc3NhZ2Ugb2JqZWN0IG1vZGVsLgoKICAgIE9wdGlvbmFsIF9jbGFzcyBhbmQgc3RyaWN0IGFyZSBwYXNzZWQgdG8gdGhlIFBhcnNlciBjb25zdHJ1Y3Rvci4KICAgICIiIgogICAgZnJvbSBlbWFpbC5wYXJzZXIgaW1wb3J0IEJ5dGVzUGFyc2VyCiAgICByZXR1cm4gQnl0ZXNQYXJzZXIoKmFyZ3MsICoqa3dzKS5wYXJzZWJ5dGVzKHMpCgpkZWYgbWVzc2FnZV9mcm9tX2ZpbGUoZnAsICphcmdzLCAqKmt3cyk6CiAgICAiIiJSZWFkIGEgZmlsZSBhbmQgcGFyc2UgaXRzIGNvbnRlbnRzIGludG8gYSBNZXNzYWdlIG9iamVjdCBtb2RlbC4KCiAgICBPcHRpb25hbCBfY2xhc3MgYW5kIHN0cmljdCBhcmUgcGFzc2VkIHRvIHRoZSBQYXJzZXIgY29uc3RydWN0b3IuCiAgICAiIiIKICAgIGZyb20gZW1haWwucGFyc2VyIGltcG9ydCBQYXJzZXIKICAgIHJldHVybiBQYXJzZXIoKmFyZ3MsICoqa3dzKS5wYXJzZShmcCkKCmRlZiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsICphcmdzLCAqKmt3cyk6CiAgICAiIiJSZWFkIGEgYmluYXJ5IGZpbGUgYW5kIHBhcnNlIGl0cyBjb250ZW50cyBpbnRvIGEgTWVzc2FnZSBvYmplY3QgbW9kZWwuCgogICAgT3B0aW9uYWwgX2NsYXNzIGFuZCBzdHJpY3QgYXJlIHBhc3NlZCB0byB0aGUgUGFyc2VyIGNvbnN0cnVjdG9yLgogICAgIiIiCiAgICBmcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgQnl0ZXNQYXJzZXIKICAgIHJldHVybiBCeXRlc1BhcnNlcigqYXJncywgKiprd3MpLnBhcnNlKGZwKQpQSwMEFAAAAAAAAiCjViQdH1ZdIQAAXSEAABcAAABlbWFpbC9fZW5jb2RlZF93b3Jkcy5weSIiIiBSb3V0aW5lcyBmb3IgbWFuaXB1bGF0aW5nIFJGQzIwNDcgZW5jb2RlZCB3b3Jkcy4KClRoaXMgaXMgY3VycmVudGx5IGEgcGFja2FnZS1wcml2YXRlIEFQSSwgYnV0IHdpbGwgYmUgY29uc2lkZXJlZCBmb3IgcHJvbW90aW9uCnRvIGEgcHVibGljIEFQSSBpZiB0aGVyZSBpcyBkZW1hbmQuCgoiIiIKCiMgQW4gZWNvZGVkIHdvcmQgbG9va3MgbGlrZSB0aGlzOgojCiMgICAgICAgID0/Y2hhcnNldFsqbGFuZ10/Y3RlP2VuY29kZWRfc3RyaW5nPz0KIwojIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNoYXJzZXQgc2VlIHRoZSBjaGFyc2V0IG1vZHVsZS4gIEhlcmUgaXQgaXMgb25lCiMgb2YgdGhlIHByZWZlcnJlZCBNSU1FIGNoYXJzZXQgbmFtZXMgKGhvcGVmdWxseTsgeW91IG5ldmVyIGtub3cgd2hlbiBwYXJzaW5nKS4KIyBjdGUgKENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcpIGlzIGVpdGhlciAncScgb3IgJ2InIChpZ25vcmluZyBjYXNlKS4gIEluCiMgdGhlb3J5IG90aGVyIGxldHRlcnMgY291bGQgYmUgdXNlZCBmb3Igb3RoZXIgZW5jb2RpbmdzLCBidXQgaW4gcHJhY3RpY2UgdGhpcwojIChhbG1vc3Q/KSBuZXZlciBoYXBwZW5zLiAgVGhlcmUgY291bGQgYmUgYSBwdWJsaWMgQVBJIGZvciBhZGRpbmcgZW50cmllcwojIHRvIHRoZSBDVEUgdGFibGVzLCBidXQgWUFHTkkgZm9yIG5vdy4gICdxJyBpcyBRdW90ZWQgUHJpbnRhYmxlLCAnYicgaXMKIyBCYXNlNjQuICBUaGUgbWVhbmluZyBvZiBlbmNvZGVkX3N0cmluZyBzaG91bGQgYmUgb2J2aW91cy4gICdsYW5nJyBpcyBvcHRpb25hbAojIGFzIGluZGljYXRlZCBieSB0aGUgYnJhY2tldHMgKHRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBzeW50YXgpIGJ1dCBpcyBhbG1vc3QKIyBuZXZlciBlbmNvdW50ZXJlZCBpbiBwcmFjdGljZS4KIwojIFRoZSBnZW5lcmFsIGludGVyZmFjZSBmb3IgYSBDVEUgZGVjb2RlciBpcyB0aGF0IGl0IHRha2VzIHRoZSBlbmNvZGVkX3N0cmluZwojIGFzIGl0cyBhcmd1bWVudCwgYW5kIHJldHVybnMgYSB0dXBsZSAoY3RlX2RlY29kZWRfc3RyaW5nLCBkZWZlY3RzKS4gIFRoZQojIGN0ZV9kZWNvZGVkX3N0cmluZyBpcyB0aGUgb3JpZ2luYWwgYmluYXJ5IHRoYXQgd2FzIGVuY29kZWQgdXNpbmcgdGhlCiMgc3BlY2lmaWVkIGN0ZS4gICdkZWZlY3RzJyBpcyBhIGxpc3Qgb2YgTWVzc2FnZURlZmVjdCBpbnN0YW5jZXMgaW5kaWNhdGluZyBhbnkKIyBwcm9ibGVtcyBlbmNvdW50ZXJlZCBkdXJpbmcgY29udmVyc2lvbi4gICdjaGFyc2V0JyBhbmQgJ2xhbmcnIGFyZSB0aGUKIyBjb3JyZXNwb25kaW5nIHN0cmluZ3MgZXh0cmFjdGVkIGZyb20gdGhlIEVXLCBjYXNlIHByZXNlcnZlZC4KIwojIFRoZSBnZW5lcmFsIGludGVyZmFjZSBmb3IgYSBDVEUgZW5jb2RlciBpcyB0aGF0IGl0IHRha2VzIGEgYmluYXJ5IHNlcXVlbmNlCiMgYXMgaW5wdXQgYW5kIHJldHVybnMgdGhlIGN0ZV9lbmNvZGVkX3N0cmluZywgd2hpY2ggaXMgYW4gYXNjaWktb25seSBzdHJpbmcuCiMKIyBFYWNoIGRlY29kZXIgbXVzdCBhbHNvIHN1cHBseSBhIGxlbmd0aCBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBiaW5hcnkKIyBzZXF1ZW5jZSBhcyBpdHMgYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIGVuY29kZWQKIyBzdHJpbmcuCiMKIyBUaGUgbWFpbiBBUEkgZnVuY3Rpb25zIGZvciB0aGUgbW9kdWxlIGFyZSBkZWNvZGUsIHdoaWNoIGNhbGxzIHRoZSBkZWNvZGVyCiMgcmVmZXJlbmNlZCBieSB0aGUgY3RlIHNwZWNpZmllciwgYW5kIGVuY29kZSwgd2hpY2ggYWRkcyB0aGUgYXBwcm9wcmlhdGUKIyBSRkMgMjA0NyAiY2hyb21lIiB0byB0aGUgZW5jb2RlZCBzdHJpbmcsIGFuZCBjYW4gb3B0aW9uYWxseSBhdXRvbWF0aWNhbGx5CiMgc2VsZWN0IHRoZSBzaG9ydGVzdCBwb3NzaWJsZSBlbmNvZGluZy4gIFNlZSB0aGVpciBkb2NzdHJpbmdzIGJlbG93IGZvcgojIGRldGFpbHMuCgppbXBvcnQgcmUKaW1wb3J0IGJhc2U2NAppbXBvcnQgYmluYXNjaWkKaW1wb3J0IGZ1bmN0b29scwpmcm9tIHN0cmluZyBpbXBvcnQgYXNjaWlfbGV0dGVycywgZGlnaXRzCmZyb20gZW1haWwgaW1wb3J0IGVycm9ycwoKX19hbGxfXyA9IFsnZGVjb2RlX3EnLAogICAgICAgICAgICdlbmNvZGVfcScsCiAgICAgICAgICAgJ2RlY29kZV9iJywKICAgICAgICAgICAnZW5jb2RlX2InLAogICAgICAgICAgICdsZW5fcScsCiAgICAgICAgICAgJ2xlbl9iJywKICAgICAgICAgICAnZGVjb2RlJywKICAgICAgICAgICAnZW5jb2RlJywKICAgICAgICAgICBdCgojCiMgUXVvdGVkIFByaW50YWJsZQojCgojIHJlZ2V4IGJhc2VkIGRlY29kZXIuCl9xX2J5dGVfc3ViYmVyID0gZnVuY3Rvb2xzLnBhcnRpYWwocmUuY29tcGlsZShicic9KFthLWZBLUYwLTldezJ9KScpLnN1YiwKICAgICAgICBsYW1iZGEgbTogYnl0ZXMuZnJvbWhleChtLmdyb3VwKDEpLmRlY29kZSgpKSkKCmRlZiBkZWNvZGVfcShlbmNvZGVkKToKICAgIGVuY29kZWQgPSBlbmNvZGVkLnJlcGxhY2UoYidfJywgYicgJykKICAgIHJldHVybiBfcV9ieXRlX3N1YmJlcihlbmNvZGVkKSwgW10KCgojIGRpY3QgbWFwcGluZyBieXRlcyB0byB0aGVpciBlbmNvZGVkIGZvcm0KY2xhc3MgX1FCeXRlTWFwKGRpY3QpOgoKICAgIHNhZmUgPSBiJy0hKisvJyArIGFzY2lpX2xldHRlcnMuZW5jb2RlKCdhc2NpaScpICsgZGlnaXRzLmVuY29kZSgnYXNjaWknKQoKICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOgogICAgICAgIGlmIGtleSBpbiBzZWxmLnNhZmU6CiAgICAgICAgICAgIHNlbGZba2V5XSA9IGNocihrZXkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZltrZXldID0gIj17OjAyWH0iLmZvcm1hdChrZXkpCiAgICAgICAgcmV0dXJuIHNlbGZba2V5XQoKX3FfYnl0ZV9tYXAgPSBfUUJ5dGVNYXAoKQoKIyBJbiBoZWFkZXJzIHNwYWNlcyBhcmUgbWFwcGVkIHRvICdfJy4KX3FfYnl0ZV9tYXBbb3JkKCcgJyldID0gJ18nCgpkZWYgZW5jb2RlX3EoYnN0cmluZyk6CiAgICByZXR1cm4gJycuam9pbihfcV9ieXRlX21hcFt4XSBmb3IgeCBpbiBic3RyaW5nKQoKZGVmIGxlbl9xKGJzdHJpbmcpOgogICAgcmV0dXJuIHN1bShsZW4oX3FfYnl0ZV9tYXBbeF0pIGZvciB4IGluIGJzdHJpbmcpCgoKIwojIEJhc2U2NAojCgpkZWYgZGVjb2RlX2IoZW5jb2RlZCk6CiAgICAjIEZpcnN0IHRyeSBlbmNvZGluZyB3aXRoIHZhbGlkYXRlPVRydWUsIGZpeGluZyB0aGUgcGFkZGluZyBpZiBuZWVkZWQuCiAgICAjIFRoaXMgd2lsbCBzdWNjZWVkIG9ubHkgaWYgZW5jb2RlZCBpbmNsdWRlcyBubyBpbnZhbGlkIGNoYXJhY3RlcnMuCiAgICBwYWRfZXJyID0gbGVuKGVuY29kZWQpICUgNAogICAgbWlzc2luZ19wYWRkaW5nID0gYic9PT0nWzo0LXBhZF9lcnJdIGlmIHBhZF9lcnIgZWxzZSBiJycKICAgIHRyeToKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBiYXNlNjQuYjY0ZGVjb2RlKGVuY29kZWQgKyBtaXNzaW5nX3BhZGRpbmcsIHZhbGlkYXRlPVRydWUpLAogICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0KCldIGlmIHBhZF9lcnIgZWxzZSBbXSwKICAgICAgICApCiAgICBleGNlcHQgYmluYXNjaWkuRXJyb3I6CiAgICAgICAgIyBTaW5jZSB3ZSBoYWQgY29ycmVjdCBwYWRkaW5nLCB0aGlzIGlzIGxpa2VseSBhbiBpbnZhbGlkIGNoYXIgZXJyb3IuCiAgICAgICAgIwogICAgICAgICMgVGhlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzIGFyZSBpZ25vcmVkIGFzIGZhciBhcyBwYWRkaW5nCiAgICAgICAgIyBnb2VzLCBidXQgd2UgZG9uJ3Qga25vdyBob3cgbWFueSB0aGVyZSBhcmUuICBTbyB0cnkgd2l0aG91dCBhZGRpbmcKICAgICAgICAjIHBhZGRpbmcgdG8gc2VlIGlmIGl0IHdvcmtzLgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRkZWNvZGUoZW5jb2RlZCwgdmFsaWRhdGU9RmFsc2UpLAogICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCgpXSwKICAgICAgICAgICAgKQogICAgICAgIGV4Y2VwdCBiaW5hc2NpaS5FcnJvcjoKICAgICAgICAgICAgIyBBZGQgYXMgbXVjaCBwYWRkaW5nIGFzIGNvdWxkIHBvc3NpYmx5IGJlIG5lY2Vzc2FyeSAoZXh0cmEgcGFkZGluZwogICAgICAgICAgICAjIGlzIGlnbm9yZWQpLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gKAogICAgICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRkZWNvZGUoZW5jb2RlZCArIGInPT0nLCB2YWxpZGF0ZT1GYWxzZSksCiAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCgpLAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3QoKV0sCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGV4Y2VwdCBiaW5hc2NpaS5FcnJvcjoKICAgICAgICAgICAgICAgICMgVGhpcyBvbmx5IGhhcHBlbnMgd2hlbiB0aGUgZW5jb2RlZCBzdHJpbmcncyBsZW5ndGggaXMgMSBtb3JlCiAgICAgICAgICAgICAgICAjIHRoYW4gYSBtdWx0aXBsZSBvZiA0LCB3aGljaCBpcyBpbnZhbGlkLgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyBicG8tMjczOTc6IEp1c3QgcmV0dXJuIHRoZSBlbmNvZGVkIHN0cmluZyBzaW5jZSB0aGVyZSdzIG5vCiAgICAgICAgICAgICAgICAjIHdheSB0byBkZWNvZGUuCiAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZCwgW2Vycm9ycy5JbnZhbGlkQmFzZTY0TGVuZ3RoRGVmZWN0KCldCgpkZWYgZW5jb2RlX2IoYnN0cmluZyk6CiAgICByZXR1cm4gYmFzZTY0LmI2NGVuY29kZShic3RyaW5nKS5kZWNvZGUoJ2FzY2lpJykKCmRlZiBsZW5fYihic3RyaW5nKToKICAgIGdyb3Vwc19vZl8zLCBsZWZ0b3ZlciA9IGRpdm1vZChsZW4oYnN0cmluZyksIDMpCiAgICAjIDQgYnl0ZXMgb3V0IGZvciBlYWNoIDMgYnl0ZXMgKG9yIG5vbnplcm8gZnJhY3Rpb24gdGhlcmVvZikgaW4uCiAgICByZXR1cm4gZ3JvdXBzX29mXzMgKiA0ICsgKDQgaWYgbGVmdG92ZXIgZWxzZSAwKQoKCl9jdGVfZGVjb2RlcnMgPSB7CiAgICAncSc6IGRlY29kZV9xLAogICAgJ2InOiBkZWNvZGVfYiwKICAgIH0KCmRlZiBkZWNvZGUoZXcpOgogICAgIiIiRGVjb2RlIGVuY29kZWQgd29yZCBhbmQgcmV0dXJuIChzdHJpbmcsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMpIHR1cGxlLgoKICAgIEFuIFJGQyAyMDQ3LzIyNDMgZW5jb2RlZCB3b3JkIGhhcyB0aGUgZm9ybToKCiAgICAgICAgPT9jaGFyc2V0Kmxhbmc/Y3RlP2VuY29kZWRfc3RyaW5nPz0KCiAgICB3aGVyZSAnKmxhbmcnIG1heSBiZSBvbWl0dGVkIGJ1dCB0aGUgb3RoZXIgcGFydHMgbWF5IG5vdCBiZS4KCiAgICBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgZXhhY3RseSBzdWNoIGEgc3RyaW5nICh0aGF0IGlzLCBpdCBkb2VzIG5vdCBjaGVjayB0aGUKICAgIHN5bnRheCBhbmQgbWF5IHJhaXNlIGVycm9ycyBpZiB0aGUgc3RyaW5nIGlzIG5vdCB3ZWxsIGZvcm1lZCksIGFuZCByZXR1cm5zCiAgICB0aGUgZW5jb2RlZF9zdHJpbmcgZGVjb2RlZCBmaXJzdCBmcm9tIGl0cyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIGFuZAogICAgdGhlbiBmcm9tIHRoZSByZXN1bHRpbmcgYnl0ZXMgaW50byB1bmljb2RlIHVzaW5nIHRoZSBzcGVjaWZpZWQgY2hhcnNldC4gIElmCiAgICB0aGUgY3RlLWRlY29kZWQgc3RyaW5nIGRvZXMgbm90IHN1Y2Nlc3NmdWxseSBkZWNvZGUgdXNpbmcgdGhlIHNwZWNpZmllZAogICAgY2hhcmFjdGVyIHNldCwgYSBkZWZlY3QgaXMgYWRkZWQgdG8gdGhlIGRlZmVjdHMgbGlzdCBhbmQgdGhlIHVua25vd24gb2N0ZXRzCiAgICBhcmUgcmVwbGFjZWQgYnkgdGhlIHVuaWNvZGUgJ3Vua25vd24nIGNoYXJhY3RlciBcXHVGREZGLgoKICAgIFRoZSBzcGVjaWZpZWQgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgYXJlIHJldHVybmVkLiAgVGhlIGRlZmF1bHQgZm9yIGxhbmd1YWdlLAogICAgd2hpY2ggaXMgcmFyZWx5IGlmIGV2ZXIgZW5jb3VudGVyZWQsIGlzIHRoZSBlbXB0eSBzdHJpbmcuCgogICAgIiIiCiAgICBfLCBjaGFyc2V0LCBjdGUsIGN0ZV9zdHJpbmcsIF8gPSBldy5zcGxpdCgnPycpCiAgICBjaGFyc2V0LCBfLCBsYW5nID0gY2hhcnNldC5wYXJ0aXRpb24oJyonKQogICAgY3RlID0gY3RlLmxvd2VyKCkKICAgICMgUmVjb3ZlciB0aGUgb3JpZ2luYWwgYnl0ZXMgYW5kIGRvIENURSBkZWNvZGluZy4KICAgIGJzdHJpbmcgPSBjdGVfc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgIGJzdHJpbmcsIGRlZmVjdHMgPSBfY3RlX2RlY29kZXJzW2N0ZV0oYnN0cmluZykKICAgICMgVHVybiB0aGUgQ1RFIGRlY29kZWQgYnl0ZXMgaW50byB1bmljb2RlLgogICAgdHJ5OgogICAgICAgIHN0cmluZyA9IGJzdHJpbmcuZGVjb2RlKGNoYXJzZXQpCiAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KCJFbmNvZGVkIHdvcmQgIgogICAgICAgICAgICBmImNvbnRhaW5zIGJ5dGVzIG5vdCBkZWNvZGFibGUgdXNpbmcge2NoYXJzZXQhcn0gY2hhcnNldCIpKQogICAgICAgIHN0cmluZyA9IGJzdHJpbmcuZGVjb2RlKGNoYXJzZXQsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgZXhjZXB0IChMb29rdXBFcnJvciwgVW5pY29kZUVuY29kZUVycm9yKToKICAgICAgICBzdHJpbmcgPSBic3RyaW5nLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICBpZiBjaGFyc2V0Lmxvd2VyKCkgIT0gJ3Vua25vd24tOGJpdCc6CiAgICAgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5DaGFyc2V0RXJyb3IoZiJVbmtub3duIGNoYXJzZXQge2NoYXJzZXQhcn0gIgogICAgICAgICAgICAgICAgZiJpbiBlbmNvZGVkIHdvcmQ7IGRlY29kZWQgYXMgdW5rbm93biBieXRlcyIpKQogICAgcmV0dXJuIHN0cmluZywgY2hhcnNldCwgbGFuZywgZGVmZWN0cwoKCl9jdGVfZW5jb2RlcnMgPSB7CiAgICAncSc6IGVuY29kZV9xLAogICAgJ2InOiBlbmNvZGVfYiwKICAgIH0KCl9jdGVfZW5jb2RlX2xlbmd0aCA9IHsKICAgICdxJzogbGVuX3EsCiAgICAnYic6IGxlbl9iLAogICAgfQoKZGVmIGVuY29kZShzdHJpbmcsIGNoYXJzZXQ9J3V0Zi04JywgZW5jb2Rpbmc9Tm9uZSwgbGFuZz0nJyk6CiAgICAiIiJFbmNvZGUgc3RyaW5nIHVzaW5nIHRoZSBDVEUgZW5jb2RpbmcgdGhhdCBwcm9kdWNlcyB0aGUgc2hvcnRlciByZXN1bHQuCgogICAgUHJvZHVjZXMgYW4gUkZDIDIwNDcvMjI0MyBlbmNvZGVkIHdvcmQgb2YgdGhlIGZvcm06CgogICAgICAgID0/Y2hhcnNldCpsYW5nP2N0ZT9lbmNvZGVkX3N0cmluZz89CgogICAgd2hlcmUgJypsYW5nJyBpcyBvbWl0dGVkIHVubGVzcyB0aGUgJ2xhbmcnIHBhcmFtZXRlciBpcyBnaXZlbiBhIHZhbHVlLgogICAgT3B0aW9uYWwgYXJndW1lbnQgY2hhcnNldCAoZGVmYXVsdHMgdG8gdXRmLTgpIHNwZWNpZmllcyB0aGUgY2hhcnNldCB0byB1c2UKICAgIHRvIGVuY29kZSB0aGUgc3RyaW5nIHRvIGJpbmFyeSBiZWZvcmUgQ1RFIGVuY29kaW5nIGl0LiAgT3B0aW9uYWwgYXJndW1lbnQKICAgICdlbmNvZGluZycgaXMgdGhlIGN0ZSBzcGVjaWZpZXIgZm9yIHRoZSBlbmNvZGluZyB0aGF0IHNob3VsZCBiZSB1c2VkICgncScKICAgIG9yICdiJyk7IGlmIGl0IGlzIE5vbmUgKHRoZSBkZWZhdWx0KSB0aGUgZW5jb2Rpbmcgd2hpY2ggcHJvZHVjZXMgdGhlCiAgICBzaG9ydGVzdCBlbmNvZGVkIHNlcXVlbmNlIGlzIHVzZWQsIGV4Y2VwdCB0aGF0ICdxJyBpcyBwcmVmZXJyZWQgaWYgaXQgaXMgdXAKICAgIHRvIGZpdmUgY2hhcmFjdGVycyBsb25nZXIuICBPcHRpb25hbCBhcmd1bWVudCAnbGFuZycgKGRlZmF1bHQgJycpIGdpdmVzIHRoZQogICAgUkZDIDIyNDMgbGFuZ3VhZ2Ugc3RyaW5nIHRvIHNwZWNpZnkgaW4gdGhlIGVuY29kZWQgd29yZC4KCiAgICAiIiIKICAgIGlmIGNoYXJzZXQgPT0gJ3Vua25vd24tOGJpdCc6CiAgICAgICAgYnN0cmluZyA9IHN0cmluZy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICBlbHNlOgogICAgICAgIGJzdHJpbmcgPSBzdHJpbmcuZW5jb2RlKGNoYXJzZXQpCiAgICBpZiBlbmNvZGluZyBpcyBOb25lOgogICAgICAgIHFsZW4gPSBfY3RlX2VuY29kZV9sZW5ndGhbJ3EnXShic3RyaW5nKQogICAgICAgIGJsZW4gPSBfY3RlX2VuY29kZV9sZW5ndGhbJ2InXShic3RyaW5nKQogICAgICAgICMgQmlhcyB0b3dhcmQgcS4gIDUgaXMgYXJiaXRyYXJ5LgogICAgICAgIGVuY29kaW5nID0gJ3EnIGlmIHFsZW4gLSBibGVuIDwgNSBlbHNlICdiJwogICAgZW5jb2RlZCA9IF9jdGVfZW5jb2RlcnNbZW5jb2RpbmddKGJzdHJpbmcpCiAgICBpZiBsYW5nOgogICAgICAgIGxhbmcgPSAnKicgKyBsYW5nCiAgICByZXR1cm4gIj0/e317fT97fT97fT89Ii5mb3JtYXQoY2hhcnNldCwgbGFuZywgZW5jb2RpbmcsIGVuY29kZWQpClBLAwQUAAAAAAACIKNW1JEHpOahAQDmoQEAHQAAAGVtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IiIiSGVhZGVyIHZhbHVlIHBhcnNlciBpbXBsZW1lbnRpbmcgdmFyaW91cyBlbWFpbC1yZWxhdGVkIFJGQyBwYXJzaW5nIHJ1bGVzLgoKVGhlIHBhcnNpbmcgbWV0aG9kcyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIGltcGxlbWVudCB2YXJpb3VzIGVtYWlsIHJlbGF0ZWQKcGFyc2luZyBydWxlcy4gIFByaW5jaXBhbCBhbW9uZyB0aGVtIGlzIFJGQyA1MzIyLCB3aGljaCBpcyB0aGUgZm9sbG93b24KdG8gUkZDIDI4MjIgYW5kIHByaW1hcmlseSBhIGNsYXJpZmljYXRpb24gb2YgdGhlIGZvcm1lci4gIEl0IGFsc28gaW1wbGVtZW50cwpSRkMgMjA0NyBlbmNvZGVkIHdvcmQgZGVjb2RpbmcuCgpSRkMgNTMyMiBnb2VzIHRvIGNvbnNpZGVyYWJsZSB0cm91YmxlIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aApSRkMgODIyIGluIHRoZSBwYXJzZSBwaGFzZSwgd2hpbGUgY2xlYW5pbmcgdXAgdGhlIHN0cnVjdHVyZSBvbiB0aGUgZ2VuZXJhdGlvbgpwaGFzZS4gIFRoaXMgcGFyc2VyIHN1cHBvcnRzIGNvcnJlY3QgUkZDIDUzMjIgZ2VuZXJhdGlvbiBieSB0YWdnaW5nIHdoaXRlIHNwYWNlCmFzIGZvbGRpbmcgd2hpdGUgc3BhY2Ugb25seSB3aGVuIGZvbGRpbmcgaXMgYWxsb3dlZCBpbiB0aGUgbm9uLW9ic29sZXRlIHJ1bGUKc2V0cy4gIEFjdHVhbGx5LCB0aGUgcGFyc2VyIGlzIGV2ZW4gbW9yZSBnZW5lcm91cyB3aGVuIGFjY2VwdGluZyBpbnB1dCB0aGFuIFJGQwo1MzIyIG1hbmRhdGVzLCBmb2xsb3dpbmcgdGhlIHNwaXJpdCBvZiBQb3N0ZWwncyBMYXcsIHdoaWNoIFJGQyA1MzIyIGVuY291cmFnZXMuCldoZXJlIHBvc3NpYmxlIGRldmlhdGlvbnMgZnJvbSB0aGUgc3RhbmRhcmQgYXJlIGFubm90YXRlZCBvbiB0aGUgJ2RlZmVjdHMnCmF0dHJpYnV0ZSBvZiB0b2tlbnMgdGhhdCBkZXZpYXRlLgoKVGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZSBwYXJzZXIgZm9sbG93cyBSRkMgNTMyMiwgYW5kIHVzZXMgaXRzIHRlcm1pbm9sb2d5CndoZXJlIHRoZXJlIGlzIGEgZGlyZWN0IGNvcnJlc3BvbmRlbmNlLiAgV2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGEKc29tZXdoYXQgZGlmZmVyZW50IHN0cnVjdHVyZSB0aGFuIHRoYXQgdXNlZCBieSB0aGUgZm9ybWFsIGdyYW1tYXIsIG5ldyB0ZXJtcwp0aGF0IG1pbWljIHRoZSBjbG9zZXN0IGV4aXN0aW5nIHRlcm1zIGFyZSB1c2VkLiAgVGh1cywgaXQgcmVhbGx5IGhlbHBzIHRvIGhhdmUKYSBjb3B5IG9mIFJGQyA1MzIyIGhhbmR5IHdoZW4gc3R1ZHlpbmcgdGhpcyBjb2RlLgoKSW5wdXQgdG8gdGhlIHBhcnNlciBpcyBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5mb2xkZWQgYWNjb3JkaW5nIHRvClJGQyA1MzIyIHJ1bGVzLiAgQWNjb3JkaW5nIHRvIHRoZSBSRkMgdGhpcyB1bmZvbGRpbmcgaXMgdGhlIHZlcnkgZmlyc3Qgc3RlcCwgYW5kCnRoaXMgcGFyc2VyIGxlYXZlcyB0aGUgdW5mb2xkaW5nIHN0ZXAgdG8gYSBoaWdoZXIgbGV2ZWwgbWVzc2FnZSBwYXJzZXIsIHdoaWNoCndpbGwgaGF2ZSBhbHJlYWR5IGRldGVjdGVkIHRoZSBsaW5lIGJyZWFrcyB0aGF0IG5lZWQgdW5mb2xkaW5nIHdoaWxlCmRldGVybWluaW5nIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBlYWNoIGhlYWRlci4KClRoZSBvdXRwdXQgb2YgdGhlIHBhcnNlciBpcyBhIFRva2VuTGlzdCBvYmplY3QsIHdoaWNoIGlzIGEgbGlzdCBzdWJjbGFzcy4gIEEKVG9rZW5MaXN0IGlzIGEgcmVjdXJzaXZlIGRhdGEgc3RydWN0dXJlLiAgVGhlIHRlcm1pbmFsIG5vZGVzIG9mIHRoZSBzdHJ1Y3R1cmUKYXJlIFRlcm1pbmFsIG9iamVjdHMsIHdoaWNoIGFyZSBzdWJjbGFzc2VzIG9mIHN0ci4gIFRoZXNlIGRvIG5vdCBjb3JyZXNwb25kCmRpcmVjdGx5IHRvIHRlcm1pbmFsIG9iamVjdHMgaW4gdGhlIGZvcm1hbCBncmFtbWFyLCBidXQgYXJlIGluc3RlYWQgbW9yZQpwcmFjdGljYWwgaGlnaGVyIGxldmVsIGNvbWJpbmF0aW9ucyBvZiB0cnVlIHRlcm1pbmFscy4KCkFsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgaGF2ZSBhICd2YWx1ZScgYXR0cmlidXRlLCB3aGljaCBwcm9kdWNlcyB0aGUKc2VtYW50aWNhbGx5IG1lYW5pbmdmdWwgdmFsdWUgb2YgdGhhdCBwYXJ0IG9mIHRoZSBwYXJzZSBzdWJ0cmVlLiAgVGhlIHZhbHVlIG9mCmFsbCB3aGl0ZXNwYWNlIHRva2VucyAobm8gbWF0dGVyIGhvdyBtYW55IHN1Yi10b2tlbnMgdGhleSBtYXkgY29udGFpbikgaXMgYQpzaW5nbGUgc3BhY2UsIGFzIHBlciB0aGUgUkZDIHJ1bGVzLiAgVGhpcyBpbmNsdWRlcyAnQ0ZXUycsIHdoaWNoIGlzIGhlcmVpbgppbmNsdWRlZCBpbiB0aGUgZ2VuZXJhbCBjbGFzcyBvZiB3aGl0ZXNwYWNlIHRva2Vucy4gIFRoZXJlIGlzIG9uZSBleGNlcHRpb24gdG8KdGhlIHJ1bGUgdGhhdCB3aGl0ZXNwYWNlIHRva2VucyBhcmUgY29sbGFwc2VkIGludG8gc2luZ2xlIHNwYWNlcyBpbiB2YWx1ZXM6IGluCnRoZSB2YWx1ZSBvZiBhICdiYXJlLXF1b3RlZC1zdHJpbmcnIChhIHF1b3RlZC1zdHJpbmcgd2l0aCBubyBsZWFkaW5nIG9yCnRyYWlsaW5nIHdoaXRlc3BhY2UpLCBhbnkgd2hpdGVzcGFjZSB0aGF0IGFwcGVhcmVkIGJldHdlZW4gdGhlIHF1b3RhdGlvbiBtYXJrcwppcyBwcmVzZXJ2ZWQgaW4gdGhlIHJldHVybmVkIHZhbHVlLiAgTm90ZSB0aGF0IGluIGFsbCBUZXJtaW5hbCBzdHJpbmdzIHF1b3RlZApwYWlycyBhcmUgdHVybmVkIGludG8gdGhlaXIgdW5xdW90ZWQgdmFsdWVzLgoKQWxsIFRva2VuTGlzdCBhbmQgVGVybWluYWwgb2JqZWN0cyBhbHNvIGhhdmUgYSBzdHJpbmcgdmFsdWUsIHdoaWNoIGF0dGVtcHRzIHRvCmJlIGEgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gb2YgdGhlIFJGQy1jb21wbGlhbnQgZm9ybSBvZiB0aGUgc3Vic3RyaW5nIHRoYXQKcHJvZHVjZWQgdGhlIHBhcnNlZCBzdWJ0cmVlLCBpbmNsdWRpbmcgbWluaW1hbCB1c2Ugb2YgcXVvdGVkIHBhaXIgcXVvdGluZy4KV2hpdGVzcGFjZSBydW5zIGFyZSBub3QgY29sbGFwc2VkLgoKQ29tbWVudCB0b2tlbnMgYWxzbyBoYXZlIGEgJ2NvbnRlbnQnIGF0dHJpYnV0ZSBwcm92aWRpbmcgdGhlIHN0cmluZyBmb3VuZApiZXR3ZWVuIHRoZSBwYXJlbnMgKGluY2x1ZGluZyBhbnkgbmVzdGVkIGNvbW1lbnRzKSB3aXRoIHdoaXRlc3BhY2UgcHJlc2VydmVkLgoKQWxsIFRva2VuTGlzdCBhbmQgVGVybWluYWwgb2JqZWN0cyBoYXZlIGEgJ2RlZmVjdHMnIGF0dHJpYnV0ZSB3aGljaCBpcyBhCnBvc3NpYmx5IGVtcHR5IGxpc3QgYWxsIG9mIHRoZSBkZWZlY3RzIGZvdW5kIHdoaWxlIGNyZWF0aW5nIHRoZSB0b2tlbi4gIERlZmVjdHMKbWF5IGFwcGVhciBvbiBhbnkgdG9rZW4gaW4gdGhlIHRyZWUsIGFuZCBhIGNvbXBvc2l0ZSBsaXN0IG9mIGFsbCBkZWZlY3RzIGluIHRoZQpzdWJ0cmVlIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSAnYWxsX2RlZmVjdHMnIGF0dHJpYnV0ZSBvZiBhbnkgbm9kZS4gIChGb3IKVGVybWluYWwgbm90ZXMgeC5kZWZlY3RzID09IHguYWxsX2RlZmVjdHMuKQoKRWFjaCBvYmplY3QgaW4gYSBwYXJzZSB0cmVlIGlzIGNhbGxlZCBhICd0b2tlbicsIGFuZCBlYWNoIGhhcyBhICd0b2tlbl90eXBlJwphdHRyaWJ1dGUgdGhhdCBnaXZlcyB0aGUgbmFtZSBmcm9tIHRoZSBSRkMgNTMyMiBncmFtbWFyIHRoYXQgaXQgcmVwcmVzZW50cy4KTm90IGFsbCBSRkMgNTMyMiBub2RlcyBhcmUgcHJvZHVjZWQsIGFuZCB0aGVyZSBpcyBvbmUgbm9uLVJGQyA1MzIyIG5vZGUgdGhhdAptYXkgYmUgcHJvZHVjZWQ6ICdwdGV4dCcuICBBICdwdGV4dCcgaXMgYSBzdHJpbmcgb2YgcHJpbnRhYmxlIGFzY2lpIGNoYXJhY3RlcnMuCkl0IGlzIHJldHVybmVkIGluIHBsYWNlIG9mIGxpc3RzIG9mIChjdGV4dC9xdW90ZWQtcGFpcikgYW5kCihxdGV4dC9xdW90ZWQtcGFpcikuCgpYWFg6IHByb3ZpZGUgY29tcGxldGUgbGlzdCBvZiB0b2tlbiB0eXBlcy4KIiIiCgppbXBvcnQgcmUKaW1wb3J0IHN5cwppbXBvcnQgdXJsbGliICAgIyBGb3IgdXJsbGliLnBhcnNlLnVucXVvdGUKZnJvbSBzdHJpbmcgaW1wb3J0IGhleGRpZ2l0cwpmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCmZyb20gZW1haWwgaW1wb3J0IF9lbmNvZGVkX3dvcmRzIGFzIF9ldwpmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKCiMKIyBVc2VmdWwgY29uc3RhbnRzIGFuZCBmdW5jdGlvbnMKIwoKV1NQID0gc2V0KCcgXHQnKQpDRldTX0xFQURFUiA9IFdTUCB8IHNldCgnKCcpClNQRUNJQUxTID0gc2V0KHInKCk8PkAsOjsuXCJbXScpCkFUT01fRU5EUyA9IFNQRUNJQUxTIHwgV1NQCkRPVF9BVE9NX0VORFMgPSBBVE9NX0VORFMgLSBzZXQoJy4nKQojICcuJywgJyInLCBhbmQgJygnIGRvIG5vdCBlbmQgcGhyYXNlcyBpbiBvcmRlciB0byBzdXBwb3J0IG9icy1waHJhc2UKUEhSQVNFX0VORFMgPSBTUEVDSUFMUyAtIHNldCgnLiIoJykKVFNQRUNJQUxTID0gKFNQRUNJQUxTIHwgc2V0KCcvPz0nKSkgLSBzZXQoJy4nKQpUT0tFTl9FTkRTID0gVFNQRUNJQUxTIHwgV1NQCkFTUEVDSUFMUyA9IFRTUEVDSUFMUyB8IHNldCgiKiclIikKQVRUUklCVVRFX0VORFMgPSBBU1BFQ0lBTFMgfCBXU1AKRVhURU5ERURfQVRUUklCVVRFX0VORFMgPSBBVFRSSUJVVEVfRU5EUyAtIHNldCgnJScpCgpkZWYgcXVvdGVfc3RyaW5nKHZhbHVlKToKICAgIHJldHVybiAnIicrc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgnIicsIHInXCInKSsnIicKCiMgTWF0Y2ggYSBSRkMgMjA0NyB3b3JkLCBsb29rcyBsaWtlID0/dXRmLTg/cT9zb21ld29yZD89CnJmYzIwNDdfbWF0Y2hlciA9IHJlLmNvbXBpbGUocicnJwogICA9XD8gICAgICAgICAgICAjIGxpdGVyYWwgPT8KICAgW14/XSogICAgICAgICAgIyBjaGFyc2V0CiAgIFw/ICAgICAgICAgICAgICMgbGl0ZXJhbCA/CiAgIFtxUWJCXSAgICAgICAgICMgbGl0ZXJhbCAncScgb3IgJ2InLCBjYXNlIGluc2Vuc2l0aXZlCiAgIFw/ICAgICAgICAgICAgICMgbGl0ZXJhbCA/CiAgLio/ICAgICAgICAgICAgICMgZW5jb2RlZCB3b3JkCiAgXD89ICAgICAgICAgICAgICMgbGl0ZXJhbCA/PQonJycsIHJlLlZFUkJPU0UgfCByZS5NVUxUSUxJTkUpCgoKIwojIFRva2VuTGlzdCBhbmQgaXRzIHN1YmNsYXNzZXMKIwoKY2xhc3MgVG9rZW5MaXN0KGxpc3QpOgoKICAgIHRva2VuX3R5cGUgPSBOb25lCiAgICBzeW50YWN0aWNfYnJlYWsgPSBUcnVlCiAgICBld19jb21iaW5lX2FsbG93ZWQgPSBUcnVlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3KQogICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAne30oe30pJy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoKS5fX3JlcHJfXygpKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiAnJy5qb2luKHgudmFsdWUgZm9yIHggaW4gc2VsZiBpZiB4LnZhbHVlKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFsbF9kZWZlY3RzKHNlbGYpOgogICAgICAgIHJldHVybiBzdW0oKHguYWxsX2RlZmVjdHMgZm9yIHggaW4gc2VsZiksIHNlbGYuZGVmZWN0cykKCiAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGZbMF0uc3RhcnRzd2l0aF9md3MoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFzX2V3X2FsbG93ZWQoc2VsZik6CiAgICAgICAgIiIiVHJ1ZSBpZiBhbGwgdG9wIGxldmVsIHRva2VucyBvZiB0aGlzIHBhcnQgbWF5IGJlIFJGQzIwNDcgZW5jb2RlZC4iIiIKICAgICAgICByZXR1cm4gYWxsKHBhcnQuYXNfZXdfYWxsb3dlZCBmb3IgcGFydCBpbiBzZWxmKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNvbW1lbnRzKHNlbGYpOgogICAgICAgIGNvbW1lbnRzID0gW10KICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKICAgICAgICAgICAgY29tbWVudHMuZXh0ZW5kKHRva2VuLmNvbW1lbnRzKQogICAgICAgIHJldHVybiBjb21tZW50cwoKICAgIGRlZiBmb2xkKHNlbGYsICosIHBvbGljeSk6CiAgICAgICAgcmV0dXJuIF9yZWZvbGRfcGFyc2VfdHJlZShzZWxmLCBwb2xpY3k9cG9saWN5KQoKICAgIGRlZiBwcHJpbnQoc2VsZiwgaW5kZW50PScnKToKICAgICAgICBwcmludChzZWxmLnBwc3RyKGluZGVudD1pbmRlbnQpKQoKICAgIGRlZiBwcHN0cihzZWxmLCBpbmRlbnQ9JycpOgogICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5fcHAoaW5kZW50PWluZGVudCkpCgogICAgZGVmIF9wcChzZWxmLCBpbmRlbnQ9JycpOgogICAgICAgIHlpZWxkICd7fXt9L3t9KCcuZm9ybWF0KAogICAgICAgICAgICBpbmRlbnQsCiAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICBzZWxmLnRva2VuX3R5cGUpCiAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CiAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHRva2VuLCAnX3BwJyk6CiAgICAgICAgICAgICAgICB5aWVsZCAoaW5kZW50ICsgJyAgICAhISBpbnZhbGlkIGVsZW1lbnQgaW4gdG9rZW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpc3Q6IHshcn0nLmZvcm1hdCh0b2tlbikpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHRva2VuLl9wcChpbmRlbnQrJyAgICAnKQogICAgICAgIGlmIHNlbGYuZGVmZWN0czoKICAgICAgICAgICAgZXh0cmEgPSAnIERlZmVjdHM6IHt9Jy5mb3JtYXQoc2VsZi5kZWZlY3RzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGV4dHJhID0gJycKICAgICAgICB5aWVsZCAne30pe30nLmZvcm1hdChpbmRlbnQsIGV4dHJhKQoKCmNsYXNzIFdoaXRlU3BhY2VUb2tlbkxpc3QoVG9rZW5MaXN0KToKCiAgICBAcHJvcGVydHkKICAgIGRlZiB2YWx1ZShzZWxmKToKICAgICAgICByZXR1cm4gJyAnCgogICAgQHByb3BlcnR5CiAgICBkZWYgY29tbWVudHMoc2VsZik6CiAgICAgICAgcmV0dXJuIFt4LmNvbnRlbnQgZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdjb21tZW50J10KCgpjbGFzcyBVbnN0cnVjdHVyZWRUb2tlbkxpc3QoVG9rZW5MaXN0KToKICAgIHRva2VuX3R5cGUgPSAndW5zdHJ1Y3R1cmVkJwoKCmNsYXNzIFBocmFzZShUb2tlbkxpc3QpOgogICAgdG9rZW5fdHlwZSA9ICdwaHJhc2UnCgpjbGFzcyBXb3JkKFRva2VuTGlzdCk6CiAgICB0b2tlbl90eXBlID0gJ3dvcmQnCgoKY2xhc3MgQ0ZXU0xpc3QoV2hpdGVTcGFjZVRva2VuTGlzdCk6CiAgICB0b2tlbl90eXBlID0gJ2Nmd3MnCgoKY2xhc3MgQXRvbShUb2tlbkxpc3QpOgogICAgdG9rZW5fdHlwZSA9ICdhdG9tJwoKCmNsYXNzIFRva2VuKFRva2VuTGlzdCk6CiAgICB0b2tlbl90eXBlID0gJ3Rva2VuJwogICAgZW5jb2RlX2FzX2V3ID0gRmFsc2UKCgpjbGFzcyBFbmNvZGVkV29yZChUb2tlbkxpc3QpOgogICAgdG9rZW5fdHlwZSA9ICdlbmNvZGVkLXdvcmQnCiAgICBjdGUgPSBOb25lCiAgICBjaGFyc2V0ID0gTm9uZQogICAgbGFuZyA9IE5vbmUKCgpjbGFzcyBRdW90ZWRTdHJpbmcoVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ3F1b3RlZC1zdHJpbmcnCgogICAgQHByb3BlcnR5CiAgICBkZWYgY29udGVudChzZWxmKToKICAgICAgICBmb3IgeCBpbiBzZWxmOgogICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CiAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHF1b3RlZF92YWx1ZShzZWxmKToKICAgICAgICByZXMgPSBbXQogICAgICAgIGZvciB4IGluIHNlbGY6CiAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHgpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVzLmFwcGVuZCh4LnZhbHVlKQogICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKCiAgICBAcHJvcGVydHkKICAgIGRlZiBzdHJpcHBlZF92YWx1ZShzZWxmKToKICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi52YWx1ZQoKCmNsYXNzIEJhcmVRdW90ZWRTdHJpbmcoUXVvdGVkU3RyaW5nKToKCiAgICB0b2tlbl90eXBlID0gJ2JhcmUtcXVvdGVkLXN0cmluZycKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gcXVvdGVfc3RyaW5nKCcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiAnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKQoKCmNsYXNzIENvbW1lbnQoV2hpdGVTcGFjZVRva2VuTGlzdCk6CgogICAgdG9rZW5fdHlwZSA9ICdjb21tZW50JwoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJy5qb2luKHN1bShbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIigiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLnF1b3RlKHgpIGZvciB4IGluIHNlbGZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyIpIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBbXSkpCgogICAgZGVmIHF1b3RlKHNlbGYsIHZhbHVlKToKICAgICAgICBpZiB2YWx1ZS50b2tlbl90eXBlID09ICdjb21tZW50JzoKICAgICAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkKICAgICAgICByZXR1cm4gc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgcidcKCcpLnJlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsIHInXCknKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNvbnRlbnQoc2VsZik6CiAgICAgICAgcmV0dXJuICcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpCgogICAgQHByb3BlcnR5CiAgICBkZWYgY29tbWVudHMoc2VsZik6CiAgICAgICAgcmV0dXJuIFtzZWxmLmNvbnRlbnRdCgpjbGFzcyBBZGRyZXNzTGlzdChUb2tlbkxpc3QpOgoKICAgIHRva2VuX3R5cGUgPSAnYWRkcmVzcy1saXN0JwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFkZHJlc3NlcyhzZWxmKToKICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJ10KCiAgICBAcHJvcGVydHkKICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHN1bSgoeC5tYWlsYm94ZXMKICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J2FkZHJlc3MnKSwgW10pCgogICAgQHByb3BlcnR5CiAgICBkZWYgYWxsX21haWxib3hlcyhzZWxmKToKICAgICAgICByZXR1cm4gc3VtKCh4LmFsbF9tYWlsYm94ZXMKICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J2FkZHJlc3MnKSwgW10pCgoKY2xhc3MgQWRkcmVzcyhUb2tlbkxpc3QpOgoKICAgIHRva2VuX3R5cGUgPSAnYWRkcmVzcycKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdncm91cCc6CiAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1haWxib3hlcyhzZWxmKToKICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ21haWxib3gnOgogICAgICAgICAgICByZXR1cm4gW3NlbGZbMF1dCiAgICAgICAgZWxpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ2ludmFsaWQtbWFpbGJveCc6CiAgICAgICAgICAgIHJldHVybiBbXQogICAgICAgIHJldHVybiBzZWxmWzBdLm1haWxib3hlcwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CiAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdtYWlsYm94JzoKICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQogICAgICAgIGVsaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdpbnZhbGlkLW1haWxib3gnOgogICAgICAgICAgICByZXR1cm4gW3NlbGZbMF1dCiAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWxsX21haWxib3hlcwoKY2xhc3MgTWFpbGJveExpc3QoVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ21haWxib3gtbGlzdCcKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIFt4IGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nbWFpbGJveCddCgogICAgQHByb3BlcnR5CiAgICBkZWYgYWxsX21haWxib3hlcyhzZWxmKToKICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZgogICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgaW4gKCdtYWlsYm94JywgJ2ludmFsaWQtbWFpbGJveCcpXQoKCmNsYXNzIEdyb3VwTGlzdChUb2tlbkxpc3QpOgoKICAgIHRva2VuX3R5cGUgPSAnZ3JvdXAtbGlzdCcKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYgb3Igc2VsZlswXS50b2tlbl90eXBlICE9ICdtYWlsYm94LWxpc3QnOgogICAgICAgICAgICByZXR1cm4gW10KICAgICAgICByZXR1cm4gc2VsZlswXS5tYWlsYm94ZXMKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGZbMF0udG9rZW5fdHlwZSAhPSAnbWFpbGJveC1saXN0JzoKICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWxsX21haWxib3hlcwoKCmNsYXNzIEdyb3VwKFRva2VuTGlzdCk6CgogICAgdG9rZW5fdHlwZSA9ICJncm91cCIKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CiAgICAgICAgaWYgc2VsZlsyXS50b2tlbl90eXBlICE9ICdncm91cC1saXN0JzoKICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgcmV0dXJuIHNlbGZbMl0ubWFpbGJveGVzCgogICAgQHByb3BlcnR5CiAgICBkZWYgYWxsX21haWxib3hlcyhzZWxmKToKICAgICAgICBpZiBzZWxmWzJdLnRva2VuX3R5cGUgIT0gJ2dyb3VwLWxpc3QnOgogICAgICAgICAgICByZXR1cm4gW10KICAgICAgICByZXR1cm4gc2VsZlsyXS5hbGxfbWFpbGJveGVzCgogICAgQHByb3BlcnR5CiAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQoKCmNsYXNzIE5hbWVBZGRyKFRva2VuTGlzdCk6CgogICAgdG9rZW5fdHlwZSA9ICduYW1lLWFkZHInCgogICAgQHByb3BlcnR5CiAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgIGlmIGxlbihzZWxmKSA9PSAxOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmxvY2FsX3BhcnQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkb21haW4oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmRvbWFpbgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHJvdXRlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmWy0xXS5yb3V0ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZlstMV0uYWRkcl9zcGVjCgoKY2xhc3MgQW5nbGVBZGRyKFRva2VuTGlzdCk6CgogICAgdG9rZW5fdHlwZSA9ICdhbmdsZS1hZGRyJwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CiAgICAgICAgZm9yIHggaW4gc2VsZjoKICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdhZGRyLXNwZWMnOgogICAgICAgICAgICAgICAgcmV0dXJuIHgubG9jYWxfcGFydAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRvbWFpbihzZWxmKToKICAgICAgICBmb3IgeCBpbiBzZWxmOgogICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2FkZHItc3BlYyc6CiAgICAgICAgICAgICAgICByZXR1cm4geC5kb21haW4KCiAgICBAcHJvcGVydHkKICAgIGRlZiByb3V0ZShzZWxmKToKICAgICAgICBmb3IgeCBpbiBzZWxmOgogICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ29icy1yb3V0ZSc6CiAgICAgICAgICAgICAgICByZXR1cm4geC5kb21haW5zCgogICAgQHByb3BlcnR5CiAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgogICAgICAgIGZvciB4IGluIHNlbGY6CiAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYWRkci1zcGVjJzoKICAgICAgICAgICAgICAgIGlmIHgubG9jYWxfcGFydDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5hZGRyX3NwZWMKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHF1b3RlX3N0cmluZyh4LmxvY2FsX3BhcnQpICsgeC5hZGRyX3NwZWMKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gJzw+JwoKCmNsYXNzIE9ic1JvdXRlKFRva2VuTGlzdCk6CgogICAgdG9rZW5fdHlwZSA9ICdvYnMtcm91dGUnCgogICAgQHByb3BlcnR5CiAgICBkZWYgZG9tYWlucyhzZWxmKToKICAgICAgICByZXR1cm4gW3guZG9tYWluIGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlID09ICdkb21haW4nXQoKCmNsYXNzIE1haWxib3goVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ21haWxib3gnCgogICAgQHByb3BlcnR5CiAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbmFtZS1hZGRyJzoKICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCgogICAgQHByb3BlcnR5CiAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZlswXS5sb2NhbF9wYXJ0CgogICAgQHByb3BlcnR5CiAgICBkZWYgZG9tYWluKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmWzBdLmRvbWFpbgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHJvdXRlKHNlbGYpOgogICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbmFtZS1hZGRyJzoKICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0ucm91dGUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWRkcl9zcGVjCgoKY2xhc3MgSW52YWxpZE1haWxib3goVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBsb2NhbF9wYXJ0ID0gZG9tYWluID0gcm91dGUgPSBhZGRyX3NwZWMgPSBkaXNwbGF5X25hbWUKCgpjbGFzcyBEb21haW4oVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ2RvbWFpbicKICAgIGFzX2V3X2FsbG93ZWQgPSBGYWxzZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRvbWFpbihzZWxmKToKICAgICAgICByZXR1cm4gJycuam9pbihzdXBlcigpLnZhbHVlLnNwbGl0KCkpCgoKY2xhc3MgRG90QXRvbShUb2tlbkxpc3QpOgogICAgdG9rZW5fdHlwZSA9ICdkb3QtYXRvbScKCgpjbGFzcyBEb3RBdG9tVGV4dChUb2tlbkxpc3QpOgogICAgdG9rZW5fdHlwZSA9ICdkb3QtYXRvbS10ZXh0JwogICAgYXNfZXdfYWxsb3dlZCA9IFRydWUKCgpjbGFzcyBOb0ZvbGRMaXRlcmFsKFRva2VuTGlzdCk6CiAgICB0b2tlbl90eXBlID0gJ25vLWZvbGQtbGl0ZXJhbCcKICAgIGFzX2V3X2FsbG93ZWQgPSBGYWxzZQoKCmNsYXNzIEFkZHJTcGVjKFRva2VuTGlzdCk6CgogICAgdG9rZW5fdHlwZSA9ICdhZGRyLXNwZWMnCiAgICBhc19ld19hbGxvd2VkID0gRmFsc2UKCiAgICBAcHJvcGVydHkKICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmWzBdLmxvY2FsX3BhcnQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkb21haW4oc2VsZik6CiAgICAgICAgaWYgbGVuKHNlbGYpIDwgMzoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZlstMV0uZG9tYWluCgogICAgQHByb3BlcnR5CiAgICBkZWYgdmFsdWUoc2VsZik6CiAgICAgICAgaWYgbGVuKHNlbGYpIDwgMzoKICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUKICAgICAgICByZXR1cm4gc2VsZlswXS52YWx1ZS5yc3RyaXAoKStzZWxmWzFdLnZhbHVlK3NlbGZbMl0udmFsdWUubHN0cmlwKCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CiAgICAgICAgbmFtZXNldCA9IHNldChzZWxmLmxvY2FsX3BhcnQpCiAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtRE9UX0FUT01fRU5EUyk6CiAgICAgICAgICAgIGxwID0gcXVvdGVfc3RyaW5nKHNlbGYubG9jYWxfcGFydCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBscCA9IHNlbGYubG9jYWxfcGFydAogICAgICAgIGlmIHNlbGYuZG9tYWluIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gbHAgKyAnQCcgKyBzZWxmLmRvbWFpbgogICAgICAgIHJldHVybiBscAoKCmNsYXNzIE9ic0xvY2FsUGFydChUb2tlbkxpc3QpOgoKICAgIHRva2VuX3R5cGUgPSAnb2JzLWxvY2FsLXBhcnQnCiAgICBhc19ld19hbGxvd2VkID0gRmFsc2UKCgpjbGFzcyBEaXNwbGF5TmFtZShQaHJhc2UpOgoKICAgIHRva2VuX3R5cGUgPSAnZGlzcGxheS1uYW1lJwogICAgZXdfY29tYmluZV9hbGxvd2VkID0gRmFsc2UKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgcmVzID0gVG9rZW5MaXN0KHNlbGYpCiAgICAgICAgaWYgbGVuKHJlcykgPT0gMDoKICAgICAgICAgICAgcmV0dXJuIHJlcy52YWx1ZQogICAgICAgIGlmIHJlc1swXS50b2tlbl90eXBlID09ICdjZndzJzoKICAgICAgICAgICAgcmVzLnBvcCgwKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHJlc1swXVswXS50b2tlbl90eXBlID09ICdjZndzJzoKICAgICAgICAgICAgICAgIHJlc1swXSA9IFRva2VuTGlzdChyZXNbMF1bMTpdKQogICAgICAgIGlmIHJlc1stMV0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CiAgICAgICAgICAgIHJlcy5wb3AoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHJlc1stMV1bLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgogICAgICAgICAgICAgICAgcmVzWy0xXSA9IFRva2VuTGlzdChyZXNbLTFdWzotMV0pCiAgICAgICAgcmV0dXJuIHJlcy52YWx1ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZhbHVlKHNlbGYpOgogICAgICAgIHF1b3RlID0gRmFsc2UKICAgICAgICBpZiBzZWxmLmRlZmVjdHM6CiAgICAgICAgICAgIHF1b3RlID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZvciB4IGluIHNlbGY6CiAgICAgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ3F1b3RlZC1zdHJpbmcnOgogICAgICAgICAgICAgICAgICAgIHF1b3RlID0gVHJ1ZQogICAgICAgIGlmIGxlbihzZWxmKSAhPSAwIGFuZCBxdW90ZToKICAgICAgICAgICAgcHJlID0gcG9zdCA9ICcnCiAgICAgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZT09J2Nmd3MnIG9yIHNlbGZbMF1bMF0udG9rZW5fdHlwZT09J2Nmd3MnOgogICAgICAgICAgICAgICAgcHJlID0gJyAnCiAgICAgICAgICAgIGlmIHNlbGZbLTFdLnRva2VuX3R5cGU9PSdjZndzJyBvciBzZWxmWy0xXVstMV0udG9rZW5fdHlwZT09J2Nmd3MnOgogICAgICAgICAgICAgICAgcG9zdCA9ICcgJwogICAgICAgICAgICByZXR1cm4gcHJlK3F1b3RlX3N0cmluZyhzZWxmLmRpc3BsYXlfbmFtZSkrcG9zdAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnZhbHVlCgoKY2xhc3MgTG9jYWxQYXJ0KFRva2VuTGlzdCk6CgogICAgdG9rZW5fdHlwZSA9ICdsb2NhbC1wYXJ0JwogICAgYXNfZXdfYWxsb3dlZCA9IEZhbHNlCgogICAgQHByb3BlcnR5CiAgICBkZWYgdmFsdWUoc2VsZik6CiAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICJxdW90ZWQtc3RyaW5nIjoKICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0ucXVvdGVkX3ZhbHVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgogICAgICAgICMgU3RyaXAgd2hpdGVzcGFjZSBmcm9tIGZyb250LCBiYWNrLCBhbmQgYXJvdW5kIGRvdHMuCiAgICAgICAgcmVzID0gW0RPVF0KICAgICAgICBsYXN0ID0gRE9UCiAgICAgICAgbGFzdF9pc190bCA9IEZhbHNlCiAgICAgICAgZm9yIHRvayBpbiBzZWxmWzBdICsgW0RPVF06CiAgICAgICAgICAgIGlmIHRvay50b2tlbl90eXBlID09ICdjZndzJzoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGlmIChsYXN0X2lzX3RsIGFuZCB0b2sudG9rZW5fdHlwZSA9PSAnZG90JyBhbmQKICAgICAgICAgICAgICAgICAgICBsYXN0Wy0xXS50b2tlbl90eXBlID09ICdjZndzJyk6CiAgICAgICAgICAgICAgICByZXNbLTFdID0gVG9rZW5MaXN0KGxhc3RbOi0xXSkKICAgICAgICAgICAgaXNfdGwgPSBpc2luc3RhbmNlKHRvaywgVG9rZW5MaXN0KQogICAgICAgICAgICBpZiAoaXNfdGwgYW5kIGxhc3QudG9rZW5fdHlwZSA9PSAnZG90JyBhbmQKICAgICAgICAgICAgICAgICAgICB0b2tbMF0udG9rZW5fdHlwZSA9PSAnY2Z3cycpOgogICAgICAgICAgICAgICAgcmVzLmFwcGVuZChUb2tlbkxpc3QodG9rWzE6XSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHRvaykKICAgICAgICAgICAgbGFzdCA9IHJlc1stMV0KICAgICAgICAgICAgbGFzdF9pc190bCA9IGlzX3RsCiAgICAgICAgcmVzID0gVG9rZW5MaXN0KHJlc1sxOi0xXSkKICAgICAgICByZXR1cm4gcmVzLnZhbHVlCgoKY2xhc3MgRG9tYWluTGl0ZXJhbChUb2tlbkxpc3QpOgoKICAgIHRva2VuX3R5cGUgPSAnZG9tYWluLWxpdGVyYWwnCiAgICBhc19ld19hbGxvd2VkID0gRmFsc2UKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkb21haW4oc2VsZik6CiAgICAgICAgcmV0dXJuICcnLmpvaW4oc3VwZXIoKS52YWx1ZS5zcGxpdCgpKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGlwKHNlbGYpOgogICAgICAgIGZvciB4IGluIHNlbGY6CiAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAncHRleHQnOgogICAgICAgICAgICAgICAgcmV0dXJuIHgudmFsdWUKCgpjbGFzcyBNSU1FVmVyc2lvbihUb2tlbkxpc3QpOgoKICAgIHRva2VuX3R5cGUgPSAnbWltZS12ZXJzaW9uJwogICAgbWFqb3IgPSBOb25lCiAgICBtaW5vciA9IE5vbmUKCgpjbGFzcyBQYXJhbWV0ZXIoVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ3BhcmFtZXRlcicKICAgIHNlY3Rpb25lZCA9IEZhbHNlCiAgICBleHRlbmRlZCA9IEZhbHNlCiAgICBjaGFyc2V0ID0gJ3VzLWFzY2lpJwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHNlY3Rpb25fbnVtYmVyKHNlbGYpOgogICAgICAgICMgQmVjYXVzZSB0aGUgZmlyc3QgdG9rZW4sIHRoZSBhdHRyaWJ1dGUgKG5hbWUpIGVhdHMgQ0ZXUywgdGhlIHNlY29uZAogICAgICAgICMgdG9rZW4gaXMgYWx3YXlzIHRoZSBzZWN0aW9uIGlmIHRoZXJlIGlzIG9uZS4KICAgICAgICByZXR1cm4gc2VsZlsxXS5udW1iZXIgaWYgc2VsZi5zZWN0aW9uZWQgZWxzZSAwCgogICAgQHByb3BlcnR5CiAgICBkZWYgcGFyYW1fdmFsdWUoc2VsZik6CiAgICAgICAgIyBUaGlzIGlzIHBhcnQgb2YgdGhlICJoYW5kbGUgcXVvdGVkIGV4dGVuZGVkIHBhcmFtZXRlcnMiIGhhY2suCiAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CiAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ3ZhbHVlJzoKICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi5zdHJpcHBlZF92YWx1ZQogICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJzoKICAgICAgICAgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbjoKICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICd2YWx1ZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnN0cmlwcGVkX3ZhbHVlCiAgICAgICAgcmV0dXJuICcnCgoKY2xhc3MgSW52YWxpZFBhcmFtZXRlcihQYXJhbWV0ZXIpOgoKICAgIHRva2VuX3R5cGUgPSAnaW52YWxpZC1wYXJhbWV0ZXInCgoKY2xhc3MgQXR0cmlidXRlKFRva2VuTGlzdCk6CgogICAgdG9rZW5fdHlwZSA9ICdhdHRyaWJ1dGUnCgogICAgQHByb3BlcnR5CiAgICBkZWYgc3RyaXBwZWRfdmFsdWUoc2VsZik6CiAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CiAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUuZW5kc3dpdGgoJ2F0dHJ0ZXh0Jyk6CiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4udmFsdWUKCmNsYXNzIFNlY3Rpb24oVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ3NlY3Rpb24nCiAgICBudW1iZXIgPSBOb25lCgoKY2xhc3MgVmFsdWUoVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ3ZhbHVlJwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHN0cmlwcGVkX3ZhbHVlKHNlbGYpOgogICAgICAgIHRva2VuID0gc2VsZlswXQogICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgogICAgICAgICAgICB0b2tlbiA9IHNlbGZbMV0KICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlLmVuZHN3aXRoKAogICAgICAgICAgICAgICAgKCdxdW90ZWQtc3RyaW5nJywgJ2F0dHJpYnV0ZScsICdleHRlbmRlZC1hdHRyaWJ1dGUnKSk6CiAgICAgICAgICAgIHJldHVybiB0b2tlbi5zdHJpcHBlZF92YWx1ZQogICAgICAgIHJldHVybiBzZWxmLnZhbHVlCgoKY2xhc3MgTWltZVBhcmFtZXRlcnMoVG9rZW5MaXN0KToKCiAgICB0b2tlbl90eXBlID0gJ21pbWUtcGFyYW1ldGVycycKICAgIHN5bnRhY3RpY19icmVhayA9IEZhbHNlCgogICAgQHByb3BlcnR5CiAgICBkZWYgcGFyYW1zKHNlbGYpOgogICAgICAgICMgVGhlIFJGQyBzcGVjaWZpY2FsbHkgc3RhdGVzIHRoYXQgdGhlIG9yZGVyaW5nIG9mIHBhcmFtZXRlcnMgaXMgbm90CiAgICAgICAgIyBndWFyYW50ZWVkIGFuZCBtYXkgYmUgcmVvcmRlcmVkIGJ5IHRoZSB0cmFuc3BvcnQgbGF5ZXIuICBTbyB3ZSBoYXZlCiAgICAgICAgIyB0byBhc3N1bWUgdGhlIFJGQyAyMjMxIHBpZWNlcyBjYW4gY29tZSBpbiBhbnkgb3JkZXIuICBIb3dldmVyLCB3ZQogICAgICAgICMgb3V0cHV0IHRoZW0gaW4gdGhlIG9yZGVyIHRoYXQgd2UgZmlyc3Qgc2VlIGEgZ2l2ZW4gbmFtZSwgd2hpY2ggZ2l2ZXMKICAgICAgICAjIHVzIGEgc3RhYmxlIF9fc3RyX18uCiAgICAgICAgcGFyYW1zID0ge30gICMgVXNpbmcgb3JkZXIgcHJlc2VydmluZyBkaWN0IGZyb20gUHl0aG9uIDMuNysKICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKICAgICAgICAgICAgaWYgbm90IHRva2VuLnRva2VuX3R5cGUuZW5kc3dpdGgoJ3BhcmFtZXRlcicpOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaWYgdG9rZW5bMF0udG9rZW5fdHlwZSAhPSAnYXR0cmlidXRlJzoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIG5hbWUgPSB0b2tlblswXS52YWx1ZS5zdHJpcCgpCiAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHBhcmFtczoKICAgICAgICAgICAgICAgIHBhcmFtc1tuYW1lXSA9IFtdCiAgICAgICAgICAgIHBhcmFtc1tuYW1lXS5hcHBlbmQoKHRva2VuLnNlY3Rpb25fbnVtYmVyLCB0b2tlbikpCiAgICAgICAgZm9yIG5hbWUsIHBhcnRzIGluIHBhcmFtcy5pdGVtcygpOgogICAgICAgICAgICBwYXJ0cyA9IHNvcnRlZChwYXJ0cywga2V5PWl0ZW1nZXR0ZXIoMCkpCiAgICAgICAgICAgIGZpcnN0X3BhcmFtID0gcGFydHNbMF1bMV0KICAgICAgICAgICAgY2hhcnNldCA9IGZpcnN0X3BhcmFtLmNoYXJzZXQKICAgICAgICAgICAgIyBPdXIgYXJiaXRyYXJ5IGVycm9yIHJlY292ZXJ5IGlzIHRvIGlnbm9yZSBkdXBsaWNhdGUgcGFyYW1ldGVycywKICAgICAgICAgICAgIyB0byB1c2UgYXBwZWFyYW5jZSBvcmRlciBpZiB0aGVyZSBhcmUgZHVwbGljYXRlIHJmYyAyMjMxIHBhcnRzLAogICAgICAgICAgICAjIGFuZCB0byBpZ25vcmUgZ2Fwcy4gIFRoaXMgbWltaWNzIHRoZSBlcnJvciByZWNvdmVyeSBvZiBnZXRfcGFyYW0uCiAgICAgICAgICAgIGlmIG5vdCBmaXJzdF9wYXJhbS5leHRlbmRlZCBhbmQgbGVuKHBhcnRzKSA+IDE6CiAgICAgICAgICAgICAgICBpZiBwYXJ0c1sxXVswXSA9PSAwOgogICAgICAgICAgICAgICAgICAgIHBhcnRzWzFdWzFdLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAgICAgICAgICAgICAnZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lOyBkdXBsaWNhdGUocykgaWdub3JlZCcpKQogICAgICAgICAgICAgICAgICAgIHBhcnRzID0gcGFydHNbOjFdCiAgICAgICAgICAgICAgICAjIEVsc2UgYXNzdW1lIHRoZSAqMCogd2FzIG1pc3NpbmcuLi5ub3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICMgZnJvbSBnZXRfcGFyYW0sIGJ1dCB3ZSByZWdpc3RlcmVkIGEgZGVmZWN0IGZvciB0aGlzIGVhcmxpZXIuCiAgICAgICAgICAgIHZhbHVlX3BhcnRzID0gW10KICAgICAgICAgICAgaSA9IDAKICAgICAgICAgICAgZm9yIHNlY3Rpb25fbnVtYmVyLCBwYXJhbSBpbiBwYXJ0czoKICAgICAgICAgICAgICAgIGlmIHNlY3Rpb25fbnVtYmVyICE9IGk6CiAgICAgICAgICAgICAgICAgICAgIyBXZSBjb3VsZCBnZXQgZmFuY2llciBoZXJlIGFuZCBsb29rIGZvciBhIGNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgIyBkdXBsaWNhdGUgZXh0ZW5kZWQgcGFyYW1ldGVyIGFuZCBpZ25vcmUgdGhlIHNlY29uZCBvbmUKICAgICAgICAgICAgICAgICAgICAjIHNlZW4uICBCdXQgd2UncmUgbm90IGRvaW5nIHRoYXQuICBUaGUgb2xkIGNvZGUgZGlkbid0LgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJhbS5leHRlbmRlZDoKICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lOyBkdXBsaWNhdGUgaWdub3JlZCcpKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImluY29uc2lzdGVudCBSRkMyMjMxIHBhcmFtZXRlciBudW1iZXJpbmciKSkKICAgICAgICAgICAgICAgIGkgKz0gMQogICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJhbS5wYXJhbV92YWx1ZQogICAgICAgICAgICAgICAgaWYgcGFyYW0uZXh0ZW5kZWQ6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHVybGxpYi5wYXJzZS51bnF1b3RlX3RvX2J5dGVzKHZhbHVlKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICMgc291cmNlIGhhZCBzdXJyb2dhdGUgZXNjYXBlZCBieXRlcy4gIFdoYXQgd2UgZG8gbm93CiAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgYSBiaXQgb2YgYW4gb3BlbiBxdWVzdGlvbi4gIEknbSBub3Qgc3VyZSB0aGlzIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGJlc3QgY2hvaWNlLCBidXQgaXQgaXMgd2hhdCB0aGUgb2xkIGFsZ29yaXRobSBkaWQKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1cmxsaWIucGFyc2UudW5xdW90ZSh2YWx1ZSwgZW5jb2Rpbmc9J2xhdGluLTEnKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKGNoYXJzZXQsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgKExvb2t1cEVycm9yLCBVbmljb2RlRW5jb2RlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBYWFg6IHRoZXJlIHNob3VsZCByZWFsbHkgYmUgYSBjdXN0b20gZGVmZWN0IGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmtub3duIGNoYXJhY3RlciBzZXQgdG8gbWFrZSBpdCBlYXN5IHRvIGZpbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb3RoZXJ3aXNlIHVua25vd24gY2hhcnNldCBpcyBhIHNpbGVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmYWlsdXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNvZGUoJ3VzLWFzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCgpKQogICAgICAgICAgICAgICAgdmFsdWVfcGFydHMuYXBwZW5kKHZhbHVlKQogICAgICAgICAgICB2YWx1ZSA9ICcnLmpvaW4odmFsdWVfcGFydHMpCiAgICAgICAgICAgIHlpZWxkIG5hbWUsIHZhbHVlCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcGFyYW1zID0gW10KICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5wYXJhbXM6CiAgICAgICAgICAgIGlmIHZhbHVlOgogICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgne309e30nLmZvcm1hdChuYW1lLCBxdW90ZV9zdHJpbmcodmFsdWUpKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQobmFtZSkKICAgICAgICBwYXJhbXMgPSAnOyAnLmpvaW4ocGFyYW1zKQogICAgICAgIHJldHVybiAnICcgKyBwYXJhbXMgaWYgcGFyYW1zIGVsc2UgJycKCgpjbGFzcyBQYXJhbWV0ZXJpemVkSGVhZGVyVmFsdWUoVG9rZW5MaXN0KToKCiAgICAjIFNldCB0aGlzIGZhbHNlIHNvIHRoYXQgdGhlIHZhbHVlIGRvZXNuJ3Qgd2luZCB1cCBvbiBhIG5ldyBsaW5lIGV2ZW4KICAgICMgaWYgaXQgYW5kIHRoZSBwYXJhbWV0ZXJzIHdvdWxkIGZpdCB0aGVyZSBidXQgbm90IG9uIHRoZSBmaXJzdCBsaW5lLgogICAgc3ludGFjdGljX2JyZWFrID0gRmFsc2UKCiAgICBAcHJvcGVydHkKICAgIGRlZiBwYXJhbXMoc2VsZik6CiAgICAgICAgZm9yIHRva2VuIGluIHJldmVyc2VkKHNlbGYpOgogICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdtaW1lLXBhcmFtZXRlcnMnOgogICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnBhcmFtcwogICAgICAgIHJldHVybiB7fQoKCmNsYXNzIENvbnRlbnRUeXBlKFBhcmFtZXRlcml6ZWRIZWFkZXJWYWx1ZSk6CiAgICB0b2tlbl90eXBlID0gJ2NvbnRlbnQtdHlwZScKICAgIGFzX2V3X2FsbG93ZWQgPSBGYWxzZQogICAgbWFpbnR5cGUgPSAndGV4dCcKICAgIHN1YnR5cGUgPSAncGxhaW4nCgoKY2xhc3MgQ29udGVudERpc3Bvc2l0aW9uKFBhcmFtZXRlcml6ZWRIZWFkZXJWYWx1ZSk6CiAgICB0b2tlbl90eXBlID0gJ2NvbnRlbnQtZGlzcG9zaXRpb24nCiAgICBhc19ld19hbGxvd2VkID0gRmFsc2UKICAgIGNvbnRlbnRfZGlzcG9zaXRpb24gPSBOb25lCgoKY2xhc3MgQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoVG9rZW5MaXN0KToKICAgIHRva2VuX3R5cGUgPSAnY29udGVudC10cmFuc2Zlci1lbmNvZGluZycKICAgIGFzX2V3X2FsbG93ZWQgPSBGYWxzZQogICAgY3RlID0gJzdiaXQnCgoKY2xhc3MgSGVhZGVyTGFiZWwoVG9rZW5MaXN0KToKICAgIHRva2VuX3R5cGUgPSAnaGVhZGVyLWxhYmVsJwogICAgYXNfZXdfYWxsb3dlZCA9IEZhbHNlCgoKY2xhc3MgTXNnSUQoVG9rZW5MaXN0KToKICAgIHRva2VuX3R5cGUgPSAnbXNnLWlkJwogICAgYXNfZXdfYWxsb3dlZCA9IEZhbHNlCgogICAgZGVmIGZvbGQoc2VsZiwgcG9saWN5KToKICAgICAgICAjIG1lc3NhZ2UtaWQgdG9rZW5zIG1heSBub3QgYmUgZm9sZGVkLgogICAgICAgIHJldHVybiBzdHIoc2VsZikgKyBwb2xpY3kubGluZXNlcAoKCmNsYXNzIE1lc3NhZ2VJRChNc2dJRCk6CiAgICB0b2tlbl90eXBlID0gJ21lc3NhZ2UtaWQnCgoKY2xhc3MgSW52YWxpZE1lc3NhZ2VJRChNZXNzYWdlSUQpOgogICAgdG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1lc3NhZ2UtaWQnCgoKY2xhc3MgSGVhZGVyKFRva2VuTGlzdCk6CiAgICB0b2tlbl90eXBlID0gJ2hlYWRlcicKCgojCiMgVGVybWluYWwgY2xhc3NlcyBhbmQgaW5zdGFuY2VzCiMKCmNsYXNzIFRlcm1pbmFsKHN0cik6CgogICAgYXNfZXdfYWxsb3dlZCA9IFRydWUKICAgIGV3X2NvbWJpbmVfYWxsb3dlZCA9IFRydWUKICAgIHN5bnRhY3RpY19icmVhayA9IFRydWUKCiAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlLCB0b2tlbl90eXBlKToKICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgdmFsdWUpCiAgICAgICAgc2VsZi50b2tlbl90eXBlID0gdG9rZW5fdHlwZQogICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3VwZXIoKS5fX3JlcHJfXygpKQoKICAgIGRlZiBwcHJpbnQoc2VsZik6CiAgICAgICAgcHJpbnQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18gKyAnLycgKyBzZWxmLnRva2VuX3R5cGUpCgogICAgQHByb3BlcnR5CiAgICBkZWYgYWxsX2RlZmVjdHMoc2VsZik6CiAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5kZWZlY3RzKQoKICAgIGRlZiBfcHAoc2VsZiwgaW5kZW50PScnKToKICAgICAgICByZXR1cm4gWyJ7fXt9L3t9KHt9KXt9Ii5mb3JtYXQoCiAgICAgICAgICAgIGluZGVudCwKICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgIHNlbGYudG9rZW5fdHlwZSwKICAgICAgICAgICAgc3VwZXIoKS5fX3JlcHJfXygpLAogICAgICAgICAgICAnJyBpZiBub3Qgc2VsZi5kZWZlY3RzIGVsc2UgJyB7fScuZm9ybWF0KHNlbGYuZGVmZWN0cyksCiAgICAgICAgICAgICldCgogICAgZGVmIHBvcF90cmFpbGluZ193cyhzZWxmKToKICAgICAgICAjIFRoaXMgdGVybWluYXRlcyB0aGUgcmVjdXJzaW9uLgogICAgICAgIHJldHVybiBOb25lCgogICAgQHByb3BlcnR5CiAgICBkZWYgY29tbWVudHMoc2VsZik6CiAgICAgICAgcmV0dXJuIFtdCgogICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgogICAgICAgIHJldHVybihzdHIoc2VsZiksIHNlbGYudG9rZW5fdHlwZSkKCgpjbGFzcyBXaGl0ZVNwYWNlVGVybWluYWwoVGVybWluYWwpOgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiAnICcKCiAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CiAgICAgICAgcmV0dXJuIFRydWUKCgpjbGFzcyBWYWx1ZVRlcm1pbmFsKFRlcm1pbmFsKToKCiAgICBAcHJvcGVydHkKICAgIGRlZiB2YWx1ZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBzdGFydHN3aXRoX2Z3cyhzZWxmKToKICAgICAgICByZXR1cm4gRmFsc2UKCgpjbGFzcyBFV1doaXRlU3BhY2VUZXJtaW5hbChXaGl0ZVNwYWNlVGVybWluYWwpOgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiAnJwoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJwoKCmNsYXNzIF9JbnZhbGlkRXdFcnJvcihlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CiAgICAiIiJJbnZhbGlkIGVuY29kZWQgd29yZCBmb3VuZCB3aGlsZSBwYXJzaW5nIGhlYWRlcnMuIiIiCgoKIyBYWFggdGhlc2UgbmVlZCB0byBiZWNvbWUgY2xhc3NlcyBhbmQgdXNlZCBhcyBpbnN0YW5jZXMgc28KIyB0aGF0IGEgcHJvZ3JhbSBjYW4ndCBjaGFuZ2UgdGhlbSBpbiBhIHBhcnNlIHRyZWUgYW5kIHNjcmV3CiMgdXAgb3RoZXIgcGFyc2UgdHJlZXMuICBNYXliZSBzaG91bGQgaGF2ZSAgdGVzdHMgZm9yIHRoYXQsIHRvby4KRE9UID0gVmFsdWVUZXJtaW5hbCgnLicsICdkb3QnKQpMaXN0U2VwYXJhdG9yID0gVmFsdWVUZXJtaW5hbCgnLCcsICdsaXN0LXNlcGFyYXRvcicpClJvdXRlQ29tcG9uZW50TWFya2VyID0gVmFsdWVUZXJtaW5hbCgnQCcsICdyb3V0ZS1jb21wb25lbnQtbWFya2VyJykKCiMKIyBQYXJzZXIKIwoKIyBQYXJzZSBzdHJpbmdzIGFjY29yZGluZyB0byBSRkM4MjIvMjA0Ny8yODIyLzUzMjIgcnVsZXMuCiMKIyBUaGlzIGlzIGEgc3RhdGVsZXNzIHBhcnNlci4gIEVhY2ggZ2V0X1hYWCBmdW5jdGlvbiBhY2NlcHRzIGEgc3RyaW5nIGFuZAojIHJldHVybnMgZWl0aGVyIGEgVGVybWluYWwgb3IgYSBUb2tlbkxpc3QgcmVwcmVzZW50aW5nIHRoZSBSRkMgb2JqZWN0IG5hbWVkCiMgYnkgdGhlIG1ldGhvZCBhbmQgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmVtYWluaW5nIHVucGFyc2VkIGNoYXJhY3RlcnMKIyBmcm9tIHRoZSBpbnB1dC4gIFRodXMgYSBwYXJzZXIgbWV0aG9kIGNvbnN1bWVzIHRoZSBuZXh0IHN5bnRhY3RpYyBjb25zdHJ1Y3QKIyBvZiBhIGdpdmVuIHR5cGUgYW5kIHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGNvbnN0cnVjdCBwbHVzIHRoZQojIHVucGFyc2VkIHJlbWFpbmRlciBvZiB0aGUgaW5wdXQgc3RyaW5nLgojCiMgRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBlbGVtZW50IG9mIGEgc3RydWN0dXJlZCBoZWFkZXIgaXMgYSAncGhyYXNlJywKIyB0aGVuOgojCiMgICAgIHBocmFzZSwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQojCiMgcmV0dXJucyB0aGUgY29tcGxldGUgcGhyYXNlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgdmFsdWUsIHBsdXMgYW55CiMgY2hhcmFjdGVycyBsZWZ0IGluIHRoZSBzdHJpbmcgYWZ0ZXIgdGhlIHBocmFzZSBpcyByZW1vdmVkLgoKX3dzcF9zcGxpdHRlciA9IHJlLmNvbXBpbGUocicoW3t9XSspJy5mb3JtYXQoJycuam9pbihXU1ApKSkuc3BsaXQKX25vbl9hdG9tX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAogICAgcmUuZXNjYXBlKCcnLmpvaW4oQVRPTV9FTkRTKSkpKS5tYXRjaApfbm9uX3ByaW50YWJsZV9maW5kZXIgPSByZS5jb21waWxlKHIiW1x4MDAtXHgyMFx4N0ZdIikuZmluZGFsbApfbm9uX3Rva2VuX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAogICAgcmUuZXNjYXBlKCcnLmpvaW4oVE9LRU5fRU5EUykpKSkubWF0Y2gKX25vbl9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCiAgICByZS5lc2NhcGUoJycuam9pbihBVFRSSUJVVEVfRU5EUykpKSkubWF0Y2gKX25vbl9leHRlbmRlZF9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCiAgICByZS5lc2NhcGUoJycuam9pbihFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUykpKSkubWF0Y2gKCmRlZiBfdmFsaWRhdGVfeHRleHQoeHRleHQpOgogICAgIiIiSWYgaW5wdXQgdG9rZW4gY29udGFpbnMgQVNDSUkgbm9uLXByaW50YWJsZXMsIHJlZ2lzdGVyIGEgZGVmZWN0LiIiIgoKICAgIG5vbl9wcmludGFibGVzID0gX25vbl9wcmludGFibGVfZmluZGVyKHh0ZXh0KQogICAgaWYgbm9uX3ByaW50YWJsZXM6CiAgICAgICAgeHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk5vblByaW50YWJsZURlZmVjdChub25fcHJpbnRhYmxlcykpCiAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXMoeHRleHQpOgogICAgICAgIHh0ZXh0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KAogICAgICAgICAgICAiTm9uLUFTQ0lJIGNoYXJhY3RlcnMgZm91bmQgaW4gaGVhZGVyIHRva2VuIikpCgpkZWYgX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgZW5kY2hhcnMpOgogICAgIiIiU2NhbiBwcmludGFibGVzL3F1b3RlZC1wYWlycyB1bnRpbCBlbmRjaGFycyBhbmQgcmV0dXJuIHVucXVvdGVkIHB0ZXh0LgoKICAgIFRoaXMgZnVuY3Rpb24gdHVybnMgYSBydW4gb2YgcWNvbnRlbnQsIGNjb250ZW50LXdpdGhvdXQtY29tbWVudHMsIG9yCiAgICBkdGV4dC13aXRoLXF1b3RlZC1wcmludGFibGVzIGludG8gYSBzaW5nbGUgc3RyaW5nIGJ5IHVucXVvdGluZyBhbnkKICAgIHF1b3RlZCBwcmludGFibGVzLiAgSXQgcmV0dXJucyB0aGUgc3RyaW5nLCB0aGUgcmVtYWluaW5nIHZhbHVlLCBhbmQKICAgIGEgZmxhZyB0aGF0IGlzIFRydWUgaWZmIHRoZXJlIHdlcmUgYW55IHF1b3RlZCBwcmludGFibGVzIGRlY29kZWQuCgogICAgIiIiCiAgICBmcmFnbWVudCwgKnJlbWFpbmRlciA9IF93c3Bfc3BsaXR0ZXIodmFsdWUsIDEpCiAgICB2Y2hhcnMgPSBbXQogICAgZXNjYXBlID0gRmFsc2UKICAgIGhhZF9xcCA9IEZhbHNlCiAgICBmb3IgcG9zIGluIHJhbmdlKGxlbihmcmFnbWVudCkpOgogICAgICAgIGlmIGZyYWdtZW50W3Bvc10gPT0gJ1xcJzoKICAgICAgICAgICAgaWYgZXNjYXBlOgogICAgICAgICAgICAgICAgZXNjYXBlID0gRmFsc2UKICAgICAgICAgICAgICAgIGhhZF9xcCA9IFRydWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVzY2FwZSA9IFRydWUKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgZXNjYXBlOgogICAgICAgICAgICBlc2NhcGUgPSBGYWxzZQogICAgICAgIGVsaWYgZnJhZ21lbnRbcG9zXSBpbiBlbmRjaGFyczoKICAgICAgICAgICAgYnJlYWsKICAgICAgICB2Y2hhcnMuYXBwZW5kKGZyYWdtZW50W3Bvc10pCiAgICBlbHNlOgogICAgICAgIHBvcyA9IHBvcyArIDEKICAgIHJldHVybiAnJy5qb2luKHZjaGFycyksICcnLmpvaW4oW2ZyYWdtZW50W3BvczpdXSArIHJlbWFpbmRlciksIGhhZF9xcAoKZGVmIGdldF9md3ModmFsdWUpOgogICAgIiIiRldTID0gMSpXU1AKCiAgICBUaGlzIGlzbid0IHRoZSBSRkMgZGVmaW5pdGlvbi4gIFdlJ3JlIHVzaW5nIGZ3cyB0byByZXByZXNlbnQgdG9rZW5zIHdoZXJlCiAgICBmb2xkaW5nIGNhbiBiZSBkb25lLCBidXQgd2hlbiB3ZSBhcmUgcGFyc2luZyB0aGUgKnVuKmZvbGRpbmcgaGFzIGFscmVhZHkKICAgIGJlZW4gZG9uZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhdGNoIG91dCBmb3IgQ1JMRi4KCiAgICAiIiIKICAgIG5ld3ZhbHVlID0gdmFsdWUubHN0cmlwKCkKICAgIGZ3cyA9IFdoaXRlU3BhY2VUZXJtaW5hbCh2YWx1ZVs6bGVuKHZhbHVlKS1sZW4obmV3dmFsdWUpXSwgJ2Z3cycpCiAgICByZXR1cm4gZndzLCBuZXd2YWx1ZQoKZGVmIGdldF9lbmNvZGVkX3dvcmQodmFsdWUpOgogICAgIiIiIGVuY29kZWQtd29yZCA9ICI9PyIgY2hhcnNldCAiPyIgZW5jb2RpbmcgIj8iIGVuY29kZWQtdGV4dCAiPz0iCgogICAgIiIiCiAgICBldyA9IEVuY29kZWRXb3JkKCkKICAgIGlmIG5vdCB2YWx1ZS5zdGFydHN3aXRoKCc9PycpOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAiZXhwZWN0ZWQgZW5jb2RlZCB3b3JkIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKICAgIHRvaywgKnJlbWFpbmRlciA9IHZhbHVlWzI6XS5zcGxpdCgnPz0nLCAxKQogICAgaWYgdG9rID09IHZhbHVlWzI6XToKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgImV4cGVjdGVkIGVuY29kZWQgd29yZCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCiAgICByZW1zdHIgPSAnJy5qb2luKHJlbWFpbmRlcikKICAgIGlmIChsZW4ocmVtc3RyKSA+IDEgYW5kCiAgICAgICAgcmVtc3RyWzBdIGluIGhleGRpZ2l0cyBhbmQKICAgICAgICByZW1zdHJbMV0gaW4gaGV4ZGlnaXRzIGFuZAogICAgICAgIHRvay5jb3VudCgnPycpIDwgMik6CiAgICAgICAgIyBUaGUgPyBhZnRlciB0aGUgQ1RFIHdhcyBmb2xsb3dlZCBieSBhbiBlbmNvZGVkIHdvcmQgZXNjYXBlICg9WFgpLgogICAgICAgIHJlc3QsICpyZW1haW5kZXIgPSByZW1zdHIuc3BsaXQoJz89JywgMSkKICAgICAgICB0b2sgPSB0b2sgKyAnPz0nICsgcmVzdAogICAgaWYgbGVuKHRvay5zcGxpdCgpKSA+IDE6CiAgICAgICAgZXcuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJ3aGl0ZXNwYWNlIGluc2lkZSBlbmNvZGVkIHdvcmQiKSkKICAgIGV3LmN0ZSA9IHZhbHVlCiAgICB2YWx1ZSA9ICcnLmpvaW4ocmVtYWluZGVyKQogICAgdHJ5OgogICAgICAgIHRleHQsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMgPSBfZXcuZGVjb2RlKCc9PycgKyB0b2sgKyAnPz0nKQogICAgZXhjZXB0IChWYWx1ZUVycm9yLCBLZXlFcnJvcik6CiAgICAgICAgcmFpc2UgX0ludmFsaWRFd0Vycm9yKAogICAgICAgICAgICAiZW5jb2RlZCB3b3JkIGZvcm1hdCBpbnZhbGlkOiAne30nIi5mb3JtYXQoZXcuY3RlKSkKICAgIGV3LmNoYXJzZXQgPSBjaGFyc2V0CiAgICBldy5sYW5nID0gbGFuZwogICAgZXcuZGVmZWN0cy5leHRlbmQoZGVmZWN0cykKICAgIHdoaWxlIHRleHQ6CiAgICAgICAgaWYgdGV4dFswXSBpbiBXU1A6CiAgICAgICAgICAgIHRva2VuLCB0ZXh0ID0gZ2V0X2Z3cyh0ZXh0KQogICAgICAgICAgICBldy5hcHBlbmQodG9rZW4pCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgY2hhcnMsICpyZW1haW5kZXIgPSBfd3NwX3NwbGl0dGVyKHRleHQsIDEpCiAgICAgICAgdnRleHQgPSBWYWx1ZVRlcm1pbmFsKGNoYXJzLCAndnRleHQnKQogICAgICAgIF92YWxpZGF0ZV94dGV4dCh2dGV4dCkKICAgICAgICBldy5hcHBlbmQodnRleHQpCiAgICAgICAgdGV4dCA9ICcnLmpvaW4ocmVtYWluZGVyKQogICAgIyBFbmNvZGVkIHdvcmRzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhIFdTCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluIFdTUDoKICAgICAgICBldy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIm1pc3NpbmcgdHJhaWxpbmcgd2hpdGVzcGFjZSBhZnRlciBlbmNvZGVkLXdvcmQiKSkKICAgIHJldHVybiBldywgdmFsdWUKCmRlZiBnZXRfdW5zdHJ1Y3R1cmVkKHZhbHVlKToKICAgICIiInVuc3RydWN0dXJlZCA9ICgqKFtGV1NdIHZjaGFyKSAqV1NQKSAvIG9icy11bnN0cnVjdAogICAgICAgb2JzLXVuc3RydWN0ID0gKigoKkxGICpDUiAqKG9icy11dGV4dCkgKkxGICpDUikpIC8gRldTKQogICAgICAgb2JzLXV0ZXh0ID0gJWQwIC8gb2JzLU5PLVdTLUNUTCAvIExGIC8gQ1IKCiAgICAgICBvYnMtTk8tV1MtQ1RMIGlzIGNvbnRyb2wgY2hhcmFjdGVycyBleGNlcHQgV1NQL0NSL0xGLgoKICAgIFNvLCBiYXNpY2FsbHksIHdlIGhhdmUgcHJpbnRhYmxlIHJ1bnMsIHBsdXMgY29udHJvbCBjaGFyYWN0ZXJzIG9yIG51bGxzIGluCiAgICB0aGUgb2Jzb2xldGUgc3ludGF4LCBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZS4gIFNpbmNlIFJGQyAyMDQ3IHVzZXMgdGhlCiAgICBvYnNvbGV0ZSBzeW50YXggaW4gaXRzIHNwZWNpZmljYXRpb24sIGJ1dCByZXF1aXJlcyB3aGl0ZXNwYWNlIG9uIGVpdGhlcgogICAgc2lkZSBvZiB0aGUgZW5jb2RlZCB3b3JkcywgSSBjYW4gc2VlIG5vIHJlYXNvbiB0byBuZWVkIHRvIHNlcGFyYXRlIHRoZQogICAgbm9uLXByaW50YWJsZS1ub24td2hpdGVzcGFjZSBmcm9tIHRoZSBwcmludGFibGUgcnVucyBpZiB0aGV5IG9jY3VyLCBzbyB3ZQogICAgcGFyc2UgdGhpcyBpbnRvIHh0ZXh0IHRva2VucyBzZXBhcmF0ZWQgYnkgV1NQIHRva2Vucy4KCiAgICBCZWNhdXNlIGFuICd1bnN0cnVjdHVyZWQnIHZhbHVlIG11c3QgYnkgZGVmaW5pdGlvbiBjb25zdGl0dXRlIHRoZSBlbnRpcmUKICAgIHZhbHVlLCB0aGlzICdnZXQnIHJvdXRpbmUgZG9lcyBub3QgcmV0dXJuIGEgcmVtYWluaW5nIHZhbHVlLCBvbmx5IHRoZQogICAgcGFyc2VkIFRva2VuTGlzdC4KCiAgICAiIiIKICAgICMgWFhYOiBidXQgd2hhdCBhYm91dCBiYXJlIENSIGFuZCBMRj8gIFRoZXkgbWlnaHQgc2lnbmFsIHRoZSBzdGFydCBvcgogICAgIyBlbmQgb2YgYW4gZW5jb2RlZCB3b3JkLiAgWUFHTkkgZm9yIG5vdywgc2luY2Ugb3VyIGN1cnJlbnQgcGFyc2VycwogICAgIyB3aWxsIG5ldmVyIHNlbmQgdXMgc3RyaW5ncyB3aXRoIGJhcmUgQ1Igb3IgTEYuCgogICAgdW5zdHJ1Y3R1cmVkID0gVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KCkKICAgIHdoaWxlIHZhbHVlOgogICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkLmFwcGVuZCh0b2tlbikKICAgICAgICAgICAgY29udGludWUKICAgICAgICB2YWxpZF9ldyA9IFRydWUKICAgICAgICBpZiB2YWx1ZS5zdGFydHN3aXRoKCc9PycpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZW5jb2RlZF93b3JkKHZhbHVlKQogICAgICAgICAgICBleGNlcHQgX0ludmFsaWRFd0Vycm9yOgogICAgICAgICAgICAgICAgdmFsaWRfZXcgPSBGYWxzZQogICAgICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgICAgICAgICAjIFhYWDogTmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byByZWdpc3RlciBkZWZlY3RzIHdoZW4KICAgICAgICAgICAgICAgICMgYXBwcm9wcmlhdGUgaGVyZS4KICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGhhdmVfd3MgPSBUcnVlCiAgICAgICAgICAgICAgICBpZiBsZW4odW5zdHJ1Y3R1cmVkKSA+IDA6CiAgICAgICAgICAgICAgICAgICAgaWYgdW5zdHJ1Y3R1cmVkWy0xXS50b2tlbl90eXBlICE9ICdmd3MnOgogICAgICAgICAgICAgICAgICAgICAgICB1bnN0cnVjdHVyZWQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyB3aGl0ZXNwYWNlIGJlZm9yZSBlbmNvZGVkIHdvcmQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV93cyA9IEZhbHNlCiAgICAgICAgICAgICAgICBpZiBoYXZlX3dzIGFuZCBsZW4odW5zdHJ1Y3R1cmVkKSA+IDE6CiAgICAgICAgICAgICAgICAgICAgaWYgdW5zdHJ1Y3R1cmVkWy0yXS50b2tlbl90eXBlID09ICdlbmNvZGVkLXdvcmQnOgogICAgICAgICAgICAgICAgICAgICAgICB1bnN0cnVjdHVyZWRbLTFdID0gRVdXaGl0ZVNwYWNlVGVybWluYWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN0cnVjdHVyZWRbLTFdLCAnZndzJykKICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodG9rZW4pCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRvaywgKnJlbWFpbmRlciA9IF93c3Bfc3BsaXR0ZXIodmFsdWUsIDEpCiAgICAgICAgIyBTcGxpdCBpbiB0aGUgbWlkZGxlIG9mIGFuIGF0b20gaWYgdGhlcmUgaXMgYSByZmMyMDQ3IGVuY29kZWQgd29yZAogICAgICAgICMgd2hpY2ggZG9lcyBub3QgaGF2ZSBXU1Agb24gYm90aCBzaWRlcy4gVGhlIGRlZmVjdCB3aWxsIGJlIHJlZ2lzdGVyZWQKICAgICAgICAjIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC4KICAgICAgICAjIFRoaXMgbmVlZHMgdG8gb25seSBiZSBwZXJmb3JtZWQgd2hlbiB0aGUgZW5jb2RlZCB3b3JkIGlzIHZhbGlkOwogICAgICAgICMgb3RoZXJ3aXNlLCBwZXJmb3JtaW5nIGl0IG9uIGFuIGludmFsaWQgZW5jb2RlZCB3b3JkIGNhbiBjYXVzZQogICAgICAgICMgdGhlIHBhcnNlciB0byBnbyBpbiBhbiBpbmZpbml0ZSBsb29wLgogICAgICAgIGlmIHZhbGlkX2V3IGFuZCByZmMyMDQ3X21hdGNoZXIuc2VhcmNoKHRvayk6CiAgICAgICAgICAgIHRvaywgKnJlbWFpbmRlciA9IHZhbHVlLnBhcnRpdGlvbignPT8nKQogICAgICAgIHZ0ZXh0ID0gVmFsdWVUZXJtaW5hbCh0b2ssICd2dGV4dCcpCiAgICAgICAgX3ZhbGlkYXRlX3h0ZXh0KHZ0ZXh0KQogICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodnRleHQpCiAgICAgICAgdmFsdWUgPSAnJy5qb2luKHJlbWFpbmRlcikKICAgIHJldHVybiB1bnN0cnVjdHVyZWQKCmRlZiBnZXRfcXBfY3RleHQodmFsdWUpOgogICAgciIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CgogICAgVGhpcyBpcyBub3QgdGhlIFJGQyBjdGV4dCwgc2luY2Ugd2UgYXJlIGhhbmRsaW5nIG5lc3RlZCBjb21tZW50cyBpbiBjb21tZW50CiAgICBhbmQgdW5xdW90aW5nIHF1b3RlZC1wYWlycyBoZXJlLiAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSAnKCknCiAgICBjaGFyYWN0ZXJzLCBidXQgaWYgd2UgZmluZCBhbnkgQVNDSUkgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlCiAgICBBU0NJSSwgYSBOb25QcmludGFibGVEZWZlY3QgaXMgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0LiAgU2luY2UKICAgIHF1b3RlZCBwYWlycyBhcmUgY29udmVydGVkIHRvIHRoZWlyIHVucXVvdGVkIHZhbHVlcywgd2hhdCBpcyByZXR1cm5lZCBpcwogICAgYSAncHRleHQnIHRva2VuLiAgSW4gdGhpcyBjYXNlIGl0IGlzIGEgV2hpdGVTcGFjZVRlcm1pbmFsLCBzbyBpdCdzIHZhbHVlCiAgICBpcyAnICcuCgogICAgIiIiCiAgICBwdGV4dCwgdmFsdWUsIF8gPSBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCAnKCknKQogICAgcHRleHQgPSBXaGl0ZVNwYWNlVGVybWluYWwocHRleHQsICdwdGV4dCcpCiAgICBfdmFsaWRhdGVfeHRleHQocHRleHQpCiAgICByZXR1cm4gcHRleHQsIHZhbHVlCgpkZWYgZ2V0X3Fjb250ZW50KHZhbHVlKToKICAgICIiInFjb250ZW50ID0gcXRleHQgLyBxdW90ZWQtcGFpcgoKICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgRFFVT1RFIGNoYXJhY3RlciwgYnV0IGlmIHdlIGZpbmQgYW55IEFTQ0lJCiAgICBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUgQVNDSUksIGEgTm9uUHJpbnRhYmxlRGVmZWN0IGlzCiAgICBhZGRlZCB0byB0aGUgdG9rZW4ncyBkZWZlY3RzIGxpc3QuICBBbnkgcXVvdGVkIHBhaXJzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIKICAgIHVucXVvdGVkIHZhbHVlcywgc28gd2hhdCBpcyByZXR1cm5lZCBpcyBhICdwdGV4dCcgdG9rZW4uICBJbiB0aGlzIGNhc2UgaXQKICAgIGlzIGEgVmFsdWVUZXJtaW5hbC4KCiAgICAiIiIKICAgIHB0ZXh0LCB2YWx1ZSwgXyA9IF9nZXRfcHRleHRfdG9fZW5kY2hhcnModmFsdWUsICciJykKICAgIHB0ZXh0ID0gVmFsdWVUZXJtaW5hbChwdGV4dCwgJ3B0ZXh0JykKICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKICAgIHJldHVybiBwdGV4dCwgdmFsdWUKCmRlZiBnZXRfYXRleHQodmFsdWUpOgogICAgIiIiYXRleHQgPSA8bWF0Y2hlcyBfYXRleHRfbWF0Y2hlcj4KCiAgICBXZSBhbGxvdyBhbnkgbm9uLUFUT01fRU5EUyBpbiBhdGV4dCwgYnV0IGFkZCBhbiBJbnZhbGlkQVRleHREZWZlY3QgdG8KICAgIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdCBpZiB3ZSBmaW5kIG5vbi1hdGV4dCBjaGFyYWN0ZXJzLgogICAgIiIiCiAgICBtID0gX25vbl9hdG9tX2VuZF9tYXRjaGVyKHZhbHVlKQogICAgaWYgbm90IG06CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICJleHBlY3RlZCBhdGV4dCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIGF0ZXh0ID0gbS5ncm91cCgpCiAgICB2YWx1ZSA9IHZhbHVlW2xlbihhdGV4dCk6XQogICAgYXRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0ZXh0LCAnYXRleHQnKQogICAgX3ZhbGlkYXRlX3h0ZXh0KGF0ZXh0KQogICAgcmV0dXJuIGF0ZXh0LCB2YWx1ZQoKZGVmIGdldF9iYXJlX3F1b3RlZF9zdHJpbmcodmFsdWUpOgogICAgIiIiYmFyZS1xdW90ZWQtc3RyaW5nID0gRFFVT1RFICooW0ZXU10gcWNvbnRlbnQpIFtGV1NdIERRVU9URQoKICAgIEEgcXVvdGVkLXN0cmluZyB3aXRob3V0IHRoZSBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlIHNwYWNlLiAgSXRzCiAgICB2YWx1ZSBpcyB0aGUgdGV4dCBiZXR3ZWVuIHRoZSBxdW90ZSBtYXJrcywgd2l0aCB3aGl0ZXNwYWNlCiAgICBwcmVzZXJ2ZWQgYW5kIHF1b3RlZCBwYWlycyBkZWNvZGVkLgogICAgIiIiCiAgICBpZiB2YWx1ZVswXSAhPSAnIic6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICJleHBlY3RlZCAnXCInIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQogICAgYmFyZV9xdW90ZWRfc3RyaW5nID0gQmFyZVF1b3RlZFN0cmluZygpCiAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICciJzoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcWNvbnRlbnQodmFsdWUpCiAgICAgICAgYmFyZV9xdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnIic6CiAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQogICAgICAgIGVsaWYgdmFsdWVbOjJdID09ICc9Pyc6CiAgICAgICAgICAgIHZhbGlkX2V3ID0gRmFsc2UKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2VuY29kZWRfd29yZCh2YWx1ZSkKICAgICAgICAgICAgICAgIGJhcmVfcXVvdGVkX3N0cmluZy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCB3b3JkIGluc2lkZSBxdW90ZWQgc3RyaW5nIikpCiAgICAgICAgICAgICAgICB2YWxpZF9ldyA9IFRydWUKICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgogICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Fjb250ZW50KHZhbHVlKQogICAgICAgICAgICAjIENvbGxhcHNlIHRoZSB3aGl0ZXNwYWNlIGJldHdlZW4gdHdvIGVuY29kZWQgd29yZHMgdGhhdCBvY2N1ciBpbiBhCiAgICAgICAgICAgICMgYmFyZS1xdW90ZWQtc3RyaW5nLgogICAgICAgICAgICBpZiB2YWxpZF9ldyBhbmQgbGVuKGJhcmVfcXVvdGVkX3N0cmluZykgPiAxOgogICAgICAgICAgICAgICAgaWYgKGJhcmVfcXVvdGVkX3N0cmluZ1stMV0udG9rZW5fdHlwZSA9PSAnZndzJyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgYmFyZV9xdW90ZWRfc3RyaW5nWy0yXS50b2tlbl90eXBlID09ICdlbmNvZGVkLXdvcmQnKToKICAgICAgICAgICAgICAgICAgICBiYXJlX3F1b3RlZF9zdHJpbmdbLTFdID0gRVdXaGl0ZVNwYWNlVGVybWluYWwoCiAgICAgICAgICAgICAgICAgICAgICAgIGJhcmVfcXVvdGVkX3N0cmluZ1stMV0sICdmd3MnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xY29udGVudCh2YWx1ZSkKICAgICAgICBiYXJlX3F1b3RlZF9zdHJpbmcuYXBwZW5kKHRva2VuKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIGJhcmVfcXVvdGVkX3N0cmluZy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgaW5zaWRlIHF1b3RlZCBzdHJpbmciKSkKICAgICAgICByZXR1cm4gYmFyZV9xdW90ZWRfc3RyaW5nLCB2YWx1ZQogICAgcmV0dXJuIGJhcmVfcXVvdGVkX3N0cmluZywgdmFsdWVbMTpdCgpkZWYgZ2V0X2NvbW1lbnQodmFsdWUpOgogICAgIiIiY29tbWVudCA9ICIoIiAqKFtGV1NdIGNjb250ZW50KSBbRldTXSAiKSIKICAgICAgIGNjb250ZW50ID0gY3RleHQgLyBxdW90ZWQtcGFpciAvIGNvbW1lbnQKCiAgICBXZSBoYW5kbGUgbmVzdGVkIGNvbW1lbnRzIGhlcmUsIGFuZCBxdW90ZWQtcGFpciBpbiBvdXIgcXAtY3RleHQgcm91dGluZS4KICAgICIiIgogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICcoJzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgImV4cGVjdGVkICcoJyBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIGNvbW1lbnQgPSBDb21tZW50KCkKICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gIikiOgogICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcoJzoKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2NvbW1lbnQodmFsdWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3FwX2N0ZXh0KHZhbHVlKQogICAgICAgIGNvbW1lbnQuYXBwZW5kKHRva2VuKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIGNvbW1lbnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluc2lkZSBjb21tZW50IikpCiAgICAgICAgcmV0dXJuIGNvbW1lbnQsIHZhbHVlCiAgICByZXR1cm4gY29tbWVudCwgdmFsdWVbMTpdCgpkZWYgZ2V0X2Nmd3ModmFsdWUpOgogICAgIiIiQ0ZXUyA9ICgxKihbRldTXSBjb21tZW50KSBbRldTXSkgLyBGV1MKCiAgICAiIiIKICAgIGNmd3MgPSBDRldTTGlzdCgpCiAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jb21tZW50KHZhbHVlKQogICAgICAgIGNmd3MuYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGNmd3MsIHZhbHVlCgpkZWYgZ2V0X3F1b3RlZF9zdHJpbmcodmFsdWUpOgogICAgIiIicXVvdGVkLXN0cmluZyA9IFtDRldTXSA8YmFyZS1xdW90ZWQtc3RyaW5nPiBbQ0ZXU10KCiAgICAnYmFyZS1xdW90ZWQtc3RyaW5nJyBpcyBhbiBpbnRlcm1lZGlhdGUgY2xhc3MgZGVmaW5lZCBieSB0aGlzCiAgICBwYXJzZXIgYW5kIG5vdCBieSB0aGUgUkZDIGdyYW1tYXIuICBJdCBpcyB0aGUgcXVvdGVkIHN0cmluZwogICAgd2l0aG91dCBhbnkgYXR0YWNoZWQgQ0ZXUy4KICAgICIiIgogICAgcXVvdGVkX3N0cmluZyA9IFF1b3RlZFN0cmluZygpCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCiAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYmFyZV9xdW90ZWRfc3RyaW5nKHZhbHVlKQogICAgcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gcXVvdGVkX3N0cmluZywgdmFsdWUKCmRlZiBnZXRfYXRvbSh2YWx1ZSk6CiAgICAiIiJhdG9tID0gW0NGV1NdIDEqYXRleHQgW0NGV1NdCgogICAgQW4gYXRvbSBjb3VsZCBiZSBhbiByZmMyMDQ3IGVuY29kZWQgd29yZC4KICAgICIiIgogICAgYXRvbSA9IEF0b20oKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgIGF0b20uYXBwZW5kKHRva2VuKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIEFUT01fRU5EUzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgImV4cGVjdGVkIGF0b20gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICBpZiB2YWx1ZS5zdGFydHN3aXRoKCc9PycpOgogICAgICAgIHRyeToKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2VuY29kZWRfd29yZCh2YWx1ZSkKICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgICAgICMgWFhYOiBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHJlZ2lzdGVyIGRlZmVjdHMgd2hlbgogICAgICAgICAgICAjIGFwcHJvcHJpYXRlIGhlcmUuCiAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdGV4dCh2YWx1ZSkKICAgIGVsc2U6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0ZXh0KHZhbHVlKQogICAgYXRvbS5hcHBlbmQodG9rZW4pCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgYXRvbS5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gYXRvbSwgdmFsdWUKCmRlZiBnZXRfZG90X2F0b21fdGV4dCh2YWx1ZSk6CiAgICAiIiIgZG90LXRleHQgPSAxKmF0ZXh0ICooIi4iIDEqYXRleHQpCgogICAgIiIiCiAgICBkb3RfYXRvbV90ZXh0ID0gRG90QXRvbVRleHQoKQogICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdIGluIEFUT01fRU5EUzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgYXRvbSBhdCBhIHN0YXJ0IG9mICIKICAgICAgICAgICAgImRvdC1hdG9tLXRleHQgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluIEFUT01fRU5EUzoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRleHQodmFsdWUpCiAgICAgICAgZG90X2F0b21fdGV4dC5hcHBlbmQodG9rZW4pCiAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICcuJzoKICAgICAgICAgICAgZG90X2F0b21fdGV4dC5hcHBlbmQoRE9UKQogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgaWYgZG90X2F0b21fdGV4dFstMV0gaXMgRE9UOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBhdG9tIGF0IGVuZCBvZiBkb3QtYXRvbS10ZXh0ICIKICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQoJy4nK3ZhbHVlKSkKICAgIHJldHVybiBkb3RfYXRvbV90ZXh0LCB2YWx1ZQoKZGVmIGdldF9kb3RfYXRvbSh2YWx1ZSk6CiAgICAiIiIgZG90LWF0b20gPSBbQ0ZXU10gZG90LWF0b20tdGV4dCBbQ0ZXU10KCiAgICBBbnkgcGxhY2Ugd2UgY2FuIGhhdmUgYSBkb3QgYXRvbSwgd2UgY291bGQgaW5zdGVhZCBoYXZlIGFuIHJmYzIwNDcgZW5jb2RlZAogICAgd29yZC4KICAgICIiIgogICAgZG90X2F0b20gPSBEb3RBdG9tKCkKICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgIGRvdF9hdG9tLmFwcGVuZCh0b2tlbikKICAgIGlmIHZhbHVlLnN0YXJ0c3dpdGgoJz0/Jyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZW5jb2RlZF93b3JkKHZhbHVlKQogICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKICAgICAgICAgICAgIyBYWFg6IG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gcmVnaXN0ZXIgZGVmZWN0cyB3aGVuCiAgICAgICAgICAgICMgYXBwcm9wcmlhdGUgaGVyZS4KICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvdF9hdG9tX3RleHQodmFsdWUpCiAgICBlbHNlOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbV90ZXh0KHZhbHVlKQogICAgZG90X2F0b20uYXBwZW5kKHRva2VuKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgIGRvdF9hdG9tLmFwcGVuZCh0b2tlbikKICAgIHJldHVybiBkb3RfYXRvbSwgdmFsdWUKCmRlZiBnZXRfd29yZCh2YWx1ZSk6CiAgICAiIiJ3b3JkID0gYXRvbSAvIHF1b3RlZC1zdHJpbmcKCiAgICBFaXRoZXIgYXRvbSBvciBxdW90ZWQtc3RyaW5nIG1heSBzdGFydCB3aXRoIENGV1MuICBXZSBoYXZlIHRvIHBlZWwgb2ZmIHRoaXMKICAgIENGV1MgZmlyc3QgdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgb2Ygd29yZCB0byBwYXJzZS4gIEFmdGVyd2FyZCB3ZSBzcGxpY2UKICAgIHRoZSBsZWFkaW5nIENGV1MsIGlmIGFueSwgaW50byB0aGUgcGFyc2VkIHN1Yi10b2tlbi4KCiAgICBJZiBuZWl0aGVyIGFuIGF0b20gb3IgYSBxdW90ZWQtc3RyaW5nIGlzIGZvdW5kIGJlZm9yZSB0aGUgbmV4dCBzcGVjaWFsLCBhCiAgICBIZWFkZXJQYXJzZUVycm9yIGlzIHJhaXNlZC4KCiAgICBUaGUgdG9rZW4gcmV0dXJuZWQgaXMgZWl0aGVyIGFuIEF0b20gb3IgYSBRdW90ZWRTdHJpbmcsIGFzIGFwcHJvcHJpYXRlLgogICAgVGhpcyBtZWFucyB0aGUgJ3dvcmQnIGxldmVsIG9mIHRoZSBmb3JtYWwgZ3JhbW1hciBpcyBub3QgcmVwcmVzZW50ZWQgaW4gdGhlCiAgICBwYXJzZSB0cmVlOyB0aGlzIGlzIGJlY2F1c2UgaGF2aW5nIHRoYXQgZXh0cmEgbGF5ZXIgd2hlbiBtYW5pcHVsYXRpbmcgdGhlCiAgICBwYXJzZSB0cmVlIGlzIG1vcmUgY29uZnVzaW5nIHRoYW4gaXQgaXMgaGVscGZ1bC4KCiAgICAiIiIKICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgIGVsc2U6CiAgICAgICAgbGVhZGVyID0gTm9uZQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAiRXhwZWN0ZWQgJ2F0b20nIG9yICdxdW90ZWQtc3RyaW5nJyBidXQgZm91bmQgbm90aGluZy4iKQogICAgaWYgdmFsdWVbMF09PSciJzoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSkKICAgIGVsaWYgdmFsdWVbMF0gaW4gU1BFQ0lBTFM6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkICdhdG9tJyBvciAncXVvdGVkLXN0cmluZycgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIGVsc2U6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0b20odmFsdWUpCiAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KICAgIHJldHVybiB0b2tlbiwgdmFsdWUKCmRlZiBnZXRfcGhyYXNlKHZhbHVlKToKICAgICIiIiBwaHJhc2UgPSAxKndvcmQgLyBvYnMtcGhyYXNlCiAgICAgICAgb2JzLXBocmFzZSA9IHdvcmQgKih3b3JkIC8gIi4iIC8gQ0ZXUykKCiAgICBUaGlzIG1lYW5zIGEgcGhyYXNlIGNhbiBiZSBhIHNlcXVlbmNlIG9mIHdvcmRzLCBwZXJpb2RzLCBhbmQgQ0ZXUyBpbiBhbnkKICAgIG9yZGVyIGFzIGxvbmcgYXMgaXQgc3RhcnRzIHdpdGggYXQgbGVhc3Qgb25lIHdvcmQuICBJZiBhbnl0aGluZyBvdGhlciB0aGFuCiAgICB3b3JkcyBpcyBkZXRlY3RlZCwgYW4gT2Jzb2xldGVIZWFkZXJEZWZlY3QgaXMgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0CiAgICBsaXN0LiAgV2UgYWxzbyBhY2NlcHQgYSBwaHJhc2UgdGhhdCBzdGFydHMgd2l0aCBDRldTIGZvbGxvd2VkIGJ5IGEgZG90OwogICAgdGhpcyBpcyByZWdpc3RlcmVkIGFzIGFuIEludmFsaWRIZWFkZXJEZWZlY3QsIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkKICAgIGV2ZW4gdGhlIG9ic29sZXRlIGdyYW1tYXIuCgogICAgIiIiCiAgICBwaHJhc2UgPSBQaHJhc2UoKQogICAgdHJ5OgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF93b3JkKHZhbHVlKQogICAgICAgIHBocmFzZS5hcHBlbmQodG9rZW4pCiAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgcGhyYXNlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAicGhyYXNlIGRvZXMgbm90IHN0YXJ0IHdpdGggd29yZCIpKQogICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUzoKICAgICAgICBpZiB2YWx1ZVswXT09Jy4nOgogICAgICAgICAgICBwaHJhc2UuYXBwZW5kKERPVCkKICAgICAgICAgICAgcGhyYXNlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICJwZXJpb2QgaW4gJ3BocmFzZSciKSkKICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgogICAgICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgICAgICAgICAgICAgcGhyYXNlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lbnQgZm91bmQgd2l0aG91dCBhdG9tIikpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIHBocmFzZS5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gcGhyYXNlLCB2YWx1ZQoKZGVmIGdldF9sb2NhbF9wYXJ0KHZhbHVlKToKICAgICIiIiBsb2NhbC1wYXJ0ID0gZG90LWF0b20gLyBxdW90ZWQtc3RyaW5nIC8gb2JzLWxvY2FsLXBhcnQKCiAgICAiIiIKICAgIGxvY2FsX3BhcnQgPSBMb2NhbFBhcnQoKQogICAgbGVhZGVyID0gTm9uZQogICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAiZXhwZWN0ZWQgbG9jYWwtcGFydCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIHRyeToKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG90X2F0b20odmFsdWUpCiAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgICAgIGlmIHZhbHVlWzBdICE9ICdcXCcgYW5kIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgdG9rZW4gPSBUb2tlbkxpc3QoKQogICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgogICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCiAgICBsb2NhbF9wYXJ0LmFwcGVuZCh0b2tlbikKICAgIGlmIHZhbHVlIGFuZCAodmFsdWVbMF09PSdcXCcgb3IgdmFsdWVbMF0gbm90IGluIFBIUkFTRV9FTkRTKToKICAgICAgICBvYnNfbG9jYWxfcGFydCwgdmFsdWUgPSBnZXRfb2JzX2xvY2FsX3BhcnQoc3RyKGxvY2FsX3BhcnQpICsgdmFsdWUpCiAgICAgICAgaWYgb2JzX2xvY2FsX3BhcnQudG9rZW5fdHlwZSA9PSAnaW52YWxpZC1vYnMtbG9jYWwtcGFydCc6CiAgICAgICAgICAgIGxvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAibG9jYWwtcGFydCBpcyBub3QgZG90LWF0b20sIHF1b3RlZC1zdHJpbmcsIG9yIG9icy1sb2NhbC1wYXJ0IikpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAibG9jYWwtcGFydCBpcyBub3QgYSBkb3QtYXRvbSAoY29udGFpbnMgQ0ZXUykiKSkKICAgICAgICBsb2NhbF9wYXJ0WzBdID0gb2JzX2xvY2FsX3BhcnQKICAgIHRyeToKICAgICAgICBsb2NhbF9wYXJ0LnZhbHVlLmVuY29kZSgnYXNjaWknKQogICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICBsb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5Ob25BU0NJSUxvY2FsUGFydERlZmVjdCgKICAgICAgICAgICAgICAgICJsb2NhbC1wYXJ0IGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzKSIpKQogICAgcmV0dXJuIGxvY2FsX3BhcnQsIHZhbHVlCgpkZWYgZ2V0X29ic19sb2NhbF9wYXJ0KHZhbHVlKToKICAgICIiIiBvYnMtbG9jYWwtcGFydCA9IHdvcmQgKigiLiIgd29yZCkKICAgICIiIgogICAgb2JzX2xvY2FsX3BhcnQgPSBPYnNMb2NhbFBhcnQoKQogICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCiAgICB3aGlsZSB2YWx1ZSBhbmQgKHZhbHVlWzBdPT0nXFwnIG9yIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUyk6CiAgICAgICAgaWYgdmFsdWVbMF0gPT0gJy4nOgogICAgICAgICAgICBpZiBsYXN0X25vbl93c193YXNfZG90OgogICAgICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAgICAgImludmFsaWQgcmVwZWF0ZWQgJy4nIikpCiAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmFwcGVuZChET1QpCiAgICAgICAgICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBUcnVlCiAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZWxpZiB2YWx1ZVswXT09J1xcJzoKICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNwbGFjZWQtc3BlY2lhbCcpKQogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICInXFwnIGNoYXJhY3RlciBvdXRzaWRlIG9mIHF1b3RlZC1zdHJpbmcvY2NvbnRlbnQiKSkKICAgICAgICAgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgb2JzX2xvY2FsX3BhcnQgYW5kIG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlICE9ICdkb3QnOgogICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICJtaXNzaW5nICcuJyBiZXR3ZWVuIHdvcmRzIikpCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKICAgICAgICAgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCiAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgogICAgICAgICAgICBpZiB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICBvYnNfbG9jYWxfcGFydC5hcHBlbmQodG9rZW4pCiAgICBpZiAob2JzX2xvY2FsX3BhcnRbMF0udG9rZW5fdHlwZSA9PSAnZG90JyBvcgogICAgICAgICAgICBvYnNfbG9jYWxfcGFydFswXS50b2tlbl90eXBlPT0nY2Z3cycgYW5kCiAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0WzFdLnRva2VuX3R5cGU9PSdkb3QnKToKICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIkludmFsaWQgbGVhZGluZyAnLicgaW4gbG9jYWwgcGFydCIpKQogICAgaWYgKG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlID09ICdkb3QnIG9yCiAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlPT0nY2Z3cycgYW5kCiAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0Wy0yXS50b2tlbl90eXBlPT0nZG90Jyk6CiAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJJbnZhbGlkIHRyYWlsaW5nICcuJyBpbiBsb2NhbCBwYXJ0IikpCiAgICBpZiBvYnNfbG9jYWxfcGFydC5kZWZlY3RzOgogICAgICAgIG9ic19sb2NhbF9wYXJ0LnRva2VuX3R5cGUgPSAnaW52YWxpZC1vYnMtbG9jYWwtcGFydCcKICAgIHJldHVybiBvYnNfbG9jYWxfcGFydCwgdmFsdWUKCmRlZiBnZXRfZHRleHQodmFsdWUpOgogICAgciIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAogICAgICAgIG9icy1kdGV4dCA9IG9icy1OTy1XUy1DVEwgLyBxdW90ZWQtcGFpcgoKICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgZXhjbHVkZWQgY2hhcmFjdGVycywgYnV0IGlmIHdlIGZpbmQgYW55CiAgICBBU0NJSSBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUgQVNDSUksIGEgTm9uUHJpbnRhYmxlRGVmZWN0IGlzCiAgICBhZGRlZCB0byB0aGUgdG9rZW4ncyBkZWZlY3RzIGxpc3QuICBRdW90ZWQgcGFpcnMgYXJlIGNvbnZlcnRlZCB0byB0aGVpcgogICAgdW5xdW90ZWQgdmFsdWVzLCBzbyB3aGF0IGlzIHJldHVybmVkIGlzIGEgcHRleHQgdG9rZW4sIGluIHRoaXMgY2FzZSBhCiAgICBWYWx1ZVRlcm1pbmFsLiAgSWYgdGhlcmUgd2VyZSBxdW90ZWQtcHJpbnRhYmxlcywgYW4gT2Jzb2xldGVIZWFkZXJEZWZlY3QgaXMKICAgIGFkZGVkIHRvIHRoZSByZXR1cm5lZCB0b2tlbidzIGRlZmVjdCBsaXN0LgoKICAgICIiIgogICAgcHRleHQsIHZhbHVlLCBoYWRfcXAgPSBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCAnW10nKQogICAgcHRleHQgPSBWYWx1ZVRlcm1pbmFsKHB0ZXh0LCAncHRleHQnKQogICAgaWYgaGFkX3FwOgogICAgICAgIHB0ZXh0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgInF1b3RlZCBwcmludGFibGUgZm91bmQgaW4gZG9tYWluLWxpdGVyYWwiKSkKICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKICAgIHJldHVybiBwdGV4dCwgdmFsdWUKCmRlZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgogICAgaWYgdmFsdWU6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgImVuZCBvZiBpbnB1dCBpbnNpZGUgZG9tYWluLWxpdGVyYWwiKSkKICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCddJywgJ2RvbWFpbi1saXRlcmFsLWVuZCcpKQogICAgcmV0dXJuIFRydWUKCmRlZiBnZXRfZG9tYWluX2xpdGVyYWwodmFsdWUpOgogICAgIiIiIGRvbWFpbi1saXRlcmFsID0gW0NGV1NdICJbIiAqKFtGV1NdIGR0ZXh0KSBbRldTXSAiXSIgW0NGV1NdCgogICAgIiIiCiAgICBkb21haW5fbGl0ZXJhbCA9IERvbWFpbkxpdGVyYWwoKQogICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBkb21haW4tbGl0ZXJhbCIpCiAgICBpZiB2YWx1ZVswXSAhPSAnWyc6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkICdbJyBhdCBzdGFydCBvZiBkb21haW4tbGl0ZXJhbCAiCiAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgaWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKICAgICAgICByZXR1cm4gZG9tYWluX2xpdGVyYWwsIHZhbHVlCiAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnWycsICdkb21haW4tbGl0ZXJhbC1zdGFydCcpKQogICAgaWYgdmFsdWVbMF0gaW4gV1NQOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCiAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQogICAgdG9rZW4sIHZhbHVlID0gZ2V0X2R0ZXh0KHZhbHVlKQogICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQogICAgaWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKICAgICAgICByZXR1cm4gZG9tYWluX2xpdGVyYWwsIHZhbHVlCiAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKICAgICAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCiAgICBpZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgogICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKICAgIGlmIHZhbHVlWzBdICE9ICddJzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgJ10nIGF0IGVuZCBvZiBkb21haW4tbGl0ZXJhbCAiCiAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnXScsICdkb21haW4tbGl0ZXJhbC1lbmQnKSkKICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQoKZGVmIGdldF9kb21haW4odmFsdWUpOgogICAgIiIiIGRvbWFpbiA9IGRvdC1hdG9tIC8gZG9tYWluLWxpdGVyYWwgLyBvYnMtZG9tYWluCiAgICAgICAgb2JzLWRvbWFpbiA9IGF0b20gKigiLiIgYXRvbSkpCgogICAgIiIiCiAgICBkb21haW4gPSBEb21haW4oKQogICAgbGVhZGVyID0gTm9uZQogICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAiZXhwZWN0ZWQgZG9tYWluIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQogICAgaWYgdmFsdWVbMF0gPT0gJ1snOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW5fbGl0ZXJhbCh2YWx1ZSkKICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCiAgICAgICAgZG9tYWluLmFwcGVuZCh0b2tlbikKICAgICAgICByZXR1cm4gZG9tYWluLCB2YWx1ZQogICAgdHJ5OgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbSh2YWx1ZSkKICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRvbSh2YWx1ZSkKICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnQCc6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoJ0ludmFsaWQgRG9tYWluJykKICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQogICAgZG9tYWluLmFwcGVuZCh0b2tlbikKICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CiAgICAgICAgZG9tYWluLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgImRvbWFpbiBpcyBub3QgYSBkb3QtYXRvbSAoY29udGFpbnMgQ0ZXUykiKSkKICAgICAgICBpZiBkb21haW5bMF0udG9rZW5fdHlwZSA9PSAnZG90LWF0b20nOgogICAgICAgICAgICBkb21haW5bOl0gPSBkb21haW5bMF0KICAgICAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJy4nOgogICAgICAgICAgICBkb21haW4uYXBwZW5kKERPVCkKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0b20odmFsdWVbMTpdKQogICAgICAgICAgICBkb21haW4uYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGRvbWFpbiwgdmFsdWUKCmRlZiBnZXRfYWRkcl9zcGVjKHZhbHVlKToKICAgICIiIiBhZGRyLXNwZWMgPSBsb2NhbC1wYXJ0ICJAIiBkb21haW4KCiAgICAiIiIKICAgIGFkZHJfc3BlYyA9IEFkZHJTcGVjKCkKICAgIHRva2VuLCB2YWx1ZSA9IGdldF9sb2NhbF9wYXJ0KHZhbHVlKQogICAgYWRkcl9zcGVjLmFwcGVuZCh0b2tlbikKICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnQCc6CiAgICAgICAgYWRkcl9zcGVjLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAiYWRkci1zcGVjIGxvY2FsIHBhcnQgd2l0aCBubyBkb21haW4iKSkKICAgICAgICByZXR1cm4gYWRkcl9zcGVjLCB2YWx1ZQogICAgYWRkcl9zcGVjLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCdAJywgJ2FkZHJlc3MtYXQtc3ltYm9sJykpCiAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG9tYWluKHZhbHVlWzE6XSkKICAgIGFkZHJfc3BlYy5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gYWRkcl9zcGVjLCB2YWx1ZQoKZGVmIGdldF9vYnNfcm91dGUodmFsdWUpOgogICAgIiIiIG9icy1yb3V0ZSA9IG9icy1kb21haW4tbGlzdCAiOiIKICAgICAgICBvYnMtZG9tYWluLWxpc3QgPSAqKENGV1MgLyAiLCIpICJAIiBkb21haW4gKigiLCIgW0NGV1NdIFsiQCIgZG9tYWluXSkKCiAgICAgICAgUmV0dXJucyBhbiBvYnMtcm91dGUgdG9rZW4gd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3ViLXRva2VucyAodGhhdCBpcywKICAgICAgICB0aGVyZSBpcyBubyBvYnMtZG9tYWluLWxpc3QgaW4gdGhlIHBhcnNlIHRyZWUpLgogICAgIiIiCiAgICBvYnNfcm91dGUgPSBPYnNSb3V0ZSgpCiAgICB3aGlsZSB2YWx1ZSBhbmQgKHZhbHVlWzBdPT0nLCcgb3IgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVIpOgogICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcsJzoKICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChMaXN0U2VwYXJhdG9yKQogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICdAJzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgImV4cGVjdGVkIG9icy1yb3V0ZSBkb21haW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICBvYnNfcm91dGUuYXBwZW5kKFJvdXRlQ29tcG9uZW50TWFya2VyKQogICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbih2YWx1ZVsxOl0pCiAgICBvYnNfcm91dGUuYXBwZW5kKHRva2VuKQogICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdPT0nLCc6CiAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChMaXN0U2VwYXJhdG9yKQogICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICAgICAgaWYgbm90IHZhbHVlOgogICAgICAgICAgICBicmVhawogICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKICAgICAgICBpZiB2YWx1ZVswXSA9PSAnQCc6CiAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQoUm91dGVDb21wb25lbnRNYXJrZXIpCiAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW4odmFsdWVbMTpdKQogICAgICAgICAgICBvYnNfcm91dGUuYXBwZW5kKHRva2VuKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJlbmQgb2YgaGVhZGVyIHdoaWxlIHBhcnNpbmcgb2JzLXJvdXRlIikKICAgIGlmIHZhbHVlWzBdICE9ICc6JzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvciggImV4cGVjdGVkICc6JyBtYXJraW5nIGVuZCBvZiAiCiAgICAgICAgICAgICJvYnMtcm91dGUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICBvYnNfcm91dGUuYXBwZW5kKFZhbHVlVGVybWluYWwoJzonLCAnZW5kLW9mLW9icy1yb3V0ZS1tYXJrZXInKSkKICAgIHJldHVybiBvYnNfcm91dGUsIHZhbHVlWzE6XQoKZGVmIGdldF9hbmdsZV9hZGRyKHZhbHVlKToKICAgICIiIiBhbmdsZS1hZGRyID0gW0NGV1NdICI8IiBhZGRyLXNwZWMgIj4iIFtDRldTXSAvIG9icy1hbmdsZS1hZGRyCiAgICAgICAgb2JzLWFuZ2xlLWFkZHIgPSBbQ0ZXU10gIjwiIG9icy1yb3V0ZSBhZGRyLXNwZWMgIj4iIFtDRldTXQoKICAgICIiIgogICAgYW5nbGVfYWRkciA9IEFuZ2xlQWRkcigpCiAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZCh0b2tlbikKICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnPCc6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICJleHBlY3RlZCBhbmdsZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQogICAgYW5nbGVfYWRkci5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPCcsICdhbmdsZS1hZGRyLXN0YXJ0JykpCiAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgIyBBbHRob3VnaCBpdCBpcyBub3QgbGVnYWwgcGVyIFJGQzUzMjIsIFNNVFAgdXNlcyAnPD4nIGluIGNlcnRhaW4KICAgICMgY2lyY3Vtc3RhbmNlcy4KICAgIGlmIHZhbHVlWzBdID09ICc+JzoKICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc+JywgJ2FuZ2xlLWFkZHItZW5kJykpCiAgICAgICAgYW5nbGVfYWRkci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIm51bGwgYWRkci1zcGVjIGluIGFuZ2xlLWFkZHIiKSkKICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgICAgIHJldHVybiBhbmdsZV9hZGRyLCB2YWx1ZQogICAgdHJ5OgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCiAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfb2JzX3JvdXRlKHZhbHVlKQogICAgICAgICAgICBhbmdsZV9hZGRyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICJvYnNvbGV0ZSByb3V0ZSBzcGVjaWZpY2F0aW9uIGluIGFuZ2xlLWFkZHIiKSkKICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAgICAgImV4cGVjdGVkIGFkZHItc3BlYyBvciBvYnMtcm91dGUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJfc3BlYyh2YWx1ZSkKICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICc+JzoKICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgZWxzZToKICAgICAgICBhbmdsZV9hZGRyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAibWlzc2luZyB0cmFpbGluZyAnPicgb24gYW5nbGUtYWRkciIpKQogICAgYW5nbGVfYWRkci5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPicsICdhbmdsZS1hZGRyLWVuZCcpKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGFuZ2xlX2FkZHIsIHZhbHVlCgpkZWYgZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSk6CiAgICAiIiIgZGlzcGxheS1uYW1lID0gcGhyYXNlCgogICAgQmVjYXVzZSB0aGlzIGlzIHNpbXBseSBhIG5hbWUtcnVsZSwgd2UgZG9uJ3QgcmV0dXJuIGEgZGlzcGxheS1uYW1lCiAgICB0b2tlbiBjb250YWluaW5nIGEgcGhyYXNlLCBidXQgcmF0aGVyIGEgZGlzcGxheS1uYW1lIHRva2VuIHdpdGgKICAgIHRoZSBjb250ZW50IG9mIHRoZSBwaHJhc2UuCgogICAgIiIiCiAgICBkaXNwbGF5X25hbWUgPSBEaXNwbGF5TmFtZSgpCiAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQogICAgZGlzcGxheV9uYW1lLmV4dGVuZCh0b2tlbls6XSkKICAgIGRpc3BsYXlfbmFtZS5kZWZlY3RzID0gdG9rZW4uZGVmZWN0c1s6XQogICAgcmV0dXJuIGRpc3BsYXlfbmFtZSwgdmFsdWUKCgpkZWYgZ2V0X25hbWVfYWRkcih2YWx1ZSk6CiAgICAiIiIgbmFtZS1hZGRyID0gW2Rpc3BsYXktbmFtZV0gYW5nbGUtYWRkcgoKICAgICIiIgogICAgbmFtZV9hZGRyID0gTmFtZUFkZHIoKQogICAgIyBCb3RoIHRoZSBvcHRpb25hbCBkaXNwbGF5IG5hbWUgYW5kIHRoZSBhbmdsZS1hZGRyIGNhbiBzdGFydCB3aXRoIGNmd3MuCiAgICBsZWFkZXIgPSBOb25lCiAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgaWYgbm90IHZhbHVlOgogICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgICAgICJleHBlY3RlZCBuYW1lLWFkZHIgYnV0IGZvdW5kICd7fSciLmZvcm1hdChsZWFkZXIpKQogICAgaWYgdmFsdWVbMF0gIT0gJzwnOgogICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgogICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgICAgICJleHBlY3RlZCBuYW1lLWFkZHIgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSkKICAgICAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHRva2VuKSkKICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHRva2VuWzBdWzowXSA9IFtsZWFkZXJdCiAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKICAgICAgICBuYW1lX2FkZHIuYXBwZW5kKHRva2VuKQogICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FuZ2xlX2FkZHIodmFsdWUpCiAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KICAgIG5hbWVfYWRkci5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gbmFtZV9hZGRyLCB2YWx1ZQoKZGVmIGdldF9tYWlsYm94KHZhbHVlKToKICAgICIiIiBtYWlsYm94ID0gbmFtZS1hZGRyIC8gYWRkci1zcGVjCgogICAgIiIiCiAgICAjIFRoZSBvbmx5IHdheSB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBuYW1lLWFkZHIgb3IgYW4KICAgICMgYWRkci1zcGVjIGlzIHRvIHRyeSBwYXJzaW5nIGVhY2ggb25lLgogICAgbWFpbGJveCA9IE1haWxib3goKQogICAgdHJ5OgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9uYW1lX2FkZHIodmFsdWUpCiAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYWRkcl9zcGVjKHZhbHVlKQogICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWFpbGJveCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KQogICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHRva2VuLmFsbF9kZWZlY3RzKToKICAgICAgICBtYWlsYm94LnRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JwogICAgbWFpbGJveC5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gbWFpbGJveCwgdmFsdWUKCmRlZiBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCBlbmRjaGFycyk6CiAgICAiIiIgUmVhZCBldmVyeXRoaW5nIHVwIHRvIG9uZSBvZiB0aGUgY2hhcnMgaW4gZW5kY2hhcnMuCgogICAgVGhpcyBpcyBvdXRzaWRlIHRoZSBmb3JtYWwgZ3JhbW1hci4gIFRoZSBJbnZhbGlkTWFpbGJveCBUb2tlbkxpc3QgdGhhdCBpcwogICAgcmV0dXJuZWQgYWN0cyBsaWtlIGEgTWFpbGJveCwgYnV0IHRoZSBkYXRhIGF0dHJpYnV0ZXMgYXJlIE5vbmUuCgogICAgIiIiCiAgICBpbnZhbGlkX21haWxib3ggPSBJbnZhbGlkTWFpbGJveCgpCiAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluIGVuZGNoYXJzOgogICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgogICAgICAgICAgICBpbnZhbGlkX21haWxib3guYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzcGxhY2VkLXNwZWNpYWwnKSkKICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQogICAgICAgICAgICBpbnZhbGlkX21haWxib3guYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGludmFsaWRfbWFpbGJveCwgdmFsdWUKCmRlZiBnZXRfbWFpbGJveF9saXN0KHZhbHVlKToKICAgICIiIiBtYWlsYm94LWxpc3QgPSAobWFpbGJveCAqKCIsIiBtYWlsYm94KSkgLyBvYnMtbWJveC1saXN0CiAgICAgICAgb2JzLW1ib3gtbGlzdCA9ICooW0NGV1NdICIsIikgbWFpbGJveCAqKCIsIiBbbWFpbGJveCAvIENGV1NdKQoKICAgIEZvciB0aGlzIHJvdXRpbmUgd2UgZ28gb3V0c2lkZSB0aGUgZm9ybWFsIGdyYW1tYXIgaW4gb3JkZXIgdG8gaW1wcm92ZSBlcnJvcgogICAgaGFuZGxpbmcuICBXZSByZWNvZ25pemUgdGhlIGVuZCBvZiB0aGUgbWFpbGJveCBsaXN0IG9ubHkgYXQgdGhlIGVuZCBvZiB0aGUKICAgIHZhbHVlIG9yIGF0IGEgJzsnICh0aGUgZ3JvdXAgdGVybWluYXRvcikuICBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIHR1cm4KICAgIGludmFsaWQgbWFpbGJveGVzIGludG8gSW52YWxpZE1haWxib3ggdG9rZW5zIGFuZCBjb250aW51ZSBwYXJzaW5nIGFueQogICAgcmVtYWluaW5nIHZhbGlkIG1haWxib3hlcy4gIFdlIGFsc28gYWxsb3cgYWxsIG1haWxib3ggZW50cmllcyB0byBiZSBudWxsLAogICAgYW5kIHRoaXMgY29uZGl0aW9uIGlzIGhhbmRsZWQgYXBwcm9wcmlhdGVseSBhdCBhIGhpZ2hlciBsZXZlbC4KCiAgICAiIiIKICAgIG1haWxib3hfbGlzdCA9IE1haWxib3hMaXN0KCkKICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbWFpbGJveCh2YWx1ZSkKICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gaW4gJyw7JzoKICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKGxlYWRlcikKICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBtYWlsYm94LWxpc3QiKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJyw7JykKICAgICAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCiAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCiAgICAgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgogICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBtYWlsYm94LWxpc3QiKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCiAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQodG9rZW4pCiAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbWFpbGJveCBpbiBtYWlsYm94LWxpc3QiKSkKICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluICcsOyc6CiAgICAgICAgICAgICMgQ3JhcCBhZnRlciBtYWlsYm94OyB0cmVhdCBpdCBhcyBhbiBpbnZhbGlkIG1haWxib3guCiAgICAgICAgICAgICMgVGhlIG1haWxib3ggaW5mbyB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZS4KICAgICAgICAgICAgbWFpbGJveCA9IG1haWxib3hfbGlzdFstMV0KICAgICAgICAgICAgbWFpbGJveC50b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJyw7JykKICAgICAgICAgICAgbWFpbGJveC5leHRlbmQodG9rZW4pCiAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCiAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICcsJzoKICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZChMaXN0U2VwYXJhdG9yKQogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgcmV0dXJuIG1haWxib3hfbGlzdCwgdmFsdWUKCgpkZWYgZ2V0X2dyb3VwX2xpc3QodmFsdWUpOgogICAgIiIiIGdyb3VwLWxpc3QgPSBtYWlsYm94LWxpc3QgLyBDRldTIC8gb2JzLWdyb3VwLWxpc3QKICAgICAgICBvYnMtZ3JvdXAtbGlzdCA9IDEqKFtDRldTXSAiLCIpIFtDRldTXQoKICAgICIiIgogICAgZ3JvdXBfbGlzdCA9IEdyb3VwTGlzdCgpCiAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgYmVmb3JlIGdyb3VwLWxpc3QiKSkKICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKICAgIGxlYWRlciA9IE5vbmUKICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgaWYgbm90IHZhbHVlOgogICAgICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBlbWFpbCBwYXJzaW5nLCBzaW5jZSBDRldTLW9ubHkgaXMgYQogICAgICAgICAgICAjIGxlZ2FsIGFsdGVybmF0aXZlIHRvIGdyb3VwLWxpc3QgaW4gYSBncm91cCwgd2hpY2ggaXMgdGhlIG9ubHkKICAgICAgICAgICAgIyBwbGFjZSBncm91cC1saXN0IGFwcGVhcnMuCiAgICAgICAgICAgIGdyb3VwX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbiBncm91cC1saXN0IikpCiAgICAgICAgICAgIGdyb3VwX2xpc3QuYXBwZW5kKGxlYWRlcikKICAgICAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCiAgICAgICAgaWYgdmFsdWVbMF0gPT0gJzsnOgogICAgICAgICAgICBncm91cF9saXN0LmFwcGVuZChsZWFkZXIpCiAgICAgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQogICAgdG9rZW4sIHZhbHVlID0gZ2V0X21haWxib3hfbGlzdCh2YWx1ZSkKICAgIGlmIGxlbih0b2tlbi5hbGxfbWFpbGJveGVzKT09MDoKICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGdyb3VwX2xpc3QuYXBwZW5kKGxlYWRlcikKICAgICAgICBncm91cF9saXN0LmV4dGVuZCh0b2tlbikKICAgICAgICBncm91cF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgImdyb3VwLWxpc3Qgd2l0aCBlbXB0eSBlbnRyaWVzIikpCiAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCiAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KICAgIGdyb3VwX2xpc3QuYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCgpkZWYgZ2V0X2dyb3VwKHZhbHVlKToKICAgICIiIiBncm91cCA9IGRpc3BsYXktbmFtZSAiOiIgW2dyb3VwLWxpc3RdICI7IiBbQ0ZXU10KCiAgICAiIiIKICAgIGdyb3VwID0gR3JvdXAoKQogICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSkKICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnOic6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkICc6JyBhdCBlbmQgb2YgZ3JvdXAgIgogICAgICAgICAgICAiZGlzcGxheSBuYW1lIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQogICAgZ3JvdXAuYXBwZW5kKHRva2VuKQogICAgZ3JvdXAuYXBwZW5kKFZhbHVlVGVybWluYWwoJzonLCAnZ3JvdXAtZGlzcGxheS1uYW1lLXRlcm1pbmF0b3InKSkKICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJzsnOgogICAgICAgIGdyb3VwLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ2dyb3VwLXRlcm1pbmF0b3InKSkKICAgICAgICByZXR1cm4gZ3JvdXAsIHZhbHVlWzE6XQogICAgdG9rZW4sIHZhbHVlID0gZ2V0X2dyb3VwX2xpc3QodmFsdWUpCiAgICBncm91cC5hcHBlbmQodG9rZW4pCiAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgZ3JvdXAuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluIGdyb3VwIikpCiAgICBlbGlmIHZhbHVlWzBdICE9ICc7JzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgImV4cGVjdGVkICc7JyBhdCBlbmQgb2YgZ3JvdXAgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQogICAgZ3JvdXAuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAnZ3JvdXAtdGVybWluYXRvcicpKQogICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICBncm91cC5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gZ3JvdXAsIHZhbHVlCgpkZWYgZ2V0X2FkZHJlc3ModmFsdWUpOgogICAgIiIiIGFkZHJlc3MgPSBtYWlsYm94IC8gZ3JvdXAKCiAgICBOb3RlIHRoYXQgY291bnRlci1pbnR1aXRpdmVseSwgYW4gYWRkcmVzcyBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIGFkZHJlc3Mgb3IKICAgIGEgbGlzdCBvZiBhZGRyZXNzZXMgKGEgZ3JvdXApLiAgVGhpcyBpcyB3aHkgdGhlIHJldHVybmVkIEFkZHJlc3Mgb2JqZWN0IGhhcwogICAgYSAnbWFpbGJveGVzJyBhdHRyaWJ1dGUgd2hpY2ggdHJlYXRzIGEgc2luZ2xlIGFkZHJlc3MgYXMgYSBsaXN0IG9mIGxlbmd0aAogICAgb25lLiAgV2hlbiB5b3UgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdG8gdHdvIGNhc2VzLCBleHRyYWN0IHRoZSBzaW5nbGUKICAgIGVsZW1lbnQsIHdoaWNoIGlzIGVpdGhlciBhIG1haWxib3ggb3IgYSBncm91cCB0b2tlbi4KCiAgICAiIiIKICAgICMgVGhlIGZvcm1hbCBncmFtbWFyIGlzbid0IHZlcnkgaGVscGZ1bCB3aGVuIHBhcnNpbmcgYW4gYWRkcmVzcy4gIG1haWxib3gKICAgICMgYW5kIGdyb3VwLCBlc3BlY2lhbGx5IHdoZW4gYWxsb3dpbmcgZm9yIG9ic29sZXRlIGZvcm1zLCBzdGFydCBvZmYgdmVyeQogICAgIyBzaW1pbGFybHkuICBJdCBpcyBvbmx5IHdoZW4geW91IHJlYWNoIG9uZSBvZiBALCA8LCBvciA6IHRoYXQgeW91IGtub3cKICAgICMgd2hhdCB5b3UndmUgZ290LiAgU28sIHdlIHRyeSBlYWNoIG9uZSBpbiB0dXJuLCBzdGFydGluZyB3aXRoIHRoZSBtb3JlCiAgICAjIGxpa2VseSBvZiB0aGUgdHdvLiAgV2UgY291bGQgcGVyaGFwcyBtYWtlIHRoaXMgbW9yZSBlZmZpY2llbnQgYnkgbG9va2luZwogICAgIyBmb3IgYSBwaHJhc2UgYW5kIHRoZW4gYnJhbmNoaW5nIGJhc2VkIG9uIHRoZSBuZXh0IGNoYXJhY3RlciwgYnV0IHRoYXQKICAgICMgd291bGQgYmUgYSBwcmVtYXR1cmUgb3B0aW1pemF0aW9uLgogICAgYWRkcmVzcyA9IEFkZHJlc3MoKQogICAgdHJ5OgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9ncm91cCh2YWx1ZSkKICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9tYWlsYm94KHZhbHVlKQogICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYWRkcmVzcyBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIGFkZHJlc3MuYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGFkZHJlc3MsIHZhbHVlCgpkZWYgZ2V0X2FkZHJlc3NfbGlzdCh2YWx1ZSk6CiAgICAiIiIgYWRkcmVzc19saXN0ID0gKGFkZHJlc3MgKigiLCIgYWRkcmVzcykpIC8gb2JzLWFkZHItbGlzdAogICAgICAgIG9icy1hZGRyLWxpc3QgPSAqKFtDRldTXSAiLCIpIGFkZHJlc3MgKigiLCIgW2FkZHJlc3MgLyBDRldTXSkKCiAgICBXZSBkZXBhcnQgZnJvbSB0aGUgZm9ybWFsIGdyYW1tYXIgaGVyZSBieSBjb250aW51aW5nIHRvIHBhcnNlIHVudGlsIHRoZSBlbmQKICAgIG9mIHRoZSBpbnB1dCwgYXNzdW1pbmcgdGhlIGlucHV0IHRvIGJlIGVudGlyZWx5IGNvbXBvc2VkIG9mIGFuCiAgICBhZGRyZXNzLWxpc3QuICBUaGlzIGlzIGFsd2F5cyB0cnVlIGluIGVtYWlsIHBhcnNpbmcsIGFuZCBhbGxvd3MgdXMKICAgIHRvIHNraXAgaW52YWxpZCBhZGRyZXNzZXMgdG8gcGFyc2UgYWRkaXRpb25hbCB2YWxpZCBvbmVzLgoKICAgICIiIgogICAgYWRkcmVzc19saXN0ID0gQWRkcmVzc0xpc3QoKQogICAgd2hpbGUgdmFsdWU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYWRkcmVzcyh2YWx1ZSkKICAgICAgICAgICAgYWRkcmVzc19saXN0LmFwcGVuZCh0b2tlbikKICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IgYXMgZXJyOgogICAgICAgICAgICBsZWFkZXIgPSBOb25lCiAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgICAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdID09ICcsJzoKICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKGxlYWRlcikKICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAgICAgICAgICAgICAiYWRkcmVzcy1saXN0IGVudHJ5IHdpdGggbm8gY29udGVudCIpKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCiAgICAgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQogICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoQWRkcmVzcyhbdG9rZW5dKSkKICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFkZHJlc3MgaW4gYWRkcmVzcy1saXN0IikpCiAgICAgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgogICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBhZGRyZXNzLWxpc3QiKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsJykKICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQogICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFwcGVuZChBZGRyZXNzKFt0b2tlbl0pKQogICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFkZHJlc3MgaW4gYWRkcmVzcy1saXN0IikpCiAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICcsJzoKICAgICAgICAgICAgIyBDcmFwIGFmdGVyIGFkZHJlc3M7IHRyZWF0IGl0IGFzIGFuIGludmFsaWQgbWFpbGJveC4KICAgICAgICAgICAgIyBUaGUgbWFpbGJveCBpbmZvIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLgogICAgICAgICAgICBtYWlsYm94ID0gYWRkcmVzc19saXN0Wy0xXVswXQogICAgICAgICAgICBtYWlsYm94LnRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JwogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCiAgICAgICAgICAgIG1haWxib3guZXh0ZW5kKHRva2VuKQogICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAiaW52YWxpZCBhZGRyZXNzIGluIGFkZHJlc3MtbGlzdCIpKQogICAgICAgIGlmIHZhbHVlOiAgIyBNdXN0IGJlIGEgLCBhdCB0aGlzIHBvaW50LgogICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKFZhbHVlVGVybWluYWwoJywnLCAnbGlzdC1zZXBhcmF0b3InKSkKICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgIHJldHVybiBhZGRyZXNzX2xpc3QsIHZhbHVlCgoKZGVmIGdldF9ub19mb2xkX2xpdGVyYWwodmFsdWUpOgogICAgIiIiIG5vLWZvbGQtbGl0ZXJhbCA9ICJbIiAqZHRleHQgIl0iCiAgICAiIiIKICAgIG5vX2ZvbGRfbGl0ZXJhbCA9IE5vRm9sZExpdGVyYWwoKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAiZXhwZWN0ZWQgbm8tZm9sZC1saXRlcmFsIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQogICAgaWYgdmFsdWVbMF0gIT0gJ1snOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAiZXhwZWN0ZWQgJ1snIGF0IHRoZSBzdGFydCBvZiBuby1mb2xkLWxpdGVyYWwgIgogICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICBub19mb2xkX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ1snLCAnbm8tZm9sZC1saXRlcmFsLXN0YXJ0JykpCiAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgdG9rZW4sIHZhbHVlID0gZ2V0X2R0ZXh0KHZhbHVlKQogICAgbm9fZm9sZF9saXRlcmFsLmFwcGVuZCh0b2tlbikKICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnXSc6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICJleHBlY3RlZCAnXScgYXQgdGhlIGVuZCBvZiBuby1mb2xkLWxpdGVyYWwgIgogICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICBub19mb2xkX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ10nLCAnbm8tZm9sZC1saXRlcmFsLWVuZCcpKQogICAgcmV0dXJuIG5vX2ZvbGRfbGl0ZXJhbCwgdmFsdWVbMTpdCgpkZWYgZ2V0X21zZ19pZCh2YWx1ZSk6CiAgICAiIiJtc2ctaWQgPSBbQ0ZXU10gIjwiIGlkLWxlZnQgJ0AnIGlkLXJpZ2h0ICAiPiIgW0NGV1NdCiAgICAgICBpZC1sZWZ0ID0gZG90LWF0b20tdGV4dCAvIG9icy1pZC1sZWZ0CiAgICAgICBpZC1yaWdodCA9IGRvdC1hdG9tLXRleHQgLyBuby1mb2xkLWxpdGVyYWwgLyBvYnMtaWQtcmlnaHQKICAgICAgIG5vLWZvbGQtbGl0ZXJhbCA9ICJbIiAqZHRleHQgIl0iCiAgICAiIiIKICAgIG1zZ19pZCA9IE1zZ0lEKCkKICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICBtc2dfaWQuYXBwZW5kKHRva2VuKQogICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICc8JzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgImV4cGVjdGVkIG1zZy1pZCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIG1zZ19pZC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPCcsICdtc2ctaWQtc3RhcnQnKSkKICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICAjIFBhcnNlIGlkLWxlZnQuCiAgICB0cnk6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvdF9hdG9tX3RleHQodmFsdWUpCiAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIG9icy1pZC1sZWZ0IGlzIHNhbWUgYXMgbG9jYWwtcGFydCBvZiBhZGQtc3BlYy4KICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X29ic19sb2NhbF9wYXJ0KHZhbHVlKQogICAgICAgICAgICBtc2dfaWQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAgICAgIm9ic29sZXRlIGlkLWxlZnQgaW4gbXNnLWlkIikpCiAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgogICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgICAgICJleHBlY3RlZCBkb3QtYXRvbS10ZXh0IG9yIG9icy1pZC1sZWZ0IgogICAgICAgICAgICAgICAgIiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIG1zZ19pZC5hcHBlbmQodG9rZW4pCiAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJ0AnOgogICAgICAgIG1zZ19pZC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIm1zZy1pZCB3aXRoIG5vIGlkLXJpZ2h0IikpCiAgICAgICAgIyBFdmVuIHRob3VnaCB0aGVyZSBpcyBubyBpZC1yaWdodCwgaWYgdGhlIGxvY2FsIHBhcnQKICAgICAgICAjIGVuZHMgd2l0aCBgPmAgbGV0J3MganVzdCBwYXJzZSBpdCB0b28gYW5kIHJldHVybgogICAgICAgICMgYWxvbmcgd2l0aCB0aGUgZGVmZWN0LgogICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnPic6CiAgICAgICAgICAgIG1zZ19pZC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPicsICdtc2ctaWQtZW5kJykpCiAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICAgICAgcmV0dXJuIG1zZ19pZCwgdmFsdWUKICAgIG1zZ19pZC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnQCcsICdhZGRyZXNzLWF0LXN5bWJvbCcpKQogICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgICMgUGFyc2UgaWQtcmlnaHQuCiAgICB0cnk6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvdF9hdG9tX3RleHQodmFsdWUpCiAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbm9fZm9sZF9saXRlcmFsKHZhbHVlKQogICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvciBhcyBlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG9tYWluKHZhbHVlKQogICAgICAgICAgICAgICAgbXNnX2lkLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICAgICAib2Jzb2xldGUgaWQtcmlnaHQgaW4gbXNnLWlkIikpCiAgICAgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBkb3QtYXRvbS10ZXh0LCBuby1mb2xkLWxpdGVyYWwgb3Igb2JzLWlkLXJpZ2h0IgogICAgICAgICAgICAgICAgICAgICIgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICBtc2dfaWQuYXBwZW5kKHRva2VuKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICc+JzoKICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgZWxzZToKICAgICAgICBtc2dfaWQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJtaXNzaW5nIHRyYWlsaW5nICc+JyBvbiBtc2ctaWQiKSkKICAgIG1zZ19pZC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPicsICdtc2ctaWQtZW5kJykpCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgbXNnX2lkLmFwcGVuZCh0b2tlbikKICAgIHJldHVybiBtc2dfaWQsIHZhbHVlCgoKZGVmIHBhcnNlX21lc3NhZ2VfaWQodmFsdWUpOgogICAgIiIibWVzc2FnZS1pZCAgICAgID0gICAiTWVzc2FnZS1JRDoiIG1zZy1pZCBDUkxGCiAgICAiIiIKICAgIG1lc3NhZ2VfaWQgPSBNZXNzYWdlSUQoKQogICAgdHJ5OgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9tc2dfaWQodmFsdWUpCiAgICAgICAgbWVzc2FnZV9pZC5hcHBlbmQodG9rZW4pCiAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IgYXMgZXg6CiAgICAgICAgdG9rZW4gPSBnZXRfdW5zdHJ1Y3R1cmVkKHZhbHVlKQogICAgICAgIG1lc3NhZ2VfaWQgPSBJbnZhbGlkTWVzc2FnZUlEKHRva2VuKQogICAgICAgIG1lc3NhZ2VfaWQuZGVmZWN0cy5hcHBlbmQoCiAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KCJJbnZhbGlkIG1zZy1pZDogeyFyfSIuZm9ybWF0KGV4KSkpCiAgICBlbHNlOgogICAgICAgICMgVmFsdWUgYWZ0ZXIgcGFyc2luZyBhIHZhbGlkIG1zZ19pZCBzaG91bGQgYmUgTm9uZS4KICAgICAgICBpZiB2YWx1ZToKICAgICAgICAgICAgbWVzc2FnZV9pZC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQoKICAgIHJldHVybiBtZXNzYWdlX2lkCgojCiMgWFhYOiBBcyBJIGJlZ2luIHRvIGFkZCBhZGRpdGlvbmFsIGhlYWRlciBwYXJzZXJzLCBJJ20gcmVhbGl6aW5nIHdlIHByb2JhYmx5CiMgaGF2ZSB0d28gbGV2ZWwgb2YgcGFyc2VyIHJvdXRpbmVzOiB0aGUgZ2V0X1hYWCBtZXRob2RzIHRoYXQgZ2V0IGEgdG9rZW4gaW4KIyB0aGUgZ3JhbW1hciwgYW5kIHBhcnNlX1hYWCBtZXRob2RzIHRoYXQgcGFyc2UgYW4gZW50aXJlIGZpZWxkIHZhbHVlLiAgU28KIyBnZXRfYWRkcmVzc19saXN0IGFib3ZlIHNob3VsZCByZWFsbHkgYmUgYSBwYXJzZV8gbWV0aG9kLCBhcyBwcm9iYWJseSBzaG91bGQKIyBiZSBnZXRfdW5zdHJ1Y3R1cmVkLgojCgpkZWYgcGFyc2VfbWltZV92ZXJzaW9uKHZhbHVlKToKICAgICIiIiBtaW1lLXZlcnNpb24gPSBbQ0ZXU10gMSpkaWdpdCBbQ0ZXU10gIi4iIFtDRldTXSAxKmRpZ2l0IFtDRldTXQoKICAgICIiIgogICAgIyBUaGUgW0NGV1NdIGlzIGltcGxpY2l0IGluIHRoZSBSRkMgMjA0NSBCTkYuCiAgICAjIFhYWDogVGhpcyByb3V0aW5lIGlzIGEgYml0IHZlcmJvc2UsIHNob3VsZCBmYWN0b3Igb3V0IGEgZ2V0X2ludCBtZXRob2QuCiAgICBtaW1lX3ZlcnNpb24gPSBNSU1FVmVyc2lvbigpCiAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKICAgICAgICAgICAgIk1pc3NpbmcgTUlNRSB2ZXJzaW9uIG51bWJlciAoZWc6IDEuMCkiKSkKICAgICAgICByZXR1cm4gbWltZV92ZXJzaW9uCiAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQogICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKICAgICAgICAgICAgICAgICJFeHBlY3RlZCBNSU1FIHZlcnNpb24gbnVtYmVyIGJ1dCBmb3VuZCBvbmx5IENGV1MiKSkKICAgIGRpZ2l0cyA9ICcnCiAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJy4nIGFuZCB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgZGlnaXRzICs9IHZhbHVlWzBdCiAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgIGlmIG5vdCBkaWdpdHMuaXNkaWdpdCgpOgogICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIkV4cGVjdGVkIE1JTUUgbWFqb3IgdmVyc2lvbiBudW1iZXIgYnV0IGZvdW5kIHshcn0iLmZvcm1hdChkaWdpdHMpKSkKICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAneHRleHQnKSkKICAgIGVsc2U6CiAgICAgICAgbWltZV92ZXJzaW9uLm1ham9yID0gaW50KGRpZ2l0cykKICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnLic6CiAgICAgICAgaWYgbWltZV92ZXJzaW9uLm1ham9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAiSW5jb21wbGV0ZSBNSU1FIHZlcnNpb247IGZvdW5kIG9ubHkgbWFqb3IgbnVtYmVyIikpCiAgICAgICAgaWYgdmFsdWU6CiAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZSwgJ3h0ZXh0JykpCiAgICAgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgogICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcuJywgJ3ZlcnNpb24tc2VwYXJhdG9yJykpCiAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQodG9rZW4pCiAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgaWYgbWltZV92ZXJzaW9uLm1ham9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAiSW5jb21wbGV0ZSBNSU1FIHZlcnNpb247IGZvdW5kIG9ubHkgbWFqb3IgbnVtYmVyIikpCiAgICAgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgogICAgZGlnaXRzID0gJycKICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgZGlnaXRzICs9IHZhbHVlWzBdCiAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgIGlmIG5vdCBkaWdpdHMuaXNkaWdpdCgpOgogICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIkV4cGVjdGVkIE1JTUUgbWlub3IgdmVyc2lvbiBudW1iZXIgYnV0IGZvdW5kIHshcn0iLmZvcm1hdChkaWdpdHMpKSkKICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAneHRleHQnKSkKICAgIGVsc2U6CiAgICAgICAgbWltZV92ZXJzaW9uLm1pbm9yID0gaW50KGRpZ2l0cykKICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKICAgIGlmIHZhbHVlOgogICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIkV4Y2VzcyBub24tQ0ZXUyB0ZXh0IGFmdGVyIE1JTUUgdmVyc2lvbiIpKQogICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZSwgJ3h0ZXh0JykpCiAgICByZXR1cm4gbWltZV92ZXJzaW9uCgpkZWYgZ2V0X2ludmFsaWRfcGFyYW1ldGVyKHZhbHVlKToKICAgICIiIiBSZWFkIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIG5leHQgJzsnLgoKICAgIFRoaXMgaXMgb3V0c2lkZSB0aGUgZm9ybWFsIGdyYW1tYXIuICBUaGUgSW52YWxpZFBhcmFtZXRlciBUb2tlbkxpc3QgdGhhdCBpcwogICAgcmV0dXJuZWQgYWN0cyBsaWtlIGEgUGFyYW1ldGVyLCBidXQgdGhlIGRhdGEgYXR0cmlidXRlcyBhcmUgTm9uZS4KCiAgICAiIiIKICAgIGludmFsaWRfcGFyYW1ldGVyID0gSW52YWxpZFBhcmFtZXRlcigpCiAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgogICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgogICAgICAgICAgICBpbnZhbGlkX3BhcmFtZXRlci5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCiAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKICAgICAgICAgICAgaW52YWxpZF9wYXJhbWV0ZXIuYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGludmFsaWRfcGFyYW1ldGVyLCB2YWx1ZQoKZGVmIGdldF90dGV4dCh2YWx1ZSk6CiAgICAiIiJ0dGV4dCA9IDxtYXRjaGVzIF90dGV4dF9tYXRjaGVyPgoKICAgIFdlIGFsbG93IGFueSBub24tVE9LRU5fRU5EUyBpbiB0dGV4dCwgYnV0IGFkZCBkZWZlY3RzIHRvIHRoZSB0b2tlbidzCiAgICBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tdHRleHQgY2hhcmFjdGVycy4gIFdlIGFsc28gcmVnaXN0ZXIgZGVmZWN0cyBmb3IKICAgICphbnkqIG5vbi1wcmludGFibGVzIGV2ZW4gdGhvdWdoIHRoZSBSRkMgZG9lc24ndCBleGNsdWRlIGFsbCBvZiB0aGVtLAogICAgYmVjYXVzZSB3ZSBmb2xsb3cgdGhlIHNwaXJpdCBvZiBSRkMgNTMyMi4KCiAgICAiIiIKICAgIG0gPSBfbm9uX3Rva2VuX2VuZF9tYXRjaGVyKHZhbHVlKQogICAgaWYgbm90IG06CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICJleHBlY3RlZCB0dGV4dCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIHR0ZXh0ID0gbS5ncm91cCgpCiAgICB2YWx1ZSA9IHZhbHVlW2xlbih0dGV4dCk6XQogICAgdHRleHQgPSBWYWx1ZVRlcm1pbmFsKHR0ZXh0LCAndHRleHQnKQogICAgX3ZhbGlkYXRlX3h0ZXh0KHR0ZXh0KQogICAgcmV0dXJuIHR0ZXh0LCB2YWx1ZQoKZGVmIGdldF90b2tlbih2YWx1ZSk6CiAgICAiIiJ0b2tlbiA9IFtDRldTXSAxKnR0ZXh0IFtDRldTXQoKICAgIFRoZSBSRkMgZXF1aXZhbGVudCBvZiB0dGV4dCBpcyBhbnkgVVMtQVNDSUkgY2hhcnMgZXhjZXB0IHNwYWNlLCBjdGxzLCBvcgogICAgdHNwZWNpYWxzLiAgV2UgYWxzbyBleGNsdWRlIHRhYnMgZXZlbiB0aG91Z2ggdGhlIFJGQyBkb2Vzbid0LgoKICAgIFRoZSBSRkMgaW1wbGllcyB0aGUgQ0ZXUyBidXQgaXMgbm90IGV4cGxpY2l0IGFib3V0IGl0IGluIHRoZSBCTkYuCgogICAgIiIiCiAgICBtdG9rZW4gPSBUb2tlbigpCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgbXRva2VuLmFwcGVuZCh0b2tlbikKICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBUT0tFTl9FTkRTOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAiZXhwZWN0ZWQgdG9rZW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdHRleHQodmFsdWUpCiAgICBtdG9rZW4uYXBwZW5kKHRva2VuKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgIG10b2tlbi5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gbXRva2VuLCB2YWx1ZQoKZGVmIGdldF9hdHRydGV4dCh2YWx1ZSk6CiAgICAiIiJhdHRydGV4dCA9IDEqKGFueSBub24tQVRUUklCVVRFX0VORFMgY2hhcmFjdGVyKQoKICAgIFdlIGFsbG93IGFueSBub24tQVRUUklCVVRFX0VORFMgaW4gYXR0cnRleHQsIGJ1dCBhZGQgZGVmZWN0cyB0byB0aGUKICAgIHRva2VuJ3MgZGVmZWN0cyBsaXN0IGlmIHdlIGZpbmQgbm9uLWF0dHJ0ZXh0IGNoYXJhY3RlcnMuICBXZSBhbHNvIHJlZ2lzdGVyCiAgICBkZWZlY3RzIGZvciAqYW55KiBub24tcHJpbnRhYmxlcyBldmVuIHRob3VnaCB0aGUgUkZDIGRvZXNuJ3QgZXhjbHVkZSBhbGwgb2YKICAgIHRoZW0sIGJlY2F1c2Ugd2UgZm9sbG93IHRoZSBzcGlyaXQgb2YgUkZDIDUzMjIuCgogICAgIiIiCiAgICBtID0gX25vbl9hdHRyaWJ1dGVfZW5kX21hdGNoZXIodmFsdWUpCiAgICBpZiBub3QgbToKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKICAgICAgICAgICAgImV4cGVjdGVkIGF0dHJ0ZXh0IGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKQogICAgYXR0cnRleHQgPSBtLmdyb3VwKCkKICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0dHJ0ZXh0KTpdCiAgICBhdHRydGV4dCA9IFZhbHVlVGVybWluYWwoYXR0cnRleHQsICdhdHRydGV4dCcpCiAgICBfdmFsaWRhdGVfeHRleHQoYXR0cnRleHQpCiAgICByZXR1cm4gYXR0cnRleHQsIHZhbHVlCgpkZWYgZ2V0X2F0dHJpYnV0ZSh2YWx1ZSk6CiAgICAiIiIgW0NGV1NdIDEqYXR0cnRleHQgW0NGV1NdCgogICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBCTkYgbWFrZXMgdGhlIENGV1MgZXhwbGljaXQsIGFuZCBhcyB1c3VhbCB3ZSB1c2UgYQogICAgdmFsdWUgdGVybWluYWwgZm9yIHRoZSBhY3R1YWwgcnVuIG9mIGNoYXJhY3RlcnMuICBUaGUgUkZDIGVxdWl2YWxlbnQgb2YKICAgIGF0dHJ0ZXh0IGlzIHRoZSB0b2tlbiBjaGFyYWN0ZXJzLCB3aXRoIHRoZSBzdWJ0cmFjdGlvbiBvZiAnKicsICInIiwgYW5kICclJy4KICAgIFdlIGluY2x1ZGUgdGFiIGluIHRoZSBleGNsdWRlZCBzZXQganVzdCBhcyB3ZSBkbyBmb3IgdG9rZW4uCgogICAgIiIiCiAgICBhdHRyaWJ1dGUgPSBBdHRyaWJ1dGUoKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQVRUUklCVVRFX0VORFM6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICJleHBlY3RlZCB0b2tlbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdHRydGV4dCh2YWx1ZSkKICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCiAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKICAgIHJldHVybiBhdHRyaWJ1dGUsIHZhbHVlCgpkZWYgZ2V0X2V4dGVuZGVkX2F0dHJ0ZXh0KHZhbHVlKToKICAgICIiImF0dHJ0ZXh0ID0gMSooYW55IG5vbi1BVFRSSUJVVEVfRU5EUyBjaGFyYWN0ZXIgcGx1cyAnJScpCgogICAgVGhpcyBpcyBhIHNwZWNpYWwgcGFyc2luZyByb3V0aW5lIHNvIHRoYXQgd2UgZ2V0IGEgdmFsdWUgdGhhdAogICAgaW5jbHVkZXMgJSBlc2NhcGVzIGFzIGEgc2luZ2xlIHN0cmluZyAod2hpY2ggd2UgZGVjb2RlIGFzIGEgc2luZ2xlCiAgICBzdHJpbmcgbGF0ZXIpLgoKICAgICIiIgogICAgbSA9IF9ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyKHZhbHVlKQogICAgaWYgbm90IG06CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCiAgICAgICAgICAgICJleHBlY3RlZCBleHRlbmRlZCBhdHRydGV4dCBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkKICAgIGF0dHJ0ZXh0ID0gbS5ncm91cCgpCiAgICB2YWx1ZSA9IHZhbHVlW2xlbihhdHRydGV4dCk6XQogICAgYXR0cnRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0dHJ0ZXh0LCAnZXh0ZW5kZWQtYXR0cnRleHQnKQogICAgX3ZhbGlkYXRlX3h0ZXh0KGF0dHJ0ZXh0KQogICAgcmV0dXJuIGF0dHJ0ZXh0LCB2YWx1ZQoKZGVmIGdldF9leHRlbmRlZF9hdHRyaWJ1dGUodmFsdWUpOgogICAgIiIiIFtDRldTXSAxKmV4dGVuZGVkX2F0dHJ0ZXh0IFtDRldTXQoKICAgIFRoaXMgaXMgbGlrZSB0aGUgbm9uLWV4dGVuZGVkIHZlcnNpb24gZXhjZXB0IHdlIGFsbG93ICUgY2hhcmFjdGVycywgc28gdGhhdAogICAgd2UgY2FuIHBpY2sgdXAgYW4gZW5jb2RlZCB2YWx1ZSBhcyBhIHNpbmdsZSBzdHJpbmcuCgogICAgIiIiCiAgICAjIFhYWDogc2hvdWxkIHdlIGhhdmUgYW4gRXh0ZW5kZWRBdHRyaWJ1dGUgVG9rZW5MaXN0PwogICAgYXR0cmlidXRlID0gQXR0cmlidXRlKCkKICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIEVYVEVOREVEX0FUVFJJQlVURV9FTkRTOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAiZXhwZWN0ZWQgdG9rZW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCiAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZXh0ZW5kZWRfYXR0cnRleHQodmFsdWUpCiAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQogICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCiAgICByZXR1cm4gYXR0cmlidXRlLCB2YWx1ZQoKZGVmIGdldF9zZWN0aW9uKHZhbHVlKToKICAgICIiIiAnKicgZGlnaXRzCgogICAgVGhlIGZvcm1hbCBCTkYgaXMgbW9yZSBjb21wbGljYXRlZCBiZWNhdXNlIGxlYWRpbmcgMHMgYXJlIG5vdCBhbGxvd2VkLiAgV2UKICAgIGNoZWNrIGZvciB0aGF0IGFuZCBhZGQgYSBkZWZlY3QuICBXZSBhbHNvIGFzc3VtZSBubyBDRldTIGlzIGFsbG93ZWQgYmV0d2VlbgogICAgdGhlICcqJyBhbmQgdGhlIGRpZ2l0cywgdGhvdWdoIHRoZSBSRkMgaXMgbm90IGNyeXN0YWwgY2xlYXIgb24gdGhhdC4KICAgIFRoZSBjYWxsZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBkZWFsdCB3aXRoIGxlYWRpbmcgQ0ZXUy4KCiAgICAiIiIKICAgIHNlY3Rpb24gPSBTZWN0aW9uKCkKICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnKic6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHNlY3Rpb24gYnV0IGZvdW5kIHt9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkpCiAgICBzZWN0aW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcqJywgJ3NlY3Rpb24tbWFya2VyJykpCiAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgaWYgbm90IHZhbHVlIG9yIG5vdCB2YWx1ZVswXS5pc2RpZ2l0KCk6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHNlY3Rpb24gbnVtYmVyIGJ1dCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQogICAgZGlnaXRzID0gJycKICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXS5pc2RpZ2l0KCk6CiAgICAgICAgZGlnaXRzICs9IHZhbHVlWzBdCiAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgIGlmIGRpZ2l0c1swXSA9PSAnMCcgYW5kIGRpZ2l0cyAhPSAnMCc6CiAgICAgICAgc2VjdGlvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICJzZWN0aW9uIG51bWJlciBoYXMgYW4gaW52YWxpZCBsZWFkaW5nIDAiKSkKICAgIHNlY3Rpb24ubnVtYmVyID0gaW50KGRpZ2l0cykKICAgIHNlY3Rpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCiAgICByZXR1cm4gc2VjdGlvbiwgdmFsdWUKCgpkZWYgZ2V0X3ZhbHVlKHZhbHVlKToKICAgICIiIiBxdW90ZWQtc3RyaW5nIC8gYXR0cmlidXRlCgogICAgIiIiCiAgICB2ID0gVmFsdWUoKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCB2YWx1ZSBidXQgZm91bmQgZW5kIG9mIHN0cmluZyIpCiAgICBsZWFkZXIgPSBOb25lCiAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHZhbHVlIGJ1dCBmb3VuZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkge30iLmZvcm1hdChsZWFkZXIpKQogICAgaWYgdmFsdWVbMF0gPT0gJyInOgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKQogICAgZWxzZToKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZXh0ZW5kZWRfYXR0cmlidXRlKHZhbHVlKQogICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgogICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCiAgICB2LmFwcGVuZCh0b2tlbikKICAgIHJldHVybiB2LCB2YWx1ZQoKZGVmIGdldF9wYXJhbWV0ZXIodmFsdWUpOgogICAgIiIiIGF0dHJpYnV0ZSBbc2VjdGlvbl0gWyIqIl0gW0NGV1NdICI9IiB2YWx1ZQoKICAgIFRoZSBDRldTIGlzIGltcGxpZWQgYnkgdGhlIFJGQyBidXQgbm90IG1hZGUgZXhwbGljaXQgaW4gdGhlIEJORi4gIFRoaXMKICAgIHNpbXBsaWZpZWQgZm9ybSBvZiB0aGUgQk5GIGZyb20gdGhlIFJGQyBpcyBtYWRlIHRvIGNvbmZvcm0gd2l0aCB0aGUgUkZDIEJORgogICAgdGhyb3VnaCBzb21lIGV4dHJhIGNoZWNrcy4gIFdlIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2UgaXQgbWFrZXMgYm90aCBlcnJvcgogICAgcmVjb3ZlcnkgYW5kIHdvcmtpbmcgd2l0aCB0aGUgcmVzdWx0aW5nIHBhcnNlIHRyZWUgZWFzaWVyLgogICAgIiIiCiAgICAjIEl0IGlzIHBvc3NpYmxlIENGV1Mgd291bGQgYWxzbyBiZSBpbXBsaWNpdGx5IGFsbG93ZWQgYmV0d2VlbiB0aGUgc2VjdGlvbgogICAgIyBhbmQgdGhlICdleHRlbmRlZC1hdHRyaWJ1dGUnIG1hcmtlciAodGhlICcqJykgLCBidXQgd2UndmUgbmV2ZXIgc2VlbiB0aGF0CiAgICAjIGluIHRoZSB3aWxkIGFuZCB3ZSB3aWxsIHRoZXJlZm9yZSBpZ25vcmUgdGhlIHBvc3NpYmlsaXR5LgogICAgcGFyYW0gPSBQYXJhbWV0ZXIoKQogICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0dHJpYnV0ZSh2YWx1ZSkKICAgIHBhcmFtLmFwcGVuZCh0b2tlbikKICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSA9PSAnOyc6CiAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoIlBhcmFtZXRlciBjb250YWlucyAiCiAgICAgICAgICAgICJuYW1lICh7fSkgYnV0IG5vIHZhbHVlIi5mb3JtYXQodG9rZW4pKSkKICAgICAgICByZXR1cm4gcGFyYW0sIHZhbHVlCiAgICBpZiB2YWx1ZVswXSA9PSAnKic6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfc2VjdGlvbih2YWx1ZSkKICAgICAgICAgICAgcGFyYW0uc2VjdGlvbmVkID0gVHJ1ZQogICAgICAgICAgICBwYXJhbS5hcHBlbmQodG9rZW4pCiAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgaWYgbm90IHZhbHVlOgogICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiSW5jb21wbGV0ZSBwYXJhbWV0ZXIiKQogICAgICAgIGlmIHZhbHVlWzBdID09ICcqJzoKICAgICAgICAgICAgcGFyYW0uYXBwZW5kKFZhbHVlVGVybWluYWwoJyonLCAnZXh0ZW5kZWQtcGFyYW1ldGVyLW1hcmtlcicpKQogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgICAgICAgICBwYXJhbS5leHRlbmRlZCA9IFRydWUKICAgIGlmIHZhbHVlWzBdICE9ICc9JzoKICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiUGFyYW1ldGVyIG5vdCBmb2xsb3dlZCBieSAnPSciKQogICAgcGFyYW0uYXBwZW5kKFZhbHVlVGVybWluYWwoJz0nLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQogICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgIGxlYWRlciA9IE5vbmUKICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKICAgICAgICBwYXJhbS5hcHBlbmQodG9rZW4pCiAgICByZW1haW5kZXIgPSBOb25lCiAgICBhcHBlbmR0byA9IHBhcmFtCiAgICBpZiBwYXJhbS5leHRlbmRlZCBhbmQgdmFsdWUgYW5kIHZhbHVlWzBdID09ICciJzoKICAgICAgICAjIE5vdyBmb3Igc29tZSBzZXJpb3VzIGhhY2tlcnkgdG8gaGFuZGxlIHRoZSBjb21tb24gaW52YWxpZCBjYXNlIG9mCiAgICAgICAgIyBkb3VibGUgcXVvdGVzIGFyb3VuZCBhbiBleHRlbmRlZCB2YWx1ZS4gIFdlIGFsc28gYWNjZXB0ICh3aXRoIGRlZmVjdCkKICAgICAgICAjIGEgdmFsdWUgbWFya2VkIGFzIGVuY29kZWQgdGhhdCBpc24ndCByZWFsbHkuCiAgICAgICAgcXN0cmluZywgcmVtYWluZGVyID0gZ2V0X3F1b3RlZF9zdHJpbmcodmFsdWUpCiAgICAgICAgaW5uZXJfdmFsdWUgPSBxc3RyaW5nLnN0cmlwcGVkX3ZhbHVlCiAgICAgICAgc2VtaV92YWxpZCA9IEZhbHNlCiAgICAgICAgaWYgcGFyYW0uc2VjdGlvbl9udW1iZXIgPT0gMDoKICAgICAgICAgICAgaWYgaW5uZXJfdmFsdWUgYW5kIGlubmVyX3ZhbHVlWzBdID09ICInIjoKICAgICAgICAgICAgICAgIHNlbWlfdmFsaWQgPSBUcnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0b2tlbiwgcmVzdCA9IGdldF9hdHRydGV4dChpbm5lcl92YWx1ZSkKICAgICAgICAgICAgICAgIGlmIHJlc3QgYW5kIHJlc3RbMF0gPT0gIiciOgogICAgICAgICAgICAgICAgICAgIHNlbWlfdmFsaWQgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdG9rZW4sIHJlc3QgPSBnZXRfZXh0ZW5kZWRfYXR0cnRleHQoaW5uZXJfdmFsdWUpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIG5vdCByZXN0OgogICAgICAgICAgICAgICAgICAgIHNlbWlfdmFsaWQgPSBUcnVlCiAgICAgICAgaWYgc2VtaV92YWxpZDoKICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAiUXVvdGVkIHN0cmluZyB2YWx1ZSBmb3IgZXh0ZW5kZWQgcGFyYW1ldGVyIGlzIGludmFsaWQiKSkKICAgICAgICAgICAgcGFyYW0uYXBwZW5kKHFzdHJpbmcpCiAgICAgICAgICAgIGZvciB0IGluIHFzdHJpbmc6CiAgICAgICAgICAgICAgICBpZiB0LnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CiAgICAgICAgICAgICAgICAgICAgdFs6XSA9IFtdCiAgICAgICAgICAgICAgICAgICAgYXBwZW5kdG8gPSB0CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgdmFsdWUgPSBpbm5lcl92YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlbWFpbmRlciA9IE5vbmUKICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAiUGFyYW1ldGVyIG1hcmtlZCBhcyBleHRlbmRlZCBidXQgYXBwZWFycyB0byBoYXZlIGEgIgogICAgICAgICAgICAgICAgInF1b3RlZCBzdHJpbmcgdmFsdWUgdGhhdCBpcyBub24tZW5jb2RlZCIpKQogICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICInIjoKICAgICAgICB0b2tlbiA9IE5vbmUKICAgIGVsc2U6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3ZhbHVlKHZhbHVlKQogICAgaWYgbm90IHBhcmFtLmV4dGVuZGVkIG9yIHBhcmFtLnNlY3Rpb25fbnVtYmVyID4gMDoKICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gIiciOgogICAgICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCiAgICAgICAgICAgIGlmIHJlbWFpbmRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdmFsdWUsIHZhbHVlCiAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlbWFpbmRlcgogICAgICAgICAgICByZXR1cm4gcGFyYW0sIHZhbHVlCiAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJBcHBhcmVudCBpbml0aWFsLWV4dGVuZGVkLXZhbHVlIGJ1dCBhdHRyaWJ1dGUgIgogICAgICAgICAgICAid2FzIG5vdCBtYXJrZWQgYXMgZXh0ZW5kZWQgb3Igd2FzIG5vdCBpbml0aWFsIHNlY3Rpb24iKSkKICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAjIEFzc3VtZSB0aGUgY2hhcnNldC9sYW5nIGlzIG1pc3NpbmcgYW5kIHRoZSB0b2tlbiBpcyB0aGUgdmFsdWUuCiAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJNaXNzaW5nIHJlcXVpcmVkIGNoYXJzZXQvbGFuZyBkZWxpbWl0ZXJzIikpCiAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHRva2VuKQogICAgICAgIGlmIHJlbWFpbmRlciBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gcGFyYW0sIHZhbHVlCiAgICBlbHNlOgogICAgICAgIGlmIHRva2VuIGlzIG5vdCBOb25lOgogICAgICAgICAgICBmb3IgdCBpbiB0b2tlbjoKICAgICAgICAgICAgICAgIGlmIHQudG9rZW5fdHlwZSA9PSAnZXh0ZW5kZWQtYXR0cnRleHQnOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHQudG9rZW5fdHlwZSA9PSAnYXR0cnRleHQnCiAgICAgICAgICAgIGFwcGVuZHRvLmFwcGVuZCh0KQogICAgICAgICAgICBwYXJhbS5jaGFyc2V0ID0gdC52YWx1ZQogICAgICAgIGlmIHZhbHVlWzBdICE9ICInIjoKICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIFJGQzIyMzEgY2hhci9sYW5nIGVuY29kaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGltaXRlciwgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpCiAgICAgICAgYXBwZW5kdG8uYXBwZW5kKFZhbHVlVGVybWluYWwoIiciLCAnUkZDMjIzMS1kZWxpbWl0ZXInKSkKICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAiJyI6CiAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdHRydGV4dCh2YWx1ZSkKICAgICAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHRva2VuKQogICAgICAgICAgICBwYXJhbS5sYW5nID0gdG9rZW4udmFsdWUKICAgICAgICAgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICInIjoKICAgICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBSRkMyMjMxIGNoYXIvbGFuZyBlbmNvZGluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsaW1pdGVyLCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCiAgICAgICAgYXBwZW5kdG8uYXBwZW5kKFZhbHVlVGVybWluYWwoIiciLCAnUkZDMjIzMS1kZWxpbWl0ZXInKSkKICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgaWYgcmVtYWluZGVyIGlzIG5vdCBOb25lOgogICAgICAgICMgVHJlYXQgdGhlIHJlc3Qgb2YgdmFsdWUgYXMgYmFyZSBxdW90ZWQgc3RyaW5nIGNvbnRlbnQuCiAgICAgICAgdiA9IFZhbHVlKCkKICAgICAgICB3aGlsZSB2YWx1ZToKICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgogICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKICAgICAgICAgICAgZWxpZiB2YWx1ZVswXSA9PSAnIic6CiAgICAgICAgICAgICAgICB0b2tlbiA9IFZhbHVlVGVybWluYWwoJyInLCAnRFFVT1RFJykKICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcWNvbnRlbnQodmFsdWUpCiAgICAgICAgICAgIHYuYXBwZW5kKHRva2VuKQogICAgICAgIHRva2VuID0gdgogICAgZWxzZToKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdmFsdWUodmFsdWUpCiAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCiAgICBpZiByZW1haW5kZXIgaXMgbm90IE5vbmU6CiAgICAgICAgYXNzZXJ0IG5vdCB2YWx1ZSwgdmFsdWUKICAgICAgICB2YWx1ZSA9IHJlbWFpbmRlcgogICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQoKZGVmIHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZSk6CiAgICAiIiIgcGFyYW1ldGVyICooICI7IiBwYXJhbWV0ZXIgKQoKICAgIFRoYXQgQk5GIGlzIG1lYW50IHRvIGluZGljYXRlIHRoaXMgcm91dGluZSBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIKICAgIGZpbmRpbmcgYW5kIGhhbmRsaW5nIHRoZSBsZWFkaW5nICc7Jy4gIFRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgcnVsZSBpbgogICAgdGhlIGZvcm1hbCBSRkMgZ3JhbW1hciwgYnV0IGl0IGlzIG1vcmUgY29udmVuaWVudCBmb3IgdXMgZm9yIHRoZSBzZXQgb2YKICAgIHBhcmFtZXRlcnMgdG8gYmUgdHJlYXRlZCBhcyBpdHMgb3duIFRva2VuTGlzdC4KCiAgICBUaGlzIGlzICdwYXJzZScgcm91dGluZSBiZWNhdXNlIGl0IGNvbnN1bWVzIHRoZSByZW1haW5pbmcgdmFsdWUsIGJ1dCBpdAogICAgd291bGQgbmV2ZXIgYmUgY2FsbGVkIHRvIHBhcnNlIGEgZnVsbCBoZWFkZXIuICBJbnN0ZWFkIGl0IGlzIGNhbGxlZCB0bwogICAgcGFyc2UgZXZlcnl0aGluZyBhZnRlciB0aGUgbm9uLXBhcmFtZXRlciB2YWx1ZSBvZiBhIHNwZWNpZmljIE1JTUUgaGVhZGVyLgoKICAgICIiIgogICAgbWltZV9wYXJhbWV0ZXJzID0gTWltZVBhcmFtZXRlcnMoKQogICAgd2hpbGUgdmFsdWU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGFyYW1ldGVyKHZhbHVlKQogICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKHRva2VuKQogICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvciBhcyBlcnI6CiAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CiAgICAgICAgICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCiAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5hcHBlbmQobGVhZGVyKQogICAgICAgICAgICAgICAgcmV0dXJuIG1pbWVfcGFyYW1ldGVycwogICAgICAgICAgICBpZiB2YWx1ZVswXSA9PSAnOyc6CiAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZChsZWFkZXIpCiAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciBlbnRyeSB3aXRoIG5vIGNvbnRlbnQiKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSkKICAgICAgICAgICAgICAgIGlmIGxlYWRlcjoKICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQogICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZCh0b2tlbikKICAgICAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBwYXJhbWV0ZXIgeyFyfSIuZm9ybWF0KHRva2VuKSkpCiAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKICAgICAgICAgICAgIyBKdW5rIGFmdGVyIHRoZSBvdGhlcndpc2UgdmFsaWQgcGFyYW1ldGVyLiAgTWFyayBpdCBhcwogICAgICAgICAgICAjIGludmFsaWQsIGJ1dCBpdCB3aWxsIGhhdmUgYSB2YWx1ZS4KICAgICAgICAgICAgcGFyYW0gPSBtaW1lX3BhcmFtZXRlcnNbLTFdCiAgICAgICAgICAgIHBhcmFtLnRva2VuX3R5cGUgPSAnaW52YWxpZC1wYXJhbWV0ZXInCiAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSkKICAgICAgICAgICAgcGFyYW0uZXh0ZW5kKHRva2VuKQogICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICAgICAicGFyYW1ldGVyIHdpdGggaW52YWxpZCB0cmFpbGluZyB0ZXh0IHshcn0iLmZvcm1hdCh0b2tlbikpKQogICAgICAgIGlmIHZhbHVlOgogICAgICAgICAgICAjIE11c3QgYmUgYSAnOycgYXQgdGhpcyBwb2ludC4KICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KICAgIHJldHVybiBtaW1lX3BhcmFtZXRlcnMKCmRlZiBfZmluZF9taW1lX3BhcmFtZXRlcnModG9rZW5saXN0LCB2YWx1ZSk6CiAgICAiIiJEbyBvdXIgYmVzdCB0byBmaW5kIHRoZSBwYXJhbWV0ZXJzIGluIGFuIGludmFsaWQgTUlNRSBoZWFkZXIKCiAgICAiIiIKICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CiAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CiAgICAgICAgICAgIHRva2VubGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwgJ21pc3BsYWNlZC1zcGVjaWFsJykpCiAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKICAgICAgICAgICAgdG9rZW5saXN0LmFwcGVuZCh0b2tlbikKICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICByZXR1cm4KICAgIHRva2VubGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCiAgICB0b2tlbmxpc3QuYXBwZW5kKHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZVsxOl0pKQoKZGVmIHBhcnNlX2NvbnRlbnRfdHlwZV9oZWFkZXIodmFsdWUpOgogICAgIiIiIG1haW50eXBlICIvIiBzdWJ0eXBlICooICI7IiBwYXJhbWV0ZXIgKQoKICAgIFRoZSBtYWludHlwZSBhbmQgc3Vic3R5cGUgYXJlIHRva2Vucy4gIFRoZW9yZXRpY2FsbHkgdGhleSBjb3VsZAogICAgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBJQU5BIGxpc3QgKyB4LXRva2VuLCBidXQgd2UKICAgIGRvbid0IGRvIHRoYXQuCiAgICAiIiIKICAgIGN0eXBlID0gQ29udGVudFR5cGUoKQogICAgcmVjb3ZlciA9IEZhbHNlCiAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAogICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IHR5cGUgc3BlY2lmaWNhdGlvbiIpKQogICAgICAgIHJldHVybiBjdHlwZQogICAgdHJ5OgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgbWFpbnR5cGUgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQogICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCiAgICAgICAgcmV0dXJuIGN0eXBlCiAgICBjdHlwZS5hcHBlbmQodG9rZW4pCiAgICAjIFhYWDogSWYgd2UgcmVhbGx5IHdhbnQgdG8gZm9sbG93IHRoZSBmb3JtYWwgZ3JhbW1hciB3ZSBzaG91bGQgbWFrZQogICAgIyBtYW50eXBlIGFuZCBzdWJ0eXBlIHNwZWNpYWxpemVkIFRva2VuTGlzdHMgaGVyZS4gIFByb2JhYmx5IG5vdCB3b3J0aCBpdC4KICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnLyc6CiAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJJbnZhbGlkIGNvbnRlbnQgdHlwZSIpKQogICAgICAgIGlmIHZhbHVlOgogICAgICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQogICAgICAgIHJldHVybiBjdHlwZQogICAgY3R5cGUubWFpbnR5cGUgPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKICAgIGN0eXBlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcvJywgJ2NvbnRlbnQtdHlwZS1zZXBhcmF0b3InKSkKICAgIHZhbHVlID0gdmFsdWVbMTpdCiAgICB0cnk6CiAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Rva2VuKHZhbHVlKQogICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgogICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAiRXhwZWN0ZWQgY29udGVudCBzdWJ0eXBlIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQogICAgICAgIHJldHVybiBjdHlwZQogICAgY3R5cGUuYXBwZW5kKHRva2VuKQogICAgY3R5cGUuc3VidHlwZSA9IHRva2VuLnZhbHVlLnN0cmlwKCkubG93ZXIoKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJldHVybiBjdHlwZQogICAgaWYgdmFsdWVbMF0gIT0gJzsnOgogICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAiT25seSBwYXJhbWV0ZXJzIGFyZSB2YWxpZCBhZnRlciBjb250ZW50IHR5cGUsIGJ1dCAiCiAgICAgICAgICAgICJmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKICAgICAgICAjIFRoZSBSRkMgcmVxdWlyZXMgdGhhdCBhIHN5bnRhY3RpY2FsbHkgaW52YWxpZCBjb250ZW50LXR5cGUgYmUgdHJlYXRlZAogICAgICAgICMgYXMgdGV4dC9wbGFpbi4gIFBlcmhhcHMgd2Ugc2hvdWxkIHBvc3RlbCB0aGlzLCBidXQgd2Ugc2hvdWxkIHByb2JhYmx5CiAgICAgICAgIyBvbmx5IGRvIHRoYXQgaWYgd2Ugd2VyZSBjaGVja2luZyB0aGUgc3VidHlwZSB2YWx1ZSBhZ2FpbnN0IElBTkEuCiAgICAgICAgZGVsIGN0eXBlLm1haW50eXBlLCBjdHlwZS5zdWJ0eXBlCiAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGN0eXBlLCB2YWx1ZSkKICAgICAgICByZXR1cm4gY3R5cGUKICAgIGN0eXBlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKICAgIGN0eXBlLmFwcGVuZChwYXJzZV9taW1lX3BhcmFtZXRlcnModmFsdWVbMTpdKSkKICAgIHJldHVybiBjdHlwZQoKZGVmIHBhcnNlX2NvbnRlbnRfZGlzcG9zaXRpb25faGVhZGVyKHZhbHVlKToKICAgICIiIiBkaXNwb3NpdGlvbi10eXBlICooICI7IiBwYXJhbWV0ZXIgKQoKICAgICIiIgogICAgZGlzcF9oZWFkZXIgPSBDb250ZW50RGlzcG9zaXRpb24oKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIGRpc3BfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKICAgICAgICAgICAgIk1pc3NpbmcgY29udGVudCBkaXNwb3NpdGlvbiIpKQogICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgogICAgdHJ5OgogICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKICAgICAgICBkaXNwX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgZGlzcG9zaXRpb24gYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQogICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhkaXNwX2hlYWRlciwgdmFsdWUpCiAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCiAgICBkaXNwX2hlYWRlci5hcHBlbmQodG9rZW4pCiAgICBkaXNwX2hlYWRlci5jb250ZW50X2Rpc3Bvc2l0aW9uID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCiAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCiAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CiAgICAgICAgZGlzcF9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCiAgICAgICAgICAgICJPbmx5IHBhcmFtZXRlcnMgYXJlIHZhbGlkIGFmdGVyIGNvbnRlbnQgZGlzcG9zaXRpb24sIGJ1dCAiCiAgICAgICAgICAgICJmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoZGlzcF9oZWFkZXIsIHZhbHVlKQogICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgogICAgZGlzcF9oZWFkZXIuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQogICAgZGlzcF9oZWFkZXIuYXBwZW5kKHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZVsxOl0pKQogICAgcmV0dXJuIGRpc3BfaGVhZGVyCgpkZWYgcGFyc2VfY29udGVudF90cmFuc2Zlcl9lbmNvZGluZ19oZWFkZXIodmFsdWUpOgogICAgIiIiIG1lY2hhbmlzbQoKICAgICIiIgogICAgIyBXZSBzaG91bGQgcHJvYmFibHkgdmFsaWRhdGUgdGhlIHZhbHVlcywgc2luY2UgdGhlIGxpc3QgaXMgZml4ZWQuCiAgICBjdGVfaGVhZGVyID0gQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIGN0ZV9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAogICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIikpCiAgICAgICAgcmV0dXJuIGN0ZV9oZWFkZXIKICAgIHRyeToKICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCiAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CiAgICAgICAgY3RlX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RpbmcgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQogICAgZWxzZToKICAgICAgICBjdGVfaGVhZGVyLmFwcGVuZCh0b2tlbikKICAgICAgICBjdGVfaGVhZGVyLmN0ZSA9IHRva2VuLnZhbHVlLnN0cmlwKCkubG93ZXIoKQogICAgaWYgbm90IHZhbHVlOgogICAgICAgIHJldHVybiBjdGVfaGVhZGVyCiAgICB3aGlsZSB2YWx1ZToKICAgICAgICBjdGVfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAogICAgICAgICAgICAiRXh0cmEgdGV4dCBhZnRlciBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIikpCiAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CiAgICAgICAgICAgIGN0ZV9oZWFkZXIuYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sICdtaXNwbGFjZWQtc3BlY2lhbCcpKQogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCiAgICAgICAgICAgIGN0ZV9oZWFkZXIuYXBwZW5kKHRva2VuKQogICAgcmV0dXJuIGN0ZV9oZWFkZXIKCgojCiMgSGVhZGVyIGZvbGRpbmcKIwojIEhlYWRlciBmb2xkaW5nIGlzIGNvbXBsZXgsIHdpdGggbG90cyBvZiBydWxlcyBhbmQgY29ybmVyIGNhc2VzLiAgVGhlCiMgZm9sbG93aW5nIGNvZGUgZG9lcyBpdHMgYmVzdCB0byBvYmV5IHRoZSBydWxlcyBhbmQgaGFuZGxlIHRoZSBjb3JuZXIKIyBjYXNlcywgYnV0IHlvdSBjYW4gYmUgc3VyZSB0aGVyZSBhcmUgZmV3IGJ1Z3M6KQojCiMgVGhpcyBmb2xkZXIgZ2VuZXJhbGx5IGNhbm9uaWNhbGl6ZXMgYXMgaXQgZ29lcywgcHJlZmVycmluZyB0aGUgc3RyaW5naWZpZWQKIyB2ZXJzaW9uIG9mIGVhY2ggdG9rZW4uICBUaGUgdG9rZW5zIGNvbnRhaW4gaW5mb3JtYXRpb24gdGhhdCBzdXBwb3J0cyB0aGUKIyBmb2xkZXIsIGluY2x1ZGluZyB3aGljaCB0b2tlbnMgY2FuIGJlIGVuY29kZWQgaW4gd2hpY2ggd2F5cy4KIwojIEZvbGRlZCB0ZXh0IGlzIGFjY3VtdWxhdGVkIGluIGEgc2ltcGxlIGxpc3Qgb2Ygc3RyaW5ncyAoJ2xpbmVzJyksIGVhY2gKIyBvbmUgb2Ygd2hpY2ggc2hvdWxkIGJlIGxlc3MgdGhhbiBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoICgnbWF4bGVuJykuCiMKCmRlZiBfc3RlYWxfdHJhaWxpbmdfV1NQX2lmX2V4aXN0cyhsaW5lcyk6CiAgICB3c3AgPSAnJwogICAgaWYgbGluZXMgYW5kIGxpbmVzWy0xXSBhbmQgbGluZXNbLTFdWy0xXSBpbiBXU1A6CiAgICAgICAgd3NwID0gbGluZXNbLTFdWy0xXQogICAgICAgIGxpbmVzWy0xXSA9IGxpbmVzWy0xXVs6LTFdCiAgICByZXR1cm4gd3NwCgpkZWYgX3JlZm9sZF9wYXJzZV90cmVlKHBhcnNlX3RyZWUsICosIHBvbGljeSk6CiAgICAiIiJSZXR1cm4gc3RyaW5nIG9mIGNvbnRlbnRzIG9mIHBhcnNlX3RyZWUgZm9sZGVkIGFjY29yZGluZyB0byBSRkMgcnVsZXMuCgogICAgIiIiCiAgICAjIG1heF9saW5lX2xlbmd0aCAwL05vbmUgbWVhbnMgbm8gbGltaXQsIGllOiBpbmZpbml0ZWx5IGxvbmcuCiAgICBtYXhsZW4gPSBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoIG9yIHN5cy5tYXhzaXplCiAgICBlbmNvZGluZyA9ICd1dGYtOCcgaWYgcG9saWN5LnV0ZjggZWxzZSAndXMtYXNjaWknCiAgICBsaW5lcyA9IFsnJ10KICAgIGxhc3RfZXcgPSBOb25lCiAgICB3cmFwX2FzX2V3X2Jsb2NrZWQgPSAwCiAgICB3YW50X2VuY29kaW5nID0gRmFsc2UKICAgIGVuZF9ld19ub3RfYWxsb3dlZCA9IFRlcm1pbmFsKCcnLCAnd3JhcF9hc19ld19ibG9ja2VkJykKICAgIHBhcnRzID0gbGlzdChwYXJzZV90cmVlKQogICAgd2hpbGUgcGFydHM6CiAgICAgICAgcGFydCA9IHBhcnRzLnBvcCgwKQogICAgICAgIGlmIHBhcnQgaXMgZW5kX2V3X25vdF9hbGxvd2VkOgogICAgICAgICAgICB3cmFwX2FzX2V3X2Jsb2NrZWQgLT0gMQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRzdHIgPSBzdHIocGFydCkKICAgICAgICBpZiBwYXJ0LnRva2VuX3R5cGUgPT0gJ3B0ZXh0JyBhbmQgc2V0KHRzdHIpICYgU1BFQ0lBTFM6CiAgICAgICAgICAgICMgRW5jb2RlIGlmIHRzdHIgY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzLgogICAgICAgICAgICB3YW50X2VuY29kaW5nID0gVHJ1ZQogICAgICAgIHRyeToKICAgICAgICAgICAgdHN0ci5lbmNvZGUoZW5jb2RpbmcpCiAgICAgICAgICAgIGNoYXJzZXQgPSBlbmNvZGluZwogICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KQogICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcGFydC5hbGxfZGVmZWN0cyk6CiAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgSWYgcG9saWN5LnV0ZjggaXMgZmFsc2UgdGhpcyBzaG91bGQgcmVhbGx5IGJlIHRha2VuIGZyb20gYQogICAgICAgICAgICAgICAgIyAnY2hhcnNldCcgcHJvcGVydHkgb24gdGhlIHBvbGljeS4KICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCiAgICAgICAgICAgIHdhbnRfZW5jb2RpbmcgPSBUcnVlCiAgICAgICAgaWYgcGFydC50b2tlbl90eXBlID09ICdtaW1lLXBhcmFtZXRlcnMnOgogICAgICAgICAgICAjIE1pbWUgcGFyYW1ldGVyIGZvbGRpbmcgKHVzaW5nIFJGQzIyMzEpIGlzIGV4dHJhIHNwZWNpYWwuCiAgICAgICAgICAgIF9mb2xkX21pbWVfcGFyYW1ldGVycyhwYXJ0LCBsaW5lcywgbWF4bGVuLCBlbmNvZGluZykKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiB3YW50X2VuY29kaW5nIGFuZCBub3Qgd3JhcF9hc19ld19ibG9ja2VkOgogICAgICAgICAgICBpZiBub3QgcGFydC5hc19ld19hbGxvd2VkOgogICAgICAgICAgICAgICAgd2FudF9lbmNvZGluZyA9IEZhbHNlCiAgICAgICAgICAgICAgICBsYXN0X2V3ID0gTm9uZQogICAgICAgICAgICAgICAgaWYgcGFydC5zeW50YWN0aWNfYnJlYWs6CiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9wYXJ0ID0gcGFydC5mb2xkKHBvbGljeT1wb2xpY3kpWzotbGVuKHBvbGljeS5saW5lc2VwKV0KICAgICAgICAgICAgICAgICAgICBpZiBwb2xpY3kubGluZXNlcCBub3QgaW4gZW5jb2RlZF9wYXJ0OgogICAgICAgICAgICAgICAgICAgICAgICAjIEl0IGZpdHMgb24gYSBzaW5nbGUgbGluZQogICAgICAgICAgICAgICAgICAgICAgICBpZiBsZW4oZW5jb2RlZF9wYXJ0KSA+IG1heGxlbiAtIGxlbihsaW5lc1stMV0pOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCdXQgbm90IG9uIHRoaXMgb25lLCBzbyBzdGFydCBhIG5ldyBvbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lID0gX3N0ZWFsX3RyYWlsaW5nX1dTUF9pZl9leGlzdHMobGluZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFhYWCB3aGF0IGlmIGVuY29kZWRfcGFydCBoYXMgbm8gbGVhZGluZyBGV1M/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobmV3bGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNbLTFdICs9IGVuY29kZWRfcGFydAogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIyBFaXRoZXIgdGhpcyBpcyBub3QgYSBtYWpvciBzeW50YWN0aWMgYnJlYWssIHNvIHdlIGRvbid0CiAgICAgICAgICAgICAgICAjIHdhbnQgaXQgb24gYSBsaW5lIGJ5IGl0c2VsZiBldmVuIGlmIGl0IGZpdHMsIG9yIGl0CiAgICAgICAgICAgICAgICAjIGRvZXNuJ3QgZml0IG9uIGEgbGluZSBieSBpdHNlbGYuICBFaXRoZXIgd2F5LCBmYWxsIHRocm91Z2gKICAgICAgICAgICAgICAgICMgdG8gdW5wYWNraW5nIHRoZSBzdWJwYXJ0cyBhbmQgd3JhcHBpbmcgdGhlbS4KICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIocGFydCwgJ2VuY29kZScpOgogICAgICAgICAgICAgICAgIyBJdCdzIG5vdCBhIFRlcm1pbmFsLCBkbyBlYWNoIHBpZWNlIGluZGl2aWR1YWxseS4KICAgICAgICAgICAgICAgIHBhcnRzID0gbGlzdChwYXJ0KSArIHBhcnRzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIEl0J3MgYSB0ZXJtaW5hbCwgd3JhcCBpdCBhcyBhbiBlbmNvZGVkIHdvcmQsIHBvc3NpYmx5CiAgICAgICAgICAgICAgICAjIGNvbWJpbmluZyBpdCB3aXRoIHByZXZpb3VzbHkgZW5jb2RlZCB3b3JkcyBpZiBhbGxvd2VkLgogICAgICAgICAgICAgICAgbGFzdF9ldyA9IF9mb2xkX2FzX2V3KHRzdHIsIGxpbmVzLCBtYXhsZW4sIGxhc3RfZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydC5ld19jb21iaW5lX2FsbG93ZWQsIGNoYXJzZXQpCiAgICAgICAgICAgIHdhbnRfZW5jb2RpbmcgPSBGYWxzZQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGxlbih0c3RyKSA8PSBtYXhsZW4gLSBsZW4obGluZXNbLTFdKToKICAgICAgICAgICAgbGluZXNbLTFdICs9IHRzdHIKICAgICAgICAgICAgY29udGludWUKICAgICAgICAjIFRoaXMgcGFydCBpcyB0b28gbG9uZyB0byBmaXQuICBUaGUgUkZDIHdhbnRzIHVzIHRvIGJyZWFrIGF0CiAgICAgICAgIyAibWFqb3Igc3ludGFjdGljIGJyZWFrcyIsIHNvIHVubGVzcyB3ZSBkb24ndCBjb25zaWRlciB0aGlzCiAgICAgICAgIyB0byBiZSBvbmUsIGNoZWNrIGlmIGl0IHdpbGwgZml0IG9uIHRoZSBuZXh0IGxpbmUgYnkgaXRzZWxmLgogICAgICAgIGlmIChwYXJ0LnN5bnRhY3RpY19icmVhayBhbmQKICAgICAgICAgICAgICAgIGxlbih0c3RyKSArIDEgPD0gbWF4bGVuKToKICAgICAgICAgICAgbmV3bGluZSA9IF9zdGVhbF90cmFpbGluZ19XU1BfaWZfZXhpc3RzKGxpbmVzKQogICAgICAgICAgICBpZiBuZXdsaW5lIG9yIHBhcnQuc3RhcnRzd2l0aF9md3MoKToKICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChuZXdsaW5lICsgdHN0cikKICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBOb25lCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIG5vdCBoYXNhdHRyKHBhcnQsICdlbmNvZGUnKToKICAgICAgICAgICAgIyBJdCdzIG5vdCBhIHRlcm1pbmFsLCB0cnkgZm9sZGluZyB0aGUgc3VicGFydHMuCiAgICAgICAgICAgIG5ld3BhcnRzID0gbGlzdChwYXJ0KQogICAgICAgICAgICBpZiBub3QgcGFydC5hc19ld19hbGxvd2VkOgogICAgICAgICAgICAgICAgd3JhcF9hc19ld19ibG9ja2VkICs9IDEKICAgICAgICAgICAgICAgIG5ld3BhcnRzLmFwcGVuZChlbmRfZXdfbm90X2FsbG93ZWQpCiAgICAgICAgICAgIHBhcnRzID0gbmV3cGFydHMgKyBwYXJ0cwogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIHBhcnQuYXNfZXdfYWxsb3dlZCBhbmQgbm90IHdyYXBfYXNfZXdfYmxvY2tlZDoKICAgICAgICAgICAgIyBJdCBkb2Vzbid0IG5lZWQgQ1RFIGVuY29kaW5nLCBidXQgZW5jb2RlIGl0IGFueXdheSBzbyB3ZSBjYW4KICAgICAgICAgICAgIyB3cmFwIGl0LgogICAgICAgICAgICBwYXJ0cy5pbnNlcnQoMCwgcGFydCkKICAgICAgICAgICAgd2FudF9lbmNvZGluZyA9IFRydWUKICAgICAgICAgICAgY29udGludWUKICAgICAgICAjIFdlIGNhbid0IGZpZ3VyZSBvdXQgaG93IHRvIHdyYXAsIGl0LCBzbyBnaXZlIHVwLgogICAgICAgIG5ld2xpbmUgPSBfc3RlYWxfdHJhaWxpbmdfV1NQX2lmX2V4aXN0cyhsaW5lcykKICAgICAgICBpZiBuZXdsaW5lIG9yIHBhcnQuc3RhcnRzd2l0aF9md3MoKToKICAgICAgICAgICAgbGluZXMuYXBwZW5kKG5ld2xpbmUgKyB0c3RyKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgV2UgY2FuJ3QgZm9sZCBpdCBvbnRvIHRoZSBuZXh0IGxpbmUgZWl0aGVyLi4uCiAgICAgICAgICAgIGxpbmVzWy0xXSArPSB0c3RyCiAgICByZXR1cm4gcG9saWN5LmxpbmVzZXAuam9pbihsaW5lcykgKyBwb2xpY3kubGluZXNlcAoKZGVmIF9mb2xkX2FzX2V3KHRvX2VuY29kZSwgbGluZXMsIG1heGxlbiwgbGFzdF9ldywgZXdfY29tYmluZV9hbGxvd2VkLCBjaGFyc2V0KToKICAgICIiIkZvbGQgc3RyaW5nIHRvX2VuY29kZSBpbnRvIGxpbmVzIGFzIGVuY29kZWQgd29yZCwgY29tYmluaW5nIGlmIGFsbG93ZWQuCiAgICBSZXR1cm4gdGhlIG5ldyB2YWx1ZSBmb3IgbGFzdF9ldywgb3IgTm9uZSBpZiBld19jb21iaW5lX2FsbG93ZWQgaXMgRmFsc2UuCgogICAgSWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBlbmNvZGVkIHdvcmQgaW4gdGhlIGxhc3QgbGluZSBvZiBsaW5lcyAoaW5kaWNhdGVkIGJ5CiAgICBhIG5vbi1Ob25lIHZhbHVlIGZvciBsYXN0X2V3KSBhbmQgZXdfY29tYmluZV9hbGxvd2VkIGlzIHRydWUsIGRlY29kZSB0aGUKICAgIGV4aXN0aW5nIGV3LCBjb21iaW5lIGl0IHdpdGggdG9fZW5jb2RlLCBhbmQgcmUtZW5jb2RlLiAgT3RoZXJ3aXNlLCBlbmNvZGUKICAgIHRvX2VuY29kZS4gIEluIGVpdGhlciBjYXNlLCBzcGxpdCB0b19lbmNvZGUgYXMgbmVjZXNzYXJ5IHNvIHRoYXQgdGhlCiAgICBlbmNvZGVkIHNlZ21lbnRzIGZpdCB3aXRoaW4gbWF4bGVuLgoKICAgICIiIgogICAgaWYgbGFzdF9ldyBpcyBub3QgTm9uZSBhbmQgZXdfY29tYmluZV9hbGxvd2VkOgogICAgICAgIHRvX2VuY29kZSA9IHN0cigKICAgICAgICAgICAgZ2V0X3Vuc3RydWN0dXJlZChsaW5lc1stMV1bbGFzdF9ldzpdICsgdG9fZW5jb2RlKSkKICAgICAgICBsaW5lc1stMV0gPSBsaW5lc1stMV1bOmxhc3RfZXddCiAgICBpZiB0b19lbmNvZGVbMF0gaW4gV1NQOgogICAgICAgICMgV2UncmUgam9pbmluZyB0aGlzIHRvIG5vbi1lbmNvZGVkIHRleHQsIHNvIGRvbid0IGVuY29kZQogICAgICAgICMgdGhlIGxlYWRpbmcgYmxhbmsuCiAgICAgICAgbGVhZGluZ193c3AgPSB0b19lbmNvZGVbMF0KICAgICAgICB0b19lbmNvZGUgPSB0b19lbmNvZGVbMTpdCiAgICAgICAgaWYgKGxlbihsaW5lc1stMV0pID09IG1heGxlbik6CiAgICAgICAgICAgIGxpbmVzLmFwcGVuZChfc3RlYWxfdHJhaWxpbmdfV1NQX2lmX2V4aXN0cyhsaW5lcykpCiAgICAgICAgbGluZXNbLTFdICs9IGxlYWRpbmdfd3NwCiAgICB0cmFpbGluZ193c3AgPSAnJwogICAgaWYgdG9fZW5jb2RlWy0xXSBpbiBXU1A6CiAgICAgICAgIyBMaWtld2lzZSBmb3IgdGhlIHRyYWlsaW5nIHNwYWNlLgogICAgICAgIHRyYWlsaW5nX3dzcCA9IHRvX2VuY29kZVstMV0KICAgICAgICB0b19lbmNvZGUgPSB0b19lbmNvZGVbOi0xXQogICAgbmV3X2xhc3RfZXcgPSBsZW4obGluZXNbLTFdKSBpZiBsYXN0X2V3IGlzIE5vbmUgZWxzZSBsYXN0X2V3CgogICAgZW5jb2RlX2FzID0gJ3V0Zi04JyBpZiBjaGFyc2V0ID09ICd1cy1hc2NpaScgZWxzZSBjaGFyc2V0CgogICAgIyBUaGUgUkZDMjA0NyBjaHJvbWUgdGFrZXMgdXAgNyBjaGFyYWN0ZXJzIHBsdXMgdGhlIGxlbmd0aAogICAgIyBvZiB0aGUgY2hhcnNldCBuYW1lLgogICAgY2hyb21lX2xlbiA9IGxlbihlbmNvZGVfYXMpICsgNwoKICAgIGlmIChjaHJvbWVfbGVuICsgMSkgPj0gbWF4bGVuOgogICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAogICAgICAgICAgICAibWF4X2xpbmVfbGVuZ3RoIGlzIHRvbyBzbWFsbCB0byBmaXQgYW4gZW5jb2RlZCB3b3JkIikKCiAgICB3aGlsZSB0b19lbmNvZGU6CiAgICAgICAgcmVtYWluaW5nX3NwYWNlID0gbWF4bGVuIC0gbGVuKGxpbmVzWy0xXSkKICAgICAgICB0ZXh0X3NwYWNlID0gcmVtYWluaW5nX3NwYWNlIC0gY2hyb21lX2xlbgogICAgICAgIGlmIHRleHRfc3BhY2UgPD0gMDoKICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgJykKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgdG9fZW5jb2RlX3dvcmQgPSB0b19lbmNvZGVbOnRleHRfc3BhY2VdCiAgICAgICAgZW5jb2RlZF93b3JkID0gX2V3LmVuY29kZSh0b19lbmNvZGVfd29yZCwgY2hhcnNldD1lbmNvZGVfYXMpCiAgICAgICAgZXhjZXNzID0gbGVuKGVuY29kZWRfd29yZCkgLSByZW1haW5pbmdfc3BhY2UKICAgICAgICB3aGlsZSBleGNlc3MgPiAwOgogICAgICAgICAgICAjIFNpbmNlIHRoZSBjaHVuayB0byBlbmNvZGUgaXMgZ3VhcmFudGVlZCB0byBmaXQgaW50byBsZXNzIHRoYW4gMTAwIGNoYXJhY3RlcnMsCiAgICAgICAgICAgICMgc2hyaW5raW5nIGl0IGJ5IG9uZSBhdCBhIHRpbWUgc2hvdWxkbid0IHRha2UgbG9uZy4KICAgICAgICAgICAgdG9fZW5jb2RlX3dvcmQgPSB0b19lbmNvZGVfd29yZFs6LTFdCiAgICAgICAgICAgIGVuY29kZWRfd29yZCA9IF9ldy5lbmNvZGUodG9fZW5jb2RlX3dvcmQsIGNoYXJzZXQ9ZW5jb2RlX2FzKQogICAgICAgICAgICBleGNlc3MgPSBsZW4oZW5jb2RlZF93b3JkKSAtIHJlbWFpbmluZ19zcGFjZQogICAgICAgIGxpbmVzWy0xXSArPSBlbmNvZGVkX3dvcmQKICAgICAgICB0b19lbmNvZGUgPSB0b19lbmNvZGVbbGVuKHRvX2VuY29kZV93b3JkKTpdCgogICAgICAgIGlmIHRvX2VuY29kZToKICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgJykKICAgICAgICAgICAgbmV3X2xhc3RfZXcgPSBsZW4obGluZXNbLTFdKQogICAgbGluZXNbLTFdICs9IHRyYWlsaW5nX3dzcAogICAgcmV0dXJuIG5ld19sYXN0X2V3IGlmIGV3X2NvbWJpbmVfYWxsb3dlZCBlbHNlIE5vbmUKCmRlZiBfZm9sZF9taW1lX3BhcmFtZXRlcnMocGFydCwgbGluZXMsIG1heGxlbiwgZW5jb2RpbmcpOgogICAgIiIiRm9sZCBUb2tlbkxpc3QgJ3BhcnQnIGludG8gdGhlICdsaW5lcycgbGlzdCBhcyBtaW1lIHBhcmFtZXRlcnMuCgogICAgVXNpbmcgdGhlIGRlY29kZWQgbGlzdCBvZiBwYXJhbWV0ZXJzIGFuZCB2YWx1ZXMsIGZvcm1hdCB0aGVtIGFjY29yZGluZyB0bwogICAgdGhlIFJGQyBydWxlcywgaW5jbHVkaW5nIHVzaW5nIFJGQzIyMzEgZW5jb2RpbmcgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZQogICAgZXhwcmVzc2VkIGluICdlbmNvZGluZycgYW5kL29yIHRoZSBwYXJhbWV0ZXIrdmFsdWUgaXMgdG9vIGxvbmcgdG8gZml0CiAgICB3aXRoaW4gJ21heGxlbicuCgogICAgIiIiCiAgICAjIFNwZWNpYWwgY2FzZSBmb3IgUkZDMjIzMSBlbmNvZGluZzogc3RhcnQgZnJvbSBkZWNvZGVkIHZhbHVlcyBhbmQgdXNlCiAgICAjIFJGQzIyMzEgZW5jb2RpbmcgaWZmIG5lZWRlZC4KICAgICMKICAgICMgTm90ZSB0aGF0IHRoZSAxIGFuZCAycyBiZWluZyBhZGRlZCB0byB0aGUgbGVuZ3RoIGNhbGN1bGF0aW9ucyBhcmUKICAgICMgYWNjb3VudGluZyBmb3IgdGhlIHBvc3NpYmx5LW5lZWRlZCBzcGFjZXMgYW5kIHNlbWljb2xvbnMgd2UnbGwgYmUgYWRkaW5nLgogICAgIwogICAgZm9yIG5hbWUsIHZhbHVlIGluIHBhcnQucGFyYW1zOgogICAgICAgICMgWFhYIFdoYXQgaWYgdGhpcyAnOycgcHV0cyB1cyBvdmVyIG1heGxlbiB0aGUgZmlyc3QgdGltZSB0aHJvdWdoIHRoZQogICAgICAgICMgbG9vcD8gIFdlIHNob3VsZCBzcGxpdCB0aGUgaGVhZGVyIHZhbHVlIG9udG8gYSBuZXdsaW5lIGluIHRoYXQgY2FzZSwKICAgICAgICAjIGJ1dCB0byBkbyB0aGF0IHdlIG5lZWQgdG8gcmVjb2duaXplIHRoZSBuZWVkIGVhcmxpZXIgb3IgcmVwYXJzZSB0aGUKICAgICAgICAjIGhlYWRlciwgc28gSSdtIGdvaW5nIHRvIGlnbm9yZSB0aGF0IGJ1ZyBmb3Igbm93LiAgSXQnbGwgb25seSBwdXQgdXMKICAgICAgICAjIG9uZSBjaGFyYWN0ZXIgb3Zlci4KICAgICAgICBpZiBub3QgbGluZXNbLTFdLnJzdHJpcCgpLmVuZHN3aXRoKCc7Jyk6CiAgICAgICAgICAgIGxpbmVzWy0xXSArPSAnOycKICAgICAgICBjaGFyc2V0ID0gZW5jb2RpbmcKICAgICAgICBlcnJvcl9oYW5kbGVyID0gJ3N0cmljdCcKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlLmVuY29kZShlbmNvZGluZykKICAgICAgICAgICAgZW5jb2RpbmdfcmVxdWlyZWQgPSBGYWxzZQogICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgIGVuY29kaW5nX3JlcXVpcmVkID0gVHJ1ZQogICAgICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXModmFsdWUpOgogICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCiAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gJ3N1cnJvZ2F0ZWVzY2FwZScKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCiAgICAgICAgaWYgZW5jb2RpbmdfcmVxdWlyZWQ6CiAgICAgICAgICAgIGVuY29kZWRfdmFsdWUgPSB1cmxsaWIucGFyc2UucXVvdGUoCiAgICAgICAgICAgICAgICB2YWx1ZSwgc2FmZT0nJywgZXJyb3JzPWVycm9yX2hhbmRsZXIpCiAgICAgICAgICAgIHRzdHIgPSAie30qPXt9Jyd7fSIuZm9ybWF0KG5hbWUsIGNoYXJzZXQsIGVuY29kZWRfdmFsdWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHN0ciA9ICd7fT17fScuZm9ybWF0KG5hbWUsIHF1b3RlX3N0cmluZyh2YWx1ZSkpCiAgICAgICAgaWYgbGVuKGxpbmVzWy0xXSkgKyBsZW4odHN0cikgKyAxIDwgbWF4bGVuOgogICAgICAgICAgICBsaW5lc1stMV0gPSBsaW5lc1stMV0gKyAnICcgKyB0c3RyCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZWxpZiBsZW4odHN0cikgKyAyIDw9IG1heGxlbjoKICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgJyArIHRzdHIpCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIyBXZSBuZWVkIG11bHRpcGxlIHNlY3Rpb25zLiAgV2UgYXJlIGFsbG93ZWQgdG8gbWl4IGVuY29kZWQgYW5kCiAgICAgICAgIyBub24tZW5jb2RlZCBzZWN0aW9ucywgYnV0IHdlIGFyZW4ndCBnb2luZyB0by4gIFdlJ2xsIGVuY29kZSB0aGVtIGFsbC4KICAgICAgICBzZWN0aW9uID0gMAogICAgICAgIGV4dHJhX2Nocm9tZSA9IGNoYXJzZXQgKyAiJyciCiAgICAgICAgd2hpbGUgdmFsdWU6CiAgICAgICAgICAgIGNocm9tZV9sZW4gPSBsZW4obmFtZSkgKyBsZW4oc3RyKHNlY3Rpb24pKSArIDMgKyBsZW4oZXh0cmFfY2hyb21lKQogICAgICAgICAgICBpZiBtYXhsZW4gPD0gY2hyb21lX2xlbiArIDM6CiAgICAgICAgICAgICAgICAjIFdlIG5lZWQgcm9vbSBmb3IgdGhlIGxlYWRpbmcgYmxhbmssIHRoZSB0cmFpbGluZyBzZW1pY29sb24sCiAgICAgICAgICAgICAgICAjIGFuZCBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIG9mIHRoZSB2YWx1ZS4gIElmIHdlIGRvbid0CiAgICAgICAgICAgICAgICAjIGhhdmUgdGhhdCwgd2UnZCBiZSBzdHVjaywgc28gaW4gdGhhdCBjYXNlIGZhbGwgYmFjayB0bwogICAgICAgICAgICAgICAgIyB0aGUgUkZDIHN0YW5kYXJkIHdpZHRoLgogICAgICAgICAgICAgICAgbWF4bGVuID0gNzgKICAgICAgICAgICAgc3BsaXRwb2ludCA9IG1heGNoYXJzID0gbWF4bGVuIC0gY2hyb21lX2xlbiAtIDIKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIHBhcnRpYWwgPSB2YWx1ZVs6c3BsaXRwb2ludF0KICAgICAgICAgICAgICAgIGVuY29kZWRfdmFsdWUgPSB1cmxsaWIucGFyc2UucXVvdGUoCiAgICAgICAgICAgICAgICAgICAgcGFydGlhbCwgc2FmZT0nJywgZXJyb3JzPWVycm9yX2hhbmRsZXIpCiAgICAgICAgICAgICAgICBpZiBsZW4oZW5jb2RlZF92YWx1ZSkgPD0gbWF4Y2hhcnM6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHNwbGl0cG9pbnQgLT0gMQogICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiB7fSp7fSo9e317fSIuZm9ybWF0KAogICAgICAgICAgICAgICAgbmFtZSwgc2VjdGlvbiwgZXh0cmFfY2hyb21lLCBlbmNvZGVkX3ZhbHVlKSkKICAgICAgICAgICAgZXh0cmFfY2hyb21lID0gJycKICAgICAgICAgICAgc2VjdGlvbiArPSAxCiAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbc3BsaXRwb2ludDpdCiAgICAgICAgICAgIGlmIHZhbHVlOgogICAgICAgICAgICAgICAgbGluZXNbLTFdICs9ICc7JwpQSwMEFAAAAAAAAiCjVuML5nydRQAAnUUAABMAAABlbWFpbC9fcGFyc2VhZGRyLnB5IyBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgojIENvbnRhY3Q6IGVtYWlsLXNpZ0BweXRob24ub3JnCgoiIiJFbWFpbCBhZGRyZXNzIHBhcnNpbmcgY29kZS4KCkxpZnRlZCBkaXJlY3RseSBmcm9tIHJmYzgyMi5weS4gIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmV3cml0dGVuLgoiIiIKCl9fYWxsX18gPSBbCiAgICAnbWt0aW1lX3R6JywKICAgICdwYXJzZWRhdGUnLAogICAgJ3BhcnNlZGF0ZV90eicsCiAgICAncXVvdGUnLAogICAgXQoKaW1wb3J0IHRpbWUsIGNhbGVuZGFyCgpTUEFDRSA9ICcgJwpFTVBUWVNUUklORyA9ICcnCkNPTU1BU1BBQ0UgPSAnLCAnCgojIFBhcnNlIGEgZGF0ZSBmaWVsZApfbW9udGhuYW1lcyA9IFsnamFuJywgJ2ZlYicsICdtYXInLCAnYXByJywgJ21heScsICdqdW4nLCAnanVsJywKICAgICAgICAgICAgICAgJ2F1ZycsICdzZXAnLCAnb2N0JywgJ25vdicsICdkZWMnLAogICAgICAgICAgICAgICAnamFudWFyeScsICdmZWJydWFyeScsICdtYXJjaCcsICdhcHJpbCcsICdtYXknLCAnanVuZScsICdqdWx5JywKICAgICAgICAgICAgICAgJ2F1Z3VzdCcsICdzZXB0ZW1iZXInLCAnb2N0b2JlcicsICdub3ZlbWJlcicsICdkZWNlbWJlciddCgpfZGF5bmFtZXMgPSBbJ21vbicsICd0dWUnLCAnd2VkJywgJ3RodScsICdmcmknLCAnc2F0JywgJ3N1biddCgojIFRoZSB0aW1lem9uZSB0YWJsZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBtaWxpdGFyeSB0aW1lIHpvbmVzIGRlZmluZWQKIyBpbiBSRkM4MjIsIG90aGVyIHRoYW4gWi4gIEFjY29yZGluZyB0byBSRkMxMTIzLCB0aGUgZGVzY3JpcHRpb24gaW4KIyBSRkM4MjIgZ2V0cyB0aGUgc2lnbnMgd3JvbmcsIHNvIHdlIGNhbid0IHJlbHkgb24gYW55IHN1Y2ggdGltZQojIHpvbmVzLiAgUkZDMTEyMyByZWNvbW1lbmRzIHRoYXQgbnVtZXJpYyB0aW1lem9uZSBpbmRpY2F0b3JzIGJlIHVzZWQKIyBpbnN0ZWFkIG9mIHRpbWV6b25lIG5hbWVzLgoKX3RpbWV6b25lcyA9IHsnVVQnOjAsICdVVEMnOjAsICdHTVQnOjAsICdaJzowLAogICAgICAgICAgICAgICdBU1QnOiAtNDAwLCAnQURUJzogLTMwMCwgICMgQXRsYW50aWMgKHVzZWQgaW4gQ2FuYWRhKQogICAgICAgICAgICAgICdFU1QnOiAtNTAwLCAnRURUJzogLTQwMCwgICMgRWFzdGVybgogICAgICAgICAgICAgICdDU1QnOiAtNjAwLCAnQ0RUJzogLTUwMCwgICMgQ2VudHJhbAogICAgICAgICAgICAgICdNU1QnOiAtNzAwLCAnTURUJzogLTYwMCwgICMgTW91bnRhaW4KICAgICAgICAgICAgICAnUFNUJzogLTgwMCwgJ1BEVCc6IC03MDAgICAjIFBhY2lmaWMKICAgICAgICAgICAgICB9CgoKZGVmIHBhcnNlZGF0ZV90eihkYXRhKToKICAgICIiIkNvbnZlcnQgYSBkYXRlIHN0cmluZyB0byBhIHRpbWUgdHVwbGUuCgogICAgQWNjb3VudHMgZm9yIG1pbGl0YXJ5IHRpbWV6b25lcy4KICAgICIiIgogICAgcmVzID0gX3BhcnNlZGF0ZV90eihkYXRhKQogICAgaWYgbm90IHJlczoKICAgICAgICByZXR1cm4KICAgIGlmIHJlc1s5XSBpcyBOb25lOgogICAgICAgIHJlc1s5XSA9IDAKICAgIHJldHVybiB0dXBsZShyZXMpCgpkZWYgX3BhcnNlZGF0ZV90eihkYXRhKToKICAgICIiIkNvbnZlcnQgZGF0ZSB0byBleHRlbmRlZCB0aW1lIHR1cGxlLgoKICAgIFRoZSBsYXN0IChhZGRpdGlvbmFsKSBlbGVtZW50IGlzIHRoZSB0aW1lIHpvbmUgb2Zmc2V0IGluIHNlY29uZHMsIGV4Y2VwdCBpZgogICAgdGhlIHRpbWV6b25lIHdhcyBzcGVjaWZpZWQgYXMgLTAwMDAuICBJbiB0aGF0IGNhc2UgdGhlIGxhc3QgZWxlbWVudCBpcwogICAgTm9uZS4gIFRoaXMgaW5kaWNhdGVzIGEgVVRDIHRpbWVzdGFtcCB0aGF0IGV4cGxpY2l0bHkgZGVjbGFpbXMga25vd2xlZGdlIG9mCiAgICB0aGUgc291cmNlIHRpbWV6b25lLCBhcyBvcHBvc2VkIHRvIGEgKzAwMDAgdGltZXN0YW1wIHRoYXQgaW5kaWNhdGVzIHRoZQogICAgc291cmNlIHRpbWV6b25lIHJlYWxseSB3YXMgVVRDLgoKICAgICIiIgogICAgaWYgbm90IGRhdGE6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGRhdGEgPSBkYXRhLnNwbGl0KCkKICAgIGlmIG5vdCBkYXRhOiAgIyBUaGlzIGhhcHBlbnMgZm9yIHdoaXRlc3BhY2Utb25seSBpbnB1dC4KICAgICAgICByZXR1cm4gTm9uZQogICAgIyBUaGUgRldTIGFmdGVyIHRoZSBjb21tYSBhZnRlciB0aGUgZGF5LW9mLXdlZWsgaXMgb3B0aW9uYWwsIHNvIHNlYXJjaCBhbmQKICAgICMgYWRqdXN0IGZvciB0aGlzLgogICAgaWYgZGF0YVswXS5lbmRzd2l0aCgnLCcpIG9yIGRhdGFbMF0ubG93ZXIoKSBpbiBfZGF5bmFtZXM6CiAgICAgICAgIyBUaGVyZSdzIGEgZGF5bmFtZSBoZXJlLiBTa2lwIGl0CiAgICAgICAgZGVsIGRhdGFbMF0KICAgIGVsc2U6CiAgICAgICAgaSA9IGRhdGFbMF0ucmZpbmQoJywnKQogICAgICAgIGlmIGkgPj0gMDoKICAgICAgICAgICAgZGF0YVswXSA9IGRhdGFbMF1baSsxOl0KICAgIGlmIGxlbihkYXRhKSA9PSAzOiAjIFJGQyA4NTAgZGF0ZSwgZGVwcmVjYXRlZAogICAgICAgIHN0dWZmID0gZGF0YVswXS5zcGxpdCgnLScpCiAgICAgICAgaWYgbGVuKHN0dWZmKSA9PSAzOgogICAgICAgICAgICBkYXRhID0gc3R1ZmYgKyBkYXRhWzE6XQogICAgaWYgbGVuKGRhdGEpID09IDQ6CiAgICAgICAgcyA9IGRhdGFbM10KICAgICAgICBpID0gcy5maW5kKCcrJykKICAgICAgICBpZiBpID09IC0xOgogICAgICAgICAgICBpID0gcy5maW5kKCctJykKICAgICAgICBpZiBpID4gMDoKICAgICAgICAgICAgZGF0YVszOl0gPSBbc1s6aV0sIHNbaTpdXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGEuYXBwZW5kKCcnKSAjIER1bW15IHR6CiAgICBpZiBsZW4oZGF0YSkgPCA1OgogICAgICAgIHJldHVybiBOb25lCiAgICBkYXRhID0gZGF0YVs6NV0KICAgIFtkZCwgbW0sIHl5LCB0bSwgdHpdID0gZGF0YQogICAgaWYgbm90IChkZCBhbmQgbW0gYW5kIHl5KToKICAgICAgICByZXR1cm4gTm9uZQogICAgbW0gPSBtbS5sb3dlcigpCiAgICBpZiBtbSBub3QgaW4gX21vbnRobmFtZXM6CiAgICAgICAgZGQsIG1tID0gbW0sIGRkLmxvd2VyKCkKICAgICAgICBpZiBtbSBub3QgaW4gX21vbnRobmFtZXM6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICBtbSA9IF9tb250aG5hbWVzLmluZGV4KG1tKSArIDEKICAgIGlmIG1tID4gMTI6CiAgICAgICAgbW0gLT0gMTIKICAgIGlmIGRkWy0xXSA9PSAnLCc6CiAgICAgICAgZGQgPSBkZFs6LTFdCiAgICBpID0geXkuZmluZCgnOicpCiAgICBpZiBpID4gMDoKICAgICAgICB5eSwgdG0gPSB0bSwgeXkKICAgIGlmIHl5Wy0xXSA9PSAnLCc6CiAgICAgICAgeXkgPSB5eVs6LTFdCiAgICAgICAgaWYgbm90IHl5OgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgaWYgbm90IHl5WzBdLmlzZGlnaXQoKToKICAgICAgICB5eSwgdHogPSB0eiwgeXkKICAgIGlmIHRtWy0xXSA9PSAnLCc6CiAgICAgICAgdG0gPSB0bVs6LTFdCiAgICB0bSA9IHRtLnNwbGl0KCc6JykKICAgIGlmIGxlbih0bSkgPT0gMjoKICAgICAgICBbdGhoLCB0bW1dID0gdG0KICAgICAgICB0c3MgPSAnMCcKICAgIGVsaWYgbGVuKHRtKSA9PSAzOgogICAgICAgIFt0aGgsIHRtbSwgdHNzXSA9IHRtCiAgICBlbGlmIGxlbih0bSkgPT0gMSBhbmQgJy4nIGluIHRtWzBdOgogICAgICAgICMgU29tZSBub24tY29tcGxpYW50IE1VQXMgdXNlICcuJyB0byBzZXBhcmF0ZSB0aW1lIGVsZW1lbnRzLgogICAgICAgIHRtID0gdG1bMF0uc3BsaXQoJy4nKQogICAgICAgIGlmIGxlbih0bSkgPT0gMjoKICAgICAgICAgICAgW3RoaCwgdG1tXSA9IHRtCiAgICAgICAgICAgIHRzcyA9IDAKICAgICAgICBlbGlmIGxlbih0bSkgPT0gMzoKICAgICAgICAgICAgW3RoaCwgdG1tLCB0c3NdID0gdG0KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgZWxzZToKICAgICAgICByZXR1cm4gTm9uZQogICAgdHJ5OgogICAgICAgIHl5ID0gaW50KHl5KQogICAgICAgIGRkID0gaW50KGRkKQogICAgICAgIHRoaCA9IGludCh0aGgpCiAgICAgICAgdG1tID0gaW50KHRtbSkKICAgICAgICB0c3MgPSBpbnQodHNzKQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgICMgQ2hlY2sgZm9yIGEgeXkgc3BlY2lmaWVkIGluIHR3by1kaWdpdCBmb3JtYXQsIHRoZW4gY29udmVydCBpdCB0byB0aGUKICAgICMgYXBwcm9wcmlhdGUgZm91ci1kaWdpdCBmb3JtYXQsIGFjY29yZGluZyB0byB0aGUgUE9TSVggc3RhbmRhcmQuIFJGQyA4MjIKICAgICMgY2FsbHMgZm9yIGEgdHdvLWRpZ2l0IHl5LCBidXQgUkZDIDI4MjIgKHdoaWNoIG9ic29sZXRlcyBSRkMgODIyKQogICAgIyBtYW5kYXRlcyBhIDQtZGlnaXQgeXkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCiAgICAjIHRoZSB0aW1lIG1vZHVsZS4KICAgIGlmIHl5IDwgMTAwOgogICAgICAgICMgVGhlIHllYXIgaXMgYmV0d2VlbiAxOTY5IGFuZCAxOTk5IChpbmNsdXNpdmUpLgogICAgICAgIGlmIHl5ID4gNjg6CiAgICAgICAgICAgIHl5ICs9IDE5MDAKICAgICAgICAjIFRoZSB5ZWFyIGlzIGJldHdlZW4gMjAwMCBhbmQgMjA2OCAoaW5jbHVzaXZlKS4KICAgICAgICBlbHNlOgogICAgICAgICAgICB5eSArPSAyMDAwCiAgICB0em9mZnNldCA9IE5vbmUKICAgIHR6ID0gdHoudXBwZXIoKQogICAgaWYgdHogaW4gX3RpbWV6b25lczoKICAgICAgICB0em9mZnNldCA9IF90aW1lem9uZXNbdHpdCiAgICBlbHNlOgogICAgICAgIHRyeToKICAgICAgICAgICAgdHpvZmZzZXQgPSBpbnQodHopCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBpZiB0em9mZnNldD09MCBhbmQgdHouc3RhcnRzd2l0aCgnLScpOgogICAgICAgICAgICB0em9mZnNldCA9IE5vbmUKICAgICMgQ29udmVydCBhIHRpbWV6b25lIG9mZnNldCBpbnRvIHNlY29uZHMgOyAtMDUwMCAtPiAtMTgwMDAKICAgIGlmIHR6b2Zmc2V0OgogICAgICAgIGlmIHR6b2Zmc2V0IDwgMDoKICAgICAgICAgICAgdHpzaWduID0gLTEKICAgICAgICAgICAgdHpvZmZzZXQgPSAtdHpvZmZzZXQKICAgICAgICBlbHNlOgogICAgICAgICAgICB0enNpZ24gPSAxCiAgICAgICAgdHpvZmZzZXQgPSB0enNpZ24gKiAoICh0em9mZnNldC8vMTAwKSozNjAwICsgKHR6b2Zmc2V0ICUgMTAwKSo2MCkKICAgICMgRGF5bGlnaHQgU2F2aW5nIFRpbWUgZmxhZyBpcyBzZXQgdG8gLTEsIHNpbmNlIERTVCBpcyB1bmtub3duLgogICAgcmV0dXJuIFt5eSwgbW0sIGRkLCB0aGgsIHRtbSwgdHNzLCAwLCAxLCAtMSwgdHpvZmZzZXRdCgoKZGVmIHBhcnNlZGF0ZShkYXRhKToKICAgICIiIkNvbnZlcnQgYSB0aW1lIHN0cmluZyB0byBhIHRpbWUgdHVwbGUuIiIiCiAgICB0ID0gcGFyc2VkYXRlX3R6KGRhdGEpCiAgICBpZiBpc2luc3RhbmNlKHQsIHR1cGxlKToKICAgICAgICByZXR1cm4gdFs6OV0KICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIHQKCgpkZWYgbWt0aW1lX3R6KGRhdGEpOgogICAgIiIiVHVybiBhIDEwLXR1cGxlIGFzIHJldHVybmVkIGJ5IHBhcnNlZGF0ZV90eigpIGludG8gYSBQT1NJWCB0aW1lc3RhbXAuIiIiCiAgICBpZiBkYXRhWzldIGlzIE5vbmU6CiAgICAgICAgIyBObyB6b25lIGluZm8sIHNvIGxvY2FsdGltZSBpcyBiZXR0ZXIgYXNzdW1wdGlvbiB0aGFuIEdNVAogICAgICAgIHJldHVybiB0aW1lLm1rdGltZShkYXRhWzo4XSArICgtMSwpKQogICAgZWxzZToKICAgICAgICB0ID0gY2FsZW5kYXIudGltZWdtKGRhdGEpCiAgICAgICAgcmV0dXJuIHQgLSBkYXRhWzldCgoKZGVmIHF1b3RlKHN0cik6CiAgICAiIiJQcmVwYXJlIHN0cmluZyB0byBiZSB1c2VkIGluIGEgcXVvdGVkIHN0cmluZy4KCiAgICBUdXJucyBiYWNrc2xhc2ggYW5kIGRvdWJsZSBxdW90ZSBjaGFyYWN0ZXJzIGludG8gcXVvdGVkIHBhaXJzLiAgVGhlc2UKICAgIGFyZSB0aGUgb25seSBjaGFyYWN0ZXJzIHRoYXQgbmVlZCB0byBiZSBxdW90ZWQgaW5zaWRlIGEgcXVvdGVkIHN0cmluZy4KICAgIERvZXMgbm90IGFkZCB0aGUgc3Vycm91bmRpbmcgZG91YmxlIHF1b3Rlcy4KICAgICIiIgogICAgcmV0dXJuIHN0ci5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgnIicsICdcXCInKQoKCmNsYXNzIEFkZHJsaXN0Q2xhc3M6CiAgICAiIiJBZGRyZXNzIHBhcnNlciBjbGFzcyBieSBCZW4gRXNjb3RvLgoKICAgIFRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNsYXNzIGRvZXMsIGl0IGhlbHBzIHRvIGhhdmUgYSBjb3B5IG9mIFJGQyAyODIyIGluCiAgICBmcm9udCBvZiB5b3UuCgogICAgTm90ZTogdGhpcyBjbGFzcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4KICAgIFVzZSBlbWFpbC51dGlscy5BZGRyZXNzTGlzdCBpbnN0ZWFkLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpZWxkKToKICAgICAgICAiIiJJbml0aWFsaXplIGEgbmV3IGluc3RhbmNlLgoKICAgICAgICBgZmllbGQnIGlzIGFuIHVucGFyc2VkIGFkZHJlc3MgaGVhZGVyIGZpZWxkLCBjb250YWluaW5nCiAgICAgICAgb25lIG9yIG1vcmUgYWRkcmVzc2VzLgogICAgICAgICIiIgogICAgICAgIHNlbGYuc3BlY2lhbHMgPSAnKCk8PkAsOjsuXCJbXScKICAgICAgICBzZWxmLnBvcyA9IDAKICAgICAgICBzZWxmLkxXUyA9ICcgXHQnCiAgICAgICAgc2VsZi5DUiA9ICdcclxuJwogICAgICAgIHNlbGYuRldTID0gc2VsZi5MV1MgKyBzZWxmLkNSCiAgICAgICAgc2VsZi5hdG9tZW5kcyA9IHNlbGYuc3BlY2lhbHMgKyBzZWxmLkxXUyArIHNlbGYuQ1IKICAgICAgICAjIE5vdGUgdGhhdCBSRkMgMjgyMiBub3cgc3BlY2lmaWVzIGAuJyBhcyBvYnMtcGhyYXNlLCBtZWFuaW5nIHRoYXQgaXQKICAgICAgICAjIGlzIG9ic29sZXRlIHN5bnRheC4gIFJGQyAyODIyIHJlcXVpcmVzIHRoYXQgd2UgcmVjb2duaXplIG9ic29sZXRlCiAgICAgICAgIyBzeW50YXgsIHNvIGFsbG93IGRvdHMgaW4gcGhyYXNlcy4KICAgICAgICBzZWxmLnBocmFzZWVuZHMgPSBzZWxmLmF0b21lbmRzLnJlcGxhY2UoJy4nLCAnJykKICAgICAgICBzZWxmLmZpZWxkID0gZmllbGQKICAgICAgICBzZWxmLmNvbW1lbnRsaXN0ID0gW10KCiAgICBkZWYgZ290b25leHQoc2VsZik6CiAgICAgICAgIiIiU2tpcCB3aGl0ZSBzcGFjZSBhbmQgZXh0cmFjdCBjb21tZW50cy4iIiIKICAgICAgICB3c2xpc3QgPSBbXQogICAgICAgIHdoaWxlIHNlbGYucG9zIDwgbGVuKHNlbGYuZmllbGQpOgogICAgICAgICAgICBpZiBzZWxmLmZpZWxkW3NlbGYucG9zXSBpbiBzZWxmLkxXUyArICdcblxyJzoKICAgICAgICAgICAgICAgIGlmIHNlbGYuZmllbGRbc2VsZi5wb3NdIG5vdCBpbiAnXG5ccic6CiAgICAgICAgICAgICAgICAgICAgd3NsaXN0LmFwcGVuZChzZWxmLmZpZWxkW3NlbGYucG9zXSkKICAgICAgICAgICAgICAgIHNlbGYucG9zICs9IDEKICAgICAgICAgICAgZWxpZiBzZWxmLmZpZWxkW3NlbGYucG9zXSA9PSAnKCc6CiAgICAgICAgICAgICAgICBzZWxmLmNvbW1lbnRsaXN0LmFwcGVuZChzZWxmLmdldGNvbW1lbnQoKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HLmpvaW4od3NsaXN0KQoKICAgIGRlZiBnZXRhZGRybGlzdChzZWxmKToKICAgICAgICAiIiJQYXJzZSBhbGwgYWRkcmVzc2VzLgoKICAgICAgICBSZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIGFsbCBvZiB0aGUgYWRkcmVzc2VzLgogICAgICAgICIiIgogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgd2hpbGUgc2VsZi5wb3MgPCBsZW4oc2VsZi5maWVsZCk6CiAgICAgICAgICAgIGFkID0gc2VsZi5nZXRhZGRyZXNzKCkKICAgICAgICAgICAgaWYgYWQ6CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gYWQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKCcnLCAnJykpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBnZXRhZGRyZXNzKHNlbGYpOgogICAgICAgICIiIlBhcnNlIHRoZSBuZXh0IGFkZHJlc3MuIiIiCiAgICAgICAgc2VsZi5jb21tZW50bGlzdCA9IFtdCiAgICAgICAgc2VsZi5nb3RvbmV4dCgpCgogICAgICAgIG9sZHBvcyA9IHNlbGYucG9zCiAgICAgICAgb2xkY2wgPSBzZWxmLmNvbW1lbnRsaXN0CiAgICAgICAgcGxpc3QgPSBzZWxmLmdldHBocmFzZWxpc3QoKQoKICAgICAgICBzZWxmLmdvdG9uZXh0KCkKICAgICAgICByZXR1cm5saXN0ID0gW10KCiAgICAgICAgaWYgc2VsZi5wb3MgPj0gbGVuKHNlbGYuZmllbGQpOgogICAgICAgICAgICAjIEJhZCBlbWFpbCBhZGRyZXNzIHRlY2huaWNhbGx5LCBubyBkb21haW4uCiAgICAgICAgICAgIGlmIHBsaXN0OgogICAgICAgICAgICAgICAgcmV0dXJubGlzdCA9IFsoU1BBQ0Uuam9pbihzZWxmLmNvbW1lbnRsaXN0KSwgcGxpc3RbMF0pXQoKICAgICAgICBlbGlmIHNlbGYuZmllbGRbc2VsZi5wb3NdIGluICcuQCc6CiAgICAgICAgICAgICMgZW1haWwgYWRkcmVzcyBpcyBqdXN0IGFuIGFkZHJzcGVjCiAgICAgICAgICAgICMgdGhpcyBpc24ndCB2ZXJ5IGVmZmljaWVudCBzaW5jZSB3ZSBzdGFydCBvdmVyCiAgICAgICAgICAgIHNlbGYucG9zID0gb2xkcG9zCiAgICAgICAgICAgIHNlbGYuY29tbWVudGxpc3QgPSBvbGRjbAogICAgICAgICAgICBhZGRyc3BlYyA9IHNlbGYuZ2V0YWRkcnNwZWMoKQogICAgICAgICAgICByZXR1cm5saXN0ID0gWyhTUEFDRS5qb2luKHNlbGYuY29tbWVudGxpc3QpLCBhZGRyc3BlYyldCgogICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gPT0gJzonOgogICAgICAgICAgICAjIGFkZHJlc3MgaXMgYSBncm91cAogICAgICAgICAgICByZXR1cm5saXN0ID0gW10KCiAgICAgICAgICAgIGZpZWxkbGVuID0gbGVuKHNlbGYuZmllbGQpCiAgICAgICAgICAgIHNlbGYucG9zICs9IDEKICAgICAgICAgICAgd2hpbGUgc2VsZi5wb3MgPCBsZW4oc2VsZi5maWVsZCk6CiAgICAgICAgICAgICAgICBzZWxmLmdvdG9uZXh0KCkKICAgICAgICAgICAgICAgIGlmIHNlbGYucG9zIDwgZmllbGRsZW4gYW5kIHNlbGYuZmllbGRbc2VsZi5wb3NdID09ICc7JzoKICAgICAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSAxCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHJldHVybmxpc3QgPSByZXR1cm5saXN0ICsgc2VsZi5nZXRhZGRyZXNzKCkKCiAgICAgICAgZWxpZiBzZWxmLmZpZWxkW3NlbGYucG9zXSA9PSAnPCc6CiAgICAgICAgICAgICMgQWRkcmVzcyBpcyBhIHBocmFzZSB0aGVuIGEgcm91dGUgYWRkcgogICAgICAgICAgICByb3V0ZWFkZHIgPSBzZWxmLmdldHJvdXRlYWRkcigpCgogICAgICAgICAgICBpZiBzZWxmLmNvbW1lbnRsaXN0OgogICAgICAgICAgICAgICAgcmV0dXJubGlzdCA9IFsoU1BBQ0Uuam9pbihwbGlzdCkgKyAnICgnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgJy5qb2luKHNlbGYuY29tbWVudGxpc3QpICsgJyknLCByb3V0ZWFkZHIpXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJubGlzdCA9IFsoU1BBQ0Uuam9pbihwbGlzdCksIHJvdXRlYWRkcildCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHBsaXN0OgogICAgICAgICAgICAgICAgcmV0dXJubGlzdCA9IFsoU1BBQ0Uuam9pbihzZWxmLmNvbW1lbnRsaXN0KSwgcGxpc3RbMF0pXQogICAgICAgICAgICBlbGlmIHNlbGYuZmllbGRbc2VsZi5wb3NdIGluIHNlbGYuc3BlY2lhbHM6CiAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSAxCgogICAgICAgIHNlbGYuZ290b25leHQoKQogICAgICAgIGlmIHNlbGYucG9zIDwgbGVuKHNlbGYuZmllbGQpIGFuZCBzZWxmLmZpZWxkW3NlbGYucG9zXSA9PSAnLCc6CiAgICAgICAgICAgIHNlbGYucG9zICs9IDEKICAgICAgICByZXR1cm4gcmV0dXJubGlzdAoKICAgIGRlZiBnZXRyb3V0ZWFkZHIoc2VsZik6CiAgICAgICAgIiIiUGFyc2UgYSByb3V0ZSBhZGRyZXNzIChSZXR1cm4tcGF0aCB2YWx1ZSkuCgogICAgICAgIFRoaXMgbWV0aG9kIGp1c3Qgc2tpcHMgYWxsIHRoZSByb3V0ZSBzdHVmZiBhbmQgcmV0dXJucyB0aGUgYWRkcnNwZWMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gIT0gJzwnOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgZXhwZWN0cm91dGUgPSBGYWxzZQogICAgICAgIHNlbGYucG9zICs9IDEKICAgICAgICBzZWxmLmdvdG9uZXh0KCkKICAgICAgICBhZGxpc3QgPSAnJwogICAgICAgIHdoaWxlIHNlbGYucG9zIDwgbGVuKHNlbGYuZmllbGQpOgogICAgICAgICAgICBpZiBleHBlY3Ryb3V0ZToKICAgICAgICAgICAgICAgIHNlbGYuZ2V0ZG9tYWluKCkKICAgICAgICAgICAgICAgIGV4cGVjdHJvdXRlID0gRmFsc2UKICAgICAgICAgICAgZWxpZiBzZWxmLmZpZWxkW3NlbGYucG9zXSA9PSAnPic6CiAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSAxCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbGlmIHNlbGYuZmllbGRbc2VsZi5wb3NdID09ICdAJzoKICAgICAgICAgICAgICAgIHNlbGYucG9zICs9IDEKICAgICAgICAgICAgICAgIGV4cGVjdHJvdXRlID0gVHJ1ZQogICAgICAgICAgICBlbGlmIHNlbGYuZmllbGRbc2VsZi5wb3NdID09ICc6JzoKICAgICAgICAgICAgICAgIHNlbGYucG9zICs9IDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGFkbGlzdCA9IHNlbGYuZ2V0YWRkcnNwZWMoKQogICAgICAgICAgICAgICAgc2VsZi5wb3MgKz0gMQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgc2VsZi5nb3RvbmV4dCgpCgogICAgICAgIHJldHVybiBhZGxpc3QKCiAgICBkZWYgZ2V0YWRkcnNwZWMoc2VsZik6CiAgICAgICAgIiIiUGFyc2UgYW4gUkZDIDI4MjIgYWRkci1zcGVjLiIiIgogICAgICAgIGFzbGlzdCA9IFtdCgogICAgICAgIHNlbGYuZ290b25leHQoKQogICAgICAgIHdoaWxlIHNlbGYucG9zIDwgbGVuKHNlbGYuZmllbGQpOgogICAgICAgICAgICBwcmVzZXJ2ZV93cyA9IFRydWUKICAgICAgICAgICAgaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gPT0gJy4nOgogICAgICAgICAgICAgICAgaWYgYXNsaXN0IGFuZCBub3QgYXNsaXN0Wy0xXS5zdHJpcCgpOgogICAgICAgICAgICAgICAgICAgIGFzbGlzdC5wb3AoKQogICAgICAgICAgICAgICAgYXNsaXN0LmFwcGVuZCgnLicpCiAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSAxCiAgICAgICAgICAgICAgICBwcmVzZXJ2ZV93cyA9IEZhbHNlCiAgICAgICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gPT0gJyInOgogICAgICAgICAgICAgICAgYXNsaXN0LmFwcGVuZCgnIiVzIicgJSBxdW90ZShzZWxmLmdldHF1b3RlKCkpKQogICAgICAgICAgICBlbGlmIHNlbGYuZmllbGRbc2VsZi5wb3NdIGluIHNlbGYuYXRvbWVuZHM6CiAgICAgICAgICAgICAgICBpZiBhc2xpc3QgYW5kIG5vdCBhc2xpc3RbLTFdLnN0cmlwKCk6CiAgICAgICAgICAgICAgICAgICAgYXNsaXN0LnBvcCgpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXNsaXN0LmFwcGVuZChzZWxmLmdldGF0b20oKSkKICAgICAgICAgICAgd3MgPSBzZWxmLmdvdG9uZXh0KCkKICAgICAgICAgICAgaWYgcHJlc2VydmVfd3MgYW5kIHdzOgogICAgICAgICAgICAgICAgYXNsaXN0LmFwcGVuZCh3cykKCiAgICAgICAgaWYgc2VsZi5wb3MgPj0gbGVuKHNlbGYuZmllbGQpIG9yIHNlbGYuZmllbGRbc2VsZi5wb3NdICE9ICdAJzoKICAgICAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HLmpvaW4oYXNsaXN0KQoKICAgICAgICBhc2xpc3QuYXBwZW5kKCdAJykKICAgICAgICBzZWxmLnBvcyArPSAxCiAgICAgICAgc2VsZi5nb3RvbmV4dCgpCiAgICAgICAgZG9tYWluID0gc2VsZi5nZXRkb21haW4oKQogICAgICAgIGlmIG5vdCBkb21haW46CiAgICAgICAgICAgICMgSW52YWxpZCBkb21haW4sIHJldHVybiBhbiBlbXB0eSBhZGRyZXNzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEKICAgICAgICAgICAgIyBsb2NhbCBwYXJ0IHRvIGRlbm90ZSBmYWlsZWQgcGFyc2luZy4KICAgICAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HCiAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HLmpvaW4oYXNsaXN0KSArIGRvbWFpbgoKICAgIGRlZiBnZXRkb21haW4oc2VsZik6CiAgICAgICAgIiIiR2V0IHRoZSBjb21wbGV0ZSBkb21haW4gbmFtZSBmcm9tIGFuIGFkZHJlc3MuIiIiCiAgICAgICAgc2RsaXN0ID0gW10KICAgICAgICB3aGlsZSBzZWxmLnBvcyA8IGxlbihzZWxmLmZpZWxkKToKICAgICAgICAgICAgaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gaW4gc2VsZi5MV1M6CiAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSAxCiAgICAgICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gPT0gJygnOgogICAgICAgICAgICAgICAgc2VsZi5jb21tZW50bGlzdC5hcHBlbmQoc2VsZi5nZXRjb21tZW50KCkpCiAgICAgICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gPT0gJ1snOgogICAgICAgICAgICAgICAgc2RsaXN0LmFwcGVuZChzZWxmLmdldGRvbWFpbmxpdGVyYWwoKSkKICAgICAgICAgICAgZWxpZiBzZWxmLmZpZWxkW3NlbGYucG9zXSA9PSAnLic6CiAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSAxCiAgICAgICAgICAgICAgICBzZGxpc3QuYXBwZW5kKCcuJykKICAgICAgICAgICAgZWxpZiBzZWxmLmZpZWxkW3NlbGYucG9zXSA9PSAnQCc6CiAgICAgICAgICAgICAgICAjIGJwby0zNDE1NTogRG9uJ3QgcGFyc2UgZG9tYWlucyB3aXRoIHR3byBgQGAgbGlrZQogICAgICAgICAgICAgICAgIyBgYUBtYWxpY2lvdXMub3JnQGltcG9ydGFudC5jb21gLgogICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HCiAgICAgICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gaW4gc2VsZi5hdG9tZW5kczoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZGxpc3QuYXBwZW5kKHNlbGYuZ2V0YXRvbSgpKQogICAgICAgIHJldHVybiBFTVBUWVNUUklORy5qb2luKHNkbGlzdCkKCiAgICBkZWYgZ2V0ZGVsaW1pdGVkKHNlbGYsIGJlZ2luY2hhciwgZW5kY2hhcnMsIGFsbG93Y29tbWVudHM9VHJ1ZSk6CiAgICAgICAgIiIiUGFyc2UgYSBoZWFkZXIgZnJhZ21lbnQgZGVsaW1pdGVkIGJ5IHNwZWNpYWwgY2hhcmFjdGVycy4KCiAgICAgICAgYGJlZ2luY2hhcicgaXMgdGhlIHN0YXJ0IGNoYXJhY3RlciBmb3IgdGhlIGZyYWdtZW50LgogICAgICAgIElmIHNlbGYgaXMgbm90IGxvb2tpbmcgYXQgYW4gaW5zdGFuY2Ugb2YgYGJlZ2luY2hhcicgdGhlbgogICAgICAgIGdldGRlbGltaXRlZCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuCgogICAgICAgIGBlbmRjaGFycycgaXMgYSBzZXF1ZW5jZSBvZiBhbGxvd2FibGUgZW5kLWRlbGltaXRpbmcgY2hhcmFjdGVycy4KICAgICAgICBQYXJzaW5nIHN0b3BzIHdoZW4gb25lIG9mIHRoZXNlIGlzIGVuY291bnRlcmVkLgoKICAgICAgICBJZiBgYWxsb3djb21tZW50cycgaXMgbm9uLXplcm8sIGVtYmVkZGVkIFJGQyAyODIyIGNvbW1lbnRzIGFyZSBhbGxvd2VkCiAgICAgICAgd2l0aGluIHRoZSBwYXJzZWQgZnJhZ21lbnQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gIT0gYmVnaW5jaGFyOgogICAgICAgICAgICByZXR1cm4gJycKCiAgICAgICAgc2xpc3QgPSBbJyddCiAgICAgICAgcXVvdGUgPSBGYWxzZQogICAgICAgIHNlbGYucG9zICs9IDEKICAgICAgICB3aGlsZSBzZWxmLnBvcyA8IGxlbihzZWxmLmZpZWxkKToKICAgICAgICAgICAgaWYgcXVvdGU6CiAgICAgICAgICAgICAgICBzbGlzdC5hcHBlbmQoc2VsZi5maWVsZFtzZWxmLnBvc10pCiAgICAgICAgICAgICAgICBxdW90ZSA9IEZhbHNlCiAgICAgICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gaW4gZW5kY2hhcnM6CiAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSAxCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbGlmIGFsbG93Y29tbWVudHMgYW5kIHNlbGYuZmllbGRbc2VsZi5wb3NdID09ICcoJzoKICAgICAgICAgICAgICAgIHNsaXN0LmFwcGVuZChzZWxmLmdldGNvbW1lbnQoKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlICAgICAgICAjIGhhdmUgYWxyZWFkeSBhZHZhbmNlZCBwb3MgZnJvbSBnZXRjb21tZW50CiAgICAgICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gPT0gJ1xcJzoKICAgICAgICAgICAgICAgIHF1b3RlID0gVHJ1ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2xpc3QuYXBwZW5kKHNlbGYuZmllbGRbc2VsZi5wb3NdKQogICAgICAgICAgICBzZWxmLnBvcyArPSAxCgogICAgICAgIHJldHVybiBFTVBUWVNUUklORy5qb2luKHNsaXN0KQoKICAgIGRlZiBnZXRxdW90ZShzZWxmKToKICAgICAgICAiIiJHZXQgYSBxdW90ZS1kZWxpbWl0ZWQgZnJhZ21lbnQgZnJvbSBzZWxmJ3MgZmllbGQuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZ2V0ZGVsaW1pdGVkKCciJywgJyJccicsIEZhbHNlKQoKICAgIGRlZiBnZXRjb21tZW50KHNlbGYpOgogICAgICAgICIiIkdldCBhIHBhcmVudGhlc2lzLWRlbGltaXRlZCBmcmFnbWVudCBmcm9tIHNlbGYncyBmaWVsZC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5nZXRkZWxpbWl0ZWQoJygnLCAnKVxyJywgVHJ1ZSkKCiAgICBkZWYgZ2V0ZG9tYWlubGl0ZXJhbChzZWxmKToKICAgICAgICAiIiJQYXJzZSBhbiBSRkMgMjgyMiBkb21haW4tbGl0ZXJhbC4iIiIKICAgICAgICByZXR1cm4gJ1slc10nICUgc2VsZi5nZXRkZWxpbWl0ZWQoJ1snLCAnXVxyJywgRmFsc2UpCgogICAgZGVmIGdldGF0b20oc2VsZiwgYXRvbWVuZHM9Tm9uZSk6CiAgICAgICAgIiIiUGFyc2UgYW4gUkZDIDI4MjIgYXRvbS4KCiAgICAgICAgT3B0aW9uYWwgYXRvbWVuZHMgc3BlY2lmaWVzIGEgZGlmZmVyZW50IHNldCBvZiBlbmQgdG9rZW4gZGVsaW1pdGVycwogICAgICAgICh0aGUgZGVmYXVsdCBpcyB0byB1c2Ugc2VsZi5hdG9tZW5kcykuICBUaGlzIGlzIHVzZWQgZS5nLiBpbgogICAgICAgIGdldHBocmFzZWxpc3QoKSBzaW5jZSBwaHJhc2UgZW5kaW5ncyBtdXN0IG5vdCBpbmNsdWRlIHRoZSBgLicgKHdoaWNoCiAgICAgICAgaXMgbGVnYWwgaW4gcGhyYXNlcykuIiIiCiAgICAgICAgYXRvbWxpc3QgPSBbJyddCiAgICAgICAgaWYgYXRvbWVuZHMgaXMgTm9uZToKICAgICAgICAgICAgYXRvbWVuZHMgPSBzZWxmLmF0b21lbmRzCgogICAgICAgIHdoaWxlIHNlbGYucG9zIDwgbGVuKHNlbGYuZmllbGQpOgogICAgICAgICAgICBpZiBzZWxmLmZpZWxkW3NlbGYucG9zXSBpbiBhdG9tZW5kczoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBhdG9tbGlzdC5hcHBlbmQoc2VsZi5maWVsZFtzZWxmLnBvc10pCiAgICAgICAgICAgIHNlbGYucG9zICs9IDEKCiAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HLmpvaW4oYXRvbWxpc3QpCgogICAgZGVmIGdldHBocmFzZWxpc3Qoc2VsZik6CiAgICAgICAgIiIiUGFyc2UgYSBzZXF1ZW5jZSBvZiBSRkMgMjgyMiBwaHJhc2VzLgoKICAgICAgICBBIHBocmFzZSBpcyBhIHNlcXVlbmNlIG9mIHdvcmRzLCB3aGljaCBhcmUgaW4gdHVybiBlaXRoZXIgUkZDIDI4MjIKICAgICAgICBhdG9tcyBvciBxdW90ZWQtc3RyaW5ncy4gIFBocmFzZXMgYXJlIGNhbm9uaWNhbGl6ZWQgYnkgc3F1ZWV6aW5nIGFsbAogICAgICAgIHJ1bnMgb2YgY29udGludW91cyB3aGl0ZXNwYWNlIGludG8gb25lIHNwYWNlLgogICAgICAgICIiIgogICAgICAgIHBsaXN0ID0gW10KCiAgICAgICAgd2hpbGUgc2VsZi5wb3MgPCBsZW4oc2VsZi5maWVsZCk6CiAgICAgICAgICAgIGlmIHNlbGYuZmllbGRbc2VsZi5wb3NdIGluIHNlbGYuRldTOgogICAgICAgICAgICAgICAgc2VsZi5wb3MgKz0gMQogICAgICAgICAgICBlbGlmIHNlbGYuZmllbGRbc2VsZi5wb3NdID09ICciJzoKICAgICAgICAgICAgICAgIHBsaXN0LmFwcGVuZChzZWxmLmdldHF1b3RlKCkpCiAgICAgICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gPT0gJygnOgogICAgICAgICAgICAgICAgc2VsZi5jb21tZW50bGlzdC5hcHBlbmQoc2VsZi5nZXRjb21tZW50KCkpCiAgICAgICAgICAgIGVsaWYgc2VsZi5maWVsZFtzZWxmLnBvc10gaW4gc2VsZi5waHJhc2VlbmRzOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHBsaXN0LmFwcGVuZChzZWxmLmdldGF0b20oc2VsZi5waHJhc2VlbmRzKSkKCiAgICAgICAgcmV0dXJuIHBsaXN0CgpjbGFzcyBBZGRyZXNzTGlzdChBZGRybGlzdENsYXNzKToKICAgICIiIkFuIEFkZHJlc3NMaXN0IGVuY2Fwc3VsYXRlcyBhIGxpc3Qgb2YgcGFyc2VkIFJGQyAyODIyIGFkZHJlc3Nlcy4iIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWVsZCk6CiAgICAgICAgQWRkcmxpc3RDbGFzcy5fX2luaXRfXyhzZWxmLCBmaWVsZCkKICAgICAgICBpZiBmaWVsZDoKICAgICAgICAgICAgc2VsZi5hZGRyZXNzbGlzdCA9IHNlbGYuZ2V0YWRkcmxpc3QoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuYWRkcmVzc2xpc3QgPSBbXQoKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5hZGRyZXNzbGlzdCkKCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIyBTZXQgdW5pb24KICAgICAgICBuZXdhZGRyID0gQWRkcmVzc0xpc3QoTm9uZSkKICAgICAgICBuZXdhZGRyLmFkZHJlc3NsaXN0ID0gc2VsZi5hZGRyZXNzbGlzdFs6XQogICAgICAgIGZvciB4IGluIG90aGVyLmFkZHJlc3NsaXN0OgogICAgICAgICAgICBpZiBub3QgeCBpbiBzZWxmLmFkZHJlc3NsaXN0OgogICAgICAgICAgICAgICAgbmV3YWRkci5hZGRyZXNzbGlzdC5hcHBlbmQoeCkKICAgICAgICByZXR1cm4gbmV3YWRkcgoKICAgIGRlZiBfX2lhZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIyBTZXQgdW5pb24sIGluLXBsYWNlCiAgICAgICAgZm9yIHggaW4gb3RoZXIuYWRkcmVzc2xpc3Q6CiAgICAgICAgICAgIGlmIG5vdCB4IGluIHNlbGYuYWRkcmVzc2xpc3Q6CiAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3NsaXN0LmFwcGVuZCh4KQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgICMgU2V0IGRpZmZlcmVuY2UKICAgICAgICBuZXdhZGRyID0gQWRkcmVzc0xpc3QoTm9uZSkKICAgICAgICBmb3IgeCBpbiBzZWxmLmFkZHJlc3NsaXN0OgogICAgICAgICAgICBpZiBub3QgeCBpbiBvdGhlci5hZGRyZXNzbGlzdDoKICAgICAgICAgICAgICAgIG5ld2FkZHIuYWRkcmVzc2xpc3QuYXBwZW5kKHgpCiAgICAgICAgcmV0dXJuIG5ld2FkZHIKCiAgICBkZWYgX19pc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgICMgU2V0IGRpZmZlcmVuY2UsIGluLXBsYWNlCiAgICAgICAgZm9yIHggaW4gb3RoZXIuYWRkcmVzc2xpc3Q6CiAgICAgICAgICAgIGlmIHggaW4gc2VsZi5hZGRyZXNzbGlzdDoKICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzc2xpc3QucmVtb3ZlKHgpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgICMgTWFrZSBpbmRleGluZywgc2xpY2VzLCBhbmQgJ2luJyB3b3JrCiAgICAgICAgcmV0dXJuIHNlbGYuYWRkcmVzc2xpc3RbaW5kZXhdClBLAwQUAAAAAAACIKNW1JYvfeE6AADhOgAAFAAAAGVtYWlsL19wb2xpY3liYXNlLnB5IiIiUG9saWN5IGZyYW1ld29yayBmb3IgdGhlIGVtYWlsIHBhY2thZ2UuCgpBbGxvd3MgZmluZSBncmFpbmVkIGZlYXR1cmUgY29udHJvbCBvZiBob3cgdGhlIHBhY2thZ2UgcGFyc2VzIGFuZCBlbWl0cyBkYXRhLgoiIiIKCmltcG9ydCBhYmMKZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVyCmZyb20gZW1haWwgaW1wb3J0IGNoYXJzZXQgYXMgX2NoYXJzZXQKZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCgpfX2FsbF9fID0gWwogICAgJ1BvbGljeScsCiAgICAnQ29tcGF0MzInLAogICAgJ2NvbXBhdDMyJywKICAgIF0KCgpjbGFzcyBfUG9saWN5QmFzZToKCiAgICAiIiJQb2xpY3kgT2JqZWN0IGJhc2ljIGZyYW1ld29yay4KCiAgICBUaGlzIGNsYXNzIGlzIHVzZWxlc3MgdW5sZXNzIHN1YmNsYXNzZWQuICBBIHN1YmNsYXNzIHNob3VsZCBkZWZpbmUKICAgIGNsYXNzIGF0dHJpYnV0ZXMgd2l0aCBkZWZhdWx0cyBmb3IgYW55IHZhbHVlcyB0aGF0IGFyZSB0byBiZQogICAgbWFuYWdlZCBieSB0aGUgUG9saWN5IG9iamVjdC4gIFRoZSBjb25zdHJ1Y3RvciB3aWxsIHRoZW4gYWxsb3cKICAgIG5vbi1kZWZhdWx0IHZhbHVlcyB0byBiZSBzZXQgZm9yIHRoZXNlIGF0dHJpYnV0ZXMgYXQgaW5zdGFuY2UKICAgIGNyZWF0aW9uIHRpbWUuICBUaGUgaW5zdGFuY2Ugd2lsbCBiZSBjYWxsYWJsZSwgdGFraW5nIHRoZXNlIHNhbWUKICAgIGF0dHJpYnV0ZXMga2V5d29yZCBhcmd1bWVudHMsIGFuZCByZXR1cm5pbmcgYSBuZXcgaW5zdGFuY2UKICAgIGlkZW50aWNhbCB0byB0aGUgY2FsbGVkIGluc3RhbmNlIGV4Y2VwdCBmb3IgdGhvc2UgdmFsdWVzIGNoYW5nZWQKICAgIGJ5IHRoZSBrZXl3b3JkIGFyZ3VtZW50cy4gIEluc3RhbmNlcyBtYXkgYmUgYWRkZWQsIHlpZWxkaW5nIG5ldwogICAgaW5zdGFuY2VzIHdpdGggYW55IG5vbi1kZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSByaWdodCBoYW5kCiAgICBvcGVyYW5kIG92ZXJyaWRpbmcgdGhvc2UgaW4gdGhlIGxlZnQgaGFuZCBvcGVyYW5kLiAgVGhhdCBpcywKCiAgICAgICAgQSArIEIgPT0gQSg8bm9uLWRlZmF1bHQgdmFsdWVzIG9mIEI+KQoKICAgIFRoZSByZXByIG9mIGFuIGluc3RhbmNlIGNhbiBiZSB1c2VkIHRvIHJlY29uc3RydWN0IHRoZSBvYmplY3QKICAgIGlmIGFuZCBvbmx5IGlmIHRoZSByZXByIG9mIHRoZSB2YWx1ZXMgY2FuIGJlIHVzZWQgdG8gcmVjb25zdHJ1Y3QKICAgIHRob3NlIHZhbHVlcy4KCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKiprdyk6CiAgICAgICAgIiIiQ3JlYXRlIG5ldyBQb2xpY3ksIHBvc3NpYmx5IG92ZXJyaWRpbmcgc29tZSBkZWZhdWx0cy4KCiAgICAgICAgU2VlIGNsYXNzIGRvY3N0cmluZyBmb3IgYSBsaXN0IG9mIG92ZXJyaWRhYmxlIGF0dHJpYnV0ZXMuCgogICAgICAgICIiIgogICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBrdy5pdGVtcygpOgogICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgogICAgICAgICAgICAgICAgc3VwZXIoX1BvbGljeUJhc2Usc2VsZikuX19zZXRhdHRyX18obmFtZSwgdmFsdWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgInshcn0gaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB7fSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGFyZ3MgPSBbICJ7fT17IXJ9Ii5mb3JtYXQobmFtZSwgdmFsdWUpCiAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX19kaWN0X18uaXRlbXMoKSBdCiAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKGFyZ3MpKQoKICAgIGRlZiBjbG9uZShzZWxmLCAqKmt3KToKICAgICAgICAiIiJSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugd2l0aCBzcGVjaWZpZWQgYXR0cmlidXRlcyBjaGFuZ2VkLgoKICAgICAgICBUaGUgbmV3IGluc3RhbmNlIGhhcyB0aGUgc2FtZSBhdHRyaWJ1dGUgdmFsdWVzIGFzIHRoZSBjdXJyZW50IG9iamVjdCwKICAgICAgICBleGNlcHQgZm9yIHRoZSBjaGFuZ2VzIHBhc3NlZCBpbiBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KCiAgICAgICAgIiIiCiAgICAgICAgbmV3cG9saWN5ID0gc2VsZi5fX2NsYXNzX18uX19uZXdfXyhzZWxmLl9fY2xhc3NfXykKICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gc2VsZi5fX2RpY3RfXy5pdGVtcygpOgogICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18obmV3cG9saWN5LCBhdHRyLCB2YWx1ZSkKICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4ga3cuaXRlbXMoKToKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgYXR0cik6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgInshcn0gaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB7fSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICBhdHRyLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCiAgICAgICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhuZXdwb2xpY3ksIGF0dHIsIHZhbHVlKQogICAgICAgIHJldHVybiBuZXdwb2xpY3kKCiAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6CiAgICAgICAgICAgIG1zZyA9ICJ7IXJ9IG9iamVjdCBhdHRyaWJ1dGUgeyFyfSBpcyByZWFkLW9ubHkiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbXNnID0gInshcn0gb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgeyFyfSIKICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihtc2cuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lKSkKCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIiIiTm9uLWRlZmF1bHQgdmFsdWVzIGZyb20gcmlnaHQgb3BlcmFuZCBvdmVycmlkZSB0aG9zZSBmcm9tIGxlZnQuCgogICAgICAgIFRoZSBvYmplY3QgcmV0dXJuZWQgaXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHN1YmNsYXNzLgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5jbG9uZSgqKm90aGVyLl9fZGljdF9fKQoKCmRlZiBfYXBwZW5kX2RvYyhkb2MsIGFkZGVkX2RvYyk6CiAgICBkb2MgPSBkb2MucnNwbGl0KCdcbicsIDEpWzBdCiAgICBhZGRlZF9kb2MgPSBhZGRlZF9kb2Muc3BsaXQoJ1xuJywgMSlbMV0KICAgIHJldHVybiBkb2MgKyAnXG4nICsgYWRkZWRfZG9jCgpkZWYgX2V4dGVuZF9kb2NzdHJpbmdzKGNscyk6CiAgICBpZiBjbHMuX19kb2NfXyBhbmQgY2xzLl9fZG9jX18uc3RhcnRzd2l0aCgnKycpOgogICAgICAgIGNscy5fX2RvY19fID0gX2FwcGVuZF9kb2MoY2xzLl9fYmFzZXNfX1swXS5fX2RvY19fLCBjbHMuX19kb2NfXykKICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgogICAgICAgIGlmIGF0dHIuX19kb2NfXyBhbmQgYXR0ci5fX2RvY19fLnN0YXJ0c3dpdGgoJysnKToKICAgICAgICAgICAgZm9yIGMgaW4gKGMgZm9yIGJhc2UgaW4gY2xzLl9fYmFzZXNfXyBmb3IgYyBpbiBiYXNlLm1ybygpKToKICAgICAgICAgICAgICAgIGRvYyA9IGdldGF0dHIoZ2V0YXR0cihjLCBuYW1lKSwgJ19fZG9jX18nKQogICAgICAgICAgICAgICAgaWYgZG9jOgogICAgICAgICAgICAgICAgICAgIGF0dHIuX19kb2NfXyA9IF9hcHBlbmRfZG9jKGRvYywgYXR0ci5fX2RvY19fKQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICByZXR1cm4gY2xzCgoKY2xhc3MgUG9saWN5KF9Qb2xpY3lCYXNlLCBtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgoKICAgIHIiIiJDb250cm9scyBmb3IgaG93IG1lc3NhZ2VzIGFyZSBpbnRlcnByZXRlZCBhbmQgZm9ybWF0dGVkLgoKICAgIE1vc3Qgb2YgdGhlIGNsYXNzZXMgYW5kIG1hbnkgb2YgdGhlIG1ldGhvZHMgaW4gdGhlIGVtYWlsIHBhY2thZ2UgYWNjZXB0CiAgICBQb2xpY3kgb2JqZWN0cyBhcyBwYXJhbWV0ZXJzLiAgQSBQb2xpY3kgb2JqZWN0IGNvbnRhaW5zIGEgc2V0IG9mIHZhbHVlcyBhbmQKICAgIGZ1bmN0aW9ucyB0aGF0IGNvbnRyb2wgaG93IGlucHV0IGlzIGludGVycHJldGVkIGFuZCBob3cgb3V0cHV0IGlzIHJlbmRlcmVkLgogICAgRm9yIGV4YW1wbGUsIHRoZSBwYXJhbWV0ZXIgJ3JhaXNlX29uX2RlZmVjdCcgY29udHJvbHMgd2hldGhlciBvciBub3QgYW4gUkZDCiAgICB2aW9sYXRpb24gcmVzdWx0cyBpbiBhbiBlcnJvciBiZWluZyByYWlzZWQgb3Igbm90LCB3aGlsZSAnbWF4X2xpbmVfbGVuZ3RoJwogICAgY29udHJvbHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIG91dHB1dCBsaW5lcyB3aGVuIGEgTWVzc2FnZSBpcyBzZXJpYWxpemVkLgoKICAgIEFueSB2YWxpZCBhdHRyaWJ1dGUgbWF5IGJlIG92ZXJyaWRkZW4gd2hlbiBhIFBvbGljeSBpcyBjcmVhdGVkIGJ5IHBhc3NpbmcKICAgIGl0IGFzIGEga2V5d29yZCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IuICBQb2xpY3kgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLAogICAgYnV0IGEgbmV3IFBvbGljeSBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgd2l0aCBvbmx5IGNlcnRhaW4gdmFsdWVzIGNoYW5nZWQgYnkKICAgIGNhbGxpbmcgdGhlIFBvbGljeSBpbnN0YW5jZSB3aXRoIGtleXdvcmQgYXJndW1lbnRzLiAgUG9saWN5IG9iamVjdHMgY2FuCiAgICBhbHNvIGJlIGFkZGVkLCBwcm9kdWNpbmcgYSBuZXcgUG9saWN5IG9iamVjdCBpbiB3aGljaCB0aGUgbm9uLWRlZmF1bHQKICAgIGF0dHJpYnV0ZXMgc2V0IGluIHRoZSByaWdodCBoYW5kIG9wZXJhbmQgb3ZlcndyaXRlIHRob3NlIHNwZWNpZmllZCBpbiB0aGUKICAgIGxlZnQgb3BlcmFuZC4KCiAgICBTZXR0YWJsZSBhdHRyaWJ1dGVzOgoKICAgIHJhaXNlX29uX2RlZmVjdCAgICAgLS0gSWYgdHJ1ZSwgdGhlbiBkZWZlY3RzIHNob3VsZCBiZSByYWlzZWQgYXMgZXJyb3JzLgogICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiBGYWxzZS4KCiAgICBsaW5lc2VwICAgICAgICAgICAgIC0tIHN0cmluZyBjb250YWluaW5nIHRoZSB2YWx1ZSB0byB1c2UgYXMgc2VwYXJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIG91dHB1dCBsaW5lcy4gIERlZmF1bHQgJ1xuJy4KCiAgICBjdGVfdHlwZSAgICAgICAgICAgIC0tIFR5cGUgb2YgYWxsb3dlZCBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5ncwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgN2JpdCAgLS0gQVNDSUkgb25seQogICAgICAgICAgICAgICAgICAgICAgICAgICA4Yml0ICAtLSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0IGlzIGFsbG93ZWQKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IDhiaXQuICBBbHNvIGNvbnRyb2xzIHRoZSBkaXNwb3NpdGlvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGluIGhlYWRlcnM7IHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgYmluYXJ5X2ZvbGQgbWV0aG9kLgoKICAgIG1heF9saW5lX2xlbmd0aCAgICAgLS0gbWF4aW11bSBsZW5ndGggb2YgbGluZXMsIGV4Y2x1ZGluZyAnbGluZXNlcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBzZXJpYWxpemF0aW9uLiAgTm9uZSBvciAwIG1lYW5zIG5vIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBpbmcgaXMgZG9uZS4gIERlZmF1bHQgaXMgNzguCgogICAgbWFuZ2xlX2Zyb21fICAgICAgICAtLSBhIGZsYWcgdGhhdCwgd2hlbiBUcnVlIGVzY2FwZXMgRnJvbV8gbGluZXMgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgb2YgdGhlIG1lc3NhZ2UgYnkgcHV0dGluZyBhIGA+JyBpbiBmcm9udCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgbWVzc2FnZSBpcyBiZWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkIGJ5IGEgZ2VuZXJhdG9yLiBEZWZhdWx0OiBUcnVlLgoKICAgIG1lc3NhZ2VfZmFjdG9yeSAgICAgLS0gdGhlIGNsYXNzIHRvIHVzZSB0byBjcmVhdGUgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHZhbHVlIGlzIE5vbmUsIHRoZSBkZWZhdWx0IGlzIE1lc3NhZ2UuCgogICAgIiIiCgogICAgcmFpc2Vfb25fZGVmZWN0ID0gRmFsc2UKICAgIGxpbmVzZXAgPSAnXG4nCiAgICBjdGVfdHlwZSA9ICc4Yml0JwogICAgbWF4X2xpbmVfbGVuZ3RoID0gNzgKICAgIG1hbmdsZV9mcm9tXyA9IEZhbHNlCiAgICBtZXNzYWdlX2ZhY3RvcnkgPSBOb25lCgogICAgZGVmIGhhbmRsZV9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgogICAgICAgICIiIkJhc2VkIG9uIHBvbGljeSwgZWl0aGVyIHJhaXNlIGRlZmVjdCBvciBjYWxsIHJlZ2lzdGVyX2RlZmVjdC4KCiAgICAgICAgICAgIGhhbmRsZV9kZWZlY3Qob2JqLCBkZWZlY3QpCgogICAgICAgIGRlZmVjdCBzaG91bGQgYmUgYSBEZWZlY3Qgc3ViY2xhc3MsIGJ1dCBpbiBhbnkgY2FzZSBtdXN0IGJlIGFuCiAgICAgICAgRXhjZXB0aW9uIHN1YmNsYXNzLiAgb2JqIGlzIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIGRlZmVjdCBzaG91bGQgYmUKICAgICAgICByZWdpc3RlcmVkIGlmIGl0IGlzIG5vdCByYWlzZWQuICBJZiB0aGUgcmFpc2Vfb25fZGVmZWN0IGlzIFRydWUsIHRoZQogICAgICAgIGRlZmVjdCBpcyByYWlzZWQgYXMgYW4gZXJyb3IsIG90aGVyd2lzZSB0aGUgb2JqZWN0IGFuZCB0aGUgZGVmZWN0IGFyZQogICAgICAgIHBhc3NlZCB0byByZWdpc3Rlcl9kZWZlY3QuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBwYXJzZXJzIHRoYXQgZGlzY292ZXIgZGVmZWN0cy4KICAgICAgICBUaGUgZW1haWwgcGFja2FnZSBwYXJzZXJzIGFsd2F5cyBjYWxsIGl0IHdpdGggRGVmZWN0IGluc3RhbmNlcy4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5yYWlzZV9vbl9kZWZlY3Q6CiAgICAgICAgICAgIHJhaXNlIGRlZmVjdAogICAgICAgIHNlbGYucmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQoKICAgIGRlZiByZWdpc3Rlcl9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgogICAgICAgICIiIlJlY29yZCAnZGVmZWN0JyBvbiAnb2JqJy4KCiAgICAgICAgQ2FsbGVkIGJ5IGhhbmRsZV9kZWZlY3QgaWYgcmFpc2Vfb25fZGVmZWN0IGlzIEZhbHNlLiAgVGhpcyBtZXRob2QgaXMKICAgICAgICBwYXJ0IG9mIHRoZSBQb2xpY3kgQVBJIHNvIHRoYXQgUG9saWN5IHN1YmNsYXNzZXMgY2FuIGltcGxlbWVudCBjdXN0b20KICAgICAgICBkZWZlY3QgaGFuZGxpbmcuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgYXBwZW5kIG1ldGhvZCBvZgogICAgICAgIHRoZSBkZWZlY3RzIGF0dHJpYnV0ZSBvZiBvYmouICBUaGUgb2JqZWN0cyB1c2VkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIGJ5CiAgICAgICAgZGVmYXVsdCB0aGF0IGdldCBwYXNzZWQgdG8gdGhpcyBtZXRob2Qgd2lsbCBhbHdheXMgaGF2ZSBhIGRlZmVjdHMKICAgICAgICBhdHRyaWJ1dGUgd2l0aCBhbiBhcHBlbmQgbWV0aG9kLgoKICAgICAgICAiIiIKICAgICAgICBvYmouZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQoKICAgIGRlZiBoZWFkZXJfbWF4X2NvdW50KHNlbGYsIG5hbWUpOgogICAgICAgICIiIlJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICduYW1lJy4KCiAgICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSBNZXNzYWdlIG9iamVjdC4gIElmIHRoZSByZXR1cm5lZAogICAgICAgIHZhbHVlIGlzIG5vdCAwIG9yIE5vbmUsIGFuZCB0aGVyZSBhcmUgYWxyZWFkeSBhIG51bWJlciBvZiBoZWFkZXJzIHdpdGgKICAgICAgICB0aGUgbmFtZSAnbmFtZScgZXF1YWwgdG8gdGhlIHZhbHVlIHJldHVybmVkLCBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgoKICAgICAgICBCZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIE1lc3NhZ2UncyBfX3NldGl0ZW1fXyBpcyB0byBhcHBlbmQgdGhlCiAgICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKICAgICAgICB3aXRob3V0IHJlYWxpemluZyBpdC4gIFRoaXMgbWV0aG9kIGFsbG93cyBjZXJ0YWluIGhlYWRlcnMgdG8gYmUgbGltaXRlZAogICAgICAgIGluIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIG9mIHRoYXQgaGVhZGVyIHRoYXQgbWF5IGJlIGFkZGVkIHRvIGEKICAgICAgICBNZXNzYWdlIHByb2dyYW1tYXRpY2FsbHkuICAoVGhlIGxpbWl0IGlzIG5vdCBvYnNlcnZlZCBieSB0aGUgcGFyc2VyLAogICAgICAgIHdoaWNoIHdpbGwgZmFpdGhmdWxseSBwcm9kdWNlIGFzIG1hbnkgaGVhZGVycyBhcyBleGlzdCBpbiB0aGUgbWVzc2FnZQogICAgICAgIGJlaW5nIHBhcnNlZC4pCgogICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgTm9uZSBmb3IgYWxsIGhlYWRlciBuYW1lcy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gTm9uZQoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBoZWFkZXJfc291cmNlX3BhcnNlKHNlbGYsIHNvdXJjZWxpbmVzKToKICAgICAgICAiIiJHaXZlbiBhIGxpc3Qgb2YgbGluZXNlcCB0ZXJtaW5hdGVkIHN0cmluZ3MgY29uc3RpdHV0aW5nIHRoZSBsaW5lcyBvZgogICAgICAgIGEgc2luZ2xlIGhlYWRlciwgcmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIHR1cGxlIHRoYXQgc2hvdWxkIGJlIHN0b3JlZAogICAgICAgIGluIHRoZSBtb2RlbC4gIFRoZSBpbnB1dCBsaW5lcyBzaG91bGQgcmV0YWluIHRoZWlyIHRlcm1pbmF0aW5nIGxpbmVzZXAKICAgICAgICBjaGFyYWN0ZXJzLiAgVGhlIGxpbmVzIHBhc3NlZCBpbiBieSB0aGUgZW1haWwgcGFja2FnZSBtYXkgY29udGFpbgogICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBoZWFkZXJfc3RvcmVfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbgogICAgICAgIHByb2dyYW0sIHJldHVybiB0aGUgKG5hbWUsIHZhbHVlKSB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaW4gdGhlIG1vZGVsLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgaGVhZGVyX2ZldGNoX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCwgcmV0dXJuIHRoZSB2YWx1ZQogICAgICAgIHRvIGJlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtIHRoYXQgaXMgcmVxdWVzdGluZyB0aGF0CiAgICAgICAgaGVhZGVyLiAgVGhlIHZhbHVlIHBhc3NlZCBpbiBieSB0aGUgZW1haWwgcGFja2FnZSBtYXkgY29udGFpbgogICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEgaWYgdGhlIGxpbmVzIHdlcmUgcGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIuCiAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBub3QgY29udGFpbiBhbnkgc3Vycm9nYXRlZXNjYXBlZCBkYXRhLgoKICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgZGVmIGZvbGQoc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLCByZXR1cm4gYSBzdHJpbmcKICAgICAgICBjb250YWluaW5nIGxpbmVzZXAgY2hhcmFjdGVycyB0aGF0IGltcGxlbWVudCB0aGUgZm9sZGluZyBvZiB0aGUgaGVhZGVyCiAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBwb2xpY3kgY29udHJvbHMuICBUaGUgdmFsdWUgcGFzc2VkIGluIGJ5IHRoZSBlbWFpbAogICAgICAgIHBhY2thZ2UgbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YSBpZiB0aGUgbGluZXMgd2VyZQogICAgICAgIHBhcnNlZCBieSBhIEJ5dGVzUGFyc2VyLiAgVGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBub3QgY29udGFpbiBhbnkKICAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGRhdGEuCgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgZm9sZF9iaW5hcnkoc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLCByZXR1cm4gYmluYXJ5CiAgICAgICAgZGF0YSBjb250YWluaW5nIGxpbmVzZXAgY2hhcmFjdGVycyB0aGF0IGltcGxlbWVudCB0aGUgZm9sZGluZyBvZiB0aGUKICAgICAgICBoZWFkZXIgYWNjb3JkaW5nIHRvIHRoZSBwb2xpY3kgY29udHJvbHMuICBUaGUgdmFsdWUgcGFzc2VkIGluIGJ5IHRoZQogICAgICAgIGVtYWlsIHBhY2thZ2UgbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4KCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCkBfZXh0ZW5kX2RvY3N0cmluZ3MKY2xhc3MgQ29tcGF0MzIoUG9saWN5KToKCiAgICAiIiIrCiAgICBUaGlzIHBhcnRpY3VsYXIgcG9saWN5IGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IFBvbGljeS4gIEl0CiAgICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSB2ZXJzaW9uIDUuMS4KICAgICIiIgoKICAgIG1hbmdsZV9mcm9tXyA9IFRydWUKCiAgICBkZWYgX3Nhbml0aXplX2hlYWRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgIyBJZiB0aGUgaGVhZGVyIHZhbHVlIGNvbnRhaW5zIHN1cnJvZ2F0ZXMsIHJldHVybiBhIEhlYWRlciB1c2luZwogICAgICAgICMgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0IHRvIGVuY29kZSB0aGUgYnl0ZXMgYXMgZW5jb2RlZCB3b3Jkcy4KICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgIyBBc3N1bWUgaXQgaXMgYWxyZWFkeSBhIGhlYWRlciBvYmplY3QKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKICAgICAgICAgICAgcmV0dXJuIGhlYWRlci5IZWFkZXIodmFsdWUsIGNoYXJzZXQ9X2NoYXJzZXQuVU5LTk9XTjhCSVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPW5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgZGVmIGhlYWRlcl9zb3VyY2VfcGFyc2Uoc2VsZiwgc291cmNlbGluZXMpOgogICAgICAgICIiIisKICAgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJzonIGFuZCByZXR1cm5lZCB1bm1vZGlmaWVkLgogICAgICAgIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmIHRoZQogICAgICAgIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwgYW5kCiAgICAgICAgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSwgdmFsdWUgPSBzb3VyY2VsaW5lc1swXS5zcGxpdCgnOicsIDEpCiAgICAgICAgdmFsdWUgPSB2YWx1ZS5sc3RyaXAoJyBcdCcpICsgJycuam9pbihzb3VyY2VsaW5lc1sxOl0pCiAgICAgICAgcmV0dXJuIChuYW1lLCB2YWx1ZS5yc3RyaXAoJ1xyXG4nKSkKCiAgICBkZWYgaGVhZGVyX3N0b3JlX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAiIiIrCiAgICAgICAgVGhlIG5hbWUgYW5kIHZhbHVlIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgogICAgICAgICIiIgogICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUpCgogICAgZGVmIGhlYWRlcl9mZXRjaF9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgIiIiKwogICAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYSBIZWFkZXIgb2JqZWN0CiAgICAgICAgdXNpbmcgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0LiAgT3RoZXJ3aXNlIGl0IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3Nhbml0aXplX2hlYWRlcihuYW1lLCB2YWx1ZSkKCiAgICBkZWYgZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgIiIiKwogICAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgSGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMKICAgICAgICBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcyBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZQogICAgICAgIG1heF9saW5lX2xlbmd0aC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUgQ1RFIGVuY29kZWQgdXNpbmcgdGhlCiAgICAgICAgdW5rbm93bi04Yml0IGNoYXJzZXQuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCBzYW5pdGl6ZT1UcnVlKQoKICAgIGRlZiBmb2xkX2JpbmFyeShzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgIiIiKwogICAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgSGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMKICAgICAgICBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcyBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZQogICAgICAgIG1heF9saW5lX2xlbmd0aC4gIElmIGN0ZV90eXBlIGlzIDdiaXQsIG5vbi1hc2NpaSBiaW5hcnkgZGF0YSBpcyBDVEUKICAgICAgICBlbmNvZGVkIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4gIE90aGVyd2lzZSB0aGUgb3JpZ2luYWwgc291cmNlCiAgICAgICAgaGVhZGVyIGlzIHVzZWQsIHdpdGggaXRzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGFuZC9vciBiaW5hcnkgZGF0YS4KCiAgICAgICAgIiIiCiAgICAgICAgZm9sZGVkID0gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgc2FuaXRpemU9c2VsZi5jdGVfdHlwZT09JzdiaXQnKQogICAgICAgIHJldHVybiBmb2xkZWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQoKICAgIGRlZiBfZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSwgc2FuaXRpemUpOgogICAgICAgIHBhcnRzID0gW10KICAgICAgICBwYXJ0cy5hcHBlbmQoJyVzOiAnICUgbmFtZSkKICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgogICAgICAgICAgICAgICAgaWYgc2FuaXRpemU6CiAgICAgICAgICAgICAgICAgICAgaCA9IGhlYWRlci5IZWFkZXIodmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD1fY2hhcnNldC5VTktOT1dOOEJJVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1uYW1lKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgcmF3IDhiaXQgZGF0YSBpbiBhIGJ5dGUgc3RyaW5nLCB3ZSBoYXZlIG5vIGlkZWEKICAgICAgICAgICAgICAgICAgICAjIHdoYXQgdGhlIGVuY29kaW5nIGlzLiAgVGhlcmUgaXMgbm8gc2FmZSB3YXkgdG8gc3BsaXQgdGhpcwogICAgICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgSWYgaXQncyBhc2NpaS1zdWJzZXQsIHRoZW4gd2UgY291bGQgZG8gYSBub3JtYWwKICAgICAgICAgICAgICAgICAgICAjIGFzY2lpIHNwbGl0LCBidXQgaWYgaXQncyBtdWx0aWJ5dGUgdGhlbiB3ZSBjb3VsZCBicmVhayB0aGUKICAgICAgICAgICAgICAgICAgICAjIHN0cmluZy4gIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgc28gdGhlIGxlYXN0IGhhcm0gc2VlbXMgdG8KICAgICAgICAgICAgICAgICAgICAjIGJlIHRvIG5vdCBzcGxpdCB0aGUgc3RyaW5nIGFuZCByaXNrIGl0IGJlaW5nIHRvbyBsb25nLgogICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICBoID0gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaCA9IGhlYWRlci5IZWFkZXIodmFsdWUsIGhlYWRlcl9uYW1lPW5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBBc3N1bWUgaXQgaXMgYSBIZWFkZXItbGlrZSBvYmplY3QuCiAgICAgICAgICAgIGggPSB2YWx1ZQogICAgICAgIGlmIGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgVGhlIEhlYWRlciBjbGFzcyBpbnRlcnByZXRzIGEgdmFsdWUgb2YgTm9uZSBmb3IgbWF4bGluZWxlbiBhcyB0aGUKICAgICAgICAgICAgIyBkZWZhdWx0IHZhbHVlIG9mIDc4LCBhcyByZWNvbW1lbmRlZCBieSBSRkMgMjgyMi4KICAgICAgICAgICAgbWF4bGluZWxlbiA9IDAKICAgICAgICAgICAgaWYgc2VsZi5tYXhfbGluZV9sZW5ndGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBtYXhsaW5lbGVuID0gc2VsZi5tYXhfbGluZV9sZW5ndGgKICAgICAgICAgICAgcGFydHMuYXBwZW5kKGguZW5jb2RlKGxpbmVzZXA9c2VsZi5saW5lc2VwLCBtYXhsaW5lbGVuPW1heGxpbmVsZW4pKQogICAgICAgIHBhcnRzLmFwcGVuZChzZWxmLmxpbmVzZXApCiAgICAgICAgcmV0dXJuICcnLmpvaW4ocGFydHMpCgoKY29tcGF0MzIgPSBDb21wYXQzMigpClBLAwQUAAAAAAACIKNWgxuSeOcNAADnDQAAEwAAAGVtYWlsL2Jhc2U2NG1pbWUucHkjIENvcHlyaWdodCAoQykgMjAwMi0yMDA3IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCiMgQXV0aG9yOiBCZW4gR2VydHpmaWVsZAojIENvbnRhY3Q6IGVtYWlsLXNpZ0BweXRob24ub3JnCgoiIiJCYXNlNjQgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyBwZXIgUkZDcyAyMDQ1LTIwNDcuCgpUaGlzIG1vZHVsZSBoYW5kbGVzIHRoZSBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIG1ldGhvZCBkZWZpbmVkIGluIFJGQyAyMDQ1CnRvIGVuY29kZSBhcmJpdHJhcnkgOC1iaXQgZGF0YSB1c2luZyB0aGUgdGhyZWUgOC1iaXQgYnl0ZXMgaW4gZm91ciA3LWJpdApjaGFyYWN0ZXJzIGVuY29kaW5nIGtub3duIGFzIEJhc2U2NC4KCkl0IGlzIHVzZWQgaW4gdGhlIE1JTUUgc3RhbmRhcmRzIGZvciBlbWFpbCB0byBhdHRhY2ggaW1hZ2VzLCBhdWRpbywgYW5kIHRleHQKdXNpbmcgc29tZSA4LWJpdCBjaGFyYWN0ZXIgc2V0cyB0byBtZXNzYWdlcy4KClRoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBlbmNvZGUgYW5kIGRlY29kZSBib3RoIGhlYWRlcnMgYW5kIGJvZGllcwp3aXRoIEJhc2U2NCBlbmNvZGluZy4KClJGQyAyMDQ1IGRlZmluZXMgYSBtZXRob2QgZm9yIGluY2x1ZGluZyBjaGFyYWN0ZXIgc2V0IGluZm9ybWF0aW9uIGluIGFuCmBlbmNvZGVkLXdvcmQnIGluIGEgaGVhZGVyLiAgVGhpcyBtZXRob2QgaXMgY29tbW9ubHkgdXNlZCBmb3IgOC1iaXQgcmVhbCBuYW1lcwppbiBUbzosIEZyb206LCBDYzosIGV0Yy4gZmllbGRzLCBhcyB3ZWxsIGFzIFN1YmplY3Q6IGxpbmVzLgoKVGhpcyBtb2R1bGUgZG9lcyBub3QgZG8gdGhlIGxpbmUgd3JhcHBpbmcgb3IgZW5kLW9mLWxpbmUgY2hhcmFjdGVyIGNvbnZlcnNpb24KbmVjZXNzYXJ5IGZvciBwcm9wZXIgaW50ZXJuYXRpb25hbGl6ZWQgaGVhZGVyczsgaXQgb25seSBkb2VzIGR1bWIgZW5jb2RpbmcgYW5kCmRlY29kaW5nLiAgVG8gZGVhbCB3aXRoIHRoZSB2YXJpb3VzIGxpbmUgd3JhcHBpbmcgaXNzdWVzLCB1c2UgdGhlIGVtYWlsLmhlYWRlcgptb2R1bGUuCiIiIgoKX19hbGxfXyA9IFsKICAgICdib2R5X2RlY29kZScsCiAgICAnYm9keV9lbmNvZGUnLAogICAgJ2RlY29kZScsCiAgICAnZGVjb2Rlc3RyaW5nJywKICAgICdoZWFkZXJfZW5jb2RlJywKICAgICdoZWFkZXJfbGVuZ3RoJywKICAgIF0KCgpmcm9tIGJhc2U2NCBpbXBvcnQgYjY0ZW5jb2RlCmZyb20gYmluYXNjaWkgaW1wb3J0IGIyYV9iYXNlNjQsIGEyYl9iYXNlNjQKCkNSTEYgPSAnXHJcbicKTkwgPSAnXG4nCkVNUFRZU1RSSU5HID0gJycKCiMgU2VlIGFsc28gQ2hhcnNldC5weQpNSVNDX0xFTiA9IDcKCgoMCiMgSGVscGVycwpkZWYgaGVhZGVyX2xlbmd0aChieXRlYXJyYXkpOgogICAgIiIiUmV0dXJuIHRoZSBsZW5ndGggb2YgcyB3aGVuIGl0IGlzIGVuY29kZWQgd2l0aCBiYXNlNjQuIiIiCiAgICBncm91cHNfb2ZfMywgbGVmdG92ZXIgPSBkaXZtb2QobGVuKGJ5dGVhcnJheSksIDMpCiAgICAjIDQgYnl0ZXMgb3V0IGZvciBlYWNoIDMgYnl0ZXMgKG9yIG5vbnplcm8gZnJhY3Rpb24gdGhlcmVvZikgaW4uCiAgICBuID0gZ3JvdXBzX29mXzMgKiA0CiAgICBpZiBsZWZ0b3ZlcjoKICAgICAgICBuICs9IDQKICAgIHJldHVybiBuCgoKDApkZWYgaGVhZGVyX2VuY29kZShoZWFkZXJfYnl0ZXMsIGNoYXJzZXQ9J2lzby04ODU5LTEnKToKICAgICIiIkVuY29kZSBhIHNpbmdsZSBoZWFkZXIgbGluZSB3aXRoIEJhc2U2NCBlbmNvZGluZyBpbiBhIGdpdmVuIGNoYXJzZXQuCgogICAgY2hhcnNldCBuYW1lcyB0aGUgY2hhcmFjdGVyIHNldCB0byB1c2UgdG8gZW5jb2RlIHRoZSBoZWFkZXIuICBJdCBkZWZhdWx0cwogICAgdG8gaXNvLTg4NTktMS4gIEJhc2U2NCBlbmNvZGluZyBpcyBkZWZpbmVkIGluIFJGQyAyMDQ1LgogICAgIiIiCiAgICBpZiBub3QgaGVhZGVyX2J5dGVzOgogICAgICAgIHJldHVybiAiIgogICAgaWYgaXNpbnN0YW5jZShoZWFkZXJfYnl0ZXMsIHN0cik6CiAgICAgICAgaGVhZGVyX2J5dGVzID0gaGVhZGVyX2J5dGVzLmVuY29kZShjaGFyc2V0KQogICAgZW5jb2RlZCA9IGI2NGVuY29kZShoZWFkZXJfYnl0ZXMpLmRlY29kZSgiYXNjaWkiKQogICAgcmV0dXJuICc9PyVzP2I/JXM/PScgJSAoY2hhcnNldCwgZW5jb2RlZCkKCgoMCmRlZiBib2R5X2VuY29kZShzLCBtYXhsaW5lbGVuPTc2LCBlb2w9TkwpOgogICAgciIiIkVuY29kZSBhIHN0cmluZyB3aXRoIGJhc2U2NC4KCiAgICBFYWNoIGxpbmUgd2lsbCBiZSB3cmFwcGVkIGF0LCBhdCBtb3N0LCBtYXhsaW5lbGVuIGNoYXJhY3RlcnMgKGRlZmF1bHRzIHRvCiAgICA3NiBjaGFyYWN0ZXJzKS4KCiAgICBFYWNoIGxpbmUgb2YgZW5jb2RlZCB0ZXh0IHdpbGwgZW5kIHdpdGggZW9sLCB3aGljaCBkZWZhdWx0cyB0byAiXG4iLiAgU2V0CiAgICB0aGlzIHRvICJcclxuIiBpZiB5b3Ugd2lsbCBiZSB1c2luZyB0aGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkKICAgIGluIGFuIGVtYWlsLgogICAgIiIiCiAgICBpZiBub3QgczoKICAgICAgICByZXR1cm4gIiIKCiAgICBlbmN2ZWMgPSBbXQogICAgbWF4X3VuZW5jb2RlZCA9IG1heGxpbmVsZW4gKiAzIC8vIDQKICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihzKSwgbWF4X3VuZW5jb2RlZCk6CiAgICAgICAgIyBCQVc6IHNob3VsZCBlbmNvZGUoKSBpbmhlcml0IGIyYV9iYXNlNjQoKSdzIGR1YmlvdXMgYmVoYXZpb3IgaW4KICAgICAgICAjIGFkZGluZyBhIG5ld2xpbmUgdG8gdGhlIGVuY29kZWQgc3RyaW5nPwogICAgICAgIGVuYyA9IGIyYV9iYXNlNjQoc1tpOmkgKyBtYXhfdW5lbmNvZGVkXSkuZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgaWYgZW5jLmVuZHN3aXRoKE5MKSBhbmQgZW9sICE9IE5MOgogICAgICAgICAgICBlbmMgPSBlbmNbOi0xXSArIGVvbAogICAgICAgIGVuY3ZlYy5hcHBlbmQoZW5jKQogICAgcmV0dXJuIEVNUFRZU1RSSU5HLmpvaW4oZW5jdmVjKQoKCgwKZGVmIGRlY29kZShzdHJpbmcpOgogICAgIiIiRGVjb2RlIGEgcmF3IGJhc2U2NCBzdHJpbmcsIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdC4KCiAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBhcnNlIGEgZnVsbCBNSU1FIGhlYWRlciB2YWx1ZSBlbmNvZGVkIHdpdGgKICAgIGJhc2U2NCAobGlrZSA9P2lzby04ODU5LTE/Yj9ibWxvSVNCdWFXZ2g/PSkgLS0gcGxlYXNlIHVzZSB0aGUgaGlnaAogICAgbGV2ZWwgZW1haWwuaGVhZGVyIGNsYXNzIGZvciB0aGF0IGZ1bmN0aW9uYWxpdHkuCiAgICAiIiIKICAgIGlmIG5vdCBzdHJpbmc6CiAgICAgICAgcmV0dXJuIGJ5dGVzKCkKICAgIGVsaWYgaXNpbnN0YW5jZShzdHJpbmcsIHN0cik6CiAgICAgICAgcmV0dXJuIGEyYl9iYXNlNjQoc3RyaW5nLmVuY29kZSgncmF3LXVuaWNvZGUtZXNjYXBlJykpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBhMmJfYmFzZTY0KHN0cmluZykKCgojIEZvciBjb252ZW5pZW5jZSBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdy8gc3RhbmRhcmQgYmFzZTY0IG1vZHVsZQpib2R5X2RlY29kZSA9IGRlY29kZQpkZWNvZGVzdHJpbmcgPSBkZWNvZGUKUEsDBBQAAAAAAAIgo1Y8mYZr6EIAAOhCAAAQAAAAZW1haWwvY2hhcnNldC5weSMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDcgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBBdXRob3I6IEJlbiBHZXJ0emZpZWxkLCBCYXJyeSBXYXJzYXcKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKX19hbGxfXyA9IFsKICAgICdDaGFyc2V0JywKICAgICdhZGRfYWxpYXMnLAogICAgJ2FkZF9jaGFyc2V0JywKICAgICdhZGRfY29kZWMnLAogICAgXQoKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKCmltcG9ydCBlbWFpbC5iYXNlNjRtaW1lCmltcG9ydCBlbWFpbC5xdW9wcmltaW1lCgpmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKZnJvbSBlbWFpbC5lbmNvZGVycyBpbXBvcnQgZW5jb2RlXzdvcjhiaXQKCgoMCiMgRmxhZ3MgZm9yIHR5cGVzIG9mIGhlYWRlciBlbmNvZGluZ3MKUVAgICAgICAgICAgPSAxICMgUXVvdGVkLVByaW50YWJsZQpCQVNFNjQgICAgICA9IDIgIyBCYXNlNjQKU0hPUlRFU1QgICAgPSAzICMgdGhlIHNob3J0ZXIgb2YgUVAgYW5kIGJhc2U2NCwgYnV0IG9ubHkgZm9yIGhlYWRlcnMKCiMgSW4gIj0/Y2hhcnNldD9xP2hlbGxvX3dvcmxkPz0iLCB0aGUgPT8sID9xPywgYW5kID89IGFkZCB1cCB0byA3ClJGQzIwNDdfQ0hST01FX0xFTiA9IDcKCkRFRkFVTFRfQ0hBUlNFVCA9ICd1cy1hc2NpaScKVU5LTk9XTjhCSVQgPSAndW5rbm93bi04Yml0JwpFTVBUWVNUUklORyA9ICcnCgoKDAojIERlZmF1bHRzCkNIQVJTRVRTID0gewogICAgIyBpbnB1dCAgICAgICAgaGVhZGVyIGVuYyAgYm9keSBlbmMgb3V0cHV0IGNvbnYKICAgICdpc28tODg1OS0xJzogIChRUCwgICAgICAgIFFQLCAgICAgIE5vbmUpLAogICAgJ2lzby04ODU5LTInOiAgKFFQLCAgICAgICAgUVAsICAgICAgTm9uZSksCiAgICAnaXNvLTg4NTktMyc6ICAoUVAsICAgICAgICBRUCwgICAgICBOb25lKSwKICAgICdpc28tODg1OS00JzogIChRUCwgICAgICAgIFFQLCAgICAgIE5vbmUpLAogICAgIyBpc28tODg1OS01IGlzIEN5cmlsbGljLCBhbmQgbm90IGVzcGVjaWFsbHkgdXNlZAogICAgIyBpc28tODg1OS02IGlzIEFyYWJpYywgYWxzbyBub3QgcGFydGljdWxhcmx5IHVzZWQKICAgICMgaXNvLTg4NTktNyBpcyBHcmVlaywgUVAgd2lsbCBub3QgbWFrZSBpdCByZWFkYWJsZQogICAgIyBpc28tODg1OS04IGlzIEhlYnJldywgUVAgd2lsbCBub3QgbWFrZSBpdCByZWFkYWJsZQogICAgJ2lzby04ODU5LTknOiAgKFFQLCAgICAgICAgUVAsICAgICAgTm9uZSksCiAgICAnaXNvLTg4NTktMTAnOiAoUVAsICAgICAgICBRUCwgICAgICBOb25lKSwKICAgICMgaXNvLTg4NTktMTEgaXMgVGhhaSwgUVAgd2lsbCBub3QgbWFrZSBpdCByZWFkYWJsZQogICAgJ2lzby04ODU5LTEzJzogKFFQLCAgICAgICAgUVAsICAgICAgTm9uZSksCiAgICAnaXNvLTg4NTktMTQnOiAoUVAsICAgICAgICBRUCwgICAgICBOb25lKSwKICAgICdpc28tODg1OS0xNSc6IChRUCwgICAgICAgIFFQLCAgICAgIE5vbmUpLAogICAgJ2lzby04ODU5LTE2JzogKFFQLCAgICAgICAgUVAsICAgICAgTm9uZSksCiAgICAnd2luZG93cy0xMjUyJzooUVAsICAgICAgICBRUCwgICAgICBOb25lKSwKICAgICd2aXNjaWknOiAgICAgIChRUCwgICAgICAgIFFQLCAgICAgIE5vbmUpLAogICAgJ3VzLWFzY2lpJzogICAgKE5vbmUsICAgICAgTm9uZSwgICAgTm9uZSksCiAgICAnYmlnNSc6ICAgICAgICAoQkFTRTY0LCAgICBCQVNFNjQsICBOb25lKSwKICAgICdnYjIzMTInOiAgICAgIChCQVNFNjQsICAgIEJBU0U2NCwgIE5vbmUpLAogICAgJ2V1Yy1qcCc6ICAgICAgKEJBU0U2NCwgICAgTm9uZSwgICAgJ2lzby0yMDIyLWpwJyksCiAgICAnc2hpZnRfamlzJzogICAoQkFTRTY0LCAgICBOb25lLCAgICAnaXNvLTIwMjItanAnKSwKICAgICdpc28tMjAyMi1qcCc6IChCQVNFNjQsICAgIE5vbmUsICAgIE5vbmUpLAogICAgJ2tvaTgtcic6ICAgICAgKEJBU0U2NCwgICAgQkFTRTY0LCAgTm9uZSksCiAgICAndXRmLTgnOiAgICAgICAoU0hPUlRFU1QsICBCQVNFNjQsICd1dGYtOCcpLAogICAgfQoKIyBBbGlhc2VzIGZvciBvdGhlciBjb21tb25seS11c2VkIG5hbWVzIGZvciBjaGFyYWN0ZXIgc2V0cy4gIE1hcAojIHRoZW0gdG8gdGhlIHJlYWwgb25lcyB1c2VkIGluIGVtYWlsLgpBTElBU0VTID0gewogICAgJ2xhdGluXzEnOiAnaXNvLTg4NTktMScsCiAgICAnbGF0aW4tMSc6ICdpc28tODg1OS0xJywKICAgICdsYXRpbl8yJzogJ2lzby04ODU5LTInLAogICAgJ2xhdGluLTInOiAnaXNvLTg4NTktMicsCiAgICAnbGF0aW5fMyc6ICdpc28tODg1OS0zJywKICAgICdsYXRpbi0zJzogJ2lzby04ODU5LTMnLAogICAgJ2xhdGluXzQnOiAnaXNvLTg4NTktNCcsCiAgICAnbGF0aW4tNCc6ICdpc28tODg1OS00JywKICAgICdsYXRpbl81JzogJ2lzby04ODU5LTknLAogICAgJ2xhdGluLTUnOiAnaXNvLTg4NTktOScsCiAgICAnbGF0aW5fNic6ICdpc28tODg1OS0xMCcsCiAgICAnbGF0aW4tNic6ICdpc28tODg1OS0xMCcsCiAgICAnbGF0aW5fNyc6ICdpc28tODg1OS0xMycsCiAgICAnbGF0aW4tNyc6ICdpc28tODg1OS0xMycsCiAgICAnbGF0aW5fOCc6ICdpc28tODg1OS0xNCcsCiAgICAnbGF0aW4tOCc6ICdpc28tODg1OS0xNCcsCiAgICAnbGF0aW5fOSc6ICdpc28tODg1OS0xNScsCiAgICAnbGF0aW4tOSc6ICdpc28tODg1OS0xNScsCiAgICAnbGF0aW5fMTAnOidpc28tODg1OS0xNicsCiAgICAnbGF0aW4tMTAnOidpc28tODg1OS0xNicsCiAgICAnY3A5NDknOiAgICdrc19jXzU2MDEtMTk4NycsCiAgICAnZXVjX2pwJzogICdldWMtanAnLAogICAgJ2V1Y19rcic6ICAnZXVjLWtyJywKICAgICdhc2NpaSc6ICAgJ3VzLWFzY2lpJywKICAgIH0KCgojIE1hcCBjaGFyc2V0cyB0byB0aGVpciBVbmljb2RlIGNvZGVjIHN0cmluZ3MuCkNPREVDX01BUCA9IHsKICAgICdnYjIzMTInOiAgICAgICdldWNnYjIzMTJfY24nLAogICAgJ2JpZzUnOiAgICAgICAgJ2JpZzVfdHcnLAogICAgIyBIYWNrOiBXZSBkb24ndCB3YW50ICphbnkqIGNvbnZlcnNpb24gZm9yIHN0dWZmIG1hcmtlZCB1cy1hc2NpaSwgYXMgYWxsCiAgICAjIHNvcnRzIG9mIGdhcmJhZ2UgbWlnaHQgYmUgc2VudCB0byB1cyBpbiB0aGUgZ3Vpc2Ugb2YgNy1iaXQgdXMtYXNjaWkuCiAgICAjIExldCB0aGF0IHN0dWZmIHBhc3MgdGhyb3VnaCB3aXRob3V0IGNvbnZlcnNpb24gdG8vZnJvbSBVbmljb2RlLgogICAgJ3VzLWFzY2lpJzogICAgTm9uZSwKICAgIH0KCgoMCiMgQ29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBleHRlbmRpbmcgdGhlIGFib3ZlIG1hcHBpbmdzCmRlZiBhZGRfY2hhcnNldChjaGFyc2V0LCBoZWFkZXJfZW5jPU5vbmUsIGJvZHlfZW5jPU5vbmUsIG91dHB1dF9jaGFyc2V0PU5vbmUpOgogICAgIiIiQWRkIGNoYXJhY3RlciBzZXQgcHJvcGVydGllcyB0byB0aGUgZ2xvYmFsIHJlZ2lzdHJ5LgoKICAgIGNoYXJzZXQgaXMgdGhlIGlucHV0IGNoYXJhY3RlciBzZXQsIGFuZCBtdXN0IGJlIHRoZSBjYW5vbmljYWwgbmFtZSBvZiBhCiAgICBjaGFyYWN0ZXIgc2V0LgoKICAgIE9wdGlvbmFsIGhlYWRlcl9lbmMgYW5kIGJvZHlfZW5jIGlzIGVpdGhlciBDaGFyc2V0LlFQIGZvcgogICAgcXVvdGVkLXByaW50YWJsZSwgQ2hhcnNldC5CQVNFNjQgZm9yIGJhc2U2NCBlbmNvZGluZywgQ2hhcnNldC5TSE9SVEVTVCBmb3IKICAgIHRoZSBzaG9ydGVzdCBvZiBxcCBvciBiYXNlNjQgZW5jb2RpbmcsIG9yIE5vbmUgZm9yIG5vIGVuY29kaW5nLiAgU0hPUlRFU1QKICAgIGlzIG9ubHkgdmFsaWQgZm9yIGhlYWRlcl9lbmMuICBJdCBkZXNjcmliZXMgaG93IG1lc3NhZ2UgaGVhZGVycyBhbmQKICAgIG1lc3NhZ2UgYm9kaWVzIGluIHRoZSBpbnB1dCBjaGFyc2V0IGFyZSB0byBiZSBlbmNvZGVkLiAgRGVmYXVsdCBpcyBubwogICAgZW5jb2RpbmcuCgogICAgT3B0aW9uYWwgb3V0cHV0X2NoYXJzZXQgaXMgdGhlIGNoYXJhY3RlciBzZXQgdGhhdCB0aGUgb3V0cHV0IHNob3VsZCBiZQogICAgaW4uICBDb252ZXJzaW9ucyB3aWxsIHByb2NlZWQgZnJvbSBpbnB1dCBjaGFyc2V0LCB0byBVbmljb2RlLCB0byB0aGUKICAgIG91dHB1dCBjaGFyc2V0IHdoZW4gdGhlIG1ldGhvZCBDaGFyc2V0LmNvbnZlcnQoKSBpcyBjYWxsZWQuICBUaGUgZGVmYXVsdAogICAgaXMgdG8gb3V0cHV0IGluIHRoZSBzYW1lIGNoYXJhY3RlciBzZXQgYXMgdGhlIGlucHV0LgoKICAgIEJvdGggaW5wdXRfY2hhcnNldCBhbmQgb3V0cHV0X2NoYXJzZXQgbXVzdCBoYXZlIFVuaWNvZGUgY29kZWMgZW50cmllcyBpbgogICAgdGhlIG1vZHVsZSdzIGNoYXJzZXQtdG8tY29kZWMgbWFwcGluZzsgdXNlIGFkZF9jb2RlYyhjaGFyc2V0LCBjb2RlY25hbWUpCiAgICB0byBhZGQgY29kZWNzIHRoZSBtb2R1bGUgZG9lcyBub3Qga25vdyBhYm91dC4gIFNlZSB0aGUgY29kZWNzIG1vZHVsZSdzCiAgICBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgIiIiCiAgICBpZiBib2R5X2VuYyA9PSBTSE9SVEVTVDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTSE9SVEVTVCBub3QgYWxsb3dlZCBmb3IgYm9keV9lbmMnKQogICAgQ0hBUlNFVFNbY2hhcnNldF0gPSAoaGVhZGVyX2VuYywgYm9keV9lbmMsIG91dHB1dF9jaGFyc2V0KQoKCmRlZiBhZGRfYWxpYXMoYWxpYXMsIGNhbm9uaWNhbCk6CiAgICAiIiJBZGQgYSBjaGFyYWN0ZXIgc2V0IGFsaWFzLgoKICAgIGFsaWFzIGlzIHRoZSBhbGlhcyBuYW1lLCBlLmcuIGxhdGluLTEKICAgIGNhbm9uaWNhbCBpcyB0aGUgY2hhcmFjdGVyIHNldCdzIGNhbm9uaWNhbCBuYW1lLCBlLmcuIGlzby04ODU5LTEKICAgICIiIgogICAgQUxJQVNFU1thbGlhc10gPSBjYW5vbmljYWwKCgpkZWYgYWRkX2NvZGVjKGNoYXJzZXQsIGNvZGVjbmFtZSk6CiAgICAiIiJBZGQgYSBjb2RlYyB0aGF0IG1hcCBjaGFyYWN0ZXJzIGluIHRoZSBnaXZlbiBjaGFyc2V0IHRvL2Zyb20gVW5pY29kZS4KCiAgICBjaGFyc2V0IGlzIHRoZSBjYW5vbmljYWwgbmFtZSBvZiBhIGNoYXJhY3RlciBzZXQuICBjb2RlY25hbWUgaXMgdGhlIG5hbWUKICAgIG9mIGEgUHl0aG9uIGNvZGVjLCBhcyBhcHByb3ByaWF0ZSBmb3IgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgdW5pY29kZSgpCiAgICBidWlsdC1pbiwgb3IgdG8gdGhlIGVuY29kZSgpIG1ldGhvZCBvZiBhIFVuaWNvZGUgc3RyaW5nLgogICAgIiIiCiAgICBDT0RFQ19NQVBbY2hhcnNldF0gPSBjb2RlY25hbWUKCgoMCiMgQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGVuY29kaW5nIHN0cmluZ3MsIHRha2luZyBpbnRvIGFjY291bnQKIyB0aGF0IHRoZXkgbWlnaHQgYmUgdW5rbm93bi04Yml0IChpZTogaGF2ZSBzdXJyb2dhdGUtZXNjYXBlZCBieXRlcykKZGVmIF9lbmNvZGUoc3RyaW5nLCBjb2RlYyk6CiAgICBpZiBjb2RlYyA9PSBVTktOT1dOOEJJVDoKICAgICAgICByZXR1cm4gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIHN0cmluZy5lbmNvZGUoY29kZWMpCgoKDApjbGFzcyBDaGFyc2V0OgogICAgIiIiTWFwIGNoYXJhY3RlciBzZXRzIHRvIHRoZWlyIGVtYWlsIHByb3BlcnRpZXMuCgogICAgVGhpcyBjbGFzcyBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWlyZW1lbnRzIGltcG9zZWQgb24gZW1haWwKICAgIGZvciBhIHNwZWNpZmljIGNoYXJhY3RlciBzZXQuICBJdCBhbHNvIHByb3ZpZGVzIGNvbnZlbmllbmNlIHJvdXRpbmVzIGZvcgogICAgY29udmVydGluZyBiZXR3ZWVuIGNoYXJhY3RlciBzZXRzLCBnaXZlbiB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZQogICAgYXBwbGljYWJsZSBjb2RlY3MuICBHaXZlbiBhIGNoYXJhY3RlciBzZXQsIGl0IHdpbGwgZG8gaXRzIGJlc3QgdG8gcHJvdmlkZQogICAgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGF0IGNoYXJhY3RlciBzZXQgaW4gYW4gZW1haWwgaW4gYW4KICAgIFJGQy1jb21wbGlhbnQgd2F5LgoKICAgIENlcnRhaW4gY2hhcmFjdGVyIHNldHMgbXVzdCBiZSBlbmNvZGVkIHdpdGggcXVvdGVkLXByaW50YWJsZSBvciBiYXNlNjQKICAgIHdoZW4gdXNlZCBpbiBlbWFpbCBoZWFkZXJzIG9yIGJvZGllcy4gIENlcnRhaW4gY2hhcmFjdGVyIHNldHMgbXVzdCBiZQogICAgY29udmVydGVkIG91dHJpZ2h0LCBhbmQgYXJlIG5vdCBhbGxvd2VkIGluIGVtYWlsLiAgSW5zdGFuY2VzIG9mIHRoaXMKICAgIG1vZHVsZSBleHBvc2UgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhYm91dCBhIGNoYXJhY3RlciBzZXQ6CgogICAgaW5wdXRfY2hhcnNldDogVGhlIGluaXRpYWwgY2hhcmFjdGVyIHNldCBzcGVjaWZpZWQuICBDb21tb24gYWxpYXNlcwogICAgICAgICAgICAgICAgICAgYXJlIGNvbnZlcnRlZCB0byB0aGVpciBgb2ZmaWNpYWwnIGVtYWlsIG5hbWVzIChlLmcuIGxhdGluXzEKICAgICAgICAgICAgICAgICAgIGlzIGNvbnZlcnRlZCB0byBpc28tODg1OS0xKS4gIERlZmF1bHRzIHRvIDctYml0IHVzLWFzY2lpLgoKICAgIGhlYWRlcl9lbmNvZGluZzogSWYgdGhlIGNoYXJhY3RlciBzZXQgbXVzdCBiZSBlbmNvZGVkIGJlZm9yZSBpdCBjYW4gYmUKICAgICAgICAgICAgICAgICAgICAgdXNlZCBpbiBhbiBlbWFpbCBoZWFkZXIsIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgc2V0IHRvCiAgICAgICAgICAgICAgICAgICAgIENoYXJzZXQuUVAgKGZvciBxdW90ZWQtcHJpbnRhYmxlKSwgQ2hhcnNldC5CQVNFNjQgKGZvcgogICAgICAgICAgICAgICAgICAgICBiYXNlNjQgZW5jb2RpbmcpLCBvciBDaGFyc2V0LlNIT1JURVNUIGZvciB0aGUgc2hvcnRlc3Qgb2YKICAgICAgICAgICAgICAgICAgICAgUVAgb3IgQkFTRTY0IGVuY29kaW5nLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIE5vbmUuCgogICAgYm9keV9lbmNvZGluZzogU2FtZSBhcyBoZWFkZXJfZW5jb2RpbmcsIGJ1dCBkZXNjcmliZXMgdGhlIGVuY29kaW5nIGZvciB0aGUKICAgICAgICAgICAgICAgICAgIG1haWwgbWVzc2FnZSdzIGJvZHksIHdoaWNoIGluZGVlZCBtYXkgYmUgZGlmZmVyZW50IHRoYW4gdGhlCiAgICAgICAgICAgICAgICAgICBoZWFkZXIgZW5jb2RpbmcuICBDaGFyc2V0LlNIT1JURVNUIGlzIG5vdCBhbGxvd2VkIGZvcgogICAgICAgICAgICAgICAgICAgYm9keV9lbmNvZGluZy4KCiAgICBvdXRwdXRfY2hhcnNldDogU29tZSBjaGFyYWN0ZXIgc2V0cyBtdXN0IGJlIGNvbnZlcnRlZCBiZWZvcmUgdGhleSBjYW4gYmUKICAgICAgICAgICAgICAgICAgICB1c2VkIGluIGVtYWlsIGhlYWRlcnMgb3IgYm9kaWVzLiAgSWYgdGhlIGlucHV0X2NoYXJzZXQgaXMKICAgICAgICAgICAgICAgICAgICBvbmUgb2YgdGhlbSwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBjb250YWluIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvLiAgT3RoZXJ3aXNlLCBpdCB3aWxsCiAgICAgICAgICAgICAgICAgICAgYmUgTm9uZS4KCiAgICBpbnB1dF9jb2RlYzogVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBjb2RlYyB1c2VkIHRvIGNvbnZlcnQgdGhlCiAgICAgICAgICAgICAgICAgaW5wdXRfY2hhcnNldCB0byBVbmljb2RlLiAgSWYgbm8gY29udmVyc2lvbiBjb2RlYyBpcwogICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSBOb25lLgoKICAgIG91dHB1dF9jb2RlYzogVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBjb2RlYyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZQogICAgICAgICAgICAgICAgICB0byB0aGUgb3V0cHV0X2NoYXJzZXQuICBJZiBubyBjb252ZXJzaW9uIGNvZGVjIGlzIG5lY2Vzc2FyeSwKICAgICAgICAgICAgICAgICAgdGhpcyBhdHRyaWJ1dGUgd2lsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dF9jb2RlYy4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGlucHV0X2NoYXJzZXQ9REVGQVVMVF9DSEFSU0VUKToKICAgICAgICAjIFJGQyAyMDQ2LCAkNC4xLjIgc2F5cyBjaGFyc2V0cyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLiAgV2UgY29lcmNlIHRvCiAgICAgICAgIyB1bmljb2RlIGJlY2F1c2UgaXRzIC5sb3dlcigpIGlzIGxvY2FsZSBpbnNlbnNpdGl2ZS4gIElmIHRoZSBhcmd1bWVudAogICAgICAgICMgaXMgYWxyZWFkeSBhIHVuaWNvZGUsIHdlIGxlYXZlIGl0IGF0IHRoYXQsIGJ1dCBlbnN1cmUgdGhhdCB0aGUKICAgICAgICAjIGNoYXJzZXQgaXMgQVNDSUksIGFzIHRoZSBzdGFuZGFyZCAoUkZDIFhYWCkgcmVxdWlyZXMuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGlucHV0X2NoYXJzZXQsIHN0cik6CiAgICAgICAgICAgICAgICBpbnB1dF9jaGFyc2V0LmVuY29kZSgnYXNjaWknKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaW5wdXRfY2hhcnNldCA9IHN0cihpbnB1dF9jaGFyc2V0LCAnYXNjaWknKQogICAgICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIGVycm9ycy5DaGFyc2V0RXJyb3IoaW5wdXRfY2hhcnNldCkKICAgICAgICBpbnB1dF9jaGFyc2V0ID0gaW5wdXRfY2hhcnNldC5sb3dlcigpCiAgICAgICAgIyBTZXQgdGhlIGlucHV0IGNoYXJzZXQgYWZ0ZXIgZmlsdGVyaW5nIHRocm91Z2ggdGhlIGFsaWFzZXMKICAgICAgICBzZWxmLmlucHV0X2NoYXJzZXQgPSBBTElBU0VTLmdldChpbnB1dF9jaGFyc2V0LCBpbnB1dF9jaGFyc2V0KQogICAgICAgICMgV2UgY2FuIHRyeSB0byBndWVzcyB3aGljaCBlbmNvZGluZyBhbmQgY29udmVyc2lvbiB0byB1c2UgYnkgdGhlCiAgICAgICAgIyBjaGFyc2V0X21hcCBkaWN0aW9uYXJ5LiAgVHJ5IHRoYXQgZmlyc3QsIGJ1dCBsZXQgdGhlIHVzZXIgb3ZlcnJpZGUKICAgICAgICAjIGl0LgogICAgICAgIGhlbmMsIGJlbmMsIGNvbnYgPSBDSEFSU0VUUy5nZXQoc2VsZi5pbnB1dF9jaGFyc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNIT1JURVNULCBCQVNFNjQsIE5vbmUpKQogICAgICAgIGlmIG5vdCBjb252OgogICAgICAgICAgICBjb252ID0gc2VsZi5pbnB1dF9jaGFyc2V0CiAgICAgICAgIyBTZXQgdGhlIGF0dHJpYnV0ZXMsIGFsbG93aW5nIHRoZSBhcmd1bWVudHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQuCiAgICAgICAgc2VsZi5oZWFkZXJfZW5jb2RpbmcgPSBoZW5jCiAgICAgICAgc2VsZi5ib2R5X2VuY29kaW5nID0gYmVuYwogICAgICAgIHNlbGYub3V0cHV0X2NoYXJzZXQgPSBBTElBU0VTLmdldChjb252LCBjb252KQogICAgICAgICMgTm93IHNldCB0aGUgY29kZWNzLiAgSWYgb25lIGlzbid0IGRlZmluZWQgZm9yIGlucHV0X2NoYXJzZXQsCiAgICAgICAgIyBndWVzcyBhbmQgdHJ5IGEgVW5pY29kZSBjb2RlYyB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgaW5wdXRfY29kZWMuCiAgICAgICAgc2VsZi5pbnB1dF9jb2RlYyA9IENPREVDX01BUC5nZXQoc2VsZi5pbnB1dF9jaGFyc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5wdXRfY2hhcnNldCkKICAgICAgICBzZWxmLm91dHB1dF9jb2RlYyA9IENPREVDX01BUC5nZXQoc2VsZi5vdXRwdXRfY2hhcnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdXRwdXRfY2hhcnNldCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuaW5wdXRfY2hhcnNldC5sb3dlcigpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIHN0cihzZWxmKSA9PSBzdHIob3RoZXIpLmxvd2VyKCkKCiAgICBkZWYgZ2V0X2JvZHlfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIHVzZWQgZm9yIGJvZHkgZW5jb2RpbmcuCgogICAgICAgIFRoaXMgaXMgZWl0aGVyIHRoZSBzdHJpbmcgYHF1b3RlZC1wcmludGFibGUnIG9yIGBiYXNlNjQnIGRlcGVuZGluZyBvbgogICAgICAgIHRoZSBlbmNvZGluZyB1c2VkLCBvciBpdCBpcyBhIGZ1bmN0aW9uIGluIHdoaWNoIGNhc2UgeW91IHNob3VsZCBjYWxsCiAgICAgICAgdGhlIGZ1bmN0aW9uIHdpdGggYSBzaW5nbGUgYXJndW1lbnQsIHRoZSBNZXNzYWdlIG9iamVjdCBiZWluZwogICAgICAgIGVuY29kZWQuICBUaGUgZnVuY3Rpb24gc2hvdWxkIHRoZW4gc2V0IHRoZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nCiAgICAgICAgaGVhZGVyIGl0c2VsZiB0byB3aGF0ZXZlciBpcyBhcHByb3ByaWF0ZS4KCiAgICAgICAgUmV0dXJucyAicXVvdGVkLXByaW50YWJsZSIgaWYgc2VsZi5ib2R5X2VuY29kaW5nIGlzIFFQLgogICAgICAgIFJldHVybnMgImJhc2U2NCIgaWYgc2VsZi5ib2R5X2VuY29kaW5nIGlzIEJBU0U2NC4KICAgICAgICBSZXR1cm5zIGNvbnZlcnNpb24gZnVuY3Rpb24gb3RoZXJ3aXNlLgogICAgICAgICIiIgogICAgICAgIGFzc2VydCBzZWxmLmJvZHlfZW5jb2RpbmcgIT0gU0hPUlRFU1QKICAgICAgICBpZiBzZWxmLmJvZHlfZW5jb2RpbmcgPT0gUVA6CiAgICAgICAgICAgIHJldHVybiAncXVvdGVkLXByaW50YWJsZScKICAgICAgICBlbGlmIHNlbGYuYm9keV9lbmNvZGluZyA9PSBCQVNFNjQ6CiAgICAgICAgICAgIHJldHVybiAnYmFzZTY0JwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBlbmNvZGVfN29yOGJpdAoKICAgIGRlZiBnZXRfb3V0cHV0X2NoYXJzZXQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBvdXRwdXQgY2hhcmFjdGVyIHNldC4KCiAgICAgICAgVGhpcyBpcyBzZWxmLm91dHB1dF9jaGFyc2V0IGlmIHRoYXQgaXMgbm90IE5vbmUsIG90aGVyd2lzZSBpdCBpcwogICAgICAgIHNlbGYuaW5wdXRfY2hhcnNldC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXRfY2hhcnNldCBvciBzZWxmLmlucHV0X2NoYXJzZXQKCiAgICBkZWYgaGVhZGVyX2VuY29kZShzZWxmLCBzdHJpbmcpOgogICAgICAgICIiIkhlYWRlci1lbmNvZGUgYSBzdHJpbmcgYnkgY29udmVydGluZyBpdCBmaXJzdCB0byBieXRlcy4KCiAgICAgICAgVGhlIHR5cGUgb2YgZW5jb2RpbmcgKGJhc2U2NCBvciBxdW90ZWQtcHJpbnRhYmxlKSB3aWxsIGJlIGJhc2VkIG9uCiAgICAgICAgdGhpcyBjaGFyc2V0J3MgYGhlYWRlcl9lbmNvZGluZ2AuCgogICAgICAgIDpwYXJhbSBzdHJpbmc6IEEgdW5pY29kZSBzdHJpbmcgZm9yIHRoZSBoZWFkZXIuICBJdCBtdXN0IGJlIHBvc3NpYmxlCiAgICAgICAgICAgIHRvIGVuY29kZSB0aGlzIHN0cmluZyB0byBieXRlcyB1c2luZyB0aGUgY2hhcmFjdGVyIHNldCdzCiAgICAgICAgICAgIG91dHB1dCBjb2RlYy4KICAgICAgICA6cmV0dXJuOiBUaGUgZW5jb2RlZCBzdHJpbmcsIHdpdGggUkZDIDIwNDcgY2hyb21lLgogICAgICAgICIiIgogICAgICAgIGNvZGVjID0gc2VsZi5vdXRwdXRfY29kZWMgb3IgJ3VzLWFzY2lpJwogICAgICAgIGhlYWRlcl9ieXRlcyA9IF9lbmNvZGUoc3RyaW5nLCBjb2RlYykKICAgICAgICAjIDdiaXQvOGJpdCBlbmNvZGluZ3MgcmV0dXJuIHRoZSBzdHJpbmcgdW5jaGFuZ2VkIChtb2R1bG8gY29udmVyc2lvbnMpCiAgICAgICAgZW5jb2Rlcl9tb2R1bGUgPSBzZWxmLl9nZXRfZW5jb2RlcihoZWFkZXJfYnl0ZXMpCiAgICAgICAgaWYgZW5jb2Rlcl9tb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHN0cmluZwogICAgICAgIHJldHVybiBlbmNvZGVyX21vZHVsZS5oZWFkZXJfZW5jb2RlKGhlYWRlcl9ieXRlcywgY29kZWMpCgogICAgZGVmIGhlYWRlcl9lbmNvZGVfbGluZXMoc2VsZiwgc3RyaW5nLCBtYXhsZW5ndGhzKToKICAgICAgICAiIiJIZWFkZXItZW5jb2RlIGEgc3RyaW5nIGJ5IGNvbnZlcnRpbmcgaXQgZmlyc3QgdG8gYnl0ZXMuCgogICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBgaGVhZGVyX2VuY29kZSgpYCBleGNlcHQgdGhhdCB0aGUgc3RyaW5nIGlzIGZpdAogICAgICAgIGludG8gbWF4aW11bSBsaW5lIGxlbmd0aHMgYXMgZ2l2ZW4gYnkgdGhlIGFyZ3VtZW50LgoKICAgICAgICA6cGFyYW0gc3RyaW5nOiBBIHVuaWNvZGUgc3RyaW5nIGZvciB0aGUgaGVhZGVyLiAgSXQgbXVzdCBiZSBwb3NzaWJsZQogICAgICAgICAgICB0byBlbmNvZGUgdGhpcyBzdHJpbmcgdG8gYnl0ZXMgdXNpbmcgdGhlIGNoYXJhY3RlciBzZXQncwogICAgICAgICAgICBvdXRwdXQgY29kZWMuCiAgICAgICAgOnBhcmFtIG1heGxlbmd0aHM6IE1heGltdW0gbGluZSBsZW5ndGggaXRlcmF0b3IuICBFYWNoIGVsZW1lbnQKICAgICAgICAgICAgcmV0dXJuZWQgZnJvbSB0aGlzIGl0ZXJhdG9yIHdpbGwgcHJvdmlkZSB0aGUgbmV4dCBtYXhpbXVtIGxpbmUKICAgICAgICAgICAgbGVuZ3RoLiAgVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBidWlsdC1pbiBuZXh0KCkKICAgICAgICAgICAgYW5kIHNob3VsZCBuZXZlciBiZSBleGhhdXN0ZWQuICBUaGUgbWF4aW11bSBsaW5lIGxlbmd0aHMgc2hvdWxkCiAgICAgICAgICAgIG5vdCBjb3VudCB0aGUgUkZDIDIwNDcgY2hyb21lLiAgVGhlc2UgbGluZSBsZW5ndGhzIGFyZSBvbmx5IGEKICAgICAgICAgICAgaGludDsgdGhlIHNwbGl0dGVyIGRvZXMgdGhlIGJlc3QgaXQgY2FuLgogICAgICAgIDpyZXR1cm46IExpbmVzIG9mIGVuY29kZWQgc3RyaW5ncywgZWFjaCB3aXRoIFJGQyAyMDQ3IGNocm9tZS4KICAgICAgICAiIiIKICAgICAgICAjIFNlZSB3aGljaCBlbmNvZGluZyB3ZSBzaG91bGQgdXNlLgogICAgICAgIGNvZGVjID0gc2VsZi5vdXRwdXRfY29kZWMgb3IgJ3VzLWFzY2lpJwogICAgICAgIGhlYWRlcl9ieXRlcyA9IF9lbmNvZGUoc3RyaW5nLCBjb2RlYykKICAgICAgICBlbmNvZGVyX21vZHVsZSA9IHNlbGYuX2dldF9lbmNvZGVyKGhlYWRlcl9ieXRlcykKICAgICAgICBlbmNvZGVyID0gcGFydGlhbChlbmNvZGVyX21vZHVsZS5oZWFkZXJfZW5jb2RlLCBjaGFyc2V0PWNvZGVjKQogICAgICAgICMgQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHRoZSBSRkMgMjA0NyBjaHJvbWUgd2lsbAogICAgICAgICMgY29udHJpYnV0ZSB0byBlYWNoIGxpbmUuCiAgICAgICAgY2hhcnNldCA9IHNlbGYuZ2V0X291dHB1dF9jaGFyc2V0KCkKICAgICAgICBleHRyYSA9IGxlbihjaGFyc2V0KSArIFJGQzIwNDdfQ0hST01FX0xFTgogICAgICAgICMgTm93IGNvbWVzIHRoZSBoYXJkIHBhcnQuICBXZSBtdXN0IGVuY29kZSBieXRlcyBidXQgd2UgY2FuJ3Qgc3BsaXQgb24KICAgICAgICAjIGJ5dGVzIGJlY2F1c2Ugc29tZSBjaGFyYWN0ZXIgc2V0cyBhcmUgdmFyaWFibGUgbGVuZ3RoIGFuZCBlYWNoCiAgICAgICAgIyBlbmNvZGVkIHdvcmQgbXVzdCBzdGFuZCBvbiBpdHMgb3duLiAgU28gdGhlIHByb2JsZW0gaXMgeW91IGhhdmUgdG8KICAgICAgICAjIGVuY29kZSB0byBieXRlcyB0byBmaWd1cmUgb3V0IHRoaXMgd29yZCdzIGxlbmd0aCwgYnV0IHlvdSBtdXN0IHNwbGl0CiAgICAgICAgIyBvbiBjaGFyYWN0ZXJzLiAgVGhpcyBjYXVzZXMgdHdvIHByb2JsZW1zOiBmaXJzdCwgd2UgZG9uJ3Qga25vdyBob3cKICAgICAgICAjIG1hbnkgb2N0ZXRzIGEgc3BlY2lmaWMgc3Vic3RyaW5nIG9mIHVuaWNvZGUgY2hhcmFjdGVycyB3aWxsIGdldAogICAgICAgICMgZW5jb2RlZCB0bywgYW5kIHNlY29uZCwgd2UgZG9uJ3Qga25vdyBob3cgbWFueSBBU0NJSSBjaGFyYWN0ZXJzCiAgICAgICAgIyB0aG9zZSBvY3RldHMgd2lsbCBnZXQgZW5jb2RlZCB0by4gIFVubGVzcyB3ZSB0cnkgaXQuICBXaGljaCBzZWVtcwogICAgICAgICMgaW5lZmZpY2llbnQuICBJbiB0aGUgaW50ZXJlc3Qgb2YgYmVpbmcgY29ycmVjdCByYXRoZXIgdGhhbiBmYXN0IChhbmQKICAgICAgICAjIGluIHRoZSBob3BlIHRoYXQgdGhlcmUgd2lsbCBiZSBmZXcgZW5jb2RlZCBoZWFkZXJzIGluIGFueSBzdWNoCiAgICAgICAgIyBtZXNzYWdlKSwgYnJ1dGUgZm9yY2UgaXQuIDooCiAgICAgICAgbGluZXMgPSBbXQogICAgICAgIGN1cnJlbnRfbGluZSA9IFtdCiAgICAgICAgbWF4bGVuID0gbmV4dChtYXhsZW5ndGhzKSAtIGV4dHJhCiAgICAgICAgZm9yIGNoYXJhY3RlciBpbiBzdHJpbmc6CiAgICAgICAgICAgIGN1cnJlbnRfbGluZS5hcHBlbmQoY2hhcmFjdGVyKQogICAgICAgICAgICB0aGlzX2xpbmUgPSBFTVBUWVNUUklORy5qb2luKGN1cnJlbnRfbGluZSkKICAgICAgICAgICAgbGVuZ3RoID0gZW5jb2Rlcl9tb2R1bGUuaGVhZGVyX2xlbmd0aChfZW5jb2RlKHRoaXNfbGluZSwgY2hhcnNldCkpCiAgICAgICAgICAgIGlmIGxlbmd0aCA+IG1heGxlbjoKICAgICAgICAgICAgICAgICMgVGhpcyBsYXN0IGNoYXJhY3RlciBkb2Vzbid0IGZpdCBzbyBwb3AgaXQgb2ZmLgogICAgICAgICAgICAgICAgY3VycmVudF9saW5lLnBvcCgpCiAgICAgICAgICAgICAgICAjIERvZXMgbm90aGluZyBmaXQgb24gdGhlIGZpcnN0IGxpbmU/CiAgICAgICAgICAgICAgICBpZiBub3QgbGluZXMgYW5kIG5vdCBjdXJyZW50X2xpbmU6CiAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKE5vbmUpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9ICgnICcgaWYgbGluZXMgZWxzZSAnJykKICAgICAgICAgICAgICAgICAgICBqb2luZWRfbGluZSA9IEVNUFRZU1RSSU5HLmpvaW4oY3VycmVudF9saW5lKQogICAgICAgICAgICAgICAgICAgIGhlYWRlcl9ieXRlcyA9IF9lbmNvZGUoam9pbmVkX2xpbmUsIGNvZGVjKQogICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChlbmNvZGVyKGhlYWRlcl9ieXRlcykpCiAgICAgICAgICAgICAgICBjdXJyZW50X2xpbmUgPSBbY2hhcmFjdGVyXQogICAgICAgICAgICAgICAgbWF4bGVuID0gbmV4dChtYXhsZW5ndGhzKSAtIGV4dHJhCiAgICAgICAgam9pbmVkX2xpbmUgPSBFTVBUWVNUUklORy5qb2luKGN1cnJlbnRfbGluZSkKICAgICAgICBoZWFkZXJfYnl0ZXMgPSBfZW5jb2RlKGpvaW5lZF9saW5lLCBjb2RlYykKICAgICAgICBsaW5lcy5hcHBlbmQoZW5jb2RlcihoZWFkZXJfYnl0ZXMpKQogICAgICAgIHJldHVybiBsaW5lcwoKICAgIGRlZiBfZ2V0X2VuY29kZXIoc2VsZiwgaGVhZGVyX2J5dGVzKToKICAgICAgICBpZiBzZWxmLmhlYWRlcl9lbmNvZGluZyA9PSBCQVNFNjQ6CiAgICAgICAgICAgIHJldHVybiBlbWFpbC5iYXNlNjRtaW1lCiAgICAgICAgZWxpZiBzZWxmLmhlYWRlcl9lbmNvZGluZyA9PSBRUDoKICAgICAgICAgICAgcmV0dXJuIGVtYWlsLnF1b3ByaW1pbWUKICAgICAgICBlbGlmIHNlbGYuaGVhZGVyX2VuY29kaW5nID09IFNIT1JURVNUOgogICAgICAgICAgICBsZW42NCA9IGVtYWlsLmJhc2U2NG1pbWUuaGVhZGVyX2xlbmd0aChoZWFkZXJfYnl0ZXMpCiAgICAgICAgICAgIGxlbnFwID0gZW1haWwucXVvcHJpbWltZS5oZWFkZXJfbGVuZ3RoKGhlYWRlcl9ieXRlcykKICAgICAgICAgICAgaWYgbGVuNjQgPCBsZW5xcDoKICAgICAgICAgICAgICAgIHJldHVybiBlbWFpbC5iYXNlNjRtaW1lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gZW1haWwucXVvcHJpbWltZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGJvZHlfZW5jb2RlKHNlbGYsIHN0cmluZyk6CiAgICAgICAgIiIiQm9keS1lbmNvZGUgYSBzdHJpbmcgYnkgY29udmVydGluZyBpdCBmaXJzdCB0byBieXRlcy4KCiAgICAgICAgVGhlIHR5cGUgb2YgZW5jb2RpbmcgKGJhc2U2NCBvciBxdW90ZWQtcHJpbnRhYmxlKSB3aWxsIGJlIGJhc2VkIG9uCiAgICAgICAgc2VsZi5ib2R5X2VuY29kaW5nLiAgSWYgYm9keV9lbmNvZGluZyBpcyBOb25lLCB3ZSBhc3N1bWUgdGhlCiAgICAgICAgb3V0cHV0IGNoYXJzZXQgaXMgYSA3Yml0IGVuY29kaW5nLCBzbyByZS1lbmNvZGluZyB0aGUgZGVjb2RlZAogICAgICAgIHN0cmluZyB1c2luZyB0aGUgYXNjaWkgY29kZWMgcHJvZHVjZXMgdGhlIGNvcnJlY3Qgc3RyaW5nIHZlcnNpb24KICAgICAgICBvZiB0aGUgY29udGVudC4KICAgICAgICAiIiIKICAgICAgICBpZiBub3Qgc3RyaW5nOgogICAgICAgICAgICByZXR1cm4gc3RyaW5nCiAgICAgICAgaWYgc2VsZi5ib2R5X2VuY29kaW5nIGlzIEJBU0U2NDoKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIHN0cik6CiAgICAgICAgICAgICAgICBzdHJpbmcgPSBzdHJpbmcuZW5jb2RlKHNlbGYub3V0cHV0X2NoYXJzZXQpCiAgICAgICAgICAgIHJldHVybiBlbWFpbC5iYXNlNjRtaW1lLmJvZHlfZW5jb2RlKHN0cmluZykKICAgICAgICBlbGlmIHNlbGYuYm9keV9lbmNvZGluZyBpcyBRUDoKICAgICAgICAgICAgIyBxdW9wcm9taW1lLmJvZHlfZW5jb2RlIHRha2VzIGEgc3RyaW5nLCBidXQgb3BlcmF0ZXMgb24gaXQgYXMgaWYKICAgICAgICAgICAgIyBpdCB3ZXJlIGEgbGlzdCBvZiBieXRlIGNvZGVzLiAgRm9yIGEgKG1pbmltYWwpIGhpc3Rvcnkgb24gd2h5CiAgICAgICAgICAgICMgdGhpcyBpcyBzbywgc2VlIGNoYW5nZXNldCAwY2Y3MDA0NjQxNzcuICBUbyBjb3JyZWN0bHkgZW5jb2RlIGEKICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0LCB0aGVuLCB3ZSBtdXN0IHR1cm4gaXQgaW50byBwc2V1ZG8gYnl0ZXMgdmlhIHRoZQogICAgICAgICAgICAjIGxhdGluMSBjaGFyc2V0LCB3aGljaCB3aWxsIGVuY29kZSBhbnkgYnl0ZSBhcyBhIHNpbmdsZSBjb2RlIHBvaW50CiAgICAgICAgICAgICMgYmV0d2VlbiAwIGFuZCAyNTUsIHdoaWNoIGlzIHdoYXQgYm9keV9lbmNvZGUgaXMgZXhwZWN0aW5nLgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHN0cmluZywgc3RyKToKICAgICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5lbmNvZGUoc2VsZi5vdXRwdXRfY2hhcnNldCkKICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLmRlY29kZSgnbGF0aW4xJykKICAgICAgICAgICAgcmV0dXJuIGVtYWlsLnF1b3ByaW1pbWUuYm9keV9lbmNvZGUoc3RyaW5nKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpOgogICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLmVuY29kZShzZWxmLm91dHB1dF9jaGFyc2V0KS5kZWNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgcmV0dXJuIHN0cmluZwpQSwMEFAAAAAAAAiCjVqaWxABcKQAAXCkAABcAAABlbWFpbC9jb250ZW50bWFuYWdlci5weWltcG9ydCBiaW5hc2NpaQppbXBvcnQgZW1haWwuY2hhcnNldAppbXBvcnQgZW1haWwubWVzc2FnZQppbXBvcnQgZW1haWwuZXJyb3JzCmZyb20gZW1haWwgaW1wb3J0IHF1b3ByaW1pbWUKCmNsYXNzIENvbnRlbnRNYW5hZ2VyOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLmdldF9oYW5kbGVycyA9IHt9CiAgICAgICAgc2VsZi5zZXRfaGFuZGxlcnMgPSB7fQoKICAgIGRlZiBhZGRfZ2V0X2hhbmRsZXIoc2VsZiwga2V5LCBoYW5kbGVyKToKICAgICAgICBzZWxmLmdldF9oYW5kbGVyc1trZXldID0gaGFuZGxlcgoKICAgIGRlZiBnZXRfY29udGVudChzZWxmLCBtc2csICphcmdzLCAqKmt3KToKICAgICAgICBjb250ZW50X3R5cGUgPSBtc2cuZ2V0X2NvbnRlbnRfdHlwZSgpCiAgICAgICAgaWYgY29udGVudF90eXBlIGluIHNlbGYuZ2V0X2hhbmRsZXJzOgogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfaGFuZGxlcnNbY29udGVudF90eXBlXShtc2csICphcmdzLCAqKmt3KQogICAgICAgIG1haW50eXBlID0gbXNnLmdldF9jb250ZW50X21haW50eXBlKCkKICAgICAgICBpZiBtYWludHlwZSBpbiBzZWxmLmdldF9oYW5kbGVyczoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2hhbmRsZXJzW21haW50eXBlXShtc2csICphcmdzLCAqKmt3KQogICAgICAgIGlmICcnIGluIHNlbGYuZ2V0X2hhbmRsZXJzOgogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfaGFuZGxlcnNbJyddKG1zZywgKmFyZ3MsICoqa3cpCiAgICAgICAgcmFpc2UgS2V5RXJyb3IoY29udGVudF90eXBlKQoKICAgIGRlZiBhZGRfc2V0X2hhbmRsZXIoc2VsZiwgdHlwZWtleSwgaGFuZGxlcik6CiAgICAgICAgc2VsZi5zZXRfaGFuZGxlcnNbdHlwZWtleV0gPSBoYW5kbGVyCgogICAgZGVmIHNldF9jb250ZW50KHNlbGYsIG1zZywgb2JqLCAqYXJncywgKiprdyk6CiAgICAgICAgaWYgbXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCc6CiAgICAgICAgICAgICMgWFhYOiBpcyB0aGlzIGVycm9yIGEgZ29vZCBpZGVhIG9yIG5vdD8gIFdlIGNhbiByZW1vdmUgaXQgbGF0ZXIsCiAgICAgICAgICAgICMgYnV0IHdlIGNhbid0IGFkZCBpdCBsYXRlciwgc28gZG8gaXQgZm9yIG5vdy4KICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJzZXRfY29udGVudCBub3QgdmFsaWQgb24gbXVsdGlwYXJ0IikKICAgICAgICBoYW5kbGVyID0gc2VsZi5fZmluZF9zZXRfaGFuZGxlcihtc2csIG9iaikKICAgICAgICBtc2cuY2xlYXJfY29udGVudCgpCiAgICAgICAgaGFuZGxlcihtc2csIG9iaiwgKmFyZ3MsICoqa3cpCgogICAgZGVmIF9maW5kX3NldF9oYW5kbGVyKHNlbGYsIG1zZywgb2JqKToKICAgICAgICBmdWxsX3BhdGhfZm9yX2Vycm9yID0gTm9uZQogICAgICAgIGZvciB0eXAgaW4gdHlwZShvYmopLl9fbXJvX186CiAgICAgICAgICAgIGlmIHR5cCBpbiBzZWxmLnNldF9oYW5kbGVyczoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNldF9oYW5kbGVyc1t0eXBdCiAgICAgICAgICAgIHFuYW1lID0gdHlwLl9fcXVhbG5hbWVfXwogICAgICAgICAgICBtb2RuYW1lID0gZ2V0YXR0cih0eXAsICdfX21vZHVsZV9fJywgJycpCiAgICAgICAgICAgIGZ1bGxfcGF0aCA9ICcuJy5qb2luKChtb2RuYW1lLCBxbmFtZSkpIGlmIG1vZG5hbWUgZWxzZSBxbmFtZQogICAgICAgICAgICBpZiBmdWxsX3BhdGhfZm9yX2Vycm9yIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBmdWxsX3BhdGhfZm9yX2Vycm9yID0gZnVsbF9wYXRoCiAgICAgICAgICAgIGlmIGZ1bGxfcGF0aCBpbiBzZWxmLnNldF9oYW5kbGVyczoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNldF9oYW5kbGVyc1tmdWxsX3BhdGhdCiAgICAgICAgICAgIGlmIHFuYW1lIGluIHNlbGYuc2V0X2hhbmRsZXJzOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2hhbmRsZXJzW3FuYW1lXQogICAgICAgICAgICBuYW1lID0gdHlwLl9fbmFtZV9fCiAgICAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5zZXRfaGFuZGxlcnM6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zZXRfaGFuZGxlcnNbbmFtZV0KICAgICAgICBpZiBOb25lIGluIHNlbGYuc2V0X2hhbmRsZXJzOgogICAgICAgICAgICByZXR1cm4gc2VsZi5zZXRfaGFuZGxlcnNbTm9uZV0KICAgICAgICByYWlzZSBLZXlFcnJvcihmdWxsX3BhdGhfZm9yX2Vycm9yKQoKCnJhd19kYXRhX21hbmFnZXIgPSBDb250ZW50TWFuYWdlcigpCgoKZGVmIGdldF90ZXh0X2NvbnRlbnQobXNnLCBlcnJvcnM9J3JlcGxhY2UnKToKICAgIGNvbnRlbnQgPSBtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpCiAgICBjaGFyc2V0ID0gbXNnLmdldF9wYXJhbSgnY2hhcnNldCcsICdBU0NJSScpCiAgICByZXR1cm4gY29udGVudC5kZWNvZGUoY2hhcnNldCwgZXJyb3JzPWVycm9ycykKcmF3X2RhdGFfbWFuYWdlci5hZGRfZ2V0X2hhbmRsZXIoJ3RleHQnLCBnZXRfdGV4dF9jb250ZW50KQoKCmRlZiBnZXRfbm9uX3RleHRfY29udGVudChtc2cpOgogICAgcmV0dXJuIG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSkKZm9yIG1haW50eXBlIGluICdhdWRpbyBpbWFnZSB2aWRlbyBhcHBsaWNhdGlvbicuc3BsaXQoKToKICAgIHJhd19kYXRhX21hbmFnZXIuYWRkX2dldF9oYW5kbGVyKG1haW50eXBlLCBnZXRfbm9uX3RleHRfY29udGVudCkKZGVsIG1haW50eXBlCgoKZGVmIGdldF9tZXNzYWdlX2NvbnRlbnQobXNnKToKICAgIHJldHVybiBtc2cuZ2V0X3BheWxvYWQoMCkKZm9yIHN1YnR5cGUgaW4gJ3JmYzgyMiBleHRlcm5hbC1ib2R5Jy5zcGxpdCgpOgogICAgcmF3X2RhdGFfbWFuYWdlci5hZGRfZ2V0X2hhbmRsZXIoJ21lc3NhZ2UvJytzdWJ0eXBlLCBnZXRfbWVzc2FnZV9jb250ZW50KQpkZWwgc3VidHlwZQoKCmRlZiBnZXRfYW5kX2ZpeHVwX3Vua25vd25fbWVzc2FnZV9jb250ZW50KG1zZyk6CiAgICAjIElmIHdlIGRvbid0IHVuZGVyc3RhbmQgYSBtZXNzYWdlIHN1YnR5cGUsIHdlIGFyZSBzdXBwb3NlZCB0byB0cmVhdCBpdCBhcwogICAgIyBpZiBpdCB3ZXJlIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSwgcGVyCiAgICAjIHRvb2xzLmlldGYub3JnL2h0bWwvcmZjMjA0NiNzZWN0aW9uLTUuMi40LiAgRmVlZHBhcnNlciBkb2Vzbid0IGRvIHRoYXQsCiAgICAjIHNvIGRvIG91ciBiZXN0IHRvIGZpeCB0aGluZ3MgdXAuICBOb3RlIHRoYXQgaXQgaXMgKm5vdCogYXBwcm9wcmlhdGUgdG8KICAgICMgbW9kZWwgbWVzc2FnZS9wYXJ0aWFsIGNvbnRlbnQgYXMgTWVzc2FnZSBvYmplY3RzLCBzbyB0aGV5IGFyZSBoYW5kbGVkCiAgICAjIGhlcmUgYXMgd2VsbC4gIChIb3cgdG8gcmVhc3NlbWJsZSB0aGVtIGlzIG91dCBvZiBzY29wZSBmb3IgdGhpcyBjb21tZW50IDopCiAgICByZXR1cm4gYnl0ZXMobXNnLmdldF9wYXlsb2FkKDApKQpyYXdfZGF0YV9tYW5hZ2VyLmFkZF9nZXRfaGFuZGxlcignbWVzc2FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9hbmRfZml4dXBfdW5rbm93bl9tZXNzYWdlX2NvbnRlbnQpCgoKZGVmIF9wcmVwYXJlX3NldChtc2csIG1haW50eXBlLCBzdWJ0eXBlLCBoZWFkZXJzKToKICAgIG1zZ1snQ29udGVudC1UeXBlJ10gPSAnLycuam9pbigobWFpbnR5cGUsIHN1YnR5cGUpKQogICAgaWYgaGVhZGVyczoKICAgICAgICBpZiBub3QgaGFzYXR0cihoZWFkZXJzWzBdLCAnbmFtZScpOgogICAgICAgICAgICBtcCA9IG1zZy5wb2xpY3kKICAgICAgICAgICAgaGVhZGVycyA9IFttcC5oZWFkZXJfZmFjdG9yeSgqbXAuaGVhZGVyX3NvdXJjZV9wYXJzZShbaGVhZGVyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGhlYWRlciBpbiBoZWFkZXJzXQogICAgICAgIHRyeToKICAgICAgICAgICAgZm9yIGhlYWRlciBpbiBoZWFkZXJzOgogICAgICAgICAgICAgICAgaWYgaGVhZGVyLmRlZmVjdHM6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgaGVhZGVyLmRlZmVjdHNbMF0KICAgICAgICAgICAgICAgIG1zZ1toZWFkZXIubmFtZV0gPSBoZWFkZXIKICAgICAgICBleGNlcHQgZW1haWwuZXJyb3JzLkhlYWRlckRlZmVjdCBhcyBleGM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgaGVhZGVyOiB7fSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5mb2xkKHBvbGljeT1tc2cucG9saWN5KSkpIGZyb20gZXhjCgoKZGVmIF9maW5hbGl6ZV9zZXQobXNnLCBkaXNwb3NpdGlvbiwgZmlsZW5hbWUsIGNpZCwgcGFyYW1zKToKICAgIGlmIGRpc3Bvc2l0aW9uIGlzIE5vbmUgYW5kIGZpbGVuYW1lIGlzIG5vdCBOb25lOgogICAgICAgIGRpc3Bvc2l0aW9uID0gJ2F0dGFjaG1lbnQnCiAgICBpZiBkaXNwb3NpdGlvbiBpcyBub3QgTm9uZToKICAgICAgICBtc2dbJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSA9IGRpc3Bvc2l0aW9uCiAgICBpZiBmaWxlbmFtZSBpcyBub3QgTm9uZToKICAgICAgICBtc2cuc2V0X3BhcmFtKCdmaWxlbmFtZScsCiAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcj0nQ29udGVudC1EaXNwb3NpdGlvbicsCiAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlPVRydWUpCiAgICBpZiBjaWQgaXMgbm90IE5vbmU6CiAgICAgICAgbXNnWydDb250ZW50LUlEJ10gPSBjaWQKICAgIGlmIHBhcmFtcyBpcyBub3QgTm9uZToKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJhbXMuaXRlbXMoKToKICAgICAgICAgICAgbXNnLnNldF9wYXJhbShrZXksIHZhbHVlKQoKCiMgWFhYOiBUaGlzIGlzIGEgY2xlYW5lZC11cCB2ZXJzaW9uIG9mIGJhc2U2NG1pbWUuYm9keV9lbmNvZGUgKGluY2x1ZGluZyBhIGJ1ZwojIGZpeCBpbiB0aGUgY2FsY3VsYXRpb24gb2YgdW5lbmNvZGVkX2J5dGVzX3Blcl9saW5lKS4gIEl0IHdvdWxkIGJlIG5pY2UgdG8KIyBkcm9wIGJvdGggdGhpcyBhbmQgcXVvcHJpbWltZS5ib2R5X2VuY29kZSBpbiBmYXZvciBvZiBlbmhhbmNlZCBiaW5hc2NpaQojIHJvdXRpbmVzIHRoYXQgYWNjZXB0ZWQgYSBtYXhfbGluZV9sZW5ndGggcGFyYW1ldGVyLgpkZWYgX2VuY29kZV9iYXNlNjQoZGF0YSwgbWF4X2xpbmVfbGVuZ3RoKToKICAgIGVuY29kZWRfbGluZXMgPSBbXQogICAgdW5lbmNvZGVkX2J5dGVzX3Blcl9saW5lID0gbWF4X2xpbmVfbGVuZ3RoIC8vIDQgKiAzCiAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZGF0YSksIHVuZW5jb2RlZF9ieXRlc19wZXJfbGluZSk6CiAgICAgICAgdGhpc2xpbmUgPSBkYXRhW2k6aSt1bmVuY29kZWRfYnl0ZXNfcGVyX2xpbmVdCiAgICAgICAgZW5jb2RlZF9saW5lcy5hcHBlbmQoYmluYXNjaWkuYjJhX2Jhc2U2NCh0aGlzbGluZSkuZGVjb2RlKCdhc2NpaScpKQogICAgcmV0dXJuICcnLmpvaW4oZW5jb2RlZF9saW5lcykKCgpkZWYgX2VuY29kZV90ZXh0KHN0cmluZywgY2hhcnNldCwgY3RlLCBwb2xpY3kpOgogICAgbGluZXMgPSBzdHJpbmcuZW5jb2RlKGNoYXJzZXQpLnNwbGl0bGluZXMoKQogICAgbGluZXNlcCA9IHBvbGljeS5saW5lc2VwLmVuY29kZSgnYXNjaWknKQogICAgZGVmIGVtYmVkZGVkX2JvZHkobGluZXMpOiByZXR1cm4gbGluZXNlcC5qb2luKGxpbmVzKSArIGxpbmVzZXAKICAgIGRlZiBub3JtYWxfYm9keShsaW5lcyk6IHJldHVybiBiJ1xuJy5qb2luKGxpbmVzKSArIGInXG4nCiAgICBpZiBjdGUgaXMgTm9uZToKICAgICAgICAjIFVzZSBoZXVyaXN0aWNzIHRvIGRlY2lkZSBvbiB0aGUgImJlc3QiIGVuY29kaW5nLgogICAgICAgIGlmIG1heCgobGVuKHgpIGZvciB4IGluIGxpbmVzKSwgZGVmYXVsdD0wKSA8PSBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gJzdiaXQnLCBub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdhc2NpaScpCiAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGlmIHBvbGljeS5jdGVfdHlwZSA9PSAnOGJpdCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJzhiaXQnLCBub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgIHNuaWZmID0gZW1iZWRkZWRfYm9keShsaW5lc1s6MTBdKQogICAgICAgIHNuaWZmX3FwID0gcXVvcHJpbWltZS5ib2R5X2VuY29kZShzbmlmZi5kZWNvZGUoJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKICAgICAgICBzbmlmZl9iYXNlNjQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHNuaWZmKQogICAgICAgICMgVGhpcyBpcyBhIGxpdHRsZSB1bmZhaXIgdG8gcXA7IGl0IGluY2x1ZGVzIGxpbmVzZXBzLCBiYXNlNjQgZG9lc24ndC4KICAgICAgICBpZiBsZW4oc25pZmZfcXApID4gbGVuKHNuaWZmX2Jhc2U2NCk6CiAgICAgICAgICAgIGN0ZSA9ICdiYXNlNjQnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY3RlID0gJ3F1b3RlZC1wcmludGFibGUnCiAgICAgICAgICAgIGlmIGxlbihsaW5lcykgPD0gMTA6CiAgICAgICAgICAgICAgICByZXR1cm4gY3RlLCBzbmlmZl9xcAogICAgaWYgY3RlID09ICc3Yml0JzoKICAgICAgICBkYXRhID0gbm9ybWFsX2JvZHkobGluZXMpLmRlY29kZSgnYXNjaWknKQogICAgZWxpZiBjdGUgPT0gJzhiaXQnOgogICAgICAgIGRhdGEgPSBub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgZWxpZiBjdGUgPT0gJ3F1b3RlZC1wcmludGFibGUnOgogICAgICAgIGRhdGEgPSBxdW9wcmltaW1lLmJvZHlfZW5jb2RlKG5vcm1hbF9ib2R5KGxpbmVzKS5kZWNvZGUoJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgZWxpZiBjdGUgPT0gJ2Jhc2U2NCc6CiAgICAgICAgZGF0YSA9IF9lbmNvZGVfYmFzZTY0KGVtYmVkZGVkX2JvZHkobGluZXMpLCBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgZWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmtub3duIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2Rpbmcge30iLmZvcm1hdChjdGUpKQogICAgcmV0dXJuIGN0ZSwgZGF0YQoKCmRlZiBzZXRfdGV4dF9jb250ZW50KG1zZywgc3RyaW5nLCBzdWJ0eXBlPSJwbGFpbiIsIGNoYXJzZXQ9J3V0Zi04JywgY3RlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIGRpc3Bvc2l0aW9uPU5vbmUsIGZpbGVuYW1lPU5vbmUsIGNpZD1Ob25lLAogICAgICAgICAgICAgICAgICAgICBwYXJhbXM9Tm9uZSwgaGVhZGVycz1Ob25lKToKICAgIF9wcmVwYXJlX3NldChtc2csICd0ZXh0Jywgc3VidHlwZSwgaGVhZGVycykKICAgIGN0ZSwgcGF5bG9hZCA9IF9lbmNvZGVfdGV4dChzdHJpbmcsIGNoYXJzZXQsIGN0ZSwgbXNnLnBvbGljeSkKICAgIG1zZy5zZXRfcGF5bG9hZChwYXlsb2FkKQogICAgbXNnLnNldF9wYXJhbSgnY2hhcnNldCcsCiAgICAgICAgICAgICAgICAgIGVtYWlsLmNoYXJzZXQuQUxJQVNFUy5nZXQoY2hhcnNldCwgY2hhcnNldCksCiAgICAgICAgICAgICAgICAgIHJlcGxhY2U9VHJ1ZSkKICAgIG1zZ1snQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyddID0gY3RlCiAgICBfZmluYWxpemVfc2V0KG1zZywgZGlzcG9zaXRpb24sIGZpbGVuYW1lLCBjaWQsIHBhcmFtcykKcmF3X2RhdGFfbWFuYWdlci5hZGRfc2V0X2hhbmRsZXIoc3RyLCBzZXRfdGV4dF9jb250ZW50KQoKCmRlZiBzZXRfbWVzc2FnZV9jb250ZW50KG1zZywgbWVzc2FnZSwgc3VidHlwZT0icmZjODIyIiwgY3RlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zPU5vbmUsIGhlYWRlcnM9Tm9uZSk6CiAgICBpZiBzdWJ0eXBlID09ICdwYXJ0aWFsJzoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtZXNzYWdlL3BhcnRpYWwgaXMgbm90IHN1cHBvcnRlZCBmb3IgTWVzc2FnZSBvYmplY3RzIikKICAgIGlmIHN1YnR5cGUgPT0gJ3JmYzgyMic6CiAgICAgICAgaWYgY3RlIG5vdCBpbiAoTm9uZSwgJzdiaXQnLCAnOGJpdCcsICdiaW5hcnknKToKICAgICAgICAgICAgIyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMDQ2I3NlY3Rpb24tNS4yLjEgbWFuZGF0ZS4KICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJtZXNzYWdlL3JmYzgyMiBwYXJ0cyBkbyBub3Qgc3VwcG9ydCBjdGU9e30iLmZvcm1hdChjdGUpKQogICAgICAgICMgOGJpdCB3aWxsIGdldCBjb2VyY2VkIG9uIHNlcmlhbGl6YXRpb24gaWYgcG9saWN5LmN0ZV90eXBlPSc3Yml0Jy4gIFdlCiAgICAgICAgIyBtYXkgZW5kIHVwIGNsYWltaW5nIDhiaXQgd2hlbiBpdCBpc24ndCBuZWVkZWQsIGJ1dCB0aGUgb25seSBuZWdhdGl2ZQogICAgICAgICMgcmVzdWx0IG9mIHRoYXQgc2hvdWxkIGJlIGEgZ2F0ZXdheSB0aGF0IG5lZWRzIHRvIGNvZXJjZSB0byA3Yml0CiAgICAgICAgIyBoYXZpbmcgdG8gbG9vayB0aHJvdWdoIHRoZSB3aG9sZSBlbWJlZGRlZCBtZXNzYWdlIHRvIGRpc2NvdmVyIHdoZXRoZXIKICAgICAgICAjIG9yIG5vdCBpdCBhY3R1YWxseSBoYXMgdG8gZG8gYW55dGhpbmcuCiAgICAgICAgY3RlID0gJzhiaXQnIGlmIGN0ZSBpcyBOb25lIGVsc2UgY3RlCiAgICBlbGlmIHN1YnR5cGUgPT0gJ2V4dGVybmFsLWJvZHknOgogICAgICAgIGlmIGN0ZSBub3QgaW4gKE5vbmUsICc3Yml0Jyk6CiAgICAgICAgICAgICMgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjA0NiNzZWN0aW9uLTUuMi4zIG1hbmRhdGUuCiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAibWVzc2FnZS9leHRlcm5hbC1ib2R5IHBhcnRzIGRvIG5vdCBzdXBwb3J0IGN0ZT17fSIuZm9ybWF0KGN0ZSkpCiAgICAgICAgY3RlID0gJzdiaXQnCiAgICBlbGlmIGN0ZSBpcyBOb25lOgogICAgICAgICMgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjA0NiNzZWN0aW9uLTUuMi40IHNheXMgYWxsIGZ1dHVyZQogICAgICAgICMgc3VidHlwZXMgc2hvdWxkIGJlIHJlc3RyaWN0ZWQgdG8gN2JpdCwgc28gYXNzdW1lIHRoYXQuCiAgICAgICAgY3RlID0gJzdiaXQnCiAgICBfcHJlcGFyZV9zZXQobXNnLCAnbWVzc2FnZScsIHN1YnR5cGUsIGhlYWRlcnMpCiAgICBtc2cuc2V0X3BheWxvYWQoW21lc3NhZ2VdKQogICAgbXNnWydDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nJ10gPSBjdGUKICAgIF9maW5hbGl6ZV9zZXQobXNnLCBkaXNwb3NpdGlvbiwgZmlsZW5hbWUsIGNpZCwgcGFyYW1zKQpyYXdfZGF0YV9tYW5hZ2VyLmFkZF9zZXRfaGFuZGxlcihlbWFpbC5tZXNzYWdlLk1lc3NhZ2UsIHNldF9tZXNzYWdlX2NvbnRlbnQpCgoKZGVmIHNldF9ieXRlc19jb250ZW50KG1zZywgZGF0YSwgbWFpbnR5cGUsIHN1YnR5cGUsIGN0ZT0nYmFzZTY0JywKICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpOgogICAgX3ByZXBhcmVfc2V0KG1zZywgbWFpbnR5cGUsIHN1YnR5cGUsIGhlYWRlcnMpCiAgICBpZiBjdGUgPT0gJ2Jhc2U2NCc6CiAgICAgICAgZGF0YSA9IF9lbmNvZGVfYmFzZTY0KGRhdGEsIG1heF9saW5lX2xlbmd0aD1tc2cucG9saWN5Lm1heF9saW5lX2xlbmd0aCkKICAgIGVsaWYgY3RlID09ICdxdW90ZWQtcHJpbnRhYmxlJzoKICAgICAgICAjIFhYWDogcXVvcHJpbWltZS5ib2R5X2VuY29kZSB3b24ndCBlbmNvZGUgbmV3bGluZSBjaGFyYWN0ZXJzIGluIGRhdGEsCiAgICAgICAgIyBzbyB3ZSBjYW4ndCB1c2UgaXQuICBUaGlzIG1lYW5zIG1heF9saW5lX2xlbmd0aCBpcyBpZ25vcmVkLiAgQW5vdGhlcgogICAgICAgICMgYnVnIHRvIGZpeCBsYXRlci4gIChOb3RlOiBlbmNvZGVycy5xdW9wcmkgaXMgYnJva2VuIG9uIGxpbmUgZW5kcy4pCiAgICAgICAgZGF0YSA9IGJpbmFzY2lpLmIyYV9xcChkYXRhLCBpc3RleHQ9RmFsc2UsIGhlYWRlcj1GYWxzZSwgcXVvdGV0YWJzPVRydWUpCiAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCdhc2NpaScpCiAgICBlbGlmIGN0ZSA9PSAnN2JpdCc6CiAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCdhc2NpaScpCiAgICBlbGlmIGN0ZSBpbiAoJzhiaXQnLCAnYmluYXJ5Jyk6CiAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgbXNnLnNldF9wYXlsb2FkKGRhdGEpCiAgICBtc2dbJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnXSA9IGN0ZQogICAgX2ZpbmFsaXplX3NldChtc2csIGRpc3Bvc2l0aW9uLCBmaWxlbmFtZSwgY2lkLCBwYXJhbXMpCmZvciB0eXAgaW4gKGJ5dGVzLCBieXRlYXJyYXksIG1lbW9yeXZpZXcpOgogICAgcmF3X2RhdGFfbWFuYWdlci5hZGRfc2V0X2hhbmRsZXIodHlwLCBzZXRfYnl0ZXNfY29udGVudCkKZGVsIHR5cApQSwMEFAAAAAAAAiCjVvicDpj6BgAA+gYAABEAAABlbWFpbC9lbmNvZGVycy5weSMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBBdXRob3I6IEJhcnJ5IFdhcnNhdwojIENvbnRhY3Q6IGVtYWlsLXNpZ0BweXRob24ub3JnCgoiIiJFbmNvZGluZ3MgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiIiIgoKX19hbGxfXyA9IFsKICAgICdlbmNvZGVfN29yOGJpdCcsCiAgICAnZW5jb2RlX2Jhc2U2NCcsCiAgICAnZW5jb2RlX25vb3AnLAogICAgJ2VuY29kZV9xdW9wcmknLAogICAgXQoKCmZyb20gYmFzZTY0IGltcG9ydCBlbmNvZGVieXRlcyBhcyBfYmVuY29kZQpmcm9tIHF1b3ByaSBpbXBvcnQgZW5jb2Rlc3RyaW5nIGFzIF9lbmNvZGVzdHJpbmcKCgoMCmRlZiBfcWVuY29kZShzKToKICAgIGVuYyA9IF9lbmNvZGVzdHJpbmcocywgcXVvdGV0YWJzPVRydWUpCiAgICAjIE11c3QgZW5jb2RlIHNwYWNlcywgd2hpY2ggcXVvcHJpLmVuY29kZXN0cmluZygpIGRvZXNuJ3QgZG8KICAgIHJldHVybiBlbmMucmVwbGFjZShiJyAnLCBiJz0yMCcpCgoKZGVmIGVuY29kZV9iYXNlNjQobXNnKToKICAgICIiIkVuY29kZSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gQmFzZTY0LgoKICAgIEFsc28sIGFkZCBhbiBhcHByb3ByaWF0ZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGhlYWRlci4KICAgICIiIgogICAgb3JpZyA9IG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSkKICAgIGVuY2RhdGEgPSBzdHIoX2JlbmNvZGUob3JpZyksICdhc2NpaScpCiAgICBtc2cuc2V0X3BheWxvYWQoZW5jZGF0YSkKICAgIG1zZ1snQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyddID0gJ2Jhc2U2NCcKCgoMCmRlZiBlbmNvZGVfcXVvcHJpKG1zZyk6CiAgICAiIiJFbmNvZGUgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGluIHF1b3RlZC1wcmludGFibGUuCgogICAgQWxzbywgYWRkIGFuIGFwcHJvcHJpYXRlIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcgaGVhZGVyLgogICAgIiIiCiAgICBvcmlnID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQogICAgZW5jZGF0YSA9IF9xZW5jb2RlKG9yaWcpCiAgICBtc2cuc2V0X3BheWxvYWQoZW5jZGF0YSkKICAgIG1zZ1snQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyddID0gJ3F1b3RlZC1wcmludGFibGUnCgoKDApkZWYgZW5jb2RlXzdvcjhiaXQobXNnKToKICAgICIiIlNldCB0aGUgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBoZWFkZXIgdG8gN2JpdCBvciA4Yml0LiIiIgogICAgb3JpZyA9IG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSkKICAgIGlmIG9yaWcgaXMgTm9uZToKICAgICAgICAjIFRoZXJlJ3Mgbm8gcGF5bG9hZC4gIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3ZSB1c2UgN2JpdAogICAgICAgIG1zZ1snQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyddID0gJzdiaXQnCiAgICAgICAgcmV0dXJuCiAgICAjIFdlIHBsYXkgYSB0cmljayB0byBtYWtlIHRoaXMgZ28gZmFzdC4gIElmIGRlY29kaW5nIGZyb20gQVNDSUkgc3VjY2VlZHMsCiAgICAjIHdlIGtub3cgdGhlIGRhdGEgbXVzdCBiZSA3Yml0LCBvdGhlcndpc2UgdHJlYXQgaXQgYXMgOGJpdC4KICAgIHRyeToKICAgICAgICBvcmlnLmRlY29kZSgnYXNjaWknKQogICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKICAgICAgICBtc2dbJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnXSA9ICc4Yml0JwogICAgZWxzZToKICAgICAgICBtc2dbJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnXSA9ICc3Yml0JwoKCgwKZGVmIGVuY29kZV9ub29wKG1zZyk6CiAgICAiIiJEbyBub3RoaW5nLiIiIgpQSwMEFAAAAAAAAiCjVsuvUCKXDgAAlw4AAA8AAABlbWFpbC9lcnJvcnMucHkjIENvcHlyaWdodCAoQykgMjAwMS0yMDA2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCiMgQXV0aG9yOiBCYXJyeSBXYXJzYXcKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiZW1haWwgcGFja2FnZSBleGNlcHRpb24gY2xhc3Nlcy4iIiIKCgpjbGFzcyBNZXNzYWdlRXJyb3IoRXhjZXB0aW9uKToKICAgICIiIkJhc2UgY2xhc3MgZm9yIGVycm9ycyBpbiB0aGUgZW1haWwgcGFja2FnZS4iIiIKCgpjbGFzcyBNZXNzYWdlUGFyc2VFcnJvcihNZXNzYWdlRXJyb3IpOgogICAgIiIiQmFzZSBjbGFzcyBmb3IgbWVzc2FnZSBwYXJzaW5nIGVycm9ycy4iIiIKCgpjbGFzcyBIZWFkZXJQYXJzZUVycm9yKE1lc3NhZ2VQYXJzZUVycm9yKToKICAgICIiIkVycm9yIHdoaWxlIHBhcnNpbmcgaGVhZGVycy4iIiIKCgpjbGFzcyBCb3VuZGFyeUVycm9yKE1lc3NhZ2VQYXJzZUVycm9yKToKICAgICIiIkNvdWxkbid0IGZpbmQgdGVybWluYXRpbmcgYm91bmRhcnkuIiIiCgoKY2xhc3MgTXVsdGlwYXJ0Q29udmVyc2lvbkVycm9yKE1lc3NhZ2VFcnJvciwgVHlwZUVycm9yKToKICAgICIiIkNvbnZlcnNpb24gdG8gYSBtdWx0aXBhcnQgaXMgcHJvaGliaXRlZC4iIiIKCgpjbGFzcyBDaGFyc2V0RXJyb3IoTWVzc2FnZUVycm9yKToKICAgICIiIkFuIGlsbGVnYWwgY2hhcnNldCB3YXMgZ2l2ZW4uIiIiCgoKIyBUaGVzZSBhcmUgcGFyc2luZyBkZWZlY3RzIHdoaWNoIHRoZSBwYXJzZXIgd2FzIGFibGUgdG8gd29yayBhcm91bmQuCmNsYXNzIE1lc3NhZ2VEZWZlY3QoVmFsdWVFcnJvcik6CiAgICAiIiJCYXNlIGNsYXNzIGZvciBhIG1lc3NhZ2UgZGVmZWN0LiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lPU5vbmUpOgogICAgICAgIGlmIGxpbmUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18obGluZSkKICAgICAgICBzZWxmLmxpbmUgPSBsaW5lCgpjbGFzcyBOb0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAiIiJBIG1lc3NhZ2UgY2xhaW1lZCB0byBiZSBhIG11bHRpcGFydCBidXQgaGFkIG5vIGJvdW5kYXJ5IHBhcmFtZXRlci4iIiIKCmNsYXNzIFN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICIiIlRoZSBjbGFpbWVkIHN0YXJ0IGJvdW5kYXJ5IHdhcyBuZXZlciBmb3VuZC4iIiIKCmNsYXNzIENsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICIiIkEgc3RhcnQgYm91bmRhcnkgd2FzIGZvdW5kLCBidXQgbm90IHRoZSBjb3JyZXNwb25kaW5nIGNsb3NlIGJvdW5kYXJ5LiIiIgoKY2xhc3MgRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAiIiJBIG1lc3NhZ2UgaGFkIGEgY29udGludWF0aW9uIGxpbmUgYXMgaXRzIGZpcnN0IGhlYWRlciBsaW5lLiIiIgoKY2xhc3MgTWlzcGxhY2VkRW52ZWxvcGVIZWFkZXJEZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAiIiJBICdVbml4LWZyb20nIGhlYWRlciB3YXMgZm91bmQgaW4gdGhlIG1pZGRsZSBvZiBhIGhlYWRlciBibG9jay4iIiIKCmNsYXNzIE1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgIiIiRm91bmQgbGluZSB3aXRoIG5vIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgbm8gY29sb24gYmVmb3JlIGJsYW5rIGxpbmUuIiIiCiMgWFhYOiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBqdXN0IGluIGNhc2UgKGl0IHdhcyBuZXZlciBlbWl0dGVkKS4KTWFsZm9ybWVkSGVhZGVyRGVmZWN0ID0gTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3QKCmNsYXNzIE11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICIiIkEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEgbXVsdGlwYXJ0IGJ1dCBubyBzdWJwYXJ0cyB3ZXJlIGZvdW5kLiIiIgoKY2xhc3MgSW52YWxpZE11bHRpcGFydENvbnRlbnRUcmFuc2ZlckVuY29kaW5nRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgIiIiQW4gaW52YWxpZCBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIHdhcyBzZXQgb24gdGhlIG11bHRpcGFydCBpdHNlbGYuIiIiCgpjbGFzcyBVbmRlY29kYWJsZUJ5dGVzRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgIiIiSGVhZGVyIGNvbnRhaW5lZCBieXRlcyB0aGF0IGNvdWxkIG5vdCBiZSBkZWNvZGVkIiIiCgpjbGFzcyBJbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICIiImJhc2U2NCBlbmNvZGVkIHNlcXVlbmNlIGhhZCBhbiBpbmNvcnJlY3QgbGVuZ3RoIiIiCgpjbGFzcyBJbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICIiImJhc2U2NCBlbmNvZGVkIHNlcXVlbmNlIGhhZCBjaGFyYWN0ZXJzIG5vdCBpbiBiYXNlNjQgYWxwaGFiZXQiIiIKCmNsYXNzIEludmFsaWRCYXNlNjRMZW5ndGhEZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAiIiJiYXNlNjQgZW5jb2RlZCBzZXF1ZW5jZSBoYWQgaW52YWxpZCBsZW5ndGggKDEgbW9kIDQpIiIiCgojIFRoZXNlIGVycm9ycyBhcmUgc3BlY2lmaWMgdG8gaGVhZGVyIHBhcnNpbmcuCgpjbGFzcyBIZWFkZXJEZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAiIiJCYXNlIGNsYXNzIGZvciBhIGhlYWRlciBkZWZlY3QuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3KQoKY2xhc3MgSW52YWxpZEhlYWRlckRlZmVjdChIZWFkZXJEZWZlY3QpOgogICAgIiIiSGVhZGVyIGlzIG5vdCB2YWxpZCwgbWVzc2FnZSBnaXZlcyBkZXRhaWxzLiIiIgoKY2xhc3MgSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoSGVhZGVyRGVmZWN0KToKICAgICIiIkEgaGVhZGVyIHRoYXQgbXVzdCBoYXZlIGEgdmFsdWUgaGFkIG5vbmUiIiIKCmNsYXNzIE5vblByaW50YWJsZURlZmVjdChIZWFkZXJEZWZlY3QpOgogICAgIiIiQVNDSUkgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBhc2NpaS1wcmludGFibGUgcmFuZ2UgZm91bmQiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbm9uX3ByaW50YWJsZXMpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18obm9uX3ByaW50YWJsZXMpCiAgICAgICAgc2VsZi5ub25fcHJpbnRhYmxlcyA9IG5vbl9wcmludGFibGVzCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICgidGhlIGZvbGxvd2luZyBBU0NJSSBub24tcHJpbnRhYmxlcyBmb3VuZCBpbiBoZWFkZXI6ICIKICAgICAgICAgICAgInt9Ii5mb3JtYXQoc2VsZi5ub25fcHJpbnRhYmxlcykpCgpjbGFzcyBPYnNvbGV0ZUhlYWRlckRlZmVjdChIZWFkZXJEZWZlY3QpOgogICAgIiIiSGVhZGVyIHVzZXMgc3ludGF4IGRlY2xhcmVkIG9ic29sZXRlIGJ5IFJGQyA1MzIyIiIiCgpjbGFzcyBOb25BU0NJSUxvY2FsUGFydERlZmVjdChIZWFkZXJEZWZlY3QpOgogICAgIiIibG9jYWxfcGFydCBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycyIiIgogICAgIyBUaGlzIGRlZmVjdCBvbmx5IG9jY3VycyBkdXJpbmcgdW5pY29kZSBwYXJzaW5nLCBub3Qgd2hlbgogICAgIyBwYXJzaW5nIG1lc3NhZ2VzIGRlY29kZWQgZnJvbSBiaW5hcnkuCgpjbGFzcyBJbnZhbGlkRGF0ZURlZmVjdChIZWFkZXJEZWZlY3QpOgogICAgIiIiSGVhZGVyIGhhcyB1bnBhcnNhYmxlIG9yIGludmFsaWQgZGF0ZSIiIgpQSwMEFAAAAAAAAiCjVsxUZGz8WAAA/FgAABMAAABlbWFpbC9mZWVkcGFyc2VyLnB5IyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgojIEF1dGhvcnM6IEJheHRlciwgV291dGVycyBhbmQgV2Fyc2F3CiMgQ29udGFjdDogZW1haWwtc2lnQHB5dGhvbi5vcmcKCiIiIkZlZWRQYXJzZXIgLSBBbiBlbWFpbCBmZWVkIHBhcnNlci4KClRoZSBmZWVkIHBhcnNlciBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSBmb3IgaW5jcmVtZW50YWxseSBwYXJzaW5nIGFuIGVtYWlsCm1lc3NhZ2UsIGxpbmUgYnkgbGluZS4gIFRoaXMgaGFzIGFkdmFudGFnZXMgZm9yIGNlcnRhaW4gYXBwbGljYXRpb25zLCBzdWNoIGFzCnRob3NlIHJlYWRpbmcgZW1haWwgbWVzc2FnZXMgb2ZmIGEgc29ja2V0LgoKRmVlZFBhcnNlci5mZWVkKCkgaXMgdGhlIHByaW1hcnkgaW50ZXJmYWNlIGZvciBwdXNoaW5nIG5ldyBkYXRhIGludG8gdGhlCnBhcnNlci4gIEl0IHJldHVybnMgd2hlbiB0aGVyZSdzIG5vdGhpbmcgbW9yZSBpdCBjYW4gZG8gd2l0aCB0aGUgYXZhaWxhYmxlCmRhdGEuICBXaGVuIHlvdSBoYXZlIG5vIG1vcmUgZGF0YSB0byBwdXNoIGludG8gdGhlIHBhcnNlciwgY2FsbCAuY2xvc2UoKS4KVGhpcyBjb21wbGV0ZXMgdGhlIHBhcnNpbmcgYW5kIHJldHVybnMgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuCgpUaGUgb3RoZXIgYWR2YW50YWdlIG9mIHRoaXMgcGFyc2VyIGlzIHRoYXQgaXQgd2lsbCBuZXZlciByYWlzZSBhIHBhcnNpbmcKZXhjZXB0aW9uLiAgSW5zdGVhZCwgd2hlbiBpdCBmaW5kcyBzb21ldGhpbmcgdW5leHBlY3RlZCwgaXQgYWRkcyBhICdkZWZlY3QnIHRvCnRoZSBjdXJyZW50IG1lc3NhZ2UuICBEZWZlY3RzIGFyZSBqdXN0IGluc3RhbmNlcyB0aGF0IGxpdmUgb24gdGhlIG1lc3NhZ2UKb2JqZWN0J3MgLmRlZmVjdHMgYXR0cmlidXRlLgoiIiIKCl9fYWxsX18gPSBbJ0ZlZWRQYXJzZXInLCAnQnl0ZXNGZWVkUGFyc2VyJ10KCmltcG9ydCByZQoKZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCmZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCmZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCgpOTENSRSA9IHJlLmNvbXBpbGUocidcclxufFxyfFxuJykKTkxDUkVfYm9sID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKScpCk5MQ1JFX2VvbCA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbilcWicpCk5MQ1JFX2NyYWNrID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKScpCiMgUkZDIDI4MjIgJDMuNi44IE9wdGlvbmFsIGZpZWxkcy4gIGZ0ZXh0IGlzICVkMzMtNTcgLyAlZDU5LTEyNiwgQW55IGNoYXJhY3RlcgojIGV4Y2VwdCBjb250cm9scywgU1AsIGFuZCAiOiIuCmhlYWRlclJFID0gcmUuY29tcGlsZShyJ14oRnJvbSB8W1wwNDEtXDA3MVwwNzMtXDE3Nl0qOnxbXHQgXSknKQpFTVBUWVNUUklORyA9ICcnCk5MID0gJ1xuJwoKTmVlZE1vcmVEYXRhID0gb2JqZWN0KCkKCgoMCmNsYXNzIEJ1ZmZlcmVkU3ViRmlsZShvYmplY3QpOgogICAgIiIiQSBmaWxlLWlzaCBvYmplY3QgdGhhdCBjYW4gaGF2ZSBuZXcgZGF0YSBsb2FkZWQgaW50byBpdC4KCiAgICBZb3UgY2FuIGFsc28gcHVzaCBhbmQgcG9wIGxpbmUtbWF0Y2hpbmcgcHJlZGljYXRlcyBvbnRvIGEgc3RhY2suICBXaGVuIHRoZQogICAgY3VycmVudCBwcmVkaWNhdGUgbWF0Y2hlcyB0aGUgY3VycmVudCBsaW5lLCBhIGZhbHNlIEVPRiByZXNwb25zZQogICAgKGkuZS4gZW1wdHkgc3RyaW5nKSBpcyByZXR1cm5lZCBpbnN0ZWFkLiAgVGhpcyBsZXRzIHRoZSBwYXJzZXIgYWRoZXJlIHRvIGEKICAgIHNpbXBsZSBhYnN0cmFjdGlvbiAtLSBpdCBwYXJzZXMgdW50aWwgRU9GIGNsb3NlcyB0aGUgY3VycmVudCBtZXNzYWdlLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIyBUZXh0IHN0cmVhbSBvZiB0aGUgbGFzdCBwYXJ0aWFsIGxpbmUgcHVzaGVkIGludG8gdGhpcyBvYmplY3QuCiAgICAgICAgIyBTZWUgaXNzdWUgMjIyMzMgZm9yIHdoeSB0aGlzIGlzIGEgdGV4dCBzdHJlYW0gYW5kIG5vdCBhIGxpc3QuCiAgICAgICAgc2VsZi5fcGFydGlhbCA9IFN0cmluZ0lPKG5ld2xpbmU9JycpCiAgICAgICAgIyBBIGRlcXVlIG9mIGZ1bGwsIHB1c2hlZCBsaW5lcwogICAgICAgIHNlbGYuX2xpbmVzID0gZGVxdWUoKQogICAgICAgICMgVGhlIHN0YWNrIG9mIGZhbHNlLUVPRiBjaGVja2luZyBwcmVkaWNhdGVzLgogICAgICAgIHNlbGYuX2VvZnN0YWNrID0gW10KICAgICAgICAjIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaGFzIGJlZW4gY2xvc2VkIG9yIG5vdC4KICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQoKICAgIGRlZiBwdXNoX2VvZl9tYXRjaGVyKHNlbGYsIHByZWQpOgogICAgICAgIHNlbGYuX2VvZnN0YWNrLmFwcGVuZChwcmVkKQoKICAgIGRlZiBwb3BfZW9mX21hdGNoZXIoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2VvZnN0YWNrLnBvcCgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICMgRG9uJ3QgZm9yZ2V0IGFueSB0cmFpbGluZyBwYXJ0aWFsIGxpbmUuCiAgICAgICAgc2VsZi5fcGFydGlhbC5zZWVrKDApCiAgICAgICAgc2VsZi5wdXNobGluZXMoc2VsZi5fcGFydGlhbC5yZWFkbGluZXMoKSkKICAgICAgICBzZWxmLl9wYXJ0aWFsLnNlZWsoMCkKICAgICAgICBzZWxmLl9wYXJ0aWFsLnRydW5jYXRlKCkKICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCgogICAgZGVmIHJlYWRsaW5lKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9saW5lczoKICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgICAgIHJldHVybiBOZWVkTW9yZURhdGEKICAgICAgICAjIFBvcCB0aGUgbGluZSBvZmYgdGhlIHN0YWNrIGFuZCBzZWUgaWYgaXQgbWF0Y2hlcyB0aGUgY3VycmVudAogICAgICAgICMgZmFsc2UtRU9GIHByZWRpY2F0ZS4KICAgICAgICBsaW5lID0gc2VsZi5fbGluZXMucG9wbGVmdCgpCiAgICAgICAgIyBSRkMgMjA0Niwgc2VjdGlvbiA1LjEuMiByZXF1aXJlcyB1cyB0byByZWNvZ25pemUgb3V0ZXIgbGV2ZWwKICAgICAgICAjIGJvdW5kYXJpZXMgYXQgYW55IGxldmVsIG9mIGlubmVyIG5lc3RpbmcuICBEbyB0aGlzLCBidXQgYmUgc3VyZSBpdCdzCiAgICAgICAgIyBpbiB0aGUgb3JkZXIgb2YgbW9zdCB0byBsZWFzdCBuZXN0ZWQuCiAgICAgICAgZm9yIGF0ZW9mIGluIHJldmVyc2VkKHNlbGYuX2VvZnN0YWNrKToKICAgICAgICAgICAgaWYgYXRlb2YobGluZSk6CiAgICAgICAgICAgICAgICAjIFdlJ3JlIGF0IHRoZSBmYWxzZSBFT0YuICBCdXQgcHVzaCB0aGUgbGFzdCBsaW5lIGJhY2sgZmlyc3QuCiAgICAgICAgICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmRsZWZ0KGxpbmUpCiAgICAgICAgICAgICAgICByZXR1cm4gJycKICAgICAgICByZXR1cm4gbGluZQoKICAgIGRlZiB1bnJlYWRsaW5lKHNlbGYsIGxpbmUpOgogICAgICAgICMgTGV0IHRoZSBjb25zdW1lciBwdXNoIGEgbGluZSBiYWNrIGludG8gdGhlIGJ1ZmZlci4KICAgICAgICBhc3NlcnQgbGluZSBpcyBub3QgTmVlZE1vcmVEYXRhCiAgICAgICAgc2VsZi5fbGluZXMuYXBwZW5kbGVmdChsaW5lKQoKICAgIGRlZiBwdXNoKHNlbGYsIGRhdGEpOgogICAgICAgICIiIlB1c2ggc29tZSBuZXcgZGF0YSBpbnRvIHRoaXMgb2JqZWN0LiIiIgogICAgICAgIHNlbGYuX3BhcnRpYWwud3JpdGUoZGF0YSkKICAgICAgICBpZiAnXG4nIG5vdCBpbiBkYXRhIGFuZCAnXHInIG5vdCBpbiBkYXRhOgogICAgICAgICAgICAjIE5vIG5ldyBjb21wbGV0ZSBsaW5lcywgd2FpdCBmb3IgbW9yZS4KICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgQ3JhY2sgaW50byBsaW5lcywgcHJlc2VydmluZyB0aGUgbGluZXNlcCBjaGFyYWN0ZXJzLgogICAgICAgIHNlbGYuX3BhcnRpYWwuc2VlaygwKQogICAgICAgIHBhcnRzID0gc2VsZi5fcGFydGlhbC5yZWFkbGluZXMoKQogICAgICAgIHNlbGYuX3BhcnRpYWwuc2VlaygwKQogICAgICAgIHNlbGYuX3BhcnRpYWwudHJ1bmNhdGUoKQoKICAgICAgICAjIElmIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIGxpc3QgZG9lcyBub3QgZW5kIGluIGEgbmV3bGluZSwgdGhlbiB0cmVhdAogICAgICAgICMgaXQgYXMgYSBwYXJ0aWFsIGxpbmUuICBXZSBvbmx5IGNoZWNrIGZvciAnXG4nIGhlcmUgYmVjYXVzZSBhIGxpbmUKICAgICAgICAjIGVuZGluZyB3aXRoICdccicgbWlnaHQgYmUgYSBsaW5lIHRoYXQgd2FzIHNwbGl0IGluIHRoZSBtaWRkbGUgb2YgYQogICAgICAgICMgJ1xyXG4nIHNlcXVlbmNlIChzZWUgYnVncyAxNTU1NTcwIGFuZCAxNzIxODYyKS4KICAgICAgICBpZiBub3QgcGFydHNbLTFdLmVuZHN3aXRoKCdcbicpOgogICAgICAgICAgICBzZWxmLl9wYXJ0aWFsLndyaXRlKHBhcnRzLnBvcCgpKQogICAgICAgIHNlbGYucHVzaGxpbmVzKHBhcnRzKQoKICAgIGRlZiBwdXNobGluZXMoc2VsZiwgbGluZXMpOgogICAgICAgIHNlbGYuX2xpbmVzLmV4dGVuZChsaW5lcykKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQogICAgICAgIGlmIGxpbmUgPT0gJyc6CiAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICByZXR1cm4gbGluZQoKCgwKY2xhc3MgRmVlZFBhcnNlcjoKICAgICIiIkEgZmVlZC1zdHlsZSBwYXJzZXIgb2YgZW1haWwuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIF9mYWN0b3J5PU5vbmUsICosIHBvbGljeT1jb21wYXQzMik6CiAgICAgICAgIiIiX2ZhY3RvcnkgaXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIHRvIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iagoKICAgICAgICBUaGUgcG9saWN5IGtleXdvcmQgc3BlY2lmaWVzIGEgcG9saWN5IG9iamVjdCB0aGF0IGNvbnRyb2xzIGEgbnVtYmVyIG9mCiAgICAgICAgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucwogICAgICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgogICAgICAgICIiIgogICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAgICAgICAgc2VsZi5fb2xkX3N0eWxlX2ZhY3RvcnkgPSBGYWxzZQogICAgICAgIGlmIF9mYWN0b3J5IGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHBvbGljeS5tZXNzYWdlX2ZhY3RvcnkgaXMgTm9uZToKICAgICAgICAgICAgICAgIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQogICAgICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IE1lc3NhZ2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBwb2xpY3kubWVzc2FnZV9mYWN0b3J5CiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IF9mYWN0b3J5CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIF9mYWN0b3J5KHBvbGljeT1zZWxmLnBvbGljeSkKICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICMgQXNzdW1lIHRoaXMgaXMgYW4gb2xkLXN0eWxlIGZhY3RvcnkKICAgICAgICAgICAgICAgIHNlbGYuX29sZF9zdHlsZV9mYWN0b3J5ID0gVHJ1ZQogICAgICAgIHNlbGYuX2lucHV0ID0gQnVmZmVyZWRTdWJGaWxlKCkKICAgICAgICBzZWxmLl9tc2dzdGFjayA9IFtdCiAgICAgICAgc2VsZi5fcGFyc2UgPSBzZWxmLl9wYXJzZWdlbigpLl9fbmV4dF9fCiAgICAgICAgc2VsZi5fY3VyID0gTm9uZQogICAgICAgIHNlbGYuX2xhc3QgPSBOb25lCiAgICAgICAgc2VsZi5faGVhZGVyc29ubHkgPSBGYWxzZQoKICAgICMgTm9uLXB1YmxpYyBpbnRlcmZhY2UgZm9yIHN1cHBvcnRpbmcgUGFyc2VyJ3MgaGVhZGVyc29ubHkgZmxhZwogICAgZGVmIF9zZXRfaGVhZGVyc29ubHkoc2VsZik6CiAgICAgICAgc2VsZi5faGVhZGVyc29ubHkgPSBUcnVlCgogICAgZGVmIGZlZWQoc2VsZiwgZGF0YSk6CiAgICAgICAgIiIiUHVzaCBtb3JlIGRhdGEgaW50byB0aGUgcGFyc2VyLiIiIgogICAgICAgIHNlbGYuX2lucHV0LnB1c2goZGF0YSkKICAgICAgICBzZWxmLl9jYWxsX3BhcnNlKCkKCiAgICBkZWYgX2NhbGxfcGFyc2Uoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9wYXJzZSgpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHBhc3MKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiUGFyc2UgYWxsIHJlbWFpbmluZyBkYXRhIGFuZCByZXR1cm4gdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuIiIiCiAgICAgICAgc2VsZi5faW5wdXQuY2xvc2UoKQogICAgICAgIHNlbGYuX2NhbGxfcGFyc2UoKQogICAgICAgIHJvb3QgPSBzZWxmLl9wb3BfbWVzc2FnZSgpCiAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9tc2dzdGFjawogICAgICAgICMgTG9vayBmb3IgZmluYWwgc2V0IG9mIGRlZmVjdHMKICAgICAgICBpZiByb290LmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCcgXAogICAgICAgICAgICAgICBhbmQgbm90IHJvb3QuaXNfbXVsdGlwYXJ0KCk6CiAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QoKQogICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHJvb3QsIGRlZmVjdCkKICAgICAgICByZXR1cm4gcm9vdAoKICAgIGRlZiBfbmV3X21lc3NhZ2Uoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fb2xkX3N0eWxlX2ZhY3Rvcnk6CiAgICAgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkocG9saWN5PXNlbGYucG9saWN5KQogICAgICAgIGlmIHNlbGYuX2N1ciBhbmQgc2VsZi5fY3VyLmdldF9jb250ZW50X3R5cGUoKSA9PSAnbXVsdGlwYXJ0L2RpZ2VzdCc6CiAgICAgICAgICAgIG1zZy5zZXRfZGVmYXVsdF90eXBlKCdtZXNzYWdlL3JmYzgyMicpCiAgICAgICAgaWYgc2VsZi5fbXNnc3RhY2s6CiAgICAgICAgICAgIHNlbGYuX21zZ3N0YWNrWy0xXS5hdHRhY2gobXNnKQogICAgICAgIHNlbGYuX21zZ3N0YWNrLmFwcGVuZChtc2cpCiAgICAgICAgc2VsZi5fY3VyID0gbXNnCiAgICAgICAgc2VsZi5fbGFzdCA9IG1zZwoKICAgIGRlZiBfcG9wX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgcmV0dmFsID0gc2VsZi5fbXNnc3RhY2sucG9wKCkKICAgICAgICBpZiBzZWxmLl9tc2dzdGFjazoKICAgICAgICAgICAgc2VsZi5fY3VyID0gc2VsZi5fbXNnc3RhY2tbLTFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fY3VyID0gTm9uZQogICAgICAgIHJldHVybiByZXR2YWwKCiAgICBkZWYgX3BhcnNlZ2VuKHNlbGYpOgogICAgICAgICMgQ3JlYXRlIGEgbmV3IG1lc3NhZ2UgYW5kIHN0YXJ0IGJ5IHBhcnNpbmcgaGVhZGVycy4KICAgICAgICBzZWxmLl9uZXdfbWVzc2FnZSgpCiAgICAgICAgaGVhZGVycyA9IFtdCiAgICAgICAgIyBDb2xsZWN0IHRoZSBoZWFkZXJzLCBzZWFyY2hpbmcgZm9yIGEgbGluZSB0aGF0IGRvZXNuJ3QgbWF0Y2ggdGhlIFJGQwogICAgICAgICMgMjgyMiBoZWFkZXIgb3IgY29udGludWF0aW9uIHBhdHRlcm4gKGluY2x1ZGluZyBhbiBlbXB0eSBsaW5lKS4KICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9pbnB1dDoKICAgICAgICAgICAgaWYgbGluZSBpcyBOZWVkTW9yZURhdGE6CiAgICAgICAgICAgICAgICB5aWVsZCBOZWVkTW9yZURhdGEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJSRS5tYXRjaChsaW5lKToKICAgICAgICAgICAgICAgICMgSWYgd2Ugc2F3IHRoZSBSRkMgZGVmaW5lZCBoZWFkZXIvYm9keSBzZXBhcmF0b3IKICAgICAgICAgICAgICAgICMgKGkuZS4gbmV3bGluZSksIGp1c3QgdGhyb3cgaXQgYXdheS4gT3RoZXJ3aXNlIHRoZSBsaW5lIGlzCiAgICAgICAgICAgICAgICAjIHBhcnQgb2YgdGhlIGJvZHkgc28gcHVzaCBpdCBiYWNrLgogICAgICAgICAgICAgICAgaWYgbm90IE5MQ1JFLm1hdGNoKGxpbmUpOgogICAgICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdCgpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dC51bnJlYWRsaW5lKGxpbmUpCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChsaW5lKQogICAgICAgICMgRG9uZSB3aXRoIHRoZSBoZWFkZXJzLCBzbyBwYXJzZSB0aGVtIGFuZCBmaWd1cmUgb3V0IHdoYXQgd2UncmUKICAgICAgICAjIHN1cHBvc2VkIHRvIHNlZSBpbiB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZS4KICAgICAgICBzZWxmLl9wYXJzZV9oZWFkZXJzKGhlYWRlcnMpCiAgICAgICAgIyBIZWFkZXJzLW9ubHkgcGFyc2luZyBpcyBhIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGhhY2ssIHdoaWNoIHdhcwogICAgICAgICMgbmVjZXNzYXJ5IGluIHRoZSBvbGRlciBwYXJzZXIsIHdoaWNoIGNvdWxkIHJhaXNlIGVycm9ycy4gIEFsbAogICAgICAgICMgcmVtYWluaW5nIGxpbmVzIGluIHRoZSBpbnB1dCBhcmUgdGhyb3duIGludG8gdGhlIG1lc3NhZ2UgYm9keS4KICAgICAgICBpZiBzZWxmLl9oZWFkZXJzb25seToKICAgICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2lucHV0LnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgIGlmIGxpbmUgaXMgTmVlZE1vcmVEYXRhOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIE5lZWRNb3JlRGF0YQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBpZiBsaW5lID09ICcnOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9wYXlsb2FkKEVNUFRZU1RSSU5HLmpvaW4obGluZXMpKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBzZWxmLl9jdXIuZ2V0X2NvbnRlbnRfdHlwZSgpID09ICdtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1cyc6CiAgICAgICAgICAgICMgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMgY29udGFpbnMgYmxvY2tzIG9mIGhlYWRlcnMgc2VwYXJhdGVkIGJ5CiAgICAgICAgICAgICMgYSBibGFuayBsaW5lLiAgV2UnbGwgcmVwcmVzZW50IGVhY2ggaGVhZGVyIGJsb2NrIGFzIGEgc2VwYXJhdGUKICAgICAgICAgICAgIyBuZXN0ZWQgbWVzc2FnZSBvYmplY3QsIGJ1dCB0aGUgcHJvY2Vzc2luZyBpcyBhIGJpdCBkaWZmZXJlbnQKICAgICAgICAgICAgIyB0aGFuIHN0YW5kYXJkIG1lc3NhZ2UvKiB0eXBlcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJvZHkgZm9yIHRoZQogICAgICAgICAgICAjIG5lc3RlZCBtZXNzYWdlcy4gIEEgYmxhbmsgbGluZSBzZXBhcmF0ZXMgdGhlIHN1YnBhcnRzLgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgc2VsZi5faW5wdXQucHVzaF9lb2ZfbWF0Y2hlcihOTENSRS5tYXRjaCkKICAgICAgICAgICAgICAgIGZvciByZXR2YWwgaW4gc2VsZi5fcGFyc2VnZW4oKToKICAgICAgICAgICAgICAgICAgICBpZiByZXR2YWwgaXMgTmVlZE1vcmVEYXRhOgogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBOZWVkTW9yZURhdGEKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgbXNnID0gc2VsZi5fcG9wX21lc3NhZ2UoKQogICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHBvcCB0aGUgRU9GIG1hdGNoZXIgaW4gb3JkZXIgdG8gdGVsbCBpZiB3ZSdyZSBhdAogICAgICAgICAgICAgICAgIyB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGZpbGUsIG5vdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGJsb2NrCiAgICAgICAgICAgICAgICAjIG9mIG1lc3NhZ2UgaGVhZGVycy4KICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0LnBvcF9lb2ZfbWF0Y2hlcigpCiAgICAgICAgICAgICAgICAjIFRoZSBpbnB1dCBzdHJlYW0gbXVzdCBiZSBzaXR0aW5nIGF0IHRoZSBuZXdsaW5lIG9yIGF0IHRoZQogICAgICAgICAgICAgICAgIyBFT0YuICBXZSB3YW50IHRvIHNlZSBpZiB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoaXMgc3VicGFydCwgc28KICAgICAgICAgICAgICAgICMgZmlyc3QgY29uc3VtZSB0aGUgYmxhbmsgbGluZSwgdGhlbiB0ZXN0IHRoZSBuZXh0IGxpbmUgdG8gc2VlCiAgICAgICAgICAgICAgICAjIGlmIHdlJ3JlIGF0IHRoaXMgc3VicGFydCdzIEVPRi4KICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2lucHV0LnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICBpZiBsaW5lIGlzIE5lZWRNb3JlRGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgTmVlZE1vcmVEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2lucHV0LnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICBpZiBsaW5lIGlzIE5lZWRNb3JlRGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgTmVlZE1vcmVEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gJyc6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICMgTm90IGF0IEVPRiBzbyB0aGlzIGlzIGEgbGluZSB3ZSdyZSBnb2luZyB0byBuZWVkLgogICAgICAgICAgICAgICAgc2VsZi5faW5wdXQudW5yZWFkbGluZShsaW5lKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBzZWxmLl9jdXIuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbWVzc2FnZSc6CiAgICAgICAgICAgICMgVGhlIG1lc3NhZ2UgY2xhaW1zIHRvIGJlIGEgbWVzc2FnZS8qIHR5cGUsIHRoZW4gd2hhdCBmb2xsb3dzIGlzCiAgICAgICAgICAgICMgYW5vdGhlciBSRkMgMjgyMiBtZXNzYWdlLgogICAgICAgICAgICBmb3IgcmV0dmFsIGluIHNlbGYuX3BhcnNlZ2VuKCk6CiAgICAgICAgICAgICAgICBpZiByZXR2YWwgaXMgTmVlZE1vcmVEYXRhOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIE5lZWRNb3JlRGF0YQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBzZWxmLl9wb3BfbWVzc2FnZSgpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIHNlbGYuX2N1ci5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnOgogICAgICAgICAgICBib3VuZGFyeSA9IHNlbGYuX2N1ci5nZXRfYm91bmRhcnkoKQogICAgICAgICAgICBpZiBib3VuZGFyeSBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBUaGUgbWVzc2FnZSAvY2xhaW1zLyB0byBiZSBhIG11bHRpcGFydCBidXQgaXQgaGFzIG5vdAogICAgICAgICAgICAgICAgIyBkZWZpbmVkIGEgYm91bmRhcnkuICBUaGF0J3MgYSBwcm9ibGVtIHdoaWNoIHdlJ2xsIGhhbmRsZSBieQogICAgICAgICAgICAgICAgIyByZWFkaW5nIGV2ZXJ5dGhpbmcgdW50aWwgdGhlIEVPRiBhbmQgbWFya2luZyB0aGUgbWVzc2FnZSBhcwogICAgICAgICAgICAgICAgIyBkZWZlY3RpdmUuCiAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KCkKICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9pbnB1dDoKICAgICAgICAgICAgICAgICAgICBpZiBsaW5lIGlzIE5lZWRNb3JlRGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgTmVlZE1vcmVEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3BheWxvYWQoRU1QVFlTVFJJTkcuam9pbihsaW5lcykpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIyBNYWtlIHN1cmUgYSB2YWxpZCBjb250ZW50IHR5cGUgd2FzIHNwZWNpZmllZCBwZXIgUkZDIDIwNDU6Ni40LgogICAgICAgICAgICBpZiAoc3RyKHNlbGYuX2N1ci5nZXQoJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnLCAnOGJpdCcpKS5sb3dlcigpCiAgICAgICAgICAgICAgICAgICAgbm90IGluICgnN2JpdCcsICc4Yml0JywgJ2JpbmFyeScpKToKICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5JbnZhbGlkTXVsdGlwYXJ0Q29udGVudFRyYW5zZmVyRW5jb2RpbmdEZWZlY3QoKQogICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgIyBDcmVhdGUgYSBsaW5lIG1hdGNoIHByZWRpY2F0ZSB3aGljaCBtYXRjaGVzIHRoZSBpbnRlci1wYXJ0CiAgICAgICAgICAgICMgYm91bmRhcnkgYXMgd2VsbCBhcyB0aGUgZW5kLW9mLW11bHRpcGFydCBib3VuZGFyeS4gIERvbid0IHB1c2gKICAgICAgICAgICAgIyB0aGlzIG9udG8gdGhlIGlucHV0IHN0cmVhbSB1bnRpbCB3ZSd2ZSBzY2FubmVkIHBhc3QgdGhlCiAgICAgICAgICAgICMgcHJlYW1ibGUuCiAgICAgICAgICAgIHNlcGFyYXRvciA9ICctLScgKyBib3VuZGFyeQogICAgICAgICAgICBib3VuZGFyeXJlID0gcmUuY29tcGlsZSgKICAgICAgICAgICAgICAgICcoP1A8c2VwPicgKyByZS5lc2NhcGUoc2VwYXJhdG9yKSArCiAgICAgICAgICAgICAgICByJykoP1A8ZW5kPi0tKT8oP1A8d3M+WyBcdF0qKSg/UDxsaW5lc2VwPlxyXG58XHJ8XG4pPyQnKQogICAgICAgICAgICBjYXB0dXJpbmdfcHJlYW1ibGUgPSBUcnVlCiAgICAgICAgICAgIHByZWFtYmxlID0gW10KICAgICAgICAgICAgbGluZXNlcCA9IEZhbHNlCiAgICAgICAgICAgIGNsb3NlX2JvdW5kYXJ5X3NlZW4gPSBGYWxzZQogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2lucHV0LnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgIGlmIGxpbmUgaXMgTmVlZE1vcmVEYXRhOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIE5lZWRNb3JlRGF0YQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBpZiBsaW5lID09ICcnOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBtbyA9IGJvdW5kYXJ5cmUubWF0Y2gobGluZSkKICAgICAgICAgICAgICAgIGlmIG1vOgogICAgICAgICAgICAgICAgICAgICMgSWYgd2UncmUgbG9va2luZyBhdCB0aGUgZW5kIGJvdW5kYXJ5LCB3ZSdyZSBkb25lIHdpdGgKICAgICAgICAgICAgICAgICAgICAjIHRoaXMgbXVsdGlwYXJ0LiAgSWYgdGhlcmUgd2FzIGEgbmV3bGluZSBhdCB0aGUgZW5kIG9mCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgY2xvc2luZyBib3VuZGFyeSwgdGhlbiB3ZSBuZWVkIHRvIGluaXRpYWxpemUgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBlcGlsb2d1ZSB3aXRoIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSBiZWxvdykuCiAgICAgICAgICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2VuZCcpOgogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9ib3VuZGFyeV9zZWVuID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2VwID0gbW8uZ3JvdXAoJ2xpbmVzZXAnKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICMgV2Ugc2F3IGFuIGludGVyLXBhcnQgYm91bmRhcnkuICBXZXJlIHdlIGluIHRoZSBwcmVhbWJsZT8KICAgICAgICAgICAgICAgICAgICBpZiBjYXB0dXJpbmdfcHJlYW1ibGU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHByZWFtYmxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBY2NvcmRpbmcgdG8gUkZDIDIwNDYsIHRoZSBsYXN0IG5ld2xpbmUgYmVsb25ncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0byB0aGUgYm91bmRhcnkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0bGluZSA9IHByZWFtYmxlWy0xXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9sbW8gPSBOTENSRV9lb2wuc2VhcmNoKGxhc3RsaW5lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZW9sbW86CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYW1ibGVbLTFdID0gbGFzdGxpbmVbOi1sZW4oZW9sbW8uZ3JvdXAoMCkpXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLnByZWFtYmxlID0gRU1QVFlTVFJJTkcuam9pbihwcmVhbWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyaW5nX3ByZWFtYmxlID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQudW5yZWFkbGluZShsaW5lKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICMgV2Ugc2F3IGEgYm91bmRhcnkgc2VwYXJhdGluZyB0d28gcGFydHMuICBDb25zdW1lIGFueQogICAgICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgYm91bmRhcnkgbGluZXMgdGhhdCBtYXkgYmUgZm9sbG93aW5nLiAgT3VyCiAgICAgICAgICAgICAgICAgICAgIyBpbnRlcnByZXRhdGlvbiBvZiBSRkMgMjA0NiBCTkYgZ3JhbW1hciBkb2VzIG5vdCBwcm9kdWNlCiAgICAgICAgICAgICAgICAgICAgIyBib2R5IHBhcnRzIHdpdGhpbiBzdWNoIGRvdWJsZSBib3VuZGFyaWVzLgogICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9pbnB1dC5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgaXMgTmVlZE1vcmVEYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgTmVlZE1vcmVEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICBtbyA9IGJvdW5kYXJ5cmUubWF0Y2gobGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG1vOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQudW5yZWFkbGluZShsaW5lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAjIFJlY3Vyc2UgdG8gcGFyc2UgdGhpcyBzdWJwYXJ0OyB0aGUgaW5wdXQgc3RyZWFtIHBvaW50cwogICAgICAgICAgICAgICAgICAgICMgYXQgdGhlIHN1YnBhcnQncyBmaXJzdCBsaW5lLgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0LnB1c2hfZW9mX21hdGNoZXIoYm91bmRhcnlyZS5tYXRjaCkKICAgICAgICAgICAgICAgICAgICBmb3IgcmV0dmFsIGluIHNlbGYuX3BhcnNlZ2VuKCk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJldHZhbCBpcyBOZWVkTW9yZURhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBOZWVkTW9yZURhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIyBCZWNhdXNlIG9mIFJGQyAyMDQ2LCB0aGUgbmV3bGluZSBwcmVjZWRpbmcgdGhlIGJvdW5kYXJ5CiAgICAgICAgICAgICAgICAgICAgIyBzZXBhcmF0b3IgYWN0dWFsbHkgYmVsb25ncyB0byB0aGUgYm91bmRhcnksIG5vdCB0aGUKICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIHN1YnBhcnQncyBwYXlsb2FkIChvciBlcGlsb2d1ZSBpZiB0aGUgcHJldmlvdXMKICAgICAgICAgICAgICAgICAgICAjIHBhcnQgaXMgYSBtdWx0aXBhcnQpLgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xhc3QuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9ndWUgPSBzZWxmLl9sYXN0LmVwaWxvZ3VlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVwaWxvZ3VlID09ICcnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbGFzdC5lcGlsb2d1ZSA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBlcGlsb2d1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vID0gTkxDUkVfZW9sLnNlYXJjaChlcGlsb2d1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1vOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IGxlbihtby5ncm91cCgwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sYXN0LmVwaWxvZ3VlID0gZXBpbG9ndWVbOi1lbmRdCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX2xhc3QuX3BheWxvYWQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBzdHIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8gPSBOTENSRV9lb2wuc2VhcmNoKHBheWxvYWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtbzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZFs6LWxlbihtby5ncm91cCgwKSldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbGFzdC5fcGF5bG9hZCA9IHBheWxvYWQKICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dC5wb3BfZW9mX21hdGNoZXIoKQogICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcF9tZXNzYWdlKCkKICAgICAgICAgICAgICAgICAgICAjIFNldCB0aGUgbXVsdGlwYXJ0IHVwIGZvciBuZXdsaW5lIGNsZWFuc2luZywgd2hpY2ggd2lsbAogICAgICAgICAgICAgICAgICAgICMgaGFwcGVuIGlmIHdlJ3JlIGluIGEgbmVzdGVkIG11bHRpcGFydC4KICAgICAgICAgICAgICAgICAgICBzZWxmLl9sYXN0ID0gc2VsZi5fY3VyCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgSSB0aGluayB3ZSBtdXN0IGJlIGluIHRoZSBwcmVhbWJsZQogICAgICAgICAgICAgICAgICAgIGFzc2VydCBjYXB0dXJpbmdfcHJlYW1ibGUKICAgICAgICAgICAgICAgICAgICBwcmVhbWJsZS5hcHBlbmQobGluZSkKICAgICAgICAgICAgIyBXZSd2ZSBzZWVuIGVpdGhlciB0aGUgRU9GIG9yIHRoZSBlbmQgYm91bmRhcnkuICBJZiB3ZSdyZSBzdGlsbAogICAgICAgICAgICAjIGNhcHR1cmluZyB0aGUgcHJlYW1ibGUsIHdlIG5ldmVyIHNhdyB0aGUgc3RhcnQgYm91bmRhcnkuICBOb3RlCiAgICAgICAgICAgICMgdGhhdCBhcyBhIGRlZmVjdCBhbmQgc3RvcmUgdGhlIGNhcHR1cmVkIHRleHQgYXMgdGhlIHBheWxvYWQuCiAgICAgICAgICAgIGlmIGNhcHR1cmluZ19wcmVhbWJsZToKICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoKQogICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcGF5bG9hZChFTVBUWVNUUklORy5qb2luKHByZWFtYmxlKSkKICAgICAgICAgICAgICAgIGVwaWxvZ3VlID0gW10KICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2lucHV0OgogICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgaXMgTmVlZE1vcmVEYXRhOgogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBOZWVkTW9yZURhdGEKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5lcGlsb2d1ZSA9IEVNUFRZU1RSSU5HLmpvaW4oZXBpbG9ndWUpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIyBJZiB3ZSdyZSBub3QgcHJvY2Vzc2luZyB0aGUgcHJlYW1ibGUsIHRoZW4gd2UgbWlnaHQgaGF2ZSBzZWVuCiAgICAgICAgICAgICMgRU9GIHdpdGhvdXQgc2VlaW5nIHRoYXQgZW5kIGJvdW5kYXJ5Li4udGhhdCBpcyBhbHNvIGEgZGVmZWN0LgogICAgICAgICAgICBpZiBub3QgY2xvc2VfYm91bmRhcnlfc2VlbjoKICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoKQogICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAjIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIHRvIHRoZSBFT0YgaXMgZXBpbG9ndWUuICBJZiB0aGUgZW5kIGJvdW5kYXJ5CiAgICAgICAgICAgICMgZW5kZWQgaW4gYSBuZXdsaW5lLCB3ZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZXBpbG9ndWUgaXNuJ3QKICAgICAgICAgICAgIyBOb25lCiAgICAgICAgICAgIGlmIGxpbmVzZXA6CiAgICAgICAgICAgICAgICBlcGlsb2d1ZSA9IFsnJ10KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVwaWxvZ3VlID0gW10KICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5faW5wdXQ6CiAgICAgICAgICAgICAgICBpZiBsaW5lIGlzIE5lZWRNb3JlRGF0YToKICAgICAgICAgICAgICAgICAgICB5aWVsZCBOZWVkTW9yZURhdGEKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICMgQW55IENSTEYgYXQgdGhlIGZyb250IG9mIHRoZSBlcGlsb2d1ZSBpcyBub3QgdGVjaG5pY2FsbHkgcGFydCBvZgogICAgICAgICAgICAjIHRoZSBlcGlsb2d1ZS4gIEFsc28sIHdhdGNoIG91dCBmb3IgYW4gZW1wdHkgc3RyaW5nIGVwaWxvZ3VlLAogICAgICAgICAgICAjIHdoaWNoIG1lYW5zIGEgc2luZ2xlIG5ld2xpbmUuCiAgICAgICAgICAgIGlmIGVwaWxvZ3VlOgogICAgICAgICAgICAgICAgZmlyc3RsaW5lID0gZXBpbG9ndWVbMF0KICAgICAgICAgICAgICAgIGJvbG1vID0gTkxDUkVfYm9sLm1hdGNoKGZpcnN0bGluZSkKICAgICAgICAgICAgICAgIGlmIGJvbG1vOgogICAgICAgICAgICAgICAgICAgIGVwaWxvZ3VlWzBdID0gZmlyc3RsaW5lW2xlbihib2xtby5ncm91cCgwKSk6XQogICAgICAgICAgICBzZWxmLl9jdXIuZXBpbG9ndWUgPSBFTVBUWVNUUklORy5qb2luKGVwaWxvZ3VlKQogICAgICAgICAgICByZXR1cm4KICAgICAgICAjIE90aGVyd2lzZSwgaXQncyBzb21lIG5vbi1tdWx0aXBhcnQgdHlwZSwgc28gdGhlIGVudGlyZSByZXN0IG9mIHRoZQogICAgICAgICMgZmlsZSBjb250ZW50cyBiZWNvbWVzIHRoZSBwYXlsb2FkLgogICAgICAgIGxpbmVzID0gW10KICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9pbnB1dDoKICAgICAgICAgICAgaWYgbGluZSBpcyBOZWVkTW9yZURhdGE6CiAgICAgICAgICAgICAgICB5aWVsZCBOZWVkTW9yZURhdGEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQogICAgICAgIHNlbGYuX2N1ci5zZXRfcGF5bG9hZChFTVBUWVNUUklORy5qb2luKGxpbmVzKSkKCiAgICBkZWYgX3BhcnNlX2hlYWRlcnMoc2VsZiwgbGluZXMpOgogICAgICAgICMgUGFzc2VkIGEgbGlzdCBvZiBsaW5lcyB0aGF0IG1ha2UgdXAgdGhlIGhlYWRlcnMgZm9yIHRoZSBjdXJyZW50IG1zZwogICAgICAgIGxhc3RoZWFkZXIgPSAnJwogICAgICAgIGxhc3R2YWx1ZSA9IFtdCiAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgogICAgICAgICAgICAjIENoZWNrIGZvciBjb250aW51YXRpb24KICAgICAgICAgICAgaWYgbGluZVswXSBpbiAnIFx0JzoKICAgICAgICAgICAgICAgIGlmIG5vdCBsYXN0aGVhZGVyOgogICAgICAgICAgICAgICAgICAgICMgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGhlYWRlcnMgd2FzIGEgY29udGludWF0aW9uLiAgVGhpcwogICAgICAgICAgICAgICAgICAgICMgaXMgaWxsZWdhbCwgc28gbGV0J3Mgbm90ZSB0aGUgZGVmZWN0LCBzdG9yZSB0aGUgaWxsZWdhbAogICAgICAgICAgICAgICAgICAgICMgbGluZSwgYW5kIGlnbm9yZSBpdCBmb3IgcHVycG9zZXMgb2YgaGVhZGVycy4KICAgICAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QobGluZSkKICAgICAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBsYXN0dmFsdWUuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBsYXN0aGVhZGVyOgogICAgICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9yYXcoKnNlbGYucG9saWN5LmhlYWRlcl9zb3VyY2VfcGFyc2UobGFzdHZhbHVlKSkKICAgICAgICAgICAgICAgIGxhc3RoZWFkZXIsIGxhc3R2YWx1ZSA9ICcnLCBbXQogICAgICAgICAgICAjIENoZWNrIGZvciBlbnZlbG9wZSBoZWFkZXIsIGkuZS4gdW5peC1mcm9tCiAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnRnJvbSAnKToKICAgICAgICAgICAgICAgIGlmIGxpbmVubyA9PSAwOgogICAgICAgICAgICAgICAgICAgICMgU3RyaXAgb2ZmIHRoZSB0cmFpbGluZyBuZXdsaW5lCiAgICAgICAgICAgICAgICAgICAgbW8gPSBOTENSRV9lb2wuc2VhcmNoKGxpbmUpCiAgICAgICAgICAgICAgICAgICAgaWYgbW86CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzotbGVuKG1vLmdyb3VwKDApKV0KICAgICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3VuaXhmcm9tKGxpbmUpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGVsaWYgbGluZW5vID09IGxlbihsaW5lcykgLSAxOgogICAgICAgICAgICAgICAgICAgICMgU29tZXRoaW5nIGxvb2tpbmcgbGlrZSBhIHVuaXgtZnJvbSBhdCB0aGUgZW5kIC0gaXQncwogICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGJvZHksIHNvIHB1c2ggYmFjayB0aGUKICAgICAgICAgICAgICAgICAgICAjIGxpbmUgYW5kIHN0b3AuCiAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQudW5yZWFkbGluZShsaW5lKQogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIFdlaXJkbHkgcGxhY2VkIHVuaXgtZnJvbSBsaW5lLiAgTm90ZSB0aGlzIGFzIGEgZGVmZWN0CiAgICAgICAgICAgICAgICAgICAgIyBhbmQgaWdub3JlIGl0LgogICAgICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NaXNwbGFjZWRFbnZlbG9wZUhlYWRlckRlZmVjdChsaW5lKQogICAgICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIyBTcGxpdCB0aGUgbGluZSBvbiB0aGUgY29sb24gc2VwYXJhdGluZyBmaWVsZCBuYW1lIGZyb20gdmFsdWUuCiAgICAgICAgICAgICMgVGhlcmUgd2lsbCBhbHdheXMgYmUgYSBjb2xvbiwgYmVjYXVzZSBpZiB0aGVyZSB3YXNuJ3QgdGhlIHBhcnQgb2YKICAgICAgICAgICAgIyB0aGUgcGFyc2VyIHRoYXQgY2FsbHMgdXMgd291bGQgaGF2ZSBzdGFydGVkIHBhcnNpbmcgdGhlIGJvZHkuCiAgICAgICAgICAgIGkgPSBsaW5lLmZpbmQoJzonKQoKICAgICAgICAgICAgIyBJZiB0aGUgY29sb24gaXMgb24gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRoZSBoZWFkZXIgaXMgY2xlYXJseQogICAgICAgICAgICAjIG1hbGZvcm1lZCwgYnV0IHdlIG1pZ2h0IGJlIGFibGUgdG8gc2FsdmFnZSB0aGUgcmVzdCBvZiB0aGUKICAgICAgICAgICAgIyBtZXNzYWdlLiBUcmFjayB0aGUgZXJyb3IgYnV0IGtlZXAgZ29pbmcuCiAgICAgICAgICAgIGlmIGkgPT0gMDoKICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KCJNaXNzaW5nIGhlYWRlciBuYW1lLiIpCiAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGFzc2VydCBpPjAsICJfcGFyc2VfaGVhZGVycyBmZWQgbGluZSB3aXRoIG5vIDogYW5kIG5vIGxlYWRpbmcgV1MiCiAgICAgICAgICAgIGxhc3RoZWFkZXIgPSBsaW5lWzppXQogICAgICAgICAgICBsYXN0dmFsdWUgPSBbbGluZV0KICAgICAgICAjIERvbmUgd2l0aCBhbGwgdGhlIGxpbmVzLCBzbyBoYW5kbGUgdGhlIGxhc3QgaGVhZGVyLgogICAgICAgIGlmIGxhc3RoZWFkZXI6CiAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcmF3KCpzZWxmLnBvbGljeS5oZWFkZXJfc291cmNlX3BhcnNlKGxhc3R2YWx1ZSkpCgoKY2xhc3MgQnl0ZXNGZWVkUGFyc2VyKEZlZWRQYXJzZXIpOgogICAgIiIiTGlrZSBGZWVkUGFyc2VyLCBidXQgZmVlZCBhY2NlcHRzIGJ5dGVzLiIiIgoKICAgIGRlZiBmZWVkKHNlbGYsIGRhdGEpOgogICAgICAgIHN1cGVyKCkuZmVlZChkYXRhLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykpClBLAwQUAAAAAAACIKNWy1fQOeROAADkTgAAEgAAAGVtYWlsL2dlbmVyYXRvci5weSMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTAgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBBdXRob3I6IEJhcnJ5IFdhcnNhdwojIENvbnRhY3Q6IGVtYWlsLXNpZ0BweXRob24ub3JnCgoiIiJDbGFzc2VzIHRvIGdlbmVyYXRlIHBsYWluIHRleHQgZnJvbSBhIG1lc3NhZ2Ugb2JqZWN0IHRyZWUuIiIiCgpfX2FsbF9fID0gWydHZW5lcmF0b3InLCAnRGVjb2RlZEdlbmVyYXRvcicsICdCeXRlc0dlbmVyYXRvciddCgppbXBvcnQgcmUKaW1wb3J0IHN5cwppbXBvcnQgdGltZQppbXBvcnQgcmFuZG9tCgpmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CmZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPCmZyb20gZW1haWwudXRpbHMgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcwoKVU5ERVJTQ09SRSA9ICdfJwpOTCA9ICdcbicgICMgWFhYOiBubyBsb25nZXIgdXNlZCBieSB0aGUgY29kZSBiZWxvdy4KCk5MQ1JFID0gcmUuY29tcGlsZShyJ1xyXG58XHJ8XG4nKQpmY3JlID0gcmUuY29tcGlsZShyJ15Gcm9tICcsIHJlLk1VTFRJTElORSkKCgoMCmNsYXNzIEdlbmVyYXRvcjoKICAgICIiIkdlbmVyYXRlcyBvdXRwdXQgZnJvbSBhIE1lc3NhZ2Ugb2JqZWN0IHRyZWUuCgogICAgVGhpcyBiYXNpYyBnZW5lcmF0b3Igd3JpdGVzIHRoZSBtZXNzYWdlIHRvIHRoZSBnaXZlbiBmaWxlIG9iamVjdCBhcyBwbGFpbgogICAgdGV4dC4KICAgICIiIgogICAgIwogICAgIyBQdWJsaWMgaW50ZXJmYWNlCiAgICAjCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsICosCiAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSB0aGUgZ2VuZXJhdG9yIGZvciBtZXNzYWdlIGZsYXR0ZW5pbmcuCgogICAgICAgIG91dGZwIGlzIHRoZSBvdXRwdXQgZmlsZS1saWtlIG9iamVjdCBmb3Igd3JpdGluZyB0aGUgbWVzc2FnZSB0by4gIEl0CiAgICAgICAgbXVzdCBoYXZlIGEgd3JpdGUoKSBtZXRob2QuCgogICAgICAgIE9wdGlvbmFsIG1hbmdsZV9mcm9tXyBpcyBhIGZsYWcgdGhhdCwgd2hlbiBUcnVlICh0aGUgZGVmYXVsdCBpZiBwb2xpY3kKICAgICAgICBpcyBub3Qgc2V0KSwgZXNjYXBlcyBGcm9tXyBsaW5lcyBpbiB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZSBieSBwdXR0aW5nCiAgICAgICAgYSBgPicgaW4gZnJvbnQgb2YgdGhlbS4KCiAgICAgICAgT3B0aW9uYWwgbWF4aGVhZGVybGVuIHNwZWNpZmllcyB0aGUgbG9uZ2VzdCBsZW5ndGggZm9yIGEgbm9uLWNvbnRpbnVlZAogICAgICAgIGhlYWRlci4gIFdoZW4gYSBoZWFkZXIgbGluZSBpcyBsb25nZXIgKGluIGNoYXJhY3RlcnMsIHdpdGggdGFicwogICAgICAgIGV4cGFuZGVkIHRvIDggc3BhY2VzKSB0aGFuIG1heGhlYWRlcmxlbiwgdGhlIGhlYWRlciB3aWxsIHNwbGl0IGFzCiAgICAgICAgZGVmaW5lZCBpbiB0aGUgSGVhZGVyIGNsYXNzLiAgU2V0IG1heGhlYWRlcmxlbiB0byB6ZXJvIHRvIGRpc2FibGUKICAgICAgICBoZWFkZXIgd3JhcHBpbmcuICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpCiAgICAgICAgYnkgUkZDIDI4MjIuCgogICAgICAgIFRoZSBwb2xpY3kga2V5d29yZCBzcGVjaWZpZXMgYSBwb2xpY3kgb2JqZWN0IHRoYXQgY29udHJvbHMgYSBudW1iZXIgb2YKICAgICAgICBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0b3IncyBvcGVyYXRpb24uICBJZiBubyBwb2xpY3kgaXMgc3BlY2lmaWVkLAogICAgICAgIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZSBNZXNzYWdlIG9iamVjdCBwYXNzZWQgdG8gdGhlCiAgICAgICAgZmxhdHRlbiBtZXRob2QgaXMgdXNlZC4KCiAgICAgICAgIiIiCgogICAgICAgIGlmIG1hbmdsZV9mcm9tXyBpcyBOb25lOgogICAgICAgICAgICBtYW5nbGVfZnJvbV8gPSBUcnVlIGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5Lm1hbmdsZV9mcm9tXwogICAgICAgIHNlbGYuX2ZwID0gb3V0ZnAKICAgICAgICBzZWxmLl9tYW5nbGVfZnJvbV8gPSBtYW5nbGVfZnJvbV8KICAgICAgICBzZWxmLm1heGhlYWRlcmxlbiA9IG1heGhlYWRlcmxlbgogICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CgogICAgZGVmIHdyaXRlKHNlbGYsIHMpOgogICAgICAgICMgSnVzdCBkZWxlZ2F0ZSB0byB0aGUgZmlsZSBvYmplY3QKICAgICAgICBzZWxmLl9mcC53cml0ZShzKQoKICAgIGRlZiBmbGF0dGVuKHNlbGYsIG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSk6CiAgICAgICAgciIiIlByaW50IHRoZSBtZXNzYWdlIG9iamVjdCB0cmVlIHJvb3RlZCBhdCBtc2cgdG8gdGhlIG91dHB1dCBmaWxlCiAgICAgICAgc3BlY2lmaWVkIHdoZW4gdGhlIEdlbmVyYXRvciBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KCiAgICAgICAgdW5peGZyb20gaXMgYSBmbGFnIHRoYXQgZm9yY2VzIHRoZSBwcmludGluZyBvZiBhIFVuaXggRnJvbV8gZGVsaW1pdGVyCiAgICAgICAgYmVmb3JlIHRoZSBmaXJzdCBvYmplY3QgaW4gdGhlIG1lc3NhZ2UgdHJlZS4gIElmIHRoZSBvcmlnaW5hbCBtZXNzYWdlCiAgICAgICAgaGFzIG5vIEZyb21fIGRlbGltaXRlciwgYSBgc3RhbmRhcmQnIG9uZSBpcyBjcmFmdGVkLiAgQnkgZGVmYXVsdCwgdGhpcwogICAgICAgIGlzIEZhbHNlIHRvIGluaGliaXQgdGhlIHByaW50aW5nIG9mIGFueSBGcm9tXyBkZWxpbWl0ZXIuCgogICAgICAgIE5vdGUgdGhhdCBmb3Igc3Vib2JqZWN0cywgbm8gRnJvbV8gbGluZSBpcyBwcmludGVkLgoKICAgICAgICBsaW5lc2VwIHNwZWNpZmllcyB0aGUgY2hhcmFjdGVycyB1c2VkIHRvIGluZGljYXRlIGEgbmV3IGxpbmUgaW4KICAgICAgICB0aGUgb3V0cHV0LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcG9saWN5IHNwZWNpZmllZAogICAgICAgIHdoZW4gdGhlIEdlbmVyYXRvciBpbnN0YW5jZSB3YXMgY3JlYXRlZCBvciwgaWYgbm9uZSB3YXMgc3BlY2lmaWVkLAogICAgICAgIGZyb20gdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlIG1zZy4KCiAgICAgICAgIiIiCiAgICAgICAgIyBXZSB1c2UgdGhlIF9YWFggY29uc3RhbnRzIGZvciBvcGVyYXRpbmcgb24gZGF0YSB0aGF0IGNvbWVzIGRpcmVjdGx5CiAgICAgICAgIyBmcm9tIHRoZSBtc2csIGFuZCBfZW5jb2RlZF9YWFggY29uc3RhbnRzIGZvciBvcGVyYXRpbmcgb24gZGF0YSB0aGF0CiAgICAgICAgIyBoYXMgYWxyZWFkeSBiZWVuIGNvbnZlcnRlZCAodG8gYnl0ZXMgaW4gdGhlIEJ5dGVzR2VuZXJhdG9yKSBhbmQKICAgICAgICAjIGluc2VydGVkIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyLgogICAgICAgIHBvbGljeSA9IG1zZy5wb2xpY3kgaWYgc2VsZi5wb2xpY3kgaXMgTm9uZSBlbHNlIHNlbGYucG9saWN5CiAgICAgICAgaWYgbGluZXNlcCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5LmNsb25lKGxpbmVzZXA9bGluZXNlcCkKICAgICAgICBpZiBzZWxmLm1heGhlYWRlcmxlbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5LmNsb25lKG1heF9saW5lX2xlbmd0aD1zZWxmLm1heGhlYWRlcmxlbikKICAgICAgICBzZWxmLl9OTCA9IHBvbGljeS5saW5lc2VwCiAgICAgICAgc2VsZi5fZW5jb2RlZF9OTCA9IHNlbGYuX2VuY29kZShzZWxmLl9OTCkKICAgICAgICBzZWxmLl9FTVBUWSA9ICcnCiAgICAgICAgc2VsZi5fZW5jb2RlZF9FTVBUWSA9IHNlbGYuX2VuY29kZShzZWxmLl9FTVBUWSkKICAgICAgICAjIEJlY2F1c2Ugd2UgdXNlIGNsb25lIChiZWxvdykgd2hlbiB3ZSByZWN1cnNpdmVseSBwcm9jZXNzIG1lc3NhZ2UKICAgICAgICAjIHN1YnBhcnRzLCBhbmQgYmVjYXVzZSBjbG9uZSB1c2VzIHRoZSBjb21wdXRlZCBwb2xpY3kgKG5vdCBOb25lKSwKICAgICAgICAjIHN1Ym1lc3NhZ2VzIHdpbGwgYXV0b21hdGljYWxseSBnZXQgc2V0IHRvIHRoZSBjb21wdXRlZCBwb2xpY3kgd2hlbgogICAgICAgICMgdGhleSBhcmUgcHJvY2Vzc2VkIGJ5IHRoaXMgY29kZS4KICAgICAgICBvbGRfZ2VuX3BvbGljeSA9IHNlbGYucG9saWN5CiAgICAgICAgb2xkX21zZ19wb2xpY3kgPSBtc2cucG9saWN5CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogICAgICAgICAgICBtc2cucG9saWN5ID0gcG9saWN5CiAgICAgICAgICAgIGlmIHVuaXhmcm9tOgogICAgICAgICAgICAgICAgdWZyb20gPSBtc2cuZ2V0X3VuaXhmcm9tKCkKICAgICAgICAgICAgICAgIGlmIG5vdCB1ZnJvbToKICAgICAgICAgICAgICAgICAgICB1ZnJvbSA9ICdGcm9tIG5vYm9keSAnICsgdGltZS5jdGltZSh0aW1lLnRpbWUoKSkKICAgICAgICAgICAgICAgIHNlbGYud3JpdGUodWZyb20gKyBzZWxmLl9OTCkKICAgICAgICAgICAgc2VsZi5fd3JpdGUobXNnKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYucG9saWN5ID0gb2xkX2dlbl9wb2xpY3kKICAgICAgICAgICAgbXNnLnBvbGljeSA9IG9sZF9tc2dfcG9saWN5CgogICAgZGVmIGNsb25lKHNlbGYsIGZwKToKICAgICAgICAiIiJDbG9uZSB0aGlzIGdlbmVyYXRvciB3aXRoIHRoZSBleGFjdCBzYW1lIG9wdGlvbnMuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYW5nbGVfZnJvbV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsICMgVXNlIHBvbGljeSBzZXR0aW5nLCB3aGljaCB3ZSd2ZSBhZGp1c3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5wb2xpY3kpCgogICAgIwogICAgIyBQcm90ZWN0ZWQgaW50ZXJmYWNlIC0gdW5kb2N1bWVudGVkIDsvCiAgICAjCgogICAgIyBOb3RlIHRoYXQgd2UgdXNlICdzZWxmLndyaXRlJyB3aGVuIHdoYXQgd2UgYXJlIHdyaXRpbmcgaXMgY29taW5nIGZyb20KICAgICMgdGhlIHNvdXJjZSwgYW5kIHNlbGYuX2ZwLndyaXRlIHdoZW4gd2hhdCB3ZSBhcmUgd3JpdGluZyBpcyBjb21pbmcgZnJvbSBhCiAgICAjIGJ1ZmZlciAoYmVjYXVzZSB0aGUgQnl0ZXMgc3ViY2xhc3MgaGFzIGFscmVhZHkgaGFkIGEgY2hhbmNlIHRvIHRyYW5zZm9ybQogICAgIyB0aGUgZGF0YSBpbiBpdHMgd3JpdGUgbWV0aG9kIGluIHRoYXQgY2FzZSkuICBUaGlzIGlzIGFuIGVudGlyZWx5CiAgICAjIHByYWdtYXRpYyBzcGxpdCBkZXRlcm1pbmVkIGJ5IGV4cGVyaW1lbnQ7IHdlIGNvdWxkIGJlIG1vcmUgZ2VuZXJhbCBieQogICAgIyBhbHdheXMgdXNpbmcgd3JpdGUgYW5kIGhhdmluZyB0aGUgQnl0ZXMgc3ViY2xhc3Mgd3JpdGUgbWV0aG9kIGRldGVjdCB3aGVuCiAgICAjIGl0IGhhcyBhbHJlYWR5IHRyYW5zZm9ybWVkIHRoZSBpbnB1dDsgYnV0LCBzaW5jZSB0aGlzIHdob2xlIHRoaW5nIGlzIGEKICAgICMgaGFjayBhbnl3YXkgdGhpcyBzZWVtcyBnb29kIGVub3VnaC4KCiAgICBkZWYgX25ld19idWZmZXIoc2VsZik6CiAgICAgICAgIyBCeXRlc0dlbmVyYXRvciBvdmVycmlkZXMgdGhpcyB0byByZXR1cm4gQnl0ZXNJTy4KICAgICAgICByZXR1cm4gU3RyaW5nSU8oKQoKICAgIGRlZiBfZW5jb2RlKHNlbGYsIHMpOgogICAgICAgICMgQnl0ZXNHZW5lcmF0b3Igb3ZlcnJpZGVzIHRoaXMgdG8gZW5jb2RlIHN0cmluZ3MgdG8gYnl0ZXMuCiAgICAgICAgcmV0dXJuIHMKCiAgICBkZWYgX3dyaXRlX2xpbmVzKHNlbGYsIGxpbmVzKToKICAgICAgICAjIFdlIGhhdmUgdG8gdHJhbnNmb3JtIHRoZSBsaW5lIGVuZGluZ3MuCiAgICAgICAgaWYgbm90IGxpbmVzOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBsaW5lcyA9IE5MQ1JFLnNwbGl0KGxpbmVzKQogICAgICAgIGZvciBsaW5lIGluIGxpbmVzWzotMV06CiAgICAgICAgICAgIHNlbGYud3JpdGUobGluZSkKICAgICAgICAgICAgc2VsZi53cml0ZShzZWxmLl9OTCkKICAgICAgICBpZiBsaW5lc1stMV06CiAgICAgICAgICAgIHNlbGYud3JpdGUobGluZXNbLTFdKQogICAgICAgICMgWFhYIGxvZ2ljIHRlbGxzIG1lIHRoaXMgZWxzZSBzaG91bGQgYmUgbmVlZGVkLCBidXQgdGhlIHRlc3RzIGZhaWwKICAgICAgICAjIHdpdGggaXQgYW5kIHBhc3Mgd2l0aG91dCBpdC4gIChOTENSRS5zcGxpdCBlbmRzIHdpdGggYSBibGFuayBlbGVtZW50CiAgICAgICAgIyBpZiBhbmQgb25seSBpZiB0aGVyZSB3YXMgYSB0cmFpbGluZyBuZXdsaW5lLikKICAgICAgICAjZWxzZToKICAgICAgICAjICAgIHNlbGYud3JpdGUoc2VsZi5fTkwpCgogICAgZGVmIF93cml0ZShzZWxmLCBtc2cpOgogICAgICAgICMgV2UgY2FuJ3Qgd3JpdGUgdGhlIGhlYWRlcnMgeWV0IGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBzY2VuYXJpbzoKICAgICAgICAjIHNheSBhIG11bHRpcGFydCBtZXNzYWdlIGluY2x1ZGVzIHRoZSBib3VuZGFyeSBzdHJpbmcgc29tZXdoZXJlIGluCiAgICAgICAgIyBpdHMgYm9keS4gIFdlJ2QgaGF2ZSB0byBjYWxjdWxhdGUgdGhlIG5ldyBib3VuZGFyeSAvYmVmb3JlLyB3ZSB3cml0ZQogICAgICAgICMgdGhlIGhlYWRlcnMgc28gdGhhdCB3ZSBjYW4gd3JpdGUgdGhlIGNvcnJlY3QgQ29udGVudC1UeXBlOgogICAgICAgICMgcGFyYW1ldGVyLgogICAgICAgICMKICAgICAgICAjIFRoZSB3YXkgd2UgZG8gdGhpcywgc28gYXMgdG8gbWFrZSB0aGUgX2hhbmRsZV8qKCkgbWV0aG9kcyBzaW1wbGVyLAogICAgICAgICMgaXMgdG8gY2FjaGUgYW55IHN1YnBhcnQgd3JpdGVzIGludG8gYSBidWZmZXIuICBUaGUgd2Ugd3JpdGUgdGhlCiAgICAgICAgIyBoZWFkZXJzIGFuZCB0aGUgYnVmZmVyIGNvbnRlbnRzLiAgVGhhdCB3YXksIHN1YnBhcnQgaGFuZGxlcnMgY2FuCiAgICAgICAgIyBEbyBUaGUgUmlnaHQgVGhpbmcsIGFuZCBjYW4gc3RpbGwgbW9kaWZ5IHRoZSBDb250ZW50LVR5cGU6IGhlYWRlciBpZgogICAgICAgICMgbmVjZXNzYXJ5LgogICAgICAgIG9sZGZwID0gc2VsZi5fZnAKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX211bmdlX2N0ZSA9IE5vbmUKICAgICAgICAgICAgc2VsZi5fZnAgPSBzZnAgPSBzZWxmLl9uZXdfYnVmZmVyKCkKICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2gobXNnKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX2ZwID0gb2xkZnAKICAgICAgICAgICAgbXVuZ2VfY3RlID0gc2VsZi5fbXVuZ2VfY3RlCiAgICAgICAgICAgIGRlbCBzZWxmLl9tdW5nZV9jdGUKICAgICAgICAjIElmIHdlIG11bmdlZCB0aGUgY3RlLCBjb3B5IHRoZSBtZXNzYWdlIGFnYWluIGFuZCByZS1maXggdGhlIENURS4KICAgICAgICBpZiBtdW5nZV9jdGU6CiAgICAgICAgICAgIG1zZyA9IGRlZXBjb3B5KG1zZykKICAgICAgICAgICAgIyBQcmVzZXJ2ZSB0aGUgaGVhZGVyIG9yZGVyIGlmIHRoZSBDVEUgaGVhZGVyIGFscmVhZHkgZXhpc3RzLgogICAgICAgICAgICBpZiBtc2cuZ2V0KCdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJykgaXMgTm9uZToKICAgICAgICAgICAgICAgIG1zZ1snQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyddID0gbXVuZ2VfY3RlWzBdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBtc2cucmVwbGFjZV9oZWFkZXIoJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnLCBtdW5nZV9jdGVbMF0pCiAgICAgICAgICAgIG1zZy5yZXBsYWNlX2hlYWRlcignY29udGVudC10eXBlJywgbXVuZ2VfY3RlWzFdKQogICAgICAgICMgV3JpdGUgdGhlIGhlYWRlcnMuICBGaXJzdCB3ZSBzZWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IHdhbnRzIHRvCiAgICAgICAgIyBoYW5kbGUgdGhhdCBpdHNlbGYuICBJZiBub3QsIHdlJ2xsIGRvIGl0IGdlbmVyaWNhbGx5LgogICAgICAgIG1ldGggPSBnZXRhdHRyKG1zZywgJ193cml0ZV9oZWFkZXJzJywgTm9uZSkKICAgICAgICBpZiBtZXRoIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlX2hlYWRlcnMobXNnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1ldGgoc2VsZikKICAgICAgICBzZWxmLl9mcC53cml0ZShzZnAuZ2V0dmFsdWUoKSkKCiAgICBkZWYgX2Rpc3BhdGNoKHNlbGYsIG1zZyk6CiAgICAgICAgIyBHZXQgdGhlIENvbnRlbnQtVHlwZTogZm9yIHRoZSBtZXNzYWdlLCB0aGVuIHRyeSB0byBkaXNwYXRjaCB0bwogICAgICAgICMgc2VsZi5faGFuZGxlXzxtYWludHlwZT5fPHN1YnR5cGU+KCkuICBJZiB0aGVyZSdzIG5vIGhhbmRsZXIgZm9yIHRoZQogICAgICAgICMgZnVsbCBNSU1FIHR5cGUsIHRoZW4gZGlzcGF0Y2ggdG8gc2VsZi5faGFuZGxlXzxtYWludHlwZT4oKS4gIElmCiAgICAgICAgIyB0aGF0J3MgbWlzc2luZyB0b28sIHRoZW4gZGlzcGF0Y2ggdG8gc2VsZi5fd3JpdGVCb2R5KCkuCiAgICAgICAgbWFpbiA9IG1zZy5nZXRfY29udGVudF9tYWludHlwZSgpCiAgICAgICAgc3ViID0gbXNnLmdldF9jb250ZW50X3N1YnR5cGUoKQogICAgICAgIHNwZWNpZmljID0gVU5ERVJTQ09SRS5qb2luKChtYWluLCBzdWIpKS5yZXBsYWNlKCctJywgJ18nKQogICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICdfaGFuZGxlXycgKyBzcGVjaWZpYywgTm9uZSkKICAgICAgICBpZiBtZXRoIGlzIE5vbmU6CiAgICAgICAgICAgIGdlbmVyaWMgPSBtYWluLnJlcGxhY2UoJy0nLCAnXycpCiAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICdfaGFuZGxlXycgKyBnZW5lcmljLCBOb25lKQogICAgICAgICAgICBpZiBtZXRoIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBtZXRoID0gc2VsZi5fd3JpdGVCb2R5CiAgICAgICAgbWV0aChtc2cpCgogICAgIwogICAgIyBEZWZhdWx0IGhhbmRsZXJzCiAgICAjCgogICAgZGVmIF93cml0ZV9oZWFkZXJzKHNlbGYsIG1zZyk6CiAgICAgICAgZm9yIGgsIHYgaW4gbXNnLnJhd19pdGVtcygpOgogICAgICAgICAgICBzZWxmLndyaXRlKHNlbGYucG9saWN5LmZvbGQoaCwgdikpCiAgICAgICAgIyBBIGJsYW5rIGxpbmUgYWx3YXlzIHNlcGFyYXRlcyBoZWFkZXJzIGZyb20gYm9keQogICAgICAgIHNlbGYud3JpdGUoc2VsZi5fTkwpCgogICAgIwogICAgIyBIYW5kbGVycyBmb3Igd3JpdGluZyB0eXBlcyBhbmQgc3VidHlwZXMKICAgICMKCiAgICBkZWYgX2hhbmRsZV90ZXh0KHNlbGYsIG1zZyk6CiAgICAgICAgcGF5bG9hZCA9IG1zZy5nZXRfcGF5bG9hZCgpCiAgICAgICAgaWYgcGF5bG9hZCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXlsb2FkLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3N0cmluZyBwYXlsb2FkIGV4cGVjdGVkOiAlcycgJSB0eXBlKHBheWxvYWQpKQogICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyhtc2cuX3BheWxvYWQpOgogICAgICAgICAgICBjaGFyc2V0ID0gbXNnLmdldF9wYXJhbSgnY2hhcnNldCcpCiAgICAgICAgICAgIGlmIGNoYXJzZXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAjIFhYWDogVGhpcyBjb3B5IHN0dWZmIGlzIGFuIHVnbHkgaGFjayB0byBhdm9pZCBtb2RpZnlpbmcgdGhlCiAgICAgICAgICAgICAgICAjIGV4aXN0aW5nIG1lc3NhZ2UuCiAgICAgICAgICAgICAgICBtc2cgPSBkZWVwY29weShtc2cpCiAgICAgICAgICAgICAgICBkZWwgbXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10KICAgICAgICAgICAgICAgIG1zZy5zZXRfcGF5bG9hZChwYXlsb2FkLCBjaGFyc2V0KQogICAgICAgICAgICAgICAgcGF5bG9hZCA9IG1zZy5nZXRfcGF5bG9hZCgpCiAgICAgICAgICAgICAgICBzZWxmLl9tdW5nZV9jdGUgPSAobXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnWydjb250ZW50LXR5cGUnXSkKICAgICAgICBpZiBzZWxmLl9tYW5nbGVfZnJvbV86CiAgICAgICAgICAgIHBheWxvYWQgPSBmY3JlLnN1YignPkZyb20gJywgcGF5bG9hZCkKICAgICAgICBzZWxmLl93cml0ZV9saW5lcyhwYXlsb2FkKQoKICAgICMgRGVmYXVsdCBib2R5IGhhbmRsZXIKICAgIF93cml0ZUJvZHkgPSBfaGFuZGxlX3RleHQKCiAgICBkZWYgX2hhbmRsZV9tdWx0aXBhcnQoc2VsZiwgbXNnKToKICAgICAgICAjIFRoZSB0cmljayBoZXJlIGlzIHRvIHdyaXRlIG91dCBlYWNoIHBhcnQgc2VwYXJhdGVseSwgbWVyZ2UgdGhlbSBhbGwKICAgICAgICAjIHRvZ2V0aGVyLCBhbmQgdGhlbiBtYWtlIHN1cmUgdGhhdCB0aGUgYm91bmRhcnkgd2UndmUgY2hvc2VuIGlzbid0CiAgICAgICAgIyBwcmVzZW50IGluIHRoZSBwYXlsb2FkLgogICAgICAgIG1zZ3RleHRzID0gW10KICAgICAgICBzdWJwYXJ0cyA9IG1zZy5nZXRfcGF5bG9hZCgpCiAgICAgICAgaWYgc3VicGFydHMgaXMgTm9uZToKICAgICAgICAgICAgc3VicGFydHMgPSBbXQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdWJwYXJ0cywgc3RyKToKICAgICAgICAgICAgIyBlLmcuIGEgbm9uLXN0cmljdCBwYXJzZSBvZiBhIG1lc3NhZ2Ugd2l0aCBubyBzdGFydGluZyBib3VuZGFyeS4KICAgICAgICAgICAgc2VsZi53cml0ZShzdWJwYXJ0cykKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzdWJwYXJ0cywgbGlzdCk6CiAgICAgICAgICAgICMgU2NhbGFyIHBheWxvYWQKICAgICAgICAgICAgc3VicGFydHMgPSBbc3VicGFydHNdCiAgICAgICAgZm9yIHBhcnQgaW4gc3VicGFydHM6CiAgICAgICAgICAgIHMgPSBzZWxmLl9uZXdfYnVmZmVyKCkKICAgICAgICAgICAgZyA9IHNlbGYuY2xvbmUocykKICAgICAgICAgICAgZy5mbGF0dGVuKHBhcnQsIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPXNlbGYuX05MKQogICAgICAgICAgICBtc2d0ZXh0cy5hcHBlbmQocy5nZXR2YWx1ZSgpKQogICAgICAgICMgQkFXOiBXaGF0IGFib3V0IGJvdW5kYXJpZXMgdGhhdCBhcmUgd3JhcHBlZCBpbiBkb3VibGUtcXVvdGVzPwogICAgICAgIGJvdW5kYXJ5ID0gbXNnLmdldF9ib3VuZGFyeSgpCiAgICAgICAgaWYgbm90IGJvdW5kYXJ5OgogICAgICAgICAgICAjIENyZWF0ZSBhIGJvdW5kYXJ5IHRoYXQgZG9lc24ndCBhcHBlYXIgaW4gYW55IG9mIHRoZQogICAgICAgICAgICAjIG1lc3NhZ2UgdGV4dHMuCiAgICAgICAgICAgIGFsbHRleHQgPSBzZWxmLl9lbmNvZGVkX05MLmpvaW4obXNndGV4dHMpCiAgICAgICAgICAgIGJvdW5kYXJ5ID0gc2VsZi5fbWFrZV9ib3VuZGFyeShhbGx0ZXh0KQogICAgICAgICAgICBtc2cuc2V0X2JvdW5kYXJ5KGJvdW5kYXJ5KQogICAgICAgICMgSWYgdGhlcmUncyBhIHByZWFtYmxlLCB3cml0ZSBpdCBvdXQsIHdpdGggYSB0cmFpbGluZyBDUkxGCiAgICAgICAgaWYgbXNnLnByZWFtYmxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBzZWxmLl9tYW5nbGVfZnJvbV86CiAgICAgICAgICAgICAgICBwcmVhbWJsZSA9IGZjcmUuc3ViKCc+RnJvbSAnLCBtc2cucHJlYW1ibGUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmVhbWJsZSA9IG1zZy5wcmVhbWJsZQogICAgICAgICAgICBzZWxmLl93cml0ZV9saW5lcyhwcmVhbWJsZSkKICAgICAgICAgICAgc2VsZi53cml0ZShzZWxmLl9OTCkKICAgICAgICAjIGRhc2gtYm91bmRhcnkgdHJhbnNwb3J0LXBhZGRpbmcgQ1JMRgogICAgICAgIHNlbGYud3JpdGUoJy0tJyArIGJvdW5kYXJ5ICsgc2VsZi5fTkwpCiAgICAgICAgIyBib2R5LXBhcnQKICAgICAgICBpZiBtc2d0ZXh0czoKICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUobXNndGV4dHMucG9wKDApKQogICAgICAgICMgKmVuY2Fwc3VsYXRpb24KICAgICAgICAjIC0tPiBkZWxpbWl0ZXIgdHJhbnNwb3J0LXBhZGRpbmcKICAgICAgICAjIC0tPiBDUkxGIGJvZHktcGFydAogICAgICAgIGZvciBib2R5X3BhcnQgaW4gbXNndGV4dHM6CiAgICAgICAgICAgICMgZGVsaW1pdGVyIHRyYW5zcG9ydC1wYWRkaW5nIENSTEYKICAgICAgICAgICAgc2VsZi53cml0ZShzZWxmLl9OTCArICctLScgKyBib3VuZGFyeSArIHNlbGYuX05MKQogICAgICAgICAgICAjIGJvZHktcGFydAogICAgICAgICAgICBzZWxmLl9mcC53cml0ZShib2R5X3BhcnQpCiAgICAgICAgIyBjbG9zZS1kZWxpbWl0ZXIgdHJhbnNwb3J0LXBhZGRpbmcKICAgICAgICBzZWxmLndyaXRlKHNlbGYuX05MICsgJy0tJyArIGJvdW5kYXJ5ICsgJy0tJyArIHNlbGYuX05MKQogICAgICAgIGlmIG1zZy5lcGlsb2d1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgc2VsZi5fbWFuZ2xlX2Zyb21fOgogICAgICAgICAgICAgICAgZXBpbG9ndWUgPSBmY3JlLnN1YignPkZyb20gJywgbXNnLmVwaWxvZ3VlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZXBpbG9ndWUgPSBtc2cuZXBpbG9ndWUKICAgICAgICAgICAgc2VsZi5fd3JpdGVfbGluZXMoZXBpbG9ndWUpCgogICAgZGVmIF9oYW5kbGVfbXVsdGlwYXJ0X3NpZ25lZChzZWxmLCBtc2cpOgogICAgICAgICMgVGhlIGNvbnRlbnRzIG9mIHNpZ25lZCBwYXJ0cyBoYXMgdG8gc3RheSB1bm1vZGlmaWVkIGluIG9yZGVyIHRvIGtlZXAKICAgICAgICAjIHRoZSBzaWduYXR1cmUgaW50YWN0IHBlciBSRkMxODQ3IDIuMSwgc28gd2UgZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCiAgICAgICAgIyBSRE06IFRoaXMgaXNuJ3QgZW5vdWdoIHRvIGNvbXBsZXRlbHkgcHJlc2VydmUgdGhlIHBhcnQsIGJ1dCBpdCBoZWxwcy4KICAgICAgICBwID0gc2VsZi5wb2xpY3kKICAgICAgICBzZWxmLnBvbGljeSA9IHAuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTApCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9oYW5kbGVfbXVsdGlwYXJ0KG1zZykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLnBvbGljeSA9IHAKCiAgICBkZWYgX2hhbmRsZV9tZXNzYWdlX2RlbGl2ZXJ5X3N0YXR1cyhzZWxmLCBtc2cpOgogICAgICAgICMgV2UgY2FuJ3QganVzdCB3cml0ZSB0aGUgaGVhZGVycyBkaXJlY3RseSB0byBzZWxmJ3MgZmlsZSBvYmplY3QKICAgICAgICAjIGJlY2F1c2UgdGhpcyB3aWxsIGxlYXZlIGFuIGV4dHJhIG5ld2xpbmUgYmV0d2VlbiB0aGUgbGFzdCBoZWFkZXIKICAgICAgICAjIGJsb2NrIGFuZCB0aGUgYm91bmRhcnkuICBTaWdoLgogICAgICAgIGJsb2NrcyA9IFtdCiAgICAgICAgZm9yIHBhcnQgaW4gbXNnLmdldF9wYXlsb2FkKCk6CiAgICAgICAgICAgIHMgPSBzZWxmLl9uZXdfYnVmZmVyKCkKICAgICAgICAgICAgZyA9IHNlbGYuY2xvbmUocykKICAgICAgICAgICAgZy5mbGF0dGVuKHBhcnQsIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPXNlbGYuX05MKQogICAgICAgICAgICB0ZXh0ID0gcy5nZXR2YWx1ZSgpCiAgICAgICAgICAgIGxpbmVzID0gdGV4dC5zcGxpdChzZWxmLl9lbmNvZGVkX05MKQogICAgICAgICAgICAjIFN0cmlwIG9mZiB0aGUgdW5uZWNlc3NhcnkgdHJhaWxpbmcgZW1wdHkgbGluZQogICAgICAgICAgICBpZiBsaW5lcyBhbmQgbGluZXNbLTFdID09IHNlbGYuX2VuY29kZWRfRU1QVFk6CiAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHNlbGYuX2VuY29kZWRfTkwuam9pbihsaW5lc1s6LTFdKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQodGV4dCkKICAgICAgICAjIE5vdyBqb2luIGFsbCB0aGUgYmxvY2tzIHdpdGggYW4gZW1wdHkgbGluZS4gIFRoaXMgaGFzIHRoZSBsb3ZlbHkKICAgICAgICAjIGVmZmVjdCBvZiBzZXBhcmF0aW5nIGVhY2ggYmxvY2sgd2l0aCBhbiBlbXB0eSBsaW5lLCBidXQgbm90IGFkZGluZwogICAgICAgICMgYW4gZXh0cmEgb25lIGFmdGVyIHRoZSBsYXN0IG9uZS4KICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9lbmNvZGVkX05MLmpvaW4oYmxvY2tzKSkKCiAgICBkZWYgX2hhbmRsZV9tZXNzYWdlKHNlbGYsIG1zZyk6CiAgICAgICAgcyA9IHNlbGYuX25ld19idWZmZXIoKQogICAgICAgIGcgPSBzZWxmLmNsb25lKHMpCiAgICAgICAgIyBUaGUgcGF5bG9hZCBvZiBhIG1lc3NhZ2UvcmZjODIyIHBhcnQgc2hvdWxkIGJlIGEgbXVsdGlwYXJ0IHNlcXVlbmNlCiAgICAgICAgIyBvZiBsZW5ndGggMS4gIFRoZSB6ZXJvdGggZWxlbWVudCBvZiB0aGUgbGlzdCBzaG91bGQgYmUgdGhlIE1lc3NhZ2UKICAgICAgICAjIG9iamVjdCBmb3IgdGhlIHN1YnBhcnQuICBFeHRyYWN0IHRoYXQgb2JqZWN0LCBzdHJpbmdpZnkgaXQsIGFuZAogICAgICAgICMgd3JpdGUgaXQgb3V0LgogICAgICAgICMgRXhjZXB0LCBpdCB0dXJucyBvdXQsIHdoZW4gaXQncyBhIHN0cmluZyBpbnN0ZWFkLCB3aGljaCBoYXBwZW5zIHdoZW4KICAgICAgICAjIGFuZCBvbmx5IHdoZW4gSGVhZGVyUGFyc2VyIGlzIHVzZWQgb24gYSBtZXNzYWdlIG9mIG1pbWUgdHlwZQogICAgICAgICMgbWVzc2FnZS9yZmM4MjIuICBTdWNoIG1lc3NhZ2VzIGFyZSBnZW5lcmF0ZWQgYnksIGZvciBleGFtcGxlLAogICAgICAgICMgR3JvdXB3aXNlIHdoZW4gZm9yd2FyZGluZyB1bmFkb3JuZWQgbWVzc2FnZXMuICAoSXNzdWUgNzk3MC4pICBTbwogICAgICAgICMgaW4gdGhhdCBjYXNlIHdlIGp1c3QgZW1pdCB0aGUgc3RyaW5nIGJvZHkuCiAgICAgICAgcGF5bG9hZCA9IG1zZy5fcGF5bG9hZAogICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgbGlzdCk6CiAgICAgICAgICAgIGcuZmxhdHRlbihtc2cuZ2V0X3BheWxvYWQoMCksIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPXNlbGYuX05MKQogICAgICAgICAgICBwYXlsb2FkID0gcy5nZXR2YWx1ZSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX2VuY29kZShwYXlsb2FkKQogICAgICAgIHNlbGYuX2ZwLndyaXRlKHBheWxvYWQpCgogICAgIyBUaGlzIHVzZWQgdG8gYmUgYSBtb2R1bGUgbGV2ZWwgZnVuY3Rpb247IHdlIHVzZSBhIGNsYXNzbWV0aG9kIGZvciB0aGlzCiAgICAjIGFuZCBfY29tcGlsZV9yZSBzbyB3ZSBjYW4gY29udGludWUgdG8gcHJvdmlkZSB0aGUgbW9kdWxlIGxldmVsIGZ1bmN0aW9uCiAgICAjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJ5IGRvaW5nCiAgICAjICAgX21ha2VfYm91bmRhcnkgPSBHZW5lcmF0b3IuX21ha2VfYm91bmRhcnkKICAgICMgYXQgdGhlIGVuZCBvZiB0aGUgbW9kdWxlLiAgSXQgKmlzKiBpbnRlcm5hbCwgc28gd2UgY291bGQgZHJvcCB0aGF0Li4uCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfbWFrZV9ib3VuZGFyeShjbHMsIHRleHQ9Tm9uZSk6CiAgICAgICAgIyBDcmFmdCBhIHJhbmRvbSBib3VuZGFyeS4gIElmIHRleHQgaXMgZ2l2ZW4sIGVuc3VyZSB0aGF0IHRoZSBjaG9zZW4KICAgICAgICAjIGJvdW5kYXJ5IGRvZXNuJ3QgYXBwZWFyIGluIHRoZSB0ZXh0LgogICAgICAgIHRva2VuID0gcmFuZG9tLnJhbmRyYW5nZShzeXMubWF4c2l6ZSkKICAgICAgICBib3VuZGFyeSA9ICgnPScgKiAxNSkgKyAoX2ZtdCAlIHRva2VuKSArICc9PScKICAgICAgICBpZiB0ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBib3VuZGFyeQogICAgICAgIGIgPSBib3VuZGFyeQogICAgICAgIGNvdW50ZXIgPSAwCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgY3JlID0gY2xzLl9jb21waWxlX3JlKCdeLS0nICsgcmUuZXNjYXBlKGIpICsgJygtLSk/JCcsIHJlLk1VTFRJTElORSkKICAgICAgICAgICAgaWYgbm90IGNyZS5zZWFyY2godGV4dCk6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBiID0gYm91bmRhcnkgKyAnLicgKyBzdHIoY291bnRlcikKICAgICAgICAgICAgY291bnRlciArPSAxCiAgICAgICAgcmV0dXJuIGIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfY29tcGlsZV9yZShjbHMsIHMsIGZsYWdzKToKICAgICAgICByZXR1cm4gcmUuY29tcGlsZShzLCBmbGFncykKCgwKY2xhc3MgQnl0ZXNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICIiIkdlbmVyYXRlcyBhIGJ5dGVzIHZlcnNpb24gb2YgYSBNZXNzYWdlIG9iamVjdCB0cmVlLgoKICAgIEZ1bmN0aW9uYWxseSBpZGVudGljYWwgdG8gdGhlIGJhc2UgR2VuZXJhdG9yIGV4Y2VwdCB0aGF0IHRoZSBvdXRwdXQgaXMKICAgIGJ5dGVzIGFuZCBub3Qgc3RyaW5nLiAgV2hlbiBzdXJyb2dhdGVzIHdlcmUgdXNlZCBpbiB0aGUgaW5wdXQgdG8gZW5jb2RlCiAgICBieXRlcywgdGhlc2UgYXJlIGRlY29kZWQgYmFjayB0byBieXRlcyBmb3Igb3V0cHV0LiAgSWYgdGhlIHBvbGljeSBoYXMKICAgIGN0ZV90eXBlIHNldCB0byA3Yml0LCB0aGVuIHRoZSBtZXNzYWdlIGlzIHRyYW5zZm9ybWVkIHN1Y2ggdGhhdCB0aGUKICAgIG5vbi1BU0NJSSBieXRlcyBhcmUgcHJvcGVybHkgY29udGVudCB0cmFuc2ZlciBlbmNvZGVkLCB1c2luZyB0aGUgY2hhcnNldAogICAgdW5rbm93bi04Yml0LgoKICAgIFRoZSBvdXRmcCBvYmplY3QgbXVzdCBhY2NlcHQgYnl0ZXMgaW4gaXRzIHdyaXRlIG1ldGhvZC4KICAgICIiIgoKICAgIGRlZiB3cml0ZShzZWxmLCBzKToKICAgICAgICBzZWxmLl9mcC53cml0ZShzLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykpCgogICAgZGVmIF9uZXdfYnVmZmVyKHNlbGYpOgogICAgICAgIHJldHVybiBCeXRlc0lPKCkKCiAgICBkZWYgX2VuY29kZShzZWxmLCBzKToKICAgICAgICByZXR1cm4gcy5lbmNvZGUoJ2FzY2lpJykKCiAgICBkZWYgX3dyaXRlX2hlYWRlcnMoc2VsZiwgbXNnKToKICAgICAgICAjIFRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgdmVyc2lvbiwgZXhjZXB0IGZvciBoYW5kbGluZwogICAgICAgICMgc3RyaW5ncyB3aXRoIDhiaXQgYnl0ZXMuCiAgICAgICAgZm9yIGgsIHYgaW4gbXNnLnJhd19pdGVtcygpOgogICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLnBvbGljeS5mb2xkX2JpbmFyeShoLCB2KSkKICAgICAgICAjIEEgYmxhbmsgbGluZSBhbHdheXMgc2VwYXJhdGVzIGhlYWRlcnMgZnJvbSBib2R5CiAgICAgICAgc2VsZi53cml0ZShzZWxmLl9OTCkKCiAgICBkZWYgX2hhbmRsZV90ZXh0KHNlbGYsIG1zZyk6CiAgICAgICAgIyBJZiB0aGUgc3RyaW5nIGhhcyBzdXJyb2dhdGVzIHRoZSBvcmlnaW5hbCBzb3VyY2Ugd2FzIGJ5dGVzLCBzbwogICAgICAgICMganVzdCB3cml0ZSBpdCBiYWNrIG91dC4KICAgICAgICBpZiBtc2cuX3BheWxvYWQgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKG1zZy5fcGF5bG9hZCkgYW5kIG5vdCBzZWxmLnBvbGljeS5jdGVfdHlwZT09JzdiaXQnOgogICAgICAgICAgICBpZiBzZWxmLl9tYW5nbGVfZnJvbV86CiAgICAgICAgICAgICAgICBtc2cuX3BheWxvYWQgPSBmY3JlLnN1YigiPkZyb20gIiwgbXNnLl9wYXlsb2FkKQogICAgICAgICAgICBzZWxmLl93cml0ZV9saW5lcyhtc2cuX3BheWxvYWQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3VwZXIoQnl0ZXNHZW5lcmF0b3Isc2VsZikuX2hhbmRsZV90ZXh0KG1zZykKCiAgICAjIERlZmF1bHQgYm9keSBoYW5kbGVyCiAgICBfd3JpdGVCb2R5ID0gX2hhbmRsZV90ZXh0CgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2NvbXBpbGVfcmUoY2xzLCBzLCBmbGFncyk6CiAgICAgICAgcmV0dXJuIHJlLmNvbXBpbGUocy5lbmNvZGUoJ2FzY2lpJyksIGZsYWdzKQoKCgwKX0ZNVCA9ICdbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXScKCmNsYXNzIERlY29kZWRHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICIiIkdlbmVyYXRlcyBhIHRleHQgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlLgoKICAgIExpa2UgdGhlIEdlbmVyYXRvciBiYXNlIGNsYXNzLCBleGNlcHQgdGhhdCBub24tdGV4dCBwYXJ0cyBhcmUgc3Vic3RpdHV0ZWQKICAgIHdpdGggYSBmb3JtYXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFydC4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsIGZtdD1Ob25lLCAqLAogICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKToKICAgICAgICAiIiJMaWtlIEdlbmVyYXRvci5fX2luaXRfXygpIGV4Y2VwdCB0aGF0IGFuIGFkZGl0aW9uYWwgb3B0aW9uYWwKICAgICAgICBhcmd1bWVudCBpcyBhbGxvd2VkLgoKICAgICAgICBXYWxrcyB0aHJvdWdoIGFsbCBzdWJwYXJ0cyBvZiBhIG1lc3NhZ2UuICBJZiB0aGUgc3VicGFydCBpcyBvZiBtYWluCiAgICAgICAgdHlwZSBgdGV4dCcsIHRoZW4gaXQgcHJpbnRzIHRoZSBkZWNvZGVkIHBheWxvYWQgb2YgdGhlIHN1YnBhcnQuCgogICAgICAgIE90aGVyd2lzZSwgZm10IGlzIGEgZm9ybWF0IHN0cmluZyB0aGF0IGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgbWVzc2FnZQogICAgICAgIHBheWxvYWQuICBmbXQgaXMgZXhwYW5kZWQgd2l0aCB0aGUgZm9sbG93aW5nIGtleXdvcmRzIChpbgogICAgICAgICUoa2V5d29yZClzIGZvcm1hdCk6CgogICAgICAgIHR5cGUgICAgICAgOiBGdWxsIE1JTUUgdHlwZSBvZiB0aGUgbm9uLXRleHQgcGFydAogICAgICAgIG1haW50eXBlICAgOiBNYWluIE1JTUUgdHlwZSBvZiB0aGUgbm9uLXRleHQgcGFydAogICAgICAgIHN1YnR5cGUgICAgOiBTdWItTUlNRSB0eXBlIG9mIHRoZSBub24tdGV4dCBwYXJ0CiAgICAgICAgZmlsZW5hbWUgICA6IEZpbGVuYW1lIG9mIHRoZSBub24tdGV4dCBwYXJ0CiAgICAgICAgZGVzY3JpcHRpb246IERlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9uLXRleHQgcGFydAogICAgICAgIGVuY29kaW5nICAgOiBDb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIG9mIHRoZSBub24tdGV4dCBwYXJ0CgogICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBmbXQgaXMgTm9uZSwgbWVhbmluZwoKICAgICAgICBbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXQogICAgICAgICIiIgogICAgICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fLCBtYXhoZWFkZXJsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kpCiAgICAgICAgaWYgZm10IGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2ZtdCA9IF9GTVQKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9mbXQgPSBmbXQKCiAgICBkZWYgX2Rpc3BhdGNoKHNlbGYsIG1zZyk6CiAgICAgICAgZm9yIHBhcnQgaW4gbXNnLndhbGsoKToKICAgICAgICAgICAgbWFpbnR5cGUgPSBwYXJ0LmdldF9jb250ZW50X21haW50eXBlKCkKICAgICAgICAgICAgaWYgbWFpbnR5cGUgPT0gJ3RleHQnOgogICAgICAgICAgICAgICAgcHJpbnQocGFydC5nZXRfcGF5bG9hZChkZWNvZGU9RmFsc2UpLCBmaWxlPXNlbGYpCiAgICAgICAgICAgIGVsaWYgbWFpbnR5cGUgPT0gJ211bHRpcGFydCc6CiAgICAgICAgICAgICAgICAjIEp1c3Qgc2tpcCB0aGlzCiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludChzZWxmLl9mbXQgJSB7CiAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgICAgIDogcGFydC5nZXRfY29udGVudF90eXBlKCksCiAgICAgICAgICAgICAgICAgICAgJ21haW50eXBlJyAgIDogcGFydC5nZXRfY29udGVudF9tYWludHlwZSgpLAogICAgICAgICAgICAgICAgICAgICdzdWJ0eXBlJyAgICA6IHBhcnQuZ2V0X2NvbnRlbnRfc3VidHlwZSgpLAogICAgICAgICAgICAgICAgICAgICdmaWxlbmFtZScgICA6IHBhcnQuZ2V0X2ZpbGVuYW1lKCdbbm8gZmlsZW5hbWVdJyksCiAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogcGFydC5nZXQoJ0NvbnRlbnQtRGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbbm8gZGVzY3JpcHRpb25dJyksCiAgICAgICAgICAgICAgICAgICAgJ2VuY29kaW5nJyAgIDogcGFydC5nZXQoJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbbm8gZW5jb2RpbmddJyksCiAgICAgICAgICAgICAgICAgICAgfSwgZmlsZT1zZWxmKQoKCgwKIyBIZWxwZXIgdXNlZCBieSBHZW5lcmF0b3IuX21ha2VfYm91bmRhcnkKX3dpZHRoID0gbGVuKHJlcHIoc3lzLm1heHNpemUtMSkpCl9mbXQgPSAnJSUwJWRkJyAlIF93aWR0aAoKIyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5Cl9tYWtlX2JvdW5kYXJ5ID0gR2VuZXJhdG9yLl9tYWtlX2JvdW5kYXJ5ClBLAwQUAAAAAAACIKNWLscooiZeAAAmXgAADwAAAGVtYWlsL2hlYWRlci5weSMgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDcgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBBdXRob3I6IEJlbiBHZXJ0emZpZWxkLCBCYXJyeSBXYXJzYXcKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiSGVhZGVyIGVuY29kaW5nIGFuZCBkZWNvZGluZyBmdW5jdGlvbmFsaXR5LiIiIgoKX19hbGxfXyA9IFsKICAgICdIZWFkZXInLAogICAgJ2RlY29kZV9oZWFkZXInLAogICAgJ21ha2VfaGVhZGVyJywKICAgIF0KCmltcG9ydCByZQppbXBvcnQgYmluYXNjaWkKCmltcG9ydCBlbWFpbC5xdW9wcmltaW1lCmltcG9ydCBlbWFpbC5iYXNlNjRtaW1lCgpmcm9tIGVtYWlsLmVycm9ycyBpbXBvcnQgSGVhZGVyUGFyc2VFcnJvcgpmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0CkNoYXJzZXQgPSBfY2hhcnNldC5DaGFyc2V0CgpOTCA9ICdcbicKU1BBQ0UgPSAnICcKQlNQQUNFID0gYicgJwpTUEFDRTggPSAnICcgKiA4CkVNUFRZU1RSSU5HID0gJycKTUFYTElORUxFTiA9IDc4CkZXUyA9ICcgXHQnCgpVU0FTQ0lJID0gQ2hhcnNldCgndXMtYXNjaWknKQpVVEY4ID0gQ2hhcnNldCgndXRmLTgnKQoKIyBNYXRjaCBlbmNvZGVkLXdvcmQgc3RyaW5ncyBpbiB0aGUgZm9ybSA9P2NoYXJzZXQ/cT9IZWxsb19Xb3JsZD89CmVjcmUgPSByZS5jb21waWxlKHInJycKICA9XD8gICAgICAgICAgICAgICAgICAgIyBsaXRlcmFsID0/CiAgKD9QPGNoYXJzZXQ+W14/XSo/KSAgICMgbm9uLWdyZWVkeSB1cCB0byB0aGUgbmV4dCA/IGlzIHRoZSBjaGFyc2V0CiAgXD8gICAgICAgICAgICAgICAgICAgICMgbGl0ZXJhbCA/CiAgKD9QPGVuY29kaW5nPltxUWJCXSkgICMgZWl0aGVyIGEgInEiIG9yIGEgImIiLCBjYXNlIGluc2Vuc2l0aXZlCiAgXD8gICAgICAgICAgICAgICAgICAgICMgbGl0ZXJhbCA/CiAgKD9QPGVuY29kZWQ+Lio/KSAgICAgICMgbm9uLWdyZWVkeSB1cCB0byB0aGUgbmV4dCA/PSBpcyB0aGUgZW5jb2RlZCBzdHJpbmcKICBcPz0gICAgICAgICAgICAgICAgICAgIyBsaXRlcmFsID89CiAgJycnLCByZS5WRVJCT1NFIHwgcmUuTVVMVElMSU5FKQoKIyBGaWVsZCBuYW1lIHJlZ2V4cCwgaW5jbHVkaW5nIHRyYWlsaW5nIGNvbG9uLCBidXQgbm90IHNlcGFyYXRpbmcgd2hpdGVzcGFjZSwKIyBhY2NvcmRpbmcgdG8gUkZDIDI4MjIuICBDaGFyYWN0ZXIgcmFuZ2UgaXMgZnJvbSB0aWxkZSB0byBleGNsYW1hdGlvbiBtYXJrLgojIEZvciB1c2Ugd2l0aCAubWF0Y2goKQpmY3JlID0gcmUuY29tcGlsZShyJ1tcMDQxLVwxNzZdKzokJykKCiMgRmluZCBhIGhlYWRlciBlbWJlZGRlZCBpbiBhIHB1dGF0aXZlIGhlYWRlciB2YWx1ZS4gIFVzZWQgdG8gY2hlY2sgZm9yCiMgaGVhZGVyIGluamVjdGlvbiBhdHRhY2suCl9lbWJlZGRlZF9oZWFkZXIgPSByZS5jb21waWxlKHInXG5bXiBcdF0rOicpCgoKDAojIEhlbHBlcnMKX21heF9hcHBlbmQgPSBlbWFpbC5xdW9wcmltaW1lLl9tYXhfYXBwZW5kCgoKDApkZWYgZGVjb2RlX2hlYWRlcihoZWFkZXIpOgogICAgIiIiRGVjb2RlIGEgbWVzc2FnZSBoZWFkZXIgdmFsdWUgd2l0aG91dCBjb252ZXJ0aW5nIGNoYXJzZXQuCgogICAgUmV0dXJucyBhIGxpc3Qgb2YgKHN0cmluZywgY2hhcnNldCkgcGFpcnMgY29udGFpbmluZyBlYWNoIG9mIHRoZSBkZWNvZGVkCiAgICBwYXJ0cyBvZiB0aGUgaGVhZGVyLiAgQ2hhcnNldCBpcyBOb25lIGZvciBub24tZW5jb2RlZCBwYXJ0cyBvZiB0aGUgaGVhZGVyLAogICAgb3RoZXJ3aXNlIGEgbG93ZXItY2FzZSBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgY2hhcmFjdGVyIHNldAogICAgc3BlY2lmaWVkIGluIHRoZSBlbmNvZGVkIHN0cmluZy4KCiAgICBoZWFkZXIgbWF5IGJlIGEgc3RyaW5nIHRoYXQgbWF5IG9yIG1heSBub3QgY29udGFpbiBSRkMyMDQ3IGVuY29kZWQgd29yZHMsCiAgICBvciBpdCBtYXkgYmUgYSBIZWFkZXIgb2JqZWN0LgoKICAgIEFuIGVtYWlsLmVycm9ycy5IZWFkZXJQYXJzZUVycm9yIG1heSBiZSByYWlzZWQgd2hlbiBjZXJ0YWluIGRlY29kaW5nIGVycm9yCiAgICBvY2N1cnMgKGUuZy4gYSBiYXNlNjQgZGVjb2RpbmcgZXhjZXB0aW9uKS4KICAgICIiIgogICAgIyBJZiBpdCBpcyBhIEhlYWRlciBvYmplY3QsIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgZW5jb2RlZCBjaHVua3MuCiAgICBpZiBoYXNhdHRyKGhlYWRlciwgJ19jaHVua3MnKToKICAgICAgICByZXR1cm4gWyhfY2hhcnNldC5fZW5jb2RlKHN0cmluZywgc3RyKGNoYXJzZXQpKSwgc3RyKGNoYXJzZXQpKQogICAgICAgICAgICAgICAgICAgIGZvciBzdHJpbmcsIGNoYXJzZXQgaW4gaGVhZGVyLl9jaHVua3NdCiAgICAjIElmIG5vIGVuY29kaW5nLCBqdXN0IHJldHVybiB0aGUgaGVhZGVyIHdpdGggbm8gY2hhcnNldC4KICAgIGlmIG5vdCBlY3JlLnNlYXJjaChoZWFkZXIpOgogICAgICAgIHJldHVybiBbKGhlYWRlciwgTm9uZSldCiAgICAjIEZpcnN0IHN0ZXAgaXMgdG8gcGFyc2UgYWxsIHRoZSBlbmNvZGVkIHBhcnRzIGludG8gdHJpcGxldHMgb2YgdGhlIGZvcm0KICAgICMgKGVuY29kZWRfc3RyaW5nLCBlbmNvZGluZywgY2hhcnNldCkuICBGb3IgdW5lbmNvZGVkIHN0cmluZ3MsIHRoZSBsYXN0CiAgICAjIHR3byBwYXJ0cyB3aWxsIGJlIE5vbmUuCiAgICB3b3JkcyA9IFtdCiAgICBmb3IgbGluZSBpbiBoZWFkZXIuc3BsaXRsaW5lcygpOgogICAgICAgIHBhcnRzID0gZWNyZS5zcGxpdChsaW5lKQogICAgICAgIGZpcnN0ID0gVHJ1ZQogICAgICAgIHdoaWxlIHBhcnRzOgogICAgICAgICAgICB1bmVuY29kZWQgPSBwYXJ0cy5wb3AoMCkKICAgICAgICAgICAgaWYgZmlyc3Q6CiAgICAgICAgICAgICAgICB1bmVuY29kZWQgPSB1bmVuY29kZWQubHN0cmlwKCkKICAgICAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKICAgICAgICAgICAgaWYgdW5lbmNvZGVkOgogICAgICAgICAgICAgICAgd29yZHMuYXBwZW5kKCh1bmVuY29kZWQsIE5vbmUsIE5vbmUpKQogICAgICAgICAgICBpZiBwYXJ0czoKICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBwYXJ0cy5wb3AoMCkubG93ZXIoKQogICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBwYXJ0cy5wb3AoMCkubG93ZXIoKQogICAgICAgICAgICAgICAgZW5jb2RlZCA9IHBhcnRzLnBvcCgwKQogICAgICAgICAgICAgICAgd29yZHMuYXBwZW5kKChlbmNvZGVkLCBlbmNvZGluZywgY2hhcnNldCkpCiAgICAjIE5vdyBsb29wIG92ZXIgd29yZHMgYW5kIHJlbW92ZSB3b3JkcyB0aGF0IGNvbnNpc3Qgb2Ygd2hpdGVzcGFjZQogICAgIyBiZXR3ZWVuIHR3byBlbmNvZGVkIHN0cmluZ3MuCiAgICBkcm9wbGlzdCA9IFtdCiAgICBmb3IgbiwgdyBpbiBlbnVtZXJhdGUod29yZHMpOgogICAgICAgIGlmIG4+MSBhbmQgd1sxXSBhbmQgd29yZHNbbi0yXVsxXSBhbmQgd29yZHNbbi0xXVswXS5pc3NwYWNlKCk6CiAgICAgICAgICAgIGRyb3BsaXN0LmFwcGVuZChuLTEpCiAgICBmb3IgZCBpbiByZXZlcnNlZChkcm9wbGlzdCk6CiAgICAgICAgZGVsIHdvcmRzW2RdCgogICAgIyBUaGUgbmV4dCBzdGVwIGlzIHRvIGRlY29kZSBlYWNoIGVuY29kZWQgd29yZCBieSBhcHBseWluZyB0aGUgcmV2ZXJzZQogICAgIyBiYXNlNjQgb3IgcXVvcHJpIHRyYW5zZm9ybWF0aW9uLiAgZGVjb2RlZF93b3JkcyBpcyBub3cgYSBsaXN0IG9mIHRoZQogICAgIyBmb3JtIChkZWNvZGVkX3dvcmQsIGNoYXJzZXQpLgogICAgZGVjb2RlZF93b3JkcyA9IFtdCiAgICBmb3IgZW5jb2RlZF9zdHJpbmcsIGVuY29kaW5nLCBjaGFyc2V0IGluIHdvcmRzOgogICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICMgVGhpcyBpcyBhbiB1bmVuY29kZWQgd29yZC4KICAgICAgICAgICAgZGVjb2RlZF93b3Jkcy5hcHBlbmQoKGVuY29kZWRfc3RyaW5nLCBjaGFyc2V0KSkKICAgICAgICBlbGlmIGVuY29kaW5nID09ICdxJzoKICAgICAgICAgICAgd29yZCA9IGVtYWlsLnF1b3ByaW1pbWUuaGVhZGVyX2RlY29kZShlbmNvZGVkX3N0cmluZykKICAgICAgICAgICAgZGVjb2RlZF93b3Jkcy5hcHBlbmQoKHdvcmQsIGNoYXJzZXQpKQogICAgICAgIGVsaWYgZW5jb2RpbmcgPT0gJ2InOgogICAgICAgICAgICBwYWRlcnIgPSBsZW4oZW5jb2RlZF9zdHJpbmcpICUgNCAgICMgUG9zdGVsJ3MgbGF3OiBhZGQgbWlzc2luZyBwYWRkaW5nCiAgICAgICAgICAgIGlmIHBhZGVycjoKICAgICAgICAgICAgICAgIGVuY29kZWRfc3RyaW5nICs9ICc9PT0nWzo0IC0gcGFkZXJyXQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB3b3JkID0gZW1haWwuYmFzZTY0bWltZS5kZWNvZGUoZW5jb2RlZF9zdHJpbmcpCiAgICAgICAgICAgIGV4Y2VwdCBiaW5hc2NpaS5FcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIEhlYWRlclBhcnNlRXJyb3IoJ0Jhc2U2NCBkZWNvZGluZyBlcnJvcicpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkZWNvZGVkX3dvcmRzLmFwcGVuZCgod29yZCwgY2hhcnNldCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ1VuZXhwZWN0ZWQgZW5jb2Rpbmc6ICcgKyBlbmNvZGluZykKICAgICMgTm93IGNvbnZlcnQgYWxsIHdvcmRzIHRvIGJ5dGVzIGFuZCBjb2xsYXBzZSBjb25zZWN1dGl2ZSBydW5zIG9mCiAgICAjIHNpbWlsYXJseSBlbmNvZGVkIHdvcmRzLgogICAgY29sbGFwc2VkID0gW10KICAgIGxhc3Rfd29yZCA9IGxhc3RfY2hhcnNldCA9IE5vbmUKICAgIGZvciB3b3JkLCBjaGFyc2V0IGluIGRlY29kZWRfd29yZHM6CiAgICAgICAgaWYgaXNpbnN0YW5jZSh3b3JkLCBzdHIpOgogICAgICAgICAgICB3b3JkID0gYnl0ZXMod29yZCwgJ3Jhdy11bmljb2RlLWVzY2FwZScpCiAgICAgICAgaWYgbGFzdF93b3JkIGlzIE5vbmU6CiAgICAgICAgICAgIGxhc3Rfd29yZCA9IHdvcmQKICAgICAgICAgICAgbGFzdF9jaGFyc2V0ID0gY2hhcnNldAogICAgICAgIGVsaWYgY2hhcnNldCAhPSBsYXN0X2NoYXJzZXQ6CiAgICAgICAgICAgIGNvbGxhcHNlZC5hcHBlbmQoKGxhc3Rfd29yZCwgbGFzdF9jaGFyc2V0KSkKICAgICAgICAgICAgbGFzdF93b3JkID0gd29yZAogICAgICAgICAgICBsYXN0X2NoYXJzZXQgPSBjaGFyc2V0CiAgICAgICAgZWxpZiBsYXN0X2NoYXJzZXQgaXMgTm9uZToKICAgICAgICAgICAgbGFzdF93b3JkICs9IEJTUEFDRSArIHdvcmQKICAgICAgICBlbHNlOgogICAgICAgICAgICBsYXN0X3dvcmQgKz0gd29yZAogICAgY29sbGFwc2VkLmFwcGVuZCgobGFzdF93b3JkLCBsYXN0X2NoYXJzZXQpKQogICAgcmV0dXJuIGNvbGxhcHNlZAoKCgwKZGVmIG1ha2VfaGVhZGVyKGRlY29kZWRfc2VxLCBtYXhsaW5lbGVuPU5vbmUsIGhlYWRlcl9uYW1lPU5vbmUsCiAgICAgICAgICAgICAgICBjb250aW51YXRpb25fd3M9JyAnKToKICAgICIiIkNyZWF0ZSBhIEhlYWRlciBmcm9tIGEgc2VxdWVuY2Ugb2YgcGFpcnMgYXMgcmV0dXJuZWQgYnkgZGVjb2RlX2hlYWRlcigpCgogICAgZGVjb2RlX2hlYWRlcigpIHRha2VzIGEgaGVhZGVyIHZhbHVlIHN0cmluZyBhbmQgcmV0dXJucyBhIHNlcXVlbmNlIG9mCiAgICBwYWlycyBvZiB0aGUgZm9ybWF0IChkZWNvZGVkX3N0cmluZywgY2hhcnNldCkgd2hlcmUgY2hhcnNldCBpcyB0aGUgc3RyaW5nCiAgICBuYW1lIG9mIHRoZSBjaGFyYWN0ZXIgc2V0LgoKICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgb25lIG9mIHRob3NlIHNlcXVlbmNlIG9mIHBhaXJzIGFuZCByZXR1cm5zIGEgSGVhZGVyCiAgICBpbnN0YW5jZS4gIE9wdGlvbmFsIG1heGxpbmVsZW4sIGhlYWRlcl9uYW1lLCBhbmQgY29udGludWF0aW9uX3dzIGFyZSBhcyBpbgogICAgdGhlIEhlYWRlciBjb25zdHJ1Y3Rvci4KICAgICIiIgogICAgaCA9IEhlYWRlcihtYXhsaW5lbGVuPW1heGxpbmVsZW4sIGhlYWRlcl9uYW1lPWhlYWRlcl9uYW1lLAogICAgICAgICAgICAgICBjb250aW51YXRpb25fd3M9Y29udGludWF0aW9uX3dzKQogICAgZm9yIHMsIGNoYXJzZXQgaW4gZGVjb2RlZF9zZXE6CiAgICAgICAgIyBOb25lIG1lYW5zIHVzLWFzY2lpIGJ1dCB3ZSBjYW4gc2ltcGx5IHBhc3MgaXQgb24gdG8gaC5hcHBlbmQoKQogICAgICAgIGlmIGNoYXJzZXQgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGNoYXJzZXQsIENoYXJzZXQpOgogICAgICAgICAgICBjaGFyc2V0ID0gQ2hhcnNldChjaGFyc2V0KQogICAgICAgIGguYXBwZW5kKHMsIGNoYXJzZXQpCiAgICByZXR1cm4gaAoKCgwKY2xhc3MgSGVhZGVyOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHM9Tm9uZSwgY2hhcnNldD1Ob25lLAogICAgICAgICAgICAgICAgIG1heGxpbmVsZW49Tm9uZSwgaGVhZGVyX25hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICBjb250aW51YXRpb25fd3M9JyAnLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgICIiIkNyZWF0ZSBhIE1JTUUtY29tcGxpYW50IGhlYWRlciB0aGF0IGNhbiBjb250YWluIG1hbnkgY2hhcmFjdGVyIHNldHMuCgogICAgICAgIE9wdGlvbmFsIHMgaXMgdGhlIGluaXRpYWwgaGVhZGVyIHZhbHVlLiAgSWYgTm9uZSwgdGhlIGluaXRpYWwgaGVhZGVyCiAgICAgICAgdmFsdWUgaXMgbm90IHNldC4gIFlvdSBjYW4gbGF0ZXIgYXBwZW5kIHRvIHRoZSBoZWFkZXIgd2l0aCAuYXBwZW5kKCkKICAgICAgICBtZXRob2QgY2FsbHMuICBzIG1heSBiZSBhIGJ5dGUgc3RyaW5nIG9yIGEgVW5pY29kZSBzdHJpbmcsIGJ1dCBzZWUgdGhlCiAgICAgICAgLmFwcGVuZCgpIGRvY3VtZW50YXRpb24gZm9yIHNlbWFudGljcy4KCiAgICAgICAgT3B0aW9uYWwgY2hhcnNldCBzZXJ2ZXMgdHdvIHB1cnBvc2VzOiBpdCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUKICAgICAgICBjaGFyc2V0IGFyZ3VtZW50IHRvIHRoZSAuYXBwZW5kKCkgbWV0aG9kLiAgSXQgYWxzbyBzZXRzIHRoZSBkZWZhdWx0CiAgICAgICAgY2hhcmFjdGVyIHNldCBmb3IgYWxsIHN1YnNlcXVlbnQgLmFwcGVuZCgpIGNhbGxzIHRoYXQgb21pdCB0aGUgY2hhcnNldAogICAgICAgIGFyZ3VtZW50LiAgSWYgY2hhcnNldCBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCB0aGUgdXMtYXNjaWkKICAgICAgICBjaGFyc2V0IGlzIHVzZWQgYm90aCBhcyBzJ3MgaW5pdGlhbCBjaGFyc2V0IGFuZCBhcyB0aGUgZGVmYXVsdCBmb3IKICAgICAgICBzdWJzZXF1ZW50IC5hcHBlbmQoKSBjYWxscy4KCiAgICAgICAgVGhlIG1heGltdW0gbGluZSBsZW5ndGggY2FuIGJlIHNwZWNpZmllZCBleHBsaWNpdGx5IHZpYSBtYXhsaW5lbGVuLiBGb3IKICAgICAgICBzcGxpdHRpbmcgdGhlIGZpcnN0IGxpbmUgdG8gYSBzaG9ydGVyIHZhbHVlICh0byBhY2NvdW50IGZvciB0aGUgZmllbGQKICAgICAgICBoZWFkZXIgd2hpY2ggaXNuJ3QgaW5jbHVkZWQgaW4gcywgZS5nLiBgU3ViamVjdCcpIHBhc3MgaW4gdGhlIG5hbWUgb2YKICAgICAgICB0aGUgZmllbGQgaW4gaGVhZGVyX25hbWUuICBUaGUgZGVmYXVsdCBtYXhsaW5lbGVuIGlzIDc4IGFzIHJlY29tbWVuZGVkCiAgICAgICAgYnkgUkZDIDI4MjIuCgogICAgICAgIGNvbnRpbnVhdGlvbl93cyBtdXN0IGJlIFJGQyAyODIyIGNvbXBsaWFudCBmb2xkaW5nIHdoaXRlc3BhY2UgKHVzdWFsbHkKICAgICAgICBlaXRoZXIgYSBzcGFjZSBvciBhIGhhcmQgdGFiKSB3aGljaCB3aWxsIGJlIHByZXBlbmRlZCB0byBjb250aW51YXRpb24KICAgICAgICBsaW5lcy4KCiAgICAgICAgZXJyb3JzIGlzIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSAuYXBwZW5kKCkgY2FsbC4KICAgICAgICAiIiIKICAgICAgICBpZiBjaGFyc2V0IGlzIE5vbmU6CiAgICAgICAgICAgIGNoYXJzZXQgPSBVU0FTQ0lJCiAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShjaGFyc2V0LCBDaGFyc2V0KToKICAgICAgICAgICAgY2hhcnNldCA9IENoYXJzZXQoY2hhcnNldCkKICAgICAgICBzZWxmLl9jaGFyc2V0ID0gY2hhcnNldAogICAgICAgIHNlbGYuX2NvbnRpbnVhdGlvbl93cyA9IGNvbnRpbnVhdGlvbl93cwogICAgICAgIHNlbGYuX2NodW5rcyA9IFtdCiAgICAgICAgaWYgcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5hcHBlbmQocywgY2hhcnNldCwgZXJyb3JzKQogICAgICAgIGlmIG1heGxpbmVsZW4gaXMgTm9uZToKICAgICAgICAgICAgbWF4bGluZWxlbiA9IE1BWExJTkVMRU4KICAgICAgICBzZWxmLl9tYXhsaW5lbGVuID0gbWF4bGluZWxlbgogICAgICAgIGlmIGhlYWRlcl9uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2hlYWRlcmxlbiA9IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFRha2UgdGhlIHNlcGFyYXRpbmcgY29sb24gYW5kIHNwYWNlIGludG8gYWNjb3VudC4KICAgICAgICAgICAgc2VsZi5faGVhZGVybGVuID0gbGVuKGhlYWRlcl9uYW1lKSArIDIKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgaGVhZGVyLiIiIgogICAgICAgIHNlbGYuX25vcm1hbGl6ZSgpCiAgICAgICAgdWNodW5rcyA9IFtdCiAgICAgICAgbGFzdGNzID0gTm9uZQogICAgICAgIGxhc3RzcGFjZSA9IE5vbmUKICAgICAgICBmb3Igc3RyaW5nLCBjaGFyc2V0IGluIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgIyBXZSBtdXN0IHByZXNlcnZlIHNwYWNlcyBiZXR3ZWVuIGVuY29kZWQgYW5kIG5vbi1lbmNvZGVkIHdvcmQKICAgICAgICAgICAgIyBib3VuZGFyaWVzLCB3aGljaCBtZWFucyBmb3IgdXMgd2UgbmVlZCB0byBhZGQgYSBzcGFjZSB3aGVuIHdlIGdvCiAgICAgICAgICAgICMgZnJvbSBhIGNoYXJzZXQgdG8gTm9uZS91cy1hc2NpaSwgb3IgZnJvbSBOb25lL3VzLWFzY2lpIHRvIGEKICAgICAgICAgICAgIyBjaGFyc2V0LiAgT25seSBkbyB0aGlzIGZvciB0aGUgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGNodW5rcy4KICAgICAgICAgICAgIyBEb24ndCBhZGQgYSBzcGFjZSBpZiB0aGUgTm9uZS91cy1hc2NpaSBzdHJpbmcgYWxyZWFkeSBoYXMKICAgICAgICAgICAgIyBhIHNwYWNlICh0cmFpbGluZyBvciBsZWFkaW5nIGRlcGVuZGluZyBvbiB0cmFuc2l0aW9uKQogICAgICAgICAgICBuZXh0Y3MgPSBjaGFyc2V0CiAgICAgICAgICAgIGlmIG5leHRjcyA9PSBfY2hhcnNldC5VTktOT1dOOEJJVDoKICAgICAgICAgICAgICAgIG9yaWdpbmFsX2J5dGVzID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgICAgICAgIHN0cmluZyA9IG9yaWdpbmFsX2J5dGVzLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCiAgICAgICAgICAgIGlmIHVjaHVua3M6CiAgICAgICAgICAgICAgICBoYXNzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWzBdKQogICAgICAgICAgICAgICAgaWYgbGFzdGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CiAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNzIGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGhhc3NwYWNlOgogICAgICAgICAgICAgICAgICAgICAgICB1Y2h1bmtzLmFwcGVuZChTUEFDRSkKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNzID0gTm9uZQogICAgICAgICAgICAgICAgZWxpZiBuZXh0Y3Mgbm90IGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGxhc3RzcGFjZToKICAgICAgICAgICAgICAgICAgICB1Y2h1bmtzLmFwcGVuZChTUEFDRSkKICAgICAgICAgICAgbGFzdHNwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbLTFdKQogICAgICAgICAgICBsYXN0Y3MgPSBuZXh0Y3MKICAgICAgICAgICAgdWNodW5rcy5hcHBlbmQoc3RyaW5nKQogICAgICAgIHJldHVybiBFTVBUWVNUUklORy5qb2luKHVjaHVua3MpCgogICAgIyBSaWNoIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlcXVhbGl0eSBvbmx5LiAgQkFXOiBkb2VzIGl0IG1ha2Ugc2Vuc2UgdG8KICAgICMgaGF2ZSBvciBleHBsaWNpdGx5IGRpc2FibGUgPCwgPD0sID4sID49IG9wZXJhdG9ycz8KICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICMgb3RoZXIgbWF5IGJlIGEgSGVhZGVyIG9yIGEgc3RyaW5nLiAgQm90aCBhcmUgZmluZSBzbyBjb2VyY2UKICAgICAgICAjIG91cnNlbHZlcyB0byBhIHVuaWNvZGUgKG9mIHRoZSB1bmVuY29kZWQgaGVhZGVyIHZhbHVlKSwgc3dhcCB0aGUKICAgICAgICAjIGFyZ3MgYW5kIGRvIGFub3RoZXIgY29tcGFyaXNvbi4KICAgICAgICByZXR1cm4gb3RoZXIgPT0gc3RyKHNlbGYpCgogICAgZGVmIGFwcGVuZChzZWxmLCBzLCBjaGFyc2V0PU5vbmUsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgIiIiQXBwZW5kIGEgc3RyaW5nIHRvIHRoZSBNSU1FIGhlYWRlci4KCiAgICAgICAgT3B0aW9uYWwgY2hhcnNldCwgaWYgZ2l2ZW4sIHNob3VsZCBiZSBhIENoYXJzZXQgaW5zdGFuY2Ugb3IgdGhlIG5hbWUKICAgICAgICBvZiBhIGNoYXJhY3RlciBzZXQgKHdoaWNoIHdpbGwgYmUgY29udmVydGVkIHRvIGEgQ2hhcnNldCBpbnN0YW5jZSkuICBBCiAgICAgICAgdmFsdWUgb2YgTm9uZSAodGhlIGRlZmF1bHQpIG1lYW5zIHRoYXQgdGhlIGNoYXJzZXQgZ2l2ZW4gaW4gdGhlCiAgICAgICAgY29uc3RydWN0b3IgaXMgdXNlZC4KCiAgICAgICAgcyBtYXkgYmUgYSBieXRlIHN0cmluZyBvciBhIFVuaWNvZGUgc3RyaW5nLiAgSWYgaXQgaXMgYSBieXRlIHN0cmluZwogICAgICAgIChpLmUuIGlzaW5zdGFuY2Uocywgc3RyKSBpcyBmYWxzZSksIHRoZW4gY2hhcnNldCBpcyB0aGUgZW5jb2Rpbmcgb2YKICAgICAgICB0aGF0IGJ5dGUgc3RyaW5nLCBhbmQgYSBVbmljb2RlRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgdGhlIHN0cmluZwogICAgICAgIGNhbm5vdCBiZSBkZWNvZGVkIHdpdGggdGhhdCBjaGFyc2V0LiAgSWYgcyBpcyBhIFVuaWNvZGUgc3RyaW5nLCB0aGVuCiAgICAgICAgY2hhcnNldCBpcyBhIGhpbnQgc3BlY2lmeWluZyB0aGUgY2hhcmFjdGVyIHNldCBvZiB0aGUgY2hhcmFjdGVycyBpbgogICAgICAgIHRoZSBzdHJpbmcuICBJbiBlaXRoZXIgY2FzZSwgd2hlbiBwcm9kdWNpbmcgYW4gUkZDIDI4MjIgY29tcGxpYW50CiAgICAgICAgaGVhZGVyIHVzaW5nIFJGQyAyMDQ3IHJ1bGVzLCB0aGUgc3RyaW5nIHdpbGwgYmUgZW5jb2RlZCB1c2luZyB0aGUKICAgICAgICBvdXRwdXQgY29kZWMgb2YgdGhlIGNoYXJzZXQuICBJZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBlbmNvZGVkIHRvIHRoZQogICAgICAgIG91dHB1dCBjb2RlYywgYSBVbmljb2RlRXJyb3Igd2lsbCBiZSByYWlzZWQuCgogICAgICAgIE9wdGlvbmFsIGBlcnJvcnMnIGlzIHBhc3NlZCBhcyB0aGUgZXJyb3JzIGFyZ3VtZW50IHRvIHRoZSBkZWNvZGUKICAgICAgICBjYWxsIGlmIHMgaXMgYSBieXRlIHN0cmluZy4KICAgICAgICAiIiIKICAgICAgICBpZiBjaGFyc2V0IGlzIE5vbmU6CiAgICAgICAgICAgIGNoYXJzZXQgPSBzZWxmLl9jaGFyc2V0CiAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShjaGFyc2V0LCBDaGFyc2V0KToKICAgICAgICAgICAgY2hhcnNldCA9IENoYXJzZXQoY2hhcnNldCkKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOgogICAgICAgICAgICBpbnB1dF9jaGFyc2V0ID0gY2hhcnNldC5pbnB1dF9jb2RlYyBvciAndXMtYXNjaWknCiAgICAgICAgICAgIGlmIGlucHV0X2NoYXJzZXQgPT0gX2NoYXJzZXQuVU5LTk9XTjhCSVQ6CiAgICAgICAgICAgICAgICBzID0gcy5kZWNvZGUoJ3VzLWFzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzID0gcy5kZWNvZGUoaW5wdXRfY2hhcnNldCwgZXJyb3JzKQogICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIGJ5dGVzIHdlJ3JlIHN0b3JpbmcgY2FuIGJlIGRlY29kZWQgdG8gdGhlIG91dHB1dAogICAgICAgICMgY2hhcmFjdGVyIHNldCwgb3RoZXJ3aXNlIGFuIGVhcmx5IGVycm9yIGlzIHJhaXNlZC4KICAgICAgICBvdXRwdXRfY2hhcnNldCA9IGNoYXJzZXQub3V0cHV0X2NvZGVjIG9yICd1cy1hc2NpaScKICAgICAgICBpZiBvdXRwdXRfY2hhcnNldCAhPSBfY2hhcnNldC5VTktOT1dOOEJJVDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcy5lbmNvZGUob3V0cHV0X2NoYXJzZXQsIGVycm9ycykKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgIGlmIG91dHB1dF9jaGFyc2V0IT0ndXMtYXNjaWknOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICBjaGFyc2V0ID0gVVRGOAogICAgICAgIHNlbGYuX2NodW5rcy5hcHBlbmQoKHMsIGNoYXJzZXQpKQoKICAgIGRlZiBfbm9uY3RleHQoc2VsZiwgcyk6CiAgICAgICAgIiIiVHJ1ZSBpZiBzdHJpbmcgcyBpcyBub3QgYSBjdGV4dCBjaGFyYWN0ZXIgb2YgUkZDODIyLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzLmlzc3BhY2UoKSBvciBzIGluICgnKCcsICcpJywgJ1xcJykKCiAgICBkZWYgZW5jb2RlKHNlbGYsIHNwbGl0Y2hhcnM9JzssIFx0JywgbWF4bGluZWxlbj1Ob25lLCBsaW5lc2VwPSdcbicpOgogICAgICAgIHIiIiJFbmNvZGUgYSBtZXNzYWdlIGhlYWRlciBpbnRvIGFuIFJGQy1jb21wbGlhbnQgZm9ybWF0LgoKICAgICAgICBUaGVyZSBhcmUgbWFueSBpc3N1ZXMgaW52b2x2ZWQgaW4gY29udmVydGluZyBhIGdpdmVuIHN0cmluZyBmb3IgdXNlIGluCiAgICAgICAgYW4gZW1haWwgaGVhZGVyLiAgT25seSBjZXJ0YWluIGNoYXJhY3RlciBzZXRzIGFyZSByZWFkYWJsZSBpbiBtb3N0CiAgICAgICAgZW1haWwgY2xpZW50cywgYW5kIGFzIGhlYWRlciBzdHJpbmdzIGNhbiBvbmx5IGNvbnRhaW4gYSBzdWJzZXQgb2YKICAgICAgICA3LWJpdCBBU0NJSSwgY2FyZSBtdXN0IGJlIHRha2VuIHRvIHByb3Blcmx5IGNvbnZlcnQgYW5kIGVuY29kZSAod2l0aAogICAgICAgIEJhc2U2NCBvciBxdW90ZWQtcHJpbnRhYmxlKSBoZWFkZXIgc3RyaW5ncy4gIEluIGFkZGl0aW9uLCB0aGVyZSBpcyBhCiAgICAgICAgNzUtY2hhcmFjdGVyIGxlbmd0aCBsaW1pdCBvbiBhbnkgZ2l2ZW4gZW5jb2RlZCBoZWFkZXIgZmllbGQsIHNvCiAgICAgICAgbGluZS13cmFwcGluZyBtdXN0IGJlIHBlcmZvcm1lZCwgZXZlbiB3aXRoIGRvdWJsZS1ieXRlIGNoYXJhY3RlciBzZXRzLgoKICAgICAgICBPcHRpb25hbCBtYXhsaW5lbGVuIHNwZWNpZmllcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgZWFjaCBnZW5lcmF0ZWQKICAgICAgICBsaW5lLCBleGNsdXNpdmUgb2YgdGhlIGxpbmVzZXAgc3RyaW5nLiAgSW5kaXZpZHVhbCBsaW5lcyBtYXkgYmUgbG9uZ2VyCiAgICAgICAgdGhhbiBtYXhsaW5lbGVuIGlmIGEgZm9sZGluZyBwb2ludCBjYW5ub3QgYmUgZm91bmQuICBUaGUgZmlyc3QgbGluZQogICAgICAgIHdpbGwgYmUgc2hvcnRlciBieSB0aGUgbGVuZ3RoIG9mIHRoZSBoZWFkZXIgbmFtZSBwbHVzICI6ICIgaWYgYSBoZWFkZXIKICAgICAgICBuYW1lIHdhcyBzcGVjaWZpZWQgYXQgSGVhZGVyIGNvbnN0cnVjdGlvbiB0aW1lLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yCiAgICAgICAgbWF4bGluZWxlbiBpcyBkZXRlcm1pbmVkIGF0IGhlYWRlciBjb25zdHJ1Y3Rpb24gdGltZS4KCiAgICAgICAgT3B0aW9uYWwgc3BsaXRjaGFycyBpcyBhIHN0cmluZyBjb250YWluaW5nIGNoYXJhY3RlcnMgd2hpY2ggc2hvdWxkIGJlCiAgICAgICAgZ2l2ZW4gZXh0cmEgd2VpZ2h0IGJ5IHRoZSBzcGxpdHRpbmcgYWxnb3JpdGhtIGR1cmluZyBub3JtYWwgaGVhZGVyCiAgICAgICAgd3JhcHBpbmcuICBUaGlzIGlzIGluIHZlcnkgcm91Z2ggc3VwcG9ydCBvZiBSRkMgMjgyMidzIGBoaWdoZXIgbGV2ZWwKICAgICAgICBzeW50YWN0aWMgYnJlYWtzJzogIHNwbGl0IHBvaW50cyBwcmVjZWRlZCBieSBhIHNwbGl0Y2hhciBhcmUgcHJlZmVycmVkCiAgICAgICAgZHVyaW5nIGxpbmUgc3BsaXR0aW5nLCB3aXRoIHRoZSBjaGFyYWN0ZXJzIHByZWZlcnJlZCBpbiB0aGUgb3JkZXIgaW4KICAgICAgICB3aGljaCB0aGV5IGFwcGVhciBpbiB0aGUgc3RyaW5nLiAgU3BhY2UgYW5kIHRhYiBtYXkgYmUgaW5jbHVkZWQgaW4gdGhlCiAgICAgICAgc3RyaW5nIHRvIGluZGljYXRlIHdoZXRoZXIgcHJlZmVyZW5jZSBzaG91bGQgYmUgZ2l2ZW4gdG8gb25lIG92ZXIgdGhlCiAgICAgICAgb3RoZXIgYXMgYSBzcGxpdCBwb2ludCB3aGVuIG90aGVyIHNwbGl0IGNoYXJzIGRvIG5vdCBhcHBlYXIgaW4gdGhlIGxpbmUKICAgICAgICBiZWluZyBzcGxpdC4gIFNwbGl0Y2hhcnMgZG9lcyBub3QgYWZmZWN0IFJGQyAyMDQ3IGVuY29kZWQgbGluZXMuCgogICAgICAgIE9wdGlvbmFsIGxpbmVzZXAgaXMgYSBzdHJpbmcgdG8gYmUgdXNlZCB0byBzZXBhcmF0ZSB0aGUgbGluZXMgb2YKICAgICAgICB0aGUgdmFsdWUuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgbW9zdCB1c2VmdWwgZm9yIHR5cGljYWwKICAgICAgICBQeXRob24gYXBwbGljYXRpb25zLCBidXQgaXQgY2FuIGJlIHNldCB0byBcclxuIHRvIHByb2R1Y2UgUkZDLWNvbXBsaWFudAogICAgICAgIGxpbmUgc2VwYXJhdG9ycyB3aGVuIG5lZWRlZC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9ub3JtYWxpemUoKQogICAgICAgIGlmIG1heGxpbmVsZW4gaXMgTm9uZToKICAgICAgICAgICAgbWF4bGluZWxlbiA9IHNlbGYuX21heGxpbmVsZW4KICAgICAgICAjIEEgbWF4bGluZWxlbiBvZiAwIG1lYW5zIGRvbid0IHdyYXAuICBGb3IgYWxsIHByYWN0aWNhbCBwdXJwb3NlcywKICAgICAgICAjIGNob29zaW5nIGEgaHVnZSBudW1iZXIgaGVyZSBhY2NvbXBsaXNoZXMgdGhhdCBhbmQgbWFrZXMgdGhlCiAgICAgICAgIyBfVmFsdWVGb3JtYXR0ZXIgYWxnb3JpdGhtIG11Y2ggc2ltcGxlci4KICAgICAgICBpZiBtYXhsaW5lbGVuID09IDA6CiAgICAgICAgICAgIG1heGxpbmVsZW4gPSAxMDAwMDAwCiAgICAgICAgZm9ybWF0dGVyID0gX1ZhbHVlRm9ybWF0dGVyKHNlbGYuX2hlYWRlcmxlbiwgbWF4bGluZWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udGludWF0aW9uX3dzLCBzcGxpdGNoYXJzKQogICAgICAgIGxhc3RjcyA9IE5vbmUKICAgICAgICBoYXNzcGFjZSA9IGxhc3RzcGFjZSA9IE5vbmUKICAgICAgICBmb3Igc3RyaW5nLCBjaGFyc2V0IGluIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgaWYgaGFzc3BhY2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBoYXNzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWzBdKQogICAgICAgICAgICAgICAgaWYgbGFzdGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc3NwYWNlIG9yIGNoYXJzZXQgbm90IGluIChOb25lLCAndXMtYXNjaWknKToKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKICAgICAgICAgICAgICAgIGVsaWYgY2hhcnNldCBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpIGFuZCBub3QgbGFzdHNwYWNlOgogICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCiAgICAgICAgICAgIGxhc3RzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWy0xXSkKICAgICAgICAgICAgbGFzdGNzID0gY2hhcnNldAogICAgICAgICAgICBoYXNzcGFjZSA9IEZhbHNlCiAgICAgICAgICAgIGxpbmVzID0gc3RyaW5nLnNwbGl0bGluZXMoKQogICAgICAgICAgICBpZiBsaW5lczoKICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mZWVkKCcnLCBsaW5lc1swXSwgY2hhcnNldCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mZWVkKCcnLCAnJywgY2hhcnNldCkKICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNbMTpdOgogICAgICAgICAgICAgICAgZm9ybWF0dGVyLm5ld2xpbmUoKQogICAgICAgICAgICAgICAgaWYgY2hhcnNldC5oZWFkZXJfZW5jb2RpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZlZWQoc2VsZi5fY29udGludWF0aW9uX3dzLCAnICcgKyBsaW5lLmxzdHJpcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNsaW5lID0gbGluZS5sc3RyaXAoKQogICAgICAgICAgICAgICAgICAgIGZ3cyA9IGxpbmVbOmxlbihsaW5lKS1sZW4oc2xpbmUpXQogICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mZWVkKGZ3cywgc2xpbmUsIGNoYXJzZXQpCiAgICAgICAgICAgIGlmIGxlbihsaW5lcykgPiAxOgogICAgICAgICAgICAgICAgZm9ybWF0dGVyLm5ld2xpbmUoKQogICAgICAgIGlmIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlci5fc3RyKGxpbmVzZXApCiAgICAgICAgaWYgX2VtYmVkZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgogICAgICAgICAgICByYWlzZSBIZWFkZXJQYXJzZUVycm9yKCJoZWFkZXIgdmFsdWUgYXBwZWFycyB0byBjb250YWluICIKICAgICAgICAgICAgICAgICJhbiBlbWJlZGRlZCBoZWFkZXI6IHshcn0iLmZvcm1hdCh2YWx1ZSkpCiAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgZGVmIF9ub3JtYWxpemUoc2VsZik6CiAgICAgICAgIyBTdGVwIDE6IE5vcm1hbGl6ZSB0aGUgY2h1bmtzIHNvIHRoYXQgYWxsIHJ1bnMgb2YgaWRlbnRpY2FsIGNoYXJzZXRzCiAgICAgICAgIyBnZXQgY29sbGFwc2VkIGludG8gYSBzaW5nbGUgdW5pY29kZSBzdHJpbmcuCiAgICAgICAgY2h1bmtzID0gW10KICAgICAgICBsYXN0X2NoYXJzZXQgPSBOb25lCiAgICAgICAgbGFzdF9jaHVuayA9IFtdCiAgICAgICAgZm9yIHN0cmluZywgY2hhcnNldCBpbiBzZWxmLl9jaHVua3M6CiAgICAgICAgICAgIGlmIGNoYXJzZXQgPT0gbGFzdF9jaGFyc2V0OgogICAgICAgICAgICAgICAgbGFzdF9jaHVuay5hcHBlbmQoc3RyaW5nKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgbGFzdF9jaGFyc2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIGNodW5rcy5hcHBlbmQoKFNQQUNFLmpvaW4obGFzdF9jaHVuayksIGxhc3RfY2hhcnNldCkpCiAgICAgICAgICAgICAgICBsYXN0X2NodW5rID0gW3N0cmluZ10KICAgICAgICAgICAgICAgIGxhc3RfY2hhcnNldCA9IGNoYXJzZXQKICAgICAgICBpZiBsYXN0X2NodW5rOgogICAgICAgICAgICBjaHVua3MuYXBwZW5kKChTUEFDRS5qb2luKGxhc3RfY2h1bmspLCBsYXN0X2NoYXJzZXQpKQogICAgICAgIHNlbGYuX2NodW5rcyA9IGNodW5rcwoKCgwKY2xhc3MgX1ZhbHVlRm9ybWF0dGVyOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGhlYWRlcmxlbiwgbWF4bGVuLCBjb250aW51YXRpb25fd3MsIHNwbGl0Y2hhcnMpOgogICAgICAgIHNlbGYuX21heGxlbiA9IG1heGxlbgogICAgICAgIHNlbGYuX2NvbnRpbnVhdGlvbl93cyA9IGNvbnRpbnVhdGlvbl93cwogICAgICAgIHNlbGYuX2NvbnRpbnVhdGlvbl93c19sZW4gPSBsZW4oY29udGludWF0aW9uX3dzKQogICAgICAgIHNlbGYuX3NwbGl0Y2hhcnMgPSBzcGxpdGNoYXJzCiAgICAgICAgc2VsZi5fbGluZXMgPSBbXQogICAgICAgIHNlbGYuX2N1cnJlbnRfbGluZSA9IF9BY2N1bXVsYXRvcihoZWFkZXJsZW4pCgogICAgZGVmIF9zdHIoc2VsZiwgbGluZXNlcCk6CiAgICAgICAgc2VsZi5uZXdsaW5lKCkKICAgICAgICByZXR1cm4gbGluZXNlcC5qb2luKHNlbGYuX2xpbmVzKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9zdHIoTkwpCgogICAgZGVmIG5ld2xpbmUoc2VsZik6CiAgICAgICAgZW5kX29mX2xpbmUgPSBzZWxmLl9jdXJyZW50X2xpbmUucG9wKCkKICAgICAgICBpZiBlbmRfb2ZfbGluZSAhPSAoJyAnLCAnJyk6CiAgICAgICAgICAgIHNlbGYuX2N1cnJlbnRfbGluZS5wdXNoKCplbmRfb2ZfbGluZSkKICAgICAgICBpZiBsZW4oc2VsZi5fY3VycmVudF9saW5lKSA+IDA6CiAgICAgICAgICAgIGlmIHNlbGYuX2N1cnJlbnRfbGluZS5pc19vbmx5d3MoKSBhbmQgc2VsZi5fbGluZXM6CiAgICAgICAgICAgICAgICBzZWxmLl9saW5lc1stMV0gKz0gc3RyKHNlbGYuX2N1cnJlbnRfbGluZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX2xpbmVzLmFwcGVuZChzdHIoc2VsZi5fY3VycmVudF9saW5lKSkKICAgICAgICBzZWxmLl9jdXJyZW50X2xpbmUucmVzZXQoKQoKICAgIGRlZiBhZGRfdHJhbnNpdGlvbihzZWxmKToKICAgICAgICBzZWxmLl9jdXJyZW50X2xpbmUucHVzaCgnICcsICcnKQoKICAgIGRlZiBmZWVkKHNlbGYsIGZ3cywgc3RyaW5nLCBjaGFyc2V0KToKICAgICAgICAjIElmIHRoZSBjaGFyc2V0IGhhcyBubyBoZWFkZXIgZW5jb2RpbmcgKGkuZS4gaXQgaXMgYW4gQVNDSUkgZW5jb2RpbmcpCiAgICAgICAgIyB0aGVuIHdlIG11c3Qgc3BsaXQgdGhlIGhlYWRlciBhdCB0aGUgImhpZ2hlc3QgbGV2ZWwgc3ludGFjdGljIGJyZWFrIgogICAgICAgICMgcG9zc2libGUuIE5vdGUgdGhhdCB3ZSBkb24ndCBoYXZlIGEgbG90IG9mIHNtYXJ0cyBhYm91dCBmaWVsZAogICAgICAgICMgc3ludGF4OyB3ZSBqdXN0IHRyeSB0byBicmVhayBvbiBzZW1pLWNvbG9ucywgdGhlbiBjb21tYXMsIHRoZW4KICAgICAgICAjIHdoaXRlc3BhY2UuICBFdmVudHVhbGx5LCB0aGlzIHNob3VsZCBiZSBwbHVnZ2FibGUuCiAgICAgICAgaWYgY2hhcnNldC5oZWFkZXJfZW5jb2RpbmcgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fYXNjaWlfc3BsaXQoZndzLCBzdHJpbmcsIHNlbGYuX3NwbGl0Y2hhcnMpCiAgICAgICAgICAgIHJldHVybgogICAgICAgICMgT3RoZXJ3aXNlLCB3ZSdyZSBkb2luZyBlaXRoZXIgYSBCYXNlNjQgb3IgYSBxdW90ZWQtcHJpbnRhYmxlCiAgICAgICAgIyBlbmNvZGluZyB3aGljaCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvIHNwbGl0IHRoZSBsaW5lIG9uIHN5bnRhY3RpYwogICAgICAgICMgYnJlYWtzLiAgV2UgY2FuIGJhc2ljYWxseSBqdXN0IGZpbmQgZW5vdWdoIGNoYXJhY3RlcnMgdG8gZml0IG9uIHRoZQogICAgICAgICMgY3VycmVudCBsaW5lLCBtaW51cyB0aGUgUkZDIDIwNDcgY2hyb21lLiAgV2hhdCBtYWtlcyB0aGlzIHRyaWNraWVyCiAgICAgICAgIyB0aG91Z2ggaXMgdGhhdCB3ZSBoYXZlIHRvIHNwbGl0IGF0IG9jdGV0IGJvdW5kYXJpZXMsIG5vdCBjaGFyYWN0ZXIKICAgICAgICAjIGJvdW5kYXJpZXMgYnV0IGl0J3Mgb25seSBzYWZlIHRvIHNwbGl0IGF0IGNoYXJhY3RlciBib3VuZGFyaWVzIHNvIGF0CiAgICAgICAgIyBiZXN0IHdlIGNhbiBvbmx5IGdldCBjbG9zZS4KICAgICAgICBlbmNvZGVkX2xpbmVzID0gY2hhcnNldC5oZWFkZXJfZW5jb2RlX2xpbmVzKHN0cmluZywgc2VsZi5fbWF4bGVuZ3RocygpKQogICAgICAgICMgVGhlIGZpcnN0IGVsZW1lbnQgZXh0ZW5kcyB0aGUgY3VycmVudCBsaW5lLCBidXQgaWYgaXQncyBOb25lIHRoZW4KICAgICAgICAjIG5vdGhpbmcgbW9yZSBmaXQgb24gdGhlIGN1cnJlbnQgbGluZSBzbyBzdGFydCBhIG5ldyBsaW5lLgogICAgICAgIHRyeToKICAgICAgICAgICAgZmlyc3RfbGluZSA9IGVuY29kZWRfbGluZXMucG9wKDApCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICMgVGhlcmUgYXJlIG5vIGVuY29kZWQgbGluZXMsIHNvIHdlJ3JlIGRvbmUuCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIGZpcnN0X2xpbmUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2FwcGVuZF9jaHVuayhmd3MsIGZpcnN0X2xpbmUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBsYXN0X2xpbmUgPSBlbmNvZGVkX2xpbmVzLnBvcCgpCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICMgVGhlcmUgd2FzIG9ubHkgb25lIGxpbmUuCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYubmV3bGluZSgpCiAgICAgICAgc2VsZi5fY3VycmVudF9saW5lLnB1c2goc2VsZi5fY29udGludWF0aW9uX3dzLCBsYXN0X2xpbmUpCiAgICAgICAgIyBFdmVyeXRoaW5nIGVsc2UgYXJlIGZ1bGwgbGluZXMgaW4gdGhlbXNlbHZlcy4KICAgICAgICBmb3IgbGluZSBpbiBlbmNvZGVkX2xpbmVzOgogICAgICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmQoc2VsZi5fY29udGludWF0aW9uX3dzICsgbGluZSkKCiAgICBkZWYgX21heGxlbmd0aHMoc2VsZik6CiAgICAgICAgIyBUaGUgZmlyc3QgbGluZSdzIGxlbmd0aC4KICAgICAgICB5aWVsZCBzZWxmLl9tYXhsZW4gLSBsZW4oc2VsZi5fY3VycmVudF9saW5lKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHlpZWxkIHNlbGYuX21heGxlbiAtIHNlbGYuX2NvbnRpbnVhdGlvbl93c19sZW4KCiAgICBkZWYgX2FzY2lpX3NwbGl0KHNlbGYsIGZ3cywgc3RyaW5nLCBzcGxpdGNoYXJzKToKICAgICAgICAjIFRoZSBSRkMgMjgyMiBoZWFkZXIgZm9sZGluZyBhbGdvcml0aG0gaXMgc2ltcGxlIGluIHByaW5jaXBsZSBidXQKICAgICAgICAjIGNvbXBsZXggaW4gcHJhY3RpY2UuICBMaW5lcyBtYXkgYmUgZm9sZGVkIGFueSBwbGFjZSB3aGVyZSAiZm9sZGluZwogICAgICAgICMgd2hpdGUgc3BhY2UiIGFwcGVhcnMgYnkgaW5zZXJ0aW5nIGEgbGluZXNlcCBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YgdGhlCiAgICAgICAgIyBGV1MuICBUaGUgY29tcGxpY2F0aW9uIGlzIHRoYXQgbm90IGFsbCBzcGFjZXMgb3IgdGFicyBxdWFsaWZ5IGFzIEZXUywKICAgICAgICAjIGFuZCB3ZSBhcmUgYWxzbyBzdXBwb3NlZCB0byBwcmVmZXIgdG8gYnJlYWsgYXQgImhpZ2hlciBsZXZlbAogICAgICAgICMgc3ludGFjdGljIGJyZWFrcyIuICBXZSBjYW4ndCBkbyBlaXRoZXIgb2YgdGhlc2Ugd2l0aG91dCBpbnRpbWF0ZQogICAgICAgICMga25vd2xlZGdlIG9mIHRoZSBzdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlZCBoZWFkZXJzLCB3aGljaCB3ZSBkb24ndCBoYXZlCiAgICAgICAgIyBoZXJlLiAgU28gdGhlIGJlc3Qgd2UgY2FuIGRvIGhlcmUgaXMgcHJlZmVyIHRvIGJyZWFrIGF0IHRoZSBzcGVjaWZpZWQKICAgICAgICAjIHNwbGl0Y2hhcnMsIGFuZCBob3BlIHRoYXQgd2UgZG9uJ3QgY2hvb3NlIGFueSBzcGFjZXMgb3IgdGFicyB0aGF0CiAgICAgICAgIyBhcmVuJ3QgbGVnYWwgRldTLiAgKFRoaXMgaXMgYXQgbGVhc3QgYmV0dGVyIHRoYW4gdGhlIG9sZCBhbGdvcml0aG0sCiAgICAgICAgIyB3aGVyZSB3ZSB3b3VsZCBzb21ldGltZXMgKmludHJvZHVjZSogRldTIGFmdGVyIGEgc3BsaXRjaGFyLCBvciB0aGUKICAgICAgICAjIGFsZ29yaXRobSBiZWZvcmUgdGhhdCwgd2hlcmUgd2Ugd291bGQgdHVybiBhbGwgd2hpdGUgc3BhY2UgcnVucyBpbnRvCiAgICAgICAgIyBzaW5nbGUgc3BhY2VzIG9yIHRhYnMuKQogICAgICAgIHBhcnRzID0gcmUuc3BsaXQoIihbIitGV1MrIl0rKSIsIGZ3cytzdHJpbmcpCiAgICAgICAgaWYgcGFydHNbMF06CiAgICAgICAgICAgIHBhcnRzWzowXSA9IFsnJ10KICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXJ0cy5wb3AoMCkKICAgICAgICBmb3IgZndzLCBwYXJ0IGluIHppcCgqW2l0ZXIocGFydHMpXSoyKToKICAgICAgICAgICAgc2VsZi5fYXBwZW5kX2NodW5rKGZ3cywgcGFydCkKCiAgICBkZWYgX2FwcGVuZF9jaHVuayhzZWxmLCBmd3MsIHN0cmluZyk6CiAgICAgICAgc2VsZi5fY3VycmVudF9saW5lLnB1c2goZndzLCBzdHJpbmcpCiAgICAgICAgaWYgbGVuKHNlbGYuX2N1cnJlbnRfbGluZSkgPiBzZWxmLl9tYXhsZW46CiAgICAgICAgICAgICMgRmluZCB0aGUgYmVzdCBzcGxpdCBwb2ludCwgd29ya2luZyBiYWNrd2FyZCBmcm9tIHRoZSBlbmQuCiAgICAgICAgICAgICMgVGhlcmUgbWlnaHQgYmUgbm9uZSwgb24gYSBsb25nIGZpcnN0IGxpbmUuCiAgICAgICAgICAgIGZvciBjaCBpbiBzZWxmLl9zcGxpdGNoYXJzOgogICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2VsZi5fY3VycmVudF9saW5lLnBhcnRfY291bnQoKS0xLCAwLCAtMSk6CiAgICAgICAgICAgICAgICAgICAgaWYgY2guaXNzcGFjZSgpOgogICAgICAgICAgICAgICAgICAgICAgICBmd3MgPSBzZWxmLl9jdXJyZW50X2xpbmVbaV1bMF0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgZndzIGFuZCBmd3NbMF09PWNoOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBwcmV2cGFydCA9IHNlbGYuX2N1cnJlbnRfbGluZVtpLTFdWzFdCiAgICAgICAgICAgICAgICAgICAgaWYgcHJldnBhcnQgYW5kIHByZXZwYXJ0Wy0xXT09Y2g6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZndzLCBwYXJ0ID0gc2VsZi5fY3VycmVudF9saW5lLnBvcCgpCiAgICAgICAgICAgICAgICBpZiBzZWxmLl9jdXJyZW50X2xpbmUuX2luaXRpYWxfc2l6ZSA+IDA6CiAgICAgICAgICAgICAgICAgICAgIyBUaGVyZSB3aWxsIGJlIGEgaGVhZGVyLCBzbyBsZWF2ZSBpdCBvbiBhIGxpbmUgYnkgaXRzZWxmLgogICAgICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZ3czoKICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCB1c2UgY29udGludWF0aW9uX3dzIGhlcmUgYmVjYXVzZSB0aGUgd2hpdGVzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIGEgaGVhZGVyIHNob3VsZCBhbHdheXMgYmUgYSBzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgZndzID0gJyAnCiAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X2xpbmUucHVzaChmd3MsIHBhcnQpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgcmVtYWluZGVyID0gc2VsZi5fY3VycmVudF9saW5lLnBvcF9mcm9tKGkpCiAgICAgICAgICAgIHNlbGYuX2xpbmVzLmFwcGVuZChzdHIoc2VsZi5fY3VycmVudF9saW5lKSkKICAgICAgICAgICAgc2VsZi5fY3VycmVudF9saW5lLnJlc2V0KHJlbWFpbmRlcikKCgpjbGFzcyBfQWNjdW11bGF0b3IobGlzdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGluaXRpYWxfc2l6ZT0wKToKICAgICAgICBzZWxmLl9pbml0aWFsX3NpemUgPSBpbml0aWFsX3NpemUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKCiAgICBkZWYgcHVzaChzZWxmLCBmd3MsIHN0cmluZyk6CiAgICAgICAgc2VsZi5hcHBlbmQoKGZ3cywgc3RyaW5nKSkKCiAgICBkZWYgcG9wX2Zyb20oc2VsZiwgaT0wKToKICAgICAgICBwb3BwZWQgPSBzZWxmW2k6XQogICAgICAgIHNlbGZbaTpdID0gW10KICAgICAgICByZXR1cm4gcG9wcGVkCgogICAgZGVmIHBvcChzZWxmKToKICAgICAgICBpZiBzZWxmLnBhcnRfY291bnQoKT09MDoKICAgICAgICAgICAgcmV0dXJuICgnJywgJycpCiAgICAgICAgcmV0dXJuIHN1cGVyKCkucG9wKCkKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gc3VtKChsZW4oZndzKStsZW4ocGFydCkgZm9yIGZ3cywgcGFydCBpbiBzZWxmKSwKICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRpYWxfc2l6ZSkKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gRU1QVFlTVFJJTkcuam9pbigoRU1QVFlTVFJJTkcuam9pbigoZndzLCBwYXJ0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZndzLCBwYXJ0IGluIHNlbGYpKQoKICAgIGRlZiByZXNldChzZWxmLCBzdGFydHZhbD1Ob25lKToKICAgICAgICBpZiBzdGFydHZhbCBpcyBOb25lOgogICAgICAgICAgICBzdGFydHZhbCA9IFtdCiAgICAgICAgc2VsZls6XSA9IHN0YXJ0dmFsCiAgICAgICAgc2VsZi5faW5pdGlhbF9zaXplID0gMAoKICAgIGRlZiBpc19vbmx5d3Moc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2luaXRpYWxfc2l6ZT09MCBhbmQgKG5vdCBzZWxmIG9yIHN0cihzZWxmKS5pc3NwYWNlKCkpCgogICAgZGVmIHBhcnRfY291bnQoc2VsZik6CiAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19sZW5fXygpClBLAwQUAAAAAAACIKNWL8GaWlNRAABTUQAAFwAAAGVtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5IiIiUmVwcmVzZW50aW5nIGFuZCBtYW5pcHVsYXRpbmcgZW1haWwgaGVhZGVycyB2aWEgY3VzdG9tIG9iamVjdHMuCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGVhZGVyUmVnaXN0cnkgQVBJLgpUaGUgaW1wbGVtZW50YXRpb24gaXMgZGVzaWduZWQgdG8gZmxleGlibHkgZm9sbG93IFJGQzUzMjIgcnVsZXMuCiIiIgpmcm9tIHR5cGVzIGltcG9ydCBNYXBwaW5nUHJveHlUeXBlCgpmcm9tIGVtYWlsIGltcG9ydCB1dGlscwpmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKZnJvbSBlbWFpbCBpbXBvcnQgX2hlYWRlcl92YWx1ZV9wYXJzZXIgYXMgcGFyc2VyCgpjbGFzcyBBZGRyZXNzOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXNwbGF5X25hbWU9JycsIHVzZXJuYW1lPScnLCBkb21haW49JycsIGFkZHJfc3BlYz1Ob25lKToKICAgICAgICAiIiJDcmVhdGUgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGZ1bGwgZW1haWwgYWRkcmVzcy4KCiAgICAgICAgQW4gYWRkcmVzcyBjYW4gaGF2ZSBhICdkaXNwbGF5X25hbWUnLCBhICd1c2VybmFtZScsIGFuZCBhICdkb21haW4nLiAgSW4KICAgICAgICBhZGRpdGlvbiB0byBzcGVjaWZ5aW5nIHRoZSB1c2VybmFtZSBhbmQgZG9tYWluIHNlcGFyYXRlbHksIHRoZXkgbWF5IGJlCiAgICAgICAgc3BlY2lmaWVkIHRvZ2V0aGVyIGJ5IHVzaW5nIHRoZSBhZGRyX3NwZWMga2V5d29yZCAqaW5zdGVhZCBvZiogdGhlCiAgICAgICAgdXNlcm5hbWUgYW5kIGRvbWFpbiBrZXl3b3Jkcy4gIElmIGFuIGFkZHJfc3BlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGl0CiAgICAgICAgbXVzdCBiZSBwcm9wZXJseSBxdW90ZWQgYWNjb3JkaW5nIHRvIFJGQyA1MzIyIHJ1bGVzOyBhbiBlcnJvciB3aWxsIGJlCiAgICAgICAgcmFpc2VkIGlmIGl0IGlzIG5vdC4KCiAgICAgICAgQW4gQWRkcmVzcyBvYmplY3QgaGFzIGRpc3BsYXlfbmFtZSwgdXNlcm5hbWUsIGRvbWFpbiwgYW5kIGFkZHJfc3BlYwogICAgICAgIGF0dHJpYnV0ZXMsIGFsbCBvZiB3aGljaCBhcmUgcmVhZC1vbmx5LiAgVGhlIGFkZHJfc3BlYyBhbmQgdGhlIHN0cmluZwogICAgICAgIHZhbHVlIG9mIHRoZSBvYmplY3QgYXJlIGJvdGggcXVvdGVkIGFjY29yZGluZyB0byBSRkM1MzIyIHJ1bGVzLCBidXQKICAgICAgICB3aXRob3V0IGFueSBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nLgoKICAgICAgICAiIiIKCiAgICAgICAgaW5wdXRzID0gJycuam9pbihmaWx0ZXIoTm9uZSwgKGRpc3BsYXlfbmFtZSwgdXNlcm5hbWUsIGRvbWFpbiwgYWRkcl9zcGVjKSkpCiAgICAgICAgaWYgJ1xyJyBpbiBpbnB1dHMgb3IgJ1xuJyBpbiBpbnB1dHM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgYXJndW1lbnRzOyBhZGRyZXNzIHBhcnRzIGNhbm5vdCBjb250YWluIENSIG9yIExGIikKCiAgICAgICAgIyBUaGlzIGNsYXVzZSB3aXRoIGl0cyBwb3RlbnRpYWwgJ3JhaXNlJyBtYXkgb25seSBoYXBwZW4gd2hlbiBhbgogICAgICAgICMgYXBwbGljYXRpb24gcHJvZ3JhbSBjcmVhdGVzIGFuIEFkZHJlc3Mgb2JqZWN0IHVzaW5nIGFuIGFkZHJfc3BlYwogICAgICAgICMga2V5d29yZC4gIFRoZSBlbWFpbCBsaWJyYXJ5IGNvZGUgaXRzZWxmIG11c3QgYWx3YXlzIHN1cHBseSB1c2VybmFtZQogICAgICAgICMgYW5kIGRvbWFpbi4KICAgICAgICBpZiBhZGRyX3NwZWMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHVzZXJuYW1lIG9yIGRvbWFpbjoKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYWRkcnNwZWMgc3BlY2lmaWVkIHdoZW4gdXNlcm5hbWUgYW5kL29yICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9tYWluIGFsc28gc3BlY2lmaWVkIikKICAgICAgICAgICAgYV9zLCByZXN0ID0gcGFyc2VyLmdldF9hZGRyX3NwZWMoYWRkcl9zcGVjKQogICAgICAgICAgICBpZiByZXN0OgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBhZGRyX3NwZWM7IG9ubHkgJ3t9JyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBiZSBwYXJzZWQgZnJvbSAne30nIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfcywgYWRkcl9zcGVjKSkKICAgICAgICAgICAgaWYgYV9zLmFsbF9kZWZlY3RzOgogICAgICAgICAgICAgICAgcmFpc2UgYV9zLmFsbF9kZWZlY3RzWzBdCiAgICAgICAgICAgIHVzZXJuYW1lID0gYV9zLmxvY2FsX3BhcnQKICAgICAgICAgICAgZG9tYWluID0gYV9zLmRvbWFpbgogICAgICAgIHNlbGYuX2Rpc3BsYXlfbmFtZSA9IGRpc3BsYXlfbmFtZQogICAgICAgIHNlbGYuX3VzZXJuYW1lID0gdXNlcm5hbWUKICAgICAgICBzZWxmLl9kb21haW4gPSBkb21haW4KCiAgICBAcHJvcGVydHkKICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2Rpc3BsYXlfbmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHVzZXJuYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl91c2VybmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGRvbWFpbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZG9tYWluCgogICAgQHByb3BlcnR5CiAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgogICAgICAgICIiIlRoZSBhZGRyX3NwZWMgKHVzZXJuYW1lQGRvbWFpbikgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcywgcXVvdGVkCiAgICAgICAgYWNjb3JkaW5nIHRvIFJGQyA1MzIyIHJ1bGVzLCBidXQgd2l0aCBubyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nLgogICAgICAgICIiIgogICAgICAgIGxwID0gc2VsZi51c2VybmFtZQogICAgICAgIGlmIG5vdCBwYXJzZXIuRE9UX0FUT01fRU5EUy5pc2Rpc2pvaW50KGxwKToKICAgICAgICAgICAgbHAgPSBwYXJzZXIucXVvdGVfc3RyaW5nKGxwKQogICAgICAgIGlmIHNlbGYuZG9tYWluOgogICAgICAgICAgICByZXR1cm4gbHAgKyAnQCcgKyBzZWxmLmRvbWFpbgogICAgICAgIGlmIG5vdCBscDoKICAgICAgICAgICAgcmV0dXJuICc8PicKICAgICAgICByZXR1cm4gbHAKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICJ7fShkaXNwbGF5X25hbWU9eyFyfSwgdXNlcm5hbWU9eyFyfSwgZG9tYWluPXshcn0pIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpc3BsYXlfbmFtZSwgc2VsZi51c2VybmFtZSwgc2VsZi5kb21haW4pCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgZGlzcCA9IHNlbGYuZGlzcGxheV9uYW1lCiAgICAgICAgaWYgbm90IHBhcnNlci5TUEVDSUFMUy5pc2Rpc2pvaW50KGRpc3ApOgogICAgICAgICAgICBkaXNwID0gcGFyc2VyLnF1b3RlX3N0cmluZyhkaXNwKQogICAgICAgIGlmIGRpc3A6CiAgICAgICAgICAgIGFkZHJfc3BlYyA9ICcnIGlmIHNlbGYuYWRkcl9zcGVjPT0nPD4nIGVsc2Ugc2VsZi5hZGRyX3NwZWMKICAgICAgICAgICAgcmV0dXJuICJ7fSA8e30+Ii5mb3JtYXQoZGlzcCwgYWRkcl9zcGVjKQogICAgICAgIHJldHVybiBzZWxmLmFkZHJfc3BlYwoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBBZGRyZXNzKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIChzZWxmLmRpc3BsYXlfbmFtZSA9PSBvdGhlci5kaXNwbGF5X25hbWUgYW5kCiAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID09IG90aGVyLnVzZXJuYW1lIGFuZAogICAgICAgICAgICAgICAgc2VsZi5kb21haW4gPT0gb3RoZXIuZG9tYWluKQoKCmNsYXNzIEdyb3VwOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXNwbGF5X25hbWU9Tm9uZSwgYWRkcmVzc2VzPU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGFuIGFkZHJlc3MgZ3JvdXAuCgogICAgICAgIEFuIGFkZHJlc3MgZ3JvdXAgY29uc2lzdHMgb2YgYSBkaXNwbGF5X25hbWUgZm9sbG93ZWQgYnkgY29sb24gYW5kIGEKICAgICAgICBsaXN0IG9mIGFkZHJlc3NlcyAoc2VlIEFkZHJlc3MpIHRlcm1pbmF0ZWQgYnkgYSBzZW1pLWNvbG9uLiAgVGhlIEdyb3VwCiAgICAgICAgaXMgY3JlYXRlZCBieSBzcGVjaWZ5aW5nIGEgZGlzcGxheV9uYW1lIGFuZCBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YKICAgICAgICBBZGRyZXNzIG9iamVjdHMuICBBIEdyb3VwIGNhbiBhbHNvIGJlIHVzZWQgdG8gcmVwcmVzZW50IGEgc2luZ2xlCiAgICAgICAgYWRkcmVzcyB0aGF0IGlzIG5vdCBpbiBhIGdyb3VwLCB3aGljaCBpcyBjb252ZW5pZW50IHdoZW4gbWFuaXB1bGF0aW5nCiAgICAgICAgbGlzdHMgdGhhdCBhcmUgYSBjb21iaW5hdGlvbiBvZiBHcm91cHMgYW5kIGluZGl2aWR1YWwgQWRkcmVzc2VzLiAgSW4KICAgICAgICB0aGlzIGNhc2UgdGhlIGRpc3BsYXlfbmFtZSBzaG91bGQgYmUgc2V0IHRvIE5vbmUuICBJbiBwYXJ0aWN1bGFyLCB0aGUKICAgICAgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBHcm91cCB3aG9zZSBkaXNwbGF5X25hbWUgaXMgTm9uZSBpcyB0aGUgc2FtZQogICAgICAgIGFzIHRoZSBBZGRyZXNzIG9iamVjdCwgaWYgdGhlcmUgaXMgb25lIGFuZCBvbmx5IG9uZSBBZGRyZXNzIG9iamVjdCBpbgogICAgICAgIHRoZSBhZGRyZXNzZXMgbGlzdC4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lCiAgICAgICAgc2VsZi5fYWRkcmVzc2VzID0gdHVwbGUoYWRkcmVzc2VzKSBpZiBhZGRyZXNzZXMgZWxzZSB0dXBsZSgpCgogICAgQHByb3BlcnR5CiAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9kaXNwbGF5X25hbWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhZGRyZXNzZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NlcwoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gInt9KGRpc3BsYXlfbmFtZT17IXJ9LCBhZGRyZXNzZXM9eyFyfSIuZm9ybWF0KAogICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgIHNlbGYuZGlzcGxheV9uYW1lLCBzZWxmLmFkZHJlc3NlcykKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLmRpc3BsYXlfbmFtZSBpcyBOb25lIGFuZCBsZW4oc2VsZi5hZGRyZXNzZXMpPT0xOgogICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYuYWRkcmVzc2VzWzBdKQogICAgICAgIGRpc3AgPSBzZWxmLmRpc3BsYXlfbmFtZQogICAgICAgIGlmIGRpc3AgaXMgbm90IE5vbmUgYW5kIG5vdCBwYXJzZXIuU1BFQ0lBTFMuaXNkaXNqb2ludChkaXNwKToKICAgICAgICAgICAgZGlzcCA9IHBhcnNlci5xdW90ZV9zdHJpbmcoZGlzcCkKICAgICAgICBhZHJzdHIgPSAiLCAiLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYuYWRkcmVzc2VzKQogICAgICAgIGFkcnN0ciA9ICcgJyArIGFkcnN0ciBpZiBhZHJzdHIgZWxzZSBhZHJzdHIKICAgICAgICByZXR1cm4gInt9Ont9OyIuZm9ybWF0KGRpc3AsIGFkcnN0cikKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgR3JvdXApOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gKHNlbGYuZGlzcGxheV9uYW1lID09IG90aGVyLmRpc3BsYXlfbmFtZSBhbmQKICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzc2VzID09IG90aGVyLmFkZHJlc3NlcykKCgojIEhlYWRlciBDbGFzc2VzICMKCmNsYXNzIEJhc2VIZWFkZXIoc3RyKToKCiAgICAiIiJCYXNlIGNsYXNzIGZvciBtZXNzYWdlIGhlYWRlcnMuCgogICAgSW1wbGVtZW50cyBnZW5lcmljIGJlaGF2aW9yIGFuZCBwcm92aWRlcyB0b29scyBmb3Igc3ViY2xhc3Nlcy4KCiAgICBBIHN1YmNsYXNzIG11c3QgZGVmaW5lIGEgY2xhc3NtZXRob2QgbmFtZWQgJ3BhcnNlJyB0aGF0IHRha2VzIGFuIHVuZm9sZGVkCiAgICB2YWx1ZSBzdHJpbmcgYW5kIGEgZGljdGlvbmFyeSBhcyBpdHMgYXJndW1lbnRzLiAgVGhlIGRpY3Rpb25hcnkgd2lsbAogICAgY29udGFpbiBvbmUga2V5LCAnZGVmZWN0cycsIGluaXRpYWxpemVkIHRvIGFuIGVtcHR5IGxpc3QuICBBZnRlciB0aGUgY2FsbAogICAgdGhlIGRpY3Rpb25hcnkgbXVzdCBjb250YWluIHR3byBhZGRpdGlvbmFsIGtleXM6IHBhcnNlX3RyZWUsIHNldCB0byB0aGUKICAgIHBhcnNlIHRyZWUgb2J0YWluZWQgZnJvbSBwYXJzaW5nIHRoZSBoZWFkZXIsIGFuZCAnZGVjb2RlZCcsIHNldCB0byB0aGUKICAgIHN0cmluZyB2YWx1ZSBvZiB0aGUgaWRlYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIGZyb20gdGhlIHZhbHVlLgogICAgKFRoYXQgaXMsIGVuY29kZWQgd29yZHMgYXJlIGRlY29kZWQsIGFuZCB2YWx1ZXMgdGhhdCBoYXZlIGNhbm9uaWNhbAogICAgcmVwcmVzZW50YXRpb25zIGFyZSBzbyByZXByZXNlbnRlZC4pCgogICAgVGhlIGRlZmVjdHMga2V5IGlzIGludGVuZGVkIHRvIGNvbGxlY3QgcGFyc2luZyBkZWZlY3RzLCB3aGljaCB0aGUgbWVzc2FnZQogICAgcGFyc2VyIHdpbGwgc3Vic2VxdWVudGx5IGRpc3Bvc2Ugb2YgYXMgYXBwcm9wcmlhdGUuICBUaGUgcGFyc2VyIHNob3VsZCBub3QsCiAgICBpbnNvZmFyIGFzIHByYWN0aWNhbCwgcmFpc2UgYW55IGVycm9ycy4gIERlZmVjdHMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZQogICAgbGlzdCBpbnN0ZWFkLiAgVGhlIHN0YW5kYXJkIGhlYWRlciBwYXJzZXJzIHJlZ2lzdGVyIGRlZmVjdHMgZm9yIFJGQwogICAgY29tcGxpYW5jZSBpc3N1ZXMsIGZvciBvYnNvbGV0ZSBSRkMgc3ludGF4LCBhbmQgZm9yIHVucmVjb3ZlcmFibGUgcGFyc2luZwogICAgZXJyb3JzLgoKICAgIFRoZSBwYXJzZSBtZXRob2QgbWF5IGFkZCBhZGRpdGlvbmFsIGtleXMgdG8gdGhlIGRpY3Rpb25hcnkuICBJbiB0aGlzIGNhc2UKICAgIHRoZSBzdWJjbGFzcyBtdXN0IGRlZmluZSBhbiAnaW5pdCcgbWV0aG9kLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aGUKICAgIGRpY3Rpb25hcnkgYXMgaXRzIGtleXdvcmQgYXJndW1lbnRzLiAgVGhlIG1ldGhvZCBzaG91bGQgdXNlICh1c3VhbGx5IGJ5CiAgICBzZXR0aW5nIHRoZW0gYXMgdGhlIHZhbHVlIG9mIHNpbWlsYXJseSBuYW1lZCBhdHRyaWJ1dGVzKSBhbmQgcmVtb3ZlIGFsbCB0aGUKICAgIGV4dHJhIGtleXMgYWRkZWQgYnkgaXRzIHBhcnNlIG1ldGhvZCwgYW5kIHRoZW4gdXNlIHN1cGVyIHRvIGNhbGwgaXRzIHBhcmVudAogICAgY2xhc3Mgd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhbmQga2V5d29yZHMuCgogICAgVGhlIHN1YmNsYXNzIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGF0IGEgJ21heF9jb3VudCcgYXR0cmlidXRlIGlzIGRlZmluZWQKICAgIHRoYXQgaXMgZWl0aGVyIE5vbmUgb3IgMS4gWFhYOiBuZWVkIHRvIGJldHRlciBkZWZpbmUgdGhpcyBBUEkuCgogICAgIiIiCgogICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAga3dkcyA9IHsnZGVmZWN0cyc6IFtdfQogICAgICAgIGNscy5wYXJzZSh2YWx1ZSwga3dkcykKICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXMoa3dkc1snZGVjb2RlZCddKToKICAgICAgICAgICAga3dkc1snZGVjb2RlZCddID0gdXRpbHMuX3Nhbml0aXplKGt3ZHNbJ2RlY29kZWQnXSkKICAgICAgICBzZWxmID0gc3RyLl9fbmV3X18oY2xzLCBrd2RzWydkZWNvZGVkJ10pCiAgICAgICAgZGVsIGt3ZHNbJ2RlY29kZWQnXQogICAgICAgIHNlbGYuaW5pdChuYW1lLCAqKmt3ZHMpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgaW5pdChzZWxmLCBuYW1lLCAqLCBwYXJzZV90cmVlLCBkZWZlY3RzKToKICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgIHNlbGYuX3BhcnNlX3RyZWUgPSBwYXJzZV90cmVlCiAgICAgICAgc2VsZi5fZGVmZWN0cyA9IGRlZmVjdHMKCiAgICBAcHJvcGVydHkKICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uYW1lCgogICAgQHByb3BlcnR5CiAgICBkZWYgZGVmZWN0cyhzZWxmKToKICAgICAgICByZXR1cm4gdHVwbGUoc2VsZi5fZGVmZWN0cykKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBfcmVjb25zdHJ1Y3RfaGVhZGVyLAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fYmFzZXNfXywKICAgICAgICAgICAgICAgIHN0cihzZWxmKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgc2VsZi5fX2dldHN0YXRlX18oKSkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfcmVjb25zdHJ1Y3QoY2xzLCB2YWx1ZSk6CiAgICAgICAgcmV0dXJuIHN0ci5fX25ld19fKGNscywgdmFsdWUpCgogICAgZGVmIGZvbGQoc2VsZiwgKiwgcG9saWN5KToKICAgICAgICAiIiJGb2xkIGhlYWRlciBhY2NvcmRpbmcgdG8gcG9saWN5LgoKICAgICAgICBUaGUgcGFyc2VkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoZWFkZXIgaXMgZm9sZGVkIGFjY29yZGluZyB0bwogICAgICAgIFJGQzUzMjIgcnVsZXMsIGFzIG1vZGlmaWVkIGJ5IHRoZSBwb2xpY3kuICBJZiB0aGUgcGFyc2UgdHJlZQogICAgICAgIGNvbnRhaW5zIHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMsIHRoZSBieXRlcyBhcmUgQ1RFIGVuY29kZWQgdXNpbmcKICAgICAgICB0aGUgY2hhcnNldCAndW5rbm93bi04Yml0Ii4KCiAgICAgICAgQW55IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZSBwYXJzZSB0cmVlIGFyZSBDVEUgZW5jb2RlZCB1c2luZwogICAgICAgIGNoYXJzZXQgdXRmLTguIFhYWDogbWFrZSB0aGlzIGEgcG9saWN5IHNldHRpbmcuCgogICAgICAgIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbiBBU0NJSS1vbmx5IHN0cmluZyBwb3NzaWJseSBjb250YWluaW5nIGxpbmVzZXAKICAgICAgICBjaGFyYWN0ZXJzLCBhbmQgZW5kaW5nIHdpdGggYSBsaW5lc2VwIGNoYXJhY3Rlci4gIFRoZSBzdHJpbmcgaW5jbHVkZXMKICAgICAgICB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSAnOiAnIHNlcGFyYXRvci4KCiAgICAgICAgIiIiCiAgICAgICAgIyBBdCBzb21lIHBvaW50IHdlIG5lZWQgdG8gcHV0IGZ3cyBoZXJlIGlmIGl0IHdhcyBpbiB0aGUgc291cmNlLgogICAgICAgIGhlYWRlciA9IHBhcnNlci5IZWFkZXIoWwogICAgICAgICAgICBwYXJzZXIuSGVhZGVyTGFiZWwoWwogICAgICAgICAgICAgICAgcGFyc2VyLlZhbHVlVGVybWluYWwoc2VsZi5uYW1lLCAnaGVhZGVyLW5hbWUnKSwKICAgICAgICAgICAgICAgIHBhcnNlci5WYWx1ZVRlcm1pbmFsKCc6JywgJ2hlYWRlci1zZXAnKV0pLAogICAgICAgICAgICBdKQogICAgICAgIGlmIHNlbGYuX3BhcnNlX3RyZWU6CiAgICAgICAgICAgIGhlYWRlci5hcHBlbmQoCiAgICAgICAgICAgICAgICBwYXJzZXIuQ0ZXU0xpc3QoW3BhcnNlci5XaGl0ZVNwYWNlVGVybWluYWwoJyAnLCAnZndzJyldKSkKICAgICAgICBoZWFkZXIuYXBwZW5kKHNlbGYuX3BhcnNlX3RyZWUpCiAgICAgICAgcmV0dXJuIGhlYWRlci5mb2xkKHBvbGljeT1wb2xpY3kpCgoKZGVmIF9yZWNvbnN0cnVjdF9oZWFkZXIoY2xzX25hbWUsIGJhc2VzLCB2YWx1ZSk6CiAgICByZXR1cm4gdHlwZShjbHNfbmFtZSwgYmFzZXMsIHt9KS5fcmVjb25zdHJ1Y3QodmFsdWUpCgoKY2xhc3MgVW5zdHJ1Y3R1cmVkSGVhZGVyOgoKICAgIG1heF9jb3VudCA9IE5vbmUKICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQogICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihrd2RzWydwYXJzZV90cmVlJ10pCgoKY2xhc3MgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKFVuc3RydWN0dXJlZEhlYWRlcik6CgogICAgbWF4X2NvdW50ID0gMQoKCmNsYXNzIERhdGVIZWFkZXI6CgogICAgIiIiSGVhZGVyIHdob3NlIHZhbHVlIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHRpbWVzdGFtcC4KCiAgICBQcm92aWRlcyBhbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZSwgZGF0ZXRpbWUsIHdoaWNoIGlzIGVpdGhlciBhbiBhd2FyZQogICAgZGF0ZXRpbWUgdXNpbmcgYSB0aW1lem9uZSwgb3IgYSBuYWl2ZSBkYXRldGltZSBpZiB0aGUgdGltZXpvbmUKICAgIGluIHRoZSBpbnB1dCBzdHJpbmcgaXMgLTAwMDAuICBBbHNvIGFjY2VwdHMgYSBkYXRldGltZSBhcyBpbnB1dC4KICAgIFRoZSAndmFsdWUnIGF0dHJpYnV0ZSBpcyB0aGUgbm9ybWFsaXplZCBmb3JtIG9mIHRoZSB0aW1lc3RhbXAsCiAgICB3aGljaCBtZWFucyBpdCBpcyB0aGUgb3V0cHV0IG9mIGZvcm1hdF9kYXRldGltZSBvbiB0aGUgZGF0ZXRpbWUuCiAgICAiIiIKCiAgICBtYXhfY291bnQgPSBOb25lCgogICAgIyBUaGlzIGlzIHVzZWQgb25seSBmb3IgZm9sZGluZywgbm90IGZvciBjcmVhdGluZyAnZGVjb2RlZCcuCiAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CiAgICAgICAgaWYgbm90IHZhbHVlOgogICAgICAgICAgICBrd2RzWydkZWZlY3RzJ10uYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgpKQogICAgICAgICAgICBrd2RzWydkYXRldGltZSddID0gTm9uZQogICAgICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSAnJwogICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZXIuVG9rZW5MaXN0KCkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAga3dkc1snZGVjb2RlZCddID0gdmFsdWUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdmFsdWUgPSB1dGlscy5wYXJzZWRhdGVfdG9fZGF0ZXRpbWUodmFsdWUpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAga3dkc1snZGVmZWN0cyddLmFwcGVuZChlcnJvcnMuSW52YWxpZERhdGVEZWZlY3QoJ0ludmFsaWQgZGF0ZSB2YWx1ZSBvciBmb3JtYXQnKSkKICAgICAgICAgICAgICAgIGt3ZHNbJ2RhdGV0aW1lJ10gPSBOb25lCiAgICAgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZXIuVG9rZW5MaXN0KCkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIGt3ZHNbJ2RhdGV0aW1lJ10gPSB2YWx1ZQogICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHV0aWxzLmZvcm1hdF9kYXRldGltZShrd2RzWydkYXRldGltZSddKQogICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGNscy52YWx1ZV9wYXJzZXIoa3dkc1snZGVjb2RlZCddKQoKICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICBzZWxmLl9kYXRldGltZSA9IGt3LnBvcCgnZGF0ZXRpbWUnKQogICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkYXRldGltZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZGF0ZXRpbWUKCgpjbGFzcyBVbmlxdWVEYXRlSGVhZGVyKERhdGVIZWFkZXIpOgoKICAgIG1heF9jb3VudCA9IDEKCgpjbGFzcyBBZGRyZXNzSGVhZGVyOgoKICAgIG1heF9jb3VudCA9IE5vbmUKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgdmFsdWVfcGFyc2VyKHZhbHVlKToKICAgICAgICBhZGRyZXNzX2xpc3QsIHZhbHVlID0gcGFyc2VyLmdldF9hZGRyZXNzX2xpc3QodmFsdWUpCiAgICAgICAgYXNzZXJ0IG5vdCB2YWx1ZSwgJ3RoaXMgc2hvdWxkIG5vdCBoYXBwZW4nCiAgICAgICAgcmV0dXJuIGFkZHJlc3NfbGlzdAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgogICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgICMgV2UgYXJlIHRyYW5zbGF0aW5nIGhlcmUgZnJvbSB0aGUgUkZDIGxhbmd1YWdlIChhZGRyZXNzL21haWxib3gpCiAgICAgICAgICAgICMgdG8gb3VyIEFQSSBsYW5ndWFnZSAoZ3JvdXAvYWRkcmVzcykuCiAgICAgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGFkZHJlc3NfbGlzdCA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCiAgICAgICAgICAgIGdyb3VwcyA9IFtdCiAgICAgICAgICAgIGZvciBhZGRyIGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXM6CiAgICAgICAgICAgICAgICBncm91cHMuYXBwZW5kKEdyb3VwKGFkZHIuZGlzcGxheV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQWRkcmVzcyhtYi5kaXNwbGF5X25hbWUgb3IgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iLmxvY2FsX3BhcnQgb3IgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iLmRvbWFpbiBvciAnJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtYiBpbiBhZGRyLmFsbF9tYWlsYm94ZXNdKSkKICAgICAgICAgICAgZGVmZWN0cyA9IGxpc3QoYWRkcmVzc19saXN0LmFsbF9kZWZlY3RzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgQXNzdW1lIGl0IGlzIEFkZHJlc3MvR3JvdXAgc3R1ZmYKICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIodmFsdWUsICdfX2l0ZXJfXycpOgogICAgICAgICAgICAgICAgdmFsdWUgPSBbdmFsdWVdCiAgICAgICAgICAgIGdyb3VwcyA9IFtHcm91cChOb25lLCBbaXRlbV0pIGlmIG5vdCBoYXNhdHRyKGl0ZW0sICdhZGRyZXNzZXMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWVdCiAgICAgICAgICAgIGRlZmVjdHMgPSBbXQogICAgICAgIGt3ZHNbJ2dyb3VwcyddID0gZ3JvdXBzCiAgICAgICAga3dkc1snZGVmZWN0cyddID0gZGVmZWN0cwogICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9ICcsICcuam9pbihbc3RyKGl0ZW0pIGZvciBpdGVtIGluIGdyb3Vwc10pCiAgICAgICAgaWYgJ3BhcnNlX3RyZWUnIG5vdCBpbiBrd2RzOgogICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBjbHMudmFsdWVfcGFyc2VyKGt3ZHNbJ2RlY29kZWQnXSkKCiAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgc2VsZi5fZ3JvdXBzID0gdHVwbGUoa3cucG9wKCdncm91cHMnKSkKICAgICAgICBzZWxmLl9hZGRyZXNzZXMgPSBOb25lCiAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGdyb3VwcyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZ3JvdXBzCgogICAgQHByb3BlcnR5CiAgICBkZWYgYWRkcmVzc2VzKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2FkZHJlc3NlcyBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9hZGRyZXNzZXMgPSB0dXBsZShhZGRyZXNzIGZvciBncm91cCBpbiBzZWxmLl9ncm91cHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWRkcmVzcyBpbiBncm91cC5hZGRyZXNzZXMpCiAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NlcwoKCmNsYXNzIFVuaXF1ZUFkZHJlc3NIZWFkZXIoQWRkcmVzc0hlYWRlcik6CgogICAgbWF4X2NvdW50ID0gMQoKCmNsYXNzIFNpbmdsZUFkZHJlc3NIZWFkZXIoQWRkcmVzc0hlYWRlcik6CgogICAgQHByb3BlcnR5CiAgICBkZWYgYWRkcmVzcyhzZWxmKToKICAgICAgICBpZiBsZW4oc2VsZi5hZGRyZXNzZXMpIT0xOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCgidmFsdWUgb2Ygc2luZ2xlIGFkZHJlc3MgaGVhZGVyIHt9IGlzIG5vdCAiCiAgICAgICAgICAgICAgICAiYSBzaW5nbGUgYWRkcmVzcyIpLmZvcm1hdChzZWxmLm5hbWUpKQogICAgICAgIHJldHVybiBzZWxmLmFkZHJlc3Nlc1swXQoKCmNsYXNzIFVuaXF1ZVNpbmdsZUFkZHJlc3NIZWFkZXIoU2luZ2xlQWRkcmVzc0hlYWRlcik6CgogICAgbWF4X2NvdW50ID0gMQoKCmNsYXNzIE1JTUVWZXJzaW9uSGVhZGVyOgoKICAgIG1heF9jb3VudCA9IDEKCiAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX21pbWVfdmVyc2lvbikKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZV90cmVlID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIocGFyc2VfdHJlZSkKICAgICAgICBrd2RzWydkZWZlY3RzJ10uZXh0ZW5kKHBhcnNlX3RyZWUuYWxsX2RlZmVjdHMpCiAgICAgICAga3dkc1snbWFqb3InXSA9IE5vbmUgaWYgcGFyc2VfdHJlZS5taW5vciBpcyBOb25lIGVsc2UgcGFyc2VfdHJlZS5tYWpvcgogICAgICAgIGt3ZHNbJ21pbm9yJ10gPSBwYXJzZV90cmVlLm1pbm9yCiAgICAgICAgaWYgcGFyc2VfdHJlZS5taW5vciBpcyBub3QgTm9uZToKICAgICAgICAgICAga3dkc1sndmVyc2lvbiddID0gJ3t9Lnt9Jy5mb3JtYXQoa3dkc1snbWFqb3InXSwga3dkc1snbWlub3InXSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBrd2RzWyd2ZXJzaW9uJ10gPSBOb25lCgogICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgIHNlbGYuX3ZlcnNpb24gPSBrdy5wb3AoJ3ZlcnNpb24nKQogICAgICAgIHNlbGYuX21ham9yID0ga3cucG9wKCdtYWpvcicpCiAgICAgICAgc2VsZi5fbWlub3IgPSBrdy5wb3AoJ21pbm9yJykKICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCgogICAgQHByb3BlcnR5CiAgICBkZWYgbWFqb3Ioc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX21ham9yCgogICAgQHByb3BlcnR5CiAgICBkZWYgbWlub3Ioc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX21pbm9yCgogICAgQHByb3BlcnR5CiAgICBkZWYgdmVyc2lvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgoKCmNsYXNzIFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyOgoKICAgICMgTWl4aW4gdGhhdCBoYW5kbGVzIHRoZSBwYXJhbXMgZGljdC4gIE11c3QgYmUgc3ViY2xhc3NlZCBhbmQKICAgICMgYSBwcm9wZXJ0eSB2YWx1ZV9wYXJzZXIgZm9yIHRoZSBzcGVjaWZpYyBoZWFkZXIgcHJvdmlkZWQuCgogICAgbWF4X2NvdW50ID0gMQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgogICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQogICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihwYXJzZV90cmVlKQogICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKICAgICAgICBpZiBwYXJzZV90cmVlLnBhcmFtcyBpcyBOb25lOgogICAgICAgICAgICBrd2RzWydwYXJhbXMnXSA9IHt9CiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBUaGUgTUlNRSBSRkNzIHNwZWNpZnkgdGhhdCBwYXJhbWV0ZXIgb3JkZXJpbmcgaXMgYXJiaXRyYXJ5LgogICAgICAgICAgICBrd2RzWydwYXJhbXMnXSA9IHt1dGlscy5fc2FuaXRpemUobmFtZSkubG93ZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMuX3Nhbml0aXplKHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHBhcnNlX3RyZWUucGFyYW1zfQoKICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICBzZWxmLl9wYXJhbXMgPSBrdy5wb3AoJ3BhcmFtcycpCiAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBhcmFtcyhzZWxmKToKICAgICAgICByZXR1cm4gTWFwcGluZ1Byb3h5VHlwZShzZWxmLl9wYXJhbXMpCgoKY2xhc3MgQ29udGVudFR5cGVIZWFkZXIoUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIpOgoKICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF90eXBlX2hlYWRlcikKCiAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQogICAgICAgIHNlbGYuX21haW50eXBlID0gdXRpbHMuX3Nhbml0aXplKHNlbGYuX3BhcnNlX3RyZWUubWFpbnR5cGUpCiAgICAgICAgc2VsZi5fc3VidHlwZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLnN1YnR5cGUpCgogICAgQHByb3BlcnR5CiAgICBkZWYgbWFpbnR5cGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX21haW50eXBlCgogICAgQHByb3BlcnR5CiAgICBkZWYgc3VidHlwZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc3VidHlwZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNvbnRlbnRfdHlwZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5tYWludHlwZSArICcvJyArIHNlbGYuc3VidHlwZQoKCmNsYXNzIENvbnRlbnREaXNwb3NpdGlvbkhlYWRlcihQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcik6CgogICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5wYXJzZV9jb250ZW50X2Rpc3Bvc2l0aW9uX2hlYWRlcikKCiAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQogICAgICAgIGNkID0gc2VsZi5fcGFyc2VfdHJlZS5jb250ZW50X2Rpc3Bvc2l0aW9uCiAgICAgICAgc2VsZi5fY29udGVudF9kaXNwb3NpdGlvbiA9IGNkIGlmIGNkIGlzIE5vbmUgZWxzZSB1dGlscy5fc2FuaXRpemUoY2QpCgogICAgQHByb3BlcnR5CiAgICBkZWYgY29udGVudF9kaXNwb3NpdGlvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY29udGVudF9kaXNwb3NpdGlvbgoKCmNsYXNzIENvbnRlbnRUcmFuc2ZlckVuY29kaW5nSGVhZGVyOgoKICAgIG1heF9jb3VudCA9IDEKCiAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX2NvbnRlbnRfdHJhbnNmZXJfZW5jb2RpbmdfaGVhZGVyKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgogICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQogICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihwYXJzZV90cmVlKQogICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKCiAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQogICAgICAgIHNlbGYuX2N0ZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLmN0ZSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjdGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2N0ZQoKCmNsYXNzIE1lc3NhZ2VJREhlYWRlcjoKCiAgICBtYXhfY291bnQgPSAxCiAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX21lc3NhZ2VfaWQpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CiAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gcGFyc2VfdHJlZSA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCiAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKHBhcnNlX3RyZWUpCiAgICAgICAga3dkc1snZGVmZWN0cyddLmV4dGVuZChwYXJzZV90cmVlLmFsbF9kZWZlY3RzKQoKCiMgVGhlIGhlYWRlciBmYWN0b3J5ICMKCl9kZWZhdWx0X2hlYWRlcl9tYXAgPSB7CiAgICAnc3ViamVjdCc6ICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlciwKICAgICdkYXRlJzogICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlRGF0ZUhlYWRlciwKICAgICdyZXNlbnQtZGF0ZSc6ICAgICAgICAgICAgICAgICAgRGF0ZUhlYWRlciwKICAgICdvcmlnLWRhdGUnOiAgICAgICAgICAgICAgICAgICAgVW5pcXVlRGF0ZUhlYWRlciwKICAgICdzZW5kZXInOiAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlU2luZ2xlQWRkcmVzc0hlYWRlciwKICAgICdyZXNlbnQtc2VuZGVyJzogICAgICAgICAgICAgICAgU2luZ2xlQWRkcmVzc0hlYWRlciwKICAgICd0byc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKICAgICdyZXNlbnQtdG8nOiAgICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKICAgICdjYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKICAgICdyZXNlbnQtY2MnOiAgICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKICAgICdiY2MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKICAgICdyZXNlbnQtYmNjJzogICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKICAgICdmcm9tJzogICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKICAgICdyZXNlbnQtZnJvbSc6ICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKICAgICdyZXBseS10byc6ICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKICAgICdtaW1lLXZlcnNpb24nOiAgICAgICAgICAgICAgICAgTUlNRVZlcnNpb25IZWFkZXIsCiAgICAnY29udGVudC10eXBlJzogICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlSGVhZGVyLAogICAgJ2NvbnRlbnQtZGlzcG9zaXRpb24nOiAgICAgICAgICBDb250ZW50RGlzcG9zaXRpb25IZWFkZXIsCiAgICAnY29udGVudC10cmFuc2Zlci1lbmNvZGluZyc6ICAgIENvbnRlbnRUcmFuc2ZlckVuY29kaW5nSGVhZGVyLAogICAgJ21lc3NhZ2UtaWQnOiAgICAgICAgICAgICAgICAgICBNZXNzYWdlSURIZWFkZXIsCiAgICB9CgpjbGFzcyBIZWFkZXJSZWdpc3RyeToKCiAgICAiIiJBIGhlYWRlcl9mYWN0b3J5IGFuZCBoZWFkZXIgcmVnaXN0cnkuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2VfY2xhc3M9QmFzZUhlYWRlciwgZGVmYXVsdF9jbGFzcz1VbnN0cnVjdHVyZWRIZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgdXNlX2RlZmF1bHRfbWFwPVRydWUpOgogICAgICAgICIiIkNyZWF0ZSBhIGhlYWRlcl9mYWN0b3J5IHRoYXQgd29ya3Mgd2l0aCB0aGUgUG9saWN5IEFQSS4KCiAgICAgICAgYmFzZV9jbGFzcyBpcyB0aGUgY2xhc3MgdGhhdCB3aWxsIGJlIHRoZSBsYXN0IGNsYXNzIGluIHRoZSBjcmVhdGVkCiAgICAgICAgaGVhZGVyIGNsYXNzJ3MgX19iYXNlc19fIGxpc3QuICBkZWZhdWx0X2NsYXNzIGlzIHRoZSBjbGFzcyB0aGF0IHdpbGwgYmUKICAgICAgICB1c2VkIGlmICJuYW1lIiAoc2VlIF9fY2FsbF9fKSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHJlZ2lzdHJ5LgogICAgICAgIHVzZV9kZWZhdWx0X21hcCBjb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgZGVmYXVsdCBtYXBwaW5nIG9mIG5hbWVzIHRvCiAgICAgICAgc3BlY2lhbGl6ZWQgY2xhc3NlcyBpcyBjb3BpZWQgaW4gdG8gdGhlIHJlZ2lzdHJ5IHdoZW4gdGhlIGZhY3RvcnkgaXMKICAgICAgICBjcmVhdGVkLiAgVGhlIGRlZmF1bHQgaXMgVHJ1ZS4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5yZWdpc3RyeSA9IHt9CiAgICAgICAgc2VsZi5iYXNlX2NsYXNzID0gYmFzZV9jbGFzcwogICAgICAgIHNlbGYuZGVmYXVsdF9jbGFzcyA9IGRlZmF1bHRfY2xhc3MKICAgICAgICBpZiB1c2VfZGVmYXVsdF9tYXA6CiAgICAgICAgICAgIHNlbGYucmVnaXN0cnkudXBkYXRlKF9kZWZhdWx0X2hlYWRlcl9tYXApCgogICAgZGVmIG1hcF90b190eXBlKHNlbGYsIG5hbWUsIGNscyk6CiAgICAgICAgIiIiUmVnaXN0ZXIgY2xzIGFzIHRoZSBzcGVjaWFsaXplZCBjbGFzcyBmb3IgaGFuZGxpbmcgIm5hbWUiIGhlYWRlcnMuCgogICAgICAgICIiIgogICAgICAgIHNlbGYucmVnaXN0cnlbbmFtZS5sb3dlcigpXSA9IGNscwoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKICAgICAgICBjbHMgPSBzZWxmLnJlZ2lzdHJ5LmdldChuYW1lLmxvd2VyKCksIHNlbGYuZGVmYXVsdF9jbGFzcykKICAgICAgICByZXR1cm4gdHlwZSgnXycrY2xzLl9fbmFtZV9fLCAoY2xzLCBzZWxmLmJhc2VfY2xhc3MpLCB7fSkKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICIiIkNyZWF0ZSBhIGhlYWRlciBpbnN0YW5jZSBmb3IgaGVhZGVyICduYW1lJyBmcm9tICd2YWx1ZScuCgogICAgICAgIENyZWF0ZXMgYSBoZWFkZXIgaW5zdGFuY2UgYnkgY3JlYXRpbmcgYSBzcGVjaWFsaXplZCBjbGFzcyBmb3IgcGFyc2luZwogICAgICAgIGFuZCByZXByZXNlbnRpbmcgdGhlIHNwZWNpZmllZCBoZWFkZXIgYnkgY29tYmluaW5nIHRoZSBmYWN0b3J5CiAgICAgICAgYmFzZV9jbGFzcyB3aXRoIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZnJvbSB0aGUgcmVnaXN0cnkgb3IgdGhlCiAgICAgICAgZGVmYXVsdF9jbGFzcywgYW5kIHBhc3NpbmcgdGhlIG5hbWUgYW5kIHZhbHVlIHRvIHRoZSBjb25zdHJ1Y3RlZAogICAgICAgIGNsYXNzJ3MgY29uc3RydWN0b3IuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmW25hbWVdKG5hbWUsIHZhbHVlKQpQSwMEFAAAAAAAAiCjVvo1FjRXCAAAVwgAABIAAABlbWFpbC9pdGVyYXRvcnMucHkjIENvcHlyaWdodCAoQykgMjAwMS0yMDA2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCiMgQXV0aG9yOiBCYXJyeSBXYXJzYXcKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiVmFyaW91cyB0eXBlcyBvZiB1c2VmdWwgaXRlcmF0b3JzIGFuZCBnZW5lcmF0b3JzLiIiIgoKX19hbGxfXyA9IFsKICAgICdib2R5X2xpbmVfaXRlcmF0b3InLAogICAgJ3R5cGVkX3N1YnBhcnRfaXRlcmF0b3InLAogICAgJ3dhbGsnLAogICAgIyBEbyBub3QgaW5jbHVkZSBfc3RydWN0dXJlKCkgc2luY2UgaXQncyBwYXJ0IG9mIHRoZSBkZWJ1Z2dpbmcgQVBJLgogICAgXQoKaW1wb3J0IHN5cwpmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwoKCgwKIyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVjb21lIGEgbWV0aG9kIG9mIHRoZSBNZXNzYWdlIGNsYXNzCmRlZiB3YWxrKHNlbGYpOgogICAgIiIiV2FsayBvdmVyIHRoZSBtZXNzYWdlIHRyZWUsIHlpZWxkaW5nIGVhY2ggc3VicGFydC4KCiAgICBUaGUgd2FsayBpcyBwZXJmb3JtZWQgaW4gZGVwdGgtZmlyc3Qgb3JkZXIuICBUaGlzIG1ldGhvZCBpcyBhCiAgICBnZW5lcmF0b3IuCiAgICAiIiIKICAgIHlpZWxkIHNlbGYKICAgIGlmIHNlbGYuaXNfbXVsdGlwYXJ0KCk6CiAgICAgICAgZm9yIHN1YnBhcnQgaW4gc2VsZi5nZXRfcGF5bG9hZCgpOgogICAgICAgICAgICB5aWVsZCBmcm9tIHN1YnBhcnQud2FsaygpCgoKDAojIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIGltcG9ydGVkIGludG8gdGhlIEl0ZXJhdG9ycy5weSBpbnRlcmZhY2UgbW9kdWxlLgpkZWYgYm9keV9saW5lX2l0ZXJhdG9yKG1zZywgZGVjb2RlPUZhbHNlKToKICAgICIiIkl0ZXJhdGUgb3ZlciB0aGUgcGFydHMsIHJldHVybmluZyBzdHJpbmcgcGF5bG9hZHMgbGluZS1ieS1saW5lLgoKICAgIE9wdGlvbmFsIGRlY29kZSAoZGVmYXVsdCBGYWxzZSkgaXMgcGFzc2VkIHRocm91Z2ggdG8gLmdldF9wYXlsb2FkKCkuCiAgICAiIiIKICAgIGZvciBzdWJwYXJ0IGluIG1zZy53YWxrKCk6CiAgICAgICAgcGF5bG9hZCA9IHN1YnBhcnQuZ2V0X3BheWxvYWQoZGVjb2RlPWRlY29kZSkKICAgICAgICBpZiBpc2luc3RhbmNlKHBheWxvYWQsIHN0cik6CiAgICAgICAgICAgIHlpZWxkIGZyb20gU3RyaW5nSU8ocGF5bG9hZCkKCgpkZWYgdHlwZWRfc3VicGFydF9pdGVyYXRvcihtc2csIG1haW50eXBlPSd0ZXh0Jywgc3VidHlwZT1Ob25lKToKICAgICIiIkl0ZXJhdGUgb3ZlciB0aGUgc3VicGFydHMgd2l0aCBhIGdpdmVuIE1JTUUgdHlwZS4KCiAgICBVc2UgYG1haW50eXBlJyBhcyB0aGUgbWFpbiBNSU1FIHR5cGUgdG8gbWF0Y2ggYWdhaW5zdDsgdGhpcyBkZWZhdWx0cyB0bwogICAgInRleHQiLiAgT3B0aW9uYWwgYHN1YnR5cGUnIGlzIHRoZSBNSU1FIHN1YnR5cGUgdG8gbWF0Y2ggYWdhaW5zdDsgaWYKICAgIG9taXR0ZWQsIG9ubHkgdGhlIG1haW4gdHlwZSBpcyBtYXRjaGVkLgogICAgIiIiCiAgICBmb3Igc3VicGFydCBpbiBtc2cud2FsaygpOgogICAgICAgIGlmIHN1YnBhcnQuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSBtYWludHlwZToKICAgICAgICAgICAgaWYgc3VidHlwZSBpcyBOb25lIG9yIHN1YnBhcnQuZ2V0X2NvbnRlbnRfc3VidHlwZSgpID09IHN1YnR5cGU6CiAgICAgICAgICAgICAgICB5aWVsZCBzdWJwYXJ0CgoKDApkZWYgX3N0cnVjdHVyZShtc2csIGZwPU5vbmUsIGxldmVsPTAsIGluY2x1ZGVfZGVmYXVsdD1GYWxzZSk6CiAgICAiIiJBIGhhbmR5IGRlYnVnZ2luZyBhaWQiIiIKICAgIGlmIGZwIGlzIE5vbmU6CiAgICAgICAgZnAgPSBzeXMuc3Rkb3V0CiAgICB0YWIgPSAnICcgKiAobGV2ZWwgKiA0KQogICAgcHJpbnQodGFiICsgbXNnLmdldF9jb250ZW50X3R5cGUoKSwgZW5kPScnLCBmaWxlPWZwKQogICAgaWYgaW5jbHVkZV9kZWZhdWx0OgogICAgICAgIHByaW50KCcgWyVzXScgJSBtc2cuZ2V0X2RlZmF1bHRfdHlwZSgpLCBmaWxlPWZwKQogICAgZWxzZToKICAgICAgICBwcmludChmaWxlPWZwKQogICAgaWYgbXNnLmlzX211bHRpcGFydCgpOgogICAgICAgIGZvciBzdWJwYXJ0IGluIG1zZy5nZXRfcGF5bG9hZCgpOgogICAgICAgICAgICBfc3RydWN0dXJlKHN1YnBhcnQsIGZwLCBsZXZlbCsxLCBpbmNsdWRlX2RlZmF1bHQpClBLAwQUAAAAAAACIKNWdN6GAE+7AABPuwAAEAAAAGVtYWlsL21lc3NhZ2UucHkjIENvcHlyaWdodCAoQykgMjAwMS0yMDA3IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCiMgQXV0aG9yOiBCYXJyeSBXYXJzYXcKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiQmFzaWMgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBlbWFpbCBwYWNrYWdlIG9iamVjdCBtb2RlbC4iIiIKCl9fYWxsX18gPSBbJ01lc3NhZ2UnLCAnRW1haWxNZXNzYWdlJ10KCmltcG9ydCBiaW5hc2NpaQppbXBvcnQgcmUKaW1wb3J0IHF1b3ByaQpmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwoKIyBJbnRyYXBhY2thZ2UgaW1wb3J0cwpmcm9tIGVtYWlsIGltcG9ydCB1dGlscwpmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgUG9saWN5LCBjb21wYXQzMgpmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0CmZyb20gZW1haWwuX2VuY29kZWRfd29yZHMgaW1wb3J0IGRlY29kZV9iCkNoYXJzZXQgPSBfY2hhcnNldC5DaGFyc2V0CgpTRU1JU1BBQ0UgPSAnOyAnCgojIFJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgYHNwZWNpYWwnIGNoYXJhY3RlcnMgaW4gcGFyYW1ldGVycywgdGhlCiMgZXhpc3RlbmNlIG9mIHdoaWNoIGZvcmNlIHF1b3Rpbmcgb2YgdGhlIHBhcmFtZXRlciB2YWx1ZS4KdHNwZWNpYWxzID0gcmUuY29tcGlsZShyJ1sgXChcKTw+QCw7OlxcIi9cW1xdXD89XScpCgoKZGVmIF9zcGxpdHBhcmFtKHBhcmFtKToKICAgICMgU3BsaXQgaGVhZGVyIHBhcmFtZXRlcnMuICBCQVc6IHRoaXMgbWF5IGJlIHRvbyBzaW1wbGUuICBJdCBpc24ndAogICAgIyBzdHJpY3RseSBSRkMgMjA0NSAoc2VjdGlvbiA1LjEpIGNvbXBsaWFudCwgYnV0IGl0IGNhdGNoZXMgbW9zdCBoZWFkZXJzCiAgICAjIGZvdW5kIGluIHRoZSB3aWxkLiAgV2UgbWF5IGV2ZW50dWFsbHkgbmVlZCBhIGZ1bGwgZmxlZGdlZCBwYXJzZXIuCiAgICAjIFJETTogd2UgbWlnaHQgaGF2ZSBhIEhlYWRlciBoZXJlOyBmb3Igbm93IGp1c3Qgc3RyaW5naWZ5IGl0LgogICAgYSwgc2VwLCBiID0gc3RyKHBhcmFtKS5wYXJ0aXRpb24oJzsnKQogICAgaWYgbm90IHNlcDoKICAgICAgICByZXR1cm4gYS5zdHJpcCgpLCBOb25lCiAgICByZXR1cm4gYS5zdHJpcCgpLCBiLnN0cmlwKCkKCmRlZiBfZm9ybWF0cGFyYW0ocGFyYW0sIHZhbHVlPU5vbmUsIHF1b3RlPVRydWUpOgogICAgIiIiQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZm9ybWF0IGFuZCByZXR1cm4gYSBrZXk9dmFsdWUgcGFpci4KCiAgICBUaGlzIHdpbGwgcXVvdGUgdGhlIHZhbHVlIGlmIG5lZWRlZCBvciBpZiBxdW90ZSBpcyB0cnVlLiAgSWYgdmFsdWUgaXMgYQogICAgdGhyZWUgdHVwbGUgKGNoYXJzZXQsIGxhbmd1YWdlLCB2YWx1ZSksIGl0IHdpbGwgYmUgZW5jb2RlZCBhY2NvcmRpbmcKICAgIHRvIFJGQzIyMzEgcnVsZXMuICBJZiBpdCBjb250YWlucyBub24tYXNjaWkgY2hhcmFjdGVycyBpdCB3aWxsIGxpa2V3aXNlCiAgICBiZSBlbmNvZGVkIGFjY29yZGluZyB0byBSRkMyMjMxIHJ1bGVzLCB1c2luZyB0aGUgdXRmLTggY2hhcnNldCBhbmQKICAgIGEgbnVsbCBsYW5ndWFnZS4KICAgICIiIgogICAgaWYgdmFsdWUgaXMgbm90IE5vbmUgYW5kIGxlbih2YWx1ZSkgPiAwOgogICAgICAgICMgQSB0dXBsZSBpcyB1c2VkIGZvciBSRkMgMjIzMSBlbmNvZGVkIHBhcmFtZXRlciB2YWx1ZXMgd2hlcmUgaXRlbXMKICAgICAgICAjIGFyZSAoY2hhcnNldCwgbGFuZ3VhZ2UsIHZhbHVlKS4gIGNoYXJzZXQgaXMgYSBzdHJpbmcsIG5vdCBhIENoYXJzZXQKICAgICAgICAjIGluc3RhbmNlLiAgUkZDIDIyMzEgZW5jb2RlZCB2YWx1ZXMgYXJlIG5ldmVyIHF1b3RlZCwgcGVyIFJGQy4KICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CiAgICAgICAgICAgICMgRW5jb2RlIGFzIHBlciBSRkMgMjIzMQogICAgICAgICAgICBwYXJhbSArPSAnKicKICAgICAgICAgICAgdmFsdWUgPSB1dGlscy5lbmNvZGVfcmZjMjIzMSh2YWx1ZVsyXSwgdmFsdWVbMF0sIHZhbHVlWzFdKQogICAgICAgICAgICByZXR1cm4gJyVzPSVzJyAlIChwYXJhbSwgdmFsdWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdmFsdWUuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICBwYXJhbSArPSAnKicKICAgICAgICAgICAgICAgIHZhbHVlID0gdXRpbHMuZW5jb2RlX3JmYzIyMzEodmFsdWUsICd1dGYtOCcsICcnKQogICAgICAgICAgICAgICAgcmV0dXJuICclcz0lcycgJSAocGFyYW0sIHZhbHVlKQogICAgICAgICMgQkFXOiBQbGVhc2UgY2hlY2sgdGhpcy4gIEkgdGhpbmsgdGhhdCBpZiBxdW90ZSBpcyBzZXQgaXQgc2hvdWxkCiAgICAgICAgIyBmb3JjZSBxdW90aW5nIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4KICAgICAgICBpZiBxdW90ZSBvciB0c3BlY2lhbHMuc2VhcmNoKHZhbHVlKToKICAgICAgICAgICAgcmV0dXJuICclcz0iJXMiJyAlIChwYXJhbSwgdXRpbHMucXVvdGUodmFsdWUpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnJXM9JXMnICUgKHBhcmFtLCB2YWx1ZSkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIHBhcmFtCgpkZWYgX3BhcnNlcGFyYW0ocyk6CiAgICAjIFJETSBUaGlzIG1pZ2h0IGJlIGEgSGVhZGVyLCBzbyBmb3Igbm93IHN0cmluZ2lmeSBpdC4KICAgIHMgPSAnOycgKyBzdHIocykKICAgIHBsaXN0ID0gW10KICAgIHdoaWxlIHNbOjFdID09ICc7JzoKICAgICAgICBzID0gc1sxOl0KICAgICAgICBlbmQgPSBzLmZpbmQoJzsnKQogICAgICAgIHdoaWxlIGVuZCA+IDAgYW5kIChzLmNvdW50KCciJywgMCwgZW5kKSAtIHMuY291bnQoJ1xcIicsIDAsIGVuZCkpICUgMjoKICAgICAgICAgICAgZW5kID0gcy5maW5kKCc7JywgZW5kICsgMSkKICAgICAgICBpZiBlbmQgPCAwOgogICAgICAgICAgICBlbmQgPSBsZW4ocykKICAgICAgICBmID0gc1s6ZW5kXQogICAgICAgIGlmICc9JyBpbiBmOgogICAgICAgICAgICBpID0gZi5pbmRleCgnPScpCiAgICAgICAgICAgIGYgPSBmWzppXS5zdHJpcCgpLmxvd2VyKCkgKyAnPScgKyBmW2krMTpdLnN0cmlwKCkKICAgICAgICBwbGlzdC5hcHBlbmQoZi5zdHJpcCgpKQogICAgICAgIHMgPSBzW2VuZDpdCiAgICByZXR1cm4gcGxpc3QKCgpkZWYgX3VucXVvdGV2YWx1ZSh2YWx1ZSk6CiAgICAjIFRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZSgpIGJlY2F1c2UgaXQgZG9lc24ndAogICAgIyB0cnkgdG8gY29udmVydCB0aGUgdmFsdWUgdG8gYSB1bmljb2RlLiAgTWVzc2FnZS5nZXRfcGFyYW0oKSBhbmQKICAgICMgTWVzc2FnZS5nZXRfcGFyYW1zKCkgYXJlIGJvdGggY3VycmVudGx5IGRlZmluZWQgdG8gcmV0dXJuIHRoZSB0dXBsZSBpbgogICAgIyB0aGUgZmFjZSBvZiBSRkMgMjIzMSBwYXJhbWV0ZXJzLgogICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgIHJldHVybiB2YWx1ZVswXSwgdmFsdWVbMV0sIHV0aWxzLnVucXVvdGUodmFsdWVbMl0pCiAgICBlbHNlOgogICAgICAgIHJldHVybiB1dGlscy51bnF1b3RlKHZhbHVlKQoKCmRlZiBfZGVjb2RlX3V1KGVuY29kZWQpOgogICAgIiIiRGVjb2RlIHV1ZW5jb2RlZCBkYXRhLiIiIgogICAgZGVjb2RlZF9saW5lcyA9IFtdCiAgICBlbmNvZGVkX2xpbmVzX2l0ZXIgPSBpdGVyKGVuY29kZWQuc3BsaXRsaW5lcygpKQogICAgZm9yIGxpbmUgaW4gZW5jb2RlZF9saW5lc19pdGVyOgogICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChiImJlZ2luICIpOgogICAgICAgICAgICBtb2RlLCBfLCBwYXRoID0gbGluZS5yZW1vdmVwcmVmaXgoYiJiZWdpbiAiKS5wYXJ0aXRpb24oYiIgIikKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaW50KG1vZGUsIGJhc2U9OCkKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnJlYWsKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYGJlZ2luYCBsaW5lIG5vdCBmb3VuZCIpCiAgICBmb3IgbGluZSBpbiBlbmNvZGVkX2xpbmVzX2l0ZXI6CiAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRydW5jYXRlZCBpbnB1dCIpCiAgICAgICAgZWxpZiBsaW5lLnN0cmlwKGInIFx0XHJcblxmJykgPT0gYidlbmQnOgogICAgICAgICAgICBicmVhawogICAgICAgIHRyeToKICAgICAgICAgICAgZGVjb2RlZF9saW5lID0gYmluYXNjaWkuYTJiX3V1KGxpbmUpCiAgICAgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgogICAgICAgICAgICAjIFdvcmthcm91bmQgZm9yIGJyb2tlbiB1dWVuY29kZXJzIGJ5IC9GcmVkcmlrIEx1bmRoCiAgICAgICAgICAgIG5ieXRlcyA9ICgoKGxpbmVbMF0tMzIpICYgNjMpICogNCArIDUpIC8vIDMKICAgICAgICAgICAgZGVjb2RlZF9saW5lID0gYmluYXNjaWkuYTJiX3V1KGxpbmVbOm5ieXRlc10pCiAgICAgICAgZGVjb2RlZF9saW5lcy5hcHBlbmQoZGVjb2RlZF9saW5lKQoKICAgIHJldHVybiBiJycuam9pbihkZWNvZGVkX2xpbmVzKQoKCmNsYXNzIE1lc3NhZ2U6CiAgICAiIiJCYXNpYyBtZXNzYWdlIG9iamVjdC4KCiAgICBBIG1lc3NhZ2Ugb2JqZWN0IGlzIGRlZmluZWQgYXMgc29tZXRoaW5nIHRoYXQgaGFzIGEgYnVuY2ggb2YgUkZDIDI4MjIKICAgIGhlYWRlcnMgYW5kIGEgcGF5bG9hZC4gIEl0IG1heSBvcHRpb25hbGx5IGhhdmUgYW4gZW52ZWxvcGUgaGVhZGVyCiAgICAoYS5rLmEuIFVuaXgtRnJvbSBvciBGcm9tXyBoZWFkZXIpLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBjb250YWluZXIgKGkuZS4gYQogICAgbXVsdGlwYXJ0IG9yIGEgbWVzc2FnZS9yZmM4MjIpLCB0aGVuIHRoZSBwYXlsb2FkIGlzIGEgbGlzdCBvZiBNZXNzYWdlCiAgICBvYmplY3RzLCBvdGhlcndpc2UgaXQgaXMgYSBzdHJpbmcuCgogICAgTWVzc2FnZSBvYmplY3RzIGltcGxlbWVudCBwYXJ0IG9mIHRoZSBgbWFwcGluZycgaW50ZXJmYWNlLCB3aGljaCBhc3N1bWVzCiAgICB0aGVyZSBpcyBleGFjdGx5IG9uZSBvY2N1cnJlbmNlIG9mIHRoZSBoZWFkZXIgcGVyIG1lc3NhZ2UuICBTb21lIGhlYWRlcnMKICAgIGRvIGluIGZhY3QgYXBwZWFyIG11bHRpcGxlIHRpbWVzIChlLmcuIFJlY2VpdmVkKSBhbmQgZm9yIHRob3NlIGhlYWRlcnMsCiAgICB5b3UgbXVzdCB1c2UgdGhlIGV4cGxpY2l0IEFQSSB0byBzZXQgb3IgZ2V0IGFsbCB0aGUgaGVhZGVycy4gIE5vdCBhbGwgb2YKICAgIHRoZSBtYXBwaW5nIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgcG9saWN5PWNvbXBhdDMyKToKICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogICAgICAgIHNlbGYuX2hlYWRlcnMgPSBbXQogICAgICAgIHNlbGYuX3VuaXhmcm9tID0gTm9uZQogICAgICAgIHNlbGYuX3BheWxvYWQgPSBOb25lCiAgICAgICAgc2VsZi5fY2hhcnNldCA9IE5vbmUKICAgICAgICAjIERlZmF1bHRzIGZvciBtdWx0aXBhcnQgbWVzc2FnZXMKICAgICAgICBzZWxmLnByZWFtYmxlID0gc2VsZi5lcGlsb2d1ZSA9IE5vbmUKICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQogICAgICAgICMgRGVmYXVsdCBjb250ZW50IHR5cGUKICAgICAgICBzZWxmLl9kZWZhdWx0X3R5cGUgPSAndGV4dC9wbGFpbicKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGVudGlyZSBmb3JtYXR0ZWQgbWVzc2FnZSBhcyBhIHN0cmluZy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5hc19zdHJpbmcoKQoKICAgIGRlZiBhc19zdHJpbmcoc2VsZiwgdW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj0wLCBwb2xpY3k9Tm9uZSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgZm9ybWF0dGVkIG1lc3NhZ2UgYXMgYSBzdHJpbmcuCgogICAgICAgIE9wdGlvbmFsICd1bml4ZnJvbScsIHdoZW4gdHJ1ZSwgbWVhbnMgaW5jbHVkZSB0aGUgVW5peCBGcm9tXyBlbnZlbG9wZQogICAgICAgIGhlYWRlci4gIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGlmIG1heGhlYWRlcmxlbiBpcwogICAgICAgIG5vdCBzcGVjaWZpZWQgaXQgZGVmYXVsdHMgdG8gMCwgc28geW91IG11c3Qgb3ZlcnJpZGUgaXQgZXhwbGljaXRseQogICAgICAgIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IG1heGhlYWRlcmxlbi4gICdwb2xpY3knIGlzIHBhc3NlZCB0byB0aGUKICAgICAgICBHZW5lcmF0b3IgaW5zdGFuY2UgdXNlZCB0byBzZXJpYWxpemUgdGhlIG1lc3NhZ2U7IGlmIGl0IGlzIG5vdAogICAgICAgIHNwZWNpZmllZCB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSBpbnN0YW5jZSBpcyB1c2VkLgoKICAgICAgICBJZiB0aGUgbWVzc2FnZSBvYmplY3QgY29udGFpbnMgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QgZW5jb2RlZAogICAgICAgIGFjY29yZGluZyB0byBSRkMgc3RhbmRhcmRzLCB0aGUgbm9uLWNvbXBsaWFudCBkYXRhIHdpbGwgYmUgcmVwbGFjZWQgYnkKICAgICAgICB1bmljb2RlICJ1bmtub3duIGNoYXJhY3RlciIgY29kZSBwb2ludHMuCiAgICAgICAgIiIiCiAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvcgogICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5IGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CiAgICAgICAgZnAgPSBTdHJpbmdJTygpCiAgICAgICAgZyA9IEdlbmVyYXRvcihmcCwKICAgICAgICAgICAgICAgICAgICAgIG1hbmdsZV9mcm9tXz1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgIG1heGhlYWRlcmxlbj1tYXhoZWFkZXJsZW4sCiAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5KQogICAgICAgIGcuZmxhdHRlbihzZWxmLCB1bml4ZnJvbT11bml4ZnJvbSkKICAgICAgICByZXR1cm4gZnAuZ2V0dmFsdWUoKQoKICAgIGRlZiBfX2J5dGVzX18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgZm9ybWF0dGVkIG1lc3NhZ2UgYXMgYSBieXRlcyBvYmplY3QuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuYXNfYnl0ZXMoKQoKICAgIGRlZiBhc19ieXRlcyhzZWxmLCB1bml4ZnJvbT1GYWxzZSwgcG9saWN5PU5vbmUpOgogICAgICAgICIiIlJldHVybiB0aGUgZW50aXJlIGZvcm1hdHRlZCBtZXNzYWdlIGFzIGEgYnl0ZXMgb2JqZWN0LgoKICAgICAgICBPcHRpb25hbCAndW5peGZyb20nLCB3aGVuIHRydWUsIG1lYW5zIGluY2x1ZGUgdGhlIFVuaXggRnJvbV8gZW52ZWxvcGUKICAgICAgICBoZWFkZXIuICAncG9saWN5JyBpcyBwYXNzZWQgdG8gdGhlIEJ5dGVzR2VuZXJhdG9yIGluc3RhbmNlIHVzZWQgdG8KICAgICAgICBzZXJpYWxpemUgdGhlIG1lc3NhZ2U7IGlmIG5vdCBzcGVjaWZpZWQgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGgKICAgICAgICB0aGUgbWVzc2FnZSBpbnN0YW5jZSBpcyB1c2VkLgogICAgICAgICIiIgogICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgogICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5IGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CiAgICAgICAgZnAgPSBCeXRlc0lPKCkKICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1GYWxzZSwgcG9saWN5PXBvbGljeSkKICAgICAgICBnLmZsYXR0ZW4oc2VsZiwgdW5peGZyb209dW5peGZyb20pCiAgICAgICAgcmV0dXJuIGZwLmdldHZhbHVlKCkKCiAgICBkZWYgaXNfbXVsdGlwYXJ0KHNlbGYpOgogICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBtZXNzYWdlIGNvbnNpc3RzIG9mIG11bHRpcGxlIHBhcnRzLiIiIgogICAgICAgIHJldHVybiBpc2luc3RhbmNlKHNlbGYuX3BheWxvYWQsIGxpc3QpCgogICAgIwogICAgIyBVbml4IEZyb21fIGxpbmUKICAgICMKICAgIGRlZiBzZXRfdW5peGZyb20oc2VsZiwgdW5peGZyb20pOgogICAgICAgIHNlbGYuX3VuaXhmcm9tID0gdW5peGZyb20KCiAgICBkZWYgZ2V0X3VuaXhmcm9tKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl91bml4ZnJvbQoKICAgICMKICAgICMgUGF5bG9hZCBtYW5pcHVsYXRpb24uCiAgICAjCiAgICBkZWYgYXR0YWNoKHNlbGYsIHBheWxvYWQpOgogICAgICAgICIiIkFkZCB0aGUgZ2l2ZW4gcGF5bG9hZCB0byB0aGUgY3VycmVudCBwYXlsb2FkLgoKICAgICAgICBUaGUgY3VycmVudCBwYXlsb2FkIHdpbGwgYWx3YXlzIGJlIGEgbGlzdCBvZiBvYmplY3RzIGFmdGVyIHRoaXMgbWV0aG9kCiAgICAgICAgaXMgY2FsbGVkLiAgSWYgeW91IHdhbnQgdG8gc2V0IHRoZSBwYXlsb2FkIHRvIGEgc2NhbGFyIG9iamVjdCwgdXNlCiAgICAgICAgc2V0X3BheWxvYWQoKSBpbnN0ZWFkLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3BheWxvYWQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fcGF5bG9hZCA9IFtwYXlsb2FkXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX3BheWxvYWQuYXBwZW5kKHBheWxvYWQpCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQXR0YWNoIGlzIG5vdCB2YWxpZCBvbiBhIG1lc3NhZ2Ugd2l0aCBhIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgbm9uLW11bHRpcGFydCBwYXlsb2FkIikKCiAgICBkZWYgZ2V0X3BheWxvYWQoc2VsZiwgaT1Ob25lLCBkZWNvZGU9RmFsc2UpOgogICAgICAgICIiIlJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgcGF5bG9hZC4KCiAgICAgICAgVGhlIHBheWxvYWQgd2lsbCBlaXRoZXIgYmUgYSBsaXN0IG9iamVjdCBvciBhIHN0cmluZy4gIElmIHlvdSBtdXRhdGUKICAgICAgICB0aGUgbGlzdCBvYmplY3QsIHlvdSBtb2RpZnkgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGluIHBsYWNlLiAgT3B0aW9uYWwKICAgICAgICBpIHJldHVybnMgdGhhdCBpbmRleCBpbnRvIHRoZSBwYXlsb2FkLgoKICAgICAgICBPcHRpb25hbCBkZWNvZGUgaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKICAgICAgICBkZWNvZGVkIG9yIG5vdCwgYWNjb3JkaW5nIHRvIHRoZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGhlYWRlcgogICAgICAgIChkZWZhdWx0IGlzIEZhbHNlKS4KCiAgICAgICAgV2hlbiBUcnVlIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwgYmUKICAgICAgICBkZWNvZGVkIGlmIHRoaXMgaGVhZGVyJ3MgdmFsdWUgaXMgYHF1b3RlZC1wcmludGFibGUnIG9yIGBiYXNlNjQnLiAgSWYKICAgICAgICBzb21lIG90aGVyIGVuY29kaW5nIGlzIHVzZWQsIG9yIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgb3IgaWYgdGhlCiAgICAgICAgcGF5bG9hZCBoYXMgYm9ndXMgZGF0YSAoaS5lLiBib2d1cyBiYXNlNjQgb3IgdXVlbmNvZGVkIGRhdGEpLCB0aGUKICAgICAgICBwYXlsb2FkIGlzIHJldHVybmVkIGFzLWlzLgoKICAgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIG11bHRpcGFydCBhbmQgdGhlIGRlY29kZSBmbGFnIGlzIFRydWUsIHRoZW4gTm9uZQogICAgICAgIGlzIHJldHVybmVkLgogICAgICAgICIiIgogICAgICAgICMgSGVyZSBpcyB0aGUgbG9naWMgdGFibGUgZm9yIHRoaXMgY29kZSwgYmFzZWQgb24gdGhlIGVtYWlsNS4wLjAgY29kZToKICAgICAgICAjICAgaSAgICAgZGVjb2RlICBpc19tdWx0aXBhcnQgIHJlc3VsdAogICAgICAgICMgLS0tLS0tICAtLS0tLS0gIC0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyAgTm9uZSAgIFRydWUgICAgVHJ1ZSAgICAgICAgICBOb25lCiAgICAgICAgIyAgIGkgICAgIFRydWUgICAgVHJ1ZSAgICAgICAgICBOb25lCiAgICAgICAgIyAgTm9uZSAgIEZhbHNlICAgVHJ1ZSAgICAgICAgICBfcGF5bG9hZCAoYSBsaXN0KQogICAgICAgICMgICBpICAgICBGYWxzZSAgIFRydWUgICAgICAgICAgX3BheWxvYWQgZWxlbWVudCBpIChhIE1lc3NhZ2UpCiAgICAgICAgIyAgIGkgICAgIEZhbHNlICAgRmFsc2UgICAgICAgICBlcnJvciAobm90IGEgbGlzdCkKICAgICAgICAjICAgaSAgICAgVHJ1ZSAgICBGYWxzZSAgICAgICAgIGVycm9yIChub3QgYSBsaXN0KQogICAgICAgICMgIE5vbmUgICBGYWxzZSAgIEZhbHNlICAgICAgICAgX3BheWxvYWQKICAgICAgICAjICBOb25lICAgVHJ1ZSAgICBGYWxzZSAgICAgICAgIF9wYXlsb2FkIGRlY29kZWQgKGJ5dGVzKQogICAgICAgICMgTm90ZSB0aGF0IEJhcnJ5IHBsYW5uZWQgdG8gZmFjdG9yIG91dCB0aGUgJ2RlY29kZScgY2FzZSwgYnV0IHRoYXQKICAgICAgICAjIGlzbid0IHNvIGVhc3kgbm93IHRoYXQgd2UgaGFuZGxlIHRoZSA4IGJpdCBkYXRhLCB3aGljaCBuZWVkcyB0byBiZQogICAgICAgICMgY29udmVydGVkIGluIGJvdGggdGhlIGRlY29kZSBhbmQgbm9uLWRlY29kZSBwYXRoLgogICAgICAgIGlmIHNlbGYuaXNfbXVsdGlwYXJ0KCk6CiAgICAgICAgICAgIGlmIGRlY29kZToKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgIGlmIGkgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXlsb2FkCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGF5bG9hZFtpXQogICAgICAgICMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIFVzZSBpc2luc3RhbmNlIGFuZCB0aGlzIGVycm9yIG1lc3NhZ2UKICAgICAgICAjIGluc3RlYWQgb2YgdGhlIG1vcmUgbG9naWNhbCBpc19tdWx0aXBhcnQgdGVzdC4KICAgICAgICBpZiBpIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShzZWxmLl9wYXlsb2FkLCBsaXN0KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBsaXN0LCBnb3QgJXMnICUgdHlwZShzZWxmLl9wYXlsb2FkKSkKICAgICAgICBwYXlsb2FkID0gc2VsZi5fcGF5bG9hZAogICAgICAgICMgY3RlIG1pZ2h0IGJlIGEgSGVhZGVyLCBzbyBmb3Igbm93IHN0cmluZ2lmeSBpdC4KICAgICAgICBjdGUgPSBzdHIoc2VsZi5nZXQoJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnLCAnJykpLmxvd2VyKCkKICAgICAgICAjIHBheWxvYWQgbWF5IGJlIGJ5dGVzIGhlcmUuCiAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBzdHIpOgogICAgICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXMocGF5bG9hZCk6CiAgICAgICAgICAgICAgICBicGF5bG9hZCA9IHBheWxvYWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgICAgaWYgbm90IGRlY29kZToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQgPSBicGF5bG9hZC5kZWNvZGUoc2VsZi5nZXRfcGFyYW0oJ2NoYXJzZXQnLCAnYXNjaWknKSwgJ3JlcGxhY2UnKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZCA9IGJwYXlsb2FkLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCiAgICAgICAgICAgIGVsaWYgZGVjb2RlOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGJwYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHdvbid0IGhhcHBlbiBmb3IgUkZDIGNvbXBsaWFudCBtZXNzYWdlcyAobWVzc2FnZXMKICAgICAgICAgICAgICAgICAgICAjIGNvbnRhaW5pbmcgb25seSBBU0NJSSBjb2RlIHBvaW50cyBpbiB0aGUgdW5pY29kZSBpbnB1dCkuCiAgICAgICAgICAgICAgICAgICAgIyBJZiBpdCBkb2VzIGhhcHBlbiwgdHVybiB0aGUgc3RyaW5nIGludG8gYnl0ZXMgaW4gYSB3YXkKICAgICAgICAgICAgICAgICAgICAjIGd1YXJhbnRlZWQgbm90IHRvIGZhaWwuCiAgICAgICAgICAgICAgICAgICAgYnBheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgncmF3LXVuaWNvZGUtZXNjYXBlJykKICAgICAgICBpZiBub3QgZGVjb2RlOgogICAgICAgICAgICByZXR1cm4gcGF5bG9hZAogICAgICAgIGlmIGN0ZSA9PSAncXVvdGVkLXByaW50YWJsZSc6CiAgICAgICAgICAgIHJldHVybiBxdW9wcmkuZGVjb2Rlc3RyaW5nKGJwYXlsb2FkKQogICAgICAgIGVsaWYgY3RlID09ICdiYXNlNjQnOgogICAgICAgICAgICAjIFhYWDogdGhpcyBpcyBhIGJpdCBvZiBhIGhhY2s7IGRlY29kZV9iIHNob3VsZCBwcm9iYWJseSBiZSBmYWN0b3JlZAogICAgICAgICAgICAjIG91dCBzb21ld2hlcmUsIGJ1dCBJIGhhdmVuJ3QgZmlndXJlZCBvdXQgd2hlcmUgeWV0LgogICAgICAgICAgICB2YWx1ZSwgZGVmZWN0cyA9IGRlY29kZV9iKGInJy5qb2luKGJwYXlsb2FkLnNwbGl0bGluZXMoKSkpCiAgICAgICAgICAgIGZvciBkZWZlY3QgaW4gZGVmZWN0czoKICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZiwgZGVmZWN0KQogICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICBlbGlmIGN0ZSBpbiAoJ3gtdXVlbmNvZGUnLCAndXVlbmNvZGUnLCAndXVlJywgJ3gtdXVlJyk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBfZGVjb2RlX3V1KGJwYXlsb2FkKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICMgU29tZSBkZWNvZGluZyBwcm9ibGVtLgogICAgICAgICAgICAgICAgcmV0dXJuIGJwYXlsb2FkCiAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBzdHIpOgogICAgICAgICAgICByZXR1cm4gYnBheWxvYWQKICAgICAgICByZXR1cm4gcGF5bG9hZAoKICAgIGRlZiBzZXRfcGF5bG9hZChzZWxmLCBwYXlsb2FkLCBjaGFyc2V0PU5vbmUpOgogICAgICAgICIiIlNldCB0aGUgcGF5bG9hZCB0byB0aGUgZ2l2ZW4gdmFsdWUuCgogICAgICAgIE9wdGlvbmFsIGNoYXJzZXQgc2V0cyB0aGUgbWVzc2FnZSdzIGRlZmF1bHQgY2hhcmFjdGVyIHNldC4gIFNlZQogICAgICAgIHNldF9jaGFyc2V0KCkgZm9yIGRldGFpbHMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgaGFzYXR0cihwYXlsb2FkLCAnZW5jb2RlJyk6CiAgICAgICAgICAgIGlmIGNoYXJzZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX3BheWxvYWQgPSBwYXlsb2FkCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2hhcnNldCwgQ2hhcnNldCk6CiAgICAgICAgICAgICAgICBjaGFyc2V0ID0gQ2hhcnNldChjaGFyc2V0KQogICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoY2hhcnNldC5vdXRwdXRfY2hhcnNldCkKICAgICAgICBpZiBoYXNhdHRyKHBheWxvYWQsICdkZWNvZGUnKToKICAgICAgICAgICAgc2VsZi5fcGF5bG9hZCA9IHBheWxvYWQuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3BheWxvYWQgPSBwYXlsb2FkCiAgICAgICAgaWYgY2hhcnNldCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5zZXRfY2hhcnNldChjaGFyc2V0KQoKICAgIGRlZiBzZXRfY2hhcnNldChzZWxmLCBjaGFyc2V0KToKICAgICAgICAiIiJTZXQgdGhlIGNoYXJzZXQgb2YgdGhlIHBheWxvYWQgdG8gYSBnaXZlbiBjaGFyYWN0ZXIgc2V0LgoKICAgICAgICBjaGFyc2V0IGNhbiBiZSBhIENoYXJzZXQgaW5zdGFuY2UsIGEgc3RyaW5nIG5hbWluZyBhIGNoYXJhY3RlciBzZXQsIG9yCiAgICAgICAgTm9uZS4gIElmIGl0IGlzIGEgc3RyaW5nIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgQ2hhcnNldCBpbnN0YW5jZS4KICAgICAgICBJZiBjaGFyc2V0IGlzIE5vbmUsIHRoZSBjaGFyc2V0IHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKICAgICAgICBDb250ZW50LVR5cGUgZmllbGQuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSBUeXBlRXJyb3IuCgogICAgICAgIFRoZSBtZXNzYWdlIHdpbGwgYmUgYXNzdW1lZCB0byBiZSBvZiB0eXBlIHRleHQvKiBlbmNvZGVkIHdpdGgKICAgICAgICBjaGFyc2V0LmlucHV0X2NoYXJzZXQuICBJdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBjaGFyc2V0Lm91dHB1dF9jaGFyc2V0CiAgICAgICAgYW5kIGVuY29kZWQgcHJvcGVybHksIGlmIG5lZWRlZCwgd2hlbiBnZW5lcmF0aW5nIHRoZSBwbGFpbiB0ZXh0CiAgICAgICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuICBNSU1FIGhlYWRlcnMgKE1JTUUtVmVyc2lvbiwKICAgICAgICBDb250ZW50LVR5cGUsIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcpIHdpbGwgYmUgYWRkZWQgYXMgbmVlZGVkLgogICAgICAgICIiIgogICAgICAgIGlmIGNoYXJzZXQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5kZWxfcGFyYW0oJ2NoYXJzZXQnKQogICAgICAgICAgICBzZWxmLl9jaGFyc2V0ID0gTm9uZQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjaGFyc2V0LCBDaGFyc2V0KToKICAgICAgICAgICAgY2hhcnNldCA9IENoYXJzZXQoY2hhcnNldCkKICAgICAgICBzZWxmLl9jaGFyc2V0ID0gY2hhcnNldAogICAgICAgIGlmICdNSU1FLVZlcnNpb24nIG5vdCBpbiBzZWxmOgogICAgICAgICAgICBzZWxmLmFkZF9oZWFkZXIoJ01JTUUtVmVyc2lvbicsICcxLjAnKQogICAgICAgIGlmICdDb250ZW50LVR5cGUnIG5vdCBpbiBzZWxmOgogICAgICAgICAgICBzZWxmLmFkZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9Y2hhcnNldC5nZXRfb3V0cHV0X2NoYXJzZXQoKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnNldF9wYXJhbSgnY2hhcnNldCcsIGNoYXJzZXQuZ2V0X291dHB1dF9jaGFyc2V0KCkpCiAgICAgICAgaWYgY2hhcnNldCAhPSBjaGFyc2V0LmdldF9vdXRwdXRfY2hhcnNldCgpOgogICAgICAgICAgICBzZWxmLl9wYXlsb2FkID0gY2hhcnNldC5ib2R5X2VuY29kZShzZWxmLl9wYXlsb2FkKQogICAgICAgIGlmICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nJyBub3QgaW4gc2VsZjoKICAgICAgICAgICAgY3RlID0gY2hhcnNldC5nZXRfYm9keV9lbmNvZGluZygpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGN0ZShzZWxmKQogICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgIyBUaGlzICdpZicgaXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGl0IGFsbG93cyB1bmljb2RlCiAgICAgICAgICAgICAgICAjIHRocm91Z2ggZXZlbiB0aG91Z2ggdGhhdCB3b24ndCB3b3JrIGNvcnJlY3RseSBpZiB0aGUKICAgICAgICAgICAgICAgICMgbWVzc2FnZSBpcyBzZXJpYWxpemVkLgogICAgICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX3BheWxvYWQKICAgICAgICAgICAgICAgIGlmIHBheWxvYWQ6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZCA9IHBheWxvYWQuZW5jb2RlKGNoYXJzZXQub3V0cHV0X2NoYXJzZXQpCiAgICAgICAgICAgICAgICBzZWxmLl9wYXlsb2FkID0gY2hhcnNldC5ib2R5X2VuY29kZShwYXlsb2FkKQogICAgICAgICAgICAgICAgc2VsZi5hZGRfaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nJywgY3RlKQoKICAgIGRlZiBnZXRfY2hhcnNldChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIENoYXJzZXQgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fY2hhcnNldAoKICAgICMKICAgICMgTUFQUElORyBJTlRFUkZBQ0UgKHBhcnRpYWwpCiAgICAjCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBoZWFkZXJzLCBpbmNsdWRpbmcgZHVwbGljYXRlcy4iIiIKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2hlYWRlcnMpCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG5hbWUpOgogICAgICAgICIiIkdldCBhIGhlYWRlciB2YWx1ZS4KCiAgICAgICAgUmV0dXJuIE5vbmUgaWYgdGhlIGhlYWRlciBpcyBtaXNzaW5nIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24uCgogICAgICAgIE5vdGUgdGhhdCBpZiB0aGUgaGVhZGVyIGFwcGVhcmVkIG11bHRpcGxlIHRpbWVzLCBleGFjdGx5IHdoaWNoCiAgICAgICAgb2NjdXJyZW5jZSBnZXRzIHJldHVybmVkIGlzIHVuZGVmaW5lZC4gIFVzZSBnZXRfYWxsKCkgdG8gZ2V0IGFsbAogICAgICAgIHRoZSB2YWx1ZXMgbWF0Y2hpbmcgYSBoZWFkZXIgZmllbGQgbmFtZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5nZXQobmFtZSkKCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsKToKICAgICAgICAiIiJTZXQgdGhlIHZhbHVlIG9mIGEgaGVhZGVyLgoKICAgICAgICBOb3RlOiB0aGlzIGRvZXMgbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBoZWFkZXIgd2l0aCB0aGUgc2FtZSBmaWVsZAogICAgICAgIG5hbWUuICBVc2UgX19kZWxpdGVtX18oKSBmaXJzdCB0byBkZWxldGUgYW55IGV4aXN0aW5nIGhlYWRlcnMuCiAgICAgICAgIiIiCiAgICAgICAgbWF4X2NvdW50ID0gc2VsZi5wb2xpY3kuaGVhZGVyX21heF9jb3VudChuYW1lKQogICAgICAgIGlmIG1heF9jb3VudDoKICAgICAgICAgICAgbG5hbWUgPSBuYW1lLmxvd2VyKCkKICAgICAgICAgICAgZm91bmQgPSAwCiAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnM6CiAgICAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbG5hbWU6CiAgICAgICAgICAgICAgICAgICAgZm91bmQgKz0gMQogICAgICAgICAgICAgICAgICAgIGlmIGZvdW5kID49IG1heF9jb3VudDoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlcmUgbWF5IGJlIGF0IG1vc3Qge30ge30gaGVhZGVycyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGEgbWVzc2FnZSIuZm9ybWF0KG1heF9jb3VudCwgbmFtZSkpCiAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbCkpCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIG5hbWUpOgogICAgICAgICIiIkRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgYSBoZWFkZXIsIGlmIHByZXNlbnQuCgogICAgICAgIERvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgaGVhZGVyIGlzIG1pc3NpbmcuCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQogICAgICAgIG5ld2hlYWRlcnMgPSBbXQogICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnM6CiAgICAgICAgICAgIGlmIGsubG93ZXIoKSAhPSBuYW1lOgogICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoKGssIHYpKQogICAgICAgIHNlbGYuX2hlYWRlcnMgPSBuZXdoZWFkZXJzCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBuYW1lKToKICAgICAgICByZXR1cm4gbmFtZS5sb3dlcigpIGluIFtrLmxvd2VyKCkgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICB5aWVsZCBmaWVsZAoKICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBtZXNzYWdlJ3MgaGVhZGVyIGZpZWxkIG5hbWVzLgoKICAgICAgICBUaGVzZSB3aWxsIGJlIHNvcnRlZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUgb3JpZ2luYWwKICAgICAgICBtZXNzYWdlLCBvciB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlLCBhbmQgbWF5IGNvbnRhaW4gZHVwbGljYXRlcy4KICAgICAgICBBbnkgZmllbGRzIGRlbGV0ZWQgYW5kIHJlLWluc2VydGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGhlYWRlcgogICAgICAgIGxpc3QuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIFtrIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCgogICAgZGVmIHZhbHVlcyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgbWVzc2FnZSdzIGhlYWRlciB2YWx1ZXMuCgogICAgICAgIFRoZXNlIHdpbGwgYmUgc29ydGVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbAogICAgICAgIG1lc3NhZ2UsIG9yIHdlcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UsIGFuZCBtYXkgY29udGFpbiBkdXBsaWNhdGVzLgogICAgICAgIEFueSBmaWVsZHMgZGVsZXRlZCBhbmQgcmUtaW5zZXJ0ZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgaGVhZGVyCiAgICAgICAgbGlzdC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gW3NlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KQogICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KCiAgICBkZWYgaXRlbXMoc2VsZik6CiAgICAgICAgIiIiR2V0IGFsbCB0aGUgbWVzc2FnZSdzIGhlYWRlciBmaWVsZHMgYW5kIHZhbHVlcy4KCiAgICAgICAgVGhlc2Ugd2lsbCBiZSBzb3J0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlIG9yaWdpbmFsCiAgICAgICAgbWVzc2FnZSwgb3Igd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSwgYW5kIG1heSBjb250YWluIGR1cGxpY2F0ZXMuCiAgICAgICAgQW55IGZpZWxkcyBkZWxldGVkIGFuZCByZS1pbnNlcnRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBoZWFkZXIKICAgICAgICBsaXN0LgogICAgICAgICIiIgogICAgICAgIHJldHVybiBbKGssIHNlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KSkKICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCgogICAgZGVmIGdldChzZWxmLCBuYW1lLCBmYWlsb2JqPU5vbmUpOgogICAgICAgICIiIkdldCBhIGhlYWRlciB2YWx1ZS4KCiAgICAgICAgTGlrZSBfX2dldGl0ZW1fXygpIGJ1dCByZXR1cm4gZmFpbG9iaiBpbnN0ZWFkIG9mIE5vbmUgd2hlbiB0aGUgZmllbGQKICAgICAgICBpcyBtaXNzaW5nLgogICAgICAgICIiIgogICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbmFtZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBvbGljeS5oZWFkZXJfZmV0Y2hfcGFyc2UoaywgdikKICAgICAgICByZXR1cm4gZmFpbG9iagoKICAgICMKICAgICMgIkludGVybmFsIiBtZXRob2RzIChwdWJsaWMgQVBJLCBidXQgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IGEgcGFyc2VyCiAgICAjIG9yIGdlbmVyYXRvciwgbm90IG5vcm1hbCBhcHBsaWNhdGlvbiBjb2RlLgogICAgIwoKICAgIGRlZiBzZXRfcmF3KHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAiIiJTdG9yZSBuYW1lIGFuZCB2YWx1ZSBpbiB0aGUgbW9kZWwgd2l0aG91dCBtb2RpZmljYXRpb24uCgogICAgICAgIFRoaXMgaXMgYW4gImludGVybmFsIiBBUEksIGludGVuZGVkIG9ubHkgZm9yIHVzZSBieSBhIHBhcnNlci4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQoKICAgIGRlZiByYXdfaXRlbXMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIGhlYWRlciBwYWlycyB3aXRob3V0IG1vZGlmaWNhdGlvbi4KCiAgICAgICAgVGhpcyBpcyBhbiAiaW50ZXJuYWwiIEFQSSwgaW50ZW5kZWQgb25seSBmb3IgdXNlIGJ5IGEgZ2VuZXJhdG9yLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2hlYWRlcnMuY29weSgpKQoKICAgICMKICAgICMgQWRkaXRpb25hbCB1c2VmdWwgc3R1ZmYKICAgICMKCiAgICBkZWYgZ2V0X2FsbChzZWxmLCBuYW1lLCBmYWlsb2JqPU5vbmUpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSB2YWx1ZXMgZm9yIHRoZSBuYW1lZCBmaWVsZC4KCiAgICAgICAgVGhlc2Ugd2lsbCBiZSBzb3J0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlIG9yaWdpbmFsCiAgICAgICAgbWVzc2FnZSwgYW5kIG1heSBjb250YWluIGR1cGxpY2F0ZXMuICBBbnkgZmllbGRzIGRlbGV0ZWQgYW5kCiAgICAgICAgcmUtaW5zZXJ0ZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgaGVhZGVyIGxpc3QuCgogICAgICAgIElmIG5vIHN1Y2ggZmllbGRzIGV4aXN0LCBmYWlsb2JqIGlzIHJldHVybmVkIChkZWZhdWx0cyB0byBOb25lKS4KICAgICAgICAiIiIKICAgICAgICB2YWx1ZXMgPSBbXQogICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbmFtZToKICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpKQogICAgICAgIGlmIG5vdCB2YWx1ZXM6CiAgICAgICAgICAgIHJldHVybiBmYWlsb2JqCiAgICAgICAgcmV0dXJuIHZhbHVlcwoKICAgIGRlZiBhZGRfaGVhZGVyKHNlbGYsIF9uYW1lLCBfdmFsdWUsICoqX3BhcmFtcyk6CiAgICAgICAgIiIiRXh0ZW5kZWQgaGVhZGVyIHNldHRpbmcuCgogICAgICAgIG5hbWUgaXMgdGhlIGhlYWRlciBmaWVsZCB0byBhZGQuICBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gYmUgdXNlZCB0byBzZXQKICAgICAgICBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBoZWFkZXIgZmllbGQsIHdpdGggdW5kZXJzY29yZXMgY29udmVydGVkCiAgICAgICAgdG8gZGFzaGVzLiAgTm9ybWFsbHkgdGhlIHBhcmFtZXRlciB3aWxsIGJlIGFkZGVkIGFzIGtleT0idmFsdWUiIHVubGVzcwogICAgICAgIHZhbHVlIGlzIE5vbmUsIGluIHdoaWNoIGNhc2Ugb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuICBJZiBhCiAgICAgICAgcGFyYW1ldGVyIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYQogICAgICAgIHRocmVlLXR1cGxlIG9mIChjaGFyc2V0LCBsYW5ndWFnZSwgdmFsdWUpLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgYmUKICAgICAgICBlbmNvZGVkIGFjY29yZGluZyB0byBSRkMyMjMxIHJ1bGVzLiAgT3RoZXJ3aXNlIGl0IHdpbGwgYmUgZW5jb2RlZCB1c2luZwogICAgICAgIHRoZSB1dGYtOCBjaGFyc2V0IGFuZCBhIGxhbmd1YWdlIG9mICcnLgoKICAgICAgICBFeGFtcGxlczoKCiAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ2NvbnRlbnQtZGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPSdidWQuZ2lmJykKICAgICAgICBtc2cuYWRkX2hlYWRlcignY29udGVudC1kaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT0oJ3V0Zi04JywgJycsIEZ1w59iYWxsZXIucHB0JykpCiAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ2NvbnRlbnQtZGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9J0Z1w59iYWxsZXIucHB0JykpCiAgICAgICAgIiIiCiAgICAgICAgcGFydHMgPSBbXQogICAgICAgIGZvciBrLCB2IGluIF9wYXJhbXMuaXRlbXMoKToKICAgICAgICAgICAgaWYgdiBpcyBOb25lOgogICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKGsucmVwbGFjZSgnXycsICctJykpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoX2Zvcm1hdHBhcmFtKGsucmVwbGFjZSgnXycsICctJyksIHYpKQogICAgICAgIGlmIF92YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgcGFydHMuaW5zZXJ0KDAsIF92YWx1ZSkKICAgICAgICBzZWxmW19uYW1lXSA9IFNFTUlTUEFDRS5qb2luKHBhcnRzKQoKICAgIGRlZiByZXBsYWNlX2hlYWRlcihzZWxmLCBfbmFtZSwgX3ZhbHVlKToKICAgICAgICAiIiJSZXBsYWNlIGEgaGVhZGVyLgoKICAgICAgICBSZXBsYWNlIHRoZSBmaXJzdCBtYXRjaGluZyBoZWFkZXIgZm91bmQgaW4gdGhlIG1lc3NhZ2UsIHJldGFpbmluZwogICAgICAgIGhlYWRlciBvcmRlciBhbmQgY2FzZS4gIElmIG5vIG1hdGNoaW5nIGhlYWRlciB3YXMgZm91bmQsIGEgS2V5RXJyb3IgaXMKICAgICAgICByYWlzZWQuCiAgICAgICAgIiIiCiAgICAgICAgX25hbWUgPSBfbmFtZS5sb3dlcigpCiAgICAgICAgZm9yIGksIChrLCB2KSBpbiB6aXAocmFuZ2UobGVuKHNlbGYuX2hlYWRlcnMpKSwgc2VsZi5faGVhZGVycyk6CiAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBfbmFtZToKICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNbaV0gPSBzZWxmLnBvbGljeS5oZWFkZXJfc3RvcmVfcGFyc2UoaywgX3ZhbHVlKQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBLZXlFcnJvcihfbmFtZSkKCiAgICAjCiAgICAjIFVzZSB0aGVzZSB0aHJlZSBtZXRob2RzIGluc3RlYWQgb2YgdGhlIHRocmVlIGFib3ZlLgogICAgIwoKICAgIGRlZiBnZXRfY29udGVudF90eXBlKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZS4KCiAgICAgICAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBjb2VyY2VkIHRvIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0KICAgICAgICBgbWFpbnR5cGUvc3VidHlwZScuICBJZiB0aGVyZSB3YXMgbm8gQ29udGVudC1UeXBlIGhlYWRlciBpbiB0aGUKICAgICAgICBtZXNzYWdlLCB0aGUgZGVmYXVsdCB0eXBlIGFzIGdpdmVuIGJ5IGdldF9kZWZhdWx0X3R5cGUoKSB3aWxsIGJlCiAgICAgICAgcmV0dXJuZWQuICBTaW5jZSBhY2NvcmRpbmcgdG8gUkZDIDIwNDUsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdAogICAgICAgIHR5cGUgdGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4KCiAgICAgICAgUkZDIDIwNDUgZGVmaW5lcyBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgdGV4dC9wbGFpbiB1bmxlc3MgaXQKICAgICAgICBhcHBlYXJzIGluc2lkZSBhIG11bHRpcGFydC9kaWdlc3QgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkIGJlCiAgICAgICAgbWVzc2FnZS9yZmM4MjIuCiAgICAgICAgIiIiCiAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCiAgICAgICAgdmFsdWUgPSBzZWxmLmdldCgnY29udGVudC10eXBlJywgbWlzc2luZykKICAgICAgICBpZiB2YWx1ZSBpcyBtaXNzaW5nOgogICAgICAgICAgICAjIFRoaXMgc2hvdWxkIGhhdmUgbm8gcGFyYW1ldGVycwogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfZGVmYXVsdF90eXBlKCkKICAgICAgICBjdHlwZSA9IF9zcGxpdHBhcmFtKHZhbHVlKVswXS5sb3dlcigpCiAgICAgICAgIyBSRkMgMjA0NSwgc2VjdGlvbiA1LjIgc2F5cyBpZiBpdHMgaW52YWxpZCwgdXNlIHRleHQvcGxhaW4KICAgICAgICBpZiBjdHlwZS5jb3VudCgnLycpICE9IDE6CiAgICAgICAgICAgIHJldHVybiAndGV4dC9wbGFpbicKICAgICAgICByZXR1cm4gY3R5cGUKCiAgICBkZWYgZ2V0X2NvbnRlbnRfbWFpbnR5cGUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBtZXNzYWdlJ3MgbWFpbiBjb250ZW50IHR5cGUuCgogICAgICAgIFRoaXMgaXMgdGhlIGBtYWludHlwZScgcGFydCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5CiAgICAgICAgZ2V0X2NvbnRlbnRfdHlwZSgpLgogICAgICAgICIiIgogICAgICAgIGN0eXBlID0gc2VsZi5nZXRfY29udGVudF90eXBlKCkKICAgICAgICByZXR1cm4gY3R5cGUuc3BsaXQoJy8nKVswXQoKICAgIGRlZiBnZXRfY29udGVudF9zdWJ0eXBlKHNlbGYpOgogICAgICAgICIiIlJldHVybnMgdGhlIG1lc3NhZ2UncyBzdWItY29udGVudCB0eXBlLgoKICAgICAgICBUaGlzIGlzIHRoZSBgc3VidHlwZScgcGFydCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5CiAgICAgICAgZ2V0X2NvbnRlbnRfdHlwZSgpLgogICAgICAgICIiIgogICAgICAgIGN0eXBlID0gc2VsZi5nZXRfY29udGVudF90eXBlKCkKICAgICAgICByZXR1cm4gY3R5cGUuc3BsaXQoJy8nKVsxXQoKICAgIGRlZiBnZXRfZGVmYXVsdF90eXBlKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgYGRlZmF1bHQnIGNvbnRlbnQgdHlwZS4KCiAgICAgICAgTW9zdCBtZXNzYWdlcyBoYXZlIGEgZGVmYXVsdCBjb250ZW50IHR5cGUgb2YgdGV4dC9wbGFpbiwgZXhjZXB0IGZvcgogICAgICAgIG1lc3NhZ2VzIHRoYXQgYXJlIHN1YnBhcnRzIG9mIG11bHRpcGFydC9kaWdlc3QgY29udGFpbmVycy4gIFN1Y2gKICAgICAgICBzdWJwYXJ0cyBoYXZlIGEgZGVmYXVsdCBjb250ZW50IHR5cGUgb2YgbWVzc2FnZS9yZmM4MjIuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2RlZmF1bHRfdHlwZQoKICAgIGRlZiBzZXRfZGVmYXVsdF90eXBlKHNlbGYsIGN0eXBlKToKICAgICAgICAiIiJTZXQgdGhlIGBkZWZhdWx0JyBjb250ZW50IHR5cGUuCgogICAgICAgIGN0eXBlIHNob3VsZCBiZSBlaXRoZXIgInRleHQvcGxhaW4iIG9yICJtZXNzYWdlL3JmYzgyMiIsIGFsdGhvdWdoIHRoaXMKICAgICAgICBpcyBub3QgZW5mb3JjZWQuICBUaGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaXMgbm90IHN0b3JlZCBpbiB0aGUKICAgICAgICBDb250ZW50LVR5cGUgaGVhZGVyLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2RlZmF1bHRfdHlwZSA9IGN0eXBlCgogICAgZGVmIF9nZXRfcGFyYW1zX3ByZXNlcnZlKHNlbGYsIGZhaWxvYmosIGhlYWRlcik6CiAgICAgICAgIyBMaWtlIGdldF9wYXJhbXMoKSBidXQgcHJlc2VydmVzIHRoZSBxdW90aW5nIG9mIHZhbHVlcy4gIEJBVzoKICAgICAgICAjIHNob3VsZCB0aGlzIGJlIHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2U/CiAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCiAgICAgICAgdmFsdWUgPSBzZWxmLmdldChoZWFkZXIsIG1pc3NpbmcpCiAgICAgICAgaWYgdmFsdWUgaXMgbWlzc2luZzoKICAgICAgICAgICAgcmV0dXJuIGZhaWxvYmoKICAgICAgICBwYXJhbXMgPSBbXQogICAgICAgIGZvciBwIGluIF9wYXJzZXBhcmFtKHZhbHVlKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbmFtZSwgdmFsID0gcC5zcGxpdCgnPScsIDEpCiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCiAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc3RyaXAoKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICMgTXVzdCBoYXZlIGJlZW4gYSBiYXJlIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgbmFtZSA9IHAuc3RyaXAoKQogICAgICAgICAgICAgICAgdmFsID0gJycKICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgobmFtZSwgdmFsKSkKICAgICAgICBwYXJhbXMgPSB1dGlscy5kZWNvZGVfcGFyYW1zKHBhcmFtcykKICAgICAgICByZXR1cm4gcGFyYW1zCgogICAgZGVmIGdldF9wYXJhbXMoc2VsZiwgZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBtZXNzYWdlJ3MgQ29udGVudC1UeXBlIHBhcmFtZXRlcnMsIGFzIGEgbGlzdC4KCiAgICAgICAgVGhlIGVsZW1lbnRzIG9mIHRoZSByZXR1cm5lZCBsaXN0IGFyZSAyLXR1cGxlcyBvZiBrZXkvdmFsdWUgcGFpcnMsIGFzCiAgICAgICAgc3BsaXQgb24gdGhlIGA9JyBzaWduLiAgVGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoZSBgPScgaXMgdGhlIGtleSwKICAgICAgICB3aGlsZSB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHRoZSB2YWx1ZS4gIElmIHRoZXJlIGlzIG5vIGA9JyBzaWduIGluCiAgICAgICAgdGhlIHBhcmFtZXRlciB0aGUgdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZy4gIFRoZSB2YWx1ZSBpcyBhcwogICAgICAgIGRlc2NyaWJlZCBpbiB0aGUgZ2V0X3BhcmFtKCkgbWV0aG9kLgoKICAgICAgICBPcHRpb25hbCBmYWlsb2JqIGlzIHRoZSBvYmplY3QgdG8gcmV0dXJuIGlmIHRoZXJlIGlzIG5vIENvbnRlbnQtVHlwZQogICAgICAgIGhlYWRlci4gIE9wdGlvbmFsIGhlYWRlciBpcyB0aGUgaGVhZGVyIHRvIHNlYXJjaCBpbnN0ZWFkIG9mCiAgICAgICAgQ29udGVudC1UeXBlLiAgSWYgdW5xdW90ZSBpcyBUcnVlLCB0aGUgdmFsdWUgaXMgdW5xdW90ZWQuCiAgICAgICAgIiIiCiAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCiAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0X3BhcmFtc19wcmVzZXJ2ZShtaXNzaW5nLCBoZWFkZXIpCiAgICAgICAgaWYgcGFyYW1zIGlzIG1pc3Npbmc6CiAgICAgICAgICAgIHJldHVybiBmYWlsb2JqCiAgICAgICAgaWYgdW5xdW90ZToKICAgICAgICAgICAgcmV0dXJuIFsoaywgX3VucXVvdGV2YWx1ZSh2KSkgZm9yIGssIHYgaW4gcGFyYW1zXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBwYXJhbXMKCiAgICBkZWYgZ2V0X3BhcmFtKHNlbGYsIHBhcmFtLCBmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywKICAgICAgICAgICAgICAgICAgdW5xdW90ZT1UcnVlKToKICAgICAgICAiIiJSZXR1cm4gdGhlIHBhcmFtZXRlciB2YWx1ZSBpZiBmb3VuZCBpbiB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4KCiAgICAgICAgT3B0aW9uYWwgZmFpbG9iaiBpcyB0aGUgb2JqZWN0IHRvIHJldHVybiBpZiB0aGVyZSBpcyBubyBDb250ZW50LVR5cGUKICAgICAgICBoZWFkZXIsIG9yIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyIGhhcyBubyBzdWNoIHBhcmFtZXRlci4gIE9wdGlvbmFsCiAgICAgICAgaGVhZGVyIGlzIHRoZSBoZWFkZXIgdG8gc2VhcmNoIGluc3RlYWQgb2YgQ29udGVudC1UeXBlLgoKICAgICAgICBQYXJhbWV0ZXIga2V5cyBhcmUgYWx3YXlzIGNvbXBhcmVkIGNhc2UgaW5zZW5zaXRpdmVseS4gIFRoZSByZXR1cm4KICAgICAgICB2YWx1ZSBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhIDMtdHVwbGUgaWYgdGhlIHBhcmFtZXRlciB3YXMgUkZDCiAgICAgICAgMjIzMSBlbmNvZGVkLiAgV2hlbiBpdCdzIGEgMy10dXBsZSwgdGhlIGVsZW1lbnRzIG9mIHRoZSB2YWx1ZSBhcmUgb2YKICAgICAgICB0aGUgZm9ybSAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKS4gIE5vdGUgdGhhdCBib3RoIENIQVJTRVQgYW5kCiAgICAgICAgTEFOR1VBR0UgY2FuIGJlIE5vbmUsIGluIHdoaWNoIGNhc2UgeW91IHNob3VsZCBjb25zaWRlciBWQUxVRSB0byBiZQogICAgICAgIGVuY29kZWQgaW4gdGhlIHVzLWFzY2lpIGNoYXJzZXQuICBZb3UgY2FuIHVzdWFsbHkgaWdub3JlIExBTkdVQUdFLgogICAgICAgIFRoZSBwYXJhbWV0ZXIgdmFsdWUgKGVpdGhlciB0aGUgcmV0dXJuZWQgc3RyaW5nLCBvciB0aGUgVkFMVUUgaXRlbSBpbgogICAgICAgIHRoZSAzLXR1cGxlKSBpcyBhbHdheXMgdW5xdW90ZWQsIHVubGVzcyB1bnF1b3RlIGlzIHNldCB0byBGYWxzZS4KCiAgICAgICAgSWYgeW91ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdhcyBSRkMgMjIzMQogICAgICAgIGVuY29kZWQsIGl0IGNhbiB0dXJuIHRoZSByZXR1cm4gdmFsdWUgaW50byBhIHN0cmluZyBhcyBmb2xsb3dzOgoKICAgICAgICAgICAgcmF3cGFyYW0gPSBtc2cuZ2V0X3BhcmFtKCdmb28nKQogICAgICAgICAgICBwYXJhbSA9IGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWUocmF3cGFyYW0pCgogICAgICAgICIiIgogICAgICAgIGlmIGhlYWRlciBub3QgaW4gc2VsZjoKICAgICAgICAgICAgcmV0dXJuIGZhaWxvYmoKICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9nZXRfcGFyYW1zX3ByZXNlcnZlKGZhaWxvYmosIGhlYWRlcik6CiAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBwYXJhbS5sb3dlcigpOgogICAgICAgICAgICAgICAgaWYgdW5xdW90ZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3VucXVvdGV2YWx1ZSh2KQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdgogICAgICAgIHJldHVybiBmYWlsb2JqCgogICAgZGVmIHNldF9wYXJhbShzZWxmLCBwYXJhbSwgdmFsdWUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlLAogICAgICAgICAgICAgICAgICBjaGFyc2V0PU5vbmUsIGxhbmd1YWdlPScnLCByZXBsYWNlPUZhbHNlKToKICAgICAgICAiIiJTZXQgYSBwYXJhbWV0ZXIgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCgogICAgICAgIElmIHRoZSBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgaXRzIHZhbHVlIHdpbGwgYmUKICAgICAgICByZXBsYWNlZCB3aXRoIHRoZSBuZXcgdmFsdWUuCgogICAgICAgIElmIGhlYWRlciBpcyBDb250ZW50LVR5cGUgYW5kIGhhcyBub3QgeWV0IGJlZW4gZGVmaW5lZCBmb3IgdGhpcwogICAgICAgIG1lc3NhZ2UsIGl0IHdpbGwgYmUgc2V0IHRvICJ0ZXh0L3BsYWluIiBhbmQgdGhlIG5ldyBwYXJhbWV0ZXIgYW5kCiAgICAgICAgdmFsdWUgd2lsbCBiZSBhcHBlbmRlZCBhcyBwZXIgUkZDIDIwNDUuCgogICAgICAgIEFuIGFsdGVybmF0ZSBoZWFkZXIgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgaGVhZGVyIGFyZ3VtZW50LCBhbmQgYWxsCiAgICAgICAgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkgdW5sZXNzIHJlcXVvdGUgaXMgRmFsc2UuCgogICAgICAgIElmIGNoYXJzZXQgaXMgc3BlY2lmaWVkLCB0aGUgcGFyYW1ldGVyIHdpbGwgYmUgZW5jb2RlZCBhY2NvcmRpbmcgdG8gUkZDCiAgICAgICAgMjIzMS4gIE9wdGlvbmFsIGxhbmd1YWdlIHNwZWNpZmllcyB0aGUgUkZDIDIyMzEgbGFuZ3VhZ2UsIGRlZmF1bHRpbmcKICAgICAgICB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCBjaGFyc2V0IGFuZCBsYW5ndWFnZSBzaG91bGQgYmUgc3RyaW5ncy4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpIGFuZCBjaGFyc2V0OgogICAgICAgICAgICB2YWx1ZSA9IChjaGFyc2V0LCBsYW5ndWFnZSwgdmFsdWUpCgogICAgICAgIGlmIGhlYWRlciBub3QgaW4gc2VsZiBhbmQgaGVhZGVyLmxvd2VyKCkgPT0gJ2NvbnRlbnQtdHlwZSc6CiAgICAgICAgICAgIGN0eXBlID0gJ3RleHQvcGxhaW4nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY3R5cGUgPSBzZWxmLmdldChoZWFkZXIpCiAgICAgICAgaWYgbm90IHNlbGYuZ2V0X3BhcmFtKHBhcmFtLCBoZWFkZXI9aGVhZGVyKToKICAgICAgICAgICAgaWYgbm90IGN0eXBlOgogICAgICAgICAgICAgICAgY3R5cGUgPSBfZm9ybWF0cGFyYW0ocGFyYW0sIHZhbHVlLCByZXF1b3RlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgY3R5cGUgPSBTRU1JU1BBQ0Uuam9pbigKICAgICAgICAgICAgICAgICAgICBbY3R5cGUsIF9mb3JtYXRwYXJhbShwYXJhbSwgdmFsdWUsIHJlcXVvdGUpXSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBjdHlwZSA9ICcnCiAgICAgICAgICAgIGZvciBvbGRfcGFyYW0sIG9sZF92YWx1ZSBpbiBzZWxmLmdldF9wYXJhbXMoaGVhZGVyPWhlYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnF1b3RlPXJlcXVvdGUpOgogICAgICAgICAgICAgICAgYXBwZW5kX3BhcmFtID0gJycKICAgICAgICAgICAgICAgIGlmIG9sZF9wYXJhbS5sb3dlcigpID09IHBhcmFtLmxvd2VyKCk6CiAgICAgICAgICAgICAgICAgICAgYXBwZW5kX3BhcmFtID0gX2Zvcm1hdHBhcmFtKHBhcmFtLCB2YWx1ZSwgcmVxdW90ZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYXBwZW5kX3BhcmFtID0gX2Zvcm1hdHBhcmFtKG9sZF9wYXJhbSwgb2xkX3ZhbHVlLCByZXF1b3RlKQogICAgICAgICAgICAgICAgaWYgbm90IGN0eXBlOgogICAgICAgICAgICAgICAgICAgIGN0eXBlID0gYXBwZW5kX3BhcmFtCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGN0eXBlID0gU0VNSVNQQUNFLmpvaW4oW2N0eXBlLCBhcHBlbmRfcGFyYW1dKQogICAgICAgIGlmIGN0eXBlICE9IHNlbGYuZ2V0KGhlYWRlcik6CiAgICAgICAgICAgIGlmIHJlcGxhY2U6CiAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfaGVhZGVyKGhlYWRlciwgY3R5cGUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkZWwgc2VsZltoZWFkZXJdCiAgICAgICAgICAgICAgICBzZWxmW2hlYWRlcl0gPSBjdHlwZQoKICAgIGRlZiBkZWxfcGFyYW0oc2VsZiwgcGFyYW0sIGhlYWRlcj0nY29udGVudC10eXBlJywgcmVxdW90ZT1UcnVlKToKICAgICAgICAiIiJSZW1vdmUgdGhlIGdpdmVuIHBhcmFtZXRlciBjb21wbGV0ZWx5IGZyb20gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCgogICAgICAgIFRoZSBoZWFkZXIgd2lsbCBiZSByZS13cml0dGVuIGluIHBsYWNlIHdpdGhvdXQgdGhlIHBhcmFtZXRlciBvciBpdHMKICAgICAgICB2YWx1ZS4gQWxsIHZhbHVlcyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkgdW5sZXNzIHJlcXVvdGUgaXMKICAgICAgICBGYWxzZS4gIE9wdGlvbmFsIGhlYWRlciBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIENvbnRlbnQtVHlwZQogICAgICAgIGhlYWRlci4KICAgICAgICAiIiIKICAgICAgICBpZiBoZWFkZXIgbm90IGluIHNlbGY6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIG5ld19jdHlwZSA9ICcnCiAgICAgICAgZm9yIHAsIHYgaW4gc2VsZi5nZXRfcGFyYW1zKGhlYWRlcj1oZWFkZXIsIHVucXVvdGU9cmVxdW90ZSk6CiAgICAgICAgICAgIGlmIHAubG93ZXIoKSAhPSBwYXJhbS5sb3dlcigpOgogICAgICAgICAgICAgICAgaWYgbm90IG5ld19jdHlwZToKICAgICAgICAgICAgICAgICAgICBuZXdfY3R5cGUgPSBfZm9ybWF0cGFyYW0ocCwgdiwgcmVxdW90ZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbmV3X2N0eXBlID0gU0VNSVNQQUNFLmpvaW4oW25ld19jdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Zvcm1hdHBhcmFtKHAsIHYsIHJlcXVvdGUpXSkKICAgICAgICBpZiBuZXdfY3R5cGUgIT0gc2VsZi5nZXQoaGVhZGVyKToKICAgICAgICAgICAgZGVsIHNlbGZbaGVhZGVyXQogICAgICAgICAgICBzZWxmW2hlYWRlcl0gPSBuZXdfY3R5cGUKCiAgICBkZWYgc2V0X3R5cGUoc2VsZiwgdHlwZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUpOgogICAgICAgICIiIlNldCB0aGUgbWFpbiB0eXBlIGFuZCBzdWJ0eXBlIGZvciB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4KCiAgICAgICAgdHlwZSBtdXN0IGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtICJtYWludHlwZS9zdWJ0eXBlIiwgb3RoZXJ3aXNlIGEKICAgICAgICBWYWx1ZUVycm9yIGlzIHJhaXNlZC4KCiAgICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZXMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIsIGtlZXBpbmcgYWxsIHRoZQogICAgICAgIHBhcmFtZXRlcnMgaW4gcGxhY2UuICBJZiByZXF1b3RlIGlzIEZhbHNlLCB0aGlzIGxlYXZlcyB0aGUgZXhpc3RpbmcKICAgICAgICBoZWFkZXIncyBxdW90aW5nIGFzIGlzLiAgT3RoZXJ3aXNlLCB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCAodGhlCiAgICAgICAgZGVmYXVsdCkuCgogICAgICAgIEFuIGFsdGVybmF0aXZlIGhlYWRlciBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSBoZWFkZXIgYXJndW1lbnQuICBXaGVuCiAgICAgICAgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgc2V0LCB3ZSdsbCBhbHdheXMgYWxzbyBhZGQgYSBNSU1FLVZlcnNpb24KICAgICAgICBoZWFkZXIuCiAgICAgICAgIiIiCiAgICAgICAgIyBCQVc6IHNob3VsZCB3ZSBiZSBzdHJpY3Q/CiAgICAgICAgaWYgbm90IHR5cGUuY291bnQoJy8nKSA9PSAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIyBTZXQgdGhlIENvbnRlbnQtVHlwZSwgeW91IGdldCBhIE1JTUUtVmVyc2lvbgogICAgICAgIGlmIGhlYWRlci5sb3dlcigpID09ICdjb250ZW50LXR5cGUnOgogICAgICAgICAgICBkZWwgc2VsZlsnbWltZS12ZXJzaW9uJ10KICAgICAgICAgICAgc2VsZlsnTUlNRS1WZXJzaW9uJ10gPSAnMS4wJwogICAgICAgIGlmIGhlYWRlciBub3QgaW4gc2VsZjoKICAgICAgICAgICAgc2VsZltoZWFkZXJdID0gdHlwZQogICAgICAgICAgICByZXR1cm4KICAgICAgICBwYXJhbXMgPSBzZWxmLmdldF9wYXJhbXMoaGVhZGVyPWhlYWRlciwgdW5xdW90ZT1yZXF1b3RlKQogICAgICAgIGRlbCBzZWxmW2hlYWRlcl0KICAgICAgICBzZWxmW2hlYWRlcl0gPSB0eXBlCiAgICAgICAgIyBTa2lwIHRoZSBmaXJzdCBwYXJhbTsgaXQncyB0aGUgb2xkIHR5cGUuCiAgICAgICAgZm9yIHAsIHYgaW4gcGFyYW1zWzE6XToKICAgICAgICAgICAgc2VsZi5zZXRfcGFyYW0ocCwgdiwgaGVhZGVyLCByZXF1b3RlKQoKICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZmFpbG9iaj1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGF5bG9hZCBpZiBwcmVzZW50LgoKICAgICAgICBUaGUgZmlsZW5hbWUgaXMgZXh0cmFjdGVkIGZyb20gdGhlIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyJ3MKICAgICAgICBgZmlsZW5hbWUnIHBhcmFtZXRlciwgYW5kIGl0IGlzIHVucXVvdGVkLiAgSWYgdGhhdCBoZWFkZXIgaXMgbWlzc2luZwogICAgICAgIHRoZSBgZmlsZW5hbWUnIHBhcmFtZXRlciwgdGhpcyBtZXRob2QgZmFsbHMgYmFjayB0byBsb29raW5nIGZvciB0aGUKICAgICAgICBgbmFtZScgcGFyYW1ldGVyLgogICAgICAgICIiIgogICAgICAgIG1pc3NpbmcgPSBvYmplY3QoKQogICAgICAgIGZpbGVuYW1lID0gc2VsZi5nZXRfcGFyYW0oJ2ZpbGVuYW1lJywgbWlzc2luZywgJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQogICAgICAgIGlmIGZpbGVuYW1lIGlzIG1pc3Npbmc6CiAgICAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5nZXRfcGFyYW0oJ25hbWUnLCBtaXNzaW5nLCAnY29udGVudC10eXBlJykKICAgICAgICBpZiBmaWxlbmFtZSBpcyBtaXNzaW5nOgogICAgICAgICAgICByZXR1cm4gZmFpbG9iagogICAgICAgIHJldHVybiB1dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlKGZpbGVuYW1lKS5zdHJpcCgpCgogICAgZGVmIGdldF9ib3VuZGFyeShzZWxmLCBmYWlsb2JqPU5vbmUpOgogICAgICAgICIiIlJldHVybiB0aGUgYm91bmRhcnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXlsb2FkIGlmIHByZXNlbnQuCgogICAgICAgIFRoZSBib3VuZGFyeSBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgQ29udGVudC1UeXBlIGhlYWRlcidzIGBib3VuZGFyeScKICAgICAgICBwYXJhbWV0ZXIsIGFuZCBpdCBpcyB1bnF1b3RlZC4KICAgICAgICAiIiIKICAgICAgICBtaXNzaW5nID0gb2JqZWN0KCkKICAgICAgICBib3VuZGFyeSA9IHNlbGYuZ2V0X3BhcmFtKCdib3VuZGFyeScsIG1pc3NpbmcpCiAgICAgICAgaWYgYm91bmRhcnkgaXMgbWlzc2luZzoKICAgICAgICAgICAgcmV0dXJuIGZhaWxvYmoKICAgICAgICAjIFJGQyAyMDQ2IHNheXMgdGhhdCBib3VuZGFyaWVzIG1heSBiZWdpbiBidXQgbm90IGVuZCBpbiB3L3MKICAgICAgICByZXR1cm4gdXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZShib3VuZGFyeSkucnN0cmlwKCkKCiAgICBkZWYgc2V0X2JvdW5kYXJ5KHNlbGYsIGJvdW5kYXJ5KToKICAgICAgICAiIiJTZXQgdGhlIGJvdW5kYXJ5IHBhcmFtZXRlciBpbiBDb250ZW50LVR5cGUgdG8gJ2JvdW5kYXJ5Jy4KCiAgICAgICAgVGhpcyBpcyBzdWJ0bHkgZGlmZmVyZW50IHRoYW4gZGVsZXRpbmcgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgYW5kCiAgICAgICAgYWRkaW5nIGEgbmV3IG9uZSB3aXRoIGEgbmV3IGJvdW5kYXJ5IHBhcmFtZXRlciB2aWEgYWRkX2hlYWRlcigpLiAgVGhlCiAgICAgICAgbWFpbiBkaWZmZXJlbmNlIGlzIHRoYXQgdXNpbmcgdGhlIHNldF9ib3VuZGFyeSgpIG1ldGhvZCBwcmVzZXJ2ZXMgdGhlCiAgICAgICAgb3JkZXIgb2YgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgaW4gdGhlIG9yaWdpbmFsIG1lc3NhZ2UuCgogICAgICAgIEhlYWRlclBhcnNlRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBtZXNzYWdlIGhhcyBubyBDb250ZW50LVR5cGUgaGVhZGVyLgogICAgICAgICIiIgogICAgICAgIG1pc3NpbmcgPSBvYmplY3QoKQogICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldF9wYXJhbXNfcHJlc2VydmUobWlzc2luZywgJ2NvbnRlbnQtdHlwZScpCiAgICAgICAgaWYgcGFyYW1zIGlzIG1pc3Npbmc6CiAgICAgICAgICAgICMgVGhlcmUgd2FzIG5vIENvbnRlbnQtVHlwZSBoZWFkZXIsIGFuZCB3ZSBkb24ndCBrbm93IHdoYXQgdHlwZQogICAgICAgICAgICAjIHRvIHNldCBpdCB0bywgc28gcmFpc2UgYW4gZXhjZXB0aW9uLgogICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcignTm8gQ29udGVudC1UeXBlIGhlYWRlciBmb3VuZCcpCiAgICAgICAgbmV3cGFyYW1zID0gW10KICAgICAgICBmb3VuZHAgPSBGYWxzZQogICAgICAgIGZvciBwaywgcHYgaW4gcGFyYW1zOgogICAgICAgICAgICBpZiBway5sb3dlcigpID09ICdib3VuZGFyeSc6CiAgICAgICAgICAgICAgICBuZXdwYXJhbXMuYXBwZW5kKCgnYm91bmRhcnknLCAnIiVzIicgJSBib3VuZGFyeSkpCiAgICAgICAgICAgICAgICBmb3VuZHAgPSBUcnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBuZXdwYXJhbXMuYXBwZW5kKChwaywgcHYpKQogICAgICAgIGlmIG5vdCBmb3VuZHA6CiAgICAgICAgICAgICMgVGhlIG9yaWdpbmFsIENvbnRlbnQtVHlwZSBoZWFkZXIgaGFkIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZS4KICAgICAgICAgICAgIyBUYWNrIG9uZSBvbiB0aGUgZW5kLiAgQkFXOiBzaG91bGQgd2UgcmFpc2UgYW4gZXhjZXB0aW9uCiAgICAgICAgICAgICMgaW5zdGVhZD8/PwogICAgICAgICAgICBuZXdwYXJhbXMuYXBwZW5kKCgnYm91bmRhcnknLCAnIiVzIicgJSBib3VuZGFyeSkpCiAgICAgICAgIyBSZXBsYWNlIHRoZSBleGlzdGluZyBDb250ZW50LVR5cGUgaGVhZGVyIHdpdGggdGhlIG5ldyB2YWx1ZQogICAgICAgIG5ld2hlYWRlcnMgPSBbXQogICAgICAgIGZvciBoLCB2IGluIHNlbGYuX2hlYWRlcnM6CiAgICAgICAgICAgIGlmIGgubG93ZXIoKSA9PSAnY29udGVudC10eXBlJzoKICAgICAgICAgICAgICAgIHBhcnRzID0gW10KICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIG5ld3BhcmFtczoKICAgICAgICAgICAgICAgICAgICBpZiB2ID09ICcnOgogICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoaykKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyVzPSVzJyAlIChrLCB2KSkKICAgICAgICAgICAgICAgIHZhbCA9IFNFTUlTUEFDRS5qb2luKHBhcnRzKQogICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKGgsIHZhbCkpCgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoKGgsIHYpKQogICAgICAgIHNlbGYuX2hlYWRlcnMgPSBuZXdoZWFkZXJzCgogICAgZGVmIGdldF9jb250ZW50X2NoYXJzZXQoc2VsZiwgZmFpbG9iaj1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGNoYXJzZXQgcGFyYW1ldGVyIG9mIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyLgoKICAgICAgICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGFsd2F5cyBjb2VyY2VkIHRvIGxvd2VyIGNhc2UuICBJZiB0aGVyZSBpcyBubwogICAgICAgIENvbnRlbnQtVHlwZSBoZWFkZXIsIG9yIGlmIHRoYXQgaGVhZGVyIGhhcyBubyBjaGFyc2V0IHBhcmFtZXRlciwKICAgICAgICBmYWlsb2JqIGlzIHJldHVybmVkLgogICAgICAgICIiIgogICAgICAgIG1pc3NpbmcgPSBvYmplY3QoKQogICAgICAgIGNoYXJzZXQgPSBzZWxmLmdldF9wYXJhbSgnY2hhcnNldCcsIG1pc3NpbmcpCiAgICAgICAgaWYgY2hhcnNldCBpcyBtaXNzaW5nOgogICAgICAgICAgICByZXR1cm4gZmFpbG9iagogICAgICAgIGlmIGlzaW5zdGFuY2UoY2hhcnNldCwgdHVwbGUpOgogICAgICAgICAgICAjIFJGQyAyMjMxIGVuY29kZWQsIHNvIGRlY29kZSBpdCwgYW5kIGl0IGJldHRlciBlbmQgdXAgYXMgYXNjaWkuCiAgICAgICAgICAgIHBjaGFyc2V0ID0gY2hhcnNldFswXSBvciAndXMtYXNjaWknCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICMgTG9va3VwRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgdGhlIGNoYXJzZXQgaXNuJ3Qga25vd24gdG8KICAgICAgICAgICAgICAgICMgUHl0aG9uLiAgVW5pY29kZUVycm9yIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBlbmNvZGVkIHRleHQKICAgICAgICAgICAgICAgICMgY29udGFpbnMgYSBjaGFyYWN0ZXIgbm90IGluIHRoZSBjaGFyc2V0LgogICAgICAgICAgICAgICAgYXNfYnl0ZXMgPSBjaGFyc2V0WzJdLmVuY29kZSgncmF3LXVuaWNvZGUtZXNjYXBlJykKICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBzdHIoYXNfYnl0ZXMsIHBjaGFyc2V0KQogICAgICAgICAgICBleGNlcHQgKExvb2t1cEVycm9yLCBVbmljb2RlRXJyb3IpOgogICAgICAgICAgICAgICAgY2hhcnNldCA9IGNoYXJzZXRbMl0KICAgICAgICAjIGNoYXJzZXQgY2hhcmFjdGVycyBtdXN0IGJlIGluIHVzLWFzY2lpIHJhbmdlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjaGFyc2V0LmVuY29kZSgndXMtYXNjaWknKQogICAgICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgICAgIHJldHVybiBmYWlsb2JqCiAgICAgICAgIyBSRkMgMjA0NiwgJDQuMS4yIHNheXMgY2hhcnNldHMgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZQogICAgICAgIHJldHVybiBjaGFyc2V0Lmxvd2VyKCkKCiAgICBkZWYgZ2V0X2NoYXJzZXRzKHNlbGYsIGZhaWxvYmo9Tm9uZSk6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBjaGFyc2V0KHMpIHVzZWQgaW4gdGhpcyBtZXNzYWdlLgoKICAgICAgICBUaGUgcmV0dXJuZWQgbGlzdCBvZiBpdGVtcyBkZXNjcmliZXMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJzJwogICAgICAgIGNoYXJzZXQgcGFyYW1ldGVyIGZvciB0aGlzIG1lc3NhZ2UgYW5kIGFsbCB0aGUgc3VicGFydHMgaW4gaXRzCiAgICAgICAgcGF5bG9hZC4KCiAgICAgICAgRWFjaCBpdGVtIHdpbGwgZWl0aGVyIGJlIGEgc3RyaW5nICh0aGUgdmFsdWUgb2YgdGhlIGNoYXJzZXQgcGFyYW1ldGVyCiAgICAgICAgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgb2YgdGhhdCBwYXJ0KSBvciB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICAgJ2ZhaWxvYmonIHBhcmFtZXRlciAoZGVmYXVsdHMgdG8gTm9uZSksIGlmIHRoZSBwYXJ0IGRvZXMgbm90IGhhdmUgYQogICAgICAgIG1haW4gTUlNRSB0eXBlIG9mICJ0ZXh0Iiwgb3IgdGhlIGNoYXJzZXQgaXMgbm90IGRlZmluZWQuCgogICAgICAgIFRoZSBsaXN0IHdpbGwgY29udGFpbiBvbmUgc3RyaW5nIGZvciBlYWNoIHBhcnQgb2YgdGhlIG1lc3NhZ2UsIHBsdXMKICAgICAgICBvbmUgZm9yIHRoZSBjb250YWluZXIgbWVzc2FnZSAoaS5lLiBzZWxmKSwgc28gdGhhdCBhIG5vbi1tdWx0aXBhcnQKICAgICAgICBtZXNzYWdlIHdpbGwgc3RpbGwgcmV0dXJuIGEgbGlzdCBvZiBsZW5ndGggMS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gW3BhcnQuZ2V0X2NvbnRlbnRfY2hhcnNldChmYWlsb2JqKSBmb3IgcGFydCBpbiBzZWxmLndhbGsoKV0KCiAgICBkZWYgZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudC1kaXNwb3NpdGlvbiBpZiBpdCBleGlzdHMsIG9yIE5vbmUuCgogICAgICAgIFRoZSByZXR1cm4gdmFsdWVzIGNhbiBiZSBlaXRoZXIgJ2lubGluZScsICdhdHRhY2htZW50JyBvciBOb25lCiAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSByZmMyMTgzLgogICAgICAgICIiIgogICAgICAgIHZhbHVlID0gc2VsZi5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQogICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgY19kID0gX3NwbGl0cGFyYW0odmFsdWUpWzBdLmxvd2VyKCkKICAgICAgICByZXR1cm4gY19kCgogICAgIyBJLmUuIGRlZiB3YWxrKHNlbGYpOiAuLi4KICAgIGZyb20gZW1haWwuaXRlcmF0b3JzIGltcG9ydCB3YWxrCgoKY2xhc3MgTUlNRVBhcnQoTWVzc2FnZSk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvbGljeT1Ob25lKToKICAgICAgICBpZiBwb2xpY3kgaXMgTm9uZToKICAgICAgICAgICAgZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKICAgICAgICAgICAgcG9saWN5ID0gZGVmYXVsdAogICAgICAgIHN1cGVyKCkuX19pbml0X18ocG9saWN5KQoKCiAgICBkZWYgYXNfc3RyaW5nKHNlbGYsIHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49Tm9uZSwgcG9saWN5PU5vbmUpOgogICAgICAgICIiIlJldHVybiB0aGUgZW50aXJlIGZvcm1hdHRlZCBtZXNzYWdlIGFzIGEgc3RyaW5nLgoKICAgICAgICBPcHRpb25hbCAndW5peGZyb20nLCB3aGVuIHRydWUsIG1lYW5zIGluY2x1ZGUgdGhlIFVuaXggRnJvbV8gZW52ZWxvcGUKICAgICAgICBoZWFkZXIuICBtYXhoZWFkZXJsZW4gaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKICAgICAgICBiYXNlIE1lc3NhZ2UgY2xhc3MsIGJ1dCBkZWZhdWx0cyB0byBOb25lLCBtZWFuaW5nIHRoYXQgdGhlIHBvbGljeSB2YWx1ZQogICAgICAgIGZvciBtYXhfbGluZV9sZW5ndGggY29udHJvbHMgdGhlIGhlYWRlciBtYXhpbXVtIGxlbmd0aC4gICdwb2xpY3knIGlzCiAgICAgICAgcGFzc2VkIHRvIHRoZSBHZW5lcmF0b3IgaW5zdGFuY2UgdXNlZCB0byBzZXJpYWxpemUgdGhlIG1lc3NhZ2U7IGlmIGl0CiAgICAgICAgaXMgbm90IHNwZWNpZmllZCB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSBpbnN0YW5jZSBpcwogICAgICAgIHVzZWQuCiAgICAgICAgIiIiCiAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kgaWYgcG9saWN5IGlzIE5vbmUgZWxzZSBwb2xpY3kKICAgICAgICBpZiBtYXhoZWFkZXJsZW4gaXMgTm9uZToKICAgICAgICAgICAgbWF4aGVhZGVybGVuID0gcG9saWN5Lm1heF9saW5lX2xlbmd0aAogICAgICAgIHJldHVybiBzdXBlcigpLmFzX3N0cmluZyh1bml4ZnJvbSwgbWF4aGVhZGVybGVuLCBwb2xpY3kpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuYXNfc3RyaW5nKHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpKQoKICAgIGRlZiBpc19hdHRhY2htZW50KHNlbGYpOgogICAgICAgIGNfZCA9IHNlbGYuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJykKICAgICAgICByZXR1cm4gRmFsc2UgaWYgY19kIGlzIE5vbmUgZWxzZSBjX2QuY29udGVudF9kaXNwb3NpdGlvbiA9PSAnYXR0YWNobWVudCcKCiAgICBkZWYgX2ZpbmRfYm9keShzZWxmLCBwYXJ0LCBwcmVmZXJlbmNlbGlzdCk6CiAgICAgICAgaWYgcGFydC5pc19hdHRhY2htZW50KCk6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIG1haW50eXBlLCBzdWJ0eXBlID0gcGFydC5nZXRfY29udGVudF90eXBlKCkuc3BsaXQoJy8nKQogICAgICAgIGlmIG1haW50eXBlID09ICd0ZXh0JzoKICAgICAgICAgICAgaWYgc3VidHlwZSBpbiBwcmVmZXJlbmNlbGlzdDoKICAgICAgICAgICAgICAgIHlpZWxkIChwcmVmZXJlbmNlbGlzdC5pbmRleChzdWJ0eXBlKSwgcGFydCkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbWFpbnR5cGUgIT0gJ211bHRpcGFydCcgb3Igbm90IHNlbGYuaXNfbXVsdGlwYXJ0KCk6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIHN1YnR5cGUgIT0gJ3JlbGF0ZWQnOgogICAgICAgICAgICBmb3Igc3VicGFydCBpbiBwYXJ0Lml0ZXJfcGFydHMoKToKICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5fZmluZF9ib2R5KHN1YnBhcnQsIHByZWZlcmVuY2VsaXN0KQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiAncmVsYXRlZCcgaW4gcHJlZmVyZW5jZWxpc3Q6CiAgICAgICAgICAgIHlpZWxkIChwcmVmZXJlbmNlbGlzdC5pbmRleCgncmVsYXRlZCcpLCBwYXJ0KQogICAgICAgIGNhbmRpZGF0ZSA9IE5vbmUKICAgICAgICBzdGFydCA9IHBhcnQuZ2V0X3BhcmFtKCdzdGFydCcpCiAgICAgICAgaWYgc3RhcnQ6CiAgICAgICAgICAgIGZvciBzdWJwYXJ0IGluIHBhcnQuaXRlcl9wYXJ0cygpOgogICAgICAgICAgICAgICAgaWYgc3VicGFydFsnY29udGVudC1pZCddID09IHN0YXJ0OgogICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHN1YnBhcnQKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGlmIGNhbmRpZGF0ZSBpcyBOb25lOgogICAgICAgICAgICBzdWJwYXJ0cyA9IHBhcnQuZ2V0X3BheWxvYWQoKQogICAgICAgICAgICBjYW5kaWRhdGUgPSBzdWJwYXJ0c1swXSBpZiBzdWJwYXJ0cyBlbHNlIE5vbmUKICAgICAgICBpZiBjYW5kaWRhdGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5fZmluZF9ib2R5KGNhbmRpZGF0ZSwgcHJlZmVyZW5jZWxpc3QpCgogICAgZGVmIGdldF9ib2R5KHNlbGYsIHByZWZlcmVuY2VsaXN0PSgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJykpOgogICAgICAgICIiIlJldHVybiBiZXN0IGNhbmRpZGF0ZSBtaW1lIHBhcnQgZm9yIGRpc3BsYXkgYXMgJ2JvZHknIG9mIG1lc3NhZ2UuCgogICAgICAgIERvIGEgZGVwdGggZmlyc3Qgc2VhcmNoLCBzdGFydGluZyB3aXRoIHNlbGYsIGxvb2tpbmcgZm9yIHRoZSBmaXJzdCBwYXJ0CiAgICAgICAgbWF0Y2hpbmcgZWFjaCBvZiB0aGUgaXRlbXMgaW4gcHJlZmVyZW5jZWxpc3QsIGFuZCByZXR1cm4gdGhlIHBhcnQKICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBpdGVtIHRoYXQgaGFzIGEgbWF0Y2gsIG9yIE5vbmUgaWYgbm8gaXRlbXMKICAgICAgICBoYXZlIGEgbWF0Y2guICBJZiAncmVsYXRlZCcgaXMgbm90IGluY2x1ZGVkIGluIHByZWZlcmVuY2VsaXN0LCBjb25zaWRlcgogICAgICAgIHRoZSByb290IHBhcnQgb2YgYW55IG11bHRpcGFydC9yZWxhdGVkIGVuY291bnRlcmVkIGFzIGEgY2FuZGlkYXRlCiAgICAgICAgbWF0Y2guICBJZ25vcmUgcGFydHMgd2l0aCAnQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudCcuCiAgICAgICAgIiIiCiAgICAgICAgYmVzdF9wcmlvID0gbGVuKHByZWZlcmVuY2VsaXN0KQogICAgICAgIGJvZHkgPSBOb25lCiAgICAgICAgZm9yIHByaW8sIHBhcnQgaW4gc2VsZi5fZmluZF9ib2R5KHNlbGYsIHByZWZlcmVuY2VsaXN0KToKICAgICAgICAgICAgaWYgcHJpbyA8IGJlc3RfcHJpbzoKICAgICAgICAgICAgICAgIGJlc3RfcHJpbyA9IHByaW8KICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJ0CiAgICAgICAgICAgICAgICBpZiBwcmlvID09IDA6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICByZXR1cm4gYm9keQoKICAgIF9ib2R5X3R5cGVzID0geygndGV4dCcsICdwbGFpbicpLAogICAgICAgICAgICAgICAgICAgKCd0ZXh0JywgJ2h0bWwnKSwKICAgICAgICAgICAgICAgICAgICgnbXVsdGlwYXJ0JywgJ3JlbGF0ZWQnKSwKICAgICAgICAgICAgICAgICAgICgnbXVsdGlwYXJ0JywgJ2FsdGVybmF0aXZlJyl9CiAgICBkZWYgaXRlcl9hdHRhY2htZW50cyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgbm9uLW1haW4gcGFydHMgb2YgYSBtdWx0aXBhcnQuCgogICAgICAgIFNraXAgdGhlIGZpcnN0IG9mIGVhY2ggb2NjdXJyZW5jZSBvZiB0ZXh0L3BsYWluLCB0ZXh0L2h0bWwsCiAgICAgICAgbXVsdGlwYXJ0L3JlbGF0ZWQsIG9yIG11bHRpcGFydC9hbHRlcm5hdGl2ZSBpbiB0aGUgbXVsdGlwYXJ0ICh1bmxlc3MKICAgICAgICB0aGV5IGhhdmUgYSAnQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudCcgaGVhZGVyKSBhbmQgaW5jbHVkZSBhbGwKICAgICAgICByZW1haW5pbmcgc3VicGFydHMgaW4gdGhlIHJldHVybmVkIGl0ZXJhdG9yLiAgV2hlbiBhcHBsaWVkIHRvIGEKICAgICAgICBtdWx0aXBhcnQvcmVsYXRlZCwgcmV0dXJuIGFsbCBwYXJ0cyBleGNlcHQgdGhlIHJvb3QgcGFydC4gIFJldHVybiBhbgogICAgICAgIGVtcHR5IGl0ZXJhdG9yIHdoZW4gYXBwbGllZCB0byBhIG11bHRpcGFydC9hbHRlcm5hdGl2ZSBvciBhCiAgICAgICAgbm9uLW11bHRpcGFydC4KICAgICAgICAiIiIKICAgICAgICBtYWludHlwZSwgc3VidHlwZSA9IHNlbGYuZ2V0X2NvbnRlbnRfdHlwZSgpLnNwbGl0KCcvJykKICAgICAgICBpZiBtYWludHlwZSAhPSAnbXVsdGlwYXJ0JyBvciBzdWJ0eXBlID09ICdhbHRlcm5hdGl2ZSc6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHBheWxvYWQgPSBzZWxmLmdldF9wYXlsb2FkKCkKICAgICAgICAjIENlcnRhaW4gbWFsZm9ybWVkIG1lc3NhZ2VzIGNhbiBoYXZlIGNvbnRlbnQgdHlwZSBzZXQgdG8gYG11bHRpcGFydC8qYAogICAgICAgICMgYnV0IHN0aWxsIGhhdmUgc2luZ2xlIHBhcnQgYm9keSwgaW4gd2hpY2ggY2FzZSBwYXlsb2FkLmNvcHkoKSBjYW4KICAgICAgICAjIGZhaWwgd2l0aCBBdHRyaWJ1dGVFcnJvci4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhcnRzID0gcGF5bG9hZC5jb3B5KCkKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICMgcGF5bG9hZCBpcyBub3QgYSBsaXN0LCBpdCBpcyBtb3N0IHByb2JhYmx5IGEgc3RyaW5nLgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaWYgbWFpbnR5cGUgPT0gJ211bHRpcGFydCcgYW5kIHN1YnR5cGUgPT0gJ3JlbGF0ZWQnOgogICAgICAgICAgICAjIEZvciByZWxhdGVkLCB3ZSB0cmVhdCBldmVyeXRoaW5nIGJ1dCB0aGUgcm9vdCBhcyBhbiBhdHRhY2htZW50LgogICAgICAgICAgICAjIFRoZSByb290IG1heSBiZSBpbmRpY2F0ZWQgYnkgJ3N0YXJ0JzsgaWYgdGhlcmUncyBubyBzdGFydCBvciB3ZQogICAgICAgICAgICAjIGNhbid0IGZpbmQgdGhlIG5hbWVkIHN0YXJ0LCB0cmVhdCB0aGUgZmlyc3Qgc3VicGFydCBhcyB0aGUgcm9vdC4KICAgICAgICAgICAgc3RhcnQgPSBzZWxmLmdldF9wYXJhbSgnc3RhcnQnKQogICAgICAgICAgICBpZiBzdGFydDoKICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzID0gW10KICAgICAgICAgICAgICAgIGZvciBwYXJ0IGluIHBhcnRzOgogICAgICAgICAgICAgICAgICAgIGlmIHBhcnQuZ2V0KCdjb250ZW50LWlkJykgPT0gc3RhcnQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChwYXJ0KQogICAgICAgICAgICAgICAgaWYgZm91bmQ6CiAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBwYXJ0cy5wb3AoMCkKICAgICAgICAgICAgeWllbGQgZnJvbSBwYXJ0cwogICAgICAgICAgICByZXR1cm4KICAgICAgICAjIE90aGVyd2lzZSB3ZSBtb3JlIG9yIGxlc3MgaW52ZXJ0IHRoZSByZW1haW5pbmcgbG9naWMgaW4gZ2V0X2JvZHkuCiAgICAgICAgIyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGluIGVkZ2UgY2FzZXMgKGV4OiBub24tdGV4dCByZWxhdGVkIG9yCiAgICAgICAgIyBhbHRlcm5hdGl2ZXMpIGlmIHRoZSBzZW5kaW5nIGFnZW50IHNldHMgY29udGVudC1kaXNwb3NpdGlvbi4KICAgICAgICBzZWVuID0gW10gICAjIE9ubHkgc2tpcCB0aGUgZmlyc3QgZXhhbXBsZSBvZiBlYWNoIGNhbmRpZGF0ZSB0eXBlLgogICAgICAgIGZvciBwYXJ0IGluIHBhcnRzOgogICAgICAgICAgICBtYWludHlwZSwgc3VidHlwZSA9IHBhcnQuZ2V0X2NvbnRlbnRfdHlwZSgpLnNwbGl0KCcvJykKICAgICAgICAgICAgaWYgKChtYWludHlwZSwgc3VidHlwZSkgaW4gc2VsZi5fYm9keV90eXBlcyBhbmQKICAgICAgICAgICAgICAgICAgICBub3QgcGFydC5pc19hdHRhY2htZW50KCkgYW5kIHN1YnR5cGUgbm90IGluIHNlZW4pOgogICAgICAgICAgICAgICAgc2Vlbi5hcHBlbmQoc3VidHlwZSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIHlpZWxkIHBhcnQKCiAgICBkZWYgaXRlcl9wYXJ0cyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgaW1tZWRpYXRlIHN1YnBhcnRzIG9mIGEgbXVsdGlwYXJ0LgoKICAgICAgICBSZXR1cm4gYW4gZW1wdHkgaXRlcmF0b3IgZm9yIGEgbm9uLW11bHRpcGFydC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmlzX211bHRpcGFydCgpOgogICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuZ2V0X3BheWxvYWQoKQoKICAgIGRlZiBnZXRfY29udGVudChzZWxmLCAqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpOgogICAgICAgIGlmIGNvbnRlbnRfbWFuYWdlciBpcyBOb25lOgogICAgICAgICAgICBjb250ZW50X21hbmFnZXIgPSBzZWxmLnBvbGljeS5jb250ZW50X21hbmFnZXIKICAgICAgICByZXR1cm4gY29udGVudF9tYW5hZ2VyLmdldF9jb250ZW50KHNlbGYsICphcmdzLCAqKmt3KQoKICAgIGRlZiBzZXRfY29udGVudChzZWxmLCAqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpOgogICAgICAgIGlmIGNvbnRlbnRfbWFuYWdlciBpcyBOb25lOgogICAgICAgICAgICBjb250ZW50X21hbmFnZXIgPSBzZWxmLnBvbGljeS5jb250ZW50X21hbmFnZXIKICAgICAgICBjb250ZW50X21hbmFnZXIuc2V0X2NvbnRlbnQoc2VsZiwgKmFyZ3MsICoqa3cpCgogICAgZGVmIF9tYWtlX211bHRpcGFydChzZWxmLCBzdWJ0eXBlLCBkaXNhbGxvd2VkX3N1YnR5cGVzLCBib3VuZGFyeSk6CiAgICAgICAgaWYgc2VsZi5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnOgogICAgICAgICAgICBleGlzdGluZ19zdWJ0eXBlID0gc2VsZi5nZXRfY29udGVudF9zdWJ0eXBlKCkKICAgICAgICAgICAgZGlzYWxsb3dlZF9zdWJ0eXBlcyA9IGRpc2FsbG93ZWRfc3VidHlwZXMgKyAoc3VidHlwZSwpCiAgICAgICAgICAgIGlmIGV4aXN0aW5nX3N1YnR5cGUgaW4gZGlzYWxsb3dlZF9zdWJ0eXBlczoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHt9IHRvIHt9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgZXhpc3Rpbmdfc3VidHlwZSwgc3VidHlwZSkpCiAgICAgICAga2VlcF9oZWFkZXJzID0gW10KICAgICAgICBwYXJ0X2hlYWRlcnMgPSBbXQogICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICBpZiBuYW1lLmxvd2VyKCkuc3RhcnRzd2l0aCgnY29udGVudC0nKToKICAgICAgICAgICAgICAgIHBhcnRfaGVhZGVycy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGtlZXBfaGVhZGVycy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKICAgICAgICBpZiBwYXJ0X2hlYWRlcnM6CiAgICAgICAgICAgICMgVGhlcmUgaXMgZXhpc3RpbmcgY29udGVudCwgbW92ZSBpdCB0byB0aGUgZmlyc3Qgc3VicGFydC4KICAgICAgICAgICAgcGFydCA9IHR5cGUoc2VsZikocG9saWN5PXNlbGYucG9saWN5KQogICAgICAgICAgICBwYXJ0Ll9oZWFkZXJzID0gcGFydF9oZWFkZXJzCiAgICAgICAgICAgIHBhcnQuX3BheWxvYWQgPSBzZWxmLl9wYXlsb2FkCiAgICAgICAgICAgIHNlbGYuX3BheWxvYWQgPSBbcGFydF0KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9wYXlsb2FkID0gW10KICAgICAgICBzZWxmLl9oZWFkZXJzID0ga2VlcF9oZWFkZXJzCiAgICAgICAgc2VsZlsnQ29udGVudC1UeXBlJ10gPSAnbXVsdGlwYXJ0LycgKyBzdWJ0eXBlCiAgICAgICAgaWYgYm91bmRhcnkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuc2V0X3BhcmFtKCdib3VuZGFyeScsIGJvdW5kYXJ5KQoKICAgIGRlZiBtYWtlX3JlbGF0ZWQoc2VsZiwgYm91bmRhcnk9Tm9uZSk6CiAgICAgICAgc2VsZi5fbWFrZV9tdWx0aXBhcnQoJ3JlbGF0ZWQnLCAoJ2FsdGVybmF0aXZlJywgJ21peGVkJyksIGJvdW5kYXJ5KQoKICAgIGRlZiBtYWtlX2FsdGVybmF0aXZlKHNlbGYsIGJvdW5kYXJ5PU5vbmUpOgogICAgICAgIHNlbGYuX21ha2VfbXVsdGlwYXJ0KCdhbHRlcm5hdGl2ZScsICgnbWl4ZWQnLCksIGJvdW5kYXJ5KQoKICAgIGRlZiBtYWtlX21peGVkKHNlbGYsIGJvdW5kYXJ5PU5vbmUpOgogICAgICAgIHNlbGYuX21ha2VfbXVsdGlwYXJ0KCdtaXhlZCcsICgpLCBib3VuZGFyeSkKCiAgICBkZWYgX2FkZF9tdWx0aXBhcnQoc2VsZiwgX3N1YnR5cGUsICphcmdzLCBfZGlzcD1Ob25lLCAqKmt3KToKICAgICAgICBpZiAoc2VsZi5nZXRfY29udGVudF9tYWludHlwZSgpICE9ICdtdWx0aXBhcnQnIG9yCiAgICAgICAgICAgICAgICBzZWxmLmdldF9jb250ZW50X3N1YnR5cGUoKSAhPSBfc3VidHlwZSk6CiAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgJ21ha2VfJyArIF9zdWJ0eXBlKSgpCiAgICAgICAgcGFydCA9IHR5cGUoc2VsZikocG9saWN5PXNlbGYucG9saWN5KQogICAgICAgIHBhcnQuc2V0X2NvbnRlbnQoKmFyZ3MsICoqa3cpCiAgICAgICAgaWYgX2Rpc3AgYW5kICdjb250ZW50LWRpc3Bvc2l0aW9uJyBub3QgaW4gcGFydDoKICAgICAgICAgICAgcGFydFsnQ29udGVudC1EaXNwb3NpdGlvbiddID0gX2Rpc3AKICAgICAgICBzZWxmLmF0dGFjaChwYXJ0KQoKICAgIGRlZiBhZGRfcmVsYXRlZChzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgc2VsZi5fYWRkX211bHRpcGFydCgncmVsYXRlZCcsICphcmdzLCBfZGlzcD0naW5saW5lJywgKiprdykKCiAgICBkZWYgYWRkX2FsdGVybmF0aXZlKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICBzZWxmLl9hZGRfbXVsdGlwYXJ0KCdhbHRlcm5hdGl2ZScsICphcmdzLCAqKmt3KQoKICAgIGRlZiBhZGRfYXR0YWNobWVudChzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgc2VsZi5fYWRkX211bHRpcGFydCgnbWl4ZWQnLCAqYXJncywgX2Rpc3A9J2F0dGFjaG1lbnQnLCAqKmt3KQoKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICBzZWxmLl9oZWFkZXJzID0gW10KICAgICAgICBzZWxmLl9wYXlsb2FkID0gTm9uZQoKICAgIGRlZiBjbGVhcl9jb250ZW50KHNlbGYpOgogICAgICAgIHNlbGYuX2hlYWRlcnMgPSBbKG4sIHYpIGZvciBuLCB2IGluIHNlbGYuX2hlYWRlcnMKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuLmxvd2VyKCkuc3RhcnRzd2l0aCgnY29udGVudC0nKV0KICAgICAgICBzZWxmLl9wYXlsb2FkID0gTm9uZQoKCmNsYXNzIEVtYWlsTWVzc2FnZShNSU1FUGFydCk6CgogICAgZGVmIHNldF9jb250ZW50KHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICBzdXBlcigpLnNldF9jb250ZW50KCphcmdzLCAqKmt3KQogICAgICAgIGlmICdNSU1FLVZlcnNpb24nIG5vdCBpbiBzZWxmOgogICAgICAgICAgICBzZWxmWydNSU1FLVZlcnNpb24nXSA9ICcxLjAnClBLAwQUAAAAAAACIKNWq8keobETAACxEwAADwAAAGVtYWlsL3BhcnNlci5weSMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDcgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBBdXRob3I6IEJhcnJ5IFdhcnNhdywgVGhvbWFzIFdvdXRlcnMsIEFudGhvbnkgQmF4dGVyCiMgQ29udGFjdDogZW1haWwtc2lnQHB5dGhvbi5vcmcKCiIiIkEgcGFyc2VyIG9mIFJGQyAyODIyIGFuZCBNSU1FIGVtYWlsIG1lc3NhZ2VzLiIiIgoKX19hbGxfXyA9IFsnUGFyc2VyJywgJ0hlYWRlclBhcnNlcicsICdCeXRlc1BhcnNlcicsICdCeXRlc0hlYWRlclBhcnNlcicsCiAgICAgICAgICAgJ0ZlZWRQYXJzZXInLCAnQnl0ZXNGZWVkUGFyc2VyJ10KCmZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBUZXh0SU9XcmFwcGVyCgpmcm9tIGVtYWlsLmZlZWRwYXJzZXIgaW1wb3J0IEZlZWRQYXJzZXIsIEJ5dGVzRmVlZFBhcnNlcgpmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgoKCmNsYXNzIFBhcnNlcjoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PWNvbXBhdDMyKToKICAgICAgICAiIiJQYXJzZXIgb2YgUkZDIDI4MjIgYW5kIE1JTUUgZW1haWwgbWVzc2FnZXMuCgogICAgICAgIENyZWF0ZXMgYW4gaW4tbWVtb3J5IG9iamVjdCB0cmVlIHJlcHJlc2VudGluZyB0aGUgZW1haWwgbWVzc2FnZSwgd2hpY2gKICAgICAgICBjYW4gdGhlbiBiZSBtYW5pcHVsYXRlZCBhbmQgdHVybmVkIG92ZXIgdG8gYSBHZW5lcmF0b3IgdG8gcmV0dXJuIHRoZQogICAgICAgIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuCgogICAgICAgIFRoZSBzdHJpbmcgbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiBSRkMgMjgyMiBoZWFkZXJzIGFuZCBoZWFkZXIKICAgICAgICBjb250aW51YXRpb24gbGluZXMsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYSBgVW5peC1mcm9tJyBoZWFkZXIuICBUaGUKICAgICAgICBoZWFkZXIgYmxvY2sgaXMgdGVybWluYXRlZCBlaXRoZXIgYnkgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGJ5IGEKICAgICAgICBibGFuayBsaW5lLgoKICAgICAgICBfY2xhc3MgaXMgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlIGZvciBuZXcgbWVzc2FnZSBvYmplY3RzIHdoZW4gdGhleQogICAgICAgIG11c3QgYmUgY3JlYXRlZC4gIFRoaXMgY2xhc3MgbXVzdCBoYXZlIGEgY29uc3RydWN0b3IgdGhhdCBjYW4gdGFrZQogICAgICAgIHplcm8gYXJndW1lbnRzLiAgRGVmYXVsdCBpcyBNZXNzYWdlLk1lc3NhZ2UuCgogICAgICAgIFRoZSBwb2xpY3kga2V5d29yZCBzcGVjaWZpZXMgYSBwb2xpY3kgb2JqZWN0IHRoYXQgY29udHJvbHMgYSBudW1iZXIgb2YKICAgICAgICBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCiAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2xhc3MgPSBfY2xhc3MKICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQoKICAgIGRlZiBwYXJzZShzZWxmLCBmcCwgaGVhZGVyc29ubHk9RmFsc2UpOgogICAgICAgICIiIkNyZWF0ZSBhIG1lc3NhZ2Ugc3RydWN0dXJlIGZyb20gdGhlIGRhdGEgaW4gYSBmaWxlLgoKICAgICAgICBSZWFkcyBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgZmlsZSBhbmQgcmV0dXJucyB0aGUgcm9vdCBvZiB0aGUgbWVzc2FnZQogICAgICAgIHN0cnVjdHVyZS4gIE9wdGlvbmFsIGhlYWRlcnNvbmx5IGlzIGEgZmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgdG8gc3RvcAogICAgICAgIHBhcnNpbmcgYWZ0ZXIgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBGYWxzZSwKICAgICAgICBtZWFuaW5nIGl0IHBhcnNlcyB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgogICAgICAgICIiIgogICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKHNlbGYuX2NsYXNzLCBwb2xpY3k9c2VsZi5wb2xpY3kpCiAgICAgICAgaWYgaGVhZGVyc29ubHk6CiAgICAgICAgICAgIGZlZWRwYXJzZXIuX3NldF9oZWFkZXJzb25seSgpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoODE5MikKICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBmZWVkcGFyc2VyLmZlZWQoZGF0YSkKICAgICAgICByZXR1cm4gZmVlZHBhcnNlci5jbG9zZSgpCgogICAgZGVmIHBhcnNlc3RyKHNlbGYsIHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKToKICAgICAgICAiIiJDcmVhdGUgYSBtZXNzYWdlIHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLgoKICAgICAgICBSZXR1cm5zIHRoZSByb290IG9mIHRoZSBtZXNzYWdlIHN0cnVjdHVyZS4gIE9wdGlvbmFsIGhlYWRlcnNvbmx5IGlzIGEKICAgICAgICBmbGFnIHNwZWNpZnlpbmcgd2hldGhlciB0byBzdG9wIHBhcnNpbmcgYWZ0ZXIgcmVhZGluZyB0aGUgaGVhZGVycyBvcgogICAgICAgIG5vdC4gIFRoZSBkZWZhdWx0IGlzIEZhbHNlLCBtZWFuaW5nIGl0IHBhcnNlcyB0aGUgZW50aXJlIGNvbnRlbnRzIG9mCiAgICAgICAgdGhlIGZpbGUuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYucGFyc2UoU3RyaW5nSU8odGV4dCksIGhlYWRlcnNvbmx5PWhlYWRlcnNvbmx5KQoKCgwKY2xhc3MgSGVhZGVyUGFyc2VyKFBhcnNlcik6CiAgICBkZWYgcGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PVRydWUpOgogICAgICAgIHJldHVybiBQYXJzZXIucGFyc2Uoc2VsZiwgZnAsIFRydWUpCgogICAgZGVmIHBhcnNlc3RyKHNlbGYsIHRleHQsIGhlYWRlcnNvbmx5PVRydWUpOgogICAgICAgIHJldHVybiBQYXJzZXIucGFyc2VzdHIoc2VsZiwgdGV4dCwgVHJ1ZSkKCgwKY2xhc3MgQnl0ZXNQYXJzZXI6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICAiIiJQYXJzZXIgb2YgYmluYXJ5IFJGQyAyODIyIGFuZCBNSU1FIGVtYWlsIG1lc3NhZ2VzLgoKICAgICAgICBDcmVhdGVzIGFuIGluLW1lbW9yeSBvYmplY3QgdHJlZSByZXByZXNlbnRpbmcgdGhlIGVtYWlsIG1lc3NhZ2UsIHdoaWNoCiAgICAgICAgY2FuIHRoZW4gYmUgbWFuaXB1bGF0ZWQgYW5kIHR1cm5lZCBvdmVyIHRvIGEgR2VuZXJhdG9yIHRvIHJldHVybiB0aGUKICAgICAgICB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlLgoKICAgICAgICBUaGUgaW5wdXQgbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiBSRkMgMjgyMiBoZWFkZXJzIGFuZCBoZWFkZXIKICAgICAgICBjb250aW51YXRpb24gbGluZXMsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYSBgVW5peC1mcm9tJyBoZWFkZXIuICBUaGUKICAgICAgICBoZWFkZXIgYmxvY2sgaXMgdGVybWluYXRlZCBlaXRoZXIgYnkgdGhlIGVuZCBvZiB0aGUgaW5wdXQgb3IgYnkgYQogICAgICAgIGJsYW5rIGxpbmUuCgogICAgICAgIF9jbGFzcyBpcyB0aGUgY2xhc3MgdG8gaW5zdGFudGlhdGUgZm9yIG5ldyBtZXNzYWdlIG9iamVjdHMgd2hlbiB0aGV5CiAgICAgICAgbXVzdCBiZSBjcmVhdGVkLiAgVGhpcyBjbGFzcyBtdXN0IGhhdmUgYSBjb25zdHJ1Y3RvciB0aGF0IGNhbiB0YWtlCiAgICAgICAgemVybyBhcmd1bWVudHMuICBEZWZhdWx0IGlzIE1lc3NhZ2UuTWVzc2FnZS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnBhcnNlciA9IFBhcnNlcigqYXJncywgKiprdykKCiAgICBkZWYgcGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PUZhbHNlKToKICAgICAgICAiIiJDcmVhdGUgYSBtZXNzYWdlIHN0cnVjdHVyZSBmcm9tIHRoZSBkYXRhIGluIGEgYmluYXJ5IGZpbGUuCgogICAgICAgIFJlYWRzIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBmaWxlIGFuZCByZXR1cm5zIHRoZSByb290IG9mIHRoZSBtZXNzYWdlCiAgICAgICAgc3RydWN0dXJlLiAgT3B0aW9uYWwgaGVhZGVyc29ubHkgaXMgYSBmbGFnIHNwZWNpZnlpbmcgd2hldGhlciB0byBzdG9wCiAgICAgICAgcGFyc2luZyBhZnRlciByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIEZhbHNlLAogICAgICAgIG1lYW5pbmcgaXQgcGFyc2VzIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCiAgICAgICAgIiIiCiAgICAgICAgZnAgPSBUZXh0SU9XcmFwcGVyKGZwLCBlbmNvZGluZz0nYXNjaWknLCBlcnJvcnM9J3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5wYXJzZXIucGFyc2UoZnAsIGhlYWRlcnNvbmx5KQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGZwLmRldGFjaCgpCgoKICAgIGRlZiBwYXJzZWJ5dGVzKHNlbGYsIHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKToKICAgICAgICAiIiJDcmVhdGUgYSBtZXNzYWdlIHN0cnVjdHVyZSBmcm9tIGEgYnl0ZSBzdHJpbmcuCgogICAgICAgIFJldHVybnMgdGhlIHJvb3Qgb2YgdGhlIG1lc3NhZ2Ugc3RydWN0dXJlLiAgT3B0aW9uYWwgaGVhZGVyc29ubHkgaXMgYQogICAgICAgIGZsYWcgc3BlY2lmeWluZyB3aGV0aGVyIHRvIHN0b3AgcGFyc2luZyBhZnRlciByZWFkaW5nIHRoZSBoZWFkZXJzIG9yCiAgICAgICAgbm90LiAgVGhlIGRlZmF1bHQgaXMgRmFsc2UsIG1lYW5pbmcgaXQgcGFyc2VzIHRoZSBlbnRpcmUgY29udGVudHMgb2YKICAgICAgICB0aGUgZmlsZS4KICAgICAgICAiIiIKICAgICAgICB0ZXh0ID0gdGV4dC5kZWNvZGUoJ0FTQ0lJJywgZXJyb3JzPSdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgIHJldHVybiBzZWxmLnBhcnNlci5wYXJzZXN0cih0ZXh0LCBoZWFkZXJzb25seSkKCgpjbGFzcyBCeXRlc0hlYWRlclBhcnNlcihCeXRlc1BhcnNlcik6CiAgICBkZWYgcGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PVRydWUpOgogICAgICAgIHJldHVybiBCeXRlc1BhcnNlci5wYXJzZShzZWxmLCBmcCwgaGVhZGVyc29ubHk9VHJ1ZSkKCiAgICBkZWYgcGFyc2VieXRlcyhzZWxmLCB0ZXh0LCBoZWFkZXJzb25seT1UcnVlKToKICAgICAgICByZXR1cm4gQnl0ZXNQYXJzZXIucGFyc2VieXRlcyhzZWxmLCB0ZXh0LCBoZWFkZXJzb25seT1UcnVlKQpQSwMEFAAAAAAAAiCjVngh8XCPKAAAjygAAA8AAABlbWFpbC9wb2xpY3kucHkiIiJUaGlzIHdpbGwgYmUgdGhlIGhvbWUgZm9yIHRoZSBwb2xpY3kgdGhhdCBob29rcyBpbiB0aGUgbmV3CmNvZGUgdGhhdCBhZGRzIGFsbCB0aGUgZW1haWw2IGZlYXR1cmVzLgoiIiIKCmltcG9ydCByZQppbXBvcnQgc3lzCmZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IFBvbGljeSwgQ29tcGF0MzIsIGNvbXBhdDMyLCBfZXh0ZW5kX2RvY3N0cmluZ3MKZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCmZyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEhlYWRlclJlZ2lzdHJ5IGFzIEhlYWRlclJlZ2lzdHJ5CmZyb20gZW1haWwuY29udGVudG1hbmFnZXIgaW1wb3J0IHJhd19kYXRhX21hbmFnZXIKZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKCl9fYWxsX18gPSBbCiAgICAnQ29tcGF0MzInLAogICAgJ2NvbXBhdDMyJywKICAgICdQb2xpY3knLAogICAgJ0VtYWlsUG9saWN5JywKICAgICdkZWZhdWx0JywKICAgICdzdHJpY3QnLAogICAgJ1NNVFAnLAogICAgJ0hUVFAnLAogICAgXQoKbGluZXNlcF9zcGxpdHRlciA9IHJlLmNvbXBpbGUocidcbnxccicpCgpAX2V4dGVuZF9kb2NzdHJpbmdzCmNsYXNzIEVtYWlsUG9saWN5KFBvbGljeSk6CgogICAgIiIiKwogICAgUFJPVklTSU9OQUwKCiAgICBUaGUgQVBJIGV4dGVuc2lvbnMgZW5hYmxlZCBieSB0aGlzIHBvbGljeSBhcmUgY3VycmVudGx5IHByb3Zpc2lvbmFsLgogICAgUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCgogICAgVGhpcyBwb2xpY3kgYWRkcyBuZXcgaGVhZGVyIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtcy4gIEluc3RlYWQgb2YKICAgIHNpbXBsZSBzdHJpbmdzLCBoZWFkZXJzIGFyZSBjdXN0b20gb2JqZWN0cyB3aXRoIGN1c3RvbSBhdHRyaWJ1dGVzCiAgICBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5CiAgICBpbXBsZW1lbnRzIFJGQ3MgMjA0NyBhbmQgNTMyMi4KCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0bwogICAgYWxsIFBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgoKICAgIHV0ZjggICAgICAgICAgICAgICAgLS0gaWYgRmFsc2UgKHRoZSBkZWZhdWx0KSBtZXNzYWdlIGhlYWRlcnMgd2lsbCBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkIGFzIEFTQ0lJLCB1c2luZyBlbmNvZGVkIHdvcmRzIHRvIGVuY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHNvdXJjZSBzdHJpbmdzLiAgSWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwgdGhlIG1lc3NhZ2UgaGVhZGVycyB3aWxsIGJlIHNlcmlhbGl6ZWQgdXNpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmOCBhbmQgd2lsbCBub3QgY29udGFpbiBlbmNvZGVkIHdvcmRzIChzZWUgUkZDCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1MzIgZm9yIG1vcmUgb24gdGhpcyBzZXJpYWxpemF0aW9uIGZvcm1hdCkuCgogICAgcmVmb2xkX3NvdXJjZSAgICAgICAtLSBpZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBNZXNzYWdlIG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lIGZyb20gdGhlIHBhcnNpbmcgb2Ygc29tZSBzb3VyY2UsIHRoaXMgYXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGdlbmVyYXRvciBzaG91bGQgcmVmb2xkCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdmFsdWUgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSBmb3JtLiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6CgogICAgICAgICAgICAgICAgICAgICAgICAgICBub25lICAtLSBhbGwgc291cmNlIHZhbHVlcyB1c2Ugb3JpZ2luYWwgZm9sZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICAtLSBzb3VyY2UgdmFsdWVzIHRoYXQgaGF2ZSBhbnkgbGluZSB0aGF0IGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdlciB0aGFuIG1heF9saW5lX2xlbmd0aCB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZm9sZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCAgLS0gYWxsIHZhbHVlcyBhcmUgcmVmb2xkZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyAnbG9uZycuCgogICAgaGVhZGVyX2ZhY3RvcnkgICAgICAtLSBhIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgJ25hbWUnIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnLCB3aGVyZSAnbmFtZScgaXMgYSBoZWFkZXIgZmllbGQgbmFtZSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJyBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQgdmFsdWUsIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgc3RyaW5nLWxpa2Ugb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci4gIEEgZGVmYXVsdCBoZWFkZXJfZmFjdG9yeSBpcyBwcm92aWRlZCB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIFJGQzUzMjIgaGVhZGVyIGZpZWxkIHR5cGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAoQ3VycmVudGx5IGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgdHJlYXRtZW50LCB3aGlsZSBhbGwgb3RoZXIgZmllbGRzIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVhdGVkIGFzIHVuc3RydWN0dXJlZC4gIFRoaXMgbGlzdCB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGV4dGVuc2lvbiBpcyBtYXJrZWQgc3RhYmxlLikKCiAgICBjb250ZW50X21hbmFnZXIgICAgIC0tIGFuIG9iamVjdCB3aXRoIGF0IGxlYXN0IHR3byBtZXRob2RzOiBnZXRfY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2V0X2NvbnRlbnQuICBXaGVuIHRoZSBnZXRfY29udGVudCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfY29udGVudCBtZXRob2Qgb2YgYSBNZXNzYWdlIG9iamVjdCBpcyBjYWxsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IGNhbGxzIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBvZiB0aGlzIG9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2luZyBpdCB0aGUgbWVzc2FnZSBvYmplY3QgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW55IGFyZ3VtZW50cyBvciBrZXl3b3JkcyB0aGF0IHdlcmUgcGFzc2VkIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgVGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF9tYW5hZ2VyIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkYXRhOmB+ZW1haWwuY29udGVudG1hbmFnZXIucmF3X2RhdGFfbWFuYWdlcmAuCgogICAgIiIiCgogICAgbWVzc2FnZV9mYWN0b3J5ID0gRW1haWxNZXNzYWdlCiAgICB1dGY4ID0gRmFsc2UKICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKICAgIGhlYWRlcl9mYWN0b3J5ID0gSGVhZGVyUmVnaXN0cnkoKQogICAgY29udGVudF9tYW5hZ2VyID0gcmF3X2RhdGFfbWFuYWdlcgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3KToKICAgICAgICAjIEVuc3VyZSB0aGF0IGVhY2ggbmV3IGluc3RhbmNlIGdldHMgYSB1bmlxdWUgaGVhZGVyIGZhY3RvcnkKICAgICAgICAjIChhcyBvcHBvc2VkIHRvIGNsb25lcywgd2hpY2ggc2hhcmUgdGhlIGZhY3RvcnkpLgogICAgICAgIGlmICdoZWFkZXJfZmFjdG9yeScgbm90IGluIGt3OgogICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgJ2hlYWRlcl9mYWN0b3J5JywgSGVhZGVyUmVnaXN0cnkoKSkKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3cpCgogICAgZGVmIGhlYWRlcl9tYXhfY291bnQoc2VsZiwgbmFtZSk6CiAgICAgICAgIiIiKwogICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyByZXR1cm5zIHRoZSBtYXhfY291bnQgYXR0cmlidXRlIGZyb20KICAgICAgICB0aGUgc3BlY2lhbGl6ZWQgaGVhZGVyIGNsYXNzIHRoYXQgd291bGQgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBoZWFkZXIKICAgICAgICBvZiB0eXBlICduYW1lJy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJfZmFjdG9yeVtuYW1lXS5tYXhfY291bnQKCiAgICAjIFRoZSBsb2dpYyBvZiB0aGUgbmV4dCB0aHJlZSBtZXRob2RzIGlzIGNob3NlbiBzdWNoIHRoYXQgaXQgaXMgcG9zc2libGUgdG8KICAgICMgc3dpdGNoIGEgTWVzc2FnZSBvYmplY3QgYmV0d2VlbiBhIENvbXBhdDMyIHBvbGljeSBhbmQgYSBwb2xpY3kgZGVyaXZlZAogICAgIyBmcm9tIHRoaXMgY2xhc3MgYW5kIGhhdmUgdGhlIHJlc3VsdHMgc3RheSBjb25zaXN0ZW50LiAgVGhpcyBhbGxvd3MgYQogICAgIyBNZXNzYWdlIG9iamVjdCBjb25zdHJ1Y3RlZCB3aXRoIHRoaXMgcG9saWN5IHRvIGJlIHBhc3NlZCB0byBhIGxpYnJhcnkKICAgICMgdGhhdCBvbmx5IGhhbmRsZXMgQ29tcGF0MzIgb2JqZWN0cywgb3IgdG8gcmVjZWl2ZSBzdWNoIGFuIG9iamVjdCBhbmQKICAgICMgY29udmVydCBpdCB0byB1c2UgdGhlIG5ld2VyIHN0eWxlIGJ5IGp1c3QgY2hhbmdpbmcgaXRzIHBvbGljeS4gIEl0IGlzCiAgICAjIGFsc28gY2hvc2VuIGJlY2F1c2UgaXQgcG9zdHBvbmVzIHRoZSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBmdWxsIHJmYzUzMjIKICAgICMgcGFyc2UgdW50aWwgYXMgbGF0ZSBhcyBwb3NzaWJsZSB3aGVuIHBhcnNpbmcgZnJvbSBzb3VyY2UsIHNpbmNlIGluIG1hbnkKICAgICMgYXBwbGljYXRpb25zIG9ubHkgYSBmZXcgaGVhZGVycyB3aWxsIGFjdHVhbGx5IGJlIGluc3BlY3RlZC4KCiAgICBkZWYgaGVhZGVyX3NvdXJjZV9wYXJzZShzZWxmLCBzb3VyY2VsaW5lcyk6CiAgICAgICAgIiIiKwogICAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnOicgYW5kIHJldHVybmVkIHVubW9kaWZpZWQuCiAgICAgICAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYgdGhlCiAgICAgICAgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLCBhbmQKICAgICAgICBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLiAgKFRoaXMKICAgICAgICBpcyB0aGUgc2FtZSBhcyBDb21wYXQzMikuCgogICAgICAgICIiIgogICAgICAgIG5hbWUsIHZhbHVlID0gc291cmNlbGluZXNbMF0uc3BsaXQoJzonLCAxKQogICAgICAgIHZhbHVlID0gdmFsdWUubHN0cmlwKCcgXHQnKSArICcnLmpvaW4oc291cmNlbGluZXNbMTpdKQogICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUucnN0cmlwKCdcclxuJykpCgogICAgZGVmIGhlYWRlcl9zdG9yZV9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgIiIiKwogICAgICAgIFRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4gIElmIHRoZSBpbnB1dCB2YWx1ZSBoYXMgYSAnbmFtZScKICAgICAgICBhdHRyaWJ1dGUgYW5kIGl0IG1hdGNoZXMgdGhlIG5hbWUgaWdub3JpbmcgY2FzZSwgdGhlIHZhbHVlIGlzIHJldHVybmVkCiAgICAgICAgdW5jaGFuZ2VkLiAgT3RoZXJ3aXNlIHRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcGFzc2VkIHRvIGhlYWRlcl9mYWN0b3J5CiAgICAgICAgbWV0aG9kLCBhbmQgdGhlIHJlc3VsdGluZyBjdXN0b20gaGVhZGVyIG9iamVjdCBpcyByZXR1cm5lZCBhcyB0aGUKICAgICAgICB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBpbnB1dCB2YWx1ZSBjb250YWlucwogICAgICAgIENSIG9yIExGIGNoYXJhY3RlcnMuCgogICAgICAgICIiIgogICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJykgYW5kIHZhbHVlLm5hbWUubG93ZXIoKSA9PSBuYW1lLmxvd2VyKCk6CiAgICAgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUpCiAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKSBhbmQgbGVuKHZhbHVlLnNwbGl0bGluZXMoKSk+MToKICAgICAgICAgICAgIyBYWFggdGhpcyBlcnJvciBtZXNzYWdlIGlzbid0IHF1aXRlIHJpZ2h0IHdoZW4gd2UgdXNlIHNwbGl0bGluZXMKICAgICAgICAgICAgIyAoc2VlIGlzc3VlIDIyMjMzKSwgYnV0IEknbSBub3Qgc3VyZSB3aGF0IHNob3VsZCBoYXBwZW4gaGVyZS4KICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSGVhZGVyIHZhbHVlcyBtYXkgbm90IGNvbnRhaW4gbGluZWZlZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvciBjYXJyaWFnZSByZXR1cm4gY2hhcmFjdGVycyIpCiAgICAgICAgcmV0dXJuIChuYW1lLCBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKSkKCiAgICBkZWYgaGVhZGVyX2ZldGNoX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAiIiIrCiAgICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhICduYW1lJyBhdHRyaWJ1dGUsIGl0IGlzIHJldHVybmVkIHRvIHVubW9kaWZpZWQuCiAgICAgICAgT3RoZXJ3aXNlIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgd2l0aCBhbnkgbGluZXNlcCBjaGFyYWN0ZXJzIHJlbW92ZWQKICAgICAgICBhcmUgcGFzc2VkIHRvIHRoZSBoZWFkZXJfZmFjdG9yeSBtZXRob2QsIGFuZCB0aGUgcmVzdWx0aW5nIGN1c3RvbQogICAgICAgIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuICBBbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBnZXQgdHVybmVkCiAgICAgICAgaW50byB0aGUgdW5pY29kZSB1bmtub3duLWNoYXJhY3RlciBnbHlwaC4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgaGFzYXR0cih2YWx1ZSwgJ25hbWUnKToKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgIyBXZSBjYW4ndCB1c2Ugc3BsaXRsaW5lcyBoZXJlIGJlY2F1c2UgaXQgc3BsaXRzIG9uIG1vcmUgdGhhbiBcciBhbmQgXG4uCiAgICAgICAgdmFsdWUgPSAnJy5qb2luKGxpbmVzZXBfc3BsaXR0ZXIuc3BsaXQodmFsdWUpKQogICAgICAgIHJldHVybiBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKQoKICAgIGRlZiBmb2xkKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAiIiIrCiAgICAgICAgSGVhZGVyIGZvbGRpbmcgaXMgY29udHJvbGxlZCBieSB0aGUgcmVmb2xkX3NvdXJjZSBwb2xpY3kgc2V0dGluZy4gIEEKICAgICAgICB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIGEgJ3NvdXJjZSB2YWx1ZScgaWYgYW5kIG9ubHkgaWYgaXQgZG9lcyBub3QKICAgICAgICBoYXZlIGEgJ25hbWUnIGF0dHJpYnV0ZSAoaGF2aW5nIGEgJ25hbWUnIGF0dHJpYnV0ZSBtZWFucyBpdCBpcyBhIGhlYWRlcgogICAgICAgIG9iamVjdCBvZiBzb21lIHNvcnQpLiAgSWYgYSBzb3VyY2UgdmFsdWUgbmVlZHMgdG8gYmUgcmVmb2xkZWQgYWNjb3JkaW5nCiAgICAgICAgdG8gdGhlIHBvbGljeSwgaXQgaXMgY29udmVydGVkIGludG8gYSBjdXN0b20gaGVhZGVyIG9iamVjdCBieSBwYXNzaW5nCiAgICAgICAgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSB3aXRoIGFueSBsaW5lc2VwIGNoYXJhY3RlcnMgcmVtb3ZlZCB0byB0aGUKICAgICAgICBoZWFkZXJfZmFjdG9yeSBtZXRob2QuICBGb2xkaW5nIG9mIGEgY3VzdG9tIGhlYWRlciBvYmplY3QgaXMgZG9uZSBieQogICAgICAgIGNhbGxpbmcgaXRzIGZvbGQgbWV0aG9kIHdpdGggdGhlIGN1cnJlbnQgcG9saWN5LgoKICAgICAgICBTb3VyY2UgdmFsdWVzIGFyZSBzcGxpdCBpbnRvIGxpbmVzIHVzaW5nIHNwbGl0bGluZXMuICBJZiB0aGUgdmFsdWUgaXMKICAgICAgICBub3QgdG8gYmUgcmVmb2xkZWQsIHRoZSBsaW5lcyBhcmUgcmVqb2luZWQgdXNpbmcgdGhlIGxpbmVzZXAgZnJvbSB0aGUKICAgICAgICBwb2xpY3kgYW5kIHJldHVybmVkLiAgVGhlIGV4Y2VwdGlvbiBpcyBsaW5lcyBjb250YWluaW5nIG5vbi1hc2NpaQogICAgICAgIGJpbmFyeSBkYXRhLiAgSW4gdGhhdCBjYXNlIHRoZSB2YWx1ZSBpcyByZWZvbGRlZCByZWdhcmRsZXNzIG9mIHRoZQogICAgICAgIHJlZm9sZF9zb3VyY2Ugc2V0dGluZywgd2hpY2ggY2F1c2VzIHRoZSBiaW5hcnkgZGF0YSB0byBiZSBDVEUgZW5jb2RlZAogICAgICAgIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9VHJ1ZSkKCiAgICBkZWYgZm9sZF9iaW5hcnkoc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICIiIisKICAgICAgICBUaGUgc2FtZSBhcyBmb2xkIGlmIGN0ZV90eXBlIGlzIDdiaXQsIGV4Y2VwdCB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZSBpcwogICAgICAgIGJ5dGVzLgoKICAgICAgICBJZiBjdGVfdHlwZSBpcyA4Yml0LCBub24tQVNDSUkgYmluYXJ5IGRhdGEgaXMgY29udmVydGVkIGJhY2sgaW50bwogICAgICAgIGJ5dGVzLiAgSGVhZGVycyB3aXRoIGJpbmFyeSBkYXRhIGFyZSBub3QgcmVmb2xkZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlCiAgICAgICAgcmVmb2xkX2hlYWRlciBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZSBiaW5hcnkKICAgICAgICBkYXRhIGNvbnNpc3RzIG9mIHNpbmdsZSBieXRlIGNoYXJhY3RlcnMgb3IgbXVsdGlieXRlIGNoYXJhY3RlcnMuCgogICAgICAgIElmIHV0ZjggaXMgdHJ1ZSwgaGVhZGVycyBhcmUgZW5jb2RlZCB0byB1dGY4LCBvdGhlcndpc2UgdG8gYXNjaWkgd2l0aAogICAgICAgIG5vbi1BU0NJSSB1bmljb2RlIHJlbmRlcmVkIGFzIGVuY29kZWQgd29yZHMuCgogICAgICAgICIiIgogICAgICAgIGZvbGRlZCA9IHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9c2VsZi5jdGVfdHlwZT09JzdiaXQnKQogICAgICAgIGNoYXJzZXQgPSAndXRmOCcgaWYgc2VsZi51dGY4IGVsc2UgJ2FzY2lpJwogICAgICAgIHJldHVybiBmb2xkZWQuZW5jb2RlKGNoYXJzZXQsICdzdXJyb2dhdGVlc2NhcGUnKQoKICAgIGRlZiBfZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSwgcmVmb2xkX2JpbmFyeT1GYWxzZSk6CiAgICAgICAgaWYgaGFzYXR0cih2YWx1ZSwgJ25hbWUnKToKICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZvbGQocG9saWN5PXNlbGYpCiAgICAgICAgbWF4bGVuID0gc2VsZi5tYXhfbGluZV9sZW5ndGggaWYgc2VsZi5tYXhfbGluZV9sZW5ndGggZWxzZSBzeXMubWF4c2l6ZQogICAgICAgIGxpbmVzID0gdmFsdWUuc3BsaXRsaW5lcygpCiAgICAgICAgcmVmb2xkID0gKHNlbGYucmVmb2xkX3NvdXJjZSA9PSAnYWxsJyBvcgogICAgICAgICAgICAgICAgICBzZWxmLnJlZm9sZF9zb3VyY2UgPT0gJ2xvbmcnIGFuZAogICAgICAgICAgICAgICAgICAgIChsaW5lcyBhbmQgbGVuKGxpbmVzWzBdKStsZW4obmFtZSkrMiA+IG1heGxlbiBvcgogICAgICAgICAgICAgICAgICAgICBhbnkobGVuKHgpID4gbWF4bGVuIGZvciB4IGluIGxpbmVzWzE6XSkpKQogICAgICAgIGlmIHJlZm9sZCBvciByZWZvbGRfYmluYXJ5IGFuZCBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJfZmFjdG9yeShuYW1lLCAnJy5qb2luKGxpbmVzKSkuZm9sZChwb2xpY3k9c2VsZikKICAgICAgICByZXR1cm4gbmFtZSArICc6ICcgKyBzZWxmLmxpbmVzZXAuam9pbihsaW5lcykgKyBzZWxmLmxpbmVzZXAKCgpkZWZhdWx0ID0gRW1haWxQb2xpY3koKQojIE1ha2UgdGhlIGRlZmF1bHQgcG9saWN5IHVzZSB0aGUgY2xhc3MgZGVmYXVsdCBoZWFkZXJfZmFjdG9yeQpkZWwgZGVmYXVsdC5oZWFkZXJfZmFjdG9yeQpzdHJpY3QgPSBkZWZhdWx0LmNsb25lKHJhaXNlX29uX2RlZmVjdD1UcnVlKQpTTVRQID0gZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdcclxuJykKSFRUUCA9IGRlZmF1bHQuY2xvbmUobGluZXNlcD0nXHJcbicsIG1heF9saW5lX2xlbmd0aD1Ob25lKQpTTVRQVVRGOCA9IFNNVFAuY2xvbmUodXRmOD1UcnVlKQpQSwMEFAAAAAAAAiCjVuH8kF6IJgAAiCYAABMAAABlbWFpbC9xdW9wcmltaW1lLnB5IyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgojIEF1dGhvcjogQmVuIEdlcnR6ZmllbGQKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiUXVvdGVkLXByaW50YWJsZSBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIHBlciBSRkNzIDIwNDUtMjA0Ny4KClRoaXMgbW9kdWxlIGhhbmRsZXMgdGhlIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RpbmcgbWV0aG9kIGRlZmluZWQgaW4gUkZDIDIwNDUKdG8gZW5jb2RlIFVTIEFTQ0lJLWxpa2UgOC1iaXQgZGF0YSBjYWxsZWQgYHF1b3RlZC1wcmludGFibGUnLiAgSXQgaXMgdXNlZCB0bwpzYWZlbHkgZW5jb2RlIHRleHQgdGhhdCBpcyBpbiBhIGNoYXJhY3RlciBzZXQgc2ltaWxhciB0byB0aGUgNy1iaXQgVVMgQVNDSUkKY2hhcmFjdGVyIHNldCwgYnV0IHRoYXQgaW5jbHVkZXMgc29tZSA4LWJpdCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vcm1hbGx5IG5vdAphbGxvd2VkIGluIGVtYWlsIGJvZGllcyBvciBoZWFkZXJzLgoKUXVvdGVkLXByaW50YWJsZSBpcyB2ZXJ5IHNwYWNlLWluZWZmaWNpZW50IGZvciBlbmNvZGluZyBiaW5hcnkgZmlsZXM7IHVzZSB0aGUKZW1haWwuYmFzZTY0bWltZSBtb2R1bGUgZm9yIHRoYXQgaW5zdGVhZC4KClRoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBlbmNvZGUgYW5kIGRlY29kZSBib3RoIGhlYWRlcnMgYW5kIGJvZGllcwp3aXRoIHF1b3RlZC1wcmludGFibGUgZW5jb2RpbmcuCgpSRkMgMjA0NSBkZWZpbmVzIGEgbWV0aG9kIGZvciBpbmNsdWRpbmcgY2hhcmFjdGVyIHNldCBpbmZvcm1hdGlvbiBpbiBhbgpgZW5jb2RlZC13b3JkJyBpbiBhIGhlYWRlci4gIFRoaXMgbWV0aG9kIGlzIGNvbW1vbmx5IHVzZWQgZm9yIDgtYml0IHJlYWwgbmFtZXMKaW4gVG86L0Zyb206L0NjOiBldGMuIGZpZWxkcywgYXMgd2VsbCBhcyBTdWJqZWN0OiBsaW5lcy4KClRoaXMgbW9kdWxlIGRvZXMgbm90IGRvIHRoZSBsaW5lIHdyYXBwaW5nIG9yIGVuZC1vZi1saW5lIGNoYXJhY3Rlcgpjb252ZXJzaW9uIG5lY2Vzc2FyeSBmb3IgcHJvcGVyIGludGVybmF0aW9uYWxpemVkIGhlYWRlcnM7IGl0IG9ubHkKZG9lcyBkdW1iIGVuY29kaW5nIGFuZCBkZWNvZGluZy4gIFRvIGRlYWwgd2l0aCB0aGUgdmFyaW91cyBsaW5lCndyYXBwaW5nIGlzc3VlcywgdXNlIHRoZSBlbWFpbC5oZWFkZXIgbW9kdWxlLgoiIiIKCl9fYWxsX18gPSBbCiAgICAnYm9keV9kZWNvZGUnLAogICAgJ2JvZHlfZW5jb2RlJywKICAgICdib2R5X2xlbmd0aCcsCiAgICAnZGVjb2RlJywKICAgICdkZWNvZGVzdHJpbmcnLAogICAgJ2hlYWRlcl9kZWNvZGUnLAogICAgJ2hlYWRlcl9lbmNvZGUnLAogICAgJ2hlYWRlcl9sZW5ndGgnLAogICAgJ3F1b3RlJywKICAgICd1bnF1b3RlJywKICAgIF0KCmltcG9ydCByZQoKZnJvbSBzdHJpbmcgaW1wb3J0IGFzY2lpX2xldHRlcnMsIGRpZ2l0cywgaGV4ZGlnaXRzCgpDUkxGID0gJ1xyXG4nCk5MID0gJ1xuJwpFTVBUWVNUUklORyA9ICcnCgojIEJ1aWxkIGEgbWFwcGluZyBvZiBvY3RldHMgdG8gdGhlIGV4cGFuc2lvbiBvZiB0aGF0IG9jdGV0LiAgU2luY2Ugd2UncmUgb25seQojIGdvaW5nIHRvIGhhdmUgMjU2IG9mIHRoZXNlIHRoaW5ncywgdGhpcyBpc24ndCB0ZXJyaWJseSBpbmVmZmljaWVudAojIHNwYWNlLXdpc2UuICBSZW1lbWJlciB0aGF0IGhlYWRlcnMgYW5kIGJvZGllcyBoYXZlIGRpZmZlcmVudCBzZXRzIG9mIHNhZmUKIyBjaGFyYWN0ZXJzLiAgSW5pdGlhbGl6ZSBib3RoIG1hcHMgd2l0aCB0aGUgZnVsbCBleHBhbnNpb24sIGFuZCB0aGVuIG92ZXJyaWRlCiMgdGhlIHNhZmUgYnl0ZXMgd2l0aCB0aGUgbW9yZSBjb21wYWN0IGZvcm0uCl9RVU9QUklfTUFQID0gWyc9JTAyWCcgJSBjIGZvciBjIGluIHJhbmdlKDI1NildCl9RVU9QUklfSEVBREVSX01BUCA9IF9RVU9QUklfTUFQWzpdCl9RVU9QUklfQk9EWV9NQVAgPSBfUVVPUFJJX01BUFs6XQoKIyBTYWZlIGhlYWRlciBieXRlcyB3aGljaCBuZWVkIG5vIGVuY29kaW5nLgpmb3IgYyBpbiBiJy0hKisvJyArIGFzY2lpX2xldHRlcnMuZW5jb2RlKCdhc2NpaScpICsgZGlnaXRzLmVuY29kZSgnYXNjaWknKToKICAgIF9RVU9QUklfSEVBREVSX01BUFtjXSA9IGNocihjKQojIEhlYWRlcnMgaGF2ZSBvbmUgb3RoZXIgc3BlY2lhbCBlbmNvZGluZzsgc3BhY2VzIGJlY29tZSB1bmRlcnNjb3Jlcy4KX1FVT1BSSV9IRUFERVJfTUFQW29yZCgnICcpXSA9ICdfJwoKIyBTYWZlIGJvZHkgYnl0ZXMgd2hpY2ggbmVlZCBubyBlbmNvZGluZy4KZm9yIGMgaW4gKGInICEiIyQlJlwnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PicKICAgICAgICAgIGInP0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2AnCiAgICAgICAgICBiJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx0Jyk6CiAgICBfUVVPUFJJX0JPRFlfTUFQW2NdID0gY2hyKGMpCgoKCiMgSGVscGVycwpkZWYgaGVhZGVyX2NoZWNrKG9jdGV0KToKICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvY3RldCBzaG91bGQgYmUgZXNjYXBlZCB3aXRoIGhlYWRlciBxdW9wcmkuIiIiCiAgICByZXR1cm4gY2hyKG9jdGV0KSAhPSBfUVVPUFJJX0hFQURFUl9NQVBbb2N0ZXRdCgoKZGVmIGJvZHlfY2hlY2sob2N0ZXQpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9jdGV0IHNob3VsZCBiZSBlc2NhcGVkIHdpdGggYm9keSBxdW9wcmkuIiIiCiAgICByZXR1cm4gY2hyKG9jdGV0KSAhPSBfUVVPUFJJX0JPRFlfTUFQW29jdGV0XQoKCmRlZiBoZWFkZXJfbGVuZ3RoKGJ5dGVhcnJheSk6CiAgICAiIiJSZXR1cm4gYSBoZWFkZXIgcXVvdGVkLXByaW50YWJsZSBlbmNvZGluZyBsZW5ndGguCgogICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSBhbnkgUkZDIDIwNDcgY2hyb21lIGFkZGVkIGJ5CiAgICBgaGVhZGVyX2VuY29kZSgpYC4KCiAgICA6cGFyYW0gYnl0ZWFycmF5OiBBbiBhcnJheSBvZiBieXRlcyAoYS5rLmEuIG9jdGV0cykuCiAgICA6cmV0dXJuOiBUaGUgbGVuZ3RoIGluIGJ5dGVzIG9mIHRoZSBieXRlIGFycmF5IHdoZW4gaXQgaXMgZW5jb2RlZCB3aXRoCiAgICAgICAgcXVvdGVkLXByaW50YWJsZSBmb3IgaGVhZGVycy4KICAgICIiIgogICAgcmV0dXJuIHN1bShsZW4oX1FVT1BSSV9IRUFERVJfTUFQW29jdGV0XSkgZm9yIG9jdGV0IGluIGJ5dGVhcnJheSkKCgpkZWYgYm9keV9sZW5ndGgoYnl0ZWFycmF5KToKICAgICIiIlJldHVybiBhIGJvZHkgcXVvdGVkLXByaW50YWJsZSBlbmNvZGluZyBsZW5ndGguCgogICAgOnBhcmFtIGJ5dGVhcnJheTogQW4gYXJyYXkgb2YgYnl0ZXMgKGEuay5hLiBvY3RldHMpLgogICAgOnJldHVybjogVGhlIGxlbmd0aCBpbiBieXRlcyBvZiB0aGUgYnl0ZSBhcnJheSB3aGVuIGl0IGlzIGVuY29kZWQgd2l0aAogICAgICAgIHF1b3RlZC1wcmludGFibGUgZm9yIGJvZGllcy4KICAgICIiIgogICAgcmV0dXJuIHN1bShsZW4oX1FVT1BSSV9CT0RZX01BUFtvY3RldF0pIGZvciBvY3RldCBpbiBieXRlYXJyYXkpCgoKZGVmIF9tYXhfYXBwZW5kKEwsIHMsIG1heGxlbiwgZXh0cmE9JycpOgogICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKICAgICAgICBzID0gY2hyKHMpCiAgICBpZiBub3QgTDoKICAgICAgICBMLmFwcGVuZChzLmxzdHJpcCgpKQogICAgZWxpZiBsZW4oTFstMV0pICsgbGVuKHMpIDw9IG1heGxlbjoKICAgICAgICBMWy0xXSArPSBleHRyYSArIHMKICAgIGVsc2U6CiAgICAgICAgTC5hcHBlbmQocy5sc3RyaXAoKSkKCgpkZWYgdW5xdW90ZShzKToKICAgICIiIlR1cm4gYSBzdHJpbmcgaW4gdGhlIGZvcm0gPUFCIHRvIHRoZSBBU0NJSSBjaGFyYWN0ZXIgd2l0aCB2YWx1ZSAweGFiIiIiCiAgICByZXR1cm4gY2hyKGludChzWzE6M10sIDE2KSkKCgpkZWYgcXVvdGUoYyk6CiAgICByZXR1cm4gX1FVT1BSSV9NQVBbb3JkKGMpXQoKCmRlZiBoZWFkZXJfZW5jb2RlKGhlYWRlcl9ieXRlcywgY2hhcnNldD0naXNvLTg4NTktMScpOgogICAgIiIiRW5jb2RlIGEgc2luZ2xlIGhlYWRlciBsaW5lIHdpdGggcXVvdGVkLXByaW50YWJsZSAobGlrZSkgZW5jb2RpbmcuCgogICAgRGVmaW5lZCBpbiBSRkMgMjA0NSwgdGhpcyBgUScgZW5jb2RpbmcgaXMgc2ltaWxhciB0byBxdW90ZWQtcHJpbnRhYmxlLCBidXQKICAgIHVzZWQgc3BlY2lmaWNhbGx5IGZvciBlbWFpbCBoZWFkZXIgZmllbGRzIHRvIGFsbG93IGNoYXJzZXRzIHdpdGggbW9zdGx5IDcKICAgIGJpdCBjaGFyYWN0ZXJzIChhbmQgc29tZSA4IGJpdCkgdG8gcmVtYWluIG1vcmUgb3IgbGVzcyByZWFkYWJsZSBpbiBub24tUkZDCiAgICAyMDQ1IGF3YXJlIG1haWwgY2xpZW50cy4KCiAgICBjaGFyc2V0IG5hbWVzIHRoZSBjaGFyYWN0ZXIgc2V0IHRvIHVzZSBpbiB0aGUgUkZDIDIwNDYgaGVhZGVyLiAgSXQKICAgIGRlZmF1bHRzIHRvIGlzby04ODU5LTEuCiAgICAiIiIKICAgICMgUmV0dXJuIGVtcHR5IGhlYWRlcnMgYXMgYW4gZW1wdHkgc3RyaW5nLgogICAgaWYgbm90IGhlYWRlcl9ieXRlczoKICAgICAgICByZXR1cm4gJycKICAgICMgSXRlcmF0ZSBvdmVyIGV2ZXJ5IGJ5dGUsIGVuY29kaW5nIGlmIG5lY2Vzc2FyeS4KICAgIGVuY29kZWQgPSBoZWFkZXJfYnl0ZXMuZGVjb2RlKCdsYXRpbjEnKS50cmFuc2xhdGUoX1FVT1BSSV9IRUFERVJfTUFQKQogICAgIyBOb3cgYWRkIHRoZSBSRkMgY2hyb21lIHRvIGVhY2ggZW5jb2RlZCBjaHVuayBhbmQgZ2x1ZSB0aGUgY2h1bmtzCiAgICAjIHRvZ2V0aGVyLgogICAgcmV0dXJuICc9PyVzP3E/JXM/PScgJSAoY2hhcnNldCwgZW5jb2RlZCkKCgpfUVVPUFJJX0JPRFlfRU5DT0RFX01BUCA9IF9RVU9QUklfQk9EWV9NQVBbOl0KZm9yIGMgaW4gYidcclxuJzoKICAgIF9RVU9QUklfQk9EWV9FTkNPREVfTUFQW2NdID0gY2hyKGMpCmRlbCBjCgpkZWYgYm9keV9lbmNvZGUoYm9keSwgbWF4bGluZWxlbj03NiwgZW9sPU5MKToKICAgICIiIkVuY29kZSB3aXRoIHF1b3RlZC1wcmludGFibGUsIHdyYXBwaW5nIGF0IG1heGxpbmVsZW4gY2hhcmFjdGVycy4KCiAgICBFYWNoIGxpbmUgb2YgZW5jb2RlZCB0ZXh0IHdpbGwgZW5kIHdpdGggZW9sLCB3aGljaCBkZWZhdWx0cyB0byAiXFxuIi4gIFNldAogICAgdGhpcyB0byAiXFxyXFxuIiBpZiB5b3Ugd2lsbCBiZSB1c2luZyB0aGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkKICAgIGluIGFuIGVtYWlsLgoKICAgIEVhY2ggbGluZSB3aWxsIGJlIHdyYXBwZWQgYXQsIGF0IG1vc3QsIG1heGxpbmVsZW4gY2hhcmFjdGVycyBiZWZvcmUgdGhlCiAgICBlb2wgc3RyaW5nIChtYXhsaW5lbGVuIGRlZmF1bHRzIHRvIDc2IGNoYXJhY3RlcnMsIHRoZSBtYXhpbXVtIHZhbHVlCiAgICBwZXJtaXR0ZWQgYnkgUkZDIDIwNDUpLiAgTG9uZyBsaW5lcyB3aWxsIGhhdmUgdGhlICdzb2Z0IGxpbmUgYnJlYWsnCiAgICBxdW90ZWQtcHJpbnRhYmxlIGNoYXJhY3RlciAiPSIgYXBwZW5kZWQgdG8gdGhlbSwgc28gdGhlIGRlY29kZWQgdGV4dCB3aWxsCiAgICBiZSBpZGVudGljYWwgdG8gdGhlIG9yaWdpbmFsIHRleHQuCgogICAgVGhlIG1pbmltdW0gbWF4bGluZWxlbiBpcyA0IHRvIGhhdmUgcm9vbSBmb3IgYSBxdW90ZWQgY2hhcmFjdGVyICgiPVhYIikKICAgIGZvbGxvd2VkIGJ5IGEgc29mdCBsaW5lIGJyZWFrLiAgU21hbGxlciB2YWx1ZXMgd2lsbCBnZW5lcmF0ZSBhCiAgICBWYWx1ZUVycm9yLgoKICAgICIiIgoKICAgIGlmIG1heGxpbmVsZW4gPCA0OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1heGxpbmVsZW4gbXVzdCBiZSBhdCBsZWFzdCA0IikKICAgIGlmIG5vdCBib2R5OgogICAgICAgIHJldHVybiBib2R5CgogICAgIyBxdW90ZSBzcGVjaWFsIGNoYXJhY3RlcnMKICAgIGJvZHkgPSBib2R5LnRyYW5zbGF0ZShfUVVPUFJJX0JPRFlfRU5DT0RFX01BUCkKCiAgICBzb2Z0X2JyZWFrID0gJz0nICsgZW9sCiAgICAjIGxlYXZlIHNwYWNlIGZvciB0aGUgJz0nIGF0IHRoZSBlbmQgb2YgYSBsaW5lCiAgICBtYXhsaW5lbGVuMSA9IG1heGxpbmVsZW4gLSAxCgogICAgZW5jb2RlZF9ib2R5ID0gW10KICAgIGFwcGVuZCA9IGVuY29kZWRfYm9keS5hcHBlbmQKCiAgICBmb3IgbGluZSBpbiBib2R5LnNwbGl0bGluZXMoKToKICAgICAgICAjIGJyZWFrIHVwIHRoZSBsaW5lIGludG8gcGllY2VzIG5vIGxvbmdlciB0aGFuIG1heGxpbmVsZW4gLSAxCiAgICAgICAgc3RhcnQgPSAwCiAgICAgICAgbGFzdHN0YXJ0ID0gbGVuKGxpbmUpIC0gMSAtIG1heGxpbmVsZW4KICAgICAgICB3aGlsZSBzdGFydCA8PSBsYXN0c3RhcnQ6CiAgICAgICAgICAgIHN0b3AgPSBzdGFydCArIG1heGxpbmVsZW4xCiAgICAgICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0IGJyZWFrIHVwIGFuIGVzY2FwZSBzZXF1ZW5jZQogICAgICAgICAgICBpZiBsaW5lW3N0b3AgLSAyXSA9PSAnPSc6CiAgICAgICAgICAgICAgICBhcHBlbmQobGluZVtzdGFydDpzdG9wIC0gMV0pCiAgICAgICAgICAgICAgICBzdGFydCA9IHN0b3AgLSAyCiAgICAgICAgICAgIGVsaWYgbGluZVtzdG9wIC0gMV0gPT0gJz0nOgogICAgICAgICAgICAgICAgYXBwZW5kKGxpbmVbc3RhcnQ6c3RvcF0pCiAgICAgICAgICAgICAgICBzdGFydCA9IHN0b3AgLSAxCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBhcHBlbmQobGluZVtzdGFydDpzdG9wXSArICc9JykKICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3RvcAoKICAgICAgICAjIGhhbmRsZSByZXN0IG9mIGxpbmUsIHNwZWNpYWwgY2FzZSBpZiBsaW5lIGVuZHMgaW4gd2hpdGVzcGFjZQogICAgICAgIGlmIGxpbmUgYW5kIGxpbmVbLTFdIGluICcgXHQnOgogICAgICAgICAgICByb29tID0gc3RhcnQgLSBsYXN0c3RhcnQKICAgICAgICAgICAgaWYgcm9vbSA+PSAzOgogICAgICAgICAgICAgICAgIyBJdCdzIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgYXQgZW5kLW9mLWxpbmUsIGFuZCB3ZSBoYXZlIHJvb20KICAgICAgICAgICAgICAgICMgZm9yIHRoZSB0aHJlZS1jaGFyYWN0ZXIgcXVvdGVkIGVuY29kaW5nLgogICAgICAgICAgICAgICAgcSA9IHF1b3RlKGxpbmVbLTFdKQogICAgICAgICAgICBlbGlmIHJvb20gPT0gMjoKICAgICAgICAgICAgICAgICMgVGhlcmUncyByb29tIGZvciB0aGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgYW5kIGEgc29mdCBicmVhay4KICAgICAgICAgICAgICAgIHEgPSBsaW5lWy0xXSArIHNvZnRfYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgVGhlcmUncyByb29tIG9ubHkgZm9yIGEgc29mdCBicmVhay4gIFRoZSBxdW90ZWQgd2hpdGVzcGFjZQogICAgICAgICAgICAgICAgIyB3aWxsIGJlIHRoZSBvbmx5IGNvbnRlbnQgb24gdGhlIHN1YnNlcXVlbnQgbGluZS4KICAgICAgICAgICAgICAgIHEgPSBzb2Z0X2JyZWFrICsgcXVvdGUobGluZVstMV0pCiAgICAgICAgICAgIGFwcGVuZChsaW5lW3N0YXJ0Oi0xXSArIHEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYXBwZW5kKGxpbmVbc3RhcnQ6XSkKCiAgICAjIGFkZCBiYWNrIGZpbmFsIG5ld2xpbmUgaWYgcHJlc2VudAogICAgaWYgYm9keVstMV0gaW4gQ1JMRjoKICAgICAgICBhcHBlbmQoJycpCgogICAgcmV0dXJuIGVvbC5qb2luKGVuY29kZWRfYm9keSkKCgoKIyBCQVc6IEknbSBub3Qgc3VyZSBpZiB0aGUgaW50ZW50IHdhcyBmb3IgdGhlIHNpZ25hdHVyZSBvZiB0aGlzIGZ1bmN0aW9uIHRvIGJlCiMgdGhlIHNhbWUgYXMgYmFzZTY0TUlNRS5kZWNvZGUoKSBvciBub3QuLi4KZGVmIGRlY29kZShlbmNvZGVkLCBlb2w9TkwpOgogICAgIiIiRGVjb2RlIGEgcXVvdGVkLXByaW50YWJsZSBzdHJpbmcuCgogICAgTGluZXMgYXJlIHNlcGFyYXRlZCB3aXRoIGVvbCwgd2hpY2ggZGVmYXVsdHMgdG8gXFxuLgogICAgIiIiCiAgICBpZiBub3QgZW5jb2RlZDoKICAgICAgICByZXR1cm4gZW5jb2RlZAogICAgIyBCQVc6IHNlZSBjb21tZW50IGluIGVuY29kZSgpIGFib3ZlLiAgQWdhaW4sIHdlJ3JlIGJ1aWxkaW5nIHVwIHRoZQogICAgIyBkZWNvZGVkIHN0cmluZyB3aXRoIHN0cmluZyBjb25jYXRlbmF0aW9uLCB3aGljaCBjb3VsZCBiZSBkb25lIG11Y2ggbW9yZQogICAgIyBlZmZpY2llbnRseS4KICAgIGRlY29kZWQgPSAnJwoKICAgIGZvciBsaW5lIGluIGVuY29kZWQuc3BsaXRsaW5lcygpOgogICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgIGRlY29kZWQgKz0gZW9sCiAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgIGkgPSAwCiAgICAgICAgbiA9IGxlbihsaW5lKQogICAgICAgIHdoaWxlIGkgPCBuOgogICAgICAgICAgICBjID0gbGluZVtpXQogICAgICAgICAgICBpZiBjICE9ICc9JzoKICAgICAgICAgICAgICAgIGRlY29kZWQgKz0gYwogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICMgT3RoZXJ3aXNlLCBjID09ICI9Ii4gIEFyZSB3ZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lPyAgSWYgc28sIGFkZAogICAgICAgICAgICAjIGEgc29mdCBsaW5lIGJyZWFrLgogICAgICAgICAgICBlbGlmIGkrMSA9PSBuOgogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAjIERlY29kZSBpZiBpbiBmb3JtID1BQgogICAgICAgICAgICBlbGlmIGkrMiA8IG4gYW5kIGxpbmVbaSsxXSBpbiBoZXhkaWdpdHMgYW5kIGxpbmVbaSsyXSBpbiBoZXhkaWdpdHM6CiAgICAgICAgICAgICAgICBkZWNvZGVkICs9IHVucXVvdGUobGluZVtpOmkrM10pCiAgICAgICAgICAgICAgICBpICs9IDMKICAgICAgICAgICAgIyBPdGhlcndpc2UsIG5vdCBpbiBmb3JtID1BQiwgcGFzcyBsaXRlcmFsbHkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGRlY29kZWQgKz0gYwogICAgICAgICAgICAgICAgaSArPSAxCgogICAgICAgICAgICBpZiBpID09IG46CiAgICAgICAgICAgICAgICBkZWNvZGVkICs9IGVvbAogICAgIyBTcGVjaWFsIGNhc2UgaWYgb3JpZ2luYWwgc3RyaW5nIGRpZCBub3QgZW5kIHdpdGggZW9sCiAgICBpZiBlbmNvZGVkWy0xXSBub3QgaW4gJ1xyXG4nIGFuZCBkZWNvZGVkLmVuZHN3aXRoKGVvbCk6CiAgICAgICAgZGVjb2RlZCA9IGRlY29kZWRbOi0xXQogICAgcmV0dXJuIGRlY29kZWQKCgojIEZvciBjb252ZW5pZW5jZSBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdy8gc3RhbmRhcmQgYmFzZTY0IG1vZHVsZQpib2R5X2RlY29kZSA9IGRlY29kZQpkZWNvZGVzdHJpbmcgPSBkZWNvZGUKCgoKZGVmIF91bnF1b3RlX21hdGNoKG1hdGNoKToKICAgICIiIlR1cm4gYSBtYXRjaCBpbiB0aGUgZm9ybSA9QUIgdG8gdGhlIEFTQ0lJIGNoYXJhY3RlciB3aXRoIHZhbHVlIDB4YWIiIiIKICAgIHMgPSBtYXRjaC5ncm91cCgwKQogICAgcmV0dXJuIHVucXVvdGUocykKCgojIEhlYWRlciBkZWNvZGluZyBpcyBkb25lIGEgYml0IGRpZmZlcmVudGx5CmRlZiBoZWFkZXJfZGVjb2RlKHMpOgogICAgIiIiRGVjb2RlIGEgc3RyaW5nIGVuY29kZWQgd2l0aCBSRkMgMjA0NSBNSU1FIGhlYWRlciBgUScgZW5jb2RpbmcuCgogICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwYXJzZSBhIGZ1bGwgTUlNRSBoZWFkZXIgdmFsdWUgZW5jb2RlZCB3aXRoCiAgICBxdW90ZWQtcHJpbnRhYmxlIChsaWtlID0/aXNvLTg4NTktMT9xP0hlbGxvX1dvcmxkPz0pIC0tIHBsZWFzZSB1c2UKICAgIHRoZSBoaWdoIGxldmVsIGVtYWlsLmhlYWRlciBjbGFzcyBmb3IgdGhhdCBmdW5jdGlvbmFsaXR5LgogICAgIiIiCiAgICBzID0gcy5yZXBsYWNlKCdfJywgJyAnKQogICAgcmV0dXJuIHJlLnN1YihyJz1bYS1mQS1GMC05XXsyfScsIF91bnF1b3RlX21hdGNoLCBzLCBmbGFncz1yZS5BU0NJSSkKUEsDBBQAAAAAAAIgo1bEnrKKbjQAAG40AAAOAAAAZW1haWwvdXRpbHMucHkjIENvcHlyaWdodCAoQykgMjAwMS0yMDEwIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCiMgQXV0aG9yOiBCYXJyeSBXYXJzYXcKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMuIiIiCgpfX2FsbF9fID0gWwogICAgJ2NvbGxhcHNlX3JmYzIyMzFfdmFsdWUnLAogICAgJ2RlY29kZV9wYXJhbXMnLAogICAgJ2RlY29kZV9yZmMyMjMxJywKICAgICdlbmNvZGVfcmZjMjIzMScsCiAgICAnZm9ybWF0YWRkcicsCiAgICAnZm9ybWF0ZGF0ZScsCiAgICAnZm9ybWF0X2RhdGV0aW1lJywKICAgICdnZXRhZGRyZXNzZXMnLAogICAgJ21ha2VfbXNnaWQnLAogICAgJ21rdGltZV90eicsCiAgICAncGFyc2VhZGRyJywKICAgICdwYXJzZWRhdGUnLAogICAgJ3BhcnNlZGF0ZV90eicsCiAgICAncGFyc2VkYXRlX3RvX2RhdGV0aW1lJywKICAgICd1bnF1b3RlJywKICAgIF0KCmltcG9ydCBvcwppbXBvcnQgcmUKaW1wb3J0IHRpbWUKaW1wb3J0IHJhbmRvbQppbXBvcnQgc29ja2V0CmltcG9ydCBkYXRldGltZQppbXBvcnQgdXJsbGliLnBhcnNlCgpmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHF1b3RlCmZyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgQWRkcmVzc0xpc3QgYXMgX0FkZHJlc3NMaXN0CmZyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgbWt0aW1lX3R6Cgpmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZSwgcGFyc2VkYXRlX3R6LCBfcGFyc2VkYXRlX3R6CgojIEludHJhcGFja2FnZSBpbXBvcnRzCmZyb20gZW1haWwuY2hhcnNldCBpbXBvcnQgQ2hhcnNldAoKQ09NTUFTUEFDRSA9ICcsICcKRU1QVFlTVFJJTkcgPSAnJwpVRU1QVFlTVFJJTkcgPSAnJwpDUkxGID0gJ1xyXG4nClRJQ0sgPSAiJyIKCnNwZWNpYWxzcmUgPSByZS5jb21waWxlKHInW11bXFwoKTw+QCw6OyIuXScpCmVzY2FwZXNyZSA9IHJlLmNvbXBpbGUocidbXFwiXScpCgpkZWYgX2hhc19zdXJyb2dhdGVzKHMpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgcyBjb250YWlucyBzdXJyb2dhdGUtZXNjYXBlZCBiaW5hcnkgZGF0YS4iIiIKICAgICMgVGhpcyBjaGVjayBpcyBiYXNlZCBvbiB0aGUgZmFjdCB0aGF0IHVubGVzcyB0aGVyZSBhcmUgc3Vycm9nYXRlcywgdXRmOAogICAgIyAoUHl0aG9uJ3MgZGVmYXVsdCBlbmNvZGluZykgY2FuIGVuY29kZSBhbnkgc3RyaW5nLiAgVGhpcyBpcyB0aGUgZmFzdGVzdAogICAgIyB3YXkgdG8gY2hlY2sgZm9yIHN1cnJvZ2F0ZXMsIHNlZSBpc3N1ZSAxMTQ1NCBmb3IgdGltaW5ncy4KICAgIHRyeToKICAgICAgICBzLmVuY29kZSgpCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgIHJldHVybiBUcnVlCgojIEhvdyB0byBkZWFsIHdpdGggYSBzdHJpbmcgY29udGFpbmluZyBieXRlcyBiZWZvcmUgaGFuZGluZyBpdCB0byB0aGUKIyBhcHBsaWNhdGlvbiB0aHJvdWdoIHRoZSAnbm9ybWFsJyBpbnRlcmZhY2UuCmRlZiBfc2FuaXRpemUoc3RyaW5nKToKICAgICMgVHVybiBhbnkgZXNjYXBlZCBieXRlcyBpbnRvIHVuaWNvZGUgJ3Vua25vd24nIGNoYXIuICBJZiB0aGUgZXNjYXBlZAogICAgIyBieXRlcyBoYXBwZW4gdG8gYmUgdXRmLTggdGhleSB3aWxsIGluc3RlYWQgZ2V0IGRlY29kZWQsIGV2ZW4gaWYgdGhleQogICAgIyB3ZXJlIGludmFsaWQgaW4gdGhlIGNoYXJzZXQgdGhlIHNvdXJjZSB3YXMgc3VwcG9zZWQgdG8gYmUgaW4uICBUaGlzCiAgICAjIHNlZW1zIGxpa2UgaXQgaXMgbm90IGEgYmFkIHRoaW5nOyBhIGRlZmVjdCB3YXMgc3RpbGwgcmVnaXN0ZXJlZC4KICAgIG9yaWdpbmFsX2J5dGVzID0gc3RyaW5nLmVuY29kZSgndXRmLTgnLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgIHJldHVybiBvcmlnaW5hbF9ieXRlcy5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKQoKCgojIEhlbHBlcnMKCmRlZiBmb3JtYXRhZGRyKHBhaXIsIGNoYXJzZXQ9J3V0Zi04Jyk6CiAgICAiIiJUaGUgaW52ZXJzZSBvZiBwYXJzZWFkZHIoKSwgdGhpcyB0YWtlcyBhIDItdHVwbGUgb2YgdGhlIGZvcm0KICAgIChyZWFsbmFtZSwgZW1haWxfYWRkcmVzcykgYW5kIHJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBzdWl0YWJsZQogICAgZm9yIGFuIFJGQyAyODIyIEZyb20sIFRvIG9yIENjIGhlYWRlci4KCiAgICBJZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBwYWlyIGlzIGZhbHNlLCB0aGVuIHRoZSBzZWNvbmQgZWxlbWVudCBpcwogICAgcmV0dXJuZWQgdW5tb2RpZmllZC4KCiAgICBUaGUgb3B0aW9uYWwgY2hhcnNldCBpcyB0aGUgY2hhcmFjdGVyIHNldCB0aGF0IGlzIHVzZWQgdG8gZW5jb2RlCiAgICByZWFsbmFtZSBpbiBjYXNlIHJlYWxuYW1lIGlzIG5vdCBBU0NJSSBzYWZlLiAgQ2FuIGJlIGFuIGluc3RhbmNlIG9mIHN0ciBvcgogICAgYSBDaGFyc2V0LWxpa2Ugb2JqZWN0IHdoaWNoIGhhcyBhIGhlYWRlcl9lbmNvZGUgbWV0aG9kLiAgRGVmYXVsdCBpcwogICAgJ3V0Zi04Jy4KICAgICIiIgogICAgbmFtZSwgYWRkcmVzcyA9IHBhaXIKICAgICMgVGhlIGFkZHJlc3MgTVVTVCAocGVyIFJGQykgYmUgYXNjaWksIHNvIHJhaXNlIGEgVW5pY29kZUVycm9yIGlmIGl0IGlzbid0LgogICAgYWRkcmVzcy5lbmNvZGUoJ2FzY2lpJykKICAgIGlmIG5hbWU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBuYW1lLmVuY29kZSgnYXNjaWknKQogICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hhcnNldCwgc3RyKToKICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBDaGFyc2V0KGNoYXJzZXQpCiAgICAgICAgICAgIGVuY29kZWRfbmFtZSA9IGNoYXJzZXQuaGVhZGVyX2VuY29kZShuYW1lKQogICAgICAgICAgICByZXR1cm4gIiVzIDwlcz4iICUgKGVuY29kZWRfbmFtZSwgYWRkcmVzcykKICAgICAgICBlbHNlOgogICAgICAgICAgICBxdW90ZXMgPSAnJwogICAgICAgICAgICBpZiBzcGVjaWFsc3JlLnNlYXJjaChuYW1lKToKICAgICAgICAgICAgICAgIHF1b3RlcyA9ICciJwogICAgICAgICAgICBuYW1lID0gZXNjYXBlc3JlLnN1YihyJ1xcXGc8MD4nLCBuYW1lKQogICAgICAgICAgICByZXR1cm4gJyVzJXMlcyA8JXM+JyAlIChxdW90ZXMsIG5hbWUsIHF1b3RlcywgYWRkcmVzcykKICAgIHJldHVybiBhZGRyZXNzCgoKCmRlZiBnZXRhZGRyZXNzZXMoZmllbGR2YWx1ZXMpOgogICAgIiIiUmV0dXJuIGEgbGlzdCBvZiAoUkVBTE5BTUUsIEVNQUlMKSBmb3IgZWFjaCBmaWVsZHZhbHVlLiIiIgogICAgYWxsID0gQ09NTUFTUEFDRS5qb2luKHN0cih2KSBmb3IgdiBpbiBmaWVsZHZhbHVlcykKICAgIGEgPSBfQWRkcmVzc0xpc3QoYWxsKQogICAgcmV0dXJuIGEuYWRkcmVzc2xpc3QKCgpkZWYgX2Zvcm1hdF90aW1ldHVwbGVfYW5kX3pvbmUodGltZXR1cGxlLCB6b25lKToKICAgIHJldHVybiAnJXMsICUwMmQgJXMgJTA0ZCAlMDJkOiUwMmQ6JTAyZCAlcycgJSAoCiAgICAgICAgWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXVt0aW1ldHVwbGVbNl1dLAogICAgICAgIHRpbWV0dXBsZVsyXSwKICAgICAgICBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywKICAgICAgICAgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ11bdGltZXR1cGxlWzFdIC0gMV0sCiAgICAgICAgdGltZXR1cGxlWzBdLCB0aW1ldHVwbGVbM10sIHRpbWV0dXBsZVs0XSwgdGltZXR1cGxlWzVdLAogICAgICAgIHpvbmUpCgpkZWYgZm9ybWF0ZGF0ZSh0aW1ldmFsPU5vbmUsIGxvY2FsdGltZT1GYWxzZSwgdXNlZ210PUZhbHNlKToKICAgICIiIlJldHVybnMgYSBkYXRlIHN0cmluZyBhcyBzcGVjaWZpZWQgYnkgUkZDIDI4MjIsIGUuZy46CgogICAgRnJpLCAwOSBOb3YgMjAwMSAwMTowODo0NyAtMDAwMAoKICAgIE9wdGlvbmFsIHRpbWV2YWwgaWYgZ2l2ZW4gaXMgYSBmbG9hdGluZyBwb2ludCB0aW1lIHZhbHVlIGFzIGFjY2VwdGVkIGJ5CiAgICBnbXRpbWUoKSBhbmQgbG9jYWx0aW1lKCksIG90aGVyd2lzZSB0aGUgY3VycmVudCB0aW1lIGlzIHVzZWQuCgogICAgT3B0aW9uYWwgbG9jYWx0aW1lIGlzIGEgZmxhZyB0aGF0IHdoZW4gVHJ1ZSwgaW50ZXJwcmV0cyB0aW1ldmFsLCBhbmQKICAgIHJldHVybnMgYSBkYXRlIHJlbGF0aXZlIHRvIHRoZSBsb2NhbCB0aW1lem9uZSBpbnN0ZWFkIG9mIFVUQywgcHJvcGVybHkKICAgIHRha2luZyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaW50byBhY2NvdW50LgoKICAgIE9wdGlvbmFsIGFyZ3VtZW50IHVzZWdtdCBtZWFucyB0aGF0IHRoZSB0aW1lem9uZSBpcyB3cml0dGVuIG91dCBhcwogICAgYW4gYXNjaWkgc3RyaW5nLCBub3QgbnVtZXJpYyBvbmUgKHNvICJHTVQiIGluc3RlYWQgb2YgIiswMDAwIikuIFRoaXMKICAgIGlzIG5lZWRlZCBmb3IgSFRUUCwgYW5kIGlzIG9ubHkgdXNlZCB3aGVuIGxvY2FsdGltZT09RmFsc2UuCiAgICAiIiIKICAgICMgTm90ZTogd2UgY2Fubm90IHVzZSBzdHJmdGltZSgpIGJlY2F1c2UgdGhhdCBob25vcnMgdGhlIGxvY2FsZSBhbmQgUkZDCiAgICAjIDI4MjIgcmVxdWlyZXMgdGhhdCBkYXkgYW5kIG1vbnRoIG5hbWVzIGJlIHRoZSBFbmdsaXNoIGFiYnJldmlhdGlvbnMuCiAgICBpZiB0aW1ldmFsIGlzIE5vbmU6CiAgICAgICAgdGltZXZhbCA9IHRpbWUudGltZSgpCiAgICBpZiBsb2NhbHRpbWUgb3IgdXNlZ210OgogICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCh0aW1ldmFsLCBkYXRldGltZS50aW1lem9uZS51dGMpCiAgICBlbHNlOgogICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1ldmFsKQogICAgaWYgbG9jYWx0aW1lOgogICAgICAgIGR0ID0gZHQuYXN0aW1lem9uZSgpCiAgICAgICAgdXNlZ210ID0gRmFsc2UKICAgIHJldHVybiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdCkKCmRlZiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSk6CiAgICAiIiJUdXJuIGEgZGF0ZXRpbWUgaW50byBhIGRhdGUgc3RyaW5nIGFzIHNwZWNpZmllZCBpbiBSRkMgMjgyMi4KCiAgICBJZiB1c2VnbXQgaXMgVHJ1ZSwgZHQgbXVzdCBiZSBhbiBhd2FyZSBkYXRldGltZSB3aXRoIGFuIG9mZnNldCBvZiB6ZXJvLiAgSW4KICAgIHRoaXMgY2FzZSAnR01UJyB3aWxsIGJlIHJlbmRlcmVkIGluc3RlYWQgb2YgdGhlIG5vcm1hbCArMDAwMCByZXF1aXJlZCBieQogICAgUkZDMjgyMi4gIFRoaXMgaXMgdG8gc3VwcG9ydCBIVFRQIGhlYWRlcnMgaW52b2x2aW5nIGRhdGUgc3RhbXBzLgogICAgIiIiCiAgICBub3cgPSBkdC50aW1ldHVwbGUoKQogICAgaWYgdXNlZ210OgogICAgICAgIGlmIGR0LnR6aW5mbyBpcyBOb25lIG9yIGR0LnR6aW5mbyAhPSBkYXRldGltZS50aW1lem9uZS51dGM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVzZWdtdCBvcHRpb24gcmVxdWlyZXMgYSBVVEMgZGF0ZXRpbWUiKQogICAgICAgIHpvbmUgPSAnR01UJwogICAgZWxpZiBkdC50emluZm8gaXMgTm9uZToKICAgICAgICB6b25lID0gJy0wMDAwJwogICAgZWxzZToKICAgICAgICB6b25lID0gZHQuc3RyZnRpbWUoIiV6IikKICAgIHJldHVybiBfZm9ybWF0X3RpbWV0dXBsZV9hbmRfem9uZShub3csIHpvbmUpCgoKZGVmIG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpOgogICAgIiIiUmV0dXJucyBhIHN0cmluZyBzdWl0YWJsZSBmb3IgUkZDIDI4MjIgY29tcGxpYW50IE1lc3NhZ2UtSUQsIGUuZzoKCiAgICA8MTQyNDgwMjE2NDg2LjIwODAwLjE2NTI2Mzg4MDQwODc3OTQ2ODg3QG5pZ2h0c2hhZGUubGEubWFzdGFsZXIuY29tPgoKICAgIE9wdGlvbmFsIGlkc3RyaW5nIGlmIGdpdmVuIGlzIGEgc3RyaW5nIHVzZWQgdG8gc3RyZW5ndGhlbiB0aGUKICAgIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgaWQuICBPcHRpb25hbCBkb21haW4gaWYgZ2l2ZW4gcHJvdmlkZXMgdGhlCiAgICBwb3J0aW9uIG9mIHRoZSBtZXNzYWdlIGlkIGFmdGVyIHRoZSAnQCcuICBJdCBkZWZhdWx0cyB0byB0aGUgbG9jYWxseQogICAgZGVmaW5lZCBob3N0bmFtZS4KICAgICIiIgogICAgdGltZXZhbCA9IGludCh0aW1lLnRpbWUoKSoxMDApCiAgICBwaWQgPSBvcy5nZXRwaWQoKQogICAgcmFuZGludCA9IHJhbmRvbS5nZXRyYW5kYml0cyg2NCkKICAgIGlmIGlkc3RyaW5nIGlzIE5vbmU6CiAgICAgICAgaWRzdHJpbmcgPSAnJwogICAgZWxzZToKICAgICAgICBpZHN0cmluZyA9ICcuJyArIGlkc3RyaW5nCiAgICBpZiBkb21haW4gaXMgTm9uZToKICAgICAgICBkb21haW4gPSBzb2NrZXQuZ2V0ZnFkbigpCiAgICBtc2dpZCA9ICc8JWQuJWQuJWQlc0Alcz4nICUgKHRpbWV2YWwsIHBpZCwgcmFuZGludCwgaWRzdHJpbmcsIGRvbWFpbikKICAgIHJldHVybiBtc2dpZAoKCmRlZiBwYXJzZWRhdGVfdG9fZGF0ZXRpbWUoZGF0YSk6CiAgICBwYXJzZWRfZGF0ZV90eiA9IF9wYXJzZWRhdGVfdHooZGF0YSkKICAgIGlmIHBhcnNlZF9kYXRlX3R6IGlzIE5vbmU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBkYXRlIHZhbHVlIG9yIGZvcm1hdCAiJXMiJyAlIHN0cihkYXRhKSkKICAgICpkdHVwbGUsIHR6ID0gcGFyc2VkX2RhdGVfdHoKICAgIGlmIHR6IGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lKCpkdHVwbGVbOjZdKQogICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lKCpkdHVwbGVbOjZdLAogICAgICAgICAgICB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9dHopKSkKCgpkZWYgcGFyc2VhZGRyKGFkZHIpOgogICAgIiIiCiAgICBQYXJzZSBhZGRyIGludG8gaXRzIGNvbnN0aXR1ZW50IHJlYWxuYW1lIGFuZCBlbWFpbCBhZGRyZXNzIHBhcnRzLgoKICAgIFJldHVybiBhIHR1cGxlIG9mIHJlYWxuYW1lIGFuZCBlbWFpbCBhZGRyZXNzLCB1bmxlc3MgdGhlIHBhcnNlIGZhaWxzLCBpbgogICAgd2hpY2ggY2FzZSByZXR1cm4gYSAyLXR1cGxlIG9mICgnJywgJycpLgogICAgIiIiCiAgICBhZGRycyA9IF9BZGRyZXNzTGlzdChhZGRyKS5hZGRyZXNzbGlzdAogICAgaWYgbm90IGFkZHJzOgogICAgICAgIHJldHVybiAnJywgJycKICAgIHJldHVybiBhZGRyc1swXQoKCiMgcmZjODIyLnVucXVvdGUoKSBkb2Vzbid0IHByb3Blcmx5IGRlLWJhY2tzbGFzaC1pZnkgaW4gUHl0aG9uIHByZS0yLjMuCmRlZiB1bnF1b3RlKHN0cik6CiAgICAiIiJSZW1vdmUgcXVvdGVzIGZyb20gYSBzdHJpbmcuIiIiCiAgICBpZiBsZW4oc3RyKSA+IDE6CiAgICAgICAgaWYgc3RyLnN0YXJ0c3dpdGgoJyInKSBhbmQgc3RyLmVuZHN3aXRoKCciJyk6CiAgICAgICAgICAgIHJldHVybiBzdHJbMTotMV0ucmVwbGFjZSgnXFxcXCcsICdcXCcpLnJlcGxhY2UoJ1xcIicsICciJykKICAgICAgICBpZiBzdHIuc3RhcnRzd2l0aCgnPCcpIGFuZCBzdHIuZW5kc3dpdGgoJz4nKToKICAgICAgICAgICAgcmV0dXJuIHN0clsxOi0xXQogICAgcmV0dXJuIHN0cgoKCgojIFJGQzIyMzEtcmVsYXRlZCBmdW5jdGlvbnMgLSBwYXJhbWV0ZXIgZW5jb2RpbmcgYW5kIGRlY29kaW5nCmRlZiBkZWNvZGVfcmZjMjIzMShzKToKICAgICIiIkRlY29kZSBzdHJpbmcgYWNjb3JkaW5nIHRvIFJGQyAyMjMxIiIiCiAgICBwYXJ0cyA9IHMuc3BsaXQoVElDSywgMikKICAgIGlmIGxlbihwYXJ0cykgPD0gMjoKICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgcwogICAgcmV0dXJuIHBhcnRzCgoKZGVmIGVuY29kZV9yZmMyMjMxKHMsIGNoYXJzZXQ9Tm9uZSwgbGFuZ3VhZ2U9Tm9uZSk6CiAgICAiIiJFbmNvZGUgc3RyaW5nIGFjY29yZGluZyB0byBSRkMgMjIzMS4KCiAgICBJZiBuZWl0aGVyIGNoYXJzZXQgbm9yIGxhbmd1YWdlIGlzIGdpdmVuLCB0aGVuIHMgaXMgcmV0dXJuZWQgYXMtaXMuICBJZgogICAgY2hhcnNldCBpcyBnaXZlbiBidXQgbm90IGxhbmd1YWdlLCB0aGUgc3RyaW5nIGlzIGVuY29kZWQgdXNpbmcgdGhlIGVtcHR5CiAgICBzdHJpbmcgZm9yIGxhbmd1YWdlLgogICAgIiIiCiAgICBzID0gdXJsbGliLnBhcnNlLnF1b3RlKHMsIHNhZmU9JycsIGVuY29kaW5nPWNoYXJzZXQgb3IgJ2FzY2lpJykKICAgIGlmIGNoYXJzZXQgaXMgTm9uZSBhbmQgbGFuZ3VhZ2UgaXMgTm9uZToKICAgICAgICByZXR1cm4gcwogICAgaWYgbGFuZ3VhZ2UgaXMgTm9uZToKICAgICAgICBsYW5ndWFnZSA9ICcnCiAgICByZXR1cm4gIiVzJyVzJyVzIiAlIChjaGFyc2V0LCBsYW5ndWFnZSwgcykKCgpyZmMyMjMxX2NvbnRpbnVhdGlvbiA9IHJlLmNvbXBpbGUocideKD9QPG5hbWU+XHcrKVwqKCg/UDxudW0+WzAtOV0rKVwqPyk/JCcsCiAgICByZS5BU0NJSSkKCmRlZiBkZWNvZGVfcGFyYW1zKHBhcmFtcyk6CiAgICAiIiJEZWNvZGUgcGFyYW1ldGVycyBsaXN0IGFjY29yZGluZyB0byBSRkMgMjIzMS4KCiAgICBwYXJhbXMgaXMgYSBzZXF1ZW5jZSBvZiAyLXR1cGxlcyBjb250YWluaW5nIChwYXJhbSBuYW1lLCBzdHJpbmcgdmFsdWUpLgogICAgIiIiCiAgICBuZXdfcGFyYW1zID0gW3BhcmFtc1swXV0KICAgICMgTWFwIHBhcmFtZXRlcidzIG5hbWUgdG8gYSBsaXN0IG9mIGNvbnRpbnVhdGlvbnMuICBUaGUgdmFsdWVzIGFyZSBhCiAgICAjIDMtdHVwbGUgb2YgdGhlIGNvbnRpbnVhdGlvbiBudW1iZXIsIHRoZSBzdHJpbmcgdmFsdWUsIGFuZCBhIGZsYWcKICAgICMgc3BlY2lmeWluZyB3aGV0aGVyIGEgcGFydGljdWxhciBzZWdtZW50IGlzICUtZW5jb2RlZC4KICAgIHJmYzIyMzFfcGFyYW1zID0ge30KICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBwYXJhbXNbMTpdOgogICAgICAgIGVuY29kZWQgPSBuYW1lLmVuZHN3aXRoKCcqJykKICAgICAgICB2YWx1ZSA9IHVucXVvdGUodmFsdWUpCiAgICAgICAgbW8gPSByZmMyMjMxX2NvbnRpbnVhdGlvbi5tYXRjaChuYW1lKQogICAgICAgIGlmIG1vOgogICAgICAgICAgICBuYW1lLCBudW0gPSBtby5ncm91cCgnbmFtZScsICdudW0nKQogICAgICAgICAgICBpZiBudW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBudW0gPSBpbnQobnVtKQogICAgICAgICAgICByZmMyMjMxX3BhcmFtcy5zZXRkZWZhdWx0KG5hbWUsIFtdKS5hcHBlbmQoKG51bSwgdmFsdWUsIGVuY29kZWQpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5ld19wYXJhbXMuYXBwZW5kKChuYW1lLCAnIiVzIicgJSBxdW90ZSh2YWx1ZSkpKQogICAgaWYgcmZjMjIzMV9wYXJhbXM6CiAgICAgICAgZm9yIG5hbWUsIGNvbnRpbnVhdGlvbnMgaW4gcmZjMjIzMV9wYXJhbXMuaXRlbXMoKToKICAgICAgICAgICAgdmFsdWUgPSBbXQogICAgICAgICAgICBleHRlbmRlZCA9IEZhbHNlCiAgICAgICAgICAgICMgU29ydCBieSBudW1iZXIKICAgICAgICAgICAgY29udGludWF0aW9ucy5zb3J0KCkKICAgICAgICAgICAgIyBBbmQgbm93IGFwcGVuZCBhbGwgdmFsdWVzIGluIG51bWVyaWNhbCBvcmRlciwgY29udmVydGluZwogICAgICAgICAgICAjICUtZW5jb2RpbmdzIGZvciB0aGUgZW5jb2RlZCBzZWdtZW50cy4gIElmIGFueSBvZiB0aGUKICAgICAgICAgICAgIyBjb250aW51YXRpb24gbmFtZXMgZW5kcyBpbiBhICosIHRoZW4gdGhlIGVudGlyZSBzdHJpbmcsIGFmdGVyCiAgICAgICAgICAgICMgZGVjb2Rpbmcgc2VnbWVudHMgYW5kIGNvbmNhdGVuYXRpbmcsIG11c3QgaGF2ZSB0aGUgY2hhcnNldCBhbmQKICAgICAgICAgICAgIyBsYW5ndWFnZSBzcGVjaWZpZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KICAgICAgICAgICAgZm9yIG51bSwgcywgZW5jb2RlZCBpbiBjb250aW51YXRpb25zOgogICAgICAgICAgICAgICAgaWYgZW5jb2RlZDoKICAgICAgICAgICAgICAgICAgICAjIERlY29kZSBhcyAibGF0aW4tMSIsIHNvIHRoZSBjaGFyYWN0ZXJzIGluIHMgZGlyZWN0bHkKICAgICAgICAgICAgICAgICAgICAjIHJlcHJlc2VudCB0aGUgcGVyY2VudC1lbmNvZGVkIG9jdGV0IHZhbHVlcy4KICAgICAgICAgICAgICAgICAgICAjIGNvbGxhcHNlX3JmYzIyMzFfdmFsdWUgdHJlYXRzIHRoaXMgYXMgYW4gb2N0ZXQgc2VxdWVuY2UuCiAgICAgICAgICAgICAgICAgICAgcyA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHMsIGVuY29kaW5nPSJsYXRpbi0xIikKICAgICAgICAgICAgICAgICAgICBleHRlbmRlZCA9IFRydWUKICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzKQogICAgICAgICAgICB2YWx1ZSA9IHF1b3RlKEVNUFRZU1RSSU5HLmpvaW4odmFsdWUpKQogICAgICAgICAgICBpZiBleHRlbmRlZDoKICAgICAgICAgICAgICAgIGNoYXJzZXQsIGxhbmd1YWdlLCB2YWx1ZSA9IGRlY29kZV9yZmMyMjMxKHZhbHVlKQogICAgICAgICAgICAgICAgbmV3X3BhcmFtcy5hcHBlbmQoKG5hbWUsIChjaGFyc2V0LCBsYW5ndWFnZSwgJyIlcyInICUgdmFsdWUpKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG5ld19wYXJhbXMuYXBwZW5kKChuYW1lLCAnIiVzIicgJSB2YWx1ZSkpCiAgICByZXR1cm4gbmV3X3BhcmFtcwoKZGVmIGNvbGxhcHNlX3JmYzIyMzFfdmFsdWUodmFsdWUsIGVycm9ycz0ncmVwbGFjZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrX2NoYXJzZXQ9J3VzLWFzY2lpJyk6CiAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpIG9yIGxlbih2YWx1ZSkgIT0gMzoKICAgICAgICByZXR1cm4gdW5xdW90ZSh2YWx1ZSkKICAgICMgV2hpbGUgdmFsdWUgY29tZXMgdG8gdXMgYXMgYSB1bmljb2RlIHN0cmluZywgd2UgbmVlZCBpdCB0byBiZSBhIGJ5dGVzCiAgICAjIG9iamVjdC4gIFdlIGRvIG5vdCB3YW50IGJ5dGVzKCkgbm9ybWFsIHV0Zi04IGRlY29kZXIsIHdlIHdhbnQgYSBzdHJhaWdodAogICAgIyBpbnRlcnByZXRhdGlvbiBvZiB0aGUgc3RyaW5nIGFzIGNoYXJhY3RlciBieXRlcy4KICAgIGNoYXJzZXQsIGxhbmd1YWdlLCB0ZXh0ID0gdmFsdWUKICAgIGlmIGNoYXJzZXQgaXMgTm9uZToKICAgICAgICAjIElzc3VlIDE3MzY5OiBpZiBjaGFyc2V0L2xhbmcgaXMgTm9uZSwgZGVjb2RlX3JmYzIyMzEgY291bGRuJ3QgcGFyc2UKICAgICAgICAjIHRoZSB2YWx1ZSwgc28gdXNlIHRoZSBmYWxsYmFja19jaGFyc2V0LgogICAgICAgIGNoYXJzZXQgPSBmYWxsYmFja19jaGFyc2V0CiAgICByYXdieXRlcyA9IGJ5dGVzKHRleHQsICdyYXctdW5pY29kZS1lc2NhcGUnKQogICAgdHJ5OgogICAgICAgIHJldHVybiBzdHIocmF3Ynl0ZXMsIGNoYXJzZXQsIGVycm9ycykKICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKICAgICAgICAjIGNoYXJzZXQgaXMgbm90IGEga25vd24gY29kZWMuCiAgICAgICAgcmV0dXJuIHVucXVvdGUodGV4dCkKCgojCiMgZGF0ZXRpbWUgZG9lc24ndCBwcm92aWRlIGEgbG9jYWx0aW1lIGZ1bmN0aW9uIHlldCwgc28gcHJvdmlkZSBvbmUuICBDb2RlCiMgYWRhcHRlZCBmcm9tIHRoZSBwYXRjaCBpbiBpc3N1ZSA5NTI3LiAgVGhpcyBtYXkgbm90IGJlIHBlcmZlY3QsIGJ1dCBpdCBpcwojIGJldHRlciB0aGFuIG5vdCBoYXZpbmcgaXQuCiMKCmRlZiBsb2NhbHRpbWUoZHQ9Tm9uZSwgaXNkc3Q9LTEpOgogICAgIiIiUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LgoKICAgIElmIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqCiAgICBhcmd1bWVudCBzaG91bGQgYmUgYSBkYXRldGltZSBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUKICAgIGxvY2FsIHRpbWUgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzCiAgICBuYWl2ZSAodGhhdCBpcywgZHQudHppbmZvIGlzIE5vbmUpLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuCiAgICBJbiB0aGlzIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgbG9jYWx0aW1lIHRvCiAgICBwcmVzdW1lIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpCiAgICBpcyBvciBpcyBub3QgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBCiAgICBuZWdhdGl2ZSB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgdGhlIGxvY2FsdGltZSgpIGZ1bmN0aW9uIHRvIGF0dGVtcHQKICAgIHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgoKICAgICIiIgogICAgaWYgZHQgaXMgTm9uZToKICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KGRhdGV0aW1lLnRpbWV6b25lLnV0YykuYXN0aW1lem9uZSgpCiAgICBpZiBkdC50emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgcmV0dXJuIGR0LmFzdGltZXpvbmUoKQogICAgIyBXZSBoYXZlIGEgbmFpdmUgZGF0ZXRpbWUuICBDb252ZXJ0IHRvIGEgKGxvY2FsdGltZSkgdGltZXR1cGxlIGFuZCBwYXNzIHRvCiAgICAjIHN5c3RlbSBta3RpbWUgdG9nZXRoZXIgd2l0aCB0aGUgaXNkc3QgaGludC4gIFN5c3RlbSBta3RpbWUgd2lsbCByZXR1cm4KICAgICMgc2Vjb25kcyBzaW5jZSBlcG9jaC4KICAgIHRtID0gZHQudGltZXR1cGxlKClbOi0xXSArIChpc2RzdCwpCiAgICBzZWNvbmRzID0gdGltZS5ta3RpbWUodG0pCiAgICBsb2NhbHRtID0gdGltZS5sb2NhbHRpbWUoc2Vjb25kcykKICAgIHRyeToKICAgICAgICBkZWx0YSA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWxvY2FsdG0udG1fZ210b2ZmKQogICAgICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUoZGVsdGEsIGxvY2FsdG0udG1fem9uZSkKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAjIENvbXB1dGUgVVRDIG9mZnNldCBhbmQgY29tcGFyZSB3aXRoIHRoZSB2YWx1ZSBpbXBsaWVkIGJ5IHRtX2lzZHN0LgogICAgICAgICMgSWYgdGhlIHZhbHVlcyBtYXRjaCwgdXNlIHRoZSB6b25lIG5hbWUgaW1wbGllZCBieSB0bV9pc2RzdC4KICAgICAgICBkZWx0YSA9IGR0IC0gZGF0ZXRpbWUuZGF0ZXRpbWUoKnRpbWUuZ210aW1lKHNlY29uZHMpWzo2XSkKICAgICAgICBkc3QgPSB0aW1lLmRheWxpZ2h0IGFuZCBsb2NhbHRtLnRtX2lzZHN0ID4gMAogICAgICAgIGdtdG9mZiA9IC0odGltZS5hbHR6b25lIGlmIGRzdCBlbHNlIHRpbWUudGltZXpvbmUpCiAgICAgICAgaWYgZGVsdGEgPT0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKToKICAgICAgICAgICAgdHogPSBkYXRldGltZS50aW1lem9uZShkZWx0YSwgdGltZS50em5hbWVbZHN0XSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKGRlbHRhKQogICAgcmV0dXJuIGR0LnJlcGxhY2UodHppbmZvPXR6KQpQSwMEFAAAAAAAAiCjVgAAAAAAAAAAAAAAABYAAABlbWFpbC9taW1lL19faW5pdF9fLnB5UEsDBBQAAAAAAAIgo1bLPJ9ZKQUAACkFAAAZAAAAZW1haWwvbWltZS9hcHBsaWNhdGlvbi5weSMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBBdXRob3I6IEtlaXRoIERhcnQKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiQ2xhc3MgcmVwcmVzZW50aW5nIGFwcGxpY2F0aW9uLyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKCl9fYWxsX18gPSBbIk1JTUVBcHBsaWNhdGlvbiJdCgpmcm9tIGVtYWlsIGltcG9ydCBlbmNvZGVycwpmcm9tIGVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0IGltcG9ydCBNSU1FTm9uTXVsdGlwYXJ0CgoKY2xhc3MgTUlNRUFwcGxpY2F0aW9uKE1JTUVOb25NdWx0aXBhcnQpOgogICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgYXBwbGljYXRpb24vKiBNSU1FIGRvY3VtZW50cy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgX2RhdGEsIF9zdWJ0eXBlPSdvY3RldC1zdHJlYW0nLAogICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICIiIkNyZWF0ZSBhbiBhcHBsaWNhdGlvbi8qIHR5cGUgTUlNRSBkb2N1bWVudC4KCiAgICAgICAgX2RhdGEgY29udGFpbnMgdGhlIGJ5dGVzIGZvciB0aGUgcmF3IGFwcGxpY2F0aW9uIGRhdGEuCgogICAgICAgIF9zdWJ0eXBlIGlzIHRoZSBNSU1FIGNvbnRlbnQgdHlwZSBzdWJ0eXBlLCBkZWZhdWx0aW5nIHRvCiAgICAgICAgJ29jdGV0LXN0cmVhbScuCgogICAgICAgIF9lbmNvZGVyIGlzIGEgZnVuY3Rpb24gd2hpY2ggd2lsbCBwZXJmb3JtIHRoZSBhY3R1YWwgZW5jb2RpbmcgZm9yCiAgICAgICAgdHJhbnNwb3J0IG9mIHRoZSBhcHBsaWNhdGlvbiBkYXRhLCBkZWZhdWx0aW5nIHRvIGJhc2U2NCBlbmNvZGluZy4KCiAgICAgICAgQW55IGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgYmFzZSBjbGFzcwogICAgICAgIGNvbnN0cnVjdG9yLCB3aGljaCB0dXJucyB0aGVtIGludG8gcGFyYW1ldGVycyBvbiB0aGUgQ29udGVudC1UeXBlCiAgICAgICAgaGVhZGVyLgogICAgICAgICIiIgogICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignSW52YWxpZCBhcHBsaWNhdGlvbiBNSU1FIHN1YnR5cGUnKQogICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2FwcGxpY2F0aW9uJywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpCiAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfZGF0YSkKICAgICAgICBfZW5jb2RlcihzZWxmKQpQSwMEFAAAAAAAAiCjVvvdDboWDAAAFgwAABMAAABlbWFpbC9taW1lL2F1ZGlvLnB5IyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgojIEF1dGhvcjogQW50aG9ueSBCYXh0ZXIKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiQ2xhc3MgcmVwcmVzZW50aW5nIGF1ZGlvLyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKCl9fYWxsX18gPSBbJ01JTUVBdWRpbyddCgpmcm9tIGlvIGltcG9ydCBCeXRlc0lPCmZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCmZyb20gZW1haWwubWltZS5ub25tdWx0aXBhcnQgaW1wb3J0IE1JTUVOb25NdWx0aXBhcnQKCgpjbGFzcyBNSU1FQXVkaW8oTUlNRU5vbk11bHRpcGFydCk6CiAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhdWRpby8qIE1JTUUgZG9jdW1lbnRzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLAogICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICIiIkNyZWF0ZSBhbiBhdWRpby8qIHR5cGUgTUlNRSBkb2N1bWVudC4KCiAgICAgICAgX2F1ZGlvZGF0YSBjb250YWlucyB0aGUgYnl0ZXMgZm9yIHRoZSByYXcgYXVkaW8gZGF0YS4gIElmIHRoaXMgZGF0YQogICAgICAgIGNhbiBiZSBkZWNvZGVkIGFzIGF1LCB3YXYsIGFpZmYsIG9yIGFpZmMsIHRoZW4gdGhlCiAgICAgICAgc3VidHlwZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCiAgICAgICAgT3RoZXJ3aXNlLCB5b3UgY2FuIHNwZWNpZnkgIHRoZSBzcGVjaWZpYyBhdWRpbyBzdWJ0eXBlIHZpYSB0aGUKICAgICAgICBfc3VidHlwZSBwYXJhbWV0ZXIuICBJZiBfc3VidHlwZSBpcyBub3QgZ2l2ZW4sIGFuZCBubyBzdWJ0eXBlIGNhbiBiZQogICAgICAgIGd1ZXNzZWQsIGEgVHlwZUVycm9yIGlzIHJhaXNlZC4KCiAgICAgICAgX2VuY29kZXIgaXMgYSBmdW5jdGlvbiB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFjdHVhbCBlbmNvZGluZyBmb3IKICAgICAgICB0cmFuc3BvcnQgb2YgdGhlIGltYWdlIGRhdGEuICBJdCB0YWtlcyBvbmUgYXJndW1lbnQsIHdoaWNoIGlzIHRoaXMKICAgICAgICBJbWFnZSBpbnN0YW5jZS4gIEl0IHNob3VsZCB1c2UgZ2V0X3BheWxvYWQoKSBhbmQgc2V0X3BheWxvYWQoKSB0bwogICAgICAgIGNoYW5nZSB0aGUgcGF5bG9hZCB0byB0aGUgZW5jb2RlZCBmb3JtLiAgSXQgc2hvdWxkIGFsc28gYWRkIGFueQogICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmcgb3Igb3RoZXIgaGVhZGVycyB0byB0aGUgbWVzc2FnZSBhcwogICAgICAgIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIEJhc2U2NC4KCiAgICAgICAgQW55IGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgYmFzZSBjbGFzcwogICAgICAgIGNvbnN0cnVjdG9yLCB3aGljaCB0dXJucyB0aGVtIGludG8gcGFyYW1ldGVycyBvbiB0aGUgQ29udGVudC1UeXBlCiAgICAgICAgaGVhZGVyLgogICAgICAgICIiIgogICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgIF9zdWJ0eXBlID0gX3doYXQoX2F1ZGlvZGF0YSkKICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGF1ZGlvIE1JTUUgc3VidHlwZScpCiAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXVkaW8nLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF9hdWRpb2RhdGEpCiAgICAgICAgX2VuY29kZXIoc2VsZikKCgpfcnVsZXMgPSBbXQoKCiMgT3JpZ2luYWxseSBmcm9tIHRoZSBzbmRoZHIgbW9kdWxlLgojCiMgVGhlcmUgYXJlIG90aGVycyBpbiBzbmRoZHIgdGhhdCBkb24ndCBoYXZlIE1JTUUgdHlwZXMuIDooCiMgQWRkaXRpb25hbCBvbmVzIHRvIGJlIGFkZGVkIHRvIHNuZGhkcj8gbWlkaSwgbXAzLCByZWFsYXVkaW8sIHdtYT8/CmRlZiBfd2hhdChkYXRhKToKICAgICMgVHJ5IHRvIGlkZW50aWZ5IGEgc291bmQgZmlsZSB0eXBlLgogICAgIwogICAgIyBzbmRoZHIud2hhdCgpIGhhZCBhIHByZXR0eSBjcnVkZHkgaW50ZXJmYWNlLCB1bmZvcnR1bmF0ZWx5LiAgVGhpcyBpcyB3aHkKICAgICMgd2UgcmUtZG8gaXQgaGVyZS4gIEl0IHdvdWxkIGJlIGVhc2llciB0byByZXZlcnNlIGVuZ2luZWVyIHRoZSBVbml4ICdmaWxlJwogICAgIyBjb21tYW5kIGFuZCB1c2UgdGhlIHN0YW5kYXJkICdtYWdpYycgZmlsZSwgYXMgc2hpcHBlZCB3aXRoIGEgbW9kZXJuIFVuaXguCiAgICBoZHIgPSBkYXRhWzo1MTJdCiAgICBmYWtlZmlsZSA9IEJ5dGVzSU8oaGRyKQogICAgZm9yIHRlc3RmbiBpbiBfcnVsZXM6CiAgICAgICAgaWYgcmVzIDo9IHRlc3RmbihoZHIsIGZha2VmaWxlKToKICAgICAgICAgICAgcmV0dXJuIHJlcwogICAgZWxzZToKICAgICAgICByZXR1cm4gTm9uZQoKCmRlZiBydWxlKHJ1bGVmdW5jKToKICAgIF9ydWxlcy5hcHBlbmQocnVsZWZ1bmMpCiAgICByZXR1cm4gcnVsZWZ1bmMKCgpAcnVsZQpkZWYgX2FpZmYoaCwgZik6CiAgICBpZiBub3QgaC5zdGFydHN3aXRoKGInRk9STScpOgogICAgICAgIHJldHVybiBOb25lCiAgICBpZiBoWzg6MTJdIGluIHtiJ0FJRkMnLCBiJ0FJRkYnfToKICAgICAgICByZXR1cm4gJ3gtYWlmZicKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIE5vbmUKCgpAcnVsZQpkZWYgX2F1KGgsIGYpOgogICAgaWYgaC5zdGFydHN3aXRoKGInLnNuZCcpOgogICAgICAgIHJldHVybiAnYmFzaWMnCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCgoKQHJ1bGUKZGVmIF93YXYoaCwgZik6CiAgICAjICdSSUZGJyA8bGVuPiAnV0FWRScgJ2ZtdCAnIDxsZW4+CiAgICBpZiBub3QgaC5zdGFydHN3aXRoKGInUklGRicpIG9yIGhbODoxMl0gIT0gYidXQVZFJyBvciBoWzEyOjE2XSAhPSBiJ2ZtdCAnOgogICAgICAgIHJldHVybiBOb25lCiAgICBlbHNlOgogICAgICAgIHJldHVybiAieC13YXYiClBLAwQUAAAAAAACIKNWgmah/5QDAACUAwAAEgAAAGVtYWlsL21pbWUvYmFzZS5weSMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBBdXRob3I6IEJhcnJ5IFdhcnNhdwojIENvbnRhY3Q6IGVtYWlsLXNpZ0BweXRob24ub3JnCgoiIiJCYXNlIGNsYXNzIGZvciBNSU1FIHNwZWNpYWxpemF0aW9ucy4iIiIKCl9fYWxsX18gPSBbJ01JTUVCYXNlJ10KCmltcG9ydCBlbWFpbC5wb2xpY3kKCmZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKCgoMCmNsYXNzIE1JTUVCYXNlKG1lc3NhZ2UuTWVzc2FnZSk6CiAgICAiIiJCYXNlIGNsYXNzIGZvciBNSU1FIHNwZWNpYWxpemF0aW9ucy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgX21haW50eXBlLCBfc3VidHlwZSwgKiwgcG9saWN5PU5vbmUsICoqX3BhcmFtcyk6CiAgICAgICAgIiIiVGhpcyBjb25zdHJ1Y3RvciBhZGRzIGEgQ29udGVudC1UeXBlOiBhbmQgYSBNSU1FLVZlcnNpb246IGhlYWRlci4KCiAgICAgICAgVGhlIENvbnRlbnQtVHlwZTogaGVhZGVyIGlzIHRha2VuIGZyb20gdGhlIF9tYWludHlwZSBhbmQgX3N1YnR5cGUKICAgICAgICBhcmd1bWVudHMuICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoaXMgaGVhZGVyIGFyZSB0YWtlbiBmcm9tIHRoZQogICAgICAgIGtleXdvcmQgYXJndW1lbnRzLgogICAgICAgICIiIgogICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgogICAgICAgICAgICBwb2xpY3kgPSBlbWFpbC5wb2xpY3kuY29tcGF0MzIKICAgICAgICBtZXNzYWdlLk1lc3NhZ2UuX19pbml0X18oc2VsZiwgcG9saWN5PXBvbGljeSkKICAgICAgICBjdHlwZSA9ICclcy8lcycgJSAoX21haW50eXBlLCBfc3VidHlwZSkKICAgICAgICBzZWxmLmFkZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGN0eXBlLCAqKl9wYXJhbXMpCiAgICAgICAgc2VsZlsnTUlNRS1WZXJzaW9uJ10gPSAnMS4wJwpQSwMEFAAAAAAAAiCjVqVgQsGODgAAjg4AABMAAABlbWFpbC9taW1lL2ltYWdlLnB5IyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgojIEF1dGhvcjogQmFycnkgV2Fyc2F3CiMgQ29udGFjdDogZW1haWwtc2lnQHB5dGhvbi5vcmcKCiIiIkNsYXNzIHJlcHJlc2VudGluZyBpbWFnZS8qIHR5cGUgTUlNRSBkb2N1bWVudHMuIiIiCgpfX2FsbF9fID0gWydNSU1FSW1hZ2UnXQoKZnJvbSBlbWFpbCBpbXBvcnQgZW5jb2RlcnMKZnJvbSBlbWFpbC5taW1lLm5vbm11bHRpcGFydCBpbXBvcnQgTUlNRU5vbk11bHRpcGFydAoKCmNsYXNzIE1JTUVJbWFnZShNSU1FTm9uTXVsdGlwYXJ0KToKICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIGltYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgX2ltYWdlZGF0YSwgX3N1YnR5cGU9Tm9uZSwKICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAiIiJDcmVhdGUgYW4gaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCgogICAgICAgIF9pbWFnZWRhdGEgY29udGFpbnMgdGhlIGJ5dGVzIGZvciB0aGUgcmF3IGltYWdlIGRhdGEuICBJZiB0aGUgZGF0YQogICAgICAgIHR5cGUgY2FuIGJlIGRldGVjdGVkIChqcGVnLCBwbmcsIGdpZiwgdGlmZiwgcmdiLCBwYm0sIHBnbSwgcHBtLAogICAgICAgIHJhc3QsIHhibSwgYm1wLCB3ZWJwLCBhbmQgZXhyIGF0dGVtcHRlZCksIHRoZW4gdGhlIHN1YnR5cGUgd2lsbCBiZQogICAgICAgIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQgaW4gdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuIE90aGVyd2lzZSwgeW91IGNhbgogICAgICAgIHNwZWNpZnkgdGhlIHNwZWNpZmljIGltYWdlIHN1YnR5cGUgdmlhIHRoZSBfc3VidHlwZSBwYXJhbWV0ZXIuCgogICAgICAgIF9lbmNvZGVyIGlzIGEgZnVuY3Rpb24gd2hpY2ggd2lsbCBwZXJmb3JtIHRoZSBhY3R1YWwgZW5jb2RpbmcgZm9yCiAgICAgICAgdHJhbnNwb3J0IG9mIHRoZSBpbWFnZSBkYXRhLiAgSXQgdGFrZXMgb25lIGFyZ3VtZW50LCB3aGljaCBpcyB0aGlzCiAgICAgICAgSW1hZ2UgaW5zdGFuY2UuICBJdCBzaG91bGQgdXNlIGdldF9wYXlsb2FkKCkgYW5kIHNldF9wYXlsb2FkKCkgdG8KICAgICAgICBjaGFuZ2UgdGhlIHBheWxvYWQgdG8gdGhlIGVuY29kZWQgZm9ybS4gIEl0IHNob3VsZCBhbHNvIGFkZCBhbnkKICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIG9yIG90aGVyIGhlYWRlcnMgdG8gdGhlIG1lc3NhZ2UgYXMKICAgICAgICBuZWNlc3NhcnkuICBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyBCYXNlNjQuCgogICAgICAgIEFueSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIGJhc2UgY2xhc3MKICAgICAgICBjb25zdHJ1Y3Rvciwgd2hpY2ggdHVybnMgdGhlbSBpbnRvIHBhcmFtZXRlcnMgb24gdGhlIENvbnRlbnQtVHlwZQogICAgICAgIGhlYWRlci4KICAgICAgICAiIiIKICAgICAgICBfc3VidHlwZSA9IF93aGF0KF9pbWFnZWRhdGEpIGlmIF9zdWJ0eXBlIGlzIE5vbmUgZWxzZSBfc3VidHlwZQogICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ291bGQgbm90IGd1ZXNzIGltYWdlIE1JTUUgc3VidHlwZScpCiAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnaW1hZ2UnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF9pbWFnZWRhdGEpCiAgICAgICAgX2VuY29kZXIoc2VsZikKCgpfcnVsZXMgPSBbXQoKCiMgT3JpZ2luYWxseSBmcm9tIHRoZSBpbWdoZHIgbW9kdWxlLgpkZWYgX3doYXQoZGF0YSk6CiAgICBmb3IgcnVsZSBpbiBfcnVsZXM6CiAgICAgICAgaWYgcmVzIDo9IHJ1bGUoZGF0YSk6CiAgICAgICAgICAgIHJldHVybiByZXMKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIE5vbmUKCgpkZWYgcnVsZShydWxlZnVuYyk6CiAgICBfcnVsZXMuYXBwZW5kKHJ1bGVmdW5jKQogICAgcmV0dXJuIHJ1bGVmdW5jCgoKQHJ1bGUKZGVmIF9qcGVnKGgpOgogICAgIiIiSlBFRyBkYXRhIHdpdGggSkZJRiBvciBFeGlmIG1hcmtlcnM7IGFuZCByYXcgSlBFRyIiIgogICAgaWYgaFs2OjEwXSBpbiAoYidKRklGJywgYidFeGlmJyk6CiAgICAgICAgcmV0dXJuICdqcGVnJwogICAgZWxpZiBoWzo0XSA9PSBiJ1x4ZmZceGQ4XHhmZlx4ZGInOgogICAgICAgIHJldHVybiAnanBlZycKCgpAcnVsZQpkZWYgX3BuZyhoKToKICAgIGlmIGguc3RhcnRzd2l0aChiJ1wyMTFQTkdcclxuXDAzMlxuJyk6CiAgICAgICAgcmV0dXJuICdwbmcnCgoKQHJ1bGUKZGVmIF9naWYoaCk6CiAgICAiIiJHSUYgKCc4NyBhbmQgJzg5IHZhcmlhbnRzKSIiIgogICAgaWYgaFs6Nl0gaW4gKGInR0lGODdhJywgYidHSUY4OWEnKToKICAgICAgICByZXR1cm4gJ2dpZicKCgpAcnVsZQpkZWYgX3RpZmYoaCk6CiAgICAiIiJUSUZGIChjYW4gYmUgaW4gTW90b3JvbGEgb3IgSW50ZWwgYnl0ZSBvcmRlcikiIiIKICAgIGlmIGhbOjJdIGluIChiJ01NJywgYidJSScpOgogICAgICAgIHJldHVybiAndGlmZicKCgpAcnVsZQpkZWYgX3JnYihoKToKICAgICIiIlNHSSBpbWFnZSBsaWJyYXJ5IiIiCiAgICBpZiBoLnN0YXJ0c3dpdGgoYidcMDAxXDMzMicpOgogICAgICAgIHJldHVybiAncmdiJwoKCkBydWxlCmRlZiBfcGJtKGgpOgogICAgIiIiUEJNIChwb3J0YWJsZSBiaXRtYXApIiIiCiAgICBpZiBsZW4oaCkgPj0gMyBhbmQgXAogICAgICAgICAgICBoWzBdID09IG9yZChiJ1AnKSBhbmQgaFsxXSBpbiBiJzE0JyBhbmQgaFsyXSBpbiBiJyBcdFxuXHInOgogICAgICAgIHJldHVybiAncGJtJwoKCkBydWxlCmRlZiBfcGdtKGgpOgogICAgIiIiUEdNIChwb3J0YWJsZSBncmF5bWFwKSIiIgogICAgaWYgbGVuKGgpID49IDMgYW5kIFwKICAgICAgICAgICAgaFswXSA9PSBvcmQoYidQJykgYW5kIGhbMV0gaW4gYicyNScgYW5kIGhbMl0gaW4gYicgXHRcblxyJzoKICAgICAgICByZXR1cm4gJ3BnbScKCgpAcnVsZQpkZWYgX3BwbShoKToKICAgICIiIlBQTSAocG9ydGFibGUgcGl4bWFwKSIiIgogICAgaWYgbGVuKGgpID49IDMgYW5kIFwKICAgICAgICAgICAgaFswXSA9PSBvcmQoYidQJykgYW5kIGhbMV0gaW4gYiczNicgYW5kIGhbMl0gaW4gYicgXHRcblxyJzoKICAgICAgICByZXR1cm4gJ3BwbScKCgpAcnVsZQpkZWYgX3Jhc3QoaCk6CiAgICAiIiJTdW4gcmFzdGVyIGZpbGUiIiIKICAgIGlmIGguc3RhcnRzd2l0aChiJ1x4NTlceEE2XHg2QVx4OTUnKToKICAgICAgICByZXR1cm4gJ3Jhc3QnCgoKQHJ1bGUKZGVmIF94Ym0oaCk6CiAgICAiIiJYIGJpdG1hcCAoWDEwIG9yIFgxMSkiIiIKICAgIGlmIGguc3RhcnRzd2l0aChiJyNkZWZpbmUgJyk6CiAgICAgICAgcmV0dXJuICd4Ym0nCgoKQHJ1bGUKZGVmIF9ibXAoaCk6CiAgICBpZiBoLnN0YXJ0c3dpdGgoYidCTScpOgogICAgICAgIHJldHVybiAnYm1wJwoKCkBydWxlCmRlZiBfd2VicChoKToKICAgIGlmIGguc3RhcnRzd2l0aChiJ1JJRkYnKSBhbmQgaFs4OjEyXSA9PSBiJ1dFQlAnOgogICAgICAgIHJldHVybiAnd2VicCcKCgpAcnVsZQpkZWYgX2V4cihoKToKICAgIGlmIGguc3RhcnRzd2l0aChiJ1x4NzZceDJmXHgzMVx4MDEnKToKICAgICAgICByZXR1cm4gJ2V4cicKUEsDBBQAAAAAAAIgo1Z/bpLYJQUAACUFAAAVAAAAZW1haWwvbWltZS9tZXNzYWdlLnB5IyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgojIEF1dGhvcjogQmFycnkgV2Fyc2F3CiMgQ29udGFjdDogZW1haWwtc2lnQHB5dGhvbi5vcmcKCiIiIkNsYXNzIHJlcHJlc2VudGluZyBtZXNzYWdlLyogTUlNRSBkb2N1bWVudHMuIiIiCgpfX2FsbF9fID0gWydNSU1FTWVzc2FnZSddCgpmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCmZyb20gZW1haWwubWltZS5ub25tdWx0aXBhcnQgaW1wb3J0IE1JTUVOb25NdWx0aXBhcnQKCgoMCmNsYXNzIE1JTUVNZXNzYWdlKE1JTUVOb25NdWx0aXBhcnQpOgogICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIG1lc3NhZ2UvKiBNSU1FIGRvY3VtZW50cy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgX21zZywgX3N1YnR5cGU9J3JmYzgyMicsICosIHBvbGljeT1Ob25lKToKICAgICAgICAiIiJDcmVhdGUgYSBtZXNzYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50LgoKICAgICAgICBfbXNnIGlzIGEgbWVzc2FnZSBvYmplY3QgYW5kIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZSwgb3IgYQogICAgICAgIGRlcml2ZWQgY2xhc3Mgb2YgTWVzc2FnZSwgb3RoZXJ3aXNlIGEgVHlwZUVycm9yIGlzIHJhaXNlZC4KCiAgICAgICAgT3B0aW9uYWwgX3N1YnR5cGUgZGVmaW5lcyB0aGUgc3VidHlwZSBvZiB0aGUgY29udGFpbmVkIG1lc3NhZ2UuICBUaGUKICAgICAgICBkZWZhdWx0IGlzICJyZmM4MjIiICh0aGlzIGlzIGRlZmluZWQgYnkgdGhlIE1JTUUgc3RhbmRhcmQsIGV2ZW4gdGhvdWdoCiAgICAgICAgdGhlIHRlcm0gInJmYzgyMiIgaXMgdGVjaG5pY2FsbHkgb3V0ZGF0ZWQgYnkgUkZDIDI4MjIpLgogICAgICAgICIiIgogICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ21lc3NhZ2UnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSkKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShfbXNnLCBtZXNzYWdlLk1lc3NhZ2UpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0FyZ3VtZW50IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBNZXNzYWdlJykKICAgICAgICAjIEl0J3MgY29udmVuaWVudCB0byB1c2UgdGhpcyBiYXNlIGNsYXNzIG1ldGhvZC4gIFdlIG5lZWQgdG8gZG8gaXQKICAgICAgICAjIHRoaXMgd2F5IG9yIHdlJ2xsIGdldCBhbiBleGNlcHRpb24KICAgICAgICBtZXNzYWdlLk1lc3NhZ2UuYXR0YWNoKHNlbGYsIF9tc2cpCiAgICAgICAgIyBBbmQgYmUgc3VyZSBvdXIgZGVmYXVsdCB0eXBlIGlzIHNldCBjb3JyZWN0bHkKICAgICAgICBzZWxmLnNldF9kZWZhdWx0X3R5cGUoJ21lc3NhZ2UvcmZjODIyJykKUEsDBBQAAAAAAAIgo1YytV/LVQYAAFUGAAAXAAAAZW1haWwvbWltZS9tdWx0aXBhcnQucHkjIENvcHlyaWdodCAoQykgMjAwMi0yMDA2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCiMgQXV0aG9yOiBCYXJyeSBXYXJzYXcKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiQmFzZSBjbGFzcyBmb3IgTUlNRSBtdWx0aXBhcnQvKiB0eXBlIG1lc3NhZ2VzLiIiIgoKX19hbGxfXyA9IFsnTUlNRU11bHRpcGFydCddCgpmcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKCgoMCmNsYXNzIE1JTUVNdWx0aXBhcnQoTUlNRUJhc2UpOgogICAgIiIiQmFzZSBjbGFzcyBmb3IgTUlNRSBtdWx0aXBhcnQvKiB0eXBlIG1lc3NhZ2VzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfc3VidHlwZT0nbWl4ZWQnLCBib3VuZGFyeT1Ob25lLCBfc3VicGFydHM9Tm9uZSwKICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Tm9uZSwKICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpOgogICAgICAgICIiIkNyZWF0ZXMgYSBtdWx0aXBhcnQvKiB0eXBlIG1lc3NhZ2UuCgogICAgICAgIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBtdWx0aXBhcnQvbWl4ZWQgbWVzc2FnZSwgd2l0aCBwcm9wZXIKICAgICAgICBDb250ZW50LVR5cGUgYW5kIE1JTUUtVmVyc2lvbiBoZWFkZXJzLgoKICAgICAgICBfc3VidHlwZSBpcyB0aGUgc3VidHlwZSBvZiB0aGUgbXVsdGlwYXJ0IGNvbnRlbnQgdHlwZSwgZGVmYXVsdGluZyB0bwogICAgICAgIGBtaXhlZCcuCgogICAgICAgIGJvdW5kYXJ5IGlzIHRoZSBtdWx0aXBhcnQgYm91bmRhcnkgc3RyaW5nLiAgQnkgZGVmYXVsdCBpdCBpcwogICAgICAgIGNhbGN1bGF0ZWQgYXMgbmVlZGVkLgoKICAgICAgICBfc3VicGFydHMgaXMgYSBzZXF1ZW5jZSBvZiBpbml0aWFsIHN1YnBhcnRzIGZvciB0aGUgcGF5bG9hZC4gIEl0CiAgICAgICAgbXVzdCBiZSBhbiBpdGVyYWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0LiAgWW91IGNhbiBhbHdheXMKICAgICAgICBhdHRhY2ggbmV3IHN1YnBhcnRzIHRvIHRoZSBtZXNzYWdlIGJ5IHVzaW5nIHRoZSBhdHRhY2goKSBtZXRob2QuCgogICAgICAgIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAga2V5d29yZCBhcmd1bWVudHMgKG9yIHBhc3NlZCBpbnRvIHRoZSBfcGFyYW1zIGFyZ3VtZW50KS4KICAgICAgICAiIiIKICAgICAgICBNSU1FQmFzZS5fX2luaXRfXyhzZWxmLCAnbXVsdGlwYXJ0JywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksICoqX3BhcmFtcykKCiAgICAgICAgIyBJbml0aWFsaXNlIF9wYXlsb2FkIHRvIGFuIGVtcHR5IGxpc3QgYXMgdGhlIE1lc3NhZ2Ugc3VwZXJjbGFzcydzCiAgICAgICAgIyBpbXBsZW1lbnRhdGlvbiBvZiBpc19tdWx0aXBhcnQgYXNzdW1lcyB0aGF0IF9wYXlsb2FkIGlzIGEgbGlzdCBmb3IKICAgICAgICAjIG11bHRpcGFydCBtZXNzYWdlcy4KICAgICAgICBzZWxmLl9wYXlsb2FkID0gW10KCiAgICAgICAgaWYgX3N1YnBhcnRzOgogICAgICAgICAgICBmb3IgcCBpbiBfc3VicGFydHM6CiAgICAgICAgICAgICAgICBzZWxmLmF0dGFjaChwKQogICAgICAgIGlmIGJvdW5kYXJ5OgogICAgICAgICAgICBzZWxmLnNldF9ib3VuZGFyeShib3VuZGFyeSkKUEsDBBQAAAAAAAIgo1aJ8XNaswIAALMCAAAaAAAAZW1haWwvbWltZS9ub25tdWx0aXBhcnQucHkjIENvcHlyaWdodCAoQykgMjAwMi0yMDA2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCiMgQXV0aG9yOiBCYXJyeSBXYXJzYXcKIyBDb250YWN0OiBlbWFpbC1zaWdAcHl0aG9uLm9yZwoKIiIiQmFzZSBjbGFzcyBmb3IgTUlNRSB0eXBlIG1lc3NhZ2VzIHRoYXQgYXJlIG5vdCBtdWx0aXBhcnQuIiIiCgpfX2FsbF9fID0gWydNSU1FTm9uTXVsdGlwYXJ0J10KCmZyb20gZW1haWwgaW1wb3J0IGVycm9ycwpmcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKCgoMCmNsYXNzIE1JTUVOb25NdWx0aXBhcnQoTUlNRUJhc2UpOgogICAgIiIiQmFzZSBjbGFzcyBmb3IgTUlNRSBub24tbXVsdGlwYXJ0IHR5cGUgbWVzc2FnZXMuIiIiCgogICAgZGVmIGF0dGFjaChzZWxmLCBwYXlsb2FkKToKICAgICAgICAjIFRoZSBwdWJsaWMgQVBJIHByb2hpYml0cyBhdHRhY2hpbmcgbXVsdGlwbGUgc3VicGFydHMgdG8gTUlNRUJhc2UKICAgICAgICAjIGRlcml2ZWQgc3VidHlwZXMgc2luY2Ugbm9uZSBvZiB0aGVtIGFyZSwgYnkgZGVmaW5pdGlvbiwgb2YgY29udGVudAogICAgICAgICMgdHlwZSBtdWx0aXBhcnQvKgogICAgICAgIHJhaXNlIGVycm9ycy5NdWx0aXBhcnRDb252ZXJzaW9uRXJyb3IoCiAgICAgICAgICAgICdDYW5ub3QgYXR0YWNoIGFkZGl0aW9uYWwgc3VicGFydHMgdG8gbm9uLW11bHRpcGFydC8qJykKUEsDBBQAAAAAAAIgo1YhJ5PdnQUAAJ0FAAASAAAAZW1haWwvbWltZS90ZXh0LnB5IyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgojIEF1dGhvcjogQmFycnkgV2Fyc2F3CiMgQ29udGFjdDogZW1haWwtc2lnQHB5dGhvbi5vcmcKCiIiIkNsYXNzIHJlcHJlc2VudGluZyB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKCl9fYWxsX18gPSBbJ01JTUVUZXh0J10KCmZyb20gZW1haWwuY2hhcnNldCBpbXBvcnQgQ2hhcnNldApmcm9tIGVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0IGltcG9ydCBNSU1FTm9uTXVsdGlwYXJ0CgoKDApjbGFzcyBNSU1FVGV4dChNSU1FTm9uTXVsdGlwYXJ0KToKICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSwgKiwgcG9saWN5PU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSBhIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCgogICAgICAgIF90ZXh0IGlzIHRoZSBzdHJpbmcgZm9yIHRoaXMgbWVzc2FnZSBvYmplY3QuCgogICAgICAgIF9zdWJ0eXBlIGlzIHRoZSBNSU1FIHN1YiBjb250ZW50IHR5cGUsIGRlZmF1bHRpbmcgdG8gInBsYWluIi4KCiAgICAgICAgX2NoYXJzZXQgaXMgdGhlIGNoYXJhY3RlciBzZXQgcGFyYW1ldGVyIGFkZGVkIHRvIHRoZSBDb250ZW50LVR5cGUKICAgICAgICBoZWFkZXIuICBUaGlzIGRlZmF1bHRzIHRvICJ1cy1hc2NpaSIuICBOb3RlIHRoYXQgYXMgYSBzaWRlLWVmZmVjdCwgdGhlCiAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBoZWFkZXIgd2lsbCBhbHNvIGJlIHNldC4KICAgICAgICAiIiIKCiAgICAgICAgIyBJZiBubyBfY2hhcnNldCB3YXMgc3BlY2lmaWVkLCBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG5vbi1hc2NpaQogICAgICAgICMgY2hhcmFjdGVycyBwcmVzZW50LiBJZiBub3QsIHVzZSAndXMtYXNjaWknLCBvdGhlcndpc2UgdXNlIHV0Zi04LgogICAgICAgICMgWFhYOiBUaGlzIGNhbiBiZSByZW1vdmVkIG9uY2UgIzczMDQgaXMgZml4ZWQuCiAgICAgICAgaWYgX2NoYXJzZXQgaXMgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgX3RleHQuZW5jb2RlKCd1cy1hc2NpaScpCiAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1cy1hc2NpaScKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgIF9jaGFyc2V0ID0gJ3V0Zi04JwoKICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnsnY2hhcnNldCc6IHN0cihfY2hhcnNldCl9KQoKICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF90ZXh0LCBfY2hhcnNldCkKUEsDBBQAAAAAAAIgo1YofIPU/BYAAPwWAAAVAAAAZW5jb2RpbmdzL19faW5pdF9fLnB5IiIiIFN0YW5kYXJkICJlbmNvZGluZ3MiIFBhY2thZ2UKCiAgICBTdGFuZGFyZCBQeXRob24gZW5jb2RpbmcgbW9kdWxlcyBhcmUgc3RvcmVkIGluIHRoaXMgcGFja2FnZQogICAgZGlyZWN0b3J5LgoKICAgIENvZGVjIG1vZHVsZXMgbXVzdCBoYXZlIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gbm9ybWFsaXplZCBlbmNvZGluZwogICAgbmFtZXMgYXMgZGVmaW5lZCBpbiB0aGUgbm9ybWFsaXplX2VuY29kaW5nKCkgZnVuY3Rpb24gYmVsb3csIGUuZy4KICAgICd1dGYtOCcgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgbW9kdWxlICd1dGZfOC5weScuCgogICAgRWFjaCBjb2RlYyBtb2R1bGUgbXVzdCBleHBvcnQgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6CgogICAgKiBnZXRyZWdlbnRyeSgpIC0+IGNvZGVjcy5Db2RlY0luZm8gb2JqZWN0CiAgICBUaGUgZ2V0cmVnZW50cnkoKSBBUEkgbXVzdCByZXR1cm4gYSBDb2RlY0luZm8gb2JqZWN0IHdpdGggZW5jb2RlciwgZGVjb2RlciwKICAgIGluY3JlbWVudGFsZW5jb2RlciwgaW5jcmVtZW50YWxkZWNvZGVyLCBzdHJlYW13cml0ZXIgYW5kIHN0cmVhbXJlYWRlcgogICAgYXR0cmlidXRlcyB3aGljaCBhZGhlcmUgdG8gdGhlIFB5dGhvbiBDb2RlYyBJbnRlcmZhY2UgU3RhbmRhcmQuCgogICAgSW4gYWRkaXRpb24sIGEgbW9kdWxlIG1heSBvcHRpb25hbGx5IGFsc28gZGVmaW5lIHRoZSBmb2xsb3dpbmcKICAgIEFQSXMgd2hpY2ggYXJlIHRoZW4gdXNlZCBieSB0aGUgcGFja2FnZSdzIGNvZGVjIHNlYXJjaCBmdW5jdGlvbjoKCiAgICAqIGdldGFsaWFzZXMoKSAtPiBzZXF1ZW5jZSBvZiBlbmNvZGluZyBuYW1lIHN0cmluZ3MgdG8gdXNlIGFzIGFsaWFzZXMKCiAgICBBbGlhcyBuYW1lcyByZXR1cm5lZCBieSBnZXRhbGlhc2VzKCkgbXVzdCBiZSBub3JtYWxpemVkIGVuY29kaW5nCiAgICBuYW1lcyBhcyBkZWZpbmVkIGJ5IG5vcm1hbGl6ZV9lbmNvZGluZygpLgoKV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCgooYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKaW1wb3J0IHN5cwpmcm9tIC4gaW1wb3J0IGFsaWFzZXMKCl9jYWNoZSA9IHt9Cl91bmtub3duID0gJy0tdW5rbm93bi0tJwpfaW1wb3J0X3RhaWwgPSBbJyonXQpfYWxpYXNlcyA9IGFsaWFzZXMuYWxpYXNlcwoKY2xhc3MgQ29kZWNSZWdpc3RyeUVycm9yKExvb2t1cEVycm9yLCBTeXN0ZW1FcnJvcik6CiAgICBwYXNzCgpkZWYgbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nKToKCiAgICAiIiIgTm9ybWFsaXplIGFuIGVuY29kaW5nIG5hbWUuCgogICAgICAgIE5vcm1hbGl6YXRpb24gd29ya3MgYXMgZm9sbG93czogYWxsIG5vbi1hbHBoYW51bWVyaWMKICAgICAgICBjaGFyYWN0ZXJzIGV4Y2VwdCB0aGUgZG90IHVzZWQgZm9yIFB5dGhvbiBwYWNrYWdlIG5hbWVzIGFyZQogICAgICAgIGNvbGxhcHNlZCBhbmQgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSB1bmRlcnNjb3JlLCBlLmcuICcgIC07IycKICAgICAgICBiZWNvbWVzICdfJy4gTGVhZGluZyBhbmQgdHJhaWxpbmcgdW5kZXJzY29yZXMgYXJlIHJlbW92ZWQuCgogICAgICAgIE5vdGUgdGhhdCBlbmNvZGluZyBuYW1lcyBzaG91bGQgYmUgQVNDSUkgb25seS4KCiAgICAiIiIKICAgIGlmIGlzaW5zdGFuY2UoZW5jb2RpbmcsIGJ5dGVzKToKICAgICAgICBlbmNvZGluZyA9IHN0cihlbmNvZGluZywgImFzY2lpIikKCiAgICBjaGFycyA9IFtdCiAgICBwdW5jdCA9IEZhbHNlCiAgICBmb3IgYyBpbiBlbmNvZGluZzoKICAgICAgICBpZiBjLmlzYWxudW0oKSBvciBjID09ICcuJzoKICAgICAgICAgICAgaWYgcHVuY3QgYW5kIGNoYXJzOgogICAgICAgICAgICAgICAgY2hhcnMuYXBwZW5kKCdfJykKICAgICAgICAgICAgaWYgYy5pc2FzY2lpKCk6CiAgICAgICAgICAgICAgICBjaGFycy5hcHBlbmQoYykKICAgICAgICAgICAgcHVuY3QgPSBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHB1bmN0ID0gVHJ1ZQogICAgcmV0dXJuICcnLmpvaW4oY2hhcnMpCgpkZWYgc2VhcmNoX2Z1bmN0aW9uKGVuY29kaW5nKToKCiAgICAjIENhY2hlIGxvb2t1cAogICAgZW50cnkgPSBfY2FjaGUuZ2V0KGVuY29kaW5nLCBfdW5rbm93bikKICAgIGlmIGVudHJ5IGlzIG5vdCBfdW5rbm93bjoKICAgICAgICByZXR1cm4gZW50cnkKCiAgICAjIEltcG9ydCB0aGUgbW9kdWxlOgogICAgIwogICAgIyBGaXJzdCB0cnkgdG8gZmluZCBhbiBhbGlhcyBmb3IgdGhlIG5vcm1hbGl6ZWQgZW5jb2RpbmcKICAgICMgbmFtZSBhbmQgbG9va3VwIHRoZSBtb2R1bGUgdXNpbmcgdGhlIGFsaWFzZWQgbmFtZSwgdGhlbiB0cnkgdG8KICAgICMgbG9va3VwIHRoZSBtb2R1bGUgdXNpbmcgdGhlIHN0YW5kYXJkIGltcG9ydCBzY2hlbWUsIGkuZS4gZmlyc3QKICAgICMgdHJ5IGluIHRoZSBlbmNvZGluZ3MgcGFja2FnZSwgdGhlbiBhdCB0b3AtbGV2ZWwuCiAgICAjCiAgICBub3JtX2VuY29kaW5nID0gbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nKQogICAgYWxpYXNlZF9lbmNvZGluZyA9IF9hbGlhc2VzLmdldChub3JtX2VuY29kaW5nKSBvciBcCiAgICAgICAgICAgICAgICAgICAgICAgX2FsaWFzZXMuZ2V0KG5vcm1fZW5jb2RpbmcucmVwbGFjZSgnLicsICdfJykpCiAgICBpZiBhbGlhc2VkX2VuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgIG1vZG5hbWVzID0gW2FsaWFzZWRfZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgbm9ybV9lbmNvZGluZ10KICAgIGVsc2U6CiAgICAgICAgbW9kbmFtZXMgPSBbbm9ybV9lbmNvZGluZ10KICAgIGZvciBtb2RuYW1lIGluIG1vZG5hbWVzOgogICAgICAgIGlmIG5vdCBtb2RuYW1lIG9yICcuJyBpbiBtb2RuYW1lOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRyeToKICAgICAgICAgICAgIyBJbXBvcnQgaXMgYWJzb2x1dGUgdG8gcHJldmVudCB0aGUgcG9zc2libHkgbWFsaWNpb3VzIGltcG9ydCBvZiBhCiAgICAgICAgICAgICMgbW9kdWxlIHdpdGggc2lkZS1lZmZlY3RzIHRoYXQgaXMgbm90IGluIHRoZSAnZW5jb2RpbmdzJyBwYWNrYWdlLgogICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCdlbmNvZGluZ3MuJyArIG1vZG5hbWUsIGZyb21saXN0PV9pbXBvcnRfdGFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0wKQogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBtYXkgb2NjdXIgYmVjYXVzZSAnZW5jb2RpbmdzLihtb2RuYW1lKScgZG9lcyBub3QgZXhpc3QsCiAgICAgICAgICAgICMgb3IgYmVjYXVzZSBpdCBpbXBvcnRzIGEgbmFtZSB0aGF0IGRvZXMgbm90IGV4aXN0IChzZWUgbWJjcyBhbmQgb2VtKQogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYnJlYWsKICAgIGVsc2U6CiAgICAgICAgbW9kID0gTm9uZQoKICAgIHRyeToKICAgICAgICBnZXRyZWdlbnRyeSA9IG1vZC5nZXRyZWdlbnRyeQogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICMgTm90IGEgY29kZWMgbW9kdWxlCiAgICAgICAgbW9kID0gTm9uZQoKICAgIGlmIG1vZCBpcyBOb25lOgogICAgICAgICMgQ2FjaGUgbWlzc2VzCiAgICAgICAgX2NhY2hlW2VuY29kaW5nXSA9IE5vbmUKICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgTm93IGFzayB0aGUgbW9kdWxlIGZvciB0aGUgcmVnaXN0cnkgZW50cnkKICAgIGVudHJ5ID0gZ2V0cmVnZW50cnkoKQogICAgaWYgbm90IGlzaW5zdGFuY2UoZW50cnksIGNvZGVjcy5Db2RlY0luZm8pOgogICAgICAgIGlmIG5vdCA0IDw9IGxlbihlbnRyeSkgPD0gNzoKICAgICAgICAgICAgcmFpc2UgQ29kZWNSZWdpc3RyeUVycm9yKCdtb2R1bGUgIiVzIiAoJXMpIGZhaWxlZCB0byByZWdpc3RlcicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG1vZC5fX25hbWVfXywgbW9kLl9fZmlsZV9fKSkKICAgICAgICBpZiBub3QgY2FsbGFibGUoZW50cnlbMF0pIG9yIG5vdCBjYWxsYWJsZShlbnRyeVsxXSkgb3IgXAogICAgICAgICAgIChlbnRyeVsyXSBpcyBub3QgTm9uZSBhbmQgbm90IGNhbGxhYmxlKGVudHJ5WzJdKSkgb3IgXAogICAgICAgICAgIChlbnRyeVszXSBpcyBub3QgTm9uZSBhbmQgbm90IGNhbGxhYmxlKGVudHJ5WzNdKSkgb3IgXAogICAgICAgICAgIChsZW4oZW50cnkpID4gNCBhbmQgZW50cnlbNF0gaXMgbm90IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShlbnRyeVs0XSkpIG9yIFwKICAgICAgICAgICAobGVuKGVudHJ5KSA+IDUgYW5kIGVudHJ5WzVdIGlzIG5vdCBOb25lIGFuZCBub3QgY2FsbGFibGUoZW50cnlbNV0pKToKICAgICAgICAgICAgcmFpc2UgQ29kZWNSZWdpc3RyeUVycm9yKCdpbmNvbXBhdGlibGUgY29kZWNzIGluIG1vZHVsZSAiJXMiICglcyknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChtb2QuX19uYW1lX18sIG1vZC5fX2ZpbGVfXykpCiAgICAgICAgaWYgbGVuKGVudHJ5KTw3IG9yIGVudHJ5WzZdIGlzIE5vbmU6CiAgICAgICAgICAgIGVudHJ5ICs9IChOb25lLCkqKDYtbGVuKGVudHJ5KSkgKyAobW9kLl9fbmFtZV9fLnNwbGl0KCIuIiwgMSlbMV0sKQogICAgICAgIGVudHJ5ID0gY29kZWNzLkNvZGVjSW5mbygqZW50cnkpCgogICAgIyBDYWNoZSB0aGUgY29kZWMgcmVnaXN0cnkgZW50cnkKICAgIF9jYWNoZVtlbmNvZGluZ10gPSBlbnRyeQoKICAgICMgUmVnaXN0ZXIgaXRzIGFsaWFzZXMgKHdpdGhvdXQgb3ZlcndyaXRpbmcgcHJldmlvdXNseSByZWdpc3RlcmVkCiAgICAjIGFsaWFzZXMpCiAgICB0cnk6CiAgICAgICAgY29kZWNhbGlhc2VzID0gbW9kLmdldGFsaWFzZXMoKQogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgZm9yIGFsaWFzIGluIGNvZGVjYWxpYXNlczoKICAgICAgICAgICAgaWYgYWxpYXMgbm90IGluIF9hbGlhc2VzOgogICAgICAgICAgICAgICAgX2FsaWFzZXNbYWxpYXNdID0gbW9kbmFtZQoKICAgICMgUmV0dXJuIHRoZSByZWdpc3RyeSBlbnRyeQogICAgcmV0dXJuIGVudHJ5CgojIFJlZ2lzdGVyIHRoZSBzZWFyY2hfZnVuY3Rpb24gaW4gdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeQpjb2RlY3MucmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKQoKaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAjIGJwby02NzE2NjYsIGJwby00NjY2ODogSWYgUHl0aG9uIGRvZXMgbm90IGltcGxlbWVudCBhIGNvZGVjIGZvciBjdXJyZW50CiAgICAjIFdpbmRvd3MgQU5TSSBjb2RlIHBhZ2UsIHVzZSB0aGUgIm1iY3MiIGNvZGVjIGluc3RlYWQ6CiAgICAjIFdpZGVDaGFyVG9NdWx0aUJ5dGUoKSBhbmQgTXVsdGlCeXRlVG9XaWRlQ2hhcigpIGZ1bmN0aW9ucyB3aXRoIENQX0FDUC4KICAgICMgUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgY3VzdG9tIGNvZGUgcGFnZXMuCiAgICBkZWYgX2FsaWFzX21iY3MoZW5jb2RpbmcpOgogICAgICAgIHRyeToKICAgICAgICAgICAgaW1wb3J0IF93aW5hcGkKICAgICAgICAgICAgYW5zaV9jb2RlX3BhZ2UgPSAiY3AlcyIgJSBfd2luYXBpLkdldEFDUCgpCiAgICAgICAgICAgIGlmIGVuY29kaW5nID09IGFuc2lfY29kZV9wYWdlOgogICAgICAgICAgICAgICAgaW1wb3J0IGVuY29kaW5ncy5tYmNzCiAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmdzLm1iY3MuZ2V0cmVnZW50cnkoKQogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIyBJbXBvcnRzIG1heSBmYWlsIHdoaWxlIHdlIGFyZSBzaHV0dGluZyBkb3duCiAgICAgICAgICAgIHBhc3MKCiAgICBjb2RlY3MucmVnaXN0ZXIoX2FsaWFzX21iY3MpClBLAwQUAAAAAAACIKNWvzzhGj09AAA9PQAAFAAAAGVuY29kaW5ncy9hbGlhc2VzLnB5IiIiIEVuY29kaW5nIEFsaWFzZXMgU3VwcG9ydAoKICAgIFRoaXMgbW9kdWxlIGlzIHVzZWQgYnkgdGhlIGVuY29kaW5ncyBwYWNrYWdlIHNlYXJjaCBmdW5jdGlvbiB0bwogICAgbWFwIGVuY29kaW5ncyBuYW1lcyB0byBtb2R1bGUgbmFtZXMuCgogICAgTm90ZSB0aGF0IHRoZSBzZWFyY2ggZnVuY3Rpb24gbm9ybWFsaXplcyB0aGUgZW5jb2RpbmcgbmFtZXMgYmVmb3JlCiAgICBkb2luZyB0aGUgbG9va3VwLCBzbyB0aGUgbWFwcGluZyB3aWxsIGhhdmUgdG8gbWFwIG5vcm1hbGl6ZWQKICAgIGVuY29kaW5nIG5hbWVzIHRvIG1vZHVsZSBuYW1lcy4KCiAgICBDb250ZW50czoKCiAgICAgICAgVGhlIGZvbGxvd2luZyBhbGlhc2VzIGRpY3Rpb25hcnkgY29udGFpbnMgbWFwcGluZ3Mgb2YgYWxsIElBTkEKICAgICAgICBjaGFyYWN0ZXIgc2V0IG5hbWVzIGZvciB3aGljaCB0aGUgUHl0aG9uIGNvcmUgbGlicmFyeSBwcm92aWRlcwogICAgICAgIGNvZGVjcy4gSW4gYWRkaXRpb24gdG8gdGhlc2UsIGEgZmV3IFB5dGhvbiBzcGVjaWZpYyBjb2RlYwogICAgICAgIGFsaWFzZXMgaGF2ZSBhbHNvIGJlZW4gYWRkZWQuCgoiIiIKYWxpYXNlcyA9IHsKCiAgICAjIFBsZWFzZSBrZWVwIHRoaXMgbGlzdCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYnkgdmFsdWUgIQoKICAgICMgYXNjaWkgY29kZWMKICAgICc2NDYnICAgICAgICAgICAgICAgIDogJ2FzY2lpJywKICAgICdhbnNpX3gzLjRfMTk2OCcgICAgIDogJ2FzY2lpJywKICAgICdhbnNpX3gzXzRfMTk2OCcgICAgIDogJ2FzY2lpJywgIyBzb21lIGVtYWlsIGhlYWRlcnMgdXNlIHRoaXMgbm9uLXN0YW5kYXJkIG5hbWUKICAgICdhbnNpX3gzLjRfMTk4NicgICAgIDogJ2FzY2lpJywKICAgICdjcDM2NycgICAgICAgICAgICAgIDogJ2FzY2lpJywKICAgICdjc2FzY2lpJyAgICAgICAgICAgIDogJ2FzY2lpJywKICAgICdpYm0zNjcnICAgICAgICAgICAgIDogJ2FzY2lpJywKICAgICdpc282NDZfdXMnICAgICAgICAgIDogJ2FzY2lpJywKICAgICdpc29fNjQ2Lmlydl8xOTkxJyAgIDogJ2FzY2lpJywKICAgICdpc29faXJfNicgICAgICAgICAgIDogJ2FzY2lpJywKICAgICd1cycgICAgICAgICAgICAgICAgIDogJ2FzY2lpJywKICAgICd1c19hc2NpaScgICAgICAgICAgIDogJ2FzY2lpJywKCiAgICAjIGJhc2U2NF9jb2RlYyBjb2RlYwogICAgJ2Jhc2U2NCcgICAgICAgICAgICAgOiAnYmFzZTY0X2NvZGVjJywKICAgICdiYXNlXzY0JyAgICAgICAgICAgIDogJ2Jhc2U2NF9jb2RlYycsCgogICAgIyBiaWc1IGNvZGVjCiAgICAnYmlnNV90dycgICAgICAgICAgICA6ICdiaWc1JywKICAgICdjc2JpZzUnICAgICAgICAgICAgIDogJ2JpZzUnLAoKICAgICMgYmlnNWhrc2NzIGNvZGVjCiAgICAnYmlnNV9oa3NjcycgICAgICAgICA6ICdiaWc1aGtzY3MnLAogICAgJ2hrc2NzJyAgICAgICAgICAgICAgOiAnYmlnNWhrc2NzJywKCiAgICAjIGJ6Ml9jb2RlYyBjb2RlYwogICAgJ2J6MicgICAgICAgICAgICAgICAgOiAnYnoyX2NvZGVjJywKCiAgICAjIGNwMDM3IGNvZGVjCiAgICAnMDM3JyAgICAgICAgICAgICAgICA6ICdjcDAzNycsCiAgICAnY3NpYm0wMzcnICAgICAgICAgICA6ICdjcDAzNycsCiAgICAnZWJjZGljX2NwX2NhJyAgICAgICA6ICdjcDAzNycsCiAgICAnZWJjZGljX2NwX25sJyAgICAgICA6ICdjcDAzNycsCiAgICAnZWJjZGljX2NwX3VzJyAgICAgICA6ICdjcDAzNycsCiAgICAnZWJjZGljX2NwX3d0JyAgICAgICA6ICdjcDAzNycsCiAgICAnaWJtMDM3JyAgICAgICAgICAgICA6ICdjcDAzNycsCiAgICAnaWJtMDM5JyAgICAgICAgICAgICA6ICdjcDAzNycsCgogICAgIyBjcDEwMjYgY29kZWMKICAgICcxMDI2JyAgICAgICAgICAgICAgIDogJ2NwMTAyNicsCiAgICAnY3NpYm0xMDI2JyAgICAgICAgICA6ICdjcDEwMjYnLAogICAgJ2libTEwMjYnICAgICAgICAgICAgOiAnY3AxMDI2JywKCiAgICAjIGNwMTEyNSBjb2RlYwogICAgJzExMjUnICAgICAgICAgICAgICAgIDogJ2NwMTEyNScsCiAgICAnaWJtMTEyNScgICAgICAgICAgICAgOiAnY3AxMTI1JywKICAgICdjcDg2NnUnICAgICAgICAgICAgICA6ICdjcDExMjUnLAogICAgJ3J1c2NpaScgICAgICAgICAgICAgIDogJ2NwMTEyNScsCgogICAgIyBjcDExNDAgY29kZWMKICAgICcxMTQwJyAgICAgICAgICAgICAgIDogJ2NwMTE0MCcsCiAgICAnaWJtMTE0MCcgICAgICAgICAgICA6ICdjcDExNDAnLAoKICAgICMgY3AxMjUwIGNvZGVjCiAgICAnMTI1MCcgICAgICAgICAgICAgICA6ICdjcDEyNTAnLAogICAgJ3dpbmRvd3NfMTI1MCcgICAgICAgOiAnY3AxMjUwJywKCiAgICAjIGNwMTI1MSBjb2RlYwogICAgJzEyNTEnICAgICAgICAgICAgICAgOiAnY3AxMjUxJywKICAgICd3aW5kb3dzXzEyNTEnICAgICAgIDogJ2NwMTI1MScsCgogICAgIyBjcDEyNTIgY29kZWMKICAgICcxMjUyJyAgICAgICAgICAgICAgIDogJ2NwMTI1MicsCiAgICAnd2luZG93c18xMjUyJyAgICAgICA6ICdjcDEyNTInLAoKICAgICMgY3AxMjUzIGNvZGVjCiAgICAnMTI1MycgICAgICAgICAgICAgICA6ICdjcDEyNTMnLAogICAgJ3dpbmRvd3NfMTI1MycgICAgICAgOiAnY3AxMjUzJywKCiAgICAjIGNwMTI1NCBjb2RlYwogICAgJzEyNTQnICAgICAgICAgICAgICAgOiAnY3AxMjU0JywKICAgICd3aW5kb3dzXzEyNTQnICAgICAgIDogJ2NwMTI1NCcsCgogICAgIyBjcDEyNTUgY29kZWMKICAgICcxMjU1JyAgICAgICAgICAgICAgIDogJ2NwMTI1NScsCiAgICAnd2luZG93c18xMjU1JyAgICAgICA6ICdjcDEyNTUnLAoKICAgICMgY3AxMjU2IGNvZGVjCiAgICAnMTI1NicgICAgICAgICAgICAgICA6ICdjcDEyNTYnLAogICAgJ3dpbmRvd3NfMTI1NicgICAgICAgOiAnY3AxMjU2JywKCiAgICAjIGNwMTI1NyBjb2RlYwogICAgJzEyNTcnICAgICAgICAgICAgICAgOiAnY3AxMjU3JywKICAgICd3aW5kb3dzXzEyNTcnICAgICAgIDogJ2NwMTI1NycsCgogICAgIyBjcDEyNTggY29kZWMKICAgICcxMjU4JyAgICAgICAgICAgICAgIDogJ2NwMTI1OCcsCiAgICAnd2luZG93c18xMjU4JyAgICAgICA6ICdjcDEyNTgnLAoKICAgICMgY3AyNzMgY29kZWMKICAgICcyNzMnICAgICAgICAgICAgICAgIDogJ2NwMjczJywKICAgICdpYm0yNzMnICAgICAgICAgICAgIDogJ2NwMjczJywKICAgICdjc2libTI3MycgICAgICAgICAgIDogJ2NwMjczJywKCiAgICAjIGNwNDI0IGNvZGVjCiAgICAnNDI0JyAgICAgICAgICAgICAgICA6ICdjcDQyNCcsCiAgICAnY3NpYm00MjQnICAgICAgICAgICA6ICdjcDQyNCcsCiAgICAnZWJjZGljX2NwX2hlJyAgICAgICA6ICdjcDQyNCcsCiAgICAnaWJtNDI0JyAgICAgICAgICAgICA6ICdjcDQyNCcsCgogICAgIyBjcDQzNyBjb2RlYwogICAgJzQzNycgICAgICAgICAgICAgICAgOiAnY3A0MzcnLAogICAgJ2NzcGM4Y29kZXBhZ2U0MzcnICAgOiAnY3A0MzcnLAogICAgJ2libTQzNycgICAgICAgICAgICAgOiAnY3A0MzcnLAoKICAgICMgY3A1MDAgY29kZWMKICAgICc1MDAnICAgICAgICAgICAgICAgIDogJ2NwNTAwJywKICAgICdjc2libTUwMCcgICAgICAgICAgIDogJ2NwNTAwJywKICAgICdlYmNkaWNfY3BfYmUnICAgICAgIDogJ2NwNTAwJywKICAgICdlYmNkaWNfY3BfY2gnICAgICAgIDogJ2NwNTAwJywKICAgICdpYm01MDAnICAgICAgICAgICAgIDogJ2NwNTAwJywKCiAgICAjIGNwNzc1IGNvZGVjCiAgICAnNzc1JyAgICAgICAgICAgICAgICA6ICdjcDc3NScsCiAgICAnY3NwYzc3NWJhbHRpYycgICAgICA6ICdjcDc3NScsCiAgICAnaWJtNzc1JyAgICAgICAgICAgICA6ICdjcDc3NScsCgogICAgIyBjcDg1MCBjb2RlYwogICAgJzg1MCcgICAgICAgICAgICAgICAgOiAnY3A4NTAnLAogICAgJ2NzcGM4NTBtdWx0aWxpbmd1YWwnIDogJ2NwODUwJywKICAgICdpYm04NTAnICAgICAgICAgICAgIDogJ2NwODUwJywKCiAgICAjIGNwODUyIGNvZGVjCiAgICAnODUyJyAgICAgICAgICAgICAgICA6ICdjcDg1MicsCiAgICAnY3NwY3A4NTInICAgICAgICAgICA6ICdjcDg1MicsCiAgICAnaWJtODUyJyAgICAgICAgICAgICA6ICdjcDg1MicsCgogICAgIyBjcDg1NSBjb2RlYwogICAgJzg1NScgICAgICAgICAgICAgICAgOiAnY3A4NTUnLAogICAgJ2NzaWJtODU1JyAgICAgICAgICAgOiAnY3A4NTUnLAogICAgJ2libTg1NScgICAgICAgICAgICAgOiAnY3A4NTUnLAoKICAgICMgY3A4NTcgY29kZWMKICAgICc4NTcnICAgICAgICAgICAgICAgIDogJ2NwODU3JywKICAgICdjc2libTg1NycgICAgICAgICAgIDogJ2NwODU3JywKICAgICdpYm04NTcnICAgICAgICAgICAgIDogJ2NwODU3JywKCiAgICAjIGNwODU4IGNvZGVjCiAgICAnODU4JyAgICAgICAgICAgICAgICA6ICdjcDg1OCcsCiAgICAnY3NpYm04NTgnICAgICAgICAgICA6ICdjcDg1OCcsCiAgICAnaWJtODU4JyAgICAgICAgICAgICA6ICdjcDg1OCcsCgogICAgIyBjcDg2MCBjb2RlYwogICAgJzg2MCcgICAgICAgICAgICAgICAgOiAnY3A4NjAnLAogICAgJ2NzaWJtODYwJyAgICAgICAgICAgOiAnY3A4NjAnLAogICAgJ2libTg2MCcgICAgICAgICAgICAgOiAnY3A4NjAnLAoKICAgICMgY3A4NjEgY29kZWMKICAgICc4NjEnICAgICAgICAgICAgICAgIDogJ2NwODYxJywKICAgICdjcF9pcycgICAgICAgICAgICAgIDogJ2NwODYxJywKICAgICdjc2libTg2MScgICAgICAgICAgIDogJ2NwODYxJywKICAgICdpYm04NjEnICAgICAgICAgICAgIDogJ2NwODYxJywKCiAgICAjIGNwODYyIGNvZGVjCiAgICAnODYyJyAgICAgICAgICAgICAgICA6ICdjcDg2MicsCiAgICAnY3NwYzg2MmxhdGluaGVicmV3JyA6ICdjcDg2MicsCiAgICAnaWJtODYyJyAgICAgICAgICAgICA6ICdjcDg2MicsCgogICAgIyBjcDg2MyBjb2RlYwogICAgJzg2MycgICAgICAgICAgICAgICAgOiAnY3A4NjMnLAogICAgJ2NzaWJtODYzJyAgICAgICAgICAgOiAnY3A4NjMnLAogICAgJ2libTg2MycgICAgICAgICAgICAgOiAnY3A4NjMnLAoKICAgICMgY3A4NjQgY29kZWMKICAgICc4NjQnICAgICAgICAgICAgICAgIDogJ2NwODY0JywKICAgICdjc2libTg2NCcgICAgICAgICAgIDogJ2NwODY0JywKICAgICdpYm04NjQnICAgICAgICAgICAgIDogJ2NwODY0JywKCiAgICAjIGNwODY1IGNvZGVjCiAgICAnODY1JyAgICAgICAgICAgICAgICA6ICdjcDg2NScsCiAgICAnY3NpYm04NjUnICAgICAgICAgICA6ICdjcDg2NScsCiAgICAnaWJtODY1JyAgICAgICAgICAgICA6ICdjcDg2NScsCgogICAgIyBjcDg2NiBjb2RlYwogICAgJzg2NicgICAgICAgICAgICAgICAgOiAnY3A4NjYnLAogICAgJ2NzaWJtODY2JyAgICAgICAgICAgOiAnY3A4NjYnLAogICAgJ2libTg2NicgICAgICAgICAgICAgOiAnY3A4NjYnLAoKICAgICMgY3A4NjkgY29kZWMKICAgICc4NjknICAgICAgICAgICAgICAgIDogJ2NwODY5JywKICAgICdjcF9ncicgICAgICAgICAgICAgIDogJ2NwODY5JywKICAgICdjc2libTg2OScgICAgICAgICAgIDogJ2NwODY5JywKICAgICdpYm04NjknICAgICAgICAgICAgIDogJ2NwODY5JywKCiAgICAjIGNwOTMyIGNvZGVjCiAgICAnOTMyJyAgICAgICAgICAgICAgICA6ICdjcDkzMicsCiAgICAnbXM5MzInICAgICAgICAgICAgICA6ICdjcDkzMicsCiAgICAnbXNrYW5qaScgICAgICAgICAgICA6ICdjcDkzMicsCiAgICAnbXNfa2FuamknICAgICAgICAgICA6ICdjcDkzMicsCgogICAgIyBjcDk0OSBjb2RlYwogICAgJzk0OScgICAgICAgICAgICAgICAgOiAnY3A5NDknLAogICAgJ21zOTQ5JyAgICAgICAgICAgICAgOiAnY3A5NDknLAogICAgJ3VoYycgICAgICAgICAgICAgICAgOiAnY3A5NDknLAoKICAgICMgY3A5NTAgY29kZWMKICAgICc5NTAnICAgICAgICAgICAgICAgIDogJ2NwOTUwJywKICAgICdtczk1MCcgICAgICAgICAgICAgIDogJ2NwOTUwJywKCiAgICAjIGV1Y19qaXNfMjAwNCBjb2RlYwogICAgJ2ppc3gwMjEzJyAgICAgICAgICAgOiAnZXVjX2ppc18yMDA0JywKICAgICdldWNqaXMyMDA0JyAgICAgICAgIDogJ2V1Y19qaXNfMjAwNCcsCiAgICAnZXVjX2ppczIwMDQnICAgICAgICA6ICdldWNfamlzXzIwMDQnLAoKICAgICMgZXVjX2ppc3gwMjEzIGNvZGVjCiAgICAnZXVjamlzeDAyMTMnICAgICAgICA6ICdldWNfamlzeDAyMTMnLAoKICAgICMgZXVjX2pwIGNvZGVjCiAgICAnZXVjanAnICAgICAgICAgICAgICA6ICdldWNfanAnLAogICAgJ3VqaXMnICAgICAgICAgICAgICAgOiAnZXVjX2pwJywKICAgICd1X2ppcycgICAgICAgICAgICAgIDogJ2V1Y19qcCcsCgogICAgIyBldWNfa3IgY29kZWMKICAgICdldWNrcicgICAgICAgICAgICAgIDogJ2V1Y19rcicsCiAgICAna29yZWFuJyAgICAgICAgICAgICA6ICdldWNfa3InLAogICAgJ2tzYzU2MDEnICAgICAgICAgICAgOiAnZXVjX2tyJywKICAgICdrc19jXzU2MDEnICAgICAgICAgIDogJ2V1Y19rcicsCiAgICAna3NfY181NjAxXzE5ODcnICAgICA6ICdldWNfa3InLAogICAgJ2tzeDEwMDEnICAgICAgICAgICAgOiAnZXVjX2tyJywKICAgICdrc194XzEwMDEnICAgICAgICAgIDogJ2V1Y19rcicsCgogICAgIyBnYjE4MDMwIGNvZGVjCiAgICAnZ2IxODAzMF8yMDAwJyAgICAgICA6ICdnYjE4MDMwJywKCiAgICAjIGdiMjMxMiBjb2RlYwogICAgJ2NoaW5lc2UnICAgICAgICAgICAgOiAnZ2IyMzEyJywKICAgICdjc2lzbzU4Z2IyMzEyODAnICAgIDogJ2diMjMxMicsCiAgICAnZXVjX2NuJyAgICAgICAgICAgICA6ICdnYjIzMTInLAogICAgJ2V1Y2NuJyAgICAgICAgICAgICAgOiAnZ2IyMzEyJywKICAgICdldWNnYjIzMTJfY24nICAgICAgIDogJ2diMjMxMicsCiAgICAnZ2IyMzEyXzE5ODAnICAgICAgICA6ICdnYjIzMTInLAogICAgJ2diMjMxMl84MCcgICAgICAgICAgOiAnZ2IyMzEyJywKICAgICdpc29faXJfNTgnICAgICAgICAgIDogJ2diMjMxMicsCgogICAgIyBnYmsgY29kZWMKICAgICc5MzYnICAgICAgICAgICAgICAgIDogJ2diaycsCiAgICAnY3A5MzYnICAgICAgICAgICAgICA6ICdnYmsnLAogICAgJ21zOTM2JyAgICAgICAgICAgICAgOiAnZ2JrJywKCiAgICAjIGhleF9jb2RlYyBjb2RlYwogICAgJ2hleCcgICAgICAgICAgICAgICAgOiAnaGV4X2NvZGVjJywKCiAgICAjIGhwX3JvbWFuOCBjb2RlYwogICAgJ3JvbWFuOCcgICAgICAgICAgICAgOiAnaHBfcm9tYW44JywKICAgICdyOCcgICAgICAgICAgICAgICAgIDogJ2hwX3JvbWFuOCcsCiAgICAnY3NIUFJvbWFuOCcgICAgICAgICA6ICdocF9yb21hbjgnLAogICAgJ2NwMTA1MScgICAgICAgICAgICAgOiAnaHBfcm9tYW44JywKICAgICdpYm0xMDUxJyAgICAgICAgICAgIDogJ2hwX3JvbWFuOCcsCgogICAgIyBoeiBjb2RlYwogICAgJ2h6Z2InICAgICAgICAgICAgICAgOiAnaHonLAogICAgJ2h6X2diJyAgICAgICAgICAgICAgOiAnaHonLAogICAgJ2h6X2diXzIzMTInICAgICAgICAgOiAnaHonLAoKICAgICMgaXNvMjAyMl9qcCBjb2RlYwogICAgJ2NzaXNvMjAyMmpwJyAgICAgICAgOiAnaXNvMjAyMl9qcCcsCiAgICAnaXNvMjAyMmpwJyAgICAgICAgICA6ICdpc28yMDIyX2pwJywKICAgICdpc29fMjAyMl9qcCcgICAgICAgIDogJ2lzbzIwMjJfanAnLAoKICAgICMgaXNvMjAyMl9qcF8xIGNvZGVjCiAgICAnaXNvMjAyMmpwXzEnICAgICAgICA6ICdpc28yMDIyX2pwXzEnLAogICAgJ2lzb18yMDIyX2pwXzEnICAgICAgOiAnaXNvMjAyMl9qcF8xJywKCiAgICAjIGlzbzIwMjJfanBfMiBjb2RlYwogICAgJ2lzbzIwMjJqcF8yJyAgICAgICAgOiAnaXNvMjAyMl9qcF8yJywKICAgICdpc29fMjAyMl9qcF8yJyAgICAgIDogJ2lzbzIwMjJfanBfMicsCgogICAgIyBpc28yMDIyX2pwXzIwMDQgY29kZWMKICAgICdpc29fMjAyMl9qcF8yMDA0JyAgIDogJ2lzbzIwMjJfanBfMjAwNCcsCiAgICAnaXNvMjAyMmpwXzIwMDQnICAgICA6ICdpc28yMDIyX2pwXzIwMDQnLAoKICAgICMgaXNvMjAyMl9qcF8zIGNvZGVjCiAgICAnaXNvMjAyMmpwXzMnICAgICAgICA6ICdpc28yMDIyX2pwXzMnLAogICAgJ2lzb18yMDIyX2pwXzMnICAgICAgOiAnaXNvMjAyMl9qcF8zJywKCiAgICAjIGlzbzIwMjJfanBfZXh0IGNvZGVjCiAgICAnaXNvMjAyMmpwX2V4dCcgICAgICA6ICdpc28yMDIyX2pwX2V4dCcsCiAgICAnaXNvXzIwMjJfanBfZXh0JyAgICA6ICdpc28yMDIyX2pwX2V4dCcsCgogICAgIyBpc28yMDIyX2tyIGNvZGVjCiAgICAnY3Npc28yMDIya3InICAgICAgICA6ICdpc28yMDIyX2tyJywKICAgICdpc28yMDIya3InICAgICAgICAgIDogJ2lzbzIwMjJfa3InLAogICAgJ2lzb18yMDIyX2tyJyAgICAgICAgOiAnaXNvMjAyMl9rcicsCgogICAgIyBpc284ODU5XzEwIGNvZGVjCiAgICAnY3Npc29sYXRpbjYnICAgICAgICA6ICdpc284ODU5XzEwJywKICAgICdpc29fODg1OV8xMCcgICAgICAgIDogJ2lzbzg4NTlfMTAnLAogICAgJ2lzb184ODU5XzEwXzE5OTInICAgOiAnaXNvODg1OV8xMCcsCiAgICAnaXNvX2lyXzE1NycgICAgICAgICA6ICdpc284ODU5XzEwJywKICAgICdsNicgICAgICAgICAgICAgICAgIDogJ2lzbzg4NTlfMTAnLAogICAgJ2xhdGluNicgICAgICAgICAgICAgOiAnaXNvODg1OV8xMCcsCgogICAgIyBpc284ODU5XzExIGNvZGVjCiAgICAndGhhaScgICAgICAgICAgICAgICA6ICdpc284ODU5XzExJywKICAgICdpc29fODg1OV8xMScgICAgICAgIDogJ2lzbzg4NTlfMTEnLAogICAgJ2lzb184ODU5XzExXzIwMDEnICAgOiAnaXNvODg1OV8xMScsCgogICAgIyBpc284ODU5XzEzIGNvZGVjCiAgICAnaXNvXzg4NTlfMTMnICAgICAgICA6ICdpc284ODU5XzEzJywKICAgICdsNycgICAgICAgICAgICAgICAgIDogJ2lzbzg4NTlfMTMnLAogICAgJ2xhdGluNycgICAgICAgICAgICAgOiAnaXNvODg1OV8xMycsCgogICAgIyBpc284ODU5XzE0IGNvZGVjCiAgICAnaXNvXzg4NTlfMTQnICAgICAgICA6ICdpc284ODU5XzE0JywKICAgICdpc29fODg1OV8xNF8xOTk4JyAgIDogJ2lzbzg4NTlfMTQnLAogICAgJ2lzb19jZWx0aWMnICAgICAgICAgOiAnaXNvODg1OV8xNCcsCiAgICAnaXNvX2lyXzE5OScgICAgICAgICA6ICdpc284ODU5XzE0JywKICAgICdsOCcgICAgICAgICAgICAgICAgIDogJ2lzbzg4NTlfMTQnLAogICAgJ2xhdGluOCcgICAgICAgICAgICAgOiAnaXNvODg1OV8xNCcsCgogICAgIyBpc284ODU5XzE1IGNvZGVjCiAgICAnaXNvXzg4NTlfMTUnICAgICAgICA6ICdpc284ODU5XzE1JywKICAgICdsOScgICAgICAgICAgICAgICAgIDogJ2lzbzg4NTlfMTUnLAogICAgJ2xhdGluOScgICAgICAgICAgICAgOiAnaXNvODg1OV8xNScsCgogICAgIyBpc284ODU5XzE2IGNvZGVjCiAgICAnaXNvXzg4NTlfMTYnICAgICAgICA6ICdpc284ODU5XzE2JywKICAgICdpc29fODg1OV8xNl8yMDAxJyAgIDogJ2lzbzg4NTlfMTYnLAogICAgJ2lzb19pcl8yMjYnICAgICAgICAgOiAnaXNvODg1OV8xNicsCiAgICAnbDEwJyAgICAgICAgICAgICAgICA6ICdpc284ODU5XzE2JywKICAgICdsYXRpbjEwJyAgICAgICAgICAgIDogJ2lzbzg4NTlfMTYnLAoKICAgICMgaXNvODg1OV8yIGNvZGVjCiAgICAnY3Npc29sYXRpbjInICAgICAgICA6ICdpc284ODU5XzInLAogICAgJ2lzb184ODU5XzInICAgICAgICAgOiAnaXNvODg1OV8yJywKICAgICdpc29fODg1OV8yXzE5ODcnICAgIDogJ2lzbzg4NTlfMicsCiAgICAnaXNvX2lyXzEwMScgICAgICAgICA6ICdpc284ODU5XzInLAogICAgJ2wyJyAgICAgICAgICAgICAgICAgOiAnaXNvODg1OV8yJywKICAgICdsYXRpbjInICAgICAgICAgICAgIDogJ2lzbzg4NTlfMicsCgogICAgIyBpc284ODU5XzMgY29kZWMKICAgICdjc2lzb2xhdGluMycgICAgICAgIDogJ2lzbzg4NTlfMycsCiAgICAnaXNvXzg4NTlfMycgICAgICAgICA6ICdpc284ODU5XzMnLAogICAgJ2lzb184ODU5XzNfMTk4OCcgICAgOiAnaXNvODg1OV8zJywKICAgICdpc29faXJfMTA5JyAgICAgICAgIDogJ2lzbzg4NTlfMycsCiAgICAnbDMnICAgICAgICAgICAgICAgICA6ICdpc284ODU5XzMnLAogICAgJ2xhdGluMycgICAgICAgICAgICAgOiAnaXNvODg1OV8zJywKCiAgICAjIGlzbzg4NTlfNCBjb2RlYwogICAgJ2NzaXNvbGF0aW40JyAgICAgICAgOiAnaXNvODg1OV80JywKICAgICdpc29fODg1OV80JyAgICAgICAgIDogJ2lzbzg4NTlfNCcsCiAgICAnaXNvXzg4NTlfNF8xOTg4JyAgICA6ICdpc284ODU5XzQnLAogICAgJ2lzb19pcl8xMTAnICAgICAgICAgOiAnaXNvODg1OV80JywKICAgICdsNCcgICAgICAgICAgICAgICAgIDogJ2lzbzg4NTlfNCcsCiAgICAnbGF0aW40JyAgICAgICAgICAgICA6ICdpc284ODU5XzQnLAoKICAgICMgaXNvODg1OV81IGNvZGVjCiAgICAnY3Npc29sYXRpbmN5cmlsbGljJyA6ICdpc284ODU5XzUnLAogICAgJ2N5cmlsbGljJyAgICAgICAgICAgOiAnaXNvODg1OV81JywKICAgICdpc29fODg1OV81JyAgICAgICAgIDogJ2lzbzg4NTlfNScsCiAgICAnaXNvXzg4NTlfNV8xOTg4JyAgICA6ICdpc284ODU5XzUnLAogICAgJ2lzb19pcl8xNDQnICAgICAgICAgOiAnaXNvODg1OV81JywKCiAgICAjIGlzbzg4NTlfNiBjb2RlYwogICAgJ2FyYWJpYycgICAgICAgICAgICAgOiAnaXNvODg1OV82JywKICAgICdhc21vXzcwOCcgICAgICAgICAgIDogJ2lzbzg4NTlfNicsCiAgICAnY3Npc29sYXRpbmFyYWJpYycgICA6ICdpc284ODU5XzYnLAogICAgJ2VjbWFfMTE0JyAgICAgICAgICAgOiAnaXNvODg1OV82JywKICAgICdpc29fODg1OV82JyAgICAgICAgIDogJ2lzbzg4NTlfNicsCiAgICAnaXNvXzg4NTlfNl8xOTg3JyAgICA6ICdpc284ODU5XzYnLAogICAgJ2lzb19pcl8xMjcnICAgICAgICAgOiAnaXNvODg1OV82JywKCiAgICAjIGlzbzg4NTlfNyBjb2RlYwogICAgJ2NzaXNvbGF0aW5ncmVlaycgICAgOiAnaXNvODg1OV83JywKICAgICdlY21hXzExOCcgICAgICAgICAgIDogJ2lzbzg4NTlfNycsCiAgICAnZWxvdF85MjgnICAgICAgICAgICA6ICdpc284ODU5XzcnLAogICAgJ2dyZWVrJyAgICAgICAgICAgICAgOiAnaXNvODg1OV83JywKICAgICdncmVlazgnICAgICAgICAgICAgIDogJ2lzbzg4NTlfNycsCiAgICAnaXNvXzg4NTlfNycgICAgICAgICA6ICdpc284ODU5XzcnLAogICAgJ2lzb184ODU5XzdfMTk4NycgICAgOiAnaXNvODg1OV83JywKICAgICdpc29faXJfMTI2JyAgICAgICAgIDogJ2lzbzg4NTlfNycsCgogICAgIyBpc284ODU5XzggY29kZWMKICAgICdjc2lzb2xhdGluaGVicmV3JyAgIDogJ2lzbzg4NTlfOCcsCiAgICAnaGVicmV3JyAgICAgICAgICAgICA6ICdpc284ODU5XzgnLAogICAgJ2lzb184ODU5XzgnICAgICAgICAgOiAnaXNvODg1OV84JywKICAgICdpc29fODg1OV84XzE5ODgnICAgIDogJ2lzbzg4NTlfOCcsCiAgICAnaXNvX2lyXzEzOCcgICAgICAgICA6ICdpc284ODU5XzgnLAoKICAgICMgaXNvODg1OV85IGNvZGVjCiAgICAnY3Npc29sYXRpbjUnICAgICAgICA6ICdpc284ODU5XzknLAogICAgJ2lzb184ODU5XzknICAgICAgICAgOiAnaXNvODg1OV85JywKICAgICdpc29fODg1OV85XzE5ODknICAgIDogJ2lzbzg4NTlfOScsCiAgICAnaXNvX2lyXzE0OCcgICAgICAgICA6ICdpc284ODU5XzknLAogICAgJ2w1JyAgICAgICAgICAgICAgICAgOiAnaXNvODg1OV85JywKICAgICdsYXRpbjUnICAgICAgICAgICAgIDogJ2lzbzg4NTlfOScsCgogICAgIyBqb2hhYiBjb2RlYwogICAgJ2NwMTM2MScgICAgICAgICAgICAgOiAnam9oYWInLAogICAgJ21zMTM2MScgICAgICAgICAgICAgOiAnam9oYWInLAoKICAgICMga29pOF9yIGNvZGVjCiAgICAnY3Nrb2k4cicgICAgICAgICAgICA6ICdrb2k4X3InLAoKICAgICMga3oxMDQ4IGNvZGVjCiAgICAna3pfMTA0OCcgICAgICAgICAgIDogJ2t6MTA0OCcsCiAgICAncmsxMDQ4JyAgICAgICAgICAgIDogJ2t6MTA0OCcsCiAgICAnc3RyazEwNDhfMjAwMicgICAgIDogJ2t6MTA0OCcsCgogICAgIyBsYXRpbl8xIGNvZGVjCiAgICAjCiAgICAjIE5vdGUgdGhhdCB0aGUgbGF0aW5fMSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbnRlcm5hbGx5IGluIEMgYW5kIGEKICAgICMgbG90IGZhc3RlciB0aGFuIHRoZSBjaGFybWFwIGNvZGVjIGlzbzg4NTlfMSB3aGljaCB1c2VzIHRoZSBzYW1lCiAgICAjIGVuY29kaW5nLiBUaGlzIGlzIHdoeSB3ZSBkaXNjb3VyYWdlIHRoZSB1c2Ugb2YgdGhlIGlzbzg4NTlfMQogICAgIyBjb2RlYyBhbmQgYWxpYXMgaXQgdG8gbGF0aW5fMSBpbnN0ZWFkLgogICAgIwogICAgJzg4NTknICAgICAgICAgICAgICAgOiAnbGF0aW5fMScsCiAgICAnY3A4MTknICAgICAgICAgICAgICA6ICdsYXRpbl8xJywKICAgICdjc2lzb2xhdGluMScgICAgICAgIDogJ2xhdGluXzEnLAogICAgJ2libTgxOScgICAgICAgICAgICAgOiAnbGF0aW5fMScsCiAgICAnaXNvODg1OScgICAgICAgICAgICA6ICdsYXRpbl8xJywKICAgICdpc284ODU5XzEnICAgICAgICAgIDogJ2xhdGluXzEnLAogICAgJ2lzb184ODU5XzEnICAgICAgICAgOiAnbGF0aW5fMScsCiAgICAnaXNvXzg4NTlfMV8xOTg3JyAgICA6ICdsYXRpbl8xJywKICAgICdpc29faXJfMTAwJyAgICAgICAgIDogJ2xhdGluXzEnLAogICAgJ2wxJyAgICAgICAgICAgICAgICAgOiAnbGF0aW5fMScsCiAgICAnbGF0aW4nICAgICAgICAgICAgICA6ICdsYXRpbl8xJywKICAgICdsYXRpbjEnICAgICAgICAgICAgIDogJ2xhdGluXzEnLAoKICAgICMgbWFjX2N5cmlsbGljIGNvZGVjCiAgICAnbWFjY3lyaWxsaWMnICAgICAgICA6ICdtYWNfY3lyaWxsaWMnLAoKICAgICMgbWFjX2dyZWVrIGNvZGVjCiAgICAnbWFjZ3JlZWsnICAgICAgICAgICA6ICdtYWNfZ3JlZWsnLAoKICAgICMgbWFjX2ljZWxhbmQgY29kZWMKICAgICdtYWNpY2VsYW5kJyAgICAgICAgIDogJ21hY19pY2VsYW5kJywKCiAgICAjIG1hY19sYXRpbjIgY29kZWMKICAgICdtYWNjZW50cmFsZXVyb3BlJyAgIDogJ21hY19sYXRpbjInLAogICAgJ21hY19jZW50ZXVybycgICAgICAgOiAnbWFjX2xhdGluMicsCiAgICAnbWFjbGF0aW4yJyAgICAgICAgICA6ICdtYWNfbGF0aW4yJywKCiAgICAjIG1hY19yb21hbiBjb2RlYwogICAgJ21hY2ludG9zaCcgICAgICAgICAgOiAnbWFjX3JvbWFuJywKICAgICdtYWNyb21hbicgICAgICAgICAgIDogJ21hY19yb21hbicsCgogICAgIyBtYWNfdHVya2lzaCBjb2RlYwogICAgJ21hY3R1cmtpc2gnICAgICAgICAgOiAnbWFjX3R1cmtpc2gnLAoKICAgICMgbWJjcyBjb2RlYwogICAgJ2Fuc2knICAgICAgICAgICAgICAgOiAnbWJjcycsCiAgICAnZGJjcycgICAgICAgICAgICAgICA6ICdtYmNzJywKCiAgICAjIHB0Y3AxNTQgY29kZWMKICAgICdjc3B0Y3AxNTQnICAgICAgICAgIDogJ3B0Y3AxNTQnLAogICAgJ3B0MTU0JyAgICAgICAgICAgICAgOiAncHRjcDE1NCcsCiAgICAnY3AxNTQnICAgICAgICAgICAgICA6ICdwdGNwMTU0JywKICAgICdjeXJpbGxpY19hc2lhbicgICAgIDogJ3B0Y3AxNTQnLAoKICAgICMgcXVvcHJpX2NvZGVjIGNvZGVjCiAgICAncXVvcHJpJyAgICAgICAgICAgICA6ICdxdW9wcmlfY29kZWMnLAogICAgJ3F1b3RlZF9wcmludGFibGUnICAgOiAncXVvcHJpX2NvZGVjJywKICAgICdxdW90ZWRwcmludGFibGUnICAgIDogJ3F1b3ByaV9jb2RlYycsCgogICAgIyByb3RfMTMgY29kZWMKICAgICdyb3QxMycgICAgICAgICAgICAgIDogJ3JvdF8xMycsCgogICAgIyBzaGlmdF9qaXMgY29kZWMKICAgICdjc3NoaWZ0amlzJyAgICAgICAgIDogJ3NoaWZ0X2ppcycsCiAgICAnc2hpZnRqaXMnICAgICAgICAgICA6ICdzaGlmdF9qaXMnLAogICAgJ3NqaXMnICAgICAgICAgICAgICAgOiAnc2hpZnRfamlzJywKICAgICdzX2ppcycgICAgICAgICAgICAgIDogJ3NoaWZ0X2ppcycsCgogICAgIyBzaGlmdF9qaXNfMjAwNCBjb2RlYwogICAgJ3NoaWZ0amlzMjAwNCcgICAgICAgOiAnc2hpZnRfamlzXzIwMDQnLAogICAgJ3NqaXNfMjAwNCcgICAgICAgICAgOiAnc2hpZnRfamlzXzIwMDQnLAogICAgJ3NfamlzXzIwMDQnICAgICAgICAgOiAnc2hpZnRfamlzXzIwMDQnLAoKICAgICMgc2hpZnRfamlzeDAyMTMgY29kZWMKICAgICdzaGlmdGppc3gwMjEzJyAgICAgIDogJ3NoaWZ0X2ppc3gwMjEzJywKICAgICdzamlzeDAyMTMnICAgICAgICAgIDogJ3NoaWZ0X2ppc3gwMjEzJywKICAgICdzX2ppc3gwMjEzJyAgICAgICAgIDogJ3NoaWZ0X2ppc3gwMjEzJywKCiAgICAjIHRpc182MjAgY29kZWMKICAgICd0aXM2MjAnICAgICAgICAgICAgIDogJ3Rpc182MjAnLAogICAgJ3Rpc182MjBfMCcgICAgICAgICAgOiAndGlzXzYyMCcsCiAgICAndGlzXzYyMF8yNTI5XzAnICAgICA6ICd0aXNfNjIwJywKICAgICd0aXNfNjIwXzI1MjlfMScgICAgIDogJ3Rpc182MjAnLAogICAgJ2lzb19pcl8xNjYnICAgICAgICAgOiAndGlzXzYyMCcsCgogICAgIyB1dGZfMTYgY29kZWMKICAgICd1MTYnICAgICAgICAgICAgICAgIDogJ3V0Zl8xNicsCiAgICAndXRmMTYnICAgICAgICAgICAgICA6ICd1dGZfMTYnLAoKICAgICMgdXRmXzE2X2JlIGNvZGVjCiAgICAndW5pY29kZWJpZ3VubWFya2VkJyA6ICd1dGZfMTZfYmUnLAogICAgJ3V0Zl8xNmJlJyAgICAgICAgICAgOiAndXRmXzE2X2JlJywKCiAgICAjIHV0Zl8xNl9sZSBjb2RlYwogICAgJ3VuaWNvZGVsaXR0bGV1bm1hcmtlZCcgOiAndXRmXzE2X2xlJywKICAgICd1dGZfMTZsZScgICAgICAgICAgIDogJ3V0Zl8xNl9sZScsCgogICAgIyB1dGZfMzIgY29kZWMKICAgICd1MzInICAgICAgICAgICAgICAgIDogJ3V0Zl8zMicsCiAgICAndXRmMzInICAgICAgICAgICAgICA6ICd1dGZfMzInLAoKICAgICMgdXRmXzMyX2JlIGNvZGVjCiAgICAndXRmXzMyYmUnICAgICAgICAgICA6ICd1dGZfMzJfYmUnLAoKICAgICMgdXRmXzMyX2xlIGNvZGVjCiAgICAndXRmXzMybGUnICAgICAgICAgICA6ICd1dGZfMzJfbGUnLAoKICAgICMgdXRmXzcgY29kZWMKICAgICd1NycgICAgICAgICAgICAgICAgIDogJ3V0Zl83JywKICAgICd1dGY3JyAgICAgICAgICAgICAgIDogJ3V0Zl83JywKICAgICd1bmljb2RlXzFfMV91dGZfNycgIDogJ3V0Zl83JywKCiAgICAjIHV0Zl84IGNvZGVjCiAgICAndTgnICAgICAgICAgICAgICAgICA6ICd1dGZfOCcsCiAgICAndXRmJyAgICAgICAgICAgICAgICA6ICd1dGZfOCcsCiAgICAndXRmOCcgICAgICAgICAgICAgICA6ICd1dGZfOCcsCiAgICAndXRmOF91Y3MyJyAgICAgICAgICA6ICd1dGZfOCcsCiAgICAndXRmOF91Y3M0JyAgICAgICAgICA6ICd1dGZfOCcsCiAgICAnY3A2NTAwMScgICAgICAgICAgICA6ICd1dGZfOCcsCgogICAgIyB1dV9jb2RlYyBjb2RlYwogICAgJ3V1JyAgICAgICAgICAgICAgICAgOiAndXVfY29kZWMnLAoKICAgICMgemxpYl9jb2RlYyBjb2RlYwogICAgJ3ppcCcgICAgICAgICAgICAgICAgOiAnemxpYl9jb2RlYycsCiAgICAnemxpYicgICAgICAgICAgICAgICA6ICd6bGliX2NvZGVjJywKCiAgICAjIHRlbXBvcmFyeSBtYWMgQ0pLIGFsaWFzZXMsIHdpbGwgYmUgcmVwbGFjZWQgYnkgcHJvcGVyIGNvZGVjcyBpbiAzLjEKICAgICd4X21hY19qYXBhbmVzZScgICAgICA6ICdzaGlmdF9qaXMnLAogICAgJ3hfbWFjX2tvcmVhbicgICAgICAgIDogJ2V1Y19rcicsCiAgICAneF9tYWNfc2ltcF9jaGluZXNlJyAgOiAnZ2IyMzEyJywKICAgICd4X21hY190cmFkX2NoaW5lc2UnICA6ICdiaWc1JywKfQpQSwMEFAAAAAAAAiCjVoPyfU/gBAAA4AQAABIAAABlbmNvZGluZ3MvYXNjaWkucHkiIiIgUHl0aG9uICdhc2NpaScgQ29kZWMKCgpXcml0dGVuIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyAobWFsQGxlbWJ1cmcuY29tKS4KCihjKSBDb3B5cmlnaHQgQ05SSSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gTk8gV0FSUkFOVFkuCgoiIiIKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgIyBOb3RlOiBCaW5kaW5nIHRoZXNlIGFzIEMgZnVuY3Rpb25zIHdpbGwgcmVzdWx0IGluIHRoZSBjbGFzcyBub3QKICAgICMgY29udmVydGluZyB0aGVtIHRvIG1ldGhvZHMuIFRoaXMgaXMgaW50ZW5kZWQuCiAgICBlbmNvZGUgPSBjb2RlY3MuYXNjaWlfZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlY3MuYXNjaWlfZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5hc2NpaV9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuYXNjaWlfZGVjb2RlKGlucHV0LCBzZWxmLmVycm9ycylbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbUNvbnZlcnRlcihTdHJlYW1Xcml0ZXIsU3RyZWFtUmVhZGVyKToKCiAgICBlbmNvZGUgPSBjb2RlY3MuYXNjaWlfZGVjb2RlCiAgICBkZWNvZGUgPSBjb2RlY3MuYXNjaWlfZW5jb2RlCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nYXNjaWknLAogICAgICAgIGVuY29kZT1Db2RlYy5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVjQX7h39BQAA/QUAABkAAABlbmNvZGluZ3MvYmFzZTY0X2NvZGVjLnB5IiIiUHl0aG9uICdiYXNlNjRfY29kZWMnIENvZGVjIC0gYmFzZTY0IGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RpbmcuCgpUaGlzIGNvZGVjIGRlL2VuY29kZXMgZnJvbSBieXRlcyB0byBieXRlcy4KCldyaXR0ZW4gYnkgTWFyYy1BbmRyZSBMZW1idXJnIChtYWxAbGVtYnVyZy5jb20pLgoiIiIKCmltcG9ydCBjb2RlY3MKaW1wb3J0IGJhc2U2NAoKIyMjIENvZGVjIEFQSXMKCmRlZiBiYXNlNjRfZW5jb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgogICAgYXNzZXJ0IGVycm9ycyA9PSAnc3RyaWN0JwogICAgcmV0dXJuIChiYXNlNjQuZW5jb2RlYnl0ZXMoaW5wdXQpLCBsZW4oaW5wdXQpKQoKZGVmIGJhc2U2NF9kZWNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICBhc3NlcnQgZXJyb3JzID09ICdzdHJpY3QnCiAgICByZXR1cm4gKGJhc2U2NC5kZWNvZGVieXRlcyhpbnB1dCksIGxlbihpbnB1dCkpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gYmFzZTY0X2VuY29kZShpbnB1dCwgZXJyb3JzKQogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gYmFzZTY0X2RlY29kZShpbnB1dCwgZXJyb3JzKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIGFzc2VydCBzZWxmLmVycm9ycyA9PSAnc3RyaWN0JwogICAgICAgIHJldHVybiBiYXNlNjQuZW5jb2RlYnl0ZXMoaW5wdXQpCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgYXNzZXJ0IHNlbGYuZXJyb3JzID09ICdzdHJpY3QnCiAgICAgICAgcmV0dXJuIGJhc2U2NC5kZWNvZGVieXRlcyhpbnB1dCkKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjaGFyYnVmZmVydHlwZSA9IGJ5dGVzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY2hhcmJ1ZmZlcnR5cGUgPSBieXRlcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2Jhc2U2NCcsCiAgICAgICAgZW5jb2RlPWJhc2U2NF9lbmNvZGUsCiAgICAgICAgZGVjb2RlPWJhc2U2NF9kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBfaXNfdGV4dF9lbmNvZGluZz1GYWxzZSwKICAgICkKUEsDBBQAAAAAAAIgo1bNh4yV+wMAAPsDAAARAAAAZW5jb2RpbmdzL2JpZzUucHkjCiMgYmlnNS5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIEJJRzUKIwojIFdyaXR0ZW4gYnkgSHllLVNoaWsgQ2hhbmcgPHBlcmt5QEZyZWVCU0Qub3JnPgojCgppbXBvcnQgX2NvZGVjc190dywgY29kZWNzCmltcG9ydCBfbXVsdGlieXRlY29kZWMgYXMgbWJjCgpjb2RlYyA9IF9jb2RlY3NfdHcuZ2V0Y29kZWMoJ2JpZzUnKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdiaWc1JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAACIKNW+6UpFg8EAAAPBAAAFgAAAGVuY29kaW5ncy9iaWc1aGtzY3MucHkjCiMgYmlnNWhrc2NzLnB5OiBQeXRob24gVW5pY29kZSBDb2RlYyBmb3IgQklHNUhLU0NTCiMKIyBXcml0dGVuIGJ5IEh5ZS1TaGlrIENoYW5nIDxwZXJreUBGcmVlQlNELm9yZz4KIwoKaW1wb3J0IF9jb2RlY3NfaGssIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2hrLmdldGNvZGVjKCdiaWc1aGtzY3MnKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdiaWc1aGtzY3MnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAIgo1Z4r7RyyQgAAMkIAAAWAAAAZW5jb2RpbmdzL2J6Ml9jb2RlYy5weSIiIlB5dGhvbiAnYnoyX2NvZGVjJyBDb2RlYyAtIGJ6MiBjb21wcmVzc2lvbiBlbmNvZGluZy4KClRoaXMgY29kZWMgZGUvZW5jb2RlcyBmcm9tIGJ5dGVzIHRvIGJ5dGVzIGFuZCBpcyB0aGVyZWZvcmUgdXNhYmxlIHdpdGgKYnl0ZXMudHJhbnNmb3JtKCkgYW5kIGJ5dGVzLnVudHJhbnNmb3JtKCkuCgpBZGFwdGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGZyb20gemxpYl9jb2RlYy5weSB3aGljaCB3YXMgd3JpdHRlbgpieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCiIiIgoKaW1wb3J0IGNvZGVjcwppbXBvcnQgYnoyICMgdGhpcyBjb2RlYyBuZWVkcyB0aGUgb3B0aW9uYWwgYnoyIG1vZHVsZSAhCgojIyMgQ29kZWMgQVBJcwoKZGVmIGJ6Ml9lbmNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICBhc3NlcnQgZXJyb3JzID09ICdzdHJpY3QnCiAgICByZXR1cm4gKGJ6Mi5jb21wcmVzcyhpbnB1dCksIGxlbihpbnB1dCkpCgpkZWYgYnoyX2RlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIGFzc2VydCBlcnJvcnMgPT0gJ3N0cmljdCcKICAgIHJldHVybiAoYnoyLmRlY29tcHJlc3MoaW5wdXQpLCBsZW4oaW5wdXQpKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGJ6Ml9lbmNvZGUoaW5wdXQsIGVycm9ycykKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGJ6Ml9kZWNvZGUoaW5wdXQsIGVycm9ycykKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIGFzc2VydCBlcnJvcnMgPT0gJ3N0cmljdCcKICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwogICAgICAgIHNlbGYuY29tcHJlc3NvYmogPSBiejIuQloyQ29tcHJlc3NvcigpCgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIGlmIGZpbmFsOgogICAgICAgICAgICBjID0gc2VsZi5jb21wcmVzc29iai5jb21wcmVzcyhpbnB1dCkKICAgICAgICAgICAgcmV0dXJuIGMgKyBzZWxmLmNvbXByZXNzb2JqLmZsdXNoKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5jb21wcmVzc29iai5jb21wcmVzcyhpbnB1dCkKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgc2VsZi5jb21wcmVzc29iaiA9IGJ6Mi5CWjJDb21wcmVzc29yKCkKCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIGFzc2VydCBlcnJvcnMgPT0gJ3N0cmljdCcKICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwogICAgICAgIHNlbGYuZGVjb21wcmVzc29iaiA9IGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQoKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY29tcHJlc3NvYmouZGVjb21wcmVzcyhpbnB1dCkKICAgICAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgICAgIHJldHVybiAnJwoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBzZWxmLmRlY29tcHJlc3NvYmogPSBiejIuQloyRGVjb21wcmVzc29yKCkKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjaGFyYnVmZmVydHlwZSA9IGJ5dGVzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY2hhcmJ1ZmZlcnR5cGUgPSBieXRlcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9ImJ6MiIsCiAgICAgICAgZW5jb2RlPWJ6Ml9lbmNvZGUsCiAgICAgICAgZGVjb2RlPWJ6Ml9kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBfaXNfdGV4dF9lbmNvZGluZz1GYWxzZSwKICAgICkKUEsDBBQAAAAAAAIgo1Z2tweKJAgAACQIAAAUAAAAZW5jb2RpbmdzL2NoYXJtYXAucHkiIiIgR2VuZXJpYyBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMuCgogICAgVXNlIHRoaXMgY29kZWMgZGlyZWN0bHkgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGUgYXV0b21hdGljCiAgICBjb252ZXJzaW9uIG1lY2hhbmlzbXMgc3VwcGxpZWQgYnkgdW5pY29kZSgpIGFuZCAuZW5jb2RlKCkuCgoKV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCgooYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgICMgTm90ZTogQmluZGluZyB0aGVzZSBhcyBDIGZ1bmN0aW9ucyB3aWxsIHJlc3VsdCBpbiB0aGUgY2xhc3Mgbm90CiAgICAjIGNvbnZlcnRpbmcgdGhlbSB0byBtZXRob2RzLiBUaGlzIGlzIGludGVuZGVkLgogICAgZW5jb2RlID0gY29kZWNzLmNoYXJtYXBfZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlY3MuY2hhcm1hcF9kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcnM9J3N0cmljdCcsIG1hcHBpbmc9Tm9uZSk6CiAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlci5fX2luaXRfXyhzZWxmLCBlcnJvcnMpCiAgICAgICAgc2VsZi5tYXBwaW5nID0gbWFwcGluZwoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycywgc2VsZi5tYXBwaW5nKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9ycz0nc3RyaWN0JywgbWFwcGluZz1Ob25lKToKICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyLl9faW5pdF9fKHNlbGYsIGVycm9ycykKICAgICAgICBzZWxmLm1hcHBpbmcgPSBtYXBwaW5nCgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzLCBzZWxmLm1hcHBpbmcpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsc3RyZWFtLGVycm9ycz0nc3RyaWN0JyxtYXBwaW5nPU5vbmUpOgogICAgICAgIGNvZGVjcy5TdHJlYW1Xcml0ZXIuX19pbml0X18oc2VsZixzdHJlYW0sZXJyb3JzKQogICAgICAgIHNlbGYubWFwcGluZyA9IG1hcHBpbmcKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gQ29kZWMuZW5jb2RlKGlucHV0LGVycm9ycyxzZWxmLm1hcHBpbmcpCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsc3RyZWFtLGVycm9ycz0nc3RyaWN0JyxtYXBwaW5nPU5vbmUpOgogICAgICAgIGNvZGVjcy5TdHJlYW1SZWFkZXIuX19pbml0X18oc2VsZixzdHJlYW0sZXJyb3JzKQogICAgICAgIHNlbGYubWFwcGluZyA9IG1hcHBpbmcKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gQ29kZWMuZGVjb2RlKGlucHV0LGVycm9ycyxzZWxmLm1hcHBpbmcpCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY2hhcm1hcCcsCiAgICAgICAgZW5jb2RlPUNvZGVjLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICApClBLAwQUAAAAAAACIKNWl7cpA0EzAABBMwAAEgAAAGVuY29kaW5ncy9jcDAzNy5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AwMzcgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL0VCQ0RJQy9DUDAzNy5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwMDM3JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4OWMnICAgICAjICAweDA0IC0+IENPTlRST0wKICAgICdcdCcgICAgICAgIyAgMHgwNSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdceDg2JyAgICAgIyAgMHgwNiAtPiBDT05UUk9MCiAgICAnXHg3ZicgICAgICMgIDB4MDcgLT4gREVMRVRFCiAgICAnXHg5NycgICAgICMgIDB4MDggLT4gQ09OVFJPTAogICAgJ1x4OGQnICAgICAjICAweDA5IC0+IENPTlRST0wKICAgICdceDhlJyAgICAgIyAgMHgwQSAtPiBDT05UUk9MCiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHg5ZCcgICAgICMgIDB4MTQgLT4gQ09OVFJPTAogICAgJ1x4ODUnICAgICAjICAweDE1IC0+IENPTlRST0wKICAgICdceDA4JyAgICAgIyAgMHgxNiAtPiBCQUNLU1BBQ0UKICAgICdceDg3JyAgICAgIyAgMHgxNyAtPiBDT05UUk9MCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4OTInICAgICAjICAweDFBIC0+IENPTlRST0wKICAgICdceDhmJyAgICAgIyAgMHgxQiAtPiBDT05UUk9MCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICdceDgwJyAgICAgIyAgMHgyMCAtPiBDT05UUk9MCiAgICAnXHg4MScgICAgICMgIDB4MjEgLT4gQ09OVFJPTAogICAgJ1x4ODInICAgICAjICAweDIyIC0+IENPTlRST0wKICAgICdceDgzJyAgICAgIyAgMHgyMyAtPiBDT05UUk9MCiAgICAnXHg4NCcgICAgICMgIDB4MjQgLT4gQ09OVFJPTAogICAgJ1xuJyAgICAgICAjICAweDI1IC0+IExJTkUgRkVFRAogICAgJ1x4MTcnICAgICAjICAweDI2IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDFiJyAgICAgIyAgMHgyNyAtPiBFU0NBUEUKICAgICdceDg4JyAgICAgIyAgMHgyOCAtPiBDT05UUk9MCiAgICAnXHg4OScgICAgICMgIDB4MjkgLT4gQ09OVFJPTAogICAgJ1x4OGEnICAgICAjICAweDJBIC0+IENPTlRST0wKICAgICdceDhiJyAgICAgIyAgMHgyQiAtPiBDT05UUk9MCiAgICAnXHg4YycgICAgICMgIDB4MkMgLT4gQ09OVFJPTAogICAgJ1x4MDUnICAgICAjICAweDJEIC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgyRSAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDJGIC0+IEJFTEwKICAgICdceDkwJyAgICAgIyAgMHgzMCAtPiBDT05UUk9MCiAgICAnXHg5MScgICAgICMgIDB4MzEgLT4gQ09OVFJPTAogICAgJ1x4MTYnICAgICAjICAweDMyIC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDkzJyAgICAgIyAgMHgzMyAtPiBDT05UUk9MCiAgICAnXHg5NCcgICAgICMgIDB4MzQgLT4gQ09OVFJPTAogICAgJ1x4OTUnICAgICAjICAweDM1IC0+IENPTlRST0wKICAgICdceDk2JyAgICAgIyAgMHgzNiAtPiBDT05UUk9MCiAgICAnXHgwNCcgICAgICMgIDB4MzcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4OTgnICAgICAjICAweDM4IC0+IENPTlRST0wKICAgICdceDk5JyAgICAgIyAgMHgzOSAtPiBDT05UUk9MCiAgICAnXHg5YScgICAgICMgIDB4M0EgLT4gQ09OVFJPTAogICAgJ1x4OWInICAgICAjICAweDNCIC0+IENPTlRST0wKICAgICdceDE0JyAgICAgIyAgMHgzQyAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4M0QgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDllJyAgICAgIyAgMHgzRSAtPiBDT05UUk9MCiAgICAnXHgxYScgICAgICMgIDB4M0YgLT4gU1VCU1RJVFVURQogICAgJyAnICAgICAgICAjICAweDQwIC0+IFNQQUNFCiAgICAnXHhhMCcgICAgICMgIDB4NDEgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdceGUyJyAgICAgIyAgMHg0MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGU0JyAgICAgIyAgMHg0MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTAnICAgICAjICAweDQ0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGUxJyAgICAgIyAgMHg0NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlMycgICAgICMgIDB4NDYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZTUnICAgICAjICAweDQ3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZTcnICAgICAjICAweDQ4IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZjEnICAgICAjICAweDQ5IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGEyJyAgICAgIyAgMHg0QSAtPiBDRU5UIFNJR04KICAgICcuJyAgICAgICAgIyAgMHg0QiAtPiBGVUxMIFNUT1AKICAgICc8JyAgICAgICAgIyAgMHg0QyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJygnICAgICAgICAjICAweDREIC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcrJyAgICAgICAgIyAgMHg0RSAtPiBQTFVTIFNJR04KICAgICd8JyAgICAgICAgIyAgMHg0RiAtPiBWRVJUSUNBTCBMSU5FCiAgICAnJicgICAgICAgICMgIDB4NTAgLT4gQU1QRVJTQU5ECiAgICAnXHhlOScgICAgICMgIDB4NTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAjICAweDUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDUzIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlOCcgICAgICMgIDB4NTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWQnICAgICAjICAweDU1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHg1NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHg1NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWMnICAgICAjICAweDU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGRmJyAgICAgIyAgMHg1OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR0VSTUFOKQogICAgJyEnICAgICAgICAjICAweDVBIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICckJyAgICAgICAgIyAgMHg1QiAtPiBET0xMQVIgU0lHTgogICAgJyonICAgICAgICAjICAweDVDIC0+IEFTVEVSSVNLCiAgICAnKScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICc7JyAgICAgICAgIyAgMHg1RSAtPiBTRU1JQ09MT04KICAgICdceGFjJyAgICAgIyAgMHg1RiAtPiBOT1QgU0lHTgogICAgJy0nICAgICAgICAjICAweDYwIC0+IEhZUEhFTi1NSU5VUwogICAgJy8nICAgICAgICAjICAweDYxIC0+IFNPTElEVVMKICAgICdceGMyJyAgICAgIyAgMHg2MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzQnICAgICAjICAweDYzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGMwJyAgICAgIyAgMHg2NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMxJyAgICAgIyAgMHg2NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGMzJyAgICAgIyAgMHg2NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGM1JyAgICAgIyAgMHg2NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzcnICAgICAjICAweDY4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhkMScgICAgICMgIDB4NjkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhhNicgICAgICMgIDB4NkEgLT4gQlJPS0VOIEJBUgogICAgJywnICAgICAgICAjICAweDZCIC0+IENPTU1BCiAgICAnJScgICAgICAgICMgIDB4NkMgLT4gUEVSQ0VOVCBTSUdOCiAgICAnXycgICAgICAgICMgIDB4NkQgLT4gTE9XIExJTkUKICAgICc+JyAgICAgICAgIyAgMHg2RSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDZGIC0+IFFVRVNUSU9OIE1BUksKICAgICdceGY4JyAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4YzknICAgICAjICAweDcxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4Y2EnICAgICAjICAweDcyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjYicgICAgICMgIDB4NzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzgnICAgICAjICAweDc0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4Y2QnICAgICAjICAweDc1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweDc2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjZicgICAgICMgIDB4NzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4Y2MnICAgICAjICAweDc4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ2AnICAgICAgICAjICAweDc5IC0+IEdSQVZFIEFDQ0VOVAogICAgJzonICAgICAgICAjICAweDdBIC0+IENPTE9OCiAgICAnIycgICAgICAgICMgIDB4N0IgLT4gTlVNQkVSIFNJR04KICAgICdAJyAgICAgICAgIyAgMHg3QyAtPiBDT01NRVJDSUFMIEFUCiAgICAiJyIgICAgICAgICMgIDB4N0QgLT4gQVBPU1RST1BIRQogICAgJz0nICAgICAgICAjICAweDdFIC0+IEVRVUFMUyBTSUdOCiAgICAnIicgICAgICAgICMgIDB4N0YgLT4gUVVPVEFUSU9OIE1BUksKICAgICdceGQ4JyAgICAgIyAgMHg4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnYScgICAgICAgICMgIDB4ODEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg4MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4ODQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg4NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDg2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnXHhhYicgICAgICMgIDB4OEEgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgIyAgMHg4QiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGYwJyAgICAgIyAgMHg4QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRVRIIChJQ0VMQU5ESUMpCiAgICAnXHhmZCcgICAgICMgIDB4OEQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgJ1x4ZmUnICAgICAjICAweDhFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSUNFTEFORElDKQogICAgJ1x4YjEnICAgICAjICAweDhGIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x4YjAnICAgICAjICAweDkwIC0+IERFR1JFRSBTSUdOCiAgICAnaicgICAgICAgICMgIDB4OTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4OTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4OTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg5OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDk5IC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAnXHhhYScgICAgICMgIDB4OUEgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJhJyAgICAgIyAgMHg5QiAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGU2JyAgICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgJ1x4YjgnICAgICAjICAweDlEIC0+IENFRElMTEEKICAgICdceGM2JyAgICAgIyAgMHg5RSAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAnXHhhNCcgICAgICMgIDB4OUYgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x4YjUnICAgICAjICAweEEwIC0+IE1JQ1JPIFNJR04KICAgICd+JyAgICAgICAgIyAgMHhBMSAtPiBUSUxERQogICAgJ3MnICAgICAgICAjICAweEEyIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4QTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHhBNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweEE1IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4QTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHhBNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweEE4IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4QTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICdceGExJyAgICAgIyAgMHhBQSAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAnXHhiZicgICAgICMgIDB4QUIgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgJ1x4ZDAnICAgICAjICAweEFDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSUNFTEFORElDKQogICAgJ1x4ZGQnICAgICAjICAweEFEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgJ1x4ZGUnICAgICAjICAweEFFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJQ0VMQU5ESUMpCiAgICAnXHhhZScgICAgICMgIDB4QUYgLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXicgICAgICAgICMgIDB4QjAgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdceGEzJyAgICAgIyAgMHhCMSAtPiBQT1VORCBTSUdOCiAgICAnXHhhNScgICAgICMgIDB4QjIgLT4gWUVOIFNJR04KICAgICdceGI3JyAgICAgIyAgMHhCMyAtPiBNSURETEUgRE9UCiAgICAnXHhhOScgICAgICMgIDB4QjQgLT4gQ09QWVJJR0hUIFNJR04KICAgICdceGE3JyAgICAgIyAgMHhCNSAtPiBTRUNUSU9OIFNJR04KICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGJjJyAgICAgIyAgMHhCNyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgICdceGJkJyAgICAgIyAgMHhCOCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJlJyAgICAgIyAgMHhCOSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdbJyAgICAgICAgIyAgMHhCQSAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXScgICAgICAgICMgIDB4QkIgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdceGFmJyAgICAgIyAgMHhCQyAtPiBNQUNST04KICAgICdceGE4JyAgICAgIyAgMHhCRCAtPiBESUFFUkVTSVMKICAgICdceGI0JyAgICAgIyAgMHhCRSAtPiBBQ1VURSBBQ0NFTlQKICAgICdceGQ3JyAgICAgIyAgMHhCRiAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCiAgICAneycgICAgICAgICMgIDB4QzAgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnQScgICAgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHhDMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4QzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweEM4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHhDOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnXHhhZCcgICAgICMgIDB4Q0EgLT4gU09GVCBIWVBIRU4KICAgICdceGY0JyAgICAgIyAgMHhDQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHhDQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjInICAgICAjICAweENEIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGYzJyAgICAgIyAgMHhDRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmNScgICAgICMgIDB4Q0YgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ30nICAgICAgICAjICAweEQwIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICdKJyAgICAgICAgIyAgMHhEMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHhENCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweEQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHhENyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4RDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdceGI5JyAgICAgIyAgMHhEQSAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdceGZiJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGZjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjknICAgICAjICAweEREIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGZhJyAgICAgIyAgMHhERSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmZicgICAgICMgIDB4REYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdcXCcgICAgICAgIyAgMHhFMCAtPiBSRVZFUlNFIFNPTElEVVMKICAgICdceGY3JyAgICAgIyAgMHhFMSAtPiBESVZJU0lPTiBTSUdOCiAgICAnUycgICAgICAgICMgIDB4RTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweEUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHhFNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweEU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweEU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdceGIyJyAgICAgIyAgMHhFQSAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGQ0JyAgICAgIyAgMHhFQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZDYnICAgICAjICAweEVDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGQyJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGQzJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGQ1JyAgICAgIyAgMHhFRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICcwJyAgICAgICAgIyAgMHhGMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4RjEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4RjIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4RjMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHhGNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4RjUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweEY2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweEY3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4RjggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHhGOSAtPiBESUdJVCBOSU5FCiAgICAnXHhiMycgICAgICMgIDB4RkEgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGRiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZGMnICAgICAjICAweEZDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGQ5JyAgICAgIyAgMHhGRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGRhJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceDlmJyAgICAgIyAgMHhGRiAtPiBDT05UUk9MCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1Y+44RUADUAAAA1AAATAAAAZW5jb2RpbmdzL2NwMTAwNi5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AxMDA2IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JU0MvQ1AxMDA2LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3AxMDA2JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x4ODAnICAgICAjICAweDgwIC0+IDxjb250cm9sPgogICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgogICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgogICAgJ1x4ODMnICAgICAjICAweDgzIC0+IDxjb250cm9sPgogICAgJ1x4ODQnICAgICAjICAweDg0IC0+IDxjb250cm9sPgogICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgogICAgJ1x4ODYnICAgICAjICAweDg2IC0+IDxjb250cm9sPgogICAgJ1x4ODcnICAgICAjICAweDg3IC0+IDxjb250cm9sPgogICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgogICAgJ1x4ODknICAgICAjICAweDg5IC0+IDxjb250cm9sPgogICAgJ1x4OGEnICAgICAjICAweDhBIC0+IDxjb250cm9sPgogICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgogICAgJ1x4OGMnICAgICAjICAweDhDIC0+IDxjb250cm9sPgogICAgJ1x4OGQnICAgICAjICAweDhEIC0+IDxjb250cm9sPgogICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgogICAgJ1x4OGYnICAgICAjICAweDhGIC0+IDxjb250cm9sPgogICAgJ1x4OTAnICAgICAjICAweDkwIC0+IDxjb250cm9sPgogICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgogICAgJ1x4OTInICAgICAjICAweDkyIC0+IDxjb250cm9sPgogICAgJ1x4OTMnICAgICAjICAweDkzIC0+IDxjb250cm9sPgogICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgogICAgJ1x4OTUnICAgICAjICAweDk1IC0+IDxjb250cm9sPgogICAgJ1x4OTYnICAgICAjICAweDk2IC0+IDxjb250cm9sPgogICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgogICAgJ1x4OTgnICAgICAjICAweDk4IC0+IDxjb250cm9sPgogICAgJ1x4OTknICAgICAjICAweDk5IC0+IDxjb250cm9sPgogICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgogICAgJ1x4OWInICAgICAjICAweDlCIC0+IDxjb250cm9sPgogICAgJ1x4OWMnICAgICAjICAweDlDIC0+IDxjb250cm9sPgogICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgogICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgogICAgJ1x4OWYnICAgICAjICAweDlGIC0+IDxjb250cm9sPgogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUwNmYwJyAgICMgIDB4QTEgLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFpFUk8KICAgICdcdTA2ZjEnICAgIyAgMHhBMiAtPiBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgT05FCiAgICAnXHUwNmYyJyAgICMgIDB4QTMgLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRXTwogICAgJ1x1MDZmMycgICAjICAweEE0IC0+IEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRQogICAgJ1x1MDZmNCcgICAjICAweEE1IC0+IEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCiAgICAnXHUwNmY1JyAgICMgIDB4QTYgLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZJVkUKICAgICdcdTA2ZjYnICAgIyAgMHhBNyAtPiBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgU0lYCiAgICAnXHUwNmY3JyAgICMgIDB4QTggLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFNFVkVOCiAgICAnXHUwNmY4JyAgICMgIDB4QTkgLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEVJR0hUCiAgICAnXHUwNmY5JyAgICMgIDB4QUEgLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE5JTkUKICAgICdcdTA2MGMnICAgIyAgMHhBQiAtPiBBUkFCSUMgQ09NTUEKICAgICdcdTA2MWInICAgIyAgMHhBQyAtPiBBUkFCSUMgU0VNSUNPTE9OCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdcdTA2MWYnICAgIyAgMHhBRSAtPiBBUkFCSUMgUVVFU1RJT04gTUFSSwogICAgJ1x1ZmU4MScgICAjICAweEFGIC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgICdcdWZlOGQnICAgIyAgMHhCMCAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgSVNPTEFURUQgRk9STQogICAgJ1x1ZmU4ZScgICAjICAweEIxIC0+IEFSQUJJQyBMRVRURVIgQUxFRiBGSU5BTCBGT1JNCiAgICAnXHVmZThlJyAgICMgIDB4QjIgLT4gQVJBQklDIExFVFRFUiBBTEVGIEZJTkFMIEZPUk0KICAgICdcdWZlOGYnICAgIyAgMHhCMyAtPiBBUkFCSUMgTEVUVEVSIEJFSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZTkxJyAgICMgIDB4QjQgLT4gQVJBQklDIExFVFRFUiBCRUggSU5JVElBTCBGT1JNCiAgICAnXHVmYjU2JyAgICMgIDB4QjUgLT4gQVJBQklDIExFVFRFUiBQRUggSVNPTEFURUQgRk9STQogICAgJ1x1ZmI1OCcgICAjICAweEI2IC0+IEFSQUJJQyBMRVRURVIgUEVIIElOSVRJQUwgRk9STQogICAgJ1x1ZmU5MycgICAjICAweEI3IC0+IEFSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgSVNPTEFURUQgRk9STQogICAgJ1x1ZmU5NScgICAjICAweEI4IC0+IEFSQUJJQyBMRVRURVIgVEVIIElTT0xBVEVEIEZPUk0KICAgICdcdWZlOTcnICAgIyAgMHhCOSAtPiBBUkFCSUMgTEVUVEVSIFRFSCBJTklUSUFMIEZPUk0KICAgICdcdWZiNjYnICAgIyAgMHhCQSAtPiBBUkFCSUMgTEVUVEVSIFRURUggSVNPTEFURUQgRk9STQogICAgJ1x1ZmI2OCcgICAjICAweEJCIC0+IEFSQUJJQyBMRVRURVIgVFRFSCBJTklUSUFMIEZPUk0KICAgICdcdWZlOTknICAgIyAgMHhCQyAtPiBBUkFCSUMgTEVUVEVSIFRIRUggSVNPTEFURUQgRk9STQogICAgJ1x1ZmU5YicgICAjICAweEJEIC0+IEFSQUJJQyBMRVRURVIgVEhFSCBJTklUSUFMIEZPUk0KICAgICdcdWZlOWQnICAgIyAgMHhCRSAtPiBBUkFCSUMgTEVUVEVSIEpFRU0gSVNPTEFURUQgRk9STQogICAgJ1x1ZmU5ZicgICAjICAweEJGIC0+IEFSQUJJQyBMRVRURVIgSkVFTSBJTklUSUFMIEZPUk0KICAgICdcdWZiN2EnICAgIyAgMHhDMCAtPiBBUkFCSUMgTEVUVEVSIFRDSEVIIElTT0xBVEVEIEZPUk0KICAgICdcdWZiN2MnICAgIyAgMHhDMSAtPiBBUkFCSUMgTEVUVEVSIFRDSEVIIElOSVRJQUwgRk9STQogICAgJ1x1ZmVhMScgICAjICAweEMyIC0+IEFSQUJJQyBMRVRURVIgSEFIIElTT0xBVEVEIEZPUk0KICAgICdcdWZlYTMnICAgIyAgMHhDMyAtPiBBUkFCSUMgTEVUVEVSIEhBSCBJTklUSUFMIEZPUk0KICAgICdcdWZlYTUnICAgIyAgMHhDNCAtPiBBUkFCSUMgTEVUVEVSIEtIQUggSVNPTEFURUQgRk9STQogICAgJ1x1ZmVhNycgICAjICAweEM1IC0+IEFSQUJJQyBMRVRURVIgS0hBSCBJTklUSUFMIEZPUk0KICAgICdcdWZlYTknICAgIyAgMHhDNiAtPiBBUkFCSUMgTEVUVEVSIERBTCBJU09MQVRFRCBGT1JNCiAgICAnXHVmYjg0JyAgICMgIDB4QzcgLT4gQVJBQklDIExFVFRFUiBEQUhBTCBJU09MQVRFRCBGT1JNTgogICAgJ1x1ZmVhYicgICAjICAweEM4IC0+IEFSQUJJQyBMRVRURVIgVEhBTCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWFkJyAgICMgIDB4QzkgLT4gQVJBQklDIExFVFRFUiBSRUggSVNPTEFURUQgRk9STQogICAgJ1x1ZmI4YycgICAjICAweENBIC0+IEFSQUJJQyBMRVRURVIgUlJFSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWFmJyAgICMgIDB4Q0IgLT4gQVJBQklDIExFVFRFUiBaQUlOIElTT0xBVEVEIEZPUk0KICAgICdcdWZiOGEnICAgIyAgMHhDQyAtPiBBUkFCSUMgTEVUVEVSIEpFSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWIxJyAgICMgIDB4Q0QgLT4gQVJBQklDIExFVFRFUiBTRUVOIElTT0xBVEVEIEZPUk0KICAgICdcdWZlYjMnICAgIyAgMHhDRSAtPiBBUkFCSUMgTEVUVEVSIFNFRU4gSU5JVElBTCBGT1JNCiAgICAnXHVmZWI1JyAgICMgIDB4Q0YgLT4gQVJBQklDIExFVFRFUiBTSEVFTiBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWI3JyAgICMgIDB4RDAgLT4gQVJBQklDIExFVFRFUiBTSEVFTiBJTklUSUFMIEZPUk0KICAgICdcdWZlYjknICAgIyAgMHhEMSAtPiBBUkFCSUMgTEVUVEVSIFNBRCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWJiJyAgICMgIDB4RDIgLT4gQVJBQklDIExFVFRFUiBTQUQgSU5JVElBTCBGT1JNCiAgICAnXHVmZWJkJyAgICMgIDB4RDMgLT4gQVJBQklDIExFVFRFUiBEQUQgSVNPTEFURUQgRk9STQogICAgJ1x1ZmViZicgICAjICAweEQ0IC0+IEFSQUJJQyBMRVRURVIgREFEIElOSVRJQUwgRk9STQogICAgJ1x1ZmVjMScgICAjICAweEQ1IC0+IEFSQUJJQyBMRVRURVIgVEFIIElTT0xBVEVEIEZPUk0KICAgICdcdWZlYzUnICAgIyAgMHhENiAtPiBBUkFCSUMgTEVUVEVSIFpBSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWM5JyAgICMgIDB4RDcgLT4gQVJBQklDIExFVFRFUiBBSU4gSVNPTEFURUQgRk9STQogICAgJ1x1ZmVjYScgICAjICAweEQ4IC0+IEFSQUJJQyBMRVRURVIgQUlOIEZJTkFMIEZPUk0KICAgICdcdWZlY2InICAgIyAgMHhEOSAtPiBBUkFCSUMgTEVUVEVSIEFJTiBJTklUSUFMIEZPUk0KICAgICdcdWZlY2MnICAgIyAgMHhEQSAtPiBBUkFCSUMgTEVUVEVSIEFJTiBNRURJQUwgRk9STQogICAgJ1x1ZmVjZCcgICAjICAweERCIC0+IEFSQUJJQyBMRVRURVIgR0hBSU4gSVNPTEFURUQgRk9STQogICAgJ1x1ZmVjZScgICAjICAweERDIC0+IEFSQUJJQyBMRVRURVIgR0hBSU4gRklOQUwgRk9STQogICAgJ1x1ZmVjZicgICAjICAweEREIC0+IEFSQUJJQyBMRVRURVIgR0hBSU4gSU5JVElBTCBGT1JNCiAgICAnXHVmZWQwJyAgICMgIDB4REUgLT4gQVJBQklDIExFVFRFUiBHSEFJTiBNRURJQUwgRk9STQogICAgJ1x1ZmVkMScgICAjICAweERGIC0+IEFSQUJJQyBMRVRURVIgRkVIIElTT0xBVEVEIEZPUk0KICAgICdcdWZlZDMnICAgIyAgMHhFMCAtPiBBUkFCSUMgTEVUVEVSIEZFSCBJTklUSUFMIEZPUk0KICAgICdcdWZlZDUnICAgIyAgMHhFMSAtPiBBUkFCSUMgTEVUVEVSIFFBRiBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWQ3JyAgICMgIDB4RTIgLT4gQVJBQklDIExFVFRFUiBRQUYgSU5JVElBTCBGT1JNCiAgICAnXHVmZWQ5JyAgICMgIDB4RTMgLT4gQVJBQklDIExFVFRFUiBLQUYgSVNPTEFURUQgRk9STQogICAgJ1x1ZmVkYicgICAjICAweEU0IC0+IEFSQUJJQyBMRVRURVIgS0FGIElOSVRJQUwgRk9STQogICAgJ1x1ZmI5MicgICAjICAweEU1IC0+IEFSQUJJQyBMRVRURVIgR0FGIElTT0xBVEVEIEZPUk0KICAgICdcdWZiOTQnICAgIyAgMHhFNiAtPiBBUkFCSUMgTEVUVEVSIEdBRiBJTklUSUFMIEZPUk0KICAgICdcdWZlZGQnICAgIyAgMHhFNyAtPiBBUkFCSUMgTEVUVEVSIExBTSBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWRmJyAgICMgIDB4RTggLT4gQVJBQklDIExFVFRFUiBMQU0gSU5JVElBTCBGT1JNCiAgICAnXHVmZWUwJyAgICMgIDB4RTkgLT4gQVJBQklDIExFVFRFUiBMQU0gTUVESUFMIEZPUk0KICAgICdcdWZlZTEnICAgIyAgMHhFQSAtPiBBUkFCSUMgTEVUVEVSIE1FRU0gSVNPTEFURUQgRk9STQogICAgJ1x1ZmVlMycgICAjICAweEVCIC0+IEFSQUJJQyBMRVRURVIgTUVFTSBJTklUSUFMIEZPUk0KICAgICdcdWZiOWUnICAgIyAgMHhFQyAtPiBBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BIElTT0xBVEVEIEZPUk0KICAgICdcdWZlZTUnICAgIyAgMHhFRCAtPiBBUkFCSUMgTEVUVEVSIE5PT04gSVNPTEFURUQgRk9STQogICAgJ1x1ZmVlNycgICAjICAweEVFIC0+IEFSQUJJQyBMRVRURVIgTk9PTiBJTklUSUFMIEZPUk0KICAgICdcdWZlODUnICAgIyAgMHhFRiAtPiBBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgICdcdWZlZWQnICAgIyAgMHhGMCAtPiBBUkFCSUMgTEVUVEVSIFdBVyBJU09MQVRFRCBGT1JNCiAgICAnXHVmYmE2JyAgICMgIDB4RjEgLT4gQVJBQklDIExFVFRFUiBIRUggR09BTCBJU09MQVRFRCBGT1JNCiAgICAnXHVmYmE4JyAgICMgIDB4RjIgLT4gQVJBQklDIExFVFRFUiBIRUggR09BTCBJTklUSUFMIEZPUk0KICAgICdcdWZiYTknICAgIyAgMHhGMyAtPiBBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIE1FRElBTCBGT1JNCiAgICAnXHVmYmFhJyAgICMgIDB4RjQgLT4gQVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgSVNPTEFURUQgRk9STQogICAgJ1x1ZmU4MCcgICAjICAweEY1IC0+IEFSQUJJQyBMRVRURVIgSEFNWkEgSVNPTEFURUQgRk9STQogICAgJ1x1ZmU4OScgICAjICAweEY2IC0+IEFSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STQogICAgJ1x1ZmU4YScgICAjICAweEY3IC0+IEFSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQogICAgJ1x1ZmU4YicgICAjICAweEY4IC0+IEFSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgSU5JVElBTCBGT1JNCiAgICAnXHVmZWYxJyAgICMgIDB4RjkgLT4gQVJBQklDIExFVFRFUiBZRUggSVNPTEFURUQgRk9STQogICAgJ1x1ZmVmMicgICAjICAweEZBIC0+IEFSQUJJQyBMRVRURVIgWUVIIEZJTkFMIEZPUk0KICAgICdcdWZlZjMnICAgIyAgMHhGQiAtPiBBUkFCSUMgTEVUVEVSIFlFSCBJTklUSUFMIEZPUk0KICAgICdcdWZiYjAnICAgIyAgMHhGQyAtPiBBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNCiAgICAnXHVmYmFlJyAgICMgIDB4RkQgLT4gQVJBQklDIExFVFRFUiBZRUggQkFSUkVFIElTT0xBVEVEIEZPUk0KICAgICdcdWZlN2MnICAgIyAgMHhGRSAtPiBBUkFCSUMgU0hBRERBIElTT0xBVEVEIEZPUk0KICAgICdcdWZlN2QnICAgIyAgMHhGRiAtPiBBUkFCSUMgU0hBRERBIE1FRElBTCBGT1JNCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1bhbGuuOTMAADkzAAATAAAAZW5jb2RpbmdzL2NwMTAyNi5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AxMDI2IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9FQkNESUMvQ1AxMDI2LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3AxMDI2JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4OWMnICAgICAjICAweDA0IC0+IENPTlRST0wKICAgICdcdCcgICAgICAgIyAgMHgwNSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdceDg2JyAgICAgIyAgMHgwNiAtPiBDT05UUk9MCiAgICAnXHg3ZicgICAgICMgIDB4MDcgLT4gREVMRVRFCiAgICAnXHg5NycgICAgICMgIDB4MDggLT4gQ09OVFJPTAogICAgJ1x4OGQnICAgICAjICAweDA5IC0+IENPTlRST0wKICAgICdceDhlJyAgICAgIyAgMHgwQSAtPiBDT05UUk9MCiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHg5ZCcgICAgICMgIDB4MTQgLT4gQ09OVFJPTAogICAgJ1x4ODUnICAgICAjICAweDE1IC0+IENPTlRST0wKICAgICdceDA4JyAgICAgIyAgMHgxNiAtPiBCQUNLU1BBQ0UKICAgICdceDg3JyAgICAgIyAgMHgxNyAtPiBDT05UUk9MCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4OTInICAgICAjICAweDFBIC0+IENPTlRST0wKICAgICdceDhmJyAgICAgIyAgMHgxQiAtPiBDT05UUk9MCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICdceDgwJyAgICAgIyAgMHgyMCAtPiBDT05UUk9MCiAgICAnXHg4MScgICAgICMgIDB4MjEgLT4gQ09OVFJPTAogICAgJ1x4ODInICAgICAjICAweDIyIC0+IENPTlRST0wKICAgICdceDgzJyAgICAgIyAgMHgyMyAtPiBDT05UUk9MCiAgICAnXHg4NCcgICAgICMgIDB4MjQgLT4gQ09OVFJPTAogICAgJ1xuJyAgICAgICAjICAweDI1IC0+IExJTkUgRkVFRAogICAgJ1x4MTcnICAgICAjICAweDI2IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDFiJyAgICAgIyAgMHgyNyAtPiBFU0NBUEUKICAgICdceDg4JyAgICAgIyAgMHgyOCAtPiBDT05UUk9MCiAgICAnXHg4OScgICAgICMgIDB4MjkgLT4gQ09OVFJPTAogICAgJ1x4OGEnICAgICAjICAweDJBIC0+IENPTlRST0wKICAgICdceDhiJyAgICAgIyAgMHgyQiAtPiBDT05UUk9MCiAgICAnXHg4YycgICAgICMgIDB4MkMgLT4gQ09OVFJPTAogICAgJ1x4MDUnICAgICAjICAweDJEIC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgyRSAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDJGIC0+IEJFTEwKICAgICdceDkwJyAgICAgIyAgMHgzMCAtPiBDT05UUk9MCiAgICAnXHg5MScgICAgICMgIDB4MzEgLT4gQ09OVFJPTAogICAgJ1x4MTYnICAgICAjICAweDMyIC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDkzJyAgICAgIyAgMHgzMyAtPiBDT05UUk9MCiAgICAnXHg5NCcgICAgICMgIDB4MzQgLT4gQ09OVFJPTAogICAgJ1x4OTUnICAgICAjICAweDM1IC0+IENPTlRST0wKICAgICdceDk2JyAgICAgIyAgMHgzNiAtPiBDT05UUk9MCiAgICAnXHgwNCcgICAgICMgIDB4MzcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4OTgnICAgICAjICAweDM4IC0+IENPTlRST0wKICAgICdceDk5JyAgICAgIyAgMHgzOSAtPiBDT05UUk9MCiAgICAnXHg5YScgICAgICMgIDB4M0EgLT4gQ09OVFJPTAogICAgJ1x4OWInICAgICAjICAweDNCIC0+IENPTlRST0wKICAgICdceDE0JyAgICAgIyAgMHgzQyAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4M0QgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDllJyAgICAgIyAgMHgzRSAtPiBDT05UUk9MCiAgICAnXHgxYScgICAgICMgIDB4M0YgLT4gU1VCU1RJVFVURQogICAgJyAnICAgICAgICAjICAweDQwIC0+IFNQQUNFCiAgICAnXHhhMCcgICAgICMgIDB4NDEgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdceGUyJyAgICAgIyAgMHg0MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGU0JyAgICAgIyAgMHg0MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTAnICAgICAjICAweDQ0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGUxJyAgICAgIyAgMHg0NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlMycgICAgICMgIDB4NDYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZTUnICAgICAjICAweDQ3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ3snICAgICAgICAjICAweDQ4IC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ1x4ZjEnICAgICAjICAweDQ5IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGM3JyAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJy4nICAgICAgICAjICAweDRCIC0+IEZVTEwgU1RPUAogICAgJzwnICAgICAgICAjICAweDRDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnKCcgICAgICAgICMgIDB4NEQgLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJysnICAgICAgICAjICAweDRFIC0+IFBMVVMgU0lHTgogICAgJyEnICAgICAgICAjICAweDRGIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICcmJyAgICAgICAgIyAgMHg1MCAtPiBBTVBFUlNBTkQKICAgICdceGU5JyAgICAgIyAgMHg1MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlYScgICAgICMgIDB4NTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlYicgICAgICMgIDB4NTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGU4JyAgICAgIyAgMHg1NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlZCcgICAgICMgIDB4NTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4ZWUnICAgICAjICAweDU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWYnICAgICAjICAweDU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhlYycgICAgICMgIDB4NTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZGYnICAgICAjICAweDU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHRVJNQU4pCiAgICAnXHUwMTFlJyAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEJSRVZFCiAgICAnXHUwMTMwJyAgICMgIDB4NUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQogICAgJyonICAgICAgICAjICAweDVDIC0+IEFTVEVSSVNLCiAgICAnKScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICc7JyAgICAgICAgIyAgMHg1RSAtPiBTRU1JQ09MT04KICAgICdeJyAgICAgICAgIyAgMHg1RiAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJy0nICAgICAgICAjICAweDYwIC0+IEhZUEhFTi1NSU5VUwogICAgJy8nICAgICAgICAjICAweDYxIC0+IFNPTElEVVMKICAgICdceGMyJyAgICAgIyAgMHg2MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzQnICAgICAjICAweDYzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGMwJyAgICAgIyAgMHg2NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMxJyAgICAgIyAgMHg2NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGMzJyAgICAgIyAgMHg2NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGM1JyAgICAgIyAgMHg2NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1snICAgICAgICAjICAweDY4IC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdceGQxJyAgICAgIyAgMHg2OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdcdTAxNWYnICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENFRElMTEEKICAgICcsJyAgICAgICAgIyAgMHg2QiAtPiBDT01NQQogICAgJyUnICAgICAgICAjICAweDZDIC0+IFBFUkNFTlQgU0lHTgogICAgJ18nICAgICAgICAjICAweDZEIC0+IExPVyBMSU5FCiAgICAnPicgICAgICAgICMgIDB4NkUgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHg2RiAtPiBRVUVTVElPTiBNQVJLCiAgICAnXHhmOCcgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGM5JyAgICAgIyAgMHg3MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGNhJyAgICAgIyAgMHg3MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweDczIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGM4JyAgICAgIyAgMHg3NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGNkJyAgICAgIyAgMHg3NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHg3NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2YnICAgICAjICAweDc3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGNjJyAgICAgIyAgMHg3OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdcdTAxMzEnICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCiAgICAnOicgICAgICAgICMgIDB4N0EgLT4gQ09MT04KICAgICdceGQ2JyAgICAgIyAgMHg3QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTVlJyAgICMgIDB4N0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENFRElMTEEKICAgICInIiAgICAgICAgIyAgMHg3RCAtPiBBUE9TVFJPUEhFCiAgICAnPScgICAgICAgICMgIDB4N0UgLT4gRVFVQUxTIFNJR04KICAgICdceGRjJyAgICAgIyAgMHg3RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhkOCcgICAgICMgIDB4ODAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ2EnICAgICAgICAjICAweDgxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4ODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDg0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4ODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg4NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg4OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ1x4YWInICAgICAjICAweDhBIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4OEIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnfScgICAgICAgICMgIDB4OEMgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ2AnICAgICAgICAjICAweDhEIC0+IEdSQVZFIEFDQ0VOVAogICAgJ1x4YTYnICAgICAjICAweDhFIC0+IEJST0tFTiBCQVIKICAgICdceGIxJyAgICAgIyAgMHg4RiAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdceGIwJyAgICAgIyAgMHg5MCAtPiBERUdSRUUgU0lHTgogICAgJ2onICAgICAgICAjICAweDkxIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4OTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4OTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg5NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg5OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ1x4YWEnICAgICAjICAweDlBIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYScgICAgICMgIDB4OUIgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhlNicgICAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgICdceGI4JyAgICAgIyAgMHg5RCAtPiBDRURJTExBCiAgICAnXHhjNicgICAgICMgIDB4OUUgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBBRQogICAgJ1x4YTQnICAgICAjICAweDlGIC0+IENVUlJFTkNZIFNJR04KICAgICdceGI1JyAgICAgIyAgMHhBMCAtPiBNSUNSTyBTSUdOCiAgICAnXHhmNicgICAgICMgIDB4QTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdzJyAgICAgICAgIyAgMHhBMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweEEzIC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4QTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHhBNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweEE2IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4QTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHhBOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweEE5IC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAnXHhhMScgICAgICMgIDB4QUEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YmYnICAgICAjICAweEFCIC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICddJyAgICAgICAgIyAgMHhBQyAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJyQnICAgICAgICAjICAweEFEIC0+IERPTExBUiBTSUdOCiAgICAnQCcgICAgICAgICMgIDB4QUUgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ1x4YWUnICAgICAjICAweEFGIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YTInICAgICAjICAweEIwIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEIxIC0+IFBPVU5EIFNJR04KICAgICdceGE1JyAgICAgIyAgMHhCMiAtPiBZRU4gU0lHTgogICAgJ1x4YjcnICAgICAjICAweEIzIC0+IE1JRERMRSBET1QKICAgICdceGE5JyAgICAgIyAgMHhCNCAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x4YTcnICAgICAjICAweEI1IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YmMnICAgICAjICAweEI3IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YmQnICAgICAjICAweEI4IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmUnICAgICAjICAweEI5IC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgJ1x4YWMnICAgICAjICAweEJBIC0+IE5PVCBTSUdOCiAgICAnfCcgICAgICAgICMgIDB4QkIgLT4gVkVSVElDQUwgTElORQogICAgJ1x4YWYnICAgICAjICAweEJDIC0+IE1BQ1JPTgogICAgJ1x4YTgnICAgICAjICAweEJEIC0+IERJQUVSRVNJUwogICAgJ1x4YjQnICAgICAjICAweEJFIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4ZDcnICAgICAjICAweEJGIC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdceGU3JyAgICAgIyAgMHhDMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdBJyAgICAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4QzIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHhDNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdceGFkJyAgICAgIyAgMHhDQSAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4ZjQnICAgICAjICAweENCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ34nICAgICAgICAjICAweENDIC0+IFRJTERFCiAgICAnXHhmMicgICAgICMgIDB4Q0QgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGY1JyAgICAgIyAgMHhDRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHUwMTFmJyAgICMgIDB4RDAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBCUkVWRQogICAgJ0onICAgICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweEQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1x4YjknICAgICAjICAweERBIC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x4ZmInICAgICAjICAweERCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1xcJyAgICAgICAjICAweERDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ1x4ZjknICAgICAjICAweEREIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGZhJyAgICAgIyAgMHhERSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmZicgICAgICMgIDB4REYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdceGZjJyAgICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjcnICAgICAjICAweEUxIC0+IERJVklTSU9OIFNJR04KICAgICdTJyAgICAgICAgIyAgMHhFMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4RTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweEU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1x4YjInICAgICAjICAweEVBIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4ZDQnICAgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnIycgICAgICAgICMgIDB4RUMgLT4gTlVNQkVSIFNJR04KICAgICdceGQyJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGQzJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGQ1JyAgICAgIyAgMHhFRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICcwJyAgICAgICAgIyAgMHhGMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4RjEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4RjIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4RjMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHhGNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4RjUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweEY2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweEY3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4RjggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHhGOSAtPiBESUdJVCBOSU5FCiAgICAnXHhiMycgICAgICMgIDB4RkEgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGRiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJyInICAgICAgICAjICAweEZDIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnXHhkOScgICAgICMgIDB4RkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhkYScgICAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHg5ZicgICAgICMgIDB4RkYgLT4gQ09OVFJPTAopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWPHN6MCWHAAAlhwAAEwAAAGVuY29kaW5ncy9jcDExMjUucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGZvciBDUDExMjUKCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDExMjUnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDQxMCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA4MTogMHgwNDExLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKICAgIDB4MDA4MjogMHgwNDEyLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKICAgIDB4MDA4MzogMHgwNDEzLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAweDAwODQ6IDB4MDQxNCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiAgICAweDAwODU6IDB4MDQxNSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCiAgICAweDAwODY6IDB4MDQxNiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgMHgwMDg3OiAweDA0MTcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQogICAgMHgwMDg4OiAweDA0MTgsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwODk6IDB4MDQxOSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgIDB4MDA4YTogMHgwNDFhLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKICAgIDB4MDA4YjogMHgwNDFiLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKICAgIDB4MDA4YzogMHgwNDFjLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgIDB4MDA4ZDogMHgwNDFkLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KICAgIDB4MDA4ZTogMHgwNDFlLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwMDhmOiAweDA0MWYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgMHgwMDkwOiAweDA0MjAsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgogICAgMHgwMDkxOiAweDA0MjEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwogICAgMHgwMDkyOiAweDA0MjIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgMHgwMDkzOiAweDA0MjMsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwOTQ6IDB4MDQyNCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCiAgICAweDAwOTU6IDB4MDQyNSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAweDAwOTY6IDB4MDQyNiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQogICAgMHgwMDk3OiAweDA0MjcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKICAgIDB4MDA5ODogMHgwNDI4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAweDAwOTk6IDB4MDQyOSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAweDAwOWE6IDB4MDQyYSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgogICAgMHgwMDliOiAweDA0MmIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAweDAwOWM6IDB4MDQyYywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgogICAgMHgwMDlkOiAweDA0MmQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCiAgICAweDAwOWU6IDB4MDQyZSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAweDAwOWY6IDB4MDQyZiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiAgICAweDAwYTA6IDB4MDQzMCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBBCiAgICAweDAwYTE6IDB4MDQzMSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgMHgwMGEyOiAweDA0MzIsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKICAgIDB4MDBhMzogMHgwNDMzLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQogICAgMHgwMGE0OiAweDA0MzQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgIDB4MDBhNTogMHgwNDM1LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCiAgICAweDAwYTY6IDB4MDQzNiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKICAgIDB4MDBhNzogMHgwNDM3LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAweDAwYTg6IDB4MDQzOCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBJCiAgICAweDAwYTk6IDB4MDQzOSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCiAgICAweDAwYWE6IDB4MDQzYSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgMHgwMGFiOiAweDA0M2IsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKICAgIDB4MDBhYzogMHgwNDNjLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCiAgICAweDAwYWQ6IDB4MDQzZCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgMHgwMGFlOiAweDA0M2UsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwogICAgMHgwMGFmOiAweDA0M2YsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKICAgIDB4MDBiMDogMHgyNTkxLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MDBiMTogMHgyNTkyLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDAwYjI6IDB4MjU5MywgICAgICMgIERBUksgU0hBREUKICAgIDB4MDBiMzogMHgyNTAyLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAweDAwYjQ6IDB4MjUyNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGI1OiAweDI1NjEsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGI2OiAweDI1NjIsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGI3OiAweDI1NTYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDAwYjg6IDB4MjU1NSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiOTogMHgyNTYzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGJhOiAweDI1NTEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDAwYmI6IDB4MjU1NywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgwMGJjOiAweDI1NWQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDAwYmQ6IDB4MjU1YywgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDAwYmU6IDB4MjU1YiwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYmY6IDB4MjUxMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDAwYzA6IDB4MjUxNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MDBjMTogMHgyNTM0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDAwYzI6IDB4MjUyYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDAwYzM6IDB4MjUxYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjNDogMHgyNTAwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgIDB4MDBjNTogMHgyNTNjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDAwYzY6IDB4MjU1ZSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgwMGM3OiAweDI1NWYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBjODogMHgyNTVhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MDBjOTogMHgyNTU0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgwMGNhOiAweDI1NjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2I6IDB4MjU2NiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNjOiAweDI1NjAsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGNkOiAweDI1NTAsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgIDB4MDBjZTogMHgyNTZjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNmOiAweDI1NjcsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQwOiAweDI1NjgsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgwMGQxOiAweDI1NjQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDAwZDI6IDB4MjU2NSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkMzogMHgyNTU5LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwZDQ6IDB4MjU1OCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgwMGQ1OiAweDI1NTIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgwMGQ2OiAweDI1NTMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGQ3OiAweDI1NmIsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgwMGQ4OiAweDI1NmEsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQ5OiAweDI1MTgsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MDBkYTogMHgyNTBjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDAwZGI6IDB4MjU4OCwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MDBkYzogMHgyNTg0LCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgwMGRkOiAweDI1OGMsICAgICAjICBMRUZUIEhBTEYgQkxPQ0sKICAgIDB4MDBkZTogMHgyNTkwLCAgICAgIyAgUklHSFQgSEFMRiBCTE9DSwogICAgMHgwMGRmOiAweDI1ODAsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDAwZTA6IDB4MDQ0MCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgogICAgMHgwMGUxOiAweDA0NDEsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKICAgIDB4MDBlMjogMHgwNDQyLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAweDAwZTM6IDB4MDQ0MywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBVCiAgICAweDAwZTQ6IDB4MDQ0NCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgogICAgMHgwMGU1OiAweDA0NDUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKICAgIDB4MDBlNjogMHgwNDQ2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQogICAgMHgwMGU3OiAweDA0NDcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCiAgICAweDAwZTg6IDB4MDQ0OCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKICAgIDB4MDBlOTogMHgwNDQ5LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAweDAwZWE6IDB4MDQ0YSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KICAgIDB4MDBlYjogMHgwNDRiLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKICAgIDB4MDBlYzogMHgwNDRjLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgMHgwMGVkOiAweDA0NGQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQogICAgMHgwMGVlOiAweDA0NGUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKICAgIDB4MDBlZjogMHgwNDRmLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCiAgICAweDAwZjA6IDB4MDQwMSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCiAgICAweDAwZjE6IDB4MDQ1MSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgMHgwMGYyOiAweDA0OTAsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KICAgIDB4MDBmMzogMHgwNDkxLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTgogICAgMHgwMGY0OiAweDA0MDQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgIDB4MDBmNTogMHgwNDU0LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgMHgwMGY2OiAweDA0MDYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKICAgIDB4MDBmNzogMHgwNDU2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgMHgwMGY4OiAweDA0MDcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQogICAgMHgwMGY5OiAweDA0NTcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUkKICAgIDB4MDBmYTogMHgwMGI3LCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGZiOiAweDIyMWEsICAgICAjICBTUVVBUkUgUk9PVAogICAgMHgwMGZjOiAweDIxMTYsICAgICAjICBOVU1FUk8gU0lHTgogICAgMHgwMGZkOiAweDAwYTQsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdcdTA0MTAnICAgIyAgMHgwMDgwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgICdcdTA0MTEnICAgIyAgMHgwMDgxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCiAgICAnXHUwNDEyJyAgICMgIDB4MDA4MiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQogICAgJ1x1MDQxMycgICAjICAweDAwODMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAnXHUwNDE0JyAgICMgIDB4MDA4NCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQogICAgJ1x1MDQxNScgICAjICAweDAwODUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKICAgICdcdTA0MTYnICAgIyAgMHgwMDg2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQxNycgICAjICAweDAwODcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKICAgICdcdTA0MTgnICAgIyAgMHgwMDg4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKICAgICdcdTA0MTknICAgIyAgMHgwMDg5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0MWEnICAgIyAgMHgwMDhhIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCiAgICAnXHUwNDFiJyAgICMgIDB4MDA4YiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAogICAgJ1x1MDQxYycgICAjICAweDAwOGMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0MWQnICAgIyAgMHgwMDhkIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCiAgICAnXHUwNDFlJyAgICMgIDB4MDA4ZSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCiAgICAnXHUwNDFmJyAgICMgIDB4MDA4ZiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQyMCcgICAjICAweDAwOTAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKICAgICdcdTA0MjEnICAgIyAgMHgwMDkxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCiAgICAnXHUwNDIyJyAgICMgIDB4MDA5MiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgJ1x1MDQyMycgICAjICAweDAwOTMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQogICAgJ1x1MDQyNCcgICAjICAweDAwOTQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKICAgICdcdTA0MjUnICAgIyAgMHgwMDk1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDI2JyAgICMgIDB4MDA5NiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKICAgICdcdTA0MjcnICAgIyAgMHgwMDk3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQogICAgJ1x1MDQyOCcgICAjICAweDAwOTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAnXHUwNDI5JyAgICMgIDB4MDA5OSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQogICAgJ1x1MDQyYScgICAjICAweDAwOWEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCiAgICAnXHUwNDJiJyAgICMgIDB4MDA5YiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAnXHUwNDJjJyAgICMgIDB4MDA5YyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KICAgICdcdTA0MmQnICAgIyAgMHgwMDlkIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKICAgICdcdTA0MmUnICAgIyAgMHgwMDllIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAnXHUwNDJmJyAgICMgIDB4MDA5ZiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQogICAgJ1x1MDQzMCcgICAjICAweDAwYTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKICAgICdcdTA0MzEnICAgIyAgMHgwMGExIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgJ1x1MDQzMicgICAjICAweDAwYTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCiAgICAnXHUwNDMzJyAgICMgIDB4MDBhMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCiAgICAnXHUwNDM0JyAgICMgIDB4MDBhNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgICdcdTA0MzUnICAgIyAgMHgwMGE1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQogICAgJ1x1MDQzNicgICAjICAweDAwYTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQogICAgJ1x1MDQzNycgICAjICAweDAwYTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAnXHUwNDM4JyAgICMgIDB4MDBhOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQogICAgJ1x1MDQzOScgICAjICAweDAwYTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0M2EnICAgIyAgMHgwMGFhIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgJ1x1MDQzYicgICAjICAweDAwYWIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCiAgICAnXHUwNDNjJyAgICMgIDB4MDBhYyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KICAgICdcdTA0M2QnICAgIyAgMHgwMGFkIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgJ1x1MDQzZScgICAjICAweDAwYWUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KICAgICdcdTA0M2YnICAgIyAgMHgwMGFmIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBQRQogICAgJ1x1MjU5MScgICAjICAweDAwYjAgLT4gTElHSFQgU0hBREUKICAgICdcdTI1OTInICAgIyAgMHgwMGIxIC0+IE1FRElVTSBTSEFERQogICAgJ1x1MjU5MycgICAjICAweDAwYjIgLT4gREFSSyBTSEFERQogICAgJ1x1MjUwMicgICAjICAweDAwYjMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAnXHUyNTI0JyAgICMgIDB4MDBiNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NjEnICAgIyAgMHgwMGI1IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTYyJyAgICMgIDB4MDBiNiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1NicgICAjICAweDAwYjcgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1NScgICAjICAweDAwYjggLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHUyNTVjJyAgICMgIDB4MDBiZCAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1YicgICAjICAweDAwYmUgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1MTAnICAgIyAgMHgwMGJmIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAnXHUyNTE0JyAgICMgIDB4MDBjMCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTM0JyAgICMgIDB4MDBjMSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1MmMnICAgIyAgMHgwMGMyIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTFjJyAgICMgIDB4MDBjMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTAwJyAgICMgIDB4MDBjNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgJ1x1MjUzYycgICAjICAweDAwYzUgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTVlJyAgICMgIDB4MDBjNiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NWYnICAgIyAgMHgwMGM3IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU1YScgICAjICAweDAwYzggLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgICdcdTI1NTQnICAgIyAgMHgwMGM5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1NjknICAgIyAgMHgwMGNhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjYnICAgIyAgMHgwMGNiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2MCcgICAjICAweDAwY2MgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1NTAnICAgIyAgMHgwMGNkIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgJ1x1MjU2YycgICAjICAweDAwY2UgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NycgICAjICAweDAwY2YgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1NjgnICAgIyAgMHgwMGQwIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTY0JyAgICMgIDB4MDBkMSAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTY1JyAgICMgIDB4MDBkMiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTU5JyAgICMgIDB4MDBkMyAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NTgnICAgIyAgMHgwMGQ0IC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MjU1MicgICAjICAweDAwZDUgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTMnICAgIyAgMHgwMGQ2IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTZiJyAgICMgIDB4MDBkNyAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU2YScgICAjICAweDAwZDggLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHUyNThjJyAgICMgIDB4MDBkZCAtPiBMRUZUIEhBTEYgQkxPQ0sKICAgICdcdTI1OTAnICAgIyAgMHgwMGRlIC0+IFJJR0hUIEhBTEYgQkxPQ0sKICAgICdcdTI1ODAnICAgIyAgMHgwMGRmIC0+IFVQUEVSIEhBTEYgQkxPQ0sKICAgICdcdTA0NDAnICAgIyAgMHgwMGUwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgogICAgJ1x1MDQ0MScgICAjICAweDAwZTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAnXHUwNDQyJyAgICMgIDB4MDBlMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKICAgICdcdTA0NDMnICAgIyAgMHgwMGUzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVCiAgICAnXHUwNDQ0JyAgICMgIDB4MDBlNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKICAgICdcdTA0NDUnICAgIyAgMHgwMGU1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQogICAgJ1x1MDQ0NicgICAjICAweDAwZTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQogICAgJ1x1MDQ0NycgICAjICAweDAwZTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQogICAgJ1x1MDQ0OCcgICAjICAweDAwZTggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQogICAgJ1x1MDQ0OScgICAjICAweDAwZTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDRhJyAgICMgIDB4MDBlYSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCiAgICAnXHUwNDRiJyAgICMgIDB4MDBlYiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQogICAgJ1x1MDQ0YycgICAjICAweDAwZWMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgJ1x1MDQ0ZCcgICAjICAweDAwZWQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKICAgICdcdTA0NGUnICAgIyAgMHgwMGVlIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQogICAgJ1x1MDQ0ZicgICAjICAweDAwZWYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCiAgICAnXHUwNDAxJyAgICMgIDB4MDBmMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTwogICAgJ1x1MDQ1MScgICAjICAweDAwZjEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiAgICAnXHUwNDkwJyAgICMgIDB4MDBmMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KICAgICdcdTA0OTEnICAgIyAgMHgwMGYzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KICAgICdcdTA0MDQnICAgIyAgMHgwMGY0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgJ1x1MDQ1NCcgICAjICAweDAwZjUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgJ1x1MDQwNicgICAjICAweDAwZjYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAnXHUwNDU2JyAgICMgIDB4MDBmNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAnXHUwNDA3JyAgICMgIDB4MDBmOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQogICAgJ1x1MDQ1NycgICAjICAweDAwZjkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJCiAgICAnXHhiNycgICAgICMgIDB4MDBmYSAtPiBNSURETEUgRE9UCiAgICAnXHUyMjFhJyAgICMgIDB4MDBmYiAtPiBTUVVBUkUgUk9PVAogICAgJ1x1MjExNicgICAjICAweDAwZmMgLT4gTlVNRVJPIFNJR04KICAgICdceGE0JyAgICAgIyAgMHgwMGZkIC0+IENVUlJFTkNZIFNJR04KICAgICdcdTI1YTAnICAgIyAgMHgwMGZlIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YTAnICAgICAjICAweDAwZmYgLT4gTk8tQlJFQUsgU1BBQ0UKKQoKIyMjIEVuY29kaW5nIE1hcAoKZW5jb2RpbmdfbWFwID0gewogICAgMHgwMDAwOiAweDAwMDAsICAgICAjICBOVUxMCiAgICAweDAwMDE6IDB4MDAwMSwgICAgICMgIFNUQVJUIE9GIEhFQURJTkcKICAgIDB4MDAwMjogMHgwMDAyLCAgICAgIyAgU1RBUlQgT0YgVEVYVAogICAgMHgwMDAzOiAweDAwMDMsICAgICAjICBFTkQgT0YgVEVYVAogICAgMHgwMDA0OiAweDAwMDQsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAweDAwMDU6IDB4MDAwNSwgICAgICMgIEVOUVVJUlkKICAgIDB4MDAwNjogMHgwMDA2LCAgICAgIyAgQUNLTk9XTEVER0UKICAgIDB4MDAwNzogMHgwMDA3LCAgICAgIyAgQkVMTAogICAgMHgwMDA4OiAweDAwMDgsICAgICAjICBCQUNLU1BBQ0UKICAgIDB4MDAwOTogMHgwMDA5LCAgICAgIyAgSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAweDAwMGE6IDB4MDAwYSwgICAgICMgIExJTkUgRkVFRAogICAgMHgwMDBiOiAweDAwMGIsICAgICAjICBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAweDAwMGM6IDB4MDAwYywgICAgICMgIEZPUk0gRkVFRAogICAgMHgwMDBkOiAweDAwMGQsICAgICAjICBDQVJSSUFHRSBSRVRVUk4KICAgIDB4MDAwZTogMHgwMDBlLCAgICAgIyAgU0hJRlQgT1VUCiAgICAweDAwMGY6IDB4MDAwZiwgICAgICMgIFNISUZUIElOCiAgICAweDAwMTA6IDB4MDAxMCwgICAgICMgIERBVEEgTElOSyBFU0NBUEUKICAgIDB4MDAxMTogMHgwMDExLCAgICAgIyAgREVWSUNFIENPTlRST0wgT05FCiAgICAweDAwMTI6IDB4MDAxMiwgICAgICMgIERFVklDRSBDT05UUk9MIFRXTwogICAgMHgwMDEzOiAweDAwMTMsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgMHgwMDE0OiAweDAwMTQsICAgICAjICBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAweDAwMTU6IDB4MDAxNSwgICAgICMgIE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAweDAwMTY6IDB4MDAxNiwgICAgICMgIFNZTkNIUk9OT1VTIElETEUKICAgIDB4MDAxNzogMHgwMDE3LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgMHgwMDE4OiAweDAwMTgsICAgICAjICBDQU5DRUwKICAgIDB4MDAxOTogMHgwMDE5LCAgICAgIyAgRU5EIE9GIE1FRElVTQogICAgMHgwMDFhOiAweDAwMWEsICAgICAjICBTVUJTVElUVVRFCiAgICAweDAwMWI6IDB4MDAxYiwgICAgICMgIEVTQ0FQRQogICAgMHgwMDFjOiAweDAwMWMsICAgICAjICBGSUxFIFNFUEFSQVRPUgogICAgMHgwMDFkOiAweDAwMWQsICAgICAjICBHUk9VUCBTRVBBUkFUT1IKICAgIDB4MDAxZTogMHgwMDFlLCAgICAgIyAgUkVDT1JEIFNFUEFSQVRPUgogICAgMHgwMDFmOiAweDAwMWYsICAgICAjICBVTklUIFNFUEFSQVRPUgogICAgMHgwMDIwOiAweDAwMjAsICAgICAjICBTUEFDRQogICAgMHgwMDIxOiAweDAwMjEsICAgICAjICBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwMjI6IDB4MDAyMiwgICAgICMgIFFVT1RBVElPTiBNQVJLCiAgICAweDAwMjM6IDB4MDAyMywgICAgICMgIE5VTUJFUiBTSUdOCiAgICAweDAwMjQ6IDB4MDAyNCwgICAgICMgIERPTExBUiBTSUdOCiAgICAweDAwMjU6IDB4MDAyNSwgICAgICMgIFBFUkNFTlQgU0lHTgogICAgMHgwMDI2OiAweDAwMjYsICAgICAjICBBTVBFUlNBTkQKICAgIDB4MDAyNzogMHgwMDI3LCAgICAgIyAgQVBPU1RST1BIRQogICAgMHgwMDI4OiAweDAwMjgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTCiAgICAweDAwMjk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTCiAgICAweDAwMmE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLCiAgICAweDAwMmI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTgogICAgMHgwMDJjOiAweDAwMmMsICAgICAjICBDT01NQQogICAgMHgwMDJkOiAweDAwMmQsICAgICAjICBIWVBIRU4tTUlOVVMKICAgIDB4MDAyZTogMHgwMDJlLCAgICAgIyAgRlVMTCBTVE9QCiAgICAweDAwMmY6IDB4MDAyZiwgICAgICMgIFNPTElEVVMKICAgIDB4MDAzMDogMHgwMDMwLCAgICAgIyAgRElHSVQgWkVSTwogICAgMHgwMDMxOiAweDAwMzEsICAgICAjICBESUdJVCBPTkUKICAgIDB4MDAzMjogMHgwMDMyLCAgICAgIyAgRElHSVQgVFdPCiAgICAweDAwMzM6IDB4MDAzMywgICAgICMgIERJR0lUIFRIUkVFCiAgICAweDAwMzQ6IDB4MDAzNCwgICAgICMgIERJR0lUIEZPVVIKICAgIDB4MDAzNTogMHgwMDM1LCAgICAgIyAgRElHSVQgRklWRQogICAgMHgwMDM2OiAweDAwMzYsICAgICAjICBESUdJVCBTSVgKICAgIDB4MDAzNzogMHgwMDM3LCAgICAgIyAgRElHSVQgU0VWRU4KICAgIDB4MDAzODogMHgwMDM4LCAgICAgIyAgRElHSVQgRUlHSFQKICAgIDB4MDAzOTogMHgwMDM5LCAgICAgIyAgRElHSVQgTklORQogICAgMHgwMDNhOiAweDAwM2EsICAgICAjICBDT0xPTgogICAgMHgwMDNiOiAweDAwM2IsICAgICAjICBTRU1JQ09MT04KICAgIDB4MDAzYzogMHgwMDNjLCAgICAgIyAgTEVTUy1USEFOIFNJR04KICAgIDB4MDAzZDogMHgwMDNkLCAgICAgIyAgRVFVQUxTIFNJR04KICAgIDB4MDAzZTogMHgwMDNlLCAgICAgIyAgR1JFQVRFUi1USEFOIFNJR04KICAgIDB4MDAzZjogMHgwMDNmLCAgICAgIyAgUVVFU1RJT04gTUFSSwogICAgMHgwMDQwOiAweDAwNDAsICAgICAjICBDT01NRVJDSUFMIEFUCiAgICAweDAwNDE6IDB4MDA0MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA0MjogMHgwMDQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgMHgwMDQzOiAweDAwNDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAweDAwNDQ6IDB4MDA0NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgIDB4MDA0NTogMHgwMDQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgMHgwMDQ2OiAweDAwNDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAweDAwNDc6IDB4MDA0NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgIDB4MDA0ODogMHgwMDQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgMHgwMDQ5OiAweDAwNDksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwNGE6IDB4MDA0YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgIDB4MDA0YjogMHgwMDRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgMHgwMDRjOiAweDAwNGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAweDAwNGQ6IDB4MDA0ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgIDB4MDA0ZTogMHgwMDRlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgMHgwMDRmOiAweDAwNGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAweDAwNTA6IDB4MDA1MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgIDB4MDA1MTogMHgwMDUxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgMHgwMDUyOiAweDAwNTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAweDAwNTM6IDB4MDA1MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgIDB4MDA1NDogMHgwMDU0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgMHgwMDU1OiAweDAwNTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwNTY6IDB4MDA1NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgIDB4MDA1NzogMHgwMDU3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgMHgwMDU4OiAweDAwNTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAweDAwNTk6IDB4MDA1OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgIDB4MDA1YTogMHgwMDVhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgMHgwMDViOiAweDAwNWIsICAgICAjICBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWM6IDB4MDA1YywgICAgICMgIFJFVkVSU0UgU09MSURVUwogICAgMHgwMDVkOiAweDAwNWQsICAgICAjICBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVlOiAweDAwNWUsICAgICAjICBDSVJDVU1GTEVYIEFDQ0VOVAogICAgMHgwMDVmOiAweDAwNWYsICAgICAjICBMT1cgTElORQogICAgMHgwMDYwOiAweDAwNjAsICAgICAjICBHUkFWRSBBQ0NFTlQKICAgIDB4MDA2MTogMHgwMDYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgIDB4MDA2MjogMHgwMDYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgIDB4MDA2MzogMHgwMDYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgIDB4MDA2NDogMHgwMDY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgIDB4MDA2NTogMHgwMDY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgIDB4MDA2NjogMHgwMDY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgIDB4MDA2NzogMHgwMDY3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgIDB4MDA2ODogMHgwMDY4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgIDB4MDA2OTogMHgwMDY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgIDB4MDA2YTogMHgwMDZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgIDB4MDA2YjogMHgwMDZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgIDB4MDA2YzogMHgwMDZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgIDB4MDA2ZDogMHgwMDZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgIDB4MDA2ZTogMHgwMDZlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDA2ZjogMHgwMDZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgIDB4MDA3MDogMHgwMDcwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgIDB4MDA3MTogMHgwMDcxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgIDB4MDA3MjogMHgwMDcyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgIDB4MDA3MzogMHgwMDczLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgIDB4MDA3NDogMHgwMDc0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgIDB4MDA3NTogMHgwMDc1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgIDB4MDA3NjogMHgwMDc2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgIDB4MDA3NzogMHgwMDc3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgIDB4MDA3ODogMHgwMDc4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgIDB4MDA3OTogMHgwMDc5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgIDB4MDA3YTogMHgwMDdhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgIDB4MDA3YjogMHgwMDdiLCAgICAgIyAgTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2M6IDB4MDA3YywgICAgICMgIFZFUlRJQ0FMIExJTkUKICAgIDB4MDA3ZDogMHgwMDdkLCAgICAgIyAgUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdlOiAweDAwN2UsICAgICAjICBUSUxERQogICAgMHgwMDdmOiAweDAwN2YsICAgICAjICBERUxFVEUKICAgIDB4MDBhMDogMHgwMGZmLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKICAgIDB4MDBhNDogMHgwMGZkLCAgICAgIyAgQ1VSUkVOQ1kgU0lHTgogICAgMHgwMGI3OiAweDAwZmEsICAgICAjICBNSURETEUgRE9UCiAgICAweDA0MDE6IDB4MDBmMCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCiAgICAweDA0MDQ6IDB4MDBmNCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgMHgwNDA2OiAweDAwZjYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKICAgIDB4MDQwNzogMHgwMGY4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUkKICAgIDB4MDQxMDogMHgwMDgwLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQQogICAgMHgwNDExOiAweDAwODEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQogICAgMHgwNDEyOiAweDAwODIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQogICAgMHgwNDEzOiAweDAwODMsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUKICAgIDB4MDQxNDogMHgwMDg0LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKICAgIDB4MDQxNTogMHgwMDg1LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKICAgIDB4MDQxNjogMHgwMDg2LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCiAgICAweDA0MTc6IDB4MDA4NywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCiAgICAweDA0MTg6IDB4MDA4OCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKICAgIDB4MDQxOTogMHgwMDg5LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQogICAgMHgwNDFhOiAweDAwOGEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQogICAgMHgwNDFiOiAweDAwOGIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAogICAgMHgwNDFjOiAweDAwOGMsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQogICAgMHgwNDFkOiAweDAwOGQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgogICAgMHgwNDFlOiAweDAwOGUsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCiAgICAweDA0MWY6IDB4MDA4ZiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCiAgICAweDA0MjA6IDB4MDA5MCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCiAgICAweDA0MjE6IDB4MDA5MSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCiAgICAweDA0MjI6IDB4MDA5MiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCiAgICAweDA0MjM6IDB4MDA5MywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKICAgIDB4MDQyNDogMHgwMDk0LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKICAgIDB4MDQyNTogMHgwMDk1LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKICAgIDB4MDQyNjogMHgwMDk2LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCiAgICAweDA0Mjc6IDB4MDA5NywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQogICAgMHgwNDI4OiAweDAwOTgsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEEKICAgIDB4MDQyOTogMHgwMDk5LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKICAgIDB4MDQyYTogMHgwMDlhLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCiAgICAweDA0MmI6IDB4MDA5YiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKICAgIDB4MDQyYzogMHgwMDljLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCiAgICAweDA0MmQ6IDB4MDA5ZCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKICAgIDB4MDQyZTogMHgwMDllLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKICAgIDB4MDQyZjogMHgwMDlmLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKICAgIDB4MDQzMDogMHgwMGEwLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKICAgIDB4MDQzMTogMHgwMGExLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCiAgICAweDA0MzI6IDB4MDBhMiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBWRQogICAgMHgwNDMzOiAweDAwYTMsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCiAgICAweDA0MzQ6IDB4MDBhNCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBERQogICAgMHgwNDM1OiAweDAwYTUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKICAgIDB4MDQzNjogMHgwMGE2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQogICAgMHgwNDM3OiAweDAwYTcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKICAgIDB4MDQzODogMHgwMGE4LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKICAgIDB4MDQzOTogMHgwMGE5LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKICAgIDB4MDQzYTogMHgwMGFhLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCiAgICAweDA0M2I6IDB4MDBhYiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAogICAgMHgwNDNjOiAweDAwYWMsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KICAgIDB4MDQzZDogMHgwMGFkLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCiAgICAweDA0M2U6IDB4MDBhZSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBPCiAgICAweDA0M2Y6IDB4MDBhZiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBQRQogICAgMHgwNDQwOiAweDAwZTAsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKICAgIDB4MDQ0MTogMHgwMGUxLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAweDA0NDI6IDB4MDBlMiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBURQogICAgMHgwNDQzOiAweDAwZTMsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQogICAgMHgwNDQ0OiAweDAwZTQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKICAgIDB4MDQ0NTogMHgwMGU1LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCiAgICAweDA0NDY6IDB4MDBlNiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBUU0UKICAgIDB4MDQ0NzogMHgwMGU3LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQogICAgMHgwNDQ4OiAweDAwZTgsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCiAgICAweDA0NDk6IDB4MDBlOSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQQogICAgMHgwNDRhOiAweDAwZWEsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCiAgICAweDA0NGI6IDB4MDBlYiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCiAgICAweDA0NGM6IDB4MDBlYywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KICAgIDB4MDQ0ZDogMHgwMGVkLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKICAgIDB4MDQ0ZTogMHgwMGVlLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCiAgICAweDA0NGY6IDB4MDBlZiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBZQQogICAgMHgwNDUxOiAweDAwZjEsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KICAgIDB4MDQ1NDogMHgwMGY1LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgMHgwNDU2OiAweDAwZjcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAweDA0NTc6IDB4MDBmOSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBZSQogICAgMHgwNDkwOiAweDAwZjIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KICAgIDB4MDQ5MTogMHgwMGYzLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTgogICAgMHgyMTE2OiAweDAwZmMsICAgICAjICBOVU1FUk8gU0lHTgogICAgMHgyMjFhOiAweDAwZmIsICAgICAjICBTUVVBUkUgUk9PVAogICAgMHgyNTAwOiAweDAwYzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgyNTAyOiAweDAwYjMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MjUwYzogMHgwMGRhLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDBiZiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDI1MTQ6IDB4MDBjMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MjUxODogMHgwMGQ5LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDBjMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjUyNDogMHgwMGI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1MmM6IDB4MDBjMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDBjMSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTNjOiAweDAwYzUsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU1MDogMHgwMGNkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDI1NTE6IDB4MDBiYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MjU1MjogMHgwMGQ1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1MzogMHgwMGQ2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1NDogMHgwMGM5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgyNTU1OiAweDAwYjgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NTY6IDB4MDBiNywgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1NzogMHgwMGJiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDI1NTg6IDB4MDBkNCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTU5OiAweDAwZDMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1YTogMHgwMGM4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MjU1YjogMHgwMGJlLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU1YzogMHgwMGJkLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1ZDogMHgwMGJjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgyNTVlOiAweDAwYzYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1ZjogMHgwMGM3LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NjA6IDB4MDBjYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1NjE6IDB4MDBiNSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NjI6IDB4MDBiNiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NjM6IDB4MDBiOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjU2NDogMHgwMGQxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY1OiAweDAwZDIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NjY6IDB4MDBjYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTY3OiAweDAwY2YsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY4OiAweDAwZDAsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTY5OiAweDAwY2EsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NmE6IDB4MDBkOCwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1NmI6IDB4MDBkNywgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NmM6IDB4MDBjZSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU4MDogMHgwMGRmLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgyNTg0OiAweDAwZGMsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDI1ODg6IDB4MDBkYiwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MjU4YzogMHgwMGRkLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDI1OTA6IDB4MDBkZSwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MjU5MTogMHgwMGIwLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MjU5MjogMHgwMGIxLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDI1OTM6IDB4MDBiMiwgICAgICMgIERBUksgU0hBREUKICAgIDB4MjVhMDogMHgwMGZlLCAgICAgIyAgQkxBQ0sgU1FVQVJFCn0KUEsDBBQAAAAAAAIgo1bV6VljMTMAADEzAAATAAAAZW5jb2RpbmdzL2NwMTE0MC5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AxMTQwIGdlbmVyYXRlZCBmcm9tICdweXRob24tbWFwcGluZ3MvQ1AxMTQwLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3AxMTQwJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4OWMnICAgICAjICAweDA0IC0+IENPTlRST0wKICAgICdcdCcgICAgICAgIyAgMHgwNSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdceDg2JyAgICAgIyAgMHgwNiAtPiBDT05UUk9MCiAgICAnXHg3ZicgICAgICMgIDB4MDcgLT4gREVMRVRFCiAgICAnXHg5NycgICAgICMgIDB4MDggLT4gQ09OVFJPTAogICAgJ1x4OGQnICAgICAjICAweDA5IC0+IENPTlRST0wKICAgICdceDhlJyAgICAgIyAgMHgwQSAtPiBDT05UUk9MCiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHg5ZCcgICAgICMgIDB4MTQgLT4gQ09OVFJPTAogICAgJ1x4ODUnICAgICAjICAweDE1IC0+IENPTlRST0wKICAgICdceDA4JyAgICAgIyAgMHgxNiAtPiBCQUNLU1BBQ0UKICAgICdceDg3JyAgICAgIyAgMHgxNyAtPiBDT05UUk9MCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4OTInICAgICAjICAweDFBIC0+IENPTlRST0wKICAgICdceDhmJyAgICAgIyAgMHgxQiAtPiBDT05UUk9MCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICdceDgwJyAgICAgIyAgMHgyMCAtPiBDT05UUk9MCiAgICAnXHg4MScgICAgICMgIDB4MjEgLT4gQ09OVFJPTAogICAgJ1x4ODInICAgICAjICAweDIyIC0+IENPTlRST0wKICAgICdceDgzJyAgICAgIyAgMHgyMyAtPiBDT05UUk9MCiAgICAnXHg4NCcgICAgICMgIDB4MjQgLT4gQ09OVFJPTAogICAgJ1xuJyAgICAgICAjICAweDI1IC0+IExJTkUgRkVFRAogICAgJ1x4MTcnICAgICAjICAweDI2IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDFiJyAgICAgIyAgMHgyNyAtPiBFU0NBUEUKICAgICdceDg4JyAgICAgIyAgMHgyOCAtPiBDT05UUk9MCiAgICAnXHg4OScgICAgICMgIDB4MjkgLT4gQ09OVFJPTAogICAgJ1x4OGEnICAgICAjICAweDJBIC0+IENPTlRST0wKICAgICdceDhiJyAgICAgIyAgMHgyQiAtPiBDT05UUk9MCiAgICAnXHg4YycgICAgICMgIDB4MkMgLT4gQ09OVFJPTAogICAgJ1x4MDUnICAgICAjICAweDJEIC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgyRSAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDJGIC0+IEJFTEwKICAgICdceDkwJyAgICAgIyAgMHgzMCAtPiBDT05UUk9MCiAgICAnXHg5MScgICAgICMgIDB4MzEgLT4gQ09OVFJPTAogICAgJ1x4MTYnICAgICAjICAweDMyIC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDkzJyAgICAgIyAgMHgzMyAtPiBDT05UUk9MCiAgICAnXHg5NCcgICAgICMgIDB4MzQgLT4gQ09OVFJPTAogICAgJ1x4OTUnICAgICAjICAweDM1IC0+IENPTlRST0wKICAgICdceDk2JyAgICAgIyAgMHgzNiAtPiBDT05UUk9MCiAgICAnXHgwNCcgICAgICMgIDB4MzcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4OTgnICAgICAjICAweDM4IC0+IENPTlRST0wKICAgICdceDk5JyAgICAgIyAgMHgzOSAtPiBDT05UUk9MCiAgICAnXHg5YScgICAgICMgIDB4M0EgLT4gQ09OVFJPTAogICAgJ1x4OWInICAgICAjICAweDNCIC0+IENPTlRST0wKICAgICdceDE0JyAgICAgIyAgMHgzQyAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4M0QgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDllJyAgICAgIyAgMHgzRSAtPiBDT05UUk9MCiAgICAnXHgxYScgICAgICMgIDB4M0YgLT4gU1VCU1RJVFVURQogICAgJyAnICAgICAgICAjICAweDQwIC0+IFNQQUNFCiAgICAnXHhhMCcgICAgICMgIDB4NDEgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdceGUyJyAgICAgIyAgMHg0MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGU0JyAgICAgIyAgMHg0MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTAnICAgICAjICAweDQ0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGUxJyAgICAgIyAgMHg0NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlMycgICAgICMgIDB4NDYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZTUnICAgICAjICAweDQ3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZTcnICAgICAjICAweDQ4IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZjEnICAgICAjICAweDQ5IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGEyJyAgICAgIyAgMHg0QSAtPiBDRU5UIFNJR04KICAgICcuJyAgICAgICAgIyAgMHg0QiAtPiBGVUxMIFNUT1AKICAgICc8JyAgICAgICAgIyAgMHg0QyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJygnICAgICAgICAjICAweDREIC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcrJyAgICAgICAgIyAgMHg0RSAtPiBQTFVTIFNJR04KICAgICd8JyAgICAgICAgIyAgMHg0RiAtPiBWRVJUSUNBTCBMSU5FCiAgICAnJicgICAgICAgICMgIDB4NTAgLT4gQU1QRVJTQU5ECiAgICAnXHhlOScgICAgICMgIDB4NTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAjICAweDUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDUzIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlOCcgICAgICMgIDB4NTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWQnICAgICAjICAweDU1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHg1NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHg1NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWMnICAgICAjICAweDU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGRmJyAgICAgIyAgMHg1OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR0VSTUFOKQogICAgJyEnICAgICAgICAjICAweDVBIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICckJyAgICAgICAgIyAgMHg1QiAtPiBET0xMQVIgU0lHTgogICAgJyonICAgICAgICAjICAweDVDIC0+IEFTVEVSSVNLCiAgICAnKScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICc7JyAgICAgICAgIyAgMHg1RSAtPiBTRU1JQ09MT04KICAgICdceGFjJyAgICAgIyAgMHg1RiAtPiBOT1QgU0lHTgogICAgJy0nICAgICAgICAjICAweDYwIC0+IEhZUEhFTi1NSU5VUwogICAgJy8nICAgICAgICAjICAweDYxIC0+IFNPTElEVVMKICAgICdceGMyJyAgICAgIyAgMHg2MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzQnICAgICAjICAweDYzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGMwJyAgICAgIyAgMHg2NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMxJyAgICAgIyAgMHg2NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGMzJyAgICAgIyAgMHg2NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGM1JyAgICAgIyAgMHg2NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzcnICAgICAjICAweDY4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhkMScgICAgICMgIDB4NjkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhhNicgICAgICMgIDB4NkEgLT4gQlJPS0VOIEJBUgogICAgJywnICAgICAgICAjICAweDZCIC0+IENPTU1BCiAgICAnJScgICAgICAgICMgIDB4NkMgLT4gUEVSQ0VOVCBTSUdOCiAgICAnXycgICAgICAgICMgIDB4NkQgLT4gTE9XIExJTkUKICAgICc+JyAgICAgICAgIyAgMHg2RSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDZGIC0+IFFVRVNUSU9OIE1BUksKICAgICdceGY4JyAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4YzknICAgICAjICAweDcxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4Y2EnICAgICAjICAweDcyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjYicgICAgICMgIDB4NzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzgnICAgICAjICAweDc0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4Y2QnICAgICAjICAweDc1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweDc2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjZicgICAgICMgIDB4NzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4Y2MnICAgICAjICAweDc4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ2AnICAgICAgICAjICAweDc5IC0+IEdSQVZFIEFDQ0VOVAogICAgJzonICAgICAgICAjICAweDdBIC0+IENPTE9OCiAgICAnIycgICAgICAgICMgIDB4N0IgLT4gTlVNQkVSIFNJR04KICAgICdAJyAgICAgICAgIyAgMHg3QyAtPiBDT01NRVJDSUFMIEFUCiAgICAiJyIgICAgICAgICMgIDB4N0QgLT4gQVBPU1RST1BIRQogICAgJz0nICAgICAgICAjICAweDdFIC0+IEVRVUFMUyBTSUdOCiAgICAnIicgICAgICAgICMgIDB4N0YgLT4gUVVPVEFUSU9OIE1BUksKICAgICdceGQ4JyAgICAgIyAgMHg4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnYScgICAgICAgICMgIDB4ODEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg4MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4ODQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg4NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDg2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnXHhhYicgICAgICMgIDB4OEEgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgIyAgMHg4QiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGYwJyAgICAgIyAgMHg4QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRVRIIChJQ0VMQU5ESUMpCiAgICAnXHhmZCcgICAgICMgIDB4OEQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgJ1x4ZmUnICAgICAjICAweDhFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSUNFTEFORElDKQogICAgJ1x4YjEnICAgICAjICAweDhGIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x4YjAnICAgICAjICAweDkwIC0+IERFR1JFRSBTSUdOCiAgICAnaicgICAgICAgICMgIDB4OTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4OTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4OTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg5OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDk5IC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAnXHhhYScgICAgICMgIDB4OUEgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJhJyAgICAgIyAgMHg5QiAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGU2JyAgICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgJ1x4YjgnICAgICAjICAweDlEIC0+IENFRElMTEEKICAgICdceGM2JyAgICAgIyAgMHg5RSAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAnXHUyMGFjJyAgICMgIDB4OUYgLT4gRVVSTyBTSUdOCiAgICAnXHhiNScgICAgICMgIDB4QTAgLT4gTUlDUk8gU0lHTgogICAgJ34nICAgICAgICAjICAweEExIC0+IFRJTERFCiAgICAncycgICAgICAgICMgIDB4QTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHhBMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweEE0IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4QTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHhBNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweEE3IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4QTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHhBOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ1x4YTEnICAgICAjICAweEFBIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgICdceGJmJyAgICAgIyAgMHhBQiAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhkMCcgICAgICMgIDB4QUMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJQ0VMQU5ESUMpCiAgICAnXHhkZCcgICAgICMgIDB4QUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhkZScgICAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKElDRUxBTkRJQykKICAgICdceGFlJyAgICAgIyAgMHhBRiAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdeJyAgICAgICAgIyAgMHhCMCAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ1x4YTMnICAgICAjICAweEIxIC0+IFBPVU5EIFNJR04KICAgICdceGE1JyAgICAgIyAgMHhCMiAtPiBZRU4gU0lHTgogICAgJ1x4YjcnICAgICAjICAweEIzIC0+IE1JRERMRSBET1QKICAgICdceGE5JyAgICAgIyAgMHhCNCAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x4YTcnICAgICAjICAweEI1IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YmMnICAgICAjICAweEI3IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YmQnICAgICAjICAweEI4IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmUnICAgICAjICAweEI5IC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgJ1snICAgICAgICAjICAweEJBIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICddJyAgICAgICAgIyAgMHhCQiAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1x4YWYnICAgICAjICAweEJDIC0+IE1BQ1JPTgogICAgJ1x4YTgnICAgICAjICAweEJEIC0+IERJQUVSRVNJUwogICAgJ1x4YjQnICAgICAjICAweEJFIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4ZDcnICAgICAjICAweEJGIC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICd7JyAgICAgICAgIyAgMHhDMCAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICdBJyAgICAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4QzIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHhDNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdceGFkJyAgICAgIyAgMHhDQSAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4ZjQnICAgICAjICAweENCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZjYnICAgICAjICAweENDIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmMicgICAgICMgIDB4Q0QgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGY1JyAgICAgIyAgMHhDRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnfScgICAgICAgICMgIDB4RDAgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ0onICAgICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweEQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1x4YjknICAgICAjICAweERBIC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x4ZmInICAgICAjICAweERCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweERDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhmOScgICAgICMgIDB4REQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZmEnICAgICAjICAweERFIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGZmJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1xcJyAgICAgICAjICAweEUwIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ1x4ZjcnICAgICAjICAweEUxIC0+IERJVklTSU9OIFNJR04KICAgICdTJyAgICAgICAgIyAgMHhFMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4RTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweEU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1x4YjInICAgICAjICAweEVBIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4ZDQnICAgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkNicgICAgICMgIDB4RUMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDInICAgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZDMnICAgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDUnICAgICAjICAweEVGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJzAnICAgICAgICAjICAweEYwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHhGMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHhGMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHhGMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweEY0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHhGNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4RjYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4RjcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHhGOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweEY5IC0+IERJR0lUIE5JTkUKICAgICdceGIzJyAgICAgIyAgMHhGQSAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x4ZGInICAgICAjICAweEZCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkYycgICAgICMgIDB4RkMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDknICAgICAjICAweEZEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZGEnICAgICAjICAweEZFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4OWYnICAgICAjICAweEZGIC0+IENPTlRST0wKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVoKeTjt2NQAAdjUAABMAAABlbmNvZGluZ3MvY3AxMjUwLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBjcDEyNTAgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1MvQ1AxMjUwLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3AxMjUwJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x1MjBhYycgICAjICAweDgwIC0+IEVVUk8gU0lHTgogICAgJ1x1ZmZmZScgICAjICAweDgxIC0+IFVOREVGSU5FRAogICAgJ1x1MjAxYScgICAjICAweDgyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1ZmZmZScgICAjICAweDgzIC0+IFVOREVGSU5FRAogICAgJ1x1MjAxZScgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKICAgICdcdTIwMjAnICAgIyAgMHg4NiAtPiBEQUdHRVIKICAgICdcdTIwMjEnICAgIyAgMHg4NyAtPiBET1VCTEUgREFHR0VSCiAgICAnXHVmZmZlJyAgICMgIDB4ODggLT4gVU5ERUZJTkVECiAgICAnXHUyMDMwJyAgICMgIDB4ODkgLT4gUEVSIE1JTExFIFNJR04KICAgICdcdTAxNjAnICAgIyAgMHg4QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdcdTIwMzknICAgIyAgMHg4QiAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDE1YScgICAjICAweDhDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgJ1x1MDE2NCcgICAjICAweDhEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTgogICAgJ1x1MDE3ZCcgICAjICAweDhFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgJ1x1MDE3OScgICAjICAweDhGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgJ1x1ZmZmZScgICAjICAweDkwIC0+IFVOREVGSU5FRAogICAgJ1x1MjAxOCcgICAjICAweDkxIC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDE5JyAgICMgIDB4OTIgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFjJyAgICMgIDB4OTMgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWQnICAgIyAgMHg5NCAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjInICAgIyAgMHg5NSAtPiBCVUxMRVQKICAgICdcdTIwMTMnICAgIyAgMHg5NiAtPiBFTiBEQVNICiAgICAnXHUyMDE0JyAgICMgIDB4OTcgLT4gRU0gREFTSAogICAgJ1x1ZmZmZScgICAjICAweDk4IC0+IFVOREVGSU5FRAogICAgJ1x1MjEyMicgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x1MDE2MScgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdcdTIwM2EnICAgIyAgMHg5QiAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxNWInICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCiAgICAnXHUwMTY1JyAgICMgIDB4OUQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTgogICAgJ1x1MDE3ZScgICAjICAweDlFIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdcdTAxN2EnICAgIyAgMHg5RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTAyYzcnICAgIyAgMHhBMSAtPiBDQVJPTgogICAgJ1x1MDJkOCcgICAjICAweEEyIC0+IEJSRVZFCiAgICAnXHUwMTQxJyAgICMgIDB4QTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x4YTQnICAgICAjICAweEE0IC0+IENVUlJFTkNZIFNJR04KICAgICdcdTAxMDQnICAgIyAgMHhBNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YTgnICAgICAjICAweEE4IC0+IERJQUVSRVNJUwogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHUwMTVlJyAgICMgIDB4QUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENFRElMTEEKICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdcdTAxN2InICAgIyAgMHhBRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTAyZGInICAgIyAgMHhCMiAtPiBPR09ORUsKICAgICdcdTAxNDInICAgIyAgMHhCMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x4YjQnICAgICAjICAweEI0IC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4YjUnICAgICAjICAweEI1IC0+IE1JQ1JPIFNJR04KICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCiAgICAnXHhiOCcgICAgICMgIDB4QjggLT4gQ0VESUxMQQogICAgJ1x1MDEwNScgICAjICAweEI5IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHUwMTVmJyAgICMgIDB4QkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMTNkJyAgICMgIDB4QkMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENBUk9OCiAgICAnXHUwMmRkJyAgICMgIDB4QkQgLT4gRE9VQkxFIEFDVVRFIEFDQ0VOVAogICAgJ1x1MDEzZScgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST04KICAgICdcdTAxN2MnICAgIyAgMHhCRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDE1NCcgICAjICAweEMwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQogICAgJ1x4YzEnICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4YzInICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTAyJyAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFCiAgICAnXHhjNCcgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDEzOScgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQogICAgJ1x1MDEwNicgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURQogICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHUwMTBjJyAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHUwMTE4JyAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x4Y2InICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMWEnICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST04KICAgICdceGNkJyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDEwZScgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTgogICAgJ1x1MDExMCcgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTVFJPS0UKICAgICdcdTAxNDMnICAgIyAgMHhEMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKICAgICdcdTAxNDcnICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST04KICAgICdceGQzJyAgICAgIyAgMHhEMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGQ0JyAgICAgIyAgMHhENCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDE1MCcgICAjICAweEQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNycgICAgICMgIDB4RDcgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x1MDE1OCcgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTgogICAgJ1x1MDE2ZScgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHUwMTcwJyAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQogICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGRkJyAgICAgIyAgMHhERCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdcdTAxNjInICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0VESUxMQQogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHUwMTU1JyAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQogICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMDMnICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFCiAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxM2EnICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCiAgICAnXHUwMTA3JyAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQogICAgJ1x4ZTcnICAgICAjICAweEU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x1MDEwZCcgICAjICAweEU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KICAgICdceGU5JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHUwMTE5JyAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgICdceGViJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDExYicgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST04KICAgICdceGVkJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTBmJyAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgogICAgJ1x1MDExMScgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggU1RST0tFCiAgICAnXHUwMTQ0JyAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgJ1x1MDE0OCcgICAjICAweEYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KICAgICdceGYzJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmNCcgICAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTUxJyAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKICAgICdceGY2JyAgICAgIyAgMHhGNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjcnICAgICAjICAweEY3IC0+IERJVklTSU9OIFNJR04KICAgICdcdTAxNTknICAgIyAgMHhGOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCiAgICAnXHUwMTZmJyAgICMgIDB4RjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x1MDE3MScgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiAgICAnXHhmYycgICAgICMgIDB4RkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGZkJyAgICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHUwMTYzJyAgICMgIDB4RkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDRURJTExBCiAgICAnXHUwMmQ5JyAgICMgIDB4RkYgLT4gRE9UIEFCT1ZFCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1bF4KvZMTQAADE0AAATAAAAZW5jb2RpbmdzL2NwMTI1MS5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AxMjUxIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9XSU5ET1dTL0NQMTI1MS5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwMTI1MScsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdcdTA0MDInICAgIyAgMHg4MCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBESkUKICAgICdcdTA0MDMnICAgIyAgMHg4MSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSkUKICAgICdcdTIwMWEnICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTA0NTMnICAgIyAgMHg4MyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0pFCiAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDI2JyAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUwogICAgJ1x1MjAyMCcgICAjICAweDg2IC0+IERBR0dFUgogICAgJ1x1MjAyMScgICAjICAweDg3IC0+IERPVUJMRSBEQUdHRVIKICAgICdcdTIwYWMnICAgIyAgMHg4OCAtPiBFVVJPIFNJR04KICAgICdcdTIwMzAnICAgIyAgMHg4OSAtPiBQRVIgTUlMTEUgU0lHTgogICAgJ1x1MDQwOScgICAjICAweDhBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIExKRQogICAgJ1x1MjAzOScgICAjICAweDhCIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwNDBhJyAgICMgIDB4OEMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFCiAgICAnXHUwNDBjJyAgICMgIDB4OEQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0pFCiAgICAnXHUwNDBiJyAgICMgIDB4OEUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNIRQogICAgJ1x1MDQwZicgICAjICAweDhGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERaSEUKICAgICdcdTA0NTInICAgIyAgMHg5MCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFCiAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAogICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICiAgICAnXHVmZmZlJyAgICMgIDB4OTggLT4gVU5ERUZJTkVECiAgICAnXHUyMTIyJyAgICMgIDB4OTkgLT4gVFJBREUgTUFSSyBTSUdOCiAgICAnXHUwNDU5JyAgICMgIDB4OUEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRQogICAgJ1x1MjAzYScgICAjICAweDlCIC0+IFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDQ1YScgICAjICAweDlDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBOSkUKICAgICdcdTA0NWMnICAgIyAgMHg5RCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0pFCiAgICAnXHUwNDViJyAgICMgIDB4OUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTSEUKICAgICdcdTA0NWYnICAgIyAgMHg5RiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRQogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUwNDBlJyAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVQogICAgJ1x1MDQ1ZScgICAjICAweEEyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVCiAgICAnXHUwNDA4JyAgICMgIDB4QTMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKICAgICdceGE0JyAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHUwNDkwJyAgICMgIDB4QTUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggVVBUVVJOCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MDQwMScgICAjICAweEE4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTA0MDQnICAgIyAgMHhBQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdcdTA0MDcnICAgIyAgMHhBRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQogICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCiAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHUwNDA2JyAgICMgIDB4QjIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAnXHUwNDU2JyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgJ1x1MDQ5MScgICAjICAweEI0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAogICAgJ1x1MDQ1MScgICAjICAweEI4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgJ1x1MjExNicgICAjICAweEI5IC0+IE5VTUVSTyBTSUdOCiAgICAnXHUwNDU0JyAgICMgIDB4QkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDQ1OCcgICAjICAweEJDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBKRQogICAgJ1x1MDQwNScgICAjICAweEJEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERaRQogICAgJ1x1MDQ1NScgICAjICAweEJFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBEWkUKICAgICdcdTA0NTcnICAgIyAgMHhCRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUkKICAgICdcdTA0MTAnICAgIyAgMHhDMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCiAgICAnXHUwNDExJyAgICMgIDB4QzEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKICAgICdcdTA0MTInICAgIyAgMHhDMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQogICAgJ1x1MDQxMycgICAjICAweEMzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQogICAgJ1x1MDQxNCcgICAjICAweEM0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiAgICAnXHUwNDE1JyAgICMgIDB4QzUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKICAgICdcdTA0MTYnICAgIyAgMHhDNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKICAgICdcdTA0MTcnICAgIyAgMHhDNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQogICAgJ1x1MDQxOCcgICAjICAweEM4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKICAgICdcdTA0MTknICAgIyAgMHhDOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCiAgICAnXHUwNDFhJyAgICMgIDB4Q0EgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKICAgICdcdTA0MWInICAgIyAgMHhDQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAogICAgJ1x1MDQxYycgICAjICAweENDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCiAgICAnXHUwNDFkJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KICAgICdcdTA0MWUnICAgIyAgMHhDRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCiAgICAnXHUwNDFmJyAgICMgIDB4Q0YgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKICAgICdcdTA0MjAnICAgIyAgMHhEMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgogICAgJ1x1MDQyMScgICAjICAweEQxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCiAgICAnXHUwNDIyJyAgICMgIDB4RDIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKICAgICdcdTA0MjMnICAgIyAgMHhEMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCiAgICAnXHUwNDI0JyAgICMgIDB4RDQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKICAgICdcdTA0MjUnICAgIyAgMHhENSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQQogICAgJ1x1MDQyNicgICAjICAweEQ2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQogICAgJ1x1MDQyNycgICAjICAweEQ3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQogICAgJ1x1MDQyOCcgICAjICAweEQ4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQogICAgJ1x1MDQyOScgICAjICAweEQ5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDJhJyAgICMgIDB4REEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCiAgICAnXHUwNDJiJyAgICMgIDB4REIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQogICAgJ1x1MDQyYycgICAjICAweERDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgogICAgJ1x1MDQyZCcgICAjICAweEREIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKICAgICdcdTA0MmUnICAgIyAgMHhERSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQogICAgJ1x1MDQyZicgICAjICAweERGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiAgICAnXHUwNDMwJyAgICMgIDB4RTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKICAgICdcdTA0MzEnICAgIyAgMHhFMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKICAgICdcdTA0MzInICAgIyAgMHhFMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKICAgICdcdTA0MzMnICAgIyAgMHhFMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCiAgICAnXHUwNDM0JyAgICMgIDB4RTQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCiAgICAnXHUwNDM1JyAgICMgIDB4RTUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCiAgICAnXHUwNDM2JyAgICMgIDB4RTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQogICAgJ1x1MDQzNycgICAjICAweEU3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaRQogICAgJ1x1MDQzOCcgICAjICAweEU4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJCiAgICAnXHUwNDM5JyAgICMgIDB4RTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0M2EnICAgIyAgMHhFQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKICAgICdcdTA0M2InICAgIyAgMHhFQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKICAgICdcdTA0M2MnICAgIyAgMHhFQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KICAgICdcdTA0M2QnICAgIyAgMHhFRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KICAgICdcdTA0M2UnICAgIyAgMHhFRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwogICAgJ1x1MDQzZicgICAjICAweEVGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBQRQogICAgJ1x1MDQ0MCcgICAjICAweEYwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgogICAgJ1x1MDQ0MScgICAjICAweEYxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUwogICAgJ1x1MDQ0MicgICAjICAweEYyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBURQogICAgJ1x1MDQ0MycgICAjICAweEYzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVCiAgICAnXHUwNDQ0JyAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCiAgICAnXHUwNDQ1JyAgICMgIDB4RjUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCiAgICAnXHUwNDQ2JyAgICMgIDB4RjYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQogICAgJ1x1MDQ0NycgICAjICAweEY3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKICAgICdcdTA0NDgnICAgIyAgMHhGOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCiAgICAnXHUwNDQ5JyAgICMgIDB4RjkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDRhJyAgICMgIDB4RkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgogICAgJ1x1MDQ0YicgICAjICAweEZCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCiAgICAnXHUwNDRjJyAgICMgIDB4RkMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgJ1x1MDQ0ZCcgICAjICAweEZEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCiAgICAnXHUwNDRlJyAgICMgIDB4RkUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCiAgICAnXHUwNDRmJyAgICMgIDB4RkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1ZupK9axzQAAMc0AAATAAAAZW5jb2RpbmdzL2NwMTI1Mi5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AxMjUyIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9XSU5ET1dTL0NQMTI1Mi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwMTI1MicsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KICAgICdcdWZmZmUnICAgIyAgMHg4MSAtPiBVTkRFRklORUQKICAgICdcdTIwMWEnICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxOTInICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCiAgICAnXHUyMDIxJyAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgogICAgJ1x1MDJjNicgICAjICAweDg4IC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCiAgICAnXHUwMTYwJyAgICMgIDB4OEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUyMDM5JyAgICMgIDB4OEIgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxNTInICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCiAgICAnXHVmZmZlJyAgICMgIDB4OEQgLT4gVU5ERUZJTkVECiAgICAnXHUwMTdkJyAgICMgIDB4OEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHVmZmZlJyAgICMgIDB4OEYgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OTAgLT4gVU5ERUZJTkVECiAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAogICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICiAgICAnXHUwMmRjJyAgICMgIDB4OTggLT4gU01BTEwgVElMREUKICAgICdcdTIxMjInICAgIyAgMHg5OSAtPiBUUkFERSBNQVJLIFNJR04KICAgICdcdTAxNjEnICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUyMDNhJyAgICMgIDB4OUIgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMTUzJyAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKICAgICdcdWZmZmUnICAgIyAgMHg5RCAtPiBVTkRFRklORUQKICAgICdcdTAxN2UnICAgIyAgMHg5RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHUwMTc4JyAgICMgIDB4OUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHhhMScgICAgICMgIDB4QTEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdceGE0JyAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHhhNScgICAgICMgIDB4QTUgLT4gWUVOIFNJR04KICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCiAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhhOCcgICAgICMgIDB4QTggLT4gRElBRVJFU0lTCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdceGFhJyAgICAgIyAgMHhBQSAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YWYnICAgICAjICAweEFGIC0+IE1BQ1JPTgogICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCiAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCiAgICAnXHhiMycgICAgICMgIDB4QjMgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGI0JyAgICAgIyAgMHhCNCAtPiBBQ1VURSBBQ0NFTlQKICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAogICAgJ1x4YjgnICAgICAjICAweEI4IC0+IENFRElMTEEKICAgICdceGI5JyAgICAgIyAgMHhCOSAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdceGJhJyAgICAgIyAgMHhCQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJjJyAgICAgIyAgMHhCQyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgICdceGJkJyAgICAgIyAgMHhCRCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJlJyAgICAgIyAgMHhCRSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdceGJmJyAgICAgIyAgMHhCRiAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhjMCcgICAgICMgIDB4QzAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMScgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMicgICAgICMgIDB4QzIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGMzJyAgICAgIyAgMHhDMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGM2JyAgICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQogICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhjOCcgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhjYScgICAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNiJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhjYycgICAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhjZCcgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhjZScgICAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhkMCcgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRICiAgICAnXHhkMScgICAgICMgIDB4RDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhkMicgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhkMycgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhkNCcgICAgICMgIDB4RDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGQ1JyAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNycgICAgICMgIDB4RDcgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x4ZDgnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGQ5JyAgICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGRhJyAgICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGRiJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGRkJyAgICAgIyAgMHhERCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGRlJyAgICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STgogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHhlMCcgICAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGUzJyAgICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGU1JyAgICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGU2JyAgICAgIyAgMHhFNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdceGU3JyAgICAgIyAgMHhFNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU4JyAgICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlOScgICAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlYycgICAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZWQnICAgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjAnICAgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEgKICAgICdceGYxJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhmMicgICAgICMgIDB4RjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY1JyAgICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHhmOCcgICAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZmInICAgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhmZCcgICAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgJ1x4ZmUnICAgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STgogICAgJ1x4ZmYnICAgICAjICAweEZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1a77ppUJjMAACYzAAATAAAAZW5jb2RpbmdzL2NwMTI1My5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AxMjUzIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9XSU5ET1dTL0NQMTI1My5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwMTI1MycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KICAgICdcdWZmZmUnICAgIyAgMHg4MSAtPiBVTkRFRklORUQKICAgICdcdTIwMWEnICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxOTInICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCiAgICAnXHUyMDIxJyAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgogICAgJ1x1ZmZmZScgICAjICAweDg4IC0+IFVOREVGSU5FRAogICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4OEEgLT4gVU5ERUZJTkVECiAgICAnXHUyMDM5JyAgICMgIDB4OEIgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdWZmZmUnICAgIyAgMHg4QyAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RCAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RSAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RiAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg5MCAtPiBVTkRFRklORUQKICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCiAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAogICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKICAgICdcdWZmZmUnICAgIyAgMHg5OCAtPiBVTkRFRklORUQKICAgICdcdTIxMjInICAgIyAgMHg5OSAtPiBUUkFERSBNQVJLIFNJR04KICAgICdcdWZmZmUnICAgIyAgMHg5QSAtPiBVTkRFRklORUQKICAgICdcdTIwM2EnICAgIyAgMHg5QiAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdWZmZmUnICAgIyAgMHg5QyAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg5RCAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg5RSAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg5RiAtPiBVTkRFRklORUQKICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x1MDM4NScgICAjICAweEExIC0+IEdSRUVLIERJQUxZVElLQSBUT05PUwogICAgJ1x1MDM4NicgICAjICAweEEyIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x4YTUnICAgICAjICAweEE1IC0+IFlFTiBTSUdOCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YTgnICAgICAjICAweEE4IC0+IERJQUVSRVNJUwogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4QUEgLT4gVU5ERUZJTkVECiAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgogICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCiAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHUyMDE1JyAgICMgIDB4QUYgLT4gSE9SSVpPTlRBTCBCQVIKICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHUwMzg0JyAgICMgIDB4QjQgLT4gR1JFRUsgVE9OT1MKICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAogICAgJ1x1MDM4OCcgICAjICAweEI4IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgJ1x1MDM4OScgICAjICAweEI5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TCiAgICAnXHUwMzhhJyAgICMgIDB4QkEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TCiAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMzhjJyAgICMgIDB4QkMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiAgICAnXHhiZCcgICAgICMgIDB4QkQgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHUwMzhlJyAgICMgIDB4QkUgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TCiAgICAnXHUwMzhmJyAgICMgIDB4QkYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUwogICAgJ1x1MDM5MCcgICAjICAweEMwIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUwogICAgJ1x1MDM5MScgICAjICAweEMxIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBCiAgICAnXHUwMzkyJyAgICMgIDB4QzIgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQkVUQQogICAgJ1x1MDM5MycgICAjICAweEMzIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAnXHUwMzk0JyAgICMgIDB4QzQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEKICAgICdcdTAzOTUnICAgIyAgMHhDNSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OCiAgICAnXHUwMzk2JyAgICMgIDB4QzYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQQogICAgJ1x1MDM5NycgICAjICAweEM3IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQQogICAgJ1x1MDM5OCcgICAjICAweEM4IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAnXHUwMzk5JyAgICMgIDB4QzkgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQQogICAgJ1x1MDM5YScgICAjICAweENBIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEtBUFBBCiAgICAnXHUwMzliJyAgICMgIDB4Q0IgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgTEFNREEKICAgICdcdTAzOWMnICAgIyAgMHhDQyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBNVQogICAgJ1x1MDM5ZCcgICAjICAweENEIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE5VCiAgICAnXHUwMzllJyAgICMgIDB4Q0UgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgWEkKICAgICdcdTAzOWYnICAgIyAgMHhDRiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OCiAgICAnXHUwM2EwJyAgICMgIDB4RDAgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEkKICAgICdcdTAzYTEnICAgIyAgMHhEMSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE8KICAgICdcdWZmZmUnICAgIyAgMHhEMiAtPiBVTkRFRklORUQKICAgICdcdTAzYTMnICAgIyAgMHhEMyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgJ1x1MDNhNCcgICAjICAweEQ0IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFRBVQogICAgJ1x1MDNhNScgICAjICAweEQ1IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04KICAgICdcdTAzYTYnICAgIyAgMHhENiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKICAgICdcdTAzYTcnICAgIyAgMHhENyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBDSEkKICAgICdcdTAzYTgnICAgIyAgMHhEOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBQU0kKICAgICdcdTAzYTknICAgIyAgMHhEOSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgJ1x1MDNhYScgICAjICAweERBIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EKICAgICdcdTAzYWInICAgIyAgMHhEQiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBCiAgICAnXHUwM2FjJyAgICMgIDB4REMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKICAgICdcdTAzYWQnICAgIyAgMHhERCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2FlJyAgICMgIDB4REUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TCiAgICAnXHUwM2FmJyAgICMgIDB4REYgLT4gR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUwogICAgJ1x1MDNiMCcgICAjICAweEUwIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBUT05PUwogICAgJ1x1MDNiMScgICAjICAweEUxIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQQogICAgJ1x1MDNiMicgICAjICAweEUyIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBCRVRBCiAgICAnXHUwM2IzJyAgICMgIDB4RTMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEdBTU1BCiAgICAnXHUwM2I0JyAgICMgIDB4RTQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAnXHUwM2I1JyAgICMgIDB4RTUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KICAgICdcdTAzYjYnICAgIyAgMHhFNiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgWkVUQQogICAgJ1x1MDNiNycgICAjICAweEU3IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFVEEKICAgICdcdTAzYjgnICAgIyAgMHhFOCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVEhFVEEKICAgICdcdTAzYjknICAgIyAgMHhFOSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQQogICAgJ1x1MDNiYScgICAjICAweEVBIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBLQVBQQQogICAgJ1x1MDNiYicgICAjICAweEVCIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBMQU1EQQogICAgJ1x1MDNiYycgICAjICAweEVDIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBNVQogICAgJ1x1MDNiZCcgICAjICAweEVEIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBOVQogICAgJ1x1MDNiZScgICAjICAweEVFIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBYSQogICAgJ1x1MDNiZicgICAjICAweEVGIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OCiAgICAnXHUwM2MwJyAgICMgIDB4RjAgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAnXHUwM2MxJyAgICMgIDB4RjEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFJITwogICAgJ1x1MDNjMicgICAjICAweEYyIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQogICAgJ1x1MDNjMycgICAjICAweEYzIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgJ1x1MDNjNCcgICAjICAweEY0IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgICdcdTAzYzUnICAgIyAgMHhGNSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTgogICAgJ1x1MDNjNicgICAjICAweEY2IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgICdcdTAzYzcnICAgIyAgMHhGNyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgQ0hJCiAgICAnXHUwM2M4JyAgICMgIDB4RjggLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBTSQogICAgJ1x1MDNjOScgICAjICAweEY5IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQQogICAgJ1x1MDNjYScgICAjICAweEZBIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAnXHUwM2NiJyAgICMgIDB4RkIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgICdcdTAzY2MnICAgIyAgMHhGQyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2NkJyAgICMgIDB4RkQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUwogICAgJ1x1MDNjZScgICAjICAweEZFIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiAgICAnXHVmZmZlJyAgICMgIDB4RkYgLT4gVU5ERUZJTkVECikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1aqedYfvjQAAL40AAATAAAAZW5jb2RpbmdzL2NwMTI1NC5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AxMjU0IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9XSU5ET1dTL0NQMTI1NC5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwMTI1NCcsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KICAgICdcdWZmZmUnICAgIyAgMHg4MSAtPiBVTkRFRklORUQKICAgICdcdTIwMWEnICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxOTInICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCiAgICAnXHUyMDIxJyAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgogICAgJ1x1MDJjNicgICAjICAweDg4IC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCiAgICAnXHUwMTYwJyAgICMgIDB4OEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUyMDM5JyAgICMgIDB4OEIgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxNTInICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCiAgICAnXHVmZmZlJyAgICMgIDB4OEQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OEUgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OEYgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OTAgLT4gVU5ERUZJTkVECiAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAogICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICiAgICAnXHUwMmRjJyAgICMgIDB4OTggLT4gU01BTEwgVElMREUKICAgICdcdTIxMjInICAgIyAgMHg5OSAtPiBUUkFERSBNQVJLIFNJR04KICAgICdcdTAxNjEnICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUyMDNhJyAgICMgIDB4OUIgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMTUzJyAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKICAgICdcdWZmZmUnICAgIyAgMHg5RCAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg5RSAtPiBVTkRFRklORUQKICAgICdcdTAxNzgnICAgIyAgMHg5RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdceGExJyAgICAgIyAgMHhBMSAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAnXHhhMicgICAgICMgIDB4QTIgLT4gQ0VOVCBTSUdOCiAgICAnXHhhMycgICAgICMgIDB4QTMgLT4gUE9VTkQgU0lHTgogICAgJ1x4YTQnICAgICAjICAweEE0IC0+IENVUlJFTkNZIFNJR04KICAgICdceGE1JyAgICAgIyAgMHhBNSAtPiBZRU4gU0lHTgogICAgJ1x4YTYnICAgICAjICAweEE2IC0+IEJST0tFTiBCQVIKICAgICdceGE3JyAgICAgIyAgMHhBNyAtPiBTRUNUSU9OIFNJR04KICAgICdceGE4JyAgICAgIyAgMHhBOCAtPiBESUFFUkVTSVMKICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x4YWEnICAgICAjICAweEFBIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgogICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCiAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHhhZicgICAgICMgIDB4QUYgLT4gTUFDUk9OCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdceGIyJyAgICAgIyAgMHhCMiAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGIzJyAgICAgIyAgMHhCMyAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x4YjQnICAgICAjICAweEI0IC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4YjUnICAgICAjICAweEI1IC0+IE1JQ1JPIFNJR04KICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCiAgICAnXHhiOCcgICAgICMgIDB4QjggLT4gQ0VESUxMQQogICAgJ1x4YjknICAgICAjICAweEI5IC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x4YmEnICAgICAjICAweEJBIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmMnICAgICAjICAweEJDIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YmQnICAgICAjICAweEJEIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmUnICAgICAjICAweEJFIC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgJ1x4YmYnICAgICAjICAweEJGIC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdceGMwJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMxJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGMyJyAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzMnICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4YzQnICAgICAjICAweEM0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGM1JyAgICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzYnICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCiAgICAnXHhjNycgICAgICMgIDB4QzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGM4JyAgICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGM5JyAgICAgIyAgMHhDOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGNhJyAgICAgIyAgMHhDQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGNjJyAgICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGNkJyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2YnICAgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMWUnICAgIyAgMHhEMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQlJFVkUKICAgICdceGQxJyAgICAgIyAgMHhEMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGQyJyAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGQzJyAgICAgIyAgMHhEMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGQ0JyAgICAgIyAgMHhENCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZDUnICAgICAjICAweEQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4ZDYnICAgICAjICAweEQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGQ3JyAgICAgIyAgMHhENyAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCiAgICAnXHhkOCcgICAgICMgIDB4RDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4ZDknICAgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZGEnICAgICAjICAweERBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZGInICAgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkYycgICAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDEzMCcgICAjICAweEREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUKICAgICdcdTAxNWUnICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHhlMCcgICAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGUzJyAgICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGU1JyAgICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGU2JyAgICAgIyAgMHhFNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdceGU3JyAgICAgIyAgMHhFNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU4JyAgICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlOScgICAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlYycgICAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZWQnICAgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDExZicgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQlJFVkUKICAgICdceGYxJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhmMicgICAgICMgIDB4RjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY1JyAgICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHhmOCcgICAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZmInICAgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTMxJyAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSQogICAgJ1x1MDE1ZicgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x4ZmYnICAgICAjICAweEZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1aL48pesjAAALIwAAATAAAAZW5jb2RpbmdzL2NwMTI1NS5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3AxMjU1IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9XSU5ET1dTL0NQMTI1NS5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwMTI1NScsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KICAgICdcdWZmZmUnICAgIyAgMHg4MSAtPiBVTkRFRklORUQKICAgICdcdTIwMWEnICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxOTInICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCiAgICAnXHUyMDIxJyAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgogICAgJ1x1MDJjNicgICAjICAweDg4IC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4OEEgLT4gVU5ERUZJTkVECiAgICAnXHUyMDM5JyAgICMgIDB4OEIgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdWZmZmUnICAgIyAgMHg4QyAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RCAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RSAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RiAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg5MCAtPiBVTkRFRklORUQKICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCiAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAogICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKICAgICdcdTAyZGMnICAgIyAgMHg5OCAtPiBTTUFMTCBUSUxERQogICAgJ1x1MjEyMicgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x1ZmZmZScgICAjICAweDlBIC0+IFVOREVGSU5FRAogICAgJ1x1MjAzYScgICAjICAweDlCIC0+IFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1ZmZmZScgICAjICAweDlDIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweDlEIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweDlFIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweDlGIC0+IFVOREVGSU5FRAogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHhhMScgICAgICMgIDB4QTEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdcdTIwYWEnICAgIyAgMHhBNCAtPiBORVcgU0hFUUVMIFNJR04KICAgICdceGE1JyAgICAgIyAgMHhBNSAtPiBZRU4gU0lHTgogICAgJ1x4YTYnICAgICAjICAweEE2IC0+IEJST0tFTiBCQVIKICAgICdceGE3JyAgICAgIyAgMHhBNyAtPiBTRUNUSU9OIFNJR04KICAgICdceGE4JyAgICAgIyAgMHhBOCAtPiBESUFFUkVTSVMKICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x4ZDcnICAgICAjICAweEFBIC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGFmJyAgICAgIyAgMHhBRiAtPiBNQUNST04KICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHhiNCcgICAgICMgIDB4QjQgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgogICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKICAgICdceGI4JyAgICAgIyAgMHhCOCAtPiBDRURJTExBCiAgICAnXHhiOScgICAgICMgIDB4QjkgLT4gU1VQRVJTQ1JJUFQgT05FCiAgICAnXHhmNycgICAgICMgIDB4QkEgLT4gRElWSVNJT04gU0lHTgogICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmMnICAgICAjICAweEJDIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YmQnICAgICAjICAweEJEIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmUnICAgICAjICAweEJFIC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgJ1x4YmYnICAgICAjICAweEJGIC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdcdTA1YjAnICAgIyAgMHhDMCAtPiBIRUJSRVcgUE9JTlQgU0hFVkEKICAgICdcdTA1YjEnICAgIyAgMHhDMSAtPiBIRUJSRVcgUE9JTlQgSEFUQUYgU0VHT0wKICAgICdcdTA1YjInICAgIyAgMHhDMiAtPiBIRUJSRVcgUE9JTlQgSEFUQUYgUEFUQUgKICAgICdcdTA1YjMnICAgIyAgMHhDMyAtPiBIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTCiAgICAnXHUwNWI0JyAgICMgIDB4QzQgLT4gSEVCUkVXIFBPSU5UIEhJUklRCiAgICAnXHUwNWI1JyAgICMgIDB4QzUgLT4gSEVCUkVXIFBPSU5UIFRTRVJFCiAgICAnXHUwNWI2JyAgICMgIDB4QzYgLT4gSEVCUkVXIFBPSU5UIFNFR09MCiAgICAnXHUwNWI3JyAgICMgIDB4QzcgLT4gSEVCUkVXIFBPSU5UIFBBVEFICiAgICAnXHUwNWI4JyAgICMgIDB4QzggLT4gSEVCUkVXIFBPSU5UIFFBTUFUUwogICAgJ1x1MDViOScgICAjICAweEM5IC0+IEhFQlJFVyBQT0lOVCBIT0xBTQogICAgJ1x1ZmZmZScgICAjICAweENBIC0+IFVOREVGSU5FRAogICAgJ1x1MDViYicgICAjICAweENCIC0+IEhFQlJFVyBQT0lOVCBRVUJVVFMKICAgICdcdTA1YmMnICAgIyAgMHhDQyAtPiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRCiAgICAnXHUwNWJkJyAgICMgIDB4Q0QgLT4gSEVCUkVXIFBPSU5UIE1FVEVHCiAgICAnXHUwNWJlJyAgICMgIDB4Q0UgLT4gSEVCUkVXIFBVTkNUVUFUSU9OIE1BUUFGCiAgICAnXHUwNWJmJyAgICMgIDB4Q0YgLT4gSEVCUkVXIFBPSU5UIFJBRkUKICAgICdcdTA1YzAnICAgIyAgMHhEMCAtPiBIRUJSRVcgUFVOQ1RVQVRJT04gUEFTRVEKICAgICdcdTA1YzEnICAgIyAgMHhEMSAtPiBIRUJSRVcgUE9JTlQgU0hJTiBET1QKICAgICdcdTA1YzInICAgIyAgMHhEMiAtPiBIRUJSRVcgUE9JTlQgU0lOIERPVAogICAgJ1x1MDVjMycgICAjICAweEQzIC0+IEhFQlJFVyBQVU5DVFVBVElPTiBTT0YgUEFTVVEKICAgICdcdTA1ZjAnICAgIyAgMHhENCAtPiBIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgVkFWCiAgICAnXHUwNWYxJyAgICMgIDB4RDUgLT4gSEVCUkVXIExJR0FUVVJFIFlJRERJU0ggVkFWIFlPRAogICAgJ1x1MDVmMicgICAjICAweEQ2IC0+IEhFQlJFVyBMSUdBVFVSRSBZSURESVNIIERPVUJMRSBZT0QKICAgICdcdTA1ZjMnICAgIyAgMHhENyAtPiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSRVNICiAgICAnXHUwNWY0JyAgICMgIDB4RDggLT4gSEVCUkVXIFBVTkNUVUFUSU9OIEdFUlNIQVlJTQogICAgJ1x1ZmZmZScgICAjICAweEQ5IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweERBIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweERCIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweERDIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEREIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweERFIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweERGIC0+IFVOREVGSU5FRAogICAgJ1x1MDVkMCcgICAjICAweEUwIC0+IEhFQlJFVyBMRVRURVIgQUxFRgogICAgJ1x1MDVkMScgICAjICAweEUxIC0+IEhFQlJFVyBMRVRURVIgQkVUCiAgICAnXHUwNWQyJyAgICMgIDB4RTIgLT4gSEVCUkVXIExFVFRFUiBHSU1FTAogICAgJ1x1MDVkMycgICAjICAweEUzIC0+IEhFQlJFVyBMRVRURVIgREFMRVQKICAgICdcdTA1ZDQnICAgIyAgMHhFNCAtPiBIRUJSRVcgTEVUVEVSIEhFCiAgICAnXHUwNWQ1JyAgICMgIDB4RTUgLT4gSEVCUkVXIExFVFRFUiBWQVYKICAgICdcdTA1ZDYnICAgIyAgMHhFNiAtPiBIRUJSRVcgTEVUVEVSIFpBWUlOCiAgICAnXHUwNWQ3JyAgICMgIDB4RTcgLT4gSEVCUkVXIExFVFRFUiBIRVQKICAgICdcdTA1ZDgnICAgIyAgMHhFOCAtPiBIRUJSRVcgTEVUVEVSIFRFVAogICAgJ1x1MDVkOScgICAjICAweEU5IC0+IEhFQlJFVyBMRVRURVIgWU9ECiAgICAnXHUwNWRhJyAgICMgIDB4RUEgLT4gSEVCUkVXIExFVFRFUiBGSU5BTCBLQUYKICAgICdcdTA1ZGInICAgIyAgMHhFQiAtPiBIRUJSRVcgTEVUVEVSIEtBRgogICAgJ1x1MDVkYycgICAjICAweEVDIC0+IEhFQlJFVyBMRVRURVIgTEFNRUQKICAgICdcdTA1ZGQnICAgIyAgMHhFRCAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIE1FTQogICAgJ1x1MDVkZScgICAjICAweEVFIC0+IEhFQlJFVyBMRVRURVIgTUVNCiAgICAnXHUwNWRmJyAgICMgIDB4RUYgLT4gSEVCUkVXIExFVFRFUiBGSU5BTCBOVU4KICAgICdcdTA1ZTAnICAgIyAgMHhGMCAtPiBIRUJSRVcgTEVUVEVSIE5VTgogICAgJ1x1MDVlMScgICAjICAweEYxIC0+IEhFQlJFVyBMRVRURVIgU0FNRUtICiAgICAnXHUwNWUyJyAgICMgIDB4RjIgLT4gSEVCUkVXIExFVFRFUiBBWUlOCiAgICAnXHUwNWUzJyAgICMgIDB4RjMgLT4gSEVCUkVXIExFVFRFUiBGSU5BTCBQRQogICAgJ1x1MDVlNCcgICAjICAweEY0IC0+IEhFQlJFVyBMRVRURVIgUEUKICAgICdcdTA1ZTUnICAgIyAgMHhGNSAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJCiAgICAnXHUwNWU2JyAgICMgIDB4RjYgLT4gSEVCUkVXIExFVFRFUiBUU0FESQogICAgJ1x1MDVlNycgICAjICAweEY3IC0+IEhFQlJFVyBMRVRURVIgUU9GCiAgICAnXHUwNWU4JyAgICMgIDB4RjggLT4gSEVCUkVXIExFVFRFUiBSRVNICiAgICAnXHUwNWU5JyAgICMgIDB4RjkgLT4gSEVCUkVXIExFVFRFUiBTSElOCiAgICAnXHUwNWVhJyAgICMgIDB4RkEgLT4gSEVCUkVXIExFVFRFUiBUQVYKICAgICdcdWZmZmUnICAgIyAgMHhGQiAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHhGQyAtPiBVTkRFRklORUQKICAgICdcdTIwMGUnICAgIyAgMHhGRCAtPiBMRUZULVRPLVJJR0hUIE1BUksKICAgICdcdTIwMGYnICAgIyAgMHhGRSAtPiBSSUdIVC1UTy1MRUZUIE1BUksKICAgICdcdWZmZmUnICAgIyAgMHhGRiAtPiBVTkRFRklORUQKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVm6XicsOMgAADjIAABMAAABlbmNvZGluZ3MvY3AxMjU2LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBjcDEyNTYgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1MvQ1AxMjU2LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3AxMjU2JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x1MjBhYycgICAjICAweDgwIC0+IEVVUk8gU0lHTgogICAgJ1x1MDY3ZScgICAjICAweDgxIC0+IEFSQUJJQyBMRVRURVIgUEVICiAgICAnXHUyMDFhJyAgICMgIDB4ODIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMTkyJyAgICMgIDB4ODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDI2JyAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUwogICAgJ1x1MjAyMCcgICAjICAweDg2IC0+IERBR0dFUgogICAgJ1x1MjAyMScgICAjICAweDg3IC0+IERPVUJMRSBEQUdHRVIKICAgICdcdTAyYzYnICAgIyAgMHg4OCAtPiBNT0RJRklFUiBMRVRURVIgQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdcdTIwMzAnICAgIyAgMHg4OSAtPiBQRVIgTUlMTEUgU0lHTgogICAgJ1x1MDY3OScgICAjICAweDhBIC0+IEFSQUJJQyBMRVRURVIgVFRFSAogICAgJ1x1MjAzOScgICAjICAweDhCIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMTUyJyAgICMgIDB4OEMgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQogICAgJ1x1MDY4NicgICAjICAweDhEIC0+IEFSQUJJQyBMRVRURVIgVENIRUgKICAgICdcdTA2OTgnICAgIyAgMHg4RSAtPiBBUkFCSUMgTEVUVEVSIEpFSAogICAgJ1x1MDY4OCcgICAjICAweDhGIC0+IEFSQUJJQyBMRVRURVIgRERBTAogICAgJ1x1MDZhZicgICAjICAweDkwIC0+IEFSQUJJQyBMRVRURVIgR0FGCiAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAogICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICiAgICAnXHUwNmE5JyAgICMgIDB4OTggLT4gQVJBQklDIExFVFRFUiBLRUhFSAogICAgJ1x1MjEyMicgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x1MDY5MScgICAjICAweDlBIC0+IEFSQUJJQyBMRVRURVIgUlJFSAogICAgJ1x1MjAzYScgICAjICAweDlCIC0+IFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDE1MycgICAjICAweDlDIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIE9FCiAgICAnXHUyMDBjJyAgICMgIDB4OUQgLT4gWkVSTyBXSURUSCBOT04tSk9JTkVSCiAgICAnXHUyMDBkJyAgICMgIDB4OUUgLT4gWkVSTyBXSURUSCBKT0lORVIKICAgICdcdTA2YmEnICAgIyAgMHg5RiAtPiBBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BCiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTA2MGMnICAgIyAgMHhBMSAtPiBBUkFCSUMgQ09NTUEKICAgICdceGEyJyAgICAgIyAgMHhBMiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x4YTUnICAgICAjICAweEE1IC0+IFlFTiBTSUdOCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YTgnICAgICAjICAweEE4IC0+IERJQUVSRVNJUwogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHUwNmJlJyAgICMgIDB4QUEgLT4gQVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUKICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGFmJyAgICAgIyAgMHhBRiAtPiBNQUNST04KICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHhiNCcgICAgICMgIDB4QjQgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgogICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKICAgICdceGI4JyAgICAgIyAgMHhCOCAtPiBDRURJTExBCiAgICAnXHhiOScgICAgICMgIDB4QjkgLT4gU1VQRVJTQ1JJUFQgT05FCiAgICAnXHUwNjFiJyAgICMgIDB4QkEgLT4gQVJBQklDIFNFTUlDT0xPTgogICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmMnICAgICAjICAweEJDIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YmQnICAgICAjICAweEJEIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmUnICAgICAjICAweEJFIC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgJ1x1MDYxZicgICAjICAweEJGIC0+IEFSQUJJQyBRVUVTVElPTiBNQVJLCiAgICAnXHUwNmMxJyAgICMgIDB4QzAgLT4gQVJBQklDIExFVFRFUiBIRUggR09BTAogICAgJ1x1MDYyMScgICAjICAweEMxIC0+IEFSQUJJQyBMRVRURVIgSEFNWkEKICAgICdcdTA2MjInICAgIyAgMHhDMiAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRQogICAgJ1x1MDYyMycgICAjICAweEMzIC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFCiAgICAnXHUwNjI0JyAgICMgIDB4QzQgLT4gQVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRQogICAgJ1x1MDYyNScgICAjICAweEM1IC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XCiAgICAnXHUwNjI2JyAgICMgIDB4QzYgLT4gQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRQogICAgJ1x1MDYyNycgICAjICAweEM3IC0+IEFSQUJJQyBMRVRURVIgQUxFRgogICAgJ1x1MDYyOCcgICAjICAweEM4IC0+IEFSQUJJQyBMRVRURVIgQkVICiAgICAnXHUwNjI5JyAgICMgIDB4QzkgLT4gQVJBQklDIExFVFRFUiBURUggTUFSQlVUQQogICAgJ1x1MDYyYScgICAjICAweENBIC0+IEFSQUJJQyBMRVRURVIgVEVICiAgICAnXHUwNjJiJyAgICMgIDB4Q0IgLT4gQVJBQklDIExFVFRFUiBUSEVICiAgICAnXHUwNjJjJyAgICMgIDB4Q0MgLT4gQVJBQklDIExFVFRFUiBKRUVNCiAgICAnXHUwNjJkJyAgICMgIDB4Q0QgLT4gQVJBQklDIExFVFRFUiBIQUgKICAgICdcdTA2MmUnICAgIyAgMHhDRSAtPiBBUkFCSUMgTEVUVEVSIEtIQUgKICAgICdcdTA2MmYnICAgIyAgMHhDRiAtPiBBUkFCSUMgTEVUVEVSIERBTAogICAgJ1x1MDYzMCcgICAjICAweEQwIC0+IEFSQUJJQyBMRVRURVIgVEhBTAogICAgJ1x1MDYzMScgICAjICAweEQxIC0+IEFSQUJJQyBMRVRURVIgUkVICiAgICAnXHUwNjMyJyAgICMgIDB4RDIgLT4gQVJBQklDIExFVFRFUiBaQUlOCiAgICAnXHUwNjMzJyAgICMgIDB4RDMgLT4gQVJBQklDIExFVFRFUiBTRUVOCiAgICAnXHUwNjM0JyAgICMgIDB4RDQgLT4gQVJBQklDIExFVFRFUiBTSEVFTgogICAgJ1x1MDYzNScgICAjICAweEQ1IC0+IEFSQUJJQyBMRVRURVIgU0FECiAgICAnXHUwNjM2JyAgICMgIDB4RDYgLT4gQVJBQklDIExFVFRFUiBEQUQKICAgICdceGQ3JyAgICAgIyAgMHhENyAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCiAgICAnXHUwNjM3JyAgICMgIDB4RDggLT4gQVJBQklDIExFVFRFUiBUQUgKICAgICdcdTA2MzgnICAgIyAgMHhEOSAtPiBBUkFCSUMgTEVUVEVSIFpBSAogICAgJ1x1MDYzOScgICAjICAweERBIC0+IEFSQUJJQyBMRVRURVIgQUlOCiAgICAnXHUwNjNhJyAgICMgIDB4REIgLT4gQVJBQklDIExFVFRFUiBHSEFJTgogICAgJ1x1MDY0MCcgICAjICAweERDIC0+IEFSQUJJQyBUQVRXRUVMCiAgICAnXHUwNjQxJyAgICMgIDB4REQgLT4gQVJBQklDIExFVFRFUiBGRUgKICAgICdcdTA2NDInICAgIyAgMHhERSAtPiBBUkFCSUMgTEVUVEVSIFFBRgogICAgJ1x1MDY0MycgICAjICAweERGIC0+IEFSQUJJQyBMRVRURVIgS0FGCiAgICAnXHhlMCcgICAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x1MDY0NCcgICAjICAweEUxIC0+IEFSQUJJQyBMRVRURVIgTEFNCiAgICAnXHhlMicgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwNjQ1JyAgICMgIDB4RTMgLT4gQVJBQklDIExFVFRFUiBNRUVNCiAgICAnXHUwNjQ2JyAgICMgIDB4RTQgLT4gQVJBQklDIExFVFRFUiBOT09OCiAgICAnXHUwNjQ3JyAgICMgIDB4RTUgLT4gQVJBQklDIExFVFRFUiBIRUgKICAgICdcdTA2NDgnICAgIyAgMHhFNiAtPiBBUkFCSUMgTEVUVEVSIFdBVwogICAgJ1x4ZTcnICAgICAjICAweEU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZTgnICAgICAjICAweEU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGU5JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlYScgICAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlYicgICAgICMgIDB4RUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdcdTA2NDknICAgIyAgMHhFQyAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQQogICAgJ1x1MDY0YScgICAjICAweEVEIC0+IEFSQUJJQyBMRVRURVIgWUVICiAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdTA2NGInICAgIyAgMHhGMCAtPiBBUkFCSUMgRkFUSEFUQU4KICAgICdcdTA2NGMnICAgIyAgMHhGMSAtPiBBUkFCSUMgREFNTUFUQU4KICAgICdcdTA2NGQnICAgIyAgMHhGMiAtPiBBUkFCSUMgS0FTUkFUQU4KICAgICdcdTA2NGUnICAgIyAgMHhGMyAtPiBBUkFCSUMgRkFUSEEKICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdcdTA2NGYnICAgIyAgMHhGNSAtPiBBUkFCSUMgREFNTUEKICAgICdcdTA2NTAnICAgIyAgMHhGNiAtPiBBUkFCSUMgS0FTUkEKICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUwNjUxJyAgICMgIDB4RjggLT4gQVJBQklDIFNIQUREQQogICAgJ1x4ZjknICAgICAjICAweEY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdcdTA2NTInICAgIyAgMHhGQSAtPiBBUkFCSUMgU1VLVU4KICAgICdceGZiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGZjJyAgICAgIyAgMHhGQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MjAwZScgICAjICAweEZEIC0+IExFRlQtVE8tUklHSFQgTUFSSwogICAgJ1x1MjAwZicgICAjICAweEZFIC0+IFJJR0hULVRPLUxFRlQgTUFSSwogICAgJ1x1MDZkMicgICAjICAweEZGIC0+IEFSQUJJQyBMRVRURVIgWUVIIEJBUlJFRQopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWnsCoIz40AAA+NAAAEwAAAGVuY29kaW5ncy9jcDEyNTcucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGNwMTI1NyBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9NSUNTRlQvV0lORE9XUy9DUDEyNTcuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDEyNTcnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHUyMGFjJyAgICMgIDB4ODAgLT4gRVVSTyBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4ODEgLT4gVU5ERUZJTkVECiAgICAnXHUyMDFhJyAgICMgIDB4ODIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHVmZmZlJyAgICMgIDB4ODMgLT4gVU5ERUZJTkVECiAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDI2JyAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUwogICAgJ1x1MjAyMCcgICAjICAweDg2IC0+IERBR0dFUgogICAgJ1x1MjAyMScgICAjICAweDg3IC0+IERPVUJMRSBEQUdHRVIKICAgICdcdWZmZmUnICAgIyAgMHg4OCAtPiBVTkRFRklORUQKICAgICdcdTIwMzAnICAgIyAgMHg4OSAtPiBQRVIgTUlMTEUgU0lHTgogICAgJ1x1ZmZmZScgICAjICAweDhBIC0+IFVOREVGSU5FRAogICAgJ1x1MjAzOScgICAjICAweDhCIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHVmZmZlJyAgICMgIDB4OEMgLT4gVU5ERUZJTkVECiAgICAnXHhhOCcgICAgICMgIDB4OEQgLT4gRElBRVJFU0lTCiAgICAnXHUwMmM3JyAgICMgIDB4OEUgLT4gQ0FST04KICAgICdceGI4JyAgICAgIyAgMHg4RiAtPiBDRURJTExBCiAgICAnXHVmZmZlJyAgICMgIDB4OTAgLT4gVU5ERUZJTkVECiAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAogICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICiAgICAnXHVmZmZlJyAgICMgIDB4OTggLT4gVU5ERUZJTkVECiAgICAnXHUyMTIyJyAgICMgIDB4OTkgLT4gVFJBREUgTUFSSyBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4OUEgLT4gVU5ERUZJTkVECiAgICAnXHUyMDNhJyAgICMgIDB4OUIgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHVmZmZlJyAgICMgIDB4OUMgLT4gVU5ERUZJTkVECiAgICAnXHhhZicgICAgICMgIDB4OUQgLT4gTUFDUk9OCiAgICAnXHUwMmRiJyAgICMgIDB4OUUgLT4gT0dPTkVLCiAgICAnXHVmZmZlJyAgICMgIDB4OUYgLT4gVU5ERUZJTkVECiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdWZmZmUnICAgIyAgMHhBMSAtPiBVTkRFRklORUQKICAgICdceGEyJyAgICAgIyAgMHhBMiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x1ZmZmZScgICAjICAweEE1IC0+IFVOREVGSU5FRAogICAgJ1x4YTYnICAgICAjICAweEE2IC0+IEJST0tFTiBCQVIKICAgICdceGE3JyAgICAgIyAgMHhBNyAtPiBTRUNUSU9OIFNJR04KICAgICdceGQ4JyAgICAgIyAgMHhBOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTAxNTYnICAgIyAgMHhBQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQogICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YzYnICAgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdceGIyJyAgICAgIyAgMHhCMiAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGIzJyAgICAgIyAgMHhCMyAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x4YjQnICAgICAjICAweEI0IC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4YjUnICAgICAjICAweEI1IC0+IE1JQ1JPIFNJR04KICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCiAgICAnXHhmOCcgICAgICMgIDB4QjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGI5JyAgICAgIyAgMHhCOSAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdcdTAxNTcnICAgIyAgMHhCQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJjJyAgICAgIyAgMHhCQyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgICdceGJkJyAgICAgIyAgMHhCRCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJlJyAgICAgIyAgMHhCRSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdceGU2JyAgICAgIyAgMHhCRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdcdTAxMDQnICAgIyAgMHhDMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHUwMTJlJyAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSwogICAgJ1x1MDEwMCcgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KICAgICdcdTAxMDYnICAgIyAgMHhDMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdcdTAxMTgnICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCiAgICAnXHUwMTEyJyAgICMgIDB4QzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEwYycgICAjICAweEM4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgogICAgJ1x4YzknICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x1MDE3OScgICAjICAweENBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgJ1x1MDExNicgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKICAgICdcdTAxMjInICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0VESUxMQQogICAgJ1x1MDEzNicgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCiAgICAnXHUwMTJhJyAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEzYicgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiAgICAnXHUwMTYwJyAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUwMTQzJyAgICMgIDB4RDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCiAgICAnXHUwMTQ1JyAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENFRElMTEEKICAgICdceGQzJyAgICAgIyAgMHhEMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdcdTAxNGMnICAgIyAgMHhENCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OCiAgICAnXHhkNScgICAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhkNicgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDcnICAgICAjICAweEQ3IC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdcdTAxNzInICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCiAgICAnXHUwMTQxJyAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x1MDE1YScgICAjICAweERBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgJ1x1MDE2YScgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTdiJyAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDE3ZCcgICAjICAweERFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHUwMTA1JyAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgICdcdTAxMmYnICAgIyAgMHhFMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSwogICAgJ1x1MDEwMScgICAjICAweEUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OCiAgICAnXHUwMTA3JyAgICMgIDB4RTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQogICAgJ1x4ZTQnICAgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhlNScgICAgICMgIDB4RTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHUwMTE5JyAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgICdcdTAxMTMnICAgIyAgMHhFNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEwZCcgICAjICAweEU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KICAgICdceGU5JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHUwMTdhJyAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgJ1x1MDExNycgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUwMTIzJyAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiAgICAnXHUwMTM3JyAgICMgIDB4RUQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBCiAgICAnXHUwMTJiJyAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KICAgICdcdTAxM2MnICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENFRElMTEEKICAgICdcdTAxNjEnICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUwMTQ0JyAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgJ1x1MDE0NicgICAjICAweEYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQQogICAgJ1x4ZjMnICAgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdcdTAxNGQnICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgogICAgJ1x4ZjUnICAgICAjICAweEY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGY2JyAgICAgIyAgMHhGNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjcnICAgICAjICAweEY3IC0+IERJVklTSU9OIFNJR04KICAgICdcdTAxNzMnICAgIyAgMHhGOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgJ1x1MDE0MicgICAjICAweEY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFCiAgICAnXHUwMTViJyAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgJ1x1MDE2YicgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCiAgICAnXHhmYycgICAgICMgIDB4RkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxN2MnICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDE3ZScgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdcdTAyZDknICAgIyAgMHhGRiAtPiBET1QgQUJPVkUKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVpLofXM0NAAANDQAABMAAABlbmNvZGluZ3MvY3AxMjU4LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBjcDEyNTggZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1MvQ1AxMjU4LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3AxMjU4JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x1MjBhYycgICAjICAweDgwIC0+IEVVUk8gU0lHTgogICAgJ1x1ZmZmZScgICAjICAweDgxIC0+IFVOREVGSU5FRAogICAgJ1x1MjAxYScgICAjICAweDgyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDE5MicgICAjICAweDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgJ1x1MjAxZScgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKICAgICdcdTIwMjAnICAgIyAgMHg4NiAtPiBEQUdHRVIKICAgICdcdTIwMjEnICAgIyAgMHg4NyAtPiBET1VCTEUgREFHR0VSCiAgICAnXHUwMmM2JyAgICMgIDB4ODggLT4gTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCiAgICAnXHUyMDMwJyAgICMgIDB4ODkgLT4gUEVSIE1JTExFIFNJR04KICAgICdcdWZmZmUnICAgIyAgMHg4QSAtPiBVTkRFRklORUQKICAgICdcdTIwMzknICAgIyAgMHg4QiAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDE1MicgICAjICAweDhDIC0+IExBVElOIENBUElUQUwgTElHQVRVUkUgT0UKICAgICdcdWZmZmUnICAgIyAgMHg4RCAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RSAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RiAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg5MCAtPiBVTkRFRklORUQKICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCiAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAogICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKICAgICdcdTAyZGMnICAgIyAgMHg5OCAtPiBTTUFMTCBUSUxERQogICAgJ1x1MjEyMicgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x1ZmZmZScgICAjICAweDlBIC0+IFVOREVGSU5FRAogICAgJ1x1MjAzYScgICAjICAweDlCIC0+IFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDE1MycgICAjICAweDlDIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIE9FCiAgICAnXHVmZmZlJyAgICMgIDB4OUQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUUgLT4gVU5ERUZJTkVECiAgICAnXHUwMTc4JyAgICMgIDB4OUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHhhMScgICAgICMgIDB4QTEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdceGE0JyAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHhhNScgICAgICMgIDB4QTUgLT4gWUVOIFNJR04KICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCiAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhhOCcgICAgICMgIDB4QTggLT4gRElBRVJFU0lTCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdceGFhJyAgICAgIyAgMHhBQSAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YWYnICAgICAjICAweEFGIC0+IE1BQ1JPTgogICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCiAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCiAgICAnXHhiMycgICAgICMgIDB4QjMgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGI0JyAgICAgIyAgMHhCNCAtPiBBQ1VURSBBQ0NFTlQKICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAogICAgJ1x4YjgnICAgICAjICAweEI4IC0+IENFRElMTEEKICAgICdceGI5JyAgICAgIyAgMHhCOSAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdceGJhJyAgICAgIyAgMHhCQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJjJyAgICAgIyAgMHhCQyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgICdceGJkJyAgICAgIyAgMHhCRCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJlJyAgICAgIyAgMHhCRSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdceGJmJyAgICAgIyAgMHhCRiAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhjMCcgICAgICMgIDB4QzAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMScgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMicgICAgICMgIDB4QzIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMDInICAgIyAgMHhDMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUKICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGM2JyAgICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQogICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhjOCcgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhjYScgICAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNiJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMzAwJyAgICMgIDB4Q0MgLT4gQ09NQklOSU5HIEdSQVZFIEFDQ0VOVAogICAgJ1x4Y2QnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjZicgICAgICMgIDB4Q0YgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDExMCcgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTVFJPS0UKICAgICdceGQxJyAgICAgIyAgMHhEMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdcdTAzMDknICAgIyAgMHhEMiAtPiBDT01CSU5JTkcgSE9PSyBBQk9WRQogICAgJ1x4ZDMnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMWEwJyAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4KICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNycgICAgICMgIDB4RDcgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x4ZDgnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGQ5JyAgICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGRhJyAgICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGRiJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxYWYnICAgIyAgMHhERCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STgogICAgJ1x1MDMwMycgICAjICAweERFIC0+IENPTUJJTklORyBUSUxERQogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHhlMCcgICAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMDMnICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFCiAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGU1JyAgICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGU2JyAgICAgIyAgMHhFNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdceGU3JyAgICAgIyAgMHhFNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU4JyAgICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlOScgICAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMzAxJyAgICMgIDB4RUMgLT4gQ09NQklOSU5HIEFDVVRFIEFDQ0VOVAogICAgJ1x4ZWQnICAgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDExMScgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggU1RST0tFCiAgICAnXHhmMScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x1MDMyMycgICAjICAweEYyIC0+IENPTUJJTklORyBET1QgQkVMT1cKICAgICdceGYzJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmNCcgICAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMWExJyAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHhmOCcgICAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZmInICAgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMWIwJyAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOCiAgICAnXHUyMGFiJyAgICMgIDB4RkUgLT4gRE9ORyBTSUdOCiAgICAnXHhmZicgICAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVm7lLQU0NwAANDcAABIAAABlbmNvZGluZ3MvY3AyNzMucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGNwMjczIGdlbmVyYXRlZCBmcm9tICdweXRob24tbWFwcGluZ3MvQ1AyNzMuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDI3MycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICAjICAweDAwIC0+IE5VTEwgKE5VTCkKICAgICdceDAxJyAgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORyAoU09IKQogICAgJ1x4MDInICAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUIChTVFgpCiAgICAnXHgwMycgICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUIChFVFgpCiAgICAnXHg5YycgICAgICAjICAweDA0IC0+IFNUUklORyBURVJNSU5BVE9SIChTVCkKICAgICdcdCcgICAgICAgICMgIDB4MDUgLT4gQ0hBUkFDVEVSIFRBQlVMQVRJT04gKEhUKQogICAgJ1x4ODYnICAgICAgIyAgMHgwNiAtPiBTVEFSVCBPRiBTRUxFQ1RFRCBBUkVBIChTU0EpCiAgICAnXHg3ZicgICAgICAjICAweDA3IC0+IERFTEVURSAoREVMKQogICAgJ1x4OTcnICAgICAgIyAgMHgwOCAtPiBFTkQgT0YgR1VBUkRFRCBBUkVBIChFUEEpCiAgICAnXHg4ZCcgICAgICAjICAweDA5IC0+IFJFVkVSU0UgTElORSBGRUVEIChSSSkKICAgICdceDhlJyAgICAgICMgIDB4MEEgLT4gU0lOR0xFLVNISUZUIFRXTyAoU1MyKQogICAgJ1x4MGInICAgICAgIyAgMHgwQiAtPiBMSU5FIFRBQlVMQVRJT04gKFZUKQogICAgJ1x4MGMnICAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQgKEZGKQogICAgJ1xyJyAgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4gKENSKQogICAgJ1x4MGUnICAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQgKFNPKQogICAgJ1x4MGYnICAgICAgIyAgMHgwRiAtPiBTSElGVCBJTiAoU0kpCiAgICAnXHgxMCcgICAgICAjICAweDEwIC0+IERBVEFMSU5LIEVTQ0FQRSAoRExFKQogICAgJ1x4MTEnICAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUgKERDMSkKICAgICdceDEyJyAgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPIChEQzIpCiAgICAnXHgxMycgICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFIChEQzMpCiAgICAnXHg5ZCcgICAgICAjICAweDE0IC0+IE9QRVJBVElORyBTWVNURU0gQ09NTUFORCAoT1NDKQogICAgJ1x4ODUnICAgICAgIyAgMHgxNSAtPiBORVhUIExJTkUgKE5FTCkKICAgICdceDA4JyAgICAgICMgIDB4MTYgLT4gQkFDS1NQQUNFIChCUykKICAgICdceDg3JyAgICAgICMgIDB4MTcgLT4gRU5EIE9GIFNFTEVDVEVEIEFSRUEgKEVTQSkKICAgICdceDE4JyAgICAgICMgIDB4MTggLT4gQ0FOQ0VMIChDQU4pCiAgICAnXHgxOScgICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0gKEVNKQogICAgJ1x4OTInICAgICAgIyAgMHgxQSAtPiBQUklWQVRFIFVTRSBUV08gKFBVMikKICAgICdceDhmJyAgICAgICMgIDB4MUIgLT4gU0lOR0xFLVNISUZUIFRIUkVFIChTUzMpCiAgICAnXHgxYycgICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SIChJUzQpCiAgICAnXHgxZCcgICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUiAoSVMzKQogICAgJ1x4MWUnICAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SIChJUzIpCiAgICAnXHgxZicgICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SIChJUzEpCiAgICAnXHg4MCcgICAgICAjICAweDIwIC0+IFBBRERJTkcgQ0hBUkFDVEVSIChQQUQpCiAgICAnXHg4MScgICAgICAjICAweDIxIC0+IEhJR0ggT0NURVQgUFJFU0VUIChIT1ApCiAgICAnXHg4MicgICAgICAjICAweDIyIC0+IEJSRUFLIFBFUk1JVFRFRCBIRVJFIChCUEgpCiAgICAnXHg4MycgICAgICAjICAweDIzIC0+IE5PIEJSRUFLIEhFUkUgKE5CSCkKICAgICdceDg0JyAgICAgICMgIDB4MjQgLT4gSU5ERVggKElORCkKICAgICdcbicgICAgICAgICMgIDB4MjUgLT4gTElORSBGRUVEIChMRikKICAgICdceDE3JyAgICAgICMgIDB4MjYgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSyAoRVRCKQogICAgJ1x4MWInICAgICAgIyAgMHgyNyAtPiBFU0NBUEUgKEVTQykKICAgICdceDg4JyAgICAgICMgIDB4MjggLT4gQ0hBUkFDVEVSIFRBQlVMQVRJT04gU0VUIChIVFMpCiAgICAnXHg4OScgICAgICAjICAweDI5IC0+IENIQVJBQ1RFUiBUQUJVTEFUSU9OIFdJVEggSlVTVElGSUNBVElPTiAoSFRKKQogICAgJ1x4OGEnICAgICAgIyAgMHgyQSAtPiBMSU5FIFRBQlVMQVRJT04gU0VUIChWVFMpCiAgICAnXHg4YicgICAgICAjICAweDJCIC0+IFBBUlRJQUwgTElORSBGT1JXQVJEIChQTEQpCiAgICAnXHg4YycgICAgICAjICAweDJDIC0+IFBBUlRJQUwgTElORSBCQUNLV0FSRCAoUExVKQogICAgJ1x4MDUnICAgICAgIyAgMHgyRCAtPiBFTlFVSVJZIChFTlEpCiAgICAnXHgwNicgICAgICAjICAweDJFIC0+IEFDS05PV0xFREdFIChBQ0spCiAgICAnXHgwNycgICAgICAjICAweDJGIC0+IEJFTEwgKEJFTCkKICAgICdceDkwJyAgICAgICMgIDB4MzAgLT4gREVWSUNFIENPTlRST0wgU1RSSU5HIChEQ1MpCiAgICAnXHg5MScgICAgICAjICAweDMxIC0+IFBSSVZBVEUgVVNFIE9ORSAoUFUxKQogICAgJ1x4MTYnICAgICAgIyAgMHgzMiAtPiBTWU5DSFJPTk9VUyBJRExFIChTWU4pCiAgICAnXHg5MycgICAgICAjICAweDMzIC0+IFNFVCBUUkFOU01JVCBTVEFURSAoU1RTKQogICAgJ1x4OTQnICAgICAgIyAgMHgzNCAtPiBDQU5DRUwgQ0hBUkFDVEVSIChDQ0gpCiAgICAnXHg5NScgICAgICAjICAweDM1IC0+IE1FU1NBR0UgV0FJVElORyAoTVcpCiAgICAnXHg5NicgICAgICAjICAweDM2IC0+IFNUQVJUIE9GIEdVQVJERUQgQVJFQSAoU1BBKQogICAgJ1x4MDQnICAgICAgIyAgMHgzNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIChFT1QpCiAgICAnXHg5OCcgICAgICAjICAweDM4IC0+IFNUQVJUIE9GIFNUUklORyAoU09TKQogICAgJ1x4OTknICAgICAgIyAgMHgzOSAtPiBTSU5HTEUgR1JBUEhJQyBDSEFSQUNURVIgSU5UUk9EVUNFUiAoU0dDSSkKICAgICdceDlhJyAgICAgICMgIDB4M0EgLT4gU0lOR0xFIENIQVJBQ1RFUiBJTlRST0RVQ0VSIChTQ0kpCiAgICAnXHg5YicgICAgICAjICAweDNCIC0+IENPTlRST0wgU0VRVUVOQ0UgSU5UUk9EVUNFUiAoQ1NJKQogICAgJ1x4MTQnICAgICAgIyAgMHgzQyAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSIChEQzQpCiAgICAnXHgxNScgICAgICAjICAweDNEIC0+IE5FR0FUSVZFIEFDS05PV0xFREdFIChOQUspCiAgICAnXHg5ZScgICAgICAjICAweDNFIC0+IFBSSVZBQ1kgTUVTU0FHRSAoUE0pCiAgICAnXHgxYScgICAgICAjICAweDNGIC0+IFNVQlNUSVRVVEUgKFNVQikKICAgICcgJyAgICAgICAgICMgIDB4NDAgLT4gU1BBQ0UKICAgICdceGEwJyAgICAgICMgIDB4NDEgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdceGUyJyAgICAgICMgIDB4NDIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAneycgICAgICAgICAjICAweDQzIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ1x4ZTAnICAgICAgIyAgMHg0NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhlMScgICAgICAjICAweDQ1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUzJyAgICAgICMgIDB4NDYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZTUnICAgICAgIyAgMHg0NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGU3JyAgICAgICMgIDB4NDggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhmMScgICAgICAjICAweDQ5IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGM0JyAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJy4nICAgICAgICAgIyAgMHg0QiAtPiBGVUxMIFNUT1AKICAgICc8JyAgICAgICAgICMgIDB4NEMgLT4gTEVTUy1USEFOIFNJR04KICAgICcoJyAgICAgICAgICMgIDB4NEQgLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJysnICAgICAgICAgIyAgMHg0RSAtPiBQTFVTIFNJR04KICAgICchJyAgICAgICAgICMgIDB4NEYgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyYnICAgICAgICAgIyAgMHg1MCAtPiBBTVBFUlNBTkQKICAgICdceGU5JyAgICAgICMgIDB4NTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAgIyAgMHg1MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgICMgIDB4NTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGU4JyAgICAgICMgIDB4NTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWQnICAgICAgIyAgMHg1NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlZScgICAgICAjICAweDU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWYnICAgICAgIyAgMHg1NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWMnICAgICAgIyAgMHg1OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnficgICAgICAgICAjICAweDU5IC0+IFRJTERFCiAgICAnXHhkYycgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICckJyAgICAgICAgICMgIDB4NUIgLT4gRE9MTEFSIFNJR04KICAgICcqJyAgICAgICAgICMgIDB4NUMgLT4gQVNURVJJU0sKICAgICcpJyAgICAgICAgICMgIDB4NUQgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICc7JyAgICAgICAgICMgIDB4NUUgLT4gU0VNSUNPTE9OCiAgICAnXicgICAgICAgICAjICAweDVGIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnLScgICAgICAgICAjICAweDYwIC0+IEhZUEhFTi1NSU5VUwogICAgJy8nICAgICAgICAgIyAgMHg2MSAtPiBTT0xJRFVTCiAgICAnXHhjMicgICAgICAjICAweDYyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnWycgICAgICAgICAjICAweDYzIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdceGMwJyAgICAgICMgIDB4NjQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMScgICAgICAjICAweDY1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4YzMnICAgICAgIyAgMHg2NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGM1JyAgICAgICMgIDB4NjcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGM3JyAgICAgICMgIDB4NjggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGQxJyAgICAgICMgIDB4NjkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhmNicgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnLCcgICAgICAgICAjICAweDZCIC0+IENPTU1BCiAgICAnJScgICAgICAgICAjICAweDZDIC0+IFBFUkNFTlQgU0lHTgogICAgJ18nICAgICAgICAgIyAgMHg2RCAtPiBMT1cgTElORQogICAgJz4nICAgICAgICAgIyAgMHg2RSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAgIyAgMHg2RiAtPiBRVUVTVElPTiBNQVJLCiAgICAnXHhmOCcgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhjOScgICAgICAjICAweDcxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4Y2EnICAgICAgIyAgMHg3MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAgIyAgMHg3MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhjOCcgICAgICAjICAweDc0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4Y2QnICAgICAgIyAgMHg3NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgICMgIDB4NzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgICMgIDB4NzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4Y2MnICAgICAgIyAgMHg3OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdgJyAgICAgICAgICMgIDB4NzkgLT4gR1JBVkUgQUNDRU5UCiAgICAnOicgICAgICAgICAjICAweDdBIC0+IENPTE9OCiAgICAnIycgICAgICAgICAjICAweDdCIC0+IE5VTUJFUiBTSUdOCiAgICAnXHhhNycgICAgICAjICAweDdDIC0+IFNFQ1RJT04gU0lHTgogICAgIiciICAgICAgICAgIyAgMHg3RCAtPiBBUE9TVFJPUEhFCiAgICAnPScgICAgICAgICAjICAweDdFIC0+IEVRVUFMUyBTSUdOCiAgICAnIicgICAgICAgICAjICAweDdGIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnXHhkOCcgICAgICAjICAweDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdhJyAgICAgICAgICMgIDB4ODEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgICMgIDB4ODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgICMgIDB4ODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgICMgIDB4ODQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgICMgIDB4ODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgICMgIDB4ODYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgICMgIDB4ODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdceGFiJyAgICAgICMgIDB4OEEgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgICMgIDB4OEIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhmMCcgICAgICAjICAweDhDIC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEggKEljZWxhbmRpYykKICAgICdceGZkJyAgICAgICMgIDB4OEQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgJ1x4ZmUnICAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKICAgICdceGIxJyAgICAgICMgIDB4OEYgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHhiMCcgICAgICAjICAweDkwIC0+IERFR1JFRSBTSUdOCiAgICAnaicgICAgICAgICAjICAweDkxIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICAjICAweDkyIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICAjICAweDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICAjICAweDk1IC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICAjICAweDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICAjICAweDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICAjICAweDk4IC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICAjICAweDk5IC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAnXHhhYScgICAgICAjICAweDlBIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYScgICAgICAjICAweDlCIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4ZTYnICAgICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdceGI4JyAgICAgICMgIDB4OUQgLT4gQ0VESUxMQQogICAgJ1x4YzYnICAgICAgIyAgMHg5RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQogICAgJ1x4YTQnICAgICAgIyAgMHg5RiAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHhiNScgICAgICAjICAweEEwIC0+IE1JQ1JPIFNJR04KICAgICdceGRmJyAgICAgICMgIDB4QTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMgKEdlcm1hbikKICAgICdzJyAgICAgICAgICMgIDB4QTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgICMgIDB4QTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgICMgIDB4QTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgICMgIDB4QTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgICMgIDB4QTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgICMgIDB4QTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgICMgIDB4QTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgICMgIDB4QTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICdceGExJyAgICAgICMgIDB4QUEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YmYnICAgICAgIyAgMHhBQiAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhkMCcgICAgICAjICAweEFDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQogICAgJ1x4ZGQnICAgICAgIyAgMHhBRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGRlJyAgICAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKICAgICdceGFlJyAgICAgICMgIDB4QUYgLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHhhMicgICAgICAjICAweEIwIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAgIyAgMHhCMSAtPiBQT1VORCBTSUdOCiAgICAnXHhhNScgICAgICAjICAweEIyIC0+IFlFTiBTSUdOCiAgICAnXHhiNycgICAgICAjICAweEIzIC0+IE1JRERMRSBET1QKICAgICdceGE5JyAgICAgICMgIDB4QjQgLT4gQ09QWVJJR0hUIFNJR04KICAgICdAJyAgICAgICAgICMgIDB4QjUgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ1x4YjYnICAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGJjJyAgICAgICMgIDB4QjcgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhiZCcgICAgICAjICAweEI4IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmUnICAgICAgIyAgMHhCOSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdceGFjJyAgICAgICMgIDB4QkEgLT4gTk9UIFNJR04KICAgICd8JyAgICAgICAgICMgIDB4QkIgLT4gVkVSVElDQUwgTElORQogICAgJ1x1MjAzZScgICAgIyAgMHhCQyAtPiBPVkVSTElORQogICAgJ1x4YTgnICAgICAgIyAgMHhCRCAtPiBESUFFUkVTSVMKICAgICdceGI0JyAgICAgICMgIDB4QkUgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhkNycgICAgICAjICAweEJGIC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdceGU0JyAgICAgICMgIDB4QzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdBJyAgICAgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgICMgIDB4QzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdceGFkJyAgICAgICMgIDB4Q0EgLT4gU09GVCBIWVBIRU4KICAgICdceGY0JyAgICAgICMgIDB4Q0IgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhhNicgICAgICAjICAweENDIC0+IEJST0tFTiBCQVIKICAgICdceGYyJyAgICAgICMgIDB4Q0QgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAgIyAgMHhDRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmNScgICAgICAjICAweENGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGZjJyAgICAgICMgIDB4RDAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdKJyAgICAgICAgICMgIDB4RDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgICMgIDB4RDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICAjICAweEQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgICMgIDB4RDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdceGI5JyAgICAgICMgIDB4REEgLT4gU1VQRVJTQ1JJUFQgT05FCiAgICAnXHhmYicgICAgICAjICAweERCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ30nICAgICAgICAgIyAgMHhEQyAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnXHhmOScgICAgICAjICAweEREIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGZhJyAgICAgICMgIDB4REUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZmYnICAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDYnICAgICAgIyAgMHhFMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmNycgICAgICAjICAweEUxIC0+IERJVklTSU9OIFNJR04KICAgICdTJyAgICAgICAgICMgIDB4RTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAgIyAgMHhFMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICAjICAweEU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAgIyAgMHhFNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAgIyAgMHhFOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnXHhiMicgICAgICAjICAweEVBIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4ZDQnICAgICAgIyAgMHhFQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1xcJyAgICAgICAgIyAgMHhFQyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICdceGQyJyAgICAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhkMycgICAgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDUnICAgICAgIyAgMHhFRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICcwJyAgICAgICAgICMgIDB4RjAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAgIyAgMHhGMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgICMgIDB4RjIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICAjICAweEYzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICAjICAweEY0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgICMgIDB4RjUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAgIyAgMHhGNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgICMgIDB4RjcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgICMgIDB4RjggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgICMgIDB4RjkgLT4gRElHSVQgTklORQogICAgJ1x4YjMnICAgICAgIyAgMHhGQSAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x4ZGInICAgICAgIyAgMHhGQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ10nICAgICAgICAgIyAgMHhGQyAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1x4ZDknICAgICAgIyAgMHhGRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGRhJyAgICAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHg5ZicgICAgICAjICAweEZGIC0+IEFQUExJQ0FUSU9OIFBST0dSQU0gQ09NTUFORCAoQVBDKQopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWtU4NyBcvAAAXLwAAEgAAAGVuY29kaW5ncy9jcDQyNC5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3A0MjQgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlTQy9DUDQyNC5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwNDI0JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4OWMnICAgICAjICAweDA0IC0+IFNFTEVDVAogICAgJ1x0JyAgICAgICAjICAweDA1IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1x4ODYnICAgICAjICAweDA2IC0+IFJFUVVJUkVEIE5FVyBMSU5FCiAgICAnXHg3ZicgICAgICMgIDB4MDcgLT4gREVMRVRFCiAgICAnXHg5NycgICAgICMgIDB4MDggLT4gR1JBUEhJQyBFU0NBUEUKICAgICdceDhkJyAgICAgIyAgMHgwOSAtPiBTVVBFUlNDUklQVAogICAgJ1x4OGUnICAgICAjICAweDBBIC0+IFJFUEVBVAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4OWQnICAgICAjICAweDE0IC0+IFJFU1RPUkUvRU5BQkxFIFBSRVNFTlRBVElPTgogICAgJ1x4ODUnICAgICAjICAweDE1IC0+IE5FVyBMSU5FCiAgICAnXHgwOCcgICAgICMgIDB4MTYgLT4gQkFDS1NQQUNFCiAgICAnXHg4NycgICAgICMgIDB4MTcgLT4gUFJPR1JBTSBPUEVSQVRPUiBDT01NVU5JQ0FUSU9OCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4OTInICAgICAjICAweDFBIC0+IFVOSVQgQkFDSyBTUEFDRQogICAgJ1x4OGYnICAgICAjICAweDFCIC0+IENVU1RPTUVSIFVTRSBPTkUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJ1x4ODAnICAgICAjICAweDIwIC0+IERJR0lUIFNFTEVDVAogICAgJ1x4ODEnICAgICAjICAweDIxIC0+IFNUQVJUIE9GIFNJR05JRklDQU5DRQogICAgJ1x4ODInICAgICAjICAweDIyIC0+IEZJRUxEIFNFUEFSQVRPUgogICAgJ1x4ODMnICAgICAjICAweDIzIC0+IFdPUkQgVU5ERVJTQ09SRQogICAgJ1x4ODQnICAgICAjICAweDI0IC0+IEJZUEFTUyBPUiBJTkhJQklUIFBSRVNFTlRBVElPTgogICAgJ1xuJyAgICAgICAjICAweDI1IC0+IExJTkUgRkVFRAogICAgJ1x4MTcnICAgICAjICAweDI2IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDFiJyAgICAgIyAgMHgyNyAtPiBFU0NBUEUKICAgICdceDg4JyAgICAgIyAgMHgyOCAtPiBTRVQgQVRUUklCVVRFCiAgICAnXHg4OScgICAgICMgIDB4MjkgLT4gU1RBUlQgRklFTEQgRVhURU5ERUQKICAgICdceDhhJyAgICAgIyAgMHgyQSAtPiBTRVQgTU9ERSBPUiBTV0lUQ0gKICAgICdceDhiJyAgICAgIyAgMHgyQiAtPiBDT05UUk9MIFNFUVVFTkNFIFBSRUZJWAogICAgJ1x4OGMnICAgICAjICAweDJDIC0+IE1PRElGWSBGSUVMRCBBVFRSSUJVVEUKICAgICdceDA1JyAgICAgIyAgMHgyRCAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MkUgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgyRiAtPiBCRUxMCiAgICAnXHg5MCcgICAgICMgIDB4MzAgLT4gPHJlc2VydmVkPgogICAgJ1x4OTEnICAgICAjICAweDMxIC0+IDxyZXNlcnZlZD4KICAgICdceDE2JyAgICAgIyAgMHgzMiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHg5MycgICAgICMgIDB4MzMgLT4gSU5ERVggUkVUVVJOCiAgICAnXHg5NCcgICAgICMgIDB4MzQgLT4gUFJFU0VOVEFUSU9OIFBPU0lUSU9OCiAgICAnXHg5NScgICAgICMgIDB4MzUgLT4gVFJBTlNQQVJFTlQKICAgICdceDk2JyAgICAgIyAgMHgzNiAtPiBOVU1FUklDIEJBQ0tTUEFDRQogICAgJ1x4MDQnICAgICAjICAweDM3IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDk4JyAgICAgIyAgMHgzOCAtPiBTVUJTQ1JJUFQKICAgICdceDk5JyAgICAgIyAgMHgzOSAtPiBJTkRFTlQgVEFCVUxBVElPTgogICAgJ1x4OWEnICAgICAjICAweDNBIC0+IFJFVkVSU0UgRk9STSBGRUVECiAgICAnXHg5YicgICAgICMgIDB4M0IgLT4gQ1VTVE9NRVIgVVNFIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4M0MgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDNEIC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHg5ZScgICAgICMgIDB4M0UgLT4gPHJlc2VydmVkPgogICAgJ1x4MWEnICAgICAjICAweDNGIC0+IFNVQlNUSVRVVEUKICAgICcgJyAgICAgICAgIyAgMHg0MCAtPiBTUEFDRQogICAgJ1x1MDVkMCcgICAjICAweDQxIC0+IEhFQlJFVyBMRVRURVIgQUxFRgogICAgJ1x1MDVkMScgICAjICAweDQyIC0+IEhFQlJFVyBMRVRURVIgQkVUCiAgICAnXHUwNWQyJyAgICMgIDB4NDMgLT4gSEVCUkVXIExFVFRFUiBHSU1FTAogICAgJ1x1MDVkMycgICAjICAweDQ0IC0+IEhFQlJFVyBMRVRURVIgREFMRVQKICAgICdcdTA1ZDQnICAgIyAgMHg0NSAtPiBIRUJSRVcgTEVUVEVSIEhFCiAgICAnXHUwNWQ1JyAgICMgIDB4NDYgLT4gSEVCUkVXIExFVFRFUiBWQVYKICAgICdcdTA1ZDYnICAgIyAgMHg0NyAtPiBIRUJSRVcgTEVUVEVSIFpBWUlOCiAgICAnXHUwNWQ3JyAgICMgIDB4NDggLT4gSEVCUkVXIExFVFRFUiBIRVQKICAgICdcdTA1ZDgnICAgIyAgMHg0OSAtPiBIRUJSRVcgTEVUVEVSIFRFVAogICAgJ1x4YTInICAgICAjICAweDRBIC0+IENFTlQgU0lHTgogICAgJy4nICAgICAgICAjICAweDRCIC0+IEZVTEwgU1RPUAogICAgJzwnICAgICAgICAjICAweDRDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnKCcgICAgICAgICMgIDB4NEQgLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJysnICAgICAgICAjICAweDRFIC0+IFBMVVMgU0lHTgogICAgJ3wnICAgICAgICAjICAweDRGIC0+IFZFUlRJQ0FMIExJTkUKICAgICcmJyAgICAgICAgIyAgMHg1MCAtPiBBTVBFUlNBTkQKICAgICdcdTA1ZDknICAgIyAgMHg1MSAtPiBIRUJSRVcgTEVUVEVSIFlPRAogICAgJ1x1MDVkYScgICAjICAweDUyIC0+IEhFQlJFVyBMRVRURVIgRklOQUwgS0FGCiAgICAnXHUwNWRiJyAgICMgIDB4NTMgLT4gSEVCUkVXIExFVFRFUiBLQUYKICAgICdcdTA1ZGMnICAgIyAgMHg1NCAtPiBIRUJSRVcgTEVUVEVSIExBTUVECiAgICAnXHUwNWRkJyAgICMgIDB4NTUgLT4gSEVCUkVXIExFVFRFUiBGSU5BTCBNRU0KICAgICdcdTA1ZGUnICAgIyAgMHg1NiAtPiBIRUJSRVcgTEVUVEVSIE1FTQogICAgJ1x1MDVkZicgICAjICAweDU3IC0+IEhFQlJFVyBMRVRURVIgRklOQUwgTlVOCiAgICAnXHUwNWUwJyAgICMgIDB4NTggLT4gSEVCUkVXIExFVFRFUiBOVU4KICAgICdcdTA1ZTEnICAgIyAgMHg1OSAtPiBIRUJSRVcgTEVUVEVSIFNBTUVLSAogICAgJyEnICAgICAgICAjICAweDVBIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICckJyAgICAgICAgIyAgMHg1QiAtPiBET0xMQVIgU0lHTgogICAgJyonICAgICAgICAjICAweDVDIC0+IEFTVEVSSVNLCiAgICAnKScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICc7JyAgICAgICAgIyAgMHg1RSAtPiBTRU1JQ09MT04KICAgICdceGFjJyAgICAgIyAgMHg1RiAtPiBOT1QgU0lHTgogICAgJy0nICAgICAgICAjICAweDYwIC0+IEhZUEhFTi1NSU5VUwogICAgJy8nICAgICAgICAjICAweDYxIC0+IFNPTElEVVMKICAgICdcdTA1ZTInICAgIyAgMHg2MiAtPiBIRUJSRVcgTEVUVEVSIEFZSU4KICAgICdcdTA1ZTMnICAgIyAgMHg2MyAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIFBFCiAgICAnXHUwNWU0JyAgICMgIDB4NjQgLT4gSEVCUkVXIExFVFRFUiBQRQogICAgJ1x1MDVlNScgICAjICAweDY1IC0+IEhFQlJFVyBMRVRURVIgRklOQUwgVFNBREkKICAgICdcdTA1ZTYnICAgIyAgMHg2NiAtPiBIRUJSRVcgTEVUVEVSIFRTQURJCiAgICAnXHUwNWU3JyAgICMgIDB4NjcgLT4gSEVCUkVXIExFVFRFUiBRT0YKICAgICdcdTA1ZTgnICAgIyAgMHg2OCAtPiBIRUJSRVcgTEVUVEVSIFJFU0gKICAgICdcdTA1ZTknICAgIyAgMHg2OSAtPiBIRUJSRVcgTEVUVEVSIFNISU4KICAgICdceGE2JyAgICAgIyAgMHg2QSAtPiBCUk9LRU4gQkFSCiAgICAnLCcgICAgICAgICMgIDB4NkIgLT4gQ09NTUEKICAgICclJyAgICAgICAgIyAgMHg2QyAtPiBQRVJDRU5UIFNJR04KICAgICdfJyAgICAgICAgIyAgMHg2RCAtPiBMT1cgTElORQogICAgJz4nICAgICAgICAjICAweDZFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4NkYgLT4gUVVFU1RJT04gTUFSSwogICAgJ1x1ZmZmZScgICAjICAweDcwIC0+IFVOREVGSU5FRAogICAgJ1x1MDVlYScgICAjICAweDcxIC0+IEhFQlJFVyBMRVRURVIgVEFWCiAgICAnXHVmZmZlJyAgICMgIDB4NzIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4NzMgLT4gVU5ERUZJTkVECiAgICAnXHhhMCcgICAgICMgIDB4NzQgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdWZmZmUnICAgIyAgMHg3NSAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg3NiAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg3NyAtPiBVTkRFRklORUQKICAgICdcdTIwMTcnICAgIyAgMHg3OCAtPiBET1VCTEUgTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg3OSAtPiBHUkFWRSBBQ0NFTlQKICAgICc6JyAgICAgICAgIyAgMHg3QSAtPiBDT0xPTgogICAgJyMnICAgICAgICAjICAweDdCIC0+IE5VTUJFUiBTSUdOCiAgICAnQCcgICAgICAgICMgIDB4N0MgLT4gQ09NTUVSQ0lBTCBBVAogICAgIiciICAgICAgICAjICAweDdEIC0+IEFQT1NUUk9QSEUKICAgICc9JyAgICAgICAgIyAgMHg3RSAtPiBFUVVBTFMgU0lHTgogICAgJyInICAgICAgICAjICAweDdGIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnXHVmZmZlJyAgICMgIDB4ODAgLT4gVU5ERUZJTkVECiAgICAnYScgICAgICAgICMgIDB4ODEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg4MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4ODQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg4NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDg2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnXHhhYicgICAgICMgIDB4OEEgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgIyAgMHg4QiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdWZmZmUnICAgIyAgMHg4QyAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RCAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4RSAtPiBVTkRFRklORUQKICAgICdceGIxJyAgICAgIyAgMHg4RiAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdceGIwJyAgICAgIyAgMHg5MCAtPiBERUdSRUUgU0lHTgogICAgJ2onICAgICAgICAjICAweDkxIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4OTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4OTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg5NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg5OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ1x1ZmZmZScgICAjICAweDlBIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweDlCIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweDlDIC0+IFVOREVGSU5FRAogICAgJ1x4YjgnICAgICAjICAweDlEIC0+IENFRElMTEEKICAgICdcdWZmZmUnICAgIyAgMHg5RSAtPiBVTkRFRklORUQKICAgICdceGE0JyAgICAgIyAgMHg5RiAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHhiNScgICAgICMgIDB4QTAgLT4gTUlDUk8gU0lHTgogICAgJ34nICAgICAgICAjICAweEExIC0+IFRJTERFCiAgICAncycgICAgICAgICMgIDB4QTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHhBMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweEE0IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4QTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHhBNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweEE3IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4QTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHhBOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ1x1ZmZmZScgICAjICAweEFBIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEFCIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEFDIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEFEIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEFFIC0+IFVOREVGSU5FRAogICAgJ1x4YWUnICAgICAjICAweEFGIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ14nICAgICAgICAjICAweEIwIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXHhhMycgICAgICMgIDB4QjEgLT4gUE9VTkQgU0lHTgogICAgJ1x4YTUnICAgICAjICAweEIyIC0+IFlFTiBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjMgLT4gTUlERExFIERPVAogICAgJ1x4YTknICAgICAjICAweEI0IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHhhNycgICAgICMgIDB4QjUgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiYycgICAgICMgIDB4QjcgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhiZCcgICAgICMgIDB4QjggLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHhiZScgICAgICMgIDB4QjkgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAnWycgICAgICAgICMgIDB4QkEgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ10nICAgICAgICAjICAweEJCIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXHhhZicgICAgICMgIDB4QkMgLT4gTUFDUk9OCiAgICAnXHhhOCcgICAgICMgIDB4QkQgLT4gRElBRVJFU0lTCiAgICAnXHhiNCcgICAgICMgIDB4QkUgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhkNycgICAgICMgIDB4QkYgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ3snICAgICAgICAjICAweEMwIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ0EnICAgICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweEM0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4QzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ1x4YWQnICAgICAjICAweENBIC0+IFNPRlQgSFlQSEVOCiAgICAnXHVmZmZlJyAgICMgIDB4Q0IgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4Q0MgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4Q0QgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4Q0UgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4Q0YgLT4gVU5ERUZJTkVECiAgICAnfScgICAgICAgICMgIDB4RDAgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ0onICAgICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweEQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1x4YjknICAgICAjICAweERBIC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x1ZmZmZScgICAjICAweERCIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweERDIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEREIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweERFIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweERGIC0+IFVOREVGSU5FRAogICAgJ1xcJyAgICAgICAjICAweEUwIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ1x4ZjcnICAgICAjICAweEUxIC0+IERJVklTSU9OIFNJR04KICAgICdTJyAgICAgICAgIyAgMHhFMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4RTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweEU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1x4YjInICAgICAjICAweEVBIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x1ZmZmZScgICAjICAweEVCIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEVDIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEVEIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEVFIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEVGIC0+IFVOREVGSU5FRAogICAgJzAnICAgICAgICAjICAweEYwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHhGMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHhGMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHhGMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweEY0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHhGNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4RjYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4RjcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHhGOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweEY5IC0+IERJR0lUIE5JTkUKICAgICdceGIzJyAgICAgIyAgMHhGQSAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x1ZmZmZScgICAjICAweEZCIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEZDIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEZEIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEZFIC0+IFVOREVGSU5FRAogICAgJ1x4OWYnICAgICAjICAweEZGIC0+IEVJR0hUIE9ORVMKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVg04BL8EhwAABIcAABIAAABlbmNvZGluZ3MvY3A0MzcucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGNwNDM3IGdlbmVyYXRlZCBmcm9tICdWRU5ET1JTL01JQ1NGVC9QQy9DUDQzNy5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3A0MzcnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDBjNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwODE6IDB4MDBmYywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDAwODI6IDB4MDBlOSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDA4MzogMHgwMGUyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwODQ6IDB4MDBlNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwODU6IDB4MDBlMCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDA4NjogMHgwMGU1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwODc6IDB4MDBlNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMDg4OiAweDAwZWEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4OTogMHgwMGViLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4YTogMHgwMGU4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMDhiOiAweDAwZWYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDhjOiAweDAwZWUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4ZDogMHgwMGVjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgMHgwMDhlOiAweDAwYzQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwOGY6IDB4MDBjNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwOTA6IDB4MDBjOSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMDkxOiAweDAwZTYsICAgICAjICBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgMHgwMDkyOiAweDAwYzYsICAgICAjICBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAweDAwOTM6IDB4MDBmNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDk0OiAweDAwZjYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgMHgwMDk1OiAweDAwZjIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAweDAwOTY6IDB4MDBmYiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDk3OiAweDAwZjksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwOTg6IDB4MDBmZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAweDAwOTk6IDB4MDBkNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YTogMHgwMGRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDliOiAweDAwYTIsICAgICAjICBDRU5UIFNJR04KICAgIDB4MDA5YzogMHgwMGEzLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMDlkOiAweDAwYTUsICAgICAjICBZRU4gU0lHTgogICAgMHgwMDllOiAweDIwYTcsICAgICAjICBQRVNFVEEgU0lHTgogICAgMHgwMDlmOiAweDAxOTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgIDB4MDBhMDogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGExOiAweDAwZWQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwYTI6IDB4MDBmMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBhMzogMHgwMGZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGE0OiAweDAwZjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAweDAwYTU6IDB4MDBkMSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGE2OiAweDAwYWEsICAgICAjICBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGE3OiAweDAwYmEsICAgICAjICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBhODogMHgwMGJmLCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGE5OiAweDIzMTAsICAgICAjICBSRVZFUlNFRCBOT1QgU0lHTgogICAgMHgwMGFhOiAweDAwYWMsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGFiOiAweDAwYmQsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBhYzogMHgwMGJjLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAweDAwYWQ6IDB4MDBhMSwgICAgICMgIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDBhZTogMHgwMGFiLCAgICAgIyAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhZjogMHgwMGJiLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYjA6IDB4MjU5MSwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDAwYjE6IDB4MjU5MiwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgwMGIyOiAweDI1OTMsICAgICAjICBEQVJLIFNIQURFCiAgICAweDAwYjM6IDB4MjUwMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgwMGI0OiAweDI1MjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiNTogMHgyNTYxLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiNjogMHgyNTYyLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiNzogMHgyNTU2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGI4OiAweDI1NTUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYjk6IDB4MjU2MywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiYTogMHgyNTUxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgwMGJiOiAweDI1NTcsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MDBiYzogMHgyNTVkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgwMGJkOiAweDI1NWMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGJlOiAweDI1NWIsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDI1NWUsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBjNzogMHgyNTVmLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwYzg6IDB4MjU1YSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDAwYzk6IDB4MjU1NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBjYTogMHgyNTY5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNiOiAweDI1NjYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYzogMHgyNTYwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjZDogMHgyNTUwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDAwY2U6IDB4MjU2YywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjZjogMHgyNTY3LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkMDogMHgyNTY4LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkMTogMHgyNTY0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQyOiAweDI1NjUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDM6IDB4MjU1OSwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGQ0OiAweDI1NTgsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNTogMHgyNTUyLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNjogMHgyNTUzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBkNzogMHgyNTZiLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkODogMHgyNTZhLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkOTogMHgyNTE4LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDAwZGE6IDB4MjUwYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgwMGRiOiAweDI1ODgsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDAwZGM6IDB4MjU4NCwgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MDBkZDogMHgyNThjLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDAwZGU6IDB4MjU5MCwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MDBkZjogMHgyNTgwLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgwMGUwOiAweDAzYjEsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgIDB4MDBlMTogMHgwMGRmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgIDB4MDBlMjogMHgwMzkzLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgIDB4MDBlMzogMHgwM2MwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAweDAwZTQ6IDB4MDNhMywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAweDAwZTU6IDB4MDNjMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgMHgwMGU2OiAweDAwYjUsICAgICAjICBNSUNSTyBTSUdOCiAgICAweDAwZTc6IDB4MDNjNCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgIDB4MDBlODogMHgwM2E2LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAweDAwZTk6IDB4MDM5OCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAweDAwZWE6IDB4MDNhOSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAweDAwZWI6IDB4MDNiNCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgMHgwMGVjOiAweDIyMWUsICAgICAjICBJTkZJTklUWQogICAgMHgwMGVkOiAweDAzYzYsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAweDAwZWU6IDB4MDNiNSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAwZWY6IDB4MjIyOSwgICAgICMgIElOVEVSU0VDVElPTgogICAgMHgwMGYwOiAweDIyNjEsICAgICAjICBJREVOVElDQUwgVE8KICAgIDB4MDBmMTogMHgwMGIxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwZjI6IDB4MjI2NSwgICAgICMgIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgMHgwMGYzOiAweDIyNjQsICAgICAjICBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MDBmNDogMHgyMzIwLCAgICAgIyAgVE9QIEhBTEYgSU5URUdSQUwKICAgIDB4MDBmNTogMHgyMzIxLCAgICAgIyAgQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgIDB4MDBmNjogMHgwMGY3LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY3OiAweDIyNDgsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MDBmODogMHgwMGIwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBmOTogMHgyMjE5LCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDAwZmE6IDB4MDBiNywgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBmYjogMHgyMjFhLCAgICAgIyAgU1FVQVJFIFJPT1QKICAgIDB4MDBmYzogMHgyMDdmLCAgICAgIyAgU1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDBmZDogMHgwMGIyLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdceGM3JyAgICAgIyAgMHgwMDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhmYycgICAgICMgIDB4MDA4MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTknICAgICAjICAweDAwODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZTInICAgICAjICAweDAwODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlNCcgICAgICMgIDB4MDA4NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTAnICAgICAjICAweDAwODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTUnICAgICAjICAweDAwODYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNycgICAgICMgIDB4MDA4NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGVhJyAgICAgIyAgMHgwMDg4IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDAwODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGU4JyAgICAgIyAgMHgwMDhhIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGVmJyAgICAgIyAgMHgwMDhiIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhlZScgICAgICMgIDB4MDA4YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVjJyAgICAgIyAgMHgwMDhkIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGM0JyAgICAgIyAgMHgwMDhlIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGM1JyAgICAgIyAgMHgwMDhmIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjOScgICAgICMgIDB4MDA5MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGU2JyAgICAgIyAgMHgwMDkxIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIEFFCiAgICAnXHhjNicgICAgICMgIDB4MDA5MiAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAnXHhmNCcgICAgICMgIDB4MDA5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHgwMDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmMicgICAgICMgIDB4MDA5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhmYicgICAgICMgIDB4MDA5NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGY5JyAgICAgIyAgMHgwMDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGZmJyAgICAgIyAgMHgwMDk4IC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNicgICAgICMgIDB4MDA5OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkYycgICAgICMgIDB4MDA5YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhhMicgICAgICMgIDB4MDA5YiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHgwMDljIC0+IFBPVU5EIFNJR04KICAgICdceGE1JyAgICAgIyAgMHgwMDlkIC0+IFlFTiBTSUdOCiAgICAnXHUyMGE3JyAgICMgIDB4MDA5ZSAtPiBQRVNFVEEgU0lHTgogICAgJ1x1MDE5MicgICAjICAweDAwOWYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAnXHhlMScgICAgICMgIDB4MDBhMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlZCcgICAgICMgIDB4MDBhMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhmMycgICAgICMgIDB4MDBhMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmYScgICAgICMgIDB4MDBhMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmMScgICAgICMgIDB4MDBhNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhkMScgICAgICMgIDB4MDBhNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGFhJyAgICAgIyAgMHgwMGE2IC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYScgICAgICMgIDB4MDBhNyAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJmJyAgICAgIyAgMHgwMGE4IC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdcdTIzMTAnICAgIyAgMHgwMGE5IC0+IFJFVkVSU0VEIE5PVCBTSUdOCiAgICAnXHhhYycgICAgICMgIDB4MDBhYSAtPiBOT1QgU0lHTgogICAgJ1x4YmQnICAgICAjICAweDAwYWIgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHhiYycgICAgICMgIDB4MDBhYyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgICdceGExJyAgICAgIyAgMHgwMGFkIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgICdceGFiJyAgICAgIyAgMHgwMGFlIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4MDBhZiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTI1OTEnICAgIyAgMHgwMGIwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICMgIDB4MDBiMSAtPiBNRURJVU0gU0hBREUKICAgICdcdTI1OTMnICAgIyAgMHgwMGIyIC0+IERBUksgU0hBREUKICAgICdcdTI1MDInICAgIyAgMHgwMGIzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUyNCcgICAjICAweDAwYjQgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTYxJyAgICMgIDB4MDBiNSAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjU2MicgICAjICAweDAwYjYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTYnICAgIyAgMHgwMGI3IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTUnICAgIyAgMHgwMGI4IC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1NjMnICAgIyAgMHgwMGI5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NTEnICAgIyAgMHgwMGJhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgICdcdTI1NTcnICAgIyAgMHgwMGJiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjU1ZCcgICAjICAweDAwYmMgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgJ1x1MjU1YycgICAjICAweDAwYmQgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NWInICAgIyAgMHgwMGJlIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTEwJyAgICMgIDB4MDBiZiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAjICAweDAwYzAgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgJ1x1MjUzNCcgICAjICAweDAwYzEgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTJjJyAgICMgIDB4MDBjMiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUxYycgICAjICAweDAwYzMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjUwMCcgICAjICAweDAwYzQgLT4gQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgICdcdTI1M2MnICAgIyAgMHgwMGM1IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU1ZScgICAjICAweDAwYzYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTVmJyAgICMgIDB4MDBjNyAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NWEnICAgIyAgMHgwMGM4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTU0JyAgICMgIDB4MDBjOSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTY5JyAgICMgIDB4MDBjYSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTY2JyAgICMgIDB4MDBjYiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjAnICAgIyAgMHgwMGNjIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTUwJyAgICMgIDB4MDBjZCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgICdcdTI1NmMnICAgIyAgMHgwMGNlIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjcnICAgIyAgMHgwMGNmIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTY4JyAgICMgIDB4MDBkMCAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU2NCcgICAjICAweDAwZDEgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2NScgICAjICAweDAwZDIgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU1OScgICAjICAweDAwZDMgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTU4JyAgICMgIDB4MDBkNCAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTInICAgIyAgMHgwMGQ1IC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTUzJyAgICMgIDB4MDBkNiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU2YicgICAjICAweDAwZDcgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NmEnICAgIyAgMHgwMGQ4IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTE4JyAgICMgIDB4MDBkOSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgICdcdTI1MGMnICAgIyAgMHgwMGRhIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU4OCcgICAjICAweDAwZGIgLT4gRlVMTCBCTE9DSwogICAgJ1x1MjU4NCcgICAjICAweDAwZGMgLT4gTE9XRVIgSEFMRiBCTE9DSwogICAgJ1x1MjU4YycgICAjICAweDAwZGQgLT4gTEVGVCBIQUxGIEJMT0NLCiAgICAnXHUyNTkwJyAgICMgIDB4MDBkZSAtPiBSSUdIVCBIQUxGIEJMT0NLCiAgICAnXHUyNTgwJyAgICMgIDB4MDBkZiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHUwM2IxJyAgICMgIDB4MDBlMCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgICdceGRmJyAgICAgIyAgMHgwMGUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHUwMzkzJyAgICMgIDB4MDBlMiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQogICAgJ1x1MDNjMCcgICAjICAweDAwZTMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAnXHUwM2EzJyAgICMgIDB4MDBlNCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgJ1x1MDNjMycgICAjICAweDAwZTUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAnXHhiNScgICAgICMgIDB4MDBlNiAtPiBNSUNSTyBTSUdOCiAgICAnXHUwM2M0JyAgICMgIDB4MDBlNyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVEFVCiAgICAnXHUwM2E2JyAgICMgIDB4MDBlOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKICAgICdcdTAzOTgnICAgIyAgMHgwMGU5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAnXHUwM2E5JyAgICMgIDB4MDBlYSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgJ1x1MDNiNCcgICAjICAweDAwZWIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAnXHUyMjFlJyAgICMgIDB4MDBlYyAtPiBJTkZJTklUWQogICAgJ1x1MDNjNicgICAjICAweDAwZWQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgJ1x1MDNiNScgICAjICAweDAwZWUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KICAgICdcdTIyMjknICAgIyAgMHgwMGVmIC0+IElOVEVSU0VDVElPTgogICAgJ1x1MjI2MScgICAjICAweDAwZjAgLT4gSURFTlRJQ0FMIFRPCiAgICAnXHhiMScgICAgICMgIDB4MDBmMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTIyNjUnICAgIyAgMHgwMGYyIC0+IEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjI2NCcgICAjICAweDAwZjMgLT4gTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAnXHUyMzIwJyAgICMgIDB4MDBmNCAtPiBUT1AgSEFMRiBJTlRFR1JBTAogICAgJ1x1MjMyMScgICAjICAweDAwZjUgLT4gQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgICdceGY3JyAgICAgIyAgMHgwMGY2IC0+IERJVklTSU9OIFNJR04KICAgICdcdTIyNDgnICAgIyAgMHgwMGY3IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x4YjAnICAgICAjICAweDAwZjggLT4gREVHUkVFIFNJR04KICAgICdcdTIyMTknICAgIyAgMHgwMGY5IC0+IEJVTExFVCBPUEVSQVRPUgogICAgJ1x4YjcnICAgICAjICAweDAwZmEgLT4gTUlERExFIERPVAogICAgJ1x1MjIxYScgICAjICAweDAwZmIgLT4gU1FVQVJFIFJPT1QKICAgICdcdTIwN2YnICAgIyAgMHgwMGZjIC0+IFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnXHhiMicgICAgICMgIDB4MDBmZCAtPiBTVVBFUlNDUklQVCBUV08KICAgICdcdTI1YTAnICAgIyAgMHgwMGZlIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YTAnICAgICAjICAweDAwZmYgLT4gTk8tQlJFQUsgU1BBQ0UKKQoKIyMjIEVuY29kaW5nIE1hcAoKZW5jb2RpbmdfbWFwID0gewogICAgMHgwMDAwOiAweDAwMDAsICAgICAjICBOVUxMCiAgICAweDAwMDE6IDB4MDAwMSwgICAgICMgIFNUQVJUIE9GIEhFQURJTkcKICAgIDB4MDAwMjogMHgwMDAyLCAgICAgIyAgU1RBUlQgT0YgVEVYVAogICAgMHgwMDAzOiAweDAwMDMsICAgICAjICBFTkQgT0YgVEVYVAogICAgMHgwMDA0OiAweDAwMDQsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAweDAwMDU6IDB4MDAwNSwgICAgICMgIEVOUVVJUlkKICAgIDB4MDAwNjogMHgwMDA2LCAgICAgIyAgQUNLTk9XTEVER0UKICAgIDB4MDAwNzogMHgwMDA3LCAgICAgIyAgQkVMTAogICAgMHgwMDA4OiAweDAwMDgsICAgICAjICBCQUNLU1BBQ0UKICAgIDB4MDAwOTogMHgwMDA5LCAgICAgIyAgSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAweDAwMGE6IDB4MDAwYSwgICAgICMgIExJTkUgRkVFRAogICAgMHgwMDBiOiAweDAwMGIsICAgICAjICBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAweDAwMGM6IDB4MDAwYywgICAgICMgIEZPUk0gRkVFRAogICAgMHgwMDBkOiAweDAwMGQsICAgICAjICBDQVJSSUFHRSBSRVRVUk4KICAgIDB4MDAwZTogMHgwMDBlLCAgICAgIyAgU0hJRlQgT1VUCiAgICAweDAwMGY6IDB4MDAwZiwgICAgICMgIFNISUZUIElOCiAgICAweDAwMTA6IDB4MDAxMCwgICAgICMgIERBVEEgTElOSyBFU0NBUEUKICAgIDB4MDAxMTogMHgwMDExLCAgICAgIyAgREVWSUNFIENPTlRST0wgT05FCiAgICAweDAwMTI6IDB4MDAxMiwgICAgICMgIERFVklDRSBDT05UUk9MIFRXTwogICAgMHgwMDEzOiAweDAwMTMsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgMHgwMDE0OiAweDAwMTQsICAgICAjICBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAweDAwMTU6IDB4MDAxNSwgICAgICMgIE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAweDAwMTY6IDB4MDAxNiwgICAgICMgIFNZTkNIUk9OT1VTIElETEUKICAgIDB4MDAxNzogMHgwMDE3LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgMHgwMDE4OiAweDAwMTgsICAgICAjICBDQU5DRUwKICAgIDB4MDAxOTogMHgwMDE5LCAgICAgIyAgRU5EIE9GIE1FRElVTQogICAgMHgwMDFhOiAweDAwMWEsICAgICAjICBTVUJTVElUVVRFCiAgICAweDAwMWI6IDB4MDAxYiwgICAgICMgIEVTQ0FQRQogICAgMHgwMDFjOiAweDAwMWMsICAgICAjICBGSUxFIFNFUEFSQVRPUgogICAgMHgwMDFkOiAweDAwMWQsICAgICAjICBHUk9VUCBTRVBBUkFUT1IKICAgIDB4MDAxZTogMHgwMDFlLCAgICAgIyAgUkVDT1JEIFNFUEFSQVRPUgogICAgMHgwMDFmOiAweDAwMWYsICAgICAjICBVTklUIFNFUEFSQVRPUgogICAgMHgwMDIwOiAweDAwMjAsICAgICAjICBTUEFDRQogICAgMHgwMDIxOiAweDAwMjEsICAgICAjICBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwMjI6IDB4MDAyMiwgICAgICMgIFFVT1RBVElPTiBNQVJLCiAgICAweDAwMjM6IDB4MDAyMywgICAgICMgIE5VTUJFUiBTSUdOCiAgICAweDAwMjQ6IDB4MDAyNCwgICAgICMgIERPTExBUiBTSUdOCiAgICAweDAwMjU6IDB4MDAyNSwgICAgICMgIFBFUkNFTlQgU0lHTgogICAgMHgwMDI2OiAweDAwMjYsICAgICAjICBBTVBFUlNBTkQKICAgIDB4MDAyNzogMHgwMDI3LCAgICAgIyAgQVBPU1RST1BIRQogICAgMHgwMDI4OiAweDAwMjgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTCiAgICAweDAwMjk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTCiAgICAweDAwMmE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLCiAgICAweDAwMmI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTgogICAgMHgwMDJjOiAweDAwMmMsICAgICAjICBDT01NQQogICAgMHgwMDJkOiAweDAwMmQsICAgICAjICBIWVBIRU4tTUlOVVMKICAgIDB4MDAyZTogMHgwMDJlLCAgICAgIyAgRlVMTCBTVE9QCiAgICAweDAwMmY6IDB4MDAyZiwgICAgICMgIFNPTElEVVMKICAgIDB4MDAzMDogMHgwMDMwLCAgICAgIyAgRElHSVQgWkVSTwogICAgMHgwMDMxOiAweDAwMzEsICAgICAjICBESUdJVCBPTkUKICAgIDB4MDAzMjogMHgwMDMyLCAgICAgIyAgRElHSVQgVFdPCiAgICAweDAwMzM6IDB4MDAzMywgICAgICMgIERJR0lUIFRIUkVFCiAgICAweDAwMzQ6IDB4MDAzNCwgICAgICMgIERJR0lUIEZPVVIKICAgIDB4MDAzNTogMHgwMDM1LCAgICAgIyAgRElHSVQgRklWRQogICAgMHgwMDM2OiAweDAwMzYsICAgICAjICBESUdJVCBTSVgKICAgIDB4MDAzNzogMHgwMDM3LCAgICAgIyAgRElHSVQgU0VWRU4KICAgIDB4MDAzODogMHgwMDM4LCAgICAgIyAgRElHSVQgRUlHSFQKICAgIDB4MDAzOTogMHgwMDM5LCAgICAgIyAgRElHSVQgTklORQogICAgMHgwMDNhOiAweDAwM2EsICAgICAjICBDT0xPTgogICAgMHgwMDNiOiAweDAwM2IsICAgICAjICBTRU1JQ09MT04KICAgIDB4MDAzYzogMHgwMDNjLCAgICAgIyAgTEVTUy1USEFOIFNJR04KICAgIDB4MDAzZDogMHgwMDNkLCAgICAgIyAgRVFVQUxTIFNJR04KICAgIDB4MDAzZTogMHgwMDNlLCAgICAgIyAgR1JFQVRFUi1USEFOIFNJR04KICAgIDB4MDAzZjogMHgwMDNmLCAgICAgIyAgUVVFU1RJT04gTUFSSwogICAgMHgwMDQwOiAweDAwNDAsICAgICAjICBDT01NRVJDSUFMIEFUCiAgICAweDAwNDE6IDB4MDA0MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA0MjogMHgwMDQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgMHgwMDQzOiAweDAwNDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAweDAwNDQ6IDB4MDA0NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgIDB4MDA0NTogMHgwMDQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgMHgwMDQ2OiAweDAwNDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAweDAwNDc6IDB4MDA0NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgIDB4MDA0ODogMHgwMDQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgMHgwMDQ5OiAweDAwNDksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwNGE6IDB4MDA0YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgIDB4MDA0YjogMHgwMDRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgMHgwMDRjOiAweDAwNGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAweDAwNGQ6IDB4MDA0ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgIDB4MDA0ZTogMHgwMDRlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgMHgwMDRmOiAweDAwNGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAweDAwNTA6IDB4MDA1MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgIDB4MDA1MTogMHgwMDUxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgMHgwMDUyOiAweDAwNTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAweDAwNTM6IDB4MDA1MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgIDB4MDA1NDogMHgwMDU0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgMHgwMDU1OiAweDAwNTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwNTY6IDB4MDA1NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgIDB4MDA1NzogMHgwMDU3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgMHgwMDU4OiAweDAwNTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAweDAwNTk6IDB4MDA1OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgIDB4MDA1YTogMHgwMDVhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgMHgwMDViOiAweDAwNWIsICAgICAjICBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWM6IDB4MDA1YywgICAgICMgIFJFVkVSU0UgU09MSURVUwogICAgMHgwMDVkOiAweDAwNWQsICAgICAjICBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVlOiAweDAwNWUsICAgICAjICBDSVJDVU1GTEVYIEFDQ0VOVAogICAgMHgwMDVmOiAweDAwNWYsICAgICAjICBMT1cgTElORQogICAgMHgwMDYwOiAweDAwNjAsICAgICAjICBHUkFWRSBBQ0NFTlQKICAgIDB4MDA2MTogMHgwMDYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgIDB4MDA2MjogMHgwMDYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgIDB4MDA2MzogMHgwMDYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgIDB4MDA2NDogMHgwMDY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgIDB4MDA2NTogMHgwMDY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgIDB4MDA2NjogMHgwMDY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgIDB4MDA2NzogMHgwMDY3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgIDB4MDA2ODogMHgwMDY4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgIDB4MDA2OTogMHgwMDY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgIDB4MDA2YTogMHgwMDZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgIDB4MDA2YjogMHgwMDZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgIDB4MDA2YzogMHgwMDZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgIDB4MDA2ZDogMHgwMDZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgIDB4MDA2ZTogMHgwMDZlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDA2ZjogMHgwMDZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgIDB4MDA3MDogMHgwMDcwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgIDB4MDA3MTogMHgwMDcxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgIDB4MDA3MjogMHgwMDcyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgIDB4MDA3MzogMHgwMDczLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgIDB4MDA3NDogMHgwMDc0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgIDB4MDA3NTogMHgwMDc1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgIDB4MDA3NjogMHgwMDc2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgIDB4MDA3NzogMHgwMDc3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgIDB4MDA3ODogMHgwMDc4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgIDB4MDA3OTogMHgwMDc5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgIDB4MDA3YTogMHgwMDdhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgIDB4MDA3YjogMHgwMDdiLCAgICAgIyAgTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2M6IDB4MDA3YywgICAgICMgIFZFUlRJQ0FMIExJTkUKICAgIDB4MDA3ZDogMHgwMDdkLCAgICAgIyAgUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdlOiAweDAwN2UsICAgICAjICBUSUxERQogICAgMHgwMDdmOiAweDAwN2YsICAgICAjICBERUxFVEUKICAgIDB4MDBhMDogMHgwMGZmLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKICAgIDB4MDBhMTogMHgwMGFkLCAgICAgIyAgSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMGEyOiAweDAwOWIsICAgICAjICBDRU5UIFNJR04KICAgIDB4MDBhMzogMHgwMDljLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMGE1OiAweDAwOWQsICAgICAjICBZRU4gU0lHTgogICAgMHgwMGFhOiAweDAwYTYsICAgICAjICBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGFiOiAweDAwYWUsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGFjOiAweDAwYWEsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGIwOiAweDAwZjgsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGIxOiAweDAwZjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBiMjogMHgwMGZkLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwYjU6IDB4MDBlNiwgICAgICMgIE1JQ1JPIFNJR04KICAgIDB4MDBiNzogMHgwMGZhLCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGJhOiAweDAwYTcsICAgICAjICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBiYjogMHgwMGFmLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYmM6IDB4MDBhYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGJkOiAweDAwYWIsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBiZjogMHgwMGE4LCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGM0OiAweDAwOGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwYzU6IDB4MDA4ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwYzY6IDB4MDA5MiwgICAgICMgIExBVElOIENBUElUQUwgTElHQVRVUkUgQUUKICAgIDB4MDBjNzogMHgwMDgwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDBjOTogMHgwMDkwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwZDE6IDB4MDBhNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGQ2OiAweDAwOTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZGM6IDB4MDA5YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkZjogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgIDB4MDBlMDogMHgwMDg1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMGUxOiAweDAwYTAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAweDAwZTI6IDB4MDA4MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGU0OiAweDAwODQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGU1OiAweDAwODYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDBlNjogMHgwMDkxLCAgICAgIyAgTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgIDB4MDBlNzogMHgwMDg3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwZTg6IDB4MDA4YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDBlOTogMHgwMDgyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMGVhOiAweDAwODgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlYjogMHgwMDg5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBlYzogMHgwMDhkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgMHgwMGVkOiAweDAwYTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwZWU6IDB4MDA4YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGVmOiAweDAwOGIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGYxOiAweDAwYTQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAweDAwZjI6IDB4MDA5NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgIDB4MDBmMzogMHgwMGEyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGY0OiAweDAwOTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBmNjogMHgwMDk0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDBmNzogMHgwMGY2LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY5OiAweDAwOTcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwZmE6IDB4MDBhMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBmYjogMHgwMDk2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZmM6IDB4MDA4MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDAwZmY6IDB4MDA5OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAweDAxOTI6IDB4MDA5ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgMHgwMzkzOiAweDAwZTIsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQogICAgMHgwMzk4OiAweDAwZTksICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQogICAgMHgwM2EzOiAweDAwZTQsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgMHgwM2E2OiAweDAwZTgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKICAgIDB4MDNhOTogMHgwMGVhLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKICAgIDB4MDNiMTogMHgwMGUwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAweDAzYjQ6IDB4MDBlYiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgMHgwM2I1OiAweDAwZWUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgogICAgMHgwM2MwOiAweDAwZTMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgIDB4MDNjMzogMHgwMGU1LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAweDAzYzQ6IDB4MDBlNywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgIDB4MDNjNjogMHgwMGVkLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgMHgyMDdmOiAweDAwZmMsICAgICAjICBTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgMHgyMGE3OiAweDAwOWUsICAgICAjICBQRVNFVEEgU0lHTgogICAgMHgyMjE5OiAweDAwZjksICAgICAjICBCVUxMRVQgT1BFUkFUT1IKICAgIDB4MjIxYTogMHgwMGZiLCAgICAgIyAgU1FVQVJFIFJPT1QKICAgIDB4MjIxZTogMHgwMGVjLCAgICAgIyAgSU5GSU5JVFkKICAgIDB4MjIyOTogMHgwMGVmLCAgICAgIyAgSU5URVJTRUNUSU9OCiAgICAweDIyNDg6IDB4MDBmNywgICAgICMgIEFMTU9TVCBFUVVBTCBUTwogICAgMHgyMjYxOiAweDAwZjAsICAgICAjICBJREVOVElDQUwgVE8KICAgIDB4MjI2NDogMHgwMGYzLCAgICAgIyAgTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAweDIyNjU6IDB4MDBmMiwgICAgICMgIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgMHgyMzEwOiAweDAwYTksICAgICAjICBSRVZFUlNFRCBOT1QgU0lHTgogICAgMHgyMzIwOiAweDAwZjQsICAgICAjICBUT1AgSEFMRiBJTlRFR1JBTAogICAgMHgyMzIxOiAweDAwZjUsICAgICAjICBCT1RUT00gSEFMRiBJTlRFR1JBTAogICAgMHgyNTAwOiAweDAwYzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgyNTAyOiAweDAwYjMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MjUwYzogMHgwMGRhLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDBiZiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDI1MTQ6IDB4MDBjMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MjUxODogMHgwMGQ5LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDBjMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjUyNDogMHgwMGI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1MmM6IDB4MDBjMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDBjMSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTNjOiAweDAwYzUsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU1MDogMHgwMGNkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDI1NTE6IDB4MDBiYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MjU1MjogMHgwMGQ1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1MzogMHgwMGQ2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1NDogMHgwMGM5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgyNTU1OiAweDAwYjgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NTY6IDB4MDBiNywgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1NzogMHgwMGJiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDI1NTg6IDB4MDBkNCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTU5OiAweDAwZDMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1YTogMHgwMGM4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MjU1YjogMHgwMGJlLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU1YzogMHgwMGJkLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1ZDogMHgwMGJjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgyNTVlOiAweDAwYzYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1ZjogMHgwMGM3LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NjA6IDB4MDBjYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1NjE6IDB4MDBiNSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NjI6IDB4MDBiNiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NjM6IDB4MDBiOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjU2NDogMHgwMGQxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY1OiAweDAwZDIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NjY6IDB4MDBjYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTY3OiAweDAwY2YsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY4OiAweDAwZDAsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTY5OiAweDAwY2EsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NmE6IDB4MDBkOCwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1NmI6IDB4MDBkNywgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NmM6IDB4MDBjZSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU4MDogMHgwMGRmLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgyNTg0OiAweDAwZGMsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDI1ODg6IDB4MDBkYiwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MjU4YzogMHgwMGRkLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDI1OTA6IDB4MDBkZSwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MjU5MTogMHgwMGIwLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MjU5MjogMHgwMGIxLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDI1OTM6IDB4MDBiMiwgICAgICMgIERBUksgU0hBREUKICAgIDB4MjVhMDogMHgwMGZlLCAgICAgIyAgQkxBQ0sgU1FVQVJFCn0KUEsDBBQAAAAAAAIgo1Z2+Y3qQTMAAEEzAAASAAAAZW5jb2RpbmdzL2NwNTAwLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBjcDUwMCBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9NSUNTRlQvRUJDRElDL0NQNTAwLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3A1MDAnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHg5YycgICAgICMgIDB4MDQgLT4gQ09OVFJPTAogICAgJ1x0JyAgICAgICAjICAweDA1IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1x4ODYnICAgICAjICAweDA2IC0+IENPTlRST0wKICAgICdceDdmJyAgICAgIyAgMHgwNyAtPiBERUxFVEUKICAgICdceDk3JyAgICAgIyAgMHgwOCAtPiBDT05UUk9MCiAgICAnXHg4ZCcgICAgICMgIDB4MDkgLT4gQ09OVFJPTAogICAgJ1x4OGUnICAgICAjICAweDBBIC0+IENPTlRST0wKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDlkJyAgICAgIyAgMHgxNCAtPiBDT05UUk9MCiAgICAnXHg4NScgICAgICMgIDB4MTUgLT4gQ09OVFJPTAogICAgJ1x4MDgnICAgICAjICAweDE2IC0+IEJBQ0tTUEFDRQogICAgJ1x4ODcnICAgICAjICAweDE3IC0+IENPTlRST0wKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHg5MicgICAgICMgIDB4MUEgLT4gQ09OVFJPTAogICAgJ1x4OGYnICAgICAjICAweDFCIC0+IENPTlRST0wKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJ1x4ODAnICAgICAjICAweDIwIC0+IENPTlRST0wKICAgICdceDgxJyAgICAgIyAgMHgyMSAtPiBDT05UUk9MCiAgICAnXHg4MicgICAgICMgIDB4MjIgLT4gQ09OVFJPTAogICAgJ1x4ODMnICAgICAjICAweDIzIC0+IENPTlRST0wKICAgICdceDg0JyAgICAgIyAgMHgyNCAtPiBDT05UUk9MCiAgICAnXG4nICAgICAgICMgIDB4MjUgLT4gTElORSBGRUVECiAgICAnXHgxNycgICAgICMgIDB4MjYgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MWInICAgICAjICAweDI3IC0+IEVTQ0FQRQogICAgJ1x4ODgnICAgICAjICAweDI4IC0+IENPTlRST0wKICAgICdceDg5JyAgICAgIyAgMHgyOSAtPiBDT05UUk9MCiAgICAnXHg4YScgICAgICMgIDB4MkEgLT4gQ09OVFJPTAogICAgJ1x4OGInICAgICAjICAweDJCIC0+IENPTlRST0wKICAgICdceDhjJyAgICAgIyAgMHgyQyAtPiBDT05UUk9MCiAgICAnXHgwNScgICAgICMgIDB4MkQgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDJFIC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MkYgLT4gQkVMTAogICAgJ1x4OTAnICAgICAjICAweDMwIC0+IENPTlRST0wKICAgICdceDkxJyAgICAgIyAgMHgzMSAtPiBDT05UUk9MCiAgICAnXHgxNicgICAgICMgIDB4MzIgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4OTMnICAgICAjICAweDMzIC0+IENPTlRST0wKICAgICdceDk0JyAgICAgIyAgMHgzNCAtPiBDT05UUk9MCiAgICAnXHg5NScgICAgICMgIDB4MzUgLT4gQ09OVFJPTAogICAgJ1x4OTYnICAgICAjICAweDM2IC0+IENPTlRST0wKICAgICdceDA0JyAgICAgIyAgMHgzNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHg5OCcgICAgICMgIDB4MzggLT4gQ09OVFJPTAogICAgJ1x4OTknICAgICAjICAweDM5IC0+IENPTlRST0wKICAgICdceDlhJyAgICAgIyAgMHgzQSAtPiBDT05UUk9MCiAgICAnXHg5YicgICAgICMgIDB4M0IgLT4gQ09OVFJPTAogICAgJ1x4MTQnICAgICAjICAweDNDIC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgzRCAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4OWUnICAgICAjICAweDNFIC0+IENPTlRST0wKICAgICdceDFhJyAgICAgIyAgMHgzRiAtPiBTVUJTVElUVVRFCiAgICAnICcgICAgICAgICMgIDB4NDAgLT4gU1BBQ0UKICAgICdceGEwJyAgICAgIyAgMHg0MSAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x4ZTInICAgICAjICAweDQyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTQnICAgICAjICAweDQzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhlMCcgICAgICMgIDB4NDQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTEnICAgICAjICAweDQ1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUzJyAgICAgIyAgMHg0NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlNScgICAgICMgIDB4NDcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNycgICAgICMgIDB4NDggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhmMScgICAgICMgIDB4NDkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1snICAgICAgICAjICAweDRBIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICcuJyAgICAgICAgIyAgMHg0QiAtPiBGVUxMIFNUT1AKICAgICc8JyAgICAgICAgIyAgMHg0QyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJygnICAgICAgICAjICAweDREIC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcrJyAgICAgICAgIyAgMHg0RSAtPiBQTFVTIFNJR04KICAgICchJyAgICAgICAgIyAgMHg0RiAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnJicgICAgICAgICMgIDB4NTAgLT4gQU1QRVJTQU5ECiAgICAnXHhlOScgICAgICMgIDB4NTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAjICAweDUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDUzIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlOCcgICAgICMgIDB4NTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWQnICAgICAjICAweDU1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHg1NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHg1NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWMnICAgICAjICAweDU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGRmJyAgICAgIyAgMHg1OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR0VSTUFOKQogICAgJ10nICAgICAgICAjICAweDVBIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnJCcgICAgICAgICMgIDB4NUIgLT4gRE9MTEFSIFNJR04KICAgICcqJyAgICAgICAgIyAgMHg1QyAtPiBBU1RFUklTSwogICAgJyknICAgICAgICAjICAweDVEIC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnOycgICAgICAgICMgIDB4NUUgLT4gU0VNSUNPTE9OCiAgICAnXicgICAgICAgICMgIDB4NUYgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICctJyAgICAgICAgIyAgMHg2MCAtPiBIWVBIRU4tTUlOVVMKICAgICcvJyAgICAgICAgIyAgMHg2MSAtPiBTT0xJRFVTCiAgICAnXHhjMicgICAgICMgIDB4NjIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGM0JyAgICAgIyAgMHg2MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjMCcgICAgICMgIDB4NjQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMScgICAgICMgIDB4NjUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMycgICAgICMgIDB4NjYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhjNScgICAgICMgIDB4NjcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGM3JyAgICAgIyAgMHg2OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZDEnICAgICAjICAweDY5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4YTYnICAgICAjICAweDZBIC0+IEJST0tFTiBCQVIKICAgICcsJyAgICAgICAgIyAgMHg2QiAtPiBDT01NQQogICAgJyUnICAgICAgICAjICAweDZDIC0+IFBFUkNFTlQgU0lHTgogICAgJ18nICAgICAgICAjICAweDZEIC0+IExPVyBMSU5FCiAgICAnPicgICAgICAgICMgIDB4NkUgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHg2RiAtPiBRVUVTVElPTiBNQVJLCiAgICAnXHhmOCcgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGM5JyAgICAgIyAgMHg3MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGNhJyAgICAgIyAgMHg3MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweDczIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGM4JyAgICAgIyAgMHg3NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGNkJyAgICAgIyAgMHg3NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHg3NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2YnICAgICAjICAweDc3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGNjJyAgICAgIyAgMHg3OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdgJyAgICAgICAgIyAgMHg3OSAtPiBHUkFWRSBBQ0NFTlQKICAgICc6JyAgICAgICAgIyAgMHg3QSAtPiBDT0xPTgogICAgJyMnICAgICAgICAjICAweDdCIC0+IE5VTUJFUiBTSUdOCiAgICAnQCcgICAgICAgICMgIDB4N0MgLT4gQ09NTUVSQ0lBTCBBVAogICAgIiciICAgICAgICAjICAweDdEIC0+IEFQT1NUUk9QSEUKICAgICc9JyAgICAgICAgIyAgMHg3RSAtPiBFUVVBTFMgU0lHTgogICAgJyInICAgICAgICAjICAweDdGIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnXHhkOCcgICAgICMgIDB4ODAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ2EnICAgICAgICAjICAweDgxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4ODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDg0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4ODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg4NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg4OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ1x4YWInICAgICAjICAweDhBIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4OEIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhmMCcgICAgICMgIDB4OEMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSCAoSUNFTEFORElDKQogICAgJ1x4ZmQnICAgICAjICAweDhEIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGZlJyAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKElDRUxBTkRJQykKICAgICdceGIxJyAgICAgIyAgMHg4RiAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdceGIwJyAgICAgIyAgMHg5MCAtPiBERUdSRUUgU0lHTgogICAgJ2onICAgICAgICAjICAweDkxIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4OTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4OTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg5NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg5OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ1x4YWEnICAgICAjICAweDlBIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYScgICAgICMgIDB4OUIgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhlNicgICAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgICdceGI4JyAgICAgIyAgMHg5RCAtPiBDRURJTExBCiAgICAnXHhjNicgICAgICMgIDB4OUUgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBBRQogICAgJ1x4YTQnICAgICAjICAweDlGIC0+IENVUlJFTkNZIFNJR04KICAgICdceGI1JyAgICAgIyAgMHhBMCAtPiBNSUNSTyBTSUdOCiAgICAnficgICAgICAgICMgIDB4QTEgLT4gVElMREUKICAgICdzJyAgICAgICAgIyAgMHhBMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweEEzIC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4QTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHhBNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweEE2IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4QTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHhBOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweEE5IC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAnXHhhMScgICAgICMgIDB4QUEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YmYnICAgICAjICAweEFCIC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdceGQwJyAgICAgIyAgMHhBQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEggKElDRUxBTkRJQykKICAgICdceGRkJyAgICAgIyAgMHhBRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGRlJyAgICAgIyAgMHhBRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STiAoSUNFTEFORElDKQogICAgJ1x4YWUnICAgICAjICAweEFGIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YTInICAgICAjICAweEIwIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEIxIC0+IFBPVU5EIFNJR04KICAgICdceGE1JyAgICAgIyAgMHhCMiAtPiBZRU4gU0lHTgogICAgJ1x4YjcnICAgICAjICAweEIzIC0+IE1JRERMRSBET1QKICAgICdceGE5JyAgICAgIyAgMHhCNCAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x4YTcnICAgICAjICAweEI1IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YmMnICAgICAjICAweEI3IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YmQnICAgICAjICAweEI4IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmUnICAgICAjICAweEI5IC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgJ1x4YWMnICAgICAjICAweEJBIC0+IE5PVCBTSUdOCiAgICAnfCcgICAgICAgICMgIDB4QkIgLT4gVkVSVElDQUwgTElORQogICAgJ1x4YWYnICAgICAjICAweEJDIC0+IE1BQ1JPTgogICAgJ1x4YTgnICAgICAjICAweEJEIC0+IERJQUVSRVNJUwogICAgJ1x4YjQnICAgICAjICAweEJFIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4ZDcnICAgICAjICAweEJGIC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICd7JyAgICAgICAgIyAgMHhDMCAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICdBJyAgICAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4QzIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHhDNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdceGFkJyAgICAgIyAgMHhDQSAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4ZjQnICAgICAjICAweENCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZjYnICAgICAjICAweENDIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmMicgICAgICMgIDB4Q0QgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGY1JyAgICAgIyAgMHhDRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnfScgICAgICAgICMgIDB4RDAgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ0onICAgICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweEQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1x4YjknICAgICAjICAweERBIC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x4ZmInICAgICAjICAweERCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweERDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhmOScgICAgICMgIDB4REQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZmEnICAgICAjICAweERFIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGZmJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1xcJyAgICAgICAjICAweEUwIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ1x4ZjcnICAgICAjICAweEUxIC0+IERJVklTSU9OIFNJR04KICAgICdTJyAgICAgICAgIyAgMHhFMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4RTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweEU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1x4YjInICAgICAjICAweEVBIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4ZDQnICAgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkNicgICAgICMgIDB4RUMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDInICAgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZDMnICAgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDUnICAgICAjICAweEVGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJzAnICAgICAgICAjICAweEYwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHhGMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHhGMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHhGMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweEY0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHhGNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4RjYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4RjcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHhGOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweEY5IC0+IERJR0lUIE5JTkUKICAgICdceGIzJyAgICAgIyAgMHhGQSAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x4ZGInICAgICAjICAweEZCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkYycgICAgICMgIDB4RkMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDknICAgICAjICAweEZEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZGEnICAgICAjICAweEZFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4OWYnICAgICAjICAweEZGIC0+IENPTlRST0wKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVhGYHf12NQAAdjUAABIAAABlbmNvZGluZ3MvY3A3MjAucHkiIiJQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3A3MjAgZ2VuZXJhdGVkIG9uIFdpbmRvd3M6ClZpc3RhIDYuMC42MDAyIFNQMiBNdWx0aXByb2Nlc3NvciBGcmVlIHdpdGggdGhlIGNvbW1hbmQ6CiAgcHl0aG9uIFRvb2xzL3VuaWNvZGUvZ2Vud2luY29kZWMucHkgNzIwCiIiIiMiCgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwNzIwJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgICMgIDB4MDAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAxJyAgICAgICMgIDB4MDEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAyJyAgICAgICMgIDB4MDIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAzJyAgICAgICMgIDB4MDMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA0JyAgICAgICMgIDB4MDQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA1JyAgICAgICMgIDB4MDUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA2JyAgICAgICMgIDB4MDYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA3JyAgICAgICMgIDB4MDcgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA4JyAgICAgICMgIDB4MDggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcdCcgICAgICAgICMgIDB4MDkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcbicgICAgICAgICMgIDB4MEEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBiJyAgICAgICMgIDB4MEIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBjJyAgICAgICMgIDB4MEMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdccicgICAgICAgICMgIDB4MEQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBlJyAgICAgICMgIDB4MEUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBmJyAgICAgICMgIDB4MEYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEwJyAgICAgICMgIDB4MTAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDExJyAgICAgICMgIDB4MTEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEyJyAgICAgICMgIDB4MTIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEzJyAgICAgICMgIDB4MTMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE0JyAgICAgICMgIDB4MTQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE1JyAgICAgICMgIDB4MTUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE2JyAgICAgICMgIDB4MTYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE3JyAgICAgICMgIDB4MTcgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE4JyAgICAgICMgIDB4MTggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE5JyAgICAgICMgIDB4MTkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFhJyAgICAgICMgIDB4MUEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFiJyAgICAgICMgIDB4MUIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFjJyAgICAgICMgIDB4MUMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFkJyAgICAgICMgIDB4MUQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFlJyAgICAgICMgIDB4MUUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFmJyAgICAgICMgIDB4MUYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICcgJyAgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgICMgIDB4N0YgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDgwJwogICAgJ1x4ODEnCiAgICAnXHhlOScgICAgICAjICAweDgyIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgICMgIDB4ODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHg4NCcKICAgICdceGUwJyAgICAgICMgIDB4ODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ODYnCiAgICAnXHhlNycgICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZWEnICAgICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgICMgIDB4ODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGU4JyAgICAgICMgIDB4OEEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWYnICAgICAgIyAgMHg4QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWUnICAgICAgIyAgMHg4QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceDhkJwogICAgJ1x4OGUnCiAgICAnXHg4ZicKICAgICdceDkwJwogICAgJ1x1MDY1MScgICAgIyAgMHg5MSAtPiBBUkFCSUMgU0hBRERBCiAgICAnXHUwNjUyJyAgICAjICAweDkyIC0+IEFSQUJJQyBTVUtVTgogICAgJ1x4ZjQnICAgICAgIyAgMHg5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGE0JyAgICAgICMgIDB4OTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x1MDY0MCcgICAgIyAgMHg5NSAtPiBBUkFCSUMgVEFUV0VFTAogICAgJ1x4ZmInICAgICAgIyAgMHg5NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGY5JyAgICAgICMgIDB4OTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x1MDYyMScgICAgIyAgMHg5OCAtPiBBUkFCSUMgTEVUVEVSIEhBTVpBCiAgICAnXHUwNjIyJyAgICAjICAweDk5IC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFCiAgICAnXHUwNjIzJyAgICAjICAweDlBIC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFCiAgICAnXHUwNjI0JyAgICAjICAweDlCIC0+IEFSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUKICAgICdceGEzJyAgICAgICMgIDB4OUMgLT4gUE9VTkQgU0lHTgogICAgJ1x1MDYyNScgICAgIyAgMHg5RCAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVwogICAgJ1x1MDYyNicgICAgIyAgMHg5RSAtPiBBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFCiAgICAnXHUwNjI3JyAgICAjICAweDlGIC0+IEFSQUJJQyBMRVRURVIgQUxFRgogICAgJ1x1MDYyOCcgICAgIyAgMHhBMCAtPiBBUkFCSUMgTEVUVEVSIEJFSAogICAgJ1x1MDYyOScgICAgIyAgMHhBMSAtPiBBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBCiAgICAnXHUwNjJhJyAgICAjICAweEEyIC0+IEFSQUJJQyBMRVRURVIgVEVICiAgICAnXHUwNjJiJyAgICAjICAweEEzIC0+IEFSQUJJQyBMRVRURVIgVEhFSAogICAgJ1x1MDYyYycgICAgIyAgMHhBNCAtPiBBUkFCSUMgTEVUVEVSIEpFRU0KICAgICdcdTA2MmQnICAgICMgIDB4QTUgLT4gQVJBQklDIExFVFRFUiBIQUgKICAgICdcdTA2MmUnICAgICMgIDB4QTYgLT4gQVJBQklDIExFVFRFUiBLSEFICiAgICAnXHUwNjJmJyAgICAjICAweEE3IC0+IEFSQUJJQyBMRVRURVIgREFMCiAgICAnXHUwNjMwJyAgICAjICAweEE4IC0+IEFSQUJJQyBMRVRURVIgVEhBTAogICAgJ1x1MDYzMScgICAgIyAgMHhBOSAtPiBBUkFCSUMgTEVUVEVSIFJFSAogICAgJ1x1MDYzMicgICAgIyAgMHhBQSAtPiBBUkFCSUMgTEVUVEVSIFpBSU4KICAgICdcdTA2MzMnICAgICMgIDB4QUIgLT4gQVJBQklDIExFVFRFUiBTRUVOCiAgICAnXHUwNjM0JyAgICAjICAweEFDIC0+IEFSQUJJQyBMRVRURVIgU0hFRU4KICAgICdcdTA2MzUnICAgICMgIDB4QUQgLT4gQVJBQklDIExFVFRFUiBTQUQKICAgICdceGFiJyAgICAgICMgIDB4QUUgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgICMgIDB4QUYgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyNTkxJyAgICAjICAweEIwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICAjICAweEIxIC0+IE1FRElVTSBTSEFERQogICAgJ1x1MjU5MycgICAgIyAgMHhCMiAtPiBEQVJLIFNIQURFCiAgICAnXHUyNTAyJyAgICAjICAweEIzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUyNCcgICAgIyAgMHhCNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NjEnICAgICMgIDB4QjUgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1NjInICAgICMgIDB4QjYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTYnICAgICMgIDB4QjcgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1NScgICAgIyAgMHhCOCAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTYzJyAgICAjICAweEI5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NTEnICAgICMgIDB4QkEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAgIyAgMHhCQiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgICdcdTI1NWQnICAgICMgIDB4QkMgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgJ1x1MjU1YycgICAgIyAgMHhCRCAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1YicgICAgIyAgMHhCRSAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjUxMCcgICAgIyAgMHhCRiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAgIyAgMHhDMCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTM0JyAgICAjICAweEMxIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUyYycgICAgIyAgMHhDMiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUxYycgICAgIyAgMHhDMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTAwJyAgICAjICAweEM0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTNjJyAgICAjICAweEM1IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU1ZScgICAgIyAgMHhDNiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NWYnICAgICMgIDB4QzcgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTVhJyAgICAjICAweEM4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTU0JyAgICAjICAweEM5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1NjknICAgICMgIDB4Q0EgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NicgICAgIyAgMHhDQiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjAnICAgICMgIDB4Q0MgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1NTAnICAgICMgIDB4Q0QgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAnXHUyNTZjJyAgICAjICAweENFIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjcnICAgICMgIDB4Q0YgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1NjgnICAgICMgIDB4RDAgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NjQnICAgICMgIDB4RDEgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2NScgICAgIyAgMHhEMiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTU5JyAgICAjICAweEQzIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU1OCcgICAgIyAgMHhENCAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTInICAgICMgIDB4RDUgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTMnICAgICMgIDB4RDYgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NmInICAgICMgIDB4RDcgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NmEnICAgICMgIDB4RDggLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1MTgnICAgICMgIDB4RDkgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAnXHUyNTBjJyAgICAjICAweERBIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU4OCcgICAgIyAgMHhEQiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICAjICAweERDIC0+IExPV0VSIEhBTEYgQkxPQ0sKICAgICdcdTI1OGMnICAgICMgIDB4REQgLT4gTEVGVCBIQUxGIEJMT0NLCiAgICAnXHUyNTkwJyAgICAjICAweERFIC0+IFJJR0hUIEhBTEYgQkxPQ0sKICAgICdcdTI1ODAnICAgICMgIDB4REYgLT4gVVBQRVIgSEFMRiBCTE9DSwogICAgJ1x1MDYzNicgICAgIyAgMHhFMCAtPiBBUkFCSUMgTEVUVEVSIERBRAogICAgJ1x1MDYzNycgICAgIyAgMHhFMSAtPiBBUkFCSUMgTEVUVEVSIFRBSAogICAgJ1x1MDYzOCcgICAgIyAgMHhFMiAtPiBBUkFCSUMgTEVUVEVSIFpBSAogICAgJ1x1MDYzOScgICAgIyAgMHhFMyAtPiBBUkFCSUMgTEVUVEVSIEFJTgogICAgJ1x1MDYzYScgICAgIyAgMHhFNCAtPiBBUkFCSUMgTEVUVEVSIEdIQUlOCiAgICAnXHUwNjQxJyAgICAjICAweEU1IC0+IEFSQUJJQyBMRVRURVIgRkVICiAgICAnXHhiNScgICAgICAjICAweEU2IC0+IE1JQ1JPIFNJR04KICAgICdcdTA2NDInICAgICMgIDB4RTcgLT4gQVJBQklDIExFVFRFUiBRQUYKICAgICdcdTA2NDMnICAgICMgIDB4RTggLT4gQVJBQklDIExFVFRFUiBLQUYKICAgICdcdTA2NDQnICAgICMgIDB4RTkgLT4gQVJBQklDIExFVFRFUiBMQU0KICAgICdcdTA2NDUnICAgICMgIDB4RUEgLT4gQVJBQklDIExFVFRFUiBNRUVNCiAgICAnXHUwNjQ2JyAgICAjICAweEVCIC0+IEFSQUJJQyBMRVRURVIgTk9PTgogICAgJ1x1MDY0NycgICAgIyAgMHhFQyAtPiBBUkFCSUMgTEVUVEVSIEhFSAogICAgJ1x1MDY0OCcgICAgIyAgMHhFRCAtPiBBUkFCSUMgTEVUVEVSIFdBVwogICAgJ1x1MDY0OScgICAgIyAgMHhFRSAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQQogICAgJ1x1MDY0YScgICAgIyAgMHhFRiAtPiBBUkFCSUMgTEVUVEVSIFlFSAogICAgJ1x1MjI2MScgICAgIyAgMHhGMCAtPiBJREVOVElDQUwgVE8KICAgICdcdTA2NGInICAgICMgIDB4RjEgLT4gQVJBQklDIEZBVEhBVEFOCiAgICAnXHUwNjRjJyAgICAjICAweEYyIC0+IEFSQUJJQyBEQU1NQVRBTgogICAgJ1x1MDY0ZCcgICAgIyAgMHhGMyAtPiBBUkFCSUMgS0FTUkFUQU4KICAgICdcdTA2NGUnICAgICMgIDB4RjQgLT4gQVJBQklDIEZBVEhBCiAgICAnXHUwNjRmJyAgICAjICAweEY1IC0+IEFSQUJJQyBEQU1NQQogICAgJ1x1MDY1MCcgICAgIyAgMHhGNiAtPiBBUkFCSUMgS0FTUkEKICAgICdcdTIyNDgnICAgICMgIDB4RjcgLT4gQUxNT1NUIEVRVUFMIFRPCiAgICAnXHhiMCcgICAgICAjICAweEY4IC0+IERFR1JFRSBTSUdOCiAgICAnXHUyMjE5JyAgICAjICAweEY5IC0+IEJVTExFVCBPUEVSQVRPUgogICAgJ1x4YjcnICAgICAgIyAgMHhGQSAtPiBNSURETEUgRE9UCiAgICAnXHUyMjFhJyAgICAjICAweEZCIC0+IFNRVUFSRSBST09UCiAgICAnXHUyMDdmJyAgICAjICAweEZDIC0+IFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnXHhiMicgICAgICAjICAweEZEIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x1MjVhMCcgICAgIyAgMHhGRSAtPiBCTEFDSyBTUVVBUkUKICAgICdceGEwJyAgICAgICMgIDB4RkYgLT4gTk8tQlJFQUsgU1BBQ0UKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVgOrY5J5hwAAeYcAABIAAABlbmNvZGluZ3MvY3A3MzcucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGNwNzM3IGdlbmVyYXRlZCBmcm9tICdWRU5ET1JTL01JQ1NGVC9QQy9DUDczNy5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3A3MzcnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDM5MSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBCiAgICAweDAwODE6IDB4MDM5MiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEJFVEEKICAgIDB4MDA4MjogMHgwMzkzLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgIDB4MDA4MzogMHgwMzk0LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEKICAgIDB4MDA4NDogMHgwMzk1LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTgogICAgMHgwMDg1OiAweDAzOTYsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBaRVRBCiAgICAweDAwODY6IDB4MDM5NywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQQogICAgMHgwMDg3OiAweDAzOTgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQogICAgMHgwMDg4OiAweDAzOTksICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBCiAgICAweDAwODk6IDB4MDM5YSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEtBUFBBCiAgICAweDAwOGE6IDB4MDM5YiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIExBTURBCiAgICAweDAwOGI6IDB4MDM5YywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE1VCiAgICAweDAwOGM6IDB4MDM5ZCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE5VCiAgICAweDAwOGQ6IDB4MDM5ZSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFhJCiAgICAweDAwOGU6IDB4MDM5ZiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04KICAgIDB4MDA4ZjogMHgwM2EwLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEkKICAgIDB4MDA5MDogMHgwM2ExLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUkhPCiAgICAweDAwOTE6IDB4MDNhMywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAweDAwOTI6IDB4MDNhNCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRBVQogICAgMHgwMDkzOiAweDAzYTUsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OCiAgICAweDAwOTQ6IDB4MDNhNiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgMHgwMDk1OiAweDAzYTcsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBDSEkKICAgIDB4MDA5NjogMHgwM2E4LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUFNJCiAgICAweDAwOTc6IDB4MDNhOSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAweDAwOTg6IDB4MDNiMSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQQogICAgMHgwMDk5OiAweDAzYjIsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQkVUQQogICAgMHgwMDlhOiAweDAzYjMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgR0FNTUEKICAgIDB4MDA5YjogMHgwM2I0LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAweDAwOWM6IDB4MDNiNSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAwOWQ6IDB4MDNiNiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBaRVRBCiAgICAweDAwOWU6IDB4MDNiNywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEKICAgIDB4MDA5ZjogMHgwM2I4LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFRIRVRBCiAgICAweDAwYTA6IDB4MDNiOSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBCiAgICAweDAwYTE6IDB4MDNiYSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBLQVBQQQogICAgMHgwMGEyOiAweDAzYmIsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgTEFNREEKICAgIDB4MDBhMzogMHgwM2JjLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIE1VCiAgICAweDAwYTQ6IDB4MDNiZCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBOVQogICAgMHgwMGE1OiAweDAzYmUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgWEkKICAgIDB4MDBhNjogMHgwM2JmLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04KICAgIDB4MDBhNzogMHgwM2MwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAweDAwYTg6IDB4MDNjMSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBSSE8KICAgIDB4MDBhOTogMHgwM2MzLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAweDAwYWE6IDB4MDNjMiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQogICAgMHgwMGFiOiAweDAzYzQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgVEFVCiAgICAweDAwYWM6IDB4MDNjNSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OCiAgICAweDAwYWQ6IDB4MDNjNiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgIDB4MDBhZTogMHgwM2M3LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIENISQogICAgMHgwMGFmOiAweDAzYzgsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUFNJCiAgICAweDAwYjA6IDB4MjU5MSwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDAwYjE6IDB4MjU5MiwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgwMGIyOiAweDI1OTMsICAgICAjICBEQVJLIFNIQURFCiAgICAweDAwYjM6IDB4MjUwMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgwMGI0OiAweDI1MjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiNTogMHgyNTYxLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiNjogMHgyNTYyLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiNzogMHgyNTU2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGI4OiAweDI1NTUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYjk6IDB4MjU2MywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiYTogMHgyNTUxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgwMGJiOiAweDI1NTcsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MDBiYzogMHgyNTVkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgwMGJkOiAweDI1NWMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGJlOiAweDI1NWIsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDI1NWUsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBjNzogMHgyNTVmLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwYzg6IDB4MjU1YSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDAwYzk6IDB4MjU1NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBjYTogMHgyNTY5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNiOiAweDI1NjYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYzogMHgyNTYwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjZDogMHgyNTUwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDAwY2U6IDB4MjU2YywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjZjogMHgyNTY3LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkMDogMHgyNTY4LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkMTogMHgyNTY0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQyOiAweDI1NjUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDM6IDB4MjU1OSwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGQ0OiAweDI1NTgsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNTogMHgyNTUyLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNjogMHgyNTUzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBkNzogMHgyNTZiLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkODogMHgyNTZhLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkOTogMHgyNTE4LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDAwZGE6IDB4MjUwYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgwMGRiOiAweDI1ODgsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDAwZGM6IDB4MjU4NCwgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MDBkZDogMHgyNThjLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDAwZGU6IDB4MjU5MCwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MDBkZjogMHgyNTgwLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgwMGUwOiAweDAzYzksICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EKICAgIDB4MDBlMTogMHgwM2FjLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKICAgIDB4MDBlMjogMHgwM2FkLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgMHgwMGUzOiAweDAzYWUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgIDB4MDBlNDogMHgwM2NhLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EKICAgIDB4MDBlNTogMHgwM2FmLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUwogICAgMHgwMGU2OiAweDAzY2MsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiAgICAweDAwZTc6IDB4MDNjZCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKICAgIDB4MDBlODogMHgwM2NiLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgIDB4MDBlOTogMHgwM2NlLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1MKICAgIDB4MDBlYTogMHgwMzg2LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUwogICAgMHgwMGViOiAweDAzODgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1MKICAgIDB4MDBlYzogMHgwMzg5LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgIDB4MDBlZDogMHgwMzhhLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TCiAgICAweDAwZWU6IDB4MDM4YywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUwogICAgMHgwMGVmOiAweDAzOGUsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKICAgIDB4MDBmMDogMHgwMzhmLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUwogICAgMHgwMGYxOiAweDAwYjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBmMjogMHgyMjY1LCAgICAgIyAgR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCiAgICAweDAwZjM6IDB4MjI2NCwgICAgICMgIExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgMHgwMGY0OiAweDAzYWEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAweDAwZjU6IDB4MDNhYiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgIDB4MDBmNjogMHgwMGY3LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY3OiAweDIyNDgsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MDBmODogMHgwMGIwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBmOTogMHgyMjE5LCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDAwZmE6IDB4MDBiNywgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBmYjogMHgyMjFhLCAgICAgIyAgU1FVQVJFIFJPT1QKICAgIDB4MDBmYzogMHgyMDdmLCAgICAgIyAgU1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDBmZDogMHgwMGIyLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdcdTAzOTEnICAgIyAgMHgwMDgwIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBCiAgICAnXHUwMzkyJyAgICMgIDB4MDA4MSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBCRVRBCiAgICAnXHUwMzkzJyAgICMgIDB4MDA4MiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQogICAgJ1x1MDM5NCcgICAjICAweDAwODMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEKICAgICdcdTAzOTUnICAgIyAgMHgwMDg0IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04KICAgICdcdTAzOTYnICAgIyAgMHgwMDg1IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFpFVEEKICAgICdcdTAzOTcnICAgIyAgMHgwMDg2IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQQogICAgJ1x1MDM5OCcgICAjICAweDAwODcgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEEKICAgICdcdTAzOTknICAgIyAgMHgwMDg4IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEKICAgICdcdTAzOWEnICAgIyAgMHgwMDg5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEtBUFBBCiAgICAnXHUwMzliJyAgICMgIDB4MDA4YSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1EQQogICAgJ1x1MDM5YycgICAjICAweDAwOGIgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgTVUKICAgICdcdTAzOWQnICAgIyAgMHgwMDhjIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE5VCiAgICAnXHUwMzllJyAgICMgIDB4MDA4ZCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBYSQogICAgJ1x1MDM5ZicgICAjICAweDAwOGUgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTgogICAgJ1x1MDNhMCcgICAjICAweDAwOGYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEkKICAgICdcdTAzYTEnICAgIyAgMHgwMDkwIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFJITwogICAgJ1x1MDNhMycgICAjICAweDAwOTEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKICAgICdcdTAzYTQnICAgIyAgMHgwMDkyIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFRBVQogICAgJ1x1MDNhNScgICAjICAweDAwOTMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTgogICAgJ1x1MDNhNicgICAjICAweDAwOTQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAnXHUwM2E3JyAgICMgIDB4MDA5NSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBDSEkKICAgICdcdTAzYTgnICAgIyAgMHgwMDk2IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFBTSQogICAgJ1x1MDNhOScgICAjICAweDAwOTcgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKICAgICdcdTAzYjEnICAgIyAgMHgwMDk4IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQQogICAgJ1x1MDNiMicgICAjICAweDAwOTkgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEJFVEEKICAgICdcdTAzYjMnICAgIyAgMHgwMDlhIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBHQU1NQQogICAgJ1x1MDNiNCcgICAjICAweDAwOWIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAnXHUwM2I1JyAgICMgIDB4MDA5YyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgogICAgJ1x1MDNiNicgICAjICAweDAwOWQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFpFVEEKICAgICdcdTAzYjcnICAgIyAgMHgwMDllIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFVEEKICAgICdcdTAzYjgnICAgIyAgMHgwMDlmIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBUSEVUQQogICAgJ1x1MDNiOScgICAjICAweDAwYTAgLT4gR1JFRUsgU01BTEwgTEVUVEVSIElPVEEKICAgICdcdTAzYmEnICAgIyAgMHgwMGExIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBLQVBQQQogICAgJ1x1MDNiYicgICAjICAweDAwYTIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIExBTURBCiAgICAnXHUwM2JjJyAgICMgIDB4MDBhMyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgTVUKICAgICdcdTAzYmQnICAgIyAgMHgwMGE0IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBOVQogICAgJ1x1MDNiZScgICAjICAweDAwYTUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFhJCiAgICAnXHUwM2JmJyAgICMgIDB4MDBhNiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTgogICAgJ1x1MDNjMCcgICAjICAweDAwYTcgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAnXHUwM2MxJyAgICMgIDB4MDBhOCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUkhPCiAgICAnXHUwM2MzJyAgICMgIDB4MDBhOSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKICAgICdcdTAzYzInICAgIyAgMHgwMGFhIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQogICAgJ1x1MDNjNCcgICAjICAweDAwYWIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgJ1x1MDNjNScgICAjICAweDAwYWMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04KICAgICdcdTAzYzYnICAgIyAgMHgwMGFkIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgICdcdTAzYzcnICAgIyAgMHgwMGFlIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBDSEkKICAgICdcdTAzYzgnICAgIyAgMHgwMGFmIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQU0kKICAgICdcdTI1OTEnICAgIyAgMHgwMGIwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICMgIDB4MDBiMSAtPiBNRURJVU0gU0hBREUKICAgICdcdTI1OTMnICAgIyAgMHgwMGIyIC0+IERBUksgU0hBREUKICAgICdcdTI1MDInICAgIyAgMHgwMGIzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUyNCcgICAjICAweDAwYjQgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTYxJyAgICMgIDB4MDBiNSAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjU2MicgICAjICAweDAwYjYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTYnICAgIyAgMHgwMGI3IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTUnICAgIyAgMHgwMGI4IC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1NjMnICAgIyAgMHgwMGI5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NTEnICAgIyAgMHgwMGJhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgICdcdTI1NTcnICAgIyAgMHgwMGJiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjU1ZCcgICAjICAweDAwYmMgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgJ1x1MjU1YycgICAjICAweDAwYmQgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NWInICAgIyAgMHgwMGJlIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTEwJyAgICMgIDB4MDBiZiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAjICAweDAwYzAgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgJ1x1MjUzNCcgICAjICAweDAwYzEgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTJjJyAgICMgIDB4MDBjMiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUxYycgICAjICAweDAwYzMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjUwMCcgICAjICAweDAwYzQgLT4gQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgICdcdTI1M2MnICAgIyAgMHgwMGM1IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU1ZScgICAjICAweDAwYzYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTVmJyAgICMgIDB4MDBjNyAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NWEnICAgIyAgMHgwMGM4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTU0JyAgICMgIDB4MDBjOSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTY5JyAgICMgIDB4MDBjYSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTY2JyAgICMgIDB4MDBjYiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjAnICAgIyAgMHgwMGNjIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTUwJyAgICMgIDB4MDBjZCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgICdcdTI1NmMnICAgIyAgMHgwMGNlIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjcnICAgIyAgMHgwMGNmIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTY4JyAgICMgIDB4MDBkMCAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU2NCcgICAjICAweDAwZDEgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2NScgICAjICAweDAwZDIgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU1OScgICAjICAweDAwZDMgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTU4JyAgICMgIDB4MDBkNCAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTInICAgIyAgMHgwMGQ1IC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTUzJyAgICMgIDB4MDBkNiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU2YicgICAjICAweDAwZDcgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NmEnICAgIyAgMHgwMGQ4IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTE4JyAgICMgIDB4MDBkOSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgICdcdTI1MGMnICAgIyAgMHgwMGRhIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU4OCcgICAjICAweDAwZGIgLT4gRlVMTCBCTE9DSwogICAgJ1x1MjU4NCcgICAjICAweDAwZGMgLT4gTE9XRVIgSEFMRiBCTE9DSwogICAgJ1x1MjU4YycgICAjICAweDAwZGQgLT4gTEVGVCBIQUxGIEJMT0NLCiAgICAnXHUyNTkwJyAgICMgIDB4MDBkZSAtPiBSSUdIVCBIQUxGIEJMT0NLCiAgICAnXHUyNTgwJyAgICMgIDB4MDBkZiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHUwM2M5JyAgICMgIDB4MDBlMCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EKICAgICdcdTAzYWMnICAgIyAgMHgwMGUxIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TCiAgICAnXHUwM2FkJyAgICMgIDB4MDBlMiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2FlJyAgICMgIDB4MDBlMyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgICdcdTAzY2EnICAgIyAgMHgwMGU0IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAnXHUwM2FmJyAgICMgIDB4MDBlNSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TCiAgICAnXHUwM2NjJyAgICMgIDB4MDBlNiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2NkJyAgICMgIDB4MDBlNyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2NiJyAgICMgIDB4MDBlOCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQQogICAgJ1x1MDNjZScgICAjICAweDAwZTkgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1MKICAgICdcdTAzODYnICAgIyAgMHgwMGVhIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKICAgICdcdTAzODgnICAgIyAgMHgwMGViIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgJ1x1MDM4OScgICAjICAweDAwZWMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgICdcdTAzOGEnICAgIyAgMHgwMGVkIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBUT05PUwogICAgJ1x1MDM4YycgICAjICAweDAwZWUgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiAgICAnXHUwMzhlJyAgICMgIDB4MDBlZiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKICAgICdcdTAzOGYnICAgIyAgMHgwMGYwIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1MKICAgICdceGIxJyAgICAgIyAgMHgwMGYxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x1MjI2NScgICAjICAweDAwZjIgLT4gR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCiAgICAnXHUyMjY0JyAgICMgIDB4MDBmMyAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTAzYWEnICAgIyAgMHgwMGY0IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EKICAgICdcdTAzYWInICAgIyAgMHgwMGY1IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgICdceGY3JyAgICAgIyAgMHgwMGY2IC0+IERJVklTSU9OIFNJR04KICAgICdcdTIyNDgnICAgIyAgMHgwMGY3IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x4YjAnICAgICAjICAweDAwZjggLT4gREVHUkVFIFNJR04KICAgICdcdTIyMTknICAgIyAgMHgwMGY5IC0+IEJVTExFVCBPUEVSQVRPUgogICAgJ1x4YjcnICAgICAjICAweDAwZmEgLT4gTUlERExFIERPVAogICAgJ1x1MjIxYScgICAjICAweDAwZmIgLT4gU1FVQVJFIFJPT1QKICAgICdcdTIwN2YnICAgIyAgMHgwMGZjIC0+IFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnXHhiMicgICAgICMgIDB4MDBmZCAtPiBTVVBFUlNDUklQVCBUV08KICAgICdcdTI1YTAnICAgIyAgMHgwMGZlIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YTAnICAgICAjICAweDAwZmYgLT4gTk8tQlJFQUsgU1BBQ0UKKQoKIyMjIEVuY29kaW5nIE1hcAoKZW5jb2RpbmdfbWFwID0gewogICAgMHgwMDAwOiAweDAwMDAsICAgICAjICBOVUxMCiAgICAweDAwMDE6IDB4MDAwMSwgICAgICMgIFNUQVJUIE9GIEhFQURJTkcKICAgIDB4MDAwMjogMHgwMDAyLCAgICAgIyAgU1RBUlQgT0YgVEVYVAogICAgMHgwMDAzOiAweDAwMDMsICAgICAjICBFTkQgT0YgVEVYVAogICAgMHgwMDA0OiAweDAwMDQsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAweDAwMDU6IDB4MDAwNSwgICAgICMgIEVOUVVJUlkKICAgIDB4MDAwNjogMHgwMDA2LCAgICAgIyAgQUNLTk9XTEVER0UKICAgIDB4MDAwNzogMHgwMDA3LCAgICAgIyAgQkVMTAogICAgMHgwMDA4OiAweDAwMDgsICAgICAjICBCQUNLU1BBQ0UKICAgIDB4MDAwOTogMHgwMDA5LCAgICAgIyAgSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAweDAwMGE6IDB4MDAwYSwgICAgICMgIExJTkUgRkVFRAogICAgMHgwMDBiOiAweDAwMGIsICAgICAjICBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAweDAwMGM6IDB4MDAwYywgICAgICMgIEZPUk0gRkVFRAogICAgMHgwMDBkOiAweDAwMGQsICAgICAjICBDQVJSSUFHRSBSRVRVUk4KICAgIDB4MDAwZTogMHgwMDBlLCAgICAgIyAgU0hJRlQgT1VUCiAgICAweDAwMGY6IDB4MDAwZiwgICAgICMgIFNISUZUIElOCiAgICAweDAwMTA6IDB4MDAxMCwgICAgICMgIERBVEEgTElOSyBFU0NBUEUKICAgIDB4MDAxMTogMHgwMDExLCAgICAgIyAgREVWSUNFIENPTlRST0wgT05FCiAgICAweDAwMTI6IDB4MDAxMiwgICAgICMgIERFVklDRSBDT05UUk9MIFRXTwogICAgMHgwMDEzOiAweDAwMTMsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgMHgwMDE0OiAweDAwMTQsICAgICAjICBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAweDAwMTU6IDB4MDAxNSwgICAgICMgIE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAweDAwMTY6IDB4MDAxNiwgICAgICMgIFNZTkNIUk9OT1VTIElETEUKICAgIDB4MDAxNzogMHgwMDE3LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgMHgwMDE4OiAweDAwMTgsICAgICAjICBDQU5DRUwKICAgIDB4MDAxOTogMHgwMDE5LCAgICAgIyAgRU5EIE9GIE1FRElVTQogICAgMHgwMDFhOiAweDAwMWEsICAgICAjICBTVUJTVElUVVRFCiAgICAweDAwMWI6IDB4MDAxYiwgICAgICMgIEVTQ0FQRQogICAgMHgwMDFjOiAweDAwMWMsICAgICAjICBGSUxFIFNFUEFSQVRPUgogICAgMHgwMDFkOiAweDAwMWQsICAgICAjICBHUk9VUCBTRVBBUkFUT1IKICAgIDB4MDAxZTogMHgwMDFlLCAgICAgIyAgUkVDT1JEIFNFUEFSQVRPUgogICAgMHgwMDFmOiAweDAwMWYsICAgICAjICBVTklUIFNFUEFSQVRPUgogICAgMHgwMDIwOiAweDAwMjAsICAgICAjICBTUEFDRQogICAgMHgwMDIxOiAweDAwMjEsICAgICAjICBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwMjI6IDB4MDAyMiwgICAgICMgIFFVT1RBVElPTiBNQVJLCiAgICAweDAwMjM6IDB4MDAyMywgICAgICMgIE5VTUJFUiBTSUdOCiAgICAweDAwMjQ6IDB4MDAyNCwgICAgICMgIERPTExBUiBTSUdOCiAgICAweDAwMjU6IDB4MDAyNSwgICAgICMgIFBFUkNFTlQgU0lHTgogICAgMHgwMDI2OiAweDAwMjYsICAgICAjICBBTVBFUlNBTkQKICAgIDB4MDAyNzogMHgwMDI3LCAgICAgIyAgQVBPU1RST1BIRQogICAgMHgwMDI4OiAweDAwMjgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTCiAgICAweDAwMjk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTCiAgICAweDAwMmE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLCiAgICAweDAwMmI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTgogICAgMHgwMDJjOiAweDAwMmMsICAgICAjICBDT01NQQogICAgMHgwMDJkOiAweDAwMmQsICAgICAjICBIWVBIRU4tTUlOVVMKICAgIDB4MDAyZTogMHgwMDJlLCAgICAgIyAgRlVMTCBTVE9QCiAgICAweDAwMmY6IDB4MDAyZiwgICAgICMgIFNPTElEVVMKICAgIDB4MDAzMDogMHgwMDMwLCAgICAgIyAgRElHSVQgWkVSTwogICAgMHgwMDMxOiAweDAwMzEsICAgICAjICBESUdJVCBPTkUKICAgIDB4MDAzMjogMHgwMDMyLCAgICAgIyAgRElHSVQgVFdPCiAgICAweDAwMzM6IDB4MDAzMywgICAgICMgIERJR0lUIFRIUkVFCiAgICAweDAwMzQ6IDB4MDAzNCwgICAgICMgIERJR0lUIEZPVVIKICAgIDB4MDAzNTogMHgwMDM1LCAgICAgIyAgRElHSVQgRklWRQogICAgMHgwMDM2OiAweDAwMzYsICAgICAjICBESUdJVCBTSVgKICAgIDB4MDAzNzogMHgwMDM3LCAgICAgIyAgRElHSVQgU0VWRU4KICAgIDB4MDAzODogMHgwMDM4LCAgICAgIyAgRElHSVQgRUlHSFQKICAgIDB4MDAzOTogMHgwMDM5LCAgICAgIyAgRElHSVQgTklORQogICAgMHgwMDNhOiAweDAwM2EsICAgICAjICBDT0xPTgogICAgMHgwMDNiOiAweDAwM2IsICAgICAjICBTRU1JQ09MT04KICAgIDB4MDAzYzogMHgwMDNjLCAgICAgIyAgTEVTUy1USEFOIFNJR04KICAgIDB4MDAzZDogMHgwMDNkLCAgICAgIyAgRVFVQUxTIFNJR04KICAgIDB4MDAzZTogMHgwMDNlLCAgICAgIyAgR1JFQVRFUi1USEFOIFNJR04KICAgIDB4MDAzZjogMHgwMDNmLCAgICAgIyAgUVVFU1RJT04gTUFSSwogICAgMHgwMDQwOiAweDAwNDAsICAgICAjICBDT01NRVJDSUFMIEFUCiAgICAweDAwNDE6IDB4MDA0MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA0MjogMHgwMDQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgMHgwMDQzOiAweDAwNDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAweDAwNDQ6IDB4MDA0NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgIDB4MDA0NTogMHgwMDQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgMHgwMDQ2OiAweDAwNDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAweDAwNDc6IDB4MDA0NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgIDB4MDA0ODogMHgwMDQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgMHgwMDQ5OiAweDAwNDksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwNGE6IDB4MDA0YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgIDB4MDA0YjogMHgwMDRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgMHgwMDRjOiAweDAwNGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAweDAwNGQ6IDB4MDA0ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgIDB4MDA0ZTogMHgwMDRlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgMHgwMDRmOiAweDAwNGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAweDAwNTA6IDB4MDA1MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgIDB4MDA1MTogMHgwMDUxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgMHgwMDUyOiAweDAwNTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAweDAwNTM6IDB4MDA1MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgIDB4MDA1NDogMHgwMDU0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgMHgwMDU1OiAweDAwNTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwNTY6IDB4MDA1NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgIDB4MDA1NzogMHgwMDU3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgMHgwMDU4OiAweDAwNTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAweDAwNTk6IDB4MDA1OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgIDB4MDA1YTogMHgwMDVhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgMHgwMDViOiAweDAwNWIsICAgICAjICBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWM6IDB4MDA1YywgICAgICMgIFJFVkVSU0UgU09MSURVUwogICAgMHgwMDVkOiAweDAwNWQsICAgICAjICBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVlOiAweDAwNWUsICAgICAjICBDSVJDVU1GTEVYIEFDQ0VOVAogICAgMHgwMDVmOiAweDAwNWYsICAgICAjICBMT1cgTElORQogICAgMHgwMDYwOiAweDAwNjAsICAgICAjICBHUkFWRSBBQ0NFTlQKICAgIDB4MDA2MTogMHgwMDYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgIDB4MDA2MjogMHgwMDYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgIDB4MDA2MzogMHgwMDYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgIDB4MDA2NDogMHgwMDY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgIDB4MDA2NTogMHgwMDY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgIDB4MDA2NjogMHgwMDY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgIDB4MDA2NzogMHgwMDY3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgIDB4MDA2ODogMHgwMDY4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgIDB4MDA2OTogMHgwMDY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgIDB4MDA2YTogMHgwMDZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgIDB4MDA2YjogMHgwMDZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgIDB4MDA2YzogMHgwMDZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgIDB4MDA2ZDogMHgwMDZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgIDB4MDA2ZTogMHgwMDZlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDA2ZjogMHgwMDZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgIDB4MDA3MDogMHgwMDcwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgIDB4MDA3MTogMHgwMDcxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgIDB4MDA3MjogMHgwMDcyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgIDB4MDA3MzogMHgwMDczLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgIDB4MDA3NDogMHgwMDc0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgIDB4MDA3NTogMHgwMDc1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgIDB4MDA3NjogMHgwMDc2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgIDB4MDA3NzogMHgwMDc3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgIDB4MDA3ODogMHgwMDc4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgIDB4MDA3OTogMHgwMDc5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgIDB4MDA3YTogMHgwMDdhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgIDB4MDA3YjogMHgwMDdiLCAgICAgIyAgTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2M6IDB4MDA3YywgICAgICMgIFZFUlRJQ0FMIExJTkUKICAgIDB4MDA3ZDogMHgwMDdkLCAgICAgIyAgUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdlOiAweDAwN2UsICAgICAjICBUSUxERQogICAgMHgwMDdmOiAweDAwN2YsICAgICAjICBERUxFVEUKICAgIDB4MDBhMDogMHgwMGZmLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKICAgIDB4MDBiMDogMHgwMGY4LCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBiMTogMHgwMGYxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwYjI6IDB4MDBmZCwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGI3OiAweDAwZmEsICAgICAjICBNSURETEUgRE9UCiAgICAweDAwZjc6IDB4MDBmNiwgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDM4NjogMHgwMGVhLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUwogICAgMHgwMzg4OiAweDAwZWIsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1MKICAgIDB4MDM4OTogMHgwMGVjLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgIDB4MDM4YTogMHgwMGVkLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TCiAgICAweDAzOGM6IDB4MDBlZSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUwogICAgMHgwMzhlOiAweDAwZWYsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKICAgIDB4MDM4ZjogMHgwMGYwLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUwogICAgMHgwMzkxOiAweDAwODAsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQQogICAgMHgwMzkyOiAweDAwODEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBCRVRBCiAgICAweDAzOTM6IDB4MDA4MiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAweDAzOTQ6IDB4MDA4MywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBCiAgICAweDAzOTU6IDB4MDA4NCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04KICAgIDB4MDM5NjogMHgwMDg1LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQQogICAgMHgwMzk3OiAweDAwODYsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEKICAgIDB4MDM5ODogMHgwMDg3LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEEKICAgIDB4MDM5OTogMHgwMDg4LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQQogICAgMHgwMzlhOiAweDAwODksICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQQogICAgMHgwMzliOiAweDAwOGEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1EQQogICAgMHgwMzljOiAweDAwOGIsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBNVQogICAgMHgwMzlkOiAweDAwOGMsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBOVQogICAgMHgwMzllOiAweDAwOGQsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBYSQogICAgMHgwMzlmOiAweDAwOGUsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OCiAgICAweDAzYTA6IDB4MDA4ZiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBJCiAgICAweDAzYTE6IDB4MDA5MCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFJITwogICAgMHgwM2EzOiAweDAwOTEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgMHgwM2E0OiAweDAwOTIsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVUKICAgIDB4MDNhNTogMHgwMDkzLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTgogICAgMHgwM2E2OiAweDAwOTQsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKICAgIDB4MDNhNzogMHgwMDk1LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJCiAgICAweDAzYTg6IDB4MDA5NiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBTSQogICAgMHgwM2E5OiAweDAwOTcsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgMHgwM2FhOiAweDAwZjQsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAweDAzYWI6IDB4MDBmNSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgIDB4MDNhYzogMHgwMGUxLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKICAgIDB4MDNhZDogMHgwMGUyLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgMHgwM2FlOiAweDAwZTMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgIDB4MDNhZjogMHgwMGU1LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUwogICAgMHgwM2IxOiAweDAwOTgsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgIDB4MDNiMjogMHgwMDk5LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEJFVEEKICAgIDB4MDNiMzogMHgwMDlhLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEdBTU1BCiAgICAweDAzYjQ6IDB4MDA5YiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgMHgwM2I1OiAweDAwOWMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgogICAgMHgwM2I2OiAweDAwOWQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgWkVUQQogICAgMHgwM2I3OiAweDAwOWUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVRBCiAgICAweDAzYjg6IDB4MDA5ZiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUSEVUQQogICAgMHgwM2I5OiAweDAwYTAsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQQogICAgMHgwM2JhOiAweDAwYTEsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgS0FQUEEKICAgIDB4MDNiYjogMHgwMGEyLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIExBTURBCiAgICAweDAzYmM6IDB4MDBhMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBNVQogICAgMHgwM2JkOiAweDAwYTQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgTlUKICAgIDB4MDNiZTogMHgwMGE1LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFhJCiAgICAweDAzYmY6IDB4MDBhNiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OCiAgICAweDAzYzA6IDB4MDBhNywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgMHgwM2MxOiAweDAwYTgsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUkhPCiAgICAweDAzYzI6IDB4MDBhYSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQogICAgMHgwM2MzOiAweDAwYTksICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKICAgIDB4MDNjNDogMHgwMGFiLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgMHgwM2M1OiAweDAwYWMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTgogICAgMHgwM2M2OiAweDAwYWQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAweDAzYzc6IDB4MDBhZSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBDSEkKICAgIDB4MDNjODogMHgwMGFmLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBTSQogICAgMHgwM2M5OiAweDAwZTAsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EKICAgIDB4MDNjYTogMHgwMGU0LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EKICAgIDB4MDNjYjogMHgwMGU4LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgIDB4MDNjYzogMHgwMGU2LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUwogICAgMHgwM2NkOiAweDAwZTcsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TCiAgICAweDAzY2U6IDB4MDBlOSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiAgICAweDIwN2Y6IDB4MDBmYywgICAgICMgIFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDIyMTk6IDB4MDBmOSwgICAgICMgIEJVTExFVCBPUEVSQVRPUgogICAgMHgyMjFhOiAweDAwZmIsICAgICAjICBTUVVBUkUgUk9PVAogICAgMHgyMjQ4OiAweDAwZjcsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MjI2NDogMHgwMGYzLCAgICAgIyAgTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAweDIyNjU6IDB4MDBmMiwgICAgICMgIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgMHgyNTAwOiAweDAwYzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgyNTAyOiAweDAwYjMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MjUwYzogMHgwMGRhLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDBiZiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDI1MTQ6IDB4MDBjMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MjUxODogMHgwMGQ5LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDBjMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjUyNDogMHgwMGI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1MmM6IDB4MDBjMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDBjMSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTNjOiAweDAwYzUsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU1MDogMHgwMGNkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDI1NTE6IDB4MDBiYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MjU1MjogMHgwMGQ1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1MzogMHgwMGQ2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1NDogMHgwMGM5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgyNTU1OiAweDAwYjgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NTY6IDB4MDBiNywgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1NzogMHgwMGJiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDI1NTg6IDB4MDBkNCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTU5OiAweDAwZDMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1YTogMHgwMGM4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MjU1YjogMHgwMGJlLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU1YzogMHgwMGJkLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1ZDogMHgwMGJjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgyNTVlOiAweDAwYzYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1ZjogMHgwMGM3LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NjA6IDB4MDBjYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1NjE6IDB4MDBiNSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NjI6IDB4MDBiNiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NjM6IDB4MDBiOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjU2NDogMHgwMGQxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY1OiAweDAwZDIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NjY6IDB4MDBjYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTY3OiAweDAwY2YsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY4OiAweDAwZDAsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTY5OiAweDAwY2EsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NmE6IDB4MDBkOCwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1NmI6IDB4MDBkNywgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NmM6IDB4MDBjZSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU4MDogMHgwMGRmLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgyNTg0OiAweDAwZGMsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDI1ODg6IDB4MDBkYiwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MjU4YzogMHgwMGRkLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDI1OTA6IDB4MDBkZSwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MjU5MTogMHgwMGIwLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MjU5MjogMHgwMGIxLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDI1OTM6IDB4MDBiMiwgICAgICMgIERBUksgU0hBREUKICAgIDB4MjVhMDogMHgwMGZlLCAgICAgIyAgQkxBQ0sgU1FVQVJFCn0KUEsDBBQAAAAAAAIgo1ZSQogTrIYAAKyGAAASAAAAZW5jb2RpbmdzL2NwNzc1LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBjcDc3NSBnZW5lcmF0ZWQgZnJvbSAnVkVORE9SUy9NSUNTRlQvUEMvQ1A3NzUuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwNzc1JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDEwNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURQogICAgMHgwMDgxOiAweDAwZmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDgyOiAweDAwZTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwODM6IDB4MDEwMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OCiAgICAweDAwODQ6IDB4MDBlNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwODU6IDB4MDEyMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQogICAgMHgwMDg2OiAweDAwZTUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDA4NzogMHgwMTA3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQogICAgMHgwMDg4OiAweDAxNDIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgMHgwMDg5OiAweDAxMTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgMHgwMDhhOiAweDAxNTYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQogICAgMHgwMDhiOiAweDAxNTcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKICAgIDB4MDA4YzogMHgwMTJiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KICAgIDB4MDA4ZDogMHgwMTc5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEFDVVRFCiAgICAweDAwOGU6IDB4MDBjNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4ZjogMHgwMGM1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDA5MDogMHgwMGM5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwOTE6IDB4MDBlNiwgICAgICMgIExBVElOIFNNQUxMIExJR0FUVVJFIEFFCiAgICAweDAwOTI6IDB4MDBjNiwgICAgICMgIExBVElOIENBUElUQUwgTElHQVRVUkUgQUUKICAgIDB4MDA5MzogMHgwMTRkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgIDB4MDA5NDogMHgwMGY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5NTogMHgwMTIyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKICAgIDB4MDA5NjogMHgwMGEyLCAgICAgIyAgQ0VOVCBTSUdOCiAgICAweDAwOTc6IDB4MDE1YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgMHgwMDk4OiAweDAxNWIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCiAgICAweDAwOTk6IDB4MDBkNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YTogMHgwMGRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDliOiAweDAwZjgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMDljOiAweDAwYTMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwOWQ6IDB4MDBkOCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDA5ZTogMHgwMGQ3LCAgICAgIyAgTVVMVElQTElDQVRJT04gU0lHTgogICAgMHgwMDlmOiAweDAwYTQsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwYTA6IDB4MDEwMCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KICAgIDB4MDBhMTogMHgwMTJhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgogICAgMHgwMGEyOiAweDAwZjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwYTM6IDB4MDE3YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgIDB4MDBhNDogMHgwMTdjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgIDB4MDBhNTogMHgwMTdhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgMHgwMGE2OiAweDIwMWQsICAgICAjICBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhNzogMHgwMGE2LCAgICAgIyAgQlJPS0VOIEJBUgogICAgMHgwMGE4OiAweDAwYTksICAgICAjICBDT1BZUklHSFQgU0lHTgogICAgMHgwMGE5OiAweDAwYWUsICAgICAjICBSRUdJU1RFUkVEIFNJR04KICAgIDB4MDBhYTogMHgwMGFjLCAgICAgIyAgTk9UIFNJR04KICAgIDB4MDBhYjogMHgwMGJkLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAweDAwYWM6IDB4MDBiYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGFkOiAweDAxNDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFCiAgICAweDAwYWU6IDB4MDBhYiwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWY6IDB4MDBiYiwgICAgICMgIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGIwOiAweDI1OTEsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgwMGIxOiAweDI1OTIsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MDBiMjogMHgyNTkzLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgwMGIzOiAweDI1MDIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MDBiNDogMHgyNTI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYjU6IDB4MDEwNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgIDB4MDBiNjogMHgwMTBjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAweDAwYjc6IDB4MDExOCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgIDB4MDBiODogMHgwMTE2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQogICAgMHgwMGI5OiAweDI1NjMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYmE6IDB4MjU1MSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MDBiYjogMHgyNTU3LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDAwYmM6IDB4MjU1ZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MDBiZDogMHgwMTJlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSwogICAgMHgwMGJlOiAweDAxNjAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KICAgIDB4MDBiZjogMHgyNTEwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MDBjMDogMHgyNTE0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgwMGMxOiAweDI1MzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMjogMHgyNTJjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMzogMHgyNTFjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGM0OiAweDI1MDAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgwMGM1OiAweDI1M2MsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjNjogMHgwMTcyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgMHgwMGM3OiAweDAxNmEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCiAgICAweDAwYzg6IDB4MjU1YSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDAwYzk6IDB4MjU1NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBjYTogMHgyNTY5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNiOiAweDI1NjYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYzogMHgyNTYwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjZDogMHgyNTUwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDAwY2U6IDB4MjU2YywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjZjogMHgwMTdkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAweDAwZDA6IDB4MDEwNSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAweDAwZDE6IDB4MDEwZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KICAgIDB4MDBkMjogMHgwMTE5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgIDB4MDBkMzogMHgwMTE3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKICAgIDB4MDBkNDogMHgwMTJmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKICAgIDB4MDBkNTogMHgwMTYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgMHgwMGQ2OiAweDAxNzMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgMHgwMGQ3OiAweDAxNmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgogICAgMHgwMGQ4OiAweDAxN2UsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAweDAwZDk6IDB4MjUxOCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgwMGRhOiAweDI1MGMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBkYjogMHgyNTg4LCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgwMGRjOiAweDI1ODQsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDAwZGQ6IDB4MjU4YywgICAgICMgIExFRlQgSEFMRiBCTE9DSwogICAgMHgwMGRlOiAweDI1OTAsICAgICAjICBSSUdIVCBIQUxGIEJMT0NLCiAgICAweDAwZGY6IDB4MjU4MCwgICAgICMgIFVQUEVSIEhBTEYgQkxPQ0sKICAgIDB4MDBlMDogMHgwMGQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZTE6IDB4MDBkZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHRVJNQU4pCiAgICAweDAwZTI6IDB4MDE0YywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgIDB4MDBlMzogMHgwMTQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCiAgICAweDAwZTQ6IDB4MDBmNSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgIDB4MDBlNTogMHgwMGQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAweDAwZTY6IDB4MDBiNSwgICAgICMgIE1JQ1JPIFNJR04KICAgIDB4MDBlNzogMHgwMTQ0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgMHgwMGU4OiAweDAxMzYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQQogICAgMHgwMGU5OiAweDAxMzcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEEKICAgIDB4MDBlYTogMHgwMTNiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEEKICAgIDB4MDBlYjogMHgwMTNjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiAgICAweDAwZWM6IDB4MDE0NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQQogICAgMHgwMGVkOiAweDAxMTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OCiAgICAweDAwZWU6IDB4MDE0NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiAgICAweDAwZWY6IDB4MjAxOSwgICAgICMgIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGYwOiAweDAwYWQsICAgICAjICBTT0ZUIEhZUEhFTgogICAgMHgwMGYxOiAweDAwYjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBmMjogMHgyMDFjLCAgICAgIyAgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBmMzogMHgwMGJlLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAweDAwZjQ6IDB4MDBiNiwgICAgICMgIFBJTENST1cgU0lHTgogICAgMHgwMGY1OiAweDAwYTcsICAgICAjICBTRUNUSU9OIFNJR04KICAgIDB4MDBmNjogMHgwMGY3LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY3OiAweDIwMWUsICAgICAjICBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBmODogMHgwMGIwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBmOTogMHgyMjE5LCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDAwZmE6IDB4MDBiNywgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBmYjogMHgwMGI5LCAgICAgIyAgU1VQRVJTQ1JJUFQgT05FCiAgICAweDAwZmM6IDB4MDBiMywgICAgICMgIFNVUEVSU0NSSVBUIFRIUkVFCiAgICAweDAwZmQ6IDB4MDBiMiwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGZlOiAweDI1YTAsICAgICAjICBCTEFDSyBTUVVBUkUKICAgIDB4MDBmZjogMHgwMGEwLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKfSkKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDAwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDAwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDAwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDAwMDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDAwMDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDAwMDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwMDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwMDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDAwMDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MDAwYSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwMDBiIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwMDBjIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDAwMGQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MDAwZSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwMDBmIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MDAxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MDAxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgwMDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDAwMTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgwMDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgwMDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MDAxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MDAxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MDAxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgwMDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgwMDFhIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgwMDFiIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDAwMWMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgwMDFkIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDAwMWUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDAwMWYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgwMDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MDAyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MDAyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDAwMjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgwMDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MDAyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDAwMjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDAwMjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDAwMjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgwMDJhIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MDAyYiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgwMDJjIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gREVMRVRFCiAgICAnXHUwMTA2JyAgICMgIDB4MDA4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgICdceGZjJyAgICAgIyAgMHgwMDgxIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhlOScgICAgICMgIDB4MDA4MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHUwMTAxJyAgICMgIDB4MDA4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgogICAgJ1x4ZTQnICAgICAjICAweDAwODQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMjMnICAgIyAgMHgwMDg1IC0+IExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQogICAgJ1x4ZTUnICAgICAjICAweDAwODYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHUwMTA3JyAgICMgIDB4MDA4NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEFDVVRFCiAgICAnXHUwMTQyJyAgICMgIDB4MDA4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x1MDExMycgICAjICAweDAwODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KICAgICdcdTAxNTYnICAgIyAgMHgwMDhhIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBCiAgICAnXHUwMTU3JyAgICMgIDB4MDA4YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKICAgICdcdTAxMmInICAgIyAgMHgwMDhjIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCiAgICAnXHUwMTc5JyAgICMgIDB4MDA4ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKICAgICdceGM0JyAgICAgIyAgMHgwMDhlIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGM1JyAgICAgIyAgMHgwMDhmIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjOScgICAgICMgIDB4MDA5MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGU2JyAgICAgIyAgMHgwMDkxIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIEFFCiAgICAnXHhjNicgICAgICMgIDB4MDA5MiAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAnXHUwMTRkJyAgICMgIDB4MDA5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgogICAgJ1x4ZjYnICAgICAjICAweDAwOTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMjInICAgIyAgMHgwMDk1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiAgICAnXHhhMicgICAgICMgIDB4MDA5NiAtPiBDRU5UIFNJR04KICAgICdcdTAxNWEnICAgIyAgMHgwMDk3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgJ1x1MDE1YicgICAjICAweDAwOTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgJ1x4ZDYnICAgICAjICAweDAwOTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZGMnICAgICAjICAweDAwOWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjgnICAgICAjICAweDAwOWIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGEzJyAgICAgIyAgMHgwMDljIC0+IFBPVU5EIFNJR04KICAgICdceGQ4JyAgICAgIyAgMHgwMDlkIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGQ3JyAgICAgIyAgMHgwMDllIC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdceGE0JyAgICAgIyAgMHgwMDlmIC0+IENVUlJFTkNZIFNJR04KICAgICdcdTAxMDAnICAgIyAgMHgwMGEwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KICAgICdcdTAxMmEnICAgIyAgMHgwMGExIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KICAgICdceGYzJyAgICAgIyAgMHgwMGEyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdcdTAxN2InICAgIyAgMHgwMGEzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgICdcdTAxN2MnICAgIyAgMHgwMGE0IC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUwMTdhJyAgICMgIDB4MDBhNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCiAgICAnXHUyMDFkJyAgICMgIDB4MDBhNiAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGE2JyAgICAgIyAgMHgwMGE3IC0+IEJST0tFTiBCQVIKICAgICdceGE5JyAgICAgIyAgMHgwMGE4IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHhhZScgICAgICMgIDB4MDBhOSAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGFjJyAgICAgIyAgMHgwMGFhIC0+IE5PVCBTSUdOCiAgICAnXHhiZCcgICAgICMgIDB4MDBhYiAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJjJyAgICAgIyAgMHgwMGFjIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x1MDE0MScgICAjICAweDAwYWQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x4YWInICAgICAjICAweDAwYWUgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgIyAgMHgwMGFmIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjU5MScgICAjICAweDAwYjAgLT4gTElHSFQgU0hBREUKICAgICdcdTI1OTInICAgIyAgMHgwMGIxIC0+IE1FRElVTSBTSEFERQogICAgJ1x1MjU5MycgICAjICAweDAwYjIgLT4gREFSSyBTSEFERQogICAgJ1x1MjUwMicgICAjICAweDAwYjMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAnXHUyNTI0JyAgICMgIDB4MDBiNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTAxMDQnICAgIyAgMHgwMGI1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgICdcdTAxMGMnICAgIyAgMHgwMGI2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgogICAgJ1x1MDExOCcgICAjICAweDAwYjcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x1MDExNicgICAjICAweDAwYjggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHUwMTJlJyAgICMgIDB4MDBiZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCiAgICAnXHUwMTYwJyAgICMgIDB4MDBiZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdcdTI1MTAnICAgIyAgMHgwMGJmIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAnXHUyNTE0JyAgICMgIDB4MDBjMCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTM0JyAgICMgIDB4MDBjMSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1MmMnICAgIyAgMHgwMGMyIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTFjJyAgICMgIDB4MDBjMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTAwJyAgICMgIDB4MDBjNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgJ1x1MjUzYycgICAjICAweDAwYzUgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHUwMTcyJyAgICMgIDB4MDBjNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCiAgICAnXHUwMTZhJyAgICMgIDB4MDBjNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCiAgICAnXHUyNTVhJyAgICMgIDB4MDBjOCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgJ1x1MjU1NCcgICAjICAweDAwYzkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU2OScgICAjICAweDAwY2EgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NicgICAjICAweDAwY2IgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTYwJyAgICMgIDB4MDBjYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjU1MCcgICAjICAweDAwY2QgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAnXHUyNTZjJyAgICMgIDB4MDBjZSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHUwMTdkJyAgICMgIDB4MDBjZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdcdTAxMDUnICAgIyAgMHgwMGQwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHUwMTBkJyAgICMgIDB4MDBkMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAnXHUwMTE5JyAgICMgIDB4MDBkMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x1MDExNycgICAjICAweDAwZDMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKICAgICdcdTAxMmYnICAgIyAgMHgwMGQ0IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLCiAgICAnXHUwMTYxJyAgICMgIDB4MDBkNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUwMTczJyAgICMgIDB4MDBkNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgJ1x1MDE2YicgICAjICAweDAwZDcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KICAgICdcdTAxN2UnICAgIyAgMHgwMGQ4IC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHUyNThjJyAgICMgIDB4MDBkZCAtPiBMRUZUIEhBTEYgQkxPQ0sKICAgICdcdTI1OTAnICAgIyAgMHgwMGRlIC0+IFJJR0hUIEhBTEYgQkxPQ0sKICAgICdcdTI1ODAnICAgIyAgMHgwMGRmIC0+IFVQUEVSIEhBTEYgQkxPQ0sKICAgICdceGQzJyAgICAgIyAgMHgwMGUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZGYnICAgICAjICAweDAwZTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMgKEdFUk1BTikKICAgICdcdTAxNGMnICAgIyAgMHgwMGUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgICdcdTAxNDMnICAgIyAgMHgwMGUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgJ1x4ZjUnICAgICAjICAweDAwZTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4ZDUnICAgICAjICAweDAwZTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhiNScgICAgICMgIDB4MDBlNiAtPiBNSUNSTyBTSUdOCiAgICAnXHUwMTQ0JyAgICMgIDB4MDBlNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEFDVVRFCiAgICAnXHUwMTM2JyAgICMgIDB4MDBlOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQQogICAgJ1x1MDEzNycgICAjICAweDAwZTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBCiAgICAnXHUwMTNiJyAgICMgIDB4MDBlYSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0VESUxMQQogICAgJ1x1MDEzYycgICAjICAweDAwZWIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiAgICAnXHUwMTQ2JyAgICMgIDB4MDBlYyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKICAgICdcdTAxMTInICAgIyAgMHgwMGVkIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KICAgICdcdTAxNDUnICAgIyAgMHgwMGVlIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiAgICAnXHUyMDE5JyAgICMgIDB4MDBlZiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGFkJyAgICAgIyAgMHgwMGYwIC0+IFNPRlQgSFlQSEVOCiAgICAnXHhiMScgICAgICMgIDB4MDBmMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTIwMWMnICAgIyAgMHgwMGYyIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiZScgICAgICMgIDB4MDBmMyAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdceGI2JyAgICAgIyAgMHgwMGY0IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YTcnICAgICAjICAweDAwZjUgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhmNycgICAgICMgIDB4MDBmNiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUyMDFlJyAgICMgIDB4MDBmNyAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdceGIwJyAgICAgIyAgMHgwMGY4IC0+IERFR1JFRSBTSUdOCiAgICAnXHUyMjE5JyAgICMgIDB4MDBmOSAtPiBCVUxMRVQgT1BFUkFUT1IKICAgICdceGI3JyAgICAgIyAgMHgwMGZhIC0+IE1JRERMRSBET1QKICAgICdceGI5JyAgICAgIyAgMHgwMGZiIC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x4YjMnICAgICAjICAweDAwZmMgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGIyJyAgICAgIyAgMHgwMGZkIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x1MjVhMCcgICAjICAweDAwZmUgLT4gQkxBQ0sgU1FVQVJFCiAgICAnXHhhMCcgICAgICMgIDB4MDBmZiAtPiBOTy1CUkVBSyBTUEFDRQopCgojIyMgRW5jb2RpbmcgTWFwCgplbmNvZGluZ19tYXAgPSB7CiAgICAweDAwMDA6IDB4MDAwMCwgICAgICMgIE5VTEwKICAgIDB4MDAwMTogMHgwMDAxLCAgICAgIyAgU1RBUlQgT0YgSEVBRElORwogICAgMHgwMDAyOiAweDAwMDIsICAgICAjICBTVEFSVCBPRiBURVhUCiAgICAweDAwMDM6IDB4MDAwMywgICAgICMgIEVORCBPRiBURVhUCiAgICAweDAwMDQ6IDB4MDAwNCwgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04KICAgIDB4MDAwNTogMHgwMDA1LCAgICAgIyAgRU5RVUlSWQogICAgMHgwMDA2OiAweDAwMDYsICAgICAjICBBQ0tOT1dMRURHRQogICAgMHgwMDA3OiAweDAwMDcsICAgICAjICBCRUxMCiAgICAweDAwMDg6IDB4MDAwOCwgICAgICMgIEJBQ0tTUEFDRQogICAgMHgwMDA5OiAweDAwMDksICAgICAjICBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgIDB4MDAwYTogMHgwMDBhLCAgICAgIyAgTElORSBGRUVECiAgICAweDAwMGI6IDB4MDAwYiwgICAgICMgIFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgIDB4MDAwYzogMHgwMDBjLCAgICAgIyAgRk9STSBGRUVECiAgICAweDAwMGQ6IDB4MDAwZCwgICAgICMgIENBUlJJQUdFIFJFVFVSTgogICAgMHgwMDBlOiAweDAwMGUsICAgICAjICBTSElGVCBPVVQKICAgIDB4MDAwZjogMHgwMDBmLCAgICAgIyAgU0hJRlQgSU4KICAgIDB4MDAxMDogMHgwMDEwLCAgICAgIyAgREFUQSBMSU5LIEVTQ0FQRQogICAgMHgwMDExOiAweDAwMTEsICAgICAjICBERVZJQ0UgQ09OVFJPTCBPTkUKICAgIDB4MDAxMjogMHgwMDEyLCAgICAgIyAgREVWSUNFIENPTlRST0wgVFdPCiAgICAweDAwMTM6IDB4MDAxMywgICAgICMgIERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAweDAwMTQ6IDB4MDAxNCwgICAgICMgIERFVklDRSBDT05UUk9MIEZPVVIKICAgIDB4MDAxNTogMHgwMDE1LCAgICAgIyAgTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgIDB4MDAxNjogMHgwMDE2LCAgICAgIyAgU1lOQ0hST05PVVMgSURMRQogICAgMHgwMDE3OiAweDAwMTcsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAweDAwMTg6IDB4MDAxOCwgICAgICMgIENBTkNFTAogICAgMHgwMDE5OiAweDAwMTksICAgICAjICBFTkQgT0YgTUVESVVNCiAgICAweDAwMWE6IDB4MDAxYSwgICAgICMgIFNVQlNUSVRVVEUKICAgIDB4MDAxYjogMHgwMDFiLCAgICAgIyAgRVNDQVBFCiAgICAweDAwMWM6IDB4MDAxYywgICAgICMgIEZJTEUgU0VQQVJBVE9SCiAgICAweDAwMWQ6IDB4MDAxZCwgICAgICMgIEdST1VQIFNFUEFSQVRPUgogICAgMHgwMDFlOiAweDAwMWUsICAgICAjICBSRUNPUkQgU0VQQVJBVE9SCiAgICAweDAwMWY6IDB4MDAxZiwgICAgICMgIFVOSVQgU0VQQVJBVE9SCiAgICAweDAwMjA6IDB4MDAyMCwgICAgICMgIFNQQUNFCiAgICAweDAwMjE6IDB4MDAyMSwgICAgICMgIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDAyMjogMHgwMDIyLCAgICAgIyAgUVVPVEFUSU9OIE1BUksKICAgIDB4MDAyMzogMHgwMDIzLCAgICAgIyAgTlVNQkVSIFNJR04KICAgIDB4MDAyNDogMHgwMDI0LCAgICAgIyAgRE9MTEFSIFNJR04KICAgIDB4MDAyNTogMHgwMDI1LCAgICAgIyAgUEVSQ0VOVCBTSUdOCiAgICAweDAwMjY6IDB4MDAyNiwgICAgICMgIEFNUEVSU0FORAogICAgMHgwMDI3OiAweDAwMjcsICAgICAjICBBUE9TVFJPUEhFCiAgICAweDAwMjg6IDB4MDAyOCwgICAgICMgIExFRlQgUEFSRU5USEVTSVMKICAgIDB4MDAyOTogMHgwMDI5LCAgICAgIyAgUklHSFQgUEFSRU5USEVTSVMKICAgIDB4MDAyYTogMHgwMDJhLCAgICAgIyAgQVNURVJJU0sKICAgIDB4MDAyYjogMHgwMDJiLCAgICAgIyAgUExVUyBTSUdOCiAgICAweDAwMmM6IDB4MDAyYywgICAgICMgIENPTU1BCiAgICAweDAwMmQ6IDB4MDAyZCwgICAgICMgIEhZUEhFTi1NSU5VUwogICAgMHgwMDJlOiAweDAwMmUsICAgICAjICBGVUxMIFNUT1AKICAgIDB4MDAyZjogMHgwMDJmLCAgICAgIyAgU09MSURVUwogICAgMHgwMDMwOiAweDAwMzAsICAgICAjICBESUdJVCBaRVJPCiAgICAweDAwMzE6IDB4MDAzMSwgICAgICMgIERJR0lUIE9ORQogICAgMHgwMDMyOiAweDAwMzIsICAgICAjICBESUdJVCBUV08KICAgIDB4MDAzMzogMHgwMDMzLCAgICAgIyAgRElHSVQgVEhSRUUKICAgIDB4MDAzNDogMHgwMDM0LCAgICAgIyAgRElHSVQgRk9VUgogICAgMHgwMDM1OiAweDAwMzUsICAgICAjICBESUdJVCBGSVZFCiAgICAweDAwMzY6IDB4MDAzNiwgICAgICMgIERJR0lUIFNJWAogICAgMHgwMDM3OiAweDAwMzcsICAgICAjICBESUdJVCBTRVZFTgogICAgMHgwMDM4OiAweDAwMzgsICAgICAjICBESUdJVCBFSUdIVAogICAgMHgwMDM5OiAweDAwMzksICAgICAjICBESUdJVCBOSU5FCiAgICAweDAwM2E6IDB4MDAzYSwgICAgICMgIENPTE9OCiAgICAweDAwM2I6IDB4MDAzYiwgICAgICMgIFNFTUlDT0xPTgogICAgMHgwMDNjOiAweDAwM2MsICAgICAjICBMRVNTLVRIQU4gU0lHTgogICAgMHgwMDNkOiAweDAwM2QsICAgICAjICBFUVVBTFMgU0lHTgogICAgMHgwMDNlOiAweDAwM2UsICAgICAjICBHUkVBVEVSLVRIQU4gU0lHTgogICAgMHgwMDNmOiAweDAwM2YsICAgICAjICBRVUVTVElPTiBNQVJLCiAgICAweDAwNDA6IDB4MDA0MCwgICAgICMgIENPTU1FUkNJQUwgQVQKICAgIDB4MDA0MTogMHgwMDQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgMHgwMDQyOiAweDAwNDIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAweDAwNDM6IDB4MDA0MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgIDB4MDA0NDogMHgwMDQ0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgMHgwMDQ1OiAweDAwNDUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAweDAwNDY6IDB4MDA0NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgIDB4MDA0NzogMHgwMDQ3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgMHgwMDQ4OiAweDAwNDgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAweDAwNDk6IDB4MDA0OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgIDB4MDA0YTogMHgwMDRhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgMHgwMDRiOiAweDAwNGIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAweDAwNGM6IDB4MDA0YywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgIDB4MDA0ZDogMHgwMDRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgMHgwMDRlOiAweDAwNGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAweDAwNGY6IDB4MDA0ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgIDB4MDA1MDogMHgwMDUwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgMHgwMDUxOiAweDAwNTEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAweDAwNTI6IDB4MDA1MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgIDB4MDA1MzogMHgwMDUzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgMHgwMDU0OiAweDAwNTQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAweDAwNTU6IDB4MDA1NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgIDB4MDA1NjogMHgwMDU2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgMHgwMDU3OiAweDAwNTcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAweDAwNTg6IDB4MDA1OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgIDB4MDA1OTogMHgwMDU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgMHgwMDVhOiAweDAwNWEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAweDAwNWI6IDB4MDA1YiwgICAgICMgIExFRlQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1YzogMHgwMDVjLCAgICAgIyAgUkVWRVJTRSBTT0xJRFVTCiAgICAweDAwNWQ6IDB4MDA1ZCwgICAgICMgIFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWU6IDB4MDA1ZSwgICAgICMgIENJUkNVTUZMRVggQUNDRU5UCiAgICAweDAwNWY6IDB4MDA1ZiwgICAgICMgIExPVyBMSU5FCiAgICAweDAwNjA6IDB4MDA2MCwgICAgICMgIEdSQVZFIEFDQ0VOVAogICAgMHgwMDYxOiAweDAwNjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgMHgwMDYyOiAweDAwNjIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgMHgwMDYzOiAweDAwNjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgMHgwMDY0OiAweDAwNjQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgMHgwMDY1OiAweDAwNjUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgMHgwMDY2OiAweDAwNjYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgMHgwMDY3OiAweDAwNjcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgMHgwMDY4OiAweDAwNjgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgMHgwMDY5OiAweDAwNjksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgMHgwMDZhOiAweDAwNmEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgMHgwMDZiOiAweDAwNmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgMHgwMDZjOiAweDAwNmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgMHgwMDZkOiAweDAwNmQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgMHgwMDZlOiAweDAwNmUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgMHgwMDZmOiAweDAwNmYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgMHgwMDcwOiAweDAwNzAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgMHgwMDcxOiAweDAwNzEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgMHgwMDcyOiAweDAwNzIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgMHgwMDczOiAweDAwNzMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgMHgwMDc0OiAweDAwNzQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgMHgwMDc1OiAweDAwNzUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgMHgwMDc2OiAweDAwNzYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgMHgwMDc3OiAweDAwNzcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgMHgwMDc4OiAweDAwNzgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgMHgwMDc5OiAweDAwNzksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgMHgwMDdhOiAweDAwN2EsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgMHgwMDdiOiAweDAwN2IsICAgICAjICBMRUZUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3YzogMHgwMDdjLCAgICAgIyAgVkVSVElDQUwgTElORQogICAgMHgwMDdkOiAweDAwN2QsICAgICAjICBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2U6IDB4MDA3ZSwgICAgICMgIFRJTERFCiAgICAweDAwN2Y6IDB4MDA3ZiwgICAgICMgIERFTEVURQogICAgMHgwMGEwOiAweDAwZmYsICAgICAjICBOTy1CUkVBSyBTUEFDRQogICAgMHgwMGEyOiAweDAwOTYsICAgICAjICBDRU5UIFNJR04KICAgIDB4MDBhMzogMHgwMDljLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMGE0OiAweDAwOWYsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwYTY6IDB4MDBhNywgICAgICMgIEJST0tFTiBCQVIKICAgIDB4MDBhNzogMHgwMGY1LCAgICAgIyAgU0VDVElPTiBTSUdOCiAgICAweDAwYTk6IDB4MDBhOCwgICAgICMgIENPUFlSSUdIVCBTSUdOCiAgICAweDAwYWI6IDB4MDBhZSwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWM6IDB4MDBhYSwgICAgICMgIE5PVCBTSUdOCiAgICAweDAwYWQ6IDB4MDBmMCwgICAgICMgIFNPRlQgSFlQSEVOCiAgICAweDAwYWU6IDB4MDBhOSwgICAgICMgIFJFR0lTVEVSRUQgU0lHTgogICAgMHgwMGIwOiAweDAwZjgsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGIxOiAweDAwZjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBiMjogMHgwMGZkLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwYjM6IDB4MDBmYywgICAgICMgIFNVUEVSU0NSSVBUIFRIUkVFCiAgICAweDAwYjU6IDB4MDBlNiwgICAgICMgIE1JQ1JPIFNJR04KICAgIDB4MDBiNjogMHgwMGY0LCAgICAgIyAgUElMQ1JPVyBTSUdOCiAgICAweDAwYjc6IDB4MDBmYSwgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBiOTogMHgwMGZiLCAgICAgIyAgU1VQRVJTQ1JJUFQgT05FCiAgICAweDAwYmI6IDB4MDBhZiwgICAgICMgIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGJjOiAweDAwYWMsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgIDB4MDBiZDogMHgwMGFiLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAweDAwYmU6IDB4MDBmMywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgMHgwMGM0OiAweDAwOGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwYzU6IDB4MDA4ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwYzY6IDB4MDA5MiwgICAgICMgIExBVElOIENBUElUQUwgTElHQVRVUkUgQUUKICAgIDB4MDBjOTogMHgwMDkwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwZDM6IDB4MDBlMCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGQ1OiAweDAwZTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgIDB4MDBkNjogMHgwMDk5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgMHgwMGQ3OiAweDAwOWUsICAgICAjICBNVUxUSVBMSUNBVElPTiBTSUdOCiAgICAweDAwZDg6IDB4MDA5ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDBkYzogMHgwMDlhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGRmOiAweDAwZTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR0VSTUFOKQogICAgMHgwMGU0OiAweDAwODQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGU1OiAweDAwODYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDBlNjogMHgwMDkxLCAgICAgIyAgTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgIDB4MDBlOTogMHgwMDgyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMGYzOiAweDAwYTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZjU6IDB4MDBlNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgIDB4MDBmNjogMHgwMDk0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDBmNzogMHgwMGY2LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY4OiAweDAwOWIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMGZjOiAweDAwODEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMTAwOiAweDAwYTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OCiAgICAweDAxMDE6IDB4MDA4MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OCiAgICAweDAxMDQ6IDB4MDBiNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgIDB4MDEwNTogMHgwMGQwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgIDB4MDEwNjogMHgwMDgwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCiAgICAweDAxMDc6IDB4MDA4NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgIDB4MDEwYzogMHgwMGI2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAweDAxMGQ6IDB4MDBkMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KICAgIDB4MDExMjogMHgwMGVkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgMHgwMTEzOiAweDAwODksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgMHgwMTE2OiAweDAwYjgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCiAgICAweDAxMTc6IDB4MDBkMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCiAgICAweDAxMTg6IDB4MDBiNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgIDB4MDExOTogMHgwMGQyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgIDB4MDEyMjogMHgwMDk1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKICAgIDB4MDEyMzogMHgwMDg1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiAgICAweDAxMmE6IDB4MDBhMSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KICAgIDB4MDEyYjogMHgwMDhjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KICAgIDB4MDEyZTogMHgwMGJkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSwogICAgMHgwMTJmOiAweDAwZDQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSwogICAgMHgwMTM2OiAweDAwZTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQQogICAgMHgwMTM3OiAweDAwZTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEEKICAgIDB4MDEzYjogMHgwMGVhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEEKICAgIDB4MDEzYzogMHgwMGViLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiAgICAweDAxNDE6IDB4MDBhZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKICAgIDB4MDE0MjogMHgwMDg4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKICAgIDB4MDE0MzogMHgwMGUzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCiAgICAweDAxNDQ6IDB4MDBlNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKICAgIDB4MDE0NTogMHgwMGVlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENFRElMTEEKICAgIDB4MDE0NjogMHgwMGVjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiAgICAweDAxNGM6IDB4MDBlMiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgIDB4MDE0ZDogMHgwMDkzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgIDB4MDE1NjogMHgwMDhhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENFRElMTEEKICAgIDB4MDE1NzogMHgwMDhiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDRURJTExBCiAgICAweDAxNWE6IDB4MDA5NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgMHgwMTViOiAweDAwOTgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCiAgICAweDAxNjA6IDB4MDBiZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgMHgwMTYxOiAweDAwZDUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAweDAxNmE6IDB4MDBjNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KICAgIDB4MDE2YjogMHgwMGQ3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KICAgIDB4MDE3MjogMHgwMGM2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgMHgwMTczOiAweDAwZDYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgMHgwMTc5OiAweDAwOGQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKICAgIDB4MDE3YTogMHgwMGE1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgMHgwMTdiOiAweDAwYTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAweDAxN2M6IDB4MDBhNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAweDAxN2Q6IDB4MDBjZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgMHgwMTdlOiAweDAwZDgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAweDIwMTk6IDB4MDBlZiwgICAgICMgIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgyMDFjOiAweDAwZjIsICAgICAjICBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgMHgyMDFkOiAweDAwYTYsICAgICAjICBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MjAxZTogMHgwMGY3LCAgICAgIyAgRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAweDIyMTk6IDB4MDBmOSwgICAgICMgIEJVTExFVCBPUEVSQVRPUgogICAgMHgyNTAwOiAweDAwYzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgyNTAyOiAweDAwYjMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MjUwYzogMHgwMGRhLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDBiZiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDI1MTQ6IDB4MDBjMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MjUxODogMHgwMGQ5LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDBjMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjUyNDogMHgwMGI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1MmM6IDB4MDBjMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDBjMSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTNjOiAweDAwYzUsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU1MDogMHgwMGNkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDI1NTE6IDB4MDBiYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MjU1NDogMHgwMGM5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgyNTU3OiAweDAwYmIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MjU1YTogMHgwMGM4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MjU1ZDogMHgwMGJjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgyNTYwOiAweDAwY2MsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTYzOiAweDAwYjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1NjY6IDB4MDBjYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTY5OiAweDAwY2EsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NmM6IDB4MDBjZSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU4MDogMHgwMGRmLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgyNTg0OiAweDAwZGMsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDI1ODg6IDB4MDBkYiwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MjU4YzogMHgwMGRkLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDI1OTA6IDB4MDBkZSwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MjU5MTogMHgwMGIwLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MjU5MjogMHgwMGIxLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDI1OTM6IDB4MDBiMiwgICAgICMgIERBUksgU0hBREUKICAgIDB4MjVhMDogMHgwMGZlLCAgICAgIyAgQkxBQ0sgU1FVQVJFCn0KUEsDBBQAAAAAAAIgo1Y81tsvOYUAADmFAAASAAAAZW5jb2RpbmdzL2NwODUwLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnVkVORE9SUy9NSUNTRlQvUEMvQ1A4NTAuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwODUwJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgojIyMgRGVjb2RpbmcgTWFwCgpkZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCmRlY29kaW5nX21hcC51cGRhdGUoewogICAgMHgwMDgwOiAweDAwYzcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMDgxOiAweDAwZmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDgyOiAweDAwZTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwODM6IDB4MDBlMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDg0OiAweDAwZTQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDg1OiAweDAwZTAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwODY6IDB4MDBlNSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgMHgwMDg3OiAweDAwZTcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDA4ODogMHgwMGVhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwODk6IDB4MDBlYiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAweDAwOGE6IDB4MDBlOCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDA4YjogMHgwMGVmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4YzogMHgwMGVlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOGQ6IDB4MDBlYywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgIDB4MDA4ZTogMHgwMGM0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDhmOiAweDAwYzUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgMHgwMDkwOiAweDAwYzksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDA5MTogMHgwMGU2LCAgICAgIyAgTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgIDB4MDA5MjogMHgwMGM2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBBRQogICAgMHgwMDkzOiAweDAwZjQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5NDogMHgwMGY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5NTogMHgwMGYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMDk2OiAweDAwZmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5NzogMHgwMGY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgMHgwMDk4OiAweDAwZmYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDk5OiAweDAwZDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwOWE6IDB4MDBkYywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YjogMHgwMGY4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDA5YzogMHgwMGEzLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMDlkOiAweDAwZDgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAweDAwOWU6IDB4MDBkNywgICAgICMgIE1VTFRJUExJQ0FUSU9OIFNJR04KICAgIDB4MDA5ZjogMHgwMTkyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAweDAwYTA6IDB4MDBlMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBhMTogMHgwMGVkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgMHgwMGEyOiAweDAwZjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwYTM6IDB4MDBmYSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBhNDogMHgwMGYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGE1OiAweDAwZDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBhNjogMHgwMGFhLCAgICAgIyAgRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBhNzogMHgwMGJhLCAgICAgIyAgTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwYTg6IDB4MDBiZiwgICAgICMgIElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgIDB4MDBhOTogMHgwMGFlLCAgICAgIyAgUkVHSVNURVJFRCBTSUdOCiAgICAweDAwYWE6IDB4MDBhYywgICAgICMgIE5PVCBTSUdOCiAgICAweDAwYWI6IDB4MDBiZCwgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgMHgwMGFjOiAweDAwYmMsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgIDB4MDBhZDogMHgwMGExLCAgICAgIyAgSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMGFlOiAweDAwYWIsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGFmOiAweDAwYmIsICAgICAjICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBiMDogMHgyNTkxLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MDBiMTogMHgyNTkyLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDAwYjI6IDB4MjU5MywgICAgICMgIERBUksgU0hBREUKICAgIDB4MDBiMzogMHgyNTAyLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAweDAwYjQ6IDB4MjUyNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGI1OiAweDAwYzEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBiNjogMHgwMGMyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBiNzogMHgwMGMwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwYjg6IDB4MDBhOSwgICAgICMgIENPUFlSSUdIVCBTSUdOCiAgICAweDAwYjk6IDB4MjU2MywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiYTogMHgyNTUxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgwMGJiOiAweDI1NTcsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MDBiYzogMHgyNTVkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgwMGJkOiAweDAwYTIsICAgICAjICBDRU5UIFNJR04KICAgIDB4MDBiZTogMHgwMGE1LCAgICAgIyAgWUVOIFNJR04KICAgIDB4MDBiZjogMHgyNTEwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MDBjMDogMHgyNTE0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgwMGMxOiAweDI1MzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMjogMHgyNTJjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMzogMHgyNTFjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGM0OiAweDI1MDAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgwMGM1OiAweDI1M2MsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjNjogMHgwMGUzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgMHgwMGM3OiAweDAwYzMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgIDB4MDBjODogMHgyNTVhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MDBjOTogMHgyNTU0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgwMGNhOiAweDI1NjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2I6IDB4MjU2NiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNjOiAweDI1NjAsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGNkOiAweDI1NTAsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgIDB4MDBjZTogMHgyNTZjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNmOiAweDAwYTQsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwZDA6IDB4MDBmMCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFVEgKICAgIDB4MDBkMTogMHgwMGQwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRICiAgICAweDAwZDI6IDB4MDBjYSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZDM6IDB4MDBjYiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkNDogMHgwMGM4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAweDAwZDU6IDB4MDEzMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkKICAgIDB4MDBkNjogMHgwMGNkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwZDc6IDB4MDBjZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZDg6IDB4MDBjZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkOTogMHgyNTE4LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDAwZGE6IDB4MjUwYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgwMGRiOiAweDI1ODgsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDAwZGM6IDB4MjU4NCwgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MDBkZDogMHgwMGE2LCAgICAgIyAgQlJPS0VOIEJBUgogICAgMHgwMGRlOiAweDAwY2MsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgIDB4MDBkZjogMHgyNTgwLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgwMGUwOiAweDAwZDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBlMTogMHgwMGRmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgIDB4MDBlMjogMHgwMGQ0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlMzogMHgwMGQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAweDAwZTQ6IDB4MDBmNSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgIDB4MDBlNTogMHgwMGQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAweDAwZTY6IDB4MDBiNSwgICAgICMgIE1JQ1JPIFNJR04KICAgIDB4MDBlNzogMHgwMGZlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOCiAgICAweDAwZTg6IDB4MDBkZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOCiAgICAweDAwZTk6IDB4MDBkYSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGVhOiAweDAwZGIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGViOiAweDAwZDksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgIDB4MDBlYzogMHgwMGZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgMHgwMGVkOiAweDAwZGQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgIDB4MDBlZTogMHgwMGFmLCAgICAgIyAgTUFDUk9OCiAgICAweDAwZWY6IDB4MDBiNCwgICAgICMgIEFDVVRFIEFDQ0VOVAogICAgMHgwMGYwOiAweDAwYWQsICAgICAjICBTT0ZUIEhZUEhFTgogICAgMHgwMGYxOiAweDAwYjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBmMjogMHgyMDE3LCAgICAgIyAgRE9VQkxFIExPVyBMSU5FCiAgICAweDAwZjM6IDB4MDBiZSwgICAgICMgIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgMHgwMGY0OiAweDAwYjYsICAgICAjICBQSUxDUk9XIFNJR04KICAgIDB4MDBmNTogMHgwMGE3LCAgICAgIyAgU0VDVElPTiBTSUdOCiAgICAweDAwZjY6IDB4MDBmNywgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmNzogMHgwMGI4LCAgICAgIyAgQ0VESUxMQQogICAgMHgwMGY4OiAweDAwYjAsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGY5OiAweDAwYTgsICAgICAjICBESUFFUkVTSVMKICAgIDB4MDBmYTogMHgwMGI3LCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGZiOiAweDAwYjksICAgICAjICBTVVBFUlNDUklQVCBPTkUKICAgIDB4MDBmYzogMHgwMGIzLCAgICAgIyAgU1VQRVJTQ1JJUFQgVEhSRUUKICAgIDB4MDBmZDogMHgwMGIyLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdceGM3JyAgICAgIyAgMHgwMDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhmYycgICAgICMgIDB4MDA4MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTknICAgICAjICAweDAwODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZTInICAgICAjICAweDAwODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlNCcgICAgICMgIDB4MDA4NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTAnICAgICAjICAweDAwODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTUnICAgICAjICAweDAwODYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNycgICAgICMgIDB4MDA4NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGVhJyAgICAgIyAgMHgwMDg4IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDAwODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGU4JyAgICAgIyAgMHgwMDhhIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGVmJyAgICAgIyAgMHgwMDhiIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhlZScgICAgICMgIDB4MDA4YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVjJyAgICAgIyAgMHgwMDhkIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGM0JyAgICAgIyAgMHgwMDhlIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGM1JyAgICAgIyAgMHgwMDhmIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjOScgICAgICMgIDB4MDA5MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGU2JyAgICAgIyAgMHgwMDkxIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIEFFCiAgICAnXHhjNicgICAgICMgIDB4MDA5MiAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAnXHhmNCcgICAgICMgIDB4MDA5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHgwMDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmMicgICAgICMgIDB4MDA5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhmYicgICAgICMgIDB4MDA5NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGY5JyAgICAgIyAgMHgwMDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGZmJyAgICAgIyAgMHgwMDk4IC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNicgICAgICMgIDB4MDA5OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkYycgICAgICMgIDB4MDA5YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhmOCcgICAgICMgIDB4MDA5YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4YTMnICAgICAjICAweDAwOWMgLT4gUE9VTkQgU0lHTgogICAgJ1x4ZDgnICAgICAjICAweDAwOWQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4ZDcnICAgICAjICAweDAwOWUgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x1MDE5MicgICAjICAweDAwOWYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAnXHhlMScgICAgICMgIDB4MDBhMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlZCcgICAgICMgIDB4MDBhMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhmMycgICAgICMgIDB4MDBhMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmYScgICAgICMgIDB4MDBhMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmMScgICAgICMgIDB4MDBhNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhkMScgICAgICMgIDB4MDBhNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGFhJyAgICAgIyAgMHgwMGE2IC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYScgICAgICMgIDB4MDBhNyAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJmJyAgICAgIyAgMHgwMGE4IC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdceGFlJyAgICAgIyAgMHgwMGE5IC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YWMnICAgICAjICAweDAwYWEgLT4gTk9UIFNJR04KICAgICdceGJkJyAgICAgIyAgMHgwMGFiIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmMnICAgICAjICAweDAwYWMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhhMScgICAgICMgIDB4MDBhZCAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAnXHhhYicgICAgICMgIDB4MDBhZSAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmInICAgICAjICAweDAwYWYgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyNTkxJyAgICMgIDB4MDBiMCAtPiBMSUdIVCBTSEFERQogICAgJ1x1MjU5MicgICAjICAweDAwYjEgLT4gTUVESVVNIFNIQURFCiAgICAnXHUyNTkzJyAgICMgIDB4MDBiMiAtPiBEQVJLIFNIQURFCiAgICAnXHUyNTAyJyAgICMgIDB4MDBiMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgICdcdTI1MjQnICAgIyAgMHgwMGI0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x4YzEnICAgICAjICAweDAwYjUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMicgICAgICMgIDB4MDBiNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzAnICAgICAjICAweDAwYjcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhhOScgICAgICMgIDB4MDBiOCAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHhhMicgICAgICMgIDB4MDBiZCAtPiBDRU5UIFNJR04KICAgICdceGE1JyAgICAgIyAgMHgwMGJlIC0+IFlFTiBTSUdOCiAgICAnXHUyNTEwJyAgICMgIDB4MDBiZiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAjICAweDAwYzAgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgJ1x1MjUzNCcgICAjICAweDAwYzEgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTJjJyAgICMgIDB4MDBjMiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUxYycgICAjICAweDAwYzMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjUwMCcgICAjICAweDAwYzQgLT4gQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgICdcdTI1M2MnICAgIyAgMHgwMGM1IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x4ZTMnICAgICAjICAweDAwYzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4YzMnICAgICAjICAweDAwYzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHUyNTVhJyAgICMgIDB4MDBjOCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgJ1x1MjU1NCcgICAjICAweDAwYzkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU2OScgICAjICAweDAwY2EgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NicgICAjICAweDAwY2IgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTYwJyAgICMgIDB4MDBjYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjU1MCcgICAjICAweDAwY2QgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAnXHUyNTZjJyAgICMgIDB4MDBjZSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHhhNCcgICAgICMgIDB4MDBjZiAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHhmMCcgICAgICMgIDB4MDBkMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRVRICiAgICAnXHhkMCcgICAgICMgIDB4MDBkMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEgKICAgICdceGNhJyAgICAgIyAgMHgwMGQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjYicgICAgICMgIDB4MDBkMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhjOCcgICAgICMgIDB4MDBkNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdcdTAxMzEnICAgIyAgMHgwMGQ1IC0+IExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkKICAgICdceGNkJyAgICAgIyAgMHgwMGQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweDAwZDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHgwMGQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHhhNicgICAgICMgIDB4MDBkZCAtPiBCUk9LRU4gQkFSCiAgICAnXHhjYycgICAgICMgIDB4MDBkZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdcdTI1ODAnICAgIyAgMHgwMGRmIC0+IFVQUEVSIEhBTEYgQkxPQ0sKICAgICdceGQzJyAgICAgIyAgMHgwMGUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZGYnICAgICAjICAweDAwZTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgICdceGQ0JyAgICAgIyAgMHgwMGUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkMicgICAgICMgIDB4MDBlMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGY1JyAgICAgIyAgMHgwMGU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGQ1JyAgICAgIyAgMHgwMGU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4YjUnICAgICAjICAweDAwZTYgLT4gTUlDUk8gU0lHTgogICAgJ1x4ZmUnICAgICAjICAweDAwZTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOCiAgICAnXHhkZScgICAgICMgIDB4MDBlOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STgogICAgJ1x4ZGEnICAgICAjICAweDAwZTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4MDBlYSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZDknICAgICAjICAweDAwZWIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmZCcgICAgICMgIDB4MDBlYyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhkZCcgICAgICMgIDB4MDBlZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGFmJyAgICAgIyAgMHgwMGVlIC0+IE1BQ1JPTgogICAgJ1x4YjQnICAgICAjICAweDAwZWYgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhhZCcgICAgICMgIDB4MDBmMCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YjEnICAgICAjICAweDAwZjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHUyMDE3JyAgICMgIDB4MDBmMiAtPiBET1VCTEUgTE9XIExJTkUKICAgICdceGJlJyAgICAgIyAgMHgwMGYzIC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgJ1x4YjYnICAgICAjICAweDAwZjQgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhhNycgICAgICMgIDB4MDBmNSAtPiBTRUNUSU9OIFNJR04KICAgICdceGY3JyAgICAgIyAgMHgwMGY2IC0+IERJVklTSU9OIFNJR04KICAgICdceGI4JyAgICAgIyAgMHgwMGY3IC0+IENFRElMTEEKICAgICdceGIwJyAgICAgIyAgMHgwMGY4IC0+IERFR1JFRSBTSUdOCiAgICAnXHhhOCcgICAgICMgIDB4MDBmOSAtPiBESUFFUkVTSVMKICAgICdceGI3JyAgICAgIyAgMHgwMGZhIC0+IE1JRERMRSBET1QKICAgICdceGI5JyAgICAgIyAgMHgwMGZiIC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x4YjMnICAgICAjICAweDAwZmMgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGIyJyAgICAgIyAgMHgwMGZkIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x1MjVhMCcgICAjICAweDAwZmUgLT4gQkxBQ0sgU1FVQVJFCiAgICAnXHhhMCcgICAgICMgIDB4MDBmZiAtPiBOTy1CUkVBSyBTUEFDRQopCgojIyMgRW5jb2RpbmcgTWFwCgplbmNvZGluZ19tYXAgPSB7CiAgICAweDAwMDA6IDB4MDAwMCwgICAgICMgIE5VTEwKICAgIDB4MDAwMTogMHgwMDAxLCAgICAgIyAgU1RBUlQgT0YgSEVBRElORwogICAgMHgwMDAyOiAweDAwMDIsICAgICAjICBTVEFSVCBPRiBURVhUCiAgICAweDAwMDM6IDB4MDAwMywgICAgICMgIEVORCBPRiBURVhUCiAgICAweDAwMDQ6IDB4MDAwNCwgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04KICAgIDB4MDAwNTogMHgwMDA1LCAgICAgIyAgRU5RVUlSWQogICAgMHgwMDA2OiAweDAwMDYsICAgICAjICBBQ0tOT1dMRURHRQogICAgMHgwMDA3OiAweDAwMDcsICAgICAjICBCRUxMCiAgICAweDAwMDg6IDB4MDAwOCwgICAgICMgIEJBQ0tTUEFDRQogICAgMHgwMDA5OiAweDAwMDksICAgICAjICBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgIDB4MDAwYTogMHgwMDBhLCAgICAgIyAgTElORSBGRUVECiAgICAweDAwMGI6IDB4MDAwYiwgICAgICMgIFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgIDB4MDAwYzogMHgwMDBjLCAgICAgIyAgRk9STSBGRUVECiAgICAweDAwMGQ6IDB4MDAwZCwgICAgICMgIENBUlJJQUdFIFJFVFVSTgogICAgMHgwMDBlOiAweDAwMGUsICAgICAjICBTSElGVCBPVVQKICAgIDB4MDAwZjogMHgwMDBmLCAgICAgIyAgU0hJRlQgSU4KICAgIDB4MDAxMDogMHgwMDEwLCAgICAgIyAgREFUQSBMSU5LIEVTQ0FQRQogICAgMHgwMDExOiAweDAwMTEsICAgICAjICBERVZJQ0UgQ09OVFJPTCBPTkUKICAgIDB4MDAxMjogMHgwMDEyLCAgICAgIyAgREVWSUNFIENPTlRST0wgVFdPCiAgICAweDAwMTM6IDB4MDAxMywgICAgICMgIERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAweDAwMTQ6IDB4MDAxNCwgICAgICMgIERFVklDRSBDT05UUk9MIEZPVVIKICAgIDB4MDAxNTogMHgwMDE1LCAgICAgIyAgTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgIDB4MDAxNjogMHgwMDE2LCAgICAgIyAgU1lOQ0hST05PVVMgSURMRQogICAgMHgwMDE3OiAweDAwMTcsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAweDAwMTg6IDB4MDAxOCwgICAgICMgIENBTkNFTAogICAgMHgwMDE5OiAweDAwMTksICAgICAjICBFTkQgT0YgTUVESVVNCiAgICAweDAwMWE6IDB4MDAxYSwgICAgICMgIFNVQlNUSVRVVEUKICAgIDB4MDAxYjogMHgwMDFiLCAgICAgIyAgRVNDQVBFCiAgICAweDAwMWM6IDB4MDAxYywgICAgICMgIEZJTEUgU0VQQVJBVE9SCiAgICAweDAwMWQ6IDB4MDAxZCwgICAgICMgIEdST1VQIFNFUEFSQVRPUgogICAgMHgwMDFlOiAweDAwMWUsICAgICAjICBSRUNPUkQgU0VQQVJBVE9SCiAgICAweDAwMWY6IDB4MDAxZiwgICAgICMgIFVOSVQgU0VQQVJBVE9SCiAgICAweDAwMjA6IDB4MDAyMCwgICAgICMgIFNQQUNFCiAgICAweDAwMjE6IDB4MDAyMSwgICAgICMgIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDAyMjogMHgwMDIyLCAgICAgIyAgUVVPVEFUSU9OIE1BUksKICAgIDB4MDAyMzogMHgwMDIzLCAgICAgIyAgTlVNQkVSIFNJR04KICAgIDB4MDAyNDogMHgwMDI0LCAgICAgIyAgRE9MTEFSIFNJR04KICAgIDB4MDAyNTogMHgwMDI1LCAgICAgIyAgUEVSQ0VOVCBTSUdOCiAgICAweDAwMjY6IDB4MDAyNiwgICAgICMgIEFNUEVSU0FORAogICAgMHgwMDI3OiAweDAwMjcsICAgICAjICBBUE9TVFJPUEhFCiAgICAweDAwMjg6IDB4MDAyOCwgICAgICMgIExFRlQgUEFSRU5USEVTSVMKICAgIDB4MDAyOTogMHgwMDI5LCAgICAgIyAgUklHSFQgUEFSRU5USEVTSVMKICAgIDB4MDAyYTogMHgwMDJhLCAgICAgIyAgQVNURVJJU0sKICAgIDB4MDAyYjogMHgwMDJiLCAgICAgIyAgUExVUyBTSUdOCiAgICAweDAwMmM6IDB4MDAyYywgICAgICMgIENPTU1BCiAgICAweDAwMmQ6IDB4MDAyZCwgICAgICMgIEhZUEhFTi1NSU5VUwogICAgMHgwMDJlOiAweDAwMmUsICAgICAjICBGVUxMIFNUT1AKICAgIDB4MDAyZjogMHgwMDJmLCAgICAgIyAgU09MSURVUwogICAgMHgwMDMwOiAweDAwMzAsICAgICAjICBESUdJVCBaRVJPCiAgICAweDAwMzE6IDB4MDAzMSwgICAgICMgIERJR0lUIE9ORQogICAgMHgwMDMyOiAweDAwMzIsICAgICAjICBESUdJVCBUV08KICAgIDB4MDAzMzogMHgwMDMzLCAgICAgIyAgRElHSVQgVEhSRUUKICAgIDB4MDAzNDogMHgwMDM0LCAgICAgIyAgRElHSVQgRk9VUgogICAgMHgwMDM1OiAweDAwMzUsICAgICAjICBESUdJVCBGSVZFCiAgICAweDAwMzY6IDB4MDAzNiwgICAgICMgIERJR0lUIFNJWAogICAgMHgwMDM3OiAweDAwMzcsICAgICAjICBESUdJVCBTRVZFTgogICAgMHgwMDM4OiAweDAwMzgsICAgICAjICBESUdJVCBFSUdIVAogICAgMHgwMDM5OiAweDAwMzksICAgICAjICBESUdJVCBOSU5FCiAgICAweDAwM2E6IDB4MDAzYSwgICAgICMgIENPTE9OCiAgICAweDAwM2I6IDB4MDAzYiwgICAgICMgIFNFTUlDT0xPTgogICAgMHgwMDNjOiAweDAwM2MsICAgICAjICBMRVNTLVRIQU4gU0lHTgogICAgMHgwMDNkOiAweDAwM2QsICAgICAjICBFUVVBTFMgU0lHTgogICAgMHgwMDNlOiAweDAwM2UsICAgICAjICBHUkVBVEVSLVRIQU4gU0lHTgogICAgMHgwMDNmOiAweDAwM2YsICAgICAjICBRVUVTVElPTiBNQVJLCiAgICAweDAwNDA6IDB4MDA0MCwgICAgICMgIENPTU1FUkNJQUwgQVQKICAgIDB4MDA0MTogMHgwMDQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgMHgwMDQyOiAweDAwNDIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAweDAwNDM6IDB4MDA0MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgIDB4MDA0NDogMHgwMDQ0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgMHgwMDQ1OiAweDAwNDUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAweDAwNDY6IDB4MDA0NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgIDB4MDA0NzogMHgwMDQ3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgMHgwMDQ4OiAweDAwNDgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAweDAwNDk6IDB4MDA0OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgIDB4MDA0YTogMHgwMDRhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgMHgwMDRiOiAweDAwNGIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAweDAwNGM6IDB4MDA0YywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgIDB4MDA0ZDogMHgwMDRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgMHgwMDRlOiAweDAwNGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAweDAwNGY6IDB4MDA0ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgIDB4MDA1MDogMHgwMDUwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgMHgwMDUxOiAweDAwNTEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAweDAwNTI6IDB4MDA1MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgIDB4MDA1MzogMHgwMDUzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgMHgwMDU0OiAweDAwNTQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAweDAwNTU6IDB4MDA1NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgIDB4MDA1NjogMHgwMDU2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgMHgwMDU3OiAweDAwNTcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAweDAwNTg6IDB4MDA1OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgIDB4MDA1OTogMHgwMDU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgMHgwMDVhOiAweDAwNWEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAweDAwNWI6IDB4MDA1YiwgICAgICMgIExFRlQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1YzogMHgwMDVjLCAgICAgIyAgUkVWRVJTRSBTT0xJRFVTCiAgICAweDAwNWQ6IDB4MDA1ZCwgICAgICMgIFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWU6IDB4MDA1ZSwgICAgICMgIENJUkNVTUZMRVggQUNDRU5UCiAgICAweDAwNWY6IDB4MDA1ZiwgICAgICMgIExPVyBMSU5FCiAgICAweDAwNjA6IDB4MDA2MCwgICAgICMgIEdSQVZFIEFDQ0VOVAogICAgMHgwMDYxOiAweDAwNjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgMHgwMDYyOiAweDAwNjIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgMHgwMDYzOiAweDAwNjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgMHgwMDY0OiAweDAwNjQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgMHgwMDY1OiAweDAwNjUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgMHgwMDY2OiAweDAwNjYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgMHgwMDY3OiAweDAwNjcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgMHgwMDY4OiAweDAwNjgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgMHgwMDY5OiAweDAwNjksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgMHgwMDZhOiAweDAwNmEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgMHgwMDZiOiAweDAwNmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgMHgwMDZjOiAweDAwNmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgMHgwMDZkOiAweDAwNmQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgMHgwMDZlOiAweDAwNmUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgMHgwMDZmOiAweDAwNmYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgMHgwMDcwOiAweDAwNzAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgMHgwMDcxOiAweDAwNzEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgMHgwMDcyOiAweDAwNzIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgMHgwMDczOiAweDAwNzMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgMHgwMDc0OiAweDAwNzQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgMHgwMDc1OiAweDAwNzUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgMHgwMDc2OiAweDAwNzYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgMHgwMDc3OiAweDAwNzcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgMHgwMDc4OiAweDAwNzgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgMHgwMDc5OiAweDAwNzksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgMHgwMDdhOiAweDAwN2EsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgMHgwMDdiOiAweDAwN2IsICAgICAjICBMRUZUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3YzogMHgwMDdjLCAgICAgIyAgVkVSVElDQUwgTElORQogICAgMHgwMDdkOiAweDAwN2QsICAgICAjICBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2U6IDB4MDA3ZSwgICAgICMgIFRJTERFCiAgICAweDAwN2Y6IDB4MDA3ZiwgICAgICMgIERFTEVURQogICAgMHgwMGEwOiAweDAwZmYsICAgICAjICBOTy1CUkVBSyBTUEFDRQogICAgMHgwMGExOiAweDAwYWQsICAgICAjICBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwYTI6IDB4MDBiZCwgICAgICMgIENFTlQgU0lHTgogICAgMHgwMGEzOiAweDAwOWMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwYTQ6IDB4MDBjZiwgICAgICMgIENVUlJFTkNZIFNJR04KICAgIDB4MDBhNTogMHgwMGJlLCAgICAgIyAgWUVOIFNJR04KICAgIDB4MDBhNjogMHgwMGRkLCAgICAgIyAgQlJPS0VOIEJBUgogICAgMHgwMGE3OiAweDAwZjUsICAgICAjICBTRUNUSU9OIFNJR04KICAgIDB4MDBhODogMHgwMGY5LCAgICAgIyAgRElBRVJFU0lTCiAgICAweDAwYTk6IDB4MDBiOCwgICAgICMgIENPUFlSSUdIVCBTSUdOCiAgICAweDAwYWE6IDB4MDBhNiwgICAgICMgIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwYWI6IDB4MDBhZSwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWM6IDB4MDBhYSwgICAgICMgIE5PVCBTSUdOCiAgICAweDAwYWQ6IDB4MDBmMCwgICAgICMgIFNPRlQgSFlQSEVOCiAgICAweDAwYWU6IDB4MDBhOSwgICAgICMgIFJFR0lTVEVSRUQgU0lHTgogICAgMHgwMGFmOiAweDAwZWUsICAgICAjICBNQUNST04KICAgIDB4MDBiMDogMHgwMGY4LCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBiMTogMHgwMGYxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwYjI6IDB4MDBmZCwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGIzOiAweDAwZmMsICAgICAjICBTVVBFUlNDUklQVCBUSFJFRQogICAgMHgwMGI0OiAweDAwZWYsICAgICAjICBBQ1VURSBBQ0NFTlQKICAgIDB4MDBiNTogMHgwMGU2LCAgICAgIyAgTUlDUk8gU0lHTgogICAgMHgwMGI2OiAweDAwZjQsICAgICAjICBQSUxDUk9XIFNJR04KICAgIDB4MDBiNzogMHgwMGZhLCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGI4OiAweDAwZjcsICAgICAjICBDRURJTExBCiAgICAweDAwYjk6IDB4MDBmYiwgICAgICMgIFNVUEVSU0NSSVBUIE9ORQogICAgMHgwMGJhOiAweDAwYTcsICAgICAjICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBiYjogMHgwMGFmLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYmM6IDB4MDBhYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGJkOiAweDAwYWIsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBiZTogMHgwMGYzLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAweDAwYmY6IDB4MDBhOCwgICAgICMgIElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgIDB4MDBjMDogMHgwMGI3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwYzE6IDB4MDBiNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGMyOiAweDAwYjYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGMzOiAweDAwYzcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgIDB4MDBjNDogMHgwMDhlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGM1OiAweDAwOGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgMHgwMGM2OiAweDAwOTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAweDAwYzc6IDB4MDA4MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwYzg6IDB4MDBkNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMGM5OiAweDAwOTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDBjYTogMHgwMGQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBjYjogMHgwMGQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGNjOiAweDAwZGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgIDB4MDBjZDogMHgwMGQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwY2U6IDB4MDBkNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwY2Y6IDB4MDBkOCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkMDogMHgwMGQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRICiAgICAweDAwZDE6IDB4MDBhNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGQyOiAweDAwZTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgIDB4MDBkMzogMHgwMGUwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZDQ6IDB4MDBlMiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZDU6IDB4MDBlNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgMHgwMGQ2OiAweDAwOTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZDc6IDB4MDA5ZSwgICAgICMgIE1VTFRJUExJQ0FUSU9OIFNJR04KICAgIDB4MDBkODogMHgwMDlkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMGQ5OiAweDAwZWIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgIDB4MDBkYTogMHgwMGU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwZGI6IDB4MDBlYSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZGM6IDB4MDA5YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkZDogMHgwMGVkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAwZGU6IDB4MDBlOCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOCiAgICAweDAwZGY6IDB4MDBlMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAweDAwZTA6IDB4MDA4NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDBlMTogMHgwMGEwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGUyOiAweDAwODMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlMzogMHgwMGM2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgMHgwMGU0OiAweDAwODQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGU1OiAweDAwODYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDBlNjogMHgwMDkxLCAgICAgIyAgTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgIDB4MDBlNzogMHgwMDg3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwZTg6IDB4MDA4YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDBlOTogMHgwMDgyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMGVhOiAweDAwODgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlYjogMHgwMDg5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBlYzogMHgwMDhkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgMHgwMGVkOiAweDAwYTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwZWU6IDB4MDA4YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGVmOiAweDAwOGIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGYwOiAweDAwZDAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRVRICiAgICAweDAwZjE6IDB4MDBhNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBmMjogMHgwMDk1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMGYzOiAweDAwYTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZjQ6IDB4MDA5MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGY1OiAweDAwZTQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAweDAwZjY6IDB4MDA5NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZjc6IDB4MDBmNiwgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmODogMHgwMDliLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDBmOTogMHgwMDk3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgMHgwMGZhOiAweDAwYTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwZmI6IDB4MDA5NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGZjOiAweDAwODEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGZkOiAweDAwZWMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAwZmU6IDB4MDBlNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUSE9STgogICAgMHgwMGZmOiAweDAwOTgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgMHgwMTMxOiAweDAwZDUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCiAgICAweDAxOTI6IDB4MDA5ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgMHgyMDE3OiAweDAwZjIsICAgICAjICBET1VCTEUgTE9XIExJTkUKICAgIDB4MjUwMDogMHgwMGM0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgIDB4MjUwMjogMHgwMGIzLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAweDI1MGM6IDB4MDBkYSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgyNTEwOiAweDAwYmYsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgyNTE0OiAweDAwYzAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDI1MTg6IDB4MDBkOSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgyNTFjOiAweDAwYzMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1MjQ6IDB4MDBiNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTJjOiAweDAwYzIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTM0OiAweDAwYzEsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MjUzYzogMHgwMGM1LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NTA6IDB4MDBjZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgyNTUxOiAweDAwYmEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDI1NTQ6IDB4MDBjOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MjU1NzogMHgwMGJiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDI1NWE6IDB4MDBjOCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDI1NWQ6IDB4MDBiYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MjU2MDogMHgwMGNjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjU2MzogMHgwMGI5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTY2OiAweDAwY2IsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MjU2OTogMHgwMGNhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTZjOiAweDAwY2UsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1ODA6IDB4MDBkZiwgICAgICMgIFVQUEVSIEhBTEYgQkxPQ0sKICAgIDB4MjU4NDogMHgwMGRjLCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgyNTg4OiAweDAwZGIsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDI1OTE6IDB4MDBiMCwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDI1OTI6IDB4MDBiMSwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgyNTkzOiAweDAwYjIsICAgICAjICBEQVJLIFNIQURFCiAgICAweDI1YTA6IDB4MDBmZSwgICAgICMgIEJMQUNLIFNRVUFSRQp9ClBLAwQUAAAAAAACIKNW/xx7/7qIAAC6iAAAEgAAAGVuY29kaW5ncy9jcDg1Mi5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgZ2VuZXJhdGVkIGZyb20gJ1ZFTkRPUlMvTUlDU0ZUL1BDL0NQODUyLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDg1MicsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKIyMjIERlY29kaW5nIE1hcAoKZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQpkZWNvZGluZ19tYXAudXBkYXRlKHsKICAgIDB4MDA4MDogMHgwMGM3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDA4MTogMHgwMGZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4MjogMHgwMGU5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMDgzOiAweDAwZTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4NDogMHgwMGU0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4NTogMHgwMTZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwODY6IDB4MDEwNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgIDB4MDA4NzogMHgwMGU3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwODg6IDB4MDE0MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFCiAgICAweDAwODk6IDB4MDBlYiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAweDAwOGE6IDB4MDE1MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKICAgIDB4MDA4YjogMHgwMTUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKICAgIDB4MDA4YzogMHgwMGVlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOGQ6IDB4MDE3OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgMHgwMDhlOiAweDAwYzQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwOGY6IDB4MDEwNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURQogICAgMHgwMDkwOiAweDAwYzksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDA5MTogMHgwMTM5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIEFDVVRFCiAgICAweDAwOTI6IDB4MDEzYSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQUNVVEUKICAgIDB4MDA5MzogMHgwMGY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOTQ6IDB4MDBmNiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwOTU6IDB4MDEzZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTgogICAgMHgwMDk2OiAweDAxM2UsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENBUk9OCiAgICAweDAwOTc6IDB4MDE1YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgMHgwMDk4OiAweDAxNWIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCiAgICAweDAwOTk6IDB4MDBkNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YTogMHgwMGRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDliOiAweDAxNjQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0FST04KICAgIDB4MDA5YzogMHgwMTY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTgogICAgMHgwMDlkOiAweDAxNDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFCiAgICAweDAwOWU6IDB4MDBkNywgICAgICMgIE1VTFRJUExJQ0FUSU9OIFNJR04KICAgIDB4MDA5ZjogMHgwMTBkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTgogICAgMHgwMGEwOiAweDAwZTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAweDAwYTE6IDB4MDBlZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBhMjogMHgwMGYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGEzOiAweDAwZmEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwYTQ6IDB4MDEwNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgIDB4MDBhNTogMHgwMTA1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgIDB4MDBhNjogMHgwMTdkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAweDAwYTc6IDB4MDE3ZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KICAgIDB4MDBhODogMHgwMTE4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgMHgwMGE5OiAweDAxMTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgMHgwMGFhOiAweDAwYWMsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGFiOiAweDAxN2EsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCiAgICAweDAwYWM6IDB4MDEwYywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgogICAgMHgwMGFkOiAweDAxNWYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENFRElMTEEKICAgIDB4MDBhZTogMHgwMGFiLCAgICAgIyAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhZjogMHgwMGJiLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYjA6IDB4MjU5MSwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDAwYjE6IDB4MjU5MiwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgwMGIyOiAweDI1OTMsICAgICAjICBEQVJLIFNIQURFCiAgICAweDAwYjM6IDB4MjUwMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgwMGI0OiAweDI1MjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiNTogMHgwMGMxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAweDAwYjY6IDB4MDBjMiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwYjc6IDB4MDExYSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDQVJPTgogICAgMHgwMGI4OiAweDAxNWUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgMHgwMGI5OiAweDI1NjMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYmE6IDB4MjU1MSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MDBiYjogMHgyNTU3LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDAwYmM6IDB4MjU1ZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MDBiZDogMHgwMTdiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQogICAgMHgwMGJlOiAweDAxN2MsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDAxMDIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUKICAgIDB4MDBjNzogMHgwMTAzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRQogICAgMHgwMGM4OiAweDI1NWEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgwMGM5OiAweDI1NTQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDAwY2E6IDB4MjU2OSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYjogMHgyNTY2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2M6IDB4MjU2MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwY2Q6IDB4MjU1MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgwMGNlOiAweDI1NmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2Y6IDB4MDBhNCwgICAgICMgIENVUlJFTkNZIFNJR04KICAgIDB4MDBkMDogMHgwMTExLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBTVFJPS0UKICAgIDB4MDBkMTogMHgwMTEwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNUUk9LRQogICAgMHgwMGQyOiAweDAxMGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST04KICAgIDB4MDBkMzogMHgwMGNiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGQ0OiAweDAxMGYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENBUk9OCiAgICAweDAwZDU6IDB4MDE0NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDQVJPTgogICAgMHgwMGQ2OiAweDAwY2QsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBkNzogMHgwMGNlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBkODogMHgwMTFiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDQVJPTgogICAgMHgwMGQ5OiAweDI1MTgsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MDBkYTogMHgyNTBjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDAwZGI6IDB4MjU4OCwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MDBkYzogMHgyNTg0LCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgwMGRkOiAweDAxNjIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0VESUxMQQogICAgMHgwMGRlOiAweDAxNmUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQogICAgMHgwMGRmOiAweDI1ODAsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDAwZTA6IDB4MDBkMywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGUxOiAweDAwZGYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgMHgwMGUyOiAweDAwZDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGUzOiAweDAxNDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKICAgIDB4MDBlNDogMHgwMTQ0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgMHgwMGU1OiAweDAxNDgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OCiAgICAweDAwZTY6IDB4MDE2MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgMHgwMGU3OiAweDAxNjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAweDAwZTg6IDB4MDE1NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQogICAgMHgwMGU5OiAweDAwZGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBlYTogMHgwMTU1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQogICAgMHgwMGViOiAweDAxNzAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiAgICAweDAwZWM6IDB4MDBmZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgIDB4MDBlZDogMHgwMGRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAwZWU6IDB4MDE2MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0VESUxMQQogICAgMHgwMGVmOiAweDAwYjQsICAgICAjICBBQ1VURSBBQ0NFTlQKICAgIDB4MDBmMDogMHgwMGFkLCAgICAgIyAgU09GVCBIWVBIRU4KICAgIDB4MDBmMTogMHgwMmRkLCAgICAgIyAgRE9VQkxFIEFDVVRFIEFDQ0VOVAogICAgMHgwMGYyOiAweDAyZGIsICAgICAjICBPR09ORUsKICAgIDB4MDBmMzogMHgwMmM3LCAgICAgIyAgQ0FST04KICAgIDB4MDBmNDogMHgwMmQ4LCAgICAgIyAgQlJFVkUKICAgIDB4MDBmNTogMHgwMGE3LCAgICAgIyAgU0VDVElPTiBTSUdOCiAgICAweDAwZjY6IDB4MDBmNywgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmNzogMHgwMGI4LCAgICAgIyAgQ0VESUxMQQogICAgMHgwMGY4OiAweDAwYjAsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGY5OiAweDAwYTgsICAgICAjICBESUFFUkVTSVMKICAgIDB4MDBmYTogMHgwMmQ5LCAgICAgIyAgRE9UIEFCT1ZFCiAgICAweDAwZmI6IDB4MDE3MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiAgICAweDAwZmM6IDB4MDE1OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTgogICAgMHgwMGZkOiAweDAxNTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdceGM3JyAgICAgIyAgMHgwMDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhmYycgICAgICMgIDB4MDA4MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTknICAgICAjICAweDAwODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZTInICAgICAjICAweDAwODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlNCcgICAgICMgIDB4MDA4NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE2ZicgICAjICAweDAwODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHUwMTA3JyAgICMgIDB4MDA4NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEFDVVRFCiAgICAnXHhlNycgICAgICMgIDB4MDA4NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdcdTAxNDInICAgIyAgMHgwMDg4IC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFCiAgICAnXHhlYicgICAgICMgIDB4MDA4OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE1MCcgICAjICAweDAwOGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQogICAgJ1x1MDE1MScgICAjICAweDAwOGIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHgwMDhjIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDE3OScgICAjICAweDAwOGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEFDVVRFCiAgICAnXHhjNCcgICAgICMgIDB4MDA4ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTA2JyAgICMgIDB4MDA4ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgICdceGM5JyAgICAgIyAgMHgwMDkwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x1MDEzOScgICAjICAweDAwOTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIEFDVVRFCiAgICAnXHUwMTNhJyAgICMgIDB4MDA5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCiAgICAnXHhmNCcgICAgICMgIDB4MDA5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHgwMDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTNkJyAgICMgIDB4MDA5NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KICAgICdcdTAxM2UnICAgIyAgMHgwMDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST04KICAgICdcdTAxNWEnICAgIyAgMHgwMDk3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgJ1x1MDE1YicgICAjICAweDAwOTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgJ1x4ZDYnICAgICAjICAweDAwOTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZGMnICAgICAjICAweDAwOWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE2NCcgICAjICAweDAwOWIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OCiAgICAnXHUwMTY1JyAgICMgIDB4MDA5YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENBUk9OCiAgICAnXHUwMTQxJyAgICMgIDB4MDA5ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFCiAgICAnXHhkNycgICAgICMgIDB4MDA5ZSAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCiAgICAnXHUwMTBkJyAgICMgIDB4MDA5ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAnXHhlMScgICAgICMgIDB4MDBhMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlZCcgICAgICMgIDB4MDBhMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhmMycgICAgICMgIDB4MDBhMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmYScgICAgICMgIDB4MDBhMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHUwMTA0JyAgICMgIDB4MDBhNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHUwMTA1JyAgICMgIDB4MDBhNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSwogICAgJ1x1MDE3ZCcgICAjICAweDAwYTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHUwMTdlJyAgICMgIDB4MDBhNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHUwMTE4JyAgICMgIDB4MDBhOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCiAgICAnXHUwMTE5JyAgICMgIDB4MDBhOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x4YWMnICAgICAjICAweDAwYWEgLT4gTk9UIFNJR04KICAgICdcdTAxN2EnICAgIyAgMHgwMGFiIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEUKICAgICdcdTAxMGMnICAgIyAgMHgwMGFjIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgogICAgJ1x1MDE1ZicgICAjICAweDAwYWQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiAgICAnXHhhYicgICAgICMgIDB4MDBhZSAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmInICAgICAjICAweDAwYWYgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyNTkxJyAgICMgIDB4MDBiMCAtPiBMSUdIVCBTSEFERQogICAgJ1x1MjU5MicgICAjICAweDAwYjEgLT4gTUVESVVNIFNIQURFCiAgICAnXHUyNTkzJyAgICMgIDB4MDBiMiAtPiBEQVJLIFNIQURFCiAgICAnXHUyNTAyJyAgICMgIDB4MDBiMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgICdcdTI1MjQnICAgIyAgMHgwMGI0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x4YzEnICAgICAjICAweDAwYjUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMicgICAgICMgIDB4MDBiNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDExYScgICAjICAweDAwYjcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OCiAgICAnXHUwMTVlJyAgICMgIDB4MDBiOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHUwMTdiJyAgICMgIDB4MDBiZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUwMTdjJyAgICMgIDB4MDBiZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQogICAgJ1x1MjUxMCcgICAjICAweDAwYmYgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgICdcdTI1MTQnICAgIyAgMHgwMGMwIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgICdcdTI1MzQnICAgIyAgMHgwMGMxIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUyYycgICAjICAweDAwYzIgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1MWMnICAgIyAgMHgwMGMzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1MDAnICAgIyAgMHgwMGM0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTNjJyAgICMgIDB4MDBjNSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTAxMDInICAgIyAgMHgwMGM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRQogICAgJ1x1MDEwMycgICAjICAweDAwYzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRQogICAgJ1x1MjU1YScgICAjICAweDAwYzggLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgICdcdTI1NTQnICAgIyAgMHgwMGM5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1NjknICAgIyAgMHgwMGNhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjYnICAgIyAgMHgwMGNiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2MCcgICAjICAweDAwY2MgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1NTAnICAgIyAgMHgwMGNkIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgJ1x1MjU2YycgICAjICAweDAwY2UgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x4YTQnICAgICAjICAweDAwY2YgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x1MDExMScgICAjICAweDAwZDAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBTVFJPS0UKICAgICdcdTAxMTAnICAgIyAgMHgwMGQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTVFJPS0UKICAgICdcdTAxMGUnICAgIyAgMHgwMGQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTgogICAgJ1x4Y2InICAgICAjICAweDAwZDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDEwZicgICAjICAweDAwZDQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgogICAgJ1x1MDE0NycgICAjICAweDAwZDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCiAgICAnXHhjZCcgICAgICMgIDB4MDBkNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHgwMGQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTFiJyAgICMgIDB4MDBkOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OCiAgICAnXHUyNTE4JyAgICMgIDB4MDBkOSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgICdcdTI1MGMnICAgIyAgMHgwMGRhIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU4OCcgICAjICAweDAwZGIgLT4gRlVMTCBCTE9DSwogICAgJ1x1MjU4NCcgICAjICAweDAwZGMgLT4gTE9XRVIgSEFMRiBCTE9DSwogICAgJ1x1MDE2MicgICAjICAweDAwZGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENFRElMTEEKICAgICdcdTAxNmUnICAgIyAgMHgwMGRlIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHUyNTgwJyAgICMgIDB4MDBkZiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHhkMycgICAgICMgIDB4MDBlMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGRmJyAgICAgIyAgMHgwMGUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHhkNCcgICAgICMgIDB4MDBlMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDE0MycgICAjICAweDAwZTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCiAgICAnXHUwMTQ0JyAgICMgIDB4MDBlNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEFDVVRFCiAgICAnXHUwMTQ4JyAgICMgIDB4MDBlNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OCiAgICAnXHUwMTYwJyAgICMgIDB4MDBlNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdcdTAxNjEnICAgIyAgMHgwMGU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdcdTAxNTQnICAgIyAgMHgwMGU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQogICAgJ1x4ZGEnICAgICAjICAweDAwZTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHUwMTU1JyAgICMgIDB4MDBlYSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEFDVVRFCiAgICAnXHUwMTcwJyAgICMgIDB4MDBlYiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiAgICAnXHhmZCcgICAgICMgIDB4MDBlYyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhkZCcgICAgICMgIDB4MDBlZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdcdTAxNjMnICAgIyAgMHgwMGVlIC0+IExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0VESUxMQQogICAgJ1x4YjQnICAgICAjICAweDAwZWYgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhhZCcgICAgICMgIDB4MDBmMCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x1MDJkZCcgICAjICAweDAwZjEgLT4gRE9VQkxFIEFDVVRFIEFDQ0VOVAogICAgJ1x1MDJkYicgICAjICAweDAwZjIgLT4gT0dPTkVLCiAgICAnXHUwMmM3JyAgICMgIDB4MDBmMyAtPiBDQVJPTgogICAgJ1x1MDJkOCcgICAjICAweDAwZjQgLT4gQlJFVkUKICAgICdceGE3JyAgICAgIyAgMHgwMGY1IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4ZjcnICAgICAjICAweDAwZjYgLT4gRElWSVNJT04gU0lHTgogICAgJ1x4YjgnICAgICAjICAweDAwZjcgLT4gQ0VESUxMQQogICAgJ1x4YjAnICAgICAjICAweDAwZjggLT4gREVHUkVFIFNJR04KICAgICdceGE4JyAgICAgIyAgMHgwMGY5IC0+IERJQUVSRVNJUwogICAgJ1x1MDJkOScgICAjICAweDAwZmEgLT4gRE9UIEFCT1ZFCiAgICAnXHUwMTcxJyAgICMgIDB4MDBmYiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQogICAgJ1x1MDE1OCcgICAjICAweDAwZmMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCiAgICAnXHUwMTU5JyAgICMgIDB4MDBmZCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCiAgICAnXHUyNWEwJyAgICMgIDB4MDBmZSAtPiBCTEFDSyBTUVVBUkUKICAgICdceGEwJyAgICAgIyAgMHgwMGZmIC0+IE5PLUJSRUFLIFNQQUNFCikKCiMjIyBFbmNvZGluZyBNYXAKCmVuY29kaW5nX21hcCA9IHsKICAgIDB4MDAwMDogMHgwMDAwLCAgICAgIyAgTlVMTAogICAgMHgwMDAxOiAweDAwMDEsICAgICAjICBTVEFSVCBPRiBIRUFESU5HCiAgICAweDAwMDI6IDB4MDAwMiwgICAgICMgIFNUQVJUIE9GIFRFWFQKICAgIDB4MDAwMzogMHgwMDAzLCAgICAgIyAgRU5EIE9GIFRFWFQKICAgIDB4MDAwNDogMHgwMDA0LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgMHgwMDA1OiAweDAwMDUsICAgICAjICBFTlFVSVJZCiAgICAweDAwMDY6IDB4MDAwNiwgICAgICMgIEFDS05PV0xFREdFCiAgICAweDAwMDc6IDB4MDAwNywgICAgICMgIEJFTEwKICAgIDB4MDAwODogMHgwMDA4LCAgICAgIyAgQkFDS1NQQUNFCiAgICAweDAwMDk6IDB4MDAwOSwgICAgICMgIEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgMHgwMDBhOiAweDAwMGEsICAgICAjICBMSU5FIEZFRUQKICAgIDB4MDAwYjogMHgwMDBiLCAgICAgIyAgVkVSVElDQUwgVEFCVUxBVElPTgogICAgMHgwMDBjOiAweDAwMGMsICAgICAjICBGT1JNIEZFRUQKICAgIDB4MDAwZDogMHgwMDBkLCAgICAgIyAgQ0FSUklBR0UgUkVUVVJOCiAgICAweDAwMGU6IDB4MDAwZSwgICAgICMgIFNISUZUIE9VVAogICAgMHgwMDBmOiAweDAwMGYsICAgICAjICBTSElGVCBJTgogICAgMHgwMDEwOiAweDAwMTAsICAgICAjICBEQVRBIExJTksgRVNDQVBFCiAgICAweDAwMTE6IDB4MDAxMSwgICAgICMgIERFVklDRSBDT05UUk9MIE9ORQogICAgMHgwMDEyOiAweDAwMTIsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUV08KICAgIDB4MDAxMzogMHgwMDEzLCAgICAgIyAgREVWSUNFIENPTlRST0wgVEhSRUUKICAgIDB4MDAxNDogMHgwMDE0LCAgICAgIyAgREVWSUNFIENPTlRST0wgRk9VUgogICAgMHgwMDE1OiAweDAwMTUsICAgICAjICBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgMHgwMDE2OiAweDAwMTYsICAgICAjICBTWU5DSFJPTk9VUyBJRExFCiAgICAweDAwMTc6IDB4MDAxNywgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgIDB4MDAxODogMHgwMDE4LCAgICAgIyAgQ0FOQ0VMCiAgICAweDAwMTk6IDB4MDAxOSwgICAgICMgIEVORCBPRiBNRURJVU0KICAgIDB4MDAxYTogMHgwMDFhLCAgICAgIyAgU1VCU1RJVFVURQogICAgMHgwMDFiOiAweDAwMWIsICAgICAjICBFU0NBUEUKICAgIDB4MDAxYzogMHgwMDFjLCAgICAgIyAgRklMRSBTRVBBUkFUT1IKICAgIDB4MDAxZDogMHgwMDFkLCAgICAgIyAgR1JPVVAgU0VQQVJBVE9SCiAgICAweDAwMWU6IDB4MDAxZSwgICAgICMgIFJFQ09SRCBTRVBBUkFUT1IKICAgIDB4MDAxZjogMHgwMDFmLCAgICAgIyAgVU5JVCBTRVBBUkFUT1IKICAgIDB4MDAyMDogMHgwMDIwLCAgICAgIyAgU1BBQ0UKICAgIDB4MDAyMTogMHgwMDIxLCAgICAgIyAgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMDIyOiAweDAwMjIsICAgICAjICBRVU9UQVRJT04gTUFSSwogICAgMHgwMDIzOiAweDAwMjMsICAgICAjICBOVU1CRVIgU0lHTgogICAgMHgwMDI0OiAweDAwMjQsICAgICAjICBET0xMQVIgU0lHTgogICAgMHgwMDI1OiAweDAwMjUsICAgICAjICBQRVJDRU5UIFNJR04KICAgIDB4MDAyNjogMHgwMDI2LCAgICAgIyAgQU1QRVJTQU5ECiAgICAweDAwMjc6IDB4MDAyNywgICAgICMgIEFQT1NUUk9QSEUKICAgIDB4MDAyODogMHgwMDI4LCAgICAgIyAgTEVGVCBQQVJFTlRIRVNJUwogICAgMHgwMDI5OiAweDAwMjksICAgICAjICBSSUdIVCBQQVJFTlRIRVNJUwogICAgMHgwMDJhOiAweDAwMmEsICAgICAjICBBU1RFUklTSwogICAgMHgwMDJiOiAweDAwMmIsICAgICAjICBQTFVTIFNJR04KICAgIDB4MDAyYzogMHgwMDJjLCAgICAgIyAgQ09NTUEKICAgIDB4MDAyZDogMHgwMDJkLCAgICAgIyAgSFlQSEVOLU1JTlVTCiAgICAweDAwMmU6IDB4MDAyZSwgICAgICMgIEZVTEwgU1RPUAogICAgMHgwMDJmOiAweDAwMmYsICAgICAjICBTT0xJRFVTCiAgICAweDAwMzA6IDB4MDAzMCwgICAgICMgIERJR0lUIFpFUk8KICAgIDB4MDAzMTogMHgwMDMxLCAgICAgIyAgRElHSVQgT05FCiAgICAweDAwMzI6IDB4MDAzMiwgICAgICMgIERJR0lUIFRXTwogICAgMHgwMDMzOiAweDAwMzMsICAgICAjICBESUdJVCBUSFJFRQogICAgMHgwMDM0OiAweDAwMzQsICAgICAjICBESUdJVCBGT1VSCiAgICAweDAwMzU6IDB4MDAzNSwgICAgICMgIERJR0lUIEZJVkUKICAgIDB4MDAzNjogMHgwMDM2LCAgICAgIyAgRElHSVQgU0lYCiAgICAweDAwMzc6IDB4MDAzNywgICAgICMgIERJR0lUIFNFVkVOCiAgICAweDAwMzg6IDB4MDAzOCwgICAgICMgIERJR0lUIEVJR0hUCiAgICAweDAwMzk6IDB4MDAzOSwgICAgICMgIERJR0lUIE5JTkUKICAgIDB4MDAzYTogMHgwMDNhLCAgICAgIyAgQ09MT04KICAgIDB4MDAzYjogMHgwMDNiLCAgICAgIyAgU0VNSUNPTE9OCiAgICAweDAwM2M6IDB4MDAzYywgICAgICMgIExFU1MtVEhBTiBTSUdOCiAgICAweDAwM2Q6IDB4MDAzZCwgICAgICMgIEVRVUFMUyBTSUdOCiAgICAweDAwM2U6IDB4MDAzZSwgICAgICMgIEdSRUFURVItVEhBTiBTSUdOCiAgICAweDAwM2Y6IDB4MDAzZiwgICAgICMgIFFVRVNUSU9OIE1BUksKICAgIDB4MDA0MDogMHgwMDQwLCAgICAgIyAgQ09NTUVSQ0lBTCBBVAogICAgMHgwMDQxOiAweDAwNDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAweDAwNDI6IDB4MDA0MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgIDB4MDA0MzogMHgwMDQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgMHgwMDQ0OiAweDAwNDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAweDAwNDU6IDB4MDA0NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgIDB4MDA0NjogMHgwMDQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgMHgwMDQ3OiAweDAwNDcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAweDAwNDg6IDB4MDA0OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgIDB4MDA0OTogMHgwMDQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgMHgwMDRhOiAweDAwNGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAweDAwNGI6IDB4MDA0YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgIDB4MDA0YzogMHgwMDRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgMHgwMDRkOiAweDAwNGQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAweDAwNGU6IDB4MDA0ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgIDB4MDA0ZjogMHgwMDRmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwMDUwOiAweDAwNTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAweDAwNTE6IDB4MDA1MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgIDB4MDA1MjogMHgwMDUyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgMHgwMDUzOiAweDAwNTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAweDAwNTQ6IDB4MDA1NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgIDB4MDA1NTogMHgwMDU1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgMHgwMDU2OiAweDAwNTYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAweDAwNTc6IDB4MDA1NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgIDB4MDA1ODogMHgwMDU4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgMHgwMDU5OiAweDAwNTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAweDAwNWE6IDB4MDA1YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgIDB4MDA1YjogMHgwMDViLCAgICAgIyAgTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVjOiAweDAwNWMsICAgICAjICBSRVZFUlNFIFNPTElEVVMKICAgIDB4MDA1ZDogMHgwMDVkLCAgICAgIyAgUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1ZTogMHgwMDVlLCAgICAgIyAgQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgIDB4MDA1ZjogMHgwMDVmLCAgICAgIyAgTE9XIExJTkUKICAgIDB4MDA2MDogMHgwMDYwLCAgICAgIyAgR1JBVkUgQUNDRU5UCiAgICAweDAwNjE6IDB4MDA2MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAweDAwNjI6IDB4MDA2MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAweDAwNjM6IDB4MDA2MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAweDAwNjQ6IDB4MDA2NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBECiAgICAweDAwNjU6IDB4MDA2NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAweDAwNjY6IDB4MDA2NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAweDAwNjc6IDB4MDA2NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAweDAwNjg6IDB4MDA2OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBICiAgICAweDAwNjk6IDB4MDA2OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAweDAwNmE6IDB4MDA2YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAweDAwNmI6IDB4MDA2YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAweDAwNmM6IDB4MDA2YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAweDAwNmQ6IDB4MDA2ZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAweDAwNmU6IDB4MDA2ZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDAwNmY6IDB4MDA2ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAweDAwNzA6IDB4MDA3MCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAweDAwNzE6IDB4MDA3MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAweDAwNzI6IDB4MDA3MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAweDAwNzM6IDB4MDA3MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAweDAwNzQ6IDB4MDA3NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAweDAwNzU6IDB4MDA3NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAweDAwNzY6IDB4MDA3NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAweDAwNzc6IDB4MDA3NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAweDAwNzg6IDB4MDA3OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAweDAwNzk6IDB4MDA3OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAweDAwN2E6IDB4MDA3YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAweDAwN2I6IDB4MDA3YiwgICAgICMgIExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdjOiAweDAwN2MsICAgICAjICBWRVJUSUNBTCBMSU5FCiAgICAweDAwN2Q6IDB4MDA3ZCwgICAgICMgIFJJR0hUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3ZTogMHgwMDdlLCAgICAgIyAgVElMREUKICAgIDB4MDA3ZjogMHgwMDdmLCAgICAgIyAgREVMRVRFCiAgICAweDAwYTA6IDB4MDBmZiwgICAgICMgIE5PLUJSRUFLIFNQQUNFCiAgICAweDAwYTQ6IDB4MDBjZiwgICAgICMgIENVUlJFTkNZIFNJR04KICAgIDB4MDBhNzogMHgwMGY1LCAgICAgIyAgU0VDVElPTiBTSUdOCiAgICAweDAwYTg6IDB4MDBmOSwgICAgICMgIERJQUVSRVNJUwogICAgMHgwMGFiOiAweDAwYWUsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGFjOiAweDAwYWEsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGFkOiAweDAwZjAsICAgICAjICBTT0ZUIEhZUEhFTgogICAgMHgwMGIwOiAweDAwZjgsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGI0OiAweDAwZWYsICAgICAjICBBQ1VURSBBQ0NFTlQKICAgIDB4MDBiODogMHgwMGY3LCAgICAgIyAgQ0VESUxMQQogICAgMHgwMGJiOiAweDAwYWYsICAgICAjICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBjMTogMHgwMGI1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAweDAwYzI6IDB4MDBiNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwYzQ6IDB4MDA4ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBjNzogMHgwMDgwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDBjOTogMHgwMDkwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwY2I6IDB4MDBkMywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBjZDogMHgwMGQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwY2U6IDB4MDBkNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZDM6IDB4MDBlMCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGQ0OiAweDAwZTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGQ2OiAweDAwOTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZDc6IDB4MDA5ZSwgICAgICMgIE1VTFRJUExJQ0FUSU9OIFNJR04KICAgIDB4MDBkYTogMHgwMGU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwZGM6IDB4MDA5YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkZDogMHgwMGVkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAwZGY6IDB4MDBlMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAweDAwZTE6IDB4MDBhMCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBlMjogMHgwMDgzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZTQ6IDB4MDA4NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwZTc6IDB4MDA4NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMGU5OiAweDAwODIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwZWI6IDB4MDA4OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAweDAwZWQ6IDB4MDBhMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBlZTogMHgwMDhjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZjM6IDB4MDBhMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBmNDogMHgwMDkzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZjY6IDB4MDA5NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZjc6IDB4MDBmNiwgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmYTogMHgwMGEzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGZjOiAweDAwODEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGZkOiAweDAwZWMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAxMDI6IDB4MDBjNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRQogICAgMHgwMTAzOiAweDAwYzcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFCiAgICAweDAxMDQ6IDB4MDBhNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgIDB4MDEwNTogMHgwMGE1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgIDB4MDEwNjogMHgwMDhmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCiAgICAweDAxMDc6IDB4MDA4NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgIDB4MDEwYzogMHgwMGFjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAweDAxMGQ6IDB4MDA5ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KICAgIDB4MDEwZTogMHgwMGQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENBUk9OCiAgICAweDAxMGY6IDB4MDBkNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0FST04KICAgIDB4MDExMDogMHgwMGQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNUUk9LRQogICAgMHgwMTExOiAweDAwZDAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFNUUk9LRQogICAgMHgwMTE4OiAweDAwYTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCiAgICAweDAxMTk6IDB4MDBhOSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLCiAgICAweDAxMWE6IDB4MDBiNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDQVJPTgogICAgMHgwMTFiOiAweDAwZDgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OCiAgICAweDAxMzk6IDB4MDA5MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQogICAgMHgwMTNhOiAweDAwOTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCiAgICAweDAxM2Q6IDB4MDA5NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTgogICAgMHgwMTNlOiAweDAwOTYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENBUk9OCiAgICAweDAxNDE6IDB4MDA5ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKICAgIDB4MDE0MjogMHgwMDg4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKICAgIDB4MDE0MzogMHgwMGUzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCiAgICAweDAxNDQ6IDB4MDBlNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKICAgIDB4MDE0NzogMHgwMGQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCiAgICAweDAxNDg6IDB4MDBlNSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KICAgIDB4MDE1MDogMHgwMDhhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQogICAgMHgwMTUxOiAweDAwOGIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQogICAgMHgwMTU0OiAweDAwZTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQUNVVEUKICAgIDB4MDE1NTogMHgwMGVhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQogICAgMHgwMTU4OiAweDAwZmMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0FST04KICAgIDB4MDE1OTogMHgwMGZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTgogICAgMHgwMTVhOiAweDAwOTcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKICAgIDB4MDE1YjogMHgwMDk4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgMHgwMTVlOiAweDAwYjgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgMHgwMTVmOiAweDAwYWQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENFRElMTEEKICAgIDB4MDE2MDogMHgwMGU2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAweDAxNjE6IDB4MDBlNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KICAgIDB4MDE2MjogMHgwMGRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENFRElMTEEKICAgIDB4MDE2MzogMHgwMGVlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDRURJTExBCiAgICAweDAxNjQ6IDB4MDA5YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTgogICAgMHgwMTY1OiAweDAwOWMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENBUk9OCiAgICAweDAxNmU6IDB4MDBkZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAxNmY6IDB4MDA4NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQogICAgMHgwMTcwOiAweDAwZWIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiAgICAweDAxNzE6IDB4MDBmYiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiAgICAweDAxNzk6IDB4MDA4ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgMHgwMTdhOiAweDAwYWIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCiAgICAweDAxN2I6IDB4MDBiZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgIDB4MDE3YzogMHgwMGJlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgIDB4MDE3ZDogMHgwMGE2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAweDAxN2U6IDB4MDBhNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KICAgIDB4MDJjNzogMHgwMGYzLCAgICAgIyAgQ0FST04KICAgIDB4MDJkODogMHgwMGY0LCAgICAgIyAgQlJFVkUKICAgIDB4MDJkOTogMHgwMGZhLCAgICAgIyAgRE9UIEFCT1ZFCiAgICAweDAyZGI6IDB4MDBmMiwgICAgICMgIE9HT05FSwogICAgMHgwMmRkOiAweDAwZjEsICAgICAjICBET1VCTEUgQUNVVEUgQUNDRU5UCiAgICAweDI1MDA6IDB4MDBjNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDI1MDI6IDB4MDBiMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgyNTBjOiAweDAwZGEsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MjUxMDogMHgwMGJmLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MjUxNDogMHgwMGMwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgyNTE4OiAweDAwZDksICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MjUxYzogMHgwMGMzLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTI0OiAweDAwYjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjUyYzogMHgwMGMyLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MjUzNDogMHgwMGMxLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1M2M6IDB4MDBjNSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTUwOiAweDAwY2QsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgIDB4MjU1MTogMHgwMGJhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgyNTU0OiAweDAwYzksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDI1NTc6IDB4MDBiYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgyNTVhOiAweDAwYzgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgyNTVkOiAweDAwYmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDI1NjA6IDB4MDBjYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1NjM6IDB4MDBiOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjU2NjogMHgwMGNiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1Njk6IDB4MDBjYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MjU2YzogMHgwMGNlLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTgwOiAweDAwZGYsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDI1ODQ6IDB4MDBkYywgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MjU4ODogMHgwMGRiLCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgyNTkxOiAweDAwYjAsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgyNTkyOiAweDAwYjEsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MjU5MzogMHgwMGIyLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgyNWEwOiAweDAwZmUsICAgICAjICBCTEFDSyBTUVVBUkUKfQpQSwMEFAAAAAAAAiCjVjTdUyk6hAAAOoQAABIAAABlbmNvZGluZ3MvY3A4NTUucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGdlbmVyYXRlZCBmcm9tICdWRU5ET1JTL01JQ1NGVC9QQy9DUDg1NS5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3A4NTUnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDQ1MiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBESkUKICAgIDB4MDA4MTogMHgwNDAyLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREpFCiAgICAweDAwODI6IDB4MDQ1MywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBHSkUKICAgIDB4MDA4MzogMHgwNDAzLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0pFCiAgICAweDAwODQ6IDB4MDQ1MSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgMHgwMDg1OiAweDA0MDEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTwogICAgMHgwMDg2OiAweDA0NTQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIElFCiAgICAweDAwODc6IDB4MDQwNCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgMHgwMDg4OiAweDA0NTUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpFCiAgICAweDAwODk6IDB4MDQwNSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIERaRQogICAgMHgwMDhhOiAweDA0NTYsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAweDAwOGI6IDB4MDQwNiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgMHgwMDhjOiAweDA0NTcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUkKICAgIDB4MDA4ZDogMHgwNDA3LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUkKICAgIDB4MDA4ZTogMHgwNDU4LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCiAgICAweDAwOGY6IDB4MDQwOCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEpFCiAgICAweDAwOTA6IDB4MDQ1OSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBMSkUKICAgIDB4MDA5MTogMHgwNDA5LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTEpFCiAgICAweDAwOTI6IDB4MDQ1YSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBOSkUKICAgIDB4MDA5MzogMHgwNDBhLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFCiAgICAweDAwOTQ6IDB4MDQ1YiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBUU0hFCiAgICAweDAwOTU6IDB4MDQwYiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTSEUKICAgIDB4MDA5NjogMHgwNDVjLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtKRQogICAgMHgwMDk3OiAweDA0MGMsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSkUKICAgIDB4MDA5ODogMHgwNDVlLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFUKICAgIDB4MDA5OTogMHgwNDBlLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVQogICAgMHgwMDlhOiAweDA0NWYsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRQogICAgMHgwMDliOiAweDA0MGYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkhFCiAgICAweDAwOWM6IDB4MDQ0ZSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBZVQogICAgMHgwMDlkOiAweDA0MmUsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQogICAgMHgwMDllOiAweDA0NGEsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCiAgICAweDAwOWY6IDB4MDQyYSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgogICAgMHgwMGEwOiAweDA0MzAsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQogICAgMHgwMGExOiAweDA0MTAsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCiAgICAweDAwYTI6IDB4MDQzMSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgMHgwMGEzOiAweDA0MTEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQogICAgMHgwMGE0OiAweDA0NDYsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCiAgICAweDAwYTU6IDB4MDQyNiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQogICAgMHgwMGE2OiAweDA0MzQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgIDB4MDBhNzogMHgwNDE0LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKICAgIDB4MDBhODogMHgwNDM1LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCiAgICAweDAwYTk6IDB4MDQxNSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCiAgICAweDAwYWE6IDB4MDQ0NCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgogICAgMHgwMGFiOiAweDA0MjQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgogICAgMHgwMGFjOiAweDA0MzMsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCiAgICAweDAwYWQ6IDB4MDQxMywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQogICAgMHgwMGFlOiAweDAwYWIsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGFmOiAweDAwYmIsICAgICAjICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBiMDogMHgyNTkxLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MDBiMTogMHgyNTkyLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDAwYjI6IDB4MjU5MywgICAgICMgIERBUksgU0hBREUKICAgIDB4MDBiMzogMHgyNTAyLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAweDAwYjQ6IDB4MjUyNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGI1OiAweDA0NDUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKICAgIDB4MDBiNjogMHgwNDI1LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKICAgIDB4MDBiNzogMHgwNDM4LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKICAgIDB4MDBiODogMHgwNDE4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQogICAgMHgwMGI5OiAweDI1NjMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYmE6IDB4MjU1MSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MDBiYjogMHgyNTU3LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDAwYmM6IDB4MjU1ZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MDBiZDogMHgwNDM5LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKICAgIDB4MDBiZTogMHgwNDE5LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDA0M2EsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKICAgIDB4MDBjNzogMHgwNDFhLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKICAgIDB4MDBjODogMHgyNTVhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MDBjOTogMHgyNTU0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgwMGNhOiAweDI1NjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2I6IDB4MjU2NiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNjOiAweDI1NjAsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGNkOiAweDI1NTAsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgIDB4MDBjZTogMHgyNTZjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNmOiAweDAwYTQsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwZDA6IDB4MDQzYiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAogICAgMHgwMGQxOiAweDA0MWIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAogICAgMHgwMGQyOiAweDA0M2MsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KICAgIDB4MDBkMzogMHgwNDFjLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgIDB4MDBkNDogMHgwNDNkLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCiAgICAweDAwZDU6IDB4MDQxZCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCiAgICAweDAwZDY6IDB4MDQzZSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBPCiAgICAweDAwZDc6IDB4MDQxZSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KICAgIDB4MDBkODogMHgwNDNmLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCiAgICAweDAwZDk6IDB4MjUxOCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgwMGRhOiAweDI1MGMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBkYjogMHgyNTg4LCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgwMGRjOiAweDI1ODQsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDAwZGQ6IDB4MDQxZiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCiAgICAweDAwZGU6IDB4MDQ0ZiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBZQQogICAgMHgwMGRmOiAweDI1ODAsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDAwZTA6IDB4MDQyZiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiAgICAweDAwZTE6IDB4MDQ0MCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgogICAgMHgwMGUyOiAweDA0MjAsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgogICAgMHgwMGUzOiAweDA0NDEsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKICAgIDB4MDBlNDogMHgwNDIxLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKICAgIDB4MDBlNTogMHgwNDQyLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAweDAwZTY6IDB4MDQyMiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCiAgICAweDAwZTc6IDB4MDQ0MywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBVCiAgICAweDAwZTg6IDB4MDQyMywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKICAgIDB4MDBlOTogMHgwNDM2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQogICAgMHgwMGVhOiAweDA0MTYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKICAgIDB4MDBlYjogMHgwNDMyLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCiAgICAweDAwZWM6IDB4MDQxMiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCiAgICAweDAwZWQ6IDB4MDQ0YywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KICAgIDB4MDBlZTogMHgwNDJjLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCiAgICAweDAwZWY6IDB4MjExNiwgICAgICMgIE5VTUVSTyBTSUdOCiAgICAweDAwZjA6IDB4MDBhZCwgICAgICMgIFNPRlQgSFlQSEVOCiAgICAweDAwZjE6IDB4MDQ0YiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCiAgICAweDAwZjI6IDB4MDQyYiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKICAgIDB4MDBmMzogMHgwNDM3LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAweDAwZjQ6IDB4MDQxNywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCiAgICAweDAwZjU6IDB4MDQ0OCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKICAgIDB4MDBmNjogMHgwNDI4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAweDAwZjc6IDB4MDQ0ZCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFCiAgICAweDAwZjg6IDB4MDQyZCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKICAgIDB4MDBmOTogMHgwNDQ5LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAweDAwZmE6IDB4MDQyOSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAweDAwZmI6IDB4MDQ0NywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKICAgIDB4MDBmYzogMHgwNDI3LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCiAgICAweDAwZmQ6IDB4MDBhNywgICAgICMgIFNFQ1RJT04gU0lHTgogICAgMHgwMGZlOiAweDI1YTAsICAgICAjICBCTEFDSyBTUVVBUkUKICAgIDB4MDBmZjogMHgwMGEwLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKfSkKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDAwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDAwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDAwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDAwMDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDAwMDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDAwMDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwMDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwMDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDAwMDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MDAwYSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwMDBiIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwMDBjIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDAwMGQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MDAwZSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwMDBmIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MDAxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MDAxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgwMDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDAwMTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgwMDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgwMDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MDAxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MDAxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MDAxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgwMDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgwMDFhIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgwMDFiIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDAwMWMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgwMDFkIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDAwMWUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDAwMWYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgwMDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MDAyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MDAyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDAwMjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgwMDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MDAyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDAwMjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDAwMjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDAwMjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgwMDJhIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MDAyYiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgwMDJjIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gREVMRVRFCiAgICAnXHUwNDUyJyAgICMgIDB4MDA4MCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFCiAgICAnXHUwNDAyJyAgICMgIDB4MDA4MSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBESkUKICAgICdcdTA0NTMnICAgIyAgMHgwMDgyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSkUKICAgICdcdTA0MDMnICAgIyAgMHgwMDgzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdKRQogICAgJ1x1MDQ1MScgICAjICAweDAwODQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiAgICAnXHUwNDAxJyAgICMgIDB4MDA4NSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTwogICAgJ1x1MDQ1NCcgICAjICAweDAwODYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgJ1x1MDQwNCcgICAjICAweDAwODcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUtSQUlOSUFOIElFCiAgICAnXHUwNDU1JyAgICMgIDB4MDA4OCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpFCiAgICAnXHUwNDA1JyAgICMgIDB4MDA4OSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkUKICAgICdcdTA0NTYnICAgIyAgMHgwMDhhIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKICAgICdcdTA0MDYnICAgIyAgMHgwMDhiIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgJ1x1MDQ1NycgICAjICAweDAwOGMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJCiAgICAnXHUwNDA3JyAgICMgIDB4MDA4ZCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQogICAgJ1x1MDQ1OCcgICAjICAweDAwOGUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCiAgICAnXHUwNDA4JyAgICMgIDB4MDA4ZiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBKRQogICAgJ1x1MDQ1OScgICAjICAweDAwOTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRQogICAgJ1x1MDQwOScgICAjICAweDAwOTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTEpFCiAgICAnXHUwNDVhJyAgICMgIDB4MDA5MiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTkpFCiAgICAnXHUwNDBhJyAgICMgIDB4MDA5MyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkUKICAgICdcdTA0NWInICAgIyAgMHgwMDk0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBUU0hFCiAgICAnXHUwNDBiJyAgICMgIDB4MDA5NSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0hFCiAgICAnXHUwNDVjJyAgICMgIDB4MDA5NiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0pFCiAgICAnXHUwNDBjJyAgICMgIDB4MDA5NyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSkUKICAgICdcdTA0NWUnICAgIyAgMHgwMDk4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVCiAgICAnXHUwNDBlJyAgICMgIDB4MDA5OSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVCiAgICAnXHUwNDVmJyAgICMgIDB4MDA5YSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRQogICAgJ1x1MDQwZicgICAjICAweDAwOWIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpIRQogICAgJ1x1MDQ0ZScgICAjICAweDAwOWMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCiAgICAnXHUwNDJlJyAgICMgIDB4MDA5ZCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQogICAgJ1x1MDQ0YScgICAjICAweDAwOWUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgogICAgJ1x1MDQyYScgICAjICAweDAwOWYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCiAgICAnXHUwNDMwJyAgICMgIDB4MDBhMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQogICAgJ1x1MDQxMCcgICAjICAweDAwYTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQQogICAgJ1x1MDQzMScgICAjICAweDAwYTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCiAgICAnXHUwNDExJyAgICMgIDB4MDBhMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQogICAgJ1x1MDQ0NicgICAjICAweDAwYTQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQogICAgJ1x1MDQyNicgICAjICAweDAwYTUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCiAgICAnXHUwNDM0JyAgICMgIDB4MDBhNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgICdcdTA0MTQnICAgIyAgMHgwMGE3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiAgICAnXHUwNDM1JyAgICMgIDB4MDBhOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKICAgICdcdTA0MTUnICAgIyAgMHgwMGE5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCiAgICAnXHUwNDQ0JyAgICMgIDB4MDBhYSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKICAgICdcdTA0MjQnICAgIyAgMHgwMGFiIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCiAgICAnXHUwNDMzJyAgICMgIDB4MDBhYyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCiAgICAnXHUwNDEzJyAgICMgIDB4MDBhZCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUKICAgICdceGFiJyAgICAgIyAgMHgwMGFlIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4MDBhZiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTI1OTEnICAgIyAgMHgwMGIwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICMgIDB4MDBiMSAtPiBNRURJVU0gU0hBREUKICAgICdcdTI1OTMnICAgIyAgMHgwMGIyIC0+IERBUksgU0hBREUKICAgICdcdTI1MDInICAgIyAgMHgwMGIzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUyNCcgICAjICAweDAwYjQgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUwNDQ1JyAgICMgIDB4MDBiNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKICAgICdcdTA0MjUnICAgIyAgMHgwMGI2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDM4JyAgICMgIDB4MDBiNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQogICAgJ1x1MDQxOCcgICAjICAweDAwYjggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHUwNDM5JyAgICMgIDB4MDBiZCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQogICAgJ1x1MDQxOScgICAjICAweDAwYmUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQogICAgJ1x1MjUxMCcgICAjICAweDAwYmYgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgICdcdTI1MTQnICAgIyAgMHgwMGMwIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgICdcdTI1MzQnICAgIyAgMHgwMGMxIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUyYycgICAjICAweDAwYzIgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1MWMnICAgIyAgMHgwMGMzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1MDAnICAgIyAgMHgwMGM0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTNjJyAgICMgIDB4MDBjNSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTA0M2EnICAgIyAgMHgwMGM2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgJ1x1MDQxYScgICAjICAweDAwYzcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKICAgICdcdTI1NWEnICAgIyAgMHgwMGM4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTU0JyAgICMgIDB4MDBjOSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTY5JyAgICMgIDB4MDBjYSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTY2JyAgICMgIDB4MDBjYiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjAnICAgIyAgMHgwMGNjIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTUwJyAgICMgIDB4MDBjZCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgICdcdTI1NmMnICAgIyAgMHgwMGNlIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdceGE0JyAgICAgIyAgMHgwMGNmIC0+IENVUlJFTkNZIFNJR04KICAgICdcdTA0M2InICAgIyAgMHgwMGQwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTAogICAgJ1x1MDQxYicgICAjICAweDAwZDEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKICAgICdcdTA0M2MnICAgIyAgMHgwMGQyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTQogICAgJ1x1MDQxYycgICAjICAweDAwZDMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0M2QnICAgIyAgMHgwMGQ0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgJ1x1MDQxZCcgICAjICAweDAwZDUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KICAgICdcdTA0M2UnICAgIyAgMHgwMGQ2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBPCiAgICAnXHUwNDFlJyAgICMgIDB4MDBkNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCiAgICAnXHUwNDNmJyAgICMgIDB4MDBkOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHUwNDFmJyAgICMgIDB4MDBkZCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQ0ZicgICAjICAweDAwZGUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCiAgICAnXHUyNTgwJyAgICMgIDB4MDBkZiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHUwNDJmJyAgICMgIDB4MDBlMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQogICAgJ1x1MDQ0MCcgICAjICAweDAwZTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiAgICAnXHUwNDIwJyAgICMgIDB4MDBlMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgogICAgJ1x1MDQ0MScgICAjICAweDAwZTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAnXHUwNDIxJyAgICMgIDB4MDBlNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwogICAgJ1x1MDQ0MicgICAjICAweDAwZTUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAnXHUwNDIyJyAgICMgIDB4MDBlNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgJ1x1MDQ0MycgICAjICAweDAwZTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKICAgICdcdTA0MjMnICAgIyAgMHgwMGU4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKICAgICdcdTA0MzYnICAgIyAgMHgwMGU5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKICAgICdcdTA0MTYnICAgIyAgMHgwMGVhIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQzMicgICAjICAweDAwZWIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCiAgICAnXHUwNDEyJyAgICMgIDB4MDBlYyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQogICAgJ1x1MDQ0YycgICAjICAweDAwZWQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgJ1x1MDQyYycgICAjICAweDAwZWUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUyMTE2JyAgICMgIDB4MDBlZiAtPiBOVU1FUk8gU0lHTgogICAgJ1x4YWQnICAgICAjICAweDAwZjAgLT4gU09GVCBIWVBIRU4KICAgICdcdTA0NGInICAgIyAgMHgwMGYxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCiAgICAnXHUwNDJiJyAgICMgIDB4MDBmMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAnXHUwNDM3JyAgICMgIDB4MDBmMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKICAgICdcdTA0MTcnICAgIyAgMHgwMGY0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCiAgICAnXHUwNDQ4JyAgICMgIDB4MDBmNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCiAgICAnXHUwNDI4JyAgICMgIDB4MDBmNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEEKICAgICdcdTA0NGQnICAgIyAgMHgwMGY3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCiAgICAnXHUwNDJkJyAgICMgIDB4MDBmOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCiAgICAnXHUwNDQ5JyAgICMgIDB4MDBmOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKICAgICdcdTA0MjknICAgIyAgMHgwMGZhIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDQ3JyAgICMgIDB4MDBmYiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCiAgICAnXHUwNDI3JyAgICMgIDB4MDBmYyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKICAgICdceGE3JyAgICAgIyAgMHgwMGZkIC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MjVhMCcgICAjICAweDAwZmUgLT4gQkxBQ0sgU1FVQVJFCiAgICAnXHhhMCcgICAgICMgIDB4MDBmZiAtPiBOTy1CUkVBSyBTUEFDRQopCgojIyMgRW5jb2RpbmcgTWFwCgplbmNvZGluZ19tYXAgPSB7CiAgICAweDAwMDA6IDB4MDAwMCwgICAgICMgIE5VTEwKICAgIDB4MDAwMTogMHgwMDAxLCAgICAgIyAgU1RBUlQgT0YgSEVBRElORwogICAgMHgwMDAyOiAweDAwMDIsICAgICAjICBTVEFSVCBPRiBURVhUCiAgICAweDAwMDM6IDB4MDAwMywgICAgICMgIEVORCBPRiBURVhUCiAgICAweDAwMDQ6IDB4MDAwNCwgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04KICAgIDB4MDAwNTogMHgwMDA1LCAgICAgIyAgRU5RVUlSWQogICAgMHgwMDA2OiAweDAwMDYsICAgICAjICBBQ0tOT1dMRURHRQogICAgMHgwMDA3OiAweDAwMDcsICAgICAjICBCRUxMCiAgICAweDAwMDg6IDB4MDAwOCwgICAgICMgIEJBQ0tTUEFDRQogICAgMHgwMDA5OiAweDAwMDksICAgICAjICBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgIDB4MDAwYTogMHgwMDBhLCAgICAgIyAgTElORSBGRUVECiAgICAweDAwMGI6IDB4MDAwYiwgICAgICMgIFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgIDB4MDAwYzogMHgwMDBjLCAgICAgIyAgRk9STSBGRUVECiAgICAweDAwMGQ6IDB4MDAwZCwgICAgICMgIENBUlJJQUdFIFJFVFVSTgogICAgMHgwMDBlOiAweDAwMGUsICAgICAjICBTSElGVCBPVVQKICAgIDB4MDAwZjogMHgwMDBmLCAgICAgIyAgU0hJRlQgSU4KICAgIDB4MDAxMDogMHgwMDEwLCAgICAgIyAgREFUQSBMSU5LIEVTQ0FQRQogICAgMHgwMDExOiAweDAwMTEsICAgICAjICBERVZJQ0UgQ09OVFJPTCBPTkUKICAgIDB4MDAxMjogMHgwMDEyLCAgICAgIyAgREVWSUNFIENPTlRST0wgVFdPCiAgICAweDAwMTM6IDB4MDAxMywgICAgICMgIERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAweDAwMTQ6IDB4MDAxNCwgICAgICMgIERFVklDRSBDT05UUk9MIEZPVVIKICAgIDB4MDAxNTogMHgwMDE1LCAgICAgIyAgTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgIDB4MDAxNjogMHgwMDE2LCAgICAgIyAgU1lOQ0hST05PVVMgSURMRQogICAgMHgwMDE3OiAweDAwMTcsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAweDAwMTg6IDB4MDAxOCwgICAgICMgIENBTkNFTAogICAgMHgwMDE5OiAweDAwMTksICAgICAjICBFTkQgT0YgTUVESVVNCiAgICAweDAwMWE6IDB4MDAxYSwgICAgICMgIFNVQlNUSVRVVEUKICAgIDB4MDAxYjogMHgwMDFiLCAgICAgIyAgRVNDQVBFCiAgICAweDAwMWM6IDB4MDAxYywgICAgICMgIEZJTEUgU0VQQVJBVE9SCiAgICAweDAwMWQ6IDB4MDAxZCwgICAgICMgIEdST1VQIFNFUEFSQVRPUgogICAgMHgwMDFlOiAweDAwMWUsICAgICAjICBSRUNPUkQgU0VQQVJBVE9SCiAgICAweDAwMWY6IDB4MDAxZiwgICAgICMgIFVOSVQgU0VQQVJBVE9SCiAgICAweDAwMjA6IDB4MDAyMCwgICAgICMgIFNQQUNFCiAgICAweDAwMjE6IDB4MDAyMSwgICAgICMgIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDAyMjogMHgwMDIyLCAgICAgIyAgUVVPVEFUSU9OIE1BUksKICAgIDB4MDAyMzogMHgwMDIzLCAgICAgIyAgTlVNQkVSIFNJR04KICAgIDB4MDAyNDogMHgwMDI0LCAgICAgIyAgRE9MTEFSIFNJR04KICAgIDB4MDAyNTogMHgwMDI1LCAgICAgIyAgUEVSQ0VOVCBTSUdOCiAgICAweDAwMjY6IDB4MDAyNiwgICAgICMgIEFNUEVSU0FORAogICAgMHgwMDI3OiAweDAwMjcsICAgICAjICBBUE9TVFJPUEhFCiAgICAweDAwMjg6IDB4MDAyOCwgICAgICMgIExFRlQgUEFSRU5USEVTSVMKICAgIDB4MDAyOTogMHgwMDI5LCAgICAgIyAgUklHSFQgUEFSRU5USEVTSVMKICAgIDB4MDAyYTogMHgwMDJhLCAgICAgIyAgQVNURVJJU0sKICAgIDB4MDAyYjogMHgwMDJiLCAgICAgIyAgUExVUyBTSUdOCiAgICAweDAwMmM6IDB4MDAyYywgICAgICMgIENPTU1BCiAgICAweDAwMmQ6IDB4MDAyZCwgICAgICMgIEhZUEhFTi1NSU5VUwogICAgMHgwMDJlOiAweDAwMmUsICAgICAjICBGVUxMIFNUT1AKICAgIDB4MDAyZjogMHgwMDJmLCAgICAgIyAgU09MSURVUwogICAgMHgwMDMwOiAweDAwMzAsICAgICAjICBESUdJVCBaRVJPCiAgICAweDAwMzE6IDB4MDAzMSwgICAgICMgIERJR0lUIE9ORQogICAgMHgwMDMyOiAweDAwMzIsICAgICAjICBESUdJVCBUV08KICAgIDB4MDAzMzogMHgwMDMzLCAgICAgIyAgRElHSVQgVEhSRUUKICAgIDB4MDAzNDogMHgwMDM0LCAgICAgIyAgRElHSVQgRk9VUgogICAgMHgwMDM1OiAweDAwMzUsICAgICAjICBESUdJVCBGSVZFCiAgICAweDAwMzY6IDB4MDAzNiwgICAgICMgIERJR0lUIFNJWAogICAgMHgwMDM3OiAweDAwMzcsICAgICAjICBESUdJVCBTRVZFTgogICAgMHgwMDM4OiAweDAwMzgsICAgICAjICBESUdJVCBFSUdIVAogICAgMHgwMDM5OiAweDAwMzksICAgICAjICBESUdJVCBOSU5FCiAgICAweDAwM2E6IDB4MDAzYSwgICAgICMgIENPTE9OCiAgICAweDAwM2I6IDB4MDAzYiwgICAgICMgIFNFTUlDT0xPTgogICAgMHgwMDNjOiAweDAwM2MsICAgICAjICBMRVNTLVRIQU4gU0lHTgogICAgMHgwMDNkOiAweDAwM2QsICAgICAjICBFUVVBTFMgU0lHTgogICAgMHgwMDNlOiAweDAwM2UsICAgICAjICBHUkVBVEVSLVRIQU4gU0lHTgogICAgMHgwMDNmOiAweDAwM2YsICAgICAjICBRVUVTVElPTiBNQVJLCiAgICAweDAwNDA6IDB4MDA0MCwgICAgICMgIENPTU1FUkNJQUwgQVQKICAgIDB4MDA0MTogMHgwMDQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgMHgwMDQyOiAweDAwNDIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAweDAwNDM6IDB4MDA0MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgIDB4MDA0NDogMHgwMDQ0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgMHgwMDQ1OiAweDAwNDUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAweDAwNDY6IDB4MDA0NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgIDB4MDA0NzogMHgwMDQ3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgMHgwMDQ4OiAweDAwNDgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAweDAwNDk6IDB4MDA0OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgIDB4MDA0YTogMHgwMDRhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgMHgwMDRiOiAweDAwNGIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAweDAwNGM6IDB4MDA0YywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgIDB4MDA0ZDogMHgwMDRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgMHgwMDRlOiAweDAwNGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAweDAwNGY6IDB4MDA0ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgIDB4MDA1MDogMHgwMDUwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgMHgwMDUxOiAweDAwNTEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAweDAwNTI6IDB4MDA1MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgIDB4MDA1MzogMHgwMDUzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgMHgwMDU0OiAweDAwNTQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAweDAwNTU6IDB4MDA1NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgIDB4MDA1NjogMHgwMDU2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgMHgwMDU3OiAweDAwNTcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAweDAwNTg6IDB4MDA1OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgIDB4MDA1OTogMHgwMDU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgMHgwMDVhOiAweDAwNWEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAweDAwNWI6IDB4MDA1YiwgICAgICMgIExFRlQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1YzogMHgwMDVjLCAgICAgIyAgUkVWRVJTRSBTT0xJRFVTCiAgICAweDAwNWQ6IDB4MDA1ZCwgICAgICMgIFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWU6IDB4MDA1ZSwgICAgICMgIENJUkNVTUZMRVggQUNDRU5UCiAgICAweDAwNWY6IDB4MDA1ZiwgICAgICMgIExPVyBMSU5FCiAgICAweDAwNjA6IDB4MDA2MCwgICAgICMgIEdSQVZFIEFDQ0VOVAogICAgMHgwMDYxOiAweDAwNjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgMHgwMDYyOiAweDAwNjIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgMHgwMDYzOiAweDAwNjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgMHgwMDY0OiAweDAwNjQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgMHgwMDY1OiAweDAwNjUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgMHgwMDY2OiAweDAwNjYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgMHgwMDY3OiAweDAwNjcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgMHgwMDY4OiAweDAwNjgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgMHgwMDY5OiAweDAwNjksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgMHgwMDZhOiAweDAwNmEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgMHgwMDZiOiAweDAwNmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgMHgwMDZjOiAweDAwNmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgMHgwMDZkOiAweDAwNmQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgMHgwMDZlOiAweDAwNmUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgMHgwMDZmOiAweDAwNmYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgMHgwMDcwOiAweDAwNzAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgMHgwMDcxOiAweDAwNzEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgMHgwMDcyOiAweDAwNzIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgMHgwMDczOiAweDAwNzMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgMHgwMDc0OiAweDAwNzQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgMHgwMDc1OiAweDAwNzUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgMHgwMDc2OiAweDAwNzYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgMHgwMDc3OiAweDAwNzcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgMHgwMDc4OiAweDAwNzgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgMHgwMDc5OiAweDAwNzksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgMHgwMDdhOiAweDAwN2EsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgMHgwMDdiOiAweDAwN2IsICAgICAjICBMRUZUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3YzogMHgwMDdjLCAgICAgIyAgVkVSVElDQUwgTElORQogICAgMHgwMDdkOiAweDAwN2QsICAgICAjICBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2U6IDB4MDA3ZSwgICAgICMgIFRJTERFCiAgICAweDAwN2Y6IDB4MDA3ZiwgICAgICMgIERFTEVURQogICAgMHgwMGEwOiAweDAwZmYsICAgICAjICBOTy1CUkVBSyBTUEFDRQogICAgMHgwMGE0OiAweDAwY2YsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwYTc6IDB4MDBmZCwgICAgICMgIFNFQ1RJT04gU0lHTgogICAgMHgwMGFiOiAweDAwYWUsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGFkOiAweDAwZjAsICAgICAjICBTT0ZUIEhZUEhFTgogICAgMHgwMGJiOiAweDAwYWYsICAgICAjICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDQwMTogMHgwMDg1LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KICAgIDB4MDQwMjogMHgwMDgxLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREpFCiAgICAweDA0MDM6IDB4MDA4MywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdKRQogICAgMHgwNDA0OiAweDAwODcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgIDB4MDQwNTogMHgwMDg5LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpFCiAgICAweDA0MDY6IDB4MDA4YiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgMHgwNDA3OiAweDAwOGQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQogICAgMHgwNDA4OiAweDAwOGYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBKRQogICAgMHgwNDA5OiAweDAwOTEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkUKICAgIDB4MDQwYTogMHgwMDkzLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFCiAgICAweDA0MGI6IDB4MDA5NSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTSEUKICAgIDB4MDQwYzogMHgwMDk3LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0pFCiAgICAweDA0MGU6IDB4MDA5OSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFUKICAgIDB4MDQwZjogMHgwMDliLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpIRQogICAgMHgwNDEwOiAweDAwYTEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCiAgICAweDA0MTE6IDB4MDBhMywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCiAgICAweDA0MTI6IDB4MDBlYywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCiAgICAweDA0MTM6IDB4MDBhZCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQogICAgMHgwNDE0OiAweDAwYTcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQogICAgMHgwNDE1OiAweDAwYTksICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQogICAgMHgwNDE2OiAweDAwZWEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKICAgIDB4MDQxNzogMHgwMGY0LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKICAgIDB4MDQxODogMHgwMGI4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQogICAgMHgwNDE5OiAweDAwYmUsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCiAgICAweDA0MWE6IDB4MDBjNywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCiAgICAweDA0MWI6IDB4MDBkMSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCiAgICAweDA0MWM6IDB4MDBkMywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCiAgICAweDA0MWQ6IDB4MDBkNSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCiAgICAweDA0MWU6IDB4MDBkNywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KICAgIDB4MDQxZjogMHgwMGRkLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKICAgIDB4MDQyMDogMHgwMGUyLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKICAgIDB4MDQyMTogMHgwMGU0LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKICAgIDB4MDQyMjogMHgwMGU2LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKICAgIDB4MDQyMzogMHgwMGU4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQogICAgMHgwNDI0OiAweDAwYWIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgogICAgMHgwNDI1OiAweDAwYjYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQQogICAgMHgwNDI2OiAweDAwYTUsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKICAgIDB4MDQyNzogMHgwMGZjLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCiAgICAweDA0Mjg6IDB4MDBmNiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQogICAgMHgwNDI5OiAweDAwZmEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQogICAgMHgwNDJhOiAweDAwOWYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KICAgIDB4MDQyYjogMHgwMGYyLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQogICAgMHgwNDJjOiAweDAwZWUsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KICAgIDB4MDQyZDogMHgwMGY4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQogICAgMHgwNDJlOiAweDAwOWQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQogICAgMHgwNDJmOiAweDAwZTAsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQogICAgMHgwNDMwOiAweDAwYTAsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQogICAgMHgwNDMxOiAweDAwYTIsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKICAgIDB4MDQzMjogMHgwMGViLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCiAgICAweDA0MzM6IDB4MDBhYywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKICAgIDB4MDQzNDogMHgwMGE2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCiAgICAweDA0MzU6IDB4MDBhOCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBJRQogICAgMHgwNDM2OiAweDAwZTksICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCiAgICAweDA0Mzc6IDB4MDBmMywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQogICAgMHgwNDM4OiAweDAwYjcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQogICAgMHgwNDM5OiAweDAwYmQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQogICAgMHgwNDNhOiAweDAwYzYsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKICAgIDB4MDQzYjogMHgwMGQwLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCiAgICAweDA0M2M6IDB4MDBkMiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQogICAgMHgwNDNkOiAweDAwZDQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KICAgIDB4MDQzZTogMHgwMGQ2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KICAgIDB4MDQzZjogMHgwMGQ4LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCiAgICAweDA0NDA6IDB4MDBlMSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgogICAgMHgwNDQxOiAweDAwZTMsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKICAgIDB4MDQ0MjogMHgwMGU1LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAweDA0NDM6IDB4MDBlNywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBVCiAgICAweDA0NDQ6IDB4MDBhYSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgogICAgMHgwNDQ1OiAweDAwYjUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKICAgIDB4MDQ0NjogMHgwMGE0LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQogICAgMHgwNDQ3OiAweDAwZmIsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCiAgICAweDA0NDg6IDB4MDBmNSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKICAgIDB4MDQ0OTogMHgwMGY5LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAweDA0NGE6IDB4MDA5ZSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KICAgIDB4MDQ0YjogMHgwMGYxLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKICAgIDB4MDQ0YzogMHgwMGVkLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgMHgwNDRkOiAweDAwZjcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQogICAgMHgwNDRlOiAweDAwOWMsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKICAgIDB4MDQ0ZjogMHgwMGRlLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCiAgICAweDA0NTE6IDB4MDA4NCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgMHgwNDUyOiAweDAwODAsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFCiAgICAweDA0NTM6IDB4MDA4MiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBHSkUKICAgIDB4MDQ1NDogMHgwMDg2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgMHgwNDU1OiAweDAwODgsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpFCiAgICAweDA0NTY6IDB4MDA4YSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKICAgIDB4MDQ1NzogMHgwMDhjLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJCiAgICAweDA0NTg6IDB4MDA4ZSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBKRQogICAgMHgwNDU5OiAweDAwOTAsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgTEpFCiAgICAweDA0NWE6IDB4MDA5MiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBOSkUKICAgIDB4MDQ1YjogMHgwMDk0LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTSEUKICAgIDB4MDQ1YzogMHgwMDk2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtKRQogICAgMHgwNDVlOiAweDAwOTgsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVQogICAgMHgwNDVmOiAweDAwOWEsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRQogICAgMHgyMTE2OiAweDAwZWYsICAgICAjICBOVU1FUk8gU0lHTgogICAgMHgyNTAwOiAweDAwYzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgyNTAyOiAweDAwYjMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MjUwYzogMHgwMGRhLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDBiZiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDI1MTQ6IDB4MDBjMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MjUxODogMHgwMGQ5LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDBjMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjUyNDogMHgwMGI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1MmM6IDB4MDBjMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDBjMSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTNjOiAweDAwYzUsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU1MDogMHgwMGNkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDI1NTE6IDB4MDBiYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MjU1NDogMHgwMGM5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgyNTU3OiAweDAwYmIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MjU1YTogMHgwMGM4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MjU1ZDogMHgwMGJjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgyNTYwOiAweDAwY2MsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTYzOiAweDAwYjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1NjY6IDB4MDBjYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTY5OiAweDAwY2EsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NmM6IDB4MDBjZSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU4MDogMHgwMGRmLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgyNTg0OiAweDAwZGMsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDI1ODg6IDB4MDBkYiwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MjU5MTogMHgwMGIwLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MjU5MjogMHgwMGIxLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDI1OTM6IDB4MDBiMiwgICAgICMgIERBUksgU0hBREUKICAgIDB4MjVhMDogMHgwMGZlLCAgICAgIyAgQkxBQ0sgU1FVQVJFCn0KUEsDBBQAAAAAAAIgo1am3YFNhzAAAIcwAAASAAAAZW5jb2RpbmdzL2NwODU2LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBjcDg1NiBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9NSVNDL0NQODU2LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3A4NTYnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHUwNWQwJyAgICMgIDB4ODAgLT4gSEVCUkVXIExFVFRFUiBBTEVGCiAgICAnXHUwNWQxJyAgICMgIDB4ODEgLT4gSEVCUkVXIExFVFRFUiBCRVQKICAgICdcdTA1ZDInICAgIyAgMHg4MiAtPiBIRUJSRVcgTEVUVEVSIEdJTUVMCiAgICAnXHUwNWQzJyAgICMgIDB4ODMgLT4gSEVCUkVXIExFVFRFUiBEQUxFVAogICAgJ1x1MDVkNCcgICAjICAweDg0IC0+IEhFQlJFVyBMRVRURVIgSEUKICAgICdcdTA1ZDUnICAgIyAgMHg4NSAtPiBIRUJSRVcgTEVUVEVSIFZBVgogICAgJ1x1MDVkNicgICAjICAweDg2IC0+IEhFQlJFVyBMRVRURVIgWkFZSU4KICAgICdcdTA1ZDcnICAgIyAgMHg4NyAtPiBIRUJSRVcgTEVUVEVSIEhFVAogICAgJ1x1MDVkOCcgICAjICAweDg4IC0+IEhFQlJFVyBMRVRURVIgVEVUCiAgICAnXHUwNWQ5JyAgICMgIDB4ODkgLT4gSEVCUkVXIExFVFRFUiBZT0QKICAgICdcdTA1ZGEnICAgIyAgMHg4QSAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRgogICAgJ1x1MDVkYicgICAjICAweDhCIC0+IEhFQlJFVyBMRVRURVIgS0FGCiAgICAnXHUwNWRjJyAgICMgIDB4OEMgLT4gSEVCUkVXIExFVFRFUiBMQU1FRAogICAgJ1x1MDVkZCcgICAjICAweDhEIC0+IEhFQlJFVyBMRVRURVIgRklOQUwgTUVNCiAgICAnXHUwNWRlJyAgICMgIDB4OEUgLT4gSEVCUkVXIExFVFRFUiBNRU0KICAgICdcdTA1ZGYnICAgIyAgMHg4RiAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIE5VTgogICAgJ1x1MDVlMCcgICAjICAweDkwIC0+IEhFQlJFVyBMRVRURVIgTlVOCiAgICAnXHUwNWUxJyAgICMgIDB4OTEgLT4gSEVCUkVXIExFVFRFUiBTQU1FS0gKICAgICdcdTA1ZTInICAgIyAgMHg5MiAtPiBIRUJSRVcgTEVUVEVSIEFZSU4KICAgICdcdTA1ZTMnICAgIyAgMHg5MyAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIFBFCiAgICAnXHUwNWU0JyAgICMgIDB4OTQgLT4gSEVCUkVXIExFVFRFUiBQRQogICAgJ1x1MDVlNScgICAjICAweDk1IC0+IEhFQlJFVyBMRVRURVIgRklOQUwgVFNBREkKICAgICdcdTA1ZTYnICAgIyAgMHg5NiAtPiBIRUJSRVcgTEVUVEVSIFRTQURJCiAgICAnXHUwNWU3JyAgICMgIDB4OTcgLT4gSEVCUkVXIExFVFRFUiBRT0YKICAgICdcdTA1ZTgnICAgIyAgMHg5OCAtPiBIRUJSRVcgTEVUVEVSIFJFU0gKICAgICdcdTA1ZTknICAgIyAgMHg5OSAtPiBIRUJSRVcgTEVUVEVSIFNISU4KICAgICdcdTA1ZWEnICAgIyAgMHg5QSAtPiBIRUJSRVcgTEVUVEVSIFRBVgogICAgJ1x1ZmZmZScgICAjICAweDlCIC0+IFVOREVGSU5FRAogICAgJ1x4YTMnICAgICAjICAweDlDIC0+IFBPVU5EIFNJR04KICAgICdcdWZmZmUnICAgIyAgMHg5RCAtPiBVTkRFRklORUQKICAgICdceGQ3JyAgICAgIyAgMHg5RSAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4OUYgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTAgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTEgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTMgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTUgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTYgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTcgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTggLT4gVU5ERUZJTkVECiAgICAnXHhhZScgICAgICMgIDB4QTkgLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHhhYycgICAgICMgIDB4QUEgLT4gTk9UIFNJR04KICAgICdceGJkJyAgICAgIyAgMHhBQiAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJjJyAgICAgIyAgMHhBQyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgICdcdWZmZmUnICAgIyAgMHhBRCAtPiBVTkRFRklORUQKICAgICdceGFiJyAgICAgIyAgMHhBRSAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmInICAgICAjICAweEFGIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjU5MScgICAjICAweEIwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICMgIDB4QjEgLT4gTUVESVVNIFNIQURFCiAgICAnXHUyNTkzJyAgICMgIDB4QjIgLT4gREFSSyBTSEFERQogICAgJ1x1MjUwMicgICAjICAweEIzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUyNCcgICAjICAweEI0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1ZmZmZScgICAjICAweEI1IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEI2IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEI3IC0+IFVOREVGSU5FRAogICAgJ1x4YTknICAgICAjICAweEI4IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHUyNTYzJyAgICMgIDB4QjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweEJBIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgICdcdTI1NTcnICAgIyAgMHhCQiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgICdcdTI1NWQnICAgIyAgMHhCQyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHhhMicgICAgICMgIDB4QkQgLT4gQ0VOVCBTSUdOCiAgICAnXHhhNScgICAgICMgIDB4QkUgLT4gWUVOIFNJR04KICAgICdcdTI1MTAnICAgIyAgMHhCRiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAjICAweEMwIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgICdcdTI1MzQnICAgIyAgMHhDMSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1MmMnICAgIyAgMHhDMiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUxYycgICAjICAweEMzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1MDAnICAgIyAgMHhDNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgJ1x1MjUzYycgICAjICAweEM1IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1ZmZmZScgICAjICAweEM2IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEM3IC0+IFVOREVGSU5FRAogICAgJ1x1MjU1YScgICAjICAweEM4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTU0JyAgICMgIDB4QzkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU2OScgICAjICAweENBIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjYnICAgIyAgMHhDQiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjAnICAgIyAgMHhDQyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjU1MCcgICAjICAweENEIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgJ1x1MjU2YycgICAjICAweENFIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdceGE0JyAgICAgIyAgMHhDRiAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4RDAgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4RDEgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4RDIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4RDMgLT4gVU5ERUZJTkVEUwogICAgJ1x1ZmZmZScgICAjICAweEQ0IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEQ1IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEQ2IC0+IFVOREVGSU5FREUKICAgICdcdWZmZmUnICAgIyAgMHhENyAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHhEOCAtPiBVTkRFRklORUQKICAgICdcdTI1MTgnICAgIyAgMHhEOSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgICdcdTI1MGMnICAgIyAgMHhEQSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1ODgnICAgIyAgMHhEQiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4REMgLT4gTE9XRVIgSEFMRiBCTE9DSwogICAgJ1x4YTYnICAgICAjICAweEREIC0+IEJST0tFTiBCQVIKICAgICdcdWZmZmUnICAgIyAgMHhERSAtPiBVTkRFRklORUQKICAgICdcdTI1ODAnICAgIyAgMHhERiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHVmZmZlJyAgICMgIDB4RTAgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4RTEgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4RTIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4RTMgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4RTQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4RTUgLT4gVU5ERUZJTkVECiAgICAnXHhiNScgICAgICMgIDB4RTYgLT4gTUlDUk8gU0lHTgogICAgJ1x1ZmZmZScgICAjICAweEU3IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEU4IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEU5IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEVBIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEVCIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEVDIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEVEIC0+IFVOREVGSU5FRAogICAgJ1x4YWYnICAgICAjICAweEVFIC0+IE1BQ1JPTgogICAgJ1x4YjQnICAgICAjICAweEVGIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4YWQnICAgICAjICAweEYwIC0+IFNPRlQgSFlQSEVOCiAgICAnXHhiMScgICAgICMgIDB4RjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHUyMDE3JyAgICMgIDB4RjIgLT4gRE9VQkxFIExPVyBMSU5FCiAgICAnXHhiZScgICAgICMgIDB4RjMgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAnXHhiNicgICAgICMgIDB4RjQgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhhNycgICAgICMgIDB4RjUgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhmNycgICAgICMgIDB4RjYgLT4gRElWSVNJT04gU0lHTgogICAgJ1x4YjgnICAgICAjICAweEY3IC0+IENFRElMTEEKICAgICdceGIwJyAgICAgIyAgMHhGOCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YTgnICAgICAjICAweEY5IC0+IERJQUVSRVNJUwogICAgJ1x4YjcnICAgICAjICAweEZBIC0+IE1JRERMRSBET1QKICAgICdceGI5JyAgICAgIyAgMHhGQiAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdceGIzJyAgICAgIyAgMHhGQyAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x4YjInICAgICAjICAweEZEIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x1MjVhMCcgICAjICAweEZFIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YTAnICAgICAjICAweEZGIC0+IE5PLUJSRUFLIFNQQUNFCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1ZvXRMUdIQAAHSEAAASAAAAZW5jb2RpbmdzL2NwODU3LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnVkVORE9SUy9NSUNTRlQvUEMvQ1A4NTcuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwODU3JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgojIyMgRGVjb2RpbmcgTWFwCgpkZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCmRlY29kaW5nX21hcC51cGRhdGUoewogICAgMHgwMDgwOiAweDAwYzcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMDgxOiAweDAwZmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDgyOiAweDAwZTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwODM6IDB4MDBlMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDg0OiAweDAwZTQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDg1OiAweDAwZTAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwODY6IDB4MDBlNSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgMHgwMDg3OiAweDAwZTcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDA4ODogMHgwMGVhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwODk6IDB4MDBlYiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAweDAwOGE6IDB4MDBlOCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDA4YjogMHgwMGVmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4YzogMHgwMGVlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOGQ6IDB4MDEzMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkKICAgIDB4MDA4ZTogMHgwMGM0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDhmOiAweDAwYzUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgMHgwMDkwOiAweDAwYzksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDA5MTogMHgwMGU2LCAgICAgIyAgTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgIDB4MDA5MjogMHgwMGM2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBBRQogICAgMHgwMDkzOiAweDAwZjQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5NDogMHgwMGY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5NTogMHgwMGYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMDk2OiAweDAwZmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5NzogMHgwMGY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgMHgwMDk4OiAweDAxMzAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFCiAgICAweDAwOTk6IDB4MDBkNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YTogMHgwMGRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDliOiAweDAwZjgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMDljOiAweDAwYTMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwOWQ6IDB4MDBkOCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDA5ZTogMHgwMTVlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENFRElMTEEKICAgIDB4MDA5ZjogMHgwMTVmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiAgICAweDAwYTA6IDB4MDBlMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBhMTogMHgwMGVkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgMHgwMGEyOiAweDAwZjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwYTM6IDB4MDBmYSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBhNDogMHgwMGYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGE1OiAweDAwZDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBhNjogMHgwMTFlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEJSRVZFCiAgICAweDAwYTc6IDB4MDExZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQlJFVkUKICAgIDB4MDBhODogMHgwMGJmLCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGE5OiAweDAwYWUsICAgICAjICBSRUdJU1RFUkVEIFNJR04KICAgIDB4MDBhYTogMHgwMGFjLCAgICAgIyAgTk9UIFNJR04KICAgIDB4MDBhYjogMHgwMGJkLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAweDAwYWM6IDB4MDBiYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGFkOiAweDAwYTEsICAgICAjICBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwYWU6IDB4MDBhYiwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWY6IDB4MDBiYiwgICAgICMgIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGIwOiAweDI1OTEsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgwMGIxOiAweDI1OTIsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MDBiMjogMHgyNTkzLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgwMGIzOiAweDI1MDIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MDBiNDogMHgyNTI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYjU6IDB4MDBjMSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGI2OiAweDAwYzIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGI3OiAweDAwYzAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDBiODogMHgwMGE5LCAgICAgIyAgQ09QWVJJR0hUIFNJR04KICAgIDB4MDBiOTogMHgyNTYzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGJhOiAweDI1NTEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDAwYmI6IDB4MjU1NywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgwMGJjOiAweDI1NWQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDAwYmQ6IDB4MDBhMiwgICAgICMgIENFTlQgU0lHTgogICAgMHgwMGJlOiAweDAwYTUsICAgICAjICBZRU4gU0lHTgogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDAwZTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAweDAwYzc6IDB4MDBjMywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgMHgwMGM4OiAweDI1NWEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgwMGM5OiAweDI1NTQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDAwY2E6IDB4MjU2OSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYjogMHgyNTY2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2M6IDB4MjU2MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwY2Q6IDB4MjU1MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgwMGNlOiAweDI1NmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2Y6IDB4MDBhNCwgICAgICMgIENVUlJFTkNZIFNJR04KICAgIDB4MDBkMDogMHgwMGJhLCAgICAgIyAgTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwZDE6IDB4MDBhYSwgICAgICMgIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwZDI6IDB4MDBjYSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZDM6IDB4MDBjYiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkNDogMHgwMGM4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAweDAwZDU6IE5vbmUsICAgICAgICMgIFVOREVGSU5FRAogICAgMHgwMGQ2OiAweDAwY2QsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBkNzogMHgwMGNlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBkODogMHgwMGNmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGQ5OiAweDI1MTgsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MDBkYTogMHgyNTBjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDAwZGI6IDB4MjU4OCwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MDBkYzogMHgyNTg0LCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgwMGRkOiAweDAwYTYsICAgICAjICBCUk9LRU4gQkFSCiAgICAweDAwZGU6IDB4MDBjYywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgMHgwMGRmOiAweDI1ODAsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDAwZTA6IDB4MDBkMywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGUxOiAweDAwZGYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgMHgwMGUyOiAweDAwZDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGUzOiAweDAwZDIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgIDB4MDBlNDogMHgwMGY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgMHgwMGU1OiAweDAwZDUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgIDB4MDBlNjogMHgwMGI1LCAgICAgIyAgTUlDUk8gU0lHTgogICAgMHgwMGU3OiBOb25lLCAgICAgICAjICBVTkRFRklORUQKICAgIDB4MDBlODogMHgwMGQ3LCAgICAgIyAgTVVMVElQTElDQVRJT04gU0lHTgogICAgMHgwMGU5OiAweDAwZGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBlYTogMHgwMGRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlYjogMHgwMGQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwZWQ6IDB4MDBmZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAweDAwZWU6IDB4MDBhZiwgICAgICMgIE1BQ1JPTgogICAgMHgwMGVmOiAweDAwYjQsICAgICAjICBBQ1VURSBBQ0NFTlQKICAgIDB4MDBmMDogMHgwMGFkLCAgICAgIyAgU09GVCBIWVBIRU4KICAgIDB4MDBmMTogMHgwMGIxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwZjI6IE5vbmUsICAgICAgICMgIFVOREVGSU5FRAogICAgMHgwMGYzOiAweDAwYmUsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgIDB4MDBmNDogMHgwMGI2LCAgICAgIyAgUElMQ1JPVyBTSUdOCiAgICAweDAwZjU6IDB4MDBhNywgICAgICMgIFNFQ1RJT04gU0lHTgogICAgMHgwMGY2OiAweDAwZjcsICAgICAjICBESVZJU0lPTiBTSUdOCiAgICAweDAwZjc6IDB4MDBiOCwgICAgICMgIENFRElMTEEKICAgIDB4MDBmODogMHgwMGIwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBmOTogMHgwMGE4LCAgICAgIyAgRElBRVJFU0lTCiAgICAweDAwZmE6IDB4MDBiNywgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBmYjogMHgwMGI5LCAgICAgIyAgU1VQRVJTQ1JJUFQgT05FCiAgICAweDAwZmM6IDB4MDBiMywgICAgICMgIFNVUEVSU0NSSVBUIFRIUkVFCiAgICAweDAwZmQ6IDB4MDBiMiwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGZlOiAweDI1YTAsICAgICAjICBCTEFDSyBTUVVBUkUKICAgIDB4MDBmZjogMHgwMGEwLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKfSkKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDAwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDAwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDAwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDAwMDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDAwMDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDAwMDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwMDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwMDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDAwMDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MDAwYSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwMDBiIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwMDBjIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDAwMGQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MDAwZSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwMDBmIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MDAxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MDAxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgwMDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDAwMTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgwMDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgwMDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MDAxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MDAxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MDAxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgwMDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgwMDFhIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgwMDFiIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDAwMWMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgwMDFkIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDAwMWUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDAwMWYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgwMDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MDAyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MDAyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDAwMjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgwMDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MDAyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDAwMjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDAwMjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDAwMjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgwMDJhIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MDAyYiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgwMDJjIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gREVMRVRFCiAgICAnXHhjNycgICAgICMgIDB4MDA4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZmMnICAgICAjICAweDAwODEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGU5JyAgICAgIyAgMHgwMDgyIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHgwMDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTQnICAgICAjICAweDAwODQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGUwJyAgICAgIyAgMHgwMDg1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGU1JyAgICAgIyAgMHgwMDg2IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZTcnICAgICAjICAweDAwODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlYScgICAgICMgIDB4MDA4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHgwMDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlOCcgICAgICMgIDB4MDA4YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlZicgICAgICMgIDB4MDA4YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWUnICAgICAjICAweDAwOGMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTMxJyAgICMgIDB4MDA4ZCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCiAgICAnXHhjNCcgICAgICMgIDB4MDA4ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4MDA4ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzknICAgICAjICAweDAwOTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlNicgICAgICMgIDB4MDA5MSAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgJ1x4YzYnICAgICAjICAweDAwOTIgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBBRQogICAgJ1x4ZjQnICAgICAjICAweDAwOTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNicgICAgICMgIDB4MDA5NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjInICAgICAjICAweDAwOTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZmInICAgICAjICAweDAwOTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmOScgICAgICMgIDB4MDA5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHUwMTMwJyAgICMgIDB4MDA5OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFCiAgICAnXHhkNicgICAgICMgIDB4MDA5OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkYycgICAgICMgIDB4MDA5YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhmOCcgICAgICMgIDB4MDA5YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4YTMnICAgICAjICAweDAwOWMgLT4gUE9VTkQgU0lHTgogICAgJ1x4ZDgnICAgICAjICAweDAwOWQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x1MDE1ZScgICAjICAweDAwOWUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENFRElMTEEKICAgICdcdTAxNWYnICAgIyAgMHgwMDlmIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x4ZTEnICAgICAjICAweDAwYTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZWQnICAgICAjICAweDAwYTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4ZjMnICAgICAjICAweDAwYTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZmEnICAgICAjICAweDAwYTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZjEnICAgICAjICAweDAwYTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZDEnICAgICAjICAweDAwYTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHUwMTFlJyAgICMgIDB4MDBhNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQlJFVkUKICAgICdcdTAxMWYnICAgIyAgMHgwMGE3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQlJFVkUKICAgICdceGJmJyAgICAgIyAgMHgwMGE4IC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdceGFlJyAgICAgIyAgMHgwMGE5IC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YWMnICAgICAjICAweDAwYWEgLT4gTk9UIFNJR04KICAgICdceGJkJyAgICAgIyAgMHgwMGFiIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmMnICAgICAjICAweDAwYWMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhhMScgICAgICMgIDB4MDBhZCAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAnXHhhYicgICAgICMgIDB4MDBhZSAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmInICAgICAjICAweDAwYWYgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyNTkxJyAgICMgIDB4MDBiMCAtPiBMSUdIVCBTSEFERQogICAgJ1x1MjU5MicgICAjICAweDAwYjEgLT4gTUVESVVNIFNIQURFCiAgICAnXHUyNTkzJyAgICMgIDB4MDBiMiAtPiBEQVJLIFNIQURFCiAgICAnXHUyNTAyJyAgICMgIDB4MDBiMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgICdcdTI1MjQnICAgIyAgMHgwMGI0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x4YzEnICAgICAjICAweDAwYjUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMicgICAgICMgIDB4MDBiNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzAnICAgICAjICAweDAwYjcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhhOScgICAgICMgIDB4MDBiOCAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHhhMicgICAgICMgIDB4MDBiZCAtPiBDRU5UIFNJR04KICAgICdceGE1JyAgICAgIyAgMHgwMGJlIC0+IFlFTiBTSUdOCiAgICAnXHUyNTEwJyAgICMgIDB4MDBiZiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAjICAweDAwYzAgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgJ1x1MjUzNCcgICAjICAweDAwYzEgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTJjJyAgICMgIDB4MDBjMiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUxYycgICAjICAweDAwYzMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjUwMCcgICAjICAweDAwYzQgLT4gQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgICdcdTI1M2MnICAgIyAgMHgwMGM1IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x4ZTMnICAgICAjICAweDAwYzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4YzMnICAgICAjICAweDAwYzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHUyNTVhJyAgICMgIDB4MDBjOCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgJ1x1MjU1NCcgICAjICAweDAwYzkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU2OScgICAjICAweDAwY2EgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NicgICAjICAweDAwY2IgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTYwJyAgICMgIDB4MDBjYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjU1MCcgICAjICAweDAwY2QgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAnXHUyNTZjJyAgICMgIDB4MDBjZSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHhhNCcgICAgICMgIDB4MDBjZiAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHhiYScgICAgICMgIDB4MDBkMCAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGFhJyAgICAgIyAgMHgwMGQxIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhjYScgICAgICMgIDB4MDBkMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweDAwZDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzgnICAgICAjICAweDAwZDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHVmZmZlJyAgICMgIDB4MDBkNSAtPiBVTkRFRklORUQKICAgICdceGNkJyAgICAgIyAgMHgwMGQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweDAwZDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHgwMGQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHhhNicgICAgICMgIDB4MDBkZCAtPiBCUk9LRU4gQkFSCiAgICAnXHhjYycgICAgICMgIDB4MDBkZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdcdTI1ODAnICAgIyAgMHgwMGRmIC0+IFVQUEVSIEhBTEYgQkxPQ0sKICAgICdceGQzJyAgICAgIyAgMHgwMGUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZGYnICAgICAjICAweDAwZTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgICdceGQ0JyAgICAgIyAgMHgwMGUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkMicgICAgICMgIDB4MDBlMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGY1JyAgICAgIyAgMHgwMGU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGQ1JyAgICAgIyAgMHgwMGU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4YjUnICAgICAjICAweDAwZTYgLT4gTUlDUk8gU0lHTgogICAgJ1x1ZmZmZScgICAjICAweDAwZTcgLT4gVU5ERUZJTkVECiAgICAnXHhkNycgICAgICMgIDB4MDBlOCAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCiAgICAnXHhkYScgICAgICMgIDB4MDBlOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGRiJyAgICAgIyAgMHgwMGVhIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkOScgICAgICMgIDB4MDBlYiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGVjJyAgICAgIyAgMHgwMGVjIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGZmJyAgICAgIyAgMHgwMGVkIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAnXHhhZicgICAgICMgIDB4MDBlZSAtPiBNQUNST04KICAgICdceGI0JyAgICAgIyAgMHgwMGVmIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4YWQnICAgICAjICAweDAwZjAgLT4gU09GVCBIWVBIRU4KICAgICdceGIxJyAgICAgIyAgMHgwMGYxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x1ZmZmZScgICAjICAweDAwZjIgLT4gVU5ERUZJTkVECiAgICAnXHhiZScgICAgICMgIDB4MDBmMyAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdceGI2JyAgICAgIyAgMHgwMGY0IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YTcnICAgICAjICAweDAwZjUgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhmNycgICAgICMgIDB4MDBmNiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHhiOCcgICAgICMgIDB4MDBmNyAtPiBDRURJTExBCiAgICAnXHhiMCcgICAgICMgIDB4MDBmOCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YTgnICAgICAjICAweDAwZjkgLT4gRElBRVJFU0lTCiAgICAnXHhiNycgICAgICMgIDB4MDBmYSAtPiBNSURETEUgRE9UCiAgICAnXHhiOScgICAgICMgIDB4MDBmYiAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdceGIzJyAgICAgIyAgMHgwMGZjIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHhiMicgICAgICMgIDB4MDBmZCAtPiBTVVBFUlNDUklQVCBUV08KICAgICdcdTI1YTAnICAgIyAgMHgwMGZlIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YTAnICAgICAjICAweDAwZmYgLT4gTk8tQlJFQUsgU1BBQ0UKKQoKIyMjIEVuY29kaW5nIE1hcAoKZW5jb2RpbmdfbWFwID0gewogICAgMHgwMDAwOiAweDAwMDAsICAgICAjICBOVUxMCiAgICAweDAwMDE6IDB4MDAwMSwgICAgICMgIFNUQVJUIE9GIEhFQURJTkcKICAgIDB4MDAwMjogMHgwMDAyLCAgICAgIyAgU1RBUlQgT0YgVEVYVAogICAgMHgwMDAzOiAweDAwMDMsICAgICAjICBFTkQgT0YgVEVYVAogICAgMHgwMDA0OiAweDAwMDQsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAweDAwMDU6IDB4MDAwNSwgICAgICMgIEVOUVVJUlkKICAgIDB4MDAwNjogMHgwMDA2LCAgICAgIyAgQUNLTk9XTEVER0UKICAgIDB4MDAwNzogMHgwMDA3LCAgICAgIyAgQkVMTAogICAgMHgwMDA4OiAweDAwMDgsICAgICAjICBCQUNLU1BBQ0UKICAgIDB4MDAwOTogMHgwMDA5LCAgICAgIyAgSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAweDAwMGE6IDB4MDAwYSwgICAgICMgIExJTkUgRkVFRAogICAgMHgwMDBiOiAweDAwMGIsICAgICAjICBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAweDAwMGM6IDB4MDAwYywgICAgICMgIEZPUk0gRkVFRAogICAgMHgwMDBkOiAweDAwMGQsICAgICAjICBDQVJSSUFHRSBSRVRVUk4KICAgIDB4MDAwZTogMHgwMDBlLCAgICAgIyAgU0hJRlQgT1VUCiAgICAweDAwMGY6IDB4MDAwZiwgICAgICMgIFNISUZUIElOCiAgICAweDAwMTA6IDB4MDAxMCwgICAgICMgIERBVEEgTElOSyBFU0NBUEUKICAgIDB4MDAxMTogMHgwMDExLCAgICAgIyAgREVWSUNFIENPTlRST0wgT05FCiAgICAweDAwMTI6IDB4MDAxMiwgICAgICMgIERFVklDRSBDT05UUk9MIFRXTwogICAgMHgwMDEzOiAweDAwMTMsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgMHgwMDE0OiAweDAwMTQsICAgICAjICBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAweDAwMTU6IDB4MDAxNSwgICAgICMgIE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAweDAwMTY6IDB4MDAxNiwgICAgICMgIFNZTkNIUk9OT1VTIElETEUKICAgIDB4MDAxNzogMHgwMDE3LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgMHgwMDE4OiAweDAwMTgsICAgICAjICBDQU5DRUwKICAgIDB4MDAxOTogMHgwMDE5LCAgICAgIyAgRU5EIE9GIE1FRElVTQogICAgMHgwMDFhOiAweDAwMWEsICAgICAjICBTVUJTVElUVVRFCiAgICAweDAwMWI6IDB4MDAxYiwgICAgICMgIEVTQ0FQRQogICAgMHgwMDFjOiAweDAwMWMsICAgICAjICBGSUxFIFNFUEFSQVRPUgogICAgMHgwMDFkOiAweDAwMWQsICAgICAjICBHUk9VUCBTRVBBUkFUT1IKICAgIDB4MDAxZTogMHgwMDFlLCAgICAgIyAgUkVDT1JEIFNFUEFSQVRPUgogICAgMHgwMDFmOiAweDAwMWYsICAgICAjICBVTklUIFNFUEFSQVRPUgogICAgMHgwMDIwOiAweDAwMjAsICAgICAjICBTUEFDRQogICAgMHgwMDIxOiAweDAwMjEsICAgICAjICBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwMjI6IDB4MDAyMiwgICAgICMgIFFVT1RBVElPTiBNQVJLCiAgICAweDAwMjM6IDB4MDAyMywgICAgICMgIE5VTUJFUiBTSUdOCiAgICAweDAwMjQ6IDB4MDAyNCwgICAgICMgIERPTExBUiBTSUdOCiAgICAweDAwMjU6IDB4MDAyNSwgICAgICMgIFBFUkNFTlQgU0lHTgogICAgMHgwMDI2OiAweDAwMjYsICAgICAjICBBTVBFUlNBTkQKICAgIDB4MDAyNzogMHgwMDI3LCAgICAgIyAgQVBPU1RST1BIRQogICAgMHgwMDI4OiAweDAwMjgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTCiAgICAweDAwMjk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTCiAgICAweDAwMmE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLCiAgICAweDAwMmI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTgogICAgMHgwMDJjOiAweDAwMmMsICAgICAjICBDT01NQQogICAgMHgwMDJkOiAweDAwMmQsICAgICAjICBIWVBIRU4tTUlOVVMKICAgIDB4MDAyZTogMHgwMDJlLCAgICAgIyAgRlVMTCBTVE9QCiAgICAweDAwMmY6IDB4MDAyZiwgICAgICMgIFNPTElEVVMKICAgIDB4MDAzMDogMHgwMDMwLCAgICAgIyAgRElHSVQgWkVSTwogICAgMHgwMDMxOiAweDAwMzEsICAgICAjICBESUdJVCBPTkUKICAgIDB4MDAzMjogMHgwMDMyLCAgICAgIyAgRElHSVQgVFdPCiAgICAweDAwMzM6IDB4MDAzMywgICAgICMgIERJR0lUIFRIUkVFCiAgICAweDAwMzQ6IDB4MDAzNCwgICAgICMgIERJR0lUIEZPVVIKICAgIDB4MDAzNTogMHgwMDM1LCAgICAgIyAgRElHSVQgRklWRQogICAgMHgwMDM2OiAweDAwMzYsICAgICAjICBESUdJVCBTSVgKICAgIDB4MDAzNzogMHgwMDM3LCAgICAgIyAgRElHSVQgU0VWRU4KICAgIDB4MDAzODogMHgwMDM4LCAgICAgIyAgRElHSVQgRUlHSFQKICAgIDB4MDAzOTogMHgwMDM5LCAgICAgIyAgRElHSVQgTklORQogICAgMHgwMDNhOiAweDAwM2EsICAgICAjICBDT0xPTgogICAgMHgwMDNiOiAweDAwM2IsICAgICAjICBTRU1JQ09MT04KICAgIDB4MDAzYzogMHgwMDNjLCAgICAgIyAgTEVTUy1USEFOIFNJR04KICAgIDB4MDAzZDogMHgwMDNkLCAgICAgIyAgRVFVQUxTIFNJR04KICAgIDB4MDAzZTogMHgwMDNlLCAgICAgIyAgR1JFQVRFUi1USEFOIFNJR04KICAgIDB4MDAzZjogMHgwMDNmLCAgICAgIyAgUVVFU1RJT04gTUFSSwogICAgMHgwMDQwOiAweDAwNDAsICAgICAjICBDT01NRVJDSUFMIEFUCiAgICAweDAwNDE6IDB4MDA0MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA0MjogMHgwMDQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgMHgwMDQzOiAweDAwNDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAweDAwNDQ6IDB4MDA0NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgIDB4MDA0NTogMHgwMDQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgMHgwMDQ2OiAweDAwNDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAweDAwNDc6IDB4MDA0NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgIDB4MDA0ODogMHgwMDQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgMHgwMDQ5OiAweDAwNDksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwNGE6IDB4MDA0YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgIDB4MDA0YjogMHgwMDRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgMHgwMDRjOiAweDAwNGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAweDAwNGQ6IDB4MDA0ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgIDB4MDA0ZTogMHgwMDRlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgMHgwMDRmOiAweDAwNGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAweDAwNTA6IDB4MDA1MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgIDB4MDA1MTogMHgwMDUxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgMHgwMDUyOiAweDAwNTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAweDAwNTM6IDB4MDA1MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgIDB4MDA1NDogMHgwMDU0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgMHgwMDU1OiAweDAwNTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwNTY6IDB4MDA1NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgIDB4MDA1NzogMHgwMDU3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgMHgwMDU4OiAweDAwNTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAweDAwNTk6IDB4MDA1OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgIDB4MDA1YTogMHgwMDVhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgMHgwMDViOiAweDAwNWIsICAgICAjICBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWM6IDB4MDA1YywgICAgICMgIFJFVkVSU0UgU09MSURVUwogICAgMHgwMDVkOiAweDAwNWQsICAgICAjICBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVlOiAweDAwNWUsICAgICAjICBDSVJDVU1GTEVYIEFDQ0VOVAogICAgMHgwMDVmOiAweDAwNWYsICAgICAjICBMT1cgTElORQogICAgMHgwMDYwOiAweDAwNjAsICAgICAjICBHUkFWRSBBQ0NFTlQKICAgIDB4MDA2MTogMHgwMDYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgIDB4MDA2MjogMHgwMDYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgIDB4MDA2MzogMHgwMDYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgIDB4MDA2NDogMHgwMDY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgIDB4MDA2NTogMHgwMDY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgIDB4MDA2NjogMHgwMDY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgIDB4MDA2NzogMHgwMDY3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgIDB4MDA2ODogMHgwMDY4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgIDB4MDA2OTogMHgwMDY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgIDB4MDA2YTogMHgwMDZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgIDB4MDA2YjogMHgwMDZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgIDB4MDA2YzogMHgwMDZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgIDB4MDA2ZDogMHgwMDZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgIDB4MDA2ZTogMHgwMDZlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDA2ZjogMHgwMDZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgIDB4MDA3MDogMHgwMDcwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgIDB4MDA3MTogMHgwMDcxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgIDB4MDA3MjogMHgwMDcyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgIDB4MDA3MzogMHgwMDczLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgIDB4MDA3NDogMHgwMDc0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgIDB4MDA3NTogMHgwMDc1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgIDB4MDA3NjogMHgwMDc2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgIDB4MDA3NzogMHgwMDc3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgIDB4MDA3ODogMHgwMDc4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgIDB4MDA3OTogMHgwMDc5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgIDB4MDA3YTogMHgwMDdhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgIDB4MDA3YjogMHgwMDdiLCAgICAgIyAgTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2M6IDB4MDA3YywgICAgICMgIFZFUlRJQ0FMIExJTkUKICAgIDB4MDA3ZDogMHgwMDdkLCAgICAgIyAgUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdlOiAweDAwN2UsICAgICAjICBUSUxERQogICAgMHgwMDdmOiAweDAwN2YsICAgICAjICBERUxFVEUKICAgIDB4MDBhMDogMHgwMGZmLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKICAgIDB4MDBhMTogMHgwMGFkLCAgICAgIyAgSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMGEyOiAweDAwYmQsICAgICAjICBDRU5UIFNJR04KICAgIDB4MDBhMzogMHgwMDljLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMGE0OiAweDAwY2YsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwYTU6IDB4MDBiZSwgICAgICMgIFlFTiBTSUdOCiAgICAweDAwYTY6IDB4MDBkZCwgICAgICMgIEJST0tFTiBCQVIKICAgIDB4MDBhNzogMHgwMGY1LCAgICAgIyAgU0VDVElPTiBTSUdOCiAgICAweDAwYTg6IDB4MDBmOSwgICAgICMgIERJQUVSRVNJUwogICAgMHgwMGE5OiAweDAwYjgsICAgICAjICBDT1BZUklHSFQgU0lHTgogICAgMHgwMGFhOiAweDAwZDEsICAgICAjICBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGFiOiAweDAwYWUsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGFjOiAweDAwYWEsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGFkOiAweDAwZjAsICAgICAjICBTT0ZUIEhZUEhFTgogICAgMHgwMGFlOiAweDAwYTksICAgICAjICBSRUdJU1RFUkVEIFNJR04KICAgIDB4MDBhZjogMHgwMGVlLCAgICAgIyAgTUFDUk9OCiAgICAweDAwYjA6IDB4MDBmOCwgICAgICMgIERFR1JFRSBTSUdOCiAgICAweDAwYjE6IDB4MDBmMSwgICAgICMgIFBMVVMtTUlOVVMgU0lHTgogICAgMHgwMGIyOiAweDAwZmQsICAgICAjICBTVVBFUlNDUklQVCBUV08KICAgIDB4MDBiMzogMHgwMGZjLCAgICAgIyAgU1VQRVJTQ1JJUFQgVEhSRUUKICAgIDB4MDBiNDogMHgwMGVmLCAgICAgIyAgQUNVVEUgQUNDRU5UCiAgICAweDAwYjU6IDB4MDBlNiwgICAgICMgIE1JQ1JPIFNJR04KICAgIDB4MDBiNjogMHgwMGY0LCAgICAgIyAgUElMQ1JPVyBTSUdOCiAgICAweDAwYjc6IDB4MDBmYSwgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBiODogMHgwMGY3LCAgICAgIyAgQ0VESUxMQQogICAgMHgwMGI5OiAweDAwZmIsICAgICAjICBTVVBFUlNDUklQVCBPTkUKICAgIDB4MDBiYTogMHgwMGQwLCAgICAgIyAgTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwYmI6IDB4MDBhZiwgICAgICMgIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGJjOiAweDAwYWMsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgIDB4MDBiZDogMHgwMGFiLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAweDAwYmU6IDB4MDBmMywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgMHgwMGJmOiAweDAwYTgsICAgICAjICBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAweDAwYzA6IDB4MDBiNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMGMxOiAweDAwYjUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBjMjogMHgwMGI2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBjMzogMHgwMGM3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAweDAwYzQ6IDB4MDA4ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBjNTogMHgwMDhmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDBjNjogMHgwMDkyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBBRQogICAgMHgwMGM3OiAweDAwODAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMGM4OiAweDAwZDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDBjOTogMHgwMDkwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwY2E6IDB4MDBkMiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwY2I6IDB4MDBkMywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBjYzogMHgwMGRlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAweDAwY2Q6IDB4MDBkNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgMHgwMGNlOiAweDAwZDcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGNmOiAweDAwZDgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAweDAwZDE6IDB4MDBhNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGQyOiAweDAwZTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgIDB4MDBkMzogMHgwMGUwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZDQ6IDB4MDBlMiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZDU6IDB4MDBlNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgMHgwMGQ2OiAweDAwOTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZDc6IDB4MDBlOCwgICAgICMgIE1VTFRJUExJQ0FUSU9OIFNJR04KICAgIDB4MDBkODogMHgwMDlkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMGQ5OiAweDAwZWIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgIDB4MDBkYTogMHgwMGU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwZGI6IDB4MDBlYSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZGM6IDB4MDA5YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkZjogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgIDB4MDBlMDogMHgwMDg1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMGUxOiAweDAwYTAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAweDAwZTI6IDB4MDA4MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGUzOiAweDAwYzYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAweDAwZTQ6IDB4MDA4NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwZTU6IDB4MDA4NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgMHgwMGU2OiAweDAwOTEsICAgICAjICBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgMHgwMGU3OiAweDAwODcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDBlODogMHgwMDhhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMGU5OiAweDAwODIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwZWE6IDB4MDA4OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGViOiAweDAwODksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGVjOiAweDAwZWMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAweDAwZWQ6IDB4MDBhMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBlZTogMHgwMDhjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZWY6IDB4MDA4YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAweDAwZjE6IDB4MDBhNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBmMjogMHgwMDk1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMGYzOiAweDAwYTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZjQ6IDB4MDA5MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGY1OiAweDAwZTQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAweDAwZjY6IDB4MDA5NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZjc6IDB4MDBmNiwgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmODogMHgwMDliLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDBmOTogMHgwMDk3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgMHgwMGZhOiAweDAwYTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwZmI6IDB4MDA5NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGZjOiAweDAwODEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGZmOiAweDAwZWQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgMHgwMTFlOiAweDAwYTYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQlJFVkUKICAgIDB4MDExZjogMHgwMGE3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBCUkVWRQogICAgMHgwMTMwOiAweDAwOTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFCiAgICAweDAxMzE6IDB4MDA4ZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkKICAgIDB4MDE1ZTogMHgwMDllLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENFRElMTEEKICAgIDB4MDE1ZjogMHgwMDlmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiAgICAweDI1MDA6IDB4MDBjNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDI1MDI6IDB4MDBiMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgyNTBjOiAweDAwZGEsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MjUxMDogMHgwMGJmLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MjUxNDogMHgwMGMwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgyNTE4OiAweDAwZDksICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MjUxYzogMHgwMGMzLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTI0OiAweDAwYjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjUyYzogMHgwMGMyLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MjUzNDogMHgwMGMxLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1M2M6IDB4MDBjNSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTUwOiAweDAwY2QsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgIDB4MjU1MTogMHgwMGJhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgyNTU0OiAweDAwYzksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDI1NTc6IDB4MDBiYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgyNTVhOiAweDAwYzgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgyNTVkOiAweDAwYmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDI1NjA6IDB4MDBjYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1NjM6IDB4MDBiOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjU2NjogMHgwMGNiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1Njk6IDB4MDBjYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MjU2YzogMHgwMGNlLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTgwOiAweDAwZGYsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDI1ODQ6IDB4MDBkYywgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MjU4ODogMHgwMGRiLCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgyNTkxOiAweDAwYjAsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgyNTkyOiAweDAwYjEsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MjU5MzogMHgwMGIyLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgyNWEwOiAweDAwZmUsICAgICAjICBCTEFDSyBTUVVBUkUKfQpQSwMEFAAAAAAAAiCjVjkFUvnfhAAA34QAABIAAABlbmNvZGluZ3MvY3A4NTgucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGZvciBDUDg1OCwgbW9kaWZpZWQgZnJvbSBjcDg1MC4KCiIiIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3A4NTgnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDBjNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwODE6IDB4MDBmYywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDAwODI6IDB4MDBlOSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDA4MzogMHgwMGUyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwODQ6IDB4MDBlNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwODU6IDB4MDBlMCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDA4NjogMHgwMGU1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwODc6IDB4MDBlNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMDg4OiAweDAwZWEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4OTogMHgwMGViLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4YTogMHgwMGU4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMDhiOiAweDAwZWYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDhjOiAweDAwZWUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4ZDogMHgwMGVjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgMHgwMDhlOiAweDAwYzQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwOGY6IDB4MDBjNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwOTA6IDB4MDBjOSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMDkxOiAweDAwZTYsICAgICAjICBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgMHgwMDkyOiAweDAwYzYsICAgICAjICBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAweDAwOTM6IDB4MDBmNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDk0OiAweDAwZjYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgMHgwMDk1OiAweDAwZjIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAweDAwOTY6IDB4MDBmYiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDk3OiAweDAwZjksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwOTg6IDB4MDBmZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAweDAwOTk6IDB4MDBkNiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YTogMHgwMGRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDliOiAweDAwZjgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMDljOiAweDAwYTMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwOWQ6IDB4MDBkOCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDA5ZTogMHgwMGQ3LCAgICAgIyAgTVVMVElQTElDQVRJT04gU0lHTgogICAgMHgwMDlmOiAweDAxOTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgIDB4MDBhMDogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGExOiAweDAwZWQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwYTI6IDB4MDBmMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBhMzogMHgwMGZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGE0OiAweDAwZjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAweDAwYTU6IDB4MDBkMSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGE2OiAweDAwYWEsICAgICAjICBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGE3OiAweDAwYmEsICAgICAjICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBhODogMHgwMGJmLCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGE5OiAweDAwYWUsICAgICAjICBSRUdJU1RFUkVEIFNJR04KICAgIDB4MDBhYTogMHgwMGFjLCAgICAgIyAgTk9UIFNJR04KICAgIDB4MDBhYjogMHgwMGJkLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAweDAwYWM6IDB4MDBiYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGFkOiAweDAwYTEsICAgICAjICBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwYWU6IDB4MDBhYiwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWY6IDB4MDBiYiwgICAgICMgIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGIwOiAweDI1OTEsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgwMGIxOiAweDI1OTIsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MDBiMjogMHgyNTkzLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgwMGIzOiAweDI1MDIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MDBiNDogMHgyNTI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYjU6IDB4MDBjMSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGI2OiAweDAwYzIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGI3OiAweDAwYzAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDBiODogMHgwMGE5LCAgICAgIyAgQ09QWVJJR0hUIFNJR04KICAgIDB4MDBiOTogMHgyNTYzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGJhOiAweDI1NTEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDAwYmI6IDB4MjU1NywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgwMGJjOiAweDI1NWQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDAwYmQ6IDB4MDBhMiwgICAgICMgIENFTlQgU0lHTgogICAgMHgwMGJlOiAweDAwYTUsICAgICAjICBZRU4gU0lHTgogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDAwZTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAweDAwYzc6IDB4MDBjMywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgMHgwMGM4OiAweDI1NWEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgwMGM5OiAweDI1NTQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDAwY2E6IDB4MjU2OSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYjogMHgyNTY2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2M6IDB4MjU2MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwY2Q6IDB4MjU1MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgwMGNlOiAweDI1NmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2Y6IDB4MDBhNCwgICAgICMgIENVUlJFTkNZIFNJR04KICAgIDB4MDBkMDogMHgwMGYwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEVUSAogICAgMHgwMGQxOiAweDAwZDAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEgKICAgIDB4MDBkMjogMHgwMGNhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBkMzogMHgwMGNiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGQ0OiAweDAwYzgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDBkNTogMHgyMGFjLCAgICAgIyAgRVVSTyBTSUdOCiAgICAweDAwZDY6IDB4MDBjZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgMHgwMGQ3OiAweDAwY2UsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGQ4OiAweDAwY2YsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAweDAwZDk6IDB4MjUxOCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgwMGRhOiAweDI1MGMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBkYjogMHgyNTg4LCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgwMGRjOiAweDI1ODQsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDAwZGQ6IDB4MDBhNiwgICAgICMgIEJST0tFTiBCQVIKICAgIDB4MDBkZTogMHgwMGNjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAweDAwZGY6IDB4MjU4MCwgICAgICMgIFVQUEVSIEhBTEYgQkxPQ0sKICAgIDB4MDBlMDogMHgwMGQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZTE6IDB4MDBkZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAweDAwZTI6IDB4MDBkNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZTM6IDB4MDBkMiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMGU0OiAweDAwZjUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAweDAwZTU6IDB4MDBkNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgMHgwMGU2OiAweDAwYjUsICAgICAjICBNSUNSTyBTSUdOCiAgICAweDAwZTc6IDB4MDBmZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUSE9STgogICAgMHgwMGU4OiAweDAwZGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STgogICAgMHgwMGU5OiAweDAwZGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBlYTogMHgwMGRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlYjogMHgwMGQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwZWM6IDB4MDBmZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgIDB4MDBlZDogMHgwMGRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAwZWU6IDB4MDBhZiwgICAgICMgIE1BQ1JPTgogICAgMHgwMGVmOiAweDAwYjQsICAgICAjICBBQ1VURSBBQ0NFTlQKICAgIDB4MDBmMDogMHgwMGFkLCAgICAgIyAgU09GVCBIWVBIRU4KICAgIDB4MDBmMTogMHgwMGIxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwZjI6IDB4MjAxNywgICAgICMgIERPVUJMRSBMT1cgTElORQogICAgMHgwMGYzOiAweDAwYmUsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgIDB4MDBmNDogMHgwMGI2LCAgICAgIyAgUElMQ1JPVyBTSUdOCiAgICAweDAwZjU6IDB4MDBhNywgICAgICMgIFNFQ1RJT04gU0lHTgogICAgMHgwMGY2OiAweDAwZjcsICAgICAjICBESVZJU0lPTiBTSUdOCiAgICAweDAwZjc6IDB4MDBiOCwgICAgICMgIENFRElMTEEKICAgIDB4MDBmODogMHgwMGIwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBmOTogMHgwMGE4LCAgICAgIyAgRElBRVJFU0lTCiAgICAweDAwZmE6IDB4MDBiNywgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBmYjogMHgwMGI5LCAgICAgIyAgU1VQRVJTQ1JJUFQgT05FCiAgICAweDAwZmM6IDB4MDBiMywgICAgICMgIFNVUEVSU0NSSVBUIFRIUkVFCiAgICAweDAwZmQ6IDB4MDBiMiwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGZlOiAweDI1YTAsICAgICAjICBCTEFDSyBTUVVBUkUKICAgIDB4MDBmZjogMHgwMGEwLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKfSkKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDAwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDAwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDAwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDAwMDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDAwMDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDAwMDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwMDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwMDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDAwMDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MDAwYSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwMDBiIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwMDBjIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDAwMGQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MDAwZSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwMDBmIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MDAxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MDAxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgwMDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDAwMTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgwMDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgwMDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MDAxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MDAxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MDAxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgwMDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgwMDFhIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgwMDFiIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDAwMWMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgwMDFkIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDAwMWUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDAwMWYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgwMDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MDAyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MDAyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDAwMjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgwMDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MDAyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDAwMjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDAwMjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDAwMjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgwMDJhIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MDAyYiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgwMDJjIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gREVMRVRFCiAgICAnXHhjNycgICAgICMgIDB4MDA4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZmMnICAgICAjICAweDAwODEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGU5JyAgICAgIyAgMHgwMDgyIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHgwMDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTQnICAgICAjICAweDAwODQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGUwJyAgICAgIyAgMHgwMDg1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGU1JyAgICAgIyAgMHgwMDg2IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZTcnICAgICAjICAweDAwODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlYScgICAgICMgIDB4MDA4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHgwMDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlOCcgICAgICMgIDB4MDA4YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlZicgICAgICMgIDB4MDA4YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWUnICAgICAjICAweDAwOGMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlYycgICAgICMgIDB4MDA4ZCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhjNCcgICAgICMgIDB4MDA4ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4MDA4ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzknICAgICAjICAweDAwOTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlNicgICAgICMgIDB4MDA5MSAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgJ1x4YzYnICAgICAjICAweDAwOTIgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBBRQogICAgJ1x4ZjQnICAgICAjICAweDAwOTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNicgICAgICMgIDB4MDA5NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjInICAgICAjICAweDAwOTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZmInICAgICAjICAweDAwOTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmOScgICAgICMgIDB4MDA5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmZicgICAgICMgIDB4MDA5OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDYnICAgICAjICAweDAwOTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZGMnICAgICAjICAweDAwOWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjgnICAgICAjICAweDAwOWIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGEzJyAgICAgIyAgMHgwMDljIC0+IFBPVU5EIFNJR04KICAgICdceGQ4JyAgICAgIyAgMHgwMDlkIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGQ3JyAgICAgIyAgMHgwMDllIC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdcdTAxOTInICAgIyAgMHgwMDlmIC0+IExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgJ1x4ZTEnICAgICAjICAweDAwYTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZWQnICAgICAjICAweDAwYTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4ZjMnICAgICAjICAweDAwYTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZmEnICAgICAjICAweDAwYTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZjEnICAgICAjICAweDAwYTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZDEnICAgICAjICAweDAwYTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhhYScgICAgICMgIDB4MDBhNiAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YmEnICAgICAjICAweDAwYTcgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiZicgICAgICMgIDB4MDBhOCAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhhZScgICAgICMgIDB4MDBhOSAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGFjJyAgICAgIyAgMHgwMGFhIC0+IE5PVCBTSUdOCiAgICAnXHhiZCcgICAgICMgIDB4MDBhYiAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJjJyAgICAgIyAgMHgwMGFjIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YTEnICAgICAjICAweDAwYWQgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YWInICAgICAjICAweDAwYWUgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgIyAgMHgwMGFmIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjU5MScgICAjICAweDAwYjAgLT4gTElHSFQgU0hBREUKICAgICdcdTI1OTInICAgIyAgMHgwMGIxIC0+IE1FRElVTSBTSEFERQogICAgJ1x1MjU5MycgICAjICAweDAwYjIgLT4gREFSSyBTSEFERQogICAgJ1x1MjUwMicgICAjICAweDAwYjMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAnXHUyNTI0JyAgICMgIDB4MDBiNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgICdceGMxJyAgICAgIyAgMHgwMGI1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4YzInICAgICAjICAweDAwYjYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGMwJyAgICAgIyAgMHgwMGI3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4YTknICAgICAjICAweDAwYjggLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTI1NjMnICAgIyAgMHgwMGI5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NTEnICAgIyAgMHgwMGJhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgICdcdTI1NTcnICAgIyAgMHgwMGJiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjU1ZCcgICAjICAweDAwYmMgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgJ1x4YTInICAgICAjICAweDAwYmQgLT4gQ0VOVCBTSUdOCiAgICAnXHhhNScgICAgICMgIDB4MDBiZSAtPiBZRU4gU0lHTgogICAgJ1x1MjUxMCcgICAjICAweDAwYmYgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgICdcdTI1MTQnICAgIyAgMHgwMGMwIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgICdcdTI1MzQnICAgIyAgMHgwMGMxIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUyYycgICAjICAweDAwYzIgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1MWMnICAgIyAgMHgwMGMzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1MDAnICAgIyAgMHgwMGM0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTNjJyAgICMgIDB4MDBjNSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdceGUzJyAgICAgIyAgMHgwMGM2IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGMzJyAgICAgIyAgMHgwMGM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x1MjU1YScgICAjICAweDAwYzggLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgICdcdTI1NTQnICAgIyAgMHgwMGM5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1NjknICAgIyAgMHgwMGNhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjYnICAgIyAgMHgwMGNiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2MCcgICAjICAweDAwY2MgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1NTAnICAgIyAgMHgwMGNkIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgJ1x1MjU2YycgICAjICAweDAwY2UgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x4YTQnICAgICAjICAweDAwY2YgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x4ZjAnICAgICAjICAweDAwZDAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSAogICAgJ1x4ZDAnICAgICAjICAweDAwZDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRICiAgICAnXHhjYScgICAgICMgIDB4MDBkMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweDAwZDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzgnICAgICAjICAweDAwZDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHUyMGFjJyAgICMgIDB4MDBkNSAtPiBFVVJPIFNJR04KICAgICdceGNkJyAgICAgIyAgMHgwMGQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweDAwZDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHgwMGQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHhhNicgICAgICMgIDB4MDBkZCAtPiBCUk9LRU4gQkFSCiAgICAnXHhjYycgICAgICMgIDB4MDBkZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdcdTI1ODAnICAgIyAgMHgwMGRmIC0+IFVQUEVSIEhBTEYgQkxPQ0sKICAgICdceGQzJyAgICAgIyAgMHgwMGUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZGYnICAgICAjICAweDAwZTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgICdceGQ0JyAgICAgIyAgMHgwMGUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkMicgICAgICMgIDB4MDBlMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGY1JyAgICAgIyAgMHgwMGU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGQ1JyAgICAgIyAgMHgwMGU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4YjUnICAgICAjICAweDAwZTYgLT4gTUlDUk8gU0lHTgogICAgJ1x4ZmUnICAgICAjICAweDAwZTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOCiAgICAnXHhkZScgICAgICMgIDB4MDBlOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STgogICAgJ1x4ZGEnICAgICAjICAweDAwZTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4MDBlYSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZDknICAgICAjICAweDAwZWIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmZCcgICAgICMgIDB4MDBlYyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhkZCcgICAgICMgIDB4MDBlZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGFmJyAgICAgIyAgMHgwMGVlIC0+IE1BQ1JPTgogICAgJ1x4YjQnICAgICAjICAweDAwZWYgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhhZCcgICAgICMgIDB4MDBmMCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YjEnICAgICAjICAweDAwZjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHUyMDE3JyAgICMgIDB4MDBmMiAtPiBET1VCTEUgTE9XIExJTkUKICAgICdceGJlJyAgICAgIyAgMHgwMGYzIC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwogICAgJ1x4YjYnICAgICAjICAweDAwZjQgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhhNycgICAgICMgIDB4MDBmNSAtPiBTRUNUSU9OIFNJR04KICAgICdceGY3JyAgICAgIyAgMHgwMGY2IC0+IERJVklTSU9OIFNJR04KICAgICdceGI4JyAgICAgIyAgMHgwMGY3IC0+IENFRElMTEEKICAgICdceGIwJyAgICAgIyAgMHgwMGY4IC0+IERFR1JFRSBTSUdOCiAgICAnXHhhOCcgICAgICMgIDB4MDBmOSAtPiBESUFFUkVTSVMKICAgICdceGI3JyAgICAgIyAgMHgwMGZhIC0+IE1JRERMRSBET1QKICAgICdceGI5JyAgICAgIyAgMHgwMGZiIC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x4YjMnICAgICAjICAweDAwZmMgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGIyJyAgICAgIyAgMHgwMGZkIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x1MjVhMCcgICAjICAweDAwZmUgLT4gQkxBQ0sgU1FVQVJFCiAgICAnXHhhMCcgICAgICMgIDB4MDBmZiAtPiBOTy1CUkVBSyBTUEFDRQopCgojIyMgRW5jb2RpbmcgTWFwCgplbmNvZGluZ19tYXAgPSB7CiAgICAweDAwMDA6IDB4MDAwMCwgICAgICMgIE5VTEwKICAgIDB4MDAwMTogMHgwMDAxLCAgICAgIyAgU1RBUlQgT0YgSEVBRElORwogICAgMHgwMDAyOiAweDAwMDIsICAgICAjICBTVEFSVCBPRiBURVhUCiAgICAweDAwMDM6IDB4MDAwMywgICAgICMgIEVORCBPRiBURVhUCiAgICAweDAwMDQ6IDB4MDAwNCwgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04KICAgIDB4MDAwNTogMHgwMDA1LCAgICAgIyAgRU5RVUlSWQogICAgMHgwMDA2OiAweDAwMDYsICAgICAjICBBQ0tOT1dMRURHRQogICAgMHgwMDA3OiAweDAwMDcsICAgICAjICBCRUxMCiAgICAweDAwMDg6IDB4MDAwOCwgICAgICMgIEJBQ0tTUEFDRQogICAgMHgwMDA5OiAweDAwMDksICAgICAjICBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgIDB4MDAwYTogMHgwMDBhLCAgICAgIyAgTElORSBGRUVECiAgICAweDAwMGI6IDB4MDAwYiwgICAgICMgIFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgIDB4MDAwYzogMHgwMDBjLCAgICAgIyAgRk9STSBGRUVECiAgICAweDAwMGQ6IDB4MDAwZCwgICAgICMgIENBUlJJQUdFIFJFVFVSTgogICAgMHgwMDBlOiAweDAwMGUsICAgICAjICBTSElGVCBPVVQKICAgIDB4MDAwZjogMHgwMDBmLCAgICAgIyAgU0hJRlQgSU4KICAgIDB4MDAxMDogMHgwMDEwLCAgICAgIyAgREFUQSBMSU5LIEVTQ0FQRQogICAgMHgwMDExOiAweDAwMTEsICAgICAjICBERVZJQ0UgQ09OVFJPTCBPTkUKICAgIDB4MDAxMjogMHgwMDEyLCAgICAgIyAgREVWSUNFIENPTlRST0wgVFdPCiAgICAweDAwMTM6IDB4MDAxMywgICAgICMgIERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAweDAwMTQ6IDB4MDAxNCwgICAgICMgIERFVklDRSBDT05UUk9MIEZPVVIKICAgIDB4MDAxNTogMHgwMDE1LCAgICAgIyAgTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgIDB4MDAxNjogMHgwMDE2LCAgICAgIyAgU1lOQ0hST05PVVMgSURMRQogICAgMHgwMDE3OiAweDAwMTcsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAweDAwMTg6IDB4MDAxOCwgICAgICMgIENBTkNFTAogICAgMHgwMDE5OiAweDAwMTksICAgICAjICBFTkQgT0YgTUVESVVNCiAgICAweDAwMWE6IDB4MDAxYSwgICAgICMgIFNVQlNUSVRVVEUKICAgIDB4MDAxYjogMHgwMDFiLCAgICAgIyAgRVNDQVBFCiAgICAweDAwMWM6IDB4MDAxYywgICAgICMgIEZJTEUgU0VQQVJBVE9SCiAgICAweDAwMWQ6IDB4MDAxZCwgICAgICMgIEdST1VQIFNFUEFSQVRPUgogICAgMHgwMDFlOiAweDAwMWUsICAgICAjICBSRUNPUkQgU0VQQVJBVE9SCiAgICAweDAwMWY6IDB4MDAxZiwgICAgICMgIFVOSVQgU0VQQVJBVE9SCiAgICAweDAwMjA6IDB4MDAyMCwgICAgICMgIFNQQUNFCiAgICAweDAwMjE6IDB4MDAyMSwgICAgICMgIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDAyMjogMHgwMDIyLCAgICAgIyAgUVVPVEFUSU9OIE1BUksKICAgIDB4MDAyMzogMHgwMDIzLCAgICAgIyAgTlVNQkVSIFNJR04KICAgIDB4MDAyNDogMHgwMDI0LCAgICAgIyAgRE9MTEFSIFNJR04KICAgIDB4MDAyNTogMHgwMDI1LCAgICAgIyAgUEVSQ0VOVCBTSUdOCiAgICAweDAwMjY6IDB4MDAyNiwgICAgICMgIEFNUEVSU0FORAogICAgMHgwMDI3OiAweDAwMjcsICAgICAjICBBUE9TVFJPUEhFCiAgICAweDAwMjg6IDB4MDAyOCwgICAgICMgIExFRlQgUEFSRU5USEVTSVMKICAgIDB4MDAyOTogMHgwMDI5LCAgICAgIyAgUklHSFQgUEFSRU5USEVTSVMKICAgIDB4MDAyYTogMHgwMDJhLCAgICAgIyAgQVNURVJJU0sKICAgIDB4MDAyYjogMHgwMDJiLCAgICAgIyAgUExVUyBTSUdOCiAgICAweDAwMmM6IDB4MDAyYywgICAgICMgIENPTU1BCiAgICAweDAwMmQ6IDB4MDAyZCwgICAgICMgIEhZUEhFTi1NSU5VUwogICAgMHgwMDJlOiAweDAwMmUsICAgICAjICBGVUxMIFNUT1AKICAgIDB4MDAyZjogMHgwMDJmLCAgICAgIyAgU09MSURVUwogICAgMHgwMDMwOiAweDAwMzAsICAgICAjICBESUdJVCBaRVJPCiAgICAweDAwMzE6IDB4MDAzMSwgICAgICMgIERJR0lUIE9ORQogICAgMHgwMDMyOiAweDAwMzIsICAgICAjICBESUdJVCBUV08KICAgIDB4MDAzMzogMHgwMDMzLCAgICAgIyAgRElHSVQgVEhSRUUKICAgIDB4MDAzNDogMHgwMDM0LCAgICAgIyAgRElHSVQgRk9VUgogICAgMHgwMDM1OiAweDAwMzUsICAgICAjICBESUdJVCBGSVZFCiAgICAweDAwMzY6IDB4MDAzNiwgICAgICMgIERJR0lUIFNJWAogICAgMHgwMDM3OiAweDAwMzcsICAgICAjICBESUdJVCBTRVZFTgogICAgMHgwMDM4OiAweDAwMzgsICAgICAjICBESUdJVCBFSUdIVAogICAgMHgwMDM5OiAweDAwMzksICAgICAjICBESUdJVCBOSU5FCiAgICAweDAwM2E6IDB4MDAzYSwgICAgICMgIENPTE9OCiAgICAweDAwM2I6IDB4MDAzYiwgICAgICMgIFNFTUlDT0xPTgogICAgMHgwMDNjOiAweDAwM2MsICAgICAjICBMRVNTLVRIQU4gU0lHTgogICAgMHgwMDNkOiAweDAwM2QsICAgICAjICBFUVVBTFMgU0lHTgogICAgMHgwMDNlOiAweDAwM2UsICAgICAjICBHUkVBVEVSLVRIQU4gU0lHTgogICAgMHgwMDNmOiAweDAwM2YsICAgICAjICBRVUVTVElPTiBNQVJLCiAgICAweDAwNDA6IDB4MDA0MCwgICAgICMgIENPTU1FUkNJQUwgQVQKICAgIDB4MDA0MTogMHgwMDQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgMHgwMDQyOiAweDAwNDIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAweDAwNDM6IDB4MDA0MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgIDB4MDA0NDogMHgwMDQ0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgMHgwMDQ1OiAweDAwNDUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAweDAwNDY6IDB4MDA0NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgIDB4MDA0NzogMHgwMDQ3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgMHgwMDQ4OiAweDAwNDgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAweDAwNDk6IDB4MDA0OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgIDB4MDA0YTogMHgwMDRhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgMHgwMDRiOiAweDAwNGIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAweDAwNGM6IDB4MDA0YywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgIDB4MDA0ZDogMHgwMDRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgMHgwMDRlOiAweDAwNGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAweDAwNGY6IDB4MDA0ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgIDB4MDA1MDogMHgwMDUwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgMHgwMDUxOiAweDAwNTEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAweDAwNTI6IDB4MDA1MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgIDB4MDA1MzogMHgwMDUzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgMHgwMDU0OiAweDAwNTQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAweDAwNTU6IDB4MDA1NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgIDB4MDA1NjogMHgwMDU2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgMHgwMDU3OiAweDAwNTcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAweDAwNTg6IDB4MDA1OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgIDB4MDA1OTogMHgwMDU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgMHgwMDVhOiAweDAwNWEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAweDAwNWI6IDB4MDA1YiwgICAgICMgIExFRlQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1YzogMHgwMDVjLCAgICAgIyAgUkVWRVJTRSBTT0xJRFVTCiAgICAweDAwNWQ6IDB4MDA1ZCwgICAgICMgIFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWU6IDB4MDA1ZSwgICAgICMgIENJUkNVTUZMRVggQUNDRU5UCiAgICAweDAwNWY6IDB4MDA1ZiwgICAgICMgIExPVyBMSU5FCiAgICAweDAwNjA6IDB4MDA2MCwgICAgICMgIEdSQVZFIEFDQ0VOVAogICAgMHgwMDYxOiAweDAwNjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgMHgwMDYyOiAweDAwNjIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgMHgwMDYzOiAweDAwNjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgMHgwMDY0OiAweDAwNjQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgMHgwMDY1OiAweDAwNjUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgMHgwMDY2OiAweDAwNjYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgMHgwMDY3OiAweDAwNjcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgMHgwMDY4OiAweDAwNjgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgMHgwMDY5OiAweDAwNjksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgMHgwMDZhOiAweDAwNmEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgMHgwMDZiOiAweDAwNmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgMHgwMDZjOiAweDAwNmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgMHgwMDZkOiAweDAwNmQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgMHgwMDZlOiAweDAwNmUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgMHgwMDZmOiAweDAwNmYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgMHgwMDcwOiAweDAwNzAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgMHgwMDcxOiAweDAwNzEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgMHgwMDcyOiAweDAwNzIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgMHgwMDczOiAweDAwNzMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgMHgwMDc0OiAweDAwNzQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgMHgwMDc1OiAweDAwNzUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgMHgwMDc2OiAweDAwNzYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgMHgwMDc3OiAweDAwNzcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgMHgwMDc4OiAweDAwNzgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgMHgwMDc5OiAweDAwNzksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgMHgwMDdhOiAweDAwN2EsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgMHgwMDdiOiAweDAwN2IsICAgICAjICBMRUZUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3YzogMHgwMDdjLCAgICAgIyAgVkVSVElDQUwgTElORQogICAgMHgwMDdkOiAweDAwN2QsICAgICAjICBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2U6IDB4MDA3ZSwgICAgICMgIFRJTERFCiAgICAweDAwN2Y6IDB4MDA3ZiwgICAgICMgIERFTEVURQogICAgMHgwMGEwOiAweDAwZmYsICAgICAjICBOTy1CUkVBSyBTUEFDRQogICAgMHgwMGExOiAweDAwYWQsICAgICAjICBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwYTI6IDB4MDBiZCwgICAgICMgIENFTlQgU0lHTgogICAgMHgwMGEzOiAweDAwOWMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwYTQ6IDB4MDBjZiwgICAgICMgIENVUlJFTkNZIFNJR04KICAgIDB4MDBhNTogMHgwMGJlLCAgICAgIyAgWUVOIFNJR04KICAgIDB4MDBhNjogMHgwMGRkLCAgICAgIyAgQlJPS0VOIEJBUgogICAgMHgwMGE3OiAweDAwZjUsICAgICAjICBTRUNUSU9OIFNJR04KICAgIDB4MDBhODogMHgwMGY5LCAgICAgIyAgRElBRVJFU0lTCiAgICAweDAwYTk6IDB4MDBiOCwgICAgICMgIENPUFlSSUdIVCBTSUdOCiAgICAweDAwYWE6IDB4MDBhNiwgICAgICMgIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwYWI6IDB4MDBhZSwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWM6IDB4MDBhYSwgICAgICMgIE5PVCBTSUdOCiAgICAweDAwYWQ6IDB4MDBmMCwgICAgICMgIFNPRlQgSFlQSEVOCiAgICAweDAwYWU6IDB4MDBhOSwgICAgICMgIFJFR0lTVEVSRUQgU0lHTgogICAgMHgwMGFmOiAweDAwZWUsICAgICAjICBNQUNST04KICAgIDB4MDBiMDogMHgwMGY4LCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBiMTogMHgwMGYxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwYjI6IDB4MDBmZCwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGIzOiAweDAwZmMsICAgICAjICBTVVBFUlNDUklQVCBUSFJFRQogICAgMHgwMGI0OiAweDAwZWYsICAgICAjICBBQ1VURSBBQ0NFTlQKICAgIDB4MDBiNTogMHgwMGU2LCAgICAgIyAgTUlDUk8gU0lHTgogICAgMHgwMGI2OiAweDAwZjQsICAgICAjICBQSUxDUk9XIFNJR04KICAgIDB4MDBiNzogMHgwMGZhLCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGI4OiAweDAwZjcsICAgICAjICBDRURJTExBCiAgICAweDAwYjk6IDB4MDBmYiwgICAgICMgIFNVUEVSU0NSSVBUIE9ORQogICAgMHgwMGJhOiAweDAwYTcsICAgICAjICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBiYjogMHgwMGFmLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYmM6IDB4MDBhYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGJkOiAweDAwYWIsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBiZTogMHgwMGYzLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAweDAwYmY6IDB4MDBhOCwgICAgICMgIElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgIDB4MDBjMDogMHgwMGI3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwYzE6IDB4MDBiNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGMyOiAweDAwYjYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGMzOiAweDAwYzcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgIDB4MDBjNDogMHgwMDhlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGM1OiAweDAwOGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgMHgwMGM2OiAweDAwOTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAweDAwYzc6IDB4MDA4MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwYzg6IDB4MDBkNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMGM5OiAweDAwOTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDBjYTogMHgwMGQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBjYjogMHgwMGQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGNjOiAweDAwZGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgIDB4MDBjZDogMHgwMGQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwY2U6IDB4MDBkNywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwY2Y6IDB4MDBkOCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkMDogMHgwMGQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRICiAgICAweDAwZDE6IDB4MDBhNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGQyOiAweDAwZTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgIDB4MDBkMzogMHgwMGUwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZDQ6IDB4MDBlMiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZDU6IDB4MDBlNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgMHgwMGQ2OiAweDAwOTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZDc6IDB4MDA5ZSwgICAgICMgIE1VTFRJUExJQ0FUSU9OIFNJR04KICAgIDB4MDBkODogMHgwMDlkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMGQ5OiAweDAwZWIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgIDB4MDBkYTogMHgwMGU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwZGI6IDB4MDBlYSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZGM6IDB4MDA5YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkZDogMHgwMGVkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAwZGU6IDB4MDBlOCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOCiAgICAweDAwZGY6IDB4MDBlMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAweDAwZTA6IDB4MDA4NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDBlMTogMHgwMGEwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGUyOiAweDAwODMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlMzogMHgwMGM2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgMHgwMGU0OiAweDAwODQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGU1OiAweDAwODYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDBlNjogMHgwMDkxLCAgICAgIyAgTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgIDB4MDBlNzogMHgwMDg3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwZTg6IDB4MDA4YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDBlOTogMHgwMDgyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMGVhOiAweDAwODgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlYjogMHgwMDg5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBlYzogMHgwMDhkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgMHgwMGVkOiAweDAwYTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwZWU6IDB4MDA4YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGVmOiAweDAwOGIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGYwOiAweDAwZDAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRVRICiAgICAweDAwZjE6IDB4MDBhNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBmMjogMHgwMDk1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMGYzOiAweDAwYTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZjQ6IDB4MDA5MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGY1OiAweDAwZTQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAweDAwZjY6IDB4MDA5NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZjc6IDB4MDBmNiwgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmODogMHgwMDliLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDBmOTogMHgwMDk3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgMHgwMGZhOiAweDAwYTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwZmI6IDB4MDA5NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGZjOiAweDAwODEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGZkOiAweDAwZWMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAwZmU6IDB4MDBlNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUSE9STgogICAgMHgwMGZmOiAweDAwOTgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgMHgyMGFjOiAweDAwZDUsICAgICAjICBFVVJPIFNJR04KICAgIDB4MDE5MjogMHgwMDlmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAweDIwMTc6IDB4MDBmMiwgICAgICMgIERPVUJMRSBMT1cgTElORQogICAgMHgyNTAwOiAweDAwYzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgyNTAyOiAweDAwYjMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MjUwYzogMHgwMGRhLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDBiZiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDI1MTQ6IDB4MDBjMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MjUxODogMHgwMGQ5LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDBjMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjUyNDogMHgwMGI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1MmM6IDB4MDBjMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDBjMSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTNjOiAweDAwYzUsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU1MDogMHgwMGNkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDI1NTE6IDB4MDBiYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MjU1NDogMHgwMGM5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgyNTU3OiAweDAwYmIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MjU1YTogMHgwMGM4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MjU1ZDogMHgwMGJjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgyNTYwOiAweDAwY2MsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTYzOiAweDAwYjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1NjY6IDB4MDBjYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTY5OiAweDAwY2EsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NmM6IDB4MDBjZSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU4MDogMHgwMGRmLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgyNTg0OiAweDAwZGMsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDI1ODg6IDB4MDBkYiwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MjU5MTogMHgwMGIwLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MjU5MjogMHgwMGIxLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDI1OTM6IDB4MDBiMiwgICAgICMgIERBUksgU0hBREUKICAgIDB4MjVhMDogMHgwMGZlLCAgICAgIyAgQkxBQ0sgU1FVQVJFCn0KUEsDBBQAAAAAAAIgo1aDqEMYeYcAAHmHAAASAAAAZW5jb2RpbmdzL2NwODYwLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnVkVORE9SUy9NSUNTRlQvUEMvQ1A4NjAuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwODYwJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgojIyMgRGVjb2RpbmcgTWFwCgpkZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCmRlY29kaW5nX21hcC51cGRhdGUoewogICAgMHgwMDgwOiAweDAwYzcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMDgxOiAweDAwZmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDgyOiAweDAwZTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwODM6IDB4MDBlMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDg0OiAweDAwZTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAweDAwODU6IDB4MDBlMCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDA4NjogMHgwMGMxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAweDAwODc6IDB4MDBlNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMDg4OiAweDAwZWEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4OTogMHgwMGNhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4YTogMHgwMGU4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMDhiOiAweDAwY2QsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDA4YzogMHgwMGQ0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4ZDogMHgwMGVjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgMHgwMDhlOiAweDAwYzMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgIDB4MDA4ZjogMHgwMGMyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5MDogMHgwMGM5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwOTE6IDB4MDBjMCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMDkyOiAweDAwYzgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDA5MzogMHgwMGY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOTQ6IDB4MDBmNSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgIDB4MDA5NTogMHgwMGYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMDk2OiAweDAwZGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDA5NzogMHgwMGY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgMHgwMDk4OiAweDAwY2MsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgIDB4MDA5OTogMHgwMGQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAweDAwOWE6IDB4MDBkYywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YjogMHgwMGEyLCAgICAgIyAgQ0VOVCBTSUdOCiAgICAweDAwOWM6IDB4MDBhMywgICAgICMgIFBPVU5EIFNJR04KICAgIDB4MDA5ZDogMHgwMGQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwOWU6IDB4MjBhNywgICAgICMgIFBFU0VUQSBTSUdOCiAgICAweDAwOWY6IDB4MDBkMywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGEwOiAweDAwZTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAweDAwYTE6IDB4MDBlZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBhMjogMHgwMGYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGEzOiAweDAwZmEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwYTQ6IDB4MDBmMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBhNTogMHgwMGQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAweDAwYTY6IDB4MDBhYSwgICAgICMgIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwYTc6IDB4MDBiYSwgICAgICMgIE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGE4OiAweDAwYmYsICAgICAjICBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAweDAwYTk6IDB4MDBkMiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMGFhOiAweDAwYWMsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGFiOiAweDAwYmQsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBhYzogMHgwMGJjLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAweDAwYWQ6IDB4MDBhMSwgICAgICMgIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDBhZTogMHgwMGFiLCAgICAgIyAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhZjogMHgwMGJiLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYjA6IDB4MjU5MSwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDAwYjE6IDB4MjU5MiwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgwMGIyOiAweDI1OTMsICAgICAjICBEQVJLIFNIQURFCiAgICAweDAwYjM6IDB4MjUwMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgwMGI0OiAweDI1MjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiNTogMHgyNTYxLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiNjogMHgyNTYyLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiNzogMHgyNTU2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGI4OiAweDI1NTUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYjk6IDB4MjU2MywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiYTogMHgyNTUxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgwMGJiOiAweDI1NTcsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MDBiYzogMHgyNTVkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgwMGJkOiAweDI1NWMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGJlOiAweDI1NWIsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDI1NWUsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBjNzogMHgyNTVmLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwYzg6IDB4MjU1YSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDAwYzk6IDB4MjU1NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBjYTogMHgyNTY5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNiOiAweDI1NjYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYzogMHgyNTYwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjZDogMHgyNTUwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDAwY2U6IDB4MjU2YywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjZjogMHgyNTY3LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkMDogMHgyNTY4LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkMTogMHgyNTY0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQyOiAweDI1NjUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDM6IDB4MjU1OSwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGQ0OiAweDI1NTgsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNTogMHgyNTUyLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNjogMHgyNTUzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBkNzogMHgyNTZiLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkODogMHgyNTZhLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkOTogMHgyNTE4LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDAwZGE6IDB4MjUwYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgwMGRiOiAweDI1ODgsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDAwZGM6IDB4MjU4NCwgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MDBkZDogMHgyNThjLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDAwZGU6IDB4MjU5MCwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MDBkZjogMHgyNTgwLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgwMGUwOiAweDAzYjEsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgIDB4MDBlMTogMHgwMGRmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgIDB4MDBlMjogMHgwMzkzLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgIDB4MDBlMzogMHgwM2MwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAweDAwZTQ6IDB4MDNhMywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAweDAwZTU6IDB4MDNjMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgMHgwMGU2OiAweDAwYjUsICAgICAjICBNSUNSTyBTSUdOCiAgICAweDAwZTc6IDB4MDNjNCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgIDB4MDBlODogMHgwM2E2LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAweDAwZTk6IDB4MDM5OCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAweDAwZWE6IDB4MDNhOSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAweDAwZWI6IDB4MDNiNCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgMHgwMGVjOiAweDIyMWUsICAgICAjICBJTkZJTklUWQogICAgMHgwMGVkOiAweDAzYzYsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAweDAwZWU6IDB4MDNiNSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAwZWY6IDB4MjIyOSwgICAgICMgIElOVEVSU0VDVElPTgogICAgMHgwMGYwOiAweDIyNjEsICAgICAjICBJREVOVElDQUwgVE8KICAgIDB4MDBmMTogMHgwMGIxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwZjI6IDB4MjI2NSwgICAgICMgIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgMHgwMGYzOiAweDIyNjQsICAgICAjICBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MDBmNDogMHgyMzIwLCAgICAgIyAgVE9QIEhBTEYgSU5URUdSQUwKICAgIDB4MDBmNTogMHgyMzIxLCAgICAgIyAgQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgIDB4MDBmNjogMHgwMGY3LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY3OiAweDIyNDgsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MDBmODogMHgwMGIwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBmOTogMHgyMjE5LCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDAwZmE6IDB4MDBiNywgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBmYjogMHgyMjFhLCAgICAgIyAgU1FVQVJFIFJPT1QKICAgIDB4MDBmYzogMHgyMDdmLCAgICAgIyAgU1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDBmZDogMHgwMGIyLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdceGM3JyAgICAgIyAgMHgwMDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhmYycgICAgICMgIDB4MDA4MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTknICAgICAjICAweDAwODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZTInICAgICAjICAweDAwODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlMycgICAgICMgIDB4MDA4NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlMCcgICAgICMgIDB4MDA4NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMScgICAgICMgIDB4MDA4NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGU3JyAgICAgIyAgMHgwMDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZWEnICAgICAjICAweDAwODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjYScgICAgICMgIDB4MDA4OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTgnICAgICAjICAweDAwOGEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4Y2QnICAgICAjICAweDAwOGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhkNCcgICAgICMgIDB4MDA4YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWMnICAgICAjICAweDAwOGQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4YzMnICAgICAjICAweDAwOGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhjMicgICAgICMgIDB4MDA4ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzknICAgICAjICAweDAwOTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhjMCcgICAgICMgIDB4MDA5MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGM4JyAgICAgIyAgMHgwMDkyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZjQnICAgICAjICAweDAwOTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNScgICAgICMgIDB4MDA5NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmMicgICAgICMgIDB4MDA5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhkYScgICAgICMgIDB4MDA5NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGY5JyAgICAgIyAgMHgwMDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGNjJyAgICAgIyAgMHgwMDk4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZDUnICAgICAjICAweDAwOTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhkYycgICAgICMgIDB4MDA5YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhhMicgICAgICMgIDB4MDA5YiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHgwMDljIC0+IFBPVU5EIFNJR04KICAgICdceGQ5JyAgICAgIyAgMHgwMDlkIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x1MjBhNycgICAjICAweDAwOWUgLT4gUEVTRVRBIFNJR04KICAgICdceGQzJyAgICAgIyAgMHgwMDlmIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZTEnICAgICAjICAweDAwYTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZWQnICAgICAjICAweDAwYTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4ZjMnICAgICAjICAweDAwYTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZmEnICAgICAjICAweDAwYTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZjEnICAgICAjICAweDAwYTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZDEnICAgICAjICAweDAwYTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhhYScgICAgICMgIDB4MDBhNiAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YmEnICAgICAjICAweDAwYTcgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiZicgICAgICMgIDB4MDBhOCAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhkMicgICAgICMgIDB4MDBhOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGFjJyAgICAgIyAgMHgwMGFhIC0+IE5PVCBTSUdOCiAgICAnXHhiZCcgICAgICMgIDB4MDBhYiAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJjJyAgICAgIyAgMHgwMGFjIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YTEnICAgICAjICAweDAwYWQgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YWInICAgICAjICAweDAwYWUgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgIyAgMHgwMGFmIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjU5MScgICAjICAweDAwYjAgLT4gTElHSFQgU0hBREUKICAgICdcdTI1OTInICAgIyAgMHgwMGIxIC0+IE1FRElVTSBTSEFERQogICAgJ1x1MjU5MycgICAjICAweDAwYjIgLT4gREFSSyBTSEFERQogICAgJ1x1MjUwMicgICAjICAweDAwYjMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAnXHUyNTI0JyAgICMgIDB4MDBiNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NjEnICAgIyAgMHgwMGI1IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTYyJyAgICMgIDB4MDBiNiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1NicgICAjICAweDAwYjcgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1NScgICAjICAweDAwYjggLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHUyNTVjJyAgICMgIDB4MDBiZCAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1YicgICAjICAweDAwYmUgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1MTAnICAgIyAgMHgwMGJmIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAnXHUyNTE0JyAgICMgIDB4MDBjMCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTM0JyAgICMgIDB4MDBjMSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1MmMnICAgIyAgMHgwMGMyIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTFjJyAgICMgIDB4MDBjMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTAwJyAgICMgIDB4MDBjNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgJ1x1MjUzYycgICAjICAweDAwYzUgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTVlJyAgICMgIDB4MDBjNiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NWYnICAgIyAgMHgwMGM3IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU1YScgICAjICAweDAwYzggLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgICdcdTI1NTQnICAgIyAgMHgwMGM5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1NjknICAgIyAgMHgwMGNhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjYnICAgIyAgMHgwMGNiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2MCcgICAjICAweDAwY2MgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1NTAnICAgIyAgMHgwMGNkIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgJ1x1MjU2YycgICAjICAweDAwY2UgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NycgICAjICAweDAwY2YgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1NjgnICAgIyAgMHgwMGQwIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTY0JyAgICMgIDB4MDBkMSAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTY1JyAgICMgIDB4MDBkMiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTU5JyAgICMgIDB4MDBkMyAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NTgnICAgIyAgMHgwMGQ0IC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MjU1MicgICAjICAweDAwZDUgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTMnICAgIyAgMHgwMGQ2IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTZiJyAgICMgIDB4MDBkNyAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU2YScgICAjICAweDAwZDggLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHUyNThjJyAgICMgIDB4MDBkZCAtPiBMRUZUIEhBTEYgQkxPQ0sKICAgICdcdTI1OTAnICAgIyAgMHgwMGRlIC0+IFJJR0hUIEhBTEYgQkxPQ0sKICAgICdcdTI1ODAnICAgIyAgMHgwMGRmIC0+IFVQUEVSIEhBTEYgQkxPQ0sKICAgICdcdTAzYjEnICAgIyAgMHgwMGUwIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQQogICAgJ1x4ZGYnICAgICAjICAweDAwZTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgICdcdTAzOTMnICAgIyAgMHgwMGUyIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAnXHUwM2MwJyAgICMgIDB4MDBlMyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgICdcdTAzYTMnICAgIyAgMHgwMGU0IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAnXHUwM2MzJyAgICMgIDB4MDBlNSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKICAgICdceGI1JyAgICAgIyAgMHgwMGU2IC0+IE1JQ1JPIFNJR04KICAgICdcdTAzYzQnICAgIyAgMHgwMGU3IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgICdcdTAzYTYnICAgIyAgMHgwMGU4IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgJ1x1MDM5OCcgICAjICAweDAwZTkgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEEKICAgICdcdTAzYTknICAgIyAgMHgwMGVhIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAnXHUwM2I0JyAgICMgIDB4MDBlYiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKICAgICdcdTIyMWUnICAgIyAgMHgwMGVjIC0+IElORklOSVRZCiAgICAnXHUwM2M2JyAgICMgIDB4MDBlZCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAnXHUwM2I1JyAgICMgIDB4MDBlZSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgogICAgJ1x1MjIyOScgICAjICAweDAwZWYgLT4gSU5URVJTRUNUSU9OCiAgICAnXHUyMjYxJyAgICMgIDB4MDBmMCAtPiBJREVOVElDQUwgVE8KICAgICdceGIxJyAgICAgIyAgMHgwMGYxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x1MjI2NScgICAjICAweDAwZjIgLT4gR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCiAgICAnXHUyMjY0JyAgICMgIDB4MDBmMyAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTIzMjAnICAgIyAgMHgwMGY0IC0+IFRPUCBIQUxGIElOVEVHUkFMCiAgICAnXHUyMzIxJyAgICMgIDB4MDBmNSAtPiBCT1RUT00gSEFMRiBJTlRFR1JBTAogICAgJ1x4ZjcnICAgICAjICAweDAwZjYgLT4gRElWSVNJT04gU0lHTgogICAgJ1x1MjI0OCcgICAjICAweDAwZjcgLT4gQUxNT1NUIEVRVUFMIFRPCiAgICAnXHhiMCcgICAgICMgIDB4MDBmOCAtPiBERUdSRUUgU0lHTgogICAgJ1x1MjIxOScgICAjICAweDAwZjkgLT4gQlVMTEVUIE9QRVJBVE9SCiAgICAnXHhiNycgICAgICMgIDB4MDBmYSAtPiBNSURETEUgRE9UCiAgICAnXHUyMjFhJyAgICMgIDB4MDBmYiAtPiBTUVVBUkUgUk9PVAogICAgJ1x1MjA3ZicgICAjICAweDAwZmMgLT4gU1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdceGIyJyAgICAgIyAgMHgwMGZkIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x1MjVhMCcgICAjICAweDAwZmUgLT4gQkxBQ0sgU1FVQVJFCiAgICAnXHhhMCcgICAgICMgIDB4MDBmZiAtPiBOTy1CUkVBSyBTUEFDRQopCgojIyMgRW5jb2RpbmcgTWFwCgplbmNvZGluZ19tYXAgPSB7CiAgICAweDAwMDA6IDB4MDAwMCwgICAgICMgIE5VTEwKICAgIDB4MDAwMTogMHgwMDAxLCAgICAgIyAgU1RBUlQgT0YgSEVBRElORwogICAgMHgwMDAyOiAweDAwMDIsICAgICAjICBTVEFSVCBPRiBURVhUCiAgICAweDAwMDM6IDB4MDAwMywgICAgICMgIEVORCBPRiBURVhUCiAgICAweDAwMDQ6IDB4MDAwNCwgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04KICAgIDB4MDAwNTogMHgwMDA1LCAgICAgIyAgRU5RVUlSWQogICAgMHgwMDA2OiAweDAwMDYsICAgICAjICBBQ0tOT1dMRURHRQogICAgMHgwMDA3OiAweDAwMDcsICAgICAjICBCRUxMCiAgICAweDAwMDg6IDB4MDAwOCwgICAgICMgIEJBQ0tTUEFDRQogICAgMHgwMDA5OiAweDAwMDksICAgICAjICBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgIDB4MDAwYTogMHgwMDBhLCAgICAgIyAgTElORSBGRUVECiAgICAweDAwMGI6IDB4MDAwYiwgICAgICMgIFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgIDB4MDAwYzogMHgwMDBjLCAgICAgIyAgRk9STSBGRUVECiAgICAweDAwMGQ6IDB4MDAwZCwgICAgICMgIENBUlJJQUdFIFJFVFVSTgogICAgMHgwMDBlOiAweDAwMGUsICAgICAjICBTSElGVCBPVVQKICAgIDB4MDAwZjogMHgwMDBmLCAgICAgIyAgU0hJRlQgSU4KICAgIDB4MDAxMDogMHgwMDEwLCAgICAgIyAgREFUQSBMSU5LIEVTQ0FQRQogICAgMHgwMDExOiAweDAwMTEsICAgICAjICBERVZJQ0UgQ09OVFJPTCBPTkUKICAgIDB4MDAxMjogMHgwMDEyLCAgICAgIyAgREVWSUNFIENPTlRST0wgVFdPCiAgICAweDAwMTM6IDB4MDAxMywgICAgICMgIERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAweDAwMTQ6IDB4MDAxNCwgICAgICMgIERFVklDRSBDT05UUk9MIEZPVVIKICAgIDB4MDAxNTogMHgwMDE1LCAgICAgIyAgTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgIDB4MDAxNjogMHgwMDE2LCAgICAgIyAgU1lOQ0hST05PVVMgSURMRQogICAgMHgwMDE3OiAweDAwMTcsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAweDAwMTg6IDB4MDAxOCwgICAgICMgIENBTkNFTAogICAgMHgwMDE5OiAweDAwMTksICAgICAjICBFTkQgT0YgTUVESVVNCiAgICAweDAwMWE6IDB4MDAxYSwgICAgICMgIFNVQlNUSVRVVEUKICAgIDB4MDAxYjogMHgwMDFiLCAgICAgIyAgRVNDQVBFCiAgICAweDAwMWM6IDB4MDAxYywgICAgICMgIEZJTEUgU0VQQVJBVE9SCiAgICAweDAwMWQ6IDB4MDAxZCwgICAgICMgIEdST1VQIFNFUEFSQVRPUgogICAgMHgwMDFlOiAweDAwMWUsICAgICAjICBSRUNPUkQgU0VQQVJBVE9SCiAgICAweDAwMWY6IDB4MDAxZiwgICAgICMgIFVOSVQgU0VQQVJBVE9SCiAgICAweDAwMjA6IDB4MDAyMCwgICAgICMgIFNQQUNFCiAgICAweDAwMjE6IDB4MDAyMSwgICAgICMgIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDAyMjogMHgwMDIyLCAgICAgIyAgUVVPVEFUSU9OIE1BUksKICAgIDB4MDAyMzogMHgwMDIzLCAgICAgIyAgTlVNQkVSIFNJR04KICAgIDB4MDAyNDogMHgwMDI0LCAgICAgIyAgRE9MTEFSIFNJR04KICAgIDB4MDAyNTogMHgwMDI1LCAgICAgIyAgUEVSQ0VOVCBTSUdOCiAgICAweDAwMjY6IDB4MDAyNiwgICAgICMgIEFNUEVSU0FORAogICAgMHgwMDI3OiAweDAwMjcsICAgICAjICBBUE9TVFJPUEhFCiAgICAweDAwMjg6IDB4MDAyOCwgICAgICMgIExFRlQgUEFSRU5USEVTSVMKICAgIDB4MDAyOTogMHgwMDI5LCAgICAgIyAgUklHSFQgUEFSRU5USEVTSVMKICAgIDB4MDAyYTogMHgwMDJhLCAgICAgIyAgQVNURVJJU0sKICAgIDB4MDAyYjogMHgwMDJiLCAgICAgIyAgUExVUyBTSUdOCiAgICAweDAwMmM6IDB4MDAyYywgICAgICMgIENPTU1BCiAgICAweDAwMmQ6IDB4MDAyZCwgICAgICMgIEhZUEhFTi1NSU5VUwogICAgMHgwMDJlOiAweDAwMmUsICAgICAjICBGVUxMIFNUT1AKICAgIDB4MDAyZjogMHgwMDJmLCAgICAgIyAgU09MSURVUwogICAgMHgwMDMwOiAweDAwMzAsICAgICAjICBESUdJVCBaRVJPCiAgICAweDAwMzE6IDB4MDAzMSwgICAgICMgIERJR0lUIE9ORQogICAgMHgwMDMyOiAweDAwMzIsICAgICAjICBESUdJVCBUV08KICAgIDB4MDAzMzogMHgwMDMzLCAgICAgIyAgRElHSVQgVEhSRUUKICAgIDB4MDAzNDogMHgwMDM0LCAgICAgIyAgRElHSVQgRk9VUgogICAgMHgwMDM1OiAweDAwMzUsICAgICAjICBESUdJVCBGSVZFCiAgICAweDAwMzY6IDB4MDAzNiwgICAgICMgIERJR0lUIFNJWAogICAgMHgwMDM3OiAweDAwMzcsICAgICAjICBESUdJVCBTRVZFTgogICAgMHgwMDM4OiAweDAwMzgsICAgICAjICBESUdJVCBFSUdIVAogICAgMHgwMDM5OiAweDAwMzksICAgICAjICBESUdJVCBOSU5FCiAgICAweDAwM2E6IDB4MDAzYSwgICAgICMgIENPTE9OCiAgICAweDAwM2I6IDB4MDAzYiwgICAgICMgIFNFTUlDT0xPTgogICAgMHgwMDNjOiAweDAwM2MsICAgICAjICBMRVNTLVRIQU4gU0lHTgogICAgMHgwMDNkOiAweDAwM2QsICAgICAjICBFUVVBTFMgU0lHTgogICAgMHgwMDNlOiAweDAwM2UsICAgICAjICBHUkVBVEVSLVRIQU4gU0lHTgogICAgMHgwMDNmOiAweDAwM2YsICAgICAjICBRVUVTVElPTiBNQVJLCiAgICAweDAwNDA6IDB4MDA0MCwgICAgICMgIENPTU1FUkNJQUwgQVQKICAgIDB4MDA0MTogMHgwMDQxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgMHgwMDQyOiAweDAwNDIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAweDAwNDM6IDB4MDA0MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgIDB4MDA0NDogMHgwMDQ0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgMHgwMDQ1OiAweDAwNDUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAweDAwNDY6IDB4MDA0NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgIDB4MDA0NzogMHgwMDQ3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgMHgwMDQ4OiAweDAwNDgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAweDAwNDk6IDB4MDA0OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgIDB4MDA0YTogMHgwMDRhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgMHgwMDRiOiAweDAwNGIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAweDAwNGM6IDB4MDA0YywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgIDB4MDA0ZDogMHgwMDRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgMHgwMDRlOiAweDAwNGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAweDAwNGY6IDB4MDA0ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgIDB4MDA1MDogMHgwMDUwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgMHgwMDUxOiAweDAwNTEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAweDAwNTI6IDB4MDA1MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgIDB4MDA1MzogMHgwMDUzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgMHgwMDU0OiAweDAwNTQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAweDAwNTU6IDB4MDA1NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgIDB4MDA1NjogMHgwMDU2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgMHgwMDU3OiAweDAwNTcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAweDAwNTg6IDB4MDA1OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgIDB4MDA1OTogMHgwMDU5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgMHgwMDVhOiAweDAwNWEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAweDAwNWI6IDB4MDA1YiwgICAgICMgIExFRlQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1YzogMHgwMDVjLCAgICAgIyAgUkVWRVJTRSBTT0xJRFVTCiAgICAweDAwNWQ6IDB4MDA1ZCwgICAgICMgIFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWU6IDB4MDA1ZSwgICAgICMgIENJUkNVTUZMRVggQUNDRU5UCiAgICAweDAwNWY6IDB4MDA1ZiwgICAgICMgIExPVyBMSU5FCiAgICAweDAwNjA6IDB4MDA2MCwgICAgICMgIEdSQVZFIEFDQ0VOVAogICAgMHgwMDYxOiAweDAwNjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgMHgwMDYyOiAweDAwNjIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgMHgwMDYzOiAweDAwNjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgMHgwMDY0OiAweDAwNjQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgMHgwMDY1OiAweDAwNjUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgMHgwMDY2OiAweDAwNjYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgMHgwMDY3OiAweDAwNjcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgMHgwMDY4OiAweDAwNjgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgMHgwMDY5OiAweDAwNjksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgMHgwMDZhOiAweDAwNmEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgMHgwMDZiOiAweDAwNmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgMHgwMDZjOiAweDAwNmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgMHgwMDZkOiAweDAwNmQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgMHgwMDZlOiAweDAwNmUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgMHgwMDZmOiAweDAwNmYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgMHgwMDcwOiAweDAwNzAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgMHgwMDcxOiAweDAwNzEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgMHgwMDcyOiAweDAwNzIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgMHgwMDczOiAweDAwNzMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgMHgwMDc0OiAweDAwNzQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgMHgwMDc1OiAweDAwNzUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgMHgwMDc2OiAweDAwNzYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgMHgwMDc3OiAweDAwNzcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgMHgwMDc4OiAweDAwNzgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgMHgwMDc5OiAweDAwNzksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgMHgwMDdhOiAweDAwN2EsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgMHgwMDdiOiAweDAwN2IsICAgICAjICBMRUZUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3YzogMHgwMDdjLCAgICAgIyAgVkVSVElDQUwgTElORQogICAgMHgwMDdkOiAweDAwN2QsICAgICAjICBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2U6IDB4MDA3ZSwgICAgICMgIFRJTERFCiAgICAweDAwN2Y6IDB4MDA3ZiwgICAgICMgIERFTEVURQogICAgMHgwMGEwOiAweDAwZmYsICAgICAjICBOTy1CUkVBSyBTUEFDRQogICAgMHgwMGExOiAweDAwYWQsICAgICAjICBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwYTI6IDB4MDA5YiwgICAgICMgIENFTlQgU0lHTgogICAgMHgwMGEzOiAweDAwOWMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwYWE6IDB4MDBhNiwgICAgICMgIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwYWI6IDB4MDBhZSwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWM6IDB4MDBhYSwgICAgICMgIE5PVCBTSUdOCiAgICAweDAwYjA6IDB4MDBmOCwgICAgICMgIERFR1JFRSBTSUdOCiAgICAweDAwYjE6IDB4MDBmMSwgICAgICMgIFBMVVMtTUlOVVMgU0lHTgogICAgMHgwMGIyOiAweDAwZmQsICAgICAjICBTVVBFUlNDUklQVCBUV08KICAgIDB4MDBiNTogMHgwMGU2LCAgICAgIyAgTUlDUk8gU0lHTgogICAgMHgwMGI3OiAweDAwZmEsICAgICAjICBNSURETEUgRE9UCiAgICAweDAwYmE6IDB4MDBhNywgICAgICMgIE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGJiOiAweDAwYWYsICAgICAjICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBiYzogMHgwMGFjLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAweDAwYmQ6IDB4MDBhYiwgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgMHgwMGJmOiAweDAwYTgsICAgICAjICBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAweDAwYzA6IDB4MDA5MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMGMxOiAweDAwODYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBjMjogMHgwMDhmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBjMzogMHgwMDhlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAweDAwYzc6IDB4MDA4MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwYzg6IDB4MDA5MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMGM5OiAweDAwOTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDBjYTogMHgwMDg5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBjYzogMHgwMDk4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAweDAwY2Q6IDB4MDA4YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgMHgwMGQxOiAweDAwYTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBkMjogMHgwMGE5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAweDAwZDM6IDB4MDA5ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGQ0OiAweDAwOGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGQ1OiAweDAwOTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgIDB4MDBkOTogMHgwMDlkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwZGE6IDB4MDA5NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGRjOiAweDAwOWEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDAwZGY6IDB4MDBlMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAweDAwZTA6IDB4MDA4NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDBlMTogMHgwMGEwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGUyOiAweDAwODMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlMzogMHgwMDg0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgMHgwMGU3OiAweDAwODcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDBlODogMHgwMDhhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMGU5OiAweDAwODIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwZWE6IDB4MDA4OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGVjOiAweDAwOGQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAweDAwZWQ6IDB4MDBhMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBmMTogMHgwMGE0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGYyOiAweDAwOTUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAweDAwZjM6IDB4MDBhMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBmNDogMHgwMDkzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZjU6IDB4MDA5NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgIDB4MDBmNzogMHgwMGY2LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY5OiAweDAwOTcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwZmE6IDB4MDBhMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBmYzogMHgwMDgxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDM5MzogMHgwMGUyLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgIDB4MDM5ODogMHgwMGU5LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEEKICAgIDB4MDNhMzogMHgwMGU0LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKICAgIDB4MDNhNjogMHgwMGU4LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAweDAzYTk6IDB4MDBlYSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAweDAzYjE6IDB4MDBlMCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQQogICAgMHgwM2I0OiAweDAwZWIsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKICAgIDB4MDNiNTogMHgwMGVlLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KICAgIDB4MDNjMDogMHgwMGUzLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAweDAzYzM6IDB4MDBlNSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgMHgwM2M0OiAweDAwZTcsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgVEFVCiAgICAweDAzYzY6IDB4MDBlZCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgIDB4MjA3ZjogMHgwMGZjLCAgICAgIyAgU1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MjBhNzogMHgwMDllLCAgICAgIyAgUEVTRVRBIFNJR04KICAgIDB4MjIxOTogMHgwMGY5LCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDIyMWE6IDB4MDBmYiwgICAgICMgIFNRVUFSRSBST09UCiAgICAweDIyMWU6IDB4MDBlYywgICAgICMgIElORklOSVRZCiAgICAweDIyMjk6IDB4MDBlZiwgICAgICMgIElOVEVSU0VDVElPTgogICAgMHgyMjQ4OiAweDAwZjcsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MjI2MTogMHgwMGYwLCAgICAgIyAgSURFTlRJQ0FMIFRPCiAgICAweDIyNjQ6IDB4MDBmMywgICAgICMgIExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgMHgyMjY1OiAweDAwZjIsICAgICAjICBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MjMyMDogMHgwMGY0LCAgICAgIyAgVE9QIEhBTEYgSU5URUdSQUwKICAgIDB4MjMyMTogMHgwMGY1LCAgICAgIyAgQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgIDB4MjUwMDogMHgwMGM0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgIDB4MjUwMjogMHgwMGIzLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAweDI1MGM6IDB4MDBkYSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgyNTEwOiAweDAwYmYsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgyNTE0OiAweDAwYzAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDI1MTg6IDB4MDBkOSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgyNTFjOiAweDAwYzMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1MjQ6IDB4MDBiNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTJjOiAweDAwYzIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTM0OiAweDAwYzEsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MjUzYzogMHgwMGM1LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NTA6IDB4MDBjZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgyNTUxOiAweDAwYmEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDI1NTI6IDB4MDBkNSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDI1NTM6IDB4MDBkNiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NTQ6IDB4MDBjOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MjU1NTogMHgwMGI4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgyNTU2OiAweDAwYjcsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NTc6IDB4MDBiYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgyNTU4OiAweDAwZDQsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1OTogMHgwMGQzLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NWE6IDB4MDBjOCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDI1NWI6IDB4MDBiZSwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NWM6IDB4MDBiZCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NWQ6IDB4MDBiYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MjU1ZTogMHgwMGM2LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDI1NWY6IDB4MDBjNywgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgyNTYwOiAweDAwY2MsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTYxOiAweDAwYjUsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgyNTYyOiAweDAwYjYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgyNTYzOiAweDAwYjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1NjQ6IDB4MDBkMSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MjU2NTogMHgwMGQyLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTY2OiAweDAwY2IsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MjU2NzogMHgwMGNmLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MjU2ODogMHgwMGQwLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MjU2OTogMHgwMGNhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTZhOiAweDAwZDgsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTZiOiAweDAwZDcsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTZjOiAweDAwY2UsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1ODA6IDB4MDBkZiwgICAgICMgIFVQUEVSIEhBTEYgQkxPQ0sKICAgIDB4MjU4NDogMHgwMGRjLCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgyNTg4OiAweDAwZGIsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDI1OGM6IDB4MDBkZCwgICAgICMgIExFRlQgSEFMRiBCTE9DSwogICAgMHgyNTkwOiAweDAwZGUsICAgICAjICBSSUdIVCBIQUxGIEJMT0NLCiAgICAweDI1OTE6IDB4MDBiMCwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDI1OTI6IDB4MDBiMSwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgyNTkzOiAweDAwYjIsICAgICAjICBEQVJLIFNIQURFCiAgICAweDI1YTA6IDB4MDBmZSwgICAgICMgIEJMQUNLIFNRVUFSRQp9ClBLAwQUAAAAAAACIKNWVsuB+0mHAABJhwAAEgAAAGVuY29kaW5ncy9jcDg2MS5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgZ2VuZXJhdGVkIGZyb20gJ1ZFTkRPUlMvTUlDU0ZUL1BDL0NQODYxLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDg2MScsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKIyMjIERlY29kaW5nIE1hcAoKZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQpkZWNvZGluZ19tYXAudXBkYXRlKHsKICAgIDB4MDA4MDogMHgwMGM3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDA4MTogMHgwMGZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4MjogMHgwMGU5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMDgzOiAweDAwZTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4NDogMHgwMGU0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4NTogMHgwMGUwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMDg2OiAweDAwZTUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDA4NzogMHgwMGU3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwODg6IDB4MDBlYSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDg5OiAweDAwZWIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDhhOiAweDAwZTgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAweDAwOGI6IDB4MDBkMCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEVUSAogICAgMHgwMDhjOiAweDAwZjAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRVRICiAgICAweDAwOGQ6IDB4MDBkZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOCiAgICAweDAwOGU6IDB4MDBjNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4ZjogMHgwMGM1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDA5MDogMHgwMGM5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwOTE6IDB4MDBlNiwgICAgICMgIExBVElOIFNNQUxMIExJR0FUVVJFIEFFCiAgICAweDAwOTI6IDB4MDBjNiwgICAgICMgIExBVElOIENBUElUQUwgTElHQVRVUkUgQUUKICAgIDB4MDA5MzogMHgwMGY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOTQ6IDB4MDBmNiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwOTU6IDB4MDBmZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUSE9STgogICAgMHgwMDk2OiAweDAwZmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5NzogMHgwMGRkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAweDAwOTg6IDB4MDBmZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgIDB4MDA5OTogMHgwMGQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgMHgwMDlhOiAweDAwZGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDAwOWI6IDB4MDBmOCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAweDAwOWM6IDB4MDBhMywgICAgICMgIFBPVU5EIFNJR04KICAgIDB4MDA5ZDogMHgwMGQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMDllOiAweDIwYTcsICAgICAjICBQRVNFVEEgU0lHTgogICAgMHgwMDlmOiAweDAxOTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgIDB4MDBhMDogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGExOiAweDAwZWQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwYTI6IDB4MDBmMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBhMzogMHgwMGZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGE0OiAweDAwYzEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBhNTogMHgwMGNkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwYTY6IDB4MDBkMywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGE3OiAweDAwZGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBhODogMHgwMGJmLCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGE5OiAweDIzMTAsICAgICAjICBSRVZFUlNFRCBOT1QgU0lHTgogICAgMHgwMGFhOiAweDAwYWMsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGFiOiAweDAwYmQsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBhYzogMHgwMGJjLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAweDAwYWQ6IDB4MDBhMSwgICAgICMgIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDBhZTogMHgwMGFiLCAgICAgIyAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhZjogMHgwMGJiLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYjA6IDB4MjU5MSwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDAwYjE6IDB4MjU5MiwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgwMGIyOiAweDI1OTMsICAgICAjICBEQVJLIFNIQURFCiAgICAweDAwYjM6IDB4MjUwMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgwMGI0OiAweDI1MjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiNTogMHgyNTYxLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiNjogMHgyNTYyLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiNzogMHgyNTU2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGI4OiAweDI1NTUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYjk6IDB4MjU2MywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiYTogMHgyNTUxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgwMGJiOiAweDI1NTcsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MDBiYzogMHgyNTVkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgwMGJkOiAweDI1NWMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGJlOiAweDI1NWIsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDI1NWUsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBjNzogMHgyNTVmLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwYzg6IDB4MjU1YSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDAwYzk6IDB4MjU1NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBjYTogMHgyNTY5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNiOiAweDI1NjYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYzogMHgyNTYwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjZDogMHgyNTUwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDAwY2U6IDB4MjU2YywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjZjogMHgyNTY3LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkMDogMHgyNTY4LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkMTogMHgyNTY0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQyOiAweDI1NjUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDM6IDB4MjU1OSwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGQ0OiAweDI1NTgsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNTogMHgyNTUyLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNjogMHgyNTUzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBkNzogMHgyNTZiLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkODogMHgyNTZhLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkOTogMHgyNTE4LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDAwZGE6IDB4MjUwYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgwMGRiOiAweDI1ODgsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDAwZGM6IDB4MjU4NCwgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MDBkZDogMHgyNThjLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDAwZGU6IDB4MjU5MCwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MDBkZjogMHgyNTgwLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgwMGUwOiAweDAzYjEsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgIDB4MDBlMTogMHgwMGRmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgIDB4MDBlMjogMHgwMzkzLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgIDB4MDBlMzogMHgwM2MwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAweDAwZTQ6IDB4MDNhMywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAweDAwZTU6IDB4MDNjMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgMHgwMGU2OiAweDAwYjUsICAgICAjICBNSUNSTyBTSUdOCiAgICAweDAwZTc6IDB4MDNjNCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgIDB4MDBlODogMHgwM2E2LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAweDAwZTk6IDB4MDM5OCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAweDAwZWE6IDB4MDNhOSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAweDAwZWI6IDB4MDNiNCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgMHgwMGVjOiAweDIyMWUsICAgICAjICBJTkZJTklUWQogICAgMHgwMGVkOiAweDAzYzYsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAweDAwZWU6IDB4MDNiNSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAwZWY6IDB4MjIyOSwgICAgICMgIElOVEVSU0VDVElPTgogICAgMHgwMGYwOiAweDIyNjEsICAgICAjICBJREVOVElDQUwgVE8KICAgIDB4MDBmMTogMHgwMGIxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwZjI6IDB4MjI2NSwgICAgICMgIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgMHgwMGYzOiAweDIyNjQsICAgICAjICBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MDBmNDogMHgyMzIwLCAgICAgIyAgVE9QIEhBTEYgSU5URUdSQUwKICAgIDB4MDBmNTogMHgyMzIxLCAgICAgIyAgQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgIDB4MDBmNjogMHgwMGY3LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY3OiAweDIyNDgsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MDBmODogMHgwMGIwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBmOTogMHgyMjE5LCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDAwZmE6IDB4MDBiNywgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBmYjogMHgyMjFhLCAgICAgIyAgU1FVQVJFIFJPT1QKICAgIDB4MDBmYzogMHgyMDdmLCAgICAgIyAgU1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDBmZDogMHgwMGIyLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdceGM3JyAgICAgIyAgMHgwMDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhmYycgICAgICMgIDB4MDA4MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTknICAgICAjICAweDAwODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZTInICAgICAjICAweDAwODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlNCcgICAgICMgIDB4MDA4NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTAnICAgICAjICAweDAwODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTUnICAgICAjICAweDAwODYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNycgICAgICMgIDB4MDA4NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGVhJyAgICAgIyAgMHgwMDg4IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDAwODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGU4JyAgICAgIyAgMHgwMDhhIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGQwJyAgICAgIyAgMHgwMDhiIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSAogICAgJ1x4ZjAnICAgICAjICAweDAwOGMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSAogICAgJ1x4ZGUnICAgICAjICAweDAwOGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4KICAgICdceGM0JyAgICAgIyAgMHgwMDhlIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGM1JyAgICAgIyAgMHgwMDhmIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjOScgICAgICMgIDB4MDA5MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGU2JyAgICAgIyAgMHgwMDkxIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIEFFCiAgICAnXHhjNicgICAgICMgIDB4MDA5MiAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIEFFCiAgICAnXHhmNCcgICAgICMgIDB4MDA5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHgwMDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmZScgICAgICMgIDB4MDA5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4KICAgICdceGZiJyAgICAgIyAgMHgwMDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZGQnICAgICAjICAweDAwOTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhmZCcgICAgICMgIDB4MDA5OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhkNicgICAgICMgIDB4MDA5OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkYycgICAgICMgIDB4MDA5YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhmOCcgICAgICMgIDB4MDA5YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4YTMnICAgICAjICAweDAwOWMgLT4gUE9VTkQgU0lHTgogICAgJ1x4ZDgnICAgICAjICAweDAwOWQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x1MjBhNycgICAjICAweDAwOWUgLT4gUEVTRVRBIFNJR04KICAgICdcdTAxOTInICAgIyAgMHgwMDlmIC0+IExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgJ1x4ZTEnICAgICAjICAweDAwYTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZWQnICAgICAjICAweDAwYTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4ZjMnICAgICAjICAweDAwYTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZmEnICAgICAjICAweDAwYTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4YzEnICAgICAjICAweDAwYTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjZCcgICAgICMgIDB4MDBhNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGQzJyAgICAgIyAgMHgwMGE2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZGEnICAgICAjICAweDAwYTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhiZicgICAgICMgIDB4MDBhOCAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHUyMzEwJyAgICMgIDB4MDBhOSAtPiBSRVZFUlNFRCBOT1QgU0lHTgogICAgJ1x4YWMnICAgICAjICAweDAwYWEgLT4gTk9UIFNJR04KICAgICdceGJkJyAgICAgIyAgMHgwMGFiIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x4YmMnICAgICAjICAweDAwYWMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhhMScgICAgICMgIDB4MDBhZCAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAnXHhhYicgICAgICMgIDB4MDBhZSAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmInICAgICAjICAweDAwYWYgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyNTkxJyAgICMgIDB4MDBiMCAtPiBMSUdIVCBTSEFERQogICAgJ1x1MjU5MicgICAjICAweDAwYjEgLT4gTUVESVVNIFNIQURFCiAgICAnXHUyNTkzJyAgICMgIDB4MDBiMiAtPiBEQVJLIFNIQURFCiAgICAnXHUyNTAyJyAgICMgIDB4MDBiMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgICdcdTI1MjQnICAgIyAgMHgwMGI0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU2MScgICAjICAweDAwYjUgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1NjInICAgIyAgMHgwMGI2IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAnXHUyNTU2JyAgICMgIDB4MDBiNyAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAnXHUyNTU1JyAgICMgIDB4MDBiOCAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTYzJyAgICMgIDB4MDBiOSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTUxJyAgICMgIDB4MDBiYSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAnXHUyNTU3JyAgICMgIDB4MDBiYiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgICdcdTI1NWQnICAgIyAgMHgwMGJjIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgICdcdTI1NWMnICAgIyAgMHgwMGJkIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAnXHUyNTViJyAgICMgIDB4MDBiZSAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjUxMCcgICAjICAweDAwYmYgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgICdcdTI1MTQnICAgIyAgMHgwMGMwIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgICdcdTI1MzQnICAgIyAgMHgwMGMxIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUyYycgICAjICAweDAwYzIgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1MWMnICAgIyAgMHgwMGMzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1MDAnICAgIyAgMHgwMGM0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTNjJyAgICMgIDB4MDBjNSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NWUnICAgIyAgMHgwMGM2IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MjU1ZicgICAjICAweDAwYzcgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTVhJyAgICMgIDB4MDBjOCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgJ1x1MjU1NCcgICAjICAweDAwYzkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU2OScgICAjICAweDAwY2EgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NicgICAjICAweDAwY2IgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTYwJyAgICMgIDB4MDBjYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjU1MCcgICAjICAweDAwY2QgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAnXHUyNTZjJyAgICMgIDB4MDBjZSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTY3JyAgICMgIDB4MDBjZiAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2OCcgICAjICAweDAwZDAgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NjQnICAgIyAgMHgwMGQxIC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1NjUnICAgIyAgMHgwMGQyIC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NTknICAgIyAgMHgwMGQzIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU1OCcgICAjICAweDAwZDQgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTUyJyAgICMgIDB4MDBkNSAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MjU1MycgICAjICAweDAwZDYgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NmInICAgIyAgMHgwMGQ3IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTZhJyAgICMgIDB4MDBkOCAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjUxOCcgICAjICAweDAwZDkgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAnXHUyNTBjJyAgICMgIDB4MDBkYSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1ODgnICAgIyAgMHgwMGRiIC0+IEZVTEwgQkxPQ0sKICAgICdcdTI1ODQnICAgIyAgMHgwMGRjIC0+IExPV0VSIEhBTEYgQkxPQ0sKICAgICdcdTI1OGMnICAgIyAgMHgwMGRkIC0+IExFRlQgSEFMRiBCTE9DSwogICAgJ1x1MjU5MCcgICAjICAweDAwZGUgLT4gUklHSFQgSEFMRiBCTE9DSwogICAgJ1x1MjU4MCcgICAjICAweDAwZGYgLT4gVVBQRVIgSEFMRiBCTE9DSwogICAgJ1x1MDNiMScgICAjICAweDAwZTAgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAnXHhkZicgICAgICMgIDB4MDBlMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgJ1x1MDM5MycgICAjICAweDAwZTIgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgICdcdTAzYzAnICAgIyAgMHgwMGUzIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgJ1x1MDNhMycgICAjICAweDAwZTQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKICAgICdcdTAzYzMnICAgIyAgMHgwMGU1IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgJ1x4YjUnICAgICAjICAweDAwZTYgLT4gTUlDUk8gU0lHTgogICAgJ1x1MDNjNCcgICAjICAweDAwZTcgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgJ1x1MDNhNicgICAjICAweDAwZTggLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAnXHUwMzk4JyAgICMgIDB4MDBlOSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQogICAgJ1x1MDNhOScgICAjICAweDAwZWEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKICAgICdcdTAzYjQnICAgIyAgMHgwMGViIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgJ1x1MjIxZScgICAjICAweDAwZWMgLT4gSU5GSU5JVFkKICAgICdcdTAzYzYnICAgIyAgMHgwMGVkIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgICdcdTAzYjUnICAgIyAgMHgwMGVlIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAnXHUyMjI5JyAgICMgIDB4MDBlZiAtPiBJTlRFUlNFQ1RJT04KICAgICdcdTIyNjEnICAgIyAgMHgwMGYwIC0+IElERU5USUNBTCBUTwogICAgJ1x4YjEnICAgICAjICAweDAwZjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHUyMjY1JyAgICMgIDB4MDBmMiAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTIyNjQnICAgIyAgMHgwMGYzIC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjMyMCcgICAjICAweDAwZjQgLT4gVE9QIEhBTEYgSU5URUdSQUwKICAgICdcdTIzMjEnICAgIyAgMHgwMGY1IC0+IEJPVFRPTSBIQUxGIElOVEVHUkFMCiAgICAnXHhmNycgICAgICMgIDB4MDBmNiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUyMjQ4JyAgICMgIDB4MDBmNyAtPiBBTE1PU1QgRVFVQUwgVE8KICAgICdceGIwJyAgICAgIyAgMHgwMGY4IC0+IERFR1JFRSBTSUdOCiAgICAnXHUyMjE5JyAgICMgIDB4MDBmOSAtPiBCVUxMRVQgT1BFUkFUT1IKICAgICdceGI3JyAgICAgIyAgMHgwMGZhIC0+IE1JRERMRSBET1QKICAgICdcdTIyMWEnICAgIyAgMHgwMGZiIC0+IFNRVUFSRSBST09UCiAgICAnXHUyMDdmJyAgICMgIDB4MDBmYyAtPiBTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ1x4YjInICAgICAjICAweDAwZmQgLT4gU1VQRVJTQ1JJUFQgVFdPCiAgICAnXHUyNWEwJyAgICMgIDB4MDBmZSAtPiBCTEFDSyBTUVVBUkUKICAgICdceGEwJyAgICAgIyAgMHgwMGZmIC0+IE5PLUJSRUFLIFNQQUNFCikKCiMjIyBFbmNvZGluZyBNYXAKCmVuY29kaW5nX21hcCA9IHsKICAgIDB4MDAwMDogMHgwMDAwLCAgICAgIyAgTlVMTAogICAgMHgwMDAxOiAweDAwMDEsICAgICAjICBTVEFSVCBPRiBIRUFESU5HCiAgICAweDAwMDI6IDB4MDAwMiwgICAgICMgIFNUQVJUIE9GIFRFWFQKICAgIDB4MDAwMzogMHgwMDAzLCAgICAgIyAgRU5EIE9GIFRFWFQKICAgIDB4MDAwNDogMHgwMDA0LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgMHgwMDA1OiAweDAwMDUsICAgICAjICBFTlFVSVJZCiAgICAweDAwMDY6IDB4MDAwNiwgICAgICMgIEFDS05PV0xFREdFCiAgICAweDAwMDc6IDB4MDAwNywgICAgICMgIEJFTEwKICAgIDB4MDAwODogMHgwMDA4LCAgICAgIyAgQkFDS1NQQUNFCiAgICAweDAwMDk6IDB4MDAwOSwgICAgICMgIEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgMHgwMDBhOiAweDAwMGEsICAgICAjICBMSU5FIEZFRUQKICAgIDB4MDAwYjogMHgwMDBiLCAgICAgIyAgVkVSVElDQUwgVEFCVUxBVElPTgogICAgMHgwMDBjOiAweDAwMGMsICAgICAjICBGT1JNIEZFRUQKICAgIDB4MDAwZDogMHgwMDBkLCAgICAgIyAgQ0FSUklBR0UgUkVUVVJOCiAgICAweDAwMGU6IDB4MDAwZSwgICAgICMgIFNISUZUIE9VVAogICAgMHgwMDBmOiAweDAwMGYsICAgICAjICBTSElGVCBJTgogICAgMHgwMDEwOiAweDAwMTAsICAgICAjICBEQVRBIExJTksgRVNDQVBFCiAgICAweDAwMTE6IDB4MDAxMSwgICAgICMgIERFVklDRSBDT05UUk9MIE9ORQogICAgMHgwMDEyOiAweDAwMTIsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUV08KICAgIDB4MDAxMzogMHgwMDEzLCAgICAgIyAgREVWSUNFIENPTlRST0wgVEhSRUUKICAgIDB4MDAxNDogMHgwMDE0LCAgICAgIyAgREVWSUNFIENPTlRST0wgRk9VUgogICAgMHgwMDE1OiAweDAwMTUsICAgICAjICBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgMHgwMDE2OiAweDAwMTYsICAgICAjICBTWU5DSFJPTk9VUyBJRExFCiAgICAweDAwMTc6IDB4MDAxNywgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgIDB4MDAxODogMHgwMDE4LCAgICAgIyAgQ0FOQ0VMCiAgICAweDAwMTk6IDB4MDAxOSwgICAgICMgIEVORCBPRiBNRURJVU0KICAgIDB4MDAxYTogMHgwMDFhLCAgICAgIyAgU1VCU1RJVFVURQogICAgMHgwMDFiOiAweDAwMWIsICAgICAjICBFU0NBUEUKICAgIDB4MDAxYzogMHgwMDFjLCAgICAgIyAgRklMRSBTRVBBUkFUT1IKICAgIDB4MDAxZDogMHgwMDFkLCAgICAgIyAgR1JPVVAgU0VQQVJBVE9SCiAgICAweDAwMWU6IDB4MDAxZSwgICAgICMgIFJFQ09SRCBTRVBBUkFUT1IKICAgIDB4MDAxZjogMHgwMDFmLCAgICAgIyAgVU5JVCBTRVBBUkFUT1IKICAgIDB4MDAyMDogMHgwMDIwLCAgICAgIyAgU1BBQ0UKICAgIDB4MDAyMTogMHgwMDIxLCAgICAgIyAgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMDIyOiAweDAwMjIsICAgICAjICBRVU9UQVRJT04gTUFSSwogICAgMHgwMDIzOiAweDAwMjMsICAgICAjICBOVU1CRVIgU0lHTgogICAgMHgwMDI0OiAweDAwMjQsICAgICAjICBET0xMQVIgU0lHTgogICAgMHgwMDI1OiAweDAwMjUsICAgICAjICBQRVJDRU5UIFNJR04KICAgIDB4MDAyNjogMHgwMDI2LCAgICAgIyAgQU1QRVJTQU5ECiAgICAweDAwMjc6IDB4MDAyNywgICAgICMgIEFQT1NUUk9QSEUKICAgIDB4MDAyODogMHgwMDI4LCAgICAgIyAgTEVGVCBQQVJFTlRIRVNJUwogICAgMHgwMDI5OiAweDAwMjksICAgICAjICBSSUdIVCBQQVJFTlRIRVNJUwogICAgMHgwMDJhOiAweDAwMmEsICAgICAjICBBU1RFUklTSwogICAgMHgwMDJiOiAweDAwMmIsICAgICAjICBQTFVTIFNJR04KICAgIDB4MDAyYzogMHgwMDJjLCAgICAgIyAgQ09NTUEKICAgIDB4MDAyZDogMHgwMDJkLCAgICAgIyAgSFlQSEVOLU1JTlVTCiAgICAweDAwMmU6IDB4MDAyZSwgICAgICMgIEZVTEwgU1RPUAogICAgMHgwMDJmOiAweDAwMmYsICAgICAjICBTT0xJRFVTCiAgICAweDAwMzA6IDB4MDAzMCwgICAgICMgIERJR0lUIFpFUk8KICAgIDB4MDAzMTogMHgwMDMxLCAgICAgIyAgRElHSVQgT05FCiAgICAweDAwMzI6IDB4MDAzMiwgICAgICMgIERJR0lUIFRXTwogICAgMHgwMDMzOiAweDAwMzMsICAgICAjICBESUdJVCBUSFJFRQogICAgMHgwMDM0OiAweDAwMzQsICAgICAjICBESUdJVCBGT1VSCiAgICAweDAwMzU6IDB4MDAzNSwgICAgICMgIERJR0lUIEZJVkUKICAgIDB4MDAzNjogMHgwMDM2LCAgICAgIyAgRElHSVQgU0lYCiAgICAweDAwMzc6IDB4MDAzNywgICAgICMgIERJR0lUIFNFVkVOCiAgICAweDAwMzg6IDB4MDAzOCwgICAgICMgIERJR0lUIEVJR0hUCiAgICAweDAwMzk6IDB4MDAzOSwgICAgICMgIERJR0lUIE5JTkUKICAgIDB4MDAzYTogMHgwMDNhLCAgICAgIyAgQ09MT04KICAgIDB4MDAzYjogMHgwMDNiLCAgICAgIyAgU0VNSUNPTE9OCiAgICAweDAwM2M6IDB4MDAzYywgICAgICMgIExFU1MtVEhBTiBTSUdOCiAgICAweDAwM2Q6IDB4MDAzZCwgICAgICMgIEVRVUFMUyBTSUdOCiAgICAweDAwM2U6IDB4MDAzZSwgICAgICMgIEdSRUFURVItVEhBTiBTSUdOCiAgICAweDAwM2Y6IDB4MDAzZiwgICAgICMgIFFVRVNUSU9OIE1BUksKICAgIDB4MDA0MDogMHgwMDQwLCAgICAgIyAgQ09NTUVSQ0lBTCBBVAogICAgMHgwMDQxOiAweDAwNDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAweDAwNDI6IDB4MDA0MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgIDB4MDA0MzogMHgwMDQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgMHgwMDQ0OiAweDAwNDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAweDAwNDU6IDB4MDA0NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgIDB4MDA0NjogMHgwMDQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgMHgwMDQ3OiAweDAwNDcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAweDAwNDg6IDB4MDA0OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgIDB4MDA0OTogMHgwMDQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgMHgwMDRhOiAweDAwNGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAweDAwNGI6IDB4MDA0YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgIDB4MDA0YzogMHgwMDRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgMHgwMDRkOiAweDAwNGQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAweDAwNGU6IDB4MDA0ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgIDB4MDA0ZjogMHgwMDRmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwMDUwOiAweDAwNTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAweDAwNTE6IDB4MDA1MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgIDB4MDA1MjogMHgwMDUyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgMHgwMDUzOiAweDAwNTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAweDAwNTQ6IDB4MDA1NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgIDB4MDA1NTogMHgwMDU1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgMHgwMDU2OiAweDAwNTYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAweDAwNTc6IDB4MDA1NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgIDB4MDA1ODogMHgwMDU4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgMHgwMDU5OiAweDAwNTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAweDAwNWE6IDB4MDA1YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgIDB4MDA1YjogMHgwMDViLCAgICAgIyAgTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVjOiAweDAwNWMsICAgICAjICBSRVZFUlNFIFNPTElEVVMKICAgIDB4MDA1ZDogMHgwMDVkLCAgICAgIyAgUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1ZTogMHgwMDVlLCAgICAgIyAgQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgIDB4MDA1ZjogMHgwMDVmLCAgICAgIyAgTE9XIExJTkUKICAgIDB4MDA2MDogMHgwMDYwLCAgICAgIyAgR1JBVkUgQUNDRU5UCiAgICAweDAwNjE6IDB4MDA2MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAweDAwNjI6IDB4MDA2MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAweDAwNjM6IDB4MDA2MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAweDAwNjQ6IDB4MDA2NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBECiAgICAweDAwNjU6IDB4MDA2NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAweDAwNjY6IDB4MDA2NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAweDAwNjc6IDB4MDA2NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAweDAwNjg6IDB4MDA2OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBICiAgICAweDAwNjk6IDB4MDA2OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAweDAwNmE6IDB4MDA2YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAweDAwNmI6IDB4MDA2YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAweDAwNmM6IDB4MDA2YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAweDAwNmQ6IDB4MDA2ZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAweDAwNmU6IDB4MDA2ZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDAwNmY6IDB4MDA2ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAweDAwNzA6IDB4MDA3MCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAweDAwNzE6IDB4MDA3MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAweDAwNzI6IDB4MDA3MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAweDAwNzM6IDB4MDA3MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAweDAwNzQ6IDB4MDA3NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAweDAwNzU6IDB4MDA3NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAweDAwNzY6IDB4MDA3NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAweDAwNzc6IDB4MDA3NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAweDAwNzg6IDB4MDA3OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAweDAwNzk6IDB4MDA3OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAweDAwN2E6IDB4MDA3YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAweDAwN2I6IDB4MDA3YiwgICAgICMgIExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdjOiAweDAwN2MsICAgICAjICBWRVJUSUNBTCBMSU5FCiAgICAweDAwN2Q6IDB4MDA3ZCwgICAgICMgIFJJR0hUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3ZTogMHgwMDdlLCAgICAgIyAgVElMREUKICAgIDB4MDA3ZjogMHgwMDdmLCAgICAgIyAgREVMRVRFCiAgICAweDAwYTA6IDB4MDBmZiwgICAgICMgIE5PLUJSRUFLIFNQQUNFCiAgICAweDAwYTE6IDB4MDBhZCwgICAgICMgIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDBhMzogMHgwMDljLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMGFiOiAweDAwYWUsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGFjOiAweDAwYWEsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGIwOiAweDAwZjgsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGIxOiAweDAwZjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBiMjogMHgwMGZkLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwYjU6IDB4MDBlNiwgICAgICMgIE1JQ1JPIFNJR04KICAgIDB4MDBiNzogMHgwMGZhLCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGJiOiAweDAwYWYsICAgICAjICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBiYzogMHgwMGFjLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAweDAwYmQ6IDB4MDBhYiwgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgMHgwMGJmOiAweDAwYTgsICAgICAjICBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAweDAwYzE6IDB4MDBhNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGM0OiAweDAwOGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwYzU6IDB4MDA4ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwYzY6IDB4MDA5MiwgICAgICMgIExBVElOIENBUElUQUwgTElHQVRVUkUgQUUKICAgIDB4MDBjNzogMHgwMDgwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDBjOTogMHgwMDkwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwY2Q6IDB4MDBhNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgMHgwMGQwOiAweDAwOGIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEgKICAgIDB4MDBkMzogMHgwMGE2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZDY6IDB4MDA5OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkODogMHgwMDlkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMGRhOiAweDAwYTcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBkYzogMHgwMDlhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGRkOiAweDAwOTcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgIDB4MDBkZTogMHgwMDhkLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4KICAgIDB4MDBkZjogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgIDB4MDBlMDogMHgwMDg1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMGUxOiAweDAwYTAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAweDAwZTI6IDB4MDA4MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGU0OiAweDAwODQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGU1OiAweDAwODYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDBlNjogMHgwMDkxLCAgICAgIyAgTEFUSU4gU01BTEwgTElHQVRVUkUgQUUKICAgIDB4MDBlNzogMHgwMDg3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwZTg6IDB4MDA4YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDBlOTogMHgwMDgyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMGVhOiAweDAwODgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlYjogMHgwMDg5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBlZDogMHgwMGExLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgMHgwMGYwOiAweDAwOGMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRVRICiAgICAweDAwZjM6IDB4MDBhMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBmNDogMHgwMDkzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZjY6IDB4MDA5NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZjc6IDB4MDBmNiwgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmODogMHgwMDliLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDBmYTogMHgwMGEzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGZiOiAweDAwOTYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBmYzogMHgwMDgxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBmZDogMHgwMDk4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgMHgwMGZlOiAweDAwOTUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4KICAgIDB4MDE5MjogMHgwMDlmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAweDAzOTM6IDB4MDBlMiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAweDAzOTg6IDB4MDBlOSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAweDAzYTM6IDB4MDBlNCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAweDAzYTY6IDB4MDBlOCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgMHgwM2E5OiAweDAwZWEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgMHgwM2IxOiAweDAwZTAsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgIDB4MDNiNDogMHgwMGViLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAweDAzYjU6IDB4MDBlZSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAzYzA6IDB4MDBlMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgMHgwM2MzOiAweDAwZTUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKICAgIDB4MDNjNDogMHgwMGU3LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgMHgwM2M2OiAweDAwZWQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAweDIwN2Y6IDB4MDBmYywgICAgICMgIFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDIwYTc6IDB4MDA5ZSwgICAgICMgIFBFU0VUQSBTSUdOCiAgICAweDIyMTk6IDB4MDBmOSwgICAgICMgIEJVTExFVCBPUEVSQVRPUgogICAgMHgyMjFhOiAweDAwZmIsICAgICAjICBTUVVBUkUgUk9PVAogICAgMHgyMjFlOiAweDAwZWMsICAgICAjICBJTkZJTklUWQogICAgMHgyMjI5OiAweDAwZWYsICAgICAjICBJTlRFUlNFQ1RJT04KICAgIDB4MjI0ODogMHgwMGY3LCAgICAgIyAgQUxNT1NUIEVRVUFMIFRPCiAgICAweDIyNjE6IDB4MDBmMCwgICAgICMgIElERU5USUNBTCBUTwogICAgMHgyMjY0OiAweDAwZjMsICAgICAjICBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MjI2NTogMHgwMGYyLCAgICAgIyAgR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCiAgICAweDIzMTA6IDB4MDBhOSwgICAgICMgIFJFVkVSU0VEIE5PVCBTSUdOCiAgICAweDIzMjA6IDB4MDBmNCwgICAgICMgIFRPUCBIQUxGIElOVEVHUkFMCiAgICAweDIzMjE6IDB4MDBmNSwgICAgICMgIEJPVFRPTSBIQUxGIElOVEVHUkFMCiAgICAweDI1MDA6IDB4MDBjNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDI1MDI6IDB4MDBiMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgyNTBjOiAweDAwZGEsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MjUxMDogMHgwMGJmLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MjUxNDogMHgwMGMwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgyNTE4OiAweDAwZDksICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MjUxYzogMHgwMGMzLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTI0OiAweDAwYjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjUyYzogMHgwMGMyLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MjUzNDogMHgwMGMxLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1M2M6IDB4MDBjNSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTUwOiAweDAwY2QsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgIDB4MjU1MTogMHgwMGJhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgyNTUyOiAweDAwZDUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTUzOiAweDAwZDYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgyNTU0OiAweDAwYzksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDI1NTU6IDB4MDBiOCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU1NjogMHgwMGI3LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgyNTU3OiAweDAwYmIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MjU1ODogMHgwMGQ0LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDI1NTk6IDB4MDBkMywgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgyNTVhOiAweDAwYzgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgyNTViOiAweDAwYmUsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgyNTVjOiAweDAwYmQsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgyNTVkOiAweDAwYmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDI1NWU6IDB4MDBjNiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTVmOiAweDAwYzcsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU2MDogMHgwMGNjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjU2MTogMHgwMGI1LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU2MjogMHgwMGI2LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU2MzogMHgwMGI5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTY0OiAweDAwZDEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1NjU6IDB4MDBkMiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MjU2NjogMHgwMGNiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1Njc6IDB4MDBjZiwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1Njg6IDB4MDBkMCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1Njk6IDB4MDBjYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MjU2YTogMHgwMGQ4LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MjU2YjogMHgwMGQ3LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MjU2YzogMHgwMGNlLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTgwOiAweDAwZGYsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDI1ODQ6IDB4MDBkYywgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MjU4ODogMHgwMGRiLCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgyNThjOiAweDAwZGQsICAgICAjICBMRUZUIEhBTEYgQkxPQ0sKICAgIDB4MjU5MDogMHgwMGRlLCAgICAgIyAgUklHSFQgSEFMRiBCTE9DSwogICAgMHgyNTkxOiAweDAwYjAsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgyNTkyOiAweDAwYjEsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MjU5MzogMHgwMGIyLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgyNWEwOiAweDAwZmUsICAgICAjICBCTEFDSyBTUVVBUkUKfQpQSwMEFAAAAAAAAiCjVpW8Z6haggAAWoIAABIAAABlbmNvZGluZ3MvY3A4NjIucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGdlbmVyYXRlZCBmcm9tICdWRU5ET1JTL01JQ1NGVC9QQy9DUDg2Mi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3A4NjInLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDVkMCwgICAgICMgIEhFQlJFVyBMRVRURVIgQUxFRgogICAgMHgwMDgxOiAweDA1ZDEsICAgICAjICBIRUJSRVcgTEVUVEVSIEJFVAogICAgMHgwMDgyOiAweDA1ZDIsICAgICAjICBIRUJSRVcgTEVUVEVSIEdJTUVMCiAgICAweDAwODM6IDB4MDVkMywgICAgICMgIEhFQlJFVyBMRVRURVIgREFMRVQKICAgIDB4MDA4NDogMHgwNWQ0LCAgICAgIyAgSEVCUkVXIExFVFRFUiBIRQogICAgMHgwMDg1OiAweDA1ZDUsICAgICAjICBIRUJSRVcgTEVUVEVSIFZBVgogICAgMHgwMDg2OiAweDA1ZDYsICAgICAjICBIRUJSRVcgTEVUVEVSIFpBWUlOCiAgICAweDAwODc6IDB4MDVkNywgICAgICMgIEhFQlJFVyBMRVRURVIgSEVUCiAgICAweDAwODg6IDB4MDVkOCwgICAgICMgIEhFQlJFVyBMRVRURVIgVEVUCiAgICAweDAwODk6IDB4MDVkOSwgICAgICMgIEhFQlJFVyBMRVRURVIgWU9ECiAgICAweDAwOGE6IDB4MDVkYSwgICAgICMgIEhFQlJFVyBMRVRURVIgRklOQUwgS0FGCiAgICAweDAwOGI6IDB4MDVkYiwgICAgICMgIEhFQlJFVyBMRVRURVIgS0FGCiAgICAweDAwOGM6IDB4MDVkYywgICAgICMgIEhFQlJFVyBMRVRURVIgTEFNRUQKICAgIDB4MDA4ZDogMHgwNWRkLCAgICAgIyAgSEVCUkVXIExFVFRFUiBGSU5BTCBNRU0KICAgIDB4MDA4ZTogMHgwNWRlLCAgICAgIyAgSEVCUkVXIExFVFRFUiBNRU0KICAgIDB4MDA4ZjogMHgwNWRmLCAgICAgIyAgSEVCUkVXIExFVFRFUiBGSU5BTCBOVU4KICAgIDB4MDA5MDogMHgwNWUwLCAgICAgIyAgSEVCUkVXIExFVFRFUiBOVU4KICAgIDB4MDA5MTogMHgwNWUxLCAgICAgIyAgSEVCUkVXIExFVFRFUiBTQU1FS0gKICAgIDB4MDA5MjogMHgwNWUyLCAgICAgIyAgSEVCUkVXIExFVFRFUiBBWUlOCiAgICAweDAwOTM6IDB4MDVlMywgICAgICMgIEhFQlJFVyBMRVRURVIgRklOQUwgUEUKICAgIDB4MDA5NDogMHgwNWU0LCAgICAgIyAgSEVCUkVXIExFVFRFUiBQRQogICAgMHgwMDk1OiAweDA1ZTUsICAgICAjICBIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJCiAgICAweDAwOTY6IDB4MDVlNiwgICAgICMgIEhFQlJFVyBMRVRURVIgVFNBREkKICAgIDB4MDA5NzogMHgwNWU3LCAgICAgIyAgSEVCUkVXIExFVFRFUiBRT0YKICAgIDB4MDA5ODogMHgwNWU4LCAgICAgIyAgSEVCUkVXIExFVFRFUiBSRVNICiAgICAweDAwOTk6IDB4MDVlOSwgICAgICMgIEhFQlJFVyBMRVRURVIgU0hJTgogICAgMHgwMDlhOiAweDA1ZWEsICAgICAjICBIRUJSRVcgTEVUVEVSIFRBVgogICAgMHgwMDliOiAweDAwYTIsICAgICAjICBDRU5UIFNJR04KICAgIDB4MDA5YzogMHgwMGEzLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMDlkOiAweDAwYTUsICAgICAjICBZRU4gU0lHTgogICAgMHgwMDllOiAweDIwYTcsICAgICAjICBQRVNFVEEgU0lHTgogICAgMHgwMDlmOiAweDAxOTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgIDB4MDBhMDogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGExOiAweDAwZWQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwYTI6IDB4MDBmMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBhMzogMHgwMGZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGE0OiAweDAwZjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAweDAwYTU6IDB4MDBkMSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGE2OiAweDAwYWEsICAgICAjICBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGE3OiAweDAwYmEsICAgICAjICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBhODogMHgwMGJmLCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGE5OiAweDIzMTAsICAgICAjICBSRVZFUlNFRCBOT1QgU0lHTgogICAgMHgwMGFhOiAweDAwYWMsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGFiOiAweDAwYmQsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBhYzogMHgwMGJjLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAweDAwYWQ6IDB4MDBhMSwgICAgICMgIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDBhZTogMHgwMGFiLCAgICAgIyAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhZjogMHgwMGJiLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYjA6IDB4MjU5MSwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDAwYjE6IDB4MjU5MiwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgwMGIyOiAweDI1OTMsICAgICAjICBEQVJLIFNIQURFCiAgICAweDAwYjM6IDB4MjUwMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgwMGI0OiAweDI1MjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiNTogMHgyNTYxLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiNjogMHgyNTYyLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiNzogMHgyNTU2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGI4OiAweDI1NTUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYjk6IDB4MjU2MywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiYTogMHgyNTUxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgwMGJiOiAweDI1NTcsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MDBiYzogMHgyNTVkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgwMGJkOiAweDI1NWMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGJlOiAweDI1NWIsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGJmOiAweDI1MTAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgwMGMwOiAweDI1MTQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDAwYzE6IDB4MjUzNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMyOiAweDI1MmMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGMzOiAweDI1MWMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwYzQ6IDB4MjUwMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDAwYzU6IDB4MjUzYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGM2OiAweDI1NWUsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBjNzogMHgyNTVmLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwYzg6IDB4MjU1YSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDAwYzk6IDB4MjU1NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBjYTogMHgyNTY5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNiOiAweDI1NjYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYzogMHgyNTYwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjZDogMHgyNTUwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDAwY2U6IDB4MjU2YywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjZjogMHgyNTY3LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkMDogMHgyNTY4LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkMTogMHgyNTY0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQyOiAweDI1NjUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDM6IDB4MjU1OSwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGQ0OiAweDI1NTgsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNTogMHgyNTUyLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MDBkNjogMHgyNTUzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBkNzogMHgyNTZiLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkODogMHgyNTZhLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkOTogMHgyNTE4LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDAwZGE6IDB4MjUwYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgwMGRiOiAweDI1ODgsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDAwZGM6IDB4MjU4NCwgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MDBkZDogMHgyNThjLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDAwZGU6IDB4MjU5MCwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MDBkZjogMHgyNTgwLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgwMGUwOiAweDAzYjEsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgIDB4MDBlMTogMHgwMGRmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMgKEdFUk1BTikKICAgIDB4MDBlMjogMHgwMzkzLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgIDB4MDBlMzogMHgwM2MwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAweDAwZTQ6IDB4MDNhMywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAweDAwZTU6IDB4MDNjMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgMHgwMGU2OiAweDAwYjUsICAgICAjICBNSUNSTyBTSUdOCiAgICAweDAwZTc6IDB4MDNjNCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgIDB4MDBlODogMHgwM2E2LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAweDAwZTk6IDB4MDM5OCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAweDAwZWE6IDB4MDNhOSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAweDAwZWI6IDB4MDNiNCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgMHgwMGVjOiAweDIyMWUsICAgICAjICBJTkZJTklUWQogICAgMHgwMGVkOiAweDAzYzYsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAweDAwZWU6IDB4MDNiNSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAwZWY6IDB4MjIyOSwgICAgICMgIElOVEVSU0VDVElPTgogICAgMHgwMGYwOiAweDIyNjEsICAgICAjICBJREVOVElDQUwgVE8KICAgIDB4MDBmMTogMHgwMGIxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwZjI6IDB4MjI2NSwgICAgICMgIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgMHgwMGYzOiAweDIyNjQsICAgICAjICBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MDBmNDogMHgyMzIwLCAgICAgIyAgVE9QIEhBTEYgSU5URUdSQUwKICAgIDB4MDBmNTogMHgyMzIxLCAgICAgIyAgQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgIDB4MDBmNjogMHgwMGY3LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY3OiAweDIyNDgsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MDBmODogMHgwMGIwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBmOTogMHgyMjE5LCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDAwZmE6IDB4MDBiNywgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBmYjogMHgyMjFhLCAgICAgIyAgU1FVQVJFIFJPT1QKICAgIDB4MDBmYzogMHgyMDdmLCAgICAgIyAgU1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDBmZDogMHgwMGIyLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdcdTA1ZDAnICAgIyAgMHgwMDgwIC0+IEhFQlJFVyBMRVRURVIgQUxFRgogICAgJ1x1MDVkMScgICAjICAweDAwODEgLT4gSEVCUkVXIExFVFRFUiBCRVQKICAgICdcdTA1ZDInICAgIyAgMHgwMDgyIC0+IEhFQlJFVyBMRVRURVIgR0lNRUwKICAgICdcdTA1ZDMnICAgIyAgMHgwMDgzIC0+IEhFQlJFVyBMRVRURVIgREFMRVQKICAgICdcdTA1ZDQnICAgIyAgMHgwMDg0IC0+IEhFQlJFVyBMRVRURVIgSEUKICAgICdcdTA1ZDUnICAgIyAgMHgwMDg1IC0+IEhFQlJFVyBMRVRURVIgVkFWCiAgICAnXHUwNWQ2JyAgICMgIDB4MDA4NiAtPiBIRUJSRVcgTEVUVEVSIFpBWUlOCiAgICAnXHUwNWQ3JyAgICMgIDB4MDA4NyAtPiBIRUJSRVcgTEVUVEVSIEhFVAogICAgJ1x1MDVkOCcgICAjICAweDAwODggLT4gSEVCUkVXIExFVFRFUiBURVQKICAgICdcdTA1ZDknICAgIyAgMHgwMDg5IC0+IEhFQlJFVyBMRVRURVIgWU9ECiAgICAnXHUwNWRhJyAgICMgIDB4MDA4YSAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRgogICAgJ1x1MDVkYicgICAjICAweDAwOGIgLT4gSEVCUkVXIExFVFRFUiBLQUYKICAgICdcdTA1ZGMnICAgIyAgMHgwMDhjIC0+IEhFQlJFVyBMRVRURVIgTEFNRUQKICAgICdcdTA1ZGQnICAgIyAgMHgwMDhkIC0+IEhFQlJFVyBMRVRURVIgRklOQUwgTUVNCiAgICAnXHUwNWRlJyAgICMgIDB4MDA4ZSAtPiBIRUJSRVcgTEVUVEVSIE1FTQogICAgJ1x1MDVkZicgICAjICAweDAwOGYgLT4gSEVCUkVXIExFVFRFUiBGSU5BTCBOVU4KICAgICdcdTA1ZTAnICAgIyAgMHgwMDkwIC0+IEhFQlJFVyBMRVRURVIgTlVOCiAgICAnXHUwNWUxJyAgICMgIDB4MDA5MSAtPiBIRUJSRVcgTEVUVEVSIFNBTUVLSAogICAgJ1x1MDVlMicgICAjICAweDAwOTIgLT4gSEVCUkVXIExFVFRFUiBBWUlOCiAgICAnXHUwNWUzJyAgICMgIDB4MDA5MyAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIFBFCiAgICAnXHUwNWU0JyAgICMgIDB4MDA5NCAtPiBIRUJSRVcgTEVUVEVSIFBFCiAgICAnXHUwNWU1JyAgICMgIDB4MDA5NSAtPiBIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJCiAgICAnXHUwNWU2JyAgICMgIDB4MDA5NiAtPiBIRUJSRVcgTEVUVEVSIFRTQURJCiAgICAnXHUwNWU3JyAgICMgIDB4MDA5NyAtPiBIRUJSRVcgTEVUVEVSIFFPRgogICAgJ1x1MDVlOCcgICAjICAweDAwOTggLT4gSEVCUkVXIExFVFRFUiBSRVNICiAgICAnXHUwNWU5JyAgICMgIDB4MDA5OSAtPiBIRUJSRVcgTEVUVEVSIFNISU4KICAgICdcdTA1ZWEnICAgIyAgMHgwMDlhIC0+IEhFQlJFVyBMRVRURVIgVEFWCiAgICAnXHhhMicgICAgICMgIDB4MDA5YiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHgwMDljIC0+IFBPVU5EIFNJR04KICAgICdceGE1JyAgICAgIyAgMHgwMDlkIC0+IFlFTiBTSUdOCiAgICAnXHUyMGE3JyAgICMgIDB4MDA5ZSAtPiBQRVNFVEEgU0lHTgogICAgJ1x1MDE5MicgICAjICAweDAwOWYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAnXHhlMScgICAgICMgIDB4MDBhMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlZCcgICAgICMgIDB4MDBhMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhmMycgICAgICMgIDB4MDBhMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmYScgICAgICMgIDB4MDBhMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmMScgICAgICMgIDB4MDBhNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhkMScgICAgICMgIDB4MDBhNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGFhJyAgICAgIyAgMHgwMGE2IC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYScgICAgICMgIDB4MDBhNyAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJmJyAgICAgIyAgMHgwMGE4IC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdcdTIzMTAnICAgIyAgMHgwMGE5IC0+IFJFVkVSU0VEIE5PVCBTSUdOCiAgICAnXHhhYycgICAgICMgIDB4MDBhYSAtPiBOT1QgU0lHTgogICAgJ1x4YmQnICAgICAjICAweDAwYWIgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHhiYycgICAgICMgIDB4MDBhYyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgICdceGExJyAgICAgIyAgMHgwMGFkIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgICdceGFiJyAgICAgIyAgMHgwMGFlIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4MDBhZiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTI1OTEnICAgIyAgMHgwMGIwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICMgIDB4MDBiMSAtPiBNRURJVU0gU0hBREUKICAgICdcdTI1OTMnICAgIyAgMHgwMGIyIC0+IERBUksgU0hBREUKICAgICdcdTI1MDInICAgIyAgMHgwMGIzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUyNCcgICAjICAweDAwYjQgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTYxJyAgICMgIDB4MDBiNSAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjU2MicgICAjICAweDAwYjYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTYnICAgIyAgMHgwMGI3IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTUnICAgIyAgMHgwMGI4IC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1NjMnICAgIyAgMHgwMGI5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NTEnICAgIyAgMHgwMGJhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgICdcdTI1NTcnICAgIyAgMHgwMGJiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjU1ZCcgICAjICAweDAwYmMgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgJ1x1MjU1YycgICAjICAweDAwYmQgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NWInICAgIyAgMHgwMGJlIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTEwJyAgICMgIDB4MDBiZiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAjICAweDAwYzAgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgJ1x1MjUzNCcgICAjICAweDAwYzEgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTJjJyAgICMgIDB4MDBjMiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUxYycgICAjICAweDAwYzMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjUwMCcgICAjICAweDAwYzQgLT4gQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgICdcdTI1M2MnICAgIyAgMHgwMGM1IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU1ZScgICAjICAweDAwYzYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTVmJyAgICMgIDB4MDBjNyAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NWEnICAgIyAgMHgwMGM4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTU0JyAgICMgIDB4MDBjOSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTY5JyAgICMgIDB4MDBjYSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTY2JyAgICMgIDB4MDBjYiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjAnICAgIyAgMHgwMGNjIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTUwJyAgICMgIDB4MDBjZCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgICdcdTI1NmMnICAgIyAgMHgwMGNlIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjcnICAgIyAgMHgwMGNmIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTY4JyAgICMgIDB4MDBkMCAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU2NCcgICAjICAweDAwZDEgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2NScgICAjICAweDAwZDIgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU1OScgICAjICAweDAwZDMgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTU4JyAgICMgIDB4MDBkNCAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTInICAgIyAgMHgwMGQ1IC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTUzJyAgICMgIDB4MDBkNiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU2YicgICAjICAweDAwZDcgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NmEnICAgIyAgMHgwMGQ4IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTE4JyAgICMgIDB4MDBkOSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgICdcdTI1MGMnICAgIyAgMHgwMGRhIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU4OCcgICAjICAweDAwZGIgLT4gRlVMTCBCTE9DSwogICAgJ1x1MjU4NCcgICAjICAweDAwZGMgLT4gTE9XRVIgSEFMRiBCTE9DSwogICAgJ1x1MjU4YycgICAjICAweDAwZGQgLT4gTEVGVCBIQUxGIEJMT0NLCiAgICAnXHUyNTkwJyAgICMgIDB4MDBkZSAtPiBSSUdIVCBIQUxGIEJMT0NLCiAgICAnXHUyNTgwJyAgICMgIDB4MDBkZiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHUwM2IxJyAgICMgIDB4MDBlMCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgICdceGRmJyAgICAgIyAgMHgwMGUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHRVJNQU4pCiAgICAnXHUwMzkzJyAgICMgIDB4MDBlMiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQogICAgJ1x1MDNjMCcgICAjICAweDAwZTMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAnXHUwM2EzJyAgICMgIDB4MDBlNCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgJ1x1MDNjMycgICAjICAweDAwZTUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAnXHhiNScgICAgICMgIDB4MDBlNiAtPiBNSUNSTyBTSUdOCiAgICAnXHUwM2M0JyAgICMgIDB4MDBlNyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVEFVCiAgICAnXHUwM2E2JyAgICMgIDB4MDBlOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKICAgICdcdTAzOTgnICAgIyAgMHgwMGU5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAnXHUwM2E5JyAgICMgIDB4MDBlYSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgJ1x1MDNiNCcgICAjICAweDAwZWIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAnXHUyMjFlJyAgICMgIDB4MDBlYyAtPiBJTkZJTklUWQogICAgJ1x1MDNjNicgICAjICAweDAwZWQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgJ1x1MDNiNScgICAjICAweDAwZWUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KICAgICdcdTIyMjknICAgIyAgMHgwMGVmIC0+IElOVEVSU0VDVElPTgogICAgJ1x1MjI2MScgICAjICAweDAwZjAgLT4gSURFTlRJQ0FMIFRPCiAgICAnXHhiMScgICAgICMgIDB4MDBmMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTIyNjUnICAgIyAgMHgwMGYyIC0+IEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjI2NCcgICAjICAweDAwZjMgLT4gTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAnXHUyMzIwJyAgICMgIDB4MDBmNCAtPiBUT1AgSEFMRiBJTlRFR1JBTAogICAgJ1x1MjMyMScgICAjICAweDAwZjUgLT4gQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgICdceGY3JyAgICAgIyAgMHgwMGY2IC0+IERJVklTSU9OIFNJR04KICAgICdcdTIyNDgnICAgIyAgMHgwMGY3IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x4YjAnICAgICAjICAweDAwZjggLT4gREVHUkVFIFNJR04KICAgICdcdTIyMTknICAgIyAgMHgwMGY5IC0+IEJVTExFVCBPUEVSQVRPUgogICAgJ1x4YjcnICAgICAjICAweDAwZmEgLT4gTUlERExFIERPVAogICAgJ1x1MjIxYScgICAjICAweDAwZmIgLT4gU1FVQVJFIFJPT1QKICAgICdcdTIwN2YnICAgIyAgMHgwMGZjIC0+IFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnXHhiMicgICAgICMgIDB4MDBmZCAtPiBTVVBFUlNDUklQVCBUV08KICAgICdcdTI1YTAnICAgIyAgMHgwMGZlIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YTAnICAgICAjICAweDAwZmYgLT4gTk8tQlJFQUsgU1BBQ0UKKQoKIyMjIEVuY29kaW5nIE1hcAoKZW5jb2RpbmdfbWFwID0gewogICAgMHgwMDAwOiAweDAwMDAsICAgICAjICBOVUxMCiAgICAweDAwMDE6IDB4MDAwMSwgICAgICMgIFNUQVJUIE9GIEhFQURJTkcKICAgIDB4MDAwMjogMHgwMDAyLCAgICAgIyAgU1RBUlQgT0YgVEVYVAogICAgMHgwMDAzOiAweDAwMDMsICAgICAjICBFTkQgT0YgVEVYVAogICAgMHgwMDA0OiAweDAwMDQsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAweDAwMDU6IDB4MDAwNSwgICAgICMgIEVOUVVJUlkKICAgIDB4MDAwNjogMHgwMDA2LCAgICAgIyAgQUNLTk9XTEVER0UKICAgIDB4MDAwNzogMHgwMDA3LCAgICAgIyAgQkVMTAogICAgMHgwMDA4OiAweDAwMDgsICAgICAjICBCQUNLU1BBQ0UKICAgIDB4MDAwOTogMHgwMDA5LCAgICAgIyAgSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAweDAwMGE6IDB4MDAwYSwgICAgICMgIExJTkUgRkVFRAogICAgMHgwMDBiOiAweDAwMGIsICAgICAjICBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAweDAwMGM6IDB4MDAwYywgICAgICMgIEZPUk0gRkVFRAogICAgMHgwMDBkOiAweDAwMGQsICAgICAjICBDQVJSSUFHRSBSRVRVUk4KICAgIDB4MDAwZTogMHgwMDBlLCAgICAgIyAgU0hJRlQgT1VUCiAgICAweDAwMGY6IDB4MDAwZiwgICAgICMgIFNISUZUIElOCiAgICAweDAwMTA6IDB4MDAxMCwgICAgICMgIERBVEEgTElOSyBFU0NBUEUKICAgIDB4MDAxMTogMHgwMDExLCAgICAgIyAgREVWSUNFIENPTlRST0wgT05FCiAgICAweDAwMTI6IDB4MDAxMiwgICAgICMgIERFVklDRSBDT05UUk9MIFRXTwogICAgMHgwMDEzOiAweDAwMTMsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgMHgwMDE0OiAweDAwMTQsICAgICAjICBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAweDAwMTU6IDB4MDAxNSwgICAgICMgIE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAweDAwMTY6IDB4MDAxNiwgICAgICMgIFNZTkNIUk9OT1VTIElETEUKICAgIDB4MDAxNzogMHgwMDE3LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgMHgwMDE4OiAweDAwMTgsICAgICAjICBDQU5DRUwKICAgIDB4MDAxOTogMHgwMDE5LCAgICAgIyAgRU5EIE9GIE1FRElVTQogICAgMHgwMDFhOiAweDAwMWEsICAgICAjICBTVUJTVElUVVRFCiAgICAweDAwMWI6IDB4MDAxYiwgICAgICMgIEVTQ0FQRQogICAgMHgwMDFjOiAweDAwMWMsICAgICAjICBGSUxFIFNFUEFSQVRPUgogICAgMHgwMDFkOiAweDAwMWQsICAgICAjICBHUk9VUCBTRVBBUkFUT1IKICAgIDB4MDAxZTogMHgwMDFlLCAgICAgIyAgUkVDT1JEIFNFUEFSQVRPUgogICAgMHgwMDFmOiAweDAwMWYsICAgICAjICBVTklUIFNFUEFSQVRPUgogICAgMHgwMDIwOiAweDAwMjAsICAgICAjICBTUEFDRQogICAgMHgwMDIxOiAweDAwMjEsICAgICAjICBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwMjI6IDB4MDAyMiwgICAgICMgIFFVT1RBVElPTiBNQVJLCiAgICAweDAwMjM6IDB4MDAyMywgICAgICMgIE5VTUJFUiBTSUdOCiAgICAweDAwMjQ6IDB4MDAyNCwgICAgICMgIERPTExBUiBTSUdOCiAgICAweDAwMjU6IDB4MDAyNSwgICAgICMgIFBFUkNFTlQgU0lHTgogICAgMHgwMDI2OiAweDAwMjYsICAgICAjICBBTVBFUlNBTkQKICAgIDB4MDAyNzogMHgwMDI3LCAgICAgIyAgQVBPU1RST1BIRQogICAgMHgwMDI4OiAweDAwMjgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTCiAgICAweDAwMjk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTCiAgICAweDAwMmE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLCiAgICAweDAwMmI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTgogICAgMHgwMDJjOiAweDAwMmMsICAgICAjICBDT01NQQogICAgMHgwMDJkOiAweDAwMmQsICAgICAjICBIWVBIRU4tTUlOVVMKICAgIDB4MDAyZTogMHgwMDJlLCAgICAgIyAgRlVMTCBTVE9QCiAgICAweDAwMmY6IDB4MDAyZiwgICAgICMgIFNPTElEVVMKICAgIDB4MDAzMDogMHgwMDMwLCAgICAgIyAgRElHSVQgWkVSTwogICAgMHgwMDMxOiAweDAwMzEsICAgICAjICBESUdJVCBPTkUKICAgIDB4MDAzMjogMHgwMDMyLCAgICAgIyAgRElHSVQgVFdPCiAgICAweDAwMzM6IDB4MDAzMywgICAgICMgIERJR0lUIFRIUkVFCiAgICAweDAwMzQ6IDB4MDAzNCwgICAgICMgIERJR0lUIEZPVVIKICAgIDB4MDAzNTogMHgwMDM1LCAgICAgIyAgRElHSVQgRklWRQogICAgMHgwMDM2OiAweDAwMzYsICAgICAjICBESUdJVCBTSVgKICAgIDB4MDAzNzogMHgwMDM3LCAgICAgIyAgRElHSVQgU0VWRU4KICAgIDB4MDAzODogMHgwMDM4LCAgICAgIyAgRElHSVQgRUlHSFQKICAgIDB4MDAzOTogMHgwMDM5LCAgICAgIyAgRElHSVQgTklORQogICAgMHgwMDNhOiAweDAwM2EsICAgICAjICBDT0xPTgogICAgMHgwMDNiOiAweDAwM2IsICAgICAjICBTRU1JQ09MT04KICAgIDB4MDAzYzogMHgwMDNjLCAgICAgIyAgTEVTUy1USEFOIFNJR04KICAgIDB4MDAzZDogMHgwMDNkLCAgICAgIyAgRVFVQUxTIFNJR04KICAgIDB4MDAzZTogMHgwMDNlLCAgICAgIyAgR1JFQVRFUi1USEFOIFNJR04KICAgIDB4MDAzZjogMHgwMDNmLCAgICAgIyAgUVVFU1RJT04gTUFSSwogICAgMHgwMDQwOiAweDAwNDAsICAgICAjICBDT01NRVJDSUFMIEFUCiAgICAweDAwNDE6IDB4MDA0MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA0MjogMHgwMDQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgMHgwMDQzOiAweDAwNDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAweDAwNDQ6IDB4MDA0NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgIDB4MDA0NTogMHgwMDQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgMHgwMDQ2OiAweDAwNDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAweDAwNDc6IDB4MDA0NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgIDB4MDA0ODogMHgwMDQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgMHgwMDQ5OiAweDAwNDksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwNGE6IDB4MDA0YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgIDB4MDA0YjogMHgwMDRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgMHgwMDRjOiAweDAwNGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAweDAwNGQ6IDB4MDA0ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgIDB4MDA0ZTogMHgwMDRlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgMHgwMDRmOiAweDAwNGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAweDAwNTA6IDB4MDA1MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgIDB4MDA1MTogMHgwMDUxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgMHgwMDUyOiAweDAwNTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAweDAwNTM6IDB4MDA1MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgIDB4MDA1NDogMHgwMDU0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgMHgwMDU1OiAweDAwNTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwNTY6IDB4MDA1NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgIDB4MDA1NzogMHgwMDU3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgMHgwMDU4OiAweDAwNTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAweDAwNTk6IDB4MDA1OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgIDB4MDA1YTogMHgwMDVhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgMHgwMDViOiAweDAwNWIsICAgICAjICBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWM6IDB4MDA1YywgICAgICMgIFJFVkVSU0UgU09MSURVUwogICAgMHgwMDVkOiAweDAwNWQsICAgICAjICBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVlOiAweDAwNWUsICAgICAjICBDSVJDVU1GTEVYIEFDQ0VOVAogICAgMHgwMDVmOiAweDAwNWYsICAgICAjICBMT1cgTElORQogICAgMHgwMDYwOiAweDAwNjAsICAgICAjICBHUkFWRSBBQ0NFTlQKICAgIDB4MDA2MTogMHgwMDYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgIDB4MDA2MjogMHgwMDYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgIDB4MDA2MzogMHgwMDYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgIDB4MDA2NDogMHgwMDY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgIDB4MDA2NTogMHgwMDY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgIDB4MDA2NjogMHgwMDY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgIDB4MDA2NzogMHgwMDY3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgIDB4MDA2ODogMHgwMDY4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgIDB4MDA2OTogMHgwMDY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgIDB4MDA2YTogMHgwMDZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgIDB4MDA2YjogMHgwMDZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgIDB4MDA2YzogMHgwMDZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgIDB4MDA2ZDogMHgwMDZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgIDB4MDA2ZTogMHgwMDZlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDA2ZjogMHgwMDZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgIDB4MDA3MDogMHgwMDcwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgIDB4MDA3MTogMHgwMDcxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgIDB4MDA3MjogMHgwMDcyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgIDB4MDA3MzogMHgwMDczLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgIDB4MDA3NDogMHgwMDc0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgIDB4MDA3NTogMHgwMDc1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgIDB4MDA3NjogMHgwMDc2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgIDB4MDA3NzogMHgwMDc3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgIDB4MDA3ODogMHgwMDc4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgIDB4MDA3OTogMHgwMDc5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgIDB4MDA3YTogMHgwMDdhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgIDB4MDA3YjogMHgwMDdiLCAgICAgIyAgTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2M6IDB4MDA3YywgICAgICMgIFZFUlRJQ0FMIExJTkUKICAgIDB4MDA3ZDogMHgwMDdkLCAgICAgIyAgUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdlOiAweDAwN2UsICAgICAjICBUSUxERQogICAgMHgwMDdmOiAweDAwN2YsICAgICAjICBERUxFVEUKICAgIDB4MDBhMDogMHgwMGZmLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKICAgIDB4MDBhMTogMHgwMGFkLCAgICAgIyAgSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMGEyOiAweDAwOWIsICAgICAjICBDRU5UIFNJR04KICAgIDB4MDBhMzogMHgwMDljLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMGE1OiAweDAwOWQsICAgICAjICBZRU4gU0lHTgogICAgMHgwMGFhOiAweDAwYTYsICAgICAjICBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGFiOiAweDAwYWUsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGFjOiAweDAwYWEsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGIwOiAweDAwZjgsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGIxOiAweDAwZjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBiMjogMHgwMGZkLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwYjU6IDB4MDBlNiwgICAgICMgIE1JQ1JPIFNJR04KICAgIDB4MDBiNzogMHgwMGZhLCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGJhOiAweDAwYTcsICAgICAjICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBiYjogMHgwMGFmLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYmM6IDB4MDBhYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGJkOiAweDAwYWIsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBiZjogMHgwMGE4LCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGQxOiAweDAwYTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBkZjogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMgKEdFUk1BTikKICAgIDB4MDBlMTogMHgwMGEwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGVkOiAweDAwYTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwZjE6IDB4MDBhNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBmMzogMHgwMGEyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGY3OiAweDAwZjYsICAgICAjICBESVZJU0lPTiBTSUdOCiAgICAweDAwZmE6IDB4MDBhMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDE5MjogMHgwMDlmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAweDAzOTM6IDB4MDBlMiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAweDAzOTg6IDB4MDBlOSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAweDAzYTM6IDB4MDBlNCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAweDAzYTY6IDB4MDBlOCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgMHgwM2E5OiAweDAwZWEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgMHgwM2IxOiAweDAwZTAsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgIDB4MDNiNDogMHgwMGViLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAweDAzYjU6IDB4MDBlZSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAzYzA6IDB4MDBlMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgMHgwM2MzOiAweDAwZTUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKICAgIDB4MDNjNDogMHgwMGU3LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgMHgwM2M2OiAweDAwZWQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAweDA1ZDA6IDB4MDA4MCwgICAgICMgIEhFQlJFVyBMRVRURVIgQUxFRgogICAgMHgwNWQxOiAweDAwODEsICAgICAjICBIRUJSRVcgTEVUVEVSIEJFVAogICAgMHgwNWQyOiAweDAwODIsICAgICAjICBIRUJSRVcgTEVUVEVSIEdJTUVMCiAgICAweDA1ZDM6IDB4MDA4MywgICAgICMgIEhFQlJFVyBMRVRURVIgREFMRVQKICAgIDB4MDVkNDogMHgwMDg0LCAgICAgIyAgSEVCUkVXIExFVFRFUiBIRQogICAgMHgwNWQ1OiAweDAwODUsICAgICAjICBIRUJSRVcgTEVUVEVSIFZBVgogICAgMHgwNWQ2OiAweDAwODYsICAgICAjICBIRUJSRVcgTEVUVEVSIFpBWUlOCiAgICAweDA1ZDc6IDB4MDA4NywgICAgICMgIEhFQlJFVyBMRVRURVIgSEVUCiAgICAweDA1ZDg6IDB4MDA4OCwgICAgICMgIEhFQlJFVyBMRVRURVIgVEVUCiAgICAweDA1ZDk6IDB4MDA4OSwgICAgICMgIEhFQlJFVyBMRVRURVIgWU9ECiAgICAweDA1ZGE6IDB4MDA4YSwgICAgICMgIEhFQlJFVyBMRVRURVIgRklOQUwgS0FGCiAgICAweDA1ZGI6IDB4MDA4YiwgICAgICMgIEhFQlJFVyBMRVRURVIgS0FGCiAgICAweDA1ZGM6IDB4MDA4YywgICAgICMgIEhFQlJFVyBMRVRURVIgTEFNRUQKICAgIDB4MDVkZDogMHgwMDhkLCAgICAgIyAgSEVCUkVXIExFVFRFUiBGSU5BTCBNRU0KICAgIDB4MDVkZTogMHgwMDhlLCAgICAgIyAgSEVCUkVXIExFVFRFUiBNRU0KICAgIDB4MDVkZjogMHgwMDhmLCAgICAgIyAgSEVCUkVXIExFVFRFUiBGSU5BTCBOVU4KICAgIDB4MDVlMDogMHgwMDkwLCAgICAgIyAgSEVCUkVXIExFVFRFUiBOVU4KICAgIDB4MDVlMTogMHgwMDkxLCAgICAgIyAgSEVCUkVXIExFVFRFUiBTQU1FS0gKICAgIDB4MDVlMjogMHgwMDkyLCAgICAgIyAgSEVCUkVXIExFVFRFUiBBWUlOCiAgICAweDA1ZTM6IDB4MDA5MywgICAgICMgIEhFQlJFVyBMRVRURVIgRklOQUwgUEUKICAgIDB4MDVlNDogMHgwMDk0LCAgICAgIyAgSEVCUkVXIExFVFRFUiBQRQogICAgMHgwNWU1OiAweDAwOTUsICAgICAjICBIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJCiAgICAweDA1ZTY6IDB4MDA5NiwgICAgICMgIEhFQlJFVyBMRVRURVIgVFNBREkKICAgIDB4MDVlNzogMHgwMDk3LCAgICAgIyAgSEVCUkVXIExFVFRFUiBRT0YKICAgIDB4MDVlODogMHgwMDk4LCAgICAgIyAgSEVCUkVXIExFVFRFUiBSRVNICiAgICAweDA1ZTk6IDB4MDA5OSwgICAgICMgIEhFQlJFVyBMRVRURVIgU0hJTgogICAgMHgwNWVhOiAweDAwOWEsICAgICAjICBIRUJSRVcgTEVUVEVSIFRBVgogICAgMHgyMDdmOiAweDAwZmMsICAgICAjICBTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgMHgyMGE3OiAweDAwOWUsICAgICAjICBQRVNFVEEgU0lHTgogICAgMHgyMjE5OiAweDAwZjksICAgICAjICBCVUxMRVQgT1BFUkFUT1IKICAgIDB4MjIxYTogMHgwMGZiLCAgICAgIyAgU1FVQVJFIFJPT1QKICAgIDB4MjIxZTogMHgwMGVjLCAgICAgIyAgSU5GSU5JVFkKICAgIDB4MjIyOTogMHgwMGVmLCAgICAgIyAgSU5URVJTRUNUSU9OCiAgICAweDIyNDg6IDB4MDBmNywgICAgICMgIEFMTU9TVCBFUVVBTCBUTwogICAgMHgyMjYxOiAweDAwZjAsICAgICAjICBJREVOVElDQUwgVE8KICAgIDB4MjI2NDogMHgwMGYzLCAgICAgIyAgTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAweDIyNjU6IDB4MDBmMiwgICAgICMgIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgMHgyMzEwOiAweDAwYTksICAgICAjICBSRVZFUlNFRCBOT1QgU0lHTgogICAgMHgyMzIwOiAweDAwZjQsICAgICAjICBUT1AgSEFMRiBJTlRFR1JBTAogICAgMHgyMzIxOiAweDAwZjUsICAgICAjICBCT1RUT00gSEFMRiBJTlRFR1JBTAogICAgMHgyNTAwOiAweDAwYzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgyNTAyOiAweDAwYjMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MjUwYzogMHgwMGRhLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDBiZiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDI1MTQ6IDB4MDBjMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MjUxODogMHgwMGQ5LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDBjMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjUyNDogMHgwMGI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1MmM6IDB4MDBjMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDBjMSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTNjOiAweDAwYzUsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU1MDogMHgwMGNkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDI1NTE6IDB4MDBiYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MjU1MjogMHgwMGQ1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1MzogMHgwMGQ2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1NDogMHgwMGM5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgyNTU1OiAweDAwYjgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NTY6IDB4MDBiNywgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1NzogMHgwMGJiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDI1NTg6IDB4MDBkNCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTU5OiAweDAwZDMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1YTogMHgwMGM4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MjU1YjogMHgwMGJlLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU1YzogMHgwMGJkLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1ZDogMHgwMGJjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgyNTVlOiAweDAwYzYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1ZjogMHgwMGM3LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NjA6IDB4MDBjYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1NjE6IDB4MDBiNSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NjI6IDB4MDBiNiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NjM6IDB4MDBiOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjU2NDogMHgwMGQxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY1OiAweDAwZDIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NjY6IDB4MDBjYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTY3OiAweDAwY2YsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY4OiAweDAwZDAsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTY5OiAweDAwY2EsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NmE6IDB4MDBkOCwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1NmI6IDB4MDBkNywgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NmM6IDB4MDBjZSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU4MDogMHgwMGRmLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgyNTg0OiAweDAwZGMsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDI1ODg6IDB4MDBkYiwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MjU4YzogMHgwMGRkLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDI1OTA6IDB4MDBkZSwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MjU5MTogMHgwMGIwLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MjU5MjogMHgwMGIxLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDI1OTM6IDB4MDBiMiwgICAgICMgIERBUksgU0hBREUKICAgIDB4MjVhMDogMHgwMGZlLCAgICAgIyAgQkxBQ0sgU1FVQVJFCn0KUEsDBBQAAAAAAAIgo1Zv8aU2zIUAAMyFAAASAAAAZW5jb2RpbmdzL2NwODYzLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnVkVORE9SUy9NSUNTRlQvUEMvQ1A4NjMuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwODYzJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgojIyMgRGVjb2RpbmcgTWFwCgpkZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCmRlY29kaW5nX21hcC51cGRhdGUoewogICAgMHgwMDgwOiAweDAwYzcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMDgxOiAweDAwZmMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDgyOiAweDAwZTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwODM6IDB4MDBlMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDg0OiAweDAwYzIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDg1OiAweDAwZTAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwODY6IDB4MDBiNiwgICAgICMgIFBJTENST1cgU0lHTgogICAgMHgwMDg3OiAweDAwZTcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDA4ODogMHgwMGVhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwODk6IDB4MDBlYiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAweDAwOGE6IDB4MDBlOCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDA4YjogMHgwMGVmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4YzogMHgwMGVlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOGQ6IDB4MjAxNywgICAgICMgIERPVUJMRSBMT1cgTElORQogICAgMHgwMDhlOiAweDAwYzAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgIDB4MDA4ZjogMHgwMGE3LCAgICAgIyAgU0VDVElPTiBTSUdOCiAgICAweDAwOTA6IDB4MDBjOSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMDkxOiAweDAwYzgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDA5MjogMHgwMGNhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5MzogMHgwMGY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOTQ6IDB4MDBjYiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5NTogMHgwMGNmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDk2OiAweDAwZmIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5NzogMHgwMGY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgMHgwMDk4OiAweDAwYTQsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwOTk6IDB4MDBkNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOWE6IDB4MDBkYywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YjogMHgwMGEyLCAgICAgIyAgQ0VOVCBTSUdOCiAgICAweDAwOWM6IDB4MDBhMywgICAgICMgIFBPVU5EIFNJR04KICAgIDB4MDA5ZDogMHgwMGQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwOWU6IDB4MDBkYiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOWY6IDB4MDE5MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgMHgwMGEwOiAweDAwYTYsICAgICAjICBCUk9LRU4gQkFSCiAgICAweDAwYTE6IDB4MDBiNCwgICAgICMgIEFDVVRFIEFDQ0VOVAogICAgMHgwMGEyOiAweDAwZjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwYTM6IDB4MDBmYSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBhNDogMHgwMGE4LCAgICAgIyAgRElBRVJFU0lTCiAgICAweDAwYTU6IDB4MDBiOCwgICAgICMgIENFRElMTEEKICAgIDB4MDBhNjogMHgwMGIzLCAgICAgIyAgU1VQRVJTQ1JJUFQgVEhSRUUKICAgIDB4MDBhNzogMHgwMGFmLCAgICAgIyAgTUFDUk9OCiAgICAweDAwYTg6IDB4MDBjZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwYTk6IDB4MjMxMCwgICAgICMgIFJFVkVSU0VEIE5PVCBTSUdOCiAgICAweDAwYWE6IDB4MDBhYywgICAgICMgIE5PVCBTSUdOCiAgICAweDAwYWI6IDB4MDBiZCwgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgMHgwMGFjOiAweDAwYmMsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgIDB4MDBhZDogMHgwMGJlLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAweDAwYWU6IDB4MDBhYiwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWY6IDB4MDBiYiwgICAgICMgIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgwMGIwOiAweDI1OTEsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgwMGIxOiAweDI1OTIsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MDBiMjogMHgyNTkzLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgwMGIzOiAweDI1MDIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MDBiNDogMHgyNTI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYjU6IDB4MjU2MSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYjY6IDB4MjU2MiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDAwYjc6IDB4MjU1NiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiODogMHgyNTU1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGI5OiAweDI1NjMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYmE6IDB4MjU1MSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MDBiYjogMHgyNTU3LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDAwYmM6IDB4MjU1ZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MDBiZDogMHgyNTVjLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiZTogMHgyNTViLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiZjogMHgyNTEwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MDBjMDogMHgyNTE0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgwMGMxOiAweDI1MzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMjogMHgyNTJjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMzogMHgyNTFjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGM0OiAweDI1MDAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgwMGM1OiAweDI1M2MsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjNjogMHgyNTVlLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDAwYzc6IDB4MjU1ZiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGM4OiAweDI1NWEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgwMGM5OiAweDI1NTQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDAwY2E6IDB4MjU2OSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYjogMHgyNTY2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2M6IDB4MjU2MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwY2Q6IDB4MjU1MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgwMGNlOiAweDI1NmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2Y6IDB4MjU2NywgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDAwZDA6IDB4MjU2OCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDE6IDB4MjU2NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkMjogMHgyNTY1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgwMGQzOiAweDI1NTksICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBkNDogMHgyNTU4LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDAwZDU6IDB4MjU1MiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDAwZDY6IDB4MjU1MywgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwZDc6IDB4MjU2YiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDg6IDB4MjU2YSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDAwZDk6IDB4MjUxOCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgwMGRhOiAweDI1MGMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBkYjogMHgyNTg4LCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgwMGRjOiAweDI1ODQsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDAwZGQ6IDB4MjU4YywgICAgICMgIExFRlQgSEFMRiBCTE9DSwogICAgMHgwMGRlOiAweDI1OTAsICAgICAjICBSSUdIVCBIQUxGIEJMT0NLCiAgICAweDAwZGY6IDB4MjU4MCwgICAgICMgIFVQUEVSIEhBTEYgQkxPQ0sKICAgIDB4MDBlMDogMHgwM2IxLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAweDAwZTE6IDB4MDBkZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAweDAwZTI6IDB4MDM5MywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAweDAwZTM6IDB4MDNjMCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgMHgwMGU0OiAweDAzYTMsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgMHgwMGU1OiAweDAzYzMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKICAgIDB4MDBlNjogMHgwMGI1LCAgICAgIyAgTUlDUk8gU0lHTgogICAgMHgwMGU3OiAweDAzYzQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgVEFVCiAgICAweDAwZTg6IDB4MDNhNiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgMHgwMGU5OiAweDAzOTgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQogICAgMHgwMGVhOiAweDAzYTksICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgMHgwMGViOiAweDAzYjQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKICAgIDB4MDBlYzogMHgyMjFlLCAgICAgIyAgSU5GSU5JVFkKICAgIDB4MDBlZDogMHgwM2M2LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgMHgwMGVlOiAweDAzYjUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgogICAgMHgwMGVmOiAweDIyMjksICAgICAjICBJTlRFUlNFQ1RJT04KICAgIDB4MDBmMDogMHgyMjYxLCAgICAgIyAgSURFTlRJQ0FMIFRPCiAgICAweDAwZjE6IDB4MDBiMSwgICAgICMgIFBMVVMtTUlOVVMgU0lHTgogICAgMHgwMGYyOiAweDIyNjUsICAgICAjICBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MDBmMzogMHgyMjY0LCAgICAgIyAgTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAweDAwZjQ6IDB4MjMyMCwgICAgICMgIFRPUCBIQUxGIElOVEVHUkFMCiAgICAweDAwZjU6IDB4MjMyMSwgICAgICMgIEJPVFRPTSBIQUxGIElOVEVHUkFMCiAgICAweDAwZjY6IDB4MDBmNywgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmNzogMHgyMjQ4LCAgICAgIyAgQUxNT1NUIEVRVUFMIFRPCiAgICAweDAwZjg6IDB4MDBiMCwgICAgICMgIERFR1JFRSBTSUdOCiAgICAweDAwZjk6IDB4MjIxOSwgICAgICMgIEJVTExFVCBPUEVSQVRPUgogICAgMHgwMGZhOiAweDAwYjcsICAgICAjICBNSURETEUgRE9UCiAgICAweDAwZmI6IDB4MjIxYSwgICAgICMgIFNRVUFSRSBST09UCiAgICAweDAwZmM6IDB4MjA3ZiwgICAgICMgIFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDAwZmQ6IDB4MDBiMiwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGZlOiAweDI1YTAsICAgICAjICBCTEFDSyBTUVVBUkUKICAgIDB4MDBmZjogMHgwMGEwLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKfSkKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDAwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDAwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDAwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDAwMDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDAwMDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDAwMDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwMDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwMDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDAwMDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MDAwYSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwMDBiIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwMDBjIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDAwMGQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MDAwZSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwMDBmIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MDAxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MDAxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgwMDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDAwMTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgwMDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgwMDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MDAxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MDAxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MDAxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgwMDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgwMDFhIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgwMDFiIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDAwMWMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgwMDFkIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDAwMWUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDAwMWYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgwMDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MDAyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MDAyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDAwMjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgwMDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MDAyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDAwMjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDAwMjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDAwMjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgwMDJhIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MDAyYiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgwMDJjIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gREVMRVRFCiAgICAnXHhjNycgICAgICMgIDB4MDA4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZmMnICAgICAjICAweDAwODEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGU5JyAgICAgIyAgMHgwMDgyIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHgwMDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzInICAgICAjICAweDAwODQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGUwJyAgICAgIyAgMHgwMDg1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGI2JyAgICAgIyAgMHgwMDg2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4ZTcnICAgICAjICAweDAwODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlYScgICAgICMgIDB4MDA4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHgwMDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlOCcgICAgICMgIDB4MDA4YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlZicgICAgICMgIDB4MDA4YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWUnICAgICAjICAweDAwOGMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUyMDE3JyAgICMgIDB4MDA4ZCAtPiBET1VCTEUgTE9XIExJTkUKICAgICdceGMwJyAgICAgIyAgMHgwMDhlIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4YTcnICAgICAjICAweDAwOGYgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhjOScgICAgICMgIDB4MDA5MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGM4JyAgICAgIyAgMHgwMDkxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4Y2EnICAgICAjICAweDAwOTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGY0JyAgICAgIyAgMHgwMDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweDAwOTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4Y2YnICAgICAjICAweDAwOTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZmInICAgICAjICAweDAwOTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmOScgICAgICMgIDB4MDA5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhhNCcgICAgICMgIDB4MDA5OCAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHhkNCcgICAgICMgIDB4MDA5OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZGMnICAgICAjICAweDAwOWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YTInICAgICAjICAweDAwOWIgLT4gQ0VOVCBTSUdOCiAgICAnXHhhMycgICAgICMgIDB4MDA5YyAtPiBQT1VORCBTSUdOCiAgICAnXHhkOScgICAgICMgIDB4MDA5ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGRiJyAgICAgIyAgMHgwMDllIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTkyJyAgICMgIDB4MDA5ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdceGE2JyAgICAgIyAgMHgwMGEwIC0+IEJST0tFTiBCQVIKICAgICdceGI0JyAgICAgIyAgMHgwMGExIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4ZjMnICAgICAjICAweDAwYTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZmEnICAgICAjICAweDAwYTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4YTgnICAgICAjICAweDAwYTQgLT4gRElBRVJFU0lTCiAgICAnXHhiOCcgICAgICMgIDB4MDBhNSAtPiBDRURJTExBCiAgICAnXHhiMycgICAgICMgIDB4MDBhNiAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x4YWYnICAgICAjICAweDAwYTcgLT4gTUFDUk9OCiAgICAnXHhjZScgICAgICMgIDB4MDBhOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MjMxMCcgICAjICAweDAwYTkgLT4gUkVWRVJTRUQgTk9UIFNJR04KICAgICdceGFjJyAgICAgIyAgMHgwMGFhIC0+IE5PVCBTSUdOCiAgICAnXHhiZCcgICAgICMgIDB4MDBhYiAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJjJyAgICAgIyAgMHgwMGFjIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YmUnICAgICAjICAweDAwYWQgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAnXHhhYicgICAgICMgIDB4MDBhZSAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmInICAgICAjICAweDAwYWYgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyNTkxJyAgICMgIDB4MDBiMCAtPiBMSUdIVCBTSEFERQogICAgJ1x1MjU5MicgICAjICAweDAwYjEgLT4gTUVESVVNIFNIQURFCiAgICAnXHUyNTkzJyAgICMgIDB4MDBiMiAtPiBEQVJLIFNIQURFCiAgICAnXHUyNTAyJyAgICMgIDB4MDBiMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgICdcdTI1MjQnICAgIyAgMHgwMGI0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU2MScgICAjICAweDAwYjUgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1NjInICAgIyAgMHgwMGI2IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAnXHUyNTU2JyAgICMgIDB4MDBiNyAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAnXHUyNTU1JyAgICMgIDB4MDBiOCAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTYzJyAgICMgIDB4MDBiOSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTUxJyAgICMgIDB4MDBiYSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAnXHUyNTU3JyAgICMgIDB4MDBiYiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgICdcdTI1NWQnICAgIyAgMHgwMGJjIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgICdcdTI1NWMnICAgIyAgMHgwMGJkIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAnXHUyNTViJyAgICMgIDB4MDBiZSAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjUxMCcgICAjICAweDAwYmYgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgICdcdTI1MTQnICAgIyAgMHgwMGMwIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgICdcdTI1MzQnICAgIyAgMHgwMGMxIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUyYycgICAjICAweDAwYzIgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1MWMnICAgIyAgMHgwMGMzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1MDAnICAgIyAgMHgwMGM0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTNjJyAgICMgIDB4MDBjNSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NWUnICAgIyAgMHgwMGM2IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MjU1ZicgICAjICAweDAwYzcgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTVhJyAgICMgIDB4MDBjOCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgJ1x1MjU1NCcgICAjICAweDAwYzkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU2OScgICAjICAweDAwY2EgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NicgICAjICAweDAwY2IgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTYwJyAgICMgIDB4MDBjYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjU1MCcgICAjICAweDAwY2QgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAnXHUyNTZjJyAgICMgIDB4MDBjZSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTY3JyAgICMgIDB4MDBjZiAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2OCcgICAjICAweDAwZDAgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NjQnICAgIyAgMHgwMGQxIC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1NjUnICAgIyAgMHgwMGQyIC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NTknICAgIyAgMHgwMGQzIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU1OCcgICAjICAweDAwZDQgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTUyJyAgICMgIDB4MDBkNSAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MjU1MycgICAjICAweDAwZDYgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NmInICAgIyAgMHgwMGQ3IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTZhJyAgICMgIDB4MDBkOCAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjUxOCcgICAjICAweDAwZDkgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAnXHUyNTBjJyAgICMgIDB4MDBkYSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1ODgnICAgIyAgMHgwMGRiIC0+IEZVTEwgQkxPQ0sKICAgICdcdTI1ODQnICAgIyAgMHgwMGRjIC0+IExPV0VSIEhBTEYgQkxPQ0sKICAgICdcdTI1OGMnICAgIyAgMHgwMGRkIC0+IExFRlQgSEFMRiBCTE9DSwogICAgJ1x1MjU5MCcgICAjICAweDAwZGUgLT4gUklHSFQgSEFMRiBCTE9DSwogICAgJ1x1MjU4MCcgICAjICAweDAwZGYgLT4gVVBQRVIgSEFMRiBCTE9DSwogICAgJ1x1MDNiMScgICAjICAweDAwZTAgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAnXHhkZicgICAgICMgIDB4MDBlMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgJ1x1MDM5MycgICAjICAweDAwZTIgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgICdcdTAzYzAnICAgIyAgMHgwMGUzIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgJ1x1MDNhMycgICAjICAweDAwZTQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKICAgICdcdTAzYzMnICAgIyAgMHgwMGU1IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgJ1x4YjUnICAgICAjICAweDAwZTYgLT4gTUlDUk8gU0lHTgogICAgJ1x1MDNjNCcgICAjICAweDAwZTcgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgJ1x1MDNhNicgICAjICAweDAwZTggLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAnXHUwMzk4JyAgICMgIDB4MDBlOSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQogICAgJ1x1MDNhOScgICAjICAweDAwZWEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKICAgICdcdTAzYjQnICAgIyAgMHgwMGViIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgJ1x1MjIxZScgICAjICAweDAwZWMgLT4gSU5GSU5JVFkKICAgICdcdTAzYzYnICAgIyAgMHgwMGVkIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgICdcdTAzYjUnICAgIyAgMHgwMGVlIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAnXHUyMjI5JyAgICMgIDB4MDBlZiAtPiBJTlRFUlNFQ1RJT04KICAgICdcdTIyNjEnICAgIyAgMHgwMGYwIC0+IElERU5USUNBTCBUTwogICAgJ1x4YjEnICAgICAjICAweDAwZjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHUyMjY1JyAgICMgIDB4MDBmMiAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTIyNjQnICAgIyAgMHgwMGYzIC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjMyMCcgICAjICAweDAwZjQgLT4gVE9QIEhBTEYgSU5URUdSQUwKICAgICdcdTIzMjEnICAgIyAgMHgwMGY1IC0+IEJPVFRPTSBIQUxGIElOVEVHUkFMCiAgICAnXHhmNycgICAgICMgIDB4MDBmNiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUyMjQ4JyAgICMgIDB4MDBmNyAtPiBBTE1PU1QgRVFVQUwgVE8KICAgICdceGIwJyAgICAgIyAgMHgwMGY4IC0+IERFR1JFRSBTSUdOCiAgICAnXHUyMjE5JyAgICMgIDB4MDBmOSAtPiBCVUxMRVQgT1BFUkFUT1IKICAgICdceGI3JyAgICAgIyAgMHgwMGZhIC0+IE1JRERMRSBET1QKICAgICdcdTIyMWEnICAgIyAgMHgwMGZiIC0+IFNRVUFSRSBST09UCiAgICAnXHUyMDdmJyAgICMgIDB4MDBmYyAtPiBTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ1x4YjInICAgICAjICAweDAwZmQgLT4gU1VQRVJTQ1JJUFQgVFdPCiAgICAnXHUyNWEwJyAgICMgIDB4MDBmZSAtPiBCTEFDSyBTUVVBUkUKICAgICdceGEwJyAgICAgIyAgMHgwMGZmIC0+IE5PLUJSRUFLIFNQQUNFCikKCiMjIyBFbmNvZGluZyBNYXAKCmVuY29kaW5nX21hcCA9IHsKICAgIDB4MDAwMDogMHgwMDAwLCAgICAgIyAgTlVMTAogICAgMHgwMDAxOiAweDAwMDEsICAgICAjICBTVEFSVCBPRiBIRUFESU5HCiAgICAweDAwMDI6IDB4MDAwMiwgICAgICMgIFNUQVJUIE9GIFRFWFQKICAgIDB4MDAwMzogMHgwMDAzLCAgICAgIyAgRU5EIE9GIFRFWFQKICAgIDB4MDAwNDogMHgwMDA0LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgMHgwMDA1OiAweDAwMDUsICAgICAjICBFTlFVSVJZCiAgICAweDAwMDY6IDB4MDAwNiwgICAgICMgIEFDS05PV0xFREdFCiAgICAweDAwMDc6IDB4MDAwNywgICAgICMgIEJFTEwKICAgIDB4MDAwODogMHgwMDA4LCAgICAgIyAgQkFDS1NQQUNFCiAgICAweDAwMDk6IDB4MDAwOSwgICAgICMgIEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgMHgwMDBhOiAweDAwMGEsICAgICAjICBMSU5FIEZFRUQKICAgIDB4MDAwYjogMHgwMDBiLCAgICAgIyAgVkVSVElDQUwgVEFCVUxBVElPTgogICAgMHgwMDBjOiAweDAwMGMsICAgICAjICBGT1JNIEZFRUQKICAgIDB4MDAwZDogMHgwMDBkLCAgICAgIyAgQ0FSUklBR0UgUkVUVVJOCiAgICAweDAwMGU6IDB4MDAwZSwgICAgICMgIFNISUZUIE9VVAogICAgMHgwMDBmOiAweDAwMGYsICAgICAjICBTSElGVCBJTgogICAgMHgwMDEwOiAweDAwMTAsICAgICAjICBEQVRBIExJTksgRVNDQVBFCiAgICAweDAwMTE6IDB4MDAxMSwgICAgICMgIERFVklDRSBDT05UUk9MIE9ORQogICAgMHgwMDEyOiAweDAwMTIsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUV08KICAgIDB4MDAxMzogMHgwMDEzLCAgICAgIyAgREVWSUNFIENPTlRST0wgVEhSRUUKICAgIDB4MDAxNDogMHgwMDE0LCAgICAgIyAgREVWSUNFIENPTlRST0wgRk9VUgogICAgMHgwMDE1OiAweDAwMTUsICAgICAjICBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgMHgwMDE2OiAweDAwMTYsICAgICAjICBTWU5DSFJPTk9VUyBJRExFCiAgICAweDAwMTc6IDB4MDAxNywgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgIDB4MDAxODogMHgwMDE4LCAgICAgIyAgQ0FOQ0VMCiAgICAweDAwMTk6IDB4MDAxOSwgICAgICMgIEVORCBPRiBNRURJVU0KICAgIDB4MDAxYTogMHgwMDFhLCAgICAgIyAgU1VCU1RJVFVURQogICAgMHgwMDFiOiAweDAwMWIsICAgICAjICBFU0NBUEUKICAgIDB4MDAxYzogMHgwMDFjLCAgICAgIyAgRklMRSBTRVBBUkFUT1IKICAgIDB4MDAxZDogMHgwMDFkLCAgICAgIyAgR1JPVVAgU0VQQVJBVE9SCiAgICAweDAwMWU6IDB4MDAxZSwgICAgICMgIFJFQ09SRCBTRVBBUkFUT1IKICAgIDB4MDAxZjogMHgwMDFmLCAgICAgIyAgVU5JVCBTRVBBUkFUT1IKICAgIDB4MDAyMDogMHgwMDIwLCAgICAgIyAgU1BBQ0UKICAgIDB4MDAyMTogMHgwMDIxLCAgICAgIyAgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMDIyOiAweDAwMjIsICAgICAjICBRVU9UQVRJT04gTUFSSwogICAgMHgwMDIzOiAweDAwMjMsICAgICAjICBOVU1CRVIgU0lHTgogICAgMHgwMDI0OiAweDAwMjQsICAgICAjICBET0xMQVIgU0lHTgogICAgMHgwMDI1OiAweDAwMjUsICAgICAjICBQRVJDRU5UIFNJR04KICAgIDB4MDAyNjogMHgwMDI2LCAgICAgIyAgQU1QRVJTQU5ECiAgICAweDAwMjc6IDB4MDAyNywgICAgICMgIEFQT1NUUk9QSEUKICAgIDB4MDAyODogMHgwMDI4LCAgICAgIyAgTEVGVCBQQVJFTlRIRVNJUwogICAgMHgwMDI5OiAweDAwMjksICAgICAjICBSSUdIVCBQQVJFTlRIRVNJUwogICAgMHgwMDJhOiAweDAwMmEsICAgICAjICBBU1RFUklTSwogICAgMHgwMDJiOiAweDAwMmIsICAgICAjICBQTFVTIFNJR04KICAgIDB4MDAyYzogMHgwMDJjLCAgICAgIyAgQ09NTUEKICAgIDB4MDAyZDogMHgwMDJkLCAgICAgIyAgSFlQSEVOLU1JTlVTCiAgICAweDAwMmU6IDB4MDAyZSwgICAgICMgIEZVTEwgU1RPUAogICAgMHgwMDJmOiAweDAwMmYsICAgICAjICBTT0xJRFVTCiAgICAweDAwMzA6IDB4MDAzMCwgICAgICMgIERJR0lUIFpFUk8KICAgIDB4MDAzMTogMHgwMDMxLCAgICAgIyAgRElHSVQgT05FCiAgICAweDAwMzI6IDB4MDAzMiwgICAgICMgIERJR0lUIFRXTwogICAgMHgwMDMzOiAweDAwMzMsICAgICAjICBESUdJVCBUSFJFRQogICAgMHgwMDM0OiAweDAwMzQsICAgICAjICBESUdJVCBGT1VSCiAgICAweDAwMzU6IDB4MDAzNSwgICAgICMgIERJR0lUIEZJVkUKICAgIDB4MDAzNjogMHgwMDM2LCAgICAgIyAgRElHSVQgU0lYCiAgICAweDAwMzc6IDB4MDAzNywgICAgICMgIERJR0lUIFNFVkVOCiAgICAweDAwMzg6IDB4MDAzOCwgICAgICMgIERJR0lUIEVJR0hUCiAgICAweDAwMzk6IDB4MDAzOSwgICAgICMgIERJR0lUIE5JTkUKICAgIDB4MDAzYTogMHgwMDNhLCAgICAgIyAgQ09MT04KICAgIDB4MDAzYjogMHgwMDNiLCAgICAgIyAgU0VNSUNPTE9OCiAgICAweDAwM2M6IDB4MDAzYywgICAgICMgIExFU1MtVEhBTiBTSUdOCiAgICAweDAwM2Q6IDB4MDAzZCwgICAgICMgIEVRVUFMUyBTSUdOCiAgICAweDAwM2U6IDB4MDAzZSwgICAgICMgIEdSRUFURVItVEhBTiBTSUdOCiAgICAweDAwM2Y6IDB4MDAzZiwgICAgICMgIFFVRVNUSU9OIE1BUksKICAgIDB4MDA0MDogMHgwMDQwLCAgICAgIyAgQ09NTUVSQ0lBTCBBVAogICAgMHgwMDQxOiAweDAwNDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAweDAwNDI6IDB4MDA0MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgIDB4MDA0MzogMHgwMDQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgMHgwMDQ0OiAweDAwNDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAweDAwNDU6IDB4MDA0NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgIDB4MDA0NjogMHgwMDQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgMHgwMDQ3OiAweDAwNDcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAweDAwNDg6IDB4MDA0OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgIDB4MDA0OTogMHgwMDQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgMHgwMDRhOiAweDAwNGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAweDAwNGI6IDB4MDA0YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgIDB4MDA0YzogMHgwMDRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgMHgwMDRkOiAweDAwNGQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAweDAwNGU6IDB4MDA0ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgIDB4MDA0ZjogMHgwMDRmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwMDUwOiAweDAwNTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAweDAwNTE6IDB4MDA1MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgIDB4MDA1MjogMHgwMDUyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgMHgwMDUzOiAweDAwNTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAweDAwNTQ6IDB4MDA1NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgIDB4MDA1NTogMHgwMDU1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgMHgwMDU2OiAweDAwNTYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAweDAwNTc6IDB4MDA1NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgIDB4MDA1ODogMHgwMDU4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgMHgwMDU5OiAweDAwNTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAweDAwNWE6IDB4MDA1YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgIDB4MDA1YjogMHgwMDViLCAgICAgIyAgTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVjOiAweDAwNWMsICAgICAjICBSRVZFUlNFIFNPTElEVVMKICAgIDB4MDA1ZDogMHgwMDVkLCAgICAgIyAgUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1ZTogMHgwMDVlLCAgICAgIyAgQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgIDB4MDA1ZjogMHgwMDVmLCAgICAgIyAgTE9XIExJTkUKICAgIDB4MDA2MDogMHgwMDYwLCAgICAgIyAgR1JBVkUgQUNDRU5UCiAgICAweDAwNjE6IDB4MDA2MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAweDAwNjI6IDB4MDA2MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAweDAwNjM6IDB4MDA2MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAweDAwNjQ6IDB4MDA2NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBECiAgICAweDAwNjU6IDB4MDA2NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAweDAwNjY6IDB4MDA2NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAweDAwNjc6IDB4MDA2NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAweDAwNjg6IDB4MDA2OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBICiAgICAweDAwNjk6IDB4MDA2OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAweDAwNmE6IDB4MDA2YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAweDAwNmI6IDB4MDA2YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAweDAwNmM6IDB4MDA2YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAweDAwNmQ6IDB4MDA2ZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAweDAwNmU6IDB4MDA2ZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDAwNmY6IDB4MDA2ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAweDAwNzA6IDB4MDA3MCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAweDAwNzE6IDB4MDA3MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAweDAwNzI6IDB4MDA3MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAweDAwNzM6IDB4MDA3MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAweDAwNzQ6IDB4MDA3NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAweDAwNzU6IDB4MDA3NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAweDAwNzY6IDB4MDA3NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAweDAwNzc6IDB4MDA3NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAweDAwNzg6IDB4MDA3OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAweDAwNzk6IDB4MDA3OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAweDAwN2E6IDB4MDA3YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAweDAwN2I6IDB4MDA3YiwgICAgICMgIExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdjOiAweDAwN2MsICAgICAjICBWRVJUSUNBTCBMSU5FCiAgICAweDAwN2Q6IDB4MDA3ZCwgICAgICMgIFJJR0hUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3ZTogMHgwMDdlLCAgICAgIyAgVElMREUKICAgIDB4MDA3ZjogMHgwMDdmLCAgICAgIyAgREVMRVRFCiAgICAweDAwYTA6IDB4MDBmZiwgICAgICMgIE5PLUJSRUFLIFNQQUNFCiAgICAweDAwYTI6IDB4MDA5YiwgICAgICMgIENFTlQgU0lHTgogICAgMHgwMGEzOiAweDAwOWMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwYTQ6IDB4MDA5OCwgICAgICMgIENVUlJFTkNZIFNJR04KICAgIDB4MDBhNjogMHgwMGEwLCAgICAgIyAgQlJPS0VOIEJBUgogICAgMHgwMGE3OiAweDAwOGYsICAgICAjICBTRUNUSU9OIFNJR04KICAgIDB4MDBhODogMHgwMGE0LCAgICAgIyAgRElBRVJFU0lTCiAgICAweDAwYWI6IDB4MDBhZSwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWM6IDB4MDBhYSwgICAgICMgIE5PVCBTSUdOCiAgICAweDAwYWY6IDB4MDBhNywgICAgICMgIE1BQ1JPTgogICAgMHgwMGIwOiAweDAwZjgsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGIxOiAweDAwZjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBiMjogMHgwMGZkLCAgICAgIyAgU1VQRVJTQ1JJUFQgVFdPCiAgICAweDAwYjM6IDB4MDBhNiwgICAgICMgIFNVUEVSU0NSSVBUIFRIUkVFCiAgICAweDAwYjQ6IDB4MDBhMSwgICAgICMgIEFDVVRFIEFDQ0VOVAogICAgMHgwMGI1OiAweDAwZTYsICAgICAjICBNSUNSTyBTSUdOCiAgICAweDAwYjY6IDB4MDA4NiwgICAgICMgIFBJTENST1cgU0lHTgogICAgMHgwMGI3OiAweDAwZmEsICAgICAjICBNSURETEUgRE9UCiAgICAweDAwYjg6IDB4MDBhNSwgICAgICMgIENFRElMTEEKICAgIDB4MDBiYjogMHgwMGFmLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYmM6IDB4MDBhYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGJkOiAweDAwYWIsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBiZTogMHgwMGFkLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAweDAwYzA6IDB4MDA4ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMGMyOiAweDAwODQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGM3OiAweDAwODAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMGM4OiAweDAwOTEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDBjOTogMHgwMDkwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwY2E6IDB4MDA5MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwY2I6IDB4MDA5NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBjZTogMHgwMGE4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBjZjogMHgwMDk1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGQ0OiAweDAwOTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGQ5OiAweDAwOWQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgIDB4MDBkYjogMHgwMDllLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBkYzogMHgwMDlhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGRmOiAweDAwZTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgMHgwMGUwOiAweDAwODUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwZTI6IDB4MDA4MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGU3OiAweDAwODcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDBlODogMHgwMDhhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMGU5OiAweDAwODIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwZWE6IDB4MDA4OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGViOiAweDAwODksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGVlOiAweDAwOGMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBlZjogMHgwMDhiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBmMzogMHgwMGEyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGY0OiAweDAwOTMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBmNzogMHgwMGY2LCAgICAgIyAgRElWSVNJT04gU0lHTgogICAgMHgwMGY5OiAweDAwOTcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwZmE6IDB4MDBhMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBmYjogMHgwMDk2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZmM6IDB4MDA4MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDAxOTI6IDB4MDA5ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgMHgwMzkzOiAweDAwZTIsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQogICAgMHgwMzk4OiAweDAwZTksICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQogICAgMHgwM2EzOiAweDAwZTQsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgMHgwM2E2OiAweDAwZTgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKICAgIDB4MDNhOTogMHgwMGVhLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKICAgIDB4MDNiMTogMHgwMGUwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAweDAzYjQ6IDB4MDBlYiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgMHgwM2I1OiAweDAwZWUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgogICAgMHgwM2MwOiAweDAwZTMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgIDB4MDNjMzogMHgwMGU1LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAweDAzYzQ6IDB4MDBlNywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgIDB4MDNjNjogMHgwMGVkLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgMHgyMDE3OiAweDAwOGQsICAgICAjICBET1VCTEUgTE9XIExJTkUKICAgIDB4MjA3ZjogMHgwMGZjLCAgICAgIyAgU1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MjIxOTogMHgwMGY5LCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDIyMWE6IDB4MDBmYiwgICAgICMgIFNRVUFSRSBST09UCiAgICAweDIyMWU6IDB4MDBlYywgICAgICMgIElORklOSVRZCiAgICAweDIyMjk6IDB4MDBlZiwgICAgICMgIElOVEVSU0VDVElPTgogICAgMHgyMjQ4OiAweDAwZjcsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MjI2MTogMHgwMGYwLCAgICAgIyAgSURFTlRJQ0FMIFRPCiAgICAweDIyNjQ6IDB4MDBmMywgICAgICMgIExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgMHgyMjY1OiAweDAwZjIsICAgICAjICBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MjMxMDogMHgwMGE5LCAgICAgIyAgUkVWRVJTRUQgTk9UIFNJR04KICAgIDB4MjMyMDogMHgwMGY0LCAgICAgIyAgVE9QIEhBTEYgSU5URUdSQUwKICAgIDB4MjMyMTogMHgwMGY1LCAgICAgIyAgQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgIDB4MjUwMDogMHgwMGM0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgIDB4MjUwMjogMHgwMGIzLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAweDI1MGM6IDB4MDBkYSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgyNTEwOiAweDAwYmYsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgyNTE0OiAweDAwYzAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDI1MTg6IDB4MDBkOSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgyNTFjOiAweDAwYzMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1MjQ6IDB4MDBiNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTJjOiAweDAwYzIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTM0OiAweDAwYzEsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MjUzYzogMHgwMGM1LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NTA6IDB4MDBjZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgyNTUxOiAweDAwYmEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDI1NTI6IDB4MDBkNSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDI1NTM6IDB4MDBkNiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NTQ6IDB4MDBjOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MjU1NTogMHgwMGI4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgyNTU2OiAweDAwYjcsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NTc6IDB4MDBiYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgyNTU4OiAweDAwZDQsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1OTogMHgwMGQzLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NWE6IDB4MDBjOCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDI1NWI6IDB4MDBiZSwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NWM6IDB4MDBiZCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NWQ6IDB4MDBiYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MjU1ZTogMHgwMGM2LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDI1NWY6IDB4MDBjNywgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgyNTYwOiAweDAwY2MsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTYxOiAweDAwYjUsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgyNTYyOiAweDAwYjYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgyNTYzOiAweDAwYjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1NjQ6IDB4MDBkMSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MjU2NTogMHgwMGQyLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTY2OiAweDAwY2IsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MjU2NzogMHgwMGNmLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MjU2ODogMHgwMGQwLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MjU2OTogMHgwMGNhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTZhOiAweDAwZDgsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTZiOiAweDAwZDcsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTZjOiAweDAwY2UsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1ODA6IDB4MDBkZiwgICAgICMgIFVQUEVSIEhBTEYgQkxPQ0sKICAgIDB4MjU4NDogMHgwMGRjLCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgyNTg4OiAweDAwZGIsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDI1OGM6IDB4MDBkZCwgICAgICMgIExFRlQgSEFMRiBCTE9DSwogICAgMHgyNTkwOiAweDAwZGUsICAgICAjICBSSUdIVCBIQUxGIEJMT0NLCiAgICAweDI1OTE6IDB4MDBiMCwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDI1OTI6IDB4MDBiMSwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgyNTkzOiAweDAwYjIsICAgICAjICBEQVJLIFNIQURFCiAgICAweDI1YTA6IDB4MDBmZSwgICAgICMgIEJMQUNLIFNRVUFSRQp9ClBLAwQUAAAAAAACIKNWI6j65n+DAAB/gwAAEgAAAGVuY29kaW5ncy9jcDg2NC5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgZ2VuZXJhdGVkIGZyb20gJ1ZFTkRPUlMvTUlDU0ZUL1BDL0NQODY0LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDg2NCcsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKIyMjIERlY29kaW5nIE1hcAoKZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQpkZWNvZGluZ19tYXAudXBkYXRlKHsKICAgIDB4MDAyNTogMHgwNjZhLCAgICAgIyAgQVJBQklDIFBFUkNFTlQgU0lHTgogICAgMHgwMDgwOiAweDAwYjAsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMDgxOiAweDAwYjcsICAgICAjICBNSURETEUgRE9UCiAgICAweDAwODI6IDB4MjIxOSwgICAgICMgIEJVTExFVCBPUEVSQVRPUgogICAgMHgwMDgzOiAweDIyMWEsICAgICAjICBTUVVBUkUgUk9PVAogICAgMHgwMDg0OiAweDI1OTIsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MDA4NTogMHgyNTAwLCAgICAgIyAgRk9STVMgTElHSFQgSE9SSVpPTlRBTAogICAgMHgwMDg2OiAweDI1MDIsICAgICAjICBGT1JNUyBMSUdIVCBWRVJUSUNBTAogICAgMHgwMDg3OiAweDI1M2MsICAgICAjICBGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMDg4OiAweDI1MjQsICAgICAjICBGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMDg5OiAweDI1MmMsICAgICAjICBGT1JNUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDAwOGE6IDB4MjUxYywgICAgICMgIEZPUk1TIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMDhiOiAweDI1MzQsICAgICAjICBGT1JNUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMDhjOiAweDI1MTAsICAgICAjICBGT1JNUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDAwOGQ6IDB4MjUwYywgICAgICMgIEZPUk1TIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDAwOGU6IDB4MjUxNCwgICAgICMgIEZPUk1TIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgwMDhmOiAweDI1MTgsICAgICAjICBGT1JNUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgwMDkwOiAweDAzYjIsICAgICAjICBHUkVFSyBTTUFMTCBCRVRBCiAgICAweDAwOTE6IDB4MjIxZSwgICAgICMgIElORklOSVRZCiAgICAweDAwOTI6IDB4MDNjNiwgICAgICMgIEdSRUVLIFNNQUxMIFBISQogICAgMHgwMDkzOiAweDAwYjEsICAgICAjICBQTFVTLU9SLU1JTlVTIFNJR04KICAgIDB4MDA5NDogMHgwMGJkLCAgICAgIyAgRlJBQ1RJT04gMS8yCiAgICAweDAwOTU6IDB4MDBiYywgICAgICMgIEZSQUNUSU9OIDEvNAogICAgMHgwMDk2OiAweDIyNDgsICAgICAjICBBTE1PU1QgRVFVQUwgVE8KICAgIDB4MDA5NzogMHgwMGFiLCAgICAgIyAgTEVGVCBQT0lOVElORyBHVUlMTEVNRVQKICAgIDB4MDA5ODogMHgwMGJiLCAgICAgIyAgUklHSFQgUE9JTlRJTkcgR1VJTExFTUVUCiAgICAweDAwOTk6IDB4ZmVmNywgICAgICMgIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STQogICAgMHgwMDlhOiAweGZlZjgsICAgICAjICBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk0KICAgIDB4MDA5YjogTm9uZSwgICAgICAgIyAgVU5ERUZJTkVECiAgICAweDAwOWM6IE5vbmUsICAgICAgICMgIFVOREVGSU5FRAogICAgMHgwMDlkOiAweGZlZmIsICAgICAjICBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBJU09MQVRFRCBGT1JNCiAgICAweDAwOWU6IDB4ZmVmYywgICAgICMgIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIEZJTkFMIEZPUk0KICAgIDB4MDA5ZjogTm9uZSwgICAgICAgIyAgVU5ERUZJTkVECiAgICAweDAwYTE6IDB4MDBhZCwgICAgICMgIFNPRlQgSFlQSEVOCiAgICAweDAwYTI6IDB4ZmU4MiwgICAgICMgIEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIEZJTkFMIEZPUk0KICAgIDB4MDBhNTogMHhmZTg0LCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQogICAgMHgwMGE2OiBOb25lLCAgICAgICAjICBVTkRFRklORUQKICAgIDB4MDBhNzogTm9uZSwgICAgICAgIyAgVU5ERUZJTkVECiAgICAweDAwYTg6IDB4ZmU4ZSwgICAgICMgIEFSQUJJQyBMRVRURVIgQUxFRiBGSU5BTCBGT1JNCiAgICAweDAwYTk6IDB4ZmU4ZiwgICAgICMgIEFSQUJJQyBMRVRURVIgQkVIIElTT0xBVEVEIEZPUk0KICAgIDB4MDBhYTogMHhmZTk1LCAgICAgIyAgQVJBQklDIExFVFRFUiBURUggSVNPTEFURUQgRk9STQogICAgMHgwMGFiOiAweGZlOTksICAgICAjICBBUkFCSUMgTEVUVEVSIFRIRUggSVNPTEFURUQgRk9STQogICAgMHgwMGFjOiAweDA2MGMsICAgICAjICBBUkFCSUMgQ09NTUEKICAgIDB4MDBhZDogMHhmZTlkLCAgICAgIyAgQVJBQklDIExFVFRFUiBKRUVNIElTT0xBVEVEIEZPUk0KICAgIDB4MDBhZTogMHhmZWExLCAgICAgIyAgQVJBQklDIExFVFRFUiBIQUggSVNPTEFURUQgRk9STQogICAgMHgwMGFmOiAweGZlYTUsICAgICAjICBBUkFCSUMgTEVUVEVSIEtIQUggSVNPTEFURUQgRk9STQogICAgMHgwMGIwOiAweDA2NjAsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTwogICAgMHgwMGIxOiAweDA2NjEsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgT05FCiAgICAweDAwYjI6IDB4MDY2MiwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBUV08KICAgIDB4MDBiMzogMHgwNjYzLCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIFRIUkVFCiAgICAweDAwYjQ6IDB4MDY2NCwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCiAgICAweDAwYjU6IDB4MDY2NSwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBGSVZFCiAgICAweDAwYjY6IDB4MDY2NiwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBTSVgKICAgIDB4MDBiNzogMHgwNjY3LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIFNFVkVOCiAgICAweDAwYjg6IDB4MDY2OCwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVAogICAgMHgwMGI5OiAweDA2NjksICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgTklORQogICAgMHgwMGJhOiAweGZlZDEsICAgICAjICBBUkFCSUMgTEVUVEVSIEZFSCBJU09MQVRFRCBGT1JNCiAgICAweDAwYmI6IDB4MDYxYiwgICAgICMgIEFSQUJJQyBTRU1JQ09MT04KICAgIDB4MDBiYzogMHhmZWIxLCAgICAgIyAgQVJBQklDIExFVFRFUiBTRUVOIElTT0xBVEVEIEZPUk0KICAgIDB4MDBiZDogMHhmZWI1LCAgICAgIyAgQVJBQklDIExFVFRFUiBTSEVFTiBJU09MQVRFRCBGT1JNCiAgICAweDAwYmU6IDB4ZmViOSwgICAgICMgIEFSQUJJQyBMRVRURVIgU0FEIElTT0xBVEVEIEZPUk0KICAgIDB4MDBiZjogMHgwNjFmLCAgICAgIyAgQVJBQklDIFFVRVNUSU9OIE1BUksKICAgIDB4MDBjMDogMHgwMGEyLCAgICAgIyAgQ0VOVCBTSUdOCiAgICAweDAwYzE6IDB4ZmU4MCwgICAgICMgIEFSQUJJQyBMRVRURVIgSEFNWkEgSVNPTEFURUQgRk9STQogICAgMHgwMGMyOiAweGZlODEsICAgICAjICBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBJU09MQVRFRCBGT1JNCiAgICAweDAwYzM6IDB4ZmU4MywgICAgICMgIEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgIDB4MDBjNDogMHhmZTg1LCAgICAgIyAgQVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNCiAgICAweDAwYzU6IDB4ZmVjYSwgICAgICMgIEFSQUJJQyBMRVRURVIgQUlOIEZJTkFMIEZPUk0KICAgIDB4MDBjNjogMHhmZThiLCAgICAgIyAgQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJTklUSUFMIEZPUk0KICAgIDB4MDBjNzogMHhmZThkLCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIElTT0xBVEVEIEZPUk0KICAgIDB4MDBjODogMHhmZTkxLCAgICAgIyAgQVJBQklDIExFVFRFUiBCRUggSU5JVElBTCBGT1JNCiAgICAweDAwYzk6IDB4ZmU5MywgICAgICMgIEFSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgSVNPTEFURUQgRk9STQogICAgMHgwMGNhOiAweGZlOTcsICAgICAjICBBUkFCSUMgTEVUVEVSIFRFSCBJTklUSUFMIEZPUk0KICAgIDB4MDBjYjogMHhmZTliLCAgICAgIyAgQVJBQklDIExFVFRFUiBUSEVIIElOSVRJQUwgRk9STQogICAgMHgwMGNjOiAweGZlOWYsICAgICAjICBBUkFCSUMgTEVUVEVSIEpFRU0gSU5JVElBTCBGT1JNCiAgICAweDAwY2Q6IDB4ZmVhMywgICAgICMgIEFSQUJJQyBMRVRURVIgSEFIIElOSVRJQUwgRk9STQogICAgMHgwMGNlOiAweGZlYTcsICAgICAjICBBUkFCSUMgTEVUVEVSIEtIQUggSU5JVElBTCBGT1JNCiAgICAweDAwY2Y6IDB4ZmVhOSwgICAgICMgIEFSQUJJQyBMRVRURVIgREFMIElTT0xBVEVEIEZPUk0KICAgIDB4MDBkMDogMHhmZWFiLCAgICAgIyAgQVJBQklDIExFVFRFUiBUSEFMIElTT0xBVEVEIEZPUk0KICAgIDB4MDBkMTogMHhmZWFkLCAgICAgIyAgQVJBQklDIExFVFRFUiBSRUggSVNPTEFURUQgRk9STQogICAgMHgwMGQyOiAweGZlYWYsICAgICAjICBBUkFCSUMgTEVUVEVSIFpBSU4gSVNPTEFURUQgRk9STQogICAgMHgwMGQzOiAweGZlYjMsICAgICAjICBBUkFCSUMgTEVUVEVSIFNFRU4gSU5JVElBTCBGT1JNCiAgICAweDAwZDQ6IDB4ZmViNywgICAgICMgIEFSQUJJQyBMRVRURVIgU0hFRU4gSU5JVElBTCBGT1JNCiAgICAweDAwZDU6IDB4ZmViYiwgICAgICMgIEFSQUJJQyBMRVRURVIgU0FEIElOSVRJQUwgRk9STQogICAgMHgwMGQ2OiAweGZlYmYsICAgICAjICBBUkFCSUMgTEVUVEVSIERBRCBJTklUSUFMIEZPUk0KICAgIDB4MDBkNzogMHhmZWMxLCAgICAgIyAgQVJBQklDIExFVFRFUiBUQUggSVNPTEFURUQgRk9STQogICAgMHgwMGQ4OiAweGZlYzUsICAgICAjICBBUkFCSUMgTEVUVEVSIFpBSCBJU09MQVRFRCBGT1JNCiAgICAweDAwZDk6IDB4ZmVjYiwgICAgICMgIEFSQUJJQyBMRVRURVIgQUlOIElOSVRJQUwgRk9STQogICAgMHgwMGRhOiAweGZlY2YsICAgICAjICBBUkFCSUMgTEVUVEVSIEdIQUlOIElOSVRJQUwgRk9STQogICAgMHgwMGRiOiAweDAwYTYsICAgICAjICBCUk9LRU4gVkVSVElDQUwgQkFSCiAgICAweDAwZGM6IDB4MDBhYywgICAgICMgIE5PVCBTSUdOCiAgICAweDAwZGQ6IDB4MDBmNywgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBkZTogMHgwMGQ3LCAgICAgIyAgTVVMVElQTElDQVRJT04gU0lHTgogICAgMHgwMGRmOiAweGZlYzksICAgICAjICBBUkFCSUMgTEVUVEVSIEFJTiBJU09MQVRFRCBGT1JNCiAgICAweDAwZTA6IDB4MDY0MCwgICAgICMgIEFSQUJJQyBUQVRXRUVMCiAgICAweDAwZTE6IDB4ZmVkMywgICAgICMgIEFSQUJJQyBMRVRURVIgRkVIIElOSVRJQUwgRk9STQogICAgMHgwMGUyOiAweGZlZDcsICAgICAjICBBUkFCSUMgTEVUVEVSIFFBRiBJTklUSUFMIEZPUk0KICAgIDB4MDBlMzogMHhmZWRiLCAgICAgIyAgQVJBQklDIExFVFRFUiBLQUYgSU5JVElBTCBGT1JNCiAgICAweDAwZTQ6IDB4ZmVkZiwgICAgICMgIEFSQUJJQyBMRVRURVIgTEFNIElOSVRJQUwgRk9STQogICAgMHgwMGU1OiAweGZlZTMsICAgICAjICBBUkFCSUMgTEVUVEVSIE1FRU0gSU5JVElBTCBGT1JNCiAgICAweDAwZTY6IDB4ZmVlNywgICAgICMgIEFSQUJJQyBMRVRURVIgTk9PTiBJTklUSUFMIEZPUk0KICAgIDB4MDBlNzogMHhmZWViLCAgICAgIyAgQVJBQklDIExFVFRFUiBIRUggSU5JVElBTCBGT1JNCiAgICAweDAwZTg6IDB4ZmVlZCwgICAgICMgIEFSQUJJQyBMRVRURVIgV0FXIElTT0xBVEVEIEZPUk0KICAgIDB4MDBlOTogMHhmZWVmLCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQogICAgMHgwMGVhOiAweGZlZjMsICAgICAjICBBUkFCSUMgTEVUVEVSIFlFSCBJTklUSUFMIEZPUk0KICAgIDB4MDBlYjogMHhmZWJkLCAgICAgIyAgQVJBQklDIExFVFRFUiBEQUQgSVNPTEFURUQgRk9STQogICAgMHgwMGVjOiAweGZlY2MsICAgICAjICBBUkFCSUMgTEVUVEVSIEFJTiBNRURJQUwgRk9STQogICAgMHgwMGVkOiAweGZlY2UsICAgICAjICBBUkFCSUMgTEVUVEVSIEdIQUlOIEZJTkFMIEZPUk0KICAgIDB4MDBlZTogMHhmZWNkLCAgICAgIyAgQVJBQklDIExFVFRFUiBHSEFJTiBJU09MQVRFRCBGT1JNCiAgICAweDAwZWY6IDB4ZmVlMSwgICAgICMgIEFSQUJJQyBMRVRURVIgTUVFTSBJU09MQVRFRCBGT1JNCiAgICAweDAwZjA6IDB4ZmU3ZCwgICAgICMgIEFSQUJJQyBTSEFEREEgTUVESUFMIEZPUk0KICAgIDB4MDBmMTogMHgwNjUxLCAgICAgIyAgQVJBQklDIFNIQUREQUgKICAgIDB4MDBmMjogMHhmZWU1LCAgICAgIyAgQVJBQklDIExFVFRFUiBOT09OIElTT0xBVEVEIEZPUk0KICAgIDB4MDBmMzogMHhmZWU5LCAgICAgIyAgQVJBQklDIExFVFRFUiBIRUggSVNPTEFURUQgRk9STQogICAgMHgwMGY0OiAweGZlZWMsICAgICAjICBBUkFCSUMgTEVUVEVSIEhFSCBNRURJQUwgRk9STQogICAgMHgwMGY1OiAweGZlZjAsICAgICAjICBBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCiAgICAweDAwZjY6IDB4ZmVmMiwgICAgICMgIEFSQUJJQyBMRVRURVIgWUVIIEZJTkFMIEZPUk0KICAgIDB4MDBmNzogMHhmZWQwLCAgICAgIyAgQVJBQklDIExFVFRFUiBHSEFJTiBNRURJQUwgRk9STQogICAgMHgwMGY4OiAweGZlZDUsICAgICAjICBBUkFCSUMgTEVUVEVSIFFBRiBJU09MQVRFRCBGT1JNCiAgICAweDAwZjk6IDB4ZmVmNSwgICAgICMgIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STQogICAgMHgwMGZhOiAweGZlZjYsICAgICAjICBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIE1BRERBIEFCT1ZFIEZJTkFMIEZPUk0KICAgIDB4MDBmYjogMHhmZWRkLCAgICAgIyAgQVJBQklDIExFVFRFUiBMQU0gSVNPTEFURUQgRk9STQogICAgMHgwMGZjOiAweGZlZDksICAgICAjICBBUkFCSUMgTEVUVEVSIEtBRiBJU09MQVRFRCBGT1JNCiAgICAweDAwZmQ6IDB4ZmVmMSwgICAgICMgIEFSQUJJQyBMRVRURVIgWUVIIElTT0xBVEVEIEZPUk0KICAgIDB4MDBmZTogMHgyNWEwLCAgICAgIyAgQkxBQ0sgU1FVQVJFCiAgICAweDAwZmY6IE5vbmUsICAgICAgICMgIFVOREVGSU5FRAp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICdcdTA2NmEnICAgIyAgMHgwMDI1IC0+IEFSQUJJQyBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDAwMjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDAwMjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDAwMjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgwMDJhIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MDAyYiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgwMDJjIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gREVMRVRFCiAgICAnXHhiMCcgICAgICMgIDB4MDA4MCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YjcnICAgICAjICAweDAwODEgLT4gTUlERExFIERPVAogICAgJ1x1MjIxOScgICAjICAweDAwODIgLT4gQlVMTEVUIE9QRVJBVE9SCiAgICAnXHUyMjFhJyAgICMgIDB4MDA4MyAtPiBTUVVBUkUgUk9PVAogICAgJ1x1MjU5MicgICAjICAweDAwODQgLT4gTUVESVVNIFNIQURFCiAgICAnXHUyNTAwJyAgICMgIDB4MDA4NSAtPiBGT1JNUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTAyJyAgICMgIDB4MDA4NiAtPiBGT1JNUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUzYycgICAjICAweDAwODcgLT4gRk9STVMgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1MjQnICAgIyAgMHgwMDg4IC0+IEZPUk1TIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTJjJyAgICMgIDB4MDA4OSAtPiBGT1JNUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTFjJyAgICMgIDB4MDA4YSAtPiBGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1MzQnICAgIyAgMHgwMDhiIC0+IEZPUk1TIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTEwJyAgICMgIDB4MDA4YyAtPiBGT1JNUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAnXHUyNTBjJyAgICMgIDB4MDA4ZCAtPiBGT1JNUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgJ1x1MjUxNCcgICAjICAweDAwOGUgLT4gRk9STVMgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTE4JyAgICMgIDB4MDA4ZiAtPiBGT1JNUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MDNiMicgICAjICAweDAwOTAgLT4gR1JFRUsgU01BTEwgQkVUQQogICAgJ1x1MjIxZScgICAjICAweDAwOTEgLT4gSU5GSU5JVFkKICAgICdcdTAzYzYnICAgIyAgMHgwMDkyIC0+IEdSRUVLIFNNQUxMIFBISQogICAgJ1x4YjEnICAgICAjICAweDAwOTMgLT4gUExVUy1PUi1NSU5VUyBTSUdOCiAgICAnXHhiZCcgICAgICMgIDB4MDA5NCAtPiBGUkFDVElPTiAxLzIKICAgICdceGJjJyAgICAgIyAgMHgwMDk1IC0+IEZSQUNUSU9OIDEvNAogICAgJ1x1MjI0OCcgICAjICAweDAwOTYgLT4gQUxNT1NUIEVRVUFMIFRPCiAgICAnXHhhYicgICAgICMgIDB4MDA5NyAtPiBMRUZUIFBPSU5USU5HIEdVSUxMRU1FVAogICAgJ1x4YmInICAgICAjICAweDAwOTggLT4gUklHSFQgUE9JTlRJTkcgR1VJTExFTUVUCiAgICAnXHVmZWY3JyAgICMgIDB4MDA5OSAtPiBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgICdcdWZlZjgnICAgIyAgMHgwMDlhIC0+IEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQogICAgJ1x1ZmZmZScgICAjICAweDAwOWIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4MDA5YyAtPiBVTkRFRklORUQKICAgICdcdWZlZmInICAgIyAgMHgwMDlkIC0+IEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIElTT0xBVEVEIEZPUk0KICAgICdcdWZlZmMnICAgIyAgMHgwMDllIC0+IEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIEZJTkFMIEZPUk0KICAgICdcdWZmZmUnICAgIyAgMHgwMDlmIC0+IFVOREVGSU5FRAogICAgJ1x4YTAnICAgICAjICAweDAwYTAgLT4gTk9OLUJSRUFLSU5HIFNQQUNFCiAgICAnXHhhZCcgICAgICMgIDB4MDBhMSAtPiBTT0ZUIEhZUEhFTgogICAgJ1x1ZmU4MicgICAjICAweDAwYTIgLT4gQVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUgRklOQUwgRk9STQogICAgJ1x4YTMnICAgICAjICAweDAwYTMgLT4gUE9VTkQgU0lHTgogICAgJ1x4YTQnICAgICAjICAweDAwYTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x1ZmU4NCcgICAjICAweDAwYTUgLT4gQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQogICAgJ1x1ZmZmZScgICAjICAweDAwYTYgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4MDBhNyAtPiBVTkRFRklORUQKICAgICdcdWZlOGUnICAgIyAgMHgwMGE4IC0+IEFSQUJJQyBMRVRURVIgQUxFRiBGSU5BTCBGT1JNCiAgICAnXHVmZThmJyAgICMgIDB4MDBhOSAtPiBBUkFCSUMgTEVUVEVSIEJFSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZTk1JyAgICMgIDB4MDBhYSAtPiBBUkFCSUMgTEVUVEVSIFRFSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZTk5JyAgICMgIDB4MDBhYiAtPiBBUkFCSUMgTEVUVEVSIFRIRUggSVNPTEFURUQgRk9STQogICAgJ1x1MDYwYycgICAjICAweDAwYWMgLT4gQVJBQklDIENPTU1BCiAgICAnXHVmZTlkJyAgICMgIDB4MDBhZCAtPiBBUkFCSUMgTEVUVEVSIEpFRU0gSVNPTEFURUQgRk9STQogICAgJ1x1ZmVhMScgICAjICAweDAwYWUgLT4gQVJBQklDIExFVFRFUiBIQUggSVNPTEFURUQgRk9STQogICAgJ1x1ZmVhNScgICAjICAweDAwYWYgLT4gQVJBQklDIExFVFRFUiBLSEFIIElTT0xBVEVEIEZPUk0KICAgICdcdTA2NjAnICAgIyAgMHgwMGIwIC0+IEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPCiAgICAnXHUwNjYxJyAgICMgIDB4MDBiMSAtPiBBUkFCSUMtSU5ESUMgRElHSVQgT05FCiAgICAnXHUwNjYyJyAgICMgIDB4MDBiMiAtPiBBUkFCSUMtSU5ESUMgRElHSVQgVFdPCiAgICAnXHUwNjYzJyAgICMgIDB4MDBiMyAtPiBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUKICAgICdcdTA2NjQnICAgIyAgMHgwMGI0IC0+IEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCiAgICAnXHUwNjY1JyAgICMgIDB4MDBiNSAtPiBBUkFCSUMtSU5ESUMgRElHSVQgRklWRQogICAgJ1x1MDY2NicgICAjICAweDAwYjYgLT4gQVJBQklDLUlORElDIERJR0lUIFNJWAogICAgJ1x1MDY2NycgICAjICAweDAwYjcgLT4gQVJBQklDLUlORElDIERJR0lUIFNFVkVOCiAgICAnXHUwNjY4JyAgICMgIDB4MDBiOCAtPiBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQKICAgICdcdTA2NjknICAgIyAgMHgwMGI5IC0+IEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FCiAgICAnXHVmZWQxJyAgICMgIDB4MDBiYSAtPiBBUkFCSUMgTEVUVEVSIEZFSCBJU09MQVRFRCBGT1JNCiAgICAnXHUwNjFiJyAgICMgIDB4MDBiYiAtPiBBUkFCSUMgU0VNSUNPTE9OCiAgICAnXHVmZWIxJyAgICMgIDB4MDBiYyAtPiBBUkFCSUMgTEVUVEVSIFNFRU4gSVNPTEFURUQgRk9STQogICAgJ1x1ZmViNScgICAjICAweDAwYmQgLT4gQVJBQklDIExFVFRFUiBTSEVFTiBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWI5JyAgICMgIDB4MDBiZSAtPiBBUkFCSUMgTEVUVEVSIFNBRCBJU09MQVRFRCBGT1JNCiAgICAnXHUwNjFmJyAgICMgIDB4MDBiZiAtPiBBUkFCSUMgUVVFU1RJT04gTUFSSwogICAgJ1x4YTInICAgICAjICAweDAwYzAgLT4gQ0VOVCBTSUdOCiAgICAnXHVmZTgwJyAgICMgIDB4MDBjMSAtPiBBUkFCSUMgTEVUVEVSIEhBTVpBIElTT0xBVEVEIEZPUk0KICAgICdcdWZlODEnICAgIyAgMHgwMGMyIC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgICdcdWZlODMnICAgIyAgMHgwMGMzIC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgICdcdWZlODUnICAgIyAgMHgwMGM0IC0+IEFSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STQogICAgJ1x1ZmVjYScgICAjICAweDAwYzUgLT4gQVJBQklDIExFVFRFUiBBSU4gRklOQUwgRk9STQogICAgJ1x1ZmU4YicgICAjICAweDAwYzYgLT4gQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJTklUSUFMIEZPUk0KICAgICdcdWZlOGQnICAgIyAgMHgwMGM3IC0+IEFSQUJJQyBMRVRURVIgQUxFRiBJU09MQVRFRCBGT1JNCiAgICAnXHVmZTkxJyAgICMgIDB4MDBjOCAtPiBBUkFCSUMgTEVUVEVSIEJFSCBJTklUSUFMIEZPUk0KICAgICdcdWZlOTMnICAgIyAgMHgwMGM5IC0+IEFSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgSVNPTEFURUQgRk9STQogICAgJ1x1ZmU5NycgICAjICAweDAwY2EgLT4gQVJBQklDIExFVFRFUiBURUggSU5JVElBTCBGT1JNCiAgICAnXHVmZTliJyAgICMgIDB4MDBjYiAtPiBBUkFCSUMgTEVUVEVSIFRIRUggSU5JVElBTCBGT1JNCiAgICAnXHVmZTlmJyAgICMgIDB4MDBjYyAtPiBBUkFCSUMgTEVUVEVSIEpFRU0gSU5JVElBTCBGT1JNCiAgICAnXHVmZWEzJyAgICMgIDB4MDBjZCAtPiBBUkFCSUMgTEVUVEVSIEhBSCBJTklUSUFMIEZPUk0KICAgICdcdWZlYTcnICAgIyAgMHgwMGNlIC0+IEFSQUJJQyBMRVRURVIgS0hBSCBJTklUSUFMIEZPUk0KICAgICdcdWZlYTknICAgIyAgMHgwMGNmIC0+IEFSQUJJQyBMRVRURVIgREFMIElTT0xBVEVEIEZPUk0KICAgICdcdWZlYWInICAgIyAgMHgwMGQwIC0+IEFSQUJJQyBMRVRURVIgVEhBTCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWFkJyAgICMgIDB4MDBkMSAtPiBBUkFCSUMgTEVUVEVSIFJFSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWFmJyAgICMgIDB4MDBkMiAtPiBBUkFCSUMgTEVUVEVSIFpBSU4gSVNPTEFURUQgRk9STQogICAgJ1x1ZmViMycgICAjICAweDAwZDMgLT4gQVJBQklDIExFVFRFUiBTRUVOIElOSVRJQUwgRk9STQogICAgJ1x1ZmViNycgICAjICAweDAwZDQgLT4gQVJBQklDIExFVFRFUiBTSEVFTiBJTklUSUFMIEZPUk0KICAgICdcdWZlYmInICAgIyAgMHgwMGQ1IC0+IEFSQUJJQyBMRVRURVIgU0FEIElOSVRJQUwgRk9STQogICAgJ1x1ZmViZicgICAjICAweDAwZDYgLT4gQVJBQklDIExFVFRFUiBEQUQgSU5JVElBTCBGT1JNCiAgICAnXHVmZWMxJyAgICMgIDB4MDBkNyAtPiBBUkFCSUMgTEVUVEVSIFRBSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWM1JyAgICMgIDB4MDBkOCAtPiBBUkFCSUMgTEVUVEVSIFpBSCBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWNiJyAgICMgIDB4MDBkOSAtPiBBUkFCSUMgTEVUVEVSIEFJTiBJTklUSUFMIEZPUk0KICAgICdcdWZlY2YnICAgIyAgMHgwMGRhIC0+IEFSQUJJQyBMRVRURVIgR0hBSU4gSU5JVElBTCBGT1JNCiAgICAnXHhhNicgICAgICMgIDB4MDBkYiAtPiBCUk9LRU4gVkVSVElDQUwgQkFSCiAgICAnXHhhYycgICAgICMgIDB4MDBkYyAtPiBOT1QgU0lHTgogICAgJ1x4ZjcnICAgICAjICAweDAwZGQgLT4gRElWSVNJT04gU0lHTgogICAgJ1x4ZDcnICAgICAjICAweDAwZGUgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x1ZmVjOScgICAjICAweDAwZGYgLT4gQVJBQklDIExFVFRFUiBBSU4gSVNPTEFURUQgRk9STQogICAgJ1x1MDY0MCcgICAjICAweDAwZTAgLT4gQVJBQklDIFRBVFdFRUwKICAgICdcdWZlZDMnICAgIyAgMHgwMGUxIC0+IEFSQUJJQyBMRVRURVIgRkVIIElOSVRJQUwgRk9STQogICAgJ1x1ZmVkNycgICAjICAweDAwZTIgLT4gQVJBQklDIExFVFRFUiBRQUYgSU5JVElBTCBGT1JNCiAgICAnXHVmZWRiJyAgICMgIDB4MDBlMyAtPiBBUkFCSUMgTEVUVEVSIEtBRiBJTklUSUFMIEZPUk0KICAgICdcdWZlZGYnICAgIyAgMHgwMGU0IC0+IEFSQUJJQyBMRVRURVIgTEFNIElOSVRJQUwgRk9STQogICAgJ1x1ZmVlMycgICAjICAweDAwZTUgLT4gQVJBQklDIExFVFRFUiBNRUVNIElOSVRJQUwgRk9STQogICAgJ1x1ZmVlNycgICAjICAweDAwZTYgLT4gQVJBQklDIExFVFRFUiBOT09OIElOSVRJQUwgRk9STQogICAgJ1x1ZmVlYicgICAjICAweDAwZTcgLT4gQVJBQklDIExFVFRFUiBIRUggSU5JVElBTCBGT1JNCiAgICAnXHVmZWVkJyAgICMgIDB4MDBlOCAtPiBBUkFCSUMgTEVUVEVSIFdBVyBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWVmJyAgICMgIDB4MDBlOSAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWYzJyAgICMgIDB4MDBlYSAtPiBBUkFCSUMgTEVUVEVSIFlFSCBJTklUSUFMIEZPUk0KICAgICdcdWZlYmQnICAgIyAgMHgwMGViIC0+IEFSQUJJQyBMRVRURVIgREFEIElTT0xBVEVEIEZPUk0KICAgICdcdWZlY2MnICAgIyAgMHgwMGVjIC0+IEFSQUJJQyBMRVRURVIgQUlOIE1FRElBTCBGT1JNCiAgICAnXHVmZWNlJyAgICMgIDB4MDBlZCAtPiBBUkFCSUMgTEVUVEVSIEdIQUlOIEZJTkFMIEZPUk0KICAgICdcdWZlY2QnICAgIyAgMHgwMGVlIC0+IEFSQUJJQyBMRVRURVIgR0hBSU4gSVNPTEFURUQgRk9STQogICAgJ1x1ZmVlMScgICAjICAweDAwZWYgLT4gQVJBQklDIExFVFRFUiBNRUVNIElTT0xBVEVEIEZPUk0KICAgICdcdWZlN2QnICAgIyAgMHgwMGYwIC0+IEFSQUJJQyBTSEFEREEgTUVESUFMIEZPUk0KICAgICdcdTA2NTEnICAgIyAgMHgwMGYxIC0+IEFSQUJJQyBTSEFEREFICiAgICAnXHVmZWU1JyAgICMgIDB4MDBmMiAtPiBBUkFCSUMgTEVUVEVSIE5PT04gSVNPTEFURUQgRk9STQogICAgJ1x1ZmVlOScgICAjICAweDAwZjMgLT4gQVJBQklDIExFVFRFUiBIRUggSVNPTEFURUQgRk9STQogICAgJ1x1ZmVlYycgICAjICAweDAwZjQgLT4gQVJBQklDIExFVFRFUiBIRUggTUVESUFMIEZPUk0KICAgICdcdWZlZjAnICAgIyAgMHgwMGY1IC0+IEFSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KICAgICdcdWZlZjInICAgIyAgMHgwMGY2IC0+IEFSQUJJQyBMRVRURVIgWUVIIEZJTkFMIEZPUk0KICAgICdcdWZlZDAnICAgIyAgMHgwMGY3IC0+IEFSQUJJQyBMRVRURVIgR0hBSU4gTUVESUFMIEZPUk0KICAgICdcdWZlZDUnICAgIyAgMHgwMGY4IC0+IEFSQUJJQyBMRVRURVIgUUFGIElTT0xBVEVEIEZPUk0KICAgICdcdWZlZjUnICAgIyAgMHgwMGY5IC0+IEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STQogICAgJ1x1ZmVmNicgICAjICAweDAwZmEgLT4gQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNCiAgICAnXHVmZWRkJyAgICMgIDB4MDBmYiAtPiBBUkFCSUMgTEVUVEVSIExBTSBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWQ5JyAgICMgIDB4MDBmYyAtPiBBUkFCSUMgTEVUVEVSIEtBRiBJU09MQVRFRCBGT1JNCiAgICAnXHVmZWYxJyAgICMgIDB4MDBmZCAtPiBBUkFCSUMgTEVUVEVSIFlFSCBJU09MQVRFRCBGT1JNCiAgICAnXHUyNWEwJyAgICMgIDB4MDBmZSAtPiBCTEFDSyBTUVVBUkUKICAgICdcdWZmZmUnICAgIyAgMHgwMGZmIC0+IFVOREVGSU5FRAopCgojIyMgRW5jb2RpbmcgTWFwCgplbmNvZGluZ19tYXAgPSB7CiAgICAweDAwMDA6IDB4MDAwMCwgICAgICMgIE5VTEwKICAgIDB4MDAwMTogMHgwMDAxLCAgICAgIyAgU1RBUlQgT0YgSEVBRElORwogICAgMHgwMDAyOiAweDAwMDIsICAgICAjICBTVEFSVCBPRiBURVhUCiAgICAweDAwMDM6IDB4MDAwMywgICAgICMgIEVORCBPRiBURVhUCiAgICAweDAwMDQ6IDB4MDAwNCwgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04KICAgIDB4MDAwNTogMHgwMDA1LCAgICAgIyAgRU5RVUlSWQogICAgMHgwMDA2OiAweDAwMDYsICAgICAjICBBQ0tOT1dMRURHRQogICAgMHgwMDA3OiAweDAwMDcsICAgICAjICBCRUxMCiAgICAweDAwMDg6IDB4MDAwOCwgICAgICMgIEJBQ0tTUEFDRQogICAgMHgwMDA5OiAweDAwMDksICAgICAjICBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgIDB4MDAwYTogMHgwMDBhLCAgICAgIyAgTElORSBGRUVECiAgICAweDAwMGI6IDB4MDAwYiwgICAgICMgIFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgIDB4MDAwYzogMHgwMDBjLCAgICAgIyAgRk9STSBGRUVECiAgICAweDAwMGQ6IDB4MDAwZCwgICAgICMgIENBUlJJQUdFIFJFVFVSTgogICAgMHgwMDBlOiAweDAwMGUsICAgICAjICBTSElGVCBPVVQKICAgIDB4MDAwZjogMHgwMDBmLCAgICAgIyAgU0hJRlQgSU4KICAgIDB4MDAxMDogMHgwMDEwLCAgICAgIyAgREFUQSBMSU5LIEVTQ0FQRQogICAgMHgwMDExOiAweDAwMTEsICAgICAjICBERVZJQ0UgQ09OVFJPTCBPTkUKICAgIDB4MDAxMjogMHgwMDEyLCAgICAgIyAgREVWSUNFIENPTlRST0wgVFdPCiAgICAweDAwMTM6IDB4MDAxMywgICAgICMgIERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAweDAwMTQ6IDB4MDAxNCwgICAgICMgIERFVklDRSBDT05UUk9MIEZPVVIKICAgIDB4MDAxNTogMHgwMDE1LCAgICAgIyAgTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgIDB4MDAxNjogMHgwMDE2LCAgICAgIyAgU1lOQ0hST05PVVMgSURMRQogICAgMHgwMDE3OiAweDAwMTcsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAweDAwMTg6IDB4MDAxOCwgICAgICMgIENBTkNFTAogICAgMHgwMDE5OiAweDAwMTksICAgICAjICBFTkQgT0YgTUVESVVNCiAgICAweDAwMWE6IDB4MDAxYSwgICAgICMgIFNVQlNUSVRVVEUKICAgIDB4MDAxYjogMHgwMDFiLCAgICAgIyAgRVNDQVBFCiAgICAweDAwMWM6IDB4MDAxYywgICAgICMgIEZJTEUgU0VQQVJBVE9SCiAgICAweDAwMWQ6IDB4MDAxZCwgICAgICMgIEdST1VQIFNFUEFSQVRPUgogICAgMHgwMDFlOiAweDAwMWUsICAgICAjICBSRUNPUkQgU0VQQVJBVE9SCiAgICAweDAwMWY6IDB4MDAxZiwgICAgICMgIFVOSVQgU0VQQVJBVE9SCiAgICAweDAwMjA6IDB4MDAyMCwgICAgICMgIFNQQUNFCiAgICAweDAwMjE6IDB4MDAyMSwgICAgICMgIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDAyMjogMHgwMDIyLCAgICAgIyAgUVVPVEFUSU9OIE1BUksKICAgIDB4MDAyMzogMHgwMDIzLCAgICAgIyAgTlVNQkVSIFNJR04KICAgIDB4MDAyNDogMHgwMDI0LCAgICAgIyAgRE9MTEFSIFNJR04KICAgIDB4MDAyNjogMHgwMDI2LCAgICAgIyAgQU1QRVJTQU5ECiAgICAweDAwMjc6IDB4MDAyNywgICAgICMgIEFQT1NUUk9QSEUKICAgIDB4MDAyODogMHgwMDI4LCAgICAgIyAgTEVGVCBQQVJFTlRIRVNJUwogICAgMHgwMDI5OiAweDAwMjksICAgICAjICBSSUdIVCBQQVJFTlRIRVNJUwogICAgMHgwMDJhOiAweDAwMmEsICAgICAjICBBU1RFUklTSwogICAgMHgwMDJiOiAweDAwMmIsICAgICAjICBQTFVTIFNJR04KICAgIDB4MDAyYzogMHgwMDJjLCAgICAgIyAgQ09NTUEKICAgIDB4MDAyZDogMHgwMDJkLCAgICAgIyAgSFlQSEVOLU1JTlVTCiAgICAweDAwMmU6IDB4MDAyZSwgICAgICMgIEZVTEwgU1RPUAogICAgMHgwMDJmOiAweDAwMmYsICAgICAjICBTT0xJRFVTCiAgICAweDAwMzA6IDB4MDAzMCwgICAgICMgIERJR0lUIFpFUk8KICAgIDB4MDAzMTogMHgwMDMxLCAgICAgIyAgRElHSVQgT05FCiAgICAweDAwMzI6IDB4MDAzMiwgICAgICMgIERJR0lUIFRXTwogICAgMHgwMDMzOiAweDAwMzMsICAgICAjICBESUdJVCBUSFJFRQogICAgMHgwMDM0OiAweDAwMzQsICAgICAjICBESUdJVCBGT1VSCiAgICAweDAwMzU6IDB4MDAzNSwgICAgICMgIERJR0lUIEZJVkUKICAgIDB4MDAzNjogMHgwMDM2LCAgICAgIyAgRElHSVQgU0lYCiAgICAweDAwMzc6IDB4MDAzNywgICAgICMgIERJR0lUIFNFVkVOCiAgICAweDAwMzg6IDB4MDAzOCwgICAgICMgIERJR0lUIEVJR0hUCiAgICAweDAwMzk6IDB4MDAzOSwgICAgICMgIERJR0lUIE5JTkUKICAgIDB4MDAzYTogMHgwMDNhLCAgICAgIyAgQ09MT04KICAgIDB4MDAzYjogMHgwMDNiLCAgICAgIyAgU0VNSUNPTE9OCiAgICAweDAwM2M6IDB4MDAzYywgICAgICMgIExFU1MtVEhBTiBTSUdOCiAgICAweDAwM2Q6IDB4MDAzZCwgICAgICMgIEVRVUFMUyBTSUdOCiAgICAweDAwM2U6IDB4MDAzZSwgICAgICMgIEdSRUFURVItVEhBTiBTSUdOCiAgICAweDAwM2Y6IDB4MDAzZiwgICAgICMgIFFVRVNUSU9OIE1BUksKICAgIDB4MDA0MDogMHgwMDQwLCAgICAgIyAgQ09NTUVSQ0lBTCBBVAogICAgMHgwMDQxOiAweDAwNDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAweDAwNDI6IDB4MDA0MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgIDB4MDA0MzogMHgwMDQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgMHgwMDQ0OiAweDAwNDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAweDAwNDU6IDB4MDA0NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgIDB4MDA0NjogMHgwMDQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgMHgwMDQ3OiAweDAwNDcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAweDAwNDg6IDB4MDA0OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgIDB4MDA0OTogMHgwMDQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgMHgwMDRhOiAweDAwNGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAweDAwNGI6IDB4MDA0YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgIDB4MDA0YzogMHgwMDRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgMHgwMDRkOiAweDAwNGQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAweDAwNGU6IDB4MDA0ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgIDB4MDA0ZjogMHgwMDRmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwMDUwOiAweDAwNTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAweDAwNTE6IDB4MDA1MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgIDB4MDA1MjogMHgwMDUyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgMHgwMDUzOiAweDAwNTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAweDAwNTQ6IDB4MDA1NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgIDB4MDA1NTogMHgwMDU1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgMHgwMDU2OiAweDAwNTYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAweDAwNTc6IDB4MDA1NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgIDB4MDA1ODogMHgwMDU4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgMHgwMDU5OiAweDAwNTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAweDAwNWE6IDB4MDA1YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgIDB4MDA1YjogMHgwMDViLCAgICAgIyAgTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVjOiAweDAwNWMsICAgICAjICBSRVZFUlNFIFNPTElEVVMKICAgIDB4MDA1ZDogMHgwMDVkLCAgICAgIyAgUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1ZTogMHgwMDVlLCAgICAgIyAgQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgIDB4MDA1ZjogMHgwMDVmLCAgICAgIyAgTE9XIExJTkUKICAgIDB4MDA2MDogMHgwMDYwLCAgICAgIyAgR1JBVkUgQUNDRU5UCiAgICAweDAwNjE6IDB4MDA2MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAweDAwNjI6IDB4MDA2MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAweDAwNjM6IDB4MDA2MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAweDAwNjQ6IDB4MDA2NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBECiAgICAweDAwNjU6IDB4MDA2NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAweDAwNjY6IDB4MDA2NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAweDAwNjc6IDB4MDA2NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAweDAwNjg6IDB4MDA2OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBICiAgICAweDAwNjk6IDB4MDA2OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAweDAwNmE6IDB4MDA2YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAweDAwNmI6IDB4MDA2YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAweDAwNmM6IDB4MDA2YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAweDAwNmQ6IDB4MDA2ZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAweDAwNmU6IDB4MDA2ZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDAwNmY6IDB4MDA2ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAweDAwNzA6IDB4MDA3MCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAweDAwNzE6IDB4MDA3MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAweDAwNzI6IDB4MDA3MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAweDAwNzM6IDB4MDA3MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAweDAwNzQ6IDB4MDA3NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAweDAwNzU6IDB4MDA3NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAweDAwNzY6IDB4MDA3NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAweDAwNzc6IDB4MDA3NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAweDAwNzg6IDB4MDA3OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAweDAwNzk6IDB4MDA3OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAweDAwN2E6IDB4MDA3YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAweDAwN2I6IDB4MDA3YiwgICAgICMgIExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdjOiAweDAwN2MsICAgICAjICBWRVJUSUNBTCBMSU5FCiAgICAweDAwN2Q6IDB4MDA3ZCwgICAgICMgIFJJR0hUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3ZTogMHgwMDdlLCAgICAgIyAgVElMREUKICAgIDB4MDA3ZjogMHgwMDdmLCAgICAgIyAgREVMRVRFCiAgICAweDAwYTA6IDB4MDBhMCwgICAgICMgIE5PTi1CUkVBS0lORyBTUEFDRQogICAgMHgwMGEyOiAweDAwYzAsICAgICAjICBDRU5UIFNJR04KICAgIDB4MDBhMzogMHgwMGEzLCAgICAgIyAgUE9VTkQgU0lHTgogICAgMHgwMGE0OiAweDAwYTQsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwYTY6IDB4MDBkYiwgICAgICMgIEJST0tFTiBWRVJUSUNBTCBCQVIKICAgIDB4MDBhYjogMHgwMDk3LCAgICAgIyAgTEVGVCBQT0lOVElORyBHVUlMTEVNRVQKICAgIDB4MDBhYzogMHgwMGRjLCAgICAgIyAgTk9UIFNJR04KICAgIDB4MDBhZDogMHgwMGExLCAgICAgIyAgU09GVCBIWVBIRU4KICAgIDB4MDBiMDogMHgwMDgwLCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBiMTogMHgwMDkzLCAgICAgIyAgUExVUy1PUi1NSU5VUyBTSUdOCiAgICAweDAwYjc6IDB4MDA4MSwgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBiYjogMHgwMDk4LCAgICAgIyAgUklHSFQgUE9JTlRJTkcgR1VJTExFTUVUCiAgICAweDAwYmM6IDB4MDA5NSwgICAgICMgIEZSQUNUSU9OIDEvNAogICAgMHgwMGJkOiAweDAwOTQsICAgICAjICBGUkFDVElPTiAxLzIKICAgIDB4MDBkNzogMHgwMGRlLCAgICAgIyAgTVVMVElQTElDQVRJT04gU0lHTgogICAgMHgwMGY3OiAweDAwZGQsICAgICAjICBESVZJU0lPTiBTSUdOCiAgICAweDAzYjI6IDB4MDA5MCwgICAgICMgIEdSRUVLIFNNQUxMIEJFVEEKICAgIDB4MDNjNjogMHgwMDkyLCAgICAgIyAgR1JFRUsgU01BTEwgUEhJCiAgICAweDA2MGM6IDB4MDBhYywgICAgICMgIEFSQUJJQyBDT01NQQogICAgMHgwNjFiOiAweDAwYmIsICAgICAjICBBUkFCSUMgU0VNSUNPTE9OCiAgICAweDA2MWY6IDB4MDBiZiwgICAgICMgIEFSQUJJQyBRVUVTVElPTiBNQVJLCiAgICAweDA2NDA6IDB4MDBlMCwgICAgICMgIEFSQUJJQyBUQVRXRUVMCiAgICAweDA2NTE6IDB4MDBmMSwgICAgICMgIEFSQUJJQyBTSEFEREFICiAgICAweDA2NjA6IDB4MDBiMCwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPCiAgICAweDA2NjE6IDB4MDBiMSwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBPTkUKICAgIDB4MDY2MjogMHgwMGIyLCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIFRXTwogICAgMHgwNjYzOiAweDAwYjMsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUKICAgIDB4MDY2NDogMHgwMGI0LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIEZPVVIKICAgIDB4MDY2NTogMHgwMGI1LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIEZJVkUKICAgIDB4MDY2NjogMHgwMGI2LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIFNJWAogICAgMHgwNjY3OiAweDAwYjcsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU4KICAgIDB4MDY2ODogMHgwMGI4LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIEVJR0hUCiAgICAweDA2Njk6IDB4MDBiOSwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FCiAgICAweDA2NmE6IDB4MDAyNSwgICAgICMgIEFSQUJJQyBQRVJDRU5UIFNJR04KICAgIDB4MjIxOTogMHgwMDgyLCAgICAgIyAgQlVMTEVUIE9QRVJBVE9SCiAgICAweDIyMWE6IDB4MDA4MywgICAgICMgIFNRVUFSRSBST09UCiAgICAweDIyMWU6IDB4MDA5MSwgICAgICMgIElORklOSVRZCiAgICAweDIyNDg6IDB4MDA5NiwgICAgICMgIEFMTU9TVCBFUVVBTCBUTwogICAgMHgyNTAwOiAweDAwODUsICAgICAjICBGT1JNUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDI1MDI6IDB4MDA4NiwgICAgICMgIEZPUk1TIExJR0hUIFZFUlRJQ0FMCiAgICAweDI1MGM6IDB4MDA4ZCwgICAgICMgIEZPUk1TIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDA4YywgICAgICMgIEZPUk1TIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MjUxNDogMHgwMDhlLCAgICAgIyAgRk9STVMgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDI1MTg6IDB4MDA4ZiwgICAgICMgIEZPUk1TIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDA4YSwgICAgICMgIEZPUk1TIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTI0OiAweDAwODgsICAgICAjICBGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTJjOiAweDAwODksICAgICAjICBGT1JNUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDA4YiwgICAgICMgIEZPUk1TIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1M2M6IDB4MDA4NywgICAgICMgIEZPUk1TIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1OTI6IDB4MDA4NCwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgyNWEwOiAweDAwZmUsICAgICAjICBCTEFDSyBTUVVBUkUKICAgIDB4ZmU3ZDogMHgwMGYwLCAgICAgIyAgQVJBQklDIFNIQUREQSBNRURJQUwgRk9STQogICAgMHhmZTgwOiAweDAwYzEsICAgICAjICBBUkFCSUMgTEVUVEVSIEhBTVpBIElTT0xBVEVEIEZPUk0KICAgIDB4ZmU4MTogMHgwMGMyLCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STQogICAgMHhmZTgyOiAweDAwYTIsICAgICAjICBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNCiAgICAweGZlODM6IDB4MDBjMywgICAgICMgIEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgIDB4ZmU4NDogMHgwMGE1LCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQogICAgMHhmZTg1OiAweDAwYzQsICAgICAjICBBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgIDB4ZmU4YjogMHgwMGM2LCAgICAgIyAgQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJTklUSUFMIEZPUk0KICAgIDB4ZmU4ZDogMHgwMGM3LCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIElTT0xBVEVEIEZPUk0KICAgIDB4ZmU4ZTogMHgwMGE4LCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIEZJTkFMIEZPUk0KICAgIDB4ZmU4ZjogMHgwMGE5LCAgICAgIyAgQVJBQklDIExFVFRFUiBCRUggSVNPTEFURUQgRk9STQogICAgMHhmZTkxOiAweDAwYzgsICAgICAjICBBUkFCSUMgTEVUVEVSIEJFSCBJTklUSUFMIEZPUk0KICAgIDB4ZmU5MzogMHgwMGM5LCAgICAgIyAgQVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBJU09MQVRFRCBGT1JNCiAgICAweGZlOTU6IDB4MDBhYSwgICAgICMgIEFSQUJJQyBMRVRURVIgVEVIIElTT0xBVEVEIEZPUk0KICAgIDB4ZmU5NzogMHgwMGNhLCAgICAgIyAgQVJBQklDIExFVFRFUiBURUggSU5JVElBTCBGT1JNCiAgICAweGZlOTk6IDB4MDBhYiwgICAgICMgIEFSQUJJQyBMRVRURVIgVEhFSCBJU09MQVRFRCBGT1JNCiAgICAweGZlOWI6IDB4MDBjYiwgICAgICMgIEFSQUJJQyBMRVRURVIgVEhFSCBJTklUSUFMIEZPUk0KICAgIDB4ZmU5ZDogMHgwMGFkLCAgICAgIyAgQVJBQklDIExFVFRFUiBKRUVNIElTT0xBVEVEIEZPUk0KICAgIDB4ZmU5ZjogMHgwMGNjLCAgICAgIyAgQVJBQklDIExFVFRFUiBKRUVNIElOSVRJQUwgRk9STQogICAgMHhmZWExOiAweDAwYWUsICAgICAjICBBUkFCSUMgTEVUVEVSIEhBSCBJU09MQVRFRCBGT1JNCiAgICAweGZlYTM6IDB4MDBjZCwgICAgICMgIEFSQUJJQyBMRVRURVIgSEFIIElOSVRJQUwgRk9STQogICAgMHhmZWE1OiAweDAwYWYsICAgICAjICBBUkFCSUMgTEVUVEVSIEtIQUggSVNPTEFURUQgRk9STQogICAgMHhmZWE3OiAweDAwY2UsICAgICAjICBBUkFCSUMgTEVUVEVSIEtIQUggSU5JVElBTCBGT1JNCiAgICAweGZlYTk6IDB4MDBjZiwgICAgICMgIEFSQUJJQyBMRVRURVIgREFMIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVhYjogMHgwMGQwLCAgICAgIyAgQVJBQklDIExFVFRFUiBUSEFMIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVhZDogMHgwMGQxLCAgICAgIyAgQVJBQklDIExFVFRFUiBSRUggSVNPTEFURUQgRk9STQogICAgMHhmZWFmOiAweDAwZDIsICAgICAjICBBUkFCSUMgTEVUVEVSIFpBSU4gSVNPTEFURUQgRk9STQogICAgMHhmZWIxOiAweDAwYmMsICAgICAjICBBUkFCSUMgTEVUVEVSIFNFRU4gSVNPTEFURUQgRk9STQogICAgMHhmZWIzOiAweDAwZDMsICAgICAjICBBUkFCSUMgTEVUVEVSIFNFRU4gSU5JVElBTCBGT1JNCiAgICAweGZlYjU6IDB4MDBiZCwgICAgICMgIEFSQUJJQyBMRVRURVIgU0hFRU4gSVNPTEFURUQgRk9STQogICAgMHhmZWI3OiAweDAwZDQsICAgICAjICBBUkFCSUMgTEVUVEVSIFNIRUVOIElOSVRJQUwgRk9STQogICAgMHhmZWI5OiAweDAwYmUsICAgICAjICBBUkFCSUMgTEVUVEVSIFNBRCBJU09MQVRFRCBGT1JNCiAgICAweGZlYmI6IDB4MDBkNSwgICAgICMgIEFSQUJJQyBMRVRURVIgU0FEIElOSVRJQUwgRk9STQogICAgMHhmZWJkOiAweDAwZWIsICAgICAjICBBUkFCSUMgTEVUVEVSIERBRCBJU09MQVRFRCBGT1JNCiAgICAweGZlYmY6IDB4MDBkNiwgICAgICMgIEFSQUJJQyBMRVRURVIgREFEIElOSVRJQUwgRk9STQogICAgMHhmZWMxOiAweDAwZDcsICAgICAjICBBUkFCSUMgTEVUVEVSIFRBSCBJU09MQVRFRCBGT1JNCiAgICAweGZlYzU6IDB4MDBkOCwgICAgICMgIEFSQUJJQyBMRVRURVIgWkFIIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVjOTogMHgwMGRmLCAgICAgIyAgQVJBQklDIExFVFRFUiBBSU4gSVNPTEFURUQgRk9STQogICAgMHhmZWNhOiAweDAwYzUsICAgICAjICBBUkFCSUMgTEVUVEVSIEFJTiBGSU5BTCBGT1JNCiAgICAweGZlY2I6IDB4MDBkOSwgICAgICMgIEFSQUJJQyBMRVRURVIgQUlOIElOSVRJQUwgRk9STQogICAgMHhmZWNjOiAweDAwZWMsICAgICAjICBBUkFCSUMgTEVUVEVSIEFJTiBNRURJQUwgRk9STQogICAgMHhmZWNkOiAweDAwZWUsICAgICAjICBBUkFCSUMgTEVUVEVSIEdIQUlOIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVjZTogMHgwMGVkLCAgICAgIyAgQVJBQklDIExFVFRFUiBHSEFJTiBGSU5BTCBGT1JNCiAgICAweGZlY2Y6IDB4MDBkYSwgICAgICMgIEFSQUJJQyBMRVRURVIgR0hBSU4gSU5JVElBTCBGT1JNCiAgICAweGZlZDA6IDB4MDBmNywgICAgICMgIEFSQUJJQyBMRVRURVIgR0hBSU4gTUVESUFMIEZPUk0KICAgIDB4ZmVkMTogMHgwMGJhLCAgICAgIyAgQVJBQklDIExFVFRFUiBGRUggSVNPTEFURUQgRk9STQogICAgMHhmZWQzOiAweDAwZTEsICAgICAjICBBUkFCSUMgTEVUVEVSIEZFSCBJTklUSUFMIEZPUk0KICAgIDB4ZmVkNTogMHgwMGY4LCAgICAgIyAgQVJBQklDIExFVFRFUiBRQUYgSVNPTEFURUQgRk9STQogICAgMHhmZWQ3OiAweDAwZTIsICAgICAjICBBUkFCSUMgTEVUVEVSIFFBRiBJTklUSUFMIEZPUk0KICAgIDB4ZmVkOTogMHgwMGZjLCAgICAgIyAgQVJBQklDIExFVFRFUiBLQUYgSVNPTEFURUQgRk9STQogICAgMHhmZWRiOiAweDAwZTMsICAgICAjICBBUkFCSUMgTEVUVEVSIEtBRiBJTklUSUFMIEZPUk0KICAgIDB4ZmVkZDogMHgwMGZiLCAgICAgIyAgQVJBQklDIExFVFRFUiBMQU0gSVNPTEFURUQgRk9STQogICAgMHhmZWRmOiAweDAwZTQsICAgICAjICBBUkFCSUMgTEVUVEVSIExBTSBJTklUSUFMIEZPUk0KICAgIDB4ZmVlMTogMHgwMGVmLCAgICAgIyAgQVJBQklDIExFVFRFUiBNRUVNIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVlMzogMHgwMGU1LCAgICAgIyAgQVJBQklDIExFVFRFUiBNRUVNIElOSVRJQUwgRk9STQogICAgMHhmZWU1OiAweDAwZjIsICAgICAjICBBUkFCSUMgTEVUVEVSIE5PT04gSVNPTEFURUQgRk9STQogICAgMHhmZWU3OiAweDAwZTYsICAgICAjICBBUkFCSUMgTEVUVEVSIE5PT04gSU5JVElBTCBGT1JNCiAgICAweGZlZTk6IDB4MDBmMywgICAgICMgIEFSQUJJQyBMRVRURVIgSEVIIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVlYjogMHgwMGU3LCAgICAgIyAgQVJBQklDIExFVFRFUiBIRUggSU5JVElBTCBGT1JNCiAgICAweGZlZWM6IDB4MDBmNCwgICAgICMgIEFSQUJJQyBMRVRURVIgSEVIIE1FRElBTCBGT1JNCiAgICAweGZlZWQ6IDB4MDBlOCwgICAgICMgIEFSQUJJQyBMRVRURVIgV0FXIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVlZjogMHgwMGU5LCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQogICAgMHhmZWYwOiAweDAwZjUsICAgICAjICBBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCiAgICAweGZlZjE6IDB4MDBmZCwgICAgICMgIEFSQUJJQyBMRVRURVIgWUVIIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVmMjogMHgwMGY2LCAgICAgIyAgQVJBQklDIExFVFRFUiBZRUggRklOQUwgRk9STQogICAgMHhmZWYzOiAweDAwZWEsICAgICAjICBBUkFCSUMgTEVUVEVSIFlFSCBJTklUSUFMIEZPUk0KICAgIDB4ZmVmNTogMHgwMGY5LCAgICAgIyAgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBJU09MQVRFRCBGT1JNCiAgICAweGZlZjY6IDB4MDBmYSwgICAgICMgIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgRklOQUwgRk9STQogICAgMHhmZWY3OiAweDAwOTksICAgICAjICBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVmODogMHgwMDlhLCAgICAgIyAgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNCiAgICAweGZlZmI6IDB4MDA5ZCwgICAgICMgIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIElTT0xBVEVEIEZPUk0KICAgIDB4ZmVmYzogMHgwMDllLCAgICAgIyAgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgRklOQUwgRk9STQp9ClBLAwQUAAAAAAACIKNWf6YWEzqHAAA6hwAAEgAAAGVuY29kaW5ncy9jcDg2NS5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgZ2VuZXJhdGVkIGZyb20gJ1ZFTkRPUlMvTUlDU0ZUL1BDL0NQODY1LlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDg2NScsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKIyMjIERlY29kaW5nIE1hcAoKZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQpkZWNvZGluZ19tYXAudXBkYXRlKHsKICAgIDB4MDA4MDogMHgwMGM3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDA4MTogMHgwMGZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4MjogMHgwMGU5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgMHgwMDgzOiAweDAwZTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA4NDogMHgwMGU0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4NTogMHgwMGUwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgMHgwMDg2OiAweDAwZTUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDA4NzogMHgwMGU3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAweDAwODg6IDB4MDBlYSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDg5OiAweDAwZWIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDhhOiAweDAwZTgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAweDAwOGI6IDB4MDBlZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAweDAwOGM6IDB4MDBlZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDhkOiAweDAwZWMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAweDAwOGU6IDB4MDBjNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4ZjogMHgwMGM1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgIDB4MDA5MDogMHgwMGM5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwOTE6IDB4MDBlNiwgICAgICMgIExBVElOIFNNQUxMIExJR0FUVVJFIEFFCiAgICAweDAwOTI6IDB4MDBjNiwgICAgICMgIExBVElOIENBUElUQUwgTElHQVRVUkUgQUUKICAgIDB4MDA5MzogMHgwMGY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOTQ6IDB4MDBmNiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwOTU6IDB4MDBmMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgIDB4MDA5NjogMHgwMGZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOTc6IDB4MDBmOSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgIDB4MDA5ODogMHgwMGZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5OTogMHgwMGQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgMHgwMDlhOiAweDAwZGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDAwOWI6IDB4MDBmOCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAweDAwOWM6IDB4MDBhMywgICAgICMgIFBPVU5EIFNJR04KICAgIDB4MDA5ZDogMHgwMGQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgMHgwMDllOiAweDIwYTcsICAgICAjICBQRVNFVEEgU0lHTgogICAgMHgwMDlmOiAweDAxOTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgIDB4MDBhMDogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMGExOiAweDAwZWQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAweDAwYTI6IDB4MDBmMywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgIDB4MDBhMzogMHgwMGZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGE0OiAweDAwZjEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAweDAwYTU6IDB4MDBkMSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGE2OiAweDAwYWEsICAgICAjICBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgMHgwMGE3OiAweDAwYmEsICAgICAjICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBhODogMHgwMGJmLCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGE5OiAweDIzMTAsICAgICAjICBSRVZFUlNFRCBOT1QgU0lHTgogICAgMHgwMGFhOiAweDAwYWMsICAgICAjICBOT1QgU0lHTgogICAgMHgwMGFiOiAweDAwYmQsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBhYzogMHgwMGJjLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAweDAwYWQ6IDB4MDBhMSwgICAgICMgIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgIDB4MDBhZTogMHgwMGFiLCAgICAgIyAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhZjogMHgwMGE0LCAgICAgIyAgQ1VSUkVOQ1kgU0lHTgogICAgMHgwMGIwOiAweDI1OTEsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgwMGIxOiAweDI1OTIsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MDBiMjogMHgyNTkzLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgwMGIzOiAweDI1MDIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MDBiNDogMHgyNTI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYjU6IDB4MjU2MSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYjY6IDB4MjU2MiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDAwYjc6IDB4MjU1NiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiODogMHgyNTU1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGI5OiAweDI1NjMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDAwYmE6IDB4MjU1MSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MDBiYjogMHgyNTU3LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDAwYmM6IDB4MjU1ZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MDBiZDogMHgyNTVjLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MDBiZTogMHgyNTViLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiZjogMHgyNTEwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MDBjMDogMHgyNTE0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgwMGMxOiAweDI1MzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMjogMHgyNTJjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMzogMHgyNTFjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGM0OiAweDI1MDAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgwMGM1OiAweDI1M2MsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjNjogMHgyNTVlLCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDAwYzc6IDB4MjU1ZiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGM4OiAweDI1NWEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgwMGM5OiAweDI1NTQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDAwY2E6IDB4MjU2OSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYjogMHgyNTY2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2M6IDB4MjU2MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDAwY2Q6IDB4MjU1MCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgwMGNlOiAweDI1NmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2Y6IDB4MjU2NywgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDAwZDA6IDB4MjU2OCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDE6IDB4MjU2NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MDBkMjogMHgyNTY1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgwMGQzOiAweDI1NTksICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBkNDogMHgyNTU4LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDAwZDU6IDB4MjU1MiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDAwZDY6IDB4MjU1MywgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwZDc6IDB4MjU2YiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDAwZDg6IDB4MjU2YSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDAwZDk6IDB4MjUxOCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgwMGRhOiAweDI1MGMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBkYjogMHgyNTg4LCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgwMGRjOiAweDI1ODQsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDAwZGQ6IDB4MjU4YywgICAgICMgIExFRlQgSEFMRiBCTE9DSwogICAgMHgwMGRlOiAweDI1OTAsICAgICAjICBSSUdIVCBIQUxGIEJMT0NLCiAgICAweDAwZGY6IDB4MjU4MCwgICAgICMgIFVQUEVSIEhBTEYgQkxPQ0sKICAgIDB4MDBlMDogMHgwM2IxLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAweDAwZTE6IDB4MDBkZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAweDAwZTI6IDB4MDM5MywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAweDAwZTM6IDB4MDNjMCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgMHgwMGU0OiAweDAzYTMsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgMHgwMGU1OiAweDAzYzMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKICAgIDB4MDBlNjogMHgwMGI1LCAgICAgIyAgTUlDUk8gU0lHTgogICAgMHgwMGU3OiAweDAzYzQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgVEFVCiAgICAweDAwZTg6IDB4MDNhNiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgMHgwMGU5OiAweDAzOTgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQogICAgMHgwMGVhOiAweDAzYTksICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgMHgwMGViOiAweDAzYjQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKICAgIDB4MDBlYzogMHgyMjFlLCAgICAgIyAgSU5GSU5JVFkKICAgIDB4MDBlZDogMHgwM2M2LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgMHgwMGVlOiAweDAzYjUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgogICAgMHgwMGVmOiAweDIyMjksICAgICAjICBJTlRFUlNFQ1RJT04KICAgIDB4MDBmMDogMHgyMjYxLCAgICAgIyAgSURFTlRJQ0FMIFRPCiAgICAweDAwZjE6IDB4MDBiMSwgICAgICMgIFBMVVMtTUlOVVMgU0lHTgogICAgMHgwMGYyOiAweDIyNjUsICAgICAjICBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MDBmMzogMHgyMjY0LCAgICAgIyAgTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAweDAwZjQ6IDB4MjMyMCwgICAgICMgIFRPUCBIQUxGIElOVEVHUkFMCiAgICAweDAwZjU6IDB4MjMyMSwgICAgICMgIEJPVFRPTSBIQUxGIElOVEVHUkFMCiAgICAweDAwZjY6IDB4MDBmNywgICAgICMgIERJVklTSU9OIFNJR04KICAgIDB4MDBmNzogMHgyMjQ4LCAgICAgIyAgQUxNT1NUIEVRVUFMIFRPCiAgICAweDAwZjg6IDB4MDBiMCwgICAgICMgIERFR1JFRSBTSUdOCiAgICAweDAwZjk6IDB4MjIxOSwgICAgICMgIEJVTExFVCBPUEVSQVRPUgogICAgMHgwMGZhOiAweDAwYjcsICAgICAjICBNSURETEUgRE9UCiAgICAweDAwZmI6IDB4MjIxYSwgICAgICMgIFNRVUFSRSBST09UCiAgICAweDAwZmM6IDB4MjA3ZiwgICAgICMgIFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDAwZmQ6IDB4MDBiMiwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGZlOiAweDI1YTAsICAgICAjICBCTEFDSyBTUVVBUkUKICAgIDB4MDBmZjogMHgwMGEwLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKfSkKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDAwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDAwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDAwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDAwMDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDAwMDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDAwMDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwMDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwMDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDAwMDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MDAwYSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwMDBiIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwMDBjIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDAwMGQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MDAwZSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwMDBmIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MDAxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MDAxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgwMDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDAwMTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgwMDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgwMDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MDAxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MDAxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MDAxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgwMDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgwMDFhIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgwMDFiIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDAwMWMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgwMDFkIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDAwMWUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDAwMWYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgwMDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MDAyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MDAyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDAwMjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgwMDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MDAyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDAwMjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDAwMjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDAwMjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgwMDJhIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MDAyYiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgwMDJjIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gREVMRVRFCiAgICAnXHhjNycgICAgICMgIDB4MDA4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZmMnICAgICAjICAweDAwODEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGU5JyAgICAgIyAgMHgwMDgyIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHgwMDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTQnICAgICAjICAweDAwODQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGUwJyAgICAgIyAgMHgwMDg1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGU1JyAgICAgIyAgMHgwMDg2IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZTcnICAgICAjICAweDAwODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlYScgICAgICMgIDB4MDA4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHgwMDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlOCcgICAgICMgIDB4MDA4YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlZicgICAgICMgIDB4MDA4YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWUnICAgICAjICAweDAwOGMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlYycgICAgICMgIDB4MDA4ZCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhjNCcgICAgICMgIDB4MDA4ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4MDA4ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzknICAgICAjICAweDAwOTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlNicgICAgICMgIDB4MDA5MSAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgJ1x4YzYnICAgICAjICAweDAwOTIgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBBRQogICAgJ1x4ZjQnICAgICAjICAweDAwOTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNicgICAgICMgIDB4MDA5NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjInICAgICAjICAweDAwOTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZmInICAgICAjICAweDAwOTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmOScgICAgICMgIDB4MDA5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmZicgICAgICMgIDB4MDA5OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDYnICAgICAjICAweDAwOTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZGMnICAgICAjICAweDAwOWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjgnICAgICAjICAweDAwOWIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGEzJyAgICAgIyAgMHgwMDljIC0+IFBPVU5EIFNJR04KICAgICdceGQ4JyAgICAgIyAgMHgwMDlkIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdcdTIwYTcnICAgIyAgMHgwMDllIC0+IFBFU0VUQSBTSUdOCiAgICAnXHUwMTkyJyAgICMgIDB4MDA5ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdceGUxJyAgICAgIyAgMHgwMGEwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGVkJyAgICAgIyAgMHgwMGExIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGYzJyAgICAgIyAgMHgwMGEyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGZhJyAgICAgIyAgMHgwMGEzIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGYxJyAgICAgIyAgMHgwMGE0IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGQxJyAgICAgIyAgMHgwMGE1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4YWEnICAgICAjICAweDAwYTYgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJhJyAgICAgIyAgMHgwMGE3IC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YmYnICAgICAjICAweDAwYTggLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgJ1x1MjMxMCcgICAjICAweDAwYTkgLT4gUkVWRVJTRUQgTk9UIFNJR04KICAgICdceGFjJyAgICAgIyAgMHgwMGFhIC0+IE5PVCBTSUdOCiAgICAnXHhiZCcgICAgICMgIDB4MDBhYiAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJjJyAgICAgIyAgMHgwMGFjIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgJ1x4YTEnICAgICAjICAweDAwYWQgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YWInICAgICAjICAweDAwYWUgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGE0JyAgICAgIyAgMHgwMGFmIC0+IENVUlJFTkNZIFNJR04KICAgICdcdTI1OTEnICAgIyAgMHgwMGIwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICMgIDB4MDBiMSAtPiBNRURJVU0gU0hBREUKICAgICdcdTI1OTMnICAgIyAgMHgwMGIyIC0+IERBUksgU0hBREUKICAgICdcdTI1MDInICAgIyAgMHgwMGIzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUyNCcgICAjICAweDAwYjQgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTYxJyAgICMgIDB4MDBiNSAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjU2MicgICAjICAweDAwYjYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTYnICAgIyAgMHgwMGI3IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTUnICAgIyAgMHgwMGI4IC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1NjMnICAgIyAgMHgwMGI5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NTEnICAgIyAgMHgwMGJhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgICdcdTI1NTcnICAgIyAgMHgwMGJiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjU1ZCcgICAjICAweDAwYmMgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgJ1x1MjU1YycgICAjICAweDAwYmQgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NWInICAgIyAgMHgwMGJlIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTEwJyAgICMgIDB4MDBiZiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAjICAweDAwYzAgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgJ1x1MjUzNCcgICAjICAweDAwYzEgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTJjJyAgICMgIDB4MDBjMiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUxYycgICAjICAweDAwYzMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjUwMCcgICAjICAweDAwYzQgLT4gQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgICdcdTI1M2MnICAgIyAgMHgwMGM1IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU1ZScgICAjICAweDAwYzYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTVmJyAgICMgIDB4MDBjNyAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NWEnICAgIyAgMHgwMGM4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTU0JyAgICMgIDB4MDBjOSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTY5JyAgICMgIDB4MDBjYSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTY2JyAgICMgIDB4MDBjYiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjAnICAgIyAgMHgwMGNjIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTUwJyAgICMgIDB4MDBjZCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgICdcdTI1NmMnICAgIyAgMHgwMGNlIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjcnICAgIyAgMHgwMGNmIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTY4JyAgICMgIDB4MDBkMCAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU2NCcgICAjICAweDAwZDEgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2NScgICAjICAweDAwZDIgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU1OScgICAjICAweDAwZDMgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTU4JyAgICMgIDB4MDBkNCAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTInICAgIyAgMHgwMGQ1IC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTUzJyAgICMgIDB4MDBkNiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU2YicgICAjICAweDAwZDcgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NmEnICAgIyAgMHgwMGQ4IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTE4JyAgICMgIDB4MDBkOSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgICdcdTI1MGMnICAgIyAgMHgwMGRhIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgJ1x1MjU4OCcgICAjICAweDAwZGIgLT4gRlVMTCBCTE9DSwogICAgJ1x1MjU4NCcgICAjICAweDAwZGMgLT4gTE9XRVIgSEFMRiBCTE9DSwogICAgJ1x1MjU4YycgICAjICAweDAwZGQgLT4gTEVGVCBIQUxGIEJMT0NLCiAgICAnXHUyNTkwJyAgICMgIDB4MDBkZSAtPiBSSUdIVCBIQUxGIEJMT0NLCiAgICAnXHUyNTgwJyAgICMgIDB4MDBkZiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHUwM2IxJyAgICMgIDB4MDBlMCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgICdceGRmJyAgICAgIyAgMHgwMGUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHUwMzkzJyAgICMgIDB4MDBlMiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQogICAgJ1x1MDNjMCcgICAjICAweDAwZTMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAnXHUwM2EzJyAgICMgIDB4MDBlNCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgJ1x1MDNjMycgICAjICAweDAwZTUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAnXHhiNScgICAgICMgIDB4MDBlNiAtPiBNSUNSTyBTSUdOCiAgICAnXHUwM2M0JyAgICMgIDB4MDBlNyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVEFVCiAgICAnXHUwM2E2JyAgICMgIDB4MDBlOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKICAgICdcdTAzOTgnICAgIyAgMHgwMGU5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAnXHUwM2E5JyAgICMgIDB4MDBlYSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgJ1x1MDNiNCcgICAjICAweDAwZWIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAnXHUyMjFlJyAgICMgIDB4MDBlYyAtPiBJTkZJTklUWQogICAgJ1x1MDNjNicgICAjICAweDAwZWQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgJ1x1MDNiNScgICAjICAweDAwZWUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KICAgICdcdTIyMjknICAgIyAgMHgwMGVmIC0+IElOVEVSU0VDVElPTgogICAgJ1x1MjI2MScgICAjICAweDAwZjAgLT4gSURFTlRJQ0FMIFRPCiAgICAnXHhiMScgICAgICMgIDB4MDBmMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTIyNjUnICAgIyAgMHgwMGYyIC0+IEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjI2NCcgICAjICAweDAwZjMgLT4gTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAnXHUyMzIwJyAgICMgIDB4MDBmNCAtPiBUT1AgSEFMRiBJTlRFR1JBTAogICAgJ1x1MjMyMScgICAjICAweDAwZjUgLT4gQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgICdceGY3JyAgICAgIyAgMHgwMGY2IC0+IERJVklTSU9OIFNJR04KICAgICdcdTIyNDgnICAgIyAgMHgwMGY3IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x4YjAnICAgICAjICAweDAwZjggLT4gREVHUkVFIFNJR04KICAgICdcdTIyMTknICAgIyAgMHgwMGY5IC0+IEJVTExFVCBPUEVSQVRPUgogICAgJ1x4YjcnICAgICAjICAweDAwZmEgLT4gTUlERExFIERPVAogICAgJ1x1MjIxYScgICAjICAweDAwZmIgLT4gU1FVQVJFIFJPT1QKICAgICdcdTIwN2YnICAgIyAgMHgwMGZjIC0+IFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnXHhiMicgICAgICMgIDB4MDBmZCAtPiBTVVBFUlNDUklQVCBUV08KICAgICdcdTI1YTAnICAgIyAgMHgwMGZlIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YTAnICAgICAjICAweDAwZmYgLT4gTk8tQlJFQUsgU1BBQ0UKKQoKIyMjIEVuY29kaW5nIE1hcAoKZW5jb2RpbmdfbWFwID0gewogICAgMHgwMDAwOiAweDAwMDAsICAgICAjICBOVUxMCiAgICAweDAwMDE6IDB4MDAwMSwgICAgICMgIFNUQVJUIE9GIEhFQURJTkcKICAgIDB4MDAwMjogMHgwMDAyLCAgICAgIyAgU1RBUlQgT0YgVEVYVAogICAgMHgwMDAzOiAweDAwMDMsICAgICAjICBFTkQgT0YgVEVYVAogICAgMHgwMDA0OiAweDAwMDQsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAweDAwMDU6IDB4MDAwNSwgICAgICMgIEVOUVVJUlkKICAgIDB4MDAwNjogMHgwMDA2LCAgICAgIyAgQUNLTk9XTEVER0UKICAgIDB4MDAwNzogMHgwMDA3LCAgICAgIyAgQkVMTAogICAgMHgwMDA4OiAweDAwMDgsICAgICAjICBCQUNLU1BBQ0UKICAgIDB4MDAwOTogMHgwMDA5LCAgICAgIyAgSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAweDAwMGE6IDB4MDAwYSwgICAgICMgIExJTkUgRkVFRAogICAgMHgwMDBiOiAweDAwMGIsICAgICAjICBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAweDAwMGM6IDB4MDAwYywgICAgICMgIEZPUk0gRkVFRAogICAgMHgwMDBkOiAweDAwMGQsICAgICAjICBDQVJSSUFHRSBSRVRVUk4KICAgIDB4MDAwZTogMHgwMDBlLCAgICAgIyAgU0hJRlQgT1VUCiAgICAweDAwMGY6IDB4MDAwZiwgICAgICMgIFNISUZUIElOCiAgICAweDAwMTA6IDB4MDAxMCwgICAgICMgIERBVEEgTElOSyBFU0NBUEUKICAgIDB4MDAxMTogMHgwMDExLCAgICAgIyAgREVWSUNFIENPTlRST0wgT05FCiAgICAweDAwMTI6IDB4MDAxMiwgICAgICMgIERFVklDRSBDT05UUk9MIFRXTwogICAgMHgwMDEzOiAweDAwMTMsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgMHgwMDE0OiAweDAwMTQsICAgICAjICBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAweDAwMTU6IDB4MDAxNSwgICAgICMgIE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAweDAwMTY6IDB4MDAxNiwgICAgICMgIFNZTkNIUk9OT1VTIElETEUKICAgIDB4MDAxNzogMHgwMDE3LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgMHgwMDE4OiAweDAwMTgsICAgICAjICBDQU5DRUwKICAgIDB4MDAxOTogMHgwMDE5LCAgICAgIyAgRU5EIE9GIE1FRElVTQogICAgMHgwMDFhOiAweDAwMWEsICAgICAjICBTVUJTVElUVVRFCiAgICAweDAwMWI6IDB4MDAxYiwgICAgICMgIEVTQ0FQRQogICAgMHgwMDFjOiAweDAwMWMsICAgICAjICBGSUxFIFNFUEFSQVRPUgogICAgMHgwMDFkOiAweDAwMWQsICAgICAjICBHUk9VUCBTRVBBUkFUT1IKICAgIDB4MDAxZTogMHgwMDFlLCAgICAgIyAgUkVDT1JEIFNFUEFSQVRPUgogICAgMHgwMDFmOiAweDAwMWYsICAgICAjICBVTklUIFNFUEFSQVRPUgogICAgMHgwMDIwOiAweDAwMjAsICAgICAjICBTUEFDRQogICAgMHgwMDIxOiAweDAwMjEsICAgICAjICBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwMjI6IDB4MDAyMiwgICAgICMgIFFVT1RBVElPTiBNQVJLCiAgICAweDAwMjM6IDB4MDAyMywgICAgICMgIE5VTUJFUiBTSUdOCiAgICAweDAwMjQ6IDB4MDAyNCwgICAgICMgIERPTExBUiBTSUdOCiAgICAweDAwMjU6IDB4MDAyNSwgICAgICMgIFBFUkNFTlQgU0lHTgogICAgMHgwMDI2OiAweDAwMjYsICAgICAjICBBTVBFUlNBTkQKICAgIDB4MDAyNzogMHgwMDI3LCAgICAgIyAgQVBPU1RST1BIRQogICAgMHgwMDI4OiAweDAwMjgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTCiAgICAweDAwMjk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTCiAgICAweDAwMmE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLCiAgICAweDAwMmI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTgogICAgMHgwMDJjOiAweDAwMmMsICAgICAjICBDT01NQQogICAgMHgwMDJkOiAweDAwMmQsICAgICAjICBIWVBIRU4tTUlOVVMKICAgIDB4MDAyZTogMHgwMDJlLCAgICAgIyAgRlVMTCBTVE9QCiAgICAweDAwMmY6IDB4MDAyZiwgICAgICMgIFNPTElEVVMKICAgIDB4MDAzMDogMHgwMDMwLCAgICAgIyAgRElHSVQgWkVSTwogICAgMHgwMDMxOiAweDAwMzEsICAgICAjICBESUdJVCBPTkUKICAgIDB4MDAzMjogMHgwMDMyLCAgICAgIyAgRElHSVQgVFdPCiAgICAweDAwMzM6IDB4MDAzMywgICAgICMgIERJR0lUIFRIUkVFCiAgICAweDAwMzQ6IDB4MDAzNCwgICAgICMgIERJR0lUIEZPVVIKICAgIDB4MDAzNTogMHgwMDM1LCAgICAgIyAgRElHSVQgRklWRQogICAgMHgwMDM2OiAweDAwMzYsICAgICAjICBESUdJVCBTSVgKICAgIDB4MDAzNzogMHgwMDM3LCAgICAgIyAgRElHSVQgU0VWRU4KICAgIDB4MDAzODogMHgwMDM4LCAgICAgIyAgRElHSVQgRUlHSFQKICAgIDB4MDAzOTogMHgwMDM5LCAgICAgIyAgRElHSVQgTklORQogICAgMHgwMDNhOiAweDAwM2EsICAgICAjICBDT0xPTgogICAgMHgwMDNiOiAweDAwM2IsICAgICAjICBTRU1JQ09MT04KICAgIDB4MDAzYzogMHgwMDNjLCAgICAgIyAgTEVTUy1USEFOIFNJR04KICAgIDB4MDAzZDogMHgwMDNkLCAgICAgIyAgRVFVQUxTIFNJR04KICAgIDB4MDAzZTogMHgwMDNlLCAgICAgIyAgR1JFQVRFUi1USEFOIFNJR04KICAgIDB4MDAzZjogMHgwMDNmLCAgICAgIyAgUVVFU1RJT04gTUFSSwogICAgMHgwMDQwOiAweDAwNDAsICAgICAjICBDT01NRVJDSUFMIEFUCiAgICAweDAwNDE6IDB4MDA0MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA0MjogMHgwMDQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgMHgwMDQzOiAweDAwNDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAweDAwNDQ6IDB4MDA0NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgIDB4MDA0NTogMHgwMDQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgMHgwMDQ2OiAweDAwNDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAweDAwNDc6IDB4MDA0NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgIDB4MDA0ODogMHgwMDQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgMHgwMDQ5OiAweDAwNDksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwNGE6IDB4MDA0YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgIDB4MDA0YjogMHgwMDRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgMHgwMDRjOiAweDAwNGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAweDAwNGQ6IDB4MDA0ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgIDB4MDA0ZTogMHgwMDRlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgMHgwMDRmOiAweDAwNGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAweDAwNTA6IDB4MDA1MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgIDB4MDA1MTogMHgwMDUxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgMHgwMDUyOiAweDAwNTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAweDAwNTM6IDB4MDA1MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgIDB4MDA1NDogMHgwMDU0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgMHgwMDU1OiAweDAwNTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwNTY6IDB4MDA1NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgIDB4MDA1NzogMHgwMDU3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgMHgwMDU4OiAweDAwNTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAweDAwNTk6IDB4MDA1OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgIDB4MDA1YTogMHgwMDVhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgMHgwMDViOiAweDAwNWIsICAgICAjICBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWM6IDB4MDA1YywgICAgICMgIFJFVkVSU0UgU09MSURVUwogICAgMHgwMDVkOiAweDAwNWQsICAgICAjICBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVlOiAweDAwNWUsICAgICAjICBDSVJDVU1GTEVYIEFDQ0VOVAogICAgMHgwMDVmOiAweDAwNWYsICAgICAjICBMT1cgTElORQogICAgMHgwMDYwOiAweDAwNjAsICAgICAjICBHUkFWRSBBQ0NFTlQKICAgIDB4MDA2MTogMHgwMDYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgIDB4MDA2MjogMHgwMDYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgIDB4MDA2MzogMHgwMDYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgIDB4MDA2NDogMHgwMDY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgIDB4MDA2NTogMHgwMDY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgIDB4MDA2NjogMHgwMDY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgIDB4MDA2NzogMHgwMDY3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgIDB4MDA2ODogMHgwMDY4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgIDB4MDA2OTogMHgwMDY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgIDB4MDA2YTogMHgwMDZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgIDB4MDA2YjogMHgwMDZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgIDB4MDA2YzogMHgwMDZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgIDB4MDA2ZDogMHgwMDZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgIDB4MDA2ZTogMHgwMDZlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDA2ZjogMHgwMDZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgIDB4MDA3MDogMHgwMDcwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgIDB4MDA3MTogMHgwMDcxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgIDB4MDA3MjogMHgwMDcyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgIDB4MDA3MzogMHgwMDczLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgIDB4MDA3NDogMHgwMDc0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgIDB4MDA3NTogMHgwMDc1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgIDB4MDA3NjogMHgwMDc2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgIDB4MDA3NzogMHgwMDc3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgIDB4MDA3ODogMHgwMDc4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgIDB4MDA3OTogMHgwMDc5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgIDB4MDA3YTogMHgwMDdhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgIDB4MDA3YjogMHgwMDdiLCAgICAgIyAgTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2M6IDB4MDA3YywgICAgICMgIFZFUlRJQ0FMIExJTkUKICAgIDB4MDA3ZDogMHgwMDdkLCAgICAgIyAgUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdlOiAweDAwN2UsICAgICAjICBUSUxERQogICAgMHgwMDdmOiAweDAwN2YsICAgICAjICBERUxFVEUKICAgIDB4MDBhMDogMHgwMGZmLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKICAgIDB4MDBhMTogMHgwMGFkLCAgICAgIyAgSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMGEzOiAweDAwOWMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwYTQ6IDB4MDBhZiwgICAgICMgIENVUlJFTkNZIFNJR04KICAgIDB4MDBhYTogMHgwMGE2LCAgICAgIyAgRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgIDB4MDBhYjogMHgwMGFlLCAgICAgIyAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhYzogMHgwMGFhLCAgICAgIyAgTk9UIFNJR04KICAgIDB4MDBiMDogMHgwMGY4LCAgICAgIyAgREVHUkVFIFNJR04KICAgIDB4MDBiMTogMHgwMGYxLCAgICAgIyAgUExVUy1NSU5VUyBTSUdOCiAgICAweDAwYjI6IDB4MDBmZCwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMGI1OiAweDAwZTYsICAgICAjICBNSUNSTyBTSUdOCiAgICAweDAwYjc6IDB4MDBmYSwgICAgICMgIE1JRERMRSBET1QKICAgIDB4MDBiYTogMHgwMGE3LCAgICAgIyAgTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAweDAwYmM6IDB4MDBhYywgICAgICMgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgogICAgMHgwMGJkOiAweDAwYWIsICAgICAjICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgIDB4MDBiZjogMHgwMGE4LCAgICAgIyAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgMHgwMGM0OiAweDAwOGUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwYzU6IDB4MDA4ZiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAweDAwYzY6IDB4MDA5MiwgICAgICMgIExBVElOIENBUElUQUwgTElHQVRVUkUgQUUKICAgIDB4MDBjNzogMHgwMDgwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDBjOTogMHgwMDkwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwZDE6IDB4MDBhNSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMGQ2OiAweDAwOTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwZDg6IDB4MDA5ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgIDB4MDBkYzogMHgwMDlhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGRmOiAweDAwZTEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgMHgwMGUwOiAweDAwODUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwZTE6IDB4MDBhMCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBlMjogMHgwMDgzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZTQ6IDB4MDA4NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwZTU6IDB4MDA4NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgMHgwMGU2OiAweDAwOTEsICAgICAjICBMQVRJTiBTTUFMTCBMSUdBVFVSRSBBRQogICAgMHgwMGU3OiAweDAwODcsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDBlODogMHgwMDhhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgMHgwMGU5OiAweDAwODIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwZWE6IDB4MDA4OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGViOiAweDAwODksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGVjOiAweDAwOGQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAweDAwZWQ6IDB4MDBhMSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBlZTogMHgwMDhjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZWY6IDB4MDA4YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAweDAwZjE6IDB4MDBhNCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBmMjogMHgwMDk1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgMHgwMGYzOiAweDAwYTIsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwZjQ6IDB4MDA5MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMGY2OiAweDAwOTQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgMHgwMGY3OiAweDAwZjYsICAgICAjICBESVZJU0lPTiBTSUdOCiAgICAweDAwZjg6IDB4MDA5YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAweDAwZjk6IDB4MDA5NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgIDB4MDBmYTogMHgwMGEzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgMHgwMGZiOiAweDAwOTYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBmYzogMHgwMDgxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDBmZjogMHgwMDk4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDE5MjogMHgwMDlmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAweDAzOTM6IDB4MDBlMiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAweDAzOTg6IDB4MDBlOSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAweDAzYTM6IDB4MDBlNCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAweDAzYTY6IDB4MDBlOCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgMHgwM2E5OiAweDAwZWEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgMHgwM2IxOiAweDAwZTAsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgIDB4MDNiNDogMHgwMGViLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAweDAzYjU6IDB4MDBlZSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAzYzA6IDB4MDBlMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgMHgwM2MzOiAweDAwZTUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKICAgIDB4MDNjNDogMHgwMGU3LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgMHgwM2M2OiAweDAwZWQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiAgICAweDIwN2Y6IDB4MDBmYywgICAgICMgIFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDIwYTc6IDB4MDA5ZSwgICAgICMgIFBFU0VUQSBTSUdOCiAgICAweDIyMTk6IDB4MDBmOSwgICAgICMgIEJVTExFVCBPUEVSQVRPUgogICAgMHgyMjFhOiAweDAwZmIsICAgICAjICBTUVVBUkUgUk9PVAogICAgMHgyMjFlOiAweDAwZWMsICAgICAjICBJTkZJTklUWQogICAgMHgyMjI5OiAweDAwZWYsICAgICAjICBJTlRFUlNFQ1RJT04KICAgIDB4MjI0ODogMHgwMGY3LCAgICAgIyAgQUxNT1NUIEVRVUFMIFRPCiAgICAweDIyNjE6IDB4MDBmMCwgICAgICMgIElERU5USUNBTCBUTwogICAgMHgyMjY0OiAweDAwZjMsICAgICAjICBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgIDB4MjI2NTogMHgwMGYyLCAgICAgIyAgR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCiAgICAweDIzMTA6IDB4MDBhOSwgICAgICMgIFJFVkVSU0VEIE5PVCBTSUdOCiAgICAweDIzMjA6IDB4MDBmNCwgICAgICMgIFRPUCBIQUxGIElOVEVHUkFMCiAgICAweDIzMjE6IDB4MDBmNSwgICAgICMgIEJPVFRPTSBIQUxGIElOVEVHUkFMCiAgICAweDI1MDA6IDB4MDBjNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAweDI1MDI6IDB4MDBiMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgyNTBjOiAweDAwZGEsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgIDB4MjUxMDogMHgwMGJmLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MjUxNDogMHgwMGMwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgyNTE4OiAweDAwZDksICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MjUxYzogMHgwMGMzLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgyNTI0OiAweDAwYjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjUyYzogMHgwMGMyLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MjUzNDogMHgwMGMxLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1M2M6IDB4MDBjNSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTUwOiAweDAwY2QsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgIDB4MjU1MTogMHgwMGJhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgMHgyNTUyOiAweDAwZDUsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTUzOiAweDAwZDYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgyNTU0OiAweDAwYzksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAweDI1NTU6IDB4MDBiOCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU1NjogMHgwMGI3LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgyNTU3OiAweDAwYmIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgIDB4MjU1ODogMHgwMGQ0LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAweDI1NTk6IDB4MDBkMywgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgyNTVhOiAweDAwYzgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgMHgyNTViOiAweDAwYmUsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgyNTVjOiAweDAwYmQsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgyNTVkOiAweDAwYmMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDI1NWU6IDB4MDBjNiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTVmOiAweDAwYzcsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU2MDogMHgwMGNjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjU2MTogMHgwMGI1LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU2MjogMHgwMGI2LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU2MzogMHgwMGI5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTY0OiAweDAwZDEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1NjU6IDB4MDBkMiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MjU2NjogMHgwMGNiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1Njc6IDB4MDBjZiwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1Njg6IDB4MDBkMCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1Njk6IDB4MDBjYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MjU2YTogMHgwMGQ4LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgIDB4MjU2YjogMHgwMGQ3LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MjU2YzogMHgwMGNlLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTgwOiAweDAwZGYsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDI1ODQ6IDB4MDBkYywgICAgICMgIExPV0VSIEhBTEYgQkxPQ0sKICAgIDB4MjU4ODogMHgwMGRiLCAgICAgIyAgRlVMTCBCTE9DSwogICAgMHgyNThjOiAweDAwZGQsICAgICAjICBMRUZUIEhBTEYgQkxPQ0sKICAgIDB4MjU5MDogMHgwMGRlLCAgICAgIyAgUklHSFQgSEFMRiBCTE9DSwogICAgMHgyNTkxOiAweDAwYjAsICAgICAjICBMSUdIVCBTSEFERQogICAgMHgyNTkyOiAweDAwYjEsICAgICAjICBNRURJVU0gU0hBREUKICAgIDB4MjU5MzogMHgwMGIyLCAgICAgIyAgREFSSyBTSEFERQogICAgMHgyNWEwOiAweDAwZmUsICAgICAjICBCTEFDSyBTUVVBUkUKfQpQSwMEFAAAAAAAAiCjVlfktn9chgAAXIYAABIAAABlbmNvZGluZ3MvY3A4NjYucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGdlbmVyYXRlZCBmcm9tICdWRU5ET1JTL01JQ1NGVC9QQy9DUDg2Ni5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nY3A4NjYnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDQxMCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA4MTogMHgwNDExLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKICAgIDB4MDA4MjogMHgwNDEyLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKICAgIDB4MDA4MzogMHgwNDEzLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAweDAwODQ6IDB4MDQxNCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiAgICAweDAwODU6IDB4MDQxNSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCiAgICAweDAwODY6IDB4MDQxNiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgMHgwMDg3OiAweDA0MTcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQogICAgMHgwMDg4OiAweDA0MTgsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwODk6IDB4MDQxOSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgIDB4MDA4YTogMHgwNDFhLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKICAgIDB4MDA4YjogMHgwNDFiLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKICAgIDB4MDA4YzogMHgwNDFjLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgIDB4MDA4ZDogMHgwNDFkLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KICAgIDB4MDA4ZTogMHgwNDFlLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwMDhmOiAweDA0MWYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgMHgwMDkwOiAweDA0MjAsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgogICAgMHgwMDkxOiAweDA0MjEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwogICAgMHgwMDkyOiAweDA0MjIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgMHgwMDkzOiAweDA0MjMsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwOTQ6IDB4MDQyNCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCiAgICAweDAwOTU6IDB4MDQyNSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAweDAwOTY6IDB4MDQyNiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQogICAgMHgwMDk3OiAweDA0MjcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKICAgIDB4MDA5ODogMHgwNDI4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAweDAwOTk6IDB4MDQyOSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAweDAwOWE6IDB4MDQyYSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgogICAgMHgwMDliOiAweDA0MmIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAweDAwOWM6IDB4MDQyYywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgogICAgMHgwMDlkOiAweDA0MmQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCiAgICAweDAwOWU6IDB4MDQyZSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAweDAwOWY6IDB4MDQyZiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiAgICAweDAwYTA6IDB4MDQzMCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBBCiAgICAweDAwYTE6IDB4MDQzMSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgMHgwMGEyOiAweDA0MzIsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKICAgIDB4MDBhMzogMHgwNDMzLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQogICAgMHgwMGE0OiAweDA0MzQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgIDB4MDBhNTogMHgwNDM1LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCiAgICAweDAwYTY6IDB4MDQzNiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKICAgIDB4MDBhNzogMHgwNDM3LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAweDAwYTg6IDB4MDQzOCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBJCiAgICAweDAwYTk6IDB4MDQzOSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCiAgICAweDAwYWE6IDB4MDQzYSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgMHgwMGFiOiAweDA0M2IsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKICAgIDB4MDBhYzogMHgwNDNjLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCiAgICAweDAwYWQ6IDB4MDQzZCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgMHgwMGFlOiAweDA0M2UsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwogICAgMHgwMGFmOiAweDA0M2YsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKICAgIDB4MDBiMDogMHgyNTkxLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MDBiMTogMHgyNTkyLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDAwYjI6IDB4MjU5MywgICAgICMgIERBUksgU0hBREUKICAgIDB4MDBiMzogMHgyNTAyLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAweDAwYjQ6IDB4MjUyNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGI1OiAweDI1NjEsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgMHgwMGI2OiAweDI1NjIsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgMHgwMGI3OiAweDI1NTYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDAwYjg6IDB4MjU1NSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MDBiOTogMHgyNTYzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGJhOiAweDI1NTEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDAwYmI6IDB4MjU1NywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgwMGJjOiAweDI1NWQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDAwYmQ6IDB4MjU1YywgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDAwYmU6IDB4MjU1YiwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDAwYmY6IDB4MjUxMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDAwYzA6IDB4MjUxNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MDBjMTogMHgyNTM0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDAwYzI6IDB4MjUyYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDAwYzM6IDB4MjUxYywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjNDogMHgyNTAwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgIDB4MDBjNTogMHgyNTNjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDAwYzY6IDB4MjU1ZSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgwMGM3OiAweDI1NWYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MDBjODogMHgyNTVhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MDBjOTogMHgyNTU0LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgwMGNhOiAweDI1NjksICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDAwY2I6IDB4MjU2NiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNjOiAweDI1NjAsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGNkOiAweDI1NTAsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgIDB4MDBjZTogMHgyNTZjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNmOiAweDI1NjcsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQwOiAweDI1NjgsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgwMGQxOiAweDI1NjQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDAwZDI6IDB4MjU2NSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgIDB4MDBkMzogMHgyNTU5LCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDAwZDQ6IDB4MjU1OCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgwMGQ1OiAweDI1NTIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgwMGQ2OiAweDI1NTMsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgMHgwMGQ3OiAweDI1NmIsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgwMGQ4OiAweDI1NmEsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgwMGQ5OiAweDI1MTgsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MDBkYTogMHgyNTBjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDAwZGI6IDB4MjU4OCwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MDBkYzogMHgyNTg0LCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgwMGRkOiAweDI1OGMsICAgICAjICBMRUZUIEhBTEYgQkxPQ0sKICAgIDB4MDBkZTogMHgyNTkwLCAgICAgIyAgUklHSFQgSEFMRiBCTE9DSwogICAgMHgwMGRmOiAweDI1ODAsICAgICAjICBVUFBFUiBIQUxGIEJMT0NLCiAgICAweDAwZTA6IDB4MDQ0MCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgogICAgMHgwMGUxOiAweDA0NDEsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKICAgIDB4MDBlMjogMHgwNDQyLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAweDAwZTM6IDB4MDQ0MywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBVCiAgICAweDAwZTQ6IDB4MDQ0NCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgogICAgMHgwMGU1OiAweDA0NDUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKICAgIDB4MDBlNjogMHgwNDQ2LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQogICAgMHgwMGU3OiAweDA0NDcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCiAgICAweDAwZTg6IDB4MDQ0OCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKICAgIDB4MDBlOTogMHgwNDQ5LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAweDAwZWE6IDB4MDQ0YSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KICAgIDB4MDBlYjogMHgwNDRiLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKICAgIDB4MDBlYzogMHgwNDRjLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgMHgwMGVkOiAweDA0NGQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQogICAgMHgwMGVlOiAweDA0NGUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKICAgIDB4MDBlZjogMHgwNDRmLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCiAgICAweDAwZjA6IDB4MDQwMSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCiAgICAweDAwZjE6IDB4MDQ1MSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgMHgwMGYyOiAweDA0MDQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgIDB4MDBmMzogMHgwNDU0LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgMHgwMGY0OiAweDA0MDcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQogICAgMHgwMGY1OiAweDA0NTcsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUkKICAgIDB4MDBmNjogMHgwNDBlLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVQogICAgMHgwMGY3OiAweDA0NWUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVQogICAgMHgwMGY4OiAweDAwYjAsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGY5OiAweDIyMTksICAgICAjICBCVUxMRVQgT1BFUkFUT1IKICAgIDB4MDBmYTogMHgwMGI3LCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGZiOiAweDIyMWEsICAgICAjICBTUVVBUkUgUk9PVAogICAgMHgwMGZjOiAweDIxMTYsICAgICAjICBOVU1FUk8gU0lHTgogICAgMHgwMGZkOiAweDAwYTQsICAgICAjICBDVVJSRU5DWSBTSUdOCiAgICAweDAwZmU6IDB4MjVhMCwgICAgICMgIEJMQUNLIFNRVUFSRQogICAgMHgwMGZmOiAweDAwYTAsICAgICAjICBOTy1CUkVBSyBTUEFDRQp9KQoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDAwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDAwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDAwMDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDAwMDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDAwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDAwMGIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MDAwZCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwMDBlIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgwMDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MDAxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDAwMTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgwMDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgwMDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDAwMTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDAwMWEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MDAxYyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDAwMWQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MDAxZSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MDAxZiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDAwMjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgwMDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgwMDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MDAyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDAwMjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgwMDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDAwMjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MDAyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MDAyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MDAyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDAwMmEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgwMDJiIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDAwMmMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgwMDJkIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDAwMmUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MDAyZiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MDAzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MDAzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgwMDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDAwMzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgwMDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgwMDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgwMDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDAwMzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgwMDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MDAzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4MDAzYSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDAwM2IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4MDAzYyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDAwM2QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgwMDNlIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4MDAzZiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4MDA0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4MDA0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4MDA0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4MDA0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4MDA0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4MDA0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4MDA0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4MDA0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4MDA0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4MDA0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4MDA0YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4MDA0YiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4MDA0YyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4MDA0ZCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4MDA0ZSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4MDA0ZiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4MDA1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4MDA1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4MDA1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4MDA1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4MDA1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4MDA1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4MDA1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4MDA1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4MDA1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4MDA1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4MDA1YSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4MDA1YiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4MDA1YyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHgwMDVkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4MDA1ZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDAwNWYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHgwMDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDAwNjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHgwMDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4MDA2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDAwNjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHgwMDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4MDA2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDAwNjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHgwMDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4MDA2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDAwNmEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHgwMDZiIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4MDA2YyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDAwNmQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHgwMDZlIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4MDA2ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDAwNzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHgwMDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4MDA3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDAwNzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHgwMDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4MDA3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDAwNzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHgwMDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4MDA3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDAwNzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHgwMDdhIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4MDA3YiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHgwMDdjIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHgwMDdkIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHgwMDdlIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4MDA3ZiAtPiBERUxFVEUKICAgICdcdTA0MTAnICAgIyAgMHgwMDgwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgICdcdTA0MTEnICAgIyAgMHgwMDgxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCiAgICAnXHUwNDEyJyAgICMgIDB4MDA4MiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQogICAgJ1x1MDQxMycgICAjICAweDAwODMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAnXHUwNDE0JyAgICMgIDB4MDA4NCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQogICAgJ1x1MDQxNScgICAjICAweDAwODUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKICAgICdcdTA0MTYnICAgIyAgMHgwMDg2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQxNycgICAjICAweDAwODcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKICAgICdcdTA0MTgnICAgIyAgMHgwMDg4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKICAgICdcdTA0MTknICAgIyAgMHgwMDg5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0MWEnICAgIyAgMHgwMDhhIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCiAgICAnXHUwNDFiJyAgICMgIDB4MDA4YiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAogICAgJ1x1MDQxYycgICAjICAweDAwOGMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0MWQnICAgIyAgMHgwMDhkIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCiAgICAnXHUwNDFlJyAgICMgIDB4MDA4ZSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCiAgICAnXHUwNDFmJyAgICMgIDB4MDA4ZiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQyMCcgICAjICAweDAwOTAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKICAgICdcdTA0MjEnICAgIyAgMHgwMDkxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCiAgICAnXHUwNDIyJyAgICMgIDB4MDA5MiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgJ1x1MDQyMycgICAjICAweDAwOTMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQogICAgJ1x1MDQyNCcgICAjICAweDAwOTQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKICAgICdcdTA0MjUnICAgIyAgMHgwMDk1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDI2JyAgICMgIDB4MDA5NiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKICAgICdcdTA0MjcnICAgIyAgMHgwMDk3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQogICAgJ1x1MDQyOCcgICAjICAweDAwOTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAnXHUwNDI5JyAgICMgIDB4MDA5OSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQogICAgJ1x1MDQyYScgICAjICAweDAwOWEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCiAgICAnXHUwNDJiJyAgICMgIDB4MDA5YiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAnXHUwNDJjJyAgICMgIDB4MDA5YyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KICAgICdcdTA0MmQnICAgIyAgMHgwMDlkIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKICAgICdcdTA0MmUnICAgIyAgMHgwMDllIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAnXHUwNDJmJyAgICMgIDB4MDA5ZiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQogICAgJ1x1MDQzMCcgICAjICAweDAwYTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKICAgICdcdTA0MzEnICAgIyAgMHgwMGExIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgJ1x1MDQzMicgICAjICAweDAwYTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCiAgICAnXHUwNDMzJyAgICMgIDB4MDBhMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCiAgICAnXHUwNDM0JyAgICMgIDB4MDBhNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgICdcdTA0MzUnICAgIyAgMHgwMGE1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQogICAgJ1x1MDQzNicgICAjICAweDAwYTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQogICAgJ1x1MDQzNycgICAjICAweDAwYTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAnXHUwNDM4JyAgICMgIDB4MDBhOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQogICAgJ1x1MDQzOScgICAjICAweDAwYTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0M2EnICAgIyAgMHgwMGFhIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgJ1x1MDQzYicgICAjICAweDAwYWIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCiAgICAnXHUwNDNjJyAgICMgIDB4MDBhYyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KICAgICdcdTA0M2QnICAgIyAgMHgwMGFkIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgJ1x1MDQzZScgICAjICAweDAwYWUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KICAgICdcdTA0M2YnICAgIyAgMHgwMGFmIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBQRQogICAgJ1x1MjU5MScgICAjICAweDAwYjAgLT4gTElHSFQgU0hBREUKICAgICdcdTI1OTInICAgIyAgMHgwMGIxIC0+IE1FRElVTSBTSEFERQogICAgJ1x1MjU5MycgICAjICAweDAwYjIgLT4gREFSSyBTSEFERQogICAgJ1x1MjUwMicgICAjICAweDAwYjMgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAnXHUyNTI0JyAgICMgIDB4MDBiNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgICdcdTI1NjEnICAgIyAgMHgwMGI1IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTYyJyAgICMgIDB4MDBiNiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1NicgICAjICAweDAwYjcgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1NScgICAjICAweDAwYjggLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHUyNTVjJyAgICMgIDB4MDBiZCAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRQogICAgJ1x1MjU1YicgICAjICAweDAwYmUgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTI1MTAnICAgIyAgMHgwMGJmIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAnXHUyNTE0JyAgICMgIDB4MDBjMCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTM0JyAgICMgIDB4MDBjMSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1MmMnICAgIyAgMHgwMGMyIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTFjJyAgICMgIDB4MDBjMyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTAwJyAgICMgIDB4MDBjNCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgJ1x1MjUzYycgICAjICAweDAwYzUgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTVlJyAgICMgIDB4MDBjNiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NWYnICAgIyAgMHgwMGM3IC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU1YScgICAjICAweDAwYzggLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgICdcdTI1NTQnICAgIyAgMHgwMGM5IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1NjknICAgIyAgMHgwMGNhIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjYnICAgIyAgMHgwMGNiIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2MCcgICAjICAweDAwY2MgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1NTAnICAgIyAgMHgwMGNkIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgJ1x1MjU2YycgICAjICAweDAwY2UgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2NycgICAjICAweDAwY2YgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1NjgnICAgIyAgMHgwMGQwIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTY0JyAgICMgIDB4MDBkMSAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTY1JyAgICMgIDB4MDBkMiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTU5JyAgICMgIDB4MDBkMyAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NTgnICAgIyAgMHgwMGQ0IC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MjU1MicgICAjICAweDAwZDUgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTMnICAgIyAgMHgwMGQ2IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTZiJyAgICMgIDB4MDBkNyAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgJ1x1MjU2YScgICAjICAweDAwZDggLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHUyNThjJyAgICMgIDB4MDBkZCAtPiBMRUZUIEhBTEYgQkxPQ0sKICAgICdcdTI1OTAnICAgIyAgMHgwMGRlIC0+IFJJR0hUIEhBTEYgQkxPQ0sKICAgICdcdTI1ODAnICAgIyAgMHgwMGRmIC0+IFVQUEVSIEhBTEYgQkxPQ0sKICAgICdcdTA0NDAnICAgIyAgMHgwMGUwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgogICAgJ1x1MDQ0MScgICAjICAweDAwZTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAnXHUwNDQyJyAgICMgIDB4MDBlMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKICAgICdcdTA0NDMnICAgIyAgMHgwMGUzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVCiAgICAnXHUwNDQ0JyAgICMgIDB4MDBlNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKICAgICdcdTA0NDUnICAgIyAgMHgwMGU1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQogICAgJ1x1MDQ0NicgICAjICAweDAwZTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQogICAgJ1x1MDQ0NycgICAjICAweDAwZTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQogICAgJ1x1MDQ0OCcgICAjICAweDAwZTggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQogICAgJ1x1MDQ0OScgICAjICAweDAwZTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDRhJyAgICMgIDB4MDBlYSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCiAgICAnXHUwNDRiJyAgICMgIDB4MDBlYiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQogICAgJ1x1MDQ0YycgICAjICAweDAwZWMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgJ1x1MDQ0ZCcgICAjICAweDAwZWQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKICAgICdcdTA0NGUnICAgIyAgMHgwMGVlIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQogICAgJ1x1MDQ0ZicgICAjICAweDAwZWYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCiAgICAnXHUwNDAxJyAgICMgIDB4MDBmMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTwogICAgJ1x1MDQ1MScgICAjICAweDAwZjEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiAgICAnXHUwNDA0JyAgICMgIDB4MDBmMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgICdcdTA0NTQnICAgIyAgMHgwMGYzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgICdcdTA0MDcnICAgIyAgMHgwMGY0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlJCiAgICAnXHUwNDU3JyAgICMgIDB4MDBmNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUkKICAgICdcdTA0MGUnICAgIyAgMHgwMGY2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFUKICAgICdcdTA0NWUnICAgIyAgMHgwMGY3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVCiAgICAnXHhiMCcgICAgICMgIDB4MDBmOCAtPiBERUdSRUUgU0lHTgogICAgJ1x1MjIxOScgICAjICAweDAwZjkgLT4gQlVMTEVUIE9QRVJBVE9SCiAgICAnXHhiNycgICAgICMgIDB4MDBmYSAtPiBNSURETEUgRE9UCiAgICAnXHUyMjFhJyAgICMgIDB4MDBmYiAtPiBTUVVBUkUgUk9PVAogICAgJ1x1MjExNicgICAjICAweDAwZmMgLT4gTlVNRVJPIFNJR04KICAgICdceGE0JyAgICAgIyAgMHgwMGZkIC0+IENVUlJFTkNZIFNJR04KICAgICdcdTI1YTAnICAgIyAgMHgwMGZlIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YTAnICAgICAjICAweDAwZmYgLT4gTk8tQlJFQUsgU1BBQ0UKKQoKIyMjIEVuY29kaW5nIE1hcAoKZW5jb2RpbmdfbWFwID0gewogICAgMHgwMDAwOiAweDAwMDAsICAgICAjICBOVUxMCiAgICAweDAwMDE6IDB4MDAwMSwgICAgICMgIFNUQVJUIE9GIEhFQURJTkcKICAgIDB4MDAwMjogMHgwMDAyLCAgICAgIyAgU1RBUlQgT0YgVEVYVAogICAgMHgwMDAzOiAweDAwMDMsICAgICAjICBFTkQgT0YgVEVYVAogICAgMHgwMDA0OiAweDAwMDQsICAgICAjICBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAweDAwMDU6IDB4MDAwNSwgICAgICMgIEVOUVVJUlkKICAgIDB4MDAwNjogMHgwMDA2LCAgICAgIyAgQUNLTk9XTEVER0UKICAgIDB4MDAwNzogMHgwMDA3LCAgICAgIyAgQkVMTAogICAgMHgwMDA4OiAweDAwMDgsICAgICAjICBCQUNLU1BBQ0UKICAgIDB4MDAwOTogMHgwMDA5LCAgICAgIyAgSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAweDAwMGE6IDB4MDAwYSwgICAgICMgIExJTkUgRkVFRAogICAgMHgwMDBiOiAweDAwMGIsICAgICAjICBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAweDAwMGM6IDB4MDAwYywgICAgICMgIEZPUk0gRkVFRAogICAgMHgwMDBkOiAweDAwMGQsICAgICAjICBDQVJSSUFHRSBSRVRVUk4KICAgIDB4MDAwZTogMHgwMDBlLCAgICAgIyAgU0hJRlQgT1VUCiAgICAweDAwMGY6IDB4MDAwZiwgICAgICMgIFNISUZUIElOCiAgICAweDAwMTA6IDB4MDAxMCwgICAgICMgIERBVEEgTElOSyBFU0NBUEUKICAgIDB4MDAxMTogMHgwMDExLCAgICAgIyAgREVWSUNFIENPTlRST0wgT05FCiAgICAweDAwMTI6IDB4MDAxMiwgICAgICMgIERFVklDRSBDT05UUk9MIFRXTwogICAgMHgwMDEzOiAweDAwMTMsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgMHgwMDE0OiAweDAwMTQsICAgICAjICBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAweDAwMTU6IDB4MDAxNSwgICAgICMgIE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAweDAwMTY6IDB4MDAxNiwgICAgICMgIFNZTkNIUk9OT1VTIElETEUKICAgIDB4MDAxNzogMHgwMDE3LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgMHgwMDE4OiAweDAwMTgsICAgICAjICBDQU5DRUwKICAgIDB4MDAxOTogMHgwMDE5LCAgICAgIyAgRU5EIE9GIE1FRElVTQogICAgMHgwMDFhOiAweDAwMWEsICAgICAjICBTVUJTVElUVVRFCiAgICAweDAwMWI6IDB4MDAxYiwgICAgICMgIEVTQ0FQRQogICAgMHgwMDFjOiAweDAwMWMsICAgICAjICBGSUxFIFNFUEFSQVRPUgogICAgMHgwMDFkOiAweDAwMWQsICAgICAjICBHUk9VUCBTRVBBUkFUT1IKICAgIDB4MDAxZTogMHgwMDFlLCAgICAgIyAgUkVDT1JEIFNFUEFSQVRPUgogICAgMHgwMDFmOiAweDAwMWYsICAgICAjICBVTklUIFNFUEFSQVRPUgogICAgMHgwMDIwOiAweDAwMjAsICAgICAjICBTUEFDRQogICAgMHgwMDIxOiAweDAwMjEsICAgICAjICBFWENMQU1BVElPTiBNQVJLCiAgICAweDAwMjI6IDB4MDAyMiwgICAgICMgIFFVT1RBVElPTiBNQVJLCiAgICAweDAwMjM6IDB4MDAyMywgICAgICMgIE5VTUJFUiBTSUdOCiAgICAweDAwMjQ6IDB4MDAyNCwgICAgICMgIERPTExBUiBTSUdOCiAgICAweDAwMjU6IDB4MDAyNSwgICAgICMgIFBFUkNFTlQgU0lHTgogICAgMHgwMDI2OiAweDAwMjYsICAgICAjICBBTVBFUlNBTkQKICAgIDB4MDAyNzogMHgwMDI3LCAgICAgIyAgQVBPU1RST1BIRQogICAgMHgwMDI4OiAweDAwMjgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTCiAgICAweDAwMjk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTCiAgICAweDAwMmE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLCiAgICAweDAwMmI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTgogICAgMHgwMDJjOiAweDAwMmMsICAgICAjICBDT01NQQogICAgMHgwMDJkOiAweDAwMmQsICAgICAjICBIWVBIRU4tTUlOVVMKICAgIDB4MDAyZTogMHgwMDJlLCAgICAgIyAgRlVMTCBTVE9QCiAgICAweDAwMmY6IDB4MDAyZiwgICAgICMgIFNPTElEVVMKICAgIDB4MDAzMDogMHgwMDMwLCAgICAgIyAgRElHSVQgWkVSTwogICAgMHgwMDMxOiAweDAwMzEsICAgICAjICBESUdJVCBPTkUKICAgIDB4MDAzMjogMHgwMDMyLCAgICAgIyAgRElHSVQgVFdPCiAgICAweDAwMzM6IDB4MDAzMywgICAgICMgIERJR0lUIFRIUkVFCiAgICAweDAwMzQ6IDB4MDAzNCwgICAgICMgIERJR0lUIEZPVVIKICAgIDB4MDAzNTogMHgwMDM1LCAgICAgIyAgRElHSVQgRklWRQogICAgMHgwMDM2OiAweDAwMzYsICAgICAjICBESUdJVCBTSVgKICAgIDB4MDAzNzogMHgwMDM3LCAgICAgIyAgRElHSVQgU0VWRU4KICAgIDB4MDAzODogMHgwMDM4LCAgICAgIyAgRElHSVQgRUlHSFQKICAgIDB4MDAzOTogMHgwMDM5LCAgICAgIyAgRElHSVQgTklORQogICAgMHgwMDNhOiAweDAwM2EsICAgICAjICBDT0xPTgogICAgMHgwMDNiOiAweDAwM2IsICAgICAjICBTRU1JQ09MT04KICAgIDB4MDAzYzogMHgwMDNjLCAgICAgIyAgTEVTUy1USEFOIFNJR04KICAgIDB4MDAzZDogMHgwMDNkLCAgICAgIyAgRVFVQUxTIFNJR04KICAgIDB4MDAzZTogMHgwMDNlLCAgICAgIyAgR1JFQVRFUi1USEFOIFNJR04KICAgIDB4MDAzZjogMHgwMDNmLCAgICAgIyAgUVVFU1RJT04gTUFSSwogICAgMHgwMDQwOiAweDAwNDAsICAgICAjICBDT01NRVJDSUFMIEFUCiAgICAweDAwNDE6IDB4MDA0MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDA0MjogMHgwMDQyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgMHgwMDQzOiAweDAwNDMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAweDAwNDQ6IDB4MDA0NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgIDB4MDA0NTogMHgwMDQ1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgMHgwMDQ2OiAweDAwNDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAweDAwNDc6IDB4MDA0NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgIDB4MDA0ODogMHgwMDQ4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgMHgwMDQ5OiAweDAwNDksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAweDAwNGE6IDB4MDA0YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgIDB4MDA0YjogMHgwMDRiLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgMHgwMDRjOiAweDAwNGMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAweDAwNGQ6IDB4MDA0ZCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgIDB4MDA0ZTogMHgwMDRlLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgMHgwMDRmOiAweDAwNGYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAweDAwNTA6IDB4MDA1MCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgIDB4MDA1MTogMHgwMDUxLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgMHgwMDUyOiAweDAwNTIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAweDAwNTM6IDB4MDA1MywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgIDB4MDA1NDogMHgwMDU0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgMHgwMDU1OiAweDAwNTUsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAweDAwNTY6IDB4MDA1NiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgIDB4MDA1NzogMHgwMDU3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgMHgwMDU4OiAweDAwNTgsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAweDAwNTk6IDB4MDA1OSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgIDB4MDA1YTogMHgwMDVhLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgMHgwMDViOiAweDAwNWIsICAgICAjICBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAweDAwNWM6IDB4MDA1YywgICAgICMgIFJFVkVSU0UgU09MSURVUwogICAgMHgwMDVkOiAweDAwNWQsICAgICAjICBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVlOiAweDAwNWUsICAgICAjICBDSVJDVU1GTEVYIEFDQ0VOVAogICAgMHgwMDVmOiAweDAwNWYsICAgICAjICBMT1cgTElORQogICAgMHgwMDYwOiAweDAwNjAsICAgICAjICBHUkFWRSBBQ0NFTlQKICAgIDB4MDA2MTogMHgwMDYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgIDB4MDA2MjogMHgwMDYyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgIDB4MDA2MzogMHgwMDYzLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgIDB4MDA2NDogMHgwMDY0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgIDB4MDA2NTogMHgwMDY1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgIDB4MDA2NjogMHgwMDY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgIDB4MDA2NzogMHgwMDY3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgIDB4MDA2ODogMHgwMDY4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgIDB4MDA2OTogMHgwMDY5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgIDB4MDA2YTogMHgwMDZhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgIDB4MDA2YjogMHgwMDZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgIDB4MDA2YzogMHgwMDZjLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgIDB4MDA2ZDogMHgwMDZkLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgIDB4MDA2ZTogMHgwMDZlLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgIDB4MDA2ZjogMHgwMDZmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgIDB4MDA3MDogMHgwMDcwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgIDB4MDA3MTogMHgwMDcxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgIDB4MDA3MjogMHgwMDcyLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgIDB4MDA3MzogMHgwMDczLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgIDB4MDA3NDogMHgwMDc0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgIDB4MDA3NTogMHgwMDc1LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgIDB4MDA3NjogMHgwMDc2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgIDB4MDA3NzogMHgwMDc3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgIDB4MDA3ODogMHgwMDc4LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgIDB4MDA3OTogMHgwMDc5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgIDB4MDA3YTogMHgwMDdhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgIDB4MDA3YjogMHgwMDdiLCAgICAgIyAgTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAweDAwN2M6IDB4MDA3YywgICAgICMgIFZFUlRJQ0FMIExJTkUKICAgIDB4MDA3ZDogMHgwMDdkLCAgICAgIyAgUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdlOiAweDAwN2UsICAgICAjICBUSUxERQogICAgMHgwMDdmOiAweDAwN2YsICAgICAjICBERUxFVEUKICAgIDB4MDBhMDogMHgwMGZmLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKICAgIDB4MDBhNDogMHgwMGZkLCAgICAgIyAgQ1VSUkVOQ1kgU0lHTgogICAgMHgwMGIwOiAweDAwZjgsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGI3OiAweDAwZmEsICAgICAjICBNSURETEUgRE9UCiAgICAweDA0MDE6IDB4MDBmMCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCiAgICAweDA0MDQ6IDB4MDBmMiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgMHgwNDA3OiAweDAwZjQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQogICAgMHgwNDBlOiAweDAwZjYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVCiAgICAweDA0MTA6IDB4MDA4MCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgIDB4MDQxMTogMHgwMDgxLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKICAgIDB4MDQxMjogMHgwMDgyLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKICAgIDB4MDQxMzogMHgwMDgzLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAweDA0MTQ6IDB4MDA4NCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiAgICAweDA0MTU6IDB4MDA4NSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCiAgICAweDA0MTY6IDB4MDA4NiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgMHgwNDE3OiAweDAwODcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQogICAgMHgwNDE4OiAweDAwODgsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCiAgICAweDA0MTk6IDB4MDA4OSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgIDB4MDQxYTogMHgwMDhhLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKICAgIDB4MDQxYjogMHgwMDhiLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKICAgIDB4MDQxYzogMHgwMDhjLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgIDB4MDQxZDogMHgwMDhkLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KICAgIDB4MDQxZTogMHgwMDhlLCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwNDFmOiAweDAwOGYsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgMHgwNDIwOiAweDAwOTAsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgogICAgMHgwNDIxOiAweDAwOTEsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwogICAgMHgwNDIyOiAweDAwOTIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgMHgwNDIzOiAweDAwOTMsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCiAgICAweDA0MjQ6IDB4MDA5NCwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCiAgICAweDA0MjU6IDB4MDA5NSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAweDA0MjY6IDB4MDA5NiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQogICAgMHgwNDI3OiAweDAwOTcsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKICAgIDB4MDQyODogMHgwMDk4LCAgICAgIyAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAweDA0Mjk6IDB4MDA5OSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAweDA0MmE6IDB4MDA5YSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgogICAgMHgwNDJiOiAweDAwOWIsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAweDA0MmM6IDB4MDA5YywgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgogICAgMHgwNDJkOiAweDAwOWQsICAgICAjICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCiAgICAweDA0MmU6IDB4MDA5ZSwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAweDA0MmY6IDB4MDA5ZiwgICAgICMgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiAgICAweDA0MzA6IDB4MDBhMCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBBCiAgICAweDA0MzE6IDB4MDBhMSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgMHgwNDMyOiAweDAwYTIsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKICAgIDB4MDQzMzogMHgwMGEzLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQogICAgMHgwNDM0OiAweDAwYTQsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgIDB4MDQzNTogMHgwMGE1LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCiAgICAweDA0MzY6IDB4MDBhNiwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKICAgIDB4MDQzNzogMHgwMGE3LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAweDA0Mzg6IDB4MDBhOCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBJCiAgICAweDA0Mzk6IDB4MDBhOSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCiAgICAweDA0M2E6IDB4MDBhYSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgMHgwNDNiOiAweDAwYWIsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKICAgIDB4MDQzYzogMHgwMGFjLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCiAgICAweDA0M2Q6IDB4MDBhZCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgMHgwNDNlOiAweDAwYWUsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwogICAgMHgwNDNmOiAweDAwYWYsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKICAgIDB4MDQ0MDogMHgwMGUwLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiAgICAweDA0NDE6IDB4MDBlMSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwogICAgMHgwNDQyOiAweDAwZTIsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKICAgIDB4MDQ0MzogMHgwMGUzLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKICAgIDB4MDQ0NDogMHgwMGU0LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCiAgICAweDA0NDU6IDB4MDBlNSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQQogICAgMHgwNDQ2OiAweDAwZTYsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCiAgICAweDA0NDc6IDB4MDBlNywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKICAgIDB4MDQ0ODogMHgwMGU4LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQogICAgMHgwNDQ5OiAweDAwZTksICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKICAgIDB4MDQ0YTogMHgwMGVhLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgogICAgMHgwNDRiOiAweDAwZWIsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQogICAgMHgwNDRjOiAweDAwZWMsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCiAgICAweDA0NGQ6IDB4MDBlZCwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBFCiAgICAweDA0NGU6IDB4MDBlZSwgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBZVQogICAgMHgwNDRmOiAweDAwZWYsICAgICAjICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKICAgIDB4MDQ1MTogMHgwMGYxLCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiAgICAweDA0NTQ6IDB4MDBmMywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgIDB4MDQ1NzogMHgwMGY1LCAgICAgIyAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJCiAgICAweDA0NWU6IDB4MDBmNywgICAgICMgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVCiAgICAweDIxMTY6IDB4MDBmYywgICAgICMgIE5VTUVSTyBTSUdOCiAgICAweDIyMTk6IDB4MDBmOSwgICAgICMgIEJVTExFVCBPUEVSQVRPUgogICAgMHgyMjFhOiAweDAwZmIsICAgICAjICBTUVVBUkUgUk9PVAogICAgMHgyNTAwOiAweDAwYzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgyNTAyOiAweDAwYjMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgIDB4MjUwYzogMHgwMGRhLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDI1MTA6IDB4MDBiZiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUCiAgICAweDI1MTQ6IDB4MDBjMCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgIDB4MjUxODogMHgwMGQ5LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAweDI1MWM6IDB4MDBjMywgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjUyNDogMHgwMGI0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAweDI1MmM6IDB4MDBjMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAweDI1MzQ6IDB4MDBjMSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTNjOiAweDAwYzUsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU1MDogMHgwMGNkLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDI1NTE6IDB4MDBiYSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgIDB4MjU1MjogMHgwMGQ1LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1MzogMHgwMGQ2LCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1NDogMHgwMGM5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAogICAgMHgyNTU1OiAweDAwYjgsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NTY6IDB4MDBiNywgICAgICMgIEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1NzogMHgwMGJiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDI1NTg6IDB4MDBkNCwgICAgICMgIEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgMHgyNTU5OiAweDAwZDMsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgIDB4MjU1YTogMHgwMGM4LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKICAgIDB4MjU1YjogMHgwMGJlLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgIDB4MjU1YzogMHgwMGJkLCAgICAgIyAgQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgIDB4MjU1ZDogMHgwMGJjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAogICAgMHgyNTVlOiAweDAwYzYsICAgICAjICBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgIDB4MjU1ZjogMHgwMGM3LCAgICAgIyAgQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAweDI1NjA6IDB4MDBjYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1NjE6IDB4MDBiNSwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAweDI1NjI6IDB4MDBiNiwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCiAgICAweDI1NjM6IDB4MDBiOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MjU2NDogMHgwMGQxLCAgICAgIyAgQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY1OiAweDAwZDIsICAgICAjICBCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NjY6IDB4MDBjYiwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTY3OiAweDAwY2YsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgMHgyNTY4OiAweDAwZDAsICAgICAjICBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQogICAgMHgyNTY5OiAweDAwY2EsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NmE6IDB4MDBkOCwgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAweDI1NmI6IDB4MDBkNywgICAgICMgIEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAweDI1NmM6IDB4MDBjZSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MjU4MDogMHgwMGRmLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgyNTg0OiAweDAwZGMsICAgICAjICBMT1dFUiBIQUxGIEJMT0NLCiAgICAweDI1ODg6IDB4MDBkYiwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MjU4YzogMHgwMGRkLCAgICAgIyAgTEVGVCBIQUxGIEJMT0NLCiAgICAweDI1OTA6IDB4MDBkZSwgICAgICMgIFJJR0hUIEhBTEYgQkxPQ0sKICAgIDB4MjU5MTogMHgwMGIwLCAgICAgIyAgTElHSFQgU0hBREUKICAgIDB4MjU5MjogMHgwMGIxLCAgICAgIyAgTUVESVVNIFNIQURFCiAgICAweDI1OTM6IDB4MDBiMiwgICAgICMgIERBUksgU0hBREUKICAgIDB4MjVhMDogMHgwMGZlLCAgICAgIyAgQkxBQ0sgU1FVQVJFCn0KUEsDBBQAAAAAAAIgo1aLy7zZxYAAAMWAAAASAAAAZW5jb2RpbmdzL2NwODY5LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnVkVORE9SUy9NSUNTRlQvUEMvQ1A4NjkuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwODY5JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgojIyMgRGVjb2RpbmcgTWFwCgpkZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCmRlY29kaW5nX21hcC51cGRhdGUoewogICAgMHgwMDgwOiBOb25lLCAgICAgICAjICBVTkRFRklORUQKICAgIDB4MDA4MTogTm9uZSwgICAgICAgIyAgVU5ERUZJTkVECiAgICAweDAwODI6IE5vbmUsICAgICAgICMgIFVOREVGSU5FRAogICAgMHgwMDgzOiBOb25lLCAgICAgICAjICBVTkRFRklORUQKICAgIDB4MDA4NDogTm9uZSwgICAgICAgIyAgVU5ERUZJTkVECiAgICAweDAwODU6IE5vbmUsICAgICAgICMgIFVOREVGSU5FRAogICAgMHgwMDg2OiAweDAzODYsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TCiAgICAweDAwODc6IE5vbmUsICAgICAgICMgIFVOREVGSU5FRAogICAgMHgwMDg4OiAweDAwYjcsICAgICAjICBNSURETEUgRE9UCiAgICAweDAwODk6IDB4MDBhYywgICAgICMgIE5PVCBTSUdOCiAgICAweDAwOGE6IDB4MDBhNiwgICAgICMgIEJST0tFTiBCQVIKICAgIDB4MDA4YjogMHgyMDE4LCAgICAgIyAgTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDA4YzogMHgyMDE5LCAgICAgIyAgUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwOGQ6IDB4MDM4OCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgMHgwMDhlOiAweDIwMTUsICAgICAjICBIT1JJWk9OVEFMIEJBUgogICAgMHgwMDhmOiAweDAzODksICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBUT05PUwogICAgMHgwMDkwOiAweDAzOGEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVE9OT1MKICAgIDB4MDA5MTogMHgwM2FhLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQQogICAgMHgwMDkyOiAweDAzOGMsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgIDB4MDA5MzogTm9uZSwgICAgICAgIyAgVU5ERUZJTkVECiAgICAweDAwOTQ6IE5vbmUsICAgICAgICMgIFVOREVGSU5FRAogICAgMHgwMDk1OiAweDAzOGUsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKICAgIDB4MDA5NjogMHgwM2FiLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQQogICAgMHgwMDk3OiAweDAwYTksICAgICAjICBDT1BZUklHSFQgU0lHTgogICAgMHgwMDk4OiAweDAzOGYsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiAgICAweDAwOTk6IDB4MDBiMiwgICAgICMgIFNVUEVSU0NSSVBUIFRXTwogICAgMHgwMDlhOiAweDAwYjMsICAgICAjICBTVVBFUlNDUklQVCBUSFJFRQogICAgMHgwMDliOiAweDAzYWMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUwogICAgMHgwMDljOiAweDAwYTMsICAgICAjICBQT1VORCBTSUdOCiAgICAweDAwOWQ6IDB4MDNhZCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1MKICAgIDB4MDA5ZTogMHgwM2FlLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TCiAgICAweDAwOWY6IDB4MDNhZiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVE9OT1MKICAgIDB4MDBhMDogMHgwM2NhLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EKICAgIDB4MDBhMTogMHgwMzkwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TCiAgICAweDAwYTI6IDB4MDNjYywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgIDB4MDBhMzogMHgwM2NkLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUwogICAgMHgwMGE0OiAweDAzOTEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQQogICAgMHgwMGE1OiAweDAzOTIsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBCRVRBCiAgICAweDAwYTY6IDB4MDM5MywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAweDAwYTc6IDB4MDM5NCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBCiAgICAweDAwYTg6IDB4MDM5NSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04KICAgIDB4MDBhOTogMHgwMzk2LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQQogICAgMHgwMGFhOiAweDAzOTcsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEKICAgIDB4MDBhYjogMHgwMGJkLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAweDAwYWM6IDB4MDM5OCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAweDAwYWQ6IDB4MDM5OSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEKICAgIDB4MDBhZTogMHgwMGFiLCAgICAgIyAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBhZjogMHgwMGJiLCAgICAgIyAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYjA6IDB4MjU5MSwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDAwYjE6IDB4MjU5MiwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgwMGIyOiAweDI1OTMsICAgICAjICBEQVJLIFNIQURFCiAgICAweDAwYjM6IDB4MjUwMiwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgMHgwMGI0OiAweDI1MjQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKICAgIDB4MDBiNTogMHgwMzlhLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgS0FQUEEKICAgIDB4MDBiNjogMHgwMzliLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgTEFNREEKICAgIDB4MDBiNzogMHgwMzljLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgTVUKICAgIDB4MDBiODogMHgwMzlkLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgTlUKICAgIDB4MDBiOTogMHgyNTYzLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgwMGJhOiAweDI1NTEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDAwYmI6IDB4MjU1NywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgMHgwMGJjOiAweDI1NWQsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAweDAwYmQ6IDB4MDM5ZSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFhJCiAgICAweDAwYmU6IDB4MDM5ZiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04KICAgIDB4MDBiZjogMHgyNTEwLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgIDB4MDBjMDogMHgyNTE0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVAogICAgMHgwMGMxOiAweDI1MzQsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMjogMHgyNTJjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjMzogMHgyNTFjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgMHgwMGM0OiAweDI1MDAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTAogICAgMHgwMGM1OiAweDI1M2MsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjNjogMHgwM2EwLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEkKICAgIDB4MDBjNzogMHgwM2ExLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUkhPCiAgICAweDAwYzg6IDB4MjU1YSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDAwYzk6IDB4MjU1NCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MDBjYTogMHgyNTY5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgwMGNiOiAweDI1NjYsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MDBjYzogMHgyNTYwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MDBjZDogMHgyNTUwLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAweDAwY2U6IDB4MjU2YywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgIDB4MDBjZjogMHgwM2EzLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKICAgIDB4MDBkMDogMHgwM2E0LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEFVCiAgICAweDAwZDE6IDB4MDNhNSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04KICAgIDB4MDBkMjogMHgwM2E2LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAweDAwZDM6IDB4MDNhNywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIENISQogICAgMHgwMGQ0OiAweDAzYTgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBQU0kKICAgIDB4MDBkNTogMHgwM2E5LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKICAgIDB4MDBkNjogMHgwM2IxLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAweDAwZDc6IDB4MDNiMiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBCRVRBCiAgICAweDAwZDg6IDB4MDNiMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBHQU1NQQogICAgMHgwMGQ5OiAweDI1MTgsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgIDB4MDBkYTogMHgyNTBjLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAweDAwZGI6IDB4MjU4OCwgICAgICMgIEZVTEwgQkxPQ0sKICAgIDB4MDBkYzogMHgyNTg0LCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgwMGRkOiAweDAzYjQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKICAgIDB4MDBkZTogMHgwM2I1LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KICAgIDB4MDBkZjogMHgyNTgwLCAgICAgIyAgVVBQRVIgSEFMRiBCTE9DSwogICAgMHgwMGUwOiAweDAzYjYsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgWkVUQQogICAgMHgwMGUxOiAweDAzYjcsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVRBCiAgICAweDAwZTI6IDB4MDNiOCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUSEVUQQogICAgMHgwMGUzOiAweDAzYjksICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQQogICAgMHgwMGU0OiAweDAzYmEsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgS0FQUEEKICAgIDB4MDBlNTogMHgwM2JiLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIExBTURBCiAgICAweDAwZTY6IDB4MDNiYywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBNVQogICAgMHgwMGU3OiAweDAzYmQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgTlUKICAgIDB4MDBlODogMHgwM2JlLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFhJCiAgICAweDAwZTk6IDB4MDNiZiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OCiAgICAweDAwZWE6IDB4MDNjMCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgMHgwMGViOiAweDAzYzEsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUkhPCiAgICAweDAwZWM6IDB4MDNjMywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgMHgwMGVkOiAweDAzYzIsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRklOQUwgU0lHTUEKICAgIDB4MDBlZTogMHgwM2M0LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgMHgwMGVmOiAweDAzODQsICAgICAjICBHUkVFSyBUT05PUwogICAgMHgwMGYwOiAweDAwYWQsICAgICAjICBTT0ZUIEhZUEhFTgogICAgMHgwMGYxOiAweDAwYjEsICAgICAjICBQTFVTLU1JTlVTIFNJR04KICAgIDB4MDBmMjogMHgwM2M1LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04KICAgIDB4MDBmMzogMHgwM2M2LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgMHgwMGY0OiAweDAzYzcsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQ0hJCiAgICAweDAwZjU6IDB4MDBhNywgICAgICMgIFNFQ1RJT04gU0lHTgogICAgMHgwMGY2OiAweDAzYzgsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUFNJCiAgICAweDAwZjc6IDB4MDM4NSwgICAgICMgIEdSRUVLIERJQUxZVElLQSBUT05PUwogICAgMHgwMGY4OiAweDAwYjAsICAgICAjICBERUdSRUUgU0lHTgogICAgMHgwMGY5OiAweDAwYTgsICAgICAjICBESUFFUkVTSVMKICAgIDB4MDBmYTogMHgwM2M5LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBCiAgICAweDAwZmI6IDB4MDNjYiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBCiAgICAweDAwZmM6IDB4MDNiMCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBUT05PUwogICAgMHgwMGZkOiAweDAzY2UsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUwogICAgMHgwMGZlOiAweDI1YTAsICAgICAjICBCTEFDSyBTUVVBUkUKICAgIDB4MDBmZjogMHgwMGEwLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UKfSkKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDAwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDAwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDAwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDAwMDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDAwMDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDAwMDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwMDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwMDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDAwMDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MDAwYSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwMDBiIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwMDBjIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDAwMGQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MDAwZSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwMDBmIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MDAxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MDAxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgwMDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDAwMTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgwMDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgwMDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MDAxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MDAxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MDAxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgwMDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgwMDFhIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgwMDFiIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDAwMWMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgwMDFkIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDAwMWUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDAwMWYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgwMDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MDAyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MDAyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDAwMjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgwMDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MDAyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDAwMjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDAwMjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDAwMjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgwMDJhIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MDAyYiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgwMDJjIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gREVMRVRFCiAgICAnXHVmZmZlJyAgICMgIDB4MDA4MCAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHgwMDgxIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweDAwODIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4MDA4MyAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHgwMDg0IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweDAwODUgLT4gVU5ERUZJTkVECiAgICAnXHUwMzg2JyAgICMgIDB4MDA4NiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TCiAgICAnXHVmZmZlJyAgICMgIDB4MDA4NyAtPiBVTkRFRklORUQKICAgICdceGI3JyAgICAgIyAgMHgwMDg4IC0+IE1JRERMRSBET1QKICAgICdceGFjJyAgICAgIyAgMHgwMDg5IC0+IE5PVCBTSUdOCiAgICAnXHhhNicgICAgICMgIDB4MDA4YSAtPiBCUk9LRU4gQkFSCiAgICAnXHUyMDE4JyAgICMgIDB4MDA4YiAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweDAwOGMgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMzg4JyAgICMgIDB4MDA4ZCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1MKICAgICdcdTIwMTUnICAgIyAgMHgwMDhlIC0+IEhPUklaT05UQUwgQkFSCiAgICAnXHUwMzg5JyAgICMgIDB4MDA4ZiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBUT05PUwogICAgJ1x1MDM4YScgICAjICAweDAwOTAgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TCiAgICAnXHUwM2FhJyAgICMgIDB4MDA5MSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAnXHUwMzhjJyAgICMgIDB4MDA5MiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgICdcdWZmZmUnICAgIyAgMHgwMDkzIC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweDAwOTQgLT4gVU5ERUZJTkVECiAgICAnXHUwMzhlJyAgICMgIDB4MDA5NSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKICAgICdcdTAzYWInICAgIyAgMHgwMDk2IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgICdceGE5JyAgICAgIyAgMHgwMDk3IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHUwMzhmJyAgICMgIDB4MDA5OCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiAgICAnXHhiMicgICAgICMgIDB4MDA5OSAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGIzJyAgICAgIyAgMHgwMDlhIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHUwM2FjJyAgICMgIDB4MDA5YiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUwogICAgJ1x4YTMnICAgICAjICAweDAwOWMgLT4gUE9VTkQgU0lHTgogICAgJ1x1MDNhZCcgICAjICAweDAwOWQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgJ1x1MDNhZScgICAjICAweDAwOWUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TCiAgICAnXHUwM2FmJyAgICMgIDB4MDA5ZiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TCiAgICAnXHUwM2NhJyAgICMgIDB4MDBhMCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQQogICAgJ1x1MDM5MCcgICAjICAweDAwYTEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TCiAgICAnXHUwM2NjJyAgICMgIDB4MDBhMiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2NkJyAgICMgIDB4MDBhMyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TCiAgICAnXHUwMzkxJyAgICMgIDB4MDBhNCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQQogICAgJ1x1MDM5MicgICAjICAweDAwYTUgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQkVUQQogICAgJ1x1MDM5MycgICAjICAweDAwYTYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUEKICAgICdcdTAzOTQnICAgIyAgMHgwMGE3IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBCiAgICAnXHUwMzk1JyAgICMgIDB4MDBhOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OCiAgICAnXHUwMzk2JyAgICMgIDB4MDBhOSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBaRVRBCiAgICAnXHUwMzk3JyAgICMgIDB4MDBhYSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEKICAgICdceGJkJyAgICAgIyAgMHgwMGFiIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x1MDM5OCcgICAjICAweDAwYWMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEEKICAgICdcdTAzOTknICAgIyAgMHgwMGFkIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEKICAgICdceGFiJyAgICAgIyAgMHgwMGFlIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4MDBhZiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTI1OTEnICAgIyAgMHgwMGIwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICMgIDB4MDBiMSAtPiBNRURJVU0gU0hBREUKICAgICdcdTI1OTMnICAgIyAgMHgwMGIyIC0+IERBUksgU0hBREUKICAgICdcdTI1MDInICAgIyAgMHgwMGIzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAogICAgJ1x1MjUyNCcgICAjICAweDAwYjQgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUwMzlhJyAgICMgIDB4MDBiNSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQQogICAgJ1x1MDM5YicgICAjICAweDAwYjYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgTEFNREEKICAgICdcdTAzOWMnICAgIyAgMHgwMGI3IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE1VCiAgICAnXHUwMzlkJyAgICMgIDB4MDBiOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBOVQogICAgJ1x1MjU2MycgICAjICAweDAwYjkgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjU1MScgICAjICAweDAwYmEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1NycgICAjICAweDAwYmIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAnXHUyNTVkJyAgICMgIDB4MDBiYyAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHUwMzllJyAgICMgIDB4MDBiZCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBYSQogICAgJ1x1MDM5ZicgICAjICAweDAwYmUgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTgogICAgJ1x1MjUxMCcgICAjICAweDAwYmYgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgICdcdTI1MTQnICAgIyAgMHgwMGMwIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgICdcdTI1MzQnICAgIyAgMHgwMGMxIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjUyYycgICAjICAweDAwYzIgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1MWMnICAgIyAgMHgwMGMzIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1MDAnICAgIyAgMHgwMGM0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTNjJyAgICMgIDB4MDBjNSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTAzYTAnICAgIyAgMHgwMGM2IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFBJCiAgICAnXHUwM2ExJyAgICMgIDB4MDBjNyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE8KICAgICdcdTI1NWEnICAgIyAgMHgwMGM4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTU0JyAgICMgIDB4MDBjOSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTY5JyAgICMgIDB4MDBjYSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTY2JyAgICMgIDB4MDBjYiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjAnICAgIyAgMHgwMGNjIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTUwJyAgICMgIDB4MDBjZCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUwKICAgICdcdTI1NmMnICAgIyAgMHgwMGNlIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTAzYTMnICAgIyAgMHgwMGNmIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAnXHUwM2E0JyAgICMgIDB4MDBkMCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVUKICAgICdcdTAzYTUnICAgIyAgMHgwMGQxIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04KICAgICdcdTAzYTYnICAgIyAgMHgwMGQyIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgJ1x1MDNhNycgICAjICAweDAwZDMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJCiAgICAnXHUwM2E4JyAgICMgIDB4MDBkNCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBQU0kKICAgICdcdTAzYTknICAgIyAgMHgwMGQ1IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAnXHUwM2IxJyAgICMgIDB4MDBkNiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEKICAgICdcdTAzYjInICAgIyAgMHgwMGQ3IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBCRVRBCiAgICAnXHUwM2IzJyAgICMgIDB4MDBkOCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgR0FNTUEKICAgICdcdTI1MTgnICAgIyAgMHgwMGQ5IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgJ1x1MjUwYycgICAjICAweDAwZGEgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTg4JyAgICMgIDB4MDBkYiAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4MDBkYyAtPiBMT1dFUiBIQUxGIEJMT0NLCiAgICAnXHUwM2I0JyAgICMgIDB4MDBkZCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKICAgICdcdTAzYjUnICAgIyAgMHgwMGRlIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAnXHUyNTgwJyAgICMgIDB4MDBkZiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHUwM2I2JyAgICMgIDB4MDBlMCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgWkVUQQogICAgJ1x1MDNiNycgICAjICAweDAwZTEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVUQQogICAgJ1x1MDNiOCcgICAjICAweDAwZTIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFRIRVRBCiAgICAnXHUwM2I5JyAgICMgIDB4MDBlMyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQQogICAgJ1x1MDNiYScgICAjICAweDAwZTQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEtBUFBBCiAgICAnXHUwM2JiJyAgICMgIDB4MDBlNSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgTEFNREEKICAgICdcdTAzYmMnICAgIyAgMHgwMGU2IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBNVQogICAgJ1x1MDNiZCcgICAjICAweDAwZTcgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE5VCiAgICAnXHUwM2JlJyAgICMgIDB4MDBlOCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgWEkKICAgICdcdTAzYmYnICAgIyAgMHgwMGU5IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OCiAgICAnXHUwM2MwJyAgICMgIDB4MDBlYSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgICdcdTAzYzEnICAgIyAgMHgwMGViIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBSSE8KICAgICdcdTAzYzMnICAgIyAgMHgwMGVjIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQogICAgJ1x1MDNjMicgICAjICAweDAwZWQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEZJTkFMIFNJR01BCiAgICAnXHUwM2M0JyAgICMgIDB4MDBlZSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVEFVCiAgICAnXHUwMzg0JyAgICMgIDB4MDBlZiAtPiBHUkVFSyBUT05PUwogICAgJ1x4YWQnICAgICAjICAweDAwZjAgLT4gU09GVCBIWVBIRU4KICAgICdceGIxJyAgICAgIyAgMHgwMGYxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x1MDNjNScgICAjICAweDAwZjIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04KICAgICdcdTAzYzYnICAgIyAgMHgwMGYzIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgICdcdTAzYzcnICAgIyAgMHgwMGY0IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBDSEkKICAgICdceGE3JyAgICAgIyAgMHgwMGY1IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MDNjOCcgICAjICAweDAwZjYgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBTSQogICAgJ1x1MDM4NScgICAjICAweDAwZjcgLT4gR1JFRUsgRElBTFlUSUtBIFRPTk9TCiAgICAnXHhiMCcgICAgICMgIDB4MDBmOCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YTgnICAgICAjICAweDAwZjkgLT4gRElBRVJFU0lTCiAgICAnXHUwM2M5JyAgICMgIDB4MDBmYSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EKICAgICdcdTAzY2InICAgIyAgMHgwMGZiIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBCiAgICAnXHUwM2IwJyAgICMgIDB4MDBmYyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKICAgICdcdTAzY2UnICAgIyAgMHgwMGZkIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiAgICAnXHUyNWEwJyAgICMgIDB4MDBmZSAtPiBCTEFDSyBTUVVBUkUKICAgICdceGEwJyAgICAgIyAgMHgwMGZmIC0+IE5PLUJSRUFLIFNQQUNFCikKCiMjIyBFbmNvZGluZyBNYXAKCmVuY29kaW5nX21hcCA9IHsKICAgIDB4MDAwMDogMHgwMDAwLCAgICAgIyAgTlVMTAogICAgMHgwMDAxOiAweDAwMDEsICAgICAjICBTVEFSVCBPRiBIRUFESU5HCiAgICAweDAwMDI6IDB4MDAwMiwgICAgICMgIFNUQVJUIE9GIFRFWFQKICAgIDB4MDAwMzogMHgwMDAzLCAgICAgIyAgRU5EIE9GIFRFWFQKICAgIDB4MDAwNDogMHgwMDA0LCAgICAgIyAgRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgMHgwMDA1OiAweDAwMDUsICAgICAjICBFTlFVSVJZCiAgICAweDAwMDY6IDB4MDAwNiwgICAgICMgIEFDS05PV0xFREdFCiAgICAweDAwMDc6IDB4MDAwNywgICAgICMgIEJFTEwKICAgIDB4MDAwODogMHgwMDA4LCAgICAgIyAgQkFDS1NQQUNFCiAgICAweDAwMDk6IDB4MDAwOSwgICAgICMgIEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgMHgwMDBhOiAweDAwMGEsICAgICAjICBMSU5FIEZFRUQKICAgIDB4MDAwYjogMHgwMDBiLCAgICAgIyAgVkVSVElDQUwgVEFCVUxBVElPTgogICAgMHgwMDBjOiAweDAwMGMsICAgICAjICBGT1JNIEZFRUQKICAgIDB4MDAwZDogMHgwMDBkLCAgICAgIyAgQ0FSUklBR0UgUkVUVVJOCiAgICAweDAwMGU6IDB4MDAwZSwgICAgICMgIFNISUZUIE9VVAogICAgMHgwMDBmOiAweDAwMGYsICAgICAjICBTSElGVCBJTgogICAgMHgwMDEwOiAweDAwMTAsICAgICAjICBEQVRBIExJTksgRVNDQVBFCiAgICAweDAwMTE6IDB4MDAxMSwgICAgICMgIERFVklDRSBDT05UUk9MIE9ORQogICAgMHgwMDEyOiAweDAwMTIsICAgICAjICBERVZJQ0UgQ09OVFJPTCBUV08KICAgIDB4MDAxMzogMHgwMDEzLCAgICAgIyAgREVWSUNFIENPTlRST0wgVEhSRUUKICAgIDB4MDAxNDogMHgwMDE0LCAgICAgIyAgREVWSUNFIENPTlRST0wgRk9VUgogICAgMHgwMDE1OiAweDAwMTUsICAgICAjICBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgMHgwMDE2OiAweDAwMTYsICAgICAjICBTWU5DSFJPTk9VUyBJRExFCiAgICAweDAwMTc6IDB4MDAxNywgICAgICMgIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgIDB4MDAxODogMHgwMDE4LCAgICAgIyAgQ0FOQ0VMCiAgICAweDAwMTk6IDB4MDAxOSwgICAgICMgIEVORCBPRiBNRURJVU0KICAgIDB4MDAxYTogMHgwMDFhLCAgICAgIyAgU1VCU1RJVFVURQogICAgMHgwMDFiOiAweDAwMWIsICAgICAjICBFU0NBUEUKICAgIDB4MDAxYzogMHgwMDFjLCAgICAgIyAgRklMRSBTRVBBUkFUT1IKICAgIDB4MDAxZDogMHgwMDFkLCAgICAgIyAgR1JPVVAgU0VQQVJBVE9SCiAgICAweDAwMWU6IDB4MDAxZSwgICAgICMgIFJFQ09SRCBTRVBBUkFUT1IKICAgIDB4MDAxZjogMHgwMDFmLCAgICAgIyAgVU5JVCBTRVBBUkFUT1IKICAgIDB4MDAyMDogMHgwMDIwLCAgICAgIyAgU1BBQ0UKICAgIDB4MDAyMTogMHgwMDIxLCAgICAgIyAgRVhDTEFNQVRJT04gTUFSSwogICAgMHgwMDIyOiAweDAwMjIsICAgICAjICBRVU9UQVRJT04gTUFSSwogICAgMHgwMDIzOiAweDAwMjMsICAgICAjICBOVU1CRVIgU0lHTgogICAgMHgwMDI0OiAweDAwMjQsICAgICAjICBET0xMQVIgU0lHTgogICAgMHgwMDI1OiAweDAwMjUsICAgICAjICBQRVJDRU5UIFNJR04KICAgIDB4MDAyNjogMHgwMDI2LCAgICAgIyAgQU1QRVJTQU5ECiAgICAweDAwMjc6IDB4MDAyNywgICAgICMgIEFQT1NUUk9QSEUKICAgIDB4MDAyODogMHgwMDI4LCAgICAgIyAgTEVGVCBQQVJFTlRIRVNJUwogICAgMHgwMDI5OiAweDAwMjksICAgICAjICBSSUdIVCBQQVJFTlRIRVNJUwogICAgMHgwMDJhOiAweDAwMmEsICAgICAjICBBU1RFUklTSwogICAgMHgwMDJiOiAweDAwMmIsICAgICAjICBQTFVTIFNJR04KICAgIDB4MDAyYzogMHgwMDJjLCAgICAgIyAgQ09NTUEKICAgIDB4MDAyZDogMHgwMDJkLCAgICAgIyAgSFlQSEVOLU1JTlVTCiAgICAweDAwMmU6IDB4MDAyZSwgICAgICMgIEZVTEwgU1RPUAogICAgMHgwMDJmOiAweDAwMmYsICAgICAjICBTT0xJRFVTCiAgICAweDAwMzA6IDB4MDAzMCwgICAgICMgIERJR0lUIFpFUk8KICAgIDB4MDAzMTogMHgwMDMxLCAgICAgIyAgRElHSVQgT05FCiAgICAweDAwMzI6IDB4MDAzMiwgICAgICMgIERJR0lUIFRXTwogICAgMHgwMDMzOiAweDAwMzMsICAgICAjICBESUdJVCBUSFJFRQogICAgMHgwMDM0OiAweDAwMzQsICAgICAjICBESUdJVCBGT1VSCiAgICAweDAwMzU6IDB4MDAzNSwgICAgICMgIERJR0lUIEZJVkUKICAgIDB4MDAzNjogMHgwMDM2LCAgICAgIyAgRElHSVQgU0lYCiAgICAweDAwMzc6IDB4MDAzNywgICAgICMgIERJR0lUIFNFVkVOCiAgICAweDAwMzg6IDB4MDAzOCwgICAgICMgIERJR0lUIEVJR0hUCiAgICAweDAwMzk6IDB4MDAzOSwgICAgICMgIERJR0lUIE5JTkUKICAgIDB4MDAzYTogMHgwMDNhLCAgICAgIyAgQ09MT04KICAgIDB4MDAzYjogMHgwMDNiLCAgICAgIyAgU0VNSUNPTE9OCiAgICAweDAwM2M6IDB4MDAzYywgICAgICMgIExFU1MtVEhBTiBTSUdOCiAgICAweDAwM2Q6IDB4MDAzZCwgICAgICMgIEVRVUFMUyBTSUdOCiAgICAweDAwM2U6IDB4MDAzZSwgICAgICMgIEdSRUFURVItVEhBTiBTSUdOCiAgICAweDAwM2Y6IDB4MDAzZiwgICAgICMgIFFVRVNUSU9OIE1BUksKICAgIDB4MDA0MDogMHgwMDQwLCAgICAgIyAgQ09NTUVSQ0lBTCBBVAogICAgMHgwMDQxOiAweDAwNDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAweDAwNDI6IDB4MDA0MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgIDB4MDA0MzogMHgwMDQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgMHgwMDQ0OiAweDAwNDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAweDAwNDU6IDB4MDA0NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgIDB4MDA0NjogMHgwMDQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgMHgwMDQ3OiAweDAwNDcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAweDAwNDg6IDB4MDA0OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgIDB4MDA0OTogMHgwMDQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgMHgwMDRhOiAweDAwNGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAweDAwNGI6IDB4MDA0YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgIDB4MDA0YzogMHgwMDRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgMHgwMDRkOiAweDAwNGQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAweDAwNGU6IDB4MDA0ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgIDB4MDA0ZjogMHgwMDRmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwMDUwOiAweDAwNTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAweDAwNTE6IDB4MDA1MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgIDB4MDA1MjogMHgwMDUyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgMHgwMDUzOiAweDAwNTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAweDAwNTQ6IDB4MDA1NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgIDB4MDA1NTogMHgwMDU1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgMHgwMDU2OiAweDAwNTYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAweDAwNTc6IDB4MDA1NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgIDB4MDA1ODogMHgwMDU4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgMHgwMDU5OiAweDAwNTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAweDAwNWE6IDB4MDA1YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgIDB4MDA1YjogMHgwMDViLCAgICAgIyAgTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgMHgwMDVjOiAweDAwNWMsICAgICAjICBSRVZFUlNFIFNPTElEVVMKICAgIDB4MDA1ZDogMHgwMDVkLCAgICAgIyAgUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgIDB4MDA1ZTogMHgwMDVlLCAgICAgIyAgQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgIDB4MDA1ZjogMHgwMDVmLCAgICAgIyAgTE9XIExJTkUKICAgIDB4MDA2MDogMHgwMDYwLCAgICAgIyAgR1JBVkUgQUNDRU5UCiAgICAweDAwNjE6IDB4MDA2MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAweDAwNjI6IDB4MDA2MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAweDAwNjM6IDB4MDA2MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAweDAwNjQ6IDB4MDA2NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBECiAgICAweDAwNjU6IDB4MDA2NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAweDAwNjY6IDB4MDA2NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAweDAwNjc6IDB4MDA2NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAweDAwNjg6IDB4MDA2OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBICiAgICAweDAwNjk6IDB4MDA2OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAweDAwNmE6IDB4MDA2YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAweDAwNmI6IDB4MDA2YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAweDAwNmM6IDB4MDA2YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAweDAwNmQ6IDB4MDA2ZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAweDAwNmU6IDB4MDA2ZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDAwNmY6IDB4MDA2ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAweDAwNzA6IDB4MDA3MCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAweDAwNzE6IDB4MDA3MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAweDAwNzI6IDB4MDA3MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAweDAwNzM6IDB4MDA3MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAweDAwNzQ6IDB4MDA3NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAweDAwNzU6IDB4MDA3NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAweDAwNzY6IDB4MDA3NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAweDAwNzc6IDB4MDA3NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAweDAwNzg6IDB4MDA3OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAweDAwNzk6IDB4MDA3OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAweDAwN2E6IDB4MDA3YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAweDAwN2I6IDB4MDA3YiwgICAgICMgIExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgMHgwMDdjOiAweDAwN2MsICAgICAjICBWRVJUSUNBTCBMSU5FCiAgICAweDAwN2Q6IDB4MDA3ZCwgICAgICMgIFJJR0hUIENVUkxZIEJSQUNLRVQKICAgIDB4MDA3ZTogMHgwMDdlLCAgICAgIyAgVElMREUKICAgIDB4MDA3ZjogMHgwMDdmLCAgICAgIyAgREVMRVRFCiAgICAweDAwYTA6IDB4MDBmZiwgICAgICMgIE5PLUJSRUFLIFNQQUNFCiAgICAweDAwYTM6IDB4MDA5YywgICAgICMgIFBPVU5EIFNJR04KICAgIDB4MDBhNjogMHgwMDhhLCAgICAgIyAgQlJPS0VOIEJBUgogICAgMHgwMGE3OiAweDAwZjUsICAgICAjICBTRUNUSU9OIFNJR04KICAgIDB4MDBhODogMHgwMGY5LCAgICAgIyAgRElBRVJFU0lTCiAgICAweDAwYTk6IDB4MDA5NywgICAgICMgIENPUFlSSUdIVCBTSUdOCiAgICAweDAwYWI6IDB4MDBhZSwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDAwYWM6IDB4MDA4OSwgICAgICMgIE5PVCBTSUdOCiAgICAweDAwYWQ6IDB4MDBmMCwgICAgICMgIFNPRlQgSFlQSEVOCiAgICAweDAwYjA6IDB4MDBmOCwgICAgICMgIERFR1JFRSBTSUdOCiAgICAweDAwYjE6IDB4MDBmMSwgICAgICMgIFBMVVMtTUlOVVMgU0lHTgogICAgMHgwMGIyOiAweDAwOTksICAgICAjICBTVVBFUlNDUklQVCBUV08KICAgIDB4MDBiMzogMHgwMDlhLCAgICAgIyAgU1VQRVJTQ1JJUFQgVEhSRUUKICAgIDB4MDBiNzogMHgwMDg4LCAgICAgIyAgTUlERExFIERPVAogICAgMHgwMGJiOiAweDAwYWYsICAgICAjICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MDBiZDogMHgwMGFiLCAgICAgIyAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAweDAzODQ6IDB4MDBlZiwgICAgICMgIEdSRUVLIFRPTk9TCiAgICAweDAzODU6IDB4MDBmNywgICAgICMgIEdSRUVLIERJQUxZVElLQSBUT05PUwogICAgMHgwMzg2OiAweDAwODYsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TCiAgICAweDAzODg6IDB4MDA4ZCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgMHgwMzg5OiAweDAwOGYsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBUT05PUwogICAgMHgwMzhhOiAweDAwOTAsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVE9OT1MKICAgIDB4MDM4YzogMHgwMDkyLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiAgICAweDAzOGU6IDB4MDA5NSwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUwogICAgMHgwMzhmOiAweDAwOTgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiAgICAweDAzOTA6IDB4MDBhMSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUwogICAgMHgwMzkxOiAweDAwYTQsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQQogICAgMHgwMzkyOiAweDAwYTUsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBCRVRBCiAgICAweDAzOTM6IDB4MDBhNiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAweDAzOTQ6IDB4MDBhNywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBCiAgICAweDAzOTU6IDB4MDBhOCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04KICAgIDB4MDM5NjogMHgwMGE5LCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQQogICAgMHgwMzk3OiAweDAwYWEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEKICAgIDB4MDM5ODogMHgwMGFjLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEEKICAgIDB4MDM5OTogMHgwMGFkLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQQogICAgMHgwMzlhOiAweDAwYjUsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQQogICAgMHgwMzliOiAweDAwYjYsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1EQQogICAgMHgwMzljOiAweDAwYjcsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBNVQogICAgMHgwMzlkOiAweDAwYjgsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBOVQogICAgMHgwMzllOiAweDAwYmQsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBYSQogICAgMHgwMzlmOiAweDAwYmUsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OCiAgICAweDAzYTA6IDB4MDBjNiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBJCiAgICAweDAzYTE6IDB4MDBjNywgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFJITwogICAgMHgwM2EzOiAweDAwY2YsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQogICAgMHgwM2E0OiAweDAwZDAsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVUKICAgIDB4MDNhNTogMHgwMGQxLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTgogICAgMHgwM2E2OiAweDAwZDIsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKICAgIDB4MDNhNzogMHgwMGQzLCAgICAgIyAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJCiAgICAweDAzYTg6IDB4MDBkNCwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFBTSQogICAgMHgwM2E5OiAweDAwZDUsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgMHgwM2FhOiAweDAwOTEsICAgICAjICBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAweDAzYWI6IDB4MDA5NiwgICAgICMgIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgIDB4MDNhYzogMHgwMDliLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKICAgIDB4MDNhZDogMHgwMDlkLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgMHgwM2FlOiAweDAwOWUsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgIDB4MDNhZjogMHgwMDlmLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUwogICAgMHgwM2IwOiAweDAwZmMsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKICAgIDB4MDNiMTogMHgwMGQ2LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAweDAzYjI6IDB4MDBkNywgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBCRVRBCiAgICAweDAzYjM6IDB4MDBkOCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBHQU1NQQogICAgMHgwM2I0OiAweDAwZGQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKICAgIDB4MDNiNTogMHgwMGRlLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KICAgIDB4MDNiNjogMHgwMGUwLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFpFVEEKICAgIDB4MDNiNzogMHgwMGUxLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEVUQQogICAgMHgwM2I4OiAweDAwZTIsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgVEhFVEEKICAgIDB4MDNiOTogMHgwMGUzLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEKICAgIDB4MDNiYTogMHgwMGU0LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIEtBUFBBCiAgICAweDAzYmI6IDB4MDBlNSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBMQU1EQQogICAgMHgwM2JjOiAweDAwZTYsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgTVUKICAgIDB4MDNiZDogMHgwMGU3LCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIE5VCiAgICAweDAzYmU6IDB4MDBlOCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBYSQogICAgMHgwM2JmOiAweDAwZTksICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTgogICAgMHgwM2MwOiAweDAwZWEsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgIDB4MDNjMTogMHgwMGViLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFJITwogICAgMHgwM2MyOiAweDAwZWQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgRklOQUwgU0lHTUEKICAgIDB4MDNjMzogMHgwMGVjLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAweDAzYzQ6IDB4MDBlZSwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgIDB4MDNjNTogMHgwMGYyLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04KICAgIDB4MDNjNjogMHgwMGYzLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgMHgwM2M3OiAweDAwZjQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgQ0hJCiAgICAweDAzYzg6IDB4MDBmNiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBQU0kKICAgIDB4MDNjOTogMHgwMGZhLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBCiAgICAweDAzY2E6IDB4MDBhMCwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAweDAzY2I6IDB4MDBmYiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBCiAgICAweDAzY2M6IDB4MDBhMiwgICAgICMgIEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgIDB4MDNjZDogMHgwMGEzLCAgICAgIyAgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUwogICAgMHgwM2NlOiAweDAwZmQsICAgICAjICBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUwogICAgMHgyMDE1OiAweDAwOGUsICAgICAjICBIT1JJWk9OVEFMIEJBUgogICAgMHgyMDE4OiAweDAwOGIsICAgICAjICBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgMHgyMDE5OiAweDAwOGMsICAgICAjICBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4MjUwMDogMHgwMGM0LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgIDB4MjUwMjogMHgwMGIzLCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAweDI1MGM6IDB4MDBkYSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAogICAgMHgyNTEwOiAweDAwYmYsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgMHgyNTE0OiAweDAwYzAsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAweDI1MTg6IDB4MDBkOSwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAogICAgMHgyNTFjOiAweDAwYzMsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAweDI1MjQ6IDB4MDBiNCwgICAgICMgIEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTJjOiAweDAwYzIsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTM0OiAweDAwYzEsICAgICAjICBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgIDB4MjUzYzogMHgwMGM1LCAgICAgIyAgQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1NTA6IDB4MDBjZCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgMHgyNTUxOiAweDAwYmEsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMCiAgICAweDI1NTQ6IDB4MDBjOSwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQKICAgIDB4MjU1NzogMHgwMGJiLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCiAgICAweDI1NWE6IDB4MDBjOCwgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAweDI1NWQ6IDB4MDBiYywgICAgICMgIEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgIDB4MjU2MDogMHgwMGNjLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgIDB4MjU2MzogMHgwMGI5LCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVAogICAgMHgyNTY2OiAweDAwY2IsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgIDB4MjU2OTogMHgwMGNhLCAgICAgIyAgQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgMHgyNTZjOiAweDAwY2UsICAgICAjICBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAweDI1ODA6IDB4MDBkZiwgICAgICMgIFVQUEVSIEhBTEYgQkxPQ0sKICAgIDB4MjU4NDogMHgwMGRjLCAgICAgIyAgTE9XRVIgSEFMRiBCTE9DSwogICAgMHgyNTg4OiAweDAwZGIsICAgICAjICBGVUxMIEJMT0NLCiAgICAweDI1OTE6IDB4MDBiMCwgICAgICMgIExJR0hUIFNIQURFCiAgICAweDI1OTI6IDB4MDBiMSwgICAgICMgIE1FRElVTSBTSEFERQogICAgMHgyNTkzOiAweDAwYjIsICAgICAjICBEQVJLIFNIQURFCiAgICAweDI1YTA6IDB4MDBmZSwgICAgICMgIEJMQUNLIFNRVUFSRQp9ClBLAwQUAAAAAAACIKNWgDGGpTMxAAAzMQAAEgAAAGVuY29kaW5ncy9jcDg3NC5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgY3A4NzQgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1MvQ1A4NzQuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDg3NCcsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KICAgICdcdWZmZmUnICAgIyAgMHg4MSAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4MiAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4MyAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHg4NCAtPiBVTkRFRklORUQKICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHVmZmZlJyAgICMgIDB4ODYgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4ODcgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4ODggLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4ODkgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OEEgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OEIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OEMgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OEQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OEUgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OEYgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OTAgLT4gVU5ERUZJTkVECiAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAogICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICiAgICAnXHVmZmZlJyAgICMgIDB4OTggLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OTkgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUEgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUMgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUUgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUYgLT4gVU5ERUZJTkVECiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTBlMDEnICAgIyAgMHhBMSAtPiBUSEFJIENIQVJBQ1RFUiBLTyBLQUkKICAgICdcdTBlMDInICAgIyAgMHhBMiAtPiBUSEFJIENIQVJBQ1RFUiBLSE8gS0hBSQogICAgJ1x1MGUwMycgICAjICAweEEzIC0+IFRIQUkgQ0hBUkFDVEVSIEtITyBLSFVBVAogICAgJ1x1MGUwNCcgICAjICAweEE0IC0+IFRIQUkgQ0hBUkFDVEVSIEtITyBLSFdBSQogICAgJ1x1MGUwNScgICAjICAweEE1IC0+IFRIQUkgQ0hBUkFDVEVSIEtITyBLSE9OCiAgICAnXHUwZTA2JyAgICMgIDB4QTYgLT4gVEhBSSBDSEFSQUNURVIgS0hPIFJBS0hBTkcKICAgICdcdTBlMDcnICAgIyAgMHhBNyAtPiBUSEFJIENIQVJBQ1RFUiBOR08gTkdVCiAgICAnXHUwZTA4JyAgICMgIDB4QTggLT4gVEhBSSBDSEFSQUNURVIgQ0hPIENIQU4KICAgICdcdTBlMDknICAgIyAgMHhBOSAtPiBUSEFJIENIQVJBQ1RFUiBDSE8gQ0hJTkcKICAgICdcdTBlMGEnICAgIyAgMHhBQSAtPiBUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTkcKICAgICdcdTBlMGInICAgIyAgMHhBQiAtPiBUSEFJIENIQVJBQ1RFUiBTTyBTTwogICAgJ1x1MGUwYycgICAjICAweEFDIC0+IFRIQUkgQ0hBUkFDVEVSIENITyBDSE9FCiAgICAnXHUwZTBkJyAgICMgIDB4QUQgLT4gVEhBSSBDSEFSQUNURVIgWU8gWUlORwogICAgJ1x1MGUwZScgICAjICAweEFFIC0+IFRIQUkgQ0hBUkFDVEVSIERPIENIQURBCiAgICAnXHUwZTBmJyAgICMgIDB4QUYgLT4gVEhBSSBDSEFSQUNURVIgVE8gUEFUQUsKICAgICdcdTBlMTAnICAgIyAgMHhCMCAtPiBUSEFJIENIQVJBQ1RFUiBUSE8gVEhBTgogICAgJ1x1MGUxMScgICAjICAweEIxIC0+IFRIQUkgQ0hBUkFDVEVSIFRITyBOQU5HTU9OVEhPCiAgICAnXHUwZTEyJyAgICMgIDB4QjIgLT4gVEhBSSBDSEFSQUNURVIgVEhPIFBIVVRIQU8KICAgICdcdTBlMTMnICAgIyAgMHhCMyAtPiBUSEFJIENIQVJBQ1RFUiBOTyBORU4KICAgICdcdTBlMTQnICAgIyAgMHhCNCAtPiBUSEFJIENIQVJBQ1RFUiBETyBERUsKICAgICdcdTBlMTUnICAgIyAgMHhCNSAtPiBUSEFJIENIQVJBQ1RFUiBUTyBUQU8KICAgICdcdTBlMTYnICAgIyAgMHhCNiAtPiBUSEFJIENIQVJBQ1RFUiBUSE8gVEhVTkcKICAgICdcdTBlMTcnICAgIyAgMHhCNyAtPiBUSEFJIENIQVJBQ1RFUiBUSE8gVEhBSEFOCiAgICAnXHUwZTE4JyAgICMgIDB4QjggLT4gVEhBSSBDSEFSQUNURVIgVEhPIFRIT05HCiAgICAnXHUwZTE5JyAgICMgIDB4QjkgLT4gVEhBSSBDSEFSQUNURVIgTk8gTlUKICAgICdcdTBlMWEnICAgIyAgMHhCQSAtPiBUSEFJIENIQVJBQ1RFUiBCTyBCQUlNQUkKICAgICdcdTBlMWInICAgIyAgMHhCQiAtPiBUSEFJIENIQVJBQ1RFUiBQTyBQTEEKICAgICdcdTBlMWMnICAgIyAgMHhCQyAtPiBUSEFJIENIQVJBQ1RFUiBQSE8gUEhVTkcKICAgICdcdTBlMWQnICAgIyAgMHhCRCAtPiBUSEFJIENIQVJBQ1RFUiBGTyBGQQogICAgJ1x1MGUxZScgICAjICAweEJFIC0+IFRIQUkgQ0hBUkFDVEVSIFBITyBQSEFOCiAgICAnXHUwZTFmJyAgICMgIDB4QkYgLT4gVEhBSSBDSEFSQUNURVIgRk8gRkFOCiAgICAnXHUwZTIwJyAgICMgIDB4QzAgLT4gVEhBSSBDSEFSQUNURVIgUEhPIFNBTVBIQU8KICAgICdcdTBlMjEnICAgIyAgMHhDMSAtPiBUSEFJIENIQVJBQ1RFUiBNTyBNQQogICAgJ1x1MGUyMicgICAjICAweEMyIC0+IFRIQUkgQ0hBUkFDVEVSIFlPIFlBSwogICAgJ1x1MGUyMycgICAjICAweEMzIC0+IFRIQUkgQ0hBUkFDVEVSIFJPIFJVQQogICAgJ1x1MGUyNCcgICAjICAweEM0IC0+IFRIQUkgQ0hBUkFDVEVSIFJVCiAgICAnXHUwZTI1JyAgICMgIDB4QzUgLT4gVEhBSSBDSEFSQUNURVIgTE8gTElORwogICAgJ1x1MGUyNicgICAjICAweEM2IC0+IFRIQUkgQ0hBUkFDVEVSIExVCiAgICAnXHUwZTI3JyAgICMgIDB4QzcgLT4gVEhBSSBDSEFSQUNURVIgV08gV0FFTgogICAgJ1x1MGUyOCcgICAjICAweEM4IC0+IFRIQUkgQ0hBUkFDVEVSIFNPIFNBTEEKICAgICdcdTBlMjknICAgIyAgMHhDOSAtPiBUSEFJIENIQVJBQ1RFUiBTTyBSVVNJCiAgICAnXHUwZTJhJyAgICMgIDB4Q0EgLT4gVEhBSSBDSEFSQUNURVIgU08gU1VBCiAgICAnXHUwZTJiJyAgICMgIDB4Q0IgLT4gVEhBSSBDSEFSQUNURVIgSE8gSElQCiAgICAnXHUwZTJjJyAgICMgIDB4Q0MgLT4gVEhBSSBDSEFSQUNURVIgTE8gQ0hVTEEKICAgICdcdTBlMmQnICAgIyAgMHhDRCAtPiBUSEFJIENIQVJBQ1RFUiBPIEFORwogICAgJ1x1MGUyZScgICAjICAweENFIC0+IFRIQUkgQ0hBUkFDVEVSIEhPIE5PS0hVSwogICAgJ1x1MGUyZicgICAjICAweENGIC0+IFRIQUkgQ0hBUkFDVEVSIFBBSVlBTk5PSQogICAgJ1x1MGUzMCcgICAjICAweEQwIC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgQQogICAgJ1x1MGUzMScgICAjICAweEQxIC0+IFRIQUkgQ0hBUkFDVEVSIE1BSSBIQU4tQUtBVAogICAgJ1x1MGUzMicgICAjICAweEQyIC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgQUEKICAgICdcdTBlMzMnICAgIyAgMHhEMyAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIEFNCiAgICAnXHUwZTM0JyAgICMgIDB4RDQgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBJCiAgICAnXHUwZTM1JyAgICMgIDB4RDUgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBJSQogICAgJ1x1MGUzNicgICAjICAweEQ2IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgVUUKICAgICdcdTBlMzcnICAgIyAgMHhENyAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIFVFRQogICAgJ1x1MGUzOCcgICAjICAweEQ4IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgVQogICAgJ1x1MGUzOScgICAjICAweEQ5IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgVVUKICAgICdcdTBlM2EnICAgIyAgMHhEQSAtPiBUSEFJIENIQVJBQ1RFUiBQSElOVEhVCiAgICAnXHVmZmZlJyAgICMgIDB4REIgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4REMgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4REQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4REUgLT4gVU5ERUZJTkVECiAgICAnXHUwZTNmJyAgICMgIDB4REYgLT4gVEhBSSBDVVJSRU5DWSBTWU1CT0wgQkFIVAogICAgJ1x1MGU0MCcgICAjICAweEUwIC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgRQogICAgJ1x1MGU0MScgICAjICAweEUxIC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgQUUKICAgICdcdTBlNDInICAgIyAgMHhFMiAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIE8KICAgICdcdTBlNDMnICAgIyAgMHhFMyAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1VQU4KICAgICdcdTBlNDQnICAgIyAgMHhFNCAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1BTEFJCiAgICAnXHUwZTQ1JyAgICMgIDB4RTUgLT4gVEhBSSBDSEFSQUNURVIgTEFLS0hBTkdZQU8KICAgICdcdTBlNDYnICAgIyAgMHhFNiAtPiBUSEFJIENIQVJBQ1RFUiBNQUlZQU1PSwogICAgJ1x1MGU0NycgICAjICAweEU3IC0+IFRIQUkgQ0hBUkFDVEVSIE1BSVRBSUtIVQogICAgJ1x1MGU0OCcgICAjICAweEU4IC0+IFRIQUkgQ0hBUkFDVEVSIE1BSSBFSwogICAgJ1x1MGU0OScgICAjICAweEU5IC0+IFRIQUkgQ0hBUkFDVEVSIE1BSSBUSE8KICAgICdcdTBlNGEnICAgIyAgMHhFQSAtPiBUSEFJIENIQVJBQ1RFUiBNQUkgVFJJCiAgICAnXHUwZTRiJyAgICMgIDB4RUIgLT4gVEhBSSBDSEFSQUNURVIgTUFJIENIQVRUQVdBCiAgICAnXHUwZTRjJyAgICMgIDB4RUMgLT4gVEhBSSBDSEFSQUNURVIgVEhBTlRIQUtIQVQKICAgICdcdTBlNGQnICAgIyAgMHhFRCAtPiBUSEFJIENIQVJBQ1RFUiBOSUtIQUhJVAogICAgJ1x1MGU0ZScgICAjICAweEVFIC0+IFRIQUkgQ0hBUkFDVEVSIFlBTUFLS0FOCiAgICAnXHUwZTRmJyAgICMgIDB4RUYgLT4gVEhBSSBDSEFSQUNURVIgRk9OR01BTgogICAgJ1x1MGU1MCcgICAjICAweEYwIC0+IFRIQUkgRElHSVQgWkVSTwogICAgJ1x1MGU1MScgICAjICAweEYxIC0+IFRIQUkgRElHSVQgT05FCiAgICAnXHUwZTUyJyAgICMgIDB4RjIgLT4gVEhBSSBESUdJVCBUV08KICAgICdcdTBlNTMnICAgIyAgMHhGMyAtPiBUSEFJIERJR0lUIFRIUkVFCiAgICAnXHUwZTU0JyAgICMgIDB4RjQgLT4gVEhBSSBESUdJVCBGT1VSCiAgICAnXHUwZTU1JyAgICMgIDB4RjUgLT4gVEhBSSBESUdJVCBGSVZFCiAgICAnXHUwZTU2JyAgICMgIDB4RjYgLT4gVEhBSSBESUdJVCBTSVgKICAgICdcdTBlNTcnICAgIyAgMHhGNyAtPiBUSEFJIERJR0lUIFNFVkVOCiAgICAnXHUwZTU4JyAgICMgIDB4RjggLT4gVEhBSSBESUdJVCBFSUdIVAogICAgJ1x1MGU1OScgICAjICAweEY5IC0+IFRIQUkgRElHSVQgTklORQogICAgJ1x1MGU1YScgICAjICAweEZBIC0+IFRIQUkgQ0hBUkFDVEVSIEFOR0tIQU5LSFUKICAgICdcdTBlNWInICAgIyAgMHhGQiAtPiBUSEFJIENIQVJBQ1RFUiBLSE9NVVQKICAgICdcdWZmZmUnICAgIyAgMHhGQyAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHhGRCAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHhGRSAtPiBVTkRFRklORUQKICAgICdcdWZmZmUnICAgIyAgMHhGRiAtPiBVTkRFRklORUQKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVuE66jI2MgAANjIAABIAAABlbmNvZGluZ3MvY3A4NzUucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGNwODc1IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9FQkNESUMvQ1A4NzUuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdjcDg3NScsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDljJyAgICAgIyAgMHgwNCAtPiBDT05UUk9MCiAgICAnXHQnICAgICAgICMgIDB4MDUgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXHg4NicgICAgICMgIDB4MDYgLT4gQ09OVFJPTAogICAgJ1x4N2YnICAgICAjICAweDA3IC0+IERFTEVURQogICAgJ1x4OTcnICAgICAjICAweDA4IC0+IENPTlRST0wKICAgICdceDhkJyAgICAgIyAgMHgwOSAtPiBDT05UUk9MCiAgICAnXHg4ZScgICAgICMgIDB4MEEgLT4gQ09OVFJPTAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4OWQnICAgICAjICAweDE0IC0+IENPTlRST0wKICAgICdceDg1JyAgICAgIyAgMHgxNSAtPiBDT05UUk9MCiAgICAnXHgwOCcgICAgICMgIDB4MTYgLT4gQkFDS1NQQUNFCiAgICAnXHg4NycgICAgICMgIDB4MTcgLT4gQ09OVFJPTAogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDkyJyAgICAgIyAgMHgxQSAtPiBDT05UUk9MCiAgICAnXHg4ZicgICAgICMgIDB4MUIgLT4gQ09OVFJPTAogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnXHg4MCcgICAgICMgIDB4MjAgLT4gQ09OVFJPTAogICAgJ1x4ODEnICAgICAjICAweDIxIC0+IENPTlRST0wKICAgICdceDgyJyAgICAgIyAgMHgyMiAtPiBDT05UUk9MCiAgICAnXHg4MycgICAgICMgIDB4MjMgLT4gQ09OVFJPTAogICAgJ1x4ODQnICAgICAjICAweDI0IC0+IENPTlRST0wKICAgICdcbicgICAgICAgIyAgMHgyNSAtPiBMSU5FIEZFRUQKICAgICdceDE3JyAgICAgIyAgMHgyNiAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxYicgICAgICMgIDB4MjcgLT4gRVNDQVBFCiAgICAnXHg4OCcgICAgICMgIDB4MjggLT4gQ09OVFJPTAogICAgJ1x4ODknICAgICAjICAweDI5IC0+IENPTlRST0wKICAgICdceDhhJyAgICAgIyAgMHgyQSAtPiBDT05UUk9MCiAgICAnXHg4YicgICAgICMgIDB4MkIgLT4gQ09OVFJPTAogICAgJ1x4OGMnICAgICAjICAweDJDIC0+IENPTlRST0wKICAgICdceDA1JyAgICAgIyAgMHgyRCAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MkUgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgyRiAtPiBCRUxMCiAgICAnXHg5MCcgICAgICMgIDB4MzAgLT4gQ09OVFJPTAogICAgJ1x4OTEnICAgICAjICAweDMxIC0+IENPTlRST0wKICAgICdceDE2JyAgICAgIyAgMHgzMiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHg5MycgICAgICMgIDB4MzMgLT4gQ09OVFJPTAogICAgJ1x4OTQnICAgICAjICAweDM0IC0+IENPTlRST0wKICAgICdceDk1JyAgICAgIyAgMHgzNSAtPiBDT05UUk9MCiAgICAnXHg5NicgICAgICMgIDB4MzYgLT4gQ09OVFJPTAogICAgJ1x4MDQnICAgICAjICAweDM3IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDk4JyAgICAgIyAgMHgzOCAtPiBDT05UUk9MCiAgICAnXHg5OScgICAgICMgIDB4MzkgLT4gQ09OVFJPTAogICAgJ1x4OWEnICAgICAjICAweDNBIC0+IENPTlRST0wKICAgICdceDliJyAgICAgIyAgMHgzQiAtPiBDT05UUk9MCiAgICAnXHgxNCcgICAgICMgIDB4M0MgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDNEIC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHg5ZScgICAgICMgIDB4M0UgLT4gQ09OVFJPTAogICAgJ1x4MWEnICAgICAjICAweDNGIC0+IFNVQlNUSVRVVEUKICAgICcgJyAgICAgICAgIyAgMHg0MCAtPiBTUEFDRQogICAgJ1x1MDM5MScgICAjICAweDQxIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBCiAgICAnXHUwMzkyJyAgICMgIDB4NDIgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQkVUQQogICAgJ1x1MDM5MycgICAjICAweDQzIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiAgICAnXHUwMzk0JyAgICMgIDB4NDQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEKICAgICdcdTAzOTUnICAgIyAgMHg0NSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OCiAgICAnXHUwMzk2JyAgICMgIDB4NDYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQQogICAgJ1x1MDM5NycgICAjICAweDQ3IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQQogICAgJ1x1MDM5OCcgICAjICAweDQ4IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiAgICAnXHUwMzk5JyAgICMgIDB4NDkgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQQogICAgJ1snICAgICAgICAjICAweDRBIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICcuJyAgICAgICAgIyAgMHg0QiAtPiBGVUxMIFNUT1AKICAgICc8JyAgICAgICAgIyAgMHg0QyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJygnICAgICAgICAjICAweDREIC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcrJyAgICAgICAgIyAgMHg0RSAtPiBQTFVTIFNJR04KICAgICchJyAgICAgICAgIyAgMHg0RiAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnJicgICAgICAgICMgIDB4NTAgLT4gQU1QRVJTQU5ECiAgICAnXHUwMzlhJyAgICMgIDB4NTEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgS0FQUEEKICAgICdcdTAzOWInICAgIyAgMHg1MiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1EQQogICAgJ1x1MDM5YycgICAjICAweDUzIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE1VCiAgICAnXHUwMzlkJyAgICMgIDB4NTQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgTlUKICAgICdcdTAzOWUnICAgIyAgMHg1NSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBYSQogICAgJ1x1MDM5ZicgICAjICAweDU2IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04KICAgICdcdTAzYTAnICAgIyAgMHg1NyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBQSQogICAgJ1x1MDNhMScgICAjICAweDU4IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFJITwogICAgJ1x1MDNhMycgICAjICAweDU5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAnXScgICAgICAgICMgIDB4NUEgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICckJyAgICAgICAgIyAgMHg1QiAtPiBET0xMQVIgU0lHTgogICAgJyonICAgICAgICAjICAweDVDIC0+IEFTVEVSSVNLCiAgICAnKScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICc7JyAgICAgICAgIyAgMHg1RSAtPiBTRU1JQ09MT04KICAgICdeJyAgICAgICAgIyAgMHg1RiAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJy0nICAgICAgICAjICAweDYwIC0+IEhZUEhFTi1NSU5VUwogICAgJy8nICAgICAgICAjICAweDYxIC0+IFNPTElEVVMKICAgICdcdTAzYTQnICAgIyAgMHg2MiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVUKICAgICdcdTAzYTUnICAgIyAgMHg2MyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OCiAgICAnXHUwM2E2JyAgICMgIDB4NjQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAnXHUwM2E3JyAgICMgIDB4NjUgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJCiAgICAnXHUwM2E4JyAgICMgIDB4NjYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUFNJCiAgICAnXHUwM2E5JyAgICMgIDB4NjcgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKICAgICdcdTAzYWEnICAgIyAgMHg2OCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAnXHUwM2FiJyAgICMgIDB4NjkgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQQogICAgJ3wnICAgICAgICAjICAweDZBIC0+IFZFUlRJQ0FMIExJTkUKICAgICcsJyAgICAgICAgIyAgMHg2QiAtPiBDT01NQQogICAgJyUnICAgICAgICAjICAweDZDIC0+IFBFUkNFTlQgU0lHTgogICAgJ18nICAgICAgICAjICAweDZEIC0+IExPVyBMSU5FCiAgICAnPicgICAgICAgICMgIDB4NkUgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHg2RiAtPiBRVUVTVElPTiBNQVJLCiAgICAnXHhhOCcgICAgICMgIDB4NzAgLT4gRElBRVJFU0lTCiAgICAnXHUwMzg2JyAgICMgIDB4NzEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUwogICAgJ1x1MDM4OCcgICAjICAweDcyIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgJ1x1MDM4OScgICAjICAweDczIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TCiAgICAnXHhhMCcgICAgICMgIDB4NzQgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTAzOGEnICAgIyAgMHg3NSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVE9OT1MKICAgICdcdTAzOGMnICAgIyAgMHg3NiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgICdcdTAzOGUnICAgIyAgMHg3NyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKICAgICdcdTAzOGYnICAgIyAgMHg3OCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiAgICAnYCcgICAgICAgICMgIDB4NzkgLT4gR1JBVkUgQUNDRU5UCiAgICAnOicgICAgICAgICMgIDB4N0EgLT4gQ09MT04KICAgICcjJyAgICAgICAgIyAgMHg3QiAtPiBOVU1CRVIgU0lHTgogICAgJ0AnICAgICAgICAjICAweDdDIC0+IENPTU1FUkNJQUwgQVQKICAgICInIiAgICAgICAgIyAgMHg3RCAtPiBBUE9TVFJPUEhFCiAgICAnPScgICAgICAgICMgIDB4N0UgLT4gRVFVQUxTIFNJR04KICAgICciJyAgICAgICAgIyAgMHg3RiAtPiBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDM4NScgICAjICAweDgwIC0+IEdSRUVLIERJQUxZVElLQSBUT05PUwogICAgJ2EnICAgICAgICAjICAweDgxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4ODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDg0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4ODUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg4NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg4OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ1x1MDNiMScgICAjICAweDhBIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQQogICAgJ1x1MDNiMicgICAjICAweDhCIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBCRVRBCiAgICAnXHUwM2IzJyAgICMgIDB4OEMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEdBTU1BCiAgICAnXHUwM2I0JyAgICMgIDB4OEQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCiAgICAnXHUwM2I1JyAgICMgIDB4OEUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KICAgICdcdTAzYjYnICAgIyAgMHg4RiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgWkVUQQogICAgJ1x4YjAnICAgICAjICAweDkwIC0+IERFR1JFRSBTSUdOCiAgICAnaicgICAgICAgICMgIDB4OTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4OTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4OTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg5OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDk5IC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAnXHUwM2I3JyAgICMgIDB4OUEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVUQQogICAgJ1x1MDNiOCcgICAjICAweDlCIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBUSEVUQQogICAgJ1x1MDNiOScgICAjICAweDlDIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBCiAgICAnXHUwM2JhJyAgICMgIDB4OUQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEtBUFBBCiAgICAnXHUwM2JiJyAgICMgIDB4OUUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIExBTURBCiAgICAnXHUwM2JjJyAgICMgIDB4OUYgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE1VCiAgICAnXHhiNCcgICAgICMgIDB4QTAgLT4gQUNVVEUgQUNDRU5UCiAgICAnficgICAgICAgICMgIDB4QTEgLT4gVElMREUKICAgICdzJyAgICAgICAgIyAgMHhBMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweEEzIC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4QTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHhBNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweEE2IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4QTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHhBOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweEE5IC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAnXHUwM2JkJyAgICMgIDB4QUEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE5VCiAgICAnXHUwM2JlJyAgICMgIDB4QUIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFhJCiAgICAnXHUwM2JmJyAgICMgIDB4QUMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04KICAgICdcdTAzYzAnICAgIyAgMHhBRCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgICdcdTAzYzEnICAgIyAgMHhBRSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUkhPCiAgICAnXHUwM2MzJyAgICMgIDB4QUYgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAnXHhhMycgICAgICMgIDB4QjAgLT4gUE9VTkQgU0lHTgogICAgJ1x1MDNhYycgICAjICAweEIxIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TCiAgICAnXHUwM2FkJyAgICMgIDB4QjIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUwogICAgJ1x1MDNhZScgICAjICAweEIzIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBUT05PUwogICAgJ1x1MDNjYScgICAjICAweEI0IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAnXHUwM2FmJyAgICMgIDB4QjUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUwogICAgJ1x1MDNjYycgICAjICAweEI2IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgICdcdTAzY2QnICAgIyAgMHhCNyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2NiJyAgICMgIDB4QjggLT4gR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgICdcdTAzY2UnICAgIyAgMHhCOSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUwogICAgJ1x1MDNjMicgICAjICAweEJBIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQogICAgJ1x1MDNjNCcgICAjICAweEJCIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBUQVUKICAgICdcdTAzYzUnICAgIyAgMHhCQyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTgogICAgJ1x1MDNjNicgICAjICAweEJEIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgICdcdTAzYzcnICAgIyAgMHhCRSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgQ0hJCiAgICAnXHUwM2M4JyAgICMgIDB4QkYgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBTSQogICAgJ3snICAgICAgICAjICAweEMwIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ0EnICAgICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweEM0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4QzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ1x4YWQnICAgICAjICAweENBIC0+IFNPRlQgSFlQSEVOCiAgICAnXHUwM2M5JyAgICMgIDB4Q0IgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBCiAgICAnXHUwMzkwJyAgICMgIDB4Q0MgLT4gR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TCiAgICAnXHUwM2IwJyAgICMgIDB4Q0QgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TCiAgICAnXHUyMDE4JyAgICMgIDB4Q0UgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTUnICAgIyAgMHhDRiAtPiBIT1JJWk9OVEFMIEJBUgogICAgJ30nICAgICAgICAjICAweEQwIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICdKJyAgICAgICAgIyAgMHhEMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHhENCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweEQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHhENyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4RDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdceGIxJyAgICAgIyAgMHhEQSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdceGJkJyAgICAgIyAgMHhEQiAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceDFhJyAgICAgIyAgMHhEQyAtPiBTVUJTVElUVVRFCiAgICAnXHUwMzg3JyAgICMgIDB4REQgLT4gR1JFRUsgQU5PIFRFTEVJQQogICAgJ1x1MjAxOScgICAjICAweERFIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YTYnICAgICAjICAweERGIC0+IEJST0tFTiBCQVIKICAgICdcXCcgICAgICAgIyAgMHhFMCAtPiBSRVZFUlNFIFNPTElEVVMKICAgICdceDFhJyAgICAgIyAgMHhFMSAtPiBTVUJTVElUVVRFCiAgICAnUycgICAgICAgICMgIDB4RTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweEUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHhFNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweEU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweEU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdceGIyJyAgICAgIyAgMHhFQSAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGE3JyAgICAgIyAgMHhFQiAtPiBTRUNUSU9OIFNJR04KICAgICdceDFhJyAgICAgIyAgMHhFQyAtPiBTVUJTVElUVVRFCiAgICAnXHgxYScgICAgICMgIDB4RUQgLT4gU1VCU1RJVFVURQogICAgJ1x4YWInICAgICAjICAweEVFIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4RUYgLT4gTk9UIFNJR04KICAgICcwJyAgICAgICAgIyAgMHhGMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4RjEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4RjIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4RjMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHhGNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4RjUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweEY2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweEY3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4RjggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHhGOSAtPiBESUdJVCBOSU5FCiAgICAnXHhiMycgICAgICMgIDB4RkEgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGE5JyAgICAgIyAgMHhGQiAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x4MWEnICAgICAjICAweEZDIC0+IFNVQlNUSVRVVEUKICAgICdceDFhJyAgICAgIyAgMHhGRCAtPiBTVUJTVElUVVRFCiAgICAnXHhiYicgICAgICMgIDB4RkUgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHg5ZicgICAgICMgIDB4RkYgLT4gQ09OVFJPTAopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWJrvqxv8DAAD/AwAAEgAAAGVuY29kaW5ncy9jcDkzMi5weSMKIyBjcDkzMi5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIENQOTMyCiMKIyBXcml0dGVuIGJ5IEh5ZS1TaGlrIENoYW5nIDxwZXJreUBGcmVlQlNELm9yZz4KIwoKaW1wb3J0IF9jb2RlY3NfanAsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2pwLmdldGNvZGVjKCdjcDkzMicpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwOTMyJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAACIKNWw+8xWP8DAAD/AwAAEgAAAGVuY29kaW5ncy9jcDk0OS5weSMKIyBjcDk0OS5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIENQOTQ5CiMKIyBXcml0dGVuIGJ5IEh5ZS1TaGlrIENoYW5nIDxwZXJreUBGcmVlQlNELm9yZz4KIwoKaW1wb3J0IF9jb2RlY3Nfa3IsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2tyLmdldGNvZGVjKCdjcDk0OScpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwOTQ5JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAACIKNWz/z+uv8DAAD/AwAAEgAAAGVuY29kaW5ncy9jcDk1MC5weSMKIyBjcDk1MC5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIENQOTUwCiMKIyBXcml0dGVuIGJ5IEh5ZS1TaGlrIENoYW5nIDxwZXJreUBGcmVlQlNELm9yZz4KIwoKaW1wb3J0IF9jb2RlY3NfdHcsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX3R3LmdldGNvZGVjKCdjcDk1MCcpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2NwOTUwJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAACIKNW+quqORsEAAAbBAAAGQAAAGVuY29kaW5ncy9ldWNfamlzXzIwMDQucHkjCiMgZXVjX2ppc18yMDA0LnB5OiBQeXRob24gVW5pY29kZSBDb2RlYyBmb3IgRVVDX0pJU18yMDA0CiMKIyBXcml0dGVuIGJ5IEh5ZS1TaGlrIENoYW5nIDxwZXJreUBGcmVlQlNELm9yZz4KIwoKaW1wb3J0IF9jb2RlY3NfanAsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2pwLmdldGNvZGVjKCdldWNfamlzXzIwMDQnKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdldWNfamlzXzIwMDQnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAIgo1YFbdiuGwQAABsEAAAZAAAAZW5jb2RpbmdzL2V1Y19qaXN4MDIxMy5weSMKIyBldWNfamlzeDAyMTMucHk6IFB5dGhvbiBVbmljb2RlIENvZGVjIGZvciBFVUNfSklTWDAyMTMKIwojIFdyaXR0ZW4gYnkgSHllLVNoaWsgQ2hhbmcgPHBlcmt5QEZyZWVCU0Qub3JnPgojCgppbXBvcnQgX2NvZGVjc19qcCwgY29kZWNzCmltcG9ydCBfbXVsdGlieXRlY29kZWMgYXMgbWJjCgpjb2RlYyA9IF9jb2RlY3NfanAuZ2V0Y29kZWMoJ2V1Y19qaXN4MDIxMycpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2V1Y19qaXN4MDIxMycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVsWL4hwDBAAAAwQAABMAAABlbmNvZGluZ3MvZXVjX2pwLnB5IwojIGV1Y19qcC5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIEVVQ19KUAojCiMgV3JpdHRlbiBieSBIeWUtU2hpayBDaGFuZyA8cGVya3lARnJlZUJTRC5vcmc+CiMKCmltcG9ydCBfY29kZWNzX2pwLCBjb2RlY3MKaW1wb3J0IF9tdWx0aWJ5dGVjb2RlYyBhcyBtYmMKCmNvZGVjID0gX2NvZGVjc19qcC5nZXRjb2RlYygnZXVjX2pwJykKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICBlbmNvZGUgPSBjb2RlYy5lbmNvZGUKICAgIGRlY29kZSA9IGNvZGVjLmRlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIEluY3JlbWVudGFsRGVjb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGNvZGVjID0gY29kZWMKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nZXVjX2pwJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAACIKNWUghMkgMEAAADBAAAEwAAAGVuY29kaW5ncy9ldWNfa3IucHkjCiMgZXVjX2tyLnB5OiBQeXRob24gVW5pY29kZSBDb2RlYyBmb3IgRVVDX0tSCiMKIyBXcml0dGVuIGJ5IEh5ZS1TaGlrIENoYW5nIDxwZXJreUBGcmVlQlNELm9yZz4KIwoKaW1wb3J0IF9jb2RlY3Nfa3IsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2tyLmdldGNvZGVjKCdldWNfa3InKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdldWNfa3InLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAIgo1Y/Wdw9BwQAAAcEAAAUAAAAZW5jb2RpbmdzL2diMTgwMzAucHkjCiMgZ2IxODAzMC5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIEdCMTgwMzAKIwojIFdyaXR0ZW4gYnkgSHllLVNoaWsgQ2hhbmcgPHBlcmt5QEZyZWVCU0Qub3JnPgojCgppbXBvcnQgX2NvZGVjc19jbiwgY29kZWNzCmltcG9ydCBfbXVsdGlieXRlY29kZWMgYXMgbWJjCgpjb2RlYyA9IF9jb2RlY3NfY24uZ2V0Y29kZWMoJ2diMTgwMzAnKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdnYjE4MDMwJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAACIKNWyddcAwMEAAADBAAAEwAAAGVuY29kaW5ncy9nYjIzMTIucHkjCiMgZ2IyMzEyLnB5OiBQeXRob24gVW5pY29kZSBDb2RlYyBmb3IgR0IyMzEyCiMKIyBXcml0dGVuIGJ5IEh5ZS1TaGlrIENoYW5nIDxwZXJreUBGcmVlQlNELm9yZz4KIwoKaW1wb3J0IF9jb2RlY3NfY24sIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2NuLmdldGNvZGVjKCdnYjIzMTInKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdnYjIzMTInLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAIgo1Zs8xBE9wMAAPcDAAAQAAAAZW5jb2RpbmdzL2diay5weSMKIyBnYmsucHk6IFB5dGhvbiBVbmljb2RlIENvZGVjIGZvciBHQksKIwojIFdyaXR0ZW4gYnkgSHllLVNoaWsgQ2hhbmcgPHBlcmt5QEZyZWVCU0Qub3JnPgojCgppbXBvcnQgX2NvZGVjc19jbiwgY29kZWNzCmltcG9ydCBfbXVsdGlieXRlY29kZWMgYXMgbWJjCgpjb2RlYyA9IF9jb2RlY3NfY24uZ2V0Y29kZWMoJ2diaycpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2diaycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVmzygizkBQAA5AUAABYAAABlbmNvZGluZ3MvaGV4X2NvZGVjLnB5IiIiUHl0aG9uICdoZXhfY29kZWMnIENvZGVjIC0gMi1kaWdpdCBoZXggY29udGVudCB0cmFuc2ZlciBlbmNvZGluZy4KClRoaXMgY29kZWMgZGUvZW5jb2RlcyBmcm9tIGJ5dGVzIHRvIGJ5dGVzLgoKV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCiIiIgoKaW1wb3J0IGNvZGVjcwppbXBvcnQgYmluYXNjaWkKCiMjIyBDb2RlYyBBUElzCgpkZWYgaGV4X2VuY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIGFzc2VydCBlcnJvcnMgPT0gJ3N0cmljdCcKICAgIHJldHVybiAoYmluYXNjaWkuYjJhX2hleChpbnB1dCksIGxlbihpbnB1dCkpCgpkZWYgaGV4X2RlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIGFzc2VydCBlcnJvcnMgPT0gJ3N0cmljdCcKICAgIHJldHVybiAoYmluYXNjaWkuYTJiX2hleChpbnB1dCksIGxlbihpbnB1dCkpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gaGV4X2VuY29kZShpbnB1dCwgZXJyb3JzKQogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gaGV4X2RlY29kZShpbnB1dCwgZXJyb3JzKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIGFzc2VydCBzZWxmLmVycm9ycyA9PSAnc3RyaWN0JwogICAgICAgIHJldHVybiBiaW5hc2NpaS5iMmFfaGV4KGlucHV0KQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIGFzc2VydCBzZWxmLmVycm9ycyA9PSAnc3RyaWN0JwogICAgICAgIHJldHVybiBiaW5hc2NpaS5hMmJfaGV4KGlucHV0KQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGNoYXJidWZmZXJ0eXBlID0gYnl0ZXMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjaGFyYnVmZmVydHlwZSA9IGJ5dGVzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0naGV4JywKICAgICAgICBlbmNvZGU9aGV4X2VuY29kZSwKICAgICAgICBkZWNvZGU9aGV4X2RlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIF9pc190ZXh0X2VuY29kaW5nPUZhbHNlLAogICAgKQpQSwMEFAAAAAAAAiCjVvetvsWjNAAAozQAABYAAABlbmNvZGluZ3MvaHBfcm9tYW44LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnaHBfcm9tYW44LnR4dCcgd2l0aCBnZW5jb2RlYy5weS4KCiAgICBCYXNlZCBvbiBkYXRhIGZyb20gZnRwOi8vZGt1dWcuZGsvaTE4bi9jaGFybWFwcy9IUC1ST01BTjggKEtlbGQgU2ltb25zZW4pCgogICAgT3JpZ2luYWwgc291cmNlOiBMYXNlckpldCBJSVAgUHJpbnRlciBVc2VyJ3MgTWFudWFsIEhQIHBhcnQgbm8KICAgIDMzNDcxLTkwOTAxLCBIZXdsZXQtUGFja2FyZCwgSnVuZSAxOTg5LgoKICAgIChVc2VkIHdpdGggcGVybWlzc2lvbikKCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0naHAtcm9tYW44JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x4ODAnICAgICAjICAweDgwIC0+IDxjb250cm9sPgogICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgogICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgogICAgJ1x4ODMnICAgICAjICAweDgzIC0+IDxjb250cm9sPgogICAgJ1x4ODQnICAgICAjICAweDg0IC0+IDxjb250cm9sPgogICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgogICAgJ1x4ODYnICAgICAjICAweDg2IC0+IDxjb250cm9sPgogICAgJ1x4ODcnICAgICAjICAweDg3IC0+IDxjb250cm9sPgogICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgogICAgJ1x4ODknICAgICAjICAweDg5IC0+IDxjb250cm9sPgogICAgJ1x4OGEnICAgICAjICAweDhBIC0+IDxjb250cm9sPgogICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgogICAgJ1x4OGMnICAgICAjICAweDhDIC0+IDxjb250cm9sPgogICAgJ1x4OGQnICAgICAjICAweDhEIC0+IDxjb250cm9sPgogICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgogICAgJ1x4OGYnICAgICAjICAweDhGIC0+IDxjb250cm9sPgogICAgJ1x4OTAnICAgICAjICAweDkwIC0+IDxjb250cm9sPgogICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgogICAgJ1x4OTInICAgICAjICAweDkyIC0+IDxjb250cm9sPgogICAgJ1x4OTMnICAgICAjICAweDkzIC0+IDxjb250cm9sPgogICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgogICAgJ1x4OTUnICAgICAjICAweDk1IC0+IDxjb250cm9sPgogICAgJ1x4OTYnICAgICAjICAweDk2IC0+IDxjb250cm9sPgogICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgogICAgJ1x4OTgnICAgICAjICAweDk4IC0+IDxjb250cm9sPgogICAgJ1x4OTknICAgICAjICAweDk5IC0+IDxjb250cm9sPgogICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgogICAgJ1x4OWInICAgICAjICAweDlCIC0+IDxjb250cm9sPgogICAgJ1x4OWMnICAgICAjICAweDlDIC0+IDxjb250cm9sPgogICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgogICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgogICAgJ1x4OWYnICAgICAjICAweDlGIC0+IDxjb250cm9sPgogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHhjMCcgICAgICMgIDB4QTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMicgICAgICMgIDB4QTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGM4JyAgICAgIyAgMHhBMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGNhJyAgICAgIyAgMHhBNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweEE1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGNlJyAgICAgIyAgMHhBNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2YnICAgICAjICAweEE3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGI0JyAgICAgIyAgMHhBOCAtPiBBQ1VURSBBQ0NFTlQKICAgICdcdTAyY2InICAgIyAgMHhBOSAtPiBNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UIChNQU5EQVJJTiBDSElORVNFIEZPVVJUSCBUT05FKQogICAgJ1x1MDJjNicgICAjICAweEFBIC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ1x4YTgnICAgICAjICAweEFCIC0+IERJQUVSRVNJUwogICAgJ1x1MDJkYycgICAjICAweEFDIC0+IFNNQUxMIFRJTERFCiAgICAnXHhkOScgICAgICMgIDB4QUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhkYicgICAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdcdTIwYTQnICAgIyAgMHhBRiAtPiBMSVJBIFNJR04KICAgICdceGFmJyAgICAgIyAgMHhCMCAtPiBNQUNST04KICAgICdceGRkJyAgICAgIyAgMHhCMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGZkJyAgICAgIyAgMHhCMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhiMCcgICAgICMgIDB4QjMgLT4gREVHUkVFIFNJR04KICAgICdceGM3JyAgICAgIyAgMHhCNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZTcnICAgICAjICAweEI1IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZDEnICAgICAjICAweEI2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZjEnICAgICAjICAweEI3IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGExJyAgICAgIyAgMHhCOCAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAnXHhiZicgICAgICMgIDB4QjkgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgJ1x4YTQnICAgICAjICAweEJBIC0+IENVUlJFTkNZIFNJR04KICAgICdceGEzJyAgICAgIyAgMHhCQiAtPiBQT1VORCBTSUdOCiAgICAnXHhhNScgICAgICMgIDB4QkMgLT4gWUVOIFNJR04KICAgICdceGE3JyAgICAgIyAgMHhCRCAtPiBTRUNUSU9OIFNJR04KICAgICdcdTAxOTInICAgIyAgMHhCRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdceGEyJyAgICAgIyAgMHhCRiAtPiBDRU5UIFNJR04KICAgICdceGUyJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVhJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGY0JyAgICAgIyAgMHhDMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGZiJyAgICAgIyAgMHhDMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGUxJyAgICAgIyAgMHhDNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlOScgICAgICMgIDB4QzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZjMnICAgICAjICAweEM2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGZhJyAgICAgIyAgMHhDNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhlMCcgICAgICMgIDB4QzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTgnICAgICAjICAweEM5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGYyJyAgICAgIyAgMHhDQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhmOScgICAgICMgIDB4Q0IgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZTQnICAgICAjICAweENDIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhlYicgICAgICMgIDB4Q0QgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGY2JyAgICAgIyAgMHhDRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZmMnICAgICAjICAweENGIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGVlJyAgICAgIyAgMHhEMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGQ4JyAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhjNicgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKICAgICdceGU1JyAgICAgIyAgMHhENCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGVkJyAgICAgIyAgMHhENSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhmOCcgICAgICMgIDB4RDYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGU2JyAgICAgIyAgMHhENyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdceGM0JyAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhlYycgICAgICMgIDB4RDkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZDYnICAgICAjICAweERBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGRjJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhjOScgICAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlZicgICAgICMgIDB4REQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGRmJyAgICAgIyAgMHhERSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR0VSTUFOKQogICAgJ1x4ZDQnICAgICAjICAweERGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjMScgICAgICMgIDB4RTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMycgICAgICMgIDB4RTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlMycgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZDAnICAgICAjICAweEUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSUNFTEFORElDKQogICAgJ1x4ZjAnICAgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEggKElDRUxBTkRJQykKICAgICdceGNkJyAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNjJyAgICAgIyAgMHhFNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGQzJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGQyJyAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGQ1JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGY1JyAgICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHUwMTYwJyAgICMgIDB4RUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUwMTYxJyAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgJ1x4ZGEnICAgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x1MDE3OCcgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdceGZmJyAgICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZGUnICAgICAjICAweEYwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJQ0VMQU5ESUMpCiAgICAnXHhmZScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJQ0VMQU5ESUMpCiAgICAnXHhiNycgICAgICMgIDB4RjIgLT4gTUlERExFIERPVAogICAgJ1x4YjUnICAgICAjICAweEYzIC0+IE1JQ1JPIFNJR04KICAgICdceGI2JyAgICAgIyAgMHhGNCAtPiBQSUxDUk9XIFNJR04KICAgICdceGJlJyAgICAgIyAgMHhGNSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdcdTIwMTQnICAgIyAgMHhGNiAtPiBFTSBEQVNICiAgICAnXHhiYycgICAgICMgIDB4RjcgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhiZCcgICAgICMgIDB4RjggLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHhhYScgICAgICMgIDB4RjkgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJhJyAgICAgIyAgMHhGQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGFiJyAgICAgIyAgMHhGQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjVhMCcgICAjICAweEZDIC0+IEJMQUNLIFNRVUFSRQogICAgJ1x4YmInICAgICAjICAweEZEIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YjEnICAgICAjICAweEZFIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x1ZmZmZScKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVm4SmRbzAwAA8wMAAA8AAABlbmNvZGluZ3MvaHoucHkjCiMgaHoucHk6IFB5dGhvbiBVbmljb2RlIENvZGVjIGZvciBIWgojCiMgV3JpdHRlbiBieSBIeWUtU2hpayBDaGFuZyA8cGVya3lARnJlZUJTRC5vcmc+CiMKCmltcG9ydCBfY29kZWNzX2NuLCBjb2RlY3MKaW1wb3J0IF9tdWx0aWJ5dGVjb2RlYyBhcyBtYmMKCmNvZGVjID0gX2NvZGVjc19jbi5nZXRjb2RlYygnaHonKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdoeicsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVpDyd/aKIwAAiiMAABEAAABlbmNvZGluZ3MvaWRuYS5weSMgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyB0aGUgUkZDcyAzNDkwIChJRE5BKSBhbmQgMzQ5MSAoTmFtZXByZXApCgppbXBvcnQgc3RyaW5ncHJlcCwgcmUsIGNvZGVjcwpmcm9tIHVuaWNvZGVkYXRhIGltcG9ydCB1Y2RfM18yXzAgYXMgdW5pY29kZWRhdGEKCiMgSUROQSBzZWN0aW9uIDMuMQpkb3RzID0gcmUuY29tcGlsZSgiW1x1MDAyRVx1MzAwMlx1RkYwRVx1RkY2MV0iKQoKIyBJRE5BIHNlY3Rpb24gNQphY2VfcHJlZml4ID0gYiJ4bi0tIgpzYWNlX3ByZWZpeCA9ICJ4bi0tIgoKIyBUaGlzIGFzc3VtZXMgcXVlcnkgc3RyaW5ncywgc28gQWxsb3dVbmFzc2lnbmVkIGlzIHRydWUKZGVmIG5hbWVwcmVwKGxhYmVsKToKICAgICMgTWFwCiAgICBuZXdsYWJlbCA9IFtdCiAgICBmb3IgYyBpbiBsYWJlbDoKICAgICAgICBpZiBzdHJpbmdwcmVwLmluX3RhYmxlX2IxKGMpOgogICAgICAgICAgICAjIE1hcCB0byBub3RoaW5nCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgbmV3bGFiZWwuYXBwZW5kKHN0cmluZ3ByZXAubWFwX3RhYmxlX2IyKGMpKQogICAgbGFiZWwgPSAiIi5qb2luKG5ld2xhYmVsKQoKICAgICMgTm9ybWFsaXplCiAgICBsYWJlbCA9IHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgiTkZLQyIsIGxhYmVsKQoKICAgICMgUHJvaGliaXQKICAgIGZvciBjIGluIGxhYmVsOgogICAgICAgIGlmIHN0cmluZ3ByZXAuaW5fdGFibGVfYzEyKGMpIG9yIFwKICAgICAgICAgICBzdHJpbmdwcmVwLmluX3RhYmxlX2MyMihjKSBvciBcCiAgICAgICAgICAgc3RyaW5ncHJlcC5pbl90YWJsZV9jMyhjKSBvciBcCiAgICAgICAgICAgc3RyaW5ncHJlcC5pbl90YWJsZV9jNChjKSBvciBcCiAgICAgICAgICAgc3RyaW5ncHJlcC5pbl90YWJsZV9jNShjKSBvciBcCiAgICAgICAgICAgc3RyaW5ncHJlcC5pbl90YWJsZV9jNihjKSBvciBcCiAgICAgICAgICAgc3RyaW5ncHJlcC5pbl90YWJsZV9jNyhjKSBvciBcCiAgICAgICAgICAgc3RyaW5ncHJlcC5pbl90YWJsZV9jOChjKSBvciBcCiAgICAgICAgICAgc3RyaW5ncHJlcC5pbl90YWJsZV9jOShjKToKICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJJbnZhbGlkIGNoYXJhY3RlciAlciIgJSBjKQoKICAgICMgQ2hlY2sgYmlkaQogICAgUmFuZEFMID0gW3N0cmluZ3ByZXAuaW5fdGFibGVfZDEoeCkgZm9yIHggaW4gbGFiZWxdCiAgICBpZiBhbnkoUmFuZEFMKToKICAgICAgICAjIFRoZXJlIGlzIGEgUmFuZEFMIGNoYXIgaW4gdGhlIHN0cmluZy4gTXVzdCBwZXJmb3JtIGZ1cnRoZXIKICAgICAgICAjIHRlc3RzOgogICAgICAgICMgMSkgVGhlIGNoYXJhY3RlcnMgaW4gc2VjdGlvbiA1LjggTVVTVCBiZSBwcm9oaWJpdGVkLgogICAgICAgICMgVGhpcyBpcyB0YWJsZSBDLjgsIHdoaWNoIHdhcyBhbHJlYWR5IGNoZWNrZWQKICAgICAgICAjIDIpIElmIGEgc3RyaW5nIGNvbnRhaW5zIGFueSBSYW5kQUxDYXQgY2hhcmFjdGVyLCB0aGUgc3RyaW5nCiAgICAgICAgIyBNVVNUIE5PVCBjb250YWluIGFueSBMQ2F0IGNoYXJhY3Rlci4KICAgICAgICBpZiBhbnkoc3RyaW5ncHJlcC5pbl90YWJsZV9kMih4KSBmb3IgeCBpbiBsYWJlbCk6CiAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigiVmlvbGF0aW9uIG9mIEJJREkgcmVxdWlyZW1lbnQgMiIpCiAgICAgICAgIyAzKSBJZiBhIHN0cmluZyBjb250YWlucyBhbnkgUmFuZEFMQ2F0IGNoYXJhY3RlciwgYQogICAgICAgICMgUmFuZEFMQ2F0IGNoYXJhY3RlciBNVVNUIGJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlCiAgICAgICAgIyBzdHJpbmcsIGFuZCBhIFJhbmRBTENhdCBjaGFyYWN0ZXIgTVVTVCBiZSB0aGUgbGFzdAogICAgICAgICMgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcuCiAgICAgICAgaWYgbm90IFJhbmRBTFswXSBvciBub3QgUmFuZEFMWy0xXToKICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJWaW9sYXRpb24gb2YgQklESSByZXF1aXJlbWVudCAzIikKCiAgICByZXR1cm4gbGFiZWwKCmRlZiBUb0FTQ0lJKGxhYmVsKToKICAgIHRyeToKICAgICAgICAjIFN0ZXAgMTogdHJ5IEFTQ0lJCiAgICAgICAgbGFiZWwgPSBsYWJlbC5lbmNvZGUoImFzY2lpIikKICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgcGFzcwogICAgZWxzZToKICAgICAgICAjIFNraXAgdG8gc3RlcCAzOiBVc2VTVEQzQVNDSUlSdWxlcyBpcyBmYWxzZSwgc28KICAgICAgICAjIFNraXAgdG8gc3RlcCA4LgogICAgICAgIGlmIDAgPCBsZW4obGFiZWwpIDwgNjQ6CiAgICAgICAgICAgIHJldHVybiBsYWJlbAogICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigibGFiZWwgZW1wdHkgb3IgdG9vIGxvbmciKQoKICAgICMgU3RlcCAyOiBuYW1lcHJlcAogICAgbGFiZWwgPSBuYW1lcHJlcChsYWJlbCkKCiAgICAjIFN0ZXAgMzogVXNlU1REM0FTQ0lJUnVsZXMgaXMgZmFsc2UKICAgICMgU3RlcCA0OiB0cnkgQVNDSUkKICAgIHRyeToKICAgICAgICBsYWJlbCA9IGxhYmVsLmVuY29kZSgiYXNjaWkiKQogICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKICAgICAgICBwYXNzCiAgICBlbHNlOgogICAgICAgICMgU2tpcCB0byBzdGVwIDguCiAgICAgICAgaWYgMCA8IGxlbihsYWJlbCkgPCA2NDoKICAgICAgICAgICAgcmV0dXJuIGxhYmVsCiAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJsYWJlbCBlbXB0eSBvciB0b28gbG9uZyIpCgogICAgIyBTdGVwIDU6IENoZWNrIEFDRSBwcmVmaXgKICAgIGlmIGxhYmVsLnN0YXJ0c3dpdGgoc2FjZV9wcmVmaXgpOgogICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigiTGFiZWwgc3RhcnRzIHdpdGggQUNFIHByZWZpeCIpCgogICAgIyBTdGVwIDY6IEVuY29kZSB3aXRoIFBVTllDT0RFCiAgICBsYWJlbCA9IGxhYmVsLmVuY29kZSgicHVueWNvZGUiKQoKICAgICMgU3RlcCA3OiBQcmVwZW5kIEFDRSBwcmVmaXgKICAgIGxhYmVsID0gYWNlX3ByZWZpeCArIGxhYmVsCgogICAgIyBTdGVwIDg6IENoZWNrIHNpemUKICAgIGlmIDAgPCBsZW4obGFiZWwpIDwgNjQ6CiAgICAgICAgcmV0dXJuIGxhYmVsCiAgICByYWlzZSBVbmljb2RlRXJyb3IoImxhYmVsIGVtcHR5IG9yIHRvbyBsb25nIikKCmRlZiBUb1VuaWNvZGUobGFiZWwpOgogICAgIyBTdGVwIDE6IENoZWNrIGZvciBBU0NJSQogICAgaWYgaXNpbnN0YW5jZShsYWJlbCwgYnl0ZXMpOgogICAgICAgIHB1cmVfYXNjaWkgPSBUcnVlCiAgICBlbHNlOgogICAgICAgIHRyeToKICAgICAgICAgICAgbGFiZWwgPSBsYWJlbC5lbmNvZGUoImFzY2lpIikKICAgICAgICAgICAgcHVyZV9hc2NpaSA9IFRydWUKICAgICAgICBleGNlcHQgVW5pY29kZUVycm9yOgogICAgICAgICAgICBwdXJlX2FzY2lpID0gRmFsc2UKICAgIGlmIG5vdCBwdXJlX2FzY2lpOgogICAgICAgICMgU3RlcCAyOiBQZXJmb3JtIG5hbWVwcmVwCiAgICAgICAgbGFiZWwgPSBuYW1lcHJlcChsYWJlbCkKICAgICAgICAjIEl0IGRvZXNuJ3Qgc2F5IHRoaXMsIGJ1dCBhcHBhcmVudGx5LCBpdCBzaG91bGQgYmUgQVNDSUkgbm93CiAgICAgICAgdHJ5OgogICAgICAgICAgICBsYWJlbCA9IGxhYmVsLmVuY29kZSgiYXNjaWkiKQogICAgICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigiSW52YWxpZCBjaGFyYWN0ZXIgaW4gSUROIGxhYmVsIikKICAgICMgU3RlcCAzOiBDaGVjayBmb3IgQUNFIHByZWZpeAogICAgaWYgbm90IGxhYmVsLnN0YXJ0c3dpdGgoYWNlX3ByZWZpeCk6CiAgICAgICAgcmV0dXJuIHN0cihsYWJlbCwgImFzY2lpIikKCiAgICAjIFN0ZXAgNDogUmVtb3ZlIEFDRSBwcmVmaXgKICAgIGxhYmVsMSA9IGxhYmVsW2xlbihhY2VfcHJlZml4KTpdCgogICAgIyBTdGVwIDU6IERlY29kZSB1c2luZyBQVU5ZQ09ERQogICAgcmVzdWx0ID0gbGFiZWwxLmRlY29kZSgicHVueWNvZGUiKQoKICAgICMgU3RlcCA2OiBBcHBseSBUb0FTQ0lJCiAgICBsYWJlbDIgPSBUb0FTQ0lJKHJlc3VsdCkKCiAgICAjIFN0ZXAgNzogQ29tcGFyZSB0aGUgcmVzdWx0IG9mIHN0ZXAgNiB3aXRoIHRoZSBvbmUgb2Ygc3RlcCAzCiAgICAjIGxhYmVsMiB3aWxsIGFscmVhZHkgYmUgaW4gbG93ZXIgY2FzZS4KICAgIGlmIHN0cihsYWJlbCwgImFzY2lpIikubG93ZXIoKSAhPSBzdHIobGFiZWwyLCAiYXNjaWkiKToKICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoIklETkEgZG9lcyBub3Qgcm91bmQtdHJpcCIsIGxhYmVsLCBsYWJlbDIpCgogICAgIyBTdGVwIDg6IHJldHVybiB0aGUgcmVzdWx0IG9mIHN0ZXAgNQogICAgcmV0dXJuIHJlc3VsdAoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgoKICAgICAgICBpZiBlcnJvcnMgIT0gJ3N0cmljdCc6CiAgICAgICAgICAgICMgSUROQSBpcyBxdWl0ZSBjbGVhciB0aGF0IGltcGxlbWVudGF0aW9ucyBtdXN0IGJlIHN0cmljdAogICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoInVuc3VwcG9ydGVkIGVycm9yIGhhbmRsaW5nICIrZXJyb3JzKQoKICAgICAgICBpZiBub3QgaW5wdXQ6CiAgICAgICAgICAgIHJldHVybiBiJycsIDAKCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBpbnB1dC5lbmNvZGUoJ2FzY2lpJykKICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBBU0NJSSBuYW1lOiBmYXN0IHBhdGgKICAgICAgICAgICAgbGFiZWxzID0gcmVzdWx0LnNwbGl0KGInLicpCiAgICAgICAgICAgIGZvciBsYWJlbCBpbiBsYWJlbHNbOi0xXToKICAgICAgICAgICAgICAgIGlmIG5vdCAoMCA8IGxlbihsYWJlbCkgPCA2NCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJsYWJlbCBlbXB0eSBvciB0b28gbG9uZyIpCiAgICAgICAgICAgIGlmIGxlbihsYWJlbHNbLTFdKSA+PSA2NDoKICAgICAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigibGFiZWwgdG9vIGxvbmciKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0LCBsZW4oaW5wdXQpCgogICAgICAgIHJlc3VsdCA9IGJ5dGVhcnJheSgpCiAgICAgICAgbGFiZWxzID0gZG90cy5zcGxpdChpbnB1dCkKICAgICAgICBpZiBsYWJlbHMgYW5kIG5vdCBsYWJlbHNbLTFdOgogICAgICAgICAgICB0cmFpbGluZ19kb3QgPSBiJy4nCiAgICAgICAgICAgIGRlbCBsYWJlbHNbLTFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJhaWxpbmdfZG90ID0gYicnCiAgICAgICAgZm9yIGxhYmVsIGluIGxhYmVsczoKICAgICAgICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICAgICAgIyBKb2luIHdpdGggVSswMDJFCiAgICAgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKGInLicpCiAgICAgICAgICAgIHJlc3VsdC5leHRlbmQoVG9BU0NJSShsYWJlbCkpCiAgICAgICAgcmV0dXJuIGJ5dGVzKHJlc3VsdCt0cmFpbGluZ19kb3QpLCBsZW4oaW5wdXQpCgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKCiAgICAgICAgaWYgZXJyb3JzICE9ICdzdHJpY3QnOgogICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoIlVuc3VwcG9ydGVkIGVycm9yIGhhbmRsaW5nICIrZXJyb3JzKQoKICAgICAgICBpZiBub3QgaW5wdXQ6CiAgICAgICAgICAgIHJldHVybiAiIiwgMAoKICAgICAgICAjIElETkEgYWxsb3dzIGRlY29kaW5nIHRvIG9wZXJhdGUgb24gVW5pY29kZSBzdHJpbmdzLCB0b28uCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5wdXQsIGJ5dGVzKToKICAgICAgICAgICAgIyBYWFggb2J2aW91c2x5IHdyb25nLCBzZWUgIzMyMzIKICAgICAgICAgICAgaW5wdXQgPSBieXRlcyhpbnB1dCkKCiAgICAgICAgaWYgYWNlX3ByZWZpeCBub3QgaW4gaW5wdXQ6CiAgICAgICAgICAgICMgRmFzdCBwYXRoCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dC5kZWNvZGUoJ2FzY2lpJyksIGxlbihpbnB1dCkKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgbGFiZWxzID0gaW5wdXQuc3BsaXQoYiIuIikKCiAgICAgICAgaWYgbGFiZWxzIGFuZCBsZW4obGFiZWxzWy0xXSkgPT0gMDoKICAgICAgICAgICAgdHJhaWxpbmdfZG90ID0gJy4nCiAgICAgICAgICAgIGRlbCBsYWJlbHNbLTFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJhaWxpbmdfZG90ID0gJycKCiAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICBmb3IgbGFiZWwgaW4gbGFiZWxzOgogICAgICAgICAgICByZXN1bHQuYXBwZW5kKFRvVW5pY29kZShsYWJlbCkpCgogICAgICAgIHJldHVybiAiLiIuam9pbihyZXN1bHQpK3RyYWlsaW5nX2RvdCwgbGVuKGlucHV0KQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgX2J1ZmZlcl9lbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycywgZmluYWwpOgogICAgICAgIGlmIGVycm9ycyAhPSAnc3RyaWN0JzoKICAgICAgICAgICAgIyBJRE5BIGlzIHF1aXRlIGNsZWFyIHRoYXQgaW1wbGVtZW50YXRpb25zIG11c3QgYmUgc3RyaWN0CiAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigidW5zdXBwb3J0ZWQgZXJyb3IgaGFuZGxpbmcgIitlcnJvcnMpCgogICAgICAgIGlmIG5vdCBpbnB1dDoKICAgICAgICAgICAgcmV0dXJuIChiJycsIDApCgogICAgICAgIGxhYmVscyA9IGRvdHMuc3BsaXQoaW5wdXQpCiAgICAgICAgdHJhaWxpbmdfZG90ID0gYicnCiAgICAgICAgaWYgbGFiZWxzOgogICAgICAgICAgICBpZiBub3QgbGFiZWxzWy0xXToKICAgICAgICAgICAgICAgIHRyYWlsaW5nX2RvdCA9IGInLicKICAgICAgICAgICAgICAgIGRlbCBsYWJlbHNbLTFdCiAgICAgICAgICAgIGVsaWYgbm90IGZpbmFsOgogICAgICAgICAgICAgICAgIyBLZWVwIHBvdGVudGlhbGx5IHVuZmluaXNoZWQgbGFiZWwgdW50aWwgdGhlIG5leHQgY2FsbAogICAgICAgICAgICAgICAgZGVsIGxhYmVsc1stMV0KICAgICAgICAgICAgICAgIGlmIGxhYmVsczoKICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ19kb3QgPSBiJy4nCgogICAgICAgIHJlc3VsdCA9IGJ5dGVhcnJheSgpCiAgICAgICAgc2l6ZSA9IDAKICAgICAgICBmb3IgbGFiZWwgaW4gbGFiZWxzOgogICAgICAgICAgICBpZiBzaXplOgogICAgICAgICAgICAgICAgIyBKb2luIHdpdGggVSswMDJFCiAgICAgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKGInLicpCiAgICAgICAgICAgICAgICBzaXplICs9IDEKICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChUb0FTQ0lJKGxhYmVsKSkKICAgICAgICAgICAgc2l6ZSArPSBsZW4obGFiZWwpCgogICAgICAgIHJlc3VsdCArPSB0cmFpbGluZ19kb3QKICAgICAgICBzaXplICs9IGxlbih0cmFpbGluZ19kb3QpCiAgICAgICAgcmV0dXJuIChieXRlcyhyZXN1bHQpLCBzaXplKQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgX2J1ZmZlcl9kZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycywgZmluYWwpOgogICAgICAgIGlmIGVycm9ycyAhPSAnc3RyaWN0JzoKICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJVbnN1cHBvcnRlZCBlcnJvciBoYW5kbGluZyAiK2Vycm9ycykKCiAgICAgICAgaWYgbm90IGlucHV0OgogICAgICAgICAgICByZXR1cm4gKCIiLCAwKQoKICAgICAgICAjIElETkEgYWxsb3dzIGRlY29kaW5nIHRvIG9wZXJhdGUgb24gVW5pY29kZSBzdHJpbmdzLCB0b28uCiAgICAgICAgaWYgaXNpbnN0YW5jZShpbnB1dCwgc3RyKToKICAgICAgICAgICAgbGFiZWxzID0gZG90cy5zcGxpdChpbnB1dCkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIE11c3QgYmUgQVNDSUkgc3RyaW5nCiAgICAgICAgICAgIGlucHV0ID0gc3RyKGlucHV0LCAiYXNjaWkiKQogICAgICAgICAgICBsYWJlbHMgPSBpbnB1dC5zcGxpdCgiLiIpCgogICAgICAgIHRyYWlsaW5nX2RvdCA9ICcnCiAgICAgICAgaWYgbGFiZWxzOgogICAgICAgICAgICBpZiBub3QgbGFiZWxzWy0xXToKICAgICAgICAgICAgICAgIHRyYWlsaW5nX2RvdCA9ICcuJwogICAgICAgICAgICAgICAgZGVsIGxhYmVsc1stMV0KICAgICAgICAgICAgZWxpZiBub3QgZmluYWw6CiAgICAgICAgICAgICAgICAjIEtlZXAgcG90ZW50aWFsbHkgdW5maW5pc2hlZCBsYWJlbCB1bnRpbCB0aGUgbmV4dCBjYWxsCiAgICAgICAgICAgICAgICBkZWwgbGFiZWxzWy0xXQogICAgICAgICAgICAgICAgaWYgbGFiZWxzOgogICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nX2RvdCA9ICcuJwoKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIHNpemUgPSAwCiAgICAgICAgZm9yIGxhYmVsIGluIGxhYmVsczoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChUb1VuaWNvZGUobGFiZWwpKQogICAgICAgICAgICBpZiBzaXplOgogICAgICAgICAgICAgICAgc2l6ZSArPSAxCiAgICAgICAgICAgIHNpemUgKz0gbGVuKGxhYmVsKQoKICAgICAgICByZXN1bHQgPSAiLiIuam9pbihyZXN1bHQpICsgdHJhaWxpbmdfZG90CiAgICAgICAgc2l6ZSArPSBsZW4odHJhaWxpbmdfZG90KQogICAgICAgIHJldHVybiAocmVzdWx0LCBzaXplKQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lkbmEnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICkKUEsDBBQAAAAAAAIgo1bKCTkLHQQAAB0EAAAXAAAAZW5jb2RpbmdzL2lzbzIwMjJfanAucHkjCiMgaXNvMjAyMl9qcC5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIElTTzIwMjJfSlAKIwojIFdyaXR0ZW4gYnkgSHllLVNoaWsgQ2hhbmcgPHBlcmt5QEZyZWVCU0Qub3JnPgojCgppbXBvcnQgX2NvZGVjc19pc28yMDIyLCBjb2RlY3MKaW1wb3J0IF9tdWx0aWJ5dGVjb2RlYyBhcyBtYmMKCmNvZGVjID0gX2NvZGVjc19pc28yMDIyLmdldGNvZGVjKCdpc28yMDIyX2pwJykKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICBlbmNvZGUgPSBjb2RlYy5lbmNvZGUKICAgIGRlY29kZSA9IGNvZGVjLmRlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIEluY3JlbWVudGFsRGVjb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGNvZGVjID0gY29kZWMKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0naXNvMjAyMl9qcCcsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVgpwP9YlBAAAJQQAABkAAABlbmNvZGluZ3MvaXNvMjAyMl9qcF8xLnB5IwojIGlzbzIwMjJfanBfMS5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIElTTzIwMjJfSlBfMQojCiMgV3JpdHRlbiBieSBIeWUtU2hpayBDaGFuZyA8cGVya3lARnJlZUJTRC5vcmc+CiMKCmltcG9ydCBfY29kZWNzX2lzbzIwMjIsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2lzbzIwMjIuZ2V0Y29kZWMoJ2lzbzIwMjJfanBfMScpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzIwMjJfanBfMScsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVkxetiglBAAAJQQAABkAAABlbmNvZGluZ3MvaXNvMjAyMl9qcF8yLnB5IwojIGlzbzIwMjJfanBfMi5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIElTTzIwMjJfSlBfMgojCiMgV3JpdHRlbiBieSBIeWUtU2hpayBDaGFuZyA8cGVya3lARnJlZUJTRC5vcmc+CiMKCmltcG9ydCBfY29kZWNzX2lzbzIwMjIsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2lzbzIwMjIuZ2V0Y29kZWMoJ2lzbzIwMjJfanBfMicpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzIwMjJfanBfMicsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVn3OsSoxBAAAMQQAABwAAABlbmNvZGluZ3MvaXNvMjAyMl9qcF8yMDA0LnB5IwojIGlzbzIwMjJfanBfMjAwNC5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIElTTzIwMjJfSlBfMjAwNAojCiMgV3JpdHRlbiBieSBIeWUtU2hpayBDaGFuZyA8cGVya3lARnJlZUJTRC5vcmc+CiMKCmltcG9ydCBfY29kZWNzX2lzbzIwMjIsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2lzbzIwMjIuZ2V0Y29kZWMoJ2lzbzIwMjJfanBfMjAwNCcpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzIwMjJfanBfMjAwNCcsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVrG54cslBAAAJQQAABkAAABlbmNvZGluZ3MvaXNvMjAyMl9qcF8zLnB5IwojIGlzbzIwMjJfanBfMy5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIElTTzIwMjJfSlBfMwojCiMgV3JpdHRlbiBieSBIeWUtU2hpayBDaGFuZyA8cGVya3lARnJlZUJTRC5vcmc+CiMKCmltcG9ydCBfY29kZWNzX2lzbzIwMjIsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2lzbzIwMjIuZ2V0Y29kZWMoJ2lzbzIwMjJfanBfMycpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZW5jb2RlID0gY29kZWMuZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlYy5kZWNvZGUKCmNsYXNzIEluY3JlbWVudGFsRW5jb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVdyaXRlciwgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzIwMjJfanBfMycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVo4CfGstBAAALQQAABsAAABlbmNvZGluZ3MvaXNvMjAyMl9qcF9leHQucHkjCiMgaXNvMjAyMl9qcF9leHQucHk6IFB5dGhvbiBVbmljb2RlIENvZGVjIGZvciBJU08yMDIyX0pQX0VYVAojCiMgV3JpdHRlbiBieSBIeWUtU2hpayBDaGFuZyA8cGVya3lARnJlZUJTRC5vcmc+CiMKCmltcG9ydCBfY29kZWNzX2lzbzIwMjIsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2lzbzIwMjIuZ2V0Y29kZWMoJ2lzbzIwMjJfanBfZXh0JykKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICBlbmNvZGUgPSBjb2RlYy5lbmNvZGUKICAgIGRlY29kZSA9IGNvZGVjLmRlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIEluY3JlbWVudGFsRGVjb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGNvZGVjID0gY29kZWMKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0naXNvMjAyMl9qcF9leHQnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAIgo1bq7U8PHQQAAB0EAAAXAAAAZW5jb2RpbmdzL2lzbzIwMjJfa3IucHkjCiMgaXNvMjAyMl9rci5weTogUHl0aG9uIFVuaWNvZGUgQ29kZWMgZm9yIElTTzIwMjJfS1IKIwojIFdyaXR0ZW4gYnkgSHllLVNoaWsgQ2hhbmcgPHBlcmt5QEZyZWVCU0Qub3JnPgojCgppbXBvcnQgX2NvZGVjc19pc28yMDIyLCBjb2RlY3MKaW1wb3J0IF9tdWx0aWJ5dGVjb2RlYyBhcyBtYmMKCmNvZGVjID0gX2NvZGVjc19pc28yMDIyLmdldGNvZGVjKCdpc28yMDIyX2tyJykKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICBlbmNvZGUgPSBjb2RlYy5lbmNvZGUKICAgIGRlY29kZSA9IGNvZGVjLmRlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIEluY3JlbWVudGFsRGVjb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGNvZGVjID0gY29kZWMKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0naXNvMjAyMl9rcicsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVkYLf8Z4MwAAeDMAABYAAABlbmNvZGluZ3MvaXNvODg1OV8xLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBpc284ODU5XzEgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL0lTTzg4NTkvODg1OS0xLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0naXNvODg1OS0xJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x4ODAnICAgICAjICAweDgwIC0+IDxjb250cm9sPgogICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgogICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgogICAgJ1x4ODMnICAgICAjICAweDgzIC0+IDxjb250cm9sPgogICAgJ1x4ODQnICAgICAjICAweDg0IC0+IDxjb250cm9sPgogICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgogICAgJ1x4ODYnICAgICAjICAweDg2IC0+IDxjb250cm9sPgogICAgJ1x4ODcnICAgICAjICAweDg3IC0+IDxjb250cm9sPgogICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgogICAgJ1x4ODknICAgICAjICAweDg5IC0+IDxjb250cm9sPgogICAgJ1x4OGEnICAgICAjICAweDhBIC0+IDxjb250cm9sPgogICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgogICAgJ1x4OGMnICAgICAjICAweDhDIC0+IDxjb250cm9sPgogICAgJ1x4OGQnICAgICAjICAweDhEIC0+IDxjb250cm9sPgogICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgogICAgJ1x4OGYnICAgICAjICAweDhGIC0+IDxjb250cm9sPgogICAgJ1x4OTAnICAgICAjICAweDkwIC0+IDxjb250cm9sPgogICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgogICAgJ1x4OTInICAgICAjICAweDkyIC0+IDxjb250cm9sPgogICAgJ1x4OTMnICAgICAjICAweDkzIC0+IDxjb250cm9sPgogICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgogICAgJ1x4OTUnICAgICAjICAweDk1IC0+IDxjb250cm9sPgogICAgJ1x4OTYnICAgICAjICAweDk2IC0+IDxjb250cm9sPgogICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgogICAgJ1x4OTgnICAgICAjICAweDk4IC0+IDxjb250cm9sPgogICAgJ1x4OTknICAgICAjICAweDk5IC0+IDxjb250cm9sPgogICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgogICAgJ1x4OWInICAgICAjICAweDlCIC0+IDxjb250cm9sPgogICAgJ1x4OWMnICAgICAjICAweDlDIC0+IDxjb250cm9sPgogICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgogICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgogICAgJ1x4OWYnICAgICAjICAweDlGIC0+IDxjb250cm9sPgogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHhhMScgICAgICMgIDB4QTEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdceGE0JyAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHhhNScgICAgICMgIDB4QTUgLT4gWUVOIFNJR04KICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCiAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhhOCcgICAgICMgIDB4QTggLT4gRElBRVJFU0lTCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdceGFhJyAgICAgIyAgMHhBQSAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YWYnICAgICAjICAweEFGIC0+IE1BQ1JPTgogICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCiAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCiAgICAnXHhiMycgICAgICMgIDB4QjMgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGI0JyAgICAgIyAgMHhCNCAtPiBBQ1VURSBBQ0NFTlQKICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAogICAgJ1x4YjgnICAgICAjICAweEI4IC0+IENFRElMTEEKICAgICdceGI5JyAgICAgIyAgMHhCOSAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdceGJhJyAgICAgIyAgMHhCQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJjJyAgICAgIyAgMHhCQyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKICAgICdceGJkJyAgICAgIyAgMHhCRCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdceGJlJyAgICAgIyAgMHhCRSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKICAgICdceGJmJyAgICAgIyAgMHhCRiAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhjMCcgICAgICMgIDB4QzAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMScgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMicgICAgICMgIDB4QzIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGMzJyAgICAgIyAgMHhDMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGM2JyAgICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQogICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhjOCcgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhjYScgICAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNiJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhjYycgICAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhjZCcgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhjZScgICAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhkMCcgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCiAgICAnXHhkMScgICAgICMgIDB4RDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhkMicgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhkMycgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhkNCcgICAgICMgIDB4RDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGQ1JyAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNycgICAgICMgIDB4RDcgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x4ZDgnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGQ5JyAgICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGRhJyAgICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGRiJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGRkJyAgICAgIyAgMHhERCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGRlJyAgICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHZXJtYW4pCiAgICAnXHhlMCcgICAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGUzJyAgICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGU1JyAgICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGU2JyAgICAgIyAgMHhFNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdceGU3JyAgICAgIyAgMHhFNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU4JyAgICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlOScgICAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlYycgICAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZWQnICAgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjAnICAgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEggKEljZWxhbmRpYykKICAgICdceGYxJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhmMicgICAgICMgIDB4RjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY1JyAgICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHhmOCcgICAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZmInICAgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhmZCcgICAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgJ1x4ZmUnICAgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQogICAgJ1x4ZmYnICAgICAjICAweEZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1b+N66kFTUAABU1AAAXAAAAZW5jb2RpbmdzL2lzbzg4NTlfMTAucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGlzbzg4NTlfMTAgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL0lTTzg4NTkvODg1OS0xMC5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzg4NTktMTAnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHg4MCcgICAgICMgIDB4ODAgLT4gPGNvbnRyb2w+CiAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CiAgICAnXHg4MicgICAgICMgIDB4ODIgLT4gPGNvbnRyb2w+CiAgICAnXHg4MycgICAgICMgIDB4ODMgLT4gPGNvbnRyb2w+CiAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CiAgICAnXHg4NScgICAgICMgIDB4ODUgLT4gPGNvbnRyb2w+CiAgICAnXHg4NicgICAgICMgIDB4ODYgLT4gPGNvbnRyb2w+CiAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CiAgICAnXHg4OCcgICAgICMgIDB4ODggLT4gPGNvbnRyb2w+CiAgICAnXHg4OScgICAgICMgIDB4ODkgLT4gPGNvbnRyb2w+CiAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CiAgICAnXHg4YicgICAgICMgIDB4OEIgLT4gPGNvbnRyb2w+CiAgICAnXHg4YycgICAgICMgIDB4OEMgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZScgICAgICMgIDB4OEUgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZicgICAgICMgIDB4OEYgLT4gPGNvbnRyb2w+CiAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CiAgICAnXHg5MScgICAgICMgIDB4OTEgLT4gPGNvbnRyb2w+CiAgICAnXHg5MicgICAgICMgIDB4OTIgLT4gPGNvbnRyb2w+CiAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CiAgICAnXHg5NCcgICAgICMgIDB4OTQgLT4gPGNvbnRyb2w+CiAgICAnXHg5NScgICAgICMgIDB4OTUgLT4gPGNvbnRyb2w+CiAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CiAgICAnXHg5NycgICAgICMgIDB4OTcgLT4gPGNvbnRyb2w+CiAgICAnXHg5OCcgICAgICMgIDB4OTggLT4gPGNvbnRyb2w+CiAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CiAgICAnXHg5YScgICAgICMgIDB4OUEgLT4gPGNvbnRyb2w+CiAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CiAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTAxMDQnICAgIyAgMHhBMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHUwMTEyJyAgICMgIDB4QTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEyMicgICAjICAweEEzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiAgICAnXHUwMTJhJyAgICMgIDB4QTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEyOCcgICAjICAweEE1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERQogICAgJ1x1MDEzNicgICAjICAweEE2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCiAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCiAgICAnXHUwMTNiJyAgICMgIDB4QTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEEKICAgICdcdTAxMTAnICAgIyAgMHhBOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU1RST0tFCiAgICAnXHUwMTYwJyAgICMgIDB4QUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUwMTY2JyAgICMgIDB4QUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIFNUUk9LRQogICAgJ1x1MDE3ZCcgICAjICAweEFDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCiAgICAnXHUwMTZhJyAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgogICAgJ1x1MDE0YScgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVORwogICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCiAgICAnXHUwMTA1JyAgICMgIDB4QjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgICdcdTAxMTMnICAgIyAgMHhCMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEyMycgICAjICAweEIzIC0+IExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQogICAgJ1x1MDEyYicgICAjICAweEI0IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCiAgICAnXHUwMTI5JyAgICMgIDB4QjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBUSUxERQogICAgJ1x1MDEzNycgICAjICAweEI2IC0+IExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQogICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKICAgICdcdTAxM2MnICAgIyAgMHhCOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENFRElMTEEKICAgICdcdTAxMTEnICAgIyAgMHhCOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFNUUk9LRQogICAgJ1x1MDE2MScgICAjICAweEJBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdcdTAxNjcnICAgIyAgMHhCQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFNUUk9LRQogICAgJ1x1MDE3ZScgICAjICAweEJDIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdcdTIwMTUnICAgIyAgMHhCRCAtPiBIT1JJWk9OVEFMIEJBUgogICAgJ1x1MDE2YicgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCiAgICAnXHUwMTRiJyAgICMgIDB4QkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVORwogICAgJ1x1MDEwMCcgICAjICAweEMwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KICAgICdceGMxJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGMyJyAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzMnICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4YzQnICAgICAjICAweEM0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGM1JyAgICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzYnICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCiAgICAnXHUwMTJlJyAgICMgIDB4QzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSwogICAgJ1x1MDEwYycgICAjICAweEM4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgogICAgJ1x4YzknICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x1MDExOCcgICAjICAweENBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgICdceGNiJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTE2JyAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQogICAgJ1x4Y2QnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjZicgICAgICMgIDB4Q0YgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDAnICAgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQogICAgJ1x1MDE0NScgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiAgICAnXHUwMTRjJyAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgogICAgJ1x4ZDMnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkNScgICAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhkNicgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE2OCcgICAjICAweEQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERQogICAgJ1x4ZDgnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdcdTAxNzInICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCiAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhkZCcgICAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhkZScgICAgICMgIDB4REUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKICAgICdceGRmJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR2VybWFuKQogICAgJ1x1MDEwMScgICAjICAweEUwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OCiAgICAnXHhlMScgICAgICMgIDB4RTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZTInICAgICAjICAweEUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTMnICAgICAjICAweEUzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGU0JyAgICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTUnICAgICAjICAweEU1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZTYnICAgICAjICAweEU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBBRQogICAgJ1x1MDEyZicgICAjICAweEU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLCiAgICAnXHUwMTBkJyAgICMgIDB4RTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTgogICAgJ1x4ZTknICAgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdcdTAxMTknICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTE3JyAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKICAgICdceGVkJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGYwJyAgICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCiAgICAnXHUwMTQ2JyAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiAgICAnXHUwMTRkJyAgICMgIDB4RjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgICdceGYzJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmNCcgICAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNScgICAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4ZjYnICAgICAjICAweEY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTY5JyAgICMgIDB4RjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERQogICAgJ1x4ZjgnICAgICAjICAweEY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHUwMTczJyAgICMgIDB4RjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBPR09ORUsKICAgICdceGZhJyAgICAgIyAgMHhGQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmYicgICAgICMgIDB4RkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmYycgICAgICMgIDB4RkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGZkJyAgICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhmZScgICAgICMgIDB4RkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCiAgICAnXHUwMTM4JyAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEtSQQopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWLGYr2i8wAAAvMAAAFwAAAGVuY29kaW5ncy9pc284ODU5XzExLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBpc284ODU5XzExIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9JU084ODU5Lzg4NTktMTEuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdpc284ODU5LTExJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x4ODAnICAgICAjICAweDgwIC0+IDxjb250cm9sPgogICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgogICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgogICAgJ1x4ODMnICAgICAjICAweDgzIC0+IDxjb250cm9sPgogICAgJ1x4ODQnICAgICAjICAweDg0IC0+IDxjb250cm9sPgogICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgogICAgJ1x4ODYnICAgICAjICAweDg2IC0+IDxjb250cm9sPgogICAgJ1x4ODcnICAgICAjICAweDg3IC0+IDxjb250cm9sPgogICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgogICAgJ1x4ODknICAgICAjICAweDg5IC0+IDxjb250cm9sPgogICAgJ1x4OGEnICAgICAjICAweDhBIC0+IDxjb250cm9sPgogICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgogICAgJ1x4OGMnICAgICAjICAweDhDIC0+IDxjb250cm9sPgogICAgJ1x4OGQnICAgICAjICAweDhEIC0+IDxjb250cm9sPgogICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgogICAgJ1x4OGYnICAgICAjICAweDhGIC0+IDxjb250cm9sPgogICAgJ1x4OTAnICAgICAjICAweDkwIC0+IDxjb250cm9sPgogICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgogICAgJ1x4OTInICAgICAjICAweDkyIC0+IDxjb250cm9sPgogICAgJ1x4OTMnICAgICAjICAweDkzIC0+IDxjb250cm9sPgogICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgogICAgJ1x4OTUnICAgICAjICAweDk1IC0+IDxjb250cm9sPgogICAgJ1x4OTYnICAgICAjICAweDk2IC0+IDxjb250cm9sPgogICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgogICAgJ1x4OTgnICAgICAjICAweDk4IC0+IDxjb250cm9sPgogICAgJ1x4OTknICAgICAjICAweDk5IC0+IDxjb250cm9sPgogICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgogICAgJ1x4OWInICAgICAjICAweDlCIC0+IDxjb250cm9sPgogICAgJ1x4OWMnICAgICAjICAweDlDIC0+IDxjb250cm9sPgogICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgogICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgogICAgJ1x4OWYnICAgICAjICAweDlGIC0+IDxjb250cm9sPgogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUwZTAxJyAgICMgIDB4QTEgLT4gVEhBSSBDSEFSQUNURVIgS08gS0FJCiAgICAnXHUwZTAyJyAgICMgIDB4QTIgLT4gVEhBSSBDSEFSQUNURVIgS0hPIEtIQUkKICAgICdcdTBlMDMnICAgIyAgMHhBMyAtPiBUSEFJIENIQVJBQ1RFUiBLSE8gS0hVQVQKICAgICdcdTBlMDQnICAgIyAgMHhBNCAtPiBUSEFJIENIQVJBQ1RFUiBLSE8gS0hXQUkKICAgICdcdTBlMDUnICAgIyAgMHhBNSAtPiBUSEFJIENIQVJBQ1RFUiBLSE8gS0hPTgogICAgJ1x1MGUwNicgICAjICAweEE2IC0+IFRIQUkgQ0hBUkFDVEVSIEtITyBSQUtIQU5HCiAgICAnXHUwZTA3JyAgICMgIDB4QTcgLT4gVEhBSSBDSEFSQUNURVIgTkdPIE5HVQogICAgJ1x1MGUwOCcgICAjICAweEE4IC0+IFRIQUkgQ0hBUkFDVEVSIENITyBDSEFOCiAgICAnXHUwZTA5JyAgICMgIDB4QTkgLT4gVEhBSSBDSEFSQUNURVIgQ0hPIENISU5HCiAgICAnXHUwZTBhJyAgICMgIDB4QUEgLT4gVEhBSSBDSEFSQUNURVIgQ0hPIENIQU5HCiAgICAnXHUwZTBiJyAgICMgIDB4QUIgLT4gVEhBSSBDSEFSQUNURVIgU08gU08KICAgICdcdTBlMGMnICAgIyAgMHhBQyAtPiBUSEFJIENIQVJBQ1RFUiBDSE8gQ0hPRQogICAgJ1x1MGUwZCcgICAjICAweEFEIC0+IFRIQUkgQ0hBUkFDVEVSIFlPIFlJTkcKICAgICdcdTBlMGUnICAgIyAgMHhBRSAtPiBUSEFJIENIQVJBQ1RFUiBETyBDSEFEQQogICAgJ1x1MGUwZicgICAjICAweEFGIC0+IFRIQUkgQ0hBUkFDVEVSIFRPIFBBVEFLCiAgICAnXHUwZTEwJyAgICMgIDB4QjAgLT4gVEhBSSBDSEFSQUNURVIgVEhPIFRIQU4KICAgICdcdTBlMTEnICAgIyAgMHhCMSAtPiBUSEFJIENIQVJBQ1RFUiBUSE8gTkFOR01PTlRITwogICAgJ1x1MGUxMicgICAjICAweEIyIC0+IFRIQUkgQ0hBUkFDVEVSIFRITyBQSFVUSEFPCiAgICAnXHUwZTEzJyAgICMgIDB4QjMgLT4gVEhBSSBDSEFSQUNURVIgTk8gTkVOCiAgICAnXHUwZTE0JyAgICMgIDB4QjQgLT4gVEhBSSBDSEFSQUNURVIgRE8gREVLCiAgICAnXHUwZTE1JyAgICMgIDB4QjUgLT4gVEhBSSBDSEFSQUNURVIgVE8gVEFPCiAgICAnXHUwZTE2JyAgICMgIDB4QjYgLT4gVEhBSSBDSEFSQUNURVIgVEhPIFRIVU5HCiAgICAnXHUwZTE3JyAgICMgIDB4QjcgLT4gVEhBSSBDSEFSQUNURVIgVEhPIFRIQUhBTgogICAgJ1x1MGUxOCcgICAjICAweEI4IC0+IFRIQUkgQ0hBUkFDVEVSIFRITyBUSE9ORwogICAgJ1x1MGUxOScgICAjICAweEI5IC0+IFRIQUkgQ0hBUkFDVEVSIE5PIE5VCiAgICAnXHUwZTFhJyAgICMgIDB4QkEgLT4gVEhBSSBDSEFSQUNURVIgQk8gQkFJTUFJCiAgICAnXHUwZTFiJyAgICMgIDB4QkIgLT4gVEhBSSBDSEFSQUNURVIgUE8gUExBCiAgICAnXHUwZTFjJyAgICMgIDB4QkMgLT4gVEhBSSBDSEFSQUNURVIgUEhPIFBIVU5HCiAgICAnXHUwZTFkJyAgICMgIDB4QkQgLT4gVEhBSSBDSEFSQUNURVIgRk8gRkEKICAgICdcdTBlMWUnICAgIyAgMHhCRSAtPiBUSEFJIENIQVJBQ1RFUiBQSE8gUEhBTgogICAgJ1x1MGUxZicgICAjICAweEJGIC0+IFRIQUkgQ0hBUkFDVEVSIEZPIEZBTgogICAgJ1x1MGUyMCcgICAjICAweEMwIC0+IFRIQUkgQ0hBUkFDVEVSIFBITyBTQU1QSEFPCiAgICAnXHUwZTIxJyAgICMgIDB4QzEgLT4gVEhBSSBDSEFSQUNURVIgTU8gTUEKICAgICdcdTBlMjInICAgIyAgMHhDMiAtPiBUSEFJIENIQVJBQ1RFUiBZTyBZQUsKICAgICdcdTBlMjMnICAgIyAgMHhDMyAtPiBUSEFJIENIQVJBQ1RFUiBSTyBSVUEKICAgICdcdTBlMjQnICAgIyAgMHhDNCAtPiBUSEFJIENIQVJBQ1RFUiBSVQogICAgJ1x1MGUyNScgICAjICAweEM1IC0+IFRIQUkgQ0hBUkFDVEVSIExPIExJTkcKICAgICdcdTBlMjYnICAgIyAgMHhDNiAtPiBUSEFJIENIQVJBQ1RFUiBMVQogICAgJ1x1MGUyNycgICAjICAweEM3IC0+IFRIQUkgQ0hBUkFDVEVSIFdPIFdBRU4KICAgICdcdTBlMjgnICAgIyAgMHhDOCAtPiBUSEFJIENIQVJBQ1RFUiBTTyBTQUxBCiAgICAnXHUwZTI5JyAgICMgIDB4QzkgLT4gVEhBSSBDSEFSQUNURVIgU08gUlVTSQogICAgJ1x1MGUyYScgICAjICAweENBIC0+IFRIQUkgQ0hBUkFDVEVSIFNPIFNVQQogICAgJ1x1MGUyYicgICAjICAweENCIC0+IFRIQUkgQ0hBUkFDVEVSIEhPIEhJUAogICAgJ1x1MGUyYycgICAjICAweENDIC0+IFRIQUkgQ0hBUkFDVEVSIExPIENIVUxBCiAgICAnXHUwZTJkJyAgICMgIDB4Q0QgLT4gVEhBSSBDSEFSQUNURVIgTyBBTkcKICAgICdcdTBlMmUnICAgIyAgMHhDRSAtPiBUSEFJIENIQVJBQ1RFUiBITyBOT0tIVUsKICAgICdcdTBlMmYnICAgIyAgMHhDRiAtPiBUSEFJIENIQVJBQ1RFUiBQQUlZQU5OT0kKICAgICdcdTBlMzAnICAgIyAgMHhEMCAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIEEKICAgICdcdTBlMzEnICAgIyAgMHhEMSAtPiBUSEFJIENIQVJBQ1RFUiBNQUkgSEFOLUFLQVQKICAgICdcdTBlMzInICAgIyAgMHhEMiAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIEFBCiAgICAnXHUwZTMzJyAgICMgIDB4RDMgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBBTQogICAgJ1x1MGUzNCcgICAjICAweEQ0IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgSQogICAgJ1x1MGUzNScgICAjICAweEQ1IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgSUkKICAgICdcdTBlMzYnICAgIyAgMHhENiAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIFVFCiAgICAnXHUwZTM3JyAgICMgIDB4RDcgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBVRUUKICAgICdcdTBlMzgnICAgIyAgMHhEOCAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIFUKICAgICdcdTBlMzknICAgIyAgMHhEOSAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIFVVCiAgICAnXHUwZTNhJyAgICMgIDB4REEgLT4gVEhBSSBDSEFSQUNURVIgUEhJTlRIVQogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdTBlM2YnICAgIyAgMHhERiAtPiBUSEFJIENVUlJFTkNZIFNZTUJPTCBCQUhUCiAgICAnXHUwZTQwJyAgICMgIDB4RTAgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBFCiAgICAnXHUwZTQxJyAgICMgIDB4RTEgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBBRQogICAgJ1x1MGU0MicgICAjICAweEUyIC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgTwogICAgJ1x1MGU0MycgICAjICAweEUzIC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTVVBTgogICAgJ1x1MGU0NCcgICAjICAweEU0IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTUFMQUkKICAgICdcdTBlNDUnICAgIyAgMHhFNSAtPiBUSEFJIENIQVJBQ1RFUiBMQUtLSEFOR1lBTwogICAgJ1x1MGU0NicgICAjICAweEU2IC0+IFRIQUkgQ0hBUkFDVEVSIE1BSVlBTU9LCiAgICAnXHUwZTQ3JyAgICMgIDB4RTcgLT4gVEhBSSBDSEFSQUNURVIgTUFJVEFJS0hVCiAgICAnXHUwZTQ4JyAgICMgIDB4RTggLT4gVEhBSSBDSEFSQUNURVIgTUFJIEVLCiAgICAnXHUwZTQ5JyAgICMgIDB4RTkgLT4gVEhBSSBDSEFSQUNURVIgTUFJIFRITwogICAgJ1x1MGU0YScgICAjICAweEVBIC0+IFRIQUkgQ0hBUkFDVEVSIE1BSSBUUkkKICAgICdcdTBlNGInICAgIyAgMHhFQiAtPiBUSEFJIENIQVJBQ1RFUiBNQUkgQ0hBVFRBV0EKICAgICdcdTBlNGMnICAgIyAgMHhFQyAtPiBUSEFJIENIQVJBQ1RFUiBUSEFOVEhBS0hBVAogICAgJ1x1MGU0ZCcgICAjICAweEVEIC0+IFRIQUkgQ0hBUkFDVEVSIE5JS0hBSElUCiAgICAnXHUwZTRlJyAgICMgIDB4RUUgLT4gVEhBSSBDSEFSQUNURVIgWUFNQUtLQU4KICAgICdcdTBlNGYnICAgIyAgMHhFRiAtPiBUSEFJIENIQVJBQ1RFUiBGT05HTUFOCiAgICAnXHUwZTUwJyAgICMgIDB4RjAgLT4gVEhBSSBESUdJVCBaRVJPCiAgICAnXHUwZTUxJyAgICMgIDB4RjEgLT4gVEhBSSBESUdJVCBPTkUKICAgICdcdTBlNTInICAgIyAgMHhGMiAtPiBUSEFJIERJR0lUIFRXTwogICAgJ1x1MGU1MycgICAjICAweEYzIC0+IFRIQUkgRElHSVQgVEhSRUUKICAgICdcdTBlNTQnICAgIyAgMHhGNCAtPiBUSEFJIERJR0lUIEZPVVIKICAgICdcdTBlNTUnICAgIyAgMHhGNSAtPiBUSEFJIERJR0lUIEZJVkUKICAgICdcdTBlNTYnICAgIyAgMHhGNiAtPiBUSEFJIERJR0lUIFNJWAogICAgJ1x1MGU1NycgICAjICAweEY3IC0+IFRIQUkgRElHSVQgU0VWRU4KICAgICdcdTBlNTgnICAgIyAgMHhGOCAtPiBUSEFJIERJR0lUIEVJR0hUCiAgICAnXHUwZTU5JyAgICMgIDB4RjkgLT4gVEhBSSBESUdJVCBOSU5FCiAgICAnXHUwZTVhJyAgICMgIDB4RkEgLT4gVEhBSSBDSEFSQUNURVIgQU5HS0hBTktIVQogICAgJ1x1MGU1YicgICAjICAweEZCIC0+IFRIQUkgQ0hBUkFDVEVSIEtIT01VVAogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVsUJQhzXMwAA1zMAABcAAABlbmNvZGluZ3MvaXNvODg1OV8xMy5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgaXNvODg1OV8xMyBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvSVNPODg1OS84ODU5LTEzLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0naXNvODg1OS0xMycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KICAgICdceDgyJyAgICAgIyAgMHg4MiAtPiA8Y29udHJvbD4KICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KICAgICdceDg0JyAgICAgIyAgMHg4NCAtPiA8Y29udHJvbD4KICAgICdceDg1JyAgICAgIyAgMHg4NSAtPiA8Y29udHJvbD4KICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KICAgICdceDg3JyAgICAgIyAgMHg4NyAtPiA8Y29udHJvbD4KICAgICdceDg4JyAgICAgIyAgMHg4OCAtPiA8Y29udHJvbD4KICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KICAgICdceDhhJyAgICAgIyAgMHg4QSAtPiA8Y29udHJvbD4KICAgICdceDhiJyAgICAgIyAgMHg4QiAtPiA8Y29udHJvbD4KICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KICAgICdceDhkJyAgICAgIyAgMHg4RCAtPiA8Y29udHJvbD4KICAgICdceDhlJyAgICAgIyAgMHg4RSAtPiA8Y29udHJvbD4KICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KICAgICdceDkwJyAgICAgIyAgMHg5MCAtPiA8Y29udHJvbD4KICAgICdceDkxJyAgICAgIyAgMHg5MSAtPiA8Y29udHJvbD4KICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KICAgICdceDkzJyAgICAgIyAgMHg5MyAtPiA8Y29udHJvbD4KICAgICdceDk0JyAgICAgIyAgMHg5NCAtPiA8Y29udHJvbD4KICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KICAgICdceDk2JyAgICAgIyAgMHg5NiAtPiA8Y29udHJvbD4KICAgICdceDk3JyAgICAgIyAgMHg5NyAtPiA8Y29udHJvbD4KICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KICAgICdceDk5JyAgICAgIyAgMHg5OSAtPiA8Y29udHJvbD4KICAgICdceDlhJyAgICAgIyAgMHg5QSAtPiA8Y29udHJvbD4KICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KICAgICdceDljJyAgICAgIyAgMHg5QyAtPiA8Y29udHJvbD4KICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KICAgICdceDlmJyAgICAgIyAgMHg5RiAtPiA8Y29udHJvbD4KICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x1MjAxZCcgICAjICAweEExIC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdceGE0JyAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHUyMDFlJyAgICMgIDB4QTUgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4ZDgnICAgICAjICAweEE4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MDE1NicgICAjICAweEFBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBCiAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgogICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCiAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHhjNicgICAgICMgIDB4QUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHUyMDFjJyAgICMgIDB4QjQgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAogICAgJ1x4ZjgnICAgICAjICAweEI4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhiOScgICAgICMgIDB4QjkgLT4gU1VQRVJTQ1JJUFQgT05FCiAgICAnXHUwMTU3JyAgICMgIDB4QkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDRURJTExBCiAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYycgICAgICMgIDB4QkMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhiZCcgICAgICMgIDB4QkQgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHhiZScgICAgICMgIDB4QkUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAnXHhlNicgICAgICMgIDB4QkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCiAgICAnXHUwMTA0JyAgICMgIDB4QzAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSwogICAgJ1x1MDEyZScgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBPR09ORUsKICAgICdcdTAxMDAnICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OCiAgICAnXHUwMTA2JyAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCiAgICAnXHhjNCcgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzUnICAgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHUwMTE4JyAgICMgIDB4QzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x1MDExMicgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KICAgICdcdTAxMGMnICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KICAgICdceGM5JyAgICAgIyAgMHhDOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdcdTAxNzknICAgIyAgMHhDQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKICAgICdcdTAxMTYnICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUwMTIyJyAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKICAgICdcdTAxMzYnICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQQogICAgJ1x1MDEyYScgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KICAgICdcdTAxM2InICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0VESUxMQQogICAgJ1x1MDE2MCcgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgJ1x1MDE0MycgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgJ1x1MDE0NScgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiAgICAnXHhkMycgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHUwMTRjJyAgICMgIDB4RDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgogICAgJ1x4ZDUnICAgICAjICAweEQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4ZDYnICAgICAjICAweEQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGQ3JyAgICAgIyAgMHhENyAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCiAgICAnXHUwMTcyJyAgICMgIDB4RDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgJ1x1MDE0MScgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKICAgICdcdTAxNWEnICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKICAgICdcdTAxNmEnICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCiAgICAnXHhkYycgICAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE3YicgICAjICAweEREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgICdcdTAxN2QnICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdceGRmJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR2VybWFuKQogICAgJ1x1MDEwNScgICAjICAweEUwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHUwMTJmJyAgICMgIDB4RTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKICAgICdcdTAxMDEnICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEwNycgICAjICAweEUzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgICdceGU0JyAgICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTUnICAgICAjICAweEU1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x1MDExOScgICAjICAweEU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLCiAgICAnXHUwMTEzJyAgICMgIDB4RTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KICAgICdcdTAxMGQnICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAnXHhlOScgICAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x1MDE3YScgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEUKICAgICdcdTAxMTcnICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDEyMycgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQogICAgJ1x1MDEzNycgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQogICAgJ1x1MDEyYicgICAjICAweEVFIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCiAgICAnXHUwMTNjJyAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiAgICAnXHUwMTYxJyAgICMgIDB4RjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgJ1x1MDE0NCcgICAjICAweEYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKICAgICdcdTAxNDYnICAgIyAgMHhGMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKICAgICdceGYzJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHUwMTRkJyAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgICdceGY1JyAgICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUwMTczJyAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBPR09ORUsKICAgICdcdTAxNDInICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x1MDE1YicgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUKICAgICdcdTAxNmInICAgIyAgMHhGQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgogICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTdjJyAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgICdcdTAxN2UnICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHUyMDE5JyAgICMgIDB4RkYgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1bWEx0pVDUAAFQ1AAAXAAAAZW5jb2RpbmdzL2lzbzg4NTlfMTQucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGlzbzg4NTlfMTQgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL0lTTzg4NTkvODg1OS0xNC5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzg4NTktMTQnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHg4MCcgICAgICMgIDB4ODAgLT4gPGNvbnRyb2w+CiAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CiAgICAnXHg4MicgICAgICMgIDB4ODIgLT4gPGNvbnRyb2w+CiAgICAnXHg4MycgICAgICMgIDB4ODMgLT4gPGNvbnRyb2w+CiAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CiAgICAnXHg4NScgICAgICMgIDB4ODUgLT4gPGNvbnRyb2w+CiAgICAnXHg4NicgICAgICMgIDB4ODYgLT4gPGNvbnRyb2w+CiAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CiAgICAnXHg4OCcgICAgICMgIDB4ODggLT4gPGNvbnRyb2w+CiAgICAnXHg4OScgICAgICMgIDB4ODkgLT4gPGNvbnRyb2w+CiAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CiAgICAnXHg4YicgICAgICMgIDB4OEIgLT4gPGNvbnRyb2w+CiAgICAnXHg4YycgICAgICMgIDB4OEMgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZScgICAgICMgIDB4OEUgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZicgICAgICMgIDB4OEYgLT4gPGNvbnRyb2w+CiAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CiAgICAnXHg5MScgICAgICMgIDB4OTEgLT4gPGNvbnRyb2w+CiAgICAnXHg5MicgICAgICMgIDB4OTIgLT4gPGNvbnRyb2w+CiAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CiAgICAnXHg5NCcgICAgICMgIDB4OTQgLT4gPGNvbnRyb2w+CiAgICAnXHg5NScgICAgICMgIDB4OTUgLT4gPGNvbnRyb2w+CiAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CiAgICAnXHg5NycgICAgICMgIDB4OTcgLT4gPGNvbnRyb2w+CiAgICAnXHg5OCcgICAgICMgIDB4OTggLT4gPGNvbnRyb2w+CiAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CiAgICAnXHg5YScgICAgICMgIDB4OUEgLT4gPGNvbnRyb2w+CiAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CiAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTFlMDInICAgIyAgMHhBMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUxZTAzJyAgICMgIDB4QTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBET1QgQUJPVkUKICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHUwMTBhJyAgICMgIDB4QTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDEwYicgICAjICAweEE1IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUxZTBhJyAgICMgIDB4QTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIERPVCBBQk9WRQogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MWU4MCcgICAjICAweEE4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBHUkFWRQogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHUxZTgyJyAgICMgIDB4QUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEFDVVRFCiAgICAnXHUxZTBiJyAgICMgIDB4QUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBET1QgQUJPVkUKICAgICdcdTFlZjInICAgIyAgMHhBQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggR1JBVkUKICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x1MDE3OCcgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdcdTFlMWUnICAgIyAgMHhCMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUxZTFmJyAgICMgIDB4QjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBET1QgQUJPVkUKICAgICdcdTAxMjAnICAgIyAgMHhCMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUwMTIxJyAgICMgIDB4QjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkUKICAgICdcdTFlNDAnICAgIyAgMHhCNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUxZTQxJyAgICMgIDB4QjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBET1QgQUJPVkUKICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KICAgICdcdTFlNTYnICAgIyAgMHhCNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUxZTgxJyAgICMgIDB4QjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBHUkFWRQogICAgJ1x1MWU1NycgICAjICAweEI5IC0+IExBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUxZTgzJyAgICMgIDB4QkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBBQ1VURQogICAgJ1x1MWU2MCcgICAjICAweEJCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQUJPVkUKICAgICdcdTFlZjMnICAgIyAgMHhCQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEdSQVZFCiAgICAnXHUxZTg0JyAgICMgIDB4QkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERJQUVSRVNJUwogICAgJ1x1MWU4NScgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRElBRVJFU0lTCiAgICAnXHUxZTYxJyAgICMgIDB4QkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBET1QgQUJPVkUKICAgICdceGMwJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMxJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGMyJyAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzMnICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4YzQnICAgICAjICAweEM0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGM1JyAgICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzYnICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCiAgICAnXHhjNycgICAgICMgIDB4QzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGM4JyAgICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGM5JyAgICAgIyAgMHhDOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGNhJyAgICAgIyAgMHhDQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGNjJyAgICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGNkJyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2YnICAgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxNzQnICAgIyAgMHhEMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZDEnICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZDInICAgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZDMnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkNScgICAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhkNicgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x1MWU2YScgICAjICAweEQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBET1QgQUJPVkUKICAgICdceGQ4JyAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhkOScgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhkZCcgICAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHUwMTc2JyAgICMgIDB4REUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIENJUkNVTUZMRVgKICAgICdceGRmJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgJ1x4ZTAnICAgICAjICAweEUwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGUxJyAgICAgIyAgMHhFMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlMicgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlMycgICAgICMgIDB4RTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZTQnICAgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhlNScgICAgICMgIDB4RTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNicgICAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCiAgICAnXHhlNycgICAgICMgIDB4RTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlOCcgICAgICMgIDB4RTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZTknICAgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGVhJyAgICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWMnICAgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGVkJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxNzUnICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVgKICAgICdceGYxJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhmMicgICAgICMgIDB4RjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY1JyAgICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdcdTFlNmInICAgIyAgMHhGNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERPVCBBQk9WRQogICAgJ1x4ZjgnICAgICAjICAweEY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhmOScgICAgICMgIDB4RjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZmEnICAgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGZiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGZjJyAgICAgIyAgMHhGQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZmQnICAgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdcdTAxNzcnICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIENJUkNVTUZMRVgKICAgICdceGZmJyAgICAgIyAgMHhGRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWoM5+FpwzAACcMwAAFwAAAGVuY29kaW5ncy9pc284ODU5XzE1LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBpc284ODU5XzE1IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9JU084ODU5Lzg4NTktMTUuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdpc284ODU5LTE1JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x4ODAnICAgICAjICAweDgwIC0+IDxjb250cm9sPgogICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgogICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgogICAgJ1x4ODMnICAgICAjICAweDgzIC0+IDxjb250cm9sPgogICAgJ1x4ODQnICAgICAjICAweDg0IC0+IDxjb250cm9sPgogICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgogICAgJ1x4ODYnICAgICAjICAweDg2IC0+IDxjb250cm9sPgogICAgJ1x4ODcnICAgICAjICAweDg3IC0+IDxjb250cm9sPgogICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgogICAgJ1x4ODknICAgICAjICAweDg5IC0+IDxjb250cm9sPgogICAgJ1x4OGEnICAgICAjICAweDhBIC0+IDxjb250cm9sPgogICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgogICAgJ1x4OGMnICAgICAjICAweDhDIC0+IDxjb250cm9sPgogICAgJ1x4OGQnICAgICAjICAweDhEIC0+IDxjb250cm9sPgogICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgogICAgJ1x4OGYnICAgICAjICAweDhGIC0+IDxjb250cm9sPgogICAgJ1x4OTAnICAgICAjICAweDkwIC0+IDxjb250cm9sPgogICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgogICAgJ1x4OTInICAgICAjICAweDkyIC0+IDxjb250cm9sPgogICAgJ1x4OTMnICAgICAjICAweDkzIC0+IDxjb250cm9sPgogICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgogICAgJ1x4OTUnICAgICAjICAweDk1IC0+IDxjb250cm9sPgogICAgJ1x4OTYnICAgICAjICAweDk2IC0+IDxjb250cm9sPgogICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgogICAgJ1x4OTgnICAgICAjICAweDk4IC0+IDxjb250cm9sPgogICAgJ1x4OTknICAgICAjICAweDk5IC0+IDxjb250cm9sPgogICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgogICAgJ1x4OWInICAgICAjICAweDlCIC0+IDxjb250cm9sPgogICAgJ1x4OWMnICAgICAjICAweDlDIC0+IDxjb250cm9sPgogICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgogICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgogICAgJ1x4OWYnICAgICAjICAweDlGIC0+IDxjb250cm9sPgogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHhhMScgICAgICMgIDB4QTEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdcdTIwYWMnICAgIyAgMHhBNCAtPiBFVVJPIFNJR04KICAgICdceGE1JyAgICAgIyAgMHhBNSAtPiBZRU4gU0lHTgogICAgJ1x1MDE2MCcgICAjICAweEE2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MDE2MScgICAjICAweEE4IC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x4YWEnICAgICAjICAweEFBIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgogICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCiAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHhhZicgICAgICMgIDB4QUYgLT4gTUFDUk9OCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdceGIyJyAgICAgIyAgMHhCMiAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGIzJyAgICAgIyAgMHhCMyAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x1MDE3ZCcgICAjICAweEI0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgJ1x4YjUnICAgICAjICAweEI1IC0+IE1JQ1JPIFNJR04KICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCiAgICAnXHUwMTdlJyAgICMgIDB4QjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgJ1x4YjknICAgICAjICAweEI5IC0+IFNVUEVSU0NSSVBUIE9ORQogICAgJ1x4YmEnICAgICAjICAweEJBIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDE1MicgICAjICAweEJDIC0+IExBVElOIENBUElUQUwgTElHQVRVUkUgT0UKICAgICdcdTAxNTMnICAgIyAgMHhCRCAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQogICAgJ1x1MDE3OCcgICAjICAweEJFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdceGJmJyAgICAgIyAgMHhCRiAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhjMCcgICAgICMgIDB4QzAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMScgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjMicgICAgICMgIDB4QzIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGMzJyAgICAgIyAgMHhDMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGM2JyAgICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQogICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhjOCcgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhjYScgICAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNiJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhjYycgICAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhjZCcgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhjZScgICAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhkMCcgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRICiAgICAnXHhkMScgICAgICMgIDB4RDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhkMicgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhkMycgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhkNCcgICAgICMgIDB4RDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGQ1JyAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNycgICAgICMgIDB4RDcgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x4ZDgnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGQ5JyAgICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGRhJyAgICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGRiJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGRkJyAgICAgIyAgMHhERCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGRlJyAgICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STgogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHhlMCcgICAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGUzJyAgICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGU1JyAgICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGU2JyAgICAgIyAgMHhFNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdceGU3JyAgICAgIyAgMHhFNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU4JyAgICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlOScgICAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZWEnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlYycgICAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZWQnICAgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjAnICAgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEgKICAgICdceGYxJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhmMicgICAgICMgIDB4RjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjMnICAgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY1JyAgICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHhmOCcgICAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZmInICAgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhmZCcgICAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgJ1x4ZmUnICAgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STgogICAgJ1x4ZmYnICAgICAjICAweEZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1Ys/+n99TQAAPU0AAAXAAAAZW5jb2RpbmdzL2lzbzg4NTlfMTYucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGlzbzg4NTlfMTYgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL0lTTzg4NTkvODg1OS0xNi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzg4NTktMTYnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHg4MCcgICAgICMgIDB4ODAgLT4gPGNvbnRyb2w+CiAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CiAgICAnXHg4MicgICAgICMgIDB4ODIgLT4gPGNvbnRyb2w+CiAgICAnXHg4MycgICAgICMgIDB4ODMgLT4gPGNvbnRyb2w+CiAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CiAgICAnXHg4NScgICAgICMgIDB4ODUgLT4gPGNvbnRyb2w+CiAgICAnXHg4NicgICAgICMgIDB4ODYgLT4gPGNvbnRyb2w+CiAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CiAgICAnXHg4OCcgICAgICMgIDB4ODggLT4gPGNvbnRyb2w+CiAgICAnXHg4OScgICAgICMgIDB4ODkgLT4gPGNvbnRyb2w+CiAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CiAgICAnXHg4YicgICAgICMgIDB4OEIgLT4gPGNvbnRyb2w+CiAgICAnXHg4YycgICAgICMgIDB4OEMgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZScgICAgICMgIDB4OEUgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZicgICAgICMgIDB4OEYgLT4gPGNvbnRyb2w+CiAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CiAgICAnXHg5MScgICAgICMgIDB4OTEgLT4gPGNvbnRyb2w+CiAgICAnXHg5MicgICAgICMgIDB4OTIgLT4gPGNvbnRyb2w+CiAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CiAgICAnXHg5NCcgICAgICMgIDB4OTQgLT4gPGNvbnRyb2w+CiAgICAnXHg5NScgICAgICMgIDB4OTUgLT4gPGNvbnRyb2w+CiAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CiAgICAnXHg5NycgICAgICMgIDB4OTcgLT4gPGNvbnRyb2w+CiAgICAnXHg5OCcgICAgICMgIDB4OTggLT4gPGNvbnRyb2w+CiAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CiAgICAnXHg5YScgICAgICMgIDB4OUEgLT4gPGNvbnRyb2w+CiAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CiAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTAxMDQnICAgIyAgMHhBMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHUwMTA1JyAgICMgIDB4QTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgICdcdTAxNDEnICAgIyAgMHhBMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFCiAgICAnXHUyMGFjJyAgICMgIDB4QTQgLT4gRVVSTyBTSUdOCiAgICAnXHUyMDFlJyAgICMgIDB4QTUgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMTYwJyAgICMgIDB4QTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCiAgICAnXHUwMTYxJyAgICMgIDB4QTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHUwMjE4JyAgICMgIDB4QUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENPTU1BIEJFTE9XCiAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxNzknICAgIyAgMHhBQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x1MDE3YScgICAjICAweEFFIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEUKICAgICdcdTAxN2InICAgIyAgMHhBRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTAxMGMnICAgIyAgMHhCMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KICAgICdcdTAxNDInICAgIyAgMHhCMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x1MDE3ZCcgICAjICAweEI0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgJ1x1MjAxZCcgICAjICAweEI1IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKICAgICdcdTAxN2UnICAgIyAgMHhCOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHUwMTBkJyAgICMgIDB4QjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTgogICAgJ1x1MDIxOScgICAjICAweEJBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ09NTUEgQkVMT1cKICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxNTInICAgIyAgMHhCQyAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCiAgICAnXHUwMTUzJyAgICMgIDB4QkQgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKICAgICdcdTAxNzgnICAgIyAgMHhCRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTdjJyAgICMgIDB4QkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgICdceGMwJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMxJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGMyJyAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDEwMicgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRQogICAgJ1x4YzQnICAgICAjICAweEM0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMDYnICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgICdceGM2JyAgICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQogICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhjOCcgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhjYScgICAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNiJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhjYycgICAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhjZCcgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhjZScgICAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTEwJyAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNUUk9LRQogICAgJ1x1MDE0MycgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgJ1x4ZDInICAgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZDMnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTUwJyAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQogICAgJ1x4ZDYnICAgICAjICAweEQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdcdTAxNWEnICAgIyAgMHhENyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKICAgICdcdTAxNzAnICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiAgICAnXHhkOScgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTE4JyAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x1MDIxYScgICAjICAweERFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDT01NQSBCRUxPVwogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHhlMCcgICAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMDMnICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFCiAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMDcnICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEFDVVRFCiAgICAnXHhlNicgICAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCiAgICAnXHhlNycgICAgICMgIDB4RTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlOCcgICAgICMgIDB4RTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZTknICAgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGVhJyAgICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWMnICAgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGVkJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMTEnICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFNUUk9LRQogICAgJ1x1MDE0NCcgICAjICAweEYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKICAgICdceGYyJyAgICAgIyAgMHhGMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhmMycgICAgICMgIDB4RjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZjQnICAgICAjICAweEY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDE1MScgICAjICAweEY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdcdTAxNWInICAgIyAgMHhGNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCiAgICAnXHUwMTcxJyAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZmInICAgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTE5JyAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgICdcdTAyMWInICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENPTU1BIEJFTE9XCiAgICAnXHhmZicgICAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVimx6wlcNAAAXDQAABYAAABlbmNvZGluZ3MvaXNvODg1OV8yLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBpc284ODU5XzIgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL0lTTzg4NTkvODg1OS0yLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0naXNvODg1OS0yJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x4ODAnICAgICAjICAweDgwIC0+IDxjb250cm9sPgogICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgogICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgogICAgJ1x4ODMnICAgICAjICAweDgzIC0+IDxjb250cm9sPgogICAgJ1x4ODQnICAgICAjICAweDg0IC0+IDxjb250cm9sPgogICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgogICAgJ1x4ODYnICAgICAjICAweDg2IC0+IDxjb250cm9sPgogICAgJ1x4ODcnICAgICAjICAweDg3IC0+IDxjb250cm9sPgogICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgogICAgJ1x4ODknICAgICAjICAweDg5IC0+IDxjb250cm9sPgogICAgJ1x4OGEnICAgICAjICAweDhBIC0+IDxjb250cm9sPgogICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgogICAgJ1x4OGMnICAgICAjICAweDhDIC0+IDxjb250cm9sPgogICAgJ1x4OGQnICAgICAjICAweDhEIC0+IDxjb250cm9sPgogICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgogICAgJ1x4OGYnICAgICAjICAweDhGIC0+IDxjb250cm9sPgogICAgJ1x4OTAnICAgICAjICAweDkwIC0+IDxjb250cm9sPgogICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgogICAgJ1x4OTInICAgICAjICAweDkyIC0+IDxjb250cm9sPgogICAgJ1x4OTMnICAgICAjICAweDkzIC0+IDxjb250cm9sPgogICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgogICAgJ1x4OTUnICAgICAjICAweDk1IC0+IDxjb250cm9sPgogICAgJ1x4OTYnICAgICAjICAweDk2IC0+IDxjb250cm9sPgogICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgogICAgJ1x4OTgnICAgICAjICAweDk4IC0+IDxjb250cm9sPgogICAgJ1x4OTknICAgICAjICAweDk5IC0+IDxjb250cm9sPgogICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgogICAgJ1x4OWInICAgICAjICAweDlCIC0+IDxjb250cm9sPgogICAgJ1x4OWMnICAgICAjICAweDlDIC0+IDxjb250cm9sPgogICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgogICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgogICAgJ1x4OWYnICAgICAjICAweDlGIC0+IDxjb250cm9sPgogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUwMTA0JyAgICMgIDB4QTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSwogICAgJ1x1MDJkOCcgICAjICAweEEyIC0+IEJSRVZFCiAgICAnXHUwMTQxJyAgICMgIDB4QTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x4YTQnICAgICAjICAweEE0IC0+IENVUlJFTkNZIFNJR04KICAgICdcdTAxM2QnICAgIyAgMHhBNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KICAgICdcdTAxNWEnICAgIyAgMHhBNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKICAgICdceGE3JyAgICAgIyAgMHhBNyAtPiBTRUNUSU9OIFNJR04KICAgICdceGE4JyAgICAgIyAgMHhBOCAtPiBESUFFUkVTSVMKICAgICdcdTAxNjAnICAgIyAgMHhBOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdcdTAxNWUnICAgIyAgMHhBQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x1MDE2NCcgICAjICAweEFCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTgogICAgJ1x1MDE3OScgICAjICAweEFDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCiAgICAnXHUwMTdkJyAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHUwMTdiJyAgICMgIDB4QUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQogICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCiAgICAnXHUwMTA1JyAgICMgIDB4QjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgICdcdTAyZGInICAgIyAgMHhCMiAtPiBPR09ORUsKICAgICdcdTAxNDInICAgIyAgMHhCMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x4YjQnICAgICAjICAweEI0IC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x1MDEzZScgICAjICAweEI1IC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST04KICAgICdcdTAxNWInICAgIyAgMHhCNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCiAgICAnXHUwMmM3JyAgICMgIDB4QjcgLT4gQ0FST04KICAgICdceGI4JyAgICAgIyAgMHhCOCAtPiBDRURJTExBCiAgICAnXHUwMTYxJyAgICMgIDB4QjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgJ1x1MDE1ZicgICAjICAweEJBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x1MDE2NScgICAjICAweEJCIC0+IExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST04KICAgICdcdTAxN2EnICAgIyAgMHhCQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCiAgICAnXHUwMmRkJyAgICMgIDB4QkQgLT4gRE9VQkxFIEFDVVRFIEFDQ0VOVAogICAgJ1x1MDE3ZScgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdcdTAxN2MnICAgIyAgMHhCRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDE1NCcgICAjICAweEMwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQogICAgJ1x4YzEnICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4YzInICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTAyJyAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFCiAgICAnXHhjNCcgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDEzOScgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQogICAgJ1x1MDEwNicgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURQogICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHUwMTBjJyAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHUwMTE4JyAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x4Y2InICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMWEnICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST04KICAgICdceGNkJyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDEwZScgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTgogICAgJ1x1MDExMCcgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTVFJPS0UKICAgICdcdTAxNDMnICAgIyAgMHhEMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKICAgICdcdTAxNDcnICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST04KICAgICdceGQzJyAgICAgIyAgMHhEMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGQ0JyAgICAgIyAgMHhENCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDE1MCcgICAjICAweEQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNycgICAgICMgIDB4RDcgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x1MDE1OCcgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTgogICAgJ1x1MDE2ZScgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHUwMTcwJyAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQogICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGRkJyAgICAgIyAgMHhERCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdcdTAxNjInICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0VESUxMQQogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHUwMTU1JyAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQogICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMDMnICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFCiAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxM2EnICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCiAgICAnXHUwMTA3JyAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQogICAgJ1x4ZTcnICAgICAjICAweEU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x1MDEwZCcgICAjICAweEU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KICAgICdceGU5JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHUwMTE5JyAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKICAgICdceGViJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDExYicgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST04KICAgICdceGVkJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTBmJyAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgogICAgJ1x1MDExMScgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggU1RST0tFCiAgICAnXHUwMTQ0JyAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgJ1x1MDE0OCcgICAjICAweEYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KICAgICdceGYzJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmNCcgICAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTUxJyAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKICAgICdceGY2JyAgICAgIyAgMHhGNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjcnICAgICAjICAweEY3IC0+IERJVklTSU9OIFNJR04KICAgICdcdTAxNTknICAgIyAgMHhGOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCiAgICAnXHUwMTZmJyAgICMgIDB4RjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x1MDE3MScgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiAgICAnXHhmYycgICAgICMgIDB4RkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGZkJyAgICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHUwMTYzJyAgICMgIDB4RkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDRURJTExBCiAgICAnXHUwMmQ5JyAgICMgIDB4RkYgLT4gRE9UIEFCT1ZFCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1bBS7UDITMAACEzAAAWAAAAZW5jb2RpbmdzL2lzbzg4NTlfMy5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgaXNvODg1OV8zIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9JU084ODU5Lzg4NTktMy5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzg4NTktMycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KICAgICdceDgyJyAgICAgIyAgMHg4MiAtPiA8Y29udHJvbD4KICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KICAgICdceDg0JyAgICAgIyAgMHg4NCAtPiA8Y29udHJvbD4KICAgICdceDg1JyAgICAgIyAgMHg4NSAtPiA8Y29udHJvbD4KICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KICAgICdceDg3JyAgICAgIyAgMHg4NyAtPiA8Y29udHJvbD4KICAgICdceDg4JyAgICAgIyAgMHg4OCAtPiA8Y29udHJvbD4KICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KICAgICdceDhhJyAgICAgIyAgMHg4QSAtPiA8Y29udHJvbD4KICAgICdceDhiJyAgICAgIyAgMHg4QiAtPiA8Y29udHJvbD4KICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KICAgICdceDhkJyAgICAgIyAgMHg4RCAtPiA8Y29udHJvbD4KICAgICdceDhlJyAgICAgIyAgMHg4RSAtPiA8Y29udHJvbD4KICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KICAgICdceDkwJyAgICAgIyAgMHg5MCAtPiA8Y29udHJvbD4KICAgICdceDkxJyAgICAgIyAgMHg5MSAtPiA8Y29udHJvbD4KICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KICAgICdceDkzJyAgICAgIyAgMHg5MyAtPiA8Y29udHJvbD4KICAgICdceDk0JyAgICAgIyAgMHg5NCAtPiA8Y29udHJvbD4KICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KICAgICdceDk2JyAgICAgIyAgMHg5NiAtPiA8Y29udHJvbD4KICAgICdceDk3JyAgICAgIyAgMHg5NyAtPiA8Y29udHJvbD4KICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KICAgICdceDk5JyAgICAgIyAgMHg5OSAtPiA8Y29udHJvbD4KICAgICdceDlhJyAgICAgIyAgMHg5QSAtPiA8Y29udHJvbD4KICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KICAgICdceDljJyAgICAgIyAgMHg5QyAtPiA8Y29udHJvbD4KICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KICAgICdceDlmJyAgICAgIyAgMHg5RiAtPiA8Y29udHJvbD4KICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x1MDEyNicgICAjICAweEExIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBTVFJPS0UKICAgICdcdTAyZDgnICAgIyAgMHhBMiAtPiBCUkVWRQogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdceGE0JyAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCiAgICAnXHVmZmZlJwogICAgJ1x1MDEyNCcgICAjICAweEE2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhhOCcgICAgICMgIDB4QTggLT4gRElBRVJFU0lTCiAgICAnXHUwMTMwJyAgICMgIDB4QTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDE1ZScgICAjICAweEFBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiAgICAnXHUwMTFlJyAgICMgIDB4QUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEJSRVZFCiAgICAnXHUwMTM0JyAgICMgIDB4QUMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVgKICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x1ZmZmZScKICAgICdcdTAxN2InICAgIyAgMHhBRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdcdTAxMjcnICAgIyAgMHhCMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIFNUUk9LRQogICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHhiNCcgICAgICMgIDB4QjQgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgogICAgJ1x1MDEyNScgICAjICAweEI2IC0+IExBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKICAgICdceGI4JyAgICAgIyAgMHhCOCAtPiBDRURJTExBCiAgICAnXHUwMTMxJyAgICMgIDB4QjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSQogICAgJ1x1MDE1ZicgICAjICAweEJBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x1MDExZicgICAjICAweEJCIC0+IExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQlJFVkUKICAgICdcdTAxMzUnICAgIyAgMHhCQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVgKICAgICdceGJkJyAgICAgIyAgMHhCRCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKICAgICdcdWZmZmUnCiAgICAnXHUwMTdjJyAgICMgIDB4QkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKICAgICdceGMwJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMxJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGMyJyAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1ZmZmZScKICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTBhJyAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDEwOCcgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjNycgICAgICMgIDB4QzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGM4JyAgICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGM5JyAgICAgIyAgMHhDOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGNhJyAgICAgIyAgMHhDQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2InICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGNjJyAgICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGNkJyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2YnICAgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdWZmZmUnCiAgICAnXHhkMScgICAgICMgIDB4RDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhkMicgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhkMycgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhkNCcgICAgICMgIDB4RDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMjAnICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggRE9UIEFCT1ZFCiAgICAnXHhkNicgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDcnICAgICAjICAweEQ3IC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdcdTAxMWMnICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZDknICAgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZGEnICAgICAjICAweERBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZGInICAgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkYycgICAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE2YycgICAjICAweEREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBCUkVWRQogICAgJ1x1MDE1YycgICAjICAweERFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkZicgICAgICMgIDB4REYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgICdceGUwJyAgICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhlMScgICAgICMgIDB4RTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZTInICAgICAjICAweEUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1ZmZmZScKICAgICdceGU0JyAgICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDEwYicgICAjICAweEU1IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUwMTA5JyAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlNycgICAgICMgIDB4RTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlOCcgICAgICMgIDB4RTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZTknICAgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGVhJyAgICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWMnICAgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGVkJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdcdWZmZmUnCiAgICAnXHhmMScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZjInICAgICAjICAweEYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGYzJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmNCcgICAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTIxJyAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkUKICAgICdceGY2JyAgICAgIyAgMHhGNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjcnICAgICAjICAweEY3IC0+IERJVklTSU9OIFNJR04KICAgICdcdTAxMWQnICAgIyAgMHhGOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZmInICAgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTZkJyAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBCUkVWRQogICAgJ1x1MDE1ZCcgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDJkOScgICAjICAweEZGIC0+IERPVCBBQk9WRQopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWHF3dYEA0AABANAAAFgAAAGVuY29kaW5ncy9pc284ODU5XzQucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGlzbzg4NTlfNCBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvSVNPODg1OS84ODU5LTQuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdpc284ODU5LTQnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHg4MCcgICAgICMgIDB4ODAgLT4gPGNvbnRyb2w+CiAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CiAgICAnXHg4MicgICAgICMgIDB4ODIgLT4gPGNvbnRyb2w+CiAgICAnXHg4MycgICAgICMgIDB4ODMgLT4gPGNvbnRyb2w+CiAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CiAgICAnXHg4NScgICAgICMgIDB4ODUgLT4gPGNvbnRyb2w+CiAgICAnXHg4NicgICAgICMgIDB4ODYgLT4gPGNvbnRyb2w+CiAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CiAgICAnXHg4OCcgICAgICMgIDB4ODggLT4gPGNvbnRyb2w+CiAgICAnXHg4OScgICAgICMgIDB4ODkgLT4gPGNvbnRyb2w+CiAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CiAgICAnXHg4YicgICAgICMgIDB4OEIgLT4gPGNvbnRyb2w+CiAgICAnXHg4YycgICAgICMgIDB4OEMgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZScgICAgICMgIDB4OEUgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZicgICAgICMgIDB4OEYgLT4gPGNvbnRyb2w+CiAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CiAgICAnXHg5MScgICAgICMgIDB4OTEgLT4gPGNvbnRyb2w+CiAgICAnXHg5MicgICAgICMgIDB4OTIgLT4gPGNvbnRyb2w+CiAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CiAgICAnXHg5NCcgICAgICMgIDB4OTQgLT4gPGNvbnRyb2w+CiAgICAnXHg5NScgICAgICMgIDB4OTUgLT4gPGNvbnRyb2w+CiAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CiAgICAnXHg5NycgICAgICMgIDB4OTcgLT4gPGNvbnRyb2w+CiAgICAnXHg5OCcgICAgICMgIDB4OTggLT4gPGNvbnRyb2w+CiAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CiAgICAnXHg5YScgICAgICMgIDB4OUEgLT4gPGNvbnRyb2w+CiAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CiAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTAxMDQnICAgIyAgMHhBMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHUwMTM4JyAgICMgIDB4QTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEtSQQogICAgJ1x1MDE1NicgICAjICAweEEzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBCiAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x1MDEyOCcgICAjICAweEE1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERQogICAgJ1x1MDEzYicgICAjICAweEE2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhhOCcgICAgICMgIDB4QTggLT4gRElBRVJFU0lTCiAgICAnXHUwMTYwJyAgICMgIDB4QTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUwMTEyJyAgICMgIDB4QUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEyMicgICAjICAweEFCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiAgICAnXHUwMTY2JyAgICMgIDB4QUMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIFNUUk9LRQogICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCiAgICAnXHUwMTdkJyAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHhhZicgICAgICMgIDB4QUYgLT4gTUFDUk9OCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdcdTAxMDUnICAgIyAgMHhCMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSwogICAgJ1x1MDJkYicgICAjICAweEIyIC0+IE9HT05FSwogICAgJ1x1MDE1NycgICAjICAweEIzIC0+IExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0VESUxMQQogICAgJ1x4YjQnICAgICAjICAweEI0IC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x1MDEyOScgICAjICAweEI1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREUKICAgICdcdTAxM2MnICAgIyAgMHhCNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENFRElMTEEKICAgICdcdTAyYzcnICAgIyAgMHhCNyAtPiBDQVJPTgogICAgJ1x4YjgnICAgICAjICAweEI4IC0+IENFRElMTEEKICAgICdcdTAxNjEnICAgIyAgMHhCOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUwMTEzJyAgICMgIDB4QkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KICAgICdcdTAxMjMnICAgIyAgMHhCQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEEKICAgICdcdTAxNjcnICAgIyAgMHhCQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFNUUk9LRQogICAgJ1x1MDE0YScgICAjICAweEJEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVORwogICAgJ1x1MDE3ZScgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdcdTAxNGInICAgIyAgMHhCRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRU5HCiAgICAnXHUwMTAwJyAgICMgIDB4QzAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgogICAgJ1x4YzEnICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4YzInICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjMycgICAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhjNCcgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzUnICAgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjNicgICAgICMgIDB4QzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKICAgICdcdTAxMmUnICAgIyAgMHhDNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCiAgICAnXHUwMTBjJyAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHUwMTE4JyAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x4Y2InICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMTYnICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCiAgICAnXHhjZCcgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhjZScgICAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMmEnICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCiAgICAnXHUwMTEwJyAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNUUk9LRQogICAgJ1x1MDE0NScgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiAgICAnXHUwMTRjJyAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgogICAgJ1x1MDEzNicgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCiAgICAnXHhkNCcgICAgICMgIDB4RDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGQ1JyAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkNycgICAgICMgIDB4RDcgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x4ZDgnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdcdTAxNzInICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCiAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTY4JyAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFRJTERFCiAgICAnXHUwMTZhJyAgICMgIDB4REUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgogICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHUwMTAxJyAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST04KICAgICdceGUxJyAgICAgIyAgMHhFMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlMicgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlMycgICAgICMgIDB4RTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZTQnICAgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhlNScgICAgICMgIDB4RTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNicgICAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCiAgICAnXHUwMTJmJyAgICMgIDB4RTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKICAgICdcdTAxMGQnICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAnXHhlOScgICAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x1MDExOScgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLCiAgICAnXHhlYicgICAgICMgIDB4RUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMTcnICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQogICAgJ1x4ZWQnICAgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMmInICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgogICAgJ1x1MDExMScgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggU1RST0tFCiAgICAnXHUwMTQ2JyAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiAgICAnXHUwMTRkJyAgICMgIDB4RjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgICdcdTAxMzcnICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEEKICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY1JyAgICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHhmOCcgICAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdcdTAxNzMnICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgJ1x4ZmEnICAgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGZiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGZjJyAgICAgIyAgMHhGQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE2OScgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggVElMREUKICAgICdcdTAxNmInICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgogICAgJ1x1MDJkOScgICAjICAweEZGIC0+IERPVCBBQk9WRQopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWLv6UYNcyAADXMgAAFgAAAGVuY29kaW5ncy9pc284ODU5XzUucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGlzbzg4NTlfNSBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvSVNPODg1OS84ODU5LTUuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdpc284ODU5LTUnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHg4MCcgICAgICMgIDB4ODAgLT4gPGNvbnRyb2w+CiAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CiAgICAnXHg4MicgICAgICMgIDB4ODIgLT4gPGNvbnRyb2w+CiAgICAnXHg4MycgICAgICMgIDB4ODMgLT4gPGNvbnRyb2w+CiAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CiAgICAnXHg4NScgICAgICMgIDB4ODUgLT4gPGNvbnRyb2w+CiAgICAnXHg4NicgICAgICMgIDB4ODYgLT4gPGNvbnRyb2w+CiAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CiAgICAnXHg4OCcgICAgICMgIDB4ODggLT4gPGNvbnRyb2w+CiAgICAnXHg4OScgICAgICMgIDB4ODkgLT4gPGNvbnRyb2w+CiAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CiAgICAnXHg4YicgICAgICMgIDB4OEIgLT4gPGNvbnRyb2w+CiAgICAnXHg4YycgICAgICMgIDB4OEMgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZScgICAgICMgIDB4OEUgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZicgICAgICMgIDB4OEYgLT4gPGNvbnRyb2w+CiAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CiAgICAnXHg5MScgICAgICMgIDB4OTEgLT4gPGNvbnRyb2w+CiAgICAnXHg5MicgICAgICMgIDB4OTIgLT4gPGNvbnRyb2w+CiAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CiAgICAnXHg5NCcgICAgICMgIDB4OTQgLT4gPGNvbnRyb2w+CiAgICAnXHg5NScgICAgICMgIDB4OTUgLT4gPGNvbnRyb2w+CiAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CiAgICAnXHg5NycgICAgICMgIDB4OTcgLT4gPGNvbnRyb2w+CiAgICAnXHg5OCcgICAgICMgIDB4OTggLT4gPGNvbnRyb2w+CiAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CiAgICAnXHg5YScgICAgICMgIDB4OUEgLT4gPGNvbnRyb2w+CiAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CiAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTA0MDEnICAgIyAgMHhBMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTwogICAgJ1x1MDQwMicgICAjICAweEEyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERKRQogICAgJ1x1MDQwMycgICAjICAweEEzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdKRQogICAgJ1x1MDQwNCcgICAjICAweEE0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgJ1x1MDQwNScgICAjICAweEE1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERaRQogICAgJ1x1MDQwNicgICAjICAweEE2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgJ1x1MDQwNycgICAjICAweEE3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlJCiAgICAnXHUwNDA4JyAgICMgIDB4QTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKICAgICdcdTA0MDknICAgIyAgMHhBOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkUKICAgICdcdTA0MGEnICAgIyAgMHhBQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkUKICAgICdcdTA0MGInICAgIyAgMHhBQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0hFCiAgICAnXHUwNDBjJyAgICMgIDB4QUMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0pFCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdcdTA0MGUnICAgIyAgMHhBRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVCiAgICAnXHUwNDBmJyAgICMgIDB4QUYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpIRQogICAgJ1x1MDQxMCcgICAjICAweEIwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgICdcdTA0MTEnICAgIyAgMHhCMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQogICAgJ1x1MDQxMicgICAjICAweEIyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCiAgICAnXHUwNDEzJyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAnXHUwNDE0JyAgICMgIDB4QjQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKICAgICdcdTA0MTUnICAgIyAgMHhCNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQogICAgJ1x1MDQxNicgICAjICAweEI2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQxNycgICAjICAweEI3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCiAgICAnXHUwNDE4JyAgICMgIDB4QjggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQogICAgJ1x1MDQxOScgICAjICAweEI5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0MWEnICAgIyAgMHhCQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQogICAgJ1x1MDQxYicgICAjICAweEJCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCiAgICAnXHUwNDFjJyAgICMgIDB4QkMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0MWQnICAgIyAgMHhCRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgogICAgJ1x1MDQxZScgICAjICAweEJFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KICAgICdcdTA0MWYnICAgIyAgMHhCRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQyMCcgICAjICAweEMwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCiAgICAnXHUwNDIxJyAgICMgIDB4QzEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKICAgICdcdTA0MjInICAgIyAgMHhDMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgJ1x1MDQyMycgICAjICAweEMzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKICAgICdcdTA0MjQnICAgIyAgMHhDNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgogICAgJ1x1MDQyNScgICAjICAweEM1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDI2JyAgICMgIDB4QzYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCiAgICAnXHUwNDI3JyAgICMgIDB4QzcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCiAgICAnXHUwNDI4JyAgICMgIDB4QzggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAnXHUwNDI5JyAgICMgIDB4QzkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKICAgICdcdTA0MmEnICAgIyAgMHhDQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KICAgICdcdTA0MmInICAgIyAgMHhDQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAnXHUwNDJjJyAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDJkJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQogICAgJ1x1MDQyZScgICAjICAweENFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAnXHUwNDJmJyAgICMgIDB4Q0YgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKICAgICdcdTA0MzAnICAgIyAgMHhEMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQogICAgJ1x1MDQzMScgICAjICAweEQxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgJ1x1MDQzMicgICAjICAweEQyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBWRQogICAgJ1x1MDQzMycgICAjICAweEQzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKICAgICdcdTA0MzQnICAgIyAgMHhENCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgICdcdTA0MzUnICAgIyAgMHhENSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKICAgICdcdTA0MzYnICAgIyAgMHhENiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCiAgICAnXHUwNDM3JyAgICMgIDB4RDcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAnXHUwNDM4JyAgICMgIDB4RDggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKICAgICdcdTA0MzknICAgIyAgMHhEOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQogICAgJ1x1MDQzYScgICAjICAweERBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgJ1x1MDQzYicgICAjICAweERCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTAogICAgJ1x1MDQzYycgICAjICAweERDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTQogICAgJ1x1MDQzZCcgICAjICAweEREIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgJ1x1MDQzZScgICAjICAweERFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBPCiAgICAnXHUwNDNmJyAgICMgIDB4REYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCiAgICAnXHUwNDQwJyAgICMgIDB4RTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiAgICAnXHUwNDQxJyAgICMgIDB4RTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAnXHUwNDQyJyAgICMgIDB4RTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAnXHUwNDQzJyAgICMgIDB4RTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKICAgICdcdTA0NDQnICAgIyAgMHhFNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKICAgICdcdTA0NDUnICAgIyAgMHhFNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKICAgICdcdTA0NDYnICAgIyAgMHhFNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCiAgICAnXHUwNDQ3JyAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQogICAgJ1x1MDQ0OCcgICAjICAweEU4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKICAgICdcdTA0NDknICAgIyAgMHhFOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKICAgICdcdTA0NGEnICAgIyAgMHhFQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCiAgICAnXHUwNDRiJyAgICMgIDB4RUIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKICAgICdcdTA0NGMnICAgIyAgMHhFQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDRkJyAgICMgIDB4RUQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKICAgICdcdTA0NGUnICAgIyAgMHhFRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKICAgICdcdTA0NGYnICAgIyAgMHhFRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKICAgICdcdTIxMTYnICAgIyAgMHhGMCAtPiBOVU1FUk8gU0lHTgogICAgJ1x1MDQ1MScgICAjICAweEYxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgJ1x1MDQ1MicgICAjICAweEYyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBESkUKICAgICdcdTA0NTMnICAgIyAgMHhGMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0pFCiAgICAnXHUwNDU0JyAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgJ1x1MDQ1NScgICAjICAweEY1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBEWkUKICAgICdcdTA0NTYnICAgIyAgMHhGNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAnXHUwNDU3JyAgICMgIDB4RjcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJCiAgICAnXHUwNDU4JyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCiAgICAnXHUwNDU5JyAgICMgIDB4RjkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRQogICAgJ1x1MDQ1YScgICAjICAweEZBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBOSkUKICAgICdcdTA0NWInICAgIyAgMHhGQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNIRQogICAgJ1x1MDQ1YycgICAjICAweEZDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLSkUKICAgICdceGE3JyAgICAgIyAgMHhGRCAtPiBTRUNUSU9OIFNJR04KICAgICdcdTA0NWUnICAgIyAgMHhGRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVQogICAgJ1x1MDQ1ZicgICAjICAweEZGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBEWkhFCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1aWlt2gUSoAAFEqAAAWAAAAZW5jb2RpbmdzL2lzbzg4NTlfNi5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgaXNvODg1OV82IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9JU084ODU5Lzg4NTktNi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzg4NTktNicsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KICAgICdceDgyJyAgICAgIyAgMHg4MiAtPiA8Y29udHJvbD4KICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KICAgICdceDg0JyAgICAgIyAgMHg4NCAtPiA8Y29udHJvbD4KICAgICdceDg1JyAgICAgIyAgMHg4NSAtPiA8Y29udHJvbD4KICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KICAgICdceDg3JyAgICAgIyAgMHg4NyAtPiA8Y29udHJvbD4KICAgICdceDg4JyAgICAgIyAgMHg4OCAtPiA8Y29udHJvbD4KICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KICAgICdceDhhJyAgICAgIyAgMHg4QSAtPiA8Y29udHJvbD4KICAgICdceDhiJyAgICAgIyAgMHg4QiAtPiA8Y29udHJvbD4KICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KICAgICdceDhkJyAgICAgIyAgMHg4RCAtPiA8Y29udHJvbD4KICAgICdceDhlJyAgICAgIyAgMHg4RSAtPiA8Y29udHJvbD4KICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KICAgICdceDkwJyAgICAgIyAgMHg5MCAtPiA8Y29udHJvbD4KICAgICdceDkxJyAgICAgIyAgMHg5MSAtPiA8Y29udHJvbD4KICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KICAgICdceDkzJyAgICAgIyAgMHg5MyAtPiA8Y29udHJvbD4KICAgICdceDk0JyAgICAgIyAgMHg5NCAtPiA8Y29udHJvbD4KICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KICAgICdceDk2JyAgICAgIyAgMHg5NiAtPiA8Y29udHJvbD4KICAgICdceDk3JyAgICAgIyAgMHg5NyAtPiA8Y29udHJvbD4KICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KICAgICdceDk5JyAgICAgIyAgMHg5OSAtPiA8Y29udHJvbD4KICAgICdceDlhJyAgICAgIyAgMHg5QSAtPiA8Y29udHJvbD4KICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KICAgICdceDljJyAgICAgIyAgMHg5QyAtPiA8Y29udHJvbD4KICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KICAgICdceDlmJyAgICAgIyAgMHg5RiAtPiA8Y29udHJvbD4KICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x4YTQnICAgICAjICAweEE0IC0+IENVUlJFTkNZIFNJR04KICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHUwNjBjJyAgICMgIDB4QUMgLT4gQVJBQklDIENPTU1BCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHUwNjFiJyAgICMgIDB4QkIgLT4gQVJBQklDIFNFTUlDT0xPTgogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1MDYxZicgICAjICAweEJGIC0+IEFSQUJJQyBRVUVTVElPTiBNQVJLCiAgICAnXHVmZmZlJwogICAgJ1x1MDYyMScgICAjICAweEMxIC0+IEFSQUJJQyBMRVRURVIgSEFNWkEKICAgICdcdTA2MjInICAgIyAgMHhDMiAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRQogICAgJ1x1MDYyMycgICAjICAweEMzIC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFCiAgICAnXHUwNjI0JyAgICMgIDB4QzQgLT4gQVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRQogICAgJ1x1MDYyNScgICAjICAweEM1IC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XCiAgICAnXHUwNjI2JyAgICMgIDB4QzYgLT4gQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRQogICAgJ1x1MDYyNycgICAjICAweEM3IC0+IEFSQUJJQyBMRVRURVIgQUxFRgogICAgJ1x1MDYyOCcgICAjICAweEM4IC0+IEFSQUJJQyBMRVRURVIgQkVICiAgICAnXHUwNjI5JyAgICMgIDB4QzkgLT4gQVJBQklDIExFVFRFUiBURUggTUFSQlVUQQogICAgJ1x1MDYyYScgICAjICAweENBIC0+IEFSQUJJQyBMRVRURVIgVEVICiAgICAnXHUwNjJiJyAgICMgIDB4Q0IgLT4gQVJBQklDIExFVFRFUiBUSEVICiAgICAnXHUwNjJjJyAgICMgIDB4Q0MgLT4gQVJBQklDIExFVFRFUiBKRUVNCiAgICAnXHUwNjJkJyAgICMgIDB4Q0QgLT4gQVJBQklDIExFVFRFUiBIQUgKICAgICdcdTA2MmUnICAgIyAgMHhDRSAtPiBBUkFCSUMgTEVUVEVSIEtIQUgKICAgICdcdTA2MmYnICAgIyAgMHhDRiAtPiBBUkFCSUMgTEVUVEVSIERBTAogICAgJ1x1MDYzMCcgICAjICAweEQwIC0+IEFSQUJJQyBMRVRURVIgVEhBTAogICAgJ1x1MDYzMScgICAjICAweEQxIC0+IEFSQUJJQyBMRVRURVIgUkVICiAgICAnXHUwNjMyJyAgICMgIDB4RDIgLT4gQVJBQklDIExFVFRFUiBaQUlOCiAgICAnXHUwNjMzJyAgICMgIDB4RDMgLT4gQVJBQklDIExFVFRFUiBTRUVOCiAgICAnXHUwNjM0JyAgICMgIDB4RDQgLT4gQVJBQklDIExFVFRFUiBTSEVFTgogICAgJ1x1MDYzNScgICAjICAweEQ1IC0+IEFSQUJJQyBMRVRURVIgU0FECiAgICAnXHUwNjM2JyAgICMgIDB4RDYgLT4gQVJBQklDIExFVFRFUiBEQUQKICAgICdcdTA2MzcnICAgIyAgMHhENyAtPiBBUkFCSUMgTEVUVEVSIFRBSAogICAgJ1x1MDYzOCcgICAjICAweEQ4IC0+IEFSQUJJQyBMRVRURVIgWkFICiAgICAnXHUwNjM5JyAgICMgIDB4RDkgLT4gQVJBQklDIExFVFRFUiBBSU4KICAgICdcdTA2M2EnICAgIyAgMHhEQSAtPiBBUkFCSUMgTEVUVEVSIEdIQUlOCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdTA2NDAnICAgIyAgMHhFMCAtPiBBUkFCSUMgVEFUV0VFTAogICAgJ1x1MDY0MScgICAjICAweEUxIC0+IEFSQUJJQyBMRVRURVIgRkVICiAgICAnXHUwNjQyJyAgICMgIDB4RTIgLT4gQVJBQklDIExFVFRFUiBRQUYKICAgICdcdTA2NDMnICAgIyAgMHhFMyAtPiBBUkFCSUMgTEVUVEVSIEtBRgogICAgJ1x1MDY0NCcgICAjICAweEU0IC0+IEFSQUJJQyBMRVRURVIgTEFNCiAgICAnXHUwNjQ1JyAgICMgIDB4RTUgLT4gQVJBQklDIExFVFRFUiBNRUVNCiAgICAnXHUwNjQ2JyAgICMgIDB4RTYgLT4gQVJBQklDIExFVFRFUiBOT09OCiAgICAnXHUwNjQ3JyAgICMgIDB4RTcgLT4gQVJBQklDIExFVFRFUiBIRUgKICAgICdcdTA2NDgnICAgIyAgMHhFOCAtPiBBUkFCSUMgTEVUVEVSIFdBVwogICAgJ1x1MDY0OScgICAjICAweEU5IC0+IEFSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBCiAgICAnXHUwNjRhJyAgICMgIDB4RUEgLT4gQVJBQklDIExFVFRFUiBZRUgKICAgICdcdTA2NGInICAgIyAgMHhFQiAtPiBBUkFCSUMgRkFUSEFUQU4KICAgICdcdTA2NGMnICAgIyAgMHhFQyAtPiBBUkFCSUMgREFNTUFUQU4KICAgICdcdTA2NGQnICAgIyAgMHhFRCAtPiBBUkFCSUMgS0FTUkFUQU4KICAgICdcdTA2NGUnICAgIyAgMHhFRSAtPiBBUkFCSUMgRkFUSEEKICAgICdcdTA2NGYnICAgIyAgMHhFRiAtPiBBUkFCSUMgREFNTUEKICAgICdcdTA2NTAnICAgIyAgMHhGMCAtPiBBUkFCSUMgS0FTUkEKICAgICdcdTA2NTEnICAgIyAgMHhGMSAtPiBBUkFCSUMgU0hBRERBCiAgICAnXHUwNjUyJyAgICMgIDB4RjIgLT4gQVJBQklDIFNVS1VOCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWnBga+iwyAAAsMgAAFgAAAGVuY29kaW5ncy9pc284ODU5XzcucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGlzbzg4NTlfNyBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvSVNPODg1OS84ODU5LTcuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdpc284ODU5LTcnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHg4MCcgICAgICMgIDB4ODAgLT4gPGNvbnRyb2w+CiAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CiAgICAnXHg4MicgICAgICMgIDB4ODIgLT4gPGNvbnRyb2w+CiAgICAnXHg4MycgICAgICMgIDB4ODMgLT4gPGNvbnRyb2w+CiAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CiAgICAnXHg4NScgICAgICMgIDB4ODUgLT4gPGNvbnRyb2w+CiAgICAnXHg4NicgICAgICMgIDB4ODYgLT4gPGNvbnRyb2w+CiAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CiAgICAnXHg4OCcgICAgICMgIDB4ODggLT4gPGNvbnRyb2w+CiAgICAnXHg4OScgICAgICMgIDB4ODkgLT4gPGNvbnRyb2w+CiAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CiAgICAnXHg4YicgICAgICMgIDB4OEIgLT4gPGNvbnRyb2w+CiAgICAnXHg4YycgICAgICMgIDB4OEMgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZScgICAgICMgIDB4OEUgLT4gPGNvbnRyb2w+CiAgICAnXHg4ZicgICAgICMgIDB4OEYgLT4gPGNvbnRyb2w+CiAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CiAgICAnXHg5MScgICAgICMgIDB4OTEgLT4gPGNvbnRyb2w+CiAgICAnXHg5MicgICAgICMgIDB4OTIgLT4gPGNvbnRyb2w+CiAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CiAgICAnXHg5NCcgICAgICMgIDB4OTQgLT4gPGNvbnRyb2w+CiAgICAnXHg5NScgICAgICMgIDB4OTUgLT4gPGNvbnRyb2w+CiAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CiAgICAnXHg5NycgICAgICMgIDB4OTcgLT4gPGNvbnRyb2w+CiAgICAnXHg5OCcgICAgICMgIDB4OTggLT4gPGNvbnRyb2w+CiAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CiAgICAnXHg5YScgICAgICMgIDB4OUEgLT4gPGNvbnRyb2w+CiAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CiAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CiAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CiAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTIwMTgnICAgIyAgMHhBMSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweEEyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdcdTIwYWMnICAgIyAgMHhBNCAtPiBFVVJPIFNJR04KICAgICdcdTIwYWYnICAgIyAgMHhBNSAtPiBEUkFDSE1BIFNJR04KICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCiAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCiAgICAnXHhhOCcgICAgICMgIDB4QTggLT4gRElBRVJFU0lTCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTAzN2EnICAgIyAgMHhBQSAtPiBHUkVFSyBZUE9HRUdSQU1NRU5JCiAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgogICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCiAgICAnXHVmZmZlJwogICAgJ1x1MjAxNScgICAjICAweEFGIC0+IEhPUklaT05UQUwgQkFSCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdceGIyJyAgICAgIyAgMHhCMiAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGIzJyAgICAgIyAgMHhCMyAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x1MDM4NCcgICAjICAweEI0IC0+IEdSRUVLIFRPTk9TCiAgICAnXHUwMzg1JyAgICMgIDB4QjUgLT4gR1JFRUsgRElBTFlUSUtBIFRPTk9TCiAgICAnXHUwMzg2JyAgICMgIDB4QjYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUwogICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKICAgICdcdTAzODgnICAgIyAgMHhCOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1MKICAgICdcdTAzODknICAgIyAgMHhCOSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBUT05PUwogICAgJ1x1MDM4YScgICAjICAweEJBIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBUT05PUwogICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDM4YycgICAjICAweEJDIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUwogICAgJ1x4YmQnICAgICAjICAweEJEIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgogICAgJ1x1MDM4ZScgICAjICAweEJFIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUwogICAgJ1x1MDM4ZicgICAjICAweEJGIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1MKICAgICdcdTAzOTAnICAgIyAgMHhDMCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKICAgICdcdTAzOTEnICAgIyAgMHhDMSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQQogICAgJ1x1MDM5MicgICAjICAweEMyIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEJFVEEKICAgICdcdTAzOTMnICAgIyAgMHhDMyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQogICAgJ1x1MDM5NCcgICAjICAweEM0IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBCiAgICAnXHUwMzk1JyAgICMgIDB4QzUgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTgogICAgJ1x1MDM5NicgICAjICAweEM2IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFpFVEEKICAgICdcdTAzOTcnICAgIyAgMHhDNyAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEKICAgICdcdTAzOTgnICAgIyAgMHhDOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQogICAgJ1x1MDM5OScgICAjICAweEM5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEKICAgICdcdTAzOWEnICAgIyAgMHhDQSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQQogICAgJ1x1MDM5YicgICAjICAweENCIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIExBTURBCiAgICAnXHUwMzljJyAgICMgIDB4Q0MgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgTVUKICAgICdcdTAzOWQnICAgIyAgMHhDRCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBOVQogICAgJ1x1MDM5ZScgICAjICAweENFIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFhJCiAgICAnXHUwMzlmJyAgICMgIDB4Q0YgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTgogICAgJ1x1MDNhMCcgICAjICAweEQwIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFBJCiAgICAnXHUwM2ExJyAgICMgIDB4RDEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUkhPCiAgICAnXHVmZmZlJwogICAgJ1x1MDNhMycgICAjICAweEQzIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BCiAgICAnXHUwM2E0JyAgICMgIDB4RDQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEFVCiAgICAnXHUwM2E1JyAgICMgIDB4RDUgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTgogICAgJ1x1MDNhNicgICAjICAweEQ2IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFBISQogICAgJ1x1MDNhNycgICAjICAweEQ3IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIENISQogICAgJ1x1MDNhOCcgICAjICAweEQ4IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFBTSQogICAgJ1x1MDNhOScgICAjICAweEQ5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAnXHUwM2FhJyAgICMgIDB4REEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQQogICAgJ1x1MDNhYicgICAjICAweERCIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKICAgICdcdTAzYWMnICAgIyAgMHhEQyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUwogICAgJ1x1MDNhZCcgICAjICAweEREIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1MKICAgICdcdTAzYWUnICAgIyAgMHhERSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgICdcdTAzYWYnICAgIyAgMHhERiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TCiAgICAnXHUwM2IwJyAgICMgIDB4RTAgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TCiAgICAnXHUwM2IxJyAgICMgIDB4RTEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiAgICAnXHUwM2IyJyAgICMgIDB4RTIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEJFVEEKICAgICdcdTAzYjMnICAgIyAgMHhFMyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgR0FNTUEKICAgICdcdTAzYjQnICAgIyAgMHhFNCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKICAgICdcdTAzYjUnICAgIyAgMHhFNSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgogICAgJ1x1MDNiNicgICAjICAweEU2IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBaRVRBCiAgICAnXHUwM2I3JyAgICMgIDB4RTcgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVUQQogICAgJ1x1MDNiOCcgICAjICAweEU4IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBUSEVUQQogICAgJ1x1MDNiOScgICAjICAweEU5IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBCiAgICAnXHUwM2JhJyAgICMgIDB4RUEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEtBUFBBCiAgICAnXHUwM2JiJyAgICMgIDB4RUIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIExBTURBCiAgICAnXHUwM2JjJyAgICMgIDB4RUMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE1VCiAgICAnXHUwM2JkJyAgICMgIDB4RUQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE5VCiAgICAnXHUwM2JlJyAgICMgIDB4RUUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFhJCiAgICAnXHUwM2JmJyAgICMgIDB4RUYgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04KICAgICdcdTAzYzAnICAgIyAgMHhGMCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgICdcdTAzYzEnICAgIyAgMHhGMSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUkhPCiAgICAnXHUwM2MyJyAgICMgIDB4RjIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEZJTkFMIFNJR01BCiAgICAnXHUwM2MzJyAgICMgIDB4RjMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAnXHUwM2M0JyAgICMgIDB4RjQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgJ1x1MDNjNScgICAjICAweEY1IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OCiAgICAnXHUwM2M2JyAgICMgIDB4RjYgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgJ1x1MDNjNycgICAjICAweEY3IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBDSEkKICAgICdcdTAzYzgnICAgIyAgMHhGOCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUFNJCiAgICAnXHUwM2M5JyAgICMgIDB4RjkgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBCiAgICAnXHUwM2NhJyAgICMgIDB4RkEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EKICAgICdcdTAzY2InICAgIyAgMHhGQiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQQogICAgJ1x1MDNjYycgICAjICAweEZDIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgICdcdTAzY2QnICAgIyAgMHhGRCAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2NlJyAgICMgIDB4RkUgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1MKICAgICdcdWZmZmUnCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1b0rl1LHCsAABwrAAAWAAAAZW5jb2RpbmdzL2lzbzg4NTlfOC5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgaXNvODg1OV84IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9JU084ODU5Lzg4NTktOC5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzg4NTktOCcsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KICAgICdceDgyJyAgICAgIyAgMHg4MiAtPiA8Y29udHJvbD4KICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KICAgICdceDg0JyAgICAgIyAgMHg4NCAtPiA8Y29udHJvbD4KICAgICdceDg1JyAgICAgIyAgMHg4NSAtPiA8Y29udHJvbD4KICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KICAgICdceDg3JyAgICAgIyAgMHg4NyAtPiA8Y29udHJvbD4KICAgICdceDg4JyAgICAgIyAgMHg4OCAtPiA8Y29udHJvbD4KICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KICAgICdceDhhJyAgICAgIyAgMHg4QSAtPiA8Y29udHJvbD4KICAgICdceDhiJyAgICAgIyAgMHg4QiAtPiA8Y29udHJvbD4KICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KICAgICdceDhkJyAgICAgIyAgMHg4RCAtPiA8Y29udHJvbD4KICAgICdceDhlJyAgICAgIyAgMHg4RSAtPiA8Y29udHJvbD4KICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KICAgICdceDkwJyAgICAgIyAgMHg5MCAtPiA8Y29udHJvbD4KICAgICdceDkxJyAgICAgIyAgMHg5MSAtPiA8Y29udHJvbD4KICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KICAgICdceDkzJyAgICAgIyAgMHg5MyAtPiA8Y29udHJvbD4KICAgICdceDk0JyAgICAgIyAgMHg5NCAtPiA8Y29udHJvbD4KICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KICAgICdceDk2JyAgICAgIyAgMHg5NiAtPiA8Y29udHJvbD4KICAgICdceDk3JyAgICAgIyAgMHg5NyAtPiA8Y29udHJvbD4KICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KICAgICdceDk5JyAgICAgIyAgMHg5OSAtPiA8Y29udHJvbD4KICAgICdceDlhJyAgICAgIyAgMHg5QSAtPiA8Y29udHJvbD4KICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KICAgICdceDljJyAgICAgIyAgMHg5QyAtPiA8Y29udHJvbD4KICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KICAgICdceDlmJyAgICAgIyAgMHg5RiAtPiA8Y29udHJvbD4KICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x1ZmZmZScKICAgICdceGEyJyAgICAgIyAgMHhBMiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x4YTUnICAgICAjICAweEE1IC0+IFlFTiBTSUdOCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YTgnICAgICAjICAweEE4IC0+IERJQUVSRVNJUwogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHhkNycgICAgICMgIDB4QUEgLT4gTVVMVElQTElDQVRJT04gU0lHTgogICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YWYnICAgICAjICAweEFGIC0+IE1BQ1JPTgogICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCiAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCiAgICAnXHhiMycgICAgICMgIDB4QjMgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKICAgICdceGI0JyAgICAgIyAgMHhCNCAtPiBBQ1VURSBBQ0NFTlQKICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAogICAgJ1x4YjgnICAgICAjICAweEI4IC0+IENFRElMTEEKICAgICdceGI5JyAgICAgIyAgMHhCOSAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdceGY3JyAgICAgIyAgMHhCQSAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYycgICAgICMgIDB4QkMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhiZCcgICAgICMgIDB4QkQgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHhiZScgICAgICMgIDB4QkUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdTIwMTcnICAgIyAgMHhERiAtPiBET1VCTEUgTE9XIExJTkUKICAgICdcdTA1ZDAnICAgIyAgMHhFMCAtPiBIRUJSRVcgTEVUVEVSIEFMRUYKICAgICdcdTA1ZDEnICAgIyAgMHhFMSAtPiBIRUJSRVcgTEVUVEVSIEJFVAogICAgJ1x1MDVkMicgICAjICAweEUyIC0+IEhFQlJFVyBMRVRURVIgR0lNRUwKICAgICdcdTA1ZDMnICAgIyAgMHhFMyAtPiBIRUJSRVcgTEVUVEVSIERBTEVUCiAgICAnXHUwNWQ0JyAgICMgIDB4RTQgLT4gSEVCUkVXIExFVFRFUiBIRQogICAgJ1x1MDVkNScgICAjICAweEU1IC0+IEhFQlJFVyBMRVRURVIgVkFWCiAgICAnXHUwNWQ2JyAgICMgIDB4RTYgLT4gSEVCUkVXIExFVFRFUiBaQVlJTgogICAgJ1x1MDVkNycgICAjICAweEU3IC0+IEhFQlJFVyBMRVRURVIgSEVUCiAgICAnXHUwNWQ4JyAgICMgIDB4RTggLT4gSEVCUkVXIExFVFRFUiBURVQKICAgICdcdTA1ZDknICAgIyAgMHhFOSAtPiBIRUJSRVcgTEVUVEVSIFlPRAogICAgJ1x1MDVkYScgICAjICAweEVBIC0+IEhFQlJFVyBMRVRURVIgRklOQUwgS0FGCiAgICAnXHUwNWRiJyAgICMgIDB4RUIgLT4gSEVCUkVXIExFVFRFUiBLQUYKICAgICdcdTA1ZGMnICAgIyAgMHhFQyAtPiBIRUJSRVcgTEVUVEVSIExBTUVECiAgICAnXHUwNWRkJyAgICMgIDB4RUQgLT4gSEVCUkVXIExFVFRFUiBGSU5BTCBNRU0KICAgICdcdTA1ZGUnICAgIyAgMHhFRSAtPiBIRUJSRVcgTEVUVEVSIE1FTQogICAgJ1x1MDVkZicgICAjICAweEVGIC0+IEhFQlJFVyBMRVRURVIgRklOQUwgTlVOCiAgICAnXHUwNWUwJyAgICMgIDB4RjAgLT4gSEVCUkVXIExFVFRFUiBOVU4KICAgICdcdTA1ZTEnICAgIyAgMHhGMSAtPiBIRUJSRVcgTEVUVEVSIFNBTUVLSAogICAgJ1x1MDVlMicgICAjICAweEYyIC0+IEhFQlJFVyBMRVRURVIgQVlJTgogICAgJ1x1MDVlMycgICAjICAweEYzIC0+IEhFQlJFVyBMRVRURVIgRklOQUwgUEUKICAgICdcdTA1ZTQnICAgIyAgMHhGNCAtPiBIRUJSRVcgTEVUVEVSIFBFCiAgICAnXHUwNWU1JyAgICMgIDB4RjUgLT4gSEVCUkVXIExFVFRFUiBGSU5BTCBUU0FESQogICAgJ1x1MDVlNicgICAjICAweEY2IC0+IEhFQlJFVyBMRVRURVIgVFNBREkKICAgICdcdTA1ZTcnICAgIyAgMHhGNyAtPiBIRUJSRVcgTEVUVEVSIFFPRgogICAgJ1x1MDVlOCcgICAjICAweEY4IC0+IEhFQlJFVyBMRVRURVIgUkVTSAogICAgJ1x1MDVlOScgICAjICAweEY5IC0+IEhFQlJFVyBMRVRURVIgU0hJTgogICAgJ1x1MDVlYScgICAjICAweEZBIC0+IEhFQlJFVyBMRVRURVIgVEFWCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdTIwMGUnICAgIyAgMHhGRCAtPiBMRUZULVRPLVJJR0hUIE1BUksKICAgICdcdTIwMGYnICAgIyAgMHhGRSAtPiBSSUdIVC1UTy1MRUZUIE1BUksKICAgICdcdWZmZmUnCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1ZDEZcBZDMAAGQzAAAWAAAAZW5jb2RpbmdzL2lzbzg4NTlfOS5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgaXNvODg1OV85IGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9JU084ODU5Lzg4NTktOS5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzg4NTktOScsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KICAgICdceDgyJyAgICAgIyAgMHg4MiAtPiA8Y29udHJvbD4KICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KICAgICdceDg0JyAgICAgIyAgMHg4NCAtPiA8Y29udHJvbD4KICAgICdceDg1JyAgICAgIyAgMHg4NSAtPiA8Y29udHJvbD4KICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KICAgICdceDg3JyAgICAgIyAgMHg4NyAtPiA8Y29udHJvbD4KICAgICdceDg4JyAgICAgIyAgMHg4OCAtPiA8Y29udHJvbD4KICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KICAgICdceDhhJyAgICAgIyAgMHg4QSAtPiA8Y29udHJvbD4KICAgICdceDhiJyAgICAgIyAgMHg4QiAtPiA8Y29udHJvbD4KICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KICAgICdceDhkJyAgICAgIyAgMHg4RCAtPiA8Y29udHJvbD4KICAgICdceDhlJyAgICAgIyAgMHg4RSAtPiA8Y29udHJvbD4KICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KICAgICdceDkwJyAgICAgIyAgMHg5MCAtPiA8Y29udHJvbD4KICAgICdceDkxJyAgICAgIyAgMHg5MSAtPiA8Y29udHJvbD4KICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KICAgICdceDkzJyAgICAgIyAgMHg5MyAtPiA8Y29udHJvbD4KICAgICdceDk0JyAgICAgIyAgMHg5NCAtPiA8Y29udHJvbD4KICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KICAgICdceDk2JyAgICAgIyAgMHg5NiAtPiA8Y29udHJvbD4KICAgICdceDk3JyAgICAgIyAgMHg5NyAtPiA8Y29udHJvbD4KICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KICAgICdceDk5JyAgICAgIyAgMHg5OSAtPiA8Y29udHJvbD4KICAgICdceDlhJyAgICAgIyAgMHg5QSAtPiA8Y29udHJvbD4KICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KICAgICdceDljJyAgICAgIyAgMHg5QyAtPiA8Y29udHJvbD4KICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KICAgICdceDlmJyAgICAgIyAgMHg5RiAtPiA8Y29udHJvbD4KICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x4YTEnICAgICAjICAweEExIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgICdceGEyJyAgICAgIyAgMHhBMiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x4YTUnICAgICAjICAweEE1IC0+IFlFTiBTSUdOCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YTgnICAgICAjICAweEE4IC0+IERJQUVSRVNJUwogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHhhYScgICAgICMgIDB4QUEgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGFmJyAgICAgIyAgMHhBRiAtPiBNQUNST04KICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHhiNCcgICAgICMgIDB4QjQgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgogICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKICAgICdceGI4JyAgICAgIyAgMHhCOCAtPiBDRURJTExBCiAgICAnXHhiOScgICAgICMgIDB4QjkgLT4gU1VQRVJTQ1JJUFQgT05FCiAgICAnXHhiYScgICAgICMgIDB4QkEgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYycgICAgICMgIDB4QkMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhiZCcgICAgICMgIDB4QkQgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHhiZScgICAgICMgIDB4QkUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAnXHhiZicgICAgICMgIDB4QkYgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgJ1x4YzAnICAgICAjICAweEMwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4YzEnICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4YzInICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjMycgICAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhjNCcgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzUnICAgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjNicgICAgICMgIDB4QzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKICAgICdceGM3JyAgICAgIyAgMHhDNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4YzgnICAgICAjICAweEM4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4YzknICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4Y2EnICAgICAjICAweENBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjYicgICAgICMgIDB4Q0IgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4Y2MnICAgICAjICAweENDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4Y2QnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjZicgICAgICMgIDB4Q0YgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDExZScgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBCUkVWRQogICAgJ1x4ZDEnICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZDInICAgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZDMnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkNScgICAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhkNicgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDcnICAgICAjICAweEQ3IC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdceGQ4JyAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhkOScgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTMwJyAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDE1ZScgICAjICAweERFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiAgICAnXHhkZicgICAgICMgIDB4REYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgICdceGUwJyAgICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhlMScgICAgICMgIDB4RTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZTInICAgICAjICAweEUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTMnICAgICAjICAweEUzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGU0JyAgICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTUnICAgICAjICAweEU1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZTYnICAgICAjICAweEU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBBRQogICAgJ1x4ZTcnICAgICAjICAweEU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZTgnICAgICAjICAweEU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGU5JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlYScgICAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlYicgICAgICMgIDB4RUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGVjJyAgICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhlZCcgICAgICMgIDB4RUQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4ZWUnICAgICAjICAweEVFIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWYnICAgICAjICAweEVGIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTFmJyAgICMgIDB4RjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBCUkVWRQogICAgJ1x4ZjEnICAgICAjICAweEYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGYyJyAgICAgIyAgMHhGMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhmMycgICAgICMgIDB4RjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZjQnICAgICAjICAweEY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZjUnICAgICAjICAweEY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGY2JyAgICAgIyAgMHhGNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjcnICAgICAjICAweEY3IC0+IERJVklTSU9OIFNJR04KICAgICdceGY4JyAgICAgIyAgMHhGOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4ZjknICAgICAjICAweEY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGZhJyAgICAgIyAgMHhGQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmYicgICAgICMgIDB4RkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmYycgICAgICMgIDB4RkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMzEnICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCiAgICAnXHUwMTVmJyAgICMgIDB4RkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiAgICAnXHhmZicgICAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVgyR/Nr/AwAA/wMAABIAAABlbmNvZGluZ3Mvam9oYWIucHkjCiMgam9oYWIucHk6IFB5dGhvbiBVbmljb2RlIENvZGVjIGZvciBKT0hBQgojCiMgV3JpdHRlbiBieSBIeWUtU2hpayBDaGFuZyA8cGVya3lARnJlZUJTRC5vcmc+CiMKCmltcG9ydCBfY29kZWNzX2tyLCBjb2RlY3MKaW1wb3J0IF9tdWx0aWJ5dGVjb2RlYyBhcyBtYmMKCmNvZGVjID0gX2NvZGVjc19rci5nZXRjb2RlYygnam9oYWInKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdqb2hhYicsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVpjrvrvTNQAA0zUAABMAAABlbmNvZGluZ3Mva29pOF9yLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBrb2k4X3IgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlTQy9LT0k4LVIuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdrb2k4LXInLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHUyNTAwJyAgICMgIDB4ODAgLT4gQk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKICAgICdcdTI1MDInICAgIyAgMHg4MSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwKICAgICdcdTI1MGMnICAgIyAgMHg4MiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQKICAgICdcdTI1MTAnICAgIyAgMHg4MyAtPiBCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjUxNCcgICAjICAweDg0IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKICAgICdcdTI1MTgnICAgIyAgMHg4NSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQKICAgICdcdTI1MWMnICAgIyAgMHg4NiAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCiAgICAnXHUyNTI0JyAgICMgIDB4ODcgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTJjJyAgICMgIDB4ODggLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1MzQnICAgIyAgMHg4OSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKICAgICdcdTI1M2MnICAgIyAgMHg4QSAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdcdTI1ODAnICAgIyAgMHg4QiAtPiBVUFBFUiBIQUxGIEJMT0NLCiAgICAnXHUyNTg0JyAgICMgIDB4OEMgLT4gTE9XRVIgSEFMRiBCTE9DSwogICAgJ1x1MjU4OCcgICAjICAweDhEIC0+IEZVTEwgQkxPQ0sKICAgICdcdTI1OGMnICAgIyAgMHg4RSAtPiBMRUZUIEhBTEYgQkxPQ0sKICAgICdcdTI1OTAnICAgIyAgMHg4RiAtPiBSSUdIVCBIQUxGIEJMT0NLCiAgICAnXHUyNTkxJyAgICMgIDB4OTAgLT4gTElHSFQgU0hBREUKICAgICdcdTI1OTInICAgIyAgMHg5MSAtPiBNRURJVU0gU0hBREUKICAgICdcdTI1OTMnICAgIyAgMHg5MiAtPiBEQVJLIFNIQURFCiAgICAnXHUyMzIwJyAgICMgIDB4OTMgLT4gVE9QIEhBTEYgSU5URUdSQUwKICAgICdcdTI1YTAnICAgIyAgMHg5NCAtPiBCTEFDSyBTUVVBUkUKICAgICdcdTIyMTknICAgIyAgMHg5NSAtPiBCVUxMRVQgT1BFUkFUT1IKICAgICdcdTIyMWEnICAgIyAgMHg5NiAtPiBTUVVBUkUgUk9PVAogICAgJ1x1MjI0OCcgICAjICAweDk3IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x1MjI2NCcgICAjICAweDk4IC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjI2NScgICAjICAweDk5IC0+IEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x4YTAnICAgICAjICAweDlBIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUyMzIxJyAgICMgIDB4OUIgLT4gQk9UVE9NIEhBTEYgSU5URUdSQUwKICAgICdceGIwJyAgICAgIyAgMHg5QyAtPiBERUdSRUUgU0lHTgogICAgJ1x4YjInICAgICAjICAweDlEIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4YjcnICAgICAjICAweDlFIC0+IE1JRERMRSBET1QKICAgICdceGY3JyAgICAgIyAgMHg5RiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUyNTUwJyAgICMgIDB4QTAgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCiAgICAnXHUyNTUxJyAgICMgIDB4QTEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTAogICAgJ1x1MjU1MicgICAjICAweEEyIC0+IEJPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUwNDUxJyAgICMgIDB4QTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiAgICAnXHUyNTUzJyAgICMgIDB4QTQgLT4gQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NTQnICAgIyAgMHhBNSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTU1JyAgICMgIDB4QTYgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MjU1NicgICAjICAweEE3IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NTcnICAgIyAgMHhBOCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIExFRlQKICAgICdcdTI1NTgnICAgIyAgMHhBOSAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NTknICAgIyAgMHhBQSAtPiBCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NWEnICAgIyAgMHhBQiAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAogICAgJ1x1MjU1YicgICAjICAweEFDIC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUyNTVjJyAgICMgIDB4QUQgLT4gQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NWQnICAgIyAgMHhBRSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBMRUZUCiAgICAnXHUyNTVlJyAgICMgIDB4QUYgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCiAgICAnXHUyNTVmJyAgICMgIDB4QjAgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCiAgICAnXHUyNTYwJyAgICMgIDB4QjEgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQKICAgICdcdTI1NjEnICAgIyAgMHhCMiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRQogICAgJ1x1MDQwMScgICAjICAweEIzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCiAgICAnXHUyNTYyJyAgICMgIDB4QjQgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKICAgICdcdTI1NjMnICAgIyAgMHhCNSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUyNTY0JyAgICMgIDB4QjYgLT4gQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2NScgICAjICAweEI3IC0+IEJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NjYnICAgIyAgMHhCOCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjcnICAgIyAgMHhCOSAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2OCcgICAjICAweEJBIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTY5JyAgICMgIDB4QkIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2YScgICAjICAweEJDIC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUyNTZiJyAgICMgIDB4QkQgLT4gQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEUKICAgICdcdTI1NmMnICAgIyAgMHhCRSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHhhOScgICAgICMgIDB4QkYgLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTA0NGUnICAgIyAgMHhDMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKICAgICdcdTA0MzAnICAgIyAgMHhDMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQogICAgJ1x1MDQzMScgICAjICAweEMyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgJ1x1MDQ0NicgICAjICAweEMzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBUU0UKICAgICdcdTA0MzQnICAgIyAgMHhDNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgICdcdTA0MzUnICAgIyAgMHhDNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKICAgICdcdTA0NDQnICAgIyAgMHhDNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKICAgICdcdTA0MzMnICAgIyAgMHhDNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCiAgICAnXHUwNDQ1JyAgICMgIDB4QzggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCiAgICAnXHUwNDM4JyAgICMgIDB4QzkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKICAgICdcdTA0MzknICAgIyAgMHhDQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQogICAgJ1x1MDQzYScgICAjICAweENCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgJ1x1MDQzYicgICAjICAweENDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTAogICAgJ1x1MDQzYycgICAjICAweENEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTQogICAgJ1x1MDQzZCcgICAjICAweENFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgJ1x1MDQzZScgICAjICAweENGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBPCiAgICAnXHUwNDNmJyAgICMgIDB4RDAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCiAgICAnXHUwNDRmJyAgICMgIDB4RDEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCiAgICAnXHUwNDQwJyAgICMgIDB4RDIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiAgICAnXHUwNDQxJyAgICMgIDB4RDMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAnXHUwNDQyJyAgICMgIDB4RDQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAnXHUwNDQzJyAgICMgIDB4RDUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKICAgICdcdTA0MzYnICAgIyAgMHhENiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCiAgICAnXHUwNDMyJyAgICMgIDB4RDcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCiAgICAnXHUwNDRjJyAgICMgIDB4RDggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgJ1x1MDQ0YicgICAjICAweEQ5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCiAgICAnXHUwNDM3JyAgICMgIDB4REEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAnXHUwNDQ4JyAgICMgIDB4REIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQogICAgJ1x1MDQ0ZCcgICAjICAweERDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCiAgICAnXHUwNDQ5JyAgICMgIDB4REQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDQ3JyAgICMgIDB4REUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQogICAgJ1x1MDQ0YScgICAjICAweERGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KICAgICdcdTA0MmUnICAgIyAgMHhFMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQogICAgJ1x1MDQxMCcgICAjICAweEUxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgICdcdTA0MTEnICAgIyAgMHhFMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQogICAgJ1x1MDQyNicgICAjICAweEUzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQogICAgJ1x1MDQxNCcgICAjICAweEU0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiAgICAnXHUwNDE1JyAgICMgIDB4RTUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKICAgICdcdTA0MjQnICAgIyAgMHhFNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgogICAgJ1x1MDQxMycgICAjICAweEU3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQogICAgJ1x1MDQyNScgICAjICAweEU4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDE4JyAgICMgIDB4RTkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQogICAgJ1x1MDQxOScgICAjICAweEVBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0MWEnICAgIyAgMHhFQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQogICAgJ1x1MDQxYicgICAjICAweEVDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCiAgICAnXHUwNDFjJyAgICMgIDB4RUQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0MWQnICAgIyAgMHhFRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgogICAgJ1x1MDQxZScgICAjICAweEVGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KICAgICdcdTA0MWYnICAgIyAgMHhGMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQyZicgICAjICAweEYxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiAgICAnXHUwNDIwJyAgICMgIDB4RjIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKICAgICdcdTA0MjEnICAgIyAgMHhGMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwogICAgJ1x1MDQyMicgICAjICAweEY0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCiAgICAnXHUwNDIzJyAgICMgIDB4RjUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQogICAgJ1x1MDQxNicgICAjICAweEY2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQxMicgICAjICAweEY3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCiAgICAnXHUwNDJjJyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDJiJyAgICMgIDB4RjkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQogICAgJ1x1MDQxNycgICAjICAweEZBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCiAgICAnXHUwNDI4JyAgICMgIDB4RkIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAnXHUwNDJkJyAgICMgIDB4RkMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQogICAgJ1x1MDQyOScgICAjICAweEZEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDI3JyAgICMgIDB4RkUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCiAgICAnXHUwNDJhJyAgICMgIDB4RkYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1Zm97LRiTMAAIkzAAATAAAAZW5jb2RpbmdzL2tvaThfdC5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMga29pOF90CiIiIgojIGh0dHA6Ly9ydS53aWtpcGVkaWEub3JnL3dpa2kv0JrQntCYLTgKIyBodHRwOi8vd3d3Lm9wZW5zb3VyY2UuYXBwbGUuY29tL3NvdXJjZS9saWJpY29udi9saWJpY29udi00L2xpYmljb252L3Rlc3RzL0tPSTgtVC5UWFQKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdrb2k4LXQnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSwogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCiAgICAnXHUwNDliJyAgICMgIDB4ODAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCiAgICAnXHUwNDkzJyAgICMgIDB4ODEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQogICAgJ1x1MjAxYScgICAjICAweDgyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDQ5MicgICAjICAweDgzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQogICAgJ1x1MjAxZScgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKICAgICdcdTIwMjAnICAgIyAgMHg4NiAtPiBEQUdHRVIKICAgICdcdTIwMjEnICAgIyAgMHg4NyAtPiBET1VCTEUgREFHR0VSCiAgICAnXHVmZmZlJyAgICMgIDB4ODggLT4gVU5ERUZJTkVECiAgICAnXHUyMDMwJyAgICMgIDB4ODkgLT4gUEVSIE1JTExFIFNJR04KICAgICdcdTA0YjMnICAgIyAgMHg4QSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKICAgICdcdTIwMzknICAgIyAgMHg4QiAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDRiMicgICAjICAweDhDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCiAgICAnXHUwNGI3JyAgICMgIDB4OEQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDRiNicgICAjICAweDhFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgogICAgJ1x1ZmZmZScgICAjICAweDhGIC0+IFVOREVGSU5FRAogICAgJ1x1MDQ5YScgICAjICAweDkwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCiAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAogICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICiAgICAnXHVmZmZlJyAgICMgIDB4OTggLT4gVU5ERUZJTkVECiAgICAnXHUyMTIyJyAgICMgIDB4OTkgLT4gVFJBREUgTUFSSyBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4OUEgLT4gVU5ERUZJTkVECiAgICAnXHUyMDNhJyAgICMgIDB4OUIgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHVmZmZlJyAgICMgIDB4OUMgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUUgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4OUYgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QTAgLT4gVU5ERUZJTkVECiAgICAnXHUwNGVmJyAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KICAgICdcdTA0ZWUnICAgIyAgMHhBMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCiAgICAnXHUwNDUxJyAgICMgIDB4QTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x1MDRlMycgICAjICAweEE1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1ZmZmZScgICAjICAweEE4IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEE5IC0+IFVOREVGSU5FRAogICAgJ1x1ZmZmZScgICAjICAweEFBIC0+IFVOREVGSU5FRAogICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgogICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x1ZmZmZScgICAjICAweEFGIC0+IFVOREVGSU5FRAogICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCiAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCiAgICAnXHUwNDAxJyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KICAgICdcdWZmZmUnICAgIyAgMHhCNCAtPiBVTkRFRklORUQKICAgICdcdTA0ZTInICAgIyAgMHhCNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCiAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAogICAgJ1x1ZmZmZScgICAjICAweEI4IC0+IFVOREVGSU5FRAogICAgJ1x1MjExNicgICAjICAweEI5IC0+IE5VTUVSTyBTSUdOCiAgICAnXHVmZmZlJyAgICMgIDB4QkEgLT4gVU5ERUZJTkVECiAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHVmZmZlJyAgICMgIDB4QkMgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QkQgLT4gVU5ERUZJTkVECiAgICAnXHVmZmZlJyAgICMgIDB4QkUgLT4gVU5ERUZJTkVECiAgICAnXHhhOScgICAgICMgIDB4QkYgLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTA0NGUnICAgIyAgMHhDMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKICAgICdcdTA0MzAnICAgIyAgMHhDMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQogICAgJ1x1MDQzMScgICAjICAweEMyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgJ1x1MDQ0NicgICAjICAweEMzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBUU0UKICAgICdcdTA0MzQnICAgIyAgMHhDNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgICdcdTA0MzUnICAgIyAgMHhDNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKICAgICdcdTA0NDQnICAgIyAgMHhDNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKICAgICdcdTA0MzMnICAgIyAgMHhDNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCiAgICAnXHUwNDQ1JyAgICMgIDB4QzggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCiAgICAnXHUwNDM4JyAgICMgIDB4QzkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKICAgICdcdTA0MzknICAgIyAgMHhDQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQogICAgJ1x1MDQzYScgICAjICAweENCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgJ1x1MDQzYicgICAjICAweENDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTAogICAgJ1x1MDQzYycgICAjICAweENEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTQogICAgJ1x1MDQzZCcgICAjICAweENFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgJ1x1MDQzZScgICAjICAweENGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBPCiAgICAnXHUwNDNmJyAgICMgIDB4RDAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCiAgICAnXHUwNDRmJyAgICMgIDB4RDEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCiAgICAnXHUwNDQwJyAgICMgIDB4RDIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiAgICAnXHUwNDQxJyAgICMgIDB4RDMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAnXHUwNDQyJyAgICMgIDB4RDQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAnXHUwNDQzJyAgICMgIDB4RDUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKICAgICdcdTA0MzYnICAgIyAgMHhENiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCiAgICAnXHUwNDMyJyAgICMgIDB4RDcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCiAgICAnXHUwNDRjJyAgICMgIDB4RDggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgogICAgJ1x1MDQ0YicgICAjICAweEQ5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCiAgICAnXHUwNDM3JyAgICMgIDB4REEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAnXHUwNDQ4JyAgICMgIDB4REIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQogICAgJ1x1MDQ0ZCcgICAjICAweERDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCiAgICAnXHUwNDQ5JyAgICMgIDB4REQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDQ3JyAgICMgIDB4REUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQogICAgJ1x1MDQ0YScgICAjICAweERGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KICAgICdcdTA0MmUnICAgIyAgMHhFMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQogICAgJ1x1MDQxMCcgICAjICAweEUxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgICdcdTA0MTEnICAgIyAgMHhFMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQogICAgJ1x1MDQyNicgICAjICAweEUzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQogICAgJ1x1MDQxNCcgICAjICAweEU0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiAgICAnXHUwNDE1JyAgICMgIDB4RTUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKICAgICdcdTA0MjQnICAgIyAgMHhFNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgogICAgJ1x1MDQxMycgICAjICAweEU3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQogICAgJ1x1MDQyNScgICAjICAweEU4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDE4JyAgICMgIDB4RTkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQogICAgJ1x1MDQxOScgICAjICAweEVBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0MWEnICAgIyAgMHhFQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQogICAgJ1x1MDQxYicgICAjICAweEVDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCiAgICAnXHUwNDFjJyAgICMgIDB4RUQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0MWQnICAgIyAgMHhFRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgogICAgJ1x1MDQxZScgICAjICAweEVGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KICAgICdcdTA0MWYnICAgIyAgMHhGMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQyZicgICAjICAweEYxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiAgICAnXHUwNDIwJyAgICMgIDB4RjIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKICAgICdcdTA0MjEnICAgIyAgMHhGMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwogICAgJ1x1MDQyMicgICAjICAweEY0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCiAgICAnXHUwNDIzJyAgICMgIDB4RjUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQogICAgJ1x1MDQxNicgICAjICAweEY2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQxMicgICAjICAweEY3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCiAgICAnXHUwNDJjJyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDJiJyAgICMgIDB4RjkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQogICAgJ1x1MDQxNycgICAjICAweEZBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCiAgICAnXHUwNDI4JyAgICMgIDB4RkIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAnXHUwNDJkJyAgICMgIDB4RkMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQogICAgJ1x1MDQyOScgICAjICAweEZEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDI3JyAgICMgIDB4RkUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCiAgICAnXHUwNDJhJyAgICMgIDB4RkYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1aiLVK+wjUAAMI1AAATAAAAZW5jb2RpbmdzL2tvaThfdS5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMga29pOF91IGdlbmVyYXRlZCBmcm9tICdweXRob24tbWFwcGluZ3MvS09JOC1VLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0na29pOC11JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x1MjUwMCcgICAjICAweDgwIC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCiAgICAnXHUyNTAyJyAgICMgIDB4ODEgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCiAgICAnXHUyNTBjJyAgICMgIDB4ODIgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCiAgICAnXHUyNTEwJyAgICMgIDB4ODMgLT4gQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKICAgICdcdTI1MTQnICAgIyAgMHg4NCAtPiBCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTE4JyAgICMgIDB4ODUgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCiAgICAnXHUyNTFjJyAgICMgIDB4ODYgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjUyNCcgICAjICAweDg3IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVAogICAgJ1x1MjUyYycgICAjICAweDg4IC0+IEJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTM0JyAgICMgIDB4ODkgLT4gQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTNjJyAgICMgIDB4OEEgLT4gQk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCiAgICAnXHUyNTgwJyAgICMgIDB4OEIgLT4gVVBQRVIgSEFMRiBCTE9DSwogICAgJ1x1MjU4NCcgICAjICAweDhDIC0+IExPV0VSIEhBTEYgQkxPQ0sKICAgICdcdTI1ODgnICAgIyAgMHg4RCAtPiBGVUxMIEJMT0NLCiAgICAnXHUyNThjJyAgICMgIDB4OEUgLT4gTEVGVCBIQUxGIEJMT0NLCiAgICAnXHUyNTkwJyAgICMgIDB4OEYgLT4gUklHSFQgSEFMRiBCTE9DSwogICAgJ1x1MjU5MScgICAjICAweDkwIC0+IExJR0hUIFNIQURFCiAgICAnXHUyNTkyJyAgICMgIDB4OTEgLT4gTUVESVVNIFNIQURFCiAgICAnXHUyNTkzJyAgICMgIDB4OTIgLT4gREFSSyBTSEFERQogICAgJ1x1MjMyMCcgICAjICAweDkzIC0+IFRPUCBIQUxGIElOVEVHUkFMCiAgICAnXHUyNWEwJyAgICMgIDB4OTQgLT4gQkxBQ0sgU1FVQVJFCiAgICAnXHUyMjE5JyAgICMgIDB4OTUgLT4gQlVMTEVUIE9QRVJBVE9SCiAgICAnXHUyMjFhJyAgICMgIDB4OTYgLT4gU1FVQVJFIFJPT1QKICAgICdcdTIyNDgnICAgIyAgMHg5NyAtPiBBTE1PU1QgRVFVQUwgVE8KICAgICdcdTIyNjQnICAgIyAgMHg5OCAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTIyNjUnICAgIyAgMHg5OSAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgICdceGEwJyAgICAgIyAgMHg5QSAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x1MjMyMScgICAjICAweDlCIC0+IEJPVFRPTSBIQUxGIElOVEVHUkFMCiAgICAnXHhiMCcgICAgICMgIDB4OUMgLT4gREVHUkVFIFNJR04KICAgICdceGIyJyAgICAgIyAgMHg5RCAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGI3JyAgICAgIyAgMHg5RSAtPiBNSURETEUgRE9UCiAgICAnXHhmNycgICAgICMgIDB4OUYgLT4gRElWSVNJT04gU0lHTgogICAgJ1x1MjU1MCcgICAjICAweEEwIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAogICAgJ1x1MjU1MScgICAjICAweEExIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKICAgICdcdTI1NTInICAgIyAgMHhBMiAtPiBCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MDQ1MScgICAjICAweEEzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgJ1x1MDQ1NCcgICAjICAweEE0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgICdcdTI1NTQnICAgIyAgMHhBNSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCiAgICAnXHUwNDU2JyAgICMgIDB4QTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgJ1x1MDQ1NycgICAjICAweEE3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZSSAoVUtSQUlOSUFOKQogICAgJ1x1MjU1NycgICAjICAweEE4IC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVAogICAgJ1x1MjU1OCcgICAjICAweEE5IC0+IEJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQogICAgJ1x1MjU1OScgICAjICAweEFBIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQogICAgJ1x1MjU1YScgICAjICAweEFCIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUCiAgICAnXHUyNTViJyAgICMgIDB4QUMgLT4gQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKICAgICdcdTA0OTEnICAgIyAgMHhBRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIEdIRSBXSVRIIFVQVFVSTgogICAgJ1x1MjU1ZCcgICAjICAweEFFIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKICAgICdcdTI1NWUnICAgIyAgMHhBRiAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKICAgICdcdTI1NWYnICAgIyAgMHhCMCAtPiBCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKICAgICdcdTI1NjAnICAgIyAgMHhCMSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVAogICAgJ1x1MjU2MScgICAjICAweEIyIC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCiAgICAnXHUwNDAxJyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KICAgICdcdTA0MDQnICAgIyAgMHhCNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgICdcdTI1NjMnICAgIyAgMHhCNSAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCiAgICAnXHUwNDA2JyAgICMgIDB4QjYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAnXHUwNDA3JyAgICMgIDB4QjcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUkgKFVLUkFJTklBTikKICAgICdcdTI1NjYnICAgIyAgMHhCOCAtPiBCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUwKICAgICdcdTI1NjcnICAgIyAgMHhCOSAtPiBCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQogICAgJ1x1MjU2OCcgICAjICAweEJBIC0+IEJPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCiAgICAnXHUyNTY5JyAgICMgIDB4QkIgLT4gQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgSE9SSVpPTlRBTAogICAgJ1x1MjU2YScgICAjICAweEJDIC0+IEJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiAgICAnXHUwNDkwJyAgICMgIDB4QkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUtSQUlOSUFOIEdIRSBXSVRIIFVQVFVSTgogICAgJ1x1MjU2YycgICAjICAweEJFIC0+IEJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKICAgICdceGE5JyAgICAgIyAgMHhCRiAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MDQ0ZScgICAjICAweEMwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQogICAgJ1x1MDQzMCcgICAjICAweEMxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCiAgICAnXHUwNDMxJyAgICMgIDB4QzIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCiAgICAnXHUwNDQ2JyAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQogICAgJ1x1MDQzNCcgICAjICAweEM0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBERQogICAgJ1x1MDQzNScgICAjICAweEM1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQogICAgJ1x1MDQ0NCcgICAjICAweEM2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFRgogICAgJ1x1MDQzMycgICAjICAweEM3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKICAgICdcdTA0NDUnICAgIyAgMHhDOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKICAgICdcdTA0MzgnICAgIyAgMHhDOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQogICAgJ1x1MDQzOScgICAjICAweENBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCiAgICAnXHUwNDNhJyAgICMgIDB4Q0IgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCiAgICAnXHUwNDNiJyAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCiAgICAnXHUwNDNjJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCiAgICAnXHUwNDNkJyAgICMgIDB4Q0UgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCiAgICAnXHUwNDNlJyAgICMgIDB4Q0YgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KICAgICdcdTA0M2YnICAgIyAgMHhEMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKICAgICdcdTA0NGYnICAgIyAgMHhEMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKICAgICdcdTA0NDAnICAgIyAgMHhEMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKICAgICdcdTA0NDEnICAgIyAgMHhEMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKICAgICdcdTA0NDInICAgIyAgMHhENCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKICAgICdcdTA0NDMnICAgIyAgMHhENSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQogICAgJ1x1MDQzNicgICAjICAweEQ2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKICAgICdcdTA0MzInICAgIyAgMHhENyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKICAgICdcdTA0NGMnICAgIyAgMHhEOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDRiJyAgICMgIDB4RDkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKICAgICdcdTA0MzcnICAgIyAgMHhEQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKICAgICdcdTA0NDgnICAgIyAgMHhEQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCiAgICAnXHUwNDRkJyAgICMgIDB4REMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKICAgICdcdTA0NDknICAgIyAgMHhERCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKICAgICdcdTA0NDcnICAgIyAgMHhERSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCiAgICAnXHUwNDRhJyAgICMgIDB4REYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgogICAgJ1x1MDQyZScgICAjICAweEUwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAnXHUwNDEwJyAgICMgIDB4RTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQQogICAgJ1x1MDQxMScgICAjICAweEUyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCiAgICAnXHUwNDI2JyAgICMgIDB4RTMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCiAgICAnXHUwNDE0JyAgICMgIDB4RTQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKICAgICdcdTA0MTUnICAgIyAgMHhFNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQogICAgJ1x1MDQyNCcgICAjICAweEU2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCiAgICAnXHUwNDEzJyAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAnXHUwNDI1JyAgICMgIDB4RTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKICAgICdcdTA0MTgnICAgIyAgMHhFOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCiAgICAnXHUwNDE5JyAgICMgIDB4RUEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQogICAgJ1x1MDQxYScgICAjICAweEVCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCiAgICAnXHUwNDFiJyAgICMgIDB4RUMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKICAgICdcdTA0MWMnICAgIyAgMHhFRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQogICAgJ1x1MDQxZCcgICAjICAweEVFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCiAgICAnXHUwNDFlJyAgICMgIDB4RUYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTwogICAgJ1x1MDQxZicgICAjICAweEYwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCiAgICAnXHUwNDJmJyAgICMgIDB4RjEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKICAgICdcdTA0MjAnICAgIyAgMHhGMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgogICAgJ1x1MDQyMScgICAjICAweEYzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCiAgICAnXHUwNDIyJyAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKICAgICdcdTA0MjMnICAgIyAgMHhGNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCiAgICAnXHUwNDE2JyAgICMgIDB4RjYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCiAgICAnXHUwNDEyJyAgICMgIDB4RjcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKICAgICdcdTA0MmMnICAgIyAgMHhGOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KICAgICdcdTA0MmInICAgIyAgMHhGOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAnXHUwNDE3JyAgICMgIDB4RkEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKICAgICdcdTA0MjgnICAgIyAgMHhGQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEEKICAgICdcdTA0MmQnICAgIyAgMHhGQyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCiAgICAnXHUwNDI5JyAgICMgIDB4RkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKICAgICdcdTA0MjcnICAgIyAgMHhGRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKICAgICdcdTA0MmEnICAgIyAgMHhGRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVh9DiUSbNQAAmzUAABMAAABlbmNvZGluZ3Mva3oxMDQ4LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBrejEwNDggZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlTQy9LWjEwNDguVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCwgZXJyb3JzLCBlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsIGVycm9ycywgZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMsIGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzLCBkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2t6MTA0OCcsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICAjICAweDAwIC0+IE5VTEwKICAgICdceDAxJyAgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCiAgICAnXHgwNCcgICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQogICAgJ1x4MDcnICAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KICAgICdcbicgICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECiAgICAnXHInICAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KICAgICdceDEwJyAgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCiAgICAnXHgxMycgICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKICAgICdceDE2JyAgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICAjICAweDE4IC0+IENBTkNFTAogICAgJ1x4MTknICAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgICMgIDB4MUIgLT4gRVNDQVBFCiAgICAnXHgxYycgICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCiAgICAnXHgxZicgICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x1MDQwMicgICAgIyAgMHg4MCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBESkUKICAgICdcdTA0MDMnICAgICMgIDB4ODEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0pFCiAgICAnXHUyMDFhJyAgICAjICAweDgyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDQ1MycgICAgIyAgMHg4MyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0pFCiAgICAnXHUyMDFlJyAgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyNicgICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHUyMDIwJyAgICAjICAweDg2IC0+IERBR0dFUgogICAgJ1x1MjAyMScgICAgIyAgMHg4NyAtPiBET1VCTEUgREFHR0VSCiAgICAnXHUyMGFjJyAgICAjICAweDg4IC0+IEVVUk8gU0lHTgogICAgJ1x1MjAzMCcgICAgIyAgMHg4OSAtPiBQRVIgTUlMTEUgU0lHTgogICAgJ1x1MDQwOScgICAgIyAgMHg4QSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkUKICAgICdcdTIwMzknICAgICMgIDB4OEIgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTA0MGEnICAgICMgIDB4OEMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFCiAgICAnXHUwNDlhJyAgICAjICAweDhEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCiAgICAnXHUwNGJhJyAgICAjICAweDhFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKICAgICdcdTA0MGYnICAgICMgIDB4OEYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpIRQogICAgJ1x1MDQ1MicgICAgIyAgMHg5MCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFCiAgICAnXHUyMDE4JyAgICAjICAweDkxIC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDE5JyAgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxYycgICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAgIyAgMHg5NCAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjInICAgICMgIDB4OTUgLT4gQlVMTEVUCiAgICAnXHUyMDEzJyAgICAjICAweDk2IC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgICMgIDB4OTcgLT4gRU0gREFTSAogICAgJ1x1ZmZmZScgICAgIyAgMHg5OCAtPiBVTkRFRklORUQKICAgICdcdTIxMjInICAgICMgIDB4OTkgLT4gVFJBREUgTUFSSyBTSUdOCiAgICAnXHUwNDU5JyAgICAjICAweDlBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBMSkUKICAgICdcdTIwM2EnICAgICMgIDB4OUIgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwNDVhJyAgICAjICAweDlDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBOSkUKICAgICdcdTA0OWInICAgICMgIDB4OUQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCiAgICAnXHUwNGJiJyAgICAjICAweDlFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBCiAgICAnXHUwNDVmJyAgICAjICAweDlGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBEWkhFCiAgICAnXHhhMCcgICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUwNGIwJyAgICAjICAweEExIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKICAgICdcdTA0YjEnICAgICMgIDB4QTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKICAgICdcdTA0ZDgnICAgICMgIDB4QTMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0NIV0EKICAgICdceGE0JyAgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x1MDRlOCcgICAgIyAgMHhBNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTwogICAgJ1x4YTYnICAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCiAgICAnXHhhNycgICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MDQwMScgICAgIyAgMHhBOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTwogICAgJ1x4YTknICAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MDQ5MicgICAgIyAgMHhBQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKICAgICdceGFiJyAgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGFjJyAgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KICAgICdceGFkJyAgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdceGFlJyAgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHUwNGFlJyAgICAjICAweEFGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKICAgICdceGIwJyAgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdceGIxJyAgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHUwNDA2JyAgICAjICAweEIyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgJ1x1MDQ1NicgICAgIyAgMHhCMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAnXHUwNGU5JyAgICAjICAweEI0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTwogICAgJ1x4YjUnICAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHhiNicgICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YjcnICAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCiAgICAnXHUwNDUxJyAgICAjICAweEI4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgJ1x1MjExNicgICAgIyAgMHhCOSAtPiBOVU1FUk8gU0lHTgogICAgJ1x1MDQ5MycgICAgIyAgMHhCQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCiAgICAnXHhiYicgICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MDRkOScgICAgIyAgMHhCQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKICAgICdcdTA0YTInICAgICMgIDB4QkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKICAgICdcdTA0YTMnICAgICMgIDB4QkUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCiAgICAnXHUwNGFmJyAgICAjICAweEJGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVCiAgICAnXHUwNDEwJyAgICAjICAweEMwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgICdcdTA0MTEnICAgICMgIDB4QzEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKICAgICdcdTA0MTInICAgICMgIDB4QzIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKICAgICdcdTA0MTMnICAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAnXHUwNDE0JyAgICAjICAweEM0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiAgICAnXHUwNDE1JyAgICAjICAweEM1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCiAgICAnXHUwNDE2JyAgICAjICAweEM2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQxNycgICAgIyAgMHhDNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQogICAgJ1x1MDQxOCcgICAgIyAgMHhDOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCiAgICAnXHUwNDE5JyAgICAjICAweEM5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0MWEnICAgICMgIDB4Q0EgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKICAgICdcdTA0MWInICAgICMgIDB4Q0IgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKICAgICdcdTA0MWMnICAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0MWQnICAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KICAgICdcdTA0MWUnICAgICMgIDB4Q0UgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTwogICAgJ1x1MDQxZicgICAgIyAgMHhDRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQyMCcgICAgIyAgMHhEMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgogICAgJ1x1MDQyMScgICAgIyAgMHhEMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwogICAgJ1x1MDQyMicgICAgIyAgMHhEMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgJ1x1MDQyMycgICAgIyAgMHhEMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCiAgICAnXHUwNDI0JyAgICAjICAweEQ0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCiAgICAnXHUwNDI1JyAgICAjICAweEQ1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDI2JyAgICAjICAweEQ2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQogICAgJ1x1MDQyNycgICAgIyAgMHhENyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKICAgICdcdTA0MjgnICAgICMgIDB4RDggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAnXHUwNDI5JyAgICAjICAweEQ5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiAgICAnXHUwNDJhJyAgICAjICAweERBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgogICAgJ1x1MDQyYicgICAgIyAgMHhEQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAnXHUwNDJjJyAgICAjICAweERDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgogICAgJ1x1MDQyZCcgICAgIyAgMHhERCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCiAgICAnXHUwNDJlJyAgICAjICAweERFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAnXHUwNDJmJyAgICAjICAweERGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiAgICAnXHUwNDMwJyAgICAjICAweEUwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCiAgICAnXHUwNDMxJyAgICAjICAweEUxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgJ1x1MDQzMicgICAgIyAgMHhFMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKICAgICdcdTA0MzMnICAgICMgIDB4RTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQogICAgJ1x1MDQzNCcgICAgIyAgMHhFNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgICdcdTA0MzUnICAgICMgIDB4RTUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCiAgICAnXHUwNDM2JyAgICAjICAweEU2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKICAgICdcdTA0MzcnICAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAnXHUwNDM4JyAgICAjICAweEU4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJCiAgICAnXHUwNDM5JyAgICAjICAweEU5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCiAgICAnXHUwNDNhJyAgICAjICAweEVBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgJ1x1MDQzYicgICAgIyAgMHhFQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKICAgICdcdTA0M2MnICAgICMgIDB4RUMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCiAgICAnXHUwNDNkJyAgICAjICAweEVEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgJ1x1MDQzZScgICAgIyAgMHhFRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwogICAgJ1x1MDQzZicgICAgIyAgMHhFRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKICAgICdcdTA0NDAnICAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiAgICAnXHUwNDQxJyAgICAjICAweEYxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUwogICAgJ1x1MDQ0MicgICAgIyAgMHhGMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKICAgICdcdTA0NDMnICAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKICAgICdcdTA0NDQnICAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCiAgICAnXHUwNDQ1JyAgICAjICAweEY1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQogICAgJ1x1MDQ0NicgICAgIyAgMHhGNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCiAgICAnXHUwNDQ3JyAgICAjICAweEY3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKICAgICdcdTA0NDgnICAgICMgIDB4RjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQogICAgJ1x1MDQ0OScgICAgIyAgMHhGOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKICAgICdcdTA0NGEnICAgICMgIDB4RkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgogICAgJ1x1MDQ0YicgICAgIyAgMHhGQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQogICAgJ1x1MDQ0YycgICAgIyAgMHhGQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDRkJyAgICAjICAweEZEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCiAgICAnXHUwNDRlJyAgICAjICAweEZFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQogICAgJ1x1MDQ0ZicgICAgIyAgMHhGRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlID0gY29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWgS95cfAEAADwBAAAFAAAAGVuY29kaW5ncy9sYXRpbl8xLnB5IiIiIFB5dGhvbiAnbGF0aW4tMScgQ29kZWMKCgpXcml0dGVuIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyAobWFsQGxlbWJ1cmcuY29tKS4KCihjKSBDb3B5cmlnaHQgQ05SSSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gTk8gV0FSUkFOVFkuCgoiIiIKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgIyBOb3RlOiBCaW5kaW5nIHRoZXNlIGFzIEMgZnVuY3Rpb25zIHdpbGwgcmVzdWx0IGluIHRoZSBjbGFzcyBub3QKICAgICMgY29udmVydGluZyB0aGVtIHRvIG1ldGhvZHMuIFRoaXMgaXMgaW50ZW5kZWQuCiAgICBlbmNvZGUgPSBjb2RlY3MubGF0aW5fMV9lbmNvZGUKICAgIGRlY29kZSA9IGNvZGVjcy5sYXRpbl8xX2RlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MubGF0aW5fMV9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5sYXRpbl8xX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycylbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbUNvbnZlcnRlcihTdHJlYW1Xcml0ZXIsU3RyZWFtUmVhZGVyKToKCiAgICBlbmNvZGUgPSBjb2RlY3MubGF0aW5fMV9kZWNvZGUKICAgIGRlY29kZSA9IGNvZGVjcy5sYXRpbl8xX2VuY29kZQoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J2lzbzg4NTktMScsCiAgICAgICAgZW5jb2RlPUNvZGVjLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAACIKNWqVqf9HOOAABzjgAAFwAAAGVuY29kaW5ncy9tYWNfYXJhYmljLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnVkVORE9SUy9BUFBMRS9BUkFCSUMuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J21hYy1hcmFiaWMnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCiMjIyBEZWNvZGluZyBNYXAKCmRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKZGVjb2RpbmdfbWFwLnVwZGF0ZSh7CiAgICAweDAwODA6IDB4MDBjNCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4MTogMHgwMGEwLCAgICAgIyAgTk8tQlJFQUsgU1BBQ0UsIHJpZ2h0LWxlZnQKICAgIDB4MDA4MjogMHgwMGM3LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgIDB4MDA4MzogMHgwMGM5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwODQ6IDB4MDBkMSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMDg1OiAweDAwZDYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAweDAwODY6IDB4MDBkYywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA4NzogMHgwMGUxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgMHgwMDg4OiAweDAwZTAsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwODk6IDB4MDBlMiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgMHgwMDhhOiAweDAwZTQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMDhiOiAweDA2YmEsICAgICAjICBBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BCiAgICAweDAwOGM6IDB4MDBhYiwgICAgICMgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLLCByaWdodC1sZWZ0CiAgICAweDAwOGQ6IDB4MDBlNywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMDhlOiAweDAwZTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAweDAwOGY6IDB4MDBlOCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgIDB4MDA5MDogMHgwMGVhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOTE6IDB4MDBlYiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAweDAwOTI6IDB4MDBlZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDA5MzogMHgyMDI2LCAgICAgIyAgSE9SSVpPTlRBTCBFTExJUFNJUywgcmlnaHQtbGVmdAogICAgMHgwMDk0OiAweDAwZWUsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5NTogMHgwMGVmLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5NjogMHgwMGYxLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgMHgwMDk3OiAweDAwZjMsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAweDAwOTg6IDB4MDBiYiwgICAgICMgIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSywgcmlnaHQtbGVmdAogICAgMHgwMDk5OiAweDAwZjQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDA5YTogMHgwMGY2LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDA5YjogMHgwMGY3LCAgICAgIyAgRElWSVNJT04gU0lHTiwgcmlnaHQtbGVmdAogICAgMHgwMDljOiAweDAwZmEsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAweDAwOWQ6IDB4MDBmOSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgIDB4MDA5ZTogMHgwMGZiLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwOWY6IDB4MDBmYywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDAwYTA6IDB4MDAyMCwgICAgICMgIFNQQUNFLCByaWdodC1sZWZ0CiAgICAweDAwYTE6IDB4MDAyMSwgICAgICMgIEVYQ0xBTUFUSU9OIE1BUkssIHJpZ2h0LWxlZnQKICAgIDB4MDBhMjogMHgwMDIyLCAgICAgIyAgUVVPVEFUSU9OIE1BUkssIHJpZ2h0LWxlZnQKICAgIDB4MDBhMzogMHgwMDIzLCAgICAgIyAgTlVNQkVSIFNJR04sIHJpZ2h0LWxlZnQKICAgIDB4MDBhNDogMHgwMDI0LCAgICAgIyAgRE9MTEFSIFNJR04sIHJpZ2h0LWxlZnQKICAgIDB4MDBhNTogMHgwNjZhLCAgICAgIyAgQVJBQklDIFBFUkNFTlQgU0lHTgogICAgMHgwMGE2OiAweDAwMjYsICAgICAjICBBTVBFUlNBTkQsIHJpZ2h0LWxlZnQKICAgIDB4MDBhNzogMHgwMDI3LCAgICAgIyAgQVBPU1RST1BIRSwgcmlnaHQtbGVmdAogICAgMHgwMGE4OiAweDAwMjgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTLCByaWdodC1sZWZ0CiAgICAweDAwYTk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTLCByaWdodC1sZWZ0CiAgICAweDAwYWE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLLCByaWdodC1sZWZ0CiAgICAweDAwYWI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTiwgcmlnaHQtbGVmdAogICAgMHgwMGFjOiAweDA2MGMsICAgICAjICBBUkFCSUMgQ09NTUEKICAgIDB4MDBhZDogMHgwMDJkLCAgICAgIyAgSFlQSEVOLU1JTlVTLCByaWdodC1sZWZ0CiAgICAweDAwYWU6IDB4MDAyZSwgICAgICMgIEZVTEwgU1RPUCwgcmlnaHQtbGVmdAogICAgMHgwMGFmOiAweDAwMmYsICAgICAjICBTT0xJRFVTLCByaWdodC1sZWZ0CiAgICAweDAwYjA6IDB4MDY2MCwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwMGIxOiAweDA2NjEsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgT05FLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwMGIyOiAweDA2NjIsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgVFdPLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwMGIzOiAweDA2NjMsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUsIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAweDAwYjQ6IDB4MDY2NCwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwMGI1OiAweDA2NjUsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgRklWRSwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgIDB4MDBiNjogMHgwNjY2LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIFNJWCwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgIDB4MDBiNzogMHgwNjY3LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIFNFVkVOLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwMGI4OiAweDA2NjgsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQsIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAweDAwYjk6IDB4MDY2OSwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwMGJhOiAweDAwM2EsICAgICAjICBDT0xPTiwgcmlnaHQtbGVmdAogICAgMHgwMGJiOiAweDA2MWIsICAgICAjICBBUkFCSUMgU0VNSUNPTE9OCiAgICAweDAwYmM6IDB4MDAzYywgICAgICMgIExFU1MtVEhBTiBTSUdOLCByaWdodC1sZWZ0CiAgICAweDAwYmQ6IDB4MDAzZCwgICAgICMgIEVRVUFMUyBTSUdOLCByaWdodC1sZWZ0CiAgICAweDAwYmU6IDB4MDAzZSwgICAgICMgIEdSRUFURVItVEhBTiBTSUdOLCByaWdodC1sZWZ0CiAgICAweDAwYmY6IDB4MDYxZiwgICAgICMgIEFSQUJJQyBRVUVTVElPTiBNQVJLCiAgICAweDAwYzA6IDB4Mjc0YSwgICAgICMgIEVJR0hUIFRFQVJEUk9QLVNQT0tFRCBQUk9QRUxMRVIgQVNURVJJU0ssIHJpZ2h0LWxlZnQKICAgIDB4MDBjMTogMHgwNjIxLCAgICAgIyAgQVJBQklDIExFVFRFUiBIQU1aQQogICAgMHgwMGMyOiAweDA2MjIsICAgICAjICBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRQogICAgMHgwMGMzOiAweDA2MjMsICAgICAjICBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBBQk9WRQogICAgMHgwMGM0OiAweDA2MjQsICAgICAjICBBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFCiAgICAweDAwYzU6IDB4MDYyNSwgICAgICMgIEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XCiAgICAweDAwYzY6IDB4MDYyNiwgICAgICMgIEFSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUKICAgIDB4MDBjNzogMHgwNjI3LCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGCiAgICAweDAwYzg6IDB4MDYyOCwgICAgICMgIEFSQUJJQyBMRVRURVIgQkVICiAgICAweDAwYzk6IDB4MDYyOSwgICAgICMgIEFSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEKICAgIDB4MDBjYTogMHgwNjJhLCAgICAgIyAgQVJBQklDIExFVFRFUiBURUgKICAgIDB4MDBjYjogMHgwNjJiLCAgICAgIyAgQVJBQklDIExFVFRFUiBUSEVICiAgICAweDAwY2M6IDB4MDYyYywgICAgICMgIEFSQUJJQyBMRVRURVIgSkVFTQogICAgMHgwMGNkOiAweDA2MmQsICAgICAjICBBUkFCSUMgTEVUVEVSIEhBSAogICAgMHgwMGNlOiAweDA2MmUsICAgICAjICBBUkFCSUMgTEVUVEVSIEtIQUgKICAgIDB4MDBjZjogMHgwNjJmLCAgICAgIyAgQVJBQklDIExFVFRFUiBEQUwKICAgIDB4MDBkMDogMHgwNjMwLCAgICAgIyAgQVJBQklDIExFVFRFUiBUSEFMCiAgICAweDAwZDE6IDB4MDYzMSwgICAgICMgIEFSQUJJQyBMRVRURVIgUkVICiAgICAweDAwZDI6IDB4MDYzMiwgICAgICMgIEFSQUJJQyBMRVRURVIgWkFJTgogICAgMHgwMGQzOiAweDA2MzMsICAgICAjICBBUkFCSUMgTEVUVEVSIFNFRU4KICAgIDB4MDBkNDogMHgwNjM0LCAgICAgIyAgQVJBQklDIExFVFRFUiBTSEVFTgogICAgMHgwMGQ1OiAweDA2MzUsICAgICAjICBBUkFCSUMgTEVUVEVSIFNBRAogICAgMHgwMGQ2OiAweDA2MzYsICAgICAjICBBUkFCSUMgTEVUVEVSIERBRAogICAgMHgwMGQ3OiAweDA2MzcsICAgICAjICBBUkFCSUMgTEVUVEVSIFRBSAogICAgMHgwMGQ4OiAweDA2MzgsICAgICAjICBBUkFCSUMgTEVUVEVSIFpBSAogICAgMHgwMGQ5OiAweDA2MzksICAgICAjICBBUkFCSUMgTEVUVEVSIEFJTgogICAgMHgwMGRhOiAweDA2M2EsICAgICAjICBBUkFCSUMgTEVUVEVSIEdIQUlOCiAgICAweDAwZGI6IDB4MDA1YiwgICAgICMgIExFRlQgU1FVQVJFIEJSQUNLRVQsIHJpZ2h0LWxlZnQKICAgIDB4MDBkYzogMHgwMDVjLCAgICAgIyAgUkVWRVJTRSBTT0xJRFVTLCByaWdodC1sZWZ0CiAgICAweDAwZGQ6IDB4MDA1ZCwgICAgICMgIFJJR0hUIFNRVUFSRSBCUkFDS0VULCByaWdodC1sZWZ0CiAgICAweDAwZGU6IDB4MDA1ZSwgICAgICMgIENJUkNVTUZMRVggQUNDRU5ULCByaWdodC1sZWZ0CiAgICAweDAwZGY6IDB4MDA1ZiwgICAgICMgIExPVyBMSU5FLCByaWdodC1sZWZ0CiAgICAweDAwZTA6IDB4MDY0MCwgICAgICMgIEFSQUJJQyBUQVRXRUVMCiAgICAweDAwZTE6IDB4MDY0MSwgICAgICMgIEFSQUJJQyBMRVRURVIgRkVICiAgICAweDAwZTI6IDB4MDY0MiwgICAgICMgIEFSQUJJQyBMRVRURVIgUUFGCiAgICAweDAwZTM6IDB4MDY0MywgICAgICMgIEFSQUJJQyBMRVRURVIgS0FGCiAgICAweDAwZTQ6IDB4MDY0NCwgICAgICMgIEFSQUJJQyBMRVRURVIgTEFNCiAgICAweDAwZTU6IDB4MDY0NSwgICAgICMgIEFSQUJJQyBMRVRURVIgTUVFTQogICAgMHgwMGU2OiAweDA2NDYsICAgICAjICBBUkFCSUMgTEVUVEVSIE5PT04KICAgIDB4MDBlNzogMHgwNjQ3LCAgICAgIyAgQVJBQklDIExFVFRFUiBIRUgKICAgIDB4MDBlODogMHgwNjQ4LCAgICAgIyAgQVJBQklDIExFVFRFUiBXQVcKICAgIDB4MDBlOTogMHgwNjQ5LCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEKICAgIDB4MDBlYTogMHgwNjRhLCAgICAgIyAgQVJBQklDIExFVFRFUiBZRUgKICAgIDB4MDBlYjogMHgwNjRiLCAgICAgIyAgQVJBQklDIEZBVEhBVEFOCiAgICAweDAwZWM6IDB4MDY0YywgICAgICMgIEFSQUJJQyBEQU1NQVRBTgogICAgMHgwMGVkOiAweDA2NGQsICAgICAjICBBUkFCSUMgS0FTUkFUQU4KICAgIDB4MDBlZTogMHgwNjRlLCAgICAgIyAgQVJBQklDIEZBVEhBCiAgICAweDAwZWY6IDB4MDY0ZiwgICAgICMgIEFSQUJJQyBEQU1NQQogICAgMHgwMGYwOiAweDA2NTAsICAgICAjICBBUkFCSUMgS0FTUkEKICAgIDB4MDBmMTogMHgwNjUxLCAgICAgIyAgQVJBQklDIFNIQUREQQogICAgMHgwMGYyOiAweDA2NTIsICAgICAjICBBUkFCSUMgU1VLVU4KICAgIDB4MDBmMzogMHgwNjdlLCAgICAgIyAgQVJBQklDIExFVFRFUiBQRUgKICAgIDB4MDBmNDogMHgwNjc5LCAgICAgIyAgQVJBQklDIExFVFRFUiBUVEVICiAgICAweDAwZjU6IDB4MDY4NiwgICAgICMgIEFSQUJJQyBMRVRURVIgVENIRUgKICAgIDB4MDBmNjogMHgwNmQ1LCAgICAgIyAgQVJBQklDIExFVFRFUiBBRQogICAgMHgwMGY3OiAweDA2YTQsICAgICAjICBBUkFCSUMgTEVUVEVSIFZFSAogICAgMHgwMGY4OiAweDA2YWYsICAgICAjICBBUkFCSUMgTEVUVEVSIEdBRgogICAgMHgwMGY5OiAweDA2ODgsICAgICAjICBBUkFCSUMgTEVUVEVSIEREQUwKICAgIDB4MDBmYTogMHgwNjkxLCAgICAgIyAgQVJBQklDIExFVFRFUiBSUkVICiAgICAweDAwZmI6IDB4MDA3YiwgICAgICMgIExFRlQgQ1VSTFkgQlJBQ0tFVCwgcmlnaHQtbGVmdAogICAgMHgwMGZjOiAweDAwN2MsICAgICAjICBWRVJUSUNBTCBMSU5FLCByaWdodC1sZWZ0CiAgICAweDAwZmQ6IDB4MDA3ZCwgICAgICMgIFJJR0hUIENVUkxZIEJSQUNLRVQsIHJpZ2h0LWxlZnQKICAgIDB4MDBmZTogMHgwNjk4LCAgICAgIyAgQVJBQklDIExFVFRFUiBKRUgKICAgIDB4MDBmZjogMHgwNmQyLCAgICAgIyAgQVJBQklDIExFVFRFUiBZRUggQkFSUkVFCn0pCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwMDAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAxJyAgICAgIyAgMHgwMDAxIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMicgICAgICMgIDB4MDAwMiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDMnICAgICAjICAweDAwMDMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA0JyAgICAgIyAgMHgwMDA0IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNScgICAgICMgIDB4MDAwNSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDYnICAgICAjICAweDAwMDYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA3JyAgICAgIyAgMHgwMDA3IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwOCcgICAgICMgIDB4MDAwOCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x0JyAgICAgICAjICAweDAwMDkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcbicgICAgICAgIyAgMHgwMDBhIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwYicgICAgICMgIDB4MDAwYiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGMnICAgICAjICAweDAwMGMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdccicgICAgICAgIyAgMHgwMDBkIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwZScgICAgICMgIDB4MDAwZSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGYnICAgICAjICAweDAwMGYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEwJyAgICAgIyAgMHgwMDEwIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMScgICAgICMgIDB4MDAxMSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTInICAgICAjICAweDAwMTIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEzJyAgICAgIyAgMHgwMDEzIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNCcgICAgICMgIDB4MDAxNCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTUnICAgICAjICAweDAwMTUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE2JyAgICAgIyAgMHgwMDE2IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNycgICAgICMgIDB4MDAxNyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTgnICAgICAjICAweDAwMTggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE5JyAgICAgIyAgMHgwMDE5IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYScgICAgICMgIDB4MDAxYSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWInICAgICAjICAweDAwMWIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFjJyAgICAgIyAgMHgwMDFjIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZCcgICAgICMgIDB4MDAxZCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWUnICAgICAjICAweDAwMWUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFmJyAgICAgIyAgMHgwMDFmIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnICcgICAgICAgICMgIDB4MDAyMCAtPiBTUEFDRSwgbGVmdC1yaWdodAogICAgJyEnICAgICAgICAjICAweDAwMjEgLT4gRVhDTEFNQVRJT04gTUFSSywgbGVmdC1yaWdodAogICAgJyInICAgICAgICAjICAweDAwMjIgLT4gUVVPVEFUSU9OIE1BUkssIGxlZnQtcmlnaHQKICAgICcjJyAgICAgICAgIyAgMHgwMDIzIC0+IE5VTUJFUiBTSUdOLCBsZWZ0LXJpZ2h0CiAgICAnJCcgICAgICAgICMgIDB4MDAyNCAtPiBET0xMQVIgU0lHTiwgbGVmdC1yaWdodAogICAgJyUnICAgICAgICAjICAweDAwMjUgLT4gUEVSQ0VOVCBTSUdOLCBsZWZ0LXJpZ2h0CiAgICAnJicgICAgICAgICMgIDB4MDAyNiAtPiBBTVBFUlNBTkQsIGxlZnQtcmlnaHQKICAgICInIiAgICAgICAgIyAgMHgwMDI3IC0+IEFQT1NUUk9QSEUsIGxlZnQtcmlnaHQKICAgICcoJyAgICAgICAgIyAgMHgwMDI4IC0+IExFRlQgUEFSRU5USEVTSVMsIGxlZnQtcmlnaHQKICAgICcpJyAgICAgICAgIyAgMHgwMDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTLCBsZWZ0LXJpZ2h0CiAgICAnKicgICAgICAgICMgIDB4MDAyYSAtPiBBU1RFUklTSywgbGVmdC1yaWdodAogICAgJysnICAgICAgICAjICAweDAwMmIgLT4gUExVUyBTSUdOLCBsZWZ0LXJpZ2h0CiAgICAnLCcgICAgICAgICMgIDB4MDAyYyAtPiBDT01NQSwgbGVmdC1yaWdodDsgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjZDIEFSQUJJQyBUSE9VU0FORFMgU0VQQVJBVE9SCiAgICAnLScgICAgICAgICMgIDB4MDAyZCAtPiBIWVBIRU4tTUlOVVMsIGxlZnQtcmlnaHQKICAgICcuJyAgICAgICAgIyAgMHgwMDJlIC0+IEZVTEwgU1RPUCwgbGVmdC1yaWdodDsgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjZCIEFSQUJJQyBERUNJTUFMIFNFUEFSQVRPUgogICAgJy8nICAgICAgICAjICAweDAwMmYgLT4gU09MSURVUywgbGVmdC1yaWdodAogICAgJzAnICAgICAgICAjICAweDAwMzAgLT4gRElHSVQgWkVSTzsgIGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDY2MCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDAwMzEgLT4gRElHSVQgT05FOyAgIGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDY2MSBBUkFCSUMtSU5ESUMgRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MDAzMiAtPiBESUdJVCBUV087ICAgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjYyIEFSQUJJQy1JTkRJQyBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgwMDMzIC0+IERJR0lUIFRIUkVFOyBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NjMgQVJBQklDLUlORElDIERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MDAzNCAtPiBESUdJVCBGT1VSOyAgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjY0IEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MDAzNSAtPiBESUdJVCBGSVZFOyAgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjY1IEFSQUJJQy1JTkRJQyBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MDAzNiAtPiBESUdJVCBTSVg7ICAgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjY2IEFSQUJJQy1JTkRJQyBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgwMDM3IC0+IERJR0lUIFNFVkVOOyBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NjcgQVJBQklDLUlORElDIERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MDAzOCAtPiBESUdJVCBFSUdIVDsgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjY4IEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDAwMzkgLT4gRElHSVQgTklORTsgIGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDY2OSBBUkFCSUMtSU5ESUMgRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDAwM2EgLT4gQ09MT04sIGxlZnQtcmlnaHQKICAgICc7JyAgICAgICAgIyAgMHgwMDNiIC0+IFNFTUlDT0xPTiwgbGVmdC1yaWdodAogICAgJzwnICAgICAgICAjICAweDAwM2MgLT4gTEVTUy1USEFOIFNJR04sIGxlZnQtcmlnaHQKICAgICc9JyAgICAgICAgIyAgMHgwMDNkIC0+IEVRVUFMUyBTSUdOLCBsZWZ0LXJpZ2h0CiAgICAnPicgICAgICAgICMgIDB4MDAzZSAtPiBHUkVBVEVSLVRIQU4gU0lHTiwgbGVmdC1yaWdodAogICAgJz8nICAgICAgICAjICAweDAwM2YgLT4gUVVFU1RJT04gTUFSSywgbGVmdC1yaWdodAogICAgJ0AnICAgICAgICAjICAweDAwNDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDAwNDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDAwNDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDAwNDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDAwNDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDAwNDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDAwNDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDAwNDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDAwNDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDAwNDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDAwNGEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDAwNGIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDAwNGMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDAwNGQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDAwNGUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDAwNGYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDAwNTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDAwNTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDAwNTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDAwNTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDAwNTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDAwNTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDAwNTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDAwNTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDAwNTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDAwNTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDAwNWEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDAwNWIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVCwgbGVmdC1yaWdodAogICAgJ1xcJyAgICAgICAjICAweDAwNWMgLT4gUkVWRVJTRSBTT0xJRFVTLCBsZWZ0LXJpZ2h0CiAgICAnXScgICAgICAgICMgIDB4MDA1ZCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVCwgbGVmdC1yaWdodAogICAgJ14nICAgICAgICAjICAweDAwNWUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQsIGxlZnQtcmlnaHQKICAgICdfJyAgICAgICAgIyAgMHgwMDVmIC0+IExPVyBMSU5FLCBsZWZ0LXJpZ2h0CiAgICAnYCcgICAgICAgICMgIDB4MDA2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHgwMDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4MDA2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDAwNjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHgwMDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4MDA2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDAwNjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHgwMDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4MDA2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDAwNjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHgwMDZhIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4MDA2YiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDAwNmMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHgwMDZkIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4MDA2ZSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDAwNmYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHgwMDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4MDA3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDAwNzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHgwMDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4MDA3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDAwNzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHgwMDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4MDA3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDAwNzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHgwMDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4MDA3YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDAwN2IgLT4gTEVGVCBDVVJMWSBCUkFDS0VULCBsZWZ0LXJpZ2h0CiAgICAnfCcgICAgICAgICMgIDB4MDA3YyAtPiBWRVJUSUNBTCBMSU5FLCBsZWZ0LXJpZ2h0CiAgICAnfScgICAgICAgICMgIDB4MDA3ZCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VULCBsZWZ0LXJpZ2h0CiAgICAnficgICAgICAgICMgIDB4MDA3ZSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDAwN2YgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceGM0JyAgICAgIyAgMHgwMDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGEwJyAgICAgIyAgMHgwMDgxIC0+IE5PLUJSRUFLIFNQQUNFLCByaWdodC1sZWZ0CiAgICAnXHhjNycgICAgICMgIDB4MDA4MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4YzknICAgICAjICAweDAwODMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhkMScgICAgICMgIDB4MDA4NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGQ2JyAgICAgIyAgMHgwMDg1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGRjJyAgICAgIyAgMHgwMDg2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGUxJyAgICAgIyAgMHgwMDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUwJyAgICAgIyAgMHgwMDg4IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGUyJyAgICAgIyAgMHgwMDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTQnICAgICAjICAweDAwOGEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdcdTA2YmEnICAgIyAgMHgwMDhiIC0+IEFSQUJJQyBMRVRURVIgTk9PTiBHSFVOTkEKICAgICdceGFiJyAgICAgIyAgMHgwMDhjIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLLCByaWdodC1sZWZ0CiAgICAnXHhlNycgICAgICMgIDB4MDA4ZCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU5JyAgICAgIyAgMHgwMDhlIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGU4JyAgICAgIyAgMHgwMDhmIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGVhJyAgICAgIyAgMHgwMDkwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDAwOTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGVkJyAgICAgIyAgMHgwMDkyIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdcdTIwMjYnICAgIyAgMHgwMDkzIC0+IEhPUklaT05UQUwgRUxMSVBTSVMsIHJpZ2h0LWxlZnQKICAgICdceGVlJyAgICAgIyAgMHgwMDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWYnICAgICAjICAweDAwOTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGYxJyAgICAgIyAgMHgwMDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGYzJyAgICAgIyAgMHgwMDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGJiJyAgICAgIyAgMHgwMDk4IC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSywgcmlnaHQtbGVmdAogICAgJ1x4ZjQnICAgICAjICAweDAwOTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNicgICAgICMgIDB4MDA5YSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjcnICAgICAjICAweDAwOWIgLT4gRElWSVNJT04gU0lHTiwgcmlnaHQtbGVmdAogICAgJ1x4ZmEnICAgICAjICAweDAwOWMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZjknICAgICAjICAweDAwOWQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZmInICAgICAjICAweDAwOWUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmYycgICAgICMgIDB4MDA5ZiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJyAnICAgICAgICAjICAweDAwYTAgLT4gU1BBQ0UsIHJpZ2h0LWxlZnQKICAgICchJyAgICAgICAgIyAgMHgwMGExIC0+IEVYQ0xBTUFUSU9OIE1BUkssIHJpZ2h0LWxlZnQKICAgICciJyAgICAgICAgIyAgMHgwMGEyIC0+IFFVT1RBVElPTiBNQVJLLCByaWdodC1sZWZ0CiAgICAnIycgICAgICAgICMgIDB4MDBhMyAtPiBOVU1CRVIgU0lHTiwgcmlnaHQtbGVmdAogICAgJyQnICAgICAgICAjICAweDAwYTQgLT4gRE9MTEFSIFNJR04sIHJpZ2h0LWxlZnQKICAgICdcdTA2NmEnICAgIyAgMHgwMGE1IC0+IEFSQUJJQyBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgwMGE2IC0+IEFNUEVSU0FORCwgcmlnaHQtbGVmdAogICAgIiciICAgICAgICAjICAweDAwYTcgLT4gQVBPU1RST1BIRSwgcmlnaHQtbGVmdAogICAgJygnICAgICAgICAjICAweDAwYTggLT4gTEVGVCBQQVJFTlRIRVNJUywgcmlnaHQtbGVmdAogICAgJyknICAgICAgICAjICAweDAwYTkgLT4gUklHSFQgUEFSRU5USEVTSVMsIHJpZ2h0LWxlZnQKICAgICcqJyAgICAgICAgIyAgMHgwMGFhIC0+IEFTVEVSSVNLLCByaWdodC1sZWZ0CiAgICAnKycgICAgICAgICMgIDB4MDBhYiAtPiBQTFVTIFNJR04sIHJpZ2h0LWxlZnQKICAgICdcdTA2MGMnICAgIyAgMHgwMGFjIC0+IEFSQUJJQyBDT01NQQogICAgJy0nICAgICAgICAjICAweDAwYWQgLT4gSFlQSEVOLU1JTlVTLCByaWdodC1sZWZ0CiAgICAnLicgICAgICAgICMgIDB4MDBhZSAtPiBGVUxMIFNUT1AsIHJpZ2h0LWxlZnQKICAgICcvJyAgICAgICAgIyAgMHgwMGFmIC0+IFNPTElEVVMsIHJpZ2h0LWxlZnQKICAgICdcdTA2NjAnICAgIyAgMHgwMGIwIC0+IEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgJ1x1MDY2MScgICAjICAweDAwYjEgLT4gQVJBQklDLUlORElDIERJR0lUIE9ORSwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2NjInICAgIyAgMHgwMGIyIC0+IEFSQUJJQy1JTkRJQyBESUdJVCBUV08sIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAnXHUwNjYzJyAgICMgIDB4MDBiMyAtPiBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUsIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAnXHUwNjY0JyAgICMgIDB4MDBiNCAtPiBBUkFCSUMtSU5ESUMgRElHSVQgRk9VUiwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2NjUnICAgIyAgMHgwMGI1IC0+IEFSQUJJQy1JTkRJQyBESUdJVCBGSVZFLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgJ1x1MDY2NicgICAjICAweDAwYjYgLT4gQVJBQklDLUlORElDIERJR0lUIFNJWCwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2NjcnICAgIyAgMHgwMGI3IC0+IEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTiwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2NjgnICAgIyAgMHgwMGI4IC0+IEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVCwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2NjknICAgIyAgMHgwMGI5IC0+IEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgJzonICAgICAgICAjICAweDAwYmEgLT4gQ09MT04sIHJpZ2h0LWxlZnQKICAgICdcdTA2MWInICAgIyAgMHgwMGJiIC0+IEFSQUJJQyBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgwMGJjIC0+IExFU1MtVEhBTiBTSUdOLCByaWdodC1sZWZ0CiAgICAnPScgICAgICAgICMgIDB4MDBiZCAtPiBFUVVBTFMgU0lHTiwgcmlnaHQtbGVmdAogICAgJz4nICAgICAgICAjICAweDAwYmUgLT4gR1JFQVRFUi1USEFOIFNJR04sIHJpZ2h0LWxlZnQKICAgICdcdTA2MWYnICAgIyAgMHgwMGJmIC0+IEFSQUJJQyBRVUVTVElPTiBNQVJLCiAgICAnXHUyNzRhJyAgICMgIDB4MDBjMCAtPiBFSUdIVCBURUFSRFJPUC1TUE9LRUQgUFJPUEVMTEVSIEFTVEVSSVNLLCByaWdodC1sZWZ0CiAgICAnXHUwNjIxJyAgICMgIDB4MDBjMSAtPiBBUkFCSUMgTEVUVEVSIEhBTVpBCiAgICAnXHUwNjIyJyAgICMgIDB4MDBjMiAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRQogICAgJ1x1MDYyMycgICAjICAweDAwYzMgLT4gQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUKICAgICdcdTA2MjQnICAgIyAgMHgwMGM0IC0+IEFSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUKICAgICdcdTA2MjUnICAgIyAgMHgwMGM1IC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XCiAgICAnXHUwNjI2JyAgICMgIDB4MDBjNiAtPiBBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFCiAgICAnXHUwNjI3JyAgICMgIDB4MDBjNyAtPiBBUkFCSUMgTEVUVEVSIEFMRUYKICAgICdcdTA2MjgnICAgIyAgMHgwMGM4IC0+IEFSQUJJQyBMRVRURVIgQkVICiAgICAnXHUwNjI5JyAgICMgIDB4MDBjOSAtPiBBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBCiAgICAnXHUwNjJhJyAgICMgIDB4MDBjYSAtPiBBUkFCSUMgTEVUVEVSIFRFSAogICAgJ1x1MDYyYicgICAjICAweDAwY2IgLT4gQVJBQklDIExFVFRFUiBUSEVICiAgICAnXHUwNjJjJyAgICMgIDB4MDBjYyAtPiBBUkFCSUMgTEVUVEVSIEpFRU0KICAgICdcdTA2MmQnICAgIyAgMHgwMGNkIC0+IEFSQUJJQyBMRVRURVIgSEFICiAgICAnXHUwNjJlJyAgICMgIDB4MDBjZSAtPiBBUkFCSUMgTEVUVEVSIEtIQUgKICAgICdcdTA2MmYnICAgIyAgMHgwMGNmIC0+IEFSQUJJQyBMRVRURVIgREFMCiAgICAnXHUwNjMwJyAgICMgIDB4MDBkMCAtPiBBUkFCSUMgTEVUVEVSIFRIQUwKICAgICdcdTA2MzEnICAgIyAgMHgwMGQxIC0+IEFSQUJJQyBMRVRURVIgUkVICiAgICAnXHUwNjMyJyAgICMgIDB4MDBkMiAtPiBBUkFCSUMgTEVUVEVSIFpBSU4KICAgICdcdTA2MzMnICAgIyAgMHgwMGQzIC0+IEFSQUJJQyBMRVRURVIgU0VFTgogICAgJ1x1MDYzNCcgICAjICAweDAwZDQgLT4gQVJBQklDIExFVFRFUiBTSEVFTgogICAgJ1x1MDYzNScgICAjICAweDAwZDUgLT4gQVJBQklDIExFVFRFUiBTQUQKICAgICdcdTA2MzYnICAgIyAgMHgwMGQ2IC0+IEFSQUJJQyBMRVRURVIgREFECiAgICAnXHUwNjM3JyAgICMgIDB4MDBkNyAtPiBBUkFCSUMgTEVUVEVSIFRBSAogICAgJ1x1MDYzOCcgICAjICAweDAwZDggLT4gQVJBQklDIExFVFRFUiBaQUgKICAgICdcdTA2MzknICAgIyAgMHgwMGQ5IC0+IEFSQUJJQyBMRVRURVIgQUlOCiAgICAnXHUwNjNhJyAgICMgIDB4MDBkYSAtPiBBUkFCSUMgTEVUVEVSIEdIQUlOCiAgICAnWycgICAgICAgICMgIDB4MDBkYiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VULCByaWdodC1sZWZ0CiAgICAnXFwnICAgICAgICMgIDB4MDBkYyAtPiBSRVZFUlNFIFNPTElEVVMsIHJpZ2h0LWxlZnQKICAgICddJyAgICAgICAgIyAgMHgwMGRkIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VULCByaWdodC1sZWZ0CiAgICAnXicgICAgICAgICMgIDB4MDBkZSAtPiBDSVJDVU1GTEVYIEFDQ0VOVCwgcmlnaHQtbGVmdAogICAgJ18nICAgICAgICAjICAweDAwZGYgLT4gTE9XIExJTkUsIHJpZ2h0LWxlZnQKICAgICdcdTA2NDAnICAgIyAgMHgwMGUwIC0+IEFSQUJJQyBUQVRXRUVMCiAgICAnXHUwNjQxJyAgICMgIDB4MDBlMSAtPiBBUkFCSUMgTEVUVEVSIEZFSAogICAgJ1x1MDY0MicgICAjICAweDAwZTIgLT4gQVJBQklDIExFVFRFUiBRQUYKICAgICdcdTA2NDMnICAgIyAgMHgwMGUzIC0+IEFSQUJJQyBMRVRURVIgS0FGCiAgICAnXHUwNjQ0JyAgICMgIDB4MDBlNCAtPiBBUkFCSUMgTEVUVEVSIExBTQogICAgJ1x1MDY0NScgICAjICAweDAwZTUgLT4gQVJBQklDIExFVFRFUiBNRUVNCiAgICAnXHUwNjQ2JyAgICMgIDB4MDBlNiAtPiBBUkFCSUMgTEVUVEVSIE5PT04KICAgICdcdTA2NDcnICAgIyAgMHgwMGU3IC0+IEFSQUJJQyBMRVRURVIgSEVICiAgICAnXHUwNjQ4JyAgICMgIDB4MDBlOCAtPiBBUkFCSUMgTEVUVEVSIFdBVwogICAgJ1x1MDY0OScgICAjICAweDAwZTkgLT4gQVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEKICAgICdcdTA2NGEnICAgIyAgMHgwMGVhIC0+IEFSQUJJQyBMRVRURVIgWUVICiAgICAnXHUwNjRiJyAgICMgIDB4MDBlYiAtPiBBUkFCSUMgRkFUSEFUQU4KICAgICdcdTA2NGMnICAgIyAgMHgwMGVjIC0+IEFSQUJJQyBEQU1NQVRBTgogICAgJ1x1MDY0ZCcgICAjICAweDAwZWQgLT4gQVJBQklDIEtBU1JBVEFOCiAgICAnXHUwNjRlJyAgICMgIDB4MDBlZSAtPiBBUkFCSUMgRkFUSEEKICAgICdcdTA2NGYnICAgIyAgMHgwMGVmIC0+IEFSQUJJQyBEQU1NQQogICAgJ1x1MDY1MCcgICAjICAweDAwZjAgLT4gQVJBQklDIEtBU1JBCiAgICAnXHUwNjUxJyAgICMgIDB4MDBmMSAtPiBBUkFCSUMgU0hBRERBCiAgICAnXHUwNjUyJyAgICMgIDB4MDBmMiAtPiBBUkFCSUMgU1VLVU4KICAgICdcdTA2N2UnICAgIyAgMHgwMGYzIC0+IEFSQUJJQyBMRVRURVIgUEVICiAgICAnXHUwNjc5JyAgICMgIDB4MDBmNCAtPiBBUkFCSUMgTEVUVEVSIFRURUgKICAgICdcdTA2ODYnICAgIyAgMHgwMGY1IC0+IEFSQUJJQyBMRVRURVIgVENIRUgKICAgICdcdTA2ZDUnICAgIyAgMHgwMGY2IC0+IEFSQUJJQyBMRVRURVIgQUUKICAgICdcdTA2YTQnICAgIyAgMHgwMGY3IC0+IEFSQUJJQyBMRVRURVIgVkVICiAgICAnXHUwNmFmJyAgICMgIDB4MDBmOCAtPiBBUkFCSUMgTEVUVEVSIEdBRgogICAgJ1x1MDY4OCcgICAjICAweDAwZjkgLT4gQVJBQklDIExFVFRFUiBEREFMCiAgICAnXHUwNjkxJyAgICMgIDB4MDBmYSAtPiBBUkFCSUMgTEVUVEVSIFJSRUgKICAgICd7JyAgICAgICAgIyAgMHgwMGZiIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVCwgcmlnaHQtbGVmdAogICAgJ3wnICAgICAgICAjICAweDAwZmMgLT4gVkVSVElDQUwgTElORSwgcmlnaHQtbGVmdAogICAgJ30nICAgICAgICAjICAweDAwZmQgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVCwgcmlnaHQtbGVmdAogICAgJ1x1MDY5OCcgICAjICAweDAwZmUgLT4gQVJBQklDIExFVFRFUiBKRUgKICAgICdcdTA2ZDInICAgIyAgMHgwMGZmIC0+IEFSQUJJQyBMRVRURVIgWUVIIEJBUlJFRQopCgojIyMgRW5jb2RpbmcgTWFwCgplbmNvZGluZ19tYXAgPSB7CiAgICAweDAwMDA6IDB4MDAwMCwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDE6IDB4MDAwMSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDI6IDB4MDAwMiwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDM6IDB4MDAwMywgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDQ6IDB4MDAwNCwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDU6IDB4MDAwNSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDY6IDB4MDAwNiwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDc6IDB4MDAwNywgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDg6IDB4MDAwOCwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMDk6IDB4MDAwOSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMGE6IDB4MDAwYSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMGI6IDB4MDAwYiwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMGM6IDB4MDAwYywgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMGQ6IDB4MDAwZCwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMGU6IDB4MDAwZSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMGY6IDB4MDAwZiwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTA6IDB4MDAxMCwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTE6IDB4MDAxMSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTI6IDB4MDAxMiwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTM6IDB4MDAxMywgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTQ6IDB4MDAxNCwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTU6IDB4MDAxNSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTY6IDB4MDAxNiwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTc6IDB4MDAxNywgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTg6IDB4MDAxOCwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMTk6IDB4MDAxOSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMWE6IDB4MDAxYSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMWI6IDB4MDAxYiwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMWM6IDB4MDAxYywgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMWQ6IDB4MDAxZCwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMWU6IDB4MDAxZSwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMWY6IDB4MDAxZiwgICAgICMgIENPTlRST0wgQ0hBUkFDVEVSCiAgICAweDAwMjA6IDB4MDAyMCwgICAgICMgIFNQQUNFLCBsZWZ0LXJpZ2h0CiAgICAweDAwMjA6IDB4MDBhMCwgICAgICMgIFNQQUNFLCByaWdodC1sZWZ0CiAgICAweDAwMjE6IDB4MDAyMSwgICAgICMgIEVYQ0xBTUFUSU9OIE1BUkssIGxlZnQtcmlnaHQKICAgIDB4MDAyMTogMHgwMGExLCAgICAgIyAgRVhDTEFNQVRJT04gTUFSSywgcmlnaHQtbGVmdAogICAgMHgwMDIyOiAweDAwMjIsICAgICAjICBRVU9UQVRJT04gTUFSSywgbGVmdC1yaWdodAogICAgMHgwMDIyOiAweDAwYTIsICAgICAjICBRVU9UQVRJT04gTUFSSywgcmlnaHQtbGVmdAogICAgMHgwMDIzOiAweDAwMjMsICAgICAjICBOVU1CRVIgU0lHTiwgbGVmdC1yaWdodAogICAgMHgwMDIzOiAweDAwYTMsICAgICAjICBOVU1CRVIgU0lHTiwgcmlnaHQtbGVmdAogICAgMHgwMDI0OiAweDAwMjQsICAgICAjICBET0xMQVIgU0lHTiwgbGVmdC1yaWdodAogICAgMHgwMDI0OiAweDAwYTQsICAgICAjICBET0xMQVIgU0lHTiwgcmlnaHQtbGVmdAogICAgMHgwMDI1OiAweDAwMjUsICAgICAjICBQRVJDRU5UIFNJR04sIGxlZnQtcmlnaHQKICAgIDB4MDAyNjogMHgwMDI2LCAgICAgIyAgQU1QRVJTQU5ELCBsZWZ0LXJpZ2h0CiAgICAweDAwMjY6IDB4MDBhNiwgICAgICMgIEFNUEVSU0FORCwgcmlnaHQtbGVmdAogICAgMHgwMDI3OiAweDAwMjcsICAgICAjICBBUE9TVFJPUEhFLCBsZWZ0LXJpZ2h0CiAgICAweDAwMjc6IDB4MDBhNywgICAgICMgIEFQT1NUUk9QSEUsIHJpZ2h0LWxlZnQKICAgIDB4MDAyODogMHgwMDI4LCAgICAgIyAgTEVGVCBQQVJFTlRIRVNJUywgbGVmdC1yaWdodAogICAgMHgwMDI4OiAweDAwYTgsICAgICAjICBMRUZUIFBBUkVOVEhFU0lTLCByaWdodC1sZWZ0CiAgICAweDAwMjk6IDB4MDAyOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTLCBsZWZ0LXJpZ2h0CiAgICAweDAwMjk6IDB4MDBhOSwgICAgICMgIFJJR0hUIFBBUkVOVEhFU0lTLCByaWdodC1sZWZ0CiAgICAweDAwMmE6IDB4MDAyYSwgICAgICMgIEFTVEVSSVNLLCBsZWZ0LXJpZ2h0CiAgICAweDAwMmE6IDB4MDBhYSwgICAgICMgIEFTVEVSSVNLLCByaWdodC1sZWZ0CiAgICAweDAwMmI6IDB4MDAyYiwgICAgICMgIFBMVVMgU0lHTiwgbGVmdC1yaWdodAogICAgMHgwMDJiOiAweDAwYWIsICAgICAjICBQTFVTIFNJR04sIHJpZ2h0LWxlZnQKICAgIDB4MDAyYzogMHgwMDJjLCAgICAgIyAgQ09NTUEsIGxlZnQtcmlnaHQ7IGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDY2QyBBUkFCSUMgVEhPVVNBTkRTIFNFUEFSQVRPUgogICAgMHgwMDJkOiAweDAwMmQsICAgICAjICBIWVBIRU4tTUlOVVMsIGxlZnQtcmlnaHQKICAgIDB4MDAyZDogMHgwMGFkLCAgICAgIyAgSFlQSEVOLU1JTlVTLCByaWdodC1sZWZ0CiAgICAweDAwMmU6IDB4MDAyZSwgICAgICMgIEZVTEwgU1RPUCwgbGVmdC1yaWdodDsgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjZCIEFSQUJJQyBERUNJTUFMIFNFUEFSQVRPUgogICAgMHgwMDJlOiAweDAwYWUsICAgICAjICBGVUxMIFNUT1AsIHJpZ2h0LWxlZnQKICAgIDB4MDAyZjogMHgwMDJmLCAgICAgIyAgU09MSURVUywgbGVmdC1yaWdodAogICAgMHgwMDJmOiAweDAwYWYsICAgICAjICBTT0xJRFVTLCByaWdodC1sZWZ0CiAgICAweDAwMzA6IDB4MDAzMCwgICAgICMgIERJR0lUIFpFUk87ICBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NjAgQVJBQklDLUlORElDIERJR0lUIFpFUk8KICAgIDB4MDAzMTogMHgwMDMxLCAgICAgIyAgRElHSVQgT05FOyAgIGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDY2MSBBUkFCSUMtSU5ESUMgRElHSVQgT05FCiAgICAweDAwMzI6IDB4MDAzMiwgICAgICMgIERJR0lUIFRXTzsgICBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NjIgQVJBQklDLUlORElDIERJR0lUIFRXTwogICAgMHgwMDMzOiAweDAwMzMsICAgICAjICBESUdJVCBUSFJFRTsgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjYzIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRQogICAgMHgwMDM0OiAweDAwMzQsICAgICAjICBESUdJVCBGT1VSOyAgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNjY0IEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCiAgICAweDAwMzU6IDB4MDAzNSwgICAgICMgIERJR0lUIEZJVkU7ICBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NjUgQVJBQklDLUlORElDIERJR0lUIEZJVkUKICAgIDB4MDAzNjogMHgwMDM2LCAgICAgIyAgRElHSVQgU0lYOyAgIGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDY2NiBBUkFCSUMtSU5ESUMgRElHSVQgU0lYCiAgICAweDAwMzc6IDB4MDAzNywgICAgICMgIERJR0lUIFNFVkVOOyBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NjcgQVJBQklDLUlORElDIERJR0lUIFNFVkVOCiAgICAweDAwMzg6IDB4MDAzOCwgICAgICMgIERJR0lUIEVJR0hUOyBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NjggQVJBQklDLUlORElDIERJR0lUIEVJR0hUCiAgICAweDAwMzk6IDB4MDAzOSwgICAgICMgIERJR0lUIE5JTkU7ICBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NjkgQVJBQklDLUlORElDIERJR0lUIE5JTkUKICAgIDB4MDAzYTogMHgwMDNhLCAgICAgIyAgQ09MT04sIGxlZnQtcmlnaHQKICAgIDB4MDAzYTogMHgwMGJhLCAgICAgIyAgQ09MT04sIHJpZ2h0LWxlZnQKICAgIDB4MDAzYjogMHgwMDNiLCAgICAgIyAgU0VNSUNPTE9OLCBsZWZ0LXJpZ2h0CiAgICAweDAwM2M6IDB4MDAzYywgICAgICMgIExFU1MtVEhBTiBTSUdOLCBsZWZ0LXJpZ2h0CiAgICAweDAwM2M6IDB4MDBiYywgICAgICMgIExFU1MtVEhBTiBTSUdOLCByaWdodC1sZWZ0CiAgICAweDAwM2Q6IDB4MDAzZCwgICAgICMgIEVRVUFMUyBTSUdOLCBsZWZ0LXJpZ2h0CiAgICAweDAwM2Q6IDB4MDBiZCwgICAgICMgIEVRVUFMUyBTSUdOLCByaWdodC1sZWZ0CiAgICAweDAwM2U6IDB4MDAzZSwgICAgICMgIEdSRUFURVItVEhBTiBTSUdOLCBsZWZ0LXJpZ2h0CiAgICAweDAwM2U6IDB4MDBiZSwgICAgICMgIEdSRUFURVItVEhBTiBTSUdOLCByaWdodC1sZWZ0CiAgICAweDAwM2Y6IDB4MDAzZiwgICAgICMgIFFVRVNUSU9OIE1BUkssIGxlZnQtcmlnaHQKICAgIDB4MDA0MDogMHgwMDQwLCAgICAgIyAgQ09NTUVSQ0lBTCBBVAogICAgMHgwMDQxOiAweDAwNDEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAweDAwNDI6IDB4MDA0MiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgIDB4MDA0MzogMHgwMDQzLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgMHgwMDQ0OiAweDAwNDQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAweDAwNDU6IDB4MDA0NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgIDB4MDA0NjogMHgwMDQ2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgMHgwMDQ3OiAweDAwNDcsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAweDAwNDg6IDB4MDA0OCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgIDB4MDA0OTogMHgwMDQ5LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgMHgwMDRhOiAweDAwNGEsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAweDAwNGI6IDB4MDA0YiwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgIDB4MDA0YzogMHgwMDRjLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgMHgwMDRkOiAweDAwNGQsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAweDAwNGU6IDB4MDA0ZSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgIDB4MDA0ZjogMHgwMDRmLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgMHgwMDUwOiAweDAwNTAsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAweDAwNTE6IDB4MDA1MSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgIDB4MDA1MjogMHgwMDUyLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgMHgwMDUzOiAweDAwNTMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAweDAwNTQ6IDB4MDA1NCwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgIDB4MDA1NTogMHgwMDU1LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgMHgwMDU2OiAweDAwNTYsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAweDAwNTc6IDB4MDA1NywgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgIDB4MDA1ODogMHgwMDU4LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgMHgwMDU5OiAweDAwNTksICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAweDAwNWE6IDB4MDA1YSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgIDB4MDA1YjogMHgwMDViLCAgICAgIyAgTEVGVCBTUVVBUkUgQlJBQ0tFVCwgbGVmdC1yaWdodAogICAgMHgwMDViOiAweDAwZGIsICAgICAjICBMRUZUIFNRVUFSRSBCUkFDS0VULCByaWdodC1sZWZ0CiAgICAweDAwNWM6IDB4MDA1YywgICAgICMgIFJFVkVSU0UgU09MSURVUywgbGVmdC1yaWdodAogICAgMHgwMDVjOiAweDAwZGMsICAgICAjICBSRVZFUlNFIFNPTElEVVMsIHJpZ2h0LWxlZnQKICAgIDB4MDA1ZDogMHgwMDVkLCAgICAgIyAgUklHSFQgU1FVQVJFIEJSQUNLRVQsIGxlZnQtcmlnaHQKICAgIDB4MDA1ZDogMHgwMGRkLCAgICAgIyAgUklHSFQgU1FVQVJFIEJSQUNLRVQsIHJpZ2h0LWxlZnQKICAgIDB4MDA1ZTogMHgwMDVlLCAgICAgIyAgQ0lSQ1VNRkxFWCBBQ0NFTlQsIGxlZnQtcmlnaHQKICAgIDB4MDA1ZTogMHgwMGRlLCAgICAgIyAgQ0lSQ1VNRkxFWCBBQ0NFTlQsIHJpZ2h0LWxlZnQKICAgIDB4MDA1ZjogMHgwMDVmLCAgICAgIyAgTE9XIExJTkUsIGxlZnQtcmlnaHQKICAgIDB4MDA1ZjogMHgwMGRmLCAgICAgIyAgTE9XIExJTkUsIHJpZ2h0LWxlZnQKICAgIDB4MDA2MDogMHgwMDYwLCAgICAgIyAgR1JBVkUgQUNDRU5UCiAgICAweDAwNjE6IDB4MDA2MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAweDAwNjI6IDB4MDA2MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAweDAwNjM6IDB4MDA2MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAweDAwNjQ6IDB4MDA2NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBECiAgICAweDAwNjU6IDB4MDA2NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAweDAwNjY6IDB4MDA2NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAweDAwNjc6IDB4MDA2NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAweDAwNjg6IDB4MDA2OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBICiAgICAweDAwNjk6IDB4MDA2OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAweDAwNmE6IDB4MDA2YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAweDAwNmI6IDB4MDA2YiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAweDAwNmM6IDB4MDA2YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAweDAwNmQ6IDB4MDA2ZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAweDAwNmU6IDB4MDA2ZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAweDAwNmY6IDB4MDA2ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAweDAwNzA6IDB4MDA3MCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAweDAwNzE6IDB4MDA3MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAweDAwNzI6IDB4MDA3MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAweDAwNzM6IDB4MDA3MywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAweDAwNzQ6IDB4MDA3NCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAweDAwNzU6IDB4MDA3NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAweDAwNzY6IDB4MDA3NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAweDAwNzc6IDB4MDA3NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAweDAwNzg6IDB4MDA3OCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAweDAwNzk6IDB4MDA3OSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAweDAwN2E6IDB4MDA3YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAweDAwN2I6IDB4MDA3YiwgICAgICMgIExFRlQgQ1VSTFkgQlJBQ0tFVCwgbGVmdC1yaWdodAogICAgMHgwMDdiOiAweDAwZmIsICAgICAjICBMRUZUIENVUkxZIEJSQUNLRVQsIHJpZ2h0LWxlZnQKICAgIDB4MDA3YzogMHgwMDdjLCAgICAgIyAgVkVSVElDQUwgTElORSwgbGVmdC1yaWdodAogICAgMHgwMDdjOiAweDAwZmMsICAgICAjICBWRVJUSUNBTCBMSU5FLCByaWdodC1sZWZ0CiAgICAweDAwN2Q6IDB4MDA3ZCwgICAgICMgIFJJR0hUIENVUkxZIEJSQUNLRVQsIGxlZnQtcmlnaHQKICAgIDB4MDA3ZDogMHgwMGZkLCAgICAgIyAgUklHSFQgQ1VSTFkgQlJBQ0tFVCwgcmlnaHQtbGVmdAogICAgMHgwMDdlOiAweDAwN2UsICAgICAjICBUSUxERQogICAgMHgwMDdmOiAweDAwN2YsICAgICAjICBDT05UUk9MIENIQVJBQ1RFUgogICAgMHgwMGEwOiAweDAwODEsICAgICAjICBOTy1CUkVBSyBTUEFDRSwgcmlnaHQtbGVmdAogICAgMHgwMGFiOiAweDAwOGMsICAgICAjICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSywgcmlnaHQtbGVmdAogICAgMHgwMGJiOiAweDAwOTgsICAgICAjICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUkssIHJpZ2h0LWxlZnQKICAgIDB4MDBjNDogMHgwMDgwLCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGM3OiAweDAwODIsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMGM5OiAweDAwODMsICAgICAjICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDBkMTogMHgwMDg0LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAweDAwZDY6IDB4MDA4NSwgICAgICMgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDBkYzogMHgwMDg2LCAgICAgIyAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgMHgwMGUwOiAweDAwODgsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAweDAwZTE6IDB4MDA4NywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgIDB4MDBlMjogMHgwMDg5LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZTQ6IDB4MDA4YSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAweDAwZTc6IDB4MDA4ZCwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgMHgwMGU4OiAweDAwOGYsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAweDAwZTk6IDB4MDA4ZSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgIDB4MDBlYTogMHgwMDkwLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZWI6IDB4MDA5MSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAweDAwZWQ6IDB4MDA5MiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgIDB4MDBlZTogMHgwMDk0LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZWY6IDB4MDA5NSwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAweDAwZjE6IDB4MDA5NiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgIDB4MDBmMzogMHgwMDk3LCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgMHgwMGY0OiAweDAwOTksICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgIDB4MDBmNjogMHgwMDlhLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgIDB4MDBmNzogMHgwMDliLCAgICAgIyAgRElWSVNJT04gU0lHTiwgcmlnaHQtbGVmdAogICAgMHgwMGY5OiAweDAwOWQsICAgICAjICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAweDAwZmE6IDB4MDA5YywgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgIDB4MDBmYjogMHgwMDllLCAgICAgIyAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAweDAwZmM6IDB4MDA5ZiwgICAgICMgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAweDA2MGM6IDB4MDBhYywgICAgICMgIEFSQUJJQyBDT01NQQogICAgMHgwNjFiOiAweDAwYmIsICAgICAjICBBUkFCSUMgU0VNSUNPTE9OCiAgICAweDA2MWY6IDB4MDBiZiwgICAgICMgIEFSQUJJQyBRVUVTVElPTiBNQVJLCiAgICAweDA2MjE6IDB4MDBjMSwgICAgICMgIEFSQUJJQyBMRVRURVIgSEFNWkEKICAgIDB4MDYyMjogMHgwMGMyLCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUKICAgIDB4MDYyMzogMHgwMGMzLCAgICAgIyAgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUKICAgIDB4MDYyNDogMHgwMGM0LCAgICAgIyAgQVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRQogICAgMHgwNjI1OiAweDAwYzUsICAgICAjICBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVwogICAgMHgwNjI2OiAweDAwYzYsICAgICAjICBBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFCiAgICAweDA2Mjc6IDB4MDBjNywgICAgICMgIEFSQUJJQyBMRVRURVIgQUxFRgogICAgMHgwNjI4OiAweDAwYzgsICAgICAjICBBUkFCSUMgTEVUVEVSIEJFSAogICAgMHgwNjI5OiAweDAwYzksICAgICAjICBBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBCiAgICAweDA2MmE6IDB4MDBjYSwgICAgICMgIEFSQUJJQyBMRVRURVIgVEVICiAgICAweDA2MmI6IDB4MDBjYiwgICAgICMgIEFSQUJJQyBMRVRURVIgVEhFSAogICAgMHgwNjJjOiAweDAwY2MsICAgICAjICBBUkFCSUMgTEVUVEVSIEpFRU0KICAgIDB4MDYyZDogMHgwMGNkLCAgICAgIyAgQVJBQklDIExFVFRFUiBIQUgKICAgIDB4MDYyZTogMHgwMGNlLCAgICAgIyAgQVJBQklDIExFVFRFUiBLSEFICiAgICAweDA2MmY6IDB4MDBjZiwgICAgICMgIEFSQUJJQyBMRVRURVIgREFMCiAgICAweDA2MzA6IDB4MDBkMCwgICAgICMgIEFSQUJJQyBMRVRURVIgVEhBTAogICAgMHgwNjMxOiAweDAwZDEsICAgICAjICBBUkFCSUMgTEVUVEVSIFJFSAogICAgMHgwNjMyOiAweDAwZDIsICAgICAjICBBUkFCSUMgTEVUVEVSIFpBSU4KICAgIDB4MDYzMzogMHgwMGQzLCAgICAgIyAgQVJBQklDIExFVFRFUiBTRUVOCiAgICAweDA2MzQ6IDB4MDBkNCwgICAgICMgIEFSQUJJQyBMRVRURVIgU0hFRU4KICAgIDB4MDYzNTogMHgwMGQ1LCAgICAgIyAgQVJBQklDIExFVFRFUiBTQUQKICAgIDB4MDYzNjogMHgwMGQ2LCAgICAgIyAgQVJBQklDIExFVFRFUiBEQUQKICAgIDB4MDYzNzogMHgwMGQ3LCAgICAgIyAgQVJBQklDIExFVFRFUiBUQUgKICAgIDB4MDYzODogMHgwMGQ4LCAgICAgIyAgQVJBQklDIExFVFRFUiBaQUgKICAgIDB4MDYzOTogMHgwMGQ5LCAgICAgIyAgQVJBQklDIExFVFRFUiBBSU4KICAgIDB4MDYzYTogMHgwMGRhLCAgICAgIyAgQVJBQklDIExFVFRFUiBHSEFJTgogICAgMHgwNjQwOiAweDAwZTAsICAgICAjICBBUkFCSUMgVEFUV0VFTAogICAgMHgwNjQxOiAweDAwZTEsICAgICAjICBBUkFCSUMgTEVUVEVSIEZFSAogICAgMHgwNjQyOiAweDAwZTIsICAgICAjICBBUkFCSUMgTEVUVEVSIFFBRgogICAgMHgwNjQzOiAweDAwZTMsICAgICAjICBBUkFCSUMgTEVUVEVSIEtBRgogICAgMHgwNjQ0OiAweDAwZTQsICAgICAjICBBUkFCSUMgTEVUVEVSIExBTQogICAgMHgwNjQ1OiAweDAwZTUsICAgICAjICBBUkFCSUMgTEVUVEVSIE1FRU0KICAgIDB4MDY0NjogMHgwMGU2LCAgICAgIyAgQVJBQklDIExFVFRFUiBOT09OCiAgICAweDA2NDc6IDB4MDBlNywgICAgICMgIEFSQUJJQyBMRVRURVIgSEVICiAgICAweDA2NDg6IDB4MDBlOCwgICAgICMgIEFSQUJJQyBMRVRURVIgV0FXCiAgICAweDA2NDk6IDB4MDBlOSwgICAgICMgIEFSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBCiAgICAweDA2NGE6IDB4MDBlYSwgICAgICMgIEFSQUJJQyBMRVRURVIgWUVICiAgICAweDA2NGI6IDB4MDBlYiwgICAgICMgIEFSQUJJQyBGQVRIQVRBTgogICAgMHgwNjRjOiAweDAwZWMsICAgICAjICBBUkFCSUMgREFNTUFUQU4KICAgIDB4MDY0ZDogMHgwMGVkLCAgICAgIyAgQVJBQklDIEtBU1JBVEFOCiAgICAweDA2NGU6IDB4MDBlZSwgICAgICMgIEFSQUJJQyBGQVRIQQogICAgMHgwNjRmOiAweDAwZWYsICAgICAjICBBUkFCSUMgREFNTUEKICAgIDB4MDY1MDogMHgwMGYwLCAgICAgIyAgQVJBQklDIEtBU1JBCiAgICAweDA2NTE6IDB4MDBmMSwgICAgICMgIEFSQUJJQyBTSEFEREEKICAgIDB4MDY1MjogMHgwMGYyLCAgICAgIyAgQVJBQklDIFNVS1VOCiAgICAweDA2NjA6IDB4MDBiMCwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwNjYxOiAweDAwYjEsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgT05FLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwNjYyOiAweDAwYjIsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgVFdPLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwNjYzOiAweDAwYjMsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUsIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAweDA2NjQ6IDB4MDBiNCwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwNjY1OiAweDAwYjUsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgRklWRSwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgIDB4MDY2NjogMHgwMGI2LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIFNJWCwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgIDB4MDY2NzogMHgwMGI3LCAgICAgIyAgQVJBQklDLUlORElDIERJR0lUIFNFVkVOLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwNjY4OiAweDAwYjgsICAgICAjICBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQsIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAweDA2Njk6IDB4MDBiOSwgICAgICMgIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgMHgwNjZhOiAweDAwYTUsICAgICAjICBBUkFCSUMgUEVSQ0VOVCBTSUdOCiAgICAweDA2Nzk6IDB4MDBmNCwgICAgICMgIEFSQUJJQyBMRVRURVIgVFRFSAogICAgMHgwNjdlOiAweDAwZjMsICAgICAjICBBUkFCSUMgTEVUVEVSIFBFSAogICAgMHgwNjg2OiAweDAwZjUsICAgICAjICBBUkFCSUMgTEVUVEVSIFRDSEVICiAgICAweDA2ODg6IDB4MDBmOSwgICAgICMgIEFSQUJJQyBMRVRURVIgRERBTAogICAgMHgwNjkxOiAweDAwZmEsICAgICAjICBBUkFCSUMgTEVUVEVSIFJSRUgKICAgIDB4MDY5ODogMHgwMGZlLCAgICAgIyAgQVJBQklDIExFVFRFUiBKRUgKICAgIDB4MDZhNDogMHgwMGY3LCAgICAgIyAgQVJBQklDIExFVFRFUiBWRUgKICAgIDB4MDZhZjogMHgwMGY4LCAgICAgIyAgQVJBQklDIExFVFRFUiBHQUYKICAgIDB4MDZiYTogMHgwMDhiLCAgICAgIyAgQVJBQklDIExFVFRFUiBOT09OIEdIVU5OQQogICAgMHgwNmQyOiAweDAwZmYsICAgICAjICBBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUKICAgIDB4MDZkNTogMHgwMGY2LCAgICAgIyAgQVJBQklDIExFVFRFUiBBRQogICAgMHgyMDI2OiAweDAwOTMsICAgICAjICBIT1JJWk9OVEFMIEVMTElQU0lTLCByaWdodC1sZWZ0CiAgICAweDI3NGE6IDB4MDBjMCwgICAgICMgIEVJR0hUIFRFQVJEUk9QLVNQT0tFRCBQUk9QRUxMRVIgQVNURVJJU0ssIHJpZ2h0LWxlZnQKfQpQSwMEFAAAAAAAAiCjVrl6uFNBNQAAQTUAABkAAABlbmNvZGluZ3MvbWFjX2Nyb2F0aWFuLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBtYWNfY3JvYXRpYW4gZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvQVBQTEUvQ1JPQVRJQU4uVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdtYWMtY3JvYXRpYW4nLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTInICAgICAjICAweDEyIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWInICAgICAjICAweDFCIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceGM0JyAgICAgIyAgMHg4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4ODEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGM3JyAgICAgIyAgMHg4MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4YzknICAgICAjICAweDgzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZDEnICAgICAjICAweDg0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZDYnICAgICAjICAweDg1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGRjJyAgICAgIyAgMHg4NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhlMScgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZTAnICAgICAjICAweDg4IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGUyJyAgICAgIyAgMHg4OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGU0JyAgICAgIyAgMHg4QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTMnICAgICAjICAweDhCIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGU1JyAgICAgIyAgMHg4QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGU3JyAgICAgIyAgMHg4RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU5JyAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlOCcgICAgICMgIDB4OEYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWEnICAgICAjICAweDkwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDkxIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlZCcgICAgICMgIDB4OTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4ZWMnICAgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGVlJyAgICAgIyAgMHg5NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjEnICAgICAjICAweDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGYzJyAgICAgIyAgMHg5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmMicgICAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjQnICAgICAjICAweDk5IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZjYnICAgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmNScgICAgICMgIDB4OUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4ZmEnICAgICAjICAweDlDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGY5JyAgICAgIyAgMHg5RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYicgICAgICMgIDB4OUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmYycgICAgICMgIDB4OUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdcdTIwMjAnICAgIyAgMHhBMCAtPiBEQUdHRVIKICAgICdceGIwJyAgICAgIyAgMHhBMSAtPiBERUdSRUUgU0lHTgogICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdceGE3JyAgICAgIyAgMHhBNCAtPiBTRUNUSU9OIFNJR04KICAgICdcdTIwMjInICAgIyAgMHhBNSAtPiBCVUxMRVQKICAgICdceGI2JyAgICAgIyAgMHhBNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGRmJyAgICAgIyAgMHhBNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgJ1x4YWUnICAgICAjICAweEE4IC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x1MDE2MCcgICAjICAweEE5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgogICAgJ1x1MjEyMicgICAjICAweEFBIC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x4YjQnICAgICAjICAweEFCIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4YTgnICAgICAjICAweEFDIC0+IERJQUVSRVNJUwogICAgJ1x1MjI2MCcgICAjICAweEFEIC0+IE5PVCBFUVVBTCBUTwogICAgJ1x1MDE3ZCcgICAjICAweEFFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgJ1x4ZDgnICAgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdcdTIyMWUnICAgIyAgMHhCMCAtPiBJTkZJTklUWQogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x1MjI2NCcgICAjICAweEIyIC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjI2NScgICAjICAweEIzIC0+IEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjIwNicgICAjICAweEI0IC0+IElOQ1JFTUVOVAogICAgJ1x4YjUnICAgICAjICAweEI1IC0+IE1JQ1JPIFNJR04KICAgICdcdTIyMDInICAgIyAgMHhCNiAtPiBQQVJUSUFMIERJRkZFUkVOVElBTAogICAgJ1x1MjIxMScgICAjICAweEI3IC0+IE4tQVJZIFNVTU1BVElPTgogICAgJ1x1MjIwZicgICAjICAweEI4IC0+IE4tQVJZIFBST0RVQ1QKICAgICdcdTAxNjEnICAgIyAgMHhCOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUyMjJiJyAgICMgIDB4QkEgLT4gSU5URUdSQUwKICAgICdceGFhJyAgICAgIyAgMHhCQiAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YmEnICAgICAjICAweEJDIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x1MDNhOScgICAjICAweEJEIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAnXHUwMTdlJyAgICMgIDB4QkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDQVJPTgogICAgJ1x4ZjgnICAgICAjICAweEJGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhiZicgICAgICMgIDB4QzAgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgJ1x4YTEnICAgICAjICAweEMxIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgICdceGFjJyAgICAgIyAgMHhDMiAtPiBOT1QgU0lHTgogICAgJ1x1MjIxYScgICAjICAweEMzIC0+IFNRVUFSRSBST09UCiAgICAnXHUwMTkyJyAgICMgIDB4QzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAnXHUyMjQ4JyAgICMgIDB4QzUgLT4gQUxNT1NUIEVRVUFMIFRPCiAgICAnXHUwMTA2JyAgICMgIDB4QzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCiAgICAnXHhhYicgICAgICMgIDB4QzcgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxMGMnICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KICAgICdcdTIwMjYnICAgIyAgMHhDOSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHhhMCcgICAgICMgIDB4Q0EgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdceGMwJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMzJyAgICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGQ1JyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdcdTAxNTInICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCiAgICAnXHUwMTUzJyAgICMgIDB4Q0YgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKICAgICdcdTAxMTAnICAgIyAgMHhEMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU1RST0tFCiAgICAnXHUyMDE0JyAgICMgIDB4RDEgLT4gRU0gREFTSAogICAgJ1x1MjAxYycgICAjICAweEQyIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4RDMgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDE4JyAgICMgIDB4RDQgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHhENSAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGY3JyAgICAgIyAgMHhENiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUyNWNhJyAgICMgIDB4RDcgLT4gTE9aRU5HRQogICAgJ1x1ZjhmZicgICAjICAweEQ4IC0+IEFwcGxlIGxvZ28KICAgICdceGE5JyAgICAgIyAgMHhEOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MjA0NCcgICAjICAweERBIC0+IEZSQUNUSU9OIFNMQVNICiAgICAnXHUyMGFjJyAgICMgIDB4REIgLT4gRVVSTyBTSUdOCiAgICAnXHUyMDM5JyAgICMgIDB4REMgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwM2EnICAgIyAgMHhERCAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGM2JyAgICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQogICAgJ1x4YmInICAgICAjICAweERGIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxMycgICAjICAweEUwIC0+IEVOIERBU0gKICAgICdceGI3JyAgICAgIyAgMHhFMSAtPiBNSURETEUgRE9UCiAgICAnXHUyMDFhJyAgICMgIDB4RTIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFlJyAgICMgIDB4RTMgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDMwJyAgICMgIDB4RTQgLT4gUEVSIE1JTExFIFNJR04KICAgICdceGMyJyAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1MDEwNycgICAjICAweEU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgICdceGMxJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdcdTAxMGQnICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCiAgICAnXHhjOCcgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhjZCcgICAgICMgIDB4RUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhjZScgICAgICMgIDB4RUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHhFQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhjYycgICAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhkMycgICAgICMgIDB4RUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhkNCcgICAgICMgIDB4RUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdcdTAxMTEnICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFNUUk9LRQogICAgJ1x4ZDInICAgICAjICAweEYxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZGEnICAgICAjICAweEYyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZGInICAgICAjICAweEYzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkOScgICAgICMgIDB4RjQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHUwMTMxJyAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSQogICAgJ1x1MDJjNicgICAjICAweEY2IC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ1x1MDJkYycgICAjICAweEY3IC0+IFNNQUxMIFRJTERFCiAgICAnXHhhZicgICAgICMgIDB4RjggLT4gTUFDUk9OCiAgICAnXHUwM2MwJyAgICMgIDB4RjkgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAnXHhjYicgICAgICMgIDB4RkEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDJkYScgICAjICAweEZCIC0+IFJJTkcgQUJPVkUKICAgICdceGI4JyAgICAgIyAgMHhGQyAtPiBDRURJTExBCiAgICAnXHhjYScgICAgICMgIDB4RkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGU2JyAgICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdcdTAyYzcnICAgIyAgMHhGRiAtPiBDQVJPTgopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWHlHK4o40AACONAAAGQAAAGVuY29kaW5ncy9tYWNfY3lyaWxsaWMucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIG1hY19jeXJpbGxpYyBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9BUFBMRS9DWVJJTExJQy5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J21hYy1jeXJpbGxpYycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDInICAgICAjICAweDAyIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGInICAgICAjICAweDBCIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTEnICAgICAjICAweDExIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x1MDQxMCcgICAjICAweDgwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgICdcdTA0MTEnICAgIyAgMHg4MSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQogICAgJ1x1MDQxMicgICAjICAweDgyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCiAgICAnXHUwNDEzJyAgICMgIDB4ODMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAnXHUwNDE0JyAgICMgIDB4ODQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKICAgICdcdTA0MTUnICAgIyAgMHg4NSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQogICAgJ1x1MDQxNicgICAjICAweDg2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQxNycgICAjICAweDg3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCiAgICAnXHUwNDE4JyAgICMgIDB4ODggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQogICAgJ1x1MDQxOScgICAjICAweDg5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0MWEnICAgIyAgMHg4QSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQogICAgJ1x1MDQxYicgICAjICAweDhCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCiAgICAnXHUwNDFjJyAgICMgIDB4OEMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0MWQnICAgIyAgMHg4RCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgogICAgJ1x1MDQxZScgICAjICAweDhFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KICAgICdcdTA0MWYnICAgIyAgMHg4RiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQyMCcgICAjICAweDkwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCiAgICAnXHUwNDIxJyAgICMgIDB4OTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKICAgICdcdTA0MjInICAgIyAgMHg5MiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgJ1x1MDQyMycgICAjICAweDkzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKICAgICdcdTA0MjQnICAgIyAgMHg5NCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgogICAgJ1x1MDQyNScgICAjICAweDk1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDI2JyAgICMgIDB4OTYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCiAgICAnXHUwNDI3JyAgICMgIDB4OTcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCiAgICAnXHUwNDI4JyAgICMgIDB4OTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAnXHUwNDI5JyAgICMgIDB4OTkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKICAgICdcdTA0MmEnICAgIyAgMHg5QSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KICAgICdcdTA0MmInICAgIyAgMHg5QiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAnXHUwNDJjJyAgICMgIDB4OUMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDJkJyAgICMgIDB4OUQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQogICAgJ1x1MDQyZScgICAjICAweDlFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAnXHUwNDJmJyAgICMgIDB4OUYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKICAgICdcdTIwMjAnICAgIyAgMHhBMCAtPiBEQUdHRVIKICAgICdceGIwJyAgICAgIyAgMHhBMSAtPiBERUdSRUUgU0lHTgogICAgJ1x1MDQ5MCcgICAjICAweEEyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdceGE3JyAgICAgIyAgMHhBNCAtPiBTRUNUSU9OIFNJR04KICAgICdcdTIwMjInICAgIyAgMHhBNSAtPiBCVUxMRVQKICAgICdceGI2JyAgICAgIyAgMHhBNiAtPiBQSUxDUk9XIFNJR04KICAgICdcdTA0MDYnICAgIyAgMHhBNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKICAgICdceGFlJyAgICAgIyAgMHhBOCAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MjEyMicgICAjICAweEFBIC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x1MDQwMicgICAjICAweEFCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERKRQogICAgJ1x1MDQ1MicgICAjICAweEFDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBESkUKICAgICdcdTIyNjAnICAgIyAgMHhBRCAtPiBOT1QgRVFVQUwgVE8KICAgICdcdTA0MDMnICAgIyAgMHhBRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSkUKICAgICdcdTA0NTMnICAgIyAgMHhBRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0pFCiAgICAnXHUyMjFlJyAgICMgIDB4QjAgLT4gSU5GSU5JVFkKICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTIyNjQnICAgIyAgMHhCMiAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTIyNjUnICAgIyAgMHhCMyAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTA0NTYnICAgIyAgMHhCNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgogICAgJ1x1MDQ5MScgICAjICAweEI2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KICAgICdcdTA0MDgnICAgIyAgMHhCNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBKRQogICAgJ1x1MDQwNCcgICAjICAweEI4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRQogICAgJ1x1MDQ1NCcgICAjICAweEI5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVS1JBSU5JQU4gSUUKICAgICdcdTA0MDcnICAgIyAgMHhCQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQogICAgJ1x1MDQ1NycgICAjICAweEJCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZSQogICAgJ1x1MDQwOScgICAjICAweEJDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIExKRQogICAgJ1x1MDQ1OScgICAjICAweEJEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBMSkUKICAgICdcdTA0MGEnICAgIyAgMHhCRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkUKICAgICdcdTA0NWEnICAgIyAgMHhCRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTkpFCiAgICAnXHUwNDU4JyAgICMgIDB4QzAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCiAgICAnXHUwNDA1JyAgICMgIDB4QzEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpFCiAgICAnXHhhYycgICAgICMgIDB4QzIgLT4gTk9UIFNJR04KICAgICdcdTIyMWEnICAgIyAgMHhDMyAtPiBTUVVBUkUgUk9PVAogICAgJ1x1MDE5MicgICAjICAweEM0IC0+IExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgJ1x1MjI0OCcgICAjICAweEM1IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x1MjIwNicgICAjICAweEM2IC0+IElOQ1JFTUVOVAogICAgJ1x4YWInICAgICAjICAweEM3IC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4QzggLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDI2JyAgICMgIDB4QzkgLT4gSE9SSVpPTlRBTCBFTExJUFNJUwogICAgJ1x4YTAnICAgICAjICAweENBIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUwNDBiJyAgICMgIDB4Q0IgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNIRQogICAgJ1x1MDQ1YicgICAjICAweENDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBUU0hFCiAgICAnXHUwNDBjJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0pFCiAgICAnXHUwNDVjJyAgICMgIDB4Q0UgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtKRQogICAgJ1x1MDQ1NScgICAjICAweENGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBEWkUKICAgICdcdTIwMTMnICAgIyAgMHhEMCAtPiBFTiBEQVNICiAgICAnXHUyMDE0JyAgICMgIDB4RDEgLT4gRU0gREFTSAogICAgJ1x1MjAxYycgICAjICAweEQyIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4RDMgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDE4JyAgICMgIDB4RDQgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHhENSAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGY3JyAgICAgIyAgMHhENiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUyMDFlJyAgICMgIDB4RDcgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUwNDBlJyAgICMgIDB4RDggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVQogICAgJ1x1MDQ1ZScgICAjICAweEQ5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVCiAgICAnXHUwNDBmJyAgICMgIDB4REEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpIRQogICAgJ1x1MDQ1ZicgICAjICAweERCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBEWkhFCiAgICAnXHUyMTE2JyAgICMgIDB4REMgLT4gTlVNRVJPIFNJR04KICAgICdcdTA0MDEnICAgIyAgMHhERCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTwogICAgJ1x1MDQ1MScgICAjICAweERFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJTwogICAgJ1x1MDQ0ZicgICAjICAweERGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZQQogICAgJ1x1MDQzMCcgICAjICAweEUwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCiAgICAnXHUwNDMxJyAgICMgIDB4RTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCiAgICAnXHUwNDMyJyAgICMgIDB4RTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCiAgICAnXHUwNDMzJyAgICMgIDB4RTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQogICAgJ1x1MDQzNCcgICAjICAweEU0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBERQogICAgJ1x1MDQzNScgICAjICAweEU1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQogICAgJ1x1MDQzNicgICAjICAweEU2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKICAgICdcdTA0MzcnICAgIyAgMHhFNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKICAgICdcdTA0MzgnICAgIyAgMHhFOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQogICAgJ1x1MDQzOScgICAjICAweEU5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCiAgICAnXHUwNDNhJyAgICMgIDB4RUEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCiAgICAnXHUwNDNiJyAgICMgIDB4RUIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCiAgICAnXHUwNDNjJyAgICMgIDB4RUMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCiAgICAnXHUwNDNkJyAgICMgIDB4RUQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCiAgICAnXHUwNDNlJyAgICMgIDB4RUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KICAgICdcdTA0M2YnICAgIyAgMHhFRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKICAgICdcdTA0NDAnICAgIyAgMHhGMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKICAgICdcdTA0NDEnICAgIyAgMHhGMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKICAgICdcdTA0NDInICAgIyAgMHhGMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKICAgICdcdTA0NDMnICAgIyAgMHhGMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQogICAgJ1x1MDQ0NCcgICAjICAweEY0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFRgogICAgJ1x1MDQ0NScgICAjICAweEY1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQogICAgJ1x1MDQ0NicgICAjICAweEY2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBUU0UKICAgICdcdTA0NDcnICAgIyAgMHhGNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCiAgICAnXHUwNDQ4JyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQogICAgJ1x1MDQ0OScgICAjICAweEY5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQQogICAgJ1x1MDQ0YScgICAjICAweEZBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KICAgICdcdTA0NGInICAgIyAgMHhGQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQogICAgJ1x1MDQ0YycgICAjICAweEZDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KICAgICdcdTA0NGQnICAgIyAgMHhGRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQogICAgJ1x1MDQ0ZScgICAjICAweEZFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQogICAgJ1x1MjBhYycgICAjICAweEZGIC0+IEVVUk8gU0lHTgopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWs2TCwEI7AABCOwAAFgAAAGVuY29kaW5ncy9tYWNfZmFyc2kucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIG1hY19mYXJzaSBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9BUFBMRS9GQVJTSS5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J21hYy1mYXJzaScsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDInICAgICAjICAweDAyIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGInICAgICAjICAweDBCIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTEnICAgICAjICAweDExIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFLCBsZWZ0LXJpZ2h0CiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSywgbGVmdC1yaWdodAogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLLCBsZWZ0LXJpZ2h0CiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04sIGxlZnQtcmlnaHQKICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTiwgbGVmdC1yaWdodAogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTiwgbGVmdC1yaWdodAogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORCwgbGVmdC1yaWdodAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUsIGxlZnQtcmlnaHQKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTLCBsZWZ0LXJpZ2h0CiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMsIGxlZnQtcmlnaHQKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSywgbGVmdC1yaWdodAogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTiwgbGVmdC1yaWdodAogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BLCBsZWZ0LXJpZ2h0OyBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2NkMgQVJBQklDIFRIT1VTQU5EUyBTRVBBUkFUT1IKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMsIGxlZnQtcmlnaHQKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AsIGxlZnQtcmlnaHQ7IGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDY2QiBBUkFCSUMgREVDSU1BTCBTRVBBUkFUT1IKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTLCBsZWZ0LXJpZ2h0CiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTzsgIGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDZGMCBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORTsgICBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2RjEgRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTzsgICBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2RjIgRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFOyBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2RjMgRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUjsgIGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDZGNCBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkU7ICBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2RjUgRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVg7ICAgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNkY2IEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTjsgaW4gQXJhYmljLXNjcmlwdCBjb250ZXh0LCBkaXNwbGF5ZWQgYXMgMHgwNkY3IEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUOyBpbiBBcmFiaWMtc2NyaXB0IGNvbnRleHQsIGRpc3BsYXllZCBhcyAweDA2RjggRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORTsgIGluIEFyYWJpYy1zY3JpcHQgY29udGV4dCwgZGlzcGxheWVkIGFzIDB4MDZGOSBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OLCBsZWZ0LXJpZ2h0CiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OLCBsZWZ0LXJpZ2h0CiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04sIGxlZnQtcmlnaHQKICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTiwgbGVmdC1yaWdodAogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOLCBsZWZ0LXJpZ2h0CiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSywgbGVmdC1yaWdodAogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQsIGxlZnQtcmlnaHQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMsIGxlZnQtcmlnaHQKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVCwgbGVmdC1yaWdodAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5ULCBsZWZ0LXJpZ2h0CiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUsIGxlZnQtcmlnaHQKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VULCBsZWZ0LXJpZ2h0CiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORSwgbGVmdC1yaWdodAogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQsIGxlZnQtcmlnaHQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHhjNCcgICAgICMgIDB4ODAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YTAnICAgICAjICAweDgxIC0+IE5PLUJSRUFLIFNQQUNFLCByaWdodC1sZWZ0CiAgICAnXHhjNycgICAgICMgIDB4ODIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGM5JyAgICAgIyAgMHg4MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGQxJyAgICAgIyAgMHg4NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGQ2JyAgICAgIyAgMHg4NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkYycgICAgICMgIDB4ODYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTEnICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUwJyAgICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhlMicgICAgICMgIDB4ODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlNCcgICAgICMgIDB4OEEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdcdTA2YmEnICAgIyAgMHg4QiAtPiBBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BCiAgICAnXHhhYicgICAgICMgIDB4OEMgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUkssIHJpZ2h0LWxlZnQKICAgICdceGU3JyAgICAgIyAgMHg4RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU5JyAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlOCcgICAgICMgIDB4OEYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWEnICAgICAjICAweDkwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDkxIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlZCcgICAgICMgIDB4OTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x1MjAyNicgICAjICAweDkzIC0+IEhPUklaT05UQUwgRUxMSVBTSVMsIHJpZ2h0LWxlZnQKICAgICdceGVlJyAgICAgIyAgMHg5NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjEnICAgICAjICAweDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGYzJyAgICAgIyAgMHg5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhiYicgICAgICMgIDB4OTggLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLLCByaWdodC1sZWZ0CiAgICAnXHhmNCcgICAgICMgIDB4OTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNicgICAgICMgIDB4OUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY3JyAgICAgIyAgMHg5QiAtPiBESVZJU0lPTiBTSUdOLCByaWdodC1sZWZ0CiAgICAnXHhmYScgICAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZjknICAgICAjICAweDlEIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGZiJyAgICAgIyAgMHg5RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGZjJyAgICAgIyAgMHg5RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJyAnICAgICAgICAjICAweEEwIC0+IFNQQUNFLCByaWdodC1sZWZ0CiAgICAnIScgICAgICAgICMgIDB4QTEgLT4gRVhDTEFNQVRJT04gTUFSSywgcmlnaHQtbGVmdAogICAgJyInICAgICAgICAjICAweEEyIC0+IFFVT1RBVElPTiBNQVJLLCByaWdodC1sZWZ0CiAgICAnIycgICAgICAgICMgIDB4QTMgLT4gTlVNQkVSIFNJR04sIHJpZ2h0LWxlZnQKICAgICckJyAgICAgICAgIyAgMHhBNCAtPiBET0xMQVIgU0lHTiwgcmlnaHQtbGVmdAogICAgJ1x1MDY2YScgICAjICAweEE1IC0+IEFSQUJJQyBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHhBNiAtPiBBTVBFUlNBTkQsIHJpZ2h0LWxlZnQKICAgICInIiAgICAgICAgIyAgMHhBNyAtPiBBUE9TVFJPUEhFLCByaWdodC1sZWZ0CiAgICAnKCcgICAgICAgICMgIDB4QTggLT4gTEVGVCBQQVJFTlRIRVNJUywgcmlnaHQtbGVmdAogICAgJyknICAgICAgICAjICAweEE5IC0+IFJJR0hUIFBBUkVOVEhFU0lTLCByaWdodC1sZWZ0CiAgICAnKicgICAgICAgICMgIDB4QUEgLT4gQVNURVJJU0ssIHJpZ2h0LWxlZnQKICAgICcrJyAgICAgICAgIyAgMHhBQiAtPiBQTFVTIFNJR04sIHJpZ2h0LWxlZnQKICAgICdcdTA2MGMnICAgIyAgMHhBQyAtPiBBUkFCSUMgQ09NTUEKICAgICctJyAgICAgICAgIyAgMHhBRCAtPiBIWVBIRU4tTUlOVVMsIHJpZ2h0LWxlZnQKICAgICcuJyAgICAgICAgIyAgMHhBRSAtPiBGVUxMIFNUT1AsIHJpZ2h0LWxlZnQKICAgICcvJyAgICAgICAgIyAgMHhBRiAtPiBTT0xJRFVTLCByaWdodC1sZWZ0CiAgICAnXHUwNmYwJyAgICMgIDB4QjAgLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFpFUk8sIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAnXHUwNmYxJyAgICMgIDB4QjEgLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE9ORSwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2ZjInICAgIyAgMHhCMiAtPiBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVFdPLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgJ1x1MDZmMycgICAjICAweEIzIC0+IEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRSwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2ZjQnICAgIyAgMHhCNCAtPiBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRk9VUiwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2ZjUnICAgIyAgMHhCNSAtPiBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRklWRSwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2ZjYnICAgIyAgMHhCNiAtPiBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgU0lYLCByaWdodC1sZWZ0IChuZWVkIG92ZXJyaWRlKQogICAgJ1x1MDZmNycgICAjICAweEI3IC0+IEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTiwgcmlnaHQtbGVmdCAobmVlZCBvdmVycmlkZSkKICAgICdcdTA2ZjgnICAgIyAgMHhCOCAtPiBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQsIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAnXHUwNmY5JyAgICMgIDB4QjkgLT4gRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE5JTkUsIHJpZ2h0LWxlZnQgKG5lZWQgb3ZlcnJpZGUpCiAgICAnOicgICAgICAgICMgIDB4QkEgLT4gQ09MT04sIHJpZ2h0LWxlZnQKICAgICdcdTA2MWInICAgIyAgMHhCQiAtPiBBUkFCSUMgU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4QkMgLT4gTEVTUy1USEFOIFNJR04sIHJpZ2h0LWxlZnQKICAgICc9JyAgICAgICAgIyAgMHhCRCAtPiBFUVVBTFMgU0lHTiwgcmlnaHQtbGVmdAogICAgJz4nICAgICAgICAjICAweEJFIC0+IEdSRUFURVItVEhBTiBTSUdOLCByaWdodC1sZWZ0CiAgICAnXHUwNjFmJyAgICMgIDB4QkYgLT4gQVJBQklDIFFVRVNUSU9OIE1BUksKICAgICdcdTI3NGEnICAgIyAgMHhDMCAtPiBFSUdIVCBURUFSRFJPUC1TUE9LRUQgUFJPUEVMTEVSIEFTVEVSSVNLLCByaWdodC1sZWZ0CiAgICAnXHUwNjIxJyAgICMgIDB4QzEgLT4gQVJBQklDIExFVFRFUiBIQU1aQQogICAgJ1x1MDYyMicgICAjICAweEMyIC0+IEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFCiAgICAnXHUwNjIzJyAgICMgIDB4QzMgLT4gQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUKICAgICdcdTA2MjQnICAgIyAgMHhDNCAtPiBBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFCiAgICAnXHUwNjI1JyAgICMgIDB4QzUgLT4gQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1cKICAgICdcdTA2MjYnICAgIyAgMHhDNiAtPiBBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFCiAgICAnXHUwNjI3JyAgICMgIDB4QzcgLT4gQVJBQklDIExFVFRFUiBBTEVGCiAgICAnXHUwNjI4JyAgICMgIDB4QzggLT4gQVJBQklDIExFVFRFUiBCRUgKICAgICdcdTA2MjknICAgIyAgMHhDOSAtPiBBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBCiAgICAnXHUwNjJhJyAgICMgIDB4Q0EgLT4gQVJBQklDIExFVFRFUiBURUgKICAgICdcdTA2MmInICAgIyAgMHhDQiAtPiBBUkFCSUMgTEVUVEVSIFRIRUgKICAgICdcdTA2MmMnICAgIyAgMHhDQyAtPiBBUkFCSUMgTEVUVEVSIEpFRU0KICAgICdcdTA2MmQnICAgIyAgMHhDRCAtPiBBUkFCSUMgTEVUVEVSIEhBSAogICAgJ1x1MDYyZScgICAjICAweENFIC0+IEFSQUJJQyBMRVRURVIgS0hBSAogICAgJ1x1MDYyZicgICAjICAweENGIC0+IEFSQUJJQyBMRVRURVIgREFMCiAgICAnXHUwNjMwJyAgICMgIDB4RDAgLT4gQVJBQklDIExFVFRFUiBUSEFMCiAgICAnXHUwNjMxJyAgICMgIDB4RDEgLT4gQVJBQklDIExFVFRFUiBSRUgKICAgICdcdTA2MzInICAgIyAgMHhEMiAtPiBBUkFCSUMgTEVUVEVSIFpBSU4KICAgICdcdTA2MzMnICAgIyAgMHhEMyAtPiBBUkFCSUMgTEVUVEVSIFNFRU4KICAgICdcdTA2MzQnICAgIyAgMHhENCAtPiBBUkFCSUMgTEVUVEVSIFNIRUVOCiAgICAnXHUwNjM1JyAgICMgIDB4RDUgLT4gQVJBQklDIExFVFRFUiBTQUQKICAgICdcdTA2MzYnICAgIyAgMHhENiAtPiBBUkFCSUMgTEVUVEVSIERBRAogICAgJ1x1MDYzNycgICAjICAweEQ3IC0+IEFSQUJJQyBMRVRURVIgVEFICiAgICAnXHUwNjM4JyAgICMgIDB4RDggLT4gQVJBQklDIExFVFRFUiBaQUgKICAgICdcdTA2MzknICAgIyAgMHhEOSAtPiBBUkFCSUMgTEVUVEVSIEFJTgogICAgJ1x1MDYzYScgICAjICAweERBIC0+IEFSQUJJQyBMRVRURVIgR0hBSU4KICAgICdbJyAgICAgICAgIyAgMHhEQiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VULCByaWdodC1sZWZ0CiAgICAnXFwnICAgICAgICMgIDB4REMgLT4gUkVWRVJTRSBTT0xJRFVTLCByaWdodC1sZWZ0CiAgICAnXScgICAgICAgICMgIDB4REQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQsIHJpZ2h0LWxlZnQKICAgICdeJyAgICAgICAgIyAgMHhERSAtPiBDSVJDVU1GTEVYIEFDQ0VOVCwgcmlnaHQtbGVmdAogICAgJ18nICAgICAgICAjICAweERGIC0+IExPVyBMSU5FLCByaWdodC1sZWZ0CiAgICAnXHUwNjQwJyAgICMgIDB4RTAgLT4gQVJBQklDIFRBVFdFRUwKICAgICdcdTA2NDEnICAgIyAgMHhFMSAtPiBBUkFCSUMgTEVUVEVSIEZFSAogICAgJ1x1MDY0MicgICAjICAweEUyIC0+IEFSQUJJQyBMRVRURVIgUUFGCiAgICAnXHUwNjQzJyAgICMgIDB4RTMgLT4gQVJBQklDIExFVFRFUiBLQUYKICAgICdcdTA2NDQnICAgIyAgMHhFNCAtPiBBUkFCSUMgTEVUVEVSIExBTQogICAgJ1x1MDY0NScgICAjICAweEU1IC0+IEFSQUJJQyBMRVRURVIgTUVFTQogICAgJ1x1MDY0NicgICAjICAweEU2IC0+IEFSQUJJQyBMRVRURVIgTk9PTgogICAgJ1x1MDY0NycgICAjICAweEU3IC0+IEFSQUJJQyBMRVRURVIgSEVICiAgICAnXHUwNjQ4JyAgICMgIDB4RTggLT4gQVJBQklDIExFVFRFUiBXQVcKICAgICdcdTA2NDknICAgIyAgMHhFOSAtPiBBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQQogICAgJ1x1MDY0YScgICAjICAweEVBIC0+IEFSQUJJQyBMRVRURVIgWUVICiAgICAnXHUwNjRiJyAgICMgIDB4RUIgLT4gQVJBQklDIEZBVEhBVEFOCiAgICAnXHUwNjRjJyAgICMgIDB4RUMgLT4gQVJBQklDIERBTU1BVEFOCiAgICAnXHUwNjRkJyAgICMgIDB4RUQgLT4gQVJBQklDIEtBU1JBVEFOCiAgICAnXHUwNjRlJyAgICMgIDB4RUUgLT4gQVJBQklDIEZBVEhBCiAgICAnXHUwNjRmJyAgICMgIDB4RUYgLT4gQVJBQklDIERBTU1BCiAgICAnXHUwNjUwJyAgICMgIDB4RjAgLT4gQVJBQklDIEtBU1JBCiAgICAnXHUwNjUxJyAgICMgIDB4RjEgLT4gQVJBQklDIFNIQUREQQogICAgJ1x1MDY1MicgICAjICAweEYyIC0+IEFSQUJJQyBTVUtVTgogICAgJ1x1MDY3ZScgICAjICAweEYzIC0+IEFSQUJJQyBMRVRURVIgUEVICiAgICAnXHUwNjc5JyAgICMgIDB4RjQgLT4gQVJBQklDIExFVFRFUiBUVEVICiAgICAnXHUwNjg2JyAgICMgIDB4RjUgLT4gQVJBQklDIExFVFRFUiBUQ0hFSAogICAgJ1x1MDZkNScgICAjICAweEY2IC0+IEFSQUJJQyBMRVRURVIgQUUKICAgICdcdTA2YTQnICAgIyAgMHhGNyAtPiBBUkFCSUMgTEVUVEVSIFZFSAogICAgJ1x1MDZhZicgICAjICAweEY4IC0+IEFSQUJJQyBMRVRURVIgR0FGCiAgICAnXHUwNjg4JyAgICMgIDB4RjkgLT4gQVJBQklDIExFVFRFUiBEREFMCiAgICAnXHUwNjkxJyAgICMgIDB4RkEgLT4gQVJBQklDIExFVFRFUiBSUkVICiAgICAneycgICAgICAgICMgIDB4RkIgLT4gTEVGVCBDVVJMWSBCUkFDS0VULCByaWdodC1sZWZ0CiAgICAnfCcgICAgICAgICMgIDB4RkMgLT4gVkVSVElDQUwgTElORSwgcmlnaHQtbGVmdAogICAgJ30nICAgICAgICAjICAweEZEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQsIHJpZ2h0LWxlZnQKICAgICdcdTA2OTgnICAgIyAgMHhGRSAtPiBBUkFCSUMgTEVUVEVSIEpFSAogICAgJ1x1MDZkMicgICAjICAweEZGIC0+IEFSQUJJQyBMRVRURVIgWUVIIEJBUlJFRQopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNW9KQqXZk1AACZNQAAFgAAAGVuY29kaW5ncy9tYWNfZ3JlZWsucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIG1hY19ncmVlayBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9BUFBMRS9HUkVFSy5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J21hYy1ncmVlaycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDInICAgICAjICAweDAyIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGInICAgICAjICAweDBCIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTEnICAgICAjICAweDExIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4YzQnICAgICAjICAweDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGI5JyAgICAgIyAgMHg4MSAtPiBTVVBFUlNDUklQVCBPTkUKICAgICdceGIyJyAgICAgIyAgMHg4MiAtPiBTVVBFUlNDUklQVCBUV08KICAgICdceGM5JyAgICAgIyAgMHg4MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGIzJyAgICAgIyAgMHg4NCAtPiBTVVBFUlNDUklQVCBUSFJFRQogICAgJ1x4ZDYnICAgICAjICAweDg1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGRjJyAgICAgIyAgMHg4NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMzg1JyAgICMgIDB4ODcgLT4gR1JFRUsgRElBTFlUSUtBIFRPTk9TCiAgICAnXHhlMCcgICAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTInICAgICAjICAweDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTQnICAgICAjICAweDhBIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMzg0JyAgICMgIDB4OEIgLT4gR1JFRUsgVE9OT1MKICAgICdceGE4JyAgICAgIyAgMHg4QyAtPiBESUFFUkVTSVMKICAgICdceGU3JyAgICAgIyAgMHg4RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU5JyAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlOCcgICAgICMgIDB4OEYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWEnICAgICAjICAweDkwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDkxIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhhMycgICAgICMgIDB4OTIgLT4gUE9VTkQgU0lHTgogICAgJ1x1MjEyMicgICAjICAweDkzIC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x4ZWUnICAgICAjICAweDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWYnICAgICAjICAweDk1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHUyMDIyJyAgICMgIDB4OTYgLT4gQlVMTEVUCiAgICAnXHhiZCcgICAgICMgIDB4OTcgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHUyMDMwJyAgICMgIDB4OTggLT4gUEVSIE1JTExFIFNJR04KICAgICdceGY0JyAgICAgIyAgMHg5OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4YTYnICAgICAjICAweDlCIC0+IEJST0tFTiBCQVIKICAgICdcdTIwYWMnICAgIyAgMHg5QyAtPiBFVVJPIFNJR04gIyBiZWZvcmUgTWFjIE9TIDkuMi4yLCB3YXMgU09GVCBIWVBIRU4KICAgICdceGY5JyAgICAgIyAgMHg5RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYicgICAgICMgIDB4OUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmYycgICAgICMgIDB4OUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdcdTIwMjAnICAgIyAgMHhBMCAtPiBEQUdHRVIKICAgICdcdTAzOTMnICAgIyAgMHhBMSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQogICAgJ1x1MDM5NCcgICAjICAweEEyIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBCiAgICAnXHUwMzk4JyAgICMgIDB4QTMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEEKICAgICdcdTAzOWInICAgIyAgMHhBNCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1EQQogICAgJ1x1MDM5ZScgICAjICAweEE1IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFhJCiAgICAnXHUwM2EwJyAgICMgIDB4QTYgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEkKICAgICdceGRmJyAgICAgIyAgMHhBNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgJ1x4YWUnICAgICAjICAweEE4IC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHUwM2EzJyAgICMgIDB4QUEgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKICAgICdcdTAzYWEnICAgIyAgMHhBQiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiAgICAnXHhhNycgICAgICMgIDB4QUMgLT4gU0VDVElPTiBTSUdOCiAgICAnXHUyMjYwJyAgICMgIDB4QUQgLT4gTk9UIEVRVUFMIFRPCiAgICAnXHhiMCcgICAgICMgIDB4QUUgLT4gREVHUkVFIFNJR04KICAgICdceGI3JyAgICAgIyAgMHhBRiAtPiBNSURETEUgRE9UCiAgICAnXHUwMzkxJyAgICMgIDB4QjAgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEKICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTIyNjQnICAgIyAgMHhCMiAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTIyNjUnICAgIyAgMHhCMyAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgICdceGE1JyAgICAgIyAgMHhCNCAtPiBZRU4gU0lHTgogICAgJ1x1MDM5MicgICAjICAweEI1IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEJFVEEKICAgICdcdTAzOTUnICAgIyAgMHhCNiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OCiAgICAnXHUwMzk2JyAgICMgIDB4QjcgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQQogICAgJ1x1MDM5NycgICAjICAweEI4IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQQogICAgJ1x1MDM5OScgICAjICAweEI5IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEKICAgICdcdTAzOWEnICAgIyAgMHhCQSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQQogICAgJ1x1MDM5YycgICAjICAweEJCIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE1VCiAgICAnXHUwM2E2JyAgICMgIDB4QkMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCiAgICAnXHUwM2FiJyAgICMgIDB4QkQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQQogICAgJ1x1MDNhOCcgICAjICAweEJFIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFBTSQogICAgJ1x1MDNhOScgICAjICAweEJGIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAnXHUwM2FjJyAgICMgIDB4QzAgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKICAgICdcdTAzOWQnICAgIyAgMHhDMSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBOVQogICAgJ1x4YWMnICAgICAjICAweEMyIC0+IE5PVCBTSUdOCiAgICAnXHUwMzlmJyAgICMgIDB4QzMgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTgogICAgJ1x1MDNhMScgICAjICAweEM0IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFJITwogICAgJ1x1MjI0OCcgICAjICAweEM1IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x1MDNhNCcgICAjICAweEM2IC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIFRBVQogICAgJ1x4YWInICAgICAjICAweEM3IC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4QzggLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDI2JyAgICMgIDB4QzkgLT4gSE9SSVpPTlRBTCBFTExJUFNJUwogICAgJ1x4YTAnICAgICAjICAweENBIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUwM2E1JyAgICMgIDB4Q0IgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTgogICAgJ1x1MDNhNycgICAjICAweENDIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIENISQogICAgJ1x1MDM4NicgICAjICAweENEIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKICAgICdcdTAzODgnICAgIyAgMHhDRSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1MKICAgICdcdTAxNTMnICAgIyAgMHhDRiAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQogICAgJ1x1MjAxMycgICAjICAweEQwIC0+IEVOIERBU0gKICAgICdcdTIwMTUnICAgIyAgMHhEMSAtPiBIT1JJWk9OVEFMIEJBUgogICAgJ1x1MjAxYycgICAjICAweEQyIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4RDMgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDE4JyAgICMgIDB4RDQgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHhENSAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGY3JyAgICAgIyAgMHhENiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUwMzg5JyAgICMgIDB4RDcgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKICAgICdcdTAzOGEnICAgIyAgMHhEOCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVE9OT1MKICAgICdcdTAzOGMnICAgIyAgMHhEOSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgICdcdTAzOGUnICAgIyAgMHhEQSAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKICAgICdcdTAzYWQnICAgIyAgMHhEQiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TCiAgICAnXHUwM2FlJyAgICMgIDB4REMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TCiAgICAnXHUwM2FmJyAgICMgIDB4REQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUwogICAgJ1x1MDNjYycgICAjICAweERFIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKICAgICdcdTAzOGYnICAgIyAgMHhERiAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiAgICAnXHUwM2NkJyAgICMgIDB4RTAgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUwogICAgJ1x1MDNiMScgICAjICAweEUxIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQQogICAgJ1x1MDNiMicgICAjICAweEUyIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBCRVRBCiAgICAnXHUwM2M4JyAgICMgIDB4RTMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBTSQogICAgJ1x1MDNiNCcgICAjICAweEU0IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBERUxUQQogICAgJ1x1MDNiNScgICAjICAweEU1IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAnXHUwM2M2JyAgICMgIDB4RTYgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBISQogICAgJ1x1MDNiMycgICAjICAweEU3IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBHQU1NQQogICAgJ1x1MDNiNycgICAjICAweEU4IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBFVEEKICAgICdcdTAzYjknICAgIyAgMHhFOSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQQogICAgJ1x1MDNiZScgICAjICAweEVBIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBYSQogICAgJ1x1MDNiYScgICAjICAweEVCIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBLQVBQQQogICAgJ1x1MDNiYicgICAjICAweEVDIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBMQU1EQQogICAgJ1x1MDNiYycgICAjICAweEVEIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBNVQogICAgJ1x1MDNiZCcgICAjICAweEVFIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBOVQogICAgJ1x1MDNiZicgICAjICAweEVGIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OCiAgICAnXHUwM2MwJyAgICMgIDB4RjAgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAnXHUwM2NlJyAgICMgIDB4RjEgLT4gR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1MKICAgICdcdTAzYzEnICAgIyAgMHhGMiAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUkhPCiAgICAnXHUwM2MzJyAgICMgIDB4RjMgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAnXHUwM2M0JyAgICMgIDB4RjQgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFRBVQogICAgJ1x1MDNiOCcgICAjICAweEY1IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBUSEVUQQogICAgJ1x1MDNjOScgICAjICAweEY2IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQQogICAgJ1x1MDNjMicgICAjICAweEY3IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQogICAgJ1x1MDNjNycgICAjICAweEY4IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBDSEkKICAgICdcdTAzYzUnICAgIyAgMHhGOSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTgogICAgJ1x1MDNiNicgICAjICAweEZBIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBaRVRBCiAgICAnXHUwM2NhJyAgICMgIDB4RkIgLT4gR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EKICAgICdcdTAzY2InICAgIyAgMHhGQyAtPiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQQogICAgJ1x1MDM5MCcgICAjICAweEZEIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUwogICAgJ1x1MDNiMCcgICAjICAweEZFIC0+IEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBUT05PUwogICAgJ1x4YWQnICAgICAjICAweEZGIC0+IFNPRlQgSFlQSEVOICMgYmVmb3JlIE1hYyBPUyA5LjIuMiwgd2FzIHVuZGVmaW5lZAopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNW0kTxELo0AAC6NAAAGAAAAGVuY29kaW5ncy9tYWNfaWNlbGFuZC5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgbWFjX2ljZWxhbmQgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvQVBQTEUvSUNFTEFORC5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J21hYy1pY2VsYW5kJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTknICAgICAjICAweDE5IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHhjNCcgICAgICMgIDB4ODAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzUnICAgICAjICAweDgxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjNycgICAgICMgIDB4ODIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGM5JyAgICAgIyAgMHg4MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGQxJyAgICAgIyAgMHg4NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGQ2JyAgICAgIyAgMHg4NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkYycgICAgICMgIDB4ODYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTEnICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUwJyAgICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhlMicgICAgICMgIDB4ODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlNCcgICAgICMgIDB4OEEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGUzJyAgICAgIyAgMHg4QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlNScgICAgICMgIDB4OEMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNycgICAgICMgIDB4OEQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlOScgICAgICMgIDB4OEUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZTgnICAgICAjICAweDhGIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGVhJyAgICAgIyAgMHg5MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHg5MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWQnICAgICAjICAweDkyIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVjJyAgICAgIyAgMHg5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhlZScgICAgICMgIDB4OTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlZicgICAgICMgIDB4OTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGYxJyAgICAgIyAgMHg5NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhmMycgICAgICMgIDB4OTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZjInICAgICAjICAweDk4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGY0JyAgICAgIyAgMHg5OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjUnICAgICAjICAweDlCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGZhJyAgICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmOScgICAgICMgIDB4OUQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZmInICAgICAjICAweDlFIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweDlGIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhkZCcgICAgICMgIDB4QTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhiMCcgICAgICMgIDB4QTEgLT4gREVHUkVFIFNJR04KICAgICdceGEyJyAgICAgIyAgMHhBMiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHhhNycgICAgICMgIDB4QTQgLT4gU0VDVElPTiBTSUdOCiAgICAnXHUyMDIyJyAgICMgIDB4QTUgLT4gQlVMTEVUCiAgICAnXHhiNicgICAgICMgIDB4QTYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhkZicgICAgICMgIDB4QTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgICdceGFlJyAgICAgIyAgMHhBOCAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MjEyMicgICAjICAweEFBIC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x4YjQnICAgICAjICAweEFCIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4YTgnICAgICAjICAweEFDIC0+IERJQUVSRVNJUwogICAgJ1x1MjI2MCcgICAjICAweEFEIC0+IE5PVCBFUVVBTCBUTwogICAgJ1x4YzYnICAgICAjICAweEFFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCiAgICAnXHhkOCcgICAgICMgIDB4QUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x1MjIxZScgICAjICAweEIwIC0+IElORklOSVRZCiAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCiAgICAnXHUyMjY0JyAgICMgIDB4QjIgLT4gTEVTUy1USEFOIE9SIEVRVUFMIFRPCiAgICAnXHUyMjY1JyAgICMgIDB4QjMgLT4gR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCiAgICAnXHhhNScgICAgICMgIDB4QjQgLT4gWUVOIFNJR04KICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCiAgICAnXHUyMjAyJyAgICMgIDB4QjYgLT4gUEFSVElBTCBESUZGRVJFTlRJQUwKICAgICdcdTIyMTEnICAgIyAgMHhCNyAtPiBOLUFSWSBTVU1NQVRJT04KICAgICdcdTIyMGYnICAgIyAgMHhCOCAtPiBOLUFSWSBQUk9EVUNUCiAgICAnXHUwM2MwJyAgICMgIDB4QjkgLT4gR1JFRUsgU01BTEwgTEVUVEVSIFBJCiAgICAnXHUyMjJiJyAgICMgIDB4QkEgLT4gSU5URUdSQUwKICAgICdceGFhJyAgICAgIyAgMHhCQiAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x4YmEnICAgICAjICAweEJDIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgogICAgJ1x1MDNhOScgICAjICAweEJEIC0+IEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBCiAgICAnXHhlNicgICAgICMgIDB4QkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCiAgICAnXHhmOCcgICAgICMgIDB4QkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdceGJmJyAgICAgIyAgMHhDMCAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCiAgICAnXHhhMScgICAgICMgIDB4QzEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwogICAgJ1x4YWMnICAgICAjICAweEMyIC0+IE5PVCBTSUdOCiAgICAnXHUyMjFhJyAgICMgIDB4QzMgLT4gU1FVQVJFIFJPT1QKICAgICdcdTAxOTInICAgIyAgMHhDNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdcdTIyNDgnICAgIyAgMHhDNSAtPiBBTE1PU1QgRVFVQUwgVE8KICAgICdcdTIyMDYnICAgIyAgMHhDNiAtPiBJTkNSRU1FTlQKICAgICdceGFiJyAgICAgIyAgMHhDNyAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YmInICAgICAjICAweEM4IC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAyNicgICAjICAweEM5IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKICAgICdceGEwJyAgICAgIyAgMHhDQSAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x4YzAnICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4YzMnICAgICAjICAweENDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZDUnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x1MDE1MicgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTElHQVRVUkUgT0UKICAgICdcdTAxNTMnICAgIyAgMHhDRiAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQogICAgJ1x1MjAxMycgICAjICAweEQwIC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHhEMSAtPiBFTSBEQVNICiAgICAnXHUyMDFjJyAgICMgIDB4RDIgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWQnICAgIyAgMHhEMyAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTgnICAgIyAgMHhENCAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweEQ1IC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4ZjcnICAgICAjICAweEQ2IC0+IERJVklTSU9OIFNJR04KICAgICdcdTI1Y2EnICAgIyAgMHhENyAtPiBMT1pFTkdFCiAgICAnXHhmZicgICAgICMgIDB4RDggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxNzgnICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAnXHUyMDQ0JyAgICMgIDB4REEgLT4gRlJBQ1RJT04gU0xBU0gKICAgICdcdTIwYWMnICAgIyAgMHhEQiAtPiBFVVJPIFNJR04KICAgICdceGQwJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEgKICAgICdceGYwJyAgICAgIyAgMHhERCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRVRICiAgICAnXHhkZScgICAgICMgIDB4REUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4KICAgICdceGZlJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4KICAgICdceGZkJyAgICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhiNycgICAgICMgIDB4RTEgLT4gTUlERExFIERPVAogICAgJ1x1MjAxYScgICAjICAweEUyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZScgICAjICAweEUzIC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAzMCcgICAjICAweEU0IC0+IFBFUiBNSUxMRSBTSUdOCiAgICAnXHhjMicgICAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNhJyAgICAgIyAgMHhFNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4YzEnICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4Y2InICAgICAjICAweEU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGM4JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGNkJyAgICAgIyAgMHhFQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGNlJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2YnICAgICAjICAweEVDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGNjJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGQzJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGQ0JyAgICAgIyAgMHhFRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x1ZjhmZicgICAjICAweEYwIC0+IEFwcGxlIGxvZ28KICAgICdceGQyJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGRhJyAgICAgIyAgMHhGMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGRiJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZDknICAgICAjICAweEY0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x1MDEzMScgICAjICAweEY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkKICAgICdcdTAyYzYnICAgIyAgMHhGNiAtPiBNT0RJRklFUiBMRVRURVIgQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdcdTAyZGMnICAgIyAgMHhGNyAtPiBTTUFMTCBUSUxERQogICAgJ1x4YWYnICAgICAjICAweEY4IC0+IE1BQ1JPTgogICAgJ1x1MDJkOCcgICAjICAweEY5IC0+IEJSRVZFCiAgICAnXHUwMmQ5JyAgICMgIDB4RkEgLT4gRE9UIEFCT1ZFCiAgICAnXHUwMmRhJyAgICMgIDB4RkIgLT4gUklORyBBQk9WRQogICAgJ1x4YjgnICAgICAjICAweEZDIC0+IENFRElMTEEKICAgICdcdTAyZGQnICAgIyAgMHhGRCAtPiBET1VCTEUgQUNVVEUgQUNDRU5UCiAgICAnXHUwMmRiJyAgICMgIDB4RkUgLT4gT0dPTkVLCiAgICAnXHUwMmM3JyAgICMgIDB4RkYgLT4gQ0FST04KKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVqMfJC4mNwAAJjcAABcAAABlbmNvZGluZ3MvbWFjX2xhdGluMi5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgbWFjX2xhdGluMiBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9NSUNTRlQvTUFDL0xBVElOMi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgpXcml0dGVuIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyAobWFsQGxlbWJ1cmcuY29tKS4KCihjKSBDb3B5cmlnaHQgQ05SSSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gTk8gV0FSUkFOVFkuCihjKSBDb3B5cmlnaHQgMjAwMCBHdWlkbyB2YW4gUm9zc3VtLgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdtYWMtbGF0aW4yJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQogICAgJ1x4YzQnICAgICAjICAweDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMDAnICAgIyAgMHg4MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OCiAgICAnXHUwMTAxJyAgICMgIDB4ODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST04KICAgICdceGM5JyAgICAgIyAgMHg4MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdcdTAxMDQnICAgIyAgMHg4NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCiAgICAnXHhkNicgICAgICMgIDB4ODUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZGMnICAgICAjICAweDg2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGUxJyAgICAgIyAgMHg4NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHUwMTA1JyAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKICAgICdcdTAxMGMnICAgIyAgMHg4OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KICAgICdceGU0JyAgICAgIyAgMHg4QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDEwZCcgICAjICAweDhCIC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KICAgICdcdTAxMDYnICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKICAgICdcdTAxMDcnICAgIyAgMHg4RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEFDVVRFCiAgICAnXHhlOScgICAgICMgIDB4OEUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x1MDE3OScgICAjICAweDhGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQogICAgJ1x1MDE3YScgICAjICAweDkwIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEUKICAgICdcdTAxMGUnICAgIyAgMHg5MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST04KICAgICdceGVkJyAgICAgIyAgMHg5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHUwMTBmJyAgICMgIDB4OTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgogICAgJ1x1MDExMicgICAjICAweDk0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KICAgICdcdTAxMTMnICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgogICAgJ1x1MDExNicgICAjICAweDk2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKICAgICdceGYzJyAgICAgIyAgMHg5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHUwMTE3JyAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKICAgICdceGY0JyAgICAgIyAgMHg5OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjUnICAgICAjICAweDlCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGZhJyAgICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHUwMTFhJyAgICMgIDB4OUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OCiAgICAnXHUwMTFiJyAgICMgIDB4OUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDQVJPTgogICAgJ1x4ZmMnICAgICAjICAweDlGIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUyMDIwJyAgICMgIDB4QTAgLT4gREFHR0VSCiAgICAnXHhiMCcgICAgICMgIDB4QTEgLT4gREVHUkVFIFNJR04KICAgICdcdTAxMTgnICAgIyAgMHhBMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCiAgICAnXHhhMycgICAgICMgIDB4QTMgLT4gUE9VTkQgU0lHTgogICAgJ1x4YTcnICAgICAjICAweEE0IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MjAyMicgICAjICAweEE1IC0+IEJVTExFVAogICAgJ1x4YjYnICAgICAjICAweEE2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4ZGYnICAgICAjICAweEE3IC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHhhZScgICAgICMgIDB4QTggLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTIxMjInICAgIyAgMHhBQSAtPiBUUkFERSBNQVJLIFNJR04KICAgICdcdTAxMTknICAgIyAgMHhBQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSwogICAgJ1x4YTgnICAgICAjICAweEFDIC0+IERJQUVSRVNJUwogICAgJ1x1MjI2MCcgICAjICAweEFEIC0+IE5PVCBFUVVBTCBUTwogICAgJ1x1MDEyMycgICAjICAweEFFIC0+IExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQogICAgJ1x1MDEyZScgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBPR09ORUsKICAgICdcdTAxMmYnICAgIyAgMHhCMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSwogICAgJ1x1MDEyYScgICAjICAweEIxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KICAgICdcdTIyNjQnICAgIyAgMHhCMiAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTIyNjUnICAgIyAgMHhCMyAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTAxMmInICAgIyAgMHhCNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgogICAgJ1x1MDEzNicgICAjICAweEI1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCiAgICAnXHUyMjAyJyAgICMgIDB4QjYgLT4gUEFSVElBTCBESUZGRVJFTlRJQUwKICAgICdcdTIyMTEnICAgIyAgMHhCNyAtPiBOLUFSWSBTVU1NQVRJT04KICAgICdcdTAxNDInICAgIyAgMHhCOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x1MDEzYicgICAjICAweEI5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiAgICAnXHUwMTNjJyAgICMgIDB4QkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiAgICAnXHUwMTNkJyAgICMgIDB4QkIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENBUk9OCiAgICAnXHUwMTNlJyAgICMgIDB4QkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTgogICAgJ1x1MDEzOScgICAjICAweEJEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQogICAgJ1x1MDEzYScgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQUNVVEUKICAgICdcdTAxNDUnICAgIyAgMHhCRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0VESUxMQQogICAgJ1x1MDE0NicgICAjICAweEMwIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQQogICAgJ1x1MDE0MycgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURQogICAgJ1x4YWMnICAgICAjICAweEMyIC0+IE5PVCBTSUdOCiAgICAnXHUyMjFhJyAgICMgIDB4QzMgLT4gU1FVQVJFIFJPT1QKICAgICdcdTAxNDQnICAgIyAgMHhDNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEFDVVRFCiAgICAnXHUwMTQ3JyAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCiAgICAnXHUyMjA2JyAgICMgIDB4QzYgLT4gSU5DUkVNRU5UCiAgICAnXHhhYicgICAgICMgIDB4QzcgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgIyAgMHhDOCAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjYnICAgIyAgMHhDOSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHhhMCcgICAgICMgIDB4Q0EgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdcdTAxNDgnICAgIyAgMHhDQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OCiAgICAnXHUwMTUwJyAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQogICAgJ1x4ZDUnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x1MDE1MScgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCiAgICAnXHUwMTRjJyAgICMgIDB4Q0YgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgogICAgJ1x1MjAxMycgICAjICAweEQwIC0+IEVOIERBU0gKICAgICdcdTIwMTQnICAgIyAgMHhEMSAtPiBFTSBEQVNICiAgICAnXHUyMDFjJyAgICMgIDB4RDIgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWQnICAgIyAgMHhEMyAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTgnICAgIyAgMHhENCAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweEQ1IC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4ZjcnICAgICAjICAweEQ2IC0+IERJVklTSU9OIFNJR04KICAgICdcdTI1Y2EnICAgIyAgMHhENyAtPiBMT1pFTkdFCiAgICAnXHUwMTRkJyAgICMgIDB4RDggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KICAgICdcdTAxNTQnICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQUNVVEUKICAgICdcdTAxNTUnICAgIyAgMHhEQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEFDVVRFCiAgICAnXHUwMTU4JyAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCiAgICAnXHUyMDM5JyAgICMgIDB4REMgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwM2EnICAgIyAgMHhERCAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxNTknICAgIyAgMHhERSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCiAgICAnXHUwMTU2JyAgICMgIDB4REYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENFRElMTEEKICAgICdcdTAxNTcnICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKICAgICdcdTAxNjAnICAgIyAgMHhFMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdcdTIwMWEnICAgIyAgMHhFMiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWUnICAgIyAgMHhFMyAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxNjEnICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUwMTVhJyAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFCiAgICAnXHUwMTViJyAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQogICAgJ1x4YzEnICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x1MDE2NCcgICAjICAweEU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTgogICAgJ1x1MDE2NScgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST04KICAgICdceGNkJyAgICAgIyAgMHhFQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdcdTAxN2QnICAgIyAgMHhFQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST04KICAgICdcdTAxN2UnICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAnXHUwMTZhJyAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgogICAgJ1x4ZDMnICAgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDQnICAgICAjICAweEVGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHUwMTZiJyAgICMgIDB4RjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KICAgICdcdTAxNmUnICAgIyAgMHhGMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZGEnICAgICAjICAweEYyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x1MDE2ZicgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQogICAgJ1x1MDE3MCcgICAjICAweEY0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKICAgICdcdTAxNzEnICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQogICAgJ1x1MDE3MicgICAjICAweEY2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBPR09ORUsKICAgICdcdTAxNzMnICAgIyAgMHhGNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSwogICAgJ1x4ZGQnICAgICAjICAweEY4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgJ1x4ZmQnICAgICAjICAweEY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdcdTAxMzcnICAgIyAgMHhGQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEEKICAgICdcdTAxN2InICAgIyAgMHhGQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUwMTQxJyAgICMgIDB4RkMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQogICAgJ1x1MDE3YycgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiAgICAnXHUwMTIyJyAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKICAgICdcdTAyYzcnICAgIyAgMHhGRiAtPiBDQVJPTgopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWojADb6g0AACoNAAAFgAAAGVuY29kaW5ncy9tYWNfcm9tYW4ucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIG1hY19yb21hbiBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9BUFBMRS9ST01BTi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCgoiIiIjIgoKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J21hYy1yb21hbicsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDInICAgICAjICAweDAyIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDUnICAgICAjICAweDA1IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGInICAgICAjICAweDBCIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTEnICAgICAjICAweDExIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4YzQnICAgICAjICAweDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGM1JyAgICAgIyAgMHg4MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4YzcnICAgICAjICAweDgyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhjOScgICAgICMgIDB4ODMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhkMScgICAgICMgIDB4ODQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhkNicgICAgICMgIDB4ODUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZGMnICAgICAjICAweDg2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdceGUxJyAgICAgIyAgMHg4NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlMCcgICAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4ZTInICAgICAjICAweDg5IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZTQnICAgICAjICAweDhBIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhlMycgICAgICMgIDB4OEIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZTUnICAgICAjICAweDhDIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQogICAgJ1x4ZTcnICAgICAjICAweDhEIC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4ZTknICAgICAjICAweDhFIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGU4JyAgICAgIyAgMHg4RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhlYScgICAgICMgIDB4OTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlYicgICAgICMgIDB4OTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKICAgICdceGVkJyAgICAgIyAgMHg5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlYycgICAgICMgIDB4OTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZWUnICAgICAjICAweDk0IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWYnICAgICAjICAweDk1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhmMScgICAgICMgIDB4OTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZjMnICAgICAjICAweDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKICAgICdceGYyJyAgICAgIyAgMHg5OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhmNCcgICAgICMgIDB4OTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNicgICAgICMgIDB4OUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGY1JyAgICAgIyAgMHg5QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhmYScgICAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZjknICAgICAjICAweDlEIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdceGZiJyAgICAgIyAgMHg5RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGZjJyAgICAgIyAgMHg5RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MjAyMCcgICAjICAweEEwIC0+IERBR0dFUgogICAgJ1x4YjAnICAgICAjICAweEExIC0+IERFR1JFRSBTSUdOCiAgICAnXHhhMicgICAgICMgIDB4QTIgLT4gQ0VOVCBTSUdOCiAgICAnXHhhMycgICAgICMgIDB4QTMgLT4gUE9VTkQgU0lHTgogICAgJ1x4YTcnICAgICAjICAweEE0IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MjAyMicgICAjICAweEE1IC0+IEJVTExFVAogICAgJ1x4YjYnICAgICAjICAweEE2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4ZGYnICAgICAjICAweEE3IC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCiAgICAnXHhhZScgICAgICMgIDB4QTggLT4gUkVHSVNURVJFRCBTSUdOCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTIxMjInICAgIyAgMHhBQSAtPiBUUkFERSBNQVJLIFNJR04KICAgICdceGI0JyAgICAgIyAgMHhBQiAtPiBBQ1VURSBBQ0NFTlQKICAgICdceGE4JyAgICAgIyAgMHhBQyAtPiBESUFFUkVTSVMKICAgICdcdTIyNjAnICAgIyAgMHhBRCAtPiBOT1QgRVFVQUwgVE8KICAgICdceGM2JyAgICAgIyAgMHhBRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQogICAgJ1x4ZDgnICAgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKICAgICdcdTIyMWUnICAgIyAgMHhCMCAtPiBJTkZJTklUWQogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x1MjI2NCcgICAjICAweEIyIC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjI2NScgICAjICAweEIzIC0+IEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x4YTUnICAgICAjICAweEI0IC0+IFlFTiBTSUdOCiAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgogICAgJ1x1MjIwMicgICAjICAweEI2IC0+IFBBUlRJQUwgRElGRkVSRU5USUFMCiAgICAnXHUyMjExJyAgICMgIDB4QjcgLT4gTi1BUlkgU1VNTUFUSU9OCiAgICAnXHUyMjBmJyAgICMgIDB4QjggLT4gTi1BUlkgUFJPRFVDVAogICAgJ1x1MDNjMCcgICAjICAweEI5IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgJ1x1MjIyYicgICAjICAweEJBIC0+IElOVEVHUkFMCiAgICAnXHhhYScgICAgICMgIDB4QkIgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJhJyAgICAgIyAgMHhCQyAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdcdTAzYTknICAgIyAgMHhCRCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgJ1x4ZTYnICAgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBBRQogICAgJ1x4ZjgnICAgICAjICAweEJGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhiZicgICAgICMgIDB4QzAgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgJ1x4YTEnICAgICAjICAweEMxIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgICdceGFjJyAgICAgIyAgMHhDMiAtPiBOT1QgU0lHTgogICAgJ1x1MjIxYScgICAjICAweEMzIC0+IFNRVUFSRSBST09UCiAgICAnXHUwMTkyJyAgICMgIDB4QzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiAgICAnXHUyMjQ4JyAgICMgIDB4QzUgLT4gQUxNT1NUIEVRVUFMIFRPCiAgICAnXHUyMjA2JyAgICMgIDB4QzYgLT4gSU5DUkVNRU5UCiAgICAnXHhhYicgICAgICMgIDB4QzcgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGJiJyAgICAgIyAgMHhDOCAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjYnICAgIyAgMHhDOSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHhhMCcgICAgICMgIDB4Q0EgLT4gTk8tQlJFQUsgU1BBQ0UKICAgICdceGMwJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGMzJyAgICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGQ1JyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdcdTAxNTInICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCiAgICAnXHUwMTUzJyAgICMgIDB4Q0YgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKICAgICdcdTIwMTMnICAgIyAgMHhEMCAtPiBFTiBEQVNICiAgICAnXHUyMDE0JyAgICMgIDB4RDEgLT4gRU0gREFTSAogICAgJ1x1MjAxYycgICAjICAweEQyIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4RDMgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDE4JyAgICMgIDB4RDQgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMTknICAgIyAgMHhENSAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdceGY3JyAgICAgIyAgMHhENiAtPiBESVZJU0lPTiBTSUdOCiAgICAnXHUyNWNhJyAgICMgIDB4RDcgLT4gTE9aRU5HRQogICAgJ1x4ZmYnICAgICAjICAweEQ4IC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiAgICAnXHUwMTc4JyAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MjA0NCcgICAjICAweERBIC0+IEZSQUNUSU9OIFNMQVNICiAgICAnXHUyMGFjJyAgICMgIDB4REIgLT4gRVVSTyBTSUdOCiAgICAnXHUyMDM5JyAgICMgIDB4REMgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwM2EnICAgIyAgMHhERCAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdWZiMDEnICAgIyAgMHhERSAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBGSQogICAgJ1x1ZmIwMicgICAjICAweERGIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIEZMCiAgICAnXHUyMDIxJyAgICMgIDB4RTAgLT4gRE9VQkxFIERBR0dFUgogICAgJ1x4YjcnICAgICAjICAweEUxIC0+IE1JRERMRSBET1QKICAgICdcdTIwMWEnICAgIyAgMHhFMiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWUnICAgIyAgMHhFMyAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMzAnICAgIyAgMHhFNCAtPiBQRVIgTUlMTEUgU0lHTgogICAgJ1x4YzInICAgICAjICAweEU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjYScgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGMxJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGNiJyAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhjOCcgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhjZCcgICAgICMgIDB4RUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhjZScgICAgICMgIDB4RUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHhFQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhjYycgICAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhkMycgICAgICMgIDB4RUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhkNCcgICAgICMgIDB4RUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdcdWY4ZmYnICAgIyAgMHhGMCAtPiBBcHBsZSBsb2dvCiAgICAnXHhkMicgICAgICMgIDB4RjEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhkYScgICAgICMgIDB4RjIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4RjMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGQ5JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdcdTAxMzEnICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCiAgICAnXHUwMmM2JyAgICMgIDB4RjYgLT4gTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCiAgICAnXHUwMmRjJyAgICMgIDB4RjcgLT4gU01BTEwgVElMREUKICAgICdceGFmJyAgICAgIyAgMHhGOCAtPiBNQUNST04KICAgICdcdTAyZDgnICAgIyAgMHhGOSAtPiBCUkVWRQogICAgJ1x1MDJkOScgICAjICAweEZBIC0+IERPVCBBQk9WRQogICAgJ1x1MDJkYScgICAjICAweEZCIC0+IFJJTkcgQUJPVkUKICAgICdceGI4JyAgICAgIyAgMHhGQyAtPiBDRURJTExBCiAgICAnXHUwMmRkJyAgICMgIDB4RkQgLT4gRE9VQkxFIEFDVVRFIEFDQ0VOVAogICAgJ1x1MDJkYicgICAjICAweEZFIC0+IE9HT05FSwogICAgJ1x1MDJjNycgICAjICAweEZGIC0+IENBUk9OCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1ZiqPPWXTUAAF01AAAZAAAAZW5jb2RpbmdzL21hY19yb21hbmlhbi5weSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgbWFjX3JvbWFuaWFuIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL0FQUExFL1JPTUFOSUFOLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nbWFjLXJvbWFuaWFuJywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDcnICAgICAjICAweDA3IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTknICAgICAjICAweDE5IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHhjNCcgICAgICMgIDB4ODAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzUnICAgICAjICAweDgxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjNycgICAgICMgIDB4ODIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGM5JyAgICAgIyAgMHg4MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGQxJyAgICAgIyAgMHg4NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGQ2JyAgICAgIyAgMHg4NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhkYycgICAgICMgIDB4ODYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTEnICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGUwJyAgICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhlMicgICAgICMgIDB4ODkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlNCcgICAgICMgIDB4OEEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKICAgICdceGUzJyAgICAgIyAgMHg4QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhlNScgICAgICMgIDB4OEMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNycgICAgICMgIDB4OEQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlOScgICAgICMgIDB4OEUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZTgnICAgICAjICAweDhGIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKICAgICdceGVhJyAgICAgIyAgMHg5MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHg5MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWQnICAgICAjICAweDkyIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKICAgICdceGVjJyAgICAgIyAgMHg5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhlZScgICAgICMgIDB4OTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlZicgICAgICMgIDB4OTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGYxJyAgICAgIyAgMHg5NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiAgICAnXHhmMycgICAgICMgIDB4OTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZjInICAgICAjICAweDk4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGY0JyAgICAgIyAgMHg5OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdceGY2JyAgICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjUnICAgICAjICAweDlCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKICAgICdceGZhJyAgICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhmOScgICAgICMgIDB4OUQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZmInICAgICAjICAweDlFIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZmMnICAgICAjICAweDlGIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHUyMDIwJyAgICMgIDB4QTAgLT4gREFHR0VSCiAgICAnXHhiMCcgICAgICMgIDB4QTEgLT4gREVHUkVFIFNJR04KICAgICdceGEyJyAgICAgIyAgMHhBMiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHhhNycgICAgICMgIDB4QTQgLT4gU0VDVElPTiBTSUdOCiAgICAnXHUyMDIyJyAgICMgIDB4QTUgLT4gQlVMTEVUCiAgICAnXHhiNicgICAgICMgIDB4QTYgLT4gUElMQ1JPVyBTSUdOCiAgICAnXHhkZicgICAgICMgIDB4QTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKICAgICdceGFlJyAgICAgIyAgMHhBOCAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgogICAgJ1x1MjEyMicgICAjICAweEFBIC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x4YjQnICAgICAjICAweEFCIC0+IEFDVVRFIEFDQ0VOVAogICAgJ1x4YTgnICAgICAjICAweEFDIC0+IERJQUVSRVNJUwogICAgJ1x1MjI2MCcgICAjICAweEFEIC0+IE5PVCBFUVVBTCBUTwogICAgJ1x1MDEwMicgICAjICAweEFFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRQogICAgJ1x1MDIxOCcgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDT01NQSBCRUxPVyAjIGZvciBVbmljb2RlIDMuMCBhbmQgbGF0ZXIKICAgICdcdTIyMWUnICAgIyAgMHhCMCAtPiBJTkZJTklUWQogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x1MjI2NCcgICAjICAweEIyIC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x1MjI2NScgICAjICAweEIzIC0+IEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwogICAgJ1x4YTUnICAgICAjICAweEI0IC0+IFlFTiBTSUdOCiAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgogICAgJ1x1MjIwMicgICAjICAweEI2IC0+IFBBUlRJQUwgRElGRkVSRU5USUFMCiAgICAnXHUyMjExJyAgICMgIDB4QjcgLT4gTi1BUlkgU1VNTUFUSU9OCiAgICAnXHUyMjBmJyAgICMgIDB4QjggLT4gTi1BUlkgUFJPRFVDVAogICAgJ1x1MDNjMCcgICAjICAweEI5IC0+IEdSRUVLIFNNQUxMIExFVFRFUiBQSQogICAgJ1x1MjIyYicgICAjICAweEJBIC0+IElOVEVHUkFMCiAgICAnXHhhYScgICAgICMgIDB4QkIgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGJhJyAgICAgIyAgMHhCQyAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdcdTAzYTknICAgIyAgMHhCRCAtPiBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQogICAgJ1x1MDEwMycgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUKICAgICdcdTAyMTknICAgIyAgMHhCRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENPTU1BIEJFTE9XICMgZm9yIFVuaWNvZGUgMy4wIGFuZCBsYXRlcgogICAgJ1x4YmYnICAgICAjICAweEMwIC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdceGExJyAgICAgIyAgMHhDMSAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QzIgLT4gTk9UIFNJR04KICAgICdcdTIyMWEnICAgIyAgMHhDMyAtPiBTUVVBUkUgUk9PVAogICAgJ1x1MDE5MicgICAjICAweEM0IC0+IExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgJ1x1MjI0OCcgICAjICAweEM1IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x1MjIwNicgICAjICAweEM2IC0+IElOQ1JFTUVOVAogICAgJ1x4YWInICAgICAjICAweEM3IC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4QzggLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDI2JyAgICMgIDB4QzkgLT4gSE9SSVpPTlRBTCBFTExJUFNJUwogICAgJ1x4YTAnICAgICAjICAweENBIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHhjMCcgICAgICMgIDB4Q0IgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMycgICAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhkNScgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHUwMTUyJyAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQogICAgJ1x1MDE1MycgICAjICAweENGIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIE9FCiAgICAnXHUyMDEzJyAgICMgIDB4RDAgLT4gRU4gREFTSAogICAgJ1x1MjAxNCcgICAjICAweEQxIC0+IEVNIERBU0gKICAgICdcdTIwMWMnICAgIyAgMHhEMiAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweEQzIC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOCcgICAjICAweEQ0IC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDE5JyAgICMgIDB4RDUgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhmNycgICAgICMgIDB4RDYgLT4gRElWSVNJT04gU0lHTgogICAgJ1x1MjVjYScgICAjICAweEQ3IC0+IExPWkVOR0UKICAgICdceGZmJyAgICAgIyAgMHhEOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE3OCcgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdcdTIwNDQnICAgIyAgMHhEQSAtPiBGUkFDVElPTiBTTEFTSAogICAgJ1x1MjBhYycgICAjICAweERCIC0+IEVVUk8gU0lHTgogICAgJ1x1MjAzOScgICAjICAweERDIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDNhJyAgICMgIDB4REQgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUwMjFhJyAgICMgIDB4REUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENPTU1BIEJFTE9XICMgZm9yIFVuaWNvZGUgMy4wIGFuZCBsYXRlcgogICAgJ1x1MDIxYicgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ09NTUEgQkVMT1cgIyBmb3IgVW5pY29kZSAzLjAgYW5kIGxhdGVyCiAgICAnXHUyMDIxJyAgICMgIDB4RTAgLT4gRE9VQkxFIERBR0dFUgogICAgJ1x4YjcnICAgICAjICAweEUxIC0+IE1JRERMRSBET1QKICAgICdcdTIwMWEnICAgIyAgMHhFMiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMWUnICAgIyAgMHhFMyAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMzAnICAgIyAgMHhFNCAtPiBQRVIgTUlMTEUgU0lHTgogICAgJ1x4YzInICAgICAjICAweEU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjYScgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGMxJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKICAgICdceGNiJyAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhjOCcgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiAgICAnXHhjZCcgICAgICMgIDB4RUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhjZScgICAgICMgIDB4RUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGNmJyAgICAgIyAgMHhFQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiAgICAnXHhjYycgICAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiAgICAnXHhkMycgICAgICMgIDB4RUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhkNCcgICAgICMgIDB4RUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKICAgICdcdWY4ZmYnICAgIyAgMHhGMCAtPiBBcHBsZSBsb2dvCiAgICAnXHhkMicgICAgICMgIDB4RjEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiAgICAnXHhkYScgICAgICMgIDB4RjIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4RjMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGQ5JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICdcdTAxMzEnICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCiAgICAnXHUwMmM2JyAgICMgIDB4RjYgLT4gTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCiAgICAnXHUwMmRjJyAgICMgIDB4RjcgLT4gU01BTEwgVElMREUKICAgICdceGFmJyAgICAgIyAgMHhGOCAtPiBNQUNST04KICAgICdcdTAyZDgnICAgIyAgMHhGOSAtPiBCUkVWRQogICAgJ1x1MDJkOScgICAjICAweEZBIC0+IERPVCBBQk9WRQogICAgJ1x1MDJkYScgICAjICAweEZCIC0+IFJJTkcgQUJPVkUKICAgICdceGI4JyAgICAgIyAgMHhGQyAtPiBDRURJTExBCiAgICAnXHUwMmRkJyAgICMgIDB4RkQgLT4gRE9VQkxFIEFDVVRFIEFDQ0VOVAogICAgJ1x1MDJkYicgICAjICAweEZFIC0+IE9HT05FSwogICAgJ1x1MDJjNycgICAjICAweEZGIC0+IENBUk9OCikKCiMjIyBFbmNvZGluZyB0YWJsZQplbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKUEsDBBQAAAAAAAIgo1aHYgUEyTQAAMk0AAAYAAAAZW5jb2RpbmdzL21hY190dXJraXNoLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBtYWNfdHVya2lzaCBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9BUFBMRS9UVVJLSVNILlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nbWFjLXR1cmtpc2gnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKCgojIyMgRGVjb2RpbmcgVGFibGUKCmRlY29kaW5nX3RhYmxlID0gKAogICAgJ1x4MDAnICAgICAjICAweDAwIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDMnICAgICAjICAweDAzIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTInICAgICAjICAweDEyIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWInICAgICAjICAweDFCIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBDT05UUk9MIENIQVJBQ1RFUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IENPTlRST0wgQ0hBUkFDVEVSCiAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQogICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSwogICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCiAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCiAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUwogICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCiAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQogICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUwogICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAogICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCiAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCiAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCiAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCiAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQogICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAogICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCiAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCiAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgogICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCiAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCiAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAogICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwogICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCiAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgogICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICiAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQogICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCiAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAogICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCiAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwogICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCiAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgogICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQogICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCiAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAogICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCiAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAogICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUwogICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCiAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQogICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAogICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCiAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQwogICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECiAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgogICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCiAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQogICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCiAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAogICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCiAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTwogICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCiAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgogICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCiAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQogICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCiAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAogICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCiAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCiAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAogICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCiAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gQ09OVFJPTCBDSEFSQUNURVIKICAgICdceGM0JyAgICAgIyAgMHg4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhjNScgICAgICMgIDB4ODEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGM3JyAgICAgIyAgMHg4MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4YzknICAgICAjICAweDgzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4ZDEnICAgICAjICAweDg0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZDYnICAgICAjICAweDg1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKICAgICdceGRjJyAgICAgIyAgMHg4NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhlMScgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4ZTAnICAgICAjICAweDg4IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGUyJyAgICAgIyAgMHg4OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKICAgICdceGU0JyAgICAgIyAgMHg4QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZTMnICAgICAjICAweDhCIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKICAgICdceGU1JyAgICAgIyAgMHg4QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKICAgICdceGU3JyAgICAgIyAgMHg4RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKICAgICdceGU5JyAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiAgICAnXHhlOCcgICAgICMgIDB4OEYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZWEnICAgICAjICAweDkwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZWInICAgICAjICAweDkxIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiAgICAnXHhlZCcgICAgICMgIDB4OTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4ZWMnICAgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGVlJyAgICAgIyAgMHg5NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKICAgICdceGVmJyAgICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZjEnICAgICAjICAweDk2IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKICAgICdceGYzJyAgICAgIyAgMHg5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmMicgICAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZjQnICAgICAjICAweDk5IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4ZjYnICAgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmNScgICAgICMgIDB4OUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4ZmEnICAgICAjICAweDlDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGY5JyAgICAgIyAgMHg5RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhmYicgICAgICMgIDB4OUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmYycgICAgICMgIDB4OUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKICAgICdcdTIwMjAnICAgIyAgMHhBMCAtPiBEQUdHRVIKICAgICdceGIwJyAgICAgIyAgMHhBMSAtPiBERUdSRUUgU0lHTgogICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgogICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KICAgICdceGE3JyAgICAgIyAgMHhBNCAtPiBTRUNUSU9OIFNJR04KICAgICdcdTIwMjInICAgIyAgMHhBNSAtPiBCVUxMRVQKICAgICdceGI2JyAgICAgIyAgMHhBNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGRmJyAgICAgIyAgMHhBNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwogICAgJ1x4YWUnICAgICAjICAweEE4IC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHUyMTIyJyAgICMgIDB4QUEgLT4gVFJBREUgTUFSSyBTSUdOCiAgICAnXHhiNCcgICAgICMgIDB4QUIgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhhOCcgICAgICMgIDB4QUMgLT4gRElBRVJFU0lTCiAgICAnXHUyMjYwJyAgICMgIDB4QUQgLT4gTk9UIEVRVUFMIFRPCiAgICAnXHhjNicgICAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKICAgICdceGQ4JyAgICAgIyAgMHhBRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHUyMjFlJyAgICMgIDB4QjAgLT4gSU5GSU5JVFkKICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KICAgICdcdTIyNjQnICAgIyAgMHhCMiAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KICAgICdcdTIyNjUnICAgIyAgMHhCMyAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KICAgICdceGE1JyAgICAgIyAgMHhCNCAtPiBZRU4gU0lHTgogICAgJ1x4YjUnICAgICAjICAweEI1IC0+IE1JQ1JPIFNJR04KICAgICdcdTIyMDInICAgIyAgMHhCNiAtPiBQQVJUSUFMIERJRkZFUkVOVElBTAogICAgJ1x1MjIxMScgICAjICAweEI3IC0+IE4tQVJZIFNVTU1BVElPTgogICAgJ1x1MjIwZicgICAjICAweEI4IC0+IE4tQVJZIFBST0RVQ1QKICAgICdcdTAzYzAnICAgIyAgMHhCOSAtPiBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgICdcdTIyMmInICAgIyAgMHhCQSAtPiBJTlRFR1JBTAogICAgJ1x4YWEnICAgICAjICAweEJCIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYScgICAgICMgIDB4QkMgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHUwM2E5JyAgICMgIDB4QkQgLT4gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKICAgICdceGU2JyAgICAgIyAgMHhCRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKICAgICdceGY4JyAgICAgIyAgMHhCRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQogICAgJ1x4YmYnICAgICAjICAweEMwIC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKICAgICdceGExJyAgICAgIyAgMHhDMSAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QzIgLT4gTk9UIFNJR04KICAgICdcdTIyMWEnICAgIyAgMHhDMyAtPiBTUVVBUkUgUk9PVAogICAgJ1x1MDE5MicgICAjICAweEM0IC0+IExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwogICAgJ1x1MjI0OCcgICAjICAweEM1IC0+IEFMTU9TVCBFUVVBTCBUTwogICAgJ1x1MjIwNicgICAjICAweEM2IC0+IElOQ1JFTUVOVAogICAgJ1x4YWInICAgICAjICAweEM3IC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYicgICAgICMgIDB4QzggLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDI2JyAgICMgIDB4QzkgLT4gSE9SSVpPTlRBTCBFTExJUFNJUwogICAgJ1x4YTAnICAgICAjICAweENBIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHhjMCcgICAgICMgIDB4Q0IgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiAgICAnXHhjMycgICAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhkNScgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHUwMTUyJyAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQogICAgJ1x1MDE1MycgICAjICAweENGIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIE9FCiAgICAnXHUyMDEzJyAgICMgIDB4RDAgLT4gRU4gREFTSAogICAgJ1x1MjAxNCcgICAjICAweEQxIC0+IEVNIERBU0gKICAgICdcdTIwMWMnICAgIyAgMHhEMiAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxZCcgICAjICAweEQzIC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOCcgICAjICAweEQ0IC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDE5JyAgICMgIDB4RDUgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhmNycgICAgICMgIDB4RDYgLT4gRElWSVNJT04gU0lHTgogICAgJ1x1MjVjYScgICAjICAweEQ3IC0+IExPWkVOR0UKICAgICdceGZmJyAgICAgIyAgMHhEOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwogICAgJ1x1MDE3OCcgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdcdTAxMWUnICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQlJFVkUKICAgICdcdTAxMWYnICAgIyAgMHhEQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIEJSRVZFCiAgICAnXHUwMTMwJyAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQogICAgJ1x1MDEzMScgICAjICAweEREIC0+IExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkKICAgICdcdTAxNWUnICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x1MDE1ZicgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQQogICAgJ1x1MjAyMScgICAjICAweEUwIC0+IERPVUJMRSBEQUdHRVIKICAgICdceGI3JyAgICAgIyAgMHhFMSAtPiBNSURETEUgRE9UCiAgICAnXHUyMDFhJyAgICMgIDB4RTIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFlJyAgICMgIDB4RTMgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDMwJyAgICMgIDB4RTQgLT4gUEVSIE1JTExFIFNJR04KICAgICdceGMyJyAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAogICAgJ1x4Y2EnICAgICAjICAweEU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjMScgICAgICMgIDB4RTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhjYicgICAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzgnICAgICAjICAweEU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4Y2QnICAgICAjICAweEVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjZicgICAgICMgIDB4RUMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4Y2MnICAgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4ZDMnICAgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDQnICAgICAjICAweEVGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHVmOGZmJyAgICMgIDB4RjAgLT4gQXBwbGUgbG9nbwogICAgJ1x4ZDInICAgICAjICAweEYxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZGEnICAgICAjICAweEYyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgJ1x4ZGInICAgICAjICAweEYzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkOScgICAgICMgIDB4RjQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHVmOGEwJyAgICMgIDB4RjUgLT4gdW5kZWZpbmVkMQogICAgJ1x1MDJjNicgICAjICAweEY2IC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ1x1MDJkYycgICAjICAweEY3IC0+IFNNQUxMIFRJTERFCiAgICAnXHhhZicgICAgICMgIDB4RjggLT4gTUFDUk9OCiAgICAnXHUwMmQ4JyAgICMgIDB4RjkgLT4gQlJFVkUKICAgICdcdTAyZDknICAgIyAgMHhGQSAtPiBET1QgQUJPVkUKICAgICdcdTAyZGEnICAgIyAgMHhGQiAtPiBSSU5HIEFCT1ZFCiAgICAnXHhiOCcgICAgICMgIDB4RkMgLT4gQ0VESUxMQQogICAgJ1x1MDJkZCcgICAjICAweEZEIC0+IERPVUJMRSBBQ1VURSBBQ0NFTlQKICAgICdcdTAyZGInICAgIyAgMHhGRSAtPiBPR09ORUsKICAgICdcdTAyYzcnICAgIyAgMHhGRiAtPiBDQVJPTgopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWTuQYobsEAAC7BAAAEQAAAGVuY29kaW5ncy9tYmNzLnB5IiIiIFB5dGhvbiAnbWJjcycgQ29kZWMgZm9yIFdpbmRvd3MKCgpDbG9uZWQgYnkgTWFyayBIYW1tb25kIChtaGFtbW9uZEBza2lwcGluZXQuY29tLmF1KSBmcm9tIGFzY2lpLnB5LAp3aGljaCB3YXMgd3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCgooYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgoKIiIiCiMgSW1wb3J0IHRoZW0gZXhwbGljaXRseSB0byBjYXVzZSBhbiBJbXBvcnRFcnJvcgojIG9uIG5vbi1XaW5kb3dzIHN5c3RlbXMKZnJvbSBjb2RlY3MgaW1wb3J0IG1iY3NfZW5jb2RlLCBtYmNzX2RlY29kZQojIGZvciBJbmNyZW1lbnRhbERlY29kZXIsIEluY3JlbWVudGFsRW5jb2RlciwgLi4uCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgplbmNvZGUgPSBtYmNzX2VuY29kZQoKZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIHJldHVybiBtYmNzX2RlY29kZShpbnB1dCwgZXJyb3JzLCBUcnVlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBtYmNzX2VuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIF9idWZmZXJfZGVjb2RlID0gbWJjc19kZWNvZGUKCmNsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGVuY29kZSA9IG1iY3NfZW5jb2RlCgpjbGFzcyBTdHJlYW1SZWFkZXIoY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBkZWNvZGUgPSBtYmNzX2RlY29kZQoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J21iY3MnLAogICAgICAgIGVuY29kZT1lbmNvZGUsCiAgICAgICAgZGVjb2RlPWRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVkwnj1v7AwAA+wMAABAAAABlbmNvZGluZ3Mvb2VtLnB5IiIiIFB5dGhvbiAnb2VtJyBDb2RlYyBmb3IgV2luZG93cwoKIiIiCiMgSW1wb3J0IHRoZW0gZXhwbGljaXRseSB0byBjYXVzZSBhbiBJbXBvcnRFcnJvcgojIG9uIG5vbi1XaW5kb3dzIHN5c3RlbXMKZnJvbSBjb2RlY3MgaW1wb3J0IG9lbV9lbmNvZGUsIG9lbV9kZWNvZGUKIyBmb3IgSW5jcmVtZW50YWxEZWNvZGVyLCBJbmNyZW1lbnRhbEVuY29kZXIsIC4uLgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKZW5jb2RlID0gb2VtX2VuY29kZQoKZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIHJldHVybiBvZW1fZGVjb2RlKGlucHV0LCBlcnJvcnMsIFRydWUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIG9lbV9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBfYnVmZmVyX2RlY29kZSA9IG9lbV9kZWNvZGUKCmNsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGVuY29kZSA9IG9lbV9lbmNvZGUKCmNsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGRlY29kZSA9IG9lbV9kZWNvZGUKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdvZW0nLAogICAgICAgIGVuY29kZT1lbmNvZGUsCiAgICAgICAgZGVjb2RlPWRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAiCjVjF4kpHPNAAAzzQAABMAAABlbmNvZGluZ3MvcGFsbW9zLnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBmb3IgUGFsbU9TIDMuNS4KCldyaXR0ZW4gYnkgU2pvZXJkIE11bGxlbmRlciAoc2pvZXJkQGFjbS5vcmcpOyBiYXNlZCBvbiBpc284ODU5XzE1LnB5LgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCgogICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgcGFzcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J3BhbG1vcycsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KICAgICdcdTIwMWEnICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxOTInICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCiAgICAnXHUyMDIxJyAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgogICAgJ1x1MDJjNicgICAjICAweDg4IC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCiAgICAnXHUwMTYwJyAgICMgIDB4OEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAnXHUyMDM5JyAgICMgIDB4OEIgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTAxNTInICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCiAgICAnXHUyNjY2JyAgICMgIDB4OEQgLT4gQkxBQ0sgRElBTU9ORCBTVUlUCiAgICAnXHUyNjYzJyAgICMgIDB4OEUgLT4gQkxBQ0sgQ0xVQiBTVUlUCiAgICAnXHUyNjY1JyAgICMgIDB4OEYgLT4gQkxBQ0sgSEVBUlQgU1VJVAogICAgJ1x1MjY2MCcgICAjICAweDkwIC0+IEJMQUNLIFNQQURFIFNVSVQKICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCiAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAogICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKICAgICdcdTAyZGMnICAgIyAgMHg5OCAtPiBTTUFMTCBUSUxERQogICAgJ1x1MjEyMicgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgogICAgJ1x1MDE2MScgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KICAgICdcdTAxNTMnICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQogICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgogICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgogICAgJ1x1MDE3OCcgICAjICAweDlGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQogICAgJ1x4YTEnICAgICAjICAweEExIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKICAgICdceGEyJyAgICAgIyAgMHhBMiAtPiBDRU5UIFNJR04KICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCiAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgogICAgJ1x4YTUnICAgICAjICAweEE1IC0+IFlFTiBTSUdOCiAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x4YTgnICAgICAjICAweEE4IC0+IERJQUVSRVNJUwogICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCiAgICAnXHhhYScgICAgICMgIDB4QUEgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCiAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KICAgICdceGFmJyAgICAgIyAgMHhBRiAtPiBNQUNST04KICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgogICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgogICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTwogICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCiAgICAnXHhiNCcgICAgICMgIDB4QjQgLT4gQUNVVEUgQUNDRU5UCiAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgogICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgogICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKICAgICdceGI4JyAgICAgIyAgMHhCOCAtPiBDRURJTExBCiAgICAnXHhiOScgICAgICMgIDB4QjkgLT4gU1VQRVJTQ1JJUFQgT05FCiAgICAnXHhiYScgICAgICMgIDB4QkEgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCiAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhiYycgICAgICMgIDB4QkMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiAgICAnXHhiZCcgICAgICMgIDB4QkQgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiAgICAnXHhiZScgICAgICMgIDB4QkUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiAgICAnXHhiZicgICAgICMgIDB4QkYgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSwogICAgJ1x4YzAnICAgICAjICAweEMwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQogICAgJ1x4YzEnICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQogICAgJ1x4YzInICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjMycgICAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCiAgICAnXHhjNCcgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwogICAgJ1x4YzUnICAgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhjNicgICAgICMgIDB4QzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKICAgICdceGM3JyAgICAgIyAgMHhDNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQogICAgJ1x4YzgnICAgICAjICAweEM4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4YzknICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQogICAgJ1x4Y2EnICAgICAjICAweENBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjYicgICAgICMgIDB4Q0IgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4Y2MnICAgICAjICAweENDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQogICAgJ1x4Y2QnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQogICAgJ1x4Y2UnICAgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhjZicgICAgICMgIDB4Q0YgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDAnICAgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQogICAgJ1x4ZDEnICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZDInICAgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQogICAgJ1x4ZDMnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQogICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhkNScgICAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCiAgICAnXHhkNicgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZDcnICAgICAjICAweEQ3IC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KICAgICdceGQ4JyAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhkOScgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAnXHhkYicgICAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiAgICAnXHhkZCcgICAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAnXHhkZScgICAgICMgIDB4REUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKICAgICdceGRmJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR2VybWFuKQogICAgJ1x4ZTAnICAgICAjICAweEUwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKICAgICdceGUxJyAgICAgIyAgMHhFMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiAgICAnXHhlMicgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlMycgICAgICMgIDB4RTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQogICAgJ1x4ZTQnICAgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiAgICAnXHhlNScgICAgICMgIDB4RTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiAgICAnXHhlNicgICAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCiAgICAnXHhlNycgICAgICMgIDB4RTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiAgICAnXHhlOCcgICAgICMgIDB4RTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQogICAgJ1x4ZTknICAgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKICAgICdceGVhJyAgICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKICAgICdceGViJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZWMnICAgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKICAgICdceGVkJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKICAgICdceGYwJyAgICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCiAgICAnXHhmMScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQogICAgJ1x4ZjInICAgICAjICAweEYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKICAgICdceGYzJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCiAgICAnXHhmNCcgICAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiAgICAnXHhmNScgICAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQogICAgJ1x4ZjYnICAgICAjICAweEY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiAgICAnXHhmNycgICAgICMgIDB4RjcgLT4gRElWSVNJT04gU0lHTgogICAgJ1x4ZjgnICAgICAjICAweEY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCiAgICAnXHhmOScgICAgICMgIDB4RjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgJ1x4ZmEnICAgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICdceGZiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKICAgICdceGZjJyAgICAgIyAgMHhGQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwogICAgJ1x4ZmQnICAgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICdceGZlJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKICAgICdceGZmJyAgICAgIyAgMHhGRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwopCgojIyMgRW5jb2RpbmcgdGFibGUKZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpClBLAwQUAAAAAAACIKNWujsCAb82AAC/NgAAFAAAAGVuY29kaW5ncy9wdGNwMTU0LnB5IiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnUFRDUDE1NC50eHQnIHdpdGggZ2VuY29kZWMucHkuCgpXcml0dGVuIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyAobWFsQGxlbWJ1cmcuY29tKS4KCihjKSBDb3B5cmlnaHQgQ05SSSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gTk8gV0FSUkFOVFkuCihjKSBDb3B5cmlnaHQgMjAwMCBHdWlkbyB2YW4gUm9zc3VtLgoKIiIiIyIKCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQoKICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdwdGNwMTU0JywKICAgICAgICBlbmNvZGU9Q29kZWMoKS5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApCgoKIyMjIERlY29kaW5nIFRhYmxlCgpkZWNvZGluZ190YWJsZSA9ICgKICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCiAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORwogICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAogICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCiAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCiAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCiAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCiAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECiAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgogICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAogICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgogICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAogICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCiAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQogICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQogICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTwogICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCiAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgogICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCiAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQogICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCiAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQogICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQogICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCiAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCiAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgogICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCiAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCiAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgogICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCiAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCiAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECiAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQogICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUwogICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCiAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCiAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCiAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTwogICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQogICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTwogICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCiAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgogICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgogICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCiAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQogICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCiAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCiAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgogICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCiAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSwogICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCiAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgogICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECiAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQogICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCiAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAogICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSwogICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCiAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgogICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCiAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQogICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCiAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAogICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCiAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVwogICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgogICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCiAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQogICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCiAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAogICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCiAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRwogICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICiAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgogICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCiAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQogICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCiAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAogICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCiAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUwogICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCiAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgogICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCiAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQogICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCiAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCiAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQogICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQogICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURSAoREVMKQogICAgJ1x1MDQ5NicgICAjICAweDgwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDQ5MicgICAjICAweDgxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQogICAgJ1x1MDRlZScgICAjICAweDgyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KICAgICdcdTA0OTMnICAgIyAgMHg4MyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCiAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDI2JyAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUwogICAgJ1x1MDRiNicgICAjICAweDg2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDRhZScgICAjICAweDg3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKICAgICdcdTA0YjInICAgIyAgMHg4OCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDRhZicgICAjICAweDg5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVCiAgICAnXHUwNGEwJyAgICMgIDB4OEEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFTSEtJUiBLQQogICAgJ1x1MDRlMicgICAjICAweDhCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KICAgICdcdTA0YTInICAgIyAgMHg4QyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDQ5YScgICAjICAweDhEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCiAgICAnXHUwNGJhJyAgICMgIDB4OEUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hIQQogICAgJ1x1MDRiOCcgICAjICAweDhGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQogICAgJ1x1MDQ5NycgICAjICAweDkwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwogICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCiAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCiAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAogICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKICAgICdcdTA0YjMnICAgIyAgMHg5OCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKICAgICdcdTA0YjcnICAgIyAgMHg5OSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCiAgICAnXHUwNGExJyAgICMgIDB4OUEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBU0hLSVIgS0EKICAgICdcdTA0ZTMnICAgIyAgMHg5QiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgogICAgJ1x1MDRhMycgICAjICAweDlDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDQ5YicgICAjICAweDlEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDRiYicgICAjICAweDlFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBCiAgICAnXHUwNGI5JyAgICMgIDB4OUYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQogICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCiAgICAnXHUwNDBlJyAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQogICAgJ1x1MDQ1ZScgICAjICAweEEyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCiAgICAnXHUwNDA4JyAgICMgIDB4QTMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKICAgICdcdTA0ZTgnICAgIyAgMHhBNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTwogICAgJ1x1MDQ5OCcgICAjICAweEE1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCiAgICAnXHUwNGIwJyAgICMgIDB4QTYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQogICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgogICAgJ1x1MDQwMScgICAjICAweEE4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCiAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KICAgICdcdTA0ZDgnICAgIyAgMHhBQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQogICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KICAgICdcdTA0ZWYnICAgIyAgMHhBRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgogICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgogICAgJ1x1MDQ5YycgICAjICAweEFGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCiAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KICAgICdcdTA0YjEnICAgIyAgMHhCMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQogICAgJ1x1MDQwNicgICAjICAweEIyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQogICAgJ1x1MDQ1NicgICAjICAweEIzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKICAgICdcdTA0OTknICAgIyAgMHhCNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKICAgICdcdTA0ZTknICAgIyAgMHhCNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE8KICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCiAgICAnXHUwNDUxJyAgICMgIDB4QjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiAgICAnXHUyMTE2JyAgICMgIDB4QjkgLT4gTlVNRVJPIFNJR04KICAgICdcdTA0ZDknICAgIyAgMHhCQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgICdcdTA0NTgnICAgIyAgMHhCQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSkUKICAgICdcdTA0YWEnICAgIyAgMHhCRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDRhYicgICAjICAweEJFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgogICAgJ1x1MDQ5ZCcgICAjICAweEJGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQogICAgJ1x1MDQxMCcgICAjICAweEMwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKICAgICdcdTA0MTEnICAgIyAgMHhDMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQogICAgJ1x1MDQxMicgICAjICAweEMyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCiAgICAnXHUwNDEzJyAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiAgICAnXHUwNDE0JyAgICMgIDB4QzQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKICAgICdcdTA0MTUnICAgIyAgMHhDNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQogICAgJ1x1MDQxNicgICAjICAweEM2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQogICAgJ1x1MDQxNycgICAjICAweEM3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCiAgICAnXHUwNDE4JyAgICMgIDB4QzggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQogICAgJ1x1MDQxOScgICAjICAweEM5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKICAgICdcdTA0MWEnICAgIyAgMHhDQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQogICAgJ1x1MDQxYicgICAjICAweENCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCiAgICAnXHUwNDFjJyAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KICAgICdcdTA0MWQnICAgIyAgMHhDRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgogICAgJ1x1MDQxZScgICAjICAweENFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KICAgICdcdTA0MWYnICAgIyAgMHhDRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQogICAgJ1x1MDQyMCcgICAjICAweEQwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCiAgICAnXHUwNDIxJyAgICMgIDB4RDEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKICAgICdcdTA0MjInICAgIyAgMHhEMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQogICAgJ1x1MDQyMycgICAjICAweEQzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKICAgICdcdTA0MjQnICAgIyAgMHhENCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgogICAgJ1x1MDQyNScgICAjICAweEQ1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiAgICAnXHUwNDI2JyAgICMgIDB4RDYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCiAgICAnXHUwNDI3JyAgICMgIDB4RDcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCiAgICAnXHUwNDI4JyAgICMgIDB4RDggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiAgICAnXHUwNDI5JyAgICMgIDB4RDkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKICAgICdcdTA0MmEnICAgIyAgMHhEQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KICAgICdcdTA0MmInICAgIyAgMHhEQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiAgICAnXHUwNDJjJyAgICMgIDB4REMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDJkJyAgICMgIDB4REQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQogICAgJ1x1MDQyZScgICAjICAweERFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiAgICAnXHUwNDJmJyAgICMgIDB4REYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKICAgICdcdTA0MzAnICAgIyAgMHhFMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQogICAgJ1x1MDQzMScgICAjICAweEUxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQogICAgJ1x1MDQzMicgICAjICAweEUyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBWRQogICAgJ1x1MDQzMycgICAjICAweEUzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKICAgICdcdTA0MzQnICAgIyAgMHhFNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKICAgICdcdTA0MzUnICAgIyAgMHhFNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKICAgICdcdTA0MzYnICAgIyAgMHhFNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCiAgICAnXHUwNDM3JyAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiAgICAnXHUwNDM4JyAgICMgIDB4RTggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKICAgICdcdTA0MzknICAgIyAgMHhFOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQogICAgJ1x1MDQzYScgICAjICAweEVBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQogICAgJ1x1MDQzYicgICAjICAweEVCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTAogICAgJ1x1MDQzYycgICAjICAweEVDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTQogICAgJ1x1MDQzZCcgICAjICAweEVEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgogICAgJ1x1MDQzZScgICAjICAweEVFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBPCiAgICAnXHUwNDNmJyAgICMgIDB4RUYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCiAgICAnXHUwNDQwJyAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiAgICAnXHUwNDQxJyAgICMgIDB4RjEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAnXHUwNDQyJyAgICMgIDB4RjIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCiAgICAnXHUwNDQzJyAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKICAgICdcdTA0NDQnICAgIyAgMHhGNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKICAgICdcdTA0NDUnICAgIyAgMHhGNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKICAgICdcdTA0NDYnICAgIyAgMHhGNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCiAgICAnXHUwNDQ3JyAgICMgIDB4RjcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQogICAgJ1x1MDQ0OCcgICAjICAweEY4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKICAgICdcdTA0NDknICAgIyAgMHhGOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKICAgICdcdTA0NGEnICAgIyAgMHhGQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCiAgICAnXHUwNDRiJyAgICMgIDB4RkIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKICAgICdcdTA0NGMnICAgIyAgMHhGQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCiAgICAnXHUwNDRkJyAgICMgIDB4RkQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKICAgICdcdTA0NGUnICAgIyAgMHhGRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKICAgICdcdTA0NGYnICAgIyAgMHhGRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVhI07TnjGgAA4xoAABUAAABlbmNvZGluZ3MvcHVueWNvZGUucHkiIiIgQ29kZWMgZm9yIHRoZSBQdW5pY29kZSBlbmNvZGluZywgYXMgc3BlY2lmaWVkIGluIFJGQyAzNDkyCgpXcml0dGVuIGJ5IE1hcnRpbiB2LiBMw7Z3aXMuCiIiIgoKaW1wb3J0IGNvZGVjcwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEVuY29kaW5nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmRlZiBzZWdyZWdhdGUoc3RyKToKICAgICIiIjMuMSBCYXNpYyBjb2RlIHBvaW50IHNlZ3JlZ2F0aW9uIiIiCiAgICBiYXNlID0gYnl0ZWFycmF5KCkKICAgIGV4dGVuZGVkID0gc2V0KCkKICAgIGZvciBjIGluIHN0cjoKICAgICAgICBpZiBvcmQoYykgPCAxMjg6CiAgICAgICAgICAgIGJhc2UuYXBwZW5kKG9yZChjKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBleHRlbmRlZC5hZGQoYykKICAgIGV4dGVuZGVkID0gc29ydGVkKGV4dGVuZGVkKQogICAgcmV0dXJuIGJ5dGVzKGJhc2UpLCBleHRlbmRlZAoKZGVmIHNlbGVjdGl2ZV9sZW4oc3RyLCBtYXgpOgogICAgIiIiUmV0dXJuIHRoZSBsZW5ndGggb2Ygc3RyLCBjb25zaWRlcmluZyBvbmx5IGNoYXJhY3RlcnMgYmVsb3cgbWF4LiIiIgogICAgcmVzID0gMAogICAgZm9yIGMgaW4gc3RyOgogICAgICAgIGlmIG9yZChjKSA8IG1heDoKICAgICAgICAgICAgcmVzICs9IDEKICAgIHJldHVybiByZXMKCmRlZiBzZWxlY3RpdmVfZmluZChzdHIsIGNoYXIsIGluZGV4LCBwb3MpOgogICAgIiIiUmV0dXJuIGEgcGFpciAoaW5kZXgsIHBvcyksIGluZGljYXRpbmcgdGhlIG5leHQgb2NjdXJyZW5jZSBvZgogICAgY2hhciBpbiBzdHIuIGluZGV4IGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyIGNvbnNpZGVyaW5nCiAgICBvbmx5IG9yZGluYWxzIHVwIHRvIGFuZCBpbmNsdWRpbmcgY2hhciwgYW5kIHBvcyBpcyB0aGUgcG9zaXRpb24gaW4KICAgIHRoZSBmdWxsIHN0cmluZy4gaW5kZXgvcG9zIGlzIHRoZSBzdGFydGluZyBwb3NpdGlvbiBpbiB0aGUgZnVsbAogICAgc3RyaW5nLiIiIgoKICAgIGwgPSBsZW4oc3RyKQogICAgd2hpbGUgMToKICAgICAgICBwb3MgKz0gMQogICAgICAgIGlmIHBvcyA9PSBsOgogICAgICAgICAgICByZXR1cm4gKC0xLCAtMSkKICAgICAgICBjID0gc3RyW3Bvc10KICAgICAgICBpZiBjID09IGNoYXI6CiAgICAgICAgICAgIHJldHVybiBpbmRleCsxLCBwb3MKICAgICAgICBlbGlmIGMgPCBjaGFyOgogICAgICAgICAgICBpbmRleCArPSAxCgpkZWYgaW5zZXJ0aW9uX3Vuc29ydChzdHIsIGV4dGVuZGVkKToKICAgICIiIjMuMiBJbnNlcnRpb24gdW5zb3J0IGNvZGluZyIiIgogICAgb2xkY2hhciA9IDB4ODAKICAgIHJlc3VsdCA9IFtdCiAgICBvbGRpbmRleCA9IC0xCiAgICBmb3IgYyBpbiBleHRlbmRlZDoKICAgICAgICBpbmRleCA9IHBvcyA9IC0xCiAgICAgICAgY2hhciA9IG9yZChjKQogICAgICAgIGN1cmxlbiA9IHNlbGVjdGl2ZV9sZW4oc3RyLCBjaGFyKQogICAgICAgIGRlbHRhID0gKGN1cmxlbisxKSAqIChjaGFyIC0gb2xkY2hhcikKICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICBpbmRleCxwb3MgPSBzZWxlY3RpdmVfZmluZChzdHIsYyxpbmRleCxwb3MpCiAgICAgICAgICAgIGlmIGluZGV4ID09IC0xOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZGVsdGEgKz0gaW5kZXggLSBvbGRpbmRleAogICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRlbHRhLTEpCiAgICAgICAgICAgIG9sZGluZGV4ID0gaW5kZXgKICAgICAgICAgICAgZGVsdGEgPSAwCiAgICAgICAgb2xkY2hhciA9IGNoYXIKCiAgICByZXR1cm4gcmVzdWx0CgpkZWYgVChqLCBiaWFzKToKICAgICMgUHVueWNvZGUgcGFyYW1ldGVyczogdG1pbiA9IDEsIHRtYXggPSAyNiwgYmFzZSA9IDM2CiAgICByZXMgPSAzNiAqIChqICsgMSkgLSBiaWFzCiAgICBpZiByZXMgPCAxOiByZXR1cm4gMQogICAgaWYgcmVzID4gMjY6IHJldHVybiAyNgogICAgcmV0dXJuIHJlcwoKZGlnaXRzID0gYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiCmRlZiBnZW5lcmF0ZV9nZW5lcmFsaXplZF9pbnRlZ2VyKE4sIGJpYXMpOgogICAgIiIiMy4zIEdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VycyIiIgogICAgcmVzdWx0ID0gYnl0ZWFycmF5KCkKICAgIGogPSAwCiAgICB3aGlsZSAxOgogICAgICAgIHQgPSBUKGosIGJpYXMpCiAgICAgICAgaWYgTiA8IHQ6CiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGlnaXRzW05dKQogICAgICAgICAgICByZXR1cm4gYnl0ZXMocmVzdWx0KQogICAgICAgIHJlc3VsdC5hcHBlbmQoZGlnaXRzW3QgKyAoKE4gLSB0KSAlICgzNiAtIHQpKV0pCiAgICAgICAgTiA9IChOIC0gdCkgLy8gKDM2IC0gdCkKICAgICAgICBqICs9IDEKCmRlZiBhZGFwdChkZWx0YSwgZmlyc3QsIG51bWNoYXJzKToKICAgIGlmIGZpcnN0OgogICAgICAgIGRlbHRhIC8vPSA3MDAKICAgIGVsc2U6CiAgICAgICAgZGVsdGEgLy89IDIKICAgIGRlbHRhICs9IGRlbHRhIC8vIG51bWNoYXJzCiAgICAjICgoYmFzZSAtIHRtaW4pICogdG1heCkgLy8gMiA9PSA0NTUKICAgIGRpdmlzaW9ucyA9IDAKICAgIHdoaWxlIGRlbHRhID4gNDU1OgogICAgICAgIGRlbHRhID0gZGVsdGEgLy8gMzUgIyBiYXNlIC0gdG1pbgogICAgICAgIGRpdmlzaW9ucyArPSAzNgogICAgYmlhcyA9IGRpdmlzaW9ucyArICgzNiAqIGRlbHRhIC8vIChkZWx0YSArIDM4KSkKICAgIHJldHVybiBiaWFzCgoKZGVmIGdlbmVyYXRlX2ludGVnZXJzKGJhc2VsZW4sIGRlbHRhcyk6CiAgICAiIiIzLjQgQmlhcyBhZGFwdGF0aW9uIiIiCiAgICAjIFB1bnljb2RlIHBhcmFtZXRlcnM6IGluaXRpYWwgYmlhcyA9IDcyLCBkYW1wID0gNzAwLCBza2V3ID0gMzgKICAgIHJlc3VsdCA9IGJ5dGVhcnJheSgpCiAgICBiaWFzID0gNzIKICAgIGZvciBwb2ludHMsIGRlbHRhIGluIGVudW1lcmF0ZShkZWx0YXMpOgogICAgICAgIHMgPSBnZW5lcmF0ZV9nZW5lcmFsaXplZF9pbnRlZ2VyKGRlbHRhLCBiaWFzKQogICAgICAgIHJlc3VsdC5leHRlbmQocykKICAgICAgICBiaWFzID0gYWRhcHQoZGVsdGEsIHBvaW50cz09MCwgYmFzZWxlbitwb2ludHMrMSkKICAgIHJldHVybiBieXRlcyhyZXN1bHQpCgpkZWYgcHVueWNvZGVfZW5jb2RlKHRleHQpOgogICAgYmFzZSwgZXh0ZW5kZWQgPSBzZWdyZWdhdGUodGV4dCkKICAgIGRlbHRhcyA9IGluc2VydGlvbl91bnNvcnQodGV4dCwgZXh0ZW5kZWQpCiAgICBleHRlbmRlZCA9IGdlbmVyYXRlX2ludGVnZXJzKGxlbihiYXNlKSwgZGVsdGFzKQogICAgaWYgYmFzZToKICAgICAgICByZXR1cm4gYmFzZSArIGIiLSIgKyBleHRlbmRlZAogICAgcmV0dXJuIGV4dGVuZGVkCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMgRGVjb2RpbmcgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKZGVmIGRlY29kZV9nZW5lcmFsaXplZF9udW1iZXIoZXh0ZW5kZWQsIGV4dHBvcywgYmlhcywgZXJyb3JzKToKICAgICIiIjMuMyBHZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlcnMiIiIKICAgIHJlc3VsdCA9IDAKICAgIHcgPSAxCiAgICBqID0gMAogICAgd2hpbGUgMToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNoYXIgPSBvcmQoZXh0ZW5kZWRbZXh0cG9zXSkKICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgaWYgZXJyb3JzID09ICJzdHJpY3QiOgogICAgICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJpbmNvbXBsZXRlIHB1bmljb2RlIHN0cmluZyIpCiAgICAgICAgICAgIHJldHVybiBleHRwb3MgKyAxLCBOb25lCiAgICAgICAgZXh0cG9zICs9IDEKICAgICAgICBpZiAweDQxIDw9IGNoYXIgPD0gMHg1QTogIyBBLVoKICAgICAgICAgICAgZGlnaXQgPSBjaGFyIC0gMHg0MQogICAgICAgIGVsaWYgMHgzMCA8PSBjaGFyIDw9IDB4Mzk6CiAgICAgICAgICAgIGRpZ2l0ID0gY2hhciAtIDIyICMgMHgzMC0yNgogICAgICAgIGVsaWYgZXJyb3JzID09ICJzdHJpY3QiOgogICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoIkludmFsaWQgZXh0ZW5kZWQgY29kZSBwb2ludCAnJXMnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBleHRlbmRlZFtleHRwb3MtMV0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGV4dHBvcywgTm9uZQogICAgICAgIHQgPSBUKGosIGJpYXMpCiAgICAgICAgcmVzdWx0ICs9IGRpZ2l0ICogdwogICAgICAgIGlmIGRpZ2l0IDwgdDoKICAgICAgICAgICAgcmV0dXJuIGV4dHBvcywgcmVzdWx0CiAgICAgICAgdyA9IHcgKiAoMzYgLSB0KQogICAgICAgIGogKz0gMQoKCmRlZiBpbnNlcnRpb25fc29ydChiYXNlLCBleHRlbmRlZCwgZXJyb3JzKToKICAgICIiIjMuMiBJbnNlcnRpb24gdW5zb3J0IGNvZGluZyIiIgogICAgY2hhciA9IDB4ODAKICAgIHBvcyA9IC0xCiAgICBiaWFzID0gNzIKICAgIGV4dHBvcyA9IDAKICAgIHdoaWxlIGV4dHBvcyA8IGxlbihleHRlbmRlZCk6CiAgICAgICAgbmV3cG9zLCBkZWx0YSA9IGRlY29kZV9nZW5lcmFsaXplZF9udW1iZXIoZXh0ZW5kZWQsIGV4dHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWFzLCBlcnJvcnMpCiAgICAgICAgaWYgZGVsdGEgaXMgTm9uZToKICAgICAgICAgICAgIyBUaGVyZSB3YXMgYW4gZXJyb3IgaW4gZGVjb2RpbmcuIFdlIGNhbid0IGNvbnRpbnVlIGJlY2F1c2UKICAgICAgICAgICAgIyBzeW5jaHJvbml6YXRpb24gaXMgbG9zdC4KICAgICAgICAgICAgcmV0dXJuIGJhc2UKICAgICAgICBwb3MgKz0gZGVsdGErMQogICAgICAgIGNoYXIgKz0gcG9zIC8vIChsZW4oYmFzZSkgKyAxKQogICAgICAgIGlmIGNoYXIgPiAweDEwRkZGRjoKICAgICAgICAgICAgaWYgZXJyb3JzID09ICJzdHJpY3QiOgogICAgICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJJbnZhbGlkIGNoYXJhY3RlciBVKyV4IiAlIGNoYXIpCiAgICAgICAgICAgIGNoYXIgPSBvcmQoJz8nKQogICAgICAgIHBvcyA9IHBvcyAlIChsZW4oYmFzZSkgKyAxKQogICAgICAgIGJhc2UgPSBiYXNlWzpwb3NdICsgY2hyKGNoYXIpICsgYmFzZVtwb3M6XQogICAgICAgIGJpYXMgPSBhZGFwdChkZWx0YSwgKGV4dHBvcyA9PSAwKSwgbGVuKGJhc2UpKQogICAgICAgIGV4dHBvcyA9IG5ld3BvcwogICAgcmV0dXJuIGJhc2UKCmRlZiBwdW55Y29kZV9kZWNvZGUodGV4dCwgZXJyb3JzKToKICAgIGlmIGlzaW5zdGFuY2UodGV4dCwgc3RyKToKICAgICAgICB0ZXh0ID0gdGV4dC5lbmNvZGUoImFzY2lpIikKICAgIGlmIGlzaW5zdGFuY2UodGV4dCwgbWVtb3J5dmlldyk6CiAgICAgICAgdGV4dCA9IGJ5dGVzKHRleHQpCiAgICBwb3MgPSB0ZXh0LnJmaW5kKGIiLSIpCiAgICBpZiBwb3MgPT0gLTE6CiAgICAgICAgYmFzZSA9ICIiCiAgICAgICAgZXh0ZW5kZWQgPSBzdHIodGV4dCwgImFzY2lpIikudXBwZXIoKQogICAgZWxzZToKICAgICAgICBiYXNlID0gc3RyKHRleHRbOnBvc10sICJhc2NpaSIsIGVycm9ycykKICAgICAgICBleHRlbmRlZCA9IHN0cih0ZXh0W3BvcysxOl0sICJhc2NpaSIpLnVwcGVyKCkKICAgIHJldHVybiBpbnNlcnRpb25fc29ydChiYXNlLCBleHRlbmRlZCwgZXJyb3JzKQoKIyMjIENvZGVjIEFQSXMKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXMgPSBwdW55Y29kZV9lbmNvZGUoaW5wdXQpCiAgICAgICAgcmV0dXJuIHJlcywgbGVuKGlucHV0KQoKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgaWYgZXJyb3JzIG5vdCBpbiAoJ3N0cmljdCcsICdyZXBsYWNlJywgJ2lnbm9yZScpOgogICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoIlVuc3VwcG9ydGVkIGVycm9yIGhhbmRsaW5nICIrZXJyb3JzKQogICAgICAgIHJlcyA9IHB1bnljb2RlX2RlY29kZShpbnB1dCwgZXJyb3JzKQogICAgICAgIHJldHVybiByZXMsIGxlbihpbnB1dCkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gcHVueWNvZGVfZW5jb2RlKGlucHV0KQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIGlmIHNlbGYuZXJyb3JzIG5vdCBpbiAoJ3N0cmljdCcsICdyZXBsYWNlJywgJ2lnbm9yZScpOgogICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoIlVuc3VwcG9ydGVkIGVycm9yIGhhbmRsaW5nICIrc2VsZi5lcnJvcnMpCiAgICAgICAgcmV0dXJuIHB1bnljb2RlX2RlY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0ncHVueWNvZGUnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICkKUEsDBBQAAAAAAAIgo1bqskVG9QUAAPUFAAAZAAAAZW5jb2RpbmdzL3F1b3ByaV9jb2RlYy5weSIiIkNvZGVjIGZvciBxdW90ZWQtcHJpbnRhYmxlIGVuY29kaW5nLgoKVGhpcyBjb2RlYyBkZS9lbmNvZGVzIGZyb20gYnl0ZXMgdG8gYnl0ZXMuCiIiIgoKaW1wb3J0IGNvZGVjcwppbXBvcnQgcXVvcHJpCmZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KCmRlZiBxdW9wcmlfZW5jb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgogICAgYXNzZXJ0IGVycm9ycyA9PSAnc3RyaWN0JwogICAgZiA9IEJ5dGVzSU8oaW5wdXQpCiAgICBnID0gQnl0ZXNJTygpCiAgICBxdW9wcmkuZW5jb2RlKGYsIGcsIHF1b3RldGFicz1UcnVlKQogICAgcmV0dXJuIChnLmdldHZhbHVlKCksIGxlbihpbnB1dCkpCgpkZWYgcXVvcHJpX2RlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIGFzc2VydCBlcnJvcnMgPT0gJ3N0cmljdCcKICAgIGYgPSBCeXRlc0lPKGlucHV0KQogICAgZyA9IEJ5dGVzSU8oKQogICAgcXVvcHJpLmRlY29kZShmLCBnKQogICAgcmV0dXJuIChnLmdldHZhbHVlKCksIGxlbihpbnB1dCkpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gcXVvcHJpX2VuY29kZShpbnB1dCwgZXJyb3JzKQogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gcXVvcHJpX2RlY29kZShpbnB1dCwgZXJyb3JzKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBxdW9wcmlfZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycylbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gcXVvcHJpX2RlY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY2hhcmJ1ZmZlcnR5cGUgPSBieXRlcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLCBjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGNoYXJidWZmZXJ0eXBlID0gYnl0ZXMKCiMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0ncXVvcHJpJywKICAgICAgICBlbmNvZGU9cXVvcHJpX2VuY29kZSwKICAgICAgICBkZWNvZGU9cXVvcHJpX2RlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIF9pc190ZXh0X2VuY29kaW5nPUZhbHNlLAogICAgKQpQSwMEFAAAAAAAAiCjVht6thE0BQAANAUAAB8AAABlbmNvZGluZ3MvcmF3X3VuaWNvZGVfZXNjYXBlLnB5IiIiIFB5dGhvbiAncmF3LXVuaWNvZGUtZXNjYXBlJyBDb2RlYwoKCldyaXR0ZW4gYnkgTWFyYy1BbmRyZSBMZW1idXJnIChtYWxAbGVtYnVyZy5jb20pLgoKKGMpIENvcHlyaWdodCBDTlJJLCBBbGwgUmlnaHRzIFJlc2VydmVkLiBOTyBXQVJSQU5UWS4KCiIiIgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICAjIE5vdGU6IEJpbmRpbmcgdGhlc2UgYXMgQyBmdW5jdGlvbnMgd2lsbCByZXN1bHQgaW4gdGhlIGNsYXNzIG5vdAogICAgIyBjb252ZXJ0aW5nIHRoZW0gdG8gbWV0aG9kcy4gVGhpcyBpcyBpbnRlbmRlZC4KICAgIGVuY29kZSA9IGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlCiAgICBkZWNvZGUgPSBjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBfYnVmZmVyX2RlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzLCBmaW5hbCk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKGlucHV0LCBlcnJvcnMsIGZpbmFsKQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgcGFzcwoKY2xhc3MgU3RyZWFtUmVhZGVyKENvZGVjLGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUoaW5wdXQsIGVycm9ycywgRmFsc2UpCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0ncmF3LXVuaWNvZGUtZXNjYXBlJywKICAgICAgICBlbmNvZGU9Q29kZWMuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYy5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICkKUEsDBBQAAAAAAAIgo1YGDyVckAkAAJAJAAATAAAAZW5jb2RpbmdzL3JvdF8xMy5weSMhL3Vzci9iaW4vZW52IHB5dGhvbgoiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGZvciBST1QxMy4KClRoaXMgY29kZWMgZGUvZW5jb2RlcyBmcm9tIHN0ciB0byBzdHIuCgpXcml0dGVuIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyAobWFsQGxlbWJ1cmcuY29tKS4KIiIiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIChzdHIudHJhbnNsYXRlKGlucHV0LCByb3QxM19tYXApLCBsZW4oaW5wdXQpKQoKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIChzdHIudHJhbnNsYXRlKGlucHV0LCByb3QxM19tYXApLCBsZW4oaW5wdXQpKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBzdHIudHJhbnNsYXRlKGlucHV0LCByb3QxM19tYXApCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIHN0ci50cmFuc2xhdGUoaW5wdXQsIHJvdDEzX21hcCkKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdyb3QtMTMnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBfaXNfdGV4dF9lbmNvZGluZz1GYWxzZSwKICAgICkKCiMjIyBNYXAKCnJvdDEzX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKcm90MTNfbWFwLnVwZGF0ZSh7CiAgIDB4MDA0MTogMHgwMDRlLAogICAweDAwNDI6IDB4MDA0ZiwKICAgMHgwMDQzOiAweDAwNTAsCiAgIDB4MDA0NDogMHgwMDUxLAogICAweDAwNDU6IDB4MDA1MiwKICAgMHgwMDQ2OiAweDAwNTMsCiAgIDB4MDA0NzogMHgwMDU0LAogICAweDAwNDg6IDB4MDA1NSwKICAgMHgwMDQ5OiAweDAwNTYsCiAgIDB4MDA0YTogMHgwMDU3LAogICAweDAwNGI6IDB4MDA1OCwKICAgMHgwMDRjOiAweDAwNTksCiAgIDB4MDA0ZDogMHgwMDVhLAogICAweDAwNGU6IDB4MDA0MSwKICAgMHgwMDRmOiAweDAwNDIsCiAgIDB4MDA1MDogMHgwMDQzLAogICAweDAwNTE6IDB4MDA0NCwKICAgMHgwMDUyOiAweDAwNDUsCiAgIDB4MDA1MzogMHgwMDQ2LAogICAweDAwNTQ6IDB4MDA0NywKICAgMHgwMDU1OiAweDAwNDgsCiAgIDB4MDA1NjogMHgwMDQ5LAogICAweDAwNTc6IDB4MDA0YSwKICAgMHgwMDU4OiAweDAwNGIsCiAgIDB4MDA1OTogMHgwMDRjLAogICAweDAwNWE6IDB4MDA0ZCwKICAgMHgwMDYxOiAweDAwNmUsCiAgIDB4MDA2MjogMHgwMDZmLAogICAweDAwNjM6IDB4MDA3MCwKICAgMHgwMDY0OiAweDAwNzEsCiAgIDB4MDA2NTogMHgwMDcyLAogICAweDAwNjY6IDB4MDA3MywKICAgMHgwMDY3OiAweDAwNzQsCiAgIDB4MDA2ODogMHgwMDc1LAogICAweDAwNjk6IDB4MDA3NiwKICAgMHgwMDZhOiAweDAwNzcsCiAgIDB4MDA2YjogMHgwMDc4LAogICAweDAwNmM6IDB4MDA3OSwKICAgMHgwMDZkOiAweDAwN2EsCiAgIDB4MDA2ZTogMHgwMDYxLAogICAweDAwNmY6IDB4MDA2MiwKICAgMHgwMDcwOiAweDAwNjMsCiAgIDB4MDA3MTogMHgwMDY0LAogICAweDAwNzI6IDB4MDA2NSwKICAgMHgwMDczOiAweDAwNjYsCiAgIDB4MDA3NDogMHgwMDY3LAogICAweDAwNzU6IDB4MDA2OCwKICAgMHgwMDc2OiAweDAwNjksCiAgIDB4MDA3NzogMHgwMDZhLAogICAweDAwNzg6IDB4MDA2YiwKICAgMHgwMDc5OiAweDAwNmMsCiAgIDB4MDA3YTogMHgwMDZkLAp9KQoKIyMjIEZpbHRlciBBUEkKCmRlZiByb3QxMyhpbmZpbGUsIG91dGZpbGUpOgogICAgb3V0ZmlsZS53cml0ZShjb2RlY3MuZW5jb2RlKGluZmlsZS5yZWFkKCksICdyb3QtMTMnKSkKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBpbXBvcnQgc3lzCiAgICByb3QxMyhzeXMuc3RkaW4sIHN5cy5zdGRvdXQpClBLAwQUAAAAAAACIKNWKDlB0g8EAAAPBAAAFgAAAGVuY29kaW5ncy9zaGlmdF9qaXMucHkjCiMgc2hpZnRfamlzLnB5OiBQeXRob24gVW5pY29kZSBDb2RlYyBmb3IgU0hJRlRfSklTCiMKIyBXcml0dGVuIGJ5IEh5ZS1TaGlrIENoYW5nIDxwZXJreUBGcmVlQlNELm9yZz4KIwoKaW1wb3J0IF9jb2RlY3NfanAsIGNvZGVjcwppbXBvcnQgX211bHRpYnl0ZWNvZGVjIGFzIG1iYwoKY29kZWMgPSBfY29kZWNzX2pwLmdldGNvZGVjKCdzaGlmdF9qaXMnKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGVuY29kZSA9IGNvZGVjLmVuY29kZQogICAgZGVjb2RlID0gY29kZWMuZGVjb2RlCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIobWJjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgbWJjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciwgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIsIGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgY29kZWMgPSBjb2RlYwoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSdzaGlmdF9qaXMnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAIgo1a4bp4ZIwQAACMEAAAbAAAAZW5jb2RpbmdzL3NoaWZ0X2ppc18yMDA0LnB5IwojIHNoaWZ0X2ppc18yMDA0LnB5OiBQeXRob24gVW5pY29kZSBDb2RlYyBmb3IgU0hJRlRfSklTXzIwMDQKIwojIFdyaXR0ZW4gYnkgSHllLVNoaWsgQ2hhbmcgPHBlcmt5QEZyZWVCU0Qub3JnPgojCgppbXBvcnQgX2NvZGVjc19qcCwgY29kZWNzCmltcG9ydCBfbXVsdGlieXRlY29kZWMgYXMgbWJjCgpjb2RlYyA9IF9jb2RlY3NfanAuZ2V0Y29kZWMoJ3NoaWZ0X2ppc18yMDA0JykKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICBlbmNvZGUgPSBjb2RlYy5lbmNvZGUKICAgIGRlY29kZSA9IGNvZGVjLmRlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIEluY3JlbWVudGFsRGVjb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGNvZGVjID0gY29kZWMKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nc2hpZnRfamlzXzIwMDQnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAIgo1Z+5sw7IwQAACMEAAAbAAAAZW5jb2RpbmdzL3NoaWZ0X2ppc3gwMjEzLnB5IwojIHNoaWZ0X2ppc3gwMjEzLnB5OiBQeXRob24gVW5pY29kZSBDb2RlYyBmb3IgU0hJRlRfSklTWDAyMTMKIwojIFdyaXR0ZW4gYnkgSHllLVNoaWsgQ2hhbmcgPHBlcmt5QEZyZWVCU0Qub3JnPgojCgppbXBvcnQgX2NvZGVjc19qcCwgY29kZWNzCmltcG9ydCBfbXVsdGlieXRlY29kZWMgYXMgbWJjCgpjb2RlYyA9IF9jb2RlY3NfanAuZ2V0Y29kZWMoJ3NoaWZ0X2ppc3gwMjEzJykKCmNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICBlbmNvZGUgPSBjb2RlYy5lbmNvZGUKICAgIGRlY29kZSA9IGNvZGVjLmRlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKG1iYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGNvZGVjID0gY29kZWMKCmNsYXNzIEluY3JlbWVudGFsRGVjb2RlcihtYmMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBjb2RlYyA9IGNvZGVjCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIG1iYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY29kZWMgPSBjb2RlYwoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBtYmMuTXVsdGlieXRlU3RyZWFtV3JpdGVyLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGNvZGVjID0gY29kZWMKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0nc2hpZnRfamlzeDAyMTMnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAIgo1YJVeY/DDAAAAwwAAAUAAAAZW5jb2RpbmdzL3Rpc182MjAucHkiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIHRpc182MjAgZ2VuZXJhdGVkIGZyb20gJ3B5dGhvbi1tYXBwaW5ncy9USVMtNjIwLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KCiIiIiMiCgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKCiAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCgpjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBwYXNzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBwYXNzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0ndGlzLTYyMCcsCiAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAogICAgICAgIGRlY29kZT1Db2RlYygpLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQoKCiMjIyBEZWNvZGluZyBUYWJsZQoKZGVjb2RpbmdfdGFibGUgPSAoCiAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAogICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCiAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCiAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQogICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCiAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAogICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQogICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgogICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAogICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgogICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQogICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQogICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCiAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCiAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQogICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgogICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgogICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgogICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCiAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSwogICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCiAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgogICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgogICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAogICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCiAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSwogICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgogICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCiAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCiAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCiAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUwogICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQogICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCiAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCiAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAogICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgogICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgogICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCiAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgogICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCiAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQogICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAogICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRwogICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgogICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQogICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAogICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUwogICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgogICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQogICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCiAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCiAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCiAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgogICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCiAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQogICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCiAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAogICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSwogICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCiAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgogICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCiAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQogICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCiAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAogICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCiAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVwogICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCiAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgogICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAogICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCiAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KICAgICdceDgyJyAgICAgIyAgMHg4MiAtPiA8Y29udHJvbD4KICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KICAgICdceDg0JyAgICAgIyAgMHg4NCAtPiA8Y29udHJvbD4KICAgICdceDg1JyAgICAgIyAgMHg4NSAtPiA8Y29udHJvbD4KICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KICAgICdceDg3JyAgICAgIyAgMHg4NyAtPiA8Y29udHJvbD4KICAgICdceDg4JyAgICAgIyAgMHg4OCAtPiA8Y29udHJvbD4KICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KICAgICdceDhhJyAgICAgIyAgMHg4QSAtPiA8Y29udHJvbD4KICAgICdceDhiJyAgICAgIyAgMHg4QiAtPiA8Y29udHJvbD4KICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KICAgICdceDhkJyAgICAgIyAgMHg4RCAtPiA8Y29udHJvbD4KICAgICdceDhlJyAgICAgIyAgMHg4RSAtPiA8Y29udHJvbD4KICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KICAgICdceDkwJyAgICAgIyAgMHg5MCAtPiA8Y29udHJvbD4KICAgICdceDkxJyAgICAgIyAgMHg5MSAtPiA8Y29udHJvbD4KICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KICAgICdceDkzJyAgICAgIyAgMHg5MyAtPiA8Y29udHJvbD4KICAgICdceDk0JyAgICAgIyAgMHg5NCAtPiA8Y29udHJvbD4KICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KICAgICdceDk2JyAgICAgIyAgMHg5NiAtPiA8Y29udHJvbD4KICAgICdceDk3JyAgICAgIyAgMHg5NyAtPiA8Y29udHJvbD4KICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KICAgICdceDk5JyAgICAgIyAgMHg5OSAtPiA8Y29udHJvbD4KICAgICdceDlhJyAgICAgIyAgMHg5QSAtPiA8Y29udHJvbD4KICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KICAgICdceDljJyAgICAgIyAgMHg5QyAtPiA8Y29udHJvbD4KICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KICAgICdceDlmJyAgICAgIyAgMHg5RiAtPiA8Y29udHJvbD4KICAgICdcdWZmZmUnCiAgICAnXHUwZTAxJyAgICMgIDB4QTEgLT4gVEhBSSBDSEFSQUNURVIgS08gS0FJCiAgICAnXHUwZTAyJyAgICMgIDB4QTIgLT4gVEhBSSBDSEFSQUNURVIgS0hPIEtIQUkKICAgICdcdTBlMDMnICAgIyAgMHhBMyAtPiBUSEFJIENIQVJBQ1RFUiBLSE8gS0hVQVQKICAgICdcdTBlMDQnICAgIyAgMHhBNCAtPiBUSEFJIENIQVJBQ1RFUiBLSE8gS0hXQUkKICAgICdcdTBlMDUnICAgIyAgMHhBNSAtPiBUSEFJIENIQVJBQ1RFUiBLSE8gS0hPTgogICAgJ1x1MGUwNicgICAjICAweEE2IC0+IFRIQUkgQ0hBUkFDVEVSIEtITyBSQUtIQU5HCiAgICAnXHUwZTA3JyAgICMgIDB4QTcgLT4gVEhBSSBDSEFSQUNURVIgTkdPIE5HVQogICAgJ1x1MGUwOCcgICAjICAweEE4IC0+IFRIQUkgQ0hBUkFDVEVSIENITyBDSEFOCiAgICAnXHUwZTA5JyAgICMgIDB4QTkgLT4gVEhBSSBDSEFSQUNURVIgQ0hPIENISU5HCiAgICAnXHUwZTBhJyAgICMgIDB4QUEgLT4gVEhBSSBDSEFSQUNURVIgQ0hPIENIQU5HCiAgICAnXHUwZTBiJyAgICMgIDB4QUIgLT4gVEhBSSBDSEFSQUNURVIgU08gU08KICAgICdcdTBlMGMnICAgIyAgMHhBQyAtPiBUSEFJIENIQVJBQ1RFUiBDSE8gQ0hPRQogICAgJ1x1MGUwZCcgICAjICAweEFEIC0+IFRIQUkgQ0hBUkFDVEVSIFlPIFlJTkcKICAgICdcdTBlMGUnICAgIyAgMHhBRSAtPiBUSEFJIENIQVJBQ1RFUiBETyBDSEFEQQogICAgJ1x1MGUwZicgICAjICAweEFGIC0+IFRIQUkgQ0hBUkFDVEVSIFRPIFBBVEFLCiAgICAnXHUwZTEwJyAgICMgIDB4QjAgLT4gVEhBSSBDSEFSQUNURVIgVEhPIFRIQU4KICAgICdcdTBlMTEnICAgIyAgMHhCMSAtPiBUSEFJIENIQVJBQ1RFUiBUSE8gTkFOR01PTlRITwogICAgJ1x1MGUxMicgICAjICAweEIyIC0+IFRIQUkgQ0hBUkFDVEVSIFRITyBQSFVUSEFPCiAgICAnXHUwZTEzJyAgICMgIDB4QjMgLT4gVEhBSSBDSEFSQUNURVIgTk8gTkVOCiAgICAnXHUwZTE0JyAgICMgIDB4QjQgLT4gVEhBSSBDSEFSQUNURVIgRE8gREVLCiAgICAnXHUwZTE1JyAgICMgIDB4QjUgLT4gVEhBSSBDSEFSQUNURVIgVE8gVEFPCiAgICAnXHUwZTE2JyAgICMgIDB4QjYgLT4gVEhBSSBDSEFSQUNURVIgVEhPIFRIVU5HCiAgICAnXHUwZTE3JyAgICMgIDB4QjcgLT4gVEhBSSBDSEFSQUNURVIgVEhPIFRIQUhBTgogICAgJ1x1MGUxOCcgICAjICAweEI4IC0+IFRIQUkgQ0hBUkFDVEVSIFRITyBUSE9ORwogICAgJ1x1MGUxOScgICAjICAweEI5IC0+IFRIQUkgQ0hBUkFDVEVSIE5PIE5VCiAgICAnXHUwZTFhJyAgICMgIDB4QkEgLT4gVEhBSSBDSEFSQUNURVIgQk8gQkFJTUFJCiAgICAnXHUwZTFiJyAgICMgIDB4QkIgLT4gVEhBSSBDSEFSQUNURVIgUE8gUExBCiAgICAnXHUwZTFjJyAgICMgIDB4QkMgLT4gVEhBSSBDSEFSQUNURVIgUEhPIFBIVU5HCiAgICAnXHUwZTFkJyAgICMgIDB4QkQgLT4gVEhBSSBDSEFSQUNURVIgRk8gRkEKICAgICdcdTBlMWUnICAgIyAgMHhCRSAtPiBUSEFJIENIQVJBQ1RFUiBQSE8gUEhBTgogICAgJ1x1MGUxZicgICAjICAweEJGIC0+IFRIQUkgQ0hBUkFDVEVSIEZPIEZBTgogICAgJ1x1MGUyMCcgICAjICAweEMwIC0+IFRIQUkgQ0hBUkFDVEVSIFBITyBTQU1QSEFPCiAgICAnXHUwZTIxJyAgICMgIDB4QzEgLT4gVEhBSSBDSEFSQUNURVIgTU8gTUEKICAgICdcdTBlMjInICAgIyAgMHhDMiAtPiBUSEFJIENIQVJBQ1RFUiBZTyBZQUsKICAgICdcdTBlMjMnICAgIyAgMHhDMyAtPiBUSEFJIENIQVJBQ1RFUiBSTyBSVUEKICAgICdcdTBlMjQnICAgIyAgMHhDNCAtPiBUSEFJIENIQVJBQ1RFUiBSVQogICAgJ1x1MGUyNScgICAjICAweEM1IC0+IFRIQUkgQ0hBUkFDVEVSIExPIExJTkcKICAgICdcdTBlMjYnICAgIyAgMHhDNiAtPiBUSEFJIENIQVJBQ1RFUiBMVQogICAgJ1x1MGUyNycgICAjICAweEM3IC0+IFRIQUkgQ0hBUkFDVEVSIFdPIFdBRU4KICAgICdcdTBlMjgnICAgIyAgMHhDOCAtPiBUSEFJIENIQVJBQ1RFUiBTTyBTQUxBCiAgICAnXHUwZTI5JyAgICMgIDB4QzkgLT4gVEhBSSBDSEFSQUNURVIgU08gUlVTSQogICAgJ1x1MGUyYScgICAjICAweENBIC0+IFRIQUkgQ0hBUkFDVEVSIFNPIFNVQQogICAgJ1x1MGUyYicgICAjICAweENCIC0+IFRIQUkgQ0hBUkFDVEVSIEhPIEhJUAogICAgJ1x1MGUyYycgICAjICAweENDIC0+IFRIQUkgQ0hBUkFDVEVSIExPIENIVUxBCiAgICAnXHUwZTJkJyAgICMgIDB4Q0QgLT4gVEhBSSBDSEFSQUNURVIgTyBBTkcKICAgICdcdTBlMmUnICAgIyAgMHhDRSAtPiBUSEFJIENIQVJBQ1RFUiBITyBOT0tIVUsKICAgICdcdTBlMmYnICAgIyAgMHhDRiAtPiBUSEFJIENIQVJBQ1RFUiBQQUlZQU5OT0kKICAgICdcdTBlMzAnICAgIyAgMHhEMCAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIEEKICAgICdcdTBlMzEnICAgIyAgMHhEMSAtPiBUSEFJIENIQVJBQ1RFUiBNQUkgSEFOLUFLQVQKICAgICdcdTBlMzInICAgIyAgMHhEMiAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIEFBCiAgICAnXHUwZTMzJyAgICMgIDB4RDMgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBBTQogICAgJ1x1MGUzNCcgICAjICAweEQ0IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgSQogICAgJ1x1MGUzNScgICAjICAweEQ1IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgSUkKICAgICdcdTBlMzYnICAgIyAgMHhENiAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIFVFCiAgICAnXHUwZTM3JyAgICMgIDB4RDcgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBVRUUKICAgICdcdTBlMzgnICAgIyAgMHhEOCAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIFUKICAgICdcdTBlMzknICAgIyAgMHhEOSAtPiBUSEFJIENIQVJBQ1RFUiBTQVJBIFVVCiAgICAnXHUwZTNhJyAgICMgIDB4REEgLT4gVEhBSSBDSEFSQUNURVIgUEhJTlRIVQogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKICAgICdcdTBlM2YnICAgIyAgMHhERiAtPiBUSEFJIENVUlJFTkNZIFNZTUJPTCBCQUhUCiAgICAnXHUwZTQwJyAgICMgIDB4RTAgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBFCiAgICAnXHUwZTQxJyAgICMgIDB4RTEgLT4gVEhBSSBDSEFSQUNURVIgU0FSQSBBRQogICAgJ1x1MGU0MicgICAjICAweEUyIC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgTwogICAgJ1x1MGU0MycgICAjICAweEUzIC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTVVBTgogICAgJ1x1MGU0NCcgICAjICAweEU0IC0+IFRIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTUFMQUkKICAgICdcdTBlNDUnICAgIyAgMHhFNSAtPiBUSEFJIENIQVJBQ1RFUiBMQUtLSEFOR1lBTwogICAgJ1x1MGU0NicgICAjICAweEU2IC0+IFRIQUkgQ0hBUkFDVEVSIE1BSVlBTU9LCiAgICAnXHUwZTQ3JyAgICMgIDB4RTcgLT4gVEhBSSBDSEFSQUNURVIgTUFJVEFJS0hVCiAgICAnXHUwZTQ4JyAgICMgIDB4RTggLT4gVEhBSSBDSEFSQUNURVIgTUFJIEVLCiAgICAnXHUwZTQ5JyAgICMgIDB4RTkgLT4gVEhBSSBDSEFSQUNURVIgTUFJIFRITwogICAgJ1x1MGU0YScgICAjICAweEVBIC0+IFRIQUkgQ0hBUkFDVEVSIE1BSSBUUkkKICAgICdcdTBlNGInICAgIyAgMHhFQiAtPiBUSEFJIENIQVJBQ1RFUiBNQUkgQ0hBVFRBV0EKICAgICdcdTBlNGMnICAgIyAgMHhFQyAtPiBUSEFJIENIQVJBQ1RFUiBUSEFOVEhBS0hBVAogICAgJ1x1MGU0ZCcgICAjICAweEVEIC0+IFRIQUkgQ0hBUkFDVEVSIE5JS0hBSElUCiAgICAnXHUwZTRlJyAgICMgIDB4RUUgLT4gVEhBSSBDSEFSQUNURVIgWUFNQUtLQU4KICAgICdcdTBlNGYnICAgIyAgMHhFRiAtPiBUSEFJIENIQVJBQ1RFUiBGT05HTUFOCiAgICAnXHUwZTUwJyAgICMgIDB4RjAgLT4gVEhBSSBESUdJVCBaRVJPCiAgICAnXHUwZTUxJyAgICMgIDB4RjEgLT4gVEhBSSBESUdJVCBPTkUKICAgICdcdTBlNTInICAgIyAgMHhGMiAtPiBUSEFJIERJR0lUIFRXTwogICAgJ1x1MGU1MycgICAjICAweEYzIC0+IFRIQUkgRElHSVQgVEhSRUUKICAgICdcdTBlNTQnICAgIyAgMHhGNCAtPiBUSEFJIERJR0lUIEZPVVIKICAgICdcdTBlNTUnICAgIyAgMHhGNSAtPiBUSEFJIERJR0lUIEZJVkUKICAgICdcdTBlNTYnICAgIyAgMHhGNiAtPiBUSEFJIERJR0lUIFNJWAogICAgJ1x1MGU1NycgICAjICAweEY3IC0+IFRIQUkgRElHSVQgU0VWRU4KICAgICdcdTBlNTgnICAgIyAgMHhGOCAtPiBUSEFJIERJR0lUIEVJR0hUCiAgICAnXHUwZTU5JyAgICMgIDB4RjkgLT4gVEhBSSBESUdJVCBOSU5FCiAgICAnXHUwZTVhJyAgICMgIDB4RkEgLT4gVEhBSSBDSEFSQUNURVIgQU5HS0hBTktIVQogICAgJ1x1MGU1YicgICAjICAweEZCIC0+IFRIQUkgQ0hBUkFDVEVSIEtIT01VVAogICAgJ1x1ZmZmZScKICAgICdcdWZmZmUnCiAgICAnXHVmZmZlJwogICAgJ1x1ZmZmZScKKQoKIyMjIEVuY29kaW5nIHRhYmxlCmVuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpQSwMEFAAAAAAAAiCjVhJxqFITBQAAEwUAABYAAABlbmNvZGluZ3MvdW5kZWZpbmVkLnB5IiIiIFB5dGhvbiAndW5kZWZpbmVkJyBDb2RlYwoKICAgIFRoaXMgY29kZWMgd2lsbCBhbHdheXMgcmFpc2UgYSBWYWx1ZUVycm9yIGV4Y2VwdGlvbiB3aGVuIGJlaW5nCiAgICB1c2VkLiBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRoZSBzaXRlLnB5IGZpbGUgdG8gc3dpdGNoIG9mZgogICAgYXV0b21hdGljIHN0cmluZyB0byBVbmljb2RlIGNvZXJjaW9uLgoKV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCgooYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgoKIiIiCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigidW5kZWZpbmVkIGVuY29kaW5nIikKCiAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoInVuZGVmaW5lZCBlbmNvZGluZyIpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJ1bmRlZmluZWQgZW5jb2RpbmciKQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigidW5kZWZpbmVkIGVuY29kaW5nIikKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIHBhc3MKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSd1bmRlZmluZWQnLAogICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICkKUEsDBBQAAAAAAAMgo1bzvrqdGAUAABgFAAAbAAAAZW5jb2RpbmdzL3VuaWNvZGVfZXNjYXBlLnB5IiIiIFB5dGhvbiAndW5pY29kZS1lc2NhcGUnIENvZGVjCgoKV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCgooYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgoKIiIiCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgoKICAgICMgTm90ZTogQmluZGluZyB0aGVzZSBhcyBDIGZ1bmN0aW9ucyB3aWxsIHJlc3VsdCBpbiB0aGUgY2xhc3Mgbm90CiAgICAjIGNvbnZlcnRpbmcgdGhlbSB0byBtZXRob2RzLiBUaGlzIGlzIGludGVuZGVkLgogICAgZW5jb2RlID0gY29kZWNzLnVuaWNvZGVfZXNjYXBlX2VuY29kZQogICAgZGVjb2RlID0gY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MudW5pY29kZV9lc2NhcGVfZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycylbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIF9idWZmZXJfZGVjb2RlKHNlbGYsIGlucHV0LCBlcnJvcnMsIGZpbmFsKToKICAgICAgICByZXR1cm4gY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZShpbnB1dCwgZXJyb3JzLCBmaW5hbCkKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIHBhc3MKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy51bmljb2RlX2VzY2FwZV9kZWNvZGUoaW5wdXQsIGVycm9ycywgRmFsc2UpCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0ndW5pY29kZS1lc2NhcGUnLAogICAgICAgIGVuY29kZT1Db2RlYy5lbmNvZGUsCiAgICAgICAgZGVjb2RlPUNvZGVjLmRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgKQpQSwMEFAAAAAAAAyCjVoI3IxJ0FAAAdBQAABMAAABlbmNvZGluZ3MvdXRmXzE2LnB5IiIiIFB5dGhvbiAndXRmLTE2JyBDb2RlYwoKCldyaXR0ZW4gYnkgTWFyYy1BbmRyZSBMZW1idXJnIChtYWxAbGVtYnVyZy5jb20pLgoKKGMpIENvcHlyaWdodCBDTlJJLCBBbGwgUmlnaHRzIFJlc2VydmVkLiBOTyBXQVJSQU5UWS4KCiIiIgppbXBvcnQgY29kZWNzLCBzeXMKCiMjIyBDb2RlYyBBUElzCgplbmNvZGUgPSBjb2RlY3MudXRmXzE2X2VuY29kZQoKZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIHJldHVybiBjb2RlY3MudXRmXzE2X2RlY29kZShpbnB1dCwgZXJyb3JzLCBUcnVlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlci5fX2luaXRfXyhzZWxmLCBlcnJvcnMpCiAgICAgICAgc2VsZi5lbmNvZGVyID0gTm9uZQoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICBpZiBzZWxmLmVuY29kZXIgaXMgTm9uZToKICAgICAgICAgICAgcmVzdWx0ID0gY29kZWNzLnV0Zl8xNl9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQogICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgogICAgICAgICAgICAgICAgc2VsZi5lbmNvZGVyID0gY29kZWNzLnV0Zl8xNl9sZV9lbmNvZGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuZW5jb2RlciA9IGNvZGVjcy51dGZfMTZfYmVfZW5jb2RlCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICByZXR1cm4gc2VsZi5lbmNvZGVyKGlucHV0LCBzZWxmLmVycm9ycylbMF0KCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlci5yZXNldChzZWxmKQogICAgICAgIHNlbGYuZW5jb2RlciA9IE5vbmUKCiAgICBkZWYgZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIyBzdGF0ZSBpbmZvIHdlIHJldHVybiB0byB0aGUgY2FsbGVyOgogICAgICAgICMgMDogc3RyZWFtIGlzIGluIG5hdHVyYWwgb3JkZXIgZm9yIHRoaXMgcGxhdGZvcm0KICAgICAgICAjIDI6IGVuZGlhbm5lc3MgaGFzbid0IGJlZW4gZGV0ZXJtaW5lZCB5ZXQKICAgICAgICAjICh3ZSdyZSBuZXZlciB3cml0aW5nIGluIHVubmF0dXJhbCBvcmRlcikKICAgICAgICByZXR1cm4gKDIgaWYgc2VsZi5lbmNvZGVyIGlzIE5vbmUgZWxzZSAwKQoKICAgIGRlZiBzZXRzdGF0ZShzZWxmLCBzdGF0ZSk6CiAgICAgICAgaWYgc3RhdGU6CiAgICAgICAgICAgIHNlbGYuZW5jb2RlciA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgogICAgICAgICAgICAgICAgc2VsZi5lbmNvZGVyID0gY29kZWNzLnV0Zl8xNl9sZV9lbmNvZGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuZW5jb2RlciA9IGNvZGVjcy51dGZfMTZfYmVfZW5jb2RlCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlci5fX2luaXRfXyhzZWxmLCBlcnJvcnMpCiAgICAgICAgc2VsZi5kZWNvZGVyID0gTm9uZQoKICAgIGRlZiBfYnVmZmVyX2RlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzLCBmaW5hbCk6CiAgICAgICAgaWYgc2VsZi5kZWNvZGVyIGlzIE5vbmU6CiAgICAgICAgICAgIChvdXRwdXQsIGNvbnN1bWVkLCBieXRlb3JkZXIpID0gXAogICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8xNl9leF9kZWNvZGUoaW5wdXQsIGVycm9ycywgMCwgZmluYWwpCiAgICAgICAgICAgIGlmIGJ5dGVvcmRlciA9PSAtMToKICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlciA9IGNvZGVjcy51dGZfMTZfbGVfZGVjb2RlCiAgICAgICAgICAgIGVsaWYgYnl0ZW9yZGVyID09IDE6CiAgICAgICAgICAgICAgICBzZWxmLmRlY29kZXIgPSBjb2RlY3MudXRmXzE2X2JlX2RlY29kZQogICAgICAgICAgICBlbGlmIGNvbnN1bWVkID49IDI6CiAgICAgICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoIlVURi0xNiBzdHJlYW0gZG9lcyBub3Qgc3RhcnQgd2l0aCBCT00iKQogICAgICAgICAgICByZXR1cm4gKG91dHB1dCwgY29uc3VtZWQpCiAgICAgICAgcmV0dXJuIHNlbGYuZGVjb2RlcihpbnB1dCwgc2VsZi5lcnJvcnMsIGZpbmFsKQoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIucmVzZXQoc2VsZikKICAgICAgICBzZWxmLmRlY29kZXIgPSBOb25lCgogICAgZGVmIGdldHN0YXRlKHNlbGYpOgogICAgICAgICMgYWRkaXRpb25hbCBzdGF0ZSBpbmZvIGZyb20gdGhlIGJhc2UgY2xhc3MgbXVzdCBiZSBOb25lIGhlcmUsCiAgICAgICAgIyBhcyBpdCBpc24ndCBwYXNzZWQgYWxvbmcgdG8gdGhlIGNhbGxlcgogICAgICAgIHN0YXRlID0gY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyLmdldHN0YXRlKHNlbGYpWzBdCiAgICAgICAgIyBhZGRpdGlvbmFsIHN0YXRlIGluZm8gd2UgcGFzcyB0byB0aGUgY2FsbGVyOgogICAgICAgICMgMDogc3RyZWFtIGlzIGluIG5hdHVyYWwgb3JkZXIgZm9yIHRoaXMgcGxhdGZvcm0KICAgICAgICAjIDE6IHN0cmVhbSBpcyBpbiB1bm5hdHVyYWwgb3JkZXIKICAgICAgICAjIDI6IGVuZGlhbm5lc3MgaGFzbid0IGJlZW4gZGV0ZXJtaW5lZCB5ZXQKICAgICAgICBpZiBzZWxmLmRlY29kZXIgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIChzdGF0ZSwgMikKICAgICAgICBhZGRzdGF0ZSA9IGludCgoc3lzLmJ5dGVvcmRlciA9PSAiYmlnIikgIT0KICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kZWNvZGVyIGlzIGNvZGVjcy51dGZfMTZfYmVfZGVjb2RlKSkKICAgICAgICByZXR1cm4gKHN0YXRlLCBhZGRzdGF0ZSkKCiAgICBkZWYgc2V0c3RhdGUoc2VsZiwgc3RhdGUpOgogICAgICAgICMgc3RhdGVbMV0gd2lsbCBiZSBpZ25vcmVkIGJ5IEJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyLnNldHN0YXRlKCkKICAgICAgICBjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIuc2V0c3RhdGUoc2VsZiwgc3RhdGUpCiAgICAgICAgc3RhdGUgPSBzdGF0ZVsxXQogICAgICAgIGlmIHN0YXRlID09IDA6CiAgICAgICAgICAgIHNlbGYuZGVjb2RlciA9IChjb2RlY3MudXRmXzE2X2JlX2RlY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAiYmlnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb2RlY3MudXRmXzE2X2xlX2RlY29kZSkKICAgICAgICBlbGlmIHN0YXRlID09IDE6CiAgICAgICAgICAgIHNlbGYuZGVjb2RlciA9IChjb2RlY3MudXRmXzE2X2xlX2RlY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAiYmlnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb2RlY3MudXRmXzE2X2JlX2RlY29kZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmRlY29kZXIgPSBOb25lCgpjbGFzcyBTdHJlYW1Xcml0ZXIoY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIGNvZGVjcy5TdHJlYW1Xcml0ZXIuX19pbml0X18oc2VsZiwgc3RyZWFtLCBlcnJvcnMpCiAgICAgICAgc2VsZi5lbmNvZGVyID0gTm9uZQoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBjb2RlY3MuU3RyZWFtV3JpdGVyLnJlc2V0KHNlbGYpCiAgICAgICAgc2VsZi5lbmNvZGVyID0gTm9uZQoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgaWYgc2VsZi5lbmNvZGVyIGlzIE5vbmU6CiAgICAgICAgICAgIHJlc3VsdCA9IGNvZGVjcy51dGZfMTZfZW5jb2RlKGlucHV0LCBlcnJvcnMpCiAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CiAgICAgICAgICAgICAgICBzZWxmLmVuY29kZXIgPSBjb2RlY3MudXRmXzE2X2xlX2VuY29kZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5lbmNvZGVyID0gY29kZWNzLnV0Zl8xNl9iZV9lbmNvZGUKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmVuY29kZXIoaW5wdXQsIGVycm9ycykKCmNsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgY29kZWNzLlN0cmVhbVJlYWRlci5yZXNldChzZWxmKQogICAgICAgIHRyeToKICAgICAgICAgICAgZGVsIHNlbGYuZGVjb2RlCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICAob2JqZWN0LCBjb25zdW1lZCwgYnl0ZW9yZGVyKSA9IFwKICAgICAgICAgICAgY29kZWNzLnV0Zl8xNl9leF9kZWNvZGUoaW5wdXQsIGVycm9ycywgMCwgRmFsc2UpCiAgICAgICAgaWYgYnl0ZW9yZGVyID09IC0xOgogICAgICAgICAgICBzZWxmLmRlY29kZSA9IGNvZGVjcy51dGZfMTZfbGVfZGVjb2RlCiAgICAgICAgZWxpZiBieXRlb3JkZXIgPT0gMToKICAgICAgICAgICAgc2VsZi5kZWNvZGUgPSBjb2RlY3MudXRmXzE2X2JlX2RlY29kZQogICAgICAgIGVsaWYgY29uc3VtZWQ+PTI6CiAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigiVVRGLTE2IHN0cmVhbSBkb2VzIG5vdCBzdGFydCB3aXRoIEJPTSIpCiAgICAgICAgcmV0dXJuIChvYmplY3QsIGNvbnN1bWVkKQoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J3V0Zi0xNicsCiAgICAgICAgZW5jb2RlPWVuY29kZSwKICAgICAgICBkZWNvZGU9ZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAADIKNWZXVobw0EAAANBAAAFgAAAGVuY29kaW5ncy91dGZfMTZfYmUucHkiIiIgUHl0aG9uICd1dGYtMTYtYmUnIENvZGVjCgoKV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCgooYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgoKIiIiCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgplbmNvZGUgPSBjb2RlY3MudXRmXzE2X2JlX2VuY29kZQoKZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIHJldHVybiBjb2RlY3MudXRmXzE2X2JlX2RlY29kZShpbnB1dCwgZXJyb3JzLCBUcnVlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MudXRmXzE2X2JlX2VuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIF9idWZmZXJfZGVjb2RlID0gY29kZWNzLnV0Zl8xNl9iZV9kZWNvZGUKCmNsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGVuY29kZSA9IGNvZGVjcy51dGZfMTZfYmVfZW5jb2RlCgpjbGFzcyBTdHJlYW1SZWFkZXIoY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBkZWNvZGUgPSBjb2RlY3MudXRmXzE2X2JlX2RlY29kZQoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J3V0Zi0xNi1iZScsCiAgICAgICAgZW5jb2RlPWVuY29kZSwKICAgICAgICBkZWNvZGU9ZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAADIKNW8Iw/yQ0EAAANBAAAFgAAAGVuY29kaW5ncy91dGZfMTZfbGUucHkiIiIgUHl0aG9uICd1dGYtMTYtbGUnIENvZGVjCgoKV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCgooYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgoKIiIiCmltcG9ydCBjb2RlY3MKCiMjIyBDb2RlYyBBUElzCgplbmNvZGUgPSBjb2RlY3MudXRmXzE2X2xlX2VuY29kZQoKZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIHJldHVybiBjb2RlY3MudXRmXzE2X2xlX2RlY29kZShpbnB1dCwgZXJyb3JzLCBUcnVlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiBjb2RlY3MudXRmXzE2X2xlX2VuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIF9idWZmZXJfZGVjb2RlID0gY29kZWNzLnV0Zl8xNl9sZV9kZWNvZGUKCmNsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGVuY29kZSA9IGNvZGVjcy51dGZfMTZfbGVfZW5jb2RlCgpjbGFzcyBTdHJlYW1SZWFkZXIoY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBkZWNvZGUgPSBjb2RlY3MudXRmXzE2X2xlX2RlY29kZQoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J3V0Zi0xNi1sZScsCiAgICAgICAgZW5jb2RlPWVuY29kZSwKICAgICAgICBkZWNvZGU9ZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAADIKNWmxqskQkUAAAJFAAAEwAAAGVuY29kaW5ncy91dGZfMzIucHkiIiIKUHl0aG9uICd1dGYtMzInIENvZGVjCiIiIgppbXBvcnQgY29kZWNzLCBzeXMKCiMjIyBDb2RlYyBBUElzCgplbmNvZGUgPSBjb2RlY3MudXRmXzMyX2VuY29kZQoKZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIHJldHVybiBjb2RlY3MudXRmXzMyX2RlY29kZShpbnB1dCwgZXJyb3JzLCBUcnVlKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlci5fX2luaXRfXyhzZWxmLCBlcnJvcnMpCiAgICAgICAgc2VsZi5lbmNvZGVyID0gTm9uZQoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICBpZiBzZWxmLmVuY29kZXIgaXMgTm9uZToKICAgICAgICAgICAgcmVzdWx0ID0gY29kZWNzLnV0Zl8zMl9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQogICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgogICAgICAgICAgICAgICAgc2VsZi5lbmNvZGVyID0gY29kZWNzLnV0Zl8zMl9sZV9lbmNvZGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuZW5jb2RlciA9IGNvZGVjcy51dGZfMzJfYmVfZW5jb2RlCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICByZXR1cm4gc2VsZi5lbmNvZGVyKGlucHV0LCBzZWxmLmVycm9ycylbMF0KCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlci5yZXNldChzZWxmKQogICAgICAgIHNlbGYuZW5jb2RlciA9IE5vbmUKCiAgICBkZWYgZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIyBzdGF0ZSBpbmZvIHdlIHJldHVybiB0byB0aGUgY2FsbGVyOgogICAgICAgICMgMDogc3RyZWFtIGlzIGluIG5hdHVyYWwgb3JkZXIgZm9yIHRoaXMgcGxhdGZvcm0KICAgICAgICAjIDI6IGVuZGlhbm5lc3MgaGFzbid0IGJlZW4gZGV0ZXJtaW5lZCB5ZXQKICAgICAgICAjICh3ZSdyZSBuZXZlciB3cml0aW5nIGluIHVubmF0dXJhbCBvcmRlcikKICAgICAgICByZXR1cm4gKDIgaWYgc2VsZi5lbmNvZGVyIGlzIE5vbmUgZWxzZSAwKQoKICAgIGRlZiBzZXRzdGF0ZShzZWxmLCBzdGF0ZSk6CiAgICAgICAgaWYgc3RhdGU6CiAgICAgICAgICAgIHNlbGYuZW5jb2RlciA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgogICAgICAgICAgICAgICAgc2VsZi5lbmNvZGVyID0gY29kZWNzLnV0Zl8zMl9sZV9lbmNvZGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuZW5jb2RlciA9IGNvZGVjcy51dGZfMzJfYmVfZW5jb2RlCgpjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlci5fX2luaXRfXyhzZWxmLCBlcnJvcnMpCiAgICAgICAgc2VsZi5kZWNvZGVyID0gTm9uZQoKICAgIGRlZiBfYnVmZmVyX2RlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzLCBmaW5hbCk6CiAgICAgICAgaWYgc2VsZi5kZWNvZGVyIGlzIE5vbmU6CiAgICAgICAgICAgIChvdXRwdXQsIGNvbnN1bWVkLCBieXRlb3JkZXIpID0gXAogICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9leF9kZWNvZGUoaW5wdXQsIGVycm9ycywgMCwgZmluYWwpCiAgICAgICAgICAgIGlmIGJ5dGVvcmRlciA9PSAtMToKICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlciA9IGNvZGVjcy51dGZfMzJfbGVfZGVjb2RlCiAgICAgICAgICAgIGVsaWYgYnl0ZW9yZGVyID09IDE6CiAgICAgICAgICAgICAgICBzZWxmLmRlY29kZXIgPSBjb2RlY3MudXRmXzMyX2JlX2RlY29kZQogICAgICAgICAgICBlbGlmIGNvbnN1bWVkID49IDQ6CiAgICAgICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoIlVURi0zMiBzdHJlYW0gZG9lcyBub3Qgc3RhcnQgd2l0aCBCT00iKQogICAgICAgICAgICByZXR1cm4gKG91dHB1dCwgY29uc3VtZWQpCiAgICAgICAgcmV0dXJuIHNlbGYuZGVjb2RlcihpbnB1dCwgc2VsZi5lcnJvcnMsIGZpbmFsKQoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIucmVzZXQoc2VsZikKICAgICAgICBzZWxmLmRlY29kZXIgPSBOb25lCgogICAgZGVmIGdldHN0YXRlKHNlbGYpOgogICAgICAgICMgYWRkaXRpb25hbCBzdGF0ZSBpbmZvIGZyb20gdGhlIGJhc2UgY2xhc3MgbXVzdCBiZSBOb25lIGhlcmUsCiAgICAgICAgIyBhcyBpdCBpc24ndCBwYXNzZWQgYWxvbmcgdG8gdGhlIGNhbGxlcgogICAgICAgIHN0YXRlID0gY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyLmdldHN0YXRlKHNlbGYpWzBdCiAgICAgICAgIyBhZGRpdGlvbmFsIHN0YXRlIGluZm8gd2UgcGFzcyB0byB0aGUgY2FsbGVyOgogICAgICAgICMgMDogc3RyZWFtIGlzIGluIG5hdHVyYWwgb3JkZXIgZm9yIHRoaXMgcGxhdGZvcm0KICAgICAgICAjIDE6IHN0cmVhbSBpcyBpbiB1bm5hdHVyYWwgb3JkZXIKICAgICAgICAjIDI6IGVuZGlhbm5lc3MgaGFzbid0IGJlZW4gZGV0ZXJtaW5lZCB5ZXQKICAgICAgICBpZiBzZWxmLmRlY29kZXIgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIChzdGF0ZSwgMikKICAgICAgICBhZGRzdGF0ZSA9IGludCgoc3lzLmJ5dGVvcmRlciA9PSAiYmlnIikgIT0KICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kZWNvZGVyIGlzIGNvZGVjcy51dGZfMzJfYmVfZGVjb2RlKSkKICAgICAgICByZXR1cm4gKHN0YXRlLCBhZGRzdGF0ZSkKCiAgICBkZWYgc2V0c3RhdGUoc2VsZiwgc3RhdGUpOgogICAgICAgICMgc3RhdGVbMV0gd2lsbCBiZSBpZ25vcmVkIGJ5IEJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyLnNldHN0YXRlKCkKICAgICAgICBjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIuc2V0c3RhdGUoc2VsZiwgc3RhdGUpCiAgICAgICAgc3RhdGUgPSBzdGF0ZVsxXQogICAgICAgIGlmIHN0YXRlID09IDA6CiAgICAgICAgICAgIHNlbGYuZGVjb2RlciA9IChjb2RlY3MudXRmXzMyX2JlX2RlY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAiYmlnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb2RlY3MudXRmXzMyX2xlX2RlY29kZSkKICAgICAgICBlbGlmIHN0YXRlID09IDE6CiAgICAgICAgICAgIHNlbGYuZGVjb2RlciA9IChjb2RlY3MudXRmXzMyX2xlX2RlY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAiYmlnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb2RlY3MudXRmXzMyX2JlX2RlY29kZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmRlY29kZXIgPSBOb25lCgpjbGFzcyBTdHJlYW1Xcml0ZXIoY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgIHNlbGYuZW5jb2RlciA9IE5vbmUKICAgICAgICBjb2RlY3MuU3RyZWFtV3JpdGVyLl9faW5pdF9fKHNlbGYsIHN0cmVhbSwgZXJyb3JzKQoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBjb2RlY3MuU3RyZWFtV3JpdGVyLnJlc2V0KHNlbGYpCiAgICAgICAgc2VsZi5lbmNvZGVyID0gTm9uZQoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgaWYgc2VsZi5lbmNvZGVyIGlzIE5vbmU6CiAgICAgICAgICAgIHJlc3VsdCA9IGNvZGVjcy51dGZfMzJfZW5jb2RlKGlucHV0LCBlcnJvcnMpCiAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CiAgICAgICAgICAgICAgICBzZWxmLmVuY29kZXIgPSBjb2RlY3MudXRmXzMyX2xlX2VuY29kZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5lbmNvZGVyID0gY29kZWNzLnV0Zl8zMl9iZV9lbmNvZGUKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmVuY29kZXIoaW5wdXQsIGVycm9ycykKCmNsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgY29kZWNzLlN0cmVhbVJlYWRlci5yZXNldChzZWxmKQogICAgICAgIHRyeToKICAgICAgICAgICAgZGVsIHNlbGYuZGVjb2RlCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICAob2JqZWN0LCBjb25zdW1lZCwgYnl0ZW9yZGVyKSA9IFwKICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9leF9kZWNvZGUoaW5wdXQsIGVycm9ycywgMCwgRmFsc2UpCiAgICAgICAgaWYgYnl0ZW9yZGVyID09IC0xOgogICAgICAgICAgICBzZWxmLmRlY29kZSA9IGNvZGVjcy51dGZfMzJfbGVfZGVjb2RlCiAgICAgICAgZWxpZiBieXRlb3JkZXIgPT0gMToKICAgICAgICAgICAgc2VsZi5kZWNvZGUgPSBjb2RlY3MudXRmXzMyX2JlX2RlY29kZQogICAgICAgIGVsaWYgY29uc3VtZWQ+PTQ6CiAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigiVVRGLTMyIHN0cmVhbSBkb2VzIG5vdCBzdGFydCB3aXRoIEJPTSIpCiAgICAgICAgcmV0dXJuIChvYmplY3QsIGNvbnN1bWVkKQoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J3V0Zi0zMicsCiAgICAgICAgZW5jb2RlPWVuY29kZSwKICAgICAgICBkZWNvZGU9ZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAADIKNW2qO4PaIDAACiAwAAFgAAAGVuY29kaW5ncy91dGZfMzJfYmUucHkiIiIKUHl0aG9uICd1dGYtMzItYmUnIENvZGVjCiIiIgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKZW5jb2RlID0gY29kZWNzLnV0Zl8zMl9iZV9lbmNvZGUKCmRlZiBkZWNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICByZXR1cm4gY29kZWNzLnV0Zl8zMl9iZV9kZWNvZGUoaW5wdXQsIGVycm9ycywgVHJ1ZSkKCmNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICByZXR1cm4gY29kZWNzLnV0Zl8zMl9iZV9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBfYnVmZmVyX2RlY29kZSA9IGNvZGVjcy51dGZfMzJfYmVfZGVjb2RlCgpjbGFzcyBTdHJlYW1Xcml0ZXIoY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBlbmNvZGUgPSBjb2RlY3MudXRmXzMyX2JlX2VuY29kZQoKY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgZGVjb2RlID0gY29kZWNzLnV0Zl8zMl9iZV9kZWNvZGUKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSd1dGYtMzItYmUnLAogICAgICAgIGVuY29kZT1lbmNvZGUsCiAgICAgICAgZGVjb2RlPWRlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgKQpQSwMEFAAAAAAAAyCjVif8yimiAwAAogMAABYAAABlbmNvZGluZ3MvdXRmXzMyX2xlLnB5IiIiClB5dGhvbiAndXRmLTMyLWxlJyBDb2RlYwoiIiIKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmVuY29kZSA9IGNvZGVjcy51dGZfMzJfbGVfZW5jb2RlCgpkZWYgZGVjb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgogICAgcmV0dXJuIGNvZGVjcy51dGZfMzJfbGVfZGVjb2RlKGlucHV0LCBlcnJvcnMsIFRydWUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy51dGZfMzJfbGVfZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycylbMF0KCmNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIpOgogICAgX2J1ZmZlcl9kZWNvZGUgPSBjb2RlY3MudXRmXzMyX2xlX2RlY29kZQoKY2xhc3MgU3RyZWFtV3JpdGVyKGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgZW5jb2RlID0gY29kZWNzLnV0Zl8zMl9sZV9lbmNvZGUKCmNsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGRlY29kZSA9IGNvZGVjcy51dGZfMzJfbGVfZGVjb2RlCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0ndXRmLTMyLWxlJywKICAgICAgICBlbmNvZGU9ZW5jb2RlLAogICAgICAgIGRlY29kZT1kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICkKUEsDBBQAAAAAAAMgo1b7O8FxsgMAALIDAAASAAAAZW5jb2RpbmdzL3V0Zl83LnB5IiIiIFB5dGhvbiAndXRmLTcnIENvZGVjCgpXcml0dGVuIGJ5IEJyaWFuIFF1aW5sYW4gKGJyaWFuQHN3ZWV0YXBwLmNvbSkuCiIiIgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKZW5jb2RlID0gY29kZWNzLnV0Zl83X2VuY29kZQoKZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIHJldHVybiBjb2RlY3MudXRmXzdfZGVjb2RlKGlucHV0LCBlcnJvcnMsIFRydWUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy51dGZfN19lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBfYnVmZmVyX2RlY29kZSA9IGNvZGVjcy51dGZfN19kZWNvZGUKCmNsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGVuY29kZSA9IGNvZGVjcy51dGZfN19lbmNvZGUKCmNsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGRlY29kZSA9IGNvZGVjcy51dGZfN19kZWNvZGUKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSd1dGYtNycsCiAgICAgICAgZW5jb2RlPWVuY29kZSwKICAgICAgICBkZWNvZGU9ZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAADIKNWsv8bve0DAADtAwAAEgAAAGVuY29kaW5ncy91dGZfOC5weSIiIiBQeXRob24gJ3V0Zi04JyBDb2RlYwoKCldyaXR0ZW4gYnkgTWFyYy1BbmRyZSBMZW1idXJnIChtYWxAbGVtYnVyZy5jb20pLgoKKGMpIENvcHlyaWdodCBDTlJJLCBBbGwgUmlnaHRzIFJlc2VydmVkLiBOTyBXQVJSQU5UWS4KCiIiIgppbXBvcnQgY29kZWNzCgojIyMgQ29kZWMgQVBJcwoKZW5jb2RlID0gY29kZWNzLnV0Zl84X2VuY29kZQoKZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIHJldHVybiBjb2RlY3MudXRmXzhfZGVjb2RlKGlucHV0LCBlcnJvcnMsIFRydWUpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgcmV0dXJuIGNvZGVjcy51dGZfOF9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBfYnVmZmVyX2RlY29kZSA9IGNvZGVjcy51dGZfOF9kZWNvZGUKCmNsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGVuY29kZSA9IGNvZGVjcy51dGZfOF9lbmNvZGUKCmNsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKICAgIGRlY29kZSA9IGNvZGVjcy51dGZfOF9kZWNvZGUKCiMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQoKZGVmIGdldHJlZ2VudHJ5KCk6CiAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKICAgICAgICBuYW1lPSd1dGYtOCcsCiAgICAgICAgZW5jb2RlPWVuY29kZSwKICAgICAgICBkZWNvZGU9ZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAADIKNWEEXsuyUQAAAlEAAAFgAAAGVuY29kaW5ncy91dGZfOF9zaWcucHkiIiIgUHl0aG9uICd1dGYtOC1zaWcnIENvZGVjClRoaXMgd29yayBzaW1pbGFyIHRvIFVURi04IHdpdGggdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgoKKiBPbiBlbmNvZGluZy93cml0aW5nIGEgVVRGLTggZW5jb2RlZCBCT00gd2lsbCBiZSBwcmVwZW5kZWQvd3JpdHRlbiBhcyB0aGUKICBmaXJzdCB0aHJlZSBieXRlcy4KCiogT24gZGVjb2RpbmcvcmVhZGluZyBpZiB0aGUgZmlyc3QgdGhyZWUgYnl0ZXMgYXJlIGEgVVRGLTggZW5jb2RlZCBCT00sIHRoZXNlCiAgYnl0ZXMgd2lsbCBiZSBza2lwcGVkLgoiIiIKaW1wb3J0IGNvZGVjcwoKIyMjIENvZGVjIEFQSXMKCmRlZiBlbmNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICByZXR1cm4gKGNvZGVjcy5CT01fVVRGOCArIGNvZGVjcy51dGZfOF9lbmNvZGUoaW5wdXQsIGVycm9ycylbMF0sCiAgICAgICAgICAgIGxlbihpbnB1dCkpCgpkZWYgZGVjb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgogICAgcHJlZml4ID0gMAogICAgaWYgaW5wdXRbOjNdID09IGNvZGVjcy5CT01fVVRGODoKICAgICAgICBpbnB1dCA9IGlucHV0WzM6XQogICAgICAgIHByZWZpeCA9IDMKICAgIChvdXRwdXQsIGNvbnN1bWVkKSA9IGNvZGVjcy51dGZfOF9kZWNvZGUoaW5wdXQsIGVycm9ycywgVHJ1ZSkKICAgIHJldHVybiAob3V0cHV0LCBjb25zdW1lZCtwcmVmaXgpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyLl9faW5pdF9fKHNlbGYsIGVycm9ycykKICAgICAgICBzZWxmLmZpcnN0ID0gMQoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKICAgICAgICBpZiBzZWxmLmZpcnN0OgogICAgICAgICAgICBzZWxmLmZpcnN0ID0gMAogICAgICAgICAgICByZXR1cm4gY29kZWNzLkJPTV9VVEY4ICsgXAogICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl84X2VuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGNvZGVjcy51dGZfOF9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyLnJlc2V0KHNlbGYpCiAgICAgICAgc2VsZi5maXJzdCA9IDEKCiAgICBkZWYgZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZmlyc3QKCiAgICBkZWYgc2V0c3RhdGUoc2VsZiwgc3RhdGUpOgogICAgICAgIHNlbGYuZmlyc3QgPSBzdGF0ZQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICBjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIuX19pbml0X18oc2VsZiwgZXJyb3JzKQogICAgICAgIHNlbGYuZmlyc3QgPSAxCgogICAgZGVmIF9idWZmZXJfZGVjb2RlKHNlbGYsIGlucHV0LCBlcnJvcnMsIGZpbmFsKToKICAgICAgICBpZiBzZWxmLmZpcnN0OgogICAgICAgICAgICBpZiBsZW4oaW5wdXQpIDwgMzoKICAgICAgICAgICAgICAgIGlmIGNvZGVjcy5CT01fVVRGOC5zdGFydHN3aXRoKGlucHV0KToKICAgICAgICAgICAgICAgICAgICAjIG5vdCBlbm91Z2ggZGF0YSB0byBkZWNpZGUgaWYgdGhpcyByZWFsbHkgaXMgYSBCT00KICAgICAgICAgICAgICAgICAgICAjID0+IHRyeSBhZ2FpbiBvbiB0aGUgbmV4dCBjYWxsCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgiIiwgMCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5maXJzdCA9IDAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuZmlyc3QgPSAwCiAgICAgICAgICAgICAgICBpZiBpbnB1dFs6M10gPT0gY29kZWNzLkJPTV9VVEY4OgogICAgICAgICAgICAgICAgICAgIChvdXRwdXQsIGNvbnN1bWVkKSA9IFwKICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MudXRmXzhfZGVjb2RlKGlucHV0WzM6XSwgZXJyb3JzLCBmaW5hbCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG91dHB1dCwgY29uc3VtZWQrMykKICAgICAgICByZXR1cm4gY29kZWNzLnV0Zl84X2RlY29kZShpbnB1dCwgZXJyb3JzLCBmaW5hbCkKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyLnJlc2V0KHNlbGYpCiAgICAgICAgc2VsZi5maXJzdCA9IDEKCiAgICBkZWYgZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgc3RhdGUgPSBjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIuZ2V0c3RhdGUoc2VsZikKICAgICAgICAjIHN0YXRlWzFdIG11c3QgYmUgMCBoZXJlLCBhcyBpdCBpc24ndCBwYXNzZWQgYWxvbmcgdG8gdGhlIGNhbGxlcgogICAgICAgIHJldHVybiAoc3RhdGVbMF0sIHNlbGYuZmlyc3QpCgogICAgZGVmIHNldHN0YXRlKHNlbGYsIHN0YXRlKToKICAgICAgICAjIHN0YXRlWzFdIHdpbGwgYmUgaWdub3JlZCBieSBCdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlci5zZXRzdGF0ZSgpCiAgICAgICAgY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyLnNldHN0YXRlKHNlbGYsIHN0YXRlKQogICAgICAgIHNlbGYuZmlyc3QgPSBzdGF0ZVsxXQoKY2xhc3MgU3RyZWFtV3JpdGVyKGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgIGNvZGVjcy5TdHJlYW1Xcml0ZXIucmVzZXQoc2VsZikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBzZWxmLmVuY29kZQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgc2VsZi5lbmNvZGUgPSBjb2RlY3MudXRmXzhfZW5jb2RlCiAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCwgZXJyb3JzKQoKY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgIGNvZGVjcy5TdHJlYW1SZWFkZXIucmVzZXQoc2VsZikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBzZWxmLmRlY29kZQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgaWYgbGVuKGlucHV0KSA8IDM6CiAgICAgICAgICAgIGlmIGNvZGVjcy5CT01fVVRGOC5zdGFydHN3aXRoKGlucHV0KToKICAgICAgICAgICAgICAgICMgbm90IGVub3VnaCBkYXRhIHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgQk9NCiAgICAgICAgICAgICAgICAjID0+IHRyeSBhZ2FpbiBvbiB0aGUgbmV4dCBjYWxsCiAgICAgICAgICAgICAgICByZXR1cm4gKCIiLCAwKQogICAgICAgIGVsaWYgaW5wdXRbOjNdID09IGNvZGVjcy5CT01fVVRGODoKICAgICAgICAgICAgc2VsZi5kZWNvZGUgPSBjb2RlY3MudXRmXzhfZGVjb2RlCiAgICAgICAgICAgIChvdXRwdXQsIGNvbnN1bWVkKSA9IGNvZGVjcy51dGZfOF9kZWNvZGUoaW5wdXRbMzpdLGVycm9ycykKICAgICAgICAgICAgcmV0dXJuIChvdXRwdXQsIGNvbnN1bWVkKzMpCiAgICAgICAgIyAoZWxzZSkgbm8gQk9NIHByZXNlbnQKICAgICAgICBzZWxmLmRlY29kZSA9IGNvZGVjcy51dGZfOF9kZWNvZGUKICAgICAgICByZXR1cm4gY29kZWNzLnV0Zl84X2RlY29kZShpbnB1dCwgZXJyb3JzKQoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J3V0Zi04LXNpZycsCiAgICAgICAgZW5jb2RlPWVuY29kZSwKICAgICAgICBkZWNvZGU9ZGVjb2RlLAogICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCiAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICApClBLAwQUAAAAAAADIKNWznYpTCMLAAAjCwAAFQAAAGVuY29kaW5ncy91dV9jb2RlYy5weSIiIlB5dGhvbiAndXVfY29kZWMnIENvZGVjIC0gVVUgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZy4KClRoaXMgY29kZWMgZGUvZW5jb2RlcyBmcm9tIGJ5dGVzIHRvIGJ5dGVzLgoKV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuIFNvbWUgZGV0YWlscyB3ZXJlCmFkYXB0ZWQgZnJvbSB1dS5weSB3aGljaCB3YXMgd3JpdHRlbiBieSBMYW5jZSBFbGxpbmdob3VzZSBhbmQKbW9kaWZpZWQgYnkgSmFjayBKYW5zZW4gYW5kIEZyZWRyaWsgTHVuZGguCiIiIgoKaW1wb3J0IGNvZGVjcwppbXBvcnQgYmluYXNjaWkKZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwoKIyMjIENvZGVjIEFQSXMKCmRlZiB1dV9lbmNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0JywgZmlsZW5hbWU9JzxkYXRhPicsIG1vZGU9MG82NjYpOgogICAgYXNzZXJ0IGVycm9ycyA9PSAnc3RyaWN0JwogICAgaW5maWxlID0gQnl0ZXNJTyhpbnB1dCkKICAgIG91dGZpbGUgPSBCeXRlc0lPKCkKICAgIHJlYWQgPSBpbmZpbGUucmVhZAogICAgd3JpdGUgPSBvdXRmaWxlLndyaXRlCgogICAgIyBSZW1vdmUgbmV3bGluZSBjaGFycyBmcm9tIGZpbGVuYW1lCiAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoJ1xuJywnXFxuJykKICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgnXHInLCdcXHInKQoKICAgICMgRW5jb2RlCiAgICB3cml0ZSgoJ2JlZ2luICVvICVzXG4nICUgKG1vZGUgJiAwbzc3NywgZmlsZW5hbWUpKS5lbmNvZGUoJ2FzY2lpJykpCiAgICBjaHVuayA9IHJlYWQoNDUpCiAgICB3aGlsZSBjaHVuazoKICAgICAgICB3cml0ZShiaW5hc2NpaS5iMmFfdXUoY2h1bmspKQogICAgICAgIGNodW5rID0gcmVhZCg0NSkKICAgIHdyaXRlKGInIFxuZW5kXG4nKQoKICAgIHJldHVybiAob3V0ZmlsZS5nZXR2YWx1ZSgpLCBsZW4oaW5wdXQpKQoKZGVmIHV1X2RlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIGFzc2VydCBlcnJvcnMgPT0gJ3N0cmljdCcKICAgIGluZmlsZSA9IEJ5dGVzSU8oaW5wdXQpCiAgICBvdXRmaWxlID0gQnl0ZXNJTygpCiAgICByZWFkbGluZSA9IGluZmlsZS5yZWFkbGluZQogICAgd3JpdGUgPSBvdXRmaWxlLndyaXRlCgogICAgIyBGaW5kIHN0YXJ0IG9mIGVuY29kZWQgZGF0YQogICAgd2hpbGUgMToKICAgICAgICBzID0gcmVhZGxpbmUoKQogICAgICAgIGlmIG5vdCBzOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNaXNzaW5nICJiZWdpbiIgbGluZSBpbiBpbnB1dCBkYXRhJykKICAgICAgICBpZiBzWzo1XSA9PSBiJ2JlZ2luJzoKICAgICAgICAgICAgYnJlYWsKCiAgICAjIERlY29kZQogICAgd2hpbGUgVHJ1ZToKICAgICAgICBzID0gcmVhZGxpbmUoKQogICAgICAgIGlmIG5vdCBzIG9yIHMgPT0gYidlbmRcbic6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgdHJ5OgogICAgICAgICAgICBkYXRhID0gYmluYXNjaWkuYTJiX3V1KHMpCiAgICAgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yIGFzIHY6CiAgICAgICAgICAgICMgV29ya2Fyb3VuZCBmb3IgYnJva2VuIHV1ZW5jb2RlcnMgYnkgL0ZyZWRyaWsgTHVuZGgKICAgICAgICAgICAgbmJ5dGVzID0gKCgoc1swXS0zMikgJiA2MykgKiA0ICsgNSkgLy8gMwogICAgICAgICAgICBkYXRhID0gYmluYXNjaWkuYTJiX3V1KHNbOm5ieXRlc10pCiAgICAgICAgICAgICNzeXMuc3RkZXJyLndyaXRlKCJXYXJuaW5nOiAlc1xuIiAlIHN0cih2KSkKICAgICAgICB3cml0ZShkYXRhKQogICAgaWYgbm90IHM6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHJ1bmNhdGVkIGlucHV0IGRhdGEnKQoKICAgIHJldHVybiAob3V0ZmlsZS5nZXR2YWx1ZSgpLCBsZW4oaW5wdXQpKQoKY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIHV1X2VuY29kZShpbnB1dCwgZXJyb3JzKQoKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIHV1X2RlY29kZShpbnB1dCwgZXJyb3JzKQoKY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiB1dV9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIHJldHVybiB1dV9kZWNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQoKY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgIGNoYXJidWZmZXJ0eXBlID0gYnl0ZXMKCmNsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgY29kZWNzLlN0cmVhbVJlYWRlcik6CiAgICBjaGFyYnVmZmVydHlwZSA9IGJ5dGVzCgojIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKCmRlZiBnZXRyZWdlbnRyeSgpOgogICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCiAgICAgICAgbmFtZT0ndXUnLAogICAgICAgIGVuY29kZT11dV9lbmNvZGUsCiAgICAgICAgZGVjb2RlPXV1X2RlY29kZSwKICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAogICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCiAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICAgIF9pc190ZXh0X2VuY29kaW5nPUZhbHNlLAogICAgKQpQSwMEFAAAAAAAAyCjVofb2CGcCAAAnAgAABcAAABlbmNvZGluZ3MvemxpYl9jb2RlYy5weSIiIlB5dGhvbiAnemxpYl9jb2RlYycgQ29kZWMgLSB6bGliIGNvbXByZXNzaW9uIGVuY29kaW5nLgoKVGhpcyBjb2RlYyBkZS9lbmNvZGVzIGZyb20gYnl0ZXMgdG8gYnl0ZXMuCgpXcml0dGVuIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyAobWFsQGxlbWJ1cmcuY29tKS4KIiIiCgppbXBvcnQgY29kZWNzCmltcG9ydCB6bGliICMgdGhpcyBjb2RlYyBuZWVkcyB0aGUgb3B0aW9uYWwgemxpYiBtb2R1bGUgIQoKIyMjIENvZGVjIEFQSXMKCmRlZiB6bGliX2VuY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgIGFzc2VydCBlcnJvcnMgPT0gJ3N0cmljdCcKICAgIHJldHVybiAoemxpYi5jb21wcmVzcyhpbnB1dCksIGxlbihpbnB1dCkpCgpkZWYgemxpYl9kZWNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICBhc3NlcnQgZXJyb3JzID09ICdzdHJpY3QnCiAgICByZXR1cm4gKHpsaWIuZGVjb21wcmVzcyhpbnB1dCksIGxlbihpbnB1dCkpCgpjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gemxpYl9lbmNvZGUoaW5wdXQsIGVycm9ycykKICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIHpsaWJfZGVjb2RlKGlucHV0LCBlcnJvcnMpCgpjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICBhc3NlcnQgZXJyb3JzID09ICdzdHJpY3QnCiAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKICAgICAgICBzZWxmLmNvbXByZXNzb2JqID0gemxpYi5jb21wcmVzc29iaigpCgogICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgogICAgICAgIGlmIGZpbmFsOgogICAgICAgICAgICBjID0gc2VsZi5jb21wcmVzc29iai5jb21wcmVzcyhpbnB1dCkKICAgICAgICAgICAgcmV0dXJuIGMgKyBzZWxmLmNvbXByZXNzb2JqLmZsdXNoKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5jb21wcmVzc29iai5jb21wcmVzcyhpbnB1dCkKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgc2VsZi5jb21wcmVzc29iaiA9IHpsaWIuY29tcHJlc3NvYmooKQoKY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSAnc3RyaWN0JwogICAgICAgIHNlbGYuZXJyb3JzID0gZXJyb3JzCiAgICAgICAgc2VsZi5kZWNvbXByZXNzb2JqID0gemxpYi5kZWNvbXByZXNzb2JqKCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgaWYgZmluYWw6CiAgICAgICAgICAgIGMgPSBzZWxmLmRlY29tcHJlc3NvYmouZGVjb21wcmVzcyhpbnB1dCkKICAgICAgICAgICAgcmV0dXJuIGMgKyBzZWxmLmRlY29tcHJlc3NvYmouZmx1c2goKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY29tcHJlc3NvYmouZGVjb21wcmVzcyhpbnB1dCkKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgc2VsZi5kZWNvbXByZXNzb2JqID0gemxpYi5kZWNvbXByZXNzb2JqKCkKCmNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYywgY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICBjaGFyYnVmZmVydHlwZSA9IGJ5dGVzCgpjbGFzcyBTdHJlYW1SZWFkZXIoQ29kZWMsIGNvZGVjcy5TdHJlYW1SZWFkZXIpOgogICAgY2hhcmJ1ZmZlcnR5cGUgPSBieXRlcwoKIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCgpkZWYgZ2V0cmVnZW50cnkoKToKICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAogICAgICAgIG5hbWU9J3psaWInLAogICAgICAgIGVuY29kZT16bGliX2VuY29kZSwKICAgICAgICBkZWNvZGU9emxpYl9kZWNvZGUsCiAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAogICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICAgICBfaXNfdGV4dF9lbmNvZGluZz1GYWxzZSwKICAgICkKUEsDBBQAAAAAAAMgo1b2qW96lBIAAJQSAAAQAAAAaHRtbC9fX2luaXRfXy5weSIiIgpHZW5lcmFsIGZ1bmN0aW9ucyBmb3IgSFRNTCBtYW5pcHVsYXRpb24uCiIiIgoKaW1wb3J0IHJlIGFzIF9yZQpmcm9tIGh0bWwuZW50aXRpZXMgaW1wb3J0IGh0bWw1IGFzIF9odG1sNQoKCl9fYWxsX18gPSBbJ2VzY2FwZScsICd1bmVzY2FwZSddCgoKZGVmIGVzY2FwZShzLCBxdW90ZT1UcnVlKToKICAgICIiIgogICAgUmVwbGFjZSBzcGVjaWFsIGNoYXJhY3RlcnMgIiYiLCAiPCIgYW5kICI+IiB0byBIVE1MLXNhZmUgc2VxdWVuY2VzLgogICAgSWYgdGhlIG9wdGlvbmFsIGZsYWcgcXVvdGUgaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgcXVvdGF0aW9uIG1hcmsKICAgIGNoYXJhY3RlcnMsIGJvdGggZG91YmxlIHF1b3RlICgiKSBhbmQgc2luZ2xlIHF1b3RlICgnKSBjaGFyYWN0ZXJzIGFyZSBhbHNvCiAgICB0cmFuc2xhdGVkLgogICAgIiIiCiAgICBzID0gcy5yZXBsYWNlKCImIiwgIiZhbXA7IikgIyBNdXN0IGJlIGRvbmUgZmlyc3QhCiAgICBzID0gcy5yZXBsYWNlKCI8IiwgIiZsdDsiKQogICAgcyA9IHMucmVwbGFjZSgiPiIsICImZ3Q7IikKICAgIGlmIHF1b3RlOgogICAgICAgIHMgPSBzLnJlcGxhY2UoJyInLCAiJnF1b3Q7IikKICAgICAgICBzID0gcy5yZXBsYWNlKCdcJycsICImI3gyNzsiKQogICAgcmV0dXJuIHMKCgojIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCN0b2tlbml6aW5nLWNoYXJhY3Rlci1yZWZlcmVuY2VzCgpfaW52YWxpZF9jaGFycmVmcyA9IHsKICAgIDB4MDA6ICdcdWZmZmQnLCAgIyBSRVBMQUNFTUVOVCBDSEFSQUNURVIKICAgIDB4MGQ6ICdccicsICAgICAgIyBDQVJSSUFHRSBSRVRVUk4KICAgIDB4ODA6ICdcdTIwYWMnLCAgIyBFVVJPIFNJR04KICAgIDB4ODE6ICdceDgxJywgICAgIyA8Y29udHJvbD4KICAgIDB4ODI6ICdcdTIwMWEnLCAgIyBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgIDB4ODM6ICdcdTAxOTInLCAgIyBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKICAgIDB4ODQ6ICdcdTIwMWUnLCAgIyBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKICAgIDB4ODU6ICdcdTIwMjYnLCAgIyBIT1JJWk9OVEFMIEVMTElQU0lTCiAgICAweDg2OiAnXHUyMDIwJywgICMgREFHR0VSCiAgICAweDg3OiAnXHUyMDIxJywgICMgRE9VQkxFIERBR0dFUgogICAgMHg4ODogJ1x1MDJjNicsICAjIE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAogICAgMHg4OTogJ1x1MjAzMCcsICAjIFBFUiBNSUxMRSBTSUdOCiAgICAweDhhOiAnXHUwMTYwJywgICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAweDhiOiAnXHUyMDM5JywgICMgU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4OGM6ICdcdTAxNTInLCAgIyBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCiAgICAweDhkOiAnXHg4ZCcsICAgICMgPGNvbnRyb2w+CiAgICAweDhlOiAnXHUwMTdkJywgICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAweDhmOiAnXHg4ZicsICAgICMgPGNvbnRyb2w+CiAgICAweDkwOiAnXHg5MCcsICAgICMgPGNvbnRyb2w+CiAgICAweDkxOiAnXHUyMDE4JywgICMgTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4OTI6ICdcdTIwMTknLCAgIyBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKICAgIDB4OTM6ICdcdTIwMWMnLCAgIyBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgMHg5NDogJ1x1MjAxZCcsICAjIFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwogICAgMHg5NTogJ1x1MjAyMicsICAjIEJVTExFVAogICAgMHg5NjogJ1x1MjAxMycsICAjIEVOIERBU0gKICAgIDB4OTc6ICdcdTIwMTQnLCAgIyBFTSBEQVNICiAgICAweDk4OiAnXHUwMmRjJywgICMgU01BTEwgVElMREUKICAgIDB4OTk6ICdcdTIxMjInLCAgIyBUUkFERSBNQVJLIFNJR04KICAgIDB4OWE6ICdcdTAxNjEnLCAgIyBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCiAgICAweDliOiAnXHUyMDNhJywgICMgU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiAgICAweDljOiAnXHUwMTUzJywgICMgTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKICAgIDB4OWQ6ICdceDlkJywgICAgIyA8Y29udHJvbD4KICAgIDB4OWU6ICdcdTAxN2UnLCAgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiAgICAweDlmOiAnXHUwMTc4JywgICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwp9CgpfaW52YWxpZF9jb2RlcG9pbnRzID0gewogICAgIyAweDAwMDEgdG8gMHgwMDA4CiAgICAweDEsIDB4MiwgMHgzLCAweDQsIDB4NSwgMHg2LCAweDcsIDB4OCwKICAgICMgMHgwMDBFIHRvIDB4MDAxRgogICAgMHhlLCAweGYsIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MTgsIDB4MTksCiAgICAweDFhLCAweDFiLCAweDFjLCAweDFkLCAweDFlLCAweDFmLAogICAgIyAweDAwN0YgdG8gMHgwMDlGCiAgICAweDdmLCAweDgwLCAweDgxLCAweDgyLCAweDgzLCAweDg0LCAweDg1LCAweDg2LCAweDg3LCAweDg4LCAweDg5LCAweDhhLAogICAgMHg4YiwgMHg4YywgMHg4ZCwgMHg4ZSwgMHg4ZiwgMHg5MCwgMHg5MSwgMHg5MiwgMHg5MywgMHg5NCwgMHg5NSwgMHg5NiwKICAgIDB4OTcsIDB4OTgsIDB4OTksIDB4OWEsIDB4OWIsIDB4OWMsIDB4OWQsIDB4OWUsIDB4OWYsCiAgICAjIDB4RkREMCB0byAweEZERUYKICAgIDB4ZmRkMCwgMHhmZGQxLCAweGZkZDIsIDB4ZmRkMywgMHhmZGQ0LCAweGZkZDUsIDB4ZmRkNiwgMHhmZGQ3LCAweGZkZDgsCiAgICAweGZkZDksIDB4ZmRkYSwgMHhmZGRiLCAweGZkZGMsIDB4ZmRkZCwgMHhmZGRlLCAweGZkZGYsIDB4ZmRlMCwgMHhmZGUxLAogICAgMHhmZGUyLCAweGZkZTMsIDB4ZmRlNCwgMHhmZGU1LCAweGZkZTYsIDB4ZmRlNywgMHhmZGU4LCAweGZkZTksIDB4ZmRlYSwKICAgIDB4ZmRlYiwgMHhmZGVjLCAweGZkZWQsIDB4ZmRlZSwgMHhmZGVmLAogICAgIyBvdGhlcnMKICAgIDB4YiwgMHhmZmZlLCAweGZmZmYsIDB4MWZmZmUsIDB4MWZmZmYsIDB4MmZmZmUsIDB4MmZmZmYsIDB4M2ZmZmUsIDB4M2ZmZmYsCiAgICAweDRmZmZlLCAweDRmZmZmLCAweDVmZmZlLCAweDVmZmZmLCAweDZmZmZlLCAweDZmZmZmLCAweDdmZmZlLCAweDdmZmZmLAogICAgMHg4ZmZmZSwgMHg4ZmZmZiwgMHg5ZmZmZSwgMHg5ZmZmZiwgMHhhZmZmZSwgMHhhZmZmZiwgMHhiZmZmZSwgMHhiZmZmZiwKICAgIDB4Y2ZmZmUsIDB4Y2ZmZmYsIDB4ZGZmZmUsIDB4ZGZmZmYsIDB4ZWZmZmUsIDB4ZWZmZmYsIDB4ZmZmZmUsIDB4ZmZmZmYsCiAgICAweDEwZmZmZSwgMHgxMGZmZmYKfQoKCmRlZiBfcmVwbGFjZV9jaGFycmVmKHMpOgogICAgcyA9IHMuZ3JvdXAoMSkKICAgIGlmIHNbMF0gPT0gJyMnOgogICAgICAgICMgbnVtZXJpYyBjaGFycmVmCiAgICAgICAgaWYgc1sxXSBpbiAneFgnOgogICAgICAgICAgICBudW0gPSBpbnQoc1syOl0ucnN0cmlwKCc7JyksIDE2KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG51bSA9IGludChzWzE6XS5yc3RyaXAoJzsnKSkKICAgICAgICBpZiBudW0gaW4gX2ludmFsaWRfY2hhcnJlZnM6CiAgICAgICAgICAgIHJldHVybiBfaW52YWxpZF9jaGFycmVmc1tudW1dCiAgICAgICAgaWYgMHhEODAwIDw9IG51bSA8PSAweERGRkYgb3IgbnVtID4gMHgxMEZGRkY6CiAgICAgICAgICAgIHJldHVybiAnXHVGRkZEJwogICAgICAgIGlmIG51bSBpbiBfaW52YWxpZF9jb2RlcG9pbnRzOgogICAgICAgICAgICByZXR1cm4gJycKICAgICAgICByZXR1cm4gY2hyKG51bSkKICAgIGVsc2U6CiAgICAgICAgIyBuYW1lZCBjaGFycmVmCiAgICAgICAgaWYgcyBpbiBfaHRtbDU6CiAgICAgICAgICAgIHJldHVybiBfaHRtbDVbc10KICAgICAgICAjIGZpbmQgdGhlIGxvbmdlc3QgbWF0Y2hpbmcgbmFtZSAoYXMgZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQpCiAgICAgICAgZm9yIHggaW4gcmFuZ2UobGVuKHMpLTEsIDEsIC0xKToKICAgICAgICAgICAgaWYgc1s6eF0gaW4gX2h0bWw1OgogICAgICAgICAgICAgICAgcmV0dXJuIF9odG1sNVtzWzp4XV0gKyBzW3g6XQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnJicgKyBzCgoKX2NoYXJyZWYgPSBfcmUuY29tcGlsZShyJyYoI1swLTldKzs/JwogICAgICAgICAgICAgICAgICAgICAgIHInfCNbeFhdWzAtOWEtZkEtRl0rOz8nCiAgICAgICAgICAgICAgICAgICAgICAgcid8W15cdFxuXGYgPCYjO117MSwzMn07PyknKQoKZGVmIHVuZXNjYXBlKHMpOgogICAgIiIiCiAgICBDb252ZXJ0IGFsbCBuYW1lZCBhbmQgbnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyAoZS5nLiAmZ3Q7LCAmIzYyOywKICAgICZ4M2U7KSBpbiB0aGUgc3RyaW5nIHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5pY29kZSBjaGFyYWN0ZXJzLgogICAgVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBydWxlcyBkZWZpbmVkIGJ5IHRoZSBIVE1MIDUgc3RhbmRhcmQKICAgIGZvciBib3RoIHZhbGlkIGFuZCBpbnZhbGlkIGNoYXJhY3RlciByZWZlcmVuY2VzLCBhbmQgdGhlIGxpc3Qgb2YKICAgIEhUTUwgNSBuYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBkZWZpbmVkIGluIGh0bWwuZW50aXRpZXMuaHRtbDUuCiAgICAiIiIKICAgIGlmICcmJyBub3QgaW4gczoKICAgICAgICByZXR1cm4gcwogICAgcmV0dXJuIF9jaGFycmVmLnN1YihfcmVwbGFjZV9jaGFycmVmLCBzKQpQSwMEFAAAAAAAAyCjVlOwPUB3JgEAdyYBABAAAABodG1sL2VudGl0aWVzLnB5IiIiSFRNTCBjaGFyYWN0ZXIgZW50aXR5IHJlZmVyZW5jZXMuIiIiCgpfX2FsbF9fID0gWydodG1sNScsICduYW1lMmNvZGVwb2ludCcsICdjb2RlcG9pbnQybmFtZScsICdlbnRpdHlkZWZzJ10KCgojIG1hcHMgdGhlIEhUTUwgZW50aXR5IG5hbWUgdG8gdGhlIFVuaWNvZGUgY29kZSBwb2ludAojIGZyb20gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvbmFtZWQtY2hhcmFjdGVycy5odG1sCm5hbWUyY29kZXBvaW50ID0gewogICAgJ0FFbGlnJzogICAgMHgwMGM2LCAjIGxhdGluIGNhcGl0YWwgbGV0dGVyIEFFID0gbGF0aW4gY2FwaXRhbCBsaWdhdHVyZSBBRSwgVSswMEM2IElTT2xhdDEKICAgICdBYWN1dGUnOiAgIDB4MDBjMSwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBBIHdpdGggYWN1dGUsIFUrMDBDMSBJU09sYXQxCiAgICAnQWNpcmMnOiAgICAweDAwYzIsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgQSB3aXRoIGNpcmN1bWZsZXgsIFUrMDBDMiBJU09sYXQxCiAgICAnQWdyYXZlJzogICAweDAwYzAsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgQSB3aXRoIGdyYXZlID0gbGF0aW4gY2FwaXRhbCBsZXR0ZXIgQSBncmF2ZSwgVSswMEMwIElTT2xhdDEKICAgICdBbHBoYSc6ICAgIDB4MDM5MSwgIyBncmVlayBjYXBpdGFsIGxldHRlciBhbHBoYSwgVSswMzkxCiAgICAnQXJpbmcnOiAgICAweDAwYzUsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgQSB3aXRoIHJpbmcgYWJvdmUgPSBsYXRpbiBjYXBpdGFsIGxldHRlciBBIHJpbmcsIFUrMDBDNSBJU09sYXQxCiAgICAnQXRpbGRlJzogICAweDAwYzMsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgQSB3aXRoIHRpbGRlLCBVKzAwQzMgSVNPbGF0MQogICAgJ0F1bWwnOiAgICAgMHgwMGM0LCAjIGxhdGluIGNhcGl0YWwgbGV0dGVyIEEgd2l0aCBkaWFlcmVzaXMsIFUrMDBDNCBJU09sYXQxCiAgICAnQmV0YSc6ICAgICAweDAzOTIsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgYmV0YSwgVSswMzkyCiAgICAnQ2NlZGlsJzogICAweDAwYzcsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgQyB3aXRoIGNlZGlsbGEsIFUrMDBDNyBJU09sYXQxCiAgICAnQ2hpJzogICAgICAweDAzYTcsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgY2hpLCBVKzAzQTcKICAgICdEYWdnZXInOiAgIDB4MjAyMSwgIyBkb3VibGUgZGFnZ2VyLCBVKzIwMjEgSVNPcHViCiAgICAnRGVsdGEnOiAgICAweDAzOTQsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgZGVsdGEsIFUrMDM5NCBJU09ncmszCiAgICAnRVRIJzogICAgICAweDAwZDAsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgRVRILCBVKzAwRDAgSVNPbGF0MQogICAgJ0VhY3V0ZSc6ICAgMHgwMGM5LCAjIGxhdGluIGNhcGl0YWwgbGV0dGVyIEUgd2l0aCBhY3V0ZSwgVSswMEM5IElTT2xhdDEKICAgICdFY2lyYyc6ICAgIDB4MDBjYSwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBFIHdpdGggY2lyY3VtZmxleCwgVSswMENBIElTT2xhdDEKICAgICdFZ3JhdmUnOiAgIDB4MDBjOCwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBFIHdpdGggZ3JhdmUsIFUrMDBDOCBJU09sYXQxCiAgICAnRXBzaWxvbic6ICAweDAzOTUsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgZXBzaWxvbiwgVSswMzk1CiAgICAnRXRhJzogICAgICAweDAzOTcsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgZXRhLCBVKzAzOTcKICAgICdFdW1sJzogICAgIDB4MDBjYiwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBFIHdpdGggZGlhZXJlc2lzLCBVKzAwQ0IgSVNPbGF0MQogICAgJ0dhbW1hJzogICAgMHgwMzkzLCAjIGdyZWVrIGNhcGl0YWwgbGV0dGVyIGdhbW1hLCBVKzAzOTMgSVNPZ3JrMwogICAgJ0lhY3V0ZSc6ICAgMHgwMGNkLCAjIGxhdGluIGNhcGl0YWwgbGV0dGVyIEkgd2l0aCBhY3V0ZSwgVSswMENEIElTT2xhdDEKICAgICdJY2lyYyc6ICAgIDB4MDBjZSwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBJIHdpdGggY2lyY3VtZmxleCwgVSswMENFIElTT2xhdDEKICAgICdJZ3JhdmUnOiAgIDB4MDBjYywgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBJIHdpdGggZ3JhdmUsIFUrMDBDQyBJU09sYXQxCiAgICAnSW90YSc6ICAgICAweDAzOTksICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgaW90YSwgVSswMzk5CiAgICAnSXVtbCc6ICAgICAweDAwY2YsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgSSB3aXRoIGRpYWVyZXNpcywgVSswMENGIElTT2xhdDEKICAgICdLYXBwYSc6ICAgIDB4MDM5YSwgIyBncmVlayBjYXBpdGFsIGxldHRlciBrYXBwYSwgVSswMzlBCiAgICAnTGFtYmRhJzogICAweDAzOWIsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgbGFtYmRhLCBVKzAzOUIgSVNPZ3JrMwogICAgJ011JzogICAgICAgMHgwMzljLCAjIGdyZWVrIGNhcGl0YWwgbGV0dGVyIG11LCBVKzAzOUMKICAgICdOdGlsZGUnOiAgIDB4MDBkMSwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBOIHdpdGggdGlsZGUsIFUrMDBEMSBJU09sYXQxCiAgICAnTnUnOiAgICAgICAweDAzOWQsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgbnUsIFUrMDM5RAogICAgJ09FbGlnJzogICAgMHgwMTUyLCAjIGxhdGluIGNhcGl0YWwgbGlnYXR1cmUgT0UsIFUrMDE1MiBJU09sYXQyCiAgICAnT2FjdXRlJzogICAweDAwZDMsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgTyB3aXRoIGFjdXRlLCBVKzAwRDMgSVNPbGF0MQogICAgJ09jaXJjJzogICAgMHgwMGQ0LCAjIGxhdGluIGNhcGl0YWwgbGV0dGVyIE8gd2l0aCBjaXJjdW1mbGV4LCBVKzAwRDQgSVNPbGF0MQogICAgJ09ncmF2ZSc6ICAgMHgwMGQyLCAjIGxhdGluIGNhcGl0YWwgbGV0dGVyIE8gd2l0aCBncmF2ZSwgVSswMEQyIElTT2xhdDEKICAgICdPbWVnYSc6ICAgIDB4MDNhOSwgIyBncmVlayBjYXBpdGFsIGxldHRlciBvbWVnYSwgVSswM0E5IElTT2dyazMKICAgICdPbWljcm9uJzogIDB4MDM5ZiwgIyBncmVlayBjYXBpdGFsIGxldHRlciBvbWljcm9uLCBVKzAzOUYKICAgICdPc2xhc2gnOiAgIDB4MDBkOCwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBPIHdpdGggc3Ryb2tlID0gbGF0aW4gY2FwaXRhbCBsZXR0ZXIgTyBzbGFzaCwgVSswMEQ4IElTT2xhdDEKICAgICdPdGlsZGUnOiAgIDB4MDBkNSwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBPIHdpdGggdGlsZGUsIFUrMDBENSBJU09sYXQxCiAgICAnT3VtbCc6ICAgICAweDAwZDYsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgTyB3aXRoIGRpYWVyZXNpcywgVSswMEQ2IElTT2xhdDEKICAgICdQaGknOiAgICAgIDB4MDNhNiwgIyBncmVlayBjYXBpdGFsIGxldHRlciBwaGksIFUrMDNBNiBJU09ncmszCiAgICAnUGknOiAgICAgICAweDAzYTAsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgcGksIFUrMDNBMCBJU09ncmszCiAgICAnUHJpbWUnOiAgICAweDIwMzMsICMgZG91YmxlIHByaW1lID0gc2Vjb25kcyA9IGluY2hlcywgVSsyMDMzIElTT3RlY2gKICAgICdQc2knOiAgICAgIDB4MDNhOCwgIyBncmVlayBjYXBpdGFsIGxldHRlciBwc2ksIFUrMDNBOCBJU09ncmszCiAgICAnUmhvJzogICAgICAweDAzYTEsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgcmhvLCBVKzAzQTEKICAgICdTY2Fyb24nOiAgIDB4MDE2MCwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBTIHdpdGggY2Fyb24sIFUrMDE2MCBJU09sYXQyCiAgICAnU2lnbWEnOiAgICAweDAzYTMsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgc2lnbWEsIFUrMDNBMyBJU09ncmszCiAgICAnVEhPUk4nOiAgICAweDAwZGUsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgVEhPUk4sIFUrMDBERSBJU09sYXQxCiAgICAnVGF1JzogICAgICAweDAzYTQsICMgZ3JlZWsgY2FwaXRhbCBsZXR0ZXIgdGF1LCBVKzAzQTQKICAgICdUaGV0YSc6ICAgIDB4MDM5OCwgIyBncmVlayBjYXBpdGFsIGxldHRlciB0aGV0YSwgVSswMzk4IElTT2dyazMKICAgICdVYWN1dGUnOiAgIDB4MDBkYSwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBVIHdpdGggYWN1dGUsIFUrMDBEQSBJU09sYXQxCiAgICAnVWNpcmMnOiAgICAweDAwZGIsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgVSB3aXRoIGNpcmN1bWZsZXgsIFUrMDBEQiBJU09sYXQxCiAgICAnVWdyYXZlJzogICAweDAwZDksICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgVSB3aXRoIGdyYXZlLCBVKzAwRDkgSVNPbGF0MQogICAgJ1Vwc2lsb24nOiAgMHgwM2E1LCAjIGdyZWVrIGNhcGl0YWwgbGV0dGVyIHVwc2lsb24sIFUrMDNBNSBJU09ncmszCiAgICAnVXVtbCc6ICAgICAweDAwZGMsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgVSB3aXRoIGRpYWVyZXNpcywgVSswMERDIElTT2xhdDEKICAgICdYaSc6ICAgICAgIDB4MDM5ZSwgIyBncmVlayBjYXBpdGFsIGxldHRlciB4aSwgVSswMzlFIElTT2dyazMKICAgICdZYWN1dGUnOiAgIDB4MDBkZCwgIyBsYXRpbiBjYXBpdGFsIGxldHRlciBZIHdpdGggYWN1dGUsIFUrMDBERCBJU09sYXQxCiAgICAnWXVtbCc6ICAgICAweDAxNzgsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgWSB3aXRoIGRpYWVyZXNpcywgVSswMTc4IElTT2xhdDIKICAgICdaZXRhJzogICAgIDB4MDM5NiwgIyBncmVlayBjYXBpdGFsIGxldHRlciB6ZXRhLCBVKzAzOTYKICAgICdhYWN1dGUnOiAgIDB4MDBlMSwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgYSB3aXRoIGFjdXRlLCBVKzAwRTEgSVNPbGF0MQogICAgJ2FjaXJjJzogICAgMHgwMGUyLCAjIGxhdGluIHNtYWxsIGxldHRlciBhIHdpdGggY2lyY3VtZmxleCwgVSswMEUyIElTT2xhdDEKICAgICdhY3V0ZSc6ICAgIDB4MDBiNCwgIyBhY3V0ZSBhY2NlbnQgPSBzcGFjaW5nIGFjdXRlLCBVKzAwQjQgSVNPZGlhCiAgICAnYWVsaWcnOiAgICAweDAwZTYsICMgbGF0aW4gc21hbGwgbGV0dGVyIGFlID0gbGF0aW4gc21hbGwgbGlnYXR1cmUgYWUsIFUrMDBFNiBJU09sYXQxCiAgICAnYWdyYXZlJzogICAweDAwZTAsICMgbGF0aW4gc21hbGwgbGV0dGVyIGEgd2l0aCBncmF2ZSA9IGxhdGluIHNtYWxsIGxldHRlciBhIGdyYXZlLCBVKzAwRTAgSVNPbGF0MQogICAgJ2FsZWZzeW0nOiAgMHgyMTM1LCAjIGFsZWYgc3ltYm9sID0gZmlyc3QgdHJhbnNmaW5pdGUgY2FyZGluYWwsIFUrMjEzNSBORVcKICAgICdhbHBoYSc6ICAgIDB4MDNiMSwgIyBncmVlayBzbWFsbCBsZXR0ZXIgYWxwaGEsIFUrMDNCMSBJU09ncmszCiAgICAnYW1wJzogICAgICAweDAwMjYsICMgYW1wZXJzYW5kLCBVKzAwMjYgSVNPbnVtCiAgICAnYW5kJzogICAgICAweDIyMjcsICMgbG9naWNhbCBhbmQgPSB3ZWRnZSwgVSsyMjI3IElTT3RlY2gKICAgICdhbmcnOiAgICAgIDB4MjIyMCwgIyBhbmdsZSwgVSsyMjIwIElTT2Ftc28KICAgICdhcmluZyc6ICAgIDB4MDBlNSwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgYSB3aXRoIHJpbmcgYWJvdmUgPSBsYXRpbiBzbWFsbCBsZXR0ZXIgYSByaW5nLCBVKzAwRTUgSVNPbGF0MQogICAgJ2FzeW1wJzogICAgMHgyMjQ4LCAjIGFsbW9zdCBlcXVhbCB0byA9IGFzeW1wdG90aWMgdG8sIFUrMjI0OCBJU09hbXNyCiAgICAnYXRpbGRlJzogICAweDAwZTMsICMgbGF0aW4gc21hbGwgbGV0dGVyIGEgd2l0aCB0aWxkZSwgVSswMEUzIElTT2xhdDEKICAgICdhdW1sJzogICAgIDB4MDBlNCwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgYSB3aXRoIGRpYWVyZXNpcywgVSswMEU0IElTT2xhdDEKICAgICdiZHF1byc6ICAgIDB4MjAxZSwgIyBkb3VibGUgbG93LTkgcXVvdGF0aW9uIG1hcmssIFUrMjAxRSBORVcKICAgICdiZXRhJzogICAgIDB4MDNiMiwgIyBncmVlayBzbWFsbCBsZXR0ZXIgYmV0YSwgVSswM0IyIElTT2dyazMKICAgICdicnZiYXInOiAgIDB4MDBhNiwgIyBicm9rZW4gYmFyID0gYnJva2VuIHZlcnRpY2FsIGJhciwgVSswMEE2IElTT251bQogICAgJ2J1bGwnOiAgICAgMHgyMDIyLCAjIGJ1bGxldCA9IGJsYWNrIHNtYWxsIGNpcmNsZSwgVSsyMDIyIElTT3B1YgogICAgJ2NhcCc6ICAgICAgMHgyMjI5LCAjIGludGVyc2VjdGlvbiA9IGNhcCwgVSsyMjI5IElTT3RlY2gKICAgICdjY2VkaWwnOiAgIDB4MDBlNywgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgYyB3aXRoIGNlZGlsbGEsIFUrMDBFNyBJU09sYXQxCiAgICAnY2VkaWwnOiAgICAweDAwYjgsICMgY2VkaWxsYSA9IHNwYWNpbmcgY2VkaWxsYSwgVSswMEI4IElTT2RpYQogICAgJ2NlbnQnOiAgICAgMHgwMGEyLCAjIGNlbnQgc2lnbiwgVSswMEEyIElTT251bQogICAgJ2NoaSc6ICAgICAgMHgwM2M3LCAjIGdyZWVrIHNtYWxsIGxldHRlciBjaGksIFUrMDNDNyBJU09ncmszCiAgICAnY2lyYyc6ICAgICAweDAyYzYsICMgbW9kaWZpZXIgbGV0dGVyIGNpcmN1bWZsZXggYWNjZW50LCBVKzAyQzYgSVNPcHViCiAgICAnY2x1YnMnOiAgICAweDI2NjMsICMgYmxhY2sgY2x1YiBzdWl0ID0gc2hhbXJvY2ssIFUrMjY2MyBJU09wdWIKICAgICdjb25nJzogICAgIDB4MjI0NSwgIyBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvLCBVKzIyNDUgSVNPdGVjaAogICAgJ2NvcHknOiAgICAgMHgwMGE5LCAjIGNvcHlyaWdodCBzaWduLCBVKzAwQTkgSVNPbnVtCiAgICAnY3JhcnInOiAgICAweDIxYjUsICMgZG93bndhcmRzIGFycm93IHdpdGggY29ybmVyIGxlZnR3YXJkcyA9IGNhcnJpYWdlIHJldHVybiwgVSsyMUI1IE5FVwogICAgJ2N1cCc6ICAgICAgMHgyMjJhLCAjIHVuaW9uID0gY3VwLCBVKzIyMkEgSVNPdGVjaAogICAgJ2N1cnJlbic6ICAgMHgwMGE0LCAjIGN1cnJlbmN5IHNpZ24sIFUrMDBBNCBJU09udW0KICAgICdkQXJyJzogICAgIDB4MjFkMywgIyBkb3dud2FyZHMgZG91YmxlIGFycm93LCBVKzIxRDMgSVNPYW1zYQogICAgJ2RhZ2dlcic6ICAgMHgyMDIwLCAjIGRhZ2dlciwgVSsyMDIwIElTT3B1YgogICAgJ2RhcnInOiAgICAgMHgyMTkzLCAjIGRvd253YXJkcyBhcnJvdywgVSsyMTkzIElTT251bQogICAgJ2RlZyc6ICAgICAgMHgwMGIwLCAjIGRlZ3JlZSBzaWduLCBVKzAwQjAgSVNPbnVtCiAgICAnZGVsdGEnOiAgICAweDAzYjQsICMgZ3JlZWsgc21hbGwgbGV0dGVyIGRlbHRhLCBVKzAzQjQgSVNPZ3JrMwogICAgJ2RpYW1zJzogICAgMHgyNjY2LCAjIGJsYWNrIGRpYW1vbmQgc3VpdCwgVSsyNjY2IElTT3B1YgogICAgJ2RpdmlkZSc6ICAgMHgwMGY3LCAjIGRpdmlzaW9uIHNpZ24sIFUrMDBGNyBJU09udW0KICAgICdlYWN1dGUnOiAgIDB4MDBlOSwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgZSB3aXRoIGFjdXRlLCBVKzAwRTkgSVNPbGF0MQogICAgJ2VjaXJjJzogICAgMHgwMGVhLCAjIGxhdGluIHNtYWxsIGxldHRlciBlIHdpdGggY2lyY3VtZmxleCwgVSswMEVBIElTT2xhdDEKICAgICdlZ3JhdmUnOiAgIDB4MDBlOCwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgZSB3aXRoIGdyYXZlLCBVKzAwRTggSVNPbGF0MQogICAgJ2VtcHR5JzogICAgMHgyMjA1LCAjIGVtcHR5IHNldCA9IG51bGwgc2V0ID0gZGlhbWV0ZXIsIFUrMjIwNSBJU09hbXNvCiAgICAnZW1zcCc6ICAgICAweDIwMDMsICMgZW0gc3BhY2UsIFUrMjAwMyBJU09wdWIKICAgICdlbnNwJzogICAgIDB4MjAwMiwgIyBlbiBzcGFjZSwgVSsyMDAyIElTT3B1YgogICAgJ2Vwc2lsb24nOiAgMHgwM2I1LCAjIGdyZWVrIHNtYWxsIGxldHRlciBlcHNpbG9uLCBVKzAzQjUgSVNPZ3JrMwogICAgJ2VxdWl2JzogICAgMHgyMjYxLCAjIGlkZW50aWNhbCB0bywgVSsyMjYxIElTT3RlY2gKICAgICdldGEnOiAgICAgIDB4MDNiNywgIyBncmVlayBzbWFsbCBsZXR0ZXIgZXRhLCBVKzAzQjcgSVNPZ3JrMwogICAgJ2V0aCc6ICAgICAgMHgwMGYwLCAjIGxhdGluIHNtYWxsIGxldHRlciBldGgsIFUrMDBGMCBJU09sYXQxCiAgICAnZXVtbCc6ICAgICAweDAwZWIsICMgbGF0aW4gc21hbGwgbGV0dGVyIGUgd2l0aCBkaWFlcmVzaXMsIFUrMDBFQiBJU09sYXQxCiAgICAnZXVybyc6ICAgICAweDIwYWMsICMgZXVybyBzaWduLCBVKzIwQUMgTkVXCiAgICAnZXhpc3QnOiAgICAweDIyMDMsICMgdGhlcmUgZXhpc3RzLCBVKzIyMDMgSVNPdGVjaAogICAgJ2Zub2YnOiAgICAgMHgwMTkyLCAjIGxhdGluIHNtYWxsIGYgd2l0aCBob29rID0gZnVuY3Rpb24gPSBmbG9yaW4sIFUrMDE5MiBJU090ZWNoCiAgICAnZm9yYWxsJzogICAweDIyMDAsICMgZm9yIGFsbCwgVSsyMjAwIElTT3RlY2gKICAgICdmcmFjMTInOiAgIDB4MDBiZCwgIyB2dWxnYXIgZnJhY3Rpb24gb25lIGhhbGYgPSBmcmFjdGlvbiBvbmUgaGFsZiwgVSswMEJEIElTT251bQogICAgJ2ZyYWMxNCc6ICAgMHgwMGJjLCAjIHZ1bGdhciBmcmFjdGlvbiBvbmUgcXVhcnRlciA9IGZyYWN0aW9uIG9uZSBxdWFydGVyLCBVKzAwQkMgSVNPbnVtCiAgICAnZnJhYzM0JzogICAweDAwYmUsICMgdnVsZ2FyIGZyYWN0aW9uIHRocmVlIHF1YXJ0ZXJzID0gZnJhY3Rpb24gdGhyZWUgcXVhcnRlcnMsIFUrMDBCRSBJU09udW0KICAgICdmcmFzbCc6ICAgIDB4MjA0NCwgIyBmcmFjdGlvbiBzbGFzaCwgVSsyMDQ0IE5FVwogICAgJ2dhbW1hJzogICAgMHgwM2IzLCAjIGdyZWVrIHNtYWxsIGxldHRlciBnYW1tYSwgVSswM0IzIElTT2dyazMKICAgICdnZSc6ICAgICAgIDB4MjI2NSwgIyBncmVhdGVyLXRoYW4gb3IgZXF1YWwgdG8sIFUrMjI2NSBJU090ZWNoCiAgICAnZ3QnOiAgICAgICAweDAwM2UsICMgZ3JlYXRlci10aGFuIHNpZ24sIFUrMDAzRSBJU09udW0KICAgICdoQXJyJzogICAgIDB4MjFkNCwgIyBsZWZ0IHJpZ2h0IGRvdWJsZSBhcnJvdywgVSsyMUQ0IElTT2Ftc2EKICAgICdoYXJyJzogICAgIDB4MjE5NCwgIyBsZWZ0IHJpZ2h0IGFycm93LCBVKzIxOTQgSVNPYW1zYQogICAgJ2hlYXJ0cyc6ICAgMHgyNjY1LCAjIGJsYWNrIGhlYXJ0IHN1aXQgPSB2YWxlbnRpbmUsIFUrMjY2NSBJU09wdWIKICAgICdoZWxsaXAnOiAgIDB4MjAyNiwgIyBob3Jpem9udGFsIGVsbGlwc2lzID0gdGhyZWUgZG90IGxlYWRlciwgVSsyMDI2IElTT3B1YgogICAgJ2lhY3V0ZSc6ICAgMHgwMGVkLCAjIGxhdGluIHNtYWxsIGxldHRlciBpIHdpdGggYWN1dGUsIFUrMDBFRCBJU09sYXQxCiAgICAnaWNpcmMnOiAgICAweDAwZWUsICMgbGF0aW4gc21hbGwgbGV0dGVyIGkgd2l0aCBjaXJjdW1mbGV4LCBVKzAwRUUgSVNPbGF0MQogICAgJ2lleGNsJzogICAgMHgwMGExLCAjIGludmVydGVkIGV4Y2xhbWF0aW9uIG1hcmssIFUrMDBBMSBJU09udW0KICAgICdpZ3JhdmUnOiAgIDB4MDBlYywgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgaSB3aXRoIGdyYXZlLCBVKzAwRUMgSVNPbGF0MQogICAgJ2ltYWdlJzogICAgMHgyMTExLCAjIGJsYWNrbGV0dGVyIGNhcGl0YWwgSSA9IGltYWdpbmFyeSBwYXJ0LCBVKzIxMTEgSVNPYW1zbwogICAgJ2luZmluJzogICAgMHgyMjFlLCAjIGluZmluaXR5LCBVKzIyMUUgSVNPdGVjaAogICAgJ2ludCc6ICAgICAgMHgyMjJiLCAjIGludGVncmFsLCBVKzIyMkIgSVNPdGVjaAogICAgJ2lvdGEnOiAgICAgMHgwM2I5LCAjIGdyZWVrIHNtYWxsIGxldHRlciBpb3RhLCBVKzAzQjkgSVNPZ3JrMwogICAgJ2lxdWVzdCc6ICAgMHgwMGJmLCAjIGludmVydGVkIHF1ZXN0aW9uIG1hcmsgPSB0dXJuZWQgcXVlc3Rpb24gbWFyaywgVSswMEJGIElTT251bQogICAgJ2lzaW4nOiAgICAgMHgyMjA4LCAjIGVsZW1lbnQgb2YsIFUrMjIwOCBJU090ZWNoCiAgICAnaXVtbCc6ICAgICAweDAwZWYsICMgbGF0aW4gc21hbGwgbGV0dGVyIGkgd2l0aCBkaWFlcmVzaXMsIFUrMDBFRiBJU09sYXQxCiAgICAna2FwcGEnOiAgICAweDAzYmEsICMgZ3JlZWsgc21hbGwgbGV0dGVyIGthcHBhLCBVKzAzQkEgSVNPZ3JrMwogICAgJ2xBcnInOiAgICAgMHgyMWQwLCAjIGxlZnR3YXJkcyBkb3VibGUgYXJyb3csIFUrMjFEMCBJU090ZWNoCiAgICAnbGFtYmRhJzogICAweDAzYmIsICMgZ3JlZWsgc21hbGwgbGV0dGVyIGxhbWJkYSwgVSswM0JCIElTT2dyazMKICAgICdsYW5nJzogICAgIDB4MjMyOSwgIyBsZWZ0LXBvaW50aW5nIGFuZ2xlIGJyYWNrZXQgPSBicmEsIFUrMjMyOSBJU090ZWNoCiAgICAnbGFxdW8nOiAgICAweDAwYWIsICMgbGVmdC1wb2ludGluZyBkb3VibGUgYW5nbGUgcXVvdGF0aW9uIG1hcmsgPSBsZWZ0IHBvaW50aW5nIGd1aWxsZW1ldCwgVSswMEFCIElTT251bQogICAgJ2xhcnInOiAgICAgMHgyMTkwLCAjIGxlZnR3YXJkcyBhcnJvdywgVSsyMTkwIElTT251bQogICAgJ2xjZWlsJzogICAgMHgyMzA4LCAjIGxlZnQgY2VpbGluZyA9IGFwbCB1cHN0aWxlLCBVKzIzMDggSVNPYW1zYwogICAgJ2xkcXVvJzogICAgMHgyMDFjLCAjIGxlZnQgZG91YmxlIHF1b3RhdGlvbiBtYXJrLCBVKzIwMUMgSVNPbnVtCiAgICAnbGUnOiAgICAgICAweDIyNjQsICMgbGVzcy10aGFuIG9yIGVxdWFsIHRvLCBVKzIyNjQgSVNPdGVjaAogICAgJ2xmbG9vcic6ICAgMHgyMzBhLCAjIGxlZnQgZmxvb3IgPSBhcGwgZG93bnN0aWxlLCBVKzIzMEEgSVNPYW1zYwogICAgJ2xvd2FzdCc6ICAgMHgyMjE3LCAjIGFzdGVyaXNrIG9wZXJhdG9yLCBVKzIyMTcgSVNPdGVjaAogICAgJ2xveic6ICAgICAgMHgyNWNhLCAjIGxvemVuZ2UsIFUrMjVDQSBJU09wdWIKICAgICdscm0nOiAgICAgIDB4MjAwZSwgIyBsZWZ0LXRvLXJpZ2h0IG1hcmssIFUrMjAwRSBORVcgUkZDIDIwNzAKICAgICdsc2FxdW8nOiAgIDB4MjAzOSwgIyBzaW5nbGUgbGVmdC1wb2ludGluZyBhbmdsZSBxdW90YXRpb24gbWFyaywgVSsyMDM5IElTTyBwcm9wb3NlZAogICAgJ2xzcXVvJzogICAgMHgyMDE4LCAjIGxlZnQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrLCBVKzIwMTggSVNPbnVtCiAgICAnbHQnOiAgICAgICAweDAwM2MsICMgbGVzcy10aGFuIHNpZ24sIFUrMDAzQyBJU09udW0KICAgICdtYWNyJzogICAgIDB4MDBhZiwgIyBtYWNyb24gPSBzcGFjaW5nIG1hY3JvbiA9IG92ZXJsaW5lID0gQVBMIG92ZXJiYXIsIFUrMDBBRiBJU09kaWEKICAgICdtZGFzaCc6ICAgIDB4MjAxNCwgIyBlbSBkYXNoLCBVKzIwMTQgSVNPcHViCiAgICAnbWljcm8nOiAgICAweDAwYjUsICMgbWljcm8gc2lnbiwgVSswMEI1IElTT251bQogICAgJ21pZGRvdCc6ICAgMHgwMGI3LCAjIG1pZGRsZSBkb3QgPSBHZW9yZ2lhbiBjb21tYSA9IEdyZWVrIG1pZGRsZSBkb3QsIFUrMDBCNyBJU09udW0KICAgICdtaW51cyc6ICAgIDB4MjIxMiwgIyBtaW51cyBzaWduLCBVKzIyMTIgSVNPdGVjaAogICAgJ211JzogICAgICAgMHgwM2JjLCAjIGdyZWVrIHNtYWxsIGxldHRlciBtdSwgVSswM0JDIElTT2dyazMKICAgICduYWJsYSc6ICAgIDB4MjIwNywgIyBuYWJsYSA9IGJhY2t3YXJkIGRpZmZlcmVuY2UsIFUrMjIwNyBJU090ZWNoCiAgICAnbmJzcCc6ICAgICAweDAwYTAsICMgbm8tYnJlYWsgc3BhY2UgPSBub24tYnJlYWtpbmcgc3BhY2UsIFUrMDBBMCBJU09udW0KICAgICduZGFzaCc6ICAgIDB4MjAxMywgIyBlbiBkYXNoLCBVKzIwMTMgSVNPcHViCiAgICAnbmUnOiAgICAgICAweDIyNjAsICMgbm90IGVxdWFsIHRvLCBVKzIyNjAgSVNPdGVjaAogICAgJ25pJzogICAgICAgMHgyMjBiLCAjIGNvbnRhaW5zIGFzIG1lbWJlciwgVSsyMjBCIElTT3RlY2gKICAgICdub3QnOiAgICAgIDB4MDBhYywgIyBub3Qgc2lnbiwgVSswMEFDIElTT251bQogICAgJ25vdGluJzogICAgMHgyMjA5LCAjIG5vdCBhbiBlbGVtZW50IG9mLCBVKzIyMDkgSVNPdGVjaAogICAgJ25zdWInOiAgICAgMHgyMjg0LCAjIG5vdCBhIHN1YnNldCBvZiwgVSsyMjg0IElTT2Ftc24KICAgICdudGlsZGUnOiAgIDB4MDBmMSwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgbiB3aXRoIHRpbGRlLCBVKzAwRjEgSVNPbGF0MQogICAgJ251JzogICAgICAgMHgwM2JkLCAjIGdyZWVrIHNtYWxsIGxldHRlciBudSwgVSswM0JEIElTT2dyazMKICAgICdvYWN1dGUnOiAgIDB4MDBmMywgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgbyB3aXRoIGFjdXRlLCBVKzAwRjMgSVNPbGF0MQogICAgJ29jaXJjJzogICAgMHgwMGY0LCAjIGxhdGluIHNtYWxsIGxldHRlciBvIHdpdGggY2lyY3VtZmxleCwgVSswMEY0IElTT2xhdDEKICAgICdvZWxpZyc6ICAgIDB4MDE1MywgIyBsYXRpbiBzbWFsbCBsaWdhdHVyZSBvZSwgVSswMTUzIElTT2xhdDIKICAgICdvZ3JhdmUnOiAgIDB4MDBmMiwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgbyB3aXRoIGdyYXZlLCBVKzAwRjIgSVNPbGF0MQogICAgJ29saW5lJzogICAgMHgyMDNlLCAjIG92ZXJsaW5lID0gc3BhY2luZyBvdmVyc2NvcmUsIFUrMjAzRSBORVcKICAgICdvbWVnYSc6ICAgIDB4MDNjOSwgIyBncmVlayBzbWFsbCBsZXR0ZXIgb21lZ2EsIFUrMDNDOSBJU09ncmszCiAgICAnb21pY3Jvbic6ICAweDAzYmYsICMgZ3JlZWsgc21hbGwgbGV0dGVyIG9taWNyb24sIFUrMDNCRiBORVcKICAgICdvcGx1cyc6ICAgIDB4MjI5NSwgIyBjaXJjbGVkIHBsdXMgPSBkaXJlY3Qgc3VtLCBVKzIyOTUgSVNPYW1zYgogICAgJ29yJzogICAgICAgMHgyMjI4LCAjIGxvZ2ljYWwgb3IgPSB2ZWUsIFUrMjIyOCBJU090ZWNoCiAgICAnb3JkZic6ICAgICAweDAwYWEsICMgZmVtaW5pbmUgb3JkaW5hbCBpbmRpY2F0b3IsIFUrMDBBQSBJU09udW0KICAgICdvcmRtJzogICAgIDB4MDBiYSwgIyBtYXNjdWxpbmUgb3JkaW5hbCBpbmRpY2F0b3IsIFUrMDBCQSBJU09udW0KICAgICdvc2xhc2gnOiAgIDB4MDBmOCwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgbyB3aXRoIHN0cm9rZSwgPSBsYXRpbiBzbWFsbCBsZXR0ZXIgbyBzbGFzaCwgVSswMEY4IElTT2xhdDEKICAgICdvdGlsZGUnOiAgIDB4MDBmNSwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgbyB3aXRoIHRpbGRlLCBVKzAwRjUgSVNPbGF0MQogICAgJ290aW1lcyc6ICAgMHgyMjk3LCAjIGNpcmNsZWQgdGltZXMgPSB2ZWN0b3IgcHJvZHVjdCwgVSsyMjk3IElTT2Ftc2IKICAgICdvdW1sJzogICAgIDB4MDBmNiwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgbyB3aXRoIGRpYWVyZXNpcywgVSswMEY2IElTT2xhdDEKICAgICdwYXJhJzogICAgIDB4MDBiNiwgIyBwaWxjcm93IHNpZ24gPSBwYXJhZ3JhcGggc2lnbiwgVSswMEI2IElTT251bQogICAgJ3BhcnQnOiAgICAgMHgyMjAyLCAjIHBhcnRpYWwgZGlmZmVyZW50aWFsLCBVKzIyMDIgSVNPdGVjaAogICAgJ3Blcm1pbCc6ICAgMHgyMDMwLCAjIHBlciBtaWxsZSBzaWduLCBVKzIwMzAgSVNPdGVjaAogICAgJ3BlcnAnOiAgICAgMHgyMmE1LCAjIHVwIHRhY2sgPSBvcnRob2dvbmFsIHRvID0gcGVycGVuZGljdWxhciwgVSsyMkE1IElTT3RlY2gKICAgICdwaGknOiAgICAgIDB4MDNjNiwgIyBncmVlayBzbWFsbCBsZXR0ZXIgcGhpLCBVKzAzQzYgSVNPZ3JrMwogICAgJ3BpJzogICAgICAgMHgwM2MwLCAjIGdyZWVrIHNtYWxsIGxldHRlciBwaSwgVSswM0MwIElTT2dyazMKICAgICdwaXYnOiAgICAgIDB4MDNkNiwgIyBncmVlayBwaSBzeW1ib2wsIFUrMDNENiBJU09ncmszCiAgICAncGx1c21uJzogICAweDAwYjEsICMgcGx1cy1taW51cyBzaWduID0gcGx1cy1vci1taW51cyBzaWduLCBVKzAwQjEgSVNPbnVtCiAgICAncG91bmQnOiAgICAweDAwYTMsICMgcG91bmQgc2lnbiwgVSswMEEzIElTT251bQogICAgJ3ByaW1lJzogICAgMHgyMDMyLCAjIHByaW1lID0gbWludXRlcyA9IGZlZXQsIFUrMjAzMiBJU090ZWNoCiAgICAncHJvZCc6ICAgICAweDIyMGYsICMgbi1hcnkgcHJvZHVjdCA9IHByb2R1Y3Qgc2lnbiwgVSsyMjBGIElTT2Ftc2IKICAgICdwcm9wJzogICAgIDB4MjIxZCwgIyBwcm9wb3J0aW9uYWwgdG8sIFUrMjIxRCBJU090ZWNoCiAgICAncHNpJzogICAgICAweDAzYzgsICMgZ3JlZWsgc21hbGwgbGV0dGVyIHBzaSwgVSswM0M4IElTT2dyazMKICAgICdxdW90JzogICAgIDB4MDAyMiwgIyBxdW90YXRpb24gbWFyayA9IEFQTCBxdW90ZSwgVSswMDIyIElTT251bQogICAgJ3JBcnInOiAgICAgMHgyMWQyLCAjIHJpZ2h0d2FyZHMgZG91YmxlIGFycm93LCBVKzIxRDIgSVNPdGVjaAogICAgJ3JhZGljJzogICAgMHgyMjFhLCAjIHNxdWFyZSByb290ID0gcmFkaWNhbCBzaWduLCBVKzIyMUEgSVNPdGVjaAogICAgJ3JhbmcnOiAgICAgMHgyMzJhLCAjIHJpZ2h0LXBvaW50aW5nIGFuZ2xlIGJyYWNrZXQgPSBrZXQsIFUrMjMyQSBJU090ZWNoCiAgICAncmFxdW8nOiAgICAweDAwYmIsICMgcmlnaHQtcG9pbnRpbmcgZG91YmxlIGFuZ2xlIHF1b3RhdGlvbiBtYXJrID0gcmlnaHQgcG9pbnRpbmcgZ3VpbGxlbWV0LCBVKzAwQkIgSVNPbnVtCiAgICAncmFycic6ICAgICAweDIxOTIsICMgcmlnaHR3YXJkcyBhcnJvdywgVSsyMTkyIElTT251bQogICAgJ3JjZWlsJzogICAgMHgyMzA5LCAjIHJpZ2h0IGNlaWxpbmcsIFUrMjMwOSBJU09hbXNjCiAgICAncmRxdW8nOiAgICAweDIwMWQsICMgcmlnaHQgZG91YmxlIHF1b3RhdGlvbiBtYXJrLCBVKzIwMUQgSVNPbnVtCiAgICAncmVhbCc6ICAgICAweDIxMWMsICMgYmxhY2tsZXR0ZXIgY2FwaXRhbCBSID0gcmVhbCBwYXJ0IHN5bWJvbCwgVSsyMTFDIElTT2Ftc28KICAgICdyZWcnOiAgICAgIDB4MDBhZSwgIyByZWdpc3RlcmVkIHNpZ24gPSByZWdpc3RlcmVkIHRyYWRlIG1hcmsgc2lnbiwgVSswMEFFIElTT251bQogICAgJ3JmbG9vcic6ICAgMHgyMzBiLCAjIHJpZ2h0IGZsb29yLCBVKzIzMEIgSVNPYW1zYwogICAgJ3Jobyc6ICAgICAgMHgwM2MxLCAjIGdyZWVrIHNtYWxsIGxldHRlciByaG8sIFUrMDNDMSBJU09ncmszCiAgICAncmxtJzogICAgICAweDIwMGYsICMgcmlnaHQtdG8tbGVmdCBtYXJrLCBVKzIwMEYgTkVXIFJGQyAyMDcwCiAgICAncnNhcXVvJzogICAweDIwM2EsICMgc2luZ2xlIHJpZ2h0LXBvaW50aW5nIGFuZ2xlIHF1b3RhdGlvbiBtYXJrLCBVKzIwM0EgSVNPIHByb3Bvc2VkCiAgICAncnNxdW8nOiAgICAweDIwMTksICMgcmlnaHQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrLCBVKzIwMTkgSVNPbnVtCiAgICAnc2JxdW8nOiAgICAweDIwMWEsICMgc2luZ2xlIGxvdy05IHF1b3RhdGlvbiBtYXJrLCBVKzIwMUEgTkVXCiAgICAnc2Nhcm9uJzogICAweDAxNjEsICMgbGF0aW4gc21hbGwgbGV0dGVyIHMgd2l0aCBjYXJvbiwgVSswMTYxIElTT2xhdDIKICAgICdzZG90JzogICAgIDB4MjJjNSwgIyBkb3Qgb3BlcmF0b3IsIFUrMjJDNSBJU09hbXNiCiAgICAnc2VjdCc6ICAgICAweDAwYTcsICMgc2VjdGlvbiBzaWduLCBVKzAwQTcgSVNPbnVtCiAgICAnc2h5JzogICAgICAweDAwYWQsICMgc29mdCBoeXBoZW4gPSBkaXNjcmV0aW9uYXJ5IGh5cGhlbiwgVSswMEFEIElTT251bQogICAgJ3NpZ21hJzogICAgMHgwM2MzLCAjIGdyZWVrIHNtYWxsIGxldHRlciBzaWdtYSwgVSswM0MzIElTT2dyazMKICAgICdzaWdtYWYnOiAgIDB4MDNjMiwgIyBncmVlayBzbWFsbCBsZXR0ZXIgZmluYWwgc2lnbWEsIFUrMDNDMiBJU09ncmszCiAgICAnc2ltJzogICAgICAweDIyM2MsICMgdGlsZGUgb3BlcmF0b3IgPSB2YXJpZXMgd2l0aCA9IHNpbWlsYXIgdG8sIFUrMjIzQyBJU090ZWNoCiAgICAnc3BhZGVzJzogICAweDI2NjAsICMgYmxhY2sgc3BhZGUgc3VpdCwgVSsyNjYwIElTT3B1YgogICAgJ3N1Yic6ICAgICAgMHgyMjgyLCAjIHN1YnNldCBvZiwgVSsyMjgyIElTT3RlY2gKICAgICdzdWJlJzogICAgIDB4MjI4NiwgIyBzdWJzZXQgb2Ygb3IgZXF1YWwgdG8sIFUrMjI4NiBJU090ZWNoCiAgICAnc3VtJzogICAgICAweDIyMTEsICMgbi1hcnkgc3VtbWF0aW9uLCBVKzIyMTEgSVNPYW1zYgogICAgJ3N1cCc6ICAgICAgMHgyMjgzLCAjIHN1cGVyc2V0IG9mLCBVKzIyODMgSVNPdGVjaAogICAgJ3N1cDEnOiAgICAgMHgwMGI5LCAjIHN1cGVyc2NyaXB0IG9uZSA9IHN1cGVyc2NyaXB0IGRpZ2l0IG9uZSwgVSswMEI5IElTT251bQogICAgJ3N1cDInOiAgICAgMHgwMGIyLCAjIHN1cGVyc2NyaXB0IHR3byA9IHN1cGVyc2NyaXB0IGRpZ2l0IHR3byA9IHNxdWFyZWQsIFUrMDBCMiBJU09udW0KICAgICdzdXAzJzogICAgIDB4MDBiMywgIyBzdXBlcnNjcmlwdCB0aHJlZSA9IHN1cGVyc2NyaXB0IGRpZ2l0IHRocmVlID0gY3ViZWQsIFUrMDBCMyBJU09udW0KICAgICdzdXBlJzogICAgIDB4MjI4NywgIyBzdXBlcnNldCBvZiBvciBlcXVhbCB0bywgVSsyMjg3IElTT3RlY2gKICAgICdzemxpZyc6ICAgIDB4MDBkZiwgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgc2hhcnAgcyA9IGVzcy16ZWQsIFUrMDBERiBJU09sYXQxCiAgICAndGF1JzogICAgICAweDAzYzQsICMgZ3JlZWsgc21hbGwgbGV0dGVyIHRhdSwgVSswM0M0IElTT2dyazMKICAgICd0aGVyZTQnOiAgIDB4MjIzNCwgIyB0aGVyZWZvcmUsIFUrMjIzNCBJU090ZWNoCiAgICAndGhldGEnOiAgICAweDAzYjgsICMgZ3JlZWsgc21hbGwgbGV0dGVyIHRoZXRhLCBVKzAzQjggSVNPZ3JrMwogICAgJ3RoZXRhc3ltJzogMHgwM2QxLCAjIGdyZWVrIHNtYWxsIGxldHRlciB0aGV0YSBzeW1ib2wsIFUrMDNEMSBORVcKICAgICd0aGluc3AnOiAgIDB4MjAwOSwgIyB0aGluIHNwYWNlLCBVKzIwMDkgSVNPcHViCiAgICAndGhvcm4nOiAgICAweDAwZmUsICMgbGF0aW4gc21hbGwgbGV0dGVyIHRob3JuIHdpdGgsIFUrMDBGRSBJU09sYXQxCiAgICAndGlsZGUnOiAgICAweDAyZGMsICMgc21hbGwgdGlsZGUsIFUrMDJEQyBJU09kaWEKICAgICd0aW1lcyc6ICAgIDB4MDBkNywgIyBtdWx0aXBsaWNhdGlvbiBzaWduLCBVKzAwRDcgSVNPbnVtCiAgICAndHJhZGUnOiAgICAweDIxMjIsICMgdHJhZGUgbWFyayBzaWduLCBVKzIxMjIgSVNPbnVtCiAgICAndUFycic6ICAgICAweDIxZDEsICMgdXB3YXJkcyBkb3VibGUgYXJyb3csIFUrMjFEMSBJU09hbXNhCiAgICAndWFjdXRlJzogICAweDAwZmEsICMgbGF0aW4gc21hbGwgbGV0dGVyIHUgd2l0aCBhY3V0ZSwgVSswMEZBIElTT2xhdDEKICAgICd1YXJyJzogICAgIDB4MjE5MSwgIyB1cHdhcmRzIGFycm93LCBVKzIxOTEgSVNPbnVtCiAgICAndWNpcmMnOiAgICAweDAwZmIsICMgbGF0aW4gc21hbGwgbGV0dGVyIHUgd2l0aCBjaXJjdW1mbGV4LCBVKzAwRkIgSVNPbGF0MQogICAgJ3VncmF2ZSc6ICAgMHgwMGY5LCAjIGxhdGluIHNtYWxsIGxldHRlciB1IHdpdGggZ3JhdmUsIFUrMDBGOSBJU09sYXQxCiAgICAndW1sJzogICAgICAweDAwYTgsICMgZGlhZXJlc2lzID0gc3BhY2luZyBkaWFlcmVzaXMsIFUrMDBBOCBJU09kaWEKICAgICd1cHNpaCc6ICAgIDB4MDNkMiwgIyBncmVlayB1cHNpbG9uIHdpdGggaG9vayBzeW1ib2wsIFUrMDNEMiBORVcKICAgICd1cHNpbG9uJzogIDB4MDNjNSwgIyBncmVlayBzbWFsbCBsZXR0ZXIgdXBzaWxvbiwgVSswM0M1IElTT2dyazMKICAgICd1dW1sJzogICAgIDB4MDBmYywgIyBsYXRpbiBzbWFsbCBsZXR0ZXIgdSB3aXRoIGRpYWVyZXNpcywgVSswMEZDIElTT2xhdDEKICAgICd3ZWllcnAnOiAgIDB4MjExOCwgIyBzY3JpcHQgY2FwaXRhbCBQID0gcG93ZXIgc2V0ID0gV2VpZXJzdHJhc3MgcCwgVSsyMTE4IElTT2Ftc28KICAgICd4aSc6ICAgICAgIDB4MDNiZSwgIyBncmVlayBzbWFsbCBsZXR0ZXIgeGksIFUrMDNCRSBJU09ncmszCiAgICAneWFjdXRlJzogICAweDAwZmQsICMgbGF0aW4gc21hbGwgbGV0dGVyIHkgd2l0aCBhY3V0ZSwgVSswMEZEIElTT2xhdDEKICAgICd5ZW4nOiAgICAgIDB4MDBhNSwgIyB5ZW4gc2lnbiA9IHl1YW4gc2lnbiwgVSswMEE1IElTT251bQogICAgJ3l1bWwnOiAgICAgMHgwMGZmLCAjIGxhdGluIHNtYWxsIGxldHRlciB5IHdpdGggZGlhZXJlc2lzLCBVKzAwRkYgSVNPbGF0MQogICAgJ3pldGEnOiAgICAgMHgwM2I2LCAjIGdyZWVrIHNtYWxsIGxldHRlciB6ZXRhLCBVKzAzQjYgSVNPZ3JrMwogICAgJ3p3aic6ICAgICAgMHgyMDBkLCAjIHplcm8gd2lkdGggam9pbmVyLCBVKzIwMEQgTkVXIFJGQyAyMDcwCiAgICAnenduaic6ICAgICAweDIwMGMsICMgemVybyB3aWR0aCBub24tam9pbmVyLCBVKzIwMEMgTkVXIFJGQyAyMDcwCn0KCgojIG1hcHMgdGhlIEhUTUw1IG5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIHRvIHRoZSBlcXVpdmFsZW50IFVuaWNvZGUgY2hhcmFjdGVyKHMpCmh0bWw1ID0gewogICAgJ0FhY3V0ZSc6ICdceGMxJywKICAgICdhYWN1dGUnOiAnXHhlMScsCiAgICAnQWFjdXRlOyc6ICdceGMxJywKICAgICdhYWN1dGU7JzogJ1x4ZTEnLAogICAgJ0FicmV2ZTsnOiAnXHUwMTAyJywKICAgICdhYnJldmU7JzogJ1x1MDEwMycsCiAgICAnYWM7JzogJ1x1MjIzZScsCiAgICAnYWNkOyc6ICdcdTIyM2YnLAogICAgJ2FjRTsnOiAnXHUyMjNlXHUwMzMzJywKICAgICdBY2lyYyc6ICdceGMyJywKICAgICdhY2lyYyc6ICdceGUyJywKICAgICdBY2lyYzsnOiAnXHhjMicsCiAgICAnYWNpcmM7JzogJ1x4ZTInLAogICAgJ2FjdXRlJzogJ1x4YjQnLAogICAgJ2FjdXRlOyc6ICdceGI0JywKICAgICdBY3k7JzogJ1x1MDQxMCcsCiAgICAnYWN5Oyc6ICdcdTA0MzAnLAogICAgJ0FFbGlnJzogJ1x4YzYnLAogICAgJ2FlbGlnJzogJ1x4ZTYnLAogICAgJ0FFbGlnOyc6ICdceGM2JywKICAgICdhZWxpZzsnOiAnXHhlNicsCiAgICAnYWY7JzogJ1x1MjA2MScsCiAgICAnQWZyOyc6ICdcVTAwMDFkNTA0JywKICAgICdhZnI7JzogJ1xVMDAwMWQ1MWUnLAogICAgJ0FncmF2ZSc6ICdceGMwJywKICAgICdhZ3JhdmUnOiAnXHhlMCcsCiAgICAnQWdyYXZlOyc6ICdceGMwJywKICAgICdhZ3JhdmU7JzogJ1x4ZTAnLAogICAgJ2FsZWZzeW07JzogJ1x1MjEzNScsCiAgICAnYWxlcGg7JzogJ1x1MjEzNScsCiAgICAnQWxwaGE7JzogJ1x1MDM5MScsCiAgICAnYWxwaGE7JzogJ1x1MDNiMScsCiAgICAnQW1hY3I7JzogJ1x1MDEwMCcsCiAgICAnYW1hY3I7JzogJ1x1MDEwMScsCiAgICAnYW1hbGc7JzogJ1x1MmEzZicsCiAgICAnQU1QJzogJyYnLAogICAgJ2FtcCc6ICcmJywKICAgICdBTVA7JzogJyYnLAogICAgJ2FtcDsnOiAnJicsCiAgICAnQW5kOyc6ICdcdTJhNTMnLAogICAgJ2FuZDsnOiAnXHUyMjI3JywKICAgICdhbmRhbmQ7JzogJ1x1MmE1NScsCiAgICAnYW5kZDsnOiAnXHUyYTVjJywKICAgICdhbmRzbG9wZTsnOiAnXHUyYTU4JywKICAgICdhbmR2Oyc6ICdcdTJhNWEnLAogICAgJ2FuZzsnOiAnXHUyMjIwJywKICAgICdhbmdlOyc6ICdcdTI5YTQnLAogICAgJ2FuZ2xlOyc6ICdcdTIyMjAnLAogICAgJ2FuZ21zZDsnOiAnXHUyMjIxJywKICAgICdhbmdtc2RhYTsnOiAnXHUyOWE4JywKICAgICdhbmdtc2RhYjsnOiAnXHUyOWE5JywKICAgICdhbmdtc2RhYzsnOiAnXHUyOWFhJywKICAgICdhbmdtc2RhZDsnOiAnXHUyOWFiJywKICAgICdhbmdtc2RhZTsnOiAnXHUyOWFjJywKICAgICdhbmdtc2RhZjsnOiAnXHUyOWFkJywKICAgICdhbmdtc2RhZzsnOiAnXHUyOWFlJywKICAgICdhbmdtc2RhaDsnOiAnXHUyOWFmJywKICAgICdhbmdydDsnOiAnXHUyMjFmJywKICAgICdhbmdydHZiOyc6ICdcdTIyYmUnLAogICAgJ2FuZ3J0dmJkOyc6ICdcdTI5OWQnLAogICAgJ2FuZ3NwaDsnOiAnXHUyMjIyJywKICAgICdhbmdzdDsnOiAnXHhjNScsCiAgICAnYW5nemFycjsnOiAnXHUyMzdjJywKICAgICdBb2dvbjsnOiAnXHUwMTA0JywKICAgICdhb2dvbjsnOiAnXHUwMTA1JywKICAgICdBb3BmOyc6ICdcVTAwMDFkNTM4JywKICAgICdhb3BmOyc6ICdcVTAwMDFkNTUyJywKICAgICdhcDsnOiAnXHUyMjQ4JywKICAgICdhcGFjaXI7JzogJ1x1MmE2ZicsCiAgICAnYXBFOyc6ICdcdTJhNzAnLAogICAgJ2FwZTsnOiAnXHUyMjRhJywKICAgICdhcGlkOyc6ICdcdTIyNGInLAogICAgJ2Fwb3M7JzogIiciLAogICAgJ0FwcGx5RnVuY3Rpb247JzogJ1x1MjA2MScsCiAgICAnYXBwcm94Oyc6ICdcdTIyNDgnLAogICAgJ2FwcHJveGVxOyc6ICdcdTIyNGEnLAogICAgJ0FyaW5nJzogJ1x4YzUnLAogICAgJ2FyaW5nJzogJ1x4ZTUnLAogICAgJ0FyaW5nOyc6ICdceGM1JywKICAgICdhcmluZzsnOiAnXHhlNScsCiAgICAnQXNjcjsnOiAnXFUwMDAxZDQ5YycsCiAgICAnYXNjcjsnOiAnXFUwMDAxZDRiNicsCiAgICAnQXNzaWduOyc6ICdcdTIyNTQnLAogICAgJ2FzdDsnOiAnKicsCiAgICAnYXN5bXA7JzogJ1x1MjI0OCcsCiAgICAnYXN5bXBlcTsnOiAnXHUyMjRkJywKICAgICdBdGlsZGUnOiAnXHhjMycsCiAgICAnYXRpbGRlJzogJ1x4ZTMnLAogICAgJ0F0aWxkZTsnOiAnXHhjMycsCiAgICAnYXRpbGRlOyc6ICdceGUzJywKICAgICdBdW1sJzogJ1x4YzQnLAogICAgJ2F1bWwnOiAnXHhlNCcsCiAgICAnQXVtbDsnOiAnXHhjNCcsCiAgICAnYXVtbDsnOiAnXHhlNCcsCiAgICAnYXdjb25pbnQ7JzogJ1x1MjIzMycsCiAgICAnYXdpbnQ7JzogJ1x1MmExMScsCiAgICAnYmFja2Nvbmc7JzogJ1x1MjI0YycsCiAgICAnYmFja2Vwc2lsb247JzogJ1x1MDNmNicsCiAgICAnYmFja3ByaW1lOyc6ICdcdTIwMzUnLAogICAgJ2JhY2tzaW07JzogJ1x1MjIzZCcsCiAgICAnYmFja3NpbWVxOyc6ICdcdTIyY2QnLAogICAgJ0JhY2tzbGFzaDsnOiAnXHUyMjE2JywKICAgICdCYXJ2Oyc6ICdcdTJhZTcnLAogICAgJ2JhcnZlZTsnOiAnXHUyMmJkJywKICAgICdCYXJ3ZWQ7JzogJ1x1MjMwNicsCiAgICAnYmFyd2VkOyc6ICdcdTIzMDUnLAogICAgJ2JhcndlZGdlOyc6ICdcdTIzMDUnLAogICAgJ2Jicms7JzogJ1x1MjNiNScsCiAgICAnYmJya3Ricms7JzogJ1x1MjNiNicsCiAgICAnYmNvbmc7JzogJ1x1MjI0YycsCiAgICAnQmN5Oyc6ICdcdTA0MTEnLAogICAgJ2JjeTsnOiAnXHUwNDMxJywKICAgICdiZHF1bzsnOiAnXHUyMDFlJywKICAgICdiZWNhdXM7JzogJ1x1MjIzNScsCiAgICAnQmVjYXVzZTsnOiAnXHUyMjM1JywKICAgICdiZWNhdXNlOyc6ICdcdTIyMzUnLAogICAgJ2JlbXB0eXY7JzogJ1x1MjliMCcsCiAgICAnYmVwc2k7JzogJ1x1MDNmNicsCiAgICAnYmVybm91Oyc6ICdcdTIxMmMnLAogICAgJ0Jlcm5vdWxsaXM7JzogJ1x1MjEyYycsCiAgICAnQmV0YTsnOiAnXHUwMzkyJywKICAgICdiZXRhOyc6ICdcdTAzYjInLAogICAgJ2JldGg7JzogJ1x1MjEzNicsCiAgICAnYmV0d2VlbjsnOiAnXHUyMjZjJywKICAgICdCZnI7JzogJ1xVMDAwMWQ1MDUnLAogICAgJ2JmcjsnOiAnXFUwMDAxZDUxZicsCiAgICAnYmlnY2FwOyc6ICdcdTIyYzInLAogICAgJ2JpZ2NpcmM7JzogJ1x1MjVlZicsCiAgICAnYmlnY3VwOyc6ICdcdTIyYzMnLAogICAgJ2JpZ29kb3Q7JzogJ1x1MmEwMCcsCiAgICAnYmlnb3BsdXM7JzogJ1x1MmEwMScsCiAgICAnYmlnb3RpbWVzOyc6ICdcdTJhMDInLAogICAgJ2JpZ3NxY3VwOyc6ICdcdTJhMDYnLAogICAgJ2JpZ3N0YXI7JzogJ1x1MjYwNScsCiAgICAnYmlndHJpYW5nbGVkb3duOyc6ICdcdTI1YmQnLAogICAgJ2JpZ3RyaWFuZ2xldXA7JzogJ1x1MjViMycsCiAgICAnYmlndXBsdXM7JzogJ1x1MmEwNCcsCiAgICAnYmlndmVlOyc6ICdcdTIyYzEnLAogICAgJ2JpZ3dlZGdlOyc6ICdcdTIyYzAnLAogICAgJ2JrYXJvdzsnOiAnXHUyOTBkJywKICAgICdibGFja2xvemVuZ2U7JzogJ1x1MjllYicsCiAgICAnYmxhY2tzcXVhcmU7JzogJ1x1MjVhYScsCiAgICAnYmxhY2t0cmlhbmdsZTsnOiAnXHUyNWI0JywKICAgICdibGFja3RyaWFuZ2xlZG93bjsnOiAnXHUyNWJlJywKICAgICdibGFja3RyaWFuZ2xlbGVmdDsnOiAnXHUyNWMyJywKICAgICdibGFja3RyaWFuZ2xlcmlnaHQ7JzogJ1x1MjViOCcsCiAgICAnYmxhbms7JzogJ1x1MjQyMycsCiAgICAnYmxrMTI7JzogJ1x1MjU5MicsCiAgICAnYmxrMTQ7JzogJ1x1MjU5MScsCiAgICAnYmxrMzQ7JzogJ1x1MjU5MycsCiAgICAnYmxvY2s7JzogJ1x1MjU4OCcsCiAgICAnYm5lOyc6ICc9XHUyMGU1JywKICAgICdibmVxdWl2Oyc6ICdcdTIyNjFcdTIwZTUnLAogICAgJ2JOb3Q7JzogJ1x1MmFlZCcsCiAgICAnYm5vdDsnOiAnXHUyMzEwJywKICAgICdCb3BmOyc6ICdcVTAwMDFkNTM5JywKICAgICdib3BmOyc6ICdcVTAwMDFkNTUzJywKICAgICdib3Q7JzogJ1x1MjJhNScsCiAgICAnYm90dG9tOyc6ICdcdTIyYTUnLAogICAgJ2Jvd3RpZTsnOiAnXHUyMmM4JywKICAgICdib3hib3g7JzogJ1x1MjljOScsCiAgICAnYm94REw7JzogJ1x1MjU1NycsCiAgICAnYm94RGw7JzogJ1x1MjU1NicsCiAgICAnYm94ZEw7JzogJ1x1MjU1NScsCiAgICAnYm94ZGw7JzogJ1x1MjUxMCcsCiAgICAnYm94RFI7JzogJ1x1MjU1NCcsCiAgICAnYm94RHI7JzogJ1x1MjU1MycsCiAgICAnYm94ZFI7JzogJ1x1MjU1MicsCiAgICAnYm94ZHI7JzogJ1x1MjUwYycsCiAgICAnYm94SDsnOiAnXHUyNTUwJywKICAgICdib3hoOyc6ICdcdTI1MDAnLAogICAgJ2JveEhEOyc6ICdcdTI1NjYnLAogICAgJ2JveEhkOyc6ICdcdTI1NjQnLAogICAgJ2JveGhEOyc6ICdcdTI1NjUnLAogICAgJ2JveGhkOyc6ICdcdTI1MmMnLAogICAgJ2JveEhVOyc6ICdcdTI1NjknLAogICAgJ2JveEh1Oyc6ICdcdTI1NjcnLAogICAgJ2JveGhVOyc6ICdcdTI1NjgnLAogICAgJ2JveGh1Oyc6ICdcdTI1MzQnLAogICAgJ2JveG1pbnVzOyc6ICdcdTIyOWYnLAogICAgJ2JveHBsdXM7JzogJ1x1MjI5ZScsCiAgICAnYm94dGltZXM7JzogJ1x1MjJhMCcsCiAgICAnYm94VUw7JzogJ1x1MjU1ZCcsCiAgICAnYm94VWw7JzogJ1x1MjU1YycsCiAgICAnYm94dUw7JzogJ1x1MjU1YicsCiAgICAnYm94dWw7JzogJ1x1MjUxOCcsCiAgICAnYm94VVI7JzogJ1x1MjU1YScsCiAgICAnYm94VXI7JzogJ1x1MjU1OScsCiAgICAnYm94dVI7JzogJ1x1MjU1OCcsCiAgICAnYm94dXI7JzogJ1x1MjUxNCcsCiAgICAnYm94VjsnOiAnXHUyNTUxJywKICAgICdib3h2Oyc6ICdcdTI1MDInLAogICAgJ2JveFZIOyc6ICdcdTI1NmMnLAogICAgJ2JveFZoOyc6ICdcdTI1NmInLAogICAgJ2JveHZIOyc6ICdcdTI1NmEnLAogICAgJ2JveHZoOyc6ICdcdTI1M2MnLAogICAgJ2JveFZMOyc6ICdcdTI1NjMnLAogICAgJ2JveFZsOyc6ICdcdTI1NjInLAogICAgJ2JveHZMOyc6ICdcdTI1NjEnLAogICAgJ2JveHZsOyc6ICdcdTI1MjQnLAogICAgJ2JveFZSOyc6ICdcdTI1NjAnLAogICAgJ2JveFZyOyc6ICdcdTI1NWYnLAogICAgJ2JveHZSOyc6ICdcdTI1NWUnLAogICAgJ2JveHZyOyc6ICdcdTI1MWMnLAogICAgJ2JwcmltZTsnOiAnXHUyMDM1JywKICAgICdCcmV2ZTsnOiAnXHUwMmQ4JywKICAgICdicmV2ZTsnOiAnXHUwMmQ4JywKICAgICdicnZiYXInOiAnXHhhNicsCiAgICAnYnJ2YmFyOyc6ICdceGE2JywKICAgICdCc2NyOyc6ICdcdTIxMmMnLAogICAgJ2JzY3I7JzogJ1xVMDAwMWQ0YjcnLAogICAgJ2JzZW1pOyc6ICdcdTIwNGYnLAogICAgJ2JzaW07JzogJ1x1MjIzZCcsCiAgICAnYnNpbWU7JzogJ1x1MjJjZCcsCiAgICAnYnNvbDsnOiAnXFwnLAogICAgJ2Jzb2xiOyc6ICdcdTI5YzUnLAogICAgJ2Jzb2xoc3ViOyc6ICdcdTI3YzgnLAogICAgJ2J1bGw7JzogJ1x1MjAyMicsCiAgICAnYnVsbGV0Oyc6ICdcdTIwMjInLAogICAgJ2J1bXA7JzogJ1x1MjI0ZScsCiAgICAnYnVtcEU7JzogJ1x1MmFhZScsCiAgICAnYnVtcGU7JzogJ1x1MjI0ZicsCiAgICAnQnVtcGVxOyc6ICdcdTIyNGUnLAogICAgJ2J1bXBlcTsnOiAnXHUyMjRmJywKICAgICdDYWN1dGU7JzogJ1x1MDEwNicsCiAgICAnY2FjdXRlOyc6ICdcdTAxMDcnLAogICAgJ0NhcDsnOiAnXHUyMmQyJywKICAgICdjYXA7JzogJ1x1MjIyOScsCiAgICAnY2FwYW5kOyc6ICdcdTJhNDQnLAogICAgJ2NhcGJyY3VwOyc6ICdcdTJhNDknLAogICAgJ2NhcGNhcDsnOiAnXHUyYTRiJywKICAgICdjYXBjdXA7JzogJ1x1MmE0NycsCiAgICAnY2FwZG90Oyc6ICdcdTJhNDAnLAogICAgJ0NhcGl0YWxEaWZmZXJlbnRpYWxEOyc6ICdcdTIxNDUnLAogICAgJ2NhcHM7JzogJ1x1MjIyOVx1ZmUwMCcsCiAgICAnY2FyZXQ7JzogJ1x1MjA0MScsCiAgICAnY2Fyb247JzogJ1x1MDJjNycsCiAgICAnQ2F5bGV5czsnOiAnXHUyMTJkJywKICAgICdjY2FwczsnOiAnXHUyYTRkJywKICAgICdDY2Fyb247JzogJ1x1MDEwYycsCiAgICAnY2Nhcm9uOyc6ICdcdTAxMGQnLAogICAgJ0NjZWRpbCc6ICdceGM3JywKICAgICdjY2VkaWwnOiAnXHhlNycsCiAgICAnQ2NlZGlsOyc6ICdceGM3JywKICAgICdjY2VkaWw7JzogJ1x4ZTcnLAogICAgJ0NjaXJjOyc6ICdcdTAxMDgnLAogICAgJ2NjaXJjOyc6ICdcdTAxMDknLAogICAgJ0Njb25pbnQ7JzogJ1x1MjIzMCcsCiAgICAnY2N1cHM7JzogJ1x1MmE0YycsCiAgICAnY2N1cHNzbTsnOiAnXHUyYTUwJywKICAgICdDZG90Oyc6ICdcdTAxMGEnLAogICAgJ2Nkb3Q7JzogJ1x1MDEwYicsCiAgICAnY2VkaWwnOiAnXHhiOCcsCiAgICAnY2VkaWw7JzogJ1x4YjgnLAogICAgJ0NlZGlsbGE7JzogJ1x4YjgnLAogICAgJ2NlbXB0eXY7JzogJ1x1MjliMicsCiAgICAnY2VudCc6ICdceGEyJywKICAgICdjZW50Oyc6ICdceGEyJywKICAgICdDZW50ZXJEb3Q7JzogJ1x4YjcnLAogICAgJ2NlbnRlcmRvdDsnOiAnXHhiNycsCiAgICAnQ2ZyOyc6ICdcdTIxMmQnLAogICAgJ2NmcjsnOiAnXFUwMDAxZDUyMCcsCiAgICAnQ0hjeTsnOiAnXHUwNDI3JywKICAgICdjaGN5Oyc6ICdcdTA0NDcnLAogICAgJ2NoZWNrOyc6ICdcdTI3MTMnLAogICAgJ2NoZWNrbWFyazsnOiAnXHUyNzEzJywKICAgICdDaGk7JzogJ1x1MDNhNycsCiAgICAnY2hpOyc6ICdcdTAzYzcnLAogICAgJ2NpcjsnOiAnXHUyNWNiJywKICAgICdjaXJjOyc6ICdcdTAyYzYnLAogICAgJ2NpcmNlcTsnOiAnXHUyMjU3JywKICAgICdjaXJjbGVhcnJvd2xlZnQ7JzogJ1x1MjFiYScsCiAgICAnY2lyY2xlYXJyb3dyaWdodDsnOiAnXHUyMWJiJywKICAgICdjaXJjbGVkYXN0Oyc6ICdcdTIyOWInLAogICAgJ2NpcmNsZWRjaXJjOyc6ICdcdTIyOWEnLAogICAgJ2NpcmNsZWRkYXNoOyc6ICdcdTIyOWQnLAogICAgJ0NpcmNsZURvdDsnOiAnXHUyMjk5JywKICAgICdjaXJjbGVkUjsnOiAnXHhhZScsCiAgICAnY2lyY2xlZFM7JzogJ1x1MjRjOCcsCiAgICAnQ2lyY2xlTWludXM7JzogJ1x1MjI5NicsCiAgICAnQ2lyY2xlUGx1czsnOiAnXHUyMjk1JywKICAgICdDaXJjbGVUaW1lczsnOiAnXHUyMjk3JywKICAgICdjaXJFOyc6ICdcdTI5YzMnLAogICAgJ2NpcmU7JzogJ1x1MjI1NycsCiAgICAnY2lyZm5pbnQ7JzogJ1x1MmExMCcsCiAgICAnY2lybWlkOyc6ICdcdTJhZWYnLAogICAgJ2NpcnNjaXI7JzogJ1x1MjljMicsCiAgICAnQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyc6ICdcdTIyMzInLAogICAgJ0Nsb3NlQ3VybHlEb3VibGVRdW90ZTsnOiAnXHUyMDFkJywKICAgICdDbG9zZUN1cmx5UXVvdGU7JzogJ1x1MjAxOScsCiAgICAnY2x1YnM7JzogJ1x1MjY2MycsCiAgICAnY2x1YnN1aXQ7JzogJ1x1MjY2MycsCiAgICAnQ29sb247JzogJ1x1MjIzNycsCiAgICAnY29sb247JzogJzonLAogICAgJ0NvbG9uZTsnOiAnXHUyYTc0JywKICAgICdjb2xvbmU7JzogJ1x1MjI1NCcsCiAgICAnY29sb25lcTsnOiAnXHUyMjU0JywKICAgICdjb21tYTsnOiAnLCcsCiAgICAnY29tbWF0Oyc6ICdAJywKICAgICdjb21wOyc6ICdcdTIyMDEnLAogICAgJ2NvbXBmbjsnOiAnXHUyMjE4JywKICAgICdjb21wbGVtZW50Oyc6ICdcdTIyMDEnLAogICAgJ2NvbXBsZXhlczsnOiAnXHUyMTAyJywKICAgICdjb25nOyc6ICdcdTIyNDUnLAogICAgJ2Nvbmdkb3Q7JzogJ1x1MmE2ZCcsCiAgICAnQ29uZ3J1ZW50Oyc6ICdcdTIyNjEnLAogICAgJ0NvbmludDsnOiAnXHUyMjJmJywKICAgICdjb25pbnQ7JzogJ1x1MjIyZScsCiAgICAnQ29udG91ckludGVncmFsOyc6ICdcdTIyMmUnLAogICAgJ0NvcGY7JzogJ1x1MjEwMicsCiAgICAnY29wZjsnOiAnXFUwMDAxZDU1NCcsCiAgICAnY29wcm9kOyc6ICdcdTIyMTAnLAogICAgJ0NvcHJvZHVjdDsnOiAnXHUyMjEwJywKICAgICdDT1BZJzogJ1x4YTknLAogICAgJ2NvcHknOiAnXHhhOScsCiAgICAnQ09QWTsnOiAnXHhhOScsCiAgICAnY29weTsnOiAnXHhhOScsCiAgICAnY29weXNyOyc6ICdcdTIxMTcnLAogICAgJ0NvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7JzogJ1x1MjIzMycsCiAgICAnY3JhcnI7JzogJ1x1MjFiNScsCiAgICAnQ3Jvc3M7JzogJ1x1MmEyZicsCiAgICAnY3Jvc3M7JzogJ1x1MjcxNycsCiAgICAnQ3NjcjsnOiAnXFUwMDAxZDQ5ZScsCiAgICAnY3NjcjsnOiAnXFUwMDAxZDRiOCcsCiAgICAnY3N1YjsnOiAnXHUyYWNmJywKICAgICdjc3ViZTsnOiAnXHUyYWQxJywKICAgICdjc3VwOyc6ICdcdTJhZDAnLAogICAgJ2NzdXBlOyc6ICdcdTJhZDInLAogICAgJ2N0ZG90Oyc6ICdcdTIyZWYnLAogICAgJ2N1ZGFycmw7JzogJ1x1MjkzOCcsCiAgICAnY3VkYXJycjsnOiAnXHUyOTM1JywKICAgICdjdWVwcjsnOiAnXHUyMmRlJywKICAgICdjdWVzYzsnOiAnXHUyMmRmJywKICAgICdjdWxhcnI7JzogJ1x1MjFiNicsCiAgICAnY3VsYXJycDsnOiAnXHUyOTNkJywKICAgICdDdXA7JzogJ1x1MjJkMycsCiAgICAnY3VwOyc6ICdcdTIyMmEnLAogICAgJ2N1cGJyY2FwOyc6ICdcdTJhNDgnLAogICAgJ0N1cENhcDsnOiAnXHUyMjRkJywKICAgICdjdXBjYXA7JzogJ1x1MmE0NicsCiAgICAnY3VwY3VwOyc6ICdcdTJhNGEnLAogICAgJ2N1cGRvdDsnOiAnXHUyMjhkJywKICAgICdjdXBvcjsnOiAnXHUyYTQ1JywKICAgICdjdXBzOyc6ICdcdTIyMmFcdWZlMDAnLAogICAgJ2N1cmFycjsnOiAnXHUyMWI3JywKICAgICdjdXJhcnJtOyc6ICdcdTI5M2MnLAogICAgJ2N1cmx5ZXFwcmVjOyc6ICdcdTIyZGUnLAogICAgJ2N1cmx5ZXFzdWNjOyc6ICdcdTIyZGYnLAogICAgJ2N1cmx5dmVlOyc6ICdcdTIyY2UnLAogICAgJ2N1cmx5d2VkZ2U7JzogJ1x1MjJjZicsCiAgICAnY3VycmVuJzogJ1x4YTQnLAogICAgJ2N1cnJlbjsnOiAnXHhhNCcsCiAgICAnY3VydmVhcnJvd2xlZnQ7JzogJ1x1MjFiNicsCiAgICAnY3VydmVhcnJvd3JpZ2h0Oyc6ICdcdTIxYjcnLAogICAgJ2N1dmVlOyc6ICdcdTIyY2UnLAogICAgJ2N1d2VkOyc6ICdcdTIyY2YnLAogICAgJ2N3Y29uaW50Oyc6ICdcdTIyMzInLAogICAgJ2N3aW50Oyc6ICdcdTIyMzEnLAogICAgJ2N5bGN0eTsnOiAnXHUyMzJkJywKICAgICdEYWdnZXI7JzogJ1x1MjAyMScsCiAgICAnZGFnZ2VyOyc6ICdcdTIwMjAnLAogICAgJ2RhbGV0aDsnOiAnXHUyMTM4JywKICAgICdEYXJyOyc6ICdcdTIxYTEnLAogICAgJ2RBcnI7JzogJ1x1MjFkMycsCiAgICAnZGFycjsnOiAnXHUyMTkzJywKICAgICdkYXNoOyc6ICdcdTIwMTAnLAogICAgJ0Rhc2h2Oyc6ICdcdTJhZTQnLAogICAgJ2Rhc2h2Oyc6ICdcdTIyYTMnLAogICAgJ2Ria2Fyb3c7JzogJ1x1MjkwZicsCiAgICAnZGJsYWM7JzogJ1x1MDJkZCcsCiAgICAnRGNhcm9uOyc6ICdcdTAxMGUnLAogICAgJ2RjYXJvbjsnOiAnXHUwMTBmJywKICAgICdEY3k7JzogJ1x1MDQxNCcsCiAgICAnZGN5Oyc6ICdcdTA0MzQnLAogICAgJ0REOyc6ICdcdTIxNDUnLAogICAgJ2RkOyc6ICdcdTIxNDYnLAogICAgJ2RkYWdnZXI7JzogJ1x1MjAyMScsCiAgICAnZGRhcnI7JzogJ1x1MjFjYScsCiAgICAnRERvdHJhaGQ7JzogJ1x1MjkxMScsCiAgICAnZGRvdHNlcTsnOiAnXHUyYTc3JywKICAgICdkZWcnOiAnXHhiMCcsCiAgICAnZGVnOyc6ICdceGIwJywKICAgICdEZWw7JzogJ1x1MjIwNycsCiAgICAnRGVsdGE7JzogJ1x1MDM5NCcsCiAgICAnZGVsdGE7JzogJ1x1MDNiNCcsCiAgICAnZGVtcHR5djsnOiAnXHUyOWIxJywKICAgICdkZmlzaHQ7JzogJ1x1Mjk3ZicsCiAgICAnRGZyOyc6ICdcVTAwMDFkNTA3JywKICAgICdkZnI7JzogJ1xVMDAwMWQ1MjEnLAogICAgJ2RIYXI7JzogJ1x1Mjk2NScsCiAgICAnZGhhcmw7JzogJ1x1MjFjMycsCiAgICAnZGhhcnI7JzogJ1x1MjFjMicsCiAgICAnRGlhY3JpdGljYWxBY3V0ZTsnOiAnXHhiNCcsCiAgICAnRGlhY3JpdGljYWxEb3Q7JzogJ1x1MDJkOScsCiAgICAnRGlhY3JpdGljYWxEb3VibGVBY3V0ZTsnOiAnXHUwMmRkJywKICAgICdEaWFjcml0aWNhbEdyYXZlOyc6ICdgJywKICAgICdEaWFjcml0aWNhbFRpbGRlOyc6ICdcdTAyZGMnLAogICAgJ2RpYW07JzogJ1x1MjJjNCcsCiAgICAnRGlhbW9uZDsnOiAnXHUyMmM0JywKICAgICdkaWFtb25kOyc6ICdcdTIyYzQnLAogICAgJ2RpYW1vbmRzdWl0Oyc6ICdcdTI2NjYnLAogICAgJ2RpYW1zOyc6ICdcdTI2NjYnLAogICAgJ2RpZTsnOiAnXHhhOCcsCiAgICAnRGlmZmVyZW50aWFsRDsnOiAnXHUyMTQ2JywKICAgICdkaWdhbW1hOyc6ICdcdTAzZGQnLAogICAgJ2Rpc2luOyc6ICdcdTIyZjInLAogICAgJ2RpdjsnOiAnXHhmNycsCiAgICAnZGl2aWRlJzogJ1x4ZjcnLAogICAgJ2RpdmlkZTsnOiAnXHhmNycsCiAgICAnZGl2aWRlb250aW1lczsnOiAnXHUyMmM3JywKICAgICdkaXZvbng7JzogJ1x1MjJjNycsCiAgICAnREpjeTsnOiAnXHUwNDAyJywKICAgICdkamN5Oyc6ICdcdTA0NTInLAogICAgJ2RsY29ybjsnOiAnXHUyMzFlJywKICAgICdkbGNyb3A7JzogJ1x1MjMwZCcsCiAgICAnZG9sbGFyOyc6ICckJywKICAgICdEb3BmOyc6ICdcVTAwMDFkNTNiJywKICAgICdkb3BmOyc6ICdcVTAwMDFkNTU1JywKICAgICdEb3Q7JzogJ1x4YTgnLAogICAgJ2RvdDsnOiAnXHUwMmQ5JywKICAgICdEb3REb3Q7JzogJ1x1MjBkYycsCiAgICAnZG90ZXE7JzogJ1x1MjI1MCcsCiAgICAnZG90ZXFkb3Q7JzogJ1x1MjI1MScsCiAgICAnRG90RXF1YWw7JzogJ1x1MjI1MCcsCiAgICAnZG90bWludXM7JzogJ1x1MjIzOCcsCiAgICAnZG90cGx1czsnOiAnXHUyMjE0JywKICAgICdkb3RzcXVhcmU7JzogJ1x1MjJhMScsCiAgICAnZG91YmxlYmFyd2VkZ2U7JzogJ1x1MjMwNicsCiAgICAnRG91YmxlQ29udG91ckludGVncmFsOyc6ICdcdTIyMmYnLAogICAgJ0RvdWJsZURvdDsnOiAnXHhhOCcsCiAgICAnRG91YmxlRG93bkFycm93Oyc6ICdcdTIxZDMnLAogICAgJ0RvdWJsZUxlZnRBcnJvdzsnOiAnXHUyMWQwJywKICAgICdEb3VibGVMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyMWQ0JywKICAgICdEb3VibGVMZWZ0VGVlOyc6ICdcdTJhZTQnLAogICAgJ0RvdWJsZUxvbmdMZWZ0QXJyb3c7JzogJ1x1MjdmOCcsCiAgICAnRG91YmxlTG9uZ0xlZnRSaWdodEFycm93Oyc6ICdcdTI3ZmEnLAogICAgJ0RvdWJsZUxvbmdSaWdodEFycm93Oyc6ICdcdTI3ZjknLAogICAgJ0RvdWJsZVJpZ2h0QXJyb3c7JzogJ1x1MjFkMicsCiAgICAnRG91YmxlUmlnaHRUZWU7JzogJ1x1MjJhOCcsCiAgICAnRG91YmxlVXBBcnJvdzsnOiAnXHUyMWQxJywKICAgICdEb3VibGVVcERvd25BcnJvdzsnOiAnXHUyMWQ1JywKICAgICdEb3VibGVWZXJ0aWNhbEJhcjsnOiAnXHUyMjI1JywKICAgICdEb3duQXJyb3c7JzogJ1x1MjE5MycsCiAgICAnRG93bmFycm93Oyc6ICdcdTIxZDMnLAogICAgJ2Rvd25hcnJvdzsnOiAnXHUyMTkzJywKICAgICdEb3duQXJyb3dCYXI7JzogJ1x1MjkxMycsCiAgICAnRG93bkFycm93VXBBcnJvdzsnOiAnXHUyMWY1JywKICAgICdEb3duQnJldmU7JzogJ1x1MDMxMScsCiAgICAnZG93bmRvd25hcnJvd3M7JzogJ1x1MjFjYScsCiAgICAnZG93bmhhcnBvb25sZWZ0Oyc6ICdcdTIxYzMnLAogICAgJ2Rvd25oYXJwb29ucmlnaHQ7JzogJ1x1MjFjMicsCiAgICAnRG93bkxlZnRSaWdodFZlY3RvcjsnOiAnXHUyOTUwJywKICAgICdEb3duTGVmdFRlZVZlY3RvcjsnOiAnXHUyOTVlJywKICAgICdEb3duTGVmdFZlY3RvcjsnOiAnXHUyMWJkJywKICAgICdEb3duTGVmdFZlY3RvckJhcjsnOiAnXHUyOTU2JywKICAgICdEb3duUmlnaHRUZWVWZWN0b3I7JzogJ1x1Mjk1ZicsCiAgICAnRG93blJpZ2h0VmVjdG9yOyc6ICdcdTIxYzEnLAogICAgJ0Rvd25SaWdodFZlY3RvckJhcjsnOiAnXHUyOTU3JywKICAgICdEb3duVGVlOyc6ICdcdTIyYTQnLAogICAgJ0Rvd25UZWVBcnJvdzsnOiAnXHUyMWE3JywKICAgICdkcmJrYXJvdzsnOiAnXHUyOTEwJywKICAgICdkcmNvcm47JzogJ1x1MjMxZicsCiAgICAnZHJjcm9wOyc6ICdcdTIzMGMnLAogICAgJ0RzY3I7JzogJ1xVMDAwMWQ0OWYnLAogICAgJ2RzY3I7JzogJ1xVMDAwMWQ0YjknLAogICAgJ0RTY3k7JzogJ1x1MDQwNScsCiAgICAnZHNjeTsnOiAnXHUwNDU1JywKICAgICdkc29sOyc6ICdcdTI5ZjYnLAogICAgJ0RzdHJvazsnOiAnXHUwMTEwJywKICAgICdkc3Ryb2s7JzogJ1x1MDExMScsCiAgICAnZHRkb3Q7JzogJ1x1MjJmMScsCiAgICAnZHRyaTsnOiAnXHUyNWJmJywKICAgICdkdHJpZjsnOiAnXHUyNWJlJywKICAgICdkdWFycjsnOiAnXHUyMWY1JywKICAgICdkdWhhcjsnOiAnXHUyOTZmJywKICAgICdkd2FuZ2xlOyc6ICdcdTI5YTYnLAogICAgJ0RaY3k7JzogJ1x1MDQwZicsCiAgICAnZHpjeTsnOiAnXHUwNDVmJywKICAgICdkemlncmFycjsnOiAnXHUyN2ZmJywKICAgICdFYWN1dGUnOiAnXHhjOScsCiAgICAnZWFjdXRlJzogJ1x4ZTknLAogICAgJ0VhY3V0ZTsnOiAnXHhjOScsCiAgICAnZWFjdXRlOyc6ICdceGU5JywKICAgICdlYXN0ZXI7JzogJ1x1MmE2ZScsCiAgICAnRWNhcm9uOyc6ICdcdTAxMWEnLAogICAgJ2VjYXJvbjsnOiAnXHUwMTFiJywKICAgICdlY2lyOyc6ICdcdTIyNTYnLAogICAgJ0VjaXJjJzogJ1x4Y2EnLAogICAgJ2VjaXJjJzogJ1x4ZWEnLAogICAgJ0VjaXJjOyc6ICdceGNhJywKICAgICdlY2lyYzsnOiAnXHhlYScsCiAgICAnZWNvbG9uOyc6ICdcdTIyNTUnLAogICAgJ0VjeTsnOiAnXHUwNDJkJywKICAgICdlY3k7JzogJ1x1MDQ0ZCcsCiAgICAnZUREb3Q7JzogJ1x1MmE3NycsCiAgICAnRWRvdDsnOiAnXHUwMTE2JywKICAgICdlRG90Oyc6ICdcdTIyNTEnLAogICAgJ2Vkb3Q7JzogJ1x1MDExNycsCiAgICAnZWU7JzogJ1x1MjE0NycsCiAgICAnZWZEb3Q7JzogJ1x1MjI1MicsCiAgICAnRWZyOyc6ICdcVTAwMDFkNTA4JywKICAgICdlZnI7JzogJ1xVMDAwMWQ1MjInLAogICAgJ2VnOyc6ICdcdTJhOWEnLAogICAgJ0VncmF2ZSc6ICdceGM4JywKICAgICdlZ3JhdmUnOiAnXHhlOCcsCiAgICAnRWdyYXZlOyc6ICdceGM4JywKICAgICdlZ3JhdmU7JzogJ1x4ZTgnLAogICAgJ2VnczsnOiAnXHUyYTk2JywKICAgICdlZ3Nkb3Q7JzogJ1x1MmE5OCcsCiAgICAnZWw7JzogJ1x1MmE5OScsCiAgICAnRWxlbWVudDsnOiAnXHUyMjA4JywKICAgICdlbGludGVyczsnOiAnXHUyM2U3JywKICAgICdlbGw7JzogJ1x1MjExMycsCiAgICAnZWxzOyc6ICdcdTJhOTUnLAogICAgJ2Vsc2RvdDsnOiAnXHUyYTk3JywKICAgICdFbWFjcjsnOiAnXHUwMTEyJywKICAgICdlbWFjcjsnOiAnXHUwMTEzJywKICAgICdlbXB0eTsnOiAnXHUyMjA1JywKICAgICdlbXB0eXNldDsnOiAnXHUyMjA1JywKICAgICdFbXB0eVNtYWxsU3F1YXJlOyc6ICdcdTI1ZmInLAogICAgJ2VtcHR5djsnOiAnXHUyMjA1JywKICAgICdFbXB0eVZlcnlTbWFsbFNxdWFyZTsnOiAnXHUyNWFiJywKICAgICdlbXNwMTM7JzogJ1x1MjAwNCcsCiAgICAnZW1zcDE0Oyc6ICdcdTIwMDUnLAogICAgJ2Vtc3A7JzogJ1x1MjAwMycsCiAgICAnRU5HOyc6ICdcdTAxNGEnLAogICAgJ2VuZzsnOiAnXHUwMTRiJywKICAgICdlbnNwOyc6ICdcdTIwMDInLAogICAgJ0VvZ29uOyc6ICdcdTAxMTgnLAogICAgJ2VvZ29uOyc6ICdcdTAxMTknLAogICAgJ0VvcGY7JzogJ1xVMDAwMWQ1M2MnLAogICAgJ2VvcGY7JzogJ1xVMDAwMWQ1NTYnLAogICAgJ2VwYXI7JzogJ1x1MjJkNScsCiAgICAnZXBhcnNsOyc6ICdcdTI5ZTMnLAogICAgJ2VwbHVzOyc6ICdcdTJhNzEnLAogICAgJ2Vwc2k7JzogJ1x1MDNiNScsCiAgICAnRXBzaWxvbjsnOiAnXHUwMzk1JywKICAgICdlcHNpbG9uOyc6ICdcdTAzYjUnLAogICAgJ2Vwc2l2Oyc6ICdcdTAzZjUnLAogICAgJ2VxY2lyYzsnOiAnXHUyMjU2JywKICAgICdlcWNvbG9uOyc6ICdcdTIyNTUnLAogICAgJ2Vxc2ltOyc6ICdcdTIyNDInLAogICAgJ2Vxc2xhbnRndHI7JzogJ1x1MmE5NicsCiAgICAnZXFzbGFudGxlc3M7JzogJ1x1MmE5NScsCiAgICAnRXF1YWw7JzogJ1x1MmE3NScsCiAgICAnZXF1YWxzOyc6ICc9JywKICAgICdFcXVhbFRpbGRlOyc6ICdcdTIyNDInLAogICAgJ2VxdWVzdDsnOiAnXHUyMjVmJywKICAgICdFcXVpbGlicml1bTsnOiAnXHUyMWNjJywKICAgICdlcXVpdjsnOiAnXHUyMjYxJywKICAgICdlcXVpdkREOyc6ICdcdTJhNzgnLAogICAgJ2VxdnBhcnNsOyc6ICdcdTI5ZTUnLAogICAgJ2VyYXJyOyc6ICdcdTI5NzEnLAogICAgJ2VyRG90Oyc6ICdcdTIyNTMnLAogICAgJ0VzY3I7JzogJ1x1MjEzMCcsCiAgICAnZXNjcjsnOiAnXHUyMTJmJywKICAgICdlc2RvdDsnOiAnXHUyMjUwJywKICAgICdFc2ltOyc6ICdcdTJhNzMnLAogICAgJ2VzaW07JzogJ1x1MjI0MicsCiAgICAnRXRhOyc6ICdcdTAzOTcnLAogICAgJ2V0YTsnOiAnXHUwM2I3JywKICAgICdFVEgnOiAnXHhkMCcsCiAgICAnZXRoJzogJ1x4ZjAnLAogICAgJ0VUSDsnOiAnXHhkMCcsCiAgICAnZXRoOyc6ICdceGYwJywKICAgICdFdW1sJzogJ1x4Y2InLAogICAgJ2V1bWwnOiAnXHhlYicsCiAgICAnRXVtbDsnOiAnXHhjYicsCiAgICAnZXVtbDsnOiAnXHhlYicsCiAgICAnZXVybzsnOiAnXHUyMGFjJywKICAgICdleGNsOyc6ICchJywKICAgICdleGlzdDsnOiAnXHUyMjAzJywKICAgICdFeGlzdHM7JzogJ1x1MjIwMycsCiAgICAnZXhwZWN0YXRpb247JzogJ1x1MjEzMCcsCiAgICAnRXhwb25lbnRpYWxFOyc6ICdcdTIxNDcnLAogICAgJ2V4cG9uZW50aWFsZTsnOiAnXHUyMTQ3JywKICAgICdmYWxsaW5nZG90c2VxOyc6ICdcdTIyNTInLAogICAgJ0ZjeTsnOiAnXHUwNDI0JywKICAgICdmY3k7JzogJ1x1MDQ0NCcsCiAgICAnZmVtYWxlOyc6ICdcdTI2NDAnLAogICAgJ2ZmaWxpZzsnOiAnXHVmYjAzJywKICAgICdmZmxpZzsnOiAnXHVmYjAwJywKICAgICdmZmxsaWc7JzogJ1x1ZmIwNCcsCiAgICAnRmZyOyc6ICdcVTAwMDFkNTA5JywKICAgICdmZnI7JzogJ1xVMDAwMWQ1MjMnLAogICAgJ2ZpbGlnOyc6ICdcdWZiMDEnLAogICAgJ0ZpbGxlZFNtYWxsU3F1YXJlOyc6ICdcdTI1ZmMnLAogICAgJ0ZpbGxlZFZlcnlTbWFsbFNxdWFyZTsnOiAnXHUyNWFhJywKICAgICdmamxpZzsnOiAnZmonLAogICAgJ2ZsYXQ7JzogJ1x1MjY2ZCcsCiAgICAnZmxsaWc7JzogJ1x1ZmIwMicsCiAgICAnZmx0bnM7JzogJ1x1MjViMScsCiAgICAnZm5vZjsnOiAnXHUwMTkyJywKICAgICdGb3BmOyc6ICdcVTAwMDFkNTNkJywKICAgICdmb3BmOyc6ICdcVTAwMDFkNTU3JywKICAgICdGb3JBbGw7JzogJ1x1MjIwMCcsCiAgICAnZm9yYWxsOyc6ICdcdTIyMDAnLAogICAgJ2Zvcms7JzogJ1x1MjJkNCcsCiAgICAnZm9ya3Y7JzogJ1x1MmFkOScsCiAgICAnRm91cmllcnRyZjsnOiAnXHUyMTMxJywKICAgICdmcGFydGludDsnOiAnXHUyYTBkJywKICAgICdmcmFjMTInOiAnXHhiZCcsCiAgICAnZnJhYzEyOyc6ICdceGJkJywKICAgICdmcmFjMTM7JzogJ1x1MjE1MycsCiAgICAnZnJhYzE0JzogJ1x4YmMnLAogICAgJ2ZyYWMxNDsnOiAnXHhiYycsCiAgICAnZnJhYzE1Oyc6ICdcdTIxNTUnLAogICAgJ2ZyYWMxNjsnOiAnXHUyMTU5JywKICAgICdmcmFjMTg7JzogJ1x1MjE1YicsCiAgICAnZnJhYzIzOyc6ICdcdTIxNTQnLAogICAgJ2ZyYWMyNTsnOiAnXHUyMTU2JywKICAgICdmcmFjMzQnOiAnXHhiZScsCiAgICAnZnJhYzM0Oyc6ICdceGJlJywKICAgICdmcmFjMzU7JzogJ1x1MjE1NycsCiAgICAnZnJhYzM4Oyc6ICdcdTIxNWMnLAogICAgJ2ZyYWM0NTsnOiAnXHUyMTU4JywKICAgICdmcmFjNTY7JzogJ1x1MjE1YScsCiAgICAnZnJhYzU4Oyc6ICdcdTIxNWQnLAogICAgJ2ZyYWM3ODsnOiAnXHUyMTVlJywKICAgICdmcmFzbDsnOiAnXHUyMDQ0JywKICAgICdmcm93bjsnOiAnXHUyMzIyJywKICAgICdGc2NyOyc6ICdcdTIxMzEnLAogICAgJ2ZzY3I7JzogJ1xVMDAwMWQ0YmInLAogICAgJ2dhY3V0ZTsnOiAnXHUwMWY1JywKICAgICdHYW1tYTsnOiAnXHUwMzkzJywKICAgICdnYW1tYTsnOiAnXHUwM2IzJywKICAgICdHYW1tYWQ7JzogJ1x1MDNkYycsCiAgICAnZ2FtbWFkOyc6ICdcdTAzZGQnLAogICAgJ2dhcDsnOiAnXHUyYTg2JywKICAgICdHYnJldmU7JzogJ1x1MDExZScsCiAgICAnZ2JyZXZlOyc6ICdcdTAxMWYnLAogICAgJ0djZWRpbDsnOiAnXHUwMTIyJywKICAgICdHY2lyYzsnOiAnXHUwMTFjJywKICAgICdnY2lyYzsnOiAnXHUwMTFkJywKICAgICdHY3k7JzogJ1x1MDQxMycsCiAgICAnZ2N5Oyc6ICdcdTA0MzMnLAogICAgJ0dkb3Q7JzogJ1x1MDEyMCcsCiAgICAnZ2RvdDsnOiAnXHUwMTIxJywKICAgICdnRTsnOiAnXHUyMjY3JywKICAgICdnZTsnOiAnXHUyMjY1JywKICAgICdnRWw7JzogJ1x1MmE4YycsCiAgICAnZ2VsOyc6ICdcdTIyZGInLAogICAgJ2dlcTsnOiAnXHUyMjY1JywKICAgICdnZXFxOyc6ICdcdTIyNjcnLAogICAgJ2dlcXNsYW50Oyc6ICdcdTJhN2UnLAogICAgJ2dlczsnOiAnXHUyYTdlJywKICAgICdnZXNjYzsnOiAnXHUyYWE5JywKICAgICdnZXNkb3Q7JzogJ1x1MmE4MCcsCiAgICAnZ2VzZG90bzsnOiAnXHUyYTgyJywKICAgICdnZXNkb3RvbDsnOiAnXHUyYTg0JywKICAgICdnZXNsOyc6ICdcdTIyZGJcdWZlMDAnLAogICAgJ2dlc2xlczsnOiAnXHUyYTk0JywKICAgICdHZnI7JzogJ1xVMDAwMWQ1MGEnLAogICAgJ2dmcjsnOiAnXFUwMDAxZDUyNCcsCiAgICAnR2c7JzogJ1x1MjJkOScsCiAgICAnZ2c7JzogJ1x1MjI2YicsCiAgICAnZ2dnOyc6ICdcdTIyZDknLAogICAgJ2dpbWVsOyc6ICdcdTIxMzcnLAogICAgJ0dKY3k7JzogJ1x1MDQwMycsCiAgICAnZ2pjeTsnOiAnXHUwNDUzJywKICAgICdnbDsnOiAnXHUyMjc3JywKICAgICdnbGE7JzogJ1x1MmFhNScsCiAgICAnZ2xFOyc6ICdcdTJhOTInLAogICAgJ2dsajsnOiAnXHUyYWE0JywKICAgICdnbmFwOyc6ICdcdTJhOGEnLAogICAgJ2duYXBwcm94Oyc6ICdcdTJhOGEnLAogICAgJ2duRTsnOiAnXHUyMjY5JywKICAgICdnbmU7JzogJ1x1MmE4OCcsCiAgICAnZ25lcTsnOiAnXHUyYTg4JywKICAgICdnbmVxcTsnOiAnXHUyMjY5JywKICAgICdnbnNpbTsnOiAnXHUyMmU3JywKICAgICdHb3BmOyc6ICdcVTAwMDFkNTNlJywKICAgICdnb3BmOyc6ICdcVTAwMDFkNTU4JywKICAgICdncmF2ZTsnOiAnYCcsCiAgICAnR3JlYXRlckVxdWFsOyc6ICdcdTIyNjUnLAogICAgJ0dyZWF0ZXJFcXVhbExlc3M7JzogJ1x1MjJkYicsCiAgICAnR3JlYXRlckZ1bGxFcXVhbDsnOiAnXHUyMjY3JywKICAgICdHcmVhdGVyR3JlYXRlcjsnOiAnXHUyYWEyJywKICAgICdHcmVhdGVyTGVzczsnOiAnXHUyMjc3JywKICAgICdHcmVhdGVyU2xhbnRFcXVhbDsnOiAnXHUyYTdlJywKICAgICdHcmVhdGVyVGlsZGU7JzogJ1x1MjI3MycsCiAgICAnR3NjcjsnOiAnXFUwMDAxZDRhMicsCiAgICAnZ3NjcjsnOiAnXHUyMTBhJywKICAgICdnc2ltOyc6ICdcdTIyNzMnLAogICAgJ2dzaW1lOyc6ICdcdTJhOGUnLAogICAgJ2dzaW1sOyc6ICdcdTJhOTAnLAogICAgJ0dUJzogJz4nLAogICAgJ2d0JzogJz4nLAogICAgJ0dUOyc6ICc+JywKICAgICdHdDsnOiAnXHUyMjZiJywKICAgICdndDsnOiAnPicsCiAgICAnZ3RjYzsnOiAnXHUyYWE3JywKICAgICdndGNpcjsnOiAnXHUyYTdhJywKICAgICdndGRvdDsnOiAnXHUyMmQ3JywKICAgICdndGxQYXI7JzogJ1x1Mjk5NScsCiAgICAnZ3RxdWVzdDsnOiAnXHUyYTdjJywKICAgICdndHJhcHByb3g7JzogJ1x1MmE4NicsCiAgICAnZ3RyYXJyOyc6ICdcdTI5NzgnLAogICAgJ2d0cmRvdDsnOiAnXHUyMmQ3JywKICAgICdndHJlcWxlc3M7JzogJ1x1MjJkYicsCiAgICAnZ3RyZXFxbGVzczsnOiAnXHUyYThjJywKICAgICdndHJsZXNzOyc6ICdcdTIyNzcnLAogICAgJ2d0cnNpbTsnOiAnXHUyMjczJywKICAgICdndmVydG5lcXE7JzogJ1x1MjI2OVx1ZmUwMCcsCiAgICAnZ3ZuRTsnOiAnXHUyMjY5XHVmZTAwJywKICAgICdIYWNlazsnOiAnXHUwMmM3JywKICAgICdoYWlyc3A7JzogJ1x1MjAwYScsCiAgICAnaGFsZjsnOiAnXHhiZCcsCiAgICAnaGFtaWx0Oyc6ICdcdTIxMGInLAogICAgJ0hBUkRjeTsnOiAnXHUwNDJhJywKICAgICdoYXJkY3k7JzogJ1x1MDQ0YScsCiAgICAnaEFycjsnOiAnXHUyMWQ0JywKICAgICdoYXJyOyc6ICdcdTIxOTQnLAogICAgJ2hhcnJjaXI7JzogJ1x1Mjk0OCcsCiAgICAnaGFycnc7JzogJ1x1MjFhZCcsCiAgICAnSGF0Oyc6ICdeJywKICAgICdoYmFyOyc6ICdcdTIxMGYnLAogICAgJ0hjaXJjOyc6ICdcdTAxMjQnLAogICAgJ2hjaXJjOyc6ICdcdTAxMjUnLAogICAgJ2hlYXJ0czsnOiAnXHUyNjY1JywKICAgICdoZWFydHN1aXQ7JzogJ1x1MjY2NScsCiAgICAnaGVsbGlwOyc6ICdcdTIwMjYnLAogICAgJ2hlcmNvbjsnOiAnXHUyMmI5JywKICAgICdIZnI7JzogJ1x1MjEwYycsCiAgICAnaGZyOyc6ICdcVTAwMDFkNTI1JywKICAgICdIaWxiZXJ0U3BhY2U7JzogJ1x1MjEwYicsCiAgICAnaGtzZWFyb3c7JzogJ1x1MjkyNScsCiAgICAnaGtzd2Fyb3c7JzogJ1x1MjkyNicsCiAgICAnaG9hcnI7JzogJ1x1MjFmZicsCiAgICAnaG9tdGh0Oyc6ICdcdTIyM2InLAogICAgJ2hvb2tsZWZ0YXJyb3c7JzogJ1x1MjFhOScsCiAgICAnaG9va3JpZ2h0YXJyb3c7JzogJ1x1MjFhYScsCiAgICAnSG9wZjsnOiAnXHUyMTBkJywKICAgICdob3BmOyc6ICdcVTAwMDFkNTU5JywKICAgICdob3JiYXI7JzogJ1x1MjAxNScsCiAgICAnSG9yaXpvbnRhbExpbmU7JzogJ1x1MjUwMCcsCiAgICAnSHNjcjsnOiAnXHUyMTBiJywKICAgICdoc2NyOyc6ICdcVTAwMDFkNGJkJywKICAgICdoc2xhc2g7JzogJ1x1MjEwZicsCiAgICAnSHN0cm9rOyc6ICdcdTAxMjYnLAogICAgJ2hzdHJvazsnOiAnXHUwMTI3JywKICAgICdIdW1wRG93bkh1bXA7JzogJ1x1MjI0ZScsCiAgICAnSHVtcEVxdWFsOyc6ICdcdTIyNGYnLAogICAgJ2h5YnVsbDsnOiAnXHUyMDQzJywKICAgICdoeXBoZW47JzogJ1x1MjAxMCcsCiAgICAnSWFjdXRlJzogJ1x4Y2QnLAogICAgJ2lhY3V0ZSc6ICdceGVkJywKICAgICdJYWN1dGU7JzogJ1x4Y2QnLAogICAgJ2lhY3V0ZTsnOiAnXHhlZCcsCiAgICAnaWM7JzogJ1x1MjA2MycsCiAgICAnSWNpcmMnOiAnXHhjZScsCiAgICAnaWNpcmMnOiAnXHhlZScsCiAgICAnSWNpcmM7JzogJ1x4Y2UnLAogICAgJ2ljaXJjOyc6ICdceGVlJywKICAgICdJY3k7JzogJ1x1MDQxOCcsCiAgICAnaWN5Oyc6ICdcdTA0MzgnLAogICAgJ0lkb3Q7JzogJ1x1MDEzMCcsCiAgICAnSUVjeTsnOiAnXHUwNDE1JywKICAgICdpZWN5Oyc6ICdcdTA0MzUnLAogICAgJ2lleGNsJzogJ1x4YTEnLAogICAgJ2lleGNsOyc6ICdceGExJywKICAgICdpZmY7JzogJ1x1MjFkNCcsCiAgICAnSWZyOyc6ICdcdTIxMTEnLAogICAgJ2lmcjsnOiAnXFUwMDAxZDUyNicsCiAgICAnSWdyYXZlJzogJ1x4Y2MnLAogICAgJ2lncmF2ZSc6ICdceGVjJywKICAgICdJZ3JhdmU7JzogJ1x4Y2MnLAogICAgJ2lncmF2ZTsnOiAnXHhlYycsCiAgICAnaWk7JzogJ1x1MjE0OCcsCiAgICAnaWlpaW50Oyc6ICdcdTJhMGMnLAogICAgJ2lpaW50Oyc6ICdcdTIyMmQnLAogICAgJ2lpbmZpbjsnOiAnXHUyOWRjJywKICAgICdpaW90YTsnOiAnXHUyMTI5JywKICAgICdJSmxpZzsnOiAnXHUwMTMyJywKICAgICdpamxpZzsnOiAnXHUwMTMzJywKICAgICdJbTsnOiAnXHUyMTExJywKICAgICdJbWFjcjsnOiAnXHUwMTJhJywKICAgICdpbWFjcjsnOiAnXHUwMTJiJywKICAgICdpbWFnZTsnOiAnXHUyMTExJywKICAgICdJbWFnaW5hcnlJOyc6ICdcdTIxNDgnLAogICAgJ2ltYWdsaW5lOyc6ICdcdTIxMTAnLAogICAgJ2ltYWdwYXJ0Oyc6ICdcdTIxMTEnLAogICAgJ2ltYXRoOyc6ICdcdTAxMzEnLAogICAgJ2ltb2Y7JzogJ1x1MjJiNycsCiAgICAnaW1wZWQ7JzogJ1x1MDFiNScsCiAgICAnSW1wbGllczsnOiAnXHUyMWQyJywKICAgICdpbjsnOiAnXHUyMjA4JywKICAgICdpbmNhcmU7JzogJ1x1MjEwNScsCiAgICAnaW5maW47JzogJ1x1MjIxZScsCiAgICAnaW5maW50aWU7JzogJ1x1MjlkZCcsCiAgICAnaW5vZG90Oyc6ICdcdTAxMzEnLAogICAgJ0ludDsnOiAnXHUyMjJjJywKICAgICdpbnQ7JzogJ1x1MjIyYicsCiAgICAnaW50Y2FsOyc6ICdcdTIyYmEnLAogICAgJ2ludGVnZXJzOyc6ICdcdTIxMjQnLAogICAgJ0ludGVncmFsOyc6ICdcdTIyMmInLAogICAgJ2ludGVyY2FsOyc6ICdcdTIyYmEnLAogICAgJ0ludGVyc2VjdGlvbjsnOiAnXHUyMmMyJywKICAgICdpbnRsYXJoazsnOiAnXHUyYTE3JywKICAgICdpbnRwcm9kOyc6ICdcdTJhM2MnLAogICAgJ0ludmlzaWJsZUNvbW1hOyc6ICdcdTIwNjMnLAogICAgJ0ludmlzaWJsZVRpbWVzOyc6ICdcdTIwNjInLAogICAgJ0lPY3k7JzogJ1x1MDQwMScsCiAgICAnaW9jeTsnOiAnXHUwNDUxJywKICAgICdJb2dvbjsnOiAnXHUwMTJlJywKICAgICdpb2dvbjsnOiAnXHUwMTJmJywKICAgICdJb3BmOyc6ICdcVTAwMDFkNTQwJywKICAgICdpb3BmOyc6ICdcVTAwMDFkNTVhJywKICAgICdJb3RhOyc6ICdcdTAzOTknLAogICAgJ2lvdGE7JzogJ1x1MDNiOScsCiAgICAnaXByb2Q7JzogJ1x1MmEzYycsCiAgICAnaXF1ZXN0JzogJ1x4YmYnLAogICAgJ2lxdWVzdDsnOiAnXHhiZicsCiAgICAnSXNjcjsnOiAnXHUyMTEwJywKICAgICdpc2NyOyc6ICdcVTAwMDFkNGJlJywKICAgICdpc2luOyc6ICdcdTIyMDgnLAogICAgJ2lzaW5kb3Q7JzogJ1x1MjJmNScsCiAgICAnaXNpbkU7JzogJ1x1MjJmOScsCiAgICAnaXNpbnM7JzogJ1x1MjJmNCcsCiAgICAnaXNpbnN2Oyc6ICdcdTIyZjMnLAogICAgJ2lzaW52Oyc6ICdcdTIyMDgnLAogICAgJ2l0Oyc6ICdcdTIwNjInLAogICAgJ0l0aWxkZTsnOiAnXHUwMTI4JywKICAgICdpdGlsZGU7JzogJ1x1MDEyOScsCiAgICAnSXVrY3k7JzogJ1x1MDQwNicsCiAgICAnaXVrY3k7JzogJ1x1MDQ1NicsCiAgICAnSXVtbCc6ICdceGNmJywKICAgICdpdW1sJzogJ1x4ZWYnLAogICAgJ0l1bWw7JzogJ1x4Y2YnLAogICAgJ2l1bWw7JzogJ1x4ZWYnLAogICAgJ0pjaXJjOyc6ICdcdTAxMzQnLAogICAgJ2pjaXJjOyc6ICdcdTAxMzUnLAogICAgJ0pjeTsnOiAnXHUwNDE5JywKICAgICdqY3k7JzogJ1x1MDQzOScsCiAgICAnSmZyOyc6ICdcVTAwMDFkNTBkJywKICAgICdqZnI7JzogJ1xVMDAwMWQ1MjcnLAogICAgJ2ptYXRoOyc6ICdcdTAyMzcnLAogICAgJ0pvcGY7JzogJ1xVMDAwMWQ1NDEnLAogICAgJ2pvcGY7JzogJ1xVMDAwMWQ1NWInLAogICAgJ0pzY3I7JzogJ1xVMDAwMWQ0YTUnLAogICAgJ2pzY3I7JzogJ1xVMDAwMWQ0YmYnLAogICAgJ0pzZXJjeTsnOiAnXHUwNDA4JywKICAgICdqc2VyY3k7JzogJ1x1MDQ1OCcsCiAgICAnSnVrY3k7JzogJ1x1MDQwNCcsCiAgICAnanVrY3k7JzogJ1x1MDQ1NCcsCiAgICAnS2FwcGE7JzogJ1x1MDM5YScsCiAgICAna2FwcGE7JzogJ1x1MDNiYScsCiAgICAna2FwcGF2Oyc6ICdcdTAzZjAnLAogICAgJ0tjZWRpbDsnOiAnXHUwMTM2JywKICAgICdrY2VkaWw7JzogJ1x1MDEzNycsCiAgICAnS2N5Oyc6ICdcdTA0MWEnLAogICAgJ2tjeTsnOiAnXHUwNDNhJywKICAgICdLZnI7JzogJ1xVMDAwMWQ1MGUnLAogICAgJ2tmcjsnOiAnXFUwMDAxZDUyOCcsCiAgICAna2dyZWVuOyc6ICdcdTAxMzgnLAogICAgJ0tIY3k7JzogJ1x1MDQyNScsCiAgICAna2hjeTsnOiAnXHUwNDQ1JywKICAgICdLSmN5Oyc6ICdcdTA0MGMnLAogICAgJ2tqY3k7JzogJ1x1MDQ1YycsCiAgICAnS29wZjsnOiAnXFUwMDAxZDU0MicsCiAgICAna29wZjsnOiAnXFUwMDAxZDU1YycsCiAgICAnS3NjcjsnOiAnXFUwMDAxZDRhNicsCiAgICAna3NjcjsnOiAnXFUwMDAxZDRjMCcsCiAgICAnbEFhcnI7JzogJ1x1MjFkYScsCiAgICAnTGFjdXRlOyc6ICdcdTAxMzknLAogICAgJ2xhY3V0ZTsnOiAnXHUwMTNhJywKICAgICdsYWVtcHR5djsnOiAnXHUyOWI0JywKICAgICdsYWdyYW47JzogJ1x1MjExMicsCiAgICAnTGFtYmRhOyc6ICdcdTAzOWInLAogICAgJ2xhbWJkYTsnOiAnXHUwM2JiJywKICAgICdMYW5nOyc6ICdcdTI3ZWEnLAogICAgJ2xhbmc7JzogJ1x1MjdlOCcsCiAgICAnbGFuZ2Q7JzogJ1x1Mjk5MScsCiAgICAnbGFuZ2xlOyc6ICdcdTI3ZTgnLAogICAgJ2xhcDsnOiAnXHUyYTg1JywKICAgICdMYXBsYWNldHJmOyc6ICdcdTIxMTInLAogICAgJ2xhcXVvJzogJ1x4YWInLAogICAgJ2xhcXVvOyc6ICdceGFiJywKICAgICdMYXJyOyc6ICdcdTIxOWUnLAogICAgJ2xBcnI7JzogJ1x1MjFkMCcsCiAgICAnbGFycjsnOiAnXHUyMTkwJywKICAgICdsYXJyYjsnOiAnXHUyMWU0JywKICAgICdsYXJyYmZzOyc6ICdcdTI5MWYnLAogICAgJ2xhcnJmczsnOiAnXHUyOTFkJywKICAgICdsYXJyaGs7JzogJ1x1MjFhOScsCiAgICAnbGFycmxwOyc6ICdcdTIxYWInLAogICAgJ2xhcnJwbDsnOiAnXHUyOTM5JywKICAgICdsYXJyc2ltOyc6ICdcdTI5NzMnLAogICAgJ2xhcnJ0bDsnOiAnXHUyMWEyJywKICAgICdsYXQ7JzogJ1x1MmFhYicsCiAgICAnbEF0YWlsOyc6ICdcdTI5MWInLAogICAgJ2xhdGFpbDsnOiAnXHUyOTE5JywKICAgICdsYXRlOyc6ICdcdTJhYWQnLAogICAgJ2xhdGVzOyc6ICdcdTJhYWRcdWZlMDAnLAogICAgJ2xCYXJyOyc6ICdcdTI5MGUnLAogICAgJ2xiYXJyOyc6ICdcdTI5MGMnLAogICAgJ2xiYnJrOyc6ICdcdTI3NzInLAogICAgJ2xicmFjZTsnOiAneycsCiAgICAnbGJyYWNrOyc6ICdbJywKICAgICdsYnJrZTsnOiAnXHUyOThiJywKICAgICdsYnJrc2xkOyc6ICdcdTI5OGYnLAogICAgJ2xicmtzbHU7JzogJ1x1Mjk4ZCcsCiAgICAnTGNhcm9uOyc6ICdcdTAxM2QnLAogICAgJ2xjYXJvbjsnOiAnXHUwMTNlJywKICAgICdMY2VkaWw7JzogJ1x1MDEzYicsCiAgICAnbGNlZGlsOyc6ICdcdTAxM2MnLAogICAgJ2xjZWlsOyc6ICdcdTIzMDgnLAogICAgJ2xjdWI7JzogJ3snLAogICAgJ0xjeTsnOiAnXHUwNDFiJywKICAgICdsY3k7JzogJ1x1MDQzYicsCiAgICAnbGRjYTsnOiAnXHUyOTM2JywKICAgICdsZHF1bzsnOiAnXHUyMDFjJywKICAgICdsZHF1b3I7JzogJ1x1MjAxZScsCiAgICAnbGRyZGhhcjsnOiAnXHUyOTY3JywKICAgICdsZHJ1c2hhcjsnOiAnXHUyOTRiJywKICAgICdsZHNoOyc6ICdcdTIxYjInLAogICAgJ2xFOyc6ICdcdTIyNjYnLAogICAgJ2xlOyc6ICdcdTIyNjQnLAogICAgJ0xlZnRBbmdsZUJyYWNrZXQ7JzogJ1x1MjdlOCcsCiAgICAnTGVmdEFycm93Oyc6ICdcdTIxOTAnLAogICAgJ0xlZnRhcnJvdzsnOiAnXHUyMWQwJywKICAgICdsZWZ0YXJyb3c7JzogJ1x1MjE5MCcsCiAgICAnTGVmdEFycm93QmFyOyc6ICdcdTIxZTQnLAogICAgJ0xlZnRBcnJvd1JpZ2h0QXJyb3c7JzogJ1x1MjFjNicsCiAgICAnbGVmdGFycm93dGFpbDsnOiAnXHUyMWEyJywKICAgICdMZWZ0Q2VpbGluZzsnOiAnXHUyMzA4JywKICAgICdMZWZ0RG91YmxlQnJhY2tldDsnOiAnXHUyN2U2JywKICAgICdMZWZ0RG93blRlZVZlY3RvcjsnOiAnXHUyOTYxJywKICAgICdMZWZ0RG93blZlY3RvcjsnOiAnXHUyMWMzJywKICAgICdMZWZ0RG93blZlY3RvckJhcjsnOiAnXHUyOTU5JywKICAgICdMZWZ0Rmxvb3I7JzogJ1x1MjMwYScsCiAgICAnbGVmdGhhcnBvb25kb3duOyc6ICdcdTIxYmQnLAogICAgJ2xlZnRoYXJwb29udXA7JzogJ1x1MjFiYycsCiAgICAnbGVmdGxlZnRhcnJvd3M7JzogJ1x1MjFjNycsCiAgICAnTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjE5NCcsCiAgICAnTGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjFkNCcsCiAgICAnbGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjE5NCcsCiAgICAnbGVmdHJpZ2h0YXJyb3dzOyc6ICdcdTIxYzYnLAogICAgJ2xlZnRyaWdodGhhcnBvb25zOyc6ICdcdTIxY2InLAogICAgJ2xlZnRyaWdodHNxdWlnYXJyb3c7JzogJ1x1MjFhZCcsCiAgICAnTGVmdFJpZ2h0VmVjdG9yOyc6ICdcdTI5NGUnLAogICAgJ0xlZnRUZWU7JzogJ1x1MjJhMycsCiAgICAnTGVmdFRlZUFycm93Oyc6ICdcdTIxYTQnLAogICAgJ0xlZnRUZWVWZWN0b3I7JzogJ1x1Mjk1YScsCiAgICAnbGVmdHRocmVldGltZXM7JzogJ1x1MjJjYicsCiAgICAnTGVmdFRyaWFuZ2xlOyc6ICdcdTIyYjInLAogICAgJ0xlZnRUcmlhbmdsZUJhcjsnOiAnXHUyOWNmJywKICAgICdMZWZ0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmI0JywKICAgICdMZWZ0VXBEb3duVmVjdG9yOyc6ICdcdTI5NTEnLAogICAgJ0xlZnRVcFRlZVZlY3RvcjsnOiAnXHUyOTYwJywKICAgICdMZWZ0VXBWZWN0b3I7JzogJ1x1MjFiZicsCiAgICAnTGVmdFVwVmVjdG9yQmFyOyc6ICdcdTI5NTgnLAogICAgJ0xlZnRWZWN0b3I7JzogJ1x1MjFiYycsCiAgICAnTGVmdFZlY3RvckJhcjsnOiAnXHUyOTUyJywKICAgICdsRWc7JzogJ1x1MmE4YicsCiAgICAnbGVnOyc6ICdcdTIyZGEnLAogICAgJ2xlcTsnOiAnXHUyMjY0JywKICAgICdsZXFxOyc6ICdcdTIyNjYnLAogICAgJ2xlcXNsYW50Oyc6ICdcdTJhN2QnLAogICAgJ2xlczsnOiAnXHUyYTdkJywKICAgICdsZXNjYzsnOiAnXHUyYWE4JywKICAgICdsZXNkb3Q7JzogJ1x1MmE3ZicsCiAgICAnbGVzZG90bzsnOiAnXHUyYTgxJywKICAgICdsZXNkb3RvcjsnOiAnXHUyYTgzJywKICAgICdsZXNnOyc6ICdcdTIyZGFcdWZlMDAnLAogICAgJ2xlc2dlczsnOiAnXHUyYTkzJywKICAgICdsZXNzYXBwcm94Oyc6ICdcdTJhODUnLAogICAgJ2xlc3Nkb3Q7JzogJ1x1MjJkNicsCiAgICAnbGVzc2VxZ3RyOyc6ICdcdTIyZGEnLAogICAgJ2xlc3NlcXFndHI7JzogJ1x1MmE4YicsCiAgICAnTGVzc0VxdWFsR3JlYXRlcjsnOiAnXHUyMmRhJywKICAgICdMZXNzRnVsbEVxdWFsOyc6ICdcdTIyNjYnLAogICAgJ0xlc3NHcmVhdGVyOyc6ICdcdTIyNzYnLAogICAgJ2xlc3NndHI7JzogJ1x1MjI3NicsCiAgICAnTGVzc0xlc3M7JzogJ1x1MmFhMScsCiAgICAnbGVzc3NpbTsnOiAnXHUyMjcyJywKICAgICdMZXNzU2xhbnRFcXVhbDsnOiAnXHUyYTdkJywKICAgICdMZXNzVGlsZGU7JzogJ1x1MjI3MicsCiAgICAnbGZpc2h0Oyc6ICdcdTI5N2MnLAogICAgJ2xmbG9vcjsnOiAnXHUyMzBhJywKICAgICdMZnI7JzogJ1xVMDAwMWQ1MGYnLAogICAgJ2xmcjsnOiAnXFUwMDAxZDUyOScsCiAgICAnbGc7JzogJ1x1MjI3NicsCiAgICAnbGdFOyc6ICdcdTJhOTEnLAogICAgJ2xIYXI7JzogJ1x1Mjk2MicsCiAgICAnbGhhcmQ7JzogJ1x1MjFiZCcsCiAgICAnbGhhcnU7JzogJ1x1MjFiYycsCiAgICAnbGhhcnVsOyc6ICdcdTI5NmEnLAogICAgJ2xoYmxrOyc6ICdcdTI1ODQnLAogICAgJ0xKY3k7JzogJ1x1MDQwOScsCiAgICAnbGpjeTsnOiAnXHUwNDU5JywKICAgICdMbDsnOiAnXHUyMmQ4JywKICAgICdsbDsnOiAnXHUyMjZhJywKICAgICdsbGFycjsnOiAnXHUyMWM3JywKICAgICdsbGNvcm5lcjsnOiAnXHUyMzFlJywKICAgICdMbGVmdGFycm93Oyc6ICdcdTIxZGEnLAogICAgJ2xsaGFyZDsnOiAnXHUyOTZiJywKICAgICdsbHRyaTsnOiAnXHUyNWZhJywKICAgICdMbWlkb3Q7JzogJ1x1MDEzZicsCiAgICAnbG1pZG90Oyc6ICdcdTAxNDAnLAogICAgJ2xtb3VzdDsnOiAnXHUyM2IwJywKICAgICdsbW91c3RhY2hlOyc6ICdcdTIzYjAnLAogICAgJ2xuYXA7JzogJ1x1MmE4OScsCiAgICAnbG5hcHByb3g7JzogJ1x1MmE4OScsCiAgICAnbG5FOyc6ICdcdTIyNjgnLAogICAgJ2xuZTsnOiAnXHUyYTg3JywKICAgICdsbmVxOyc6ICdcdTJhODcnLAogICAgJ2xuZXFxOyc6ICdcdTIyNjgnLAogICAgJ2xuc2ltOyc6ICdcdTIyZTYnLAogICAgJ2xvYW5nOyc6ICdcdTI3ZWMnLAogICAgJ2xvYXJyOyc6ICdcdTIxZmQnLAogICAgJ2xvYnJrOyc6ICdcdTI3ZTYnLAogICAgJ0xvbmdMZWZ0QXJyb3c7JzogJ1x1MjdmNScsCiAgICAnTG9uZ2xlZnRhcnJvdzsnOiAnXHUyN2Y4JywKICAgICdsb25nbGVmdGFycm93Oyc6ICdcdTI3ZjUnLAogICAgJ0xvbmdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyN2Y3JywKICAgICdMb25nbGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjdmYScsCiAgICAnbG9uZ2xlZnRyaWdodGFycm93Oyc6ICdcdTI3ZjcnLAogICAgJ2xvbmdtYXBzdG87JzogJ1x1MjdmYycsCiAgICAnTG9uZ1JpZ2h0QXJyb3c7JzogJ1x1MjdmNicsCiAgICAnTG9uZ3JpZ2h0YXJyb3c7JzogJ1x1MjdmOScsCiAgICAnbG9uZ3JpZ2h0YXJyb3c7JzogJ1x1MjdmNicsCiAgICAnbG9vcGFycm93bGVmdDsnOiAnXHUyMWFiJywKICAgICdsb29wYXJyb3dyaWdodDsnOiAnXHUyMWFjJywKICAgICdsb3BhcjsnOiAnXHUyOTg1JywKICAgICdMb3BmOyc6ICdcVTAwMDFkNTQzJywKICAgICdsb3BmOyc6ICdcVTAwMDFkNTVkJywKICAgICdsb3BsdXM7JzogJ1x1MmEyZCcsCiAgICAnbG90aW1lczsnOiAnXHUyYTM0JywKICAgICdsb3dhc3Q7JzogJ1x1MjIxNycsCiAgICAnbG93YmFyOyc6ICdfJywKICAgICdMb3dlckxlZnRBcnJvdzsnOiAnXHUyMTk5JywKICAgICdMb3dlclJpZ2h0QXJyb3c7JzogJ1x1MjE5OCcsCiAgICAnbG96Oyc6ICdcdTI1Y2EnLAogICAgJ2xvemVuZ2U7JzogJ1x1MjVjYScsCiAgICAnbG96ZjsnOiAnXHUyOWViJywKICAgICdscGFyOyc6ICcoJywKICAgICdscGFybHQ7JzogJ1x1Mjk5MycsCiAgICAnbHJhcnI7JzogJ1x1MjFjNicsCiAgICAnbHJjb3JuZXI7JzogJ1x1MjMxZicsCiAgICAnbHJoYXI7JzogJ1x1MjFjYicsCiAgICAnbHJoYXJkOyc6ICdcdTI5NmQnLAogICAgJ2xybTsnOiAnXHUyMDBlJywKICAgICdscnRyaTsnOiAnXHUyMmJmJywKICAgICdsc2FxdW87JzogJ1x1MjAzOScsCiAgICAnTHNjcjsnOiAnXHUyMTEyJywKICAgICdsc2NyOyc6ICdcVTAwMDFkNGMxJywKICAgICdMc2g7JzogJ1x1MjFiMCcsCiAgICAnbHNoOyc6ICdcdTIxYjAnLAogICAgJ2xzaW07JzogJ1x1MjI3MicsCiAgICAnbHNpbWU7JzogJ1x1MmE4ZCcsCiAgICAnbHNpbWc7JzogJ1x1MmE4ZicsCiAgICAnbHNxYjsnOiAnWycsCiAgICAnbHNxdW87JzogJ1x1MjAxOCcsCiAgICAnbHNxdW9yOyc6ICdcdTIwMWEnLAogICAgJ0xzdHJvazsnOiAnXHUwMTQxJywKICAgICdsc3Ryb2s7JzogJ1x1MDE0MicsCiAgICAnTFQnOiAnPCcsCiAgICAnbHQnOiAnPCcsCiAgICAnTFQ7JzogJzwnLAogICAgJ0x0Oyc6ICdcdTIyNmEnLAogICAgJ2x0Oyc6ICc8JywKICAgICdsdGNjOyc6ICdcdTJhYTYnLAogICAgJ2x0Y2lyOyc6ICdcdTJhNzknLAogICAgJ2x0ZG90Oyc6ICdcdTIyZDYnLAogICAgJ2x0aHJlZTsnOiAnXHUyMmNiJywKICAgICdsdGltZXM7JzogJ1x1MjJjOScsCiAgICAnbHRsYXJyOyc6ICdcdTI5NzYnLAogICAgJ2x0cXVlc3Q7JzogJ1x1MmE3YicsCiAgICAnbHRyaTsnOiAnXHUyNWMzJywKICAgICdsdHJpZTsnOiAnXHUyMmI0JywKICAgICdsdHJpZjsnOiAnXHUyNWMyJywKICAgICdsdHJQYXI7JzogJ1x1Mjk5NicsCiAgICAnbHVyZHNoYXI7JzogJ1x1Mjk0YScsCiAgICAnbHVydWhhcjsnOiAnXHUyOTY2JywKICAgICdsdmVydG5lcXE7JzogJ1x1MjI2OFx1ZmUwMCcsCiAgICAnbHZuRTsnOiAnXHUyMjY4XHVmZTAwJywKICAgICdtYWNyJzogJ1x4YWYnLAogICAgJ21hY3I7JzogJ1x4YWYnLAogICAgJ21hbGU7JzogJ1x1MjY0MicsCiAgICAnbWFsdDsnOiAnXHUyNzIwJywKICAgICdtYWx0ZXNlOyc6ICdcdTI3MjAnLAogICAgJ01hcDsnOiAnXHUyOTA1JywKICAgICdtYXA7JzogJ1x1MjFhNicsCiAgICAnbWFwc3RvOyc6ICdcdTIxYTYnLAogICAgJ21hcHN0b2Rvd247JzogJ1x1MjFhNycsCiAgICAnbWFwc3RvbGVmdDsnOiAnXHUyMWE0JywKICAgICdtYXBzdG91cDsnOiAnXHUyMWE1JywKICAgICdtYXJrZXI7JzogJ1x1MjVhZScsCiAgICAnbWNvbW1hOyc6ICdcdTJhMjknLAogICAgJ01jeTsnOiAnXHUwNDFjJywKICAgICdtY3k7JzogJ1x1MDQzYycsCiAgICAnbWRhc2g7JzogJ1x1MjAxNCcsCiAgICAnbUREb3Q7JzogJ1x1MjIzYScsCiAgICAnbWVhc3VyZWRhbmdsZTsnOiAnXHUyMjIxJywKICAgICdNZWRpdW1TcGFjZTsnOiAnXHUyMDVmJywKICAgICdNZWxsaW50cmY7JzogJ1x1MjEzMycsCiAgICAnTWZyOyc6ICdcVTAwMDFkNTEwJywKICAgICdtZnI7JzogJ1xVMDAwMWQ1MmEnLAogICAgJ21obzsnOiAnXHUyMTI3JywKICAgICdtaWNybyc6ICdceGI1JywKICAgICdtaWNybzsnOiAnXHhiNScsCiAgICAnbWlkOyc6ICdcdTIyMjMnLAogICAgJ21pZGFzdDsnOiAnKicsCiAgICAnbWlkY2lyOyc6ICdcdTJhZjAnLAogICAgJ21pZGRvdCc6ICdceGI3JywKICAgICdtaWRkb3Q7JzogJ1x4YjcnLAogICAgJ21pbnVzOyc6ICdcdTIyMTInLAogICAgJ21pbnVzYjsnOiAnXHUyMjlmJywKICAgICdtaW51c2Q7JzogJ1x1MjIzOCcsCiAgICAnbWludXNkdTsnOiAnXHUyYTJhJywKICAgICdNaW51c1BsdXM7JzogJ1x1MjIxMycsCiAgICAnbWxjcDsnOiAnXHUyYWRiJywKICAgICdtbGRyOyc6ICdcdTIwMjYnLAogICAgJ21ucGx1czsnOiAnXHUyMjEzJywKICAgICdtb2RlbHM7JzogJ1x1MjJhNycsCiAgICAnTW9wZjsnOiAnXFUwMDAxZDU0NCcsCiAgICAnbW9wZjsnOiAnXFUwMDAxZDU1ZScsCiAgICAnbXA7JzogJ1x1MjIxMycsCiAgICAnTXNjcjsnOiAnXHUyMTMzJywKICAgICdtc2NyOyc6ICdcVTAwMDFkNGMyJywKICAgICdtc3Rwb3M7JzogJ1x1MjIzZScsCiAgICAnTXU7JzogJ1x1MDM5YycsCiAgICAnbXU7JzogJ1x1MDNiYycsCiAgICAnbXVsdGltYXA7JzogJ1x1MjJiOCcsCiAgICAnbXVtYXA7JzogJ1x1MjJiOCcsCiAgICAnbmFibGE7JzogJ1x1MjIwNycsCiAgICAnTmFjdXRlOyc6ICdcdTAxNDMnLAogICAgJ25hY3V0ZTsnOiAnXHUwMTQ0JywKICAgICduYW5nOyc6ICdcdTIyMjBcdTIwZDInLAogICAgJ25hcDsnOiAnXHUyMjQ5JywKICAgICduYXBFOyc6ICdcdTJhNzBcdTAzMzgnLAogICAgJ25hcGlkOyc6ICdcdTIyNGJcdTAzMzgnLAogICAgJ25hcG9zOyc6ICdcdTAxNDknLAogICAgJ25hcHByb3g7JzogJ1x1MjI0OScsCiAgICAnbmF0dXI7JzogJ1x1MjY2ZScsCiAgICAnbmF0dXJhbDsnOiAnXHUyNjZlJywKICAgICduYXR1cmFsczsnOiAnXHUyMTE1JywKICAgICduYnNwJzogJ1x4YTAnLAogICAgJ25ic3A7JzogJ1x4YTAnLAogICAgJ25idW1wOyc6ICdcdTIyNGVcdTAzMzgnLAogICAgJ25idW1wZTsnOiAnXHUyMjRmXHUwMzM4JywKICAgICduY2FwOyc6ICdcdTJhNDMnLAogICAgJ05jYXJvbjsnOiAnXHUwMTQ3JywKICAgICduY2Fyb247JzogJ1x1MDE0OCcsCiAgICAnTmNlZGlsOyc6ICdcdTAxNDUnLAogICAgJ25jZWRpbDsnOiAnXHUwMTQ2JywKICAgICduY29uZzsnOiAnXHUyMjQ3JywKICAgICduY29uZ2RvdDsnOiAnXHUyYTZkXHUwMzM4JywKICAgICduY3VwOyc6ICdcdTJhNDInLAogICAgJ05jeTsnOiAnXHUwNDFkJywKICAgICduY3k7JzogJ1x1MDQzZCcsCiAgICAnbmRhc2g7JzogJ1x1MjAxMycsCiAgICAnbmU7JzogJ1x1MjI2MCcsCiAgICAnbmVhcmhrOyc6ICdcdTI5MjQnLAogICAgJ25lQXJyOyc6ICdcdTIxZDcnLAogICAgJ25lYXJyOyc6ICdcdTIxOTcnLAogICAgJ25lYXJyb3c7JzogJ1x1MjE5NycsCiAgICAnbmVkb3Q7JzogJ1x1MjI1MFx1MDMzOCcsCiAgICAnTmVnYXRpdmVNZWRpdW1TcGFjZTsnOiAnXHUyMDBiJywKICAgICdOZWdhdGl2ZVRoaWNrU3BhY2U7JzogJ1x1MjAwYicsCiAgICAnTmVnYXRpdmVUaGluU3BhY2U7JzogJ1x1MjAwYicsCiAgICAnTmVnYXRpdmVWZXJ5VGhpblNwYWNlOyc6ICdcdTIwMGInLAogICAgJ25lcXVpdjsnOiAnXHUyMjYyJywKICAgICduZXNlYXI7JzogJ1x1MjkyOCcsCiAgICAnbmVzaW07JzogJ1x1MjI0Mlx1MDMzOCcsCiAgICAnTmVzdGVkR3JlYXRlckdyZWF0ZXI7JzogJ1x1MjI2YicsCiAgICAnTmVzdGVkTGVzc0xlc3M7JzogJ1x1MjI2YScsCiAgICAnTmV3TGluZTsnOiAnXG4nLAogICAgJ25leGlzdDsnOiAnXHUyMjA0JywKICAgICduZXhpc3RzOyc6ICdcdTIyMDQnLAogICAgJ05mcjsnOiAnXFUwMDAxZDUxMScsCiAgICAnbmZyOyc6ICdcVTAwMDFkNTJiJywKICAgICduZ0U7JzogJ1x1MjI2N1x1MDMzOCcsCiAgICAnbmdlOyc6ICdcdTIyNzEnLAogICAgJ25nZXE7JzogJ1x1MjI3MScsCiAgICAnbmdlcXE7JzogJ1x1MjI2N1x1MDMzOCcsCiAgICAnbmdlcXNsYW50Oyc6ICdcdTJhN2VcdTAzMzgnLAogICAgJ25nZXM7JzogJ1x1MmE3ZVx1MDMzOCcsCiAgICAnbkdnOyc6ICdcdTIyZDlcdTAzMzgnLAogICAgJ25nc2ltOyc6ICdcdTIyNzUnLAogICAgJ25HdDsnOiAnXHUyMjZiXHUyMGQyJywKICAgICduZ3Q7JzogJ1x1MjI2ZicsCiAgICAnbmd0cjsnOiAnXHUyMjZmJywKICAgICduR3R2Oyc6ICdcdTIyNmJcdTAzMzgnLAogICAgJ25oQXJyOyc6ICdcdTIxY2UnLAogICAgJ25oYXJyOyc6ICdcdTIxYWUnLAogICAgJ25ocGFyOyc6ICdcdTJhZjInLAogICAgJ25pOyc6ICdcdTIyMGInLAogICAgJ25pczsnOiAnXHUyMmZjJywKICAgICduaXNkOyc6ICdcdTIyZmEnLAogICAgJ25pdjsnOiAnXHUyMjBiJywKICAgICdOSmN5Oyc6ICdcdTA0MGEnLAogICAgJ25qY3k7JzogJ1x1MDQ1YScsCiAgICAnbmxBcnI7JzogJ1x1MjFjZCcsCiAgICAnbmxhcnI7JzogJ1x1MjE5YScsCiAgICAnbmxkcjsnOiAnXHUyMDI1JywKICAgICdubEU7JzogJ1x1MjI2Nlx1MDMzOCcsCiAgICAnbmxlOyc6ICdcdTIyNzAnLAogICAgJ25MZWZ0YXJyb3c7JzogJ1x1MjFjZCcsCiAgICAnbmxlZnRhcnJvdzsnOiAnXHUyMTlhJywKICAgICduTGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjFjZScsCiAgICAnbmxlZnRyaWdodGFycm93Oyc6ICdcdTIxYWUnLAogICAgJ25sZXE7JzogJ1x1MjI3MCcsCiAgICAnbmxlcXE7JzogJ1x1MjI2Nlx1MDMzOCcsCiAgICAnbmxlcXNsYW50Oyc6ICdcdTJhN2RcdTAzMzgnLAogICAgJ25sZXM7JzogJ1x1MmE3ZFx1MDMzOCcsCiAgICAnbmxlc3M7JzogJ1x1MjI2ZScsCiAgICAnbkxsOyc6ICdcdTIyZDhcdTAzMzgnLAogICAgJ25sc2ltOyc6ICdcdTIyNzQnLAogICAgJ25MdDsnOiAnXHUyMjZhXHUyMGQyJywKICAgICdubHQ7JzogJ1x1MjI2ZScsCiAgICAnbmx0cmk7JzogJ1x1MjJlYScsCiAgICAnbmx0cmllOyc6ICdcdTIyZWMnLAogICAgJ25MdHY7JzogJ1x1MjI2YVx1MDMzOCcsCiAgICAnbm1pZDsnOiAnXHUyMjI0JywKICAgICdOb0JyZWFrOyc6ICdcdTIwNjAnLAogICAgJ05vbkJyZWFraW5nU3BhY2U7JzogJ1x4YTAnLAogICAgJ05vcGY7JzogJ1x1MjExNScsCiAgICAnbm9wZjsnOiAnXFUwMDAxZDU1ZicsCiAgICAnbm90JzogJ1x4YWMnLAogICAgJ05vdDsnOiAnXHUyYWVjJywKICAgICdub3Q7JzogJ1x4YWMnLAogICAgJ05vdENvbmdydWVudDsnOiAnXHUyMjYyJywKICAgICdOb3RDdXBDYXA7JzogJ1x1MjI2ZCcsCiAgICAnTm90RG91YmxlVmVydGljYWxCYXI7JzogJ1x1MjIyNicsCiAgICAnTm90RWxlbWVudDsnOiAnXHUyMjA5JywKICAgICdOb3RFcXVhbDsnOiAnXHUyMjYwJywKICAgICdOb3RFcXVhbFRpbGRlOyc6ICdcdTIyNDJcdTAzMzgnLAogICAgJ05vdEV4aXN0czsnOiAnXHUyMjA0JywKICAgICdOb3RHcmVhdGVyOyc6ICdcdTIyNmYnLAogICAgJ05vdEdyZWF0ZXJFcXVhbDsnOiAnXHUyMjcxJywKICAgICdOb3RHcmVhdGVyRnVsbEVxdWFsOyc6ICdcdTIyNjdcdTAzMzgnLAogICAgJ05vdEdyZWF0ZXJHcmVhdGVyOyc6ICdcdTIyNmJcdTAzMzgnLAogICAgJ05vdEdyZWF0ZXJMZXNzOyc6ICdcdTIyNzknLAogICAgJ05vdEdyZWF0ZXJTbGFudEVxdWFsOyc6ICdcdTJhN2VcdTAzMzgnLAogICAgJ05vdEdyZWF0ZXJUaWxkZTsnOiAnXHUyMjc1JywKICAgICdOb3RIdW1wRG93bkh1bXA7JzogJ1x1MjI0ZVx1MDMzOCcsCiAgICAnTm90SHVtcEVxdWFsOyc6ICdcdTIyNGZcdTAzMzgnLAogICAgJ25vdGluOyc6ICdcdTIyMDknLAogICAgJ25vdGluZG90Oyc6ICdcdTIyZjVcdTAzMzgnLAogICAgJ25vdGluRTsnOiAnXHUyMmY5XHUwMzM4JywKICAgICdub3RpbnZhOyc6ICdcdTIyMDknLAogICAgJ25vdGludmI7JzogJ1x1MjJmNycsCiAgICAnbm90aW52YzsnOiAnXHUyMmY2JywKICAgICdOb3RMZWZ0VHJpYW5nbGU7JzogJ1x1MjJlYScsCiAgICAnTm90TGVmdFRyaWFuZ2xlQmFyOyc6ICdcdTI5Y2ZcdTAzMzgnLAogICAgJ05vdExlZnRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyZWMnLAogICAgJ05vdExlc3M7JzogJ1x1MjI2ZScsCiAgICAnTm90TGVzc0VxdWFsOyc6ICdcdTIyNzAnLAogICAgJ05vdExlc3NHcmVhdGVyOyc6ICdcdTIyNzgnLAogICAgJ05vdExlc3NMZXNzOyc6ICdcdTIyNmFcdTAzMzgnLAogICAgJ05vdExlc3NTbGFudEVxdWFsOyc6ICdcdTJhN2RcdTAzMzgnLAogICAgJ05vdExlc3NUaWxkZTsnOiAnXHUyMjc0JywKICAgICdOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjsnOiAnXHUyYWEyXHUwMzM4JywKICAgICdOb3ROZXN0ZWRMZXNzTGVzczsnOiAnXHUyYWExXHUwMzM4JywKICAgICdub3RuaTsnOiAnXHUyMjBjJywKICAgICdub3RuaXZhOyc6ICdcdTIyMGMnLAogICAgJ25vdG5pdmI7JzogJ1x1MjJmZScsCiAgICAnbm90bml2YzsnOiAnXHUyMmZkJywKICAgICdOb3RQcmVjZWRlczsnOiAnXHUyMjgwJywKICAgICdOb3RQcmVjZWRlc0VxdWFsOyc6ICdcdTJhYWZcdTAzMzgnLAogICAgJ05vdFByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMmUwJywKICAgICdOb3RSZXZlcnNlRWxlbWVudDsnOiAnXHUyMjBjJywKICAgICdOb3RSaWdodFRyaWFuZ2xlOyc6ICdcdTIyZWInLAogICAgJ05vdFJpZ2h0VHJpYW5nbGVCYXI7JzogJ1x1MjlkMFx1MDMzOCcsCiAgICAnTm90UmlnaHRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyZWQnLAogICAgJ05vdFNxdWFyZVN1YnNldDsnOiAnXHUyMjhmXHUwMzM4JywKICAgICdOb3RTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMmUyJywKICAgICdOb3RTcXVhcmVTdXBlcnNldDsnOiAnXHUyMjkwXHUwMzM4JywKICAgICdOb3RTcXVhcmVTdXBlcnNldEVxdWFsOyc6ICdcdTIyZTMnLAogICAgJ05vdFN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKICAgICdOb3RTdWJzZXRFcXVhbDsnOiAnXHUyMjg4JywKICAgICdOb3RTdWNjZWVkczsnOiAnXHUyMjgxJywKICAgICdOb3RTdWNjZWVkc0VxdWFsOyc6ICdcdTJhYjBcdTAzMzgnLAogICAgJ05vdFN1Y2NlZWRzU2xhbnRFcXVhbDsnOiAnXHUyMmUxJywKICAgICdOb3RTdWNjZWVkc1RpbGRlOyc6ICdcdTIyN2ZcdTAzMzgnLAogICAgJ05vdFN1cGVyc2V0Oyc6ICdcdTIyODNcdTIwZDInLAogICAgJ05vdFN1cGVyc2V0RXF1YWw7JzogJ1x1MjI4OScsCiAgICAnTm90VGlsZGU7JzogJ1x1MjI0MScsCiAgICAnTm90VGlsZGVFcXVhbDsnOiAnXHUyMjQ0JywKICAgICdOb3RUaWxkZUZ1bGxFcXVhbDsnOiAnXHUyMjQ3JywKICAgICdOb3RUaWxkZVRpbGRlOyc6ICdcdTIyNDknLAogICAgJ05vdFZlcnRpY2FsQmFyOyc6ICdcdTIyMjQnLAogICAgJ25wYXI7JzogJ1x1MjIyNicsCiAgICAnbnBhcmFsbGVsOyc6ICdcdTIyMjYnLAogICAgJ25wYXJzbDsnOiAnXHUyYWZkXHUyMGU1JywKICAgICducGFydDsnOiAnXHUyMjAyXHUwMzM4JywKICAgICducG9saW50Oyc6ICdcdTJhMTQnLAogICAgJ25wcjsnOiAnXHUyMjgwJywKICAgICducHJjdWU7JzogJ1x1MjJlMCcsCiAgICAnbnByZTsnOiAnXHUyYWFmXHUwMzM4JywKICAgICducHJlYzsnOiAnXHUyMjgwJywKICAgICducHJlY2VxOyc6ICdcdTJhYWZcdTAzMzgnLAogICAgJ25yQXJyOyc6ICdcdTIxY2YnLAogICAgJ25yYXJyOyc6ICdcdTIxOWInLAogICAgJ25yYXJyYzsnOiAnXHUyOTMzXHUwMzM4JywKICAgICducmFycnc7JzogJ1x1MjE5ZFx1MDMzOCcsCiAgICAnblJpZ2h0YXJyb3c7JzogJ1x1MjFjZicsCiAgICAnbnJpZ2h0YXJyb3c7JzogJ1x1MjE5YicsCiAgICAnbnJ0cmk7JzogJ1x1MjJlYicsCiAgICAnbnJ0cmllOyc6ICdcdTIyZWQnLAogICAgJ25zYzsnOiAnXHUyMjgxJywKICAgICduc2NjdWU7JzogJ1x1MjJlMScsCiAgICAnbnNjZTsnOiAnXHUyYWIwXHUwMzM4JywKICAgICdOc2NyOyc6ICdcVTAwMDFkNGE5JywKICAgICduc2NyOyc6ICdcVTAwMDFkNGMzJywKICAgICduc2hvcnRtaWQ7JzogJ1x1MjIyNCcsCiAgICAnbnNob3J0cGFyYWxsZWw7JzogJ1x1MjIyNicsCiAgICAnbnNpbTsnOiAnXHUyMjQxJywKICAgICduc2ltZTsnOiAnXHUyMjQ0JywKICAgICduc2ltZXE7JzogJ1x1MjI0NCcsCiAgICAnbnNtaWQ7JzogJ1x1MjIyNCcsCiAgICAnbnNwYXI7JzogJ1x1MjIyNicsCiAgICAnbnNxc3ViZTsnOiAnXHUyMmUyJywKICAgICduc3FzdXBlOyc6ICdcdTIyZTMnLAogICAgJ25zdWI7JzogJ1x1MjI4NCcsCiAgICAnbnN1YkU7JzogJ1x1MmFjNVx1MDMzOCcsCiAgICAnbnN1YmU7JzogJ1x1MjI4OCcsCiAgICAnbnN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKICAgICduc3Vic2V0ZXE7JzogJ1x1MjI4OCcsCiAgICAnbnN1YnNldGVxcTsnOiAnXHUyYWM1XHUwMzM4JywKICAgICduc3VjYzsnOiAnXHUyMjgxJywKICAgICduc3VjY2VxOyc6ICdcdTJhYjBcdTAzMzgnLAogICAgJ25zdXA7JzogJ1x1MjI4NScsCiAgICAnbnN1cEU7JzogJ1x1MmFjNlx1MDMzOCcsCiAgICAnbnN1cGU7JzogJ1x1MjI4OScsCiAgICAnbnN1cHNldDsnOiAnXHUyMjgzXHUyMGQyJywKICAgICduc3Vwc2V0ZXE7JzogJ1x1MjI4OScsCiAgICAnbnN1cHNldGVxcTsnOiAnXHUyYWM2XHUwMzM4JywKICAgICdudGdsOyc6ICdcdTIyNzknLAogICAgJ050aWxkZSc6ICdceGQxJywKICAgICdudGlsZGUnOiAnXHhmMScsCiAgICAnTnRpbGRlOyc6ICdceGQxJywKICAgICdudGlsZGU7JzogJ1x4ZjEnLAogICAgJ250bGc7JzogJ1x1MjI3OCcsCiAgICAnbnRyaWFuZ2xlbGVmdDsnOiAnXHUyMmVhJywKICAgICdudHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJlYycsCiAgICAnbnRyaWFuZ2xlcmlnaHQ7JzogJ1x1MjJlYicsCiAgICAnbnRyaWFuZ2xlcmlnaHRlcTsnOiAnXHUyMmVkJywKICAgICdOdTsnOiAnXHUwMzlkJywKICAgICdudTsnOiAnXHUwM2JkJywKICAgICdudW07JzogJyMnLAogICAgJ251bWVybzsnOiAnXHUyMTE2JywKICAgICdudW1zcDsnOiAnXHUyMDA3JywKICAgICdudmFwOyc6ICdcdTIyNGRcdTIwZDInLAogICAgJ25WRGFzaDsnOiAnXHUyMmFmJywKICAgICduVmRhc2g7JzogJ1x1MjJhZScsCiAgICAnbnZEYXNoOyc6ICdcdTIyYWQnLAogICAgJ252ZGFzaDsnOiAnXHUyMmFjJywKICAgICdudmdlOyc6ICdcdTIyNjVcdTIwZDInLAogICAgJ252Z3Q7JzogJz5cdTIwZDInLAogICAgJ252SGFycjsnOiAnXHUyOTA0JywKICAgICdudmluZmluOyc6ICdcdTI5ZGUnLAogICAgJ252bEFycjsnOiAnXHUyOTAyJywKICAgICdudmxlOyc6ICdcdTIyNjRcdTIwZDInLAogICAgJ252bHQ7JzogJzxcdTIwZDInLAogICAgJ252bHRyaWU7JzogJ1x1MjJiNFx1MjBkMicsCiAgICAnbnZyQXJyOyc6ICdcdTI5MDMnLAogICAgJ252cnRyaWU7JzogJ1x1MjJiNVx1MjBkMicsCiAgICAnbnZzaW07JzogJ1x1MjIzY1x1MjBkMicsCiAgICAnbndhcmhrOyc6ICdcdTI5MjMnLAogICAgJ253QXJyOyc6ICdcdTIxZDYnLAogICAgJ253YXJyOyc6ICdcdTIxOTYnLAogICAgJ253YXJyb3c7JzogJ1x1MjE5NicsCiAgICAnbnduZWFyOyc6ICdcdTI5MjcnLAogICAgJ09hY3V0ZSc6ICdceGQzJywKICAgICdvYWN1dGUnOiAnXHhmMycsCiAgICAnT2FjdXRlOyc6ICdceGQzJywKICAgICdvYWN1dGU7JzogJ1x4ZjMnLAogICAgJ29hc3Q7JzogJ1x1MjI5YicsCiAgICAnb2NpcjsnOiAnXHUyMjlhJywKICAgICdPY2lyYyc6ICdceGQ0JywKICAgICdvY2lyYyc6ICdceGY0JywKICAgICdPY2lyYzsnOiAnXHhkNCcsCiAgICAnb2NpcmM7JzogJ1x4ZjQnLAogICAgJ09jeTsnOiAnXHUwNDFlJywKICAgICdvY3k7JzogJ1x1MDQzZScsCiAgICAnb2Rhc2g7JzogJ1x1MjI5ZCcsCiAgICAnT2RibGFjOyc6ICdcdTAxNTAnLAogICAgJ29kYmxhYzsnOiAnXHUwMTUxJywKICAgICdvZGl2Oyc6ICdcdTJhMzgnLAogICAgJ29kb3Q7JzogJ1x1MjI5OScsCiAgICAnb2Rzb2xkOyc6ICdcdTI5YmMnLAogICAgJ09FbGlnOyc6ICdcdTAxNTInLAogICAgJ29lbGlnOyc6ICdcdTAxNTMnLAogICAgJ29mY2lyOyc6ICdcdTI5YmYnLAogICAgJ09mcjsnOiAnXFUwMDAxZDUxMicsCiAgICAnb2ZyOyc6ICdcVTAwMDFkNTJjJywKICAgICdvZ29uOyc6ICdcdTAyZGInLAogICAgJ09ncmF2ZSc6ICdceGQyJywKICAgICdvZ3JhdmUnOiAnXHhmMicsCiAgICAnT2dyYXZlOyc6ICdceGQyJywKICAgICdvZ3JhdmU7JzogJ1x4ZjInLAogICAgJ29ndDsnOiAnXHUyOWMxJywKICAgICdvaGJhcjsnOiAnXHUyOWI1JywKICAgICdvaG07JzogJ1x1MDNhOScsCiAgICAnb2ludDsnOiAnXHUyMjJlJywKICAgICdvbGFycjsnOiAnXHUyMWJhJywKICAgICdvbGNpcjsnOiAnXHUyOWJlJywKICAgICdvbGNyb3NzOyc6ICdcdTI5YmInLAogICAgJ29saW5lOyc6ICdcdTIwM2UnLAogICAgJ29sdDsnOiAnXHUyOWMwJywKICAgICdPbWFjcjsnOiAnXHUwMTRjJywKICAgICdvbWFjcjsnOiAnXHUwMTRkJywKICAgICdPbWVnYTsnOiAnXHUwM2E5JywKICAgICdvbWVnYTsnOiAnXHUwM2M5JywKICAgICdPbWljcm9uOyc6ICdcdTAzOWYnLAogICAgJ29taWNyb247JzogJ1x1MDNiZicsCiAgICAnb21pZDsnOiAnXHUyOWI2JywKICAgICdvbWludXM7JzogJ1x1MjI5NicsCiAgICAnT29wZjsnOiAnXFUwMDAxZDU0NicsCiAgICAnb29wZjsnOiAnXFUwMDAxZDU2MCcsCiAgICAnb3BhcjsnOiAnXHUyOWI3JywKICAgICdPcGVuQ3VybHlEb3VibGVRdW90ZTsnOiAnXHUyMDFjJywKICAgICdPcGVuQ3VybHlRdW90ZTsnOiAnXHUyMDE4JywKICAgICdvcGVycDsnOiAnXHUyOWI5JywKICAgICdvcGx1czsnOiAnXHUyMjk1JywKICAgICdPcjsnOiAnXHUyYTU0JywKICAgICdvcjsnOiAnXHUyMjI4JywKICAgICdvcmFycjsnOiAnXHUyMWJiJywKICAgICdvcmQ7JzogJ1x1MmE1ZCcsCiAgICAnb3JkZXI7JzogJ1x1MjEzNCcsCiAgICAnb3JkZXJvZjsnOiAnXHUyMTM0JywKICAgICdvcmRmJzogJ1x4YWEnLAogICAgJ29yZGY7JzogJ1x4YWEnLAogICAgJ29yZG0nOiAnXHhiYScsCiAgICAnb3JkbTsnOiAnXHhiYScsCiAgICAnb3JpZ29mOyc6ICdcdTIyYjYnLAogICAgJ29yb3I7JzogJ1x1MmE1NicsCiAgICAnb3JzbG9wZTsnOiAnXHUyYTU3JywKICAgICdvcnY7JzogJ1x1MmE1YicsCiAgICAnb1M7JzogJ1x1MjRjOCcsCiAgICAnT3NjcjsnOiAnXFUwMDAxZDRhYScsCiAgICAnb3NjcjsnOiAnXHUyMTM0JywKICAgICdPc2xhc2gnOiAnXHhkOCcsCiAgICAnb3NsYXNoJzogJ1x4ZjgnLAogICAgJ09zbGFzaDsnOiAnXHhkOCcsCiAgICAnb3NsYXNoOyc6ICdceGY4JywKICAgICdvc29sOyc6ICdcdTIyOTgnLAogICAgJ090aWxkZSc6ICdceGQ1JywKICAgICdvdGlsZGUnOiAnXHhmNScsCiAgICAnT3RpbGRlOyc6ICdceGQ1JywKICAgICdvdGlsZGU7JzogJ1x4ZjUnLAogICAgJ090aW1lczsnOiAnXHUyYTM3JywKICAgICdvdGltZXM7JzogJ1x1MjI5NycsCiAgICAnb3RpbWVzYXM7JzogJ1x1MmEzNicsCiAgICAnT3VtbCc6ICdceGQ2JywKICAgICdvdW1sJzogJ1x4ZjYnLAogICAgJ091bWw7JzogJ1x4ZDYnLAogICAgJ291bWw7JzogJ1x4ZjYnLAogICAgJ292YmFyOyc6ICdcdTIzM2QnLAogICAgJ092ZXJCYXI7JzogJ1x1MjAzZScsCiAgICAnT3ZlckJyYWNlOyc6ICdcdTIzZGUnLAogICAgJ092ZXJCcmFja2V0Oyc6ICdcdTIzYjQnLAogICAgJ092ZXJQYXJlbnRoZXNpczsnOiAnXHUyM2RjJywKICAgICdwYXI7JzogJ1x1MjIyNScsCiAgICAncGFyYSc6ICdceGI2JywKICAgICdwYXJhOyc6ICdceGI2JywKICAgICdwYXJhbGxlbDsnOiAnXHUyMjI1JywKICAgICdwYXJzaW07JzogJ1x1MmFmMycsCiAgICAncGFyc2w7JzogJ1x1MmFmZCcsCiAgICAncGFydDsnOiAnXHUyMjAyJywKICAgICdQYXJ0aWFsRDsnOiAnXHUyMjAyJywKICAgICdQY3k7JzogJ1x1MDQxZicsCiAgICAncGN5Oyc6ICdcdTA0M2YnLAogICAgJ3BlcmNudDsnOiAnJScsCiAgICAncGVyaW9kOyc6ICcuJywKICAgICdwZXJtaWw7JzogJ1x1MjAzMCcsCiAgICAncGVycDsnOiAnXHUyMmE1JywKICAgICdwZXJ0ZW5rOyc6ICdcdTIwMzEnLAogICAgJ1BmcjsnOiAnXFUwMDAxZDUxMycsCiAgICAncGZyOyc6ICdcVTAwMDFkNTJkJywKICAgICdQaGk7JzogJ1x1MDNhNicsCiAgICAncGhpOyc6ICdcdTAzYzYnLAogICAgJ3BoaXY7JzogJ1x1MDNkNScsCiAgICAncGhtbWF0Oyc6ICdcdTIxMzMnLAogICAgJ3Bob25lOyc6ICdcdTI2MGUnLAogICAgJ1BpOyc6ICdcdTAzYTAnLAogICAgJ3BpOyc6ICdcdTAzYzAnLAogICAgJ3BpdGNoZm9yazsnOiAnXHUyMmQ0JywKICAgICdwaXY7JzogJ1x1MDNkNicsCiAgICAncGxhbmNrOyc6ICdcdTIxMGYnLAogICAgJ3BsYW5ja2g7JzogJ1x1MjEwZScsCiAgICAncGxhbmt2Oyc6ICdcdTIxMGYnLAogICAgJ3BsdXM7JzogJysnLAogICAgJ3BsdXNhY2lyOyc6ICdcdTJhMjMnLAogICAgJ3BsdXNiOyc6ICdcdTIyOWUnLAogICAgJ3BsdXNjaXI7JzogJ1x1MmEyMicsCiAgICAncGx1c2RvOyc6ICdcdTIyMTQnLAogICAgJ3BsdXNkdTsnOiAnXHUyYTI1JywKICAgICdwbHVzZTsnOiAnXHUyYTcyJywKICAgICdQbHVzTWludXM7JzogJ1x4YjEnLAogICAgJ3BsdXNtbic6ICdceGIxJywKICAgICdwbHVzbW47JzogJ1x4YjEnLAogICAgJ3BsdXNzaW07JzogJ1x1MmEyNicsCiAgICAncGx1c3R3bzsnOiAnXHUyYTI3JywKICAgICdwbTsnOiAnXHhiMScsCiAgICAnUG9pbmNhcmVwbGFuZTsnOiAnXHUyMTBjJywKICAgICdwb2ludGludDsnOiAnXHUyYTE1JywKICAgICdQb3BmOyc6ICdcdTIxMTknLAogICAgJ3BvcGY7JzogJ1xVMDAwMWQ1NjEnLAogICAgJ3BvdW5kJzogJ1x4YTMnLAogICAgJ3BvdW5kOyc6ICdceGEzJywKICAgICdQcjsnOiAnXHUyYWJiJywKICAgICdwcjsnOiAnXHUyMjdhJywKICAgICdwcmFwOyc6ICdcdTJhYjcnLAogICAgJ3ByY3VlOyc6ICdcdTIyN2MnLAogICAgJ3ByRTsnOiAnXHUyYWIzJywKICAgICdwcmU7JzogJ1x1MmFhZicsCiAgICAncHJlYzsnOiAnXHUyMjdhJywKICAgICdwcmVjYXBwcm94Oyc6ICdcdTJhYjcnLAogICAgJ3ByZWNjdXJseWVxOyc6ICdcdTIyN2MnLAogICAgJ1ByZWNlZGVzOyc6ICdcdTIyN2EnLAogICAgJ1ByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZicsCiAgICAnUHJlY2VkZXNTbGFudEVxdWFsOyc6ICdcdTIyN2MnLAogICAgJ1ByZWNlZGVzVGlsZGU7JzogJ1x1MjI3ZScsCiAgICAncHJlY2VxOyc6ICdcdTJhYWYnLAogICAgJ3ByZWNuYXBwcm94Oyc6ICdcdTJhYjknLAogICAgJ3ByZWNuZXFxOyc6ICdcdTJhYjUnLAogICAgJ3ByZWNuc2ltOyc6ICdcdTIyZTgnLAogICAgJ3ByZWNzaW07JzogJ1x1MjI3ZScsCiAgICAnUHJpbWU7JzogJ1x1MjAzMycsCiAgICAncHJpbWU7JzogJ1x1MjAzMicsCiAgICAncHJpbWVzOyc6ICdcdTIxMTknLAogICAgJ3BybmFwOyc6ICdcdTJhYjknLAogICAgJ3BybkU7JzogJ1x1MmFiNScsCiAgICAncHJuc2ltOyc6ICdcdTIyZTgnLAogICAgJ3Byb2Q7JzogJ1x1MjIwZicsCiAgICAnUHJvZHVjdDsnOiAnXHUyMjBmJywKICAgICdwcm9mYWxhcjsnOiAnXHUyMzJlJywKICAgICdwcm9mbGluZTsnOiAnXHUyMzEyJywKICAgICdwcm9mc3VyZjsnOiAnXHUyMzEzJywKICAgICdwcm9wOyc6ICdcdTIyMWQnLAogICAgJ1Byb3BvcnRpb247JzogJ1x1MjIzNycsCiAgICAnUHJvcG9ydGlvbmFsOyc6ICdcdTIyMWQnLAogICAgJ3Byb3B0bzsnOiAnXHUyMjFkJywKICAgICdwcnNpbTsnOiAnXHUyMjdlJywKICAgICdwcnVyZWw7JzogJ1x1MjJiMCcsCiAgICAnUHNjcjsnOiAnXFUwMDAxZDRhYicsCiAgICAncHNjcjsnOiAnXFUwMDAxZDRjNScsCiAgICAnUHNpOyc6ICdcdTAzYTgnLAogICAgJ3BzaTsnOiAnXHUwM2M4JywKICAgICdwdW5jc3A7JzogJ1x1MjAwOCcsCiAgICAnUWZyOyc6ICdcVTAwMDFkNTE0JywKICAgICdxZnI7JzogJ1xVMDAwMWQ1MmUnLAogICAgJ3FpbnQ7JzogJ1x1MmEwYycsCiAgICAnUW9wZjsnOiAnXHUyMTFhJywKICAgICdxb3BmOyc6ICdcVTAwMDFkNTYyJywKICAgICdxcHJpbWU7JzogJ1x1MjA1NycsCiAgICAnUXNjcjsnOiAnXFUwMDAxZDRhYycsCiAgICAncXNjcjsnOiAnXFUwMDAxZDRjNicsCiAgICAncXVhdGVybmlvbnM7JzogJ1x1MjEwZCcsCiAgICAncXVhdGludDsnOiAnXHUyYTE2JywKICAgICdxdWVzdDsnOiAnPycsCiAgICAncXVlc3RlcTsnOiAnXHUyMjVmJywKICAgICdRVU9UJzogJyInLAogICAgJ3F1b3QnOiAnIicsCiAgICAnUVVPVDsnOiAnIicsCiAgICAncXVvdDsnOiAnIicsCiAgICAnckFhcnI7JzogJ1x1MjFkYicsCiAgICAncmFjZTsnOiAnXHUyMjNkXHUwMzMxJywKICAgICdSYWN1dGU7JzogJ1x1MDE1NCcsCiAgICAncmFjdXRlOyc6ICdcdTAxNTUnLAogICAgJ3JhZGljOyc6ICdcdTIyMWEnLAogICAgJ3JhZW1wdHl2Oyc6ICdcdTI5YjMnLAogICAgJ1Jhbmc7JzogJ1x1MjdlYicsCiAgICAncmFuZzsnOiAnXHUyN2U5JywKICAgICdyYW5nZDsnOiAnXHUyOTkyJywKICAgICdyYW5nZTsnOiAnXHUyOWE1JywKICAgICdyYW5nbGU7JzogJ1x1MjdlOScsCiAgICAncmFxdW8nOiAnXHhiYicsCiAgICAncmFxdW87JzogJ1x4YmInLAogICAgJ1JhcnI7JzogJ1x1MjFhMCcsCiAgICAnckFycjsnOiAnXHUyMWQyJywKICAgICdyYXJyOyc6ICdcdTIxOTInLAogICAgJ3JhcnJhcDsnOiAnXHUyOTc1JywKICAgICdyYXJyYjsnOiAnXHUyMWU1JywKICAgICdyYXJyYmZzOyc6ICdcdTI5MjAnLAogICAgJ3JhcnJjOyc6ICdcdTI5MzMnLAogICAgJ3JhcnJmczsnOiAnXHUyOTFlJywKICAgICdyYXJyaGs7JzogJ1x1MjFhYScsCiAgICAncmFycmxwOyc6ICdcdTIxYWMnLAogICAgJ3JhcnJwbDsnOiAnXHUyOTQ1JywKICAgICdyYXJyc2ltOyc6ICdcdTI5NzQnLAogICAgJ1JhcnJ0bDsnOiAnXHUyOTE2JywKICAgICdyYXJydGw7JzogJ1x1MjFhMycsCiAgICAncmFycnc7JzogJ1x1MjE5ZCcsCiAgICAnckF0YWlsOyc6ICdcdTI5MWMnLAogICAgJ3JhdGFpbDsnOiAnXHUyOTFhJywKICAgICdyYXRpbzsnOiAnXHUyMjM2JywKICAgICdyYXRpb25hbHM7JzogJ1x1MjExYScsCiAgICAnUkJhcnI7JzogJ1x1MjkxMCcsCiAgICAnckJhcnI7JzogJ1x1MjkwZicsCiAgICAncmJhcnI7JzogJ1x1MjkwZCcsCiAgICAncmJicms7JzogJ1x1Mjc3MycsCiAgICAncmJyYWNlOyc6ICd9JywKICAgICdyYnJhY2s7JzogJ10nLAogICAgJ3JicmtlOyc6ICdcdTI5OGMnLAogICAgJ3JicmtzbGQ7JzogJ1x1Mjk4ZScsCiAgICAncmJya3NsdTsnOiAnXHUyOTkwJywKICAgICdSY2Fyb247JzogJ1x1MDE1OCcsCiAgICAncmNhcm9uOyc6ICdcdTAxNTknLAogICAgJ1JjZWRpbDsnOiAnXHUwMTU2JywKICAgICdyY2VkaWw7JzogJ1x1MDE1NycsCiAgICAncmNlaWw7JzogJ1x1MjMwOScsCiAgICAncmN1YjsnOiAnfScsCiAgICAnUmN5Oyc6ICdcdTA0MjAnLAogICAgJ3JjeTsnOiAnXHUwNDQwJywKICAgICdyZGNhOyc6ICdcdTI5MzcnLAogICAgJ3JkbGRoYXI7JzogJ1x1Mjk2OScsCiAgICAncmRxdW87JzogJ1x1MjAxZCcsCiAgICAncmRxdW9yOyc6ICdcdTIwMWQnLAogICAgJ3Jkc2g7JzogJ1x1MjFiMycsCiAgICAnUmU7JzogJ1x1MjExYycsCiAgICAncmVhbDsnOiAnXHUyMTFjJywKICAgICdyZWFsaW5lOyc6ICdcdTIxMWInLAogICAgJ3JlYWxwYXJ0Oyc6ICdcdTIxMWMnLAogICAgJ3JlYWxzOyc6ICdcdTIxMWQnLAogICAgJ3JlY3Q7JzogJ1x1MjVhZCcsCiAgICAnUkVHJzogJ1x4YWUnLAogICAgJ3JlZyc6ICdceGFlJywKICAgICdSRUc7JzogJ1x4YWUnLAogICAgJ3JlZzsnOiAnXHhhZScsCiAgICAnUmV2ZXJzZUVsZW1lbnQ7JzogJ1x1MjIwYicsCiAgICAnUmV2ZXJzZUVxdWlsaWJyaXVtOyc6ICdcdTIxY2InLAogICAgJ1JldmVyc2VVcEVxdWlsaWJyaXVtOyc6ICdcdTI5NmYnLAogICAgJ3JmaXNodDsnOiAnXHUyOTdkJywKICAgICdyZmxvb3I7JzogJ1x1MjMwYicsCiAgICAnUmZyOyc6ICdcdTIxMWMnLAogICAgJ3JmcjsnOiAnXFUwMDAxZDUyZicsCiAgICAnckhhcjsnOiAnXHUyOTY0JywKICAgICdyaGFyZDsnOiAnXHUyMWMxJywKICAgICdyaGFydTsnOiAnXHUyMWMwJywKICAgICdyaGFydWw7JzogJ1x1Mjk2YycsCiAgICAnUmhvOyc6ICdcdTAzYTEnLAogICAgJ3JobzsnOiAnXHUwM2MxJywKICAgICdyaG92Oyc6ICdcdTAzZjEnLAogICAgJ1JpZ2h0QW5nbGVCcmFja2V0Oyc6ICdcdTI3ZTknLAogICAgJ1JpZ2h0QXJyb3c7JzogJ1x1MjE5MicsCiAgICAnUmlnaHRhcnJvdzsnOiAnXHUyMWQyJywKICAgICdyaWdodGFycm93Oyc6ICdcdTIxOTInLAogICAgJ1JpZ2h0QXJyb3dCYXI7JzogJ1x1MjFlNScsCiAgICAnUmlnaHRBcnJvd0xlZnRBcnJvdzsnOiAnXHUyMWM0JywKICAgICdyaWdodGFycm93dGFpbDsnOiAnXHUyMWEzJywKICAgICdSaWdodENlaWxpbmc7JzogJ1x1MjMwOScsCiAgICAnUmlnaHREb3VibGVCcmFja2V0Oyc6ICdcdTI3ZTcnLAogICAgJ1JpZ2h0RG93blRlZVZlY3RvcjsnOiAnXHUyOTVkJywKICAgICdSaWdodERvd25WZWN0b3I7JzogJ1x1MjFjMicsCiAgICAnUmlnaHREb3duVmVjdG9yQmFyOyc6ICdcdTI5NTUnLAogICAgJ1JpZ2h0Rmxvb3I7JzogJ1x1MjMwYicsCiAgICAncmlnaHRoYXJwb29uZG93bjsnOiAnXHUyMWMxJywKICAgICdyaWdodGhhcnBvb251cDsnOiAnXHUyMWMwJywKICAgICdyaWdodGxlZnRhcnJvd3M7JzogJ1x1MjFjNCcsCiAgICAncmlnaHRsZWZ0aGFycG9vbnM7JzogJ1x1MjFjYycsCiAgICAncmlnaHRyaWdodGFycm93czsnOiAnXHUyMWM5JywKICAgICdyaWdodHNxdWlnYXJyb3c7JzogJ1x1MjE5ZCcsCiAgICAnUmlnaHRUZWU7JzogJ1x1MjJhMicsCiAgICAnUmlnaHRUZWVBcnJvdzsnOiAnXHUyMWE2JywKICAgICdSaWdodFRlZVZlY3RvcjsnOiAnXHUyOTViJywKICAgICdyaWdodHRocmVldGltZXM7JzogJ1x1MjJjYycsCiAgICAnUmlnaHRUcmlhbmdsZTsnOiAnXHUyMmIzJywKICAgICdSaWdodFRyaWFuZ2xlQmFyOyc6ICdcdTI5ZDAnLAogICAgJ1JpZ2h0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmI1JywKICAgICdSaWdodFVwRG93blZlY3RvcjsnOiAnXHUyOTRmJywKICAgICdSaWdodFVwVGVlVmVjdG9yOyc6ICdcdTI5NWMnLAogICAgJ1JpZ2h0VXBWZWN0b3I7JzogJ1x1MjFiZScsCiAgICAnUmlnaHRVcFZlY3RvckJhcjsnOiAnXHUyOTU0JywKICAgICdSaWdodFZlY3RvcjsnOiAnXHUyMWMwJywKICAgICdSaWdodFZlY3RvckJhcjsnOiAnXHUyOTUzJywKICAgICdyaW5nOyc6ICdcdTAyZGEnLAogICAgJ3Jpc2luZ2RvdHNlcTsnOiAnXHUyMjUzJywKICAgICdybGFycjsnOiAnXHUyMWM0JywKICAgICdybGhhcjsnOiAnXHUyMWNjJywKICAgICdybG07JzogJ1x1MjAwZicsCiAgICAncm1vdXN0Oyc6ICdcdTIzYjEnLAogICAgJ3Jtb3VzdGFjaGU7JzogJ1x1MjNiMScsCiAgICAncm5taWQ7JzogJ1x1MmFlZScsCiAgICAncm9hbmc7JzogJ1x1MjdlZCcsCiAgICAncm9hcnI7JzogJ1x1MjFmZScsCiAgICAncm9icms7JzogJ1x1MjdlNycsCiAgICAncm9wYXI7JzogJ1x1Mjk4NicsCiAgICAnUm9wZjsnOiAnXHUyMTFkJywKICAgICdyb3BmOyc6ICdcVTAwMDFkNTYzJywKICAgICdyb3BsdXM7JzogJ1x1MmEyZScsCiAgICAncm90aW1lczsnOiAnXHUyYTM1JywKICAgICdSb3VuZEltcGxpZXM7JzogJ1x1Mjk3MCcsCiAgICAncnBhcjsnOiAnKScsCiAgICAncnBhcmd0Oyc6ICdcdTI5OTQnLAogICAgJ3JwcG9saW50Oyc6ICdcdTJhMTInLAogICAgJ3JyYXJyOyc6ICdcdTIxYzknLAogICAgJ1JyaWdodGFycm93Oyc6ICdcdTIxZGInLAogICAgJ3JzYXF1bzsnOiAnXHUyMDNhJywKICAgICdSc2NyOyc6ICdcdTIxMWInLAogICAgJ3JzY3I7JzogJ1xVMDAwMWQ0YzcnLAogICAgJ1JzaDsnOiAnXHUyMWIxJywKICAgICdyc2g7JzogJ1x1MjFiMScsCiAgICAncnNxYjsnOiAnXScsCiAgICAncnNxdW87JzogJ1x1MjAxOScsCiAgICAncnNxdW9yOyc6ICdcdTIwMTknLAogICAgJ3J0aHJlZTsnOiAnXHUyMmNjJywKICAgICdydGltZXM7JzogJ1x1MjJjYScsCiAgICAncnRyaTsnOiAnXHUyNWI5JywKICAgICdydHJpZTsnOiAnXHUyMmI1JywKICAgICdydHJpZjsnOiAnXHUyNWI4JywKICAgICdydHJpbHRyaTsnOiAnXHUyOWNlJywKICAgICdSdWxlRGVsYXllZDsnOiAnXHUyOWY0JywKICAgICdydWx1aGFyOyc6ICdcdTI5NjgnLAogICAgJ3J4Oyc6ICdcdTIxMWUnLAogICAgJ1NhY3V0ZTsnOiAnXHUwMTVhJywKICAgICdzYWN1dGU7JzogJ1x1MDE1YicsCiAgICAnc2JxdW87JzogJ1x1MjAxYScsCiAgICAnU2M7JzogJ1x1MmFiYycsCiAgICAnc2M7JzogJ1x1MjI3YicsCiAgICAnc2NhcDsnOiAnXHUyYWI4JywKICAgICdTY2Fyb247JzogJ1x1MDE2MCcsCiAgICAnc2Nhcm9uOyc6ICdcdTAxNjEnLAogICAgJ3NjY3VlOyc6ICdcdTIyN2QnLAogICAgJ3NjRTsnOiAnXHUyYWI0JywKICAgICdzY2U7JzogJ1x1MmFiMCcsCiAgICAnU2NlZGlsOyc6ICdcdTAxNWUnLAogICAgJ3NjZWRpbDsnOiAnXHUwMTVmJywKICAgICdTY2lyYzsnOiAnXHUwMTVjJywKICAgICdzY2lyYzsnOiAnXHUwMTVkJywKICAgICdzY25hcDsnOiAnXHUyYWJhJywKICAgICdzY25FOyc6ICdcdTJhYjYnLAogICAgJ3NjbnNpbTsnOiAnXHUyMmU5JywKICAgICdzY3BvbGludDsnOiAnXHUyYTEzJywKICAgICdzY3NpbTsnOiAnXHUyMjdmJywKICAgICdTY3k7JzogJ1x1MDQyMScsCiAgICAnc2N5Oyc6ICdcdTA0NDEnLAogICAgJ3Nkb3Q7JzogJ1x1MjJjNScsCiAgICAnc2RvdGI7JzogJ1x1MjJhMScsCiAgICAnc2RvdGU7JzogJ1x1MmE2NicsCiAgICAnc2VhcmhrOyc6ICdcdTI5MjUnLAogICAgJ3NlQXJyOyc6ICdcdTIxZDgnLAogICAgJ3NlYXJyOyc6ICdcdTIxOTgnLAogICAgJ3NlYXJyb3c7JzogJ1x1MjE5OCcsCiAgICAnc2VjdCc6ICdceGE3JywKICAgICdzZWN0Oyc6ICdceGE3JywKICAgICdzZW1pOyc6ICc7JywKICAgICdzZXN3YXI7JzogJ1x1MjkyOScsCiAgICAnc2V0bWludXM7JzogJ1x1MjIxNicsCiAgICAnc2V0bW47JzogJ1x1MjIxNicsCiAgICAnc2V4dDsnOiAnXHUyNzM2JywKICAgICdTZnI7JzogJ1xVMDAwMWQ1MTYnLAogICAgJ3NmcjsnOiAnXFUwMDAxZDUzMCcsCiAgICAnc2Zyb3duOyc6ICdcdTIzMjInLAogICAgJ3NoYXJwOyc6ICdcdTI2NmYnLAogICAgJ1NIQ0hjeTsnOiAnXHUwNDI5JywKICAgICdzaGNoY3k7JzogJ1x1MDQ0OScsCiAgICAnU0hjeTsnOiAnXHUwNDI4JywKICAgICdzaGN5Oyc6ICdcdTA0NDgnLAogICAgJ1Nob3J0RG93bkFycm93Oyc6ICdcdTIxOTMnLAogICAgJ1Nob3J0TGVmdEFycm93Oyc6ICdcdTIxOTAnLAogICAgJ3Nob3J0bWlkOyc6ICdcdTIyMjMnLAogICAgJ3Nob3J0cGFyYWxsZWw7JzogJ1x1MjIyNScsCiAgICAnU2hvcnRSaWdodEFycm93Oyc6ICdcdTIxOTInLAogICAgJ1Nob3J0VXBBcnJvdzsnOiAnXHUyMTkxJywKICAgICdzaHknOiAnXHhhZCcsCiAgICAnc2h5Oyc6ICdceGFkJywKICAgICdTaWdtYTsnOiAnXHUwM2EzJywKICAgICdzaWdtYTsnOiAnXHUwM2MzJywKICAgICdzaWdtYWY7JzogJ1x1MDNjMicsCiAgICAnc2lnbWF2Oyc6ICdcdTAzYzInLAogICAgJ3NpbTsnOiAnXHUyMjNjJywKICAgICdzaW1kb3Q7JzogJ1x1MmE2YScsCiAgICAnc2ltZTsnOiAnXHUyMjQzJywKICAgICdzaW1lcTsnOiAnXHUyMjQzJywKICAgICdzaW1nOyc6ICdcdTJhOWUnLAogICAgJ3NpbWdFOyc6ICdcdTJhYTAnLAogICAgJ3NpbWw7JzogJ1x1MmE5ZCcsCiAgICAnc2ltbEU7JzogJ1x1MmE5ZicsCiAgICAnc2ltbmU7JzogJ1x1MjI0NicsCiAgICAnc2ltcGx1czsnOiAnXHUyYTI0JywKICAgICdzaW1yYXJyOyc6ICdcdTI5NzInLAogICAgJ3NsYXJyOyc6ICdcdTIxOTAnLAogICAgJ1NtYWxsQ2lyY2xlOyc6ICdcdTIyMTgnLAogICAgJ3NtYWxsc2V0bWludXM7JzogJ1x1MjIxNicsCiAgICAnc21hc2hwOyc6ICdcdTJhMzMnLAogICAgJ3NtZXBhcnNsOyc6ICdcdTI5ZTQnLAogICAgJ3NtaWQ7JzogJ1x1MjIyMycsCiAgICAnc21pbGU7JzogJ1x1MjMyMycsCiAgICAnc210Oyc6ICdcdTJhYWEnLAogICAgJ3NtdGU7JzogJ1x1MmFhYycsCiAgICAnc210ZXM7JzogJ1x1MmFhY1x1ZmUwMCcsCiAgICAnU09GVGN5Oyc6ICdcdTA0MmMnLAogICAgJ3NvZnRjeTsnOiAnXHUwNDRjJywKICAgICdzb2w7JzogJy8nLAogICAgJ3NvbGI7JzogJ1x1MjljNCcsCiAgICAnc29sYmFyOyc6ICdcdTIzM2YnLAogICAgJ1NvcGY7JzogJ1xVMDAwMWQ1NGEnLAogICAgJ3NvcGY7JzogJ1xVMDAwMWQ1NjQnLAogICAgJ3NwYWRlczsnOiAnXHUyNjYwJywKICAgICdzcGFkZXN1aXQ7JzogJ1x1MjY2MCcsCiAgICAnc3BhcjsnOiAnXHUyMjI1JywKICAgICdzcWNhcDsnOiAnXHUyMjkzJywKICAgICdzcWNhcHM7JzogJ1x1MjI5M1x1ZmUwMCcsCiAgICAnc3FjdXA7JzogJ1x1MjI5NCcsCiAgICAnc3FjdXBzOyc6ICdcdTIyOTRcdWZlMDAnLAogICAgJ1NxcnQ7JzogJ1x1MjIxYScsCiAgICAnc3FzdWI7JzogJ1x1MjI4ZicsCiAgICAnc3FzdWJlOyc6ICdcdTIyOTEnLAogICAgJ3Nxc3Vic2V0Oyc6ICdcdTIyOGYnLAogICAgJ3Nxc3Vic2V0ZXE7JzogJ1x1MjI5MScsCiAgICAnc3FzdXA7JzogJ1x1MjI5MCcsCiAgICAnc3FzdXBlOyc6ICdcdTIyOTInLAogICAgJ3Nxc3Vwc2V0Oyc6ICdcdTIyOTAnLAogICAgJ3Nxc3Vwc2V0ZXE7JzogJ1x1MjI5MicsCiAgICAnc3F1Oyc6ICdcdTI1YTEnLAogICAgJ1NxdWFyZTsnOiAnXHUyNWExJywKICAgICdzcXVhcmU7JzogJ1x1MjVhMScsCiAgICAnU3F1YXJlSW50ZXJzZWN0aW9uOyc6ICdcdTIyOTMnLAogICAgJ1NxdWFyZVN1YnNldDsnOiAnXHUyMjhmJywKICAgICdTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMjkxJywKICAgICdTcXVhcmVTdXBlcnNldDsnOiAnXHUyMjkwJywKICAgICdTcXVhcmVTdXBlcnNldEVxdWFsOyc6ICdcdTIyOTInLAogICAgJ1NxdWFyZVVuaW9uOyc6ICdcdTIyOTQnLAogICAgJ3NxdWFyZjsnOiAnXHUyNWFhJywKICAgICdzcXVmOyc6ICdcdTI1YWEnLAogICAgJ3NyYXJyOyc6ICdcdTIxOTInLAogICAgJ1NzY3I7JzogJ1xVMDAwMWQ0YWUnLAogICAgJ3NzY3I7JzogJ1xVMDAwMWQ0YzgnLAogICAgJ3NzZXRtbjsnOiAnXHUyMjE2JywKICAgICdzc21pbGU7JzogJ1x1MjMyMycsCiAgICAnc3N0YXJmOyc6ICdcdTIyYzYnLAogICAgJ1N0YXI7JzogJ1x1MjJjNicsCiAgICAnc3RhcjsnOiAnXHUyNjA2JywKICAgICdzdGFyZjsnOiAnXHUyNjA1JywKICAgICdzdHJhaWdodGVwc2lsb247JzogJ1x1MDNmNScsCiAgICAnc3RyYWlnaHRwaGk7JzogJ1x1MDNkNScsCiAgICAnc3RybnM7JzogJ1x4YWYnLAogICAgJ1N1YjsnOiAnXHUyMmQwJywKICAgICdzdWI7JzogJ1x1MjI4MicsCiAgICAnc3ViZG90Oyc6ICdcdTJhYmQnLAogICAgJ3N1YkU7JzogJ1x1MmFjNScsCiAgICAnc3ViZTsnOiAnXHUyMjg2JywKICAgICdzdWJlZG90Oyc6ICdcdTJhYzMnLAogICAgJ3N1Ym11bHQ7JzogJ1x1MmFjMScsCiAgICAnc3VibkU7JzogJ1x1MmFjYicsCiAgICAnc3VibmU7JzogJ1x1MjI4YScsCiAgICAnc3VicGx1czsnOiAnXHUyYWJmJywKICAgICdzdWJyYXJyOyc6ICdcdTI5NzknLAogICAgJ1N1YnNldDsnOiAnXHUyMmQwJywKICAgICdzdWJzZXQ7JzogJ1x1MjI4MicsCiAgICAnc3Vic2V0ZXE7JzogJ1x1MjI4NicsCiAgICAnc3Vic2V0ZXFxOyc6ICdcdTJhYzUnLAogICAgJ1N1YnNldEVxdWFsOyc6ICdcdTIyODYnLAogICAgJ3N1YnNldG5lcTsnOiAnXHUyMjhhJywKICAgICdzdWJzZXRuZXFxOyc6ICdcdTJhY2InLAogICAgJ3N1YnNpbTsnOiAnXHUyYWM3JywKICAgICdzdWJzdWI7JzogJ1x1MmFkNScsCiAgICAnc3Vic3VwOyc6ICdcdTJhZDMnLAogICAgJ3N1Y2M7JzogJ1x1MjI3YicsCiAgICAnc3VjY2FwcHJveDsnOiAnXHUyYWI4JywKICAgICdzdWNjY3VybHllcTsnOiAnXHUyMjdkJywKICAgICdTdWNjZWVkczsnOiAnXHUyMjdiJywKICAgICdTdWNjZWVkc0VxdWFsOyc6ICdcdTJhYjAnLAogICAgJ1N1Y2NlZWRzU2xhbnRFcXVhbDsnOiAnXHUyMjdkJywKICAgICdTdWNjZWVkc1RpbGRlOyc6ICdcdTIyN2YnLAogICAgJ3N1Y2NlcTsnOiAnXHUyYWIwJywKICAgICdzdWNjbmFwcHJveDsnOiAnXHUyYWJhJywKICAgICdzdWNjbmVxcTsnOiAnXHUyYWI2JywKICAgICdzdWNjbnNpbTsnOiAnXHUyMmU5JywKICAgICdzdWNjc2ltOyc6ICdcdTIyN2YnLAogICAgJ1N1Y2hUaGF0Oyc6ICdcdTIyMGInLAogICAgJ1N1bTsnOiAnXHUyMjExJywKICAgICdzdW07JzogJ1x1MjIxMScsCiAgICAnc3VuZzsnOiAnXHUyNjZhJywKICAgICdzdXAxJzogJ1x4YjknLAogICAgJ3N1cDE7JzogJ1x4YjknLAogICAgJ3N1cDInOiAnXHhiMicsCiAgICAnc3VwMjsnOiAnXHhiMicsCiAgICAnc3VwMyc6ICdceGIzJywKICAgICdzdXAzOyc6ICdceGIzJywKICAgICdTdXA7JzogJ1x1MjJkMScsCiAgICAnc3VwOyc6ICdcdTIyODMnLAogICAgJ3N1cGRvdDsnOiAnXHUyYWJlJywKICAgICdzdXBkc3ViOyc6ICdcdTJhZDgnLAogICAgJ3N1cEU7JzogJ1x1MmFjNicsCiAgICAnc3VwZTsnOiAnXHUyMjg3JywKICAgICdzdXBlZG90Oyc6ICdcdTJhYzQnLAogICAgJ1N1cGVyc2V0Oyc6ICdcdTIyODMnLAogICAgJ1N1cGVyc2V0RXF1YWw7JzogJ1x1MjI4NycsCiAgICAnc3VwaHNvbDsnOiAnXHUyN2M5JywKICAgICdzdXBoc3ViOyc6ICdcdTJhZDcnLAogICAgJ3N1cGxhcnI7JzogJ1x1Mjk3YicsCiAgICAnc3VwbXVsdDsnOiAnXHUyYWMyJywKICAgICdzdXBuRTsnOiAnXHUyYWNjJywKICAgICdzdXBuZTsnOiAnXHUyMjhiJywKICAgICdzdXBwbHVzOyc6ICdcdTJhYzAnLAogICAgJ1N1cHNldDsnOiAnXHUyMmQxJywKICAgICdzdXBzZXQ7JzogJ1x1MjI4MycsCiAgICAnc3Vwc2V0ZXE7JzogJ1x1MjI4NycsCiAgICAnc3Vwc2V0ZXFxOyc6ICdcdTJhYzYnLAogICAgJ3N1cHNldG5lcTsnOiAnXHUyMjhiJywKICAgICdzdXBzZXRuZXFxOyc6ICdcdTJhY2MnLAogICAgJ3N1cHNpbTsnOiAnXHUyYWM4JywKICAgICdzdXBzdWI7JzogJ1x1MmFkNCcsCiAgICAnc3Vwc3VwOyc6ICdcdTJhZDYnLAogICAgJ3N3YXJoazsnOiAnXHUyOTI2JywKICAgICdzd0FycjsnOiAnXHUyMWQ5JywKICAgICdzd2FycjsnOiAnXHUyMTk5JywKICAgICdzd2Fycm93Oyc6ICdcdTIxOTknLAogICAgJ3N3bndhcjsnOiAnXHUyOTJhJywKICAgICdzemxpZyc6ICdceGRmJywKICAgICdzemxpZzsnOiAnXHhkZicsCiAgICAnVGFiOyc6ICdcdCcsCiAgICAndGFyZ2V0Oyc6ICdcdTIzMTYnLAogICAgJ1RhdTsnOiAnXHUwM2E0JywKICAgICd0YXU7JzogJ1x1MDNjNCcsCiAgICAndGJyazsnOiAnXHUyM2I0JywKICAgICdUY2Fyb247JzogJ1x1MDE2NCcsCiAgICAndGNhcm9uOyc6ICdcdTAxNjUnLAogICAgJ1RjZWRpbDsnOiAnXHUwMTYyJywKICAgICd0Y2VkaWw7JzogJ1x1MDE2MycsCiAgICAnVGN5Oyc6ICdcdTA0MjInLAogICAgJ3RjeTsnOiAnXHUwNDQyJywKICAgICd0ZG90Oyc6ICdcdTIwZGInLAogICAgJ3RlbHJlYzsnOiAnXHUyMzE1JywKICAgICdUZnI7JzogJ1xVMDAwMWQ1MTcnLAogICAgJ3RmcjsnOiAnXFUwMDAxZDUzMScsCiAgICAndGhlcmU0Oyc6ICdcdTIyMzQnLAogICAgJ1RoZXJlZm9yZTsnOiAnXHUyMjM0JywKICAgICd0aGVyZWZvcmU7JzogJ1x1MjIzNCcsCiAgICAnVGhldGE7JzogJ1x1MDM5OCcsCiAgICAndGhldGE7JzogJ1x1MDNiOCcsCiAgICAndGhldGFzeW07JzogJ1x1MDNkMScsCiAgICAndGhldGF2Oyc6ICdcdTAzZDEnLAogICAgJ3RoaWNrYXBwcm94Oyc6ICdcdTIyNDgnLAogICAgJ3RoaWNrc2ltOyc6ICdcdTIyM2MnLAogICAgJ1RoaWNrU3BhY2U7JzogJ1x1MjA1Zlx1MjAwYScsCiAgICAndGhpbnNwOyc6ICdcdTIwMDknLAogICAgJ1RoaW5TcGFjZTsnOiAnXHUyMDA5JywKICAgICd0aGthcDsnOiAnXHUyMjQ4JywKICAgICd0aGtzaW07JzogJ1x1MjIzYycsCiAgICAnVEhPUk4nOiAnXHhkZScsCiAgICAndGhvcm4nOiAnXHhmZScsCiAgICAnVEhPUk47JzogJ1x4ZGUnLAogICAgJ3Rob3JuOyc6ICdceGZlJywKICAgICdUaWxkZTsnOiAnXHUyMjNjJywKICAgICd0aWxkZTsnOiAnXHUwMmRjJywKICAgICdUaWxkZUVxdWFsOyc6ICdcdTIyNDMnLAogICAgJ1RpbGRlRnVsbEVxdWFsOyc6ICdcdTIyNDUnLAogICAgJ1RpbGRlVGlsZGU7JzogJ1x1MjI0OCcsCiAgICAndGltZXMnOiAnXHhkNycsCiAgICAndGltZXM7JzogJ1x4ZDcnLAogICAgJ3RpbWVzYjsnOiAnXHUyMmEwJywKICAgICd0aW1lc2JhcjsnOiAnXHUyYTMxJywKICAgICd0aW1lc2Q7JzogJ1x1MmEzMCcsCiAgICAndGludDsnOiAnXHUyMjJkJywKICAgICd0b2VhOyc6ICdcdTI5MjgnLAogICAgJ3RvcDsnOiAnXHUyMmE0JywKICAgICd0b3Bib3Q7JzogJ1x1MjMzNicsCiAgICAndG9wY2lyOyc6ICdcdTJhZjEnLAogICAgJ1RvcGY7JzogJ1xVMDAwMWQ1NGInLAogICAgJ3RvcGY7JzogJ1xVMDAwMWQ1NjUnLAogICAgJ3RvcGZvcms7JzogJ1x1MmFkYScsCiAgICAndG9zYTsnOiAnXHUyOTI5JywKICAgICd0cHJpbWU7JzogJ1x1MjAzNCcsCiAgICAnVFJBREU7JzogJ1x1MjEyMicsCiAgICAndHJhZGU7JzogJ1x1MjEyMicsCiAgICAndHJpYW5nbGU7JzogJ1x1MjViNScsCiAgICAndHJpYW5nbGVkb3duOyc6ICdcdTI1YmYnLAogICAgJ3RyaWFuZ2xlbGVmdDsnOiAnXHUyNWMzJywKICAgICd0cmlhbmdsZWxlZnRlcTsnOiAnXHUyMmI0JywKICAgICd0cmlhbmdsZXE7JzogJ1x1MjI1YycsCiAgICAndHJpYW5nbGVyaWdodDsnOiAnXHUyNWI5JywKICAgICd0cmlhbmdsZXJpZ2h0ZXE7JzogJ1x1MjJiNScsCiAgICAndHJpZG90Oyc6ICdcdTI1ZWMnLAogICAgJ3RyaWU7JzogJ1x1MjI1YycsCiAgICAndHJpbWludXM7JzogJ1x1MmEzYScsCiAgICAnVHJpcGxlRG90Oyc6ICdcdTIwZGInLAogICAgJ3RyaXBsdXM7JzogJ1x1MmEzOScsCiAgICAndHJpc2I7JzogJ1x1MjljZCcsCiAgICAndHJpdGltZTsnOiAnXHUyYTNiJywKICAgICd0cnBleml1bTsnOiAnXHUyM2UyJywKICAgICdUc2NyOyc6ICdcVTAwMDFkNGFmJywKICAgICd0c2NyOyc6ICdcVTAwMDFkNGM5JywKICAgICdUU2N5Oyc6ICdcdTA0MjYnLAogICAgJ3RzY3k7JzogJ1x1MDQ0NicsCiAgICAnVFNIY3k7JzogJ1x1MDQwYicsCiAgICAndHNoY3k7JzogJ1x1MDQ1YicsCiAgICAnVHN0cm9rOyc6ICdcdTAxNjYnLAogICAgJ3RzdHJvazsnOiAnXHUwMTY3JywKICAgICd0d2l4dDsnOiAnXHUyMjZjJywKICAgICd0d29oZWFkbGVmdGFycm93Oyc6ICdcdTIxOWUnLAogICAgJ3R3b2hlYWRyaWdodGFycm93Oyc6ICdcdTIxYTAnLAogICAgJ1VhY3V0ZSc6ICdceGRhJywKICAgICd1YWN1dGUnOiAnXHhmYScsCiAgICAnVWFjdXRlOyc6ICdceGRhJywKICAgICd1YWN1dGU7JzogJ1x4ZmEnLAogICAgJ1VhcnI7JzogJ1x1MjE5ZicsCiAgICAndUFycjsnOiAnXHUyMWQxJywKICAgICd1YXJyOyc6ICdcdTIxOTEnLAogICAgJ1VhcnJvY2lyOyc6ICdcdTI5NDknLAogICAgJ1VicmN5Oyc6ICdcdTA0MGUnLAogICAgJ3VicmN5Oyc6ICdcdTA0NWUnLAogICAgJ1VicmV2ZTsnOiAnXHUwMTZjJywKICAgICd1YnJldmU7JzogJ1x1MDE2ZCcsCiAgICAnVWNpcmMnOiAnXHhkYicsCiAgICAndWNpcmMnOiAnXHhmYicsCiAgICAnVWNpcmM7JzogJ1x4ZGInLAogICAgJ3VjaXJjOyc6ICdceGZiJywKICAgICdVY3k7JzogJ1x1MDQyMycsCiAgICAndWN5Oyc6ICdcdTA0NDMnLAogICAgJ3VkYXJyOyc6ICdcdTIxYzUnLAogICAgJ1VkYmxhYzsnOiAnXHUwMTcwJywKICAgICd1ZGJsYWM7JzogJ1x1MDE3MScsCiAgICAndWRoYXI7JzogJ1x1Mjk2ZScsCiAgICAndWZpc2h0Oyc6ICdcdTI5N2UnLAogICAgJ1VmcjsnOiAnXFUwMDAxZDUxOCcsCiAgICAndWZyOyc6ICdcVTAwMDFkNTMyJywKICAgICdVZ3JhdmUnOiAnXHhkOScsCiAgICAndWdyYXZlJzogJ1x4ZjknLAogICAgJ1VncmF2ZTsnOiAnXHhkOScsCiAgICAndWdyYXZlOyc6ICdceGY5JywKICAgICd1SGFyOyc6ICdcdTI5NjMnLAogICAgJ3VoYXJsOyc6ICdcdTIxYmYnLAogICAgJ3VoYXJyOyc6ICdcdTIxYmUnLAogICAgJ3VoYmxrOyc6ICdcdTI1ODAnLAogICAgJ3VsY29ybjsnOiAnXHUyMzFjJywKICAgICd1bGNvcm5lcjsnOiAnXHUyMzFjJywKICAgICd1bGNyb3A7JzogJ1x1MjMwZicsCiAgICAndWx0cmk7JzogJ1x1MjVmOCcsCiAgICAnVW1hY3I7JzogJ1x1MDE2YScsCiAgICAndW1hY3I7JzogJ1x1MDE2YicsCiAgICAndW1sJzogJ1x4YTgnLAogICAgJ3VtbDsnOiAnXHhhOCcsCiAgICAnVW5kZXJCYXI7JzogJ18nLAogICAgJ1VuZGVyQnJhY2U7JzogJ1x1MjNkZicsCiAgICAnVW5kZXJCcmFja2V0Oyc6ICdcdTIzYjUnLAogICAgJ1VuZGVyUGFyZW50aGVzaXM7JzogJ1x1MjNkZCcsCiAgICAnVW5pb247JzogJ1x1MjJjMycsCiAgICAnVW5pb25QbHVzOyc6ICdcdTIyOGUnLAogICAgJ1VvZ29uOyc6ICdcdTAxNzInLAogICAgJ3VvZ29uOyc6ICdcdTAxNzMnLAogICAgJ1VvcGY7JzogJ1xVMDAwMWQ1NGMnLAogICAgJ3VvcGY7JzogJ1xVMDAwMWQ1NjYnLAogICAgJ1VwQXJyb3c7JzogJ1x1MjE5MScsCiAgICAnVXBhcnJvdzsnOiAnXHUyMWQxJywKICAgICd1cGFycm93Oyc6ICdcdTIxOTEnLAogICAgJ1VwQXJyb3dCYXI7JzogJ1x1MjkxMicsCiAgICAnVXBBcnJvd0Rvd25BcnJvdzsnOiAnXHUyMWM1JywKICAgICdVcERvd25BcnJvdzsnOiAnXHUyMTk1JywKICAgICdVcGRvd25hcnJvdzsnOiAnXHUyMWQ1JywKICAgICd1cGRvd25hcnJvdzsnOiAnXHUyMTk1JywKICAgICdVcEVxdWlsaWJyaXVtOyc6ICdcdTI5NmUnLAogICAgJ3VwaGFycG9vbmxlZnQ7JzogJ1x1MjFiZicsCiAgICAndXBoYXJwb29ucmlnaHQ7JzogJ1x1MjFiZScsCiAgICAndXBsdXM7JzogJ1x1MjI4ZScsCiAgICAnVXBwZXJMZWZ0QXJyb3c7JzogJ1x1MjE5NicsCiAgICAnVXBwZXJSaWdodEFycm93Oyc6ICdcdTIxOTcnLAogICAgJ1Vwc2k7JzogJ1x1MDNkMicsCiAgICAndXBzaTsnOiAnXHUwM2M1JywKICAgICd1cHNpaDsnOiAnXHUwM2QyJywKICAgICdVcHNpbG9uOyc6ICdcdTAzYTUnLAogICAgJ3Vwc2lsb247JzogJ1x1MDNjNScsCiAgICAnVXBUZWU7JzogJ1x1MjJhNScsCiAgICAnVXBUZWVBcnJvdzsnOiAnXHUyMWE1JywKICAgICd1cHVwYXJyb3dzOyc6ICdcdTIxYzgnLAogICAgJ3VyY29ybjsnOiAnXHUyMzFkJywKICAgICd1cmNvcm5lcjsnOiAnXHUyMzFkJywKICAgICd1cmNyb3A7JzogJ1x1MjMwZScsCiAgICAnVXJpbmc7JzogJ1x1MDE2ZScsCiAgICAndXJpbmc7JzogJ1x1MDE2ZicsCiAgICAndXJ0cmk7JzogJ1x1MjVmOScsCiAgICAnVXNjcjsnOiAnXFUwMDAxZDRiMCcsCiAgICAndXNjcjsnOiAnXFUwMDAxZDRjYScsCiAgICAndXRkb3Q7JzogJ1x1MjJmMCcsCiAgICAnVXRpbGRlOyc6ICdcdTAxNjgnLAogICAgJ3V0aWxkZTsnOiAnXHUwMTY5JywKICAgICd1dHJpOyc6ICdcdTI1YjUnLAogICAgJ3V0cmlmOyc6ICdcdTI1YjQnLAogICAgJ3V1YXJyOyc6ICdcdTIxYzgnLAogICAgJ1V1bWwnOiAnXHhkYycsCiAgICAndXVtbCc6ICdceGZjJywKICAgICdVdW1sOyc6ICdceGRjJywKICAgICd1dW1sOyc6ICdceGZjJywKICAgICd1d2FuZ2xlOyc6ICdcdTI5YTcnLAogICAgJ3ZhbmdydDsnOiAnXHUyOTljJywKICAgICd2YXJlcHNpbG9uOyc6ICdcdTAzZjUnLAogICAgJ3ZhcmthcHBhOyc6ICdcdTAzZjAnLAogICAgJ3Zhcm5vdGhpbmc7JzogJ1x1MjIwNScsCiAgICAndmFycGhpOyc6ICdcdTAzZDUnLAogICAgJ3ZhcnBpOyc6ICdcdTAzZDYnLAogICAgJ3ZhcnByb3B0bzsnOiAnXHUyMjFkJywKICAgICd2QXJyOyc6ICdcdTIxZDUnLAogICAgJ3ZhcnI7JzogJ1x1MjE5NScsCiAgICAndmFycmhvOyc6ICdcdTAzZjEnLAogICAgJ3ZhcnNpZ21hOyc6ICdcdTAzYzInLAogICAgJ3ZhcnN1YnNldG5lcTsnOiAnXHUyMjhhXHVmZTAwJywKICAgICd2YXJzdWJzZXRuZXFxOyc6ICdcdTJhY2JcdWZlMDAnLAogICAgJ3ZhcnN1cHNldG5lcTsnOiAnXHUyMjhiXHVmZTAwJywKICAgICd2YXJzdXBzZXRuZXFxOyc6ICdcdTJhY2NcdWZlMDAnLAogICAgJ3ZhcnRoZXRhOyc6ICdcdTAzZDEnLAogICAgJ3ZhcnRyaWFuZ2xlbGVmdDsnOiAnXHUyMmIyJywKICAgICd2YXJ0cmlhbmdsZXJpZ2h0Oyc6ICdcdTIyYjMnLAogICAgJ1ZiYXI7JzogJ1x1MmFlYicsCiAgICAndkJhcjsnOiAnXHUyYWU4JywKICAgICd2QmFydjsnOiAnXHUyYWU5JywKICAgICdWY3k7JzogJ1x1MDQxMicsCiAgICAndmN5Oyc6ICdcdTA0MzInLAogICAgJ1ZEYXNoOyc6ICdcdTIyYWInLAogICAgJ1ZkYXNoOyc6ICdcdTIyYTknLAogICAgJ3ZEYXNoOyc6ICdcdTIyYTgnLAogICAgJ3ZkYXNoOyc6ICdcdTIyYTInLAogICAgJ1ZkYXNobDsnOiAnXHUyYWU2JywKICAgICdWZWU7JzogJ1x1MjJjMScsCiAgICAndmVlOyc6ICdcdTIyMjgnLAogICAgJ3ZlZWJhcjsnOiAnXHUyMmJiJywKICAgICd2ZWVlcTsnOiAnXHUyMjVhJywKICAgICd2ZWxsaXA7JzogJ1x1MjJlZScsCiAgICAnVmVyYmFyOyc6ICdcdTIwMTYnLAogICAgJ3ZlcmJhcjsnOiAnfCcsCiAgICAnVmVydDsnOiAnXHUyMDE2JywKICAgICd2ZXJ0Oyc6ICd8JywKICAgICdWZXJ0aWNhbEJhcjsnOiAnXHUyMjIzJywKICAgICdWZXJ0aWNhbExpbmU7JzogJ3wnLAogICAgJ1ZlcnRpY2FsU2VwYXJhdG9yOyc6ICdcdTI3NTgnLAogICAgJ1ZlcnRpY2FsVGlsZGU7JzogJ1x1MjI0MCcsCiAgICAnVmVyeVRoaW5TcGFjZTsnOiAnXHUyMDBhJywKICAgICdWZnI7JzogJ1xVMDAwMWQ1MTknLAogICAgJ3ZmcjsnOiAnXFUwMDAxZDUzMycsCiAgICAndmx0cmk7JzogJ1x1MjJiMicsCiAgICAndm5zdWI7JzogJ1x1MjI4Mlx1MjBkMicsCiAgICAndm5zdXA7JzogJ1x1MjI4M1x1MjBkMicsCiAgICAnVm9wZjsnOiAnXFUwMDAxZDU0ZCcsCiAgICAndm9wZjsnOiAnXFUwMDAxZDU2NycsCiAgICAndnByb3A7JzogJ1x1MjIxZCcsCiAgICAndnJ0cmk7JzogJ1x1MjJiMycsCiAgICAnVnNjcjsnOiAnXFUwMDAxZDRiMScsCiAgICAndnNjcjsnOiAnXFUwMDAxZDRjYicsCiAgICAndnN1Ym5FOyc6ICdcdTJhY2JcdWZlMDAnLAogICAgJ3ZzdWJuZTsnOiAnXHUyMjhhXHVmZTAwJywKICAgICd2c3VwbkU7JzogJ1x1MmFjY1x1ZmUwMCcsCiAgICAndnN1cG5lOyc6ICdcdTIyOGJcdWZlMDAnLAogICAgJ1Z2ZGFzaDsnOiAnXHUyMmFhJywKICAgICd2emlnemFnOyc6ICdcdTI5OWEnLAogICAgJ1djaXJjOyc6ICdcdTAxNzQnLAogICAgJ3djaXJjOyc6ICdcdTAxNzUnLAogICAgJ3dlZGJhcjsnOiAnXHUyYTVmJywKICAgICdXZWRnZTsnOiAnXHUyMmMwJywKICAgICd3ZWRnZTsnOiAnXHUyMjI3JywKICAgICd3ZWRnZXE7JzogJ1x1MjI1OScsCiAgICAnd2VpZXJwOyc6ICdcdTIxMTgnLAogICAgJ1dmcjsnOiAnXFUwMDAxZDUxYScsCiAgICAnd2ZyOyc6ICdcVTAwMDFkNTM0JywKICAgICdXb3BmOyc6ICdcVTAwMDFkNTRlJywKICAgICd3b3BmOyc6ICdcVTAwMDFkNTY4JywKICAgICd3cDsnOiAnXHUyMTE4JywKICAgICd3cjsnOiAnXHUyMjQwJywKICAgICd3cmVhdGg7JzogJ1x1MjI0MCcsCiAgICAnV3NjcjsnOiAnXFUwMDAxZDRiMicsCiAgICAnd3NjcjsnOiAnXFUwMDAxZDRjYycsCiAgICAneGNhcDsnOiAnXHUyMmMyJywKICAgICd4Y2lyYzsnOiAnXHUyNWVmJywKICAgICd4Y3VwOyc6ICdcdTIyYzMnLAogICAgJ3hkdHJpOyc6ICdcdTI1YmQnLAogICAgJ1hmcjsnOiAnXFUwMDAxZDUxYicsCiAgICAneGZyOyc6ICdcVTAwMDFkNTM1JywKICAgICd4aEFycjsnOiAnXHUyN2ZhJywKICAgICd4aGFycjsnOiAnXHUyN2Y3JywKICAgICdYaTsnOiAnXHUwMzllJywKICAgICd4aTsnOiAnXHUwM2JlJywKICAgICd4bEFycjsnOiAnXHUyN2Y4JywKICAgICd4bGFycjsnOiAnXHUyN2Y1JywKICAgICd4bWFwOyc6ICdcdTI3ZmMnLAogICAgJ3huaXM7JzogJ1x1MjJmYicsCiAgICAneG9kb3Q7JzogJ1x1MmEwMCcsCiAgICAnWG9wZjsnOiAnXFUwMDAxZDU0ZicsCiAgICAneG9wZjsnOiAnXFUwMDAxZDU2OScsCiAgICAneG9wbHVzOyc6ICdcdTJhMDEnLAogICAgJ3hvdGltZTsnOiAnXHUyYTAyJywKICAgICd4ckFycjsnOiAnXHUyN2Y5JywKICAgICd4cmFycjsnOiAnXHUyN2Y2JywKICAgICdYc2NyOyc6ICdcVTAwMDFkNGIzJywKICAgICd4c2NyOyc6ICdcVTAwMDFkNGNkJywKICAgICd4c3FjdXA7JzogJ1x1MmEwNicsCiAgICAneHVwbHVzOyc6ICdcdTJhMDQnLAogICAgJ3h1dHJpOyc6ICdcdTI1YjMnLAogICAgJ3h2ZWU7JzogJ1x1MjJjMScsCiAgICAneHdlZGdlOyc6ICdcdTIyYzAnLAogICAgJ1lhY3V0ZSc6ICdceGRkJywKICAgICd5YWN1dGUnOiAnXHhmZCcsCiAgICAnWWFjdXRlOyc6ICdceGRkJywKICAgICd5YWN1dGU7JzogJ1x4ZmQnLAogICAgJ1lBY3k7JzogJ1x1MDQyZicsCiAgICAneWFjeTsnOiAnXHUwNDRmJywKICAgICdZY2lyYzsnOiAnXHUwMTc2JywKICAgICd5Y2lyYzsnOiAnXHUwMTc3JywKICAgICdZY3k7JzogJ1x1MDQyYicsCiAgICAneWN5Oyc6ICdcdTA0NGInLAogICAgJ3llbic6ICdceGE1JywKICAgICd5ZW47JzogJ1x4YTUnLAogICAgJ1lmcjsnOiAnXFUwMDAxZDUxYycsCiAgICAneWZyOyc6ICdcVTAwMDFkNTM2JywKICAgICdZSWN5Oyc6ICdcdTA0MDcnLAogICAgJ3lpY3k7JzogJ1x1MDQ1NycsCiAgICAnWW9wZjsnOiAnXFUwMDAxZDU1MCcsCiAgICAneW9wZjsnOiAnXFUwMDAxZDU2YScsCiAgICAnWXNjcjsnOiAnXFUwMDAxZDRiNCcsCiAgICAneXNjcjsnOiAnXFUwMDAxZDRjZScsCiAgICAnWVVjeTsnOiAnXHUwNDJlJywKICAgICd5dWN5Oyc6ICdcdTA0NGUnLAogICAgJ3l1bWwnOiAnXHhmZicsCiAgICAnWXVtbDsnOiAnXHUwMTc4JywKICAgICd5dW1sOyc6ICdceGZmJywKICAgICdaYWN1dGU7JzogJ1x1MDE3OScsCiAgICAnemFjdXRlOyc6ICdcdTAxN2EnLAogICAgJ1pjYXJvbjsnOiAnXHUwMTdkJywKICAgICd6Y2Fyb247JzogJ1x1MDE3ZScsCiAgICAnWmN5Oyc6ICdcdTA0MTcnLAogICAgJ3pjeTsnOiAnXHUwNDM3JywKICAgICdaZG90Oyc6ICdcdTAxN2InLAogICAgJ3pkb3Q7JzogJ1x1MDE3YycsCiAgICAnemVldHJmOyc6ICdcdTIxMjgnLAogICAgJ1plcm9XaWR0aFNwYWNlOyc6ICdcdTIwMGInLAogICAgJ1pldGE7JzogJ1x1MDM5NicsCiAgICAnemV0YTsnOiAnXHUwM2I2JywKICAgICdaZnI7JzogJ1x1MjEyOCcsCiAgICAnemZyOyc6ICdcVTAwMDFkNTM3JywKICAgICdaSGN5Oyc6ICdcdTA0MTYnLAogICAgJ3poY3k7JzogJ1x1MDQzNicsCiAgICAnemlncmFycjsnOiAnXHUyMWRkJywKICAgICdab3BmOyc6ICdcdTIxMjQnLAogICAgJ3pvcGY7JzogJ1xVMDAwMWQ1NmInLAogICAgJ1pzY3I7JzogJ1xVMDAwMWQ0YjUnLAogICAgJ3pzY3I7JzogJ1xVMDAwMWQ0Y2YnLAogICAgJ3p3ajsnOiAnXHUyMDBkJywKICAgICd6d25qOyc6ICdcdTIwMGMnLAp9CgojIG1hcHMgdGhlIFVuaWNvZGUgY29kZSBwb2ludCB0byB0aGUgSFRNTCBlbnRpdHkgbmFtZQpjb2RlcG9pbnQybmFtZSA9IHt9CgojIG1hcHMgdGhlIEhUTUwgZW50aXR5IG5hbWUgdG8gdGhlIGNoYXJhY3RlcgojIChvciBhIGNoYXJhY3RlciByZWZlcmVuY2UgaWYgdGhlIGNoYXJhY3RlciBpcyBvdXRzaWRlIHRoZSBMYXRpbi0xIHJhbmdlKQplbnRpdHlkZWZzID0ge30KCmZvciAobmFtZSwgY29kZXBvaW50KSBpbiBuYW1lMmNvZGVwb2ludC5pdGVtcygpOgogICAgY29kZXBvaW50Mm5hbWVbY29kZXBvaW50XSA9IG5hbWUKICAgIGVudGl0eWRlZnNbbmFtZV0gPSBjaHIoY29kZXBvaW50KQoKZGVsIG5hbWUsIGNvZGVwb2ludApQSwMEFAAAAAAAAyCjVt46KWeWQgAAlkIAAA4AAABodG1sL3BhcnNlci5weSIiIkEgcGFyc2VyIGZvciBIVE1MIGFuZCBYSFRNTC4iIiIKCiMgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHNnbWxsaWIucHksIGJ1dCB0aGUgQVBJIGlzIHNsaWdodGx5IGRpZmZlcmVudC4KCiMgWFhYIFRoZXJlIHNob3VsZCBiZSBhIHdheSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFBDREFUQSAocGFyc2VkCiMgY2hhcmFjdGVyIGRhdGEgLS0gdGhlIG5vcm1hbCBjYXNlKSwgUkNEQVRBIChyZXBsYWNlYWJsZSBjaGFyYWN0ZXIKIyBkYXRhIC0tIG9ubHkgY2hhciBhbmQgZW50aXR5IHJlZmVyZW5jZXMgYW5kIGVuZCB0YWdzIGFyZSBzcGVjaWFsKQojIGFuZCBDREFUQSAoY2hhcmFjdGVyIGRhdGEgLS0gb25seSBlbmQgdGFncyBhcmUgc3BlY2lhbCkuCgoKaW1wb3J0IHJlCmltcG9ydCBfbWFya3VwYmFzZQoKZnJvbSBodG1sIGltcG9ydCB1bmVzY2FwZQoKCl9fYWxsX18gPSBbJ0hUTUxQYXJzZXInXQoKIyBSZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgZm9yIHBhcnNpbmcKCmludGVyZXN0aW5nX25vcm1hbCA9IHJlLmNvbXBpbGUoJ1smPF0nKQppbmNvbXBsZXRlID0gcmUuY29tcGlsZSgnJlthLXpBLVojXScpCgplbnRpdHlyZWYgPSByZS5jb21waWxlKCcmKFthLXpBLVpdWy0uYS16QS1aMC05XSopW15hLXpBLVowLTldJykKY2hhcnJlZiA9IHJlLmNvbXBpbGUoJyYjKD86WzAtOV0rfFt4WF1bMC05YS1mQS1GXSspW14wLTlhLWZBLUZdJykKCnN0YXJ0dGFnb3BlbiA9IHJlLmNvbXBpbGUoJzxbYS16QS1aXScpCnBpY2xvc2UgPSByZS5jb21waWxlKCc+JykKY29tbWVudGNsb3NlID0gcmUuY29tcGlsZShyJy0tXHMqPicpCiMgTm90ZToKIyAgMSkgaWYgeW91IGNoYW5nZSB0YWdmaW5kL2F0dHJmaW5kIHJlbWVtYmVyIHRvIHVwZGF0ZSBsb2NhdGVzdGFydHRhZ2VuZCB0b287CiMgIDIpIGlmIHlvdSBjaGFuZ2UgdGFnZmluZC9hdHRyZmluZCBhbmQvb3IgbG9jYXRlc3RhcnR0YWdlbmQgdGhlIHBhcnNlciB3aWxsCiMgICAgIGV4cGxvZGUsIHNvIGRvbid0IGRvIGl0LgojIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctb3Blbi1zdGF0ZQojIGFuZCBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctbmFtZS1zdGF0ZQp0YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZShyJyhbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSopKD86XHN8Lyg/IT4pKSonKQphdHRyZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUoCiAgICByJygoPzw9W1wnIlxzL10pW15ccy8+XVteXHMvPT5dKikoXHMqPStccyonCiAgICByJyhcJ1teXCddKlwnfCJbXiJdKiJ8KD8hW1wnIl0pW14+XHNdKikpPyg/OlxzfC8oPyE+KSkqJykKbG9jYXRlc3RhcnR0YWdlbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKHIiIiIKICA8W2EtekEtWl1bXlx0XG5cclxmIC8+XHgwMF0qICAgICAgICMgdGFnIG5hbWUKICAoPzpbXHMvXSogICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgd2hpdGVzcGFjZSBiZWZvcmUgYXR0cmlidXRlIG5hbWUKICAgICg/Oig/PD1bJyJccy9dKVteXHMvPl1bXlxzLz0+XSogICMgYXR0cmlidXRlIG5hbWUKICAgICAgKD86XHMqPStccyogICAgICAgICAgICAgICAgICAgICMgdmFsdWUgaW5kaWNhdG9yCiAgICAgICAgKD86J1teJ10qJyAgICAgICAgICAgICAgICAgICAjIExJVEEtZW5jbG9zZWQgdmFsdWUKICAgICAgICAgIHwiW14iXSoiICAgICAgICAgICAgICAgICAgICMgTElULWVuY2xvc2VkIHZhbHVlCiAgICAgICAgICB8KD8hWyciXSlbXj5cc10qICAgICAgICAgICAjIGJhcmUgdmFsdWUKICAgICAgICAgKQogICAgICAgIFxzKiAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3NzaWJseSBmb2xsb3dlZCBieSBhIHNwYWNlCiAgICAgICApPyg/OlxzfC8oPyE+KSkqCiAgICAgKSoKICAgKT8KICBccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHJhaWxpbmcgd2hpdGVzcGFjZQoiIiIsIHJlLlZFUkJPU0UpCmVuZGVuZHRhZyA9IHJlLmNvbXBpbGUoJz4nKQojIHRoZSBIVE1MIDUgc3BlYywgc2VjdGlvbiA4LjEuMi4yLCBkb2Vzbid0IGFsbG93IHNwYWNlcyBiZXR3ZWVuCiMgPC8gYW5kIHRoZSB0YWcgbmFtZSwgc28gbWF5YmUgdGhpcyBzaG91bGQgYmUgZml4ZWQKZW5kdGFnZmluZCA9IHJlLmNvbXBpbGUocic8L1xzKihbYS16QS1aXVstLmEtekEtWjAtOTpfXSopXHMqPicpCgoKCmNsYXNzIEhUTUxQYXJzZXIoX21hcmt1cGJhc2UuUGFyc2VyQmFzZSk6CiAgICAiIiJGaW5kIHRhZ3MgYW5kIG90aGVyIG1hcmt1cCBhbmQgY2FsbCBoYW5kbGVyIGZ1bmN0aW9ucy4KCiAgICBVc2FnZToKICAgICAgICBwID0gSFRNTFBhcnNlcigpCiAgICAgICAgcC5mZWVkKGRhdGEpCiAgICAgICAgLi4uCiAgICAgICAgcC5jbG9zZSgpCgogICAgU3RhcnQgdGFncyBhcmUgaGFuZGxlZCBieSBjYWxsaW5nIHNlbGYuaGFuZGxlX3N0YXJ0dGFnKCkgb3IKICAgIHNlbGYuaGFuZGxlX3N0YXJ0ZW5kdGFnKCk7IGVuZCB0YWdzIGJ5IHNlbGYuaGFuZGxlX2VuZHRhZygpLiAgVGhlCiAgICBkYXRhIGJldHdlZW4gdGFncyBpcyBwYXNzZWQgZnJvbSB0aGUgcGFyc2VyIHRvIHRoZSBkZXJpdmVkIGNsYXNzCiAgICBieSBjYWxsaW5nIHNlbGYuaGFuZGxlX2RhdGEoKSB3aXRoIHRoZSBkYXRhIGFzIGFyZ3VtZW50ICh0aGUgZGF0YQogICAgbWF5IGJlIHNwbGl0IHVwIGluIGFyYml0cmFyeSBjaHVua3MpLiAgSWYgY29udmVydF9jaGFycmVmcyBpcwogICAgVHJ1ZSB0aGUgY2hhcmFjdGVyIHJlZmVyZW5jZXMgYXJlIGNvbnZlcnRlZCBhdXRvbWF0aWNhbGx5IHRvIHRoZQogICAgY29ycmVzcG9uZGluZyBVbmljb2RlIGNoYXJhY3RlciAoYW5kIHNlbGYuaGFuZGxlX2RhdGEoKSBpcyBubwogICAgbG9uZ2VyIHNwbGl0IGluIGNodW5rcyksIG90aGVyd2lzZSB0aGV5IGFyZSBwYXNzZWQgYnkgY2FsbGluZwogICAgc2VsZi5oYW5kbGVfZW50aXR5cmVmKCkgb3Igc2VsZi5oYW5kbGVfY2hhcnJlZigpIHdpdGggdGhlIHN0cmluZwogICAgY29udGFpbmluZyByZXNwZWN0aXZlbHkgdGhlIG5hbWVkIG9yIG51bWVyaWMgcmVmZXJlbmNlIGFzIHRoZQogICAgYXJndW1lbnQuCiAgICAiIiIKCiAgICBDREFUQV9DT05URU5UX0VMRU1FTlRTID0gKCJzY3JpcHQiLCAic3R5bGUiKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBjb252ZXJ0X2NoYXJyZWZzPVRydWUpOgogICAgICAgICIiIkluaXRpYWxpemUgYW5kIHJlc2V0IHRoaXMgaW5zdGFuY2UuCgogICAgICAgIElmIGNvbnZlcnRfY2hhcnJlZnMgaXMgVHJ1ZSAodGhlIGRlZmF1bHQpLCBhbGwgY2hhcmFjdGVyIHJlZmVyZW5jZXMKICAgICAgICBhcmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgVW5pY29kZSBjaGFyYWN0ZXJzLgogICAgICAgICIiIgogICAgICAgIHNlbGYuY29udmVydF9jaGFycmVmcyA9IGNvbnZlcnRfY2hhcnJlZnMKICAgICAgICBzZWxmLnJlc2V0KCkKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgIiIiUmVzZXQgdGhpcyBpbnN0YW5jZS4gIExvc2VzIGFsbCB1bnByb2Nlc3NlZCBkYXRhLiIiIgogICAgICAgIHNlbGYucmF3ZGF0YSA9ICcnCiAgICAgICAgc2VsZi5sYXN0dGFnID0gJz8/PycKICAgICAgICBzZWxmLmludGVyZXN0aW5nID0gaW50ZXJlc3Rpbmdfbm9ybWFsCiAgICAgICAgc2VsZi5jZGF0YV9lbGVtID0gTm9uZQogICAgICAgIF9tYXJrdXBiYXNlLlBhcnNlckJhc2UucmVzZXQoc2VsZikKCiAgICBkZWYgZmVlZChzZWxmLCBkYXRhKToKICAgICAgICByIiIiRmVlZCBkYXRhIHRvIHRoZSBwYXJzZXIuCgogICAgICAgIENhbGwgdGhpcyBhcyBvZnRlbiBhcyB5b3Ugd2FudCwgd2l0aCBhcyBsaXR0bGUgb3IgYXMgbXVjaCB0ZXh0CiAgICAgICAgYXMgeW91IHdhbnQgKG1heSBpbmNsdWRlICdcbicpLgogICAgICAgICIiIgogICAgICAgIHNlbGYucmF3ZGF0YSA9IHNlbGYucmF3ZGF0YSArIGRhdGEKICAgICAgICBzZWxmLmdvYWhlYWQoMCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiSGFuZGxlIGFueSBidWZmZXJlZCBkYXRhLiIiIgogICAgICAgIHNlbGYuZ29haGVhZCgxKQoKICAgIF9fc3RhcnR0YWdfdGV4dCA9IE5vbmUKCiAgICBkZWYgZ2V0X3N0YXJ0dGFnX3RleHQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGZ1bGwgc291cmNlIG9mIHN0YXJ0IHRhZzogJzwuLi4+Jy4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fX3N0YXJ0dGFnX3RleHQKCiAgICBkZWYgc2V0X2NkYXRhX21vZGUoc2VsZiwgZWxlbSk6CiAgICAgICAgc2VsZi5jZGF0YV9lbGVtID0gZWxlbS5sb3dlcigpCiAgICAgICAgc2VsZi5pbnRlcmVzdGluZyA9IHJlLmNvbXBpbGUocic8L1xzKiVzXHMqPicgJSBzZWxmLmNkYXRhX2VsZW0sIHJlLkkpCgogICAgZGVmIGNsZWFyX2NkYXRhX21vZGUoc2VsZik6CiAgICAgICAgc2VsZi5pbnRlcmVzdGluZyA9IGludGVyZXN0aW5nX25vcm1hbAogICAgICAgIHNlbGYuY2RhdGFfZWxlbSA9IE5vbmUKCiAgICAjIEludGVybmFsIC0tIGhhbmRsZSBkYXRhIGFzIGZhciBhcyByZWFzb25hYmxlLiAgTWF5IGxlYXZlIHN0YXRlCiAgICAjIGFuZCBkYXRhIHRvIGJlIHByb2Nlc3NlZCBieSBhIHN1YnNlcXVlbnQgY2FsbC4gIElmICdlbmQnIGlzCiAgICAjIHRydWUsIGZvcmNlIGhhbmRsaW5nIGFsbCBkYXRhIGFzIGlmIGZvbGxvd2VkIGJ5IEVPRiBtYXJrZXIuCiAgICBkZWYgZ29haGVhZChzZWxmLCBlbmQpOgogICAgICAgIHJhd2RhdGEgPSBzZWxmLnJhd2RhdGEKICAgICAgICBpID0gMAogICAgICAgIG4gPSBsZW4ocmF3ZGF0YSkKICAgICAgICB3aGlsZSBpIDwgbjoKICAgICAgICAgICAgaWYgc2VsZi5jb252ZXJ0X2NoYXJyZWZzIGFuZCBub3Qgc2VsZi5jZGF0YV9lbGVtOgogICAgICAgICAgICAgICAgaiA9IHJhd2RhdGEuZmluZCgnPCcsIGkpCiAgICAgICAgICAgICAgICBpZiBqIDwgMDoKICAgICAgICAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGZpbmQgdGhlIG5leHQgPCwgZWl0aGVyIHdlIGFyZSBhdCB0aGUgZW5kCiAgICAgICAgICAgICAgICAgICAgIyBvciB0aGVyZSdzIG1vcmUgdGV4dCBpbmNvbWluZy4gIElmIHRoZSBsYXR0ZXIgaXMgVHJ1ZSwKICAgICAgICAgICAgICAgICAgICAjIHdlIGNhbid0IHBhc3MgdGhlIHRleHQgdG8gaGFuZGxlX2RhdGEgaW4gY2FzZSB3ZSBoYXZlCiAgICAgICAgICAgICAgICAgICAgIyBhIGNoYXJyZWYgY3V0IGluIGhhbGYgYXQgZW5kLiAgVHJ5IHRvIGRldGVybWluZSBpZgogICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyB0aGUgY2FzZSBiZWZvcmUgcHJvY2VlZGluZyBieSBsb29raW5nIGZvciBhbgogICAgICAgICAgICAgICAgICAgICMgJiBuZWFyIHRoZSBlbmQgYW5kIHNlZSBpZiBpdCdzIGZvbGxvd2VkIGJ5IGEgc3BhY2Ugb3IgOy4KICAgICAgICAgICAgICAgICAgICBhbXBwb3MgPSByYXdkYXRhLnJmaW5kKCcmJywgbWF4KGksIG4tMzQpKQogICAgICAgICAgICAgICAgICAgIGlmIChhbXBwb3MgPj0gMCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgbm90IHJlLmNvbXBpbGUocidbXHM7XScpLnNlYXJjaChyYXdkYXRhLCBhbXBwb3MpKToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgICMgd2FpdCB0aWxsIHdlIGdldCBhbGwgdGhlIHRleHQKICAgICAgICAgICAgICAgICAgICBqID0gbgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLmludGVyZXN0aW5nLnNlYXJjaChyYXdkYXRhLCBpKSAgIyA8IG9yICYKICAgICAgICAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgICAgIGogPSBtYXRjaC5zdGFydCgpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY2RhdGFfZWxlbToKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBqID0gbgogICAgICAgICAgICBpZiBpIDwgajoKICAgICAgICAgICAgICAgIGlmIHNlbGYuY29udmVydF9jaGFycmVmcyBhbmQgbm90IHNlbGYuY2RhdGFfZWxlbToKICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKHVuZXNjYXBlKHJhd2RhdGFbaTpqXSkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEocmF3ZGF0YVtpOmpdKQogICAgICAgICAgICBpID0gc2VsZi51cGRhdGVwb3MoaSwgaikKICAgICAgICAgICAgaWYgaSA9PSBuOiBicmVhawogICAgICAgICAgICBzdGFydHN3aXRoID0gcmF3ZGF0YS5zdGFydHN3aXRoCiAgICAgICAgICAgIGlmIHN0YXJ0c3dpdGgoJzwnLCBpKToKICAgICAgICAgICAgICAgIGlmIHN0YXJ0dGFnb3Blbi5tYXRjaChyYXdkYXRhLCBpKTogIyA8ICsgbGV0dGVyCiAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYucGFyc2Vfc3RhcnR0YWcoaSkKICAgICAgICAgICAgICAgIGVsaWYgc3RhcnRzd2l0aCgiPC8iLCBpKToKICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5wYXJzZV9lbmR0YWcoaSkKICAgICAgICAgICAgICAgIGVsaWYgc3RhcnRzd2l0aCgiPCEtLSIsIGkpOgogICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLnBhcnNlX2NvbW1lbnQoaSkKICAgICAgICAgICAgICAgIGVsaWYgc3RhcnRzd2l0aCgiPD8iLCBpKToKICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5wYXJzZV9waShpKQogICAgICAgICAgICAgICAgZWxpZiBzdGFydHN3aXRoKCI8ISIsIGkpOgogICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLnBhcnNlX2h0bWxfZGVjbGFyYXRpb24oaSkKICAgICAgICAgICAgICAgIGVsaWYgKGkgKyAxKSA8IG46CiAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZGF0YSgiPCIpCiAgICAgICAgICAgICAgICAgICAgayA9IGkgKyAxCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBpZiBrIDwgMDoKICAgICAgICAgICAgICAgICAgICBpZiBub3QgZW5kOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGsgPSByYXdkYXRhLmZpbmQoJz4nLCBpICsgMSkKICAgICAgICAgICAgICAgICAgICBpZiBrIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgayA9IHJhd2RhdGEuZmluZCgnPCcsIGkgKyAxKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBrIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBpICsgMQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGsgKz0gMQogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY29udmVydF9jaGFycmVmcyBhbmQgbm90IHNlbGYuY2RhdGFfZWxlbToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZGF0YSh1bmVzY2FwZShyYXdkYXRhW2k6a10pKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEocmF3ZGF0YVtpOmtdKQogICAgICAgICAgICAgICAgaSA9IHNlbGYudXBkYXRlcG9zKGksIGspCiAgICAgICAgICAgIGVsaWYgc3RhcnRzd2l0aCgiJiMiLCBpKToKICAgICAgICAgICAgICAgIG1hdGNoID0gY2hhcnJlZi5tYXRjaChyYXdkYXRhLCBpKQogICAgICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG1hdGNoLmdyb3VwKClbMjotMV0KICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9jaGFycmVmKG5hbWUpCiAgICAgICAgICAgICAgICAgICAgayA9IG1hdGNoLmVuZCgpCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXJ0c3dpdGgoJzsnLCBrLTEpOgogICAgICAgICAgICAgICAgICAgICAgICBrID0gayAtIDEKICAgICAgICAgICAgICAgICAgICBpID0gc2VsZi51cGRhdGVwb3MoaSwgaykKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpZiAiOyIgaW4gcmF3ZGF0YVtpOl06ICAjIGJhaWwgYnkgY29uc3VtaW5nICYjCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEocmF3ZGF0YVtpOmkrMl0pCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzZWxmLnVwZGF0ZXBvcyhpLCBpKzIpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxpZiBzdGFydHN3aXRoKCcmJywgaSk6CiAgICAgICAgICAgICAgICBtYXRjaCA9IGVudGl0eXJlZi5tYXRjaChyYXdkYXRhLCBpKQogICAgICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG1hdGNoLmdyb3VwKDEpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZW50aXR5cmVmKG5hbWUpCiAgICAgICAgICAgICAgICAgICAgayA9IG1hdGNoLmVuZCgpCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXJ0c3dpdGgoJzsnLCBrLTEpOgogICAgICAgICAgICAgICAgICAgICAgICBrID0gayAtIDEKICAgICAgICAgICAgICAgICAgICBpID0gc2VsZi51cGRhdGVwb3MoaSwgaykKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgbWF0Y2ggPSBpbmNvbXBsZXRlLm1hdGNoKHJhd2RhdGEsIGkpCiAgICAgICAgICAgICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgICAgICAgICAjIG1hdGNoLmdyb3VwKCkgd2lsbCBjb250YWluIGF0IGxlYXN0IDIgY2hhcnMKICAgICAgICAgICAgICAgICAgICBpZiBlbmQgYW5kIG1hdGNoLmdyb3VwKCkgPT0gcmF3ZGF0YVtpOl06CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBtYXRjaC5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBrIDw9IGk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbgogICAgICAgICAgICAgICAgICAgICAgICBpID0gc2VsZi51cGRhdGVwb3MoaSwgaSArIDEpCiAgICAgICAgICAgICAgICAgICAgIyBpbmNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGVsaWYgKGkgKyAxKSA8IG46CiAgICAgICAgICAgICAgICAgICAgIyBub3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLCBhbmQgY2FuJ3QgYmUgY29uZnVzZWQKICAgICAgICAgICAgICAgICAgICAjIHdpdGggc29tZSBvdGhlciBjb25zdHJ1Y3QKICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKCImIikKICAgICAgICAgICAgICAgICAgICBpID0gc2VsZi51cGRhdGVwb3MoaSwgaSArIDEpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBhc3NlcnQgMCwgImludGVyZXN0aW5nLnNlYXJjaCgpIGxpZWQiCiAgICAgICAgIyBlbmQgd2hpbGUKICAgICAgICBpZiBlbmQgYW5kIGkgPCBuIGFuZCBub3Qgc2VsZi5jZGF0YV9lbGVtOgogICAgICAgICAgICBpZiBzZWxmLmNvbnZlcnRfY2hhcnJlZnMgYW5kIG5vdCBzZWxmLmNkYXRhX2VsZW06CiAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKHVuZXNjYXBlKHJhd2RhdGFbaTpuXSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKHJhd2RhdGFbaTpuXSkKICAgICAgICAgICAgaSA9IHNlbGYudXBkYXRlcG9zKGksIG4pCiAgICAgICAgc2VsZi5yYXdkYXRhID0gcmF3ZGF0YVtpOl0KCiAgICAjIEludGVybmFsIC0tIHBhcnNlIGh0bWwgZGVjbGFyYXRpb25zLCByZXR1cm4gbGVuZ3RoIG9yIC0xIGlmIG5vdCB0ZXJtaW5hdGVkCiAgICAjIFNlZSB3My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjbWFya3VwLWRlY2xhcmF0aW9uLW9wZW4tc3RhdGUKICAgICMgU2VlIGFsc28gcGFyc2VfZGVjbGFyYXRpb24gaW4gX21hcmt1cGJhc2UKICAgIGRlZiBwYXJzZV9odG1sX2RlY2xhcmF0aW9uKHNlbGYsIGkpOgogICAgICAgIHJhd2RhdGEgPSBzZWxmLnJhd2RhdGEKICAgICAgICBhc3NlcnQgcmF3ZGF0YVtpOmkrMl0gPT0gJzwhJywgKCd1bmV4cGVjdGVkIGNhbGwgdG8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnNlX2h0bWxfZGVjbGFyYXRpb24oKScpCiAgICAgICAgaWYgcmF3ZGF0YVtpOmkrNF0gPT0gJzwhLS0nOgogICAgICAgICAgICAjIHRoaXMgY2FzZSBpcyBhY3R1YWxseSBhbHJlYWR5IGhhbmRsZWQgaW4gZ29haGVhZCgpCiAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2NvbW1lbnQoaSkKICAgICAgICBlbGlmIHJhd2RhdGFbaTppKzNdID09ICc8IVsnOgogICAgICAgICAgICByZXR1cm4gc2VsZi5wYXJzZV9tYXJrZWRfc2VjdGlvbihpKQogICAgICAgIGVsaWYgcmF3ZGF0YVtpOmkrOV0ubG93ZXIoKSA9PSAnPCFkb2N0eXBlJzoKICAgICAgICAgICAgIyBmaW5kIHRoZSBjbG9zaW5nID4KICAgICAgICAgICAgZ3Rwb3MgPSByYXdkYXRhLmZpbmQoJz4nLCBpKzkpCiAgICAgICAgICAgIGlmIGd0cG9zID09IC0xOgogICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RlY2wocmF3ZGF0YVtpKzI6Z3Rwb3NdKQogICAgICAgICAgICByZXR1cm4gZ3Rwb3MrMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2JvZ3VzX2NvbW1lbnQoaSkKCiAgICAjIEludGVybmFsIC0tIHBhcnNlIGJvZ3VzIGNvbW1lbnQsIHJldHVybiBsZW5ndGggb3IgLTEgaWYgbm90IHRlcm1pbmF0ZWQKICAgICMgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI2JvZ3VzLWNvbW1lbnQtc3RhdGUKICAgIGRlZiBwYXJzZV9ib2d1c19jb21tZW50KHNlbGYsIGksIHJlcG9ydD0xKToKICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCiAgICAgICAgYXNzZXJ0IHJhd2RhdGFbaTppKzJdIGluICgnPCEnLCAnPC8nKSwgKCd1bmV4cGVjdGVkIGNhbGwgdG8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyc2VfY29tbWVudCgpJykKICAgICAgICBwb3MgPSByYXdkYXRhLmZpbmQoJz4nLCBpKzIpCiAgICAgICAgaWYgcG9zID09IC0xOgogICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICBpZiByZXBvcnQ6CiAgICAgICAgICAgIHNlbGYuaGFuZGxlX2NvbW1lbnQocmF3ZGF0YVtpKzI6cG9zXSkKICAgICAgICByZXR1cm4gcG9zICsgMQoKICAgICMgSW50ZXJuYWwgLS0gcGFyc2UgcHJvY2Vzc2luZyBpbnN0ciwgcmV0dXJuIGVuZCBvciAtMSBpZiBub3QgdGVybWluYXRlZAogICAgZGVmIHBhcnNlX3BpKHNlbGYsIGkpOgogICAgICAgIHJhd2RhdGEgPSBzZWxmLnJhd2RhdGEKICAgICAgICBhc3NlcnQgcmF3ZGF0YVtpOmkrMl0gPT0gJzw/JywgJ3VuZXhwZWN0ZWQgY2FsbCB0byBwYXJzZV9waSgpJwogICAgICAgIG1hdGNoID0gcGljbG9zZS5zZWFyY2gocmF3ZGF0YSwgaSsyKSAjID4KICAgICAgICBpZiBub3QgbWF0Y2g6CiAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgIGogPSBtYXRjaC5zdGFydCgpCiAgICAgICAgc2VsZi5oYW5kbGVfcGkocmF3ZGF0YVtpKzI6IGpdKQogICAgICAgIGogPSBtYXRjaC5lbmQoKQogICAgICAgIHJldHVybiBqCgogICAgIyBJbnRlcm5hbCAtLSBoYW5kbGUgc3RhcnR0YWcsIHJldHVybiBlbmQgb3IgLTEgaWYgbm90IHRlcm1pbmF0ZWQKICAgIGRlZiBwYXJzZV9zdGFydHRhZyhzZWxmLCBpKToKICAgICAgICBzZWxmLl9fc3RhcnR0YWdfdGV4dCA9IE5vbmUKICAgICAgICBlbmRwb3MgPSBzZWxmLmNoZWNrX2Zvcl93aG9sZV9zdGFydF90YWcoaSkKICAgICAgICBpZiBlbmRwb3MgPCAwOgogICAgICAgICAgICByZXR1cm4gZW5kcG9zCiAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQogICAgICAgIHNlbGYuX19zdGFydHRhZ190ZXh0ID0gcmF3ZGF0YVtpOmVuZHBvc10KCiAgICAgICAgIyBOb3cgcGFyc2UgdGhlIGRhdGEgYmV0d2VlbiBpKzEgYW5kIGogaW50byBhIHRhZyBhbmQgYXR0cnMKICAgICAgICBhdHRycyA9IFtdCiAgICAgICAgbWF0Y2ggPSB0YWdmaW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGkrMSkKICAgICAgICBhc3NlcnQgbWF0Y2gsICd1bmV4cGVjdGVkIGNhbGwgdG8gcGFyc2Vfc3RhcnR0YWcoKScKICAgICAgICBrID0gbWF0Y2guZW5kKCkKICAgICAgICBzZWxmLmxhc3R0YWcgPSB0YWcgPSBtYXRjaC5ncm91cCgxKS5sb3dlcigpCiAgICAgICAgd2hpbGUgayA8IGVuZHBvczoKICAgICAgICAgICAgbSA9IGF0dHJmaW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGspCiAgICAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgYXR0cm5hbWUsIHJlc3QsIGF0dHJ2YWx1ZSA9IG0uZ3JvdXAoMSwgMiwgMykKICAgICAgICAgICAgaWYgbm90IHJlc3Q6CiAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBOb25lCiAgICAgICAgICAgIGVsaWYgYXR0cnZhbHVlWzoxXSA9PSAnXCcnID09IGF0dHJ2YWx1ZVstMTpdIG9yIFwKICAgICAgICAgICAgICAgICBhdHRydmFsdWVbOjFdID09ICciJyA9PSBhdHRydmFsdWVbLTE6XToKICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGF0dHJ2YWx1ZVsxOi0xXQogICAgICAgICAgICBpZiBhdHRydmFsdWU6CiAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSB1bmVzY2FwZShhdHRydmFsdWUpCiAgICAgICAgICAgIGF0dHJzLmFwcGVuZCgoYXR0cm5hbWUubG93ZXIoKSwgYXR0cnZhbHVlKSkKICAgICAgICAgICAgayA9IG0uZW5kKCkKCiAgICAgICAgZW5kID0gcmF3ZGF0YVtrOmVuZHBvc10uc3RyaXAoKQogICAgICAgIGlmIGVuZCBub3QgaW4gKCI+IiwgIi8+Iik6CiAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEocmF3ZGF0YVtpOmVuZHBvc10pCiAgICAgICAgICAgIHJldHVybiBlbmRwb3MKICAgICAgICBpZiBlbmQuZW5kc3dpdGgoJy8+Jyk6CiAgICAgICAgICAgICMgWEhUTUwtc3R5bGUgZW1wdHkgdGFnOiA8c3BhbiBhdHRyPSJ2YWx1ZSIgLz4KICAgICAgICAgICAgc2VsZi5oYW5kbGVfc3RhcnRlbmR0YWcodGFnLCBhdHRycykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmhhbmRsZV9zdGFydHRhZyh0YWcsIGF0dHJzKQogICAgICAgICAgICBpZiB0YWcgaW4gc2VsZi5DREFUQV9DT05URU5UX0VMRU1FTlRTOgogICAgICAgICAgICAgICAgc2VsZi5zZXRfY2RhdGFfbW9kZSh0YWcpCiAgICAgICAgcmV0dXJuIGVuZHBvcwoKICAgICMgSW50ZXJuYWwgLS0gY2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSBjb21wbGV0ZSBzdGFydHRhZzsgcmV0dXJuIGVuZAogICAgIyBvciAtMSBpZiBpbmNvbXBsZXRlLgogICAgZGVmIGNoZWNrX2Zvcl93aG9sZV9zdGFydF90YWcoc2VsZiwgaSk6CiAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQogICAgICAgIG0gPSBsb2NhdGVzdGFydHRhZ2VuZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBpKQogICAgICAgIGlmIG06CiAgICAgICAgICAgIGogPSBtLmVuZCgpCiAgICAgICAgICAgIG5leHQgPSByYXdkYXRhW2o6aisxXQogICAgICAgICAgICBpZiBuZXh0ID09ICI+IjoKICAgICAgICAgICAgICAgIHJldHVybiBqICsgMQogICAgICAgICAgICBpZiBuZXh0ID09ICIvIjoKICAgICAgICAgICAgICAgIGlmIHJhd2RhdGEuc3RhcnRzd2l0aCgiLz4iLCBqKToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaiArIDIKICAgICAgICAgICAgICAgIGlmIHJhd2RhdGEuc3RhcnRzd2l0aCgiLyIsIGopOgogICAgICAgICAgICAgICAgICAgICMgYnVmZmVyIGJvdW5kYXJ5CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICAgICAjIGVsc2UgYm9ndXMgaW5wdXQKICAgICAgICAgICAgICAgIGlmIGogPiBpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBqCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBpICsgMQogICAgICAgICAgICBpZiBuZXh0ID09ICIiOgogICAgICAgICAgICAgICAgIyBlbmQgb2YgaW5wdXQKICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICBpZiBuZXh0IGluICgiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo9LyIKICAgICAgICAgICAgICAgICAgICAgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIik6CiAgICAgICAgICAgICAgICAjIGVuZCBvZiBpbnB1dCBpbiBvciBiZWZvcmUgYXR0cmlidXRlIHZhbHVlLCBvciB3ZSBoYXZlIHRoZQogICAgICAgICAgICAgICAgIyAnLycgZnJvbSBhICcvPicgZW5kaW5nCiAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgaWYgaiA+IGk6CiAgICAgICAgICAgICAgICByZXR1cm4gagogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIGkgKyAxCiAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIndlIHNob3VsZCBub3QgZ2V0IGhlcmUhIikKCiAgICAjIEludGVybmFsIC0tIHBhcnNlIGVuZHRhZywgcmV0dXJuIGVuZCBvciAtMSBpZiBpbmNvbXBsZXRlCiAgICBkZWYgcGFyc2VfZW5kdGFnKHNlbGYsIGkpOgogICAgICAgIHJhd2RhdGEgPSBzZWxmLnJhd2RhdGEKICAgICAgICBhc3NlcnQgcmF3ZGF0YVtpOmkrMl0gPT0gIjwvIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBwYXJzZV9lbmR0YWciCiAgICAgICAgbWF0Y2ggPSBlbmRlbmR0YWcuc2VhcmNoKHJhd2RhdGEsIGkrMSkgIyA+CiAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICBndHBvcyA9IG1hdGNoLmVuZCgpCiAgICAgICAgbWF0Y2ggPSBlbmR0YWdmaW5kLm1hdGNoKHJhd2RhdGEsIGkpICMgPC8gKyB0YWcgKyA+CiAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICBpZiBzZWxmLmNkYXRhX2VsZW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKHJhd2RhdGFbaTpndHBvc10pCiAgICAgICAgICAgICAgICByZXR1cm4gZ3Rwb3MKICAgICAgICAgICAgIyBmaW5kIHRoZSBuYW1lOiB3My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW5hbWUtc3RhdGUKICAgICAgICAgICAgbmFtZW1hdGNoID0gdGFnZmluZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBpKzIpCiAgICAgICAgICAgIGlmIG5vdCBuYW1lbWF0Y2g6CiAgICAgICAgICAgICAgICAjIHczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCNlbmQtdGFnLW9wZW4tc3RhdGUKICAgICAgICAgICAgICAgIGlmIHJhd2RhdGFbaTppKzNdID09ICc8Lz4nOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBpKzMKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VfYm9ndXNfY29tbWVudChpKQogICAgICAgICAgICB0YWduYW1lID0gbmFtZW1hdGNoLmdyb3VwKDEpLmxvd2VyKCkKICAgICAgICAgICAgIyBjb25zdW1lIGFuZCBpZ25vcmUgb3RoZXIgc3R1ZmYgYmV0d2VlbiB0aGUgbmFtZSBhbmQgdGhlID4KICAgICAgICAgICAgIyBOb3RlOiB0aGlzIGlzIG5vdCAxMDAlIGNvcnJlY3QsIHNpbmNlIHdlIG1pZ2h0IGhhdmUgdGhpbmdzIGxpa2UKICAgICAgICAgICAgIyA8L3RhZyBhdHRyPSI+Ij4sIGJ1dCBsb29raW5nIGZvciA+IGFmdGVyIHRoZSBuYW1lIHNob3VsZCBjb3ZlcgogICAgICAgICAgICAjIG1vc3Qgb2YgdGhlIGNhc2VzIGFuZCBpcyBtdWNoIHNpbXBsZXIKICAgICAgICAgICAgZ3Rwb3MgPSByYXdkYXRhLmZpbmQoJz4nLCBuYW1lbWF0Y2guZW5kKCkpCiAgICAgICAgICAgIHNlbGYuaGFuZGxlX2VuZHRhZyh0YWduYW1lKQogICAgICAgICAgICByZXR1cm4gZ3Rwb3MrMQoKICAgICAgICBlbGVtID0gbWF0Y2guZ3JvdXAoMSkubG93ZXIoKSAjIHNjcmlwdCBvciBzdHlsZQogICAgICAgIGlmIHNlbGYuY2RhdGFfZWxlbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgZWxlbSAhPSBzZWxmLmNkYXRhX2VsZW06CiAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKHJhd2RhdGFbaTpndHBvc10pCiAgICAgICAgICAgICAgICByZXR1cm4gZ3Rwb3MKCiAgICAgICAgc2VsZi5oYW5kbGVfZW5kdGFnKGVsZW0pCiAgICAgICAgc2VsZi5jbGVhcl9jZGF0YV9tb2RlKCkKICAgICAgICByZXR1cm4gZ3Rwb3MKCiAgICAjIE92ZXJyaWRhYmxlIC0tIGZpbmlzaCBwcm9jZXNzaW5nIG9mIHN0YXJ0K2VuZCB0YWc6IDx0YWcuLi4vPgogICAgZGVmIGhhbmRsZV9zdGFydGVuZHRhZyhzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICBzZWxmLmhhbmRsZV9zdGFydHRhZyh0YWcsIGF0dHJzKQogICAgICAgIHNlbGYuaGFuZGxlX2VuZHRhZyh0YWcpCgogICAgIyBPdmVycmlkYWJsZSAtLSBoYW5kbGUgc3RhcnQgdGFnCiAgICBkZWYgaGFuZGxlX3N0YXJ0dGFnKHNlbGYsIHRhZywgYXR0cnMpOgogICAgICAgIHBhc3MKCiAgICAjIE92ZXJyaWRhYmxlIC0tIGhhbmRsZSBlbmQgdGFnCiAgICBkZWYgaGFuZGxlX2VuZHRhZyhzZWxmLCB0YWcpOgogICAgICAgIHBhc3MKCiAgICAjIE92ZXJyaWRhYmxlIC0tIGhhbmRsZSBjaGFyYWN0ZXIgcmVmZXJlbmNlCiAgICBkZWYgaGFuZGxlX2NoYXJyZWYoc2VsZiwgbmFtZSk6CiAgICAgICAgcGFzcwoKICAgICMgT3ZlcnJpZGFibGUgLS0gaGFuZGxlIGVudGl0eSByZWZlcmVuY2UKICAgIGRlZiBoYW5kbGVfZW50aXR5cmVmKHNlbGYsIG5hbWUpOgogICAgICAgIHBhc3MKCiAgICAjIE92ZXJyaWRhYmxlIC0tIGhhbmRsZSBkYXRhCiAgICBkZWYgaGFuZGxlX2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgcGFzcwoKICAgICMgT3ZlcnJpZGFibGUgLS0gaGFuZGxlIGNvbW1lbnQKICAgIGRlZiBoYW5kbGVfY29tbWVudChzZWxmLCBkYXRhKToKICAgICAgICBwYXNzCgogICAgIyBPdmVycmlkYWJsZSAtLSBoYW5kbGUgZGVjbGFyYXRpb24KICAgIGRlZiBoYW5kbGVfZGVjbChzZWxmLCBkZWNsKToKICAgICAgICBwYXNzCgogICAgIyBPdmVycmlkYWJsZSAtLSBoYW5kbGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbgogICAgZGVmIGhhbmRsZV9waShzZWxmLCBkYXRhKToKICAgICAgICBwYXNzCgogICAgZGVmIHVua25vd25fZGVjbChzZWxmLCBkYXRhKToKICAgICAgICBwYXNzClBLAwQUAAAAAAADIKNWEMx02+keAADpHgAAEAAAAGh0dHAvX19pbml0X18ucHlmcm9tIGVudW0gaW1wb3J0IFN0ckVudW0sIEludEVudW0sIF9zaW1wbGVfZW51bQoKX19hbGxfXyA9IFsnSFRUUFN0YXR1cycsICdIVFRQTWV0aG9kJ10KCgpAX3NpbXBsZV9lbnVtKEludEVudW0pCmNsYXNzIEhUVFBTdGF0dXM6CiAgICAiIiJIVFRQIHN0YXR1cyBjb2RlcyBhbmQgcmVhc29uIHBocmFzZXMKCiAgICBTdGF0dXMgY29kZXMgZnJvbSB0aGUgZm9sbG93aW5nIFJGQ3MgYXJlIGFsbCBvYnNlcnZlZDoKCiAgICAgICAgKiBSRkMgNzIzMTogSHlwZXJ0ZXh0IFRyYW5zZmVyIFByb3RvY29sIChIVFRQLzEuMSksIG9ic29sZXRlcyAyNjE2CiAgICAgICAgKiBSRkMgNjU4NTogQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcwogICAgICAgICogUkZDIDMyMjk6IERlbHRhIGVuY29kaW5nIGluIEhUVFAKICAgICAgICAqIFJGQyA0OTE4OiBIVFRQIEV4dGVuc2lvbnMgZm9yIFdlYkRBViwgb2Jzb2xldGVzIDI1MTgKICAgICAgICAqIFJGQyA1ODQyOiBCaW5kaW5nIEV4dGVuc2lvbnMgdG8gV2ViREFWCiAgICAgICAgKiBSRkMgNzIzODogUGVybWFuZW50IFJlZGlyZWN0CiAgICAgICAgKiBSRkMgMjI5NTogVHJhbnNwYXJlbnQgQ29udGVudCBOZWdvdGlhdGlvbiBpbiBIVFRQCiAgICAgICAgKiBSRkMgMjc3NDogQW4gSFRUUCBFeHRlbnNpb24gRnJhbWV3b3JrCiAgICAgICAgKiBSRkMgNzcyNTogQW4gSFRUUCBTdGF0dXMgQ29kZSB0byBSZXBvcnQgTGVnYWwgT2JzdGFjbGVzCiAgICAgICAgKiBSRkMgNzU0MDogSHlwZXJ0ZXh0IFRyYW5zZmVyIFByb3RvY29sIFZlcnNpb24gMiAoSFRUUC8yKQogICAgICAgICogUkZDIDIzMjQ6IEh5cGVyIFRleHQgQ29mZmVlIFBvdCBDb250cm9sIFByb3RvY29sIChIVENQQ1AvMS4wKQogICAgICAgICogUkZDIDgyOTc6IEFuIEhUVFAgU3RhdHVzIENvZGUgZm9yIEluZGljYXRpbmcgSGludHMKICAgICAgICAqIFJGQyA4NDcwOiBVc2luZyBFYXJseSBEYXRhIGluIEhUVFAKICAgICIiIgogICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSwgcGhyYXNlLCBkZXNjcmlwdGlvbj0nJyk6CiAgICAgICAgb2JqID0gaW50Ll9fbmV3X18oY2xzLCB2YWx1ZSkKICAgICAgICBvYmouX3ZhbHVlXyA9IHZhbHVlCgogICAgICAgIG9iai5waHJhc2UgPSBwaHJhc2UKICAgICAgICBvYmouZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgogICAgICAgIHJldHVybiBvYmoKCiAgICAjIGluZm9ybWF0aW9uYWwKICAgIENPTlRJTlVFID0gMTAwLCAnQ29udGludWUnLCAnUmVxdWVzdCByZWNlaXZlZCwgcGxlYXNlIGNvbnRpbnVlJwogICAgU1dJVENISU5HX1BST1RPQ09MUyA9ICgxMDEsICdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKICAgICAgICAgICAgJ1N3aXRjaGluZyB0byBuZXcgcHJvdG9jb2w7IG9iZXkgVXBncmFkZSBoZWFkZXInKQogICAgUFJPQ0VTU0lORyA9IDEwMiwgJ1Byb2Nlc3NpbmcnCiAgICBFQVJMWV9ISU5UUyA9IDEwMywgJ0Vhcmx5IEhpbnRzJwoKICAgICMgc3VjY2VzcwogICAgT0sgPSAyMDAsICdPSycsICdSZXF1ZXN0IGZ1bGZpbGxlZCwgZG9jdW1lbnQgZm9sbG93cycKICAgIENSRUFURUQgPSAyMDEsICdDcmVhdGVkJywgJ0RvY3VtZW50IGNyZWF0ZWQsIFVSTCBmb2xsb3dzJwogICAgQUNDRVBURUQgPSAoMjAyLCAnQWNjZXB0ZWQnLAogICAgICAgICdSZXF1ZXN0IGFjY2VwdGVkLCBwcm9jZXNzaW5nIGNvbnRpbnVlcyBvZmYtbGluZScpCiAgICBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTiA9ICgyMDMsCiAgICAgICAgJ05vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uJywgJ1JlcXVlc3QgZnVsZmlsbGVkIGZyb20gY2FjaGUnKQogICAgTk9fQ09OVEVOVCA9IDIwNCwgJ05vIENvbnRlbnQnLCAnUmVxdWVzdCBmdWxmaWxsZWQsIG5vdGhpbmcgZm9sbG93cycKICAgIFJFU0VUX0NPTlRFTlQgPSAyMDUsICdSZXNldCBDb250ZW50JywgJ0NsZWFyIGlucHV0IGZvcm0gZm9yIGZ1cnRoZXIgaW5wdXQnCiAgICBQQVJUSUFMX0NPTlRFTlQgPSAyMDYsICdQYXJ0aWFsIENvbnRlbnQnLCAnUGFydGlhbCBjb250ZW50IGZvbGxvd3MnCiAgICBNVUxUSV9TVEFUVVMgPSAyMDcsICdNdWx0aS1TdGF0dXMnCiAgICBBTFJFQURZX1JFUE9SVEVEID0gMjA4LCAnQWxyZWFkeSBSZXBvcnRlZCcKICAgIElNX1VTRUQgPSAyMjYsICdJTSBVc2VkJwoKICAgICMgcmVkaXJlY3Rpb24KICAgIE1VTFRJUExFX0NIT0lDRVMgPSAoMzAwLCAnTXVsdGlwbGUgQ2hvaWNlcycsCiAgICAgICAgJ09iamVjdCBoYXMgc2V2ZXJhbCByZXNvdXJjZXMgLS0gc2VlIFVSSSBsaXN0JykKICAgIE1PVkVEX1BFUk1BTkVOVExZID0gKDMwMSwgJ01vdmVkIFBlcm1hbmVudGx5JywKICAgICAgICAnT2JqZWN0IG1vdmVkIHBlcm1hbmVudGx5IC0tIHNlZSBVUkkgbGlzdCcpCiAgICBGT1VORCA9IDMwMiwgJ0ZvdW5kJywgJ09iamVjdCBtb3ZlZCB0ZW1wb3JhcmlseSAtLSBzZWUgVVJJIGxpc3QnCiAgICBTRUVfT1RIRVIgPSAzMDMsICdTZWUgT3RoZXInLCAnT2JqZWN0IG1vdmVkIC0tIHNlZSBNZXRob2QgYW5kIFVSTCBsaXN0JwogICAgTk9UX01PRElGSUVEID0gKDMwNCwgJ05vdCBNb2RpZmllZCcsCiAgICAgICAgJ0RvY3VtZW50IGhhcyBub3QgY2hhbmdlZCBzaW5jZSBnaXZlbiB0aW1lJykKICAgIFVTRV9QUk9YWSA9ICgzMDUsICdVc2UgUHJveHknLAogICAgICAgICdZb3UgbXVzdCB1c2UgcHJveHkgc3BlY2lmaWVkIGluIExvY2F0aW9uIHRvIGFjY2VzcyB0aGlzIHJlc291cmNlJykKICAgIFRFTVBPUkFSWV9SRURJUkVDVCA9ICgzMDcsICdUZW1wb3JhcnkgUmVkaXJlY3QnLAogICAgICAgICdPYmplY3QgbW92ZWQgdGVtcG9yYXJpbHkgLS0gc2VlIFVSSSBsaXN0JykKICAgIFBFUk1BTkVOVF9SRURJUkVDVCA9ICgzMDgsICdQZXJtYW5lbnQgUmVkaXJlY3QnLAogICAgICAgICdPYmplY3QgbW92ZWQgcGVybWFuZW50bHkgLS0gc2VlIFVSSSBsaXN0JykKCiAgICAjIGNsaWVudCBlcnJvcgogICAgQkFEX1JFUVVFU1QgPSAoNDAwLCAnQmFkIFJlcXVlc3QnLAogICAgICAgICdCYWQgcmVxdWVzdCBzeW50YXggb3IgdW5zdXBwb3J0ZWQgbWV0aG9kJykKICAgIFVOQVVUSE9SSVpFRCA9ICg0MDEsICdVbmF1dGhvcml6ZWQnLAogICAgICAgICdObyBwZXJtaXNzaW9uIC0tIHNlZSBhdXRob3JpemF0aW9uIHNjaGVtZXMnKQogICAgUEFZTUVOVF9SRVFVSVJFRCA9ICg0MDIsICdQYXltZW50IFJlcXVpcmVkJywKICAgICAgICAnTm8gcGF5bWVudCAtLSBzZWUgY2hhcmdpbmcgc2NoZW1lcycpCiAgICBGT1JCSURERU4gPSAoNDAzLCAnRm9yYmlkZGVuJywKICAgICAgICAnUmVxdWVzdCBmb3JiaWRkZW4gLS0gYXV0aG9yaXphdGlvbiB3aWxsIG5vdCBoZWxwJykKICAgIE5PVF9GT1VORCA9ICg0MDQsICdOb3QgRm91bmQnLAogICAgICAgICdOb3RoaW5nIG1hdGNoZXMgdGhlIGdpdmVuIFVSSScpCiAgICBNRVRIT0RfTk9UX0FMTE9XRUQgPSAoNDA1LCAnTWV0aG9kIE5vdCBBbGxvd2VkJywKICAgICAgICAnU3BlY2lmaWVkIG1ldGhvZCBpcyBpbnZhbGlkIGZvciB0aGlzIHJlc291cmNlJykKICAgIE5PVF9BQ0NFUFRBQkxFID0gKDQwNiwgJ05vdCBBY2NlcHRhYmxlJywKICAgICAgICAnVVJJIG5vdCBhdmFpbGFibGUgaW4gcHJlZmVycmVkIGZvcm1hdCcpCiAgICBQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9ICg0MDcsCiAgICAgICAgJ1Byb3h5IEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJywKICAgICAgICAnWW91IG11c3QgYXV0aGVudGljYXRlIHdpdGggdGhpcyBwcm94eSBiZWZvcmUgcHJvY2VlZGluZycpCiAgICBSRVFVRVNUX1RJTUVPVVQgPSAoNDA4LCAnUmVxdWVzdCBUaW1lb3V0JywKICAgICAgICAnUmVxdWVzdCB0aW1lZCBvdXQ7IHRyeSBhZ2FpbiBsYXRlcicpCiAgICBDT05GTElDVCA9IDQwOSwgJ0NvbmZsaWN0JywgJ1JlcXVlc3QgY29uZmxpY3QnCiAgICBHT05FID0gKDQxMCwgJ0dvbmUnLAogICAgICAgICdVUkkgbm8gbG9uZ2VyIGV4aXN0cyBhbmQgaGFzIGJlZW4gcGVybWFuZW50bHkgcmVtb3ZlZCcpCiAgICBMRU5HVEhfUkVRVUlSRUQgPSAoNDExLCAnTGVuZ3RoIFJlcXVpcmVkJywKICAgICAgICAnQ2xpZW50IG11c3Qgc3BlY2lmeSBDb250ZW50LUxlbmd0aCcpCiAgICBQUkVDT05ESVRJT05fRkFJTEVEID0gKDQxMiwgJ1ByZWNvbmRpdGlvbiBGYWlsZWQnLAogICAgICAgICdQcmVjb25kaXRpb24gaW4gaGVhZGVycyBpcyBmYWxzZScpCiAgICBSRVFVRVNUX0VOVElUWV9UT09fTEFSR0UgPSAoNDEzLCAnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJywKICAgICAgICAnRW50aXR5IGlzIHRvbyBsYXJnZScpCiAgICBSRVFVRVNUX1VSSV9UT09fTE9ORyA9ICg0MTQsICdSZXF1ZXN0LVVSSSBUb28gTG9uZycsCiAgICAgICAgJ1VSSSBpcyB0b28gbG9uZycpCiAgICBVTlNVUFBPUlRFRF9NRURJQV9UWVBFID0gKDQxNSwgJ1Vuc3VwcG9ydGVkIE1lZGlhIFR5cGUnLAogICAgICAgICdFbnRpdHkgYm9keSBpbiB1bnN1cHBvcnRlZCBmb3JtYXQnKQogICAgUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRSA9ICg0MTYsCiAgICAgICAgJ1JlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUnLAogICAgICAgICdDYW5ub3Qgc2F0aXNmeSByZXF1ZXN0IHJhbmdlJykKICAgIEVYUEVDVEFUSU9OX0ZBSUxFRCA9ICg0MTcsICdFeHBlY3RhdGlvbiBGYWlsZWQnLAogICAgICAgICdFeHBlY3QgY29uZGl0aW9uIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQnKQogICAgSU1fQV9URUFQT1QgPSAoNDE4LCAnSVwnbSBhIFRlYXBvdCcsCiAgICAgICAgJ1NlcnZlciByZWZ1c2VzIHRvIGJyZXcgY29mZmVlIGJlY2F1c2UgaXQgaXMgYSB0ZWFwb3QuJykKICAgIE1JU0RJUkVDVEVEX1JFUVVFU1QgPSAoNDIxLCAnTWlzZGlyZWN0ZWQgUmVxdWVzdCcsCiAgICAgICAgJ1NlcnZlciBpcyBub3QgYWJsZSB0byBwcm9kdWNlIGEgcmVzcG9uc2UnKQogICAgVU5QUk9DRVNTQUJMRV9FTlRJVFkgPSA0MjIsICdVbnByb2Nlc3NhYmxlIEVudGl0eScKICAgIExPQ0tFRCA9IDQyMywgJ0xvY2tlZCcKICAgIEZBSUxFRF9ERVBFTkRFTkNZID0gNDI0LCAnRmFpbGVkIERlcGVuZGVuY3knCiAgICBUT09fRUFSTFkgPSA0MjUsICdUb28gRWFybHknCiAgICBVUEdSQURFX1JFUVVJUkVEID0gNDI2LCAnVXBncmFkZSBSZXF1aXJlZCcKICAgIFBSRUNPTkRJVElPTl9SRVFVSVJFRCA9ICg0MjgsICdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAogICAgICAgICdUaGUgb3JpZ2luIHNlcnZlciByZXF1aXJlcyB0aGUgcmVxdWVzdCB0byBiZSBjb25kaXRpb25hbCcpCiAgICBUT09fTUFOWV9SRVFVRVNUUyA9ICg0MjksICdUb28gTWFueSBSZXF1ZXN0cycsCiAgICAgICAgJ1RoZSB1c2VyIGhhcyBzZW50IHRvbyBtYW55IHJlcXVlc3RzIGluICcKICAgICAgICAnYSBnaXZlbiBhbW91bnQgb2YgdGltZSAoInJhdGUgbGltaXRpbmciKScpCiAgICBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFID0gKDQzMSwKICAgICAgICAnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsCiAgICAgICAgJ1RoZSBzZXJ2ZXIgaXMgdW53aWxsaW5nIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QgYmVjYXVzZSBpdHMgaGVhZGVyICcKICAgICAgICAnZmllbGRzIGFyZSB0b28gbGFyZ2UnKQogICAgVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMgPSAoNDUxLAogICAgICAgICdVbmF2YWlsYWJsZSBGb3IgTGVnYWwgUmVhc29ucycsCiAgICAgICAgJ1RoZSBzZXJ2ZXIgaXMgZGVueWluZyBhY2Nlc3MgdG8gdGhlICcKICAgICAgICAncmVzb3VyY2UgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGxlZ2FsIGRlbWFuZCcpCgogICAgIyBzZXJ2ZXIgZXJyb3JzCiAgICBJTlRFUk5BTF9TRVJWRVJfRVJST1IgPSAoNTAwLCAnSW50ZXJuYWwgU2VydmVyIEVycm9yJywKICAgICAgICAnU2VydmVyIGdvdCBpdHNlbGYgaW4gdHJvdWJsZScpCiAgICBOT1RfSU1QTEVNRU5URUQgPSAoNTAxLCAnTm90IEltcGxlbWVudGVkJywKICAgICAgICAnU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24nKQogICAgQkFEX0dBVEVXQVkgPSAoNTAyLCAnQmFkIEdhdGV3YXknLAogICAgICAgICdJbnZhbGlkIHJlc3BvbnNlcyBmcm9tIGFub3RoZXIgc2VydmVyL3Byb3h5JykKICAgIFNFUlZJQ0VfVU5BVkFJTEFCTEUgPSAoNTAzLCAnU2VydmljZSBVbmF2YWlsYWJsZScsCiAgICAgICAgJ1RoZSBzZXJ2ZXIgY2Fubm90IHByb2Nlc3MgdGhlIHJlcXVlc3QgZHVlIHRvIGEgaGlnaCBsb2FkJykKICAgIEdBVEVXQVlfVElNRU9VVCA9ICg1MDQsICdHYXRld2F5IFRpbWVvdXQnLAogICAgICAgICdUaGUgZ2F0ZXdheSBzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIGEgdGltZWx5IHJlc3BvbnNlJykKICAgIEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEID0gKDUwNSwgJ0hUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkJywKICAgICAgICAnQ2Fubm90IGZ1bGZpbGwgcmVxdWVzdCcpCiAgICBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUyA9IDUwNiwgJ1ZhcmlhbnQgQWxzbyBOZWdvdGlhdGVzJwogICAgSU5TVUZGSUNJRU5UX1NUT1JBR0UgPSA1MDcsICdJbnN1ZmZpY2llbnQgU3RvcmFnZScKICAgIExPT1BfREVURUNURUQgPSA1MDgsICdMb29wIERldGVjdGVkJwogICAgTk9UX0VYVEVOREVEID0gNTEwLCAnTm90IEV4dGVuZGVkJwogICAgTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9ICg1MTEsCiAgICAgICAgJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAogICAgICAgICdUaGUgY2xpZW50IG5lZWRzIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzJykKCgpAX3NpbXBsZV9lbnVtKFN0ckVudW0pCmNsYXNzIEhUVFBNZXRob2Q6CiAgICAiIiJIVFRQIG1ldGhvZHMgYW5kIGRlc2NyaXB0aW9ucwoKICAgIE1ldGhvZHMgZnJvbSB0aGUgZm9sbG93aW5nIFJGQ3MgYXJlIGFsbCBvYnNlcnZlZDoKCiAgICAgICAgKiBSRkMgNzIzMTogSHlwZXJ0ZXh0IFRyYW5zZmVyIFByb3RvY29sIChIVFRQLzEuMSksIG9ic29sZXRlcyAyNjE2CiAgICAgICAgKiBSRkMgNTc4OTogUEFUQ0ggTWV0aG9kIGZvciBIVFRQCiAgICAiIiIKICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUsIGRlc2NyaXB0aW9uKToKICAgICAgICBvYmogPSBzdHIuX19uZXdfXyhjbHMsIHZhbHVlKQogICAgICAgIG9iai5fdmFsdWVfID0gdmFsdWUKICAgICAgICBvYmouZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgogICAgICAgIHJldHVybiBvYmoKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8JXMuJXM+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbmFtZV8pCgogICAgQ09OTkVDVCA9ICdDT05ORUNUJywgJ0VzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlci4nCiAgICBERUxFVEUgPSAnREVMRVRFJywgJ1JlbW92ZSB0aGUgdGFyZ2V0LicKICAgIEdFVCA9ICdHRVQnLCAnUmV0cmlldmUgdGhlIHRhcmdldC4nCiAgICBIRUFEID0gJ0hFQUQnLCAnU2FtZSBhcyBHRVQsIGJ1dCBvbmx5IHJldHJpZXZlIHRoZSBzdGF0dXMgbGluZSBhbmQgaGVhZGVyIHNlY3Rpb24uJwogICAgT1BUSU9OUyA9ICdPUFRJT05TJywgJ0Rlc2NyaWJlIHRoZSBjb21tdW5pY2F0aW9uIG9wdGlvbnMgZm9yIHRoZSB0YXJnZXQuJwogICAgUEFUQ0ggPSAnUEFUQ0gnLCAnQXBwbHkgcGFydGlhbCBtb2RpZmljYXRpb25zIHRvIGEgdGFyZ2V0LicKICAgIFBPU1QgPSAnUE9TVCcsICdQZXJmb3JtIHRhcmdldC1zcGVjaWZpYyBwcm9jZXNzaW5nIHdpdGggdGhlIHJlcXVlc3QgcGF5bG9hZC4nCiAgICBQVVQgPSAnUFVUJywgJ1JlcGxhY2UgdGhlIHRhcmdldCB3aXRoIHRoZSByZXF1ZXN0IHBheWxvYWQuJwogICAgVFJBQ0UgPSAnVFJBQ0UnLCAnUGVyZm9ybSBhIG1lc3NhZ2UgbG9vcC1iYWNrIHRlc3QgYWxvbmcgdGhlIHBhdGggdG8gdGhlIHRhcmdldC4nClBLAwQUAAAAAAADIKNWiM7t353dAACd3QAADgAAAGh0dHAvY2xpZW50LnB5ciIiIkhUVFAvMS4xIGNsaWVudCBsaWJyYXJ5Cgo8aW50cm8gc3R1ZmYgZ29lcyBoZXJlPgo8b3RoZXIgc3R1ZmYsIHRvbz4KCkhUVFBDb25uZWN0aW9uIGdvZXMgdGhyb3VnaCBhIG51bWJlciBvZiAic3RhdGVzIiwgd2hpY2ggZGVmaW5lIHdoZW4gYSBjbGllbnQKbWF5IGxlZ2FsbHkgbWFrZSBhbm90aGVyIHJlcXVlc3Qgb3IgZmV0Y2ggdGhlIHJlc3BvbnNlIGZvciBhIHBhcnRpY3VsYXIKcmVxdWVzdC4gVGhpcyBkaWFncmFtIGRldGFpbHMgdGhlc2Ugc3RhdGUgdHJhbnNpdGlvbnM6CgogICAgKG51bGwpCiAgICAgIHwKICAgICAgfCBIVFRQQ29ubmVjdGlvbigpCiAgICAgIHYKICAgIElkbGUKICAgICAgfAogICAgICB8IHB1dHJlcXVlc3QoKQogICAgICB2CiAgICBSZXF1ZXN0LXN0YXJ0ZWQKICAgICAgfAogICAgICB8ICggcHV0aGVhZGVyKCkgKSogIGVuZGhlYWRlcnMoKQogICAgICB2CiAgICBSZXF1ZXN0LXNlbnQKICAgICAgfFxfX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRyZXNwb25zZSgpIHJhaXNlcwogICAgICB8IHJlc3BvbnNlID0gZ2V0cmVzcG9uc2UoKSAgICAgfCBDb25uZWN0aW9uRXJyb3IKICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKICAgIFVucmVhZC1yZXNwb25zZSAgICAgICAgICAgICAgICBJZGxlCiAgICBbUmVzcG9uc2UtaGVhZGVycy1yZWFkXQogICAgICB8XF9fX19fX19fX19fX19fX19fX19fCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CiAgICAgIHwgcmVzcG9uc2UucmVhZCgpICAgICB8IHB1dHJlcXVlc3QoKQogICAgICB2ICAgICAgICAgICAgICAgICAgICAgdgogICAgSWRsZSAgICAgICAgICAgICAgICAgIFJlcS1zdGFydGVkLXVucmVhZC1yZXNwb25zZQogICAgICAgICAgICAgICAgICAgICBfX19fX18vfAogICAgICAgICAgICAgICAgICAgLyAgICAgICAgfAogICByZXNwb25zZS5yZWFkKCkgfCAgICAgICAgfCAoIHB1dGhlYWRlcigpICkqICBlbmRoZWFkZXJzKCkKICAgICAgICAgICAgICAgICAgIHYgICAgICAgIHYKICAgICAgIFJlcXVlc3Qtc3RhcnRlZCAgICBSZXEtc2VudC11bnJlYWQtcmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVzcG9uc2UucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWVzdC1zZW50CgpUaGlzIGRpYWdyYW0gcHJlc2VudHMgdGhlIGZvbGxvd2luZyBydWxlczoKICAtLSBhIHNlY29uZCByZXF1ZXN0IG1heSBub3QgYmUgc3RhcnRlZCB1bnRpbCB7cmVzcG9uc2UtaGVhZGVycy1yZWFkfQogIC0tIGEgcmVzcG9uc2UgW29iamVjdF0gY2Fubm90IGJlIHJldHJpZXZlZCB1bnRpbCB7cmVxdWVzdC1zZW50fQogIC0tIHRoZXJlIGlzIG5vIGRpZmZlcmVudGlhdGlvbiBiZXR3ZWVuIGFuIHVucmVhZCByZXNwb25zZSBib2R5IGFuZCBhCiAgICAgcGFydGlhbGx5IHJlYWQgcmVzcG9uc2UgYm9keQoKTm90ZTogdGhpcyBlbmZvcmNlbWVudCBpcyBhcHBsaWVkIGJ5IHRoZSBIVFRQQ29ubmVjdGlvbiBjbGFzcy4gVGhlCiAgICAgIEhUVFBSZXNwb25zZSBjbGFzcyBkb2VzIG5vdCBlbmZvcmNlIHRoaXMgc3RhdGUgbWFjaGluZSwgd2hpY2gKICAgICAgaW1wbGllcyBzb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IGFjY2VsZXJhdGUgdGhlIHJlcXVlc3QvcmVzcG9uc2UKICAgICAgcGlwZWxpbmUuIENhdXRpb24gc2hvdWxkIGJlIHRha2VuLCB0aG91Z2g6IGFjY2VsZXJhdGluZyB0aGUgc3RhdGVzCiAgICAgIGJleW9uZCB0aGUgYWJvdmUgcGF0dGVybiBtYXkgaW1wbHkga25vd2xlZGdlIG9mIHRoZSBzZXJ2ZXIncwogICAgICBjb25uZWN0aW9uLWNsb3NlIGJlaGF2aW9yIGZvciBjZXJ0YWluIHJlcXVlc3RzLiBGb3IgZXhhbXBsZSwgaXQKICAgICAgaXMgaW1wb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIHNlcnZlciB3aWxsIGNsb3NlIHRoZSBjb25uZWN0aW9uCiAgICAgIFVOVElMIHRoZSByZXNwb25zZSBoZWFkZXJzIGhhdmUgYmVlbiByZWFkOyB0aGlzIG1lYW5zIHRoYXQgZnVydGhlcgogICAgICByZXF1ZXN0cyBjYW5ub3QgYmUgcGxhY2VkIGludG8gdGhlIHBpcGVsaW5lIHVudGlsIGl0IGlzIGtub3duIHRoYXQKICAgICAgdGhlIHNlcnZlciB3aWxsIE5PVCBiZSBjbG9zaW5nIHRoZSBjb25uZWN0aW9uLgoKTG9naWNhbCBTdGF0ZSAgICAgICAgICAgICAgICAgIF9fc3RhdGUgICAgICAgICAgICBfX3Jlc3BvbnNlCi0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAtLS0tLS0tICAgICAgICAgICAgLS0tLS0tLS0tLQpJZGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NTX0lETEUgICAgICAgICAgIE5vbmUKUmVxdWVzdC1zdGFydGVkICAgICAgICAgICAgICAgIF9DU19SRVFfU1RBUlRFRCAgICBOb25lClJlcXVlc3Qtc2VudCAgICAgICAgICAgICAgICAgICBfQ1NfUkVRX1NFTlQgICAgICAgTm9uZQpVbnJlYWQtcmVzcG9uc2UgICAgICAgICAgICAgICAgX0NTX0lETEUgICAgICAgICAgIDxyZXNwb25zZV9jbGFzcz4KUmVxLXN0YXJ0ZWQtdW5yZWFkLXJlc3BvbnNlICAgIF9DU19SRVFfU1RBUlRFRCAgICA8cmVzcG9uc2VfY2xhc3M+ClJlcS1zZW50LXVucmVhZC1yZXNwb25zZSAgICAgICBfQ1NfUkVRX1NFTlQgICAgICAgPHJlc3BvbnNlX2NsYXNzPgoiIiIKCmltcG9ydCBlbWFpbC5wYXJzZXIKaW1wb3J0IGVtYWlsLm1lc3NhZ2UKaW1wb3J0IGVycm5vCmltcG9ydCBodHRwCmltcG9ydCBpbwppbXBvcnQgcmUKaW1wb3J0IHNvY2tldAppbXBvcnQgc3lzCmltcG9ydCBjb2xsZWN0aW9ucy5hYmMKZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHNwbGl0CgojIEhUVFBNZXNzYWdlLCBwYXJzZV9oZWFkZXJzKCksIGFuZCB0aGUgSFRUUCBzdGF0dXMgY29kZSBjb25zdGFudHMgYXJlCiMgaW50ZW50aW9uYWxseSBvbWl0dGVkIGZvciBzaW1wbGljaXR5Cl9fYWxsX18gPSBbIkhUVFBSZXNwb25zZSIsICJIVFRQQ29ubmVjdGlvbiIsCiAgICAgICAgICAgIkhUVFBFeGNlcHRpb24iLCAiTm90Q29ubmVjdGVkIiwgIlVua25vd25Qcm90b2NvbCIsCiAgICAgICAgICAgIlVua25vd25UcmFuc2ZlckVuY29kaW5nIiwgIlVuaW1wbGVtZW50ZWRGaWxlTW9kZSIsCiAgICAgICAgICAgIkluY29tcGxldGVSZWFkIiwgIkludmFsaWRVUkwiLCAiSW1wcm9wZXJDb25uZWN0aW9uU3RhdGUiLAogICAgICAgICAgICJDYW5ub3RTZW5kUmVxdWVzdCIsICJDYW5ub3RTZW5kSGVhZGVyIiwgIlJlc3BvbnNlTm90UmVhZHkiLAogICAgICAgICAgICJCYWRTdGF0dXNMaW5lIiwgIkxpbmVUb29Mb25nIiwgIlJlbW90ZURpc2Nvbm5lY3RlZCIsICJlcnJvciIsCiAgICAgICAgICAgInJlc3BvbnNlcyJdCgpIVFRQX1BPUlQgPSA4MApIVFRQU19QT1JUID0gNDQzCgpfVU5LTk9XTiA9ICdVTktOT1dOJwoKIyBjb25uZWN0aW9uIHN0YXRlcwpfQ1NfSURMRSA9ICdJZGxlJwpfQ1NfUkVRX1NUQVJURUQgPSAnUmVxdWVzdC1zdGFydGVkJwpfQ1NfUkVRX1NFTlQgPSAnUmVxdWVzdC1zZW50JwoKCiMgaGFjayB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQpnbG9iYWxzKCkudXBkYXRlKGh0dHAuSFRUUFN0YXR1cy5fX21lbWJlcnNfXykKCiMgYW5vdGhlciBoYWNrIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiMgTWFwcGluZyBzdGF0dXMgY29kZXMgdG8gb2ZmaWNpYWwgVzNDIG5hbWVzCnJlc3BvbnNlcyA9IHt2OiB2LnBocmFzZSBmb3IgdiBpbiBodHRwLkhUVFBTdGF0dXMuX19tZW1iZXJzX18udmFsdWVzKCl9CgojIG1heGltYWwgbGluZSBsZW5ndGggd2hlbiBjYWxsaW5nIHJlYWRsaW5lKCkuCl9NQVhMSU5FID0gNjU1MzYKX01BWEhFQURFUlMgPSAxMDAKCiMgSGVhZGVyIG5hbWUvdmFsdWUgQUJORiAoaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMikKIwojIFZDSEFSICAgICAgICAgID0gJXgyMS03RQojIG9icy10ZXh0ICAgICAgID0gJXg4MC1GRgojIGhlYWRlci1maWVsZCAgID0gZmllbGQtbmFtZSAiOiIgT1dTIGZpZWxkLXZhbHVlIE9XUwojIGZpZWxkLW5hbWUgICAgID0gdG9rZW4KIyBmaWVsZC12YWx1ZSAgICA9ICooIGZpZWxkLWNvbnRlbnQgLyBvYnMtZm9sZCApCiMgZmllbGQtY29udGVudCAgPSBmaWVsZC12Y2hhciBbIDEqKCBTUCAvIEhUQUIgKSBmaWVsZC12Y2hhciBdCiMgZmllbGQtdmNoYXIgICAgPSBWQ0hBUiAvIG9icy10ZXh0CiMKIyBvYnMtZm9sZCAgICAgICA9IENSTEYgMSooIFNQIC8gSFRBQiApCiMgICAgICAgICAgICAgICAgOyBvYnNvbGV0ZSBsaW5lIGZvbGRpbmcKIyAgICAgICAgICAgICAgICA7IHNlZSBTZWN0aW9uIDMuMi40CgojIHRva2VuICAgICAgICAgID0gMSp0Y2hhcgojCiMgdGNoYXIgICAgICAgICAgPSAiISIgLyAiIyIgLyAiJCIgLyAiJSIgLyAiJiIgLyAiJyIgLyAiKiIKIyAgICAgICAgICAgICAgICAvICIrIiAvICItIiAvICIuIiAvICJeIiAvICJfIiAvICJgIiAvICJ8IiAvICJ+IgojICAgICAgICAgICAgICAgIC8gRElHSVQgLyBBTFBIQQojICAgICAgICAgICAgICAgIDsgYW55IFZDSEFSLCBleGNlcHQgZGVsaW1pdGVycwojCiMgVkNIQVIgZGVmaW5lZCBpbiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MjM0I2FwcGVuZGl4LUIuMQoKIyB0aGUgcGF0dGVybnMgZm9yIGJvdGggbmFtZSBhbmQgdmFsdWUgYXJlIG1vcmUgbGVuaWVudCB0aGFuIFJGQwojIGRlZmluaXRpb25zIHRvIGFsbG93IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQpfaXNfbGVnYWxfaGVhZGVyX25hbWUgPSByZS5jb21waWxlKHJiJ1teOlxzXVteOlxyXG5dKicpLmZ1bGxtYXRjaApfaXNfaWxsZWdhbF9oZWFkZXJfdmFsdWUgPSByZS5jb21waWxlKHJiJ1xuKD8hWyBcdF0pfFxyKD8hWyBcdFxuXSknKS5zZWFyY2gKCiMgVGhlc2UgY2hhcmFjdGVycyBhcmUgbm90IGFsbG93ZWQgd2l0aGluIEhUVFAgVVJMIHBhdGhzLgojICBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjMgYW5kIHRoZQojICBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNhcHBlbmRpeC1BIHBjaGFyIGRlZmluaXRpb24uCiMgUHJldmVudHMgQ1ZFLTIwMTktOTc0MC4gIEluY2x1ZGVzIGNvbnRyb2wgY2hhcmFjdGVycyBzdWNoIGFzIFxyXG4uCiMgV2UgZG9uJ3QgcmVzdHJpY3QgY2hhcnMgYWJvdmUgXHg3ZiBhcyBwdXRyZXF1ZXN0KCkgbGltaXRzIHVzIHRvIEFTQ0lJLgpfY29udGFpbnNfZGlzYWxsb3dlZF91cmxfcGNoYXJfcmUgPSByZS5jb21waWxlKCdbXHgwMC1ceDIwXHg3Zl0nKQojIEFyZ3VhYmx5IG9ubHkgdGhlc2UgX3Nob3VsZF8gYWxsb3dlZDoKIyAgX2lzX2FsbG93ZWRfdXJsX3BjaGFyc19yZSA9IHJlLmNvbXBpbGUociJeWy8hJCYnKCkqKyw7PTpAJWEtekEtWjAtOS5ffi1dKyQiKQojIFdlIGFyZSBtb3JlIGxlbmllbnQgZm9yIGFzc3VtZWQgcmVhbCB3b3JsZCBjb21wYXRpYmlsaXR5IHB1cnBvc2VzLgoKIyBUaGVzZSBjaGFyYWN0ZXJzIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gSFRUUCBtZXRob2QgbmFtZXMKIyB0byBwcmV2ZW50IGh0dHAgaGVhZGVyIGluamVjdGlvbi4KX2NvbnRhaW5zX2Rpc2FsbG93ZWRfbWV0aG9kX3BjaGFyX3JlID0gcmUuY29tcGlsZSgnW1x4MDAtXHgxZl0nKQoKIyBXZSBhbHdheXMgc2V0IHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgZm9yIHRoZXNlIG1ldGhvZHMgYmVjYXVzZSBzb21lCiMgc2VydmVycyB3aWxsIG90aGVyd2lzZSByZXNwb25kIHdpdGggYSA0MTEKX01FVEhPRFNfRVhQRUNUSU5HX0JPRFkgPSB7J1BBVENIJywgJ1BPU1QnLCAnUFVUJ30KCgpkZWYgX2VuY29kZShkYXRhLCBuYW1lPSdkYXRhJyk6CiAgICAiIiJDYWxsIGRhdGEuZW5jb2RlKCJsYXRpbi0xIikgYnV0IHNob3cgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZS4iIiIKICAgIHRyeToKICAgICAgICByZXR1cm4gZGF0YS5lbmNvZGUoImxhdGluLTEiKQogICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvciBhcyBlcnI6CiAgICAgICAgcmFpc2UgVW5pY29kZUVuY29kZUVycm9yKAogICAgICAgICAgICBlcnIuZW5jb2RpbmcsCiAgICAgICAgICAgIGVyci5vYmplY3QsCiAgICAgICAgICAgIGVyci5zdGFydCwKICAgICAgICAgICAgZXJyLmVuZCwKICAgICAgICAgICAgIiVzICglLjIwcikgaXMgbm90IHZhbGlkIExhdGluLTEuIFVzZSAlcy5lbmNvZGUoJ3V0Zi04JykgIgogICAgICAgICAgICAiaWYgeW91IHdhbnQgdG8gc2VuZCBpdCBlbmNvZGVkIGluIFVURi04LiIgJQogICAgICAgICAgICAobmFtZS50aXRsZSgpLCBkYXRhW2Vyci5zdGFydDplcnIuZW5kXSwgbmFtZSkpIGZyb20gTm9uZQoKCmNsYXNzIEhUVFBNZXNzYWdlKGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSk6CiAgICAjIFhYWCBUaGUgb25seSB1c2FnZSBvZiB0aGlzIG1ldGhvZCBpcyBpbgogICAgIyBodHRwLnNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIuICBNYXliZSBtb3ZlIHRoZSBjb2RlIHRoZXJlIHNvCiAgICAjIHRoYXQgaXQgZG9lc24ndCBuZWVkIHRvIGJlIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuICBUaGUgQVBJIGhhcwogICAgIyBuZXZlciBiZWVuIGRlZmluZWQgc28gdGhpcyBjb3VsZCBjYXVzZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogICAgIyBpc3N1ZXMuCgogICAgZGVmIGdldGFsbG1hdGNoaW5naGVhZGVycyhzZWxmLCBuYW1lKToKICAgICAgICAiIiJGaW5kIGFsbCBoZWFkZXIgbGluZXMgbWF0Y2hpbmcgYSBnaXZlbiBoZWFkZXIgbmFtZS4KCiAgICAgICAgTG9vayB0aHJvdWdoIHRoZSBsaXN0IG9mIGhlYWRlcnMgYW5kIGZpbmQgYWxsIGxpbmVzIG1hdGNoaW5nIGEgZ2l2ZW4KICAgICAgICBoZWFkZXIgbmFtZSAoYW5kIHRoZWlyIGNvbnRpbnVhdGlvbiBsaW5lcykuICBBIGxpc3Qgb2YgdGhlIGxpbmVzIGlzCiAgICAgICAgcmV0dXJuZWQsIHdpdGhvdXQgaW50ZXJwcmV0YXRpb24uICBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IG9jY3VyLCBhbgogICAgICAgIGVtcHR5IGxpc3QgaXMgcmV0dXJuZWQuICBJZiB0aGUgaGVhZGVyIG9jY3VycyBtdWx0aXBsZSB0aW1lcywgYWxsCiAgICAgICAgb2NjdXJyZW5jZXMgYXJlIHJldHVybmVkLiAgQ2FzZSBpcyBub3QgaW1wb3J0YW50IGluIHRoZSBoZWFkZXIgbmFtZS4KCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKSArICc6JwogICAgICAgIG4gPSBsZW4obmFtZSkKICAgICAgICBsc3QgPSBbXQogICAgICAgIGhpdCA9IDAKICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmtleXMoKToKICAgICAgICAgICAgaWYgbGluZVs6bl0ubG93ZXIoKSA9PSBuYW1lOgogICAgICAgICAgICAgICAgaGl0ID0gMQogICAgICAgICAgICBlbGlmIG5vdCBsaW5lWzoxXS5pc3NwYWNlKCk6CiAgICAgICAgICAgICAgICBoaXQgPSAwCiAgICAgICAgICAgIGlmIGhpdDoKICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQobGluZSkKICAgICAgICByZXR1cm4gbHN0CgpkZWYgX3JlYWRfaGVhZGVycyhmcCk6CiAgICAiIiJSZWFkcyBwb3RlbnRpYWwgaGVhZGVyIGxpbmVzIGludG8gYSBsaXN0IGZyb20gYSBmaWxlIHBvaW50ZXIuCgogICAgTGVuZ3RoIG9mIGxpbmUgaXMgbGltaXRlZCBieSBfTUFYTElORSwgYW5kIG51bWJlciBvZgogICAgaGVhZGVycyBpcyBsaW1pdGVkIGJ5IF9NQVhIRUFERVJTLgogICAgIiIiCiAgICBoZWFkZXJzID0gW10KICAgIHdoaWxlIFRydWU6CiAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKF9NQVhMSU5FICsgMSkKICAgICAgICBpZiBsZW4obGluZSkgPiBfTUFYTElORToKICAgICAgICAgICAgcmFpc2UgTGluZVRvb0xvbmcoImhlYWRlciBsaW5lIikKICAgICAgICBoZWFkZXJzLmFwcGVuZChsaW5lKQogICAgICAgIGlmIGxlbihoZWFkZXJzKSA+IF9NQVhIRUFERVJTOgogICAgICAgICAgICByYWlzZSBIVFRQRXhjZXB0aW9uKCJnb3QgbW9yZSB0aGFuICVkIGhlYWRlcnMiICUgX01BWEhFQURFUlMpCiAgICAgICAgaWYgbGluZSBpbiAoYidcclxuJywgYidcbicsIGInJyk6CiAgICAgICAgICAgIGJyZWFrCiAgICByZXR1cm4gaGVhZGVycwoKZGVmIHBhcnNlX2hlYWRlcnMoZnAsIF9jbGFzcz1IVFRQTWVzc2FnZSk6CiAgICAiIiJQYXJzZXMgb25seSBSRkMyODIyIGhlYWRlcnMgZnJvbSBhIGZpbGUgcG9pbnRlci4KCiAgICBlbWFpbCBQYXJzZXIgd2FudHMgdG8gc2VlIHN0cmluZ3MgcmF0aGVyIHRoYW4gYnl0ZXMuCiAgICBCdXQgYSBUZXh0SU9XcmFwcGVyIGFyb3VuZCBzZWxmLnJmaWxlIHdvdWxkIGJ1ZmZlciB0b28gbWFueSBieXRlcwogICAgZnJvbSB0aGUgc3RyZWFtLCBieXRlcyB3aGljaCB3ZSBsYXRlciBuZWVkIHRvIHJlYWQgYXMgYnl0ZXMuCiAgICBTbyB3ZSByZWFkIHRoZSBjb3JyZWN0IGJ5dGVzIGhlcmUsIGFzIGJ5dGVzLCBmb3IgZW1haWwgUGFyc2VyCiAgICB0byBwYXJzZS4KCiAgICAiIiIKICAgIGhlYWRlcnMgPSBfcmVhZF9oZWFkZXJzKGZwKQogICAgaHN0cmluZyA9IGInJy5qb2luKGhlYWRlcnMpLmRlY29kZSgnaXNvLTg4NTktMScpCiAgICByZXR1cm4gZW1haWwucGFyc2VyLlBhcnNlcihfY2xhc3M9X2NsYXNzKS5wYXJzZXN0cihoc3RyaW5nKQoKCmNsYXNzIEhUVFBSZXNwb25zZShpby5CdWZmZXJlZElPQmFzZSk6CgogICAgIyBTZWUgUkZDIDI2MTYgc2VjIDE5LjYgYW5kIFJGQyAxOTQ1IHNlYyA2IGZvciBkZXRhaWxzLgoKICAgICMgVGhlIGJ5dGVzIGZyb20gdGhlIHNvY2tldCBvYmplY3QgYXJlIGlzby04ODU5LTEgc3RyaW5ncy4KICAgICMgU2VlIFJGQyAyNjE2IHNlYyAyLjIgd2hpY2ggbm90ZXMgYW4gZXhjZXB0aW9uIGZvciBNSU1FLWVuY29kZWQKICAgICMgdGV4dCBmb2xsb3dpbmcgUkZDIDIwNDcuICBUaGUgYmFzaWMgc3RhdHVzIGxpbmUgcGFyc2luZyBvbmx5CiAgICAjIGFjY2VwdHMgaXNvLTg4NTktMS4KCiAgICBkZWYgX19pbml0X18oc2VsZiwgc29jaywgZGVidWdsZXZlbD0wLCBtZXRob2Q9Tm9uZSwgdXJsPU5vbmUpOgogICAgICAgICMgSWYgdGhlIHJlc3BvbnNlIGluY2x1ZGVzIGEgY29udGVudC1sZW5ndGggaGVhZGVyLCB3ZSBuZWVkIHRvCiAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgY2xpZW50IGRvZXNuJ3QgcmVhZCBtb3JlIHRoYW4gdGhlCiAgICAgICAgIyBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ5dGVzLiAgSWYgaXQgZG9lcywgaXQgd2lsbCBibG9jayB1bnRpbAogICAgICAgICMgdGhlIHNlcnZlciB0aW1lcyBvdXQgYW5kIGNsb3NlcyB0aGUgY29ubmVjdGlvbi4gIFRoaXMgd2lsbAogICAgICAgICMgaGFwcGVuIGlmIGEgc2VsZi5mcC5yZWFkKCkgaXMgZG9uZSAod2l0aG91dCBhIHNpemUpIHdoZXRoZXIKICAgICAgICAjIHNlbGYuZnAgaXMgYnVmZmVyZWQgb3Igbm90LiAgU28sIG5vIHNlbGYuZnAucmVhZCgpIGJ5CiAgICAgICAgIyBjbGllbnRzIHVubGVzcyB0aGV5IGtub3cgd2hhdCB0aGV5IGFyZSBkb2luZy4KICAgICAgICBzZWxmLmZwID0gc29jay5tYWtlZmlsZSgicmIiKQogICAgICAgIHNlbGYuZGVidWdsZXZlbCA9IGRlYnVnbGV2ZWwKICAgICAgICBzZWxmLl9tZXRob2QgPSBtZXRob2QKCiAgICAgICAgIyBUaGUgSFRUUFJlc3BvbnNlIG9iamVjdCBpcyByZXR1cm5lZCB2aWEgdXJsbGliLiAgVGhlIGNsaWVudHMKICAgICAgICAjIG9mIGh0dHAgYW5kIHVybGxpYiBleHBlY3QgZGlmZmVyZW50IGF0dHJpYnV0ZXMgZm9yIHRoZQogICAgICAgICMgaGVhZGVycy4gIGhlYWRlcnMgaXMgdXNlZCBoZXJlIGFuZCBzdXBwb3J0cyB1cmxsaWIuICBtc2cgaXMKICAgICAgICAjIHByb3ZpZGVkIGFzIGEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgbGF5ZXIgZm9yIGh0dHAKICAgICAgICAjIGNsaWVudHMuCgogICAgICAgIHNlbGYuaGVhZGVycyA9IHNlbGYubXNnID0gTm9uZQoKICAgICAgICAjIGZyb20gdGhlIFN0YXR1cy1MaW5lIG9mIHRoZSByZXNwb25zZQogICAgICAgIHNlbGYudmVyc2lvbiA9IF9VTktOT1dOICMgSFRUUC1WZXJzaW9uCiAgICAgICAgc2VsZi5zdGF0dXMgPSBfVU5LTk9XTiAgIyBTdGF0dXMtQ29kZQogICAgICAgIHNlbGYucmVhc29uID0gX1VOS05PV04gICMgUmVhc29uLVBocmFzZQoKICAgICAgICBzZWxmLmNodW5rZWQgPSBfVU5LTk9XTiAgICAgICAgICMgaXMgImNodW5rZWQiIGJlaW5nIHVzZWQ/CiAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gX1VOS05PV04gICAgICAjIGJ5dGVzIGxlZnQgdG8gcmVhZCBpbiBjdXJyZW50IGNodW5rCiAgICAgICAgc2VsZi5sZW5ndGggPSBfVU5LTk9XTiAgICAgICAgICAjIG51bWJlciBvZiBieXRlcyBsZWZ0IGluIHJlc3BvbnNlCiAgICAgICAgc2VsZi53aWxsX2Nsb3NlID0gX1VOS05PV04gICAgICAjIGNvbm4gd2lsbCBjbG9zZSBhdCBlbmQgb2YgcmVzcG9uc2UKCiAgICBkZWYgX3JlYWRfc3RhdHVzKHNlbGYpOgogICAgICAgIGxpbmUgPSBzdHIoc2VsZi5mcC5yZWFkbGluZShfTUFYTElORSArIDEpLCAiaXNvLTg4NTktMSIpCiAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CiAgICAgICAgICAgIHJhaXNlIExpbmVUb29Mb25nKCJzdGF0dXMgbGluZSIpCiAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgcHJpbnQoInJlcGx5OiIsIHJlcHIobGluZSkpCiAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICMgUHJlc3VtYWJseSwgdGhlIHNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gYmVmb3JlCiAgICAgICAgICAgICMgc2VuZGluZyBhIHZhbGlkIHJlc3BvbnNlLgogICAgICAgICAgICByYWlzZSBSZW1vdGVEaXNjb25uZWN0ZWQoIlJlbW90ZSBlbmQgY2xvc2VkIGNvbm5lY3Rpb24gd2l0aG91dCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVzcG9uc2UiKQogICAgICAgIHRyeToKICAgICAgICAgICAgdmVyc2lvbiwgc3RhdHVzLCByZWFzb24gPSBsaW5lLnNwbGl0KE5vbmUsIDIpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHZlcnNpb24sIHN0YXR1cyA9IGxpbmUuc3BsaXQoTm9uZSwgMSkKICAgICAgICAgICAgICAgIHJlYXNvbiA9ICIiCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIyBlbXB0eSB2ZXJzaW9uIHdpbGwgY2F1c2UgbmV4dCB0ZXN0IHRvIGZhaWwuCiAgICAgICAgICAgICAgICB2ZXJzaW9uID0gIiIKICAgICAgICBpZiBub3QgdmVyc2lvbi5zdGFydHN3aXRoKCJIVFRQLyIpOgogICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKICAgICAgICAgICAgcmFpc2UgQmFkU3RhdHVzTGluZShsaW5lKQoKICAgICAgICAjIFRoZSBzdGF0dXMgY29kZSBpcyBhIHRocmVlLWRpZ2l0IG51bWJlcgogICAgICAgIHRyeToKICAgICAgICAgICAgc3RhdHVzID0gaW50KHN0YXR1cykKICAgICAgICAgICAgaWYgc3RhdHVzIDwgMTAwIG9yIHN0YXR1cyA+IDk5OToKICAgICAgICAgICAgICAgIHJhaXNlIEJhZFN0YXR1c0xpbmUobGluZSkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgQmFkU3RhdHVzTGluZShsaW5lKQogICAgICAgIHJldHVybiB2ZXJzaW9uLCBzdGF0dXMsIHJlYXNvbgoKICAgIGRlZiBiZWdpbihzZWxmKToKICAgICAgICBpZiBzZWxmLmhlYWRlcnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgd2UndmUgYWxyZWFkeSBzdGFydGVkIHJlYWRpbmcgdGhlIHJlc3BvbnNlCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIHJlYWQgdW50aWwgd2UgZ2V0IGEgbm9uLTEwMCByZXNwb25zZQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIHZlcnNpb24sIHN0YXR1cywgcmVhc29uID0gc2VsZi5fcmVhZF9zdGF0dXMoKQogICAgICAgICAgICBpZiBzdGF0dXMgIT0gQ09OVElOVUU6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAjIHNraXAgdGhlIGhlYWRlciBmcm9tIHRoZSAxMDAgcmVzcG9uc2UKICAgICAgICAgICAgc2tpcHBlZF9oZWFkZXJzID0gX3JlYWRfaGVhZGVycyhzZWxmLmZwKQogICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgcHJpbnQoImhlYWRlcnM6Iiwgc2tpcHBlZF9oZWFkZXJzKQogICAgICAgICAgICBkZWwgc2tpcHBlZF9oZWFkZXJzCgogICAgICAgIHNlbGYuY29kZSA9IHNlbGYuc3RhdHVzID0gc3RhdHVzCiAgICAgICAgc2VsZi5yZWFzb24gPSByZWFzb24uc3RyaXAoKQogICAgICAgIGlmIHZlcnNpb24gaW4gKCJIVFRQLzEuMCIsICJIVFRQLzAuOSIpOgogICAgICAgICAgICAjIFNvbWUgc2VydmVycyBtaWdodCBzdGlsbCByZXR1cm4gIjAuOSIsIHRyZWF0IGl0IGFzIDEuMCBhbnl3YXkKICAgICAgICAgICAgc2VsZi52ZXJzaW9uID0gMTAKICAgICAgICBlbGlmIHZlcnNpb24uc3RhcnRzd2l0aCgiSFRUUC8xLiIpOgogICAgICAgICAgICBzZWxmLnZlcnNpb24gPSAxMSAgICMgdXNlIEhUVFAvMS4xIGNvZGUgZm9yIEhUVFAvMS54IHdoZXJlIHg+PTEKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBVbmtub3duUHJvdG9jb2wodmVyc2lvbikKCiAgICAgICAgc2VsZi5oZWFkZXJzID0gc2VsZi5tc2cgPSBwYXJzZV9oZWFkZXJzKHNlbGYuZnApCgogICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgIGZvciBoZHIsIHZhbCBpbiBzZWxmLmhlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAgICAgIHByaW50KCJoZWFkZXI6IiwgaGRyICsgIjoiLCB2YWwpCgogICAgICAgICMgYXJlIHdlIHVzaW5nIHRoZSBjaHVua2VkLXN0eWxlIG9mIHRyYW5zZmVyIGVuY29kaW5nPwogICAgICAgIHRyX2VuYyA9IHNlbGYuaGVhZGVycy5nZXQoInRyYW5zZmVyLWVuY29kaW5nIikKICAgICAgICBpZiB0cl9lbmMgYW5kIHRyX2VuYy5sb3dlcigpID09ICJjaHVua2VkIjoKICAgICAgICAgICAgc2VsZi5jaHVua2VkID0gVHJ1ZQogICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5jaHVua2VkID0gRmFsc2UKCiAgICAgICAgIyB3aWxsIHRoZSBjb25uZWN0aW9uIGNsb3NlIGF0IHRoZSBlbmQgb2YgdGhlIHJlc3BvbnNlPwogICAgICAgIHNlbGYud2lsbF9jbG9zZSA9IHNlbGYuX2NoZWNrX2Nsb3NlKCkKCiAgICAgICAgIyBkbyB3ZSBoYXZlIGEgQ29udGVudC1MZW5ndGg/CiAgICAgICAgIyBOT1RFOiBSRkMgMjYxNiwgUzQuNCwgIzMgc2F5cyB3ZSBpZ25vcmUgdGhpcyBpZiB0cl9lbmMgaXMgImNodW5rZWQiCiAgICAgICAgc2VsZi5sZW5ndGggPSBOb25lCiAgICAgICAgbGVuZ3RoID0gc2VsZi5oZWFkZXJzLmdldCgiY29udGVudC1sZW5ndGgiKQogICAgICAgIGlmIGxlbmd0aCBhbmQgbm90IHNlbGYuY2h1bmtlZDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5sZW5ndGggPSBpbnQobGVuZ3RoKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHNlbGYubGVuZ3RoID0gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgc2VsZi5sZW5ndGggPCAwOiAgIyBpZ25vcmUgbm9uc2Vuc2ljYWwgbmVnYXRpdmUgbGVuZ3RocwogICAgICAgICAgICAgICAgICAgIHNlbGYubGVuZ3RoID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYubGVuZ3RoID0gTm9uZQoKICAgICAgICAjIGRvZXMgdGhlIGJvZHkgaGF2ZSBhIGZpeGVkIGxlbmd0aD8gKG9mIHplcm8pCiAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19DT05URU5UIG9yIHN0YXR1cyA9PSBOT1RfTU9ESUZJRUQgb3IKICAgICAgICAgICAgMTAwIDw9IHN0YXR1cyA8IDIwMCBvciAgICAgICMgMXh4IGNvZGVzCiAgICAgICAgICAgIHNlbGYuX21ldGhvZCA9PSAiSEVBRCIpOgogICAgICAgICAgICBzZWxmLmxlbmd0aCA9IDAKCiAgICAgICAgIyBpZiB0aGUgY29ubmVjdGlvbiByZW1haW5zIG9wZW4sIGFuZCB3ZSBhcmVuJ3QgdXNpbmcgY2h1bmtlZCwgYW5kCiAgICAgICAgIyBhIGNvbnRlbnQtbGVuZ3RoIHdhcyBub3QgcHJvdmlkZWQsIHRoZW4gYXNzdW1lIHRoYXQgdGhlIGNvbm5lY3Rpb24KICAgICAgICAjIFdJTEwgY2xvc2UuCiAgICAgICAgaWYgKG5vdCBzZWxmLndpbGxfY2xvc2UgYW5kCiAgICAgICAgICAgIG5vdCBzZWxmLmNodW5rZWQgYW5kCiAgICAgICAgICAgIHNlbGYubGVuZ3RoIGlzIE5vbmUpOgogICAgICAgICAgICBzZWxmLndpbGxfY2xvc2UgPSBUcnVlCgogICAgZGVmIF9jaGVja19jbG9zZShzZWxmKToKICAgICAgICBjb25uID0gc2VsZi5oZWFkZXJzLmdldCgiY29ubmVjdGlvbiIpCiAgICAgICAgaWYgc2VsZi52ZXJzaW9uID09IDExOgogICAgICAgICAgICAjIEFuIEhUVFAvMS4xIHByb3h5IGlzIGFzc3VtZWQgdG8gc3RheSBvcGVuIHVubGVzcwogICAgICAgICAgICAjIGV4cGxpY2l0bHkgY2xvc2VkLgogICAgICAgICAgICBpZiBjb25uIGFuZCAiY2xvc2UiIGluIGNvbm4ubG93ZXIoKToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICAjIFNvbWUgSFRUUC8xLjAgaW1wbGVtZW50YXRpb25zIGhhdmUgc3VwcG9ydCBmb3IgcGVyc2lzdGVudAogICAgICAgICMgY29ubmVjdGlvbnMsIHVzaW5nIHJ1bGVzIGRpZmZlcmVudCB0aGFuIEhUVFAvMS4xLgoKICAgICAgICAjIEZvciBvbGRlciBIVFRQLCBLZWVwLUFsaXZlIGluZGljYXRlcyBwZXJzaXN0ZW50IGNvbm5lY3Rpb24uCiAgICAgICAgaWYgc2VsZi5oZWFkZXJzLmdldCgia2VlcC1hbGl2ZSIpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgIyBBdCBsZWFzdCBBa2FtYWkgcmV0dXJucyBhICJDb25uZWN0aW9uOiBLZWVwLUFsaXZlIiBoZWFkZXIsCiAgICAgICAgIyB3aGljaCB3YXMgc3VwcG9zZWQgdG8gYmUgc2VudCBieSB0aGUgY2xpZW50LgogICAgICAgIGlmIGNvbm4gYW5kICJrZWVwLWFsaXZlIiBpbiBjb25uLmxvd2VyKCk6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICAjIFByb3h5LUNvbm5lY3Rpb24gaXMgYSBuZXRzY2FwZSBoYWNrLgogICAgICAgIHBjb25uID0gc2VsZi5oZWFkZXJzLmdldCgicHJveHktY29ubmVjdGlvbiIpCiAgICAgICAgaWYgcGNvbm4gYW5kICJrZWVwLWFsaXZlIiBpbiBwY29ubi5sb3dlcigpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgIyBvdGhlcndpc2UsIGFzc3VtZSBpdCB3aWxsIGNsb3NlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgX2Nsb3NlX2Nvbm4oc2VsZik6CiAgICAgICAgZnAgPSBzZWxmLmZwCiAgICAgICAgc2VsZi5mcCA9IE5vbmUKICAgICAgICBmcC5jbG9zZSgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpICMgc2V0ICJjbG9zZWQiIGZsYWcKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBpZiBzZWxmLmZwOgogICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCgogICAgIyBUaGVzZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGZvciB0aGUgYmVuZWZpdCBvZiBpby5CdWZmZXJlZFJlYWRlci4KCiAgICAjIFhYWCBUaGlzIGNsYXNzIHNob3VsZCBwcm9iYWJseSBiZSByZXZpc2VkIHRvIGFjdCBtb3JlIGxpa2UKICAgICMgdGhlICJyYXcgc3RyZWFtIiB0aGF0IEJ1ZmZlcmVkUmVhZGVyIGV4cGVjdHMuCgogICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgIHN1cGVyKCkuZmx1c2goKQogICAgICAgIGlmIHNlbGYuZnA6CiAgICAgICAgICAgIHNlbGYuZnAuZmx1c2goKQoKICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAiIiJBbHdheXMgcmV0dXJucyBUcnVlIiIiCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICAjIEVuZCBvZiAicmF3IHN0cmVhbSIgbWV0aG9kcwoKICAgIGRlZiBpc2Nsb3NlZChzZWxmKToKICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZC4iIiIKICAgICAgICAjIE5PVEU6IGl0IGlzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBub3QgZXZlciBjYWxsIHNlbGYuY2xvc2UoKS4gVGhpcwogICAgICAgICMgICAgICAgY2FzZSBvY2N1cnMgd2hlbiB3aWxsX2Nsb3NlIGlzIFRSVUUsIGxlbmd0aCBpcyBOb25lLCBhbmQgd2UKICAgICAgICAjICAgICAgIHJlYWQgdXAgdG8gdGhlIGxhc3QgYnl0ZSwgYnV0IE5PVCBwYXN0IGl0LgogICAgICAgICMKICAgICAgICAjIElNUExJRVM6IGlmIHdpbGxfY2xvc2UgaXMgRkFMU0UsIHRoZW4gc2VsZi5jbG9zZSgpIHdpbGwgQUxXQVlTIGJlCiAgICAgICAgIyAgICAgICAgICBjYWxsZWQsIG1lYW5pbmcgc2VsZi5pc2Nsb3NlZCgpIGlzIG1lYW5pbmdmdWwuCiAgICAgICAgcmV0dXJuIHNlbGYuZnAgaXMgTm9uZQoKICAgIGRlZiByZWFkKHNlbGYsIGFtdD1Ob25lKToKICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBiIiIKCiAgICAgICAgaWYgc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCiAgICAgICAgICAgIHJldHVybiBiIiIKCiAgICAgICAgaWYgc2VsZi5jaHVua2VkOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9jaHVua2VkKGFtdCkKCiAgICAgICAgaWYgYW10IGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBzZWxmLmxlbmd0aCBpcyBub3QgTm9uZSBhbmQgYW10ID4gc2VsZi5sZW5ndGg6CiAgICAgICAgICAgICAgICAjIGNsaXAgdGhlIHJlYWQgdG8gdGhlICJlbmQgb2YgcmVzcG9uc2UiCiAgICAgICAgICAgICAgICBhbXQgPSBzZWxmLmxlbmd0aAogICAgICAgICAgICBzID0gc2VsZi5mcC5yZWFkKGFtdCkKICAgICAgICAgICAgaWYgbm90IHMgYW5kIGFtdDoKICAgICAgICAgICAgICAgICMgSWRlYWxseSwgd2Ugd291bGQgcmFpc2UgSW5jb21wbGV0ZVJlYWQgaWYgdGhlIGNvbnRlbnQtbGVuZ3RoCiAgICAgICAgICAgICAgICAjIHdhc24ndCBzYXRpc2ZpZWQsIGJ1dCBpdCBtaWdodCBicmVhayBjb21wYXRpYmlsaXR5LgogICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCiAgICAgICAgICAgIGVsaWYgc2VsZi5sZW5ndGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLmxlbmd0aCAtPSBsZW4ocykKICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmxlbmd0aDoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEFtb3VudCBpcyBub3QgZ2l2ZW4gKHVuYm91bmRlZCByZWFkKSBzbyB3ZSBtdXN0IGNoZWNrIHNlbGYubGVuZ3RoCiAgICAgICAgICAgIGlmIHNlbGYubGVuZ3RoIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzID0gc2VsZi5mcC5yZWFkKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzID0gc2VsZi5fc2FmZV9yZWFkKHNlbGYubGVuZ3RoKQogICAgICAgICAgICAgICAgZXhjZXB0IEluY29tcGxldGVSZWFkOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICBzZWxmLmxlbmd0aCA9IDAKICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZwogICAgICAgICAgICByZXR1cm4gcwoKICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSBiIGFuZCByZXR1cm4gdGhlIG51bWJlcgogICAgICAgIG9mIGJ5dGVzIHJlYWQuCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIDAKCiAgICAgICAgaWYgc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCiAgICAgICAgICAgIHJldHVybiAwCgogICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRpbnRvX2NodW5rZWQoYikKCiAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIGxlbihiKSA+IHNlbGYubGVuZ3RoOgogICAgICAgICAgICAgICAgIyBjbGlwIHRoZSByZWFkIHRvIHRoZSAiZW5kIG9mIHJlc3BvbnNlIgogICAgICAgICAgICAgICAgYiA9IG1lbW9yeXZpZXcoYilbMDpzZWxmLmxlbmd0aF0KCiAgICAgICAgIyB3ZSBkbyBub3QgdXNlIF9zYWZlX3JlYWQoKSBoZXJlIGJlY2F1c2UgdGhpcyBtYXkgYmUgYSAud2lsbF9jbG9zZQogICAgICAgICMgY29ubmVjdGlvbiwgYW5kIHRoZSB1c2VyIGlzIHJlYWRpbmcgbW9yZSBieXRlcyB0aGFuIHdpbGwgYmUgcHJvdmlkZWQKICAgICAgICAjIChmb3IgZXhhbXBsZSwgcmVhZGluZyBpbiAxayBjaHVua3MpCiAgICAgICAgbiA9IHNlbGYuZnAucmVhZGludG8oYikKICAgICAgICBpZiBub3QgbiBhbmQgYjoKICAgICAgICAgICAgIyBJZGVhbGx5LCB3ZSB3b3VsZCByYWlzZSBJbmNvbXBsZXRlUmVhZCBpZiB0aGUgY29udGVudC1sZW5ndGgKICAgICAgICAgICAgIyB3YXNuJ3Qgc2F0aXNmaWVkLCBidXQgaXQgbWlnaHQgYnJlYWsgY29tcGF0aWJpbGl0eS4KICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCiAgICAgICAgZWxpZiBzZWxmLmxlbmd0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5sZW5ndGggLT0gbgogICAgICAgICAgICBpZiBub3Qgc2VsZi5sZW5ndGg6CiAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKICAgICAgICByZXR1cm4gbgoKICAgIGRlZiBfcmVhZF9uZXh0X2NodW5rX3NpemUoc2VsZik6CiAgICAgICAgIyBSZWFkIHRoZSBuZXh0IGNodW5rIHNpemUgZnJvbSB0aGUgZmlsZQogICAgICAgIGxpbmUgPSBzZWxmLmZwLnJlYWRsaW5lKF9NQVhMSU5FICsgMSkKICAgICAgICBpZiBsZW4obGluZSkgPiBfTUFYTElORToKICAgICAgICAgICAgcmFpc2UgTGluZVRvb0xvbmcoImNodW5rIHNpemUiKQogICAgICAgIGkgPSBsaW5lLmZpbmQoYiI7IikKICAgICAgICBpZiBpID49IDA6CiAgICAgICAgICAgIGxpbmUgPSBsaW5lWzppXSAjIHN0cmlwIGNodW5rLWV4dGVuc2lvbnMKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBpbnQobGluZSwgMTYpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICMgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYXMgcHJvdG9jb2wgc3luY2hyb25pc2F0aW9uIGlzCiAgICAgICAgICAgICMgcHJvYmFibHkgbG9zdAogICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcihzZWxmKToKICAgICAgICAjIHJlYWQgYW5kIGRpc2NhcmQgdHJhaWxlciB1cCB0byB0aGUgQ1JMRiB0ZXJtaW5hdG9yCiAgICAgICAgIyMjIG5vdGU6IHdlIHNob3VsZG4ndCBoYXZlIGFueSB0cmFpbGVycyEKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBsaW5lID0gc2VsZi5mcC5yZWFkbGluZShfTUFYTElORSArIDEpCiAgICAgICAgICAgIGlmIGxlbihsaW5lKSA+IF9NQVhMSU5FOgogICAgICAgICAgICAgICAgcmFpc2UgTGluZVRvb0xvbmcoInRyYWlsZXIgbGluZSIpCiAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgIyBhIHZhbmlzaGluZ2x5IHNtYWxsIG51bWJlciBvZiBzaXRlcyBFT0Ygd2l0aG91dAogICAgICAgICAgICAgICAgIyBzZW5kaW5nIHRoZSB0cmFpbGVyCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiBsaW5lIGluIChiJ1xyXG4nLCBiJ1xuJywgYicnKToKICAgICAgICAgICAgICAgIGJyZWFrCgogICAgZGVmIF9nZXRfY2h1bmtfbGVmdChzZWxmKToKICAgICAgICAjIHJldHVybiBzZWxmLmNodW5rX2xlZnQsIHJlYWRpbmcgYSBuZXcgY2h1bmsgaWYgbmVjZXNzYXJ5LgogICAgICAgICMgY2h1bmtfbGVmdCA9PSAwOiBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGNodW5rLCBuZWVkIHRvIGNsb3NlIGl0CiAgICAgICAgIyBjaHVua19sZWZ0ID09IE5vbmU6IE5vIGN1cnJlbnQgY2h1bmssIHNob3VsZCByZWFkIG5leHQuCiAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbm9uLXplcm8gb3IgTm9uZSBpZiB0aGUgbGFzdCBjaHVuayBoYXMKICAgICAgICAjIGJlZW4gcmVhZC4KICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0CiAgICAgICAgaWYgbm90IGNodW5rX2xlZnQ6ICMgQ2FuIGJlIDAgb3IgTm9uZQogICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIyBXZSBhcmUgYXQgdGhlIGVuZCBvZiBjaHVuaywgZGlzY2FyZCBjaHVuayBlbmQKICAgICAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnKQogICAgICAgICAgICBpZiBjaHVua19sZWZ0ID09IDA6CiAgICAgICAgICAgICAgICAjIGxhc3QgY2h1bms6IDEqKCIwIikgWyBjaHVuay1leHRlbnNpb24gXSBDUkxGCiAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQogICAgICAgICAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmc7IGNsb3NlIHRoZSAiZmlsZSIKICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQogICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKICAgICAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gY2h1bmtfbGVmdAogICAgICAgIHJldHVybiBjaHVua19sZWZ0CgogICAgZGVmIF9yZWFkX2NodW5rZWQoc2VsZiwgYW10PU5vbmUpOgogICAgICAgIGFzc2VydCBzZWxmLmNodW5rZWQgIT0gX1VOS05PV04KICAgICAgICB2YWx1ZSA9IFtdCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX2dldF9jaHVua19sZWZ0KCkKICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgICAgIGlmIGFtdCBpcyBub3QgTm9uZSBhbmQgYW10IDw9IGNodW5rX2xlZnQ6CiAgICAgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChhbXQpKQogICAgICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBhbXQKICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCiAgICAgICAgICAgICAgICBpZiBhbXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgYW10IC09IGNodW5rX2xlZnQKICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IDAKICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHZhbHVlKQogICAgICAgIGV4Y2VwdCBJbmNvbXBsZXRlUmVhZCBhcyBleGM6CiAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGInJy5qb2luKHZhbHVlKSkgZnJvbSBleGMKCiAgICBkZWYgX3JlYWRpbnRvX2NodW5rZWQoc2VsZiwgYik6CiAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgogICAgICAgIHRvdGFsX2J5dGVzID0gMAogICAgICAgIG12YiA9IG1lbW9yeXZpZXcoYikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fZ2V0X2NodW5rX2xlZnQoKQogICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcwoKICAgICAgICAgICAgICAgIGlmIGxlbihtdmIpIDw9IGNodW5rX2xlZnQ6CiAgICAgICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8obXZiKQogICAgICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBuCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgoKICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzpjaHVua19sZWZ0XQogICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8odGVtcF9tdmIpCiAgICAgICAgICAgICAgICBtdmIgPSBtdmJbbjpdCiAgICAgICAgICAgICAgICB0b3RhbF9ieXRlcyArPSBuCiAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSAwCgogICAgICAgIGV4Y2VwdCBJbmNvbXBsZXRlUmVhZDoKICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYnl0ZXMoYlswOnRvdGFsX2J5dGVzXSkpCgogICAgZGVmIF9zYWZlX3JlYWQoc2VsZiwgYW10KToKICAgICAgICAiIiJSZWFkIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkLgoKICAgICAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHdoZW4gPGFtdD4gYnl0ZXMgInNob3VsZCIgYmUgcHJlc2VudCBmb3IKICAgICAgICByZWFkaW5nLiBJZiB0aGUgYnl0ZXMgYXJlIHRydWx5IG5vdCBhdmFpbGFibGUgKGR1ZSB0byBFT0YpLCB0aGVuIHRoZQogICAgICAgIEluY29tcGxldGVSZWFkIGV4Y2VwdGlvbiBjYW4gYmUgdXNlZCB0byBkZXRlY3QgdGhlIHByb2JsZW0uCiAgICAgICAgIiIiCiAgICAgICAgZGF0YSA9IHNlbGYuZnAucmVhZChhbXQpCiAgICAgICAgaWYgbGVuKGRhdGEpIDwgYW10OgogICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChkYXRhLCBhbXQtbGVuKGRhdGEpKQogICAgICAgIHJldHVybiBkYXRhCgogICAgZGVmIF9zYWZlX3JlYWRpbnRvKHNlbGYsIGIpOgogICAgICAgICIiIlNhbWUgYXMgX3NhZmVfcmVhZCwgYnV0IGZvciByZWFkaW5nIGludG8gYSBidWZmZXIuIiIiCiAgICAgICAgYW10ID0gbGVuKGIpCiAgICAgICAgbiA9IHNlbGYuZnAucmVhZGludG8oYikKICAgICAgICBpZiBuIDwgYW10OgogICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChieXRlcyhiWzpuXSksIGFtdC1uKQogICAgICAgIHJldHVybiBuCgogICAgZGVmIHJlYWQxKHNlbGYsIG49LTEpOgogICAgICAgICIiIlJlYWQgd2l0aCBhdCBtb3N0IG9uZSB1bmRlcmx5aW5nIHN5c3RlbSBjYWxsLiAgSWYgYXQgbGVhc3Qgb25lCiAgICAgICAgYnl0ZSBpcyBidWZmZXJlZCwgcmV0dXJuIHRoYXQgaW5zdGVhZC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmUgb3Igc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKICAgICAgICAgICAgcmV0dXJuIGIiIgogICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWQxX2NodW5rZWQobikKICAgICAgICBpZiBzZWxmLmxlbmd0aCBpcyBub3QgTm9uZSBhbmQgKG4gPCAwIG9yIG4gPiBzZWxmLmxlbmd0aCk6CiAgICAgICAgICAgIG4gPSBzZWxmLmxlbmd0aAogICAgICAgIHJlc3VsdCA9IHNlbGYuZnAucmVhZDEobikKICAgICAgICBpZiBub3QgcmVzdWx0IGFuZCBuOgogICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKICAgICAgICBlbGlmIHNlbGYubGVuZ3RoIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLmxlbmd0aCAtPSBsZW4ocmVzdWx0KQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgcGVlayhzZWxmLCBuPS0xKToKICAgICAgICAjIEhhdmluZyB0aGlzIGVuYWJsZXMgSU9CYXNlLnJlYWRsaW5lKCkgdG8gcmVhZCBtb3JlIHRoYW4gb25lCiAgICAgICAgIyBieXRlIGF0IGEgdGltZQogICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZSBvciBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgogICAgICAgICAgICByZXR1cm4gYiIiCiAgICAgICAgaWYgc2VsZi5jaHVua2VkOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fcGVla19jaHVua2VkKG4pCiAgICAgICAgcmV0dXJuIHNlbGYuZnAucGVlayhuKQoKICAgIGRlZiByZWFkbGluZShzZWxmLCBsaW1pdD0tMSk6CiAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lIG9yIHNlbGYuX21ldGhvZCA9PSAiSEVBRCI6CiAgICAgICAgICAgIHJldHVybiBiIiIKICAgICAgICBpZiBzZWxmLmNodW5rZWQ6CiAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gSU9CYXNlIHJlYWRsaW5lIHdoaWNoIHVzZXMgcGVlaygpIGFuZCByZWFkKCkKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkucmVhZGxpbmUobGltaXQpCiAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgbm90IE5vbmUgYW5kIChsaW1pdCA8IDAgb3IgbGltaXQgPiBzZWxmLmxlbmd0aCk6CiAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5sZW5ndGgKICAgICAgICByZXN1bHQgPSBzZWxmLmZwLnJlYWRsaW5lKGxpbWl0KQogICAgICAgIGlmIG5vdCByZXN1bHQgYW5kIGxpbWl0OgogICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKICAgICAgICBlbGlmIHNlbGYubGVuZ3RoIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLmxlbmd0aCAtPSBsZW4ocmVzdWx0KQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX3JlYWQxX2NodW5rZWQoc2VsZiwgbik6CiAgICAgICAgIyBTdHJpY3RseSBzcGVha2luZywgX2dldF9jaHVua19sZWZ0KCkgbWF5IGNhdXNlIG1vcmUgdGhhbiBvbmUgcmVhZCwKICAgICAgICAjIGJ1dCB0aGF0IGlzIG9rLCBzaW5jZSB0aGF0IGlzIHRvIHNhdGlzZnkgdGhlIGNodW5rZWQgcHJvdG9jb2wuCiAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX2dldF9jaHVua19sZWZ0KCkKICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmUgb3IgbiA9PSAwOgogICAgICAgICAgICByZXR1cm4gYicnCiAgICAgICAgaWYgbm90ICgwIDw9IG4gPD0gY2h1bmtfbGVmdCk6CiAgICAgICAgICAgIG4gPSBjaHVua19sZWZ0ICMgaWYgbiBpcyBuZWdhdGl2ZSBvciBsYXJnZXIgdGhhbiBjaHVua19sZWZ0CiAgICAgICAgcmVhZCA9IHNlbGYuZnAucmVhZDEobikKICAgICAgICBzZWxmLmNodW5rX2xlZnQgLT0gbGVuKHJlYWQpCiAgICAgICAgaWYgbm90IHJlYWQ6CiAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGIiIikKICAgICAgICByZXR1cm4gcmVhZAoKICAgIGRlZiBfcGVla19jaHVua2VkKHNlbGYsIG4pOgogICAgICAgICMgU3RyaWN0bHkgc3BlYWtpbmcsIF9nZXRfY2h1bmtfbGVmdCgpIG1heSBjYXVzZSBtb3JlIHRoYW4gb25lIHJlYWQsCiAgICAgICAgIyBidXQgdGhhdCBpcyBvaywgc2luY2UgdGhhdCBpcyB0byBzYXRpc2Z5IHRoZSBjaHVua2VkIHByb3RvY29sLgogICAgICAgIHRyeToKICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX2dldF9jaHVua19sZWZ0KCkKICAgICAgICBleGNlcHQgSW5jb21wbGV0ZVJlYWQ6CiAgICAgICAgICAgIHJldHVybiBiJycgIyBwZWVrIGRvZXNuJ3Qgd29ycnkgYWJvdXQgcHJvdG9jb2wKICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBiJycgIyBlb2YKICAgICAgICAjIHBlZWsgaXMgYWxsb3dlZCB0byByZXR1cm4gbW9yZSB0aGFuIHJlcXVlc3RlZC4gIEp1c3QgcmVxdWVzdCB0aGUKICAgICAgICAjIGVudGlyZSBjaHVuaywgYW5kIHRydW5jYXRlIHdoYXQgd2UgZ2V0LgogICAgICAgIHJldHVybiBzZWxmLmZwLnBlZWsoY2h1bmtfbGVmdClbOmNodW5rX2xlZnRdCgogICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5mcC5maWxlbm8oKQoKICAgIGRlZiBnZXRoZWFkZXIoc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKICAgICAgICAnJydSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIG1hdGNoaW5nICpuYW1lKi4KCiAgICAgICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoaW5nIGhlYWRlcnMsIHRoZSB2YWx1ZXMgYXJlCiAgICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSBzdHJpbmcgc2VwYXJhdGVkIGJ5IGNvbW1hcyBhbmQgc3BhY2VzLgoKICAgICAgICBJZiBubyBtYXRjaGluZyBoZWFkZXIgaXMgZm91bmQsIHJldHVybnMgKmRlZmF1bHQqIG9yIE5vbmUgaWYKICAgICAgICB0aGUgKmRlZmF1bHQqIGlzIG5vdCBzcGVjaWZpZWQuCgogICAgICAgIElmIHRoZSBoZWFkZXJzIGFyZSB1bmtub3duLCByYWlzZXMgaHR0cC5jbGllbnQuUmVzcG9uc2VOb3RSZWFkeS4KCiAgICAgICAgJycnCiAgICAgICAgaWYgc2VsZi5oZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFJlc3BvbnNlTm90UmVhZHkoKQogICAgICAgIGhlYWRlcnMgPSBzZWxmLmhlYWRlcnMuZ2V0X2FsbChuYW1lKSBvciBkZWZhdWx0CiAgICAgICAgaWYgaXNpbnN0YW5jZShoZWFkZXJzLCBzdHIpIG9yIG5vdCBoYXNhdHRyKGhlYWRlcnMsICdfX2l0ZXJfXycpOgogICAgICAgICAgICByZXR1cm4gaGVhZGVycwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAnLCAnLmpvaW4oaGVhZGVycykKCiAgICBkZWYgZ2V0aGVhZGVycyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gbGlzdCBvZiAoaGVhZGVyLCB2YWx1ZSkgdHVwbGVzLiIiIgogICAgICAgIGlmIHNlbGYuaGVhZGVycyBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBSZXNwb25zZU5vdFJlYWR5KCkKICAgICAgICByZXR1cm4gbGlzdChzZWxmLmhlYWRlcnMuaXRlbXMoKSkKCiAgICAjIFdlIG92ZXJyaWRlIElPQmFzZS5fX2l0ZXJfXyBzbyB0aGF0IGl0IGRvZXNuJ3QgY2hlY2sgZm9yIGNsb3NlZC1uZXNzCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgIyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZC1zdHlsZSB1cmxsaWIgcmVzcG9uc2VzLgoKICAgIGRlZiBpbmZvKHNlbGYpOgogICAgICAgICcnJ1JldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIG1pbWV0b29scy5NZXNzYWdlIGNvbnRhaW5pbmcKICAgICAgICBtZXRhLWluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgVVJMLgoKICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgSFRUUCwgdGhlc2UgaGVhZGVycyBhcmUgdGhvc2UgcmV0dXJuZWQgYnkKICAgICAgICB0aGUgc2VydmVyIGF0IHRoZSBoZWFkIG9mIHRoZSByZXRyaWV2ZWQgSFRNTCBwYWdlIChpbmNsdWRpbmcKICAgICAgICBDb250ZW50LUxlbmd0aCBhbmQgQ29udGVudC1UeXBlKS4KCiAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIEZUUCwgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIgd2lsbCBiZQogICAgICAgIHByZXNlbnQgaWYgKGFzIGlzIG5vdyB1c3VhbCkgdGhlIHNlcnZlciBwYXNzZWQgYmFjayBhIGZpbGUKICAgICAgICBsZW5ndGggaW4gcmVzcG9uc2UgdG8gdGhlIEZUUCByZXRyaWV2YWwgcmVxdWVzdC4gQQogICAgICAgIENvbnRlbnQtVHlwZSBoZWFkZXIgd2lsbCBiZSBwcmVzZW50IGlmIHRoZSBNSU1FIHR5cGUgY2FuIGJlCiAgICAgICAgZ3Vlc3NlZC4KCiAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIGxvY2FsLWZpbGUsIHJldHVybmVkIGhlYWRlcnMgd2lsbCBpbmNsdWRlCiAgICAgICAgYSBEYXRlIHJlcHJlc2VudGluZyB0aGUgZmlsZSdzIGxhc3QtbW9kaWZpZWQgdGltZSwgYQogICAgICAgIENvbnRlbnQtTGVuZ3RoIGdpdmluZyBmaWxlIHNpemUsIGFuZCBhIENvbnRlbnQtVHlwZQogICAgICAgIGNvbnRhaW5pbmcgYSBndWVzcyBhdCB0aGUgZmlsZSdzIHR5cGUuIFNlZSBhbHNvIHRoZQogICAgICAgIGRlc2NyaXB0aW9uIG9mIHRoZSBtaW1ldG9vbHMgbW9kdWxlLgoKICAgICAgICAnJycKICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJzCgogICAgZGVmIGdldHVybChzZWxmKToKICAgICAgICAnJydSZXR1cm4gdGhlIHJlYWwgVVJMIG9mIHRoZSBwYWdlLgoKICAgICAgICBJbiBzb21lIGNhc2VzLCB0aGUgSFRUUCBzZXJ2ZXIgcmVkaXJlY3RzIGEgY2xpZW50IHRvIGFub3RoZXIKICAgICAgICBVUkwuIFRoZSB1cmxvcGVuKCkgZnVuY3Rpb24gaGFuZGxlcyB0aGlzIHRyYW5zcGFyZW50bHksIGJ1dCBpbgogICAgICAgIHNvbWUgY2FzZXMgdGhlIGNhbGxlciBuZWVkcyB0byBrbm93IHdoaWNoIFVSTCB0aGUgY2xpZW50IHdhcwogICAgICAgIHJlZGlyZWN0ZWQgdG8uIFRoZSBnZXR1cmwoKSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gZ2V0IGF0IHRoaXMKICAgICAgICByZWRpcmVjdGVkIFVSTC4KCiAgICAgICAgJycnCiAgICAgICAgcmV0dXJuIHNlbGYudXJsCgogICAgZGVmIGdldGNvZGUoc2VsZik6CiAgICAgICAgJycnUmV0dXJuIHRoZSBIVFRQIHN0YXR1cyBjb2RlIHRoYXQgd2FzIHNlbnQgd2l0aCB0aGUgcmVzcG9uc2UsCiAgICAgICAgb3IgTm9uZSBpZiB0aGUgVVJMIGlzIG5vdCBhbiBIVFRQIFVSTC4KCiAgICAgICAgJycnCiAgICAgICAgcmV0dXJuIHNlbGYuc3RhdHVzCgpjbGFzcyBIVFRQQ29ubmVjdGlvbjoKCiAgICBfaHR0cF92c24gPSAxMQogICAgX2h0dHBfdnNuX3N0ciA9ICdIVFRQLzEuMScKCiAgICByZXNwb25zZV9jbGFzcyA9IEhUVFBSZXNwb25zZQogICAgZGVmYXVsdF9wb3J0ID0gSFRUUF9QT1JUCiAgICBhdXRvX29wZW4gPSAxCiAgICBkZWJ1Z2xldmVsID0gMAoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfaXNfdGV4dElPKHN0cmVhbSk6CiAgICAgICAgIiIiVGVzdCB3aGV0aGVyIGEgZmlsZS1saWtlIG9iamVjdCBpcyBhIHRleHQgb3IgYSBiaW5hcnkgc3RyZWFtLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBpc2luc3RhbmNlKHN0cmVhbSwgaW8uVGV4dElPQmFzZSkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2dldF9jb250ZW50X2xlbmd0aChib2R5LCBtZXRob2QpOgogICAgICAgICIiIkdldCB0aGUgY29udGVudC1sZW5ndGggYmFzZWQgb24gdGhlIGJvZHkuCgogICAgICAgIElmIHRoZSBib2R5IGlzIE5vbmUsIHdlIHNldCBDb250ZW50LUxlbmd0aDogMCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdAogICAgICAgIGEgYm9keSAoUkZDIDcyMzAsIFNlY3Rpb24gMy4zLjIpLiBXZSBhbHNvIHNldCB0aGUgQ29udGVudC1MZW5ndGggZm9yCiAgICAgICAgYW55IG1ldGhvZCBpZiB0aGUgYm9keSBpcyBhIHN0ciBvciBieXRlcy1saWtlIG9iamVjdCBhbmQgbm90IGEgZmlsZS4KICAgICAgICAiIiIKICAgICAgICBpZiBib2R5IGlzIE5vbmU6CiAgICAgICAgICAgICMgZG8gYW4gZXhwbGljaXQgY2hlY2sgZm9yIG5vdCBOb25lIGhlcmUgdG8gZGlzdGluZ3Vpc2gKICAgICAgICAgICAgIyBiZXR3ZWVuIHVuc2V0IGFuZCBzZXQgYnV0IGVtcHR5CiAgICAgICAgICAgIGlmIG1ldGhvZC51cHBlcigpIGluIF9NRVRIT0RTX0VYUEVDVElOR19CT0RZOgogICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgIGlmIGhhc2F0dHIoYm9keSwgJ3JlYWQnKToKICAgICAgICAgICAgIyBmaWxlLWxpa2Ugb2JqZWN0LgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgZG9lcyBpdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciBwcm90b2NvbCAoYnl0ZXMsIGJ5dGVhcnJheSwgYXJyYXkpPwogICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoYm9keSkKICAgICAgICAgICAgcmV0dXJuIG12Lm5ieXRlcwogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICAgICAgaWYgaXNpbnN0YW5jZShib2R5LCBzdHIpOgogICAgICAgICAgICByZXR1cm4gbGVuKGJvZHkpCgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQ9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSwgYmxvY2tzaXplPTgxOTIpOgogICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKICAgICAgICBzZWxmLmJsb2Nrc2l6ZSA9IGJsb2Nrc2l6ZQogICAgICAgIHNlbGYuc29jayA9IE5vbmUKICAgICAgICBzZWxmLl9idWZmZXIgPSBbXQogICAgICAgIHNlbGYuX19yZXNwb25zZSA9IE5vbmUKICAgICAgICBzZWxmLl9fc3RhdGUgPSBfQ1NfSURMRQogICAgICAgIHNlbGYuX21ldGhvZCA9IE5vbmUKICAgICAgICBzZWxmLl90dW5uZWxfaG9zdCA9IE5vbmUKICAgICAgICBzZWxmLl90dW5uZWxfcG9ydCA9IE5vbmUKICAgICAgICBzZWxmLl90dW5uZWxfaGVhZGVycyA9IHt9CgogICAgICAgIChzZWxmLmhvc3QsIHNlbGYucG9ydCkgPSBzZWxmLl9nZXRfaG9zdHBvcnQoaG9zdCwgcG9ydCkKCiAgICAgICAgc2VsZi5fdmFsaWRhdGVfaG9zdChzZWxmLmhvc3QpCgogICAgICAgICMgVGhpcyBpcyBzdG9yZWQgYXMgYW4gaW5zdGFuY2UgdmFyaWFibGUgdG8gYWxsb3cgdW5pdAogICAgICAgICMgdGVzdHMgdG8gcmVwbGFjZSBpdCB3aXRoIGEgc3VpdGFibGUgbW9ja3VwCiAgICAgICAgc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24gPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24KCiAgICBkZWYgc2V0X3R1bm5lbChzZWxmLCBob3N0LCBwb3J0PU5vbmUsIGhlYWRlcnM9Tm9uZSk6CiAgICAgICAgIiIiU2V0IHVwIGhvc3QgYW5kIHBvcnQgZm9yIEhUVFAgQ09OTkVDVCB0dW5uZWxsaW5nLgoKICAgICAgICBJbiBhIGNvbm5lY3Rpb24gdGhhdCB1c2VzIEhUVFAgQ09OTkVDVCB0dW5uZWxpbmcsIHRoZSBob3N0IHBhc3NlZCB0byB0aGUKICAgICAgICBjb25zdHJ1Y3RvciBpcyB1c2VkIGFzIGEgcHJveHkgc2VydmVyIHRoYXQgcmVsYXlzIGFsbCBjb21tdW5pY2F0aW9uIHRvCiAgICAgICAgdGhlIGVuZHBvaW50IHBhc3NlZCB0byBgc2V0X3R1bm5lbGAuIFRoaXMgZG9uZSBieSBzZW5kaW5nIGFuIEhUVFAKICAgICAgICBDT05ORUNUIHJlcXVlc3QgdG8gdGhlIHByb3h5IHNlcnZlciB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgoKICAgICAgICBUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgdGhlIEhUVFAgY29ubmVjdGlvbiBoYXMgYmVlbgogICAgICAgIGVzdGFibGlzaGVkLgoKICAgICAgICBUaGUgaGVhZGVycyBhcmd1bWVudCBzaG91bGQgYmUgYSBtYXBwaW5nIG9mIGV4dHJhIEhUVFAgaGVhZGVycyB0byBzZW5kCiAgICAgICAgd2l0aCB0aGUgQ09OTkVDVCByZXF1ZXN0LgogICAgICAgICIiIgoKICAgICAgICBpZiBzZWxmLnNvY2s6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2FuJ3Qgc2V0IHVwIHR1bm5lbCBmb3IgZXN0YWJsaXNoZWQgY29ubmVjdGlvbiIpCgogICAgICAgIHNlbGYuX3R1bm5lbF9ob3N0LCBzZWxmLl90dW5uZWxfcG9ydCA9IHNlbGYuX2dldF9ob3N0cG9ydChob3N0LCBwb3J0KQogICAgICAgIGlmIGhlYWRlcnM6CiAgICAgICAgICAgIHNlbGYuX3R1bm5lbF9oZWFkZXJzID0gaGVhZGVycwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3R1bm5lbF9oZWFkZXJzLmNsZWFyKCkKCiAgICBkZWYgX2dldF9ob3N0cG9ydChzZWxmLCBob3N0LCBwb3J0KToKICAgICAgICBpZiBwb3J0IGlzIE5vbmU6CiAgICAgICAgICAgIGkgPSBob3N0LnJmaW5kKCc6JykKICAgICAgICAgICAgaiA9IGhvc3QucmZpbmQoJ10nKSAgICAgICAgICMgaXB2NiBhZGRyZXNzZXMgaGF2ZSBbLi4uXQogICAgICAgICAgICBpZiBpID4gajoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBwb3J0ID0gaW50KGhvc3RbaSsxOl0pCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBpZiBob3N0W2krMTpdID09ICIiOiAjIGh0dHA6Ly9mb28uY29tOi8gPT0gaHR0cDovL2Zvby5jb20vCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQgPSBzZWxmLmRlZmF1bHRfcG9ydAogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRVUkwoIm5vbm51bWVyaWMgcG9ydDogJyVzJyIgJSBob3N0W2krMTpdKQogICAgICAgICAgICAgICAgaG9zdCA9IGhvc3RbOmldCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwb3J0ID0gc2VsZi5kZWZhdWx0X3BvcnQKICAgICAgICAgICAgaWYgaG9zdCBhbmQgaG9zdFswXSA9PSAnWycgYW5kIGhvc3RbLTFdID09ICddJzoKICAgICAgICAgICAgICAgIGhvc3QgPSBob3N0WzE6LTFdCgogICAgICAgIHJldHVybiAoaG9zdCwgcG9ydCkKCiAgICBkZWYgc2V0X2RlYnVnbGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgIHNlbGYuZGVidWdsZXZlbCA9IGxldmVsCgogICAgZGVmIF90dW5uZWwoc2VsZik6CiAgICAgICAgY29ubmVjdCA9IGIiQ09OTkVDVCAlczolZCBIVFRQLzEuMFxyXG4iICUgKAogICAgICAgICAgICBzZWxmLl90dW5uZWxfaG9zdC5lbmNvZGUoImFzY2lpIiksIHNlbGYuX3R1bm5lbF9wb3J0KQogICAgICAgIGhlYWRlcnMgPSBbY29ubmVjdF0KICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBzZWxmLl90dW5uZWxfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChmIntoZWFkZXJ9OiB7dmFsdWV9XHJcbiIuZW5jb2RlKCJsYXRpbi0xIikpCiAgICAgICAgaGVhZGVycy5hcHBlbmQoYiJcclxuIikKICAgICAgICAjIE1ha2luZyBhIHNpbmdsZSBzZW5kKCkgY2FsbCBpbnN0ZWFkIG9mIG9uZSBwZXIgbGluZSBlbmNvdXJhZ2VzCiAgICAgICAgIyB0aGUgaG9zdCBPUyB0byB1c2UgYSBtb3JlIG9wdGltYWwgcGFja2V0IHNpemUgaW5zdGVhZCBvZgogICAgICAgICMgcG90ZW50aWFsbHkgZW1pdHRpbmcgYSBzZXJpZXMgb2Ygc21hbGwgcGFja2V0cy4KICAgICAgICBzZWxmLnNlbmQoYiIiLmpvaW4oaGVhZGVycykpCiAgICAgICAgZGVsIGhlYWRlcnMKCiAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlc3BvbnNlX2NsYXNzKHNlbGYuc29jaywgbWV0aG9kPXNlbGYuX21ldGhvZCkKICAgICAgICAodmVyc2lvbiwgY29kZSwgbWVzc2FnZSkgPSByZXNwb25zZS5fcmVhZF9zdGF0dXMoKQoKICAgICAgICBpZiBjb2RlICE9IGh0dHAuSFRUUFN0YXR1cy5PSzoKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZiJUdW5uZWwgY29ubmVjdGlvbiBmYWlsZWQ6IHtjb2RlfSB7bWVzc2FnZS5zdHJpcCgpfSIpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgbGluZSA9IHJlc3BvbnNlLmZwLnJlYWRsaW5lKF9NQVhMSU5FICsgMSkKICAgICAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CiAgICAgICAgICAgICAgICByYWlzZSBMaW5lVG9vTG9uZygiaGVhZGVyIGxpbmUiKQogICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICMgZm9yIHNpdGVzIHdoaWNoIEVPRiB3aXRob3V0IHNlbmRpbmcgYSB0cmFpbGVyCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiBsaW5lIGluIChiJ1xyXG4nLCBiJ1xuJywgYicnKToKICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgcHJpbnQoJ2hlYWRlcjonLCBsaW5lLmRlY29kZSgpKQoKICAgIGRlZiBjb25uZWN0KHNlbGYpOgogICAgICAgICIiIkNvbm5lY3QgdG8gdGhlIGhvc3QgYW5kIHBvcnQgc3BlY2lmaWVkIGluIF9faW5pdF9fLiIiIgogICAgICAgIHN5cy5hdWRpdCgiaHR0cC5jbGllbnQuY29ubmVjdCIsIHNlbGYsIHNlbGYuaG9zdCwgc2VsZi5wb3J0KQogICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uKAogICAgICAgICAgICAoc2VsZi5ob3N0LHNlbGYucG9ydCksIHNlbGYudGltZW91dCwgc2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICAjIE1pZ2h0IGZhaWwgaW4gT1NzIHRoYXQgZG9uJ3QgaW1wbGVtZW50IFRDUF9OT0RFTEFZCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnNvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19UQ1AsIHNvY2tldC5UQ1BfTk9ERUxBWSwgMSkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT1BST1RPT1BUOgogICAgICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgaWYgc2VsZi5fdHVubmVsX2hvc3Q6CiAgICAgICAgICAgIHNlbGYuX3R1bm5lbCgpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBIVFRQIHNlcnZlci4iIiIKICAgICAgICBzZWxmLl9fc3RhdGUgPSBfQ1NfSURMRQogICAgICAgIHRyeToKICAgICAgICAgICAgc29jayA9IHNlbGYuc29jawogICAgICAgICAgICBpZiBzb2NrOgogICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgICAgICAgICAgc29jay5jbG9zZSgpICAgIyBjbG9zZSBpdCBtYW51YWxseS4uLiB0aGVyZSBtYXkgYmUgb3RoZXIgcmVmcwogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fX3Jlc3BvbnNlCiAgICAgICAgICAgIGlmIHJlc3BvbnNlOgogICAgICAgICAgICAgICAgc2VsZi5fX3Jlc3BvbnNlID0gTm9uZQogICAgICAgICAgICAgICAgcmVzcG9uc2UuY2xvc2UoKQoKICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEpOgogICAgICAgICIiIlNlbmQgYGRhdGEnIHRvIHRoZSBzZXJ2ZXIuCiAgICAgICAgYGBkYXRhYGAgY2FuIGJlIGEgc3RyaW5nIG9iamVjdCwgYSBieXRlcyBvYmplY3QsIGFuIGFycmF5IG9iamVjdCwgYQogICAgICAgIGZpbGUtbGlrZSBvYmplY3QgdGhhdCBzdXBwb3J0cyBhIC5yZWFkKCkgbWV0aG9kLCBvciBhbiBpdGVyYWJsZSBvYmplY3QuCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYuc29jayBpcyBOb25lOgogICAgICAgICAgICBpZiBzZWxmLmF1dG9fb3BlbjoKICAgICAgICAgICAgICAgIHNlbGYuY29ubmVjdCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBOb3RDb25uZWN0ZWQoKQoKICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICBwcmludCgic2VuZDoiLCByZXByKGRhdGEpKQogICAgICAgIGlmIGhhc2F0dHIoZGF0YSwgInJlYWQiKSA6CiAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICBwcmludCgic2VuZEluZyBhIHJlYWQoKWFibGUiKQogICAgICAgICAgICBlbmNvZGUgPSBzZWxmLl9pc190ZXh0SU8oZGF0YSkKICAgICAgICAgICAgaWYgZW5jb2RlIGFuZCBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgcHJpbnQoImVuY29kaW5nIGZpbGUgdXNpbmcgaXNvLTg4NTktMSIpCiAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICBkYXRhYmxvY2sgPSBkYXRhLnJlYWQoc2VsZi5ibG9ja3NpemUpCiAgICAgICAgICAgICAgICBpZiBub3QgZGF0YWJsb2NrOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBpZiBlbmNvZGU6CiAgICAgICAgICAgICAgICAgICAgZGF0YWJsb2NrID0gZGF0YWJsb2NrLmVuY29kZSgiaXNvLTg4NTktMSIpCiAgICAgICAgICAgICAgICBzeXMuYXVkaXQoImh0dHAuY2xpZW50LnNlbmQiLCBzZWxmLCBkYXRhYmxvY2spCiAgICAgICAgICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChkYXRhYmxvY2spCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHN5cy5hdWRpdCgiaHR0cC5jbGllbnQuc2VuZCIsIHNlbGYsIGRhdGEpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChkYXRhKQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhYmxlKToKICAgICAgICAgICAgICAgIGZvciBkIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwoZCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGF0YSBzaG91bGQgYmUgYSBieXRlcy1saWtlIG9iamVjdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGFuIGl0ZXJhYmxlLCBnb3QgJXIiICUgdHlwZShkYXRhKSkKCiAgICBkZWYgX291dHB1dChzZWxmLCBzKToKICAgICAgICAiIiJBZGQgYSBsaW5lIG9mIG91dHB1dCB0byB0aGUgY3VycmVudCByZXF1ZXN0IGJ1ZmZlci4KCiAgICAgICAgQXNzdW1lcyB0aGF0IHRoZSBsaW5lIGRvZXMgKm5vdCogZW5kIHdpdGggXFxyXFxuLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQocykKCiAgICBkZWYgX3JlYWRfcmVhZGFibGUoc2VsZiwgcmVhZGFibGUpOgogICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgIHByaW50KCJzZW5kSW5nIGEgcmVhZCgpYWJsZSIpCiAgICAgICAgZW5jb2RlID0gc2VsZi5faXNfdGV4dElPKHJlYWRhYmxlKQogICAgICAgIGlmIGVuY29kZSBhbmQgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgcHJpbnQoImVuY29kaW5nIGZpbGUgdXNpbmcgaXNvLTg4NTktMSIpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgZGF0YWJsb2NrID0gcmVhZGFibGUucmVhZChzZWxmLmJsb2Nrc2l6ZSkKICAgICAgICAgICAgaWYgbm90IGRhdGFibG9jazoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlmIGVuY29kZToKICAgICAgICAgICAgICAgIGRhdGFibG9jayA9IGRhdGFibG9jay5lbmNvZGUoImlzby04ODU5LTEiKQogICAgICAgICAgICB5aWVsZCBkYXRhYmxvY2sKCiAgICBkZWYgX3NlbmRfb3V0cHV0KHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lLCBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgIiIiU2VuZCB0aGUgY3VycmVudGx5IGJ1ZmZlcmVkIHJlcXVlc3QgYW5kIGNsZWFyIHRoZSBidWZmZXIuCgogICAgICAgIEFwcGVuZHMgYW4gZXh0cmEgXFxyXFxuIHRvIHRoZSBidWZmZXIuCiAgICAgICAgQSBtZXNzYWdlX2JvZHkgbWF5IGJlIHNwZWNpZmllZCwgdG8gYmUgYXBwZW5kZWQgdG8gdGhlIHJlcXVlc3QuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fYnVmZmVyLmV4dGVuZCgoYiIiLCBiIiIpKQogICAgICAgIG1zZyA9IGIiXHJcbiIuam9pbihzZWxmLl9idWZmZXIpCiAgICAgICAgZGVsIHNlbGYuX2J1ZmZlcls6XQogICAgICAgIHNlbGYuc2VuZChtc2cpCgogICAgICAgIGlmIG1lc3NhZ2VfYm9keSBpcyBub3QgTm9uZToKCiAgICAgICAgICAgICMgY3JlYXRlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgdG8gbWVzc2FnZV9ib2R5CiAgICAgICAgICAgIGlmIGhhc2F0dHIobWVzc2FnZV9ib2R5LCAncmVhZCcpOgogICAgICAgICAgICAgICAgIyBMZXQgZmlsZS1saWtlIHRha2UgcHJlY2VkZW5jZSBvdmVyIGJ5dGUtbGlrZS4gIFRoaXMKICAgICAgICAgICAgICAgICMgaXMgbmVlZGVkIHRvIGFsbG93IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIG1tYXAnZWQKICAgICAgICAgICAgICAgICMgZmlsZXMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LgogICAgICAgICAgICAgICAgY2h1bmtzID0gc2VsZi5fcmVhZF9yZWFkYWJsZShtZXNzYWdlX2JvZHkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIHNvbGVseSB0byBjaGVjayB0byBzZWUgaWYgbWVzc2FnZV9ib2R5CiAgICAgICAgICAgICAgICAgICAgIyBpbXBsZW1lbnRzIHRoZSBidWZmZXIgQVBJLiAgaXQgL3dvdWxkLyBiZSBlYXNpZXIKICAgICAgICAgICAgICAgICAgICAjIHRvIGNhcHR1cmUgaWYgUHlPYmplY3RfQ2hlY2tCdWZmZXIgd2FzIGV4cG9zZWQKICAgICAgICAgICAgICAgICAgICAjIHRvIFB5dGhvbi4KICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3KG1lc3NhZ2VfYm9keSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSBpdGVyKG1lc3NhZ2VfYm9keSkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm1lc3NhZ2VfYm9keSBzaG91bGQgYmUgYSBieXRlcy1saWtlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Qgb3IgYW4gaXRlcmFibGUsIGdvdCAlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdHlwZShtZXNzYWdlX2JvZHkpKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgYnVmZmVyIGludGVyZmFjZSBhbmQKICAgICAgICAgICAgICAgICAgICAjIGNhbiBiZSBwYXNzZWQgZGlyZWN0bHkgaW50byBzb2NrZXQgbWV0aG9kcwogICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IChtZXNzYWdlX2JvZHksKQoKICAgICAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKICAgICAgICAgICAgICAgIGlmIG5vdCBjaHVuazoKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnWmVybyBsZW5ndGggY2h1bmsgaWdub3JlZCcpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICAgICBpZiBlbmNvZGVfY2h1bmtlZCBhbmQgc2VsZi5faHR0cF92c24gPT0gMTE6CiAgICAgICAgICAgICAgICAgICAgIyBjaHVua2VkIGVuY29kaW5nCiAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBmJ3tsZW4oY2h1bmspOlh9XHJcbicuZW5jb2RlKCdhc2NpaScpICsgY2h1bmsgXAogICAgICAgICAgICAgICAgICAgICAgICArIGInXHJcbicKICAgICAgICAgICAgICAgIHNlbGYuc2VuZChjaHVuaykKCiAgICAgICAgICAgIGlmIGVuY29kZV9jaHVua2VkIGFuZCBzZWxmLl9odHRwX3ZzbiA9PSAxMToKICAgICAgICAgICAgICAgICMgZW5kIGNodW5rZWQgdHJhbnNmZXIKICAgICAgICAgICAgICAgIHNlbGYuc2VuZChiJzBcclxuXHJcbicpCgogICAgZGVmIHB1dHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIHNraXBfaG9zdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgIHNraXBfYWNjZXB0X2VuY29kaW5nPUZhbHNlKToKICAgICAgICAiIiJTZW5kIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyLgoKICAgICAgICBgbWV0aG9kJyBzcGVjaWZpZXMgYW4gSFRUUCByZXF1ZXN0IG1ldGhvZCwgZS5nLiAnR0VUJy4KICAgICAgICBgdXJsJyBzcGVjaWZpZXMgdGhlIG9iamVjdCBiZWluZyByZXF1ZXN0ZWQsIGUuZy4gJy9pbmRleC5odG1sJy4KICAgICAgICBgc2tpcF9ob3N0JyBpZiBUcnVlIGRvZXMgbm90IGFkZCBhdXRvbWF0aWNhbGx5IGEgJ0hvc3Q6JyBoZWFkZXIKICAgICAgICBgc2tpcF9hY2NlcHRfZW5jb2RpbmcnIGlmIFRydWUgZG9lcyBub3QgYWRkIGF1dG9tYXRpY2FsbHkgYW4KICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nOicgaGVhZGVyCiAgICAgICAgIiIiCgogICAgICAgICMgaWYgYSBwcmlvciByZXNwb25zZSBoYXMgYmVlbiBjb21wbGV0ZWQsIHRoZW4gZm9yZ2V0IGFib3V0IGl0LgogICAgICAgIGlmIHNlbGYuX19yZXNwb25zZSBhbmQgc2VsZi5fX3Jlc3BvbnNlLmlzY2xvc2VkKCk6CiAgICAgICAgICAgIHNlbGYuX19yZXNwb25zZSA9IE5vbmUKCgogICAgICAgICMgaW4gY2VydGFpbiBjYXNlcywgd2UgY2Fubm90IGlzc3VlIGFub3RoZXIgcmVxdWVzdCBvbiB0aGlzIGNvbm5lY3Rpb24uCiAgICAgICAgIyB0aGlzIG9jY3VycyB3aGVuOgogICAgICAgICMgICAxKSB3ZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2Ygc2VuZGluZyBhIHJlcXVlc3QuICAgKF9DU19SRVFfU1RBUlRFRCkKICAgICAgICAjICAgMikgYSByZXNwb25zZSB0byBhIHByZXZpb3VzIHJlcXVlc3QgaGFzIHNpZ25hbGxlZCB0aGF0IGl0IGlzIGdvaW5nCiAgICAgICAgIyAgICAgIHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uIHVwb24gY29tcGxldGlvbi4KICAgICAgICAjICAgMykgdGhlIGhlYWRlcnMgZm9yIHRoZSBwcmV2aW91cyByZXNwb25zZSBoYXZlIG5vdCBiZWVuIHJlYWQsIHRodXMKICAgICAgICAjICAgICAgd2UgY2Fubm90IGRldGVybWluZSB3aGV0aGVyIHBvaW50ICgyKSBpcyB0cnVlLiAgIChfQ1NfUkVRX1NFTlQpCiAgICAgICAgIwogICAgICAgICMgaWYgdGhlcmUgaXMgbm8gcHJpb3IgcmVzcG9uc2UsIHRoZW4gd2UgY2FuIHJlcXVlc3QgYXQgd2lsbC4KICAgICAgICAjCiAgICAgICAgIyBpZiBwb2ludCAoMikgaXMgdHJ1ZSwgdGhlbiB3ZSB3aWxsIGhhdmUgcGFzc2VkIHRoZSBzb2NrZXQgdG8gdGhlCiAgICAgICAgIyByZXNwb25zZSAoZWZmZWN0aXZlbHkgbWVhbmluZywgInRoZXJlIGlzIG5vIHByaW9yIHJlc3BvbnNlIiksIGFuZAogICAgICAgICMgd2lsbCBvcGVuIGEgbmV3IG9uZSB3aGVuIGEgbmV3IHJlcXVlc3QgaXMgbWFkZS4KICAgICAgICAjCiAgICAgICAgIyBOb3RlOiBpZiBhIHByaW9yIHJlc3BvbnNlIGV4aXN0cywgdGhlbiB3ZSAqY2FuKiBzdGFydCBhIG5ldyByZXF1ZXN0LgogICAgICAgICMgICAgICAgV2UgYXJlIG5vdCBhbGxvd2VkIHRvIGJlZ2luIGZldGNoaW5nIHRoZSByZXNwb25zZSB0byB0aGlzIG5ldwogICAgICAgICMgICAgICAgcmVxdWVzdCwgaG93ZXZlciwgdW50aWwgdGhhdCBwcmlvciByZXNwb25zZSBpcyBjb21wbGV0ZS4KICAgICAgICAjCiAgICAgICAgaWYgc2VsZi5fX3N0YXRlID09IF9DU19JRExFOgogICAgICAgICAgICBzZWxmLl9fc3RhdGUgPSBfQ1NfUkVRX1NUQVJURUQKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBDYW5ub3RTZW5kUmVxdWVzdChzZWxmLl9fc3RhdGUpCgogICAgICAgIHNlbGYuX3ZhbGlkYXRlX21ldGhvZChtZXRob2QpCgogICAgICAgICMgU2F2ZSB0aGUgbWV0aG9kIGZvciB1c2UgbGF0ZXIgaW4gdGhlIHJlc3BvbnNlIHBoYXNlCiAgICAgICAgc2VsZi5fbWV0aG9kID0gbWV0aG9kCgogICAgICAgIHVybCA9IHVybCBvciAnLycKICAgICAgICBzZWxmLl92YWxpZGF0ZV9wYXRoKHVybCkKCiAgICAgICAgcmVxdWVzdCA9ICclcyAlcyAlcycgJSAobWV0aG9kLCB1cmwsIHNlbGYuX2h0dHBfdnNuX3N0cikKCiAgICAgICAgc2VsZi5fb3V0cHV0KHNlbGYuX2VuY29kZV9yZXF1ZXN0KHJlcXVlc3QpKQoKICAgICAgICBpZiBzZWxmLl9odHRwX3ZzbiA9PSAxMToKICAgICAgICAgICAgIyBJc3N1ZSBzb21lIHN0YW5kYXJkIGhlYWRlcnMgZm9yIGJldHRlciBIVFRQLzEuMSBjb21wbGlhbmNlCgogICAgICAgICAgICBpZiBub3Qgc2tpcF9ob3N0OgogICAgICAgICAgICAgICAgIyB0aGlzIGhlYWRlciBpcyBpc3N1ZWQgKm9ubHkqIGZvciBIVFRQLzEuMQogICAgICAgICAgICAgICAgIyBjb25uZWN0aW9ucy4gbW9yZSBzcGVjaWZpY2FsbHksIHRoaXMgbWVhbnMgaXQgaXMKICAgICAgICAgICAgICAgICMgb25seSBpc3N1ZWQgd2hlbiB0aGUgY2xpZW50IHVzZXMgdGhlIG5ldwogICAgICAgICAgICAgICAgIyBIVFRQQ29ubmVjdGlvbigpIGNsYXNzLiBiYWNrd2FyZHMtY29tcGF0IGNsaWVudHMKICAgICAgICAgICAgICAgICMgd2lsbCBiZSB1c2luZyBIVFRQLzEuMCBhbmQgdGhvc2UgY2xpZW50cyBtYXkgYmUKICAgICAgICAgICAgICAgICMgaXNzdWluZyB0aGlzIGhlYWRlciB0aGVtc2VsdmVzLiB3ZSBzaG91bGQgTk9UIGlzc3VlCiAgICAgICAgICAgICAgICAjIGl0IHR3aWNlOyBzb21lIHdlYiBzZXJ2ZXJzIChzdWNoIGFzIEFwYWNoZSkgYmFyZgogICAgICAgICAgICAgICAgIyB3aGVuIHRoZXkgc2VlIHR3byBIb3N0OiBoZWFkZXJzCgogICAgICAgICAgICAgICAgIyBJZiB3ZSBuZWVkIGEgbm9uLXN0YW5kYXJkIHBvcnQsaW5jbHVkZSBpdCBpbiB0aGUKICAgICAgICAgICAgICAgICMgaGVhZGVyLiAgSWYgdGhlIHJlcXVlc3QgaXMgZ29pbmcgdGhyb3VnaCBhIHByb3h5LAogICAgICAgICAgICAgICAgIyBidXQgdGhlIGhvc3Qgb2YgdGhlIGFjdHVhbCBVUkwsIG5vdCB0aGUgaG9zdCBvZiB0aGUKICAgICAgICAgICAgICAgICMgcHJveHkuCgogICAgICAgICAgICAgICAgbmV0bG9jID0gJycKICAgICAgICAgICAgICAgIGlmIHVybC5zdGFydHN3aXRoKCdodHRwJyk6CiAgICAgICAgICAgICAgICAgICAgbmlsLCBuZXRsb2MsIG5pbCwgbmlsLCBuaWwgPSB1cmxzcGxpdCh1cmwpCgogICAgICAgICAgICAgICAgaWYgbmV0bG9jOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgbmV0bG9jX2VuYyA9IG5ldGxvYy5lbmNvZGUoImFzY2lpIikKICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBuZXRsb2NfZW5jID0gbmV0bG9jLmVuY29kZSgiaWRuYSIpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ0hvc3QnLCBuZXRsb2NfZW5jKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl90dW5uZWxfaG9zdDoKICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCA9IHNlbGYuX3R1bm5lbF9ob3N0CiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQgPSBzZWxmLl90dW5uZWxfcG9ydAogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSBzZWxmLmhvc3QKICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCA9IHNlbGYucG9ydAoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RfZW5jID0gaG9zdC5lbmNvZGUoImFzY2lpIikKICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBob3N0X2VuYyA9IGhvc3QuZW5jb2RlKCJpZG5hIikKCiAgICAgICAgICAgICAgICAgICAgIyBBcyBwZXIgUkZDIDI3MywgSVB2NiBhZGRyZXNzIHNob3VsZCBiZSB3cmFwcGVkIHdpdGggW10KICAgICAgICAgICAgICAgICAgICAjIHdoZW4gdXNlZCBhcyBIb3N0IGhlYWRlcgoKICAgICAgICAgICAgICAgICAgICBpZiBob3N0LmZpbmQoJzonKSA+PSAwOgogICAgICAgICAgICAgICAgICAgICAgICBob3N0X2VuYyA9IGInWycgKyBob3N0X2VuYyArIGInXScKCiAgICAgICAgICAgICAgICAgICAgaWYgcG9ydCA9PSBzZWxmLmRlZmF1bHRfcG9ydDoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ0hvc3QnLCBob3N0X2VuYykKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBob3N0X2VuYyA9IGhvc3RfZW5jLmRlY29kZSgiYXNjaWkiKQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignSG9zdCcsICIlczolcyIgJSAoaG9zdF9lbmMsIHBvcnQpKQoKICAgICAgICAgICAgIyBub3RlOiB3ZSBhcmUgYXNzdW1pbmcgdGhhdCBjbGllbnRzIHdpbGwgbm90IGF0dGVtcHQgdG8gc2V0IHRoZXNlCiAgICAgICAgICAgICMgICAgICAgaGVhZGVycyBzaW5jZSAqdGhpcyogbGlicmFyeSBtdXN0IGRlYWwgd2l0aCB0aGUKICAgICAgICAgICAgIyAgICAgICBjb25zZXF1ZW5jZXMuIHRoaXMgYWxzbyBtZWFucyB0aGF0IHdoZW4gdGhlIHN1cHBvcnRpbmcKICAgICAgICAgICAgIyAgICAgICBsaWJyYXJpZXMgYXJlIHVwZGF0ZWQgdG8gcmVjb2duaXplIG90aGVyIGZvcm1zLCB0aGVuIHRoaXMKICAgICAgICAgICAgIyAgICAgICBjb2RlIHNob3VsZCBiZSBjaGFuZ2VkIChyZW1vdmVkIG9yIHVwZGF0ZWQpLgoKICAgICAgICAgICAgIyB3ZSBvbmx5IHdhbnQgYSBDb250ZW50LUVuY29kaW5nIG9mICJpZGVudGl0eSIgc2luY2Ugd2UgZG9uJ3QKICAgICAgICAgICAgIyBzdXBwb3J0IGVuY29kaW5ncyBzdWNoIGFzIHgtZ3ppcCBvciB4LWRlZmxhdGUuCiAgICAgICAgICAgIGlmIG5vdCBza2lwX2FjY2VwdF9lbmNvZGluZzoKICAgICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdBY2NlcHQtRW5jb2RpbmcnLCAnaWRlbnRpdHknKQoKICAgICAgICAgICAgIyB3ZSBjYW4gYWNjZXB0ICJjaHVua2VkIiBUcmFuc2Zlci1FbmNvZGluZ3MsIGJ1dCBubyBvdGhlcnMKICAgICAgICAgICAgIyBOT1RFOiBubyBURSBoZWFkZXIgaW1wbGllcyAqb25seSogImNodW5rZWQiCiAgICAgICAgICAgICNzZWxmLnB1dGhlYWRlcignVEUnLCAnY2h1bmtlZCcpCgogICAgICAgICAgICAjIGlmIFRFIGlzIHN1cHBsaWVkIGluIHRoZSBoZWFkZXIsIHRoZW4gaXQgbXVzdCBhcHBlYXIgaW4gYQogICAgICAgICAgICAjIENvbm5lY3Rpb24gaGVhZGVyLgogICAgICAgICAgICAjc2VsZi5wdXRoZWFkZXIoJ0Nvbm5lY3Rpb24nLCAnVEUnKQoKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEZvciBIVFRQLzEuMCwgdGhlIHNlcnZlciB3aWxsIGFzc3VtZSAibm90IGNodW5rZWQiCiAgICAgICAgICAgIHBhc3MKCiAgICBkZWYgX2VuY29kZV9yZXF1ZXN0KHNlbGYsIHJlcXVlc3QpOgogICAgICAgICMgQVNDSUkgYWxzbyBoZWxwcyBwcmV2ZW50IENWRS0yMDE5LTk3NDAuCiAgICAgICAgcmV0dXJuIHJlcXVlc3QuZW5jb2RlKCdhc2NpaScpCgogICAgZGVmIF92YWxpZGF0ZV9tZXRob2Qoc2VsZiwgbWV0aG9kKToKICAgICAgICAiIiJWYWxpZGF0ZSBhIG1ldGhvZCBuYW1lIGZvciBwdXRyZXF1ZXN0LiIiIgogICAgICAgICMgcHJldmVudCBodHRwIGhlYWRlciBpbmplY3Rpb24KICAgICAgICBtYXRjaCA9IF9jb250YWluc19kaXNhbGxvd2VkX21ldGhvZF9wY2hhcl9yZS5zZWFyY2gobWV0aG9kKQogICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgIGYibWV0aG9kIGNhbid0IGNvbnRhaW4gY29udHJvbCBjaGFyYWN0ZXJzLiB7bWV0aG9kIXJ9ICIKICAgICAgICAgICAgICAgICAgICBmIihmb3VuZCBhdCBsZWFzdCB7bWF0Y2guZ3JvdXAoKSFyfSkiKQoKICAgIGRlZiBfdmFsaWRhdGVfcGF0aChzZWxmLCB1cmwpOgogICAgICAgICIiIlZhbGlkYXRlIGEgdXJsIGZvciBwdXRyZXF1ZXN0LiIiIgogICAgICAgICMgUHJldmVudCBDVkUtMjAxOS05NzQwLgogICAgICAgIG1hdGNoID0gX2NvbnRhaW5zX2Rpc2FsbG93ZWRfdXJsX3BjaGFyX3JlLnNlYXJjaCh1cmwpCiAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgIHJhaXNlIEludmFsaWRVUkwoZiJVUkwgY2FuJ3QgY29udGFpbiBjb250cm9sIGNoYXJhY3RlcnMuIHt1cmwhcn0gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiKGZvdW5kIGF0IGxlYXN0IHttYXRjaC5ncm91cCgpIXJ9KSIpCgogICAgZGVmIF92YWxpZGF0ZV9ob3N0KHNlbGYsIGhvc3QpOgogICAgICAgICIiIlZhbGlkYXRlIGEgaG9zdCBzbyBpdCBkb2Vzbid0IGNvbnRhaW4gY29udHJvbCBjaGFyYWN0ZXJzLiIiIgogICAgICAgICMgUHJldmVudCBDVkUtMjAxOS0xODM0OC4KICAgICAgICBtYXRjaCA9IF9jb250YWluc19kaXNhbGxvd2VkX3VybF9wY2hhcl9yZS5zZWFyY2goaG9zdCkKICAgICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgcmFpc2UgSW52YWxpZFVSTChmIlVSTCBjYW4ndCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVycy4ge2hvc3Qhcn0gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiKGZvdW5kIGF0IGxlYXN0IHttYXRjaC5ncm91cCgpIXJ9KSIpCgogICAgZGVmIHB1dGhlYWRlcihzZWxmLCBoZWFkZXIsICp2YWx1ZXMpOgogICAgICAgICIiIlNlbmQgYSByZXF1ZXN0IGhlYWRlciBsaW5lIHRvIHRoZSBzZXJ2ZXIuCgogICAgICAgIEZvciBleGFtcGxlOiBoLnB1dGhlYWRlcignQWNjZXB0JywgJ3RleHQvaHRtbCcpCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fX3N0YXRlICE9IF9DU19SRVFfU1RBUlRFRDoKICAgICAgICAgICAgcmFpc2UgQ2Fubm90U2VuZEhlYWRlcigpCgogICAgICAgIGlmIGhhc2F0dHIoaGVhZGVyLCAnZW5jb2RlJyk6CiAgICAgICAgICAgIGhlYWRlciA9IGhlYWRlci5lbmNvZGUoJ2FzY2lpJykKCiAgICAgICAgaWYgbm90IF9pc19sZWdhbF9oZWFkZXJfbmFtZShoZWFkZXIpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGhlYWRlciBuYW1lICVyJyAlIChoZWFkZXIsKSkKCiAgICAgICAgdmFsdWVzID0gbGlzdCh2YWx1ZXMpCiAgICAgICAgZm9yIGksIG9uZV92YWx1ZSBpbiBlbnVtZXJhdGUodmFsdWVzKToKICAgICAgICAgICAgaWYgaGFzYXR0cihvbmVfdmFsdWUsICdlbmNvZGUnKToKICAgICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9uZV92YWx1ZS5lbmNvZGUoJ2xhdGluLTEnKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob25lX3ZhbHVlLCBpbnQpOgogICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RyKG9uZV92YWx1ZSkuZW5jb2RlKCdhc2NpaScpCgogICAgICAgICAgICBpZiBfaXNfaWxsZWdhbF9oZWFkZXJfdmFsdWUodmFsdWVzW2ldKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgaGVhZGVyIHZhbHVlICVyJyAlICh2YWx1ZXNbaV0sKSkKCiAgICAgICAgdmFsdWUgPSBiJ1xyXG5cdCcuam9pbih2YWx1ZXMpCiAgICAgICAgaGVhZGVyID0gaGVhZGVyICsgYic6ICcgKyB2YWx1ZQogICAgICAgIHNlbGYuX291dHB1dChoZWFkZXIpCgogICAgZGVmIGVuZGhlYWRlcnMoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUsICosIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAiIiJJbmRpY2F0ZSB0aGF0IHRoZSBsYXN0IGhlYWRlciBsaW5lIGhhcyBiZWVuIHNlbnQgdG8gdGhlIHNlcnZlci4KCiAgICAgICAgVGhpcyBtZXRob2Qgc2VuZHMgdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4gIFRoZSBvcHRpb25hbCBtZXNzYWdlX2JvZHkKICAgICAgICBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwYXNzIGEgbWVzc2FnZSBib2R5IGFzc29jaWF0ZWQgd2l0aCB0aGUKICAgICAgICByZXF1ZXN0LgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX19zdGF0ZSA9PSBfQ1NfUkVRX1NUQVJURUQ6CiAgICAgICAgICAgIHNlbGYuX19zdGF0ZSA9IF9DU19SRVFfU0VOVAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIENhbm5vdFNlbmRIZWFkZXIoKQogICAgICAgIHNlbGYuX3NlbmRfb3V0cHV0KG1lc3NhZ2VfYm9keSwgZW5jb2RlX2NodW5rZWQ9ZW5jb2RlX2NodW5rZWQpCgogICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSwgKiwKICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAiIiJTZW5kIGEgY29tcGxldGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLiIiIgogICAgICAgIHNlbGYuX3NlbmRfcmVxdWVzdChtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycywgZW5jb2RlX2NodW5rZWQpCgogICAgZGVmIF9zZW5kX3JlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMsIGVuY29kZV9jaHVua2VkKToKICAgICAgICAjIEhvbm9yIGV4cGxpY2l0bHkgcmVxdWVzdGVkIEhvc3Q6IGFuZCBBY2NlcHQtRW5jb2Rpbmc6IGhlYWRlcnMuCiAgICAgICAgaGVhZGVyX25hbWVzID0gZnJvemVuc2V0KGsubG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzKQogICAgICAgIHNraXBzID0ge30KICAgICAgICBpZiAnaG9zdCcgaW4gaGVhZGVyX25hbWVzOgogICAgICAgICAgICBza2lwc1snc2tpcF9ob3N0J10gPSAxCiAgICAgICAgaWYgJ2FjY2VwdC1lbmNvZGluZycgaW4gaGVhZGVyX25hbWVzOgogICAgICAgICAgICBza2lwc1snc2tpcF9hY2NlcHRfZW5jb2RpbmcnXSA9IDEKCiAgICAgICAgc2VsZi5wdXRyZXF1ZXN0KG1ldGhvZCwgdXJsLCAqKnNraXBzKQoKICAgICAgICAjIGNodW5rZWQgZW5jb2Rpbmcgd2lsbCBoYXBwZW4gaWYgSFRUUC8xLjEgaXMgdXNlZCBhbmQgZWl0aGVyCiAgICAgICAgIyB0aGUgY2FsbGVyIHBhc3NlcyBlbmNvZGVfY2h1bmtlZD1UcnVlIG9yIHRoZSBmb2xsb3dpbmcKICAgICAgICAjIGNvbmRpdGlvbnMgaG9sZDoKICAgICAgICAjIDEuIGNvbnRlbnQtbGVuZ3RoIGhhcyBub3QgYmVlbiBleHBsaWNpdGx5IHNldAogICAgICAgICMgMi4gdGhlIGJvZHkgaXMgYSBmaWxlIG9yIGl0ZXJhYmxlLCBidXQgbm90IGEgc3RyIG9yIGJ5dGVzLWxpa2UKICAgICAgICAjIDMuIFRyYW5zZmVyLUVuY29kaW5nIGhhcyBOT1QgYmVlbiBleHBsaWNpdGx5IHNldCBieSB0aGUgY2FsbGVyCgogICAgICAgIGlmICdjb250ZW50LWxlbmd0aCcgbm90IGluIGhlYWRlcl9uYW1lczoKICAgICAgICAgICAgIyBvbmx5IGNodW5rIGJvZHkgaWYgbm90IGV4cGxpY2l0bHkgc2V0IGZvciBiYWNrd2FyZHMKICAgICAgICAgICAgIyBjb21wYXRpYmlsaXR5LCBhc3N1bWluZyB0aGUgY2xpZW50IGNvZGUgaXMgYWxyZWFkeSBoYW5kbGluZyB0aGUKICAgICAgICAgICAgIyBjaHVua2luZwogICAgICAgICAgICBpZiAndHJhbnNmZXItZW5jb2RpbmcnIG5vdCBpbiBoZWFkZXJfbmFtZXM6CiAgICAgICAgICAgICAgICAjIGlmIGNvbnRlbnQtbGVuZ3RoIGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IGRldGVybWluZWQsIGZhbGwKICAgICAgICAgICAgICAgICMgYmFjayB0byBjaHVua2VkIGVuY29kaW5nCiAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IEZhbHNlCiAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IHNlbGYuX2dldF9jb250ZW50X2xlbmd0aChib2R5LCBtZXRob2QpCiAgICAgICAgICAgICAgICBpZiBjb250ZW50X2xlbmd0aCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGlmIGJvZHkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnVW5hYmxlIHRvIGRldGVybWluZSBzaXplIG9mICVyJyAlIGJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignVHJhbnNmZXItRW5jb2RpbmcnLCAnY2h1bmtlZCcpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIHN0cihjb250ZW50X2xlbmd0aCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQgPSBGYWxzZQoKICAgICAgICBmb3IgaGRyLCB2YWx1ZSBpbiBoZWFkZXJzLml0ZW1zKCk6CiAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKGhkciwgdmFsdWUpCiAgICAgICAgaWYgaXNpbnN0YW5jZShib2R5LCBzdHIpOgogICAgICAgICAgICAjIFJGQyAyNjE2IFNlY3Rpb24gMy43LjEgc2F5cyB0aGF0IHRleHQgZGVmYXVsdCBoYXMgYQogICAgICAgICAgICAjIGRlZmF1bHQgY2hhcnNldCBvZiBpc28tODg1OS0xLgogICAgICAgICAgICBib2R5ID0gX2VuY29kZShib2R5LCAnYm9keScpCiAgICAgICAgc2VsZi5lbmRoZWFkZXJzKGJvZHksIGVuY29kZV9jaHVua2VkPWVuY29kZV9jaHVua2VkKQoKICAgIGRlZiBnZXRyZXNwb25zZShzZWxmKToKICAgICAgICAiIiJHZXQgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KCiAgICAgICAgSWYgdGhlIEhUVFBDb25uZWN0aW9uIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlLCByZXR1cm5zIGFuCiAgICAgICAgaW5zdGFuY2Ugb2YgSFRUUFJlc3BvbnNlIG9yIG9mIHdoYXRldmVyIG9iamVjdCBpcyByZXR1cm5lZCBieQogICAgICAgIHRoZSByZXNwb25zZV9jbGFzcyB2YXJpYWJsZS4KCiAgICAgICAgSWYgYSByZXF1ZXN0IGhhcyBub3QgYmVlbiBzZW50IG9yIGlmIGEgcHJldmlvdXMgcmVzcG9uc2UgaGFzCiAgICAgICAgbm90IGJlIGhhbmRsZWQsIFJlc3BvbnNlTm90UmVhZHkgaXMgcmFpc2VkLiAgSWYgdGhlIEhUVFAKICAgICAgICByZXNwb25zZSBpbmRpY2F0ZXMgdGhhdCB0aGUgY29ubmVjdGlvbiBzaG91bGQgYmUgY2xvc2VkLCB0aGVuCiAgICAgICAgaXQgd2lsbCBiZSBjbG9zZWQgYmVmb3JlIHRoZSByZXNwb25zZSBpcyByZXR1cm5lZC4gIFdoZW4gdGhlCiAgICAgICAgY29ubmVjdGlvbiBpcyBjbG9zZWQsIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBpcyBjbG9zZWQuCiAgICAgICAgIiIiCgogICAgICAgICMgaWYgYSBwcmlvciByZXNwb25zZSBoYXMgYmVlbiBjb21wbGV0ZWQsIHRoZW4gZm9yZ2V0IGFib3V0IGl0LgogICAgICAgIGlmIHNlbGYuX19yZXNwb25zZSBhbmQgc2VsZi5fX3Jlc3BvbnNlLmlzY2xvc2VkKCk6CiAgICAgICAgICAgIHNlbGYuX19yZXNwb25zZSA9IE5vbmUKCiAgICAgICAgIyBpZiBhIHByaW9yIHJlc3BvbnNlIGV4aXN0cywgdGhlbiBpdCBtdXN0IGJlIGNvbXBsZXRlZCAob3RoZXJ3aXNlLCB3ZQogICAgICAgICMgY2Fubm90IHJlYWQgdGhpcyByZXNwb25zZSdzIGhlYWRlciB0byBkZXRlcm1pbmUgdGhlIGNvbm5lY3Rpb24tY2xvc2UKICAgICAgICAjIGJlaGF2aW9yKQogICAgICAgICMKICAgICAgICAjIG5vdGU6IGlmIGEgcHJpb3IgcmVzcG9uc2UgZXhpc3RlZCwgYnV0IHdhcyBjb25uZWN0aW9uLWNsb3NlLCB0aGVuIHRoZQogICAgICAgICMgc29ja2V0IGFuZCByZXNwb25zZSB3ZXJlIG1hZGUgaW5kZXBlbmRlbnQgb2YgdGhpcyBIVFRQQ29ubmVjdGlvbgogICAgICAgICMgb2JqZWN0IHNpbmNlIGEgbmV3IHJlcXVlc3QgcmVxdWlyZXMgdGhhdCB3ZSBvcGVuIGEgd2hvbGUgbmV3CiAgICAgICAgIyBjb25uZWN0aW9uCiAgICAgICAgIwogICAgICAgICMgdGhpcyBtZWFucyB0aGUgcHJpb3IgcmVzcG9uc2UgaGFkIG9uZSBvZiB0d28gc3RhdGVzOgogICAgICAgICMgICAxKSB3aWxsX2Nsb3NlOiB0aGlzIGNvbm5lY3Rpb24gd2FzIHJlc2V0IGFuZCB0aGUgcHJpb3Igc29ja2V0IGFuZAogICAgICAgICMgICAgICAgICAgICAgICAgICByZXNwb25zZSBvcGVyYXRlIGluZGVwZW5kZW50bHkKICAgICAgICAjICAgMikgcGVyc2lzdGVudDogdGhlIHJlc3BvbnNlIHdhcyByZXRhaW5lZCBhbmQgd2UgYXdhaXQgaXRzCiAgICAgICAgIyAgICAgICAgICAgICAgICAgIGlzY2xvc2VkKCkgc3RhdHVzIHRvIGJlY29tZSB0cnVlLgogICAgICAgICMKICAgICAgICBpZiBzZWxmLl9fc3RhdGUgIT0gX0NTX1JFUV9TRU5UIG9yIHNlbGYuX19yZXNwb25zZToKICAgICAgICAgICAgcmFpc2UgUmVzcG9uc2VOb3RSZWFkeShzZWxmLl9fc3RhdGUpCgogICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXNwb25zZV9jbGFzcyhzZWxmLnNvY2ssIHNlbGYuZGVidWdsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD1zZWxmLl9tZXRob2QpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlc3BvbnNlX2NsYXNzKHNlbGYuc29jaywgbWV0aG9kPXNlbGYuX21ldGhvZCkKCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXNwb25zZS5iZWdpbigpCiAgICAgICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uRXJyb3I6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS53aWxsX2Nsb3NlICE9IF9VTktOT1dOCiAgICAgICAgICAgIHNlbGYuX19zdGF0ZSA9IF9DU19JRExFCgogICAgICAgICAgICBpZiByZXNwb25zZS53aWxsX2Nsb3NlOgogICAgICAgICAgICAgICAgIyB0aGlzIGVmZmVjdGl2ZWx5IHBhc3NlcyB0aGUgY29ubmVjdGlvbiB0byB0aGUgcmVzcG9uc2UKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyByZW1lbWJlciB0aGlzLCBzbyB3ZSBjYW4gdGVsbCB3aGVuIGl0IGlzIGNvbXBsZXRlCiAgICAgICAgICAgICAgICBzZWxmLl9fcmVzcG9uc2UgPSByZXNwb25zZQoKICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICByZXNwb25zZS5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlCgp0cnk6CiAgICBpbXBvcnQgc3NsCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIHBhc3MKZWxzZToKICAgIGNsYXNzIEhUVFBTQ29ubmVjdGlvbihIVFRQQ29ubmVjdGlvbik6CiAgICAgICAgIlRoaXMgY2xhc3MgYWxsb3dzIGNvbW11bmljYXRpb24gdmlhIFNTTC4iCgogICAgICAgIGRlZmF1bHRfcG9ydCA9IEhUVFBTX1BPUlQKCiAgICAgICAgIyBYWFggU2hvdWxkIGtleV9maWxlIGFuZCBjZXJ0X2ZpbGUgYmUgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgY29udGV4dD8KCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQ9Tm9uZSwga2V5X2ZpbGU9Tm9uZSwgY2VydF9maWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAogICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lLCAqLCBjb250ZXh0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPU5vbmUsIGJsb2Nrc2l6ZT04MTkyKToKICAgICAgICAgICAgc3VwZXIoSFRUUFNDb25uZWN0aW9uLCBzZWxmKS5fX2luaXRfXyhob3N0LCBwb3J0LCB0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZT1ibG9ja3NpemUpCiAgICAgICAgICAgIGlmIChrZXlfZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0X2ZpbGUgaXMgbm90IE5vbmUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWUgaXMgbm90IE5vbmUpOgogICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlfZmlsZSwgY2VydF9maWxlIGFuZCBjaGVja19ob3N0bmFtZSBhcmUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVwcmVjYXRlZCwgdXNlIGEgY3VzdG9tIGNvbnRleHQgaW5zdGVhZC4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgIHNlbGYua2V5X2ZpbGUgPSBrZXlfZmlsZQogICAgICAgICAgICBzZWxmLmNlcnRfZmlsZSA9IGNlcnRfZmlsZQogICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLl9jcmVhdGVfZGVmYXVsdF9odHRwc19jb250ZXh0KCkKICAgICAgICAgICAgICAgICMgc2VuZCBBTFBOIGV4dGVuc2lvbiB0byBpbmRpY2F0ZSBIVFRQLzEuMSBwcm90b2NvbAogICAgICAgICAgICAgICAgaWYgc2VsZi5faHR0cF92c24gPT0gMTE6CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMoWydodHRwLzEuMSddKQogICAgICAgICAgICAgICAgIyBlbmFibGUgUEhBIGZvciBUTFMgMS4zIGNvbm5lY3Rpb25zIGlmIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgaWYgY29udGV4dC5wb3N0X2hhbmRzaGFrZV9hdXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdF9oYW5kc2hha2VfYXV0aCA9IFRydWUKICAgICAgICAgICAgd2lsbF92ZXJpZnkgPSBjb250ZXh0LnZlcmlmeV9tb2RlICE9IHNzbC5DRVJUX05PTkUKICAgICAgICAgICAgaWYgY2hlY2tfaG9zdG5hbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lID0gY29udGV4dC5jaGVja19ob3N0bmFtZQogICAgICAgICAgICBpZiBjaGVja19ob3N0bmFtZSBhbmQgbm90IHdpbGxfdmVyaWZ5OgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2hlY2tfaG9zdG5hbWUgbmVlZHMgYSBTU0wgY29udGV4dCB3aXRoICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBDRVJUX09QVElPTkFMIG9yIENFUlRfUkVRVUlSRUQiKQogICAgICAgICAgICBpZiBrZXlfZmlsZSBvciBjZXJ0X2ZpbGU6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0X2ZpbGUsIGtleV9maWxlKQogICAgICAgICAgICAgICAgIyBjZXJ0IGFuZCBrZXkgZmlsZSBtZWFucyB0aGUgdXNlciB3YW50cyB0byBhdXRoZW50aWNhdGUuCiAgICAgICAgICAgICAgICAjIGVuYWJsZSBUTFMgMS4zIFBIQSBpbXBsaWNpdGx5IGV2ZW4gZm9yIGN1c3RvbSBjb250ZXh0cy4KICAgICAgICAgICAgICAgIGlmIGNvbnRleHQucG9zdF9oYW5kc2hha2VfYXV0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RfaGFuZHNoYWtlX2F1dGggPSBUcnVlCiAgICAgICAgICAgIHNlbGYuX2NvbnRleHQgPSBjb250ZXh0CiAgICAgICAgICAgIGlmIGNoZWNrX2hvc3RuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fY29udGV4dC5jaGVja19ob3N0bmFtZSA9IGNoZWNrX2hvc3RuYW1lCgogICAgICAgIGRlZiBjb25uZWN0KHNlbGYpOgogICAgICAgICAgICAiQ29ubmVjdCB0byBhIGhvc3Qgb24gYSBnaXZlbiAoU1NMKSBwb3J0LiIKCiAgICAgICAgICAgIHN1cGVyKCkuY29ubmVjdCgpCgogICAgICAgICAgICBpZiBzZWxmLl90dW5uZWxfaG9zdDoKICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZSA9IHNlbGYuX3R1bm5lbF9ob3N0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUgPSBzZWxmLmhvc3QKCiAgICAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2NvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUpCgogICAgX19hbGxfXy5hcHBlbmQoIkhUVFBTQ29ubmVjdGlvbiIpCgpjbGFzcyBIVFRQRXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAgICAjIFN1YmNsYXNzZXMgdGhhdCBkZWZpbmUgYW4gX19pbml0X18gbXVzdCBjYWxsIEV4Y2VwdGlvbi5fX2luaXRfXwogICAgIyBvciBkZWZpbmUgc2VsZi5hcmdzLiAgT3RoZXJ3aXNlLCBzdHIoKSB3aWxsIGZhaWwuCiAgICBwYXNzCgpjbGFzcyBOb3RDb25uZWN0ZWQoSFRUUEV4Y2VwdGlvbik6CiAgICBwYXNzCgpjbGFzcyBJbnZhbGlkVVJMKEhUVFBFeGNlcHRpb24pOgogICAgcGFzcwoKY2xhc3MgVW5rbm93blByb3RvY29sKEhUVFBFeGNlcHRpb24pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcnNpb24pOgogICAgICAgIHNlbGYuYXJncyA9IHZlcnNpb24sCiAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgoKY2xhc3MgVW5rbm93blRyYW5zZmVyRW5jb2RpbmcoSFRUUEV4Y2VwdGlvbik6CiAgICBwYXNzCgpjbGFzcyBVbmltcGxlbWVudGVkRmlsZU1vZGUoSFRUUEV4Y2VwdGlvbik6CiAgICBwYXNzCgpjbGFzcyBJbmNvbXBsZXRlUmVhZChIVFRQRXhjZXB0aW9uKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWFsLCBleHBlY3RlZD1Ob25lKToKICAgICAgICBzZWxmLmFyZ3MgPSBwYXJ0aWFsLAogICAgICAgIHNlbGYucGFydGlhbCA9IHBhcnRpYWwKICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLmV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBlID0gJywgJWkgbW9yZSBleHBlY3RlZCcgJSBzZWxmLmV4cGVjdGVkCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZSA9ICcnCiAgICAgICAgcmV0dXJuICclcyglaSBieXRlcyByZWFkJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLnBhcnRpYWwpLCBlKQogICAgX19zdHJfXyA9IG9iamVjdC5fX3N0cl9fCgpjbGFzcyBJbXByb3BlckNvbm5lY3Rpb25TdGF0ZShIVFRQRXhjZXB0aW9uKToKICAgIHBhc3MKCmNsYXNzIENhbm5vdFNlbmRSZXF1ZXN0KEltcHJvcGVyQ29ubmVjdGlvblN0YXRlKToKICAgIHBhc3MKCmNsYXNzIENhbm5vdFNlbmRIZWFkZXIoSW1wcm9wZXJDb25uZWN0aW9uU3RhdGUpOgogICAgcGFzcwoKY2xhc3MgUmVzcG9uc2VOb3RSZWFkeShJbXByb3BlckNvbm5lY3Rpb25TdGF0ZSk6CiAgICBwYXNzCgpjbGFzcyBCYWRTdGF0dXNMaW5lKEhUVFBFeGNlcHRpb24pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmUpOgogICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICBsaW5lID0gcmVwcihsaW5lKQogICAgICAgIHNlbGYuYXJncyA9IGxpbmUsCiAgICAgICAgc2VsZi5saW5lID0gbGluZQoKY2xhc3MgTGluZVRvb0xvbmcoSFRUUEV4Y2VwdGlvbik6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZV90eXBlKToKICAgICAgICBIVFRQRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsICJnb3QgbW9yZSB0aGFuICVkIGJ5dGVzIHdoZW4gcmVhZGluZyAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKF9NQVhMSU5FLCBsaW5lX3R5cGUpKQoKY2xhc3MgUmVtb3RlRGlzY29ubmVjdGVkKENvbm5lY3Rpb25SZXNldEVycm9yLCBCYWRTdGF0dXNMaW5lKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KToKICAgICAgICBCYWRTdGF0dXNMaW5lLl9faW5pdF9fKHNlbGYsICIiKQogICAgICAgIENvbm5lY3Rpb25SZXNldEVycm9yLl9faW5pdF9fKHNlbGYsICpwb3MsICoqa3cpCgojIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQplcnJvciA9IEhUVFBFeGNlcHRpb24KUEsDBBQAAAAAAAMgo1ZHXRJSzS4BAM0uAQARAAAAaHR0cC9jb29raWVqYXIucHlyIiIiSFRUUCBjb29raWUgaGFuZGxpbmcgZm9yIHdlYiBjbGllbnRzLgoKVGhpcyBtb2R1bGUgaGFzIChub3cgZmFpcmx5IGRpc3RhbnQpIG9yaWdpbnMgaW4gR2lzbGUgQWFzJyBQZXJsIG1vZHVsZQpIVFRQOjpDb29raWVzLCBmcm9tIHRoZSBsaWJ3d3ctcGVybCBsaWJyYXJ5LgoKRG9jc3RyaW5ncywgY29tbWVudHMgYW5kIGRlYnVnIHN0cmluZ3MgaW4gdGhpcyBjb2RlIHJlZmVyIHRvIHRoZQphdHRyaWJ1dGVzIG9mIHRoZSBIVFRQIGNvb2tpZSBzeXN0ZW0gYXMgY29va2llLWF0dHJpYnV0ZXMsIHRvIGRpc3Rpbmd1aXNoCnRoZW0gY2xlYXJseSBmcm9tIFB5dGhvbiBhdHRyaWJ1dGVzLgoKQ2xhc3MgZGlhZ3JhbSAobm90ZSB0aGF0IEJTRERCQ29va2llSmFyIGFuZCB0aGUgTVNJRSogY2xhc3NlcyBhcmUgbm90CmRpc3RyaWJ1dGVkIHdpdGggdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5LCBidXQgYXJlIGF2YWlsYWJsZSBmcm9tCmh0dHA6Ly93d3dzZWFyY2guc2YubmV0Lyk6CgogICAgICAgICAgICAgICAgICAgICAgICBDb29raWVKYXJfX19fCiAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgIFwgICAgICBcCiAgICAgICAgICAgIEZpbGVDb29raWVKYXIgICAgICBcICAgICAgXAogICAgICAgICAgICAgLyAgICB8ICAgXCAgICAgICAgIFwgICAgICBcCiBNb3ppbGxhQ29va2llSmFyIHwgTFdQQ29va2llSmFyIFwgICAgICBcCiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgXAogICAgICAgICAgICAgICAgICB8ICAgLS0tTVNJRUJhc2UgfCAgICAgICBcCiAgICAgICAgICAgICAgICAgIHwgIC8gICAgICB8ICAgICB8ICAgICAgICBcCiAgICAgICAgICAgICAgICAgIHwgLyAgIE1TSUVEQkNvb2tpZUphciBCU0REQkNvb2tpZUphcgogICAgICAgICAgICAgICAgICB8LwogICAgICAgICAgICAgICBNU0lFQ29va2llSmFyCgoiIiIKCl9fYWxsX18gPSBbJ0Nvb2tpZScsICdDb29raWVKYXInLCAnQ29va2llUG9saWN5JywgJ0RlZmF1bHRDb29raWVQb2xpY3knLAogICAgICAgICAgICdGaWxlQ29va2llSmFyJywgJ0xXUENvb2tpZUphcicsICdMb2FkRXJyb3InLCAnTW96aWxsYUNvb2tpZUphciddCgppbXBvcnQgb3MKaW1wb3J0IGNvcHkKaW1wb3J0IGRhdGV0aW1lCmltcG9ydCByZQppbXBvcnQgdGltZQppbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAppbXBvcnQgdGhyZWFkaW5nIGFzIF90aHJlYWRpbmcKaW1wb3J0IGh0dHAuY2xpZW50ICAjIG9ubHkgZm9yIHRoZSBkZWZhdWx0IEhUVFAgcG9ydApmcm9tIGNhbGVuZGFyIGltcG9ydCB0aW1lZ20KCmRlYnVnID0gRmFsc2UgICAjIHNldCB0byBUcnVlIHRvIGVuYWJsZSBkZWJ1Z2dpbmcgdmlhIHRoZSBsb2dnaW5nIG1vZHVsZQpsb2dnZXIgPSBOb25lCgpkZWYgX2RlYnVnKCphcmdzKToKICAgIGlmIG5vdCBkZWJ1ZzoKICAgICAgICByZXR1cm4KICAgIGdsb2JhbCBsb2dnZXIKICAgIGlmIG5vdCBsb2dnZXI6CiAgICAgICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaHR0cC5jb29raWVqYXIiKQogICAgcmV0dXJuIGxvZ2dlci5kZWJ1ZygqYXJncykKCkhUVFBPTkxZX0FUVFIgPSAiSFRUUE9ubHkiCkhUVFBPTkxZX1BSRUZJWCA9ICIjSHR0cE9ubHlfIgpERUZBVUxUX0hUVFBfUE9SVCA9IHN0cihodHRwLmNsaWVudC5IVFRQX1BPUlQpCk5FVFNDQVBFX01BR0lDX1JHWCA9IHJlLmNvbXBpbGUoIiMoIE5ldHNjYXBlKT8gSFRUUCBDb29raWUgRmlsZSIpCk1JU1NJTkdfRklMRU5BTUVfVEVYVCA9ICgiYSBmaWxlbmFtZSB3YXMgbm90IHN1cHBsaWVkIChub3Igd2FzIHRoZSBDb29raWVKYXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlIGluaXRpYWxpc2VkIHdpdGggb25lKSIpCk5FVFNDQVBFX0hFQURFUl9URVhUID0gICIiIlwKIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCiMgaHR0cDovL2N1cmwuaGF4eC5zZS9yZmMvY29va2llX3NwZWMuaHRtbAojIFRoaXMgaXMgYSBnZW5lcmF0ZWQgZmlsZSEgIERvIG5vdCBlZGl0LgoKIiIiCgpkZWYgX3dhcm5fdW5oYW5kbGVkX2V4Y2VwdGlvbigpOgogICAgIyBUaGVyZSBhcmUgYSBmZXcgY2F0Y2gtYWxsIGV4Y2VwdDogc3RhdGVtZW50cyBpbiB0aGlzIG1vZHVsZSwgZm9yCiAgICAjIGNhdGNoaW5nIGlucHV0IHRoYXQncyBiYWQgaW4gdW5leHBlY3RlZCB3YXlzLiAgV2FybiBpZiBhbnkKICAgICMgZXhjZXB0aW9ucyBhcmUgY2F1Z2h0IHRoZXJlLgogICAgaW1wb3J0IGlvLCB3YXJuaW5ncywgdHJhY2ViYWNrCiAgICBmID0gaW8uU3RyaW5nSU8oKQogICAgdHJhY2ViYWNrLnByaW50X2V4YyhOb25lLCBmKQogICAgbXNnID0gZi5nZXR2YWx1ZSgpCiAgICB3YXJuaW5ncy53YXJuKCJodHRwLmNvb2tpZWphciBidWchXG4lcyIgJSBtc2csIHN0YWNrbGV2ZWw9MikKCgojIERhdGUvdGltZSBjb252ZXJzaW9uCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkVQT0NIX1lFQVIgPSAxOTcwCmRlZiBfdGltZWdtKHR0KToKICAgIHllYXIsIG1vbnRoLCBtZGF5LCBob3VyLCBtaW4sIHNlYyA9IHR0Wzo2XQogICAgaWYgKCh5ZWFyID49IEVQT0NIX1lFQVIpIGFuZCAoMSA8PSBtb250aCA8PSAxMikgYW5kICgxIDw9IG1kYXkgPD0gMzEpIGFuZAogICAgICAgICgwIDw9IGhvdXIgPD0gMjQpIGFuZCAoMCA8PSBtaW4gPD0gNTkpIGFuZCAoMCA8PSBzZWMgPD0gNjEpKToKICAgICAgICByZXR1cm4gdGltZWdtKHR0KQogICAgZWxzZToKICAgICAgICByZXR1cm4gTm9uZQoKREFZUyA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl0KTU9OVEhTID0gWyJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiXQpNT05USFNfTE9XRVIgPSBbbW9udGgubG93ZXIoKSBmb3IgbW9udGggaW4gTU9OVEhTXQoKZGVmIHRpbWUyaXNveih0PU5vbmUpOgogICAgIiIiUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aW1lIGluIHNlY29uZHMgc2luY2UgZXBvY2gsIHQuCgogICAgSWYgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRob3V0IGFuIGFyZ3VtZW50LCBpdCB3aWxsIHVzZSB0aGUgY3VycmVudAogICAgdGltZS4KCiAgICBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBzdHJpbmcgaXMgbGlrZSAiWVlZWS1NTS1ERCBoaDptbTpzc1oiLAogICAgcmVwcmVzZW50aW5nIFVuaXZlcnNhbCBUaW1lIChVVEMsIGFrYSBHTVQpLiAgQW4gZXhhbXBsZSBvZiB0aGlzIGZvcm1hdCBpczoKCiAgICAxOTk0LTExLTI0IDA4OjQ5OjM3WgoKICAgICIiIgogICAgaWYgdCBpcyBOb25lOgogICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93KCkKICAgIGVsc2U6CiAgICAgICAgZHQgPSBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHQpCiAgICByZXR1cm4gIiUwNGQtJTAyZC0lMDJkICUwMmQ6JTAyZDolMDJkWiIgJSAoCiAgICAgICAgZHQueWVhciwgZHQubW9udGgsIGR0LmRheSwgZHQuaG91ciwgZHQubWludXRlLCBkdC5zZWNvbmQpCgpkZWYgdGltZTJuZXRzY2FwZSh0PU5vbmUpOgogICAgIiIiUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aW1lIGluIHNlY29uZHMgc2luY2UgZXBvY2gsIHQuCgogICAgSWYgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRob3V0IGFuIGFyZ3VtZW50LCBpdCB3aWxsIHVzZSB0aGUgY3VycmVudAogICAgdGltZS4KCiAgICBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBzdHJpbmcgaXMgbGlrZSB0aGlzOgoKICAgIFdlZCwgREQtTW9uLVlZWVkgSEg6TU06U1MgR01UCgogICAgIiIiCiAgICBpZiB0IGlzIE5vbmU6CiAgICAgICAgZHQgPSBkYXRldGltZS5kYXRldGltZS51dGNub3coKQogICAgZWxzZToKICAgICAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodCkKICAgIHJldHVybiAiJXMsICUwMmQtJXMtJTA0ZCAlMDJkOiUwMmQ6JTAyZCBHTVQiICUgKAogICAgICAgIERBWVNbZHQud2Vla2RheSgpXSwgZHQuZGF5LCBNT05USFNbZHQubW9udGgtMV0sCiAgICAgICAgZHQueWVhciwgZHQuaG91ciwgZHQubWludXRlLCBkdC5zZWNvbmQpCgoKVVRDX1pPTkVTID0geyJHTVQiOiBOb25lLCAiVVRDIjogTm9uZSwgIlVUIjogTm9uZSwgIloiOiBOb25lfQoKVElNRVpPTkVfUkUgPSByZS5jb21waWxlKHIiXihbLStdKT8oXGRcZD8pOj8oXGRcZCk/JCIsIHJlLkFTQ0lJKQpkZWYgb2Zmc2V0X2Zyb21fdHpfc3RyaW5nKHR6KToKICAgIG9mZnNldCA9IE5vbmUKICAgIGlmIHR6IGluIFVUQ19aT05FUzoKICAgICAgICBvZmZzZXQgPSAwCiAgICBlbHNlOgogICAgICAgIG0gPSBUSU1FWk9ORV9SRS5zZWFyY2godHopCiAgICAgICAgaWYgbToKICAgICAgICAgICAgb2Zmc2V0ID0gMzYwMCAqIGludChtLmdyb3VwKDIpKQogICAgICAgICAgICBpZiBtLmdyb3VwKDMpOgogICAgICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgNjAgKiBpbnQobS5ncm91cCgzKSkKICAgICAgICAgICAgaWYgbS5ncm91cCgxKSA9PSAnLSc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0CiAgICByZXR1cm4gb2Zmc2V0CgpkZWYgX3N0cjJ0aW1lKGRheSwgbW9uLCB5ciwgaHIsIG1pbiwgc2VjLCB0eik6CiAgICB5ciA9IGludCh5cikKICAgIGlmIHlyID4gZGF0ZXRpbWUuTUFYWUVBUjoKICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgdHJhbnNsYXRlIG1vbnRoIG5hbWUgdG8gbnVtYmVyCiAgICAjIG1vbnRoIG51bWJlcnMgc3RhcnQgd2l0aCAxIChKYW51YXJ5KQogICAgdHJ5OgogICAgICAgIG1vbiA9IE1PTlRIU19MT1dFUi5pbmRleChtb24ubG93ZXIoKSkrMQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIyBtYXliZSBpdCdzIGFscmVhZHkgYSBudW1iZXIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltb24gPSBpbnQobW9uKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGlmIDEgPD0gaW1vbiA8PSAxMjoKICAgICAgICAgICAgbW9uID0gaW1vbgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgIyBtYWtlIHN1cmUgY2xvY2sgZWxlbWVudHMgYXJlIGRlZmluZWQKICAgIGlmIGhyIGlzIE5vbmU6IGhyID0gMAogICAgaWYgbWluIGlzIE5vbmU6IG1pbiA9IDAKICAgIGlmIHNlYyBpcyBOb25lOiBzZWMgPSAwCgogICAgZGF5ID0gaW50KGRheSkKICAgIGhyID0gaW50KGhyKQogICAgbWluID0gaW50KG1pbikKICAgIHNlYyA9IGludChzZWMpCgogICAgaWYgeXIgPCAxMDAwOgogICAgICAgICMgZmluZCAib2J2aW91cyIgeWVhcgogICAgICAgIGN1cl95ciA9IHRpbWUubG9jYWx0aW1lKHRpbWUudGltZSgpKVswXQogICAgICAgIG0gPSBjdXJfeXIgJSAxMDAKICAgICAgICB0bXAgPSB5cgogICAgICAgIHlyID0geXIgKyBjdXJfeXIgLSBtCiAgICAgICAgbSA9IG0gLSB0bXAKICAgICAgICBpZiBhYnMobSkgPiA1MDoKICAgICAgICAgICAgaWYgbSA+IDA6IHlyID0geXIgKyAxMDAKICAgICAgICAgICAgZWxzZTogeXIgPSB5ciAtIDEwMAoKICAgICMgY29udmVydCBVVEMgdGltZSB0dXBsZSB0byBzZWNvbmRzIHNpbmNlIGVwb2NoIChub3QgdGltZXpvbmUtYWRqdXN0ZWQpCiAgICB0ID0gX3RpbWVnbSgoeXIsIG1vbiwgZGF5LCBociwgbWluLCBzZWMsIHR6KSkKCiAgICBpZiB0IGlzIG5vdCBOb25lOgogICAgICAgICMgYWRqdXN0IHRpbWUgdXNpbmcgdGltZXpvbmUgc3RyaW5nLCB0byBnZXQgYWJzb2x1dGUgdGltZSBzaW5jZSBlcG9jaAogICAgICAgIGlmIHR6IGlzIE5vbmU6CiAgICAgICAgICAgIHR6ID0gIlVUQyIKICAgICAgICB0eiA9IHR6LnVwcGVyKCkKICAgICAgICBvZmZzZXQgPSBvZmZzZXRfZnJvbV90el9zdHJpbmcodHopCiAgICAgICAgaWYgb2Zmc2V0IGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgdCA9IHQgLSBvZmZzZXQKCiAgICByZXR1cm4gdAoKU1RSSUNUX0RBVEVfUkUgPSByZS5jb21waWxlKAogICAgciJeW1NNVFdGXVthLXpdW2Etel0sIChcZFxkKSAoW0pGTUFTT05EXVthLXpdW2Etel0pICIKICAgIHIiKFxkXGRcZFxkKSAoXGRcZCk6KFxkXGQpOihcZFxkKSBHTVQkIiwgcmUuQVNDSUkpCldFRUtEQVlfUkUgPSByZS5jb21waWxlKAogICAgciJeKD86U3VufE1vbnxUdWV8V2VkfFRodXxGcml8U2F0KVthLXpdKiw/XHMqIiwgcmUuSSB8IHJlLkFTQ0lJKQpMT09TRV9IVFRQX0RBVEVfUkUgPSByZS5jb21waWxlKAogICAgciIiIl4KICAgIChcZFxkPykgICAgICAgICAgICAjIGRheQogICAgICAgKD86XHMrfFstXC9dKQogICAgKFx3KykgICAgICAgICAgICAgICMgbW9udGgKICAgICAgICAoPzpccyt8Wy1cL10pCiAgICAoXGQrKSAgICAgICAgICAgICAgIyB5ZWFyCiAgICAoPzoKICAgICAgICAgICg/OlxzK3w6KSAgICAjIHNlcGFyYXRvciBiZWZvcmUgY2xvY2sKICAgICAgIChcZFxkPyk6KFxkXGQpICAjIGhvdXI6bWluCiAgICAgICAoPzo6KFxkXGQpKT8gICAgIyBvcHRpb25hbCBzZWNvbmRzCiAgICApPyAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCBjbG9jawogICAgICAgXHMqCiAgICAoPzoKICAgICAgIChbLStdP1xkezIsNH18KD8hW0FQYXBdW01tXVxiKVtBLVphLXpdKykgIyB0aW1lem9uZQogICAgICAgXHMqCiAgICApPwogICAgKD86CiAgICAgICBcKFx3K1wpICAgICAgICAgIyBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aW1lem9uZSBpbiBwYXJlbnMuCiAgICAgICBccyoKICAgICk/JCIiIiwgcmUuWCB8IHJlLkFTQ0lJKQpkZWYgaHR0cDJ0aW1lKHRleHQpOgogICAgIiIiUmV0dXJucyB0aW1lIGluIHNlY29uZHMgc2luY2UgZXBvY2ggb2YgdGltZSByZXByZXNlbnRlZCBieSBhIHN0cmluZy4KCiAgICBSZXR1cm4gdmFsdWUgaXMgYW4gaW50ZWdlci4KCiAgICBOb25lIGlzIHJldHVybmVkIGlmIHRoZSBmb3JtYXQgb2Ygc3RyIGlzIHVucmVjb2duaXplZCwgdGhlIHRpbWUgaXMgb3V0c2lkZQogICAgdGhlIHJlcHJlc2VudGFibGUgcmFuZ2UsIG9yIHRoZSB0aW1lem9uZSBzdHJpbmcgaXMgbm90IHJlY29nbml6ZWQuICBJZiB0aGUKICAgIHN0cmluZyBjb250YWlucyBubyB0aW1lem9uZSwgVVRDIGlzIGFzc3VtZWQuCgogICAgVGhlIHRpbWV6b25lIGluIHRoZSBzdHJpbmcgbWF5IGJlIG51bWVyaWNhbCAobGlrZSAiLTA4MDAiIG9yICIrMDEwMCIpIG9yIGEKICAgIHN0cmluZyB0aW1lem9uZSAobGlrZSAiVVRDIiwgIkdNVCIsICJCU1QiIG9yICJFU1QiKS4gIEN1cnJlbnRseSwgb25seSB0aGUKICAgIHRpbWV6b25lIHN0cmluZ3MgZXF1aXZhbGVudCB0byBVVEMgKHplcm8gb2Zmc2V0KSBhcmUga25vd24gdG8gdGhlIGZ1bmN0aW9uLgoKICAgIFRoZSBmdW5jdGlvbiBsb29zZWx5IHBhcnNlcyB0aGUgZm9sbG93aW5nIGZvcm1hdHM6CgogICAgV2VkLCAwOSBGZWIgMTk5NCAyMjoyMzozMiBHTVQgICAgICAgLS0gSFRUUCBmb3JtYXQKICAgIFR1ZXNkYXksIDA4LUZlYi05NCAxNDoxNToyOSBHTVQgICAgIC0tIG9sZCByZmM4NTAgSFRUUCBmb3JtYXQKICAgIFR1ZXNkYXksIDA4LUZlYi0xOTk0IDE0OjE1OjI5IEdNVCAgIC0tIGJyb2tlbiByZmM4NTAgSFRUUCBmb3JtYXQKICAgIDA5IEZlYiAxOTk0IDIyOjIzOjMyIEdNVCAgICAgICAgICAgIC0tIEhUVFAgZm9ybWF0IChubyB3ZWVrZGF5KQogICAgMDgtRmViLTk0IDE0OjE1OjI5IEdNVCAgICAgICAgICAgICAgLS0gcmZjODUwIGZvcm1hdCAobm8gd2Vla2RheSkKICAgIDA4LUZlYi0xOTk0IDE0OjE1OjI5IEdNVCAgICAgICAgICAgIC0tIGJyb2tlbiByZmM4NTAgZm9ybWF0IChubyB3ZWVrZGF5KQoKICAgIFRoZSBwYXJzZXIgaWdub3JlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAgVGhlIHRpbWUgbWF5IGJlCiAgICBhYnNlbnQuCgogICAgSWYgdGhlIHllYXIgaXMgZ2l2ZW4gd2l0aCBvbmx5IDIgZGlnaXRzLCB0aGUgZnVuY3Rpb24gd2lsbCBzZWxlY3QgdGhlCiAgICBjZW50dXJ5IHRoYXQgbWFrZXMgdGhlIHllYXIgY2xvc2VzdCB0byB0aGUgY3VycmVudCBkYXRlLgoKICAgICIiIgogICAgIyBmYXN0IGV4aXQgZm9yIHN0cmljdGx5IGNvbmZvcm1pbmcgc3RyaW5nCiAgICBtID0gU1RSSUNUX0RBVEVfUkUuc2VhcmNoKHRleHQpCiAgICBpZiBtOgogICAgICAgIGcgPSBtLmdyb3VwcygpCiAgICAgICAgbW9uID0gTU9OVEhTX0xPV0VSLmluZGV4KGdbMV0ubG93ZXIoKSkgKyAxCiAgICAgICAgdHQgPSAoaW50KGdbMl0pLCBtb24sIGludChnWzBdKSwKICAgICAgICAgICAgICBpbnQoZ1szXSksIGludChnWzRdKSwgZmxvYXQoZ1s1XSkpCiAgICAgICAgcmV0dXJuIF90aW1lZ20odHQpCgogICAgIyBObywgd2UgbmVlZCBzb21lIG1lc3N5IHBhcnNpbmcuLi4KCiAgICAjIGNsZWFuIHVwCiAgICB0ZXh0ID0gdGV4dC5sc3RyaXAoKQogICAgdGV4dCA9IFdFRUtEQVlfUkUuc3ViKCIiLCB0ZXh0LCAxKSAgIyBVc2VsZXNzIHdlZWtkYXkKCiAgICAjIHR6IGlzIHRpbWUgem9uZSBzcGVjaWZpZXIgc3RyaW5nCiAgICBkYXksIG1vbiwgeXIsIGhyLCBtaW4sIHNlYywgdHogPSBbTm9uZV0qNwoKICAgICMgbG9vc2UgcmVnZXhwIHBhcnNlCiAgICBtID0gTE9PU0VfSFRUUF9EQVRFX1JFLnNlYXJjaCh0ZXh0KQogICAgaWYgbSBpcyBub3QgTm9uZToKICAgICAgICBkYXksIG1vbiwgeXIsIGhyLCBtaW4sIHNlYywgdHogPSBtLmdyb3VwcygpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lICAjIGJhZCBmb3JtYXQKCiAgICByZXR1cm4gX3N0cjJ0aW1lKGRheSwgbW9uLCB5ciwgaHIsIG1pbiwgc2VjLCB0eikKCklTT19EQVRFX1JFID0gcmUuY29tcGlsZSgKICAgIHIiIiJeCiAgICAoXGR7NH0pICAgICAgICAgICAgICAjIHllYXIKICAgICAgIFstXC9dPwogICAgKFxkXGQ/KSAgICAgICAgICAgICAgIyBudW1lcmljYWwgbW9udGgKICAgICAgIFstXC9dPwogICAgKFxkXGQ/KSAgICAgICAgICAgICAgIyBkYXkKICAgKD86CiAgICAgICAgICg/OlxzK3xbLTpUdF0pICAjIHNlcGFyYXRvciBiZWZvcmUgY2xvY2sKICAgICAgKFxkXGQ/KTo/KFxkXGQpICAgICMgaG91cjptaW4KICAgICAgKD86Oj8oXGRcZCg/OlwuXGQqKT8pKT8gICMgb3B0aW9uYWwgc2Vjb25kcyAoYW5kIGZyYWN0aW9uYWwpCiAgICk/ICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIGNsb2NrCiAgICAgIFxzKgogICAoPzoKICAgICAgKFstK10/XGRcZD86Pyg6P1xkXGQpPwogICAgICAgfFp8eikgICAgICAgICAgICAgIyB0aW1lem9uZSAgKFogaXMgInplcm8gbWVyaWRpYW4iLCBpLmUuIEdNVCkKICAgICAgXHMqCiAgICk/JCIiIiwgcmUuWCB8IHJlLiBBU0NJSSkKZGVmIGlzbzJ0aW1lKHRleHQpOgogICAgIiIiCiAgICBBcyBmb3IgaHR0cDJ0aW1lLCBidXQgcGFyc2VzIHRoZSBJU08gODYwMSBmb3JtYXRzOgoKICAgIDE5OTQtMDItMDMgMTQ6MTU6MjkgLTAxMDAgICAgLS0gSVNPIDg2MDEgZm9ybWF0CiAgICAxOTk0LTAyLTAzIDE0OjE1OjI5ICAgICAgICAgIC0tIHpvbmUgaXMgb3B0aW9uYWwKICAgIDE5OTQtMDItMDMgICAgICAgICAgICAgICAgICAgLS0gb25seSBkYXRlCiAgICAxOTk0LTAyLTAzVDE0OjE1OjI5ICAgICAgICAgIC0tIFVzZSBUIGFzIHNlcGFyYXRvcgogICAgMTk5NDAyMDNUMTQxNTI5WiAgICAgICAgICAgICAtLSBJU08gODYwMSBjb21wYWN0IGZvcm1hdAogICAgMTk5NDAyMDMgICAgICAgICAgICAgICAgICAgICAtLSBvbmx5IGRhdGUKCiAgICAiIiIKICAgICMgY2xlYW4gdXAKICAgIHRleHQgPSB0ZXh0LmxzdHJpcCgpCgogICAgIyB0eiBpcyB0aW1lIHpvbmUgc3BlY2lmaWVyIHN0cmluZwogICAgZGF5LCBtb24sIHlyLCBociwgbWluLCBzZWMsIHR6ID0gW05vbmVdKjcKCiAgICAjIGxvb3NlIHJlZ2V4cCBwYXJzZQogICAgbSA9IElTT19EQVRFX1JFLnNlYXJjaCh0ZXh0KQogICAgaWYgbSBpcyBub3QgTm9uZToKICAgICAgICAjIFhYWCB0aGVyZSdzIGFuIGV4dHJhIGJpdCBvZiB0aGUgdGltZXpvbmUgSSdtIGlnbm9yaW5nIGhlcmU6IGlzCiAgICAgICAgIyAgIHRoaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvPwogICAgICAgIHlyLCBtb24sIGRheSwgaHIsIG1pbiwgc2VjLCB0eiwgXyA9IG0uZ3JvdXBzKCkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIE5vbmUgICMgYmFkIGZvcm1hdAoKICAgIHJldHVybiBfc3RyMnRpbWUoZGF5LCBtb24sIHlyLCBociwgbWluLCBzZWMsIHR6KQoKCiMgSGVhZGVyIHBhcnNpbmcKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZGVmIHVubWF0Y2hlZChtYXRjaCk6CiAgICAiIiJSZXR1cm4gdW5tYXRjaGVkIHBhcnQgb2YgcmUuTWF0Y2ggb2JqZWN0LiIiIgogICAgc3RhcnQsIGVuZCA9IG1hdGNoLnNwYW4oMCkKICAgIHJldHVybiBtYXRjaC5zdHJpbmdbOnN0YXJ0XSttYXRjaC5zdHJpbmdbZW5kOl0KCkhFQURFUl9UT0tFTl9SRSA9ICAgICAgICByZS5jb21waWxlKHIiXlxzKihbXj1cczssXSspIikKSEVBREVSX1FVT1RFRF9WQUxVRV9SRSA9IHJlLmNvbXBpbGUociJeXHMqPVxzKlwiKFteXCJcXF0qKD86XFwuW15cIlxcXSopKilcIiIpCkhFQURFUl9WQUxVRV9SRSA9ICAgICAgICByZS5jb21waWxlKHIiXlxzKj1ccyooW15cczssXSopIikKSEVBREVSX0VTQ0FQRV9SRSA9IHJlLmNvbXBpbGUociJcXCguKSIpCmRlZiBzcGxpdF9oZWFkZXJfd29yZHMoaGVhZGVyX3ZhbHVlcyk6CiAgICByIiIiUGFyc2UgaGVhZGVyIHZhbHVlcyBpbnRvIGEgbGlzdCBvZiBsaXN0cyBjb250YWluaW5nIGtleSx2YWx1ZSBwYWlycy4KCiAgICBUaGUgZnVuY3Rpb24ga25vd3MgaG93IHRvIGRlYWwgd2l0aCAiLCIsICI7IiBhbmQgIj0iIGFzIHdlbGwgYXMgcXVvdGVkCiAgICB2YWx1ZXMgYWZ0ZXIgIj0iLiAgQSBsaXN0IG9mIHNwYWNlIHNlcGFyYXRlZCB0b2tlbnMgYXJlIHBhcnNlZCBhcyBpZiB0aGV5CiAgICB3ZXJlIHNlcGFyYXRlZCBieSAiOyIuCgogICAgSWYgdGhlIGhlYWRlcl92YWx1ZXMgcGFzc2VkIGFzIGFyZ3VtZW50IGNvbnRhaW5zIG11bHRpcGxlIHZhbHVlcywgdGhlbiB0aGV5CiAgICBhcmUgdHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYSBzaW5nbGUgdmFsdWUgc2VwYXJhdGVkIGJ5IGNvbW1hICIsIi4KCiAgICBUaGlzIG1lYW5zIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgZm9yIHBhcnNpbmcgaGVhZGVyIGZpZWxkcyB0aGF0CiAgICBmb2xsb3cgdGhpcyBzeW50YXggKEJORiBhcyBmcm9tIHRoZSBIVFRQLzEuMSBzcGVjaWZpY2F0aW9uLCBidXQgd2UgcmVsYXgKICAgIHRoZSByZXF1aXJlbWVudCBmb3IgdG9rZW5zKS4KCiAgICAgIGhlYWRlcnMgICAgICAgICAgID0gI2hlYWRlcgogICAgICBoZWFkZXIgICAgICAgICAgICA9ICh0b2tlbiB8IHBhcmFtZXRlcikgKiggWyI7Il0gKHRva2VuIHwgcGFyYW1ldGVyKSkKCiAgICAgIHRva2VuICAgICAgICAgICAgID0gMSo8YW55IENIQVIgZXhjZXB0IENUTHMgb3Igc2VwYXJhdG9ycz4KICAgICAgc2VwYXJhdG9ycyAgICAgICAgPSAiKCIgfCAiKSIgfCAiPCIgfCAiPiIgfCAiQCIKICAgICAgICAgICAgICAgICAgICAgICAgfCAiLCIgfCAiOyIgfCAiOiIgfCAiXCIgfCA8Ij4KICAgICAgICAgICAgICAgICAgICAgICAgfCAiLyIgfCAiWyIgfCAiXSIgfCAiPyIgfCAiPSIKICAgICAgICAgICAgICAgICAgICAgICAgfCAieyIgfCAifSIgfCBTUCB8IEhUCgogICAgICBxdW90ZWQtc3RyaW5nICAgICA9ICggPCI+ICoocWR0ZXh0IHwgcXVvdGVkLXBhaXIgKSA8Ij4gKQogICAgICBxZHRleHQgICAgICAgICAgICA9IDxhbnkgVEVYVCBleGNlcHQgPCI+PgogICAgICBxdW90ZWQtcGFpciAgICAgICA9ICJcIiBDSEFSCgogICAgICBwYXJhbWV0ZXIgICAgICAgICA9IGF0dHJpYnV0ZSAiPSIgdmFsdWUKICAgICAgYXR0cmlidXRlICAgICAgICAgPSB0b2tlbgogICAgICB2YWx1ZSAgICAgICAgICAgICA9IHRva2VuIHwgcXVvdGVkLXN0cmluZwoKICAgIEVhY2ggaGVhZGVyIGlzIHJlcHJlc2VudGVkIGJ5IGEgbGlzdCBvZiBrZXkvdmFsdWUgcGFpcnMuICBUaGUgdmFsdWUgZm9yIGEKICAgIHNpbXBsZSB0b2tlbiAobm90IHBhcnQgb2YgYSBwYXJhbWV0ZXIpIGlzIE5vbmUuICBTeW50YWN0aWNhbGx5IGluY29ycmVjdAogICAgaGVhZGVycyB3aWxsIG5vdCBuZWNlc3NhcmlseSBiZSBwYXJzZWQgYXMgeW91IHdvdWxkIHdhbnQuCgogICAgVGhpcyBpcyBlYXNpZXIgdG8gZGVzY3JpYmUgd2l0aCBzb21lIGV4YW1wbGVzOgoKICAgID4+PiBzcGxpdF9oZWFkZXJfd29yZHMoWydmb289ImJhciI7IHBvcnQ9IjgwLDgxIjsgZGlzY2FyZCwgYmFyPWJheiddKQogICAgW1soJ2ZvbycsICdiYXInKSwgKCdwb3J0JywgJzgwLDgxJyksICgnZGlzY2FyZCcsIE5vbmUpXSwgWygnYmFyJywgJ2JheicpXV0KICAgID4+PiBzcGxpdF9oZWFkZXJfd29yZHMoWyd0ZXh0L2h0bWw7IGNoYXJzZXQ9Imlzby04ODU5LTEiJ10pCiAgICBbWygndGV4dC9odG1sJywgTm9uZSksICgnY2hhcnNldCcsICdpc28tODg1OS0xJyldXQogICAgPj4+IHNwbGl0X2hlYWRlcl93b3JkcyhbcidCYXNpYyByZWFsbT0iXCJmb29cYmFyXCIiJ10pCiAgICBbWygnQmFzaWMnLCBOb25lKSwgKCdyZWFsbScsICciZm9vYmFyIicpXV0KCiAgICAiIiIKICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShoZWFkZXJfdmFsdWVzLCBzdHIpCiAgICByZXN1bHQgPSBbXQogICAgZm9yIHRleHQgaW4gaGVhZGVyX3ZhbHVlczoKICAgICAgICBvcmlnX3RleHQgPSB0ZXh0CiAgICAgICAgcGFpcnMgPSBbXQogICAgICAgIHdoaWxlIHRleHQ6CiAgICAgICAgICAgIG0gPSBIRUFERVJfVE9LRU5fUkUuc2VhcmNoKHRleHQpCiAgICAgICAgICAgIGlmIG06CiAgICAgICAgICAgICAgICB0ZXh0ID0gdW5tYXRjaGVkKG0pCiAgICAgICAgICAgICAgICBuYW1lID0gbS5ncm91cCgxKQogICAgICAgICAgICAgICAgbSA9IEhFQURFUl9RVU9URURfVkFMVUVfUkUuc2VhcmNoKHRleHQpCiAgICAgICAgICAgICAgICBpZiBtOiAgIyBxdW90ZWQgdmFsdWUKICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gdW5tYXRjaGVkKG0pCiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtLmdyb3VwKDEpCiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBIRUFERVJfRVNDQVBFX1JFLnN1YihyIlwxIiwgdmFsdWUpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG0gPSBIRUFERVJfVkFMVUVfUkUuc2VhcmNoKHRleHQpCiAgICAgICAgICAgICAgICAgICAgaWYgbTogICMgdW5xdW90ZWQgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHVubWF0Y2hlZChtKQogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG0uZ3JvdXAoMSkKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yc3RyaXAoKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdmFsdWUsIGEgbG9uZSB0b2tlbgogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE5vbmUKICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQogICAgICAgICAgICBlbGlmIHRleHQubHN0cmlwKCkuc3RhcnRzd2l0aCgiLCIpOgogICAgICAgICAgICAgICAgIyBjb25jYXRlbmF0ZWQgaGVhZGVycywgYXMgcGVyIFJGQyAyNjE2IHNlY3Rpb24gNC4yCiAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5sc3RyaXAoKVsxOl0KICAgICAgICAgICAgICAgIGlmIHBhaXJzOiByZXN1bHQuYXBwZW5kKHBhaXJzKQogICAgICAgICAgICAgICAgcGFpcnMgPSBbXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBza2lwIGp1bmsKICAgICAgICAgICAgICAgIG5vbl9qdW5rLCBucl9qdW5rX2NoYXJzID0gcmUuc3VibihyIl5bPVxzO10qIiwgIiIsIHRleHQpCiAgICAgICAgICAgICAgICBhc3NlcnQgbnJfanVua19jaGFycyA+IDAsICgKICAgICAgICAgICAgICAgICAgICAic3BsaXRfaGVhZGVyX3dvcmRzIGJ1ZzogJyVzJywgJyVzJywgJXMiICUKICAgICAgICAgICAgICAgICAgICAob3JpZ190ZXh0LCB0ZXh0LCBwYWlycykpCiAgICAgICAgICAgICAgICB0ZXh0ID0gbm9uX2p1bmsKICAgICAgICBpZiBwYWlyczogcmVzdWx0LmFwcGVuZChwYWlycykKICAgIHJldHVybiByZXN1bHQKCkhFQURFUl9KT0lOX0VTQ0FQRV9SRSA9IHJlLmNvbXBpbGUociIoW1wiXFxdKSIpCmRlZiBqb2luX2hlYWRlcl93b3JkcyhsaXN0cyk6CiAgICAiIiJEbyB0aGUgaW52ZXJzZSAoYWxtb3N0KSBvZiB0aGUgY29udmVyc2lvbiBkb25lIGJ5IHNwbGl0X2hlYWRlcl93b3Jkcy4KCiAgICBUYWtlcyBhIGxpc3Qgb2YgbGlzdHMgb2YgKGtleSwgdmFsdWUpIHBhaXJzIGFuZCBwcm9kdWNlcyBhIHNpbmdsZSBoZWFkZXIKICAgIHZhbHVlLiAgQXR0cmlidXRlIHZhbHVlcyBhcmUgcXVvdGVkIGlmIG5lZWRlZC4KCiAgICA+Pj4gam9pbl9oZWFkZXJfd29yZHMoW1soInRleHQvcGxhaW4iLCBOb25lKSwgKCJjaGFyc2V0IiwgImlzby04ODU5LTEiKV1dKQogICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9Imlzby04ODU5LTEiJwogICAgPj4+IGpvaW5faGVhZGVyX3dvcmRzKFtbKCJ0ZXh0L3BsYWluIiwgTm9uZSldLCBbKCJjaGFyc2V0IiwgImlzby04ODU5LTEiKV1dKQogICAgJ3RleHQvcGxhaW4sIGNoYXJzZXQ9Imlzby04ODU5LTEiJwoKICAgICIiIgogICAgaGVhZGVycyA9IFtdCiAgICBmb3IgcGFpcnMgaW4gbGlzdHM6CiAgICAgICAgYXR0ciA9IFtdCiAgICAgICAgZm9yIGssIHYgaW4gcGFpcnM6CiAgICAgICAgICAgIGlmIHYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBpZiBub3QgcmUuc2VhcmNoKHIiXlx3KyQiLCB2KToKICAgICAgICAgICAgICAgICAgICB2ID0gSEVBREVSX0pPSU5fRVNDQVBFX1JFLnN1YihyIlxcXDEiLCB2KSAgIyBlc2NhcGUgIiBhbmQgXAogICAgICAgICAgICAgICAgICAgIHYgPSAnIiVzIicgJSB2CiAgICAgICAgICAgICAgICBrID0gIiVzPSVzIiAlIChrLCB2KQogICAgICAgICAgICBhdHRyLmFwcGVuZChrKQogICAgICAgIGlmIGF0dHI6IGhlYWRlcnMuYXBwZW5kKCI7ICIuam9pbihhdHRyKSkKICAgIHJldHVybiAiLCAiLmpvaW4oaGVhZGVycykKCmRlZiBzdHJpcF9xdW90ZXModGV4dCk6CiAgICBpZiB0ZXh0LnN0YXJ0c3dpdGgoJyInKToKICAgICAgICB0ZXh0ID0gdGV4dFsxOl0KICAgIGlmIHRleHQuZW5kc3dpdGgoJyInKToKICAgICAgICB0ZXh0ID0gdGV4dFs6LTFdCiAgICByZXR1cm4gdGV4dAoKZGVmIHBhcnNlX25zX2hlYWRlcnMobnNfaGVhZGVycyk6CiAgICAiIiJBZC1ob2MgcGFyc2VyIGZvciBOZXRzY2FwZSBwcm90b2NvbCBjb29raWUtYXR0cmlidXRlcy4KCiAgICBUaGUgb2xkIE5ldHNjYXBlIGNvb2tpZSBmb3JtYXQgZm9yIFNldC1Db29raWUgY2FuIGZvciBpbnN0YW5jZSBjb250YWluCiAgICBhbiB1bnF1b3RlZCAiLCIgaW4gdGhlIGV4cGlyZXMgZmllbGQsIHNvIHdlIGhhdmUgdG8gdXNlIHRoaXMgYWQtaG9jCiAgICBwYXJzZXIgaW5zdGVhZCBvZiBzcGxpdF9oZWFkZXJfd29yZHMuCgogICAgWFhYIFRoaXMgbWF5IG5vdCBtYWtlIHRoZSBiZXN0IHBvc3NpYmxlIGVmZm9ydCB0byBwYXJzZSBhbGwgdGhlIGNyYXAKICAgIHRoYXQgTmV0c2NhcGUgQ29va2llIGhlYWRlcnMgY29udGFpbi4gIFJvbmFsZCBUc2NoYWxhcidzIEhUVFBDbGllbnQKICAgIHBhcnNlciBpcyBwcm9iYWJseSBiZXR0ZXIsIHNvIGNvdWxkIGRvIHdvcnNlIHRoYW4gZm9sbG93aW5nIHRoYXQgaWYKICAgIHRoaXMgZXZlciBnaXZlcyBhbnkgdHJvdWJsZS4KCiAgICBDdXJyZW50bHksIHRoaXMgaXMgYWxzbyB1c2VkIGZvciBwYXJzaW5nIFJGQyAyMTA5IGNvb2tpZXMuCgogICAgIiIiCiAgICBrbm93bl9hdHRycyA9ICgiZXhwaXJlcyIsICJkb21haW4iLCAicGF0aCIsICJzZWN1cmUiLAogICAgICAgICAgICAgICAgICAgIyBSRkMgMjEwOSBhdHRycyAobWF5IHR1cm4gdXAgaW4gTmV0c2NhcGUgY29va2llcywgdG9vKQogICAgICAgICAgICAgICAgICAgInZlcnNpb24iLCAicG9ydCIsICJtYXgtYWdlIikKCiAgICByZXN1bHQgPSBbXQogICAgZm9yIG5zX2hlYWRlciBpbiBuc19oZWFkZXJzOgogICAgICAgIHBhaXJzID0gW10KICAgICAgICB2ZXJzaW9uX3NldCA9IEZhbHNlCgogICAgICAgICMgWFhYOiBUaGUgZm9sbG93aW5nIGRvZXMgbm90IHN0cmljdGx5IGFkaGVyZSB0byBSRkNzIGluIHRoYXQgZW1wdHkKICAgICAgICAjIG5hbWVzIGFuZCB2YWx1ZXMgYXJlIGxlZ2FsICh0aGUgZm9ybWVyIHdpbGwgb25seSBhcHBlYXIgb25jZSBhbmQgd2lsbAogICAgICAgICMgYmUgb3ZlcndyaXR0ZW4gaWYgbXVsdGlwbGUgb2NjdXJyZW5jZXMgYXJlIHByZXNlbnQpLiBUaGlzIGlzCiAgICAgICAgIyBtb3N0bHkgdG8gZGVhbCB3aXRoIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogICAgICAgIGZvciBpaSwgcGFyYW0gaW4gZW51bWVyYXRlKG5zX2hlYWRlci5zcGxpdCgnOycpKToKICAgICAgICAgICAgcGFyYW0gPSBwYXJhbS5zdHJpcCgpCgogICAgICAgICAgICBrZXksIHNlcCwgdmFsID0gcGFyYW0ucGFydGl0aW9uKCc9JykKICAgICAgICAgICAga2V5ID0ga2V5LnN0cmlwKCkKCiAgICAgICAgICAgIGlmIG5vdCBrZXk6CiAgICAgICAgICAgICAgICBpZiBpaSA9PSAwOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICAjIGFsbG93IGZvciBhIGRpc3RpbmN0aW9uIGJldHdlZW4gcHJlc2VudCBhbmQgZW1wdHkgYW5kIG1pc3NpbmcKICAgICAgICAgICAgIyBhbHRvZ2V0aGVyCiAgICAgICAgICAgIHZhbCA9IHZhbC5zdHJpcCgpIGlmIHNlcCBlbHNlIE5vbmUKCiAgICAgICAgICAgIGlmIGlpICE9IDA6CiAgICAgICAgICAgICAgICBsYyA9IGtleS5sb3dlcigpCiAgICAgICAgICAgICAgICBpZiBsYyBpbiBrbm93bl9hdHRyczoKICAgICAgICAgICAgICAgICAgICBrZXkgPSBsYwoKICAgICAgICAgICAgICAgIGlmIGtleSA9PSAidmVyc2lvbiI6CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFuIFJGQyAyMTA5IGNvb2tpZS4KICAgICAgICAgICAgICAgICAgICBpZiB2YWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHN0cmlwX3F1b3Rlcyh2YWwpCiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9zZXQgPSBUcnVlCiAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAiZXhwaXJlcyI6CiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IGV4cGlyZXMgZGF0ZSB0byBzZWNvbmRzIHNpbmNlIGVwb2NoCiAgICAgICAgICAgICAgICAgICAgaWYgdmFsIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBodHRwMnRpbWUoc3RyaXBfcXVvdGVzKHZhbCkpICAjIE5vbmUgaWYgaW52YWxpZAogICAgICAgICAgICBwYWlycy5hcHBlbmQoKGtleSwgdmFsKSkKCiAgICAgICAgaWYgcGFpcnM6CiAgICAgICAgICAgIGlmIG5vdCB2ZXJzaW9uX3NldDoKICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZCgoInZlcnNpb24iLCAiMCIpKQogICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhaXJzKQoKICAgIHJldHVybiByZXN1bHQKCgpJUFY0X1JFID0gcmUuY29tcGlsZShyIlwuXGQrJCIsIHJlLkFTQ0lJKQpkZWYgaXNfSEROKHRleHQpOgogICAgIiIiUmV0dXJuIFRydWUgaWYgdGV4dCBpcyBhIGhvc3QgZG9tYWluIG5hbWUuIiIiCiAgICAjIFhYWAogICAgIyBUaGlzIG1heSB3ZWxsIGJlIHdyb25nLiAgV2hpY2ggUkZDIGlzIEhETiBkZWZpbmVkIGluLCBpZiBhbnkgKGZvcgogICAgIyAgdGhlIHB1cnBvc2VzIG9mIFJGQyAyOTY1KT8KICAgICMgRm9yIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB3aGF0IGFib3V0IElQdjY/ICBSZW1lbWJlciB0byBsb29rCiAgICAjICBhdCBvdGhlciB1c2VzIG9mIElQVjRfUkUgYWxzbywgaWYgY2hhbmdlIHRoaXMuCiAgICBpZiBJUFY0X1JFLnNlYXJjaCh0ZXh0KToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIHRleHQgPT0gIiI6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiB0ZXh0WzBdID09ICIuIiBvciB0ZXh0Wy0xXSA9PSAiLiI6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gVHJ1ZQoKZGVmIGRvbWFpbl9tYXRjaChBLCBCKToKICAgICIiIlJldHVybiBUcnVlIGlmIGRvbWFpbiBBIGRvbWFpbi1tYXRjaGVzIGRvbWFpbiBCLCBhY2NvcmRpbmcgdG8gUkZDIDI5NjUuCgogICAgQSBhbmQgQiBtYXkgYmUgaG9zdCBkb21haW4gbmFtZXMgb3IgSVAgYWRkcmVzc2VzLgoKICAgIFJGQyAyOTY1LCBzZWN0aW9uIDE6CgogICAgSG9zdCBuYW1lcyBjYW4gYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhbiBJUCBhZGRyZXNzIG9yIGEgSEROIHN0cmluZy4KICAgIFNvbWV0aW1lcyB3ZSBjb21wYXJlIG9uZSBob3N0IG5hbWUgd2l0aCBhbm90aGVyLiAgKFN1Y2ggY29tcGFyaXNvbnMgU0hBTEwKICAgIGJlIGNhc2UtaW5zZW5zaXRpdmUuKSAgSG9zdCBBJ3MgbmFtZSBkb21haW4tbWF0Y2hlcyBob3N0IEIncyBpZgoKICAgICAgICAgKiAgdGhlaXIgaG9zdCBuYW1lIHN0cmluZ3Mgc3RyaW5nLWNvbXBhcmUgZXF1YWw7IG9yCgogICAgICAgICAqIEEgaXMgYSBIRE4gc3RyaW5nIGFuZCBoYXMgdGhlIGZvcm0gTkIsIHdoZXJlIE4gaXMgYSBub24tZW1wdHkKICAgICAgICAgICAgbmFtZSBzdHJpbmcsIEIgaGFzIHRoZSBmb3JtIC5CJywgYW5kIEInIGlzIGEgSEROIHN0cmluZy4gIChTbywKICAgICAgICAgICAgeC55LmNvbSBkb21haW4tbWF0Y2hlcyAuWS5jb20gYnV0IG5vdCBZLmNvbS4pCgogICAgTm90ZSB0aGF0IGRvbWFpbi1tYXRjaCBpcyBub3QgYSBjb21tdXRhdGl2ZSBvcGVyYXRpb246IGEuYi5jLmNvbQogICAgZG9tYWluLW1hdGNoZXMgLmMuY29tLCBidXQgbm90IHRoZSByZXZlcnNlLgoKICAgICIiIgogICAgIyBOb3RlIHRoYXQsIGlmIEEgb3IgQiBhcmUgSVAgYWRkcmVzc2VzLCB0aGUgb25seSByZWxldmFudCBwYXJ0IG9mIHRoZQogICAgIyBkZWZpbml0aW9uIG9mIHRoZSBkb21haW4tbWF0Y2ggYWxnb3JpdGhtIGlzIHRoZSBkaXJlY3Qgc3RyaW5nLWNvbXBhcmUuCiAgICBBID0gQS5sb3dlcigpCiAgICBCID0gQi5sb3dlcigpCiAgICBpZiBBID09IEI6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIGlmIG5vdCBpc19IRE4oQSk6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpID0gQS5yZmluZChCKQogICAgaWYgaSA9PSAtMSBvciBpID09IDA6CiAgICAgICAgIyBBIGRvZXMgbm90IGhhdmUgZm9ybSBOQiwgb3IgTiBpcyB0aGUgZW1wdHkgc3RyaW5nCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBub3QgQi5zdGFydHN3aXRoKCIuIik6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBub3QgaXNfSEROKEJbMTpdKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgpkZWYgbGliZXJhbF9pc19IRE4odGV4dCk6CiAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0ZXh0IGlzIGEgc29ydC1vZi1saWtlIGEgaG9zdCBkb21haW4gbmFtZS4KCiAgICBGb3IgYWNjZXB0aW5nL2Jsb2NraW5nIGRvbWFpbnMuCgogICAgIiIiCiAgICBpZiBJUFY0X1JFLnNlYXJjaCh0ZXh0KToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgpkZWYgdXNlcl9kb21haW5fbWF0Y2goQSwgQik6CiAgICAiIiJGb3IgYmxvY2tpbmcvYWNjZXB0aW5nIGRvbWFpbnMuCgogICAgQSBhbmQgQiBtYXkgYmUgaG9zdCBkb21haW4gbmFtZXMgb3IgSVAgYWRkcmVzc2VzLgoKICAgICIiIgogICAgQSA9IEEubG93ZXIoKQogICAgQiA9IEIubG93ZXIoKQogICAgaWYgbm90IChsaWJlcmFsX2lzX0hETihBKSBhbmQgbGliZXJhbF9pc19IRE4oQikpOgogICAgICAgIGlmIEEgPT0gQjoKICAgICAgICAgICAgIyBlcXVhbCBJUCBhZGRyZXNzZXMKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGluaXRpYWxfZG90ID0gQi5zdGFydHN3aXRoKCIuIikKICAgIGlmIGluaXRpYWxfZG90IGFuZCBBLmVuZHN3aXRoKEIpOgogICAgICAgIHJldHVybiBUcnVlCiAgICBpZiBub3QgaW5pdGlhbF9kb3QgYW5kIEEgPT0gQjoKICAgICAgICByZXR1cm4gVHJ1ZQogICAgcmV0dXJuIEZhbHNlCgpjdXRfcG9ydF9yZSA9IHJlLmNvbXBpbGUociI6XGQrJCIsIHJlLkFTQ0lJKQpkZWYgcmVxdWVzdF9ob3N0KHJlcXVlc3QpOgogICAgIiIiUmV0dXJuIHJlcXVlc3QtaG9zdCwgYXMgZGVmaW5lZCBieSBSRkMgMjk2NS4KCiAgICBWYXJpYXRpb24gZnJvbSBSRkM6IHJldHVybmVkIHZhbHVlIGlzIGxvd2VyY2FzZWQsIGZvciBjb252ZW5pZW50CiAgICBjb21wYXJpc29uLgoKICAgICIiIgogICAgdXJsID0gcmVxdWVzdC5nZXRfZnVsbF91cmwoKQogICAgaG9zdCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZSh1cmwpWzFdCiAgICBpZiBob3N0ID09ICIiOgogICAgICAgIGhvc3QgPSByZXF1ZXN0LmdldF9oZWFkZXIoIkhvc3QiLCAiIikKCiAgICAjIHJlbW92ZSBwb3J0LCBpZiBwcmVzZW50CiAgICBob3N0ID0gY3V0X3BvcnRfcmUuc3ViKCIiLCBob3N0LCAxKQogICAgcmV0dXJuIGhvc3QubG93ZXIoKQoKZGVmIGVmZl9yZXF1ZXN0X2hvc3QocmVxdWVzdCk6CiAgICAiIiJSZXR1cm4gYSB0dXBsZSAocmVxdWVzdC1ob3N0LCBlZmZlY3RpdmUgcmVxdWVzdC1ob3N0IG5hbWUpLgoKICAgIEFzIGRlZmluZWQgYnkgUkZDIDI5NjUsIGV4Y2VwdCBib3RoIGFyZSBsb3dlcmNhc2VkLgoKICAgICIiIgogICAgZXJobiA9IHJlcV9ob3N0ID0gcmVxdWVzdF9ob3N0KHJlcXVlc3QpCiAgICBpZiByZXFfaG9zdC5maW5kKCIuIikgPT0gLTEgYW5kIG5vdCBJUFY0X1JFLnNlYXJjaChyZXFfaG9zdCk6CiAgICAgICAgZXJobiA9IHJlcV9ob3N0ICsgIi5sb2NhbCIKICAgIHJldHVybiByZXFfaG9zdCwgZXJobgoKZGVmIHJlcXVlc3RfcGF0aChyZXF1ZXN0KToKICAgICIiIlBhdGggY29tcG9uZW50IG9mIHJlcXVlc3QtVVJJLCBhcyBkZWZpbmVkIGJ5IFJGQyAyOTY1LiIiIgogICAgdXJsID0gcmVxdWVzdC5nZXRfZnVsbF91cmwoKQogICAgcGFydHMgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKQogICAgcGF0aCA9IGVzY2FwZV9wYXRoKHBhcnRzLnBhdGgpCiAgICBpZiBub3QgcGF0aC5zdGFydHN3aXRoKCIvIik6CiAgICAgICAgIyBmaXggYmFkIFJGQyAyMzk2IGFic29sdXRlVVJJCiAgICAgICAgcGF0aCA9ICIvIiArIHBhdGgKICAgIHJldHVybiBwYXRoCgpkZWYgcmVxdWVzdF9wb3J0KHJlcXVlc3QpOgogICAgaG9zdCA9IHJlcXVlc3QuaG9zdAogICAgaSA9IGhvc3QuZmluZCgnOicpCiAgICBpZiBpID49IDA6CiAgICAgICAgcG9ydCA9IGhvc3RbaSsxOl0KICAgICAgICB0cnk6CiAgICAgICAgICAgIGludChwb3J0KQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBfZGVidWcoIm5vbm51bWVyaWMgcG9ydDogJyVzJyIsIHBvcnQpCiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICBlbHNlOgogICAgICAgIHBvcnQgPSBERUZBVUxUX0hUVFBfUE9SVAogICAgcmV0dXJuIHBvcnQKCiMgQ2hhcmFjdGVycyBpbiBhZGRpdGlvbiB0byBBLVosIGEteiwgMC05LCAnXycsICcuJywgYW5kICctJyB0aGF0IGRvbid0CiMgbmVlZCB0byBiZSBlc2NhcGVkIHRvIGZvcm0gYSB2YWxpZCBIVFRQIFVSTCAoUkZDcyAyMzk2IGFuZCAxNzM4KS4KSFRUUF9QQVRIX1NBRkUgPSAiJS87OkAmPSskLCF+KicoKSIKRVNDQVBFRF9DSEFSX1JFID0gcmUuY29tcGlsZShyIiUoWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkiKQpkZWYgdXBwZXJjYXNlX2VzY2FwZWRfY2hhcihtYXRjaCk6CiAgICByZXR1cm4gIiUlJXMiICUgbWF0Y2guZ3JvdXAoMSkudXBwZXIoKQpkZWYgZXNjYXBlX3BhdGgocGF0aCk6CiAgICAiIiJFc2NhcGUgYW55IGludmFsaWQgY2hhcmFjdGVycyBpbiBIVFRQIFVSTCwgYW5kIHVwcGVyY2FzZSBhbGwgZXNjYXBlcy4iIiIKICAgICMgVGhlcmUncyBubyBrbm93aW5nIHdoYXQgY2hhcmFjdGVyIGVuY29kaW5nIHdhcyB1c2VkIHRvIGNyZWF0ZSBVUkxzCiAgICAjIGNvbnRhaW5pbmcgJS1lc2NhcGVzLCBidXQgc2luY2Ugd2UgaGF2ZSB0byBwaWNrIG9uZSB0byBlc2NhcGUgaW52YWxpZAogICAgIyBwYXRoIGNoYXJhY3RlcnMsIHdlIHBpY2sgVVRGLTgsIGFzIHJlY29tbWVuZGVkIGluIHRoZSBIVE1MIDQuMAogICAgIyBzcGVjaWZpY2F0aW9uOgogICAgIyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2FwcGVuZGl4L25vdGVzLmh0bWwjaC1CLjIuMQogICAgIyBBbmQgaGVyZSwga2luZCBvZjogZHJhZnQtZmllbGRpbmctdXJpLXJmYzIzOTZiaXMtMDMKICAgICMgKEFuZCBpbiBkcmFmdCBJUkkgc3BlY2lmaWNhdGlvbjogZHJhZnQtZHVlcnN0LWlyaS0wNSkKICAgICMgKEFuZCBoZXJlLCBmb3IgbmV3IFVSSSBzY2hlbWVzOiBSRkMgMjcxOCkKICAgIHBhdGggPSB1cmxsaWIucGFyc2UucXVvdGUocGF0aCwgSFRUUF9QQVRIX1NBRkUpCiAgICBwYXRoID0gRVNDQVBFRF9DSEFSX1JFLnN1Yih1cHBlcmNhc2VfZXNjYXBlZF9jaGFyLCBwYXRoKQogICAgcmV0dXJuIHBhdGgKCmRlZiByZWFjaChoKToKICAgICIiIlJldHVybiByZWFjaCBvZiBob3N0IGgsIGFzIGRlZmluZWQgYnkgUkZDIDI5NjUsIHNlY3Rpb24gMS4KCiAgICBUaGUgcmVhY2ggUiBvZiBhIGhvc3QgbmFtZSBIIGlzIGRlZmluZWQgYXMgZm9sbG93czoKCiAgICAgICAqICBJZgoKICAgICAgICAgIC0gIEggaXMgdGhlIGhvc3QgZG9tYWluIG5hbWUgb2YgYSBob3N0OyBhbmQsCgogICAgICAgICAgLSAgSCBoYXMgdGhlIGZvcm0gQS5COyBhbmQKCiAgICAgICAgICAtICBBIGhhcyBubyBlbWJlZGRlZCAodGhhdCBpcywgaW50ZXJpb3IpIGRvdHM7IGFuZAoKICAgICAgICAgIC0gIEIgaGFzIGF0IGxlYXN0IG9uZSBlbWJlZGRlZCBkb3QsIG9yIEIgaXMgdGhlIHN0cmluZyAibG9jYWwiLgogICAgICAgICAgICAgdGhlbiB0aGUgcmVhY2ggb2YgSCBpcyAuQi4KCiAgICAgICAqICBPdGhlcndpc2UsIHRoZSByZWFjaCBvZiBIIGlzIEguCgogICAgPj4+IHJlYWNoKCJ3d3cuYWNtZS5jb20iKQogICAgJy5hY21lLmNvbScKICAgID4+PiByZWFjaCgiYWNtZS5jb20iKQogICAgJ2FjbWUuY29tJwogICAgPj4+IHJlYWNoKCJhY21lLmxvY2FsIikKICAgICcubG9jYWwnCgogICAgIiIiCiAgICBpID0gaC5maW5kKCIuIikKICAgIGlmIGkgPj0gMDoKICAgICAgICAjYSA9IGhbOmldICAjIHRoaXMgbGluZSBpcyBvbmx5IGhlcmUgdG8gc2hvdyB3aGF0IGEgaXMKICAgICAgICBiID0gaFtpKzE6XQogICAgICAgIGkgPSBiLmZpbmQoIi4iKQogICAgICAgIGlmIGlzX0hETihoKSBhbmQgKGkgPj0gMCBvciBiID09ICJsb2NhbCIpOgogICAgICAgICAgICByZXR1cm4gIi4iK2IKICAgIHJldHVybiBoCgpkZWYgaXNfdGhpcmRfcGFydHkocmVxdWVzdCk6CiAgICAiIiIKCiAgICBSRkMgMjk2NSwgc2VjdGlvbiAzLjMuNjoKCiAgICAgICAgQW4gdW52ZXJpZmlhYmxlIHRyYW5zYWN0aW9uIGlzIHRvIGEgdGhpcmQtcGFydHkgaG9zdCBpZiBpdHMgcmVxdWVzdC0KICAgICAgICBob3N0IFUgZG9lcyBub3QgZG9tYWluLW1hdGNoIHRoZSByZWFjaCBSIG9mIHRoZSByZXF1ZXN0LWhvc3QgTyBpbiB0aGUKICAgICAgICBvcmlnaW4gdHJhbnNhY3Rpb24uCgogICAgIiIiCiAgICByZXFfaG9zdCA9IHJlcXVlc3RfaG9zdChyZXF1ZXN0KQogICAgaWYgbm90IGRvbWFpbl9tYXRjaChyZXFfaG9zdCwgcmVhY2gocmVxdWVzdC5vcmlnaW5fcmVxX2hvc3QpKToKICAgICAgICByZXR1cm4gVHJ1ZQogICAgZWxzZToKICAgICAgICByZXR1cm4gRmFsc2UKCgpjbGFzcyBDb29raWU6CiAgICAiIiJIVFRQIENvb2tpZS4KCiAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYm90aCBOZXRzY2FwZSBhbmQgUkZDIDI5NjUgY29va2llcy4KCiAgICBUaGlzIGlzIGRlbGliZXJhdGVseSBhIHZlcnkgc2ltcGxlIGNsYXNzLiAgSXQganVzdCBob2xkcyBhdHRyaWJ1dGVzLiAgSXQncwogICAgcG9zc2libGUgdG8gY29uc3RydWN0IENvb2tpZSBpbnN0YW5jZXMgdGhhdCBkb24ndCBjb21wbHkgd2l0aCB0aGUgY29va2llCiAgICBzdGFuZGFyZHMuICBDb29raWVKYXIubWFrZV9jb29raWVzIGlzIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBDb29raWUKICAgIG9iamVjdHMgLS0gaXQgZGVhbHMgd2l0aCBjb29raWUgcGFyc2luZywgc3VwcGx5aW5nIGRlZmF1bHRzLCBhbmQKICAgIG5vcm1hbGlzaW5nIHRvIHRoZSByZXByZXNlbnRhdGlvbiB1c2VkIGluIHRoaXMgY2xhc3MuICBDb29raWVQb2xpY3kgaXMKICAgIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyB0aGVtIHRvIHNlZSB3aGV0aGVyIHRoZXkgc2hvdWxkIGJlIGFjY2VwdGVkIGZyb20KICAgIGFuZCByZXR1cm5lZCB0byB0aGUgc2VydmVyLgoKICAgIE5vdGUgdGhhdCB0aGUgcG9ydCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgaGVhZGVycywgYnV0IHVuc3BlY2lmaWVkICgiUG9ydCIKICAgIHJhdGhlciB0aGFuIlBvcnQ9ODAiLCBmb3IgZXhhbXBsZSk7IGlmIHRoaXMgaXMgdGhlIGNhc2UsIHBvcnQgaXMgTm9uZS4KCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyc2lvbiwgbmFtZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgcG9ydCwgcG9ydF9zcGVjaWZpZWQsCiAgICAgICAgICAgICAgICAgZG9tYWluLCBkb21haW5fc3BlY2lmaWVkLCBkb21haW5faW5pdGlhbF9kb3QsCiAgICAgICAgICAgICAgICAgcGF0aCwgcGF0aF9zcGVjaWZpZWQsCiAgICAgICAgICAgICAgICAgc2VjdXJlLAogICAgICAgICAgICAgICAgIGV4cGlyZXMsCiAgICAgICAgICAgICAgICAgZGlzY2FyZCwKICAgICAgICAgICAgICAgICBjb21tZW50LAogICAgICAgICAgICAgICAgIGNvbW1lbnRfdXJsLAogICAgICAgICAgICAgICAgIHJlc3QsCiAgICAgICAgICAgICAgICAgcmZjMjEwOT1GYWxzZSwKICAgICAgICAgICAgICAgICApOgoKICAgICAgICBpZiB2ZXJzaW9uIGlzIG5vdCBOb25lOiB2ZXJzaW9uID0gaW50KHZlcnNpb24pCiAgICAgICAgaWYgZXhwaXJlcyBpcyBub3QgTm9uZTogZXhwaXJlcyA9IGludChmbG9hdChleHBpcmVzKSkKICAgICAgICBpZiBwb3J0IGlzIE5vbmUgYW5kIHBvcnRfc3BlY2lmaWVkIGlzIFRydWU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImlmIHBvcnQgaXMgTm9uZSwgcG9ydF9zcGVjaWZpZWQgbXVzdCBiZSBmYWxzZSIpCgogICAgICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24KICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCiAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgIHNlbGYucG9ydF9zcGVjaWZpZWQgPSBwb3J0X3NwZWNpZmllZAogICAgICAgICMgbm9ybWFsaXNlIGNhc2UsIGFzIHBlciBSRkMgMjk2NSBzZWN0aW9uIDMuMy4zCiAgICAgICAgc2VsZi5kb21haW4gPSBkb21haW4ubG93ZXIoKQogICAgICAgIHNlbGYuZG9tYWluX3NwZWNpZmllZCA9IGRvbWFpbl9zcGVjaWZpZWQKICAgICAgICAjIFNpZ2guICBXZSBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgZG9tYWluIGdpdmVuIGluIHRoZQogICAgICAgICMgY29va2llLWF0dHJpYnV0ZSBoYWQgYW4gaW5pdGlhbCBkb3QsIGluIG9yZGVyIHRvIGZvbGxvdyBSRkMgMjk2NQogICAgICAgICMgKGFzIGNsYXJpZmllZCBpbiBkcmFmdCBlcnJhdGEpLiAgTmVlZGVkIGZvciB0aGUgcmV0dXJuZWQgJERvbWFpbgogICAgICAgICMgdmFsdWUuCiAgICAgICAgc2VsZi5kb21haW5faW5pdGlhbF9kb3QgPSBkb21haW5faW5pdGlhbF9kb3QKICAgICAgICBzZWxmLnBhdGggPSBwYXRoCiAgICAgICAgc2VsZi5wYXRoX3NwZWNpZmllZCA9IHBhdGhfc3BlY2lmaWVkCiAgICAgICAgc2VsZi5zZWN1cmUgPSBzZWN1cmUKICAgICAgICBzZWxmLmV4cGlyZXMgPSBleHBpcmVzCiAgICAgICAgc2VsZi5kaXNjYXJkID0gZGlzY2FyZAogICAgICAgIHNlbGYuY29tbWVudCA9IGNvbW1lbnQKICAgICAgICBzZWxmLmNvbW1lbnRfdXJsID0gY29tbWVudF91cmwKICAgICAgICBzZWxmLnJmYzIxMDkgPSByZmMyMTA5CgogICAgICAgIHNlbGYuX3Jlc3QgPSBjb3B5LmNvcHkocmVzdCkKCiAgICBkZWYgaGFzX25vbnN0YW5kYXJkX2F0dHIoc2VsZiwgbmFtZSk6CiAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5fcmVzdAogICAgZGVmIGdldF9ub25zdGFuZGFyZF9hdHRyKHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3QuZ2V0KG5hbWUsIGRlZmF1bHQpCiAgICBkZWYgc2V0X25vbnN0YW5kYXJkX2F0dHIoc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgIHNlbGYuX3Jlc3RbbmFtZV0gPSB2YWx1ZQoKICAgIGRlZiBpc19leHBpcmVkKHNlbGYsIG5vdz1Ob25lKToKICAgICAgICBpZiBub3cgaXMgTm9uZTogbm93ID0gdGltZS50aW1lKCkKICAgICAgICBpZiAoc2VsZi5leHBpcmVzIGlzIG5vdCBOb25lKSBhbmQgKHNlbGYuZXhwaXJlcyA8PSBub3cpOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYucG9ydCBpcyBOb25lOiBwID0gIiIKICAgICAgICBlbHNlOiBwID0gIjoiK3NlbGYucG9ydAogICAgICAgIGxpbWl0ID0gc2VsZi5kb21haW4gKyBwICsgc2VsZi5wYXRoCiAgICAgICAgaWYgc2VsZi52YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgbmFtZXZhbHVlID0gIiVzPSVzIiAlIChzZWxmLm5hbWUsIHNlbGYudmFsdWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbmFtZXZhbHVlID0gc2VsZi5uYW1lCiAgICAgICAgcmV0dXJuICI8Q29va2llICVzIGZvciAlcz4iICUgKG5hbWV2YWx1ZSwgbGltaXQpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGFyZ3MgPSBbXQogICAgICAgIGZvciBuYW1lIGluICgidmVyc2lvbiIsICJuYW1lIiwgInZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgInBvcnQiLCAicG9ydF9zcGVjaWZpZWQiLAogICAgICAgICAgICAgICAgICAgICAiZG9tYWluIiwgImRvbWFpbl9zcGVjaWZpZWQiLCAiZG9tYWluX2luaXRpYWxfZG90IiwKICAgICAgICAgICAgICAgICAgICAgInBhdGgiLCAicGF0aF9zcGVjaWZpZWQiLAogICAgICAgICAgICAgICAgICAgICAic2VjdXJlIiwgImV4cGlyZXMiLCAiZGlzY2FyZCIsICJjb21tZW50IiwgImNvbW1lbnRfdXJsIiwKICAgICAgICAgICAgICAgICAgICAgKToKICAgICAgICAgICAgYXR0ciA9IGdldGF0dHIoc2VsZiwgbmFtZSkKICAgICAgICAgICAgYXJncy5hcHBlbmQoIiVzPSVzIiAlIChuYW1lLCByZXByKGF0dHIpKSkKICAgICAgICBhcmdzLmFwcGVuZCgicmVzdD0lcyIgJSByZXByKHNlbGYuX3Jlc3QpKQogICAgICAgIGFyZ3MuYXBwZW5kKCJyZmMyMTA5PSVzIiAlIHJlcHIoc2VsZi5yZmMyMTA5KSkKICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICIsICIuam9pbihhcmdzKSkKCgpjbGFzcyBDb29raWVQb2xpY3k6CiAgICAiIiJEZWZpbmVzIHdoaWNoIGNvb2tpZXMgZ2V0IGFjY2VwdGVkIGZyb20gYW5kIHJldHVybmVkIHRvIHNlcnZlci4KCiAgICBNYXkgYWxzbyBtb2RpZnkgY29va2llcywgdGhvdWdoIHRoaXMgaXMgcHJvYmFibHkgYSBiYWQgaWRlYS4KCiAgICBUaGUgc3ViY2xhc3MgRGVmYXVsdENvb2tpZVBvbGljeSBkZWZpbmVzIHRoZSBzdGFuZGFyZCBydWxlcyBmb3IgTmV0c2NhcGUKICAgIGFuZCBSRkMgMjk2NSBjb29raWVzIC0tIG92ZXJyaWRlIHRoYXQgaWYgeW91IHdhbnQgYSBjdXN0b21pemVkIHBvbGljeS4KCiAgICAiIiIKICAgIGRlZiBzZXRfb2soc2VsZiwgY29va2llLCByZXF1ZXN0KToKICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiAoYW5kIG9ubHkgaWYpIGNvb2tpZSBzaG91bGQgYmUgYWNjZXB0ZWQgZnJvbSBzZXJ2ZXIuCgogICAgICAgIEN1cnJlbnRseSwgcHJlLWV4cGlyZWQgY29va2llcyBuZXZlciBnZXQgdGhpcyBmYXIgLS0gdGhlIENvb2tpZUphcgogICAgICAgIGNsYXNzIGRlbGV0ZXMgc3VjaCBjb29raWVzIGl0c2VsZi4KCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCgogICAgZGVmIHJldHVybl9vayhzZWxmLCBjb29raWUsIHJlcXVlc3QpOgogICAgICAgICIiIlJldHVybiB0cnVlIGlmIChhbmQgb25seSBpZikgY29va2llIHNob3VsZCBiZSByZXR1cm5lZCB0byBzZXJ2ZXIuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCgogICAgZGVmIGRvbWFpbl9yZXR1cm5fb2soc2VsZiwgZG9tYWluLCByZXF1ZXN0KToKICAgICAgICAiIiJSZXR1cm4gZmFsc2UgaWYgY29va2llcyBzaG91bGQgbm90IGJlIHJldHVybmVkLCBnaXZlbiBjb29raWUgZG9tYWluLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHBhdGhfcmV0dXJuX29rKHNlbGYsIHBhdGgsIHJlcXVlc3QpOgogICAgICAgICIiIlJldHVybiBmYWxzZSBpZiBjb29raWVzIHNob3VsZCBub3QgYmUgcmV0dXJuZWQsIGdpdmVuIGNvb2tpZSBwYXRoLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBUcnVlCgoKY2xhc3MgRGVmYXVsdENvb2tpZVBvbGljeShDb29raWVQb2xpY3kpOgogICAgIiIiSW1wbGVtZW50cyB0aGUgc3RhbmRhcmQgcnVsZXMgZm9yIGFjY2VwdGluZyBhbmQgcmV0dXJuaW5nIGNvb2tpZXMuIiIiCgogICAgRG9tYWluU3RyaWN0Tm9Eb3RzID0gMQogICAgRG9tYWluU3RyaWN0Tm9uRG9tYWluID0gMgogICAgRG9tYWluUkZDMjk2NU1hdGNoID0gNAoKICAgIERvbWFpbkxpYmVyYWwgPSAwCiAgICBEb21haW5TdHJpY3QgPSBEb21haW5TdHJpY3ROb0RvdHN8RG9tYWluU3RyaWN0Tm9uRG9tYWluCgogICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgYmxvY2tlZF9kb21haW5zPU5vbmUsIGFsbG93ZWRfZG9tYWlucz1Ob25lLAogICAgICAgICAgICAgICAgIG5ldHNjYXBlPVRydWUsIHJmYzI5NjU9RmFsc2UsCiAgICAgICAgICAgICAgICAgcmZjMjEwOV9hc19uZXRzY2FwZT1Ob25lLAogICAgICAgICAgICAgICAgIGhpZGVfY29va2llMj1GYWxzZSwKICAgICAgICAgICAgICAgICBzdHJpY3RfZG9tYWluPUZhbHNlLAogICAgICAgICAgICAgICAgIHN0cmljdF9yZmMyOTY1X3VudmVyaWZpYWJsZT1UcnVlLAogICAgICAgICAgICAgICAgIHN0cmljdF9uc191bnZlcmlmaWFibGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgc3RyaWN0X25zX2RvbWFpbj1Eb21haW5MaWJlcmFsLAogICAgICAgICAgICAgICAgIHN0cmljdF9uc19zZXRfaW5pdGlhbF9kb2xsYXI9RmFsc2UsCiAgICAgICAgICAgICAgICAgc3RyaWN0X25zX3NldF9wYXRoPUZhbHNlLAogICAgICAgICAgICAgICAgIHNlY3VyZV9wcm90b2NvbHM9KCJodHRwcyIsICJ3c3MiKQogICAgICAgICAgICAgICAgICk6CiAgICAgICAgIiIiQ29uc3RydWN0b3IgYXJndW1lbnRzIHNob3VsZCBiZSBwYXNzZWQgYXMga2V5d29yZCBhcmd1bWVudHMgb25seS4iIiIKICAgICAgICBzZWxmLm5ldHNjYXBlID0gbmV0c2NhcGUKICAgICAgICBzZWxmLnJmYzI5NjUgPSByZmMyOTY1CiAgICAgICAgc2VsZi5yZmMyMTA5X2FzX25ldHNjYXBlID0gcmZjMjEwOV9hc19uZXRzY2FwZQogICAgICAgIHNlbGYuaGlkZV9jb29raWUyID0gaGlkZV9jb29raWUyCiAgICAgICAgc2VsZi5zdHJpY3RfZG9tYWluID0gc3RyaWN0X2RvbWFpbgogICAgICAgIHNlbGYuc3RyaWN0X3JmYzI5NjVfdW52ZXJpZmlhYmxlID0gc3RyaWN0X3JmYzI5NjVfdW52ZXJpZmlhYmxlCiAgICAgICAgc2VsZi5zdHJpY3RfbnNfdW52ZXJpZmlhYmxlID0gc3RyaWN0X25zX3VudmVyaWZpYWJsZQogICAgICAgIHNlbGYuc3RyaWN0X25zX2RvbWFpbiA9IHN0cmljdF9uc19kb21haW4KICAgICAgICBzZWxmLnN0cmljdF9uc19zZXRfaW5pdGlhbF9kb2xsYXIgPSBzdHJpY3RfbnNfc2V0X2luaXRpYWxfZG9sbGFyCiAgICAgICAgc2VsZi5zdHJpY3RfbnNfc2V0X3BhdGggPSBzdHJpY3RfbnNfc2V0X3BhdGgKICAgICAgICBzZWxmLnNlY3VyZV9wcm90b2NvbHMgPSBzZWN1cmVfcHJvdG9jb2xzCgogICAgICAgIGlmIGJsb2NrZWRfZG9tYWlucyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fYmxvY2tlZF9kb21haW5zID0gdHVwbGUoYmxvY2tlZF9kb21haW5zKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX2Jsb2NrZWRfZG9tYWlucyA9ICgpCgogICAgICAgIGlmIGFsbG93ZWRfZG9tYWlucyBpcyBub3QgTm9uZToKICAgICAgICAgICAgYWxsb3dlZF9kb21haW5zID0gdHVwbGUoYWxsb3dlZF9kb21haW5zKQogICAgICAgIHNlbGYuX2FsbG93ZWRfZG9tYWlucyA9IGFsbG93ZWRfZG9tYWlucwoKICAgIGRlZiBibG9ja2VkX2RvbWFpbnMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBzZXF1ZW5jZSBvZiBibG9ja2VkIGRvbWFpbnMgKGFzIGEgdHVwbGUpLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9ibG9ja2VkX2RvbWFpbnMKICAgIGRlZiBzZXRfYmxvY2tlZF9kb21haW5zKHNlbGYsIGJsb2NrZWRfZG9tYWlucyk6CiAgICAgICAgIiIiU2V0IHRoZSBzZXF1ZW5jZSBvZiBibG9ja2VkIGRvbWFpbnMuIiIiCiAgICAgICAgc2VsZi5fYmxvY2tlZF9kb21haW5zID0gdHVwbGUoYmxvY2tlZF9kb21haW5zKQoKICAgIGRlZiBpc19ibG9ja2VkKHNlbGYsIGRvbWFpbik6CiAgICAgICAgZm9yIGJsb2NrZWRfZG9tYWluIGluIHNlbGYuX2Jsb2NrZWRfZG9tYWluczoKICAgICAgICAgICAgaWYgdXNlcl9kb21haW5fbWF0Y2goZG9tYWluLCBibG9ja2VkX2RvbWFpbik6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBhbGxvd2VkX2RvbWFpbnMoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIE5vbmUsIG9yIHRoZSBzZXF1ZW5jZSBvZiBhbGxvd2VkIGRvbWFpbnMgKGFzIGEgdHVwbGUpLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9hbGxvd2VkX2RvbWFpbnMKICAgIGRlZiBzZXRfYWxsb3dlZF9kb21haW5zKHNlbGYsIGFsbG93ZWRfZG9tYWlucyk6CiAgICAgICAgIiIiU2V0IHRoZSBzZXF1ZW5jZSBvZiBhbGxvd2VkIGRvbWFpbnMsIG9yIE5vbmUuIiIiCiAgICAgICAgaWYgYWxsb3dlZF9kb21haW5zIGlzIG5vdCBOb25lOgogICAgICAgICAgICBhbGxvd2VkX2RvbWFpbnMgPSB0dXBsZShhbGxvd2VkX2RvbWFpbnMpCiAgICAgICAgc2VsZi5fYWxsb3dlZF9kb21haW5zID0gYWxsb3dlZF9kb21haW5zCgogICAgZGVmIGlzX25vdF9hbGxvd2VkKHNlbGYsIGRvbWFpbik6CiAgICAgICAgaWYgc2VsZi5fYWxsb3dlZF9kb21haW5zIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGZvciBhbGxvd2VkX2RvbWFpbiBpbiBzZWxmLl9hbGxvd2VkX2RvbWFpbnM6CiAgICAgICAgICAgIGlmIHVzZXJfZG9tYWluX21hdGNoKGRvbWFpbiwgYWxsb3dlZF9kb21haW4pOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgc2V0X29rKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgIiIiCiAgICAgICAgSWYgeW91IG92ZXJyaWRlIC5zZXRfb2soKSwgYmUgc3VyZSB0byBjYWxsIHRoaXMgbWV0aG9kLiAgSWYgaXQgcmV0dXJucwogICAgICAgIGZhbHNlLCBzbyBzaG91bGQgeW91ciBzdWJjbGFzcyAoYXNzdW1pbmcgeW91ciBzdWJjbGFzcyB3YW50cyB0byBiZSBtb3JlCiAgICAgICAgc3RyaWN0IGFib3V0IHdoaWNoIGNvb2tpZXMgdG8gYWNjZXB0KS4KCiAgICAgICAgIiIiCiAgICAgICAgX2RlYnVnKCIgLSBjaGVja2luZyBjb29raWUgJXM9JXMiLCBjb29raWUubmFtZSwgY29va2llLnZhbHVlKQoKICAgICAgICBhc3NlcnQgY29va2llLm5hbWUgaXMgbm90IE5vbmUKCiAgICAgICAgZm9yIG4gaW4gInZlcnNpb24iLCAidmVyaWZpYWJpbGl0eSIsICJuYW1lIiwgInBhdGgiLCAiZG9tYWluIiwgInBvcnQiOgogICAgICAgICAgICBmbl9uYW1lID0gInNldF9va18iK24KICAgICAgICAgICAgZm4gPSBnZXRhdHRyKHNlbGYsIGZuX25hbWUpCiAgICAgICAgICAgIGlmIG5vdCBmbihjb29raWUsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHNldF9va192ZXJzaW9uKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgaWYgY29va2llLnZlcnNpb24gaXMgTm9uZToKICAgICAgICAgICAgIyBWZXJzaW9uIGlzIGFsd2F5cyBzZXQgdG8gMCBieSBwYXJzZV9uc19oZWFkZXJzIGlmIGl0J3MgYSBOZXRzY2FwZQogICAgICAgICAgICAjIGNvb2tpZSwgc28gdGhpcyBtdXN0IGJlIGFuIGludmFsaWQgUkZDIDI5NjUgY29va2llLgogICAgICAgICAgICBfZGVidWcoIiAgIFNldC1Db29raWUyIHdpdGhvdXQgdmVyc2lvbiBhdHRyaWJ1dGUgKCVzPSVzKSIsCiAgICAgICAgICAgICAgICAgICBjb29raWUubmFtZSwgY29va2llLnZhbHVlKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBpZiBjb29raWUudmVyc2lvbiA+IDAgYW5kIG5vdCBzZWxmLnJmYzI5NjU6CiAgICAgICAgICAgIF9kZWJ1ZygiICAgUkZDIDI5NjUgY29va2llcyBhcmUgc3dpdGNoZWQgb2ZmIikKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZWxpZiBjb29raWUudmVyc2lvbiA9PSAwIGFuZCBub3Qgc2VsZi5uZXRzY2FwZToKICAgICAgICAgICAgX2RlYnVnKCIgICBOZXRzY2FwZSBjb29raWVzIGFyZSBzd2l0Y2hlZCBvZmYiKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBzZXRfb2tfdmVyaWZpYWJpbGl0eShzZWxmLCBjb29raWUsIHJlcXVlc3QpOgogICAgICAgIGlmIHJlcXVlc3QudW52ZXJpZmlhYmxlIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKICAgICAgICAgICAgaWYgY29va2llLnZlcnNpb24gPiAwIGFuZCBzZWxmLnN0cmljdF9yZmMyOTY1X3VudmVyaWZpYWJsZToKICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgdGhpcmQtcGFydHkgUkZDIDI5NjUgY29va2llIGR1cmluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVudmVyaWZpYWJsZSB0cmFuc2FjdGlvbiIpCiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgZWxpZiBjb29raWUudmVyc2lvbiA9PSAwIGFuZCBzZWxmLnN0cmljdF9uc191bnZlcmlmaWFibGU6CiAgICAgICAgICAgICAgICBfZGVidWcoIiAgIHRoaXJkLXBhcnR5IE5ldHNjYXBlIGNvb2tpZSBkdXJpbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnZlcmlmaWFibGUgdHJhbnNhY3Rpb24iKQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgc2V0X29rX25hbWUoc2VsZiwgY29va2llLCByZXF1ZXN0KToKICAgICAgICAjIFRyeSBhbmQgc3RvcCBzZXJ2ZXJzIHNldHRpbmcgVjAgY29va2llcyBkZXNpZ25lZCB0byBoYWNrIG90aGVyCiAgICAgICAgIyBzZXJ2ZXJzIHRoYXQga25vdyBib3RoIFYwIGFuZCBWMSBwcm90b2NvbHMuCiAgICAgICAgaWYgKGNvb2tpZS52ZXJzaW9uID09IDAgYW5kIHNlbGYuc3RyaWN0X25zX3NldF9pbml0aWFsX2RvbGxhciBhbmQKICAgICAgICAgICAgY29va2llLm5hbWUuc3RhcnRzd2l0aCgiJCIpKToKICAgICAgICAgICAgX2RlYnVnKCIgICBpbGxlZ2FsIG5hbWUgKHN0YXJ0cyB3aXRoICckJyk6ICclcyciLCBjb29raWUubmFtZSkKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgc2V0X29rX3BhdGgoc2VsZiwgY29va2llLCByZXF1ZXN0KToKICAgICAgICBpZiBjb29raWUucGF0aF9zcGVjaWZpZWQ6CiAgICAgICAgICAgIHJlcV9wYXRoID0gcmVxdWVzdF9wYXRoKHJlcXVlc3QpCiAgICAgICAgICAgIGlmICgoY29va2llLnZlcnNpb24gPiAwIG9yCiAgICAgICAgICAgICAgICAgKGNvb2tpZS52ZXJzaW9uID09IDAgYW5kIHNlbGYuc3RyaWN0X25zX3NldF9wYXRoKSkgYW5kCiAgICAgICAgICAgICAgICBub3Qgc2VsZi5wYXRoX3JldHVybl9vayhjb29raWUucGF0aCwgcmVxdWVzdCkpOgogICAgICAgICAgICAgICAgX2RlYnVnKCIgICBwYXRoIGF0dHJpYnV0ZSAlcyBpcyBub3QgYSBwcmVmaXggb2YgcmVxdWVzdCAiCiAgICAgICAgICAgICAgICAgICAgICAgInBhdGggJXMiLCBjb29raWUucGF0aCwgcmVxX3BhdGgpCiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBzZXRfb2tfZG9tYWluKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgaWYgc2VsZi5pc19ibG9ja2VkKGNvb2tpZS5kb21haW4pOgogICAgICAgICAgICBfZGVidWcoIiAgIGRvbWFpbiAlcyBpcyBpbiB1c2VyIGJsb2NrLWxpc3QiLCBjb29raWUuZG9tYWluKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBpZiBzZWxmLmlzX25vdF9hbGxvd2VkKGNvb2tpZS5kb21haW4pOgogICAgICAgICAgICBfZGVidWcoIiAgIGRvbWFpbiAlcyBpcyBub3QgaW4gdXNlciBhbGxvdy1saXN0IiwgY29va2llLmRvbWFpbikKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgaWYgY29va2llLmRvbWFpbl9zcGVjaWZpZWQ6CiAgICAgICAgICAgIHJlcV9ob3N0LCBlcmhuID0gZWZmX3JlcXVlc3RfaG9zdChyZXF1ZXN0KQogICAgICAgICAgICBkb21haW4gPSBjb29raWUuZG9tYWluCiAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0X2RvbWFpbiBhbmQgKGRvbWFpbi5jb3VudCgiLiIpID49IDIpOgogICAgICAgICAgICAgICAgIyBYWFggVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgY29tcGFyZWQgd2l0aCB0aGUgS29ucXVlcm9yCiAgICAgICAgICAgICAgICAjIChrY29va2llamFyLmNwcCkgYW5kIE1vemlsbGEgaW1wbGVtZW50YXRpb25zLCBidXQgaXQncyBhCiAgICAgICAgICAgICAgICAjIGxvc2luZyBiYXR0bGUuCiAgICAgICAgICAgICAgICBpID0gZG9tYWluLnJmaW5kKCIuIikKICAgICAgICAgICAgICAgIGogPSBkb21haW4ucmZpbmQoIi4iLCAwLCBpKQogICAgICAgICAgICAgICAgaWYgaiA9PSAwOiAgIyBkb21haW4gbGlrZSAuZm9vLmJhcgogICAgICAgICAgICAgICAgICAgIHRsZCA9IGRvbWFpbltpKzE6XQogICAgICAgICAgICAgICAgICAgIHNsZCA9IGRvbWFpbltqKzE6aV0KICAgICAgICAgICAgICAgICAgICBpZiBzbGQubG93ZXIoKSBpbiAoImNvIiwgImFjIiwgImNvbSIsICJlZHUiLCAib3JnIiwgIm5ldCIsCiAgICAgICAgICAgICAgICAgICAgICAgImdvdiIsICJtaWwiLCAiaW50IiwgImFlcm8iLCAiYml6IiwgImNhdCIsICJjb29wIiwKICAgICAgICAgICAgICAgICAgICAgICAiaW5mbyIsICJqb2JzIiwgIm1vYmkiLCAibXVzZXVtIiwgIm5hbWUiLCAicHJvIiwKICAgICAgICAgICAgICAgICAgICAgICAidHJhdmVsIiwgImV1IikgYW5kIGxlbih0bGQpID09IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICMgZG9tYWluIGxpa2UgLmNvLnVrCiAgICAgICAgICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgY291bnRyeS1jb2RlIHNlY29uZCBsZXZlbCBkb21haW4gJXMiLCBkb21haW4pCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICBpZiBkb21haW4uc3RhcnRzd2l0aCgiLiIpOgogICAgICAgICAgICAgICAgdW5kb3R0ZWRfZG9tYWluID0gZG9tYWluWzE6XQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdW5kb3R0ZWRfZG9tYWluID0gZG9tYWluCiAgICAgICAgICAgIGVtYmVkZGVkX2RvdHMgPSAodW5kb3R0ZWRfZG9tYWluLmZpbmQoIi4iKSA+PSAwKQogICAgICAgICAgICBpZiBub3QgZW1iZWRkZWRfZG90cyBhbmQgbm90IGVyaG4uZW5kc3dpdGgoIi5sb2NhbCIpOgogICAgICAgICAgICAgICAgX2RlYnVnKCIgICBub24tbG9jYWwgZG9tYWluICVzIGNvbnRhaW5zIG5vIGVtYmVkZGVkIGRvdCIsCiAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluKQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID09IDA6CiAgICAgICAgICAgICAgICBpZiAobm90IChlcmhuLmVuZHN3aXRoKGRvbWFpbikgb3IKICAgICAgICAgICAgICAgICAgICAgICAgIGVyaG4uZW5kc3dpdGgoZiJ7dW5kb3R0ZWRfZG9tYWlufS5sb2NhbCIpKSBhbmQKICAgICAgICAgICAgICAgICAgICAobm90IGVyaG4uc3RhcnRzd2l0aCgiLiIpIGFuZAogICAgICAgICAgICAgICAgICAgICBub3QgKCIuIitlcmhuKS5lbmRzd2l0aChkb21haW4pKSk6CiAgICAgICAgICAgICAgICAgICAgX2RlYnVnKCIgICBlZmZlY3RpdmUgcmVxdWVzdC1ob3N0ICVzIChldmVuIHdpdGggYWRkZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5pdGlhbCBkb3QpIGRvZXMgbm90IGVuZCB3aXRoICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJobiwgZG9tYWluKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICBpZiAoY29va2llLnZlcnNpb24gPiAwIG9yCiAgICAgICAgICAgICAgICAoc2VsZi5zdHJpY3RfbnNfZG9tYWluICYgc2VsZi5Eb21haW5SRkMyOTY1TWF0Y2gpKToKICAgICAgICAgICAgICAgIGlmIG5vdCBkb21haW5fbWF0Y2goZXJobiwgZG9tYWluKToKICAgICAgICAgICAgICAgICAgICBfZGVidWcoIiAgIGVmZmVjdGl2ZSByZXF1ZXN0LWhvc3QgJXMgZG9lcyBub3QgZG9tYWluLW1hdGNoICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgZXJobiwgZG9tYWluKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICBpZiAoY29va2llLnZlcnNpb24gPiAwIG9yCiAgICAgICAgICAgICAgICAoc2VsZi5zdHJpY3RfbnNfZG9tYWluICYgc2VsZi5Eb21haW5TdHJpY3ROb0RvdHMpKToKICAgICAgICAgICAgICAgIGhvc3RfcHJlZml4ID0gcmVxX2hvc3RbOi1sZW4oZG9tYWluKV0KICAgICAgICAgICAgICAgIGlmIChob3N0X3ByZWZpeC5maW5kKCIuIikgPj0gMCBhbmQKICAgICAgICAgICAgICAgICAgICBub3QgSVBWNF9SRS5zZWFyY2gocmVxX2hvc3QpKToKICAgICAgICAgICAgICAgICAgICBfZGVidWcoIiAgIGhvc3QgcHJlZml4ICVzIGZvciBkb21haW4gJXMgY29udGFpbnMgYSBkb3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0X3ByZWZpeCwgZG9tYWluKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHNldF9va19wb3J0KHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgaWYgY29va2llLnBvcnRfc3BlY2lmaWVkOgogICAgICAgICAgICByZXFfcG9ydCA9IHJlcXVlc3RfcG9ydChyZXF1ZXN0KQogICAgICAgICAgICBpZiByZXFfcG9ydCBpcyBOb25lOgogICAgICAgICAgICAgICAgcmVxX3BvcnQgPSAiODAiCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXFfcG9ydCA9IHN0cihyZXFfcG9ydCkKICAgICAgICAgICAgZm9yIHAgaW4gY29va2llLnBvcnQuc3BsaXQoIiwiKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpbnQocCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgYmFkIHBvcnQgJXMgKG5vdCBudW1lcmljKSIsIHApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAgICBpZiBwID09IHJlcV9wb3J0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBfZGVidWcoIiAgIHJlcXVlc3QgcG9ydCAoJXMpIG5vdCBmb3VuZCBpbiAlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgcmVxX3BvcnQsIGNvb2tpZS5wb3J0KQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgcmV0dXJuX29rKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgIiIiCiAgICAgICAgSWYgeW91IG92ZXJyaWRlIC5yZXR1cm5fb2soKSwgYmUgc3VyZSB0byBjYWxsIHRoaXMgbWV0aG9kLiAgSWYgaXQKICAgICAgICByZXR1cm5zIGZhbHNlLCBzbyBzaG91bGQgeW91ciBzdWJjbGFzcyAoYXNzdW1pbmcgeW91ciBzdWJjbGFzcyB3YW50cyB0bwogICAgICAgIGJlIG1vcmUgc3RyaWN0IGFib3V0IHdoaWNoIGNvb2tpZXMgdG8gcmV0dXJuKS4KCiAgICAgICAgIiIiCiAgICAgICAgIyBQYXRoIGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZCBieSAucGF0aF9yZXR1cm5fb2soKSwgYW5kIGRvbWFpbgogICAgICAgICMgYmxvY2tpbmcgZG9uZSBieSAuZG9tYWluX3JldHVybl9vaygpLgogICAgICAgIF9kZWJ1ZygiIC0gY2hlY2tpbmcgY29va2llICVzPSVzIiwgY29va2llLm5hbWUsIGNvb2tpZS52YWx1ZSkKCiAgICAgICAgZm9yIG4gaW4gInZlcnNpb24iLCAidmVyaWZpYWJpbGl0eSIsICJzZWN1cmUiLCAiZXhwaXJlcyIsICJwb3J0IiwgImRvbWFpbiI6CiAgICAgICAgICAgIGZuX25hbWUgPSAicmV0dXJuX29rXyIrbgogICAgICAgICAgICBmbiA9IGdldGF0dHIoc2VsZiwgZm5fbmFtZSkKICAgICAgICAgICAgaWYgbm90IGZuKGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiByZXR1cm5fb2tfdmVyc2lvbihzZWxmLCBjb29raWUsIHJlcXVlc3QpOgogICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID4gMCBhbmQgbm90IHNlbGYucmZjMjk2NToKICAgICAgICAgICAgX2RlYnVnKCIgICBSRkMgMjk2NSBjb29raWVzIGFyZSBzd2l0Y2hlZCBvZmYiKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBlbGlmIGNvb2tpZS52ZXJzaW9uID09IDAgYW5kIG5vdCBzZWxmLm5ldHNjYXBlOgogICAgICAgICAgICBfZGVidWcoIiAgIE5ldHNjYXBlIGNvb2tpZXMgYXJlIHN3aXRjaGVkIG9mZiIpCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHJldHVybl9va192ZXJpZmlhYmlsaXR5KHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgaWYgcmVxdWVzdC51bnZlcmlmaWFibGUgYW5kIGlzX3RoaXJkX3BhcnR5KHJlcXVlc3QpOgogICAgICAgICAgICBpZiBjb29raWUudmVyc2lvbiA+IDAgYW5kIHNlbGYuc3RyaWN0X3JmYzI5NjVfdW52ZXJpZmlhYmxlOgogICAgICAgICAgICAgICAgX2RlYnVnKCIgICB0aGlyZC1wYXJ0eSBSRkMgMjk2NSBjb29raWUgZHVyaW5nIHVudmVyaWZpYWJsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zYWN0aW9uIikKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICBlbGlmIGNvb2tpZS52ZXJzaW9uID09IDAgYW5kIHNlbGYuc3RyaWN0X25zX3VudmVyaWZpYWJsZToKICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgdGhpcmQtcGFydHkgTmV0c2NhcGUgY29va2llIGR1cmluZyB1bnZlcmlmaWFibGUgIgogICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc2FjdGlvbiIpCiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiByZXR1cm5fb2tfc2VjdXJlKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgaWYgY29va2llLnNlY3VyZSBhbmQgcmVxdWVzdC50eXBlIG5vdCBpbiBzZWxmLnNlY3VyZV9wcm90b2NvbHM6CiAgICAgICAgICAgIF9kZWJ1ZygiICAgc2VjdXJlIGNvb2tpZSB3aXRoIG5vbi1zZWN1cmUgcmVxdWVzdCIpCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHJldHVybl9va19leHBpcmVzKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgaWYgY29va2llLmlzX2V4cGlyZWQoc2VsZi5fbm93KToKICAgICAgICAgICAgX2RlYnVnKCIgICBjb29raWUgZXhwaXJlZCIpCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHJldHVybl9va19wb3J0KHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgaWYgY29va2llLnBvcnQ6CiAgICAgICAgICAgIHJlcV9wb3J0ID0gcmVxdWVzdF9wb3J0KHJlcXVlc3QpCiAgICAgICAgICAgIGlmIHJlcV9wb3J0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICByZXFfcG9ydCA9ICI4MCIKICAgICAgICAgICAgZm9yIHAgaW4gY29va2llLnBvcnQuc3BsaXQoIiwiKToKICAgICAgICAgICAgICAgIGlmIHAgPT0gcmVxX3BvcnQ6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgcmVxdWVzdCBwb3J0ICVzIGRvZXMgbm90IG1hdGNoIGNvb2tpZSBwb3J0ICVzIiwKICAgICAgICAgICAgICAgICAgICAgICByZXFfcG9ydCwgY29va2llLnBvcnQpCiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiByZXR1cm5fb2tfZG9tYWluKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgcmVxX2hvc3QsIGVyaG4gPSBlZmZfcmVxdWVzdF9ob3N0KHJlcXVlc3QpCiAgICAgICAgZG9tYWluID0gY29va2llLmRvbWFpbgoKICAgICAgICBpZiBkb21haW4gYW5kIG5vdCBkb21haW4uc3RhcnRzd2l0aCgiLiIpOgogICAgICAgICAgICBkb3Rkb21haW4gPSAiLiIgKyBkb21haW4KICAgICAgICBlbHNlOgogICAgICAgICAgICBkb3Rkb21haW4gPSBkb21haW4KCiAgICAgICAgIyBzdHJpY3QgY2hlY2sgb2Ygbm9uLWRvbWFpbiBjb29raWVzOiBNb3ppbGxhIGRvZXMgdGhpcywgTVNJRTUgZG9lc24ndAogICAgICAgIGlmIChjb29raWUudmVyc2lvbiA9PSAwIGFuZAogICAgICAgICAgICAoc2VsZi5zdHJpY3RfbnNfZG9tYWluICYgc2VsZi5Eb21haW5TdHJpY3ROb25Eb21haW4pIGFuZAogICAgICAgICAgICBub3QgY29va2llLmRvbWFpbl9zcGVjaWZpZWQgYW5kIGRvbWFpbiAhPSBlcmhuKToKICAgICAgICAgICAgX2RlYnVnKCIgICBjb29raWUgd2l0aCB1bnNwZWNpZmllZCBkb21haW4gZG9lcyBub3Qgc3RyaW5nLWNvbXBhcmUgIgogICAgICAgICAgICAgICAgICAgImVxdWFsIHRvIHJlcXVlc3QgZG9tYWluIikKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID4gMCBhbmQgbm90IGRvbWFpbl9tYXRjaChlcmhuLCBkb21haW4pOgogICAgICAgICAgICBfZGVidWcoIiAgIGVmZmVjdGl2ZSByZXF1ZXN0LWhvc3QgbmFtZSAlcyBkb2VzIG5vdCBkb21haW4tbWF0Y2ggIgogICAgICAgICAgICAgICAgICAgIlJGQyAyOTY1IGNvb2tpZSBkb21haW4gJXMiLCBlcmhuLCBkb21haW4pCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID09IDAgYW5kIG5vdCAoIi4iK2VyaG4pLmVuZHN3aXRoKGRvdGRvbWFpbik6CiAgICAgICAgICAgIF9kZWJ1ZygiICAgcmVxdWVzdC1ob3N0ICVzIGRvZXMgbm90IG1hdGNoIE5ldHNjYXBlIGNvb2tpZSBkb21haW4gIgogICAgICAgICAgICAgICAgICAgIiVzIiwgcmVxX2hvc3QsIGRvbWFpbikKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgZG9tYWluX3JldHVybl9vayhzZWxmLCBkb21haW4sIHJlcXVlc3QpOgogICAgICAgICMgTGliZXJhbCBjaGVjayBvZi4gIFRoaXMgaXMgaGVyZSBhcyBhbiBvcHRpbWl6YXRpb24gdG8gYXZvaWQKICAgICAgICAjIGhhdmluZyB0byBsb2FkIGxvdHMgb2YgTVNJRSBjb29raWUgZmlsZXMgdW5sZXNzIG5lY2Vzc2FyeS4KICAgICAgICByZXFfaG9zdCwgZXJobiA9IGVmZl9yZXF1ZXN0X2hvc3QocmVxdWVzdCkKICAgICAgICBpZiBub3QgcmVxX2hvc3Quc3RhcnRzd2l0aCgiLiIpOgogICAgICAgICAgICByZXFfaG9zdCA9ICIuIityZXFfaG9zdAogICAgICAgIGlmIG5vdCBlcmhuLnN0YXJ0c3dpdGgoIi4iKToKICAgICAgICAgICAgZXJobiA9ICIuIitlcmhuCiAgICAgICAgaWYgZG9tYWluIGFuZCBub3QgZG9tYWluLnN0YXJ0c3dpdGgoIi4iKToKICAgICAgICAgICAgZG90ZG9tYWluID0gIi4iICsgZG9tYWluCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZG90ZG9tYWluID0gZG9tYWluCiAgICAgICAgaWYgbm90IChyZXFfaG9zdC5lbmRzd2l0aChkb3Rkb21haW4pIG9yIGVyaG4uZW5kc3dpdGgoZG90ZG9tYWluKSk6CiAgICAgICAgICAgICNfZGVidWcoIiAgIHJlcXVlc3QgZG9tYWluICVzIGRvZXMgbm90IG1hdGNoIGNvb2tpZSBkb21haW4gJXMiLAogICAgICAgICAgICAjICAgICAgIHJlcV9ob3N0LCBkb21haW4pCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICBpZiBzZWxmLmlzX2Jsb2NrZWQoZG9tYWluKToKICAgICAgICAgICAgX2RlYnVnKCIgICBkb21haW4gJXMgaXMgaW4gdXNlciBibG9jay1saXN0IiwgZG9tYWluKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBpZiBzZWxmLmlzX25vdF9hbGxvd2VkKGRvbWFpbik6CiAgICAgICAgICAgIF9kZWJ1ZygiICAgZG9tYWluICVzIGlzIG5vdCBpbiB1c2VyIGFsbG93LWxpc3QiLCBkb21haW4pCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBwYXRoX3JldHVybl9vayhzZWxmLCBwYXRoLCByZXF1ZXN0KToKICAgICAgICBfZGVidWcoIi0gY2hlY2tpbmcgY29va2llIHBhdGg9JXMiLCBwYXRoKQogICAgICAgIHJlcV9wYXRoID0gcmVxdWVzdF9wYXRoKHJlcXVlc3QpCiAgICAgICAgcGF0aGxlbiA9IGxlbihwYXRoKQogICAgICAgIGlmIHJlcV9wYXRoID09IHBhdGg6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgZWxpZiAocmVxX3BhdGguc3RhcnRzd2l0aChwYXRoKSBhbmQKICAgICAgICAgICAgICAocGF0aC5lbmRzd2l0aCgiLyIpIG9yIHJlcV9wYXRoW3BhdGhsZW46cGF0aGxlbisxXSA9PSAiLyIpKToKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgX2RlYnVnKCIgICVzIGRvZXMgbm90IHBhdGgtbWF0Y2ggJXMiLCByZXFfcGF0aCwgcGF0aCkKICAgICAgICByZXR1cm4gRmFsc2UKCmRlZiBkZWVwdmFsdWVzKG1hcHBpbmcpOgogICAgIiIiSXRlcmF0ZXMgb3ZlciBuZXN0ZWQgbWFwcGluZywgZGVwdGgtZmlyc3QiIiIKICAgIGZvciBvYmogaW4gbGlzdChtYXBwaW5nLnZhbHVlcygpKToKICAgICAgICBtYXBwaW5nID0gRmFsc2UKICAgICAgICB0cnk6CiAgICAgICAgICAgIG9iai5pdGVtcwogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1hcHBpbmcgPSBUcnVlCiAgICAgICAgICAgIHlpZWxkIGZyb20gZGVlcHZhbHVlcyhvYmopCiAgICAgICAgaWYgbm90IG1hcHBpbmc6CiAgICAgICAgICAgIHlpZWxkIG9iagoKCiMgVXNlZCBhcyBzZWNvbmQgcGFyYW1ldGVyIHRvIGRpY3QuZ2V0KCkgbWV0aG9kLCB0byBkaXN0aW5ndWlzaCBhYnNlbnQKIyBkaWN0IGtleSBmcm9tIG9uZSB3aXRoIGEgTm9uZSB2YWx1ZS4KY2xhc3MgQWJzZW50OiBwYXNzCgpjbGFzcyBDb29raWVKYXI6CiAgICAiIiJDb2xsZWN0aW9uIG9mIEhUVFAgY29va2llcy4KCiAgICBZb3UgbWF5IG5vdCBuZWVkIHRvIGtub3cgYWJvdXQgdGhpcyBjbGFzczogdHJ5CiAgICB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoSFRUUENvb2tpZVByb2Nlc3Nvcikub3Blbih1cmwpLgogICAgIiIiCgogICAgbm9uX3dvcmRfcmUgPSByZS5jb21waWxlKHIiXFciKQogICAgcXVvdGVfcmUgPSByZS5jb21waWxlKHIiKFtcIlxcXSkiKQogICAgc3RyaWN0X2RvbWFpbl9yZSA9IHJlLmNvbXBpbGUociJcLj9bXi5dKiIpCiAgICBkb21haW5fcmUgPSByZS5jb21waWxlKHIiW14uXSoiKQogICAgZG90c19yZSA9IHJlLmNvbXBpbGUociJeXC4rIikKCiAgICBtYWdpY19yZSA9IHJlLmNvbXBpbGUociJeXCNMV1AtQ29va2llcy0oXGQrXC5cZCspIiwgcmUuQVNDSUkpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvbGljeT1Ob25lKToKICAgICAgICBpZiBwb2xpY3kgaXMgTm9uZToKICAgICAgICAgICAgcG9saWN5ID0gRGVmYXVsdENvb2tpZVBvbGljeSgpCiAgICAgICAgc2VsZi5fcG9saWN5ID0gcG9saWN5CgogICAgICAgIHNlbGYuX2Nvb2tpZXNfbG9jayA9IF90aHJlYWRpbmcuUkxvY2soKQogICAgICAgIHNlbGYuX2Nvb2tpZXMgPSB7fQoKICAgIGRlZiBzZXRfcG9saWN5KHNlbGYsIHBvbGljeSk6CiAgICAgICAgc2VsZi5fcG9saWN5ID0gcG9saWN5CgogICAgZGVmIF9jb29raWVzX2Zvcl9kb21haW4oc2VsZiwgZG9tYWluLCByZXF1ZXN0KToKICAgICAgICBjb29raWVzID0gW10KICAgICAgICBpZiBub3Qgc2VsZi5fcG9saWN5LmRvbWFpbl9yZXR1cm5fb2soZG9tYWluLCByZXF1ZXN0KToKICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgX2RlYnVnKCJDaGVja2luZyAlcyBmb3IgY29va2llcyB0byByZXR1cm4iLCBkb21haW4pCiAgICAgICAgY29va2llc19ieV9wYXRoID0gc2VsZi5fY29va2llc1tkb21haW5dCiAgICAgICAgZm9yIHBhdGggaW4gY29va2llc19ieV9wYXRoLmtleXMoKToKICAgICAgICAgICAgaWYgbm90IHNlbGYuX3BvbGljeS5wYXRoX3JldHVybl9vayhwYXRoLCByZXF1ZXN0KToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGNvb2tpZXNfYnlfbmFtZSA9IGNvb2tpZXNfYnlfcGF0aFtwYXRoXQogICAgICAgICAgICBmb3IgY29va2llIGluIGNvb2tpZXNfYnlfbmFtZS52YWx1ZXMoKToKICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wb2xpY3kucmV0dXJuX29rKGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgICAgICAgICAgICAgX2RlYnVnKCIgICBub3QgcmV0dXJuaW5nIGNvb2tpZSIpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgaXQncyBhIG1hdGNoIikKICAgICAgICAgICAgICAgIGNvb2tpZXMuYXBwZW5kKGNvb2tpZSkKICAgICAgICByZXR1cm4gY29va2llcwoKICAgIGRlZiBfY29va2llc19mb3JfcmVxdWVzdChzZWxmLCByZXF1ZXN0KToKICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvb2tpZXMgdG8gYmUgcmV0dXJuZWQgdG8gc2VydmVyLiIiIgogICAgICAgIGNvb2tpZXMgPSBbXQogICAgICAgIGZvciBkb21haW4gaW4gc2VsZi5fY29va2llcy5rZXlzKCk6CiAgICAgICAgICAgIGNvb2tpZXMuZXh0ZW5kKHNlbGYuX2Nvb2tpZXNfZm9yX2RvbWFpbihkb21haW4sIHJlcXVlc3QpKQogICAgICAgIHJldHVybiBjb29raWVzCgogICAgZGVmIF9jb29raWVfYXR0cnMoc2VsZiwgY29va2llcyk6CiAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb29raWUtYXR0cmlidXRlcyB0byBiZSByZXR1cm5lZCB0byBzZXJ2ZXIuCgogICAgICAgIGxpa2UgWydmb289ImJhciI7ICRQYXRoPSIvIicsIC4uLl0KCiAgICAgICAgVGhlICRWZXJzaW9uIGF0dHJpYnV0ZSBpcyBhbHNvIGFkZGVkIHdoZW4gYXBwcm9wcmlhdGUgKGN1cnJlbnRseSBvbmx5CiAgICAgICAgb25jZSBwZXIgcmVxdWVzdCkuCgogICAgICAgICIiIgogICAgICAgICMgYWRkIGNvb2tpZXMgaW4gb3JkZXIgb2YgbW9zdCBzcGVjaWZpYyAoaWUuIGxvbmdlc3QpIHBhdGggZmlyc3QKICAgICAgICBjb29raWVzLnNvcnQoa2V5PWxhbWJkYSBhOiBsZW4oYS5wYXRoKSwgcmV2ZXJzZT1UcnVlKQoKICAgICAgICB2ZXJzaW9uX3NldCA9IEZhbHNlCgogICAgICAgIGF0dHJzID0gW10KICAgICAgICBmb3IgY29va2llIGluIGNvb2tpZXM6CiAgICAgICAgICAgICMgc2V0IHZlcnNpb24gb2YgQ29va2llIGhlYWRlcgogICAgICAgICAgICAjIFhYWAogICAgICAgICAgICAjIFdoYXQgc2hvdWxkIGl0IGJlIGlmIG11bHRpcGxlIG1hdGNoaW5nIFNldC1Db29raWUgaGVhZGVycyBoYXZlCiAgICAgICAgICAgICMgIGRpZmZlcmVudCB2ZXJzaW9ucyB0aGVtc2VsdmVzPwogICAgICAgICAgICAjIEFuc3dlcjogdGhlcmUgaXMgbm8gYW5zd2VyOyB3YXMgc3VwcG9zZWQgdG8gYmUgc2V0dGxlZCBieQogICAgICAgICAgICAjICBSRkMgMjk2NSBlcnJhdGEsIGJ1dCB0aGF0IG1heSBuZXZlciBhcHBlYXIuLi4KICAgICAgICAgICAgdmVyc2lvbiA9IGNvb2tpZS52ZXJzaW9uCiAgICAgICAgICAgIGlmIG5vdCB2ZXJzaW9uX3NldDoKICAgICAgICAgICAgICAgIHZlcnNpb25fc2V0ID0gVHJ1ZQogICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA+IDA6CiAgICAgICAgICAgICAgICAgICAgYXR0cnMuYXBwZW5kKCIkVmVyc2lvbj0lcyIgJSB2ZXJzaW9uKQoKICAgICAgICAgICAgIyBxdW90ZSBjb29raWUgdmFsdWUgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICMgKG5vdCBmb3IgTmV0c2NhcGUgcHJvdG9jb2wsIHdoaWNoIGFscmVhZHkgaGFzIGFueSBxdW90ZXMKICAgICAgICAgICAgIyAgaW50YWN0LCBkdWUgdG8gdGhlIHBvb3JseS1zcGVjaWZpZWQgTmV0c2NhcGUgQ29va2llOiBzeW50YXgpCiAgICAgICAgICAgIGlmICgoY29va2llLnZhbHVlIGlzIG5vdCBOb25lKSBhbmQKICAgICAgICAgICAgICAgIHNlbGYubm9uX3dvcmRfcmUuc2VhcmNoKGNvb2tpZS52YWx1ZSkgYW5kIHZlcnNpb24gPiAwKToKICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5xdW90ZV9yZS5zdWIociJcXFwxIiwgY29va2llLnZhbHVlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdmFsdWUgPSBjb29raWUudmFsdWUKCiAgICAgICAgICAgICMgYWRkIGNvb2tpZS1hdHRyaWJ1dGVzIHRvIGJlIHJldHVybmVkIGluIENvb2tpZSBoZWFkZXIKICAgICAgICAgICAgaWYgY29va2llLnZhbHVlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBhdHRycy5hcHBlbmQoY29va2llLm5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBhdHRycy5hcHBlbmQoIiVzPSVzIiAlIChjb29raWUubmFtZSwgdmFsdWUpKQogICAgICAgICAgICBpZiB2ZXJzaW9uID4gMDoKICAgICAgICAgICAgICAgIGlmIGNvb2tpZS5wYXRoX3NwZWNpZmllZDoKICAgICAgICAgICAgICAgICAgICBhdHRycy5hcHBlbmQoJyRQYXRoPSIlcyInICUgY29va2llLnBhdGgpCiAgICAgICAgICAgICAgICBpZiBjb29raWUuZG9tYWluLnN0YXJ0c3dpdGgoIi4iKToKICAgICAgICAgICAgICAgICAgICBkb21haW4gPSBjb29raWUuZG9tYWluCiAgICAgICAgICAgICAgICAgICAgaWYgKG5vdCBjb29raWUuZG9tYWluX2luaXRpYWxfZG90IGFuZAogICAgICAgICAgICAgICAgICAgICAgICBkb21haW4uc3RhcnRzd2l0aCgiLiIpKToKICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluID0gZG9tYWluWzE6XQogICAgICAgICAgICAgICAgICAgIGF0dHJzLmFwcGVuZCgnJERvbWFpbj0iJXMiJyAlIGRvbWFpbikKICAgICAgICAgICAgICAgIGlmIGNvb2tpZS5wb3J0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHAgPSAiJFBvcnQiCiAgICAgICAgICAgICAgICAgICAgaWYgY29va2llLnBvcnRfc3BlY2lmaWVkOgogICAgICAgICAgICAgICAgICAgICAgICBwID0gcCArICgnPSIlcyInICUgY29va2llLnBvcnQpCiAgICAgICAgICAgICAgICAgICAgYXR0cnMuYXBwZW5kKHApCgogICAgICAgIHJldHVybiBhdHRycwoKICAgIGRlZiBhZGRfY29va2llX2hlYWRlcihzZWxmLCByZXF1ZXN0KToKICAgICAgICAiIiJBZGQgY29ycmVjdCBDb29raWU6IGhlYWRlciB0byByZXF1ZXN0ICh1cmxsaWIucmVxdWVzdC5SZXF1ZXN0IG9iamVjdCkuCgogICAgICAgIFRoZSBDb29raWUyIGhlYWRlciBpcyBhbHNvIGFkZGVkIHVubGVzcyBwb2xpY3kuaGlkZV9jb29raWUyIGlzIHRydWUuCgogICAgICAgICIiIgogICAgICAgIF9kZWJ1ZygiYWRkX2Nvb2tpZV9oZWFkZXIiKQogICAgICAgIHNlbGYuX2Nvb2tpZXNfbG9jay5hY3F1aXJlKCkKICAgICAgICB0cnk6CgogICAgICAgICAgICBzZWxmLl9wb2xpY3kuX25vdyA9IHNlbGYuX25vdyA9IGludCh0aW1lLnRpbWUoKSkKCiAgICAgICAgICAgIGNvb2tpZXMgPSBzZWxmLl9jb29raWVzX2Zvcl9yZXF1ZXN0KHJlcXVlc3QpCgogICAgICAgICAgICBhdHRycyA9IHNlbGYuX2Nvb2tpZV9hdHRycyhjb29raWVzKQogICAgICAgICAgICBpZiBhdHRyczoKICAgICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoIkNvb2tpZSIpOgogICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICJDb29raWUiLCAiOyAiLmpvaW4oYXR0cnMpKQoKICAgICAgICAgICAgIyBpZiBuZWNlc3NhcnksIGFkdmVydGlzZSB0aGF0IHdlIGtub3cgUkZDIDI5NjUKICAgICAgICAgICAgaWYgKHNlbGYuX3BvbGljeS5yZmMyOTY1IGFuZCBub3Qgc2VsZi5fcG9saWN5LmhpZGVfY29va2llMiBhbmQKICAgICAgICAgICAgICAgIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoIkNvb2tpZTIiKSk6CiAgICAgICAgICAgICAgICBmb3IgY29va2llIGluIGNvb2tpZXM6CiAgICAgICAgICAgICAgICAgICAgaWYgY29va2llLnZlcnNpb24gIT0gMToKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcigiQ29va2llMiIsICckVmVyc2lvbj0iMSInKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl9jb29raWVzX2xvY2sucmVsZWFzZSgpCgogICAgICAgIHNlbGYuY2xlYXJfZXhwaXJlZF9jb29raWVzKCkKCiAgICBkZWYgX25vcm1hbGl6ZWRfY29va2llX3R1cGxlcyhzZWxmLCBhdHRyc19zZXQpOgogICAgICAgICIiIlJldHVybiBsaXN0IG9mIHR1cGxlcyBjb250YWluaW5nIG5vcm1hbGlzZWQgY29va2llIGluZm9ybWF0aW9uLgoKICAgICAgICBhdHRyc19zZXQgaXMgdGhlIGxpc3Qgb2YgbGlzdHMgb2Yga2V5LHZhbHVlIHBhaXJzIGV4dHJhY3RlZCBmcm9tCiAgICAgICAgdGhlIFNldC1Db29raWUgb3IgU2V0LUNvb2tpZTIgaGVhZGVycy4KCiAgICAgICAgVHVwbGVzIGFyZSBuYW1lLCB2YWx1ZSwgc3RhbmRhcmQsIHJlc3QsIHdoZXJlIG5hbWUgYW5kIHZhbHVlIGFyZSB0aGUKICAgICAgICBjb29raWUgbmFtZSBhbmQgdmFsdWUsIHN0YW5kYXJkIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBzdGFuZGFyZAogICAgICAgIGNvb2tpZS1hdHRyaWJ1dGVzIChkaXNjYXJkLCBzZWN1cmUsIHZlcnNpb24sIGV4cGlyZXMgb3IgbWF4LWFnZSwKICAgICAgICBkb21haW4sIHBhdGggYW5kIHBvcnQpIGFuZCByZXN0IGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSByZXN0IG9mCiAgICAgICAgdGhlIGNvb2tpZS1hdHRyaWJ1dGVzLgoKICAgICAgICAiIiIKICAgICAgICBjb29raWVfdHVwbGVzID0gW10KCiAgICAgICAgYm9vbGVhbl9hdHRycyA9ICJkaXNjYXJkIiwgInNlY3VyZSIKICAgICAgICB2YWx1ZV9hdHRycyA9ICgidmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgImV4cGlyZXMiLCAibWF4LWFnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgImRvbWFpbiIsICJwYXRoIiwgInBvcnQiLAogICAgICAgICAgICAgICAgICAgICAgICJjb21tZW50IiwgImNvbW1lbnR1cmwiKQoKICAgICAgICBmb3IgY29va2llX2F0dHJzIGluIGF0dHJzX3NldDoKICAgICAgICAgICAgbmFtZSwgdmFsdWUgPSBjb29raWVfYXR0cnNbMF0KCiAgICAgICAgICAgICMgQnVpbGQgZGljdGlvbmFyeSBvZiBzdGFuZGFyZCBjb29raWUtYXR0cmlidXRlcyAoc3RhbmRhcmQpIGFuZAogICAgICAgICAgICAjIGRpY3Rpb25hcnkgb2Ygb3RoZXIgY29va2llLWF0dHJpYnV0ZXMgKHJlc3QpLgoKICAgICAgICAgICAgIyBOb3RlOiBleHBpcnkgdGltZSBpcyBub3JtYWxpc2VkIHRvIHNlY29uZHMgc2luY2UgZXBvY2guICBWMAogICAgICAgICAgICAjIGNvb2tpZXMgc2hvdWxkIGhhdmUgdGhlIEV4cGlyZXMgY29va2llLWF0dHJpYnV0ZSwgYW5kIFYxIGNvb2tpZXMKICAgICAgICAgICAgIyBzaG91bGQgaGF2ZSBNYXgtQWdlLCBidXQgc2luY2UgVjEgaW5jbHVkZXMgUkZDIDIxMDkgY29va2llcyAoYW5kCiAgICAgICAgICAgICMgc2luY2UgVjAgY29va2llcyBtYXkgYmUgYSBtaXNoLW1hc2ggb2YgTmV0c2NhcGUgYW5kIFJGQyAyMTA5KSwgd2UKICAgICAgICAgICAgIyBhY2NlcHQgZWl0aGVyIChidXQgcHJlZmVyIE1heC1BZ2UpLgogICAgICAgICAgICBtYXhfYWdlX3NldCA9IEZhbHNlCgogICAgICAgICAgICBiYWRfY29va2llID0gRmFsc2UKCiAgICAgICAgICAgIHN0YW5kYXJkID0ge30KICAgICAgICAgICAgcmVzdCA9IHt9CiAgICAgICAgICAgIGZvciBrLCB2IGluIGNvb2tpZV9hdHRyc1sxOl06CiAgICAgICAgICAgICAgICBsYyA9IGsubG93ZXIoKQogICAgICAgICAgICAgICAgIyBkb24ndCBsb3NlIGNhc2UgZGlzdGluY3Rpb24gZm9yIHVua25vd24gZmllbGRzCiAgICAgICAgICAgICAgICBpZiBsYyBpbiB2YWx1ZV9hdHRycyBvciBsYyBpbiBib29sZWFuX2F0dHJzOgogICAgICAgICAgICAgICAgICAgIGsgPSBsYwogICAgICAgICAgICAgICAgaWYgayBpbiBib29sZWFuX2F0dHJzIGFuZCB2IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIyBib29sZWFuIGNvb2tpZS1hdHRyaWJ1dGUgaXMgcHJlc2VudCwgYnV0IGhhcyBubyB2YWx1ZQogICAgICAgICAgICAgICAgICAgICMgKGxpa2UgImRpc2NhcmQiLCByYXRoZXIgdGhhbiAicG9ydD04MCIpCiAgICAgICAgICAgICAgICAgICAgdiA9IFRydWUKICAgICAgICAgICAgICAgIGlmIGsgaW4gc3RhbmRhcmQ6CiAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGZpcnN0IHZhbHVlIGlzIHNpZ25pZmljYW50CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGlmIGsgPT0gImRvbWFpbiI6CiAgICAgICAgICAgICAgICAgICAgaWYgdiBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBfZGVidWcoIiAgIG1pc3NpbmcgdmFsdWUgZm9yIGRvbWFpbiBhdHRyaWJ1dGUiKQogICAgICAgICAgICAgICAgICAgICAgICBiYWRfY29va2llID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICMgUkZDIDI5NjUgc2VjdGlvbiAzLjMuMwogICAgICAgICAgICAgICAgICAgIHYgPSB2Lmxvd2VyKCkKICAgICAgICAgICAgICAgIGlmIGsgPT0gImV4cGlyZXMiOgogICAgICAgICAgICAgICAgICAgIGlmIG1heF9hZ2Vfc2V0OgogICAgICAgICAgICAgICAgICAgICAgICAjIFByZWZlciBtYXgtYWdlIHRvIGV4cGlyZXMgKGxpa2UgTW96aWxsYSkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBpZiB2IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgbWlzc2luZyBvciBpbnZhbGlkIHZhbHVlIGZvciBleHBpcmVzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZTogdHJlYXRpbmcgYXMgc2Vzc2lvbiBjb29raWUiKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgaWYgayA9PSAibWF4LWFnZSI6CiAgICAgICAgICAgICAgICAgICAgbWF4X2FnZV9zZXQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICB2ID0gaW50KHYpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgbWlzc2luZyBvciBpbnZhbGlkIChub24tbnVtZXJpYykgdmFsdWUgZm9yICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heC1hZ2UgYXR0cmlidXRlIikKICAgICAgICAgICAgICAgICAgICAgICAgYmFkX2Nvb2tpZSA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgUkZDIDI5NjUgTWF4LUFnZSB0byBzZWNvbmRzIHNpbmNlIGVwb2NoCiAgICAgICAgICAgICAgICAgICAgIyBYWFggU3RyaWN0bHkgeW91J3JlIHN1cHBvc2VkIHRvIGZvbGxvdyBSRkMgMjYxNgogICAgICAgICAgICAgICAgICAgICMgICBhZ2UtY2FsY3VsYXRpb24gcnVsZXMuICBSZW1lbWJlciB0aGF0IHplcm8gTWF4LUFnZQogICAgICAgICAgICAgICAgICAgICMgICBpcyBhIHJlcXVlc3QgdG8gZGlzY2FyZCAob2xkIGFuZCBuZXcpIGNvb2tpZSwgdGhvdWdoLgogICAgICAgICAgICAgICAgICAgIGsgPSAiZXhwaXJlcyIKICAgICAgICAgICAgICAgICAgICB2ID0gc2VsZi5fbm93ICsgdgogICAgICAgICAgICAgICAgaWYgKGsgaW4gdmFsdWVfYXR0cnMpIG9yIChrIGluIGJvb2xlYW5fYXR0cnMpOgogICAgICAgICAgICAgICAgICAgIGlmICh2IGlzIE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGsgbm90IGluICgicG9ydCIsICJjb21tZW50IiwgImNvbW1lbnR1cmwiKSk6CiAgICAgICAgICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgbWlzc2luZyB2YWx1ZSBmb3IgJXMgYXR0cmlidXRlIiAlIGspCiAgICAgICAgICAgICAgICAgICAgICAgIGJhZF9jb29raWUgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmRba10gPSB2CiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJlc3Rba10gPSB2CgogICAgICAgICAgICBpZiBiYWRfY29va2llOgogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGNvb2tpZV90dXBsZXMuYXBwZW5kKChuYW1lLCB2YWx1ZSwgc3RhbmRhcmQsIHJlc3QpKQoKICAgICAgICByZXR1cm4gY29va2llX3R1cGxlcwoKICAgIGRlZiBfY29va2llX2Zyb21fY29va2llX3R1cGxlKHNlbGYsIHR1cCwgcmVxdWVzdCk6CiAgICAgICAgIyBzdGFuZGFyZCBpcyBkaWN0IG9mIHN0YW5kYXJkIGNvb2tpZS1hdHRyaWJ1dGVzLCByZXN0IGlzIGRpY3Qgb2YgdGhlCiAgICAgICAgIyByZXN0IG9mIHRoZW0KICAgICAgICBuYW1lLCB2YWx1ZSwgc3RhbmRhcmQsIHJlc3QgPSB0dXAKCiAgICAgICAgZG9tYWluID0gc3RhbmRhcmQuZ2V0KCJkb21haW4iLCBBYnNlbnQpCiAgICAgICAgcGF0aCA9IHN0YW5kYXJkLmdldCgicGF0aCIsIEFic2VudCkKICAgICAgICBwb3J0ID0gc3RhbmRhcmQuZ2V0KCJwb3J0IiwgQWJzZW50KQogICAgICAgIGV4cGlyZXMgPSBzdGFuZGFyZC5nZXQoImV4cGlyZXMiLCBBYnNlbnQpCgogICAgICAgICMgc2V0IHRoZSBlYXN5IGRlZmF1bHRzCiAgICAgICAgdmVyc2lvbiA9IHN0YW5kYXJkLmdldCgidmVyc2lvbiIsIE5vbmUpCiAgICAgICAgaWYgdmVyc2lvbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdmVyc2lvbiA9IGludCh2ZXJzaW9uKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIHJldHVybiBOb25lICAjIGludmFsaWQgdmVyc2lvbiwgaWdub3JlIGNvb2tpZQogICAgICAgIHNlY3VyZSA9IHN0YW5kYXJkLmdldCgic2VjdXJlIiwgRmFsc2UpCiAgICAgICAgIyAoZGlzY2FyZCBpcyBhbHNvIHNldCBpZiBleHBpcmVzIGlzIEFic2VudCkKICAgICAgICBkaXNjYXJkID0gc3RhbmRhcmQuZ2V0KCJkaXNjYXJkIiwgRmFsc2UpCiAgICAgICAgY29tbWVudCA9IHN0YW5kYXJkLmdldCgiY29tbWVudCIsIE5vbmUpCiAgICAgICAgY29tbWVudF91cmwgPSBzdGFuZGFyZC5nZXQoImNvbW1lbnR1cmwiLCBOb25lKQoKICAgICAgICAjIHNldCBkZWZhdWx0IHBhdGgKICAgICAgICBpZiBwYXRoIGlzIG5vdCBBYnNlbnQgYW5kIHBhdGggIT0gIiI6CiAgICAgICAgICAgIHBhdGhfc3BlY2lmaWVkID0gVHJ1ZQogICAgICAgICAgICBwYXRoID0gZXNjYXBlX3BhdGgocGF0aCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXRoX3NwZWNpZmllZCA9IEZhbHNlCiAgICAgICAgICAgIHBhdGggPSByZXF1ZXN0X3BhdGgocmVxdWVzdCkKICAgICAgICAgICAgaSA9IHBhdGgucmZpbmQoIi8iKQogICAgICAgICAgICBpZiBpICE9IC0xOgogICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA9PSAwOgogICAgICAgICAgICAgICAgICAgICMgTmV0c2NhcGUgc3BlYyBwYXJ0cyBjb21wYW55IGZyb20gcmVhbGl0eSBoZXJlCiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhbOmldCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoWzppKzFdCiAgICAgICAgICAgIGlmIGxlbihwYXRoKSA9PSAwOiBwYXRoID0gIi8iCgogICAgICAgICMgc2V0IGRlZmF1bHQgZG9tYWluCiAgICAgICAgZG9tYWluX3NwZWNpZmllZCA9IGRvbWFpbiBpcyBub3QgQWJzZW50CiAgICAgICAgIyBidXQgZmlyc3Qgd2UgaGF2ZSB0byByZW1lbWJlciB3aGV0aGVyIGl0IHN0YXJ0cyB3aXRoIGEgZG90CiAgICAgICAgZG9tYWluX2luaXRpYWxfZG90ID0gRmFsc2UKICAgICAgICBpZiBkb21haW5fc3BlY2lmaWVkOgogICAgICAgICAgICBkb21haW5faW5pdGlhbF9kb3QgPSBib29sKGRvbWFpbi5zdGFydHN3aXRoKCIuIikpCiAgICAgICAgaWYgZG9tYWluIGlzIEFic2VudDoKICAgICAgICAgICAgcmVxX2hvc3QsIGVyaG4gPSBlZmZfcmVxdWVzdF9ob3N0KHJlcXVlc3QpCiAgICAgICAgICAgIGRvbWFpbiA9IGVyaG4KICAgICAgICBlbGlmIG5vdCBkb21haW4uc3RhcnRzd2l0aCgiLiIpOgogICAgICAgICAgICBkb21haW4gPSAiLiIrZG9tYWluCgogICAgICAgICMgc2V0IGRlZmF1bHQgcG9ydAogICAgICAgIHBvcnRfc3BlY2lmaWVkID0gRmFsc2UKICAgICAgICBpZiBwb3J0IGlzIG5vdCBBYnNlbnQ6CiAgICAgICAgICAgIGlmIHBvcnQgaXMgTm9uZToKICAgICAgICAgICAgICAgICMgUG9ydCBhdHRyIHByZXNlbnQsIGJ1dCBoYXMgbm8gdmFsdWU6IGRlZmF1bHQgdG8gcmVxdWVzdCBwb3J0LgogICAgICAgICAgICAgICAgIyBDb29raWUgc2hvdWxkIHRoZW4gb25seSBiZSBzZW50IGJhY2sgb24gdGhhdCBwb3J0LgogICAgICAgICAgICAgICAgcG9ydCA9IHJlcXVlc3RfcG9ydChyZXF1ZXN0KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcG9ydF9zcGVjaWZpZWQgPSBUcnVlCiAgICAgICAgICAgICAgICBwb3J0ID0gcmUuc3ViKHIiXHMrIiwgIiIsIHBvcnQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBObyBwb3J0IGF0dHIgcHJlc2VudC4gIENvb2tpZSBjYW4gYmUgc2VudCBiYWNrIG9uIGFueSBwb3J0LgogICAgICAgICAgICBwb3J0ID0gTm9uZQoKICAgICAgICAjIHNldCBkZWZhdWx0IGV4cGlyZXMgYW5kIGRpc2NhcmQKICAgICAgICBpZiBleHBpcmVzIGlzIEFic2VudDoKICAgICAgICAgICAgZXhwaXJlcyA9IE5vbmUKICAgICAgICAgICAgZGlzY2FyZCA9IFRydWUKICAgICAgICBlbGlmIGV4cGlyZXMgPD0gc2VsZi5fbm93OgogICAgICAgICAgICAjIEV4cGlyeSBkYXRlIGluIHBhc3QgaXMgcmVxdWVzdCB0byBkZWxldGUgY29va2llLiAgVGhpcyBjYW4ndCBiZQogICAgICAgICAgICAjIGluIERlZmF1bHRDb29raWVQb2xpY3ksIGJlY2F1c2UgY2FuJ3QgZGVsZXRlIGNvb2tpZXMgdGhlcmUuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuY2xlYXIoZG9tYWluLCBwYXRoLCBuYW1lKQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIF9kZWJ1ZygiRXhwaXJpbmcgY29va2llLCBkb21haW49JyVzJywgcGF0aD0nJXMnLCBuYW1lPSclcyciLAogICAgICAgICAgICAgICAgICAgZG9tYWluLCBwYXRoLCBuYW1lKQogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICByZXR1cm4gQ29va2llKHZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICBuYW1lLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgIHBvcnQsIHBvcnRfc3BlY2lmaWVkLAogICAgICAgICAgICAgICAgICAgICAgZG9tYWluLCBkb21haW5fc3BlY2lmaWVkLCBkb21haW5faW5pdGlhbF9kb3QsCiAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBwYXRoX3NwZWNpZmllZCwKICAgICAgICAgICAgICAgICAgICAgIHNlY3VyZSwKICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXMsCiAgICAgICAgICAgICAgICAgICAgICBkaXNjYXJkLAogICAgICAgICAgICAgICAgICAgICAgY29tbWVudCwKICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfdXJsLAogICAgICAgICAgICAgICAgICAgICAgcmVzdCkKCiAgICBkZWYgX2Nvb2tpZXNfZnJvbV9hdHRyc19zZXQoc2VsZiwgYXR0cnNfc2V0LCByZXF1ZXN0KToKICAgICAgICBjb29raWVfdHVwbGVzID0gc2VsZi5fbm9ybWFsaXplZF9jb29raWVfdHVwbGVzKGF0dHJzX3NldCkKCiAgICAgICAgY29va2llcyA9IFtdCiAgICAgICAgZm9yIHR1cCBpbiBjb29raWVfdHVwbGVzOgogICAgICAgICAgICBjb29raWUgPSBzZWxmLl9jb29raWVfZnJvbV9jb29raWVfdHVwbGUodHVwLCByZXF1ZXN0KQogICAgICAgICAgICBpZiBjb29raWU6IGNvb2tpZXMuYXBwZW5kKGNvb2tpZSkKICAgICAgICByZXR1cm4gY29va2llcwoKICAgIGRlZiBfcHJvY2Vzc19yZmMyMTA5X2Nvb2tpZXMoc2VsZiwgY29va2llcyk6CiAgICAgICAgcmZjMjEwOV9hc19ucyA9IGdldGF0dHIoc2VsZi5fcG9saWN5LCAncmZjMjEwOV9hc19uZXRzY2FwZScsIE5vbmUpCiAgICAgICAgaWYgcmZjMjEwOV9hc19ucyBpcyBOb25lOgogICAgICAgICAgICByZmMyMTA5X2FzX25zID0gbm90IHNlbGYuX3BvbGljeS5yZmMyOTY1CiAgICAgICAgZm9yIGNvb2tpZSBpbiBjb29raWVzOgogICAgICAgICAgICBpZiBjb29raWUudmVyc2lvbiA9PSAxOgogICAgICAgICAgICAgICAgY29va2llLnJmYzIxMDkgPSBUcnVlCiAgICAgICAgICAgICAgICBpZiByZmMyMTA5X2FzX25zOgogICAgICAgICAgICAgICAgICAgICMgdHJlYXQgMjEwOSBjb29raWVzIGFzIE5ldHNjYXBlIGNvb2tpZXMgcmF0aGVyIHRoYW4KICAgICAgICAgICAgICAgICAgICAjIGFzIFJGQzI5NjUgY29va2llcwogICAgICAgICAgICAgICAgICAgIGNvb2tpZS52ZXJzaW9uID0gMAoKICAgIGRlZiBtYWtlX2Nvb2tpZXMoc2VsZiwgcmVzcG9uc2UsIHJlcXVlc3QpOgogICAgICAgICIiIlJldHVybiBzZXF1ZW5jZSBvZiBDb29raWUgb2JqZWN0cyBleHRyYWN0ZWQgZnJvbSByZXNwb25zZSBvYmplY3QuIiIiCiAgICAgICAgIyBnZXQgY29va2llLWF0dHJpYnV0ZXMgZm9yIFJGQyAyOTY1IGFuZCBOZXRzY2FwZSBwcm90b2NvbHMKICAgICAgICBoZWFkZXJzID0gcmVzcG9uc2UuaW5mbygpCiAgICAgICAgcmZjMjk2NV9oZHJzID0gaGVhZGVycy5nZXRfYWxsKCJTZXQtQ29va2llMiIsIFtdKQogICAgICAgIG5zX2hkcnMgPSBoZWFkZXJzLmdldF9hbGwoIlNldC1Db29raWUiLCBbXSkKICAgICAgICBzZWxmLl9wb2xpY3kuX25vdyA9IHNlbGYuX25vdyA9IGludCh0aW1lLnRpbWUoKSkKCiAgICAgICAgcmZjMjk2NSA9IHNlbGYuX3BvbGljeS5yZmMyOTY1CiAgICAgICAgbmV0c2NhcGUgPSBzZWxmLl9wb2xpY3kubmV0c2NhcGUKCiAgICAgICAgaWYgKChub3QgcmZjMjk2NV9oZHJzIGFuZCBub3QgbnNfaGRycykgb3IKICAgICAgICAgICAgKG5vdCBuc19oZHJzIGFuZCBub3QgcmZjMjk2NSkgb3IKICAgICAgICAgICAgKG5vdCByZmMyOTY1X2hkcnMgYW5kIG5vdCBuZXRzY2FwZSkgb3IKICAgICAgICAgICAgKG5vdCBuZXRzY2FwZSBhbmQgbm90IHJmYzI5NjUpKToKICAgICAgICAgICAgcmV0dXJuIFtdICAjIG5vIHJlbGV2YW50IGNvb2tpZSBoZWFkZXJzOiBxdWljayBleGl0CgogICAgICAgIHRyeToKICAgICAgICAgICAgY29va2llcyA9IHNlbGYuX2Nvb2tpZXNfZnJvbV9hdHRyc19zZXQoCiAgICAgICAgICAgICAgICBzcGxpdF9oZWFkZXJfd29yZHMocmZjMjk2NV9oZHJzKSwgcmVxdWVzdCkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBfd2Fybl91bmhhbmRsZWRfZXhjZXB0aW9uKCkKICAgICAgICAgICAgY29va2llcyA9IFtdCgogICAgICAgIGlmIG5zX2hkcnMgYW5kIG5ldHNjYXBlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAjIFJGQyAyMTA5IGFuZCBOZXRzY2FwZSBjb29raWVzCiAgICAgICAgICAgICAgICBuc19jb29raWVzID0gc2VsZi5fY29va2llc19mcm9tX2F0dHJzX3NldCgKICAgICAgICAgICAgICAgICAgICBwYXJzZV9uc19oZWFkZXJzKG5zX2hkcnMpLCByZXF1ZXN0KQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgX3dhcm5fdW5oYW5kbGVkX2V4Y2VwdGlvbigpCiAgICAgICAgICAgICAgICBuc19jb29raWVzID0gW10KICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19yZmMyMTA5X2Nvb2tpZXMobnNfY29va2llcykKCiAgICAgICAgICAgICMgTG9vayBmb3IgTmV0c2NhcGUgY29va2llcyAoZnJvbSBTZXQtQ29va2llIGhlYWRlcnMpIHRoYXQgbWF0Y2gKICAgICAgICAgICAgIyBjb3JyZXNwb25kaW5nIFJGQyAyOTY1IGNvb2tpZXMgKGZyb20gU2V0LUNvb2tpZTIgaGVhZGVycykuCiAgICAgICAgICAgICMgRm9yIGVhY2ggbWF0Y2gsIGtlZXAgdGhlIFJGQyAyOTY1IGNvb2tpZSBhbmQgaWdub3JlIHRoZSBOZXRzY2FwZQogICAgICAgICAgICAjIGNvb2tpZSAoUkZDIDI5NjUgc2VjdGlvbiA5LjEpLiAgQWN0dWFsbHksIFJGQyAyMTA5IGNvb2tpZXMgYXJlCiAgICAgICAgICAgICMgYnVuZGxlZCBpbiB3aXRoIHRoZSBOZXRzY2FwZSBjb29raWVzIGZvciB0aGlzIHB1cnBvc2UsIHdoaWNoIGlzCiAgICAgICAgICAgICMgcmVhc29uYWJsZSBiZWhhdmlvdXIuCiAgICAgICAgICAgIGlmIHJmYzI5NjU6CiAgICAgICAgICAgICAgICBsb29rdXAgPSB7fQogICAgICAgICAgICAgICAgZm9yIGNvb2tpZSBpbiBjb29raWVzOgogICAgICAgICAgICAgICAgICAgIGxvb2t1cFsoY29va2llLmRvbWFpbiwgY29va2llLnBhdGgsIGNvb2tpZS5uYW1lKV0gPSBOb25lCgogICAgICAgICAgICAgICAgZGVmIG5vX21hdGNoaW5nX3JmYzI5NjUobnNfY29va2llLCBsb29rdXA9bG9va3VwKToKICAgICAgICAgICAgICAgICAgICBrZXkgPSBuc19jb29raWUuZG9tYWluLCBuc19jb29raWUucGF0aCwgbnNfY29va2llLm5hbWUKICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5IG5vdCBpbiBsb29rdXAKICAgICAgICAgICAgICAgIG5zX2Nvb2tpZXMgPSBmaWx0ZXIobm9fbWF0Y2hpbmdfcmZjMjk2NSwgbnNfY29va2llcykKCiAgICAgICAgICAgIGlmIG5zX2Nvb2tpZXM6CiAgICAgICAgICAgICAgICBjb29raWVzLmV4dGVuZChuc19jb29raWVzKQoKICAgICAgICByZXR1cm4gY29va2llcwoKICAgIGRlZiBzZXRfY29va2llX2lmX29rKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgIiIiU2V0IGEgY29va2llIGlmIHBvbGljeSBzYXlzIGl0J3MgT0sgdG8gZG8gc28uIiIiCiAgICAgICAgc2VsZi5fY29va2llc19sb2NrLmFjcXVpcmUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fcG9saWN5Ll9ub3cgPSBzZWxmLl9ub3cgPSBpbnQodGltZS50aW1lKCkpCgogICAgICAgICAgICBpZiBzZWxmLl9wb2xpY3kuc2V0X29rKGNvb2tpZSwgcmVxdWVzdCk6CiAgICAgICAgICAgICAgICBzZWxmLnNldF9jb29raWUoY29va2llKQoKCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fY29va2llc19sb2NrLnJlbGVhc2UoKQoKICAgIGRlZiBzZXRfY29va2llKHNlbGYsIGNvb2tpZSk6CiAgICAgICAgIiIiU2V0IGEgY29va2llLCB3aXRob3V0IGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IGl0IHNob3VsZCBiZSBzZXQuIiIiCiAgICAgICAgYyA9IHNlbGYuX2Nvb2tpZXMKICAgICAgICBzZWxmLl9jb29raWVzX2xvY2suYWNxdWlyZSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBjb29raWUuZG9tYWluIG5vdCBpbiBjOiBjW2Nvb2tpZS5kb21haW5dID0ge30KICAgICAgICAgICAgYzIgPSBjW2Nvb2tpZS5kb21haW5dCiAgICAgICAgICAgIGlmIGNvb2tpZS5wYXRoIG5vdCBpbiBjMjogYzJbY29va2llLnBhdGhdID0ge30KICAgICAgICAgICAgYzMgPSBjMltjb29raWUucGF0aF0KICAgICAgICAgICAgYzNbY29va2llLm5hbWVdID0gY29va2llCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fY29va2llc19sb2NrLnJlbGVhc2UoKQoKICAgIGRlZiBleHRyYWN0X2Nvb2tpZXMoc2VsZiwgcmVzcG9uc2UsIHJlcXVlc3QpOgogICAgICAgICIiIkV4dHJhY3QgY29va2llcyBmcm9tIHJlc3BvbnNlLCB3aGVyZSBhbGxvd2FibGUgZ2l2ZW4gdGhlIHJlcXVlc3QuIiIiCiAgICAgICAgX2RlYnVnKCJleHRyYWN0X2Nvb2tpZXM6ICVzIiwgcmVzcG9uc2UuaW5mbygpKQogICAgICAgIHNlbGYuX2Nvb2tpZXNfbG9jay5hY3F1aXJlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZvciBjb29raWUgaW4gc2VsZi5tYWtlX2Nvb2tpZXMocmVzcG9uc2UsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgaWYgc2VsZi5fcG9saWN5LnNldF9vayhjb29raWUsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgICAgIF9kZWJ1ZygiIHNldHRpbmcgY29va2llOiAlcyIsIGNvb2tpZSkKICAgICAgICAgICAgICAgICAgICBzZWxmLnNldF9jb29raWUoY29va2llKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX2Nvb2tpZXNfbG9jay5yZWxlYXNlKCkKCiAgICBkZWYgY2xlYXIoc2VsZiwgZG9tYWluPU5vbmUsIHBhdGg9Tm9uZSwgbmFtZT1Ob25lKToKICAgICAgICAiIiJDbGVhciBzb21lIGNvb2tpZXMuCgogICAgICAgIEludm9raW5nIHRoaXMgbWV0aG9kIHdpdGhvdXQgYXJndW1lbnRzIHdpbGwgY2xlYXIgYWxsIGNvb2tpZXMuICBJZgogICAgICAgIGdpdmVuIGEgc2luZ2xlIGFyZ3VtZW50LCBvbmx5IGNvb2tpZXMgYmVsb25naW5nIHRvIHRoYXQgZG9tYWluIHdpbGwgYmUKICAgICAgICByZW1vdmVkLiAgSWYgZ2l2ZW4gdHdvIGFyZ3VtZW50cywgY29va2llcyBiZWxvbmdpbmcgdG8gdGhlIHNwZWNpZmllZAogICAgICAgIHBhdGggd2l0aGluIHRoYXQgZG9tYWluIGFyZSByZW1vdmVkLiAgSWYgZ2l2ZW4gdGhyZWUgYXJndW1lbnRzLCB0aGVuCiAgICAgICAgdGhlIGNvb2tpZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwgcGF0aCBhbmQgZG9tYWluIGlzIHJlbW92ZWQuCgogICAgICAgIFJhaXNlcyBLZXlFcnJvciBpZiBubyBtYXRjaGluZyBjb29raWUgZXhpc3RzLgoKICAgICAgICAiIiIKICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiAoZG9tYWluIGlzIE5vbmUpIG9yIChwYXRoIGlzIE5vbmUpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiZG9tYWluIGFuZCBwYXRoIG11c3QgYmUgZ2l2ZW4gdG8gcmVtb3ZlIGEgY29va2llIGJ5IG5hbWUiKQogICAgICAgICAgICBkZWwgc2VsZi5fY29va2llc1tkb21haW5dW3BhdGhdW25hbWVdCiAgICAgICAgZWxpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBkb21haW4gaXMgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgImRvbWFpbiBtdXN0IGJlIGdpdmVuIHRvIHJlbW92ZSBjb29raWVzIGJ5IHBhdGgiKQogICAgICAgICAgICBkZWwgc2VsZi5fY29va2llc1tkb21haW5dW3BhdGhdCiAgICAgICAgZWxpZiBkb21haW4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGRlbCBzZWxmLl9jb29raWVzW2RvbWFpbl0KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9jb29raWVzID0ge30KCiAgICBkZWYgY2xlYXJfc2Vzc2lvbl9jb29raWVzKHNlbGYpOgogICAgICAgICIiIkRpc2NhcmQgYWxsIHNlc3Npb24gY29va2llcy4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSAuc2F2ZSgpIG1ldGhvZCB3b24ndCBzYXZlIHNlc3Npb24gY29va2llcyBhbnl3YXksIHVubGVzcwogICAgICAgIHlvdSBhc2sgb3RoZXJ3aXNlIGJ5IHBhc3NpbmcgYSB0cnVlIGlnbm9yZV9kaXNjYXJkIGFyZ3VtZW50LgoKICAgICAgICAiIiIKICAgICAgICBzZWxmLl9jb29raWVzX2xvY2suYWNxdWlyZSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmb3IgY29va2llIGluIHNlbGY6CiAgICAgICAgICAgICAgICBpZiBjb29raWUuZGlzY2FyZDoKICAgICAgICAgICAgICAgICAgICBzZWxmLmNsZWFyKGNvb2tpZS5kb21haW4sIGNvb2tpZS5wYXRoLCBjb29raWUubmFtZSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl9jb29raWVzX2xvY2sucmVsZWFzZSgpCgogICAgZGVmIGNsZWFyX2V4cGlyZWRfY29va2llcyhzZWxmKToKICAgICAgICAiIiJEaXNjYXJkIGFsbCBleHBpcmVkIGNvb2tpZXMuCgogICAgICAgIFlvdSBwcm9iYWJseSBkb24ndCBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2Q6IGV4cGlyZWQgY29va2llcyBhcmUgbmV2ZXIKICAgICAgICBzZW50IGJhY2sgdG8gdGhlIHNlcnZlciAocHJvdmlkZWQgeW91J3JlIHVzaW5nIERlZmF1bHRDb29raWVQb2xpY3kpLAogICAgICAgIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBDb29raWVKYXIgaXRzZWxmIGV2ZXJ5IHNvIG9mdGVuLCBhbmQgdGhlCiAgICAgICAgLnNhdmUoKSBtZXRob2Qgd29uJ3Qgc2F2ZSBleHBpcmVkIGNvb2tpZXMgYW55d2F5ICh1bmxlc3MgeW91IGFzawogICAgICAgIG90aGVyd2lzZSBieSBwYXNzaW5nIGEgdHJ1ZSBpZ25vcmVfZXhwaXJlcyBhcmd1bWVudCkuCgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2Nvb2tpZXNfbG9jay5hY3F1aXJlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCiAgICAgICAgICAgIGZvciBjb29raWUgaW4gc2VsZjoKICAgICAgICAgICAgICAgIGlmIGNvb2tpZS5pc19leHBpcmVkKG5vdyk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGVhcihjb29raWUuZG9tYWluLCBjb29raWUucGF0aCwgY29va2llLm5hbWUpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fY29va2llc19sb2NrLnJlbGVhc2UoKQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gZGVlcHZhbHVlcyhzZWxmLl9jb29raWVzKQoKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICIiIlJldHVybiBudW1iZXIgb2YgY29udGFpbmVkIGNvb2tpZXMuIiIiCiAgICAgICAgaSA9IDAKICAgICAgICBmb3IgY29va2llIGluIHNlbGY6IGkgPSBpICsgMQogICAgICAgIHJldHVybiBpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHIgPSBbXQogICAgICAgIGZvciBjb29raWUgaW4gc2VsZjogci5hcHBlbmQocmVwcihjb29raWUpKQogICAgICAgIHJldHVybiAiPCVzWyVzXT4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAiLCAiLmpvaW4ocikpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgciA9IFtdCiAgICAgICAgZm9yIGNvb2tpZSBpbiBzZWxmOiByLmFwcGVuZChzdHIoY29va2llKSkKICAgICAgICByZXR1cm4gIjwlc1slc10+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgIiwgIi5qb2luKHIpKQoKCiMgZGVyaXZlcyBmcm9tIE9TRXJyb3IgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDIuNC4wCmNsYXNzIExvYWRFcnJvcihPU0Vycm9yKTogcGFzcwoKY2xhc3MgRmlsZUNvb2tpZUphcihDb29raWVKYXIpOgogICAgIiIiQ29va2llSmFyIHRoYXQgY2FuIGJlIGxvYWRlZCBmcm9tIGFuZCBzYXZlZCB0byBhIGZpbGUuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lPU5vbmUsIGRlbGF5bG9hZD1GYWxzZSwgcG9saWN5PU5vbmUpOgogICAgICAgICIiIgogICAgICAgIENvb2tpZXMgYXJlIE5PVCBsb2FkZWQgZnJvbSB0aGUgbmFtZWQgZmlsZSB1bnRpbCBlaXRoZXIgdGhlIC5sb2FkKCkgb3IKICAgICAgICAucmV2ZXJ0KCkgbWV0aG9kIGlzIGNhbGxlZC4KCiAgICAgICAgIiIiCiAgICAgICAgQ29va2llSmFyLl9faW5pdF9fKHNlbGYsIHBvbGljeSkKICAgICAgICBpZiBmaWxlbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5mc3BhdGgoZmlsZW5hbWUpCiAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgc2VsZi5kZWxheWxvYWQgPSBib29sKGRlbGF5bG9hZCkKCiAgICBkZWYgc2F2ZShzZWxmLCBmaWxlbmFtZT1Ob25lLCBpZ25vcmVfZGlzY2FyZD1GYWxzZSwgaWdub3JlX2V4cGlyZXM9RmFsc2UpOgogICAgICAgICIiIlNhdmUgY29va2llcyB0byBhIGZpbGUuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCgogICAgZGVmIGxvYWQoc2VsZiwgZmlsZW5hbWU9Tm9uZSwgaWdub3JlX2Rpc2NhcmQ9RmFsc2UsIGlnbm9yZV9leHBpcmVzPUZhbHNlKToKICAgICAgICAiIiJMb2FkIGNvb2tpZXMgZnJvbSBhIGZpbGUuIiIiCiAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICAgICAgaWYgc2VsZi5maWxlbmFtZSBpcyBub3QgTm9uZTogZmlsZW5hbWUgPSBzZWxmLmZpbGVuYW1lCiAgICAgICAgICAgIGVsc2U6IHJhaXNlIFZhbHVlRXJyb3IoTUlTU0lOR19GSUxFTkFNRV9URVhUKQoKICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGY6CiAgICAgICAgICAgIHNlbGYuX3JlYWxseV9sb2FkKGYsIGZpbGVuYW1lLCBpZ25vcmVfZGlzY2FyZCwgaWdub3JlX2V4cGlyZXMpCgogICAgZGVmIHJldmVydChzZWxmLCBmaWxlbmFtZT1Ob25lLAogICAgICAgICAgICAgICBpZ25vcmVfZGlzY2FyZD1GYWxzZSwgaWdub3JlX2V4cGlyZXM9RmFsc2UpOgogICAgICAgICIiIkNsZWFyIGFsbCBjb29raWVzIGFuZCByZWxvYWQgY29va2llcyBmcm9tIGEgc2F2ZWQgZmlsZS4KCiAgICAgICAgUmFpc2VzIExvYWRFcnJvciAob3IgT1NFcnJvcikgaWYgcmV2ZXJzaW9uIGlzIG5vdCBzdWNjZXNzZnVsOyB0aGUKICAgICAgICBvYmplY3QncyBzdGF0ZSB3aWxsIG5vdCBiZSBhbHRlcmVkIGlmIHRoaXMgaGFwcGVucy4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICAgICAgaWYgc2VsZi5maWxlbmFtZSBpcyBub3QgTm9uZTogZmlsZW5hbWUgPSBzZWxmLmZpbGVuYW1lCiAgICAgICAgICAgIGVsc2U6IHJhaXNlIFZhbHVlRXJyb3IoTUlTU0lOR19GSUxFTkFNRV9URVhUKQoKICAgICAgICBzZWxmLl9jb29raWVzX2xvY2suYWNxdWlyZSgpCiAgICAgICAgdHJ5OgoKICAgICAgICAgICAgb2xkX3N0YXRlID0gY29weS5kZWVwY29weShzZWxmLl9jb29raWVzKQogICAgICAgICAgICBzZWxmLl9jb29raWVzID0ge30KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5sb2FkKGZpbGVuYW1lLCBpZ25vcmVfZGlzY2FyZCwgaWdub3JlX2V4cGlyZXMpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgc2VsZi5fY29va2llcyA9IG9sZF9zdGF0ZQogICAgICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fY29va2llc19sb2NrLnJlbGVhc2UoKQoKCmRlZiBsd3BfY29va2llX3N0cihjb29raWUpOgogICAgIiIiUmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBDb29raWUgaW4gdGhlIExXUCBjb29raWUgZmlsZSBmb3JtYXQuCgogICAgQWN0dWFsbHksIHRoZSBmb3JtYXQgaXMgZXh0ZW5kZWQgYSBiaXQgLS0gc2VlIG1vZHVsZSBkb2NzdHJpbmcuCgogICAgIiIiCiAgICBoID0gWyhjb29raWUubmFtZSwgY29va2llLnZhbHVlKSwKICAgICAgICAgKCJwYXRoIiwgY29va2llLnBhdGgpLAogICAgICAgICAoImRvbWFpbiIsIGNvb2tpZS5kb21haW4pXQogICAgaWYgY29va2llLnBvcnQgaXMgbm90IE5vbmU6IGguYXBwZW5kKCgicG9ydCIsIGNvb2tpZS5wb3J0KSkKICAgIGlmIGNvb2tpZS5wYXRoX3NwZWNpZmllZDogaC5hcHBlbmQoKCJwYXRoX3NwZWMiLCBOb25lKSkKICAgIGlmIGNvb2tpZS5wb3J0X3NwZWNpZmllZDogaC5hcHBlbmQoKCJwb3J0X3NwZWMiLCBOb25lKSkKICAgIGlmIGNvb2tpZS5kb21haW5faW5pdGlhbF9kb3Q6IGguYXBwZW5kKCgiZG9tYWluX2RvdCIsIE5vbmUpKQogICAgaWYgY29va2llLnNlY3VyZTogaC5hcHBlbmQoKCJzZWN1cmUiLCBOb25lKSkKICAgIGlmIGNvb2tpZS5leHBpcmVzOiBoLmFwcGVuZCgoImV4cGlyZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTJpc296KGZsb2F0KGNvb2tpZS5leHBpcmVzKSkpKQogICAgaWYgY29va2llLmRpc2NhcmQ6IGguYXBwZW5kKCgiZGlzY2FyZCIsIE5vbmUpKQogICAgaWYgY29va2llLmNvbW1lbnQ6IGguYXBwZW5kKCgiY29tbWVudCIsIGNvb2tpZS5jb21tZW50KSkKICAgIGlmIGNvb2tpZS5jb21tZW50X3VybDogaC5hcHBlbmQoKCJjb21tZW50dXJsIiwgY29va2llLmNvbW1lbnRfdXJsKSkKCiAgICBrZXlzID0gc29ydGVkKGNvb2tpZS5fcmVzdC5rZXlzKCkpCiAgICBmb3IgayBpbiBrZXlzOgogICAgICAgIGguYXBwZW5kKChrLCBzdHIoY29va2llLl9yZXN0W2tdKSkpCgogICAgaC5hcHBlbmQoKCJ2ZXJzaW9uIiwgc3RyKGNvb2tpZS52ZXJzaW9uKSkpCgogICAgcmV0dXJuIGpvaW5faGVhZGVyX3dvcmRzKFtoXSkKCmNsYXNzIExXUENvb2tpZUphcihGaWxlQ29va2llSmFyKToKICAgICIiIgogICAgVGhlIExXUENvb2tpZUphciBzYXZlcyBhIHNlcXVlbmNlIG9mICJTZXQtQ29va2llMyIgbGluZXMuCiAgICAiU2V0LUNvb2tpZTMiIGlzIHRoZSBmb3JtYXQgdXNlZCBieSB0aGUgbGlid3d3LXBlcmwgbGlicmFyeSwgbm90IGtub3duCiAgICB0byBiZSBjb21wYXRpYmxlIHdpdGggYW55IGJyb3dzZXIsIGJ1dCB3aGljaCBpcyBlYXN5IHRvIHJlYWQgYW5kCiAgICBkb2Vzbid0IGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgUkZDIDI5NjUgY29va2llcy4KCiAgICBBZGRpdGlvbmFsIG1ldGhvZHMKCiAgICBhc19sd3Bfc3RyKGlnbm9yZV9kaXNjYXJkPVRydWUsIGlnbm9yZV9leHBpcmVkPVRydWUpCgogICAgIiIiCgogICAgZGVmIGFzX2x3cF9zdHIoc2VsZiwgaWdub3JlX2Rpc2NhcmQ9VHJ1ZSwgaWdub3JlX2V4cGlyZXM9VHJ1ZSk6CiAgICAgICAgIiIiUmV0dXJuIGNvb2tpZXMgYXMgYSBzdHJpbmcgb2YgIlxcbiItc2VwYXJhdGVkICJTZXQtQ29va2llMyIgaGVhZGVycy4KCiAgICAgICAgaWdub3JlX2Rpc2NhcmQgYW5kIGlnbm9yZV9leHBpcmVzOiBzZWUgZG9jc3RyaW5nIGZvciBGaWxlQ29va2llSmFyLnNhdmUKCiAgICAgICAgIiIiCiAgICAgICAgbm93ID0gdGltZS50aW1lKCkKICAgICAgICByID0gW10KICAgICAgICBmb3IgY29va2llIGluIHNlbGY6CiAgICAgICAgICAgIGlmIG5vdCBpZ25vcmVfZGlzY2FyZCBhbmQgY29va2llLmRpc2NhcmQ6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBub3QgaWdub3JlX2V4cGlyZXMgYW5kIGNvb2tpZS5pc19leHBpcmVkKG5vdyk6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICByLmFwcGVuZCgiU2V0LUNvb2tpZTM6ICVzIiAlIGx3cF9jb29raWVfc3RyKGNvb2tpZSkpCiAgICAgICAgcmV0dXJuICJcbiIuam9pbihyK1siIl0pCgogICAgZGVmIHNhdmUoc2VsZiwgZmlsZW5hbWU9Tm9uZSwgaWdub3JlX2Rpc2NhcmQ9RmFsc2UsIGlnbm9yZV9leHBpcmVzPUZhbHNlKToKICAgICAgICBpZiBmaWxlbmFtZSBpcyBOb25lOgogICAgICAgICAgICBpZiBzZWxmLmZpbGVuYW1lIGlzIG5vdCBOb25lOiBmaWxlbmFtZSA9IHNlbGYuZmlsZW5hbWUKICAgICAgICAgICAgZWxzZTogcmFpc2UgVmFsdWVFcnJvcihNSVNTSU5HX0ZJTEVOQU1FX1RFWFQpCgogICAgICAgIHdpdGggb3MuZmRvcGVuKAogICAgICAgICAgICBvcy5vcGVuKGZpbGVuYW1lLCBvcy5PX0NSRUFUIHwgb3MuT19XUk9OTFkgfCBvcy5PX1RSVU5DLCAwbzYwMCksCiAgICAgICAgICAgICd3JywKICAgICAgICApIGFzIGY6CiAgICAgICAgICAgICMgVGhlcmUgcmVhbGx5IGlzbid0IGFuIExXUCBDb29raWVzIDIuMCBmb3JtYXQsIGJ1dCB0aGlzIGluZGljYXRlcwogICAgICAgICAgICAjIHRoYXQgdGhlcmUgaXMgZXh0cmEgaW5mb3JtYXRpb24gaW4gaGVyZSAoZG9tYWluX2RvdCBhbmQKICAgICAgICAgICAgIyBwb3J0X3NwZWMpIHdoaWxlIHN0aWxsIGJlaW5nIGNvbXBhdGlibGUgd2l0aCBsaWJ3d3ctcGVybCwgSSBob3BlLgogICAgICAgICAgICBmLndyaXRlKCIjTFdQLUNvb2tpZXMtMi4wXG4iKQogICAgICAgICAgICBmLndyaXRlKHNlbGYuYXNfbHdwX3N0cihpZ25vcmVfZGlzY2FyZCwgaWdub3JlX2V4cGlyZXMpKQoKICAgIGRlZiBfcmVhbGx5X2xvYWQoc2VsZiwgZiwgZmlsZW5hbWUsIGlnbm9yZV9kaXNjYXJkLCBpZ25vcmVfZXhwaXJlcyk6CiAgICAgICAgbWFnaWMgPSBmLnJlYWRsaW5lKCkKICAgICAgICBpZiBub3Qgc2VsZi5tYWdpY19yZS5zZWFyY2gobWFnaWMpOgogICAgICAgICAgICBtc2cgPSAoIiVyIGRvZXMgbm90IGxvb2sgbGlrZSBhIFNldC1Db29raWUzIChMV1ApIGZvcm1hdCAiCiAgICAgICAgICAgICAgICAgICAiZmlsZSIgJSBmaWxlbmFtZSkKICAgICAgICAgICAgcmFpc2UgTG9hZEVycm9yKG1zZykKCiAgICAgICAgbm93ID0gdGltZS50aW1lKCkKCiAgICAgICAgaGVhZGVyID0gIlNldC1Db29raWUzOiIKICAgICAgICBib29sZWFuX2F0dHJzID0gKCJwb3J0X3NwZWMiLCAicGF0aF9zcGVjIiwgImRvbWFpbl9kb3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgInNlY3VyZSIsICJkaXNjYXJkIikKICAgICAgICB2YWx1ZV9hdHRycyA9ICgidmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgInBvcnQiLCAicGF0aCIsICJkb21haW4iLAogICAgICAgICAgICAgICAgICAgICAgICJleHBpcmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAiY29tbWVudCIsICJjb21tZW50dXJsIikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgaWYgbGluZSA9PSAiIjogYnJlYWsKICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoaGVhZGVyKToKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbbGVuKGhlYWRlcik6XS5zdHJpcCgpCgogICAgICAgICAgICAgICAgZm9yIGRhdGEgaW4gc3BsaXRfaGVhZGVyX3dvcmRzKFtsaW5lXSk6CiAgICAgICAgICAgICAgICAgICAgbmFtZSwgdmFsdWUgPSBkYXRhWzBdCiAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmQgPSB7fQogICAgICAgICAgICAgICAgICAgIHJlc3QgPSB7fQogICAgICAgICAgICAgICAgICAgIGZvciBrIGluIGJvb2xlYW5fYXR0cnM6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkW2tdID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBkYXRhWzE6XToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxjID0gay5sb3dlcigpCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYyA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgIyBkb24ndCBsb3NlIGNhc2UgZGlzdGluY3Rpb24gZm9yIHVua25vd24gZmllbGRzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYyBpbiB2YWx1ZV9hdHRycykgb3IgKGxjIGluIGJvb2xlYW5fYXR0cnMpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGxjCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGsgaW4gYm9vbGVhbl9hdHRyczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHYgaXMgTm9uZTogdiA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkW2tdID0gdgogICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGsgaW4gdmFsdWVfYXR0cnM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZFtrXSA9IHYKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Rba10gPSB2CgogICAgICAgICAgICAgICAgICAgIGggPSBzdGFuZGFyZC5nZXQKICAgICAgICAgICAgICAgICAgICBleHBpcmVzID0gaCgiZXhwaXJlcyIpCiAgICAgICAgICAgICAgICAgICAgZGlzY2FyZCA9IGgoImRpc2NhcmQiKQogICAgICAgICAgICAgICAgICAgIGlmIGV4cGlyZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXMgPSBpc28ydGltZShleHBpcmVzKQogICAgICAgICAgICAgICAgICAgIGlmIGV4cGlyZXMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2FyZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICBkb21haW4gPSBoKCJkb21haW4iKQogICAgICAgICAgICAgICAgICAgIGRvbWFpbl9zcGVjaWZpZWQgPSBkb21haW4uc3RhcnRzd2l0aCgiLiIpCiAgICAgICAgICAgICAgICAgICAgYyA9IENvb2tpZShoKCJ2ZXJzaW9uIiksIG5hbWUsIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCgicG9ydCIpLCBoKCJwb3J0X3NwZWMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiwgZG9tYWluX3NwZWNpZmllZCwgaCgiZG9tYWluX2RvdCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCgicGF0aCIpLCBoKCJwYXRoX3NwZWMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgoInNlY3VyZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NhcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoKCJjb21tZW50IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoKCJjb21tZW50dXJsIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0KQogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpZ25vcmVfZGlzY2FyZCBhbmQgYy5kaXNjYXJkOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpZ25vcmVfZXhwaXJlcyBhbmQgYy5pc19leHBpcmVkKG5vdyk6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRfY29va2llKGMpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgX3dhcm5fdW5oYW5kbGVkX2V4Y2VwdGlvbigpCiAgICAgICAgICAgIHJhaXNlIExvYWRFcnJvcigiaW52YWxpZCBTZXQtQ29va2llMyBmb3JtYXQgZmlsZSAlcjogJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZSwgbGluZSkpCgoKY2xhc3MgTW96aWxsYUNvb2tpZUphcihGaWxlQ29va2llSmFyKToKICAgICIiIgoKICAgIFdBUk5JTkc6IHlvdSBtYXkgd2FudCB0byBiYWNrdXAgeW91ciBicm93c2VyJ3MgY29va2llcyBmaWxlIGlmIHlvdSB1c2UKICAgIHRoaXMgY2xhc3MgdG8gc2F2ZSBjb29raWVzLiAgSSAqdGhpbmsqIGl0IHdvcmtzLCBidXQgdGhlcmUgaGF2ZSBiZWVuCiAgICBidWdzIGluIHRoZSBwYXN0IQoKICAgIFRoaXMgY2xhc3MgZGlmZmVycyBmcm9tIENvb2tpZUphciBvbmx5IGluIHRoZSBmb3JtYXQgaXQgdXNlcyB0byBzYXZlIGFuZAogICAgbG9hZCBjb29raWVzIHRvIGFuZCBmcm9tIGEgZmlsZS4gIFRoaXMgY2xhc3MgdXNlcyB0aGUgTW96aWxsYS9OZXRzY2FwZQogICAgYGNvb2tpZXMudHh0JyBmb3JtYXQuICBjdXJsIGFuZCBseW54IHVzZSB0aGlzIGZpbGUgZm9ybWF0LCB0b28uCgogICAgRG9uJ3QgZXhwZWN0IGNvb2tpZXMgc2F2ZWQgd2hpbGUgdGhlIGJyb3dzZXIgaXMgcnVubmluZyB0byBiZSBub3RpY2VkIGJ5CiAgICB0aGUgYnJvd3NlciAoaW4gZmFjdCwgTW96aWxsYSBvbiB1bml4IHdpbGwgb3ZlcndyaXRlIHlvdXIgc2F2ZWQgY29va2llcyBpZgogICAgeW91IGNoYW5nZSB0aGVtIG9uIGRpc2sgd2hpbGUgaXQncyBydW5uaW5nOyBvbiBXaW5kb3dzLCB5b3UgcHJvYmFibHkgY2FuJ3QKICAgIHNhdmUgYXQgYWxsIHdoaWxlIHRoZSBicm93c2VyIGlzIHJ1bm5pbmcpLgoKICAgIE5vdGUgdGhhdCB0aGUgTW96aWxsYS9OZXRzY2FwZSBmb3JtYXQgd2lsbCBkb3duZ3JhZGUgUkZDMjk2NSBjb29raWVzIHRvCiAgICBOZXRzY2FwZSBjb29raWVzIG9uIHNhdmluZy4KCiAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgY29va2llIHZlcnNpb24gYW5kIHBvcnQgbnVtYmVyIGluZm9ybWF0aW9uIGlzIGxvc3QsCiAgICB0b2dldGhlciB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgb3Igbm90IFBhdGgsIFBvcnQgYW5kIERpc2NhcmQgd2VyZQogICAgc3BlY2lmaWVkIGJ5IHRoZSBTZXQtQ29va2llMiAob3IgU2V0LUNvb2tpZSkgaGVhZGVyLCBhbmQgd2hldGhlciBvciBub3QgdGhlCiAgICBkb21haW4gYXMgc2V0IGluIHRoZSBIVFRQIGhlYWRlciBzdGFydGVkIHdpdGggYSBkb3QgKHllcywgSSdtIGF3YXJlIHNvbWUKICAgIGRvbWFpbnMgaW4gTmV0c2NhcGUgZmlsZXMgc3RhcnQgd2l0aCBhIGRvdCBhbmQgc29tZSBkb24ndCAtLSB0cnVzdCBtZSwgeW91CiAgICByZWFsbHkgZG9uJ3Qgd2FudCB0byBrbm93IGFueSBtb3JlIGFib3V0IHRoaXMpLgoKICAgIE5vdGUgdGhhdCB0aG91Z2ggTW96aWxsYSBhbmQgTmV0c2NhcGUgdXNlIHRoZSBzYW1lIGZvcm1hdCwgdGhleSB1c2UKICAgIHNsaWdodGx5IGRpZmZlcmVudCBoZWFkZXJzLiAgVGhlIGNsYXNzIHNhdmVzIGNvb2tpZXMgdXNpbmcgdGhlIE5ldHNjYXBlCiAgICBoZWFkZXIgYnkgZGVmYXVsdCAoTW96aWxsYSBjYW4gY29wZSB3aXRoIHRoYXQpLgoKICAgICIiIgoKICAgIGRlZiBfcmVhbGx5X2xvYWQoc2VsZiwgZiwgZmlsZW5hbWUsIGlnbm9yZV9kaXNjYXJkLCBpZ25vcmVfZXhwaXJlcyk6CiAgICAgICAgbm93ID0gdGltZS50aW1lKCkKCiAgICAgICAgaWYgbm90IE5FVFNDQVBFX01BR0lDX1JHWC5tYXRjaChmLnJlYWRsaW5lKCkpOgogICAgICAgICAgICByYWlzZSBMb2FkRXJyb3IoCiAgICAgICAgICAgICAgICAiJXIgZG9lcyBub3QgbG9vayBsaWtlIGEgTmV0c2NhcGUgZm9ybWF0IGNvb2tpZXMgZmlsZSIgJQogICAgICAgICAgICAgICAgZmlsZW5hbWUpCgogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgIHJlc3QgPSB7fQoKICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gIiI6IGJyZWFrCgogICAgICAgICAgICAgICAgIyBodHRwb25seSBpcyBhIGNvb2tpZSBmbGFnIGFzIGRlZmluZWQgaW4gcmZjNjI2NQogICAgICAgICAgICAgICAgIyB3aGVuIGVuY29kZWQgaW4gYSBuZXRzY2FwZSBjb29raWUgZmlsZSwKICAgICAgICAgICAgICAgICMgdGhlIGxpbmUgaXMgcHJlcGVuZGVkIHdpdGggIiNIdHRwT25seV8iCiAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoSFRUUE9OTFlfUFJFRklYKToKICAgICAgICAgICAgICAgICAgICByZXN0W0hUVFBPTkxZX0FUVFJdID0gIiIKICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVtsZW4oSFRUUE9OTFlfUFJFRklYKTpdCgogICAgICAgICAgICAgICAgIyBsYXN0IGZpZWxkIG1heSBiZSBhYnNlbnQsIHNvIGtlZXAgYW55IHRyYWlsaW5nIHRhYgogICAgICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aCgiXG4iKTogbGluZSA9IGxpbmVbOi0xXQoKICAgICAgICAgICAgICAgICMgc2tpcCBjb21tZW50cyBhbmQgYmxhbmsgbGluZXMgWFhYIHdoYXQgaXMgJCBmb3I/CiAgICAgICAgICAgICAgICBpZiAobGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoKCIjIiwgIiQiKSkgb3IKICAgICAgICAgICAgICAgICAgICBsaW5lLnN0cmlwKCkgPT0gIiIpOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICAgICAgZG9tYWluLCBkb21haW5fc3BlY2lmaWVkLCBwYXRoLCBzZWN1cmUsIGV4cGlyZXMsIG5hbWUsIHZhbHVlID0gXAogICAgICAgICAgICAgICAgICAgICAgICBsaW5lLnNwbGl0KCJcdCIpCiAgICAgICAgICAgICAgICBzZWN1cmUgPSAoc2VjdXJlID09ICJUUlVFIikKICAgICAgICAgICAgICAgIGRvbWFpbl9zcGVjaWZpZWQgPSAoZG9tYWluX3NwZWNpZmllZCA9PSAiVFJVRSIpCiAgICAgICAgICAgICAgICBpZiBuYW1lID09ICIiOgogICAgICAgICAgICAgICAgICAgICMgY29va2llcy50eHQgcmVnYXJkcyAnU2V0LUNvb2tpZTogZm9vJyBhcyBhIGNvb2tpZQogICAgICAgICAgICAgICAgICAgICMgd2l0aCBubyBuYW1lLCB3aGVyZWFzIGh0dHAuY29va2llamFyIHJlZ2FyZHMgaXQgYXMgYQogICAgICAgICAgICAgICAgICAgICMgY29va2llIHdpdGggbm8gdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOb25lCgogICAgICAgICAgICAgICAgaW5pdGlhbF9kb3QgPSBkb21haW4uc3RhcnRzd2l0aCgiLiIpCiAgICAgICAgICAgICAgICBhc3NlcnQgZG9tYWluX3NwZWNpZmllZCA9PSBpbml0aWFsX2RvdAoKICAgICAgICAgICAgICAgIGRpc2NhcmQgPSBGYWxzZQogICAgICAgICAgICAgICAgaWYgZXhwaXJlcyA9PSAiIjoKICAgICAgICAgICAgICAgICAgICBleHBpcmVzID0gTm9uZQogICAgICAgICAgICAgICAgICAgIGRpc2NhcmQgPSBUcnVlCgogICAgICAgICAgICAgICAgIyBhc3N1bWUgcGF0aF9zcGVjaWZpZWQgaXMgZmFsc2UKICAgICAgICAgICAgICAgIGMgPSBDb29raWUoMCwgbmFtZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4sIGRvbWFpbl9zcGVjaWZpZWQsIGluaXRpYWxfZG90LAogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjYXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0KQogICAgICAgICAgICAgICAgaWYgbm90IGlnbm9yZV9kaXNjYXJkIGFuZCBjLmRpc2NhcmQ6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGlmIG5vdCBpZ25vcmVfZXhwaXJlcyBhbmQgYy5pc19leHBpcmVkKG5vdyk6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIHNlbGYuc2V0X2Nvb2tpZShjKQoKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBfd2Fybl91bmhhbmRsZWRfZXhjZXB0aW9uKCkKICAgICAgICAgICAgcmFpc2UgTG9hZEVycm9yKCJpbnZhbGlkIE5ldHNjYXBlIGZvcm1hdCBjb29raWVzIGZpbGUgJXI6ICVyIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUsIGxpbmUpKQoKICAgIGRlZiBzYXZlKHNlbGYsIGZpbGVuYW1lPU5vbmUsIGlnbm9yZV9kaXNjYXJkPUZhbHNlLCBpZ25vcmVfZXhwaXJlcz1GYWxzZSk6CiAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICAgICAgaWYgc2VsZi5maWxlbmFtZSBpcyBub3QgTm9uZTogZmlsZW5hbWUgPSBzZWxmLmZpbGVuYW1lCiAgICAgICAgICAgIGVsc2U6IHJhaXNlIFZhbHVlRXJyb3IoTUlTU0lOR19GSUxFTkFNRV9URVhUKQoKICAgICAgICB3aXRoIG9zLmZkb3BlbigKICAgICAgICAgICAgb3Mub3BlbihmaWxlbmFtZSwgb3MuT19DUkVBVCB8IG9zLk9fV1JPTkxZIHwgb3MuT19UUlVOQywgMG82MDApLAogICAgICAgICAgICAndycsCiAgICAgICAgKSBhcyBmOgogICAgICAgICAgICBmLndyaXRlKE5FVFNDQVBFX0hFQURFUl9URVhUKQogICAgICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICBmb3IgY29va2llIGluIHNlbGY6CiAgICAgICAgICAgICAgICBkb21haW4gPSBjb29raWUuZG9tYWluCiAgICAgICAgICAgICAgICBpZiBub3QgaWdub3JlX2Rpc2NhcmQgYW5kIGNvb2tpZS5kaXNjYXJkOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBpZiBub3QgaWdub3JlX2V4cGlyZXMgYW5kIGNvb2tpZS5pc19leHBpcmVkKG5vdyk6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGlmIGNvb2tpZS5zZWN1cmU6IHNlY3VyZSA9ICJUUlVFIgogICAgICAgICAgICAgICAgZWxzZTogc2VjdXJlID0gIkZBTFNFIgogICAgICAgICAgICAgICAgaWYgZG9tYWluLnN0YXJ0c3dpdGgoIi4iKTogaW5pdGlhbF9kb3QgPSAiVFJVRSIKICAgICAgICAgICAgICAgIGVsc2U6IGluaXRpYWxfZG90ID0gIkZBTFNFIgogICAgICAgICAgICAgICAgaWYgY29va2llLmV4cGlyZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgZXhwaXJlcyA9IHN0cihjb29raWUuZXhwaXJlcykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZXhwaXJlcyA9ICIiCiAgICAgICAgICAgICAgICBpZiBjb29raWUudmFsdWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAjIGNvb2tpZXMudHh0IHJlZ2FyZHMgJ1NldC1Db29raWU6IGZvbycgYXMgYSBjb29raWUKICAgICAgICAgICAgICAgICAgICAjIHdpdGggbm8gbmFtZSwgd2hlcmVhcyBodHRwLmNvb2tpZWphciByZWdhcmRzIGl0IGFzIGEKICAgICAgICAgICAgICAgICAgICAjIGNvb2tpZSB3aXRoIG5vIHZhbHVlLgogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiIgogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY29va2llLm5hbWUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGNvb2tpZS5uYW1lCiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjb29raWUudmFsdWUKICAgICAgICAgICAgICAgIGlmIGNvb2tpZS5oYXNfbm9uc3RhbmRhcmRfYXR0cihIVFRQT05MWV9BVFRSKToKICAgICAgICAgICAgICAgICAgICBkb21haW4gPSBIVFRQT05MWV9QUkVGSVggKyBkb21haW4KICAgICAgICAgICAgICAgIGYud3JpdGUoCiAgICAgICAgICAgICAgICAgICAgIlx0Ii5qb2luKFtkb21haW4sIGluaXRpYWxfZG90LCBjb29raWUucGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyZSwgZXhwaXJlcywgbmFtZSwgdmFsdWVdKSsKICAgICAgICAgICAgICAgICAgICAiXG4iKQpQSwMEFAAAAAAAAyCjVq3wrzQCUAAAAlAAAA8AAABodHRwL2Nvb2tpZXMucHkjIyMjCiMgQ29weXJpZ2h0IDIwMDAgYnkgVGltb3RoeSBPJ01hbGxleSA8dGltb0BhbHVtLm1pdC5lZHU+CiMKIyAgICAgICAgICAgICAgICBBbGwgUmlnaHRzIFJlc2VydmVkCiMKIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCiMgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5CiMgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsCiMgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KIyBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YKIyBUaW1vdGh5IE8nTWFsbGV5ICBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkKIyBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbgojIHByaW9yIHBlcm1pc3Npb24uCiMKIyBUaW1vdGh5IE8nTWFsbGV5IERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTCiMgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQojIEFORCBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBUaW1vdGh5IE8nTWFsbGV5IEJFIExJQUJMRSBGT1IKIyBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCiMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLAojIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTCiMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgojIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiMKIyMjIwojCiMgSWQ6IENvb2tpZS5weSx2IDIuMjkgMjAwMC8wOC8yMyAwNToyODo0OSB0aW1vIEV4cAojICAgYnkgVGltb3RoeSBPJ01hbGxleSA8dGltb0BhbHVtLm1pdC5lZHU+CiMKIyAgQ29va2llLnB5IGlzIGEgUHl0aG9uIG1vZHVsZSBmb3IgdGhlIGhhbmRsaW5nIG9mIEhUVFAKIyAgY29va2llcyBhcyBhIFB5dGhvbiBkaWN0aW9uYXJ5LiAgU2VlIFJGQyAyMTA5IGZvciBtb3JlCiMgIGluZm9ybWF0aW9uIG9uIGNvb2tpZXMuCiMKIyAgVGhlIG9yaWdpbmFsIGlkZWEgdG8gdHJlYXQgQ29va2llcyBhcyBhIGRpY3Rpb25hcnkgY2FtZSBmcm9tCiMgIERhdmUgTWl0Y2hlbGwgKGRhdmVtQG1hZ25ldC5jb20pIGluIDE5OTUsIHdoZW4gaGUgcmVsZWFzZWQgdGhlCiMgIGZpcnN0IHZlcnNpb24gb2YgbnNjb29raWUucHkuCiMKIyMjIwoKciIiIgpIZXJlJ3MgYSBzYW1wbGUgc2Vzc2lvbiB0byBzaG93IGhvdyB0byB1c2UgdGhpcyBtb2R1bGUuCkF0IHRoZSBtb21lbnQsIHRoaXMgaXMgdGhlIG9ubHkgZG9jdW1lbnRhdGlvbi4KClRoZSBCYXNpY3MKLS0tLS0tLS0tLQoKSW1wb3J0aW5nIGlzIGVhc3kuLi4KCiAgID4+PiBmcm9tIGh0dHAgaW1wb3J0IGNvb2tpZXMKCk1vc3Qgb2YgdGhlIHRpbWUgeW91IHN0YXJ0IGJ5IGNyZWF0aW5nIGEgY29va2llLgoKICAgPj4+IEMgPSBjb29raWVzLlNpbXBsZUNvb2tpZSgpCgpPbmNlIHlvdSd2ZSBjcmVhdGVkIHlvdXIgQ29va2llLCB5b3UgY2FuIGFkZCB2YWx1ZXMganVzdCBhcyBpZiBpdCB3ZXJlCmEgZGljdGlvbmFyeS4KCiAgID4+PiBDID0gY29va2llcy5TaW1wbGVDb29raWUoKQogICA+Pj4gQ1siZmlnIl0gPSAibmV3dG9uIgogICA+Pj4gQ1sic3VnYXIiXSA9ICJ3YWZlciIKICAgPj4+IEMub3V0cHV0KCkKICAgJ1NldC1Db29raWU6IGZpZz1uZXd0b25cclxuU2V0LUNvb2tpZTogc3VnYXI9d2FmZXInCgpOb3RpY2UgdGhhdCB0aGUgcHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGEgQ29va2llIGlzIHRoZQphcHByb3ByaWF0ZSBmb3JtYXQgZm9yIGEgU2V0LUNvb2tpZTogaGVhZGVyLiAgVGhpcyBpcyB0aGUKZGVmYXVsdCBiZWhhdmlvci4gIFlvdSBjYW4gY2hhbmdlIHRoZSBoZWFkZXIgYW5kIHByaW50ZWQKYXR0cmlidXRlcyBieSB1c2luZyB0aGUgLm91dHB1dCgpIGZ1bmN0aW9uCgogICA+Pj4gQyA9IGNvb2tpZXMuU2ltcGxlQ29va2llKCkKICAgPj4+IENbInJvY2t5Il0gPSAicm9hZCIKICAgPj4+IENbInJvY2t5Il1bInBhdGgiXSA9ICIvY29va2llIgogICA+Pj4gcHJpbnQoQy5vdXRwdXQoaGVhZGVyPSJDb29raWU6IikpCiAgIENvb2tpZTogcm9ja3k9cm9hZDsgUGF0aD0vY29va2llCiAgID4+PiBwcmludChDLm91dHB1dChhdHRycz1bXSwgaGVhZGVyPSJDb29raWU6IikpCiAgIENvb2tpZTogcm9ja3k9cm9hZAoKVGhlIGxvYWQoKSBtZXRob2Qgb2YgYSBDb29raWUgZXh0cmFjdHMgY29va2llcyBmcm9tIGEgc3RyaW5nLiAgSW4gYQpDR0kgc2NyaXB0LCB5b3Ugd291bGQgdXNlIHRoaXMgbWV0aG9kIHRvIGV4dHJhY3QgdGhlIGNvb2tpZXMgZnJvbSB0aGUKSFRUUF9DT09LSUUgZW52aXJvbm1lbnQgdmFyaWFibGUuCgogICA+Pj4gQyA9IGNvb2tpZXMuU2ltcGxlQ29va2llKCkKICAgPj4+IEMubG9hZCgiY2hpcHM9YWhveTsgdmllbm5hPWZpbmdlciIpCiAgID4+PiBDLm91dHB1dCgpCiAgICdTZXQtQ29va2llOiBjaGlwcz1haG95XHJcblNldC1Db29raWU6IHZpZW5uYT1maW5nZXInCgpUaGUgbG9hZCgpIG1ldGhvZCBpcyBkYXJuLXRvb3RpbiBzbWFydCBhYm91dCBpZGVudGlmeWluZyBjb29raWVzCndpdGhpbiBhIHN0cmluZy4gIEVzY2FwZWQgcXVvdGF0aW9uIG1hcmtzLCBuZXN0ZWQgc2VtaWNvbG9ucywgYW5kIG90aGVyCnN1Y2ggdHJpY2tlcmllcyBkbyBub3QgY29uZnVzZSBpdC4KCiAgID4+PiBDID0gY29va2llcy5TaW1wbGVDb29raWUoKQogICA+Pj4gQy5sb2FkKCdrZWVibGVyPSJFPWV2ZXJ5Ym9keTsgTD1cXCJMb3Zlc1xcIjsgZnVkZ2U9XFwwMTI7IjsnKQogICA+Pj4gcHJpbnQoQykKICAgU2V0LUNvb2tpZToga2VlYmxlcj0iRT1ldmVyeWJvZHk7IEw9XCJMb3Zlc1wiOyBmdWRnZT1cMDEyOyIKCkVhY2ggZWxlbWVudCBvZiB0aGUgQ29va2llIGFsc28gc3VwcG9ydHMgYWxsIG9mIHRoZSBSRkMgMjEwOQpDb29raWUgYXR0cmlidXRlcy4gIEhlcmUncyBhbiBleGFtcGxlIHdoaWNoIHNldHMgdGhlIFBhdGgKYXR0cmlidXRlLgoKICAgPj4+IEMgPSBjb29raWVzLlNpbXBsZUNvb2tpZSgpCiAgID4+PiBDWyJvcmVvIl0gPSAiZG91Ymxlc3R1ZmYiCiAgID4+PiBDWyJvcmVvIl1bInBhdGgiXSA9ICIvIgogICA+Pj4gcHJpbnQoQykKICAgU2V0LUNvb2tpZTogb3Jlbz1kb3VibGVzdHVmZjsgUGF0aD0vCgpFYWNoIGRpY3Rpb25hcnkgZWxlbWVudCBoYXMgYSAndmFsdWUnIGF0dHJpYnV0ZSwgd2hpY2ggZ2l2ZXMgeW91CmJhY2sgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5LgoKICAgPj4+IEMgPSBjb29raWVzLlNpbXBsZUNvb2tpZSgpCiAgID4+PiBDWyJ0d2l4Il0gPSAibm9uZSBmb3IgeW91IgogICA+Pj4gQ1sidHdpeCJdLnZhbHVlCiAgICdub25lIGZvciB5b3UnCgpUaGUgU2ltcGxlQ29va2llIGV4cGVjdHMgdGhhdCBhbGwgdmFsdWVzIHNob3VsZCBiZSBzdGFuZGFyZCBzdHJpbmdzLgpKdXN0IHRvIGJlIHN1cmUsIFNpbXBsZUNvb2tpZSBpbnZva2VzIHRoZSBzdHIoKSBidWlsdGluIHRvIGNvbnZlcnQKdGhlIHZhbHVlIHRvIGEgc3RyaW5nLCB3aGVuIHRoZSB2YWx1ZXMgYXJlIHNldCBkaWN0aW9uYXJ5LXN0eWxlLgoKICAgPj4+IEMgPSBjb29raWVzLlNpbXBsZUNvb2tpZSgpCiAgID4+PiBDWyJudW1iZXIiXSA9IDcKICAgPj4+IENbInN0cmluZyJdID0gInNldmVuIgogICA+Pj4gQ1sibnVtYmVyIl0udmFsdWUKICAgJzcnCiAgID4+PiBDWyJzdHJpbmciXS52YWx1ZQogICAnc2V2ZW4nCiAgID4+PiBDLm91dHB1dCgpCiAgICdTZXQtQ29va2llOiBudW1iZXI9N1xyXG5TZXQtQ29va2llOiBzdHJpbmc9c2V2ZW4nCgpGaW5pcy4KIiIiCgojCiMgSW1wb3J0IG91ciByZXF1aXJlZCBtb2R1bGVzCiMKaW1wb3J0IHJlCmltcG9ydCBzdHJpbmcKaW1wb3J0IHR5cGVzCgpfX2FsbF9fID0gWyJDb29raWVFcnJvciIsICJCYXNlQ29va2llIiwgIlNpbXBsZUNvb2tpZSJdCgpfbnVsbGpvaW4gPSAnJy5qb2luCl9zZW1pc3BhY2Vqb2luID0gJzsgJy5qb2luCl9zcGFjZWpvaW4gPSAnICcuam9pbgoKIwojIERlZmluZSBhbiBleGNlcHRpb24gdmlzaWJsZSB0byBFeHRlcm5hbCBtb2R1bGVzCiMKY2xhc3MgQ29va2llRXJyb3IoRXhjZXB0aW9uKToKICAgIHBhc3MKCgojIFRoZXNlIHF1b3Rpbmcgcm91dGluZXMgY29uZm9ybSB0byB0aGUgUkZDMjEwOSBzcGVjaWZpY2F0aW9uLCB3aGljaCBpbgojIHR1cm4gcmVmZXJlbmNlcyB0aGUgY2hhcmFjdGVyIGRlZmluaXRpb25zIGZyb20gUkZDMjA2OC4gIFRoZXkgcHJvdmlkZQojIGEgdHdvLXdheSBxdW90aW5nIGFsZ29yaXRobS4gIEFueSBub24tdGV4dCBjaGFyYWN0ZXIgaXMgdHJhbnNsYXRlZAojIGludG8gYSA0IGNoYXJhY3RlciBzZXF1ZW5jZTogYSBmb3J3YXJkLXNsYXNoIGZvbGxvd2VkIGJ5IHRoZQojIHRocmVlLWRpZ2l0IG9jdGFsIGVxdWl2YWxlbnQgb2YgdGhlIGNoYXJhY3Rlci4gIEFueSAnXCcgb3IgJyInIGlzCiMgcXVvdGVkIHdpdGggYSBwcmVjZWRpbmcgJ1wnIHNsYXNoLgojIEJlY2F1c2Ugb2YgdGhlIHdheSBicm93c2VycyByZWFsbHkgaGFuZGxlIGNvb2tpZXMgKGFzIG9wcG9zZWQgdG8gd2hhdAojIHRoZSBSRkMgc2F5cykgd2UgYWxzbyBlbmNvZGUgIiwiIGFuZCAiOyIuCiMKIyBUaGVzZSBhcmUgdGFrZW4gZnJvbSBSRkMyMDY4IGFuZCBSRkMyMTA5LgojICAgICAgIF9MZWdhbENoYXJzICAgICAgIGlzIHRoZSBsaXN0IG9mIGNoYXJzIHdoaWNoIGRvbid0IHJlcXVpcmUgIidzCiMgICAgICAgX1RyYW5zbGF0b3IgICAgICAgaGFzaC10YWJsZSBmb3IgZmFzdCBxdW90aW5nCiMKX0xlZ2FsQ2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiISMkJSYnKistLl5fYHx+OiIKX1VuZXNjYXBlZENoYXJzID0gX0xlZ2FsQ2hhcnMgKyAnICgpLzw9Pj9AW117fScKCl9UcmFuc2xhdG9yID0ge246ICdcXCUwM28nICUgbgogICAgICAgICAgICAgICBmb3IgbiBpbiBzZXQocmFuZ2UoMjU2KSkgLSBzZXQobWFwKG9yZCwgX1VuZXNjYXBlZENoYXJzKSl9Cl9UcmFuc2xhdG9yLnVwZGF0ZSh7CiAgICBvcmQoJyInKTogJ1xcIicsCiAgICBvcmQoJ1xcJyk6ICdcXFxcJywKfSkKCl9pc19sZWdhbF9rZXkgPSByZS5jb21waWxlKCdbJXNdKycgJSByZS5lc2NhcGUoX0xlZ2FsQ2hhcnMpKS5mdWxsbWF0Y2gKCmRlZiBfcXVvdGUoc3RyKToKICAgIHIiIiJRdW90ZSBhIHN0cmluZyBmb3IgdXNlIGluIGEgY29va2llIGhlYWRlci4KCiAgICBJZiB0aGUgc3RyaW5nIGRvZXMgbm90IG5lZWQgdG8gYmUgZG91YmxlLXF1b3RlZCwgdGhlbiBqdXN0IHJldHVybiB0aGUKICAgIHN0cmluZy4gIE90aGVyd2lzZSwgc3Vycm91bmQgdGhlIHN0cmluZyBpbiBkb3VibGVxdW90ZXMgYW5kIHF1b3RlCiAgICAod2l0aCBhIFwpIHNwZWNpYWwgY2hhcmFjdGVycy4KICAgICIiIgogICAgaWYgc3RyIGlzIE5vbmUgb3IgX2lzX2xlZ2FsX2tleShzdHIpOgogICAgICAgIHJldHVybiBzdHIKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuICciJyArIHN0ci50cmFuc2xhdGUoX1RyYW5zbGF0b3IpICsgJyInCgoKX09jdGFsUGF0dCA9IHJlLmNvbXBpbGUociJcXFswLTNdWzAtN11bMC03XSIpCl9RdW90ZVBhdHQgPSByZS5jb21waWxlKHIiW1xcXS4iKQoKZGVmIF91bnF1b3RlKHN0cik6CiAgICAjIElmIHRoZXJlIGFyZW4ndCBhbnkgZG91YmxlcXVvdGVzLAogICAgIyB0aGVuIHRoZXJlIGNhbid0IGJlIGFueSBzcGVjaWFsIGNoYXJhY3RlcnMuICBTZWUgUkZDIDIxMDkuCiAgICBpZiBzdHIgaXMgTm9uZSBvciBsZW4oc3RyKSA8IDI6CiAgICAgICAgcmV0dXJuIHN0cgogICAgaWYgc3RyWzBdICE9ICciJyBvciBzdHJbLTFdICE9ICciJzoKICAgICAgICByZXR1cm4gc3RyCgogICAgIyBXZSBoYXZlIHRvIGFzc3VtZSB0aGF0IHdlIG11c3QgZGVjb2RlIHRoaXMgc3RyaW5nLgogICAgIyBEb3duIHRvIHdvcmsuCgogICAgIyBSZW1vdmUgdGhlICJzCiAgICBzdHIgPSBzdHJbMTotMV0KCiAgICAjIENoZWNrIGZvciBzcGVjaWFsIHNlcXVlbmNlcy4gIEV4YW1wbGVzOgogICAgIyAgICBcMDEyIC0tPiBcbgogICAgIyAgICBcIiAgIC0tPiAiCiAgICAjCiAgICBpID0gMAogICAgbiA9IGxlbihzdHIpCiAgICByZXMgPSBbXQogICAgd2hpbGUgMCA8PSBpIDwgbjoKICAgICAgICBvX21hdGNoID0gX09jdGFsUGF0dC5zZWFyY2goc3RyLCBpKQogICAgICAgIHFfbWF0Y2ggPSBfUXVvdGVQYXR0LnNlYXJjaChzdHIsIGkpCiAgICAgICAgaWYgbm90IG9fbWF0Y2ggYW5kIG5vdCBxX21hdGNoOiAgICAgICAgICAgICAgIyBOZWl0aGVyIG1hdGNoZWQKICAgICAgICAgICAgcmVzLmFwcGVuZChzdHJbaTpdKQogICAgICAgICAgICBicmVhawogICAgICAgICMgZWxzZToKICAgICAgICBqID0gayA9IC0xCiAgICAgICAgaWYgb19tYXRjaDoKICAgICAgICAgICAgaiA9IG9fbWF0Y2guc3RhcnQoMCkKICAgICAgICBpZiBxX21hdGNoOgogICAgICAgICAgICBrID0gcV9tYXRjaC5zdGFydCgwKQogICAgICAgIGlmIHFfbWF0Y2ggYW5kIChub3Qgb19tYXRjaCBvciBrIDwgaik6ICAgICAjIFF1b3RlUGF0dCBtYXRjaGVkCiAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyW2k6a10pCiAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyW2srMV0pCiAgICAgICAgICAgIGkgPSBrICsgMgogICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9jdGFsUGF0dCBtYXRjaGVkCiAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyW2k6al0pCiAgICAgICAgICAgIHJlcy5hcHBlbmQoY2hyKGludChzdHJbaisxOmorNF0sIDgpKSkKICAgICAgICAgICAgaSA9IGogKyA0CiAgICByZXR1cm4gX251bGxqb2luKHJlcykKCiMgVGhlIF9nZXRkYXRlKCkgcm91dGluZSBpcyB1c2VkIHRvIHNldCB0aGUgZXhwaXJhdGlvbiB0aW1lIGluIHRoZSBjb29raWUncyBIVFRQCiMgaGVhZGVyLiAgQnkgZGVmYXVsdCwgX2dldGRhdGUoKSByZXR1cm5zIHRoZSBjdXJyZW50IHRpbWUgaW4gdGhlIGFwcHJvcHJpYXRlCiMgImV4cGlyZXMiIGZvcm1hdCBmb3IgYSBTZXQtQ29va2llIGhlYWRlci4gIFRoZSBvbmUgb3B0aW9uYWwgYXJndW1lbnQgaXMgYW4KIyBvZmZzZXQgZnJvbSBub3csIGluIHNlY29uZHMuICBGb3IgZXhhbXBsZSwgYW4gb2Zmc2V0IG9mIC0zNjAwIG1lYW5zICJvbmUgaG91cgojIGFnbyIuICBUaGUgb2Zmc2V0IG1heSBiZSBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4KIwoKX3dlZWtkYXluYW1lID0gWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXQoKX21vbnRobmFtZSA9IFtOb25lLAogICAgICAgICAgICAgICdKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsCiAgICAgICAgICAgICAgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10KCmRlZiBfZ2V0ZGF0ZShmdXR1cmU9MCwgd2Vla2RheW5hbWU9X3dlZWtkYXluYW1lLCBtb250aG5hbWU9X21vbnRobmFtZSk6CiAgICBmcm9tIHRpbWUgaW1wb3J0IGdtdGltZSwgdGltZQogICAgbm93ID0gdGltZSgpCiAgICB5ZWFyLCBtb250aCwgZGF5LCBoaCwgbW0sIHNzLCB3ZCwgeSwgeiA9IGdtdGltZShub3cgKyBmdXR1cmUpCiAgICByZXR1cm4gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlIFwKICAgICAgICAgICAod2Vla2RheW5hbWVbd2RdLCBkYXksIG1vbnRobmFtZVttb250aF0sIHllYXIsIGhoLCBtbSwgc3MpCgoKY2xhc3MgTW9yc2VsKGRpY3QpOgogICAgIiIiQSBjbGFzcyB0byBob2xkIE9ORSAoa2V5LCB2YWx1ZSkgcGFpci4KCiAgICBJbiBhIGNvb2tpZSwgZWFjaCBzdWNoIHBhaXIgbWF5IGhhdmUgc2V2ZXJhbCBhdHRyaWJ1dGVzLCBzbyB0aGlzIGNsYXNzIGlzCiAgICB1c2VkIHRvIGtlZXAgdGhlIGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBrZXksdmFsdWUgcGFpci4KICAgIFRoaXMgY2xhc3MgYWxzbyBpbmNsdWRlcyBhIGNvZGVkX3ZhbHVlIGF0dHJpYnV0ZSwgd2hpY2ggaXMgdXNlZCB0byBob2xkCiAgICB0aGUgbmV0d29yayByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUuCiAgICAiIiIKICAgICMgUkZDIDIxMDkgbGlzdHMgdGhlc2UgYXR0cmlidXRlcyBhcyByZXNlcnZlZDoKICAgICMgICBwYXRoICAgICAgIGNvbW1lbnQgICAgICAgICBkb21haW4KICAgICMgICBtYXgtYWdlICAgIHNlY3VyZSAgICAgIHZlcnNpb24KICAgICMKICAgICMgRm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhlc2UgYXR0cmlidXRlcyBhcmUgYWxzbyByZXNlcnZlZDoKICAgICMgICBleHBpcmVzCiAgICAjCiAgICAjIFRoaXMgaXMgYW4gZXh0ZW5zaW9uIGZyb20gTWljcm9zb2Z0OgogICAgIyAgIGh0dHBvbmx5CiAgICAjCiAgICAjIFRoaXMgZGljdGlvbmFyeSBwcm92aWRlcyBhIG1hcHBpbmcgZnJvbSB0aGUgbG93ZXJjYXNlCiAgICAjIHZhcmlhbnQgb24gdGhlIGxlZnQgdG8gdGhlIGFwcHJvcHJpYXRlIHRyYWRpdGlvbmFsCiAgICAjIGZvcm1hdHRpbmcgb24gdGhlIHJpZ2h0LgogICAgX3Jlc2VydmVkID0gewogICAgICAgICJleHBpcmVzIiAgOiAiZXhwaXJlcyIsCiAgICAgICAgInBhdGgiICAgICA6ICJQYXRoIiwKICAgICAgICAiY29tbWVudCIgIDogIkNvbW1lbnQiLAogICAgICAgICJkb21haW4iICAgOiAiRG9tYWluIiwKICAgICAgICAibWF4LWFnZSIgIDogIk1heC1BZ2UiLAogICAgICAgICJzZWN1cmUiICAgOiAiU2VjdXJlIiwKICAgICAgICAiaHR0cG9ubHkiIDogIkh0dHBPbmx5IiwKICAgICAgICAidmVyc2lvbiIgIDogIlZlcnNpb24iLAogICAgICAgICJzYW1lc2l0ZSIgOiAiU2FtZVNpdGUiLAogICAgfQoKICAgIF9mbGFncyA9IHsnc2VjdXJlJywgJ2h0dHBvbmx5J30KCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIyBTZXQgZGVmYXVsdHMKICAgICAgICBzZWxmLl9rZXkgPSBzZWxmLl92YWx1ZSA9IHNlbGYuX2NvZGVkX3ZhbHVlID0gTm9uZQoKICAgICAgICAjIFNldCBkZWZhdWx0IGF0dHJpYnV0ZXMKICAgICAgICBmb3Iga2V5IGluIHNlbGYuX3Jlc2VydmVkOgogICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgIiIpCgogICAgQHByb3BlcnR5CiAgICBkZWYga2V5KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9rZXkKCiAgICBAcHJvcGVydHkKICAgIGRlZiB2YWx1ZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjb2RlZF92YWx1ZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY29kZWRfdmFsdWUKCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgSywgVik6CiAgICAgICAgSyA9IEsubG93ZXIoKQogICAgICAgIGlmIG5vdCBLIGluIHNlbGYuX3Jlc2VydmVkOgogICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSW52YWxpZCBhdHRyaWJ1dGUgJXIiICUgKEssKSkKICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIEssIFYpCgogICAgZGVmIHNldGRlZmF1bHQoc2VsZiwga2V5LCB2YWw9Tm9uZSk6CiAgICAgICAga2V5ID0ga2V5Lmxvd2VyKCkKICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYuX3Jlc2VydmVkOgogICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSW52YWxpZCBhdHRyaWJ1dGUgJXIiICUgKGtleSwpKQogICAgICAgIHJldHVybiBkaWN0LnNldGRlZmF1bHQoc2VsZiwga2V5LCB2YWwpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBtb3JzZWwpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vcnNlbCwgTW9yc2VsKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIChkaWN0Ll9fZXFfXyhzZWxmLCBtb3JzZWwpIGFuZAogICAgICAgICAgICAgICAgc2VsZi5fdmFsdWUgPT0gbW9yc2VsLl92YWx1ZSBhbmQKICAgICAgICAgICAgICAgIHNlbGYuX2tleSA9PSBtb3JzZWwuX2tleSBhbmQKICAgICAgICAgICAgICAgIHNlbGYuX2NvZGVkX3ZhbHVlID09IG1vcnNlbC5fY29kZWRfdmFsdWUpCgogICAgX19uZV9fID0gb2JqZWN0Ll9fbmVfXwoKICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgIG1vcnNlbCA9IE1vcnNlbCgpCiAgICAgICAgZGljdC51cGRhdGUobW9yc2VsLCBzZWxmKQogICAgICAgIG1vcnNlbC5fX2RpY3RfXy51cGRhdGUoc2VsZi5fX2RpY3RfXykKICAgICAgICByZXR1cm4gbW9yc2VsCgogICAgZGVmIHVwZGF0ZShzZWxmLCB2YWx1ZXMpOgogICAgICAgIGRhdGEgPSB7fQogICAgICAgIGZvciBrZXksIHZhbCBpbiBkaWN0KHZhbHVlcykuaXRlbXMoKToKICAgICAgICAgICAga2V5ID0ga2V5Lmxvd2VyKCkKICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLl9yZXNlcnZlZDoKICAgICAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCJJbnZhbGlkIGF0dHJpYnV0ZSAlciIgJSAoa2V5LCkpCiAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbAogICAgICAgIGRpY3QudXBkYXRlKHNlbGYsIGRhdGEpCgogICAgZGVmIGlzUmVzZXJ2ZWRLZXkoc2VsZiwgSyk6CiAgICAgICAgcmV0dXJuIEsubG93ZXIoKSBpbiBzZWxmLl9yZXNlcnZlZAoKICAgIGRlZiBzZXQoc2VsZiwga2V5LCB2YWwsIGNvZGVkX3ZhbCk6CiAgICAgICAgaWYga2V5Lmxvd2VyKCkgaW4gc2VsZi5fcmVzZXJ2ZWQ6CiAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCdBdHRlbXB0IHRvIHNldCBhIHJlc2VydmVkIGtleSAlcicgJSAoa2V5LCkpCiAgICAgICAgaWYgbm90IF9pc19sZWdhbF9rZXkoa2V5KToKICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoJ0lsbGVnYWwga2V5ICVyJyAlIChrZXksKSkKCiAgICAgICAgIyBJdCdzIGEgZ29vZCBrZXksIHNvIHNhdmUgaXQuCiAgICAgICAgc2VsZi5fa2V5ID0ga2V5CiAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWwKICAgICAgICBzZWxmLl9jb2RlZF92YWx1ZSA9IGNvZGVkX3ZhbAoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgJ2tleSc6IHNlbGYuX2tleSwKICAgICAgICAgICAgJ3ZhbHVlJzogc2VsZi5fdmFsdWUsCiAgICAgICAgICAgICdjb2RlZF92YWx1ZSc6IHNlbGYuX2NvZGVkX3ZhbHVlLAogICAgICAgIH0KCiAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICBzZWxmLl9rZXkgPSBzdGF0ZVsna2V5J10KICAgICAgICBzZWxmLl92YWx1ZSA9IHN0YXRlWyd2YWx1ZSddCiAgICAgICAgc2VsZi5fY29kZWRfdmFsdWUgPSBzdGF0ZVsnY29kZWRfdmFsdWUnXQoKICAgIGRlZiBvdXRwdXQoc2VsZiwgYXR0cnM9Tm9uZSwgaGVhZGVyPSJTZXQtQ29va2llOiIpOgogICAgICAgIHJldHVybiAiJXMgJXMiICUgKGhlYWRlciwgc2VsZi5PdXRwdXRTdHJpbmcoYXR0cnMpKQoKICAgIF9fc3RyX18gPSBvdXRwdXQKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICc8JXM6ICVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuT3V0cHV0U3RyaW5nKCkpCgogICAgZGVmIGpzX291dHB1dChzZWxmLCBhdHRycz1Ob25lKToKICAgICAgICAjIFByaW50IGphdmFzY3JpcHQKICAgICAgICByZXR1cm4gIiIiCiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIDwhLS0gYmVnaW4gaGlkaW5nCiAgICAgICAgZG9jdW1lbnQuY29va2llID0gXCIlc1wiOwogICAgICAgIC8vIGVuZCBoaWRpbmcgLS0+CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgIiIiICUgKHNlbGYuT3V0cHV0U3RyaW5nKGF0dHJzKS5yZXBsYWNlKCciJywgcidcIicpKQoKICAgIGRlZiBPdXRwdXRTdHJpbmcoc2VsZiwgYXR0cnM9Tm9uZSk6CiAgICAgICAgIyBCdWlsZCB1cCBvdXIgcmVzdWx0CiAgICAgICAgIwogICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgYXBwZW5kID0gcmVzdWx0LmFwcGVuZAoKICAgICAgICAjIEZpcnN0LCB0aGUga2V5PXZhbHVlIHBhaXIKICAgICAgICBhcHBlbmQoIiVzPSVzIiAlIChzZWxmLmtleSwgc2VsZi5jb2RlZF92YWx1ZSkpCgogICAgICAgICMgTm93IGFkZCBhbnkgZGVmaW5lZCBhdHRyaWJ1dGVzCiAgICAgICAgaWYgYXR0cnMgaXMgTm9uZToKICAgICAgICAgICAgYXR0cnMgPSBzZWxmLl9yZXNlcnZlZAogICAgICAgIGl0ZW1zID0gc29ydGVkKHNlbGYuaXRlbXMoKSkKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKICAgICAgICAgICAgaWYgdmFsdWUgPT0gIiI6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBrZXkgbm90IGluIGF0dHJzOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgaWYga2V5ID09ICJleHBpcmVzIiBhbmQgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKICAgICAgICAgICAgICAgIGFwcGVuZCgiJXM9JXMiICUgKHNlbGYuX3Jlc2VydmVkW2tleV0sIF9nZXRkYXRlKHZhbHVlKSkpCiAgICAgICAgICAgIGVsaWYga2V5ID09ICJtYXgtYWdlIiBhbmQgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKICAgICAgICAgICAgICAgIGFwcGVuZCgiJXM9JWQiICUgKHNlbGYuX3Jlc2VydmVkW2tleV0sIHZhbHVlKSkKICAgICAgICAgICAgZWxpZiBrZXkgPT0gImNvbW1lbnQiIGFuZCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICAgICAgYXBwZW5kKCIlcz0lcyIgJSAoc2VsZi5fcmVzZXJ2ZWRba2V5XSwgX3F1b3RlKHZhbHVlKSkpCiAgICAgICAgICAgIGVsaWYga2V5IGluIHNlbGYuX2ZsYWdzOgogICAgICAgICAgICAgICAgaWYgdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHN0cihzZWxmLl9yZXNlcnZlZFtrZXldKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGFwcGVuZCgiJXM9JXMiICUgKHNlbGYuX3Jlc2VydmVkW2tleV0sIHZhbHVlKSkKCiAgICAgICAgIyBSZXR1cm4gdGhlIHJlc3VsdAogICAgICAgIHJldHVybiBfc2VtaXNwYWNlam9pbihyZXN1bHQpCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZCh0eXBlcy5HZW5lcmljQWxpYXMpCgoKIwojIFBhdHRlcm4gZm9yIGZpbmRpbmcgY29va2llCiMKIyBUaGlzIHVzZWQgdG8gYmUgc3RyaWN0IHBhcnNpbmcgYmFzZWQgb24gdGhlIFJGQzIxMDkgYW5kIFJGQzIwNjgKIyBzcGVjaWZpY2F0aW9ucy4gIEkgaGF2ZSBzaW5jZSBkaXNjb3ZlcmVkIHRoYXQgTVNJRSAzLjB4IGRvZXNuJ3QKIyBmb2xsb3cgdGhlIGNoYXJhY3RlciBydWxlcyBvdXRsaW5lZCBpbiB0aG9zZSBzcGVjcy4gIEFzIGEKIyByZXN1bHQsIHRoZSBwYXJzaW5nIHJ1bGVzIGhlcmUgYXJlIGxlc3Mgc3RyaWN0LgojCgpfTGVnYWxLZXlDaGFycyAgPSByIlx3XGQhIyUmJ35fYD48QCw6L1wkXCpcK1wtXC5cXlx8XClcKFw/XH1ce1w9IgpfTGVnYWxWYWx1ZUNoYXJzID0gX0xlZ2FsS2V5Q2hhcnMgKyByJ1xbXF0nCl9Db29raWVQYXR0ZXJuID0gcmUuY29tcGlsZShyIiIiCiAgICBccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbCB3aGl0ZXNwYWNlIGF0IHN0YXJ0IG9mIGNvb2tpZQogICAgKD9QPGtleT4gICAgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgZ3JvdXAgJ2tleScKICAgIFsiIiIgKyBfTGVnYWxLZXlDaGFycyArIHIiIiJdKz8gICAjIEFueSB3b3JkIG9mIGF0IGxlYXN0IG9uZSBsZXR0ZXIKICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEVuZCBvZiBncm91cCAna2V5JwogICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwgZ3JvdXA6IHRoZXJlIG1heSBub3QgYmUgYSB2YWx1ZS4KICAgIFxzKj1ccyogICAgICAgICAgICAgICAgICAgICAgICAgICMgRXF1YWwgU2lnbgogICAgKD9QPHZhbD4gICAgICAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBvZiBncm91cCAndmFsJwogICAgIig/OlteXFwiXXxcXC4pKiIgICAgICAgICAgICAgICAgICAjIEFueSBkb3VibGVxdW90ZWQgc3RyaW5nCiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IKICAgIFx3ezN9LFxzW1x3XGRccy1dezksMTF9XHNbXGQ6XXs4fVxzR01UICAjIFNwZWNpYWwgY2FzZSBmb3IgImV4cGlyZXMiIGF0dHIKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcgogICAgWyIiIiArIF9MZWdhbFZhbHVlQ2hhcnMgKyByIiIiXSogICAgICAjIEFueSB3b3JkIG9yIGVtcHR5IHN0cmluZwogICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2YgZ3JvdXAgJ3ZhbCcKICAgICk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEVuZCBvZiBvcHRpb25hbCB2YWx1ZSBncm91cAogICAgXHMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQW55IG51bWJlciBvZiBzcGFjZXMuCiAgICAoXHMrfDt8JCkgICAgICAgICAgICAgICAgICAgICAgIyBFbmRpbmcgZWl0aGVyIGF0IHNwYWNlLCBzZW1pY29sb24sIG9yIEVPUy4KICAgICIiIiwgcmUuQVNDSUkgfCByZS5WRVJCT1NFKSAgICAjIHJlLkFTQ0lJIG1heSBiZSByZW1vdmVkIGlmIHNhZmUuCgoKIyBBdCBsb25nIGxhc3QsIGhlcmUgaXMgdGhlIGNvb2tpZSBjbGFzcy4gIFVzaW5nIHRoaXMgY2xhc3MgaXMgYWxtb3N0IGp1c3QgbGlrZQojIHVzaW5nIGEgZGljdGlvbmFyeS4gIFNlZSB0aGlzIG1vZHVsZSdzIGRvY3N0cmluZyBmb3IgZXhhbXBsZSB1c2FnZS4KIwpjbGFzcyBCYXNlQ29va2llKGRpY3QpOgogICAgIiIiQSBjb250YWluZXIgY2xhc3MgZm9yIGEgc2V0IG9mIE1vcnNlbHMuIiIiCgogICAgZGVmIHZhbHVlX2RlY29kZShzZWxmLCB2YWwpOgogICAgICAgICIiInJlYWxfdmFsdWUsIGNvZGVkX3ZhbHVlID0gdmFsdWVfZGVjb2RlKFNUUklORykKICAgICAgICBDYWxsZWQgcHJpb3IgdG8gc2V0dGluZyBhIGNvb2tpZSdzIHZhbHVlIGZyb20gdGhlIG5ldHdvcmsKICAgICAgICByZXByZXNlbnRhdGlvbi4gIFRoZSBWQUxVRSBpcyB0aGUgdmFsdWUgcmVhZCBmcm9tIEhUVFAKICAgICAgICBoZWFkZXIuCiAgICAgICAgT3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBtb2RpZnkgdGhlIGJlaGF2aW9yIG9mIGNvb2tpZXMuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHZhbCwgdmFsCgogICAgZGVmIHZhbHVlX2VuY29kZShzZWxmLCB2YWwpOgogICAgICAgICIiInJlYWxfdmFsdWUsIGNvZGVkX3ZhbHVlID0gdmFsdWVfZW5jb2RlKFZBTFVFKQogICAgICAgIENhbGxlZCBwcmlvciB0byBzZXR0aW5nIGEgY29va2llJ3MgdmFsdWUgZnJvbSB0aGUgZGljdGlvbmFyeQogICAgICAgIHJlcHJlc2VudGF0aW9uLiAgVGhlIFZBTFVFIGlzIHRoZSB2YWx1ZSBiZWluZyBhc3NpZ25lZC4KICAgICAgICBPdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgYmVoYXZpb3Igb2YgY29va2llcy4KICAgICAgICAiIiIKICAgICAgICBzdHJ2YWwgPSBzdHIodmFsKQogICAgICAgIHJldHVybiBzdHJ2YWwsIHN0cnZhbAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbnB1dD1Ob25lKToKICAgICAgICBpZiBpbnB1dDoKICAgICAgICAgICAgc2VsZi5sb2FkKGlucHV0KQoKICAgIGRlZiBfX3NldChzZWxmLCBrZXksIHJlYWxfdmFsdWUsIGNvZGVkX3ZhbHVlKToKICAgICAgICAiIiJQcml2YXRlIG1ldGhvZCBmb3Igc2V0dGluZyBhIGNvb2tpZSdzIHZhbHVlIiIiCiAgICAgICAgTSA9IHNlbGYuZ2V0KGtleSwgTW9yc2VsKCkpCiAgICAgICAgTS5zZXQoa2V5LCByZWFsX3ZhbHVlLCBjb2RlZF92YWx1ZSkKICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgTSkKCiAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIiIiRGljdGlvbmFyeSBzdHlsZSBhc3NpZ25tZW50LiIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIE1vcnNlbCk6CiAgICAgICAgICAgICMgYWxsb3cgYXNzaWdubWVudCBvZiBjb25zdHJ1Y3RlZCBNb3JzZWxzIChlLmcuIGZvciBwaWNrbGluZykKICAgICAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJ2YWwsIGN2YWwgPSBzZWxmLnZhbHVlX2VuY29kZSh2YWx1ZSkKICAgICAgICAgICAgc2VsZi5fX3NldChrZXksIHJ2YWwsIGN2YWwpCgogICAgZGVmIG91dHB1dChzZWxmLCBhdHRycz1Ob25lLCBoZWFkZXI9IlNldC1Db29raWU6Iiwgc2VwPSJcMDE1XDAxMiIpOgogICAgICAgICIiIlJldHVybiBhIHN0cmluZyBzdWl0YWJsZSBmb3IgSFRUUC4iIiIKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIGl0ZW1zID0gc29ydGVkKHNlbGYuaXRlbXMoKSkKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZS5vdXRwdXQoYXR0cnMsIGhlYWRlcikpCiAgICAgICAgcmV0dXJuIHNlcC5qb2luKHJlc3VsdCkKCiAgICBfX3N0cl9fID0gb3V0cHV0CgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGwgPSBbXQogICAgICAgIGl0ZW1zID0gc29ydGVkKHNlbGYuaXRlbXMoKSkKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKICAgICAgICAgICAgbC5hcHBlbmQoJyVzPSVzJyAlIChrZXksIHJlcHIodmFsdWUudmFsdWUpKSkKICAgICAgICByZXR1cm4gJzwlczogJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgX3NwYWNlam9pbihsKSkKCiAgICBkZWYganNfb3V0cHV0KHNlbGYsIGF0dHJzPU5vbmUpOgogICAgICAgICIiIlJldHVybiBhIHN0cmluZyBzdWl0YWJsZSBmb3IgSmF2YVNjcmlwdC4iIiIKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgIGl0ZW1zID0gc29ydGVkKHNlbGYuaXRlbXMoKSkKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZS5qc19vdXRwdXQoYXR0cnMpKQogICAgICAgIHJldHVybiBfbnVsbGpvaW4ocmVzdWx0KQoKICAgIGRlZiBsb2FkKHNlbGYsIHJhd2RhdGEpOgogICAgICAgICIiIkxvYWQgY29va2llcyBmcm9tIGEgc3RyaW5nIChwcmVzdW1hYmx5IEhUVFBfQ09PS0lFKSBvcgogICAgICAgIGZyb20gYSBkaWN0aW9uYXJ5LiAgTG9hZGluZyBjb29raWVzIGZyb20gYSBkaWN0aW9uYXJ5ICdkJwogICAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZzoKICAgICAgICAgICAgbWFwKENvb2tpZS5fX3NldGl0ZW1fXywgZC5rZXlzKCksIGQudmFsdWVzKCkpCiAgICAgICAgIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShyYXdkYXRhLCBzdHIpOgogICAgICAgICAgICBzZWxmLl9fcGFyc2Vfc3RyaW5nKHJhd2RhdGEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBzZWxmLnVwZGF0ZSgpIHdvdWxkbid0IGNhbGwgb3VyIGN1c3RvbSBfX3NldGl0ZW1fXwogICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiByYXdkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBzZWxmW2tleV0gPSB2YWx1ZQogICAgICAgIHJldHVybgoKICAgIGRlZiBfX3BhcnNlX3N0cmluZyhzZWxmLCBzdHIsIHBhdHQ9X0Nvb2tpZVBhdHRlcm4pOgogICAgICAgIGkgPSAwICAgICAgICAgICAgICAgICAjIE91ciBzdGFydGluZyBwb2ludAogICAgICAgIG4gPSBsZW4oc3RyKSAgICAgICAgICAjIExlbmd0aCBvZiBzdHJpbmcKICAgICAgICBwYXJzZWRfaXRlbXMgPSBbXSAgICAgIyBQYXJzZWQgKHR5cGUsIGtleSwgdmFsdWUpIHRyaXBsZXMKICAgICAgICBtb3JzZWxfc2VlbiA9IEZhbHNlICAgIyBBIGtleT12YWx1ZSBwYWlyIHdhcyBwcmV2aW91c2x5IGVuY291bnRlcmVkCgogICAgICAgIFRZUEVfQVRUUklCVVRFID0gMQogICAgICAgIFRZUEVfS0VZVkFMVUUgPSAyCgogICAgICAgICMgV2UgZmlyc3QgcGFyc2UgdGhlIHdob2xlIGNvb2tpZSBzdHJpbmcgYW5kIHJlamVjdCBpdCBpZiBpdCdzCiAgICAgICAgIyBzeW50YWN0aWNhbGx5IGludmFsaWQgKHRoaXMgaGVscHMgYXZvaWQgc29tZSBjbGFzc2VzIG9mIGluamVjdGlvbgogICAgICAgICMgYXR0YWNrcykuCiAgICAgICAgd2hpbGUgMCA8PSBpIDwgbjoKICAgICAgICAgICAgIyBTdGFydCBsb29raW5nIGZvciBhIGNvb2tpZQogICAgICAgICAgICBtYXRjaCA9IHBhdHQubWF0Y2goc3RyLCBpKQogICAgICAgICAgICBpZiBub3QgbWF0Y2g6CiAgICAgICAgICAgICAgICAjIE5vIG1vcmUgY29va2llcwogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGtleSwgdmFsdWUgPSBtYXRjaC5ncm91cCgia2V5IiksIG1hdGNoLmdyb3VwKCJ2YWwiKQogICAgICAgICAgICBpID0gbWF0Y2guZW5kKDApCgogICAgICAgICAgICBpZiBrZXlbMF0gPT0gIiQiOgogICAgICAgICAgICAgICAgaWYgbm90IG1vcnNlbF9zZWVuOgogICAgICAgICAgICAgICAgICAgICMgV2UgaWdub3JlIGF0dHJpYnV0ZXMgd2hpY2ggcGVydGFpbiB0byB0aGUgY29va2llCiAgICAgICAgICAgICAgICAgICAgIyBtZWNoYW5pc20gYXMgYSB3aG9sZSwgc3VjaCBhcyAiJFZlcnNpb24iLgogICAgICAgICAgICAgICAgICAgICMgU2VlIFJGQyAyOTY1LiAoRG9lcyBhbnlvbmUgY2FyZT8pCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIHBhcnNlZF9pdGVtcy5hcHBlbmQoKFRZUEVfQVRUUklCVVRFLCBrZXlbMTpdLCB2YWx1ZSkpCiAgICAgICAgICAgIGVsaWYga2V5Lmxvd2VyKCkgaW4gTW9yc2VsLl9yZXNlcnZlZDoKICAgICAgICAgICAgICAgIGlmIG5vdCBtb3JzZWxfc2VlbjoKICAgICAgICAgICAgICAgICAgICAjIEludmFsaWQgY29va2llIHN0cmluZwogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBpZiBrZXkubG93ZXIoKSBpbiBNb3JzZWwuX2ZsYWdzOgogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfaXRlbXMuYXBwZW5kKChUWVBFX0FUVFJJQlVURSwga2V5LCBUcnVlKSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAjIEludmFsaWQgY29va2llIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcGFyc2VkX2l0ZW1zLmFwcGVuZCgoVFlQRV9BVFRSSUJVVEUsIGtleSwgX3VucXVvdGUodmFsdWUpKSkKICAgICAgICAgICAgZWxpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHBhcnNlZF9pdGVtcy5hcHBlbmQoKFRZUEVfS0VZVkFMVUUsIGtleSwgc2VsZi52YWx1ZV9kZWNvZGUodmFsdWUpKSkKICAgICAgICAgICAgICAgIG1vcnNlbF9zZWVuID0gVHJ1ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBJbnZhbGlkIGNvb2tpZSBzdHJpbmcKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIFRoZSBjb29raWUgc3RyaW5nIGlzIHZhbGlkLCBhcHBseSBpdC4KICAgICAgICBNID0gTm9uZSAgICAgICAgICMgY3VycmVudCBtb3JzZWwKICAgICAgICBmb3IgdHAsIGtleSwgdmFsdWUgaW4gcGFyc2VkX2l0ZW1zOgogICAgICAgICAgICBpZiB0cCA9PSBUWVBFX0FUVFJJQlVURToKICAgICAgICAgICAgICAgIGFzc2VydCBNIGlzIG5vdCBOb25lCiAgICAgICAgICAgICAgICBNW2tleV0gPSB2YWx1ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXNzZXJ0IHRwID09IFRZUEVfS0VZVkFMVUUKICAgICAgICAgICAgICAgIHJ2YWwsIGN2YWwgPSB2YWx1ZQogICAgICAgICAgICAgICAgc2VsZi5fX3NldChrZXksIHJ2YWwsIGN2YWwpCiAgICAgICAgICAgICAgICBNID0gc2VsZltrZXldCgoKY2xhc3MgU2ltcGxlQ29va2llKEJhc2VDb29raWUpOgogICAgIiIiCiAgICBTaW1wbGVDb29raWUgc3VwcG9ydHMgc3RyaW5ncyBhcyBjb29raWUgdmFsdWVzLiAgV2hlbiBzZXR0aW5nCiAgICB0aGUgdmFsdWUgdXNpbmcgdGhlIGRpY3Rpb25hcnkgYXNzaWdubWVudCBub3RhdGlvbiwgU2ltcGxlQ29va2llCiAgICBjYWxscyB0aGUgYnVpbHRpbiBzdHIoKSB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byBhIHN0cmluZy4gIFZhbHVlcwogICAgcmVjZWl2ZWQgZnJvbSBIVFRQIGFyZSBrZXB0IGFzIHN0cmluZ3MuCiAgICAiIiIKICAgIGRlZiB2YWx1ZV9kZWNvZGUoc2VsZiwgdmFsKToKICAgICAgICByZXR1cm4gX3VucXVvdGUodmFsKSwgdmFsCgogICAgZGVmIHZhbHVlX2VuY29kZShzZWxmLCB2YWwpOgogICAgICAgIHN0cnZhbCA9IHN0cih2YWwpCiAgICAgICAgcmV0dXJuIHN0cnZhbCwgX3F1b3RlKHN0cnZhbCkKUEsDBBQAAAAAAAMgo1bm/Hf0MbwAADG8AAAOAAAAaHR0cC9zZXJ2ZXIucHkiIiJIVFRQIHNlcnZlciBjbGFzc2VzLgoKTm90ZTogQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciBkb2Vzbid0IGltcGxlbWVudCBhbnkgSFRUUCByZXF1ZXN0OyBzZWUKU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyIGZvciBzaW1wbGUgaW1wbGVtZW50YXRpb25zIG9mIEdFVCwgSEVBRCBhbmQgUE9TVCwKYW5kIENHSUhUVFBSZXF1ZXN0SGFuZGxlciBmb3IgQ0dJIHNjcmlwdHMuCgpJdCBkb2VzLCBob3dldmVyLCBvcHRpb25hbGx5IGltcGxlbWVudCBIVFRQLzEuMSBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zLAphcyBvZiB2ZXJzaW9uIDAuMy4KCk5vdGVzIG9uIENHSUhUVFBSZXF1ZXN0SGFuZGxlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgY2xhc3MgaW1wbGVtZW50cyBHRVQgYW5kIFBPU1QgcmVxdWVzdHMgdG8gY2dpLWJpbiBzY3JpcHRzLgoKSWYgdGhlIG9zLmZvcmsoKSBmdW5jdGlvbiBpcyBub3QgcHJlc2VudCAoZS5nLiBvbiBXaW5kb3dzKSwKc3VicHJvY2Vzcy5Qb3BlbigpIGlzIHVzZWQgYXMgYSBmYWxsYmFjaywgd2l0aCBzbGlnaHRseSBhbHRlcmVkIHNlbWFudGljcy4KCkluIGFsbCBjYXNlcywgdGhlIGltcGxlbWVudGF0aW9uIGlzIGludGVudGlvbmFsbHkgbmFpdmUgLS0gYWxsCnJlcXVlc3RzIGFyZSBleGVjdXRlZCBzeW5jaHJvbm91c2x5LgoKU0VDVVJJVFkgV0FSTklORzogRE9OJ1QgVVNFIFRISVMgQ09ERSBVTkxFU1MgWU9VIEFSRSBJTlNJREUgQSBGSVJFV0FMTAotLSBpdCBtYXkgZXhlY3V0ZSBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgb3IgZXh0ZXJuYWwgcHJvZ3JhbXMuCgpOb3RlIHRoYXQgc3RhdHVzIGNvZGUgMjAwIGlzIHNlbnQgcHJpb3IgdG8gZXhlY3V0aW9uIG9mIGEgQ0dJIHNjcmlwdCwgc28Kc2NyaXB0cyBjYW5ub3Qgc2VuZCBvdGhlciBzdGF0dXMgY29kZXMgc3VjaCBhcyAzMDIgKHJlZGlyZWN0KS4KClhYWCBUbyBkbzoKCi0gbG9nIHJlcXVlc3RzIGV2ZW4gbGF0ZXIgKHRvIGNhcHR1cmUgYnl0ZSBjb3VudCkKLSBsb2cgdXNlci1hZ2VudCBoZWFkZXIgYW5kIG90aGVyIGludGVyZXN0aW5nIGdvb2RpZXMKLSBzZW5kIGVycm9yIGxvZyB0byBzZXBhcmF0ZSBmaWxlCiIiIgoKCiMgU2VlIGFsc286CiMKIyBIVFRQIFdvcmtpbmcgR3JvdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVC4gQmVybmVycy1MZWUKIyBJTlRFUk5FVC1EUkFGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUi4gVC4gRmllbGRpbmcKIyA8ZHJhZnQtaWV0Zi1odHRwLXYxMC1zcGVjLTAwLnR4dD4gICAgICAgICAgICAgICAgICAgICBILiBGcnlzdHlrIE5pZWxzZW4KIyBFeHBpcmVzIFNlcHRlbWJlciA4LCAxOTk1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmNoIDgsIDE5OTUKIwojIFVSTDogaHR0cDovL3d3dy5pY3MudWNpLmVkdS9wdWIvaWV0Zi9odHRwL2RyYWZ0LWlldGYtaHR0cC12MTAtc3BlYy0wMC50eHQKIwojIGFuZAojCiMgTmV0d29yayBXb3JraW5nIEdyb3VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSLiBGaWVsZGluZwojIFJlcXVlc3QgZm9yIENvbW1lbnRzOiAyNjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXQgYWwKIyBPYnNvbGV0ZXM6IDIwNjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVuZSAxOTk5CiMgQ2F0ZWdvcnk6IFN0YW5kYXJkcyBUcmFjawojCiMgVVJMOiBodHRwOi8vd3d3LmZhcXMub3JnL3JmY3MvcmZjMjYxNi5odG1sCgojIExvZyBmaWxlcwojIC0tLS0tLS0tLQojCiMgSGVyZSdzIGEgcXVvdGUgZnJvbSB0aGUgTkNTQSBodHRwZCBkb2NzIGFib3V0IGxvZyBmaWxlIGZvcm1hdC4KIwojIHwgVGhlIGxvZ2ZpbGUgZm9ybWF0IGlzIGFzIGZvbGxvd3MuIEVhY2ggbGluZSBjb25zaXN0cyBvZjoKIyB8CiMgfCBob3N0IHJmYzkzMSBhdXRodXNlciBbREQvTW9uL1lZWVk6aGg6bW06c3NdICJyZXF1ZXN0IiBkZGQgYmJiYgojIHwKIyB8ICAgICAgICBob3N0OiBFaXRoZXIgdGhlIEROUyBuYW1lIG9yIHRoZSBJUCBudW1iZXIgb2YgdGhlIHJlbW90ZSBjbGllbnQKIyB8ICAgICAgICByZmM5MzE6IEFueSBpbmZvcm1hdGlvbiByZXR1cm5lZCBieSBpZGVudGQgZm9yIHRoaXMgcGVyc29uLAojIHwgICAgICAgICAgICAgICAgLSBvdGhlcndpc2UuCiMgfCAgICAgICAgYXV0aHVzZXI6IElmIHVzZXIgc2VudCBhIHVzZXJpZCBmb3IgYXV0aGVudGljYXRpb24sIHRoZSB1c2VyIG5hbWUsCiMgfCAgICAgICAgICAgICAgICAgIC0gb3RoZXJ3aXNlLgojIHwgICAgICAgIEREOiBEYXkKIyB8ICAgICAgICBNb246IE1vbnRoIChjYWxlbmRhciBuYW1lKQojIHwgICAgICAgIFlZWVk6IFllYXIKIyB8ICAgICAgICBoaDogaG91ciAoMjQtaG91ciBmb3JtYXQsIHRoZSBtYWNoaW5lJ3MgdGltZXpvbmUpCiMgfCAgICAgICAgbW06IG1pbnV0ZXMKIyB8ICAgICAgICBzczogc2Vjb25kcwojIHwgICAgICAgIHJlcXVlc3Q6IFRoZSBmaXJzdCBsaW5lIG9mIHRoZSBIVFRQIHJlcXVlc3QgYXMgc2VudCBieSB0aGUgY2xpZW50LgojIHwgICAgICAgIGRkZDogdGhlIHN0YXR1cyBjb2RlIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIsIC0gaWYgbm90IGF2YWlsYWJsZS4KIyB8ICAgICAgICBiYmJiOiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHNlbnQsCiMgfCAgICAgICAgICAgICAgKm5vdCBpbmNsdWRpbmcgdGhlIEhUVFAvMS4wIGhlYWRlciosIC0gaWYgbm90IGF2YWlsYWJsZQojIHwKIyB8IFlvdSBjYW4gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGFjY2Vzc2VkIHRocm91Z2ggcmVxdWVzdC4KIwojIChBY3R1YWxseSwgdGhlIGxhdHRlciBpcyBvbmx5IHRydWUgaWYgeW91IGtub3cgdGhlIHNlcnZlciBjb25maWd1cmF0aW9uCiMgYXQgdGhlIHRpbWUgdGhlIHJlcXVlc3Qgd2FzIG1hZGUhKQoKX192ZXJzaW9uX18gPSAiMC42IgoKX19hbGxfXyA9IFsKICAgICJIVFRQU2VydmVyIiwgIlRocmVhZGluZ0hUVFBTZXJ2ZXIiLCAiQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciIsCiAgICAiU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyIiwgIkNHSUhUVFBSZXF1ZXN0SGFuZGxlciIsCl0KCmltcG9ydCBjb3B5CmltcG9ydCBkYXRldGltZQppbXBvcnQgZW1haWwudXRpbHMKaW1wb3J0IGh0bWwKaW1wb3J0IGh0dHAuY2xpZW50CmltcG9ydCBpbwppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCBtaW1ldHlwZXMKaW1wb3J0IG9zCmltcG9ydCBwb3NpeHBhdGgKaW1wb3J0IHNlbGVjdAppbXBvcnQgc2h1dGlsCmltcG9ydCBzb2NrZXQgIyBGb3IgZ2V0aG9zdGJ5YWRkcigpCmltcG9ydCBzb2NrZXRzZXJ2ZXIKaW1wb3J0IHN5cwppbXBvcnQgdGltZQppbXBvcnQgdXJsbGliLnBhcnNlCgpmcm9tIGh0dHAgaW1wb3J0IEhUVFBTdGF0dXMKCgojIERlZmF1bHQgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZQpERUZBVUxUX0VSUk9SX01FU1NBR0UgPSAiIiJcCjwhRE9DVFlQRSBIVE1MPgo8aHRtbCBsYW5nPSJlbiI+CiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPHRpdGxlPkVycm9yIHJlc3BvbnNlPC90aXRsZT4KICAgIDwvaGVhZD4KICAgIDxib2R5PgogICAgICAgIDxoMT5FcnJvciByZXNwb25zZTwvaDE+CiAgICAgICAgPHA+RXJyb3IgY29kZTogJShjb2RlKWQ8L3A+CiAgICAgICAgPHA+TWVzc2FnZTogJShtZXNzYWdlKXMuPC9wPgogICAgICAgIDxwPkVycm9yIGNvZGUgZXhwbGFuYXRpb246ICUoY29kZSlzIC0gJShleHBsYWluKXMuPC9wPgogICAgPC9ib2R5Pgo8L2h0bWw+CiIiIgoKREVGQVVMVF9FUlJPUl9DT05URU5UX1RZUEUgPSAidGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiCgpjbGFzcyBIVFRQU2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIpOgoKICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSAxICAgICMgU2VlbXMgdG8gbWFrZSBzZW5zZSBpbiB0ZXN0aW5nIGVudmlyb25tZW50CgogICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgogICAgICAgICIiIk92ZXJyaWRlIHNlcnZlcl9iaW5kIHRvIHN0b3JlIHRoZSBzZXJ2ZXIgbmFtZS4iIiIKICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9iaW5kKHNlbGYpCiAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbOjJdCiAgICAgICAgc2VsZi5zZXJ2ZXJfbmFtZSA9IHNvY2tldC5nZXRmcWRuKGhvc3QpCiAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHBvcnQKCgpjbGFzcyBUaHJlYWRpbmdIVFRQU2VydmVyKHNvY2tldHNlcnZlci5UaHJlYWRpbmdNaXhJbiwgSFRUUFNlcnZlcik6CiAgICBkYWVtb25fdGhyZWFkcyA9IFRydWUKCgpjbGFzcyBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CgogICAgIiIiSFRUUCByZXF1ZXN0IGhhbmRsZXIgYmFzZSBjbGFzcy4KCiAgICBUaGUgZm9sbG93aW5nIGV4cGxhbmF0aW9uIG9mIEhUVFAgc2VydmVzIHRvIGd1aWRlIHlvdSB0aHJvdWdoIHRoZQogICAgY29kZSBhcyB3ZWxsIGFzIHRvIGV4cG9zZSBhbnkgbWlzdW5kZXJzdGFuZGluZ3MgSSBtYXkgaGF2ZSBhYm91dAogICAgSFRUUCAoc28geW91IGRvbid0IG5lZWQgdG8gcmVhZCB0aGUgY29kZSB0byBmaWd1cmUgb3V0IEknbSB3cm9uZwogICAgOi0pLgoKICAgIEhUVFAgKEh5cGVyVGV4dCBUcmFuc2ZlciBQcm90b2NvbCkgaXMgYW4gZXh0ZW5zaWJsZSBwcm90b2NvbCBvbgogICAgdG9wIG9mIGEgcmVsaWFibGUgc3RyZWFtIHRyYW5zcG9ydCAoZS5nLiBUQ1AvSVApLiAgVGhlIHByb3RvY29sCiAgICByZWNvZ25pemVzIHRocmVlIHBhcnRzIHRvIGEgcmVxdWVzdDoKCiAgICAxLiBPbmUgbGluZSBpZGVudGlmeWluZyB0aGUgcmVxdWVzdCB0eXBlIGFuZCBwYXRoCiAgICAyLiBBbiBvcHRpb25hbCBzZXQgb2YgUkZDLTgyMi1zdHlsZSBoZWFkZXJzCiAgICAzLiBBbiBvcHRpb25hbCBkYXRhIHBhcnQKCiAgICBUaGUgaGVhZGVycyBhbmQgZGF0YSBhcmUgc2VwYXJhdGVkIGJ5IGEgYmxhbmsgbGluZS4KCiAgICBUaGUgZmlyc3QgbGluZSBvZiB0aGUgcmVxdWVzdCBoYXMgdGhlIGZvcm0KCiAgICA8Y29tbWFuZD4gPHBhdGg+IDx2ZXJzaW9uPgoKICAgIHdoZXJlIDxjb21tYW5kPiBpcyBhIChjYXNlLXNlbnNpdGl2ZSkga2V5d29yZCBzdWNoIGFzIEdFVCBvciBQT1NULAogICAgPHBhdGg+IGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgcGF0aCBpbmZvcm1hdGlvbiBmb3IgdGhlIHJlcXVlc3QsCiAgICBhbmQgPHZlcnNpb24+IHNob3VsZCBiZSB0aGUgc3RyaW5nICJIVFRQLzEuMCIgb3IgIkhUVFAvMS4xIi4KICAgIDxwYXRoPiBpcyBlbmNvZGVkIHVzaW5nIHRoZSBVUkwgZW5jb2Rpbmcgc2NoZW1lICh1c2luZyAleHggdG8gc2lnbmlmeQogICAgdGhlIEFTQ0lJIGNoYXJhY3RlciB3aXRoIGhleCBjb2RlIHh4KS4KCiAgICBUaGUgc3BlY2lmaWNhdGlvbiBzcGVjaWZpZXMgdGhhdCBsaW5lcyBhcmUgc2VwYXJhdGVkIGJ5IENSTEYgYnV0CiAgICBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSB3aWRlc3QgcmFuZ2Ugb2YgY2xpZW50cyByZWNvbW1lbmRzCiAgICBzZXJ2ZXJzIGFsc28gaGFuZGxlIExGLiAgU2ltaWxhcmx5LCB3aGl0ZXNwYWNlIGluIHRoZSByZXF1ZXN0IGxpbmUKICAgIGlzIHRyZWF0ZWQgc2Vuc2libHkgKGFsbG93aW5nIG11bHRpcGxlIHNwYWNlcyBiZXR3ZWVuIGNvbXBvbmVudHMKICAgIGFuZCBhbGxvd2luZyB0cmFpbGluZyB3aGl0ZXNwYWNlKS4KCiAgICBTaW1pbGFybHksIGZvciBvdXRwdXQsIGxpbmVzIG91Z2h0IHRvIGJlIHNlcGFyYXRlZCBieSBDUkxGIHBhaXJzCiAgICBidXQgbW9zdCBjbGllbnRzIGdyb2sgTEYgY2hhcmFjdGVycyBqdXN0IGZpbmUuCgogICAgSWYgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHJlcXVlc3QgaGFzIHRoZSBmb3JtCgogICAgPGNvbW1hbmQ+IDxwYXRoPgoKICAgIChpLmUuIDx2ZXJzaW9uPiBpcyBsZWZ0IG91dCkgdGhlbiB0aGlzIGlzIGFzc3VtZWQgdG8gYmUgYW4gSFRUUAogICAgMC45IHJlcXVlc3Q7IHRoaXMgZm9ybSBoYXMgbm8gb3B0aW9uYWwgaGVhZGVycyBhbmQgZGF0YSBwYXJ0IGFuZAogICAgdGhlIHJlcGx5IGNvbnNpc3RzIG9mIGp1c3QgdGhlIGRhdGEuCgogICAgVGhlIHJlcGx5IGZvcm0gb2YgdGhlIEhUVFAgMS54IHByb3RvY29sIGFnYWluIGhhcyB0aHJlZSBwYXJ0czoKCiAgICAxLiBPbmUgbGluZSBnaXZpbmcgdGhlIHJlc3BvbnNlIGNvZGUKICAgIDIuIEFuIG9wdGlvbmFsIHNldCBvZiBSRkMtODIyLXN0eWxlIGhlYWRlcnMKICAgIDMuIFRoZSBkYXRhCgogICAgQWdhaW4sIHRoZSBoZWFkZXJzIGFuZCBkYXRhIGFyZSBzZXBhcmF0ZWQgYnkgYSBibGFuayBsaW5lLgoKICAgIFRoZSByZXNwb25zZSBjb2RlIGxpbmUgaGFzIHRoZSBmb3JtCgogICAgPHZlcnNpb24+IDxyZXNwb25zZWNvZGU+IDxyZXNwb25zZXN0cmluZz4KCiAgICB3aGVyZSA8dmVyc2lvbj4gaXMgdGhlIHByb3RvY29sIHZlcnNpb24gKCJIVFRQLzEuMCIgb3IgIkhUVFAvMS4xIiksCiAgICA8cmVzcG9uc2Vjb2RlPiBpcyBhIDMtZGlnaXQgcmVzcG9uc2UgY29kZSBpbmRpY2F0aW5nIHN1Y2Nlc3Mgb3IKICAgIGZhaWx1cmUgb2YgdGhlIHJlcXVlc3QsIGFuZCA8cmVzcG9uc2VzdHJpbmc+IGlzIGFuIG9wdGlvbmFsCiAgICBodW1hbi1yZWFkYWJsZSBzdHJpbmcgZXhwbGFpbmluZyB3aGF0IHRoZSByZXNwb25zZSBjb2RlIG1lYW5zLgoKICAgIFRoaXMgc2VydmVyIHBhcnNlcyB0aGUgcmVxdWVzdCBhbmQgdGhlIGhlYWRlcnMsIGFuZCB0aGVuIGNhbGxzIGEKICAgIGZ1bmN0aW9uIHNwZWNpZmljIHRvIHRoZSByZXF1ZXN0IHR5cGUgKDxjb21tYW5kPikuICBTcGVjaWZpY2FsbHksCiAgICBhIHJlcXVlc3QgU1BBTSB3aWxsIGJlIGhhbmRsZWQgYnkgYSBtZXRob2QgZG9fU1BBTSgpLiAgSWYgbm8KICAgIHN1Y2ggbWV0aG9kIGV4aXN0cyB0aGUgc2VydmVyIHNlbmRzIGFuIGVycm9yIHJlc3BvbnNlIHRvIHRoZQogICAgY2xpZW50LiAgSWYgaXQgZXhpc3RzLCBpdCBpcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHM6CgogICAgZG9fU1BBTSgpCgogICAgTm90ZSB0aGF0IHRoZSByZXF1ZXN0IG5hbWUgaXMgY2FzZSBzZW5zaXRpdmUgKGkuZS4gU1BBTSBhbmQgc3BhbQogICAgYXJlIGRpZmZlcmVudCByZXF1ZXN0cykuCgogICAgVGhlIHZhcmlvdXMgcmVxdWVzdCBkZXRhaWxzIGFyZSBzdG9yZWQgaW4gaW5zdGFuY2UgdmFyaWFibGVzOgoKICAgIC0gY2xpZW50X2FkZHJlc3MgaXMgdGhlIGNsaWVudCBJUCBhZGRyZXNzIGluIHRoZSBmb3JtIChob3N0LAogICAgcG9ydCk7CgogICAgLSBjb21tYW5kLCBwYXRoIGFuZCB2ZXJzaW9uIGFyZSB0aGUgYnJva2VuLWRvd24gcmVxdWVzdCBsaW5lOwoKICAgIC0gaGVhZGVycyBpcyBhbiBpbnN0YW5jZSBvZiBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UgKG9yIGEgZGVyaXZlZAogICAgY2xhc3MpIGNvbnRhaW5pbmcgdGhlIGhlYWRlciBpbmZvcm1hdGlvbjsKCiAgICAtIHJmaWxlIGlzIGEgZmlsZSBvYmplY3Qgb3BlbiBmb3IgcmVhZGluZyBwb3NpdGlvbmVkIGF0IHRoZQogICAgc3RhcnQgb2YgdGhlIG9wdGlvbmFsIGlucHV0IGRhdGEgcGFydDsKCiAgICAtIHdmaWxlIGlzIGEgZmlsZSBvYmplY3Qgb3BlbiBmb3Igd3JpdGluZy4KCiAgICBJVCBJUyBJTVBPUlRBTlQgVE8gQURIRVJFIFRPIFRIRSBQUk9UT0NPTCBGT1IgV1JJVElORyEKCiAgICBUaGUgZmlyc3QgdGhpbmcgdG8gYmUgd3JpdHRlbiBtdXN0IGJlIHRoZSByZXNwb25zZSBsaW5lLiAgVGhlbgogICAgZm9sbG93IDAgb3IgbW9yZSBoZWFkZXIgbGluZXMsIHRoZW4gYSBibGFuayBsaW5lLCBhbmQgdGhlbiB0aGUKICAgIGFjdHVhbCBkYXRhIChpZiBhbnkpLiAgVGhlIG1lYW5pbmcgb2YgdGhlIGhlYWRlciBsaW5lcyBkZXBlbmRzIG9uCiAgICB0aGUgY29tbWFuZCBleGVjdXRlZCBieSB0aGUgc2VydmVyOyBpbiBtb3N0IGNhc2VzLCB3aGVuIGRhdGEgaXMKICAgIHJldHVybmVkLCB0aGVyZSBzaG91bGQgYmUgYXQgbGVhc3Qgb25lIGhlYWRlciBsaW5lIG9mIHRoZSBmb3JtCgogICAgQ29udGVudC10eXBlOiA8dHlwZT4vPHN1YnR5cGU+CgogICAgd2hlcmUgPHR5cGU+IGFuZCA8c3VidHlwZT4gc2hvdWxkIGJlIHJlZ2lzdGVyZWQgTUlNRSB0eXBlcywKICAgIGUuZy4gInRleHQvaHRtbCIgb3IgInRleHQvcGxhaW4iLgoKICAgICIiIgoKICAgICMgVGhlIFB5dGhvbiBzeXN0ZW0gdmVyc2lvbiwgdHJ1bmNhdGVkIHRvIGl0cyBmaXJzdCBjb21wb25lbnQuCiAgICBzeXNfdmVyc2lvbiA9ICJQeXRob24vIiArIHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KCiAgICAjIFRoZSBzZXJ2ZXIgc29mdHdhcmUgdmVyc2lvbi4gIFlvdSBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzLgogICAgIyBUaGUgZm9ybWF0IGlzIG11bHRpcGxlIHdoaXRlc3BhY2Utc2VwYXJhdGVkIHN0cmluZ3MsCiAgICAjIHdoZXJlIGVhY2ggc3RyaW5nIGlzIG9mIHRoZSBmb3JtIG5hbWVbL3ZlcnNpb25dLgogICAgc2VydmVyX3ZlcnNpb24gPSAiQmFzZUhUVFAvIiArIF9fdmVyc2lvbl9fCgogICAgZXJyb3JfbWVzc2FnZV9mb3JtYXQgPSBERUZBVUxUX0VSUk9SX01FU1NBR0UKICAgIGVycm9yX2NvbnRlbnRfdHlwZSA9IERFRkFVTFRfRVJST1JfQ09OVEVOVF9UWVBFCgogICAgIyBUaGUgZGVmYXVsdCByZXF1ZXN0IHZlcnNpb24uICBUaGlzIG9ubHkgYWZmZWN0cyByZXNwb25zZXMgdXAgdW50aWwKICAgICMgdGhlIHBvaW50IHdoZXJlIHRoZSByZXF1ZXN0IGxpbmUgaXMgcGFyc2VkLCBzbyBpdCBtYWlubHkgZGVjaWRlcyB3aGF0CiAgICAjIHRoZSBjbGllbnQgZ2V0cyBiYWNrIHdoZW4gc2VuZGluZyBhIG1hbGZvcm1lZCByZXF1ZXN0IGxpbmUuCiAgICAjIE1vc3Qgd2ViIHNlcnZlcnMgZGVmYXVsdCB0byBIVFRQIDAuOSwgaS5lLiBkb24ndCBzZW5kIGEgc3RhdHVzIGxpbmUuCiAgICBkZWZhdWx0X3JlcXVlc3RfdmVyc2lvbiA9ICJIVFRQLzAuOSIKCiAgICBkZWYgcGFyc2VfcmVxdWVzdChzZWxmKToKICAgICAgICAiIiJQYXJzZSBhIHJlcXVlc3QgKGludGVybmFsKS4KCiAgICAgICAgVGhlIHJlcXVlc3Qgc2hvdWxkIGJlIHN0b3JlZCBpbiBzZWxmLnJhd19yZXF1ZXN0bGluZTsgdGhlIHJlc3VsdHMKICAgICAgICBhcmUgaW4gc2VsZi5jb21tYW5kLCBzZWxmLnBhdGgsIHNlbGYucmVxdWVzdF92ZXJzaW9uIGFuZAogICAgICAgIHNlbGYuaGVhZGVycy4KCiAgICAgICAgUmV0dXJuIFRydWUgZm9yIHN1Y2Nlc3MsIEZhbHNlIGZvciBmYWlsdXJlOyBvbiBmYWlsdXJlLCBhbnkgcmVsZXZhbnQKICAgICAgICBlcnJvciByZXNwb25zZSBoYXMgYWxyZWFkeSBiZWVuIHNlbnQgYmFjay4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5jb21tYW5kID0gTm9uZSAgIyBzZXQgaW4gY2FzZSBvZiBlcnJvciBvbiB0aGUgZmlyc3QgbGluZQogICAgICAgIHNlbGYucmVxdWVzdF92ZXJzaW9uID0gdmVyc2lvbiA9IHNlbGYuZGVmYXVsdF9yZXF1ZXN0X3ZlcnNpb24KICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBUcnVlCiAgICAgICAgcmVxdWVzdGxpbmUgPSBzdHIoc2VsZi5yYXdfcmVxdWVzdGxpbmUsICdpc28tODg1OS0xJykKICAgICAgICByZXF1ZXN0bGluZSA9IHJlcXVlc3RsaW5lLnJzdHJpcCgnXHJcbicpCiAgICAgICAgc2VsZi5yZXF1ZXN0bGluZSA9IHJlcXVlc3RsaW5lCiAgICAgICAgd29yZHMgPSByZXF1ZXN0bGluZS5zcGxpdCgpCiAgICAgICAgaWYgbGVuKHdvcmRzKSA9PSAwOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgaWYgbGVuKHdvcmRzKSA+PSAzOiAgIyBFbm91Z2ggdG8gZGV0ZXJtaW5lIHByb3RvY29sIHZlcnNpb24KICAgICAgICAgICAgdmVyc2lvbiA9IHdvcmRzWy0xXQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBub3QgdmVyc2lvbi5zdGFydHN3aXRoKCdIVFRQLycpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgIGJhc2VfdmVyc2lvbl9udW1iZXIgPSB2ZXJzaW9uLnNwbGl0KCcvJywgMSlbMV0KICAgICAgICAgICAgICAgIHZlcnNpb25fbnVtYmVyID0gYmFzZV92ZXJzaW9uX251bWJlci5zcGxpdCgiLiIpCiAgICAgICAgICAgICAgICAjIFJGQyAyMTQ1IHNlY3Rpb24gMy4xIHNheXMgdGhlcmUgY2FuIGJlIG9ubHkgb25lICIuIiBhbmQKICAgICAgICAgICAgICAgICMgICAtIG1ham9yIGFuZCBtaW5vciBudW1iZXJzIE1VU1QgYmUgdHJlYXRlZCBhcwogICAgICAgICAgICAgICAgIyAgICAgIHNlcGFyYXRlIGludGVnZXJzOwogICAgICAgICAgICAgICAgIyAgIC0gSFRUUC8yLjQgaXMgYSBsb3dlciB2ZXJzaW9uIHRoYW4gSFRUUC8yLjEzLCB3aGljaCBpbgogICAgICAgICAgICAgICAgIyAgICAgIHR1cm4gaXMgbG93ZXIgdGhhbiBIVFRQLzEyLjM7CiAgICAgICAgICAgICAgICAjICAgLSBMZWFkaW5nIHplcm9zIE1VU1QgYmUgaWdub3JlZCBieSByZWNpcGllbnRzLgogICAgICAgICAgICAgICAgaWYgbGVuKHZlcnNpb25fbnVtYmVyKSAhPSAyOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgIHZlcnNpb25fbnVtYmVyID0gaW50KHZlcnNpb25fbnVtYmVyWzBdKSwgaW50KHZlcnNpb25fbnVtYmVyWzFdKQogICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IpOgogICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAogICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCiAgICAgICAgICAgICAgICAgICAgIkJhZCByZXF1ZXN0IHZlcnNpb24gKCVyKSIgJSB2ZXJzaW9uKQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgIGlmIHZlcnNpb25fbnVtYmVyID49ICgxLCAxKSBhbmQgc2VsZi5wcm90b2NvbF92ZXJzaW9uID49ICJIVFRQLzEuMSI6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBGYWxzZQogICAgICAgICAgICBpZiB2ZXJzaW9uX251bWJlciA+PSAoMiwgMCk6CiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCiAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5IVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCwKICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIHZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgIHNlbGYucmVxdWVzdF92ZXJzaW9uID0gdmVyc2lvbgoKICAgICAgICBpZiBub3QgMiA8PSBsZW4od29yZHMpIDw9IDM6CiAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCiAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3Qgc3ludGF4ICglcikiICUgcmVxdWVzdGxpbmUpCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGNvbW1hbmQsIHBhdGggPSB3b3Jkc1s6Ml0KICAgICAgICBpZiBsZW4od29yZHMpID09IDI6CiAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRydWUKICAgICAgICAgICAgaWYgY29tbWFuZCAhPSAnR0VUJzoKICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAogICAgICAgICAgICAgICAgICAgICJCYWQgSFRUUC8wLjkgcmVxdWVzdCB0eXBlICglcikiICUgY29tbWFuZCkKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHNlbGYuY29tbWFuZCwgc2VsZi5wYXRoID0gY29tbWFuZCwgcGF0aAoKICAgICAgICAjIGdoLTg3Mzg5OiBUaGUgcHVycG9zZSBvZiByZXBsYWNpbmcgJy8vJyB3aXRoICcvJyBpcyB0byBwcm90ZWN0CiAgICAgICAgIyBhZ2FpbnN0IG9wZW4gcmVkaXJlY3QgYXR0YWNrcyBwb3NzaWJseSB0cmlnZ2VyZWQgaWYgdGhlIHBhdGggc3RhcnRzCiAgICAgICAgIyB3aXRoICcvLycgYmVjYXVzZSBodHRwIGNsaWVudHMgdHJlYXQgLy9wYXRoIGFzIGFuIGFic29sdXRlIFVSSQogICAgICAgICMgd2l0aG91dCBzY2hlbWUgKHNpbWlsYXIgdG8gaHR0cDovL3BhdGgpIHJhdGhlciB0aGFuIGEgcGF0aC4KICAgICAgICBpZiBzZWxmLnBhdGguc3RhcnRzd2l0aCgnLy8nKToKICAgICAgICAgICAgc2VsZi5wYXRoID0gJy8nICsgc2VsZi5wYXRoLmxzdHJpcCgnLycpICAjIFJlZHVjZSB0byBhIHNpbmdsZSAvCgogICAgICAgICMgRXhhbWluZSB0aGUgaGVhZGVycyBhbmQgbG9vayBmb3IgYSBDb25uZWN0aW9uIGRpcmVjdGl2ZS4KICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuaGVhZGVycyA9IGh0dHAuY2xpZW50LnBhcnNlX2hlYWRlcnMoc2VsZi5yZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xhc3M9c2VsZi5NZXNzYWdlQ2xhc3MpCiAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkxpbmVUb29Mb25nIGFzIGVycjoKICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAogICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5SRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFLAogICAgICAgICAgICAgICAgIkxpbmUgdG9vIGxvbmciLAogICAgICAgICAgICAgICAgc3RyKGVycikpCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5IVFRQRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAogICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5SRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFLAogICAgICAgICAgICAgICAgIlRvbyBtYW55IGhlYWRlcnMiLAogICAgICAgICAgICAgICAgc3RyKGVycikKICAgICAgICAgICAgKQogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgY29ubnR5cGUgPSBzZWxmLmhlYWRlcnMuZ2V0KCdDb25uZWN0aW9uJywgIiIpCiAgICAgICAgaWYgY29ubnR5cGUubG93ZXIoKSA9PSAnY2xvc2UnOgogICAgICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBUcnVlCiAgICAgICAgZWxpZiAoY29ubnR5cGUubG93ZXIoKSA9PSAna2VlcC1hbGl2ZScgYW5kCiAgICAgICAgICAgICAgc2VsZi5wcm90b2NvbF92ZXJzaW9uID49ICJIVFRQLzEuMSIpOgogICAgICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBGYWxzZQogICAgICAgICMgRXhhbWluZSB0aGUgaGVhZGVycyBhbmQgbG9vayBmb3IgYW4gRXhwZWN0IGRpcmVjdGl2ZQogICAgICAgIGV4cGVjdCA9IHNlbGYuaGVhZGVycy5nZXQoJ0V4cGVjdCcsICIiKQogICAgICAgIGlmIChleHBlY3QubG93ZXIoKSA9PSAiMTAwLWNvbnRpbnVlIiBhbmQKICAgICAgICAgICAgICAgIHNlbGYucHJvdG9jb2xfdmVyc2lvbiA+PSAiSFRUUC8xLjEiIGFuZAogICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gPj0gIkhUVFAvMS4xIik6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmhhbmRsZV9leHBlY3RfMTAwKCk6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBoYW5kbGVfZXhwZWN0XzEwMChzZWxmKToKICAgICAgICAiIiJEZWNpZGUgd2hhdCB0byBkbyB3aXRoIGFuICJFeHBlY3Q6IDEwMC1jb250aW51ZSIgaGVhZGVyLgoKICAgICAgICBJZiB0aGUgY2xpZW50IGlzIGV4cGVjdGluZyBhIDEwMCBDb250aW51ZSByZXNwb25zZSwgd2UgbXVzdAogICAgICAgIHJlc3BvbmQgd2l0aCBlaXRoZXIgYSAxMDAgQ29udGludWUgb3IgYSBmaW5hbCByZXNwb25zZSBiZWZvcmUKICAgICAgICB3YWl0aW5nIGZvciB0aGUgcmVxdWVzdCBib2R5LiBUaGUgZGVmYXVsdCBpcyB0byBhbHdheXMgcmVzcG9uZAogICAgICAgIHdpdGggYSAxMDAgQ29udGludWUuIFlvdSBjYW4gYmVoYXZlIGRpZmZlcmVudGx5IChmb3IgZXhhbXBsZSwKICAgICAgICByZWplY3QgdW5hdXRob3JpemVkIHJlcXVlc3RzKSBieSBvdmVycmlkaW5nIHRoaXMgbWV0aG9kLgoKICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgZWl0aGVyIHJldHVybiBUcnVlIChwb3NzaWJseSBhZnRlciBzZW5kaW5nCiAgICAgICAgYSAxMDAgQ29udGludWUgcmVzcG9uc2UpIG9yIHNlbmQgYW4gZXJyb3IgcmVzcG9uc2UgYW5kIHJldHVybgogICAgICAgIEZhbHNlLgoKICAgICAgICAiIiIKICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2Vfb25seShIVFRQU3RhdHVzLkNPTlRJTlVFKQogICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIGhhbmRsZV9vbmVfcmVxdWVzdChzZWxmKToKICAgICAgICAiIiJIYW5kbGUgYSBzaW5nbGUgSFRUUCByZXF1ZXN0LgoKICAgICAgICBZb3Ugbm9ybWFsbHkgZG9uJ3QgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZDsgc2VlIHRoZSBjbGFzcwogICAgICAgIF9fZG9jX18gc3RyaW5nIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaGFuZGxlIHNwZWNpZmljIEhUVFAKICAgICAgICBjb21tYW5kcyBzdWNoIGFzIEdFVCBhbmQgUE9TVC4KCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnJhd19yZXF1ZXN0bGluZSA9IHNlbGYucmZpbGUucmVhZGxpbmUoNjU1MzcpCiAgICAgICAgICAgIGlmIGxlbihzZWxmLnJhd19yZXF1ZXN0bGluZSkgPiA2NTUzNjoKICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdGxpbmUgPSAnJwogICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gPSAnJwogICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gJycKICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLlJFUVVFU1RfVVJJX1RPT19MT05HKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJhd19yZXF1ZXN0bGluZToKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRydWUKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpZiBub3Qgc2VsZi5wYXJzZV9yZXF1ZXN0KCk6CiAgICAgICAgICAgICAgICAjIEFuIGVycm9yIGNvZGUgaGFzIGJlZW4gc2VudCwganVzdCBleGl0CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgbW5hbWUgPSAnZG9fJyArIHNlbGYuY29tbWFuZAogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCBtbmFtZSk6CiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCiAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQsCiAgICAgICAgICAgICAgICAgICAgIlVuc3VwcG9ydGVkIG1ldGhvZCAoJXIpIiAlIHNlbGYuY29tbWFuZCkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsIG1uYW1lKQogICAgICAgICAgICBtZXRob2QoKQogICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkgI2FjdHVhbGx5IHNlbmQgdGhlIHJlc3BvbnNlIGlmIG5vdCBhbHJlYWR5IGRvbmUuCiAgICAgICAgZXhjZXB0IFRpbWVvdXRFcnJvciBhcyBlOgogICAgICAgICAgICAjYSByZWFkIG9yIGEgd3JpdGUgdGltZWQgb3V0LiAgRGlzY2FyZCB0aGlzIGNvbm5lY3Rpb24KICAgICAgICAgICAgc2VsZi5sb2dfZXJyb3IoIlJlcXVlc3QgdGltZWQgb3V0OiAlciIsIGUpCiAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRydWUKICAgICAgICAgICAgcmV0dXJuCgogICAgZGVmIGhhbmRsZShzZWxmKToKICAgICAgICAiIiJIYW5kbGUgbXVsdGlwbGUgcmVxdWVzdHMgaWYgbmVjZXNzYXJ5LiIiIgogICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRydWUKCiAgICAgICAgc2VsZi5oYW5kbGVfb25lX3JlcXVlc3QoKQogICAgICAgIHdoaWxlIG5vdCBzZWxmLmNsb3NlX2Nvbm5lY3Rpb246CiAgICAgICAgICAgIHNlbGYuaGFuZGxlX29uZV9yZXF1ZXN0KCkKCiAgICBkZWYgc2VuZF9lcnJvcihzZWxmLCBjb2RlLCBtZXNzYWdlPU5vbmUsIGV4cGxhaW49Tm9uZSk6CiAgICAgICAgIiIiU2VuZCBhbmQgbG9nIGFuIGVycm9yIHJlcGx5LgoKICAgICAgICBBcmd1bWVudHMgYXJlCiAgICAgICAgKiBjb2RlOiAgICBhbiBIVFRQIGVycm9yIGNvZGUKICAgICAgICAgICAgICAgICAgIDMgZGlnaXRzCiAgICAgICAgKiBtZXNzYWdlOiBhIHNpbXBsZSBvcHRpb25hbCAxIGxpbmUgcmVhc29uIHBocmFzZS4KICAgICAgICAgICAgICAgICAgICooIEhUQUIgLyBTUCAvIFZDSEFSIC8gJXg4MC1GRiApCiAgICAgICAgICAgICAgICAgICBkZWZhdWx0cyB0byBzaG9ydCBlbnRyeSBtYXRjaGluZyB0aGUgcmVzcG9uc2UgY29kZQogICAgICAgICogZXhwbGFpbjogYSBkZXRhaWxlZCBtZXNzYWdlIGRlZmF1bHRzIHRvIHRoZSBsb25nIGVudHJ5CiAgICAgICAgICAgICAgICAgICBtYXRjaGluZyB0aGUgcmVzcG9uc2UgY29kZS4KCiAgICAgICAgVGhpcyBzZW5kcyBhbiBlcnJvciByZXNwb25zZSAoc28gaXQgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueQogICAgICAgIG91dHB1dCBoYXMgYmVlbiBnZW5lcmF0ZWQpLCBsb2dzIHRoZSBlcnJvciwgYW5kIGZpbmFsbHkgc2VuZHMKICAgICAgICBhIHBpZWNlIG9mIEhUTUwgZXhwbGFpbmluZyB0aGUgZXJyb3IgdG8gdGhlIHVzZXIuCgogICAgICAgICIiIgoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNob3J0bXNnLCBsb25nbXNnID0gc2VsZi5yZXNwb25zZXNbY29kZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHNob3J0bXNnLCBsb25nbXNnID0gJz8/PycsICc/Pz8nCiAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgogICAgICAgICAgICBtZXNzYWdlID0gc2hvcnRtc2cKICAgICAgICBpZiBleHBsYWluIGlzIE5vbmU6CiAgICAgICAgICAgIGV4cGxhaW4gPSBsb25nbXNnCiAgICAgICAgc2VsZi5sb2dfZXJyb3IoImNvZGUgJWQsIG1lc3NhZ2UgJXMiLCBjb2RlLCBtZXNzYWdlKQogICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShjb2RlLCBtZXNzYWdlKQogICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0Nvbm5lY3Rpb24nLCAnY2xvc2UnKQoKICAgICAgICAjIE1lc3NhZ2UgYm9keSBpcyBvbWl0dGVkIGZvciBjYXNlcyBkZXNjcmliZWQgaW46CiAgICAgICAgIyAgLSBSRkM3MjMwOiAzLjMuIDF4eCwgMjA0KE5vIENvbnRlbnQpLCAzMDQoTm90IE1vZGlmaWVkKQogICAgICAgICMgIC0gUkZDNzIzMTogNi4zLjYuIDIwNShSZXNldCBDb250ZW50KQogICAgICAgIGJvZHkgPSBOb25lCiAgICAgICAgaWYgKGNvZGUgPj0gMjAwIGFuZAogICAgICAgICAgICBjb2RlIG5vdCBpbiAoSFRUUFN0YXR1cy5OT19DT05URU5ULAogICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5SRVNFVF9DT05URU5ULAogICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT1RfTU9ESUZJRUQpKToKICAgICAgICAgICAgIyBIVE1MIGVuY29kZSB0byBwcmV2ZW50IENyb3NzIFNpdGUgU2NyaXB0aW5nIGF0dGFja3MKICAgICAgICAgICAgIyAoc2VlIGJ1ZyAjMTEwMDIwMSkKICAgICAgICAgICAgY29udGVudCA9IChzZWxmLmVycm9yX21lc3NhZ2VfZm9ybWF0ICUgewogICAgICAgICAgICAgICAgJ2NvZGUnOiBjb2RlLAogICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBodG1sLmVzY2FwZShtZXNzYWdlLCBxdW90ZT1GYWxzZSksCiAgICAgICAgICAgICAgICAnZXhwbGFpbic6IGh0bWwuZXNjYXBlKGV4cGxhaW4sIHF1b3RlPUZhbHNlKQogICAgICAgICAgICB9KQogICAgICAgICAgICBib2R5ID0gY29udGVudC5lbmNvZGUoJ1VURi04JywgJ3JlcGxhY2UnKQogICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LVR5cGUiLCBzZWxmLmVycm9yX2NvbnRlbnRfdHlwZSkKICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1MZW5ndGgnLCBzdHIobGVuKGJvZHkpKSkKICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKCiAgICAgICAgaWYgc2VsZi5jb21tYW5kICE9ICdIRUFEJyBhbmQgYm9keToKICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShib2R5KQoKICAgIGRlZiBzZW5kX3Jlc3BvbnNlKHNlbGYsIGNvZGUsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgIiIiQWRkIHRoZSByZXNwb25zZSBoZWFkZXIgdG8gdGhlIGhlYWRlcnMgYnVmZmVyIGFuZCBsb2cgdGhlCiAgICAgICAgcmVzcG9uc2UgY29kZS4KCiAgICAgICAgQWxzbyBzZW5kIHR3byBzdGFuZGFyZCBoZWFkZXJzIHdpdGggdGhlIHNlcnZlciBzb2Z0d2FyZQogICAgICAgIHZlcnNpb24gYW5kIHRoZSBjdXJyZW50IGRhdGUuCgogICAgICAgICIiIgogICAgICAgIHNlbGYubG9nX3JlcXVlc3QoY29kZSkKICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2Vfb25seShjb2RlLCBtZXNzYWdlKQogICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ1NlcnZlcicsIHNlbGYudmVyc2lvbl9zdHJpbmcoKSkKICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdEYXRlJywgc2VsZi5kYXRlX3RpbWVfc3RyaW5nKCkpCgogICAgZGVmIHNlbmRfcmVzcG9uc2Vfb25seShzZWxmLCBjb2RlLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICIiIlNlbmQgdGhlIHJlc3BvbnNlIGhlYWRlciBvbmx5LiIiIgogICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CiAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKICAgICAgICAgICAgICAgIGlmIGNvZGUgaW4gc2VsZi5yZXNwb25zZXM6CiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVzcG9uc2VzW2NvZGVdWzBdCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCiAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgoIiVzICVkICVzXHJcbiIgJQogICAgICAgICAgICAgICAgICAgIChzZWxmLnByb3RvY29sX3ZlcnNpb24sIGNvZGUsIG1lc3NhZ2UpKS5lbmNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICdsYXRpbi0xJywgJ3N0cmljdCcpKQoKICAgIGRlZiBzZW5kX2hlYWRlcihzZWxmLCBrZXl3b3JkLCB2YWx1ZSk6CiAgICAgICAgIiIiU2VuZCBhIE1JTUUgaGVhZGVyIHRvIHRoZSBoZWFkZXJzIGJ1ZmZlci4iIiIKICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCiAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgKICAgICAgICAgICAgICAgICgiJXM6ICVzXHJcbiIgJSAoa2V5d29yZCwgdmFsdWUpKS5lbmNvZGUoJ2xhdGluLTEnLCAnc3RyaWN0JykpCgogICAgICAgIGlmIGtleXdvcmQubG93ZXIoKSA9PSAnY29ubmVjdGlvbic6CiAgICAgICAgICAgIGlmIHZhbHVlLmxvd2VyKCkgPT0gJ2Nsb3NlJzoKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRydWUKICAgICAgICAgICAgZWxpZiB2YWx1ZS5sb3dlcigpID09ICdrZWVwLWFsaXZlJzoKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IEZhbHNlCgogICAgZGVmIGVuZF9oZWFkZXJzKHNlbGYpOgogICAgICAgICIiIlNlbmQgdGhlIGJsYW5rIGxpbmUgZW5kaW5nIHRoZSBNSU1FIGhlYWRlcnMuIiIiCiAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gIT0gJ0hUVFAvMC45JzoKICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKGIiXHJcbiIpCiAgICAgICAgICAgIHNlbGYuZmx1c2hfaGVhZGVycygpCgogICAgZGVmIGZsdXNoX2hlYWRlcnMoc2VsZik6CiAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoYiIiLmpvaW4oc2VsZi5faGVhZGVyc19idWZmZXIpKQogICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCgogICAgZGVmIGxvZ19yZXF1ZXN0KHNlbGYsIGNvZGU9Jy0nLCBzaXplPSctJyk6CiAgICAgICAgIiIiTG9nIGFuIGFjY2VwdGVkIHJlcXVlc3QuCgogICAgICAgIFRoaXMgaXMgY2FsbGVkIGJ5IHNlbmRfcmVzcG9uc2UoKS4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShjb2RlLCBIVFRQU3RhdHVzKToKICAgICAgICAgICAgY29kZSA9IGNvZGUudmFsdWUKICAgICAgICBzZWxmLmxvZ19tZXNzYWdlKCciJXMiICVzICVzJywKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdGxpbmUsIHN0cihjb2RlKSwgc3RyKHNpemUpKQoKICAgIGRlZiBsb2dfZXJyb3Ioc2VsZiwgZm9ybWF0LCAqYXJncyk6CiAgICAgICAgIiIiTG9nIGFuIGVycm9yLgoKICAgICAgICBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiAgQnkKICAgICAgICBkZWZhdWx0IGl0IHBhc3NlcyB0aGUgbWVzc2FnZSBvbiB0byBsb2dfbWVzc2FnZSgpLgoKICAgICAgICBBcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciBsb2dfbWVzc2FnZSgpLgoKICAgICAgICBYWFggVGhpcyBzaG91bGQgZ28gdG8gdGhlIHNlcGFyYXRlIGVycm9yIGxvZy4KCiAgICAgICAgIiIiCgogICAgICAgIHNlbGYubG9nX21lc3NhZ2UoZm9ybWF0LCAqYXJncykKCiAgICAjIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpc3Rfb2ZfVW5pY29kZV9jaGFyYWN0ZXJzI0NvbnRyb2xfY29kZXMKICAgIF9jb250cm9sX2NoYXJfdGFibGUgPSBzdHIubWFrZXRyYW5zKAogICAgICAgICAgICB7YzogZnInXHh7YzowMnh9JyBmb3IgYyBpbiBpdGVydG9vbHMuY2hhaW4ocmFuZ2UoMHgyMCksIHJhbmdlKDB4N2YsMHhhMCkpfSkKICAgIF9jb250cm9sX2NoYXJfdGFibGVbb3JkKCdcXCcpXSA9IHInXFwnCgogICAgZGVmIGxvZ19tZXNzYWdlKHNlbGYsIGZvcm1hdCwgKmFyZ3MpOgogICAgICAgICIiIkxvZyBhbiBhcmJpdHJhcnkgbWVzc2FnZS4KCiAgICAgICAgVGhpcyBpcyB1c2VkIGJ5IGFsbCBvdGhlciBsb2dnaW5nIGZ1bmN0aW9ucy4gIE92ZXJyaWRlCiAgICAgICAgaXQgaWYgeW91IGhhdmUgc3BlY2lmaWMgbG9nZ2luZyB3aXNoZXMuCgogICAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCwgRk9STUFULCBpcyBhIGZvcm1hdCBzdHJpbmcgZm9yIHRoZQogICAgICAgIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkLiAgSWYgdGhlIGZvcm1hdCBzdHJpbmcgY29udGFpbnMKICAgICAgICBhbnkgJSBlc2NhcGVzIHJlcXVpcmluZyBwYXJhbWV0ZXJzLCB0aGV5IHNob3VsZCBiZQogICAgICAgIHNwZWNpZmllZCBhcyBzdWJzZXF1ZW50IGFyZ3VtZW50cyAoaXQncyBqdXN0IGxpa2UKICAgICAgICBwcmludGYhKS4KCiAgICAgICAgVGhlIGNsaWVudCBpcCBhbmQgY3VycmVudCBkYXRlL3RpbWUgYXJlIHByZWZpeGVkIHRvCiAgICAgICAgZXZlcnkgbWVzc2FnZS4KCiAgICAgICAgVW5pY29kZSBjb250cm9sIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkIHdpdGggZXNjYXBlZCBoZXgKICAgICAgICBiZWZvcmUgd3JpdGluZyB0aGUgb3V0cHV0IHRvIHN0ZGVyci4KCiAgICAgICAgIiIiCgogICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQgJSBhcmdzCiAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXMgLSAtIFslc10gJXNcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ19kYXRlX3RpbWVfc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS50cmFuc2xhdGUoc2VsZi5fY29udHJvbF9jaGFyX3RhYmxlKSkpCgogICAgZGVmIHZlcnNpb25fc3RyaW5nKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgc2VydmVyIHNvZnR3YXJlIHZlcnNpb24gc3RyaW5nLiIiIgogICAgICAgIHJldHVybiBzZWxmLnNlcnZlcl92ZXJzaW9uICsgJyAnICsgc2VsZi5zeXNfdmVyc2lvbgoKICAgIGRlZiBkYXRlX3RpbWVfc3RyaW5nKHNlbGYsIHRpbWVzdGFtcD1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBmb3JtYXR0ZWQgZm9yIGEgbWVzc2FnZSBoZWFkZXIuIiIiCiAgICAgICAgaWYgdGltZXN0YW1wIGlzIE5vbmU6CiAgICAgICAgICAgIHRpbWVzdGFtcCA9IHRpbWUudGltZSgpCiAgICAgICAgcmV0dXJuIGVtYWlsLnV0aWxzLmZvcm1hdGRhdGUodGltZXN0YW1wLCB1c2VnbXQ9VHJ1ZSkKCiAgICBkZWYgbG9nX2RhdGVfdGltZV9zdHJpbmcoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgZm9ybWF0dGVkIGZvciBsb2dnaW5nLiIiIgogICAgICAgIG5vdyA9IHRpbWUudGltZSgpCiAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgeCwgeSwgeiA9IHRpbWUubG9jYWx0aW1lKG5vdykKICAgICAgICBzID0gIiUwMmQvJTNzLyUwNGQgJTAyZDolMDJkOiUwMmQiICUgKAogICAgICAgICAgICAgICAgZGF5LCBzZWxmLm1vbnRobmFtZVttb250aF0sIHllYXIsIGhoLCBtbSwgc3MpCiAgICAgICAgcmV0dXJuIHMKCiAgICB3ZWVrZGF5bmFtZSA9IFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ10KCiAgICBtb250aG5hbWUgPSBbTm9uZSwKICAgICAgICAgICAgICAgICAnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLAogICAgICAgICAgICAgICAgICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddCgogICAgZGVmIGFkZHJlc3Nfc3RyaW5nKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgY2xpZW50IGFkZHJlc3MuIiIiCgogICAgICAgIHJldHVybiBzZWxmLmNsaWVudF9hZGRyZXNzWzBdCgogICAgIyBFc3NlbnRpYWxseSBzdGF0aWMgY2xhc3MgdmFyaWFibGVzCgogICAgIyBUaGUgdmVyc2lvbiBvZiB0aGUgSFRUUCBwcm90b2NvbCB3ZSBzdXBwb3J0LgogICAgIyBTZXQgdGhpcyB0byBIVFRQLzEuMSB0byBlbmFibGUgYXV0b21hdGljIGtlZXBhbGl2ZQogICAgcHJvdG9jb2xfdmVyc2lvbiA9ICJIVFRQLzEuMCIKCiAgICAjIE1lc3NhZ2VDbGFzcyB1c2VkIHRvIHBhcnNlIGhlYWRlcnMKICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHAuY2xpZW50LkhUVFBNZXNzYWdlCgogICAgIyBoYWNrIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICByZXNwb25zZXMgPSB7CiAgICAgICAgdjogKHYucGhyYXNlLCB2LmRlc2NyaXB0aW9uKQogICAgICAgIGZvciB2IGluIEhUVFBTdGF0dXMuX19tZW1iZXJzX18udmFsdWVzKCkKICAgIH0KCgpjbGFzcyBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CgogICAgIiIiU2ltcGxlIEhUVFAgcmVxdWVzdCBoYW5kbGVyIHdpdGggR0VUIGFuZCBIRUFEIGNvbW1hbmRzLgoKICAgIFRoaXMgc2VydmVzIGZpbGVzIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBhbnkgb2YgaXRzCiAgICBzdWJkaXJlY3Rvcmllcy4gIFRoZSBNSU1FIHR5cGUgZm9yIGZpbGVzIGlzIGRldGVybWluZWQgYnkKICAgIGNhbGxpbmcgdGhlIC5ndWVzc190eXBlKCkgbWV0aG9kLgoKICAgIFRoZSBHRVQgYW5kIEhFQUQgcmVxdWVzdHMgYXJlIGlkZW50aWNhbCBleGNlcHQgdGhhdCB0aGUgSEVBRAogICAgcmVxdWVzdCBvbWl0cyB0aGUgYWN0dWFsIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgoKICAgICIiIgoKICAgIHNlcnZlcl92ZXJzaW9uID0gIlNpbXBsZUhUVFAvIiArIF9fdmVyc2lvbl9fCiAgICBleHRlbnNpb25zX21hcCA9IF9lbmNvZGluZ3NfbWFwX2RlZmF1bHQgPSB7CiAgICAgICAgJy5neic6ICdhcHBsaWNhdGlvbi9nemlwJywKICAgICAgICAnLlonOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnLmJ6Mic6ICdhcHBsaWNhdGlvbi94LWJ6aXAyJywKICAgICAgICAnLnh6JzogJ2FwcGxpY2F0aW9uL3gteHonLAogICAgfQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgZGlyZWN0b3J5PU5vbmUsICoqa3dhcmdzKToKICAgICAgICBpZiBkaXJlY3RvcnkgaXMgTm9uZToKICAgICAgICAgICAgZGlyZWN0b3J5ID0gb3MuZ2V0Y3dkKCkKICAgICAgICBzZWxmLmRpcmVjdG9yeSA9IG9zLmZzcGF0aChkaXJlY3RvcnkpCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIGRvX0dFVChzZWxmKToKICAgICAgICAiIiJTZXJ2ZSBhIEdFVCByZXF1ZXN0LiIiIgogICAgICAgIGYgPSBzZWxmLnNlbmRfaGVhZCgpCiAgICAgICAgaWYgZjoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5jb3B5ZmlsZShmLCBzZWxmLndmaWxlKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgZi5jbG9zZSgpCgogICAgZGVmIGRvX0hFQUQoc2VsZik6CiAgICAgICAgIiIiU2VydmUgYSBIRUFEIHJlcXVlc3QuIiIiCiAgICAgICAgZiA9IHNlbGYuc2VuZF9oZWFkKCkKICAgICAgICBpZiBmOgogICAgICAgICAgICBmLmNsb3NlKCkKCiAgICBkZWYgc2VuZF9oZWFkKHNlbGYpOgogICAgICAgICIiIkNvbW1vbiBjb2RlIGZvciBHRVQgYW5kIEhFQUQgY29tbWFuZHMuCgogICAgICAgIFRoaXMgc2VuZHMgdGhlIHJlc3BvbnNlIGNvZGUgYW5kIE1JTUUgaGVhZGVycy4KCiAgICAgICAgUmV0dXJuIHZhbHVlIGlzIGVpdGhlciBhIGZpbGUgb2JqZWN0ICh3aGljaCBoYXMgdG8gYmUgY29waWVkCiAgICAgICAgdG8gdGhlIG91dHB1dGZpbGUgYnkgdGhlIGNhbGxlciB1bmxlc3MgdGhlIGNvbW1hbmQgd2FzIEhFQUQsCiAgICAgICAgYW5kIG11c3QgYmUgY2xvc2VkIGJ5IHRoZSBjYWxsZXIgdW5kZXIgYWxsIGNpcmN1bXN0YW5jZXMpLCBvcgogICAgICAgIE5vbmUsIGluIHdoaWNoIGNhc2UgdGhlIGNhbGxlciBoYXMgbm90aGluZyBmdXJ0aGVyIHRvIGRvLgoKICAgICAgICAiIiIKICAgICAgICBwYXRoID0gc2VsZi50cmFuc2xhdGVfcGF0aChzZWxmLnBhdGgpCiAgICAgICAgZiA9IE5vbmUKICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgogICAgICAgICAgICBwYXJ0cyA9IHVybGxpYi5wYXJzZS51cmxzcGxpdChzZWxmLnBhdGgpCiAgICAgICAgICAgIGlmIG5vdCBwYXJ0cy5wYXRoLmVuZHN3aXRoKCcvJyk6CiAgICAgICAgICAgICAgICAjIHJlZGlyZWN0IGJyb3dzZXIgLSBkb2luZyBiYXNpY2FsbHkgd2hhdCBhcGFjaGUgZG9lcwogICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuTU9WRURfUEVSTUFORU5UTFkpCiAgICAgICAgICAgICAgICBuZXdfcGFydHMgPSAocGFydHNbMF0sIHBhcnRzWzFdLCBwYXJ0c1syXSArICcvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c1szXSwgcGFydHNbNF0pCiAgICAgICAgICAgICAgICBuZXdfdXJsID0gdXJsbGliLnBhcnNlLnVybHVuc3BsaXQobmV3X3BhcnRzKQogICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiTG9jYXRpb24iLCBuZXdfdXJsKQogICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1MZW5ndGgiLCAiMCIpCiAgICAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgIGZvciBpbmRleCBpbiAiaW5kZXguaHRtbCIsICJpbmRleC5odG0iOgogICAgICAgICAgICAgICAgaW5kZXggPSBvcy5wYXRoLmpvaW4ocGF0aCwgaW5kZXgpCiAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShpbmRleCk6CiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGluZGV4CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxpc3RfZGlyZWN0b3J5KHBhdGgpCiAgICAgICAgY3R5cGUgPSBzZWxmLmd1ZXNzX3R5cGUocGF0aCkKICAgICAgICAjIGNoZWNrIGZvciB0cmFpbGluZyAiLyIgd2hpY2ggc2hvdWxkIHJldHVybiA0MDQuIFNlZSBJc3N1ZTE3MzI0CiAgICAgICAgIyBUaGUgdGVzdCBmb3IgdGhpcyB3YXMgYWRkZWQgaW4gdGVzdF9odHRwc2VydmVyLnB5CiAgICAgICAgIyBIb3dldmVyLCBzb21lIE9TIHBsYXRmb3JtcyBhY2NlcHQgYSB0cmFpbGluZ1NsYXNoIGFzIGEgZmlsZW5hbWUKICAgICAgICAjIFNlZSBkaXNjdXNzaW9uIG9uIHB5dGhvbi1kZXYgYW5kIElzc3VlMzQ3MTEgcmVnYXJkaW5nCiAgICAgICAgIyBwYXJzaW5nIGFuZCByZWplY3Rpb24gb2YgZmlsZW5hbWVzIHdpdGggYSB0cmFpbGluZyBzbGFzaAogICAgICAgIGlmIHBhdGguZW5kc3dpdGgoIi8iKToKICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKEhUVFBTdGF0dXMuTk9UX0ZPVU5ELCAiRmlsZSBub3QgZm91bmQiKQogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCwgJ3JiJykKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKEhUVFBTdGF0dXMuTk9UX0ZPVU5ELCAiRmlsZSBub3QgZm91bmQiKQogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZzID0gb3MuZnN0YXQoZi5maWxlbm8oKSkKICAgICAgICAgICAgIyBVc2UgYnJvd3NlciBjYWNoZSBpZiBwb3NzaWJsZQogICAgICAgICAgICBpZiAoIklmLU1vZGlmaWVkLVNpbmNlIiBpbiBzZWxmLmhlYWRlcnMKICAgICAgICAgICAgICAgICAgICBhbmQgIklmLU5vbmUtTWF0Y2giIG5vdCBpbiBzZWxmLmhlYWRlcnMpOgogICAgICAgICAgICAgICAgIyBjb21wYXJlIElmLU1vZGlmaWVkLVNpbmNlIGFuZCB0aW1lIG9mIGxhc3QgZmlsZSBtb2RpZmljYXRpb24KICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpbXMgPSBlbWFpbC51dGlscy5wYXJzZWRhdGVfdG9fZGF0ZXRpbWUoCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGVhZGVyc1siSWYtTW9kaWZpZWQtU2luY2UiXSkKICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBJbmRleEVycm9yLCBPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICAgICAjIGlnbm9yZSBpbGwtZm9ybWVkIHZhbHVlcwogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaWYgaW1zLnR6aW5mbyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAjIG9ic29sZXRlIGZvcm1hdCB3aXRoIG5vIHRpbWV6b25lLCBjZi4KICAgICAgICAgICAgICAgICAgICAgICAgIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTcuMS4xLjEKICAgICAgICAgICAgICAgICAgICAgICAgaW1zID0gaW1zLnJlcGxhY2UodHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKICAgICAgICAgICAgICAgICAgICBpZiBpbXMudHppbmZvIGlzIGRhdGV0aW1lLnRpbWV6b25lLnV0YzoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21wYXJlIHRvIFVUQyBkYXRldGltZSBvZiBsYXN0IG1vZGlmaWNhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICBsYXN0X21vZGlmID0gZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzLnN0X210aW1lLCBkYXRldGltZS50aW1lem9uZS51dGMpCiAgICAgICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIG1pY3Jvc2Vjb25kcywgbGlrZSBpbiBJZi1Nb2RpZmllZC1TaW5jZQogICAgICAgICAgICAgICAgICAgICAgICBsYXN0X21vZGlmID0gbGFzdF9tb2RpZi5yZXBsYWNlKG1pY3Jvc2Vjb25kPTApCgogICAgICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X21vZGlmIDw9IGltczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk5PVF9NT0RJRklFRCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuT0spCiAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtdHlwZSIsIGN0eXBlKQogICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LUxlbmd0aCIsIHN0cihmc1s2XSkpCiAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkxhc3QtTW9kaWZpZWQiLAogICAgICAgICAgICAgICAgc2VsZi5kYXRlX3RpbWVfc3RyaW5nKGZzLnN0X210aW1lKSkKICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCiAgICAgICAgICAgIHJldHVybiBmCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgbGlzdF9kaXJlY3Rvcnkoc2VsZiwgcGF0aCk6CiAgICAgICAgIiIiSGVscGVyIHRvIHByb2R1Y2UgYSBkaXJlY3RvcnkgbGlzdGluZyAoYWJzZW50IGluZGV4Lmh0bWwpLgoKICAgICAgICBSZXR1cm4gdmFsdWUgaXMgZWl0aGVyIGEgZmlsZSBvYmplY3QsIG9yIE5vbmUgKGluZGljYXRpbmcgYW4KICAgICAgICBlcnJvcikuICBJbiBlaXRoZXIgY2FzZSwgdGhlIGhlYWRlcnMgYXJlIHNlbnQsIG1ha2luZyB0aGUKICAgICAgICBpbnRlcmZhY2UgdGhlIHNhbWUgYXMgZm9yIHNlbmRfaGVhZCgpLgoKICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGxpc3QgPSBvcy5saXN0ZGlyKHBhdGgpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0ZPVU5ELAogICAgICAgICAgICAgICAgIk5vIHBlcm1pc3Npb24gdG8gbGlzdCBkaXJlY3RvcnkiKQogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGxpc3Quc29ydChrZXk9bGFtYmRhIGE6IGEubG93ZXIoKSkKICAgICAgICByID0gW10KICAgICAgICB0cnk6CiAgICAgICAgICAgIGRpc3BsYXlwYXRoID0gdXJsbGliLnBhcnNlLnVucXVvdGUoc2VsZi5wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgZGlzcGxheXBhdGggPSB1cmxsaWIucGFyc2UudW5xdW90ZShwYXRoKQogICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUoZGlzcGxheXBhdGgsIHF1b3RlPUZhbHNlKQogICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogICAgICAgIHRpdGxlID0gZidEaXJlY3RvcnkgbGlzdGluZyBmb3Ige2Rpc3BsYXlwYXRofScKICAgICAgICByLmFwcGVuZCgnPCFET0NUWVBFIEhUTUw+JykKICAgICAgICByLmFwcGVuZCgnPGh0bWwgbGFuZz0iZW4iPicpCiAgICAgICAgci5hcHBlbmQoJzxoZWFkPicpCiAgICAgICAgci5hcHBlbmQoZic8bWV0YSBjaGFyc2V0PSJ7ZW5jfSI+JykKICAgICAgICByLmFwcGVuZChmJzx0aXRsZT57dGl0bGV9PC90aXRsZT5cbjwvaGVhZD4nKQogICAgICAgIHIuYXBwZW5kKGYnPGJvZHk+XG48aDE+e3RpdGxlfTwvaDE+JykKICAgICAgICByLmFwcGVuZCgnPGhyPlxuPHVsPicpCiAgICAgICAgZm9yIG5hbWUgaW4gbGlzdDoKICAgICAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKICAgICAgICAgICAgZGlzcGxheW5hbWUgPSBsaW5rbmFtZSA9IG5hbWUKICAgICAgICAgICAgIyBBcHBlbmQgLyBmb3IgZGlyZWN0b3JpZXMgb3IgQCBmb3Igc3ltYm9saWMgbGlua3MKICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmdWxsbmFtZSk6CiAgICAgICAgICAgICAgICBkaXNwbGF5bmFtZSA9IG5hbWUgKyAiLyIKICAgICAgICAgICAgICAgIGxpbmtuYW1lID0gbmFtZSArICIvIgogICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhmdWxsbmFtZSk6CiAgICAgICAgICAgICAgICBkaXNwbGF5bmFtZSA9IG5hbWUgKyAiQCIKICAgICAgICAgICAgICAgICMgTm90ZTogYSBsaW5rIHRvIGEgZGlyZWN0b3J5IGRpc3BsYXlzIHdpdGggQCBhbmQgbGlua3Mgd2l0aCAvCiAgICAgICAgICAgIHIuYXBwZW5kKCc8bGk+PGEgaHJlZj0iJXMiPiVzPC9hPjwvbGk+JwogICAgICAgICAgICAgICAgICAgICUgKHVybGxpYi5wYXJzZS5xdW90ZShsaW5rbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJyksCiAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5lc2NhcGUoZGlzcGxheW5hbWUsIHF1b3RlPUZhbHNlKSkpCiAgICAgICAgci5hcHBlbmQoJzwvdWw+XG48aHI+XG48L2JvZHk+XG48L2h0bWw+XG4nKQogICAgICAgIGVuY29kZWQgPSAnXG4nLmpvaW4ocikuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQogICAgICAgIGYud3JpdGUoZW5jb2RlZCkKICAgICAgICBmLnNlZWsoMCkKICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSykKICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCAidGV4dC9odG1sOyBjaGFyc2V0PSVzIiAlIGVuYykKICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LUxlbmd0aCIsIHN0cihsZW4oZW5jb2RlZCkpKQogICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgIHJldHVybiBmCgogICAgZGVmIHRyYW5zbGF0ZV9wYXRoKHNlbGYsIHBhdGgpOgogICAgICAgICIiIlRyYW5zbGF0ZSBhIC8tc2VwYXJhdGVkIFBBVEggdG8gdGhlIGxvY2FsIGZpbGVuYW1lIHN5bnRheC4KCiAgICAgICAgQ29tcG9uZW50cyB0aGF0IG1lYW4gc3BlY2lhbCB0aGluZ3MgdG8gdGhlIGxvY2FsIGZpbGUgc3lzdGVtCiAgICAgICAgKGUuZy4gZHJpdmUgb3IgZGlyZWN0b3J5IG5hbWVzKSBhcmUgaWdub3JlZC4gIChYWFggVGhleSBzaG91bGQKICAgICAgICBwcm9iYWJseSBiZSBkaWFnbm9zZWQuKQoKICAgICAgICAiIiIKICAgICAgICAjIGFiYW5kb24gcXVlcnkgcGFyYW1ldGVycwogICAgICAgIHBhdGggPSBwYXRoLnNwbGl0KCc/JywxKVswXQogICAgICAgIHBhdGggPSBwYXRoLnNwbGl0KCcjJywxKVswXQogICAgICAgICMgRG9uJ3QgZm9yZ2V0IGV4cGxpY2l0IHRyYWlsaW5nIHNsYXNoIHdoZW4gbm9ybWFsaXppbmcuIElzc3VlMTczMjQKICAgICAgICB0cmFpbGluZ19zbGFzaCA9IHBhdGgucnN0cmlwKCkuZW5kc3dpdGgoJy8nKQogICAgICAgIHRyeToKICAgICAgICAgICAgcGF0aCA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHBhdGgsIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgcGF0aCA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHBhdGgpCiAgICAgICAgcGF0aCA9IHBvc2l4cGF0aC5ub3JtcGF0aChwYXRoKQogICAgICAgIHdvcmRzID0gcGF0aC5zcGxpdCgnLycpCiAgICAgICAgd29yZHMgPSBmaWx0ZXIoTm9uZSwgd29yZHMpCiAgICAgICAgcGF0aCA9IHNlbGYuZGlyZWN0b3J5CiAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6CiAgICAgICAgICAgIGlmIG9zLnBhdGguZGlybmFtZSh3b3JkKSBvciB3b3JkIGluIChvcy5jdXJkaXIsIG9zLnBhcmRpcik6CiAgICAgICAgICAgICAgICAjIElnbm9yZSBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBhIHNpbXBsZSBmaWxlL2RpcmVjdG9yeSBuYW1lCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsIHdvcmQpCiAgICAgICAgaWYgdHJhaWxpbmdfc2xhc2g6CiAgICAgICAgICAgIHBhdGggKz0gJy8nCiAgICAgICAgcmV0dXJuIHBhdGgKCiAgICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBvdXRwdXRmaWxlKToKICAgICAgICAiIiJDb3B5IGFsbCBkYXRhIGJldHdlZW4gdHdvIGZpbGUgb2JqZWN0cy4KCiAgICAgICAgVGhlIFNPVVJDRSBhcmd1bWVudCBpcyBhIGZpbGUgb2JqZWN0IG9wZW4gZm9yIHJlYWRpbmcKICAgICAgICAob3IgYW55dGhpbmcgd2l0aCBhIHJlYWQoKSBtZXRob2QpIGFuZCB0aGUgREVTVElOQVRJT04KICAgICAgICBhcmd1bWVudCBpcyBhIGZpbGUgb2JqZWN0IG9wZW4gZm9yIHdyaXRpbmcgKG9yCiAgICAgICAgYW55dGhpbmcgd2l0aCBhIHdyaXRlKCkgbWV0aG9kKS4KCiAgICAgICAgVGhlIG9ubHkgcmVhc29uIGZvciBvdmVycmlkaW5nIHRoaXMgd291bGQgYmUgdG8gY2hhbmdlCiAgICAgICAgdGhlIGJsb2NrIHNpemUgb3IgcGVyaGFwcyB0byByZXBsYWNlIG5ld2xpbmVzIGJ5IENSTEYKICAgICAgICAtLSBub3RlIGhvd2V2ZXIgdGhhdCB0aGlzIHRoZSBkZWZhdWx0IHNlcnZlciB1c2VzIHRoaXMKICAgICAgICB0byBjb3B5IGJpbmFyeSBkYXRhIGFzIHdlbGwuCgogICAgICAgICIiIgogICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzb3VyY2UsIG91dHB1dGZpbGUpCgogICAgZGVmIGd1ZXNzX3R5cGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIiIiR3Vlc3MgdGhlIHR5cGUgb2YgYSBmaWxlLgoKICAgICAgICBBcmd1bWVudCBpcyBhIFBBVEggKGEgZmlsZW5hbWUpLgoKICAgICAgICBSZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgb2YgdGhlIGZvcm0gdHlwZS9zdWJ0eXBlLAogICAgICAgIHVzYWJsZSBmb3IgYSBNSU1FIENvbnRlbnQtdHlwZSBoZWFkZXIuCgogICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGxvb2tzIHRoZSBmaWxlJ3MgZXh0ZW5zaW9uCiAgICAgICAgdXAgaW4gdGhlIHRhYmxlIHNlbGYuZXh0ZW5zaW9uc19tYXAsIHVzaW5nIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQogICAgICAgIGFzIGEgZGVmYXVsdDsgaG93ZXZlciBpdCB3b3VsZCBiZSBwZXJtaXNzaWJsZSAoaWYKICAgICAgICBzbG93KSB0byBsb29rIGluc2lkZSB0aGUgZGF0YSB0byBtYWtlIGEgYmV0dGVyIGd1ZXNzLgoKICAgICAgICAiIiIKICAgICAgICBiYXNlLCBleHQgPSBwb3NpeHBhdGguc3BsaXRleHQocGF0aCkKICAgICAgICBpZiBleHQgaW4gc2VsZi5leHRlbnNpb25zX21hcDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXh0ZW5zaW9uc19tYXBbZXh0XQogICAgICAgIGV4dCA9IGV4dC5sb3dlcigpCiAgICAgICAgaWYgZXh0IGluIHNlbGYuZXh0ZW5zaW9uc19tYXA6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmV4dGVuc2lvbnNfbWFwW2V4dF0KICAgICAgICBndWVzcywgXyA9IG1pbWV0eXBlcy5ndWVzc190eXBlKHBhdGgpCiAgICAgICAgaWYgZ3Vlc3M6CiAgICAgICAgICAgIHJldHVybiBndWVzcwogICAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJwoKCiMgVXRpbGl0aWVzIGZvciBDR0lIVFRQUmVxdWVzdEhhbmRsZXIKCmRlZiBfdXJsX2NvbGxhcHNlX3BhdGgocGF0aCk6CiAgICAiIiIKICAgIEdpdmVuIGEgVVJMIHBhdGgsIHJlbW92ZSBleHRyYSAnLydzIGFuZCAnLicgcGF0aCBlbGVtZW50cyBhbmQgY29sbGFwc2UKICAgIGFueSAnLi4nIHJlZmVyZW5jZXMgYW5kIHJldHVybnMgYSBjb2xsYXBzZWQgcGF0aC4KCiAgICBJbXBsZW1lbnRzIHNvbWV0aGluZyBha2luIHRvIFJGQy0yMzk2IDUuMiBzdGVwIDYgdG8gcGFyc2UgcmVsYXRpdmUgcGF0aHMuCiAgICBUaGUgdXRpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIGxpbWl0ZWQgdG8gaXNfY2dpIG1ldGhvZCBhbmQgaGVscHMKICAgIHByZXZlbnRpbmcgc29tZSBzZWN1cml0eSBhdHRhY2tzLgoKICAgIFJldHVybnM6IFRoZSByZWNvbnN0aXR1dGVkIFVSTCwgd2hpY2ggd2lsbCBhbHdheXMgc3RhcnQgd2l0aCBhICcvJy4KCiAgICBSYWlzZXM6IEluZGV4RXJyb3IgaWYgdG9vIG1hbnkgJy4uJyBvY2N1ciB3aXRoaW4gdGhlIHBhdGguCgogICAgIiIiCiAgICAjIFF1ZXJ5IGNvbXBvbmVudCBzaG91bGQgbm90IGJlIGludm9sdmVkLgogICAgcGF0aCwgXywgcXVlcnkgPSBwYXRoLnBhcnRpdGlvbignPycpCiAgICBwYXRoID0gdXJsbGliLnBhcnNlLnVucXVvdGUocGF0aCkKCiAgICAjIFNpbWlsYXIgdG8gb3MucGF0aC5zcGxpdChvcy5wYXRoLm5vcm1wYXRoKHBhdGgpKSBidXQgc3BlY2lmaWMgdG8gVVJMCiAgICAjIHBhdGggc2VtYW50aWNzIHJhdGhlciB0aGFuIGxvY2FsIG9wZXJhdGluZyBzeXN0ZW0gc2VtYW50aWNzLgogICAgcGF0aF9wYXJ0cyA9IHBhdGguc3BsaXQoJy8nKQogICAgaGVhZF9wYXJ0cyA9IFtdCiAgICBmb3IgcGFydCBpbiBwYXRoX3BhcnRzWzotMV06CiAgICAgICAgaWYgcGFydCA9PSAnLi4nOgogICAgICAgICAgICBoZWFkX3BhcnRzLnBvcCgpICMgSW5kZXhFcnJvciBpZiBtb3JlICcuLicgdGhhbiBwcmlvciBwYXJ0cwogICAgICAgIGVsaWYgcGFydCBhbmQgcGFydCAhPSAnLic6CiAgICAgICAgICAgIGhlYWRfcGFydHMuYXBwZW5kKCBwYXJ0ICkKICAgIGlmIHBhdGhfcGFydHM6CiAgICAgICAgdGFpbF9wYXJ0ID0gcGF0aF9wYXJ0cy5wb3AoKQogICAgICAgIGlmIHRhaWxfcGFydDoKICAgICAgICAgICAgaWYgdGFpbF9wYXJ0ID09ICcuLic6CiAgICAgICAgICAgICAgICBoZWFkX3BhcnRzLnBvcCgpCiAgICAgICAgICAgICAgICB0YWlsX3BhcnQgPSAnJwogICAgICAgICAgICBlbGlmIHRhaWxfcGFydCA9PSAnLic6CiAgICAgICAgICAgICAgICB0YWlsX3BhcnQgPSAnJwogICAgZWxzZToKICAgICAgICB0YWlsX3BhcnQgPSAnJwoKICAgIGlmIHF1ZXJ5OgogICAgICAgIHRhaWxfcGFydCA9ICc/Jy5qb2luKCh0YWlsX3BhcnQsIHF1ZXJ5KSkKCiAgICBzcGxpdHBhdGggPSAoJy8nICsgJy8nLmpvaW4oaGVhZF9wYXJ0cyksIHRhaWxfcGFydCkKICAgIGNvbGxhcHNlZF9wYXRoID0gIi8iLmpvaW4oc3BsaXRwYXRoKQoKICAgIHJldHVybiBjb2xsYXBzZWRfcGF0aAoKCgpub2JvZHkgPSBOb25lCgpkZWYgbm9ib2R5X3VpZCgpOgogICAgIiIiSW50ZXJuYWwgcm91dGluZSB0byBnZXQgbm9ib2R5J3MgdWlkIiIiCiAgICBnbG9iYWwgbm9ib2R5CiAgICBpZiBub2JvZHk6CiAgICAgICAgcmV0dXJuIG5vYm9keQogICAgdHJ5OgogICAgICAgIGltcG9ydCBwd2QKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICByZXR1cm4gLTEKICAgIHRyeToKICAgICAgICBub2JvZHkgPSBwd2QuZ2V0cHduYW0oJ25vYm9keScpWzJdCiAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgbm9ib2R5ID0gMSArIG1heCh4WzJdIGZvciB4IGluIHB3ZC5nZXRwd2FsbCgpKQogICAgcmV0dXJuIG5vYm9keQoKCmRlZiBleGVjdXRhYmxlKHBhdGgpOgogICAgIiIiVGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlLiIiIgogICAgcmV0dXJuIG9zLmFjY2VzcyhwYXRoLCBvcy5YX09LKQoKCmNsYXNzIENHSUhUVFBSZXF1ZXN0SGFuZGxlcihTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpOgoKICAgICIiIkNvbXBsZXRlIEhUVFAgc2VydmVyIHdpdGggR0VULCBIRUFEIGFuZCBQT1NUIGNvbW1hbmRzLgoKICAgIEdFVCBhbmQgSEVBRCBhbHNvIHN1cHBvcnQgcnVubmluZyBDR0kgc2NyaXB0cy4KCiAgICBUaGUgUE9TVCBjb21tYW5kIGlzICpvbmx5KiBpbXBsZW1lbnRlZCBmb3IgQ0dJIHNjcmlwdHMuCgogICAgIiIiCgogICAgIyBEZXRlcm1pbmUgcGxhdGZvcm0gc3BlY2lmaWNzCiAgICBoYXZlX2ZvcmsgPSBoYXNhdHRyKG9zLCAnZm9yaycpCgogICAgIyBNYWtlIHJmaWxlIHVuYnVmZmVyZWQgLS0gd2UgbmVlZCB0byByZWFkIG9uZSBsaW5lIGFuZCB0aGVuIHBhc3MKICAgICMgdGhlIHJlc3QgdG8gYSBzdWJwcm9jZXNzLCBzbyB3ZSBjYW4ndCB1c2UgYnVmZmVyZWQgaW5wdXQuCiAgICByYnVmc2l6ZSA9IDAKCiAgICBkZWYgZG9fUE9TVChzZWxmKToKICAgICAgICAiIiJTZXJ2ZSBhIFBPU1QgcmVxdWVzdC4KCiAgICAgICAgVGhpcyBpcyBvbmx5IGltcGxlbWVudGVkIGZvciBDR0kgc2NyaXB0cy4KCiAgICAgICAgIiIiCgogICAgICAgIGlmIHNlbGYuaXNfY2dpKCk6CiAgICAgICAgICAgIHNlbGYucnVuX2NnaSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAogICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQsCiAgICAgICAgICAgICAgICAiQ2FuIG9ubHkgUE9TVCB0byBDR0kgc2NyaXB0cyIpCgogICAgZGVmIHNlbmRfaGVhZChzZWxmKToKICAgICAgICAiIiJWZXJzaW9uIG9mIHNlbmRfaGVhZCB0aGF0IHN1cHBvcnQgQ0dJIHNjcmlwdHMiIiIKICAgICAgICBpZiBzZWxmLmlzX2NnaSgpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5fY2dpKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyLnNlbmRfaGVhZChzZWxmKQoKICAgIGRlZiBpc19jZ2koc2VsZik6CiAgICAgICAgIiIiVGVzdCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNwb25kcyB0byBhIENHSSBzY3JpcHQuCgogICAgICAgIFJldHVybnMgVHJ1ZSBhbmQgdXBkYXRlcyB0aGUgY2dpX2luZm8gYXR0cmlidXRlIHRvIHRoZSB0dXBsZQogICAgICAgIChkaXIsIHJlc3QpIGlmIHNlbGYucGF0aCByZXF1aXJlcyBydW5uaW5nIGEgQ0dJIHNjcmlwdC4KICAgICAgICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KCiAgICAgICAgSWYgYW55IGV4Y2VwdGlvbiBpcyByYWlzZWQsIHRoZSBjYWxsZXIgc2hvdWxkIGFzc3VtZSB0aGF0CiAgICAgICAgc2VsZi5wYXRoIHdhcyByZWplY3RlZCBhcyBpbnZhbGlkIGFuZCBhY3QgYWNjb3JkaW5nbHkuCgogICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHRlc3RzIHdoZXRoZXIgdGhlIG5vcm1hbGl6ZWQgdXJsCiAgICAgICAgcGF0aCBiZWdpbnMgd2l0aCBvbmUgb2YgdGhlIHN0cmluZ3MgaW4gc2VsZi5jZ2lfZGlyZWN0b3JpZXMKICAgICAgICAoYW5kIHRoZSBuZXh0IGNoYXJhY3RlciBpcyBhICcvJyBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcpLgoKICAgICAgICAiIiIKICAgICAgICBjb2xsYXBzZWRfcGF0aCA9IF91cmxfY29sbGFwc2VfcGF0aChzZWxmLnBhdGgpCiAgICAgICAgZGlyX3NlcCA9IGNvbGxhcHNlZF9wYXRoLmZpbmQoJy8nLCAxKQogICAgICAgIHdoaWxlIGRpcl9zZXAgPiAwIGFuZCBub3QgY29sbGFwc2VkX3BhdGhbOmRpcl9zZXBdIGluIHNlbGYuY2dpX2RpcmVjdG9yaWVzOgogICAgICAgICAgICBkaXJfc2VwID0gY29sbGFwc2VkX3BhdGguZmluZCgnLycsIGRpcl9zZXArMSkKICAgICAgICBpZiBkaXJfc2VwID4gMDoKICAgICAgICAgICAgaGVhZCwgdGFpbCA9IGNvbGxhcHNlZF9wYXRoWzpkaXJfc2VwXSwgY29sbGFwc2VkX3BhdGhbZGlyX3NlcCsxOl0KICAgICAgICAgICAgc2VsZi5jZ2lfaW5mbyA9IGhlYWQsIHRhaWwKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gRmFsc2UKCgogICAgY2dpX2RpcmVjdG9yaWVzID0gWycvY2dpLWJpbicsICcvaHRiaW4nXQoKICAgIGRlZiBpc19leGVjdXRhYmxlKHNlbGYsIHBhdGgpOgogICAgICAgICIiIlRlc3Qgd2hldGhlciBhcmd1bWVudCBwYXRoIGlzIGFuIGV4ZWN1dGFibGUgZmlsZS4iIiIKICAgICAgICByZXR1cm4gZXhlY3V0YWJsZShwYXRoKQoKICAgIGRlZiBpc19weXRob24oc2VsZiwgcGF0aCk6CiAgICAgICAgIiIiVGVzdCB3aGV0aGVyIGFyZ3VtZW50IHBhdGggaXMgYSBQeXRob24gc2NyaXB0LiIiIgogICAgICAgIGhlYWQsIHRhaWwgPSBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAgICAgICAgcmV0dXJuIHRhaWwubG93ZXIoKSBpbiAoIi5weSIsICIucHl3IikKCiAgICBkZWYgcnVuX2NnaShzZWxmKToKICAgICAgICAiIiJFeGVjdXRlIGEgQ0dJIHNjcmlwdC4iIiIKICAgICAgICBkaXIsIHJlc3QgPSBzZWxmLmNnaV9pbmZvCiAgICAgICAgcGF0aCA9IGRpciArICcvJyArIHJlc3QKICAgICAgICBpID0gcGF0aC5maW5kKCcvJywgbGVuKGRpcikrMSkKICAgICAgICB3aGlsZSBpID49IDA6CiAgICAgICAgICAgIG5leHRkaXIgPSBwYXRoWzppXQogICAgICAgICAgICBuZXh0cmVzdCA9IHBhdGhbaSsxOl0KCiAgICAgICAgICAgIHNjcmlwdGRpciA9IHNlbGYudHJhbnNsYXRlX3BhdGgobmV4dGRpcikKICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzY3JpcHRkaXIpOgogICAgICAgICAgICAgICAgZGlyLCByZXN0ID0gbmV4dGRpciwgbmV4dHJlc3QKICAgICAgICAgICAgICAgIGkgPSBwYXRoLmZpbmQoJy8nLCBsZW4oZGlyKSsxKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgIyBmaW5kIGFuIGV4cGxpY2l0IHF1ZXJ5IHN0cmluZywgaWYgcHJlc2VudC4KICAgICAgICByZXN0LCBfLCBxdWVyeSA9IHJlc3QucGFydGl0aW9uKCc/JykKCiAgICAgICAgIyBkaXNzZWN0IHRoZSBwYXJ0IGFmdGVyIHRoZSBkaXJlY3RvcnkgbmFtZSBpbnRvIGEgc2NyaXB0IG5hbWUgJgogICAgICAgICMgYSBwb3NzaWJsZSBhZGRpdGlvbmFsIHBhdGgsIHRvIGJlIHN0b3JlZCBpbiBQQVRIX0lORk8uCiAgICAgICAgaSA9IHJlc3QuZmluZCgnLycpCiAgICAgICAgaWYgaSA+PSAwOgogICAgICAgICAgICBzY3JpcHQsIHJlc3QgPSByZXN0WzppXSwgcmVzdFtpOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICBzY3JpcHQsIHJlc3QgPSByZXN0LCAnJwoKICAgICAgICBzY3JpcHRuYW1lID0gZGlyICsgJy8nICsgc2NyaXB0CiAgICAgICAgc2NyaXB0ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgoc2NyaXB0bmFtZSkKICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2NyaXB0ZmlsZSk6CiAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0ZPVU5ELAogICAgICAgICAgICAgICAgIk5vIHN1Y2ggQ0dJIHNjcmlwdCAoJXIpIiAlIHNjcmlwdG5hbWUpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAogICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5GT1JCSURERU4sCiAgICAgICAgICAgICAgICAiQ0dJIHNjcmlwdCBpcyBub3QgYSBwbGFpbiBmaWxlICglcikiICUgc2NyaXB0bmFtZSkKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaXNweSA9IHNlbGYuaXNfcHl0aG9uKHNjcmlwdG5hbWUpCiAgICAgICAgaWYgc2VsZi5oYXZlX2Zvcmsgb3Igbm90IGlzcHk6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6CiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCiAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5GT1JCSURERU4sCiAgICAgICAgICAgICAgICAgICAgIkNHSSBzY3JpcHQgaXMgbm90IGV4ZWN1dGFibGUgKCVyKSIgJSBzY3JpcHRuYW1lKQogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgUmVmZXJlbmNlOiBodHRwOi8vaG9vaG9vLm5jc2EudWl1Yy5lZHUvY2dpL2Vudi5odG1sCiAgICAgICAgIyBYWFggTXVjaCBvZiB0aGUgZm9sbG93aW5nIGNvdWxkIGJlIHByZXBhcmVkIGFoZWFkIG9mIHRpbWUhCiAgICAgICAgZW52ID0gY29weS5kZWVwY29weShvcy5lbnZpcm9uKQogICAgICAgIGVudlsnU0VSVkVSX1NPRlRXQVJFJ10gPSBzZWxmLnZlcnNpb25fc3RyaW5nKCkKICAgICAgICBlbnZbJ1NFUlZFUl9OQU1FJ10gPSBzZWxmLnNlcnZlci5zZXJ2ZXJfbmFtZQogICAgICAgIGVudlsnR0FURVdBWV9JTlRFUkZBQ0UnXSA9ICdDR0kvMS4xJwogICAgICAgIGVudlsnU0VSVkVSX1BST1RPQ09MJ10gPSBzZWxmLnByb3RvY29sX3ZlcnNpb24KICAgICAgICBlbnZbJ1NFUlZFUl9QT1JUJ10gPSBzdHIoc2VsZi5zZXJ2ZXIuc2VydmVyX3BvcnQpCiAgICAgICAgZW52WydSRVFVRVNUX01FVEhPRCddID0gc2VsZi5jb21tYW5kCiAgICAgICAgdXFyZXN0ID0gdXJsbGliLnBhcnNlLnVucXVvdGUocmVzdCkKICAgICAgICBlbnZbJ1BBVEhfSU5GTyddID0gdXFyZXN0CiAgICAgICAgZW52WydQQVRIX1RSQU5TTEFURUQnXSA9IHNlbGYudHJhbnNsYXRlX3BhdGgodXFyZXN0KQogICAgICAgIGVudlsnU0NSSVBUX05BTUUnXSA9IHNjcmlwdG5hbWUKICAgICAgICBlbnZbJ1FVRVJZX1NUUklORyddID0gcXVlcnkKICAgICAgICBlbnZbJ1JFTU9URV9BRERSJ10gPSBzZWxmLmNsaWVudF9hZGRyZXNzWzBdCiAgICAgICAgYXV0aG9yaXphdGlvbiA9IHNlbGYuaGVhZGVycy5nZXQoImF1dGhvcml6YXRpb24iKQogICAgICAgIGlmIGF1dGhvcml6YXRpb246CiAgICAgICAgICAgIGF1dGhvcml6YXRpb24gPSBhdXRob3JpemF0aW9uLnNwbGl0KCkKICAgICAgICAgICAgaWYgbGVuKGF1dGhvcml6YXRpb24pID09IDI6CiAgICAgICAgICAgICAgICBpbXBvcnQgYmFzZTY0LCBiaW5hc2NpaQogICAgICAgICAgICAgICAgZW52WydBVVRIX1RZUEUnXSA9IGF1dGhvcml6YXRpb25bMF0KICAgICAgICAgICAgICAgIGlmIGF1dGhvcml6YXRpb25bMF0ubG93ZXIoKSA9PSAiYmFzaWMiOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXphdGlvbiA9IGF1dGhvcml6YXRpb25bMV0uZW5jb2RlKCdhc2NpaScpCiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcml6YXRpb24gPSBiYXNlNjQuZGVjb2RlYnl0ZXMoYXV0aG9yaXphdGlvbikuXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlKCdhc2NpaScpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChiaW5hc2NpaS5FcnJvciwgVW5pY29kZUVycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcml6YXRpb24gPSBhdXRob3JpemF0aW9uLnNwbGl0KCc6JykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGF1dGhvcml6YXRpb24pID09IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZbJ1JFTU9URV9VU0VSJ10gPSBhdXRob3JpemF0aW9uWzBdCiAgICAgICAgIyBYWFggUkVNT1RFX0lERU5UCiAgICAgICAgaWYgc2VsZi5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykgaXMgTm9uZToKICAgICAgICAgICAgZW52WydDT05URU5UX1RZUEUnXSA9IHNlbGYuaGVhZGVycy5nZXRfY29udGVudF90eXBlKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbnZbJ0NPTlRFTlRfVFlQRSddID0gc2VsZi5oZWFkZXJzWydjb250ZW50LXR5cGUnXQogICAgICAgIGxlbmd0aCA9IHNlbGYuaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJykKICAgICAgICBpZiBsZW5ndGg6CiAgICAgICAgICAgIGVudlsnQ09OVEVOVF9MRU5HVEgnXSA9IGxlbmd0aAogICAgICAgIHJlZmVyZXIgPSBzZWxmLmhlYWRlcnMuZ2V0KCdyZWZlcmVyJykKICAgICAgICBpZiByZWZlcmVyOgogICAgICAgICAgICBlbnZbJ0hUVFBfUkVGRVJFUiddID0gcmVmZXJlcgogICAgICAgIGFjY2VwdCA9IHNlbGYuaGVhZGVycy5nZXRfYWxsKCdhY2NlcHQnLCAoKSkKICAgICAgICBlbnZbJ0hUVFBfQUNDRVBUJ10gPSAnLCcuam9pbihhY2NlcHQpCiAgICAgICAgdWEgPSBzZWxmLmhlYWRlcnMuZ2V0KCd1c2VyLWFnZW50JykKICAgICAgICBpZiB1YToKICAgICAgICAgICAgZW52WydIVFRQX1VTRVJfQUdFTlQnXSA9IHVhCiAgICAgICAgY28gPSBmaWx0ZXIoTm9uZSwgc2VsZi5oZWFkZXJzLmdldF9hbGwoJ2Nvb2tpZScsIFtdKSkKICAgICAgICBjb29raWVfc3RyID0gJywgJy5qb2luKGNvKQogICAgICAgIGlmIGNvb2tpZV9zdHI6CiAgICAgICAgICAgIGVudlsnSFRUUF9DT09LSUUnXSA9IGNvb2tpZV9zdHIKICAgICAgICAjIFhYWCBPdGhlciBIVFRQXyogaGVhZGVycwogICAgICAgICMgU2luY2Ugd2UncmUgc2V0dGluZyB0aGUgZW52IGluIHRoZSBwYXJlbnQsIHByb3ZpZGUgZW1wdHkKICAgICAgICAjIHZhbHVlcyB0byBvdmVycmlkZSBwcmV2aW91c2x5IHNldCB2YWx1ZXMKICAgICAgICBmb3IgayBpbiAoJ1FVRVJZX1NUUklORycsICdSRU1PVEVfSE9TVCcsICdDT05URU5UX0xFTkdUSCcsCiAgICAgICAgICAgICAgICAgICdIVFRQX1VTRVJfQUdFTlQnLCAnSFRUUF9DT09LSUUnLCAnSFRUUF9SRUZFUkVSJyk6CiAgICAgICAgICAgIGVudi5zZXRkZWZhdWx0KGssICIiKQoKICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSywgIlNjcmlwdCBvdXRwdXQgZm9sbG93cyIpCiAgICAgICAgc2VsZi5mbHVzaF9oZWFkZXJzKCkKCiAgICAgICAgZGVjb2RlZF9xdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoJysnLCAnICcpCgogICAgICAgIGlmIHNlbGYuaGF2ZV9mb3JrOgogICAgICAgICAgICAjIFVuaXggLS0gZm9yayBhcyB3ZSBzaG91bGQKICAgICAgICAgICAgYXJncyA9IFtzY3JpcHRdCiAgICAgICAgICAgIGlmICc9JyBub3QgaW4gZGVjb2RlZF9xdWVyeToKICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGRlY29kZWRfcXVlcnkpCiAgICAgICAgICAgIG5vYm9keSA9IG5vYm9keV91aWQoKQogICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkgIyBBbHdheXMgZmx1c2ggYmVmb3JlIGZvcmtpbmcKICAgICAgICAgICAgcGlkID0gb3MuZm9yaygpCiAgICAgICAgICAgIGlmIHBpZCAhPSAwOgogICAgICAgICAgICAgICAgIyBQYXJlbnQKICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gb3Mud2FpdHBpZChwaWQsIDApCiAgICAgICAgICAgICAgICAjIHRocm93IGF3YXkgYWRkaXRpb25hbCBkYXRhIFtzZWUgYnVnICM0MjczNDVdCiAgICAgICAgICAgICAgICB3aGlsZSBzZWxlY3Quc2VsZWN0KFtzZWxmLnJmaWxlXSwgW10sIFtdLCAwKVswXToKICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5yZmlsZS5yZWFkKDEpOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBvcy53YWl0c3RhdHVzX3RvX2V4aXRjb2RlKHN0cykKICAgICAgICAgICAgICAgIGlmIGV4aXRjb2RlOgogICAgICAgICAgICAgICAgICAgIHNlbGYubG9nX2Vycm9yKGYiQ0dJIHNjcmlwdCBleGl0IGNvZGUge2V4aXRjb2RlfSIpCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIyBDaGlsZAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgb3Muc2V0dWlkKG5vYm9keSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIG9zLmR1cDIoc2VsZi5yZmlsZS5maWxlbm8oKSwgMCkKICAgICAgICAgICAgICAgIG9zLmR1cDIoc2VsZi53ZmlsZS5maWxlbm8oKSwgMSkKICAgICAgICAgICAgICAgIG9zLmV4ZWN2ZShzY3JpcHRmaWxlLCBhcmdzLCBlbnYpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLmhhbmRsZV9lcnJvcihzZWxmLnJlcXVlc3QsIHNlbGYuY2xpZW50X2FkZHJlc3MpCiAgICAgICAgICAgICAgICBvcy5fZXhpdCgxMjcpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgTm9uLVVuaXggLS0gdXNlIHN1YnByb2Nlc3MKICAgICAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKICAgICAgICAgICAgY21kbGluZSA9IFtzY3JpcHRmaWxlXQogICAgICAgICAgICBpZiBzZWxmLmlzX3B5dGhvbihzY3JpcHRmaWxlKToKICAgICAgICAgICAgICAgIGludGVycCA9IHN5cy5leGVjdXRhYmxlCiAgICAgICAgICAgICAgICBpZiBpbnRlcnAubG93ZXIoKS5lbmRzd2l0aCgidy5leGUiKToKICAgICAgICAgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIHVzZSBweXRob24uZXhlLCBub3QgcHl0aG9udy5leGUKICAgICAgICAgICAgICAgICAgICBpbnRlcnAgPSBpbnRlcnBbOi01XSArIGludGVycFstNDpdCiAgICAgICAgICAgICAgICBjbWRsaW5lID0gW2ludGVycCwgJy11J10gKyBjbWRsaW5lCiAgICAgICAgICAgIGlmICc9JyBub3QgaW4gcXVlcnk6CiAgICAgICAgICAgICAgICBjbWRsaW5lLmFwcGVuZChxdWVyeSkKICAgICAgICAgICAgc2VsZi5sb2dfbWVzc2FnZSgiY29tbWFuZDogJXMiLCBzdWJwcm9jZXNzLmxpc3QyY21kbGluZShjbWRsaW5lKSkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbmJ5dGVzID0gaW50KGxlbmd0aCkKICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgbmJ5dGVzID0gMAogICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWRsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudiA9IGVudgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlmIHNlbGYuY29tbWFuZC5sb3dlcigpID09ICJwb3N0IiBhbmQgbmJ5dGVzID4gMDoKICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJmaWxlLnJlYWQobmJ5dGVzKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZGF0YSA9IE5vbmUKICAgICAgICAgICAgIyB0aHJvdyBhd2F5IGFkZGl0aW9uYWwgZGF0YSBbc2VlIGJ1ZyAjNDI3MzQ1XQogICAgICAgICAgICB3aGlsZSBzZWxlY3Quc2VsZWN0KFtzZWxmLnJmaWxlLl9zb2NrXSwgW10sIFtdLCAwKVswXToKICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJmaWxlLl9zb2NrLnJlY3YoMSk6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKGRhdGEpCiAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoc3Rkb3V0KQogICAgICAgICAgICBpZiBzdGRlcnI6CiAgICAgICAgICAgICAgICBzZWxmLmxvZ19lcnJvcignJXMnLCBzdGRlcnIpCiAgICAgICAgICAgIHAuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgICAgcC5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICBzdGF0dXMgPSBwLnJldHVybmNvZGUKICAgICAgICAgICAgaWYgc3RhdHVzOgogICAgICAgICAgICAgICAgc2VsZi5sb2dfZXJyb3IoIkNHSSBzY3JpcHQgZXhpdCBzdGF0dXMgJSN4Iiwgc3RhdHVzKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5sb2dfbWVzc2FnZSgiQ0dJIHNjcmlwdCBleGl0ZWQgT0siKQoKCmRlZiBfZ2V0X2Jlc3RfZmFtaWx5KCphZGRyZXNzKToKICAgIGluZm9zID0gc29ja2V0LmdldGFkZHJpbmZvKAogICAgICAgICphZGRyZXNzLAogICAgICAgIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNLAogICAgICAgIGZsYWdzPXNvY2tldC5BSV9QQVNTSVZFLAogICAgKQogICAgZmFtaWx5LCB0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzb2NrYWRkciA9IG5leHQoaXRlcihpbmZvcykpCiAgICByZXR1cm4gZmFtaWx5LCBzb2NrYWRkcgoKCmRlZiB0ZXN0KEhhbmRsZXJDbGFzcz1CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLAogICAgICAgICBTZXJ2ZXJDbGFzcz1UaHJlYWRpbmdIVFRQU2VydmVyLAogICAgICAgICBwcm90b2NvbD0iSFRUUC8xLjAiLCBwb3J0PTgwMDAsIGJpbmQ9Tm9uZSk6CiAgICAiIiJUZXN0IHRoZSBIVFRQIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4KCiAgICBUaGlzIHJ1bnMgYW4gSFRUUCBzZXJ2ZXIgb24gcG9ydCA4MDAwIChvciB0aGUgcG9ydCBhcmd1bWVudCkuCgogICAgIiIiCiAgICBTZXJ2ZXJDbGFzcy5hZGRyZXNzX2ZhbWlseSwgYWRkciA9IF9nZXRfYmVzdF9mYW1pbHkoYmluZCwgcG9ydCkKICAgIEhhbmRsZXJDbGFzcy5wcm90b2NvbF92ZXJzaW9uID0gcHJvdG9jb2wKICAgIHdpdGggU2VydmVyQ2xhc3MoYWRkciwgSGFuZGxlckNsYXNzKSBhcyBodHRwZDoKICAgICAgICBob3N0LCBwb3J0ID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCiAgICAgICAgdXJsX2hvc3QgPSBmJ1t7aG9zdH1dJyBpZiAnOicgaW4gaG9zdCBlbHNlIGhvc3QKICAgICAgICBwcmludCgKICAgICAgICAgICAgZiJTZXJ2aW5nIEhUVFAgb24ge2hvc3R9IHBvcnQge3BvcnR9ICIKICAgICAgICAgICAgZiIoaHR0cDovL3t1cmxfaG9zdH06e3BvcnR9LykgLi4uIgogICAgICAgICkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCiAgICAgICAgICAgIHN5cy5leGl0KDApCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgaW1wb3J0IGFyZ3BhcnNlCiAgICBpbXBvcnQgY29udGV4dGxpYgoKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2dpJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIGFzIENHSSBzZXJ2ZXInKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1iaW5kJywgbWV0YXZhcj0nQUREUkVTUycsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2JpbmQgdG8gdGhpcyBhZGRyZXNzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGRlZmF1bHQ6IGFsbCBpbnRlcmZhY2VzKScpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsICctLWRpcmVjdG9yeScsIGRlZmF1bHQ9b3MuZ2V0Y3dkKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZlIHRoaXMgZGlyZWN0b3J5ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGRlZmF1bHQ6IGN1cnJlbnQgZGlyZWN0b3J5KScpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcCcsICctLXByb3RvY29sJywgbWV0YXZhcj0nVkVSU0lPTicsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J0hUVFAvMS4wJywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY29uZm9ybSB0byB0aGlzIEhUVFAgdmVyc2lvbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0OiAlKGRlZmF1bHQpcyknKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgncG9ydCcsIGRlZmF1bHQ9ODAwMCwgdHlwZT1pbnQsIG5hcmdzPSc/JywKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nYmluZCB0byB0aGlzIHBvcnQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZGVmYXVsdDogJShkZWZhdWx0KXMpJykKICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCiAgICBpZiBhcmdzLmNnaToKICAgICAgICBoYW5kbGVyX2NsYXNzID0gQ0dJSFRUUFJlcXVlc3RIYW5kbGVyCiAgICBlbHNlOgogICAgICAgIGhhbmRsZXJfY2xhc3MgPSBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIKCiAgICAjIGVuc3VyZSBkdWFsLXN0YWNrIGlzIG5vdCBkaXNhYmxlZDsgcmVmICMzODkwNwogICAgY2xhc3MgRHVhbFN0YWNrU2VydmVyKFRocmVhZGluZ0hUVFBTZXJ2ZXIpOgoKICAgICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CiAgICAgICAgICAgICMgc3VwcHJlc3MgZXhjZXB0aW9uIHdoZW4gcHJvdG9jb2wgaXMgSVB2NAogICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuc3VwcHJlc3MoRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNldHNvY2tvcHQoCiAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVjZPTkxZLCAwKQogICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5zZXJ2ZXJfYmluZCgpCgogICAgICAgIGRlZiBmaW5pc2hfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgIHNlbGYuUmVxdWVzdEhhbmRsZXJDbGFzcyhyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywgc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeT1hcmdzLmRpcmVjdG9yeSkKCiAgICB0ZXN0KAogICAgICAgIEhhbmRsZXJDbGFzcz1oYW5kbGVyX2NsYXNzLAogICAgICAgIFNlcnZlckNsYXNzPUR1YWxTdGFja1NlcnZlciwKICAgICAgICBwb3J0PWFyZ3MucG9ydCwKICAgICAgICBiaW5kPWFyZ3MuYmluZCwKICAgICAgICBwcm90b2NvbD1hcmdzLnByb3RvY29sLAogICAgKQpQSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAABQAAABpbXBvcnRsaWIvcmVzb3VyY2VzL1BLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAAEwAAAGltcG9ydGxpYi9tZXRhZGF0YS9QSwMEFAAAAAAAAyCjVl38ZSPJFwAAyRcAABUAAABpbXBvcnRsaWIvX19pbml0X18ucHkiIiJBIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKX19hbGxfXyA9IFsnX19pbXBvcnRfXycsICdpbXBvcnRfbW9kdWxlJywgJ2ludmFsaWRhdGVfY2FjaGVzJywgJ3JlbG9hZCddCgojIEJvb3RzdHJhcCBoZWxwICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIFVudGlsIGJvb3RzdHJhcHBpbmcgaXMgY29tcGxldGUsIERPIE5PVCBpbXBvcnQgYW55IG1vZHVsZXMgdGhhdCBhdHRlbXB0CiMgdG8gaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KS4gU2luY2UgdGhpcwojIHBhcnRpYWxseSBpbml0aWFsaXNlZCBwYWNrYWdlIHdvdWxkIGJlIHByZXNlbnQgaW4gc3lzLm1vZHVsZXMsIHRob3NlCiMgbW9kdWxlcyB3b3VsZCBnZXQgYW4gdW5pbml0aWFsaXNlZCBjb3B5IG9mIHRoZSBzb3VyY2UgdmVyc2lvbiwgaW5zdGVhZAojIG9mIGEgZnVsbHkgaW5pdGlhbGlzZWQgdmVyc2lvbiAoZWl0aGVyIHRoZSBmcm96ZW4gb25lIG9yIHRoZSBvbmUKIyBpbml0aWFsaXNlZCBiZWxvdyBpZiB0aGUgZnJvemVuIG9uZSBpcyBub3QgYXZhaWxhYmxlKS4KaW1wb3J0IF9pbXAgICMgSnVzdCB0aGUgYnVpbHRpbiBjb21wb25lbnQsIE5PVCB0aGUgZnVsbCBQeXRob24gbW9kdWxlCmltcG9ydCBzeXMKCnRyeToKICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiBhcyBfYm9vdHN0cmFwCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcAogICAgX2Jvb3RzdHJhcC5fc2V0dXAoc3lzLCBfaW1wKQplbHNlOgogICAgIyBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpcyB0aGUgYnVpbHQtaW4gaW1wb3J0LCBlbnN1cmUgd2UgZG9uJ3QgY3JlYXRlCiAgICAjIGEgc2Vjb25kIGNvcHkgb2YgdGhlIG1vZHVsZS4KICAgIF9ib290c3RyYXAuX19uYW1lX18gPSAnaW1wb3J0bGliLl9ib290c3RyYXAnCiAgICBfYm9vdHN0cmFwLl9fcGFja2FnZV9fID0gJ2ltcG9ydGxpYicKICAgIHRyeToKICAgICAgICBfYm9vdHN0cmFwLl9fZmlsZV9fID0gX19maWxlX18ucmVwbGFjZSgnX19pbml0X18ucHknLCAnX2Jvb3RzdHJhcC5weScpCiAgICBleGNlcHQgTmFtZUVycm9yOgogICAgICAgICMgX19maWxlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCwgZS5nLiBpZiB0aGlzIGNvZGUgZ2V0cwogICAgICAgICMgZnJvemVuIGJ5IGEgdG9vbCBsaWtlIGN4X0ZyZWV6ZS4KICAgICAgICBwYXNzCiAgICBzeXMubW9kdWxlc1snaW1wb3J0bGliLl9ib290c3RyYXAnXSA9IF9ib290c3RyYXAKCnRyeToKICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCBhcyBfYm9vdHN0cmFwX2V4dGVybmFsCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAogICAgX2Jvb3RzdHJhcF9leHRlcm5hbC5fc2V0X2Jvb3RzdHJhcF9tb2R1bGUoX2Jvb3RzdHJhcCkKICAgIF9ib290c3RyYXAuX2Jvb3RzdHJhcF9leHRlcm5hbCA9IF9ib290c3RyYXBfZXh0ZXJuYWwKZWxzZToKICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX19uYW1lX18gPSAnaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwnCiAgICBfYm9vdHN0cmFwX2V4dGVybmFsLl9fcGFja2FnZV9fID0gJ2ltcG9ydGxpYicKICAgIHRyeToKICAgICAgICBfYm9vdHN0cmFwX2V4dGVybmFsLl9fZmlsZV9fID0gX19maWxlX18ucmVwbGFjZSgnX19pbml0X18ucHknLCAnX2Jvb3RzdHJhcF9leHRlcm5hbC5weScpCiAgICBleGNlcHQgTmFtZUVycm9yOgogICAgICAgICMgX19maWxlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCwgZS5nLiBpZiB0aGlzIGNvZGUgZ2V0cwogICAgICAgICMgZnJvemVuIGJ5IGEgdG9vbCBsaWtlIGN4X0ZyZWV6ZS4KICAgICAgICBwYXNzCiAgICBzeXMubW9kdWxlc1snaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwnXSA9IF9ib290c3RyYXBfZXh0ZXJuYWwKCiMgVG8gc2ltcGxpZnkgaW1wb3J0cyBpbiB0ZXN0IGNvZGUKX3BhY2tfdWludDMyID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fcGFja191aW50MzIKX3VucGFja191aW50MzIgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl91bnBhY2tfdWludDMyCgojIEZ1bGx5IGJvb3RzdHJhcHBlZCBhdCB0aGlzIHBvaW50LCBpbXBvcnQgd2hhdGV2ZXIgeW91IGxpa2UsIGNpcmN1bGFyCiMgZGVwZW5kZW5jaWVzIGFuZCBzdGFydHVwIG92ZXJoZWFkIG1pbmltaXNhdGlvbiBwZXJtaXR0aW5nIDopCgppbXBvcnQgd2FybmluZ3MKCgojIFB1YmxpYyBBUEkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBfX2ltcG9ydF9fCgoKZGVmIGludmFsaWRhdGVfY2FjaGVzKCk6CiAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgbWV0YSBwYXRoIGZpbmRlcnMgc3RvcmVkIGluCiAgICBzeXMubWV0YV9wYXRoICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCiAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CiAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdpbnZhbGlkYXRlX2NhY2hlcycpOgogICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQoKCmRlZiBmaW5kX2xvYWRlcihuYW1lLCBwYXRoPU5vbmUpOgogICAgIiIiUmV0dXJuIHRoZSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLgoKICAgIFRoaXMgaXMgYSBiYWNrd2FyZC1jb21wYXRpYmxlIHdyYXBwZXIgYXJvdW5kIGZpbmRfc3BlYygpLgoKICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMoKS4KCiAgICAiIiIKICAgIHdhcm5pbmdzLndhcm4oJ0RlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuNCBhbmQgc2xhdGVkIGZvciByZW1vdmFsIGluICcKICAgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLjEyOyB1c2UgaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKCkgaW5zdGVhZCcsCiAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgdHJ5OgogICAgICAgIGxvYWRlciA9IHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18KICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19sb2FkZXJfXyBpcyBOb25lJy5mb3JtYXQobmFtZSkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHBhc3MKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX2xvYWRlcl9fIGlzIG5vdCBzZXQnLmZvcm1hdChuYW1lKSkgZnJvbSBOb25lCgogICAgc3BlYyA9IF9ib290c3RyYXAuX2ZpbmRfc3BlYyhuYW1lLCBwYXRoKQogICAgIyBXZSB3b24ndCB3b3JyeSBhYm91dCBtYWxmb3JtZWQgc3BlY3MgKG1pc3NpbmcgYXR0cmlidXRlcykuCiAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIGlmIHNwZWMubG9hZGVyIGlzIE5vbmU6CiAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignc3BlYyBmb3Ige30gbWlzc2luZyBsb2FkZXInLmZvcm1hdChuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1uYW1lKQogICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCduYW1lc3BhY2UgcGFja2FnZXMgZG8gbm90IGhhdmUgbG9hZGVycycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1uYW1lKQogICAgcmV0dXJuIHNwZWMubG9hZGVyCgoKZGVmIGltcG9ydF9tb2R1bGUobmFtZSwgcGFja2FnZT1Ob25lKToKICAgICIiIkltcG9ydCBhIG1vZHVsZS4KCiAgICBUaGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGlzIHJlcXVpcmVkIHdoZW4gcGVyZm9ybWluZyBhIHJlbGF0aXZlIGltcG9ydC4gSXQKICAgIHNwZWNpZmllcyB0aGUgcGFja2FnZSB0byB1c2UgYXMgdGhlIGFuY2hvciBwb2ludCBmcm9tIHdoaWNoIHRvIHJlc29sdmUgdGhlCiAgICByZWxhdGl2ZSBpbXBvcnQgdG8gYW4gYWJzb2x1dGUgaW1wb3J0LgoKICAgICIiIgogICAgbGV2ZWwgPSAwCiAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJy4nKToKICAgICAgICBpZiBub3QgcGFja2FnZToKICAgICAgICAgICAgbXNnID0gKCJ0aGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGlzIHJlcXVpcmVkIHRvIHBlcmZvcm0gYSByZWxhdGl2ZSAiCiAgICAgICAgICAgICAgICAgICAiaW1wb3J0IGZvciB7IXJ9IikKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZy5mb3JtYXQobmFtZSkpCiAgICAgICAgZm9yIGNoYXJhY3RlciBpbiBuYW1lOgogICAgICAgICAgICBpZiBjaGFyYWN0ZXIgIT0gJy4nOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgbGV2ZWwgKz0gMQogICAgcmV0dXJuIF9ib290c3RyYXAuX2djZF9pbXBvcnQobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKCgpfUkVMT0FESU5HID0ge30KCgpkZWYgcmVsb2FkKG1vZHVsZSk6CiAgICAiIiJSZWxvYWQgdGhlIG1vZHVsZSBhbmQgcmV0dXJuIGl0LgoKICAgIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGJlZm9yZS4KCiAgICAiIiIKICAgIHRyeToKICAgICAgICBuYW1lID0gbW9kdWxlLl9fc3BlY19fLm5hbWUKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICB0cnk6CiAgICAgICAgICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicmVsb2FkKCkgYXJndW1lbnQgbXVzdCBiZSBhIG1vZHVsZSIpCgogICAgaWYgc3lzLm1vZHVsZXMuZ2V0KG5hbWUpIGlzIG5vdCBtb2R1bGU6CiAgICAgICAgbXNnID0gIm1vZHVsZSB7fSBub3QgaW4gc3lzLm1vZHVsZXMiCiAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQogICAgaWYgbmFtZSBpbiBfUkVMT0FESU5HOgogICAgICAgIHJldHVybiBfUkVMT0FESU5HW25hbWVdCiAgICBfUkVMT0FESU5HW25hbWVdID0gbW9kdWxlCiAgICB0cnk6CiAgICAgICAgcGFyZW50X25hbWUgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQogICAgICAgIGlmIHBhcmVudF9uYW1lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwYXJlbnQgPSBzeXMubW9kdWxlc1twYXJlbnRfbmFtZV0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgbXNnID0gInBhcmVudCB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcyIKICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQocGFyZW50X25hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1wYXJlbnRfbmFtZSkgZnJvbSBOb25lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwa2dwYXRoID0gcGFyZW50Ll9fcGF0aF9fCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGtncGF0aCA9IE5vbmUKICAgICAgICB0YXJnZXQgPSBtb2R1bGUKICAgICAgICBzcGVjID0gbW9kdWxlLl9fc3BlY19fID0gX2Jvb3RzdHJhcC5fZmluZF9zcGVjKG5hbWUsIHBrZ3BhdGgsIHRhcmdldCkKICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IoZiJzcGVjIG5vdCBmb3VuZCBmb3IgdGhlIG1vZHVsZSB7bmFtZSFyfSIsIG5hbWU9bmFtZSkKICAgICAgICBfYm9vdHN0cmFwLl9leGVjKHNwZWMsIG1vZHVsZSkKICAgICAgICAjIFRoZSBtb2R1bGUgbWF5IGhhdmUgcmVwbGFjZWQgaXRzZWxmIGluIHN5cy5tb2R1bGVzIQogICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQogICAgZmluYWxseToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBfUkVMT0FESU5HW25hbWVdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBwYXNzClBLAwQUAAAAAAADIKNW7CbO2TwHAAA8BwAAEQAAAGltcG9ydGxpYi9fYWJjLnB5IiIiU3Vic2V0IG9mIGltcG9ydGxpYi5hYmMgdXNlZCB0byByZWR1Y2UgaW1wb3J0bGliLnV0aWwgaW1wb3J0cy4iIiIKZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCmltcG9ydCBhYmMKaW1wb3J0IHdhcm5pbmdzCgoKY2xhc3MgTG9hZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CgogICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGxvYWRlcnMuIiIiCgogICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CiAgICAgICAgIiIiUmV0dXJuIGEgbW9kdWxlIHRvIGluaXRpYWxpemUgYW5kIGludG8gd2hpY2ggdG8gbG9hZC4KCiAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yIGlmIGFueXRoaW5nIHByZXZlbnRzIGl0CiAgICAgICAgZnJvbSBjcmVhdGluZyBhIG5ldyBtb2R1bGUuICBJdCBtYXkgcmV0dXJuIE5vbmUgdG8gaW5kaWNhdGUKICAgICAgICB0aGF0IHRoZSBzcGVjIHNob3VsZCBjcmVhdGUgdGhlIG5ldyBtb2R1bGUuCiAgICAgICAgIiIiCiAgICAgICAgIyBCeSBkZWZhdWx0LCBkZWZlciB0byBkZWZhdWx0IHNlbWFudGljcyBmb3IgdGhlIG5ldyBtb2R1bGUuCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAjIFdlIGRvbid0IGRlZmluZSBleGVjX21vZHVsZSgpIGhlcmUgc2luY2UgdGhhdCB3b3VsZCBicmVhawogICAgIyBoYXNhdHRyIGNoZWNrcyB3ZSBkbyB0byBzdXBwb3J0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgogICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAiIiJSZXR1cm4gdGhlIGxvYWRlZCBtb2R1bGUuCgogICAgICAgIFRoZSBtb2R1bGUgbXVzdCBiZSBhZGRlZCB0byBzeXMubW9kdWxlcyBhbmQgaGF2ZSBpbXBvcnQtcmVsYXRlZAogICAgICAgIGF0dHJpYnV0ZXMgc2V0IHByb3Blcmx5LiAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLgoKICAgICAgICBJbXBvcnRFcnJvciBpcyByYWlzZWQgb24gZmFpbHVyZS4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBsb2FkZXIuZXhlY19tb2R1bGUoKS4gSWYKICAgICAgICBleGVjX21vZHVsZSgpIGV4aXN0cyB0aGVuIGl0IGlzIHVzZWQgdG8gcHJvdmlkZSBhIGJhY2t3YXJkcy1jb21wYXRpYmxlCiAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgdGhpcyBtZXRob2QuCgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdleGVjX21vZHVsZScpOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgogICAgICAgICMgV2FybmluZyBpbXBsZW1lbnRlZCBpbiBfbG9hZF9tb2R1bGVfc2hpbSgpLgogICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQoKICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgogICAgICAgICIiIlJldHVybiBhIG1vZHVsZSdzIHJlcHIuCgogICAgICAgIFVzZWQgYnkgdGhlIG1vZHVsZSB0eXBlIHdoZW4gdGhlIG1ldGhvZCBkb2VzIG5vdCByYWlzZQogICAgICAgIE5vdEltcGxlbWVudGVkRXJyb3IuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuCgogICAgICAgICIiIgogICAgICAgIHdhcm5pbmdzLndhcm4oImltcG9ydGxpYi5hYmMuTG9hZGVyLm1vZHVsZV9yZXByKCkgaXMgZGVwcmVjYXRlZCBhbmQgIgogICAgICAgICAgICAgICAgICAgICAgInNsYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMiIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAjIFRoZSBleGNlcHRpb24gd2lsbCBjYXVzZSBNb2R1bGVUeXBlLl9fcmVwcl9fIHRvIGlnbm9yZSB0aGlzIG1ldGhvZC4KICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yClBLAwQUAAAAAAADIKNWkWOu/+m8AADpvAAAFwAAAGltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IiIiQ29yZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuCgpUaGlzIG1vZHVsZSBpcyBOT1QgbWVhbnQgdG8gYmUgZGlyZWN0bHkgaW1wb3J0ZWQhIEl0IGhhcyBiZWVuIGRlc2lnbmVkIHN1Y2gKdGhhdCBpdCBjYW4gYmUgYm9vdHN0cmFwcGVkIGludG8gUHl0aG9uIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIEFzCnN1Y2ggaXQgcmVxdWlyZXMgdGhlIGluamVjdGlvbiBvZiBzcGVjaWZpYyBtb2R1bGVzIGFuZCBhdHRyaWJ1dGVzIGluIG9yZGVyIHRvCndvcmsuIE9uZSBzaG91bGQgdXNlIGltcG9ydGxpYiBhcyB0aGUgcHVibGljLWZhY2luZyB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLgoKIiIiCiMKIyBJTVBPUlRBTlQ6IFdoZW5ldmVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLCBiZSBzdXJlIHRvIHJ1biBhIHRvcC1sZXZlbAojIGBtYWtlIHJlZ2VuLWltcG9ydGxpYmAgZm9sbG93ZWQgYnkgYG1ha2VgIGluIG9yZGVyIHRvIGdldCB0aGUgZnJvemVuIHZlcnNpb24KIyBvZiB0aGUgbW9kdWxlIHVwZGF0ZWQuIE5vdCBkb2luZyBzbyB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKIyBhbGwgb3RoZXJzIHdobyBkb24ndCBoYXZlIGEgLi9weXRob24gYXJvdW5kIHRvIGZyZWV6ZSB0aGUgbW9kdWxlCiMgaW4gdGhlIGVhcmx5IHN0YWdlcyBvZiBjb21waWxhdGlvbi4KIwoKIyBTZWUgaW1wb3J0bGliLl9zZXR1cCgpIGZvciB3aGF0IGlzIGluamVjdGVkIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCgojIFdoZW4gZWRpdGluZyB0aGlzIGNvZGUgYmUgYXdhcmUgdGhhdCBjb2RlIGV4ZWN1dGVkIGF0IGltcG9ydCB0aW1lIENBTk5PVAojIHJlZmVyZW5jZSBhbnkgaW5qZWN0ZWQgb2JqZWN0cyEgVGhpcyBpbmNsdWRlcyBub3Qgb25seSBnbG9iYWwgY29kZSBidXQgYWxzbwojIGFueXRoaW5nIHNwZWNpZmllZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCgpkZWYgX29iamVjdF9uYW1lKG9iaik6CiAgICB0cnk6CiAgICAgICAgcmV0dXJuIG9iai5fX3F1YWxuYW1lX18KICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICByZXR1cm4gdHlwZShvYmopLl9fcXVhbG5hbWVfXwoKIyBCb290c3RyYXAtcmVsYXRlZCBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBNb2R1bGVzIGluamVjdGVkIG1hbnVhbGx5IGJ5IF9zZXR1cCgpCl90aHJlYWQgPSBOb25lCl93YXJuaW5ncyA9IE5vbmUKX3dlYWtyZWYgPSBOb25lCgojIEltcG9ydCBkb25lIGJ5IF9pbnN0YWxsX2V4dGVybmFsX2ltcG9ydGVycygpCl9ib290c3RyYXBfZXh0ZXJuYWwgPSBOb25lCgoKZGVmIF93cmFwKG5ldywgb2xkKToKICAgICIiIlNpbXBsZSBzdWJzdGl0dXRlIGZvciBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIuIiIiCiAgICBmb3IgcmVwbGFjZSBpbiBbJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ19fZG9jX18nXToKICAgICAgICBpZiBoYXNhdHRyKG9sZCwgcmVwbGFjZSk6CiAgICAgICAgICAgIHNldGF0dHIobmV3LCByZXBsYWNlLCBnZXRhdHRyKG9sZCwgcmVwbGFjZSkpCiAgICBuZXcuX19kaWN0X18udXBkYXRlKG9sZC5fX2RpY3RfXykKCgpkZWYgX25ld19tb2R1bGUobmFtZSk6CiAgICByZXR1cm4gdHlwZShzeXMpKG5hbWUpCgoKIyBNb2R1bGUtbGV2ZWwgbG9ja2luZyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBBIGRpY3QgbWFwcGluZyBtb2R1bGUgbmFtZXMgdG8gd2Vha3JlZnMgb2YgX01vZHVsZUxvY2sgaW5zdGFuY2VzCiMgRGljdGlvbmFyeSBwcm90ZWN0ZWQgYnkgdGhlIGdsb2JhbCBpbXBvcnQgbG9jawpfbW9kdWxlX2xvY2tzID0ge30KIyBBIGRpY3QgbWFwcGluZyB0aHJlYWQgaWRzIHRvIF9Nb2R1bGVMb2NrIGluc3RhbmNlcwpfYmxvY2tpbmdfb24gPSB7fQoKCmNsYXNzIF9EZWFkbG9ja0Vycm9yKFJ1bnRpbWVFcnJvcik6CiAgICBwYXNzCgoKY2xhc3MgX01vZHVsZUxvY2s6CiAgICAiIiJBIHJlY3Vyc2l2ZSBsb2NrIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIGFibGUgdG8gZGV0ZWN0IGRlYWRsb2NrcwogICAgKGUuZy4gdGhyZWFkIDEgdHJ5aW5nIHRvIHRha2UgbG9ja3MgQSB0aGVuIEIsIGFuZCB0aHJlYWQgMiB0cnlpbmcgdG8KICAgIHRha2UgbG9ja3MgQiB0aGVuIEEpLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYubG9jayA9IF90aHJlYWQuYWxsb2NhdGVfbG9jaygpCiAgICAgICAgc2VsZi53YWtldXAgPSBfdGhyZWFkLmFsbG9jYXRlX2xvY2soKQogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICBzZWxmLm93bmVyID0gTm9uZQogICAgICAgIHNlbGYuY291bnQgPSAwCiAgICAgICAgc2VsZi53YWl0ZXJzID0gMAoKICAgIGRlZiBoYXNfZGVhZGxvY2soc2VsZik6CiAgICAgICAgIyBEZWFkbG9jayBhdm9pZGFuY2UgZm9yIGNvbmN1cnJlbnQgY2lyY3VsYXIgaW1wb3J0cy4KICAgICAgICBtZSA9IF90aHJlYWQuZ2V0X2lkZW50KCkKICAgICAgICB0aWQgPSBzZWxmLm93bmVyCiAgICAgICAgc2VlbiA9IHNldCgpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgbG9jayA9IF9ibG9ja2luZ19vbi5nZXQodGlkKQogICAgICAgICAgICBpZiBsb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgdGlkID0gbG9jay5vd25lcgogICAgICAgICAgICBpZiB0aWQgPT0gbWU6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICBpZiB0aWQgaW4gc2VlbjoKICAgICAgICAgICAgICAgICMgYnBvIDM4MDkxOiB0aGUgY2hhaW4gb2YgdGlkJ3Mgd2UgZW5jb3VudGVyIGhlcmUKICAgICAgICAgICAgICAgICMgZXZlbnR1YWxseSBsZWFkcyB0byBhIGZpeHBvaW50IG9yIGEgY3ljbGUsIGJ1dAogICAgICAgICAgICAgICAgIyBkb2VzIG5vdCByZWFjaCAnbWUnLiAgVGhpcyBtZWFucyB3ZSB3b3VsZCBub3QKICAgICAgICAgICAgICAgICMgYWN0dWFsbHkgZGVhZGxvY2suICBUaGlzIGNhbiBoYXBwZW4gaWYgb3RoZXIKICAgICAgICAgICAgICAgICMgdGhyZWFkcyBhcmUgYXQgdGhlIGJlZ2lubmluZyBvZiBhY3F1aXJlKCkgYmVsb3cuCiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgc2Vlbi5hZGQodGlkKQoKICAgIGRlZiBhY3F1aXJlKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIEFjcXVpcmUgdGhlIG1vZHVsZSBsb2NrLiAgSWYgYSBwb3RlbnRpYWwgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQsCiAgICAgICAgYSBfRGVhZGxvY2tFcnJvciBpcyByYWlzZWQuCiAgICAgICAgT3RoZXJ3aXNlLCB0aGUgbG9jayBpcyBhbHdheXMgYWNxdWlyZWQgYW5kIFRydWUgaXMgcmV0dXJuZWQuCiAgICAgICAgIiIiCiAgICAgICAgdGlkID0gX3RocmVhZC5nZXRfaWRlbnQoKQogICAgICAgIF9ibG9ja2luZ19vblt0aWRdID0gc2VsZgogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIHdpdGggc2VsZi5sb2NrOgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY291bnQgPT0gMCBvciBzZWxmLm93bmVyID09IHRpZDoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IHRpZAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvdW50ICs9IDEKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmhhc19kZWFkbG9jaygpOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBfRGVhZGxvY2tFcnJvcignZGVhZGxvY2sgZGV0ZWN0ZWQgYnkgJXInICUgc2VsZikKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLndha2V1cC5hY3F1aXJlKEZhbHNlKToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53YWl0ZXJzICs9IDEKICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgYSByZWxlYXNlKCkgY2FsbAogICAgICAgICAgICAgICAgc2VsZi53YWtldXAuYWNxdWlyZSgpCiAgICAgICAgICAgICAgICBzZWxmLndha2V1cC5yZWxlYXNlKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBkZWwgX2Jsb2NraW5nX29uW3RpZF0KCiAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICB0aWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCiAgICAgICAgd2l0aCBzZWxmLmxvY2s6CiAgICAgICAgICAgIGlmIHNlbGYub3duZXIgIT0gdGlkOgogICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrJykKICAgICAgICAgICAgYXNzZXJ0IHNlbGYuY291bnQgPiAwCiAgICAgICAgICAgIHNlbGYuY291bnQgLT0gMQogICAgICAgICAgICBpZiBzZWxmLmNvdW50ID09IDA6CiAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gTm9uZQogICAgICAgICAgICAgICAgaWYgc2VsZi53YWl0ZXJzOgogICAgICAgICAgICAgICAgICAgIHNlbGYud2FpdGVycyAtPSAxCiAgICAgICAgICAgICAgICAgICAgc2VsZi53YWtldXAucmVsZWFzZSgpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnX01vZHVsZUxvY2soeyFyfSkgYXQge30nLmZvcm1hdChzZWxmLm5hbWUsIGlkKHNlbGYpKQoKCmNsYXNzIF9EdW1teU1vZHVsZUxvY2s6CiAgICAiIiJBIHNpbXBsZSBfTW9kdWxlTG9jayBlcXVpdmFsZW50IGZvciBQeXRob24gYnVpbGRzIHdpdGhvdXQKICAgIG11bHRpLXRocmVhZGluZyBzdXBwb3J0LiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5jb3VudCA9IDAKCiAgICBkZWYgYWNxdWlyZShzZWxmKToKICAgICAgICBzZWxmLmNvdW50ICs9IDEKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuY291bnQgPT0gMDoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrJykKICAgICAgICBzZWxmLmNvdW50IC09IDEKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICdfRHVtbXlNb2R1bGVMb2NrKHshcn0pIGF0IHt9Jy5mb3JtYXQoc2VsZi5uYW1lLCBpZChzZWxmKSkKCgpjbGFzcyBfTW9kdWxlTG9ja01hbmFnZXI6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5fbG9jayA9IE5vbmUKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHNlbGYuX2xvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKHNlbGYuX25hbWUpCiAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKCiAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQoKCiMgVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBmb3IgY29uc3VtcHRpb24gYnkgUHl0aG9uL2ltcG9ydC5jLgoKZGVmIF9nZXRfbW9kdWxlX2xvY2sobmFtZSk6CiAgICAiIiJHZXQgb3IgY3JlYXRlIHRoZSBtb2R1bGUgbG9jayBmb3IgYSBnaXZlbiBtb2R1bGUgbmFtZS4KCiAgICBBY3F1aXJlL3JlbGVhc2UgaW50ZXJuYWxseSB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrIHRvIHByb3RlY3QKICAgIF9tb2R1bGVfbG9ja3MuIiIiCgogICAgX2ltcC5hY3F1aXJlX2xvY2soKQogICAgdHJ5OgogICAgICAgIHRyeToKICAgICAgICAgICAgbG9jayA9IF9tb2R1bGVfbG9ja3NbbmFtZV0oKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgbG9jayA9IE5vbmUKCiAgICAgICAgaWYgbG9jayBpcyBOb25lOgogICAgICAgICAgICBpZiBfdGhyZWFkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBsb2NrID0gX0R1bW15TW9kdWxlTG9jayhuYW1lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbG9jayA9IF9Nb2R1bGVMb2NrKG5hbWUpCgogICAgICAgICAgICBkZWYgY2IocmVmLCBuYW1lPW5hbWUpOgogICAgICAgICAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICMgYnBvLTMxMDcwOiBDaGVjayBpZiBhbm90aGVyIHRocmVhZCBjcmVhdGVkIGEgbmV3IGxvY2sKICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIHRoZSBwcmV2aW91cyBsb2NrIHdhcyBkZXN0cm95ZWQKICAgICAgICAgICAgICAgICAgICAjIGJ1dCBiZWZvcmUgdGhlIHdlYWtyZWYgY2FsbGJhY2sgd2FzIGNhbGxlZC4KICAgICAgICAgICAgICAgICAgICBpZiBfbW9kdWxlX2xvY2tzLmdldChuYW1lKSBpcyByZWY6CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBfbW9kdWxlX2xvY2tzW25hbWVdCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKCiAgICAgICAgICAgIF9tb2R1bGVfbG9ja3NbbmFtZV0gPSBfd2Vha3JlZi5yZWYobG9jaywgY2IpCiAgICBmaW5hbGx5OgogICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKCiAgICByZXR1cm4gbG9jawoKCmRlZiBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpOgogICAgIiIiQWNxdWlyZXMgdGhlbiByZWxlYXNlcyB0aGUgbW9kdWxlIGxvY2sgZm9yIGEgZ2l2ZW4gbW9kdWxlIG5hbWUuCgogICAgVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSBhIG1vZHVsZSBpcyBjb21wbGV0ZWx5IGluaXRpYWxpemVkLCBpbiB0aGUKICAgIGV2ZW50IGl0IGlzIGJlaW5nIGltcG9ydGVkIGJ5IGFub3RoZXIgdGhyZWFkLgogICAgIiIiCiAgICBsb2NrID0gX2dldF9tb2R1bGVfbG9jayhuYW1lKQogICAgdHJ5OgogICAgICAgIGxvY2suYWNxdWlyZSgpCiAgICBleGNlcHQgX0RlYWRsb2NrRXJyb3I6CiAgICAgICAgIyBDb25jdXJyZW50IGNpcmN1bGFyIGltcG9ydCwgd2UnbGwgYWNjZXB0IGEgcGFydGlhbGx5IGluaXRpYWxpemVkCiAgICAgICAgIyBtb2R1bGUgb2JqZWN0LgogICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgbG9jay5yZWxlYXNlKCkKCiMgRnJhbWUgc3RyaXBwaW5nIG1hZ2ljICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRlZiBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGYsICphcmdzLCAqKmt3ZHMpOgogICAgIiIicmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMgaW4gaW1wb3J0LmMgd2lsbCBhbHdheXMgcmVtb3ZlIHNlcXVlbmNlcwogICAgb2YgaW1wb3J0bGliIGZyYW1lcyB0aGF0IGVuZCB3aXRoIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uCgogICAgVXNlIGl0IGluc3RlYWQgb2YgYSBub3JtYWwgY2FsbCBpbiBwbGFjZXMgd2hlcmUgaW5jbHVkaW5nIHRoZSBpbXBvcnRsaWIKICAgIGZyYW1lcyBpbnRyb2R1Y2VzIHVud2FudGVkIG5vaXNlIGludG8gdGhlIHRyYWNlYmFjayAoZS5nLiB3aGVuIGV4ZWN1dGluZwogICAgbW9kdWxlIGNvZGUpCiAgICAiIiIKICAgIHJldHVybiBmKCphcmdzLCAqKmt3ZHMpCgoKZGVmIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSwgKmFyZ3MsIHZlcmJvc2l0eT0xKToKICAgICIiIlByaW50IHRoZSBtZXNzYWdlIHRvIHN0ZGVyciBpZiAtdi9QWVRIT05WRVJCT1NFIGlzIHR1cm5lZCBvbi4iIiIKICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKICAgICAgICBpZiBub3QgbWVzc2FnZS5zdGFydHN3aXRoKCgnIycsICdpbXBvcnQgJykpOgogICAgICAgICAgICBtZXNzYWdlID0gJyMgJyArIG1lc3NhZ2UKICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqYXJncyksIGZpbGU9c3lzLnN0ZGVycikKCgpkZWYgX3JlcXVpcmVzX2J1aWx0aW4oZnhuKToKICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBidWlsdC1pbi4iIiIKICAgIGRlZiBfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICBpZiBmdWxsbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigneyFyfSBpcyBub3QgYSBidWlsdC1pbiBtb2R1bGUnLmZvcm1hdChmdWxsbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBmdWxsbmFtZSkKICAgIF93cmFwKF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIsIGZ4bikKICAgIHJldHVybiBfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyCgoKZGVmIF9yZXF1aXJlc19mcm96ZW4oZnhuKToKICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBmcm96ZW4uIiIiCiAgICBkZWYgX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICBpZiBub3QgX2ltcC5pc19mcm96ZW4oZnVsbG5hbWUpOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigneyFyfSBpcyBub3QgYSBmcm96ZW4gbW9kdWxlJy5mb3JtYXQoZnVsbG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgIHJldHVybiBmeG4oc2VsZiwgZnVsbG5hbWUpCiAgICBfd3JhcChfcmVxdWlyZXNfZnJvemVuX3dyYXBwZXIsIGZ4bikKICAgIHJldHVybiBfcmVxdWlyZXNfZnJvemVuX3dyYXBwZXIKCgojIFR5cGljYWxseSB1c2VkIGJ5IGxvYWRlciBjbGFzc2VzIGFzIGEgbWV0aG9kIHJlcGxhY2VtZW50LgpkZWYgX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgogICAgIiIiTG9hZCB0aGUgc3BlY2lmaWVkIG1vZHVsZSBpbnRvIHN5cy5tb2R1bGVzIGFuZCByZXR1cm4gaXQuCgogICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBsb2FkZXIuZXhlY19tb2R1bGUoKSBpbnN0ZWFkLgoKICAgICIiIgogICAgbXNnID0gKCJ0aGUgbG9hZF9tb2R1bGUoKSBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgc2xhdGVkIGZvciByZW1vdmFsIGluICIKICAgICAgICAgICJQeXRob24gMy4xMjsgdXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZCIpCiAgICBfd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZykKICAgIHNwZWMgPSBzcGVjX2Zyb21fbG9hZGVyKGZ1bGxuYW1lLCBzZWxmKQogICAgaWYgZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgX2V4ZWMoc3BlYywgbW9kdWxlKQogICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tmdWxsbmFtZV0KICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIF9sb2FkKHNwZWMpCgojIE1vZHVsZSBzcGVjaWZpY2F0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpkZWYgX21vZHVsZV9yZXByKG1vZHVsZSk6CiAgICAiIiJUaGUgaW1wbGVtZW50YXRpb24gb2YgTW9kdWxlVHlwZS5fX3JlcHJfXygpLiIiIgogICAgbG9hZGVyID0gZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkKICAgIGlmIHNwZWMgOj0gZ2V0YXR0cihtb2R1bGUsICJfX3NwZWNfXyIsIE5vbmUpOgogICAgICAgIHJldHVybiBfbW9kdWxlX3JlcHJfZnJvbV9zcGVjKHNwZWMpCiAgICBlbGlmIGhhc2F0dHIobG9hZGVyLCAnbW9kdWxlX3JlcHInKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBsb2FkZXIubW9kdWxlX3JlcHIobW9kdWxlKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHBhc3MKICAgICMgRmFsbCB0aHJvdWdoIHRvIGEgY2F0Y2gtYWxsIHdoaWNoIGFsd2F5cyBzdWNjZWVkcy4KICAgIHRyeToKICAgICAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgbmFtZSA9ICc/JwogICAgdHJ5OgogICAgICAgIGZpbGVuYW1lID0gbW9kdWxlLl9fZmlsZV9fCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgaWYgbG9hZGVyIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9PicuZm9ybWF0KG5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHshcn0pPicuZm9ybWF0KG5hbWUsIGxvYWRlcikKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gZnJvbSB7IXJ9PicuZm9ybWF0KG5hbWUsIGZpbGVuYW1lKQoKCmNsYXNzIE1vZHVsZVNwZWM6CiAgICAiIiJUaGUgc3BlY2lmaWNhdGlvbiBmb3IgYSBtb2R1bGUsIHVzZWQgZm9yIGxvYWRpbmcuCgogICAgQSBtb2R1bGUncyBzcGVjIGlzIHRoZSBzb3VyY2UgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb2R1bGUuICBGb3IKICAgIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBtb2R1bGUsIGluY2x1ZGluZyBzb3VyY2UsIHVzZSB0aGUgc3BlYydzCiAgICBsb2FkZXIuCgogICAgYG5hbWVgIGlzIHRoZSBhYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuICBgbG9hZGVyYCBpcyB0aGUgbG9hZGVyCiAgICB0byB1c2Ugd2hlbiBsb2FkaW5nIHRoZSBtb2R1bGUuICBgcGFyZW50YCBpcyB0aGUgbmFtZSBvZiB0aGUKICAgIHBhY2thZ2UgdGhlIG1vZHVsZSBpcyBpbi4gIFRoZSBwYXJlbnQgaXMgZGVyaXZlZCBmcm9tIHRoZSBuYW1lLgoKICAgIGBpc19wYWNrYWdlYCBkZXRlcm1pbmVzIGlmIHRoZSBtb2R1bGUgaXMgY29uc2lkZXJlZCBhIHBhY2thZ2Ugb3IKICAgIG5vdC4gIE9uIG1vZHVsZXMgdGhpcyBpcyByZWZsZWN0ZWQgYnkgdGhlIGBfX3BhdGhfX2AgYXR0cmlidXRlLgoKICAgIGBvcmlnaW5gIGlzIHRoZSBzcGVjaWZpYyBsb2NhdGlvbiB1c2VkIGJ5IHRoZSBsb2FkZXIgZnJvbSB3aGljaCB0bwogICAgbG9hZCB0aGUgbW9kdWxlLCBpZiB0aGF0IGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZS4gIFdoZW4gZmlsZW5hbWUgaXMKICAgIHNldCwgb3JpZ2luIHdpbGwgbWF0Y2guCgogICAgYGhhc19sb2NhdGlvbmAgaW5kaWNhdGVzIHRoYXQgYSBzcGVjJ3MgIm9yaWdpbiIgcmVmbGVjdHMgYSBsb2NhdGlvbi4KICAgIFdoZW4gdGhpcyBpcyBUcnVlLCBgX19maWxlX19gIGF0dHJpYnV0ZSBvZiB0aGUgbW9kdWxlIGlzIHNldC4KCiAgICBgY2FjaGVkYCBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIGNhY2hlZCBieXRlY29kZSBmaWxlLCBpZiBhbnkuICBJdAogICAgY29ycmVzcG9uZHMgdG8gdGhlIGBfX2NhY2hlZF9fYCBhdHRyaWJ1dGUuCgogICAgYHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zYCBpcyB0aGUgc2VxdWVuY2Ugb2YgcGF0aCBlbnRyaWVzIHRvCiAgICBzZWFyY2ggd2hlbiBpbXBvcnRpbmcgc3VibW9kdWxlcy4gIElmIHNldCwgaXNfcGFja2FnZSBzaG91bGQgYmUKICAgIFRydWUtLWFuZCBGYWxzZSBvdGhlcndpc2UuCgogICAgUGFja2FnZXMgYXJlIHNpbXBseSBtb2R1bGVzIHRoYXQgKG1heSkgaGF2ZSBzdWJtb2R1bGVzLiAgSWYgYSBzcGVjCiAgICBoYXMgYSBub24tTm9uZSB2YWx1ZSBpbiBgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnNgLCB0aGUgaW1wb3J0CiAgICBzeXN0ZW0gd2lsbCBjb25zaWRlciBtb2R1bGVzIGxvYWRlZCBmcm9tIHRoZSBzcGVjIGFzIHBhY2thZ2VzLgoKICAgIE9ubHkgZmluZGVycyAoc2VlIGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXIgYW5kCiAgICBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlcikgc2hvdWxkIG1vZGlmeSBNb2R1bGVTcGVjIGluc3RhbmNlcy4KCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgbG9hZGVyLCAqLCBvcmlnaW49Tm9uZSwgbG9hZGVyX3N0YXRlPU5vbmUsCiAgICAgICAgICAgICAgICAgaXNfcGFja2FnZT1Ob25lKToKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKICAgICAgICBzZWxmLm9yaWdpbiA9IG9yaWdpbgogICAgICAgIHNlbGYubG9hZGVyX3N0YXRlID0gbG9hZGVyX3N0YXRlCiAgICAgICAgc2VsZi5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtdIGlmIGlzX3BhY2thZ2UgZWxzZSBOb25lCiAgICAgICAgc2VsZi5fdW5pbml0aWFsaXplZF9zdWJtb2R1bGVzID0gW10KCiAgICAgICAgIyBmaWxlLWxvY2F0aW9uIGF0dHJpYnV0ZXMKICAgICAgICBzZWxmLl9zZXRfZmlsZWF0dHIgPSBGYWxzZQogICAgICAgIHNlbGYuX2NhY2hlZCA9IE5vbmUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgYXJncyA9IFsnbmFtZT17IXJ9Jy5mb3JtYXQoc2VsZi5uYW1lKSwKICAgICAgICAgICAgICAgICdsb2FkZXI9eyFyfScuZm9ybWF0KHNlbGYubG9hZGVyKV0KICAgICAgICBpZiBzZWxmLm9yaWdpbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgYXJncy5hcHBlbmQoJ29yaWdpbj17IXJ9Jy5mb3JtYXQoc2VsZi5vcmlnaW4pKQogICAgICAgIGlmIHNlbGYuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCdzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz17fScKICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zKSkKICAgICAgICByZXR1cm4gJ3t9KHt9KScuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnLCAnLmpvaW4oYXJncykpCgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgc21zbCA9IHNlbGYuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiAoc2VsZi5uYW1lID09IG90aGVyLm5hbWUgYW5kCiAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkZXIgPT0gb3RoZXIubG9hZGVyIGFuZAogICAgICAgICAgICAgICAgICAgIHNlbGYub3JpZ2luID09IG90aGVyLm9yaWdpbiBhbmQKICAgICAgICAgICAgICAgICAgICBzbXNsID09IG90aGVyLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGFuZAogICAgICAgICAgICAgICAgICAgIHNlbGYuY2FjaGVkID09IG90aGVyLmNhY2hlZCBhbmQKICAgICAgICAgICAgICAgICAgICBzZWxmLmhhc19sb2NhdGlvbiA9PSBvdGhlci5oYXNfbG9jYXRpb24pCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjYWNoZWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY2FjaGVkIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYub3JpZ2luIGlzIG5vdCBOb25lIGFuZCBzZWxmLl9zZXRfZmlsZWF0dHI6CiAgICAgICAgICAgICAgICBpZiBfYm9vdHN0cmFwX2V4dGVybmFsIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fZ2V0X2NhY2hlZChzZWxmLm9yaWdpbikKICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkCgogICAgQGNhY2hlZC5zZXR0ZXIKICAgIGRlZiBjYWNoZWQoc2VsZiwgY2FjaGVkKToKICAgICAgICBzZWxmLl9jYWNoZWQgPSBjYWNoZWQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBwYXJlbnQoc2VsZik6CiAgICAgICAgIiIiVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSdzIHBhcmVudC4iIiIKICAgICAgICBpZiBzZWxmLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm5hbWUucnBhcnRpdGlvbignLicpWzBdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGhhc19sb2NhdGlvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ZpbGVhdHRyCgogICAgQGhhc19sb2NhdGlvbi5zZXR0ZXIKICAgIGRlZiBoYXNfbG9jYXRpb24oc2VsZiwgdmFsdWUpOgogICAgICAgIHNlbGYuX3NldF9maWxlYXR0ciA9IGJvb2wodmFsdWUpCgoKZGVmIHNwZWNfZnJvbV9sb2FkZXIobmFtZSwgbG9hZGVyLCAqLCBvcmlnaW49Tm9uZSwgaXNfcGFja2FnZT1Ob25lKToKICAgICIiIlJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIHZhcmlvdXMgbG9hZGVyIG1ldGhvZHMuIiIiCiAgICBpZiBvcmlnaW4gaXMgTm9uZToKICAgICAgICBvcmlnaW4gPSBnZXRhdHRyKGxvYWRlciwgJ19PUklHSU4nLCBOb25lKQoKICAgIGlmIG5vdCBvcmlnaW4gYW5kIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6CiAgICAgICAgaWYgX2Jvb3RzdHJhcF9leHRlcm5hbCBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAgICAgICAgc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24gPSBfYm9vdHN0cmFwX2V4dGVybmFsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uCgogICAgICAgIGlmIGlzX3BhY2thZ2UgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIGxvYWRlcj1sb2FkZXIpCiAgICAgICAgc2VhcmNoID0gW10gaWYgaXNfcGFja2FnZSBlbHNlIE5vbmUKICAgICAgICByZXR1cm4gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgbG9hZGVyPWxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9c2VhcmNoKQoKICAgIGlmIGlzX3BhY2thZ2UgaXMgTm9uZToKICAgICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ2lzX3BhY2thZ2UnKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaXNfcGFja2FnZSA9IGxvYWRlci5pc19wYWNrYWdlKG5hbWUpCiAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBOb25lICAjIGFrYSwgdW5kZWZpbmVkCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyB0aGUgZGVmYXVsdAogICAgICAgICAgICBpc19wYWNrYWdlID0gRmFsc2UKCiAgICByZXR1cm4gTW9kdWxlU3BlYyhuYW1lLCBsb2FkZXIsIG9yaWdpbj1vcmlnaW4sIGlzX3BhY2thZ2U9aXNfcGFja2FnZSkKCgpkZWYgX3NwZWNfZnJvbV9tb2R1bGUobW9kdWxlLCBsb2FkZXI9Tm9uZSwgb3JpZ2luPU5vbmUpOgogICAgIyBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IGZvciB1c2UgaW4gX3NldHVwKCkuCiAgICB0cnk6CiAgICAgICAgc3BlYyA9IG1vZHVsZS5fX3NwZWNfXwogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNwZWMKCiAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCiAgICBpZiBsb2FkZXIgaXMgTm9uZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGxvYWRlciA9IG1vZHVsZS5fX2xvYWRlcl9fCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIGxvYWRlciB3aWxsIHN0YXkgTm9uZS4KICAgICAgICAgICAgcGFzcwogICAgdHJ5OgogICAgICAgIGxvY2F0aW9uID0gbW9kdWxlLl9fZmlsZV9fCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgbG9jYXRpb24gPSBOb25lCiAgICBpZiBvcmlnaW4gaXMgTm9uZToKICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG9yaWdpbiA9IGdldGF0dHIobG9hZGVyLCAnX09SSUdJTicsIE5vbmUpCiAgICAgICAgaWYgbm90IG9yaWdpbiBhbmQgbG9jYXRpb24gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG9yaWdpbiA9IGxvY2F0aW9uCiAgICB0cnk6CiAgICAgICAgY2FjaGVkID0gbW9kdWxlLl9fY2FjaGVkX18KICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICBjYWNoZWQgPSBOb25lCiAgICB0cnk6CiAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBsaXN0KG1vZHVsZS5fX3BhdGhfXykKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IE5vbmUKCiAgICBzcGVjID0gTW9kdWxlU3BlYyhuYW1lLCBsb2FkZXIsIG9yaWdpbj1vcmlnaW4pCiAgICBzcGVjLl9zZXRfZmlsZWF0dHIgPSBGYWxzZSBpZiBsb2NhdGlvbiBpcyBOb25lIGVsc2UgKG9yaWdpbiA9PSBsb2NhdGlvbikKICAgIHNwZWMuY2FjaGVkID0gY2FjaGVkCiAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKICAgIHJldHVybiBzcGVjCgoKZGVmIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUsICosIG92ZXJyaWRlPUZhbHNlKToKICAgICMgVGhlIHBhc3NlZC1pbiBtb2R1bGUgbWF5IGJlIG5vdCBzdXBwb3J0IGF0dHJpYnV0ZSBhc3NpZ25tZW50LAogICAgIyBpbiB3aGljaCBjYXNlIHdlIHNpbXBseSBkb24ndCBzZXQgdGhlIGF0dHJpYnV0ZXMuCiAgICAjIF9fbmFtZV9fCiAgICBpZiAob3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX25hbWVfXycsIE5vbmUpIGlzIE5vbmUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgbW9kdWxlLl9fbmFtZV9fID0gc3BlYy5uYW1lCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAjIF9fbG9hZGVyX18KICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgbG9hZGVyID0gc3BlYy5sb2FkZXIKICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKICAgICAgICAgICAgIyBBIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaGFjay4KICAgICAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGlmIF9ib290c3RyYXBfZXh0ZXJuYWwgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAgICAgICAgICAgICAgICBOYW1lc3BhY2VMb2FkZXIgPSBfYm9vdHN0cmFwX2V4dGVybmFsLk5hbWVzcGFjZUxvYWRlcgoKICAgICAgICAgICAgICAgIGxvYWRlciA9IE5hbWVzcGFjZUxvYWRlci5fX25ld19fKE5hbWVzcGFjZUxvYWRlcikKICAgICAgICAgICAgICAgIGxvYWRlci5fcGF0aCA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKICAgICAgICAgICAgICAgIHNwZWMubG9hZGVyID0gbG9hZGVyCiAgICAgICAgICAgICAgICAjIFdoaWxlIHRoZSBkb2NzIHNheSB0aGF0IG1vZHVsZS5fX2ZpbGVfXyBpcyBub3Qgc2V0IGZvcgogICAgICAgICAgICAgICAgIyBidWlsdC1pbiBtb2R1bGVzLCBhbmQgdGhlIGNvZGUgYmVsb3cgd2lsbCBhdm9pZCBzZXR0aW5nIGl0IGlmCiAgICAgICAgICAgICAgICAjIHNwZWMuaGFzX2xvY2F0aW9uIGlzIGZhbHNlLCB0aGlzIGlzIGluY29ycmVjdCBmb3IgbmFtZXNwYWNlCiAgICAgICAgICAgICAgICAjIHBhY2thZ2VzLiAgTmFtZXNwYWNlIHBhY2thZ2VzIGhhdmUgbm8gbG9jYXRpb24sIGJ1dCB0aGVpcgogICAgICAgICAgICAgICAgIyBfX3NwZWNfXy5vcmlnaW4gaXMgTm9uZSwgYW5kIHRodXMgdGhlaXIgbW9kdWxlLl9fZmlsZV9fCiAgICAgICAgICAgICAgICAjIHNob3VsZCBhbHNvIGJlIE5vbmUgZm9yIGNvbnNpc3RlbmN5LiAgV2hpbGUgYSBiaXQgb2YgYSBoYWNrLAogICAgICAgICAgICAgICAgIyB0aGlzIGlzIHRoZSBiZXN0IHBsYWNlIHRvIGVuc3VyZSB0aGlzIGNvbnNpc3RlbmN5LgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyBTZWUgIyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvaW1wb3J0bGliLmh0bWwjaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGUKICAgICAgICAgICAgICAgICMgYW5kIGJwby0zMjMwNQogICAgICAgICAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBsb2FkZXIKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICMgX19wYWNrYWdlX18KICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgogICAgICAgIHRyeToKICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gc3BlYy5wYXJlbnQKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICMgX19zcGVjX18KICAgIHRyeToKICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBzcGVjCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgcGFzcwogICAgIyBfX3BhdGhfXwogICAgaWYgb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX3BhdGhfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBYWFggV2Ugc2hvdWxkIGV4dGVuZCBfX3BhdGhfXyBpZiBpdCdzIGFscmVhZHkgYSBsaXN0LgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICMgX19maWxlX18vX19jYWNoZWRfXwogICAgaWYgc3BlYy5oYXNfbG9jYXRpb246CiAgICAgICAgaWYgb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2ZpbGVfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IHNwZWMub3JpZ2luCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgaWYgb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2NhY2hlZF9fJywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgICAgaWYgc3BlYy5jYWNoZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBzcGVjLmNhY2hlZAogICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgIHJldHVybiBtb2R1bGUKCgpkZWYgbW9kdWxlX2Zyb21fc3BlYyhzcGVjKToKICAgICIiIkNyZWF0ZSBhIG1vZHVsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgc3BlYy4iIiIKICAgICMgVHlwaWNhbGx5IGxvYWRlcnMgd2lsbCBub3QgaW1wbGVtZW50IGNyZWF0ZV9tb2R1bGUoKS4KICAgIG1vZHVsZSA9IE5vbmUKICAgIGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdjcmVhdGVfbW9kdWxlJyk6CiAgICAgICAgIyBJZiBjcmVhdGVfbW9kdWxlKCkgcmV0dXJucyBgTm9uZWAgdGhlbiBpdCBtZWFucyBkZWZhdWx0CiAgICAgICAgIyBtb2R1bGUgY3JlYXRpb24gc2hvdWxkIGJlIHVzZWQuCiAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQogICAgZWxpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbG9hZGVycyB0aGF0IGRlZmluZSBleGVjX21vZHVsZSgpICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVzdCBhbHNvIGRlZmluZSBjcmVhdGVfbW9kdWxlKCknKQogICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgbW9kdWxlID0gX25ld19tb2R1bGUoc3BlYy5uYW1lKQogICAgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSkKICAgIHJldHVybiBtb2R1bGUKCgpkZWYgX21vZHVsZV9yZXByX2Zyb21fc3BlYyhzcGVjKToKICAgICIiIlJldHVybiB0aGUgcmVwciB0byB1c2UgZm9yIHRoZSBtb2R1bGUuIiIiCiAgICAjIFdlIG1vc3RseSByZXBsaWNhdGUgX21vZHVsZV9yZXByKCkgdXNpbmcgdGhlIHNwZWMgYXR0cmlidXRlcy4KICAgIG5hbWUgPSAnPycgaWYgc3BlYy5uYW1lIGlzIE5vbmUgZWxzZSBzcGVjLm5hbWUKICAgIGlmIHNwZWMub3JpZ2luIGlzIE5vbmU6CiAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0+Jy5mb3JtYXQobmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoeyFyfSk+Jy5mb3JtYXQobmFtZSwgc3BlYy5sb2FkZXIpCiAgICBlbHNlOgogICAgICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgogICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSBmcm9tIHshcn0+Jy5mb3JtYXQobmFtZSwgc3BlYy5vcmlnaW4pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHt9KT4nLmZvcm1hdChzcGVjLm5hbWUsIHNwZWMub3JpZ2luKQoKCiMgVXNlZCBieSBpbXBvcnRsaWIucmVsb2FkKCkgYW5kIF9sb2FkX21vZHVsZV9zaGltKCkuCmRlZiBfZXhlYyhzcGVjLCBtb2R1bGUpOgogICAgIiIiRXhlY3V0ZSB0aGUgc3BlYydzIHNwZWNpZmllZCBtb2R1bGUgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgogICAgbmFtZSA9IHNwZWMubmFtZQogICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6CiAgICAgICAgaWYgc3lzLm1vZHVsZXMuZ2V0KG5hbWUpIGlzIG5vdCBtb2R1bGU6CiAgICAgICAgICAgIG1zZyA9ICdtb2R1bGUgeyFyfSBub3QgaW4gc3lzLm1vZHVsZXMnLmZvcm1hdChuYW1lKQogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNwZWMubG9hZGVyIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ21pc3NpbmcgbG9hZGVyJywgbmFtZT1zcGVjLm5hbWUpCiAgICAgICAgICAgICAgICAjIE5hbWVzcGFjZSBwYWNrYWdlLgogICAgICAgICAgICAgICAgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSwgb3ZlcnJpZGU9VHJ1ZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUsIG92ZXJyaWRlPVRydWUpCiAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzcGVjLmxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6CiAgICAgICAgICAgICAgICAgICAgbXNnID0gKGYie19vYmplY3RfbmFtZShzcGVjLmxvYWRlcil9LmV4ZWNfbW9kdWxlKCkgbm90IGZvdW5kOyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sgdG8gbG9hZF9tb2R1bGUoKSIpCiAgICAgICAgICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4obXNnLCBJbXBvcnRXYXJuaW5nKQogICAgICAgICAgICAgICAgICAgIHNwZWMubG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIFVwZGF0ZSB0aGUgb3JkZXIgb2YgaW5zZXJ0aW9uIGludG8gc3lzLm1vZHVsZXMgZm9yIG1vZHVsZQogICAgICAgICAgICAjIGNsZWFuLXVwIGF0IHNodXRkb3duLgogICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlcy5wb3Aoc3BlYy5uYW1lKQogICAgICAgICAgICBzeXMubW9kdWxlc1tzcGVjLm5hbWVdID0gbW9kdWxlCiAgICByZXR1cm4gbW9kdWxlCgoKZGVmIF9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUoc3BlYyk6CiAgICAjIEl0IGlzIGFzc3VtZWQgdGhhdCBhbGwgY2FsbGVycyBoYXZlIGJlZW4gd2FybmVkIGFib3V0IHVzaW5nIGxvYWRfbW9kdWxlKCkKICAgICMgYXBwcm9wcmlhdGVseSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgogICAgdHJ5OgogICAgICAgIHNwZWMubG9hZGVyLmxvYWRfbW9kdWxlKHNwZWMubmFtZSkKICAgIGV4Y2VwdDoKICAgICAgICBpZiBzcGVjLm5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzLnBvcChzcGVjLm5hbWUpCiAgICAgICAgICAgIHN5cy5tb2R1bGVzW3NwZWMubmFtZV0gPSBtb2R1bGUKICAgICAgICByYWlzZQogICAgIyBUaGUgbW9kdWxlIG11c3QgYmUgaW4gc3lzLm1vZHVsZXMgYXQgdGhpcyBwb2ludCEKICAgICMgTW92ZSBpdCB0byB0aGUgZW5kIG9mIHN5cy5tb2R1bGVzLgogICAgbW9kdWxlID0gc3lzLm1vZHVsZXMucG9wKHNwZWMubmFtZSkKICAgIHN5cy5tb2R1bGVzW3NwZWMubmFtZV0gPSBtb2R1bGUKICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJywgTm9uZSkgaXMgTm9uZToKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgU2luY2UgbW9kdWxlLl9fcGF0aF9fIG1heSBub3QgbGluZSB1cCB3aXRoCiAgICAgICAgICAgICMgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX3BhdGhzLCB3ZSBjYW4ndCBuZWNlc3NhcmlseSByZWx5CiAgICAgICAgICAgICMgb24gc3BlYy5wYXJlbnQgaGVyZS4KICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fbmFtZV9fCiAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CiAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBzcGVjLm5hbWUucnBhcnRpdGlvbignLicpWzBdCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fc3BlY19fJywgTm9uZSkgaXMgTm9uZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgIHJldHVybiBtb2R1bGUKCmRlZiBfbG9hZF91bmxvY2tlZChzcGVjKToKICAgICMgQSBoZWxwZXIgZm9yIGRpcmVjdCB1c2UgYnkgdGhlIGltcG9ydCBzeXN0ZW0uCiAgICBpZiBzcGVjLmxvYWRlciBpcyBub3QgTm9uZToKICAgICAgICAjIE5vdCBhIG5hbWVzcGFjZSBwYWNrYWdlLgogICAgICAgIGlmIG5vdCBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKICAgICAgICAgICAgbXNnID0gKGYie19vYmplY3RfbmFtZShzcGVjLmxvYWRlcil9LmV4ZWNfbW9kdWxlKCkgbm90IGZvdW5kOyAiCiAgICAgICAgICAgICAgICAgICAgImZhbGxpbmcgYmFjayB0byBsb2FkX21vZHVsZSgpIikKICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4obXNnLCBJbXBvcnRXYXJuaW5nKQogICAgICAgICAgICByZXR1cm4gX2xvYWRfYmFja3dhcmRfY29tcGF0aWJsZShzcGVjKQoKICAgIG1vZHVsZSA9IG1vZHVsZV9mcm9tX3NwZWMoc3BlYykKCiAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBwdXR0aW5nIHRoZSBtb2R1bGUgaW4gc3lzLm1vZHVsZXMKICAgICMgKG90aGVyd2lzZSBhbiBvcHRpbWl6YXRpb24gc2hvcnRjdXQgaW4gaW1wb3J0LmMgYmVjb21lcwogICAgIyB3cm9uZykuCiAgICBzcGVjLl9pbml0aWFsaXppbmcgPSBUcnVlCiAgICB0cnk6CiAgICAgICAgc3lzLm1vZHVsZXNbc3BlYy5uYW1lXSA9IG1vZHVsZQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNwZWMubmFtZSkKICAgICAgICAgICAgICAgICMgQSBuYW1lc3BhY2UgcGFja2FnZSBzbyBkbyBub3RoaW5nLgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW3NwZWMubmFtZV0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICByYWlzZQogICAgICAgICMgTW92ZSB0aGUgbW9kdWxlIHRvIHRoZSBlbmQgb2Ygc3lzLm1vZHVsZXMuCiAgICAgICAgIyBXZSBkb24ndCBlbnN1cmUgdGhhdCB0aGUgaW1wb3J0LXJlbGF0ZWQgbW9kdWxlIGF0dHJpYnV0ZXMgZ2V0CiAgICAgICAgIyBzZXQgaW4gdGhlIHN5cy5tb2R1bGVzIHJlcGxhY2VtZW50IGNhc2UuICBTdWNoIG1vZHVsZXMgYXJlIG9uCiAgICAgICAgIyB0aGVpciBvd24uCiAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXMucG9wKHNwZWMubmFtZSkKICAgICAgICBzeXMubW9kdWxlc1tzcGVjLm5hbWVdID0gbW9kdWxlCiAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnaW1wb3J0IHshcn0gIyB7IXJ9Jywgc3BlYy5uYW1lLCBzcGVjLmxvYWRlcikKICAgIGZpbmFsbHk6CiAgICAgICAgc3BlYy5faW5pdGlhbGl6aW5nID0gRmFsc2UKCiAgICByZXR1cm4gbW9kdWxlCgojIEEgbWV0aG9kIHVzZWQgZHVyaW5nIHRlc3Rpbmcgb2YgX2xvYWRfdW5sb2NrZWQoKSBhbmQgYnkKIyBfbG9hZF9tb2R1bGVfc2hpbSgpLgpkZWYgX2xvYWQoc3BlYyk6CiAgICAiIiJSZXR1cm4gYSBuZXcgbW9kdWxlIG9iamVjdCwgbG9hZGVkIGJ5IHRoZSBzcGVjJ3MgbG9hZGVyLgoKICAgIFRoZSBtb2R1bGUgaXMgbm90IGFkZGVkIHRvIGl0cyBwYXJlbnQuCgogICAgSWYgYSBtb2R1bGUgaXMgYWxyZWFkeSBpbiBzeXMubW9kdWxlcywgdGhhdCBleGlzdGluZyBtb2R1bGUgZ2V0cwogICAgY2xvYmJlcmVkLgoKICAgICIiIgogICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIoc3BlYy5uYW1lKToKICAgICAgICByZXR1cm4gX2xvYWRfdW5sb2NrZWQoc3BlYykKCgojIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpjbGFzcyBCdWlsdGluSW1wb3J0ZXI6CgogICAgIiIiTWV0YSBwYXRoIGltcG9ydCBmb3IgYnVpbHQtaW4gbW9kdWxlcy4KCiAgICBBbGwgbWV0aG9kcyBhcmUgZWl0aGVyIGNsYXNzIG9yIHN0YXRpYyBtZXRob2RzIHRvIGF2b2lkIHRoZSBuZWVkIHRvCiAgICBpbnN0YW50aWF0ZSB0aGUgY2xhc3MuCgogICAgIiIiCgogICAgX09SSUdJTiA9ICJidWlsdC1pbiIKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgbW9kdWxlX3JlcHIobW9kdWxlKToKICAgICAgICAiIiJSZXR1cm4gcmVwciBmb3IgdGhlIG1vZHVsZS4KCiAgICAgICAgVGhlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVGhlIGltcG9ydCBtYWNoaW5lcnkgZG9lcyB0aGUgam9iIGl0c2VsZi4KCiAgICAgICAgIiIiCiAgICAgICAgX3dhcm5pbmdzLndhcm4oIkJ1aWx0aW5JbXBvcnRlci5tb2R1bGVfcmVwcigpIGlzIGRlcHJlY2F0ZWQgYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjEyIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgIHJldHVybiBmJzxtb2R1bGUge21vZHVsZS5fX25hbWVfXyFyfSAoe0J1aWx0aW5JbXBvcnRlci5fT1JJR0lOfSk+JwoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGZpbmRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGlmIF9pbXAuaXNfYnVpbHRpbihmdWxsbmFtZSk6CiAgICAgICAgICAgIHJldHVybiBzcGVjX2Zyb21fbG9hZGVyKGZ1bGxuYW1lLCBjbHMsIG9yaWdpbj1jbHMuX09SSUdJTikKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgIiIiRmluZCB0aGUgYnVpbHQtaW4gbW9kdWxlLgoKICAgICAgICBJZiAncGF0aCcgaXMgZXZlciBzcGVjaWZpZWQgdGhlbiB0aGUgc2VhcmNoIGlzIGNvbnNpZGVyZWQgYSBmYWlsdXJlLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCgogICAgICAgICIiIgogICAgICAgIF93YXJuaW5ncy53YXJuKCJCdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoKSBpcyBkZXByZWNhdGVkIGFuZCAiCiAgICAgICAgICAgICAgICAgICAgICAgInNsYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMjsgdXNlIGZpbmRfc3BlYygpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICBzcGVjID0gY2xzLmZpbmRfc3BlYyhmdWxsbmFtZSwgcGF0aCkKICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIgaWYgc3BlYyBpcyBub3QgTm9uZSBlbHNlIE5vbmUKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgY3JlYXRlX21vZHVsZShzcGVjKToKICAgICAgICAiIiJDcmVhdGUgYSBidWlsdC1pbiBtb2R1bGUiIiIKICAgICAgICBpZiBzcGVjLm5hbWUgbm90IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3shcn0gaXMgbm90IGEgYnVpbHQtaW4gbW9kdWxlJy5mb3JtYXQoc3BlYy5uYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1zcGVjLm5hbWUpCiAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5jcmVhdGVfYnVpbHRpbiwgc3BlYykKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgZXhlY19tb2R1bGUobW9kdWxlKToKICAgICAgICAiIiJFeGVjIGEgYnVpbHQtaW4gbW9kdWxlIiIiCiAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfYnVpbHRpbiwgbW9kdWxlKQoKICAgIEBjbGFzc21ldGhvZAogICAgQF9yZXF1aXJlc19idWlsdGluCiAgICBkZWYgZ2V0X2NvZGUoY2xzLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYnVpbHQtaW4gbW9kdWxlcyBkbyBub3QgaGF2ZSBjb2RlIG9iamVjdHMuIiIiCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBAY2xhc3NtZXRob2QKICAgIEBfcmVxdWlyZXNfYnVpbHRpbgogICAgZGVmIGdldF9zb3VyY2UoY2xzLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYnVpbHQtaW4gbW9kdWxlcyBkbyBub3QgaGF2ZSBzb3VyY2UgY29kZS4iIiIKICAgICAgICByZXR1cm4gTm9uZQoKICAgIEBjbGFzc21ldGhvZAogICAgQF9yZXF1aXJlc19idWlsdGluCiAgICBkZWYgaXNfcGFja2FnZShjbHMsIGZ1bGxuYW1lKToKICAgICAgICAiIiJSZXR1cm4gRmFsc2UgYXMgYnVpbHQtaW4gbW9kdWxlcyBhcmUgbmV2ZXIgcGFja2FnZXMuIiIiCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgbG9hZF9tb2R1bGUgPSBjbGFzc21ldGhvZChfbG9hZF9tb2R1bGVfc2hpbSkKCgpjbGFzcyBGcm96ZW5JbXBvcnRlcjoKCiAgICAiIiJNZXRhIHBhdGggaW1wb3J0IGZvciBmcm96ZW4gbW9kdWxlcy4KCiAgICBBbGwgbWV0aG9kcyBhcmUgZWl0aGVyIGNsYXNzIG9yIHN0YXRpYyBtZXRob2RzIHRvIGF2b2lkIHRoZSBuZWVkIHRvCiAgICBpbnN0YW50aWF0ZSB0aGUgY2xhc3MuCgogICAgIiIiCgogICAgX09SSUdJTiA9ICJmcm96ZW4iCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIG1vZHVsZV9yZXByKG0pOgogICAgICAgICIiIlJldHVybiByZXByIGZvciB0aGUgbW9kdWxlLgoKICAgICAgICBUaGUgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBUaGUgaW1wb3J0IG1hY2hpbmVyeSBkb2VzIHRoZSBqb2IgaXRzZWxmLgoKICAgICAgICAiIiIKICAgICAgICBfd2FybmluZ3Mud2FybigiRnJvemVuSW1wb3J0ZXIubW9kdWxlX3JlcHIoKSBpcyBkZXByZWNhdGVkIGFuZCAiCiAgICAgICAgICAgICAgICAgICAgICAgInNsYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMiIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoe30pPicuZm9ybWF0KG0uX19uYW1lX18sIEZyb3plbkltcG9ydGVyLl9PUklHSU4pCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2ZpeF91cF9tb2R1bGUoY2xzLCBtb2R1bGUpOgogICAgICAgIHNwZWMgPSBtb2R1bGUuX19zcGVjX18KICAgICAgICBzdGF0ZSA9IHNwZWMubG9hZGVyX3N0YXRlCiAgICAgICAgaWYgc3RhdGUgaXMgTm9uZToKICAgICAgICAgICAgIyBUaGUgbW9kdWxlIGlzIG1pc3NpbmcgRnJvemVuSW1wb3J0ZXItc3BlY2lmaWMgdmFsdWVzLgoKICAgICAgICAgICAgIyBGaXggdXAgdGhlIHNwZWMgYXR0cnMuCiAgICAgICAgICAgIG9yaWduYW1lID0gdmFycyhtb2R1bGUpLnBvcCgnX19vcmlnbmFtZV9fJywgTm9uZSkKICAgICAgICAgICAgYXNzZXJ0IG9yaWduYW1lLCAnc2VlIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdCgpJwogICAgICAgICAgICBpc3BrZyA9IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKQogICAgICAgICAgICBhc3NlcnQgX2ltcC5pc19mcm96ZW5fcGFja2FnZShtb2R1bGUuX19uYW1lX18pID09IGlzcGtnLCBpc3BrZwogICAgICAgICAgICBmaWxlbmFtZSwgcGtnZGlyID0gY2xzLl9yZXNvbHZlX2ZpbGVuYW1lKG9yaWduYW1lLCBzcGVjLm5hbWUsIGlzcGtnKQogICAgICAgICAgICBzcGVjLmxvYWRlcl9zdGF0ZSA9IHR5cGUoc3lzLmltcGxlbWVudGF0aW9uKSgKICAgICAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAogICAgICAgICAgICAgICAgb3JpZ25hbWU9b3JpZ25hbWUsCiAgICAgICAgICAgICkKICAgICAgICAgICAgX19wYXRoX18gPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCiAgICAgICAgICAgIGlmIGlzcGtnOgogICAgICAgICAgICAgICAgYXNzZXJ0IF9fcGF0aF9fID09IFtdLCBfX3BhdGhfXwogICAgICAgICAgICAgICAgaWYgcGtnZGlyOgogICAgICAgICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMuaW5zZXJ0KDAsIHBrZ2RpcikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGFzc2VydCBfX3BhdGhfXyBpcyBOb25lLCBfX3BhdGhfXwoKICAgICAgICAgICAgIyBGaXggdXAgdGhlIG1vZHVsZSBhdHRycyAodGhlIGJhcmUgbWluaW11bSkuCiAgICAgICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpLCBtb2R1bGUuX19maWxlX18KICAgICAgICAgICAgaWYgZmlsZW5hbWU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gZmlsZW5hbWUKICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGlmIGlzcGtnOgogICAgICAgICAgICAgICAgaWYgbW9kdWxlLl9fcGF0aF9fICE9IF9fcGF0aF9fOgogICAgICAgICAgICAgICAgICAgIGFzc2VydCBtb2R1bGUuX19wYXRoX18gPT0gW10sIG1vZHVsZS5fX3BhdGhfXwogICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXy5leHRlbmQoX19wYXRoX18pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBUaGVzZSBjaGVja3MgZW5zdXJlIHRoYXQgX2ZpeF91cF9tb2R1bGUoKSBpcyBvbmx5IGNhbGxlZAogICAgICAgICAgICAjIGluIHRoZSByaWdodCBwbGFjZXMuCiAgICAgICAgICAgIF9fcGF0aF9fID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwogICAgICAgICAgICBpc3BrZyA9IF9fcGF0aF9fIGlzIG5vdCBOb25lCiAgICAgICAgICAgICMgQ2hlY2sgdGhlIGxvYWRlciBzdGF0ZS4KICAgICAgICAgICAgYXNzZXJ0IHNvcnRlZCh2YXJzKHN0YXRlKSkgPT0gWydmaWxlbmFtZScsICdvcmlnbmFtZSddLCBzdGF0ZQogICAgICAgICAgICBpZiBzdGF0ZS5vcmlnbmFtZToKICAgICAgICAgICAgICAgICMgVGhlIG9ubHkgZnJvemVuIG1vZHVsZXMgd2l0aCAib3JpZ25hbWUiIHNldCBhcmUgc3RkbGliIG1vZHVsZXMuCiAgICAgICAgICAgICAgICAoX19maWxlX18sIHBrZ2RpciwKICAgICAgICAgICAgICAgICApID0gY2xzLl9yZXNvbHZlX2ZpbGVuYW1lKHN0YXRlLm9yaWduYW1lLCBzcGVjLm5hbWUsIGlzcGtnKQogICAgICAgICAgICAgICAgYXNzZXJ0IHN0YXRlLmZpbGVuYW1lID09IF9fZmlsZV9fLCAoc3RhdGUuZmlsZW5hbWUsIF9fZmlsZV9fKQogICAgICAgICAgICAgICAgaWYgcGtnZGlyOgogICAgICAgICAgICAgICAgICAgIGFzc2VydCBfX3BhdGhfXyA9PSBbcGtnZGlyXSwgKF9fcGF0aF9fLCBwa2dkaXIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGFzc2VydCBfX3BhdGhfXyA9PSAoW10gaWYgaXNwa2cgZWxzZSBOb25lKSwgX19wYXRoX18KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIF9fZmlsZV9fID0gTm9uZQogICAgICAgICAgICAgICAgYXNzZXJ0IHN0YXRlLmZpbGVuYW1lIGlzIE5vbmUsIHN0YXRlLmZpbGVuYW1lCiAgICAgICAgICAgICAgICBhc3NlcnQgX19wYXRoX18gPT0gKFtdIGlmIGlzcGtnIGVsc2UgTm9uZSksIF9fcGF0aF9fCiAgICAgICAgICAgICMgQ2hlY2sgdGhlIGZpbGUgYXR0cnMuCiAgICAgICAgICAgIGlmIF9fZmlsZV9fOgogICAgICAgICAgICAgICAgYXNzZXJ0IGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKQogICAgICAgICAgICAgICAgYXNzZXJ0IG1vZHVsZS5fX2ZpbGVfXyA9PSBfX2ZpbGVfXywgKG1vZHVsZS5fX2ZpbGVfXywgX19maWxlX18pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSwgbW9kdWxlLl9fZmlsZV9fCiAgICAgICAgICAgIGlmIGlzcGtnOgogICAgICAgICAgICAgICAgYXNzZXJ0IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKQogICAgICAgICAgICAgICAgYXNzZXJ0IG1vZHVsZS5fX3BhdGhfXyA9PSBfX3BhdGhfXywgKG1vZHVsZS5fX3BhdGhfXywgX19wYXRoX18pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSwgbW9kdWxlLl9fcGF0aF9fCiAgICAgICAgYXNzZXJ0IG5vdCBzcGVjLmhhc19sb2NhdGlvbgoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9yZXNvbHZlX2ZpbGVuYW1lKGNscywgZnVsbG5hbWUsIGFsaWFzPU5vbmUsIGlzcGtnPUZhbHNlKToKICAgICAgICBpZiBub3QgZnVsbG5hbWUgb3Igbm90IGdldGF0dHIoc3lzLCAnX3N0ZGxpYl9kaXInLCBOb25lKToKICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlcCA9IGNscy5fU0VQCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBzZXAgPSBjbHMuX1NFUCA9ICdcXCcgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSAnLycKCiAgICAgICAgaWYgZnVsbG5hbWUgIT0gYWxpYXM6CiAgICAgICAgICAgIGlmIGZ1bGxuYW1lLnN0YXJ0c3dpdGgoJzwnKToKICAgICAgICAgICAgICAgIGZ1bGxuYW1lID0gZnVsbG5hbWVbMTpdCiAgICAgICAgICAgICAgICBpZiBub3QgaXNwa2c6CiAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUgPSBmJ3tmdWxsbmFtZX0uX19pbml0X18nCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpc3BrZyA9IEZhbHNlCiAgICAgICAgcmVsZmlsZSA9IGZ1bGxuYW1lLnJlcGxhY2UoJy4nLCBzZXApCiAgICAgICAgaWYgaXNwa2c6CiAgICAgICAgICAgIHBrZ2RpciA9IGYne3N5cy5fc3RkbGliX2Rpcn17c2VwfXtyZWxmaWxlfScKICAgICAgICAgICAgZmlsZW5hbWUgPSBmJ3twa2dkaXJ9e3NlcH1fX2luaXRfXy5weScKICAgICAgICBlbHNlOgogICAgICAgICAgICBwa2dkaXIgPSBOb25lCiAgICAgICAgICAgIGZpbGVuYW1lID0gZid7c3lzLl9zdGRsaWJfZGlyfXtzZXB9e3JlbGZpbGV9LnB5JwogICAgICAgIHJldHVybiBmaWxlbmFtZSwgcGtnZGlyCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgogICAgICAgIGluZm8gPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuZmluZF9mcm96ZW4sIGZ1bGxuYW1lKQogICAgICAgIGlmIGluZm8gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAjIFdlIGdldCB0aGUgbWFyc2hhbGVkIGRhdGEgaW4gZXhlY19tb2R1bGUoKSAodGhlIGxvYWRlcgogICAgICAgICMgcGFydCBvZiB0aGUgaW1wb3J0ZXIpLCBpbnN0ZWFkIG9mIGhlcmUgKHRoZSBmaW5kZXIgcGFydCkuCiAgICAgICAgIyBUaGUgbG9hZGVyIGlzIHRoZSB1c3VhbCBwbGFjZSB0byBnZXQgdGhlIGRhdGEgdGhhdCB3aWxsCiAgICAgICAgIyBiZSBsb2FkZWQgaW50byB0aGUgbW9kdWxlLiAgKEZvciBleGFtcGxlLCBzZWUgX0xvYWRlckJhc2ljcwogICAgICAgICMgaW4gX2Jvb3RzdHJhX2V4dGVybmFsLnB5LikgIE1vc3QgaW1wb3J0YW50bHksIHRoaXMgaW1wb3J0ZXIKICAgICAgICAjIGlzIHNpbXBsZXIgaWYgd2Ugd2FpdCB0byBnZXQgdGhlIGRhdGEuCiAgICAgICAgIyBIb3dldmVyLCBnZXR0aW5nIGFzIG11Y2ggZGF0YSBpbiB0aGUgZmluZGVyIGFzIHBvc3NpYmxlCiAgICAgICAgIyB0byBsYXRlciBsb2FkIHRoZSBtb2R1bGUgaXMgb2theSwgYW5kIHNvbWV0aW1lcyBpbXBvcnRhbnQuCiAgICAgICAgIyAoVGhhdCdzIHdoeSBNb2R1bGVTcGVjLmxvYWRlcl9zdGF0ZSBleGlzdHMuKSAgVGhpcyBpcwogICAgICAgICMgZXNwZWNpYWxseSB0cnVlIGlmIGl0IGF2b2lkcyB0aHJvd2luZyBhd2F5IGV4cGVuc2l2ZSBkYXRhCiAgICAgICAgIyB0aGUgbG9hZGVyIHdvdWxkIG90aGVyd2lzZSBkdXBsaWNhdGUgbGF0ZXIgYW5kIGNhbiBiZSBkb25lCiAgICAgICAgIyBlZmZpY2llbnRseS4gIEluIHRoaXMgY2FzZSBpdCBpc24ndCB3b3J0aCBpdC4KICAgICAgICBfLCBpc3BrZywgb3JpZ25hbWUgPSBpbmZvCiAgICAgICAgc3BlYyA9IHNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIGNscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW49Y2xzLl9PUklHSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGFja2FnZT1pc3BrZykKICAgICAgICBmaWxlbmFtZSwgcGtnZGlyID0gY2xzLl9yZXNvbHZlX2ZpbGVuYW1lKG9yaWduYW1lLCBmdWxsbmFtZSwgaXNwa2cpCiAgICAgICAgc3BlYy5sb2FkZXJfc3RhdGUgPSB0eXBlKHN5cy5pbXBsZW1lbnRhdGlvbikoCiAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAogICAgICAgICAgICBvcmlnbmFtZT1vcmlnbmFtZSwKICAgICAgICApCiAgICAgICAgaWYgcGtnZGlyOgogICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zLmluc2VydCgwLCBwa2dkaXIpCiAgICAgICAgcmV0dXJuIHNwZWMKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICIiIkZpbmQgYSBmcm96ZW4gbW9kdWxlLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCgogICAgICAgICIiIgogICAgICAgIF93YXJuaW5ncy53YXJuKCJGcm96ZW5JbXBvcnRlci5maW5kX21vZHVsZSgpIGlzIGRlcHJlY2F0ZWQgYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjEyOyB1c2UgZmluZF9zcGVjKCkgaW5zdGVhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgIHJldHVybiBjbHMgaWYgX2ltcC5pc19mcm96ZW4oZnVsbG5hbWUpIGVsc2UgTm9uZQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNwZWMpOgogICAgICAgICIiIlNldCBfX2ZpbGVfXywgaWYgYWJsZS4iIiIKICAgICAgICBtb2R1bGUgPSBfbmV3X21vZHVsZShzcGVjLm5hbWUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmaWxlbmFtZSA9IHNwZWMubG9hZGVyX3N0YXRlLmZpbGVuYW1lCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgZmlsZW5hbWU6CiAgICAgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBmaWxlbmFtZQogICAgICAgIHJldHVybiBtb2R1bGUKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgZXhlY19tb2R1bGUobW9kdWxlKToKICAgICAgICBzcGVjID0gbW9kdWxlLl9fc3BlY19fCiAgICAgICAgbmFtZSA9IHNwZWMubmFtZQogICAgICAgIGNvZGUgPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuZ2V0X2Zyb3plbl9vYmplY3QsIG5hbWUpCiAgICAgICAgZXhlYyhjb2RlLCBtb2R1bGUuX19kaWN0X18pCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgbG9hZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiTG9hZCBhIGZyb3plbiBtb2R1bGUuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZXhlY19tb2R1bGUoKSBpbnN0ZWFkLgoKICAgICAgICAiIiIKICAgICAgICAjIFdhcm5pbmcgYWJvdXQgZGVwcmVjYXRpb24gaW1wbGVtZW50ZWQgaW4gX2xvYWRfbW9kdWxlX3NoaW0oKS4KICAgICAgICBtb2R1bGUgPSBfbG9hZF9tb2R1bGVfc2hpbShjbHMsIGZ1bGxuYW1lKQogICAgICAgIGluZm8gPSBfaW1wLmZpbmRfZnJvemVuKGZ1bGxuYW1lKQogICAgICAgIGFzc2VydCBpbmZvIGlzIG5vdCBOb25lCiAgICAgICAgXywgaXNwa2csIG9yaWduYW1lID0gaW5mbwogICAgICAgIG1vZHVsZS5fX29yaWduYW1lX18gPSBvcmlnbmFtZQogICAgICAgIHZhcnMobW9kdWxlKS5wb3AoJ19fZmlsZV9fJywgTm9uZSkKICAgICAgICBpZiBpc3BrZzoKICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW10KICAgICAgICBjbHMuX2ZpeF91cF9tb2R1bGUobW9kdWxlKQogICAgICAgIHJldHVybiBtb2R1bGUKCiAgICBAY2xhc3NtZXRob2QKICAgIEBfcmVxdWlyZXNfZnJvemVuCiAgICBkZWYgZ2V0X2NvZGUoY2xzLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBmb3IgdGhlIGZyb3plbiBtb2R1bGUuIiIiCiAgICAgICAgcmV0dXJuIF9pbXAuZ2V0X2Zyb3plbl9vYmplY3QoZnVsbG5hbWUpCgogICAgQGNsYXNzbWV0aG9kCiAgICBAX3JlcXVpcmVzX2Zyb3plbgogICAgZGVmIGdldF9zb3VyY2UoY2xzLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgZnJvemVuIG1vZHVsZXMgZG8gbm90IGhhdmUgc291cmNlIGNvZGUuIiIiCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBAY2xhc3NtZXRob2QKICAgIEBfcmVxdWlyZXNfZnJvemVuCiAgICBkZWYgaXNfcGFja2FnZShjbHMsIGZ1bGxuYW1lKToKICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnJvemVuIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCiAgICAgICAgcmV0dXJuIF9pbXAuaXNfZnJvemVuX3BhY2thZ2UoZnVsbG5hbWUpCgoKIyBJbXBvcnQgaXRzZWxmICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKY2xhc3MgX0ltcG9ydExvY2tDb250ZXh0OgoKICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgdGhlIGltcG9ydCBsb2NrLiIiIgoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIiIiQWNxdWlyZSB0aGUgaW1wb3J0IGxvY2suIiIiCiAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrKToKICAgICAgICAiIiJSZWxlYXNlIHRoZSBpbXBvcnQgbG9jayByZWdhcmRsZXNzIG9mIGFueSByYWlzZWQgZXhjZXB0aW9ucy4iIiIKICAgICAgICBfaW1wLnJlbGVhc2VfbG9jaygpCgoKZGVmIF9yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSwgbGV2ZWwpOgogICAgIiIiUmVzb2x2ZSBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIHRvIGFuIGFic29sdXRlIG9uZS4iIiIKICAgIGJpdHMgPSBwYWNrYWdlLnJzcGxpdCgnLicsIGxldmVsIC0gMSkKICAgIGlmIGxlbihiaXRzKSA8IGxldmVsOgogICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgcGFja2FnZScpCiAgICBiYXNlID0gYml0c1swXQogICAgcmV0dXJuICd7fS57fScuZm9ybWF0KGJhc2UsIG5hbWUpIGlmIG5hbWUgZWxzZSBiYXNlCgoKZGVmIF9maW5kX3NwZWNfbGVnYWN5KGZpbmRlciwgbmFtZSwgcGF0aCk6CiAgICBtc2cgPSAoZiJ7X29iamVjdF9uYW1lKGZpbmRlcil9LmZpbmRfc3BlYygpIG5vdCBmb3VuZDsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIHRvIGZpbmRfbW9kdWxlKCkiKQogICAgX3dhcm5pbmdzLndhcm4obXNnLCBJbXBvcnRXYXJuaW5nKQogICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCiAgICBpZiBsb2FkZXIgaXMgTm9uZToKICAgICAgICByZXR1cm4gTm9uZQogICAgcmV0dXJuIHNwZWNfZnJvbV9sb2FkZXIobmFtZSwgbG9hZGVyKQoKCmRlZiBfZmluZF9zcGVjKG5hbWUsIHBhdGgsIHRhcmdldD1Ob25lKToKICAgICIiIkZpbmQgYSBtb2R1bGUncyBzcGVjLiIiIgogICAgbWV0YV9wYXRoID0gc3lzLm1ldGFfcGF0aAogICAgaWYgbWV0YV9wYXRoIGlzIE5vbmU6CiAgICAgICAgIyBQeUltcG9ydF9DbGVhbnVwKCkgaXMgcnVubmluZyBvciBoYXMgYmVlbiBjYWxsZWQuCiAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInN5cy5tZXRhX3BhdGggaXMgTm9uZSwgUHl0aG9uIGlzIGxpa2VseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNodXR0aW5nIGRvd24iKQoKICAgIGlmIG5vdCBtZXRhX3BhdGg6CiAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5tZXRhX3BhdGggaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQoKICAgICMgV2UgY2hlY2sgc3lzLm1vZHVsZXMgaGVyZSBmb3IgdGhlIHJlbG9hZCBjYXNlLiAgV2hpbGUgYSBwYXNzZWQtaW4KICAgICMgdGFyZ2V0IHdpbGwgdXN1YWxseSBpbmRpY2F0ZSBhIHJlbG9hZCB0aGVyZSBpcyBubyBndWFyYW50ZWUsIHdoZXJlYXMKICAgICMgc3lzLm1vZHVsZXMgcHJvdmlkZXMgb25lLgogICAgaXNfcmVsb2FkID0gbmFtZSBpbiBzeXMubW9kdWxlcwogICAgZm9yIGZpbmRlciBpbiBtZXRhX3BhdGg6CiAgICAgICAgd2l0aCBfSW1wb3J0TG9ja0NvbnRleHQoKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZmluZF9zcGVjID0gZmluZGVyLmZpbmRfc3BlYwogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBzcGVjID0gX2ZpbmRfc3BlY19sZWdhY3koZmluZGVyLCBuYW1lLCBwYXRoKQogICAgICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzcGVjID0gZmluZF9zcGVjKG5hbWUsIHBhdGgsIHRhcmdldCkKICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIFRoZSBwYXJlbnQgaW1wb3J0IG1heSBoYXZlIGFscmVhZHkgaW1wb3J0ZWQgdGhpcyBtb2R1bGUuCiAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIG5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1tuYW1lXQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIF9fc3BlY19fID0gbW9kdWxlLl9fc3BlY19fCiAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhlIGZvdW5kIHNwZWMgc2luY2UgdGhhdCBpcyB0aGUgb25lIHRoYXQKICAgICAgICAgICAgICAgICAgICAjIHdlIHdvdWxkIGhhdmUgdXNlZCBpZiB0aGUgcGFyZW50IG1vZHVsZSBoYWRuJ3QKICAgICAgICAgICAgICAgICAgICAjIGJlYXRlbiB1cyB0byB0aGUgcHVuY2guCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaWYgX19zcGVjX18gaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19zcGVjX18KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCiAgICBlbHNlOgogICAgICAgIHJldHVybiBOb25lCgoKZGVmIF9zYW5pdHlfY2hlY2sobmFtZSwgcGFja2FnZSwgbGV2ZWwpOgogICAgIiIiVmVyaWZ5IGFyZ3VtZW50cyBhcmUgInNhbmUiLiIiIgogICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ21vZHVsZSBuYW1lIG11c3QgYmUgc3RyLCBub3Qge30nLmZvcm1hdCh0eXBlKG5hbWUpKSkKICAgIGlmIGxldmVsIDwgMDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZXZlbCBtdXN0IGJlID49IDAnKQogICAgaWYgbGV2ZWwgPiAwOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19wYWNrYWdlX18gbm90IHNldCB0byBhIHN0cmluZycpCiAgICAgICAgZWxpZiBub3QgcGFja2FnZToKICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2F0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgd2l0aCBubyBrbm93biBwYXJlbnQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2FnZScpCiAgICBpZiBub3QgbmFtZSBhbmQgbGV2ZWwgPT0gMDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbXB0eSBtb2R1bGUgbmFtZScpCgoKX0VSUl9NU0dfUFJFRklYID0gJ05vIG1vZHVsZSBuYW1lZCAnCl9FUlJfTVNHID0gX0VSUl9NU0dfUFJFRklYICsgJ3shcn0nCgpkZWYgX2dldF9tb2R1bGVfbm90X2ZvdW5kX2Vycm9yKG5hbWUpOgogICAgcmV0dXJuIE1vZHVsZU5vdEZvdW5kRXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCgpkZWYgX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0Xyk6CiAgICBwYXRoID0gTm9uZQogICAgcGFyZW50ID0gbmFtZS5ycGFydGl0aW9uKCcuJylbMF0KICAgIHBhcmVudF9zcGVjID0gTm9uZQogICAgaWYgcGFyZW50OgogICAgICAgIGlmIHBhcmVudCBub3QgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgcGFyZW50KQogICAgICAgICMgQ3Jhenkgc2lkZS1lZmZlY3RzIQogICAgICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQogICAgICAgIHBhcmVudF9tb2R1bGUgPSBzeXMubW9kdWxlc1twYXJlbnRdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5fX3BhdGhfXwogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsgeyFyfSBpcyBub3QgYSBwYWNrYWdlJykuZm9ybWF0KG5hbWUsIHBhcmVudCkKICAgICAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCiAgICAgICAgcGFyZW50X3NwZWMgPSBwYXJlbnRfbW9kdWxlLl9fc3BlY19fCiAgICAgICAgY2hpbGQgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQogICAgc3BlYyA9IF9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICByYWlzZSBfZ2V0X21vZHVsZV9ub3RfZm91bmRfZXJyb3IobmFtZSkKICAgIGVsc2U6CiAgICAgICAgaWYgcGFyZW50X3NwZWM6CiAgICAgICAgICAgICMgVGVtcG9yYXJpbHkgYWRkIGNoaWxkIHdlIGFyZSBjdXJyZW50bHkgaW1wb3J0aW5nIHRvIHBhcmVudCdzCiAgICAgICAgICAgICMgX3VuaW5pdGlhbGl6ZWRfc3VibW9kdWxlcyBmb3IgY2lyY3VsYXIgaW1wb3J0IHRyYWNraW5nLgogICAgICAgICAgICBwYXJlbnRfc3BlYy5fdW5pbml0aWFsaXplZF9zdWJtb2R1bGVzLmFwcGVuZChjaGlsZCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1vZHVsZSA9IF9sb2FkX3VubG9ja2VkKHNwZWMpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgaWYgcGFyZW50X3NwZWM6CiAgICAgICAgICAgICAgICBwYXJlbnRfc3BlYy5fdW5pbml0aWFsaXplZF9zdWJtb2R1bGVzLnBvcCgpCiAgICBpZiBwYXJlbnQ6CiAgICAgICAgIyBTZXQgdGhlIG1vZHVsZSBhcyBhbiBhdHRyaWJ1dGUgb24gaXRzIHBhcmVudC4KICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQogICAgICAgIHRyeToKICAgICAgICAgICAgc2V0YXR0cihwYXJlbnRfbW9kdWxlLCBjaGlsZCwgbW9kdWxlKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgbXNnID0gZiJDYW5ub3Qgc2V0IGFuIGF0dHJpYnV0ZSBvbiB7cGFyZW50IXJ9IGZvciBjaGlsZCBtb2R1bGUge2NoaWxkIXJ9IgogICAgICAgICAgICBfd2FybmluZ3Mud2Fybihtc2csIEltcG9ydFdhcm5pbmcpCiAgICByZXR1cm4gbW9kdWxlCgoKX05FRURTX0xPQURJTkcgPSBvYmplY3QoKQoKCmRlZiBfZmluZF9hbmRfbG9hZChuYW1lLCBpbXBvcnRfKToKICAgICIiIkZpbmQgYW5kIGxvYWQgdGhlIG1vZHVsZS4iIiIKCiAgICAjIE9wdGltaXphdGlvbjogd2UgYXZvaWQgdW5uZWVkZWQgbW9kdWxlIGxvY2tpbmcgaWYgdGhlIG1vZHVsZQogICAgIyBhbHJlYWR5IGV4aXN0cyBpbiBzeXMubW9kdWxlcyBhbmQgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuCiAgICBtb2R1bGUgPSBzeXMubW9kdWxlcy5nZXQobmFtZSwgX05FRURTX0xPQURJTkcpCiAgICBpZiAobW9kdWxlIGlzIF9ORUVEU19MT0FESU5HIG9yCiAgICAgICAgZ2V0YXR0cihnZXRhdHRyKG1vZHVsZSwgIl9fc3BlY19fIiwgTm9uZSksICJfaW5pdGlhbGl6aW5nIiwgRmFsc2UpKToKICAgICAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihuYW1lKToKICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXMuZ2V0KG5hbWUsIF9ORUVEU19MT0FESU5HKQogICAgICAgICAgICBpZiBtb2R1bGUgaXMgX05FRURTX0xPQURJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0XykKCiAgICAgICAgIyBPcHRpbWl6YXRpb246IG9ubHkgY2FsbCBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSBpZgogICAgICAgICMgbW9kdWxlLl9fc3BlY19fLl9pbml0aWFsaXppbmcgaXMgVHJ1ZS4KICAgICAgICAjIE5PVEU6IGJlY2F1c2Ugb2YgdGhpcywgaW5pdGlhbGl6aW5nIG11c3QgYmUgc2V0ICpiZWZvcmUqCiAgICAgICAgIyBwdXR0aW5nIHRoZSBuZXcgbW9kdWxlIGluIHN5cy5tb2R1bGVzLgogICAgICAgIF9sb2NrX3VubG9ja19tb2R1bGUobmFtZSkKCiAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICBtZXNzYWdlID0gKCdpbXBvcnQgb2Yge30gaGFsdGVkOyAnCiAgICAgICAgICAgICAgICAgICAnTm9uZSBpbiBzeXMubW9kdWxlcycuZm9ybWF0KG5hbWUpKQogICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IobWVzc2FnZSwgbmFtZT1uYW1lKQoKICAgIHJldHVybiBtb2R1bGUKCgpkZWYgX2djZF9pbXBvcnQobmFtZSwgcGFja2FnZT1Ob25lLCBsZXZlbD0wKToKICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgYmFzZWQgb24gaXRzIG5hbWUsIHRoZSBwYWNrYWdlIHRoZSBjYWxsIGlzCiAgICBiZWluZyBtYWRlIGZyb20sIGFuZCB0aGUgbGV2ZWwgYWRqdXN0bWVudC4KCiAgICBUaGlzIGZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiBmdW5jdGlvbmFsaXR5CiAgICBiZXR3ZWVuIGltcG9ydF9tb2R1bGUgYW5kIF9faW1wb3J0X18uIFRoaXMgaW5jbHVkZXMgc2V0dGluZyBfX3BhY2thZ2VfXyBpZgogICAgdGhlIGxvYWRlciBkaWQgbm90LgoKICAgICIiIgogICAgX3Nhbml0eV9jaGVjayhuYW1lLCBwYWNrYWdlLCBsZXZlbCkKICAgIGlmIGxldmVsID4gMDoKICAgICAgICBuYW1lID0gX3Jlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlLCBsZXZlbCkKICAgIHJldHVybiBfZmluZF9hbmRfbG9hZChuYW1lLCBfZ2NkX2ltcG9ydCkKCgpkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfLCAqLCByZWN1cnNpdmU9RmFsc2UpOgogICAgIiIiRmlndXJlIG91dCB3aGF0IF9faW1wb3J0X18gc2hvdWxkIHJldHVybi4KCiAgICBUaGUgaW1wb3J0XyBwYXJhbWV0ZXIgaXMgYSBjYWxsYWJsZSB3aGljaCB0YWtlcyB0aGUgbmFtZSBvZiBtb2R1bGUgdG8KICAgIGltcG9ydC4gSXQgaXMgcmVxdWlyZWQgdG8gZGVjb3VwbGUgdGhlIGZ1bmN0aW9uIGZyb20gYXNzdW1pbmcgaW1wb3J0bGliJ3MKICAgIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBpcyBkZXNpcmVkLgoKICAgICIiIgogICAgIyBUaGUgaGVsbCB0aGF0IGlzIGZyb21saXN0IC4uLgogICAgIyBJZiBhIHBhY2thZ2Ugd2FzIGltcG9ydGVkLCB0cnkgdG8gaW1wb3J0IHN0dWZmIGZyb20gZnJvbWxpc3QuCiAgICBmb3IgeCBpbiBmcm9tbGlzdDoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh4LCBzdHIpOgogICAgICAgICAgICBpZiByZWN1cnNpdmU6CiAgICAgICAgICAgICAgICB3aGVyZSA9IG1vZHVsZS5fX25hbWVfXyArICcuX19hbGxfXycKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHdoZXJlID0gImBgZnJvbSBsaXN0JyciCiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIkl0ZW0gaW4ge3doZXJlfSBtdXN0IGJlIHN0ciwgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJub3Qge3R5cGUoeCkuX19uYW1lX199IikKICAgICAgICBlbGlmIHggPT0gJyonOgogICAgICAgICAgICBpZiBub3QgcmVjdXJzaXZlIGFuZCBoYXNhdHRyKG1vZHVsZSwgJ19fYWxsX18nKToKICAgICAgICAgICAgICAgIF9oYW5kbGVfZnJvbWxpc3QobW9kdWxlLCBtb2R1bGUuX19hbGxfXywgaW1wb3J0XywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlPVRydWUpCiAgICAgICAgZWxpZiBub3QgaGFzYXR0cihtb2R1bGUsIHgpOgogICAgICAgICAgICBmcm9tX25hbWUgPSAne30ue30nLmZvcm1hdChtb2R1bGUuX19uYW1lX18sIHgpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgZnJvbV9uYW1lKQogICAgICAgICAgICBleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGRpY3RhdGVzIHdlIGlnbm9yZSBmYWlsZWQKICAgICAgICAgICAgICAgICMgaW1wb3J0cyB0cmlnZ2VyZWQgYnkgZnJvbWxpc3QgZm9yIG1vZHVsZXMgdGhhdCBkb24ndAogICAgICAgICAgICAgICAgIyBleGlzdC4KICAgICAgICAgICAgICAgIGlmIChleGMubmFtZSA9PSBmcm9tX25hbWUgYW5kCiAgICAgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXMuZ2V0KGZyb21fbmFtZSwgX05FRURTX0xPQURJTkcpIGlzIG5vdCBOb25lKToKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgcmFpc2UKICAgIHJldHVybiBtb2R1bGUKCgpkZWYgX2NhbGNfX19wYWNrYWdlX18oZ2xvYmFscyk6CiAgICAiIiJDYWxjdWxhdGUgd2hhdCBfX3BhY2thZ2VfXyBzaG91bGQgYmUuCgogICAgX19wYWNrYWdlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCBvciBjb3VsZCBiZSBzZXQgdG8gTm9uZQogICAgdG8gcmVwcmVzZW50IHRoYXQgaXRzIHByb3BlciB2YWx1ZSBpcyB1bmtub3duLgoKICAgICIiIgogICAgcGFja2FnZSA9IGdsb2JhbHMuZ2V0KCdfX3BhY2thZ2VfXycpCiAgICBzcGVjID0gZ2xvYmFscy5nZXQoJ19fc3BlY19fJykKICAgIGlmIHBhY2thZ2UgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgcGFja2FnZSAhPSBzcGVjLnBhcmVudDoKICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oIl9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiKHtwYWNrYWdlIXJ9ICE9IHtzcGVjLnBhcmVudCFyfSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRXYXJuaW5nLCBzdGFja2xldmVsPTMpCiAgICAgICAgcmV0dXJuIHBhY2thZ2UKICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gc3BlYy5wYXJlbnQKICAgIGVsc2U6CiAgICAgICAgX3dhcm5pbmdzLndhcm4oImNhbid0IHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yIF9fcGFja2FnZV9fLCAiCiAgICAgICAgICAgICAgICAgICAgICAgImZhbGxpbmcgYmFjayBvbiBfX25hbWVfXyBhbmQgX19wYXRoX18iLAogICAgICAgICAgICAgICAgICAgICAgIEltcG9ydFdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQogICAgICAgIGlmICdfX3BhdGhfXycgbm90IGluIGdsb2JhbHM6CiAgICAgICAgICAgIHBhY2thZ2UgPSBwYWNrYWdlLnJwYXJ0aXRpb24oJy4nKVswXQogICAgcmV0dXJuIHBhY2thZ2UKCgpkZWYgX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwgbGV2ZWw9MCk6CiAgICAiIiJJbXBvcnQgYSBtb2R1bGUuCgogICAgVGhlICdnbG9iYWxzJyBhcmd1bWVudCBpcyB1c2VkIHRvIGluZmVyIHdoZXJlIHRoZSBpbXBvcnQgaXMgb2NjdXJyaW5nIGZyb20KICAgIHRvIGhhbmRsZSByZWxhdGl2ZSBpbXBvcnRzLiBUaGUgJ2xvY2FscycgYXJndW1lbnQgaXMgaWdub3JlZC4gVGhlCiAgICAnZnJvbWxpc3QnIGFyZ3VtZW50IHNwZWNpZmllcyB3aGF0IHNob3VsZCBleGlzdCBhcyBhdHRyaWJ1dGVzIG9uIHRoZSBtb2R1bGUKICAgIGJlaW5nIGltcG9ydGVkIChlLmcuIGBgZnJvbSBtb2R1bGUgaW1wb3J0IDxmcm9tbGlzdD5gYCkuICBUaGUgJ2xldmVsJwogICAgYXJndW1lbnQgcmVwcmVzZW50cyB0aGUgcGFja2FnZSBsb2NhdGlvbiB0byBpbXBvcnQgZnJvbSBpbiBhIHJlbGF0aXZlCiAgICBpbXBvcnQgKGUuZy4gYGBmcm9tIC4ucGtnIGltcG9ydCBtb2RgYCB3b3VsZCBoYXZlIGEgJ2xldmVsJyBvZiAyKS4KCiAgICAiIiIKICAgIGlmIGxldmVsID09IDA6CiAgICAgICAgbW9kdWxlID0gX2djZF9pbXBvcnQobmFtZSkKICAgIGVsc2U6CiAgICAgICAgZ2xvYmFsc18gPSBnbG9iYWxzIGlmIGdsb2JhbHMgaXMgbm90IE5vbmUgZWxzZSB7fQogICAgICAgIHBhY2thZ2UgPSBfY2FsY19fX3BhY2thZ2VfXyhnbG9iYWxzXykKICAgICAgICBtb2R1bGUgPSBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlLCBsZXZlbCkKICAgIGlmIG5vdCBmcm9tbGlzdDoKICAgICAgICAjIFJldHVybiB1cCB0byB0aGUgZmlyc3QgZG90IGluICduYW1lJy4gVGhpcyBpcyBjb21wbGljYXRlZCBieSB0aGUgZmFjdAogICAgICAgICMgdGhhdCAnbmFtZScgbWF5IGJlIHJlbGF0aXZlLgogICAgICAgIGlmIGxldmVsID09IDA6CiAgICAgICAgICAgIHJldHVybiBfZ2NkX2ltcG9ydChuYW1lLnBhcnRpdGlvbignLicpWzBdKQogICAgICAgIGVsaWYgbm90IG5hbWU6CiAgICAgICAgICAgIHJldHVybiBtb2R1bGUKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgdG8gc2xpY2UgdGhlIG1vZHVsZSdzIG5hbWUgdXAgdG8gdGhlIGZpcnN0IGRvdAogICAgICAgICAgICAjIGluICduYW1lJy4KICAgICAgICAgICAgY3V0X29mZiA9IGxlbihuYW1lKSAtIGxlbihuYW1lLnBhcnRpdGlvbignLicpWzBdKQogICAgICAgICAgICAjIFNsaWNlIGVuZCBuZWVkcyB0byBiZSBwb3NpdGl2ZSB0byBhbGxldmlhdGUgbmVlZCB0byBzcGVjaWFsLWNhc2UKICAgICAgICAgICAgIyB3aGVuIGBgJy4nIG5vdCBpbiBuYW1lYGAuCiAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1ttb2R1bGUuX19uYW1lX19bOmxlbihtb2R1bGUuX19uYW1lX18pLWN1dF9vZmZdXQogICAgZWxpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CiAgICAgICAgcmV0dXJuIF9oYW5kbGVfZnJvbWxpc3QobW9kdWxlLCBmcm9tbGlzdCwgX2djZF9pbXBvcnQpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBtb2R1bGUKCgpkZWYgX2J1aWx0aW5fZnJvbV9uYW1lKG5hbWUpOgogICAgc3BlYyA9IEJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWMobmFtZSkKICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbm8gYnVpbHQtaW4gbW9kdWxlIG5hbWVkICcgKyBuYW1lKQogICAgcmV0dXJuIF9sb2FkX3VubG9ja2VkKHNwZWMpCgoKZGVmIF9zZXR1cChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSk6CiAgICAiIiJTZXR1cCBpbXBvcnRsaWIgYnkgaW1wb3J0aW5nIG5lZWRlZCBidWlsdC1pbiBtb2R1bGVzIGFuZCBpbmplY3RpbmcgdGhlbQogICAgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KCiAgICBBcyBzeXMgaXMgbmVlZGVkIGZvciBzeXMubW9kdWxlcyBhY2Nlc3MgYW5kIF9pbXAgaXMgbmVlZGVkIHRvIGxvYWQgYnVpbHQtaW4KICAgIG1vZHVsZXMsIHRob3NlIHR3byBtb2R1bGVzIG11c3QgYmUgZXhwbGljaXRseSBwYXNzZWQgaW4uCgogICAgIiIiCiAgICBnbG9iYWwgX2ltcCwgc3lzCiAgICBfaW1wID0gX2ltcF9tb2R1bGUKICAgIHN5cyA9IHN5c19tb2R1bGUKCiAgICAjIFNldCB1cCB0aGUgc3BlYyBmb3IgZXhpc3RpbmcgYnVpbHRpbi9mcm96ZW4gbW9kdWxlcy4KICAgIG1vZHVsZV90eXBlID0gdHlwZShzeXMpCiAgICBmb3IgbmFtZSwgbW9kdWxlIGluIHN5cy5tb2R1bGVzLml0ZW1zKCk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGUsIG1vZHVsZV90eXBlKToKICAgICAgICAgICAgaWYgbmFtZSBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6CiAgICAgICAgICAgICAgICBsb2FkZXIgPSBCdWlsdGluSW1wb3J0ZXIKICAgICAgICAgICAgZWxpZiBfaW1wLmlzX2Zyb3plbihuYW1lKToKICAgICAgICAgICAgICAgIGxvYWRlciA9IEZyb3plbkltcG9ydGVyCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBzcGVjID0gX3NwZWNfZnJvbV9tb2R1bGUobW9kdWxlLCBsb2FkZXIpCiAgICAgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUpCiAgICAgICAgICAgIGlmIGxvYWRlciBpcyBGcm96ZW5JbXBvcnRlcjoKICAgICAgICAgICAgICAgIGxvYWRlci5fZml4X3VwX21vZHVsZShtb2R1bGUpCgogICAgIyBEaXJlY3RseSBsb2FkIGJ1aWx0LWluIG1vZHVsZXMgbmVlZGVkIGR1cmluZyBib290c3RyYXAuCiAgICBzZWxmX21vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQogICAgZm9yIGJ1aWx0aW5fbmFtZSBpbiAoJ190aHJlYWQnLCAnX3dhcm5pbmdzJywgJ193ZWFrcmVmJyk6CiAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgYnVpbHRpbl9tb2R1bGUgPSBfYnVpbHRpbl9mcm9tX25hbWUoYnVpbHRpbl9uYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQogICAgICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsIGJ1aWx0aW5fbmFtZSwgYnVpbHRpbl9tb2R1bGUpCgoKZGVmIF9pbnN0YWxsKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKICAgICIiIkluc3RhbGwgaW1wb3J0ZXJzIGZvciBidWlsdGluIGFuZCBmcm96ZW4gbW9kdWxlcyIiIgogICAgX3NldHVwKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKQoKICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKEJ1aWx0aW5JbXBvcnRlcikKICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKEZyb3plbkltcG9ydGVyKQoKCmRlZiBfaW5zdGFsbF9leHRlcm5hbF9pbXBvcnRlcnMoKToKICAgICIiIkluc3RhbGwgaW1wb3J0ZXJzIHRoYXQgcmVxdWlyZSBleHRlcm5hbCBmaWxlc3lzdGVtIGFjY2VzcyIiIgogICAgZ2xvYmFsIF9ib290c3RyYXBfZXh0ZXJuYWwKICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAogICAgX2Jvb3RzdHJhcF9leHRlcm5hbCA9IF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsCiAgICBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbC5faW5zdGFsbChzeXMubW9kdWxlc1tfX25hbWVfX10pClBLAwQUAAAAAAADIKNWN9xlfvgMAQD4DAEAIAAAAGltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IiIiQ29yZSBpbXBsZW1lbnRhdGlvbiBvZiBwYXRoLWJhc2VkIGltcG9ydC4KClRoaXMgbW9kdWxlIGlzIE5PVCBtZWFudCB0byBiZSBkaXJlY3RseSBpbXBvcnRlZCEgSXQgaGFzIGJlZW4gZGVzaWduZWQgc3VjaAp0aGF0IGl0IGNhbiBiZSBib290c3RyYXBwZWQgaW50byBQeXRob24gYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4gQXMKc3VjaCBpdCByZXF1aXJlcyB0aGUgaW5qZWN0aW9uIG9mIHNwZWNpZmljIG1vZHVsZXMgYW5kIGF0dHJpYnV0ZXMgaW4gb3JkZXIgdG8Kd29yay4gT25lIHNob3VsZCB1c2UgaW1wb3J0bGliIGFzIHRoZSBwdWJsaWMtZmFjaW5nIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUuCgoiIiIKIyBJTVBPUlRBTlQ6IFdoZW5ldmVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLCBiZSBzdXJlIHRvIHJ1biBhIHRvcC1sZXZlbAojIGBtYWtlIHJlZ2VuLWltcG9ydGxpYmAgZm9sbG93ZWQgYnkgYG1ha2VgIGluIG9yZGVyIHRvIGdldCB0aGUgZnJvemVuIHZlcnNpb24KIyBvZiB0aGUgbW9kdWxlIHVwZGF0ZWQuIE5vdCBkb2luZyBzbyB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKIyBhbGwgb3RoZXJzIHdobyBkb24ndCBoYXZlIGEgLi9weXRob24gYXJvdW5kIHRvIGZyZWV6ZSB0aGUgbW9kdWxlIGluIHRoZSBlYXJseQojIHN0YWdlcyBvZiBjb21waWxhdGlvbi4KIwoKIyBTZWUgaW1wb3J0bGliLl9zZXR1cCgpIGZvciB3aGF0IGlzIGluamVjdGVkIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCgojIFdoZW4gZWRpdGluZyB0aGlzIGNvZGUgYmUgYXdhcmUgdGhhdCBjb2RlIGV4ZWN1dGVkIGF0IGltcG9ydCB0aW1lIENBTk5PVAojIHJlZmVyZW5jZSBhbnkgaW5qZWN0ZWQgb2JqZWN0cyEgVGhpcyBpbmNsdWRlcyBub3Qgb25seSBnbG9iYWwgY29kZSBidXQgYWxzbwojIGFueXRoaW5nIHNwZWNpZmllZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCgojIE1vZHVsZSBpbmplY3RlZCBtYW51YWxseSBieSBfc2V0X2Jvb3RzdHJhcF9tb2R1bGUoKQpfYm9vdHN0cmFwID0gTm9uZQoKIyBJbXBvcnQgYnVpbHRpbiBtb2R1bGVzCmltcG9ydCBfaW1wCmltcG9ydCBfaW8KaW1wb3J0IHN5cwppbXBvcnQgX3dhcm5pbmdzCmltcG9ydCBtYXJzaGFsCgoKX01TX1dJTkRPV1MgPSAoc3lzLnBsYXRmb3JtID09ICd3aW4zMicpCmlmIF9NU19XSU5ET1dTOgogICAgaW1wb3J0IG50IGFzIF9vcwogICAgaW1wb3J0IHdpbnJlZwplbHNlOgogICAgaW1wb3J0IHBvc2l4IGFzIF9vcwoKCmlmIF9NU19XSU5ET1dTOgogICAgcGF0aF9zZXBhcmF0b3JzID0gWydcXCcsICcvJ10KZWxzZToKICAgIHBhdGhfc2VwYXJhdG9ycyA9IFsnLyddCiMgQXNzdW1wdGlvbiBtYWRlIGluIF9wYXRoX2pvaW4oKQphc3NlcnQgYWxsKGxlbihzZXApID09IDEgZm9yIHNlcCBpbiBwYXRoX3NlcGFyYXRvcnMpCnBhdGhfc2VwID0gcGF0aF9zZXBhcmF0b3JzWzBdCnBhdGhfc2VwX3R1cGxlID0gdHVwbGUocGF0aF9zZXBhcmF0b3JzKQpwYXRoX3NlcGFyYXRvcnMgPSAnJy5qb2luKHBhdGhfc2VwYXJhdG9ycykKX3BhdGhzZXBzX3dpdGhfY29sb24gPSB7Zic6e3N9JyBmb3IgcyBpbiBwYXRoX3NlcGFyYXRvcnN9CgoKIyBCb290c3RyYXAtcmVsYXRlZCBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVNfU1RSX0tFWSA9ICd3aW4nLApfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVNfQllURVNfS0VZID0gJ2N5Z3dpbicsICdkYXJ3aW4nCl9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyA9ICAoX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TX0JZVEVTX0tFWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TX1NUUl9LRVkpCgoKZGVmIF9tYWtlX3JlbGF4X2Nhc2UoKToKICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CiAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TX1NUUl9LRVkpOgogICAgICAgICAgICBrZXkgPSAnUFlUSE9OQ0FTRU9LJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGtleSA9IGInUFlUSE9OQ0FTRU9LJwoKICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQgaWdub3JlIGVudmlyb25tZW50IGZsYWdzIGFyZSBub3Qgc2V0LiIiIgogICAgICAgICAgICByZXR1cm4gbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQgYW5kIGtleSBpbiBfb3MuZW52aXJvbgogICAgZWxzZToKICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gX3JlbGF4X2Nhc2UKCl9yZWxheF9jYXNlID0gX21ha2VfcmVsYXhfY2FzZSgpCgoKZGVmIF9wYWNrX3VpbnQzMih4KToKICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLiIiIgogICAgcmV0dXJuIChpbnQoeCkgJiAweEZGRkZGRkZGKS50b19ieXRlcyg0LCAnbGl0dGxlJykKCgpkZWYgX3VucGFja191aW50MzIoZGF0YSk6CiAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLiIiIgogICAgYXNzZXJ0IGxlbihkYXRhKSA9PSA0CiAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMoZGF0YSwgJ2xpdHRsZScpCgpkZWYgX3VucGFja191aW50MTYoZGF0YSk6CiAgICAiIiJDb252ZXJ0IDIgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLiIiIgogICAgYXNzZXJ0IGxlbihkYXRhKSA9PSAyCiAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMoZGF0YSwgJ2xpdHRsZScpCgoKaWYgX01TX1dJTkRPV1M6CiAgICBkZWYgX3BhdGhfam9pbigqcGF0aF9wYXJ0cyk6CiAgICAgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbigpLiIiIgogICAgICAgIGlmIG5vdCBwYXRoX3BhcnRzOgogICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICBpZiBsZW4ocGF0aF9wYXJ0cykgPT0gMToKICAgICAgICAgICAgcmV0dXJuIHBhdGhfcGFydHNbMF0KICAgICAgICByb290ID0gIiIKICAgICAgICBwYXRoID0gW10KICAgICAgICBmb3IgbmV3X3Jvb3QsIHRhaWwgaW4gbWFwKF9vcy5fcGF0aF9zcGxpdHJvb3QsIHBhdGhfcGFydHMpOgogICAgICAgICAgICBpZiBuZXdfcm9vdC5zdGFydHN3aXRoKHBhdGhfc2VwX3R1cGxlKSBvciBuZXdfcm9vdC5lbmRzd2l0aChwYXRoX3NlcF90dXBsZSk6CiAgICAgICAgICAgICAgICByb290ID0gbmV3X3Jvb3QucnN0cmlwKHBhdGhfc2VwYXJhdG9ycykgb3Igcm9vdAogICAgICAgICAgICAgICAgcGF0aCA9IFtwYXRoX3NlcCArIHRhaWxdCiAgICAgICAgICAgIGVsaWYgbmV3X3Jvb3QuZW5kc3dpdGgoJzonKToKICAgICAgICAgICAgICAgIGlmIHJvb3QuY2FzZWZvbGQoKSAhPSBuZXdfcm9vdC5jYXNlZm9sZCgpOgogICAgICAgICAgICAgICAgICAgICMgRHJpdmUgcmVsYXRpdmUgcGF0aHMgaGF2ZSB0byBiZSByZXNvbHZlZCBieSB0aGUgT1MsIHNvIHdlIHJlc2V0IHRoZQogICAgICAgICAgICAgICAgICAgICMgdGFpbCBidXQgZG8gbm90IGFkZCBhIHBhdGhfc2VwIHByZWZpeC4KICAgICAgICAgICAgICAgICAgICByb290ID0gbmV3X3Jvb3QKICAgICAgICAgICAgICAgICAgICBwYXRoID0gW3RhaWxdCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHBhdGguYXBwZW5kKHRhaWwpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByb290ID0gbmV3X3Jvb3Qgb3Igcm9vdAogICAgICAgICAgICAgICAgcGF0aC5hcHBlbmQodGFpbCkKICAgICAgICBwYXRoID0gW3AucnN0cmlwKHBhdGhfc2VwYXJhdG9ycykgZm9yIHAgaW4gcGF0aCBpZiBwXQogICAgICAgIGlmIGxlbihwYXRoKSA9PSAxIGFuZCBub3QgcGF0aFswXToKICAgICAgICAgICAgIyBBdm9pZCBsb3NpbmcgdGhlIHJvb3QncyB0cmFpbGluZyBzZXBhcmF0b3Igd2hlbiBqb2luaW5nIHdpdGggbm90aGluZwogICAgICAgICAgICByZXR1cm4gcm9vdCArIHBhdGhfc2VwCiAgICAgICAgcmV0dXJuIHJvb3QgKyBwYXRoX3NlcC5qb2luKHBhdGgpCgplbHNlOgogICAgZGVmIF9wYXRoX2pvaW4oKnBhdGhfcGFydHMpOgogICAgICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmpvaW4oKS4iIiIKICAgICAgICByZXR1cm4gcGF0aF9zZXAuam9pbihbcGFydC5yc3RyaXAocGF0aF9zZXBhcmF0b3JzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFydCBpbiBwYXRoX3BhcnRzIGlmIHBhcnRdKQoKCmRlZiBfcGF0aF9zcGxpdChwYXRoKToKICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0KCkuIiIiCiAgICBpID0gbWF4KHBhdGgucmZpbmQocCkgZm9yIHAgaW4gcGF0aF9zZXBhcmF0b3JzKQogICAgaWYgaSA8IDA6CiAgICAgICAgcmV0dXJuICcnLCBwYXRoCiAgICByZXR1cm4gcGF0aFs6aV0sIHBhdGhbaSArIDE6XQoKCmRlZiBfcGF0aF9zdGF0KHBhdGgpOgogICAgIiIiU3RhdCB0aGUgcGF0aC4KCiAgICBNYWRlIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gbWFrZSBpdCBlYXNpZXIgdG8gb3ZlcnJpZGUgaW4gZXhwZXJpbWVudHMKICAgIChlLmcuIGNhY2hlIHN0YXQgcmVzdWx0cykuCgogICAgIiIiCiAgICByZXR1cm4gX29zLnN0YXQocGF0aCkKCgpkZWYgX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIG1vZGUpOgogICAgIiIiVGVzdCB3aGV0aGVyIHRoZSBwYXRoIGlzIHRoZSBzcGVjaWZpZWQgbW9kZSB0eXBlLiIiIgogICAgdHJ5OgogICAgICAgIHN0YXRfaW5mbyA9IF9wYXRoX3N0YXQocGF0aCkKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHJldHVybiBGYWxzZQogICAgcmV0dXJuIChzdGF0X2luZm8uc3RfbW9kZSAmIDBvMTcwMDAwKSA9PSBtb2RlCgoKZGVmIF9wYXRoX2lzZmlsZShwYXRoKToKICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzZmlsZS4iIiIKICAgIHJldHVybiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgMG8xMDAwMDApCgoKZGVmIF9wYXRoX2lzZGlyKHBhdGgpOgogICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNkaXIuIiIiCiAgICBpZiBub3QgcGF0aDoKICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCiAgICByZXR1cm4gX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIDBvMDQwMDAwKQoKCmlmIF9NU19XSU5ET1dTOgogICAgZGVmIF9wYXRoX2lzYWJzKHBhdGgpOgogICAgICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzYWJzLiIiIgogICAgICAgIGlmIG5vdCBwYXRoOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByb290ID0gX29zLl9wYXRoX3NwbGl0cm9vdChwYXRoKVswXS5yZXBsYWNlKCcvJywgJ1xcJykKICAgICAgICByZXR1cm4gbGVuKHJvb3QpID4gMSBhbmQgKHJvb3Quc3RhcnRzd2l0aCgnXFxcXCcpIG9yIHJvb3QuZW5kc3dpdGgoJ1xcJykpCgplbHNlOgogICAgZGVmIF9wYXRoX2lzYWJzKHBhdGgpOgogICAgICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzYWJzLiIiIgogICAgICAgIHJldHVybiBwYXRoLnN0YXJ0c3dpdGgocGF0aF9zZXBhcmF0b3JzKQoKCmRlZiBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIG1vZGU9MG82NjYpOgogICAgIiIiQmVzdC1lZmZvcnQgZnVuY3Rpb24gdG8gd3JpdGUgZGF0YSB0byBhIHBhdGggYXRvbWljYWxseS4KICAgIEJlIHByZXBhcmVkIHRvIGhhbmRsZSBhIEZpbGVFeGlzdHNFcnJvciBpZiBjb25jdXJyZW50IHdyaXRpbmcgb2YgdGhlCiAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuIiIiCiAgICAjIGlkKCkgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIHBzZXVkby1yYW5kb20gZmlsZW5hbWUuCiAgICBwYXRoX3RtcCA9ICd7fS57fScuZm9ybWF0KHBhdGgsIGlkKHBhdGgpKQogICAgZmQgPSBfb3Mub3BlbihwYXRoX3RtcCwKICAgICAgICAgICAgICAgICAgX29zLk9fRVhDTCB8IF9vcy5PX0NSRUFUIHwgX29zLk9fV1JPTkxZLCBtb2RlICYgMG82NjYpCiAgICB0cnk6CiAgICAgICAgIyBXZSBmaXJzdCB3cml0ZSBkYXRhIHRvIGEgdGVtcG9yYXJ5IGZpbGUsIGFuZCB0aGVuIHVzZSBvcy5yZXBsYWNlKCkgdG8KICAgICAgICAjIHBlcmZvcm0gYW4gYXRvbWljIHJlbmFtZS4KICAgICAgICB3aXRoIF9pby5GaWxlSU8oZmQsICd3YicpIGFzIGZpbGU6CiAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKICAgICAgICBfb3MucmVwbGFjZShwYXRoX3RtcCwgcGF0aCkKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIHRyeToKICAgICAgICAgICAgX29zLnVubGluayhwYXRoX3RtcCkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIHJhaXNlCgoKX2NvZGVfdHlwZSA9IHR5cGUoX3dyaXRlX2F0b21pYy5fX2NvZGVfXykKCgojIEZpbmRlci9sb2FkZXIgdXRpbGl0eSBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIE1hZ2ljIHdvcmQgdG8gcmVqZWN0IC5weWMgZmlsZXMgZ2VuZXJhdGVkIGJ5IG90aGVyIFB5dGhvbiB2ZXJzaW9ucy4KIyBJdCBzaG91bGQgY2hhbmdlIGZvciBlYWNoIGluY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIGJ5dGVjb2RlLgojCiMgVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQojIGEgLnB5YyBmaWxlIGluIHRleHQgbW9kZSB0aGUgbWFnaWMgbnVtYmVyIHdpbGwgYmUgd3Jvbmc7IGFsc28sIHRoZQojIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCiMKIyBUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgojIFRoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKIyAxMC4KIwojIFN0YXJ0aW5nIHdpdGggdGhlIGFkb3B0aW9uIG9mIFBFUCAzMTQ3IGluIFB5dGhvbiAzLjIsIGV2ZXJ5IGJ1bXAgaW4gbWFnaWMKIyBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCiMgdG8gcmVwcmVzZW50IHRoZSBtYWdpYyBudW1iZXIgaW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMuICBXaGVuIHlvdSBjaGFuZ2UKIyB0aGUgbWFnaWMgbnVtYmVyLCB5b3UgbXVzdCBhbHNvIHNldCBhIG5ldyB1bmlxdWUgbWFnaWMgdGFnLiAgR2VuZXJhbGx5IHRoaXMKIyBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0CiMgaXQgY2FuIHJlYWxseSBiZSBhbnl0aGluZywgYXMgbG9uZyBhcyBpdCdzIGRpZmZlcmVudCB0aGFuIGFueXRoaW5nIGVsc2UKIyB0aGF0J3MgY29tZSBiZWZvcmUuICBUaGUgdGFncyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgc3RhcnRpbmcKIyB3aXRoIFB5dGhvbiAzLjJhMC4KIwojIEtub3duIHZhbHVlczoKIyAgUHl0aG9uIDEuNTogICAyMDEyMQojICBQeXRob24gMS41LjE6IDIwMTIxCiMgICAgIFB5dGhvbiAxLjUuMjogMjAxMjEKIyAgICAgUHl0aG9uIDEuNjogICA1MDQyOAojICAgICBQeXRob24gMi4wOiAgIDUwODIzCiMgICAgIFB5dGhvbiAyLjAuMTogNTA4MjMKIyAgICAgUHl0aG9uIDIuMTogICA2MDIwMgojICAgICBQeXRob24gMi4xLjE6IDYwMjAyCiMgICAgIFB5dGhvbiAyLjEuMjogNjAyMDIKIyAgICAgUHl0aG9uIDIuMjogICA2MDcxNwojICAgICBQeXRob24gMi4zYTA6IDYyMDExCiMgICAgIFB5dGhvbiAyLjNhMDogNjIwMjEKIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKIyAgICAgUHl0aG9uIDIuNGEwOiA2MjA0MQojICAgICBQeXRob24gMi40YTM6IDYyMDUxCiMgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA3MQojICAgICBQeXRob24gMi41YTA6IDYyMDgxIChhc3QtYnJhbmNoKQojICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQojICAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCiMgICAgIFB5dGhvbiAyLjViMzogNjIxMDEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uKQojICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKIyAgICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKIyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmluZyBjb25zdGFudHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQpCiMgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKIyAgICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKIyAgICAgUHl0aG9uIDIuNmExOiA2MjE2MSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikKIyAgICAgUHl0aG9uIDIuN2EwOiA2MjE3MSAob3B0aW1pemUgbGlzdCBjb21wcmVoZW5zaW9ucy9jaGFuZ2UgTElTVF9BUFBFTkQpCiMgICAgIFB5dGhvbiAyLjdhMDogNjIxODEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgojICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCiMgICAgIFB5dGhvbiAyLjdhMCAgNjIxOTEgKGludHJvZHVjZSBTRVRVUF9XSVRIKQojICAgICBQeXRob24gMi43YTAgIDYyMjAxIChpbnRyb2R1Y2UgQlVJTERfU0VUKQojICAgICBQeXRob24gMi43YTAgIDYyMjExIChpbnRyb2R1Y2UgTUFQX0FERCBhbmQgU0VUX0FERCkKIyAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAojICAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCiMgICAgICAgICAgICAgICAgICAgIDMwMjAgKGFkZGVkIEJVSUxEX1NFVCkKIyAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCiMgICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKIyAgICAgICAgICAgICAgICAgICAgMzA1MCAocHJpbnQgYmVjb21lcyBhIGZ1bmN0aW9uKQojICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQojICAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCiMgICAgICAgICAgICAgICAgICAgIDMwNzEgKFBFUCAzMTA5IHJhaXNlIGNoYW5nZXMpCiMgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCiMgICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCiMgICAgICAgICAgICAgICAgICAgIDMxMDEgKG1lcmdlIGZyb20gMi42YTAsIHNlZSA2MjE1MSkKIyAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQojICAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgojICAgICBQeXRob24gMy4wYjE6IDMxMzEgKGxleGljYWwgZXhjZXB0aW9uIHN0YWNraW5nLCBpbmNsdWRpbmcgUE9QX0VYQ0VQVAogICAgICAgICAgICAgICAgICAgICAgICAgICMzMDIxKQojICAgICBQeXRob24gMy4xYTE6IDMxNDEgKG9wdGltaXplIGxpc3QsIHNldCBhbmQgZGljdCBjb21wcmVoZW5zaW9uczoKIyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgTElTVF9BUFBFTkQgYW5kIFNFVF9BREQsIGFkZCBNQVBfQUREICMyMTgzKQojICAgICBQeXRob24gMy4xYTE6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgojICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRQogICAgICAgICAgICAgICAgICAgICAgICAgICM0NzE1KQojICAgICBQeXRob24gMy4yYTE6IDMxNjAgKGFkZCBTRVRVUF9XSVRIICM2MTAxKQojICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgojICAgICBQeXRob24gMy4yYTI6IDMxNzAgKGFkZCBEVVBfVE9QX1RXTywgcmVtb3ZlIERVUF9UT1BYIGFuZCBST1RfRk9VUiAjOTIyNSkKIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKIyAgICAgUHl0aG9uIDMuMmEzICAzMTgwIChhZGQgREVMRVRFX0RFUkVGICM0NjE3KQojICAgICBQeXRob24gMy4zYTEgIDMxOTAgKF9fY2xhc3NfXyBzdXBlciBjbG9zdXJlIGNoYW5nZWQpCiMgICAgIFB5dGhvbiAzLjNhMSAgMzIwMCAoUEVQIDMxNTUgX19xdWFsbmFtZV9fIGFkZGVkICMxMzQ0OCkKIyAgICAgUHl0aG9uIDMuM2ExICAzMjEwIChhZGRlZCBzaXplIG1vZHVsbyAyKiozMiB0byB0aGUgcHljIGhlYWRlciAjMTM2NDUpCiMgICAgIFB5dGhvbiAzLjNhMiAgMzIyMCAoY2hhbmdlZCBQRVAgMzgwIGltcGxlbWVudGF0aW9uICMxNDIzMCkKIyAgICAgUHl0aG9uIDMuM2E0ICAzMjMwIChyZXZlcnQgY2hhbmdlcyB0byBpbXBsaWNpdCBfX2NsYXNzX18gY2xvc3VyZSAjMTQ4NTcpCiMgICAgIFB5dGhvbiAzLjRhMSAgMzI1MCAoZXZhbHVhdGUgcG9zaXRpb25hbCBkZWZhdWx0IGFyZ3VtZW50cyBiZWZvcmUKIyAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQtb25seSBkZWZhdWx0cyAjMTY5NjcpCiMgICAgIFB5dGhvbiAzLjRhMSAgMzI2MCAoYWRkIExPQURfQ0xBU1NERVJFRjsgYWxsb3cgbG9jYWxzIG9mIGNsYXNzIHRvIG92ZXJyaWRlCiMgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHZhcnMgIzE3ODUzKQojICAgICBQeXRob24gMy40YTEgIDMyNzAgKHZhcmlvdXMgdHdlYWtzIHRvIHRoZSBfX2NsYXNzX18gY2xvc3VyZSAjMTIzNzApCiMgICAgIFB5dGhvbiAzLjRhMSAgMzI4MCAocmVtb3ZlIGltcGxpY2l0IGNsYXNzIGFyZ3VtZW50KQojICAgICBQeXRob24gMy40YTQgIDMyOTAgKGNoYW5nZXMgdG8gX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uICMxOTMwMSkKIyAgICAgUHl0aG9uIDMuNGE0ICAzMzAwIChtb3JlIGNoYW5nZXMgdG8gX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uICMxOTMwMSkKIyAgICAgUHl0aG9uIDMuNHJjMiAzMzEwIChhbHRlciBfX3F1YWxuYW1lX18gY29tcHV0YXRpb24gIzIwNjI1KQojICAgICBQeXRob24gMy41YTEgIDMzMjAgKFBFUCA0NjU6IE1hdHJpeCBtdWx0aXBsaWNhdGlvbiBvcGVyYXRvciAjMjExNzYpCiMgICAgIFB5dGhvbiAzLjViMSAgMzMzMCAoUEVQIDQ0ODogQWRkaXRpb25hbCBVbnBhY2tpbmcgR2VuZXJhbGl6YXRpb25zICMyMjkyKQojICAgICBQeXRob24gMy41YjIgIDMzNDAgKGZpeCBkaWN0aW9uYXJ5IGRpc3BsYXkgZXZhbHVhdGlvbiBvcmRlciAjMTEyMDUpCiMgICAgIFB5dGhvbiAzLjViMyAgMzM1MCAoYWRkIEdFVF9ZSUVMRF9GUk9NX0lURVIgb3Bjb2RlICMyNDQwMCkKIyAgICAgUHl0aG9uIDMuNS4yICAzMzUxIChmaXggQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgb3Bjb2RlICMyNzI4NikKIyAgICAgUHl0aG9uIDMuNmEwICAzMzYwIChhZGQgRk9STUFUX1ZBTFVFIG9wY29kZSAjMjU0ODMpCiMgICAgIFB5dGhvbiAzLjZhMSAgMzM2MSAobGluZW5vIGRlbHRhIG9mIGNvZGUuY29fbG5vdGFiIGJlY29tZXMgc2lnbmVkICMyNjEwNykKIyAgICAgUHl0aG9uIDMuNmEyICAzMzcwICgxNiBiaXQgd29yZGNvZGUgIzI2NjQ3KQojICAgICBQeXRob24gMy42YTIgIDMzNzEgKGFkZCBCVUlMRF9DT05TVF9LRVlfTUFQIG9wY29kZSAjMjcxNDApCiMgICAgIFB5dGhvbiAzLjZhMiAgMzM3MiAoTUFLRV9GVU5DVElPTiBzaW1wbGlmaWNhdGlvbiwgcmVtb3ZlIE1BS0VfQ0xPU1VSRQojICAgICAgICAgICAgICAgICAgICAgICAgICMyNzA5NSkKIyAgICAgUHl0aG9uIDMuNmIxICAzMzczIChhZGQgQlVJTERfU1RSSU5HIG9wY29kZSAjMjcwNzgpCiMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NSAoYWRkIFNFVFVQX0FOTk9UQVRJT05TIGFuZCBTVE9SRV9BTk5PVEFUSU9OIG9wY29kZXMKIyAgICAgICAgICAgICAgICAgICAgICAgICAjMjc5ODUpCiMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NiAoc2ltcGxpZnkgQ0FMTF9GVU5DVElPTnMgJiBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTAogICAgICAgICAgICAgICAgICAgICAgICAgICMyNzIxMykKIyAgICAgUHl0aG9uIDMuNmIxICAzMzc3IChzZXQgX19jbGFzc19fIGNlbGwgZnJvbSB0eXBlLl9fbmV3X18gIzIzNzIyKQojICAgICBQeXRob24gMy42YjIgIDMzNzggKGFkZCBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMICMyODI1NykKIyAgICAgUHl0aG9uIDMuNnJjMSAzMzc5IChtb3JlIHRob3JvdWdoIF9fY2xhc3NfXyB2YWxpZGF0aW9uICMyMzcyMikKIyAgICAgUHl0aG9uIDMuN2ExICAzMzkwIChhZGQgTE9BRF9NRVRIT0QgYW5kIENBTExfTUVUSE9EIG9wY29kZXMgIzI2MTEwKQojICAgICBQeXRob24gMy43YTIgIDMzOTEgKHVwZGF0ZSBHRVRfQUlURVIgIzMxNzA5KQojICAgICBQeXRob24gMy43YTQgIDMzOTIgKFBFUCA1NTI6IERldGVybWluaXN0aWMgcHljcyAjMzE2NTApCiMgICAgIFB5dGhvbiAzLjdiMSAgMzM5MyAocmVtb3ZlIFNUT1JFX0FOTk9UQVRJT04gb3Bjb2RlICMzMjU1MCkKIyAgICAgUHl0aG9uIDMuN2I1ICAzMzk0IChyZXN0b3JlZCBkb2NzdHJpbmcgYXMgdGhlIGZpcnN0IHN0bXQgaW4gdGhlIGJvZHk7CiMgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBtaWdodCBhZmZlY3RlZCB0aGUgZmlyc3QgbGluZSBudW1iZXIgIzMyOTExKQojICAgICBQeXRob24gMy44YTEgIDM0MDAgKG1vdmUgZnJhbWUgYmxvY2sgaGFuZGxpbmcgdG8gY29tcGlsZXIgIzE3NjExKQojICAgICBQeXRob24gMy44YTEgIDM0MDEgKGFkZCBFTkRfQVNZTkNfRk9SICMzMzA0MSkKIyAgICAgUHl0aG9uIDMuOGExICAzNDEwIChQRVA1NzAgUHl0aG9uIFBvc2l0aW9uYWwtT25seSBQYXJhbWV0ZXJzICMzNjU0MCkKIyAgICAgUHl0aG9uIDMuOGIyICAzNDExIChSZXZlcnNlIGV2YWx1YXRpb24gb3JkZXIgb2Yga2V5OiB2YWx1ZSBpbiBkaWN0CiMgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbnMgIzM1MjI0KQojICAgICBQeXRob24gMy44YjIgIDM0MTIgKFN3YXAgdGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uYWwgYXJncyBhbmQgcG9zaXRpb25hbAojICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgYXJncyBpbiBhc3QuYXJndW1lbnRzICMzNzU5MykKIyAgICAgUHl0aG9uIDMuOGI0ICAzNDEzIChGaXggImJyZWFrIiBhbmQgImNvbnRpbnVlIiBpbiAiZmluYWxseSIgIzM3ODMwKQojICAgICBQeXRob24gMy45YTAgIDM0MjAgKGFkZCBMT0FEX0FTU0VSVElPTl9FUlJPUiAjMzQ4ODApCiMgICAgIFB5dGhvbiAzLjlhMCAgMzQyMSAoc2ltcGxpZmllZCBieXRlY29kZSBmb3Igd2l0aCBibG9ja3MgIzMyOTQ5KQojICAgICBQeXRob24gMy45YTAgIDM0MjIgKHJlbW92ZSBCRUdJTl9GSU5BTExZLCBFTkRfRklOQUxMWSwgQ0FMTF9GSU5BTExZLCBQT1BfRklOQUxMWSBieXRlY29kZXMgIzMzMzg3KQojICAgICBQeXRob24gMy45YTIgIDM0MjMgKGFkZCBJU19PUCwgQ09OVEFJTlNfT1AgYW5kIEpVTVBfSUZfTk9UX0VYQ19NQVRDSCBieXRlY29kZXMgIzM5MTU2KQojICAgICBQeXRob24gMy45YTIgIDM0MjQgKHNpbXBsaWZ5IGJ5dGVjb2RlcyBmb3IgKnZhbHVlIHVucGFja2luZykKIyAgICAgUHl0aG9uIDMuOWEyICAzNDI1IChzaW1wbGlmeSBieXRlY29kZXMgZm9yICoqdmFsdWUgdW5wYWNraW5nKQojICAgICBQeXRob24gMy4xMGExIDM0MzAgKE1ha2UgJ2Fubm90YXRpb25zJyBmdXR1cmUgYnkgZGVmYXVsdCkKIyAgICAgUHl0aG9uIDMuMTBhMSAzNDMxIChOZXcgbGluZSBudW1iZXIgdGFibGUgZm9ybWF0IC0tIFBFUCA2MjYpCiMgICAgIFB5dGhvbiAzLjEwYTIgMzQzMiAoRnVuY3Rpb24gYW5ub3RhdGlvbiBmb3IgTUFLRV9GVU5DVElPTiBpcyBjaGFuZ2VkIGZyb20gZGljdCB0byB0dXBsZSBicG8tNDIyMDIpCiMgICAgIFB5dGhvbiAzLjEwYTIgMzQzMyAoUkVSQUlTRSByZXN0b3JlcyBmX2xhc3RpIGlmIG9wYXJnICE9IDApCiMgICAgIFB5dGhvbiAzLjEwYTYgMzQzNCAoUEVQIDYzNDogU3RydWN0dXJhbCBQYXR0ZXJuIE1hdGNoaW5nKQojICAgICBQeXRob24gMy4xMGE3IDM0MzUgVXNlIGluc3RydWN0aW9uIG9mZnNldHMgKGFzIG9wcG9zZWQgdG8gYnl0ZSBvZmZzZXRzKS4KIyAgICAgUHl0aG9uIDMuMTBiMSAzNDM2IChBZGQgR0VOX1NUQVJUIGJ5dGVjb2RlICM0MzY4MykKIyAgICAgUHl0aG9uIDMuMTBiMSAzNDM3IChVbmRvIG1ha2luZyAnYW5ub3RhdGlvbnMnIGZ1dHVyZSBieSBkZWZhdWx0IC0gV2UgbGlrZSB0byBkYW5jZSBhbW9uZyBjb3JlIGRldnMhKQojICAgICBQeXRob24gMy4xMGIxIDM0MzggU2FmZXIgbGluZSBudW1iZXIgdGFibGUgaGFuZGxpbmcuCiMgICAgIFB5dGhvbiAzLjEwYjEgMzQzOSAoQWRkIFJPVF9OKQojICAgICBQeXRob24gMy4xMWExIDM0NTAgVXNlIGV4Y2VwdGlvbiB0YWJsZSBmb3IgdW53aW5kaW5nICgiemVybyBjb3N0IiBleGNlcHRpb24gaGFuZGxpbmcpCiMgICAgIFB5dGhvbiAzLjExYTEgMzQ1MSAoQWRkIENBTExfTUVUSE9EX0tXKQojICAgICBQeXRob24gMy4xMWExIDM0NTIgKGRyb3AgbmxvY2FscyBmcm9tIG1hcnNoYWxlZCBjb2RlIG9iamVjdHMpCiMgICAgIFB5dGhvbiAzLjExYTEgMzQ1MyAoYWRkIGNvX2Zhc3Rsb2NhbG5hbWVzIGFuZCBjb19mYXN0bG9jYWxraW5kcykKIyAgICAgUHl0aG9uIDMuMTFhMSAzNDU0IChjb21wdXRlIGNlbGwgb2Zmc2V0cyByZWxhdGl2ZSB0byBsb2NhbHMgYnBvLTQzNjkzKQojICAgICBQeXRob24gMy4xMWExIDM0NTUgKGFkZCBNQUtFX0NFTEwgYnBvLTQzNjkzKQojICAgICBQeXRob24gMy4xMWExIDM0NTYgKGludGVybGVhdmUgY2VsbCBhcmdzIGJwby00MzY5MykKIyAgICAgUHl0aG9uIDMuMTFhMSAzNDU3IChDaGFuZ2UgbG9jYWxzcGx1cyB0byBhIGJ5dGVzIG9iamVjdCBicG8tNDM2OTMpCiMgICAgIFB5dGhvbiAzLjExYTEgMzQ1OCAoaW1wb3J0ZWQgb2JqZWN0cyBub3cgZG9uJ3QgdXNlIExPQURfTUVUSE9EL0NBTExfTUVUSE9EKQojICAgICBQeXRob24gMy4xMWExIDM0NTkgKFBFUCA2NTc6IGFkZCBlbmQgbGluZSBudW1iZXJzIGFuZCBjb2x1bW4gb2Zmc2V0cyBmb3IgaW5zdHJ1Y3Rpb25zKQojICAgICBQeXRob24gMy4xMWExIDM0NjAgKEFkZCBjb19xdWFsbmFtZSBmaWVsZCB0byBQeUNvZGVPYmplY3QgYnBvLTQ0NTMwKQojICAgICBQeXRob24gMy4xMWExIDM0NjEgKEpVTVBfQUJTT0xVVEUgbXVzdCBqdW1wIGJhY2t3YXJkcykKIyAgICAgUHl0aG9uIDMuMTFhMiAzNDYyIChicG8tNDQ1MTE6IHJlbW92ZSBDT1BZX0RJQ1RfV0lUSE9VVF9LRVlTLCBjaGFuZ2UKIyAgICAgICAgICAgICAgICAgICAgICAgICBNQVRDSF9DTEFTUyBhbmQgTUFUQ0hfS0VZUywgYW5kIGFkZCBDT1BZKQojICAgICBQeXRob24gMy4xMWEzIDM0NjMgKGJwby00NTcxMTogSlVNUF9JRl9OT1RfRVhDX01BVENIIG5vIGxvbmdlciBwb3BzIHRoZQojICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSBleGNlcHRpb24pCiMgICAgIFB5dGhvbiAzLjExYTMgMzQ2NCAoYnBvLTQ1NjM2OiBNZXJnZSBudW1lcmljIEJJTkFSWV8qL0lOUExBQ0VfKiBpbnRvCiMgICAgICAgICAgICAgICAgICAgICAgICAgQklOQVJZX09QKQojICAgICBQeXRob24gMy4xMWEzIDM0NjUgKEFkZCBDT1BZX0ZSRUVfVkFSUyBvcGNvZGUpCiMgICAgIFB5dGhvbiAzLjExYTQgMzQ2NiAoYnBvLTQ1MjkyOiBQRVAtNjU0IGV4Y2VwdCopCiMgICAgIFB5dGhvbiAzLjExYTQgMzQ2NyAoQ2hhbmdlIENBTExfeHh4IG9wY29kZXMpCiMgICAgIFB5dGhvbiAzLjExYTQgMzQ2OCAoQWRkIFNFTkQgb3Bjb2RlKQojICAgICBQeXRob24gMy4xMWE0IDM0NjkgKGJwby00NTcxMTogcmVtb3ZlIHR5cGUsIHRyYWNlYmFjayBmcm9tIGV4Y19pbmZvKQojICAgICBQeXRob24gMy4xMWE0IDM0NzAgKGJwby00NjIyMTogUFJFUF9SRVJBSVNFX1NUQVIgbm8gbG9uZ2VyIHB1c2hlcyBsYXN0aSkKIyAgICAgUHl0aG9uIDMuMTFhNCAzNDcxIChicG8tNDYyMDI6IHJlbW92ZSBwb3AgUE9QX0VYQ0VQVF9BTkRfUkVSQUlTRSkKIyAgICAgUHl0aG9uIDMuMTFhNCAzNDcyIChicG8tNDYwMDk6IHJlcGxhY2UgR0VOX1NUQVJUIHdpdGggUE9QX1RPUCkKIyAgICAgUHl0aG9uIDMuMTFhNCAzNDczIChBZGQgUE9QX0pVTVBfSUZfTk9UX05PTkUvUE9QX0pVTVBfSUZfTk9ORSBvcGNvZGVzKQojICAgICBQeXRob24gMy4xMWE0IDM0NzQgKEFkZCBSRVNVTUUgb3Bjb2RlKQojICAgICBQeXRob24gMy4xMWE1IDM0NzUgKEFkZCBSRVRVUk5fR0VORVJBVE9SIG9wY29kZSkKIyAgICAgUHl0aG9uIDMuMTFhNSAzNDc2IChBZGQgQVNZTkNfR0VOX1dSQVAgb3Bjb2RlKQojICAgICBQeXRob24gMy4xMWE1IDM0NzcgKFJlcGxhY2UgRFVQX1RPUC9EVVBfVE9QX1RXTyB3aXRoIENPUFkgYW5kCiMgICAgICAgICAgICAgICAgICAgICAgICAgUk9UX1RXTy9ST1RfVEhSRUUvUk9UX0ZPVVIvUk9UX04gd2l0aCBTV0FQKQojICAgICBQeXRob24gMy4xMWE1IDM0NzggKE5ldyBDQUxMIG9wY29kZXMpCiMgICAgIFB5dGhvbiAzLjExYTUgMzQ3OSAoQWRkIFBVU0hfTlVMTCBvcGNvZGUpCiMgICAgIFB5dGhvbiAzLjExYTUgMzQ4MCAoTmV3IENBTEwgb3Bjb2Rlcywgc2Vjb25kIGl0ZXJhdGlvbikKIyAgICAgUHl0aG9uIDMuMTFhNSAzNDgxIChVc2UgaW5saW5lIGNhY2hlIGZvciBCSU5BUllfT1ApCiMgICAgIFB5dGhvbiAzLjExYTUgMzQ4MiAoVXNlIGlubGluZSBjYWNoaW5nIGZvciBVTlBBQ0tfU0VRVUVOQ0UgYW5kIExPQURfR0xPQkFMKQojICAgICBQeXRob24gMy4xMWE1IDM0ODMgKFVzZSBpbmxpbmUgY2FjaGluZyBmb3IgQ09NUEFSRV9PUCBhbmQgQklOQVJZX1NVQlNDUikKIyAgICAgUHl0aG9uIDMuMTFhNSAzNDg0IChVc2UgaW5saW5lIGNhY2hpbmcgZm9yIExPQURfQVRUUiwgTE9BRF9NRVRIT0QsIGFuZAojICAgICAgICAgICAgICAgICAgICAgICAgIFNUT1JFX0FUVFIpCiMgICAgIFB5dGhvbiAzLjExYTUgMzQ4NSAoQWRkIGFuIG9wYXJnIHRvIEdFVF9BV0FJVEFCTEUpCiMgICAgIFB5dGhvbiAzLjExYTYgMzQ4NiAoVXNlIGlubGluZSBjYWNoaW5nIGZvciBQUkVDQUxMIGFuZCBDQUxMKQojICAgICBQeXRob24gMy4xMWE2IDM0ODcgKFJlbW92ZSB0aGUgYWRhcHRpdmUgIm9wYXJnIGNvdW50ZXIiIG1lY2hhbmlzbSkKIyAgICAgUHl0aG9uIDMuMTFhNiAzNDg4IChMT0FEX0dMT0JBTCBjYW4gcHVzaCBhZGRpdGlvbmFsIE5VTEwpCiMgICAgIFB5dGhvbiAzLjExYTYgMzQ4OSAoQWRkIEpVTVBfQkFDS1dBUkQsIHJlbW92ZSBKVU1QX0FCU09MVVRFKQojICAgICBQeXRob24gMy4xMWE2IDM0OTAgKHJlbW92ZSBKVU1QX0lGX05PVF9FWENfTUFUQ0gsIGFkZCBDSEVDS19FWENfTUFUQ0gpCiMgICAgIFB5dGhvbiAzLjExYTYgMzQ5MSAocmVtb3ZlIEpVTVBfSUZfTk9UX0VHX01BVENILCBhZGQgQ0hFQ0tfRUdfTUFUQ0gsCiMgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIEpVTVBfQkFDS1dBUkRfTk9fSU5URVJSVVBULCBtYWtlIEpVTVBfTk9fSU5URVJSVVBUIHZpcnR1YWwpCiMgICAgIFB5dGhvbiAzLjExYTcgMzQ5MiAobWFrZSBQT1BfSlVNUF9JRl9OT05FL05PVF9OT05FL1RSVUUvRkFMU0UgcmVsYXRpdmUpCiMgICAgIFB5dGhvbiAzLjExYTcgMzQ5MyAoTWFrZSBKVU1QX0lGX1RSVUVfT1JfUE9QL0pVTVBfSUZfRkFMU0VfT1JfUE9QIHJlbGF0aXZlKQojICAgICBQeXRob24gMy4xMWE3IDM0OTQgKE5ldyBsb2NhdGlvbiBpbmZvIHRhYmxlKQojICAgICBQeXRob24gMy4xMWI0IDM0OTUgKFNldCBsaW5lIG51bWJlciBvZiBtb2R1bGUncyBSRVNVTUUgaW5zdHIgdG8gMCBwZXIgUEVQIDYyNikKIyAgICAgUHl0aG9uIDMuMTIgd2lsbCBzdGFydCB3aXRoIG1hZ2ljIG51bWJlciAzNTAwCgoKIwojIE1BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KIyBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQojIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpLgojCiMgU3RhcnRpbmcgd2l0aCBQeXRob24gMy4xMSwgUHl0aG9uIDMubiBzdGFydHMgd2l0aCBtYWdpYyBudW1iZXIgMjkwMCs1MG4uCiMKIyBXaGVuZXZlciBNQUdJQ19OVU1CRVIgaXMgY2hhbmdlZCwgdGhlIHJhbmdlcyBpbiB0aGUgbWFnaWNfdmFsdWVzIGFycmF5CiMgaW4gUEMvbGF1bmNoZXIuYyBtdXN0IGFsc28gYmUgdXBkYXRlZC4KCk1BR0lDX05VTUJFUiA9ICgzNDk1KS50b19ieXRlcygyLCAnbGl0dGxlJykgKyBiJ1xyXG4nCgpfUkFXX01BR0lDX05VTUJFUiA9IGludC5mcm9tX2J5dGVzKE1BR0lDX05VTUJFUiwgJ2xpdHRsZScpICAjIEZvciBpbXBvcnQuYwoKX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCl9PUFQgPSAnb3B0LScKClNPVVJDRV9TVUZGSVhFUyA9IFsnLnB5J10KaWYgX01TX1dJTkRPV1M6CiAgICBTT1VSQ0VfU1VGRklYRVMuYXBwZW5kKCcucHl3JykKCkVYVEVOU0lPTl9TVUZGSVhFUyA9IF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkKCkJZVEVDT0RFX1NVRkZJWEVTID0gWycucHljJ10KIyBEZXByZWNhdGVkLgpERUJVR19CWVRFQ09ERV9TVUZGSVhFUyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUyA9IEJZVEVDT0RFX1NVRkZJWEVTCgpkZWYgY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSwgKiwgb3B0aW1pemF0aW9uPU5vbmUpOgogICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljIGZpbGUuCgogICAgVGhlIC5weSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8gdGhlCiAgICAucHljIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4KCiAgICBUaGUgJ29wdGltaXphdGlvbicgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBwcmVzdW1lZCBvcHRpbWl6YXRpb24gbGV2ZWwgb2YKICAgIHRoZSBieXRlY29kZSBmaWxlLiBJZiAnb3B0aW1pemF0aW9uJyBpcyBub3QgTm9uZSwgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbgogICAgb2YgdGhlIGFyZ3VtZW50IGlzIHRha2VuIGFuZCB2ZXJpZmllZCB0byBiZSBhbHBoYW51bWVyaWMgKGVsc2UgVmFsdWVFcnJvcgogICAgaXMgcmFpc2VkKS4KCiAgICBUaGUgZGVidWdfb3ZlcnJpZGUgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQuIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLAogICAgYSBUcnVlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgJ29wdGltaXphdGlvbicgdG8gdGhlIGVtcHR5IHN0cmluZwogICAgd2hpbGUgYSBGYWxzZSB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgJ29wdGltaXphdGlvbicgdG8gJzEnLgoKICAgIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgoKICAgICIiIgogICAgaWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmU6CiAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3RoZSBkZWJ1Z19vdmVycmlkZSBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZDsgdXNlICcKICAgICAgICAgICAgICAgICAgICAgICAiJ29wdGltaXphdGlvbicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICBpZiBvcHRpbWl6YXRpb24gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG1lc3NhZ2UgPSAnZGVidWdfb3ZlcnJpZGUgb3Igb3B0aW1pemF0aW9uIG11c3QgYmUgc2V0IHRvIE5vbmUnCiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtZXNzYWdlKQogICAgICAgIG9wdGltaXphdGlvbiA9ICcnIGlmIGRlYnVnX292ZXJyaWRlIGVsc2UgMQogICAgcGF0aCA9IF9vcy5mc3BhdGgocGF0aCkKICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgYmFzZSwgc2VwLCByZXN0ID0gdGFpbC5ycGFydGl0aW9uKCcuJykKICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKICAgIGlmIHRhZyBpcyBOb25lOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCiAgICBhbG1vc3RfZmlsZW5hbWUgPSAnJy5qb2luKFsoYmFzZSBpZiBiYXNlIGVsc2UgcmVzdCksIHNlcCwgdGFnXSkKICAgIGlmIG9wdGltaXphdGlvbiBpcyBOb25lOgogICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZSA9PSAwOgogICAgICAgICAgICBvcHRpbWl6YXRpb24gPSAnJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9wdGltaXphdGlvbiA9IHN5cy5mbGFncy5vcHRpbWl6ZQogICAgb3B0aW1pemF0aW9uID0gc3RyKG9wdGltaXphdGlvbikKICAgIGlmIG9wdGltaXphdGlvbiAhPSAnJzoKICAgICAgICBpZiBub3Qgb3B0aW1pemF0aW9uLmlzYWxudW0oKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYWxwaGFudW1lcmljJy5mb3JtYXQob3B0aW1pemF0aW9uKSkKICAgICAgICBhbG1vc3RfZmlsZW5hbWUgPSAne30ue317fScuZm9ybWF0KGFsbW9zdF9maWxlbmFtZSwgX09QVCwgb3B0aW1pemF0aW9uKQogICAgZmlsZW5hbWUgPSBhbG1vc3RfZmlsZW5hbWUgKyBCWVRFQ09ERV9TVUZGSVhFU1swXQogICAgaWYgc3lzLnB5Y2FjaGVfcHJlZml4IGlzIG5vdCBOb25lOgogICAgICAgICMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBweSBmaWxlIHRvIGF2b2lkIHRoZSBwb3NzaWJpbGl0eSBvZgogICAgICAgICMgY29sbGlzaW9ucyB3aXRoaW4gc3lzLnB5Y2FjaGVfcHJlZml4LCBpZiBzb21lb25lIGhhcyB0d28gZGlmZmVyZW50CiAgICAgICAgIyBgZm9vL2Jhci5weWAgb24gdGhlaXIgc3lzdGVtIGFuZCB0aGV5IGltcG9ydCBib3RoIG9mIHRoZW0gdXNpbmcgdGhlCiAgICAgICAgIyBzYW1lIHN5cy5weWNhY2hlX3ByZWZpeC4gTGV0J3Mgc2F5IHN5cy5weWNhY2hlX3ByZWZpeCBpcwogICAgICAgICMgYEM6XEJ5dGVjb2RlYDsgdGhlIGlkZWEgaGVyZSBpcyB0aGF0IGlmIHdlIGdldCBgRm9vXEJhcmAsIHdlIGZpcnN0CiAgICAgICAgIyBtYWtlIGl0IGFic29sdXRlIChgQzpcU29tZXdoZXJlXEZvb1xCYXJgKSwgdGhlbiBtYWtlIGl0IHJvb3QtcmVsYXRpdmUKICAgICAgICAjIChgU29tZXdoZXJlXEZvb1xCYXJgKSwgc28gd2UgZW5kIHVwIHBsYWNpbmcgdGhlIGJ5dGVjb2RlIGZpbGUgaW4gYW4KICAgICAgICAjIHVuYW1iaWd1b3VzIGBDOlxCeXRlY29kZVxTb21ld2hlcmVcRm9vXEJhclxgLgogICAgICAgIGlmIG5vdCBfcGF0aF9pc2FicyhoZWFkKToKICAgICAgICAgICAgaGVhZCA9IF9wYXRoX2pvaW4oX29zLmdldGN3ZCgpLCBoZWFkKQoKICAgICAgICAjIFN0cmlwIGluaXRpYWwgZHJpdmUgZnJvbSBhIFdpbmRvd3MgcGF0aC4gV2Uga25vdyB3ZSBoYXZlIGFuIGFic29sdXRlCiAgICAgICAgIyBwYXRoIGhlcmUsIHNvIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgY2hlY2sgcnVsZXMgb3V0IGEgUE9TSVggcGF0aCB0aGF0CiAgICAgICAgIyBoYXBwZW5zIHRvIGNvbnRhaW4gYSBjb2xvbiBhdCB0aGUgc2Vjb25kIGNoYXJhY3Rlci4KICAgICAgICBpZiBoZWFkWzFdID09ICc6JyBhbmQgaGVhZFswXSBub3QgaW4gcGF0aF9zZXBhcmF0b3JzOgogICAgICAgICAgICBoZWFkID0gaGVhZFsyOl0KCiAgICAgICAgIyBTdHJpcCBpbml0aWFsIHBhdGggc2VwYXJhdG9yIGZyb20gYGhlYWRgIHRvIGNvbXBsZXRlIHRoZSBjb252ZXJzaW9uCiAgICAgICAgIyBiYWNrIHRvIGEgcm9vdC1yZWxhdGl2ZSBwYXRoIGJlZm9yZSBqb2luaW5nLgogICAgICAgIHJldHVybiBfcGF0aF9qb2luKAogICAgICAgICAgICBzeXMucHljYWNoZV9wcmVmaXgsCiAgICAgICAgICAgIGhlYWQubHN0cmlwKHBhdGhfc2VwYXJhdG9ycyksCiAgICAgICAgICAgIGZpbGVuYW1lLAogICAgICAgICkKICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIF9QWUNBQ0hFLCBmaWxlbmFtZSkKCgpkZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6CiAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weWMuIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuCgogICAgVGhlIC5weWMgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvCiAgICB0aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljIGZpbGUuICBJZiBwYXRoIGRvZXMKICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3LzQ4OCBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCiAgICBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KCiAgICAiIiIKICAgIGlmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQogICAgcGF0aCA9IF9vcy5mc3BhdGgocGF0aCkKICAgIGhlYWQsIHB5Y2FjaGVfZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgZm91bmRfaW5fcHljYWNoZV9wcmVmaXggPSBGYWxzZQogICAgaWYgc3lzLnB5Y2FjaGVfcHJlZml4IGlzIG5vdCBOb25lOgogICAgICAgIHN0cmlwcGVkX3BhdGggPSBzeXMucHljYWNoZV9wcmVmaXgucnN0cmlwKHBhdGhfc2VwYXJhdG9ycykKICAgICAgICBpZiBoZWFkLnN0YXJ0c3dpdGgoc3RyaXBwZWRfcGF0aCArIHBhdGhfc2VwKToKICAgICAgICAgICAgaGVhZCA9IGhlYWRbbGVuKHN0cmlwcGVkX3BhdGgpOl0KICAgICAgICAgICAgZm91bmRfaW5fcHljYWNoZV9wcmVmaXggPSBUcnVlCiAgICBpZiBub3QgZm91bmRfaW5fcHljYWNoZV9wcmVmaXg6CiAgICAgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCiAgICAgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ3tfUFlDQUNIRX0gbm90IGJvdHRvbS1sZXZlbCBkaXJlY3RvcnkgaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYne3BhdGghcn0nKQogICAgZG90X2NvdW50ID0gcHljYWNoZV9maWxlbmFtZS5jb3VudCgnLicpCiAgICBpZiBkb3RfY291bnQgbm90IGluIHsyLCAzfToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnZXhwZWN0ZWQgb25seSAyIG9yIDMgZG90cyBpbiB7cHljYWNoZV9maWxlbmFtZSFyfScpCiAgICBlbGlmIGRvdF9jb3VudCA9PSAzOgogICAgICAgIG9wdGltaXphdGlvbiA9IHB5Y2FjaGVfZmlsZW5hbWUucnNwbGl0KCcuJywgMilbLTJdCiAgICAgICAgaWYgbm90IG9wdGltaXphdGlvbi5zdGFydHN3aXRoKF9PUFQpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvcHRpbWl6YXRpb24gcG9ydGlvbiBvZiBmaWxlbmFtZSBkb2VzIG5vdCBzdGFydCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ3aXRoIHtfT1BUIXJ9IikKICAgICAgICBvcHRfbGV2ZWwgPSBvcHRpbWl6YXRpb25bbGVuKF9PUFQpOl0KICAgICAgICBpZiBub3Qgb3B0X2xldmVsLmlzYWxudW0oKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIm9wdGltaXphdGlvbiBsZXZlbCB7b3B0aW1pemF0aW9uIXJ9IGlzIG5vdCBhbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhbnVtZXJpYyB2YWx1ZSIpCiAgICBiYXNlX2ZpbGVuYW1lID0gcHljYWNoZV9maWxlbmFtZS5wYXJ0aXRpb24oJy4nKVswXQogICAgcmV0dXJuIF9wYXRoX2pvaW4oaGVhZCwgYmFzZV9maWxlbmFtZSArIFNPVVJDRV9TVUZGSVhFU1swXSkKCgpkZWYgX2dldF9zb3VyY2VmaWxlKGJ5dGVjb2RlX3BhdGgpOgogICAgIiIiQ29udmVydCBhIGJ5dGVjb2RlIGZpbGUgcGF0aCB0byBhIHNvdXJjZSBwYXRoIChpZiBwb3NzaWJsZSkuCgogICAgVGhpcyBmdW5jdGlvbiBleGlzdHMgcHVyZWx5IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IKICAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aEZpbGVuYW1lcygpIGluIHRoZSBDIEFQSS4KCiAgICAiIiIKICAgIGlmIGxlbihieXRlY29kZV9wYXRoKSA9PSAwOgogICAgICAgIHJldHVybiBOb25lCiAgICByZXN0LCBfLCBleHRlbnNpb24gPSBieXRlY29kZV9wYXRoLnJwYXJ0aXRpb24oJy4nKQogICAgaWYgbm90IHJlc3Qgb3IgZXh0ZW5zaW9uLmxvd2VyKClbLTM6LTFdICE9ICdweSc6CiAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKICAgIHRyeToKICAgICAgICBzb3VyY2VfcGF0aCA9IHNvdXJjZV9mcm9tX2NhY2hlKGJ5dGVjb2RlX3BhdGgpCiAgICBleGNlcHQgKE5vdEltcGxlbWVudGVkRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgIHNvdXJjZV9wYXRoID0gYnl0ZWNvZGVfcGF0aFs6LTFdCiAgICByZXR1cm4gc291cmNlX3BhdGggaWYgX3BhdGhfaXNmaWxlKHNvdXJjZV9wYXRoKSBlbHNlIGJ5dGVjb2RlX3BhdGgKCgpkZWYgX2dldF9jYWNoZWQoZmlsZW5hbWUpOgogICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgodHVwbGUoU09VUkNFX1NVRkZJWEVTKSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gY2FjaGVfZnJvbV9zb3VyY2UoZmlsZW5hbWUpCiAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgIGVsaWYgZmlsZW5hbWUuZW5kc3dpdGgodHVwbGUoQllURUNPREVfU1VGRklYRVMpKToKICAgICAgICByZXR1cm4gZmlsZW5hbWUKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIE5vbmUKCgpkZWYgX2NhbGNfbW9kZShwYXRoKToKICAgICIiIkNhbGN1bGF0ZSB0aGUgbW9kZSBwZXJtaXNzaW9ucyBmb3IgYSBieXRlY29kZSBmaWxlLiIiIgogICAgdHJ5OgogICAgICAgIG1vZGUgPSBfcGF0aF9zdGF0KHBhdGgpLnN0X21vZGUKICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgIG1vZGUgPSAwbzY2NgogICAgIyBXZSBhbHdheXMgZW5zdXJlIHdyaXRlIGFjY2VzcyBzbyB3ZSBjYW4gdXBkYXRlIGNhY2hlZCBmaWxlcwogICAgIyBsYXRlciBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MgKCM2MDc0KQogICAgbW9kZSB8PSAwbzIwMAogICAgcmV0dXJuIG1vZGUKCgpkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhhdCB0aGUgbW9kdWxlIGJlaW5nIHJlcXVlc3RlZCBtYXRjaGVzIHRoZSBvbmUgdGhlCiAgICBsb2FkZXIgY2FuIGhhbmRsZS4KCiAgICBUaGUgZmlyc3QgYXJndW1lbnQgKHNlbGYpIG11c3QgZGVmaW5lIF9uYW1lIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKICAgIGNvbXBhcmVkIGFnYWluc3QuIElmIHRoZSBjb21wYXJpc29uIGZhaWxzIHRoZW4gSW1wb3J0RXJyb3IgaXMgcmFpc2VkLgoKICAgICIiIgogICAgZGVmIF9jaGVja19uYW1lX3dyYXBwZXIoc2VsZiwgbmFtZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQogICAgICAgIGVsaWYgc2VsZi5uYW1lICE9IG5hbWU6CiAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdsb2FkZXIgZm9yICVzIGNhbm5vdCBoYW5kbGUgJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5uYW1lLCBuYW1lKSwgbmFtZT1uYW1lKQogICAgICAgIHJldHVybiBtZXRob2Qoc2VsZiwgbmFtZSwgKmFyZ3MsICoqa3dhcmdzKQoKICAgICMgRklYTUU6IEBfY2hlY2tfbmFtZSBpcyB1c2VkIHRvIGRlZmluZSBjbGFzcyBtZXRob2RzIGJlZm9yZSB0aGUKICAgICMgX2Jvb3RzdHJhcCBtb2R1bGUgaXMgc2V0IGJ5IF9zZXRfYm9vdHN0cmFwX21vZHVsZSgpLgogICAgaWYgX2Jvb3RzdHJhcCBpcyBub3QgTm9uZToKICAgICAgICBfd3JhcCA9IF9ib290c3RyYXAuX3dyYXAKICAgIGVsc2U6CiAgICAgICAgZGVmIF93cmFwKG5ldywgb2xkKToKICAgICAgICAgICAgZm9yIHJlcGxhY2UgaW4gWydfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcXVhbG5hbWVfXycsICdfX2RvY19fJ106CiAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9sZCwgcmVwbGFjZSk6CiAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihuZXcsIHJlcGxhY2UsIGdldGF0dHIob2xkLCByZXBsYWNlKSkKICAgICAgICAgICAgbmV3Ll9fZGljdF9fLnVwZGF0ZShvbGQuX19kaWN0X18pCgogICAgX3dyYXAoX2NoZWNrX25hbWVfd3JhcHBlciwgbWV0aG9kKQogICAgcmV0dXJuIF9jaGVja19uYW1lX3dyYXBwZXIKCgpkZWYgX2ZpbmRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgogICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGJ5IGRlbGVnYXRpbmcgdG8KICAgIHNlbGYuZmluZF9sb2FkZXIoKS4KCiAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGZpbmRlci5maW5kX3NwZWMoKS4KCiAgICAiIiIKICAgIF93YXJuaW5ncy53YXJuKCJmaW5kX21vZHVsZSgpIGlzIGRlcHJlY2F0ZWQgYW5kICIKICAgICAgICAgICAgICAgICAgICJzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTI7IHVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkIiwKICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICMgQ2FsbCBmaW5kX2xvYWRlcigpLiBJZiBpdCByZXR1cm5zIGEgc3RyaW5nIChpbmRpY2F0aW5nIHRoaXMKICAgICMgaXMgYSBuYW1lc3BhY2UgcGFja2FnZSBwb3J0aW9uKSwgZ2VuZXJhdGUgYSB3YXJuaW5nIGFuZAogICAgIyByZXR1cm4gTm9uZS4KICAgIGxvYWRlciwgcG9ydGlvbnMgPSBzZWxmLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQogICAgaWYgbG9hZGVyIGlzIE5vbmUgYW5kIGxlbihwb3J0aW9ucyk6CiAgICAgICAgbXNnID0gJ05vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fJwogICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQocG9ydGlvbnNbMF0pLCBJbXBvcnRXYXJuaW5nKQogICAgcmV0dXJuIGxvYWRlcgoKCmRlZiBfY2xhc3NpZnlfcHljKGRhdGEsIG5hbWUsIGV4Y19kZXRhaWxzKToKICAgICIiIlBlcmZvcm0gYmFzaWMgdmFsaWRpdHkgY2hlY2tpbmcgb2YgYSBweWMgaGVhZGVyIGFuZCByZXR1cm4gdGhlIGZsYWdzIGZpZWxkLAogICAgd2hpY2ggZGV0ZXJtaW5lcyBob3cgdGhlIHB5YyBzaG91bGQgYmUgZnVydGhlciB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgc291cmNlLgoKICAgICpkYXRhKiBpcyB0aGUgY29udGVudHMgb2YgdGhlIHB5YyBmaWxlLiAoT25seSB0aGUgZmlyc3QgMTYgYnl0ZXMgYXJlCiAgICByZXF1aXJlZCwgdGhvdWdoLikKCiAgICAqbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZC4gSXQgaXMgdXNlZCBmb3IgbG9nZ2luZy4KCiAgICAqZXhjX2RldGFpbHMqIGlzIGEgZGljdGlvbmFyeSBwYXNzZWQgdG8gSW1wb3J0RXJyb3IgaWYgaXQgcmFpc2VkIGZvcgogICAgaW1wcm92ZWQgZGVidWdnaW5nLgoKICAgIEltcG9ydEVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZSBtYWdpYyBudW1iZXIgaXMgaW5jb3JyZWN0IG9yIHdoZW4gdGhlIGZsYWdzCiAgICBmaWVsZCBpcyBpbnZhbGlkLiBFT0ZFcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgZGF0YSBpcyBmb3VuZCB0byBiZSB0cnVuY2F0ZWQuCgogICAgIiIiCiAgICBtYWdpYyA9IGRhdGFbOjRdCiAgICBpZiBtYWdpYyAhPSBNQUdJQ19OVU1CRVI6CiAgICAgICAgbWVzc2FnZSA9IGYnYmFkIG1hZ2ljIG51bWJlciBpbiB7bmFtZSFyfToge21hZ2ljIXJ9JwogICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCiAgICBpZiBsZW4oZGF0YSkgPCAxNjoKICAgICAgICBtZXNzYWdlID0gZidyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHB5YyBoZWFkZXIgb2Yge25hbWUhcn0nCiAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKICAgIGZsYWdzID0gX3VucGFja191aW50MzIoZGF0YVs0OjhdKQogICAgIyBPbmx5IHRoZSBmaXJzdCB0d28gZmxhZ3MgYXJlIGRlZmluZWQuCiAgICBpZiBmbGFncyAmIH4wYjExOgogICAgICAgIG1lc3NhZ2UgPSBmJ2ludmFsaWQgZmxhZ3Mge2ZsYWdzIXJ9IGluIHtuYW1lIXJ9JwogICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCiAgICByZXR1cm4gZmxhZ3MKCgpkZWYgX3ZhbGlkYXRlX3RpbWVzdGFtcF9weWMoZGF0YSwgc291cmNlX210aW1lLCBzb3VyY2Vfc2l6ZSwgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzKToKICAgICIiIlZhbGlkYXRlIGEgcHljIGFnYWluc3QgdGhlIHNvdXJjZSBsYXN0LW1vZGlmaWVkIHRpbWUuCgogICAgKmRhdGEqIGlzIHRoZSBjb250ZW50cyBvZiB0aGUgcHljIGZpbGUuIChPbmx5IHRoZSBmaXJzdCAxNiBieXRlcyBhcmUKICAgIHJlcXVpcmVkLikKCiAgICAqc291cmNlX210aW1lKiBpcyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lc3RhbXAgb2YgdGhlIHNvdXJjZSBmaWxlLgoKICAgICpzb3VyY2Vfc2l6ZSogaXMgTm9uZSBvciB0aGUgc2l6ZSBvZiB0aGUgc291cmNlIGZpbGUgaW4gYnl0ZXMuCgogICAgKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQuIEl0IGlzIHVzZWQgZm9yIGxvZ2dpbmcuCgogICAgKmV4Y19kZXRhaWxzKiBpcyBhIGRpY3Rpb25hcnkgcGFzc2VkIHRvIEltcG9ydEVycm9yIGlmIGl0IHJhaXNlZCBmb3IKICAgIGltcHJvdmVkIGRlYnVnZ2luZy4KCiAgICBBbiBJbXBvcnRFcnJvciBpcyByYWlzZWQgaWYgdGhlIGJ5dGVjb2RlIGlzIHN0YWxlLgoKICAgICIiIgogICAgaWYgX3VucGFja191aW50MzIoZGF0YVs4OjEyXSkgIT0gKHNvdXJjZV9tdGltZSAmIDB4RkZGRkZGRkYpOgogICAgICAgIG1lc3NhZ2UgPSBmJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7bmFtZSFyfScKICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQogICAgaWYgKHNvdXJjZV9zaXplIGlzIG5vdCBOb25lIGFuZAogICAgICAgIF91bnBhY2tfdWludDMyKGRhdGFbMTI6MTZdKSAhPSAoc291cmNlX3NpemUgJiAweEZGRkZGRkZGKSk6CiAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoZidieXRlY29kZSBpcyBzdGFsZSBmb3Ige25hbWUhcn0nLCAqKmV4Y19kZXRhaWxzKQoKCmRlZiBfdmFsaWRhdGVfaGFzaF9weWMoZGF0YSwgc291cmNlX2hhc2gsIG5hbWUsIGV4Y19kZXRhaWxzKToKICAgICIiIlZhbGlkYXRlIGEgaGFzaC1iYXNlZCBweWMgYnkgY2hlY2tpbmcgdGhlIHJlYWwgc291cmNlIGhhc2ggYWdhaW5zdCB0aGUgb25lIGluCiAgICB0aGUgcHljIGhlYWRlci4KCiAgICAqZGF0YSogaXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBweWMgZmlsZS4gKE9ubHkgdGhlIGZpcnN0IDE2IGJ5dGVzIGFyZQogICAgcmVxdWlyZWQuKQoKICAgICpzb3VyY2VfaGFzaCogaXMgdGhlIGltcG9ydGxpYi51dGlsLnNvdXJjZV9oYXNoKCkgb2YgdGhlIHNvdXJjZSBmaWxlLgoKICAgICpuYW1lKiBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkLiBJdCBpcyB1c2VkIGZvciBsb2dnaW5nLgoKICAgICpleGNfZGV0YWlscyogaXMgYSBkaWN0aW9uYXJ5IHBhc3NlZCB0byBJbXBvcnRFcnJvciBpZiBpdCByYWlzZWQgZm9yCiAgICBpbXByb3ZlZCBkZWJ1Z2dpbmcuCgogICAgQW4gSW1wb3J0RXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBieXRlY29kZSBpcyBzdGFsZS4KCiAgICAiIiIKICAgIGlmIGRhdGFbODoxNl0gIT0gc291cmNlX2hhc2g6CiAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCiAgICAgICAgICAgIGYnaGFzaCBpbiBieXRlY29kZSBkb2VzblwndCBtYXRjaCBoYXNoIG9mIHNvdXJjZSB7bmFtZSFyfScsCiAgICAgICAgICAgICoqZXhjX2RldGFpbHMsCiAgICAgICAgKQoKCmRlZiBfY29tcGlsZV9ieXRlY29kZShkYXRhLCBuYW1lPU5vbmUsIGJ5dGVjb2RlX3BhdGg9Tm9uZSwgc291cmNlX3BhdGg9Tm9uZSk6CiAgICAiIiJDb21waWxlIGJ5dGVjb2RlIGFzIGZvdW5kIGluIGEgcHljLiIiIgogICAgY29kZSA9IG1hcnNoYWwubG9hZHMoZGF0YSkKICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgX2NvZGVfdHlwZSk6CiAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoY29kZSwgc291cmNlX3BhdGgpCiAgICAgICAgcmV0dXJuIGNvZGUKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ05vbi1jb2RlIG9iamVjdCBpbiB7IXJ9Jy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1uYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCgoKZGVmIF9jb2RlX3RvX3RpbWVzdGFtcF9weWMoY29kZSwgbXRpbWU9MCwgc291cmNlX3NpemU9MCk6CiAgICAiUHJvZHVjZSB0aGUgZGF0YSBmb3IgYSB0aW1lc3RhbXAtYmFzZWQgcHljLiIKICAgIGRhdGEgPSBieXRlYXJyYXkoTUFHSUNfTlVNQkVSKQogICAgZGF0YS5leHRlbmQoX3BhY2tfdWludDMyKDApKQogICAgZGF0YS5leHRlbmQoX3BhY2tfdWludDMyKG10aW1lKSkKICAgIGRhdGEuZXh0ZW5kKF9wYWNrX3VpbnQzMihzb3VyY2Vfc2l6ZSkpCiAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGUpKQogICAgcmV0dXJuIGRhdGEKCgpkZWYgX2NvZGVfdG9faGFzaF9weWMoY29kZSwgc291cmNlX2hhc2gsIGNoZWNrZWQ9VHJ1ZSk6CiAgICAiUHJvZHVjZSB0aGUgZGF0YSBmb3IgYSBoYXNoLWJhc2VkIHB5Yy4iCiAgICBkYXRhID0gYnl0ZWFycmF5KE1BR0lDX05VTUJFUikKICAgIGZsYWdzID0gMGIxIHwgY2hlY2tlZCA8PCAxCiAgICBkYXRhLmV4dGVuZChfcGFja191aW50MzIoZmxhZ3MpKQogICAgYXNzZXJ0IGxlbihzb3VyY2VfaGFzaCkgPT0gOAogICAgZGF0YS5leHRlbmQoc291cmNlX2hhc2gpCiAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGUpKQogICAgcmV0dXJuIGRhdGEKCgpkZWYgZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpOgogICAgIiIiRGVjb2RlIGJ5dGVzIHJlcHJlc2VudGluZyBzb3VyY2UgY29kZSBhbmQgcmV0dXJuIHRoZSBzdHJpbmcuCgogICAgVW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydCBpcyB1c2VkIGluIHRoZSBkZWNvZGluZy4KICAgICIiIgogICAgaW1wb3J0IHRva2VuaXplICAjIFRvIGF2b2lkIGJvb3RzdHJhcCBpc3N1ZXMuCiAgICBzb3VyY2VfYnl0ZXNfcmVhZGxpbmUgPSBfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lCiAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhzb3VyY2VfYnl0ZXNfcmVhZGxpbmUpCiAgICBuZXdsaW5lX2RlY29kZXIgPSBfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlcihOb25lLCBUcnVlKQogICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCgoKIyBNb2R1bGUgc3BlY2lmaWNhdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKX1BPUFVMQVRFID0gb2JqZWN0KCkKCgpkZWYgc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgbG9jYXRpb249Tm9uZSwgKiwgbG9hZGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1fUE9QVUxBVEUpOgogICAgIiIiUmV0dXJuIGEgbW9kdWxlIHNwZWMgYmFzZWQgb24gYSBmaWxlIGxvY2F0aW9uLgoKICAgIFRvIGluZGljYXRlIHRoYXQgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIHNldAogICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgdG8gYSBsaXN0IG9mIGRpcmVjdG9yeSBwYXRocy4gIEFuCiAgICBlbXB0eSBsaXN0IGlzIHN1ZmZpY2llbnQsIHRob3VnaCBpdHMgbm90IG90aGVyd2lzZSB1c2VmdWwgdG8gdGhlCiAgICBpbXBvcnQgc3lzdGVtLgoKICAgIFRoZSBsb2FkZXIgbXVzdCB0YWtlIGEgc3BlYyBhcyBpdHMgb25seSBfX2luaXRfXygpIGFyZy4KCiAgICAiIiIKICAgIGlmIGxvY2F0aW9uIGlzIE5vbmU6CiAgICAgICAgIyBUaGUgY2FsbGVyIG1heSBzaW1wbHkgd2FudCBhIHBhcnRpYWxseSBwb3B1bGF0ZWQgbG9jYXRpb24tCiAgICAgICAgIyBvcmllbnRlZCBzcGVjLiAgU28gd2Ugc2V0IHRoZSBsb2NhdGlvbiB0byBhIGJvZ3VzIHZhbHVlIGFuZAogICAgICAgICMgZmlsbCBpbiBhcyBtdWNoIGFzIHdlIGNhbi4KICAgICAgICBsb2NhdGlvbiA9ICc8dW5rbm93bj4nCiAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfZmlsZW5hbWUnKToKICAgICAgICAgICAgIyBFeGVjdXRpb25Mb2FkZXIKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbG9jYXRpb24gPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCiAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgbG9jYXRpb24gPSBfb3MuZnNwYXRoKGxvY2F0aW9uKQogICAgICAgIGlmIG5vdCBfcGF0aF9pc2Ficyhsb2NhdGlvbik6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gX3BhdGhfam9pbihfb3MuZ2V0Y3dkKCksIGxvY2F0aW9uKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKCiAgICAjIElmIHRoZSBsb2NhdGlvbiBpcyBvbiB0aGUgZmlsZXN5c3RlbSwgYnV0IGRvZXNuJ3QgYWN0dWFsbHkgZXhpc3QsCiAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90CiAgICAjIHZhbGlkLiAgSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgd2F5IG9mIHRlc3Rpbmcgc2luY2UgYW4KICAgICMgaW5kaXJlY3QgbG9jYXRpb24gKGUuZy4gYSB6aXAgZmlsZSBvciBVUkwpIHdpbGwgbG9vayBsaWtlIGEKICAgICMgbm9uLWV4aXN0ZW50IGZpbGUgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0uCgogICAgc3BlYyA9IF9ib290c3RyYXAuTW9kdWxlU3BlYyhuYW1lLCBsb2FkZXIsIG9yaWdpbj1sb2NhdGlvbikKICAgIHNwZWMuX3NldF9maWxlYXR0ciA9IFRydWUKCiAgICAjIFBpY2sgYSBsb2FkZXIgaWYgb25lIHdhc24ndCBwcm92aWRlZC4KICAgIGlmIGxvYWRlciBpcyBOb25lOgogICAgICAgIGZvciBsb2FkZXJfY2xhc3MsIHN1ZmZpeGVzIGluIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgogICAgICAgICAgICBpZiBsb2NhdGlvbi5lbmRzd2l0aCh0dXBsZShzdWZmaXhlcykpOgogICAgICAgICAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKG5hbWUsIGxvY2F0aW9uKQogICAgICAgICAgICAgICAgc3BlYy5sb2FkZXIgPSBsb2FkZXIKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAjIFNldCBzdWJtb2R1bGVfc2VhcmNoX3BhdGhzIGFwcHJvcHJpYXRlbHkuCiAgICBpZiBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBfUE9QVUxBVEU6CiAgICAgICAgIyBDaGVjayB0aGUgbG9hZGVyLgogICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpc19wYWNrYWdlID0gbG9hZGVyLmlzX3BhY2thZ2UobmFtZSkKICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgaXNfcGFja2FnZToKICAgICAgICAgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gW10KICAgIGVsc2U6CiAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCiAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID09IFtdOgogICAgICAgIGlmIGxvY2F0aW9uOgogICAgICAgICAgICBkaXJuYW1lID0gX3BhdGhfc3BsaXQobG9jYXRpb24pWzBdCiAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMuYXBwZW5kKGRpcm5hbWUpCgogICAgcmV0dXJuIHNwZWMKCgojIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpjbGFzcyBXaW5kb3dzUmVnaXN0cnlGaW5kZXI6CgogICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3IgbW9kdWxlcyBkZWNsYXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4iIiIKCiAgICBSRUdJU1RSWV9LRVkgPSAoCiAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCiAgICAgICAgJ1xcTW9kdWxlc1xce2Z1bGxuYW1lfScpCiAgICBSRUdJU1RSWV9LRVlfREVCVUcgPSAoCiAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCiAgICAgICAgJ1xcTW9kdWxlc1xce2Z1bGxuYW1lfVxcRGVidWcnKQogICAgREVCVUdfQlVJTEQgPSAoX01TX1dJTkRPV1MgYW5kICdfZC5weWQnIGluIEVYVEVOU0lPTl9TVUZGSVhFUykKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX29wZW5fcmVnaXN0cnkoa2V5KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiB3aW5yZWcuT3BlbktleSh3aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIHdpbnJlZy5PcGVuS2V5KHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfc2VhcmNoX3JlZ2lzdHJ5KGNscywgZnVsbG5hbWUpOgogICAgICAgIGlmIGNscy5ERUJVR19CVUlMRDoKICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWV9ERUJVRwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVkKICAgICAgICBrZXkgPSByZWdpc3RyeV9rZXkuZm9ybWF0KGZ1bGxuYW1lPWZ1bGxuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249JyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgIHRyeToKICAgICAgICAgICAgd2l0aCBjbHMuX29wZW5fcmVnaXN0cnkoa2V5KSBhcyBoa2V5OgogICAgICAgICAgICAgICAgZmlsZXBhdGggPSB3aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAnJykKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gZmlsZXBhdGgKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CiAgICAgICAgZmlsZXBhdGggPSBjbHMuX3NlYXJjaF9yZWdpc3RyeShmdWxsbmFtZSkKICAgICAgICBpZiBmaWxlcGF0aCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgX3BhdGhfc3RhdChmaWxlcGF0aCkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKICAgICAgICAgICAgaWYgZmlsZXBhdGguZW5kc3dpdGgodHVwbGUoc3VmZml4ZXMpKToKICAgICAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLnNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcihmdWxsbmFtZSwgZmlsZXBhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW49ZmlsZXBhdGgpCiAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgIiIiRmluZCBtb2R1bGUgbmFtZWQgaW4gdGhlIHJlZ2lzdHJ5LgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCgogICAgICAgICIiIgogICAgICAgIF93YXJuaW5ncy53YXJuKCJXaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9tb2R1bGUoKSBpcyBkZXByZWNhdGVkIGFuZCAiCiAgICAgICAgICAgICAgICAgICAgICAgInNsYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMjsgdXNlIGZpbmRfc3BlYygpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICBzcGVjID0gY2xzLmZpbmRfc3BlYyhmdWxsbmFtZSwgcGF0aCkKICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKCmNsYXNzIF9Mb2FkZXJCYXNpY3M6CgogICAgIiIiQmFzZSBjbGFzcyBvZiBjb21tb24gY29kZSBuZWVkZWQgYnkgYm90aCBTb3VyY2VMb2FkZXIgYW5kCiAgICBTb3VyY2VsZXNzRmlsZUxvYWRlci4iIiIKCiAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgSW5zcGVjdExvYWRlci5pc19wYWNrYWdlIGJ5IGNoZWNraW5nIGlmCiAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCiAgICAgICAgZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkpWzFdCiAgICAgICAgZmlsZW5hbWVfYmFzZSA9IGZpbGVuYW1lLnJzcGxpdCgnLicsIDEpWzBdCiAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCiAgICAgICAgcmV0dXJuIGZpbGVuYW1lX2Jhc2UgPT0gJ19faW5pdF9fJyBhbmQgdGFpbF9uYW1lICE9ICdfX2luaXRfXycKCiAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKICAgICAgICAiIiJVc2UgZGVmYXVsdCBzZW1hbnRpY3MgZm9yIG1vZHVsZSBjcmVhdGlvbi4iIiIKCiAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKICAgICAgICAiIiJFeGVjdXRlIHRoZSBtb2R1bGUuIiIiCiAgICAgICAgY29kZSA9IHNlbGYuZ2V0X2NvZGUobW9kdWxlLl9fbmFtZV9fKQogICAgICAgIGlmIGNvZGUgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2Nhbm5vdCBsb2FkIG1vZHVsZSB7IXJ9IHdoZW4gZ2V0X2NvZGUoKSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5zIE5vbmUnLmZvcm1hdChtb2R1bGUuX19uYW1lX18pKQogICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCgogICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAiIiJUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIiIgogICAgICAgICMgV2FybmluZyBpbXBsZW1lbnRlZCBpbiBfbG9hZF9tb2R1bGVfc2hpbSgpLgogICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQoKCmNsYXNzIFNvdXJjZUxvYWRlcihfTG9hZGVyQmFzaWNzKToKCiAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSAoYW4gaW50KSBmb3IgdGhlCiAgICAgICAgc3BlY2lmaWVkIHBhdGggKGEgc3RyKS4KCiAgICAgICAgUmFpc2VzIE9TRXJyb3Igd2hlbiB0aGUgcGF0aCBjYW5ub3QgYmUgaGFuZGxlZC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBPU0Vycm9yCgogICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CiAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHJldHVybmluZyBhIG1ldGFkYXRhIGRpY3QgZm9yIHRoZSBzcGVjaWZpZWQKICAgICAgICBwYXRoIChhIHN0cikuCgogICAgICAgIFBvc3NpYmxlIGtleXM6CiAgICAgICAgLSAnbXRpbWUnIChtYW5kYXRvcnkpIGlzIHRoZSBudW1lcmljIHRpbWVzdGFtcCBvZiBsYXN0IHNvdXJjZQogICAgICAgICAgY29kZSBtb2RpZmljYXRpb247CiAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCgogICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgdGhlIGxvYWRlciB0byByZWFkIGJ5dGVjb2RlIGZpbGVzLgogICAgICAgIFJhaXNlcyBPU0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzZWxmLnBhdGhfbXRpbWUocGF0aCl9CgogICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgY2FjaGVfcGF0aCwgZGF0YSk6CiAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHdoaWNoIHdyaXRlcyBkYXRhIChieXRlcykgdG8gYSBmaWxlIHBhdGggKGEgc3RyKS4KCiAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCgogICAgICAgIFRoZSBzb3VyY2UgcGF0aCBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHRyYW5zZmVyIHBlcm1pc3Npb25zCiAgICAgICAgIiIiCiAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGRlbGVnYXRlIHRvIHNldF9kYXRhKCkKICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShjYWNoZV9wYXRoLCBkYXRhKQoKICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgoKICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIGZvciB0aGUgd3JpdGluZyBvZiBieXRlY29kZSBmaWxlcy4KICAgICAgICAiIiIKCgogICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZS4iIiIKICAgICAgICBwYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHBhdGgpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignc291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKICAgICAgICByZXR1cm4gZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpCgogICAgZGVmIHNvdXJjZV90b19jb2RlKHNlbGYsIGRhdGEsIHBhdGgsICosIF9vcHRpbWl6ZT0tMSk6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBjb21waWxlZCBmcm9tIHNvdXJjZS4KCiAgICAgICAgVGhlICdkYXRhJyBhcmd1bWVudCBjYW4gYmUgYW55IG9iamVjdCB0eXBlIHRoYXQgY29tcGlsZSgpIHN1cHBvcnRzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwgZGF0YSwgcGF0aCwgJ2V4ZWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUsIG9wdGltaXplPV9vcHRpbWl6ZSkKCiAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X2NvZGUuCgogICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9zdGF0cyB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKICAgICAgICBieXRlY29kZSwgc2V0X2RhdGEgbXVzdCBhbHNvIGJlIGltcGxlbWVudGVkLgoKICAgICAgICAiIiIKICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgIHNvdXJjZV9tdGltZSA9IE5vbmUKICAgICAgICBzb3VyY2VfYnl0ZXMgPSBOb25lCiAgICAgICAgc291cmNlX2hhc2ggPSBOb25lCiAgICAgICAgaGFzaF9iYXNlZCA9IEZhbHNlCiAgICAgICAgY2hlY2tfc291cmNlID0gVHJ1ZQogICAgICAgIHRyeToKICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IGNhY2hlX2Zyb21fc291cmNlKHNvdXJjZV9wYXRoKQogICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICBieXRlY29kZV9wYXRoID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHN0ID0gc2VsZi5wYXRoX3N0YXRzKHNvdXJjZV9wYXRoKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IGludChzdFsnbXRpbWUnXSkKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBleGNfZGV0YWlscyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBmdWxsbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiBieXRlY29kZV9wYXRoLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NsYXNzaWZ5X3B5YyhkYXRhLCBmdWxsbmFtZSwgZXhjX2RldGFpbHMpCiAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBtZW1vcnl2aWV3KGRhdGEpWzE2Ol0KICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9iYXNlZCA9IGZsYWdzICYgMGIxICE9IDAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGFzaF9iYXNlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX3NvdXJjZSA9IGZsYWdzICYgMGIxMCAhPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2ltcC5jaGVja19oYXNoX2Jhc2VkX3B5Y3MgIT0gJ25ldmVyJyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tfc291cmNlIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbXAuY2hlY2tfaGFzaF9iYXNlZF9weWNzID09ICdhbHdheXMnKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfaGFzaCA9IF9pbXAuc291cmNlX2hhc2goCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SQVdfTUFHSUNfTlVNQkVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92YWxpZGF0ZV9oYXNoX3B5YyhkYXRhLCBzb3VyY2VfaGFzaCwgZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbGlkYXRlX3RpbWVzdGFtcF9weWMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RbJ3NpemUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfZGV0YWlscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aD1ieXRlY29kZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGg9c291cmNlX3BhdGgpCiAgICAgICAgaWYgc291cmNlX2J5dGVzIGlzIE5vbmU6CiAgICAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCiAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCiAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9Jywgc291cmNlX3BhdGgpCiAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgIGlmIGhhc2hfYmFzZWQ6CiAgICAgICAgICAgICAgICBpZiBzb3VyY2VfaGFzaCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHNvdXJjZV9oYXNoID0gX2ltcC5zb3VyY2VfaGFzaChzb3VyY2VfYnl0ZXMpCiAgICAgICAgICAgICAgICBkYXRhID0gX2NvZGVfdG9faGFzaF9weWMoY29kZV9vYmplY3QsIHNvdXJjZV9oYXNoLCBjaGVja19zb3VyY2UpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkYXRhID0gX2NvZGVfdG9fdGltZXN0YW1wX3B5Yyhjb2RlX29iamVjdCwgc291cmNlX210aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZV9ieXRlcykpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQogICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKCgpjbGFzcyBGaWxlTG9hZGVyOgoKICAgICIiIkJhc2UgZmlsZSBsb2FkZXIgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyB0aGUgbG9hZGVyIHByb3RvY29sIG1ldGhvZHMgdGhhdAogICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgogICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCiAgICAgICAgZmluZGVyLiIiIgogICAgICAgIHNlbGYubmFtZSA9IGZ1bGxuYW1lCiAgICAgICAgc2VsZi5wYXRoID0gcGF0aAoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAogICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXykKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5uYW1lKSBeIGhhc2goc2VsZi5wYXRoKQoKICAgIEBfY2hlY2tfbmFtZQogICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAiIiJMb2FkIGEgbW9kdWxlIGZyb20gYSBmaWxlLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KCiAgICAgICAgIiIiCiAgICAgICAgIyBUaGUgb25seSByZWFzb24gZm9yIHRoaXMgbWV0aG9kIGlzIGZvciB0aGUgbmFtZSBjaGVjay4KICAgICAgICAjIElzc3VlICMxNDg1NzogQXZvaWQgdGhlIHplcm8tYXJndW1lbnQgZm9ybSBvZiBzdXBlciBzbyB0aGUgaW1wbGVtZW50YXRpb24KICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlLgogICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKCiAgICBAX2NoZWNrX25hbWUKICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKICAgICAgICByZXR1cm4gc2VsZi5wYXRoCgogICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgogICAgICAgICIiIlJldHVybiB0aGUgZGF0YSBmcm9tIHBhdGggYXMgcmF3IGJ5dGVzLiIiIgogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZiwgKFNvdXJjZUxvYWRlciwgRXh0ZW5zaW9uRmlsZUxvYWRlcikpOgogICAgICAgICAgICB3aXRoIF9pby5vcGVuX2NvZGUoc3RyKHBhdGgpKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgd2l0aCBfaW8uRmlsZUlPKHBhdGgsICdyJykgYXMgZmlsZToKICAgICAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQoKICAgIEBfY2hlY2tfbmFtZQogICAgZGVmIGdldF9yZXNvdXJjZV9yZWFkZXIoc2VsZiwgbW9kdWxlKToKICAgICAgICBmcm9tIGltcG9ydGxpYi5yZWFkZXJzIGltcG9ydCBGaWxlUmVhZGVyCiAgICAgICAgcmV0dXJuIEZpbGVSZWFkZXIoc2VsZikKCgpjbGFzcyBTb3VyY2VGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6CgogICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgU291cmNlTG9hZGVyIHVzaW5nIHRoZSBmaWxlIHN5c3RlbS4iIiIKCiAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKICAgICAgICAiIiJSZXR1cm4gdGhlIG1ldGFkYXRhIGZvciB0aGUgcGF0aC4iIiIKICAgICAgICBzdCA9IF9wYXRoX3N0YXQocGF0aCkKICAgICAgICByZXR1cm4geydtdGltZSc6IHN0LnN0X210aW1lLCAnc2l6ZSc6IHN0LnN0X3NpemV9CgogICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6CiAgICAgICAgIyBBZGFwdCBiZXR3ZWVuIHRoZSB0d28gQVBJcwogICAgICAgIG1vZGUgPSBfY2FsY19tb2RlKHNvdXJjZV9wYXRoKQogICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEsIF9tb2RlPW1vZGUpCgogICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEsICosIF9tb2RlPTBvNjY2KToKICAgICAgICAiIiJXcml0ZSBieXRlcyBkYXRhIHRvIGEgZmlsZS4iIiIKICAgICAgICBwYXJlbnQsIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICAgICBwYXRoX3BhcnRzID0gW10KICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCBkaXJlY3RvcmllcyBhcmUgbWlzc2luZy4KICAgICAgICB3aGlsZSBwYXJlbnQgYW5kIG5vdCBfcGF0aF9pc2RpcihwYXJlbnQpOgogICAgICAgICAgICBwYXJlbnQsIHBhcnQgPSBfcGF0aF9zcGxpdChwYXJlbnQpCiAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCiAgICAgICAgIyBDcmVhdGUgbmVlZGVkIGRpcmVjdG9yaWVzLgogICAgICAgIGZvciBwYXJ0IGluIHJldmVyc2VkKHBhdGhfcGFydHMpOgogICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgX29zLm1rZGlyKHBhcmVudCkKICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgICAgICMgUHJvYmFibHkgYW5vdGhlciBQeXRob24gcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQgdGhlIGRpci4KICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICMgQ291bGQgYmUgYSBwZXJtaXNzaW9uIGVycm9yLCByZWFkLW9ubHkgZmlsZXN5c3RlbToganVzdCBmb3JnZXQKICAgICAgICAgICAgICAgICMgYWJvdXQgd3JpdGluZyB0aGUgZGF0YS4KICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQsIGV4YykKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBfbW9kZSkKICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjKQoKCmNsYXNzIFNvdXJjZWxlc3NGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgoKICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgoKICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgIGRhdGEgPSBzZWxmLmdldF9kYXRhKHBhdGgpCiAgICAgICAgIyBDYWxsIF9jbGFzc2lmeV9weWMgdG8gZG8gYmFzaWMgdmFsaWRhdGlvbiBvZiB0aGUgcHljIGJ1dCBpZ25vcmUgdGhlCiAgICAgICAgIyByZXN1bHQuIFRoZXJlJ3Mgbm8gc291cmNlIHRvIGNoZWNrIGFnYWluc3QuCiAgICAgICAgZXhjX2RldGFpbHMgPSB7CiAgICAgICAgICAgICduYW1lJzogZnVsbG5hbWUsCiAgICAgICAgICAgICdwYXRoJzogcGF0aCwKICAgICAgICB9CiAgICAgICAgX2NsYXNzaWZ5X3B5YyhkYXRhLCBmdWxsbmFtZSwgZXhjX2RldGFpbHMpCiAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKAogICAgICAgICAgICBtZW1vcnl2aWV3KGRhdGEpWzE2Ol0sCiAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsCiAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9cGF0aCwKICAgICAgICApCgogICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgogICAgICAgIHJldHVybiBOb25lCgoKY2xhc3MgRXh0ZW5zaW9uRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKCiAgICAiIiJMb2FkZXIgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLgoKICAgIFRoZSBjb25zdHJ1Y3RvciBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggRmlsZUZpbmRlci4KCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCk6CiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgIHNlbGYucGF0aCA9IHBhdGgKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fID09IG90aGVyLl9fY2xhc3NfXyBhbmQKICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCgogICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKCiAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKICAgICAgICAiIiJDcmVhdGUgYW4gdW5pbml0aWFsaXplZCBleHRlbnNpb24gbW9kdWxlIiIiCiAgICAgICAgbW9kdWxlID0gX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKAogICAgICAgICAgICBfaW1wLmNyZWF0ZV9keW5hbWljLCBzcGVjKQogICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAogICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5uYW1lLCBzZWxmLnBhdGgpCiAgICAgICAgcmV0dXJuIG1vZHVsZQoKICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICIiIkluaXRpYWxpemUgYW4gZXh0ZW5zaW9uIG1vZHVsZSIiIgogICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfZHluYW1pYywgbW9kdWxlKQogICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGV4ZWN1dGVkIGZyb20geyFyfScsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYucGF0aCkKCiAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgogICAgICAgIGZpbGVfbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYucGF0aClbMV0KICAgICAgICByZXR1cm4gYW55KGZpbGVfbmFtZSA9PSAnX19pbml0X18nICsgc3VmZml4CiAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIEVYVEVOU0lPTl9TVUZGSVhFUykKCiAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIlJldHVybiBOb25lIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2Fubm90IGNyZWF0ZSBhIGNvZGUgb2JqZWN0LiIiIgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIlJldHVybiBOb25lIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGhhdmUgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBAX2NoZWNrX25hbWUKICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKICAgICAgICByZXR1cm4gc2VsZi5wYXRoCgoKY2xhc3MgX05hbWVzcGFjZVBhdGg6CiAgICAiIiJSZXByZXNlbnRzIGEgbmFtZXNwYWNlIHBhY2thZ2UncyBwYXRoLiAgSXQgdXNlcyB0aGUgbW9kdWxlIG5hbWUKICAgIHRvIGZpbmQgaXRzIHBhcmVudCBtb2R1bGUsIGFuZCBmcm9tIHRoZXJlIGl0IGxvb2tzIHVwIHRoZSBwYXJlbnQncwogICAgX19wYXRoX18uICBXaGVuIHRoaXMgY2hhbmdlcywgdGhlIG1vZHVsZSdzIG93biBwYXRoIGlzIHJlY29tcHV0ZWQsCiAgICB1c2luZyBwYXRoX2ZpbmRlci4gIEZvciB0b3AtbGV2ZWwgbW9kdWxlcywgdGhlIHBhcmVudCBtb2R1bGUncyBwYXRoCiAgICBpcyBzeXMucGF0aC4iIiIKCiAgICAjIFdoZW4gaW52YWxpZGF0ZV9jYWNoZXMoKSBpcyBjYWxsZWQsIHRoaXMgZXBvY2ggaXMgaW5jcmVtZW50ZWQKICAgICMgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU0NTcwMwogICAgX2Vwb2NoID0gMAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6CiAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAogICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKICAgICAgICBzZWxmLl9sYXN0X2Vwb2NoID0gc2VsZi5fZXBvY2gKICAgICAgICBzZWxmLl9wYXRoX2ZpbmRlciA9IHBhdGhfZmluZGVyCgogICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgogICAgICAgICIiIlJldHVybnMgYSB0dXBsZSBvZiAocGFyZW50LW1vZHVsZS1uYW1lLCBwYXJlbnQtcGF0aC1hdHRyLW5hbWUpIiIiCiAgICAgICAgcGFyZW50LCBkb3QsIG1lID0gc2VsZi5fbmFtZS5ycGFydGl0aW9uKCcuJykKICAgICAgICBpZiBkb3QgPT0gJyc6CiAgICAgICAgICAgICMgVGhpcyBpcyBhIHRvcC1sZXZlbCBtb2R1bGUuIHN5cy5wYXRoIGNvbnRhaW5zIHRoZSBwYXJlbnQgcGF0aC4KICAgICAgICAgICAgcmV0dXJuICdzeXMnLCAncGF0aCcKICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCiAgICAgICAgIyAgcGFyZW50IHBhdGguCiAgICAgICAgcmV0dXJuIHBhcmVudCwgJ19fcGF0aF9fJwoKICAgIGRlZiBfZ2V0X3BhcmVudF9wYXRoKHNlbGYpOgogICAgICAgIHBhcmVudF9tb2R1bGVfbmFtZSwgcGF0aF9hdHRyX25hbWUgPSBzZWxmLl9maW5kX3BhcmVudF9wYXRoX25hbWVzKCkKICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKCiAgICBkZWYgX3JlY2FsY3VsYXRlKHNlbGYpOgogICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCiAgICAgICAgcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkgIyBNYWtlIGEgY29weQogICAgICAgIGlmIHBhcmVudF9wYXRoICE9IHNlbGYuX2xhc3RfcGFyZW50X3BhdGggb3Igc2VsZi5fZXBvY2ggIT0gc2VsZi5fbGFzdF9lcG9jaDoKICAgICAgICAgICAgc3BlYyA9IHNlbGYuX3BhdGhfZmluZGVyKHNlbGYuX25hbWUsIHBhcmVudF9wYXRoKQogICAgICAgICAgICAjIE5vdGUgdGhhdCBubyBjaGFuZ2VzIGFyZSBtYWRlIGlmIGEgbG9hZGVyIGlzIHJldHVybmVkLCBidXQgd2UKICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAogICAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBzcGVjLmxvYWRlciBpcyBOb25lOgogICAgICAgICAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9uczoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwogICAgICAgICAgICBzZWxmLl9sYXN0X3BhcmVudF9wYXRoID0gcGFyZW50X3BhdGggICAgICMgU2F2ZSB0aGUgY29weQogICAgICAgICAgICBzZWxmLl9sYXN0X2Vwb2NoID0gc2VsZi5fZXBvY2gKICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9yZWNhbGN1bGF0ZSgpKQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CiAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2FsY3VsYXRlKClbaW5kZXhdCgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCBwYXRoKToKICAgICAgICBzZWxmLl9wYXRoW2luZGV4XSA9IHBhdGgKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnX05hbWVzcGFjZVBhdGgoeyFyfSknLmZvcm1hdChzZWxmLl9wYXRoKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CiAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQoKICAgIGRlZiBhcHBlbmQoc2VsZiwgaXRlbSk6CiAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKCgojIFRoaXMgY2xhc3MgaXMgYWN0dWFsbHkgZXhwb3NlZCBwdWJsaWNseSBpbiBhIG5hbWVzcGFjZSBwYWNrYWdlJ3MgX19sb2FkZXJfXwojIGF0dHJpYnV0ZSwgc28gaXQgc2hvdWxkIGJlIGF2YWlsYWJsZSB0aHJvdWdoIGEgbm9uLXByaXZhdGUgbmFtZS4KIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM1NjczCmNsYXNzIE5hbWVzcGFjZUxvYWRlcjoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6CiAgICAgICAgc2VsZi5fcGF0aCA9IF9OYW1lc3BhY2VQYXRoKG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBtb2R1bGVfcmVwcihtb2R1bGUpOgogICAgICAgICIiIlJldHVybiByZXByIGZvciB0aGUgbW9kdWxlLgoKICAgICAgICBUaGUgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBUaGUgaW1wb3J0IG1hY2hpbmVyeSBkb2VzIHRoZSBqb2IgaXRzZWxmLgoKICAgICAgICAiIiIKICAgICAgICBfd2FybmluZ3Mud2FybigiTmFtZXNwYWNlTG9hZGVyLm1vZHVsZV9yZXByKCkgaXMgZGVwcmVjYXRlZCBhbmQgIgogICAgICAgICAgICAgICAgICAgICAgICJzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTIiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKG5hbWVzcGFjZSk+Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQoKICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICByZXR1cm4gJycKCiAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgIHJldHVybiBjb21waWxlKCcnLCAnPHN0cmluZz4nLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQoKICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgogICAgICAgICIiIlVzZSBkZWZhdWx0IHNlbWFudGljcyBmb3IgbW9kdWxlIGNyZWF0aW9uLiIiIgoKICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgIHBhc3MKCiAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIkxvYWQgYSBuYW1lc3BhY2UgbW9kdWxlLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KCiAgICAgICAgIiIiCiAgICAgICAgIyBUaGUgaW1wb3J0IHN5c3RlbSBuZXZlciBjYWxscyB0aGlzIG1ldGhvZC4KICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCkKICAgICAgICAjIFdhcm5pbmcgaW1wbGVtZW50ZWQgaW4gX2xvYWRfbW9kdWxlX3NoaW0oKS4KICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKCiAgICBkZWYgZ2V0X3Jlc291cmNlX3JlYWRlcihzZWxmLCBtb2R1bGUpOgogICAgICAgIGZyb20gaW1wb3J0bGliLnJlYWRlcnMgaW1wb3J0IE5hbWVzcGFjZVJlYWRlcgogICAgICAgIHJldHVybiBOYW1lc3BhY2VSZWFkZXIoc2VsZi5fcGF0aCkKCgojIFdlIHVzZSB0aGlzIGV4Y2x1c2l2ZWx5IGluIG1vZHVsZV9mcm9tX3NwZWMoKSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KX05hbWVzcGFjZUxvYWRlciA9IE5hbWVzcGFjZUxvYWRlcgoKCiMgRmluZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmNsYXNzIFBhdGhGaW5kZXI6CgogICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLnBhdGggYW5kIHBhY2thZ2UgX19wYXRoX18gYXR0cmlidXRlcy4iIiIKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoKToKICAgICAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgcGF0aCBlbnRyeSBmaW5kZXJzCiAgICAgICAgc3RvcmVkIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlcyAod2hlcmUgaW1wbGVtZW50ZWQpLiIiIgogICAgICAgIGZvciBuYW1lLCBmaW5kZXIgaW4gbGlzdChzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5pdGVtcygpKToKICAgICAgICAgICAgIyBEcm9wIGVudHJ5IGlmIGZpbmRlciBuYW1lIGlzIGEgcmVsYXRpdmUgcGF0aC4gVGhlIGN1cnJlbnQKICAgICAgICAgICAgIyB3b3JraW5nIGRpcmVjdG9yeSBtYXkgaGF2ZSBjaGFuZ2VkLgogICAgICAgICAgICBpZiBmaW5kZXIgaXMgTm9uZSBvciBub3QgX3BhdGhfaXNhYnMobmFtZSk6CiAgICAgICAgICAgICAgICBkZWwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbbmFtZV0KICAgICAgICAgICAgZWxpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CiAgICAgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICMgQWxzbyBpbnZhbGlkYXRlIHRoZSBjYWNoZXMgb2YgX05hbWVzcGFjZVBhdGhzCiAgICAgICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTQ1NzAzCiAgICAgICAgX05hbWVzcGFjZVBhdGguX2Vwb2NoICs9IDEKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX3BhdGhfaG9va3MocGF0aCk6CiAgICAgICAgIiIiU2VhcmNoIHN5cy5wYXRoX2hvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLiIiIgogICAgICAgIGlmIHN5cy5wYXRoX2hvb2tzIGlzIG5vdCBOb25lIGFuZCBub3Qgc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCiAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBob29rKHBhdGgpCiAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgpOgogICAgICAgICIiIkdldCB0aGUgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBmcm9tIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgoKICAgICAgICBJZiB0aGUgcGF0aCBlbnRyeSBpcyBub3QgaW4gdGhlIGNhY2hlLCBmaW5kIHRoZSBhcHByb3ByaWF0ZSBmaW5kZXIKICAgICAgICBhbmQgY2FjaGUgaXQuIElmIG5vIGZpbmRlciBpcyBhdmFpbGFibGUsIHN0b3JlIE5vbmUuCgogICAgICAgICIiIgogICAgICAgIGlmIHBhdGggPT0gJyc6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICAgICAgIyBEb24ndCBjYWNoZSB0aGUgZmFpbHVyZSBhcyB0aGUgY3dkIGNhbiBlYXNpbHkgY2hhbmdlIHRvCiAgICAgICAgICAgICAgICAjIGEgdmFsaWQgZGlyZWN0b3J5IGxhdGVyIG9uLgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZpbmRlciA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaG9va3MocGF0aCkKICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gPSBmaW5kZXIKICAgICAgICByZXR1cm4gZmluZGVyCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2xlZ2FjeV9nZXRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBmaW5kZXIpOgogICAgICAgICMgVGhpcyB3b3VsZCBiZSBhIGdvb2QgcGxhY2UgZm9yIGEgRGVwcmVjYXRpb25XYXJuaW5nIGlmCiAgICAgICAgIyB3ZSBlbmRlZCB1cCBnb2luZyB0aGF0IHJvdXRlLgogICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9sb2FkZXInKToKICAgICAgICAgICAgbXNnID0gKGYie19ib290c3RyYXAuX29iamVjdF9uYW1lKGZpbmRlcil9LmZpbmRfc3BlYygpIG5vdCBmb3VuZDsgIgogICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sgdG8gZmluZF9sb2FkZXIoKSIpCiAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZywgSW1wb3J0V2FybmluZykKICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmdWxsbmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBtc2cgPSAoZiJ7X2Jvb3RzdHJhcC5fb2JqZWN0X25hbWUoZmluZGVyKX0uZmluZF9zcGVjKCkgbm90IGZvdW5kOyAiCiAgICAgICAgICAgICAgICAgICAgImZhbGxpbmcgYmFjayB0byBmaW5kX21vZHVsZSgpIikKICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4obXNnLCBJbXBvcnRXYXJuaW5nKQogICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCiAgICAgICAgICAgIHBvcnRpb25zID0gW10KICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLnNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIGxvYWRlcikKICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQogICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBwb3J0aW9ucwogICAgICAgIHJldHVybiBzcGVjCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2dldF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGgsIHRhcmdldD1Ob25lKToKICAgICAgICAiIiJGaW5kIHRoZSBsb2FkZXIgb3IgbmFtZXNwYWNlX3BhdGggZm9yIHRoaXMgbW9kdWxlL3BhY2thZ2UgbmFtZS4iIiIKICAgICAgICAjIElmIHRoaXMgZW5kcyB1cCBiZWluZyBhIG5hbWVzcGFjZSBwYWNrYWdlLCBuYW1lc3BhY2VfcGF0aCBpcwogICAgICAgICMgIHRoZSBsaXN0IG9mIHBhdGhzIHRoYXQgd2lsbCBiZWNvbWUgaXRzIF9fcGF0aF9fCiAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBbXQogICAgICAgIGZvciBlbnRyeSBpbiBwYXRoOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbnRyeSwgc3RyKToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9pbXBvcnRlcl9jYWNoZShlbnRyeSkKICAgICAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX3NwZWMnKToKICAgICAgICAgICAgICAgICAgICBzcGVjID0gZmluZGVyLmZpbmRfc3BlYyhmdWxsbmFtZSwgdGFyZ2V0KQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzcGVjID0gY2xzLl9sZWdhY3lfZ2V0X3NwZWMoZnVsbG5hbWUsIGZpbmRlcikKICAgICAgICAgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKICAgICAgICAgICAgICAgIHBvcnRpb25zID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwogICAgICAgICAgICAgICAgaWYgcG9ydGlvbnMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignc3BlYyBtaXNzaW5nIGxvYWRlcicpCiAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcG9zc2libHkgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgogICAgICAgICAgICAgICAgIyAgUmVtZW1iZXIgdGhlc2UgcGF0aCBlbnRyaWVzIChpZiBhbnkpIGZvciB3aGVuIHdlCiAgICAgICAgICAgICAgICAjICBjcmVhdGUgYSBuYW1lc3BhY2UgcGFja2FnZSwgYW5kIGNvbnRpbnVlIGl0ZXJhdGluZwogICAgICAgICAgICAgICAgIyAgb24gcGF0aC4KICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoLmV4dGVuZChwb3J0aW9ucykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQogICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gbmFtZXNwYWNlX3BhdGgKICAgICAgICAgICAgcmV0dXJuIHNwZWMKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CiAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciAnZnVsbG5hbWUnIG9uIHN5cy5wYXRoIG9yICdwYXRoJy4KCiAgICAgICAgVGhlIHNlYXJjaCBpcyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCiAgICAgICAgIiIiCiAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKICAgICAgICBzcGVjID0gY2xzLl9nZXRfc3BlYyhmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0KQogICAgICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBlbGlmIHNwZWMubG9hZGVyIGlzIE5vbmU6CiAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwogICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYXQgbGVhc3Qgb25lIG5hbWVzcGFjZSBwYXRoLiAgUmV0dXJuIGEgc3BlYyB3aGljaAogICAgICAgICAgICAgICAgIyBjYW4gY3JlYXRlIHRoZSBuYW1lc3BhY2UgcGFja2FnZS4KICAgICAgICAgICAgICAgIHNwZWMub3JpZ2luID0gTm9uZQogICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IF9OYW1lc3BhY2VQYXRoKGZ1bGxuYW1lLCBuYW1lc3BhY2VfcGF0aCwgY2xzLl9nZXRfc3BlYykKICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzcGVjCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAogICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCgogICAgICAgICIiIgogICAgICAgIF93YXJuaW5ncy53YXJuKCJQYXRoRmluZGVyLmZpbmRfbW9kdWxlKCkgaXMgZGVwcmVjYXRlZCBhbmQgIgogICAgICAgICAgICAgICAgICAgICAgICJzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTI7IHVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkIiwKICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgc3BlYyA9IGNscy5maW5kX3NwZWMoZnVsbG5hbWUsIHBhdGgpCiAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBzcGVjLmxvYWRlcgoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBmaW5kX2Rpc3RyaWJ1dGlvbnMoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBGaW5kIGRpc3RyaWJ1dGlvbnMuCgogICAgICAgIFJldHVybiBhbiBpdGVyYWJsZSBvZiBhbGwgRGlzdHJpYnV0aW9uIGluc3RhbmNlcyBjYXBhYmxlIG9mCiAgICAgICAgbG9hZGluZyB0aGUgbWV0YWRhdGEgZm9yIHBhY2thZ2VzIG1hdGNoaW5nIGBgY29udGV4dC5uYW1lYGAKICAgICAgICAob3IgYWxsIG5hbWVzIGlmIGBgTm9uZWBgIGluZGljYXRlZCkgYWxvbmcgdGhlIHBhdGhzIGluIHRoZSBsaXN0CiAgICAgICAgb2YgZGlyZWN0b3JpZXMgYGBjb250ZXh0LnBhdGhgYC4KICAgICAgICAiIiIKICAgICAgICBmcm9tIGltcG9ydGxpYi5tZXRhZGF0YSBpbXBvcnQgTWV0YWRhdGFQYXRoRmluZGVyCiAgICAgICAgcmV0dXJuIE1ldGFkYXRhUGF0aEZpbmRlci5maW5kX2Rpc3RyaWJ1dGlvbnMoKmFyZ3MsICoqa3dhcmdzKQoKCmNsYXNzIEZpbGVGaW5kZXI6CgogICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCgogICAgSW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpbGUgc3lzdGVtIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLCBiZWluZwogICAgcmVmcmVzaGVkIHdoZW4gdGhlIGRpcmVjdG9yeSB0aGUgZmluZGVyIGlzIGhhbmRsaW5nIGhhcyBiZWVuIG1vZGlmaWVkLgoKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCAqbG9hZGVyX2RldGFpbHMpOgogICAgICAgICIiIkluaXRpYWxpemUgd2l0aCB0aGUgcGF0aCB0byBzZWFyY2ggb24gYW5kIGEgdmFyaWFibGUgbnVtYmVyIG9mCiAgICAgICAgMi10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyIGFuZCB0aGUgZmlsZSBzdWZmaXhlcyB0aGUgbG9hZGVyCiAgICAgICAgcmVjb2duaXplcy4iIiIKICAgICAgICBsb2FkZXJzID0gW10KICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBsb2FkZXJfZGV0YWlsczoKICAgICAgICAgICAgbG9hZGVycy5leHRlbmQoKHN1ZmZpeCwgbG9hZGVyKSBmb3Igc3VmZml4IGluIHN1ZmZpeGVzKQogICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCiAgICAgICAgIyBCYXNlIChkaXJlY3RvcnkpIHBhdGgKICAgICAgICBpZiBub3QgcGF0aCBvciBwYXRoID09ICcuJzoKICAgICAgICAgICAgc2VsZi5wYXRoID0gX29zLmdldGN3ZCgpCiAgICAgICAgZWxpZiBub3QgX3BhdGhfaXNhYnMocGF0aCk6CiAgICAgICAgICAgIHNlbGYucGF0aCA9IF9wYXRoX2pvaW4oX29zLmdldGN3ZCgpLCBwYXRoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gLTEKICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSBzZXQoKQoKICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKICAgICAgICAiIiJJbnZhbGlkYXRlIHRoZSBkaXJlY3RvcnkgbXRpbWUuIiIiCiAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCgogICAgZmluZF9tb2R1bGUgPSBfZmluZF9tb2R1bGVfc2hpbQoKICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLCBvciB0aGUgbmFtZXNwYWNlCiAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgoKICAgICAgICAiIiIKICAgICAgICBfd2FybmluZ3Mud2FybigiRmlsZUZpbmRlci5maW5kX2xvYWRlcigpIGlzIGRlcHJlY2F0ZWQgYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjEyOyB1c2UgZmluZF9zcGVjKCkgaW5zdGVhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgIHNwZWMgPSBzZWxmLmZpbmRfc3BlYyhmdWxsbmFtZSkKICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lLCBbXQogICAgICAgIHJldHVybiBzcGVjLmxvYWRlciwgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBvciBbXQoKICAgIGRlZiBfZ2V0X3NwZWMoc2VsZiwgbG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgcGF0aCwgc21zbCwgdGFyZ2V0KToKICAgICAgICBsb2FkZXIgPSBsb2FkZXJfY2xhc3MoZnVsbG5hbWUsIHBhdGgpCiAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKGZ1bGxuYW1lLCBwYXRoLCBsb2FkZXI9bG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zbXNsKQoKICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgZnVsbG5hbWUsIHRhcmdldD1Ob25lKToKICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLgoKICAgICAgICBSZXR1cm5zIHRoZSBtYXRjaGluZyBzcGVjLCBvciBOb25lIGlmIG5vdCBmb3VuZC4KICAgICAgICAiIiIKICAgICAgICBpc19uYW1lc3BhY2UgPSBGYWxzZQogICAgICAgIHRhaWxfbW9kdWxlID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBtdGltZSA9IF9wYXRoX3N0YXQoc2VsZi5wYXRoIG9yIF9vcy5nZXRjd2QoKSkuc3RfbXRpbWUKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgbXRpbWUgPSAtMQogICAgICAgIGlmIG10aW1lICE9IHNlbGYuX3BhdGhfbXRpbWU6CiAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQogICAgICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gbXRpbWUKICAgICAgICAjIHRhaWxfbW9kdWxlIGtlZXBzIHRoZSBvcmlnaW5hbCBjYXNpbmcsIGZvciBfX2ZpbGVfXyBhbmQgZnJpZW5kcwogICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CiAgICAgICAgICAgIGNhY2hlID0gc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlCiAgICAgICAgICAgIGNhY2hlX21vZHVsZSA9IHRhaWxfbW9kdWxlLmxvd2VyKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUKICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCiAgICAgICAgaWYgY2FjaGVfbW9kdWxlIGluIGNhY2hlOgogICAgICAgICAgICBiYXNlX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUpCiAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgogICAgICAgICAgICAgICAgaW5pdF9maWxlbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKQogICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgW2Jhc2VfcGF0aF0sIHRhcmdldCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgSWYgYSBuYW1lc3BhY2UgcGFja2FnZSwgcmV0dXJuIHRoZSBwYXRoIGlmIHdlIGRvbid0CiAgICAgICAgICAgICAgICAjICBmaW5kIGEgbW9kdWxlIGluIHRoZSBuZXh0IHNlY3Rpb24uCiAgICAgICAgICAgICAgICBpc19uYW1lc3BhY2UgPSBfcGF0aF9pc2RpcihiYXNlX3BhdGgpCiAgICAgICAgIyBDaGVjayBmb3IgYSBmaWxlIHcvIGEgcHJvcGVyIHN1ZmZpeCBleGlzdHMuCiAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSArIHN1ZmZpeCkKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3RyeWluZyB7fScsIGZ1bGxfcGF0aCwgdmVyYm9zaXR5PTIpCiAgICAgICAgICAgIGlmIGNhY2hlX21vZHVsZSArIHN1ZmZpeCBpbiBjYWNoZToKICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHRhcmdldCkKICAgICAgICBpZiBpc19uYW1lc3BhY2U6CiAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScsIGJhc2VfcGF0aCkKICAgICAgICAgICAgc3BlYyA9IF9ib290c3RyYXAuTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCiAgICAgICAgICAgIHJldHVybiBzcGVjCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgX2ZpbGxfY2FjaGUoc2VsZik6CiAgICAgICAgIiIiRmlsbCB0aGUgY2FjaGUgb2YgcG90ZW50aWFsIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGZvciB0aGlzIGRpcmVjdG9yeS4iIiIKICAgICAgICBwYXRoID0gc2VsZi5wYXRoCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjb250ZW50cyA9IF9vcy5saXN0ZGlyKHBhdGggb3IgX29zLmdldGN3ZCgpKQogICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKICAgICAgICAgICAgIyBEaXJlY3RvcnkgaGFzIGVpdGhlciBiZWVuIHJlbW92ZWQsIHR1cm5lZCBpbnRvIGEgZmlsZSwgb3IgbWFkZQogICAgICAgICAgICAjIHVucmVhZGFibGUuCiAgICAgICAgICAgIGNvbnRlbnRzID0gW10KICAgICAgICAjIFdlIHN0b3JlIHR3byBjYWNoZWQgdmVyc2lvbnMsIHRvIGhhbmRsZSBydW50aW1lIGNoYW5nZXMgb2YgdGhlCiAgICAgICAgIyBQWVRIT05DQVNFT0sgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IHNldChjb250ZW50cykKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCiAgICAgICAgICAgICMgc3VmZml4ZXMgKGZvciBsZWdhY3kgcmVhc29ucykuIE1ha2UgdGhlIHN1ZmZpeCBsb3dlcmNhc2UgaGVyZQogICAgICAgICAgICAjIHNvIGl0J3MgZG9uZSBvbmNlIGluc3RlYWQgb2YgZm9yIGV2ZXJ5IGltcG9ydC4gVGhpcyBpcyBzYWZlIGFzCiAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKICAgICAgICAgICAgIyBjYXNlLXNlbnNpdGl2ZSBtYW5uZXIuCiAgICAgICAgICAgIGxvd2VyX3N1ZmZpeF9jb250ZW50cyA9IHNldCgpCiAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgogICAgICAgICAgICAgICAgbmFtZSwgZG90LCBzdWZmaXggPSBpdGVtLnBhcnRpdGlvbignLicpCiAgICAgICAgICAgICAgICBpZiBkb3Q6CiAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSBuYW1lCiAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQogICAgICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gbG93ZXJfc3VmZml4X2NvbnRlbnRzCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TKToKICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0ge2ZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzfQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHBhdGhfaG9vayhjbHMsICpsb2FkZXJfZGV0YWlscyk6CiAgICAgICAgIiIiQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgdG8gdXNlIG9uIHN5cy5wYXRoX2hvb2sKICAgICAgICB3aGljaCB3aWxsIHJldHVybiBhbiBpbnN0YW5jZSB1c2luZyB0aGUgc3BlY2lmaWVkIGxvYWRlcnMgYW5kIHRoZSBwYXRoCiAgICAgICAgY2FsbGVkIG9uIHRoZSBjbG9zdXJlLgoKICAgICAgICBJZiB0aGUgcGF0aCBjYWxsZWQgb24gdGhlIGNsb3N1cmUgaXMgbm90IGEgZGlyZWN0b3J5LCBJbXBvcnRFcnJvciBpcwogICAgICAgIHJhaXNlZC4KCiAgICAgICAgIiIiCiAgICAgICAgZGVmIHBhdGhfaG9va19mb3JfRmlsZUZpbmRlcihwYXRoKToKICAgICAgICAgICAgIiIiUGF0aCBob29rIGZvciBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuIiIiCiAgICAgICAgICAgIGlmIG5vdCBfcGF0aF9pc2RpcihwYXRoKToKICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQnLCBwYXRoPXBhdGgpCiAgICAgICAgICAgIHJldHVybiBjbHMocGF0aCwgKmxvYWRlcl9kZXRhaWxzKQoKICAgICAgICByZXR1cm4gcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnRmlsZUZpbmRlcih7IXJ9KScuZm9ybWF0KHNlbGYucGF0aCkKCgojIEltcG9ydCBzZXR1cCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmRlZiBfZml4X3VwX21vZHVsZShucywgbmFtZSwgcGF0aG5hbWUsIGNwYXRobmFtZT1Ob25lKToKICAgICMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkuCiAgICBsb2FkZXIgPSBucy5nZXQoJ19fbG9hZGVyX18nKQogICAgc3BlYyA9IG5zLmdldCgnX19zcGVjX18nKQogICAgaWYgbm90IGxvYWRlcjoKICAgICAgICBpZiBzcGVjOgogICAgICAgICAgICBsb2FkZXIgPSBzcGVjLmxvYWRlcgogICAgICAgIGVsaWYgcGF0aG5hbWUgPT0gY3BhdGhuYW1lOgogICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQogICAgaWYgbm90IHNwZWM6CiAgICAgICAgc3BlYyA9IHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIHBhdGhuYW1lLCBsb2FkZXI9bG9hZGVyKQogICAgdHJ5OgogICAgICAgIG5zWydfX3NwZWNfXyddID0gc3BlYwogICAgICAgIG5zWydfX2xvYWRlcl9fJ10gPSBsb2FkZXIKICAgICAgICBuc1snX19maWxlX18nXSA9IHBhdGhuYW1lCiAgICAgICAgbnNbJ19fY2FjaGVkX18nXSA9IGNwYXRobmFtZQogICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAjIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydC4KICAgICAgICBwYXNzCgoKZGVmIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgogICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgZmlsZS1iYXNlZCBtb2R1bGUgbG9hZGVycy4KCiAgICBFYWNoIGl0ZW0gaXMgYSB0dXBsZSAobG9hZGVyLCBzdWZmaXhlcykuCiAgICAiIiIKICAgIGV4dGVuc2lvbnMgPSBFeHRlbnNpb25GaWxlTG9hZGVyLCBfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpCiAgICBzb3VyY2UgPSBTb3VyY2VGaWxlTG9hZGVyLCBTT1VSQ0VfU1VGRklYRVMKICAgIGJ5dGVjb2RlID0gU291cmNlbGVzc0ZpbGVMb2FkZXIsIEJZVEVDT0RFX1NVRkZJWEVTCiAgICByZXR1cm4gW2V4dGVuc2lvbnMsIHNvdXJjZSwgYnl0ZWNvZGVdCgoKZGVmIF9zZXRfYm9vdHN0cmFwX21vZHVsZShfYm9vdHN0cmFwX21vZHVsZSk6CiAgICBnbG9iYWwgX2Jvb3RzdHJhcAogICAgX2Jvb3RzdHJhcCA9IF9ib290c3RyYXBfbW9kdWxlCgoKZGVmIF9pbnN0YWxsKF9ib290c3RyYXBfbW9kdWxlKToKICAgICIiIkluc3RhbGwgdGhlIHBhdGgtYmFzZWQgaW1wb3J0IGNvbXBvbmVudHMuIiIiCiAgICBfc2V0X2Jvb3RzdHJhcF9tb2R1bGUoX2Jvb3RzdHJhcF9tb2R1bGUpCiAgICBzdXBwb3J0ZWRfbG9hZGVycyA9IF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpCiAgICBzeXMucGF0aF9ob29rcy5leHRlbmQoW0ZpbGVGaW5kZXIucGF0aF9ob29rKCpzdXBwb3J0ZWRfbG9hZGVycyldKQogICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKUEsDBBQAAAAAAAMgo1YnMoPQ2SoAANkqAAAQAAAAaW1wb3J0bGliL2FiYy5weSIiIkFic3RyYWN0IGJhc2UgY2xhc3NlcyByZWxhdGVkIHRvIGltcG9ydC4iIiIKZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCmZyb20gLiBpbXBvcnQgbWFjaGluZXJ5CnRyeToKICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYgpleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgaWYgZXhjLm5hbWUgIT0gJ19mcm96ZW5faW1wb3J0bGliJzoKICAgICAgICByYWlzZQogICAgX2Zyb3plbl9pbXBvcnRsaWIgPSBOb25lCnRyeToKICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCA9IF9ib290c3RyYXBfZXh0ZXJuYWwKZnJvbSAuX2FiYyBpbXBvcnQgTG9hZGVyCmltcG9ydCBhYmMKaW1wb3J0IHdhcm5pbmdzCgojIGZvciBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMTAKZnJvbSAucmVzb3VyY2VzLmFiYyBpbXBvcnQgUmVzb3VyY2VSZWFkZXIsIFRyYXZlcnNhYmxlLCBUcmF2ZXJzYWJsZVJlc291cmNlcwoKCl9fYWxsX18gPSBbCiAgICAnTG9hZGVyJywgJ0ZpbmRlcicsICdNZXRhUGF0aEZpbmRlcicsICdQYXRoRW50cnlGaW5kZXInLAogICAgJ1Jlc291cmNlTG9hZGVyJywgJ0luc3BlY3RMb2FkZXInLCAnRXhlY3V0aW9uTG9hZGVyJywKICAgICdGaWxlTG9hZGVyJywgJ1NvdXJjZUxvYWRlcicsCgogICAgIyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjEwCiAgICAnUmVzb3VyY2VSZWFkZXInLCAnVHJhdmVyc2FibGUnLCAnVHJhdmVyc2FibGVSZXNvdXJjZXMnLApdCgoKZGVmIF9yZWdpc3RlcihhYnN0cmFjdF9jbHMsICpjbGFzc2VzKToKICAgIGZvciBjbHMgaW4gY2xhc3NlczoKICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoY2xzKQogICAgICAgIGlmIF9mcm96ZW5faW1wb3J0bGliIGlzIG5vdCBOb25lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmcm96ZW5fY2xzID0gZ2V0YXR0cihfZnJvemVuX2ltcG9ydGxpYiwgY2xzLl9fbmFtZV9fKQogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBmcm96ZW5fY2xzID0gZ2V0YXR0cihfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCwgY2xzLl9fbmFtZV9fKQogICAgICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoZnJvemVuX2NscykKCgpjbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKCiAgICAiIiJMZWdhY3kgYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGZpbmRlcnMuCgogICAgSXQgbWF5IGJlIHN1YmNsYXNzZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kgdGhpcmQgcGFydHkKICAgIHJlaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbXBvcnQgc3lzdGVtLiAgT3RoZXJ3aXNlLCBmaW5kZXIKICAgIGltcGxlbWVudGF0aW9ucyBzaG91bGQgZGVyaXZlIGZyb20gdGhlIG1vcmUgc3BlY2lmaWMgTWV0YVBhdGhGaW5kZXIKICAgIG9yIFBhdGhFbnRyeUZpbmRlciBBQkNzLgoKICAgIERlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuMwogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHdhcm5pbmdzLndhcm4oInRoZSBGaW5kZXIgQUJDIGlzIGRlcHJlY2F0ZWQgYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjEyOyB1c2UgTWV0YVBhdGhGaW5kZXIgIgogICAgICAgICAgICAgICAgICAgICAgICJvciBQYXRoRW50cnlGaW5kZXIgaW5zdGVhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAiIiJBbiBhYnN0cmFjdCBtZXRob2QgdGhhdCBzaG91bGQgZmluZCBhIG1vZHVsZS4KICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBvcHRpb25hbCBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCiAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3Qgb3IgTm9uZS4KICAgICAgICAiIiIKICAgICAgICB3YXJuaW5ncy53YXJuKCJpbXBvcnRsaWIuYWJjLkZpbmRlciBhbG9uZyB3aXRoIGl0cyBmaW5kX21vZHVsZSgpICIKICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgYXJlIGRlcHJlY2F0ZWQgYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjEyOyB1c2UgIgogICAgICAgICAgICAgICAgICAgICAgICJNZXRhUGF0aEZpbmRlci5maW5kX3NwZWMoKSBvciAiCiAgICAgICAgICAgICAgICAgICAgICAgIlBhdGhFbnRyeUZpbmRlci5maW5kX3NwZWMoKSBpbnN0ZWFkIiwKICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCgoKY2xhc3MgTWV0YVBhdGhGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKCiAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycyBvbiBzeXMubWV0YV9wYXRoLiIiIgoKICAgICMgV2UgZG9uJ3QgZGVmaW5lIGZpbmRfc3BlYygpIGhlcmUgc2luY2UgdGhhdCB3b3VsZCBicmVhawogICAgIyBoYXNhdHRyIGNoZWNrcyB3ZSBkbyB0byBzdXBwb3J0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgogICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKICAgICAgICAiIiJSZXR1cm4gYSBsb2FkZXIgZm9yIHRoZSBtb2R1bGUuCgogICAgICAgIElmIG5vIG1vZHVsZSBpcyBmb3VuZCwgcmV0dXJuIE5vbmUuICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kCiAgICAgICAgdGhlIHBhdGggaXMgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgTm9uZS4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMy40IGluIGZhdm9yIG9mCiAgICAgICAgZmluZGVyLmZpbmRfc3BlYygpLiBJZiBmaW5kX3NwZWMoKSBleGlzdHMgdGhlbiBiYWNrd2FyZHMtY29tcGF0aWJsZQogICAgICAgIGZ1bmN0aW9uYWxpdHkgaXMgcHJvdmlkZWQgZm9yIHRoaXMgbWV0aG9kLgoKICAgICAgICAiIiIKICAgICAgICB3YXJuaW5ncy53YXJuKCJNZXRhUGF0aEZpbmRlci5maW5kX21vZHVsZSgpIGlzIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uICIKICAgICAgICAgICAgICAgICAgICAgICIzLjQgaW4gZmF2b3Igb2YgTWV0YVBhdGhGaW5kZXIuZmluZF9zcGVjKCkgYW5kIGlzICIKICAgICAgICAgICAgICAgICAgICAgICJzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTIiLAogICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQogICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdmaW5kX3NwZWMnKToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBmb3VuZCA9IHNlbGYuZmluZF9zcGVjKGZ1bGxuYW1lLCBwYXRoKQogICAgICAgIHJldHVybiBmb3VuZC5sb2FkZXIgaWYgZm91bmQgaXMgbm90IE5vbmUgZWxzZSBOb25lCgogICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgogICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCiAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCBieSBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKS4KICAgICAgICAiIiIKCl9yZWdpc3RlcihNZXRhUGF0aEZpbmRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAogICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXIsIG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIpCgoKY2xhc3MgUGF0aEVudHJ5RmluZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CgogICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgcGF0aCBlbnRyeSBmaW5kZXJzIHVzZWQgYnkgUGF0aEZpbmRlci4iIiIKCiAgICAjIFdlIGRvbid0IGRlZmluZSBmaW5kX3NwZWMoKSBoZXJlIHNpbmNlIHRoYXQgd291bGQgYnJlYWsKICAgICMgaGFzYXR0ciBjaGVja3Mgd2UgZG8gdG8gc3VwcG9ydCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgoKICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiUmV0dXJuIChsb2FkZXIsIG5hbWVzcGFjZSBwb3J0aW9uKSBmb3IgdGhlIHBhdGggZW50cnkuCgogICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ci4gIFRoZSBuYW1lc3BhY2UgcG9ydGlvbiBpcyBhIHNlcXVlbmNlIG9mCiAgICAgICAgcGF0aCBlbnRyaWVzIGNvbnRyaWJ1dGluZyB0byBwYXJ0IG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UuIFRoZQogICAgICAgIHNlcXVlbmNlIG1heSBiZSBlbXB0eS4gIElmIGxvYWRlciBpcyBub3QgTm9uZSwgdGhlIHBvcnRpb24gd2lsbAogICAgICAgIGJlIGlnbm9yZWQuCgogICAgICAgIFRoZSBwb3J0aW9uIHdpbGwgYmUgZGlzY2FyZGVkIGlmIGFub3RoZXIgcGF0aCBlbnRyeSBmaW5kZXIKICAgICAgICBsb2NhdGVzIHRoZSBtb2R1bGUgYXMgYSBub3JtYWwgbW9kdWxlIG9yIHBhY2thZ2UuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuNCBpbiBmYXZvciBvZgogICAgICAgIGZpbmRlci5maW5kX3NwZWMoKS4gSWYgZmluZF9zcGVjKCkgaXMgcHJvdmlkZWQgdGhhbiBiYWNrd2FyZHMtY29tcGF0aWJsZQogICAgICAgIGZ1bmN0aW9uYWxpdHkgaXMgcHJvdmlkZWQuCiAgICAgICAgIiIiCiAgICAgICAgd2FybmluZ3Mud2FybigiUGF0aEVudHJ5RmluZGVyLmZpbmRfbG9hZGVyKCkgaXMgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gIgogICAgICAgICAgICAgICAgICAgICAgIjMuNCBpbiBmYXZvciBvZiBQYXRoRW50cnlGaW5kZXIuZmluZF9zcGVjKCkgIgogICAgICAgICAgICAgICAgICAgICAgIihhdmFpbGFibGUgc2luY2UgMy40KSIsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCiAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ2ZpbmRfc3BlYycpOgogICAgICAgICAgICByZXR1cm4gTm9uZSwgW10KICAgICAgICBmb3VuZCA9IHNlbGYuZmluZF9zcGVjKGZ1bGxuYW1lKQogICAgICAgIGlmIGZvdW5kIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgZm91bmQuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM6CiAgICAgICAgICAgICAgICBwb3J0aW9ucyA9IFtdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwb3J0aW9ucyA9IGZvdW5kLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCiAgICAgICAgICAgIHJldHVybiBmb3VuZC5sb2FkZXIsIHBvcnRpb25zCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFtdCgogICAgZmluZF9tb2R1bGUgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9maW5kX21vZHVsZV9zaGltCgogICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgogICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCiAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCBieSBQYXRoRmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkuCiAgICAgICAgIiIiCgpfcmVnaXN0ZXIoUGF0aEVudHJ5RmluZGVyLCBtYWNoaW5lcnkuRmlsZUZpbmRlcikKCgpjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIpOgoKICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGxvYWRlcnMgd2hpY2ggY2FuIHJldHVybiBkYXRhIGZyb20gdGhlaXIKICAgIGJhY2stZW5kIHN0b3JhZ2UuCgogICAgVGhpcyBBQkMgcmVwcmVzZW50cyBvbmUgb2YgdGhlIG9wdGlvbmFsIHByb3RvY29scyBzcGVjaWZpZWQgYnkgUEVQIDMwMi4KCiAgICAiIiIKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aCk6CiAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgc2hvdWxkIHJldHVybiB0aGUgYnl0ZXMgZm9yCiAgICAgICAgdGhlIHNwZWNpZmllZCBwYXRoLiAgVGhlIHBhdGggbXVzdCBiZSBhIHN0ci4iIiIKICAgICAgICByYWlzZSBPU0Vycm9yCgoKY2xhc3MgSW5zcGVjdExvYWRlcihMb2FkZXIpOgoKICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGxvYWRlcnMgd2hpY2ggc3VwcG9ydCBpbnNwZWN0aW9uIGFib3V0IHRoZQogICAgbW9kdWxlcyB0aGV5IGNhbiBsb2FkLgoKICAgIFRoaXMgQUJDIHJlcHJlc2VudHMgb25lIG9mIHRoZSBvcHRpb25hbCBwcm90b2NvbHMgc3BlY2lmaWVkIGJ5IFBFUCAzMDIuCgogICAgIiIiCgogICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3aGVuIGltcGxlbWVudGVkIHNob3VsZCByZXR1cm4gd2hldGhlciB0aGUKICAgICAgICBtb2R1bGUgaXMgYSBwYWNrYWdlLiAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiAgUmV0dXJucyBhIGJvb2wuCgogICAgICAgIFJhaXNlcyBJbXBvcnRFcnJvciBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgoKICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiTWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIGNvZGUgb2JqZWN0IGZvciB0aGUgbW9kdWxlLgoKICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgdHlwZXMuQ29kZVR5cGUgaWYgcG9zc2libGUsIGVsc2UKICAgICAgICByZXR1cm5zIE5vbmUgaWYgYSBjb2RlIG9iamVjdCBkb2VzIG5vdCBtYWtlIHNlbnNlCiAgICAgICAgKGUuZy4gYnVpbHQtaW4gbW9kdWxlKS4gUmFpc2VzIEltcG9ydEVycm9yIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlCiAgICAgICAgZm91bmQuCiAgICAgICAgIiIiCiAgICAgICAgc291cmNlID0gc2VsZi5nZXRfc291cmNlKGZ1bGxuYW1lKQogICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZSkKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHNob3VsZCByZXR1cm4gdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUKICAgICAgICBtb2R1bGUuICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgc3RyLgoKICAgICAgICBSYWlzZXMgSW1wb3J0RXJyb3IgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgc291cmNlX3RvX2NvZGUoZGF0YSwgcGF0aD0nPHN0cmluZz4nKToKICAgICAgICAiIiJDb21waWxlICdkYXRhJyBpbnRvIGEgY29kZSBvYmplY3QuCgogICAgICAgIFRoZSAnZGF0YScgYXJndW1lbnQgY2FuIGJlIGFueXRoaW5nIHRoYXQgY29tcGlsZSgpIGNhbiBoYW5kbGUuIFRoZSdwYXRoJwogICAgICAgIGFyZ3VtZW50IHNob3VsZCBiZSB3aGVyZSB0aGUgZGF0YSB3YXMgcmV0cmlldmVkICh3aGVuIGFwcGxpY2FibGUpLiIiIgogICAgICAgIHJldHVybiBjb21waWxlKGRhdGEsIHBhdGgsICdleGVjJywgZG9udF9pbmhlcml0PVRydWUpCgogICAgZXhlY19tb2R1bGUgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9Mb2FkZXJCYXNpY3MuZXhlY19tb2R1bGUKICAgIGxvYWRfbW9kdWxlID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fTG9hZGVyQmFzaWNzLmxvYWRfbW9kdWxlCgpfcmVnaXN0ZXIoSW5zcGVjdExvYWRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLCBtYWNoaW5lcnkuTmFtZXNwYWNlTG9hZGVyKQoKCmNsYXNzIEV4ZWN1dGlvbkxvYWRlcihJbnNwZWN0TG9hZGVyKToKCiAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBsb2FkZXJzIHRoYXQgd2lzaCB0byBzdXBwb3J0IHRoZSBleGVjdXRpb24gb2YKICAgIG1vZHVsZXMgYXMgc2NyaXB0cy4KCiAgICBUaGlzIEFCQyByZXByZXNlbnRzIG9uZSBvZiB0aGUgb3B0aW9uYWwgcHJvdG9jb2xzIHNwZWNpZmllZCBpbiBQRVAgMzAyLgoKICAgICIiIgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCBzaG91bGQgcmV0dXJuIHRoZSB2YWx1ZSB0aGF0IF9fZmlsZV9fIGlzIHRvIGJlCiAgICAgICAgc2V0IHRvLgoKICAgICAgICBSYWlzZXMgSW1wb3J0RXJyb3IgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKCiAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICIiIk1ldGhvZCB0byByZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGZvciBmdWxsbmFtZS4KCiAgICAgICAgU2hvdWxkIHJldHVybiBOb25lIGlmIG5vdCBhcHBsaWNhYmxlIChlLmcuIGJ1aWx0LWluIG1vZHVsZSkuCiAgICAgICAgUmFpc2UgSW1wb3J0RXJyb3IgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQuCiAgICAgICAgIiIiCiAgICAgICAgc291cmNlID0gc2VsZi5nZXRfc291cmNlKGZ1bGxuYW1lKQogICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuc291cmNlX3RvX2NvZGUoc291cmNlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZSwgcGF0aCkKCl9yZWdpc3RlcihFeGVjdXRpb25Mb2FkZXIsIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQoKCmNsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcF9leHRlcm5hbC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKCiAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIHBhcnRpYWxseSBpbXBsZW1lbnRpbmcgdGhlIFJlc291cmNlTG9hZGVyIGFuZAogICAgRXhlY3V0aW9uTG9hZGVyIEFCQ3MuIiIiCgpfcmVnaXN0ZXIoRmlsZUxvYWRlciwgbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCiAgICAgICAgICAgIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKCgpjbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcF9leHRlcm5hbC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgoKICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGxvYWRpbmcgc291cmNlIGNvZGUgKGFuZCBvcHRpb25hbGx5IGFueQogICAgY29ycmVzcG9uZGluZyBieXRlY29kZSkuCgogICAgVG8gc3VwcG9ydCBsb2FkaW5nIGZyb20gc291cmNlIGNvZGUsIHRoZSBhYnN0cmFjdG1ldGhvZHMgaW5oZXJpdGVkIGZyb20KICAgIFJlc291cmNlTG9hZGVyIGFuZCBFeGVjdXRpb25Mb2FkZXIgbmVlZCB0byBiZSBpbXBsZW1lbnRlZC4gVG8gYWxzbyBzdXBwb3J0CiAgICBsb2FkaW5nIGZyb20gYnl0ZWNvZGUsIHRoZSBvcHRpb25hbCBtZXRob2RzIHNwZWNpZmllZCBkaXJlY3RseSBieSB0aGlzIEFCQwogICAgaXMgcmVxdWlyZWQuCgogICAgSW5oZXJpdGVkIGFic3RyYWN0bWV0aG9kcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBBQkM6CgogICAgICAgICogUmVzb3VyY2VMb2FkZXIuZ2V0X2RhdGEKICAgICAgICAqIEV4ZWN1dGlvbkxvYWRlci5nZXRfZmlsZW5hbWUKCiAgICAiIiIKCiAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAiIiJSZXR1cm4gdGhlIChpbnQpIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgcGF0aCAoc3RyKS4iIiIKICAgICAgICBpZiBzZWxmLnBhdGhfc3RhdHMuX19mdW5jX18gaXMgU291cmNlTG9hZGVyLnBhdGhfc3RhdHM6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKICAgICAgICByZXR1cm4gaW50KHNlbGYucGF0aF9zdGF0cyhwYXRoKVsnbXRpbWUnXSkKCiAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKICAgICAgICAiIiJSZXR1cm4gYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc291cmNlIHBvaW50ZWQgdG8gYnkgdGhlIHBhdGggKHN0cikuCiAgICAgICAgUG9zc2libGUga2V5czoKICAgICAgICAtICdtdGltZScgKG1hbmRhdG9yeSkgaXMgdGhlIG51bWVyaWMgdGltZXN0YW1wIG9mIGxhc3Qgc291cmNlCiAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKICAgICAgICAtICdzaXplJyAob3B0aW9uYWwpIGlzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzb3VyY2UgY29kZS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLnBhdGhfbXRpbWUuX19mdW5jX18gaXMgU291cmNlTG9hZGVyLnBhdGhfbXRpbWU6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KCiAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6CiAgICAgICAgIiIiV3JpdGUgdGhlIGJ5dGVzIHRvIHRoZSBwYXRoIChpZiBwb3NzaWJsZSkuCgogICAgICAgIEFjY2VwdHMgYSBzdHIgcGF0aCBhbmQgZGF0YSBhcyBieXRlcy4KCiAgICAgICAgQW55IG5lZWRlZCBpbnRlcm1lZGlhcnkgZGlyZWN0b3JpZXMgYXJlIHRvIGJlIGNyZWF0ZWQuIElmIGZvciBzb21lCiAgICAgICAgcmVhc29uIHRoZSBmaWxlIGNhbm5vdCBiZSB3cml0dGVuIGJlY2F1c2Ugb2YgcGVybWlzc2lvbnMsIGZhaWwKICAgICAgICBzaWxlbnRseS4KICAgICAgICAiIiIKCl9yZWdpc3RlcihTb3VyY2VMb2FkZXIsIG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQpQSwMEFAAAAAAAAyCjVjzxh39wAwAAcAMAABYAAABpbXBvcnRsaWIvbWFjaGluZXJ5LnB5IiIiVGhlIG1hY2hpbmVyeSBvZiBpbXBvcnRsaWI6IGZpbmRlcnMsIGxvYWRlcnMsIGhvb2tzLCBldGMuIiIiCgpmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBNb2R1bGVTcGVjCmZyb20gLl9ib290c3RyYXAgaW1wb3J0IEJ1aWx0aW5JbXBvcnRlcgpmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBGcm96ZW5JbXBvcnRlcgpmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCAoU09VUkNFX1NVRkZJWEVTLCBERUJVR19CWVRFQ09ERV9TVUZGSVhFUywKICAgICAgICAgICAgICAgICAgICAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywKICAgICAgICAgICAgICAgICAgICAgRVhURU5TSU9OX1NVRkZJWEVTKQpmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgUGF0aEZpbmRlcgpmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBGaWxlRmluZGVyCmZyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IFNvdXJjZUZpbGVMb2FkZXIKZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgRXh0ZW5zaW9uRmlsZUxvYWRlcgpmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBOYW1lc3BhY2VMb2FkZXIKCgpkZWYgYWxsX3N1ZmZpeGVzKCk6CiAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBhbGwgcmVjb2duaXplZCBtb2R1bGUgc3VmZml4ZXMgZm9yIHRoaXMgcHJvY2VzcyIiIgogICAgcmV0dXJuIFNPVVJDRV9TVUZGSVhFUyArIEJZVEVDT0RFX1NVRkZJWEVTICsgRVhURU5TSU9OX1NVRkZJWEVTClBLAwQUAAAAAAADIKNW/Zi17kcBAABHAQAAFAAAAGltcG9ydGxpYi9yZWFkZXJzLnB5IiIiCkNvbXBhdGliaWxpdHkgc2hpbSBmb3IgLnJlc291cmNlcy5yZWFkZXJzIGFzIGZvdW5kIG9uIFB5dGhvbiAzLjEwLgoKQ29uc3VtZXJzIHRoYXQgY2FuIHJlbHkgb24gUHl0aG9uIDMuMTEgc2hvdWxkIHVzZSB0aGUgb3RoZXIKbW9kdWxlIGRpcmVjdGx5LgoiIiIKCmZyb20gLnJlc291cmNlcy5yZWFkZXJzIGltcG9ydCAoCiAgICBGaWxlUmVhZGVyLCBaaXBSZWFkZXIsIE11bHRpcGxleGVkUGF0aCwgTmFtZXNwYWNlUmVhZGVyLAopCgpfX2FsbF9fID0gWydGaWxlUmVhZGVyJywgJ1ppcFJlYWRlcicsICdNdWx0aXBsZXhlZFBhdGgnLCAnTmFtZXNwYWNlUmVhZGVyJ10KUEsDBBQAAAAAAAMgo1YDX3e6YgEAAGIBAAATAAAAaW1wb3J0bGliL3NpbXBsZS5weSIiIgpDb21wYXRpYmlsaXR5IHNoaW0gZm9yIC5yZXNvdXJjZXMuc2ltcGxlIGFzIGZvdW5kIG9uIFB5dGhvbiAzLjEwLgoKQ29uc3VtZXJzIHRoYXQgY2FuIHJlbHkgb24gUHl0aG9uIDMuMTEgc2hvdWxkIHVzZSB0aGUgb3RoZXIKbW9kdWxlIGRpcmVjdGx5LgoiIiIKCmZyb20gLnJlc291cmNlcy5zaW1wbGUgaW1wb3J0ICgKICAgIFNpbXBsZVJlYWRlciwgUmVzb3VyY2VIYW5kbGUsIFJlc291cmNlQ29udGFpbmVyLCBUcmF2ZXJzYWJsZVJlYWRlciwKKQoKX19hbGxfXyA9IFsKICAgICdTaW1wbGVSZWFkZXInLCAnUmVzb3VyY2VIYW5kbGUnLCAnUmVzb3VyY2VDb250YWluZXInLCAnVHJhdmVyc2FibGVSZWFkZXInLApdClBLAwQUAAAAAAADIKNWnTGVqd8sAADfLAAAEQAAAGltcG9ydGxpYi91dGlsLnB5IiIiVXRpbGl0eSBjb2RlIGZvciBjb25zdHJ1Y3RpbmcgaW1wb3J0ZXJzLCBldGMuIiIiCmZyb20gLl9hYmMgaW1wb3J0IExvYWRlcgpmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBtb2R1bGVfZnJvbV9zcGVjCmZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9yZXNvbHZlX25hbWUKZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc3BlY19mcm9tX2xvYWRlcgpmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBfZmluZF9zcGVjCmZyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IE1BR0lDX05VTUJFUgpmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBfUkFXX01BR0lDX05VTUJFUgpmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQpmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBkZWNvZGVfc291cmNlCmZyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCmZyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uCgpmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCmltcG9ydCBfaW1wCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IHN5cwppbXBvcnQgdHlwZXMKaW1wb3J0IHdhcm5pbmdzCgoKZGVmIHNvdXJjZV9oYXNoKHNvdXJjZV9ieXRlcyk6CiAgICAiUmV0dXJuIHRoZSBoYXNoIG9mICpzb3VyY2VfYnl0ZXMqIGFzIHVzZWQgaW4gaGFzaC1iYXNlZCBweWMgZmlsZXMuIgogICAgcmV0dXJuIF9pbXAuc291cmNlX2hhc2goX1JBV19NQUdJQ19OVU1CRVIsIHNvdXJjZV9ieXRlcykKCgpkZWYgcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpOgogICAgIiIiUmVzb2x2ZSBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIHRvIGFuIGFic29sdXRlIG9uZS4iIiIKICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJy4nKToKICAgICAgICByZXR1cm4gbmFtZQogICAgZWxpZiBub3QgcGFja2FnZToKICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihmJ25vIHBhY2thZ2Ugc3BlY2lmaWVkIGZvciB7cmVwcihuYW1lKX0gJwogICAgICAgICAgICAgICAgICAgICAgICAgICcocmVxdWlyZWQgZm9yIHJlbGF0aXZlIG1vZHVsZSBuYW1lcyknKQogICAgbGV2ZWwgPSAwCiAgICBmb3IgY2hhcmFjdGVyIGluIG5hbWU6CiAgICAgICAgaWYgY2hhcmFjdGVyICE9ICcuJzoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBsZXZlbCArPSAxCiAgICByZXR1cm4gX3Jlc29sdmVfbmFtZShuYW1lW2xldmVsOl0sIHBhY2thZ2UsIGxldmVsKQoKCmRlZiBfZmluZF9zcGVjX2Zyb21fcGF0aChuYW1lLCBwYXRoPU5vbmUpOgogICAgIiIiUmV0dXJuIHRoZSBzcGVjIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4KCiAgICBGaXJzdCwgc3lzLm1vZHVsZXMgaXMgY2hlY2tlZCB0byBzZWUgaWYgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeSBpbXBvcnRlZC4gSWYKICAgIHNvLCB0aGVuIHN5cy5tb2R1bGVzW25hbWVdLl9fc3BlY19fIGlzIHJldHVybmVkLiBJZiB0aGF0IGhhcHBlbnMgdG8gYmUKICAgIHNldCB0byBOb25lLCB0aGVuIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiBJZiB0aGUgbW9kdWxlIGlzIG5vdCBpbgogICAgc3lzLm1vZHVsZXMsIHRoZW4gc3lzLm1ldGFfcGF0aCBpcyBzZWFyY2hlZCBmb3IgYSBzdWl0YWJsZSBzcGVjIHdpdGggdGhlCiAgICB2YWx1ZSBvZiAncGF0aCcgZ2l2ZW4gdG8gdGhlIGZpbmRlcnMuIE5vbmUgaXMgcmV0dXJuZWQgaWYgbm8gc3BlYyBjb3VsZAogICAgYmUgZm91bmQuCgogICAgRG90dGVkIG5hbWVzIGRvIG5vdCBoYXZlIHRoZWlyIHBhcmVudCBwYWNrYWdlcyBpbXBsaWNpdGx5IGltcG9ydGVkLiBZb3Ugd2lsbAogICAgbW9zdCBsaWtlbHkgbmVlZCB0byBleHBsaWNpdGx5IGltcG9ydCBhbGwgcGFyZW50IHBhY2thZ2VzIGluIHRoZSBwcm9wZXIKICAgIG9yZGVyIGZvciBhIHN1Ym1vZHVsZSB0byBnZXQgdGhlIGNvcnJlY3Qgc3BlYy4KCiAgICAiIiIKICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgogICAgICAgIHJldHVybiBfZmluZF9zcGVjKG5hbWUsIHBhdGgpCiAgICBlbHNlOgogICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCiAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzcGVjID0gbW9kdWxlLl9fc3BlY19fCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpIGZyb20gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKICAgICAgICAgICAgcmV0dXJuIHNwZWMKCgpkZWYgZmluZF9zcGVjKG5hbWUsIHBhY2thZ2U9Tm9uZSk6CiAgICAiIiJSZXR1cm4gdGhlIHNwZWMgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLgoKICAgIEZpcnN0LCBzeXMubW9kdWxlcyBpcyBjaGVja2VkIHRvIHNlZSBpZiB0aGUgbW9kdWxlIHdhcyBhbHJlYWR5IGltcG9ydGVkLiBJZgogICAgc28sIHRoZW4gc3lzLm1vZHVsZXNbbmFtZV0uX19zcGVjX18gaXMgcmV0dXJuZWQuIElmIHRoYXQgaGFwcGVucyB0byBiZQogICAgc2V0IHRvIE5vbmUsIHRoZW4gVmFsdWVFcnJvciBpcyByYWlzZWQuIElmIHRoZSBtb2R1bGUgaXMgbm90IGluCiAgICBzeXMubW9kdWxlcywgdGhlbiBzeXMubWV0YV9wYXRoIGlzIHNlYXJjaGVkIGZvciBhIHN1aXRhYmxlIHNwZWMgd2l0aCB0aGUKICAgIHZhbHVlIG9mICdwYXRoJyBnaXZlbiB0byB0aGUgZmluZGVycy4gTm9uZSBpcyByZXR1cm5lZCBpZiBubyBzcGVjIGNvdWxkCiAgICBiZSBmb3VuZC4KCiAgICBJZiB0aGUgbmFtZSBpcyBmb3Igc3VibW9kdWxlIChjb250YWlucyBhIGRvdCksIHRoZSBwYXJlbnQgbW9kdWxlIGlzCiAgICBhdXRvbWF0aWNhbGx5IGltcG9ydGVkLgoKICAgIFRoZSBuYW1lIGFuZCBwYWNrYWdlIGFyZ3VtZW50cyB3b3JrIHRoZSBzYW1lIGFzIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkuCiAgICBJbiBvdGhlciB3b3JkcywgcmVsYXRpdmUgbW9kdWxlIG5hbWVzICh3aXRoIGxlYWRpbmcgZG90cykgd29yay4KCiAgICAiIiIKICAgIGZ1bGxuYW1lID0gcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpIGlmIG5hbWUuc3RhcnRzd2l0aCgnLicpIGVsc2UgbmFtZQogICAgaWYgZnVsbG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgogICAgICAgIHBhcmVudF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzBdCiAgICAgICAgaWYgcGFyZW50X25hbWU6CiAgICAgICAgICAgIHBhcmVudCA9IF9faW1wb3J0X18ocGFyZW50X25hbWUsIGZyb21saXN0PVsnX19wYXRoX18nXSkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcGFyZW50X3BhdGggPSBwYXJlbnQuX19wYXRoX18KICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKAogICAgICAgICAgICAgICAgICAgIGYiX19wYXRoX18gYXR0cmlidXRlIG5vdCBmb3VuZCBvbiB7cGFyZW50X25hbWUhcn0gIgogICAgICAgICAgICAgICAgICAgIGYid2hpbGUgdHJ5aW5nIHRvIGZpbmQge2Z1bGxuYW1lIXJ9IiwgbmFtZT1mdWxsbmFtZSkgZnJvbSBlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGFyZW50X3BhdGggPSBOb25lCiAgICAgICAgcmV0dXJuIF9maW5kX3NwZWMoZnVsbG5hbWUsIHBhcmVudF9wYXRoKQogICAgZWxzZToKICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNwZWMgPSBtb2R1bGUuX19zcGVjX18KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIG5vdCBzZXQnLmZvcm1hdChuYW1lKSkgZnJvbSBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19zcGVjX18gaXMgTm9uZScuZm9ybWF0KG5hbWUpKQogICAgICAgICAgICByZXR1cm4gc3BlYwoKCkBjb250ZXh0bWFuYWdlcgpkZWYgX21vZHVsZV90b19sb2FkKG5hbWUpOgogICAgaXNfcmVsb2FkID0gbmFtZSBpbiBzeXMubW9kdWxlcwoKICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzLmdldChuYW1lKQogICAgaWYgbm90IGlzX3JlbG9hZDoKICAgICAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBvcGVuKCkgaXMgY2FsbGVkIGFzIHRoZSAnaW8nIG1vZHVsZQogICAgICAgICMgaW1wbGljaXRseSBpbXBvcnRzICdsb2NhbGUnIGFuZCB3b3VsZCBvdGhlcndpc2UgdHJpZ2dlciBhbgogICAgICAgICMgaW5maW5pdGUgbG9vcC4KICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykobmFtZSkKICAgICAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBwdXR0aW5nIHRoZSBtb2R1bGUgaW4gc3lzLm1vZHVsZXMKICAgICAgICAjIChvdGhlcndpc2UgYW4gb3B0aW1pemF0aW9uIHNob3J0Y3V0IGluIGltcG9ydC5jIGJlY29tZXMgd3JvbmcpCiAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBUcnVlCiAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgIHRyeToKICAgICAgICB5aWVsZCBtb2R1bGUKICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgaWYgbm90IGlzX3JlbG9hZDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgIGZpbmFsbHk6CiAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBGYWxzZQoKCmRlZiBzZXRfcGFja2FnZShmeG4pOgogICAgIiIiU2V0IF9fcGFja2FnZV9fIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuCgogICAgVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgoKICAgICIiIgogICAgQGZ1bmN0b29scy53cmFwcyhmeG4pCiAgICBkZWYgc2V0X3BhY2thZ2Vfd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBpbXBvcnQgc3lzdGVtIG5vdyB0YWtlcyBjYXJlIG9mIHRoaXMgYXV0b21hdGljYWxseTsgJwogICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgZGVjb3JhdG9yIGlzIHNsYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMicsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICBtb2R1bGUgPSBmeG4oKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgogICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KICAgICAgICByZXR1cm4gbW9kdWxlCiAgICByZXR1cm4gc2V0X3BhY2thZ2Vfd3JhcHBlcgoKCmRlZiBzZXRfbG9hZGVyKGZ4bik6CiAgICAiIiJTZXQgX19sb2FkZXJfXyBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLgoKICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KCiAgICAiIiIKICAgIEBmdW5jdG9vbHMud3JhcHMoZnhuKQogICAgZGVmIHNldF9sb2FkZXJfd3JhcHBlcihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBpbXBvcnQgc3lzdGVtIG5vdyB0YWtlcyBjYXJlIG9mIHRoaXMgYXV0b21hdGljYWxseTsgJwogICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgZGVjb3JhdG9yIGlzIHNsYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMicsCiAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICBtb2R1bGUgPSBmeG4oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgogICAgICAgIHJldHVybiBtb2R1bGUKICAgIHJldHVybiBzZXRfbG9hZGVyX3dyYXBwZXIKCgpkZWYgbW9kdWxlX2Zvcl9sb2FkZXIoZnhuKToKICAgICIiIkRlY29yYXRvciB0byBoYW5kbGUgc2VsZWN0aW5nIHRoZSBwcm9wZXIgbW9kdWxlIGZvciBsb2FkZXJzLgoKICAgIFRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gaXMgcGFzc2VkIHRoZSBtb2R1bGUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIG1vZHVsZQogICAgbmFtZS4gVGhlIG1vZHVsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uIGlzIGVpdGhlciBmcm9tIHN5cy5tb2R1bGVzIGlmCiAgICBpdCBhbHJlYWR5IGV4aXN0cyBvciBpcyBhIG5ldyBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaXMgbmV3LCB0aGVuIF9fbmFtZV9fCiAgICBpcyBzZXQgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBtZXRob2QsIF9fbG9hZGVyX18gaXMgc2V0IHRvIHNlbGYsIGFuZAogICAgX19wYWNrYWdlX18gaXMgc2V0IGFjY29yZGluZ2x5IChpZiBzZWxmLmlzX3BhY2thZ2UoKSBpcyBkZWZpbmVkKSB3aWxsIGJlIHNldAogICAgYmVmb3JlIGl0IGlzIHBhc3NlZCB0byB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIChpZiBzZWxmLmlzX3BhY2thZ2UoKSBkb2VzCiAgICBub3Qgd29yayBmb3IgdGhlIG1vZHVsZSBpdCB3aWxsIGJlIHNldCBwb3N0LWxvYWQpLgoKICAgIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZSBkZWNvcmF0b3IgY3JlYXRlZCB0aGUgbW9kdWxlIGl0IGlzCiAgICBzdWJzZXF1ZW50bHkgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzLgoKICAgIFRoZSBkZWNvcmF0b3IgYXNzdW1lcyB0aGF0IHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gdGFrZXMgdGhlIG1vZHVsZSBuYW1lIGFzCiAgICB0aGUgc2Vjb25kIGFyZ3VtZW50LgoKICAgICIiIgogICAgd2FybmluZ3Mud2FybignVGhlIGltcG9ydCBzeXN0ZW0gbm93IHRha2VzIGNhcmUgb2YgdGhpcyBhdXRvbWF0aWNhbGx5OyAnCiAgICAgICAgICAgICAgICAgICd0aGlzIGRlY29yYXRvciBpcyBzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMTInLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIEBmdW5jdG9vbHMud3JhcHMoZnhuKQogICAgZGVmIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgd2l0aCBfbW9kdWxlX3RvX2xvYWQoZnVsbG5hbWUpIGFzIG1vZHVsZToKICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBzZWxmLmlzX3BhY2thZ2UoZnVsbG5hbWUpCiAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIGlzX3BhY2thZ2U6CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gZnVsbG5hbWUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzBdCiAgICAgICAgICAgICMgSWYgX19wYWNrYWdlX18gd2FzIG5vdCBzZXQgYWJvdmUsIF9faW1wb3J0X18oKSB3aWxsIGRvIGl0IGxhdGVyLgogICAgICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG1vZHVsZSwgKmFyZ3MsICoqa3dhcmdzKQoKICAgIHJldHVybiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyCgoKY2xhc3MgX0xhenlNb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CgogICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgd2hpY2ggdHJpZ2dlcnMgbG9hZGluZyB1cG9uIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCgogICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oc2VsZiwgYXR0cik6CiAgICAgICAgIiIiVHJpZ2dlciB0aGUgbG9hZCBvZiB0aGUgbW9kdWxlIGFuZCByZXR1cm4gdGhlIGF0dHJpYnV0ZS4iIiIKICAgICAgICAjIEFsbCBtb2R1bGUgbWV0YWRhdGEgbXVzdCBiZSBnYXJuZXJlZCBmcm9tIF9fc3BlY19fIGluIG9yZGVyIHRvIGF2b2lkCiAgICAgICAgIyB1c2luZyBtdXRhdGVkIHZhbHVlcy4KICAgICAgICAjIFN0b3AgdHJpZ2dlcmluZyB0aGlzIG1ldGhvZC4KICAgICAgICBzZWxmLl9fY2xhc3NfXyA9IHR5cGVzLk1vZHVsZVR5cGUKICAgICAgICAjIEdldCB0aGUgb3JpZ2luYWwgbmFtZSB0byBtYWtlIHN1cmUgbm8gb2JqZWN0IHN1YnN0aXR1dGlvbiBvY2N1cnJlZAogICAgICAgICMgaW4gc3lzLm1vZHVsZXMuCiAgICAgICAgb3JpZ2luYWxfbmFtZSA9IHNlbGYuX19zcGVjX18ubmFtZQogICAgICAgICMgRmlndXJlIG91dCBleGFjdGx5IHdoYXQgYXR0cmlidXRlcyB3ZXJlIG11dGF0ZWQgYmV0d2VlbiB0aGUgY3JlYXRpb24KICAgICAgICAjIG9mIHRoZSBtb2R1bGUgYW5kIG5vdy4KICAgICAgICBhdHRyc190aGVuID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGVbJ19fZGljdF9fJ10KICAgICAgICBhdHRyc19ub3cgPSBzZWxmLl9fZGljdF9fCiAgICAgICAgYXR0cnNfdXBkYXRlZCA9IHt9CiAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXR0cnNfbm93Lml0ZW1zKCk6CiAgICAgICAgICAgICMgQ29kZSB0aGF0IHNldCB0aGUgYXR0cmlidXRlIG1heSBoYXZlIGtlcHQgYSByZWZlcmVuY2UgdG8gdGhlCiAgICAgICAgICAgICMgYXNzaWduZWQgb2JqZWN0LCBtYWtpbmcgaWRlbnRpdHkgbW9yZSBpbXBvcnRhbnQgdGhhbiBlcXVhbGl0eS4KICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBhdHRyc190aGVuOgogICAgICAgICAgICAgICAgYXR0cnNfdXBkYXRlZFtrZXldID0gdmFsdWUKICAgICAgICAgICAgZWxpZiBpZChhdHRyc19ub3dba2V5XSkgIT0gaWQoYXR0cnNfdGhlbltrZXldKToKICAgICAgICAgICAgICAgIGF0dHJzX3VwZGF0ZWRba2V5XSA9IHZhbHVlCiAgICAgICAgc2VsZi5fX3NwZWNfXy5sb2FkZXIuZXhlY19tb2R1bGUoc2VsZikKICAgICAgICAjIElmIGV4ZWNfbW9kdWxlKCkgd2FzIHVzZWQgZGlyZWN0bHkgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoZSBtb2R1bGUKICAgICAgICAjIG9iamVjdCB3YXMgcHV0IGludG8gc3lzLm1vZHVsZXMuCiAgICAgICAgaWYgb3JpZ2luYWxfbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgaWYgaWQoc2VsZikgIT0gaWQoc3lzLm1vZHVsZXNbb3JpZ2luYWxfbmFtZV0pOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIm1vZHVsZSBvYmplY3QgZm9yIHtvcmlnaW5hbF9uYW1lIXJ9ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyBkdXJpbmcgYSBsYXp5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2FkIikKICAgICAgICAjIFVwZGF0ZSBhZnRlciBsb2FkaW5nIHNpbmNlIHRoYXQncyB3aGF0IHdvdWxkIGhhcHBlbiBpbiBhbiBlYWdlcgogICAgICAgICMgbG9hZGluZyBzaXR1YXRpb24uCiAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoYXR0cnNfdXBkYXRlZCkKICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBhdHRyKQoKICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBhdHRyKToKICAgICAgICAiIiJUcmlnZ2VyIHRoZSBsb2FkIGFuZCB0aGVuIHBlcmZvcm0gdGhlIGRlbGV0aW9uLiIiIgogICAgICAgICMgVG8gdHJpZ2dlciB0aGUgbG9hZCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhdHRyaWJ1dGUKICAgICAgICAjIGRvZXNuJ3QgZXhpc3QuCiAgICAgICAgc2VsZi5fX2dldGF0dHJpYnV0ZV9fKGF0dHIpCiAgICAgICAgZGVsYXR0cihzZWxmLCBhdHRyKQoKCmNsYXNzIExhenlMb2FkZXIoTG9hZGVyKToKCiAgICAiIiJBIGxvYWRlciB0aGF0IGNyZWF0ZXMgYSBtb2R1bGUgd2hpY2ggZGVmZXJzIGxvYWRpbmcgdW50aWwgYXR0cmlidXRlIGFjY2Vzcy4iIiIKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX19jaGVja19lYWdlcl9sb2FkZXIobG9hZGVyKToKICAgICAgICBpZiBub3QgaGFzYXR0cihsb2FkZXIsICdleGVjX21vZHVsZScpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2xvYWRlciBtdXN0IGRlZmluZSBleGVjX21vZHVsZSgpJykKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmYWN0b3J5KGNscywgbG9hZGVyKToKICAgICAgICAiIiJDb25zdHJ1Y3QgYSBjYWxsYWJsZSB3aGljaCByZXR1cm5zIHRoZSBlYWdlciBsb2FkZXIgbWFkZSBsYXp5LiIiIgogICAgICAgIGNscy5fX2NoZWNrX2VhZ2VyX2xvYWRlcihsb2FkZXIpCiAgICAgICAgcmV0dXJuIGxhbWJkYSAqYXJncywgKiprd2FyZ3M6IGNscyhsb2FkZXIoKmFyZ3MsICoqa3dhcmdzKSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbG9hZGVyKToKICAgICAgICBzZWxmLl9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcikKICAgICAgICBzZWxmLmxvYWRlciA9IGxvYWRlcgoKICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgogICAgICAgIHJldHVybiBzZWxmLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCgogICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgIiIiTWFrZSB0aGUgbW9kdWxlIGxvYWQgbGF6aWx5LiIiIgogICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXIgPSBzZWxmLmxvYWRlcgogICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZi5sb2FkZXIKICAgICAgICAjIERvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZGVlcC1jb3B5aW5nIGFzIHRyeWluZyB0byBzZXQgYW4gYXR0cmlidXRlCiAgICAgICAgIyBvbiBhbiBvYmplY3Qgd291bGQgaGF2ZSB0cmlnZ2VyZWQgdGhlIGxvYWQsCiAgICAgICAgIyBlLmcuIGBgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IE5vbmVgYCB3b3VsZCB0cmlnZ2VyIGEgbG9hZCBmcm9tCiAgICAgICAgIyB0cnlpbmcgdG8gYWNjZXNzIG1vZHVsZS5fX3NwZWNfXy4KICAgICAgICBsb2FkZXJfc3RhdGUgPSB7fQogICAgICAgIGxvYWRlcl9zdGF0ZVsnX19kaWN0X18nXSA9IG1vZHVsZS5fX2RpY3RfXy5jb3B5KCkKICAgICAgICBsb2FkZXJfc3RhdGVbJ19fY2xhc3NfXyddID0gbW9kdWxlLl9fY2xhc3NfXwogICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBsb2FkZXJfc3RhdGUKICAgICAgICBtb2R1bGUuX19jbGFzc19fID0gX0xhenlNb2R1bGUKUEsDBBQAAAAAAAMgo1ZvcaKE+gEAAPoBAAAfAAAAaW1wb3J0bGliL3Jlc291cmNlcy9fX2luaXRfXy5weSIiIlJlYWQgcmVzb3VyY2VzIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlLiIiIgoKZnJvbSAuX2NvbW1vbiBpbXBvcnQgKAogICAgYXNfZmlsZSwKICAgIGZpbGVzLAogICAgUGFja2FnZSwKKQoKZnJvbSAuX2xlZ2FjeSBpbXBvcnQgKAogICAgY29udGVudHMsCiAgICBvcGVuX2JpbmFyeSwKICAgIHJlYWRfYmluYXJ5LAogICAgb3Blbl90ZXh0LAogICAgcmVhZF90ZXh0LAogICAgaXNfcmVzb3VyY2UsCiAgICBwYXRoLAogICAgUmVzb3VyY2UsCikKCmZyb20gLmFiYyBpbXBvcnQgUmVzb3VyY2VSZWFkZXIKCgpfX2FsbF9fID0gWwogICAgJ1BhY2thZ2UnLAogICAgJ1Jlc291cmNlJywKICAgICdSZXNvdXJjZVJlYWRlcicsCiAgICAnYXNfZmlsZScsCiAgICAnY29udGVudHMnLAogICAgJ2ZpbGVzJywKICAgICdpc19yZXNvdXJjZScsCiAgICAnb3Blbl9iaW5hcnknLAogICAgJ29wZW5fdGV4dCcsCiAgICAncGF0aCcsCiAgICAncmVhZF9iaW5hcnknLAogICAgJ3JlYWRfdGV4dCcsCl0KUEsDBBQAAAAAAAMgo1ae2NwnmBEAAJgRAAAgAAAAaW1wb3J0bGliL3Jlc291cmNlcy9fYWRhcHRlcnMucHlmcm9tIGNvbnRleHRsaWIgaW1wb3J0IHN1cHByZXNzCmZyb20gaW8gaW1wb3J0IFRleHRJT1dyYXBwZXIKCmZyb20gLiBpbXBvcnQgYWJjCgoKY2xhc3MgU3BlY0xvYWRlckFkYXB0ZXI6CiAgICAiIiIKICAgIEFkYXB0IGEgcGFja2FnZSBzcGVjIHRvIGFkYXB0IHRoZSB1bmRlcmx5aW5nIGxvYWRlci4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjLCBhZGFwdGVyPWxhbWJkYSBzcGVjOiBzcGVjLmxvYWRlcik6CiAgICAgICAgc2VsZi5zcGVjID0gc3BlYwogICAgICAgIHNlbGYubG9hZGVyID0gYWRhcHRlcihzcGVjKQoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnNwZWMsIG5hbWUpCgoKY2xhc3MgVHJhdmVyc2FibGVSZXNvdXJjZXNMb2FkZXI6CiAgICAiIiIKICAgIEFkYXB0IGEgbG9hZGVyIHRvIHByb3ZpZGUgVHJhdmVyc2FibGVSZXNvdXJjZXMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYyk6CiAgICAgICAgc2VsZi5zcGVjID0gc3BlYwoKICAgIGRlZiBnZXRfcmVzb3VyY2VfcmVhZGVyKHNlbGYsIG5hbWUpOgogICAgICAgIHJldHVybiBDb21wYXRpYmlsaXR5RmlsZXMoc2VsZi5zcGVjKS5fbmF0aXZlKCkKCgpkZWYgX2lvX3dyYXBwZXIoZmlsZSwgbW9kZT0ncicsICphcmdzLCAqKmt3YXJncyk6CiAgICBpZiBtb2RlID09ICdyJzoKICAgICAgICByZXR1cm4gVGV4dElPV3JhcHBlcihmaWxlLCAqYXJncywgKiprd2FyZ3MpCiAgICBlbGlmIG1vZGUgPT0gJ3JiJzoKICAgICAgICByZXR1cm4gZmlsZQogICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAiSW52YWxpZCBtb2RlIHZhbHVlICd7fScsIG9ubHkgJ3InIGFuZCAncmInIGFyZSBzdXBwb3J0ZWQiLmZvcm1hdChtb2RlKQogICAgKQoKCmNsYXNzIENvbXBhdGliaWxpdHlGaWxlczoKICAgICIiIgogICAgQWRhcHRlciBmb3IgYW4gZXhpc3Rpbmcgb3Igbm9uLWV4aXN0ZW50IHJlc291cmNlIHJlYWRlcgogICAgdG8gcHJvdmlkZSBhIGNvbXBhdGliaWxpdHkgLmZpbGVzKCkuCiAgICAiIiIKCiAgICBjbGFzcyBTcGVjUGF0aChhYmMuVHJhdmVyc2FibGUpOgogICAgICAgICIiIgogICAgICAgIFBhdGggdGllZCB0byBhIG1vZHVsZSBzcGVjLgogICAgICAgIENhbiBiZSByZWFkIGFuZCBleHBvc2VzIHRoZSByZXNvdXJjZSByZWFkZXIgY2hpbGRyZW4uCiAgICAgICAgIiIiCgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjLCByZWFkZXIpOgogICAgICAgICAgICBzZWxmLl9zcGVjID0gc3BlYwogICAgICAgICAgICBzZWxmLl9yZWFkZXIgPSByZWFkZXIKCiAgICAgICAgZGVmIGl0ZXJkaXIoc2VsZik6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkZXI6CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlcigoKSkKICAgICAgICAgICAgcmV0dXJuIGl0ZXIoCiAgICAgICAgICAgICAgICBDb21wYXRpYmlsaXR5RmlsZXMuQ2hpbGRQYXRoKHNlbGYuX3JlYWRlciwgcGF0aCkKICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIHNlbGYuX3JlYWRlci5jb250ZW50cygpCiAgICAgICAgICAgICkKCiAgICAgICAgZGVmIGlzX2ZpbGUoc2VsZik6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICAgICBpc19kaXIgPSBpc19maWxlCgogICAgICAgIGRlZiBqb2lucGF0aChzZWxmLCBvdGhlcik6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkZXI6CiAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGF0aWJpbGl0eUZpbGVzLk9ycGhhblBhdGgob3RoZXIpCiAgICAgICAgICAgIHJldHVybiBDb21wYXRpYmlsaXR5RmlsZXMuQ2hpbGRQYXRoKHNlbGYuX3JlYWRlciwgb3RoZXIpCgogICAgICAgIEBwcm9wZXJ0eQogICAgICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fc3BlYy5uYW1lCgogICAgICAgIGRlZiBvcGVuKHNlbGYsIG1vZGU9J3InLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICByZXR1cm4gX2lvX3dyYXBwZXIoc2VsZi5fcmVhZGVyLm9wZW5fcmVzb3VyY2UoTm9uZSksIG1vZGUsICphcmdzLCAqKmt3YXJncykKCiAgICBjbGFzcyBDaGlsZFBhdGgoYWJjLlRyYXZlcnNhYmxlKToKICAgICAgICAiIiIKICAgICAgICBQYXRoIHRpZWQgdG8gYSByZXNvdXJjZSByZWFkZXIgY2hpbGQuCiAgICAgICAgQ2FuIGJlIHJlYWQgYnV0IGRvZXNuJ3QgZXhwb3NlIGFueSBtZWFuaW5nZnVsIGNoaWxkcmVuLgogICAgICAgICIiIgoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGVyLCBuYW1lKToKICAgICAgICAgICAgc2VsZi5fcmVhZGVyID0gcmVhZGVyCiAgICAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCgogICAgICAgIGRlZiBpdGVyZGlyKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gaXRlcigoKSkKCiAgICAgICAgZGVmIGlzX2ZpbGUoc2VsZik6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkZXIuaXNfcmVzb3VyY2Uoc2VsZi5uYW1lKQoKICAgICAgICBkZWYgaXNfZGlyKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gbm90IHNlbGYuaXNfZmlsZSgpCgogICAgICAgIGRlZiBqb2lucGF0aChzZWxmLCBvdGhlcik6CiAgICAgICAgICAgIHJldHVybiBDb21wYXRpYmlsaXR5RmlsZXMuT3JwaGFuUGF0aChzZWxmLm5hbWUsIG90aGVyKQoKICAgICAgICBAcHJvcGVydHkKICAgICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKCiAgICAgICAgZGVmIG9wZW4oc2VsZiwgbW9kZT0ncicsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgIHJldHVybiBfaW9fd3JhcHBlcigKICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRlci5vcGVuX3Jlc291cmNlKHNlbGYubmFtZSksIG1vZGUsICphcmdzLCAqKmt3YXJncwogICAgICAgICAgICApCgogICAgY2xhc3MgT3JwaGFuUGF0aChhYmMuVHJhdmVyc2FibGUpOgogICAgICAgICIiIgogICAgICAgIE9ycGhhbiBwYXRoLCBub3QgdGllZCB0byBhIG1vZHVsZSBzcGVjIG9yIHJlc291cmNlIHJlYWRlci4KICAgICAgICBDYW4ndCBiZSByZWFkIGFuZCBkb2Vzbid0IGV4cG9zZSBhbnkgbWVhbmluZ2Z1bCBjaGlsZHJlbi4KICAgICAgICAiIiIKCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICpwYXRoX3BhcnRzKToKICAgICAgICAgICAgaWYgbGVuKHBhdGhfcGFydHMpIDwgMToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05lZWQgYXQgbGVhc3Qgb25lIHBhdGggcGFydCB0byBjb25zdHJ1Y3QgYSBwYXRoJykKICAgICAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGhfcGFydHMKCiAgICAgICAgZGVmIGl0ZXJkaXIoc2VsZik6CiAgICAgICAgICAgIHJldHVybiBpdGVyKCgpKQoKICAgICAgICBkZWYgaXNfZmlsZShzZWxmKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIGlzX2RpciA9IGlzX2ZpbGUKCiAgICAgICAgZGVmIGpvaW5wYXRoKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIENvbXBhdGliaWxpdHlGaWxlcy5PcnBoYW5QYXRoKCpzZWxmLl9wYXRoLCBvdGhlcikKCiAgICAgICAgQHByb3BlcnR5CiAgICAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoWy0xXQoKICAgICAgICBkZWYgb3BlbihzZWxmLCBtb2RlPSdyJywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoIkNhbid0IG9wZW4gb3JwaGFuIHBhdGgiKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjKToKICAgICAgICBzZWxmLnNwZWMgPSBzcGVjCgogICAgQHByb3BlcnR5CiAgICBkZWYgX3JlYWRlcihzZWxmKToKICAgICAgICB3aXRoIHN1cHByZXNzKEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3BlYy5sb2FkZXIuZ2V0X3Jlc291cmNlX3JlYWRlcihzZWxmLnNwZWMubmFtZSkKCiAgICBkZWYgX25hdGl2ZShzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIG5hdGl2ZSByZWFkZXIgaWYgaXQgc3VwcG9ydHMgZmlsZXMoKS4KICAgICAgICAiIiIKICAgICAgICByZWFkZXIgPSBzZWxmLl9yZWFkZXIKICAgICAgICByZXR1cm4gcmVhZGVyIGlmIGhhc2F0dHIocmVhZGVyLCAnZmlsZXMnKSBlbHNlIHNlbGYKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CiAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5fcmVhZGVyLCBhdHRyKQoKICAgIGRlZiBmaWxlcyhzZWxmKToKICAgICAgICByZXR1cm4gQ29tcGF0aWJpbGl0eUZpbGVzLlNwZWNQYXRoKHNlbGYuc3BlYywgc2VsZi5fcmVhZGVyKQoKCmRlZiB3cmFwX3NwZWMocGFja2FnZSk6CiAgICAiIiIKICAgIENvbnN0cnVjdCBhIHBhY2thZ2Ugc3BlYyB3aXRoIHRyYXZlcnNhYmxlIGNvbXBhdGliaWxpdHkKICAgIG9uIHRoZSBzcGVjL2xvYWRlci9yZWFkZXIuCiAgICAiIiIKICAgIHJldHVybiBTcGVjTG9hZGVyQWRhcHRlcihwYWNrYWdlLl9fc3BlY19fLCBUcmF2ZXJzYWJsZVJlc291cmNlc0xvYWRlcikKUEsDBBQAAAAAAAMgo1YrIHHbSwsAAEsLAAAeAAAAaW1wb3J0bGliL3Jlc291cmNlcy9fY29tbW9uLnB5aW1wb3J0IG9zCmltcG9ydCBwYXRobGliCmltcG9ydCB0ZW1wZmlsZQppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCBjb250ZXh0bGliCmltcG9ydCB0eXBlcwppbXBvcnQgaW1wb3J0bGliCgpmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24sIE9wdGlvbmFsCmZyb20gLmFiYyBpbXBvcnQgUmVzb3VyY2VSZWFkZXIsIFRyYXZlcnNhYmxlCgpmcm9tIC5fYWRhcHRlcnMgaW1wb3J0IHdyYXBfc3BlYwoKUGFja2FnZSA9IFVuaW9uW3R5cGVzLk1vZHVsZVR5cGUsIHN0cl0KCgpkZWYgZmlsZXMocGFja2FnZSk6CiAgICAjIHR5cGU6IChQYWNrYWdlKSAtPiBUcmF2ZXJzYWJsZQogICAgIiIiCiAgICBHZXQgYSBUcmF2ZXJzYWJsZSByZXNvdXJjZSBmcm9tIGEgcGFja2FnZQogICAgIiIiCiAgICByZXR1cm4gZnJvbV9wYWNrYWdlKGdldF9wYWNrYWdlKHBhY2thZ2UpKQoKCmRlZiBnZXRfcmVzb3VyY2VfcmVhZGVyKHBhY2thZ2UpOgogICAgIyB0eXBlOiAodHlwZXMuTW9kdWxlVHlwZSkgLT4gT3B0aW9uYWxbUmVzb3VyY2VSZWFkZXJdCiAgICAiIiIKICAgIFJldHVybiB0aGUgcGFja2FnZSdzIGxvYWRlciBpZiBpdCdzIGEgUmVzb3VyY2VSZWFkZXIuCiAgICAiIiIKICAgICMgV2UgY2FuJ3QgdXNlCiAgICAjIGEgaXNzdWJjbGFzcygpIGNoZWNrIGhlcmUgYmVjYXVzZSBhcHBhcmVudGx5IGFiYy4ncyBfX3N1YmNsYXNzY2hlY2tfXygpCiAgICAjIGhvb2sgd2FudHMgdG8gY3JlYXRlIGEgd2VhayByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCwgYnV0CiAgICAjIHppcGltcG9ydC56aXBpbXBvcnRlciBkb2VzIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcywgcmVzdWx0aW5nIGluIGEKICAgICMgVHlwZUVycm9yLiAgVGhhdCBzZWVtcyB0ZXJyaWJsZS4KICAgIHNwZWMgPSBwYWNrYWdlLl9fc3BlY19fCiAgICByZWFkZXIgPSBnZXRhdHRyKHNwZWMubG9hZGVyLCAnZ2V0X3Jlc291cmNlX3JlYWRlcicsIE5vbmUpICAjIHR5cGU6IGlnbm9yZQogICAgaWYgcmVhZGVyIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIE5vbmUKICAgIHJldHVybiByZWFkZXIoc3BlYy5uYW1lKSAgIyB0eXBlOiBpZ25vcmUKCgpkZWYgcmVzb2x2ZShjYW5kKToKICAgICMgdHlwZTogKFBhY2thZ2UpIC0+IHR5cGVzLk1vZHVsZVR5cGUKICAgIHJldHVybiBjYW5kIGlmIGlzaW5zdGFuY2UoY2FuZCwgdHlwZXMuTW9kdWxlVHlwZSkgZWxzZSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShjYW5kKQoKCmRlZiBnZXRfcGFja2FnZShwYWNrYWdlKToKICAgICMgdHlwZTogKFBhY2thZ2UpIC0+IHR5cGVzLk1vZHVsZVR5cGUKICAgICIiIlRha2UgYSBwYWNrYWdlIG5hbWUgb3IgbW9kdWxlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUuCgogICAgUmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSByZXNvbHZlZCBtb2R1bGUgaXMgbm90IGEgcGFja2FnZS4KICAgICIiIgogICAgcmVzb2x2ZWQgPSByZXNvbHZlKHBhY2thZ2UpCiAgICBpZiB3cmFwX3NwZWMocmVzb2x2ZWQpLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIE5vbmU6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYne3BhY2thZ2Uhcn0gaXMgbm90IGEgcGFja2FnZScpCiAgICByZXR1cm4gcmVzb2x2ZWQKCgpkZWYgZnJvbV9wYWNrYWdlKHBhY2thZ2UpOgogICAgIiIiCiAgICBSZXR1cm4gYSBUcmF2ZXJzYWJsZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBwYWNrYWdlLgoKICAgICIiIgogICAgc3BlYyA9IHdyYXBfc3BlYyhwYWNrYWdlKQogICAgcmVhZGVyID0gc3BlYy5sb2FkZXIuZ2V0X3Jlc291cmNlX3JlYWRlcihzcGVjLm5hbWUpCiAgICByZXR1cm4gcmVhZGVyLmZpbGVzKCkKCgpAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgpkZWYgX3RlbXBmaWxlKHJlYWRlciwgc3VmZml4PScnLAogICAgICAgICAgICAgICMgZ2gtOTMzNTM6IEtlZXAgYSByZWZlcmVuY2UgdG8gY2FsbCBvcy5yZW1vdmUoKSBpbiBsYXRlIFB5dGhvbgogICAgICAgICAgICAgICMgZmluYWxpemF0aW9uLgogICAgICAgICAgICAgICosIF9vc19yZW1vdmU9b3MucmVtb3ZlKToKICAgICMgTm90IHVzaW5nIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSBhcyBpdCBsZWFkcyB0byBkZWVwZXIgJ3RyeScKICAgICMgYmxvY2tzIGR1ZSB0byB0aGUgbmVlZCB0byBjbG9zZSB0aGUgdGVtcG9yYXJ5IGZpbGUgdG8gd29yayBvbiBXaW5kb3dzCiAgICAjIHByb3Blcmx5LgogICAgZmQsIHJhd19wYXRoID0gdGVtcGZpbGUubWtzdGVtcChzdWZmaXg9c3VmZml4KQogICAgdHJ5OgogICAgICAgIHRyeToKICAgICAgICAgICAgb3Mud3JpdGUoZmQsIHJlYWRlcigpKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgIGRlbCByZWFkZXIKICAgICAgICB5aWVsZCBwYXRobGliLlBhdGgocmF3X3BhdGgpCiAgICBmaW5hbGx5OgogICAgICAgIHRyeToKICAgICAgICAgICAgX29zX3JlbW92ZShyYXdfcGF0aCkKICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCgpAZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoCmRlZiBhc19maWxlKHBhdGgpOgogICAgIiIiCiAgICBHaXZlbiBhIFRyYXZlcnNhYmxlIG9iamVjdCwgcmV0dXJuIHRoYXQgb2JqZWN0IGFzIGEKICAgIHBhdGggb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtIGluIGEgY29udGV4dCBtYW5hZ2VyLgogICAgIiIiCiAgICByZXR1cm4gX3RlbXBmaWxlKHBhdGgucmVhZF9ieXRlcywgc3VmZml4PXBhdGgubmFtZSkKCgpAYXNfZmlsZS5yZWdpc3RlcihwYXRobGliLlBhdGgpCkBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCmRlZiBfKHBhdGgpOgogICAgIiIiCiAgICBEZWdlbmVyYXRlIGJlaGF2aW9yIGZvciBwYXRobGliLlBhdGggb2JqZWN0cy4KICAgICIiIgogICAgeWllbGQgcGF0aApQSwMEFAAAAAAAAyCjVsjwaBB0AwAAdAMAACEAAABpbXBvcnRsaWIvcmVzb3VyY2VzL19pdGVydG9vbHMucHlmcm9tIGl0ZXJ0b29scyBpbXBvcnQgZmlsdGVyZmFsc2UKCmZyb20gdHlwaW5nIGltcG9ydCAoCiAgICBDYWxsYWJsZSwKICAgIEl0ZXJhYmxlLAogICAgSXRlcmF0b3IsCiAgICBPcHRpb25hbCwKICAgIFNldCwKICAgIFR5cGVWYXIsCiAgICBVbmlvbiwKKQoKIyBUeXBlIGFuZCB0eXBlIHZhcmlhYmxlIGRlZmluaXRpb25zCl9UID0gVHlwZVZhcignX1QnKQpfVSA9IFR5cGVWYXIoJ19VJykKCgpkZWYgdW5pcXVlX2V2ZXJzZWVuKAogICAgaXRlcmFibGU6IEl0ZXJhYmxlW19UXSwga2V5OiBPcHRpb25hbFtDYWxsYWJsZVtbX1RdLCBfVV1dID0gTm9uZQopIC0+IEl0ZXJhdG9yW19UXToKICAgICJMaXN0IHVuaXF1ZSBlbGVtZW50cywgcHJlc2VydmluZyBvcmRlci4gUmVtZW1iZXIgYWxsIGVsZW1lbnRzIGV2ZXIgc2Vlbi4iCiAgICAjIHVuaXF1ZV9ldmVyc2VlbignQUFBQUJCQkNDREFBQkJCJykgLS0+IEEgQiBDIEQKICAgICMgdW5pcXVlX2V2ZXJzZWVuKCdBQkJDY0FEJywgc3RyLmxvd2VyKSAtLT4gQSBCIEMgRAogICAgc2VlbjogU2V0W1VuaW9uW19ULCBfVV1dID0gc2V0KCkKICAgIHNlZW5fYWRkID0gc2Vlbi5hZGQKICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgIGZvciBlbGVtZW50IGluIGZpbHRlcmZhbHNlKHNlZW4uX19jb250YWluc19fLCBpdGVyYWJsZSk6CiAgICAgICAgICAgIHNlZW5fYWRkKGVsZW1lbnQpCiAgICAgICAgICAgIHlpZWxkIGVsZW1lbnQKICAgIGVsc2U6CiAgICAgICAgZm9yIGVsZW1lbnQgaW4gaXRlcmFibGU6CiAgICAgICAgICAgIGsgPSBrZXkoZWxlbWVudCkKICAgICAgICAgICAgaWYgayBub3QgaW4gc2VlbjoKICAgICAgICAgICAgICAgIHNlZW5fYWRkKGspCiAgICAgICAgICAgICAgICB5aWVsZCBlbGVtZW50ClBLAwQUAAAAAAADIKNWny4xmKYNAACmDQAAHgAAAGltcG9ydGxpYi9yZXNvdXJjZXMvX2xlZ2FjeS5weWltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IG9zCmltcG9ydCBwYXRobGliCmltcG9ydCB0eXBlcwppbXBvcnQgd2FybmluZ3MKCmZyb20gdHlwaW5nIGltcG9ydCBVbmlvbiwgSXRlcmFibGUsIENvbnRleHRNYW5hZ2VyLCBCaW5hcnlJTywgVGV4dElPLCBBbnkKCmZyb20gLiBpbXBvcnQgX2NvbW1vbgoKUGFja2FnZSA9IFVuaW9uW3R5cGVzLk1vZHVsZVR5cGUsIHN0cl0KUmVzb3VyY2UgPSBzdHIKCgpkZWYgZGVwcmVjYXRlZChmdW5jKToKICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgZiJ7ZnVuYy5fX25hbWVfX30gaXMgZGVwcmVjYXRlZC4gVXNlIGZpbGVzKCkgaW5zdGVhZC4gIgogICAgICAgICAgICAiUmVmZXIgdG8gaHR0cHM6Ly9pbXBvcnRsaWItcmVzb3VyY2VzLnJlYWR0aGVkb2NzLmlvIgogICAgICAgICAgICAiL2VuL2xhdGVzdC91c2luZy5odG1sI21pZ3JhdGluZy1mcm9tLWxlZ2FjeSBmb3IgbWlncmF0aW9uIGFkdmljZS4iLAogICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgIHN0YWNrbGV2ZWw9MiwKICAgICAgICApCiAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQoKICAgIHJldHVybiB3cmFwcGVyCgoKZGVmIG5vcm1hbGl6ZV9wYXRoKHBhdGgpOgogICAgIyB0eXBlOiAoQW55KSAtPiBzdHIKICAgICIiIk5vcm1hbGl6ZSBhIHBhdGggYnkgZW5zdXJpbmcgaXQgaXMgYSBzdHJpbmcuCgogICAgSWYgdGhlIHJlc3VsdGluZyBzdHJpbmcgY29udGFpbnMgcGF0aCBzZXBhcmF0b3JzLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgogICAgIiIiCiAgICBzdHJfcGF0aCA9IHN0cihwYXRoKQogICAgcGFyZW50LCBmaWxlX25hbWUgPSBvcy5wYXRoLnNwbGl0KHN0cl9wYXRoKQogICAgaWYgcGFyZW50OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZid7cGF0aCFyfSBtdXN0IGJlIG9ubHkgYSBmaWxlIG5hbWUnKQogICAgcmV0dXJuIGZpbGVfbmFtZQoKCkBkZXByZWNhdGVkCmRlZiBvcGVuX2JpbmFyeShwYWNrYWdlOiBQYWNrYWdlLCByZXNvdXJjZTogUmVzb3VyY2UpIC0+IEJpbmFyeUlPOgogICAgIiIiUmV0dXJuIGEgZmlsZS1saWtlIG9iamVjdCBvcGVuZWQgZm9yIGJpbmFyeSByZWFkaW5nIG9mIHRoZSByZXNvdXJjZS4iIiIKICAgIHJldHVybiAoX2NvbW1vbi5maWxlcyhwYWNrYWdlKSAvIG5vcm1hbGl6ZV9wYXRoKHJlc291cmNlKSkub3BlbigncmInKQoKCkBkZXByZWNhdGVkCmRlZiByZWFkX2JpbmFyeShwYWNrYWdlOiBQYWNrYWdlLCByZXNvdXJjZTogUmVzb3VyY2UpIC0+IGJ5dGVzOgogICAgIiIiUmV0dXJuIHRoZSBiaW5hcnkgY29udGVudHMgb2YgdGhlIHJlc291cmNlLiIiIgogICAgcmV0dXJuIChfY29tbW9uLmZpbGVzKHBhY2thZ2UpIC8gbm9ybWFsaXplX3BhdGgocmVzb3VyY2UpKS5yZWFkX2J5dGVzKCkKCgpAZGVwcmVjYXRlZApkZWYgb3Blbl90ZXh0KAogICAgcGFja2FnZTogUGFja2FnZSwKICAgIHJlc291cmNlOiBSZXNvdXJjZSwKICAgIGVuY29kaW5nOiBzdHIgPSAndXRmLTgnLAogICAgZXJyb3JzOiBzdHIgPSAnc3RyaWN0JywKKSAtPiBUZXh0SU86CiAgICAiIiJSZXR1cm4gYSBmaWxlLWxpa2Ugb2JqZWN0IG9wZW5lZCBmb3IgdGV4dCByZWFkaW5nIG9mIHRoZSByZXNvdXJjZS4iIiIKICAgIHJldHVybiAoX2NvbW1vbi5maWxlcyhwYWNrYWdlKSAvIG5vcm1hbGl6ZV9wYXRoKHJlc291cmNlKSkub3BlbigKICAgICAgICAncicsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzCiAgICApCgoKQGRlcHJlY2F0ZWQKZGVmIHJlYWRfdGV4dCgKICAgIHBhY2thZ2U6IFBhY2thZ2UsCiAgICByZXNvdXJjZTogUmVzb3VyY2UsCiAgICBlbmNvZGluZzogc3RyID0gJ3V0Zi04JywKICAgIGVycm9yczogc3RyID0gJ3N0cmljdCcsCikgLT4gc3RyOgogICAgIiIiUmV0dXJuIHRoZSBkZWNvZGVkIHN0cmluZyBvZiB0aGUgcmVzb3VyY2UuCgogICAgVGhlIGRlY29kaW5nLXJlbGF0ZWQgYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRob3NlIG9mCiAgICBieXRlcy5kZWNvZGUoKS4KICAgICIiIgogICAgd2l0aCBvcGVuX3RleHQocGFja2FnZSwgcmVzb3VyY2UsIGVuY29kaW5nLCBlcnJvcnMpIGFzIGZwOgogICAgICAgIHJldHVybiBmcC5yZWFkKCkKCgpAZGVwcmVjYXRlZApkZWYgY29udGVudHMocGFja2FnZTogUGFja2FnZSkgLT4gSXRlcmFibGVbc3RyXToKICAgICIiIlJldHVybiBhbiBpdGVyYWJsZSBvZiBlbnRyaWVzIGluIGBwYWNrYWdlYC4KCiAgICBOb3RlIHRoYXQgbm90IGFsbCBlbnRyaWVzIGFyZSByZXNvdXJjZXMuICBTcGVjaWZpY2FsbHksIGRpcmVjdG9yaWVzIGFyZQogICAgbm90IGNvbnNpZGVyZWQgcmVzb3VyY2VzLiAgVXNlIGBpc19yZXNvdXJjZSgpYCBvbiBlYWNoIGVudHJ5IHJldHVybmVkIGhlcmUKICAgIHRvIGNoZWNrIGlmIGl0IGlzIGEgcmVzb3VyY2Ugb3Igbm90LgogICAgIiIiCiAgICByZXR1cm4gW3BhdGgubmFtZSBmb3IgcGF0aCBpbiBfY29tbW9uLmZpbGVzKHBhY2thZ2UpLml0ZXJkaXIoKV0KCgpAZGVwcmVjYXRlZApkZWYgaXNfcmVzb3VyY2UocGFja2FnZTogUGFja2FnZSwgbmFtZTogc3RyKSAtPiBib29sOgogICAgIiIiVHJ1ZSBpZiBgbmFtZWAgaXMgYSByZXNvdXJjZSBpbnNpZGUgYHBhY2thZ2VgLgoKICAgIERpcmVjdG9yaWVzIGFyZSAqbm90KiByZXNvdXJjZXMuCiAgICAiIiIKICAgIHJlc291cmNlID0gbm9ybWFsaXplX3BhdGgobmFtZSkKICAgIHJldHVybiBhbnkoCiAgICAgICAgdHJhdmVyc2FibGUubmFtZSA9PSByZXNvdXJjZSBhbmQgdHJhdmVyc2FibGUuaXNfZmlsZSgpCiAgICAgICAgZm9yIHRyYXZlcnNhYmxlIGluIF9jb21tb24uZmlsZXMocGFja2FnZSkuaXRlcmRpcigpCiAgICApCgoKQGRlcHJlY2F0ZWQKZGVmIHBhdGgoCiAgICBwYWNrYWdlOiBQYWNrYWdlLAogICAgcmVzb3VyY2U6IFJlc291cmNlLAopIC0+IENvbnRleHRNYW5hZ2VyW3BhdGhsaWIuUGF0aF06CiAgICAiIiJBIGNvbnRleHQgbWFuYWdlciBwcm92aWRpbmcgYSBmaWxlIHBhdGggb2JqZWN0IHRvIHRoZSByZXNvdXJjZS4KCiAgICBJZiB0aGUgcmVzb3VyY2UgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBvbiBpdHMgb3duIG9uIHRoZSBmaWxlIHN5c3RlbSwKICAgIGEgdGVtcG9yYXJ5IGZpbGUgd2lsbCBiZSBjcmVhdGVkLiBJZiB0aGUgZmlsZSB3YXMgY3JlYXRlZCwgdGhlIGZpbGUKICAgIHdpbGwgYmUgZGVsZXRlZCB1cG9uIGV4aXRpbmcgdGhlIGNvbnRleHQgbWFuYWdlciAobm8gZXhjZXB0aW9uIGlzCiAgICByYWlzZWQgaWYgdGhlIGZpbGUgd2FzIGRlbGV0ZWQgcHJpb3IgdG8gdGhlIGNvbnRleHQgbWFuYWdlcgogICAgZXhpdGluZykuCiAgICAiIiIKICAgIHJldHVybiBfY29tbW9uLmFzX2ZpbGUoX2NvbW1vbi5maWxlcyhwYWNrYWdlKSAvIG5vcm1hbGl6ZV9wYXRoKHJlc291cmNlKSkKUEsDBBQAAAAAAAMgo1anQbrh2xEAANsRAAAaAAAAaW1wb3J0bGliL3Jlc291cmNlcy9hYmMucHlpbXBvcnQgYWJjCmltcG9ydCBpbwppbXBvcnQgb3MKZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgQmluYXJ5SU8sIEl0ZXJhYmxlLCBJdGVyYXRvciwgTm9SZXR1cm4sIFRleHQsIE9wdGlvbmFsCmZyb20gdHlwaW5nIGltcG9ydCBydW50aW1lX2NoZWNrYWJsZSwgUHJvdG9jb2wKZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCgoKU3RyUGF0aCA9IFVuaW9uW3N0ciwgb3MuUGF0aExpa2Vbc3RyXV0KCl9fYWxsX18gPSBbIlJlc291cmNlUmVhZGVyIiwgIlRyYXZlcnNhYmxlIiwgIlRyYXZlcnNhYmxlUmVzb3VyY2VzIl0KCgpjbGFzcyBSZXNvdXJjZVJlYWRlcihtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgbG9hZGVycyB0byBwcm92aWRlIHJlc291cmNlIHJlYWRpbmcgc3VwcG9ydC4iIiIKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgb3Blbl9yZXNvdXJjZShzZWxmLCByZXNvdXJjZTogVGV4dCkgLT4gQmluYXJ5SU86CiAgICAgICAgIiIiUmV0dXJuIGFuIG9wZW5lZCwgZmlsZS1saWtlIG9iamVjdCBmb3IgYmluYXJ5IHJlYWRpbmcuCgogICAgICAgIFRoZSAncmVzb3VyY2UnIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIHJlcHJlc2VudCBvbmx5IGEgZmlsZSBuYW1lLgogICAgICAgIElmIHRoZSByZXNvdXJjZSBjYW5ub3QgYmUgZm91bmQsIEZpbGVOb3RGb3VuZEVycm9yIGlzIHJhaXNlZC4KICAgICAgICAiIiIKICAgICAgICAjIFRoaXMgZGVsaWJlcmF0ZWx5IHJhaXNlcyBGaWxlTm90Rm91bmRFcnJvciBpbnN0ZWFkIG9mCiAgICAgICAgIyBOb3RJbXBsZW1lbnRlZEVycm9yIHNvIHRoYXQgaWYgdGhpcyBtZXRob2QgaXMgYWNjaWRlbnRhbGx5IGNhbGxlZCwKICAgICAgICAjIGl0J2xsIHN0aWxsIGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiByZXNvdXJjZV9wYXRoKHNlbGYsIHJlc291cmNlOiBUZXh0KSAtPiBUZXh0OgogICAgICAgICIiIlJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCB0byB0aGUgc3BlY2lmaWVkIHJlc291cmNlLgoKICAgICAgICBUaGUgJ3Jlc291cmNlJyBhcmd1bWVudCBpcyBleHBlY3RlZCB0byByZXByZXNlbnQgb25seSBhIGZpbGUgbmFtZS4KICAgICAgICBJZiB0aGUgcmVzb3VyY2UgZG9lcyBub3QgZXhpc3Qgb24gdGhlIGZpbGUgc3lzdGVtLCByYWlzZQogICAgICAgIEZpbGVOb3RGb3VuZEVycm9yLgogICAgICAgICIiIgogICAgICAgICMgVGhpcyBkZWxpYmVyYXRlbHkgcmFpc2VzIEZpbGVOb3RGb3VuZEVycm9yIGluc3RlYWQgb2YKICAgICAgICAjIE5vdEltcGxlbWVudGVkRXJyb3Igc28gdGhhdCBpZiB0aGlzIG1ldGhvZCBpcyBhY2NpZGVudGFsbHkgY2FsbGVkLAogICAgICAgICMgaXQnbGwgc3RpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nLgogICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgZGVmIGlzX3Jlc291cmNlKHNlbGYsIHBhdGg6IFRleHQpIC0+IGJvb2w6CiAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG5hbWVkICdwYXRoJyBpcyBhIHJlc291cmNlLgoKICAgICAgICBGaWxlcyBhcmUgcmVzb3VyY2VzLCBkaXJlY3RvcmllcyBhcmUgbm90LgogICAgICAgICIiIgogICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgZGVmIGNvbnRlbnRzKHNlbGYpIC0+IEl0ZXJhYmxlW3N0cl06CiAgICAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhYmxlIG9mIGVudHJpZXMgaW4gYHBhY2thZ2VgLiIiIgogICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yCgoKQHJ1bnRpbWVfY2hlY2thYmxlCmNsYXNzIFRyYXZlcnNhYmxlKFByb3RvY29sKToKICAgICIiIgogICAgQW4gb2JqZWN0IHdpdGggYSBzdWJzZXQgb2YgcGF0aGxpYi5QYXRoIG1ldGhvZHMgc3VpdGFibGUgZm9yCiAgICB0cmF2ZXJzaW5nIGRpcmVjdG9yaWVzIGFuZCBvcGVuaW5nIGZpbGVzLgoKICAgIEFueSBleGNlcHRpb25zIHRoYXQgb2NjdXIgd2hlbiBhY2Nlc3NpbmcgdGhlIGJhY2tpbmcgcmVzb3VyY2UKICAgIG1heSBwcm9wYWdhdGUgdW5hbHRlcmVkLgogICAgIiIiCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgZGVmIGl0ZXJkaXIoc2VsZikgLT4gSXRlcmF0b3JbIlRyYXZlcnNhYmxlIl06CiAgICAgICAgIiIiCiAgICAgICAgWWllbGQgVHJhdmVyc2FibGUgb2JqZWN0cyBpbiBzZWxmCiAgICAgICAgIiIiCgogICAgZGVmIHJlYWRfYnl0ZXMoc2VsZikgLT4gYnl0ZXM6CiAgICAgICAgIiIiCiAgICAgICAgUmVhZCBjb250ZW50cyBvZiBzZWxmIGFzIGJ5dGVzCiAgICAgICAgIiIiCiAgICAgICAgd2l0aCBzZWxmLm9wZW4oJ3JiJykgYXMgc3RybToKICAgICAgICAgICAgcmV0dXJuIHN0cm0ucmVhZCgpCgogICAgZGVmIHJlYWRfdGV4dChzZWxmLCBlbmNvZGluZzogT3B0aW9uYWxbc3RyXSA9IE5vbmUpIC0+IHN0cjoKICAgICAgICAiIiIKICAgICAgICBSZWFkIGNvbnRlbnRzIG9mIHNlbGYgYXMgdGV4dAogICAgICAgICIiIgogICAgICAgIHdpdGggc2VsZi5vcGVuKGVuY29kaW5nPWVuY29kaW5nKSBhcyBzdHJtOgogICAgICAgICAgICByZXR1cm4gc3RybS5yZWFkKCkKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgaXNfZGlyKHNlbGYpIC0+IGJvb2w6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIGRpcmVjdG9yeQogICAgICAgICIiIgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiBpc19maWxlKHNlbGYpIC0+IGJvb2w6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIGZpbGUKICAgICAgICAiIiIKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgam9pbnBhdGgoc2VsZiwgKmRlc2NlbmRhbnRzOiBTdHJQYXRoKSAtPiAiVHJhdmVyc2FibGUiOgogICAgICAgICIiIgogICAgICAgIFJldHVybiBUcmF2ZXJzYWJsZSByZXNvbHZlZCB3aXRoIGFueSBkZXNjZW5kYW50cyBhcHBsaWVkLgoKICAgICAgICBFYWNoIGRlc2NlbmRhbnQgc2hvdWxkIGJlIGEgcGF0aCBzZWdtZW50IHJlbGF0aXZlIHRvIHNlbGYKICAgICAgICBhbmQgZWFjaCBtYXkgY29udGFpbiBtdWx0aXBsZSBsZXZlbHMgc2VwYXJhdGVkIGJ5CiAgICAgICAgYGBwb3NpeHBhdGguc2VwYGAgKGBgL2BgKS4KICAgICAgICAiIiIKCiAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgY2hpbGQ6IFN0clBhdGgpIC0+ICJUcmF2ZXJzYWJsZSI6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIFRyYXZlcnNhYmxlIGNoaWxkIGluIHNlbGYKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5qb2lucGF0aChjaGlsZCkKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgb3BlbihzZWxmLCBtb2RlPSdyJywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBtb2RlIG1heSBiZSAncicgb3IgJ3JiJyB0byBvcGVuIGFzIHRleHQgb3IgYmluYXJ5LiBSZXR1cm4gYSBoYW5kbGUKICAgICAgICBzdWl0YWJsZSBmb3IgcmVhZGluZyAoc2FtZSBhcyBwYXRobGliLlBhdGgub3BlbikuCgogICAgICAgIFdoZW4gb3BlbmluZyBhcyB0ZXh0LCBhY2NlcHRzIGVuY29kaW5nIHBhcmFtZXRlcnMgc3VjaCBhcyB0aG9zZQogICAgICAgIGFjY2VwdGVkIGJ5IGlvLlRleHRJT1dyYXBwZXIuCiAgICAgICAgIiIiCgogICAgQGFiYy5hYnN0cmFjdHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKSAtPiBzdHI6CiAgICAgICAgIiIiCiAgICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGlzIG9iamVjdCB3aXRob3V0IGFueSBwYXJlbnQgcmVmZXJlbmNlcy4KICAgICAgICAiIiIKCgpjbGFzcyBUcmF2ZXJzYWJsZVJlc291cmNlcyhSZXNvdXJjZVJlYWRlcik6CiAgICAiIiIKICAgIFRoZSByZXF1aXJlZCBpbnRlcmZhY2UgZm9yIHByb3ZpZGluZyB0cmF2ZXJzYWJsZQogICAgcmVzb3VyY2VzLgogICAgIiIiCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgZGVmIGZpbGVzKHNlbGYpIC0+ICJUcmF2ZXJzYWJsZSI6CiAgICAgICAgIiIiUmV0dXJuIGEgVHJhdmVyc2FibGUgb2JqZWN0IGZvciB0aGUgbG9hZGVkIHBhY2thZ2UuIiIiCgogICAgZGVmIG9wZW5fcmVzb3VyY2Uoc2VsZiwgcmVzb3VyY2U6IFN0clBhdGgpIC0+IGlvLkJ1ZmZlcmVkUmVhZGVyOgogICAgICAgIHJldHVybiBzZWxmLmZpbGVzKCkuam9pbnBhdGgocmVzb3VyY2UpLm9wZW4oJ3JiJykKCiAgICBkZWYgcmVzb3VyY2VfcGF0aChzZWxmLCByZXNvdXJjZTogQW55KSAtPiBOb1JldHVybjoKICAgICAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcihyZXNvdXJjZSkKCiAgICBkZWYgaXNfcmVzb3VyY2Uoc2VsZiwgcGF0aDogU3RyUGF0aCkgLT4gYm9vbDoKICAgICAgICByZXR1cm4gc2VsZi5maWxlcygpLmpvaW5wYXRoKHBhdGgpLmlzX2ZpbGUoKQoKICAgIGRlZiBjb250ZW50cyhzZWxmKSAtPiBJdGVyYXRvcltzdHJdOgogICAgICAgIHJldHVybiAoaXRlbS5uYW1lIGZvciBpdGVtIGluIHNlbGYuZmlsZXMoKS5pdGVyZGlyKCkpClBLAwQUAAAAAAADIKNWNHq35OUNAADlDQAAHgAAAGltcG9ydGxpYi9yZXNvdXJjZXMvcmVhZGVycy5weWltcG9ydCBjb2xsZWN0aW9ucwppbXBvcnQgb3BlcmF0b3IKaW1wb3J0IHBhdGhsaWIKaW1wb3J0IHppcGZpbGUKCmZyb20gLiBpbXBvcnQgYWJjCgpmcm9tIC5faXRlcnRvb2xzIGltcG9ydCB1bmlxdWVfZXZlcnNlZW4KCgpkZWYgcmVtb3ZlX2R1cGxpY2F0ZXMoaXRlbXMpOgogICAgcmV0dXJuIGl0ZXIoY29sbGVjdGlvbnMuT3JkZXJlZERpY3QuZnJvbWtleXMoaXRlbXMpKQoKCmNsYXNzIEZpbGVSZWFkZXIoYWJjLlRyYXZlcnNhYmxlUmVzb3VyY2VzKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2FkZXIpOgogICAgICAgIHNlbGYucGF0aCA9IHBhdGhsaWIuUGF0aChsb2FkZXIucGF0aCkucGFyZW50CgogICAgZGVmIHJlc291cmNlX3BhdGgoc2VsZiwgcmVzb3VyY2UpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCB0byBwcmV2ZW50CiAgICAgICAgYHJlc291cmNlcy5wYXRoKClgIGZyb20gY3JlYXRpbmcgYSB0ZW1wb3JhcnkKICAgICAgICBjb3B5LgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzdHIoc2VsZi5wYXRoLmpvaW5wYXRoKHJlc291cmNlKSkKCiAgICBkZWYgZmlsZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYucGF0aAoKCmNsYXNzIFppcFJlYWRlcihhYmMuVHJhdmVyc2FibGVSZXNvdXJjZXMpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvYWRlciwgbW9kdWxlKToKICAgICAgICBfLCBfLCBuYW1lID0gbW9kdWxlLnJwYXJ0aXRpb24oJy4nKQogICAgICAgIHNlbGYucHJlZml4ID0gbG9hZGVyLnByZWZpeC5yZXBsYWNlKCdcXCcsICcvJykgKyBuYW1lICsgJy8nCiAgICAgICAgc2VsZi5hcmNoaXZlID0gbG9hZGVyLmFyY2hpdmUKCiAgICBkZWYgb3Blbl9yZXNvdXJjZShzZWxmLCByZXNvdXJjZSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5vcGVuX3Jlc291cmNlKHJlc291cmNlKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBleGM6CiAgICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKGV4Yy5hcmdzWzBdKQoKICAgIGRlZiBpc19yZXNvdXJjZShzZWxmLCBwYXRoKToKICAgICAgICAjIHdvcmthcm91bmQgZm9yIGB6aXBmaWxlLlBhdGguaXNfZmlsZWAgcmV0dXJuaW5nIHRydWUKICAgICAgICAjIGZvciBub24tZXhpc3RlbnQgcGF0aHMuCiAgICAgICAgdGFyZ2V0ID0gc2VsZi5maWxlcygpLmpvaW5wYXRoKHBhdGgpCiAgICAgICAgcmV0dXJuIHRhcmdldC5pc19maWxlKCkgYW5kIHRhcmdldC5leGlzdHMoKQoKICAgIGRlZiBmaWxlcyhzZWxmKToKICAgICAgICByZXR1cm4gemlwZmlsZS5QYXRoKHNlbGYuYXJjaGl2ZSwgc2VsZi5wcmVmaXgpCgoKY2xhc3MgTXVsdGlwbGV4ZWRQYXRoKGFiYy5UcmF2ZXJzYWJsZSk6CiAgICAiIiIKICAgIEdpdmVuIGEgc2VyaWVzIG9mIFRyYXZlcnNhYmxlIG9iamVjdHMsIGltcGxlbWVudCBhIG1lcmdlZAogICAgdmVyc2lvbiBvZiB0aGUgaW50ZXJmYWNlIGFjcm9zcyBhbGwgb2JqZWN0cy4gVXNlZnVsIGZvcgogICAgbmFtZXNwYWNlIHBhY2thZ2VzIHdoaWNoIG1heSBiZSBtdWx0aWhvbWVkIGF0IGEgc2luZ2xlCiAgICBuYW1lLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICpwYXRocyk6CiAgICAgICAgc2VsZi5fcGF0aHMgPSBsaXN0KG1hcChwYXRobGliLlBhdGgsIHJlbW92ZV9kdXBsaWNhdGVzKHBhdGhzKSkpCiAgICAgICAgaWYgbm90IHNlbGYuX3BhdGhzOgogICAgICAgICAgICBtZXNzYWdlID0gJ011bHRpcGxleGVkUGF0aCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHBhdGgnCiAgICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKG1lc3NhZ2UpCiAgICAgICAgaWYgbm90IGFsbChwYXRoLmlzX2RpcigpIGZvciBwYXRoIGluIHNlbGYuX3BhdGhzKToKICAgICAgICAgICAgcmFpc2UgTm90QURpcmVjdG9yeUVycm9yKCdNdWx0aXBsZXhlZFBhdGggb25seSBzdXBwb3J0cyBkaXJlY3RvcmllcycpCgogICAgZGVmIGl0ZXJkaXIoc2VsZik6CiAgICAgICAgZmlsZXMgPSAoZmlsZSBmb3IgcGF0aCBpbiBzZWxmLl9wYXRocyBmb3IgZmlsZSBpbiBwYXRoLml0ZXJkaXIoKSkKICAgICAgICByZXR1cm4gdW5pcXVlX2V2ZXJzZWVuKGZpbGVzLCBrZXk9b3BlcmF0b3IuYXR0cmdldHRlcignbmFtZScpKQoKICAgIGRlZiByZWFkX2J5dGVzKHNlbGYpOgogICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKGYne3NlbGZ9IGlzIG5vdCBhIGZpbGUnKQoKICAgIGRlZiByZWFkX3RleHQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcihmJ3tzZWxmfSBpcyBub3QgYSBmaWxlJykKCiAgICBkZWYgaXNfZGlyKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIGlzX2ZpbGUoc2VsZik6CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIGpvaW5wYXRoKHNlbGYsIGNoaWxkKToKICAgICAgICAjIGZpcnN0IHRyeSB0byBmaW5kIGNoaWxkIGluIGN1cnJlbnQgcGF0aHMKICAgICAgICBmb3IgZmlsZSBpbiBzZWxmLml0ZXJkaXIoKToKICAgICAgICAgICAgaWYgZmlsZS5uYW1lID09IGNoaWxkOgogICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUKICAgICAgICAjIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBjb25zdHJ1Y3QgaXQgd2l0aCB0aGUgZmlyc3QgcGF0aAogICAgICAgIHJldHVybiBzZWxmLl9wYXRoc1swXSAvIGNoaWxkCgogICAgX190cnVlZGl2X18gPSBqb2lucGF0aAoKICAgIGRlZiBvcGVuKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoZid7c2VsZn0gaXMgbm90IGEgZmlsZScpCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fcGF0aHNbMF0ubmFtZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBwYXRocyA9ICcsICcuam9pbihmIid7cGF0aH0nIiBmb3IgcGF0aCBpbiBzZWxmLl9wYXRocykKICAgICAgICByZXR1cm4gZidNdWx0aXBsZXhlZFBhdGgoe3BhdGhzfSknCgoKY2xhc3MgTmFtZXNwYWNlUmVhZGVyKGFiYy5UcmF2ZXJzYWJsZVJlc291cmNlcyk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlX3BhdGgpOgogICAgICAgIGlmICdOYW1lc3BhY2VQYXRoJyBub3QgaW4gc3RyKG5hbWVzcGFjZV9wYXRoKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBwYXRoJykKICAgICAgICBzZWxmLnBhdGggPSBNdWx0aXBsZXhlZFBhdGgoKmxpc3QobmFtZXNwYWNlX3BhdGgpKQoKICAgIGRlZiByZXNvdXJjZV9wYXRoKHNlbGYsIHJlc291cmNlKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggdG8gcHJldmVudAogICAgICAgIGByZXNvdXJjZXMucGF0aCgpYCBmcm9tIGNyZWF0aW5nIGEgdGVtcG9yYXJ5CiAgICAgICAgY29weS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc3RyKHNlbGYucGF0aC5qb2lucGF0aChyZXNvdXJjZSkpCgogICAgZGVmIGZpbGVzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnBhdGgKUEsDBBQAAAAAAAMgo1bFodtXKwwAACsMAAAdAAAAaW1wb3J0bGliL3Jlc291cmNlcy9zaW1wbGUucHkiIiIKSW50ZXJmYWNlIGFkYXB0ZXJzIGZvciBsb3ctbGV2ZWwgcmVhZGVycy4KIiIiCgppbXBvcnQgYWJjCmltcG9ydCBpbwppbXBvcnQgaXRlcnRvb2xzCmZyb20gdHlwaW5nIGltcG9ydCBCaW5hcnlJTywgTGlzdAoKZnJvbSAuYWJjIGltcG9ydCBUcmF2ZXJzYWJsZSwgVHJhdmVyc2FibGVSZXNvdXJjZXMKCgpjbGFzcyBTaW1wbGVSZWFkZXIoYWJjLkFCQyk6CiAgICAiIiIKICAgIFRoZSBtaW5pbXVtLCBsb3ctbGV2ZWwgaW50ZXJmYWNlIHJlcXVpcmVkIGZyb20gYSByZXNvdXJjZQogICAgcHJvdmlkZXIuCiAgICAiIiIKCiAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKICAgIGRlZiBwYWNrYWdlKHNlbGYpOgogICAgICAgICMgdHlwZTogKCkgLT4gc3RyCiAgICAgICAgIiIiCiAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgZm9yIHdoaWNoIHRoaXMgcmVhZGVyIGxvYWRzIHJlc291cmNlcy4KICAgICAgICAiIiIKCiAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICBkZWYgY2hpbGRyZW4oc2VsZik6CiAgICAgICAgIyB0eXBlOiAoKSAtPiBMaXN0WydTaW1wbGVSZWFkZXInXQogICAgICAgICIiIgogICAgICAgIE9idGFpbiBhbiBpdGVyYWJsZSBvZiBTaW1wbGVSZWFkZXIgZm9yIGF2YWlsYWJsZQogICAgICAgIGNoaWxkIGNvbnRhaW5lcnMgKGUuZy4gZGlyZWN0b3JpZXMpLgogICAgICAgICIiIgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiByZXNvdXJjZXMoc2VsZik6CiAgICAgICAgIyB0eXBlOiAoKSAtPiBMaXN0W3N0cl0KICAgICAgICAiIiIKICAgICAgICBPYnRhaW4gYXZhaWxhYmxlIG5hbWVkIHJlc291cmNlcyBmb3IgdGhpcyB2aXJ0dWFsIHBhY2thZ2UuCiAgICAgICAgIiIiCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgZGVmIG9wZW5fYmluYXJ5KHNlbGYsIHJlc291cmNlKToKICAgICAgICAjIHR5cGU6IChzdHIpIC0+IEJpbmFyeUlPCiAgICAgICAgIiIiCiAgICAgICAgT2J0YWluIGEgRmlsZS1saWtlIGZvciBhIG5hbWVkIHJlc291cmNlLgogICAgICAgICIiIgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYucGFja2FnZS5zcGxpdCgnLicpWy0xXQoKCmNsYXNzIFJlc291cmNlSGFuZGxlKFRyYXZlcnNhYmxlKToKICAgICIiIgogICAgSGFuZGxlIHRvIGEgbmFtZWQgcmVzb3VyY2UgaW4gYSBSZXNvdXJjZVJlYWRlci4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIG5hbWUpOgogICAgICAgICMgdHlwZTogKFJlc291cmNlQ29udGFpbmVyLCBzdHIpIC0+IE5vbmUKICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgIHNlbGYubmFtZSA9IG5hbWUgICMgdHlwZTogaWdub3JlCgogICAgZGVmIGlzX2ZpbGUoc2VsZik6CiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgaXNfZGlyKHNlbGYpOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBvcGVuKHNlbGYsIG1vZGU9J3InLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHN0cmVhbSA9IHNlbGYucGFyZW50LnJlYWRlci5vcGVuX2JpbmFyeShzZWxmLm5hbWUpCiAgICAgICAgaWYgJ2InIG5vdCBpbiBtb2RlOgogICAgICAgICAgICBzdHJlYW0gPSBpby5UZXh0SU9XcmFwcGVyKCphcmdzLCAqKmt3YXJncykKICAgICAgICByZXR1cm4gc3RyZWFtCgogICAgZGVmIGpvaW5wYXRoKHNlbGYsIG5hbWUpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IHRyYXZlcnNlIGludG8gYSByZXNvdXJjZSIpCgoKY2xhc3MgUmVzb3VyY2VDb250YWluZXIoVHJhdmVyc2FibGUpOgogICAgIiIiCiAgICBUcmF2ZXJzYWJsZSBjb250YWluZXIgZm9yIGEgcGFja2FnZSdzIHJlc291cmNlcyB2aWEgaXRzIHJlYWRlci4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFkZXIpOgogICAgICAgICMgdHlwZTogKFNpbXBsZVJlYWRlcikgLT4gTm9uZQogICAgICAgIHNlbGYucmVhZGVyID0gcmVhZGVyCgogICAgZGVmIGlzX2RpcihzZWxmKToKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiBpc19maWxlKHNlbGYpOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBpdGVyZGlyKHNlbGYpOgogICAgICAgIGZpbGVzID0gKFJlc291cmNlSGFuZGxlKHNlbGYsIG5hbWUpIGZvciBuYW1lIGluIHNlbGYucmVhZGVyLnJlc291cmNlcykKICAgICAgICBkaXJzID0gbWFwKFJlc291cmNlQ29udGFpbmVyLCBzZWxmLnJlYWRlci5jaGlsZHJlbigpKQogICAgICAgIHJldHVybiBpdGVydG9vbHMuY2hhaW4oZmlsZXMsIGRpcnMpCgogICAgZGVmIG9wZW4oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICByYWlzZSBJc0FEaXJlY3RvcnlFcnJvcigpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9mbGF0dGVuKGNvbXBvdW5kX25hbWVzKToKICAgICAgICBmb3IgbmFtZSBpbiBjb21wb3VuZF9uYW1lczoKICAgICAgICAgICAgeWllbGQgZnJvbSBuYW1lLnNwbGl0KCcvJykKCiAgICBkZWYgam9pbnBhdGgoc2VsZiwgKmRlc2NlbmRhbnRzKToKICAgICAgICBpZiBub3QgZGVzY2VuZGFudHM6CiAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgbmFtZXMgPSBzZWxmLl9mbGF0dGVuKGRlc2NlbmRhbnRzKQogICAgICAgIHRhcmdldCA9IG5leHQobmFtZXMpCiAgICAgICAgcmV0dXJuIG5leHQoCiAgICAgICAgICAgIHRyYXZlcnNhYmxlIGZvciB0cmF2ZXJzYWJsZSBpbiBzZWxmLml0ZXJkaXIoKSBpZiB0cmF2ZXJzYWJsZS5uYW1lID09IHRhcmdldAogICAgICAgICkuam9pbnBhdGgoKm5hbWVzKQoKCmNsYXNzIFRyYXZlcnNhYmxlUmVhZGVyKFRyYXZlcnNhYmxlUmVzb3VyY2VzLCBTaW1wbGVSZWFkZXIpOgogICAgIiIiCiAgICBBIFRyYXZlcnNhYmxlUmVzb3VyY2VzIGJhc2VkIG9uIFNpbXBsZVJlYWRlci4gUmVzb3VyY2UgcHJvdmlkZXJzCiAgICBtYXkgZGVyaXZlIGZyb20gdGhpcyBjbGFzcyB0byBwcm92aWRlIHRoZSBUcmF2ZXJzYWJsZVJlc291cmNlcwogICAgaW50ZXJmYWNlIGJ5IHN1cHBseWluZyB0aGUgU2ltcGxlUmVhZGVyIGludGVyZmFjZS4KICAgICIiIgoKICAgIGRlZiBmaWxlcyhzZWxmKToKICAgICAgICByZXR1cm4gUmVzb3VyY2VDb250YWluZXIoc2VsZikKUEsDBBQAAAAAAAMgo1brtXlgdHkAAHR5AAAeAAAAaW1wb3J0bGliL21ldGFkYXRhL19faW5pdF9fLnB5aW1wb3J0IG9zCmltcG9ydCByZQppbXBvcnQgYWJjCmltcG9ydCBjc3YKaW1wb3J0IHN5cwppbXBvcnQgZW1haWwKaW1wb3J0IHBhdGhsaWIKaW1wb3J0IHppcGZpbGUKaW1wb3J0IG9wZXJhdG9yCmltcG9ydCB0ZXh0d3JhcAppbXBvcnQgd2FybmluZ3MKaW1wb3J0IGZ1bmN0b29scwppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCBwb3NpeHBhdGgKaW1wb3J0IGNvbGxlY3Rpb25zCgpmcm9tIC4gaW1wb3J0IF9hZGFwdGVycywgX21ldGEKZnJvbSAuX2NvbGxlY3Rpb25zIGltcG9ydCBGcmVlemFibGVEZWZhdWx0RGljdCwgUGFpcgpmcm9tIC5fZnVuY3Rvb2xzIGltcG9ydCBtZXRob2RfY2FjaGUsIHBhc3Nfbm9uZQpmcm9tIC5faXRlcnRvb2xzIGltcG9ydCBhbHdheXNfaXRlcmFibGUsIHVuaXF1ZV9ldmVyc2Vlbgpmcm9tIC5fbWV0YSBpbXBvcnQgUGFja2FnZU1ldGFkYXRhLCBTaW1wbGVQYXRoCgpmcm9tIGNvbnRleHRsaWIgaW1wb3J0IHN1cHByZXNzCmZyb20gaW1wb3J0bGliIGltcG9ydCBpbXBvcnRfbW9kdWxlCmZyb20gaW1wb3J0bGliLmFiYyBpbXBvcnQgTWV0YVBhdGhGaW5kZXIKZnJvbSBpdGVydG9vbHMgaW1wb3J0IHN0YXJtYXAKZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIE1hcHBpbmcsIE9wdGlvbmFsLCBVbmlvbgoKCl9fYWxsX18gPSBbCiAgICAnRGlzdHJpYnV0aW9uJywKICAgICdEaXN0cmlidXRpb25GaW5kZXInLAogICAgJ1BhY2thZ2VNZXRhZGF0YScsCiAgICAnUGFja2FnZU5vdEZvdW5kRXJyb3InLAogICAgJ2Rpc3RyaWJ1dGlvbicsCiAgICAnZGlzdHJpYnV0aW9ucycsCiAgICAnZW50cnlfcG9pbnRzJywKICAgICdmaWxlcycsCiAgICAnbWV0YWRhdGEnLAogICAgJ3BhY2thZ2VzX2Rpc3RyaWJ1dGlvbnMnLAogICAgJ3JlcXVpcmVzJywKICAgICd2ZXJzaW9uJywKXQoKCmNsYXNzIFBhY2thZ2VOb3RGb3VuZEVycm9yKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgogICAgIiIiVGhlIHBhY2thZ2Ugd2FzIG5vdCBmb3VuZC4iIiIKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gZiJObyBwYWNrYWdlIG1ldGFkYXRhIHdhcyBmb3VuZCBmb3Ige3NlbGYubmFtZX0iCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAobmFtZSwpID0gc2VsZi5hcmdzCiAgICAgICAgcmV0dXJuIG5hbWUKCgpjbGFzcyBTZWN0aW9uZWQ6CiAgICAiIiIKICAgIEEgc2ltcGxlIGVudHJ5IHBvaW50IGNvbmZpZyBwYXJzZXIgZm9yIHBlcmZvcm1hbmNlCgogICAgPj4+IGZvciBpdGVtIGluIFNlY3Rpb25lZC5yZWFkKFNlY3Rpb25lZC5fc2FtcGxlKToKICAgIC4uLiAgICAgcHJpbnQoaXRlbSkKICAgIFBhaXIobmFtZT0nc2VjMScsIHZhbHVlPScjIGNvbW1lbnRzIGlnbm9yZWQnKQogICAgUGFpcihuYW1lPSdzZWMxJywgdmFsdWU9J2EgPSAxJykKICAgIFBhaXIobmFtZT0nc2VjMScsIHZhbHVlPSdiID0gMicpCiAgICBQYWlyKG5hbWU9J3NlYzInLCB2YWx1ZT0nYSA9IDInKQoKICAgID4+PiByZXMgPSBTZWN0aW9uZWQuc2VjdGlvbl9wYWlycyhTZWN0aW9uZWQuX3NhbXBsZSkKICAgID4+PiBpdGVtID0gbmV4dChyZXMpCiAgICA+Pj4gaXRlbS5uYW1lCiAgICAnc2VjMScKICAgID4+PiBpdGVtLnZhbHVlCiAgICBQYWlyKG5hbWU9J2EnLCB2YWx1ZT0nMScpCiAgICA+Pj4gaXRlbSA9IG5leHQocmVzKQogICAgPj4+IGl0ZW0udmFsdWUKICAgIFBhaXIobmFtZT0nYicsIHZhbHVlPScyJykKICAgID4+PiBpdGVtID0gbmV4dChyZXMpCiAgICA+Pj4gaXRlbS5uYW1lCiAgICAnc2VjMicKICAgID4+PiBpdGVtLnZhbHVlCiAgICBQYWlyKG5hbWU9J2EnLCB2YWx1ZT0nMicpCiAgICA+Pj4gbGlzdChyZXMpCiAgICBbXQogICAgIiIiCgogICAgX3NhbXBsZSA9IHRleHR3cmFwLmRlZGVudCgKICAgICAgICAiIiIKICAgICAgICBbc2VjMV0KICAgICAgICAjIGNvbW1lbnRzIGlnbm9yZWQKICAgICAgICBhID0gMQogICAgICAgIGIgPSAyCgogICAgICAgIFtzZWMyXQogICAgICAgIGEgPSAyCiAgICAgICAgIiIiCiAgICApLmxzdHJpcCgpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgc2VjdGlvbl9wYWlycyhjbHMsIHRleHQpOgogICAgICAgIHJldHVybiAoCiAgICAgICAgICAgIHNlY3Rpb24uX3JlcGxhY2UodmFsdWU9UGFpci5wYXJzZShzZWN0aW9uLnZhbHVlKSkKICAgICAgICAgICAgZm9yIHNlY3Rpb24gaW4gY2xzLnJlYWQodGV4dCwgZmlsdGVyXz1jbHMudmFsaWQpCiAgICAgICAgICAgIGlmIHNlY3Rpb24ubmFtZSBpcyBub3QgTm9uZQogICAgICAgICkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgcmVhZCh0ZXh0LCBmaWx0ZXJfPU5vbmUpOgogICAgICAgIGxpbmVzID0gZmlsdGVyKGZpbHRlcl8sIG1hcChzdHIuc3RyaXAsIHRleHQuc3BsaXRsaW5lcygpKSkKICAgICAgICBuYW1lID0gTm9uZQogICAgICAgIGZvciB2YWx1ZSBpbiBsaW5lczoKICAgICAgICAgICAgc2VjdGlvbl9tYXRjaCA9IHZhbHVlLnN0YXJ0c3dpdGgoJ1snKSBhbmQgdmFsdWUuZW5kc3dpdGgoJ10nKQogICAgICAgICAgICBpZiBzZWN0aW9uX21hdGNoOgogICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlLnN0cmlwKCdbXScpCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB5aWVsZCBQYWlyKG5hbWUsIHZhbHVlKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiB2YWxpZChsaW5lKToKICAgICAgICByZXR1cm4gbGluZSBhbmQgbm90IGxpbmUuc3RhcnRzd2l0aCgnIycpCgoKY2xhc3MgRGVwcmVjYXRlZFR1cGxlOgogICAgIiIiCiAgICBQcm92aWRlIHN1YnNjcmlwdCBpdGVtIGFjY2VzcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KCiAgICA+Pj4gcmVjd2FybiA9IGdldGZpeHR1cmUoJ3JlY3dhcm4nKQogICAgPj4+IGVwID0gRW50cnlQb2ludChuYW1lPSduYW1lJywgdmFsdWU9J3ZhbHVlJywgZ3JvdXA9J2dyb3VwJykKICAgID4+PiBlcFs6XQogICAgKCduYW1lJywgJ3ZhbHVlJywgJ2dyb3VwJykKICAgID4+PiBlcFswXQogICAgJ25hbWUnCiAgICA+Pj4gbGVuKHJlY3dhcm4pCiAgICAxCiAgICAiIiIKCiAgICBfd2FybiA9IGZ1bmN0b29scy5wYXJ0aWFsKAogICAgICAgIHdhcm5pbmdzLndhcm4sCiAgICAgICAgIkVudHJ5UG9pbnQgdHVwbGUgaW50ZXJmYWNlIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyBtZW1iZXJzIGJ5IG5hbWUuIiwKICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgc3RhY2tsZXZlbD0yLAogICAgKQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKICAgICAgICBzZWxmLl93YXJuKCkKICAgICAgICByZXR1cm4gc2VsZi5fa2V5KClbaXRlbV0KCgpjbGFzcyBFbnRyeVBvaW50KERlcHJlY2F0ZWRUdXBsZSk6CiAgICAiIiJBbiBlbnRyeSBwb2ludCBhcyBkZWZpbmVkIGJ5IFB5dGhvbiBwYWNrYWdpbmcgY29udmVudGlvbnMuCgogICAgU2VlIGB0aGUgcGFja2FnaW5nIGRvY3Mgb24gZW50cnkgcG9pbnRzCiAgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zcGVjaWZpY2F0aW9ucy9lbnRyeS1wb2ludHMvPmBfCiAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICA+Pj4gZXAgPSBFbnRyeVBvaW50KAogICAgLi4uICAgICBuYW1lPU5vbmUsIGdyb3VwPU5vbmUsIHZhbHVlPSdwYWNrYWdlLm1vZHVsZTphdHRyIFtleHRyYTEsIGV4dHJhMl0nKQogICAgPj4+IGVwLm1vZHVsZQogICAgJ3BhY2thZ2UubW9kdWxlJwogICAgPj4+IGVwLmF0dHIKICAgICdhdHRyJwogICAgPj4+IGVwLmV4dHJhcwogICAgWydleHRyYTEnLCAnZXh0cmEyJ10KICAgICIiIgoKICAgIHBhdHRlcm4gPSByZS5jb21waWxlKAogICAgICAgIHInKD9QPG1vZHVsZT5bXHcuXSspXHMqJwogICAgICAgIHInKDpccyooP1A8YXR0cj5bXHcuXSspXHMqKT8nCiAgICAgICAgcicoKD9QPGV4dHJhcz5cWy4qXF0pXHMqKT8kJwogICAgKQogICAgIiIiCiAgICBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBkZXNjcmliaW5nIHRoZSBzeW50YXggZm9yIGFuIGVudHJ5IHBvaW50LAogICAgd2hpY2ggbWlnaHQgbG9vayBsaWtlOgoKICAgICAgICAtIG1vZHVsZQogICAgICAgIC0gcGFja2FnZS5tb2R1bGUKICAgICAgICAtIHBhY2thZ2UubW9kdWxlOmF0dHJpYnV0ZQogICAgICAgIC0gcGFja2FnZS5tb2R1bGU6b2JqZWN0LmF0dHJpYnV0ZQogICAgICAgIC0gcGFja2FnZS5tb2R1bGU6YXR0ciBbZXh0cmExLCBleHRyYTJdCgogICAgT3RoZXIgY29tYmluYXRpb25zIGFyZSBwb3NzaWJsZSBhcyB3ZWxsLgoKICAgIFRoZSBleHByZXNzaW9uIGlzIGxlbmllbnQgYWJvdXQgd2hpdGVzcGFjZSBhcm91bmQgdGhlICc6JywKICAgIGZvbGxvd2luZyB0aGUgYXR0ciwgYW5kIGZvbGxvd2luZyBhbnkgZXh0cmFzLgogICAgIiIiCgogICAgbmFtZTogc3RyCiAgICB2YWx1ZTogc3RyCiAgICBncm91cDogc3RyCgogICAgZGlzdDogT3B0aW9uYWxbJ0Rpc3RyaWJ1dGlvbiddID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB2YWx1ZSwgZ3JvdXApOgogICAgICAgIHZhcnMoc2VsZikudXBkYXRlKG5hbWU9bmFtZSwgdmFsdWU9dmFsdWUsIGdyb3VwPWdyb3VwKQoKICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgICIiIkxvYWQgdGhlIGVudHJ5IHBvaW50IGZyb20gaXRzIGRlZmluaXRpb24uIElmIG9ubHkgYSBtb2R1bGUKICAgICAgICBpcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlLCByZXR1cm4gdGhhdCBtb2R1bGUuIE90aGVyd2lzZSwKICAgICAgICByZXR1cm4gdGhlIG5hbWVkIG9iamVjdC4KICAgICAgICAiIiIKICAgICAgICBtYXRjaCA9IHNlbGYucGF0dGVybi5tYXRjaChzZWxmLnZhbHVlKQogICAgICAgIG1vZHVsZSA9IGltcG9ydF9tb2R1bGUobWF0Y2guZ3JvdXAoJ21vZHVsZScpKQogICAgICAgIGF0dHJzID0gZmlsdGVyKE5vbmUsIChtYXRjaC5ncm91cCgnYXR0cicpIG9yICcnKS5zcGxpdCgnLicpKQogICAgICAgIHJldHVybiBmdW5jdG9vbHMucmVkdWNlKGdldGF0dHIsIGF0dHJzLCBtb2R1bGUpCgogICAgQHByb3BlcnR5CiAgICBkZWYgbW9kdWxlKHNlbGYpOgogICAgICAgIG1hdGNoID0gc2VsZi5wYXR0ZXJuLm1hdGNoKHNlbGYudmFsdWUpCiAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCdtb2R1bGUnKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGF0dHIoc2VsZik6CiAgICAgICAgbWF0Y2ggPSBzZWxmLnBhdHRlcm4ubWF0Y2goc2VsZi52YWx1ZSkKICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ2F0dHInKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGV4dHJhcyhzZWxmKToKICAgICAgICBtYXRjaCA9IHNlbGYucGF0dGVybi5tYXRjaChzZWxmLnZhbHVlKQogICAgICAgIHJldHVybiByZS5maW5kYWxsKHInXHcrJywgbWF0Y2guZ3JvdXAoJ2V4dHJhcycpIG9yICcnKQoKICAgIGRlZiBfZm9yKHNlbGYsIGRpc3QpOgogICAgICAgIHZhcnMoc2VsZikudXBkYXRlKGRpc3Q9ZGlzdCkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBTdXBwbHkgaXRlciBzbyBvbmUgbWF5IGNvbnN0cnVjdCBkaWN0cyBvZiBFbnRyeVBvaW50cyBieSBuYW1lLgogICAgICAgICIiIgogICAgICAgIG1zZyA9ICgKICAgICAgICAgICAgIkNvbnN0cnVjdGlvbiBvZiBkaWN0IG9mIEVudHJ5UG9pbnRzIGlzIGRlcHJlY2F0ZWQgaW4gIgogICAgICAgICAgICAiZmF2b3Igb2YgRW50cnlQb2ludHMuIgogICAgICAgICkKICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgIHJldHVybiBpdGVyKChzZWxmLm5hbWUsIHNlbGYpKQoKICAgIGRlZiBtYXRjaGVzKHNlbGYsICoqcGFyYW1zKToKICAgICAgICAiIiIKICAgICAgICBFbnRyeVBvaW50IG1hdGNoZXMgdGhlIGdpdmVuIHBhcmFtZXRlcnMuCgogICAgICAgID4+PiBlcCA9IEVudHJ5UG9pbnQoZ3JvdXA9J2ZvbycsIG5hbWU9J2JhcicsIHZhbHVlPSdiaW5nOmJvbmcgW2V4dHJhMSwgZXh0cmEyXScpCiAgICAgICAgPj4+IGVwLm1hdGNoZXMoZ3JvdXA9J2ZvbycpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBlcC5tYXRjaGVzKG5hbWU9J2JhcicsIHZhbHVlPSdiaW5nOmJvbmcgW2V4dHJhMSwgZXh0cmEyXScpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBlcC5tYXRjaGVzKGdyb3VwPSdmb28nLCBuYW1lPSdvdGhlcicpCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gZXAubWF0Y2hlcygpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBlcC5tYXRjaGVzKGV4dHJhcz1bJ2V4dHJhMScsICdleHRyYTInXSkKICAgICAgICBUcnVlCiAgICAgICAgPj4+IGVwLm1hdGNoZXMobW9kdWxlPSdiaW5nJykKICAgICAgICBUcnVlCiAgICAgICAgPj4+IGVwLm1hdGNoZXMoYXR0cj0nYm9uZycpCiAgICAgICAgVHJ1ZQogICAgICAgICIiIgogICAgICAgIGF0dHJzID0gKGdldGF0dHIoc2VsZiwgcGFyYW0pIGZvciBwYXJhbSBpbiBwYXJhbXMpCiAgICAgICAgcmV0dXJuIGFsbChtYXAob3BlcmF0b3IuZXEsIHBhcmFtcy52YWx1ZXMoKSwgYXR0cnMpKQoKICAgIGRlZiBfa2V5KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLm5hbWUsIHNlbGYudmFsdWUsIHNlbGYuZ3JvdXAKCiAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5fa2V5KCkgPCBvdGhlci5fa2V5KCkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5fa2V5KCkgPT0gb3RoZXIuX2tleSgpCgogICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiRW50cnlQb2ludCBvYmplY3RzIGFyZSBpbW11dGFibGUuIikKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgZidFbnRyeVBvaW50KG5hbWU9e3NlbGYubmFtZSFyfSwgdmFsdWU9e3NlbGYudmFsdWUhcn0sICcKICAgICAgICAgICAgZidncm91cD17c2VsZi5ncm91cCFyfSknCiAgICAgICAgKQoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9rZXkoKSkKCgpjbGFzcyBEZXByZWNhdGVkTGlzdChsaXN0KToKICAgICIiIgogICAgQWxsb3cgYW4gb3RoZXJ3aXNlIGltbXV0YWJsZSBvYmplY3QgdG8gaW1wbGVtZW50IG11dGFiaWxpdHkKICAgIGZvciBjb21wYXRpYmlsaXR5LgoKICAgID4+PiByZWN3YXJuID0gZ2V0Zml4dHVyZSgncmVjd2FybicpCiAgICA+Pj4gZGwgPSBEZXByZWNhdGVkTGlzdChyYW5nZSgzKSkKICAgID4+PiBkbFswXSA9IDEKICAgID4+PiBkbC5hcHBlbmQoMykKICAgID4+PiBkZWwgZGxbM10KICAgID4+PiBkbC5yZXZlcnNlKCkKICAgID4+PiBkbC5zb3J0KCkKICAgID4+PiBkbC5leHRlbmQoWzRdKQogICAgPj4+IGRsLnBvcCgtMSkKICAgIDQKICAgID4+PiBkbC5yZW1vdmUoMSkKICAgID4+PiBkbCArPSBbNV0KICAgID4+PiBkbCArIFs2XQogICAgWzEsIDIsIDUsIDZdCiAgICA+Pj4gZGwgKyAoNiwpCiAgICBbMSwgMiwgNSwgNl0KICAgID4+PiBkbC5pbnNlcnQoMCwgMCkKICAgID4+PiBkbAogICAgWzAsIDEsIDIsIDVdCiAgICA+Pj4gZGwgPT0gWzAsIDEsIDIsIDVdCiAgICBUcnVlCiAgICA+Pj4gZGwgPT0gKDAsIDEsIDIsIDUpCiAgICBUcnVlCiAgICA+Pj4gbGVuKHJlY3dhcm4pCiAgICAxCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIF93YXJuID0gZnVuY3Rvb2xzLnBhcnRpYWwoCiAgICAgICAgd2FybmluZ3Mud2FybiwKICAgICAgICAiRW50cnlQb2ludHMgbGlzdCBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZC4gQ2FzdCB0byBsaXN0IGlmIG5lZWRlZC4iLAogICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICBzdGFja2xldmVsPTIsCiAgICApCgogICAgZGVmIF93cmFwX2RlcHJlY2F0ZWRfbWV0aG9kKG1ldGhvZF9uYW1lOiBzdHIpOiAgIyB0eXBlOiBpZ25vcmUKICAgICAgICBkZWYgd3JhcHBlZChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICBzZWxmLl93YXJuKCkKICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc3VwZXIoKSwgbWV0aG9kX25hbWUpKCphcmdzLCAqKmt3YXJncykKCiAgICAgICAgcmV0dXJuIG1ldGhvZF9uYW1lLCB3cmFwcGVkCgogICAgbG9jYWxzKCkudXBkYXRlKAogICAgICAgIG1hcCgKICAgICAgICAgICAgX3dyYXBfZGVwcmVjYXRlZF9tZXRob2QsCiAgICAgICAgICAgICdfX3NldGl0ZW1fXyBfX2RlbGl0ZW1fXyBhcHBlbmQgcmV2ZXJzZSBleHRlbmQgcG9wIHJlbW92ZSAnCiAgICAgICAgICAgICdfX2lhZGRfXyBpbnNlcnQgc29ydCcuc3BsaXQoKSwKICAgICAgICApCiAgICApCgogICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCB0dXBsZSk6CiAgICAgICAgICAgIHNlbGYuX3dhcm4oKQogICAgICAgICAgICBvdGhlciA9IHR1cGxlKG90aGVyKQogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyh0dXBsZShzZWxmKSArIG90aGVyKQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCB0dXBsZSk6CiAgICAgICAgICAgIHNlbGYuX3dhcm4oKQogICAgICAgICAgICBvdGhlciA9IHR1cGxlKG90aGVyKQoKICAgICAgICByZXR1cm4gdHVwbGUoc2VsZikuX19lcV9fKG90aGVyKQoKCmNsYXNzIEVudHJ5UG9pbnRzKERlcHJlY2F0ZWRMaXN0KToKICAgICIiIgogICAgQW4gaW1tdXRhYmxlIGNvbGxlY3Rpb24gb2Ygc2VsZWN0YWJsZSBFbnRyeVBvaW50IG9iamVjdHMuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKTogICMgLT4gRW50cnlQb2ludDoKICAgICAgICAiIiIKICAgICAgICBHZXQgdGhlIEVudHJ5UG9pbnQgaW4gc2VsZiBtYXRjaGluZyBuYW1lLgogICAgICAgICIiIgogICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgaW50KToKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgZW50cnkgcG9pbnRzIGJ5IGluZGV4IGlzIGRlcHJlY2F0ZWQuICIKICAgICAgICAgICAgICAgICJDYXN0IHRvIHR1cGxlIGlmIG5lZWRlZC4iLAogICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yLAogICAgICAgICAgICApCiAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fZ2V0aXRlbV9fKG5hbWUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gbmV4dChpdGVyKHNlbGYuc2VsZWN0KG5hbWU9bmFtZSkpKQogICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICAgICByYWlzZSBLZXlFcnJvcihuYW1lKQoKICAgIGRlZiBzZWxlY3Qoc2VsZiwgKipwYXJhbXMpOgogICAgICAgICIiIgogICAgICAgIFNlbGVjdCBlbnRyeSBwb2ludHMgZnJvbSBzZWxmIHRoYXQgbWF0Y2ggdGhlCiAgICAgICAgZ2l2ZW4gcGFyYW1ldGVycyAodHlwaWNhbGx5IGdyb3VwIGFuZC9vciBuYW1lKS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gRW50cnlQb2ludHMoZXAgZm9yIGVwIGluIHNlbGYgaWYgZXAubWF0Y2hlcygqKnBhcmFtcykpCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZXMoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSBzZXQgb2YgYWxsIG5hbWVzIG9mIGFsbCBlbnRyeSBwb2ludHMuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHtlcC5uYW1lIGZvciBlcCBpbiBzZWxmfQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGdyb3VwcyhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIHNldCBvZiBhbGwgZ3JvdXBzIG9mIGFsbCBlbnRyeSBwb2ludHMuCgogICAgICAgIEZvciBjb3ZlcmFnZSB3aGlsZSBTZWxlY3RhYmxlR3JvdXBzIGlzIHByZXNlbnQuCiAgICAgICAgPj4+IEVudHJ5UG9pbnRzKCkuZ3JvdXBzCiAgICAgICAgc2V0KCkKICAgICAgICAiIiIKICAgICAgICByZXR1cm4ge2VwLmdyb3VwIGZvciBlcCBpbiBzZWxmfQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9mcm9tX3RleHRfZm9yKGNscywgdGV4dCwgZGlzdCk6CiAgICAgICAgcmV0dXJuIGNscyhlcC5fZm9yKGRpc3QpIGZvciBlcCBpbiBjbHMuX2Zyb21fdGV4dCh0ZXh0KSkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2Zyb21fdGV4dCh0ZXh0KToKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBFbnRyeVBvaW50KG5hbWU9aXRlbS52YWx1ZS5uYW1lLCB2YWx1ZT1pdGVtLnZhbHVlLnZhbHVlLCBncm91cD1pdGVtLm5hbWUpCiAgICAgICAgICAgIGZvciBpdGVtIGluIFNlY3Rpb25lZC5zZWN0aW9uX3BhaXJzKHRleHQgb3IgJycpCiAgICAgICAgKQoKCmNsYXNzIERlcHJlY2F0ZWQ6CiAgICAiIiIKICAgIENvbXBhdGliaWxpdHkgYWRkLWluIGZvciBtYXBwaW5nIHRvIGluZGljYXRlIHRoYXQKICAgIG1hcHBpbmcgYmVoYXZpb3IgaXMgZGVwcmVjYXRlZC4KCiAgICA+Pj4gcmVjd2FybiA9IGdldGZpeHR1cmUoJ3JlY3dhcm4nKQogICAgPj4+IGNsYXNzIERlcHJlY2F0ZWREaWN0KERlcHJlY2F0ZWQsIGRpY3QpOiBwYXNzCiAgICA+Pj4gZGQgPSBEZXByZWNhdGVkRGljdChmb289J2JhcicpCiAgICA+Pj4gZGQuZ2V0KCdiYXonLCBOb25lKQogICAgPj4+IGRkWydmb28nXQogICAgJ2JhcicKICAgID4+PiBsaXN0KGRkKQogICAgWydmb28nXQogICAgPj4+IGxpc3QoZGQua2V5cygpKQogICAgWydmb28nXQogICAgPj4+ICdmb28nIGluIGRkCiAgICBUcnVlCiAgICA+Pj4gbGlzdChkZC52YWx1ZXMoKSkKICAgIFsnYmFyJ10KICAgID4+PiBsZW4ocmVjd2FybikKICAgIDEKICAgICIiIgoKICAgIF93YXJuID0gZnVuY3Rvb2xzLnBhcnRpYWwoCiAgICAgICAgd2FybmluZ3Mud2FybiwKICAgICAgICAiU2VsZWN0YWJsZUdyb3VwcyBkaWN0IGludGVyZmFjZSBpcyBkZXByZWNhdGVkLiBVc2Ugc2VsZWN0LiIsCiAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgIHN0YWNrbGV2ZWw9MiwKICAgICkKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CiAgICAgICAgc2VsZi5fd2FybigpCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19nZXRpdGVtX18obmFtZSkKCiAgICBkZWYgZ2V0KHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgc2VsZi5fd2FybigpCiAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0KG5hbWUsIGRlZmF1bHQpCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgIHNlbGYuX3dhcm4oKQogICAgICAgIHJldHVybiBzdXBlcigpLl9faXRlcl9fKCkKCiAgICBkZWYgX19jb250YWluc19fKHNlbGYsICphcmdzKToKICAgICAgICBzZWxmLl93YXJuKCkKICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2NvbnRhaW5zX18oKmFyZ3MpCgogICAgZGVmIGtleXMoc2VsZik6CiAgICAgICAgc2VsZi5fd2FybigpCiAgICAgICAgcmV0dXJuIHN1cGVyKCkua2V5cygpCgogICAgZGVmIHZhbHVlcyhzZWxmKToKICAgICAgICBzZWxmLl93YXJuKCkKICAgICAgICByZXR1cm4gc3VwZXIoKS52YWx1ZXMoKQoKCmNsYXNzIFNlbGVjdGFibGVHcm91cHMoRGVwcmVjYXRlZCwgZGljdCk6CiAgICAiIiIKICAgIEEgYmFja3dhcmQtIGFuZCBmb3J3YXJkLWNvbXBhdGlibGUgcmVzdWx0IGZyb20KICAgIGVudHJ5X3BvaW50cyB0aGF0IGZ1bGx5IGltcGxlbWVudHMgdGhlIGRpY3QgaW50ZXJmYWNlLgogICAgIiIiCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgbG9hZChjbHMsIGVwcyk6CiAgICAgICAgYnlfZ3JvdXAgPSBvcGVyYXRvci5hdHRyZ2V0dGVyKCdncm91cCcpCiAgICAgICAgb3JkZXJlZCA9IHNvcnRlZChlcHMsIGtleT1ieV9ncm91cCkKICAgICAgICBncm91cGVkID0gaXRlcnRvb2xzLmdyb3VwYnkob3JkZXJlZCwgYnlfZ3JvdXApCiAgICAgICAgcmV0dXJuIGNscygoZ3JvdXAsIEVudHJ5UG9pbnRzKGVwcykpIGZvciBncm91cCwgZXBzIGluIGdyb3VwZWQpCgogICAgQHByb3BlcnR5CiAgICBkZWYgX2FsbChzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZWNvbnN0cnVjdCBhIGxpc3Qgb2YgYWxsIGVudHJ5cG9pbnRzIGZyb20gdGhlIGdyb3Vwcy4KICAgICAgICAiIiIKICAgICAgICBncm91cHMgPSBzdXBlcihEZXByZWNhdGVkLCBzZWxmKS52YWx1ZXMoKQogICAgICAgIHJldHVybiBFbnRyeVBvaW50cyhpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZShncm91cHMpKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGdyb3VwcyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYWxsLmdyb3VwcwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5hbWVzKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIGZvciBjb3ZlcmFnZToKICAgICAgICA+Pj4gU2VsZWN0YWJsZUdyb3VwcygpLm5hbWVzCiAgICAgICAgc2V0KCkKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5fYWxsLm5hbWVzCgogICAgZGVmIHNlbGVjdChzZWxmLCAqKnBhcmFtcyk6CiAgICAgICAgaWYgbm90IHBhcmFtczoKICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICByZXR1cm4gc2VsZi5fYWxsLnNlbGVjdCgqKnBhcmFtcykKCgpjbGFzcyBQYWNrYWdlUGF0aChwYXRobGliLlB1cmVQb3NpeFBhdGgpOgogICAgIiIiQSByZWZlcmVuY2UgdG8gYSBwYXRoIGluIGEgcGFja2FnZSIiIgoKICAgIGRlZiByZWFkX3RleHQoc2VsZiwgZW5jb2Rpbmc9J3V0Zi04Jyk6CiAgICAgICAgd2l0aCBzZWxmLmxvY2F0ZSgpLm9wZW4oZW5jb2Rpbmc9ZW5jb2RpbmcpIGFzIHN0cmVhbToKICAgICAgICAgICAgcmV0dXJuIHN0cmVhbS5yZWFkKCkKCiAgICBkZWYgcmVhZF9iaW5hcnkoc2VsZik6CiAgICAgICAgd2l0aCBzZWxmLmxvY2F0ZSgpLm9wZW4oJ3JiJykgYXMgc3RyZWFtOgogICAgICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWQoKQoKICAgIGRlZiBsb2NhdGUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgcGF0aC1saWtlIG9iamVjdCBmb3IgdGhpcyBwYXRoIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZGlzdC5sb2NhdGVfZmlsZShzZWxmKQoKCmNsYXNzIEZpbGVIYXNoOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWMpOgogICAgICAgIHNlbGYubW9kZSwgXywgc2VsZi52YWx1ZSA9IHNwZWMucGFydGl0aW9uKCc9JykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYnPEZpbGVIYXNoIG1vZGU6IHtzZWxmLm1vZGV9IHZhbHVlOiB7c2VsZi52YWx1ZX0+JwoKCmNsYXNzIERpc3RyaWJ1dGlvbjoKICAgICIiIkEgUHl0aG9uIGRpc3RyaWJ1dGlvbiBwYWNrYWdlLiIiIgoKICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgIGRlZiByZWFkX3RleHQoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICIiIkF0dGVtcHQgdG8gbG9hZCBtZXRhZGF0YSBmaWxlIGdpdmVuIGJ5IHRoZSBuYW1lLgoKICAgICAgICA6cGFyYW0gZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBkaXN0cmlidXRpb24gaW5mby4KICAgICAgICA6cmV0dXJuOiBUaGUgdGV4dCBpZiBmb3VuZCwgb3RoZXJ3aXNlIE5vbmUuCiAgICAgICAgIiIiCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgZGVmIGxvY2F0ZV9maWxlKHNlbGYsIHBhdGgpOgogICAgICAgICIiIgogICAgICAgIEdpdmVuIGEgcGF0aCB0byBhIGZpbGUgaW4gdGhpcyBkaXN0cmlidXRpb24sIHJldHVybiBhIHBhdGgKICAgICAgICB0byBpdC4KICAgICAgICAiIiIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmcm9tX25hbWUoY2xzLCBuYW1lOiBzdHIpOgogICAgICAgICIiIlJldHVybiB0aGUgRGlzdHJpYnV0aW9uIGZvciB0aGUgZ2l2ZW4gcGFja2FnZSBuYW1lLgoKICAgICAgICA6cGFyYW0gbmFtZTogVGhlIG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIHRvIHNlYXJjaCBmb3IuCiAgICAgICAgOnJldHVybjogVGhlIERpc3RyaWJ1dGlvbiBpbnN0YW5jZSAob3Igc3ViY2xhc3MgdGhlcmVvZikgZm9yIHRoZSBuYW1lZAogICAgICAgICAgICBwYWNrYWdlLCBpZiBmb3VuZC4KICAgICAgICA6cmFpc2VzIFBhY2thZ2VOb3RGb3VuZEVycm9yOiBXaGVuIHRoZSBuYW1lZCBwYWNrYWdlJ3MgZGlzdHJpYnV0aW9uCiAgICAgICAgICAgIG1ldGFkYXRhIGNhbm5vdCBiZSBmb3VuZC4KICAgICAgICA6cmFpc2VzIFZhbHVlRXJyb3I6IFdoZW4gYW4gaW52YWxpZCB2YWx1ZSBpcyBzdXBwbGllZCBmb3IgbmFtZS4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgbmFtZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQSBkaXN0cmlidXRpb24gbmFtZSBpcyByZXF1aXJlZC4iKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIG5leHQoY2xzLmRpc2NvdmVyKG5hbWU9bmFtZSkpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHJhaXNlIFBhY2thZ2VOb3RGb3VuZEVycm9yKG5hbWUpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZGlzY292ZXIoY2xzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhYmxlIG9mIERpc3RyaWJ1dGlvbiBvYmplY3RzIGZvciBhbGwgcGFja2FnZXMuCgogICAgICAgIFBhc3MgYSBgYGNvbnRleHRgYCBvciBwYXNzIGtleXdvcmQgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RpbmcKICAgICAgICBhIGNvbnRleHQuCgogICAgICAgIDpjb250ZXh0OiBBIGBgRGlzdHJpYnV0aW9uRmluZGVyLkNvbnRleHRgYCBvYmplY3QuCiAgICAgICAgOnJldHVybjogSXRlcmFibGUgb2YgRGlzdHJpYnV0aW9uIG9iamVjdHMgZm9yIGFsbCBwYWNrYWdlcy4KICAgICAgICAiIiIKICAgICAgICBjb250ZXh0ID0ga3dhcmdzLnBvcCgnY29udGV4dCcsIE5vbmUpCiAgICAgICAgaWYgY29udGV4dCBhbmQga3dhcmdzOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgYWNjZXB0IGNvbnRleHQgYW5kIGt3YXJncyIpCiAgICAgICAgY29udGV4dCA9IGNvbnRleHQgb3IgRGlzdHJpYnV0aW9uRmluZGVyLkNvbnRleHQoKiprd2FyZ3MpCiAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAogICAgICAgICAgICByZXNvbHZlcihjb250ZXh0KSBmb3IgcmVzb2x2ZXIgaW4gY2xzLl9kaXNjb3Zlcl9yZXNvbHZlcnMoKQogICAgICAgICkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgYXQocGF0aCk6CiAgICAgICAgIiIiUmV0dXJuIGEgRGlzdHJpYnV0aW9uIGZvciB0aGUgaW5kaWNhdGVkIG1ldGFkYXRhIHBhdGgKCiAgICAgICAgOnBhcmFtIHBhdGg6IGEgc3RyaW5nIG9yIHBhdGgtbGlrZSBvYmplY3QKICAgICAgICA6cmV0dXJuOiBhIGNvbmNyZXRlIERpc3RyaWJ1dGlvbiBpbnN0YW5jZSBmb3IgdGhlIHBhdGgKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gUGF0aERpc3RyaWJ1dGlvbihwYXRobGliLlBhdGgocGF0aCkpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9kaXNjb3Zlcl9yZXNvbHZlcnMoKToKICAgICAgICAiIiJTZWFyY2ggdGhlIG1ldGFfcGF0aCBmb3IgcmVzb2x2ZXJzLiIiIgogICAgICAgIGRlY2xhcmVkID0gKAogICAgICAgICAgICBnZXRhdHRyKGZpbmRlciwgJ2ZpbmRfZGlzdHJpYnV0aW9ucycsIE5vbmUpIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aAogICAgICAgICkKICAgICAgICByZXR1cm4gZmlsdGVyKE5vbmUsIGRlY2xhcmVkKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG1ldGFkYXRhKHNlbGYpIC0+IF9tZXRhLlBhY2thZ2VNZXRhZGF0YToKICAgICAgICAiIiJSZXR1cm4gdGhlIHBhcnNlZCBtZXRhZGF0YSBmb3IgdGhpcyBEaXN0cmlidXRpb24uCgogICAgICAgIFRoZSByZXR1cm5lZCBvYmplY3Qgd2lsbCBoYXZlIGtleXMgdGhhdCBuYW1lIHRoZSB2YXJpb3VzIGJpdHMgb2YKICAgICAgICBtZXRhZGF0YS4gIFNlZSBQRVAgNTY2IGZvciBkZXRhaWxzLgogICAgICAgICIiIgogICAgICAgIHRleHQgPSAoCiAgICAgICAgICAgIHNlbGYucmVhZF90ZXh0KCdNRVRBREFUQScpCiAgICAgICAgICAgIG9yIHNlbGYucmVhZF90ZXh0KCdQS0ctSU5GTycpCiAgICAgICAgICAgICMgVGhpcyBsYXN0IGNsYXVzZSBpcyBoZXJlIHRvIHN1cHBvcnQgb2xkIGVnZy1pbmZvIGZpbGVzLiAgSXRzCiAgICAgICAgICAgICMgZWZmZWN0IGlzIHRvIGp1c3QgZW5kIHVwIHVzaW5nIHRoZSBQYXRoRGlzdHJpYnV0aW9uJ3Mgc2VsZi5fcGF0aAogICAgICAgICAgICAjICh3aGljaCBwb2ludHMgdG8gdGhlIGVnZy1pbmZvIGZpbGUpIGF0dHJpYnV0ZSB1bmNoYW5nZWQuCiAgICAgICAgICAgIG9yIHNlbGYucmVhZF90ZXh0KCcnKQogICAgICAgICkKICAgICAgICByZXR1cm4gX2FkYXB0ZXJzLk1lc3NhZ2UoZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyh0ZXh0KSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgJ05hbWUnIG1ldGFkYXRhIGZvciB0aGUgZGlzdHJpYnV0aW9uIHBhY2thZ2UuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYubWV0YWRhdGFbJ05hbWUnXQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9ub3JtYWxpemVkX25hbWUoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGEgbm9ybWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBuYW1lLiIiIgogICAgICAgIHJldHVybiBQcmVwYXJlZC5ub3JtYWxpemUoc2VsZi5uYW1lKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZlcnNpb24oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSAnVmVyc2lvbicgbWV0YWRhdGEgZm9yIHRoZSBkaXN0cmlidXRpb24gcGFja2FnZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5tZXRhZGF0YVsnVmVyc2lvbiddCgogICAgQHByb3BlcnR5CiAgICBkZWYgZW50cnlfcG9pbnRzKHNlbGYpOgogICAgICAgIHJldHVybiBFbnRyeVBvaW50cy5fZnJvbV90ZXh0X2ZvcihzZWxmLnJlYWRfdGV4dCgnZW50cnlfcG9pbnRzLnR4dCcpLCBzZWxmKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGZpbGVzKHNlbGYpOgogICAgICAgICIiIkZpbGVzIGluIHRoaXMgZGlzdHJpYnV0aW9uLgoKICAgICAgICA6cmV0dXJuOiBMaXN0IG9mIFBhY2thZ2VQYXRoIGZvciB0aGlzIGRpc3RyaWJ1dGlvbiBvciBOb25lCgogICAgICAgIFJlc3VsdCBpcyBgTm9uZWAgaWYgdGhlIG1ldGFkYXRhIGZpbGUgdGhhdCBlbnVtZXJhdGVzIGZpbGVzCiAgICAgICAgKGkuZS4gUkVDT1JEIGZvciBkaXN0LWluZm8gb3IgU09VUkNFUy50eHQgZm9yIGVnZy1pbmZvKSBpcwogICAgICAgIG1pc3NpbmcuCiAgICAgICAgUmVzdWx0IG1heSBiZSBlbXB0eSBpZiB0aGUgbWV0YWRhdGEgZXhpc3RzIGJ1dCBpcyBlbXB0eS4KICAgICAgICAiIiIKCiAgICAgICAgZGVmIG1ha2VfZmlsZShuYW1lLCBoYXNoPU5vbmUsIHNpemVfc3RyPU5vbmUpOgogICAgICAgICAgICByZXN1bHQgPSBQYWNrYWdlUGF0aChuYW1lKQogICAgICAgICAgICByZXN1bHQuaGFzaCA9IEZpbGVIYXNoKGhhc2gpIGlmIGhhc2ggZWxzZSBOb25lCiAgICAgICAgICAgIHJlc3VsdC5zaXplID0gaW50KHNpemVfc3RyKSBpZiBzaXplX3N0ciBlbHNlIE5vbmUKICAgICAgICAgICAgcmVzdWx0LmRpc3QgPSBzZWxmCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICAgICAgQHBhc3Nfbm9uZQogICAgICAgIGRlZiBtYWtlX2ZpbGVzKGxpbmVzKToKICAgICAgICAgICAgcmV0dXJuIGxpc3Qoc3Rhcm1hcChtYWtlX2ZpbGUsIGNzdi5yZWFkZXIobGluZXMpKSkKCiAgICAgICAgcmV0dXJuIG1ha2VfZmlsZXMoc2VsZi5fcmVhZF9maWxlc19kaXN0aW5mbygpIG9yIHNlbGYuX3JlYWRfZmlsZXNfZWdnaW5mbygpKQoKICAgIGRlZiBfcmVhZF9maWxlc19kaXN0aW5mbyhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBSZWFkIHRoZSBsaW5lcyBvZiBSRUNPUkQKICAgICAgICAiIiIKICAgICAgICB0ZXh0ID0gc2VsZi5yZWFkX3RleHQoJ1JFQ09SRCcpCiAgICAgICAgcmV0dXJuIHRleHQgYW5kIHRleHQuc3BsaXRsaW5lcygpCgogICAgZGVmIF9yZWFkX2ZpbGVzX2VnZ2luZm8oc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgU09VUkNFUy50eHQgbWlnaHQgY29udGFpbiBsaXRlcmFsIGNvbW1hcywgc28gd3JhcCBlYWNoIGxpbmUKICAgICAgICBpbiBxdW90ZXMuCiAgICAgICAgIiIiCiAgICAgICAgdGV4dCA9IHNlbGYucmVhZF90ZXh0KCdTT1VSQ0VTLnR4dCcpCiAgICAgICAgcmV0dXJuIHRleHQgYW5kIG1hcCgnInt9IicuZm9ybWF0LCB0ZXh0LnNwbGl0bGluZXMoKSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiByZXF1aXJlcyhzZWxmKToKICAgICAgICAiIiJHZW5lcmF0ZWQgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBmb3IgdGhpcyBEaXN0cmlidXRpb24iIiIKICAgICAgICByZXFzID0gc2VsZi5fcmVhZF9kaXN0X2luZm9fcmVxcygpIG9yIHNlbGYuX3JlYWRfZWdnX2luZm9fcmVxcygpCiAgICAgICAgcmV0dXJuIHJlcXMgYW5kIGxpc3QocmVxcykKCiAgICBkZWYgX3JlYWRfZGlzdF9pbmZvX3JlcXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubWV0YWRhdGEuZ2V0X2FsbCgnUmVxdWlyZXMtRGlzdCcpCgogICAgZGVmIF9yZWFkX2VnZ19pbmZvX3JlcXMoc2VsZik6CiAgICAgICAgc291cmNlID0gc2VsZi5yZWFkX3RleHQoJ3JlcXVpcmVzLnR4dCcpCiAgICAgICAgcmV0dXJuIHBhc3Nfbm9uZShzZWxmLl9kZXBzX2Zyb21fcmVxdWlyZXNfdGV4dCkoc291cmNlKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9kZXBzX2Zyb21fcmVxdWlyZXNfdGV4dChjbHMsIHNvdXJjZSk6CiAgICAgICAgcmV0dXJuIGNscy5fY29udmVydF9lZ2dfaW5mb19yZXFzX3RvX3NpbXBsZV9yZXFzKFNlY3Rpb25lZC5yZWFkKHNvdXJjZSkpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9jb252ZXJ0X2VnZ19pbmZvX3JlcXNfdG9fc2ltcGxlX3JlcXMoc2VjdGlvbnMpOgogICAgICAgICIiIgogICAgICAgIEhpc3RvcmljYWxseSwgc2V0dXB0b29scyB3b3VsZCBzb2xpY2l0IGFuZCBzdG9yZSAnZXh0cmEnCiAgICAgICAgcmVxdWlyZW1lbnRzLCBpbmNsdWRpbmcgdGhvc2Ugd2l0aCBlbnZpcm9ubWVudCBtYXJrZXJzLAogICAgICAgIGluIHNlcGFyYXRlIHNlY3Rpb25zLiBNb3JlIG1vZGVybiB0b29scyBleHBlY3QgZWFjaAogICAgICAgIGRlcGVuZGVuY3kgdG8gYmUgZGVmaW5lZCBzZXBhcmF0ZWx5LCB3aXRoIGFueSByZWxldmFudAogICAgICAgIGV4dHJhcyBhbmQgZW52aXJvbm1lbnQgbWFya2VycyBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGF0CiAgICAgICAgcmVxdWlyZW1lbnQuIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBmb3JtZXIgdG8gdGhlCiAgICAgICAgbGF0dGVyLiBTZWUgX3Rlc3RfZGVwc19mcm9tX3JlcXVpcmVzX3RleHQgZm9yIGFuIGV4YW1wbGUuCiAgICAgICAgIiIiCgogICAgICAgIGRlZiBtYWtlX2NvbmRpdGlvbihuYW1lKToKICAgICAgICAgICAgcmV0dXJuIG5hbWUgYW5kIGYnZXh0cmEgPT0gIntuYW1lfSInCgogICAgICAgIGRlZiBxdW90ZWRfbWFya2VyKHNlY3Rpb24pOgogICAgICAgICAgICBzZWN0aW9uID0gc2VjdGlvbiBvciAnJwogICAgICAgICAgICBleHRyYSwgc2VwLCBtYXJrZXJzID0gc2VjdGlvbi5wYXJ0aXRpb24oJzonKQogICAgICAgICAgICBpZiBleHRyYSBhbmQgbWFya2VyczoKICAgICAgICAgICAgICAgIG1hcmtlcnMgPSBmJyh7bWFya2Vyc30pJwogICAgICAgICAgICBjb25kaXRpb25zID0gbGlzdChmaWx0ZXIoTm9uZSwgW21hcmtlcnMsIG1ha2VfY29uZGl0aW9uKGV4dHJhKV0pKQogICAgICAgICAgICByZXR1cm4gJzsgJyArICcgYW5kICcuam9pbihjb25kaXRpb25zKSBpZiBjb25kaXRpb25zIGVsc2UgJycKCiAgICAgICAgZGVmIHVybF9yZXFfc3BhY2UocmVxKToKICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIFBFUCA1MDggcmVxdWlyZXMgYSBzcGFjZSBiZXR3ZWVuIHRoZSB1cmxfc3BlYyBhbmQgdGhlIHF1b3RlZF9tYXJrZXIuCiAgICAgICAgICAgIFJlZiBweXRob24vaW1wb3J0bGliX21ldGFkYXRhIzM1Ny4KICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICMgJ0AnIGlzIHVuaXF1ZWx5IGluZGljYXRpdmUgb2YgYSB1cmxfcmVxLgogICAgICAgICAgICByZXR1cm4gJyAnICogKCdAJyBpbiByZXEpCgogICAgICAgIGZvciBzZWN0aW9uIGluIHNlY3Rpb25zOgogICAgICAgICAgICBzcGFjZSA9IHVybF9yZXFfc3BhY2Uoc2VjdGlvbi52YWx1ZSkKICAgICAgICAgICAgeWllbGQgc2VjdGlvbi52YWx1ZSArIHNwYWNlICsgcXVvdGVkX21hcmtlcihzZWN0aW9uLm5hbWUpCgoKY2xhc3MgRGlzdHJpYnV0aW9uRmluZGVyKE1ldGFQYXRoRmluZGVyKToKICAgICIiIgogICAgQSBNZXRhUGF0aEZpbmRlciBjYXBhYmxlIG9mIGRpc2NvdmVyaW5nIGluc3RhbGxlZCBkaXN0cmlidXRpb25zLgogICAgIiIiCgogICAgY2xhc3MgQ29udGV4dDoKICAgICAgICAiIiIKICAgICAgICBLZXl3b3JkIGFyZ3VtZW50cyBwcmVzZW50ZWQgYnkgdGhlIGNhbGxlciB0bwogICAgICAgIGBgZGlzdHJpYnV0aW9ucygpYGAgb3IgYGBEaXN0cmlidXRpb24uZGlzY292ZXIoKWBgCiAgICAgICAgdG8gbmFycm93IHRoZSBzY29wZSBvZiBhIHNlYXJjaCBmb3IgZGlzdHJpYnV0aW9ucwogICAgICAgIGluIGFsbCBEaXN0cmlidXRpb25GaW5kZXJzLgoKICAgICAgICBFYWNoIERpc3RyaWJ1dGlvbkZpbmRlciBtYXkgZXhwZWN0IGFueSBwYXJhbWV0ZXJzCiAgICAgICAgYW5kIHNob3VsZCBhdHRlbXB0IHRvIGhvbm9yIHRoZSBjYW5vbmljYWwKICAgICAgICBwYXJhbWV0ZXJzIGRlZmluZWQgYmVsb3cgd2hlbiBhcHByb3ByaWF0ZS4KICAgICAgICAiIiIKCiAgICAgICAgbmFtZSA9IE5vbmUKICAgICAgICAiIiIKICAgICAgICBTcGVjaWZpYyBuYW1lIGZvciB3aGljaCBhIGRpc3RyaWJ1dGlvbiBmaW5kZXIgc2hvdWxkIG1hdGNoLgogICAgICAgIEEgbmFtZSBvZiBgYE5vbmVgYCBtYXRjaGVzIGFsbCBkaXN0cmlidXRpb25zLgogICAgICAgICIiIgoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICAgICB2YXJzKHNlbGYpLnVwZGF0ZShrd2FyZ3MpCgogICAgICAgIEBwcm9wZXJ0eQogICAgICAgIGRlZiBwYXRoKHNlbGYpOgogICAgICAgICAgICAiIiIKICAgICAgICAgICAgVGhlIHNlcXVlbmNlIG9mIGRpcmVjdG9yeSBwYXRoIHRoYXQgYSBkaXN0cmlidXRpb24gZmluZGVyCiAgICAgICAgICAgIHNob3VsZCBzZWFyY2guCgogICAgICAgICAgICBUeXBpY2FsbHkgcmVmZXJzIHRvIFB5dGhvbiBpbnN0YWxsZWQgcGFja2FnZSBwYXRocyBzdWNoIGFzCiAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIiBkaXJlY3RvcmllcyBhbmQgZGVmYXVsdHMgdG8gYGBzeXMucGF0aGBgLgogICAgICAgICAgICAiIiIKICAgICAgICAgICAgcmV0dXJuIHZhcnMoc2VsZikuZ2V0KCdwYXRoJywgc3lzLnBhdGgpCgogICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgZGVmIGZpbmRfZGlzdHJpYnV0aW9ucyhzZWxmLCBjb250ZXh0PUNvbnRleHQoKSk6CiAgICAgICAgIiIiCiAgICAgICAgRmluZCBkaXN0cmlidXRpb25zLgoKICAgICAgICBSZXR1cm4gYW4gaXRlcmFibGUgb2YgYWxsIERpc3RyaWJ1dGlvbiBpbnN0YW5jZXMgY2FwYWJsZSBvZgogICAgICAgIGxvYWRpbmcgdGhlIG1ldGFkYXRhIGZvciBwYWNrYWdlcyBtYXRjaGluZyB0aGUgYGBjb250ZXh0YGAsCiAgICAgICAgYSBEaXN0cmlidXRpb25GaW5kZXIuQ29udGV4dCBpbnN0YW5jZS4KICAgICAgICAiIiIKCgpjbGFzcyBGYXN0UGF0aDoKICAgICIiIgogICAgTWljcm8tb3B0aW1pemVkIGNsYXNzIGZvciBzZWFyY2hpbmcgYSBwYXRoIGZvcgogICAgY2hpbGRyZW4uCgogICAgPj4+IEZhc3RQYXRoKCcnKS5jaGlsZHJlbigpCiAgICBbJy4uLiddCiAgICAiIiIKCiAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpICAjIHR5cGU6IGlnbm9yZQogICAgZGVmIF9fbmV3X18oY2xzLCByb290KToKICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCk6CiAgICAgICAgc2VsZi5yb290ID0gcm9vdAoKICAgIGRlZiBqb2lucGF0aChzZWxmLCBjaGlsZCk6CiAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzZWxmLnJvb3QsIGNoaWxkKQoKICAgIGRlZiBjaGlsZHJlbihzZWxmKToKICAgICAgICB3aXRoIHN1cHByZXNzKEV4Y2VwdGlvbik6CiAgICAgICAgICAgIHJldHVybiBvcy5saXN0ZGlyKHNlbGYucm9vdCBvciAnLicpCiAgICAgICAgd2l0aCBzdXBwcmVzcyhFeGNlcHRpb24pOgogICAgICAgICAgICByZXR1cm4gc2VsZi56aXBfY2hpbGRyZW4oKQogICAgICAgIHJldHVybiBbXQoKICAgIGRlZiB6aXBfY2hpbGRyZW4oc2VsZik6CiAgICAgICAgemlwX3BhdGggPSB6aXBmaWxlLlBhdGgoc2VsZi5yb290KQogICAgICAgIG5hbWVzID0gemlwX3BhdGgucm9vdC5uYW1lbGlzdCgpCiAgICAgICAgc2VsZi5qb2lucGF0aCA9IHppcF9wYXRoLmpvaW5wYXRoCgogICAgICAgIHJldHVybiBkaWN0LmZyb21rZXlzKGNoaWxkLnNwbGl0KHBvc2l4cGF0aC5zZXAsIDEpWzBdIGZvciBjaGlsZCBpbiBuYW1lcykKCiAgICBkZWYgc2VhcmNoKHNlbGYsIG5hbWUpOgogICAgICAgIHJldHVybiBzZWxmLmxvb2t1cChzZWxmLm10aW1lKS5zZWFyY2gobmFtZSkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBtdGltZShzZWxmKToKICAgICAgICB3aXRoIHN1cHByZXNzKE9TRXJyb3IpOgogICAgICAgICAgICByZXR1cm4gb3Muc3RhdChzZWxmLnJvb3QpLnN0X210aW1lCiAgICAgICAgc2VsZi5sb29rdXAuY2FjaGVfY2xlYXIoKQoKICAgIEBtZXRob2RfY2FjaGUKICAgIGRlZiBsb29rdXAoc2VsZiwgbXRpbWUpOgogICAgICAgIHJldHVybiBMb29rdXAoc2VsZikKCgpjbGFzcyBMb29rdXA6CiAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aDogRmFzdFBhdGgpOgogICAgICAgIGJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgucm9vdCkubG93ZXIoKQogICAgICAgIGJhc2VfaXNfZWdnID0gYmFzZS5lbmRzd2l0aCgiLmVnZyIpCiAgICAgICAgc2VsZi5pbmZvcyA9IEZyZWV6YWJsZURlZmF1bHREaWN0KGxpc3QpCiAgICAgICAgc2VsZi5lZ2dzID0gRnJlZXphYmxlRGVmYXVsdERpY3QobGlzdCkKCiAgICAgICAgZm9yIGNoaWxkIGluIHBhdGguY2hpbGRyZW4oKToKICAgICAgICAgICAgbG93ID0gY2hpbGQubG93ZXIoKQogICAgICAgICAgICBpZiBsb3cuZW5kc3dpdGgoKCIuZGlzdC1pbmZvIiwgIi5lZ2ctaW5mbyIpKToKICAgICAgICAgICAgICAgICMgcnBhcnRpdGlvbiBpcyBmYXN0ZXIgdGhhbiBzcGxpdGV4dCBhbmQgc3VpdGFibGUgZm9yIHRoaXMgcHVycG9zZS4KICAgICAgICAgICAgICAgIG5hbWUgPSBsb3cucnBhcnRpdGlvbigiLiIpWzBdLnBhcnRpdGlvbigiLSIpWzBdCiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gUHJlcGFyZWQubm9ybWFsaXplKG5hbWUpCiAgICAgICAgICAgICAgICBzZWxmLmluZm9zW25vcm1hbGl6ZWRdLmFwcGVuZChwYXRoLmpvaW5wYXRoKGNoaWxkKSkKICAgICAgICAgICAgZWxpZiBiYXNlX2lzX2VnZyBhbmQgbG93ID09ICJlZ2ctaW5mbyI6CiAgICAgICAgICAgICAgICBuYW1lID0gYmFzZS5ycGFydGl0aW9uKCIuIilbMF0ucGFydGl0aW9uKCItIilbMF0KICAgICAgICAgICAgICAgIGxlZ2FjeV9ub3JtYWxpemVkID0gUHJlcGFyZWQubGVnYWN5X25vcm1hbGl6ZShuYW1lKQogICAgICAgICAgICAgICAgc2VsZi5lZ2dzW2xlZ2FjeV9ub3JtYWxpemVkXS5hcHBlbmQocGF0aC5qb2lucGF0aChjaGlsZCkpCgogICAgICAgIHNlbGYuaW5mb3MuZnJlZXplKCkKICAgICAgICBzZWxmLmVnZ3MuZnJlZXplKCkKCiAgICBkZWYgc2VhcmNoKHNlbGYsIHByZXBhcmVkKToKICAgICAgICBpbmZvcyA9ICgKICAgICAgICAgICAgc2VsZi5pbmZvc1twcmVwYXJlZC5ub3JtYWxpemVkXQogICAgICAgICAgICBpZiBwcmVwYXJlZAogICAgICAgICAgICBlbHNlIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKHNlbGYuaW5mb3MudmFsdWVzKCkpCiAgICAgICAgKQogICAgICAgIGVnZ3MgPSAoCiAgICAgICAgICAgIHNlbGYuZWdnc1twcmVwYXJlZC5sZWdhY3lfbm9ybWFsaXplZF0KICAgICAgICAgICAgaWYgcHJlcGFyZWQKICAgICAgICAgICAgZWxzZSBpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZShzZWxmLmVnZ3MudmFsdWVzKCkpCiAgICAgICAgKQogICAgICAgIHJldHVybiBpdGVydG9vbHMuY2hhaW4oaW5mb3MsIGVnZ3MpCgoKY2xhc3MgUHJlcGFyZWQ6CiAgICAiIiIKICAgIEEgcHJlcGFyZWQgc2VhcmNoIGZvciBtZXRhZGF0YSBvbiBhIHBvc3NpYmx5LW5hbWVkIHBhY2thZ2UuCiAgICAiIiIKCiAgICBub3JtYWxpemVkID0gTm9uZQogICAgbGVnYWN5X25vcm1hbGl6ZWQgPSBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHNlbGYubm9ybWFsaXplZCA9IHNlbGYubm9ybWFsaXplKG5hbWUpCiAgICAgICAgc2VsZi5sZWdhY3lfbm9ybWFsaXplZCA9IHNlbGYubGVnYWN5X25vcm1hbGl6ZShuYW1lKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBub3JtYWxpemUobmFtZSk6CiAgICAgICAgIiIiCiAgICAgICAgUEVQIDUwMyBub3JtYWxpemF0aW9uIHBsdXMgZGFzaGVzIGFzIHVuZGVyc2NvcmVzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiByZS5zdWIociJbLV8uXSsiLCAiLSIsIG5hbWUpLmxvd2VyKCkucmVwbGFjZSgnLScsICdfJykKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgbGVnYWN5X25vcm1hbGl6ZShuYW1lKToKICAgICAgICAiIiIKICAgICAgICBOb3JtYWxpemUgdGhlIHBhY2thZ2UgbmFtZSBhcyBmb3VuZCBpbiB0aGUgY29udmVudGlvbiBpbgogICAgICAgIG9sZGVyIHBhY2thZ2luZyB0b29scyB2ZXJzaW9ucyBhbmQgc3BlY3MuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIG5hbWUubG93ZXIoKS5yZXBsYWNlKCctJywgJ18nKQoKICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKICAgICAgICByZXR1cm4gYm9vbChzZWxmLm5hbWUpCgoKY2xhc3MgTWV0YWRhdGFQYXRoRmluZGVyKERpc3RyaWJ1dGlvbkZpbmRlcik6CiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBmaW5kX2Rpc3RyaWJ1dGlvbnMoY2xzLCBjb250ZXh0PURpc3RyaWJ1dGlvbkZpbmRlci5Db250ZXh0KCkpOgogICAgICAgICIiIgogICAgICAgIEZpbmQgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgUmV0dXJuIGFuIGl0ZXJhYmxlIG9mIGFsbCBEaXN0cmlidXRpb24gaW5zdGFuY2VzIGNhcGFibGUgb2YKICAgICAgICBsb2FkaW5nIHRoZSBtZXRhZGF0YSBmb3IgcGFja2FnZXMgbWF0Y2hpbmcgYGBjb250ZXh0Lm5hbWVgYAogICAgICAgIChvciBhbGwgbmFtZXMgaWYgYGBOb25lYGAgaW5kaWNhdGVkKSBhbG9uZyB0aGUgcGF0aHMgaW4gdGhlIGxpc3QKICAgICAgICBvZiBkaXJlY3RvcmllcyBgYGNvbnRleHQucGF0aGBgLgogICAgICAgICIiIgogICAgICAgIGZvdW5kID0gY2xzLl9zZWFyY2hfcGF0aHMoY29udGV4dC5uYW1lLCBjb250ZXh0LnBhdGgpCiAgICAgICAgcmV0dXJuIG1hcChQYXRoRGlzdHJpYnV0aW9uLCBmb3VuZCkKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfc2VhcmNoX3BhdGhzKGNscywgbmFtZSwgcGF0aHMpOgogICAgICAgICIiIkZpbmQgbWV0YWRhdGEgZGlyZWN0b3JpZXMgaW4gcGF0aHMgaGV1cmlzdGljYWxseS4iIiIKICAgICAgICBwcmVwYXJlZCA9IFByZXBhcmVkKG5hbWUpCiAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAogICAgICAgICAgICBwYXRoLnNlYXJjaChwcmVwYXJlZCkgZm9yIHBhdGggaW4gbWFwKEZhc3RQYXRoLCBwYXRocykKICAgICAgICApCgogICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKGNscyk6CiAgICAgICAgRmFzdFBhdGguX19uZXdfXy5jYWNoZV9jbGVhcigpCgoKY2xhc3MgUGF0aERpc3RyaWJ1dGlvbihEaXN0cmlidXRpb24pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg6IFNpbXBsZVBhdGgpOgogICAgICAgICIiIkNvbnN0cnVjdCBhIGRpc3RyaWJ1dGlvbi4KCiAgICAgICAgOnBhcmFtIHBhdGg6IFNpbXBsZVBhdGggaW5kaWNhdGluZyB0aGUgbWV0YWRhdGEgZGlyZWN0b3J5LgogICAgICAgICIiIgogICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCgogICAgZGVmIHJlYWRfdGV4dChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgd2l0aCBzdXBwcmVzcygKICAgICAgICAgICAgRmlsZU5vdEZvdW5kRXJyb3IsCiAgICAgICAgICAgIElzQURpcmVjdG9yeUVycm9yLAogICAgICAgICAgICBLZXlFcnJvciwKICAgICAgICAgICAgTm90QURpcmVjdG9yeUVycm9yLAogICAgICAgICAgICBQZXJtaXNzaW9uRXJyb3IsCiAgICAgICAgKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGguam9pbnBhdGgoZmlsZW5hbWUpLnJlYWRfdGV4dChlbmNvZGluZz0ndXRmLTgnKQoKICAgIHJlYWRfdGV4dC5fX2RvY19fID0gRGlzdHJpYnV0aW9uLnJlYWRfdGV4dC5fX2RvY19fCgogICAgZGVmIGxvY2F0ZV9maWxlKHNlbGYsIHBhdGgpOgogICAgICAgIHJldHVybiBzZWxmLl9wYXRoLnBhcmVudCAvIHBhdGgKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfbm9ybWFsaXplZF9uYW1lKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjogd2hlcmUgcG9zc2libGUsIHJlc29sdmUgdGhlCiAgICAgICAgbm9ybWFsaXplZCBuYW1lIGZyb20gdGhlIGZpbGUgc3lzdGVtIHBhdGguCiAgICAgICAgIiIiCiAgICAgICAgc3RlbSA9IG9zLnBhdGguYmFzZW5hbWUoc3RyKHNlbGYuX3BhdGgpKQogICAgICAgIHJldHVybiAoCiAgICAgICAgICAgIHBhc3Nfbm9uZShQcmVwYXJlZC5ub3JtYWxpemUpKHNlbGYuX25hbWVfZnJvbV9zdGVtKHN0ZW0pKQogICAgICAgICAgICBvciBzdXBlcigpLl9ub3JtYWxpemVkX25hbWUKICAgICAgICApCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9uYW1lX2Zyb21fc3RlbShzdGVtKToKICAgICAgICAiIiIKICAgICAgICA+Pj4gUGF0aERpc3RyaWJ1dGlvbi5fbmFtZV9mcm9tX3N0ZW0oJ2Zvby0zLjAuZWdnLWluZm8nKQogICAgICAgICdmb28nCiAgICAgICAgPj4+IFBhdGhEaXN0cmlidXRpb24uX25hbWVfZnJvbV9zdGVtKCdDaGVycnlQeS0zLjAuZGlzdC1pbmZvJykKICAgICAgICAnQ2hlcnJ5UHknCiAgICAgICAgPj4+IFBhdGhEaXN0cmlidXRpb24uX25hbWVfZnJvbV9zdGVtKCdmYWNlLmVnZy1pbmZvJykKICAgICAgICAnZmFjZScKICAgICAgICA+Pj4gUGF0aERpc3RyaWJ1dGlvbi5fbmFtZV9mcm9tX3N0ZW0oJ2Zvby5iYXInKQogICAgICAgICIiIgogICAgICAgIGZpbGVuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHN0ZW0pCiAgICAgICAgaWYgZXh0IG5vdCBpbiAoJy5kaXN0LWluZm8nLCAnLmVnZy1pbmZvJyk6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIG5hbWUsIHNlcCwgcmVzdCA9IGZpbGVuYW1lLnBhcnRpdGlvbignLScpCiAgICAgICAgcmV0dXJuIG5hbWUKCgpkZWYgZGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbl9uYW1lKToKICAgICIiIkdldCB0aGUgYGBEaXN0cmlidXRpb25gYCBpbnN0YW5jZSBmb3IgdGhlIG5hbWVkIHBhY2thZ2UuCgogICAgOnBhcmFtIGRpc3RyaWJ1dGlvbl9uYW1lOiBUaGUgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIHBhY2thZ2UgYXMgYSBzdHJpbmcuCiAgICA6cmV0dXJuOiBBIGBgRGlzdHJpYnV0aW9uYGAgaW5zdGFuY2UgKG9yIHN1YmNsYXNzIHRoZXJlb2YpLgogICAgIiIiCiAgICByZXR1cm4gRGlzdHJpYnV0aW9uLmZyb21fbmFtZShkaXN0cmlidXRpb25fbmFtZSkKCgpkZWYgZGlzdHJpYnV0aW9ucygqKmt3YXJncyk6CiAgICAiIiJHZXQgYWxsIGBgRGlzdHJpYnV0aW9uYGAgaW5zdGFuY2VzIGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50LgoKICAgIDpyZXR1cm46IEFuIGl0ZXJhYmxlIG9mIGBgRGlzdHJpYnV0aW9uYGAgaW5zdGFuY2VzLgogICAgIiIiCiAgICByZXR1cm4gRGlzdHJpYnV0aW9uLmRpc2NvdmVyKCoqa3dhcmdzKQoKCmRlZiBtZXRhZGF0YShkaXN0cmlidXRpb25fbmFtZSkgLT4gX21ldGEuUGFja2FnZU1ldGFkYXRhOgogICAgIiIiR2V0IHRoZSBtZXRhZGF0YSBmb3IgdGhlIG5hbWVkIHBhY2thZ2UuCgogICAgOnBhcmFtIGRpc3RyaWJ1dGlvbl9uYW1lOiBUaGUgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIHBhY2thZ2UgdG8gcXVlcnkuCiAgICA6cmV0dXJuOiBBIFBhY2thZ2VNZXRhZGF0YSBjb250YWluaW5nIHRoZSBwYXJzZWQgbWV0YWRhdGEuCiAgICAiIiIKICAgIHJldHVybiBEaXN0cmlidXRpb24uZnJvbV9uYW1lKGRpc3RyaWJ1dGlvbl9uYW1lKS5tZXRhZGF0YQoKCmRlZiB2ZXJzaW9uKGRpc3RyaWJ1dGlvbl9uYW1lKToKICAgICIiIkdldCB0aGUgdmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBuYW1lZCBwYWNrYWdlLgoKICAgIDpwYXJhbSBkaXN0cmlidXRpb25fbmFtZTogVGhlIG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIHRvIHF1ZXJ5LgogICAgOnJldHVybjogVGhlIHZlcnNpb24gc3RyaW5nIGZvciB0aGUgcGFja2FnZSBhcyBkZWZpbmVkIGluIHRoZSBwYWNrYWdlJ3MKICAgICAgICAiVmVyc2lvbiIgbWV0YWRhdGEga2V5LgogICAgIiIiCiAgICByZXR1cm4gZGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbl9uYW1lKS52ZXJzaW9uCgoKX3VuaXF1ZSA9IGZ1bmN0b29scy5wYXJ0aWFsKAogICAgdW5pcXVlX2V2ZXJzZWVuLAogICAga2V5PW9wZXJhdG9yLmF0dHJnZXR0ZXIoJ19ub3JtYWxpemVkX25hbWUnKSwKKQoiIiIKV3JhcHBlciBmb3IgYGBkaXN0cmlidXRpb25zYGAgdG8gcmV0dXJuIHVuaXF1ZSBkaXN0cmlidXRpb25zIGJ5IG5hbWUuCiIiIgoKCmRlZiBlbnRyeV9wb2ludHMoKipwYXJhbXMpIC0+IFVuaW9uW0VudHJ5UG9pbnRzLCBTZWxlY3RhYmxlR3JvdXBzXToKICAgICIiIlJldHVybiBFbnRyeVBvaW50IG9iamVjdHMgZm9yIGFsbCBpbnN0YWxsZWQgcGFja2FnZXMuCgogICAgUGFzcyBzZWxlY3Rpb24gcGFyYW1ldGVycyAoZ3JvdXAgb3IgbmFtZSkgdG8gZmlsdGVyIHRoZQogICAgcmVzdWx0IHRvIGVudHJ5IHBvaW50cyBtYXRjaGluZyB0aG9zZSBwcm9wZXJ0aWVzIChzZWUKICAgIEVudHJ5UG9pbnRzLnNlbGVjdCgpKS4KCiAgICBGb3IgY29tcGF0aWJpbGl0eSwgcmV0dXJucyBgYFNlbGVjdGFibGVHcm91cHNgYCBvYmplY3QgdW5sZXNzCiAgICBzZWxlY3Rpb24gcGFyYW1ldGVycyBhcmUgc3VwcGxpZWQuIEluIHRoZSBmdXR1cmUsIHRoaXMgZnVuY3Rpb24KICAgIHdpbGwgcmV0dXJuIGBgRW50cnlQb2ludHNgYCBpbnN0ZWFkIG9mIGBgU2VsZWN0YWJsZUdyb3Vwc2BgCiAgICBldmVuIHdoZW4gbm8gc2VsZWN0aW9uIHBhcmFtZXRlcnMgYXJlIHN1cHBsaWVkLgoKICAgIEZvciBtYXhpbXVtIGZ1dHVyZSBjb21wYXRpYmlsaXR5LCBwYXNzIHNlbGVjdGlvbiBwYXJhbWV0ZXJzCiAgICBvciBpbnZva2UgYGAuc2VsZWN0YGAgd2l0aCBwYXJhbWV0ZXJzIG9uIHRoZSByZXN1bHQuCgogICAgOnJldHVybjogRW50cnlQb2ludHMgb3IgU2VsZWN0YWJsZUdyb3VwcyBmb3IgYWxsIGluc3RhbGxlZCBwYWNrYWdlcy4KICAgICIiIgogICAgZXBzID0gaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUoCiAgICAgICAgZGlzdC5lbnRyeV9wb2ludHMgZm9yIGRpc3QgaW4gX3VuaXF1ZShkaXN0cmlidXRpb25zKCkpCiAgICApCiAgICByZXR1cm4gU2VsZWN0YWJsZUdyb3Vwcy5sb2FkKGVwcykuc2VsZWN0KCoqcGFyYW1zKQoKCmRlZiBmaWxlcyhkaXN0cmlidXRpb25fbmFtZSk6CiAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZpbGVzIGZvciB0aGUgbmFtZWQgcGFja2FnZS4KCiAgICA6cGFyYW0gZGlzdHJpYnV0aW9uX25hbWU6IFRoZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24gcGFja2FnZSB0byBxdWVyeS4KICAgIDpyZXR1cm46IExpc3Qgb2YgZmlsZXMgY29tcG9zaW5nIHRoZSBkaXN0cmlidXRpb24uCiAgICAiIiIKICAgIHJldHVybiBkaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uX25hbWUpLmZpbGVzCgoKZGVmIHJlcXVpcmVzKGRpc3RyaWJ1dGlvbl9uYW1lKToKICAgICIiIgogICAgUmV0dXJuIGEgbGlzdCBvZiByZXF1aXJlbWVudHMgZm9yIHRoZSBuYW1lZCBwYWNrYWdlLgoKICAgIDpyZXR1cm46IEFuIGl0ZXJhdG9yIG9mIHJlcXVpcmVtZW50cywgc3VpdGFibGUgZm9yCiAgICAgICAgcGFja2FnaW5nLnJlcXVpcmVtZW50LlJlcXVpcmVtZW50LgogICAgIiIiCiAgICByZXR1cm4gZGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbl9uYW1lKS5yZXF1aXJlcwoKCmRlZiBwYWNrYWdlc19kaXN0cmlidXRpb25zKCkgLT4gTWFwcGluZ1tzdHIsIExpc3Rbc3RyXV06CiAgICAiIiIKICAgIFJldHVybiBhIG1hcHBpbmcgb2YgdG9wLWxldmVsIHBhY2thZ2VzIHRvIHRoZWlyCiAgICBkaXN0cmlidXRpb25zLgoKICAgID4+PiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiAgICA+Pj4gcGtncyA9IHBhY2thZ2VzX2Rpc3RyaWJ1dGlvbnMoKQogICAgPj4+IGFsbChpc2luc3RhbmNlKGRpc3QsIGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSkgZm9yIGRpc3QgaW4gcGtncy52YWx1ZXMoKSkKICAgIFRydWUKICAgICIiIgogICAgcGtnX3RvX2Rpc3QgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsaXN0KQogICAgZm9yIGRpc3QgaW4gZGlzdHJpYnV0aW9ucygpOgogICAgICAgIGZvciBwa2cgaW4gX3RvcF9sZXZlbF9kZWNsYXJlZChkaXN0KSBvciBfdG9wX2xldmVsX2luZmVycmVkKGRpc3QpOgogICAgICAgICAgICBwa2dfdG9fZGlzdFtwa2ddLmFwcGVuZChkaXN0Lm1ldGFkYXRhWydOYW1lJ10pCiAgICByZXR1cm4gZGljdChwa2dfdG9fZGlzdCkKCgpkZWYgX3RvcF9sZXZlbF9kZWNsYXJlZChkaXN0KToKICAgIHJldHVybiAoZGlzdC5yZWFkX3RleHQoJ3RvcF9sZXZlbC50eHQnKSBvciAnJykuc3BsaXQoKQoKCmRlZiBfdG9wX2xldmVsX2luZmVycmVkKGRpc3QpOgogICAgcmV0dXJuIHsKICAgICAgICBmLnBhcnRzWzBdIGlmIGxlbihmLnBhcnRzKSA+IDEgZWxzZSBmLndpdGhfc3VmZml4KCcnKS5uYW1lCiAgICAgICAgZm9yIGYgaW4gYWx3YXlzX2l0ZXJhYmxlKGRpc3QuZmlsZXMpCiAgICAgICAgaWYgZi5zdWZmaXggPT0gIi5weSIKICAgIH0KUEsDBBQAAAAAAAMgo1a1bRDrRgcAAEYHAAAfAAAAaW1wb3J0bGliL21ldGFkYXRhL19hZGFwdGVycy5weWltcG9ydCByZQppbXBvcnQgdGV4dHdyYXAKaW1wb3J0IGVtYWlsLm1lc3NhZ2UKCmZyb20gLl90ZXh0IGltcG9ydCBGb2xkZWRDYXNlCgoKY2xhc3MgTWVzc2FnZShlbWFpbC5tZXNzYWdlLk1lc3NhZ2UpOgogICAgbXVsdGlwbGVfdXNlX2tleXMgPSBzZXQoCiAgICAgICAgbWFwKAogICAgICAgICAgICBGb2xkZWRDYXNlLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnQ2xhc3NpZmllcicsCiAgICAgICAgICAgICAgICAnT2Jzb2xldGVzLURpc3QnLAogICAgICAgICAgICAgICAgJ1BsYXRmb3JtJywKICAgICAgICAgICAgICAgICdQcm9qZWN0LVVSTCcsCiAgICAgICAgICAgICAgICAnUHJvdmlkZXMtRGlzdCcsCiAgICAgICAgICAgICAgICAnUHJvdmlkZXMtRXh0cmEnLAogICAgICAgICAgICAgICAgJ1JlcXVpcmVzLURpc3QnLAogICAgICAgICAgICAgICAgJ1JlcXVpcmVzLUV4dGVybmFsJywKICAgICAgICAgICAgICAgICdTdXBwb3J0ZWQtUGxhdGZvcm0nLAogICAgICAgICAgICAgICAgJ0R5bmFtaWMnLAogICAgICAgICAgICBdLAogICAgICAgICkKICAgICkKICAgICIiIgogICAgS2V5cyB0aGF0IG1heSBiZSBpbmRpY2F0ZWQgbXVsdGlwbGUgdGltZXMgcGVyIFBFUCA1NjYuCiAgICAiIiIKCiAgICBkZWYgX19uZXdfXyhjbHMsIG9yaWc6IGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSk6CiAgICAgICAgcmVzID0gc3VwZXIoKS5fX25ld19fKGNscykKICAgICAgICB2YXJzKHJlcykudXBkYXRlKHZhcnMob3JpZykpCiAgICAgICAgcmV0dXJuIHJlcwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuX2hlYWRlcnMgPSBzZWxmLl9yZXBhaXJfaGVhZGVycygpCgogICAgIyBzdXBwcmVzcyBzcHVyaW91cyBlcnJvciBmcm9tIG15cHkKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2l0ZXJfXygpCgogICAgZGVmIF9yZXBhaXJfaGVhZGVycyhzZWxmKToKICAgICAgICBkZWYgcmVkZW50KHZhbHVlKToKICAgICAgICAgICAgIkNvcnJlY3QgZm9yIFJGQzgyMiBpbmRlbnRhdGlvbiIKICAgICAgICAgICAgaWYgbm90IHZhbHVlIG9yICdcbicgbm90IGluIHZhbHVlOgogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgICAgIHJldHVybiB0ZXh0d3JhcC5kZWRlbnQoJyAnICogOCArIHZhbHVlKQoKICAgICAgICBoZWFkZXJzID0gWyhrZXksIHJlZGVudCh2YWx1ZSkpIGZvciBrZXksIHZhbHVlIGluIHZhcnMoc2VsZilbJ19oZWFkZXJzJ11dCiAgICAgICAgaWYgc2VsZi5fcGF5bG9hZDoKICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoKCdEZXNjcmlwdGlvbicsIHNlbGYuZ2V0X3BheWxvYWQoKSkpCiAgICAgICAgcmV0dXJuIGhlYWRlcnMKCiAgICBAcHJvcGVydHkKICAgIGRlZiBqc29uKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIENvbnZlcnQgUGFja2FnZU1ldGFkYXRhIHRvIGEgSlNPTi1jb21wYXRpYmxlIGZvcm1hdAogICAgICAgIHBlciBQRVAgMDU2Ni4KICAgICAgICAiIiIKCiAgICAgICAgZGVmIHRyYW5zZm9ybShrZXkpOgogICAgICAgICAgICB2YWx1ZSA9IHNlbGYuZ2V0X2FsbChrZXkpIGlmIGtleSBpbiBzZWxmLm11bHRpcGxlX3VzZV9rZXlzIGVsc2Ugc2VsZltrZXldCiAgICAgICAgICAgIGlmIGtleSA9PSAnS2V5d29yZHMnOgogICAgICAgICAgICAgICAgdmFsdWUgPSByZS5zcGxpdChyJ1xzKycsIHZhbHVlKQogICAgICAgICAgICB0ayA9IGtleS5sb3dlcigpLnJlcGxhY2UoJy0nLCAnXycpCiAgICAgICAgICAgIHJldHVybiB0aywgdmFsdWUKCiAgICAgICAgcmV0dXJuIGRpY3QobWFwKHRyYW5zZm9ybSwgbWFwKEZvbGRlZENhc2UsIHNlbGYpKSkKUEsDBBQAAAAAAAMgo1b1rqkH5wIAAOcCAAAiAAAAaW1wb3J0bGliL21ldGFkYXRhL19jb2xsZWN0aW9ucy5weWltcG9ydCBjb2xsZWN0aW9ucwoKCiMgZnJvbSBqYXJhY28uY29sbGVjdGlvbnMgMy4zCmNsYXNzIEZyZWV6YWJsZURlZmF1bHREaWN0KGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KToKICAgICIiIgogICAgT2Z0ZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHByZXZlbnQgdGhlIG11dGF0aW9uIG9mCiAgICBhIGRlZmF1bHQgZGljdCBhZnRlciBpdHMgaW5pdGlhbCBjb25zdHJ1Y3Rpb24sIHN1Y2gKICAgIGFzIHRvIHByZXZlbnQgbXV0YXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4KCiAgICA+Pj4gZGQgPSBGcmVlemFibGVEZWZhdWx0RGljdChsaXN0KQogICAgPj4+IGRkWzBdLmFwcGVuZCgnMScpCiAgICA+Pj4gZGQuZnJlZXplKCkKICAgID4+PiBkZFsxXQogICAgW10KICAgID4+PiBsZW4oZGQpCiAgICAxCiAgICAiIiIKCiAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KToKICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCAnX2Zyb3plbicsIHN1cGVyKCkuX19taXNzaW5nX18pKGtleSkKCiAgICBkZWYgZnJlZXplKHNlbGYpOgogICAgICAgIHNlbGYuX2Zyb3plbiA9IGxhbWJkYSBrZXk6IHNlbGYuZGVmYXVsdF9mYWN0b3J5KCkKCgpjbGFzcyBQYWlyKGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ1BhaXInLCAnbmFtZSB2YWx1ZScpKToKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIHBhcnNlKGNscywgdGV4dCk6CiAgICAgICAgcmV0dXJuIGNscygqbWFwKHN0ci5zdHJpcCwgdGV4dC5zcGxpdCgiPSIsIDEpKSkKUEsDBBQAAAAAAAMgo1aPOm9pTwsAAE8LAAAgAAAAaW1wb3J0bGliL21ldGFkYXRhL19mdW5jdG9vbHMucHlpbXBvcnQgdHlwZXMKaW1wb3J0IGZ1bmN0b29scwoKCiMgZnJvbSBqYXJhY28uZnVuY3Rvb2xzIDMuMwpkZWYgbWV0aG9kX2NhY2hlKG1ldGhvZCwgY2FjaGVfd3JhcHBlcj1Ob25lKToKICAgICIiIgogICAgV3JhcCBscnVfY2FjaGUgdG8gc3VwcG9ydCBzdG9yaW5nIHRoZSBjYWNoZSBkYXRhIGluIHRoZSBvYmplY3QgaW5zdGFuY2VzLgoKICAgIEFic3RyYWN0cyB0aGUgY29tbW9uIHBhcmFkaWdtIHdoZXJlIHRoZSBtZXRob2QgZXhwbGljaXRseSBzYXZlcyBhbgogICAgdW5kZXJzY29yZS1wcmVmaXhlZCBwcm90ZWN0ZWQgcHJvcGVydHkgb24gZmlyc3QgY2FsbCBhbmQgcmV0dXJucyB0aGF0CiAgICBzdWJzZXF1ZW50bHkuCgogICAgPj4+IGNsYXNzIE15Q2xhc3M6CiAgICAuLi4gICAgIGNhbGxzID0gMAogICAgLi4uCiAgICAuLi4gICAgIEBtZXRob2RfY2FjaGUKICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmLCB2YWx1ZSk6CiAgICAuLi4gICAgICAgICBzZWxmLmNhbGxzICs9IDEKICAgIC4uLiAgICAgICAgIHJldHVybiB2YWx1ZQoKICAgID4+PiBhID0gTXlDbGFzcygpCiAgICA+Pj4gYS5tZXRob2QoMykKICAgIDMKICAgID4+PiBmb3IgeCBpbiByYW5nZSg3NSk6CiAgICAuLi4gICAgIHJlcyA9IGEubWV0aG9kKHgpCiAgICA+Pj4gYS5jYWxscwogICAgNzUKCiAgICBOb3RlIHRoYXQgdGhlIGFwcGFyZW50IGJlaGF2aW9yIHdpbGwgYmUgZXhhY3RseSBsaWtlIHRoYXQgb2YgbHJ1X2NhY2hlCiAgICBleGNlcHQgdGhhdCB0aGUgY2FjaGUgaXMgc3RvcmVkIG9uIGVhY2ggaW5zdGFuY2UsIHNvIHZhbHVlcyBpbiBvbmUKICAgIGluc3RhbmNlIHdpbGwgbm90IGZsdXNoIHZhbHVlcyBmcm9tIGFub3RoZXIsIGFuZCB3aGVuIGFuIGluc3RhbmNlIGlzCiAgICBkZWxldGVkLCBzbyBhcmUgdGhlIGNhY2hlZCB2YWx1ZXMgZm9yIHRoYXQgaW5zdGFuY2UuCgogICAgPj4+IGIgPSBNeUNsYXNzKCkKICAgID4+PiBmb3IgeCBpbiByYW5nZSgzNSk6CiAgICAuLi4gICAgIHJlcyA9IGIubWV0aG9kKHgpCiAgICA+Pj4gYi5jYWxscwogICAgMzUKICAgID4+PiBhLm1ldGhvZCgwKQogICAgMAogICAgPj4+IGEuY2FsbHMKICAgIDc1CgogICAgTm90ZSB0aGF0IGlmIG1ldGhvZCBoYWQgYmVlbiBkZWNvcmF0ZWQgd2l0aCBgYGZ1bmN0b29scy5scnVfY2FjaGUoKWBgLAogICAgYS5jYWxscyB3b3VsZCBoYXZlIGJlZW4gNzYgKGR1ZSB0byB0aGUgY2FjaGVkIHZhbHVlIG9mIDAgaGF2aW5nIGJlZW4KICAgIGZsdXNoZWQgYnkgdGhlICdiJyBpbnN0YW5jZSkuCgogICAgQ2xlYXIgdGhlIGNhY2hlIHdpdGggYGAuY2FjaGVfY2xlYXIoKWBgCgogICAgPj4+IGEubWV0aG9kLmNhY2hlX2NsZWFyKCkKCiAgICBTYW1lIGZvciBhIG1ldGhvZCB0aGF0IGhhc24ndCB5ZXQgYmVlbiBjYWxsZWQuCgogICAgPj4+IGMgPSBNeUNsYXNzKCkKICAgID4+PiBjLm1ldGhvZC5jYWNoZV9jbGVhcigpCgogICAgQW5vdGhlciBjYWNoZSB3cmFwcGVyIG1heSBiZSBzdXBwbGllZDoKCiAgICA+Pj4gY2FjaGUgPSBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MikKICAgID4+PiBNeUNsYXNzLm1ldGhvZDIgPSBtZXRob2RfY2FjaGUobGFtYmRhIHNlbGY6IDMsIGNhY2hlX3dyYXBwZXI9Y2FjaGUpCiAgICA+Pj4gYSA9IE15Q2xhc3MoKQogICAgPj4+IGEubWV0aG9kMigpCiAgICAzCgogICAgQ2F1dGlvbiAtIGRvIG5vdCBzdWJzZXF1ZW50bHkgd3JhcCB0aGUgbWV0aG9kIHdpdGggYW5vdGhlciBkZWNvcmF0b3IsIHN1Y2gKICAgIGFzIGBgQHByb3BlcnR5YGAsIHdoaWNoIGNoYW5nZXMgdGhlIHNlbWFudGljcyBvZiB0aGUgZnVuY3Rpb24uCgogICAgU2VlIGFsc28KICAgIGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NzQ1Mi1hLW1lbW9pemUtZGVjb3JhdG9yLWZvci1pbnN0YW5jZS1tZXRob2RzLwogICAgZm9yIGFub3RoZXIgaW1wbGVtZW50YXRpb24gYW5kIGFkZGl0aW9uYWwganVzdGlmaWNhdGlvbi4KICAgICIiIgogICAgY2FjaGVfd3JhcHBlciA9IGNhY2hlX3dyYXBwZXIgb3IgZnVuY3Rvb2xzLmxydV9jYWNoZSgpCgogICAgZGVmIHdyYXBwZXIoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAjIGl0J3MgdGhlIGZpcnN0IGNhbGwsIHJlcGxhY2UgdGhlIG1ldGhvZCB3aXRoIGEgY2FjaGVkLCBib3VuZCBtZXRob2QKICAgICAgICBib3VuZF9tZXRob2QgPSB0eXBlcy5NZXRob2RUeXBlKG1ldGhvZCwgc2VsZikKICAgICAgICBjYWNoZWRfbWV0aG9kID0gY2FjaGVfd3JhcHBlcihib3VuZF9tZXRob2QpCiAgICAgICAgc2V0YXR0cihzZWxmLCBtZXRob2QuX19uYW1lX18sIGNhY2hlZF9tZXRob2QpCiAgICAgICAgcmV0dXJuIGNhY2hlZF9tZXRob2QoKmFyZ3MsICoqa3dhcmdzKQoKICAgICMgU3VwcG9ydCBjYWNoZSBjbGVhciBldmVuIGJlZm9yZSBjYWNoZSBoYXMgYmVlbiBjcmVhdGVkLgogICAgd3JhcHBlci5jYWNoZV9jbGVhciA9IGxhbWJkYTogTm9uZQoKICAgIHJldHVybiB3cmFwcGVyCgoKIyBGcm9tIGphcmFjby5mdW5jdG9vbHMgMy4zCmRlZiBwYXNzX25vbmUoZnVuYyk6CiAgICAiIiIKICAgIFdyYXAgZnVuYyBzbyBpdCdzIG5vdCBjYWxsZWQgaWYgaXRzIGZpcnN0IHBhcmFtIGlzIE5vbmUKCiAgICA+Pj4gcHJpbnRfdGV4dCA9IHBhc3Nfbm9uZShwcmludCkKICAgID4+PiBwcmludF90ZXh0KCd0ZXh0JykKICAgIHRleHQKICAgID4+PiBwcmludF90ZXh0KE5vbmUpCiAgICAiIiIKCiAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCiAgICBkZWYgd3JhcHBlcihwYXJhbSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBwYXJhbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIGZ1bmMocGFyYW0sICphcmdzLCAqKmt3YXJncykKCiAgICByZXR1cm4gd3JhcHBlcgpQSwMEFAAAAAAAAyCjVpo62NcUCAAAFAgAACAAAABpbXBvcnRsaWIvbWV0YWRhdGEvX2l0ZXJ0b29scy5weWZyb20gaXRlcnRvb2xzIGltcG9ydCBmaWx0ZXJmYWxzZQoKCmRlZiB1bmlxdWVfZXZlcnNlZW4oaXRlcmFibGUsIGtleT1Ob25lKToKICAgICJMaXN0IHVuaXF1ZSBlbGVtZW50cywgcHJlc2VydmluZyBvcmRlci4gUmVtZW1iZXIgYWxsIGVsZW1lbnRzIGV2ZXIgc2Vlbi4iCiAgICAjIHVuaXF1ZV9ldmVyc2VlbignQUFBQUJCQkNDREFBQkJCJykgLS0+IEEgQiBDIEQKICAgICMgdW5pcXVlX2V2ZXJzZWVuKCdBQkJDY0FEJywgc3RyLmxvd2VyKSAtLT4gQSBCIEMgRAogICAgc2VlbiA9IHNldCgpCiAgICBzZWVuX2FkZCA9IHNlZW4uYWRkCiAgICBpZiBrZXkgaXMgTm9uZToKICAgICAgICBmb3IgZWxlbWVudCBpbiBmaWx0ZXJmYWxzZShzZWVuLl9fY29udGFpbnNfXywgaXRlcmFibGUpOgogICAgICAgICAgICBzZWVuX2FkZChlbGVtZW50KQogICAgICAgICAgICB5aWVsZCBlbGVtZW50CiAgICBlbHNlOgogICAgICAgIGZvciBlbGVtZW50IGluIGl0ZXJhYmxlOgogICAgICAgICAgICBrID0ga2V5KGVsZW1lbnQpCiAgICAgICAgICAgIGlmIGsgbm90IGluIHNlZW46CiAgICAgICAgICAgICAgICBzZWVuX2FkZChrKQogICAgICAgICAgICAgICAgeWllbGQgZWxlbWVudAoKCiMgY29waWVkIGZyb20gbW9yZV9pdGVydG9vbHMgOC44CmRlZiBhbHdheXNfaXRlcmFibGUob2JqLCBiYXNlX3R5cGU9KHN0ciwgYnl0ZXMpKToKICAgICIiIklmICpvYmoqIGlzIGl0ZXJhYmxlLCByZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBpdHMgaXRlbXM6OgoKICAgICAgICA+Pj4gb2JqID0gKDEsIDIsIDMpCiAgICAgICAgPj4+IGxpc3QoYWx3YXlzX2l0ZXJhYmxlKG9iaikpCiAgICAgICAgWzEsIDIsIDNdCgogICAgSWYgKm9iaiogaXMgbm90IGl0ZXJhYmxlLCByZXR1cm4gYSBvbmUtaXRlbSBpdGVyYWJsZSBjb250YWluaW5nICpvYmoqOjoKCiAgICAgICAgPj4+IG9iaiA9IDEKICAgICAgICA+Pj4gbGlzdChhbHdheXNfaXRlcmFibGUob2JqKSkKICAgICAgICBbMV0KCiAgICBJZiAqb2JqKiBpcyBgYE5vbmVgYCwgcmV0dXJuIGFuIGVtcHR5IGl0ZXJhYmxlOgoKICAgICAgICA+Pj4gb2JqID0gTm9uZQogICAgICAgID4+PiBsaXN0KGFsd2F5c19pdGVyYWJsZShOb25lKSkKICAgICAgICBbXQoKICAgIEJ5IGRlZmF1bHQsIGJpbmFyeSBhbmQgdGV4dCBzdHJpbmdzIGFyZSBub3QgY29uc2lkZXJlZCBpdGVyYWJsZTo6CgogICAgICAgID4+PiBvYmogPSAnZm9vJwogICAgICAgID4+PiBsaXN0KGFsd2F5c19pdGVyYWJsZShvYmopKQogICAgICAgIFsnZm9vJ10KCiAgICBJZiAqYmFzZV90eXBlKiBpcyBzZXQsIG9iamVjdHMgZm9yIHdoaWNoIGBgaXNpbnN0YW5jZShvYmosIGJhc2VfdHlwZSlgYAogICAgcmV0dXJucyBgYFRydWVgYCB3b24ndCBiZSBjb25zaWRlcmVkIGl0ZXJhYmxlLgoKICAgICAgICA+Pj4gb2JqID0geydhJzogMX0KICAgICAgICA+Pj4gbGlzdChhbHdheXNfaXRlcmFibGUob2JqKSkgICMgSXRlcmF0ZSBvdmVyIHRoZSBkaWN0J3Mga2V5cwogICAgICAgIFsnYSddCiAgICAgICAgPj4+IGxpc3QoYWx3YXlzX2l0ZXJhYmxlKG9iaiwgYmFz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dGhvZF9jYWNoZQoKCiMgZnJvbSBqYXJhY28udGV4dCAzLjUKY2xhc3MgRm9sZGVkQ2FzZShzdHIpOgogICAgIiIiCiAgICBBIGNhc2UgaW5zZW5zaXRpdmUgc3RyaW5nIGNsYXNzOyBiZWhhdmVzIGp1c3QgbGlrZSBzdHIKICAgIGV4Y2VwdCBjb21wYXJlcyBlcXVhbCB3aGVuIHRoZSBvbmx5IHZhcmlhdGlvbiBpcyBjYXNlLgoKICAgID4+PiBzID0gRm9sZGVkQ2FzZSgnaGVsbG8gd29ybGQnKQoKICAgID4+PiBzID09ICdIZWxsbyBXb3JsZCcKICAgIFRydWUKCiAgICA+Pj4gJ0hlbGxvIFdvcmxkJyA9PSBzCiAgICBUcnVlCgogICAgPj4+IHMgIT0gJ0hlbGxvIFdvcmxkJwogICAgRmFsc2UKCiAgICA+Pj4gcy5pbmRleCgnTycpCiAgICA0CgogICAgPj4+IHMuc3BsaXQoJ08nKQogICAgWydoZWxsJywgJyB3JywgJ3JsZCddCgogICAgPj4+IHNvcnRlZChtYXAoRm9sZGVkQ2FzZSwgWydHQU1NQScsICdhbHBoYScsICdCZXRhJ10pKQogICAgWydhbHBoYScsICdCZXRhJywgJ0dBTU1BJ10KCiAgICBTZXF1ZW5jZSBtZW1iZXJzaGlwIGlzIHN0cmFpZ2h0Zm9yd2FyZC4KCiAgICA+Pj4gIkhlbGxvIFdvcmxkIiBpbiBbc10KICAgIFRydWUKICAgID4+PiBzIGluIFsiSGVsbG8gV29ybGQiXQogICAgVHJ1ZQoKICAgIFlvdSBtYXkgdGVzdCBmb3Igc2V0IGluY2x1c2lvbiwgYnV0IGNhbmRpZGF0ZSBhbmQgZWxlbWVudHMKICAgIG11c3QgYm90aCBiZSBmb2xkZWQuCgogICAgPj4+IEZvbGRlZENhc2UoIkhlbGxvIFdvcmxkIikgaW4ge3N9CiAgICBUcnVlCiAgICA+Pj4gcyBpbiB7Rm9sZGVkQ2FzZSgiSGVsbG8gV29ybGQiKX0KICAgIFRydWUKCiAgICBTdHJpbmcgaW5jbHVzaW9uIHdvcmtzIGFzIGxvbmcgYXMgdGhlIEZvbGRlZENhc2Ugb2JqZWN0CiAgICBpcyBvbiB0aGUgcmlnaHQuCgogICAgPj4+ICJoZWxsbyIgaW4gRm9sZGVkQ2FzZSgiSGVsbG8gV29ybGQiKQogICAgVHJ1ZQoKICAgIEJ1dCBub3QgaWYgdGhlIEZvbGRlZENhc2Ugb2JqZWN0IGlzIG9uIHRoZSBsZWZ0OgoKICAgID4+PiBGb2xkZWRDYXNlKCdoZWxsbycpIGluICdIZWxsbyBXb3JsZCcKICAgIEZhbHNlCgogICAgSW4gdGhhdCBjYXNlLCB1c2UgaW5fOgoKICAgID4+PiBGb2xkZWRDYXNlKCdoZWxsbycpLmluXygnSGVsbG8gV29ybGQnKQogICAgVHJ1ZQoKICAgID4+PiBGb2xkZWRDYXNlKCdoZWxsbycpID4gRm9sZGVkQ2FzZSgnSGVsbG8nKQogICAgRmFsc2UKICAgICIiIgoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBzZWxmLmxvd2VyKCkgPCBvdGhlci5sb3dlcigpCgogICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIHNlbGYubG93ZXIoKSA+IG90aGVyLmxvd2VyKCkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5sb3dlcigpID09IG90aGVyLmxvd2VyKCkKCiAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5sb3dlcigpICE9IG90aGVyLmxvd2VyKCkKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5sb3dlcigpKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBzdXBlcigpLmxvd2VyKCkuX19jb250YWluc19fKG90aGVyLmxvd2VyKCkpCgogICAgZGVmIGluXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIkRvZXMgc2VsZiBhcHBlYXIgaW4gb3RoZXI/IgogICAgICAgIHJldHVybiBzZWxmIGluIEZvbGRlZENhc2Uob3RoZXIpCgogICAgIyBjYWNoZSBsb3dlciBzaW5jZSBpdCdzIGxpa2VseSB0byBiZSBjYWxsZWQgZnJlcXVlbnRseS4KICAgIEBtZXRob2RfY2FjaGUKICAgIGRlZiBsb3dlcihzZWxmKToKICAgICAgICByZXR1cm4gc3VwZXIoKS5sb3dlcigpCgogICAgZGVmIGluZGV4KHNlbGYsIHN1Yik6CiAgICAgICAgcmV0dXJuIHNlbGYubG93ZXIoKS5pbmRleChzdWIubG93ZXIoKSkKCiAgICBkZWYgc3BsaXQoc2VsZiwgc3BsaXR0ZXI9JyAnLCBtYXhzcGxpdD0wKToKICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZShyZS5lc2NhcGUoc3BsaXR0ZXIpLCByZS5JKQogICAgICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KHNlbGYsIG1heHNwbGl0KQpQSwMEFAAAAAAAAyCjVonAtRvENgAAxDYAABAAAABqc29uL19faW5pdF9fLnB5ciIiIkpTT04gKEphdmFTY3JpcHQgT2JqZWN0IE5vdGF0aW9uKSA8aHR0cHM6Ly9qc29uLm9yZz4gaXMgYSBzdWJzZXQgb2YKSmF2YVNjcmlwdCBzeW50YXggKEVDTUEtMjYyIDNyZCBlZGl0aW9uKSB1c2VkIGFzIGEgbGlnaHR3ZWlnaHQgZGF0YQppbnRlcmNoYW5nZSBmb3JtYXQuCgo6bW9kOmBqc29uYCBleHBvc2VzIGFuIEFQSSBmYW1pbGlhciB0byB1c2VycyBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeQo6bW9kOmBtYXJzaGFsYCBhbmQgOm1vZDpgcGlja2xlYCBtb2R1bGVzLiAgSXQgaXMgZGVyaXZlZCBmcm9tIGEKdmVyc2lvbiBvZiB0aGUgZXh0ZXJuYWxseSBtYWludGFpbmVkIHNpbXBsZWpzb24gbGlicmFyeS4KCkVuY29kaW5nIGJhc2ljIFB5dGhvbiBvYmplY3QgaGllcmFyY2hpZXM6OgoKICAgID4+PiBpbXBvcnQganNvbgogICAgPj4+IGpzb24uZHVtcHMoWydmb28nLCB7J2Jhcic6ICgnYmF6JywgTm9uZSwgMS4wLCAyKX1dKQogICAgJ1siZm9vIiwgeyJiYXIiOiBbImJheiIsIG51bGwsIDEuMCwgMl19XScKICAgID4+PiBwcmludChqc29uLmR1bXBzKCJcImZvb1xiYXIiKSkKICAgICJcImZvb1xiYXIiCiAgICA+Pj4gcHJpbnQoanNvbi5kdW1wcygnXHUxMjM0JykpCiAgICAiXHUxMjM0IgogICAgPj4+IHByaW50KGpzb24uZHVtcHMoJ1xcJykpCiAgICAiXFwiCiAgICA+Pj4gcHJpbnQoanNvbi5kdW1wcyh7ImMiOiAwLCAiYiI6IDAsICJhIjogMH0sIHNvcnRfa2V5cz1UcnVlKSkKICAgIHsiYSI6IDAsICJiIjogMCwgImMiOiAwfQogICAgPj4+IGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAgICA+Pj4gaW8gPSBTdHJpbmdJTygpCiAgICA+Pj4ganNvbi5kdW1wKFsnc3RyZWFtaW5nIEFQSSddLCBpbykKICAgID4+PiBpby5nZXR2YWx1ZSgpCiAgICAnWyJzdHJlYW1pbmcgQVBJIl0nCgpDb21wYWN0IGVuY29kaW5nOjoKCiAgICA+Pj4gaW1wb3J0IGpzb24KICAgID4+PiBteWRpY3QgPSB7JzQnOiA1LCAnNic6IDd9CiAgICA+Pj4ganNvbi5kdW1wcyhbMSwyLDMsbXlkaWN0XSwgc2VwYXJhdG9ycz0oJywnLCAnOicpKQogICAgJ1sxLDIsMyx7IjQiOjUsIjYiOjd9XScKClByZXR0eSBwcmludGluZzo6CgogICAgPj4+IGltcG9ydCBqc29uCiAgICA+Pj4gcHJpbnQoanNvbi5kdW1wcyh7JzQnOiA1LCAnNic6IDd9LCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpKQogICAgewogICAgICAgICI0IjogNSwKICAgICAgICAiNiI6IDcKICAgIH0KCkRlY29kaW5nIEpTT046OgoKICAgID4+PiBpbXBvcnQganNvbgogICAgPj4+IG9iaiA9IFsnZm9vJywgeydiYXInOiBbJ2JheicsIE5vbmUsIDEuMCwgMl19XQogICAgPj4+IGpzb24ubG9hZHMoJ1siZm9vIiwgeyJiYXIiOlsiYmF6IiwgbnVsbCwgMS4wLCAyXX1dJykgPT0gb2JqCiAgICBUcnVlCiAgICA+Pj4ganNvbi5sb2FkcygnIlxcImZvb1xcYmFyIicpID09ICciZm9vXHgwOGFyJwogICAgVHJ1ZQogICAgPj4+IGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAgICA+Pj4gaW8gPSBTdHJpbmdJTygnWyJzdHJlYW1pbmcgQVBJIl0nKQogICAgPj4+IGpzb24ubG9hZChpbylbMF0gPT0gJ3N0cmVhbWluZyBBUEknCiAgICBUcnVlCgpTcGVjaWFsaXppbmcgSlNPTiBvYmplY3QgZGVjb2Rpbmc6OgoKICAgID4+PiBpbXBvcnQganNvbgogICAgPj4+IGRlZiBhc19jb21wbGV4KGRjdCk6CiAgICAuLi4gICAgIGlmICdfX2NvbXBsZXhfXycgaW4gZGN0OgogICAgLi4uICAgICAgICAgcmV0dXJuIGNvbXBsZXgoZGN0WydyZWFsJ10sIGRjdFsnaW1hZyddKQogICAgLi4uICAgICByZXR1cm4gZGN0CiAgICAuLi4KICAgID4+PiBqc29uLmxvYWRzKCd7Il9fY29tcGxleF9fIjogdHJ1ZSwgInJlYWwiOiAxLCAiaW1hZyI6IDJ9JywKICAgIC4uLiAgICAgb2JqZWN0X2hvb2s9YXNfY29tcGxleCkKICAgICgxKzJqKQogICAgPj4+IGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAogICAgPj4+IGpzb24ubG9hZHMoJzEuMScsIHBhcnNlX2Zsb2F0PURlY2ltYWwpID09IERlY2ltYWwoJzEuMScpCiAgICBUcnVlCgpTcGVjaWFsaXppbmcgSlNPTiBvYmplY3QgZW5jb2Rpbmc6OgoKICAgID4+PiBpbXBvcnQganNvbgogICAgPj4+IGRlZiBlbmNvZGVfY29tcGxleChvYmopOgogICAgLi4uICAgICBpZiBpc2luc3RhbmNlKG9iaiwgY29tcGxleCk6CiAgICAuLi4gICAgICAgICByZXR1cm4gW29iai5yZWFsLCBvYmouaW1hZ10KICAgIC4uLiAgICAgcmFpc2UgVHlwZUVycm9yKGYnT2JqZWN0IG9mIHR5cGUge29iai5fX2NsYXNzX18uX19uYW1lX199ICcKICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIGYnaXMgbm90IEpTT04gc2VyaWFsaXphYmxlJykKICAgIC4uLgogICAgPj4+IGpzb24uZHVtcHMoMiArIDFqLCBkZWZhdWx0PWVuY29kZV9jb21wbGV4KQogICAgJ1syLjAsIDEuMF0nCiAgICA+Pj4ganNvbi5KU09ORW5jb2RlcihkZWZhdWx0PWVuY29kZV9jb21wbGV4KS5lbmNvZGUoMiArIDFqKQogICAgJ1syLjAsIDEuMF0nCiAgICA+Pj4gJycuam9pbihqc29uLkpTT05FbmNvZGVyKGRlZmF1bHQ9ZW5jb2RlX2NvbXBsZXgpLml0ZXJlbmNvZGUoMiArIDFqKSkKICAgICdbMi4wLCAxLjBdJwoKClVzaW5nIGpzb24udG9vbCBmcm9tIHRoZSBzaGVsbCB0byB2YWxpZGF0ZSBhbmQgcHJldHR5LXByaW50OjoKCiAgICAkIGVjaG8gJ3sianNvbiI6Im9iaiJ9JyB8IHB5dGhvbiAtbSBqc29uLnRvb2wKICAgIHsKICAgICAgICAianNvbiI6ICJvYmoiCiAgICB9CiAgICAkIGVjaG8gJ3sgMS4yOjMuNH0nIHwgcHl0aG9uIC1tIGpzb24udG9vbAogICAgRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlczogbGluZSAxIGNvbHVtbiAzIChjaGFyIDIpCiIiIgpfX3ZlcnNpb25fXyA9ICcyLjAuOScKX19hbGxfXyA9IFsKICAgICdkdW1wJywgJ2R1bXBzJywgJ2xvYWQnLCAnbG9hZHMnLAogICAgJ0pTT05EZWNvZGVyJywgJ0pTT05EZWNvZGVFcnJvcicsICdKU09ORW5jb2RlcicsCl0KCl9fYXV0aG9yX18gPSAnQm9iIElwcG9saXRvIDxib2JAcmVkaXZpLmNvbT4nCgpmcm9tIC5kZWNvZGVyIGltcG9ydCBKU09ORGVjb2RlciwgSlNPTkRlY29kZUVycm9yCmZyb20gLmVuY29kZXIgaW1wb3J0IEpTT05FbmNvZGVyCmltcG9ydCBjb2RlY3MKCl9kZWZhdWx0X2VuY29kZXIgPSBKU09ORW5jb2RlcigKICAgIHNraXBrZXlzPUZhbHNlLAogICAgZW5zdXJlX2FzY2lpPVRydWUsCiAgICBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgYWxsb3dfbmFuPVRydWUsCiAgICBpbmRlbnQ9Tm9uZSwKICAgIHNlcGFyYXRvcnM9Tm9uZSwKICAgIGRlZmF1bHQ9Tm9uZSwKKQoKZGVmIGR1bXAob2JqLCBmcCwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgICAgIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwKICAgICAgICBkZWZhdWx0PU5vbmUsIHNvcnRfa2V5cz1GYWxzZSwgKiprdyk6CiAgICAiIiJTZXJpYWxpemUgYGBvYmpgYCBhcyBhIEpTT04gZm9ybWF0dGVkIHN0cmVhbSB0byBgYGZwYGAgKGEKICAgIGBgLndyaXRlKClgYC1zdXBwb3J0aW5nIGZpbGUtbGlrZSBvYmplY3QpLgoKICAgIElmIGBgc2tpcGtleXNgYCBpcyB0cnVlIHRoZW4gYGBkaWN0YGAga2V5cyB0aGF0IGFyZSBub3QgYmFzaWMgdHlwZXMKICAgIChgYHN0cmBgLCBgYGludGBgLCBgYGZsb2F0YGAsIGBgYm9vbGBgLCBgYE5vbmVgYCkgd2lsbCBiZSBza2lwcGVkCiAgICBpbnN0ZWFkIG9mIHJhaXNpbmcgYSBgYFR5cGVFcnJvcmBgLgoKICAgIElmIGBgZW5zdXJlX2FzY2lpYGAgaXMgZmFsc2UsIHRoZW4gdGhlIHN0cmluZ3Mgd3JpdHRlbiB0byBgYGZwYGAgY2FuCiAgICBjb250YWluIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGlmIHRoZXkgYXBwZWFyIGluIHN0cmluZ3MgY29udGFpbmVkIGluCiAgICBgYG9iamBgLiBPdGhlcndpc2UsIGFsbCBzdWNoIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgaW4gSlNPTiBzdHJpbmdzLgoKICAgIElmIGBgY2hlY2tfY2lyY3VsYXJgYCBpcyBmYWxzZSwgdGhlbiB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlIGNoZWNrCiAgICBmb3IgY29udGFpbmVyIHR5cGVzIHdpbGwgYmUgc2tpcHBlZCBhbmQgYSBjaXJjdWxhciByZWZlcmVuY2Ugd2lsbAogICAgcmVzdWx0IGluIGFuIGBgUmVjdXJzaW9uRXJyb3JgYCAob3Igd29yc2UpLgoKICAgIElmIGBgYWxsb3dfbmFuYGAgaXMgZmFsc2UsIHRoZW4gaXQgd2lsbCBiZSBhIGBgVmFsdWVFcnJvcmBgIHRvCiAgICBzZXJpYWxpemUgb3V0IG9mIHJhbmdlIGBgZmxvYXRgYCB2YWx1ZXMgKGBgbmFuYGAsIGBgaW5mYGAsIGBgLWluZmBgKQogICAgaW4gc3RyaWN0IGNvbXBsaWFuY2Ugb2YgdGhlIEpTT04gc3BlY2lmaWNhdGlvbiwgaW5zdGVhZCBvZiB1c2luZyB0aGUKICAgIEphdmFTY3JpcHQgZXF1aXZhbGVudHMgKGBgTmFOYGAsIGBgSW5maW5pdHlgYCwgYGAtSW5maW5pdHlgYCkuCgogICAgSWYgYGBpbmRlbnRgYCBpcyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCB0aGVuIEpTT04gYXJyYXkgZWxlbWVudHMgYW5kCiAgICBvYmplY3QgbWVtYmVycyB3aWxsIGJlIHByZXR0eS1wcmludGVkIHdpdGggdGhhdCBpbmRlbnQgbGV2ZWwuIEFuIGluZGVudAogICAgbGV2ZWwgb2YgMCB3aWxsIG9ubHkgaW5zZXJ0IG5ld2xpbmVzLiBgYE5vbmVgYCBpcyB0aGUgbW9zdCBjb21wYWN0CiAgICByZXByZXNlbnRhdGlvbi4KCiAgICBJZiBzcGVjaWZpZWQsIGBgc2VwYXJhdG9yc2BgIHNob3VsZCBiZSBhbiBgYChpdGVtX3NlcGFyYXRvciwga2V5X3NlcGFyYXRvcilgYAogICAgdHVwbGUuICBUaGUgZGVmYXVsdCBpcyBgYCgnLCAnLCAnOiAnKWBgIGlmICppbmRlbnQqIGlzIGBgTm9uZWBgIGFuZAogICAgYGAoJywnLCAnOiAnKWBgIG90aGVyd2lzZS4gIFRvIGdldCB0aGUgbW9zdCBjb21wYWN0IEpTT04gcmVwcmVzZW50YXRpb24sCiAgICB5b3Ugc2hvdWxkIHNwZWNpZnkgYGAoJywnLCAnOicpYGAgdG8gZWxpbWluYXRlIHdoaXRlc3BhY2UuCgogICAgYGBkZWZhdWx0KG9iailgYCBpcyBhIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIHJldHVybiBhIHNlcmlhbGl6YWJsZSB2ZXJzaW9uCiAgICBvZiBvYmogb3IgcmFpc2UgVHlwZUVycm9yLiBUaGUgZGVmYXVsdCBzaW1wbHkgcmFpc2VzIFR5cGVFcnJvci4KCiAgICBJZiAqc29ydF9rZXlzKiBpcyB0cnVlIChkZWZhdWx0OiBgYEZhbHNlYGApLCB0aGVuIHRoZSBvdXRwdXQgb2YKICAgIGRpY3Rpb25hcmllcyB3aWxsIGJlIHNvcnRlZCBieSBrZXkuCgogICAgVG8gdXNlIGEgY3VzdG9tIGBgSlNPTkVuY29kZXJgYCBzdWJjbGFzcyAoZS5nLiBvbmUgdGhhdCBvdmVycmlkZXMgdGhlCiAgICBgYC5kZWZhdWx0KClgYCBtZXRob2QgdG8gc2VyaWFsaXplIGFkZGl0aW9uYWwgdHlwZXMpLCBzcGVjaWZ5IGl0IHdpdGgKICAgIHRoZSBgYGNsc2BgIGt3YXJnOyBvdGhlcndpc2UgYGBKU09ORW5jb2RlcmBgIGlzIHVzZWQuCgogICAgIiIiCiAgICAjIGNhY2hlZCBlbmNvZGVyCiAgICBpZiAobm90IHNraXBrZXlzIGFuZCBlbnN1cmVfYXNjaWkgYW5kCiAgICAgICAgY2hlY2tfY2lyY3VsYXIgYW5kIGFsbG93X25hbiBhbmQKICAgICAgICBjbHMgaXMgTm9uZSBhbmQgaW5kZW50IGlzIE5vbmUgYW5kIHNlcGFyYXRvcnMgaXMgTm9uZSBhbmQKICAgICAgICBkZWZhdWx0IGlzIE5vbmUgYW5kIG5vdCBzb3J0X2tleXMgYW5kIG5vdCBrdyk6CiAgICAgICAgaXRlcmFibGUgPSBfZGVmYXVsdF9lbmNvZGVyLml0ZXJlbmNvZGUob2JqKQogICAgZWxzZToKICAgICAgICBpZiBjbHMgaXMgTm9uZToKICAgICAgICAgICAgY2xzID0gSlNPTkVuY29kZXIKICAgICAgICBpdGVyYWJsZSA9IGNscyhza2lwa2V5cz1za2lwa2V5cywgZW5zdXJlX2FzY2lpPWVuc3VyZV9hc2NpaSwKICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9Y2hlY2tfY2lyY3VsYXIsIGFsbG93X25hbj1hbGxvd19uYW4sIGluZGVudD1pbmRlbnQsCiAgICAgICAgICAgIHNlcGFyYXRvcnM9c2VwYXJhdG9ycywKICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0LCBzb3J0X2tleXM9c29ydF9rZXlzLCAqKmt3KS5pdGVyZW5jb2RlKG9iaikKICAgICMgY291bGQgYWNjZWxlcmF0ZSB3aXRoIHdyaXRlbGluZXMgaW4gc29tZSB2ZXJzaW9ucyBvZiBQeXRob24sIGF0CiAgICAjIGEgZGVidWdnYWJpbGl0eSBjb3N0CiAgICBmb3IgY2h1bmsgaW4gaXRlcmFibGU6CiAgICAgICAgZnAud3JpdGUoY2h1bmspCgoKZGVmIGR1bXBzKG9iaiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgICAgIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwKICAgICAgICBkZWZhdWx0PU5vbmUsIHNvcnRfa2V5cz1GYWxzZSwgKiprdyk6CiAgICAiIiJTZXJpYWxpemUgYGBvYmpgYCB0byBhIEpTT04gZm9ybWF0dGVkIGBgc3RyYGAuCgogICAgSWYgYGBza2lwa2V5c2BgIGlzIHRydWUgdGhlbiBgYGRpY3RgYCBrZXlzIHRoYXQgYXJlIG5vdCBiYXNpYyB0eXBlcwogICAgKGBgc3RyYGAsIGBgaW50YGAsIGBgZmxvYXRgYCwgYGBib29sYGAsIGBgTm9uZWBgKSB3aWxsIGJlIHNraXBwZWQKICAgIGluc3RlYWQgb2YgcmFpc2luZyBhIGBgVHlwZUVycm9yYGAuCgogICAgSWYgYGBlbnN1cmVfYXNjaWlgYCBpcyBmYWxzZSwgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIGNhbiBjb250YWluIG5vbi1BU0NJSQogICAgY2hhcmFjdGVycyBpZiB0aGV5IGFwcGVhciBpbiBzdHJpbmdzIGNvbnRhaW5lZCBpbiBgYG9iamBgLiBPdGhlcndpc2UsIGFsbAogICAgc3VjaCBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkIGluIEpTT04gc3RyaW5ncy4KCiAgICBJZiBgYGNoZWNrX2NpcmN1bGFyYGAgaXMgZmFsc2UsIHRoZW4gdGhlIGNpcmN1bGFyIHJlZmVyZW5jZSBjaGVjawogICAgZm9yIGNvbnRhaW5lciB0eXBlcyB3aWxsIGJlIHNraXBwZWQgYW5kIGEgY2lyY3VsYXIgcmVmZXJlbmNlIHdpbGwKICAgIHJlc3VsdCBpbiBhbiBgYFJlY3Vyc2lvbkVycm9yYGAgKG9yIHdvcnNlKS4KCiAgICBJZiBgYGFsbG93X25hbmBgIGlzIGZhbHNlLCB0aGVuIGl0IHdpbGwgYmUgYSBgYFZhbHVlRXJyb3JgYCB0bwogICAgc2VyaWFsaXplIG91dCBvZiByYW5nZSBgYGZsb2F0YGAgdmFsdWVzIChgYG5hbmBgLCBgYGluZmBgLCBgYC1pbmZgYCkgaW4KICAgIHN0cmljdCBjb21wbGlhbmNlIG9mIHRoZSBKU09OIHNwZWNpZmljYXRpb24sIGluc3RlYWQgb2YgdXNpbmcgdGhlCiAgICBKYXZhU2NyaXB0IGVxdWl2YWxlbnRzIChgYE5hTmBgLCBgYEluZmluaXR5YGAsIGBgLUluZmluaXR5YGApLgoKICAgIElmIGBgaW5kZW50YGAgaXMgYSBub24tbmVnYXRpdmUgaW50ZWdlciwgdGhlbiBKU09OIGFycmF5IGVsZW1lbnRzIGFuZAogICAgb2JqZWN0IG1lbWJlcnMgd2lsbCBiZSBwcmV0dHktcHJpbnRlZCB3aXRoIHRoYXQgaW5kZW50IGxldmVsLiBBbiBpbmRlbnQKICAgIGxldmVsIG9mIDAgd2lsbCBvbmx5IGluc2VydCBuZXdsaW5lcy4gYGBOb25lYGAgaXMgdGhlIG1vc3QgY29tcGFjdAogICAgcmVwcmVzZW50YXRpb24uCgogICAgSWYgc3BlY2lmaWVkLCBgYHNlcGFyYXRvcnNgYCBzaG91bGQgYmUgYW4gYGAoaXRlbV9zZXBhcmF0b3IsIGtleV9zZXBhcmF0b3IpYGAKICAgIHR1cGxlLiAgVGhlIGRlZmF1bHQgaXMgYGAoJywgJywgJzogJylgYCBpZiAqaW5kZW50KiBpcyBgYE5vbmVgYCBhbmQKICAgIGBgKCcsJywgJzogJylgYCBvdGhlcndpc2UuICBUbyBnZXQgdGhlIG1vc3QgY29tcGFjdCBKU09OIHJlcHJlc2VudGF0aW9uLAogICAgeW91IHNob3VsZCBzcGVjaWZ5IGBgKCcsJywgJzonKWBgIHRvIGVsaW1pbmF0ZSB3aGl0ZXNwYWNlLgoKICAgIGBgZGVmYXVsdChvYmopYGAgaXMgYSBmdW5jdGlvbiB0aGF0IHNob3VsZCByZXR1cm4gYSBzZXJpYWxpemFibGUgdmVyc2lvbgogICAgb2Ygb2JqIG9yIHJhaXNlIFR5cGVFcnJvci4gVGhlIGRlZmF1bHQgc2ltcGx5IHJhaXNlcyBUeXBlRXJyb3IuCgogICAgSWYgKnNvcnRfa2V5cyogaXMgdHJ1ZSAoZGVmYXVsdDogYGBGYWxzZWBgKSwgdGhlbiB0aGUgb3V0cHV0IG9mCiAgICBkaWN0aW9uYXJpZXMgd2lsbCBiZSBzb3J0ZWQgYnkga2V5LgoKICAgIFRvIHVzZSBhIGN1c3RvbSBgYEpTT05FbmNvZGVyYGAgc3ViY2xhc3MgKGUuZy4gb25lIHRoYXQgb3ZlcnJpZGVzIHRoZQogICAgYGAuZGVmYXVsdCgpYGAgbWV0aG9kIHRvIHNlcmlhbGl6ZSBhZGRpdGlvbmFsIHR5cGVzKSwgc3BlY2lmeSBpdCB3aXRoCiAgICB0aGUgYGBjbHNgYCBrd2FyZzsgb3RoZXJ3aXNlIGBgSlNPTkVuY29kZXJgYCBpcyB1c2VkLgoKICAgICIiIgogICAgIyBjYWNoZWQgZW5jb2RlcgogICAgaWYgKG5vdCBza2lwa2V5cyBhbmQgZW5zdXJlX2FzY2lpIGFuZAogICAgICAgIGNoZWNrX2NpcmN1bGFyIGFuZCBhbGxvd19uYW4gYW5kCiAgICAgICAgY2xzIGlzIE5vbmUgYW5kIGluZGVudCBpcyBOb25lIGFuZCBzZXBhcmF0b3JzIGlzIE5vbmUgYW5kCiAgICAgICAgZGVmYXVsdCBpcyBOb25lIGFuZCBub3Qgc29ydF9rZXlzIGFuZCBub3Qga3cpOgogICAgICAgIHJldHVybiBfZGVmYXVsdF9lbmNvZGVyLmVuY29kZShvYmopCiAgICBpZiBjbHMgaXMgTm9uZToKICAgICAgICBjbHMgPSBKU09ORW5jb2RlcgogICAgcmV0dXJuIGNscygKICAgICAgICBza2lwa2V5cz1za2lwa2V5cywgZW5zdXJlX2FzY2lpPWVuc3VyZV9hc2NpaSwKICAgICAgICBjaGVja19jaXJjdWxhcj1jaGVja19jaXJjdWxhciwgYWxsb3dfbmFuPWFsbG93X25hbiwgaW5kZW50PWluZGVudCwKICAgICAgICBzZXBhcmF0b3JzPXNlcGFyYXRvcnMsIGRlZmF1bHQ9ZGVmYXVsdCwgc29ydF9rZXlzPXNvcnRfa2V5cywKICAgICAgICAqKmt3KS5lbmNvZGUob2JqKQoKCl9kZWZhdWx0X2RlY29kZXIgPSBKU09ORGVjb2RlcihvYmplY3RfaG9vaz1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKQoKCmRlZiBkZXRlY3RfZW5jb2RpbmcoYik6CiAgICBic3RhcnRzd2l0aCA9IGIuc3RhcnRzd2l0aAogICAgaWYgYnN0YXJ0c3dpdGgoKGNvZGVjcy5CT01fVVRGMzJfQkUsIGNvZGVjcy5CT01fVVRGMzJfTEUpKToKICAgICAgICByZXR1cm4gJ3V0Zi0zMicKICAgIGlmIGJzdGFydHN3aXRoKChjb2RlY3MuQk9NX1VURjE2X0JFLCBjb2RlY3MuQk9NX1VURjE2X0xFKSk6CiAgICAgICAgcmV0dXJuICd1dGYtMTYnCiAgICBpZiBic3RhcnRzd2l0aChjb2RlY3MuQk9NX1VURjgpOgogICAgICAgIHJldHVybiAndXRmLTgtc2lnJwoKICAgIGlmIGxlbihiKSA+PSA0OgogICAgICAgIGlmIG5vdCBiWzBdOgogICAgICAgICAgICAjIDAwIDAwIC0tIC0tIC0gdXRmLTMyLWJlCiAgICAgICAgICAgICMgMDAgWFggLS0gLS0gLSB1dGYtMTYtYmUKICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtYmUnIGlmIGJbMV0gZWxzZSAndXRmLTMyLWJlJwogICAgICAgIGlmIG5vdCBiWzFdOgogICAgICAgICAgICAjIFhYIDAwIDAwIDAwIC0gdXRmLTMyLWxlCiAgICAgICAgICAgICMgWFggMDAgMDAgWFggLSB1dGYtMTYtbGUKICAgICAgICAgICAgIyBYWCAwMCBYWCAtLSAtIHV0Zi0xNi1sZQogICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1sZScgaWYgYlsyXSBvciBiWzNdIGVsc2UgJ3V0Zi0zMi1sZScKICAgIGVsaWYgbGVuKGIpID09IDI6CiAgICAgICAgaWYgbm90IGJbMF06CiAgICAgICAgICAgICMgMDAgWFggLSB1dGYtMTYtYmUKICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtYmUnCiAgICAgICAgaWYgbm90IGJbMV06CiAgICAgICAgICAgICMgWFggMDAgLSB1dGYtMTYtbGUKICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtbGUnCiAgICAjIGRlZmF1bHQKICAgIHJldHVybiAndXRmLTgnCgoKZGVmIGxvYWQoZnAsICosIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KToKICAgICIiIkRlc2VyaWFsaXplIGBgZnBgYCAoYSBgYC5yZWFkKClgYC1zdXBwb3J0aW5nIGZpbGUtbGlrZSBvYmplY3QgY29udGFpbmluZwogICAgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCgogICAgYGBvYmplY3RfaG9va2BgIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUKICAgIHJlc3VsdCBvZiBhbnkgb2JqZWN0IGxpdGVyYWwgZGVjb2RlIChhIGBgZGljdGBgKS4gVGhlIHJldHVybiB2YWx1ZSBvZgogICAgYGBvYmplY3RfaG9va2BgIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBgYGRpY3RgYC4gVGhpcyBmZWF0dXJlCiAgICBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgY3VzdG9tIGRlY29kZXJzIChlLmcuIEpTT04tUlBDIGNsYXNzIGhpbnRpbmcpLgoKICAgIGBgb2JqZWN0X3BhaXJzX2hvb2tgYCBpcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlCiAgICByZXN1bHQgb2YgYW55IG9iamVjdCBsaXRlcmFsIGRlY29kZWQgd2l0aCBhbiBvcmRlcmVkIGxpc3Qgb2YgcGFpcnMuICBUaGUKICAgIHJldHVybiB2YWx1ZSBvZiBgYG9iamVjdF9wYWlyc19ob29rYGAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGBgZGljdGBgLgogICAgVGhpcyBmZWF0dXJlIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBjdXN0b20gZGVjb2RlcnMuICBJZiBgYG9iamVjdF9ob29rYGAKICAgIGlzIGFsc28gZGVmaW5lZCwgdGhlIGBgb2JqZWN0X3BhaXJzX2hvb2tgYCB0YWtlcyBwcmlvcml0eS4KCiAgICBUbyB1c2UgYSBjdXN0b20gYGBKU09ORGVjb2RlcmBgIHN1YmNsYXNzLCBzcGVjaWZ5IGl0IHdpdGggdGhlIGBgY2xzYGAKICAgIGt3YXJnOyBvdGhlcndpc2UgYGBKU09ORGVjb2RlcmBgIGlzIHVzZWQuCiAgICAiIiIKICAgIHJldHVybiBsb2FkcyhmcC5yZWFkKCksCiAgICAgICAgY2xzPWNscywgb2JqZWN0X2hvb2s9b2JqZWN0X2hvb2ssCiAgICAgICAgcGFyc2VfZmxvYXQ9cGFyc2VfZmxvYXQsIHBhcnNlX2ludD1wYXJzZV9pbnQsCiAgICAgICAgcGFyc2VfY29uc3RhbnQ9cGFyc2VfY29uc3RhbnQsIG9iamVjdF9wYWlyc19ob29rPW9iamVjdF9wYWlyc19ob29rLCAqKmt3KQoKCmRlZiBsb2FkcyhzLCAqLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdyk6CiAgICAiIiJEZXNlcmlhbGl6ZSBgYHNgYCAoYSBgYHN0cmBgLCBgYGJ5dGVzYGAgb3IgYGBieXRlYXJyYXlgYCBpbnN0YW5jZQogICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdC4KCiAgICBgYG9iamVjdF9ob29rYGAgaXMgYW4gb3B0aW9uYWwgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZQogICAgcmVzdWx0IG9mIGFueSBvYmplY3QgbGl0ZXJhbCBkZWNvZGUgKGEgYGBkaWN0YGApLiBUaGUgcmV0dXJuIHZhbHVlIG9mCiAgICBgYG9iamVjdF9ob29rYGAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGBgZGljdGBgLiBUaGlzIGZlYXR1cmUKICAgIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBjdXN0b20gZGVjb2RlcnMgKGUuZy4gSlNPTi1SUEMgY2xhc3MgaGludGluZykuCgogICAgYGBvYmplY3RfcGFpcnNfaG9va2BgIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUKICAgIHJlc3VsdCBvZiBhbnkgb2JqZWN0IGxpdGVyYWwgZGVjb2RlZCB3aXRoIGFuIG9yZGVyZWQgbGlzdCBvZiBwYWlycy4gIFRoZQogICAgcmV0dXJuIHZhbHVlIG9mIGBgb2JqZWN0X3BhaXJzX2hvb2tgYCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgYGBkaWN0YGAuCiAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50IGN1c3RvbSBkZWNvZGVycy4gIElmIGBgb2JqZWN0X2hvb2tgYAogICAgaXMgYWxzbyBkZWZpbmVkLCB0aGUgYGBvYmplY3RfcGFpcnNfaG9va2BgIHRha2VzIHByaW9yaXR5LgoKICAgIGBgcGFyc2VfZmxvYXRgYCwgaWYgc3BlY2lmaWVkLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzdHJpbmcKICAgIG9mIGV2ZXJ5IEpTT04gZmxvYXQgdG8gYmUgZGVjb2RlZC4gQnkgZGVmYXVsdCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KICAgIGZsb2F0KG51bV9zdHIpLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHVzZSBhbm90aGVyIGRhdGF0eXBlIG9yIHBhcnNlcgogICAgZm9yIEpTT04gZmxvYXRzIChlLmcuIGRlY2ltYWwuRGVjaW1hbCkuCgogICAgYGBwYXJzZV9pbnRgYCwgaWYgc3BlY2lmaWVkLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzdHJpbmcKICAgIG9mIGV2ZXJ5IEpTT04gaW50IHRvIGJlIGRlY29kZWQuIEJ5IGRlZmF1bHQgdGhpcyBpcyBlcXVpdmFsZW50IHRvCiAgICBpbnQobnVtX3N0cikuIFRoaXMgY2FuIGJlIHVzZWQgdG8gdXNlIGFub3RoZXIgZGF0YXR5cGUgb3IgcGFyc2VyCiAgICBmb3IgSlNPTiBpbnRlZ2VycyAoZS5nLiBmbG9hdCkuCgogICAgYGBwYXJzZV9jb25zdGFudGBgLCBpZiBzcGVjaWZpZWQsIHdpbGwgYmUgY2FsbGVkIHdpdGggb25lIG9mIHRoZQogICAgZm9sbG93aW5nIHN0cmluZ3M6IC1JbmZpbml0eSwgSW5maW5pdHksIE5hTi4KICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGludmFsaWQgSlNPTiBudW1iZXJzCiAgICBhcmUgZW5jb3VudGVyZWQuCgogICAgVG8gdXNlIGEgY3VzdG9tIGBgSlNPTkRlY29kZXJgYCBzdWJjbGFzcywgc3BlY2lmeSBpdCB3aXRoIHRoZSBgYGNsc2BgCiAgICBrd2FyZzsgb3RoZXJ3aXNlIGBgSlNPTkRlY29kZXJgYCBpcyB1c2VkLgogICAgIiIiCiAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CiAgICAgICAgaWYgcy5zdGFydHN3aXRoKCdcdWZlZmYnKToKICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbmV4cGVjdGVkIFVURi04IEJPTSAoZGVjb2RlIHVzaW5nIHV0Zi04LXNpZykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgMCkKICAgIGVsc2U6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocywgKGJ5dGVzLCBieXRlYXJyYXkpKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyLCBieXRlcyBvciBieXRlYXJyYXksICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYnbm90IHtzLl9fY2xhc3NfXy5fX25hbWVfX30nKQogICAgICAgIHMgPSBzLmRlY29kZShkZXRlY3RfZW5jb2RpbmcocyksICdzdXJyb2dhdGVwYXNzJykKCiAgICBpZiAoY2xzIGlzIE5vbmUgYW5kIG9iamVjdF9ob29rIGlzIE5vbmUgYW5kCiAgICAgICAgICAgIHBhcnNlX2ludCBpcyBOb25lIGFuZCBwYXJzZV9mbG9hdCBpcyBOb25lIGFuZAogICAgICAgICAgICBwYXJzZV9jb25zdGFudCBpcyBOb25lIGFuZCBvYmplY3RfcGFpcnNfaG9vayBpcyBOb25lIGFuZCBub3Qga3cpOgogICAgICAgIHJldHVybiBfZGVmYXVsdF9kZWNvZGVyLmRlY29kZShzKQogICAgaWYgY2xzIGlzIE5vbmU6CiAgICAgICAgY2xzID0gSlNPTkRlY29kZXIKICAgIGlmIG9iamVjdF9ob29rIGlzIG5vdCBOb25lOgogICAgICAgIGt3WydvYmplY3RfaG9vayddID0gb2JqZWN0X2hvb2sKICAgIGlmIG9iamVjdF9wYWlyc19ob29rIGlzIG5vdCBOb25lOgogICAgICAgIGt3WydvYmplY3RfcGFpcnNfaG9vayddID0gb2JqZWN0X3BhaXJzX2hvb2sKICAgIGlmIHBhcnNlX2Zsb2F0IGlzIG5vdCBOb25lOgogICAgICAgIGt3WydwYXJzZV9mbG9hdCddID0gcGFyc2VfZmxvYXQKICAgIGlmIHBhcnNlX2ludCBpcyBub3QgTm9uZToKICAgICAgICBrd1sncGFyc2VfaW50J10gPSBwYXJzZV9pbnQKICAgIGlmIHBhcnNlX2NvbnN0YW50IGlzIG5vdCBOb25lOgogICAgICAgIGt3WydwYXJzZV9jb25zdGFudCddID0gcGFyc2VfY29uc3RhbnQKICAgIHJldHVybiBjbHMoKiprdykuZGVjb2RlKHMpClBLAwQUAAAAAAADIKNWqdZtwLkwAAC5MAAADwAAAGpzb24vZGVjb2Rlci5weSIiIkltcGxlbWVudGF0aW9uIG9mIEpTT05EZWNvZGVyCiIiIgppbXBvcnQgcmUKCmZyb20ganNvbiBpbXBvcnQgc2Nhbm5lcgp0cnk6CiAgICBmcm9tIF9qc29uIGltcG9ydCBzY2Fuc3RyaW5nIGFzIGNfc2NhbnN0cmluZwpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBjX3NjYW5zdHJpbmcgPSBOb25lCgpfX2FsbF9fID0gWydKU09ORGVjb2RlcicsICdKU09ORGVjb2RlRXJyb3InXQoKRkxBR1MgPSByZS5WRVJCT1NFIHwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMCgpOYU4gPSBmbG9hdCgnbmFuJykKUG9zSW5mID0gZmxvYXQoJ2luZicpCk5lZ0luZiA9IGZsb2F0KCctaW5mJykKCgpjbGFzcyBKU09ORGVjb2RlRXJyb3IoVmFsdWVFcnJvcik6CiAgICAiIiJTdWJjbGFzcyBvZiBWYWx1ZUVycm9yIHdpdGggdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHByb3BlcnRpZXM6CgogICAgbXNnOiBUaGUgdW5mb3JtYXR0ZWQgZXJyb3IgbWVzc2FnZQogICAgZG9jOiBUaGUgSlNPTiBkb2N1bWVudCBiZWluZyBwYXJzZWQKICAgIHBvczogVGhlIHN0YXJ0IGluZGV4IG9mIGRvYyB3aGVyZSBwYXJzaW5nIGZhaWxlZAogICAgbGluZW5vOiBUaGUgbGluZSBjb3JyZXNwb25kaW5nIHRvIHBvcwogICAgY29sbm86IFRoZSBjb2x1bW4gY29ycmVzcG9uZGluZyB0byBwb3MKCiAgICAiIiIKICAgICMgTm90ZSB0aGF0IHRoaXMgZXhjZXB0aW9uIGlzIHVzZWQgZnJvbSBfanNvbgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgZG9jLCBwb3MpOgogICAgICAgIGxpbmVubyA9IGRvYy5jb3VudCgnXG4nLCAwLCBwb3MpICsgMQogICAgICAgIGNvbG5vID0gcG9zIC0gZG9jLnJmaW5kKCdcbicsIDAsIHBvcykKICAgICAgICBlcnJtc2cgPSAnJXM6IGxpbmUgJWQgY29sdW1uICVkIChjaGFyICVkKScgJSAobXNnLCBsaW5lbm8sIGNvbG5vLCBwb3MpCiAgICAgICAgVmFsdWVFcnJvci5fX2luaXRfXyhzZWxmLCBlcnJtc2cpCiAgICAgICAgc2VsZi5tc2cgPSBtc2cKICAgICAgICBzZWxmLmRvYyA9IGRvYwogICAgICAgIHNlbGYucG9zID0gcG9zCiAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KICAgICAgICBzZWxmLmNvbG5vID0gY29sbm8KCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChzZWxmLm1zZywgc2VsZi5kb2MsIHNlbGYucG9zKQoKCl9DT05TVEFOVFMgPSB7CiAgICAnLUluZmluaXR5JzogTmVnSW5mLAogICAgJ0luZmluaXR5JzogUG9zSW5mLAogICAgJ05hTic6IE5hTiwKfQoKClNUUklOR0NIVU5LID0gcmUuY29tcGlsZShyJyguKj8pKFsiXFxceDAwLVx4MWZdKScsIEZMQUdTKQpCQUNLU0xBU0ggPSB7CiAgICAnIic6ICciJywgJ1xcJzogJ1xcJywgJy8nOiAnLycsCiAgICAnYic6ICdcYicsICdmJzogJ1xmJywgJ24nOiAnXG4nLCAncic6ICdccicsICd0JzogJ1x0JywKfQoKZGVmIF9kZWNvZGVfdVhYWFgocywgcG9zKToKICAgIGVzYyA9IHNbcG9zICsgMTpwb3MgKyA1XQogICAgaWYgbGVuKGVzYykgPT0gNCBhbmQgZXNjWzFdIG5vdCBpbiAneFgnOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGludChlc2MsIDE2KQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICBtc2cgPSAiSW52YWxpZCBcXHVYWFhYIGVzY2FwZSIKICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcihtc2csIHMsIHBvcykKCmRlZiBweV9zY2Fuc3RyaW5nKHMsIGVuZCwgc3RyaWN0PVRydWUsCiAgICAgICAgX2I9QkFDS1NMQVNILCBfbT1TVFJJTkdDSFVOSy5tYXRjaCk6CiAgICAiIiJTY2FuIHRoZSBzdHJpbmcgcyBmb3IgYSBKU09OIHN0cmluZy4gRW5kIGlzIHRoZSBpbmRleCBvZiB0aGUKICAgIGNoYXJhY3RlciBpbiBzIGFmdGVyIHRoZSBxdW90ZSB0aGF0IHN0YXJ0ZWQgdGhlIEpTT04gc3RyaW5nLgogICAgVW5lc2NhcGVzIGFsbCB2YWxpZCBKU09OIHN0cmluZyBlc2NhcGUgc2VxdWVuY2VzIGFuZCByYWlzZXMgVmFsdWVFcnJvcgogICAgb24gYXR0ZW1wdCB0byBkZWNvZGUgYW4gaW52YWxpZCBzdHJpbmcuIElmIHN0cmljdCBpcyBGYWxzZSB0aGVuIGxpdGVyYWwKICAgIGNvbnRyb2wgY2hhcmFjdGVycyBhcmUgYWxsb3dlZCBpbiB0aGUgc3RyaW5nLgoKICAgIFJldHVybnMgYSB0dXBsZSBvZiB0aGUgZGVjb2RlZCBzdHJpbmcgYW5kIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGluIHMKICAgIGFmdGVyIHRoZSBlbmQgcXVvdGUuIiIiCiAgICBjaHVua3MgPSBbXQogICAgX2FwcGVuZCA9IGNodW5rcy5hcHBlbmQKICAgIGJlZ2luID0gZW5kIC0gMQogICAgd2hpbGUgMToKICAgICAgICBjaHVuayA9IF9tKHMsIGVuZCkKICAgICAgICBpZiBjaHVuayBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVudGVybWluYXRlZCBzdHJpbmcgc3RhcnRpbmcgYXQiLCBzLCBiZWdpbikKICAgICAgICBlbmQgPSBjaHVuay5lbmQoKQogICAgICAgIGNvbnRlbnQsIHRlcm1pbmF0b3IgPSBjaHVuay5ncm91cHMoKQogICAgICAgICMgQ29udGVudCBpcyBjb250YWlucyB6ZXJvIG9yIG1vcmUgdW5lc2NhcGVkIHN0cmluZyBjaGFyYWN0ZXJzCiAgICAgICAgaWYgY29udGVudDoKICAgICAgICAgICAgX2FwcGVuZChjb250ZW50KQogICAgICAgICMgVGVybWluYXRvciBpcyB0aGUgZW5kIG9mIHN0cmluZywgYSBsaXRlcmFsIGNvbnRyb2wgY2hhcmFjdGVyLAogICAgICAgICMgb3IgYSBiYWNrc2xhc2ggZGVub3RpbmcgdGhhdCBhbiBlc2NhcGUgc2VxdWVuY2UgZm9sbG93cwogICAgICAgIGlmIHRlcm1pbmF0b3IgPT0gJyInOgogICAgICAgICAgICBicmVhawogICAgICAgIGVsaWYgdGVybWluYXRvciAhPSAnXFwnOgogICAgICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICAgICAjbXNnID0gIkludmFsaWQgY29udHJvbCBjaGFyYWN0ZXIgJXIgYXQiICUgKHRlcm1pbmF0b3IsKQogICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgY29udHJvbCBjaGFyYWN0ZXIgezAhcn0gYXQiLmZvcm1hdCh0ZXJtaW5hdG9yKQogICAgICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKG1zZywgcywgZW5kKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgX2FwcGVuZCh0ZXJtaW5hdG9yKQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGVzYyA9IHNbZW5kXQogICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVudGVybWluYXRlZCBzdHJpbmcgc3RhcnRpbmcgYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYmVnaW4pIGZyb20gTm9uZQogICAgICAgICMgSWYgbm90IGEgdW5pY29kZSBlc2NhcGUgc2VxdWVuY2UsIG11c3QgYmUgaW4gdGhlIGxvb2t1cCB0YWJsZQogICAgICAgIGlmIGVzYyAhPSAndSc6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGNoYXIgPSBfYltlc2NdCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIG1zZyA9ICJJbnZhbGlkIFxcZXNjYXBlOiB7MCFyfSIuZm9ybWF0KGVzYykKICAgICAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcihtc2csIHMsIGVuZCkKICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICBlbHNlOgogICAgICAgICAgICB1bmkgPSBfZGVjb2RlX3VYWFhYKHMsIGVuZCkKICAgICAgICAgICAgZW5kICs9IDUKICAgICAgICAgICAgaWYgMHhkODAwIDw9IHVuaSA8PSAweGRiZmYgYW5kIHNbZW5kOmVuZCArIDJdID09ICdcXHUnOgogICAgICAgICAgICAgICAgdW5pMiA9IF9kZWNvZGVfdVhYWFgocywgZW5kICsgMSkKICAgICAgICAgICAgICAgIGlmIDB4ZGMwMCA8PSB1bmkyIDw9IDB4ZGZmZjoKICAgICAgICAgICAgICAgICAgICB1bmkgPSAweDEwMDAwICsgKCgodW5pIC0gMHhkODAwKSA8PCAxMCkgfCAodW5pMiAtIDB4ZGMwMCkpCiAgICAgICAgICAgICAgICAgICAgZW5kICs9IDYKICAgICAgICAgICAgY2hhciA9IGNocih1bmkpCiAgICAgICAgX2FwcGVuZChjaGFyKQogICAgcmV0dXJuICcnLmpvaW4oY2h1bmtzKSwgZW5kCgoKIyBVc2Ugc3BlZWR1cCBpZiBhdmFpbGFibGUKc2NhbnN0cmluZyA9IGNfc2NhbnN0cmluZyBvciBweV9zY2Fuc3RyaW5nCgpXSElURVNQQUNFID0gcmUuY29tcGlsZShyJ1sgXHRcblxyXSonLCBGTEFHUykKV0hJVEVTUEFDRV9TVFIgPSAnIFx0XG5ccicKCgpkZWYgSlNPTk9iamVjdChzX2FuZF9lbmQsIHN0cmljdCwgc2Nhbl9vbmNlLCBvYmplY3RfaG9vaywgb2JqZWN0X3BhaXJzX2hvb2ssCiAgICAgICAgICAgICAgIG1lbW89Tm9uZSwgX3c9V0hJVEVTUEFDRS5tYXRjaCwgX3dzPVdISVRFU1BBQ0VfU1RSKToKICAgIHMsIGVuZCA9IHNfYW5kX2VuZAogICAgcGFpcnMgPSBbXQogICAgcGFpcnNfYXBwZW5kID0gcGFpcnMuYXBwZW5kCiAgICAjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICBpZiBtZW1vIGlzIE5vbmU6CiAgICAgICAgbWVtbyA9IHt9CiAgICBtZW1vX2dldCA9IG1lbW8uc2V0ZGVmYXVsdAogICAgIyBVc2UgYSBzbGljZSB0byBwcmV2ZW50IEluZGV4RXJyb3IgZnJvbSBiZWluZyByYWlzZWQsIHRoZSBmb2xsb3dpbmcKICAgICMgY2hlY2sgd2lsbCByYWlzZSBhIG1vcmUgc3BlY2lmaWMgVmFsdWVFcnJvciBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5CiAgICBuZXh0Y2hhciA9IHNbZW5kOmVuZCArIDFdCiAgICAjIE5vcm1hbGx5IHdlIGV4cGVjdCBuZXh0Y2hhciA9PSAnIicKICAgIGlmIG5leHRjaGFyICE9ICciJzoKICAgICAgICBpZiBuZXh0Y2hhciBpbiBfd3M6CiAgICAgICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCkKICAgICAgICAgICAgbmV4dGNoYXIgPSBzW2VuZDplbmQgKyAxXQogICAgICAgICMgVHJpdmlhbCBlbXB0eSBvYmplY3QKICAgICAgICBpZiBuZXh0Y2hhciA9PSAnfSc6CiAgICAgICAgICAgIGlmIG9iamVjdF9wYWlyc19ob29rIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gb2JqZWN0X3BhaXJzX2hvb2socGFpcnMpCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LCBlbmQgKyAxCiAgICAgICAgICAgIHBhaXJzID0ge30KICAgICAgICAgICAgaWYgb2JqZWN0X2hvb2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBwYWlycyA9IG9iamVjdF9ob29rKHBhaXJzKQogICAgICAgICAgICByZXR1cm4gcGFpcnMsIGVuZCArIDEKICAgICAgICBlbGlmIG5leHRjaGFyICE9ICciJzoKICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKAogICAgICAgICAgICAgICAgIkV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMiLCBzLCBlbmQpCiAgICBlbmQgKz0gMQogICAgd2hpbGUgVHJ1ZToKICAgICAgICBrZXksIGVuZCA9IHNjYW5zdHJpbmcocywgZW5kLCBzdHJpY3QpCiAgICAgICAga2V5ID0gbWVtb19nZXQoa2V5LCBrZXkpCiAgICAgICAgIyBUbyBza2lwIHNvbWUgZnVuY3Rpb24gY2FsbCBvdmVyaGVhZCB3ZSBvcHRpbWl6ZSB0aGUgZmFzdCBwYXRocyB3aGVyZQogICAgICAgICMgdGhlIEpTT04ga2V5IHNlcGFyYXRvciBpcyAiOiAiIG9yIGp1c3QgIjoiLgogICAgICAgIGlmIHNbZW5kOmVuZCArIDFdICE9ICc6JzoKICAgICAgICAgICAgZW5kID0gX3cocywgZW5kKS5lbmQoKQogICAgICAgICAgICBpZiBzW2VuZDplbmQgKyAxXSAhPSAnOic6CiAgICAgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyAnOicgZGVsaW1pdGVyIiwgcywgZW5kKQogICAgICAgIGVuZCArPSAxCgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc1tlbmRdIGluIF93czoKICAgICAgICAgICAgICAgIGVuZCArPSAxCiAgICAgICAgICAgICAgICBpZiBzW2VuZF0gaW4gX3dzOgogICAgICAgICAgICAgICAgICAgIGVuZCA9IF93KHMsIGVuZCArIDEpLmVuZCgpCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICAgICAgdHJ5OgogICAgICAgICAgICB2YWx1ZSwgZW5kID0gc2Nhbl9vbmNlKHMsIGVuZCkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlcnI6CiAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSBmcm9tIE5vbmUKICAgICAgICBwYWlyc19hcHBlbmQoKGtleSwgdmFsdWUpKQogICAgICAgIHRyeToKICAgICAgICAgICAgbmV4dGNoYXIgPSBzW2VuZF0KICAgICAgICAgICAgaWYgbmV4dGNoYXIgaW4gX3dzOgogICAgICAgICAgICAgICAgZW5kID0gX3cocywgZW5kICsgMSkuZW5kKCkKICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc1tlbmRdCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgIG5leHRjaGFyID0gJycKICAgICAgICBlbmQgKz0gMQoKICAgICAgICBpZiBuZXh0Y2hhciA9PSAnfSc6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxpZiBuZXh0Y2hhciAhPSAnLCc6CiAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCBzLCBlbmQgLSAxKQogICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCkKICAgICAgICBuZXh0Y2hhciA9IHNbZW5kOmVuZCArIDFdCiAgICAgICAgZW5kICs9IDEKICAgICAgICBpZiBuZXh0Y2hhciAhPSAnIic6CiAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigKICAgICAgICAgICAgICAgICJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcywgZW5kIC0gMSkKICAgIGlmIG9iamVjdF9wYWlyc19ob29rIGlzIG5vdCBOb25lOgogICAgICAgIHJlc3VsdCA9IG9iamVjdF9wYWlyc19ob29rKHBhaXJzKQogICAgICAgIHJldHVybiByZXN1bHQsIGVuZAogICAgcGFpcnMgPSBkaWN0KHBhaXJzKQogICAgaWYgb2JqZWN0X2hvb2sgaXMgbm90IE5vbmU6CiAgICAgICAgcGFpcnMgPSBvYmplY3RfaG9vayhwYWlycykKICAgIHJldHVybiBwYWlycywgZW5kCgpkZWYgSlNPTkFycmF5KHNfYW5kX2VuZCwgc2Nhbl9vbmNlLCBfdz1XSElURVNQQUNFLm1hdGNoLCBfd3M9V0hJVEVTUEFDRV9TVFIpOgogICAgcywgZW5kID0gc19hbmRfZW5kCiAgICB2YWx1ZXMgPSBbXQogICAgbmV4dGNoYXIgPSBzW2VuZDplbmQgKyAxXQogICAgaWYgbmV4dGNoYXIgaW4gX3dzOgogICAgICAgIGVuZCA9IF93KHMsIGVuZCArIDEpLmVuZCgpCiAgICAgICAgbmV4dGNoYXIgPSBzW2VuZDplbmQgKyAxXQogICAgIyBMb29rLWFoZWFkIGZvciB0cml2aWFsIGVtcHR5IGFycmF5CiAgICBpZiBuZXh0Y2hhciA9PSAnXSc6CiAgICAgICAgcmV0dXJuIHZhbHVlcywgZW5kICsgMQogICAgX2FwcGVuZCA9IHZhbHVlcy5hcHBlbmQKICAgIHdoaWxlIFRydWU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB2YWx1ZSwgZW5kID0gc2Nhbl9vbmNlKHMsIGVuZCkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlcnI6CiAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSBmcm9tIE5vbmUKICAgICAgICBfYXBwZW5kKHZhbHVlKQogICAgICAgIG5leHRjaGFyID0gc1tlbmQ6ZW5kICsgMV0KICAgICAgICBpZiBuZXh0Y2hhciBpbiBfd3M6CiAgICAgICAgICAgIGVuZCA9IF93KHMsIGVuZCArIDEpLmVuZCgpCiAgICAgICAgICAgIG5leHRjaGFyID0gc1tlbmQ6ZW5kICsgMV0KICAgICAgICBlbmQgKz0gMQogICAgICAgIGlmIG5leHRjaGFyID09ICddJzoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbGlmIG5leHRjaGFyICE9ICcsJzoKICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzW2VuZF0gaW4gX3dzOgogICAgICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgICAgICAgIGlmIHNbZW5kXSBpbiBfd3M6CiAgICAgICAgICAgICAgICAgICAgZW5kID0gX3cocywgZW5kICsgMSkuZW5kKCkKICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgcGFzcwoKICAgIHJldHVybiB2YWx1ZXMsIGVuZAoKCmNsYXNzIEpTT05EZWNvZGVyKG9iamVjdCk6CiAgICAiIiJTaW1wbGUgSlNPTiA8aHR0cHM6Ly9qc29uLm9yZz4gZGVjb2RlcgoKICAgIFBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdHJhbnNsYXRpb25zIGluIGRlY29kaW5nIGJ5IGRlZmF1bHQ6CgogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBKU09OICAgICAgICAgIHwgUHl0aG9uICAgICAgICAgICAgfAogICAgKz09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09KwogICAgfCBvYmplY3QgICAgICAgIHwgZGljdCAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBhcnJheSAgICAgICAgIHwgbGlzdCAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBzdHJpbmcgICAgICAgIHwgc3RyICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBudW1iZXIgKGludCkgIHwgaW50ICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBudW1iZXIgKHJlYWwpIHwgZmxvYXQgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCB0cnVlICAgICAgICAgIHwgVHJ1ZSAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBmYWxzZSAgICAgICAgIHwgRmFsc2UgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBudWxsICAgICAgICAgIHwgTm9uZSAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKwoKICAgIEl0IGFsc28gdW5kZXJzdGFuZHMgYGBOYU5gYCwgYGBJbmZpbml0eWBgLCBhbmQgYGAtSW5maW5pdHlgYCBhcwogICAgdGhlaXIgY29ycmVzcG9uZGluZyBgYGZsb2F0YGAgdmFsdWVzLCB3aGljaCBpcyBvdXRzaWRlIHRoZSBKU09OIHNwZWMuCgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICosIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCiAgICAgICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwKICAgICAgICAgICAgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSk6CiAgICAgICAgIiIiYGBvYmplY3RfaG9va2BgLCBpZiBzcGVjaWZpZWQsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdAogICAgICAgIG9mIGV2ZXJ5IEpTT04gb2JqZWN0IGRlY29kZWQgYW5kIGl0cyByZXR1cm4gdmFsdWUgd2lsbCBiZSB1c2VkIGluCiAgICAgICAgcGxhY2Ugb2YgdGhlIGdpdmVuIGBgZGljdGBgLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGN1c3RvbQogICAgICAgIGRlc2VyaWFsaXphdGlvbnMgKGUuZy4gdG8gc3VwcG9ydCBKU09OLVJQQyBjbGFzcyBoaW50aW5nKS4KCiAgICAgICAgYGBvYmplY3RfcGFpcnNfaG9va2BgLCBpZiBzcGVjaWZpZWQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IG9mCiAgICAgICAgZXZlcnkgSlNPTiBvYmplY3QgZGVjb2RlZCB3aXRoIGFuIG9yZGVyZWQgbGlzdCBvZiBwYWlycy4gIFRoZSByZXR1cm4KICAgICAgICB2YWx1ZSBvZiBgYG9iamVjdF9wYWlyc19ob29rYGAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGBgZGljdGBgLgogICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgY3VzdG9tIGRlY29kZXJzLgogICAgICAgIElmIGBgb2JqZWN0X2hvb2tgYCBpcyBhbHNvIGRlZmluZWQsIHRoZSBgYG9iamVjdF9wYWlyc19ob29rYGAgdGFrZXMKICAgICAgICBwcmlvcml0eS4KCiAgICAgICAgYGBwYXJzZV9mbG9hdGBgLCBpZiBzcGVjaWZpZWQsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHN0cmluZwogICAgICAgIG9mIGV2ZXJ5IEpTT04gZmxvYXQgdG8gYmUgZGVjb2RlZC4gQnkgZGVmYXVsdCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KICAgICAgICBmbG9hdChudW1fc3RyKS4gVGhpcyBjYW4gYmUgdXNlZCB0byB1c2UgYW5vdGhlciBkYXRhdHlwZSBvciBwYXJzZXIKICAgICAgICBmb3IgSlNPTiBmbG9hdHMgKGUuZy4gZGVjaW1hbC5EZWNpbWFsKS4KCiAgICAgICAgYGBwYXJzZV9pbnRgYCwgaWYgc3BlY2lmaWVkLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzdHJpbmcKICAgICAgICBvZiBldmVyeSBKU09OIGludCB0byBiZSBkZWNvZGVkLiBCeSBkZWZhdWx0IHRoaXMgaXMgZXF1aXZhbGVudCB0bwogICAgICAgIGludChudW1fc3RyKS4gVGhpcyBjYW4gYmUgdXNlZCB0byB1c2UgYW5vdGhlciBkYXRhdHlwZSBvciBwYXJzZXIKICAgICAgICBmb3IgSlNPTiBpbnRlZ2VycyAoZS5nLiBmbG9hdCkuCgogICAgICAgIGBgcGFyc2VfY29uc3RhbnRgYCwgaWYgc3BlY2lmaWVkLCB3aWxsIGJlIGNhbGxlZCB3aXRoIG9uZSBvZiB0aGUKICAgICAgICBmb2xsb3dpbmcgc3RyaW5nczogLUluZmluaXR5LCBJbmZpbml0eSwgTmFOLgogICAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGludmFsaWQgSlNPTiBudW1iZXJzCiAgICAgICAgYXJlIGVuY291bnRlcmVkLgoKICAgICAgICBJZiBgYHN0cmljdGBgIGlzIGZhbHNlICh0cnVlIGlzIHRoZSBkZWZhdWx0KSwgdGhlbiBjb250cm9sCiAgICAgICAgY2hhcmFjdGVycyB3aWxsIGJlIGFsbG93ZWQgaW5zaWRlIHN0cmluZ3MuICBDb250cm9sIGNoYXJhY3RlcnMgaW4KICAgICAgICB0aGlzIGNvbnRleHQgYXJlIHRob3NlIHdpdGggY2hhcmFjdGVyIGNvZGVzIGluIHRoZSAwLTMxIHJhbmdlLAogICAgICAgIGluY2x1ZGluZyBgYCdcXHQnYGAgKHRhYiksIGBgJ1xcbidgYCwgYGAnXFxyJ2BgIGFuZCBgYCdcXDAnYGAuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5vYmplY3RfaG9vayA9IG9iamVjdF9ob29rCiAgICAgICAgc2VsZi5wYXJzZV9mbG9hdCA9IHBhcnNlX2Zsb2F0IG9yIGZsb2F0CiAgICAgICAgc2VsZi5wYXJzZV9pbnQgPSBwYXJzZV9pbnQgb3IgaW50CiAgICAgICAgc2VsZi5wYXJzZV9jb25zdGFudCA9IHBhcnNlX2NvbnN0YW50IG9yIF9DT05TVEFOVFMuX19nZXRpdGVtX18KICAgICAgICBzZWxmLnN0cmljdCA9IHN0cmljdAogICAgICAgIHNlbGYub2JqZWN0X3BhaXJzX2hvb2sgPSBvYmplY3RfcGFpcnNfaG9vawogICAgICAgIHNlbGYucGFyc2Vfb2JqZWN0ID0gSlNPTk9iamVjdAogICAgICAgIHNlbGYucGFyc2VfYXJyYXkgPSBKU09OQXJyYXkKICAgICAgICBzZWxmLnBhcnNlX3N0cmluZyA9IHNjYW5zdHJpbmcKICAgICAgICBzZWxmLm1lbW8gPSB7fQogICAgICAgIHNlbGYuc2Nhbl9vbmNlID0gc2Nhbm5lci5tYWtlX3NjYW5uZXIoc2VsZikKCgogICAgZGVmIGRlY29kZShzZWxmLCBzLCBfdz1XSElURVNQQUNFLm1hdGNoKToKICAgICAgICAiIiJSZXR1cm4gdGhlIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiBgYHNgYCAoYSBgYHN0cmBgIGluc3RhbmNlCiAgICAgICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpLgoKICAgICAgICAiIiIKICAgICAgICBvYmosIGVuZCA9IHNlbGYucmF3X2RlY29kZShzLCBpZHg9X3cocywgMCkuZW5kKCkpCiAgICAgICAgZW5kID0gX3cocywgZW5kKS5lbmQoKQogICAgICAgIGlmIGVuZCAhPSBsZW4ocyk6CiAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXh0cmEgZGF0YSIsIHMsIGVuZCkKICAgICAgICByZXR1cm4gb2JqCgogICAgZGVmIHJhd19kZWNvZGUoc2VsZiwgcywgaWR4PTApOgogICAgICAgICIiIkRlY29kZSBhIEpTT04gZG9jdW1lbnQgZnJvbSBgYHNgYCAoYSBgYHN0cmBgIGJlZ2lubmluZyB3aXRoCiAgICAgICAgYSBKU09OIGRvY3VtZW50KSBhbmQgcmV0dXJuIGEgMi10dXBsZSBvZiB0aGUgUHl0aG9uCiAgICAgICAgcmVwcmVzZW50YXRpb24gYW5kIHRoZSBpbmRleCBpbiBgYHNgYCB3aGVyZSB0aGUgZG9jdW1lbnQgZW5kZWQuCgogICAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gZGVjb2RlIGEgSlNPTiBkb2N1bWVudCBmcm9tIGEgc3RyaW5nIHRoYXQgbWF5CiAgICAgICAgaGF2ZSBleHRyYW5lb3VzIGRhdGEgYXQgdGhlIGVuZC4KCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvYmosIGVuZCA9IHNlbGYuc2Nhbl9vbmNlKHMsIGlkeCkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlcnI6CiAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSBmcm9tIE5vbmUKICAgICAgICByZXR1cm4gb2JqLCBlbmQKUEsDBBQAAAAAAAMgo1YxtJ7j0D4AANA+AAAPAAAAanNvbi9lbmNvZGVyLnB5IiIiSW1wbGVtZW50YXRpb24gb2YgSlNPTkVuY29kZXIKIiIiCmltcG9ydCByZQoKdHJ5OgogICAgZnJvbSBfanNvbiBpbXBvcnQgZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkgYXMgY19lbmNvZGVfYmFzZXN0cmluZ19hc2NpaQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBjX2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpID0gTm9uZQp0cnk6CiAgICBmcm9tIF9qc29uIGltcG9ydCBlbmNvZGVfYmFzZXN0cmluZyBhcyBjX2VuY29kZV9iYXNlc3RyaW5nCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGNfZW5jb2RlX2Jhc2VzdHJpbmcgPSBOb25lCnRyeToKICAgIGZyb20gX2pzb24gaW1wb3J0IG1ha2VfZW5jb2RlciBhcyBjX21ha2VfZW5jb2RlcgpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBjX21ha2VfZW5jb2RlciA9IE5vbmUKCkVTQ0FQRSA9IHJlLmNvbXBpbGUocidbXHgwMC1ceDFmXFwiXGJcZlxuXHJcdF0nKQpFU0NBUEVfQVNDSUkgPSByZS5jb21waWxlKHInKFtcXCJdfFteXCAtfl0pJykKSEFTX1VURjggPSByZS5jb21waWxlKGInW1x4ODAtXHhmZl0nKQpFU0NBUEVfRENUID0gewogICAgJ1xcJzogJ1xcXFwnLAogICAgJyInOiAnXFwiJywKICAgICdcYic6ICdcXGInLAogICAgJ1xmJzogJ1xcZicsCiAgICAnXG4nOiAnXFxuJywKICAgICdccic6ICdcXHInLAogICAgJ1x0JzogJ1xcdCcsCn0KZm9yIGkgaW4gcmFuZ2UoMHgyMCk6CiAgICBFU0NBUEVfRENULnNldGRlZmF1bHQoY2hyKGkpLCAnXFx1ezA6MDR4fScuZm9ybWF0KGkpKQogICAgI0VTQ0FQRV9EQ1Quc2V0ZGVmYXVsdChjaHIoaSksICdcXHUlMDR4JyAlIChpLCkpCmRlbCBpCgpJTkZJTklUWSA9IGZsb2F0KCdpbmYnKQoKZGVmIHB5X2VuY29kZV9iYXNlc3RyaW5nKHMpOgogICAgIiIiUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBzdHJpbmcKCiAgICAiIiIKICAgIGRlZiByZXBsYWNlKG1hdGNoKToKICAgICAgICByZXR1cm4gRVNDQVBFX0RDVFttYXRjaC5ncm91cCgwKV0KICAgIHJldHVybiAnIicgKyBFU0NBUEUuc3ViKHJlcGxhY2UsIHMpICsgJyInCgoKZW5jb2RlX2Jhc2VzdHJpbmcgPSAoY19lbmNvZGVfYmFzZXN0cmluZyBvciBweV9lbmNvZGVfYmFzZXN0cmluZykKCgpkZWYgcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkocyk6CiAgICAiIiJSZXR1cm4gYW4gQVNDSUktb25seSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIHN0cmluZwoKICAgICIiIgogICAgZGVmIHJlcGxhY2UobWF0Y2gpOgogICAgICAgIHMgPSBtYXRjaC5ncm91cCgwKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIEVTQ0FQRV9EQ1Rbc10KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIG4gPSBvcmQocykKICAgICAgICAgICAgaWYgbiA8IDB4MTAwMDA6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1xcdXswOjA0eH0nLmZvcm1hdChuKQogICAgICAgICAgICAgICAgI3JldHVybiAnXFx1JTA0eCcgJSAobiwpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIHN1cnJvZ2F0ZSBwYWlyCiAgICAgICAgICAgICAgICBuIC09IDB4MTAwMDAKICAgICAgICAgICAgICAgIHMxID0gMHhkODAwIHwgKChuID4+IDEwKSAmIDB4M2ZmKQogICAgICAgICAgICAgICAgczIgPSAweGRjMDAgfCAobiAmIDB4M2ZmKQogICAgICAgICAgICAgICAgcmV0dXJuICdcXHV7MDowNHh9XFx1ezE6MDR4fScuZm9ybWF0KHMxLCBzMikKICAgIHJldHVybiAnIicgKyBFU0NBUEVfQVNDSUkuc3ViKHJlcGxhY2UsIHMpICsgJyInCgoKZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkgPSAoCiAgICBjX2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpIG9yIHB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKQoKY2xhc3MgSlNPTkVuY29kZXIob2JqZWN0KToKICAgICIiIkV4dGVuc2libGUgSlNPTiA8aHR0cHM6Ly9qc29uLm9yZz4gZW5jb2RlciBmb3IgUHl0aG9uIGRhdGEgc3RydWN0dXJlcy4KCiAgICBTdXBwb3J0cyB0aGUgZm9sbG93aW5nIG9iamVjdHMgYW5kIHR5cGVzIGJ5IGRlZmF1bHQ6CgogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogICAgfCBQeXRob24gICAgICAgICAgICB8IEpTT04gICAgICAgICAgfAogICAgKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09KwogICAgfCBkaWN0ICAgICAgICAgICAgICB8IG9iamVjdCAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogICAgfCBsaXN0LCB0dXBsZSAgICAgICB8IGFycmF5ICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogICAgfCBzdHIgICAgICAgICAgICAgICB8IHN0cmluZyAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogICAgfCBpbnQsIGZsb2F0ICAgICAgICB8IG51bWJlciAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogICAgfCBUcnVlICAgICAgICAgICAgICB8IHRydWUgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogICAgfCBGYWxzZSAgICAgICAgICAgICB8IGZhbHNlICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogICAgfCBOb25lICAgICAgICAgICAgICB8IG51bGwgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwoKICAgIFRvIGV4dGVuZCB0aGlzIHRvIHJlY29nbml6ZSBvdGhlciBvYmplY3RzLCBzdWJjbGFzcyBhbmQgaW1wbGVtZW50IGEKICAgIGBgLmRlZmF1bHQoKWBgIG1ldGhvZCB3aXRoIGFub3RoZXIgbWV0aG9kIHRoYXQgcmV0dXJucyBhIHNlcmlhbGl6YWJsZQogICAgb2JqZWN0IGZvciBgYG9gYCBpZiBwb3NzaWJsZSwgb3RoZXJ3aXNlIGl0IHNob3VsZCBjYWxsIHRoZSBzdXBlcmNsYXNzCiAgICBpbXBsZW1lbnRhdGlvbiAodG8gcmFpc2UgYGBUeXBlRXJyb3JgYCkuCgogICAgIiIiCiAgICBpdGVtX3NlcGFyYXRvciA9ICcsICcKICAgIGtleV9zZXBhcmF0b3IgPSAnOiAnCiAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLAogICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLAogICAgICAgICAgICBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpOgogICAgICAgICIiIkNvbnN0cnVjdG9yIGZvciBKU09ORW5jb2Rlciwgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KCiAgICAgICAgSWYgc2tpcGtleXMgaXMgZmFsc2UsIHRoZW4gaXQgaXMgYSBUeXBlRXJyb3IgdG8gYXR0ZW1wdAogICAgICAgIGVuY29kaW5nIG9mIGtleXMgdGhhdCBhcmUgbm90IHN0ciwgaW50LCBmbG9hdCBvciBOb25lLiAgSWYKICAgICAgICBza2lwa2V5cyBpcyBUcnVlLCBzdWNoIGl0ZW1zIGFyZSBzaW1wbHkgc2tpcHBlZC4KCiAgICAgICAgSWYgZW5zdXJlX2FzY2lpIGlzIHRydWUsIHRoZSBvdXRwdXQgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHIKICAgICAgICBvYmplY3RzIHdpdGggYWxsIGluY29taW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGVzY2FwZWQuICBJZgogICAgICAgIGVuc3VyZV9hc2NpaSBpcyBmYWxzZSwgdGhlIG91dHB1dCBjYW4gY29udGFpbiBub24tQVNDSUkgY2hhcmFjdGVycy4KCiAgICAgICAgSWYgY2hlY2tfY2lyY3VsYXIgaXMgdHJ1ZSwgdGhlbiBsaXN0cywgZGljdHMsIGFuZCBjdXN0b20gZW5jb2RlZAogICAgICAgIG9iamVjdHMgd2lsbCBiZSBjaGVja2VkIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGR1cmluZyBlbmNvZGluZyB0bwogICAgICAgIHByZXZlbnQgYW4gaW5maW5pdGUgcmVjdXJzaW9uICh3aGljaCB3b3VsZCBjYXVzZSBhbiBSZWN1cnNpb25FcnJvcikuCiAgICAgICAgT3RoZXJ3aXNlLCBubyBzdWNoIGNoZWNrIHRha2VzIHBsYWNlLgoKICAgICAgICBJZiBhbGxvd19uYW4gaXMgdHJ1ZSwgdGhlbiBOYU4sIEluZmluaXR5LCBhbmQgLUluZmluaXR5IHdpbGwgYmUKICAgICAgICBlbmNvZGVkIGFzIHN1Y2guICBUaGlzIGJlaGF2aW9yIGlzIG5vdCBKU09OIHNwZWNpZmljYXRpb24gY29tcGxpYW50LAogICAgICAgIGJ1dCBpcyBjb25zaXN0ZW50IHdpdGggbW9zdCBKYXZhU2NyaXB0IGJhc2VkIGVuY29kZXJzIGFuZCBkZWNvZGVycy4KICAgICAgICBPdGhlcndpc2UsIGl0IHdpbGwgYmUgYSBWYWx1ZUVycm9yIHRvIGVuY29kZSBzdWNoIGZsb2F0cy4KCiAgICAgICAgSWYgc29ydF9rZXlzIGlzIHRydWUsIHRoZW4gdGhlIG91dHB1dCBvZiBkaWN0aW9uYXJpZXMgd2lsbCBiZQogICAgICAgIHNvcnRlZCBieSBrZXk7IHRoaXMgaXMgdXNlZnVsIGZvciByZWdyZXNzaW9uIHRlc3RzIHRvIGVuc3VyZQogICAgICAgIHRoYXQgSlNPTiBzZXJpYWxpemF0aW9ucyBjYW4gYmUgY29tcGFyZWQgb24gYSBkYXktdG8tZGF5IGJhc2lzLgoKICAgICAgICBJZiBpbmRlbnQgaXMgYSBub24tbmVnYXRpdmUgaW50ZWdlciwgdGhlbiBKU09OIGFycmF5CiAgICAgICAgZWxlbWVudHMgYW5kIG9iamVjdCBtZW1iZXJzIHdpbGwgYmUgcHJldHR5LXByaW50ZWQgd2l0aCB0aGF0CiAgICAgICAgaW5kZW50IGxldmVsLiAgQW4gaW5kZW50IGxldmVsIG9mIDAgd2lsbCBvbmx5IGluc2VydCBuZXdsaW5lcy4KICAgICAgICBOb25lIGlzIHRoZSBtb3N0IGNvbXBhY3QgcmVwcmVzZW50YXRpb24uCgogICAgICAgIElmIHNwZWNpZmllZCwgc2VwYXJhdG9ycyBzaG91bGQgYmUgYW4gKGl0ZW1fc2VwYXJhdG9yLCBrZXlfc2VwYXJhdG9yKQogICAgICAgIHR1cGxlLiAgVGhlIGRlZmF1bHQgaXMgKCcsICcsICc6ICcpIGlmICppbmRlbnQqIGlzIGBgTm9uZWBgIGFuZAogICAgICAgICgnLCcsICc6ICcpIG90aGVyd2lzZS4gIFRvIGdldCB0aGUgbW9zdCBjb21wYWN0IEpTT04gcmVwcmVzZW50YXRpb24sCiAgICAgICAgeW91IHNob3VsZCBzcGVjaWZ5ICgnLCcsICc6JykgdG8gZWxpbWluYXRlIHdoaXRlc3BhY2UuCgogICAgICAgIElmIHNwZWNpZmllZCwgZGVmYXVsdCBpcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIG9iamVjdHMKICAgICAgICB0aGF0IGNhbid0IG90aGVyd2lzZSBiZSBzZXJpYWxpemVkLiAgSXQgc2hvdWxkIHJldHVybiBhIEpTT04gZW5jb2RhYmxlCiAgICAgICAgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IG9yIHJhaXNlIGEgYGBUeXBlRXJyb3JgYC4KCiAgICAgICAgIiIiCgogICAgICAgIHNlbGYuc2tpcGtleXMgPSBza2lwa2V5cwogICAgICAgIHNlbGYuZW5zdXJlX2FzY2lpID0gZW5zdXJlX2FzY2lpCiAgICAgICAgc2VsZi5jaGVja19jaXJjdWxhciA9IGNoZWNrX2NpcmN1bGFyCiAgICAgICAgc2VsZi5hbGxvd19uYW4gPSBhbGxvd19uYW4KICAgICAgICBzZWxmLnNvcnRfa2V5cyA9IHNvcnRfa2V5cwogICAgICAgIHNlbGYuaW5kZW50ID0gaW5kZW50CiAgICAgICAgaWYgc2VwYXJhdG9ycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5pdGVtX3NlcGFyYXRvciwgc2VsZi5rZXlfc2VwYXJhdG9yID0gc2VwYXJhdG9ycwogICAgICAgIGVsaWYgaW5kZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLml0ZW1fc2VwYXJhdG9yID0gJywnCiAgICAgICAgaWYgZGVmYXVsdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5kZWZhdWx0ID0gZGVmYXVsdAoKICAgIGRlZiBkZWZhdWx0KHNlbGYsIG8pOgogICAgICAgICIiIkltcGxlbWVudCB0aGlzIG1ldGhvZCBpbiBhIHN1YmNsYXNzIHN1Y2ggdGhhdCBpdCByZXR1cm5zCiAgICAgICAgYSBzZXJpYWxpemFibGUgb2JqZWN0IGZvciBgYG9gYCwgb3IgY2FsbHMgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24KICAgICAgICAodG8gcmFpc2UgYSBgYFR5cGVFcnJvcmBgKS4KCiAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHN1cHBvcnQgYXJiaXRyYXJ5IGl0ZXJhdG9ycywgeW91IGNvdWxkCiAgICAgICAgaW1wbGVtZW50IGRlZmF1bHQgbGlrZSB0aGlzOjoKCiAgICAgICAgICAgIGRlZiBkZWZhdWx0KHNlbGYsIG8pOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGl0ZXJhYmxlID0gaXRlcihvKQogICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0KGl0ZXJhYmxlKQogICAgICAgICAgICAgICAgIyBMZXQgdGhlIGJhc2UgY2xhc3MgZGVmYXVsdCBtZXRob2QgcmFpc2UgdGhlIFR5cGVFcnJvcgogICAgICAgICAgICAgICAgcmV0dXJuIEpTT05FbmNvZGVyLmRlZmF1bHQoc2VsZiwgbykKCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYnT2JqZWN0IG9mIHR5cGUge28uX19jbGFzc19fLl9fbmFtZV9ffSAnCiAgICAgICAgICAgICAgICAgICAgICAgIGYnaXMgbm90IEpTT04gc2VyaWFsaXphYmxlJykKCiAgICBkZWYgZW5jb2RlKHNlbGYsIG8pOgogICAgICAgICIiIlJldHVybiBhIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIGRhdGEgc3RydWN0dXJlLgoKICAgICAgICA+Pj4gZnJvbSBqc29uLmVuY29kZXIgaW1wb3J0IEpTT05FbmNvZGVyCiAgICAgICAgPj4+IEpTT05FbmNvZGVyKCkuZW5jb2RlKHsiZm9vIjogWyJiYXIiLCAiYmF6Il19KQogICAgICAgICd7ImZvbyI6IFsiYmFyIiwgImJheiJdfScKCiAgICAgICAgIiIiCiAgICAgICAgIyBUaGlzIGlzIGZvciBleHRyZW1lbHkgc2ltcGxlIGNhc2VzIGFuZCBiZW5jaG1hcmtzLgogICAgICAgIGlmIGlzaW5zdGFuY2Uobywgc3RyKToKICAgICAgICAgICAgaWYgc2VsZi5lbnN1cmVfYXNjaWk6CiAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkobykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVfYmFzZXN0cmluZyhvKQogICAgICAgICMgVGhpcyBkb2Vzbid0IHBhc3MgdGhlIGl0ZXJhdG9yIGRpcmVjdGx5IHRvICcnLmpvaW4oKSBiZWNhdXNlIHRoZQogICAgICAgICMgZXhjZXB0aW9ucyBhcmVuJ3QgYXMgZGV0YWlsZWQuICBUaGUgbGlzdCBjYWxsIHNob3VsZCBiZSByb3VnaGx5CiAgICAgICAgIyBlcXVpdmFsZW50IHRvIHRoZSBQeVNlcXVlbmNlX0Zhc3QgdGhhdCAnJy5qb2luKCkgd291bGQgZG8uCiAgICAgICAgY2h1bmtzID0gc2VsZi5pdGVyZW5jb2RlKG8sIF9vbmVfc2hvdD1UcnVlKQogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNodW5rcywgKGxpc3QsIHR1cGxlKSk6CiAgICAgICAgICAgIGNodW5rcyA9IGxpc3QoY2h1bmtzKQogICAgICAgIHJldHVybiAnJy5qb2luKGNodW5rcykKCiAgICBkZWYgaXRlcmVuY29kZShzZWxmLCBvLCBfb25lX3Nob3Q9RmFsc2UpOgogICAgICAgICIiIkVuY29kZSB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCB5aWVsZCBlYWNoIHN0cmluZwogICAgICAgIHJlcHJlc2VudGF0aW9uIGFzIGF2YWlsYWJsZS4KCiAgICAgICAgRm9yIGV4YW1wbGU6OgoKICAgICAgICAgICAgZm9yIGNodW5rIGluIEpTT05FbmNvZGVyKCkuaXRlcmVuY29kZShiaWdvYmplY3QpOgogICAgICAgICAgICAgICAgbXlzb2NrZXQud3JpdGUoY2h1bmspCgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuY2hlY2tfY2lyY3VsYXI6CiAgICAgICAgICAgIG1hcmtlcnMgPSB7fQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1hcmtlcnMgPSBOb25lCiAgICAgICAgaWYgc2VsZi5lbnN1cmVfYXNjaWk6CiAgICAgICAgICAgIF9lbmNvZGVyID0gZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkKICAgICAgICBlbHNlOgogICAgICAgICAgICBfZW5jb2RlciA9IGVuY29kZV9iYXNlc3RyaW5nCgogICAgICAgIGRlZiBmbG9hdHN0cihvLCBhbGxvd19uYW49c2VsZi5hbGxvd19uYW4sCiAgICAgICAgICAgICAgICBfcmVwcj1mbG9hdC5fX3JlcHJfXywgX2luZj1JTkZJTklUWSwgX25lZ2luZj0tSU5GSU5JVFkpOgogICAgICAgICAgICAjIENoZWNrIGZvciBzcGVjaWFscy4gIE5vdGUgdGhhdCB0aGlzIHR5cGUgb2YgdGVzdCBpcyBwcm9jZXNzb3IKICAgICAgICAgICAgIyBhbmQvb3IgcGxhdGZvcm0tc3BlY2lmaWMsIHNvIGRvIHRlc3RzIHdoaWNoIGRvbid0IGRlcGVuZCBvbiB0aGUKICAgICAgICAgICAgIyBpbnRlcm5hbHMuCgogICAgICAgICAgICBpZiBvICE9IG86CiAgICAgICAgICAgICAgICB0ZXh0ID0gJ05hTicKICAgICAgICAgICAgZWxpZiBvID09IF9pbmY6CiAgICAgICAgICAgICAgICB0ZXh0ID0gJ0luZmluaXR5JwogICAgICAgICAgICBlbGlmIG8gPT0gX25lZ2luZjoKICAgICAgICAgICAgICAgIHRleHQgPSAnLUluZmluaXR5JwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIF9yZXByKG8pCgogICAgICAgICAgICBpZiBub3QgYWxsb3dfbmFuOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiT3V0IG9mIHJhbmdlIGZsb2F0IHZhbHVlcyBhcmUgbm90IEpTT04gY29tcGxpYW50OiAiICsKICAgICAgICAgICAgICAgICAgICByZXByKG8pKQoKICAgICAgICAgICAgcmV0dXJuIHRleHQKCgogICAgICAgIGlmIChfb25lX3Nob3QgYW5kIGNfbWFrZV9lbmNvZGVyIGlzIG5vdCBOb25lCiAgICAgICAgICAgICAgICBhbmQgc2VsZi5pbmRlbnQgaXMgTm9uZSk6CiAgICAgICAgICAgIF9pdGVyZW5jb2RlID0gY19tYWtlX2VuY29kZXIoCiAgICAgICAgICAgICAgICBtYXJrZXJzLCBzZWxmLmRlZmF1bHQsIF9lbmNvZGVyLCBzZWxmLmluZGVudCwKICAgICAgICAgICAgICAgIHNlbGYua2V5X3NlcGFyYXRvciwgc2VsZi5pdGVtX3NlcGFyYXRvciwgc2VsZi5zb3J0X2tleXMsCiAgICAgICAgICAgICAgICBzZWxmLnNraXBrZXlzLCBzZWxmLmFsbG93X25hbikKICAgICAgICBlbHNlOgogICAgICAgICAgICBfaXRlcmVuY29kZSA9IF9tYWtlX2l0ZXJlbmNvZGUoCiAgICAgICAgICAgICAgICBtYXJrZXJzLCBzZWxmLmRlZmF1bHQsIF9lbmNvZGVyLCBzZWxmLmluZGVudCwgZmxvYXRzdHIsCiAgICAgICAgICAgICAgICBzZWxmLmtleV9zZXBhcmF0b3IsIHNlbGYuaXRlbV9zZXBhcmF0b3IsIHNlbGYuc29ydF9rZXlzLAogICAgICAgICAgICAgICAgc2VsZi5za2lwa2V5cywgX29uZV9zaG90KQogICAgICAgIHJldHVybiBfaXRlcmVuY29kZShvLCAwKQoKZGVmIF9tYWtlX2l0ZXJlbmNvZGUobWFya2VycywgX2RlZmF1bHQsIF9lbmNvZGVyLCBfaW5kZW50LCBfZmxvYXRzdHIsCiAgICAgICAgX2tleV9zZXBhcmF0b3IsIF9pdGVtX3NlcGFyYXRvciwgX3NvcnRfa2V5cywgX3NraXBrZXlzLCBfb25lX3Nob3QsCiAgICAgICAgIyMgSEFDSzogaGFuZC1vcHRpbWl6ZWQgYnl0ZWNvZGU7IHR1cm4gZ2xvYmFscyBpbnRvIGxvY2FscwogICAgICAgIFZhbHVlRXJyb3I9VmFsdWVFcnJvciwKICAgICAgICBkaWN0PWRpY3QsCiAgICAgICAgZmxvYXQ9ZmxvYXQsCiAgICAgICAgaWQ9aWQsCiAgICAgICAgaW50PWludCwKICAgICAgICBpc2luc3RhbmNlPWlzaW5zdGFuY2UsCiAgICAgICAgbGlzdD1saXN0LAogICAgICAgIHN0cj1zdHIsCiAgICAgICAgdHVwbGU9dHVwbGUsCiAgICAgICAgX2ludHN0cj1pbnQuX19yZXByX18sCiAgICApOgoKICAgIGlmIF9pbmRlbnQgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKF9pbmRlbnQsIHN0cik6CiAgICAgICAgX2luZGVudCA9ICcgJyAqIF9pbmRlbnQKCiAgICBkZWYgX2l0ZXJlbmNvZGVfbGlzdChsc3QsIF9jdXJyZW50X2luZGVudF9sZXZlbCk6CiAgICAgICAgaWYgbm90IGxzdDoKICAgICAgICAgICAgeWllbGQgJ1tdJwogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBtYXJrZXJzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBtYXJrZXJpZCA9IGlkKGxzdCkKICAgICAgICAgICAgaWYgbWFya2VyaWQgaW4gbWFya2VyczoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCIpCiAgICAgICAgICAgIG1hcmtlcnNbbWFya2VyaWRdID0gbHN0CiAgICAgICAgYnVmID0gJ1snCiAgICAgICAgaWYgX2luZGVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgX2N1cnJlbnRfaW5kZW50X2xldmVsICs9IDEKICAgICAgICAgICAgbmV3bGluZV9pbmRlbnQgPSAnXG4nICsgX2luZGVudCAqIF9jdXJyZW50X2luZGVudF9sZXZlbAogICAgICAgICAgICBzZXBhcmF0b3IgPSBfaXRlbV9zZXBhcmF0b3IgKyBuZXdsaW5lX2luZGVudAogICAgICAgICAgICBidWYgKz0gbmV3bGluZV9pbmRlbnQKICAgICAgICBlbHNlOgogICAgICAgICAgICBuZXdsaW5lX2luZGVudCA9IE5vbmUKICAgICAgICAgICAgc2VwYXJhdG9yID0gX2l0ZW1fc2VwYXJhdG9yCiAgICAgICAgZmlyc3QgPSBUcnVlCiAgICAgICAgZm9yIHZhbHVlIGluIGxzdDoKICAgICAgICAgICAgaWYgZmlyc3Q6CiAgICAgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBidWYgPSBzZXBhcmF0b3IKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgIHlpZWxkIGJ1ZiArIF9lbmNvZGVyKHZhbHVlKQogICAgICAgICAgICBlbGlmIHZhbHVlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICB5aWVsZCBidWYgKyAnbnVsbCcKICAgICAgICAgICAgZWxpZiB2YWx1ZSBpcyBUcnVlOgogICAgICAgICAgICAgICAgeWllbGQgYnVmICsgJ3RydWUnCiAgICAgICAgICAgIGVsaWYgdmFsdWUgaXMgRmFsc2U6CiAgICAgICAgICAgICAgICB5aWVsZCBidWYgKyAnZmFsc2UnCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKICAgICAgICAgICAgICAgICMgU3ViY2xhc3NlcyBvZiBpbnQvZmxvYXQgbWF5IG92ZXJyaWRlIF9fcmVwcl9fLCBidXQgd2Ugc3RpbGwKICAgICAgICAgICAgICAgICMgd2FudCB0byBlbmNvZGUgdGhlbSBhcyBpbnRlZ2Vycy9mbG9hdHMgaW4gSlNPTi4gT25lIGV4YW1wbGUKICAgICAgICAgICAgICAgICMgd2l0aGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGlzIEludEVudW0uCiAgICAgICAgICAgICAgICB5aWVsZCBidWYgKyBfaW50c3RyKHZhbHVlKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKICAgICAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgYWJvdmUgZm9yIGludAogICAgICAgICAgICAgICAgeWllbGQgYnVmICsgX2Zsb2F0c3RyKHZhbHVlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgeWllbGQgYnVmCiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAobGlzdCwgdHVwbGUpKToKICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSBfaXRlcmVuY29kZV9saXN0KHZhbHVlLCBfY3VycmVudF9pbmRlbnRfbGV2ZWwpCiAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgogICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IF9pdGVyZW5jb2RlX2RpY3QodmFsdWUsIF9jdXJyZW50X2luZGVudF9sZXZlbCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gX2l0ZXJlbmNvZGUodmFsdWUsIF9jdXJyZW50X2luZGVudF9sZXZlbCkKICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gY2h1bmtzCiAgICAgICAgaWYgbmV3bGluZV9pbmRlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF9jdXJyZW50X2luZGVudF9sZXZlbCAtPSAxCiAgICAgICAgICAgIHlpZWxkICdcbicgKyBfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsCiAgICAgICAgeWllbGQgJ10nCiAgICAgICAgaWYgbWFya2VycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgZGVsIG1hcmtlcnNbbWFya2VyaWRdCgogICAgZGVmIF9pdGVyZW5jb2RlX2RpY3QoZGN0LCBfY3VycmVudF9pbmRlbnRfbGV2ZWwpOgogICAgICAgIGlmIG5vdCBkY3Q6CiAgICAgICAgICAgIHlpZWxkICd7fScKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbWFya2VycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgbWFya2VyaWQgPSBpZChkY3QpCiAgICAgICAgICAgIGlmIG1hcmtlcmlkIGluIG1hcmtlcnM6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQiKQogICAgICAgICAgICBtYXJrZXJzW21hcmtlcmlkXSA9IGRjdAogICAgICAgIHlpZWxkICd7JwogICAgICAgIGlmIF9pbmRlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF9jdXJyZW50X2luZGVudF9sZXZlbCArPSAxCiAgICAgICAgICAgIG5ld2xpbmVfaW5kZW50ID0gJ1xuJyArIF9pbmRlbnQgKiBfY3VycmVudF9pbmRlbnRfbGV2ZWwKICAgICAgICAgICAgaXRlbV9zZXBhcmF0b3IgPSBfaXRlbV9zZXBhcmF0b3IgKyBuZXdsaW5lX2luZGVudAogICAgICAgICAgICB5aWVsZCBuZXdsaW5lX2luZGVudAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5ld2xpbmVfaW5kZW50ID0gTm9uZQogICAgICAgICAgICBpdGVtX3NlcGFyYXRvciA9IF9pdGVtX3NlcGFyYXRvcgogICAgICAgIGZpcnN0ID0gVHJ1ZQogICAgICAgIGlmIF9zb3J0X2tleXM6CiAgICAgICAgICAgIGl0ZW1zID0gc29ydGVkKGRjdC5pdGVtcygpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGl0ZW1zID0gZGN0Lml0ZW1zKCkKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHN0cik6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICMgSmF2YVNjcmlwdCBpcyB3ZWFrbHkgdHlwZWQgZm9yIHRoZXNlLCBzbyBpdCBtYWtlcyBzZW5zZSB0bwogICAgICAgICAgICAjIGFsc28gYWxsb3cgdGhlbS4gIE1hbnkgZW5jb2RlcnMgc2VlbSB0byBkbyBzb21ldGhpbmcgbGlrZSB0aGlzLgogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoa2V5LCBmbG9hdCk6CiAgICAgICAgICAgICAgICAjIHNlZSBjb21tZW50IGZvciBpbnQvZmxvYXQgaW4gX21ha2VfaXRlcmVuY29kZQogICAgICAgICAgICAgICAga2V5ID0gX2Zsb2F0c3RyKGtleSkKICAgICAgICAgICAgZWxpZiBrZXkgaXMgVHJ1ZToKICAgICAgICAgICAgICAgIGtleSA9ICd0cnVlJwogICAgICAgICAgICBlbGlmIGtleSBpcyBGYWxzZToKICAgICAgICAgICAgICAgIGtleSA9ICdmYWxzZScKICAgICAgICAgICAgZWxpZiBrZXkgaXMgTm9uZToKICAgICAgICAgICAgICAgIGtleSA9ICdudWxsJwogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoa2V5LCBpbnQpOgogICAgICAgICAgICAgICAgIyBzZWUgY29tbWVudCBmb3IgaW50L2Zsb2F0IGluIF9tYWtlX2l0ZXJlbmNvZGUKICAgICAgICAgICAgICAgIGtleSA9IF9pbnRzdHIoa2V5KQogICAgICAgICAgICBlbGlmIF9za2lwa2V5czoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZidrZXlzIG11c3QgYmUgc3RyLCBpbnQsIGZsb2F0LCBib29sIG9yIE5vbmUsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJ25vdCB7a2V5Ll9fY2xhc3NfXy5fX25hbWVfX30nKQogICAgICAgICAgICBpZiBmaXJzdDoKICAgICAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHlpZWxkIGl0ZW1fc2VwYXJhdG9yCiAgICAgICAgICAgIHlpZWxkIF9lbmNvZGVyKGtleSkKICAgICAgICAgICAgeWllbGQgX2tleV9zZXBhcmF0b3IKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgIHlpZWxkIF9lbmNvZGVyKHZhbHVlKQogICAgICAgICAgICBlbGlmIHZhbHVlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICB5aWVsZCAnbnVsbCcKICAgICAgICAgICAgZWxpZiB2YWx1ZSBpcyBUcnVlOgogICAgICAgICAgICAgICAgeWllbGQgJ3RydWUnCiAgICAgICAgICAgIGVsaWYgdmFsdWUgaXMgRmFsc2U6CiAgICAgICAgICAgICAgICB5aWVsZCAnZmFsc2UnCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKICAgICAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgZm9yIGludC9mbG9hdCBpbiBfbWFrZV9pdGVyZW5jb2RlCiAgICAgICAgICAgICAgICB5aWVsZCBfaW50c3RyKHZhbHVlKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKICAgICAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgZm9yIGludC9mbG9hdCBpbiBfbWFrZV9pdGVyZW5jb2RlCiAgICAgICAgICAgICAgICB5aWVsZCBfZmxvYXRzdHIodmFsdWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAobGlzdCwgdHVwbGUpKToKICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSBfaXRlcmVuY29kZV9saXN0KHZhbHVlLCBfY3VycmVudF9pbmRlbnRfbGV2ZWwpCiAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgogICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IF9pdGVyZW5jb2RlX2RpY3QodmFsdWUsIF9jdXJyZW50X2luZGVudF9sZXZlbCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gX2l0ZXJlbmNvZGUodmFsdWUsIF9jdXJyZW50X2luZGVudF9sZXZlbCkKICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gY2h1bmtzCiAgICAgICAgaWYgbmV3bGluZV9pbmRlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF9jdXJyZW50X2luZGVudF9sZXZlbCAtPSAxCiAgICAgICAgICAgIHlpZWxkICdcbicgKyBfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsCiAgICAgICAgeWllbGQgJ30nCiAgICAgICAgaWYgbWFya2VycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgZGVsIG1hcmtlcnNbbWFya2VyaWRdCgogICAgZGVmIF9pdGVyZW5jb2RlKG8sIF9jdXJyZW50X2luZGVudF9sZXZlbCk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvLCBzdHIpOgogICAgICAgICAgICB5aWVsZCBfZW5jb2RlcihvKQogICAgICAgIGVsaWYgbyBpcyBOb25lOgogICAgICAgICAgICB5aWVsZCAnbnVsbCcKICAgICAgICBlbGlmIG8gaXMgVHJ1ZToKICAgICAgICAgICAgeWllbGQgJ3RydWUnCiAgICAgICAgZWxpZiBvIGlzIEZhbHNlOgogICAgICAgICAgICB5aWVsZCAnZmFsc2UnCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG8sIGludCk6CiAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgZm9yIGludC9mbG9hdCBpbiBfbWFrZV9pdGVyZW5jb2RlCiAgICAgICAgICAgIHlpZWxkIF9pbnRzdHIobykKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobywgZmxvYXQpOgogICAgICAgICAgICAjIHNlZSBjb21tZW50IGZvciBpbnQvZmxvYXQgaW4gX21ha2VfaXRlcmVuY29kZQogICAgICAgICAgICB5aWVsZCBfZmxvYXRzdHIobykKICAgICAgICBlbGlmIGlzaW5zdGFuY2UobywgKGxpc3QsIHR1cGxlKSk6CiAgICAgICAgICAgIHlpZWxkIGZyb20gX2l0ZXJlbmNvZGVfbGlzdChvLCBfY3VycmVudF9pbmRlbnRfbGV2ZWwpCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG8sIGRpY3QpOgogICAgICAgICAgICB5aWVsZCBmcm9tIF9pdGVyZW5jb2RlX2RpY3QobywgX2N1cnJlbnRfaW5kZW50X2xldmVsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIG1hcmtlcnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBtYXJrZXJpZCA9IGlkKG8pCiAgICAgICAgICAgICAgICBpZiBtYXJrZXJpZCBpbiBtYXJrZXJzOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCIpCiAgICAgICAgICAgICAgICBtYXJrZXJzW21hcmtlcmlkXSA9IG8KICAgICAgICAgICAgbyA9IF9kZWZhdWx0KG8pCiAgICAgICAgICAgIHlpZWxkIGZyb20gX2l0ZXJlbmNvZGUobywgX2N1cnJlbnRfaW5kZW50X2xldmVsKQogICAgICAgICAgICBpZiBtYXJrZXJzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgZGVsIG1hcmtlcnNbbWFya2VyaWRdCiAgICByZXR1cm4gX2l0ZXJlbmNvZGUKUEsDBBQAAAAAAAMgo1YliwDheQkAAHkJAAAPAAAAanNvbi9zY2FubmVyLnB5IiIiSlNPTiB0b2tlbiBzY2FubmVyCiIiIgppbXBvcnQgcmUKdHJ5OgogICAgZnJvbSBfanNvbiBpbXBvcnQgbWFrZV9zY2FubmVyIGFzIGNfbWFrZV9zY2FubmVyCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGNfbWFrZV9zY2FubmVyID0gTm9uZQoKX19hbGxfXyA9IFsnbWFrZV9zY2FubmVyJ10KCk5VTUJFUl9SRSA9IHJlLmNvbXBpbGUoCiAgICByJygtPyg/OjB8WzEtOV1cZCopKShcLlxkKyk/KFtlRV1bLStdP1xkKyk/JywKICAgIChyZS5WRVJCT1NFIHwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMKSkKCmRlZiBweV9tYWtlX3NjYW5uZXIoY29udGV4dCk6CiAgICBwYXJzZV9vYmplY3QgPSBjb250ZXh0LnBhcnNlX29iamVjdAogICAgcGFyc2VfYXJyYXkgPSBjb250ZXh0LnBhcnNlX2FycmF5CiAgICBwYXJzZV9zdHJpbmcgPSBjb250ZXh0LnBhcnNlX3N0cmluZwogICAgbWF0Y2hfbnVtYmVyID0gTlVNQkVSX1JFLm1hdGNoCiAgICBzdHJpY3QgPSBjb250ZXh0LnN0cmljdAogICAgcGFyc2VfZmxvYXQgPSBjb250ZXh0LnBhcnNlX2Zsb2F0CiAgICBwYXJzZV9pbnQgPSBjb250ZXh0LnBhcnNlX2ludAogICAgcGFyc2VfY29uc3RhbnQgPSBjb250ZXh0LnBhcnNlX2NvbnN0YW50CiAgICBvYmplY3RfaG9vayA9IGNvbnRleHQub2JqZWN0X2hvb2sKICAgIG9iamVjdF9wYWlyc19ob29rID0gY29udGV4dC5vYmplY3RfcGFpcnNfaG9vawogICAgbWVtbyA9IGNvbnRleHQubWVtbwoKICAgIGRlZiBfc2Nhbl9vbmNlKHN0cmluZywgaWR4KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIG5leHRjaGFyID0gc3RyaW5nW2lkeF0KICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbihpZHgpIGZyb20gTm9uZQoKICAgICAgICBpZiBuZXh0Y2hhciA9PSAnIic6CiAgICAgICAgICAgIHJldHVybiBwYXJzZV9zdHJpbmcoc3RyaW5nLCBpZHggKyAxLCBzdHJpY3QpCiAgICAgICAgZWxpZiBuZXh0Y2hhciA9PSAneyc6CiAgICAgICAgICAgIHJldHVybiBwYXJzZV9vYmplY3QoKHN0cmluZywgaWR4ICsgMSksIHN0cmljdCwKICAgICAgICAgICAgICAgIF9zY2FuX29uY2UsIG9iamVjdF9ob29rLCBvYmplY3RfcGFpcnNfaG9vaywgbWVtbykKICAgICAgICBlbGlmIG5leHRjaGFyID09ICdbJzoKICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2FycmF5KChzdHJpbmcsIGlkeCArIDEpLCBfc2Nhbl9vbmNlKQogICAgICAgIGVsaWYgbmV4dGNoYXIgPT0gJ24nIGFuZCBzdHJpbmdbaWR4OmlkeCArIDRdID09ICdudWxsJzoKICAgICAgICAgICAgcmV0dXJuIE5vbmUsIGlkeCArIDQKICAgICAgICBlbGlmIG5leHRjaGFyID09ICd0JyBhbmQgc3RyaW5nW2lkeDppZHggKyA0XSA9PSAndHJ1ZSc6CiAgICAgICAgICAgIHJldHVybiBUcnVlLCBpZHggKyA0CiAgICAgICAgZWxpZiBuZXh0Y2hhciA9PSAnZicgYW5kIHN0cmluZ1tpZHg6aWR4ICsgNV0gPT0gJ2ZhbHNlJzoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBpZHggKyA1CgogICAgICAgIG0gPSBtYXRjaF9udW1iZXIoc3RyaW5nLCBpZHgpCiAgICAgICAgaWYgbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaW50ZWdlciwgZnJhYywgZXhwID0gbS5ncm91cHMoKQogICAgICAgICAgICBpZiBmcmFjIG9yIGV4cDoKICAgICAgICAgICAgICAgIHJlcyA9IHBhcnNlX2Zsb2F0KGludGVnZXIgKyAoZnJhYyBvciAnJykgKyAoZXhwIG9yICcnKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlcyA9IHBhcnNlX2ludChpbnRlZ2VyKQogICAgICAgICAgICByZXR1cm4gcmVzLCBtLmVuZCgpCiAgICAgICAgZWxpZiBuZXh0Y2hhciA9PSAnTicgYW5kIHN0cmluZ1tpZHg6aWR4ICsgM10gPT0gJ05hTic6CiAgICAgICAgICAgIHJldHVybiBwYXJzZV9jb25zdGFudCgnTmFOJyksIGlkeCArIDMKICAgICAgICBlbGlmIG5leHRjaGFyID09ICdJJyBhbmQgc3RyaW5nW2lkeDppZHggKyA4XSA9PSAnSW5maW5pdHknOgogICAgICAgICAgICByZXR1cm4gcGFyc2VfY29uc3RhbnQoJ0luZmluaXR5JyksIGlkeCArIDgKICAgICAgICBlbGlmIG5leHRjaGFyID09ICctJyBhbmQgc3RyaW5nW2lkeDppZHggKyA5XSA9PSAnLUluZmluaXR5JzoKICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NvbnN0YW50KCctSW5maW5pdHknKSwgaWR4ICsgOQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oaWR4KQoKICAgIGRlZiBzY2FuX29uY2Uoc3RyaW5nLCBpZHgpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIF9zY2FuX29uY2Uoc3RyaW5nLCBpZHgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgbWVtby5jbGVhcigpCgogICAgcmV0dXJuIHNjYW5fb25jZQoKbWFrZV9zY2FubmVyID0gY19tYWtlX3NjYW5uZXIgb3IgcHlfbWFrZV9zY2FubmVyClBLAwQUAAAAAAADIKNWRGA4yQsNAAALDQAADAAAAGpzb24vdG9vbC5weXIiIiJDb21tYW5kLWxpbmUgdG9vbCB0byB2YWxpZGF0ZSBhbmQgcHJldHR5LXByaW50IEpTT04KClVzYWdlOjoKCiAgICAkIGVjaG8gJ3sianNvbiI6Im9iaiJ9JyB8IHB5dGhvbiAtbSBqc29uLnRvb2wKICAgIHsKICAgICAgICAianNvbiI6ICJvYmoiCiAgICB9CiAgICAkIGVjaG8gJ3sgMS4yOjMuNH0nIHwgcHl0aG9uIC1tIGpzb24udG9vbAogICAgRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlczogbGluZSAxIGNvbHVtbiAzIChjaGFyIDIpCgoiIiIKaW1wb3J0IGFyZ3BhcnNlCmltcG9ydCBqc29uCmltcG9ydCBzeXMKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgoKZGVmIG1haW4oKToKICAgIHByb2cgPSAncHl0aG9uIC1tIGpzb24udG9vbCcKICAgIGRlc2NyaXB0aW9uID0gKCdBIHNpbXBsZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIGZvciBqc29uIG1vZHVsZSAnCiAgICAgICAgICAgICAgICAgICAndG8gdmFsaWRhdGUgYW5kIHByZXR0eS1wcmludCBKU09OIG9iamVjdHMuJykKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9cHJvZywgZGVzY3JpcHRpb249ZGVzY3JpcHRpb24pCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdpbmZpbGUnLCBuYXJncz0nPycsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoZW5jb2Rpbmc9InV0Zi04IiksCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2EgSlNPTiBmaWxlIHRvIGJlIHZhbGlkYXRlZCBvciBwcmV0dHktcHJpbnRlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9c3lzLnN0ZGluKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnb3V0ZmlsZScsIG5hcmdzPSc/JywKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1QYXRoLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd3cml0ZSB0aGUgb3V0cHV0IG9mIGluZmlsZSB0byBvdXRmaWxlJywKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zb3J0LWtleXMnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzb3J0IHRoZSBvdXRwdXQgb2YgZGljdGlvbmFyaWVzIGFscGhhYmV0aWNhbGx5IGJ5IGtleScpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vLWVuc3VyZS1hc2NpaScsIGRlc3Q9J2Vuc3VyZV9hc2NpaScsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNhYmxlIGVzY2FwaW5nIG9mIG5vbi1BU0NJSSBjaGFyYWN0ZXJzJykKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tanNvbi1saW5lcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3BhcnNlIGlucHV0IHVzaW5nIHRoZSBKU09OIExpbmVzIGZvcm1hdC4gJwogICAgICAgICAgICAgICAgICAgICAgICAnVXNlIHdpdGggLS1uby1pbmRlbnQgb3IgLS1jb21wYWN0IHRvIHByb2R1Y2UgdmFsaWQgSlNPTiBMaW5lcyBvdXRwdXQuJykKICAgIGdyb3VwID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQogICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWluZGVudCcsIGRlZmF1bHQ9NCwgdHlwZT1pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VwYXJhdGUgaXRlbXMgd2l0aCBuZXdsaW5lcyBhbmQgdXNlIHRoaXMgbnVtYmVyICcKICAgICAgICAgICAgICAgICAgICAgICAnb2Ygc3BhY2VzIGZvciBpbmRlbnRhdGlvbicpCiAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGFiJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGRlc3Q9J2luZGVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q9J1x0JywgaGVscD0nc2VwYXJhdGUgaXRlbXMgd2l0aCBuZXdsaW5lcyBhbmQgdXNlICcKICAgICAgICAgICAgICAgICAgICAgICAndGFicyBmb3IgaW5kZW50YXRpb24nKQogICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLW5vLWluZGVudCcsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBkZXN0PSdpbmRlbnQnLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VwYXJhdGUgaXRlbXMgd2l0aCBzcGFjZXMgcmF0aGVyIHRoYW4gbmV3bGluZXMnKQogICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWNvbXBhY3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3N1cHByZXNzIGFsbCB3aGl0ZXNwYWNlIHNlcGFyYXRpb24gKG1vc3QgY29tcGFjdCknKQogICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKCiAgICBkdW1wX2FyZ3MgPSB7CiAgICAgICAgJ3NvcnRfa2V5cyc6IG9wdGlvbnMuc29ydF9rZXlzLAogICAgICAgICdpbmRlbnQnOiBvcHRpb25zLmluZGVudCwKICAgICAgICAnZW5zdXJlX2FzY2lpJzogb3B0aW9ucy5lbnN1cmVfYXNjaWksCiAgICB9CiAgICBpZiBvcHRpb25zLmNvbXBhY3Q6CiAgICAgICAgZHVtcF9hcmdzWydpbmRlbnQnXSA9IE5vbmUKICAgICAgICBkdW1wX2FyZ3NbJ3NlcGFyYXRvcnMnXSA9ICcsJywgJzonCgogICAgd2l0aCBvcHRpb25zLmluZmlsZSBhcyBpbmZpbGU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBvcHRpb25zLmpzb25fbGluZXM6CiAgICAgICAgICAgICAgICBvYmpzID0gKGpzb24ubG9hZHMobGluZSkgZm9yIGxpbmUgaW4gaW5maWxlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgb2JqcyA9IChqc29uLmxvYWQoaW5maWxlKSwpCgogICAgICAgICAgICBpZiBvcHRpb25zLm91dGZpbGUgaXMgTm9uZToKICAgICAgICAgICAgICAgIG91dCA9IHN5cy5zdGRvdXQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG91dCA9IG9wdGlvbnMub3V0ZmlsZS5vcGVuKCd3JywgZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgICAgd2l0aCBvdXQgYXMgb3V0ZmlsZToKICAgICAgICAgICAgICAgIGZvciBvYmogaW4gb2JqczoKICAgICAgICAgICAgICAgICAgICBqc29uLmR1bXAob2JqLCBvdXRmaWxlLCAqKmR1bXBfYXJncykKICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCdcbicpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdChlKQoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB0cnk6CiAgICAgICAgbWFpbigpCiAgICBleGNlcHQgQnJva2VuUGlwZUVycm9yIGFzIGV4YzoKICAgICAgICBzeXMuZXhpdChleGMuZXJybm8pClBLAwQUAAAAAAADIKNWQ6Bs+bc7AQC3OwEAEwAAAGxvZ2dpbmcvX19pbml0X18ucHkjIENvcHlyaWdodCAyMDAxLTIwMTkgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiMKIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKIyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCiMgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdAojIGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbgojIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgVmluYXkgU2FqaXAKIyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24KIyBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLgojIFZJTkFZIFNBSklQIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcKIyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwKIyBWSU5BWSBTQUpJUCBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IKIyBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIKIyBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVAojIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCgoiIiIKTG9nZ2luZyBwYWNrYWdlIGZvciBQeXRob24uIEJhc2VkIG9uIFBFUCAyODIgYW5kIGNvbW1lbnRzIHRoZXJldG8gaW4KY29tcC5sYW5nLnB5dGhvbi4KCkNvcHlyaWdodCAoQykgMjAwMS0yMDE5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgoKVG8gdXNlLCBzaW1wbHkgJ2ltcG9ydCBsb2dnaW5nJyBhbmQgbG9nIGF3YXkhCiIiIgoKaW1wb3J0IHN5cywgb3MsIHRpbWUsIGlvLCByZSwgdHJhY2ViYWNrLCB3YXJuaW5ncywgd2Vha3JlZiwgY29sbGVjdGlvbnMuYWJjCgpmcm9tIHR5cGVzIGltcG9ydCBHZW5lcmljQWxpYXMKZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCmZyb20gc3RyaW5nIGltcG9ydCBGb3JtYXR0ZXIgYXMgU3RyRm9ybWF0dGVyCgoKX19hbGxfXyA9IFsnQkFTSUNfRk9STUFUJywgJ0J1ZmZlcmluZ0Zvcm1hdHRlcicsICdDUklUSUNBTCcsICdERUJVRycsICdFUlJPUicsCiAgICAgICAgICAgJ0ZBVEFMJywgJ0ZpbGVIYW5kbGVyJywgJ0ZpbHRlcicsICdGb3JtYXR0ZXInLCAnSGFuZGxlcicsICdJTkZPJywKICAgICAgICAgICAnTG9nUmVjb3JkJywgJ0xvZ2dlcicsICdMb2dnZXJBZGFwdGVyJywgJ05PVFNFVCcsICdOdWxsSGFuZGxlcicsCiAgICAgICAgICAgJ1N0cmVhbUhhbmRsZXInLCAnV0FSTicsICdXQVJOSU5HJywgJ2FkZExldmVsTmFtZScsICdiYXNpY0NvbmZpZycsCiAgICAgICAgICAgJ2NhcHR1cmVXYXJuaW5ncycsICdjcml0aWNhbCcsICdkZWJ1ZycsICdkaXNhYmxlJywgJ2Vycm9yJywKICAgICAgICAgICAnZXhjZXB0aW9uJywgJ2ZhdGFsJywgJ2dldExldmVsTmFtZScsICdnZXRMb2dnZXInLCAnZ2V0TG9nZ2VyQ2xhc3MnLAogICAgICAgICAgICdpbmZvJywgJ2xvZycsICdtYWtlTG9nUmVjb3JkJywgJ3NldExvZ2dlckNsYXNzJywgJ3NodXRkb3duJywKICAgICAgICAgICAnd2FybicsICd3YXJuaW5nJywgJ2dldExvZ1JlY29yZEZhY3RvcnknLCAnc2V0TG9nUmVjb3JkRmFjdG9yeScsCiAgICAgICAgICAgJ2xhc3RSZXNvcnQnLCAncmFpc2VFeGNlcHRpb25zJywgJ2dldExldmVsTmFtZXNNYXBwaW5nJ10KCmltcG9ydCB0aHJlYWRpbmcKCl9fYXV0aG9yX18gID0gIlZpbmF5IFNhamlwIDx2aW5heV9zYWppcEByZWQtZG92ZS5jb20+IgpfX3N0YXR1c19fICA9ICJwcm9kdWN0aW9uIgojIFRoZSBmb2xsb3dpbmcgbW9kdWxlIGF0dHJpYnV0ZXMgYXJlIG5vIGxvbmdlciB1cGRhdGVkLgpfX3ZlcnNpb25fXyA9ICIwLjUuMS4yIgpfX2RhdGVfXyAgICA9ICIwNyBGZWJydWFyeSAyMDEwIgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICAgTWlzY2VsbGFuZW91cyBtb2R1bGUgZGF0YQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojCiNfc3RhcnRUaW1lIGlzIHVzZWQgYXMgdGhlIGJhc2Ugd2hlbiBjYWxjdWxhdGluZyB0aGUgcmVsYXRpdmUgdGltZSBvZiBldmVudHMKIwpfc3RhcnRUaW1lID0gdGltZS50aW1lKCkKCiMKI3JhaXNlRXhjZXB0aW9ucyBpcyB1c2VkIHRvIHNlZSBpZiBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyBzaG91bGQgYmUKI3Byb3BhZ2F0ZWQKIwpyYWlzZUV4Y2VwdGlvbnMgPSBUcnVlCgojCiMgSWYgeW91IGRvbid0IHdhbnQgdGhyZWFkaW5nIGluZm9ybWF0aW9uIGluIHRoZSBsb2csIHNldCB0aGlzIHRvIHplcm8KIwpsb2dUaHJlYWRzID0gVHJ1ZQoKIwojIElmIHlvdSBkb24ndCB3YW50IG11bHRpcHJvY2Vzc2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLCBzZXQgdGhpcyB0byB6ZXJvCiMKbG9nTXVsdGlwcm9jZXNzaW5nID0gVHJ1ZQoKIwojIElmIHlvdSBkb24ndCB3YW50IHByb2Nlc3MgaW5mb3JtYXRpb24gaW4gdGhlIGxvZywgc2V0IHRoaXMgdG8gemVybwojCmxvZ1Byb2Nlc3NlcyA9IFRydWUKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgIExldmVsIHJlbGF0ZWQgc3R1ZmYKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgRGVmYXVsdCBsZXZlbHMgYW5kIGxldmVsIG5hbWVzLCB0aGVzZSBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhbnkgcG9zaXRpdmUgc2V0CiMgb2YgdmFsdWVzIGhhdmluZyBjb3JyZXNwb25kaW5nIG5hbWVzLiBUaGVyZSBpcyBhIHBzZXVkby1sZXZlbCwgTk9UU0VULCB3aGljaAojIGlzIG9ubHkgcmVhbGx5IHRoZXJlIGFzIGEgbG93ZXIgbGltaXQgZm9yIHVzZXItZGVmaW5lZCBsZXZlbHMuIEhhbmRsZXJzIGFuZAojIGxvZ2dlcnMgYXJlIGluaXRpYWxpemVkIHdpdGggTk9UU0VUIHNvIHRoYXQgdGhleSB3aWxsIGxvZyBhbGwgbWVzc2FnZXMsIGV2ZW4KIyBhdCB1c2VyLWRlZmluZWQgbGV2ZWxzLgojCgpDUklUSUNBTCA9IDUwCkZBVEFMID0gQ1JJVElDQUwKRVJST1IgPSA0MApXQVJOSU5HID0gMzAKV0FSTiA9IFdBUk5JTkcKSU5GTyA9IDIwCkRFQlVHID0gMTAKTk9UU0VUID0gMAoKX2xldmVsVG9OYW1lID0gewogICAgQ1JJVElDQUw6ICdDUklUSUNBTCcsCiAgICBFUlJPUjogJ0VSUk9SJywKICAgIFdBUk5JTkc6ICdXQVJOSU5HJywKICAgIElORk86ICdJTkZPJywKICAgIERFQlVHOiAnREVCVUcnLAogICAgTk9UU0VUOiAnTk9UU0VUJywKfQpfbmFtZVRvTGV2ZWwgPSB7CiAgICAnQ1JJVElDQUwnOiBDUklUSUNBTCwKICAgICdGQVRBTCc6IEZBVEFMLAogICAgJ0VSUk9SJzogRVJST1IsCiAgICAnV0FSTic6IFdBUk5JTkcsCiAgICAnV0FSTklORyc6IFdBUk5JTkcsCiAgICAnSU5GTyc6IElORk8sCiAgICAnREVCVUcnOiBERUJVRywKICAgICdOT1RTRVQnOiBOT1RTRVQsCn0KCmRlZiBnZXRMZXZlbE5hbWVzTWFwcGluZygpOgogICAgcmV0dXJuIF9uYW1lVG9MZXZlbC5jb3B5KCkKCmRlZiBnZXRMZXZlbE5hbWUobGV2ZWwpOgogICAgIiIiCiAgICBSZXR1cm4gdGhlIHRleHR1YWwgb3IgbnVtZXJpYyByZXByZXNlbnRhdGlvbiBvZiBsb2dnaW5nIGxldmVsICdsZXZlbCcuCgogICAgSWYgdGhlIGxldmVsIGlzIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBsZXZlbHMgKENSSVRJQ0FMLCBFUlJPUiwgV0FSTklORywKICAgIElORk8sIERFQlVHKSB0aGVuIHlvdSBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgc3RyaW5nLiBJZiB5b3UgaGF2ZQogICAgYXNzb2NpYXRlZCBsZXZlbHMgd2l0aCBuYW1lcyB1c2luZyBhZGRMZXZlbE5hbWUgdGhlbiB0aGUgbmFtZSB5b3UgaGF2ZQogICAgYXNzb2NpYXRlZCB3aXRoICdsZXZlbCcgaXMgcmV0dXJuZWQuCgogICAgSWYgYSBudW1lcmljIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBkZWZpbmVkIGxldmVscyBpcyBwYXNzZWQKICAgIGluLCB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmcgcmVwcmVzZW50YXRpb24gaXMgcmV0dXJuZWQuCgogICAgSWYgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGxldmVsIGlzIHBhc3NlZCBpbiwgdGhlIGNvcnJlc3BvbmRpbmcKICAgIG51bWVyaWMgdmFsdWUgaXMgcmV0dXJuZWQuCgogICAgSWYgbm8gbWF0Y2hpbmcgbnVtZXJpYyBvciBzdHJpbmcgdmFsdWUgaXMgcGFzc2VkIGluLCB0aGUgc3RyaW5nCiAgICAnTGV2ZWwgJXMnICUgbGV2ZWwgaXMgcmV0dXJuZWQuCiAgICAiIiIKICAgICMgU2VlIElzc3VlcyAjMjIzODYsICMyNzkzNyBhbmQgIzI5MjIwIGZvciB3aHkgaXQncyB0aGlzIHdheQogICAgcmVzdWx0ID0gX2xldmVsVG9OYW1lLmdldChsZXZlbCkKICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gcmVzdWx0CiAgICByZXN1bHQgPSBfbmFtZVRvTGV2ZWwuZ2V0KGxldmVsKQogICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgogICAgICAgIHJldHVybiByZXN1bHQKICAgIHJldHVybiAiTGV2ZWwgJXMiICUgbGV2ZWwKCmRlZiBhZGRMZXZlbE5hbWUobGV2ZWwsIGxldmVsTmFtZSk6CiAgICAiIiIKICAgIEFzc29jaWF0ZSAnbGV2ZWxOYW1lJyB3aXRoICdsZXZlbCcuCgogICAgVGhpcyBpcyB1c2VkIHdoZW4gY29udmVydGluZyBsZXZlbHMgdG8gdGV4dCBkdXJpbmcgbWVzc2FnZSBmb3JtYXR0aW5nLgogICAgIiIiCiAgICBfYWNxdWlyZUxvY2soKQogICAgdHJ5OiAgICAjdW5saWtlbHkgdG8gY2F1c2UgYW4gZXhjZXB0aW9uLCBidXQgeW91IG5ldmVyIGtub3cuLi4KICAgICAgICBfbGV2ZWxUb05hbWVbbGV2ZWxdID0gbGV2ZWxOYW1lCiAgICAgICAgX25hbWVUb0xldmVsW2xldmVsTmFtZV0gPSBsZXZlbAogICAgZmluYWxseToKICAgICAgICBfcmVsZWFzZUxvY2soKQoKaWYgaGFzYXR0cihzeXMsICJfZ2V0ZnJhbWUiKToKICAgIGN1cnJlbnRmcmFtZSA9IGxhbWJkYTogc3lzLl9nZXRmcmFtZSgxKQplbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgZGVmIGN1cnJlbnRmcmFtZSgpOgogICAgICAgICIiIlJldHVybiB0aGUgZnJhbWUgb2JqZWN0IGZvciB0aGUgY2FsbGVyJ3Mgc3RhY2sgZnJhbWUuIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICByZXR1cm4gc3lzLmV4Y19pbmZvKClbMl0udGJfZnJhbWUuZl9iYWNrCgojCiMgX3NyY2ZpbGUgaXMgdXNlZCB3aGVuIHdhbGtpbmcgdGhlIHN0YWNrIHRvIGNoZWNrIHdoZW4gd2UndmUgZ290IHRoZSBmaXJzdAojIGNhbGxlciBzdGFjayBmcmFtZSwgYnkgc2tpcHBpbmcgZnJhbWVzIHdob3NlIGZpbGVuYW1lIGlzIHRoYXQgb2YgdGhpcwojIG1vZHVsZSdzIHNvdXJjZS4gSXQgdGhlcmVmb3JlIHNob3VsZCBjb250YWluIHRoZSBmaWxlbmFtZSBvZiB0aGlzIG1vZHVsZSdzCiMgc291cmNlIGZpbGUuCiMKIyBPcmRpbmFyaWx5IHdlIHdvdWxkIHVzZSBfX2ZpbGVfXyBmb3IgdGhpcywgYnV0IGZyb3plbiBtb2R1bGVzIGRvbid0IGFsd2F5cwojIGhhdmUgX19maWxlX18gc2V0LCBmb3Igc29tZSByZWFzb24gKHNlZSBJc3N1ZSAjMjE3MzYpLiBUaHVzLCB3ZSBnZXQgdGhlCiMgZmlsZW5hbWUgZnJvbSBhIGhhbmR5IGNvZGUgb2JqZWN0IGZyb20gYSBmdW5jdGlvbiBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLgojIChUaGVyZSdzIG5vIHBhcnRpY3VsYXIgcmVhc29uIGZvciBwaWNraW5nIGFkZExldmVsTmFtZS4pCiMKCl9zcmNmaWxlID0gb3MucGF0aC5ub3JtY2FzZShhZGRMZXZlbE5hbWUuX19jb2RlX18uY29fZmlsZW5hbWUpCgojIF9zcmNmaWxlIGlzIG9ubHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHN5cy5fZ2V0ZnJhbWUoKS4KIyBTZXR0aW5nIF9zcmNmaWxlIHRvIE5vbmUgd2lsbCBwcmV2ZW50IGZpbmRDYWxsZXIoKSBmcm9tIGJlaW5nIGNhbGxlZC4gVGhpcwojIHdheSwgeW91IGNhbiBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgZmV0Y2hpbmcgY2FsbGVyIGluZm9ybWF0aW9uLgoKIyBUaGUgZm9sbG93aW5nIGlzIGJhc2VkIG9uIHdhcm5pbmdzLl9pc19pbnRlcm5hbF9mcmFtZS4gSXQgbWFrZXMgc3VyZSB0aGF0CiMgZnJhbWVzIG9mIHRoZSBpbXBvcnQgbWVjaGFuaXNtIGFyZSBza2lwcGVkIHdoZW4gbG9nZ2luZyBhdCBtb2R1bGUgbGV2ZWwgYW5kCiMgdXNpbmcgYSBzdGFja2xldmVsIHZhbHVlIGdyZWF0ZXIgdGhhbiBvbmUuCmRlZiBfaXNfaW50ZXJuYWxfZnJhbWUoZnJhbWUpOgogICAgIiIiU2lnbmFsIHdoZXRoZXIgdGhlIGZyYW1lIGlzIGEgQ1B5dGhvbiBvciBsb2dnaW5nIG1vZHVsZSBpbnRlcm5hbC4iIiIKICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtY2FzZShmcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUpCiAgICByZXR1cm4gZmlsZW5hbWUgPT0gX3NyY2ZpbGUgb3IgKAogICAgICAgICJpbXBvcnRsaWIiIGluIGZpbGVuYW1lIGFuZCAiX2Jvb3RzdHJhcCIgaW4gZmlsZW5hbWUKICAgICkKCgpkZWYgX2NoZWNrTGV2ZWwobGV2ZWwpOgogICAgaWYgaXNpbnN0YW5jZShsZXZlbCwgaW50KToKICAgICAgICBydiA9IGxldmVsCiAgICBlbGlmIHN0cihsZXZlbCkgPT0gbGV2ZWw6CiAgICAgICAgaWYgbGV2ZWwgbm90IGluIF9uYW1lVG9MZXZlbDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBsZXZlbDogJXIiICUgbGV2ZWwpCiAgICAgICAgcnYgPSBfbmFtZVRvTGV2ZWxbbGV2ZWxdCiAgICBlbHNlOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigiTGV2ZWwgbm90IGFuIGludGVnZXIgb3IgYSB2YWxpZCBzdHJpbmc6ICVyIgogICAgICAgICAgICAgICAgICAgICAgICAlIChsZXZlbCwpKQogICAgcmV0dXJuIHJ2CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgICBUaHJlYWQtcmVsYXRlZCBzdHVmZgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojCiNfbG9jayBpcyB1c2VkIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gc2hhcmVkIGRhdGEgc3RydWN0dXJlcyBpbiB0aGlzIG1vZHVsZS4KI1RoaXMgbmVlZHMgdG8gYmUgYW4gUkxvY2sgYmVjYXVzZSBmaWxlQ29uZmlnKCkgY3JlYXRlcyBhbmQgY29uZmlndXJlcwojSGFuZGxlcnMsIGFuZCBzbyBtaWdodCBhcmJpdHJhcnkgdXNlciB0aHJlYWRzLiBTaW5jZSBIYW5kbGVyIGNvZGUgdXBkYXRlcyB0aGUKI3NoYXJlZCBkaWN0aW9uYXJ5IF9oYW5kbGVycywgaXQgbmVlZHMgdG8gYWNxdWlyZSB0aGUgbG9jay4gQnV0IGlmIGNvbmZpZ3VyaW5nLAojdGhlIGxvY2sgd291bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWNxdWlyZWQgLSBzbyB3ZSBuZWVkIGFuIFJMb2NrLgojVGhlIHNhbWUgYXJndW1lbnQgYXBwbGllcyB0byBMb2dnZXJzIGFuZCBNYW5hZ2VyLmxvZ2dlckRpY3QuCiMKX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQoKZGVmIF9hY3F1aXJlTG9jaygpOgogICAgIiIiCiAgICBBY3F1aXJlIHRoZSBtb2R1bGUtbGV2ZWwgbG9jayBmb3Igc2VyaWFsaXppbmcgYWNjZXNzIHRvIHNoYXJlZCBkYXRhLgoKICAgIFRoaXMgc2hvdWxkIGJlIHJlbGVhc2VkIHdpdGggX3JlbGVhc2VMb2NrKCkuCiAgICAiIiIKICAgIGlmIF9sb2NrOgogICAgICAgIF9sb2NrLmFjcXVpcmUoKQoKZGVmIF9yZWxlYXNlTG9jaygpOgogICAgIiIiCiAgICBSZWxlYXNlIHRoZSBtb2R1bGUtbGV2ZWwgbG9jayBhY3F1aXJlZCBieSBjYWxsaW5nIF9hY3F1aXJlTG9jaygpLgogICAgIiIiCiAgICBpZiBfbG9jazoKICAgICAgICBfbG9jay5yZWxlYXNlKCkKCgojIFByZXZlbnQgYSBoZWxkIGxvZ2dpbmcgbG9jayBmcm9tIGJsb2NraW5nIGEgY2hpbGQgZnJvbSBsb2dnaW5nLgoKaWYgbm90IGhhc2F0dHIob3MsICdyZWdpc3Rlcl9hdF9mb3JrJyk6ICAjIFdpbmRvd3MgYW5kIGZyaWVuZHMuCiAgICBkZWYgX3JlZ2lzdGVyX2F0X2ZvcmtfcmVpbml0X2xvY2soaW5zdGFuY2UpOgogICAgICAgIHBhc3MgICMgbm8tb3Agd2hlbiBvcy5yZWdpc3Rlcl9hdF9mb3JrIGRvZXMgbm90IGV4aXN0LgplbHNlOgogICAgIyBBIGNvbGxlY3Rpb24gb2YgaW5zdGFuY2VzIHdpdGggYSBfYXRfZm9ya19yZWluaXQgbWV0aG9kIChsb2dnaW5nLkhhbmRsZXIpCiAgICAjIHRvIGJlIGNhbGxlZCBpbiB0aGUgY2hpbGQgYWZ0ZXIgZm9ya2luZy4gIFRoZSB3ZWFrcmVmIGF2b2lkcyB1cyBrZWVwaW5nCiAgICAjIGRpc2NhcmRlZCBIYW5kbGVyIGluc3RhbmNlcyBhbGl2ZS4KICAgIF9hdF9mb3JrX3JlaW5pdF9sb2NrX3dlYWtzZXQgPSB3ZWFrcmVmLldlYWtTZXQoKQoKICAgIGRlZiBfcmVnaXN0ZXJfYXRfZm9ya19yZWluaXRfbG9jayhpbnN0YW5jZSk6CiAgICAgICAgX2FjcXVpcmVMb2NrKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIF9hdF9mb3JrX3JlaW5pdF9sb2NrX3dlYWtzZXQuYWRkKGluc3RhbmNlKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIF9yZWxlYXNlTG9jaygpCgogICAgZGVmIF9hZnRlcl9hdF9mb3JrX2NoaWxkX3JlaW5pdF9sb2NrcygpOgogICAgICAgIGZvciBoYW5kbGVyIGluIF9hdF9mb3JrX3JlaW5pdF9sb2NrX3dlYWtzZXQ6CiAgICAgICAgICAgIGhhbmRsZXIuX2F0X2ZvcmtfcmVpbml0KCkKCiAgICAgICAgIyBfYWNxdWlyZUxvY2soKSB3YXMgY2FsbGVkIGluIHRoZSBwYXJlbnQgYmVmb3JlIGZvcmtpbmcuCiAgICAgICAgIyBUaGUgbG9jayBpcyByZWluaXRpYWxpemVkIHRvIHVubG9ja2VkIHN0YXRlLgogICAgICAgIF9sb2NrLl9hdF9mb3JrX3JlaW5pdCgpCgogICAgb3MucmVnaXN0ZXJfYXRfZm9yayhiZWZvcmU9X2FjcXVpcmVMb2NrLAogICAgICAgICAgICAgICAgICAgICAgICBhZnRlcl9pbl9jaGlsZD1fYWZ0ZXJfYXRfZm9ya19jaGlsZF9yZWluaXRfbG9ja3MsCiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyX2luX3BhcmVudD1fcmVsZWFzZUxvY2spCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICAgVGhlIGxvZ2dpbmcgcmVjb3JkCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNsYXNzIExvZ1JlY29yZChvYmplY3QpOgogICAgIiIiCiAgICBBIExvZ1JlY29yZCBpbnN0YW5jZSByZXByZXNlbnRzIGFuIGV2ZW50IGJlaW5nIGxvZ2dlZC4KCiAgICBMb2dSZWNvcmQgaW5zdGFuY2VzIGFyZSBjcmVhdGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIGlzIGxvZ2dlZC4gVGhleQogICAgY29udGFpbiBhbGwgdGhlIGluZm9ybWF0aW9uIHBlcnRpbmVudCB0byB0aGUgZXZlbnQgYmVpbmcgbG9nZ2VkLiBUaGUKICAgIG1haW4gaW5mb3JtYXRpb24gcGFzc2VkIGluIGlzIGluIG1zZyBhbmQgYXJncywgd2hpY2ggYXJlIGNvbWJpbmVkCiAgICB1c2luZyBzdHIobXNnKSAlIGFyZ3MgdG8gY3JlYXRlIHRoZSBtZXNzYWdlIGZpZWxkIG9mIHRoZSByZWNvcmQuIFRoZQogICAgcmVjb3JkIGFsc28gaW5jbHVkZXMgaW5mb3JtYXRpb24gc3VjaCBhcyB3aGVuIHRoZSByZWNvcmQgd2FzIGNyZWF0ZWQsCiAgICB0aGUgc291cmNlIGxpbmUgd2hlcmUgdGhlIGxvZ2dpbmcgY2FsbCB3YXMgbWFkZSwgYW5kIGFueSBleGNlcHRpb24KICAgIGluZm9ybWF0aW9uIHRvIGJlIGxvZ2dlZC4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGxldmVsLCBwYXRobmFtZSwgbGluZW5vLAogICAgICAgICAgICAgICAgIG1zZywgYXJncywgZXhjX2luZm8sIGZ1bmM9Tm9uZSwgc2luZm89Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICIiIgogICAgICAgIEluaXRpYWxpemUgYSBsb2dnaW5nIHJlY29yZCB3aXRoIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLgogICAgICAgICIiIgogICAgICAgIGN0ID0gdGltZS50aW1lKCkKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5tc2cgPSBtc2cKICAgICAgICAjCiAgICAgICAgIyBUaGUgZm9sbG93aW5nIHN0YXRlbWVudCBhbGxvd3MgcGFzc2luZyBvZiBhIGRpY3Rpb25hcnkgYXMgYSBzb2xlCiAgICAgICAgIyBhcmd1bWVudCwgc28gdGhhdCB5b3UgY2FuIGRvIHNvbWV0aGluZyBsaWtlCiAgICAgICAgIyAgbG9nZ2luZy5kZWJ1ZygiYSAlKGEpZCBiICUoYilzIiwgeydhJzoxLCAnYic6Mn0pCiAgICAgICAgIyBTdWdnZXN0ZWQgYnkgU3RlZmFuIEJlaG5lbC4KICAgICAgICAjIE5vdGUgdGhhdCB3aXRob3V0IHRoZSB0ZXN0IGZvciBhcmdzWzBdLCB3ZSBnZXQgYSBwcm9ibGVtIGJlY2F1c2UKICAgICAgICAjIGR1cmluZyBmb3JtYXR0aW5nLCB3ZSB0ZXN0IHRvIHNlZSBpZiB0aGUgYXJnIGlzIHByZXNlbnQgdXNpbmcKICAgICAgICAjICdpZiBzZWxmLmFyZ3M6Jy4gSWYgdGhlIGV2ZW50IGJlaW5nIGxvZ2dlZCBpcyBlLmcuICdWYWx1ZSBpcyAlZCcKICAgICAgICAjIGFuZCBpZiB0aGUgcGFzc2VkIGFyZyBmYWlscyAnaWYgc2VsZi5hcmdzOicgdGhlbiBubyBmb3JtYXR0aW5nCiAgICAgICAgIyBpcyBkb25lLiBGb3IgZXhhbXBsZSwgbG9nZ2VyLndhcm5pbmcoJ1ZhbHVlIGlzICVkJywgMCkgd291bGQgbG9nCiAgICAgICAgIyAnVmFsdWUgaXMgJWQnIGluc3RlYWQgb2YgJ1ZhbHVlIGlzIDAnLgogICAgICAgICMgRm9yIHRoZSB1c2UgY2FzZSBvZiBwYXNzaW5nIGEgZGljdGlvbmFyeSwgdGhpcyBzaG91bGQgbm90IGJlIGEKICAgICAgICAjIHByb2JsZW0uCiAgICAgICAgIyBJc3N1ZSAjMjExNzI6IGEgcmVxdWVzdCB3YXMgbWFkZSB0byByZWxheCB0aGUgaXNpbnN0YW5jZSBjaGVjawogICAgICAgICMgdG8gaGFzYXR0cihhcmdzWzBdLCAnX19nZXRpdGVtX18nKS4gSG93ZXZlciwgdGhlIGRvY3Mgb24gc3RyaW5nCiAgICAgICAgIyBmb3JtYXR0aW5nIHN0aWxsIHNlZW0gdG8gc3VnZ2VzdCBhIG1hcHBpbmcgb2JqZWN0IGlzIHJlcXVpcmVkLgogICAgICAgICMgVGh1cywgd2hpbGUgbm90IHJlbW92aW5nIHRoZSBpc2luc3RhbmNlIGNoZWNrLCBpdCBkb2VzIG5vdyBsb29rCiAgICAgICAgIyBmb3IgY29sbGVjdGlvbnMuYWJjLk1hcHBpbmcgcmF0aGVyIHRoYW4sIGFzIGJlZm9yZSwgZGljdC4KICAgICAgICBpZiAoYXJncyBhbmQgbGVuKGFyZ3MpID09IDEgYW5kIGlzaW5zdGFuY2UoYXJnc1swXSwgY29sbGVjdGlvbnMuYWJjLk1hcHBpbmcpCiAgICAgICAgICAgIGFuZCBhcmdzWzBdKToKICAgICAgICAgICAgYXJncyA9IGFyZ3NbMF0KICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgc2VsZi5sZXZlbG5hbWUgPSBnZXRMZXZlbE5hbWUobGV2ZWwpCiAgICAgICAgc2VsZi5sZXZlbG5vID0gbGV2ZWwKICAgICAgICBzZWxmLnBhdGhuYW1lID0gcGF0aG5hbWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGhuYW1lKQogICAgICAgICAgICBzZWxmLm1vZHVsZSA9IG9zLnBhdGguc3BsaXRleHQoc2VsZi5maWxlbmFtZSlbMF0KICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gcGF0aG5hbWUKICAgICAgICAgICAgc2VsZi5tb2R1bGUgPSAiVW5rbm93biBtb2R1bGUiCiAgICAgICAgc2VsZi5leGNfaW5mbyA9IGV4Y19pbmZvCiAgICAgICAgc2VsZi5leGNfdGV4dCA9IE5vbmUgICAgICAjIHVzZWQgdG8gY2FjaGUgdGhlIHRyYWNlYmFjayB0ZXh0CiAgICAgICAgc2VsZi5zdGFja19pbmZvID0gc2luZm8KICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwogICAgICAgIHNlbGYuZnVuY05hbWUgPSBmdW5jCiAgICAgICAgc2VsZi5jcmVhdGVkID0gY3QKICAgICAgICBzZWxmLm1zZWNzID0gaW50KChjdCAtIGludChjdCkpICogMTAwMCkgKyAwLjAgICMgc2VlIGdoLTg5MDQ3CiAgICAgICAgc2VsZi5yZWxhdGl2ZUNyZWF0ZWQgPSAoc2VsZi5jcmVhdGVkIC0gX3N0YXJ0VGltZSkgKiAxMDAwCiAgICAgICAgaWYgbG9nVGhyZWFkczoKICAgICAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgc2VsZi50aHJlYWROYW1lID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZQogICAgICAgIGVsc2U6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKICAgICAgICAgICAgc2VsZi50aHJlYWROYW1lID0gTm9uZQogICAgICAgIGlmIG5vdCBsb2dNdWx0aXByb2Nlc3Npbmc6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICBzZWxmLnByb2Nlc3NOYW1lID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYucHJvY2Vzc05hbWUgPSAnTWFpblByb2Nlc3MnCiAgICAgICAgICAgIG1wID0gc3lzLm1vZHVsZXMuZ2V0KCdtdWx0aXByb2Nlc3NpbmcnKQogICAgICAgICAgICBpZiBtcCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICMgRXJyb3JzIG1heSBvY2N1ciBpZiBtdWx0aXByb2Nlc3NpbmcgaGFzIG5vdCBmaW5pc2hlZCBsb2FkaW5nCiAgICAgICAgICAgICAgICAjIHlldCAtIGUuZy4gaWYgYSBjdXN0b20gaW1wb3J0IGhvb2sgY2F1c2VzIHRoaXJkLXBhcnR5IGNvZGUKICAgICAgICAgICAgICAgICMgdG8gcnVuIHdoZW4gbXVsdGlwcm9jZXNzaW5nIGNhbGxzIGltcG9ydC4gU2VlIGlzc3VlIDgyMDAKICAgICAgICAgICAgICAgICMgZm9yIGFuIGV4YW1wbGUKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NOYW1lID0gbXAuY3VycmVudF9wcm9jZXNzKCkubmFtZQogICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgaWYgbG9nUHJvY2Vzc2VzIGFuZCBoYXNhdHRyKG9zLCAnZ2V0cGlkJyk6CiAgICAgICAgICAgIHNlbGYucHJvY2VzcyA9IG9zLmdldHBpZCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5wcm9jZXNzID0gTm9uZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzxMb2dSZWNvcmQ6ICVzLCAlcywgJXMsICVzLCAiJXMiPiclKHNlbGYubmFtZSwgc2VsZi5sZXZlbG5vLAogICAgICAgICAgICBzZWxmLnBhdGhuYW1lLCBzZWxmLmxpbmVubywgc2VsZi5tc2cpCgogICAgZGVmIGdldE1lc3NhZ2Uoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlIGZvciB0aGlzIExvZ1JlY29yZC4KCiAgICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlIGZvciB0aGlzIExvZ1JlY29yZCBhZnRlciBtZXJnaW5nIGFueSB1c2VyLXN1cHBsaWVkCiAgICAgICAgYXJndW1lbnRzIHdpdGggdGhlIG1lc3NhZ2UuCiAgICAgICAgIiIiCiAgICAgICAgbXNnID0gc3RyKHNlbGYubXNnKQogICAgICAgIGlmIHNlbGYuYXJnczoKICAgICAgICAgICAgbXNnID0gbXNnICUgc2VsZi5hcmdzCiAgICAgICAgcmV0dXJuIG1zZwoKIwojICAgRGV0ZXJtaW5lIHdoaWNoIGNsYXNzIHRvIHVzZSB3aGVuIGluc3RhbnRpYXRpbmcgbG9nIHJlY29yZHMuCiMKX2xvZ1JlY29yZEZhY3RvcnkgPSBMb2dSZWNvcmQKCmRlZiBzZXRMb2dSZWNvcmRGYWN0b3J5KGZhY3RvcnkpOgogICAgIiIiCiAgICBTZXQgdGhlIGZhY3RvcnkgdG8gYmUgdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgYSBsb2cgcmVjb3JkLgoKICAgIDpwYXJhbSBmYWN0b3J5OiBBIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHRvIGluc3RhbnRpYXRlCiAgICBhIGxvZyByZWNvcmQuCiAgICAiIiIKICAgIGdsb2JhbCBfbG9nUmVjb3JkRmFjdG9yeQogICAgX2xvZ1JlY29yZEZhY3RvcnkgPSBmYWN0b3J5CgpkZWYgZ2V0TG9nUmVjb3JkRmFjdG9yeSgpOgogICAgIiIiCiAgICBSZXR1cm4gdGhlIGZhY3RvcnkgdG8gYmUgdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgYSBsb2cgcmVjb3JkLgogICAgIiIiCgogICAgcmV0dXJuIF9sb2dSZWNvcmRGYWN0b3J5CgpkZWYgbWFrZUxvZ1JlY29yZChkaWN0KToKICAgICIiIgogICAgTWFrZSBhIExvZ1JlY29yZCB3aG9zZSBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBzcGVjaWZpZWQgZGljdGlvbmFyeSwKICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIGZvciBjb252ZXJ0aW5nIGEgbG9nZ2luZyBldmVudCByZWNlaXZlZCBvdmVyCiAgICBhIHNvY2tldCBjb25uZWN0aW9uICh3aGljaCBpcyBzZW50IGFzIGEgZGljdGlvbmFyeSkgaW50byBhIExvZ1JlY29yZAogICAgaW5zdGFuY2UuCiAgICAiIiIKICAgIHJ2ID0gX2xvZ1JlY29yZEZhY3RvcnkoTm9uZSwgTm9uZSwgIiIsIDAsICIiLCAoKSwgTm9uZSwgTm9uZSkKICAgIHJ2Ll9fZGljdF9fLnVwZGF0ZShkaWN0KQogICAgcmV0dXJuIHJ2CgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICAgRm9ybWF0dGVyIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCl9zdHJfZm9ybWF0dGVyID0gU3RyRm9ybWF0dGVyKCkKZGVsIFN0ckZvcm1hdHRlcgoKCmNsYXNzIFBlcmNlbnRTdHlsZShvYmplY3QpOgoKICAgIGRlZmF1bHRfZm9ybWF0ID0gJyUobWVzc2FnZSlzJwogICAgYXNjdGltZV9mb3JtYXQgPSAnJShhc2N0aW1lKXMnCiAgICBhc2N0aW1lX3NlYXJjaCA9ICclKGFzY3RpbWUpJwogICAgdmFsaWRhdGlvbl9wYXR0ZXJuID0gcmUuY29tcGlsZShyJyVcKFx3K1wpWyMwKyAtXSooXCp8XGQrKT8oXC4oXCp8XGQrKSk/W2Rpb3V4ZWZnY3JzYSVdJywgcmUuSSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZm10LCAqLCBkZWZhdWx0cz1Ob25lKToKICAgICAgICBzZWxmLl9mbXQgPSBmbXQgb3Igc2VsZi5kZWZhdWx0X2Zvcm1hdAogICAgICAgIHNlbGYuX2RlZmF1bHRzID0gZGVmYXVsdHMKCiAgICBkZWYgdXNlc1RpbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZtdC5maW5kKHNlbGYuYXNjdGltZV9zZWFyY2gpID49IDAKCiAgICBkZWYgdmFsaWRhdGUoc2VsZik6CiAgICAgICAgIiIiVmFsaWRhdGUgdGhlIGlucHV0IGZvcm1hdCwgZW5zdXJlIGl0IG1hdGNoZXMgdGhlIGNvcnJlY3Qgc3R5bGUiIiIKICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0aW9uX3BhdHRlcm4uc2VhcmNoKHNlbGYuX2ZtdCk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZm9ybWF0ICclcycgZm9yICclcycgc3R5bGUiICUgKHNlbGYuX2ZtdCwgc2VsZi5kZWZhdWx0X2Zvcm1hdFswXSkpCgogICAgZGVmIF9mb3JtYXQoc2VsZiwgcmVjb3JkKToKICAgICAgICBpZiBkZWZhdWx0cyA6PSBzZWxmLl9kZWZhdWx0czoKICAgICAgICAgICAgdmFsdWVzID0gZGVmYXVsdHMgfCByZWNvcmQuX19kaWN0X18KICAgICAgICBlbHNlOgogICAgICAgICAgICB2YWx1ZXMgPSByZWNvcmQuX19kaWN0X18KICAgICAgICByZXR1cm4gc2VsZi5fZm10ICUgdmFsdWVzCgogICAgZGVmIGZvcm1hdChzZWxmLCByZWNvcmQpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Zvcm1hdChyZWNvcmQpCiAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Zvcm1hdHRpbmcgZmllbGQgbm90IGZvdW5kIGluIHJlY29yZDogJXMnICUgZSkKCgpjbGFzcyBTdHJGb3JtYXRTdHlsZShQZXJjZW50U3R5bGUpOgogICAgZGVmYXVsdF9mb3JtYXQgPSAne21lc3NhZ2V9JwogICAgYXNjdGltZV9mb3JtYXQgPSAne2FzY3RpbWV9JwogICAgYXNjdGltZV9zZWFyY2ggPSAne2FzY3RpbWUnCgogICAgZm10X3NwZWMgPSByZS5jb21waWxlKHInXiguP1s8Pj1eXSk/WysgLV0/Iz8wPyhcZCt8e1x3K30pP1ssX10/KFwuKFxkK3x7XHcrfSkpP1tiY2RlZmdub3N4JV0/JCcsIHJlLkkpCiAgICBmaWVsZF9zcGVjID0gcmUuY29tcGlsZShyJ14oXGQrfFx3KykoXC5cdyt8XFtbXl1dK1xdKSokJykKCiAgICBkZWYgX2Zvcm1hdChzZWxmLCByZWNvcmQpOgogICAgICAgIGlmIGRlZmF1bHRzIDo9IHNlbGYuX2RlZmF1bHRzOgogICAgICAgICAgICB2YWx1ZXMgPSBkZWZhdWx0cyB8IHJlY29yZC5fX2RpY3RfXwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHZhbHVlcyA9IHJlY29yZC5fX2RpY3RfXwogICAgICAgIHJldHVybiBzZWxmLl9mbXQuZm9ybWF0KCoqdmFsdWVzKQoKICAgIGRlZiB2YWxpZGF0ZShzZWxmKToKICAgICAgICAiIiJWYWxpZGF0ZSB0aGUgaW5wdXQgZm9ybWF0LCBlbnN1cmUgaXQgaXMgdGhlIGNvcnJlY3Qgc3RyaW5nIGZvcm1hdHRpbmcgc3R5bGUiIiIKICAgICAgICBmaWVsZHMgPSBzZXQoKQogICAgICAgIHRyeToKICAgICAgICAgICAgZm9yIF8sIGZpZWxkbmFtZSwgc3BlYywgY29udmVyc2lvbiBpbiBfc3RyX2Zvcm1hdHRlci5wYXJzZShzZWxmLl9mbXQpOgogICAgICAgICAgICAgICAgaWYgZmllbGRuYW1lOgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmZpZWxkX3NwZWMubWF0Y2goZmllbGRuYW1lKToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBmaWVsZCBuYW1lL2V4cHJlc3Npb246ICVyJyAlIGZpZWxkbmFtZSkKICAgICAgICAgICAgICAgICAgICBmaWVsZHMuYWRkKGZpZWxkbmFtZSkKICAgICAgICAgICAgICAgIGlmIGNvbnZlcnNpb24gYW5kIGNvbnZlcnNpb24gbm90IGluICdyc2EnOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgY29udmVyc2lvbjogJXInICUgY29udmVyc2lvbikKICAgICAgICAgICAgICAgIGlmIHNwZWMgYW5kIG5vdCBzZWxmLmZtdF9zcGVjLm1hdGNoKHNwZWMpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2JhZCBzcGVjaWZpZXI6ICVyJyAlIHNwZWMpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBmb3JtYXQ6ICVzJyAlIGUpCiAgICAgICAgaWYgbm90IGZpZWxkczoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBmb3JtYXQ6IG5vIGZpZWxkcycpCgoKY2xhc3MgU3RyaW5nVGVtcGxhdGVTdHlsZShQZXJjZW50U3R5bGUpOgogICAgZGVmYXVsdF9mb3JtYXQgPSAnJHttZXNzYWdlfScKICAgIGFzY3RpbWVfZm9ybWF0ID0gJyR7YXNjdGltZX0nCiAgICBhc2N0aW1lX3NlYXJjaCA9ICcke2FzY3RpbWV9JwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIHNlbGYuX3RwbCA9IFRlbXBsYXRlKHNlbGYuX2ZtdCkKCiAgICBkZWYgdXNlc1RpbWUoc2VsZik6CiAgICAgICAgZm10ID0gc2VsZi5fZm10CiAgICAgICAgcmV0dXJuIGZtdC5maW5kKCckYXNjdGltZScpID49IDAgb3IgZm10LmZpbmQoc2VsZi5hc2N0aW1lX3NlYXJjaCkgPj0gMAoKICAgIGRlZiB2YWxpZGF0ZShzZWxmKToKICAgICAgICBwYXR0ZXJuID0gVGVtcGxhdGUucGF0dGVybgogICAgICAgIGZpZWxkcyA9IHNldCgpCiAgICAgICAgZm9yIG0gaW4gcGF0dGVybi5maW5kaXRlcihzZWxmLl9mbXQpOgogICAgICAgICAgICBkID0gbS5ncm91cGRpY3QoKQogICAgICAgICAgICBpZiBkWyduYW1lZCddOgogICAgICAgICAgICAgICAgZmllbGRzLmFkZChkWyduYW1lZCddKQogICAgICAgICAgICBlbGlmIGRbJ2JyYWNlZCddOgogICAgICAgICAgICAgICAgZmllbGRzLmFkZChkWydicmFjZWQnXSkKICAgICAgICAgICAgZWxpZiBtLmdyb3VwKDApID09ICckJzoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgZm9ybWF0OiBiYXJlIFwnJFwnIG5vdCBhbGxvd2VkJykKICAgICAgICBpZiBub3QgZmllbGRzOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbnZhbGlkIGZvcm1hdDogbm8gZmllbGRzJykKCiAgICBkZWYgX2Zvcm1hdChzZWxmLCByZWNvcmQpOgogICAgICAgIGlmIGRlZmF1bHRzIDo9IHNlbGYuX2RlZmF1bHRzOgogICAgICAgICAgICB2YWx1ZXMgPSBkZWZhdWx0cyB8IHJlY29yZC5fX2RpY3RfXwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHZhbHVlcyA9IHJlY29yZC5fX2RpY3RfXwogICAgICAgIHJldHVybiBzZWxmLl90cGwuc3Vic3RpdHV0ZSgqKnZhbHVlcykKCgpCQVNJQ19GT1JNQVQgPSAiJShsZXZlbG5hbWUpczolKG5hbWUpczolKG1lc3NhZ2UpcyIKCl9TVFlMRVMgPSB7CiAgICAnJSc6IChQZXJjZW50U3R5bGUsIEJBU0lDX0ZPUk1BVCksCiAgICAneyc6IChTdHJGb3JtYXRTdHlsZSwgJ3tsZXZlbG5hbWV9OntuYW1lfTp7bWVzc2FnZX0nKSwKICAgICckJzogKFN0cmluZ1RlbXBsYXRlU3R5bGUsICcke2xldmVsbmFtZX06JHtuYW1lfToke21lc3NhZ2V9JyksCn0KCmNsYXNzIEZvcm1hdHRlcihvYmplY3QpOgogICAgIiIiCiAgICBGb3JtYXR0ZXIgaW5zdGFuY2VzIGFyZSB1c2VkIHRvIGNvbnZlcnQgYSBMb2dSZWNvcmQgdG8gdGV4dC4KCiAgICBGb3JtYXR0ZXJzIG5lZWQgdG8ga25vdyBob3cgYSBMb2dSZWNvcmQgaXMgY29uc3RydWN0ZWQuIFRoZXkgYXJlCiAgICByZXNwb25zaWJsZSBmb3IgY29udmVydGluZyBhIExvZ1JlY29yZCB0byAodXN1YWxseSkgYSBzdHJpbmcgd2hpY2ggY2FuCiAgICBiZSBpbnRlcnByZXRlZCBieSBlaXRoZXIgYSBodW1hbiBvciBhbiBleHRlcm5hbCBzeXN0ZW0uIFRoZSBiYXNlIEZvcm1hdHRlcgogICAgYWxsb3dzIGEgZm9ybWF0dGluZyBzdHJpbmcgdG8gYmUgc3BlY2lmaWVkLiBJZiBub25lIGlzIHN1cHBsaWVkLCB0aGUKICAgIHN0eWxlLWRlcGVuZGVudCBkZWZhdWx0IHZhbHVlLCAiJShtZXNzYWdlKXMiLCAie21lc3NhZ2V9Iiwgb3IKICAgICIke21lc3NhZ2V9IiwgaXMgdXNlZC4KCiAgICBUaGUgRm9ybWF0dGVyIGNhbiBiZSBpbml0aWFsaXplZCB3aXRoIGEgZm9ybWF0IHN0cmluZyB3aGljaCBtYWtlcyB1c2Ugb2YKICAgIGtub3dsZWRnZSBvZiB0aGUgTG9nUmVjb3JkIGF0dHJpYnV0ZXMgLSBlLmcuIHRoZSBkZWZhdWx0IHZhbHVlIG1lbnRpb25lZAogICAgYWJvdmUgbWFrZXMgdXNlIG9mIHRoZSBmYWN0IHRoYXQgdGhlIHVzZXIncyBtZXNzYWdlIGFuZCBhcmd1bWVudHMgYXJlIHByZS0KICAgIGZvcm1hdHRlZCBpbnRvIGEgTG9nUmVjb3JkJ3MgbWVzc2FnZSBhdHRyaWJ1dGUuIEN1cnJlbnRseSwgdGhlIHVzZWZ1bAogICAgYXR0cmlidXRlcyBpbiBhIExvZ1JlY29yZCBhcmUgZGVzY3JpYmVkIGJ5OgoKICAgICUobmFtZSlzICAgICAgICAgICAgTmFtZSBvZiB0aGUgbG9nZ2VyIChsb2dnaW5nIGNoYW5uZWwpCiAgICAlKGxldmVsbm8pcyAgICAgICAgIE51bWVyaWMgbG9nZ2luZyBsZXZlbCBmb3IgdGhlIG1lc3NhZ2UgKERFQlVHLCBJTkZPLAogICAgICAgICAgICAgICAgICAgICAgICBXQVJOSU5HLCBFUlJPUiwgQ1JJVElDQUwpCiAgICAlKGxldmVsbmFtZSlzICAgICAgIFRleHQgbG9nZ2luZyBsZXZlbCBmb3IgdGhlIG1lc3NhZ2UgKCJERUJVRyIsICJJTkZPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIldBUk5JTkciLCAiRVJST1IiLCAiQ1JJVElDQUwiKQogICAgJShwYXRobmFtZSlzICAgICAgICBGdWxsIHBhdGhuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgbG9nZ2luZwogICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHdhcyBpc3N1ZWQgKGlmIGF2YWlsYWJsZSkKICAgICUoZmlsZW5hbWUpcyAgICAgICAgRmlsZW5hbWUgcG9ydGlvbiBvZiBwYXRobmFtZQogICAgJShtb2R1bGUpcyAgICAgICAgICBNb2R1bGUgKG5hbWUgcG9ydGlvbiBvZiBmaWxlbmFtZSkKICAgICUobGluZW5vKWQgICAgICAgICAgU291cmNlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBsb2dnaW5nIGNhbGwgd2FzIGlzc3VlZAogICAgICAgICAgICAgICAgICAgICAgICAoaWYgYXZhaWxhYmxlKQogICAgJShmdW5jTmFtZSlzICAgICAgICBGdW5jdGlvbiBuYW1lCiAgICAlKGNyZWF0ZWQpZiAgICAgICAgIFRpbWUgd2hlbiB0aGUgTG9nUmVjb3JkIHdhcyBjcmVhdGVkICh0aW1lLnRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUpCiAgICAlKGFzY3RpbWUpcyAgICAgICAgIFRleHR1YWwgdGltZSB3aGVuIHRoZSBMb2dSZWNvcmQgd2FzIGNyZWF0ZWQKICAgICUobXNlY3MpZCAgICAgICAgICAgTWlsbGlzZWNvbmQgcG9ydGlvbiBvZiB0aGUgY3JlYXRpb24gdGltZQogICAgJShyZWxhdGl2ZUNyZWF0ZWQpZCBUaW1lIGluIG1pbGxpc2Vjb25kcyB3aGVuIHRoZSBMb2dSZWNvcmQgd2FzIGNyZWF0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlIHRvIHRoZSB0aW1lIHRoZSBsb2dnaW5nIG1vZHVsZSB3YXMgbG9hZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICh0eXBpY2FsbHkgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0aW1lKQogICAgJSh0aHJlYWQpZCAgICAgICAgICBUaHJlYWQgSUQgKGlmIGF2YWlsYWJsZSkKICAgICUodGhyZWFkTmFtZSlzICAgICAgVGhyZWFkIG5hbWUgKGlmIGF2YWlsYWJsZSkKICAgICUocHJvY2VzcylkICAgICAgICAgUHJvY2VzcyBJRCAoaWYgYXZhaWxhYmxlKQogICAgJShtZXNzYWdlKXMgICAgICAgICBUaGUgcmVzdWx0IG9mIHJlY29yZC5nZXRNZXNzYWdlKCksIGNvbXB1dGVkIGp1c3QgYXMKICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY29yZCBpcyBlbWl0dGVkCiAgICAiIiIKCiAgICBjb252ZXJ0ZXIgPSB0aW1lLmxvY2FsdGltZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbXQ9Tm9uZSwgZGF0ZWZtdD1Ob25lLCBzdHlsZT0nJScsIHZhbGlkYXRlPVRydWUsICosCiAgICAgICAgICAgICAgICAgZGVmYXVsdHM9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgZm9ybWF0dGVyIHdpdGggc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmdzLgoKICAgICAgICBJbml0aWFsaXplIHRoZSBmb3JtYXR0ZXIgZWl0aGVyIHdpdGggdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLCBvciBhCiAgICAgICAgZGVmYXVsdCBhcyBkZXNjcmliZWQgYWJvdmUuIEFsbG93IGZvciBzcGVjaWFsaXplZCBkYXRlIGZvcm1hdHRpbmcgd2l0aAogICAgICAgIHRoZSBvcHRpb25hbCBkYXRlZm10IGFyZ3VtZW50LiBJZiBkYXRlZm10IGlzIG9taXR0ZWQsIHlvdSBnZXQgYW4KICAgICAgICBJU084NjAxLWxpa2UgKG9yIFJGQyAzMzM5LWxpa2UpIGZvcm1hdC4KCiAgICAgICAgVXNlIGEgc3R5bGUgcGFyYW1ldGVyIG9mICclJywgJ3snIG9yICckJyB0byBzcGVjaWZ5IHRoYXQgeW91IHdhbnQgdG8KICAgICAgICB1c2Ugb25lIG9mICUtZm9ybWF0dGluZywgOm1ldGg6YHN0ci5mb3JtYXRgIChgYHt9YGApIGZvcm1hdHRpbmcgb3IKICAgICAgICA6Y2xhc3M6YHN0cmluZy5UZW1wbGF0ZWAgZm9ybWF0dGluZyBpbiB5b3VyIGZvcm1hdCBzdHJpbmcuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAgICAgQWRkZWQgdGhlIGBgc3R5bGVgYCBwYXJhbWV0ZXIuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc3R5bGUgbm90IGluIF9TVFlMRVM6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1N0eWxlIG11c3QgYmUgb25lIG9mOiAlcycgJSAnLCcuam9pbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfU1RZTEVTLmtleXMoKSkpCiAgICAgICAgc2VsZi5fc3R5bGUgPSBfU1RZTEVTW3N0eWxlXVswXShmbXQsIGRlZmF1bHRzPWRlZmF1bHRzKQogICAgICAgIGlmIHZhbGlkYXRlOgogICAgICAgICAgICBzZWxmLl9zdHlsZS52YWxpZGF0ZSgpCgogICAgICAgIHNlbGYuX2ZtdCA9IHNlbGYuX3N0eWxlLl9mbXQKICAgICAgICBzZWxmLmRhdGVmbXQgPSBkYXRlZm10CgogICAgZGVmYXVsdF90aW1lX2Zvcm1hdCA9ICclWS0lbS0lZCAlSDolTTolUycKICAgIGRlZmF1bHRfbXNlY19mb3JtYXQgPSAnJXMsJTAzZCcKCiAgICBkZWYgZm9ybWF0VGltZShzZWxmLCByZWNvcmQsIGRhdGVmbXQ9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgTG9nUmVjb3JkIGFzIGZvcm1hdHRlZCB0ZXh0LgoKICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGZyb20gZm9ybWF0KCkgYnkgYSBmb3JtYXR0ZXIgd2hpY2gKICAgICAgICB3YW50cyB0byBtYWtlIHVzZSBvZiBhIGZvcm1hdHRlZCB0aW1lLiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbgogICAgICAgIGluIGZvcm1hdHRlcnMgdG8gcHJvdmlkZSBmb3IgYW55IHNwZWNpZmljIHJlcXVpcmVtZW50LCBidXQgdGhlCiAgICAgICAgYmFzaWMgYmVoYXZpb3VyIGlzIGFzIGZvbGxvd3M6IGlmIGRhdGVmbXQgKGEgc3RyaW5nKSBpcyBzcGVjaWZpZWQsCiAgICAgICAgaXQgaXMgdXNlZCB3aXRoIHRpbWUuc3RyZnRpbWUoKSB0byBmb3JtYXQgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlCiAgICAgICAgcmVjb3JkLiBPdGhlcndpc2UsIGFuIElTTzg2MDEtbGlrZSAob3IgUkZDIDMzMzktbGlrZSkgZm9ybWF0IGlzIHVzZWQuCiAgICAgICAgVGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgcmV0dXJuZWQuIFRoaXMgZnVuY3Rpb24gdXNlcyBhIHVzZXItY29uZmlndXJhYmxlCiAgICAgICAgZnVuY3Rpb24gdG8gY29udmVydCB0aGUgY3JlYXRpb24gdGltZSB0byBhIHR1cGxlLiBCeSBkZWZhdWx0LAogICAgICAgIHRpbWUubG9jYWx0aW1lKCkgaXMgdXNlZDsgdG8gY2hhbmdlIHRoaXMgZm9yIGEgcGFydGljdWxhciBmb3JtYXR0ZXIKICAgICAgICBpbnN0YW5jZSwgc2V0IHRoZSAnY29udmVydGVyJyBhdHRyaWJ1dGUgdG8gYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lCiAgICAgICAgc2lnbmF0dXJlIGFzIHRpbWUubG9jYWx0aW1lKCkgb3IgdGltZS5nbXRpbWUoKS4gVG8gY2hhbmdlIGl0IGZvciBhbGwKICAgICAgICBmb3JtYXR0ZXJzLCBmb3IgZXhhbXBsZSBpZiB5b3Ugd2FudCBhbGwgbG9nZ2luZyB0aW1lcyB0byBiZSBzaG93biBpbiBHTVQsCiAgICAgICAgc2V0IHRoZSAnY29udmVydGVyJyBhdHRyaWJ1dGUgaW4gdGhlIEZvcm1hdHRlciBjbGFzcy4KICAgICAgICAiIiIKICAgICAgICBjdCA9IHNlbGYuY29udmVydGVyKHJlY29yZC5jcmVhdGVkKQogICAgICAgIGlmIGRhdGVmbXQ6CiAgICAgICAgICAgIHMgPSB0aW1lLnN0cmZ0aW1lKGRhdGVmbXQsIGN0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHMgPSB0aW1lLnN0cmZ0aW1lKHNlbGYuZGVmYXVsdF90aW1lX2Zvcm1hdCwgY3QpCiAgICAgICAgICAgIGlmIHNlbGYuZGVmYXVsdF9tc2VjX2Zvcm1hdDoKICAgICAgICAgICAgICAgIHMgPSBzZWxmLmRlZmF1bHRfbXNlY19mb3JtYXQgJSAocywgcmVjb3JkLm1zZWNzKQogICAgICAgIHJldHVybiBzCgogICAgZGVmIGZvcm1hdEV4Y2VwdGlvbihzZWxmLCBlaSk6CiAgICAgICAgIiIiCiAgICAgICAgRm9ybWF0IGFuZCByZXR1cm4gdGhlIHNwZWNpZmllZCBleGNlcHRpb24gaW5mb3JtYXRpb24gYXMgYSBzdHJpbmcuCgogICAgICAgIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBqdXN0IHVzZXMKICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKCkKICAgICAgICAiIiIKICAgICAgICBzaW8gPSBpby5TdHJpbmdJTygpCiAgICAgICAgdGIgPSBlaVsyXQogICAgICAgICMgU2VlIGlzc3VlcyAjOTQyNywgIzE1NTMzNzUuIENvbW1lbnRlZCBvdXQgZm9yIG5vdy4KICAgICAgICAjaWYgZ2V0YXR0cihzZWxmLCAnZnVsbHN0YWNrJywgRmFsc2UpOgogICAgICAgICMgICAgdHJhY2ViYWNrLnByaW50X3N0YWNrKHRiLnRiX2ZyYW1lLmZfYmFjaywgZmlsZT1zaW8pCiAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbihlaVswXSwgZWlbMV0sIHRiLCBOb25lLCBzaW8pCiAgICAgICAgcyA9IHNpby5nZXR2YWx1ZSgpCiAgICAgICAgc2lvLmNsb3NlKCkKICAgICAgICBpZiBzWy0xOl0gPT0gIlxuIjoKICAgICAgICAgICAgcyA9IHNbOi0xXQogICAgICAgIHJldHVybiBzCgogICAgZGVmIHVzZXNUaW1lKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIENoZWNrIGlmIHRoZSBmb3JtYXQgdXNlcyB0aGUgY3JlYXRpb24gdGltZSBvZiB0aGUgcmVjb3JkLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9zdHlsZS51c2VzVGltZSgpCgogICAgZGVmIGZvcm1hdE1lc3NhZ2Uoc2VsZiwgcmVjb3JkKToKICAgICAgICByZXR1cm4gc2VsZi5fc3R5bGUuZm9ybWF0KHJlY29yZCkKCiAgICBkZWYgZm9ybWF0U3RhY2soc2VsZiwgc3RhY2tfaW5mbyk6CiAgICAgICAgIiIiCiAgICAgICAgVGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYW4gZXh0ZW5zaW9uIHBvaW50IGZvciBzcGVjaWFsaXplZAogICAgICAgIGZvcm1hdHRpbmcgb2Ygc3RhY2sgaW5mb3JtYXRpb24uCgogICAgICAgIFRoZSBpbnB1dCBkYXRhIGlzIGEgc3RyaW5nIGFzIHJldHVybmVkIGZyb20gYSBjYWxsIHRvCiAgICAgICAgOmZ1bmM6YHRyYWNlYmFjay5wcmludF9zdGFja2AsIGJ1dCB3aXRoIHRoZSBsYXN0IHRyYWlsaW5nIG5ld2xpbmUKICAgICAgICByZW1vdmVkLgoKICAgICAgICBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBqdXN0IHJldHVybnMgdGhlIHZhbHVlIHBhc3NlZCBpbi4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc3RhY2tfaW5mbwoKICAgIGRlZiBmb3JtYXQoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBGb3JtYXQgdGhlIHNwZWNpZmllZCByZWNvcmQgYXMgdGV4dC4KCiAgICAgICAgVGhlIHJlY29yZCdzIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IGlzIHVzZWQgYXMgdGhlIG9wZXJhbmQgdG8gYQogICAgICAgIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbiB3aGljaCB5aWVsZHMgdGhlIHJldHVybmVkIHN0cmluZy4KICAgICAgICBCZWZvcmUgZm9ybWF0dGluZyB0aGUgZGljdGlvbmFyeSwgYSBjb3VwbGUgb2YgcHJlcGFyYXRvcnkgc3RlcHMKICAgICAgICBhcmUgY2FycmllZCBvdXQuIFRoZSBtZXNzYWdlIGF0dHJpYnV0ZSBvZiB0aGUgcmVjb3JkIGlzIGNvbXB1dGVkCiAgICAgICAgdXNpbmcgTG9nUmVjb3JkLmdldE1lc3NhZ2UoKS4gSWYgdGhlIGZvcm1hdHRpbmcgc3RyaW5nIHVzZXMgdGhlCiAgICAgICAgdGltZSAoYXMgZGV0ZXJtaW5lZCBieSBhIGNhbGwgdG8gdXNlc1RpbWUoKSwgZm9ybWF0VGltZSgpIGlzCiAgICAgICAgY2FsbGVkIHRvIGZvcm1hdCB0aGUgZXZlbnQgdGltZS4gSWYgdGhlcmUgaXMgZXhjZXB0aW9uIGluZm9ybWF0aW9uLAogICAgICAgIGl0IGlzIGZvcm1hdHRlZCB1c2luZyBmb3JtYXRFeGNlcHRpb24oKSBhbmQgYXBwZW5kZWQgdG8gdGhlIG1lc3NhZ2UuCiAgICAgICAgIiIiCiAgICAgICAgcmVjb3JkLm1lc3NhZ2UgPSByZWNvcmQuZ2V0TWVzc2FnZSgpCiAgICAgICAgaWYgc2VsZi51c2VzVGltZSgpOgogICAgICAgICAgICByZWNvcmQuYXNjdGltZSA9IHNlbGYuZm9ybWF0VGltZShyZWNvcmQsIHNlbGYuZGF0ZWZtdCkKICAgICAgICBzID0gc2VsZi5mb3JtYXRNZXNzYWdlKHJlY29yZCkKICAgICAgICBpZiByZWNvcmQuZXhjX2luZm86CiAgICAgICAgICAgICMgQ2FjaGUgdGhlIHRyYWNlYmFjayB0ZXh0IHRvIGF2b2lkIGNvbnZlcnRpbmcgaXQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgIyAoaXQncyBjb25zdGFudCBhbnl3YXkpCiAgICAgICAgICAgIGlmIG5vdCByZWNvcmQuZXhjX3RleHQ6CiAgICAgICAgICAgICAgICByZWNvcmQuZXhjX3RleHQgPSBzZWxmLmZvcm1hdEV4Y2VwdGlvbihyZWNvcmQuZXhjX2luZm8pCiAgICAgICAgaWYgcmVjb3JkLmV4Y190ZXh0OgogICAgICAgICAgICBpZiBzWy0xOl0gIT0gIlxuIjoKICAgICAgICAgICAgICAgIHMgPSBzICsgIlxuIgogICAgICAgICAgICBzID0gcyArIHJlY29yZC5leGNfdGV4dAogICAgICAgIGlmIHJlY29yZC5zdGFja19pbmZvOgogICAgICAgICAgICBpZiBzWy0xOl0gIT0gIlxuIjoKICAgICAgICAgICAgICAgIHMgPSBzICsgIlxuIgogICAgICAgICAgICBzID0gcyArIHNlbGYuZm9ybWF0U3RhY2socmVjb3JkLnN0YWNrX2luZm8pCiAgICAgICAgcmV0dXJuIHMKCiMKIyAgIFRoZSBkZWZhdWx0IGZvcm1hdHRlciB0byB1c2Ugd2hlbiBubyBvdGhlciBpcyBzcGVjaWZpZWQKIwpfZGVmYXVsdEZvcm1hdHRlciA9IEZvcm1hdHRlcigpCgpjbGFzcyBCdWZmZXJpbmdGb3JtYXR0ZXIob2JqZWN0KToKICAgICIiIgogICAgQSBmb3JtYXR0ZXIgc3VpdGFibGUgZm9yIGZvcm1hdHRpbmcgYSBudW1iZXIgb2YgcmVjb3Jkcy4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVmbXQ9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgT3B0aW9uYWxseSBzcGVjaWZ5IGEgZm9ybWF0dGVyIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBmb3JtYXQgZWFjaAogICAgICAgIGluZGl2aWR1YWwgcmVjb3JkLgogICAgICAgICIiIgogICAgICAgIGlmIGxpbmVmbXQ6CiAgICAgICAgICAgIHNlbGYubGluZWZtdCA9IGxpbmVmbXQKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLmxpbmVmbXQgPSBfZGVmYXVsdEZvcm1hdHRlcgoKICAgIGRlZiBmb3JtYXRIZWFkZXIoc2VsZiwgcmVjb3Jkcyk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSBoZWFkZXIgc3RyaW5nIGZvciB0aGUgc3BlY2lmaWVkIHJlY29yZHMuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuICIiCgogICAgZGVmIGZvcm1hdEZvb3RlcihzZWxmLCByZWNvcmRzKToKICAgICAgICAiIiIKICAgICAgICBSZXR1cm4gdGhlIGZvb3RlciBzdHJpbmcgZm9yIHRoZSBzcGVjaWZpZWQgcmVjb3Jkcy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gIiIKCiAgICBkZWYgZm9ybWF0KHNlbGYsIHJlY29yZHMpOgogICAgICAgICIiIgogICAgICAgIEZvcm1hdCB0aGUgc3BlY2lmaWVkIHJlY29yZHMgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgc3RyaW5nLgogICAgICAgICIiIgogICAgICAgIHJ2ID0gIiIKICAgICAgICBpZiBsZW4ocmVjb3JkcykgPiAwOgogICAgICAgICAgICBydiA9IHJ2ICsgc2VsZi5mb3JtYXRIZWFkZXIocmVjb3JkcykKICAgICAgICAgICAgZm9yIHJlY29yZCBpbiByZWNvcmRzOgogICAgICAgICAgICAgICAgcnYgPSBydiArIHNlbGYubGluZWZtdC5mb3JtYXQocmVjb3JkKQogICAgICAgICAgICBydiA9IHJ2ICsgc2VsZi5mb3JtYXRGb290ZXIocmVjb3JkcykKICAgICAgICByZXR1cm4gcnYKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgIEZpbHRlciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKY2xhc3MgRmlsdGVyKG9iamVjdCk6CiAgICAiIiIKICAgIEZpbHRlciBpbnN0YW5jZXMgYXJlIHVzZWQgdG8gcGVyZm9ybSBhcmJpdHJhcnkgZmlsdGVyaW5nIG9mIExvZ1JlY29yZHMuCgogICAgTG9nZ2VycyBhbmQgSGFuZGxlcnMgY2FuIG9wdGlvbmFsbHkgdXNlIEZpbHRlciBpbnN0YW5jZXMgdG8gZmlsdGVyCiAgICByZWNvcmRzIGFzIGRlc2lyZWQuIFRoZSBiYXNlIGZpbHRlciBjbGFzcyBvbmx5IGFsbG93cyBldmVudHMgd2hpY2ggYXJlCiAgICBiZWxvdyBhIGNlcnRhaW4gcG9pbnQgaW4gdGhlIGxvZ2dlciBoaWVyYXJjaHkuIEZvciBleGFtcGxlLCBhIGZpbHRlcgogICAgaW5pdGlhbGl6ZWQgd2l0aCAiQS5CIiB3aWxsIGFsbG93IGV2ZW50cyBsb2dnZWQgYnkgbG9nZ2VycyAiQS5CIiwKICAgICJBLkIuQyIsICJBLkIuQy5EIiwgIkEuQi5EIiBldGMuIGJ1dCBub3QgIkEuQkIiLCAiQi5BLkIiIGV0Yy4gSWYKICAgIGluaXRpYWxpemVkIHdpdGggdGhlIGVtcHR5IHN0cmluZywgYWxsIGV2ZW50cyBhcmUgcGFzc2VkLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZT0nJyk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSBhIGZpbHRlci4KCiAgICAgICAgSW5pdGlhbGl6ZSB3aXRoIHRoZSBuYW1lIG9mIHRoZSBsb2dnZXIgd2hpY2gsIHRvZ2V0aGVyIHdpdGggaXRzCiAgICAgICAgY2hpbGRyZW4sIHdpbGwgaGF2ZSBpdHMgZXZlbnRzIGFsbG93ZWQgdGhyb3VnaCB0aGUgZmlsdGVyLiBJZiBubwogICAgICAgIG5hbWUgaXMgc3BlY2lmaWVkLCBhbGxvdyBldmVyeSBldmVudC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5ubGVuID0gbGVuKG5hbWUpCgogICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIERldGVybWluZSBpZiB0aGUgc3BlY2lmaWVkIHJlY29yZCBpcyB0byBiZSBsb2dnZWQuCgogICAgICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgcmVjb3JkIHNob3VsZCBiZSBsb2dnZWQsIG9yIEZhbHNlIG90aGVyd2lzZS4KICAgICAgICBJZiBkZWVtZWQgYXBwcm9wcmlhdGUsIHRoZSByZWNvcmQgbWF5IGJlIG1vZGlmaWVkIGluLXBsYWNlLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYubmxlbiA9PSAwOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIGVsaWYgc2VsZi5uYW1lID09IHJlY29yZC5uYW1lOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIGVsaWYgcmVjb3JkLm5hbWUuZmluZChzZWxmLm5hbWUsIDAsIHNlbGYubmxlbikgIT0gMDoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIChyZWNvcmQubmFtZVtzZWxmLm5sZW5dID09ICIuIikKCmNsYXNzIEZpbHRlcmVyKG9iamVjdCk6CiAgICAiIiIKICAgIEEgYmFzZSBjbGFzcyBmb3IgbG9nZ2VycyBhbmQgaGFuZGxlcnMgd2hpY2ggYWxsb3dzIHRoZW0gdG8gc2hhcmUKICAgIGNvbW1vbiBjb2RlLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBmaWx0ZXJzIHRvIGJlIGFuIGVtcHR5IGxpc3QuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5maWx0ZXJzID0gW10KCiAgICBkZWYgYWRkRmlsdGVyKHNlbGYsIGZpbHRlcik6CiAgICAgICAgIiIiCiAgICAgICAgQWRkIHRoZSBzcGVjaWZpZWQgZmlsdGVyIHRvIHRoaXMgaGFuZGxlci4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgKGZpbHRlciBpbiBzZWxmLmZpbHRlcnMpOgogICAgICAgICAgICBzZWxmLmZpbHRlcnMuYXBwZW5kKGZpbHRlcikKCiAgICBkZWYgcmVtb3ZlRmlsdGVyKHNlbGYsIGZpbHRlcik6CiAgICAgICAgIiIiCiAgICAgICAgUmVtb3ZlIHRoZSBzcGVjaWZpZWQgZmlsdGVyIGZyb20gdGhpcyBoYW5kbGVyLgogICAgICAgICIiIgogICAgICAgIGlmIGZpbHRlciBpbiBzZWxmLmZpbHRlcnM6CiAgICAgICAgICAgIHNlbGYuZmlsdGVycy5yZW1vdmUoZmlsdGVyKQoKICAgIGRlZiBmaWx0ZXIoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBEZXRlcm1pbmUgaWYgYSByZWNvcmQgaXMgbG9nZ2FibGUgYnkgY29uc3VsdGluZyBhbGwgdGhlIGZpbHRlcnMuCgogICAgICAgIFRoZSBkZWZhdWx0IGlzIHRvIGFsbG93IHRoZSByZWNvcmQgdG8gYmUgbG9nZ2VkOyBhbnkgZmlsdGVyIGNhbiB2ZXRvCiAgICAgICAgdGhpcyBhbmQgdGhlIHJlY29yZCBpcyB0aGVuIGRyb3BwZWQuIFJldHVybnMgYSB6ZXJvIHZhbHVlIGlmIGEgcmVjb3JkCiAgICAgICAgaXMgdG8gYmUgZHJvcHBlZCwgZWxzZSBub24temVyby4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKCiAgICAgICAgICAgQWxsb3cgZmlsdGVycyB0byBiZSBqdXN0IGNhbGxhYmxlcy4KICAgICAgICAiIiIKICAgICAgICBydiA9IFRydWUKICAgICAgICBmb3IgZiBpbiBzZWxmLmZpbHRlcnM6CiAgICAgICAgICAgIGlmIGhhc2F0dHIoZiwgJ2ZpbHRlcicpOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5maWx0ZXIocmVjb3JkKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gZihyZWNvcmQpICMgYXNzdW1lIGNhbGxhYmxlIC0gd2lsbCByYWlzZSBpZiBub3QKICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKICAgICAgICAgICAgICAgIHJ2ID0gRmFsc2UKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgcmV0dXJuIHJ2CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgICBIYW5kbGVyIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpfaGFuZGxlcnMgPSB3ZWFrcmVmLldlYWtWYWx1ZURpY3Rpb25hcnkoKSAgI21hcCBvZiBoYW5kbGVyIG5hbWVzIHRvIGhhbmRsZXJzCl9oYW5kbGVyTGlzdCA9IFtdICMgYWRkZWQgdG8gYWxsb3cgaGFuZGxlcnMgdG8gYmUgcmVtb3ZlZCBpbiByZXZlcnNlIG9mIG9yZGVyIGluaXRpYWxpemVkCgpkZWYgX3JlbW92ZUhhbmRsZXJSZWYod3IpOgogICAgIiIiCiAgICBSZW1vdmUgYSBoYW5kbGVyIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnRlcm5hbCBjbGVhbnVwIGxpc3QuCiAgICAiIiIKICAgICMgVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGR1cmluZyBtb2R1bGUgdGVhcmRvd24sIHdoZW4gZ2xvYmFscyBhcmUKICAgICMgc2V0IHRvIE5vbmUuIEl0IGNhbiBhbHNvIGJlIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLiBTbyB3ZSBuZWVkIHRvCiAgICAjIHByZS1lbXB0aXZlbHkgZ3JhYiB0aGUgbmVjZXNzYXJ5IGdsb2JhbHMgYW5kIGNoZWNrIGlmIHRoZXkncmUgTm9uZSwKICAgICMgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgYW5kIGZhaWx1cmVzIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93bi4KICAgIGFjcXVpcmUsIHJlbGVhc2UsIGhhbmRsZXJzID0gX2FjcXVpcmVMb2NrLCBfcmVsZWFzZUxvY2ssIF9oYW5kbGVyTGlzdAogICAgaWYgYWNxdWlyZSBhbmQgcmVsZWFzZSBhbmQgaGFuZGxlcnM6CiAgICAgICAgYWNxdWlyZSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBoYW5kbGVycy5yZW1vdmUod3IpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICByZWxlYXNlKCkKCmRlZiBfYWRkSGFuZGxlclJlZihoYW5kbGVyKToKICAgICIiIgogICAgQWRkIGEgaGFuZGxlciB0byB0aGUgaW50ZXJuYWwgY2xlYW51cCBsaXN0IHVzaW5nIGEgd2VhayByZWZlcmVuY2UuCiAgICAiIiIKICAgIF9hY3F1aXJlTG9jaygpCiAgICB0cnk6CiAgICAgICAgX2hhbmRsZXJMaXN0LmFwcGVuZCh3ZWFrcmVmLnJlZihoYW5kbGVyLCBfcmVtb3ZlSGFuZGxlclJlZikpCiAgICBmaW5hbGx5OgogICAgICAgIF9yZWxlYXNlTG9jaygpCgpjbGFzcyBIYW5kbGVyKEZpbHRlcmVyKToKICAgICIiIgogICAgSGFuZGxlciBpbnN0YW5jZXMgZGlzcGF0Y2ggbG9nZ2luZyBldmVudHMgdG8gc3BlY2lmaWMgZGVzdGluYXRpb25zLgoKICAgIFRoZSBiYXNlIGhhbmRsZXIgY2xhc3MuIEFjdHMgYXMgYSBwbGFjZWhvbGRlciB3aGljaCBkZWZpbmVzIHRoZSBIYW5kbGVyCiAgICBpbnRlcmZhY2UuIEhhbmRsZXJzIGNhbiBvcHRpb25hbGx5IHVzZSBGb3JtYXR0ZXIgaW5zdGFuY2VzIHRvIGZvcm1hdAogICAgcmVjb3JkcyBhcyBkZXNpcmVkLiBCeSBkZWZhdWx0LCBubyBmb3JtYXR0ZXIgaXMgc3BlY2lmaWVkOyBpbiB0aGlzIGNhc2UsCiAgICB0aGUgJ3JhdycgbWVzc2FnZSBhcyBkZXRlcm1pbmVkIGJ5IHJlY29yZC5tZXNzYWdlIGlzIGxvZ2dlZC4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxldmVsPU5PVFNFVCk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIC0gYmFzaWNhbGx5IHNldHRpbmcgdGhlIGZvcm1hdHRlciB0byBOb25lCiAgICAgICAgYW5kIHRoZSBmaWx0ZXIgbGlzdCB0byBlbXB0eS4KICAgICAgICAiIiIKICAgICAgICBGaWx0ZXJlci5fX2luaXRfXyhzZWxmKQogICAgICAgIHNlbGYuX25hbWUgPSBOb25lCiAgICAgICAgc2VsZi5sZXZlbCA9IF9jaGVja0xldmVsKGxldmVsKQogICAgICAgIHNlbGYuZm9ybWF0dGVyID0gTm9uZQogICAgICAgIHNlbGYuX2Nsb3NlZCA9IEZhbHNlCiAgICAgICAgIyBBZGQgdGhlIGhhbmRsZXIgdG8gdGhlIGdsb2JhbCBfaGFuZGxlckxpc3QgKGZvciBjbGVhbnVwIG9uIHNodXRkb3duKQogICAgICAgIF9hZGRIYW5kbGVyUmVmKHNlbGYpCiAgICAgICAgc2VsZi5jcmVhdGVMb2NrKCkKCiAgICBkZWYgZ2V0X25hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKCiAgICBkZWYgc2V0X25hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgX2FjcXVpcmVMb2NrKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYuX25hbWUgaW4gX2hhbmRsZXJzOgogICAgICAgICAgICAgICAgZGVsIF9oYW5kbGVyc1tzZWxmLl9uYW1lXQogICAgICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgICAgICBpZiBuYW1lOgogICAgICAgICAgICAgICAgX2hhbmRsZXJzW25hbWVdID0gc2VsZgogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIF9yZWxlYXNlTG9jaygpCgogICAgbmFtZSA9IHByb3BlcnR5KGdldF9uYW1lLCBzZXRfbmFtZSkKCiAgICBkZWYgY3JlYXRlTG9jayhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBBY3F1aXJlIGEgdGhyZWFkIGxvY2sgZm9yIHNlcmlhbGl6aW5nIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBJL08uCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKICAgICAgICBfcmVnaXN0ZXJfYXRfZm9ya19yZWluaXRfbG9jayhzZWxmKQoKICAgIGRlZiBfYXRfZm9ya19yZWluaXQoc2VsZik6CiAgICAgICAgc2VsZi5sb2NrLl9hdF9mb3JrX3JlaW5pdCgpCgogICAgZGVmIGFjcXVpcmUoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgQWNxdWlyZSB0aGUgSS9PIHRocmVhZCBsb2NrLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYubG9jazoKICAgICAgICAgICAgc2VsZi5sb2NrLmFjcXVpcmUoKQoKICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFJlbGVhc2UgdGhlIEkvTyB0aHJlYWQgbG9jay4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmxvY2s6CiAgICAgICAgICAgIHNlbGYubG9jay5yZWxlYXNlKCkKCiAgICBkZWYgc2V0TGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgICIiIgogICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGhhbmRsZXIuICBsZXZlbCBtdXN0IGJlIGFuIGludCBvciBhIHN0ci4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmxldmVsID0gX2NoZWNrTGV2ZWwobGV2ZWwpCgogICAgZGVmIGZvcm1hdChzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIEZvcm1hdCB0aGUgc3BlY2lmaWVkIHJlY29yZC4KCiAgICAgICAgSWYgYSBmb3JtYXR0ZXIgaXMgc2V0LCB1c2UgaXQuIE90aGVyd2lzZSwgdXNlIHRoZSBkZWZhdWx0IGZvcm1hdHRlcgogICAgICAgIGZvciB0aGUgbW9kdWxlLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuZm9ybWF0dGVyOgogICAgICAgICAgICBmbXQgPSBzZWxmLmZvcm1hdHRlcgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZtdCA9IF9kZWZhdWx0Rm9ybWF0dGVyCiAgICAgICAgcmV0dXJuIGZtdC5mb3JtYXQocmVjb3JkKQoKICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiCiAgICAgICAgRG8gd2hhdGV2ZXIgaXQgdGFrZXMgdG8gYWN0dWFsbHkgbG9nIHRoZSBzcGVjaWZpZWQgbG9nZ2luZyByZWNvcmQuCgogICAgICAgIFRoaXMgdmVyc2lvbiBpcyBpbnRlbmRlZCB0byBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGFuZCBzbwogICAgICAgIHJhaXNlcyBhIE5vdEltcGxlbWVudGVkRXJyb3IuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignZW1pdCBtdXN0IGJlIGltcGxlbWVudGVkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdieSBIYW5kbGVyIHN1YmNsYXNzZXMnKQoKICAgIGRlZiBoYW5kbGUoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBDb25kaXRpb25hbGx5IGVtaXQgdGhlIHNwZWNpZmllZCBsb2dnaW5nIHJlY29yZC4KCiAgICAgICAgRW1pc3Npb24gZGVwZW5kcyBvbiBmaWx0ZXJzIHdoaWNoIG1heSBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGhhbmRsZXIuCiAgICAgICAgV3JhcCB0aGUgYWN0dWFsIGVtaXNzaW9uIG9mIHRoZSByZWNvcmQgd2l0aCBhY3F1aXNpdGlvbi9yZWxlYXNlIG9mCiAgICAgICAgdGhlIEkvTyB0aHJlYWQgbG9jay4gUmV0dXJucyB3aGV0aGVyIHRoZSBmaWx0ZXIgcGFzc2VkIHRoZSByZWNvcmQgZm9yCiAgICAgICAgZW1pc3Npb24uCiAgICAgICAgIiIiCiAgICAgICAgcnYgPSBzZWxmLmZpbHRlcihyZWNvcmQpCiAgICAgICAgaWYgcnY6CiAgICAgICAgICAgIHNlbGYuYWNxdWlyZSgpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuZW1pdChyZWNvcmQpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQogICAgICAgIHJldHVybiBydgoKICAgIGRlZiBzZXRGb3JtYXR0ZXIoc2VsZiwgZm10KToKICAgICAgICAiIiIKICAgICAgICBTZXQgdGhlIGZvcm1hdHRlciBmb3IgdGhpcyBoYW5kbGVyLgogICAgICAgICIiIgogICAgICAgIHNlbGYuZm9ybWF0dGVyID0gZm10CgogICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIEVuc3VyZSBhbGwgbG9nZ2luZyBvdXRwdXQgaGFzIGJlZW4gZmx1c2hlZC4KCiAgICAgICAgVGhpcyB2ZXJzaW9uIGRvZXMgbm90aGluZyBhbmQgaXMgaW50ZW5kZWQgdG8gYmUgaW1wbGVtZW50ZWQgYnkKICAgICAgICBzdWJjbGFzc2VzLgogICAgICAgICIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgVGlkeSB1cCBhbnkgcmVzb3VyY2VzIHVzZWQgYnkgdGhlIGhhbmRsZXIuCgogICAgICAgIFRoaXMgdmVyc2lvbiByZW1vdmVzIHRoZSBoYW5kbGVyIGZyb20gYW4gaW50ZXJuYWwgbWFwIG9mIGhhbmRsZXJzLAogICAgICAgIF9oYW5kbGVycywgd2hpY2ggaXMgdXNlZCBmb3IgaGFuZGxlciBsb29rdXAgYnkgbmFtZS4gU3ViY2xhc3NlcwogICAgICAgIHNob3VsZCBlbnN1cmUgdGhhdCB0aGlzIGdldHMgY2FsbGVkIGZyb20gb3ZlcnJpZGRlbiBjbG9zZSgpCiAgICAgICAgbWV0aG9kcy4KICAgICAgICAiIiIKICAgICAgICAjZ2V0IHRoZSBtb2R1bGUgZGF0YSBsb2NrLCBhcyB3ZSdyZSB1cGRhdGluZyBhIHNoYXJlZCBzdHJ1Y3R1cmUuCiAgICAgICAgX2FjcXVpcmVMb2NrKCkKICAgICAgICB0cnk6ICAgICN1bmxpa2VseSB0byByYWlzZSBhbiBleGNlcHRpb24sIGJ1dCB5b3UgbmV2ZXIga25vdy4uLgogICAgICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCiAgICAgICAgICAgIGlmIHNlbGYuX25hbWUgYW5kIHNlbGYuX25hbWUgaW4gX2hhbmRsZXJzOgogICAgICAgICAgICAgICAgZGVsIF9oYW5kbGVyc1tzZWxmLl9uYW1lXQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIF9yZWxlYXNlTG9jaygpCgogICAgZGVmIGhhbmRsZUVycm9yKHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiCiAgICAgICAgSGFuZGxlIGVycm9ycyB3aGljaCBvY2N1ciBkdXJpbmcgYW4gZW1pdCgpIGNhbGwuCgogICAgICAgIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgZnJvbSBoYW5kbGVycyB3aGVuIGFuIGV4Y2VwdGlvbiBpcwogICAgICAgIGVuY291bnRlcmVkIGR1cmluZyBhbiBlbWl0KCkgY2FsbC4gSWYgcmFpc2VFeGNlcHRpb25zIGlzIGZhbHNlLAogICAgICAgIGV4Y2VwdGlvbnMgZ2V0IHNpbGVudGx5IGlnbm9yZWQuIFRoaXMgaXMgd2hhdCBpcyBtb3N0bHkgd2FudGVkCiAgICAgICAgZm9yIGEgbG9nZ2luZyBzeXN0ZW0gLSBtb3N0IHVzZXJzIHdpbGwgbm90IGNhcmUgYWJvdXQgZXJyb3JzIGluCiAgICAgICAgdGhlIGxvZ2dpbmcgc3lzdGVtLCB0aGV5IGFyZSBtb3JlIGludGVyZXN0ZWQgaW4gYXBwbGljYXRpb24gZXJyb3JzLgogICAgICAgIFlvdSBjb3VsZCwgaG93ZXZlciwgcmVwbGFjZSB0aGlzIHdpdGggYSBjdXN0b20gaGFuZGxlciBpZiB5b3Ugd2lzaC4KICAgICAgICBUaGUgcmVjb3JkIHdoaWNoIHdhcyBiZWluZyBwcm9jZXNzZWQgaXMgcGFzc2VkIGluIHRvIHRoaXMgbWV0aG9kLgogICAgICAgICIiIgogICAgICAgIGlmIHJhaXNlRXhjZXB0aW9ucyBhbmQgc3lzLnN0ZGVycjogICMgc2VlIGlzc3VlIDEzODA3CiAgICAgICAgICAgIHQsIHYsIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnLS0tIExvZ2dpbmcgZXJyb3IgLS0tXG4nKQogICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbih0LCB2LCB0YiwgTm9uZSwgc3lzLnN0ZGVycikKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0NhbGwgc3RhY2s6XG4nKQogICAgICAgICAgICAgICAgIyBXYWxrIHRoZSBzdGFjayBmcmFtZSB1cCB1bnRpbCB3ZSdyZSBvdXQgb2YgbG9nZ2luZywKICAgICAgICAgICAgICAgICMgc28gYXMgdG8gcHJpbnQgdGhlIGNhbGxpbmcgY29udGV4dC4KICAgICAgICAgICAgICAgIGZyYW1lID0gdGIudGJfZnJhbWUKICAgICAgICAgICAgICAgIHdoaWxlIChmcmFtZSBhbmQgb3MucGF0aC5kaXJuYW1lKGZyYW1lLmZfY29kZS5jb19maWxlbmFtZSkgPT0KICAgICAgICAgICAgICAgICAgICAgICBfX3BhdGhfX1swXSk6CiAgICAgICAgICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5mX2JhY2sKICAgICAgICAgICAgICAgIGlmIGZyYW1lOgogICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9zdGFjayhmcmFtZSwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIGNvdWxkbid0IGZpbmQgdGhlIHJpZ2h0IHN0YWNrIGZyYW1lLCBmb3Igc29tZSByZWFzb24KICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdMb2dnZWQgZnJvbSBmaWxlICVzLCBsaW5lICVzXG4nICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpbGVuYW1lLCByZWNvcmQubGluZW5vKSkKICAgICAgICAgICAgICAgICMgSXNzdWUgMTg2NzE6IG91dHB1dCBsb2dnaW5nIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ01lc3NhZ2U6ICVyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXJndW1lbnRzOiAlc1xuJyAlIChyZWNvcmQubXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmFyZ3MpKQogICAgICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yOiAgIyBTZWUgaXNzdWUgMzYyNzIKICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdVbmFibGUgdG8gcHJpbnQgdGhlIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLSBwb3NzaWJsZSBmb3JtYXR0aW5nIGVycm9yLlxuVXNlIHRoZScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdHJhY2ViYWNrIGFib3ZlIHRvIGhlbHAgZmluZCB0aGUgZXJyb3IuXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICBwYXNzICAgICMgc2VlIGlzc3VlIDU5NzEKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIGRlbCB0LCB2LCB0YgoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQogICAgICAgIHJldHVybiAnPCVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbGV2ZWwpCgpjbGFzcyBTdHJlYW1IYW5kbGVyKEhhbmRsZXIpOgogICAgIiIiCiAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGxvZ2dpbmcgcmVjb3JkcywgYXBwcm9wcmlhdGVseSBmb3JtYXR0ZWQsCiAgICB0byBhIHN0cmVhbS4gTm90ZSB0aGF0IHRoaXMgY2xhc3MgZG9lcyBub3QgY2xvc2UgdGhlIHN0cmVhbSwgYXMKICAgIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVyciBtYXkgYmUgdXNlZC4KICAgICIiIgoKICAgIHRlcm1pbmF0b3IgPSAnXG4nCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmVhbT1Ob25lKToKICAgICAgICAiIiIKICAgICAgICBJbml0aWFsaXplIHRoZSBoYW5kbGVyLgoKICAgICAgICBJZiBzdHJlYW0gaXMgbm90IHNwZWNpZmllZCwgc3lzLnN0ZGVyciBpcyB1c2VkLgogICAgICAgICIiIgogICAgICAgIEhhbmRsZXIuX19pbml0X18oc2VsZikKICAgICAgICBpZiBzdHJlYW0gaXMgTm9uZToKICAgICAgICAgICAgc3RyZWFtID0gc3lzLnN0ZGVycgogICAgICAgIHNlbGYuc3RyZWFtID0gc3RyZWFtCgogICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIEZsdXNoZXMgdGhlIHN0cmVhbS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5zdHJlYW0gYW5kIGhhc2F0dHIoc2VsZi5zdHJlYW0sICJmbHVzaCIpOgogICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCgogICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBFbWl0IGEgcmVjb3JkLgoKICAgICAgICBJZiBhIGZvcm1hdHRlciBpcyBzcGVjaWZpZWQsIGl0IGlzIHVzZWQgdG8gZm9ybWF0IHRoZSByZWNvcmQuCiAgICAgICAgVGhlIHJlY29yZCBpcyB0aGVuIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbSB3aXRoIGEgdHJhaWxpbmcgbmV3bGluZS4gIElmCiAgICAgICAgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIHByZXNlbnQsIGl0IGlzIGZvcm1hdHRlZCB1c2luZwogICAgICAgIHRyYWNlYmFjay5wcmludF9leGNlcHRpb24gYW5kIGFwcGVuZGVkIHRvIHRoZSBzdHJlYW0uICBJZiB0aGUgc3RyZWFtCiAgICAgICAgaGFzIGFuICdlbmNvZGluZycgYXR0cmlidXRlLCBpdCBpcyB1c2VkIHRvIGRldGVybWluZSBob3cgdG8gZG8gdGhlCiAgICAgICAgb3V0cHV0IHRvIHRoZSBzdHJlYW0uCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCiAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuc3RyZWFtCiAgICAgICAgICAgICMgaXNzdWUgMzUwNDY6IG1lcmdlZCB0d28gc3RyZWFtLndyaXRlcyBpbnRvIG9uZS4KICAgICAgICAgICAgc3RyZWFtLndyaXRlKG1zZyArIHNlbGYudGVybWluYXRvcikKICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yOiAgIyBTZWUgaXNzdWUgMzYyNzIKICAgICAgICAgICAgcmFpc2UKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKCiAgICBkZWYgc2V0U3RyZWFtKHNlbGYsIHN0cmVhbSk6CiAgICAgICAgIiIiCiAgICAgICAgU2V0cyB0aGUgU3RyZWFtSGFuZGxlcidzIHN0cmVhbSB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLAogICAgICAgIGlmIGl0IGlzIGRpZmZlcmVudC4KCiAgICAgICAgUmV0dXJucyB0aGUgb2xkIHN0cmVhbSwgaWYgdGhlIHN0cmVhbSB3YXMgY2hhbmdlZCwgb3IgTm9uZQogICAgICAgIGlmIGl0IHdhc24ndC4KICAgICAgICAiIiIKICAgICAgICBpZiBzdHJlYW0gaXMgc2VsZi5zdHJlYW06CiAgICAgICAgICAgIHJlc3VsdCA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQgPSBzZWxmLnN0cmVhbQogICAgICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc3RyZWFtCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5sZXZlbCkKICAgICAgICBuYW1lID0gZ2V0YXR0cihzZWxmLnN0cmVhbSwgJ25hbWUnLCAnJykKICAgICAgICAjICBicG8tMzYwMTU6IG5hbWUgY2FuIGJlIGFuIGludAogICAgICAgIG5hbWUgPSBzdHIobmFtZSkKICAgICAgICBpZiBuYW1lOgogICAgICAgICAgICBuYW1lICs9ICcgJwogICAgICAgIHJldHVybiAnPCVzICVzKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lLCBsZXZlbCkKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKEdlbmVyaWNBbGlhcykKCgpjbGFzcyBGaWxlSGFuZGxlcihTdHJlYW1IYW5kbGVyKToKICAgICIiIgogICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHdyaXRlcyBmb3JtYXR0ZWQgbG9nZ2luZyByZWNvcmRzIHRvIGRpc2sgZmlsZXMuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlLCBlcnJvcnM9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgT3BlbiB0aGUgc3BlY2lmaWVkIGZpbGUgYW5kIHVzZSBpdCBhcyB0aGUgc3RyZWFtIGZvciBsb2dnaW5nLgogICAgICAgICIiIgogICAgICAgICMgSXNzdWUgIzI3NDkzOiBhZGQgc3VwcG9ydCBmb3IgUGF0aCBvYmplY3RzIHRvIGJlIHBhc3NlZCBpbgogICAgICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgICAgICNrZWVwIHRoZSBhYnNvbHV0ZSBwYXRoLCBvdGhlcndpc2UgZGVyaXZlZCBjbGFzc2VzIHdoaWNoIHVzZSB0aGlzCiAgICAgICAgI21heSBjb21lIGEgY3JvcHBlciB3aGVuIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBjaGFuZ2VzCiAgICAgICAgc2VsZi5iYXNlRmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCiAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZwogICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKICAgICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGlvLnRleHRfZW5jb2RpbmcoZW5jb2RpbmcpCiAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKICAgICAgICBzZWxmLmRlbGF5ID0gZGVsYXkKICAgICAgICAjIGJwby0yNjc4OTogRmlsZUhhbmRsZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIGJ1aWx0aW4gb3BlbigpCiAgICAgICAgIyBmdW5jdGlvbiB0byBiZSBhYmxlIHRvIG9wZW4gb3IgcmVvcGVuIHRoZSBmaWxlIGR1cmluZyBQeXRob24KICAgICAgICAjIGZpbmFsaXphdGlvbi4KICAgICAgICBzZWxmLl9idWlsdGluX29wZW4gPSBvcGVuCiAgICAgICAgaWYgZGVsYXk6CiAgICAgICAgICAgICNXZSBkb24ndCBvcGVuIHRoZSBzdHJlYW0sIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGNhbGwgdGhlCiAgICAgICAgICAgICNIYW5kbGVyIGNvbnN0cnVjdG9yIHRvIHNldCBsZXZlbCwgZm9ybWF0dGVyLCBsb2NrIGV0Yy4KICAgICAgICAgICAgSGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICBzZWxmLnN0cmVhbSA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBTdHJlYW1IYW5kbGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX29wZW4oKSkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgQ2xvc2VzIHRoZSBzdHJlYW0uCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5hY3F1aXJlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RyZWFtOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5zdHJlYW0KICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3RyZWFtLCAiY2xvc2UiKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAjIElzc3VlICMxOTUyMzogY2FsbCB1bmNvbmRpdGlvbmFsbHkgdG8KICAgICAgICAgICAgICAgICMgcHJldmVudCBhIGhhbmRsZXIgbGVhayB3aGVuIGRlbGF5IGlzIHNldAogICAgICAgICAgICAgICAgIyBBbHNvIHNlZSBJc3N1ZSAjNDIzNzg6IHdlIGFsc28gcmVseSBvbgogICAgICAgICAgICAgICAgIyBzZWxmLl9jbG9zZWQgYmVpbmcgc2V0IHRvIFRydWUgdGhlcmUKICAgICAgICAgICAgICAgIFN0cmVhbUhhbmRsZXIuY2xvc2Uoc2VsZikKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQoKICAgIGRlZiBfb3BlbihzZWxmKToKICAgICAgICAiIiIKICAgICAgICBPcGVuIHRoZSBjdXJyZW50IGJhc2UgZmlsZSB3aXRoIHRoZSAob3JpZ2luYWwpIG1vZGUgYW5kIGVuY29kaW5nLgogICAgICAgIFJldHVybiB0aGUgcmVzdWx0aW5nIHN0cmVhbS4KICAgICAgICAiIiIKICAgICAgICBvcGVuX2Z1bmMgPSBzZWxmLl9idWlsdGluX29wZW4KICAgICAgICByZXR1cm4gb3Blbl9mdW5jKHNlbGYuYmFzZUZpbGVuYW1lLCBzZWxmLm1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1zZWxmLmVuY29kaW5nLCBlcnJvcnM9c2VsZi5lcnJvcnMpCgogICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBFbWl0IGEgcmVjb3JkLgoKICAgICAgICBJZiB0aGUgc3RyZWFtIHdhcyBub3Qgb3BlbmVkIGJlY2F1c2UgJ2RlbGF5JyB3YXMgc3BlY2lmaWVkIGluIHRoZQogICAgICAgIGNvbnN0cnVjdG9yLCBvcGVuIGl0IGJlZm9yZSBjYWxsaW5nIHRoZSBzdXBlcmNsYXNzJ3MgZW1pdC4KCiAgICAgICAgSWYgc3RyZWFtIGlzIG5vdCBvcGVuLCBjdXJyZW50IG1vZGUgaXMgJ3cnIGFuZCBgX2Nsb3NlZD1UcnVlYCwgcmVjb3JkCiAgICAgICAgd2lsbCBub3QgYmUgZW1pdHRlZCAoc2VlIElzc3VlICM0MjM3OCkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5zdHJlYW0gaXMgTm9uZToKICAgICAgICAgICAgaWYgc2VsZi5tb2RlICE9ICd3JyBvciBub3Qgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBzZWxmLl9vcGVuKCkKICAgICAgICBpZiBzZWxmLnN0cmVhbToKICAgICAgICAgICAgU3RyZWFtSGFuZGxlci5lbWl0KHNlbGYsIHJlY29yZCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5sZXZlbCkKICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuYmFzZUZpbGVuYW1lLCBsZXZlbCkKCgpjbGFzcyBfU3RkZXJySGFuZGxlcihTdHJlYW1IYW5kbGVyKToKICAgICIiIgogICAgVGhpcyBjbGFzcyBpcyBsaWtlIGEgU3RyZWFtSGFuZGxlciB1c2luZyBzeXMuc3RkZXJyLCBidXQgYWx3YXlzIHVzZXMKICAgIHdoYXRldmVyIHN5cy5zdGRlcnIgaXMgY3VycmVudGx5IHNldCB0byByYXRoZXIgdGhhbiB0aGUgdmFsdWUgb2YKICAgIHN5cy5zdGRlcnIgYXQgaGFuZGxlciBjb25zdHJ1Y3Rpb24gdGltZS4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxldmVsPU5PVFNFVCk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlci4KICAgICAgICAiIiIKICAgICAgICBIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGxldmVsKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHN0cmVhbShzZWxmKToKICAgICAgICByZXR1cm4gc3lzLnN0ZGVycgoKCl9kZWZhdWx0TGFzdFJlc29ydCA9IF9TdGRlcnJIYW5kbGVyKFdBUk5JTkcpCmxhc3RSZXNvcnQgPSBfZGVmYXVsdExhc3RSZXNvcnQKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgIE1hbmFnZXIgY2xhc3NlcyBhbmQgZnVuY3Rpb25zCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNsYXNzIFBsYWNlSG9sZGVyKG9iamVjdCk6CiAgICAiIiIKICAgIFBsYWNlSG9sZGVyIGluc3RhbmNlcyBhcmUgdXNlZCBpbiB0aGUgTWFuYWdlciBsb2dnZXIgaGllcmFyY2h5IHRvIHRha2UKICAgIHRoZSBwbGFjZSBvZiBub2RlcyBmb3Igd2hpY2ggbm8gbG9nZ2VycyBoYXZlIGJlZW4gZGVmaW5lZC4gVGhpcyBjbGFzcyBpcwogICAgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSBvbmx5IGFuZCBub3QgYXMgcGFydCBvZiB0aGUgcHVibGljIEFQSS4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsb2dnZXIpOgogICAgICAgICIiIgogICAgICAgIEluaXRpYWxpemUgd2l0aCB0aGUgc3BlY2lmaWVkIGxvZ2dlciBiZWluZyBhIGNoaWxkIG9mIHRoaXMgcGxhY2Vob2xkZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5sb2dnZXJNYXAgPSB7IGFsb2dnZXIgOiBOb25lIH0KCiAgICBkZWYgYXBwZW5kKHNlbGYsIGFsb2dnZXIpOgogICAgICAgICIiIgogICAgICAgIEFkZCB0aGUgc3BlY2lmaWVkIGxvZ2dlciBhcyBhIGNoaWxkIG9mIHRoaXMgcGxhY2Vob2xkZXIuCiAgICAgICAgIiIiCiAgICAgICAgaWYgYWxvZ2dlciBub3QgaW4gc2VsZi5sb2dnZXJNYXA6CiAgICAgICAgICAgIHNlbGYubG9nZ2VyTWFwW2Fsb2dnZXJdID0gTm9uZQoKIwojICAgRGV0ZXJtaW5lIHdoaWNoIGNsYXNzIHRvIHVzZSB3aGVuIGluc3RhbnRpYXRpbmcgbG9nZ2Vycy4KIwoKZGVmIHNldExvZ2dlckNsYXNzKGtsYXNzKToKICAgICIiIgogICAgU2V0IHRoZSBjbGFzcyB0byBiZSB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGxvZ2dlci4gVGhlIGNsYXNzIHNob3VsZAogICAgZGVmaW5lIF9faW5pdF9fKCkgc3VjaCB0aGF0IG9ubHkgYSBuYW1lIGFyZ3VtZW50IGlzIHJlcXVpcmVkLCBhbmQgdGhlCiAgICBfX2luaXRfXygpIHNob3VsZCBjYWxsIExvZ2dlci5fX2luaXRfXygpCiAgICAiIiIKICAgIGlmIGtsYXNzICE9IExvZ2dlcjoKICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhrbGFzcywgTG9nZ2VyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJsb2dnZXIgbm90IGRlcml2ZWQgZnJvbSBsb2dnaW5nLkxvZ2dlcjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBrbGFzcy5fX25hbWVfXykKICAgIGdsb2JhbCBfbG9nZ2VyQ2xhc3MKICAgIF9sb2dnZXJDbGFzcyA9IGtsYXNzCgpkZWYgZ2V0TG9nZ2VyQ2xhc3MoKToKICAgICIiIgogICAgUmV0dXJuIHRoZSBjbGFzcyB0byBiZSB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGxvZ2dlci4KICAgICIiIgogICAgcmV0dXJuIF9sb2dnZXJDbGFzcwoKY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgIiIiCiAgICBUaGVyZSBpcyBbdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXNdIGp1c3Qgb25lIE1hbmFnZXIgaW5zdGFuY2UsIHdoaWNoCiAgICBob2xkcyB0aGUgaGllcmFyY2h5IG9mIGxvZ2dlcnMuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290bm9kZSk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgbWFuYWdlciB3aXRoIHRoZSByb290IG5vZGUgb2YgdGhlIGxvZ2dlciBoaWVyYXJjaHkuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5yb290ID0gcm9vdG5vZGUKICAgICAgICBzZWxmLmRpc2FibGUgPSAwCiAgICAgICAgc2VsZi5lbWl0dGVkTm9IYW5kbGVyV2FybmluZyA9IEZhbHNlCiAgICAgICAgc2VsZi5sb2dnZXJEaWN0ID0ge30KICAgICAgICBzZWxmLmxvZ2dlckNsYXNzID0gTm9uZQogICAgICAgIHNlbGYubG9nUmVjb3JkRmFjdG9yeSA9IE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkaXNhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9kaXNhYmxlCgogICAgQGRpc2FibGUuc2V0dGVyCiAgICBkZWYgZGlzYWJsZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5fZGlzYWJsZSA9IF9jaGVja0xldmVsKHZhbHVlKQoKICAgIGRlZiBnZXRMb2dnZXIoc2VsZiwgbmFtZSk6CiAgICAgICAgIiIiCiAgICAgICAgR2V0IGEgbG9nZ2VyIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIChjaGFubmVsIG5hbWUpLCBjcmVhdGluZyBpdAogICAgICAgIGlmIGl0IGRvZXNuJ3QgeWV0IGV4aXN0LiBUaGlzIG5hbWUgaXMgYSBkb3Qtc2VwYXJhdGVkIGhpZXJhcmNoaWNhbAogICAgICAgIG5hbWUsIHN1Y2ggYXMgImEiLCAiYS5iIiwgImEuYi5jIiBvciBzaW1pbGFyLgoKICAgICAgICBJZiBhIFBsYWNlSG9sZGVyIGV4aXN0ZWQgZm9yIHRoZSBzcGVjaWZpZWQgbmFtZSBbaS5lLiB0aGUgbG9nZ2VyCiAgICAgICAgZGlkbid0IGV4aXN0IGJ1dCBhIGNoaWxkIG9mIGl0IGRpZF0sIHJlcGxhY2UgaXQgd2l0aCB0aGUgY3JlYXRlZAogICAgICAgIGxvZ2dlciBhbmQgZml4IHVwIHRoZSBwYXJlbnQvY2hpbGQgcmVmZXJlbmNlcyB3aGljaCBwb2ludGVkIHRvIHRoZQogICAgICAgIHBsYWNlaG9sZGVyIHRvIG5vdyBwb2ludCB0byB0aGUgbG9nZ2VyLgogICAgICAgICIiIgogICAgICAgIHJ2ID0gTm9uZQogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQSBsb2dnZXIgbmFtZSBtdXN0IGJlIGEgc3RyaW5nJykKICAgICAgICBfYWNxdWlyZUxvY2soKQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWxmLmxvZ2dlckRpY3Q6CiAgICAgICAgICAgICAgICBydiA9IHNlbGYubG9nZ2VyRGljdFtuYW1lXQogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShydiwgUGxhY2VIb2xkZXIpOgogICAgICAgICAgICAgICAgICAgIHBoID0gcnYKICAgICAgICAgICAgICAgICAgICBydiA9IChzZWxmLmxvZ2dlckNsYXNzIG9yIF9sb2dnZXJDbGFzcykobmFtZSkKICAgICAgICAgICAgICAgICAgICBydi5tYW5hZ2VyID0gc2VsZgogICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyRGljdFtuYW1lXSA9IHJ2CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZml4dXBDaGlsZHJlbihwaCwgcnYpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZml4dXBQYXJlbnRzKHJ2KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcnYgPSAoc2VsZi5sb2dnZXJDbGFzcyBvciBfbG9nZ2VyQ2xhc3MpKG5hbWUpCiAgICAgICAgICAgICAgICBydi5tYW5hZ2VyID0gc2VsZgogICAgICAgICAgICAgICAgc2VsZi5sb2dnZXJEaWN0W25hbWVdID0gcnYKICAgICAgICAgICAgICAgIHNlbGYuX2ZpeHVwUGFyZW50cyhydikKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBfcmVsZWFzZUxvY2soKQogICAgICAgIHJldHVybiBydgoKICAgIGRlZiBzZXRMb2dnZXJDbGFzcyhzZWxmLCBrbGFzcyk6CiAgICAgICAgIiIiCiAgICAgICAgU2V0IHRoZSBjbGFzcyB0byBiZSB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGxvZ2dlciB3aXRoIHRoaXMgTWFuYWdlci4KICAgICAgICAiIiIKICAgICAgICBpZiBrbGFzcyAhPSBMb2dnZXI6CiAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGtsYXNzLCBMb2dnZXIpOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJsb2dnZXIgbm90IGRlcml2ZWQgZnJvbSBsb2dnaW5nLkxvZ2dlcjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsga2xhc3MuX19uYW1lX18pCiAgICAgICAgc2VsZi5sb2dnZXJDbGFzcyA9IGtsYXNzCgogICAgZGVmIHNldExvZ1JlY29yZEZhY3Rvcnkoc2VsZiwgZmFjdG9yeSk6CiAgICAgICAgIiIiCiAgICAgICAgU2V0IHRoZSBmYWN0b3J5IHRvIGJlIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgbG9nIHJlY29yZCB3aXRoIHRoaXMKICAgICAgICBNYW5hZ2VyLgogICAgICAgICIiIgogICAgICAgIHNlbGYubG9nUmVjb3JkRmFjdG9yeSA9IGZhY3RvcnkKCiAgICBkZWYgX2ZpeHVwUGFyZW50cyhzZWxmLCBhbG9nZ2VyKToKICAgICAgICAiIiIKICAgICAgICBFbnN1cmUgdGhhdCB0aGVyZSBhcmUgZWl0aGVyIGxvZ2dlcnMgb3IgcGxhY2Vob2xkZXJzIGFsbCB0aGUgd2F5CiAgICAgICAgZnJvbSB0aGUgc3BlY2lmaWVkIGxvZ2dlciB0byB0aGUgcm9vdCBvZiB0aGUgbG9nZ2VyIGhpZXJhcmNoeS4KICAgICAgICAiIiIKICAgICAgICBuYW1lID0gYWxvZ2dlci5uYW1lCiAgICAgICAgaSA9IG5hbWUucmZpbmQoIi4iKQogICAgICAgIHJ2ID0gTm9uZQogICAgICAgIHdoaWxlIChpID4gMCkgYW5kIG5vdCBydjoKICAgICAgICAgICAgc3Vic3RyID0gbmFtZVs6aV0KICAgICAgICAgICAgaWYgc3Vic3RyIG5vdCBpbiBzZWxmLmxvZ2dlckRpY3Q6CiAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlckRpY3Rbc3Vic3RyXSA9IFBsYWNlSG9sZGVyKGFsb2dnZXIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBvYmogPSBzZWxmLmxvZ2dlckRpY3Rbc3Vic3RyXQogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIExvZ2dlcik6CiAgICAgICAgICAgICAgICAgICAgcnYgPSBvYmoKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob2JqLCBQbGFjZUhvbGRlcikKICAgICAgICAgICAgICAgICAgICBvYmouYXBwZW5kKGFsb2dnZXIpCiAgICAgICAgICAgIGkgPSBuYW1lLnJmaW5kKCIuIiwgMCwgaSAtIDEpCiAgICAgICAgaWYgbm90IHJ2OgogICAgICAgICAgICBydiA9IHNlbGYucm9vdAogICAgICAgIGFsb2dnZXIucGFyZW50ID0gcnYKCiAgICBkZWYgX2ZpeHVwQ2hpbGRyZW4oc2VsZiwgcGgsIGFsb2dnZXIpOgogICAgICAgICIiIgogICAgICAgIEVuc3VyZSB0aGF0IGNoaWxkcmVuIG9mIHRoZSBwbGFjZWhvbGRlciBwaCBhcmUgY29ubmVjdGVkIHRvIHRoZQogICAgICAgIHNwZWNpZmllZCBsb2dnZXIuCiAgICAgICAgIiIiCiAgICAgICAgbmFtZSA9IGFsb2dnZXIubmFtZQogICAgICAgIG5hbWVsZW4gPSBsZW4obmFtZSkKICAgICAgICBmb3IgYyBpbiBwaC5sb2dnZXJNYXAua2V5cygpOgogICAgICAgICAgICAjVGhlIGlmIG1lYW5zIC4uLiBpZiBub3QgYy5wYXJlbnQubmFtZS5zdGFydHN3aXRoKG5tKQogICAgICAgICAgICBpZiBjLnBhcmVudC5uYW1lWzpuYW1lbGVuXSAhPSBuYW1lOgogICAgICAgICAgICAgICAgYWxvZ2dlci5wYXJlbnQgPSBjLnBhcmVudAogICAgICAgICAgICAgICAgYy5wYXJlbnQgPSBhbG9nZ2VyCgogICAgZGVmIF9jbGVhcl9jYWNoZShzZWxmKToKICAgICAgICAiIiIKICAgICAgICBDbGVhciB0aGUgY2FjaGUgZm9yIGFsbCBsb2dnZXJzIGluIGxvZ2dlckRpY3QKICAgICAgICBDYWxsZWQgd2hlbiBsZXZlbCBjaGFuZ2VzIGFyZSBtYWRlCiAgICAgICAgIiIiCgogICAgICAgIF9hY3F1aXJlTG9jaygpCiAgICAgICAgZm9yIGxvZ2dlciBpbiBzZWxmLmxvZ2dlckRpY3QudmFsdWVzKCk6CiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobG9nZ2VyLCBMb2dnZXIpOgogICAgICAgICAgICAgICAgbG9nZ2VyLl9jYWNoZS5jbGVhcigpCiAgICAgICAgc2VsZi5yb290Ll9jYWNoZS5jbGVhcigpCiAgICAgICAgX3JlbGVhc2VMb2NrKCkKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgIExvZ2dlciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKY2xhc3MgTG9nZ2VyKEZpbHRlcmVyKToKICAgICIiIgogICAgSW5zdGFuY2VzIG9mIHRoZSBMb2dnZXIgY2xhc3MgcmVwcmVzZW50IGEgc2luZ2xlIGxvZ2dpbmcgY2hhbm5lbC4gQQogICAgImxvZ2dpbmcgY2hhbm5lbCIgaW5kaWNhdGVzIGFuIGFyZWEgb2YgYW4gYXBwbGljYXRpb24uIEV4YWN0bHkgaG93IGFuCiAgICAiYXJlYSIgaXMgZGVmaW5lZCBpcyB1cCB0byB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyLiBTaW5jZSBhbgogICAgYXBwbGljYXRpb24gY2FuIGhhdmUgYW55IG51bWJlciBvZiBhcmVhcywgbG9nZ2luZyBjaGFubmVscyBhcmUgaWRlbnRpZmllZAogICAgYnkgYSB1bmlxdWUgc3RyaW5nLiBBcHBsaWNhdGlvbiBhcmVhcyBjYW4gYmUgbmVzdGVkIChlLmcuIGFuIGFyZWEKICAgIG9mICJpbnB1dCBwcm9jZXNzaW5nIiBtaWdodCBpbmNsdWRlIHN1Yi1hcmVhcyAicmVhZCBDU1YgZmlsZXMiLCAicmVhZAogICAgWExTIGZpbGVzIiBhbmQgInJlYWQgR251bWVyaWMgZmlsZXMiKS4gVG8gY2F0ZXIgZm9yIHRoaXMgbmF0dXJhbCBuZXN0aW5nLAogICAgY2hhbm5lbCBuYW1lcyBhcmUgb3JnYW5pemVkIGludG8gYSBuYW1lc3BhY2UgaGllcmFyY2h5IHdoZXJlIGxldmVscyBhcmUKICAgIHNlcGFyYXRlZCBieSBwZXJpb2RzLCBtdWNoIGxpa2UgdGhlIEphdmEgb3IgUHl0aG9uIHBhY2thZ2UgbmFtZXNwYWNlLiBTbwogICAgaW4gdGhlIGluc3RhbmNlIGdpdmVuIGFib3ZlLCBjaGFubmVsIG5hbWVzIG1pZ2h0IGJlICJpbnB1dCIgZm9yIHRoZSB1cHBlcgogICAgbGV2ZWwsIGFuZCAiaW5wdXQuY3N2IiwgImlucHV0LnhscyIgYW5kICJpbnB1dC5nbnUiIGZvciB0aGUgc3ViLWxldmVscy4KICAgIFRoZXJlIGlzIG5vIGFyYml0cmFyeSBsaW1pdCB0byB0aGUgZGVwdGggb2YgbmVzdGluZy4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGxldmVsPU5PVFNFVCk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgbG9nZ2VyIHdpdGggYSBuYW1lIGFuZCBhbiBvcHRpb25hbCBsZXZlbC4KICAgICAgICAiIiIKICAgICAgICBGaWx0ZXJlci5fX2luaXRfXyhzZWxmKQogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICBzZWxmLmxldmVsID0gX2NoZWNrTGV2ZWwobGV2ZWwpCiAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCiAgICAgICAgc2VsZi5wcm9wYWdhdGUgPSBUcnVlCiAgICAgICAgc2VsZi5oYW5kbGVycyA9IFtdCiAgICAgICAgc2VsZi5kaXNhYmxlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fY2FjaGUgPSB7fQoKICAgIGRlZiBzZXRMZXZlbChzZWxmLCBsZXZlbCk6CiAgICAgICAgIiIiCiAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgbG9nZ2VyLiAgbGV2ZWwgbXVzdCBiZSBhbiBpbnQgb3IgYSBzdHIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5sZXZlbCA9IF9jaGVja0xldmVsKGxldmVsKQogICAgICAgIHNlbGYubWFuYWdlci5fY2xlYXJfY2FjaGUoKQoKICAgIGRlZiBkZWJ1ZyhzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgTG9nICdtc2cgJSBhcmdzJyB3aXRoIHNldmVyaXR5ICdERUJVRycuCgogICAgICAgIFRvIHBhc3MgZXhjZXB0aW9uIGluZm9ybWF0aW9uLCB1c2UgdGhlIGtleXdvcmQgYXJndW1lbnQgZXhjX2luZm8gd2l0aAogICAgICAgIGEgdHJ1ZSB2YWx1ZSwgZS5nLgoKICAgICAgICBsb2dnZXIuZGVidWcoIkhvdXN0b24sIHdlIGhhdmUgYSAlcyIsICJ0aG9ybnkgcHJvYmxlbSIsIGV4Y19pbmZvPTEpCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5pc0VuYWJsZWRGb3IoREVCVUcpOgogICAgICAgICAgICBzZWxmLl9sb2coREVCVUcsIG1zZywgYXJncywgKiprd2FyZ3MpCgogICAgZGVmIGluZm8oc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIgogICAgICAgIExvZyAnbXNnICUgYXJncycgd2l0aCBzZXZlcml0eSAnSU5GTycuCgogICAgICAgIFRvIHBhc3MgZXhjZXB0aW9uIGluZm9ybWF0aW9uLCB1c2UgdGhlIGtleXdvcmQgYXJndW1lbnQgZXhjX2luZm8gd2l0aAogICAgICAgIGEgdHJ1ZSB2YWx1ZSwgZS5nLgoKICAgICAgICBsb2dnZXIuaW5mbygiSG91c3Rvbiwgd2UgaGF2ZSBhICVzIiwgImludGVyZXN0aW5nIHByb2JsZW0iLCBleGNfaW5mbz0xKQogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuaXNFbmFibGVkRm9yKElORk8pOgogICAgICAgICAgICBzZWxmLl9sb2coSU5GTywgbXNnLCBhcmdzLCAqKmt3YXJncykKCiAgICBkZWYgd2FybmluZyhzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgTG9nICdtc2cgJSBhcmdzJyB3aXRoIHNldmVyaXR5ICdXQVJOSU5HJy4KCiAgICAgICAgVG8gcGFzcyBleGNlcHRpb24gaW5mb3JtYXRpb24sIHVzZSB0aGUga2V5d29yZCBhcmd1bWVudCBleGNfaW5mbyB3aXRoCiAgICAgICAgYSB0cnVlIHZhbHVlLCBlLmcuCgogICAgICAgIGxvZ2dlci53YXJuaW5nKCJIb3VzdG9uLCB3ZSBoYXZlIGEgJXMiLCAiYml0IG9mIGEgcHJvYmxlbSIsIGV4Y19pbmZvPTEpCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5pc0VuYWJsZWRGb3IoV0FSTklORyk6CiAgICAgICAgICAgIHNlbGYuX2xvZyhXQVJOSU5HLCBtc2csIGFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiB3YXJuKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgJ3dhcm4nIG1ldGhvZCBpcyBkZXByZWNhdGVkLCAiCiAgICAgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgc2VsZi53YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiBlcnJvcihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgTG9nICdtc2cgJSBhcmdzJyB3aXRoIHNldmVyaXR5ICdFUlJPUicuCgogICAgICAgIFRvIHBhc3MgZXhjZXB0aW9uIGluZm9ybWF0aW9uLCB1c2UgdGhlIGtleXdvcmQgYXJndW1lbnQgZXhjX2luZm8gd2l0aAogICAgICAgIGEgdHJ1ZSB2YWx1ZSwgZS5nLgoKICAgICAgICBsb2dnZXIuZXJyb3IoIkhvdXN0b24sIHdlIGhhdmUgYSAlcyIsICJtYWpvciBwcm9ibGVtIiwgZXhjX2luZm89MSkKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmlzRW5hYmxlZEZvcihFUlJPUik6CiAgICAgICAgICAgIHNlbGYuX2xvZyhFUlJPUiwgbXNnLCBhcmdzLCAqKmt3YXJncykKCiAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsIGV4Y19pbmZvPVRydWUsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGxvZ2dpbmcgYW4gRVJST1Igd2l0aCBleGNlcHRpb24gaW5mb3JtYXRpb24uCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5lcnJvcihtc2csICphcmdzLCBleGNfaW5mbz1leGNfaW5mbywgKiprd2FyZ3MpCgogICAgZGVmIGNyaXRpY2FsKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBMb2cgJ21zZyAlIGFyZ3MnIHdpdGggc2V2ZXJpdHkgJ0NSSVRJQ0FMJy4KCiAgICAgICAgVG8gcGFzcyBleGNlcHRpb24gaW5mb3JtYXRpb24sIHVzZSB0aGUga2V5d29yZCBhcmd1bWVudCBleGNfaW5mbyB3aXRoCiAgICAgICAgYSB0cnVlIHZhbHVlLCBlLmcuCgogICAgICAgIGxvZ2dlci5jcml0aWNhbCgiSG91c3Rvbiwgd2UgaGF2ZSBhICVzIiwgIm1ham9yIGRpc2FzdGVyIiwgZXhjX2luZm89MSkKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmlzRW5hYmxlZEZvcihDUklUSUNBTCk6CiAgICAgICAgICAgIHNlbGYuX2xvZyhDUklUSUNBTCwgbXNnLCBhcmdzLCAqKmt3YXJncykKCiAgICBkZWYgZmF0YWwoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIgogICAgICAgIERvbid0IHVzZSB0aGlzIG1ldGhvZCwgdXNlIGNyaXRpY2FsKCkgaW5zdGVhZC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmNyaXRpY2FsKG1zZywgKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiBsb2coc2VsZiwgbGV2ZWwsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBMb2cgJ21zZyAlIGFyZ3MnIHdpdGggdGhlIGludGVnZXIgc2V2ZXJpdHkgJ2xldmVsJy4KCiAgICAgICAgVG8gcGFzcyBleGNlcHRpb24gaW5mb3JtYXRpb24sIHVzZSB0aGUga2V5d29yZCBhcmd1bWVudCBleGNfaW5mbyB3aXRoCiAgICAgICAgYSB0cnVlIHZhbHVlLCBlLmcuCgogICAgICAgIGxvZ2dlci5sb2cobGV2ZWwsICJXZSBoYXZlIGEgJXMiLCAibXlzdGVyaW91cyBwcm9ibGVtIiwgZXhjX2luZm89MSkKICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsZXZlbCwgaW50KToKICAgICAgICAgICAgaWYgcmFpc2VFeGNlcHRpb25zOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJsZXZlbCBtdXN0IGJlIGFuIGludGVnZXIiKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgc2VsZi5pc0VuYWJsZWRGb3IobGV2ZWwpOgogICAgICAgICAgICBzZWxmLl9sb2cobGV2ZWwsIG1zZywgYXJncywgKiprd2FyZ3MpCgogICAgZGVmIGZpbmRDYWxsZXIoc2VsZiwgc3RhY2tfaW5mbz1GYWxzZSwgc3RhY2tsZXZlbD0xKToKICAgICAgICAiIiIKICAgICAgICBGaW5kIHRoZSBzdGFjayBmcmFtZSBvZiB0aGUgY2FsbGVyIHNvIHRoYXQgd2UgY2FuIG5vdGUgdGhlIHNvdXJjZQogICAgICAgIGZpbGUgbmFtZSwgbGluZSBudW1iZXIgYW5kIGZ1bmN0aW9uIG5hbWUuCiAgICAgICAgIiIiCiAgICAgICAgZiA9IGN1cnJlbnRmcmFtZSgpCiAgICAgICAgI09uIHNvbWUgdmVyc2lvbnMgb2YgSXJvblB5dGhvbiwgY3VycmVudGZyYW1lKCkgcmV0dXJucyBOb25lIGlmCiAgICAgICAgI0lyb25QeXRob24gaXNuJ3QgcnVuIHdpdGggLVg6RnJhbWVzLgogICAgICAgIGlmIGYgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiLCBOb25lCiAgICAgICAgd2hpbGUgc3RhY2tsZXZlbCA+IDA6CiAgICAgICAgICAgIG5leHRfZiA9IGYuZl9iYWNrCiAgICAgICAgICAgIGlmIG5leHRfZiBpcyBOb25lOgogICAgICAgICAgICAgICAgIyMgV2UndmUgZ290IG9wdGlvbnMgaGVyZS4KICAgICAgICAgICAgICAgICMjIElmIHdlIHdhbnQgdG8gdXNlIHRoZSBsYXN0IChkZWVwZXN0KSBmcmFtZToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAjIyBJZiB3ZSB3YW50IHRvIG1pbWljIHRoZSB3YXJuaW5ncyBtb2R1bGU6CiAgICAgICAgICAgICAgICAjcmV0dXJuICgic3lzIiwgMSwgIih1bmtub3duIGZ1bmN0aW9uKSIsIE5vbmUpCiAgICAgICAgICAgICAgICAjIyBJZiB3ZSB3YW50IHRvIGJlIHBlZGFudGljOgogICAgICAgICAgICAgICAgI3JhaXNlIFZhbHVlRXJyb3IoImNhbGwgc3RhY2sgaXMgbm90IGRlZXAgZW5vdWdoIikKICAgICAgICAgICAgZiA9IG5leHRfZgogICAgICAgICAgICBpZiBub3QgX2lzX2ludGVybmFsX2ZyYW1lKGYpOgogICAgICAgICAgICAgICAgc3RhY2tsZXZlbCAtPSAxCiAgICAgICAgY28gPSBmLmZfY29kZQogICAgICAgIHNpbmZvID0gTm9uZQogICAgICAgIGlmIHN0YWNrX2luZm86CiAgICAgICAgICAgIHdpdGggaW8uU3RyaW5nSU8oKSBhcyBzaW86CiAgICAgICAgICAgICAgICBzaW8ud3JpdGUoIlN0YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuIikKICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9zdGFjayhmLCBmaWxlPXNpbykKICAgICAgICAgICAgICAgIHNpbmZvID0gc2lvLmdldHZhbHVlKCkKICAgICAgICAgICAgICAgIGlmIHNpbmZvWy0xXSA9PSAnXG4nOgogICAgICAgICAgICAgICAgICAgIHNpbmZvID0gc2luZm9bOi0xXQogICAgICAgIHJldHVybiBjby5jb19maWxlbmFtZSwgZi5mX2xpbmVubywgY28uY29fbmFtZSwgc2luZm8KCiAgICBkZWYgbWFrZVJlY29yZChzZWxmLCBuYW1lLCBsZXZlbCwgZm4sIGxubywgbXNnLCBhcmdzLCBleGNfaW5mbywKICAgICAgICAgICAgICAgICAgIGZ1bmM9Tm9uZSwgZXh0cmE9Tm9uZSwgc2luZm89Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgQSBmYWN0b3J5IG1ldGhvZCB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbiBpbiBzdWJjbGFzc2VzIHRvIGNyZWF0ZQogICAgICAgIHNwZWNpYWxpemVkIExvZ1JlY29yZHMuCiAgICAgICAgIiIiCiAgICAgICAgcnYgPSBfbG9nUmVjb3JkRmFjdG9yeShuYW1lLCBsZXZlbCwgZm4sIGxubywgbXNnLCBhcmdzLCBleGNfaW5mbywgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5mbykKICAgICAgICBpZiBleHRyYSBpcyBub3QgTm9uZToKICAgICAgICAgICAgZm9yIGtleSBpbiBleHRyYToKICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gWyJtZXNzYWdlIiwgImFzY3RpbWUiXSkgb3IgKGtleSBpbiBydi5fX2RpY3RfXyk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIkF0dGVtcHQgdG8gb3ZlcndyaXRlICVyIGluIExvZ1JlY29yZCIgJSBrZXkpCiAgICAgICAgICAgICAgICBydi5fX2RpY3RfX1trZXldID0gZXh0cmFba2V5XQogICAgICAgIHJldHVybiBydgoKICAgIGRlZiBfbG9nKHNlbGYsIGxldmVsLCBtc2csIGFyZ3MsIGV4Y19pbmZvPU5vbmUsIGV4dHJhPU5vbmUsIHN0YWNrX2luZm89RmFsc2UsCiAgICAgICAgICAgICBzdGFja2xldmVsPTEpOgogICAgICAgICIiIgogICAgICAgIExvdy1sZXZlbCBsb2dnaW5nIHJvdXRpbmUgd2hpY2ggY3JlYXRlcyBhIExvZ1JlY29yZCBhbmQgdGhlbiBjYWxscwogICAgICAgIGFsbCB0aGUgaGFuZGxlcnMgb2YgdGhpcyBsb2dnZXIgdG8gaGFuZGxlIHRoZSByZWNvcmQuCiAgICAgICAgIiIiCiAgICAgICAgc2luZm8gPSBOb25lCiAgICAgICAgaWYgX3NyY2ZpbGU6CiAgICAgICAgICAgICNJcm9uUHl0aG9uIGRvZXNuJ3QgdHJhY2sgUHl0aG9uIGZyYW1lcywgc28gZmluZENhbGxlciByYWlzZXMgYW4KICAgICAgICAgICAgI2V4Y2VwdGlvbiBvbiBzb21lIHZlcnNpb25zIG9mIElyb25QeXRob24uIFdlIHRyYXAgaXQgaGVyZSBzbyB0aGF0CiAgICAgICAgICAgICNJcm9uUHl0aG9uIGNhbiB1c2UgbG9nZ2luZy4KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZm4sIGxubywgZnVuYywgc2luZm8gPSBzZWxmLmZpbmRDYWxsZXIoc3RhY2tfaW5mbywgc3RhY2tsZXZlbCkKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgZm4sIGxubywgZnVuYyA9ICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiCiAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgIGZuLCBsbm8sIGZ1bmMgPSAiKHVua25vd24gZmlsZSkiLCAwLCAiKHVua25vd24gZnVuY3Rpb24pIgogICAgICAgIGlmIGV4Y19pbmZvOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4Y19pbmZvLCBCYXNlRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gKHR5cGUoZXhjX2luZm8pLCBleGNfaW5mbywgZXhjX2luZm8uX190cmFjZWJhY2tfXykKICAgICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgogICAgICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQogICAgICAgIHJlY29yZCA9IHNlbGYubWFrZVJlY29yZChzZWxmLm5hbWUsIGxldmVsLCBmbiwgbG5vLCBtc2csIGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBmdW5jLCBleHRyYSwgc2luZm8pCiAgICAgICAgc2VsZi5oYW5kbGUocmVjb3JkKQoKICAgIGRlZiBoYW5kbGUoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBDYWxsIHRoZSBoYW5kbGVycyBmb3IgdGhlIHNwZWNpZmllZCByZWNvcmQuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIHVucGlja2xlZCByZWNvcmRzIHJlY2VpdmVkIGZyb20gYSBzb2NrZXQsIGFzCiAgICAgICAgd2VsbCBhcyB0aG9zZSBjcmVhdGVkIGxvY2FsbHkuIExvZ2dlci1sZXZlbCBmaWx0ZXJpbmcgaXMgYXBwbGllZC4KICAgICAgICAiIiIKICAgICAgICBpZiAobm90IHNlbGYuZGlzYWJsZWQpIGFuZCBzZWxmLmZpbHRlcihyZWNvcmQpOgogICAgICAgICAgICBzZWxmLmNhbGxIYW5kbGVycyhyZWNvcmQpCgogICAgZGVmIGFkZEhhbmRsZXIoc2VsZiwgaGRscik6CiAgICAgICAgIiIiCiAgICAgICAgQWRkIHRoZSBzcGVjaWZpZWQgaGFuZGxlciB0byB0aGlzIGxvZ2dlci4KICAgICAgICAiIiIKICAgICAgICBfYWNxdWlyZUxvY2soKQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgbm90IChoZGxyIGluIHNlbGYuaGFuZGxlcnMpOgogICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVycy5hcHBlbmQoaGRscikKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBfcmVsZWFzZUxvY2soKQoKICAgIGRlZiByZW1vdmVIYW5kbGVyKHNlbGYsIGhkbHIpOgogICAgICAgICIiIgogICAgICAgIFJlbW92ZSB0aGUgc3BlY2lmaWVkIGhhbmRsZXIgZnJvbSB0aGlzIGxvZ2dlci4KICAgICAgICAiIiIKICAgICAgICBfYWNxdWlyZUxvY2soKQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgaGRsciBpbiBzZWxmLmhhbmRsZXJzOgogICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVycy5yZW1vdmUoaGRscikKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBfcmVsZWFzZUxvY2soKQoKICAgIGRlZiBoYXNIYW5kbGVycyhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBTZWUgaWYgdGhpcyBsb2dnZXIgaGFzIGFueSBoYW5kbGVycyBjb25maWd1cmVkLgoKICAgICAgICBMb29wIHRocm91Z2ggYWxsIGhhbmRsZXJzIGZvciB0aGlzIGxvZ2dlciBhbmQgaXRzIHBhcmVudHMgaW4gdGhlCiAgICAgICAgbG9nZ2VyIGhpZXJhcmNoeS4gUmV0dXJuIFRydWUgaWYgYSBoYW5kbGVyIHdhcyBmb3VuZCwgZWxzZSBGYWxzZS4KICAgICAgICBTdG9wIHNlYXJjaGluZyB1cCB0aGUgaGllcmFyY2h5IHdoZW5ldmVyIGEgbG9nZ2VyIHdpdGggdGhlICJwcm9wYWdhdGUiCiAgICAgICAgYXR0cmlidXRlIHNldCB0byB6ZXJvIGlzIGZvdW5kIC0gdGhhdCB3aWxsIGJlIHRoZSBsYXN0IGxvZ2dlciB3aGljaAogICAgICAgIGlzIGNoZWNrZWQgZm9yIHRoZSBleGlzdGVuY2Ugb2YgaGFuZGxlcnMuCiAgICAgICAgIiIiCiAgICAgICAgYyA9IHNlbGYKICAgICAgICBydiA9IEZhbHNlCiAgICAgICAgd2hpbGUgYzoKICAgICAgICAgICAgaWYgYy5oYW5kbGVyczoKICAgICAgICAgICAgICAgIHJ2ID0gVHJ1ZQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgaWYgbm90IGMucHJvcGFnYXRlOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGMgPSBjLnBhcmVudAogICAgICAgIHJldHVybiBydgoKICAgIGRlZiBjYWxsSGFuZGxlcnMoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBQYXNzIGEgcmVjb3JkIHRvIGFsbCByZWxldmFudCBoYW5kbGVycy4KCiAgICAgICAgTG9vcCB0aHJvdWdoIGFsbCBoYW5kbGVycyBmb3IgdGhpcyBsb2dnZXIgYW5kIGl0cyBwYXJlbnRzIGluIHRoZQogICAgICAgIGxvZ2dlciBoaWVyYXJjaHkuIElmIG5vIGhhbmRsZXIgd2FzIGZvdW5kLCBvdXRwdXQgYSBvbmUtb2ZmIGVycm9yCiAgICAgICAgbWVzc2FnZSB0byBzeXMuc3RkZXJyLiBTdG9wIHNlYXJjaGluZyB1cCB0aGUgaGllcmFyY2h5IHdoZW5ldmVyIGEKICAgICAgICBsb2dnZXIgd2l0aCB0aGUgInByb3BhZ2F0ZSIgYXR0cmlidXRlIHNldCB0byB6ZXJvIGlzIGZvdW5kIC0gdGhhdAogICAgICAgIHdpbGwgYmUgdGhlIGxhc3QgbG9nZ2VyIHdob3NlIGhhbmRsZXJzIGFyZSBjYWxsZWQuCiAgICAgICAgIiIiCiAgICAgICAgYyA9IHNlbGYKICAgICAgICBmb3VuZCA9IDAKICAgICAgICB3aGlsZSBjOgogICAgICAgICAgICBmb3IgaGRsciBpbiBjLmhhbmRsZXJzOgogICAgICAgICAgICAgICAgZm91bmQgPSBmb3VuZCArIDEKICAgICAgICAgICAgICAgIGlmIHJlY29yZC5sZXZlbG5vID49IGhkbHIubGV2ZWw6CiAgICAgICAgICAgICAgICAgICAgaGRsci5oYW5kbGUocmVjb3JkKQogICAgICAgICAgICBpZiBub3QgYy5wcm9wYWdhdGU6CiAgICAgICAgICAgICAgICBjID0gTm9uZSAgICAjYnJlYWsgb3V0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjID0gYy5wYXJlbnQKICAgICAgICBpZiAoZm91bmQgPT0gMCk6CiAgICAgICAgICAgIGlmIGxhc3RSZXNvcnQ6CiAgICAgICAgICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA+PSBsYXN0UmVzb3J0LmxldmVsOgogICAgICAgICAgICAgICAgICAgIGxhc3RSZXNvcnQuaGFuZGxlKHJlY29yZCkKICAgICAgICAgICAgZWxpZiByYWlzZUV4Y2VwdGlvbnMgYW5kIG5vdCBzZWxmLm1hbmFnZXIuZW1pdHRlZE5vSGFuZGxlcldhcm5pbmc6CiAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJObyBoYW5kbGVycyBjb3VsZCBiZSBmb3VuZCBmb3IgbG9nZ2VyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFwiJXNcIlxuIiAlIHNlbGYubmFtZSkKICAgICAgICAgICAgICAgIHNlbGYubWFuYWdlci5lbWl0dGVkTm9IYW5kbGVyV2FybmluZyA9IFRydWUKCiAgICBkZWYgZ2V0RWZmZWN0aXZlTGV2ZWwoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgR2V0IHRoZSBlZmZlY3RpdmUgbGV2ZWwgZm9yIHRoaXMgbG9nZ2VyLgoKICAgICAgICBMb29wIHRocm91Z2ggdGhpcyBsb2dnZXIgYW5kIGl0cyBwYXJlbnRzIGluIHRoZSBsb2dnZXIgaGllcmFyY2h5LAogICAgICAgIGxvb2tpbmcgZm9yIGEgbm9uLXplcm8gbG9nZ2luZyBsZXZlbC4gUmV0dXJuIHRoZSBmaXJzdCBvbmUgZm91bmQuCiAgICAgICAgIiIiCiAgICAgICAgbG9nZ2VyID0gc2VsZgogICAgICAgIHdoaWxlIGxvZ2dlcjoKICAgICAgICAgICAgaWYgbG9nZ2VyLmxldmVsOgogICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2dlci5sZXZlbAogICAgICAgICAgICBsb2dnZXIgPSBsb2dnZXIucGFyZW50CiAgICAgICAgcmV0dXJuIE5PVFNFVAoKICAgIGRlZiBpc0VuYWJsZWRGb3Ioc2VsZiwgbGV2ZWwpOgogICAgICAgICIiIgogICAgICAgIElzIHRoaXMgbG9nZ2VyIGVuYWJsZWQgZm9yIGxldmVsICdsZXZlbCc/CiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5kaXNhYmxlZDoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhY2hlW2xldmVsXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgX2FjcXVpcmVMb2NrKCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWYgc2VsZi5tYW5hZ2VyLmRpc2FibGUgPj0gbGV2ZWw6CiAgICAgICAgICAgICAgICAgICAgaXNfZW5hYmxlZCA9IHNlbGYuX2NhY2hlW2xldmVsXSA9IEZhbHNlCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlzX2VuYWJsZWQgPSBzZWxmLl9jYWNoZVtsZXZlbF0gPSAoCiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsID49IHNlbGYuZ2V0RWZmZWN0aXZlTGV2ZWwoKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIF9yZWxlYXNlTG9jaygpCiAgICAgICAgICAgIHJldHVybiBpc19lbmFibGVkCgogICAgZGVmIGdldENoaWxkKHNlbGYsIHN1ZmZpeCk6CiAgICAgICAgIiIiCiAgICAgICAgR2V0IGEgbG9nZ2VyIHdoaWNoIGlzIGEgZGVzY2VuZGFudCB0byB0aGlzIG9uZS4KCiAgICAgICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCwgc3VjaCB0aGF0CgogICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdhYmMnKS5nZXRDaGlsZCgnZGVmLmdoaScpCgogICAgICAgIGlzIHRoZSBzYW1lIGFzCgogICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdhYmMuZGVmLmdoaScpCgogICAgICAgIEl0J3MgdXNlZnVsLCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgcGFyZW50IGxvZ2dlciBpcyBuYW1lZCB1c2luZwogICAgICAgIF9fbmFtZV9fIHJhdGhlciB0aGFuIGEgbGl0ZXJhbCBzdHJpbmcuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5yb290IGlzIG5vdCBzZWxmOgogICAgICAgICAgICBzdWZmaXggPSAnLicuam9pbigoc2VsZi5uYW1lLCBzdWZmaXgpKQogICAgICAgIHJldHVybiBzZWxmLm1hbmFnZXIuZ2V0TG9nZ2VyKHN1ZmZpeCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5nZXRFZmZlY3RpdmVMZXZlbCgpKQogICAgICAgIHJldHVybiAnPCVzICVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBsZXZlbCkKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICBpZiBnZXRMb2dnZXIoc2VsZi5uYW1lKSBpcyBub3Qgc2VsZjoKICAgICAgICAgICAgaW1wb3J0IHBpY2tsZQogICAgICAgICAgICByYWlzZSBwaWNrbGUuUGlja2xpbmdFcnJvcignbG9nZ2VyIGNhbm5vdCBiZSBwaWNrbGVkJykKICAgICAgICByZXR1cm4gZ2V0TG9nZ2VyLCAoc2VsZi5uYW1lLCkKCgpjbGFzcyBSb290TG9nZ2VyKExvZ2dlcik6CiAgICAiIiIKICAgIEEgcm9vdCBsb2dnZXIgaXMgbm90IHRoYXQgZGlmZmVyZW50IHRvIGFueSBvdGhlciBsb2dnZXIsIGV4Y2VwdCB0aGF0CiAgICBpdCBtdXN0IGhhdmUgYSBsb2dnaW5nIGxldmVsIGFuZCB0aGVyZSBpcyBvbmx5IG9uZSBpbnN0YW5jZSBvZiBpdCBpbgogICAgdGhlIGhpZXJhcmNoeS4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxldmVsKToKICAgICAgICAiIiIKICAgICAgICBJbml0aWFsaXplIHRoZSBsb2dnZXIgd2l0aCB0aGUgbmFtZSAicm9vdCIuCiAgICAgICAgIiIiCiAgICAgICAgTG9nZ2VyLl9faW5pdF9fKHNlbGYsICJyb290IiwgbGV2ZWwpCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGdldExvZ2dlciwgKCkKCl9sb2dnZXJDbGFzcyA9IExvZ2dlcgoKY2xhc3MgTG9nZ2VyQWRhcHRlcihvYmplY3QpOgogICAgIiIiCiAgICBBbiBhZGFwdGVyIGZvciBsb2dnZXJzIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBzcGVjaWZ5IGNvbnRleHR1YWwKICAgIGluZm9ybWF0aW9uIGluIGxvZ2dpbmcgb3V0cHV0LgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgZXh0cmE9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgYWRhcHRlciB3aXRoIGEgbG9nZ2VyIGFuZCBhIGRpY3QtbGlrZSBvYmplY3Qgd2hpY2gKICAgICAgICBwcm92aWRlcyBjb250ZXh0dWFsIGluZm9ybWF0aW9uLiBUaGlzIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBhbGxvd3MKICAgICAgICBlYXN5IHN0YWNraW5nIG9mIExvZ2dlckFkYXB0ZXJzLCBpZiBzbyBkZXNpcmVkLgoKICAgICAgICBZb3UgY2FuIGVmZmVjdGl2ZWx5IHBhc3Mga2V5d29yZCBhcmd1bWVudHMgYXMgc2hvd24gaW4gdGhlCiAgICAgICAgZm9sbG93aW5nIGV4YW1wbGU6CgogICAgICAgIGFkYXB0ZXIgPSBMb2dnZXJBZGFwdGVyKHNvbWVMb2dnZXIsIGRpY3QocDE9djEsIHAyPSJ2MiIpKQogICAgICAgICIiIgogICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAgICAgICAgc2VsZi5leHRyYSA9IGV4dHJhCgogICAgZGVmIHByb2Nlc3Moc2VsZiwgbXNnLCBrd2FyZ3MpOgogICAgICAgICIiIgogICAgICAgIFByb2Nlc3MgdGhlIGxvZ2dpbmcgbWVzc2FnZSBhbmQga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGluIHRvCiAgICAgICAgYSBsb2dnaW5nIGNhbGwgdG8gaW5zZXJ0IGNvbnRleHR1YWwgaW5mb3JtYXRpb24uIFlvdSBjYW4gZWl0aGVyCiAgICAgICAgbWFuaXB1bGF0ZSB0aGUgbWVzc2FnZSBpdHNlbGYsIHRoZSBrZXl3b3JkIGFyZ3Mgb3IgYm90aC4gUmV0dXJuCiAgICAgICAgdGhlIG1lc3NhZ2UgYW5kIGt3YXJncyBtb2RpZmllZCAob3Igbm90KSB0byBzdWl0IHlvdXIgbmVlZHMuCgogICAgICAgIE5vcm1hbGx5LCB5b3UnbGwgb25seSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgb25lIG1ldGhvZCBpbiBhCiAgICAgICAgTG9nZ2VyQWRhcHRlciBzdWJjbGFzcyBmb3IgeW91ciBzcGVjaWZpYyBuZWVkcy4KICAgICAgICAiIiIKICAgICAgICBrd2FyZ3NbImV4dHJhIl0gPSBzZWxmLmV4dHJhCiAgICAgICAgcmV0dXJuIG1zZywga3dhcmdzCgogICAgIwogICAgIyBCb2lsZXJwbGF0ZSBjb252ZW5pZW5jZSBtZXRob2RzCiAgICAjCiAgICBkZWYgZGVidWcoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIgogICAgICAgIERlbGVnYXRlIGEgZGVidWcgY2FsbCB0byB0aGUgdW5kZXJseWluZyBsb2dnZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5sb2coREVCVUcsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiBpbmZvKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBEZWxlZ2F0ZSBhbiBpbmZvIGNhbGwgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyLgogICAgICAgICIiIgogICAgICAgIHNlbGYubG9nKElORk8sIG1zZywgKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiB3YXJuaW5nKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBEZWxlZ2F0ZSBhIHdhcm5pbmcgY2FsbCB0byB0aGUgdW5kZXJseWluZyBsb2dnZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5sb2coV0FSTklORywgbXNnLCAqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIHdhcm4oc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnd2FybicgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAgICAgInVzZSAnd2FybmluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICBzZWxmLndhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIGVycm9yKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBEZWxlZ2F0ZSBhbiBlcnJvciBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIGxvZ2dlci4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIGV4Y2VwdGlvbihzZWxmLCBtc2csICphcmdzLCBleGNfaW5mbz1UcnVlLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgRGVsZWdhdGUgYW4gZXhjZXB0aW9uIGNhbGwgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyLgogICAgICAgICIiIgogICAgICAgIHNlbGYubG9nKEVSUk9SLCBtc2csICphcmdzLCBleGNfaW5mbz1leGNfaW5mbywgKiprd2FyZ3MpCgogICAgZGVmIGNyaXRpY2FsKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBEZWxlZ2F0ZSBhIGNyaXRpY2FsIGNhbGwgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyLgogICAgICAgICIiIgogICAgICAgIHNlbGYubG9nKENSSVRJQ0FMLCBtc2csICphcmdzLCAqKmt3YXJncykKCiAgICBkZWYgbG9nKHNlbGYsIGxldmVsLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgRGVsZWdhdGUgYSBsb2cgY2FsbCB0byB0aGUgdW5kZXJseWluZyBsb2dnZXIsIGFmdGVyIGFkZGluZwogICAgICAgIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gZnJvbSB0aGlzIGFkYXB0ZXIgaW5zdGFuY2UuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5pc0VuYWJsZWRGb3IobGV2ZWwpOgogICAgICAgICAgICBtc2csIGt3YXJncyA9IHNlbGYucHJvY2Vzcyhtc2csIGt3YXJncykKICAgICAgICAgICAgc2VsZi5sb2dnZXIubG9nKGxldmVsLCBtc2csICphcmdzLCAqKmt3YXJncykKCiAgICBkZWYgaXNFbmFibGVkRm9yKHNlbGYsIGxldmVsKToKICAgICAgICAiIiIKICAgICAgICBJcyB0aGlzIGxvZ2dlciBlbmFibGVkIGZvciBsZXZlbCAnbGV2ZWwnPwogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLmxvZ2dlci5pc0VuYWJsZWRGb3IobGV2ZWwpCgogICAgZGVmIHNldExldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAiIiIKICAgICAgICBTZXQgdGhlIHNwZWNpZmllZCBsZXZlbCBvbiB0aGUgdW5kZXJseWluZyBsb2dnZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5sb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCgogICAgZGVmIGdldEVmZmVjdGl2ZUxldmVsKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIEdldCB0aGUgZWZmZWN0aXZlIGxldmVsIGZvciB0aGUgdW5kZXJseWluZyBsb2dnZXIuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYubG9nZ2VyLmdldEVmZmVjdGl2ZUxldmVsKCkKCiAgICBkZWYgaGFzSGFuZGxlcnMoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgU2VlIGlmIHRoZSB1bmRlcmx5aW5nIGxvZ2dlciBoYXMgYW55IGhhbmRsZXJzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLmxvZ2dlci5oYXNIYW5kbGVycygpCgogICAgZGVmIF9sb2coc2VsZiwgbGV2ZWwsIG1zZywgYXJncywgZXhjX2luZm89Tm9uZSwgZXh0cmE9Tm9uZSwgc3RhY2tfaW5mbz1GYWxzZSk6CiAgICAgICAgIiIiCiAgICAgICAgTG93LWxldmVsIGxvZyBpbXBsZW1lbnRhdGlvbiwgcHJveGllZCB0byBhbGxvdyBuZXN0ZWQgbG9nZ2VyIGFkYXB0ZXJzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLmxvZ2dlci5fbG9nKAogICAgICAgICAgICBsZXZlbCwKICAgICAgICAgICAgbXNnLAogICAgICAgICAgICBhcmdzLAogICAgICAgICAgICBleGNfaW5mbz1leGNfaW5mbywKICAgICAgICAgICAgZXh0cmE9ZXh0cmEsCiAgICAgICAgICAgIHN0YWNrX2luZm89c3RhY2tfaW5mbywKICAgICAgICApCgogICAgQHByb3BlcnR5CiAgICBkZWYgbWFuYWdlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5sb2dnZXIubWFuYWdlcgoKICAgIEBtYW5hZ2VyLnNldHRlcgogICAgZGVmIG1hbmFnZXIoc2VsZiwgdmFsdWUpOgogICAgICAgIHNlbGYubG9nZ2VyLm1hbmFnZXIgPSB2YWx1ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYubG9nZ2VyLm5hbWUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgbG9nZ2VyID0gc2VsZi5sb2dnZXIKICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGxvZ2dlci5uYW1lLCBsZXZlbCkKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKEdlbmVyaWNBbGlhcykKCnJvb3QgPSBSb290TG9nZ2VyKFdBUk5JTkcpCkxvZ2dlci5yb290ID0gcm9vdApMb2dnZXIubWFuYWdlciA9IE1hbmFnZXIoTG9nZ2VyLnJvb3QpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ29uZmlndXJhdGlvbiBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZGVmIGJhc2ljQ29uZmlnKCoqa3dhcmdzKToKICAgICIiIgogICAgRG8gYmFzaWMgY29uZmlndXJhdGlvbiBmb3IgdGhlIGxvZ2dpbmcgc3lzdGVtLgoKICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGlmIHRoZSByb290IGxvZ2dlciBhbHJlYWR5IGhhcyBoYW5kbGVycwogICAgY29uZmlndXJlZCwgdW5sZXNzIHRoZSBrZXl3b3JkIGFyZ3VtZW50ICpmb3JjZSogaXMgc2V0IHRvIGBgVHJ1ZWBgLgogICAgSXQgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgaW50ZW5kZWQgZm9yIHVzZSBieSBzaW1wbGUgc2NyaXB0cwogICAgdG8gZG8gb25lLXNob3QgY29uZmlndXJhdGlvbiBvZiB0aGUgbG9nZ2luZyBwYWNrYWdlLgoKICAgIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBjcmVhdGUgYSBTdHJlYW1IYW5kbGVyIHdoaWNoIHdyaXRlcyB0bwogICAgc3lzLnN0ZGVyciwgc2V0IGEgZm9ybWF0dGVyIHVzaW5nIHRoZSBCQVNJQ19GT1JNQVQgZm9ybWF0IHN0cmluZywgYW5kCiAgICBhZGQgdGhlIGhhbmRsZXIgdG8gdGhlIHJvb3QgbG9nZ2VyLgoKICAgIEEgbnVtYmVyIG9mIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIG1heSBiZSBzcGVjaWZpZWQsIHdoaWNoIGNhbiBhbHRlcgogICAgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgoKICAgIGZpbGVuYW1lICBTcGVjaWZpZXMgdGhhdCBhIEZpbGVIYW5kbGVyIGJlIGNyZWF0ZWQsIHVzaW5nIHRoZSBzcGVjaWZpZWQKICAgICAgICAgICAgICBmaWxlbmFtZSwgcmF0aGVyIHRoYW4gYSBTdHJlYW1IYW5kbGVyLgogICAgZmlsZW1vZGUgIFNwZWNpZmllcyB0aGUgbW9kZSB0byBvcGVuIHRoZSBmaWxlLCBpZiBmaWxlbmFtZSBpcyBzcGVjaWZpZWQKICAgICAgICAgICAgICAoaWYgZmlsZW1vZGUgaXMgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvICdhJykuCiAgICBmb3JtYXQgICAgVXNlIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZyBmb3IgdGhlIGhhbmRsZXIuCiAgICBkYXRlZm10ICAgVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZS90aW1lIGZvcm1hdC4KICAgIHN0eWxlICAgICBJZiBhIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkLCB1c2UgdGhpcyB0byBzcGVjaWZ5IHRoZQogICAgICAgICAgICAgIHR5cGUgb2YgZm9ybWF0IHN0cmluZyAocG9zc2libGUgdmFsdWVzICclJywgJ3snLCAnJCcsIGZvcgogICAgICAgICAgICAgICUtZm9ybWF0dGluZywgOm1ldGg6YHN0ci5mb3JtYXRgIGFuZCA6Y2xhc3M6YHN0cmluZy5UZW1wbGF0ZWAKICAgICAgICAgICAgICAtIGRlZmF1bHRzIHRvICclJykuCiAgICBsZXZlbCAgICAgU2V0IHRoZSByb290IGxvZ2dlciBsZXZlbCB0byB0aGUgc3BlY2lmaWVkIGxldmVsLgogICAgc3RyZWFtICAgIFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSBTdHJlYW1IYW5kbGVyLiBOb3RlCiAgICAgICAgICAgICAgdGhhdCB0aGlzIGFyZ3VtZW50IGlzIGluY29tcGF0aWJsZSB3aXRoICdmaWxlbmFtZScgLSBpZiBib3RoCiAgICAgICAgICAgICAgYXJlIHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuCiAgICBoYW5kbGVycyAgSWYgc3BlY2lmaWVkLCB0aGlzIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAgICBoYW5kbGVycywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgcm9vdCBoYW5kbGVyLiBBbnkgaGFuZGxlcgogICAgICAgICAgICAgIGluIHRoZSBsaXN0IHdoaWNoIGRvZXMgbm90IGhhdmUgYSBmb3JtYXR0ZXIgYXNzaWduZWQgd2lsbCBiZQogICAgICAgICAgICAgIGFzc2lnbmVkIHRoZSBmb3JtYXR0ZXIgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgogICAgZm9yY2UgICAgIElmIHRoaXMga2V5d29yZCAgaXMgc3BlY2lmaWVkIGFzIHRydWUsIGFueSBleGlzdGluZyBoYW5kbGVycwogICAgICAgICAgICAgIGF0dGFjaGVkIHRvIHRoZSByb290IGxvZ2dlciBhcmUgcmVtb3ZlZCBhbmQgY2xvc2VkLCBiZWZvcmUKICAgICAgICAgICAgICBjYXJyeWluZyBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gYXMgc3BlY2lmaWVkIGJ5IHRoZSBvdGhlcgogICAgICAgICAgICAgIGFyZ3VtZW50cy4KICAgIGVuY29kaW5nICBJZiBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBhIGZpbGVuYW1lLCB0aGlzIGVuY29kaW5nIGlzIHBhc3NlZCB0bwogICAgICAgICAgICAgIHRoZSBjcmVhdGVkIEZpbGVIYW5kbGVyLCBjYXVzaW5nIGl0IHRvIGJlIHVzZWQgd2hlbiB0aGUgZmlsZSBpcwogICAgICAgICAgICAgIG9wZW5lZC4KICAgIGVycm9ycyAgICBJZiBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBhIGZpbGVuYW1lLCB0aGlzIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUKICAgICAgICAgICAgICBjcmVhdGVkIEZpbGVIYW5kbGVyLCBjYXVzaW5nIGl0IHRvIGJlIHVzZWQgd2hlbiB0aGUgZmlsZSBpcwogICAgICAgICAgICAgIG9wZW5lZCBpbiB0ZXh0IG1vZGUuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzCiAgICAgICAgICAgICAgYGJhY2tzbGFzaHJlcGxhY2VgLgoKICAgIE5vdGUgdGhhdCB5b3UgY291bGQgc3BlY2lmeSBhIHN0cmVhbSBjcmVhdGVkIHVzaW5nIG9wZW4oZmlsZW5hbWUsIG1vZGUpCiAgICByYXRoZXIgdGhhbiBwYXNzaW5nIHRoZSBmaWxlbmFtZSBhbmQgbW9kZSBpbi4gSG93ZXZlciwgaXQgc2hvdWxkIGJlCiAgICByZW1lbWJlcmVkIHRoYXQgU3RyZWFtSGFuZGxlciBkb2VzIG5vdCBjbG9zZSBpdHMgc3RyZWFtIChzaW5jZSBpdCBtYXkgYmUKICAgIHVzaW5nIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVyciksIHdoZXJlYXMgRmlsZUhhbmRsZXIgY2xvc2VzIGl0cyBzdHJlYW0KICAgIHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgYGBzdHlsZWBgIHBhcmFtZXRlci4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlIGBgaGFuZGxlcnNgYCBwYXJhbWV0ZXIuIEEgYGBWYWx1ZUVycm9yYGAgaXMgbm93IHRocm93biBmb3IKICAgICAgIGluY29tcGF0aWJsZSBhcmd1bWVudHMgKGUuZy4gYGBoYW5kbGVyc2BgIHNwZWNpZmllZCB0b2dldGhlciB3aXRoCiAgICAgICBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgLCBvciBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgIHNwZWNpZmllZAogICAgICAgdG9nZXRoZXIgd2l0aCBgYHN0cmVhbWBgLCBvciBgYGhhbmRsZXJzYGAgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGgKICAgICAgIGBgc3RyZWFtYGAuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjgKICAgICAgIEFkZGVkIHRoZSBgYGZvcmNlYGAgcGFyYW1ldGVyLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy45CiAgICAgICBBZGRlZCB0aGUgYGBlbmNvZGluZ2BgIGFuZCBgYGVycm9yc2BgIHBhcmFtZXRlcnMuCiAgICAiIiIKICAgICMgQWRkIHRocmVhZCBzYWZldHkgaW4gY2FzZSBzb21lb25lIG1pc3Rha2VubHkgY2FsbHMKICAgICMgYmFzaWNDb25maWcoKSBmcm9tIG11bHRpcGxlIHRocmVhZHMKICAgIF9hY3F1aXJlTG9jaygpCiAgICB0cnk6CiAgICAgICAgZm9yY2UgPSBrd2FyZ3MucG9wKCdmb3JjZScsIEZhbHNlKQogICAgICAgIGVuY29kaW5nID0ga3dhcmdzLnBvcCgnZW5jb2RpbmcnLCBOb25lKQogICAgICAgIGVycm9ycyA9IGt3YXJncy5wb3AoJ2Vycm9ycycsICdiYWNrc2xhc2hyZXBsYWNlJykKICAgICAgICBpZiBmb3JjZToKICAgICAgICAgICAgZm9yIGggaW4gcm9vdC5oYW5kbGVyc1s6XToKICAgICAgICAgICAgICAgIHJvb3QucmVtb3ZlSGFuZGxlcihoKQogICAgICAgICAgICAgICAgaC5jbG9zZSgpCiAgICAgICAgaWYgbGVuKHJvb3QuaGFuZGxlcnMpID09IDA6CiAgICAgICAgICAgIGhhbmRsZXJzID0ga3dhcmdzLnBvcCgiaGFuZGxlcnMiLCBOb25lKQogICAgICAgICAgICBpZiBoYW5kbGVycyBpcyBOb25lOgogICAgICAgICAgICAgICAgaWYgInN0cmVhbSIgaW4ga3dhcmdzIGFuZCAiZmlsZW5hbWUiIGluIGt3YXJnczoKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCInc3RyZWFtJyBhbmQgJ2ZpbGVuYW1lJyBzaG91bGQgbm90IGJlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZWQgdG9nZXRoZXIiKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgInN0cmVhbSIgaW4ga3dhcmdzIG9yICJmaWxlbmFtZSIgaW4ga3dhcmdzOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIidzdHJlYW0nIG9yICdmaWxlbmFtZScgc2hvdWxkIG5vdCBiZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggJ2hhbmRsZXJzJyIpCiAgICAgICAgICAgIGlmIGhhbmRsZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGt3YXJncy5wb3AoImZpbGVuYW1lIiwgTm9uZSkKICAgICAgICAgICAgICAgIG1vZGUgPSBrd2FyZ3MucG9wKCJmaWxlbW9kZSIsICdhJykKICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lOgogICAgICAgICAgICAgICAgICAgIGlmICdiJyBpbiBtb2RlOgogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBpby50ZXh0X2VuY29kaW5nKGVuY29kaW5nKQogICAgICAgICAgICAgICAgICAgIGggPSBGaWxlSGFuZGxlcihmaWxlbmFtZSwgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IGt3YXJncy5wb3AoInN0cmVhbSIsIE5vbmUpCiAgICAgICAgICAgICAgICAgICAgaCA9IFN0cmVhbUhhbmRsZXIoc3RyZWFtKQogICAgICAgICAgICAgICAgaGFuZGxlcnMgPSBbaF0KICAgICAgICAgICAgZGZzID0ga3dhcmdzLnBvcCgiZGF0ZWZtdCIsIE5vbmUpCiAgICAgICAgICAgIHN0eWxlID0ga3dhcmdzLnBvcCgic3R5bGUiLCAnJScpCiAgICAgICAgICAgIGlmIHN0eWxlIG5vdCBpbiBfU1RZTEVTOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU3R5bGUgbXVzdCBiZSBvbmUgb2Y6ICVzJyAlICcsJy5qb2luKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfU1RZTEVTLmtleXMoKSkpCiAgICAgICAgICAgIGZzID0ga3dhcmdzLnBvcCgiZm9ybWF0IiwgX1NUWUxFU1tzdHlsZV1bMV0pCiAgICAgICAgICAgIGZtdCA9IEZvcm1hdHRlcihmcywgZGZzLCBzdHlsZSkKICAgICAgICAgICAgZm9yIGggaW4gaGFuZGxlcnM6CiAgICAgICAgICAgICAgICBpZiBoLmZvcm1hdHRlciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIGguc2V0Rm9ybWF0dGVyKGZtdCkKICAgICAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihoKQogICAgICAgICAgICBsZXZlbCA9IGt3YXJncy5wb3AoImxldmVsIiwgTm9uZSkKICAgICAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByb290LnNldExldmVsKGxldmVsKQogICAgICAgICAgICBpZiBrd2FyZ3M6CiAgICAgICAgICAgICAgICBrZXlzID0gJywgJy5qb2luKGt3YXJncy5rZXlzKCkpCiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbmlzZWQgYXJndW1lbnQocyk6ICVzJyAlIGtleXMpCiAgICBmaW5hbGx5OgogICAgICAgIF9yZWxlYXNlTG9jaygpCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVXRpbGl0eSBmdW5jdGlvbnMgYXQgbW9kdWxlIGxldmVsLgojIEJhc2ljYWxseSBkZWxlZ2F0ZSBldmVyeXRoaW5nIHRvIHRoZSByb290IGxvZ2dlci4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZGVmIGdldExvZ2dlcihuYW1lPU5vbmUpOgogICAgIiIiCiAgICBSZXR1cm4gYSBsb2dnZXIgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUsIGNyZWF0aW5nIGl0IGlmIG5lY2Vzc2FyeS4KCiAgICBJZiBubyBuYW1lIGlzIHNwZWNpZmllZCwgcmV0dXJuIHRoZSByb290IGxvZ2dlci4KICAgICIiIgogICAgaWYgbm90IG5hbWUgb3IgaXNpbnN0YW5jZShuYW1lLCBzdHIpIGFuZCBuYW1lID09IHJvb3QubmFtZToKICAgICAgICByZXR1cm4gcm9vdAogICAgcmV0dXJuIExvZ2dlci5tYW5hZ2VyLmdldExvZ2dlcihuYW1lKQoKZGVmIGNyaXRpY2FsKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICIiIgogICAgTG9nIGEgbWVzc2FnZSB3aXRoIHNldmVyaXR5ICdDUklUSUNBTCcgb24gdGhlIHJvb3QgbG9nZ2VyLiBJZiB0aGUgbG9nZ2VyCiAgICBoYXMgbm8gaGFuZGxlcnMsIGNhbGwgYmFzaWNDb25maWcoKSB0byBhZGQgYSBjb25zb2xlIGhhbmRsZXIgd2l0aCBhCiAgICBwcmUtZGVmaW5lZCBmb3JtYXQuCiAgICAiIiIKICAgIGlmIGxlbihyb290LmhhbmRsZXJzKSA9PSAwOgogICAgICAgIGJhc2ljQ29uZmlnKCkKICAgIHJvb3QuY3JpdGljYWwobXNnLCAqYXJncywgKiprd2FyZ3MpCgpkZWYgZmF0YWwobXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgIiIiCiAgICBEb24ndCB1c2UgdGhpcyBmdW5jdGlvbiwgdXNlIGNyaXRpY2FsKCkgaW5zdGVhZC4KICAgICIiIgogICAgY3JpdGljYWwobXNnLCAqYXJncywgKiprd2FyZ3MpCgpkZWYgZXJyb3IobXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgIiIiCiAgICBMb2cgYSBtZXNzYWdlIHdpdGggc2V2ZXJpdHkgJ0VSUk9SJyBvbiB0aGUgcm9vdCBsb2dnZXIuIElmIHRoZSBsb2dnZXIgaGFzCiAgICBubyBoYW5kbGVycywgY2FsbCBiYXNpY0NvbmZpZygpIHRvIGFkZCBhIGNvbnNvbGUgaGFuZGxlciB3aXRoIGEgcHJlLWRlZmluZWQKICAgIGZvcm1hdC4KICAgICIiIgogICAgaWYgbGVuKHJvb3QuaGFuZGxlcnMpID09IDA6CiAgICAgICAgYmFzaWNDb25maWcoKQogICAgcm9vdC5lcnJvcihtc2csICphcmdzLCAqKmt3YXJncykKCmRlZiBleGNlcHRpb24obXNnLCAqYXJncywgZXhjX2luZm89VHJ1ZSwgKiprd2FyZ3MpOgogICAgIiIiCiAgICBMb2cgYSBtZXNzYWdlIHdpdGggc2V2ZXJpdHkgJ0VSUk9SJyBvbiB0aGUgcm9vdCBsb2dnZXIsIHdpdGggZXhjZXB0aW9uCiAgICBpbmZvcm1hdGlvbi4gSWYgdGhlIGxvZ2dlciBoYXMgbm8gaGFuZGxlcnMsIGJhc2ljQ29uZmlnKCkgaXMgY2FsbGVkIHRvIGFkZAogICAgYSBjb25zb2xlIGhhbmRsZXIgd2l0aCBhIHByZS1kZWZpbmVkIGZvcm1hdC4KICAgICIiIgogICAgZXJyb3IobXNnLCAqYXJncywgZXhjX2luZm89ZXhjX2luZm8sICoqa3dhcmdzKQoKZGVmIHdhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgIiIiCiAgICBMb2cgYSBtZXNzYWdlIHdpdGggc2V2ZXJpdHkgJ1dBUk5JTkcnIG9uIHRoZSByb290IGxvZ2dlci4gSWYgdGhlIGxvZ2dlciBoYXMKICAgIG5vIGhhbmRsZXJzLCBjYWxsIGJhc2ljQ29uZmlnKCkgdG8gYWRkIGEgY29uc29sZSBoYW5kbGVyIHdpdGggYSBwcmUtZGVmaW5lZAogICAgZm9ybWF0LgogICAgIiIiCiAgICBpZiBsZW4ocm9vdC5oYW5kbGVycykgPT0gMDoKICAgICAgICBiYXNpY0NvbmZpZygpCiAgICByb290Lndhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCgpkZWYgd2Fybihtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICB3YXJuaW5ncy53YXJuKCJUaGUgJ3dhcm4nIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsICIKICAgICAgICAidXNlICd3YXJuaW5nJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKCmRlZiBpbmZvKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICIiIgogICAgTG9nIGEgbWVzc2FnZSB3aXRoIHNldmVyaXR5ICdJTkZPJyBvbiB0aGUgcm9vdCBsb2dnZXIuIElmIHRoZSBsb2dnZXIgaGFzCiAgICBubyBoYW5kbGVycywgY2FsbCBiYXNpY0NvbmZpZygpIHRvIGFkZCBhIGNvbnNvbGUgaGFuZGxlciB3aXRoIGEgcHJlLWRlZmluZWQKICAgIGZvcm1hdC4KICAgICIiIgogICAgaWYgbGVuKHJvb3QuaGFuZGxlcnMpID09IDA6CiAgICAgICAgYmFzaWNDb25maWcoKQogICAgcm9vdC5pbmZvKG1zZywgKmFyZ3MsICoqa3dhcmdzKQoKZGVmIGRlYnVnKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICIiIgogICAgTG9nIGEgbWVzc2FnZSB3aXRoIHNldmVyaXR5ICdERUJVRycgb24gdGhlIHJvb3QgbG9nZ2VyLiBJZiB0aGUgbG9nZ2VyIGhhcwogICAgbm8gaGFuZGxlcnMsIGNhbGwgYmFzaWNDb25maWcoKSB0byBhZGQgYSBjb25zb2xlIGhhbmRsZXIgd2l0aCBhIHByZS1kZWZpbmVkCiAgICBmb3JtYXQuCiAgICAiIiIKICAgIGlmIGxlbihyb290LmhhbmRsZXJzKSA9PSAwOgogICAgICAgIGJhc2ljQ29uZmlnKCkKICAgIHJvb3QuZGVidWcobXNnLCAqYXJncywgKiprd2FyZ3MpCgpkZWYgbG9nKGxldmVsLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAiIiIKICAgIExvZyAnbXNnICUgYXJncycgd2l0aCB0aGUgaW50ZWdlciBzZXZlcml0eSAnbGV2ZWwnIG9uIHRoZSByb290IGxvZ2dlci4gSWYKICAgIHRoZSBsb2dnZXIgaGFzIG5vIGhhbmRsZXJzLCBjYWxsIGJhc2ljQ29uZmlnKCkgdG8gYWRkIGEgY29uc29sZSBoYW5kbGVyCiAgICB3aXRoIGEgcHJlLWRlZmluZWQgZm9ybWF0LgogICAgIiIiCiAgICBpZiBsZW4ocm9vdC5oYW5kbGVycykgPT0gMDoKICAgICAgICBiYXNpY0NvbmZpZygpCiAgICByb290LmxvZyhsZXZlbCwgbXNnLCAqYXJncywgKiprd2FyZ3MpCgpkZWYgZGlzYWJsZShsZXZlbD1DUklUSUNBTCk6CiAgICAiIiIKICAgIERpc2FibGUgYWxsIGxvZ2dpbmcgY2FsbHMgb2Ygc2V2ZXJpdHkgJ2xldmVsJyBhbmQgYmVsb3cuCiAgICAiIiIKICAgIHJvb3QubWFuYWdlci5kaXNhYmxlID0gbGV2ZWwKICAgIHJvb3QubWFuYWdlci5fY2xlYXJfY2FjaGUoKQoKZGVmIHNodXRkb3duKGhhbmRsZXJMaXN0PV9oYW5kbGVyTGlzdCk6CiAgICAiIiIKICAgIFBlcmZvcm0gYW55IGNsZWFudXAgYWN0aW9ucyBpbiB0aGUgbG9nZ2luZyBzeXN0ZW0gKGUuZy4gZmx1c2hpbmcKICAgIGJ1ZmZlcnMpLgoKICAgIFNob3VsZCBiZSBjYWxsZWQgYXQgYXBwbGljYXRpb24gZXhpdC4KICAgICIiIgogICAgZm9yIHdyIGluIHJldmVyc2VkKGhhbmRsZXJMaXN0WzpdKToKICAgICAgICAjZXJyb3JzIG1pZ2h0IG9jY3VyLCBmb3IgZXhhbXBsZSwgaWYgZmlsZXMgYXJlIGxvY2tlZAogICAgICAgICN3ZSBqdXN0IGlnbm9yZSB0aGVtIGlmIHJhaXNlRXhjZXB0aW9ucyBpcyBub3Qgc2V0CiAgICAgICAgdHJ5OgogICAgICAgICAgICBoID0gd3IoKQogICAgICAgICAgICBpZiBoOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGguYWNxdWlyZSgpCiAgICAgICAgICAgICAgICAgICAgaC5mbHVzaCgpCiAgICAgICAgICAgICAgICAgICAgaC5jbG9zZSgpCiAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICMgSWdub3JlIGVycm9ycyB3aGljaCBtaWdodCBiZSBjYXVzZWQKICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaGFuZGxlcnMgaGF2ZSBiZWVuIGNsb3NlZCBidXQKICAgICAgICAgICAgICAgICAgICAjIHJlZmVyZW5jZXMgdG8gdGhlbSBhcmUgc3RpbGwgYXJvdW5kIGF0CiAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWNhdGlvbiBleGl0LgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgaC5yZWxlYXNlKCkKICAgICAgICBleGNlcHQ6ICMgaWdub3JlIGV2ZXJ5dGhpbmcsIGFzIHdlJ3JlIHNodXR0aW5nIGRvd24KICAgICAgICAgICAgaWYgcmFpc2VFeGNlcHRpb25zOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgI2Vsc2UsIHN3YWxsb3cKCiNMZXQncyB0cnkgYW5kIHNodXRkb3duIGF1dG9tYXRpY2FsbHkgb24gYXBwbGljYXRpb24gZXhpdC4uLgppbXBvcnQgYXRleGl0CmF0ZXhpdC5yZWdpc3RlcihzaHV0ZG93bikKCiMgTnVsbCBoYW5kbGVyCgpjbGFzcyBOdWxsSGFuZGxlcihIYW5kbGVyKToKICAgICIiIgogICAgVGhpcyBoYW5kbGVyIGRvZXMgbm90aGluZy4gSXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGF2b2lkIHRoZQogICAgIk5vIGhhbmRsZXJzIGNvdWxkIGJlIGZvdW5kIGZvciBsb2dnZXIgWFhYIiBvbmUtb2ZmIHdhcm5pbmcuIFRoaXMgaXMKICAgIGltcG9ydGFudCBmb3IgbGlicmFyeSBjb2RlLCB3aGljaCBtYXkgY29udGFpbiBjb2RlIHRvIGxvZyBldmVudHMuIElmIGEgdXNlcgogICAgb2YgdGhlIGxpYnJhcnkgZG9lcyBub3QgY29uZmlndXJlIGxvZ2dpbmcsIHRoZSBvbmUtb2ZmIHdhcm5pbmcgbWlnaHQgYmUKICAgIHByb2R1Y2VkOyB0byBhdm9pZCB0aGlzLCB0aGUgbGlicmFyeSBkZXZlbG9wZXIgc2ltcGx5IG5lZWRzIHRvIGluc3RhbnRpYXRlCiAgICBhIE51bGxIYW5kbGVyIGFuZCBhZGQgaXQgdG8gdGhlIHRvcC1sZXZlbCBsb2dnZXIgb2YgdGhlIGxpYnJhcnkgbW9kdWxlIG9yCiAgICBwYWNrYWdlLgogICAgIiIiCiAgICBkZWYgaGFuZGxlKHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiU3R1Yi4iIiIKCiAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICIiIlN0dWIuIiIiCgogICAgZGVmIGNyZWF0ZUxvY2soc2VsZik6CiAgICAgICAgc2VsZi5sb2NrID0gTm9uZQoKICAgIGRlZiBfYXRfZm9ya19yZWluaXQoc2VsZik6CiAgICAgICAgcGFzcwoKIyBXYXJuaW5ncyBpbnRlZ3JhdGlvbgoKX3dhcm5pbmdzX3Nob3d3YXJuaW5nID0gTm9uZQoKZGVmIF9zaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgogICAgIiIiCiAgICBJbXBsZW1lbnRhdGlvbiBvZiBzaG93d2FybmluZ3Mgd2hpY2ggcmVkaXJlY3RzIHRvIGxvZ2dpbmcsIHdoaWNoIHdpbGwgZmlyc3QKICAgIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlsZSBwYXJhbWV0ZXIgaXMgTm9uZS4gSWYgYSBmaWxlIGlzIHNwZWNpZmllZCwgaXQgd2lsbAogICAgZGVsZWdhdGUgdG8gdGhlIG9yaWdpbmFsIHdhcm5pbmdzIGltcGxlbWVudGF0aW9uIG9mIHNob3d3YXJuaW5nLiBPdGhlcndpc2UsCiAgICBpdCB3aWxsIGNhbGwgd2FybmluZ3MuZm9ybWF0d2FybmluZyBhbmQgd2lsbCBsb2cgdGhlIHJlc3VsdGluZyBzdHJpbmcgdG8gYQogICAgd2FybmluZ3MgbG9nZ2VyIG5hbWVkICJweS53YXJuaW5ncyIgd2l0aCBsZXZlbCBsb2dnaW5nLldBUk5JTkcuCiAgICAiIiIKICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgX3dhcm5pbmdzX3Nob3d3YXJuaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfd2FybmluZ3Nfc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGUsIGxpbmUpCiAgICBlbHNlOgogICAgICAgIHMgPSB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKQogICAgICAgIGxvZ2dlciA9IGdldExvZ2dlcigicHkud2FybmluZ3MiKQogICAgICAgIGlmIG5vdCBsb2dnZXIuaGFuZGxlcnM6CiAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKE51bGxIYW5kbGVyKCkpCiAgICAgICAgIyBicG8tNDY1NTc6IExvZyBzdHIocykgYXMgbXNnIGluc3RlYWQgb2YgbG9nZ2VyLndhcm5pbmcoIiVzIiwgcykKICAgICAgICAjIHNpbmNlIHNvbWUgbG9nIGFnZ3JlZ2F0aW9uIHRvb2xzIGdyb3VwIGxvZ3MgYnkgdGhlIG1zZyBhcmcKICAgICAgICBsb2dnZXIud2FybmluZyhzdHIocykpCgpkZWYgY2FwdHVyZVdhcm5pbmdzKGNhcHR1cmUpOgogICAgIiIiCiAgICBJZiBjYXB0dXJlIGlzIHRydWUsIHJlZGlyZWN0IGFsbCB3YXJuaW5ncyB0byB0aGUgbG9nZ2luZyBwYWNrYWdlLgogICAgSWYgY2FwdHVyZSBpcyBGYWxzZSwgZW5zdXJlIHRoYXQgd2FybmluZ3MgYXJlIG5vdCByZWRpcmVjdGVkIHRvIGxvZ2dpbmcKICAgIGJ1dCB0byB0aGVpciBvcmlnaW5hbCBkZXN0aW5hdGlvbnMuCiAgICAiIiIKICAgIGdsb2JhbCBfd2FybmluZ3Nfc2hvd3dhcm5pbmcKICAgIGlmIGNhcHR1cmU6CiAgICAgICAgaWYgX3dhcm5pbmdzX3Nob3d3YXJuaW5nIGlzIE5vbmU6CiAgICAgICAgICAgIF93YXJuaW5nc19zaG93d2FybmluZyA9IHdhcm5pbmdzLnNob3d3YXJuaW5nCiAgICAgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gX3Nob3d3YXJuaW5nCiAgICBlbHNlOgogICAgICAgIGlmIF93YXJuaW5nc19zaG93d2FybmluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcgPSBfd2FybmluZ3Nfc2hvd3dhcm5pbmcKICAgICAgICAgICAgX3dhcm5pbmdzX3Nob3d3YXJuaW5nID0gTm9uZQpQSwMEFAAAAAAAAyCjVvY/eIbcjgAA3I4AABEAAABsb2dnaW5nL2NvbmZpZy5weSMgQ29weXJpZ2h0IDIwMDEtMjAxOSBieSBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIwojIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwojIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwKIyBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0CiMgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluCiMgc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBWaW5heSBTYWppcAojIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbgojIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uCiMgVklOQVkgU0FKSVAgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsIElOQ0xVRElORwojIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTAojIFZJTkFZIFNBSklQIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUgojIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUgojIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUCiMgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KCiIiIgpDb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBmb3IgdGhlIGxvZ2dpbmcgcGFja2FnZSBmb3IgUHl0aG9uLiBUaGUgY29yZSBwYWNrYWdlCmlzIGJhc2VkIG9uIFBFUCAyODIgYW5kIGNvbW1lbnRzIHRoZXJldG8gaW4gY29tcC5sYW5nLnB5dGhvbiwgYW5kIGluZmx1ZW5jZWQKYnkgQXBhY2hlJ3MgbG9nNGogc3lzdGVtLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCgpUbyB1c2UsIHNpbXBseSAnaW1wb3J0IGxvZ2dpbmcnIGFuZCBsb2cgYXdheSEKIiIiCgppbXBvcnQgZXJybm8KaW1wb3J0IGlvCmltcG9ydCBsb2dnaW5nCmltcG9ydCBsb2dnaW5nLmhhbmRsZXJzCmltcG9ydCByZQppbXBvcnQgc3RydWN0CmltcG9ydCB0aHJlYWRpbmcKaW1wb3J0IHRyYWNlYmFjawoKZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIKCgpERUZBVUxUX0xPR0dJTkdfQ09ORklHX1BPUlQgPSA5MDMwCgpSRVNFVF9FUlJPUiA9IGVycm5vLkVDT05OUkVTRVQKCiMKIyAgIFRoZSBmb2xsb3dpbmcgY29kZSBpbXBsZW1lbnRzIGEgc29ja2V0IGxpc3RlbmVyIGZvciBvbi10aGUtZmx5CiMgICByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZy4KIwojICAgX2xpc3RlbmVyIGhvbGRzIHRoZSBzZXJ2ZXIgb2JqZWN0IGRvaW5nIHRoZSBsaXN0ZW5pbmcKX2xpc3RlbmVyID0gTm9uZQoKZGVmIGZpbGVDb25maWcoZm5hbWUsIGRlZmF1bHRzPU5vbmUsIGRpc2FibGVfZXhpc3RpbmdfbG9nZ2Vycz1UcnVlLCBlbmNvZGluZz1Ob25lKToKICAgICIiIgogICAgUmVhZCB0aGUgbG9nZ2luZyBjb25maWd1cmF0aW9uIGZyb20gYSBDb25maWdQYXJzZXItZm9ybWF0IGZpbGUuCgogICAgVGhpcyBjYW4gYmUgY2FsbGVkIHNldmVyYWwgdGltZXMgZnJvbSBhbiBhcHBsaWNhdGlvbiwgYWxsb3dpbmcgYW4gZW5kIHVzZXIKICAgIHRoZSBhYmlsaXR5IHRvIHNlbGVjdCBmcm9tIHZhcmlvdXMgcHJlLWNhbm5lZCBjb25maWd1cmF0aW9ucyAoaWYgdGhlCiAgICBkZXZlbG9wZXIgcHJvdmlkZXMgYSBtZWNoYW5pc20gdG8gcHJlc2VudCB0aGUgY2hvaWNlcyBhbmQgbG9hZCB0aGUgY2hvc2VuCiAgICBjb25maWd1cmF0aW9uKS4KICAgICIiIgogICAgaW1wb3J0IGNvbmZpZ3BhcnNlcgoKICAgIGlmIGlzaW5zdGFuY2UoZm5hbWUsIGNvbmZpZ3BhcnNlci5SYXdDb25maWdQYXJzZXIpOgogICAgICAgIGNwID0gZm5hbWUKICAgIGVsc2U6CiAgICAgICAgY3AgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKGRlZmF1bHRzKQogICAgICAgIGlmIGhhc2F0dHIoZm5hbWUsICdyZWFkbGluZScpOgogICAgICAgICAgICBjcC5yZWFkX2ZpbGUoZm5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5jb2RpbmcgPSBpby50ZXh0X2VuY29kaW5nKGVuY29kaW5nKQogICAgICAgICAgICBjcC5yZWFkKGZuYW1lLCBlbmNvZGluZz1lbmNvZGluZykKCiAgICBmb3JtYXR0ZXJzID0gX2NyZWF0ZV9mb3JtYXR0ZXJzKGNwKQoKICAgICMgY3JpdGljYWwgc2VjdGlvbgogICAgbG9nZ2luZy5fYWNxdWlyZUxvY2soKQogICAgdHJ5OgogICAgICAgIF9jbGVhckV4aXN0aW5nSGFuZGxlcnMoKQoKICAgICAgICAjIEhhbmRsZXJzIGFkZCB0aGVtc2VsdmVzIHRvIGxvZ2dpbmcuX2hhbmRsZXJzCiAgICAgICAgaGFuZGxlcnMgPSBfaW5zdGFsbF9oYW5kbGVycyhjcCwgZm9ybWF0dGVycykKICAgICAgICBfaW5zdGFsbF9sb2dnZXJzKGNwLCBoYW5kbGVycywgZGlzYWJsZV9leGlzdGluZ19sb2dnZXJzKQogICAgZmluYWxseToKICAgICAgICBsb2dnaW5nLl9yZWxlYXNlTG9jaygpCgoKZGVmIF9yZXNvbHZlKG5hbWUpOgogICAgIiIiUmVzb2x2ZSBhIGRvdHRlZCBuYW1lIHRvIGEgZ2xvYmFsIG9iamVjdC4iIiIKICAgIG5hbWUgPSBuYW1lLnNwbGl0KCcuJykKICAgIHVzZWQgPSBuYW1lLnBvcCgwKQogICAgZm91bmQgPSBfX2ltcG9ydF9fKHVzZWQpCiAgICBmb3IgbiBpbiBuYW1lOgogICAgICAgIHVzZWQgPSB1c2VkICsgJy4nICsgbgogICAgICAgIHRyeToKICAgICAgICAgICAgZm91bmQgPSBnZXRhdHRyKGZvdW5kLCBuKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgX19pbXBvcnRfXyh1c2VkKQogICAgICAgICAgICBmb3VuZCA9IGdldGF0dHIoZm91bmQsIG4pCiAgICByZXR1cm4gZm91bmQKCmRlZiBfc3RyaXBfc3BhY2VzKGFsaXN0KToKICAgIHJldHVybiBtYXAoc3RyLnN0cmlwLCBhbGlzdCkKCmRlZiBfY3JlYXRlX2Zvcm1hdHRlcnMoY3ApOgogICAgIiIiQ3JlYXRlIGFuZCByZXR1cm4gZm9ybWF0dGVycyIiIgogICAgZmxpc3QgPSBjcFsiZm9ybWF0dGVycyJdWyJrZXlzIl0KICAgIGlmIG5vdCBsZW4oZmxpc3QpOgogICAgICAgIHJldHVybiB7fQogICAgZmxpc3QgPSBmbGlzdC5zcGxpdCgiLCIpCiAgICBmbGlzdCA9IF9zdHJpcF9zcGFjZXMoZmxpc3QpCiAgICBmb3JtYXR0ZXJzID0ge30KICAgIGZvciBmb3JtIGluIGZsaXN0OgogICAgICAgIHNlY3RuYW1lID0gImZvcm1hdHRlcl8lcyIgJSBmb3JtCiAgICAgICAgZnMgPSBjcC5nZXQoc2VjdG5hbWUsICJmb3JtYXQiLCByYXc9VHJ1ZSwgZmFsbGJhY2s9Tm9uZSkKICAgICAgICBkZnMgPSBjcC5nZXQoc2VjdG5hbWUsICJkYXRlZm10IiwgcmF3PVRydWUsIGZhbGxiYWNrPU5vbmUpCiAgICAgICAgc3RsID0gY3AuZ2V0KHNlY3RuYW1lLCAic3R5bGUiLCByYXc9VHJ1ZSwgZmFsbGJhY2s9JyUnKQogICAgICAgIGMgPSBsb2dnaW5nLkZvcm1hdHRlcgogICAgICAgIGNsYXNzX25hbWUgPSBjcFtzZWN0bmFtZV0uZ2V0KCJjbGFzcyIpCiAgICAgICAgaWYgY2xhc3NfbmFtZToKICAgICAgICAgICAgYyA9IF9yZXNvbHZlKGNsYXNzX25hbWUpCiAgICAgICAgZiA9IGMoZnMsIGRmcywgc3RsKQogICAgICAgIGZvcm1hdHRlcnNbZm9ybV0gPSBmCiAgICByZXR1cm4gZm9ybWF0dGVycwoKCmRlZiBfaW5zdGFsbF9oYW5kbGVycyhjcCwgZm9ybWF0dGVycyk6CiAgICAiIiJJbnN0YWxsIGFuZCByZXR1cm4gaGFuZGxlcnMiIiIKICAgIGhsaXN0ID0gY3BbImhhbmRsZXJzIl1bImtleXMiXQogICAgaWYgbm90IGxlbihobGlzdCk6CiAgICAgICAgcmV0dXJuIHt9CiAgICBobGlzdCA9IGhsaXN0LnNwbGl0KCIsIikKICAgIGhsaXN0ID0gX3N0cmlwX3NwYWNlcyhobGlzdCkKICAgIGhhbmRsZXJzID0ge30KICAgIGZpeHVwcyA9IFtdICNmb3IgaW50ZXItaGFuZGxlciByZWZlcmVuY2VzCiAgICBmb3IgaGFuZCBpbiBobGlzdDoKICAgICAgICBzZWN0aW9uID0gY3BbImhhbmRsZXJfJXMiICUgaGFuZF0KICAgICAgICBrbGFzcyA9IHNlY3Rpb25bImNsYXNzIl0KICAgICAgICBmbXQgPSBzZWN0aW9uLmdldCgiZm9ybWF0dGVyIiwgIiIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBrbGFzcyA9IGV2YWwoa2xhc3MsIHZhcnMobG9nZ2luZykpCiAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgTmFtZUVycm9yKToKICAgICAgICAgICAga2xhc3MgPSBfcmVzb2x2ZShrbGFzcykKICAgICAgICBhcmdzID0gc2VjdGlvbi5nZXQoImFyZ3MiLCAnKCknKQogICAgICAgIGFyZ3MgPSBldmFsKGFyZ3MsIHZhcnMobG9nZ2luZykpCiAgICAgICAga3dhcmdzID0gc2VjdGlvbi5nZXQoImt3YXJncyIsICd7fScpCiAgICAgICAga3dhcmdzID0gZXZhbChrd2FyZ3MsIHZhcnMobG9nZ2luZykpCiAgICAgICAgaCA9IGtsYXNzKCphcmdzLCAqKmt3YXJncykKICAgICAgICBoLm5hbWUgPSBoYW5kCiAgICAgICAgaWYgImxldmVsIiBpbiBzZWN0aW9uOgogICAgICAgICAgICBsZXZlbCA9IHNlY3Rpb25bImxldmVsIl0KICAgICAgICAgICAgaC5zZXRMZXZlbChsZXZlbCkKICAgICAgICBpZiBsZW4oZm10KToKICAgICAgICAgICAgaC5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyc1tmbXRdKQogICAgICAgIGlmIGlzc3ViY2xhc3Moa2xhc3MsIGxvZ2dpbmcuaGFuZGxlcnMuTWVtb3J5SGFuZGxlcik6CiAgICAgICAgICAgIHRhcmdldCA9IHNlY3Rpb24uZ2V0KCJ0YXJnZXQiLCAiIikKICAgICAgICAgICAgaWYgbGVuKHRhcmdldCk6ICN0aGUgdGFyZ2V0IGhhbmRsZXIgbWF5IG5vdCBiZSBsb2FkZWQgeWV0LCBzbyBrZWVwIGZvciBsYXRlci4uLgogICAgICAgICAgICAgICAgZml4dXBzLmFwcGVuZCgoaCwgdGFyZ2V0KSkKICAgICAgICBoYW5kbGVyc1toYW5kXSA9IGgKICAgICNub3cgYWxsIGhhbmRsZXJzIGFyZSBsb2FkZWQsIGZpeHVwIGludGVyLWhhbmRsZXIgcmVmZXJlbmNlcy4uLgogICAgZm9yIGgsIHQgaW4gZml4dXBzOgogICAgICAgIGguc2V0VGFyZ2V0KGhhbmRsZXJzW3RdKQogICAgcmV0dXJuIGhhbmRsZXJzCgpkZWYgX2hhbmRsZV9leGlzdGluZ19sb2dnZXJzKGV4aXN0aW5nLCBjaGlsZF9sb2dnZXJzLCBkaXNhYmxlX2V4aXN0aW5nKToKICAgICIiIgogICAgV2hlbiAocmUpY29uZmlndXJpbmcgbG9nZ2luZywgaGFuZGxlIGxvZ2dlcnMgd2hpY2ggd2VyZSBpbiB0aGUgcHJldmlvdXMKICAgIGNvbmZpZ3VyYXRpb24gYnV0IGFyZSBub3QgaW4gdGhlIG5ldyBjb25maWd1cmF0aW9uLiBUaGVyZSdzIG5vIHBvaW50CiAgICBkZWxldGluZyB0aGVtIGFzIG90aGVyIHRocmVhZHMgbWF5IGNvbnRpbnVlIHRvIGhvbGQgcmVmZXJlbmNlcyB0byB0aGVtOwogICAgYW5kIGJ5IGRpc2FibGluZyB0aGVtLCB5b3Ugc3RvcCB0aGVtIGRvaW5nIGFueSBsb2dnaW5nLgoKICAgIEhvd2V2ZXIsIGRvbid0IGRpc2FibGUgY2hpbGRyZW4gb2YgbmFtZWQgbG9nZ2VycywgYXMgdGhhdCdzIHByb2JhYmx5IG5vdAogICAgd2hhdCB3YXMgaW50ZW5kZWQgYnkgdGhlIHVzZXIuIEFsc28sIGFsbG93IGV4aXN0aW5nIGxvZ2dlcnMgdG8gTk9UIGJlCiAgICBkaXNhYmxlZCBpZiBkaXNhYmxlX2V4aXN0aW5nIGlzIGZhbHNlLgogICAgIiIiCiAgICByb290ID0gbG9nZ2luZy5yb290CiAgICBmb3IgbG9nIGluIGV4aXN0aW5nOgogICAgICAgIGxvZ2dlciA9IHJvb3QubWFuYWdlci5sb2dnZXJEaWN0W2xvZ10KICAgICAgICBpZiBsb2cgaW4gY2hpbGRfbG9nZ2VyczoKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobG9nZ2VyLCBsb2dnaW5nLlBsYWNlSG9sZGVyKToKICAgICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLk5PVFNFVCkKICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGVycyA9IFtdCiAgICAgICAgICAgICAgICBsb2dnZXIucHJvcGFnYXRlID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxvZ2dlci5kaXNhYmxlZCA9IGRpc2FibGVfZXhpc3RpbmcKCmRlZiBfaW5zdGFsbF9sb2dnZXJzKGNwLCBoYW5kbGVycywgZGlzYWJsZV9leGlzdGluZyk6CiAgICAiIiJDcmVhdGUgYW5kIGluc3RhbGwgbG9nZ2VycyIiIgoKICAgICMgY29uZmlndXJlIHRoZSByb290IGZpcnN0CiAgICBsbGlzdCA9IGNwWyJsb2dnZXJzIl1bImtleXMiXQogICAgbGxpc3QgPSBsbGlzdC5zcGxpdCgiLCIpCiAgICBsbGlzdCA9IGxpc3QoX3N0cmlwX3NwYWNlcyhsbGlzdCkpCiAgICBsbGlzdC5yZW1vdmUoInJvb3QiKQogICAgc2VjdGlvbiA9IGNwWyJsb2dnZXJfcm9vdCJdCiAgICByb290ID0gbG9nZ2luZy5yb290CiAgICBsb2cgPSByb290CiAgICBpZiAibGV2ZWwiIGluIHNlY3Rpb246CiAgICAgICAgbGV2ZWwgPSBzZWN0aW9uWyJsZXZlbCJdCiAgICAgICAgbG9nLnNldExldmVsKGxldmVsKQogICAgZm9yIGggaW4gcm9vdC5oYW5kbGVyc1s6XToKICAgICAgICByb290LnJlbW92ZUhhbmRsZXIoaCkKICAgIGhsaXN0ID0gc2VjdGlvblsiaGFuZGxlcnMiXQogICAgaWYgbGVuKGhsaXN0KToKICAgICAgICBobGlzdCA9IGhsaXN0LnNwbGl0KCIsIikKICAgICAgICBobGlzdCA9IF9zdHJpcF9zcGFjZXMoaGxpc3QpCiAgICAgICAgZm9yIGhhbmQgaW4gaGxpc3Q6CiAgICAgICAgICAgIGxvZy5hZGRIYW5kbGVyKGhhbmRsZXJzW2hhbmRdKQoKICAgICNhbmQgbm93IHRoZSBvdGhlcnMuLi4KICAgICN3ZSBkb24ndCB3YW50IHRvIGxvc2UgdGhlIGV4aXN0aW5nIGxvZ2dlcnMsCiAgICAjc2luY2Ugb3RoZXIgdGhyZWFkcyBtYXkgaGF2ZSBwb2ludGVycyB0byB0aGVtLgogICAgI2V4aXN0aW5nIGlzIHNldCB0byBjb250YWluIGFsbCBleGlzdGluZyBsb2dnZXJzLAogICAgI2FuZCBhcyB3ZSBnbyB0aHJvdWdoIHRoZSBuZXcgY29uZmlndXJhdGlvbiB3ZQogICAgI3JlbW92ZSBhbnkgd2hpY2ggYXJlIGNvbmZpZ3VyZWQuIEF0IHRoZSBlbmQsCiAgICAjd2hhdCdzIGxlZnQgaW4gZXhpc3RpbmcgaXMgdGhlIHNldCBvZiBsb2dnZXJzCiAgICAjd2hpY2ggd2VyZSBpbiB0aGUgcHJldmlvdXMgY29uZmlndXJhdGlvbiBidXQKICAgICN3aGljaCBhcmUgbm90IGluIHRoZSBuZXcgY29uZmlndXJhdGlvbi4KICAgIGV4aXN0aW5nID0gbGlzdChyb290Lm1hbmFnZXIubG9nZ2VyRGljdC5rZXlzKCkpCiAgICAjVGhlIGxpc3QgbmVlZHMgdG8gYmUgc29ydGVkIHNvIHRoYXQgd2UgY2FuCiAgICAjYXZvaWQgZGlzYWJsaW5nIGNoaWxkIGxvZ2dlcnMgb2YgZXhwbGljaXRseQogICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICN0byBmaW5kIHRoZSBjaGlsZCBsb2dnZXJzLgogICAgZXhpc3Rpbmcuc29ydCgpCiAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAjd2hpY2ggYXJlIGNoaWxkcmVuIG9mIG5hbWVkIGxvZ2dlcnMgaGVyZS4uLgogICAgY2hpbGRfbG9nZ2VycyA9IFtdCiAgICAjbm93IHNldCB1cCB0aGUgbmV3IG9uZXMuLi4KICAgIGZvciBsb2cgaW4gbGxpc3Q6CiAgICAgICAgc2VjdGlvbiA9IGNwWyJsb2dnZXJfJXMiICUgbG9nXQogICAgICAgIHFuID0gc2VjdGlvblsicXVhbG5hbWUiXQogICAgICAgIHByb3BhZ2F0ZSA9IHNlY3Rpb24uZ2V0aW50KCJwcm9wYWdhdGUiLCBmYWxsYmFjaz0xKQogICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKHFuKQogICAgICAgIGlmIHFuIGluIGV4aXN0aW5nOgogICAgICAgICAgICBpID0gZXhpc3RpbmcuaW5kZXgocW4pICsgMSAjIHN0YXJ0IHdpdGggdGhlIGVudHJ5IGFmdGVyIHFuCiAgICAgICAgICAgIHByZWZpeGVkID0gcW4gKyAiLiIKICAgICAgICAgICAgcGZsZW4gPSBsZW4ocHJlZml4ZWQpCiAgICAgICAgICAgIG51bV9leGlzdGluZyA9IGxlbihleGlzdGluZykKICAgICAgICAgICAgd2hpbGUgaSA8IG51bV9leGlzdGluZzoKICAgICAgICAgICAgICAgIGlmIGV4aXN0aW5nW2ldWzpwZmxlbl0gPT0gcHJlZml4ZWQ6CiAgICAgICAgICAgICAgICAgICAgY2hpbGRfbG9nZ2Vycy5hcHBlbmQoZXhpc3RpbmdbaV0pCiAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgZXhpc3RpbmcucmVtb3ZlKHFuKQogICAgICAgIGlmICJsZXZlbCIgaW4gc2VjdGlvbjoKICAgICAgICAgICAgbGV2ZWwgPSBzZWN0aW9uWyJsZXZlbCJdCiAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsZXZlbCkKICAgICAgICBmb3IgaCBpbiBsb2dnZXIuaGFuZGxlcnNbOl06CiAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCiAgICAgICAgbG9nZ2VyLnByb3BhZ2F0ZSA9IHByb3BhZ2F0ZQogICAgICAgIGxvZ2dlci5kaXNhYmxlZCA9IDAKICAgICAgICBobGlzdCA9IHNlY3Rpb25bImhhbmRsZXJzIl0KICAgICAgICBpZiBsZW4oaGxpc3QpOgogICAgICAgICAgICBobGlzdCA9IGhsaXN0LnNwbGl0KCIsIikKICAgICAgICAgICAgaGxpc3QgPSBfc3RyaXBfc3BhY2VzKGhsaXN0KQogICAgICAgICAgICBmb3IgaGFuZCBpbiBobGlzdDoKICAgICAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXJzW2hhbmRdKQoKICAgICNEaXNhYmxlIGFueSBvbGQgbG9nZ2Vycy4gVGhlcmUncyBubyBwb2ludCBkZWxldGluZwogICAgI3RoZW0gYXMgb3RoZXIgdGhyZWFkcyBtYXkgY29udGludWUgdG8gaG9sZCByZWZlcmVuY2VzCiAgICAjYW5kIGJ5IGRpc2FibGluZyB0aGVtLCB5b3Ugc3RvcCB0aGVtIGRvaW5nIGFueSBsb2dnaW5nLgogICAgI0hvd2V2ZXIsIGRvbid0IGRpc2FibGUgY2hpbGRyZW4gb2YgbmFtZWQgbG9nZ2VycywgYXMgdGhhdCdzCiAgICAjcHJvYmFibHkgbm90IHdoYXQgd2FzIGludGVuZGVkIGJ5IHRoZSB1c2VyLgogICAgI2ZvciBsb2cgaW4gZXhpc3Rpbmc6CiAgICAjICAgIGxvZ2dlciA9IHJvb3QubWFuYWdlci5sb2dnZXJEaWN0W2xvZ10KICAgICMgICAgaWYgbG9nIGluIGNoaWxkX2xvZ2dlcnM6CiAgICAjICAgICAgICBsb2dnZXIubGV2ZWwgPSBsb2dnaW5nLk5PVFNFVAogICAgIyAgICAgICAgbG9nZ2VyLmhhbmRsZXJzID0gW10KICAgICMgICAgICAgIGxvZ2dlci5wcm9wYWdhdGUgPSAxCiAgICAjICAgIGVsaWYgZGlzYWJsZV9leGlzdGluZ19sb2dnZXJzOgogICAgIyAgICAgICAgbG9nZ2VyLmRpc2FibGVkID0gMQogICAgX2hhbmRsZV9leGlzdGluZ19sb2dnZXJzKGV4aXN0aW5nLCBjaGlsZF9sb2dnZXJzLCBkaXNhYmxlX2V4aXN0aW5nKQoKCmRlZiBfY2xlYXJFeGlzdGluZ0hhbmRsZXJzKCk6CiAgICAiIiJDbGVhciBhbmQgY2xvc2UgZXhpc3RpbmcgaGFuZGxlcnMiIiIKICAgIGxvZ2dpbmcuX2hhbmRsZXJzLmNsZWFyKCkKICAgIGxvZ2dpbmcuc2h1dGRvd24obG9nZ2luZy5faGFuZGxlckxpc3RbOl0pCiAgICBkZWwgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KCgpJREVOVElGSUVSID0gcmUuY29tcGlsZSgnXlthLXpfXVthLXowLTlfXSokJywgcmUuSSkKCgpkZWYgdmFsaWRfaWRlbnQocyk6CiAgICBtID0gSURFTlRJRklFUi5tYXRjaChzKQogICAgaWYgbm90IG06CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm90IGEgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXI6ICVyJyAlIHMpCiAgICByZXR1cm4gVHJ1ZQoKCmNsYXNzIENvbnZlcnRpbmdNaXhpbihvYmplY3QpOgogICAgIiIiRm9yIENvbnZlcnRpbmdYWFgncywgdGhpcyBtaXhpbiBjbGFzcyBwcm92aWRlcyBjb21tb24gZnVuY3Rpb25zIiIiCgogICAgZGVmIGNvbnZlcnRfd2l0aF9rZXkoc2VsZiwga2V5LCB2YWx1ZSwgcmVwbGFjZT1UcnVlKToKICAgICAgICByZXN1bHQgPSBzZWxmLmNvbmZpZ3VyYXRvci5jb252ZXJ0KHZhbHVlKQogICAgICAgICNJZiB0aGUgY29udmVydGVkIHZhbHVlIGlzIGRpZmZlcmVudCwgc2F2ZSBmb3IgbmV4dCB0aW1lCiAgICAgICAgaWYgdmFsdWUgaXMgbm90IHJlc3VsdDoKICAgICAgICAgICAgaWYgcmVwbGFjZToKICAgICAgICAgICAgICAgIHNlbGZba2V5XSA9IHJlc3VsdAogICAgICAgICAgICBpZiB0eXBlKHJlc3VsdCkgaW4gKENvbnZlcnRpbmdEaWN0LCBDb252ZXJ0aW5nTGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnRpbmdUdXBsZSk6CiAgICAgICAgICAgICAgICByZXN1bHQucGFyZW50ID0gc2VsZgogICAgICAgICAgICAgICAgcmVzdWx0LmtleSA9IGtleQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgY29udmVydChzZWxmLCB2YWx1ZSk6CiAgICAgICAgcmVzdWx0ID0gc2VsZi5jb25maWd1cmF0b3IuY29udmVydCh2YWx1ZSkKICAgICAgICBpZiB2YWx1ZSBpcyBub3QgcmVzdWx0OgogICAgICAgICAgICBpZiB0eXBlKHJlc3VsdCkgaW4gKENvbnZlcnRpbmdEaWN0LCBDb252ZXJ0aW5nTGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnRpbmdUdXBsZSk6CiAgICAgICAgICAgICAgICByZXN1bHQucGFyZW50ID0gc2VsZgogICAgICAgIHJldHVybiByZXN1bHQKCgojIFRoZSBDb252ZXJ0aW5nWFhYIGNsYXNzZXMgYXJlIHdyYXBwZXJzIGFyb3VuZCBzdGFuZGFyZCBQeXRob24gY29udGFpbmVycywKIyBhbmQgdGhleSBzZXJ2ZSB0byBjb252ZXJ0IGFueSBzdWl0YWJsZSB2YWx1ZXMgaW4gdGhlIGNvbnRhaW5lci4gVGhlCiMgY29udmVyc2lvbiBjb252ZXJ0cyBiYXNlIGRpY3RzLCBsaXN0cyBhbmQgdHVwbGVzIHRvIHRoZWlyIHdyYXBwZWQKIyBlcXVpdmFsZW50cywgd2hlcmVhcyBzdHJpbmdzIHdoaWNoIG1hdGNoIGEgY29udmVyc2lvbiBmb3JtYXQgYXJlIGNvbnZlcnRlZAojIGFwcHJvcHJpYXRlbHkuCiMKIyBFYWNoIHdyYXBwZXIgc2hvdWxkIGhhdmUgYSBjb25maWd1cmF0b3IgYXR0cmlidXRlIGhvbGRpbmcgdGhlIGFjdHVhbAojIGNvbmZpZ3VyYXRvciB0byB1c2UgZm9yIGNvbnZlcnNpb24uCgpjbGFzcyBDb252ZXJ0aW5nRGljdChkaWN0LCBDb252ZXJ0aW5nTWl4aW4pOgogICAgIiIiQSBjb252ZXJ0aW5nIGRpY3Rpb25hcnkgd3JhcHBlci4iIiIKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICB2YWx1ZSA9IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KQogICAgICAgIHJldHVybiBzZWxmLmNvbnZlcnRfd2l0aF9rZXkoa2V5LCB2YWx1ZSkKCiAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lKToKICAgICAgICB2YWx1ZSA9IGRpY3QuZ2V0KHNlbGYsIGtleSwgZGVmYXVsdCkKICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3dpdGhfa2V5KGtleSwgdmFsdWUpCgogICAgZGVmIHBvcChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgdmFsdWUgPSBkaWN0LnBvcChzZWxmLCBrZXksIGRlZmF1bHQpCiAgICAgICAgcmV0dXJuIHNlbGYuY29udmVydF93aXRoX2tleShrZXksIHZhbHVlLCByZXBsYWNlPUZhbHNlKQoKY2xhc3MgQ29udmVydGluZ0xpc3QobGlzdCwgQ29udmVydGluZ01peGluKToKICAgICIiIkEgY29udmVydGluZyBsaXN0IHdyYXBwZXIuIiIiCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICB2YWx1ZSA9IGxpc3QuX19nZXRpdGVtX18oc2VsZiwga2V5KQogICAgICAgIHJldHVybiBzZWxmLmNvbnZlcnRfd2l0aF9rZXkoa2V5LCB2YWx1ZSkKCiAgICBkZWYgcG9wKHNlbGYsIGlkeD0tMSk6CiAgICAgICAgdmFsdWUgPSBsaXN0LnBvcChzZWxmLCBpZHgpCiAgICAgICAgcmV0dXJuIHNlbGYuY29udmVydCh2YWx1ZSkKCmNsYXNzIENvbnZlcnRpbmdUdXBsZSh0dXBsZSwgQ29udmVydGluZ01peGluKToKICAgICIiIkEgY29udmVydGluZyB0dXBsZSB3cmFwcGVyLiIiIgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgdmFsdWUgPSB0dXBsZS5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpCiAgICAgICAgIyBDYW4ndCByZXBsYWNlIGEgdHVwbGUgZW50cnkuCiAgICAgICAgcmV0dXJuIHNlbGYuY29udmVydF93aXRoX2tleShrZXksIHZhbHVlLCByZXBsYWNlPUZhbHNlKQoKY2xhc3MgQmFzZUNvbmZpZ3VyYXRvcihvYmplY3QpOgogICAgIiIiCiAgICBUaGUgY29uZmlndXJhdG9yIGJhc2UgY2xhc3Mgd2hpY2ggZGVmaW5lcyBzb21lIHVzZWZ1bCBkZWZhdWx0cy4KICAgICIiIgoKICAgIENPTlZFUlRfUEFUVEVSTiA9IHJlLmNvbXBpbGUocideKD9QPHByZWZpeD5bYS16XSspOi8vKD9QPHN1ZmZpeD4uKikkJykKCiAgICBXT1JEX1BBVFRFUk4gPSByZS5jb21waWxlKHInXlxzKihcdyspXHMqJykKICAgIERPVF9QQVRURVJOID0gcmUuY29tcGlsZShyJ15cLlxzKihcdyspXHMqJykKICAgIElOREVYX1BBVFRFUk4gPSByZS5jb21waWxlKHInXlxbXHMqKFx3KylccypcXVxzKicpCiAgICBESUdJVF9QQVRURVJOID0gcmUuY29tcGlsZShyJ15cZCskJykKCiAgICB2YWx1ZV9jb252ZXJ0ZXJzID0gewogICAgICAgICdleHQnIDogJ2V4dF9jb252ZXJ0JywKICAgICAgICAnY2ZnJyA6ICdjZmdfY29udmVydCcsCiAgICB9CgogICAgIyBXZSBtaWdodCB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBvbmUsIGUuZy4gaW1wb3J0bGliCiAgICBpbXBvcnRlciA9IHN0YXRpY21ldGhvZChfX2ltcG9ydF9fKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcpOgogICAgICAgIHNlbGYuY29uZmlnID0gQ29udmVydGluZ0RpY3QoY29uZmlnKQogICAgICAgIHNlbGYuY29uZmlnLmNvbmZpZ3VyYXRvciA9IHNlbGYKCiAgICBkZWYgcmVzb2x2ZShzZWxmLCBzKToKICAgICAgICAiIiIKICAgICAgICBSZXNvbHZlIHN0cmluZ3MgdG8gb2JqZWN0cyB1c2luZyBzdGFuZGFyZCBpbXBvcnQgYW5kIGF0dHJpYnV0ZQogICAgICAgIHN5bnRheC4KICAgICAgICAiIiIKICAgICAgICBuYW1lID0gcy5zcGxpdCgnLicpCiAgICAgICAgdXNlZCA9IG5hbWUucG9wKDApCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmb3VuZCA9IHNlbGYuaW1wb3J0ZXIodXNlZCkKICAgICAgICAgICAgZm9yIGZyYWcgaW4gbmFtZToKICAgICAgICAgICAgICAgIHVzZWQgKz0gJy4nICsgZnJhZwogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGZvdW5kID0gZ2V0YXR0cihmb3VuZCwgZnJhZykKICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydGVyKHVzZWQpCiAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBnZXRhdHRyKGZvdW5kLCBmcmFnKQogICAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKICAgICAgICAgICAgdiA9IFZhbHVlRXJyb3IoJ0Nhbm5vdCByZXNvbHZlICVyOiAlcycgJSAocywgZSkpCiAgICAgICAgICAgIHJhaXNlIHYgZnJvbSBlCgogICAgZGVmIGV4dF9jb252ZXJ0KHNlbGYsIHZhbHVlKToKICAgICAgICAiIiJEZWZhdWx0IGNvbnZlcnRlciBmb3IgdGhlIGV4dDovLyBwcm90b2NvbC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5yZXNvbHZlKHZhbHVlKQoKICAgIGRlZiBjZmdfY29udmVydChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIiIiRGVmYXVsdCBjb252ZXJ0ZXIgZm9yIHRoZSBjZmc6Ly8gcHJvdG9jb2wuIiIiCiAgICAgICAgcmVzdCA9IHZhbHVlCiAgICAgICAgbSA9IHNlbGYuV09SRF9QQVRURVJOLm1hdGNoKHJlc3QpCiAgICAgICAgaWYgbSBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlciIgJSB2YWx1ZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN0ID0gcmVzdFttLmVuZCgpOl0KICAgICAgICAgICAgZCA9IHNlbGYuY29uZmlnW20uZ3JvdXBzKClbMF1dCiAgICAgICAgICAgICNwcmludCBkLCByZXN0CiAgICAgICAgICAgIHdoaWxlIHJlc3Q6CiAgICAgICAgICAgICAgICBtID0gc2VsZi5ET1RfUEFUVEVSTi5tYXRjaChyZXN0KQogICAgICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICAgICBkID0gZFttLmdyb3VwcygpWzBdXQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBtID0gc2VsZi5JTkRFWF9QQVRURVJOLm1hdGNoKHJlc3QpCiAgICAgICAgICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gbS5ncm91cHMoKVswXQogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5ESUdJVF9QQVRURVJOLm1hdGNoKGlkeCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZFtpZHhdCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGludChpZHgpICMgdHJ5IGFzIG51bWJlciBmaXJzdCAobW9zdCBsaWtlbHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGRbbl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGRbaWR4XQogICAgICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICAgICByZXN0ID0gcmVzdFttLmVuZCgpOl0KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5hYmxlIHRvIGNvbnZlcnQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVyIGF0ICVyJyAlICh2YWx1ZSwgcmVzdCkpCiAgICAgICAgI3Jlc3Qgc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgcmV0dXJuIGQKCiAgICBkZWYgY29udmVydChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIiIiCiAgICAgICAgQ29udmVydCB2YWx1ZXMgdG8gYW4gYXBwcm9wcmlhdGUgdHlwZS4gZGljdHMsIGxpc3RzIGFuZCB0dXBsZXMgYXJlCiAgICAgICAgcmVwbGFjZWQgYnkgdGhlaXIgY29udmVydGluZyBhbHRlcm5hdGl2ZXMuIFN0cmluZ3MgYXJlIGNoZWNrZWQgdG8KICAgICAgICBzZWUgaWYgdGhleSBoYXZlIGEgY29udmVyc2lvbiBmb3JtYXQgYW5kIGFyZSBjb252ZXJ0ZWQgaWYgdGhleSBkby4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgQ29udmVydGluZ0RpY3QpIGFuZCBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKICAgICAgICAgICAgdmFsdWUgPSBDb252ZXJ0aW5nRGljdCh2YWx1ZSkKICAgICAgICAgICAgdmFsdWUuY29uZmlndXJhdG9yID0gc2VsZgogICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIENvbnZlcnRpbmdMaXN0KSBhbmQgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CiAgICAgICAgICAgIHZhbHVlID0gQ29udmVydGluZ0xpc3QodmFsdWUpCiAgICAgICAgICAgIHZhbHVlLmNvbmZpZ3VyYXRvciA9IHNlbGYKICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBDb252ZXJ0aW5nVHVwbGUpIGFuZFwKICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSkgYW5kIG5vdCBoYXNhdHRyKHZhbHVlLCAnX2ZpZWxkcycpOgogICAgICAgICAgICB2YWx1ZSA9IENvbnZlcnRpbmdUdXBsZSh2YWx1ZSkKICAgICAgICAgICAgdmFsdWUuY29uZmlndXJhdG9yID0gc2VsZgogICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKTogIyBzdHIgZm9yIHB5M2sKICAgICAgICAgICAgbSA9IHNlbGYuQ09OVkVSVF9QQVRURVJOLm1hdGNoKHZhbHVlKQogICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgZCA9IG0uZ3JvdXBkaWN0KCkKICAgICAgICAgICAgICAgIHByZWZpeCA9IGRbJ3ByZWZpeCddCiAgICAgICAgICAgICAgICBjb252ZXJ0ZXIgPSBzZWxmLnZhbHVlX2NvbnZlcnRlcnMuZ2V0KHByZWZpeCwgTm9uZSkKICAgICAgICAgICAgICAgIGlmIGNvbnZlcnRlcjoKICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSBkWydzdWZmaXgnXQogICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlciA9IGdldGF0dHIoc2VsZiwgY29udmVydGVyKQogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY29udmVydGVyKHN1ZmZpeCkKICAgICAgICByZXR1cm4gdmFsdWUKCiAgICBkZWYgY29uZmlndXJlX2N1c3RvbShzZWxmLCBjb25maWcpOgogICAgICAgICIiIkNvbmZpZ3VyZSBhbiBvYmplY3Qgd2l0aCBhIHVzZXItc3VwcGxpZWQgZmFjdG9yeS4iIiIKICAgICAgICBjID0gY29uZmlnLnBvcCgnKCknKQogICAgICAgIGlmIG5vdCBjYWxsYWJsZShjKToKICAgICAgICAgICAgYyA9IHNlbGYucmVzb2x2ZShjKQogICAgICAgIHByb3BzID0gY29uZmlnLnBvcCgnLicsIE5vbmUpCiAgICAgICAgIyBDaGVjayBmb3IgdmFsaWQgaWRlbnRpZmllcnMKICAgICAgICBrd2FyZ3MgPSB7azogY29uZmlnW2tdIGZvciBrIGluIGNvbmZpZyBpZiB2YWxpZF9pZGVudChrKX0KICAgICAgICByZXN1bHQgPSBjKCoqa3dhcmdzKQogICAgICAgIGlmIHByb3BzOgogICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcHJvcHMuaXRlbXMoKToKICAgICAgICAgICAgICAgIHNldGF0dHIocmVzdWx0LCBuYW1lLCB2YWx1ZSkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGFzX3R1cGxlKHNlbGYsIHZhbHVlKToKICAgICAgICAiIiJVdGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGNvbnZlcnRzIGxpc3RzIHRvIHR1cGxlcy4iIiIKICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAgICAgdmFsdWUgPSB0dXBsZSh2YWx1ZSkKICAgICAgICByZXR1cm4gdmFsdWUKCmNsYXNzIERpY3RDb25maWd1cmF0b3IoQmFzZUNvbmZpZ3VyYXRvcik6CiAgICAiIiIKICAgIENvbmZpZ3VyZSBsb2dnaW5nIHVzaW5nIGEgZGljdGlvbmFyeS1saWtlIG9iamVjdCB0byBkZXNjcmliZSB0aGUKICAgIGNvbmZpZ3VyYXRpb24uCiAgICAiIiIKCiAgICBkZWYgY29uZmlndXJlKHNlbGYpOgogICAgICAgICIiIkRvIHRoZSBjb25maWd1cmF0aW9uLiIiIgoKICAgICAgICBjb25maWcgPSBzZWxmLmNvbmZpZwogICAgICAgIGlmICd2ZXJzaW9uJyBub3QgaW4gY29uZmlnOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkaWN0aW9uYXJ5IGRvZXNuJ3Qgc3BlY2lmeSBhIHZlcnNpb24iKQogICAgICAgIGlmIGNvbmZpZ1sndmVyc2lvbiddICE9IDE6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIHZlcnNpb246ICVzIiAlIGNvbmZpZ1sndmVyc2lvbiddKQogICAgICAgIGluY3JlbWVudGFsID0gY29uZmlnLnBvcCgnaW5jcmVtZW50YWwnLCBGYWxzZSkKICAgICAgICBFTVBUWV9ESUNUID0ge30KICAgICAgICBsb2dnaW5nLl9hY3F1aXJlTG9jaygpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBpbmNyZW1lbnRhbDoKICAgICAgICAgICAgICAgIGhhbmRsZXJzID0gY29uZmlnLmdldCgnaGFuZGxlcnMnLCBFTVBUWV9ESUNUKQogICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gaGFuZGxlcnM6CiAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gbG9nZ2luZy5faGFuZGxlcnM6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vIGhhbmRsZXIgZm91bmQgd2l0aCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUgJXInICAlIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuX2hhbmRsZXJzW25hbWVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyX2NvbmZpZyA9IGhhbmRsZXJzW25hbWVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGhhbmRsZXJfY29uZmlnLmdldCgnbGV2ZWwnLCBOb25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGV2ZWw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLl9jaGVja0xldmVsKGxldmVsKSkKICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5hYmxlIHRvIGNvbmZpZ3VyZSBoYW5kbGVyICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVyJyAlIG5hbWUpIGZyb20gZQogICAgICAgICAgICAgICAgbG9nZ2VycyA9IGNvbmZpZy5nZXQoJ2xvZ2dlcnMnLCBFTVBUWV9ESUNUKQogICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gbG9nZ2VyczoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX2xvZ2dlcihuYW1lLCBsb2dnZXJzW25hbWVdLCBUcnVlKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5hYmxlIHRvIGNvbmZpZ3VyZSBsb2dnZXIgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcicgJSBuYW1lKSBmcm9tIGUKICAgICAgICAgICAgICAgIHJvb3QgPSBjb25maWcuZ2V0KCdyb290JywgTm9uZSkKICAgICAgICAgICAgICAgIGlmIHJvb3Q6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyZV9yb290KHJvb3QsIFRydWUpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFibGUgdG8gY29uZmlndXJlIHJvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dnZXInKSBmcm9tIGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGRpc2FibGVfZXhpc3RpbmcgPSBjb25maWcucG9wKCdkaXNhYmxlX2V4aXN0aW5nX2xvZ2dlcnMnLCBUcnVlKQoKICAgICAgICAgICAgICAgIF9jbGVhckV4aXN0aW5nSGFuZGxlcnMoKQoKICAgICAgICAgICAgICAgICMgRG8gZm9ybWF0dGVycyBmaXJzdCAtIHRoZXkgZG9uJ3QgcmVmZXIgdG8gYW55dGhpbmcgZWxzZQogICAgICAgICAgICAgICAgZm9ybWF0dGVycyA9IGNvbmZpZy5nZXQoJ2Zvcm1hdHRlcnMnLCBFTVBUWV9ESUNUKQogICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZm9ybWF0dGVyczoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcnNbbmFtZV0gPSBzZWxmLmNvbmZpZ3VyZV9mb3JtYXR0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcnNbbmFtZV0pCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFibGUgdG8gY29uZmlndXJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVyICVyJyAlIG5hbWUpIGZyb20gZQogICAgICAgICAgICAgICAgIyBOZXh0LCBkbyBmaWx0ZXJzIC0gdGhleSBkb24ndCByZWZlciB0byBhbnl0aGluZyBlbHNlLCBlaXRoZXIKICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBjb25maWcuZ2V0KCdmaWx0ZXJzJywgRU1QVFlfRElDVCkKICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbHRlcnM6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzW25hbWVdID0gc2VsZi5jb25maWd1cmVfZmlsdGVyKGZpbHRlcnNbbmFtZV0pCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFibGUgdG8gY29uZmlndXJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsdGVyICVyJyAlIG5hbWUpIGZyb20gZQoKICAgICAgICAgICAgICAgICMgTmV4dCwgZG8gaGFuZGxlcnMgLSB0aGV5IHJlZmVyIHRvIGZvcm1hdHRlcnMgYW5kIGZpbHRlcnMKICAgICAgICAgICAgICAgICMgQXMgaGFuZGxlcnMgY2FuIHJlZmVyIHRvIG90aGVyIGhhbmRsZXJzLCBzb3J0IHRoZSBrZXlzCiAgICAgICAgICAgICAgICAjIHRvIGFsbG93IGEgZGV0ZXJtaW5pc3RpYyBvcmRlciBvZiBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICBoYW5kbGVycyA9IGNvbmZpZy5nZXQoJ2hhbmRsZXJzJywgRU1QVFlfRElDVCkKICAgICAgICAgICAgICAgIGRlZmVycmVkID0gW10KICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHNvcnRlZChoYW5kbGVycyk6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5jb25maWd1cmVfaGFuZGxlcihoYW5kbGVyc1tuYW1lXSkKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5uYW1lID0gbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1tuYW1lXSA9IGhhbmRsZXIKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICd0YXJnZXQgbm90IGNvbmZpZ3VyZWQgeWV0JyBpbiBzdHIoZS5fX2NhdXNlX18pOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQuYXBwZW5kKG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFibGUgdG8gY29uZmlndXJlIGhhbmRsZXIgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXInICUgbmFtZSkgZnJvbSBlCgogICAgICAgICAgICAgICAgIyBOb3cgZG8gYW55IHRoYXQgd2VyZSBkZWZlcnJlZAogICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZGVmZXJyZWQ6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5jb25maWd1cmVfaGFuZGxlcihoYW5kbGVyc1tuYW1lXSkKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5uYW1lID0gbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1tuYW1lXSA9IGhhbmRsZXIKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWJsZSB0byBjb25maWd1cmUgaGFuZGxlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVyJyAlIG5hbWUpIGZyb20gZQoKICAgICAgICAgICAgICAgICMgTmV4dCwgZG8gbG9nZ2VycyAtIHRoZXkgcmVmZXIgdG8gaGFuZGxlcnMgYW5kIGZpbHRlcnMKCiAgICAgICAgICAgICAgICAjd2UgZG9uJ3Qgd2FudCB0byBsb3NlIHRoZSBleGlzdGluZyBsb2dnZXJzLAogICAgICAgICAgICAgICAgI3NpbmNlIG90aGVyIHRocmVhZHMgbWF5IGhhdmUgcG9pbnRlcnMgdG8gdGhlbS4KICAgICAgICAgICAgICAgICNleGlzdGluZyBpcyBzZXQgdG8gY29udGFpbiBhbGwgZXhpc3RpbmcgbG9nZ2VycywKICAgICAgICAgICAgICAgICNhbmQgYXMgd2UgZ28gdGhyb3VnaCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gd2UKICAgICAgICAgICAgICAgICNyZW1vdmUgYW55IHdoaWNoIGFyZSBjb25maWd1cmVkLiBBdCB0aGUgZW5kLAogICAgICAgICAgICAgICAgI3doYXQncyBsZWZ0IGluIGV4aXN0aW5nIGlzIHRoZSBzZXQgb2YgbG9nZ2VycwogICAgICAgICAgICAgICAgI3doaWNoIHdlcmUgaW4gdGhlIHByZXZpb3VzIGNvbmZpZ3VyYXRpb24gYnV0CiAgICAgICAgICAgICAgICAjd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgICAgICByb290ID0gbG9nZ2luZy5yb290CiAgICAgICAgICAgICAgICBleGlzdGluZyA9IGxpc3Qocm9vdC5tYW5hZ2VyLmxvZ2dlckRpY3Qua2V5cygpKQogICAgICAgICAgICAgICAgI1RoZSBsaXN0IG5lZWRzIHRvIGJlIHNvcnRlZCBzbyB0aGF0IHdlIGNhbgogICAgICAgICAgICAgICAgI2F2b2lkIGRpc2FibGluZyBjaGlsZCBsb2dnZXJzIG9mIGV4cGxpY2l0bHkKICAgICAgICAgICAgICAgICNuYW1lZCBsb2dnZXJzLiBXaXRoIGEgc29ydGVkIGxpc3QgaXQgaXMgZWFzaWVyCiAgICAgICAgICAgICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KICAgICAgICAgICAgICAgIGV4aXN0aW5nLnNvcnQoKQogICAgICAgICAgICAgICAgI1dlJ2xsIGtlZXAgdGhlIGxpc3Qgb2YgZXhpc3RpbmcgbG9nZ2VycwogICAgICAgICAgICAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICAgICAgICAgICAgIGNoaWxkX2xvZ2dlcnMgPSBbXQogICAgICAgICAgICAgICAgI25vdyBzZXQgdXAgdGhlIG5ldyBvbmVzLi4uCiAgICAgICAgICAgICAgICBsb2dnZXJzID0gY29uZmlnLmdldCgnbG9nZ2VycycsIEVNUFRZX0RJQ1QpCiAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBsb2dnZXJzOgogICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gZXhpc3Rpbmc6CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBleGlzdGluZy5pbmRleChuYW1lKSArIDEgIyBsb29rIGFmdGVyIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ZWQgPSBuYW1lICsgIi4iCiAgICAgICAgICAgICAgICAgICAgICAgIHBmbGVuID0gbGVuKHByZWZpeGVkKQogICAgICAgICAgICAgICAgICAgICAgICBudW1fZXhpc3RpbmcgPSBsZW4oZXhpc3RpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIGkgPCBudW1fZXhpc3Rpbmc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBleGlzdGluZ1tpXVs6cGZsZW5dID09IHByZWZpeGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2xvZ2dlcnMuYXBwZW5kKGV4aXN0aW5nW2ldKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLnJlbW92ZShuYW1lKQogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWd1cmVfbG9nZ2VyKG5hbWUsIGxvZ2dlcnNbbmFtZV0pCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFibGUgdG8gY29uZmlndXJlIGxvZ2dlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVyJyAlIG5hbWUpIGZyb20gZQoKICAgICAgICAgICAgICAgICNEaXNhYmxlIGFueSBvbGQgbG9nZ2Vycy4gVGhlcmUncyBubyBwb2ludCBkZWxldGluZwogICAgICAgICAgICAgICAgI3RoZW0gYXMgb3RoZXIgdGhyZWFkcyBtYXkgY29udGludWUgdG8gaG9sZCByZWZlcmVuY2VzCiAgICAgICAgICAgICAgICAjYW5kIGJ5IGRpc2FibGluZyB0aGVtLCB5b3Ugc3RvcCB0aGVtIGRvaW5nIGFueSBsb2dnaW5nLgogICAgICAgICAgICAgICAgI0hvd2V2ZXIsIGRvbid0IGRpc2FibGUgY2hpbGRyZW4gb2YgbmFtZWQgbG9nZ2VycywgYXMgdGhhdCdzCiAgICAgICAgICAgICAgICAjcHJvYmFibHkgbm90IHdoYXQgd2FzIGludGVuZGVkIGJ5IHRoZSB1c2VyLgogICAgICAgICAgICAgICAgI2ZvciBsb2cgaW4gZXhpc3Rpbmc6CiAgICAgICAgICAgICAgICAjICAgIGxvZ2dlciA9IHJvb3QubWFuYWdlci5sb2dnZXJEaWN0W2xvZ10KICAgICAgICAgICAgICAgICMgICAgaWYgbG9nIGluIGNoaWxkX2xvZ2dlcnM6CiAgICAgICAgICAgICAgICAjICAgICAgICBsb2dnZXIubGV2ZWwgPSBsb2dnaW5nLk5PVFNFVAogICAgICAgICAgICAgICAgIyAgICAgICAgbG9nZ2VyLmhhbmRsZXJzID0gW10KICAgICAgICAgICAgICAgICMgICAgICAgIGxvZ2dlci5wcm9wYWdhdGUgPSBUcnVlCiAgICAgICAgICAgICAgICAjICAgIGVsaWYgZGlzYWJsZV9leGlzdGluZzoKICAgICAgICAgICAgICAgICMgICAgICAgIGxvZ2dlci5kaXNhYmxlZCA9IFRydWUKICAgICAgICAgICAgICAgIF9oYW5kbGVfZXhpc3RpbmdfbG9nZ2VycyhleGlzdGluZywgY2hpbGRfbG9nZ2VycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2V4aXN0aW5nKQoKICAgICAgICAgICAgICAgICMgQW5kIGZpbmFsbHksIGRvIHRoZSByb290IGxvZ2dlcgogICAgICAgICAgICAgICAgcm9vdCA9IGNvbmZpZy5nZXQoJ3Jvb3QnLCBOb25lKQogICAgICAgICAgICAgICAgaWYgcm9vdDoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX3Jvb3Qocm9vdCkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWJsZSB0byBjb25maWd1cmUgcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZ2dlcicpIGZyb20gZQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGxvZ2dpbmcuX3JlbGVhc2VMb2NrKCkKCiAgICBkZWYgY29uZmlndXJlX2Zvcm1hdHRlcihzZWxmLCBjb25maWcpOgogICAgICAgICIiIkNvbmZpZ3VyZSBhIGZvcm1hdHRlciBmcm9tIGEgZGljdGlvbmFyeS4iIiIKICAgICAgICBpZiAnKCknIGluIGNvbmZpZzoKICAgICAgICAgICAgZmFjdG9yeSA9IGNvbmZpZ1snKCknXSAjIGZvciB1c2UgaW4gZXhjZXB0aW9uIGhhbmRsZXIKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jb25maWd1cmVfY3VzdG9tKGNvbmZpZykKICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyB0ZToKICAgICAgICAgICAgICAgIGlmICInZm9ybWF0JyIgbm90IGluIHN0cih0ZSk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICNOYW1lIG9mIHBhcmFtZXRlciBjaGFuZ2VkIGZyb20gZm10IHRvIGZvcm1hdC4KICAgICAgICAgICAgICAgICNSZXRyeSB3aXRoIG9sZCBuYW1lLgogICAgICAgICAgICAgICAgI1RoaXMgaXMgc28gdGhhdCBjb2RlIGNhbiBiZSB1c2VkIHdpdGggb2xkZXIgUHl0aG9uIHZlcnNpb25zCiAgICAgICAgICAgICAgICAjKGUuZy4gYnkgRGphbmdvKQogICAgICAgICAgICAgICAgY29uZmlnWydmbXQnXSA9IGNvbmZpZy5wb3AoJ2Zvcm1hdCcpCiAgICAgICAgICAgICAgICBjb25maWdbJygpJ10gPSBmYWN0b3J5CiAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmNvbmZpZ3VyZV9jdXN0b20oY29uZmlnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGZtdCA9IGNvbmZpZy5nZXQoJ2Zvcm1hdCcsIE5vbmUpCiAgICAgICAgICAgIGRmbXQgPSBjb25maWcuZ2V0KCdkYXRlZm10JywgTm9uZSkKICAgICAgICAgICAgc3R5bGUgPSBjb25maWcuZ2V0KCdzdHlsZScsICclJykKICAgICAgICAgICAgY25hbWUgPSBjb25maWcuZ2V0KCdjbGFzcycsIE5vbmUpCgogICAgICAgICAgICBpZiBub3QgY25hbWU6CiAgICAgICAgICAgICAgICBjID0gbG9nZ2luZy5Gb3JtYXR0ZXIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGMgPSBfcmVzb2x2ZShjbmFtZSkKCiAgICAgICAgICAgICMgQSBUeXBlRXJyb3Igd291bGQgYmUgcmFpc2VkIGlmICJ2YWxpZGF0ZSIga2V5IGlzIHBhc3NlZCBpbiB3aXRoIGEgZm9ybWF0dGVyIGNhbGxhYmxlCiAgICAgICAgICAgICMgdGhhdCBkb2VzIG5vdCBhY2NlcHQgInZhbGlkYXRlIiBhcyBhIHBhcmFtZXRlcgogICAgICAgICAgICBpZiAndmFsaWRhdGUnIGluIGNvbmZpZzogICMgaWYgdXNlciBoYXNuJ3QgbWVudGlvbmVkIGl0LCB0aGUgZGVmYXVsdCB3aWxsIGJlIGZpbmUKICAgICAgICAgICAgICAgIHJlc3VsdCA9IGMoZm10LCBkZm10LCBzdHlsZSwgY29uZmlnWyd2YWxpZGF0ZSddKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gYyhmbXQsIGRmbXQsIHN0eWxlKQoKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGNvbmZpZ3VyZV9maWx0ZXIoc2VsZiwgY29uZmlnKToKICAgICAgICAiIiJDb25maWd1cmUgYSBmaWx0ZXIgZnJvbSBhIGRpY3Rpb25hcnkuIiIiCiAgICAgICAgaWYgJygpJyBpbiBjb25maWc6CiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuY29uZmlndXJlX2N1c3RvbShjb25maWcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbmFtZSA9IGNvbmZpZy5nZXQoJ25hbWUnLCAnJykKICAgICAgICAgICAgcmVzdWx0ID0gbG9nZ2luZy5GaWx0ZXIobmFtZSkKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGFkZF9maWx0ZXJzKHNlbGYsIGZpbHRlcmVyLCBmaWx0ZXJzKToKICAgICAgICAiIiJBZGQgZmlsdGVycyB0byBhIGZpbHRlcmVyIGZyb20gYSBsaXN0IG9mIG5hbWVzLiIiIgogICAgICAgIGZvciBmIGluIGZpbHRlcnM6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGNhbGxhYmxlKGYpIG9yIGNhbGxhYmxlKGdldGF0dHIoZiwgJ2ZpbHRlcicsIE5vbmUpKToKICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfID0gZgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfID0gc2VsZi5jb25maWdbJ2ZpbHRlcnMnXVtmXQogICAgICAgICAgICAgICAgZmlsdGVyZXIuYWRkRmlsdGVyKGZpbHRlcl8pCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWJsZSB0byBhZGQgZmlsdGVyICVyJyAlIGYpIGZyb20gZQoKICAgIGRlZiBjb25maWd1cmVfaGFuZGxlcihzZWxmLCBjb25maWcpOgogICAgICAgICIiIkNvbmZpZ3VyZSBhIGhhbmRsZXIgZnJvbSBhIGRpY3Rpb25hcnkuIiIiCiAgICAgICAgY29uZmlnX2NvcHkgPSBkaWN0KGNvbmZpZykgICMgZm9yIHJlc3RvcmluZyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgZm9ybWF0dGVyID0gY29uZmlnLnBvcCgnZm9ybWF0dGVyJywgTm9uZSkKICAgICAgICBpZiBmb3JtYXR0ZXI6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZvcm1hdHRlciA9IHNlbGYuY29uZmlnWydmb3JtYXR0ZXJzJ11bZm9ybWF0dGVyXQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFibGUgdG8gc2V0IGZvcm1hdHRlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcicgJSBmb3JtYXR0ZXIpIGZyb20gZQogICAgICAgIGxldmVsID0gY29uZmlnLnBvcCgnbGV2ZWwnLCBOb25lKQogICAgICAgIGZpbHRlcnMgPSBjb25maWcucG9wKCdmaWx0ZXJzJywgTm9uZSkKICAgICAgICBpZiAnKCknIGluIGNvbmZpZzoKICAgICAgICAgICAgYyA9IGNvbmZpZy5wb3AoJygpJykKICAgICAgICAgICAgaWYgbm90IGNhbGxhYmxlKGMpOgogICAgICAgICAgICAgICAgYyA9IHNlbGYucmVzb2x2ZShjKQogICAgICAgICAgICBmYWN0b3J5ID0gYwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNuYW1lID0gY29uZmlnLnBvcCgnY2xhc3MnKQogICAgICAgICAgICBrbGFzcyA9IHNlbGYucmVzb2x2ZShjbmFtZSkKICAgICAgICAgICAgI1NwZWNpYWwgY2FzZSBmb3IgaGFuZGxlciB3aGljaCByZWZlcnMgdG8gYW5vdGhlciBoYW5kbGVyCiAgICAgICAgICAgIGlmIGlzc3ViY2xhc3Moa2xhc3MsIGxvZ2dpbmcuaGFuZGxlcnMuTWVtb3J5SGFuZGxlcikgYW5kXAogICAgICAgICAgICAgICAgJ3RhcmdldCcgaW4gY29uZmlnOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRoID0gc2VsZi5jb25maWdbJ2hhbmRsZXJzJ11bY29uZmlnWyd0YXJnZXQnXV0KICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0aCwgbG9nZ2luZy5IYW5kbGVyKToKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnVwZGF0ZShjb25maWdfY29weSkgICMgcmVzdG9yZSBmb3IgZGVmZXJyZWQgY2ZnCiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndGFyZ2V0IG5vdCBjb25maWd1cmVkIHlldCcpCiAgICAgICAgICAgICAgICAgICAgY29uZmlnWyd0YXJnZXQnXSA9IHRoCiAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5hYmxlIHRvIHNldCB0YXJnZXQgaGFuZGxlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXInICUgY29uZmlnWyd0YXJnZXQnXSkgZnJvbSBlCiAgICAgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhrbGFzcywgbG9nZ2luZy5oYW5kbGVycy5TTVRQSGFuZGxlcikgYW5kXAogICAgICAgICAgICAgICAgJ21haWxob3N0JyBpbiBjb25maWc6CiAgICAgICAgICAgICAgICBjb25maWdbJ21haWxob3N0J10gPSBzZWxmLmFzX3R1cGxlKGNvbmZpZ1snbWFpbGhvc3QnXSkKICAgICAgICAgICAgZWxpZiBpc3N1YmNsYXNzKGtsYXNzLCBsb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIpIGFuZFwKICAgICAgICAgICAgICAgICdhZGRyZXNzJyBpbiBjb25maWc6CiAgICAgICAgICAgICAgICBjb25maWdbJ2FkZHJlc3MnXSA9IHNlbGYuYXNfdHVwbGUoY29uZmlnWydhZGRyZXNzJ10pCiAgICAgICAgICAgIGZhY3RvcnkgPSBrbGFzcwogICAgICAgIHByb3BzID0gY29uZmlnLnBvcCgnLicsIE5vbmUpCiAgICAgICAga3dhcmdzID0ge2s6IGNvbmZpZ1trXSBmb3IgayBpbiBjb25maWcgaWYgdmFsaWRfaWRlbnQoayl9CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHQgPSBmYWN0b3J5KCoqa3dhcmdzKQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgdGU6CiAgICAgICAgICAgIGlmICInc3RyZWFtJyIgbm90IGluIHN0cih0ZSk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAjVGhlIGFyZ3VtZW50IG5hbWUgY2hhbmdlZCBmcm9tIHN0cm0gdG8gc3RyZWFtCiAgICAgICAgICAgICNSZXRyeSB3aXRoIG9sZCBuYW1lLgogICAgICAgICAgICAjVGhpcyBpcyBzbyB0aGF0IGNvZGUgY2FuIGJlIHVzZWQgd2l0aCBvbGRlciBQeXRob24gdmVyc2lvbnMKICAgICAgICAgICAgIyhlLmcuIGJ5IERqYW5nbykKICAgICAgICAgICAga3dhcmdzWydzdHJtJ10gPSBrd2FyZ3MucG9wKCdzdHJlYW0nKQogICAgICAgICAgICByZXN1bHQgPSBmYWN0b3J5KCoqa3dhcmdzKQogICAgICAgIGlmIGZvcm1hdHRlcjoKICAgICAgICAgICAgcmVzdWx0LnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCiAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJlc3VsdC5zZXRMZXZlbChsb2dnaW5nLl9jaGVja0xldmVsKGxldmVsKSkKICAgICAgICBpZiBmaWx0ZXJzOgogICAgICAgICAgICBzZWxmLmFkZF9maWx0ZXJzKHJlc3VsdCwgZmlsdGVycykKICAgICAgICBpZiBwcm9wczoKICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHByb3BzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBzZXRhdHRyKHJlc3VsdCwgbmFtZSwgdmFsdWUpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBhZGRfaGFuZGxlcnMoc2VsZiwgbG9nZ2VyLCBoYW5kbGVycyk6CiAgICAgICAgIiIiQWRkIGhhbmRsZXJzIHRvIGEgbG9nZ2VyIGZyb20gYSBsaXN0IG9mIG5hbWVzLiIiIgogICAgICAgIGZvciBoIGluIGhhbmRsZXJzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihzZWxmLmNvbmZpZ1snaGFuZGxlcnMnXVtoXSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5hYmxlIHRvIGFkZCBoYW5kbGVyICVyJyAlIGgpIGZyb20gZQoKICAgIGRlZiBjb21tb25fbG9nZ2VyX2NvbmZpZyhzZWxmLCBsb2dnZXIsIGNvbmZpZywgaW5jcmVtZW50YWw9RmFsc2UpOgogICAgICAgICIiIgogICAgICAgIFBlcmZvcm0gY29uZmlndXJhdGlvbiB3aGljaCBpcyBjb21tb24gdG8gcm9vdCBhbmQgbm9uLXJvb3QgbG9nZ2Vycy4KICAgICAgICAiIiIKICAgICAgICBsZXZlbCA9IGNvbmZpZy5nZXQoJ2xldmVsJywgTm9uZSkKICAgICAgICBpZiBsZXZlbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuX2NoZWNrTGV2ZWwobGV2ZWwpKQogICAgICAgIGlmIG5vdCBpbmNyZW1lbnRhbDoKICAgICAgICAgICAgI1JlbW92ZSBhbnkgZXhpc3RpbmcgaGFuZGxlcnMKICAgICAgICAgICAgZm9yIGggaW4gbG9nZ2VyLmhhbmRsZXJzWzpdOgogICAgICAgICAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoaCkKICAgICAgICAgICAgaGFuZGxlcnMgPSBjb25maWcuZ2V0KCdoYW5kbGVycycsIE5vbmUpCiAgICAgICAgICAgIGlmIGhhbmRsZXJzOgogICAgICAgICAgICAgICAgc2VsZi5hZGRfaGFuZGxlcnMobG9nZ2VyLCBoYW5kbGVycykKICAgICAgICAgICAgZmlsdGVycyA9IGNvbmZpZy5nZXQoJ2ZpbHRlcnMnLCBOb25lKQogICAgICAgICAgICBpZiBmaWx0ZXJzOgogICAgICAgICAgICAgICAgc2VsZi5hZGRfZmlsdGVycyhsb2dnZXIsIGZpbHRlcnMpCgogICAgZGVmIGNvbmZpZ3VyZV9sb2dnZXIoc2VsZiwgbmFtZSwgY29uZmlnLCBpbmNyZW1lbnRhbD1GYWxzZSk6CiAgICAgICAgIiIiQ29uZmlndXJlIGEgbm9uLXJvb3QgbG9nZ2VyIGZyb20gYSBkaWN0aW9uYXJ5LiIiIgogICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKG5hbWUpCiAgICAgICAgc2VsZi5jb21tb25fbG9nZ2VyX2NvbmZpZyhsb2dnZXIsIGNvbmZpZywgaW5jcmVtZW50YWwpCiAgICAgICAgbG9nZ2VyLmRpc2FibGVkID0gRmFsc2UKICAgICAgICBwcm9wYWdhdGUgPSBjb25maWcuZ2V0KCdwcm9wYWdhdGUnLCBOb25lKQogICAgICAgIGlmIHByb3BhZ2F0ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgbG9nZ2VyLnByb3BhZ2F0ZSA9IHByb3BhZ2F0ZQoKICAgIGRlZiBjb25maWd1cmVfcm9vdChzZWxmLCBjb25maWcsIGluY3JlbWVudGFsPUZhbHNlKToKICAgICAgICAiIiJDb25maWd1cmUgYSByb290IGxvZ2dlciBmcm9tIGEgZGljdGlvbmFyeS4iIiIKICAgICAgICByb290ID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgIHNlbGYuY29tbW9uX2xvZ2dlcl9jb25maWcocm9vdCwgY29uZmlnLCBpbmNyZW1lbnRhbCkKCmRpY3RDb25maWdDbGFzcyA9IERpY3RDb25maWd1cmF0b3IKCmRlZiBkaWN0Q29uZmlnKGNvbmZpZyk6CiAgICAiIiJDb25maWd1cmUgbG9nZ2luZyB1c2luZyBhIGRpY3Rpb25hcnkuIiIiCiAgICBkaWN0Q29uZmlnQ2xhc3MoY29uZmlnKS5jb25maWd1cmUoKQoKCmRlZiBsaXN0ZW4ocG9ydD1ERUZBVUxUX0xPR0dJTkdfQ09ORklHX1BPUlQsIHZlcmlmeT1Ob25lKToKICAgICIiIgogICAgU3RhcnQgdXAgYSBzb2NrZXQgc2VydmVyIG9uIHRoZSBzcGVjaWZpZWQgcG9ydCwgYW5kIGxpc3RlbiBmb3IgbmV3CiAgICBjb25maWd1cmF0aW9ucy4KCiAgICBUaGVzZSB3aWxsIGJlIHNlbnQgYXMgYSBmaWxlIHN1aXRhYmxlIGZvciBwcm9jZXNzaW5nIGJ5IGZpbGVDb25maWcoKS4KICAgIFJldHVybnMgYSBUaHJlYWQgb2JqZWN0IG9uIHdoaWNoIHlvdSBjYW4gY2FsbCBzdGFydCgpIHRvIHN0YXJ0IHRoZSBzZXJ2ZXIsCiAgICBhbmQgd2hpY2ggeW91IGNhbiBqb2luKCkgd2hlbiBhcHByb3ByaWF0ZS4gVG8gc3RvcCB0aGUgc2VydmVyLCBjYWxsCiAgICBzdG9wTGlzdGVuaW5nKCkuCgogICAgVXNlIHRoZSBgYHZlcmlmeWBgIGFyZ3VtZW50IHRvIHZlcmlmeSBhbnkgYnl0ZXMgcmVjZWl2ZWQgYWNyb3NzIHRoZSB3aXJlCiAgICBmcm9tIGEgY2xpZW50LiBJZiBzcGVjaWZpZWQsIGl0IHNob3VsZCBiZSBhIGNhbGxhYmxlIHdoaWNoIHJlY2VpdmVzIGEKICAgIHNpbmdsZSBhcmd1bWVudCAtIHRoZSBieXRlcyBvZiBjb25maWd1cmF0aW9uIGRhdGEgcmVjZWl2ZWQgYWNyb3NzIHRoZQogICAgbmV0d29yayAtIGFuZCBpdCBzaG91bGQgcmV0dXJuIGVpdGhlciBgYE5vbmVgYCwgdG8gaW5kaWNhdGUgdGhhdCB0aGUKICAgIHBhc3NlZCBpbiBieXRlcyBjb3VsZCBub3QgYmUgdmVyaWZpZWQgYW5kIHNob3VsZCBiZSBkaXNjYXJkZWQsIG9yIGEKICAgIGJ5dGUgc3RyaW5nIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIG1hY2hpbmVyeSBhcwogICAgbm9ybWFsLiBOb3RlIHRoYXQgeW91IGNhbiByZXR1cm4gdHJhbnNmb3JtZWQgYnl0ZXMsIGUuZy4gYnkgZGVjcnlwdGluZwogICAgdGhlIGJ5dGVzIHBhc3NlZCBpbi4KICAgICIiIgoKICAgIGNsYXNzIENvbmZpZ1N0cmVhbUhhbmRsZXIoU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICIiIgogICAgICAgIEhhbmRsZXIgZm9yIGEgbG9nZ2luZyBjb25maWd1cmF0aW9uIHJlcXVlc3QuCgogICAgICAgIEl0IGV4cGVjdHMgYSBjb21wbGV0ZWx5IG5ldyBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gYW5kIHVzZXMgZmlsZUNvbmZpZwogICAgICAgIHRvIGluc3RhbGwgaXQuCiAgICAgICAgIiIiCiAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKICAgICAgICAgICAgIiIiCiAgICAgICAgICAgIEhhbmRsZSBhIHJlcXVlc3QuCgogICAgICAgICAgICBFYWNoIHJlcXVlc3QgaXMgZXhwZWN0ZWQgdG8gYmUgYSA0LWJ5dGUgbGVuZ3RoLCBwYWNrZWQgdXNpbmcKICAgICAgICAgICAgc3RydWN0LnBhY2soIj5MIiwgbiksIGZvbGxvd2VkIGJ5IHRoZSBjb25maWcgZmlsZS4KICAgICAgICAgICAgVXNlcyBmaWxlQ29uZmlnKCkgdG8gZG8gdGhlIGdydW50IHdvcmsuCiAgICAgICAgICAgICIiIgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uCiAgICAgICAgICAgICAgICBjaHVuayA9IGNvbm4ucmVjdig0KQogICAgICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA9PSA0OgogICAgICAgICAgICAgICAgICAgIHNsZW4gPSBzdHJ1Y3QudW5wYWNrKCI+TCIsIGNodW5rKVswXQogICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5jb25uZWN0aW9uLnJlY3Yoc2xlbikKICAgICAgICAgICAgICAgICAgICB3aGlsZSBsZW4oY2h1bmspIDwgc2xlbjoKICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBjaHVuayArIGNvbm4ucmVjdihzbGVuIC0gbGVuKGNodW5rKSkKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnNlcnZlci52ZXJpZnkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5zZXJ2ZXIudmVyaWZ5KGNodW5rKQogICAgICAgICAgICAgICAgICAgIGlmIGNodW5rIGlzIG5vdCBOb25lOiAgICMgdmVyaWZpZWQsIGNhbiBwcm9jZXNzCiAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmsuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBqc29uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID1qc29uLmxvYWRzKGNodW5rKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZCwgZGljdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RDb25maWcoZCkKICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICNBcHBseSBuZXcgY29uZmlndXJhdGlvbi4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlID0gaW8uU3RyaW5nSU8oY2h1bmspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUNvbmZpZyhmaWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnNlcnZlci5yZWFkeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVhZHkuc2V0KCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gUkVTRVRfRVJST1I6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKCiAgICBjbGFzcyBDb25maWdTb2NrZXRSZWNlaXZlcihUaHJlYWRpbmdUQ1BTZXJ2ZXIpOgogICAgICAgICIiIgogICAgICAgIEEgc2ltcGxlIFRDUCBzb2NrZXQtYmFzZWQgbG9nZ2luZyBjb25maWcgcmVjZWl2ZXIuCiAgICAgICAgIiIiCgogICAgICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSAxCgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PURFRkFVTFRfTE9HR0lOR19DT05GSUdfUE9SVCwKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcj1Ob25lLCByZWFkeT1Ob25lLCB2ZXJpZnk9Tm9uZSk6CiAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlci5fX2luaXRfXyhzZWxmLCAoaG9zdCwgcG9ydCksIGhhbmRsZXIpCiAgICAgICAgICAgIGxvZ2dpbmcuX2FjcXVpcmVMb2NrKCkKICAgICAgICAgICAgc2VsZi5hYm9ydCA9IDAKICAgICAgICAgICAgbG9nZ2luZy5fcmVsZWFzZUxvY2soKQogICAgICAgICAgICBzZWxmLnRpbWVvdXQgPSAxCiAgICAgICAgICAgIHNlbGYucmVhZHkgPSByZWFkeQogICAgICAgICAgICBzZWxmLnZlcmlmeSA9IHZlcmlmeQoKICAgICAgICBkZWYgc2VydmVfdW50aWxfc3RvcHBlZChzZWxmKToKICAgICAgICAgICAgaW1wb3J0IHNlbGVjdAogICAgICAgICAgICBhYm9ydCA9IDAKICAgICAgICAgICAgd2hpbGUgbm90IGFib3J0OgogICAgICAgICAgICAgICAgcmQsIHdyLCBleCA9IHNlbGVjdC5zZWxlY3QoW3NlbGYuc29ja2V0LmZpbGVubygpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGltZW91dCkKICAgICAgICAgICAgICAgIGlmIHJkOgogICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3JlcXVlc3QoKQogICAgICAgICAgICAgICAgbG9nZ2luZy5fYWNxdWlyZUxvY2soKQogICAgICAgICAgICAgICAgYWJvcnQgPSBzZWxmLmFib3J0CiAgICAgICAgICAgICAgICBsb2dnaW5nLl9yZWxlYXNlTG9jaygpCiAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKCiAgICBjbGFzcyBTZXJ2ZXIodGhyZWFkaW5nLlRocmVhZCk6CgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByY3ZyLCBoZGxyLCBwb3J0LCB2ZXJpZnkpOgogICAgICAgICAgICBzdXBlcihTZXJ2ZXIsIHNlbGYpLl9faW5pdF9fKCkKICAgICAgICAgICAgc2VsZi5yY3ZyID0gcmN2cgogICAgICAgICAgICBzZWxmLmhkbHIgPSBoZGxyCiAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICAgICAgc2VsZi52ZXJpZnkgPSB2ZXJpZnkKICAgICAgICAgICAgc2VsZi5yZWFkeSA9IHRocmVhZGluZy5FdmVudCgpCgogICAgICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgICAgIHNlcnZlciA9IHNlbGYucmN2cihwb3J0PXNlbGYucG9ydCwgaGFuZGxlcj1zZWxmLmhkbHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkeT1zZWxmLnJlYWR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5PXNlbGYudmVyaWZ5KQogICAgICAgICAgICBpZiBzZWxmLnBvcnQgPT0gMDoKICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzc1sxXQogICAgICAgICAgICBzZWxmLnJlYWR5LnNldCgpCiAgICAgICAgICAgIGdsb2JhbCBfbGlzdGVuZXIKICAgICAgICAgICAgbG9nZ2luZy5fYWNxdWlyZUxvY2soKQogICAgICAgICAgICBfbGlzdGVuZXIgPSBzZXJ2ZXIKICAgICAgICAgICAgbG9nZ2luZy5fcmVsZWFzZUxvY2soKQogICAgICAgICAgICBzZXJ2ZXIuc2VydmVfdW50aWxfc3RvcHBlZCgpCgogICAgcmV0dXJuIFNlcnZlcihDb25maWdTb2NrZXRSZWNlaXZlciwgQ29uZmlnU3RyZWFtSGFuZGxlciwgcG9ydCwgdmVyaWZ5KQoKZGVmIHN0b3BMaXN0ZW5pbmcoKToKICAgICIiIgogICAgU3RvcCB0aGUgbGlzdGVuaW5nIHNlcnZlciB3aGljaCB3YXMgY3JlYXRlZCB3aXRoIGEgY2FsbCB0byBsaXN0ZW4oKS4KICAgICIiIgogICAgZ2xvYmFsIF9saXN0ZW5lcgogICAgbG9nZ2luZy5fYWNxdWlyZUxvY2soKQogICAgdHJ5OgogICAgICAgIGlmIF9saXN0ZW5lcjoKICAgICAgICAgICAgX2xpc3RlbmVyLmFib3J0ID0gMQogICAgICAgICAgICBfbGlzdGVuZXIgPSBOb25lCiAgICBmaW5hbGx5OgogICAgICAgIGxvZ2dpbmcuX3JlbGVhc2VMb2NrKCkKUEsDBBQAAAAAAAMgo1Y64SZyfPMAAHzzAAATAAAAbG9nZ2luZy9oYW5kbGVycy5weSMgQ29weXJpZ2h0IDIwMDEtMjAyMSBieSBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIwojIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwojIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwKIyBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0CiMgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluCiMgc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBWaW5heSBTYWppcAojIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbgojIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uCiMgVklOQVkgU0FKSVAgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsIElOQ0xVRElORwojIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTAojIFZJTkFZIFNBSklQIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUgojIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUgojIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUCiMgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KCiIiIgpBZGRpdGlvbmFsIGhhbmRsZXJzIGZvciB0aGUgbG9nZ2luZyBwYWNrYWdlIGZvciBQeXRob24uIFRoZSBjb3JlIHBhY2thZ2UgaXMKYmFzZWQgb24gUEVQIDI4MiBhbmQgY29tbWVudHMgdGhlcmV0byBpbiBjb21wLmxhbmcucHl0aG9uLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCgpUbyB1c2UsIHNpbXBseSAnaW1wb3J0IGxvZ2dpbmcuaGFuZGxlcnMnIGFuZCBsb2cgYXdheSEKIiIiCgppbXBvcnQgaW8sIGxvZ2dpbmcsIHNvY2tldCwgb3MsIHBpY2tsZSwgc3RydWN0LCB0aW1lLCByZQpmcm9tIHN0YXQgaW1wb3J0IFNUX0RFViwgU1RfSU5PLCBTVF9NVElNRQppbXBvcnQgcXVldWUKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgY29weQoKIwojIFNvbWUgY29uc3RhbnRzLi4uCiMKCkRFRkFVTFRfVENQX0xPR0dJTkdfUE9SVCAgICA9IDkwMjAKREVGQVVMVF9VRFBfTE9HR0lOR19QT1JUICAgID0gOTAyMQpERUZBVUxUX0hUVFBfTE9HR0lOR19QT1JUICAgPSA5MDIyCkRFRkFVTFRfU09BUF9MT0dHSU5HX1BPUlQgICA9IDkwMjMKU1lTTE9HX1VEUF9QT1JUICAgICAgICAgICAgID0gNTE0ClNZU0xPR19UQ1BfUE9SVCAgICAgICAgICAgICA9IDUxNAoKX01JRE5JR0hUID0gMjQgKiA2MCAqIDYwICAjIG51bWJlciBvZiBzZWNvbmRzIGluIGEgZGF5CgpjbGFzcyBCYXNlUm90YXRpbmdIYW5kbGVyKGxvZ2dpbmcuRmlsZUhhbmRsZXIpOgogICAgIiIiCiAgICBCYXNlIGNsYXNzIGZvciBoYW5kbGVycyB0aGF0IHJvdGF0ZSBsb2cgZmlsZXMgYXQgYSBjZXJ0YWluIHBvaW50LgogICAgTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gIEluc3RlYWQsIHVzZSBSb3RhdGluZ0ZpbGVIYW5kbGVyCiAgICBvciBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIuCiAgICAiIiIKICAgIG5hbWVyID0gTm9uZQogICAgcm90YXRvciA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlLCBlcnJvcnM9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgVXNlIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUgZm9yIHN0cmVhbWVkIGxvZ2dpbmcKICAgICAgICAiIiIKICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPW1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZGVsYXk9ZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9ZXJyb3JzKQogICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwoKICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiCiAgICAgICAgRW1pdCBhIHJlY29yZC4KCiAgICAgICAgT3V0cHV0IHRoZSByZWNvcmQgdG8gdGhlIGZpbGUsIGNhdGVyaW5nIGZvciByb2xsb3ZlciBhcyBkZXNjcmliZWQKICAgICAgICBpbiBkb1JvbGxvdmVyKCkuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzZWxmLnNob3VsZFJvbGxvdmVyKHJlY29yZCk6CiAgICAgICAgICAgICAgICBzZWxmLmRvUm9sbG92ZXIoKQogICAgICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQoKICAgIGRlZiByb3RhdGlvbl9maWxlbmFtZShzZWxmLCBkZWZhdWx0X25hbWUpOgogICAgICAgICIiIgogICAgICAgIE1vZGlmeSB0aGUgZmlsZW5hbWUgb2YgYSBsb2cgZmlsZSB3aGVuIHJvdGF0aW5nLgoKICAgICAgICBUaGlzIGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBjdXN0b20gZmlsZW5hbWUgY2FuIGJlIHByb3ZpZGVkLgoKICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlCiAgICAgICAgaGFuZGxlciwgaWYgaXQncyBjYWxsYWJsZSwgcGFzc2luZyB0aGUgZGVmYXVsdCBuYW1lIHRvCiAgICAgICAgaXQuIElmIHRoZSBhdHRyaWJ1dGUgaXNuJ3QgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIE5vbmUpLCB0aGUgbmFtZQogICAgICAgIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KCiAgICAgICAgOnBhcmFtIGRlZmF1bHRfbmFtZTogVGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhlIGxvZyBmaWxlLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBjYWxsYWJsZShzZWxmLm5hbWVyKToKICAgICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdF9uYW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5uYW1lcihkZWZhdWx0X25hbWUpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiByb3RhdGUoc2VsZiwgc291cmNlLCBkZXN0KToKICAgICAgICAiIiIKICAgICAgICBXaGVuIHJvdGF0aW5nLCByb3RhdGUgdGhlIGN1cnJlbnQgbG9nLgoKICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ3JvdGF0b3InIGF0dHJpYnV0ZSBvZiB0aGUKICAgICAgICBoYW5kbGVyLCBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBzb3VyY2UgYW5kIGRlc3QgYXJndW1lbnRzIHRvCiAgICAgICAgaXQuIElmIHRoZSBhdHRyaWJ1dGUgaXNuJ3QgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIE5vbmUpLCB0aGUgc291cmNlCiAgICAgICAgaXMgc2ltcGx5IHJlbmFtZWQgdG8gdGhlIGRlc3RpbmF0aW9uLgoKICAgICAgICA6cGFyYW0gc291cmNlOiBUaGUgc291cmNlIGZpbGVuYW1lLiBUaGlzIGlzIG5vcm1hbGx5IHRoZSBiYXNlCiAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGUuZy4gJ3Rlc3QubG9nJwogICAgICAgIDpwYXJhbSBkZXN0OiAgIFRoZSBkZXN0aW5hdGlvbiBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseQogICAgICAgICAgICAgICAgICAgICAgIHdoYXQgdGhlIHNvdXJjZSBpcyByb3RhdGVkIHRvLCBlLmcuICd0ZXN0LmxvZy4xJy4KICAgICAgICAiIiIKICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5yb3RhdG9yKToKICAgICAgICAgICAgIyBJc3N1ZSAxODk0MDogQSBmaWxlIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgaWYgZGVsYXkgaXMgVHJ1ZS4KICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc291cmNlKToKICAgICAgICAgICAgICAgIG9zLnJlbmFtZShzb3VyY2UsIGRlc3QpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5yb3RhdG9yKHNvdXJjZSwgZGVzdCkKCmNsYXNzIFJvdGF0aW5nRmlsZUhhbmRsZXIoQmFzZVJvdGF0aW5nSGFuZGxlcik6CiAgICAiIiIKICAgIEhhbmRsZXIgZm9yIGxvZ2dpbmcgdG8gYSBzZXQgb2YgZmlsZXMsIHdoaWNoIHN3aXRjaGVzIGZyb20gb25lIGZpbGUKICAgIHRvIHRoZSBuZXh0IHdoZW4gdGhlIGN1cnJlbnQgZmlsZSByZWFjaGVzIGEgY2VydGFpbiBzaXplLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLAogICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlLCBlcnJvcnM9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgT3BlbiB0aGUgc3BlY2lmaWVkIGZpbGUgYW5kIHVzZSBpdCBhcyB0aGUgc3RyZWFtIGZvciBsb2dnaW5nLgoKICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZmlsZSBncm93cyBpbmRlZmluaXRlbHkuIFlvdSBjYW4gc3BlY2lmeSBwYXJ0aWN1bGFyCiAgICAgICAgdmFsdWVzIG9mIG1heEJ5dGVzIGFuZCBiYWNrdXBDb3VudCB0byBhbGxvdyB0aGUgZmlsZSB0byByb2xsb3ZlciBhdAogICAgICAgIGEgcHJlZGV0ZXJtaW5lZCBzaXplLgoKICAgICAgICBSb2xsb3ZlciBvY2N1cnMgd2hlbmV2ZXIgdGhlIGN1cnJlbnQgbG9nIGZpbGUgaXMgbmVhcmx5IG1heEJ5dGVzIGluCiAgICAgICAgbGVuZ3RoLiBJZiBiYWNrdXBDb3VudCBpcyA+PSAxLCB0aGUgc3lzdGVtIHdpbGwgc3VjY2Vzc2l2ZWx5IGNyZWF0ZQogICAgICAgIG5ldyBmaWxlcyB3aXRoIHRoZSBzYW1lIHBhdGhuYW1lIGFzIHRoZSBiYXNlIGZpbGUsIGJ1dCB3aXRoIGV4dGVuc2lvbnMKICAgICAgICAiLjEiLCAiLjIiIGV0Yy4gYXBwZW5kZWQgdG8gaXQuIEZvciBleGFtcGxlLCB3aXRoIGEgYmFja3VwQ291bnQgb2YgNQogICAgICAgIGFuZCBhIGJhc2UgZmlsZSBuYW1lIG9mICJhcHAubG9nIiwgeW91IHdvdWxkIGdldCAiYXBwLmxvZyIsCiAgICAgICAgImFwcC5sb2cuMSIsICJhcHAubG9nLjIiLCAuLi4gdGhyb3VnaCB0byAiYXBwLmxvZy41Ii4gVGhlIGZpbGUgYmVpbmcKICAgICAgICB3cml0dGVuIHRvIGlzIGFsd2F5cyAiYXBwLmxvZyIgLSB3aGVuIGl0IGdldHMgZmlsbGVkIHVwLCBpdCBpcyBjbG9zZWQKICAgICAgICBhbmQgcmVuYW1lZCB0byAiYXBwLmxvZy4xIiwgYW5kIGlmIGZpbGVzICJhcHAubG9nLjEiLCAiYXBwLmxvZy4yIiBldGMuCiAgICAgICAgZXhpc3QsIHRoZW4gdGhleSBhcmUgcmVuYW1lZCB0byAiYXBwLmxvZy4yIiwgImFwcC5sb2cuMyIgZXRjLgogICAgICAgIHJlc3BlY3RpdmVseS4KCiAgICAgICAgSWYgbWF4Qnl0ZXMgaXMgemVybywgcm9sbG92ZXIgbmV2ZXIgb2NjdXJzLgogICAgICAgICIiIgogICAgICAgICMgSWYgcm90YXRpb24vcm9sbG92ZXIgaXMgd2FudGVkLCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gdXNlIGFub3RoZXIKICAgICAgICAjIG1vZGUuIElmIGZvciBleGFtcGxlICd3JyB3ZXJlIHNwZWNpZmllZCwgdGhlbiBpZiB0aGVyZSB3ZXJlIG11bHRpcGxlCiAgICAgICAgIyBydW5zIG9mIHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLCB0aGUgbG9ncyBmcm9tIHByZXZpb3VzIHJ1bnMgd291bGQgYmUKICAgICAgICAjIGxvc3QgaWYgdGhlICd3JyBpcyByZXNwZWN0ZWQsIGJlY2F1c2UgdGhlIGxvZyBmaWxlIHdvdWxkIGJlIHRydW5jYXRlZAogICAgICAgICMgb24gZWFjaCBydW4uCiAgICAgICAgaWYgbWF4Qnl0ZXMgPiAwOgogICAgICAgICAgICBtb2RlID0gJ2EnCiAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgogICAgICAgICAgICBlbmNvZGluZyA9IGlvLnRleHRfZW5jb2RpbmcoZW5jb2RpbmcpCiAgICAgICAgQmFzZVJvdGF0aW5nSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1kZWxheSwgZXJyb3JzPWVycm9ycykKICAgICAgICBzZWxmLm1heEJ5dGVzID0gbWF4Qnl0ZXMKICAgICAgICBzZWxmLmJhY2t1cENvdW50ID0gYmFja3VwQ291bnQKCiAgICBkZWYgZG9Sb2xsb3ZlcihzZWxmKToKICAgICAgICAiIiIKICAgICAgICBEbyBhIHJvbGxvdmVyLCBhcyBkZXNjcmliZWQgaW4gX19pbml0X18oKS4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLnN0cmVhbToKICAgICAgICAgICAgc2VsZi5zdHJlYW0uY2xvc2UoKQogICAgICAgICAgICBzZWxmLnN0cmVhbSA9IE5vbmUKICAgICAgICBpZiBzZWxmLmJhY2t1cENvdW50ID4gMDoKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2VsZi5iYWNrdXBDb3VudCAtIDEsIDAsIC0xKToKICAgICAgICAgICAgICAgIHNmbiA9IHNlbGYucm90YXRpb25fZmlsZW5hbWUoIiVzLiVkIiAlIChzZWxmLmJhc2VGaWxlbmFtZSwgaSkpCiAgICAgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKCIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIDEpKQogICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2ZuKToKICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZGZuKQogICAgICAgICAgICAgICAgICAgIG9zLnJlbmFtZShzZm4sIGRmbikKICAgICAgICAgICAgZGZuID0gc2VsZi5yb3RhdGlvbl9maWxlbmFtZShzZWxmLmJhc2VGaWxlbmFtZSArICIuMSIpCiAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRmbik6CiAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZGZuKQogICAgICAgICAgICBzZWxmLnJvdGF0ZShzZWxmLmJhc2VGaWxlbmFtZSwgZGZuKQogICAgICAgIGlmIG5vdCBzZWxmLmRlbGF5OgogICAgICAgICAgICBzZWxmLnN0cmVhbSA9IHNlbGYuX29wZW4oKQoKICAgIGRlZiBzaG91bGRSb2xsb3ZlcihzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIERldGVybWluZSBpZiByb2xsb3ZlciBzaG91bGQgb2NjdXIuCgogICAgICAgIEJhc2ljYWxseSwgc2VlIGlmIHRoZSBzdXBwbGllZCByZWNvcmQgd291bGQgY2F1c2UgdGhlIGZpbGUgdG8gZXhjZWVkCiAgICAgICAgdGhlIHNpemUgbGltaXQgd2UgaGF2ZS4KICAgICAgICAiIiIKICAgICAgICAjIFNlZSBicG8tNDU0MDE6IE5ldmVyIHJvbGxvdmVyIGFueXRoaW5nIG90aGVyIHRoYW4gcmVndWxhciBmaWxlcwogICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuYmFzZUZpbGVuYW1lKSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYuYmFzZUZpbGVuYW1lKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgaWYgc2VsZi5zdHJlYW0gaXMgTm9uZTogICAgICAgICAgICAgICAgICMgZGVsYXkgd2FzIHNldC4uLgogICAgICAgICAgICBzZWxmLnN0cmVhbSA9IHNlbGYuX29wZW4oKQogICAgICAgIGlmIHNlbGYubWF4Qnl0ZXMgPiAwOiAgICAgICAgICAgICAgICAgICAjIGFyZSB3ZSByb2xsaW5nIG92ZXI/CiAgICAgICAgICAgIG1zZyA9ICIlc1xuIiAlIHNlbGYuZm9ybWF0KHJlY29yZCkKICAgICAgICAgICAgc2VsZi5zdHJlYW0uc2VlaygwLCAyKSAgI2R1ZSB0byBub24tcG9zaXgtY29tcGxpYW50IFdpbmRvd3MgZmVhdHVyZQogICAgICAgICAgICBpZiBzZWxmLnN0cmVhbS50ZWxsKCkgKyBsZW4obXNnKSA+PSBzZWxmLm1heEJ5dGVzOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gRmFsc2UKCmNsYXNzIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcihCYXNlUm90YXRpbmdIYW5kbGVyKToKICAgICIiIgogICAgSGFuZGxlciBmb3IgbG9nZ2luZyB0byBhIGZpbGUsIHJvdGF0aW5nIHRoZSBsb2cgZmlsZSBhdCBjZXJ0YWluIHRpbWVkCiAgICBpbnRlcnZhbHMuCgogICAgSWYgYmFja3VwQ291bnQgaXMgPiAwLCB3aGVuIHJvbGxvdmVyIGlzIGRvbmUsIG5vIG1vcmUgdGhhbiBiYWNrdXBDb3VudAogICAgZmlsZXMgYXJlIGtlcHQgLSB0aGUgb2xkZXN0IG9uZXMgYXJlIGRlbGV0ZWQuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgd2hlbj0naCcsIGludGVydmFsPTEsIGJhY2t1cENvdW50PTAsCiAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UsIHV0Yz1GYWxzZSwgYXRUaW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgZXJyb3JzPU5vbmUpOgogICAgICAgIGVuY29kaW5nID0gaW8udGV4dF9lbmNvZGluZyhlbmNvZGluZykKICAgICAgICBCYXNlUm90YXRpbmdIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCAnYScsIGVuY29kaW5nPWVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9ZGVsYXksIGVycm9ycz1lcnJvcnMpCiAgICAgICAgc2VsZi53aGVuID0gd2hlbi51cHBlcigpCiAgICAgICAgc2VsZi5iYWNrdXBDb3VudCA9IGJhY2t1cENvdW50CiAgICAgICAgc2VsZi51dGMgPSB1dGMKICAgICAgICBzZWxmLmF0VGltZSA9IGF0VGltZQogICAgICAgICMgQ2FsY3VsYXRlIHRoZSByZWFsIHJvbGxvdmVyIGludGVydmFsLCB3aGljaCBpcyBqdXN0IHRoZSBudW1iZXIgb2YKICAgICAgICAjIHNlY29uZHMgYmV0d2VlbiByb2xsb3ZlcnMuICBBbHNvIHNldCB0aGUgZmlsZW5hbWUgc3VmZml4IHVzZWQgd2hlbgogICAgICAgICMgYSByb2xsb3ZlciBvY2N1cnMuICBDdXJyZW50ICd3aGVuJyBldmVudHMgc3VwcG9ydGVkOgogICAgICAgICMgUyAtIFNlY29uZHMKICAgICAgICAjIE0gLSBNaW51dGVzCiAgICAgICAgIyBIIC0gSG91cnMKICAgICAgICAjIEQgLSBEYXlzCiAgICAgICAgIyBtaWRuaWdodCAtIHJvbGwgb3ZlciBhdCBtaWRuaWdodAogICAgICAgICMgV3swLTZ9IC0gcm9sbCBvdmVyIG9uIGEgY2VydGFpbiBkYXk7IDAgLSBNb25kYXkKICAgICAgICAjCiAgICAgICAgIyBDYXNlIG9mIHRoZSAnd2hlbicgc3BlY2lmaWVyIGlzIG5vdCBpbXBvcnRhbnQ7IGxvd2VyIG9yIHVwcGVyIGNhc2UKICAgICAgICAjIHdpbGwgd29yay4KICAgICAgICBpZiBzZWxmLndoZW4gPT0gJ1MnOgogICAgICAgICAgICBzZWxmLmludGVydmFsID0gMSAjIG9uZSBzZWNvbmQKICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgtJU0tJVMiCiAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnTSc6CiAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAjIG9uZSBtaW51dGUKICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgtJU0iCiAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnSCc6CiAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICMgb25lIGhvdXIKICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgiCiAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfShcLlx3Kyk/JCIKICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnRCcgb3Igc2VsZi53aGVuID09ICdNSUROSUdIVCc6CiAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICogMjQgIyBvbmUgZGF5CiAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkIgogICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgZWxpZiBzZWxmLndoZW4uc3RhcnRzd2l0aCgnVycpOgogICAgICAgICAgICBzZWxmLmludGVydmFsID0gNjAgKiA2MCAqIDI0ICogNyAjIG9uZSB3ZWVrCiAgICAgICAgICAgIGlmIGxlbihzZWxmLndoZW4pICE9IDI6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJZb3UgbXVzdCBzcGVjaWZ5IGEgZGF5IGZvciB3ZWVrbHkgcm9sbG92ZXIgZnJvbSAwIHRvIDYgKDAgaXMgTW9uZGF5KTogJXMiICUgc2VsZi53aGVuKQogICAgICAgICAgICBpZiBzZWxmLndoZW5bMV0gPCAnMCcgb3Igc2VsZi53aGVuWzFdID4gJzYnOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBkYXkgc3BlY2lmaWVkIGZvciB3ZWVrbHkgcm9sbG92ZXI6ICVzIiAlIHNlbGYud2hlbikKICAgICAgICAgICAgc2VsZi5kYXlPZldlZWsgPSBpbnQoc2VsZi53aGVuWzFdKQogICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZCIKICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgcm9sbG92ZXIgaW50ZXJ2YWwgc3BlY2lmaWVkOiAlcyIgJSBzZWxmLndoZW4pCgogICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByZS5jb21waWxlKHNlbGYuZXh0TWF0Y2gsIHJlLkFTQ0lJKQogICAgICAgIHNlbGYuaW50ZXJ2YWwgPSBzZWxmLmludGVydmFsICogaW50ZXJ2YWwgIyBtdWx0aXBseSBieSB1bml0cyByZXF1ZXN0ZWQKICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSBhZGRlZCBiZWNhdXNlIHRoZSBmaWxlbmFtZSBwYXNzZWQgaW4gY291bGQgYmUgYQogICAgICAgICMgcGF0aCBvYmplY3QgKHNlZSBJc3N1ZSAjMjc0OTMpLCBidXQgc2VsZi5iYXNlRmlsZW5hbWUgd2lsbCBiZSBhIHN0cmluZwogICAgICAgIGZpbGVuYW1lID0gc2VsZi5iYXNlRmlsZW5hbWUKICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgIHQgPSBvcy5zdGF0KGZpbGVuYW1lKVtTVF9NVElNRV0KICAgICAgICBlbHNlOgogICAgICAgICAgICB0ID0gaW50KHRpbWUudGltZSgpKQogICAgICAgIHNlbGYucm9sbG92ZXJBdCA9IHNlbGYuY29tcHV0ZVJvbGxvdmVyKHQpCgogICAgZGVmIGNvbXB1dGVSb2xsb3ZlcihzZWxmLCBjdXJyZW50VGltZSk6CiAgICAgICAgIiIiCiAgICAgICAgV29yayBvdXQgdGhlIHJvbGxvdmVyIHRpbWUgYmFzZWQgb24gdGhlIHNwZWNpZmllZCB0aW1lLgogICAgICAgICIiIgogICAgICAgIHJlc3VsdCA9IGN1cnJlbnRUaW1lICsgc2VsZi5pbnRlcnZhbAogICAgICAgICMgSWYgd2UgYXJlIHJvbGxpbmcgb3ZlciBhdCBtaWRuaWdodCBvciB3ZWVrbHksIHRoZW4gdGhlIGludGVydmFsIGlzIGFscmVhZHkga25vd24uCiAgICAgICAgIyBXaGF0IHdlIG5lZWQgdG8gZmlndXJlIG91dCBpcyBXSEVOIHRoZSBuZXh0IGludGVydmFsIGlzLiAgSW4gb3RoZXIgd29yZHMsCiAgICAgICAgIyBpZiB5b3UgYXJlIHJvbGxpbmcgb3ZlciBhdCBtaWRuaWdodCwgdGhlbiB5b3VyIGJhc2UgaW50ZXJ2YWwgaXMgMSBkYXksCiAgICAgICAgIyBidXQgeW91IHdhbnQgdG8gc3RhcnQgdGhhdCBvbmUgZGF5IGNsb2NrIGF0IG1pZG5pZ2h0LCBub3Qgbm93LiAgU28sIHdlCiAgICAgICAgIyBoYXZlIHRvIGZ1ZGdlIHRoZSByb2xsb3ZlckF0IHZhbHVlIGluIG9yZGVyIHRvIHRyaWdnZXIgdGhlIGZpcnN0IHJvbGxvdmVyCiAgICAgICAgIyBhdCB0aGUgcmlnaHQgdGltZS4gIEFmdGVyIHRoYXQsIHRoZSByZWd1bGFyIGludGVydmFsIHdpbGwgdGFrZSBjYXJlIG9mCiAgICAgICAgIyB0aGUgcmVzdC4gIE5vdGUgdGhhdCB0aGlzIGNvZGUgZG9lc24ndCBjYXJlIGFib3V0IGxlYXAgc2Vjb25kcy4gOikKICAgICAgICBpZiBzZWxmLndoZW4gPT0gJ01JRE5JR0hUJyBvciBzZWxmLndoZW4uc3RhcnRzd2l0aCgnVycpOgogICAgICAgICAgICAjIFRoaXMgY291bGQgYmUgZG9uZSB3aXRoIGxlc3MgY29kZSwgYnV0IEkgd2FudGVkIGl0IHRvIGJlIGNsZWFyCiAgICAgICAgICAgIGlmIHNlbGYudXRjOgogICAgICAgICAgICAgICAgdCA9IHRpbWUuZ210aW1lKGN1cnJlbnRUaW1lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdCA9IHRpbWUubG9jYWx0aW1lKGN1cnJlbnRUaW1lKQogICAgICAgICAgICBjdXJyZW50SG91ciA9IHRbM10KICAgICAgICAgICAgY3VycmVudE1pbnV0ZSA9IHRbNF0KICAgICAgICAgICAgY3VycmVudFNlY29uZCA9IHRbNV0KICAgICAgICAgICAgY3VycmVudERheSA9IHRbNl0KICAgICAgICAgICAgIyByIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBsZWZ0IGJldHdlZW4gbm93IGFuZCB0aGUgbmV4dCByb3RhdGlvbgogICAgICAgICAgICBpZiBzZWxmLmF0VGltZSBpcyBOb25lOgogICAgICAgICAgICAgICAgcm90YXRlX3RzID0gX01JRE5JR0hUCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByb3RhdGVfdHMgPSAoKHNlbGYuYXRUaW1lLmhvdXIgKiA2MCArIHNlbGYuYXRUaW1lLm1pbnV0ZSkqNjAgKwogICAgICAgICAgICAgICAgICAgIHNlbGYuYXRUaW1lLnNlY29uZCkKCiAgICAgICAgICAgIHIgPSByb3RhdGVfdHMgLSAoKGN1cnJlbnRIb3VyICogNjAgKyBjdXJyZW50TWludXRlKSAqIDYwICsKICAgICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQpCiAgICAgICAgICAgIGlmIHIgPCAwOgogICAgICAgICAgICAgICAgIyBSb3RhdGUgdGltZSBpcyBiZWZvcmUgdGhlIGN1cnJlbnQgdGltZSAoZm9yIGV4YW1wbGUgd2hlbgogICAgICAgICAgICAgICAgIyBzZWxmLnJvdGF0ZUF0IGlzIDEzOjQ1IGFuZCBpdCBub3cgMTQ6MTUpLCByb3RhdGlvbiBpcwogICAgICAgICAgICAgICAgIyB0b21vcnJvdy4KICAgICAgICAgICAgICAgIHIgKz0gX01JRE5JR0hUCiAgICAgICAgICAgICAgICBjdXJyZW50RGF5ID0gKGN1cnJlbnREYXkgKyAxKSAlIDcKICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudFRpbWUgKyByCiAgICAgICAgICAgICMgSWYgd2UgYXJlIHJvbGxpbmcgb3ZlciBvbiBhIGNlcnRhaW4gZGF5LCBhZGQgaW4gdGhlIG51bWJlciBvZiBkYXlzIHVudGlsCiAgICAgICAgICAgICMgdGhlIG5leHQgcm9sbG92ZXIsIGJ1dCBvZmZzZXQgYnkgMSBzaW5jZSB3ZSBqdXN0IGNhbGN1bGF0ZWQgdGhlIHRpbWUKICAgICAgICAgICAgIyB1bnRpbCB0aGUgbmV4dCBkYXkgc3RhcnRzLiAgVGhlcmUgYXJlIHRocmVlIGNhc2VzOgogICAgICAgICAgICAjIENhc2UgMSkgVGhlIGRheSB0byByb2xsb3ZlciBpcyB0b2RheTsgaW4gdGhpcyBjYXNlLCBkbyBub3RoaW5nCiAgICAgICAgICAgICMgQ2FzZSAyKSBUaGUgZGF5IHRvIHJvbGxvdmVyIGlzIGZ1cnRoZXIgaW4gdGhlIGludGVydmFsIChpLmUuLCB0b2RheSBpcwogICAgICAgICAgICAjICAgICAgICAgZGF5IDIgKFdlZG5lc2RheSkgYW5kIHJvbGxvdmVyIGlzIG9uIGRheSA2IChTdW5kYXkpLiAgRGF5cyB0bwogICAgICAgICAgICAjICAgICAgICAgbmV4dCByb2xsb3ZlciBpcyBzaW1wbHkgNiAtIDIgLSAxLCBvciAzLgogICAgICAgICAgICAjIENhc2UgMykgVGhlIGRheSB0byByb2xsb3ZlciBpcyBiZWhpbmQgdXMgaW4gdGhlIGludGVydmFsIChpLmUuLCB0b2RheQogICAgICAgICAgICAjICAgICAgICAgaXMgZGF5IDUgKFNhdHVyZGF5KSBhbmQgcm9sbG92ZXIgaXMgb24gZGF5IDMgKFRodXJzZGF5KS4KICAgICAgICAgICAgIyAgICAgICAgIERheXMgdG8gcm9sbG92ZXIgaXMgNiAtIDUgKyAzLCBvciA0LiAgSW4gdGhpcyBjYXNlLCBpdCdzIHRoZQogICAgICAgICAgICAjICAgICAgICAgbnVtYmVyIG9mIGRheXMgbGVmdCBpbiB0aGUgY3VycmVudCB3ZWVrICgxKSBwbHVzIHRoZSBudW1iZXIKICAgICAgICAgICAgIyAgICAgICAgIG9mIGRheXMgaW4gdGhlIG5leHQgd2VlayB1bnRpbCB0aGUgcm9sbG92ZXIgZGF5ICgzKS4KICAgICAgICAgICAgIyBUaGUgY2FsY3VsYXRpb25zIGRlc2NyaWJlZCBpbiAyKSBhbmQgMykgYWJvdmUgbmVlZCB0byBoYXZlIGEgZGF5IGFkZGVkLgogICAgICAgICAgICAjIFRoaXMgaXMgYmVjYXVzZSB0aGUgYWJvdmUgdGltZSBjYWxjdWxhdGlvbiB0YWtlcyB1cyB0byBtaWRuaWdodCBvbiB0aGlzCiAgICAgICAgICAgICMgZGF5LCBpLmUuIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBkYXkuCiAgICAgICAgICAgIGlmIHNlbGYud2hlbi5zdGFydHN3aXRoKCdXJyk6CiAgICAgICAgICAgICAgICBkYXkgPSBjdXJyZW50RGF5ICMgMCBpcyBNb25kYXkKICAgICAgICAgICAgICAgIGlmIGRheSAhPSBzZWxmLmRheU9mV2VlazoKICAgICAgICAgICAgICAgICAgICBpZiBkYXkgPCBzZWxmLmRheU9mV2VlazoKICAgICAgICAgICAgICAgICAgICAgICAgZGF5c1RvV2FpdCA9IHNlbGYuZGF5T2ZXZWVrIC0gZGF5CiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgZGF5c1RvV2FpdCA9IDYgLSBkYXkgKyBzZWxmLmRheU9mV2VlayArIDEKICAgICAgICAgICAgICAgICAgICBuZXdSb2xsb3ZlckF0ID0gcmVzdWx0ICsgKGRheXNUb1dhaXQgKiAoNjAgKiA2MCAqIDI0KSkKICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi51dGM6CiAgICAgICAgICAgICAgICAgICAgICAgIGRzdE5vdyA9IHRbLTFdCiAgICAgICAgICAgICAgICAgICAgICAgIGRzdEF0Um9sbG92ZXIgPSB0aW1lLmxvY2FsdGltZShuZXdSb2xsb3ZlckF0KVstMV0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgZHN0Tm93ICE9IGRzdEF0Um9sbG92ZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZHN0Tm93OiAgIyBEU1Qga2lja3MgaW4gYmVmb3JlIG5leHQgcm9sbG92ZXIsIHNvIHdlIG5lZWQgdG8gZGVkdWN0IGFuIGhvdXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRlbmQgPSAtMzYwMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICMgRFNUIGJvd3Mgb3V0IGJlZm9yZSBuZXh0IHJvbGxvdmVyLCBzbyB3ZSBuZWVkIHRvIGFkZCBhbiBob3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkZW5kID0gMzYwMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Um9sbG92ZXJBdCArPSBhZGRlbmQKICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXdSb2xsb3ZlckF0CiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBzaG91bGRSb2xsb3ZlcihzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIERldGVybWluZSBpZiByb2xsb3ZlciBzaG91bGQgb2NjdXIuCgogICAgICAgIHJlY29yZCBpcyBub3QgdXNlZCwgYXMgd2UgYXJlIGp1c3QgY29tcGFyaW5nIHRpbWVzLCBidXQgaXQgaXMgbmVlZGVkIHNvCiAgICAgICAgdGhlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSB0aGUgc2FtZQogICAgICAgICIiIgogICAgICAgIHQgPSBpbnQodGltZS50aW1lKCkpCiAgICAgICAgaWYgdCA+PSBzZWxmLnJvbGxvdmVyQXQ6CiAgICAgICAgICAgICMgU2VlICM4OTU2NDogTmV2ZXIgcm9sbG92ZXIgYW55dGhpbmcgb3RoZXIgdGhhbiByZWd1bGFyIGZpbGVzCiAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuYmFzZUZpbGVuYW1lKSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYuYmFzZUZpbGVuYW1lKToKICAgICAgICAgICAgICAgICMgVGhlIGZpbGUgaXMgbm90IGEgcmVndWxhciBmaWxlLCBzbyBkbyBub3Qgcm9sbG92ZXIsIGJ1dCBkbwogICAgICAgICAgICAgICAgIyBzZXQgdGhlIG5leHQgcm9sbG92ZXIgdGltZSB0byBhdm9pZCByZXBlYXRlZCBjaGVja3MuCiAgICAgICAgICAgICAgICBzZWxmLnJvbGxvdmVyQXQgPSBzZWxmLmNvbXB1dGVSb2xsb3Zlcih0KQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBnZXRGaWxlc1RvRGVsZXRlKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIERldGVybWluZSB0aGUgZmlsZXMgdG8gZGVsZXRlIHdoZW4gcm9sbGluZyBvdmVyLgoKICAgICAgICBNb3JlIHNwZWNpZmljIHRoYW4gdGhlIGVhcmxpZXIgbWV0aG9kLCB3aGljaCBqdXN0IHVzZWQgZ2xvYi5nbG9iKCkuCiAgICAgICAgIiIiCiAgICAgICAgZGlyTmFtZSwgYmFzZU5hbWUgPSBvcy5wYXRoLnNwbGl0KHNlbGYuYmFzZUZpbGVuYW1lKQogICAgICAgIGZpbGVOYW1lcyA9IG9zLmxpc3RkaXIoZGlyTmFtZSkKICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICMgU2VlIGJwby00NDc1MzogRG9uJ3QgdXNlIHRoZSBleHRlbnNpb24gd2hlbiBjb21wdXRpbmcgdGhlIHByZWZpeC4KICAgICAgICBuLCBlID0gb3MucGF0aC5zcGxpdGV4dChiYXNlTmFtZSkKICAgICAgICBwcmVmaXggPSBuICsgJy4nCiAgICAgICAgcGxlbiA9IGxlbihwcmVmaXgpCiAgICAgICAgZm9yIGZpbGVOYW1lIGluIGZpbGVOYW1lczoKICAgICAgICAgICAgaWYgc2VsZi5uYW1lciBpcyBOb25lOgogICAgICAgICAgICAgICAgIyBPdXIgZmlsZXMgd2lsbCBhbHdheXMgc3RhcnQgd2l0aCBiYXNlTmFtZQogICAgICAgICAgICAgICAgaWYgbm90IGZpbGVOYW1lLnN0YXJ0c3dpdGgoYmFzZU5hbWUpOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIE91ciBmaWxlcyBjb3VsZCBiZSBqdXN0IGFib3V0IGFueXRoaW5nIGFmdGVyIGN1c3RvbSBuYW1pbmcsIGJ1dAogICAgICAgICAgICAgICAgIyBsaWtlbHkgY2FuZGlkYXRlcyBhcmUgb2YgdGhlIGZvcm0KICAgICAgICAgICAgICAgICMgZm9vLmxvZy5EQVRFVElNRV9TVUZGSVggb3IgZm9vLkRBVEVUSU1FX1NVRkZJWC5sb2cKICAgICAgICAgICAgICAgIGlmIChub3QgZmlsZU5hbWUuc3RhcnRzd2l0aChiYXNlTmFtZSkgYW5kIGZpbGVOYW1lLmVuZHN3aXRoKGUpIGFuZAogICAgICAgICAgICAgICAgICAgIGxlbihmaWxlTmFtZSkgPiAocGxlbiArIDEpIGFuZCBub3QgZmlsZU5hbWVbcGxlbisxXS5pc2RpZ2l0KCkpOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiBmaWxlTmFtZVs6cGxlbl0gPT0gcHJlZml4OgogICAgICAgICAgICAgICAgc3VmZml4ID0gZmlsZU5hbWVbcGxlbjpdCiAgICAgICAgICAgICAgICAjIFNlZSBicG8tNDU2Mjg6IFRoZSBkYXRlL3RpbWUgc3VmZml4IGNvdWxkIGJlIGFueXdoZXJlIGluIHRoZQogICAgICAgICAgICAgICAgIyBmaWxlbmFtZQogICAgICAgICAgICAgICAgcGFydHMgPSBzdWZmaXguc3BsaXQoJy4nKQogICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gcGFydHM6CiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRNYXRjaC5tYXRjaChwYXJ0KToKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChvcy5wYXRoLmpvaW4oZGlyTmFtZSwgZmlsZU5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGlmIGxlbihyZXN1bHQpIDwgc2VsZi5iYWNrdXBDb3VudDoKICAgICAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQuc29ydCgpCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFs6bGVuKHJlc3VsdCkgLSBzZWxmLmJhY2t1cENvdW50XQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgZG9Sb2xsb3ZlcihzZWxmKToKICAgICAgICAiIiIKICAgICAgICBkbyBhIHJvbGxvdmVyOyBpbiB0aGlzIGNhc2UsIGEgZGF0ZS90aW1lIHN0YW1wIGlzIGFwcGVuZGVkIHRvIHRoZSBmaWxlbmFtZQogICAgICAgIHdoZW4gdGhlIHJvbGxvdmVyIGhhcHBlbnMuICBIb3dldmVyLCB5b3Ugd2FudCB0aGUgZmlsZSB0byBiZSBuYW1lZCBmb3IgdGhlCiAgICAgICAgc3RhcnQgb2YgdGhlIGludGVydmFsLCBub3QgdGhlIGN1cnJlbnQgdGltZS4gIElmIHRoZXJlIGlzIGEgYmFja3VwIGNvdW50LAogICAgICAgIHRoZW4gd2UgaGF2ZSB0byBnZXQgYSBsaXN0IG9mIG1hdGNoaW5nIGZpbGVuYW1lcywgc29ydCB0aGVtIGFuZCByZW1vdmUKICAgICAgICB0aGUgb25lIHdpdGggdGhlIG9sZGVzdCBzdWZmaXguCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5zdHJlYW06CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBOb25lCiAgICAgICAgIyBnZXQgdGhlIHRpbWUgdGhhdCB0aGlzIHNlcXVlbmNlIHN0YXJ0ZWQgYXQgYW5kIG1ha2UgaXQgYSBUaW1lVHVwbGUKICAgICAgICBjdXJyZW50VGltZSA9IGludCh0aW1lLnRpbWUoKSkKICAgICAgICBkc3ROb3cgPSB0aW1lLmxvY2FsdGltZShjdXJyZW50VGltZSlbLTFdCiAgICAgICAgdCA9IHNlbGYucm9sbG92ZXJBdCAtIHNlbGYuaW50ZXJ2YWwKICAgICAgICBpZiBzZWxmLnV0YzoKICAgICAgICAgICAgdGltZVR1cGxlID0gdGltZS5nbXRpbWUodCkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0aW1lVHVwbGUgPSB0aW1lLmxvY2FsdGltZSh0KQogICAgICAgICAgICBkc3RUaGVuID0gdGltZVR1cGxlWy0xXQogICAgICAgICAgICBpZiBkc3ROb3cgIT0gZHN0VGhlbjoKICAgICAgICAgICAgICAgIGlmIGRzdE5vdzoKICAgICAgICAgICAgICAgICAgICBhZGRlbmQgPSAzNjAwCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGFkZGVuZCA9IC0zNjAwCiAgICAgICAgICAgICAgICB0aW1lVHVwbGUgPSB0aW1lLmxvY2FsdGltZSh0ICsgYWRkZW5kKQogICAgICAgIGRmbiA9IHNlbGYucm90YXRpb25fZmlsZW5hbWUoc2VsZi5iYXNlRmlsZW5hbWUgKyAiLiIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5zdHJmdGltZShzZWxmLnN1ZmZpeCwgdGltZVR1cGxlKSkKICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICBvcy5yZW1vdmUoZGZuKQogICAgICAgIHNlbGYucm90YXRlKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCiAgICAgICAgaWYgc2VsZi5iYWNrdXBDb3VudCA+IDA6CiAgICAgICAgICAgIGZvciBzIGluIHNlbGYuZ2V0RmlsZXNUb0RlbGV0ZSgpOgogICAgICAgICAgICAgICAgb3MucmVtb3ZlKHMpCiAgICAgICAgaWYgbm90IHNlbGYuZGVsYXk6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAgICAgICAgbmV3Um9sbG92ZXJBdCA9IHNlbGYuY29tcHV0ZVJvbGxvdmVyKGN1cnJlbnRUaW1lKQogICAgICAgIHdoaWxlIG5ld1JvbGxvdmVyQXQgPD0gY3VycmVudFRpbWU6CiAgICAgICAgICAgIG5ld1JvbGxvdmVyQXQgPSBuZXdSb2xsb3ZlckF0ICsgc2VsZi5pbnRlcnZhbAogICAgICAgICNJZiBEU1QgY2hhbmdlcyBhbmQgbWlkbmlnaHQgb3Igd2Vla2x5IHJvbGxvdmVyLCBhZGp1c3QgZm9yIHRoaXMuCiAgICAgICAgaWYgKHNlbGYud2hlbiA9PSAnTUlETklHSFQnIG9yIHNlbGYud2hlbi5zdGFydHN3aXRoKCdXJykpIGFuZCBub3Qgc2VsZi51dGM6CiAgICAgICAgICAgIGRzdEF0Um9sbG92ZXIgPSB0aW1lLmxvY2FsdGltZShuZXdSb2xsb3ZlckF0KVstMV0KICAgICAgICAgICAgaWYgZHN0Tm93ICE9IGRzdEF0Um9sbG92ZXI6CiAgICAgICAgICAgICAgICBpZiBub3QgZHN0Tm93OiAgIyBEU1Qga2lja3MgaW4gYmVmb3JlIG5leHQgcm9sbG92ZXIsIHNvIHdlIG5lZWQgdG8gZGVkdWN0IGFuIGhvdXIKICAgICAgICAgICAgICAgICAgICBhZGRlbmQgPSAtMzYwMAogICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICMgRFNUIGJvd3Mgb3V0IGJlZm9yZSBuZXh0IHJvbGxvdmVyLCBzbyB3ZSBuZWVkIHRvIGFkZCBhbiBob3VyCiAgICAgICAgICAgICAgICAgICAgYWRkZW5kID0gMzYwMAogICAgICAgICAgICAgICAgbmV3Um9sbG92ZXJBdCArPSBhZGRlbmQKICAgICAgICBzZWxmLnJvbGxvdmVyQXQgPSBuZXdSb2xsb3ZlckF0CgpjbGFzcyBXYXRjaGVkRmlsZUhhbmRsZXIobG9nZ2luZy5GaWxlSGFuZGxlcik6CiAgICAiIiIKICAgIEEgaGFuZGxlciBmb3IgbG9nZ2luZyB0byBhIGZpbGUsIHdoaWNoIHdhdGNoZXMgdGhlIGZpbGUKICAgIHRvIHNlZSBpZiBpdCBoYXMgY2hhbmdlZCB3aGlsZSBpbiB1c2UuIFRoaXMgY2FuIGhhcHBlbiBiZWNhdXNlIG9mCiAgICB1c2FnZSBvZiBwcm9ncmFtcyBzdWNoIGFzIG5ld3N5c2xvZyBhbmQgbG9ncm90YXRlIHdoaWNoIHBlcmZvcm0KICAgIGxvZyBmaWxlIHJvdGF0aW9uLiBUaGlzIGhhbmRsZXIsIGludGVuZGVkIGZvciB1c2UgdW5kZXIgVW5peCwKICAgIHdhdGNoZXMgdGhlIGZpbGUgdG8gc2VlIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IGVtaXQuCiAgICAoQSBmaWxlIGhhcyBjaGFuZ2VkIGlmIGl0cyBkZXZpY2Ugb3IgaW5vZGUgaGF2ZSBjaGFuZ2VkLikKICAgIElmIGl0IGhhcyBjaGFuZ2VkLCB0aGUgb2xkIGZpbGUgc3RyZWFtIGlzIGNsb3NlZCwgYW5kIHRoZSBmaWxlCiAgICBvcGVuZWQgdG8gZ2V0IGEgbmV3IHN0cmVhbS4KCiAgICBUaGlzIGhhbmRsZXIgaXMgbm90IGFwcHJvcHJpYXRlIGZvciB1c2UgdW5kZXIgV2luZG93cywgYmVjYXVzZQogICAgdW5kZXIgV2luZG93cyBvcGVuIGZpbGVzIGNhbm5vdCBiZSBtb3ZlZCBvciByZW5hbWVkIC0gbG9nZ2luZwogICAgb3BlbnMgdGhlIGZpbGVzIHdpdGggZXhjbHVzaXZlIGxvY2tzIC0gYW5kIHNvIHRoZXJlIGlzIG5vIG5lZWQKICAgIGZvciBzdWNoIGEgaGFuZGxlci4gRnVydGhlcm1vcmUsIFNUX0lOTyBpcyBub3Qgc3VwcG9ydGVkIHVuZGVyCiAgICBXaW5kb3dzOyBzdGF0IGFsd2F5cyByZXR1cm5zIHplcm8gZm9yIHRoaXMgdmFsdWUuCgogICAgVGhpcyBoYW5kbGVyIGlzIGJhc2VkIG9uIGEgc3VnZ2VzdGlvbiBhbmQgcGF0Y2ggYnkgQ2hhZCBKLgogICAgU2Nocm9lZGVyLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSwKICAgICAgICAgICAgICAgICBlcnJvcnM9Tm9uZSk6CiAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgogICAgICAgICAgICBlbmNvZGluZyA9IGlvLnRleHRfZW5jb2RpbmcoZW5jb2RpbmcpCiAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT1tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGRlbGF5PWRlbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPWVycm9ycykKICAgICAgICBzZWxmLmRldiwgc2VsZi5pbm8gPSAtMSwgLTEKICAgICAgICBzZWxmLl9zdGF0c3RyZWFtKCkKCiAgICBkZWYgX3N0YXRzdHJlYW0oc2VsZik6CiAgICAgICAgaWYgc2VsZi5zdHJlYW06CiAgICAgICAgICAgIHNyZXMgPSBvcy5mc3RhdChzZWxmLnN0cmVhbS5maWxlbm8oKSkKICAgICAgICAgICAgc2VsZi5kZXYsIHNlbGYuaW5vID0gc3Jlc1tTVF9ERVZdLCBzcmVzW1NUX0lOT10KCiAgICBkZWYgcmVvcGVuSWZOZWVkZWQoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgUmVvcGVuIGxvZyBmaWxlIGlmIG5lZWRlZC4KCiAgICAgICAgQ2hlY2tzIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIGFuZCBpZiBpdAogICAgICAgIGhhcywgY2xvc2UgdGhlIG9sZCBzdHJlYW0gYW5kIHJlb3BlbiB0aGUgZmlsZSB0byBnZXQgdGhlCiAgICAgICAgY3VycmVudCBzdHJlYW0uCiAgICAgICAgIiIiCiAgICAgICAgIyBSZWR1Y2UgdGhlIGNoYW5jZSBvZiByYWNlIGNvbmRpdGlvbnMgYnkgc3RhdCdpbmcgYnkgcGF0aCBvbmx5CiAgICAgICAgIyBvbmNlIGFuZCB0aGVuIGZzdGF0J2luZyBvdXIgbmV3IGZkIGlmIHdlIG9wZW5lZCBhIG5ldyBsb2cgc3RyZWFtLgogICAgICAgICMgU2VlIGlzc3VlICMxNDYzMjogVGhhbmtzIHRvIEpvaG4gTXVsbGlnYW4gZm9yIHRoZSBwcm9ibGVtIHJlcG9ydAogICAgICAgICMgYW5kIHBhdGNoLgogICAgICAgIHRyeToKICAgICAgICAgICAgIyBzdGF0IHRoZSBmaWxlIGJ5IHBhdGgsIGNoZWNraW5nIGZvciBleGlzdGVuY2UKICAgICAgICAgICAgc3JlcyA9IG9zLnN0YXQoc2VsZi5iYXNlRmlsZW5hbWUpCiAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICBzcmVzID0gTm9uZQogICAgICAgICMgY29tcGFyZSBmaWxlIHN5c3RlbSBzdGF0IHdpdGggdGhhdCBvZiBvdXIgc3RyZWFtIGZpbGUgaGFuZGxlCiAgICAgICAgaWYgbm90IHNyZXMgb3Igc3Jlc1tTVF9ERVZdICE9IHNlbGYuZGV2IG9yIHNyZXNbU1RfSU5PXSAhPSBzZWxmLmlubzoKICAgICAgICAgICAgaWYgc2VsZi5zdHJlYW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAjIHdlIGhhdmUgYW4gb3BlbiBmaWxlIGhhbmRsZSwgY2xlYW4gaXQgdXAKICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLmZsdXNoKCkKICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLmNsb3NlKCkKICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gTm9uZSAgIyBTZWUgSXNzdWUgIzIxNzQyOiBfb3BlbiAoKSBtaWdodCBmYWlsLgogICAgICAgICAgICAgICAgIyBvcGVuIGEgbmV3IGZpbGUgaGFuZGxlIGFuZCBnZXQgbmV3IHN0YXQgaW5mbyBmcm9tIHRoYXQgZmQKICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAgICAgICAgICAgICAgICBzZWxmLl9zdGF0c3RyZWFtKCkKCiAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIEVtaXQgYSByZWNvcmQuCgogICAgICAgIElmIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgcmVvcGVuIHRoZSBmaWxlIGJlZm9yZSBlbWl0dGluZyB0aGUKICAgICAgICByZWNvcmQgdG8gaXQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5yZW9wZW5JZk5lZWRlZCgpCiAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5lbWl0KHNlbGYsIHJlY29yZCkKCgpjbGFzcyBTb2NrZXRIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6CiAgICAiIiIKICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgbG9nZ2luZyByZWNvcmRzLCBpbiBwaWNrbGUgZm9ybWF0LCB0bwogICAgYSBzdHJlYW1pbmcgc29ja2V0LiBUaGUgc29ja2V0IGlzIGtlcHQgb3BlbiBhY3Jvc3MgbG9nZ2luZyBjYWxscy4KICAgIElmIHRoZSBwZWVyIHJlc2V0cyBpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHJlY29ubmVjdCBvbiB0aGUgbmV4dCBjYWxsLgogICAgVGhlIHBpY2tsZSB3aGljaCBpcyBzZW50IGlzIHRoYXQgb2YgdGhlIExvZ1JlY29yZCdzIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5CiAgICAoX19kaWN0X18pLCBzbyB0aGF0IHRoZSByZWNlaXZlciBkb2VzIG5vdCBuZWVkIHRvIGhhdmUgdGhlIGxvZ2dpbmcgbW9kdWxlCiAgICBpbnN0YWxsZWQgaW4gb3JkZXIgdG8gcHJvY2VzcyB0aGUgbG9nZ2luZyBldmVudC4KCiAgICBUbyB1bnBpY2tsZSB0aGUgcmVjb3JkIGF0IHRoZSByZWNlaXZpbmcgZW5kIGludG8gYSBMb2dSZWNvcmQsIHVzZSB0aGUKICAgIG1ha2VMb2dSZWNvcmQgZnVuY3Rpb24uCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZXMgdGhlIGhhbmRsZXIgd2l0aCBhIHNwZWNpZmljIGhvc3QgYWRkcmVzcyBhbmQgcG9ydC4KCiAgICAgICAgV2hlbiB0aGUgYXR0cmlidXRlICpjbG9zZU9uRXJyb3IqIGlzIHNldCB0byBUcnVlIC0gaWYgYSBzb2NrZXQgZXJyb3IKICAgICAgICBvY2N1cnMsIHRoZSBzb2NrZXQgaXMgc2lsZW50bHkgY2xvc2VkIGFuZCB0aGVuIHJlb3BlbmVkIG9uIHRoZSBuZXh0CiAgICAgICAgbG9nZ2luZyBjYWxsLgogICAgICAgICIiIgogICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgaWYgcG9ydCBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmFkZHJlc3MgPSBob3N0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gKGhvc3QsIHBvcnQpCiAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gRmFsc2UKICAgICAgICBzZWxmLnJldHJ5VGltZSA9IE5vbmUKICAgICAgICAjCiAgICAgICAgIyBFeHBvbmVudGlhbCBiYWNrb2ZmIHBhcmFtZXRlcnMuCiAgICAgICAgIwogICAgICAgIHNlbGYucmV0cnlTdGFydCA9IDEuMAogICAgICAgIHNlbGYucmV0cnlNYXggPSAzMC4wCiAgICAgICAgc2VsZi5yZXRyeUZhY3RvciA9IDIuMAoKICAgIGRlZiBtYWtlU29ja2V0KHNlbGYsIHRpbWVvdXQ9MSk6CiAgICAgICAgIiIiCiAgICAgICAgQSBmYWN0b3J5IG1ldGhvZCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NlcyB0byBkZWZpbmUgdGhlIHByZWNpc2UKICAgICAgICB0eXBlIG9mIHNvY2tldCB0aGV5IHdhbnQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5wb3J0IGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXN1bHQgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oc2VsZi5hZGRyZXNzLCB0aW1lb3V0PXRpbWVvdXQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVzdWx0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICAgICByZXN1bHQuc2V0dGltZW91dCh0aW1lb3V0KQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXN1bHQuY29ubmVjdChzZWxmLmFkZHJlc3MpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgcmVzdWx0LmNsb3NlKCkgICMgSXNzdWUgMTkxODIKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBjcmVhdGVTb2NrZXQoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgVHJ5IHRvIGNyZWF0ZSBhIHNvY2tldCwgdXNpbmcgYW4gZXhwb25lbnRpYWwgYmFja29mZiB3aXRoCiAgICAgICAgYSBtYXggcmV0cnkgdGltZS4gVGhhbmtzIHRvIFJvYmVydCBPbHNvbiBmb3IgdGhlIG9yaWdpbmFsIHBhdGNoCiAgICAgICAgKFNGICM4MTU5MTEpIHdoaWNoIGhhcyBiZWVuIHNsaWdodGx5IHJlZmFjdG9yZWQuCiAgICAgICAgIiIiCiAgICAgICAgbm93ID0gdGltZS50aW1lKCkKICAgICAgICAjIEVpdGhlciByZXRyeVRpbWUgaXMgTm9uZSwgaW4gd2hpY2ggY2FzZSB0aGlzCiAgICAgICAgIyBpcyB0aGUgZmlyc3QgdGltZSBiYWNrIGFmdGVyIGEgZGlzY29ubmVjdCwgb3IKICAgICAgICAjIHdlJ3ZlIHdhaXRlZCBsb25nIGVub3VnaC4KICAgICAgICBpZiBzZWxmLnJldHJ5VGltZSBpcyBOb25lOgogICAgICAgICAgICBhdHRlbXB0ID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGF0dGVtcHQgPSAobm93ID49IHNlbGYucmV0cnlUaW1lKQogICAgICAgIGlmIGF0dGVtcHQ6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IHNlbGYubWFrZVNvY2tldCgpCiAgICAgICAgICAgICAgICBzZWxmLnJldHJ5VGltZSA9IE5vbmUgIyBuZXh0IHRpbWUsIG5vIGRlbGF5IGJlZm9yZSB0cnlpbmcKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAjQ3JlYXRpb24gZmFpbGVkLCBzbyBzZXQgdGhlIHJldHJ5IHRpbWUgYW5kIHJldHVybi4KICAgICAgICAgICAgICAgIGlmIHNlbGYucmV0cnlUaW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXRyeVBlcmlvZCA9IHNlbGYucmV0cnlTdGFydAogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJ5UGVyaW9kID0gc2VsZi5yZXRyeVBlcmlvZCAqIHNlbGYucmV0cnlGYWN0b3IKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnJldHJ5UGVyaW9kID4gc2VsZi5yZXRyeU1heDoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXRyeVBlcmlvZCA9IHNlbGYucmV0cnlNYXgKICAgICAgICAgICAgICAgIHNlbGYucmV0cnlUaW1lID0gbm93ICsgc2VsZi5yZXRyeVBlcmlvZAoKICAgIGRlZiBzZW5kKHNlbGYsIHMpOgogICAgICAgICIiIgogICAgICAgIFNlbmQgYSBwaWNrbGVkIHN0cmluZyB0byB0aGUgc29ja2V0LgoKICAgICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyBmb3IgcGFydGlhbCBzZW5kcyB3aGljaCBjYW4gaGFwcGVuIHdoZW4gdGhlCiAgICAgICAgbmV0d29yayBpcyBidXN5LgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuc29jayBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmNyZWF0ZVNvY2tldCgpCiAgICAgICAgI3NlbGYuc29jayBjYW4gYmUgTm9uZSBlaXRoZXIgYmVjYXVzZSB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIHJldHJ5CiAgICAgICAgI3RpbWUgeWV0LCBvciBiZWNhdXNlIHdlIGhhdmUgcmVhY2hlZCB0aGUgcmV0cnkgdGltZSBhbmQgcmV0cmllZCwKICAgICAgICAjYnV0IGFyZSBzdGlsbCB1bmFibGUgdG8gY29ubmVjdC4KICAgICAgICBpZiBzZWxmLnNvY2s6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc29jay5zZW5kYWxsKHMpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IE5vbmUgICMgc28gd2UgY2FuIGNhbGwgY3JlYXRlU29ja2V0IG5leHQgdGltZQoKICAgIGRlZiBtYWtlUGlja2xlKHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiCiAgICAgICAgUGlja2xlcyB0aGUgcmVjb3JkIGluIGJpbmFyeSBmb3JtYXQgd2l0aCBhIGxlbmd0aCBwcmVmaXgsIGFuZAogICAgICAgIHJldHVybnMgaXQgcmVhZHkgZm9yIHRyYW5zbWlzc2lvbiBhY3Jvc3MgdGhlIHNvY2tldC4KICAgICAgICAiIiIKICAgICAgICBlaSA9IHJlY29yZC5leGNfaW5mbwogICAgICAgIGlmIGVpOgogICAgICAgICAgICAjIGp1c3QgdG8gZ2V0IHRyYWNlYmFjayB0ZXh0IGludG8gcmVjb3JkLmV4Y190ZXh0IC4uLgogICAgICAgICAgICBkdW1teSA9IHNlbGYuZm9ybWF0KHJlY29yZCkKICAgICAgICAjIFNlZSBpc3N1ZSAjMTQ0MzY6IElmIG1zZyBvciBhcmdzIGFyZSBvYmplY3RzLCB0aGV5IG1heSBub3QgYmUKICAgICAgICAjIGF2YWlsYWJsZSBvbiB0aGUgcmVjZWl2aW5nIGVuZC4gU28gd2UgY29udmVydCB0aGUgbXNnICUgYXJncwogICAgICAgICMgdG8gYSBzdHJpbmcsIHNhdmUgaXQgYXMgbXNnIGFuZCB6YXAgdGhlIGFyZ3MuCiAgICAgICAgZCA9IGRpY3QocmVjb3JkLl9fZGljdF9fKQogICAgICAgIGRbJ21zZyddID0gcmVjb3JkLmdldE1lc3NhZ2UoKQogICAgICAgIGRbJ2FyZ3MnXSA9IE5vbmUKICAgICAgICBkWydleGNfaW5mbyddID0gTm9uZQogICAgICAgICMgSXNzdWUgIzI1Njg1OiBkZWxldGUgJ21lc3NhZ2UnIGlmIHByZXNlbnQ6IHJlZHVuZGFudCB3aXRoICdtc2cnCiAgICAgICAgZC5wb3AoJ21lc3NhZ2UnLCBOb25lKQogICAgICAgIHMgPSBwaWNrbGUuZHVtcHMoZCwgMSkKICAgICAgICBzbGVuID0gc3RydWN0LnBhY2soIj5MIiwgbGVuKHMpKQogICAgICAgIHJldHVybiBzbGVuICsgcwoKICAgIGRlZiBoYW5kbGVFcnJvcihzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIEhhbmRsZSBhbiBlcnJvciBkdXJpbmcgbG9nZ2luZy4KCiAgICAgICAgQW4gZXJyb3IgaGFzIG9jY3VycmVkIGR1cmluZyBsb2dnaW5nLiBNb3N0IGxpa2VseSBjYXVzZSAtCiAgICAgICAgY29ubmVjdGlvbiBsb3N0LiBDbG9zZSB0aGUgc29ja2V0IHNvIHRoYXQgd2UgY2FuIHJldHJ5IG9uIHRoZQogICAgICAgIG5leHQgZXZlbnQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5jbG9zZU9uRXJyb3IgYW5kIHNlbGYuc29jazoKICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZSAgICAgICAgI3RyeSB0byByZWNvbm5lY3QgbmV4dCB0aW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLmhhbmRsZUVycm9yKHNlbGYsIHJlY29yZCkKCiAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIEVtaXQgYSByZWNvcmQuCgogICAgICAgIFBpY2tsZXMgdGhlIHJlY29yZCBhbmQgd3JpdGVzIGl0IHRvIHRoZSBzb2NrZXQgaW4gYmluYXJ5IGZvcm1hdC4KICAgICAgICBJZiB0aGVyZSBpcyBhbiBlcnJvciB3aXRoIHRoZSBzb2NrZXQsIHNpbGVudGx5IGRyb3AgdGhlIHBhY2tldC4KICAgICAgICBJZiB0aGVyZSB3YXMgYSBwcm9ibGVtIHdpdGggdGhlIHNvY2tldCwgcmUtZXN0YWJsaXNoZXMgdGhlCiAgICAgICAgc29ja2V0LgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgcyA9IHNlbGYubWFrZVBpY2tsZShyZWNvcmQpCiAgICAgICAgICAgIHNlbGYuc2VuZChzKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiIKICAgICAgICBDbG9zZXMgdGhlIHNvY2tldC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgc29jayA9IHNlbGYuc29jawogICAgICAgICAgICBpZiBzb2NrOgogICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgICAgIGxvZ2dpbmcuSGFuZGxlci5jbG9zZShzZWxmKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCgpjbGFzcyBEYXRhZ3JhbUhhbmRsZXIoU29ja2V0SGFuZGxlcik6CiAgICAiIiIKICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgbG9nZ2luZyByZWNvcmRzLCBpbiBwaWNrbGUgZm9ybWF0LCB0bwogICAgYSBkYXRhZ3JhbSBzb2NrZXQuICBUaGUgcGlja2xlIHdoaWNoIGlzIHNlbnQgaXMgdGhhdCBvZiB0aGUgTG9nUmVjb3JkJ3MKICAgIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChfX2RpY3RfXyksIHNvIHRoYXQgdGhlIHJlY2VpdmVyIGRvZXMgbm90IG5lZWQgdG8KICAgIGhhdmUgdGhlIGxvZ2dpbmcgbW9kdWxlIGluc3RhbGxlZCBpbiBvcmRlciB0byBwcm9jZXNzIHRoZSBsb2dnaW5nIGV2ZW50LgoKICAgIFRvIHVucGlja2xlIHRoZSByZWNvcmQgYXQgdGhlIHJlY2VpdmluZyBlbmQgaW50byBhIExvZ1JlY29yZCwgdXNlIHRoZQogICAgbWFrZUxvZ1JlY29yZCBmdW5jdGlvbi4KCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0KToKICAgICAgICAiIiIKICAgICAgICBJbml0aWFsaXplcyB0aGUgaGFuZGxlciB3aXRoIGEgc3BlY2lmaWMgaG9zdCBhZGRyZXNzIGFuZCBwb3J0LgogICAgICAgICIiIgogICAgICAgIFNvY2tldEhhbmRsZXIuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCkKICAgICAgICBzZWxmLmNsb3NlT25FcnJvciA9IEZhbHNlCgogICAgZGVmIG1ha2VTb2NrZXQoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgVGhlIGZhY3RvcnkgbWV0aG9kIG9mIFNvY2tldEhhbmRsZXIgaXMgaGVyZSBvdmVycmlkZGVuIHRvIGNyZWF0ZQogICAgICAgIGEgVURQIHNvY2tldCAoU09DS19ER1JBTSkuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5wb3J0IGlzIE5vbmU6CiAgICAgICAgICAgIGZhbWlseSA9IHNvY2tldC5BRl9VTklYCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZmFtaWx5ID0gc29ja2V0LkFGX0lORVQKICAgICAgICBzID0gc29ja2V0LnNvY2tldChmYW1pbHksIHNvY2tldC5TT0NLX0RHUkFNKQogICAgICAgIHJldHVybiBzCgogICAgZGVmIHNlbmQoc2VsZiwgcyk6CiAgICAgICAgIiIiCiAgICAgICAgU2VuZCBhIHBpY2tsZWQgc3RyaW5nIHRvIGEgc29ja2V0LgoKICAgICAgICBUaGlzIGZ1bmN0aW9uIG5vIGxvbmdlciBhbGxvd3MgZm9yIHBhcnRpYWwgc2VuZHMgd2hpY2ggY2FuIGhhcHBlbgogICAgICAgIHdoZW4gdGhlIG5ldHdvcmsgaXMgYnVzeSAtIFVEUCBkb2VzIG5vdCBndWFyYW50ZWUgZGVsaXZlcnkgYW5kCiAgICAgICAgY2FuIGRlbGl2ZXIgcGFja2V0cyBvdXQgb2Ygc2VxdWVuY2UuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5zb2NrIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuY3JlYXRlU29ja2V0KCkKICAgICAgICBzZWxmLnNvY2suc2VuZHRvKHMsIHNlbGYuYWRkcmVzcykKCmNsYXNzIFN5c0xvZ0hhbmRsZXIobG9nZ2luZy5IYW5kbGVyKToKICAgICIiIgogICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHNlbmRzIGZvcm1hdHRlZCBsb2dnaW5nIHJlY29yZHMgdG8gYSBzeXNsb2cKICAgIHNlcnZlci4gQmFzZWQgb24gU2FtIFJ1c2hpbmcncyBzeXNsb2cgbW9kdWxlOgogICAgaHR0cDovL3d3dy5uaWdodG1hcmUuY29tL3NxdWlybC9weXRob24tZXh0L21pc2Mvc3lzbG9nLnB5CiAgICBDb250cmlidXRlZCBieSBOaWNvbGFzIFVudHogKGFmdGVyIHdoaWNoIG1pbm9yIHJlZmFjdG9yaW5nIGNoYW5nZXMKICAgIGhhdmUgYmVlbiBtYWRlKS4KICAgICIiIgoKICAgICMgZnJvbSA8bGludXgvc3lzL3N5c2xvZy5oPjoKICAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIyBwcmlvcml0aWVzL2ZhY2lsaXRpZXMgYXJlIGVuY29kZWQgaW50byBhIHNpbmdsZSAzMi1iaXQgcXVhbnRpdHksIHdoZXJlCiAgICAjIHRoZSBib3R0b20gMyBiaXRzIGFyZSB0aGUgcHJpb3JpdHkgKDAtNykgYW5kIHRoZSB0b3AgMjggYml0cyBhcmUgdGhlCiAgICAjIGZhY2lsaXR5ICgwLWJpZyBudW1iZXIpLiBCb3RoIHRoZSBwcmlvcml0aWVzIGFuZCB0aGUgZmFjaWxpdGllcyBtYXAKICAgICMgcm91Z2hseSBvbmUtdG8tb25lIHRvIHN0cmluZ3MgaW4gdGhlIHN5c2xvZ2QoOCkgc291cmNlIGNvZGUuICBUaGlzCiAgICAjIG1hcHBpbmcgaXMgaW5jbHVkZWQgaW4gdGhpcyBmaWxlLgogICAgIwogICAgIyBwcmlvcml0aWVzICh0aGVzZSBhcmUgb3JkZXJlZCkKCiAgICBMT0dfRU1FUkcgICAgID0gMCAgICAgICAjICBzeXN0ZW0gaXMgdW51c2FibGUKICAgIExPR19BTEVSVCAgICAgPSAxICAgICAgICMgIGFjdGlvbiBtdXN0IGJlIHRha2VuIGltbWVkaWF0ZWx5CiAgICBMT0dfQ1JJVCAgICAgID0gMiAgICAgICAjICBjcml0aWNhbCBjb25kaXRpb25zCiAgICBMT0dfRVJSICAgICAgID0gMyAgICAgICAjICBlcnJvciBjb25kaXRpb25zCiAgICBMT0dfV0FSTklORyAgID0gNCAgICAgICAjICB3YXJuaW5nIGNvbmRpdGlvbnMKICAgIExPR19OT1RJQ0UgICAgPSA1ICAgICAgICMgIG5vcm1hbCBidXQgc2lnbmlmaWNhbnQgY29uZGl0aW9uCiAgICBMT0dfSU5GTyAgICAgID0gNiAgICAgICAjICBpbmZvcm1hdGlvbmFsCiAgICBMT0dfREVCVUcgICAgID0gNyAgICAgICAjICBkZWJ1Zy1sZXZlbCBtZXNzYWdlcwoKICAgICMgIGZhY2lsaXR5IGNvZGVzCiAgICBMT0dfS0VSTiAgICAgID0gMCAgICAgICAjICBrZXJuZWwgbWVzc2FnZXMKICAgIExPR19VU0VSICAgICAgPSAxICAgICAgICMgIHJhbmRvbSB1c2VyLWxldmVsIG1lc3NhZ2VzCiAgICBMT0dfTUFJTCAgICAgID0gMiAgICAgICAjICBtYWlsIHN5c3RlbQogICAgTE9HX0RBRU1PTiAgICA9IDMgICAgICAgIyAgc3lzdGVtIGRhZW1vbnMKICAgIExPR19BVVRIICAgICAgPSA0ICAgICAgICMgIHNlY3VyaXR5L2F1dGhvcml6YXRpb24gbWVzc2FnZXMKICAgIExPR19TWVNMT0cgICAgPSA1ICAgICAgICMgIG1lc3NhZ2VzIGdlbmVyYXRlZCBpbnRlcm5hbGx5IGJ5IHN5c2xvZ2QKICAgIExPR19MUFIgICAgICAgPSA2ICAgICAgICMgIGxpbmUgcHJpbnRlciBzdWJzeXN0ZW0KICAgIExPR19ORVdTICAgICAgPSA3ICAgICAgICMgIG5ldHdvcmsgbmV3cyBzdWJzeXN0ZW0KICAgIExPR19VVUNQICAgICAgPSA4ICAgICAgICMgIFVVQ1Agc3Vic3lzdGVtCiAgICBMT0dfQ1JPTiAgICAgID0gOSAgICAgICAjICBjbG9jayBkYWVtb24KICAgIExPR19BVVRIUFJJViAgPSAxMCAgICAgICMgIHNlY3VyaXR5L2F1dGhvcml6YXRpb24gbWVzc2FnZXMgKHByaXZhdGUpCiAgICBMT0dfRlRQICAgICAgID0gMTEgICAgICAjICBGVFAgZGFlbW9uCiAgICBMT0dfTlRQICAgICAgID0gMTIgICAgICAjICBOVFAgc3Vic3lzdGVtCiAgICBMT0dfU0VDVVJJVFkgID0gMTMgICAgICAjICBMb2cgYXVkaXQKICAgIExPR19DT05TT0xFICAgPSAxNCAgICAgICMgIExvZyBhbGVydAogICAgTE9HX1NPTENST04gICA9IDE1ICAgICAgIyAgU2NoZWR1bGluZyBkYWVtb24gKFNvbGFyaXMpCgogICAgIyAgb3RoZXIgY29kZXMgdGhyb3VnaCAxNSByZXNlcnZlZCBmb3Igc3lzdGVtIHVzZQogICAgTE9HX0xPQ0FMMCAgICA9IDE2ICAgICAgIyAgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQogICAgTE9HX0xPQ0FMMSAgICA9IDE3ICAgICAgIyAgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQogICAgTE9HX0xPQ0FMMiAgICA9IDE4ICAgICAgIyAgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQogICAgTE9HX0xPQ0FMMyAgICA9IDE5ICAgICAgIyAgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQogICAgTE9HX0xPQ0FMNCAgICA9IDIwICAgICAgIyAgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQogICAgTE9HX0xPQ0FMNSAgICA9IDIxICAgICAgIyAgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQogICAgTE9HX0xPQ0FMNiAgICA9IDIyICAgICAgIyAgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQogICAgTE9HX0xPQ0FMNyAgICA9IDIzICAgICAgIyAgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQoKICAgIHByaW9yaXR5X25hbWVzID0gewogICAgICAgICJhbGVydCI6ICAgIExPR19BTEVSVCwKICAgICAgICAiY3JpdCI6ICAgICBMT0dfQ1JJVCwKICAgICAgICAiY3JpdGljYWwiOiBMT0dfQ1JJVCwKICAgICAgICAiZGVidWciOiAgICBMT0dfREVCVUcsCiAgICAgICAgImVtZXJnIjogICAgTE9HX0VNRVJHLAogICAgICAgICJlcnIiOiAgICAgIExPR19FUlIsCiAgICAgICAgImVycm9yIjogICAgTE9HX0VSUiwgICAgICAgICMgIERFUFJFQ0FURUQKICAgICAgICAiaW5mbyI6ICAgICBMT0dfSU5GTywKICAgICAgICAibm90aWNlIjogICBMT0dfTk9USUNFLAogICAgICAgICJwYW5pYyI6ICAgIExPR19FTUVSRywgICAgICAjICBERVBSRUNBVEVECiAgICAgICAgIndhcm4iOiAgICAgTE9HX1dBUk5JTkcsICAgICMgIERFUFJFQ0FURUQKICAgICAgICAid2FybmluZyI6ICBMT0dfV0FSTklORywKICAgICAgICB9CgogICAgZmFjaWxpdHlfbmFtZXMgPSB7CiAgICAgICAgImF1dGgiOiAgICAgICAgIExPR19BVVRILAogICAgICAgICJhdXRocHJpdiI6ICAgICBMT0dfQVVUSFBSSVYsCiAgICAgICAgImNvbnNvbGUiOiAgICAgIExPR19DT05TT0xFLAogICAgICAgICJjcm9uIjogICAgICAgICBMT0dfQ1JPTiwKICAgICAgICAiZGFlbW9uIjogICAgICAgTE9HX0RBRU1PTiwKICAgICAgICAiZnRwIjogICAgICAgICAgTE9HX0ZUUCwKICAgICAgICAia2VybiI6ICAgICAgICAgTE9HX0tFUk4sCiAgICAgICAgImxwciI6ICAgICAgICAgIExPR19MUFIsCiAgICAgICAgIm1haWwiOiAgICAgICAgIExPR19NQUlMLAogICAgICAgICJuZXdzIjogICAgICAgICBMT0dfTkVXUywKICAgICAgICAibnRwIjogICAgICAgICAgTE9HX05UUCwKICAgICAgICAic2VjdXJpdHkiOiAgICAgTE9HX1NFQ1VSSVRZLAogICAgICAgICJzb2xhcmlzLWNyb24iOiBMT0dfU09MQ1JPTiwKICAgICAgICAic3lzbG9nIjogICAgICAgTE9HX1NZU0xPRywKICAgICAgICAidXNlciI6ICAgICAgICAgTE9HX1VTRVIsCiAgICAgICAgInV1Y3AiOiAgICAgICAgIExPR19VVUNQLAogICAgICAgICJsb2NhbDAiOiAgICAgICBMT0dfTE9DQUwwLAogICAgICAgICJsb2NhbDEiOiAgICAgICBMT0dfTE9DQUwxLAogICAgICAgICJsb2NhbDIiOiAgICAgICBMT0dfTE9DQUwyLAogICAgICAgICJsb2NhbDMiOiAgICAgICBMT0dfTE9DQUwzLAogICAgICAgICJsb2NhbDQiOiAgICAgICBMT0dfTE9DQUw0LAogICAgICAgICJsb2NhbDUiOiAgICAgICBMT0dfTE9DQUw1LAogICAgICAgICJsb2NhbDYiOiAgICAgICBMT0dfTE9DQUw2LAogICAgICAgICJsb2NhbDciOiAgICAgICBMT0dfTE9DQUw3LAogICAgICAgIH0KCiAgICAjVGhlIG1hcCBiZWxvdyBhcHBlYXJzIHRvIGJlIHRyaXZpYWxseSBsb3dlcmNhc2luZyB0aGUga2V5LiBIb3dldmVyLAogICAgI3RoZXJlJ3MgbW9yZSB0byBpdCB0aGFuIG1lZXRzIHRoZSBleWUgLSBpbiBzb21lIGxvY2FsZXMsIGxvd2VyY2FzaW5nCiAgICAjZ2l2ZXMgdW5leHBlY3RlZCByZXN1bHRzLiBTZWUgU0YgIzE1MjQwODE6IGluIHRoZSBUdXJraXNoIGxvY2FsZSwKICAgICMiSU5GTyIubG93ZXIoKSAhPSAiaW5mbyIKICAgIHByaW9yaXR5X21hcCA9IHsKICAgICAgICAiREVCVUciIDogImRlYnVnIiwKICAgICAgICAiSU5GTyIgOiAiaW5mbyIsCiAgICAgICAgIldBUk5JTkciIDogIndhcm5pbmciLAogICAgICAgICJFUlJPUiIgOiAiZXJyb3IiLAogICAgICAgICJDUklUSUNBTCIgOiAiY3JpdGljYWwiCiAgICB9CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3M9KCdsb2NhbGhvc3QnLCBTWVNMT0dfVURQX1BPUlQpLAogICAgICAgICAgICAgICAgIGZhY2lsaXR5PUxPR19VU0VSLCBzb2NrdHlwZT1Ob25lKToKICAgICAgICAiIiIKICAgICAgICBJbml0aWFsaXplIGEgaGFuZGxlci4KCiAgICAgICAgSWYgYWRkcmVzcyBpcyBzcGVjaWZpZWQgYXMgYSBzdHJpbmcsIGEgVU5JWCBzb2NrZXQgaXMgdXNlZC4gVG8gbG9nIHRvIGEKICAgICAgICBsb2NhbCBzeXNsb2dkLCAiU3lzTG9nSGFuZGxlcihhZGRyZXNzPSIvZGV2L2xvZyIpIiBjYW4gYmUgdXNlZC4KICAgICAgICBJZiBmYWNpbGl0eSBpcyBub3Qgc3BlY2lmaWVkLCBMT0dfVVNFUiBpcyB1c2VkLiBJZiBzb2NrdHlwZSBpcwogICAgICAgIHNwZWNpZmllZCBhcyBzb2NrZXQuU09DS19ER1JBTSBvciBzb2NrZXQuU09DS19TVFJFQU0sIHRoYXQgc3BlY2lmaWMKICAgICAgICBzb2NrZXQgdHlwZSB3aWxsIGJlIHVzZWQuIEZvciBVbml4IHNvY2tldHMsIHlvdSBjYW4gYWxzbyBzcGVjaWZ5IGEKICAgICAgICBzb2NrdHlwZSBvZiBOb25lLCBpbiB3aGljaCBjYXNlIHNvY2tldC5TT0NLX0RHUkFNIHdpbGwgYmUgdXNlZCwgZmFsbGluZwogICAgICAgIGJhY2sgdG8gc29ja2V0LlNPQ0tfU1RSRUFNLgogICAgICAgICIiIgogICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQoKICAgICAgICBzZWxmLmFkZHJlc3MgPSBhZGRyZXNzCiAgICAgICAgc2VsZi5mYWNpbGl0eSA9IGZhY2lsaXR5CiAgICAgICAgc2VsZi5zb2NrdHlwZSA9IHNvY2t0eXBlCiAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCiAgICAgICAgc2VsZi5jcmVhdGVTb2NrZXQoKQoKICAgIGRlZiBfY29ubmVjdF91bml4c29ja2V0KHNlbGYsIGFkZHJlc3MpOgogICAgICAgIHVzZV9zb2NrdHlwZSA9IHNlbGYuc29ja3R5cGUKICAgICAgICBpZiB1c2Vfc29ja3R5cGUgaXMgTm9uZToKICAgICAgICAgICAgdXNlX3NvY2t0eXBlID0gc29ja2V0LlNPQ0tfREdSQU0KICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHVzZV9zb2NrdHlwZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuc29ja2V0LmNvbm5lY3QoYWRkcmVzcykKICAgICAgICAgICAgIyBpdCB3b3JrZWQsIHNvIHNldCBzZWxmLnNvY2t0eXBlIHRvIHRoZSB1c2VkIHR5cGUKICAgICAgICAgICAgc2VsZi5zb2NrdHlwZSA9IHVzZV9zb2NrdHlwZQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgIGlmIHNlbGYuc29ja3R5cGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAjIHVzZXIgZGlkbid0IHNwZWNpZnkgZmFsbGluZyBiYWNrLCBzbyBmYWlsCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICB1c2Vfc29ja3R5cGUgPSBzb2NrZXQuU09DS19TVFJFQU0KICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCB1c2Vfc29ja3R5cGUpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmNvbm5lY3QoYWRkcmVzcykKICAgICAgICAgICAgICAgICMgaXQgd29ya2VkLCBzbyBzZXQgc2VsZi5zb2NrdHlwZSB0byB0aGUgdXNlZCB0eXBlCiAgICAgICAgICAgICAgICBzZWxmLnNvY2t0eXBlID0gdXNlX3NvY2t0eXBlCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQogICAgICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgY3JlYXRlU29ja2V0KHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFRyeSB0byBjcmVhdGUgYSBzb2NrZXQgYW5kLCBpZiBpdCdzIG5vdCBhIGRhdGFncmFtIHNvY2tldCwgY29ubmVjdCBpdAogICAgICAgIHRvIHRoZSBvdGhlciBlbmQuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBkdXJpbmcgaGFuZGxlciBpbml0aWFsaXphdGlvbiwKICAgICAgICBidXQgaXQncyBub3QgcmVnYXJkZWQgYXMgYW4gZXJyb3IgaWYgdGhlIG90aGVyIGVuZCBpc24ndCBsaXN0ZW5pbmcgeWV0CiAgICAgICAgLS0tIHRoZSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYWdhaW4gd2hlbiBlbWl0dGluZyBhbiBldmVudCwKICAgICAgICBpZiB0aGVyZSBpcyBubyBzb2NrZXQgYXQgdGhhdCBwb2ludC4KICAgICAgICAiIiIKICAgICAgICBhZGRyZXNzID0gc2VsZi5hZGRyZXNzCiAgICAgICAgc29ja3R5cGUgPSBzZWxmLnNvY2t0eXBlCgogICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgc3RyKToKICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gVHJ1ZQogICAgICAgICAgICAjIFN5c2xvZyBzZXJ2ZXIgbWF5IGJlIHVuYXZhaWxhYmxlIGR1cmluZyBoYW5kbGVyIGluaXRpYWxpc2F0aW9uLgogICAgICAgICAgICAjIEMncyBvcGVubG9nKCkgZnVuY3Rpb24gYWxzbyBpZ25vcmVzIGNvbm5lY3Rpb24gZXJyb3JzLgogICAgICAgICAgICAjIE1vcmVvdmVyLCB3ZSBpZ25vcmUgdGhlc2UgZXJyb3JzIHdoaWxlIGxvZ2dpbmcsIHNvIGl0J3Mgbm90IHdvcnNlCiAgICAgICAgICAgICMgdG8gaWdub3JlIGl0IGFsc28gaGVyZS4KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdF91bml4c29ja2V0KGFkZHJlc3MpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IEZhbHNlCiAgICAgICAgICAgIGlmIHNvY2t0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzb2NrdHlwZSA9IHNvY2tldC5TT0NLX0RHUkFNCiAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBhZGRyZXNzCiAgICAgICAgICAgIHJlc3MgPSBzb2NrZXQuZ2V0YWRkcmluZm8oaG9zdCwgcG9ydCwgMCwgc29ja3R5cGUpCiAgICAgICAgICAgIGlmIG5vdCByZXNzOgogICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiZ2V0YWRkcmluZm8gcmV0dXJucyBhbiBlbXB0eSBsaXN0IikKICAgICAgICAgICAgZm9yIHJlcyBpbiByZXNzOgogICAgICAgICAgICAgICAgYWYsIHNvY2t0eXBlLCBwcm90bywgXywgc2EgPSByZXMKICAgICAgICAgICAgICAgIGVyciA9IHNvY2sgPSBOb25lCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoYWYsIHNvY2t0eXBlLCBwcm90bykKICAgICAgICAgICAgICAgICAgICBpZiBzb2NrdHlwZSA9PSBzb2NrZXQuU09DS19TVFJFQU06CiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2suY29ubmVjdChzYSkKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgICAgIGVyciA9IGV4YwogICAgICAgICAgICAgICAgICAgIGlmIHNvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBlcnIKICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrCiAgICAgICAgICAgIHNlbGYuc29ja3R5cGUgPSBzb2NrdHlwZQoKICAgIGRlZiBlbmNvZGVQcmlvcml0eShzZWxmLCBmYWNpbGl0eSwgcHJpb3JpdHkpOgogICAgICAgICIiIgogICAgICAgIEVuY29kZSB0aGUgZmFjaWxpdHkgYW5kIHByaW9yaXR5LiBZb3UgY2FuIHBhc3MgaW4gc3RyaW5ncyBvcgogICAgICAgIGludGVnZXJzIC0gaWYgc3RyaW5ncyBhcmUgcGFzc2VkLCB0aGUgZmFjaWxpdHlfbmFtZXMgYW5kCiAgICAgICAgcHJpb3JpdHlfbmFtZXMgbWFwcGluZyBkaWN0aW9uYXJpZXMgYXJlIHVzZWQgdG8gY29udmVydCB0aGVtIHRvCiAgICAgICAgaW50ZWdlcnMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShmYWNpbGl0eSwgc3RyKToKICAgICAgICAgICAgZmFjaWxpdHkgPSBzZWxmLmZhY2lsaXR5X25hbWVzW2ZhY2lsaXR5XQogICAgICAgIGlmIGlzaW5zdGFuY2UocHJpb3JpdHksIHN0cik6CiAgICAgICAgICAgIHByaW9yaXR5ID0gc2VsZi5wcmlvcml0eV9uYW1lc1twcmlvcml0eV0KICAgICAgICByZXR1cm4gKGZhY2lsaXR5IDw8IDMpIHwgcHJpb3JpdHkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgQ2xvc2VzIHRoZSBzb2NrZXQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5hY3F1aXJlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNvY2sgPSBzZWxmLnNvY2tldAogICAgICAgICAgICBpZiBzb2NrOgogICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCiAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLmNsb3NlKHNlbGYpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKCiAgICBkZWYgbWFwUHJpb3JpdHkoc2VsZiwgbGV2ZWxOYW1lKToKICAgICAgICAiIiIKICAgICAgICBNYXAgYSBsb2dnaW5nIGxldmVsIG5hbWUgdG8gYSBrZXkgaW4gdGhlIHByaW9yaXR5X25hbWVzIG1hcC4KICAgICAgICBUaGlzIGlzIHVzZWZ1bCBpbiB0d28gc2NlbmFyaW9zOiB3aGVuIGN1c3RvbSBsZXZlbHMgYXJlIGJlaW5nCiAgICAgICAgdXNlZCwgYW5kIGluIHRoZSBjYXNlIHdoZXJlIHlvdSBjYW4ndCBkbyBhIHN0cmFpZ2h0Zm9yd2FyZAogICAgICAgIG1hcHBpbmcgYnkgbG93ZXJjYXNpbmcgdGhlIGxvZ2dpbmcgbGV2ZWwgbmFtZSBiZWNhdXNlIG9mIGxvY2FsZS0KICAgICAgICBzcGVjaWZpYyBpc3N1ZXMgKHNlZSBTRiAjMTUyNDA4MSkuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYucHJpb3JpdHlfbWFwLmdldChsZXZlbE5hbWUsICJ3YXJuaW5nIikKCiAgICBpZGVudCA9ICcnICAgICAgICAgICMgcHJlcGVuZGVkIHRvIGFsbCBtZXNzYWdlcwogICAgYXBwZW5kX251bCA9IFRydWUgICAjIHNvbWUgb2xkIHN5c2xvZyBkYWVtb25zIGV4cGVjdCBhIE5VTCB0ZXJtaW5hdG9yCgogICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBFbWl0IGEgcmVjb3JkLgoKICAgICAgICBUaGUgcmVjb3JkIGlzIGZvcm1hdHRlZCwgYW5kIHRoZW4gc2VudCB0byB0aGUgc3lzbG9nIHNlcnZlci4gSWYKICAgICAgICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgcHJlc2VudCwgaXQgaXMgTk9UIHNlbnQgdG8gdGhlIHNlcnZlci4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1zZyA9IHNlbGYuZm9ybWF0KHJlY29yZCkKICAgICAgICAgICAgaWYgc2VsZi5pZGVudDoKICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYuaWRlbnQgKyBtc2cKICAgICAgICAgICAgaWYgc2VsZi5hcHBlbmRfbnVsOgogICAgICAgICAgICAgICAgbXNnICs9ICdcMDAwJwoKICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNvbnZlcnQgcmVjb3JkIGxldmVsIHRvIGxvd2VyY2FzZSwgbWF5YmUgdGhpcyB3aWxsCiAgICAgICAgICAgICMgY2hhbmdlIGluIHRoZSBmdXR1cmUuCiAgICAgICAgICAgIHByaW8gPSAnPCVkPicgJSBzZWxmLmVuY29kZVByaW9yaXR5KHNlbGYuZmFjaWxpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFwUHJpb3JpdHkocmVjb3JkLmxldmVsbmFtZSkpCiAgICAgICAgICAgIHByaW8gPSBwcmlvLmVuY29kZSgndXRmLTgnKQogICAgICAgICAgICAjIE1lc3NhZ2UgaXMgYSBzdHJpbmcuIENvbnZlcnQgdG8gYnl0ZXMgYXMgcmVxdWlyZWQgYnkgUkZDIDU0MjQKICAgICAgICAgICAgbXNnID0gbXNnLmVuY29kZSgndXRmLTgnKQogICAgICAgICAgICBtc2cgPSBwcmlvICsgbXNnCgogICAgICAgICAgICBpZiBub3Qgc2VsZi5zb2NrZXQ6CiAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZVNvY2tldCgpCgogICAgICAgICAgICBpZiBzZWxmLnVuaXhzb2NrZXQ6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZChtc2cpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdF91bml4c29ja2V0KHNlbGYuYWRkcmVzcykKICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kKG1zZykKICAgICAgICAgICAgZWxpZiBzZWxmLnNvY2t0eXBlID09IHNvY2tldC5TT0NLX0RHUkFNOgogICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZHRvKG1zZywgc2VsZi5hZGRyZXNzKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZGFsbChtc2cpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCgpjbGFzcyBTTVRQSGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgogICAgIiIiCiAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggc2VuZHMgYW4gU01UUCBlbWFpbCBmb3IgZWFjaCBsb2dnaW5nIGV2ZW50LgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LAogICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzPU5vbmUsIHNlY3VyZT1Ob25lLCB0aW1lb3V0PTUuMCk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlci4KCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaW5zdGFuY2Ugd2l0aCB0aGUgZnJvbSBhbmQgdG8gYWRkcmVzc2VzIGFuZCBzdWJqZWN0CiAgICAgICAgbGluZSBvZiB0aGUgZW1haWwuIFRvIHNwZWNpZnkgYSBub24tc3RhbmRhcmQgU01UUCBwb3J0LCB1c2UgdGhlCiAgICAgICAgKGhvc3QsIHBvcnQpIHR1cGxlIGZvcm1hdCBmb3IgdGhlIG1haWxob3N0IGFyZ3VtZW50LiBUbyBzcGVjaWZ5CiAgICAgICAgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMsIHN1cHBseSBhICh1c2VybmFtZSwgcGFzc3dvcmQpIHR1cGxlCiAgICAgICAgZm9yIHRoZSBjcmVkZW50aWFscyBhcmd1bWVudC4gVG8gc3BlY2lmeSB0aGUgdXNlIG9mIGEgc2VjdXJlCiAgICAgICAgcHJvdG9jb2wgKFRMUyksIHBhc3MgaW4gYSB0dXBsZSBmb3IgdGhlIHNlY3VyZSBhcmd1bWVudC4gVGhpcyB3aWxsCiAgICAgICAgb25seSBiZSB1c2VkIHdoZW4gYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgYXJlIHN1cHBsaWVkLiBUaGUgdHVwbGUKICAgICAgICB3aWxsIGJlIGVpdGhlciBhbiBlbXB0eSB0dXBsZSwgb3IgYSBzaW5nbGUtdmFsdWUgdHVwbGUgd2l0aCB0aGUgbmFtZQogICAgICAgIG9mIGEga2V5ZmlsZSwgb3IgYSAyLXZhbHVlIHR1cGxlIHdpdGggdGhlIG5hbWVzIG9mIHRoZSBrZXlmaWxlIGFuZAogICAgICAgIGNlcnRpZmljYXRlIGZpbGUuIChUaGlzIHR1cGxlIGlzIHBhc3NlZCB0byB0aGUgYHN0YXJ0dGxzYCBtZXRob2QpLgogICAgICAgIEEgdGltZW91dCBpbiBzZWNvbmRzIGNhbiBiZSBzcGVjaWZpZWQgZm9yIHRoZSBTTVRQIGNvbm5lY3Rpb24gKHRoZQogICAgICAgIGRlZmF1bHQgaXMgb25lIHNlY29uZCkuCiAgICAgICAgIiIiCiAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCiAgICAgICAgaWYgaXNpbnN0YW5jZShtYWlsaG9zdCwgKGxpc3QsIHR1cGxlKSk6CiAgICAgICAgICAgIHNlbGYubWFpbGhvc3QsIHNlbGYubWFpbHBvcnQgPSBtYWlsaG9zdAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYubWFpbGhvc3QsIHNlbGYubWFpbHBvcnQgPSBtYWlsaG9zdCwgTm9uZQogICAgICAgIGlmIGlzaW5zdGFuY2UoY3JlZGVudGlhbHMsIChsaXN0LCB0dXBsZSkpOgogICAgICAgICAgICBzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkID0gY3JlZGVudGlhbHMKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gTm9uZQogICAgICAgIHNlbGYuZnJvbWFkZHIgPSBmcm9tYWRkcgogICAgICAgIGlmIGlzaW5zdGFuY2UodG9hZGRycywgc3RyKToKICAgICAgICAgICAgdG9hZGRycyA9IFt0b2FkZHJzXQogICAgICAgIHNlbGYudG9hZGRycyA9IHRvYWRkcnMKICAgICAgICBzZWxmLnN1YmplY3QgPSBzdWJqZWN0CiAgICAgICAgc2VsZi5zZWN1cmUgPSBzZWN1cmUKICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CgogICAgZGVmIGdldFN1YmplY3Qoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBEZXRlcm1pbmUgdGhlIHN1YmplY3QgZm9yIHRoZSBlbWFpbC4KCiAgICAgICAgSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBhIHN1YmplY3QgbGluZSB3aGljaCBpcyByZWNvcmQtZGVwZW5kZW50LAogICAgICAgIG92ZXJyaWRlIHRoaXMgbWV0aG9kLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLnN1YmplY3QKCiAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIEVtaXQgYSByZWNvcmQuCgogICAgICAgIEZvcm1hdCB0aGUgcmVjb3JkIGFuZCBzZW5kIGl0IHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzc2Vlcy4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltcG9ydCBzbXRwbGliCiAgICAgICAgICAgIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCiAgICAgICAgICAgIGltcG9ydCBlbWFpbC51dGlscwoKICAgICAgICAgICAgcG9ydCA9IHNlbGYubWFpbHBvcnQKICAgICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgICAgICBwb3J0ID0gc210cGxpYi5TTVRQX1BPUlQKICAgICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChzZWxmLm1haWxob3N0LCBwb3J0LCB0aW1lb3V0PXNlbGYudGltZW91dCkKICAgICAgICAgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKICAgICAgICAgICAgbXNnWydGcm9tJ10gPSBzZWxmLmZyb21hZGRyCiAgICAgICAgICAgIG1zZ1snVG8nXSA9ICcsJy5qb2luKHNlbGYudG9hZGRycykKICAgICAgICAgICAgbXNnWydTdWJqZWN0J10gPSBzZWxmLmdldFN1YmplY3QocmVjb3JkKQogICAgICAgICAgICBtc2dbJ0RhdGUnXSA9IGVtYWlsLnV0aWxzLmxvY2FsdGltZSgpCiAgICAgICAgICAgIG1zZy5zZXRfY29udGVudChzZWxmLmZvcm1hdChyZWNvcmQpKQogICAgICAgICAgICBpZiBzZWxmLnVzZXJuYW1lOgogICAgICAgICAgICAgICAgaWYgc2VsZi5zZWN1cmUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc210cC5laGxvKCkKICAgICAgICAgICAgICAgICAgICBzbXRwLnN0YXJ0dGxzKCpzZWxmLnNlY3VyZSkKICAgICAgICAgICAgICAgICAgICBzbXRwLmVobG8oKQogICAgICAgICAgICAgICAgc210cC5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkKQogICAgICAgICAgICBzbXRwLnNlbmRfbWVzc2FnZShtc2cpCiAgICAgICAgICAgIHNtdHAucXVpdCgpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCgpjbGFzcyBOVEV2ZW50TG9nSGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgogICAgIiIiCiAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggc2VuZHMgZXZlbnRzIHRvIHRoZSBOVCBFdmVudCBMb2cuIEFkZHMgYQogICAgcmVnaXN0cnkgZW50cnkgZm9yIHRoZSBzcGVjaWZpZWQgYXBwbGljYXRpb24gbmFtZS4gSWYgbm8gZGxsbmFtZSBpcwogICAgcHJvdmlkZWQsIHdpbjMyc2VydmljZS5weWQgKHdoaWNoIGNvbnRhaW5zIHNvbWUgYmFzaWMgbWVzc2FnZQogICAgcGxhY2Vob2xkZXJzKSBpcyB1c2VkLiBOb3RlIHRoYXQgdXNlIG9mIHRoZXNlIHBsYWNlaG9sZGVycyB3aWxsIG1ha2UKICAgIHlvdXIgZXZlbnQgbG9ncyBiaWcsIGFzIHRoZSBlbnRpcmUgbWVzc2FnZSBzb3VyY2UgaXMgaGVsZCBpbiB0aGUgbG9nLgogICAgSWYgeW91IHdhbnQgc2xpbW1lciBsb2dzLCB5b3UgaGF2ZSB0byBwYXNzIGluIHRoZSBuYW1lIG9mIHlvdXIgb3duIERMTAogICAgd2hpY2ggY29udGFpbnMgdGhlIG1lc3NhZ2UgZGVmaW5pdGlvbnMgeW91IHdhbnQgdG8gdXNlIGluIHRoZSBldmVudCBsb2cuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcHBuYW1lLCBkbGxuYW1lPU5vbmUsIGxvZ3R5cGU9IkFwcGxpY2F0aW9uIik6CiAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgd2luMzJldnRsb2d1dGlsLCB3aW4zMmV2dGxvZwogICAgICAgICAgICBzZWxmLmFwcG5hbWUgPSBhcHBuYW1lCiAgICAgICAgICAgIHNlbGYuX3dlbHUgPSB3aW4zMmV2dGxvZ3V0aWwKICAgICAgICAgICAgaWYgbm90IGRsbG5hbWU6CiAgICAgICAgICAgICAgICBkbGxuYW1lID0gb3MucGF0aC5zcGxpdChzZWxmLl93ZWx1Ll9fZmlsZV9fKQogICAgICAgICAgICAgICAgZGxsbmFtZSA9IG9zLnBhdGguc3BsaXQoZGxsbmFtZVswXSkKICAgICAgICAgICAgICAgIGRsbG5hbWUgPSBvcy5wYXRoLmpvaW4oZGxsbmFtZVswXSwgcid3aW4zMnNlcnZpY2UucHlkJykKICAgICAgICAgICAgc2VsZi5kbGxuYW1lID0gZGxsbmFtZQogICAgICAgICAgICBzZWxmLmxvZ3R5cGUgPSBsb2d0eXBlCiAgICAgICAgICAgICMgQWRtaW5pc3RyYXRpdmUgcHJpdmlsZWdlcyBhcmUgcmVxdWlyZWQgdG8gYWRkIGEgc291cmNlIHRvIHRoZSByZWdpc3RyeS4KICAgICAgICAgICAgIyBUaGlzIG1heSBub3QgYmUgYXZhaWxhYmxlIGZvciBhIHVzZXIgdGhhdCBqdXN0IHdhbnRzIHRvIGFkZCB0byBhbgogICAgICAgICAgICAjIGV4aXN0aW5nIHNvdXJjZSAtIGhhbmRsZSB0aGlzIHNwZWNpZmljIGNhc2UuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX3dlbHUuQWRkU291cmNlVG9SZWdpc3RyeShhcHBuYW1lLCBkbGxuYW1lLCBsb2d0eXBlKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCBwcm9iYWJseSBiZSBhIHB5d2ludHlwZXMuZXJyb3IuIE9ubHkgcmFpc2UgaWYgaXQncyBub3QKICAgICAgICAgICAgICAgICMgYW4gImFjY2VzcyBkZW5pZWQiIGVycm9yLCBlbHNlIGxldCBpdCBwYXNzCiAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGUsICd3aW5lcnJvcicsIE5vbmUpICE9IDU6ICAjIG5vdCBhY2Nlc3MgZGVuaWVkCiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgc2VsZi5kZWZ0eXBlID0gd2luMzJldnRsb2cuRVZFTlRMT0dfRVJST1JfVFlQRQogICAgICAgICAgICBzZWxmLnR5cGVtYXAgPSB7CiAgICAgICAgICAgICAgICBsb2dnaW5nLkRFQlVHICAgOiB3aW4zMmV2dGxvZy5FVkVOVExPR19JTkZPUk1BVElPTl9UWVBFLAogICAgICAgICAgICAgICAgbG9nZ2luZy5JTkZPICAgIDogd2luMzJldnRsb2cuRVZFTlRMT0dfSU5GT1JNQVRJT05fVFlQRSwKICAgICAgICAgICAgICAgIGxvZ2dpbmcuV0FSTklORyA6IHdpbjMyZXZ0bG9nLkVWRU5UTE9HX1dBUk5JTkdfVFlQRSwKICAgICAgICAgICAgICAgIGxvZ2dpbmcuRVJST1IgICA6IHdpbjMyZXZ0bG9nLkVWRU5UTE9HX0VSUk9SX1RZUEUsCiAgICAgICAgICAgICAgICBsb2dnaW5nLkNSSVRJQ0FMOiB3aW4zMmV2dGxvZy5FVkVOVExPR19FUlJPUl9UWVBFLAogICAgICAgICB9CiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICBwcmludCgiVGhlIFB5dGhvbiBXaW4zMiBleHRlbnNpb25zIGZvciBOVCAoc2VydmljZSwgZXZlbnQgIlwKICAgICAgICAgICAgICAgICAgICAgICAgImxvZ2dpbmcpIGFwcGVhciBub3QgdG8gYmUgYXZhaWxhYmxlLiIpCiAgICAgICAgICAgIHNlbGYuX3dlbHUgPSBOb25lCgogICAgZGVmIGdldE1lc3NhZ2VJRChzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0aGUgbWVzc2FnZSBJRCBmb3IgdGhlIGV2ZW50IHJlY29yZC4gSWYgeW91IGFyZSB1c2luZyB5b3VyCiAgICAgICAgb3duIG1lc3NhZ2VzLCB5b3UgY291bGQgZG8gdGhpcyBieSBoYXZpbmcgdGhlIG1zZyBwYXNzZWQgdG8gdGhlCiAgICAgICAgbG9nZ2VyIGJlaW5nIGFuIElEIHJhdGhlciB0aGFuIGEgZm9ybWF0dGluZyBzdHJpbmcuIFRoZW4sIGluIGhlcmUsCiAgICAgICAgeW91IGNvdWxkIHVzZSBhIGRpY3Rpb25hcnkgbG9va3VwIHRvIGdldCB0aGUgbWVzc2FnZSBJRC4gVGhpcwogICAgICAgIHZlcnNpb24gcmV0dXJucyAxLCB3aGljaCBpcyB0aGUgYmFzZSBtZXNzYWdlIElEIGluIHdpbjMyc2VydmljZS5weWQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIDEKCiAgICBkZWYgZ2V0RXZlbnRDYXRlZ29yeShzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIFJldHVybiB0aGUgZXZlbnQgY2F0ZWdvcnkgZm9yIHRoZSByZWNvcmQuCgogICAgICAgIE92ZXJyaWRlIHRoaXMgaWYgeW91IHdhbnQgdG8gc3BlY2lmeSB5b3VyIG93biBjYXRlZ29yaWVzLiBUaGlzIHZlcnNpb24KICAgICAgICByZXR1cm5zIDAuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIDAKCiAgICBkZWYgZ2V0RXZlbnRUeXBlKHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIHRoZSBldmVudCB0eXBlIGZvciB0aGUgcmVjb3JkLgoKICAgICAgICBPdmVycmlkZSB0aGlzIGlmIHlvdSB3YW50IHRvIHNwZWNpZnkgeW91ciBvd24gdHlwZXMuIFRoaXMgdmVyc2lvbiBkb2VzCiAgICAgICAgYSBtYXBwaW5nIHVzaW5nIHRoZSBoYW5kbGVyJ3MgdHlwZW1hcCBhdHRyaWJ1dGUsIHdoaWNoIGlzIHNldCB1cCBpbgogICAgICAgIF9faW5pdF9fKCkgdG8gYSBkaWN0aW9uYXJ5IHdoaWNoIGNvbnRhaW5zIG1hcHBpbmdzIGZvciBERUJVRywgSU5GTywKICAgICAgICBXQVJOSU5HLCBFUlJPUiBhbmQgQ1JJVElDQUwuIElmIHlvdSBhcmUgdXNpbmcgeW91ciBvd24gbGV2ZWxzIHlvdSB3aWxsCiAgICAgICAgZWl0aGVyIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2Qgb3IgcGxhY2UgYSBzdWl0YWJsZSBkaWN0aW9uYXJ5IGluCiAgICAgICAgdGhlIGhhbmRsZXIncyB0eXBlbWFwIGF0dHJpYnV0ZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi50eXBlbWFwLmdldChyZWNvcmQubGV2ZWxubywgc2VsZi5kZWZ0eXBlKQoKICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiCiAgICAgICAgRW1pdCBhIHJlY29yZC4KCiAgICAgICAgRGV0ZXJtaW5lIHRoZSBtZXNzYWdlIElELCBldmVudCBjYXRlZ29yeSBhbmQgZXZlbnQgdHlwZS4gVGhlbgogICAgICAgIGxvZyB0aGUgbWVzc2FnZSBpbiB0aGUgTlQgZXZlbnQgbG9nLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX3dlbHU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlkID0gc2VsZi5nZXRNZXNzYWdlSUQocmVjb3JkKQogICAgICAgICAgICAgICAgY2F0ID0gc2VsZi5nZXRFdmVudENhdGVnb3J5KHJlY29yZCkKICAgICAgICAgICAgICAgIHR5cGUgPSBzZWxmLmdldEV2ZW50VHlwZShyZWNvcmQpCiAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCiAgICAgICAgICAgICAgICBzZWxmLl93ZWx1LlJlcG9ydEV2ZW50KHNlbGYuYXBwbmFtZSwgaWQsIGNhdCwgdHlwZSwgW21zZ10pCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgQ2xlYW4gdXAgdGhpcyBoYW5kbGVyLgoKICAgICAgICBZb3UgY2FuIHJlbW92ZSB0aGUgYXBwbGljYXRpb24gbmFtZSBmcm9tIHRoZSByZWdpc3RyeSBhcyBhCiAgICAgICAgc291cmNlIG9mIGV2ZW50IGxvZyBlbnRyaWVzLiBIb3dldmVyLCBpZiB5b3UgZG8gdGhpcywgeW91IHdpbGwKICAgICAgICBub3QgYmUgYWJsZSB0byBzZWUgdGhlIGV2ZW50cyBhcyB5b3UgaW50ZW5kZWQgaW4gdGhlIEV2ZW50IExvZwogICAgICAgIFZpZXdlciAtIGl0IG5lZWRzIHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSByZWdpc3RyeSB0byBnZXQgdGhlCiAgICAgICAgRExMIG5hbWUuCiAgICAgICAgIiIiCiAgICAgICAgI3NlbGYuX3dlbHUuUmVtb3ZlU291cmNlRnJvbVJlZ2lzdHJ5KHNlbGYuYXBwbmFtZSwgc2VsZi5sb2d0eXBlKQogICAgICAgIGxvZ2dpbmcuSGFuZGxlci5jbG9zZShzZWxmKQoKY2xhc3MgSFRUUEhhbmRsZXIobG9nZ2luZy5IYW5kbGVyKToKICAgICIiIgogICAgQSBjbGFzcyB3aGljaCBzZW5kcyByZWNvcmRzIHRvIGEgd2ViIHNlcnZlciwgdXNpbmcgZWl0aGVyIEdFVCBvcgogICAgUE9TVCBzZW1hbnRpY3MuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCB1cmwsIG1ldGhvZD0iR0VUIiwgc2VjdXJlPUZhbHNlLCBjcmVkZW50aWFscz1Ob25lLAogICAgICAgICAgICAgICAgIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaW5zdGFuY2Ugd2l0aCB0aGUgaG9zdCwgdGhlIHJlcXVlc3QgVVJMLCBhbmQgdGhlIG1ldGhvZAogICAgICAgICgiR0VUIiBvciAiUE9TVCIpCiAgICAgICAgIiIiCiAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCiAgICAgICAgbWV0aG9kID0gbWV0aG9kLnVwcGVyKCkKICAgICAgICBpZiBtZXRob2Qgbm90IGluIFsiR0VUIiwgIlBPU1QiXToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWV0aG9kIG11c3QgYmUgR0VUIG9yIFBPU1QiKQogICAgICAgIGlmIG5vdCBzZWN1cmUgYW5kIGNvbnRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgcGFyYW1ldGVyIG9ubHkgbWFrZXMgc2Vuc2UgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIHNlY3VyZT1UcnVlIikKICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgc2VsZi51cmwgPSB1cmwKICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAogICAgICAgIHNlbGYuc2VjdXJlID0gc2VjdXJlCiAgICAgICAgc2VsZi5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzCiAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAoKICAgIGRlZiBtYXBMb2dSZWNvcmQoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIG1hcHBpbmcgdGhlIGxvZyByZWNvcmQgaW50byBhIGRpY3QKICAgICAgICB0aGF0IGlzIHNlbnQgYXMgdGhlIENHSSBkYXRhLiBPdmVyd3JpdGUgaW4geW91ciBjbGFzcy4KICAgICAgICBDb250cmlidXRlZCBieSBGcmFueiBHbGFzbmVyLgogICAgICAgICIiIgogICAgICAgIHJldHVybiByZWNvcmQuX19kaWN0X18KCiAgICBkZWYgZ2V0Q29ubmVjdGlvbihzZWxmLCBob3N0LCBzZWN1cmUpOgogICAgICAgICIiIgogICAgICAgIGdldCBhIEhUVFBbU11Db25uZWN0aW9uLgoKICAgICAgICBPdmVycmlkZSB3aGVuIGEgY3VzdG9tIGNvbm5lY3Rpb24gaXMgcmVxdWlyZWQsIGZvciBleGFtcGxlIGlmCiAgICAgICAgdGhlcmUgaXMgYSBwcm94eS4KICAgICAgICAiIiIKICAgICAgICBpbXBvcnQgaHR0cC5jbGllbnQKICAgICAgICBpZiBzZWN1cmU6CiAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oaG9zdCwgY29udGV4dD1zZWxmLmNvbnRleHQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY29ubmVjdGlvbiA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKGhvc3QpCiAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24KCiAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIEVtaXQgYSByZWNvcmQuCgogICAgICAgIFNlbmQgdGhlIHJlY29yZCB0byB0aGUgd2ViIHNlcnZlciBhcyBhIHBlcmNlbnQtZW5jb2RlZCBkaWN0aW9uYXJ5CiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpbXBvcnQgdXJsbGliLnBhcnNlCiAgICAgICAgICAgIGhvc3QgPSBzZWxmLmhvc3QKICAgICAgICAgICAgaCA9IHNlbGYuZ2V0Q29ubmVjdGlvbihob3N0LCBzZWxmLnNlY3VyZSkKICAgICAgICAgICAgdXJsID0gc2VsZi51cmwKICAgICAgICAgICAgZGF0YSA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoc2VsZi5tYXBMb2dSZWNvcmQocmVjb3JkKSkKICAgICAgICAgICAgaWYgc2VsZi5tZXRob2QgPT0gIkdFVCI6CiAgICAgICAgICAgICAgICBpZiAodXJsLmZpbmQoJz8nKSA+PSAwKToKICAgICAgICAgICAgICAgICAgICBzZXAgPSAnJicKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VwID0gJz8nCiAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAiJWMlcyIgJSAoc2VwLCBkYXRhKQogICAgICAgICAgICBoLnB1dHJlcXVlc3Qoc2VsZi5tZXRob2QsIHVybCkKICAgICAgICAgICAgIyBzdXBwb3J0IG11bHRpcGxlIGhvc3RzIG9uIG9uZSBJUCBhZGRyZXNzLi4uCiAgICAgICAgICAgICMgbmVlZCB0byBzdHJpcCBvcHRpb25hbCA6cG9ydCBmcm9tIGhvc3QsIGlmIHByZXNlbnQKICAgICAgICAgICAgaSA9IGhvc3QuZmluZCgiOiIpCiAgICAgICAgICAgIGlmIGkgPj0gMDoKICAgICAgICAgICAgICAgIGhvc3QgPSBob3N0WzppXQogICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMzA5MDQ6IHB1dHJlcXVlc3QgY2FsbCBhYm92ZSBhbHJlYWR5IGFkZHMgdGhpcyBoZWFkZXIKICAgICAgICAgICAgIyBvbiBQeXRob24gMy54LgogICAgICAgICAgICAjIGgucHV0aGVhZGVyKCJIb3N0IiwgaG9zdCkKICAgICAgICAgICAgaWYgc2VsZi5tZXRob2QgPT0gIlBPU1QiOgogICAgICAgICAgICAgICAgaC5wdXRoZWFkZXIoIkNvbnRlbnQtdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikKICAgICAgICAgICAgICAgIGgucHV0aGVhZGVyKCJDb250ZW50LWxlbmd0aCIsIHN0cihsZW4oZGF0YSkpKQogICAgICAgICAgICBpZiBzZWxmLmNyZWRlbnRpYWxzOgogICAgICAgICAgICAgICAgaW1wb3J0IGJhc2U2NAogICAgICAgICAgICAgICAgcyA9ICgnJXM6JXMnICUgc2VsZi5jcmVkZW50aWFscykuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgICAgICAgICBzID0gJ0Jhc2ljICcgKyBiYXNlNjQuYjY0ZW5jb2RlKHMpLnN0cmlwKCkuZGVjb2RlKCdhc2NpaScpCiAgICAgICAgICAgICAgICBoLnB1dGhlYWRlcignQXV0aG9yaXphdGlvbicsIHMpCiAgICAgICAgICAgIGguZW5kaGVhZGVycygpCiAgICAgICAgICAgIGlmIHNlbGYubWV0aG9kID09ICJQT1NUIjoKICAgICAgICAgICAgICAgIGguc2VuZChkYXRhLmVuY29kZSgndXRmLTgnKSkKICAgICAgICAgICAgaC5nZXRyZXNwb25zZSgpICAgICNjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoZSByZXN1bHQKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKCmNsYXNzIEJ1ZmZlcmluZ0hhbmRsZXIobG9nZ2luZy5IYW5kbGVyKToKICAgICIiIgogIEEgaGFuZGxlciBjbGFzcyB3aGljaCBidWZmZXJzIGxvZ2dpbmcgcmVjb3JkcyBpbiBtZW1vcnkuIFdoZW5ldmVyIGVhY2gKICByZWNvcmQgaXMgYWRkZWQgdG8gdGhlIGJ1ZmZlciwgYSBjaGVjayBpcyBtYWRlIHRvIHNlZSBpZiB0aGUgYnVmZmVyIHNob3VsZAogIGJlIGZsdXNoZWQuIElmIGl0IHNob3VsZCwgdGhlbiBmbHVzaCgpIGlzIGV4cGVjdGVkIHRvIGRvIHdoYXQncyBuZWVkZWQuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eSk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlciB3aXRoIHRoZSBidWZmZXIgc2l6ZS4KICAgICAgICAiIiIKICAgICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKICAgICAgICBzZWxmLmNhcGFjaXR5ID0gY2FwYWNpdHkKICAgICAgICBzZWxmLmJ1ZmZlciA9IFtdCgogICAgZGVmIHNob3VsZEZsdXNoKHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiCiAgICAgICAgU2hvdWxkIHRoZSBoYW5kbGVyIGZsdXNoIGl0cyBidWZmZXI/CgogICAgICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgYnVmZmVyIGlzIHVwIHRvIGNhcGFjaXR5LiBUaGlzIG1ldGhvZCBjYW4gYmUKICAgICAgICBvdmVycmlkZGVuIHRvIGltcGxlbWVudCBjdXN0b20gZmx1c2hpbmcgc3RyYXRlZ2llcy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gKGxlbihzZWxmLmJ1ZmZlcikgPj0gc2VsZi5jYXBhY2l0eSkKCiAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICIiIgogICAgICAgIEVtaXQgYSByZWNvcmQuCgogICAgICAgIEFwcGVuZCB0aGUgcmVjb3JkLiBJZiBzaG91bGRGbHVzaCgpIHRlbGxzIHVzIHRvLCBjYWxsIGZsdXNoKCkgdG8gcHJvY2VzcwogICAgICAgIHRoZSBidWZmZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5idWZmZXIuYXBwZW5kKHJlY29yZCkKICAgICAgICBpZiBzZWxmLnNob3VsZEZsdXNoKHJlY29yZCk6CiAgICAgICAgICAgIHNlbGYuZmx1c2goKQoKICAgIGRlZiBmbHVzaChzZWxmKToKICAgICAgICAiIiIKICAgICAgICBPdmVycmlkZSB0byBpbXBsZW1lbnQgY3VzdG9tIGZsdXNoaW5nIGJlaGF2aW91ci4KCiAgICAgICAgVGhpcyB2ZXJzaW9uIGp1c3QgemFwcyB0aGUgYnVmZmVyIHRvIGVtcHR5LgogICAgICAgICIiIgogICAgICAgIHNlbGYuYWNxdWlyZSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmJ1ZmZlci5jbGVhcigpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgQ2xvc2UgdGhlIGhhbmRsZXIuCgogICAgICAgIFRoaXMgdmVyc2lvbiBqdXN0IGZsdXNoZXMgYW5kIGNoYWlucyB0byB0aGUgcGFyZW50IGNsYXNzJyBjbG9zZSgpLgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLmNsb3NlKHNlbGYpCgpjbGFzcyBNZW1vcnlIYW5kbGVyKEJ1ZmZlcmluZ0hhbmRsZXIpOgogICAgIiIiCiAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggYnVmZmVycyBsb2dnaW5nIHJlY29yZHMgaW4gbWVtb3J5LCBwZXJpb2RpY2FsbHkKICAgIGZsdXNoaW5nIHRoZW0gdG8gYSB0YXJnZXQgaGFuZGxlci4gRmx1c2hpbmcgb2NjdXJzIHdoZW5ldmVyIHRoZSBidWZmZXIKICAgIGlzIGZ1bGwsIG9yIHdoZW4gYW4gZXZlbnQgb2YgYSBjZXJ0YWluIHNldmVyaXR5IG9yIGdyZWF0ZXIgaXMgc2Vlbi4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhcGFjaXR5LCBmbHVzaExldmVsPWxvZ2dpbmcuRVJST1IsIHRhcmdldD1Ob25lLAogICAgICAgICAgICAgICAgIGZsdXNoT25DbG9zZT1UcnVlKToKICAgICAgICAiIiIKICAgICAgICBJbml0aWFsaXplIHRoZSBoYW5kbGVyIHdpdGggdGhlIGJ1ZmZlciBzaXplLCB0aGUgbGV2ZWwgYXQgd2hpY2gKICAgICAgICBmbHVzaGluZyBzaG91bGQgb2NjdXIgYW5kIGFuIG9wdGlvbmFsIHRhcmdldC4KCiAgICAgICAgTm90ZSB0aGF0IHdpdGhvdXQgYSB0YXJnZXQgYmVpbmcgc2V0IGVpdGhlciBoZXJlIG9yIHZpYSBzZXRUYXJnZXQoKSwKICAgICAgICBhIE1lbW9yeUhhbmRsZXIgaXMgbm8gdXNlIHRvIGFueW9uZSEKCiAgICAgICAgVGhlIGBgZmx1c2hPbkNsb3NlYGAgYXJndW1lbnQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICAgICAgICByZWFzb25zIC0gdGhlIG9sZCBiZWhhdmlvdXIgaXMgdGhhdCB3aGVuIHRoZSBoYW5kbGVyIGlzIGNsb3NlZCwgdGhlCiAgICAgICAgYnVmZmVyIGlzIGZsdXNoZWQsIGV2ZW4gaWYgdGhlIGZsdXNoIGxldmVsIGhhc24ndCBiZWVuIGV4Y2VlZGVkIG5vciB0aGUKICAgICAgICBjYXBhY2l0eSBleGNlZWRlZC4gVG8gcHJldmVudCB0aGlzLCBzZXQgYGBmbHVzaE9uQ2xvc2VgYCB0byBgYEZhbHNlYGAuCiAgICAgICAgIiIiCiAgICAgICAgQnVmZmVyaW5nSGFuZGxlci5fX2luaXRfXyhzZWxmLCBjYXBhY2l0eSkKICAgICAgICBzZWxmLmZsdXNoTGV2ZWwgPSBmbHVzaExldmVsCiAgICAgICAgc2VsZi50YXJnZXQgPSB0YXJnZXQKICAgICAgICAjIFNlZSBJc3N1ZSAjMjY1NTkgZm9yIHdoeSB0aGlzIGhhcyBiZWVuIGFkZGVkCiAgICAgICAgc2VsZi5mbHVzaE9uQ2xvc2UgPSBmbHVzaE9uQ2xvc2UKCiAgICBkZWYgc2hvdWxkRmx1c2goc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBDaGVjayBmb3IgYnVmZmVyIGZ1bGwgb3IgYSByZWNvcmQgYXQgdGhlIGZsdXNoTGV2ZWwgb3IgaGlnaGVyLgogICAgICAgICIiIgogICAgICAgIHJldHVybiAobGVuKHNlbGYuYnVmZmVyKSA+PSBzZWxmLmNhcGFjaXR5KSBvciBcCiAgICAgICAgICAgICAgICAocmVjb3JkLmxldmVsbm8gPj0gc2VsZi5mbHVzaExldmVsKQoKICAgIGRlZiBzZXRUYXJnZXQoc2VsZiwgdGFyZ2V0KToKICAgICAgICAiIiIKICAgICAgICBTZXQgdGhlIHRhcmdldCBoYW5kbGVyIGZvciB0aGlzIGhhbmRsZXIuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5hY3F1aXJlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKCiAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgRm9yIGEgTWVtb3J5SGFuZGxlciwgZmx1c2hpbmcgbWVhbnMganVzdCBzZW5kaW5nIHRoZSBidWZmZXJlZAogICAgICAgIHJlY29yZHMgdG8gdGhlIHRhcmdldCwgaWYgdGhlcmUgaXMgb25lLiBPdmVycmlkZSBpZiB5b3Ugd2FudAogICAgICAgIGRpZmZlcmVudCBiZWhhdmlvdXIuCgogICAgICAgIFRoZSByZWNvcmQgYnVmZmVyIGlzIGFsc28gY2xlYXJlZCBieSB0aGlzIG9wZXJhdGlvbi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi50YXJnZXQ6CiAgICAgICAgICAgICAgICBmb3IgcmVjb3JkIGluIHNlbGYuYnVmZmVyOgogICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmhhbmRsZShyZWNvcmQpCiAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlci5jbGVhcigpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgRmx1c2gsIGlmIGFwcHJvcHJpYXRlbHkgY29uZmlndXJlZCwgc2V0IHRoZSB0YXJnZXQgdG8gTm9uZSBhbmQgbG9zZSB0aGUKICAgICAgICBidWZmZXIuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzZWxmLmZsdXNoT25DbG9zZToKICAgICAgICAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuYWNxdWlyZSgpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0ID0gTm9uZQogICAgICAgICAgICAgICAgQnVmZmVyaW5nSGFuZGxlci5jbG9zZShzZWxmKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKCgpjbGFzcyBRdWV1ZUhhbmRsZXIobG9nZ2luZy5IYW5kbGVyKToKICAgICIiIgogICAgVGhpcyBoYW5kbGVyIHNlbmRzIGV2ZW50cyB0byBhIHF1ZXVlLiBUeXBpY2FsbHksIGl0IHdvdWxkIGJlIHVzZWQgdG9nZXRoZXIKICAgIHdpdGggYSBtdWx0aXByb2Nlc3NpbmcgUXVldWUgdG8gY2VudHJhbGlzZSBsb2dnaW5nIHRvIGZpbGUgaW4gb25lIHByb2Nlc3MKICAgIChpbiBhIG11bHRpLXByb2Nlc3MgYXBwbGljYXRpb24pLCBzbyBhcyB0byBhdm9pZCBmaWxlIHdyaXRlIGNvbnRlbnRpb24KICAgIGJldHdlZW4gcHJvY2Vzc2VzLgoKICAgIFRoaXMgY29kZSBpcyBuZXcgaW4gUHl0aG9uIDMuMiwgYnV0IHRoaXMgY2xhc3MgY2FuIGJlIGNvcHkgcGFzdGVkIGludG8KICAgIHVzZXIgY29kZSBmb3IgdXNlIHdpdGggZWFybGllciBQeXRob24gdmVyc2lvbnMuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcXVldWUpOgogICAgICAgICIiIgogICAgICAgIEluaXRpYWxpc2UgYW4gaW5zdGFuY2UsIHVzaW5nIHRoZSBwYXNzZWQgcXVldWUuCiAgICAgICAgIiIiCiAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCiAgICAgICAgc2VsZi5xdWV1ZSA9IHF1ZXVlCgogICAgZGVmIGVucXVldWUoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBFbnF1ZXVlIGEgcmVjb3JkLgoKICAgICAgICBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiB1c2VzIHB1dF9ub3dhaXQuIFlvdSBtYXkgd2FudCB0byBvdmVycmlkZQogICAgICAgIHRoaXMgbWV0aG9kIGlmIHlvdSB3YW50IHRvIHVzZSBibG9ja2luZywgdGltZW91dHMgb3IgY3VzdG9tIHF1ZXVlCiAgICAgICAgaW1wbGVtZW50YXRpb25zLgogICAgICAgICIiIgogICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdChyZWNvcmQpCgogICAgZGVmIHByZXBhcmUoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBQcmVwYXJlIGEgcmVjb3JkIGZvciBxdWV1aW5nLiBUaGUgb2JqZWN0IHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kIGlzCiAgICAgICAgZW5xdWV1ZWQuCgogICAgICAgIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGZvcm1hdHMgdGhlIHJlY29yZCB0byBtZXJnZSB0aGUgbWVzc2FnZSBhbmQKICAgICAgICBhcmd1bWVudHMsIGFuZCByZW1vdmVzIHVucGlja2xlYWJsZSBpdGVtcyBmcm9tIHRoZSByZWNvcmQgaW4tcGxhY2UuCiAgICAgICAgU3BlY2lmaWNhbGx5LCBpdCBvdmVyd3JpdGVzIHRoZSByZWNvcmQncyBgbXNnYCBhbmQKICAgICAgICBgbWVzc2FnZWAgYXR0cmlidXRlcyB3aXRoIHRoZSBtZXJnZWQgbWVzc2FnZSAob2J0YWluZWQgYnkKICAgICAgICBjYWxsaW5nIHRoZSBoYW5kbGVyJ3MgYGZvcm1hdGAgbWV0aG9kKSwgYW5kIHNldHMgdGhlIGBhcmdzYCwKICAgICAgICBgZXhjX2luZm9gIGFuZCBgZXhjX3RleHRgIGF0dHJpYnV0ZXMgdG8gTm9uZS4KCiAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgeW91IHdhbnQgdG8gY29udmVydAogICAgICAgIHRoZSByZWNvcmQgdG8gYSBkaWN0IG9yIEpTT04gc3RyaW5nLCBvciBzZW5kIGEgbW9kaWZpZWQgY29weQogICAgICAgIG9mIHRoZSByZWNvcmQgd2hpbGUgbGVhdmluZyB0aGUgb3JpZ2luYWwgaW50YWN0LgogICAgICAgICIiIgogICAgICAgICMgVGhlIGZvcm1hdCBvcGVyYXRpb24gZ2V0cyB0cmFjZWJhY2sgdGV4dCBpbnRvIHJlY29yZC5leGNfdGV4dAogICAgICAgICMgKGlmIHRoZXJlJ3MgZXhjZXB0aW9uIGRhdGEpLCBhbmQgYWxzbyByZXR1cm5zIHRoZSBmb3JtYXR0ZWQKICAgICAgICAjIG1lc3NhZ2UuIFdlIGNhbiB0aGVuIHVzZSB0aGlzIHRvIHJlcGxhY2UgdGhlIG9yaWdpbmFsCiAgICAgICAgIyBtc2cgKyBhcmdzLCBhcyB0aGVzZSBtaWdodCBiZSB1bnBpY2tsZWFibGUuIFdlIGFsc28gemFwIHRoZQogICAgICAgICMgZXhjX2luZm8sIGV4Y190ZXh0IGFuZCBzdGFja19pbmZvIGF0dHJpYnV0ZXMsIGFzIHRoZXkgYXJlIG5vIGxvbmdlcgogICAgICAgICMgbmVlZGVkIGFuZCwgaWYgbm90IE5vbmUsIHdpbGwgdHlwaWNhbGx5IG5vdCBiZSBwaWNrbGVhYmxlLgogICAgICAgIG1zZyA9IHNlbGYuZm9ybWF0KHJlY29yZCkKICAgICAgICAjIGJwby0zNTcyNjogbWFrZSBjb3B5IG9mIHJlY29yZCB0byBhdm9pZCBhZmZlY3Rpbmcgb3RoZXIgaGFuZGxlcnMgaW4gdGhlIGNoYWluLgogICAgICAgIHJlY29yZCA9IGNvcHkuY29weShyZWNvcmQpCiAgICAgICAgcmVjb3JkLm1lc3NhZ2UgPSBtc2cKICAgICAgICByZWNvcmQubXNnID0gbXNnCiAgICAgICAgcmVjb3JkLmFyZ3MgPSBOb25lCiAgICAgICAgcmVjb3JkLmV4Y19pbmZvID0gTm9uZQogICAgICAgIHJlY29yZC5leGNfdGV4dCA9IE5vbmUKICAgICAgICByZWNvcmQuc3RhY2tfaW5mbyA9IE5vbmUKICAgICAgICByZXR1cm4gcmVjb3JkCgogICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBFbWl0IGEgcmVjb3JkLgoKICAgICAgICBXcml0ZXMgdGhlIExvZ1JlY29yZCB0byB0aGUgcXVldWUsIHByZXBhcmluZyBpdCBmb3IgcGlja2xpbmcgZmlyc3QuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmVucXVldWUoc2VsZi5wcmVwYXJlKHJlY29yZCkpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCgoKY2xhc3MgUXVldWVMaXN0ZW5lcihvYmplY3QpOgogICAgIiIiCiAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgYW4gaW50ZXJuYWwgdGhyZWFkZWQgbGlzdGVuZXIgd2hpY2ggd2F0Y2hlcyBmb3IKICAgIExvZ1JlY29yZHMgYmVpbmcgYWRkZWQgdG8gYSBxdWV1ZSwgcmVtb3ZlcyB0aGVtIGFuZCBwYXNzZXMgdGhlbSB0byBhCiAgICBsaXN0IG9mIGhhbmRsZXJzIGZvciBwcm9jZXNzaW5nLgogICAgIiIiCiAgICBfc2VudGluZWwgPSBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1ZXVlLCAqaGFuZGxlcnMsIHJlc3BlY3RfaGFuZGxlcl9sZXZlbD1GYWxzZSk6CiAgICAgICAgIiIiCiAgICAgICAgSW5pdGlhbGlzZSBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVldWUgYW5kCiAgICAgICAgaGFuZGxlcnMuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5xdWV1ZSA9IHF1ZXVlCiAgICAgICAgc2VsZi5oYW5kbGVycyA9IGhhbmRsZXJzCiAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQogICAgICAgIHNlbGYucmVzcGVjdF9oYW5kbGVyX2xldmVsID0gcmVzcGVjdF9oYW5kbGVyX2xldmVsCgogICAgZGVmIGRlcXVldWUoc2VsZiwgYmxvY2spOgogICAgICAgICIiIgogICAgICAgIERlcXVldWUgYSByZWNvcmQgYW5kIHJldHVybiBpdCwgb3B0aW9uYWxseSBibG9ja2luZy4KCiAgICAgICAgVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gdXNlcyBnZXQuIFlvdSBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZAogICAgICAgIGlmIHlvdSB3YW50IHRvIHVzZSB0aW1lb3V0cyBvciB3b3JrIHdpdGggY3VzdG9tIHF1ZXVlIGltcGxlbWVudGF0aW9ucy4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5xdWV1ZS5nZXQoYmxvY2spCgogICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFN0YXJ0IHRoZSBsaXN0ZW5lci4KCiAgICAgICAgVGhpcyBzdGFydHMgdXAgYSBiYWNrZ3JvdW5kIHRocmVhZCB0byBtb25pdG9yIHRoZSBxdWV1ZSBmb3IKICAgICAgICBMb2dSZWNvcmRzIHRvIHByb2Nlc3MuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdGhyZWFkID0gdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX21vbml0b3IpCiAgICAgICAgdC5kYWVtb24gPSBUcnVlCiAgICAgICAgdC5zdGFydCgpCgogICAgZGVmIHByZXBhcmUoc2VsZiwgcmVjb3JkKToKICAgICAgICAiIiIKICAgICAgICBQcmVwYXJlIGEgcmVjb3JkIGZvciBoYW5kbGluZy4KCiAgICAgICAgVGhpcyBtZXRob2QganVzdCByZXR1cm5zIHRoZSBwYXNzZWQtaW4gcmVjb3JkLiBZb3UgbWF5IHdhbnQgdG8KICAgICAgICBvdmVycmlkZSB0aGlzIG1ldGhvZCBpZiB5b3UgbmVlZCB0byBkbyBhbnkgY3VzdG9tIG1hcnNoYWxsaW5nIG9yCiAgICAgICAgbWFuaXB1bGF0aW9uIG9mIHRoZSByZWNvcmQgYmVmb3JlIHBhc3NpbmcgaXQgdG8gdGhlIGhhbmRsZXJzLgogICAgICAgICIiIgogICAgICAgIHJldHVybiByZWNvcmQKCiAgICBkZWYgaGFuZGxlKHNlbGYsIHJlY29yZCk6CiAgICAgICAgIiIiCiAgICAgICAgSGFuZGxlIGEgcmVjb3JkLgoKICAgICAgICBUaGlzIGp1c3QgbG9vcHMgdGhyb3VnaCB0aGUgaGFuZGxlcnMgb2ZmZXJpbmcgdGhlbSB0aGUgcmVjb3JkCiAgICAgICAgdG8gaGFuZGxlLgogICAgICAgICIiIgogICAgICAgIHJlY29yZCA9IHNlbGYucHJlcGFyZShyZWNvcmQpCiAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5oYW5kbGVyczoKICAgICAgICAgICAgaWYgbm90IHNlbGYucmVzcGVjdF9oYW5kbGVyX2xldmVsOgogICAgICAgICAgICAgICAgcHJvY2VzcyA9IFRydWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByb2Nlc3MgPSByZWNvcmQubGV2ZWxubyA+PSBoYW5kbGVyLmxldmVsCiAgICAgICAgICAgIGlmIHByb2Nlc3M6CiAgICAgICAgICAgICAgICBoYW5kbGVyLmhhbmRsZShyZWNvcmQpCgogICAgZGVmIF9tb25pdG9yKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIE1vbml0b3IgdGhlIHF1ZXVlIGZvciByZWNvcmRzLCBhbmQgYXNrIHRoZSBoYW5kbGVyCiAgICAgICAgdG8gZGVhbCB3aXRoIHRoZW0uCgogICAgICAgIFRoaXMgbWV0aG9kIHJ1bnMgb24gYSBzZXBhcmF0ZSwgaW50ZXJuYWwgdGhyZWFkLgogICAgICAgIFRoZSB0aHJlYWQgd2lsbCB0ZXJtaW5hdGUgaWYgaXQgc2VlcyBhIHNlbnRpbmVsIG9iamVjdCBpbiB0aGUgcXVldWUuCiAgICAgICAgIiIiCiAgICAgICAgcSA9IHNlbGYucXVldWUKICAgICAgICBoYXNfdGFza19kb25lID0gaGFzYXR0cihxLCAndGFza19kb25lJykKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZWNvcmQgPSBzZWxmLmRlcXVldWUoVHJ1ZSkKICAgICAgICAgICAgICAgIGlmIHJlY29yZCBpcyBzZWxmLl9zZW50aW5lbDoKICAgICAgICAgICAgICAgICAgICBpZiBoYXNfdGFza19kb25lOgogICAgICAgICAgICAgICAgICAgICAgICBxLnRhc2tfZG9uZSgpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlKHJlY29yZCkKICAgICAgICAgICAgICAgIGlmIGhhc190YXNrX2RvbmU6CiAgICAgICAgICAgICAgICAgICAgcS50YXNrX2RvbmUoKQogICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CiAgICAgICAgICAgICAgICBicmVhawoKICAgIGRlZiBlbnF1ZXVlX3NlbnRpbmVsKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFRoaXMgaXMgdXNlZCB0byBlbnF1ZXVlIHRoZSBzZW50aW5lbCByZWNvcmQuCgogICAgICAgIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHVzZXMgcHV0X25vd2FpdC4gWW91IG1heSB3YW50IHRvIG92ZXJyaWRlIHRoaXMKICAgICAgICBtZXRob2QgaWYgeW91IHdhbnQgdG8gdXNlIHRpbWVvdXRzIG9yIHdvcmsgd2l0aCBjdXN0b20gcXVldWUKICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHNlbGYuX3NlbnRpbmVsKQoKICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIFN0b3AgdGhlIGxpc3RlbmVyLgoKICAgICAgICBUaGlzIGFza3MgdGhlIHRocmVhZCB0byB0ZXJtaW5hdGUsIGFuZCB0aGVuIHdhaXRzIGZvciBpdCB0byBkbyBzby4KICAgICAgICBOb3RlIHRoYXQgaWYgeW91IGRvbid0IGNhbGwgdGhpcyBiZWZvcmUgeW91ciBhcHBsaWNhdGlvbiBleGl0cywgdGhlcmUKICAgICAgICBtYXkgYmUgc29tZSByZWNvcmRzIHN0aWxsIGxlZnQgb24gdGhlIHF1ZXVlLCB3aGljaCB3b24ndCBiZSBwcm9jZXNzZWQuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5lbnF1ZXVlX3NlbnRpbmVsKCkKICAgICAgICBzZWxmLl90aHJlYWQuam9pbigpCiAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQpQSwMEFAAAAAAAAyCjVgAAAAAAAAAAAAAAABYAAABtdWx0aXByb2Nlc3NpbmcvZHVtbXkvUEsDBBQAAAAAAAMgo1Yn6nWslAMAAJQDAAAbAAAAbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5IwojIFBhY2thZ2UgYW5hbG9nb3VzIHRvICd0aHJlYWRpbmcucHknIGJ1dCB1c2luZyBwcm9jZXNzZXMKIwojIG11bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weQojCiMgVGhpcyBwYWNrYWdlIGlzIGludGVuZGVkIHRvIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSAoYW5kIG11Y2ggb2YKIyB0aGUgQVBJKSBvZiB0aHJlYWRpbmcucHkgYnV0IHVzZXMgcHJvY2Vzc2VzIGluc3RlYWQgb2YgdGhyZWFkcy4gIEEKIyBzdWJwYWNrYWdlICdtdWx0aXByb2Nlc3NpbmcuZHVtbXknIGhhcyB0aGUgc2FtZSBBUEkgYnV0IGlzIGEgc2ltcGxlCiMgd3JhcHBlciBmb3IgJ3RocmVhZGluZycuCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgojCgppbXBvcnQgc3lzCmZyb20gLiBpbXBvcnQgY29udGV4dAoKIwojIENvcHkgc3R1ZmYgZnJvbSBkZWZhdWx0IGNvbnRleHQKIwoKX19hbGxfXyA9IFt4IGZvciB4IGluIGRpcihjb250ZXh0Ll9kZWZhdWx0X2NvbnRleHQpIGlmIG5vdCB4LnN0YXJ0c3dpdGgoJ18nKV0KZ2xvYmFscygpLnVwZGF0ZSgobmFtZSwgZ2V0YXR0cihjb250ZXh0Ll9kZWZhdWx0X2NvbnRleHQsIG5hbWUpKSBmb3IgbmFtZSBpbiBfX2FsbF9fKQoKIwojIFhYWCBUaGVzZSBzaG91bGQgbm90IHJlYWxseSBiZSBkb2N1bWVudGVkIG9yIHB1YmxpYy4KIwoKU1VCREVCVUcgPSA1ClNVQldBUk5JTkcgPSAyNQoKIwojIEFsaWFzIGZvciBtYWluIG1vZHVsZSAtLSB3aWxsIGJlIHJlc2V0IGJ5IGJvb3RzdHJhcHBpbmcgY2hpbGQgcHJvY2Vzc2VzCiMKCmlmICdfX21haW5fXycgaW4gc3lzLm1vZHVsZXM6CiAgICBzeXMubW9kdWxlc1snX19tcF9tYWluX18nXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddClBLAwQUAAAAAAADIKNW5rB9X6F7AAChewAAHQAAAG11bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IwojIEEgaGlnaGVyIGxldmVsIG1vZHVsZSBmb3IgdXNpbmcgc29ja2V0cyAob3IgV2luZG93cyBuYW1lZCBwaXBlcykKIwojIG11bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgojCgpfX2FsbF9fID0gWyAnQ2xpZW50JywgJ0xpc3RlbmVyJywgJ1BpcGUnLCAnd2FpdCcgXQoKaW1wb3J0IGlvCmltcG9ydCBvcwppbXBvcnQgc3lzCmltcG9ydCBzb2NrZXQKaW1wb3J0IHN0cnVjdAppbXBvcnQgdGltZQppbXBvcnQgdGVtcGZpbGUKaW1wb3J0IGl0ZXJ0b29scwoKdHJ5OgogICAgaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3I6CiAgICBwYXNzCgpmcm9tIC4gaW1wb3J0IHV0aWwKCmZyb20gLiBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgQnVmZmVyVG9vU2hvcnQKZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCl9Gb3JraW5nUGlja2xlciA9IHJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgoKdHJ5OgogICAgaW1wb3J0IF93aW5hcGkKICAgIGZyb20gX3dpbmFwaSBpbXBvcnQgV0FJVF9PQkpFQ1RfMCwgV0FJVF9BQkFORE9ORURfMCwgV0FJVF9USU1FT1VULCBJTkZJTklURQpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICByYWlzZQogICAgX3dpbmFwaSA9IE5vbmUKCiMKIwojCgpCVUZTSVpFID0gODE5MgojIEEgdmVyeSBnZW5lcm91cyB0aW1lb3V0IHdoZW4gaXQgY29tZXMgdG8gbG9jYWwgY29ubmVjdGlvbnMuLi4KQ09OTkVDVElPTl9USU1FT1VUID0gMjAuCgpfbW1hcF9jb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KCkKCmRlZmF1bHRfZmFtaWx5ID0gJ0FGX0lORVQnCmZhbWlsaWVzID0gWydBRl9JTkVUJ10KCmlmIGhhc2F0dHIoc29ja2V0LCAnQUZfVU5JWCcpOgogICAgZGVmYXVsdF9mYW1pbHkgPSAnQUZfVU5JWCcKICAgIGZhbWlsaWVzICs9IFsnQUZfVU5JWCddCgppZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgIGRlZmF1bHRfZmFtaWx5ID0gJ0FGX1BJUEUnCiAgICBmYW1pbGllcyArPSBbJ0FGX1BJUEUnXQoKCmRlZiBfaW5pdF90aW1lb3V0KHRpbWVvdXQ9Q09OTkVDVElPTl9USU1FT1VUKToKICAgIHJldHVybiB0aW1lLm1vbm90b25pYygpICsgdGltZW91dAoKZGVmIF9jaGVja190aW1lb3V0KHQpOgogICAgcmV0dXJuIHRpbWUubW9ub3RvbmljKCkgPiB0CgojCiMKIwoKZGVmIGFyYml0cmFyeV9hZGRyZXNzKGZhbWlseSk6CiAgICAnJycKICAgIFJldHVybiBhbiBhcmJpdHJhcnkgZnJlZSBhZGRyZXNzIGZvciB0aGUgZ2l2ZW4gZmFtaWx5CiAgICAnJycKICAgIGlmIGZhbWlseSA9PSAnQUZfSU5FVCc6CiAgICAgICAgcmV0dXJuICgnbG9jYWxob3N0JywgMCkKICAgIGVsaWYgZmFtaWx5ID09ICdBRl9VTklYJzoKICAgICAgICByZXR1cm4gdGVtcGZpbGUubWt0ZW1wKHByZWZpeD0nbGlzdGVuZXItJywgZGlyPXV0aWwuZ2V0X3RlbXBfZGlyKCkpCiAgICBlbGlmIGZhbWlseSA9PSAnQUZfUElQRSc6CiAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rdGVtcChwcmVmaXg9cidcXC5ccGlwZVxweWMtJWQtJWQtJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3MuZ2V0cGlkKCksIG5leHQoX21tYXBfY291bnRlcikpLCBkaXI9IiIpCiAgICBlbHNlOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VucmVjb2duaXplZCBmYW1pbHknKQoKZGVmIF92YWxpZGF0ZV9mYW1pbHkoZmFtaWx5KToKICAgICcnJwogICAgQ2hlY2tzIGlmIHRoZSBmYW1pbHkgaXMgdmFsaWQgZm9yIHRoZSBjdXJyZW50IGVudmlyb25tZW50LgogICAgJycnCiAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJyBhbmQgZmFtaWx5ID09ICdBRl9QSVBFJzoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGYW1pbHkgJXMgaXMgbm90IHJlY29nbml6ZWQuJyAlIGZhbWlseSkKCiAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBhbmQgZmFtaWx5ID09ICdBRl9VTklYJzoKICAgICAgICAjIGRvdWJsZSBjaGVjawogICAgICAgIGlmIG5vdCBoYXNhdHRyKHNvY2tldCwgZmFtaWx5KToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRmFtaWx5ICVzIGlzIG5vdCByZWNvZ25pemVkLicgJSBmYW1pbHkpCgpkZWYgYWRkcmVzc190eXBlKGFkZHJlc3MpOgogICAgJycnCiAgICBSZXR1cm4gdGhlIHR5cGVzIG9mIHRoZSBhZGRyZXNzCgogICAgVGhpcyBjYW4gYmUgJ0FGX0lORVQnLCAnQUZfVU5JWCcsIG9yICdBRl9QSVBFJwogICAgJycnCiAgICBpZiB0eXBlKGFkZHJlc3MpID09IHR1cGxlOgogICAgICAgIHJldHVybiAnQUZfSU5FVCcKICAgIGVsaWYgdHlwZShhZGRyZXNzKSBpcyBzdHIgYW5kIGFkZHJlc3Muc3RhcnRzd2l0aCgnXFxcXCcpOgogICAgICAgIHJldHVybiAnQUZfUElQRScKICAgIGVsaWYgdHlwZShhZGRyZXNzKSBpcyBzdHIgb3IgdXRpbC5pc19hYnN0cmFjdF9zb2NrZXRfbmFtZXNwYWNlKGFkZHJlc3MpOgogICAgICAgIHJldHVybiAnQUZfVU5JWCcKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYWRkcmVzcyB0eXBlIG9mICVyIHVucmVjb2duaXplZCcgJSBhZGRyZXNzKQoKIwojIENvbm5lY3Rpb24gY2xhc3NlcwojCgpjbGFzcyBfQ29ubmVjdGlvbkJhc2U6CiAgICBfaGFuZGxlID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGUsIHJlYWRhYmxlPVRydWUsIHdyaXRhYmxlPVRydWUpOgogICAgICAgIGhhbmRsZSA9IGhhbmRsZS5fX2luZGV4X18oKQogICAgICAgIGlmIGhhbmRsZSA8IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgaGFuZGxlIikKICAgICAgICBpZiBub3QgcmVhZGFibGUgYW5kIG5vdCB3cml0YWJsZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJhdCBsZWFzdCBvbmUgb2YgYHJlYWRhYmxlYCBhbmQgYHdyaXRhYmxlYCBtdXN0IGJlIFRydWUiKQogICAgICAgIHNlbGYuX2hhbmRsZSA9IGhhbmRsZQogICAgICAgIHNlbGYuX3JlYWRhYmxlID0gcmVhZGFibGUKICAgICAgICBzZWxmLl93cml0YWJsZSA9IHdyaXRhYmxlCgogICAgIyBYWFggc2hvdWxkIHdlIHVzZSB1dGlsLkZpbmFsaXplIGluc3RlYWQgb2YgYSBfX2RlbF9fPwoKICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQoKICAgIGRlZiBfY2hlY2tfY2xvc2VkKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJoYW5kbGUgaXMgY2xvc2VkIikKCiAgICBkZWYgX2NoZWNrX3JlYWRhYmxlKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkYWJsZToKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiY29ubmVjdGlvbiBpcyB3cml0ZS1vbmx5IikKCiAgICBkZWYgX2NoZWNrX3dyaXRhYmxlKHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl93cml0YWJsZToKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiY29ubmVjdGlvbiBpcyByZWFkLW9ubHkiKQoKICAgIGRlZiBfYmFkX21lc3NhZ2VfbGVuZ3RoKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3dyaXRhYmxlOgogICAgICAgICAgICBzZWxmLl9yZWFkYWJsZSA9IEZhbHNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgcmFpc2UgT1NFcnJvcigiYmFkIG1lc3NhZ2UgbGVuZ3RoIikKCiAgICBAcHJvcGVydHkKICAgIGRlZiBjbG9zZWQoc2VsZik6CiAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQiIiIKICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlIGlzIE5vbmUKCiAgICBAcHJvcGVydHkKICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHJlYWRhYmxlIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRhYmxlCgogICAgQHByb3BlcnR5CiAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyB3cml0YWJsZSIiIgogICAgICAgIHJldHVybiBzZWxmLl93cml0YWJsZQoKICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgIiIiRmlsZSBkZXNjcmlwdG9yIG9yIGhhbmRsZSBvZiB0aGUgY29ubmVjdGlvbiIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgY29ubmVjdGlvbiIiIgogICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gTm9uZQoKICAgIGRlZiBzZW5kX2J5dGVzKHNlbGYsIGJ1Ziwgb2Zmc2V0PTAsIHNpemU9Tm9uZSk6CiAgICAgICAgIiIiU2VuZCB0aGUgYnl0ZXMgZGF0YSBmcm9tIGEgYnl0ZXMtbGlrZSBvYmplY3QiIiIKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIHNlbGYuX2NoZWNrX3dyaXRhYmxlKCkKICAgICAgICBtID0gbWVtb3J5dmlldyhidWYpCiAgICAgICAgaWYgbS5pdGVtc2l6ZSA+IDE6CiAgICAgICAgICAgIG0gPSBtLmNhc3QoJ0InKQogICAgICAgIG4gPSBtLm5ieXRlcwogICAgICAgIGlmIG9mZnNldCA8IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBpcyBuZWdhdGl2ZSIpCiAgICAgICAgaWYgbiA8IG9mZnNldDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCIpCiAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBzaXplID0gbiAtIG9mZnNldAogICAgICAgIGVsaWYgc2l6ZSA8IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNpemUgaXMgbmVnYXRpdmUiKQogICAgICAgIGVsaWYgb2Zmc2V0ICsgc2l6ZSA+IG46CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ1ZmZlciBsZW5ndGggPCBvZmZzZXQgKyBzaXplIikKICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKG1bb2Zmc2V0Om9mZnNldCArIHNpemVdKQoKICAgIGRlZiBzZW5kKHNlbGYsIG9iaik6CiAgICAgICAgIiIiU2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgc2VsZi5fY2hlY2tfd3JpdGFibGUoKQogICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikpCgogICAgZGVmIHJlY3ZfYnl0ZXMoc2VsZiwgbWF4bGVuZ3RoPU5vbmUpOgogICAgICAgICIiIgogICAgICAgIFJlY2VpdmUgYnl0ZXMgZGF0YSBhcyBhIGJ5dGVzIG9iamVjdC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKICAgICAgICBpZiBtYXhsZW5ndGggaXMgbm90IE5vbmUgYW5kIG1heGxlbmd0aCA8IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIG1heGxlbmd0aCIpCiAgICAgICAgYnVmID0gc2VsZi5fcmVjdl9ieXRlcyhtYXhsZW5ndGgpCiAgICAgICAgaWYgYnVmIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2JhZF9tZXNzYWdlX2xlbmd0aCgpCiAgICAgICAgcmV0dXJuIGJ1Zi5nZXR2YWx1ZSgpCgogICAgZGVmIHJlY3ZfYnl0ZXNfaW50byhzZWxmLCBidWYsIG9mZnNldD0wKToKICAgICAgICAiIiIKICAgICAgICBSZWNlaXZlIGJ5dGVzIGRhdGEgaW50byBhIHdyaXRlYWJsZSBieXRlcy1saWtlIG9iamVjdC4KICAgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWFkLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQogICAgICAgIHdpdGggbWVtb3J5dmlldyhidWYpIGFzIG06CiAgICAgICAgICAgICMgR2V0IGJ5dGVzaXplIG9mIGFyYml0cmFyeSBidWZmZXIKICAgICAgICAgICAgaXRlbXNpemUgPSBtLml0ZW1zaXplCiAgICAgICAgICAgIGJ5dGVzaXplID0gaXRlbXNpemUgKiBsZW4obSkKICAgICAgICAgICAgaWYgb2Zmc2V0IDwgMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIG9mZnNldCIpCiAgICAgICAgICAgIGVsaWYgb2Zmc2V0ID4gYnl0ZXNpemU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgdG9vIGxhcmdlIikKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcmVjdl9ieXRlcygpCiAgICAgICAgICAgIHNpemUgPSByZXN1bHQudGVsbCgpCiAgICAgICAgICAgIGlmIGJ5dGVzaXplIDwgb2Zmc2V0ICsgc2l6ZToKICAgICAgICAgICAgICAgIHJhaXNlIEJ1ZmZlclRvb1Nob3J0KHJlc3VsdC5nZXR2YWx1ZSgpKQogICAgICAgICAgICAjIE1lc3NhZ2UgY2FuIGZpdCBpbiBkZXN0CiAgICAgICAgICAgIHJlc3VsdC5zZWVrKDApCiAgICAgICAgICAgIHJlc3VsdC5yZWFkaW50byhtW29mZnNldCAvLyBpdGVtc2l6ZSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZzZXQgKyBzaXplKSAvLyBpdGVtc2l6ZV0pCiAgICAgICAgICAgIHJldHVybiBzaXplCgogICAgZGVmIHJlY3Yoc2VsZik6CiAgICAgICAgIiIiUmVjZWl2ZSBhIChwaWNrbGFibGUpIG9iamVjdCIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQogICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQogICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMoYnVmLmdldGJ1ZmZlcigpKQoKICAgIGRlZiBwb2xsKHNlbGYsIHRpbWVvdXQ9MC4wKToKICAgICAgICAiIiJXaGV0aGVyIHRoZXJlIGlzIGFueSBpbnB1dCBhdmFpbGFibGUgdG8gYmUgcmVhZCIiIgogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQogICAgICAgIHJldHVybiBzZWxmLl9wb2xsKHRpbWVvdXQpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgogICAgICAgIHNlbGYuY2xvc2UoKQoKCmlmIF93aW5hcGk6CgogICAgY2xhc3MgUGlwZUNvbm5lY3Rpb24oX0Nvbm5lY3Rpb25CYXNlKToKICAgICAgICAiIiIKICAgICAgICBDb25uZWN0aW9uIGNsYXNzIGJhc2VkIG9uIGEgV2luZG93cyBuYW1lZCBwaXBlLgogICAgICAgIE92ZXJsYXBwZWQgSS9PIGlzIHVzZWQsIHNvIHRoZSBoYW5kbGVzIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQKICAgICAgICB3aXRoIEZJTEVfRkxBR19PVkVSTEFQUEVELgogICAgICAgICIiIgogICAgICAgIF9nb3RfZW1wdHlfbWVzc2FnZSA9IEZhbHNlCgogICAgICAgIGRlZiBfY2xvc2Uoc2VsZiwgX0Nsb3NlSGFuZGxlPV93aW5hcGkuQ2xvc2VIYW5kbGUpOgogICAgICAgICAgICBfQ2xvc2VIYW5kbGUoc2VsZi5faGFuZGxlKQoKICAgICAgICBkZWYgX3NlbmRfYnl0ZXMoc2VsZiwgYnVmKToKICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuV3JpdGVGaWxlKHNlbGYuX2hhbmRsZSwgYnVmLCBvdmVybGFwcGVkPVRydWUpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX0lPX1BFTkRJTkc6CiAgICAgICAgICAgICAgICAgICAgd2FpdHJlcyA9IF93aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cygKICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQogICAgICAgICAgICAgICAgICAgIGFzc2VydCB3YWl0cmVzID09IFdBSVRfT0JKRUNUXzAKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBud3JpdHRlbiwgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQogICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKICAgICAgICAgICAgYXNzZXJ0IG53cml0dGVuID09IGxlbihidWYpCgogICAgICAgIGRlZiBfcmVjdl9ieXRlcyhzZWxmLCBtYXhzaXplPU5vbmUpOgogICAgICAgICAgICBpZiBzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZToKICAgICAgICAgICAgICAgIHNlbGYuX2dvdF9lbXB0eV9tZXNzYWdlID0gRmFsc2UKICAgICAgICAgICAgICAgIHJldHVybiBpby5CeXRlc0lPKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJzaXplID0gMTI4IGlmIG1heHNpemUgaXMgTm9uZSBlbHNlIG1pbihtYXhzaXplLCAxMjgpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoc2VsZi5faGFuZGxlLCBic2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZD1UcnVlKQogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRyZXMgPSBfd2luYXBpLldhaXRGb3JNdWx0aXBsZU9iamVjdHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHdhaXRyZXMgPT0gV0FJVF9PQkpFQ1RfMAogICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICAgICBucmVhZCwgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUob3YuZ2V0YnVmZmVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZgogICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX01PUkVfREFUQToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfbW9yZV9kYXRhKG92LCBtYXhzaXplKQogICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICBpZiBlLndpbmVycm9yID09IF93aW5hcGkuRVJST1JfQlJPS0VOX1BJUEU6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzaG91bGRuJ3QgZ2V0IGhlcmU7IGV4cGVjdGVkIEtleWJvYXJkSW50ZXJydXB0IikKCiAgICAgICAgZGVmIF9wb2xsKHNlbGYsIHRpbWVvdXQpOgogICAgICAgICAgICBpZiAoc2VsZi5fZ290X2VtcHR5X21lc3NhZ2Ugb3IKICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5QZWVrTmFtZWRQaXBlKHNlbGYuX2hhbmRsZSlbMF0gIT0gMCk6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICByZXR1cm4gYm9vbCh3YWl0KFtzZWxmXSwgdGltZW91dCkpCgogICAgICAgIGRlZiBfZ2V0X21vcmVfZGF0YShzZWxmLCBvdiwgbWF4c2l6ZSk6CiAgICAgICAgICAgIGJ1ZiA9IG92LmdldGJ1ZmZlcigpCiAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKICAgICAgICAgICAgZi53cml0ZShidWYpCiAgICAgICAgICAgIGxlZnQgPSBfd2luYXBpLlBlZWtOYW1lZFBpcGUoc2VsZi5faGFuZGxlKVsxXQogICAgICAgICAgICBhc3NlcnQgbGVmdCA+IDAKICAgICAgICAgICAgaWYgbWF4c2l6ZSBpcyBub3QgTm9uZSBhbmQgbGVuKGJ1ZikgKyBsZWZ0ID4gbWF4c2l6ZToKICAgICAgICAgICAgICAgIHNlbGYuX2JhZF9tZXNzYWdlX2xlbmd0aCgpCiAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLlJlYWRGaWxlKHNlbGYuX2hhbmRsZSwgbGVmdCwgb3ZlcmxhcHBlZD1UcnVlKQogICAgICAgICAgICByYnl0ZXMsIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKICAgICAgICAgICAgYXNzZXJ0IGVyciA9PSAwCiAgICAgICAgICAgIGFzc2VydCByYnl0ZXMgPT0gbGVmdAogICAgICAgICAgICBmLndyaXRlKG92LmdldGJ1ZmZlcigpKQogICAgICAgICAgICByZXR1cm4gZgoKCmNsYXNzIENvbm5lY3Rpb24oX0Nvbm5lY3Rpb25CYXNlKToKICAgICIiIgogICAgQ29ubmVjdGlvbiBjbGFzcyBiYXNlZCBvbiBhbiBhcmJpdHJhcnkgZmlsZSBkZXNjcmlwdG9yIChVbml4IG9ubHkpLCBvcgogICAgYSBzb2NrZXQgaGFuZGxlIChXaW5kb3dzKS4KICAgICIiIgoKICAgIGlmIF93aW5hcGk6CiAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfY2xvc2U9X211bHRpcHJvY2Vzc2luZy5jbG9zZXNvY2tldCk6CiAgICAgICAgICAgIF9jbG9zZShzZWxmLl9oYW5kbGUpCiAgICAgICAgX3dyaXRlID0gX211bHRpcHJvY2Vzc2luZy5zZW5kCiAgICAgICAgX3JlYWQgPSBfbXVsdGlwcm9jZXNzaW5nLnJlY3YKICAgIGVsc2U6CiAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfY2xvc2U9b3MuY2xvc2UpOgogICAgICAgICAgICBfY2xvc2Uoc2VsZi5faGFuZGxlKQogICAgICAgIF93cml0ZSA9IG9zLndyaXRlCiAgICAgICAgX3JlYWQgPSBvcy5yZWFkCgogICAgZGVmIF9zZW5kKHNlbGYsIGJ1Ziwgd3JpdGU9X3dyaXRlKToKICAgICAgICByZW1haW5pbmcgPSBsZW4oYnVmKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIG4gPSB3cml0ZShzZWxmLl9oYW5kbGUsIGJ1ZikKICAgICAgICAgICAgcmVtYWluaW5nIC09IG4KICAgICAgICAgICAgaWYgcmVtYWluaW5nID09IDA6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBidWYgPSBidWZbbjpdCgogICAgZGVmIF9yZWN2KHNlbGYsIHNpemUsIHJlYWQ9X3JlYWQpOgogICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQogICAgICAgIGhhbmRsZSA9IHNlbGYuX2hhbmRsZQogICAgICAgIHJlbWFpbmluZyA9IHNpemUKICAgICAgICB3aGlsZSByZW1haW5pbmcgPiAwOgogICAgICAgICAgICBjaHVuayA9IHJlYWQoaGFuZGxlLCByZW1haW5pbmcpCiAgICAgICAgICAgIG4gPSBsZW4oY2h1bmspCiAgICAgICAgICAgIGlmIG4gPT0gMDoKICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSBzaXplOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoImdvdCBlbmQgb2YgZmlsZSBkdXJpbmcgbWVzc2FnZSIpCiAgICAgICAgICAgIGJ1Zi53cml0ZShjaHVuaykKICAgICAgICAgICAgcmVtYWluaW5nIC09IG4KICAgICAgICByZXR1cm4gYnVmCgogICAgZGVmIF9zZW5kX2J5dGVzKHNlbGYsIGJ1Zik6CiAgICAgICAgbiA9IGxlbihidWYpCiAgICAgICAgaWYgbiA+IDB4N2ZmZmZmZmY6CiAgICAgICAgICAgIHByZV9oZWFkZXIgPSBzdHJ1Y3QucGFjaygiIWkiLCAtMSkKICAgICAgICAgICAgaGVhZGVyID0gc3RydWN0LnBhY2soIiFRIiwgbikKICAgICAgICAgICAgc2VsZi5fc2VuZChwcmVfaGVhZGVyKQogICAgICAgICAgICBzZWxmLl9zZW5kKGhlYWRlcikKICAgICAgICAgICAgc2VsZi5fc2VuZChidWYpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBGb3Igd2lyZSBjb21wYXRpYmlsaXR5IHdpdGggMy43IGFuZCBsb3dlcgogICAgICAgICAgICBoZWFkZXIgPSBzdHJ1Y3QucGFjaygiIWkiLCBuKQogICAgICAgICAgICBpZiBuID4gMTYzODQ6CiAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGlzIGxhcmdlIHNvIE5hZ2xlJ3MgYWxnb3JpdGhtIHdvbid0IGJlIHRyaWdnZXJlZAogICAgICAgICAgICAgICAgIyBhbmQgd2UnZCBiZXR0ZXIgYXZvaWQgdGhlIGNvc3Qgb2YgY29uY2F0ZW5hdGlvbi4KICAgICAgICAgICAgICAgIHNlbGYuX3NlbmQoaGVhZGVyKQogICAgICAgICAgICAgICAgc2VsZi5fc2VuZChidWYpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIElzc3VlICMyMDU0MDogY29uY2F0ZW5hdGUgYmVmb3JlIHNlbmRpbmcsIHRvIGF2b2lkIGRlbGF5cyBkdWUKICAgICAgICAgICAgICAgICMgdG8gTmFnbGUncyBhbGdvcml0aG0gb24gYSBUQ1Agc29ja2V0LgogICAgICAgICAgICAgICAgIyBBbHNvIG5vdGUgd2Ugd2FudCB0byBhdm9pZCBzZW5kaW5nIGEgMC1sZW5ndGggYnVmZmVyIHNlcGFyYXRlbHksCiAgICAgICAgICAgICAgICAjIHRvIGF2b2lkICJicm9rZW4gcGlwZSIgZXJyb3JzIGlmIHRoZSBvdGhlciBlbmQgY2xvc2VkIHRoZSBwaXBlLgogICAgICAgICAgICAgICAgc2VsZi5fc2VuZChoZWFkZXIgKyBidWYpCgogICAgZGVmIF9yZWN2X2J5dGVzKHNlbGYsIG1heHNpemU9Tm9uZSk6CiAgICAgICAgYnVmID0gc2VsZi5fcmVjdig0KQogICAgICAgIHNpemUsID0gc3RydWN0LnVucGFjaygiIWkiLCBidWYuZ2V0dmFsdWUoKSkKICAgICAgICBpZiBzaXplID09IC0xOgogICAgICAgICAgICBidWYgPSBzZWxmLl9yZWN2KDgpCiAgICAgICAgICAgIHNpemUsID0gc3RydWN0LnVucGFjaygiIVEiLCBidWYuZ2V0dmFsdWUoKSkKICAgICAgICBpZiBtYXhzaXplIGlzIG5vdCBOb25lIGFuZCBzaXplID4gbWF4c2l6ZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5fcmVjdihzaXplKQoKICAgIGRlZiBfcG9sbChzZWxmLCB0aW1lb3V0KToKICAgICAgICByID0gd2FpdChbc2VsZl0sIHRpbWVvdXQpCiAgICAgICAgcmV0dXJuIGJvb2wocikKCgojCiMgUHVibGljIGZ1bmN0aW9ucwojCgpjbGFzcyBMaXN0ZW5lcihvYmplY3QpOgogICAgJycnCiAgICBSZXR1cm5zIGEgbGlzdGVuZXIgb2JqZWN0LgoKICAgIFRoaXMgaXMgYSB3cmFwcGVyIGZvciBhIGJvdW5kIHNvY2tldCB3aGljaCBpcyAnbGlzdGVuaW5nJyBmb3IKICAgIGNvbm5lY3Rpb25zLCBvciBmb3IgYSBXaW5kb3dzIG5hbWVkIHBpcGUuCiAgICAnJycKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzPU5vbmUsIGZhbWlseT1Ob25lLCBiYWNrbG9nPTEsIGF1dGhrZXk9Tm9uZSk6CiAgICAgICAgZmFtaWx5ID0gZmFtaWx5IG9yIChhZGRyZXNzIGFuZCBhZGRyZXNzX3R5cGUoYWRkcmVzcykpIFwKICAgICAgICAgICAgICAgICBvciBkZWZhdWx0X2ZhbWlseQogICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzIG9yIGFyYml0cmFyeV9hZGRyZXNzKGZhbWlseSkKCiAgICAgICAgX3ZhbGlkYXRlX2ZhbWlseShmYW1pbHkpCiAgICAgICAgaWYgZmFtaWx5ID09ICdBRl9QSVBFJzoKICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBQaXBlTGlzdGVuZXIoYWRkcmVzcywgYmFja2xvZykKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IFNvY2tldExpc3RlbmVyKGFkZHJlc3MsIGZhbWlseSwgYmFja2xvZykKCiAgICAgICAgaWYgYXV0aGtleSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UoYXV0aGtleSwgYnl0ZXMpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2F1dGhrZXkgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcnKQoKICAgICAgICBzZWxmLl9hdXRoa2V5ID0gYXV0aGtleQoKICAgIGRlZiBhY2NlcHQoc2VsZik6CiAgICAgICAgJycnCiAgICAgICAgQWNjZXB0IGEgY29ubmVjdGlvbiBvbiB0aGUgYm91bmQgc29ja2V0IG9yIG5hbWVkIHBpcGUgb2YgYHNlbGZgLgoKICAgICAgICBSZXR1cm5zIGEgYENvbm5lY3Rpb25gIG9iamVjdC4KICAgICAgICAnJycKICAgICAgICBpZiBzZWxmLl9saXN0ZW5lciBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdsaXN0ZW5lciBpcyBjbG9zZWQnKQogICAgICAgIGMgPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQogICAgICAgIGlmIHNlbGYuX2F1dGhrZXk6CiAgICAgICAgICAgIGRlbGl2ZXJfY2hhbGxlbmdlKGMsIHNlbGYuX2F1dGhrZXkpCiAgICAgICAgICAgIGFuc3dlcl9jaGFsbGVuZ2UoYywgc2VsZi5fYXV0aGtleSkKICAgICAgICByZXR1cm4gYwoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAnJycKICAgICAgICBDbG9zZSB0aGUgYm91bmQgc29ja2V0IG9yIG5hbWVkIHBpcGUgb2YgYHNlbGZgLgogICAgICAgICcnJwogICAgICAgIGxpc3RlbmVyID0gc2VsZi5fbGlzdGVuZXIKICAgICAgICBpZiBsaXN0ZW5lciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBOb25lCiAgICAgICAgICAgIGxpc3RlbmVyLmNsb3NlKCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhZGRyZXNzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9saXN0ZW5lci5fYWRkcmVzcwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGxhc3RfYWNjZXB0ZWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3RlbmVyLl9sYXN0X2FjY2VwdGVkCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgogICAgICAgIHNlbGYuY2xvc2UoKQoKCmRlZiBDbGllbnQoYWRkcmVzcywgZmFtaWx5PU5vbmUsIGF1dGhrZXk9Tm9uZSk6CiAgICAnJycKICAgIFJldHVybnMgYSBjb25uZWN0aW9uIHRvIHRoZSBhZGRyZXNzIG9mIGEgYExpc3RlbmVyYAogICAgJycnCiAgICBmYW1pbHkgPSBmYW1pbHkgb3IgYWRkcmVzc190eXBlKGFkZHJlc3MpCiAgICBfdmFsaWRhdGVfZmFtaWx5KGZhbWlseSkKICAgIGlmIGZhbWlseSA9PSAnQUZfUElQRSc6CiAgICAgICAgYyA9IFBpcGVDbGllbnQoYWRkcmVzcykKICAgIGVsc2U6CiAgICAgICAgYyA9IFNvY2tldENsaWVudChhZGRyZXNzKQoKICAgIGlmIGF1dGhrZXkgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGF1dGhrZXksIGJ5dGVzKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2F1dGhrZXkgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcnKQoKICAgIGlmIGF1dGhrZXkgaXMgbm90IE5vbmU6CiAgICAgICAgYW5zd2VyX2NoYWxsZW5nZShjLCBhdXRoa2V5KQogICAgICAgIGRlbGl2ZXJfY2hhbGxlbmdlKGMsIGF1dGhrZXkpCgogICAgcmV0dXJuIGMKCgppZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKCiAgICBkZWYgUGlwZShkdXBsZXg9VHJ1ZSk6CiAgICAgICAgJycnCiAgICAgICAgUmV0dXJucyBwYWlyIG9mIGNvbm5lY3Rpb24gb2JqZWN0cyBhdCBlaXRoZXIgZW5kIG9mIGEgcGlwZQogICAgICAgICcnJwogICAgICAgIGlmIGR1cGxleDoKICAgICAgICAgICAgczEsIHMyID0gc29ja2V0LnNvY2tldHBhaXIoKQogICAgICAgICAgICBzMS5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICAgICBzMi5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICAgICBjMSA9IENvbm5lY3Rpb24oczEuZGV0YWNoKCkpCiAgICAgICAgICAgIGMyID0gQ29ubmVjdGlvbihzMi5kZXRhY2goKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBmZDEsIGZkMiA9IG9zLnBpcGUoKQogICAgICAgICAgICBjMSA9IENvbm5lY3Rpb24oZmQxLCB3cml0YWJsZT1GYWxzZSkKICAgICAgICAgICAgYzIgPSBDb25uZWN0aW9uKGZkMiwgcmVhZGFibGU9RmFsc2UpCgogICAgICAgIHJldHVybiBjMSwgYzIKCmVsc2U6CgogICAgZGVmIFBpcGUoZHVwbGV4PVRydWUpOgogICAgICAgICcnJwogICAgICAgIFJldHVybnMgcGFpciBvZiBjb25uZWN0aW9uIG9iamVjdHMgYXQgZWl0aGVyIGVuZCBvZiBhIHBpcGUKICAgICAgICAnJycKICAgICAgICBhZGRyZXNzID0gYXJiaXRyYXJ5X2FkZHJlc3MoJ0FGX1BJUEUnKQogICAgICAgIGlmIGR1cGxleDoKICAgICAgICAgICAgb3Blbm1vZGUgPSBfd2luYXBpLlBJUEVfQUNDRVNTX0RVUExFWAogICAgICAgICAgICBhY2Nlc3MgPSBfd2luYXBpLkdFTkVSSUNfUkVBRCB8IF93aW5hcGkuR0VORVJJQ19XUklURQogICAgICAgICAgICBvYnNpemUsIGlic2l6ZSA9IEJVRlNJWkUsIEJVRlNJWkUKICAgICAgICBlbHNlOgogICAgICAgICAgICBvcGVubW9kZSA9IF93aW5hcGkuUElQRV9BQ0NFU1NfSU5CT1VORAogICAgICAgICAgICBhY2Nlc3MgPSBfd2luYXBpLkdFTkVSSUNfV1JJVEUKICAgICAgICAgICAgb2JzaXplLCBpYnNpemUgPSAwLCBCVUZTSVpFCgogICAgICAgIGgxID0gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCiAgICAgICAgICAgIGFkZHJlc3MsIG9wZW5tb2RlIHwgX3dpbmFwaS5GSUxFX0ZMQUdfT1ZFUkxBUFBFRCB8CiAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0UsCiAgICAgICAgICAgIF93aW5hcGkuUElQRV9UWVBFX01FU1NBR0UgfCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8CiAgICAgICAgICAgIF93aW5hcGkuUElQRV9XQUlULAogICAgICAgICAgICAxLCBvYnNpemUsIGlic2l6ZSwgX3dpbmFwaS5OTVBXQUlUX1dBSVRfRk9SRVZFUiwKICAgICAgICAgICAgIyBkZWZhdWx0IHNlY3VyaXR5IGRlc2NyaXB0b3I6IHRoZSBoYW5kbGUgY2Fubm90IGJlIGluaGVyaXRlZAogICAgICAgICAgICBfd2luYXBpLk5VTEwKICAgICAgICAgICAgKQogICAgICAgIGgyID0gX3dpbmFwaS5DcmVhdGVGaWxlKAogICAgICAgICAgICBhZGRyZXNzLCBhY2Nlc3MsIDAsIF93aW5hcGkuTlVMTCwgX3dpbmFwaS5PUEVOX0VYSVNUSU5HLAogICAgICAgICAgICBfd2luYXBpLkZJTEVfRkxBR19PVkVSTEFQUEVELCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgKQogICAgICAgIF93aW5hcGkuU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoCiAgICAgICAgICAgIGgyLCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQogICAgICAgICAgICApCgogICAgICAgIG92ZXJsYXBwZWQgPSBfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUoaDEsIG92ZXJsYXBwZWQ9VHJ1ZSkKICAgICAgICBfLCBlcnIgPSBvdmVybGFwcGVkLkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKICAgICAgICBhc3NlcnQgZXJyID09IDAKCiAgICAgICAgYzEgPSBQaXBlQ29ubmVjdGlvbihoMSwgd3JpdGFibGU9ZHVwbGV4KQogICAgICAgIGMyID0gUGlwZUNvbm5lY3Rpb24oaDIsIHJlYWRhYmxlPWR1cGxleCkKCiAgICAgICAgcmV0dXJuIGMxLCBjMgoKIwojIERlZmluaXRpb25zIGZvciBjb25uZWN0aW9ucyBiYXNlZCBvbiBzb2NrZXRzCiMKCmNsYXNzIFNvY2tldExpc3RlbmVyKG9iamVjdCk6CiAgICAnJycKICAgIFJlcHJlc2VudGF0aW9uIG9mIGEgc29ja2V0IHdoaWNoIGlzIGJvdW5kIHRvIGFuIGFkZHJlc3MgYW5kIGxpc3RlbmluZwogICAgJycnCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgZmFtaWx5LCBiYWNrbG9nPTEpOgogICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldC5zb2NrZXQoZ2V0YXR0cihzb2NrZXQsIGZhbWlseSkpCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIFNPX1JFVVNFQUREUiBoYXMgZGlmZmVyZW50IHNlbWFudGljcyBvbiBXaW5kb3dzIChpc3N1ZSAjMjU1MCkuCiAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgICAgIHNlbGYuX3NvY2tldC5iaW5kKGFkZHJlc3MpCiAgICAgICAgICAgIHNlbGYuX3NvY2tldC5saXN0ZW4oYmFja2xvZykKICAgICAgICAgICAgc2VsZi5fYWRkcmVzcyA9IHNlbGYuX3NvY2tldC5nZXRzb2NrbmFtZSgpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgc2VsZi5fZmFtaWx5ID0gZmFtaWx5CiAgICAgICAgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IE5vbmUKCiAgICAgICAgaWYgZmFtaWx5ID09ICdBRl9VTklYJyBhbmQgbm90IHV0aWwuaXNfYWJzdHJhY3Rfc29ja2V0X25hbWVzcGFjZShhZGRyZXNzKToKICAgICAgICAgICAgIyBMaW51eCBhYnN0cmFjdCBzb2NrZXQgbmFtZXNwYWNlcyBkbyBub3QgbmVlZCB0byBiZSBleHBsaWNpdGx5IHVubGlua2VkCiAgICAgICAgICAgIHNlbGYuX3VubGluayA9IHV0aWwuRmluYWxpemUoCiAgICAgICAgICAgICAgICBzZWxmLCBvcy51bmxpbmssIGFyZ3M9KGFkZHJlc3MsKSwgZXhpdHByaW9yaXR5PTAKICAgICAgICAgICAgICAgICkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl91bmxpbmsgPSBOb25lCgogICAgZGVmIGFjY2VwdChzZWxmKToKICAgICAgICBzLCBzZWxmLl9sYXN0X2FjY2VwdGVkID0gc2VsZi5fc29ja2V0LmFjY2VwdCgpCiAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQogICAgICAgIHJldHVybiBDb25uZWN0aW9uKHMuZGV0YWNoKCkpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICB1bmxpbmsgPSBzZWxmLl91bmxpbmsKICAgICAgICAgICAgaWYgdW5saW5rIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fdW5saW5rID0gTm9uZQogICAgICAgICAgICAgICAgdW5saW5rKCkKCgpkZWYgU29ja2V0Q2xpZW50KGFkZHJlc3MpOgogICAgJycnCiAgICBSZXR1cm4gYSBjb25uZWN0aW9uIG9iamVjdCBjb25uZWN0ZWQgdG8gdGhlIHNvY2tldCBnaXZlbiBieSBgYWRkcmVzc2AKICAgICcnJwogICAgZmFtaWx5ID0gYWRkcmVzc190eXBlKGFkZHJlc3MpCiAgICB3aXRoIHNvY2tldC5zb2NrZXQoIGdldGF0dHIoc29ja2V0LCBmYW1pbHkpICkgYXMgczoKICAgICAgICBzLnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgcy5jb25uZWN0KGFkZHJlc3MpCiAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKCiMKIyBEZWZpbml0aW9ucyBmb3IgY29ubmVjdGlvbnMgYmFzZWQgb24gbmFtZWQgcGlwZXMKIwoKaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CgogICAgY2xhc3MgUGlwZUxpc3RlbmVyKG9iamVjdCk6CiAgICAgICAgJycnCiAgICAgICAgUmVwcmVzZW50YXRpb24gb2YgYSBuYW1lZCBwaXBlCiAgICAgICAgJycnCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIGJhY2tsb2c9Tm9uZSk6CiAgICAgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBhZGRyZXNzCiAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9xdWV1ZSA9IFtzZWxmLl9uZXdfaGFuZGxlKGZpcnN0PVRydWUpXQoKICAgICAgICAgICAgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IE5vbmUKICAgICAgICAgICAgdXRpbC5zdWJfZGVidWcoJ2xpc3RlbmVyIGNyZWF0ZWQgd2l0aCBhZGRyZXNzPSVyJywgc2VsZi5fYWRkcmVzcykKICAgICAgICAgICAgc2VsZi5jbG9zZSA9IHV0aWwuRmluYWxpemUoCiAgICAgICAgICAgICAgICBzZWxmLCBQaXBlTGlzdGVuZXIuX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIsCiAgICAgICAgICAgICAgICBhcmdzPShzZWxmLl9oYW5kbGVfcXVldWUsIHNlbGYuX2FkZHJlc3MpLCBleGl0cHJpb3JpdHk9MAogICAgICAgICAgICAgICAgKQoKICAgICAgICBkZWYgX25ld19oYW5kbGUoc2VsZiwgZmlyc3Q9RmFsc2UpOgogICAgICAgICAgICBmbGFncyA9IF93aW5hcGkuUElQRV9BQ0NFU1NfRFVQTEVYIHwgX3dpbmFwaS5GSUxFX0ZMQUdfT1ZFUkxBUFBFRAogICAgICAgICAgICBpZiBmaXJzdDoKICAgICAgICAgICAgICAgIGZsYWdzIHw9IF93aW5hcGkuRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0UKICAgICAgICAgICAgcmV0dXJuIF93aW5hcGkuQ3JlYXRlTmFtZWRQaXBlKAogICAgICAgICAgICAgICAgc2VsZi5fYWRkcmVzcywgZmxhZ3MsCiAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfVFlQRV9NRVNTQUdFIHwgX3dpbmFwaS5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAogICAgICAgICAgICAgICAgX3dpbmFwaS5QSVBFX1dBSVQsCiAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKICAgICAgICAgICAgICAgIF93aW5hcGkuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgICAgKQoKICAgICAgICBkZWYgYWNjZXB0KHNlbGYpOgogICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUuYXBwZW5kKHNlbGYuX25ld19oYW5kbGUoKSkKICAgICAgICAgICAgaGFuZGxlID0gc2VsZi5faGFuZGxlX3F1ZXVlLnBvcCgwKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBvdiA9IF93aW5hcGkuQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsIG92ZXJsYXBwZWQ9VHJ1ZSkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gX3dpbmFwaS5FUlJPUl9OT19EQVRBOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAjIEVSUk9SX05PX0RBVEEgY2FuIG9jY3VyIGlmIGEgY2xpZW50IGhhcyBhbHJlYWR5IGNvbm5lY3RlZCwKICAgICAgICAgICAgICAgICMgd3JpdHRlbiBkYXRhIGFuZCB0aGVuIGRpc2Nvbm5lY3RlZCAtLSBzZWUgSXNzdWUgMTQ3MjUuCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAogICAgICAgICAgICAgICAgICAgICAgICBbb3YuZXZlbnRdLCBGYWxzZSwgSU5GSU5JVEUpCiAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGhhbmRsZSkKICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBfLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGVyciA9PSAwCiAgICAgICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUpCgogICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICBkZWYgX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIocXVldWUsIGFkZHJlc3MpOgogICAgICAgICAgICB1dGlsLnN1Yl9kZWJ1ZygnY2xvc2luZyBsaXN0ZW5lciB3aXRoIGFkZHJlc3M9JXInLCBhZGRyZXNzKQogICAgICAgICAgICBmb3IgaGFuZGxlIGluIHF1ZXVlOgogICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShoYW5kbGUpCgogICAgZGVmIFBpcGVDbGllbnQoYWRkcmVzcyk6CiAgICAgICAgJycnCiAgICAgICAgUmV0dXJuIGEgY29ubmVjdGlvbiBvYmplY3QgY29ubmVjdGVkIHRvIHRoZSBwaXBlIGdpdmVuIGJ5IGBhZGRyZXNzYAogICAgICAgICcnJwogICAgICAgIHQgPSBfaW5pdF90aW1lb3V0KCkKICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBfd2luYXBpLldhaXROYW1lZFBpcGUoYWRkcmVzcywgMTAwMCkKICAgICAgICAgICAgICAgIGggPSBfd2luYXBpLkNyZWF0ZUZpbGUoCiAgICAgICAgICAgICAgICAgICAgYWRkcmVzcywgX3dpbmFwaS5HRU5FUklDX1JFQUQgfCBfd2luYXBpLkdFTkVSSUNfV1JJVEUsCiAgICAgICAgICAgICAgICAgICAgMCwgX3dpbmFwaS5OVUxMLCBfd2luYXBpLk9QRU5fRVhJU1RJTkcsCiAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgX3dpbmFwaS5OVUxMCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciBub3QgaW4gKF93aW5hcGkuRVJST1JfU0VNX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5FUlJPUl9QSVBFX0JVU1kpIG9yIF9jaGVja190aW1lb3V0KHQpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlCgogICAgICAgIF93aW5hcGkuU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoCiAgICAgICAgICAgIGgsIF93aW5hcGkuUElQRV9SRUFETU9ERV9NRVNTQUdFLCBOb25lLCBOb25lCiAgICAgICAgICAgICkKICAgICAgICByZXR1cm4gUGlwZUNvbm5lY3Rpb24oaCkKCiMKIyBBdXRoZW50aWNhdGlvbiBzdHVmZgojCgpNRVNTQUdFX0xFTkdUSCA9IDIwCgpDSEFMTEVOR0UgPSBiJyNDSEFMTEVOR0UjJwpXRUxDT01FID0gYicjV0VMQ09NRSMnCkZBSUxVUkUgPSBiJyNGQUlMVVJFIycKCmRlZiBkZWxpdmVyX2NoYWxsZW5nZShjb25uZWN0aW9uLCBhdXRoa2V5KToKICAgIGltcG9ydCBobWFjCiAgICBpZiBub3QgaXNpbnN0YW5jZShhdXRoa2V5LCBieXRlcyk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgIkF1dGhrZXkgbXVzdCBiZSBieXRlcywgbm90IHswIXN9Ii5mb3JtYXQodHlwZShhdXRoa2V5KSkpCiAgICBtZXNzYWdlID0gb3MudXJhbmRvbShNRVNTQUdFX0xFTkdUSCkKICAgIGNvbm5lY3Rpb24uc2VuZF9ieXRlcyhDSEFMTEVOR0UgKyBtZXNzYWdlKQogICAgZGlnZXN0ID0gaG1hYy5uZXcoYXV0aGtleSwgbWVzc2FnZSwgJ21kNScpLmRpZ2VzdCgpCiAgICByZXNwb25zZSA9IGNvbm5lY3Rpb24ucmVjdl9ieXRlcygyNTYpICAgICAgICAjIHJlamVjdCBsYXJnZSBtZXNzYWdlCiAgICBpZiByZXNwb25zZSA9PSBkaWdlc3Q6CiAgICAgICAgY29ubmVjdGlvbi5zZW5kX2J5dGVzKFdFTENPTUUpCiAgICBlbHNlOgogICAgICAgIGNvbm5lY3Rpb24uc2VuZF9ieXRlcyhGQUlMVVJFKQogICAgICAgIHJhaXNlIEF1dGhlbnRpY2F0aW9uRXJyb3IoJ2RpZ2VzdCByZWNlaXZlZCB3YXMgd3JvbmcnKQoKZGVmIGFuc3dlcl9jaGFsbGVuZ2UoY29ubmVjdGlvbiwgYXV0aGtleSk6CiAgICBpbXBvcnQgaG1hYwogICAgaWYgbm90IGlzaW5zdGFuY2UoYXV0aGtleSwgYnl0ZXMpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICJBdXRoa2V5IG11c3QgYmUgYnl0ZXMsIG5vdCB7MCFzfSIuZm9ybWF0KHR5cGUoYXV0aGtleSkpKQogICAgbWVzc2FnZSA9IGNvbm5lY3Rpb24ucmVjdl9ieXRlcygyNTYpICAgICAgICAgIyByZWplY3QgbGFyZ2UgbWVzc2FnZQogICAgYXNzZXJ0IG1lc3NhZ2VbOmxlbihDSEFMTEVOR0UpXSA9PSBDSEFMTEVOR0UsICdtZXNzYWdlID0gJXInICUgbWVzc2FnZQogICAgbWVzc2FnZSA9IG1lc3NhZ2VbbGVuKENIQUxMRU5HRSk6XQogICAgZGlnZXN0ID0gaG1hYy5uZXcoYXV0aGtleSwgbWVzc2FnZSwgJ21kNScpLmRpZ2VzdCgpCiAgICBjb25uZWN0aW9uLnNlbmRfYnl0ZXMoZGlnZXN0KQogICAgcmVzcG9uc2UgPSBjb25uZWN0aW9uLnJlY3ZfYnl0ZXMoMjU2KSAgICAgICAgIyByZWplY3QgbGFyZ2UgbWVzc2FnZQogICAgaWYgcmVzcG9uc2UgIT0gV0VMQ09NRToKICAgICAgICByYWlzZSBBdXRoZW50aWNhdGlvbkVycm9yKCdkaWdlc3Qgc2VudCB3YXMgcmVqZWN0ZWQnKQoKIwojIFN1cHBvcnQgZm9yIHVzaW5nIHhtbHJwY2xpYiBmb3Igc2VyaWFsaXphdGlvbgojCgpjbGFzcyBDb25uZWN0aW9uV3JhcHBlcihvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4sIGR1bXBzLCBsb2Fkcyk6CiAgICAgICAgc2VsZi5fY29ubiA9IGNvbm4KICAgICAgICBzZWxmLl9kdW1wcyA9IGR1bXBzCiAgICAgICAgc2VsZi5fbG9hZHMgPSBsb2FkcwogICAgICAgIGZvciBhdHRyIGluICgnZmlsZW5vJywgJ2Nsb3NlJywgJ3BvbGwnLCAncmVjdl9ieXRlcycsICdzZW5kX2J5dGVzJyk6CiAgICAgICAgICAgIG9iaiA9IGdldGF0dHIoY29ubiwgYXR0cikKICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyLCBvYmopCiAgICBkZWYgc2VuZChzZWxmLCBvYmopOgogICAgICAgIHMgPSBzZWxmLl9kdW1wcyhvYmopCiAgICAgICAgc2VsZi5fY29ubi5zZW5kX2J5dGVzKHMpCiAgICBkZWYgcmVjdihzZWxmKToKICAgICAgICBzID0gc2VsZi5fY29ubi5yZWN2X2J5dGVzKCkKICAgICAgICByZXR1cm4gc2VsZi5fbG9hZHMocykKCmRlZiBfeG1sX2R1bXBzKG9iaik6CiAgICByZXR1cm4geG1scnBjbGliLmR1bXBzKChvYmosKSwgTm9uZSwgTm9uZSwgTm9uZSwgMSkuZW5jb2RlKCd1dGYtOCcpCgpkZWYgX3htbF9sb2FkcyhzKToKICAgIChvYmosKSwgbWV0aG9kID0geG1scnBjbGliLmxvYWRzKHMuZGVjb2RlKCd1dGYtOCcpKQogICAgcmV0dXJuIG9iagoKY2xhc3MgWG1sTGlzdGVuZXIoTGlzdGVuZXIpOgogICAgZGVmIGFjY2VwdChzZWxmKToKICAgICAgICBnbG9iYWwgeG1scnBjbGliCiAgICAgICAgaW1wb3J0IHhtbHJwYy5jbGllbnQgYXMgeG1scnBjbGliCiAgICAgICAgb2JqID0gTGlzdGVuZXIuYWNjZXB0KHNlbGYpCiAgICAgICAgcmV0dXJuIENvbm5lY3Rpb25XcmFwcGVyKG9iaiwgX3htbF9kdW1wcywgX3htbF9sb2FkcykKCmRlZiBYbWxDbGllbnQoKmFyZ3MsICoqa3dkcyk6CiAgICBnbG9iYWwgeG1scnBjbGliCiAgICBpbXBvcnQgeG1scnBjLmNsaWVudCBhcyB4bWxycGNsaWIKICAgIHJldHVybiBDb25uZWN0aW9uV3JhcHBlcihDbGllbnQoKmFyZ3MsICoqa3dkcyksIF94bWxfZHVtcHMsIF94bWxfbG9hZHMpCgojCiMgV2FpdAojCgppZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKCiAgICBkZWYgX2V4aGF1c3RpdmVfd2FpdChoYW5kbGVzLCB0aW1lb3V0KToKICAgICAgICAjIFJldHVybiBBTEwgaGFuZGxlcyB3aGljaCBhcmUgY3VycmVudGx5IHNpZ25hbGxlZC4gIChPbmx5CiAgICAgICAgIyByZXR1cm5pbmcgdGhlIGZpcnN0IHNpZ25hbGxlZCBtaWdodCBjcmVhdGUgc3RhcnZhdGlvbiBpc3N1ZXMuKQogICAgICAgIEwgPSBsaXN0KGhhbmRsZXMpCiAgICAgICAgcmVhZHkgPSBbXQogICAgICAgIHdoaWxlIEw6CiAgICAgICAgICAgIHJlcyA9IF93aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cyhMLCBGYWxzZSwgdGltZW91dCkKICAgICAgICAgICAgaWYgcmVzID09IFdBSVRfVElNRU9VVDoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGVsaWYgV0FJVF9PQkpFQ1RfMCA8PSByZXMgPCBXQUlUX09CSkVDVF8wICsgbGVuKEwpOgogICAgICAgICAgICAgICAgcmVzIC09IFdBSVRfT0JKRUNUXzAKICAgICAgICAgICAgZWxpZiBXQUlUX0FCQU5ET05FRF8wIDw9IHJlcyA8IFdBSVRfQUJBTkRPTkVEXzAgKyBsZW4oTCk6CiAgICAgICAgICAgICAgICByZXMgLT0gV0FJVF9BQkFORE9ORURfMAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdTaG91bGQgbm90IGdldCBoZXJlJykKICAgICAgICAgICAgcmVhZHkuYXBwZW5kKExbcmVzXSkKICAgICAgICAgICAgTCA9IExbcmVzKzE6XQogICAgICAgICAgICB0aW1lb3V0ID0gMAogICAgICAgIHJldHVybiByZWFkeQoKICAgIF9yZWFkeV9lcnJvcnMgPSB7X3dpbmFwaS5FUlJPUl9CUk9LRU5fUElQRSwgX3dpbmFwaS5FUlJPUl9ORVROQU1FX0RFTEVURUR9CgogICAgZGVmIHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgJycnCiAgICAgICAgV2FpdCB0aWxsIGFuIG9iamVjdCBpbiBvYmplY3RfbGlzdCBpcyByZWFkeS9yZWFkYWJsZS4KCiAgICAgICAgUmV0dXJucyBsaXN0IG9mIHRob3NlIG9iamVjdHMgaW4gb2JqZWN0X2xpc3Qgd2hpY2ggYXJlIHJlYWR5L3JlYWRhYmxlLgogICAgICAgICcnJwogICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgdGltZW91dCA9IElORklOSVRFCiAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgdGltZW91dCA9IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICB0aW1lb3V0ID0gaW50KHRpbWVvdXQgKiAxMDAwICsgMC41KQoKICAgICAgICBvYmplY3RfbGlzdCA9IGxpc3Qob2JqZWN0X2xpc3QpCiAgICAgICAgd2FpdGhhbmRsZV90b19vYmogPSB7fQogICAgICAgIG92X2xpc3QgPSBbXQogICAgICAgIHJlYWR5X29iamVjdHMgPSBzZXQoKQogICAgICAgIHJlYWR5X2hhbmRsZXMgPSBzZXQoKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZvciBvIGluIG9iamVjdF9saXN0OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGZpbGVubyA9IGdldGF0dHIobywgJ2ZpbGVubycpCiAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbby5fX2luZGV4X18oKV0gPSBvCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICMgc3RhcnQgYW4gb3ZlcmxhcHBlZCByZWFkIG9mIGxlbmd0aCB6ZXJvCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBvdiwgZXJyID0gX3dpbmFwaS5SZWFkRmlsZShmaWxlbm8oKSwgMCwgVHJ1ZSkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICBvdiwgZXJyID0gTm9uZSwgZS53aW5lcnJvcgogICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgbm90IGluIF9yZWFkeV9lcnJvcnM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgIGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX0lPX1BFTkRJTkc6CiAgICAgICAgICAgICAgICAgICAgICAgIG92X2xpc3QuYXBwZW5kKG92KQogICAgICAgICAgICAgICAgICAgICAgICB3YWl0aGFuZGxlX3RvX29ialtvdi5ldmVudF0gPSBvCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBvLmZpbGVubygpIGlzIGFuIG92ZXJsYXBwZWQgcGlwZSBoYW5kbGUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICMgZXJyID09IDAgdGhlbiB0aGVyZSBpcyBhIHplcm8gbGVuZ3RoIG1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgcGlwZSwgYnV0IGl0IEhBUyBOT1QgYmVlbiBjb25zdW1lZC4uLgogICAgICAgICAgICAgICAgICAgICAgICBpZiBvdiBhbmQgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbOjJdID49ICg2LCAyKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLi4uIGV4Y2VwdCBvbiBXaW5kb3dzIDggYW5kIGxhdGVyLCB3aGVyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbWVzc2FnZSBIQVMgYmVlbiBjb25zdW1lZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KEZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZXJyIGFuZCBoYXNhdHRyKG8sICdfZ290X2VtcHR5X21lc3NhZ2UnKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLl9nb3RfZW1wdHlfbWVzc2FnZSA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IDAKCiAgICAgICAgICAgIHJlYWR5X2hhbmRsZXMgPSBfZXhoYXVzdGl2ZV93YWl0KHdhaXRoYW5kbGVfdG9fb2JqLmtleXMoKSwgdGltZW91dCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIHJlcXVlc3QgdGhhdCBvdmVybGFwcGVkIHJlYWRzIHN0b3AKICAgICAgICAgICAgZm9yIG92IGluIG92X2xpc3Q6CiAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQoKICAgICAgICAgICAgIyB3YWl0IGZvciBhbGwgb3ZlcmxhcHBlZCByZWFkcyB0byBzdG9wCiAgICAgICAgICAgIGZvciBvdiBpbiBvdl9saXN0OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIF8sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgZXJyID0gZS53aW5lcnJvcgogICAgICAgICAgICAgICAgICAgIGlmIGVyciBub3QgaW4gX3JlYWR5X2Vycm9yczoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgIGlmIGVyciAhPSBfd2luYXBpLkVSUk9SX09QRVJBVElPTl9BQk9SVEVEOgogICAgICAgICAgICAgICAgICAgIG8gPSB3YWl0aGFuZGxlX3RvX29ialtvdi5ldmVudF0KICAgICAgICAgICAgICAgICAgICByZWFkeV9vYmplY3RzLmFkZChvKQogICAgICAgICAgICAgICAgICAgIGlmIGVyciA9PSAwOgogICAgICAgICAgICAgICAgICAgICAgICAjIElmIG8uZmlsZW5vKCkgaXMgYW4gb3ZlcmxhcHBlZCBwaXBlIGhhbmRsZSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICMgYSB6ZXJvIGxlbmd0aCBtZXNzYWdlIEhBUyBiZWVuIGNvbnN1bWVkLgogICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG8sICdfZ290X2VtcHR5X21lc3NhZ2UnKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX2dvdF9lbXB0eV9tZXNzYWdlID0gVHJ1ZQoKICAgICAgICByZWFkeV9vYmplY3RzLnVwZGF0ZSh3YWl0aGFuZGxlX3RvX29ialtoXSBmb3IgaCBpbiByZWFkeV9oYW5kbGVzKQogICAgICAgIHJldHVybiBbbyBmb3IgbyBpbiBvYmplY3RfbGlzdCBpZiBvIGluIHJlYWR5X29iamVjdHNdCgplbHNlOgoKICAgIGltcG9ydCBzZWxlY3RvcnMKCiAgICAjIHBvbGwvc2VsZWN0IGhhdmUgdGhlIGFkdmFudGFnZSBvZiBub3QgcmVxdWlyaW5nIGFueSBleHRyYSBmaWxlCiAgICAjIGRlc2NyaXB0b3IsIGNvbnRyYXJpbHkgdG8gZXBvbGwva3F1ZXVlIChhbHNvLCB0aGV5IHJlcXVpcmUgYSBzaW5nbGUKICAgICMgc3lzY2FsbCkuCiAgICBpZiBoYXNhdHRyKHNlbGVjdG9ycywgJ1BvbGxTZWxlY3RvcicpOgogICAgICAgIF9XYWl0U2VsZWN0b3IgPSBzZWxlY3RvcnMuUG9sbFNlbGVjdG9yCiAgICBlbHNlOgogICAgICAgIF9XYWl0U2VsZWN0b3IgPSBzZWxlY3RvcnMuU2VsZWN0U2VsZWN0b3IKCiAgICBkZWYgd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKToKICAgICAgICAnJycKICAgICAgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluIG9iamVjdF9saXN0IGlzIHJlYWR5L3JlYWRhYmxlLgoKICAgICAgICBSZXR1cm5zIGxpc3Qgb2YgdGhvc2Ugb2JqZWN0cyBpbiBvYmplY3RfbGlzdCB3aGljaCBhcmUgcmVhZHkvcmVhZGFibGUuCiAgICAgICAgJycnCiAgICAgICAgd2l0aCBfV2FpdFNlbGVjdG9yKCkgYXMgc2VsZWN0b3I6CiAgICAgICAgICAgIGZvciBvYmogaW4gb2JqZWN0X2xpc3Q6CiAgICAgICAgICAgICAgICBzZWxlY3Rvci5yZWdpc3RlcihvYmosIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQoKICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIHRpbWVvdXQKCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICByZWFkeSA9IHNlbGVjdG9yLnNlbGVjdCh0aW1lb3V0KQogICAgICAgICAgICAgICAgaWYgcmVhZHk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtrZXkuZmlsZW9iaiBmb3IgKGtleSwgZXZlbnRzKSBpbiByZWFkeV0KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS5tb25vdG9uaWMoKQogICAgICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWFkeQoKIwojIE1ha2UgY29ubmVjdGlvbiBhbmQgc29ja2V0IG9iamVjdHMgc2hhcmVhYmxlIGlmIHBvc3NpYmxlCiMKCmlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgZGVmIHJlZHVjZV9jb25uZWN0aW9uKGNvbm4pOgogICAgICAgIGhhbmRsZSA9IGNvbm4uZmlsZW5vKCkKICAgICAgICB3aXRoIHNvY2tldC5mcm9tZmQoaGFuZGxlLCBzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgogICAgICAgICAgICBmcm9tIC4gaW1wb3J0IHJlc291cmNlX3NoYXJlcgogICAgICAgICAgICBkcyA9IHJlc291cmNlX3NoYXJlci5EdXBTb2NrZXQocykKICAgICAgICAgICAgcmV0dXJuIHJlYnVpbGRfY29ubmVjdGlvbiwgKGRzLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQogICAgZGVmIHJlYnVpbGRfY29ubmVjdGlvbihkcywgcmVhZGFibGUsIHdyaXRhYmxlKToKICAgICAgICBzb2NrID0gZHMuZGV0YWNoKCkKICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihzb2NrLmRldGFjaCgpLCByZWFkYWJsZSwgd3JpdGFibGUpCiAgICByZWR1Y3Rpb24ucmVnaXN0ZXIoQ29ubmVjdGlvbiwgcmVkdWNlX2Nvbm5lY3Rpb24pCgogICAgZGVmIHJlZHVjZV9waXBlX2Nvbm5lY3Rpb24oY29ubik6CiAgICAgICAgYWNjZXNzID0gKChfd2luYXBpLkZJTEVfR0VORVJJQ19SRUFEIGlmIGNvbm4ucmVhZGFibGUgZWxzZSAwKSB8CiAgICAgICAgICAgICAgICAgIChfd2luYXBpLkZJTEVfR0VORVJJQ19XUklURSBpZiBjb25uLndyaXRhYmxlIGVsc2UgMCkpCiAgICAgICAgZGggPSByZWR1Y3Rpb24uRHVwSGFuZGxlKGNvbm4uZmlsZW5vKCksIGFjY2VzcykKICAgICAgICByZXR1cm4gcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24sIChkaCwgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKICAgIGRlZiByZWJ1aWxkX3BpcGVfY29ubmVjdGlvbihkaCwgcmVhZGFibGUsIHdyaXRhYmxlKToKICAgICAgICBoYW5kbGUgPSBkaC5kZXRhY2goKQogICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUsIHJlYWRhYmxlLCB3cml0YWJsZSkKICAgIHJlZHVjdGlvbi5yZWdpc3RlcihQaXBlQ29ubmVjdGlvbiwgcmVkdWNlX3BpcGVfY29ubmVjdGlvbikKCmVsc2U6CiAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6CiAgICAgICAgZGYgPSByZWR1Y3Rpb24uRHVwRmQoY29ubi5maWxlbm8oKSkKICAgICAgICByZXR1cm4gcmVidWlsZF9jb25uZWN0aW9uLCAoZGYsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCiAgICBkZWYgcmVidWlsZF9jb25uZWN0aW9uKGRmLCByZWFkYWJsZSwgd3JpdGFibGUpOgogICAgICAgIGZkID0gZGYuZGV0YWNoKCkKICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihmZCwgcmVhZGFibGUsIHdyaXRhYmxlKQogICAgcmVkdWN0aW9uLnJlZ2lzdGVyKENvbm5lY3Rpb24sIHJlZHVjZV9jb25uZWN0aW9uKQpQSwMEFAAAAAAAAyCjVkc6ZXJNLQAATS0AABoAAABtdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weWltcG9ydCBvcwppbXBvcnQgc3lzCmltcG9ydCB0aHJlYWRpbmcKCmZyb20gLiBpbXBvcnQgcHJvY2Vzcwpmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgoKX19hbGxfXyA9ICgpCgojCiMgRXhjZXB0aW9ucwojCgpjbGFzcyBQcm9jZXNzRXJyb3IoRXhjZXB0aW9uKToKICAgIHBhc3MKCmNsYXNzIEJ1ZmZlclRvb1Nob3J0KFByb2Nlc3NFcnJvcik6CiAgICBwYXNzCgpjbGFzcyBUaW1lb3V0RXJyb3IoUHJvY2Vzc0Vycm9yKToKICAgIHBhc3MKCmNsYXNzIEF1dGhlbnRpY2F0aW9uRXJyb3IoUHJvY2Vzc0Vycm9yKToKICAgIHBhc3MKCiMKIyBCYXNlIHR5cGUgZm9yIGNvbnRleHRzLiBCb3VuZCBtZXRob2RzIG9mIGFuIGluc3RhbmNlIG9mIHRoaXMgdHlwZSBhcmUgaW5jbHVkZWQgaW4gX19hbGxfXyBvZiBfX2luaXRfXy5weQojCgpjbGFzcyBCYXNlQ29udGV4dChvYmplY3QpOgoKICAgIFByb2Nlc3NFcnJvciA9IFByb2Nlc3NFcnJvcgogICAgQnVmZmVyVG9vU2hvcnQgPSBCdWZmZXJUb29TaG9ydAogICAgVGltZW91dEVycm9yID0gVGltZW91dEVycm9yCiAgICBBdXRoZW50aWNhdGlvbkVycm9yID0gQXV0aGVudGljYXRpb25FcnJvcgoKICAgIGN1cnJlbnRfcHJvY2VzcyA9IHN0YXRpY21ldGhvZChwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcykKICAgIHBhcmVudF9wcm9jZXNzID0gc3RhdGljbWV0aG9kKHByb2Nlc3MucGFyZW50X3Byb2Nlc3MpCiAgICBhY3RpdmVfY2hpbGRyZW4gPSBzdGF0aWNtZXRob2QocHJvY2Vzcy5hY3RpdmVfY2hpbGRyZW4pCgogICAgZGVmIGNwdV9jb3VudChzZWxmKToKICAgICAgICAnJydSZXR1cm5zIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtJycnCiAgICAgICAgbnVtID0gb3MuY3B1X2NvdW50KCkKICAgICAgICBpZiBudW0gaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignY2Fubm90IGRldGVybWluZSBudW1iZXIgb2YgY3B1cycpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIG51bQoKICAgIGRlZiBNYW5hZ2VyKHNlbGYpOgogICAgICAgICcnJ1JldHVybnMgYSBtYW5hZ2VyIGFzc29jaWF0ZWQgd2l0aCBhIHJ1bm5pbmcgc2VydmVyIHByb2Nlc3MKCiAgICAgICAgVGhlIG1hbmFnZXJzIG1ldGhvZHMgc3VjaCBhcyBgTG9jaygpYCwgYENvbmRpdGlvbigpYCBhbmQgYFF1ZXVlKClgCiAgICAgICAgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIHNoYXJlZCBvYmplY3RzLgogICAgICAgICcnJwogICAgICAgIGZyb20gLm1hbmFnZXJzIGltcG9ydCBTeW5jTWFuYWdlcgogICAgICAgIG0gPSBTeW5jTWFuYWdlcihjdHg9c2VsZi5nZXRfY29udGV4dCgpKQogICAgICAgIG0uc3RhcnQoKQogICAgICAgIHJldHVybiBtCgogICAgZGVmIFBpcGUoc2VsZiwgZHVwbGV4PVRydWUpOgogICAgICAgICcnJ1JldHVybnMgdHdvIGNvbm5lY3Rpb24gb2JqZWN0IGNvbm5lY3RlZCBieSBhIHBpcGUnJycKICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBQaXBlCiAgICAgICAgcmV0dXJuIFBpcGUoZHVwbGV4KQoKICAgIGRlZiBMb2NrKHNlbGYpOgogICAgICAgICcnJ1JldHVybnMgYSBub24tcmVjdXJzaXZlIGxvY2sgb2JqZWN0JycnCiAgICAgICAgZnJvbSAuc3luY2hyb25pemUgaW1wb3J0IExvY2sKICAgICAgICByZXR1cm4gTG9jayhjdHg9c2VsZi5nZXRfY29udGV4dCgpKQoKICAgIGRlZiBSTG9jayhzZWxmKToKICAgICAgICAnJydSZXR1cm5zIGEgcmVjdXJzaXZlIGxvY2sgb2JqZWN0JycnCiAgICAgICAgZnJvbSAuc3luY2hyb25pemUgaW1wb3J0IFJMb2NrCiAgICAgICAgcmV0dXJuIFJMb2NrKGN0eD1zZWxmLmdldF9jb250ZXh0KCkpCgogICAgZGVmIENvbmRpdGlvbihzZWxmLCBsb2NrPU5vbmUpOgogICAgICAgICcnJ1JldHVybnMgYSBjb25kaXRpb24gb2JqZWN0JycnCiAgICAgICAgZnJvbSAuc3luY2hyb25pemUgaW1wb3J0IENvbmRpdGlvbgogICAgICAgIHJldHVybiBDb25kaXRpb24obG9jaywgY3R4PXNlbGYuZ2V0X2NvbnRleHQoKSkKCiAgICBkZWYgU2VtYXBob3JlKHNlbGYsIHZhbHVlPTEpOgogICAgICAgICcnJ1JldHVybnMgYSBzZW1hcGhvcmUgb2JqZWN0JycnCiAgICAgICAgZnJvbSAuc3luY2hyb25pemUgaW1wb3J0IFNlbWFwaG9yZQogICAgICAgIHJldHVybiBTZW1hcGhvcmUodmFsdWUsIGN0eD1zZWxmLmdldF9jb250ZXh0KCkpCgogICAgZGVmIEJvdW5kZWRTZW1hcGhvcmUoc2VsZiwgdmFsdWU9MSk6CiAgICAgICAgJycnUmV0dXJucyBhIGJvdW5kZWQgc2VtYXBob3JlIG9iamVjdCcnJwogICAgICAgIGZyb20gLnN5bmNocm9uaXplIGltcG9ydCBCb3VuZGVkU2VtYXBob3JlCiAgICAgICAgcmV0dXJuIEJvdW5kZWRTZW1hcGhvcmUodmFsdWUsIGN0eD1zZWxmLmdldF9jb250ZXh0KCkpCgogICAgZGVmIEV2ZW50KHNlbGYpOgogICAgICAgICcnJ1JldHVybnMgYW4gZXZlbnQgb2JqZWN0JycnCiAgICAgICAgZnJvbSAuc3luY2hyb25pemUgaW1wb3J0IEV2ZW50CiAgICAgICAgcmV0dXJuIEV2ZW50KGN0eD1zZWxmLmdldF9jb250ZXh0KCkpCgogICAgZGVmIEJhcnJpZXIoc2VsZiwgcGFydGllcywgYWN0aW9uPU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgJycnUmV0dXJucyBhIGJhcnJpZXIgb2JqZWN0JycnCiAgICAgICAgZnJvbSAuc3luY2hyb25pemUgaW1wb3J0IEJhcnJpZXIKICAgICAgICByZXR1cm4gQmFycmllcihwYXJ0aWVzLCBhY3Rpb24sIHRpbWVvdXQsIGN0eD1zZWxmLmdldF9jb250ZXh0KCkpCgogICAgZGVmIFF1ZXVlKHNlbGYsIG1heHNpemU9MCk6CiAgICAgICAgJycnUmV0dXJucyBhIHF1ZXVlIG9iamVjdCcnJwogICAgICAgIGZyb20gLnF1ZXVlcyBpbXBvcnQgUXVldWUKICAgICAgICByZXR1cm4gUXVldWUobWF4c2l6ZSwgY3R4PXNlbGYuZ2V0X2NvbnRleHQoKSkKCiAgICBkZWYgSm9pbmFibGVRdWV1ZShzZWxmLCBtYXhzaXplPTApOgogICAgICAgICcnJ1JldHVybnMgYSBxdWV1ZSBvYmplY3QnJycKICAgICAgICBmcm9tIC5xdWV1ZXMgaW1wb3J0IEpvaW5hYmxlUXVldWUKICAgICAgICByZXR1cm4gSm9pbmFibGVRdWV1ZShtYXhzaXplLCBjdHg9c2VsZi5nZXRfY29udGV4dCgpKQoKICAgIGRlZiBTaW1wbGVRdWV1ZShzZWxmKToKICAgICAgICAnJydSZXR1cm5zIGEgcXVldWUgb2JqZWN0JycnCiAgICAgICAgZnJvbSAucXVldWVzIGltcG9ydCBTaW1wbGVRdWV1ZQogICAgICAgIHJldHVybiBTaW1wbGVRdWV1ZShjdHg9c2VsZi5nZXRfY29udGV4dCgpKQoKICAgIGRlZiBQb29sKHNlbGYsIHByb2Nlc3Nlcz1Ob25lLCBpbml0aWFsaXplcj1Ob25lLCBpbml0YXJncz0oKSwKICAgICAgICAgICAgIG1heHRhc2tzcGVyY2hpbGQ9Tm9uZSk6CiAgICAgICAgJycnUmV0dXJucyBhIHByb2Nlc3MgcG9vbCBvYmplY3QnJycKICAgICAgICBmcm9tIC5wb29sIGltcG9ydCBQb29sCiAgICAgICAgcmV0dXJuIFBvb2wocHJvY2Vzc2VzLCBpbml0aWFsaXplciwgaW5pdGFyZ3MsIG1heHRhc2tzcGVyY2hpbGQsCiAgICAgICAgICAgICAgICAgICAgY29udGV4dD1zZWxmLmdldF9jb250ZXh0KCkpCgogICAgZGVmIFJhd1ZhbHVlKHNlbGYsIHR5cGVjb2RlX29yX3R5cGUsICphcmdzKToKICAgICAgICAnJydSZXR1cm5zIGEgc2hhcmVkIG9iamVjdCcnJwogICAgICAgIGZyb20gLnNoYXJlZGN0eXBlcyBpbXBvcnQgUmF3VmFsdWUKICAgICAgICByZXR1cm4gUmF3VmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MpCgogICAgZGVmIFJhd0FycmF5KHNlbGYsIHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIpOgogICAgICAgICcnJ1JldHVybnMgYSBzaGFyZWQgYXJyYXknJycKICAgICAgICBmcm9tIC5zaGFyZWRjdHlwZXMgaW1wb3J0IFJhd0FycmF5CiAgICAgICAgcmV0dXJuIFJhd0FycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIpCgogICAgZGVmIFZhbHVlKHNlbGYsIHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpOgogICAgICAgICcnJ1JldHVybnMgYSBzeW5jaHJvbml6ZWQgc2hhcmVkIG9iamVjdCcnJwogICAgICAgIGZyb20gLnNoYXJlZGN0eXBlcyBpbXBvcnQgVmFsdWUKICAgICAgICByZXR1cm4gVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9bG9jaywKICAgICAgICAgICAgICAgICAgICAgY3R4PXNlbGYuZ2V0X2NvbnRleHQoKSkKCiAgICBkZWYgQXJyYXkoc2VsZiwgdHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiwgbG9jaz1UcnVlKToKICAgICAgICAnJydSZXR1cm5zIGEgc3luY2hyb25pemVkIHNoYXJlZCBhcnJheScnJwogICAgICAgIGZyb20gLnNoYXJlZGN0eXBlcyBpbXBvcnQgQXJyYXkKICAgICAgICByZXR1cm4gQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgbG9jaz1sb2NrLAogICAgICAgICAgICAgICAgICAgICBjdHg9c2VsZi5nZXRfY29udGV4dCgpKQoKICAgIGRlZiBmcmVlemVfc3VwcG9ydChzZWxmKToKICAgICAgICAnJydDaGVjayB3aGV0aGVyIHRoaXMgaXMgYSBmYWtlIGZvcmtlZCBwcm9jZXNzIGluIGEgZnJvemVuIGV4ZWN1dGFibGUuCiAgICAgICAgSWYgc28gdGhlbiBydW4gY29kZSBzcGVjaWZpZWQgYnkgY29tbWFuZGxpbmUgYW5kIGV4aXQuCiAgICAgICAgJycnCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIGdldGF0dHIoc3lzLCAnZnJvemVuJywgRmFsc2UpOgogICAgICAgICAgICBmcm9tIC5zcGF3biBpbXBvcnQgZnJlZXplX3N1cHBvcnQKICAgICAgICAgICAgZnJlZXplX3N1cHBvcnQoKQoKICAgIGRlZiBnZXRfbG9nZ2VyKHNlbGYpOgogICAgICAgICcnJ1JldHVybiBwYWNrYWdlIGxvZ2dlciAtLSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0IHRoZW4KICAgICAgICBpdCBpcyBjcmVhdGVkLgogICAgICAgICcnJwogICAgICAgIGZyb20gLnV0aWwgaW1wb3J0IGdldF9sb2dnZXIKICAgICAgICByZXR1cm4gZ2V0X2xvZ2dlcigpCgogICAgZGVmIGxvZ190b19zdGRlcnIoc2VsZiwgbGV2ZWw9Tm9uZSk6CiAgICAgICAgJycnVHVybiBvbiBsb2dnaW5nIGFuZCBhZGQgYSBoYW5kbGVyIHdoaWNoIHByaW50cyB0byBzdGRlcnInJycKICAgICAgICBmcm9tIC51dGlsIGltcG9ydCBsb2dfdG9fc3RkZXJyCiAgICAgICAgcmV0dXJuIGxvZ190b19zdGRlcnIobGV2ZWwpCgogICAgZGVmIGFsbG93X2Nvbm5lY3Rpb25fcGlja2xpbmcoc2VsZik6CiAgICAgICAgJycnSW5zdGFsbCBzdXBwb3J0IGZvciBzZW5kaW5nIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzCiAgICAgICAgYmV0d2VlbiBwcm9jZXNzZXMKICAgICAgICAnJycKICAgICAgICAjIFRoaXMgaXMgdW5kb2N1bWVudGVkLiAgSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgbXVsdGlwcm9jZXNzaW5nCiAgICAgICAgIyBpdHMgb25seSBlZmZlY3Qgd2FzIHRvIG1ha2Ugc29ja2V0IG9iamVjdHMgaW5oZXJpdGFibGUgb24gV2luZG93cy4KICAgICAgICBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KCiAgICBkZWYgc2V0X2V4ZWN1dGFibGUoc2VsZiwgZXhlY3V0YWJsZSk6CiAgICAgICAgJycnU2V0cyB0aGUgcGF0aCB0byBhIHB5dGhvbi5leGUgb3IgcHl0aG9udy5leGUgYmluYXJ5IHVzZWQgdG8gcnVuCiAgICAgICAgY2hpbGQgcHJvY2Vzc2VzIGluc3RlYWQgb2Ygc3lzLmV4ZWN1dGFibGUgd2hlbiB1c2luZyB0aGUgJ3NwYXduJwogICAgICAgIHN0YXJ0IG1ldGhvZC4gIFVzZWZ1bCBmb3IgcGVvcGxlIGVtYmVkZGluZyBQeXRob24uCiAgICAgICAgJycnCiAgICAgICAgZnJvbSAuc3Bhd24gaW1wb3J0IHNldF9leGVjdXRhYmxlCiAgICAgICAgc2V0X2V4ZWN1dGFibGUoZXhlY3V0YWJsZSkKCiAgICBkZWYgc2V0X2ZvcmtzZXJ2ZXJfcHJlbG9hZChzZWxmLCBtb2R1bGVfbmFtZXMpOgogICAgICAgICcnJ1NldCBsaXN0IG9mIG1vZHVsZSBuYW1lcyB0byB0cnkgdG8gbG9hZCBpbiBmb3Jrc2VydmVyIHByb2Nlc3MuCiAgICAgICAgVGhpcyBpcyByZWFsbHkganVzdCBhIGhpbnQuCiAgICAgICAgJycnCiAgICAgICAgZnJvbSAuZm9ya3NlcnZlciBpbXBvcnQgc2V0X2ZvcmtzZXJ2ZXJfcHJlbG9hZAogICAgICAgIHNldF9mb3Jrc2VydmVyX3ByZWxvYWQobW9kdWxlX25hbWVzKQoKICAgIGRlZiBnZXRfY29udGV4dChzZWxmLCBtZXRob2Q9Tm9uZSk6CiAgICAgICAgaWYgbWV0aG9kIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjdHggPSBfY29uY3JldGVfY29udGV4dHNbbWV0aG9kXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IGZpbmQgY29udGV4dCBmb3IgJXInICUgbWV0aG9kKSBmcm9tIE5vbmUKICAgICAgICBjdHguX2NoZWNrX2F2YWlsYWJsZSgpCiAgICAgICAgcmV0dXJuIGN0eAoKICAgIGRlZiBnZXRfc3RhcnRfbWV0aG9kKHNlbGYsIGFsbG93X25vbmU9RmFsc2UpOgogICAgICAgIHJldHVybiBzZWxmLl9uYW1lCgogICAgZGVmIHNldF9zdGFydF9tZXRob2Qoc2VsZiwgbWV0aG9kLCBmb3JjZT1GYWxzZSk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBzdGFydCBtZXRob2Qgb2YgY29uY3JldGUgY29udGV4dCcpCgogICAgQHByb3BlcnR5CiAgICBkZWYgcmVkdWNlcihzZWxmKToKICAgICAgICAnJydDb250cm9scyBob3cgb2JqZWN0cyB3aWxsIGJlIHJlZHVjZWQgdG8gYSBmb3JtIHRoYXQgY2FuIGJlCiAgICAgICAgc2hhcmVkIHdpdGggb3RoZXIgcHJvY2Vzc2VzLicnJwogICAgICAgIHJldHVybiBnbG9iYWxzKCkuZ2V0KCdyZWR1Y3Rpb24nKQoKICAgIEByZWR1Y2VyLnNldHRlcgogICAgZGVmIHJlZHVjZXIoc2VsZiwgcmVkdWN0aW9uKToKICAgICAgICBnbG9iYWxzKClbJ3JlZHVjdGlvbiddID0gcmVkdWN0aW9uCgogICAgZGVmIF9jaGVja19hdmFpbGFibGUoc2VsZik6CiAgICAgICAgcGFzcwoKIwojIFR5cGUgb2YgZGVmYXVsdCBjb250ZXh0IC0tIHVuZGVybHlpbmcgY29udGV4dCBjYW4gYmUgc2V0IGF0IG1vc3Qgb25jZQojCgpjbGFzcyBQcm9jZXNzKHByb2Nlc3MuQmFzZVByb2Nlc3MpOgogICAgX3N0YXJ0X21ldGhvZCA9IE5vbmUKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfUG9wZW4ocHJvY2Vzc19vYmopOgogICAgICAgIHJldHVybiBfZGVmYXVsdF9jb250ZXh0LmdldF9jb250ZXh0KCkuUHJvY2Vzcy5fUG9wZW4ocHJvY2Vzc19vYmopCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9hZnRlcl9mb3JrKCk6CiAgICAgICAgcmV0dXJuIF9kZWZhdWx0X2NvbnRleHQuZ2V0X2NvbnRleHQoKS5Qcm9jZXNzLl9hZnRlcl9mb3JrKCkKCmNsYXNzIERlZmF1bHRDb250ZXh0KEJhc2VDb250ZXh0KToKICAgIFByb2Nlc3MgPSBQcm9jZXNzCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbnRleHQpOgogICAgICAgIHNlbGYuX2RlZmF1bHRfY29udGV4dCA9IGNvbnRleHQKICAgICAgICBzZWxmLl9hY3R1YWxfY29udGV4dCA9IE5vbmUKCiAgICBkZWYgZ2V0X2NvbnRleHQoc2VsZiwgbWV0aG9kPU5vbmUpOgogICAgICAgIGlmIG1ldGhvZCBpcyBOb25lOgogICAgICAgICAgICBpZiBzZWxmLl9hY3R1YWxfY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fYWN0dWFsX2NvbnRleHQgPSBzZWxmLl9kZWZhdWx0X2NvbnRleHQKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FjdHVhbF9jb250ZXh0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2NvbnRleHQobWV0aG9kKQoKICAgIGRlZiBzZXRfc3RhcnRfbWV0aG9kKHNlbGYsIG1ldGhvZCwgZm9yY2U9RmFsc2UpOgogICAgICAgIGlmIHNlbGYuX2FjdHVhbF9jb250ZXh0IGlzIG5vdCBOb25lIGFuZCBub3QgZm9yY2U6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignY29udGV4dCBoYXMgYWxyZWFkeSBiZWVuIHNldCcpCiAgICAgICAgaWYgbWV0aG9kIGlzIE5vbmUgYW5kIGZvcmNlOgogICAgICAgICAgICBzZWxmLl9hY3R1YWxfY29udGV4dCA9IE5vbmUKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fYWN0dWFsX2NvbnRleHQgPSBzZWxmLmdldF9jb250ZXh0KG1ldGhvZCkKCiAgICBkZWYgZ2V0X3N0YXJ0X21ldGhvZChzZWxmLCBhbGxvd19ub25lPUZhbHNlKToKICAgICAgICBpZiBzZWxmLl9hY3R1YWxfY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICBpZiBhbGxvd19ub25lOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgc2VsZi5fYWN0dWFsX2NvbnRleHQgPSBzZWxmLl9kZWZhdWx0X2NvbnRleHQKICAgICAgICByZXR1cm4gc2VsZi5fYWN0dWFsX2NvbnRleHQuX25hbWUKCiAgICBkZWYgZ2V0X2FsbF9zdGFydF9tZXRob2RzKHNlbGYpOgogICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICByZXR1cm4gWydzcGF3biddCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbWV0aG9kcyA9IFsnc3Bhd24nLCAnZm9yayddIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBlbHNlIFsnZm9yaycsICdzcGF3biddCiAgICAgICAgICAgIGlmIHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgICAgICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJ2ZvcmtzZXJ2ZXInKQogICAgICAgICAgICByZXR1cm4gbWV0aG9kcwoKCiMKIyBDb250ZXh0IHR5cGVzIGZvciBmaXhlZCBzdGFydCBtZXRob2QKIwoKaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CgogICAgY2xhc3MgRm9ya1Byb2Nlc3MocHJvY2Vzcy5CYXNlUHJvY2Vzcyk6CiAgICAgICAgX3N0YXJ0X21ldGhvZCA9ICdmb3JrJwogICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICBkZWYgX1BvcGVuKHByb2Nlc3Nfb2JqKToKICAgICAgICAgICAgZnJvbSAucG9wZW5fZm9yayBpbXBvcnQgUG9wZW4KICAgICAgICAgICAgcmV0dXJuIFBvcGVuKHByb2Nlc3Nfb2JqKQoKICAgIGNsYXNzIFNwYXduUHJvY2Vzcyhwcm9jZXNzLkJhc2VQcm9jZXNzKToKICAgICAgICBfc3RhcnRfbWV0aG9kID0gJ3NwYXduJwogICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICBkZWYgX1BvcGVuKHByb2Nlc3Nfb2JqKToKICAgICAgICAgICAgZnJvbSAucG9wZW5fc3Bhd25fcG9zaXggaW1wb3J0IFBvcGVuCiAgICAgICAgICAgIHJldHVybiBQb3Blbihwcm9jZXNzX29iaikKCiAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgIGRlZiBfYWZ0ZXJfZm9yaygpOgogICAgICAgICAgICAjIHByb2Nlc3MgaXMgc3Bhd25lZCwgbm90aGluZyB0byBkbwogICAgICAgICAgICBwYXNzCgogICAgY2xhc3MgRm9ya1NlcnZlclByb2Nlc3MocHJvY2Vzcy5CYXNlUHJvY2Vzcyk6CiAgICAgICAgX3N0YXJ0X21ldGhvZCA9ICdmb3Jrc2VydmVyJwogICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICBkZWYgX1BvcGVuKHByb2Nlc3Nfb2JqKToKICAgICAgICAgICAgZnJvbSAucG9wZW5fZm9ya3NlcnZlciBpbXBvcnQgUG9wZW4KICAgICAgICAgICAgcmV0dXJuIFBvcGVuKHByb2Nlc3Nfb2JqKQoKICAgIGNsYXNzIEZvcmtDb250ZXh0KEJhc2VDb250ZXh0KToKICAgICAgICBfbmFtZSA9ICdmb3JrJwogICAgICAgIFByb2Nlc3MgPSBGb3JrUHJvY2VzcwoKICAgIGNsYXNzIFNwYXduQ29udGV4dChCYXNlQ29udGV4dCk6CiAgICAgICAgX25hbWUgPSAnc3Bhd24nCiAgICAgICAgUHJvY2VzcyA9IFNwYXduUHJvY2VzcwoKICAgIGNsYXNzIEZvcmtTZXJ2ZXJDb250ZXh0KEJhc2VDb250ZXh0KToKICAgICAgICBfbmFtZSA9ICdmb3Jrc2VydmVyJwogICAgICAgIFByb2Nlc3MgPSBGb3JrU2VydmVyUHJvY2VzcwogICAgICAgIGRlZiBfY2hlY2tfYXZhaWxhYmxlKHNlbGYpOgogICAgICAgICAgICBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmb3Jrc2VydmVyIHN0YXJ0IG1ldGhvZCBub3QgYXZhaWxhYmxlJykKCiAgICBfY29uY3JldGVfY29udGV4dHMgPSB7CiAgICAgICAgJ2ZvcmsnOiBGb3JrQ29udGV4dCgpLAogICAgICAgICdzcGF3bic6IFNwYXduQ29udGV4dCgpLAogICAgICAgICdmb3Jrc2VydmVyJzogRm9ya1NlcnZlckNvbnRleHQoKSwKICAgIH0KICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAjIGJwby0zMzcyNTogcnVubmluZyBhcmJpdHJhcnkgY29kZSBhZnRlciBmb3JrKCkgaXMgbm8gbG9uZ2VyIHJlbGlhYmxlCiAgICAgICAgIyBvbiBtYWNPUyBzaW5jZSBtYWNPUyAxMC4xNCAoTW9qYXZlKS4gVXNlIHNwYXduIGJ5IGRlZmF1bHQgaW5zdGVhZC4KICAgICAgICBfZGVmYXVsdF9jb250ZXh0ID0gRGVmYXVsdENvbnRleHQoX2NvbmNyZXRlX2NvbnRleHRzWydzcGF3biddKQogICAgZWxzZToKICAgICAgICBfZGVmYXVsdF9jb250ZXh0ID0gRGVmYXVsdENvbnRleHQoX2NvbmNyZXRlX2NvbnRleHRzWydmb3JrJ10pCgplbHNlOgoKICAgIGNsYXNzIFNwYXduUHJvY2Vzcyhwcm9jZXNzLkJhc2VQcm9jZXNzKToKICAgICAgICBfc3RhcnRfbWV0aG9kID0gJ3NwYXduJwogICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICBkZWYgX1BvcGVuKHByb2Nlc3Nfb2JqKToKICAgICAgICAgICAgZnJvbSAucG9wZW5fc3Bhd25fd2luMzIgaW1wb3J0IFBvcGVuCiAgICAgICAgICAgIHJldHVybiBQb3Blbihwcm9jZXNzX29iaikKCiAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgIGRlZiBfYWZ0ZXJfZm9yaygpOgogICAgICAgICAgICAjIHByb2Nlc3MgaXMgc3Bhd25lZCwgbm90aGluZyB0byBkbwogICAgICAgICAgICBwYXNzCgogICAgY2xhc3MgU3Bhd25Db250ZXh0KEJhc2VDb250ZXh0KToKICAgICAgICBfbmFtZSA9ICdzcGF3bicKICAgICAgICBQcm9jZXNzID0gU3Bhd25Qcm9jZXNzCgogICAgX2NvbmNyZXRlX2NvbnRleHRzID0gewogICAgICAgICdzcGF3bic6IFNwYXduQ29udGV4dCgpLAogICAgfQogICAgX2RlZmF1bHRfY29udGV4dCA9IERlZmF1bHRDb250ZXh0KF9jb25jcmV0ZV9jb250ZXh0c1snc3Bhd24nXSkKCiMKIyBGb3JjZSB0aGUgc3RhcnQgbWV0aG9kCiMKCmRlZiBfZm9yY2Vfc3RhcnRfbWV0aG9kKG1ldGhvZCk6CiAgICBfZGVmYXVsdF9jb250ZXh0Ll9hY3R1YWxfY29udGV4dCA9IF9jb25jcmV0ZV9jb250ZXh0c1ttZXRob2RdCgojCiMgQ2hlY2sgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaXMgc3Bhd25pbmcgYSBjaGlsZCBwcm9jZXNzCiMKCl90bHMgPSB0aHJlYWRpbmcubG9jYWwoKQoKZGVmIGdldF9zcGF3bmluZ19wb3BlbigpOgogICAgcmV0dXJuIGdldGF0dHIoX3RscywgJ3NwYXduaW5nX3BvcGVuJywgTm9uZSkKCmRlZiBzZXRfc3Bhd25pbmdfcG9wZW4ocG9wZW4pOgogICAgX3Rscy5zcGF3bmluZ19wb3BlbiA9IHBvcGVuCgpkZWYgYXNzZXJ0X3NwYXduaW5nKG9iaik6CiAgICBpZiBnZXRfc3Bhd25pbmdfcG9wZW4oKSBpcyBOb25lOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgJyVzIG9iamVjdHMgc2hvdWxkIG9ubHkgYmUgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2VzJwogICAgICAgICAgICAnIHRocm91Z2ggaW5oZXJpdGFuY2UnICUgdHlwZShvYmopLl9fbmFtZV9fCiAgICAgICAgICAgICkKUEsDBBQAAAAAAAMgo1asnX7pbi8AAG4vAAAdAAAAbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHlpbXBvcnQgZXJybm8KaW1wb3J0IG9zCmltcG9ydCBzZWxlY3RvcnMKaW1wb3J0IHNpZ25hbAppbXBvcnQgc29ja2V0CmltcG9ydCBzdHJ1Y3QKaW1wb3J0IHN5cwppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCB3YXJuaW5ncwoKZnJvbSAuIGltcG9ydCBjb25uZWN0aW9uCmZyb20gLiBpbXBvcnQgcHJvY2Vzcwpmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KZnJvbSAuIGltcG9ydCByZXNvdXJjZV90cmFja2VyCmZyb20gLiBpbXBvcnQgc3Bhd24KZnJvbSAuIGltcG9ydCB1dGlsCgpfX2FsbF9fID0gWydlbnN1cmVfcnVubmluZycsICdnZXRfaW5oZXJpdGVkX2ZkcycsICdjb25uZWN0X3RvX25ld19wcm9jZXNzJywKICAgICAgICAgICAnc2V0X2ZvcmtzZXJ2ZXJfcHJlbG9hZCddCgojCiMKIwoKTUFYRkRTX1RPX1NFTkQgPSAyNTYKU0lHTkVEX1NUUlVDVCA9IHN0cnVjdC5TdHJ1Y3QoJ3EnKSAgICAgIyBsYXJnZSBlbm91Z2ggZm9yIHBpZF90CgojCiMgRm9ya3NlcnZlciBjbGFzcwojCgpjbGFzcyBGb3JrU2VydmVyKG9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX2ZvcmtzZXJ2ZXJfYWRkcmVzcyA9IE5vbmUKICAgICAgICBzZWxmLl9mb3Jrc2VydmVyX2FsaXZlX2ZkID0gTm9uZQogICAgICAgIHNlbGYuX2ZvcmtzZXJ2ZXJfcGlkID0gTm9uZQogICAgICAgIHNlbGYuX2luaGVyaXRlZF9mZHMgPSBOb25lCiAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKICAgICAgICBzZWxmLl9wcmVsb2FkX21vZHVsZXMgPSBbJ19fbWFpbl9fJ10KCiAgICBkZWYgX3N0b3Aoc2VsZik6CiAgICAgICAgIyBNZXRob2QgdXNlZCBieSB1bml0IHRlc3RzIHRvIHN0b3AgdGhlIHNlcnZlcgogICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgc2VsZi5fc3RvcF91bmxvY2tlZCgpCgogICAgZGVmIF9zdG9wX3VubG9ja2VkKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2ZvcmtzZXJ2ZXJfcGlkIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIGNsb3NlIHRoZSAiYWxpdmUiIGZpbGUgZGVzY3JpcHRvciBhc2tzIHRoZSBzZXJ2ZXIgdG8gc3RvcAogICAgICAgIG9zLmNsb3NlKHNlbGYuX2ZvcmtzZXJ2ZXJfYWxpdmVfZmQpCiAgICAgICAgc2VsZi5fZm9ya3NlcnZlcl9hbGl2ZV9mZCA9IE5vbmUKCiAgICAgICAgb3Mud2FpdHBpZChzZWxmLl9mb3Jrc2VydmVyX3BpZCwgMCkKICAgICAgICBzZWxmLl9mb3Jrc2VydmVyX3BpZCA9IE5vbmUKCiAgICAgICAgaWYgbm90IHV0aWwuaXNfYWJzdHJhY3Rfc29ja2V0X25hbWVzcGFjZShzZWxmLl9mb3Jrc2VydmVyX2FkZHJlc3MpOgogICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5fZm9ya3NlcnZlcl9hZGRyZXNzKQogICAgICAgIHNlbGYuX2ZvcmtzZXJ2ZXJfYWRkcmVzcyA9IE5vbmUKCiAgICBkZWYgc2V0X2ZvcmtzZXJ2ZXJfcHJlbG9hZChzZWxmLCBtb2R1bGVzX25hbWVzKToKICAgICAgICAnJydTZXQgbGlzdCBvZiBtb2R1bGUgbmFtZXMgdG8gdHJ5IHRvIGxvYWQgaW4gZm9ya3NlcnZlciBwcm9jZXNzLicnJwogICAgICAgIGlmIG5vdCBhbGwodHlwZShtb2QpIGlzIHN0ciBmb3IgbW9kIGluIHNlbGYuX3ByZWxvYWRfbW9kdWxlcyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbW9kdWxlX25hbWVzIG11c3QgYmUgYSBsaXN0IG9mIHN0cmluZ3MnKQogICAgICAgIHNlbGYuX3ByZWxvYWRfbW9kdWxlcyA9IG1vZHVsZXNfbmFtZXMKCiAgICBkZWYgZ2V0X2luaGVyaXRlZF9mZHMoc2VsZik6CiAgICAgICAgJycnUmV0dXJuIGxpc3Qgb2YgZmRzIGluaGVyaXRlZCBmcm9tIHBhcmVudCBwcm9jZXNzLgoKICAgICAgICBUaGlzIHJldHVybnMgTm9uZSBpZiB0aGUgY3VycmVudCBwcm9jZXNzIHdhcyBub3Qgc3RhcnRlZCBieSBmb3JrCiAgICAgICAgc2VydmVyLgogICAgICAgICcnJwogICAgICAgIHJldHVybiBzZWxmLl9pbmhlcml0ZWRfZmRzCgogICAgZGVmIGNvbm5lY3RfdG9fbmV3X3Byb2Nlc3Moc2VsZiwgZmRzKToKICAgICAgICAnJydSZXF1ZXN0IGZvcmtzZXJ2ZXIgdG8gY3JlYXRlIGEgY2hpbGQgcHJvY2Vzcy4KCiAgICAgICAgUmV0dXJucyBhIHBhaXIgb2YgZmRzIChzdGF0dXNfciwgZGF0YV93KS4gIFRoZSBjYWxsaW5nIHByb2Nlc3MgY2FuIHJlYWQKICAgICAgICB0aGUgY2hpbGQgcHJvY2VzcydzIHBpZCBhbmQgKGV2ZW50dWFsbHkpIGl0cyByZXR1cm5jb2RlIGZyb20gc3RhdHVzX3IuCiAgICAgICAgVGhlIGNhbGxpbmcgcHJvY2VzcyBzaG91bGQgd3JpdGUgdG8gZGF0YV93IHRoZSBwaWNrbGVkIHByZXBhcmF0aW9uIGFuZAogICAgICAgIHByb2Nlc3MgZGF0YS4KICAgICAgICAnJycKICAgICAgICBzZWxmLmVuc3VyZV9ydW5uaW5nKCkKICAgICAgICBpZiBsZW4oZmRzKSArIDQgPj0gTUFYRkRTX1RPX1NFTkQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3RvbyBtYW55IGZkcycpCiAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYKSBhcyBjbGllbnQ6CiAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KHNlbGYuX2ZvcmtzZXJ2ZXJfYWRkcmVzcykKICAgICAgICAgICAgcGFyZW50X3IsIGNoaWxkX3cgPSBvcy5waXBlKCkKICAgICAgICAgICAgY2hpbGRfciwgcGFyZW50X3cgPSBvcy5waXBlKCkKICAgICAgICAgICAgYWxsZmRzID0gW2NoaWxkX3IsIGNoaWxkX3csIHNlbGYuX2ZvcmtzZXJ2ZXJfYWxpdmVfZmQsCiAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZV90cmFja2VyLmdldGZkKCldCiAgICAgICAgICAgIGFsbGZkcyArPSBmZHMKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmVkdWN0aW9uLnNlbmRmZHMoY2xpZW50LCBhbGxmZHMpCiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50X3IsIHBhcmVudF93CiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIG9zLmNsb3NlKHBhcmVudF9yKQogICAgICAgICAgICAgICAgb3MuY2xvc2UocGFyZW50X3cpCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgb3MuY2xvc2UoY2hpbGRfcikKICAgICAgICAgICAgICAgIG9zLmNsb3NlKGNoaWxkX3cpCgogICAgZGVmIGVuc3VyZV9ydW5uaW5nKHNlbGYpOgogICAgICAgICcnJ01ha2Ugc3VyZSB0aGF0IGEgZm9yayBzZXJ2ZXIgaXMgcnVubmluZy4KCiAgICAgICAgVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHByb2Nlc3MuICBOb3RlIHRoYXQgdXN1YWxseSBhIGNoaWxkCiAgICAgICAgcHJvY2VzcyB3aWxsIGp1c3QgcmV1c2UgdGhlIGZvcmtzZXJ2ZXIgc3RhcnRlZCBieSBpdHMgcGFyZW50LCBzbwogICAgICAgIGVuc3VyZV9ydW5uaW5nKCkgd2lsbCBkbyBub3RoaW5nLgogICAgICAgICcnJwogICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgcmVzb3VyY2VfdHJhY2tlci5lbnN1cmVfcnVubmluZygpCiAgICAgICAgICAgIGlmIHNlbGYuX2ZvcmtzZXJ2ZXJfcGlkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIyBmb3Jrc2VydmVyIHdhcyBsYXVuY2hlZCBiZWZvcmUsIGlzIGl0IHN0aWxsIHJ1bm5pbmc/CiAgICAgICAgICAgICAgICBwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQoc2VsZi5fZm9ya3NlcnZlcl9waWQsIG9zLldOT0hBTkcpCiAgICAgICAgICAgICAgICBpZiBub3QgcGlkOgogICAgICAgICAgICAgICAgICAgICMgc3RpbGwgYWxpdmUKICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICMgZGVhZCwgbGF1bmNoIGl0IGFnYWluCiAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9mb3Jrc2VydmVyX2FsaXZlX2ZkKQogICAgICAgICAgICAgICAgc2VsZi5fZm9ya3NlcnZlcl9hZGRyZXNzID0gTm9uZQogICAgICAgICAgICAgICAgc2VsZi5fZm9ya3NlcnZlcl9hbGl2ZV9mZCA9IE5vbmUKICAgICAgICAgICAgICAgIHNlbGYuX2ZvcmtzZXJ2ZXJfcGlkID0gTm9uZQoKICAgICAgICAgICAgY21kID0gKCdmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3Jrc2VydmVyIGltcG9ydCBtYWluOyAnICsKICAgICAgICAgICAgICAgICAgICdtYWluKCVkLCAlZCwgJXIsICoqJXIpJykKCiAgICAgICAgICAgIGlmIHNlbGYuX3ByZWxvYWRfbW9kdWxlczoKICAgICAgICAgICAgICAgIGRlc2lyZWRfa2V5cyA9IHsnbWFpbl9wYXRoJywgJ3N5c19wYXRoJ30KICAgICAgICAgICAgICAgIGRhdGEgPSBzcGF3bi5nZXRfcHJlcGFyYXRpb25fZGF0YSgnaWdub3JlJykKICAgICAgICAgICAgICAgIGRhdGEgPSB7eDogeSBmb3IgeCwgeSBpbiBkYXRhLml0ZW1zKCkgaWYgeCBpbiBkZXNpcmVkX2tleXN9CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkYXRhID0ge30KCiAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCkgYXMgbGlzdGVuZXI6CiAgICAgICAgICAgICAgICBhZGRyZXNzID0gY29ubmVjdGlvbi5hcmJpdHJhcnlfYWRkcmVzcygnQUZfVU5JWCcpCiAgICAgICAgICAgICAgICBsaXN0ZW5lci5iaW5kKGFkZHJlc3MpCiAgICAgICAgICAgICAgICBpZiBub3QgdXRpbC5pc19hYnN0cmFjdF9zb2NrZXRfbmFtZXNwYWNlKGFkZHJlc3MpOgogICAgICAgICAgICAgICAgICAgIG9zLmNobW9kKGFkZHJlc3MsIDBvNjAwKQogICAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuKCkKCiAgICAgICAgICAgICAgICAjIGFsbCBjbGllbnQgcHJvY2Vzc2VzIG93biB0aGUgd3JpdGUgZW5kIG9mIHRoZSAiYWxpdmUiIHBpcGU7CiAgICAgICAgICAgICAgICAjIHdoZW4gdGhleSBhbGwgdGVybWluYXRlIHRoZSByZWFkIGVuZCBiZWNvbWVzIHJlYWR5LgogICAgICAgICAgICAgICAgYWxpdmVfciwgYWxpdmVfdyA9IG9zLnBpcGUoKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGZkc190b19wYXNzID0gW2xpc3RlbmVyLmZpbGVubygpLCBhbGl2ZV9yXQogICAgICAgICAgICAgICAgICAgIGNtZCAlPSAobGlzdGVuZXIuZmlsZW5vKCksIGFsaXZlX3IsIHNlbGYuX3ByZWxvYWRfbW9kdWxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpCiAgICAgICAgICAgICAgICAgICAgZXhlID0gc3Bhd24uZ2V0X2V4ZWN1dGFibGUoKQogICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbZXhlXSArIHV0aWwuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAgICAgICAgICAgICAgICAgICAgYXJncyArPSBbJy1jJywgY21kXQogICAgICAgICAgICAgICAgICAgIHBpZCA9IHV0aWwuc3Bhd252X3Bhc3NmZHMoZXhlLCBhcmdzLCBmZHNfdG9fcGFzcykKICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShhbGl2ZV93KQogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGFsaXZlX3IpCiAgICAgICAgICAgICAgICBzZWxmLl9mb3Jrc2VydmVyX2FkZHJlc3MgPSBhZGRyZXNzCiAgICAgICAgICAgICAgICBzZWxmLl9mb3Jrc2VydmVyX2FsaXZlX2ZkID0gYWxpdmVfdwogICAgICAgICAgICAgICAgc2VsZi5fZm9ya3NlcnZlcl9waWQgPSBwaWQKCiMKIwojCgpkZWYgbWFpbihsaXN0ZW5lcl9mZCwgYWxpdmVfciwgcHJlbG9hZCwgbWFpbl9wYXRoPU5vbmUsIHN5c19wYXRoPU5vbmUpOgogICAgJycnUnVuIGZvcmtzZXJ2ZXIuJycnCiAgICBpZiBwcmVsb2FkOgogICAgICAgIGlmICdfX21haW5fXycgaW4gcHJlbG9hZCBhbmQgbWFpbl9wYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLl9pbmhlcml0aW5nID0gVHJ1ZQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzcGF3bi5pbXBvcnRfbWFpbl9wYXRoKG1haW5fcGF0aCkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIGRlbCBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLl9pbmhlcml0aW5nCiAgICAgICAgZm9yIG1vZG5hbWUgaW4gcHJlbG9hZDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQogICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCgogICAgdXRpbC5fY2xvc2Vfc3RkaW4oKQoKICAgIHNpZ19yLCBzaWdfdyA9IG9zLnBpcGUoKQogICAgb3Muc2V0X2Jsb2NraW5nKHNpZ19yLCBGYWxzZSkKICAgIG9zLnNldF9ibG9ja2luZyhzaWdfdywgRmFsc2UpCgogICAgZGVmIHNpZ2NobGRfaGFuZGxlcigqX3VudXNlZCk6CiAgICAgICAgIyBEdW1teSBzaWduYWwgaGFuZGxlciwgZG9lc24ndCBkbyBhbnl0aGluZwogICAgICAgIHBhc3MKCiAgICBoYW5kbGVycyA9IHsKICAgICAgICAjIHVuYmxvY2tpbmcgU0lHQ0hMRCBhbGxvd3MgdGhlIHdha2V1cCBmZCB0byBub3RpZnkgb3VyIGV2ZW50IGxvb3AKICAgICAgICBzaWduYWwuU0lHQ0hMRDogc2lnY2hsZF9oYW5kbGVyLAogICAgICAgICMgcHJvdGVjdCB0aGUgcHJvY2VzcyBmcm9tIF5DCiAgICAgICAgc2lnbmFsLlNJR0lOVDogc2lnbmFsLlNJR19JR04sCiAgICAgICAgfQogICAgb2xkX2hhbmRsZXJzID0ge3NpZzogc2lnbmFsLnNpZ25hbChzaWcsIHZhbCkKICAgICAgICAgICAgICAgICAgICBmb3IgKHNpZywgdmFsKSBpbiBoYW5kbGVycy5pdGVtcygpfQoKICAgICMgY2FsbGluZyBvcy53cml0ZSgpIGluIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgaXMgcmFjeQogICAgc2lnbmFsLnNldF93YWtldXBfZmQoc2lnX3cpCgogICAgIyBtYXAgY2hpbGQgcGlkcyB0byBjbGllbnQgZmRzCiAgICBwaWRfdG9fZmQgPSB7fQoKICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgZmlsZW5vPWxpc3RlbmVyX2ZkKSBhcyBsaXN0ZW5lciwgXAogICAgICAgICBzZWxlY3RvcnMuRGVmYXVsdFNlbGVjdG9yKCkgYXMgc2VsZWN0b3I6CiAgICAgICAgX2ZvcmtzZXJ2ZXIuX2ZvcmtzZXJ2ZXJfYWRkcmVzcyA9IGxpc3RlbmVyLmdldHNvY2tuYW1lKCkKCiAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIobGlzdGVuZXIsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgIHNlbGVjdG9yLnJlZ2lzdGVyKGFsaXZlX3IsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgIHNlbGVjdG9yLnJlZ2lzdGVyKHNpZ19yLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICByZmRzID0gW2tleS5maWxlb2JqIGZvciAoa2V5LCBldmVudHMpIGluIHNlbGVjdG9yLnNlbGVjdCgpXQogICAgICAgICAgICAgICAgICAgIGlmIHJmZHM6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgICAgICAgICAgaWYgYWxpdmVfciBpbiByZmRzOgogICAgICAgICAgICAgICAgICAgICMgRU9GIGJlY2F1c2Ugbm8gbW9yZSBjbGllbnQgcHJvY2Vzc2VzIGxlZnQKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgb3MucmVhZChhbGl2ZV9yLCAxKSA9PSBiJycsICJOb3QgYXQgRU9GPyIKICAgICAgICAgICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0CgogICAgICAgICAgICAgICAgaWYgc2lnX3IgaW4gcmZkczoKICAgICAgICAgICAgICAgICAgICAjIEdvdCBTSUdDSExECiAgICAgICAgICAgICAgICAgICAgb3MucmVhZChzaWdfciwgNjU1MzYpICAjIGV4aGF1c3QKICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgICAgICAjIFNjYW4gZm9yIGNoaWxkIHByb2Nlc3NlcwogICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIHN0cyA9IG9zLndhaXRwaWQoLTEsIG9zLldOT0hBTkcpCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBpZCA9PSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfdyA9IHBpZF90b19mZC5wb3AocGlkLCBOb25lKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGlsZF93IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZSA9IG9zLndhaXRzdGF0dXNfdG9fZXhpdGNvZGUoc3RzKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2VuZCBleGl0IGNvZGUgdG8gY2xpZW50IHByb2Nlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9zaWduZWQoY2hpbGRfdywgcmV0dXJuY29kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjbGllbnQgdmFuaXNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShjaGlsZF93KQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gcmVhbGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdmb3Jrc2VydmVyOiB3YWl0cGlkIHJldHVybmVkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgcGlkICVkJyAlIHBpZCkKCiAgICAgICAgICAgICAgICBpZiBsaXN0ZW5lciBpbiByZmRzOgogICAgICAgICAgICAgICAgICAgICMgSW5jb21pbmcgZm9yayByZXF1ZXN0CiAgICAgICAgICAgICAgICAgICAgd2l0aCBsaXN0ZW5lci5hY2NlcHQoKVswXSBhcyBzOgogICAgICAgICAgICAgICAgICAgICAgICAjIFJlY2VpdmUgZmRzIGZyb20gY2xpZW50CiAgICAgICAgICAgICAgICAgICAgICAgIGZkcyA9IHJlZHVjdGlvbi5yZWN2ZmRzKHMsIE1BWEZEU19UT19TRU5EICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGZkcykgPiBNQVhGRFNfVE9fU0VORDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgKHswOm59KSBmZHMgdG8gc2VuZCIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZmRzKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX3IsIGNoaWxkX3csICpmZHMgPSBmZHMKICAgICAgICAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBwaWQgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hpbGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWRfZmRzID0gW2FsaXZlX3IsIGNoaWxkX3csIHNpZ19yLCBzaWdfd10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWRfZmRzLmV4dGVuZChwaWRfdG9fZmQudmFsdWVzKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IF9zZXJ2ZV9vbmUoY2hpbGRfciwgZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZF9mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2hhbmRsZXJzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhjZXB0aG9vaygqc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KGNvZGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNlbmQgcGlkIHRvIGNsaWVudCBwcm9jZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfc2lnbmVkKGNoaWxkX3csIHBpZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjbGllbnQgdmFuaXNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWRfdG9fZmRbcGlkXSA9IGNoaWxkX3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGNoaWxkX3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmQgaW4gZmRzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQoKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNPTk5BQk9SVEVEOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCgoKZGVmIF9zZXJ2ZV9vbmUoY2hpbGRfciwgZmRzLCB1bnVzZWRfZmRzLCBoYW5kbGVycyk6CiAgICAjIGNsb3NlIHVubmVjZXNzYXJ5IHN0dWZmIGFuZCByZXNldCBzaWduYWwgaGFuZGxlcnMKICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKQogICAgZm9yIHNpZywgdmFsIGluIGhhbmRsZXJzLml0ZW1zKCk6CiAgICAgICAgc2lnbmFsLnNpZ25hbChzaWcsIHZhbCkKICAgIGZvciBmZCBpbiB1bnVzZWRfZmRzOgogICAgICAgIG9zLmNsb3NlKGZkKQoKICAgIChfZm9ya3NlcnZlci5fZm9ya3NlcnZlcl9hbGl2ZV9mZCwKICAgICByZXNvdXJjZV90cmFja2VyLl9yZXNvdXJjZV90cmFja2VyLl9mZCwKICAgICAqX2ZvcmtzZXJ2ZXIuX2luaGVyaXRlZF9mZHMpID0gZmRzCgogICAgIyBSdW4gcHJvY2VzcyBvYmplY3QgcmVjZWl2ZWQgb3ZlciBwaXBlCiAgICBwYXJlbnRfc2VudGluZWwgPSBvcy5kdXAoY2hpbGRfcikKICAgIGNvZGUgPSBzcGF3bi5fbWFpbihjaGlsZF9yLCBwYXJlbnRfc2VudGluZWwpCgogICAgcmV0dXJuIGNvZGUKCgojCiMgUmVhZCBhbmQgd3JpdGUgc2lnbmVkIG51bWJlcnMKIwoKZGVmIHJlYWRfc2lnbmVkKGZkKToKICAgIGRhdGEgPSBiJycKICAgIGxlbmd0aCA9IFNJR05FRF9TVFJVQ1Quc2l6ZQogICAgd2hpbGUgbGVuKGRhdGEpIDwgbGVuZ3RoOgogICAgICAgIHMgPSBvcy5yZWFkKGZkLCBsZW5ndGggLSBsZW4oZGF0YSkpCiAgICAgICAgaWYgbm90IHM6CiAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCd1bmV4cGVjdGVkIEVPRicpCiAgICAgICAgZGF0YSArPSBzCiAgICByZXR1cm4gU0lHTkVEX1NUUlVDVC51bnBhY2soZGF0YSlbMF0KCmRlZiB3cml0ZV9zaWduZWQoZmQsIG4pOgogICAgbXNnID0gU0lHTkVEX1NUUlVDVC5wYWNrKG4pCiAgICB3aGlsZSBtc2c6CiAgICAgICAgbmJ5dGVzID0gb3Mud3JpdGUoZmQsIG1zZykKICAgICAgICBpZiBuYnl0ZXMgPT0gMDoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdzaG91bGQgbm90IGdldCBoZXJlJykKICAgICAgICBtc2cgPSBtc2dbbmJ5dGVzOl0KCiMKIwojCgpfZm9ya3NlcnZlciA9IEZvcmtTZXJ2ZXIoKQplbnN1cmVfcnVubmluZyA9IF9mb3Jrc2VydmVyLmVuc3VyZV9ydW5uaW5nCmdldF9pbmhlcml0ZWRfZmRzID0gX2ZvcmtzZXJ2ZXIuZ2V0X2luaGVyaXRlZF9mZHMKY29ubmVjdF90b19uZXdfcHJvY2VzcyA9IF9mb3Jrc2VydmVyLmNvbm5lY3RfdG9fbmV3X3Byb2Nlc3MKc2V0X2ZvcmtzZXJ2ZXJfcHJlbG9hZCA9IF9mb3Jrc2VydmVyLnNldF9mb3Jrc2VydmVyX3ByZWxvYWQKUEsDBBQAAAAAAAMgo1aS/+19ai0AAGotAAAXAAAAbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkjCiMgTW9kdWxlIHdoaWNoIHN1cHBvcnRzIGFsbG9jYXRpb24gb2YgbWVtb3J5IGZyb20gYW4gbW1hcAojCiMgbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKIwojIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiMKCmltcG9ydCBiaXNlY3QKZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKaW1wb3J0IG1tYXAKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IHRlbXBmaWxlCmltcG9ydCB0aHJlYWRpbmcKCmZyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgYXNzZXJ0X3NwYXduaW5nCmZyb20gLiBpbXBvcnQgdXRpbAoKX19hbGxfXyA9IFsnQnVmZmVyV3JhcHBlciddCgojCiMgSW5oZXJpdGFibGUgY2xhc3Mgd2hpY2ggd3JhcHMgYW4gbW1hcCwgYW5kIGZyb20gd2hpY2ggYmxvY2tzIGNhbiBiZSBhbGxvY2F0ZWQKIwoKaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CgogICAgaW1wb3J0IF93aW5hcGkKCiAgICBjbGFzcyBBcmVuYShvYmplY3QpOgogICAgICAgICIiIgogICAgICAgIEEgc2hhcmVkIG1lbW9yeSBhcmVhIGJhY2tlZCBieSBhbm9ueW1vdXMgbWVtb3J5IChXaW5kb3dzKS4KICAgICAgICAiIiIKCiAgICAgICAgX3JhbmQgPSB0ZW1wZmlsZS5fUmFuZG9tTmFtZVNlcXVlbmNlKCkKCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNpemUpOgogICAgICAgICAgICBzZWxmLnNpemUgPSBzaXplCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMCk6CiAgICAgICAgICAgICAgICBuYW1lID0gJ3B5bS0lZC0lcycgJSAob3MuZ2V0cGlkKCksIG5leHQoc2VsZi5fcmFuZCkpCiAgICAgICAgICAgICAgICBidWYgPSBtbWFwLm1tYXAoLTEsIHNpemUsIHRhZ25hbWU9bmFtZSkKICAgICAgICAgICAgICAgIGlmIF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gMDoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIyBXZSBoYXZlIHJlb3BlbmVkIGEgcHJlZXhpc3RpbmcgbW1hcC4KICAgICAgICAgICAgICAgIGJ1Zi5jbG9zZSgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoJ0Nhbm5vdCBmaW5kIG5hbWUgZm9yIG5ldyBtbWFwJykKICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IGJ1ZgogICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKCiAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgICAgYXNzZXJ0X3NwYXduaW5nKHNlbGYpCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZQoKICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICAgICAgc2VsZi5zaXplLCBzZWxmLm5hbWUgPSBzZWxmLl9zdGF0ZSA9IHN0YXRlCiAgICAgICAgICAgICMgUmVvcGVuIGV4aXN0aW5nIG1tYXAKICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoLTEsIHNlbGYuc2l6ZSwgdGFnbmFtZT1zZWxmLm5hbWUpCiAgICAgICAgICAgICMgWFhYIFRlbXBvcmFyaWx5IHByZXZlbnRpbmcgYnVpbGRib3QgZmFpbHVyZXMgd2hpbGUgZGV0ZXJtaW5pbmcKICAgICAgICAgICAgIyBYWFggdGhlIGNvcnJlY3QgbG9uZy10ZXJtIGZpeC4gU2VlIGlzc3VlIDIzMDYwCiAgICAgICAgICAgICNhc3NlcnQgX3dpbmFwaS5HZXRMYXN0RXJyb3IoKSA9PSBfd2luYXBpLkVSUk9SX0FMUkVBRFlfRVhJU1RTCgplbHNlOgoKICAgIGNsYXNzIEFyZW5hKG9iamVjdCk6CiAgICAgICAgIiIiCiAgICAgICAgQSBzaGFyZWQgbWVtb3J5IGFyZWEgYmFja2VkIGJ5IGEgdGVtcG9yYXJ5IGZpbGUgKFBPU0lYKS4KICAgICAgICAiIiIKCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eCc6CiAgICAgICAgICAgIF9kaXJfY2FuZGlkYXRlcyA9IFsnL2Rldi9zaG0nXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIF9kaXJfY2FuZGlkYXRlcyA9IFtdCgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaXplLCBmZD0tMSk6CiAgICAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgICAgc2VsZi5mZCA9IGZkCiAgICAgICAgICAgIGlmIGZkID09IC0xOgogICAgICAgICAgICAgICAgIyBBcmVuYSBpcyBjcmVhdGVkIGFuZXcgKGlmIGZkICE9IC0xLCBpdCBtZWFucyB3ZSdyZSBjb21pbmcKICAgICAgICAgICAgICAgICMgZnJvbSByZWJ1aWxkX2FyZW5hKCkgYmVsb3cpCiAgICAgICAgICAgICAgICBzZWxmLmZkLCBuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgKICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSdweW0tJWQtJyVvcy5nZXRwaWQoKSwKICAgICAgICAgICAgICAgICAgICAgZGlyPXNlbGYuX2Nob29zZV9kaXIoc2l6ZSkpCiAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSkKICAgICAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgb3MuY2xvc2UsIChzZWxmLmZkLCkpCiAgICAgICAgICAgICAgICBvcy5mdHJ1bmNhdGUoc2VsZi5mZCwgc2l6ZSkKICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoc2VsZi5mZCwgc2VsZi5zaXplKQoKICAgICAgICBkZWYgX2Nob29zZV9kaXIoc2VsZiwgc2l6ZSk6CiAgICAgICAgICAgICMgQ2hvb3NlIGEgbm9uLXN0b3JhZ2UgYmFja2VkIGRpcmVjdG9yeSBpZiBwb3NzaWJsZSwKICAgICAgICAgICAgIyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlCiAgICAgICAgICAgIGZvciBkIGluIHNlbGYuX2Rpcl9jYW5kaWRhdGVzOgogICAgICAgICAgICAgICAgc3QgPSBvcy5zdGF0dmZzKGQpCiAgICAgICAgICAgICAgICBpZiBzdC5mX2JhdmFpbCAqIHN0LmZfZnJzaXplID49IHNpemU6ICAjIGVub3VnaCBmcmVlIHNwYWNlPwogICAgICAgICAgICAgICAgICAgIHJldHVybiBkCiAgICAgICAgICAgIHJldHVybiB1dGlsLmdldF90ZW1wX2RpcigpCgogICAgZGVmIHJlZHVjZV9hcmVuYShhKToKICAgICAgICBpZiBhLmZkID09IC0xOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdBcmVuYSBpcyB1bnBpY2tsYWJsZSBiZWNhdXNlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ya2luZyB3YXMgZW5hYmxlZCB3aGVuIGl0IHdhcyBjcmVhdGVkJykKICAgICAgICByZXR1cm4gcmVidWlsZF9hcmVuYSwgKGEuc2l6ZSwgcmVkdWN0aW9uLkR1cEZkKGEuZmQpKQoKICAgIGRlZiByZWJ1aWxkX2FyZW5hKHNpemUsIGR1cGZkKToKICAgICAgICByZXR1cm4gQXJlbmEoc2l6ZSwgZHVwZmQuZGV0YWNoKCkpCgogICAgcmVkdWN0aW9uLnJlZ2lzdGVyKEFyZW5hLCByZWR1Y2VfYXJlbmEpCgojCiMgQ2xhc3MgYWxsb3dpbmcgYWxsb2NhdGlvbiBvZiBjaHVua3Mgb2YgbWVtb3J5IGZyb20gYXJlbmFzCiMKCmNsYXNzIEhlYXAob2JqZWN0KToKCiAgICAjIE1pbmltdW0gbWFsbG9jKCkgYWxpZ25tZW50CiAgICBfYWxpZ25tZW50ID0gOAoKICAgIF9ESVNDQVJEX0ZSRUVfU1BBQ0VfTEFSR0VSX1RIQU4gPSA0ICogMTAyNCAqKiAyICAjIDQgTUIKICAgIF9ET1VCTEVfQVJFTkFfU0laRV9VTlRJTCA9IDQgKiAxMDI0ICoqIDIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc2l6ZT1tbWFwLlBBR0VTSVpFKToKICAgICAgICBzZWxmLl9sYXN0cGlkID0gb3MuZ2V0cGlkKCkKICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogICAgICAgICMgQ3VycmVudCBhcmVuYSBhbGxvY2F0aW9uIHNpemUKICAgICAgICBzZWxmLl9zaXplID0gc2l6ZQogICAgICAgICMgQSBzb3J0ZWQgbGlzdCBvZiBhdmFpbGFibGUgYmxvY2sgc2l6ZXMgaW4gYXJlbmFzCiAgICAgICAgc2VsZi5fbGVuZ3RocyA9IFtdCgogICAgICAgICMgRnJlZSBibG9jayBtYW5hZ2VtZW50OgogICAgICAgICMgLSBtYXAgZWFjaCBibG9jayBzaXplIHRvIGEgbGlzdCBvZiBgKEFyZW5hLCBzdGFydCwgc3RvcClgIGJsb2NrcwogICAgICAgIHNlbGYuX2xlbl90b19zZXEgPSB7fQogICAgICAgICMgLSBtYXAgYChBcmVuYSwgc3RhcnQpYCB0dXBsZSB0byB0aGUgYChBcmVuYSwgc3RhcnQsIHN0b3ApYCBibG9jawogICAgICAgICMgICBzdGFydGluZyBhdCB0aGF0IG9mZnNldAogICAgICAgIHNlbGYuX3N0YXJ0X3RvX2Jsb2NrID0ge30KICAgICAgICAjIC0gbWFwIGAoQXJlbmEsIHN0b3ApYCB0dXBsZSB0byB0aGUgYChBcmVuYSwgc3RhcnQsIHN0b3ApYCBibG9jawogICAgICAgICMgICBlbmRpbmcgYXQgdGhhdCBvZmZzZXQKICAgICAgICBzZWxmLl9zdG9wX3RvX2Jsb2NrID0ge30KCiAgICAgICAgIyBNYXAgYXJlbmFzIHRvIHRoZWlyIGAoQXJlbmEsIHN0YXJ0LCBzdG9wKWAgYmxvY2tzIGluIHVzZQogICAgICAgIHNlbGYuX2FsbG9jYXRlZF9ibG9ja3MgPSBkZWZhdWx0ZGljdChzZXQpCiAgICAgICAgc2VsZi5fYXJlbmFzID0gW10KCiAgICAgICAgIyBMaXN0IG9mIHBlbmRpbmcgYmxvY2tzIHRvIGZyZWUgLSBzZWUgY29tbWVudCBpbiBmcmVlKCkgYmVsb3cKICAgICAgICBzZWxmLl9wZW5kaW5nX2ZyZWVfYmxvY2tzID0gW10KCiAgICAgICAgIyBTdGF0aXN0aWNzCiAgICAgICAgc2VsZi5fbl9tYWxsb2NzID0gMAogICAgICAgIHNlbGYuX25fZnJlZXMgPSAwCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9yb3VuZHVwKG4sIGFsaWdubWVudCk6CiAgICAgICAgIyBhbGlnbm1lbnQgbXVzdCBiZSBhIHBvd2VyIG9mIDIKICAgICAgICBtYXNrID0gYWxpZ25tZW50IC0gMQogICAgICAgIHJldHVybiAobiArIG1hc2spICYgfm1hc2sKCiAgICBkZWYgX25ld19hcmVuYShzZWxmLCBzaXplKToKICAgICAgICAjIENyZWF0ZSBhIG5ldyBhcmVuYSB3aXRoIGF0IGxlYXN0IHRoZSBnaXZlbiAqc2l6ZSoKICAgICAgICBsZW5ndGggPSBzZWxmLl9yb3VuZHVwKG1heChzZWxmLl9zaXplLCBzaXplKSwgbW1hcC5QQUdFU0laRSkKICAgICAgICAjIFdlIGNhcnZlIGxhcmdlciBhbmQgbGFyZ2VyIGFyZW5hcywgZm9yIGVmZmljaWVuY3ksIHVudGlsIHdlCiAgICAgICAgIyByZWFjaCBhIGxhcmdlLWlzaCBzaXplIChyb3VnaGx5IEwzIGNhY2hlLXNpemVkKQogICAgICAgIGlmIHNlbGYuX3NpemUgPCBzZWxmLl9ET1VCTEVfQVJFTkFfU0laRV9VTlRJTDoKICAgICAgICAgICAgc2VsZi5fc2l6ZSAqPSAyCiAgICAgICAgdXRpbC5pbmZvKCdhbGxvY2F0aW5nIGEgbmV3IG1tYXAgb2YgbGVuZ3RoICVkJywgbGVuZ3RoKQogICAgICAgIGFyZW5hID0gQXJlbmEobGVuZ3RoKQogICAgICAgIHNlbGYuX2FyZW5hcy5hcHBlbmQoYXJlbmEpCiAgICAgICAgcmV0dXJuIChhcmVuYSwgMCwgbGVuZ3RoKQoKICAgIGRlZiBfZGlzY2FyZF9hcmVuYShzZWxmLCBhcmVuYSk6CiAgICAgICAgIyBQb3NzaWJseSBkZWxldGUgdGhlIGdpdmVuICh1bnVzZWQpIGFyZW5hCiAgICAgICAgbGVuZ3RoID0gYXJlbmEuc2l6ZQogICAgICAgICMgUmV1c2luZyBhbiBleGlzdGluZyBhcmVuYSBpcyBmYXN0ZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvbmUsIHNvCiAgICAgICAgIyB3ZSBvbmx5IHJlY2xhaW0gc3BhY2UgaWYgaXQncyBsYXJnZSBlbm91Z2guCiAgICAgICAgaWYgbGVuZ3RoIDwgc2VsZi5fRElTQ0FSRF9GUkVFX1NQQUNFX0xBUkdFUl9USEFOOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBibG9ja3MgPSBzZWxmLl9hbGxvY2F0ZWRfYmxvY2tzLnBvcChhcmVuYSkKICAgICAgICBhc3NlcnQgbm90IGJsb2NrcwogICAgICAgIGRlbCBzZWxmLl9zdGFydF90b19ibG9ja1soYXJlbmEsIDApXQogICAgICAgIGRlbCBzZWxmLl9zdG9wX3RvX2Jsb2NrWyhhcmVuYSwgbGVuZ3RoKV0KICAgICAgICBzZWxmLl9hcmVuYXMucmVtb3ZlKGFyZW5hKQogICAgICAgIHNlcSA9IHNlbGYuX2xlbl90b19zZXFbbGVuZ3RoXQogICAgICAgIHNlcS5yZW1vdmUoKGFyZW5hLCAwLCBsZW5ndGgpKQogICAgICAgIGlmIG5vdCBzZXE6CiAgICAgICAgICAgIGRlbCBzZWxmLl9sZW5fdG9fc2VxW2xlbmd0aF0KICAgICAgICAgICAgc2VsZi5fbGVuZ3Rocy5yZW1vdmUobGVuZ3RoKQoKICAgIGRlZiBfbWFsbG9jKHNlbGYsIHNpemUpOgogICAgICAgICMgcmV0dXJucyBhIGxhcmdlIGVub3VnaCBibG9jayAtLSBpdCBtaWdodCBiZSBtdWNoIGxhcmdlcgogICAgICAgIGkgPSBiaXNlY3QuYmlzZWN0X2xlZnQoc2VsZi5fbGVuZ3Rocywgc2l6ZSkKICAgICAgICBpZiBpID09IGxlbihzZWxmLl9sZW5ndGhzKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25ld19hcmVuYShzaXplKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxlbmd0aCA9IHNlbGYuX2xlbmd0aHNbaV0KICAgICAgICAgICAgc2VxID0gc2VsZi5fbGVuX3RvX3NlcVtsZW5ndGhdCiAgICAgICAgICAgIGJsb2NrID0gc2VxLnBvcCgpCiAgICAgICAgICAgIGlmIG5vdCBzZXE6CiAgICAgICAgICAgICAgICBkZWwgc2VsZi5fbGVuX3RvX3NlcVtsZW5ndGhdLCBzZWxmLl9sZW5ndGhzW2ldCgogICAgICAgIChhcmVuYSwgc3RhcnQsIHN0b3ApID0gYmxvY2sKICAgICAgICBkZWwgc2VsZi5fc3RhcnRfdG9fYmxvY2tbKGFyZW5hLCBzdGFydCldCiAgICAgICAgZGVsIHNlbGYuX3N0b3BfdG9fYmxvY2tbKGFyZW5hLCBzdG9wKV0KICAgICAgICByZXR1cm4gYmxvY2sKCiAgICBkZWYgX2FkZF9mcmVlX2Jsb2NrKHNlbGYsIGJsb2NrKToKICAgICAgICAjIG1ha2UgYmxvY2sgYXZhaWxhYmxlIGFuZCB0cnkgdG8gbWVyZ2Ugd2l0aCBpdHMgbmVpZ2hib3VycyBpbiB0aGUgYXJlbmEKICAgICAgICAoYXJlbmEsIHN0YXJ0LCBzdG9wKSA9IGJsb2NrCgogICAgICAgIHRyeToKICAgICAgICAgICAgcHJldl9ibG9jayA9IHNlbGYuX3N0b3BfdG9fYmxvY2tbKGFyZW5hLCBzdGFydCldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3RhcnQsIF8gPSBzZWxmLl9hYnNvcmIocHJldl9ibG9jaykKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBuZXh0X2Jsb2NrID0gc2VsZi5fc3RhcnRfdG9fYmxvY2tbKGFyZW5hLCBzdG9wKV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICBfLCBzdG9wID0gc2VsZi5fYWJzb3JiKG5leHRfYmxvY2spCgogICAgICAgIGJsb2NrID0gKGFyZW5hLCBzdGFydCwgc3RvcCkKICAgICAgICBsZW5ndGggPSBzdG9wIC0gc3RhcnQKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9sZW5fdG9fc2VxW2xlbmd0aF0uYXBwZW5kKGJsb2NrKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgc2VsZi5fbGVuX3RvX3NlcVtsZW5ndGhdID0gW2Jsb2NrXQogICAgICAgICAgICBiaXNlY3QuaW5zb3J0KHNlbGYuX2xlbmd0aHMsIGxlbmd0aCkKCiAgICAgICAgc2VsZi5fc3RhcnRfdG9fYmxvY2tbKGFyZW5hLCBzdGFydCldID0gYmxvY2sKICAgICAgICBzZWxmLl9zdG9wX3RvX2Jsb2NrWyhhcmVuYSwgc3RvcCldID0gYmxvY2sKCiAgICBkZWYgX2Fic29yYihzZWxmLCBibG9jayk6CiAgICAgICAgIyBkZXJlZ2lzdGVyIHRoaXMgYmxvY2sgc28gaXQgY2FuIGJlIG1lcmdlZCB3aXRoIGEgbmVpZ2hib3VyCiAgICAgICAgKGFyZW5hLCBzdGFydCwgc3RvcCkgPSBibG9jawogICAgICAgIGRlbCBzZWxmLl9zdGFydF90b19ibG9ja1soYXJlbmEsIHN0YXJ0KV0KICAgICAgICBkZWwgc2VsZi5fc3RvcF90b19ibG9ja1soYXJlbmEsIHN0b3ApXQoKICAgICAgICBsZW5ndGggPSBzdG9wIC0gc3RhcnQKICAgICAgICBzZXEgPSBzZWxmLl9sZW5fdG9fc2VxW2xlbmd0aF0KICAgICAgICBzZXEucmVtb3ZlKGJsb2NrKQogICAgICAgIGlmIG5vdCBzZXE6CiAgICAgICAgICAgIGRlbCBzZWxmLl9sZW5fdG9fc2VxW2xlbmd0aF0KICAgICAgICAgICAgc2VsZi5fbGVuZ3Rocy5yZW1vdmUobGVuZ3RoKQoKICAgICAgICByZXR1cm4gc3RhcnQsIHN0b3AKCiAgICBkZWYgX3JlbW92ZV9hbGxvY2F0ZWRfYmxvY2soc2VsZiwgYmxvY2spOgogICAgICAgIGFyZW5hLCBzdGFydCwgc3RvcCA9IGJsb2NrCiAgICAgICAgYmxvY2tzID0gc2VsZi5fYWxsb2NhdGVkX2Jsb2Nrc1thcmVuYV0KICAgICAgICBibG9ja3MucmVtb3ZlKChzdGFydCwgc3RvcCkpCiAgICAgICAgaWYgbm90IGJsb2NrczoKICAgICAgICAgICAgIyBBcmVuYSBpcyBlbnRpcmVseSBmcmVlLCBkaXNjYXJkIGl0IGZyb20gdGhpcyBwcm9jZXNzCiAgICAgICAgICAgIHNlbGYuX2Rpc2NhcmRfYXJlbmEoYXJlbmEpCgogICAgZGVmIF9mcmVlX3BlbmRpbmdfYmxvY2tzKHNlbGYpOgogICAgICAgICMgRnJlZSBhbGwgdGhlIGJsb2NrcyBpbiB0aGUgcGVuZGluZyBsaXN0IC0gY2FsbGVkIHdpdGggdGhlIGxvY2sgaGVsZC4KICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBibG9jayA9IHNlbGYuX3BlbmRpbmdfZnJlZV9ibG9ja3MucG9wKCkKICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBzZWxmLl9hZGRfZnJlZV9ibG9jayhibG9jaykKICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2FsbG9jYXRlZF9ibG9jayhibG9jaykKCiAgICBkZWYgZnJlZShzZWxmLCBibG9jayk6CiAgICAgICAgIyBmcmVlIGEgYmxvY2sgcmV0dXJuZWQgYnkgbWFsbG9jKCkKICAgICAgICAjIFNpbmNlIGZyZWUoKSBjYW4gYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IHRoZSBHQywgaXQgY291bGQgaGFwcGVuCiAgICAgICAgIyB0aGF0IGl0J3MgY2FsbGVkIHdoaWxlIHNlbGYuX2xvY2sgaXMgaGVsZDogaW4gdGhhdCBjYXNlLAogICAgICAgICMgc2VsZi5fbG9jay5hY3F1aXJlKCkgd291bGQgZGVhZGxvY2sgKGlzc3VlICMxMjM1MikuIFRvIGF2b2lkIHRoYXQsIGEKICAgICAgICAjIHRyeWxvY2sgaXMgdXNlZCBpbnN0ZWFkLCBhbmQgaWYgdGhlIGxvY2sgY2FuJ3QgYmUgYWNxdWlyZWQKICAgICAgICAjIGltbWVkaWF0ZWx5LCB0aGUgYmxvY2sgaXMgYWRkZWQgdG8gYSBsaXN0IG9mIGJsb2NrcyB0byBiZSBmcmVlZAogICAgICAgICMgc3luY2hyb25vdXNseSBzb21ldGltZXMgbGF0ZXIgZnJvbSBtYWxsb2MoKSBvciBmcmVlKCksIGJ5IGNhbGxpbmcKICAgICAgICAjIF9mcmVlX3BlbmRpbmdfYmxvY2tzKCkgKGFwcGVuZGluZyBhbmQgcmV0cmlldmluZyBmcm9tIGEgbGlzdCBpcyBub3QKICAgICAgICAjIHN0cmljdGx5IHRocmVhZC1zYWZlIGJ1dCB1bmRlciBDUHl0aG9uIGl0J3MgYXRvbWljIHRoYW5rcyB0byB0aGUgR0lMKS4KICAgICAgICBpZiBvcy5nZXRwaWQoKSAhPSBzZWxmLl9sYXN0cGlkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgIk15IHBpZCAoezA6bn0pIGlzIG5vdCBsYXN0IHBpZCB7MTpufSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgIG9zLmdldHBpZCgpLHNlbGYuX2xhc3RwaWQpKQogICAgICAgIGlmIG5vdCBzZWxmLl9sb2NrLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAjIGNhbid0IGFjcXVpcmUgdGhlIGxvY2sgcmlnaHQgbm93LCBhZGQgdGhlIGJsb2NrIHRvIHRoZSBsaXN0IG9mCiAgICAgICAgICAgICMgcGVuZGluZyBibG9ja3MgdG8gZnJlZQogICAgICAgICAgICBzZWxmLl9wZW5kaW5nX2ZyZWVfYmxvY2tzLmFwcGVuZChibG9jaykKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIHdlIGhvbGQgdGhlIGxvY2sKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fbl9mcmVlcyArPSAxCiAgICAgICAgICAgICAgICBzZWxmLl9mcmVlX3BlbmRpbmdfYmxvY2tzKCkKICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9mcmVlX2Jsb2NrKGJsb2NrKQogICAgICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2FsbG9jYXRlZF9ibG9jayhibG9jaykKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpCgogICAgZGVmIG1hbGxvYyhzZWxmLCBzaXplKToKICAgICAgICAjIHJldHVybiBhIGJsb2NrIG9mIHJpZ2h0IHNpemUgKHBvc3NpYmx5IHJvdW5kZWQgdXApCiAgICAgICAgaWYgc2l6ZSA8IDA6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNpemUgezA6bn0gb3V0IG9mIHJhbmdlIi5mb3JtYXQoc2l6ZSkpCiAgICAgICAgaWYgc3lzLm1heHNpemUgPD0gc2l6ZToKICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiU2l6ZSB7MDpufSB0b28gbGFyZ2UiLmZvcm1hdChzaXplKSkKICAgICAgICBpZiBvcy5nZXRwaWQoKSAhPSBzZWxmLl9sYXN0cGlkOgogICAgICAgICAgICBzZWxmLl9faW5pdF9fKCkgICAgICAgICAgICAgICAgICAgICAjIHJlaW5pdGlhbGl6ZSBhZnRlciBmb3JrCiAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICBzZWxmLl9uX21hbGxvY3MgKz0gMQogICAgICAgICAgICAjIGFsbG93IHBlbmRpbmcgYmxvY2tzIHRvIGJlIG1hcmtlZCBhdmFpbGFibGUKICAgICAgICAgICAgc2VsZi5fZnJlZV9wZW5kaW5nX2Jsb2NrcygpCiAgICAgICAgICAgIHNpemUgPSBzZWxmLl9yb3VuZHVwKG1heChzaXplLCAxKSwgc2VsZi5fYWxpZ25tZW50KQogICAgICAgICAgICAoYXJlbmEsIHN0YXJ0LCBzdG9wKSA9IHNlbGYuX21hbGxvYyhzaXplKQogICAgICAgICAgICByZWFsX3N0b3AgPSBzdGFydCArIHNpemUKICAgICAgICAgICAgaWYgcmVhbF9zdG9wIDwgc3RvcDoKICAgICAgICAgICAgICAgICMgaWYgdGhlIHJldHVybmVkIGJsb2NrIGlzIGxhcmdlciB0aGFuIG5lY2Vzc2FyeSwgbWFyawogICAgICAgICAgICAgICAgIyB0aGUgcmVtYWluZGVyIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgc2VsZi5fYWRkX2ZyZWVfYmxvY2soKGFyZW5hLCByZWFsX3N0b3AsIHN0b3ApKQogICAgICAgICAgICBzZWxmLl9hbGxvY2F0ZWRfYmxvY2tzW2FyZW5hXS5hZGQoKHN0YXJ0LCByZWFsX3N0b3ApKQogICAgICAgICAgICByZXR1cm4gKGFyZW5hLCBzdGFydCwgcmVhbF9zdG9wKQoKIwojIENsYXNzIHdyYXBwaW5nIGEgYmxvY2sgYWxsb2NhdGVkIG91dCBvZiBhIEhlYXAgLS0gY2FuIGJlIGluaGVyaXRlZCBieSBjaGlsZCBwcm9jZXNzCiMKCmNsYXNzIEJ1ZmZlcldyYXBwZXIob2JqZWN0KToKCiAgICBfaGVhcCA9IEhlYXAoKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaXplKToKICAgICAgICBpZiBzaXplIDwgMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiU2l6ZSB7MDpufSBvdXQgb2YgcmFuZ2UiLmZvcm1hdChzaXplKSkKICAgICAgICBpZiBzeXMubWF4c2l6ZSA8PSBzaXplOgogICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJTaXplIHswOm59IHRvbyBsYXJnZSIuZm9ybWF0KHNpemUpKQogICAgICAgIGJsb2NrID0gQnVmZmVyV3JhcHBlci5faGVhcC5tYWxsb2Moc2l6ZSkKICAgICAgICBzZWxmLl9zdGF0ZSA9IChibG9jaywgc2l6ZSkKICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIEJ1ZmZlcldyYXBwZXIuX2hlYXAuZnJlZSwgYXJncz0oYmxvY2ssKSkKCiAgICBkZWYgY3JlYXRlX21lbW9yeXZpZXcoc2VsZik6CiAgICAgICAgKGFyZW5hLCBzdGFydCwgc3RvcCksIHNpemUgPSBzZWxmLl9zdGF0ZQogICAgICAgIHJldHVybiBtZW1vcnl2aWV3KGFyZW5hLmJ1ZmZlcilbc3RhcnQ6c3RhcnQrc2l6ZV0KUEsDBBQAAAAAAAMgo1ZtWCPrQ7oAAEO6AAAbAAAAbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5IwojIE1vZHVsZSBwcm92aWRpbmcgbWFuYWdlciBjbGFzc2VzIGZvciBkZWFsaW5nCiMgd2l0aCBzaGFyZWQgb2JqZWN0cwojCiMgbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgojCgpfX2FsbF9fID0gWyAnQmFzZU1hbmFnZXInLCAnU3luY01hbmFnZXInLCAnQmFzZVByb3h5JywgJ1Rva2VuJyBdCgojCiMgSW1wb3J0cwojCgppbXBvcnQgc3lzCmltcG9ydCB0aHJlYWRpbmcKaW1wb3J0IHNpZ25hbAppbXBvcnQgYXJyYXkKaW1wb3J0IHF1ZXVlCmltcG9ydCB0aW1lCmltcG9ydCB0eXBlcwppbXBvcnQgb3MKZnJvbSBvcyBpbXBvcnQgZ2V0cGlkCgpmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YwoKZnJvbSAuIGltcG9ydCBjb25uZWN0aW9uCmZyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgZ2V0X3NwYXduaW5nX3BvcGVuLCBQcm9jZXNzRXJyb3IKZnJvbSAuIGltcG9ydCBwb29sCmZyb20gLiBpbXBvcnQgcHJvY2Vzcwpmcm9tIC4gaW1wb3J0IHV0aWwKZnJvbSAuIGltcG9ydCBnZXRfY29udGV4dAp0cnk6CiAgICBmcm9tIC4gaW1wb3J0IHNoYXJlZF9tZW1vcnkKZXhjZXB0IEltcG9ydEVycm9yOgogICAgSEFTX1NITUVNID0gRmFsc2UKZWxzZToKICAgIEhBU19TSE1FTSA9IFRydWUKICAgIF9fYWxsX18uYXBwZW5kKCdTaGFyZWRNZW1vcnlNYW5hZ2VyJykKCiMKIyBSZWdpc3RlciBzb21lIHRoaW5ncyBmb3IgcGlja2xpbmcKIwoKZGVmIHJlZHVjZV9hcnJheShhKToKICAgIHJldHVybiBhcnJheS5hcnJheSwgKGEudHlwZWNvZGUsIGEudG9ieXRlcygpKQpyZWR1Y3Rpb24ucmVnaXN0ZXIoYXJyYXkuYXJyYXksIHJlZHVjZV9hcnJheSkKCnZpZXdfdHlwZXMgPSBbdHlwZShnZXRhdHRyKHt9LCBuYW1lKSgpKSBmb3IgbmFtZSBpbiAoJ2l0ZW1zJywna2V5cycsJ3ZhbHVlcycpXQpkZWYgcmVidWlsZF9hc19saXN0KG9iaik6CiAgICByZXR1cm4gbGlzdCwgKGxpc3Qob2JqKSwpCmZvciB2aWV3X3R5cGUgaW4gdmlld190eXBlczoKICAgIHJlZHVjdGlvbi5yZWdpc3Rlcih2aWV3X3R5cGUsIHJlYnVpbGRfYXNfbGlzdCkKZGVsIHZpZXdfdHlwZSwgdmlld190eXBlcwoKIwojIFR5cGUgZm9yIGlkZW50aWZ5aW5nIHNoYXJlZCBvYmplY3RzCiMKCmNsYXNzIFRva2VuKG9iamVjdCk6CiAgICAnJycKICAgIFR5cGUgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSBzaGFyZWQgb2JqZWN0CiAgICAnJycKICAgIF9fc2xvdHNfXyA9ICgndHlwZWlkJywgJ2FkZHJlc3MnLCAnaWQnKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlaWQsIGFkZHJlc3MsIGlkKToKICAgICAgICAoc2VsZi50eXBlaWQsIHNlbGYuYWRkcmVzcywgc2VsZi5pZCkgPSAodHlwZWlkLCBhZGRyZXNzLCBpZCkKCiAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgIHJldHVybiAoc2VsZi50eXBlaWQsIHNlbGYuYWRkcmVzcywgc2VsZi5pZCkKCiAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICAoc2VsZi50eXBlaWQsIHNlbGYuYWRkcmVzcywgc2VsZi5pZCkgPSBzdGF0ZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJyVzKHR5cGVpZD0lciwgYWRkcmVzcz0lciwgaWQ9JXIpJyAlIFwKICAgICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnR5cGVpZCwgc2VsZi5hZGRyZXNzLCBzZWxmLmlkKQoKIwojIEZ1bmN0aW9uIGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBtYW5hZ2VyJ3Mgc2VydmVyIHByb2Nlc3MKIwoKZGVmIGRpc3BhdGNoKGMsIGlkLCBtZXRob2RuYW1lLCBhcmdzPSgpLCBrd2RzPXt9KToKICAgICcnJwogICAgU2VuZCBhIG1lc3NhZ2UgdG8gbWFuYWdlciB1c2luZyBjb25uZWN0aW9uIGBjYCBhbmQgcmV0dXJuIHJlc3BvbnNlCiAgICAnJycKICAgIGMuc2VuZCgoaWQsIG1ldGhvZG5hbWUsIGFyZ3MsIGt3ZHMpKQogICAga2luZCwgcmVzdWx0ID0gYy5yZWN2KCkKICAgIGlmIGtpbmQgPT0gJyNSRVRVUk4nOgogICAgICAgIHJldHVybiByZXN1bHQKICAgIHJhaXNlIGNvbnZlcnRfdG9fZXJyb3Ioa2luZCwgcmVzdWx0KQoKZGVmIGNvbnZlcnRfdG9fZXJyb3Ioa2luZCwgcmVzdWx0KToKICAgIGlmIGtpbmQgPT0gJyNFUlJPUic6CiAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgZWxpZiBraW5kIGluICgnI1RSQUNFQkFDSycsICcjVU5TRVJJQUxJWkFCTEUnKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShyZXN1bHQsIHN0cik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICJSZXN1bHQgezAhcn0gKGtpbmQgJ3sxfScpIHR5cGUgaXMgezJ9LCBub3Qgc3RyIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBraW5kLCB0eXBlKHJlc3VsdCkpKQogICAgICAgIGlmIGtpbmQgPT0gJyNVTlNFUklBTElaQUJMRSc6CiAgICAgICAgICAgIHJldHVybiBSZW1vdGVFcnJvcignVW5zZXJpYWxpemFibGUgbWVzc2FnZTogJXNcbicgJSByZXN1bHQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUVycm9yKHJlc3VsdCkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIFZhbHVlRXJyb3IoJ1VucmVjb2duaXplZCBtZXNzYWdlIHR5cGUgeyFyfScuZm9ybWF0KGtpbmQpKQoKY2xhc3MgUmVtb3RlRXJyb3IoRXhjZXB0aW9uKToKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAoJ1xuJyArICctJyo3NSArICdcbicgKyBzdHIoc2VsZi5hcmdzWzBdKSArICctJyo3NSkKCiMKIyBGdW5jdGlvbnMgZm9yIGZpbmRpbmcgdGhlIG1ldGhvZCBuYW1lcyBvZiBhbiBvYmplY3QKIwoKZGVmIGFsbF9tZXRob2RzKG9iaik6CiAgICAnJycKICAgIFJldHVybiBhIGxpc3Qgb2YgbmFtZXMgb2YgbWV0aG9kcyBvZiBgb2JqYAogICAgJycnCiAgICB0ZW1wID0gW10KICAgIGZvciBuYW1lIGluIGRpcihvYmopOgogICAgICAgIGZ1bmMgPSBnZXRhdHRyKG9iaiwgbmFtZSkKICAgICAgICBpZiBjYWxsYWJsZShmdW5jKToKICAgICAgICAgICAgdGVtcC5hcHBlbmQobmFtZSkKICAgIHJldHVybiB0ZW1wCgpkZWYgcHVibGljX21ldGhvZHMob2JqKToKICAgICcnJwogICAgUmV0dXJuIGEgbGlzdCBvZiBuYW1lcyBvZiBtZXRob2RzIG9mIGBvYmpgIHdoaWNoIGRvIG5vdCBzdGFydCB3aXRoICdfJwogICAgJycnCiAgICByZXR1cm4gW25hbWUgZm9yIG5hbWUgaW4gYWxsX21ldGhvZHMob2JqKSBpZiBuYW1lWzBdICE9ICdfJ10KCiMKIyBTZXJ2ZXIgd2hpY2ggaXMgcnVuIGluIGEgcHJvY2VzcyBjb250cm9sbGVkIGJ5IGEgbWFuYWdlcgojCgpjbGFzcyBTZXJ2ZXIob2JqZWN0KToKICAgICcnJwogICAgU2VydmVyIGNsYXNzIHdoaWNoIHJ1bnMgaW4gYSBwcm9jZXNzIGNvbnRyb2xsZWQgYnkgYSBtYW5hZ2VyIG9iamVjdAogICAgJycnCiAgICBwdWJsaWMgPSBbJ3NodXRkb3duJywgJ2NyZWF0ZScsICdhY2NlcHRfY29ubmVjdGlvbicsICdnZXRfbWV0aG9kcycsCiAgICAgICAgICAgICAgJ2RlYnVnX2luZm8nLCAnbnVtYmVyX29mX29iamVjdHMnLCAnZHVtbXknLCAnaW5jcmVmJywgJ2RlY3JlZiddCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlZ2lzdHJ5LCBhZGRyZXNzLCBhdXRoa2V5LCBzZXJpYWxpemVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdXRoa2V5LCBieXRlcyk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICJBdXRoa2V5IHswIXJ9IGlzIHR5cGUgezEhc30sIG5vdCBieXRlcyIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgIGF1dGhrZXksIHR5cGUoYXV0aGtleSkpKQogICAgICAgIHNlbGYucmVnaXN0cnkgPSByZWdpc3RyeQogICAgICAgIHNlbGYuYXV0aGtleSA9IHByb2Nlc3MuQXV0aGVudGljYXRpb25TdHJpbmcoYXV0aGtleSkKICAgICAgICBMaXN0ZW5lciwgQ2xpZW50ID0gbGlzdGVuZXJfY2xpZW50W3NlcmlhbGl6ZXJdCgogICAgICAgICMgZG8gYXV0aGVudGljYXRpb24gbGF0ZXIKICAgICAgICBzZWxmLmxpc3RlbmVyID0gTGlzdGVuZXIoYWRkcmVzcz1hZGRyZXNzLCBiYWNrbG9nPTE2KQogICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYubGlzdGVuZXIuYWRkcmVzcwoKICAgICAgICBzZWxmLmlkX3RvX29iaiA9IHsnMCc6IChOb25lLCAoKSl9CiAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudCA9IHt9CiAgICAgICAgc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmogPSB7fQogICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuTG9jaygpCgogICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgJycnCiAgICAgICAgUnVuIHRoZSBzZXJ2ZXIgZm9yZXZlcgogICAgICAgICcnJwogICAgICAgIHNlbGYuc3RvcF9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5fbWFuYWdlcl9zZXJ2ZXIgPSBzZWxmCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhY2NlcHRlciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuYWNjZXB0ZXIpCiAgICAgICAgICAgIGFjY2VwdGVyLmRhZW1vbiA9IFRydWUKICAgICAgICAgICAgYWNjZXB0ZXIuc3RhcnQoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wX2V2ZW50LmlzX3NldCgpOgogICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC53YWl0KDEpCiAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIHN5cy5zdGRvdXQgIT0gc3lzLl9fc3Rkb3V0X186ICMgd2hhdCBhYm91dCBzdGRlcnI/CiAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdyZXNldHRpbmcgc3Rkb3V0LCBzdGRlcnInKQogICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN5cy5fX3N0ZG91dF9fCiAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KICAgICAgICAgICAgc3lzLmV4aXQoMCkKCiAgICBkZWYgYWNjZXB0ZXIoc2VsZik6CiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYyA9IHNlbGYubGlzdGVuZXIuYWNjZXB0KCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5oYW5kbGVfcmVxdWVzdCwgYXJncz0oYywpKQogICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKICAgICAgICAgICAgdC5zdGFydCgpCgogICAgZGVmIF9oYW5kbGVfcmVxdWVzdChzZWxmLCBjKToKICAgICAgICByZXF1ZXN0ID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgY29ubmVjdGlvbi5kZWxpdmVyX2NoYWxsZW5nZShjLCBzZWxmLmF1dGhrZXkpCiAgICAgICAgICAgIGNvbm5lY3Rpb24uYW5zd2VyX2NoYWxsZW5nZShjLCBzZWxmLmF1dGhrZXkpCiAgICAgICAgICAgIHJlcXVlc3QgPSBjLnJlY3YoKQogICAgICAgICAgICBpZ25vcmUsIGZ1bmNuYW1lLCBhcmdzLCBrd2RzID0gcmVxdWVzdAogICAgICAgICAgICBhc3NlcnQgZnVuY25hbWUgaW4gc2VsZi5wdWJsaWMsICclciB1bnJlY29nbml6ZWQnICUgZnVuY25hbWUKICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoc2VsZiwgZnVuY25hbWUpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgbXNnID0gKCcjVFJBQ0VCQUNLJywgZm9ybWF0X2V4YygpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMoYywgKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIG1zZyA9ICgnI1RSQUNFQkFDSycsIGZvcm1hdF9leGMoKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG1zZyA9ICgnI1JFVFVSTicsIHJlc3VsdCkKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjLnNlbmQobXNnKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYy5zZW5kKCgnI1RSQUNFQkFDSycsIGZvcm1hdF9leGMoKSkpCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHV0aWwuaW5mbygnRmFpbHVyZSB0byBzZW5kIG1lc3NhZ2U6ICVyJywgbXNnKQogICAgICAgICAgICB1dGlsLmluZm8oJyAuLi4gcmVxdWVzdCB3YXMgJXInLCByZXF1ZXN0KQogICAgICAgICAgICB1dGlsLmluZm8oJyAuLi4gZXhjZXB0aW9uIHdhcyAlcicsIGUpCgogICAgZGVmIGhhbmRsZV9yZXF1ZXN0KHNlbGYsIGNvbm4pOgogICAgICAgICcnJwogICAgICAgIEhhbmRsZSBhIG5ldyBjb25uZWN0aW9uCiAgICAgICAgJycnCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdChjb25uKQogICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgogICAgICAgICAgICAjIFNlcnZlci5zZXJ2ZV9jbGllbnQoKSBjYWxscyBzeXMuZXhpdCgwKSBvbiBFT0YKICAgICAgICAgICAgcGFzcwogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGNvbm4uY2xvc2UoKQoKICAgIGRlZiBzZXJ2ZV9jbGllbnQoc2VsZiwgY29ubik6CiAgICAgICAgJycnCiAgICAgICAgSGFuZGxlIHJlcXVlc3RzIGZyb20gdGhlIHByb3hpZXMgaW4gYSBwYXJ0aWN1bGFyIHByb2Nlc3MvdGhyZWFkCiAgICAgICAgJycnCiAgICAgICAgdXRpbC5kZWJ1Zygnc3RhcnRpbmcgc2VydmVyIHRocmVhZCB0byBzZXJ2aWNlICVyJywKICAgICAgICAgICAgICAgICAgIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUpCgogICAgICAgIHJlY3YgPSBjb25uLnJlY3YKICAgICAgICBzZW5kID0gY29ubi5zZW5kCiAgICAgICAgaWRfdG9fb2JqID0gc2VsZi5pZF90b19vYmoKCiAgICAgICAgd2hpbGUgbm90IHNlbGYuc3RvcF9ldmVudC5pc19zZXQoKToKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIG1ldGhvZG5hbWUgPSBvYmogPSBOb25lCiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gcmVjdigpCiAgICAgICAgICAgICAgICBpZGVudCwgbWV0aG9kbmFtZSwgYXJncywga3dkcyA9IHJlcXVlc3QKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IGlkX3RvX29ialtpZGVudF0KICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBrZToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmpbaWRlbnRdCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBrZQoKICAgICAgICAgICAgICAgIGlmIG1ldGhvZG5hbWUgbm90IGluIGV4cG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICdtZXRob2QgJXIgb2YgJXIgb2JqZWN0IGlzIG5vdCBpbiBleHBvc2VkPSVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgIChtZXRob2RuYW1lLCB0eXBlKG9iaiksIGV4cG9zZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IGdldGF0dHIob2JqLCBtZXRob2RuYW1lKQoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICByZXMgPSBmdW5jdGlvbigqYXJncywgKiprd2RzKQogICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgIG1zZyA9ICgnI0VSUk9SJywgZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdHlwZWlkID0gZ2V0dHlwZWlkIGFuZCBnZXR0eXBlaWQuZ2V0KG1ldGhvZG5hbWUsIE5vbmUpCiAgICAgICAgICAgICAgICAgICAgaWYgdHlwZWlkOgogICAgICAgICAgICAgICAgICAgICAgICByaWRlbnQsIHJleHBvc2VkID0gc2VsZi5jcmVhdGUoY29ubiwgdHlwZWlkLCByZXMpCiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gVG9rZW4odHlwZWlkLCBzZWxmLmFkZHJlc3MsIHJpZGVudCkKICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gKCcjUFJPWFknLCAocmV4cG9zZWQsIHRva2VuKSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAoJyNSRVRVUk4nLCByZXMpCgogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBpZiBtZXRob2RuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgbXNnID0gKCcjVFJBQ0VCQUNLJywgZm9ybWF0X2V4YygpKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrX2Z1bmMgPSBzZWxmLmZhbGxiYWNrX21hcHBpbmdbbWV0aG9kbmFtZV0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsbGJhY2tfZnVuYygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIGNvbm4sIGlkZW50LCBvYmosICphcmdzLCAqKmt3ZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gKCcjUkVUVVJOJywgcmVzdWx0KQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICgnI1RSQUNFQkFDSycsIGZvcm1hdF9leGMoKSkKCiAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ2dvdCBFT0YgLS0gZXhpdGluZyB0aHJlYWQgc2VydmluZyAlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUpCiAgICAgICAgICAgICAgICBzeXMuZXhpdCgwKQoKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIG1zZyA9ICgnI1RSQUNFQkFDSycsIGZvcm1hdF9leGMoKSkKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZW5kKG1zZykKICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgc2VuZCgoJyNVTlNFUklBTElaQUJMRScsIGZvcm1hdF9leGMoKSkpCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgIHV0aWwuaW5mbygnZXhjZXB0aW9uIGluIHRocmVhZCBzZXJ2aW5nICVyJywKICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZSkKICAgICAgICAgICAgICAgIHV0aWwuaW5mbygnIC4uLiBtZXNzYWdlIHdhcyAlcicsIG1zZykKICAgICAgICAgICAgICAgIHV0aWwuaW5mbygnIC4uLiBleGNlcHRpb24gd2FzICVyJywgZSkKICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKCiAgICBkZWYgZmFsbGJhY2tfZ2V0dmFsdWUoc2VsZiwgY29ubiwgaWRlbnQsIG9iaik6CiAgICAgICAgcmV0dXJuIG9iagoKICAgIGRlZiBmYWxsYmFja19zdHIoc2VsZiwgY29ubiwgaWRlbnQsIG9iaik6CiAgICAgICAgcmV0dXJuIHN0cihvYmopCgogICAgZGVmIGZhbGxiYWNrX3JlcHIoc2VsZiwgY29ubiwgaWRlbnQsIG9iaik6CiAgICAgICAgcmV0dXJuIHJlcHIob2JqKQoKICAgIGZhbGxiYWNrX21hcHBpbmcgPSB7CiAgICAgICAgJ19fc3RyX18nOmZhbGxiYWNrX3N0ciwKICAgICAgICAnX19yZXByX18nOmZhbGxiYWNrX3JlcHIsCiAgICAgICAgJyNHRVRWQUxVRSc6ZmFsbGJhY2tfZ2V0dmFsdWUKICAgICAgICB9CgogICAgZGVmIGR1bW15KHNlbGYsIGMpOgogICAgICAgIHBhc3MKCiAgICBkZWYgZGVidWdfaW5mbyhzZWxmLCBjKToKICAgICAgICAnJycKICAgICAgICBSZXR1cm4gc29tZSBpbmZvIC0tLSB1c2VmdWwgdG8gc3BvdCBwcm9ibGVtcyB3aXRoIHJlZmNvdW50aW5nCiAgICAgICAgJycnCiAgICAgICAgIyBQZXJoYXBzIGluY2x1ZGUgZGVidWcgaW5mbyBhYm91dCAnYyc/CiAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICAgICBrZXlzID0gbGlzdChzZWxmLmlkX3RvX3JlZmNvdW50LmtleXMoKSkKICAgICAgICAgICAga2V5cy5zb3J0KCkKICAgICAgICAgICAgZm9yIGlkZW50IGluIGtleXM6CiAgICAgICAgICAgICAgICBpZiBpZGVudCAhPSAnMCc6CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAlczogICAgICAgcmVmY291bnQ9JXNcbiAgICAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlkZW50LCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VsZi5pZF90b19vYmpbaWRlbnRdWzBdKVs6NzVdKSkKICAgICAgICAgICAgcmV0dXJuICdcbicuam9pbihyZXN1bHQpCgogICAgZGVmIG51bWJlcl9vZl9vYmplY3RzKHNlbGYsIGMpOgogICAgICAgICcnJwogICAgICAgIE51bWJlciBvZiBzaGFyZWQgb2JqZWN0cwogICAgICAgICcnJwogICAgICAgICMgRG9lc24ndCB1c2UgKGxlbihzZWxmLmlkX3RvX29iaikgLSAxKSBhcyB3ZSBzaG91bGRuJ3QgY291bnQgaWRlbnQ9JzAnCiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmlkX3RvX3JlZmNvdW50KQoKICAgIGRlZiBzaHV0ZG93bihzZWxmLCBjKToKICAgICAgICAnJycKICAgICAgICBTaHV0ZG93biB0aGlzIHByb2Nlc3MKICAgICAgICAnJycKICAgICAgICB0cnk6CiAgICAgICAgICAgIHV0aWwuZGVidWcoJ21hbmFnZXIgcmVjZWl2ZWQgc2h1dGRvd24gbWVzc2FnZScpCiAgICAgICAgICAgIGMuc2VuZCgoJyNSRVRVUk4nLCBOb25lKSkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5zdG9wX2V2ZW50LnNldCgpCgogICAgZGVmIGNyZWF0ZShzZWxmLCBjLCB0eXBlaWQsIC8sICphcmdzLCAqKmt3ZHMpOgogICAgICAgICcnJwogICAgICAgIENyZWF0ZSBhIG5ldyBzaGFyZWQgb2JqZWN0IGFuZCByZXR1cm4gaXRzIGlkCiAgICAgICAgJycnCiAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICBjYWxsYWJsZSwgZXhwb3NlZCwgbWV0aG9kX3RvX3R5cGVpZCwgcHJveHl0eXBlID0gXAogICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWdpc3RyeVt0eXBlaWRdCgogICAgICAgICAgICBpZiBjYWxsYWJsZSBpcyBOb25lOgogICAgICAgICAgICAgICAgaWYga3dkcyBvciAobGVuKGFyZ3MpICE9IDEpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICJXaXRob3V0IGNhbGxhYmxlLCBtdXN0IGhhdmUgb25lIG5vbi1rZXl3b3JkIGFyZ3VtZW50IikKICAgICAgICAgICAgICAgIG9iaiA9IGFyZ3NbMF0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG9iaiA9IGNhbGxhYmxlKCphcmdzLCAqKmt3ZHMpCgogICAgICAgICAgICBpZiBleHBvc2VkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBleHBvc2VkID0gcHVibGljX21ldGhvZHMob2JqKQogICAgICAgICAgICBpZiBtZXRob2RfdG9fdHlwZWlkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobWV0aG9kX3RvX3R5cGVpZCwgZGljdCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAiTWV0aG9kX3RvX3R5cGVpZCB7MCFyfTogdHlwZSB7MSFzfSwgbm90IGRpY3QiLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF90b190eXBlaWQsIHR5cGUobWV0aG9kX3RvX3R5cGVpZCkpKQogICAgICAgICAgICAgICAgZXhwb3NlZCA9IGxpc3QoZXhwb3NlZCkgKyBsaXN0KG1ldGhvZF90b190eXBlaWQpCgogICAgICAgICAgICBpZGVudCA9ICcleCcgJSBpZChvYmopICAjIGNvbnZlcnQgdG8gc3RyaW5nIGJlY2F1c2UgeG1scnBjbGliCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBoYXMgMzIgYml0IHNpZ25lZCBpbnRlZ2VycwogICAgICAgICAgICB1dGlsLmRlYnVnKCclciBjYWxsYWJsZSByZXR1cm5lZCBvYmplY3Qgd2l0aCBpZCAlcicsIHR5cGVpZCwgaWRlbnQpCgogICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSAob2JqLCBzZXQoZXhwb3NlZCksIG1ldGhvZF90b190eXBlaWQpCiAgICAgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50OgogICAgICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPSAwCgogICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQogICAgICAgIHJldHVybiBpZGVudCwgdHVwbGUoZXhwb3NlZCkKCiAgICBkZWYgZ2V0X21ldGhvZHMoc2VsZiwgYywgdG9rZW4pOgogICAgICAgICcnJwogICAgICAgIFJldHVybiB0aGUgbWV0aG9kcyBvZiB0aGUgc2hhcmVkIG9iamVjdCBpbmRpY2F0ZWQgYnkgdG9rZW4KICAgICAgICAnJycKICAgICAgICByZXR1cm4gdHVwbGUoc2VsZi5pZF90b19vYmpbdG9rZW4uaWRdWzFdKQoKICAgIGRlZiBhY2NlcHRfY29ubmVjdGlvbihzZWxmLCBjLCBuYW1lKToKICAgICAgICAnJycKICAgICAgICBTcGF3biBhIG5ldyB0aHJlYWQgdG8gc2VydmUgdGhpcyBjb25uZWN0aW9uCiAgICAgICAgJycnCiAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZSA9IG5hbWUKICAgICAgICBjLnNlbmQoKCcjUkVUVVJOJywgTm9uZSkpCiAgICAgICAgc2VsZi5zZXJ2ZV9jbGllbnQoYykKCiAgICBkZWYgaW5jcmVmKHNlbGYsIGMsIGlkZW50KToKICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdICs9IDEKICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGtlOgogICAgICAgICAgICAgICAgIyBJZiBubyBleHRlcm5hbCByZWZlcmVuY2VzIGV4aXN0IGJ1dCBhbiBpbnRlcm5hbCAodG8gdGhlCiAgICAgICAgICAgICAgICAjIG1hbmFnZXIpIHN0aWxsIGRvZXMgYW5kIGEgbmV3IGV4dGVybmFsIHJlZmVyZW5jZSBpcyBjcmVhdGVkCiAgICAgICAgICAgICAgICAjIGZyb20gaXQsIHJlc3RvcmUgdGhlIG1hbmFnZXIncyB0cmFja2luZyBvZiBpdCBmcm9tIHRoZQogICAgICAgICAgICAgICAgIyBwcmV2aW91c2x5IHN0YXNoZWQgaW50ZXJuYWwgcmVmLgogICAgICAgICAgICAgICAgaWYgaWRlbnQgaW4gc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmo6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPSAxCiAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gXAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29ialtpZGVudF0KICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IHNlbGYuaWRfdG9fb2JqW2lkZW50XQogICAgICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ1NlcnZlciByZS1lbmFibGVkIHRyYWNraW5nICYgSU5DUkVGICVyJywgaWRlbnQpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIGtlCgogICAgZGVmIGRlY3JlZihzZWxmLCBjLCBpZGVudCk6CiAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQgYW5kIFwKICAgICAgICAgICAgaWRlbnQgaW4gc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmo6CiAgICAgICAgICAgIHV0aWwuZGVidWcoJ1NlcnZlciBERUNSRUYgc2tpcHBpbmcgJXInLCBpZGVudCkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgaWYgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPD0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICJJZCB7MCFzfSAoezEhcn0pIGhhcyByZWZjb3VudCB7MjpufSwgbm90IDErIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50LCBzZWxmLmlkX3RvX29ialtpZGVudF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdKSkKICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gLT0gMQogICAgICAgICAgICBpZiBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9PSAwOgogICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCgogICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50OgogICAgICAgICAgICAjIFR3by1zdGVwIHByb2Nlc3MgaW4gY2FzZSB0aGUgb2JqZWN0IHR1cm5zIG91dCB0byBjb250YWluIG90aGVyCiAgICAgICAgICAgICMgcHJveHkgb2JqZWN0cyAoZS5nLiBhIG1hbmFnZWQgbGlzdCBvZiBtYW5hZ2VkIGxpc3RzKS4KICAgICAgICAgICAgIyBPdGhlcndpc2UsIGRlbGV0aW5nIHNlbGYuaWRfdG9fb2JqW2lkZW50XSB3b3VsZCB0cmlnZ2VyIHRoZQogICAgICAgICAgICAjIGRlbGV0aW5nIG9mIHRoZSBzdG9yZWQgdmFsdWUgKGFub3RoZXIgbWFuYWdlZCBvYmplY3QpIHdoaWNoIHdvdWxkCiAgICAgICAgICAgICMgaW4gdHVybiBhdHRlbXB0IHRvIGFjcXVpcmUgdGhlIG11dGV4IHRoYXQgaXMgYWxyZWFkeSBoZWxkIGhlcmUuCiAgICAgICAgICAgIHNlbGYuaWRfdG9fb2JqW2lkZW50XSA9IChOb25lLCAoKSwgTm9uZSkgICMgdGhyZWFkLXNhZmUKICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCiAgICAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0KCgojCiMgQ2xhc3MgdG8gcmVwcmVzZW50IHN0YXRlIG9mIGEgbWFuYWdlcgojCgpjbGFzcyBTdGF0ZShvYmplY3QpOgogICAgX19zbG90c19fID0gWyd2YWx1ZSddCiAgICBJTklUSUFMID0gMAogICAgU1RBUlRFRCA9IDEKICAgIFNIVVRET1dOID0gMgoKIwojIE1hcHBpbmcgZnJvbSBzZXJpYWxpemVyIG5hbWUgdG8gTGlzdGVuZXIgYW5kIENsaWVudCB0eXBlcwojCgpsaXN0ZW5lcl9jbGllbnQgPSB7CiAgICAncGlja2xlJyA6IChjb25uZWN0aW9uLkxpc3RlbmVyLCBjb25uZWN0aW9uLkNsaWVudCksCiAgICAneG1scnBjbGliJyA6IChjb25uZWN0aW9uLlhtbExpc3RlbmVyLCBjb25uZWN0aW9uLlhtbENsaWVudCkKICAgIH0KCiMKIyBEZWZpbml0aW9uIG9mIEJhc2VNYW5hZ2VyCiMKCmNsYXNzIEJhc2VNYW5hZ2VyKG9iamVjdCk6CiAgICAnJycKICAgIEJhc2UgY2xhc3MgZm9yIG1hbmFnZXJzCiAgICAnJycKICAgIF9yZWdpc3RyeSA9IHt9CiAgICBfU2VydmVyID0gU2VydmVyCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3M9Tm9uZSwgYXV0aGtleT1Ob25lLCBzZXJpYWxpemVyPSdwaWNrbGUnLAogICAgICAgICAgICAgICAgIGN0eD1Ob25lLCAqLCBzaHV0ZG93bl90aW1lb3V0PTEuMCk6CiAgICAgICAgaWYgYXV0aGtleSBpcyBOb25lOgogICAgICAgICAgICBhdXRoa2V5ID0gcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5CiAgICAgICAgc2VsZi5fYWRkcmVzcyA9IGFkZHJlc3MgICAgICMgWFhYIG5vdCBmaW5hbCBhZGRyZXNzIGlmIGVnICgnJywgMCkKICAgICAgICBzZWxmLl9hdXRoa2V5ID0gcHJvY2Vzcy5BdXRoZW50aWNhdGlvblN0cmluZyhhdXRoa2V5KQogICAgICAgIHNlbGYuX3N0YXRlID0gU3RhdGUoKQogICAgICAgIHNlbGYuX3N0YXRlLnZhbHVlID0gU3RhdGUuSU5JVElBTAogICAgICAgIHNlbGYuX3NlcmlhbGl6ZXIgPSBzZXJpYWxpemVyCiAgICAgICAgc2VsZi5fTGlzdGVuZXIsIHNlbGYuX0NsaWVudCA9IGxpc3RlbmVyX2NsaWVudFtzZXJpYWxpemVyXQogICAgICAgIHNlbGYuX2N0eCA9IGN0eCBvciBnZXRfY29udGV4dCgpCiAgICAgICAgc2VsZi5fc2h1dGRvd25fdGltZW91dCA9IHNodXRkb3duX3RpbWVvdXQKCiAgICBkZWYgZ2V0X3NlcnZlcihzZWxmKToKICAgICAgICAnJycKICAgICAgICBSZXR1cm4gc2VydmVyIG9iamVjdCB3aXRoIHNlcnZlX2ZvcmV2ZXIoKSBtZXRob2QgYW5kIGFkZHJlc3MgYXR0cmlidXRlCiAgICAgICAgJycnCiAgICAgICAgaWYgc2VsZi5fc3RhdGUudmFsdWUgIT0gU3RhdGUuSU5JVElBTDoKICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUudmFsdWUgPT0gU3RhdGUuU1RBUlRFRDoKICAgICAgICAgICAgICAgIHJhaXNlIFByb2Nlc3NFcnJvcigiQWxyZWFkeSBzdGFydGVkIHNlcnZlciIpCiAgICAgICAgICAgIGVsaWYgc2VsZi5fc3RhdGUudmFsdWUgPT0gU3RhdGUuU0hVVERPV046CiAgICAgICAgICAgICAgICByYWlzZSBQcm9jZXNzRXJyb3IoIk1hbmFnZXIgaGFzIHNodXQgZG93biIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBQcm9jZXNzRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIlVua25vd24gc3RhdGUgeyFyfSIuZm9ybWF0KHNlbGYuX3N0YXRlLnZhbHVlKSkKICAgICAgICByZXR1cm4gU2VydmVyKHNlbGYuX3JlZ2lzdHJ5LCBzZWxmLl9hZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXV0aGtleSwgc2VsZi5fc2VyaWFsaXplcikKCiAgICBkZWYgY29ubmVjdChzZWxmKToKICAgICAgICAnJycKICAgICAgICBDb25uZWN0IG1hbmFnZXIgb2JqZWN0IHRvIHRoZSBzZXJ2ZXIgcHJvY2VzcwogICAgICAgICcnJwogICAgICAgIExpc3RlbmVyLCBDbGllbnQgPSBsaXN0ZW5lcl9jbGllbnRbc2VsZi5fc2VyaWFsaXplcl0KICAgICAgICBjb25uID0gQ2xpZW50KHNlbGYuX2FkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICBkaXNwYXRjaChjb25uLCBOb25lLCAnZHVtbXknKQogICAgICAgIHNlbGYuX3N0YXRlLnZhbHVlID0gU3RhdGUuU1RBUlRFRAoKICAgIGRlZiBzdGFydChzZWxmLCBpbml0aWFsaXplcj1Ob25lLCBpbml0YXJncz0oKSk6CiAgICAgICAgJycnCiAgICAgICAgU3Bhd24gYSBzZXJ2ZXIgcHJvY2VzcyBmb3IgdGhpcyBtYW5hZ2VyIG9iamVjdAogICAgICAgICcnJwogICAgICAgIGlmIHNlbGYuX3N0YXRlLnZhbHVlICE9IFN0YXRlLklOSVRJQUw6CiAgICAgICAgICAgIGlmIHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLlNUQVJURUQ6CiAgICAgICAgICAgICAgICByYWlzZSBQcm9jZXNzRXJyb3IoIkFscmVhZHkgc3RhcnRlZCBzZXJ2ZXIiKQogICAgICAgICAgICBlbGlmIHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLlNIVVRET1dOOgogICAgICAgICAgICAgICAgcmFpc2UgUHJvY2Vzc0Vycm9yKCJNYW5hZ2VyIGhhcyBzaHV0IGRvd24iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgUHJvY2Vzc0Vycm9yKAogICAgICAgICAgICAgICAgICAgICJVbmtub3duIHN0YXRlIHshcn0iLmZvcm1hdChzZWxmLl9zdGF0ZS52YWx1ZSkpCgogICAgICAgIGlmIGluaXRpYWxpemVyIGlzIG5vdCBOb25lIGFuZCBub3QgY2FsbGFibGUoaW5pdGlhbGl6ZXIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2luaXRpYWxpemVyIG11c3QgYmUgYSBjYWxsYWJsZScpCgogICAgICAgICMgcGlwZSBvdmVyIHdoaWNoIHdlIHdpbGwgcmV0cmlldmUgYWRkcmVzcyBvZiBzZXJ2ZXIKICAgICAgICByZWFkZXIsIHdyaXRlciA9IGNvbm5lY3Rpb24uUGlwZShkdXBsZXg9RmFsc2UpCgogICAgICAgICMgc3Bhd24gcHJvY2VzcyB3aGljaCBydW5zIGEgc2VydmVyCiAgICAgICAgc2VsZi5fcHJvY2VzcyA9IHNlbGYuX2N0eC5Qcm9jZXNzKAogICAgICAgICAgICB0YXJnZXQ9dHlwZShzZWxmKS5fcnVuX3NlcnZlciwKICAgICAgICAgICAgYXJncz0oc2VsZi5fcmVnaXN0cnksIHNlbGYuX2FkZHJlc3MsIHNlbGYuX2F1dGhrZXksCiAgICAgICAgICAgICAgICAgIHNlbGYuX3NlcmlhbGl6ZXIsIHdyaXRlciwgaW5pdGlhbGl6ZXIsIGluaXRhcmdzKSwKICAgICAgICAgICAgKQogICAgICAgIGlkZW50ID0gJzonLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYuX3Byb2Nlc3MuX2lkZW50aXR5KQogICAgICAgIHNlbGYuX3Byb2Nlc3MubmFtZSA9IHR5cGUoc2VsZikuX19uYW1lX18gICsgJy0nICsgaWRlbnQKICAgICAgICBzZWxmLl9wcm9jZXNzLnN0YXJ0KCkKCiAgICAgICAgIyBnZXQgYWRkcmVzcyBvZiBzZXJ2ZXIKICAgICAgICB3cml0ZXIuY2xvc2UoKQogICAgICAgIHNlbGYuX2FkZHJlc3MgPSByZWFkZXIucmVjdigpCiAgICAgICAgcmVhZGVyLmNsb3NlKCkKCiAgICAgICAgIyByZWdpc3RlciBhIGZpbmFsaXplcgogICAgICAgIHNlbGYuX3N0YXRlLnZhbHVlID0gU3RhdGUuU1RBUlRFRAogICAgICAgIHNlbGYuc2h1dGRvd24gPSB1dGlsLkZpbmFsaXplKAogICAgICAgICAgICBzZWxmLCB0eXBlKHNlbGYpLl9maW5hbGl6ZV9tYW5hZ2VyLAogICAgICAgICAgICBhcmdzPShzZWxmLl9wcm9jZXNzLCBzZWxmLl9hZGRyZXNzLCBzZWxmLl9hdXRoa2V5LCBzZWxmLl9zdGF0ZSwKICAgICAgICAgICAgICAgICAgc2VsZi5fQ2xpZW50LCBzZWxmLl9zaHV0ZG93bl90aW1lb3V0KSwKICAgICAgICAgICAgZXhpdHByaW9yaXR5PTAKICAgICAgICAgICAgKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9ydW5fc2VydmVyKGNscywgcmVnaXN0cnksIGFkZHJlc3MsIGF1dGhrZXksIHNlcmlhbGl6ZXIsIHdyaXRlciwKICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplcj1Ob25lLCBpbml0YXJncz0oKSk6CiAgICAgICAgJycnCiAgICAgICAgQ3JlYXRlIGEgc2VydmVyLCByZXBvcnQgaXRzIGFkZHJlc3MgYW5kIHJ1biBpdAogICAgICAgICcnJwogICAgICAgICMgYnBvLTM2MzY4OiBwcm90ZWN0IHNlcnZlciBwcm9jZXNzIGZyb20gS2V5Ym9hcmRJbnRlcnJ1cHQgc2lnbmFscwogICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc2lnbmFsLlNJR19JR04pCgogICAgICAgIGlmIGluaXRpYWxpemVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpbml0aWFsaXplcigqaW5pdGFyZ3MpCgogICAgICAgICMgY3JlYXRlIHNlcnZlcgogICAgICAgIHNlcnZlciA9IGNscy5fU2VydmVyKHJlZ2lzdHJ5LCBhZGRyZXNzLCBhdXRoa2V5LCBzZXJpYWxpemVyKQoKICAgICAgICAjIGluZm9ybSBwYXJlbnQgcHJvY2VzcyBvZiB0aGUgc2VydmVyJ3MgYWRkcmVzcwogICAgICAgIHdyaXRlci5zZW5kKHNlcnZlci5hZGRyZXNzKQogICAgICAgIHdyaXRlci5jbG9zZSgpCgogICAgICAgICMgcnVuIHRoZSBtYW5hZ2VyCiAgICAgICAgdXRpbC5pbmZvKCdtYW5hZ2VyIHNlcnZpbmcgYXQgJXInLCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCgogICAgZGVmIF9jcmVhdGUoc2VsZiwgdHlwZWlkLCAvLCAqYXJncywgKiprd2RzKToKICAgICAgICAnJycKICAgICAgICBDcmVhdGUgYSBuZXcgc2hhcmVkIG9iamVjdDsgcmV0dXJuIHRoZSB0b2tlbiBhbmQgZXhwb3NlZCB0dXBsZQogICAgICAgICcnJwogICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZS52YWx1ZSA9PSBTdGF0ZS5TVEFSVEVELCAnc2VydmVyIG5vdCB5ZXQgc3RhcnRlZCcKICAgICAgICBjb25uID0gc2VsZi5fQ2xpZW50KHNlbGYuX2FkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlkLCBleHBvc2VkID0gZGlzcGF0Y2goY29ubiwgTm9uZSwgJ2NyZWF0ZScsICh0eXBlaWQsKSthcmdzLCBrd2RzKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgIHJldHVybiBUb2tlbih0eXBlaWQsIHNlbGYuX2FkZHJlc3MsIGlkKSwgZXhwb3NlZAoKICAgIGRlZiBqb2luKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgJycnCiAgICAgICAgSm9pbiB0aGUgbWFuYWdlciBwcm9jZXNzIChpZiBpdCBoYXMgYmVlbiBzcGF3bmVkKQogICAgICAgICcnJwogICAgICAgIGlmIHNlbGYuX3Byb2Nlc3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Muam9pbih0aW1lb3V0KQogICAgICAgICAgICBpZiBub3Qgc2VsZi5fcHJvY2Vzcy5pc19hbGl2ZSgpOgogICAgICAgICAgICAgICAgc2VsZi5fcHJvY2VzcyA9IE5vbmUKCiAgICBkZWYgX2RlYnVnX2luZm8oc2VsZik6CiAgICAgICAgJycnCiAgICAgICAgUmV0dXJuIHNvbWUgaW5mbyBhYm91dCB0aGUgc2VydmVycyBzaGFyZWQgb2JqZWN0cyBhbmQgY29ubmVjdGlvbnMKICAgICAgICAnJycKICAgICAgICBjb25uID0gc2VsZi5fQ2xpZW50KHNlbGYuX2FkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBkaXNwYXRjaChjb25uLCBOb25lLCAnZGVidWdfaW5mbycpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgY29ubi5jbG9zZSgpCgogICAgZGVmIF9udW1iZXJfb2Zfb2JqZWN0cyhzZWxmKToKICAgICAgICAnJycKICAgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBzaGFyZWQgb2JqZWN0cwogICAgICAgICcnJwogICAgICAgIGNvbm4gPSBzZWxmLl9DbGllbnQoc2VsZi5fYWRkcmVzcywgYXV0aGtleT1zZWxmLl9hdXRoa2V5KQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIGRpc3BhdGNoKGNvbm4sIE5vbmUsICdudW1iZXJfb2Zfb2JqZWN0cycpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgY29ubi5jbG9zZSgpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9zdGF0ZS52YWx1ZSA9PSBTdGF0ZS5JTklUSUFMOgogICAgICAgICAgICBzZWxmLnN0YXJ0KCkKICAgICAgICBpZiBzZWxmLl9zdGF0ZS52YWx1ZSAhPSBTdGF0ZS5TVEFSVEVEOgogICAgICAgICAgICBpZiBzZWxmLl9zdGF0ZS52YWx1ZSA9PSBTdGF0ZS5JTklUSUFMOgogICAgICAgICAgICAgICAgcmFpc2UgUHJvY2Vzc0Vycm9yKCJVbmFibGUgdG8gc3RhcnQgc2VydmVyIikKICAgICAgICAgICAgZWxpZiBzZWxmLl9zdGF0ZS52YWx1ZSA9PSBTdGF0ZS5TSFVURE9XTjoKICAgICAgICAgICAgICAgIHJhaXNlIFByb2Nlc3NFcnJvcigiTWFuYWdlciBoYXMgc2h1dCBkb3duIikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFByb2Nlc3NFcnJvcigKICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBzdGF0ZSB7IXJ9Ii5mb3JtYXQoc2VsZi5fc3RhdGUudmFsdWUpKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgogICAgICAgIHNlbGYuc2h1dGRvd24oKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfZmluYWxpemVfbWFuYWdlcihwcm9jZXNzLCBhZGRyZXNzLCBhdXRoa2V5LCBzdGF0ZSwgX0NsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl90aW1lb3V0KToKICAgICAgICAnJycKICAgICAgICBTaHV0ZG93biB0aGUgbWFuYWdlciBwcm9jZXNzOyB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgYSBmaW5hbGl6ZXIKICAgICAgICAnJycKICAgICAgICBpZiBwcm9jZXNzLmlzX2FsaXZlKCk6CiAgICAgICAgICAgIHV0aWwuaW5mbygnc2VuZGluZyBzaHV0ZG93biBtZXNzYWdlIHRvIG1hbmFnZXInKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBjb25uID0gX0NsaWVudChhZGRyZXNzLCBhdXRoa2V5PWF1dGhrZXkpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goY29ubiwgTm9uZSwgJ3NodXRkb3duJykKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICBwYXNzCgogICAgICAgICAgICBwcm9jZXNzLmpvaW4odGltZW91dD1zaHV0ZG93bl90aW1lb3V0KQogICAgICAgICAgICBpZiBwcm9jZXNzLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICAgICB1dGlsLmluZm8oJ21hbmFnZXIgc3RpbGwgYWxpdmUnKQogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihwcm9jZXNzLCAndGVybWluYXRlJyk6CiAgICAgICAgICAgICAgICAgICAgdXRpbC5pbmZvKCd0cnlpbmcgdG8gYHRlcm1pbmF0ZSgpYCBtYW5hZ2VyIHByb2Nlc3MnKQogICAgICAgICAgICAgICAgICAgIHByb2Nlc3MudGVybWluYXRlKCkKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmpvaW4odGltZW91dD1zaHV0ZG93bl90aW1lb3V0KQogICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3MuaXNfYWxpdmUoKToKICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5pbmZvKCdtYW5hZ2VyIHN0aWxsIGFsaXZlIGFmdGVyIHRlcm1pbmF0ZScpCiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muam9pbigpCgogICAgICAgIHN0YXRlLnZhbHVlID0gU3RhdGUuU0hVVERPV04KICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBCYXNlUHJveHkuX2FkZHJlc3NfdG9fbG9jYWxbYWRkcmVzc10KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhZGRyZXNzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgcmVnaXN0ZXIoY2xzLCB0eXBlaWQsIGNhbGxhYmxlPU5vbmUsIHByb3h5dHlwZT1Ob25lLCBleHBvc2VkPU5vbmUsCiAgICAgICAgICAgICAgICAgbWV0aG9kX3RvX3R5cGVpZD1Ob25lLCBjcmVhdGVfbWV0aG9kPVRydWUpOgogICAgICAgICcnJwogICAgICAgIFJlZ2lzdGVyIGEgdHlwZWlkIHdpdGggdGhlIG1hbmFnZXIgdHlwZQogICAgICAgICcnJwogICAgICAgIGlmICdfcmVnaXN0cnknIG5vdCBpbiBjbHMuX19kaWN0X186CiAgICAgICAgICAgIGNscy5fcmVnaXN0cnkgPSBjbHMuX3JlZ2lzdHJ5LmNvcHkoKQoKICAgICAgICBpZiBwcm94eXR5cGUgaXMgTm9uZToKICAgICAgICAgICAgcHJveHl0eXBlID0gQXV0b1Byb3h5CgogICAgICAgIGV4cG9zZWQgPSBleHBvc2VkIG9yIGdldGF0dHIocHJveHl0eXBlLCAnX2V4cG9zZWRfJywgTm9uZSkKCiAgICAgICAgbWV0aG9kX3RvX3R5cGVpZCA9IG1ldGhvZF90b190eXBlaWQgb3IgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHByb3h5dHlwZSwgJ19tZXRob2RfdG9fdHlwZWlkXycsIE5vbmUpCgogICAgICAgIGlmIG1ldGhvZF90b190eXBlaWQ6CiAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGxpc3QobWV0aG9kX3RvX3R5cGVpZC5pdGVtcygpKTogIyBpc2luc3RhbmNlPwogICAgICAgICAgICAgICAgYXNzZXJ0IHR5cGUoa2V5KSBpcyBzdHIsICclciBpcyBub3QgYSBzdHJpbmcnICUga2V5CiAgICAgICAgICAgICAgICBhc3NlcnQgdHlwZSh2YWx1ZSkgaXMgc3RyLCAnJXIgaXMgbm90IGEgc3RyaW5nJyAlIHZhbHVlCgogICAgICAgIGNscy5fcmVnaXN0cnlbdHlwZWlkXSA9ICgKICAgICAgICAgICAgY2FsbGFibGUsIGV4cG9zZWQsIG1ldGhvZF90b190eXBlaWQsIHByb3h5dHlwZQogICAgICAgICAgICApCgogICAgICAgIGlmIGNyZWF0ZV9tZXRob2Q6CiAgICAgICAgICAgIGRlZiB0ZW1wKHNlbGYsIC8sICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygncmVxdWVzdGluZyBjcmVhdGlvbiBvZiBhIHNoYXJlZCAlciBvYmplY3QnLCB0eXBlaWQpCiAgICAgICAgICAgICAgICB0b2tlbiwgZXhwID0gc2VsZi5fY3JlYXRlKHR5cGVpZCwgKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgICAgIHByb3h5ID0gcHJveHl0eXBlKAogICAgICAgICAgICAgICAgICAgIHRva2VuLCBzZWxmLl9zZXJpYWxpemVyLCBtYW5hZ2VyPXNlbGYsCiAgICAgICAgICAgICAgICAgICAgYXV0aGtleT1zZWxmLl9hdXRoa2V5LCBleHBvc2VkPWV4cAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIGNvbm4gPSBzZWxmLl9DbGllbnQodG9rZW4uYWRkcmVzcywgYXV0aGtleT1zZWxmLl9hdXRoa2V5KQogICAgICAgICAgICAgICAgZGlzcGF0Y2goY29ubiwgTm9uZSwgJ2RlY3JlZicsICh0b2tlbi5pZCwpKQogICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5CiAgICAgICAgICAgIHRlbXAuX19uYW1lX18gPSB0eXBlaWQKICAgICAgICAgICAgc2V0YXR0cihjbHMsIHR5cGVpZCwgdGVtcCkKCiMKIyBTdWJjbGFzcyBvZiBzZXQgd2hpY2ggZ2V0IGNsZWFyZWQgYWZ0ZXIgYSBmb3JrCiMKCmNsYXNzIFByb2Nlc3NMb2NhbFNldChzZXQpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHV0aWwucmVnaXN0ZXJfYWZ0ZXJfZm9yayhzZWxmLCBsYW1iZGEgb2JqOiBvYmouY2xlYXIoKSkKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiB0eXBlKHNlbGYpLCAoKQoKIwojIERlZmluaXRpb24gb2YgQmFzZVByb3h5CiMKCmNsYXNzIEJhc2VQcm94eShvYmplY3QpOgogICAgJycnCiAgICBBIGJhc2UgZm9yIHByb3hpZXMgb2Ygc2hhcmVkIG9iamVjdHMKICAgICcnJwogICAgX2FkZHJlc3NfdG9fbG9jYWwgPSB7fQogICAgX211dGV4ID0gdXRpbC5Gb3JrQXdhcmVUaHJlYWRMb2NrKCkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdG9rZW4sIHNlcmlhbGl6ZXIsIG1hbmFnZXI9Tm9uZSwKICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUsIG1hbmFnZXJfb3duZWQ9RmFsc2UpOgogICAgICAgIHdpdGggQmFzZVByb3h5Ll9tdXRleDoKICAgICAgICAgICAgdGxzX2lkc2V0ID0gQmFzZVByb3h5Ll9hZGRyZXNzX3RvX2xvY2FsLmdldCh0b2tlbi5hZGRyZXNzLCBOb25lKQogICAgICAgICAgICBpZiB0bHNfaWRzZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgIHRsc19pZHNldCA9IHV0aWwuRm9ya0F3YXJlTG9jYWwoKSwgUHJvY2Vzc0xvY2FsU2V0KCkKICAgICAgICAgICAgICAgIEJhc2VQcm94eS5fYWRkcmVzc190b19sb2NhbFt0b2tlbi5hZGRyZXNzXSA9IHRsc19pZHNldAoKICAgICAgICAjIHNlbGYuX3RscyBpcyB1c2VkIHRvIHJlY29yZCB0aGUgY29ubmVjdGlvbiB1c2VkIGJ5IHRoaXMKICAgICAgICAjIHRocmVhZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBtYW5hZ2VyIGF0IHRva2VuLmFkZHJlc3MKICAgICAgICBzZWxmLl90bHMgPSB0bHNfaWRzZXRbMF0KCiAgICAgICAgIyBzZWxmLl9pZHNldCBpcyB1c2VkIHRvIHJlY29yZCB0aGUgaWRlbnRpdGllcyBvZiBhbGwgc2hhcmVkCiAgICAgICAgIyBvYmplY3RzIGZvciB3aGljaCB0aGUgY3VycmVudCBwcm9jZXNzIG93bnMgcmVmZXJlbmNlcyBhbmQKICAgICAgICAjIHdoaWNoIGFyZSBpbiB0aGUgbWFuYWdlciBhdCB0b2tlbi5hZGRyZXNzCiAgICAgICAgc2VsZi5faWRzZXQgPSB0bHNfaWRzZXRbMV0KCiAgICAgICAgc2VsZi5fdG9rZW4gPSB0b2tlbgogICAgICAgIHNlbGYuX2lkID0gc2VsZi5fdG9rZW4uaWQKICAgICAgICBzZWxmLl9tYW5hZ2VyID0gbWFuYWdlcgogICAgICAgIHNlbGYuX3NlcmlhbGl6ZXIgPSBzZXJpYWxpemVyCiAgICAgICAgc2VsZi5fQ2xpZW50ID0gbGlzdGVuZXJfY2xpZW50W3NlcmlhbGl6ZXJdWzFdCgogICAgICAgICMgU2hvdWxkIGJlIHNldCB0byBUcnVlIG9ubHkgd2hlbiBhIHByb3h5IG9iamVjdCBpcyBiZWluZyBjcmVhdGVkCiAgICAgICAgIyBvbiB0aGUgbWFuYWdlciBzZXJ2ZXI7IHByaW1hcnkgdXNlIGNhc2U6IG5lc3RlZCBwcm94eSBvYmplY3RzLgogICAgICAgICMgUmVidWlsZFByb3h5IGRldGVjdHMgd2hlbiBhIHByb3h5IGlzIGJlaW5nIGNyZWF0ZWQgb24gdGhlIG1hbmFnZXIKICAgICAgICAjIGFuZCBzZXRzIHRoaXMgdmFsdWUgYXBwcm9wcmlhdGVseS4KICAgICAgICBzZWxmLl9vd25lZF9ieV9tYW5hZ2VyID0gbWFuYWdlcl9vd25lZAoKICAgICAgICBpZiBhdXRoa2V5IGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9hdXRoa2V5ID0gcHJvY2Vzcy5BdXRoZW50aWNhdGlvblN0cmluZyhhdXRoa2V5KQogICAgICAgIGVsaWYgc2VsZi5fbWFuYWdlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fYXV0aGtleSA9IHNlbGYuX21hbmFnZXIuX2F1dGhrZXkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9hdXRoa2V5ID0gcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5CgogICAgICAgIGlmIGluY3JlZjoKICAgICAgICAgICAgc2VsZi5faW5jcmVmKCkKCiAgICAgICAgdXRpbC5yZWdpc3Rlcl9hZnRlcl9mb3JrKHNlbGYsIEJhc2VQcm94eS5fYWZ0ZXJfZm9yaykKCiAgICBkZWYgX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgdXRpbC5kZWJ1ZygnbWFraW5nIGNvbm5lY3Rpb24gdG8gbWFuYWdlcicpCiAgICAgICAgbmFtZSA9IHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkubmFtZQogICAgICAgIGlmIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUgIT0gJ01haW5UaHJlYWQnOgogICAgICAgICAgICBuYW1lICs9ICd8JyArIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUKICAgICAgICBjb25uID0gc2VsZi5fQ2xpZW50KHNlbGYuX3Rva2VuLmFkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICBkaXNwYXRjaChjb25uLCBOb25lLCAnYWNjZXB0X2Nvbm5lY3Rpb24nLCAobmFtZSwpKQogICAgICAgIHNlbGYuX3Rscy5jb25uZWN0aW9uID0gY29ubgoKICAgIGRlZiBfY2FsbG1ldGhvZChzZWxmLCBtZXRob2RuYW1lLCBhcmdzPSgpLCBrd2RzPXt9KToKICAgICAgICAnJycKICAgICAgICBUcnkgdG8gY2FsbCBhIG1ldGhvZCBvZiB0aGUgcmVmZXJlbnQgYW5kIHJldHVybiBhIGNvcHkgb2YgdGhlIHJlc3VsdAogICAgICAgICcnJwogICAgICAgIHRyeToKICAgICAgICAgICAgY29ubiA9IHNlbGYuX3Rscy5jb25uZWN0aW9uCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICB1dGlsLmRlYnVnKCd0aHJlYWQgJXIgZG9lcyBub3Qgb3duIGEgY29ubmVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZSkKICAgICAgICAgICAgc2VsZi5fY29ubmVjdCgpCiAgICAgICAgICAgIGNvbm4gPSBzZWxmLl90bHMuY29ubmVjdGlvbgoKICAgICAgICBjb25uLnNlbmQoKHNlbGYuX2lkLCBtZXRob2RuYW1lLCBhcmdzLCBrd2RzKSkKICAgICAgICBraW5kLCByZXN1bHQgPSBjb25uLnJlY3YoKQoKICAgICAgICBpZiBraW5kID09ICcjUkVUVVJOJzoKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgIGVsaWYga2luZCA9PSAnI1BST1hZJzoKICAgICAgICAgICAgZXhwb3NlZCwgdG9rZW4gPSByZXN1bHQKICAgICAgICAgICAgcHJveHl0eXBlID0gc2VsZi5fbWFuYWdlci5fcmVnaXN0cnlbdG9rZW4udHlwZWlkXVstMV0KICAgICAgICAgICAgdG9rZW4uYWRkcmVzcyA9IHNlbGYuX3Rva2VuLmFkZHJlc3MKICAgICAgICAgICAgcHJveHkgPSBwcm94eXR5cGUoCiAgICAgICAgICAgICAgICB0b2tlbiwgc2VsZi5fc2VyaWFsaXplciwgbWFuYWdlcj1zZWxmLl9tYW5hZ2VyLAogICAgICAgICAgICAgICAgYXV0aGtleT1zZWxmLl9hdXRoa2V5LCBleHBvc2VkPWV4cG9zZWQKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgY29ubiA9IHNlbGYuX0NsaWVudCh0b2tlbi5hZGRyZXNzLCBhdXRoa2V5PXNlbGYuX2F1dGhrZXkpCiAgICAgICAgICAgIGRpc3BhdGNoKGNvbm4sIE5vbmUsICdkZWNyZWYnLCAodG9rZW4uaWQsKSkKICAgICAgICAgICAgcmV0dXJuIHByb3h5CiAgICAgICAgcmFpc2UgY29udmVydF90b19lcnJvcihraW5kLCByZXN1bHQpCgogICAgZGVmIF9nZXR2YWx1ZShzZWxmKToKICAgICAgICAnJycKICAgICAgICBHZXQgYSBjb3B5IG9mIHRoZSB2YWx1ZSBvZiB0aGUgcmVmZXJlbnQKICAgICAgICAnJycKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnI0dFVFZBTFVFJykKCiAgICBkZWYgX2luY3JlZihzZWxmKToKICAgICAgICBpZiBzZWxmLl9vd25lZF9ieV9tYW5hZ2VyOgogICAgICAgICAgICB1dGlsLmRlYnVnKCdvd25lZF9ieV9tYW5hZ2VyIHNraXBwZWQgSU5DUkVGIG9mICVyJywgc2VsZi5fdG9rZW4uaWQpCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBjb25uID0gc2VsZi5fQ2xpZW50KHNlbGYuX3Rva2VuLmFkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICBkaXNwYXRjaChjb25uLCBOb25lLCAnaW5jcmVmJywgKHNlbGYuX2lkLCkpCiAgICAgICAgdXRpbC5kZWJ1ZygnSU5DUkVGICVyJywgc2VsZi5fdG9rZW4uaWQpCgogICAgICAgIHNlbGYuX2lkc2V0LmFkZChzZWxmLl9pZCkKCiAgICAgICAgc3RhdGUgPSBzZWxmLl9tYW5hZ2VyIGFuZCBzZWxmLl9tYW5hZ2VyLl9zdGF0ZQoKICAgICAgICBzZWxmLl9jbG9zZSA9IHV0aWwuRmluYWxpemUoCiAgICAgICAgICAgIHNlbGYsIEJhc2VQcm94eS5fZGVjcmVmLAogICAgICAgICAgICBhcmdzPShzZWxmLl90b2tlbiwgc2VsZi5fYXV0aGtleSwgc3RhdGUsCiAgICAgICAgICAgICAgICAgIHNlbGYuX3Rscywgc2VsZi5faWRzZXQsIHNlbGYuX0NsaWVudCksCiAgICAgICAgICAgIGV4aXRwcmlvcml0eT0xMAogICAgICAgICAgICApCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9kZWNyZWYodG9rZW4sIGF1dGhrZXksIHN0YXRlLCB0bHMsIGlkc2V0LCBfQ2xpZW50KToKICAgICAgICBpZHNldC5kaXNjYXJkKHRva2VuLmlkKQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgbWFuYWdlciBpcyBzdGlsbCBhbGl2ZQogICAgICAgIGlmIHN0YXRlIGlzIE5vbmUgb3Igc3RhdGUudmFsdWUgPT0gU3RhdGUuU1RBUlRFRDoKICAgICAgICAgICAgIyB0ZWxsIG1hbmFnZXIgdGhpcyBwcm9jZXNzIG5vIGxvbmdlciBjYXJlcyBhYm91dCByZWZlcmVudAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdERUNSRUYgJXInLCB0b2tlbi5pZCkKICAgICAgICAgICAgICAgIGNvbm4gPSBfQ2xpZW50KHRva2VuLmFkZHJlc3MsIGF1dGhrZXk9YXV0aGtleSkKICAgICAgICAgICAgICAgIGRpc3BhdGNoKGNvbm4sIE5vbmUsICdkZWNyZWYnLCAodG9rZW4uaWQsKSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnLi4uIGRlY3JlZiBmYWlsZWQgJXMnLCBlKQoKICAgICAgICBlbHNlOgogICAgICAgICAgICB1dGlsLmRlYnVnKCdERUNSRUYgJXIgLS0gbWFuYWdlciBhbHJlYWR5IHNodXRkb3duJywgdG9rZW4uaWQpCgogICAgICAgICMgY2hlY2sgd2hldGhlciB3ZSBjYW4gY2xvc2UgdGhpcyB0aHJlYWQncyBjb25uZWN0aW9uIGJlY2F1c2UKICAgICAgICAjIHRoZSBwcm9jZXNzIG93bnMgbm8gbW9yZSByZWZlcmVuY2VzIHRvIG9iamVjdHMgZm9yIHRoaXMgbWFuYWdlcgogICAgICAgIGlmIG5vdCBpZHNldCBhbmQgaGFzYXR0cih0bHMsICdjb25uZWN0aW9uJyk6CiAgICAgICAgICAgIHV0aWwuZGVidWcoJ3RocmVhZCAlciBoYXMgbm8gbW9yZSBwcm94aWVzIHNvIGNsb3NpbmcgY29ubicsCiAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZSkKICAgICAgICAgICAgdGxzLmNvbm5lY3Rpb24uY2xvc2UoKQogICAgICAgICAgICBkZWwgdGxzLmNvbm5lY3Rpb24KCiAgICBkZWYgX2FmdGVyX2Zvcmsoc2VsZik6CiAgICAgICAgc2VsZi5fbWFuYWdlciA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2luY3JlZigpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAjIHRoZSBwcm94eSBtYXkganVzdCBiZSBmb3IgYSBtYW5hZ2VyIHdoaWNoIGhhcyBzaHV0ZG93bgogICAgICAgICAgICB1dGlsLmluZm8oJ2luY3JlZiBmYWlsZWQ6ICVzJyAlIGUpCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAga3dkcyA9IHt9CiAgICAgICAgaWYgZ2V0X3NwYXduaW5nX3BvcGVuKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGt3ZHNbJ2F1dGhrZXknXSA9IHNlbGYuX2F1dGhrZXkKCiAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAnX2lzYXV0bycsIEZhbHNlKToKICAgICAgICAgICAga3dkc1snZXhwb3NlZCddID0gc2VsZi5fZXhwb3NlZF8KICAgICAgICAgICAgcmV0dXJuIChSZWJ1aWxkUHJveHksCiAgICAgICAgICAgICAgICAgICAgKEF1dG9Qcm94eSwgc2VsZi5fdG9rZW4sIHNlbGYuX3NlcmlhbGl6ZXIsIGt3ZHMpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiAoUmVidWlsZFByb3h5LAogICAgICAgICAgICAgICAgICAgICh0eXBlKHNlbGYpLCBzZWxmLl90b2tlbiwgc2VsZi5fc2VyaWFsaXplciwga3dkcykpCgogICAgZGVmIF9fZGVlcGNvcHlfXyhzZWxmLCBtZW1vKToKICAgICAgICByZXR1cm4gc2VsZi5fZ2V0dmFsdWUoKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzwlcyBvYmplY3QsIHR5cGVpZCAlciBhdCAlI3g+JyAlIFwKICAgICAgICAgICAgICAgKHR5cGUoc2VsZikuX19uYW1lX18sIHNlbGYuX3Rva2VuLnR5cGVpZCwgaWQoc2VsZikpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgJycnCiAgICAgICAgUmV0dXJuIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWZlcmVudCAob3IgYSBmYWxsLWJhY2sgaWYgdGhhdCBmYWlscykKICAgICAgICAnJycKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX3JlcHJfXycpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgcmV0dXJuIHJlcHIoc2VsZilbOi0xXSArICI7ICdfX3N0cl9fKCknIGZhaWxlZD4iCgojCiMgRnVuY3Rpb24gdXNlZCBmb3IgdW5waWNrbGluZwojCgpkZWYgUmVidWlsZFByb3h5KGZ1bmMsIHRva2VuLCBzZXJpYWxpemVyLCBrd2RzKToKICAgICcnJwogICAgRnVuY3Rpb24gdXNlZCBmb3IgdW5waWNrbGluZyBwcm94eSBvYmplY3RzLgogICAgJycnCiAgICBzZXJ2ZXIgPSBnZXRhdHRyKHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCksICdfbWFuYWdlcl9zZXJ2ZXInLCBOb25lKQogICAgaWYgc2VydmVyIGFuZCBzZXJ2ZXIuYWRkcmVzcyA9PSB0b2tlbi5hZGRyZXNzOgogICAgICAgIHV0aWwuZGVidWcoJ1JlYnVpbGQgYSBwcm94eSBvd25lZCBieSBtYW5hZ2VyLCB0b2tlbj0lcicsIHRva2VuKQogICAgICAgIGt3ZHNbJ21hbmFnZXJfb3duZWQnXSA9IFRydWUKICAgICAgICBpZiB0b2tlbi5pZCBub3QgaW4gc2VydmVyLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKICAgICAgICAgICAgc2VydmVyLmlkX3RvX2xvY2FsX3Byb3h5X29ialt0b2tlbi5pZF0gPSBcCiAgICAgICAgICAgICAgICBzZXJ2ZXIuaWRfdG9fb2JqW3Rva2VuLmlkXQogICAgaW5jcmVmID0gKAogICAgICAgIGt3ZHMucG9wKCdpbmNyZWYnLCBUcnVlKSBhbmQKICAgICAgICBub3QgZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX2luaGVyaXRpbmcnLCBGYWxzZSkKICAgICAgICApCiAgICByZXR1cm4gZnVuYyh0b2tlbiwgc2VyaWFsaXplciwgaW5jcmVmPWluY3JlZiwgKiprd2RzKQoKIwojIEZ1bmN0aW9ucyB0byBjcmVhdGUgcHJveGllcyBhbmQgcHJveHkgdHlwZXMKIwoKZGVmIE1ha2VQcm94eVR5cGUobmFtZSwgZXhwb3NlZCwgX2NhY2hlPXt9KToKICAgICcnJwogICAgUmV0dXJuIGEgcHJveHkgdHlwZSB3aG9zZSBtZXRob2RzIGFyZSBnaXZlbiBieSBgZXhwb3NlZGAKICAgICcnJwogICAgZXhwb3NlZCA9IHR1cGxlKGV4cG9zZWQpCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIF9jYWNoZVsobmFtZSwgZXhwb3NlZCldCiAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgcGFzcwoKICAgIGRpYyA9IHt9CgogICAgZm9yIG1ldGggaW4gZXhwb3NlZDoKICAgICAgICBleGVjKCcnJ2RlZiAlcyhzZWxmLCAvLCAqYXJncywgKiprd2RzKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCglciwgYXJncywga3dkcyknJycgJSAobWV0aCwgbWV0aCksIGRpYykKCiAgICBQcm94eVR5cGUgPSB0eXBlKG5hbWUsIChCYXNlUHJveHksKSwgZGljKQogICAgUHJveHlUeXBlLl9leHBvc2VkXyA9IGV4cG9zZWQKICAgIF9jYWNoZVsobmFtZSwgZXhwb3NlZCldID0gUHJveHlUeXBlCiAgICByZXR1cm4gUHJveHlUeXBlCgoKZGVmIEF1dG9Qcm94eSh0b2tlbiwgc2VyaWFsaXplciwgbWFuYWdlcj1Ob25lLCBhdXRoa2V5PU5vbmUsCiAgICAgICAgICAgICAgZXhwb3NlZD1Ob25lLCBpbmNyZWY9VHJ1ZSwgbWFuYWdlcl9vd25lZD1GYWxzZSk6CiAgICAnJycKICAgIFJldHVybiBhbiBhdXRvLXByb3h5IGZvciBgdG9rZW5gCiAgICAnJycKICAgIF9DbGllbnQgPSBsaXN0ZW5lcl9jbGllbnRbc2VyaWFsaXplcl1bMV0KCiAgICBpZiBleHBvc2VkIGlzIE5vbmU6CiAgICAgICAgY29ubiA9IF9DbGllbnQodG9rZW4uYWRkcmVzcywgYXV0aGtleT1hdXRoa2V5KQogICAgICAgIHRyeToKICAgICAgICAgICAgZXhwb3NlZCA9IGRpc3BhdGNoKGNvbm4sIE5vbmUsICdnZXRfbWV0aG9kcycsICh0b2tlbiwpKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGNvbm4uY2xvc2UoKQoKICAgIGlmIGF1dGhrZXkgaXMgTm9uZSBhbmQgbWFuYWdlciBpcyBub3QgTm9uZToKICAgICAgICBhdXRoa2V5ID0gbWFuYWdlci5fYXV0aGtleQogICAgaWYgYXV0aGtleSBpcyBOb25lOgogICAgICAgIGF1dGhrZXkgPSBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkKCiAgICBQcm94eVR5cGUgPSBNYWtlUHJveHlUeXBlKCdBdXRvUHJveHlbJXNdJyAlIHRva2VuLnR5cGVpZCwgZXhwb3NlZCkKICAgIHByb3h5ID0gUHJveHlUeXBlKHRva2VuLCBzZXJpYWxpemVyLCBtYW5hZ2VyPW1hbmFnZXIsIGF1dGhrZXk9YXV0aGtleSwKICAgICAgICAgICAgICAgICAgICAgIGluY3JlZj1pbmNyZWYsIG1hbmFnZXJfb3duZWQ9bWFuYWdlcl9vd25lZCkKICAgIHByb3h5Ll9pc2F1dG8gPSBUcnVlCiAgICByZXR1cm4gcHJveHkKCiMKIyBUeXBlcy9jYWxsYWJsZXMgd2hpY2ggd2Ugd2lsbCByZWdpc3RlciB3aXRoIFN5bmNNYW5hZ2VyCiMKCmNsYXNzIE5hbWVzcGFjZShvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIC8sICoqa3dkcyk6CiAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoa3dkcykKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBpdGVtcyA9IGxpc3Qoc2VsZi5fX2RpY3RfXy5pdGVtcygpKQogICAgICAgIHRlbXAgPSBbXQogICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBpdGVtczoKICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnXycpOgogICAgICAgICAgICAgICAgdGVtcC5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCiAgICAgICAgdGVtcC5zb3J0KCkKICAgICAgICByZXR1cm4gJyVzKCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcsICcuam9pbih0ZW1wKSkKCmNsYXNzIFZhbHVlKG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZWNvZGUsIHZhbHVlLCBsb2NrPVRydWUpOgogICAgICAgIHNlbGYuX3R5cGVjb2RlID0gdHlwZWNvZGUKICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbHVlCiAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQogICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWx1ZQogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnJXMoJXIsICVyKSclKHR5cGUoc2VsZikuX19uYW1lX18sIHNlbGYuX3R5cGVjb2RlLCBzZWxmLl92YWx1ZSkKICAgIHZhbHVlID0gcHJvcGVydHkoZ2V0LCBzZXQpCgpkZWYgQXJyYXkodHlwZWNvZGUsIHNlcXVlbmNlLCBsb2NrPVRydWUpOgogICAgcmV0dXJuIGFycmF5LmFycmF5KHR5cGVjb2RlLCBzZXF1ZW5jZSkKCiMKIyBQcm94eSB0eXBlcyB1c2VkIGJ5IFN5bmNNYW5hZ2VyCiMKCmNsYXNzIEl0ZXJhdG9yUHJveHkoQmFzZVByb3h5KToKICAgIF9leHBvc2VkXyA9ICgnX19uZXh0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKICAgIGRlZiBfX25leHRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ19fbmV4dF9fJywgYXJncykKICAgIGRlZiBzZW5kKHNlbGYsICphcmdzKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnc2VuZCcsIGFyZ3MpCiAgICBkZWYgdGhyb3coc2VsZiwgKmFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCd0aHJvdycsIGFyZ3MpCiAgICBkZWYgY2xvc2Uoc2VsZiwgKmFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdjbG9zZScsIGFyZ3MpCgoKY2xhc3MgQWNxdWlyZXJQcm94eShCYXNlUHJveHkpOgogICAgX2V4cG9zZWRfID0gKCdhY3F1aXJlJywgJ3JlbGVhc2UnKQogICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD1Ob25lKToKICAgICAgICBhcmdzID0gKGJsb2NraW5nLCkgaWYgdGltZW91dCBpcyBOb25lIGVsc2UgKGJsb2NraW5nLCB0aW1lb3V0KQogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdhY3F1aXJlJywgYXJncykKICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdyZWxlYXNlJykKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2FjcXVpcmUnKQogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdyZWxlYXNlJykKCgpjbGFzcyBDb25kaXRpb25Qcm94eShBY3F1aXJlclByb3h5KToKICAgIF9leHBvc2VkXyA9ICgnYWNxdWlyZScsICdyZWxlYXNlJywgJ3dhaXQnLCAnbm90aWZ5JywgJ25vdGlmeV9hbGwnKQogICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnd2FpdCcsICh0aW1lb3V0LCkpCiAgICBkZWYgbm90aWZ5KHNlbGYsIG49MSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ25vdGlmeScsIChuLCkpCiAgICBkZWYgbm90aWZ5X2FsbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnbm90aWZ5X2FsbCcpCiAgICBkZWYgd2FpdF9mb3Ioc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0PU5vbmUpOgogICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCiAgICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgZW5kdGltZSA9IHRpbWUubW9ub3RvbmljKCkgKyB0aW1lb3V0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKICAgICAgICAgICAgd2FpdHRpbWUgPSBOb25lCiAgICAgICAgd2hpbGUgbm90IHJlc3VsdDoKICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIHRpbWUubW9ub3RvbmljKCkKICAgICAgICAgICAgICAgIGlmIHdhaXR0aW1lIDw9IDA6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgc2VsZi53YWl0KHdhaXR0aW1lKQogICAgICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQogICAgICAgIHJldHVybiByZXN1bHQKCgpjbGFzcyBFdmVudFByb3h5KEJhc2VQcm94eSk6CiAgICBfZXhwb3NlZF8gPSAoJ2lzX3NldCcsICdzZXQnLCAnY2xlYXInLCAnd2FpdCcpCiAgICBkZWYgaXNfc2V0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdpc19zZXQnKQogICAgZGVmIHNldChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnc2V0JykKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnY2xlYXInKQogICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnd2FpdCcsICh0aW1lb3V0LCkpCgoKY2xhc3MgQmFycmllclByb3h5KEJhc2VQcm94eSk6CiAgICBfZXhwb3NlZF8gPSAoJ19fZ2V0YXR0cmlidXRlX18nLCAnd2FpdCcsICdhYm9ydCcsICdyZXNldCcpCiAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCd3YWl0JywgKHRpbWVvdXQsKSkKICAgIGRlZiBhYm9ydChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnYWJvcnQnKQogICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdyZXNldCcpCiAgICBAcHJvcGVydHkKICAgIGRlZiBwYXJ0aWVzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCdwYXJ0aWVzJywpKQogICAgQHByb3BlcnR5CiAgICBkZWYgbl93YWl0aW5nKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCduX3dhaXRpbmcnLCkpCiAgICBAcHJvcGVydHkKICAgIGRlZiBicm9rZW4oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ19fZ2V0YXR0cmlidXRlX18nLCAoJ2Jyb2tlbicsKSkKCgpjbGFzcyBOYW1lc3BhY2VQcm94eShCYXNlUHJveHkpOgogICAgX2V4cG9zZWRfID0gKCdfX2dldGF0dHJpYnV0ZV9fJywgJ19fc2V0YXR0cl9fJywgJ19fZGVsYXR0cl9fJykKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBrZXkpOgogICAgICAgIGlmIGtleVswXSA9PSAnXyc6CiAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBrZXkpCiAgICAgICAgY2FsbG1ldGhvZCA9IG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsICdfY2FsbG1ldGhvZCcpCiAgICAgICAgcmV0dXJuIGNhbGxtZXRob2QoJ19fZ2V0YXR0cmlidXRlX18nLCAoa2V5LCkpCiAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgaWYga2V5WzBdID09ICdfJzoKICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBrZXksIHZhbHVlKQogICAgICAgIGNhbGxtZXRob2QgPSBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCAnX2NhbGxtZXRob2QnKQogICAgICAgIHJldHVybiBjYWxsbWV0aG9kKCdfX3NldGF0dHJfXycsIChrZXksIHZhbHVlKSkKICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBrZXkpOgogICAgICAgIGlmIGtleVswXSA9PSAnXyc6CiAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19kZWxhdHRyX18oc2VsZiwga2V5KQogICAgICAgIGNhbGxtZXRob2QgPSBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCAnX2NhbGxtZXRob2QnKQogICAgICAgIHJldHVybiBjYWxsbWV0aG9kKCdfX2RlbGF0dHJfXycsIChrZXksKSkKCgpjbGFzcyBWYWx1ZVByb3h5KEJhc2VQcm94eSk6CiAgICBfZXhwb3NlZF8gPSAoJ2dldCcsICdzZXQnKQogICAgZGVmIGdldChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnZ2V0JykKICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgogICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdzZXQnLCAodmFsdWUsKSkKICAgIHZhbHVlID0gcHJvcGVydHkoZ2V0LCBzZXQpCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZCh0eXBlcy5HZW5lcmljQWxpYXMpCgoKQmFzZUxpc3RQcm94eSA9IE1ha2VQcm94eVR5cGUoJ0Jhc2VMaXN0UHJveHknLCAoCiAgICAnX19hZGRfXycsICdfX2NvbnRhaW5zX18nLCAnX19kZWxpdGVtX18nLCAnX19nZXRpdGVtX18nLCAnX19sZW5fXycsCiAgICAnX19tdWxfXycsICdfX3JldmVyc2VkX18nLCAnX19ybXVsX18nLCAnX19zZXRpdGVtX18nLAogICAgJ2FwcGVuZCcsICdjb3VudCcsICdleHRlbmQnLCAnaW5kZXgnLCAnaW5zZXJ0JywgJ3BvcCcsICdyZW1vdmUnLAogICAgJ3JldmVyc2UnLCAnc29ydCcsICdfX2ltdWxfXycKICAgICkpCmNsYXNzIExpc3RQcm94eShCYXNlTGlzdFByb3h5KToKICAgIGRlZiBfX2lhZGRfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5fY2FsbG1ldGhvZCgnZXh0ZW5kJywgKHZhbHVlLCkpCiAgICAgICAgcmV0dXJuIHNlbGYKICAgIGRlZiBfX2ltdWxfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5fY2FsbG1ldGhvZCgnX19pbXVsX18nLCAodmFsdWUsKSkKICAgICAgICByZXR1cm4gc2VsZgoKCkRpY3RQcm94eSA9IE1ha2VQcm94eVR5cGUoJ0RpY3RQcm94eScsICgKICAgICdfX2NvbnRhaW5zX18nLCAnX19kZWxpdGVtX18nLCAnX19nZXRpdGVtX18nLCAnX19pdGVyX18nLCAnX19sZW5fXycsCiAgICAnX19zZXRpdGVtX18nLCAnY2xlYXInLCAnY29weScsICdnZXQnLCAnaXRlbXMnLAogICAgJ2tleXMnLCAncG9wJywgJ3BvcGl0ZW0nLCAnc2V0ZGVmYXVsdCcsICd1cGRhdGUnLCAndmFsdWVzJwogICAgKSkKRGljdFByb3h5Ll9tZXRob2RfdG9fdHlwZWlkXyA9IHsKICAgICdfX2l0ZXJfXyc6ICdJdGVyYXRvcicsCiAgICB9CgoKQXJyYXlQcm94eSA9IE1ha2VQcm94eVR5cGUoJ0FycmF5UHJveHknLCAoCiAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycKICAgICkpCgoKQmFzZVBvb2xQcm94eSA9IE1ha2VQcm94eVR5cGUoJ1Bvb2xQcm94eScsICgKICAgICdhcHBseScsICdhcHBseV9hc3luYycsICdjbG9zZScsICdpbWFwJywgJ2ltYXBfdW5vcmRlcmVkJywgJ2pvaW4nLAogICAgJ21hcCcsICdtYXBfYXN5bmMnLCAnc3Rhcm1hcCcsICdzdGFybWFwX2FzeW5jJywgJ3Rlcm1pbmF0ZScsCiAgICApKQpCYXNlUG9vbFByb3h5Ll9tZXRob2RfdG9fdHlwZWlkXyA9IHsKICAgICdhcHBseV9hc3luYyc6ICdBc3luY1Jlc3VsdCcsCiAgICAnbWFwX2FzeW5jJzogJ0FzeW5jUmVzdWx0JywKICAgICdzdGFybWFwX2FzeW5jJzogJ0FzeW5jUmVzdWx0JywKICAgICdpbWFwJzogJ0l0ZXJhdG9yJywKICAgICdpbWFwX3Vub3JkZXJlZCc6ICdJdGVyYXRvcicKICAgIH0KY2xhc3MgUG9vbFByb3h5KEJhc2VQb29sUHJveHkpOgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgogICAgICAgIHNlbGYudGVybWluYXRlKCkKCiMKIyBEZWZpbml0aW9uIG9mIFN5bmNNYW5hZ2VyCiMKCmNsYXNzIFN5bmNNYW5hZ2VyKEJhc2VNYW5hZ2VyKToKICAgICcnJwogICAgU3ViY2xhc3Mgb2YgYEJhc2VNYW5hZ2VyYCB3aGljaCBzdXBwb3J0cyBhIG51bWJlciBvZiBzaGFyZWQgb2JqZWN0IHR5cGVzLgoKICAgIFRoZSB0eXBlcyByZWdpc3RlcmVkIGFyZSB0aG9zZSBpbnRlbmRlZCBmb3IgdGhlIHN5bmNocm9uaXphdGlvbgogICAgb2YgdGhyZWFkcywgcGx1cyBgZGljdGAsIGBsaXN0YCBhbmQgYE5hbWVzcGFjZWAuCgogICAgVGhlIGBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcigpYCBmdW5jdGlvbiBjcmVhdGVzIHN0YXJ0ZWQgaW5zdGFuY2VzIG9mCiAgICB0aGlzIGNsYXNzLgogICAgJycnCgpTeW5jTWFuYWdlci5yZWdpc3RlcignUXVldWUnLCBxdWV1ZS5RdWV1ZSkKU3luY01hbmFnZXIucmVnaXN0ZXIoJ0pvaW5hYmxlUXVldWUnLCBxdWV1ZS5RdWV1ZSkKU3luY01hbmFnZXIucmVnaXN0ZXIoJ0V2ZW50JywgdGhyZWFkaW5nLkV2ZW50LCBFdmVudFByb3h5KQpTeW5jTWFuYWdlci5yZWdpc3RlcignTG9jaycsIHRocmVhZGluZy5Mb2NrLCBBY3F1aXJlclByb3h5KQpTeW5jTWFuYWdlci5yZWdpc3RlcignUkxvY2snLCB0aHJlYWRpbmcuUkxvY2ssIEFjcXVpcmVyUHJveHkpClN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdTZW1hcGhvcmUnLCB0aHJlYWRpbmcuU2VtYXBob3JlLCBBY3F1aXJlclByb3h5KQpTeW5jTWFuYWdlci5yZWdpc3RlcignQm91bmRlZFNlbWFwaG9yZScsIHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlLAogICAgICAgICAgICAgICAgICAgICBBY3F1aXJlclByb3h5KQpTeW5jTWFuYWdlci5yZWdpc3RlcignQ29uZGl0aW9uJywgdGhyZWFkaW5nLkNvbmRpdGlvbiwgQ29uZGl0aW9uUHJveHkpClN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdCYXJyaWVyJywgdGhyZWFkaW5nLkJhcnJpZXIsIEJhcnJpZXJQcm94eSkKU3luY01hbmFnZXIucmVnaXN0ZXIoJ1Bvb2wnLCBwb29sLlBvb2wsIFBvb2xQcm94eSkKU3luY01hbmFnZXIucmVnaXN0ZXIoJ2xpc3QnLCBsaXN0LCBMaXN0UHJveHkpClN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdkaWN0JywgZGljdCwgRGljdFByb3h5KQpTeW5jTWFuYWdlci5yZWdpc3RlcignVmFsdWUnLCBWYWx1ZSwgVmFsdWVQcm94eSkKU3luY01hbmFnZXIucmVnaXN0ZXIoJ0FycmF5JywgQXJyYXksIEFycmF5UHJveHkpClN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdOYW1lc3BhY2UnLCBOYW1lc3BhY2UsIE5hbWVzcGFjZVByb3h5KQoKIyB0eXBlcyByZXR1cm5lZCBieSBtZXRob2RzIG9mIFBvb2xQcm94eQpTeW5jTWFuYWdlci5yZWdpc3RlcignSXRlcmF0b3InLCBwcm94eXR5cGU9SXRlcmF0b3JQcm94eSwgY3JlYXRlX21ldGhvZD1GYWxzZSkKU3luY01hbmFnZXIucmVnaXN0ZXIoJ0FzeW5jUmVzdWx0JywgY3JlYXRlX21ldGhvZD1GYWxzZSkKCiMKIyBEZWZpbml0aW9uIG9mIFNoYXJlZE1lbW9yeU1hbmFnZXIgYW5kIFNoYXJlZE1lbW9yeVNlcnZlcgojCgppZiBIQVNfU0hNRU06CiAgICBjbGFzcyBfU2hhcmVkTWVtb3J5VHJhY2tlcjoKICAgICAgICAiTWFuYWdlcyBvbmUgb3IgbW9yZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzLiIKCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHNlZ21lbnRfbmFtZXM9W10pOgogICAgICAgICAgICBzZWxmLnNoYXJlZF9tZW1vcnlfY29udGV4dF9uYW1lID0gbmFtZQogICAgICAgICAgICBzZWxmLnNlZ21lbnRfbmFtZXMgPSBzZWdtZW50X25hbWVzCgogICAgICAgIGRlZiByZWdpc3Rlcl9zZWdtZW50KHNlbGYsIHNlZ21lbnRfbmFtZSk6CiAgICAgICAgICAgICJBZGRzIHRoZSBzdXBwbGllZCBzaGFyZWQgbWVtb3J5IGJsb2NrIG5hbWUgdG8gdHJhY2tlci4iCiAgICAgICAgICAgIHV0aWwuZGVidWcoZiJSZWdpc3RlciBzZWdtZW50IHtzZWdtZW50X25hbWUhcn0gaW4gcGlkIHtnZXRwaWQoKX0iKQogICAgICAgICAgICBzZWxmLnNlZ21lbnRfbmFtZXMuYXBwZW5kKHNlZ21lbnRfbmFtZSkKCiAgICAgICAgZGVmIGRlc3Ryb3lfc2VnbWVudChzZWxmLCBzZWdtZW50X25hbWUpOgogICAgICAgICAgICAiIiJDYWxscyB1bmxpbmsoKSBvbiB0aGUgc2hhcmVkIG1lbW9yeSBibG9jayB3aXRoIHRoZSBzdXBwbGllZCBuYW1lCiAgICAgICAgICAgIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIGxpc3Qgb2YgYmxvY2tzIGJlaW5nIHRyYWNrZWQuIiIiCiAgICAgICAgICAgIHV0aWwuZGVidWcoZiJEZXN0cm95IHNlZ21lbnQge3NlZ21lbnRfbmFtZSFyfSBpbiBwaWQge2dldHBpZCgpfSIpCiAgICAgICAgICAgIHNlbGYuc2VnbWVudF9uYW1lcy5yZW1vdmUoc2VnbWVudF9uYW1lKQogICAgICAgICAgICBzZWdtZW50ID0gc2hhcmVkX21lbW9yeS5TaGFyZWRNZW1vcnkoc2VnbWVudF9uYW1lKQogICAgICAgICAgICBzZWdtZW50LmNsb3NlKCkKICAgICAgICAgICAgc2VnbWVudC51bmxpbmsoKQoKICAgICAgICBkZWYgdW5saW5rKHNlbGYpOgogICAgICAgICAgICAiQ2FsbHMgZGVzdHJveV9zZWdtZW50KCkgb24gYWxsIHRyYWNrZWQgc2hhcmVkIG1lbW9yeSBibG9ja3MuIgogICAgICAgICAgICBmb3Igc2VnbWVudF9uYW1lIGluIHNlbGYuc2VnbWVudF9uYW1lc1s6XToKICAgICAgICAgICAgICAgIHNlbGYuZGVzdHJveV9zZWdtZW50KHNlZ21lbnRfbmFtZSkKCiAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgIHV0aWwuZGVidWcoZiJDYWxsIHtzZWxmLl9fY2xhc3NfXy5fX25hbWVfX30uX19kZWxfXyBpbiB7Z2V0cGlkKCl9IikKICAgICAgICAgICAgc2VsZi51bmxpbmsoKQoKICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gKHNlbGYuc2hhcmVkX21lbW9yeV9jb250ZXh0X25hbWUsIHNlbGYuc2VnbWVudF9uYW1lcykKCiAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgICAgIHNlbGYuX19pbml0X18oKnN0YXRlKQoKCiAgICBjbGFzcyBTaGFyZWRNZW1vcnlTZXJ2ZXIoU2VydmVyKToKCiAgICAgICAgcHVibGljID0gU2VydmVyLnB1YmxpYyArIFwKICAgICAgICAgICAgICAgICBbJ3RyYWNrX3NlZ21lbnQnLCAncmVsZWFzZV9zZWdtZW50JywgJ2xpc3Rfc2VnbWVudHMnXQoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAgU2VydmVyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgYWRkcmVzcyA9IHNlbGYuYWRkcmVzcwogICAgICAgICAgICAjIFRoZSBhZGRyZXNzIG9mIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZXMgY2FuIGJlIGJ5dGVzCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgogICAgICAgICAgICAgICAgYWRkcmVzcyA9IG9zLmZzZGVjb2RlKGFkZHJlc3MpCiAgICAgICAgICAgIHNlbGYuc2hhcmVkX21lbW9yeV9jb250ZXh0ID0gXAogICAgICAgICAgICAgICAgX1NoYXJlZE1lbW9yeVRyYWNrZXIoZiJzaG1fe2FkZHJlc3N9X3tnZXRwaWQoKX0iKQogICAgICAgICAgICB1dGlsLmRlYnVnKGYiU2hhcmVkTWVtb3J5U2VydmVyIHN0YXJ0ZWQgYnkgcGlkIHtnZXRwaWQoKX0iKQoKICAgICAgICBkZWYgY3JlYXRlKHNlbGYsIGMsIHR5cGVpZCwgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGRpc3RyaWJ1dGVkLXNoYXJlZCBvYmplY3QgKG5vdCBiYWNrZWQgYnkgYSBzaGFyZWQKICAgICAgICAgICAgbWVtb3J5IGJsb2NrKSBhbmQgcmV0dXJuIGl0cyBpZCB0byBiZSB1c2VkIGluIGEgUHJveHkgT2JqZWN0LiIiIgogICAgICAgICAgICAjIFVubGVzcyBzZXQgdXAgYXMgYSBzaGFyZWQgcHJveHksIGRvbid0IG1ha2Ugc2hhcmVkX21lbW9yeV9jb250ZXh0CiAgICAgICAgICAgICMgYSBzdGFuZGFyZCBwYXJ0IG9mIGt3YXJncy4gIFRoaXMgbWFrZXMgdGhpbmdzIGVhc2llciBmb3Igc3VwcGx5aW5nCiAgICAgICAgICAgICMgc2ltcGxlIGZ1bmN0aW9ucy4KICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnJlZ2lzdHJ5W3R5cGVpZF1bLTFdLCAiX3NoYXJlZF9tZW1vcnlfcHJveHkiKToKICAgICAgICAgICAgICAgIGt3YXJnc1snc2hhcmVkX21lbW9yeV9jb250ZXh0J10gPSBzZWxmLnNoYXJlZF9tZW1vcnlfY29udGV4dAogICAgICAgICAgICByZXR1cm4gU2VydmVyLmNyZWF0ZShzZWxmLCBjLCB0eXBlaWQsICphcmdzLCAqKmt3YXJncykKCiAgICAgICAgZGVmIHNodXRkb3duKHNlbGYsIGMpOgogICAgICAgICAgICAiQ2FsbCB1bmxpbmsoKSBvbiBhbGwgdHJhY2tlZCBzaGFyZWQgbWVtb3J5LCB0ZXJtaW5hdGUgdGhlIFNlcnZlci4iCiAgICAgICAgICAgIHNlbGYuc2hhcmVkX21lbW9yeV9jb250ZXh0LnVubGluaygpCiAgICAgICAgICAgIHJldHVybiBTZXJ2ZXIuc2h1dGRvd24oc2VsZiwgYykKCiAgICAgICAgZGVmIHRyYWNrX3NlZ21lbnQoc2VsZiwgYywgc2VnbWVudF9uYW1lKToKICAgICAgICAgICAgIkFkZHMgdGhlIHN1cHBsaWVkIHNoYXJlZCBtZW1vcnkgYmxvY2sgbmFtZSB0byBTZXJ2ZXIncyB0cmFja2VyLiIKICAgICAgICAgICAgc2VsZi5zaGFyZWRfbWVtb3J5X2NvbnRleHQucmVnaXN0ZXJfc2VnbWVudChzZWdtZW50X25hbWUpCgogICAgICAgIGRlZiByZWxlYXNlX3NlZ21lbnQoc2VsZiwgYywgc2VnbWVudF9uYW1lKToKICAgICAgICAgICAgIiIiQ2FsbHMgdW5saW5rKCkgb24gdGhlIHNoYXJlZCBtZW1vcnkgYmxvY2sgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZQogICAgICAgICAgICBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSB0cmFja2VyIGluc3RhbmNlIGluc2lkZSB0aGUgU2VydmVyLiIiIgogICAgICAgICAgICBzZWxmLnNoYXJlZF9tZW1vcnlfY29udGV4dC5kZXN0cm95X3NlZ21lbnQoc2VnbWVudF9uYW1lKQoKICAgICAgICBkZWYgbGlzdF9zZWdtZW50cyhzZWxmLCBjKToKICAgICAgICAgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgbmFtZXMgb2Ygc2hhcmVkIG1lbW9yeSBibG9ja3MgdGhhdCB0aGUgU2VydmVyCiAgICAgICAgICAgIGlzIGN1cnJlbnRseSB0cmFja2luZy4iIiIKICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2hhcmVkX21lbW9yeV9jb250ZXh0LnNlZ21lbnRfbmFtZXMKCgogICAgY2xhc3MgU2hhcmVkTWVtb3J5TWFuYWdlcihCYXNlTWFuYWdlcik6CiAgICAgICAgIiIiTGlrZSBTeW5jTWFuYWdlciBidXQgdXNlcyBTaGFyZWRNZW1vcnlTZXJ2ZXIgaW5zdGVhZCBvZiBTZXJ2ZXIuCgogICAgICAgIEl0IHByb3ZpZGVzIG1ldGhvZHMgZm9yIGNyZWF0aW5nIGFuZCByZXR1cm5pbmcgU2hhcmVkTWVtb3J5IGluc3RhbmNlcwogICAgICAgIGFuZCBmb3IgY3JlYXRpbmcgYSBsaXN0LWxpa2Ugb2JqZWN0IChTaGFyZWFibGVMaXN0KSBiYWNrZWQgYnkgc2hhcmVkCiAgICAgICAgbWVtb3J5LiAgSXQgYWxzbyBwcm92aWRlcyBtZXRob2RzIHRoYXQgY3JlYXRlIGFuZCByZXR1cm4gUHJveHkgT2JqZWN0cwogICAgICAgIHRoYXQgc3VwcG9ydCBzeW5jaHJvbml6YXRpb24gYWNyb3NzIHByb2Nlc3NlcyAoaS5lLiBtdWx0aS1wcm9jZXNzLXNhZmUKICAgICAgICBsb2NrcyBhbmQgc2VtYXBob3JlcykuCiAgICAgICAgIiIiCgogICAgICAgIF9TZXJ2ZXIgPSBTaGFyZWRNZW1vcnlTZXJ2ZXIKCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKICAgICAgICAgICAgICAgICMgYnBvLTM2ODY3OiBFbnN1cmUgdGhlIHJlc291cmNlX3RyYWNrZXIgaXMgcnVubmluZyBiZWZvcmUKICAgICAgICAgICAgICAgICMgbGF1bmNoaW5nIHRoZSBtYW5hZ2VyIHByb2Nlc3MsIHNvIHRoYXQgY29uY3VycmVudAogICAgICAgICAgICAgICAgIyBzaGFyZWRfbWVtb3J5IG1hbmlwdWxhdGlvbiBib3RoIGluIHRoZSBtYW5hZ2VyIGFuZCBpbiB0aGUKICAgICAgICAgICAgICAgICMgY3VycmVudCBwcm9jZXNzIGRvZXMgbm90IGNyZWF0ZSB0d28gcmVzb3VyY2VfdHJhY2tlcgogICAgICAgICAgICAgICAgIyBwcm9jZXNzZXMuCiAgICAgICAgICAgICAgICBmcm9tIC4gaW1wb3J0IHJlc291cmNlX3RyYWNrZXIKICAgICAgICAgICAgICAgIHJlc291cmNlX3RyYWNrZXIuZW5zdXJlX3J1bm5pbmcoKQogICAgICAgICAgICBCYXNlTWFuYWdlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgICAgIHV0aWwuZGVidWcoZiJ7c2VsZi5fX2NsYXNzX18uX19uYW1lX199IGNyZWF0ZWQgYnkgcGlkIHtnZXRwaWQoKX0iKQoKICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgdXRpbC5kZWJ1ZyhmIntzZWxmLl9fY2xhc3NfXy5fX25hbWVfX30uX19kZWxfXyBieSBwaWQge2dldHBpZCgpfSIpCgogICAgICAgIGRlZiBnZXRfc2VydmVyKHNlbGYpOgogICAgICAgICAgICAnQmV0dGVyIHRoYW4gbW9ua2V5cGF0Y2hpbmcgZm9yIG5vdzsgbWVyZ2UgaW50byBTZXJ2ZXIgdWx0aW1hdGVseScKICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUudmFsdWUgIT0gU3RhdGUuSU5JVElBTDoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLlNUQVJURUQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgUHJvY2Vzc0Vycm9yKCJBbHJlYWR5IHN0YXJ0ZWQgU2hhcmVkTWVtb3J5U2VydmVyIikKICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fc3RhdGUudmFsdWUgPT0gU3RhdGUuU0hVVERPV046CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgUHJvY2Vzc0Vycm9yKCJTaGFyZWRNZW1vcnlNYW5hZ2VyIGhhcyBzaHV0IGRvd24iKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBQcm9jZXNzRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIHN0YXRlIHshcn0iLmZvcm1hdChzZWxmLl9zdGF0ZS52YWx1ZSkpCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9TZXJ2ZXIoc2VsZi5fcmVnaXN0cnksIHNlbGYuX2FkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXV0aGtleSwgc2VsZi5fc2VyaWFsaXplcikKCiAgICAgICAgZGVmIFNoYXJlZE1lbW9yeShzZWxmLCBzaXplKToKICAgICAgICAgICAgIiIiUmV0dXJucyBhIG5ldyBTaGFyZWRNZW1vcnkgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHNpemUgaW4KICAgICAgICAgICAgYnl0ZXMsIHRvIGJlIHRyYWNrZWQgYnkgdGhlIG1hbmFnZXIuIiIiCiAgICAgICAgICAgIHdpdGggc2VsZi5fQ2xpZW50KHNlbGYuX2FkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkgYXMgY29ubjoKICAgICAgICAgICAgICAgIHNtcyA9IHNoYXJlZF9tZW1vcnkuU2hhcmVkTWVtb3J5KE5vbmUsIGNyZWF0ZT1UcnVlLCBzaXplPXNpemUpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goY29ubiwgTm9uZSwgJ3RyYWNrX3NlZ21lbnQnLCAoc21zLm5hbWUsKSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgc21zLnVubGluaygpCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQogICAgICAgICAgICByZXR1cm4gc21zCgogICAgICAgIGRlZiBTaGFyZWFibGVMaXN0KHNlbGYsIHNlcXVlbmNlKToKICAgICAgICAgICAgIiIiUmV0dXJucyBhIG5ldyBTaGFyZWFibGVMaXN0IGluc3RhbmNlIHBvcHVsYXRlZCB3aXRoIHRoZSB2YWx1ZXMKICAgICAgICAgICAgZnJvbSB0aGUgaW5wdXQgc2VxdWVuY2UsIHRvIGJlIHRyYWNrZWQgYnkgdGhlIG1hbmFnZXIuIiIiCiAgICAgICAgICAgIHdpdGggc2VsZi5fQ2xpZW50KHNlbGYuX2FkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkgYXMgY29ubjoKICAgICAgICAgICAgICAgIHNsID0gc2hhcmVkX21lbW9yeS5TaGFyZWFibGVMaXN0KHNlcXVlbmNlKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKGNvbm4sIE5vbmUsICd0cmFja19zZWdtZW50JywgKHNsLnNobS5uYW1lLCkpCiAgICAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgIHNsLnNobS51bmxpbmsoKQogICAgICAgICAgICAgICAgICAgIHJhaXNlIGUKICAgICAgICAgICAgcmV0dXJuIHNsClBLAwQUAAAAAAADIKNWZCKTmPd/AAD3fwAAFwAAAG11bHRpcHJvY2Vzc2luZy9wb29sLnB5IwojIE1vZHVsZSBwcm92aWRpbmcgdGhlIGBQb29sYCBjbGFzcyBmb3IgbWFuYWdpbmcgYSBwcm9jZXNzIHBvb2wKIwojIG11bHRpcHJvY2Vzc2luZy9wb29sLnB5CiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgojCgpfX2FsbF9fID0gWydQb29sJywgJ1RocmVhZFBvb2wnXQoKIwojIEltcG9ydHMKIwoKaW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCBpdGVydG9vbHMKaW1wb3J0IG9zCmltcG9ydCBxdWV1ZQppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCB0aW1lCmltcG9ydCB0cmFjZWJhY2sKaW1wb3J0IHR5cGVzCmltcG9ydCB3YXJuaW5ncwoKIyBJZiB0aHJlYWRpbmcgaXMgYXZhaWxhYmxlIHRoZW4gVGhyZWFkUG9vbCBzaG91bGQgYmUgcHJvdmlkZWQuICBUaGVyZWZvcmUKIyB3ZSBhdm9pZCB0b3AtbGV2ZWwgaW1wb3J0cyB3aGljaCBhcmUgbGlhYmxlIHRvIGZhaWwgb24gc29tZSBzeXN0ZW1zLgpmcm9tIC4gaW1wb3J0IHV0aWwKZnJvbSAuIGltcG9ydCBnZXRfY29udGV4dCwgVGltZW91dEVycm9yCmZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKCiMKIyBDb25zdGFudHMgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSBvZiBhIHBvb2wKIwoKSU5JVCA9ICJJTklUIgpSVU4gPSAiUlVOIgpDTE9TRSA9ICJDTE9TRSIKVEVSTUlOQVRFID0gIlRFUk1JTkFURSIKCiMKIyBNaXNjZWxsYW5lb3VzCiMKCmpvYl9jb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KCkKCmRlZiBtYXBzdGFyKGFyZ3MpOgogICAgcmV0dXJuIGxpc3QobWFwKCphcmdzKSkKCmRlZiBzdGFybWFwc3RhcihhcmdzKToKICAgIHJldHVybiBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKGFyZ3NbMF0sIGFyZ3NbMV0pKQoKIwojIEhhY2sgdG8gZW1iZWQgc3RyaW5naWZpY2F0aW9uIG9mIHJlbW90ZSB0cmFjZWJhY2sgaW4gbG9jYWwgdHJhY2ViYWNrCiMKCmNsYXNzIFJlbW90ZVRyYWNlYmFjayhFeGNlcHRpb24pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRiKToKICAgICAgICBzZWxmLnRiID0gdGIKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnRiCgpjbGFzcyBFeGNlcHRpb25XaXRoVHJhY2ViYWNrOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4YywgdGIpOgogICAgICAgIHRiID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24odHlwZShleGMpLCBleGMsIHRiKQogICAgICAgIHRiID0gJycuam9pbih0YikKICAgICAgICBzZWxmLmV4YyA9IGV4YwogICAgICAgIHNlbGYudGIgPSAnXG4iIiJcbiVzIiIiJyAlIHRiCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gcmVidWlsZF9leGMsIChzZWxmLmV4Yywgc2VsZi50YikKCmRlZiByZWJ1aWxkX2V4YyhleGMsIHRiKToKICAgIGV4Yy5fX2NhdXNlX18gPSBSZW1vdGVUcmFjZWJhY2sodGIpCiAgICByZXR1cm4gZXhjCgojCiMgQ29kZSBydW4gYnkgd29ya2VyIHByb2Nlc3NlcwojCgpjbGFzcyBNYXliZUVuY29kaW5nRXJyb3IoRXhjZXB0aW9uKToKICAgICIiIldyYXBzIHBvc3NpYmxlIHVucGlja2xlYWJsZSBlcnJvcnMsIHNvIHRoZXkgY2FuIGJlCiAgICBzYWZlbHkgc2VudCB0aHJvdWdoIHRoZSBzb2NrZXQuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4YywgdmFsdWUpOgogICAgICAgIHNlbGYuZXhjID0gcmVwcihleGMpCiAgICAgICAgc2VsZi52YWx1ZSA9IHJlcHIodmFsdWUpCiAgICAgICAgc3VwZXIoTWF5YmVFbmNvZGluZ0Vycm9yLCBzZWxmKS5fX2luaXRfXyhzZWxmLmV4Yywgc2VsZi52YWx1ZSkKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIkVycm9yIHNlbmRpbmcgcmVzdWx0OiAnJXMnLiBSZWFzb246ICclcyciICUgKHNlbGYudmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4YykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8JXM6ICVzPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCgoKZGVmIHdvcmtlcihpbnF1ZXVlLCBvdXRxdWV1ZSwgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCksIG1heHRhc2tzPU5vbmUsCiAgICAgICAgICAgd3JhcF9leGNlcHRpb249RmFsc2UpOgogICAgaWYgKG1heHRhc2tzIGlzIG5vdCBOb25lKSBhbmQgbm90IChpc2luc3RhbmNlKG1heHRhc2tzLCBpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtYXh0YXNrcyA+PSAxKToKICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiTWF4dGFza3MgeyFyfSBpcyBub3QgdmFsaWQiLmZvcm1hdChtYXh0YXNrcykpCiAgICBwdXQgPSBvdXRxdWV1ZS5wdXQKICAgIGdldCA9IGlucXVldWUuZ2V0CiAgICBpZiBoYXNhdHRyKGlucXVldWUsICdfd3JpdGVyJyk6CiAgICAgICAgaW5xdWV1ZS5fd3JpdGVyLmNsb3NlKCkKICAgICAgICBvdXRxdWV1ZS5fcmVhZGVyLmNsb3NlKCkKCiAgICBpZiBpbml0aWFsaXplciBpcyBub3QgTm9uZToKICAgICAgICBpbml0aWFsaXplcigqaW5pdGFyZ3MpCgogICAgY29tcGxldGVkID0gMAogICAgd2hpbGUgbWF4dGFza3MgaXMgTm9uZSBvciAobWF4dGFza3MgYW5kIGNvbXBsZXRlZCA8IG1heHRhc2tzKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHRhc2sgPSBnZXQoKQogICAgICAgIGV4Y2VwdCAoRU9GRXJyb3IsIE9TRXJyb3IpOgogICAgICAgICAgICB1dGlsLmRlYnVnKCd3b3JrZXIgZ290IEVPRkVycm9yIG9yIE9TRXJyb3IgLS0gZXhpdGluZycpCiAgICAgICAgICAgIGJyZWFrCgogICAgICAgIGlmIHRhc2sgaXMgTm9uZToKICAgICAgICAgICAgdXRpbC5kZWJ1Zygnd29ya2VyIGdvdCBzZW50aW5lbCAtLSBleGl0aW5nJykKICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgam9iLCBpLCBmdW5jLCBhcmdzLCBrd2RzID0gdGFzawogICAgICAgIHRyeToKICAgICAgICAgICAgcmVzdWx0ID0gKFRydWUsIGZ1bmMoKmFyZ3MsICoqa3dkcykpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBpZiB3cmFwX2V4Y2VwdGlvbiBhbmQgZnVuYyBpcyBub3QgX2hlbHBlcl9yZXJhaXNlc19leGNlcHRpb246CiAgICAgICAgICAgICAgICBlID0gRXhjZXB0aW9uV2l0aFRyYWNlYmFjayhlLCBlLl9fdHJhY2ViYWNrX18pCiAgICAgICAgICAgIHJlc3VsdCA9IChGYWxzZSwgZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHB1dCgoam9iLCBpLCByZXN1bHQpKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgd3JhcHBlZCA9IE1heWJlRW5jb2RpbmdFcnJvcihlLCByZXN1bHRbMV0pCiAgICAgICAgICAgIHV0aWwuZGVidWcoIlBvc3NpYmxlIGVuY29kaW5nIGVycm9yIHdoaWxlIHNlbmRpbmcgcmVzdWx0OiAlcyIgJSAoCiAgICAgICAgICAgICAgICB3cmFwcGVkKSkKICAgICAgICAgICAgcHV0KChqb2IsIGksIChGYWxzZSwgd3JhcHBlZCkpKQoKICAgICAgICB0YXNrID0gam9iID0gcmVzdWx0ID0gZnVuYyA9IGFyZ3MgPSBrd2RzID0gTm9uZQogICAgICAgIGNvbXBsZXRlZCArPSAxCiAgICB1dGlsLmRlYnVnKCd3b3JrZXIgZXhpdGluZyBhZnRlciAlZCB0YXNrcycgJSBjb21wbGV0ZWQpCgpkZWYgX2hlbHBlcl9yZXJhaXNlc19leGNlcHRpb24oZXgpOgogICAgJ1BpY2tsZS1hYmxlIGhlbHBlciBmdW5jdGlvbiBmb3IgdXNlIGJ5IF9ndWFyZGVkX3Rhc2tfZ2VuZXJhdGlvbi4nCiAgICByYWlzZSBleAoKIwojIENsYXNzIHJlcHJlc2VudGluZyBhIHByb2Nlc3MgcG9vbAojCgpjbGFzcyBfUG9vbENhY2hlKGRpY3QpOgogICAgIiIiCiAgICBDbGFzcyB0aGF0IGltcGxlbWVudHMgYSBjYWNoZSBmb3IgdGhlIFBvb2wgY2xhc3MgdGhhdCB3aWxsIG5vdGlmeQogICAgdGhlIHBvb2wgbWFuYWdlbWVudCB0aHJlYWRzIGV2ZXJ5IHRpbWUgdGhlIGNhY2hlIGlzIGVtcHRpZWQuIFRoZQogICAgbm90aWZpY2F0aW9uIGlzIGRvbmUgYnkgdGhlIHVzZSBvZiBhIHF1ZXVlIHRoYXQgaXMgcHJvdmlkZWQgd2hlbgogICAgaW5zdGFudGlhdGluZyB0aGUgY2FjaGUuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAvLCAqYXJncywgbm90aWZpZXI9Tm9uZSwgKiprd2RzKToKICAgICAgICBzZWxmLm5vdGlmaWVyID0gbm90aWZpZXIKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3ZHMpCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGl0ZW0pOgogICAgICAgIHN1cGVyKCkuX19kZWxpdGVtX18oaXRlbSkKCiAgICAgICAgIyBOb3RpZnkgdGhhdCB0aGUgY2FjaGUgaXMgZW1wdHkuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlCiAgICAgICAgIyBwb29sIGtlZXBzIG1haW50YWluaW5nIHdvcmtlcnMgdW50aWwgdGhlIGNhY2hlIGdldHMgZHJhaW5lZC4gVGhpcwogICAgICAgICMgZWxpbWluYXRlcyBhIHJhY2UgY29uZGl0aW9uIGluIHdoaWNoIGEgdGFzayBpcyBmaW5pc2hlZCBhZnRlciB0aGUKICAgICAgICAjIHRoZSBwb29sJ3MgX2hhbmRsZV93b3JrZXJzIG1ldGhvZCBoYXMgZW50ZXIgYW5vdGhlciBpdGVyYXRpb24gb2YgdGhlCiAgICAgICAgIyBsb29wLiBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIG9ubHkgZXZlbnQgdGhhdCBjYW4gd2FrZSB1cCB0aGUgcG9vbAogICAgICAgICMgaXMgdGhlIGNhY2hlIHRvIGJlIGVtcHRpZWQgKG5vIG1vcmUgdGFza3MgYXZhaWxhYmxlKS4KICAgICAgICBpZiBub3Qgc2VsZjoKICAgICAgICAgICAgc2VsZi5ub3RpZmllci5wdXQoTm9uZSkKCmNsYXNzIFBvb2wob2JqZWN0KToKICAgICcnJwogICAgQ2xhc3Mgd2hpY2ggc3VwcG9ydHMgYW4gYXN5bmMgdmVyc2lvbiBvZiBhcHBseWluZyBmdW5jdGlvbnMgdG8gYXJndW1lbnRzLgogICAgJycnCiAgICBfd3JhcF9leGNlcHRpb24gPSBUcnVlCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIFByb2Nlc3MoY3R4LCAqYXJncywgKiprd2RzKToKICAgICAgICByZXR1cm4gY3R4LlByb2Nlc3MoKmFyZ3MsICoqa3dkcykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvY2Vzc2VzPU5vbmUsIGluaXRpYWxpemVyPU5vbmUsIGluaXRhcmdzPSgpLAogICAgICAgICAgICAgICAgIG1heHRhc2tzcGVyY2hpbGQ9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAjIEF0dHJpYnV0ZXMgaW5pdGlhbGl6ZWQgZWFybHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBleGlzdCBpbgogICAgICAgICMgX19kZWxfXygpIGlmIF9faW5pdF9fKCkgcmFpc2VzIGFuIGV4Y2VwdGlvbgogICAgICAgIHNlbGYuX3Bvb2wgPSBbXQogICAgICAgIHNlbGYuX3N0YXRlID0gSU5JVAoKICAgICAgICBzZWxmLl9jdHggPSBjb250ZXh0IG9yIGdldF9jb250ZXh0KCkKICAgICAgICBzZWxmLl9zZXR1cF9xdWV1ZXMoKQogICAgICAgIHNlbGYuX3Rhc2txdWV1ZSA9IHF1ZXVlLlNpbXBsZVF1ZXVlKCkKICAgICAgICAjIFRoZSBfY2hhbmdlX25vdGlmaWVyIHF1ZXVlIGV4aXN0IHRvIHdha2UgdXAgc2VsZi5faGFuZGxlX3dvcmtlcnMoKQogICAgICAgICMgd2hlbiB0aGUgY2FjaGUgKHNlbGYuX2NhY2hlKSBpcyBlbXB0eSBvciB3aGVuIHRoZXJlIGlzIGEgY2hhbmdlIGluCiAgICAgICAgIyB0aGUgX3N0YXRlIHZhcmlhYmxlIG9mIHRoZSB0aHJlYWQgdGhhdCBydW5zIF9oYW5kbGVfd29ya2Vycy4KICAgICAgICBzZWxmLl9jaGFuZ2Vfbm90aWZpZXIgPSBzZWxmLl9jdHguU2ltcGxlUXVldWUoKQogICAgICAgIHNlbGYuX2NhY2hlID0gX1Bvb2xDYWNoZShub3RpZmllcj1zZWxmLl9jaGFuZ2Vfbm90aWZpZXIpCiAgICAgICAgc2VsZi5fbWF4dGFza3NwZXJjaGlsZCA9IG1heHRhc2tzcGVyY2hpbGQKICAgICAgICBzZWxmLl9pbml0aWFsaXplciA9IGluaXRpYWxpemVyCiAgICAgICAgc2VsZi5faW5pdGFyZ3MgPSBpbml0YXJncwoKICAgICAgICBpZiBwcm9jZXNzZXMgaXMgTm9uZToKICAgICAgICAgICAgcHJvY2Vzc2VzID0gb3MuY3B1X2NvdW50KCkgb3IgMQogICAgICAgIGlmIHByb2Nlc3NlcyA8IDE6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk51bWJlciBvZiBwcm9jZXNzZXMgbXVzdCBiZSBhdCBsZWFzdCAxIikKICAgICAgICBpZiBtYXh0YXNrc3BlcmNoaWxkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtYXh0YXNrc3BlcmNoaWxkLCBpbnQpIG9yIG1heHRhc2tzcGVyY2hpbGQgPD0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1heHRhc2tzcGVyY2hpbGQgbXVzdCBiZSBhIHBvc2l0aXZlIGludCBvciBOb25lIikKCiAgICAgICAgaWYgaW5pdGlhbGl6ZXIgaXMgbm90IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShpbml0aWFsaXplcik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignaW5pdGlhbGl6ZXIgbXVzdCBiZSBhIGNhbGxhYmxlJykKCiAgICAgICAgc2VsZi5fcHJvY2Vzc2VzID0gcHJvY2Vzc2VzCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9yZXBvcHVsYXRlX3Bvb2woKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIGZvciBwIGluIHNlbGYuX3Bvb2w6CiAgICAgICAgICAgICAgICBpZiBwLmV4aXRjb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcC50ZXJtaW5hdGUoKQogICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9wb29sOgogICAgICAgICAgICAgICAgcC5qb2luKCkKICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgc2VudGluZWxzID0gc2VsZi5fZ2V0X3NlbnRpbmVscygpCgogICAgICAgIHNlbGYuX3dvcmtlcl9oYW5kbGVyID0gdGhyZWFkaW5nLlRocmVhZCgKICAgICAgICAgICAgdGFyZ2V0PVBvb2wuX2hhbmRsZV93b3JrZXJzLAogICAgICAgICAgICBhcmdzPShzZWxmLl9jYWNoZSwgc2VsZi5fdGFza3F1ZXVlLCBzZWxmLl9jdHgsIHNlbGYuUHJvY2VzcywKICAgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc2VzLCBzZWxmLl9wb29sLCBzZWxmLl9pbnF1ZXVlLCBzZWxmLl9vdXRxdWV1ZSwKICAgICAgICAgICAgICAgICAgc2VsZi5faW5pdGlhbGl6ZXIsIHNlbGYuX2luaXRhcmdzLCBzZWxmLl9tYXh0YXNrc3BlcmNoaWxkLAogICAgICAgICAgICAgICAgICBzZWxmLl93cmFwX2V4Y2VwdGlvbiwgc2VudGluZWxzLCBzZWxmLl9jaGFuZ2Vfbm90aWZpZXIpCiAgICAgICAgICAgICkKICAgICAgICBzZWxmLl93b3JrZXJfaGFuZGxlci5kYWVtb24gPSBUcnVlCiAgICAgICAgc2VsZi5fd29ya2VyX2hhbmRsZXIuX3N0YXRlID0gUlVOCiAgICAgICAgc2VsZi5fd29ya2VyX2hhbmRsZXIuc3RhcnQoKQoKCiAgICAgICAgc2VsZi5fdGFza19oYW5kbGVyID0gdGhyZWFkaW5nLlRocmVhZCgKICAgICAgICAgICAgdGFyZ2V0PVBvb2wuX2hhbmRsZV90YXNrcywKICAgICAgICAgICAgYXJncz0oc2VsZi5fdGFza3F1ZXVlLCBzZWxmLl9xdWlja19wdXQsIHNlbGYuX291dHF1ZXVlLAogICAgICAgICAgICAgICAgICBzZWxmLl9wb29sLCBzZWxmLl9jYWNoZSkKICAgICAgICAgICAgKQogICAgICAgIHNlbGYuX3Rhc2tfaGFuZGxlci5kYWVtb24gPSBUcnVlCiAgICAgICAgc2VsZi5fdGFza19oYW5kbGVyLl9zdGF0ZSA9IFJVTgogICAgICAgIHNlbGYuX3Rhc2tfaGFuZGxlci5zdGFydCgpCgogICAgICAgIHNlbGYuX3Jlc3VsdF9oYW5kbGVyID0gdGhyZWFkaW5nLlRocmVhZCgKICAgICAgICAgICAgdGFyZ2V0PVBvb2wuX2hhbmRsZV9yZXN1bHRzLAogICAgICAgICAgICBhcmdzPShzZWxmLl9vdXRxdWV1ZSwgc2VsZi5fcXVpY2tfZ2V0LCBzZWxmLl9jYWNoZSkKICAgICAgICAgICAgKQogICAgICAgIHNlbGYuX3Jlc3VsdF9oYW5kbGVyLmRhZW1vbiA9IFRydWUKICAgICAgICBzZWxmLl9yZXN1bHRfaGFuZGxlci5fc3RhdGUgPSBSVU4KICAgICAgICBzZWxmLl9yZXN1bHRfaGFuZGxlci5zdGFydCgpCgogICAgICAgIHNlbGYuX3Rlcm1pbmF0ZSA9IHV0aWwuRmluYWxpemUoCiAgICAgICAgICAgIHNlbGYsIHNlbGYuX3Rlcm1pbmF0ZV9wb29sLAogICAgICAgICAgICBhcmdzPShzZWxmLl90YXNrcXVldWUsIHNlbGYuX2lucXVldWUsIHNlbGYuX291dHF1ZXVlLCBzZWxmLl9wb29sLAogICAgICAgICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfbm90aWZpZXIsIHNlbGYuX3dvcmtlcl9oYW5kbGVyLCBzZWxmLl90YXNrX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdF9oYW5kbGVyLCBzZWxmLl9jYWNoZSksCiAgICAgICAgICAgIGV4aXRwcmlvcml0eT0xNQogICAgICAgICAgICApCiAgICAgICAgc2VsZi5fc3RhdGUgPSBSVU4KCiAgICAjIENvcHkgZ2xvYmFscyBhcyBmdW5jdGlvbiBsb2NhbHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBhcmUgYXZhaWxhYmxlCiAgICAjIGR1cmluZyBQeXRob24gc2h1dGRvd24gd2hlbiB0aGUgUG9vbCBpcyBkZXN0cm95ZWQuCiAgICBkZWYgX19kZWxfXyhzZWxmLCBfd2Fybj13YXJuaW5ncy53YXJuLCBSVU49UlVOKToKICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBSVU46CiAgICAgICAgICAgIF93YXJuKGYidW5jbG9zZWQgcnVubmluZyBtdWx0aXByb2Nlc3NpbmcgcG9vbCB7c2VsZiFyfSIsCiAgICAgICAgICAgICAgICAgIFJlc291cmNlV2FybmluZywgc291cmNlPXNlbGYpCiAgICAgICAgICAgIGlmIGdldGF0dHIoc2VsZiwgJ19jaGFuZ2Vfbm90aWZpZXInLCBOb25lKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZV9ub3RpZmllci5wdXQoTm9uZSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KICAgICAgICByZXR1cm4gKGYnPHtjbHMuX19tb2R1bGVfX30ue2Nscy5fX3F1YWxuYW1lX199ICcKICAgICAgICAgICAgICAgIGYnc3RhdGU9e3NlbGYuX3N0YXRlfSAnCiAgICAgICAgICAgICAgICBmJ3Bvb2xfc2l6ZT17bGVuKHNlbGYuX3Bvb2wpfT4nKQoKICAgIGRlZiBfZ2V0X3NlbnRpbmVscyhzZWxmKToKICAgICAgICB0YXNrX3F1ZXVlX3NlbnRpbmVscyA9IFtzZWxmLl9vdXRxdWV1ZS5fcmVhZGVyXQogICAgICAgIHNlbGZfbm90aWZpZXJfc2VudGluZWxzID0gW3NlbGYuX2NoYW5nZV9ub3RpZmllci5fcmVhZGVyXQogICAgICAgIHJldHVybiBbKnRhc2tfcXVldWVfc2VudGluZWxzLCAqc2VsZl9ub3RpZmllcl9zZW50aW5lbHNdCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9nZXRfd29ya2VyX3NlbnRpbmVscyh3b3JrZXJzKToKICAgICAgICByZXR1cm4gW3dvcmtlci5zZW50aW5lbCBmb3Igd29ya2VyIGluCiAgICAgICAgICAgICAgICB3b3JrZXJzIGlmIGhhc2F0dHIod29ya2VyLCAic2VudGluZWwiKV0KCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2pvaW5fZXhpdGVkX3dvcmtlcnMocG9vbCk6CiAgICAgICAgIiIiQ2xlYW51cCBhZnRlciBhbnkgd29ya2VyIHByb2Nlc3NlcyB3aGljaCBoYXZlIGV4aXRlZCBkdWUgdG8gcmVhY2hpbmcKICAgICAgICB0aGVpciBzcGVjaWZpZWQgbGlmZXRpbWUuICBSZXR1cm5zIFRydWUgaWYgYW55IHdvcmtlcnMgd2VyZSBjbGVhbmVkIHVwLgogICAgICAgICIiIgogICAgICAgIGNsZWFuZWQgPSBGYWxzZQogICAgICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKGxlbihwb29sKSkpOgogICAgICAgICAgICB3b3JrZXIgPSBwb29sW2ldCiAgICAgICAgICAgIGlmIHdvcmtlci5leGl0Y29kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICMgd29ya2VyIGV4aXRlZAogICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnY2xlYW5pbmcgdXAgd29ya2VyICVkJyAlIGkpCiAgICAgICAgICAgICAgICB3b3JrZXIuam9pbigpCiAgICAgICAgICAgICAgICBjbGVhbmVkID0gVHJ1ZQogICAgICAgICAgICAgICAgZGVsIHBvb2xbaV0KICAgICAgICByZXR1cm4gY2xlYW5lZAoKICAgIGRlZiBfcmVwb3B1bGF0ZV9wb29sKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9yZXBvcHVsYXRlX3Bvb2xfc3RhdGljKHNlbGYuX2N0eCwgc2VsZi5Qcm9jZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb29sLCBzZWxmLl9pbnF1ZXVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX291dHF1ZXVlLCBzZWxmLl9pbml0aWFsaXplciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbml0YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXh0YXNrc3BlcmNoaWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyYXBfZXhjZXB0aW9uKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfcmVwb3B1bGF0ZV9wb29sX3N0YXRpYyhjdHgsIFByb2Nlc3MsIHByb2Nlc3NlcywgcG9vbCwgaW5xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRxdWV1ZSwgaW5pdGlhbGl6ZXIsIGluaXRhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heHRhc2tzcGVyY2hpbGQsIHdyYXBfZXhjZXB0aW9uKToKICAgICAgICAiIiJCcmluZyB0aGUgbnVtYmVyIG9mIHBvb2wgcHJvY2Vzc2VzIHVwIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyLAogICAgICAgIGZvciB1c2UgYWZ0ZXIgcmVhcGluZyB3b3JrZXJzIHdoaWNoIGhhdmUgZXhpdGVkLgogICAgICAgICIiIgogICAgICAgIGZvciBpIGluIHJhbmdlKHByb2Nlc3NlcyAtIGxlbihwb29sKSk6CiAgICAgICAgICAgIHcgPSBQcm9jZXNzKGN0eCwgdGFyZ2V0PXdvcmtlciwKICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oaW5xdWV1ZSwgb3V0cXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0YXJncywgbWF4dGFza3NwZXJjaGlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcF9leGNlcHRpb24pKQogICAgICAgICAgICB3Lm5hbWUgPSB3Lm5hbWUucmVwbGFjZSgnUHJvY2VzcycsICdQb29sV29ya2VyJykKICAgICAgICAgICAgdy5kYWVtb24gPSBUcnVlCiAgICAgICAgICAgIHcuc3RhcnQoKQogICAgICAgICAgICBwb29sLmFwcGVuZCh3KQogICAgICAgICAgICB1dGlsLmRlYnVnKCdhZGRlZCB3b3JrZXInKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfbWFpbnRhaW5fcG9vbChjdHgsIFByb2Nlc3MsIHByb2Nlc3NlcywgcG9vbCwgaW5xdWV1ZSwgb3V0cXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXIsIGluaXRhcmdzLCBtYXh0YXNrc3BlcmNoaWxkLAogICAgICAgICAgICAgICAgICAgICAgIHdyYXBfZXhjZXB0aW9uKToKICAgICAgICAiIiJDbGVhbiB1cCBhbnkgZXhpdGVkIHdvcmtlcnMgYW5kIHN0YXJ0IHJlcGxhY2VtZW50cyBmb3IgdGhlbS4KICAgICAgICAiIiIKICAgICAgICBpZiBQb29sLl9qb2luX2V4aXRlZF93b3JrZXJzKHBvb2wpOgogICAgICAgICAgICBQb29sLl9yZXBvcHVsYXRlX3Bvb2xfc3RhdGljKGN0eCwgUHJvY2VzcywgcHJvY2Vzc2VzLCBwb29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucXVldWUsIG91dHF1ZXVlLCBpbml0aWFsaXplciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0YXJncywgbWF4dGFza3NwZXJjaGlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwX2V4Y2VwdGlvbikKCiAgICBkZWYgX3NldHVwX3F1ZXVlcyhzZWxmKToKICAgICAgICBzZWxmLl9pbnF1ZXVlID0gc2VsZi5fY3R4LlNpbXBsZVF1ZXVlKCkKICAgICAgICBzZWxmLl9vdXRxdWV1ZSA9IHNlbGYuX2N0eC5TaW1wbGVRdWV1ZSgpCiAgICAgICAgc2VsZi5fcXVpY2tfcHV0ID0gc2VsZi5faW5xdWV1ZS5fd3JpdGVyLnNlbmQKICAgICAgICBzZWxmLl9xdWlja19nZXQgPSBzZWxmLl9vdXRxdWV1ZS5fcmVhZGVyLnJlY3YKCiAgICBkZWYgX2NoZWNrX3J1bm5pbmcoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gUlVOOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQb29sIG5vdCBydW5uaW5nIikKCiAgICBkZWYgYXBwbHkoc2VsZiwgZnVuYywgYXJncz0oKSwga3dkcz17fSk6CiAgICAgICAgJycnCiAgICAgICAgRXF1aXZhbGVudCBvZiBgZnVuYygqYXJncywgKiprd2RzKWAuCiAgICAgICAgUG9vbCBtdXN0IGJlIHJ1bm5pbmcuCiAgICAgICAgJycnCiAgICAgICAgcmV0dXJuIHNlbGYuYXBwbHlfYXN5bmMoZnVuYywgYXJncywga3dkcykuZ2V0KCkKCiAgICBkZWYgbWFwKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemU9Tm9uZSk6CiAgICAgICAgJycnCiAgICAgICAgQXBwbHkgYGZ1bmNgIHRvIGVhY2ggZWxlbWVudCBpbiBgaXRlcmFibGVgLCBjb2xsZWN0aW5nIHRoZSByZXN1bHRzCiAgICAgICAgaW4gYSBsaXN0IHRoYXQgaXMgcmV0dXJuZWQuCiAgICAgICAgJycnCiAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgbWFwc3RhciwgY2h1bmtzaXplKS5nZXQoKQoKICAgIGRlZiBzdGFybWFwKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemU9Tm9uZSk6CiAgICAgICAgJycnCiAgICAgICAgTGlrZSBgbWFwKClgIG1ldGhvZCBidXQgdGhlIGVsZW1lbnRzIG9mIHRoZSBgaXRlcmFibGVgIGFyZSBleHBlY3RlZCB0bwogICAgICAgIGJlIGl0ZXJhYmxlcyBhcyB3ZWxsIGFuZCB3aWxsIGJlIHVucGFja2VkIGFzIGFyZ3VtZW50cy4gSGVuY2UKICAgICAgICBgZnVuY2AgYW5kIChhLCBiKSBiZWNvbWVzIGZ1bmMoYSwgYikuCiAgICAgICAgJycnCiAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgc3Rhcm1hcHN0YXIsIGNodW5rc2l6ZSkuZ2V0KCkKCiAgICBkZWYgc3Rhcm1hcF9hc3luYyhzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPU5vbmUsIGNhbGxiYWNrPU5vbmUsCiAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPU5vbmUpOgogICAgICAgICcnJwogICAgICAgIEFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBzdGFybWFwKClgIG1ldGhvZC4KICAgICAgICAnJycKICAgICAgICByZXR1cm4gc2VsZi5fbWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlLCBzdGFybWFwc3RhciwgY2h1bmtzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssIGVycm9yX2NhbGxiYWNrKQoKICAgIGRlZiBfZ3VhcmRlZF90YXNrX2dlbmVyYXRpb24oc2VsZiwgcmVzdWx0X2pvYiwgZnVuYywgaXRlcmFibGUpOgogICAgICAgICcnJ1Byb3ZpZGVzIGEgZ2VuZXJhdG9yIG9mIHRhc2tzIGZvciBpbWFwIGFuZCBpbWFwX3Vub3JkZXJlZCB3aXRoCiAgICAgICAgYXBwcm9wcmlhdGUgaGFuZGxpbmcgZm9yIGl0ZXJhYmxlcyB3aGljaCB0aHJvdyBleGNlcHRpb25zIGR1cmluZwogICAgICAgIGl0ZXJhdGlvbi4nJycKICAgICAgICB0cnk6CiAgICAgICAgICAgIGkgPSAtMQogICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUoaXRlcmFibGUpOgogICAgICAgICAgICAgICAgeWllbGQgKHJlc3VsdF9qb2IsIGksIGZ1bmMsICh4LCksIHt9KQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgeWllbGQgKHJlc3VsdF9qb2IsIGkrMSwgX2hlbHBlcl9yZXJhaXNlc19leGNlcHRpb24sIChlLCksIHt9KQoKICAgIGRlZiBpbWFwKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemU9MSk6CiAgICAgICAgJycnCiAgICAgICAgRXF1aXZhbGVudCBvZiBgbWFwKClgIC0tIGNhbiBiZSBNVUNIIHNsb3dlciB0aGFuIGBQb29sLm1hcCgpYC4KICAgICAgICAnJycKICAgICAgICBzZWxmLl9jaGVja19ydW5uaW5nKCkKICAgICAgICBpZiBjaHVua3NpemUgPT0gMToKICAgICAgICAgICAgcmVzdWx0ID0gSU1hcEl0ZXJhdG9yKHNlbGYpCiAgICAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoCiAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ3VhcmRlZF90YXNrX2dlbmVyYXRpb24ocmVzdWx0Ll9qb2IsIGZ1bmMsIGl0ZXJhYmxlKSwKICAgICAgICAgICAgICAgICAgICByZXN1bHQuX3NldF9sZW5ndGgKICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBjaHVua3NpemUgPCAxOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiQ2h1bmtzaXplIG11c3QgYmUgMSssIG5vdCB7MDpufSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICBjaHVua3NpemUpKQogICAgICAgICAgICB0YXNrX2JhdGNoZXMgPSBQb29sLl9nZXRfdGFza3MoZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZSkKICAgICAgICAgICAgcmVzdWx0ID0gSU1hcEl0ZXJhdG9yKHNlbGYpCiAgICAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoCiAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ3VhcmRlZF90YXNrX2dlbmVyYXRpb24ocmVzdWx0Ll9qb2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwc3RhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrX2JhdGNoZXMpLAogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5fc2V0X2xlbmd0aAogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgcmV0dXJuIChpdGVtIGZvciBjaHVuayBpbiByZXN1bHQgZm9yIGl0ZW0gaW4gY2h1bmspCgogICAgZGVmIGltYXBfdW5vcmRlcmVkKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemU9MSk6CiAgICAgICAgJycnCiAgICAgICAgTGlrZSBgaW1hcCgpYCBtZXRob2QgYnV0IG9yZGVyaW5nIG9mIHJlc3VsdHMgaXMgYXJiaXRyYXJ5LgogICAgICAgICcnJwogICAgICAgIHNlbGYuX2NoZWNrX3J1bm5pbmcoKQogICAgICAgIGlmIGNodW5rc2l6ZSA9PSAxOgogICAgICAgICAgICByZXN1bHQgPSBJTWFwVW5vcmRlcmVkSXRlcmF0b3Ioc2VsZikKICAgICAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9ndWFyZGVkX3Rhc2tfZ2VuZXJhdGlvbihyZXN1bHQuX2pvYiwgZnVuYywgaXRlcmFibGUpLAogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5fc2V0X2xlbmd0aAogICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGNodW5rc2l6ZSA8IDE6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICJDaHVua3NpemUgbXVzdCBiZSAxKywgbm90IHswIXJ9Ii5mb3JtYXQoY2h1bmtzaXplKSkKICAgICAgICAgICAgdGFza19iYXRjaGVzID0gUG9vbC5fZ2V0X3Rhc2tzKGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemUpCiAgICAgICAgICAgIHJlc3VsdCA9IElNYXBVbm9yZGVyZWRJdGVyYXRvcihzZWxmKQogICAgICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KAogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2d1YXJkZWRfdGFza19nZW5lcmF0aW9uKHJlc3VsdC5fam9iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHN0YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza19iYXRjaGVzKSwKICAgICAgICAgICAgICAgICAgICByZXN1bHQuX3NldF9sZW5ndGgKICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgIHJldHVybiAoaXRlbSBmb3IgY2h1bmsgaW4gcmVzdWx0IGZvciBpdGVtIGluIGNodW5rKQoKICAgIGRlZiBhcHBseV9hc3luYyhzZWxmLCBmdW5jLCBhcmdzPSgpLCBrd2RzPXt9LCBjYWxsYmFjaz1Ob25lLAogICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1Ob25lKToKICAgICAgICAnJycKICAgICAgICBBc3luY2hyb25vdXMgdmVyc2lvbiBvZiBgYXBwbHkoKWAgbWV0aG9kLgogICAgICAgICcnJwogICAgICAgIHNlbGYuX2NoZWNrX3J1bm5pbmcoKQogICAgICAgIHJlc3VsdCA9IEFwcGx5UmVzdWx0KHNlbGYsIGNhbGxiYWNrLCBlcnJvcl9jYWxsYmFjaykKICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KChbKHJlc3VsdC5fam9iLCAwLCBmdW5jLCBhcmdzLCBrd2RzKV0sIE5vbmUpKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgbWFwX2FzeW5jKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemU9Tm9uZSwgY2FsbGJhY2s9Tm9uZSwKICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Tm9uZSk6CiAgICAgICAgJycnCiAgICAgICAgQXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYG1hcCgpYCBtZXRob2QuCiAgICAgICAgJycnCiAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgbWFwc3RhciwgY2h1bmtzaXplLCBjYWxsYmFjaywKICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2spCgogICAgZGVmIF9tYXBfYXN5bmMoc2VsZiwgZnVuYywgaXRlcmFibGUsIG1hcHBlciwgY2h1bmtzaXplPU5vbmUsIGNhbGxiYWNrPU5vbmUsCiAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPU5vbmUpOgogICAgICAgICcnJwogICAgICAgIEhlbHBlciBmdW5jdGlvbiB0byBpbXBsZW1lbnQgbWFwLCBzdGFybWFwIGFuZCB0aGVpciBhc3luYyBjb3VudGVycGFydHMuCiAgICAgICAgJycnCiAgICAgICAgc2VsZi5fY2hlY2tfcnVubmluZygpCiAgICAgICAgaWYgbm90IGhhc2F0dHIoaXRlcmFibGUsICdfX2xlbl9fJyk6CiAgICAgICAgICAgIGl0ZXJhYmxlID0gbGlzdChpdGVyYWJsZSkKCiAgICAgICAgaWYgY2h1bmtzaXplIGlzIE5vbmU6CiAgICAgICAgICAgIGNodW5rc2l6ZSwgZXh0cmEgPSBkaXZtb2QobGVuKGl0ZXJhYmxlKSwgbGVuKHNlbGYuX3Bvb2wpICogNCkKICAgICAgICAgICAgaWYgZXh0cmE6CiAgICAgICAgICAgICAgICBjaHVua3NpemUgKz0gMQogICAgICAgIGlmIGxlbihpdGVyYWJsZSkgPT0gMDoKICAgICAgICAgICAgY2h1bmtzaXplID0gMAoKICAgICAgICB0YXNrX2JhdGNoZXMgPSBQb29sLl9nZXRfdGFza3MoZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZSkKICAgICAgICByZXN1bHQgPSBNYXBSZXN1bHQoc2VsZiwgY2h1bmtzaXplLCBsZW4oaXRlcmFibGUpLCBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9ZXJyb3JfY2FsbGJhY2spCiAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgc2VsZi5fZ3VhcmRlZF90YXNrX2dlbmVyYXRpb24ocmVzdWx0Ll9qb2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrX2JhdGNoZXMpLAogICAgICAgICAgICAgICAgTm9uZQogICAgICAgICAgICApCiAgICAgICAgKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX3dhaXRfZm9yX3VwZGF0ZXMoc2VudGluZWxzLCBjaGFuZ2Vfbm90aWZpZXIsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgd2FpdChzZW50aW5lbHMsIHRpbWVvdXQ9dGltZW91dCkKICAgICAgICB3aGlsZSBub3QgY2hhbmdlX25vdGlmaWVyLmVtcHR5KCk6CiAgICAgICAgICAgIGNoYW5nZV9ub3RpZmllci5nZXQoKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF9oYW5kbGVfd29ya2VycyhjbHMsIGNhY2hlLCB0YXNrcXVldWUsIGN0eCwgUHJvY2VzcywgcHJvY2Vzc2VzLAogICAgICAgICAgICAgICAgICAgICAgICBwb29sLCBpbnF1ZXVlLCBvdXRxdWV1ZSwgaW5pdGlhbGl6ZXIsIGluaXRhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICBtYXh0YXNrc3BlcmNoaWxkLCB3cmFwX2V4Y2VwdGlvbiwgc2VudGluZWxzLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vfbm90aWZpZXIpOgogICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpCgogICAgICAgICMgS2VlcCBtYWludGFpbmluZyB3b3JrZXJzIHVudGlsIHRoZSBjYWNoZSBnZXRzIGRyYWluZWQsIHVubGVzcyB0aGUgcG9vbAogICAgICAgICMgaXMgdGVybWluYXRlZC4KICAgICAgICB3aGlsZSB0aHJlYWQuX3N0YXRlID09IFJVTiBvciAoY2FjaGUgYW5kIHRocmVhZC5fc3RhdGUgIT0gVEVSTUlOQVRFKToKICAgICAgICAgICAgY2xzLl9tYWludGFpbl9wb29sKGN0eCwgUHJvY2VzcywgcHJvY2Vzc2VzLCBwb29sLCBpbnF1ZXVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cXVldWUsIGluaXRpYWxpemVyLCBpbml0YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heHRhc2tzcGVyY2hpbGQsIHdyYXBfZXhjZXB0aW9uKQoKICAgICAgICAgICAgY3VycmVudF9zZW50aW5lbHMgPSBbKmNscy5fZ2V0X3dvcmtlcl9zZW50aW5lbHMocG9vbCksICpzZW50aW5lbHNdCgogICAgICAgICAgICBjbHMuX3dhaXRfZm9yX3VwZGF0ZXMoY3VycmVudF9zZW50aW5lbHMsIGNoYW5nZV9ub3RpZmllcikKICAgICAgICAjIHNlbmQgc2VudGluZWwgdG8gc3RvcCB3b3JrZXJzCiAgICAgICAgdGFza3F1ZXVlLnB1dChOb25lKQogICAgICAgIHV0aWwuZGVidWcoJ3dvcmtlciBoYW5kbGVyIGV4aXRpbmcnKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfaGFuZGxlX3Rhc2tzKHRhc2txdWV1ZSwgcHV0LCBvdXRxdWV1ZSwgcG9vbCwgY2FjaGUpOgogICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpCgogICAgICAgIGZvciB0YXNrc2VxLCBzZXRfbGVuZ3RoIGluIGl0ZXIodGFza3F1ZXVlLmdldCwgTm9uZSk6CiAgICAgICAgICAgIHRhc2sgPSBOb25lCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICMgaXRlcmF0aW5nIHRhc2tzZXEgY2Fubm90IGZhaWwKICAgICAgICAgICAgICAgIGZvciB0YXNrIGluIHRhc2tzZXE6CiAgICAgICAgICAgICAgICAgICAgaWYgdGhyZWFkLl9zdGF0ZSAhPSBSVU46CiAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ3Rhc2sgaGFuZGxlciBmb3VuZCB0aHJlYWQuX3N0YXRlICE9IFJVTicpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBwdXQodGFzaykKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgIGpvYiwgaWR4ID0gdGFza1s6Ml0KICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVbam9iXS5fc2V0KGlkeCwgKEZhbHNlLCBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBpZiBzZXRfbGVuZ3RoOgogICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdkb2luZyBzZXRfbGVuZ3RoKCknKQogICAgICAgICAgICAgICAgICAgICAgICBpZHggPSB0YXNrWzFdIGlmIHRhc2sgZWxzZSAtMQogICAgICAgICAgICAgICAgICAgICAgICBzZXRfbGVuZ3RoKGlkeCArIDEpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICB0YXNrID0gdGFza3NlcSA9IGpvYiA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICB1dGlsLmRlYnVnKCd0YXNrIGhhbmRsZXIgZ290IHNlbnRpbmVsJykKCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIHRlbGwgcmVzdWx0IGhhbmRsZXIgdG8gZmluaXNoIHdoZW4gY2FjaGUgaXMgZW1wdHkKICAgICAgICAgICAgdXRpbC5kZWJ1ZygndGFzayBoYW5kbGVyIHNlbmRpbmcgc2VudGluZWwgdG8gcmVzdWx0IGhhbmRsZXInKQogICAgICAgICAgICBvdXRxdWV1ZS5wdXQoTm9uZSkKCiAgICAgICAgICAgICMgdGVsbCB3b3JrZXJzIHRoZXJlIGlzIG5vIG1vcmUgd29yawogICAgICAgICAgICB1dGlsLmRlYnVnKCd0YXNrIGhhbmRsZXIgc2VuZGluZyBzZW50aW5lbCB0byB3b3JrZXJzJykKICAgICAgICAgICAgZm9yIHAgaW4gcG9vbDoKICAgICAgICAgICAgICAgIHB1dChOb25lKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICB1dGlsLmRlYnVnKCd0YXNrIGhhbmRsZXIgZ290IE9TRXJyb3Igd2hlbiBzZW5kaW5nIHNlbnRpbmVscycpCgogICAgICAgIHV0aWwuZGVidWcoJ3Rhc2sgaGFuZGxlciBleGl0aW5nJykKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2hhbmRsZV9yZXN1bHRzKG91dHF1ZXVlLCBnZXQsIGNhY2hlKToKICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKQoKICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0YXNrID0gZ2V0KCkKICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdyZXN1bHQgaGFuZGxlciBnb3QgRU9GRXJyb3IvT1NFcnJvciAtLSBleGl0aW5nJykKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgaWYgdGhyZWFkLl9zdGF0ZSAhPSBSVU46CiAgICAgICAgICAgICAgICBhc3NlcnQgdGhyZWFkLl9zdGF0ZSA9PSBURVJNSU5BVEUsICJUaHJlYWQgbm90IGluIFRFUk1JTkFURSIKICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ3Jlc3VsdCBoYW5kbGVyIGZvdW5kIHRocmVhZC5fc3RhdGU9VEVSTUlOQVRFJykKICAgICAgICAgICAgICAgIGJyZWFrCgogICAgICAgICAgICBpZiB0YXNrIGlzIE5vbmU6CiAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdyZXN1bHQgaGFuZGxlciBnb3Qgc2VudGluZWwnKQogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGpvYiwgaSwgb2JqID0gdGFzawogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBjYWNoZVtqb2JdLl9zZXQoaSwgb2JqKQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHRhc2sgPSBqb2IgPSBvYmogPSBOb25lCgogICAgICAgIHdoaWxlIGNhY2hlIGFuZCB0aHJlYWQuX3N0YXRlICE9IFRFUk1JTkFURToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdGFzayA9IGdldCgpCiAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygncmVzdWx0IGhhbmRsZXIgZ290IEVPRkVycm9yL09TRXJyb3IgLS0gZXhpdGluZycpCiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgIGlmIHRhc2sgaXMgTm9uZToKICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ3Jlc3VsdCBoYW5kbGVyIGlnbm9yaW5nIGV4dHJhIHNlbnRpbmVsJykKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGpvYiwgaSwgb2JqID0gdGFzawogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBjYWNoZVtqb2JdLl9zZXQoaSwgb2JqKQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHRhc2sgPSBqb2IgPSBvYmogPSBOb25lCgogICAgICAgIGlmIGhhc2F0dHIob3V0cXVldWUsICdfcmVhZGVyJyk6CiAgICAgICAgICAgIHV0aWwuZGVidWcoJ2Vuc3VyaW5nIHRoYXQgb3V0cXVldWUgaXMgbm90IGZ1bGwnKQogICAgICAgICAgICAjIElmIHdlIGRvbid0IG1ha2Ugcm9vbSBhdmFpbGFibGUgaW4gb3V0cXVldWUgdGhlbgogICAgICAgICAgICAjIGF0dGVtcHRzIHRvIGFkZCB0aGUgc2VudGluZWwgKE5vbmUpIHRvIG91dHF1ZXVlIG1heQogICAgICAgICAgICAjIGJsb2NrLiAgVGhlcmUgaXMgZ3VhcmFudGVlZCB0byBiZSBubyBtb3JlIHRoYW4gMiBzZW50aW5lbHMuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3V0cXVldWUuX3JlYWRlci5wb2xsKCk6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgZ2V0KCkKICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICBwYXNzCgogICAgICAgIHV0aWwuZGVidWcoJ3Jlc3VsdCBoYW5kbGVyIGV4aXRpbmc6IGxlbihjYWNoZSk9JXMsIHRocmVhZC5fc3RhdGU9JXMnLAogICAgICAgICAgICAgIGxlbihjYWNoZSksIHRocmVhZC5fc3RhdGUpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9nZXRfdGFza3MoZnVuYywgaXQsIHNpemUpOgogICAgICAgIGl0ID0gaXRlcihpdCkKICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICB4ID0gdHVwbGUoaXRlcnRvb2xzLmlzbGljZShpdCwgc2l6ZSkpCiAgICAgICAgICAgIGlmIG5vdCB4OgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHlpZWxkIChmdW5jLCB4KQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCiAgICAgICAgICAgICAgJ3Bvb2wgb2JqZWN0cyBjYW5ub3QgYmUgcGFzc2VkIGJldHdlZW4gcHJvY2Vzc2VzIG9yIHBpY2tsZWQnCiAgICAgICAgICAgICAgKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICB1dGlsLmRlYnVnKCdjbG9zaW5nIHBvb2wnKQogICAgICAgIGlmIHNlbGYuX3N0YXRlID09IFJVTjoKICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSBDTE9TRQogICAgICAgICAgICBzZWxmLl93b3JrZXJfaGFuZGxlci5fc3RhdGUgPSBDTE9TRQogICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfbm90aWZpZXIucHV0KE5vbmUpCgogICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBwb29sJykKICAgICAgICBzZWxmLl9zdGF0ZSA9IFRFUk1JTkFURQogICAgICAgIHNlbGYuX3Rlcm1pbmF0ZSgpCgogICAgZGVmIGpvaW4oc2VsZik6CiAgICAgICAgdXRpbC5kZWJ1Zygnam9pbmluZyBwb29sJykKICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBSVU46CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgaXMgc3RpbGwgcnVubmluZyIpCiAgICAgICAgZWxpZiBzZWxmLl9zdGF0ZSBub3QgaW4gKENMT1NFLCBURVJNSU5BVEUpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbiB1bmtub3duIHN0YXRlIikKICAgICAgICBzZWxmLl93b3JrZXJfaGFuZGxlci5qb2luKCkKICAgICAgICBzZWxmLl90YXNrX2hhbmRsZXIuam9pbigpCiAgICAgICAgc2VsZi5fcmVzdWx0X2hhbmRsZXIuam9pbigpCiAgICAgICAgZm9yIHAgaW4gc2VsZi5fcG9vbDoKICAgICAgICAgICAgcC5qb2luKCkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2hlbHBfc3R1ZmZfZmluaXNoKGlucXVldWUsIHRhc2tfaGFuZGxlciwgc2l6ZSk6CiAgICAgICAgIyB0YXNrX2hhbmRsZXIgbWF5IGJlIGJsb2NrZWQgdHJ5aW5nIHRvIHB1dCBpdGVtcyBvbiBpbnF1ZXVlCiAgICAgICAgdXRpbC5kZWJ1ZygncmVtb3ZpbmcgdGFza3MgZnJvbSBpbnF1ZXVlIHVudGlsIHRhc2sgaGFuZGxlciBmaW5pc2hlZCcpCiAgICAgICAgaW5xdWV1ZS5fcmxvY2suYWNxdWlyZSgpCiAgICAgICAgd2hpbGUgdGFza19oYW5kbGVyLmlzX2FsaXZlKCkgYW5kIGlucXVldWUuX3JlYWRlci5wb2xsKCk6CiAgICAgICAgICAgIGlucXVldWUuX3JlYWRlci5yZWN2KCkKICAgICAgICAgICAgdGltZS5zbGVlcCgwKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF90ZXJtaW5hdGVfcG9vbChjbHMsIHRhc2txdWV1ZSwgaW5xdWV1ZSwgb3V0cXVldWUsIHBvb2wsIGNoYW5nZV9ub3RpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyX2hhbmRsZXIsIHRhc2tfaGFuZGxlciwgcmVzdWx0X2hhbmRsZXIsIGNhY2hlKToKICAgICAgICAjIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBvbmx5IGJlIGNhbGxlZCBvbmNlCiAgICAgICAgdXRpbC5kZWJ1ZygnZmluYWxpemluZyBwb29sJykKCiAgICAgICAgIyBOb3RpZnkgdGhhdCB0aGUgd29ya2VyX2hhbmRsZXIgc3RhdGUgaGFzIGJlZW4gY2hhbmdlZCBzbyB0aGUKICAgICAgICAjIF9oYW5kbGVfd29ya2VycyBsb29wIGNhbiBiZSB1bmJsb2NrZWQgKGFuZCBleGl0ZWQpIGluIG9yZGVyIHRvCiAgICAgICAgIyBzZW5kIHRoZSBmaW5hbGl6YXRpb24gc2VudGluZWwgYWxsIHRoZSB3b3JrZXJzLgogICAgICAgIHdvcmtlcl9oYW5kbGVyLl9zdGF0ZSA9IFRFUk1JTkFURQogICAgICAgIGNoYW5nZV9ub3RpZmllci5wdXQoTm9uZSkKCiAgICAgICAgdGFza19oYW5kbGVyLl9zdGF0ZSA9IFRFUk1JTkFURQoKICAgICAgICB1dGlsLmRlYnVnKCdoZWxwaW5nIHRhc2sgaGFuZGxlci93b3JrZXJzIHRvIGZpbmlzaCcpCiAgICAgICAgY2xzLl9oZWxwX3N0dWZmX2ZpbmlzaChpbnF1ZXVlLCB0YXNrX2hhbmRsZXIsIGxlbihwb29sKSkKCiAgICAgICAgaWYgKG5vdCByZXN1bHRfaGFuZGxlci5pc19hbGl2ZSgpKSBhbmQgKGxlbihjYWNoZSkgIT0gMCk6CiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgIkNhbm5vdCBoYXZlIGNhY2hlIHdpdGggcmVzdWx0X2hhbmRlciBub3QgYWxpdmUiKQoKICAgICAgICByZXN1bHRfaGFuZGxlci5fc3RhdGUgPSBURVJNSU5BVEUKICAgICAgICBjaGFuZ2Vfbm90aWZpZXIucHV0KE5vbmUpCiAgICAgICAgb3V0cXVldWUucHV0KE5vbmUpICAgICAgICAgICAgICAgICAgIyBzZW50aW5lbAoKICAgICAgICAjIFdlIG11c3Qgd2FpdCBmb3IgdGhlIHdvcmtlciBoYW5kbGVyIHRvIGV4aXQgYmVmb3JlIHRlcm1pbmF0aW5nCiAgICAgICAgIyB3b3JrZXJzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB3b3JrZXJzIHRvIGJlIHJlc3RhcnRlZCBiZWhpbmQgb3VyIGJhY2suCiAgICAgICAgdXRpbC5kZWJ1Zygnam9pbmluZyB3b3JrZXIgaGFuZGxlcicpCiAgICAgICAgaWYgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkgaXMgbm90IHdvcmtlcl9oYW5kbGVyOgogICAgICAgICAgICB3b3JrZXJfaGFuZGxlci5qb2luKCkKCiAgICAgICAgIyBUZXJtaW5hdGUgd29ya2VycyB3aGljaCBoYXZlbid0IGFscmVhZHkgZmluaXNoZWQuCiAgICAgICAgaWYgcG9vbCBhbmQgaGFzYXR0cihwb29sWzBdLCAndGVybWluYXRlJyk6CiAgICAgICAgICAgIHV0aWwuZGVidWcoJ3Rlcm1pbmF0aW5nIHdvcmtlcnMnKQogICAgICAgICAgICBmb3IgcCBpbiBwb29sOgogICAgICAgICAgICAgICAgaWYgcC5leGl0Y29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHAudGVybWluYXRlKCkKCiAgICAgICAgdXRpbC5kZWJ1Zygnam9pbmluZyB0YXNrIGhhbmRsZXInKQogICAgICAgIGlmIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpIGlzIG5vdCB0YXNrX2hhbmRsZXI6CiAgICAgICAgICAgIHRhc2tfaGFuZGxlci5qb2luKCkKCiAgICAgICAgdXRpbC5kZWJ1Zygnam9pbmluZyByZXN1bHQgaGFuZGxlcicpCiAgICAgICAgaWYgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkgaXMgbm90IHJlc3VsdF9oYW5kbGVyOgogICAgICAgICAgICByZXN1bHRfaGFuZGxlci5qb2luKCkKCiAgICAgICAgaWYgcG9vbCBhbmQgaGFzYXR0cihwb29sWzBdLCAndGVybWluYXRlJyk6CiAgICAgICAgICAgIHV0aWwuZGVidWcoJ2pvaW5pbmcgcG9vbCB3b3JrZXJzJykKICAgICAgICAgICAgZm9yIHAgaW4gcG9vbDoKICAgICAgICAgICAgICAgIGlmIHAuaXNfYWxpdmUoKToKICAgICAgICAgICAgICAgICAgICAjIHdvcmtlciBoYXMgbm90IHlldCBleGl0ZWQKICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdjbGVhbmluZyB1cCB3b3JrZXIgJWQnICUgcC5waWQpCiAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHNlbGYuX2NoZWNrX3J1bm5pbmcoKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgogICAgICAgIHNlbGYudGVybWluYXRlKCkKCiMKIyBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5IGBQb29sLmFwcGx5X2FzeW5jKClgCiMKCmNsYXNzIEFwcGx5UmVzdWx0KG9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvb2wsIGNhbGxiYWNrLCBlcnJvcl9jYWxsYmFjayk6CiAgICAgICAgc2VsZi5fcG9vbCA9IHBvb2wKICAgICAgICBzZWxmLl9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgc2VsZi5fam9iID0gbmV4dChqb2JfY291bnRlcikKICAgICAgICBzZWxmLl9jYWNoZSA9IHBvb2wuX2NhY2hlCiAgICAgICAgc2VsZi5fY2FsbGJhY2sgPSBjYWxsYmFjawogICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrID0gZXJyb3JfY2FsbGJhY2sKICAgICAgICBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdID0gc2VsZgoKICAgIGRlZiByZWFkeShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnQuaXNfc2V0KCkKCiAgICBkZWYgc3VjY2Vzc2Z1bChzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5yZWFkeSgpOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ7MCFyfSBub3QgcmVhZHkiLmZvcm1hdChzZWxmKSkKICAgICAgICByZXR1cm4gc2VsZi5fc3VjY2VzcwoKICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgc2VsZi5fZXZlbnQud2FpdCh0aW1lb3V0KQoKICAgIGRlZiBnZXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICBzZWxmLndhaXQodGltZW91dCkKICAgICAgICBpZiBub3Qgc2VsZi5yZWFkeSgpOgogICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IKICAgICAgICBpZiBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBzZWxmLl92YWx1ZQoKICAgIGRlZiBfc2V0KHNlbGYsIGksIG9iaik6CiAgICAgICAgc2VsZi5fc3VjY2Vzcywgc2VsZi5fdmFsdWUgPSBvYmoKICAgICAgICBpZiBzZWxmLl9jYWxsYmFjayBhbmQgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2sgYW5kIG5vdCBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgc2VsZi5fcG9vbCA9IE5vbmUKCiAgICBfX2NsYXNzX2dldGl0ZW1fXyA9IGNsYXNzbWV0aG9kKHR5cGVzLkdlbmVyaWNBbGlhcykKCkFzeW5jUmVzdWx0ID0gQXBwbHlSZXN1bHQgICAgICAgIyBjcmVhdGUgYWxpYXMgLS0gc2VlICMxNzgwNQoKIwojIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wubWFwX2FzeW5jKClgCiMKCmNsYXNzIE1hcFJlc3VsdChBcHBseVJlc3VsdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvb2wsIGNodW5rc2l6ZSwgbGVuZ3RoLCBjYWxsYmFjaywgZXJyb3JfY2FsbGJhY2spOgogICAgICAgIEFwcGx5UmVzdWx0Ll9faW5pdF9fKHNlbGYsIHBvb2wsIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPWVycm9yX2NhbGxiYWNrKQogICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBUcnVlCiAgICAgICAgc2VsZi5fdmFsdWUgPSBbTm9uZV0gKiBsZW5ndGgKICAgICAgICBzZWxmLl9jaHVua3NpemUgPSBjaHVua3NpemUKICAgICAgICBpZiBjaHVua3NpemUgPD0gMDoKICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgPSAwCiAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgPSBsZW5ndGgvL2NodW5rc2l6ZSArIGJvb2wobGVuZ3RoICUgY2h1bmtzaXplKQoKICAgIGRlZiBfc2V0KHNlbGYsIGksIHN1Y2Nlc3NfcmVzdWx0KToKICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgc3VjY2VzcywgcmVzdWx0ID0gc3VjY2Vzc19yZXN1bHQKICAgICAgICBpZiBzdWNjZXNzIGFuZCBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICBzZWxmLl92YWx1ZVtpKnNlbGYuX2NodW5rc2l6ZTooaSsxKSpzZWxmLl9jaHVua3NpemVdID0gcmVzdWx0CiAgICAgICAgICAgIGlmIHNlbGYuX251bWJlcl9sZWZ0ID09IDA6CiAgICAgICAgICAgICAgICBpZiBzZWxmLl9jYWxsYmFjazoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgICAgICAgICAgc2VsZi5fcG9vbCA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBub3Qgc3VjY2VzcyBhbmQgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgICAgICMgb25seSBzdG9yZSBmaXJzdCBleGNlcHRpb24KICAgICAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSByZXN1bHQKICAgICAgICAgICAgaWYgc2VsZi5fbnVtYmVyX2xlZnQgPT0gMDoKICAgICAgICAgICAgICAgICMgb25seSBjb25zaWRlciB0aGUgcmVzdWx0IHJlYWR5IG9uY2UgYWxsIGpvYnMgYXJlIGRvbmUKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgICAgICAgICBzZWxmLl9wb29sID0gTm9uZQoKIwojIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcCgpYAojCgpjbGFzcyBJTWFwSXRlcmF0b3Iob2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcG9vbCk6CiAgICAgICAgc2VsZi5fcG9vbCA9IHBvb2wKICAgICAgICBzZWxmLl9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbih0aHJlYWRpbmcuTG9jaygpKQogICAgICAgIHNlbGYuX2pvYiA9IG5leHQoam9iX2NvdW50ZXIpCiAgICAgICAgc2VsZi5fY2FjaGUgPSBwb29sLl9jYWNoZQogICAgICAgIHNlbGYuX2l0ZW1zID0gY29sbGVjdGlvbnMuZGVxdWUoKQogICAgICAgIHNlbGYuX2luZGV4ID0gMAogICAgICAgIHNlbGYuX2xlbmd0aCA9IE5vbmUKICAgICAgICBzZWxmLl91bnNvcnRlZCA9IHt9CiAgICAgICAgc2VsZi5fY2FjaGVbc2VsZi5fam9iXSA9IHNlbGYKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgbmV4dChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2l0ZW1zLnBvcGxlZnQoKQogICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IHNlbGYuX2xlbmd0aDoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb29sID0gTm9uZQogICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24gZnJvbSBOb25lCiAgICAgICAgICAgICAgICBzZWxmLl9jb25kLndhaXQodGltZW91dCkKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpdGVtID0gc2VsZi5faXRlbXMucG9wbGVmdCgpCiAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBzZWxmLl9sZW5ndGg6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Bvb2wgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24gZnJvbSBOb25lCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yIGZyb20gTm9uZQoKICAgICAgICBzdWNjZXNzLCB2YWx1ZSA9IGl0ZW0KICAgICAgICBpZiBzdWNjZXNzOgogICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICByYWlzZSB2YWx1ZQoKICAgIF9fbmV4dF9fID0gbmV4dCAgICAgICAgICAgICAgICAgICAgIyBYWFgKCiAgICBkZWYgX3NldChzZWxmLCBpLCBvYmopOgogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gaToKICAgICAgICAgICAgICAgIHNlbGYuX2l0ZW1zLmFwcGVuZChvYmopCiAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCiAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLl9pbmRleCBpbiBzZWxmLl91bnNvcnRlZDoKICAgICAgICAgICAgICAgICAgICBvYmogPSBzZWxmLl91bnNvcnRlZC5wb3Aoc2VsZi5faW5kZXgpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5faXRlbXMuYXBwZW5kKG9iaikKICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCiAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl91bnNvcnRlZFtpXSA9IG9iagoKICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gc2VsZi5fbGVuZ3RoOgogICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KICAgICAgICAgICAgICAgIHNlbGYuX3Bvb2wgPSBOb25lCgogICAgZGVmIF9zZXRfbGVuZ3RoKHNlbGYsIGxlbmd0aCk6CiAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICBzZWxmLl9sZW5ndGggPSBsZW5ndGgKICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gc2VsZi5fbGVuZ3RoOgogICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQogICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KICAgICAgICAgICAgICAgIHNlbGYuX3Bvb2wgPSBOb25lCgojCiMgQ2xhc3Mgd2hvc2UgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBieSBgUG9vbC5pbWFwX3Vub3JkZXJlZCgpYAojCgpjbGFzcyBJTWFwVW5vcmRlcmVkSXRlcmF0b3IoSU1hcEl0ZXJhdG9yKToKCiAgICBkZWYgX3NldChzZWxmLCBpLCBvYmopOgogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgc2VsZi5faXRlbXMuYXBwZW5kKG9iaikKICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQogICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCiAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IHNlbGYuX2xlbmd0aDoKICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgICAgICAgICBzZWxmLl9wb29sID0gTm9uZQoKIwojCiMKCmNsYXNzIFRocmVhZFBvb2woUG9vbCk6CiAgICBfd3JhcF9leGNlcHRpb24gPSBGYWxzZQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBQcm9jZXNzKGN0eCwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgZnJvbSAuZHVtbXkgaW1wb3J0IFByb2Nlc3MKICAgICAgICByZXR1cm4gUHJvY2VzcygqYXJncywgKiprd2RzKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzZXM9Tm9uZSwgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCkpOgogICAgICAgIFBvb2wuX19pbml0X18oc2VsZiwgcHJvY2Vzc2VzLCBpbml0aWFsaXplciwgaW5pdGFyZ3MpCgogICAgZGVmIF9zZXR1cF9xdWV1ZXMoc2VsZik6CiAgICAgICAgc2VsZi5faW5xdWV1ZSA9IHF1ZXVlLlNpbXBsZVF1ZXVlKCkKICAgICAgICBzZWxmLl9vdXRxdWV1ZSA9IHF1ZXVlLlNpbXBsZVF1ZXVlKCkKICAgICAgICBzZWxmLl9xdWlja19wdXQgPSBzZWxmLl9pbnF1ZXVlLnB1dAogICAgICAgIHNlbGYuX3F1aWNrX2dldCA9IHNlbGYuX291dHF1ZXVlLmdldAoKICAgIGRlZiBfZ2V0X3NlbnRpbmVscyhzZWxmKToKICAgICAgICByZXR1cm4gW3NlbGYuX2NoYW5nZV9ub3RpZmllci5fcmVhZGVyXQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfZ2V0X3dvcmtlcl9zZW50aW5lbHMod29ya2Vycyk6CiAgICAgICAgcmV0dXJuIFtdCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9oZWxwX3N0dWZmX2ZpbmlzaChpbnF1ZXVlLCB0YXNrX2hhbmRsZXIsIHNpemUpOgogICAgICAgICMgZHJhaW4gaW5xdWV1ZSwgYW5kIHB1dCBzZW50aW5lbHMgYXQgaXRzIGhlYWQgdG8gbWFrZSB3b3JrZXJzIGZpbmlzaAogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIGlucXVldWUuZ2V0KGJsb2NrPUZhbHNlKQogICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKICAgICAgICAgICAgcGFzcwogICAgICAgIGZvciBpIGluIHJhbmdlKHNpemUpOgogICAgICAgICAgICBpbnF1ZXVlLnB1dChOb25lKQoKICAgIGRlZiBfd2FpdF9mb3JfdXBkYXRlcyhzZWxmLCBzZW50aW5lbHMsIGNoYW5nZV9ub3RpZmllciwgdGltZW91dCk6CiAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0KQpQSwMEFAAAAAAAAyCjVk7VFMBJCQAASQkAAB0AAABtdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9yay5weWltcG9ydCBvcwppbXBvcnQgc2lnbmFsCgpmcm9tIC4gaW1wb3J0IHV0aWwKCl9fYWxsX18gPSBbJ1BvcGVuJ10KCiMKIyBTdGFydCBjaGlsZCBwcm9jZXNzIHVzaW5nIGZvcmsKIwoKY2xhc3MgUG9wZW4ob2JqZWN0KToKICAgIG1ldGhvZCA9ICdmb3JrJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzX29iaik6CiAgICAgICAgdXRpbC5fZmx1c2hfc3RkX3N0cmVhbXMoKQogICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKICAgICAgICBzZWxmLmZpbmFsaXplciA9IE5vbmUKICAgICAgICBzZWxmLl9sYXVuY2gocHJvY2Vzc19vYmopCgogICAgZGVmIGR1cGxpY2F0ZV9mb3JfY2hpbGQoc2VsZiwgZmQpOgogICAgICAgIHJldHVybiBmZAoKICAgIGRlZiBwb2xsKHNlbGYsIGZsYWc9b3MuV05PSEFORyk6CiAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gb3Mud2FpdHBpZChzZWxmLnBpZCwgZmxhZykKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAjIENoaWxkIHByb2Nlc3Mgbm90IHlldCBjcmVhdGVkLiBTZWUgIzE3MzE3MTcKICAgICAgICAgICAgICAgICMgZS5lcnJubyA9PSBlcnJuby5FQ0hJTEQgPT0gMTAKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgIGlmIHBpZCA9PSBzZWxmLnBpZDoKICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IG9zLndhaXRzdGF0dXNfdG9fZXhpdGNvZGUoc3RzKQogICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKCiAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogICAgICAgICAgICAgICAgaWYgbm90IHdhaXQoW3NlbGYuc2VudGluZWxdLCB0aW1lb3V0KToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGJsb2NrIGlmIHdhaXQoKSByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCiAgICAgICAgICAgIHJldHVybiBzZWxmLnBvbGwob3MuV05PSEFORyBpZiB0aW1lb3V0ID09IDAuMCBlbHNlIDApCiAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQoKICAgIGRlZiBfc2VuZF9zaWduYWwoc2VsZiwgc2lnKToKICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgb3Mua2lsbChzZWxmLnBpZCwgc2lnKQogICAgICAgICAgICBleGNlcHQgUHJvY2Vzc0xvb2t1cEVycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTAuMSkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByYWlzZQoKICAgIGRlZiB0ZXJtaW5hdGUoc2VsZik6CiAgICAgICAgc2VsZi5fc2VuZF9zaWduYWwoc2lnbmFsLlNJR1RFUk0pCgogICAgZGVmIGtpbGwoc2VsZik6CiAgICAgICAgc2VsZi5fc2VuZF9zaWduYWwoc2lnbmFsLlNJR0tJTEwpCgogICAgZGVmIF9sYXVuY2goc2VsZiwgcHJvY2Vzc19vYmopOgogICAgICAgIGNvZGUgPSAxCiAgICAgICAgcGFyZW50X3IsIGNoaWxkX3cgPSBvcy5waXBlKCkKICAgICAgICBjaGlsZF9yLCBwYXJlbnRfdyA9IG9zLnBpcGUoKQogICAgICAgIHNlbGYucGlkID0gb3MuZm9yaygpCiAgICAgICAgaWYgc2VsZi5waWQgPT0gMDoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgb3MuY2xvc2UocGFyZW50X3IpCiAgICAgICAgICAgICAgICBvcy5jbG9zZShwYXJlbnRfdykKICAgICAgICAgICAgICAgIGNvZGUgPSBwcm9jZXNzX29iai5fYm9vdHN0cmFwKHBhcmVudF9zZW50aW5lbD1jaGlsZF9yKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgb3MuX2V4aXQoY29kZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBvcy5jbG9zZShjaGlsZF93KQogICAgICAgICAgICBvcy5jbG9zZShjaGlsZF9yKQogICAgICAgICAgICBzZWxmLmZpbmFsaXplciA9IHV0aWwuRmluYWxpemUoc2VsZiwgdXRpbC5jbG9zZV9mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50X3IsIHBhcmVudF93LCkpCiAgICAgICAgICAgIHNlbGYuc2VudGluZWwgPSBwYXJlbnRfcgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiBzZWxmLmZpbmFsaXplciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5maW5hbGl6ZXIoKQpQSwMEFAAAAAAAAyCjVi8LVEq2CAAAtggAACMAAABtdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weWltcG9ydCBpbwppbXBvcnQgb3MKCmZyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgc2V0X3NwYXduaW5nX3BvcGVuCmlmIG5vdCByZWR1Y3Rpb24uSEFWRV9TRU5EX0hBTkRMRToKICAgIHJhaXNlIEltcG9ydEVycm9yKCdObyBzdXBwb3J0IGZvciBzZW5kaW5nIGZkcyBiZXR3ZWVuIHByb2Nlc3NlcycpCmZyb20gLiBpbXBvcnQgZm9ya3NlcnZlcgpmcm9tIC4gaW1wb3J0IHBvcGVuX2ZvcmsKZnJvbSAuIGltcG9ydCBzcGF3bgpmcm9tIC4gaW1wb3J0IHV0aWwKCgpfX2FsbF9fID0gWydQb3BlbiddCgojCiMgV3JhcHBlciBmb3IgYW4gZmQgdXNlZCB3aGlsZSBsYXVuY2hpbmcgYSBwcm9jZXNzCiMKCmNsYXNzIF9EdXBGZChvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZCk6CiAgICAgICAgc2VsZi5pbmQgPSBpbmQKICAgIGRlZiBkZXRhY2goc2VsZik6CiAgICAgICAgcmV0dXJuIGZvcmtzZXJ2ZXIuZ2V0X2luaGVyaXRlZF9mZHMoKVtzZWxmLmluZF0KCiMKIyBTdGFydCBjaGlsZCBwcm9jZXNzIHVzaW5nIGEgc2VydmVyIHByb2Nlc3MKIwoKY2xhc3MgUG9wZW4ocG9wZW5fZm9yay5Qb3Blbik6CiAgICBtZXRob2QgPSAnZm9ya3NlcnZlcicKICAgIER1cEZkID0gX0R1cEZkCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2Nlc3Nfb2JqKToKICAgICAgICBzZWxmLl9mZHMgPSBbXQogICAgICAgIHN1cGVyKCkuX19pbml0X18ocHJvY2Vzc19vYmopCgogICAgZGVmIGR1cGxpY2F0ZV9mb3JfY2hpbGQoc2VsZiwgZmQpOgogICAgICAgIHNlbGYuX2Zkcy5hcHBlbmQoZmQpCiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9mZHMpIC0gMQoKICAgIGRlZiBfbGF1bmNoKHNlbGYsIHByb2Nlc3Nfb2JqKToKICAgICAgICBwcmVwX2RhdGEgPSBzcGF3bi5nZXRfcHJlcGFyYXRpb25fZGF0YShwcm9jZXNzX29iai5fbmFtZSkKICAgICAgICBidWYgPSBpby5CeXRlc0lPKCkKICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByZXBfZGF0YSwgYnVmKQogICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgYnVmKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQoKICAgICAgICBzZWxmLnNlbnRpbmVsLCB3ID0gZm9ya3NlcnZlci5jb25uZWN0X3RvX25ld19wcm9jZXNzKHNlbGYuX2ZkcykKICAgICAgICAjIEtlZXAgYSBkdXBsaWNhdGUgb2YgdGhlIGRhdGEgcGlwZSdzIHdyaXRlIGVuZCBhcyBhIHNlbnRpbmVsIG9mIHRoZQogICAgICAgICMgcGFyZW50IHByb2Nlc3MgdXNlZCBieSB0aGUgY2hpbGQgcHJvY2Vzcy4KICAgICAgICBfcGFyZW50X3cgPSBvcy5kdXAodykKICAgICAgICBzZWxmLmZpbmFsaXplciA9IHV0aWwuRmluYWxpemUoc2VsZiwgdXRpbC5jbG9zZV9mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfcGFyZW50X3csIHNlbGYuc2VudGluZWwpKQogICAgICAgIHdpdGggb3Blbih3LCAnd2InLCBjbG9zZWZkPVRydWUpIGFzIGY6CiAgICAgICAgICAgIGYud3JpdGUoYnVmLmdldGJ1ZmZlcigpKQogICAgICAgIHNlbGYucGlkID0gZm9ya3NlcnZlci5yZWFkX3NpZ25lZChzZWxmLnNlbnRpbmVsKQoKICAgIGRlZiBwb2xsKHNlbGYsIGZsYWc9b3MuV05PSEFORyk6CiAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKICAgICAgICAgICAgdGltZW91dCA9IDAgaWYgZmxhZyA9PSBvcy5XTk9IQU5HIGVsc2UgTm9uZQogICAgICAgICAgICBpZiBub3Qgd2FpdChbc2VsZi5zZW50aW5lbF0sIHRpbWVvdXQpOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gZm9ya3NlcnZlci5yZWFkX3NpZ25lZChzZWxmLnNlbnRpbmVsKQogICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbm90IGhhcHBlbiB1c3VhbGx5LCBidXQgcGVyaGFwcyB0aGUgZm9ya3NlcnZlcgogICAgICAgICAgICAgICAgIyBwcm9jZXNzIGl0c2VsZiBnb3Qga2lsbGVkCiAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSAyNTUKCiAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQpQSwMEFAAAAAAAAyCjVg3eyAXtBwAA7QcAACQAAABtdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHlpbXBvcnQgaW8KaW1wb3J0IG9zCgpmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIHNldF9zcGF3bmluZ19wb3Blbgpmcm9tIC4gaW1wb3J0IHBvcGVuX2ZvcmsKZnJvbSAuIGltcG9ydCBzcGF3bgpmcm9tIC4gaW1wb3J0IHV0aWwKCl9fYWxsX18gPSBbJ1BvcGVuJ10KCgojCiMgV3JhcHBlciBmb3IgYW4gZmQgdXNlZCB3aGlsZSBsYXVuY2hpbmcgYSBwcm9jZXNzCiMKCmNsYXNzIF9EdXBGZChvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkKToKICAgICAgICBzZWxmLmZkID0gZmQKICAgIGRlZiBkZXRhY2goc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZmQKCiMKIyBTdGFydCBjaGlsZCBwcm9jZXNzIHVzaW5nIGEgZnJlc2ggaW50ZXJwcmV0ZXIKIwoKY2xhc3MgUG9wZW4ocG9wZW5fZm9yay5Qb3Blbik6CiAgICBtZXRob2QgPSAnc3Bhd24nCiAgICBEdXBGZCA9IF9EdXBGZAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzX29iaik6CiAgICAgICAgc2VsZi5fZmRzID0gW10KICAgICAgICBzdXBlcigpLl9faW5pdF9fKHByb2Nlc3Nfb2JqKQoKICAgIGRlZiBkdXBsaWNhdGVfZm9yX2NoaWxkKHNlbGYsIGZkKToKICAgICAgICBzZWxmLl9mZHMuYXBwZW5kKGZkKQogICAgICAgIHJldHVybiBmZAoKICAgIGRlZiBfbGF1bmNoKHNlbGYsIHByb2Nlc3Nfb2JqKToKICAgICAgICBmcm9tIC4gaW1wb3J0IHJlc291cmNlX3RyYWNrZXIKICAgICAgICB0cmFja2VyX2ZkID0gcmVzb3VyY2VfdHJhY2tlci5nZXRmZCgpCiAgICAgICAgc2VsZi5fZmRzLmFwcGVuZCh0cmFja2VyX2ZkKQogICAgICAgIHByZXBfZGF0YSA9IHNwYXduLmdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQogICAgICAgIGZwID0gaW8uQnl0ZXNJTygpCiAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcmVwX2RhdGEsIGZwKQogICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgZnApCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCgogICAgICAgIHBhcmVudF9yID0gY2hpbGRfdyA9IGNoaWxkX3IgPSBwYXJlbnRfdyA9IE5vbmUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhcmVudF9yLCBjaGlsZF93ID0gb3MucGlwZSgpCiAgICAgICAgICAgIGNoaWxkX3IsIHBhcmVudF93ID0gb3MucGlwZSgpCiAgICAgICAgICAgIGNtZCA9IHNwYXduLmdldF9jb21tYW5kX2xpbmUodHJhY2tlcl9mZD10cmFja2VyX2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVfaGFuZGxlPWNoaWxkX3IpCiAgICAgICAgICAgIHNlbGYuX2Zkcy5leHRlbmQoW2NoaWxkX3IsIGNoaWxkX3ddKQogICAgICAgICAgICBzZWxmLnBpZCA9IHV0aWwuc3Bhd252X3Bhc3NmZHMoc3Bhd24uZ2V0X2V4ZWN1dGFibGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCwgc2VsZi5fZmRzKQogICAgICAgICAgICBzZWxmLnNlbnRpbmVsID0gcGFyZW50X3IKICAgICAgICAgICAgd2l0aCBvcGVuKHBhcmVudF93LCAnd2InLCBjbG9zZWZkPUZhbHNlKSBhcyBmOgogICAgICAgICAgICAgICAgZi53cml0ZShmcC5nZXRidWZmZXIoKSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBmZHNfdG9fY2xvc2UgPSBbXQogICAgICAgICAgICBmb3IgZmQgaW4gKHBhcmVudF9yLCBwYXJlbnRfdyk6CiAgICAgICAgICAgICAgICBpZiBmZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBmZHNfdG9fY2xvc2UuYXBwZW5kKGZkKQogICAgICAgICAgICBzZWxmLmZpbmFsaXplciA9IHV0aWwuRmluYWxpemUoc2VsZiwgdXRpbC5jbG9zZV9mZHMsIGZkc190b19jbG9zZSkKCiAgICAgICAgICAgIGZvciBmZCBpbiAoY2hpbGRfciwgY2hpbGRfdyk6CiAgICAgICAgICAgICAgICBpZiBmZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKUEsDBBQAAAAAAAMgo1ZHdB+ztQ8AALUPAAAkAAAAbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5aW1wb3J0IG9zCmltcG9ydCBtc3ZjcnQKaW1wb3J0IHNpZ25hbAppbXBvcnQgc3lzCmltcG9ydCBfd2luYXBpCgpmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGdldF9zcGF3bmluZ19wb3Blbiwgc2V0X3NwYXduaW5nX3BvcGVuCmZyb20gLiBpbXBvcnQgc3Bhd24KZnJvbSAuIGltcG9ydCB1dGlsCgpfX2FsbF9fID0gWydQb3BlbiddCgojCiMKIwoKVEVSTUlOQVRFID0gMHgxMDAwMApXSU5FWEUgPSAoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIGdldGF0dHIoc3lzLCAnZnJvemVuJywgRmFsc2UpKQpXSU5TRVJWSUNFID0gc3lzLmV4ZWN1dGFibGUubG93ZXIoKS5lbmRzd2l0aCgicHl0aG9uc2VydmljZS5leGUiKQoKCmRlZiBfcGF0aF9lcShwMSwgcDIpOgogICAgcmV0dXJuIHAxID09IHAyIG9yIG9zLnBhdGgubm9ybWNhc2UocDEpID09IG9zLnBhdGgubm9ybWNhc2UocDIpCgpXSU5FTlYgPSBub3QgX3BhdGhfZXEoc3lzLmV4ZWN1dGFibGUsIHN5cy5fYmFzZV9leGVjdXRhYmxlKQoKCmRlZiBfY2xvc2VfaGFuZGxlcygqaGFuZGxlcyk6CiAgICBmb3IgaGFuZGxlIGluIGhhbmRsZXM6CiAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShoYW5kbGUpCgoKIwojIFdlIGRlZmluZSBhIFBvcGVuIGNsYXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmcm9tIHN1YnByb2Nlc3MsIGJ1dAojIHdob3NlIGNvbnN0cnVjdG9yIHRha2VzIGEgcHJvY2VzcyBvYmplY3QgYXMgaXRzIGFyZ3VtZW50LgojCgpjbGFzcyBQb3BlbihvYmplY3QpOgogICAgJycnCiAgICBTdGFydCBhIHN1YnByb2Nlc3MgdG8gcnVuIHRoZSBjb2RlIG9mIGEgcHJvY2VzcyBvYmplY3QKICAgICcnJwogICAgbWV0aG9kID0gJ3NwYXduJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzX29iaik6CiAgICAgICAgcHJlcF9kYXRhID0gc3Bhd24uZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCgogICAgICAgICMgcmVhZCBlbmQgb2YgcGlwZSB3aWxsIGJlIGR1cGxpY2F0ZWQgYnkgdGhlIGNoaWxkIHByb2Nlc3MKICAgICAgICAjIC0tIHNlZSBzcGF3bl9tYWluKCkgaW4gc3Bhd24ucHkuCiAgICAgICAgIwogICAgICAgICMgYnBvLTMzOTI5OiBQcmV2aW91c2x5LCB0aGUgcmVhZCBlbmQgb2YgcGlwZSB3YXMgInN0b2xlbiIgYnkgdGhlIGNoaWxkCiAgICAgICAgIyBwcm9jZXNzLCBidXQgaXQgbGVha2VkIGEgaGFuZGxlIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGhhZCBiZWVuCiAgICAgICAgIyB0ZXJtaW5hdGVkIGJlZm9yZSBpdCBjb3VsZCBzdGVhbCB0aGUgaGFuZGxlIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzLgogICAgICAgIHJoYW5kbGUsIHdoYW5kbGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKICAgICAgICB3ZmQgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUod2hhbmRsZSwgMCkKICAgICAgICBjbWQgPSBzcGF3bi5nZXRfY29tbWFuZF9saW5lKHBhcmVudF9waWQ9b3MuZ2V0cGlkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlX2hhbmRsZT1yaGFuZGxlKQoKICAgICAgICBweXRob25fZXhlID0gc3Bhd24uZ2V0X2V4ZWN1dGFibGUoKQoKICAgICAgICAjIGJwby0zNTc5NzogV2hlbiBydW5uaW5nIGluIGEgdmVudiwgd2UgYnlwYXNzIHRoZSByZWRpcmVjdAogICAgICAgICMgZXhlY3V0b3IgYW5kIGxhdW5jaCBvdXIgYmFzZSBQeXRob24uCiAgICAgICAgaWYgV0lORU5WIGFuZCBfcGF0aF9lcShweXRob25fZXhlLCBzeXMuZXhlY3V0YWJsZSk6CiAgICAgICAgICAgIGNtZFswXSA9IHB5dGhvbl9leGUgPSBzeXMuX2Jhc2VfZXhlY3V0YWJsZQogICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICAgICBlbnZbIl9fUFlWRU5WX0xBVU5DSEVSX18iXSA9IHN5cy5leGVjdXRhYmxlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW52ID0gTm9uZQoKICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGNtZCkKCiAgICAgICAgd2l0aCBvcGVuKHdmZCwgJ3diJywgY2xvc2VmZD1UcnVlKSBhcyB0b19jaGlsZDoKICAgICAgICAgICAgIyBzdGFydCBwcm9jZXNzCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfd2luYXBpLkNyZWF0ZVByb2Nlc3MoCiAgICAgICAgICAgICAgICAgICAgcHl0aG9uX2V4ZSwgY21kLAogICAgICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIEZhbHNlLCAwLCBlbnYsIE5vbmUsIE5vbmUpCiAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGh0KQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKHJoYW5kbGUpCiAgICAgICAgICAgICAgICByYWlzZQoKICAgICAgICAgICAgIyBzZXQgYXR0cmlidXRlcyBvZiBzZWxmCiAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCiAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaHAKICAgICAgICAgICAgc2VsZi5zZW50aW5lbCA9IGludChocCkKICAgICAgICAgICAgc2VsZi5maW5hbGl6ZXIgPSB1dGlsLkZpbmFsaXplKHNlbGYsIF9jbG9zZV9oYW5kbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuc2VudGluZWwsIGludChyaGFuZGxlKSkpCgogICAgICAgICAgICAjIHNlbmQgaW5mb3JtYXRpb24gdG8gY2hpbGQKICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByZXBfZGF0YSwgdG9fY2hpbGQpCiAgICAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKCiAgICBkZWYgZHVwbGljYXRlX2Zvcl9jaGlsZChzZWxmLCBoYW5kbGUpOgogICAgICAgIGFzc2VydCBzZWxmIGlzIGdldF9zcGF3bmluZ19wb3BlbigpCiAgICAgICAgcmV0dXJuIHJlZHVjdGlvbi5kdXBsaWNhdGUoaGFuZGxlLCBzZWxmLnNlbnRpbmVsKQoKICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgIG1zZWNzID0gX3dpbmFwaS5JTkZJTklURQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbXNlY3MgPSBtYXgoMCwgaW50KHRpbWVvdXQgKiAxMDAwICsgMC41KSkKCiAgICAgICAgICAgIHJlcyA9IF93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdChpbnQoc2VsZi5faGFuZGxlKSwgbXNlY3MpCiAgICAgICAgICAgIGlmIHJlcyA9PSBfd2luYXBpLldBSVRfT0JKRUNUXzA6CiAgICAgICAgICAgICAgICBjb2RlID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQogICAgICAgICAgICAgICAgaWYgY29kZSA9PSBURVJNSU5BVEU6CiAgICAgICAgICAgICAgICAgICAgY29kZSA9IC1zaWduYWwuU0lHVEVSTQogICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gY29kZQoKICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCgogICAgZGVmIHBvbGwoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYud2FpdCh0aW1lb3V0PTApCgogICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgX3dpbmFwaS5UZXJtaW5hdGVQcm9jZXNzKGludChzZWxmLl9oYW5kbGUpLCBURVJNSU5BVEUpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgaWYgc2VsZi53YWl0KHRpbWVvdXQ9MS4wKSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCgogICAga2lsbCA9IHRlcm1pbmF0ZQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLmZpbmFsaXplcigpClBLAwQUAAAAAAADIKNWdrssXkovAABKLwAAGgAAAG11bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5IwojIE1vZHVsZSBwcm92aWRpbmcgdGhlIGBQcm9jZXNzYCBjbGFzcyB3aGljaCBlbXVsYXRlcyBgdGhyZWFkaW5nLlRocmVhZGAKIwojIG11bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgojCgpfX2FsbF9fID0gWydCYXNlUHJvY2VzcycsICdjdXJyZW50X3Byb2Nlc3MnLCAnYWN0aXZlX2NoaWxkcmVuJywKICAgICAgICAgICAncGFyZW50X3Byb2Nlc3MnXQoKIwojIEltcG9ydHMKIwoKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IHNpZ25hbAppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCB0aHJlYWRpbmcKZnJvbSBfd2Vha3JlZnNldCBpbXBvcnQgV2Vha1NldAoKIwojCiMKCnRyeToKICAgIE9SSUdJTkFMX0RJUiA9IG9zLnBhdGguYWJzcGF0aChvcy5nZXRjd2QoKSkKZXhjZXB0IE9TRXJyb3I6CiAgICBPUklHSU5BTF9ESVIgPSBOb25lCgojCiMgUHVibGljIGZ1bmN0aW9ucwojCgpkZWYgY3VycmVudF9wcm9jZXNzKCk6CiAgICAnJycKICAgIFJldHVybiBwcm9jZXNzIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgcHJvY2VzcwogICAgJycnCiAgICByZXR1cm4gX2N1cnJlbnRfcHJvY2VzcwoKZGVmIGFjdGl2ZV9jaGlsZHJlbigpOgogICAgJycnCiAgICBSZXR1cm4gbGlzdCBvZiBwcm9jZXNzIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byBsaXZlIGNoaWxkIHByb2Nlc3NlcwogICAgJycnCiAgICBfY2xlYW51cCgpCiAgICByZXR1cm4gbGlzdChfY2hpbGRyZW4pCgoKZGVmIHBhcmVudF9wcm9jZXNzKCk6CiAgICAnJycKICAgIFJldHVybiBwcm9jZXNzIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhcmVudCBwcm9jZXNzCiAgICAnJycKICAgIHJldHVybiBfcGFyZW50X3Byb2Nlc3MKCiMKIwojCgpkZWYgX2NsZWFudXAoKToKICAgICMgY2hlY2sgZm9yIHByb2Nlc3NlcyB3aGljaCBoYXZlIGZpbmlzaGVkCiAgICBmb3IgcCBpbiBsaXN0KF9jaGlsZHJlbik6CiAgICAgICAgaWYgcC5fcG9wZW4ucG9sbCgpIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfY2hpbGRyZW4uZGlzY2FyZChwKQoKIwojIFRoZSBgUHJvY2Vzc2AgY2xhc3MKIwoKY2xhc3MgQmFzZVByb2Nlc3Mob2JqZWN0KToKICAgICcnJwogICAgUHJvY2VzcyBvYmplY3RzIHJlcHJlc2VudCBhY3Rpdml0eSB0aGF0IGlzIHJ1biBpbiBhIHNlcGFyYXRlIHByb2Nlc3MKCiAgICBUaGUgY2xhc3MgaXMgYW5hbG9nb3VzIHRvIGB0aHJlYWRpbmcuVGhyZWFkYAogICAgJycnCiAgICBkZWYgX1BvcGVuKHNlbGYpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9LAogICAgICAgICAgICAgICAgICosIGRhZW1vbj1Ob25lKToKICAgICAgICBhc3NlcnQgZ3JvdXAgaXMgTm9uZSwgJ2dyb3VwIGFyZ3VtZW50IG11c3QgYmUgTm9uZSBmb3Igbm93JwogICAgICAgIGNvdW50ID0gbmV4dChfcHJvY2Vzc19jb3VudGVyKQogICAgICAgIHNlbGYuX2lkZW50aXR5ID0gX2N1cnJlbnRfcHJvY2Vzcy5faWRlbnRpdHkgKyAoY291bnQsKQogICAgICAgIHNlbGYuX2NvbmZpZyA9IF9jdXJyZW50X3Byb2Nlc3MuX2NvbmZpZy5jb3B5KCkKICAgICAgICBzZWxmLl9wYXJlbnRfcGlkID0gb3MuZ2V0cGlkKCkKICAgICAgICBzZWxmLl9wYXJlbnRfbmFtZSA9IF9jdXJyZW50X3Byb2Nlc3MubmFtZQogICAgICAgIHNlbGYuX3BvcGVuID0gTm9uZQogICAgICAgIHNlbGYuX2Nsb3NlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fdGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgc2VsZi5fYXJncyA9IHR1cGxlKGFyZ3MpCiAgICAgICAgc2VsZi5fa3dhcmdzID0gZGljdChrd2FyZ3MpCiAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUgb3IgdHlwZShzZWxmKS5fX25hbWVfXyArICctJyArIFwKICAgICAgICAgICAgICAgICAgICAgJzonLmpvaW4oc3RyKGkpIGZvciBpIGluIHNlbGYuX2lkZW50aXR5KQogICAgICAgIGlmIGRhZW1vbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5kYWVtb24gPSBkYWVtb24KICAgICAgICBfZGFuZ2xpbmcuYWRkKHNlbGYpCgogICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9jZXNzIG9iamVjdCBpcyBjbG9zZWQiKQoKICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgJycnCiAgICAgICAgTWV0aG9kIHRvIGJlIHJ1biBpbiBzdWItcHJvY2VzczsgY2FuIGJlIG92ZXJyaWRkZW4gaW4gc3ViLWNsYXNzCiAgICAgICAgJycnCiAgICAgICAgaWYgc2VsZi5fdGFyZ2V0OgogICAgICAgICAgICBzZWxmLl90YXJnZXQoKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQoKICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAnJycKICAgICAgICBTdGFydCBjaGlsZCBwcm9jZXNzCiAgICAgICAgJycnCiAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICBhc3NlcnQgc2VsZi5fcG9wZW4gaXMgTm9uZSwgJ2Nhbm5vdCBzdGFydCBhIHByb2Nlc3MgdHdpY2UnCiAgICAgICAgYXNzZXJ0IHNlbGYuX3BhcmVudF9waWQgPT0gb3MuZ2V0cGlkKCksIFwKICAgICAgICAgICAgICAgJ2NhbiBvbmx5IHN0YXJ0IGEgcHJvY2VzcyBvYmplY3QgY3JlYXRlZCBieSBjdXJyZW50IHByb2Nlc3MnCiAgICAgICAgYXNzZXJ0IG5vdCBfY3VycmVudF9wcm9jZXNzLl9jb25maWcuZ2V0KCdkYWVtb24nKSwgXAogICAgICAgICAgICAgICAnZGFlbW9uaWMgcHJvY2Vzc2VzIGFyZSBub3QgYWxsb3dlZCB0byBoYXZlIGNoaWxkcmVuJwogICAgICAgIF9jbGVhbnVwKCkKICAgICAgICBzZWxmLl9wb3BlbiA9IHNlbGYuX1BvcGVuKHNlbGYpCiAgICAgICAgc2VsZi5fc2VudGluZWwgPSBzZWxmLl9wb3Blbi5zZW50aW5lbAogICAgICAgICMgQXZvaWQgYSByZWZjeWNsZSBpZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGhvbGRzIGFuIGluZGlyZWN0CiAgICAgICAgIyByZWZlcmVuY2UgdG8gdGhlIHByb2Nlc3Mgb2JqZWN0IChzZWUgYnBvLTMwNzc1KQogICAgICAgIGRlbCBzZWxmLl90YXJnZXQsIHNlbGYuX2FyZ3MsIHNlbGYuX2t3YXJncwogICAgICAgIF9jaGlsZHJlbi5hZGQoc2VsZikKCiAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICcnJwogICAgICAgIFRlcm1pbmF0ZSBwcm9jZXNzOyBzZW5kcyBTSUdURVJNIHNpZ25hbCBvciB1c2VzIFRlcm1pbmF0ZVByb2Nlc3MoKQogICAgICAgICcnJwogICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgc2VsZi5fcG9wZW4udGVybWluYXRlKCkKCiAgICBkZWYga2lsbChzZWxmKToKICAgICAgICAnJycKICAgICAgICBUZXJtaW5hdGUgcHJvY2Vzczsgc2VuZHMgU0lHS0lMTCBzaWduYWwgb3IgdXNlcyBUZXJtaW5hdGVQcm9jZXNzKCkKICAgICAgICAnJycKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIHNlbGYuX3BvcGVuLmtpbGwoKQoKICAgIGRlZiBqb2luKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgJycnCiAgICAgICAgV2FpdCB1bnRpbCBjaGlsZCBwcm9jZXNzIHRlcm1pbmF0ZXMKICAgICAgICAnJycKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIGFzc2VydCBzZWxmLl9wYXJlbnRfcGlkID09IG9zLmdldHBpZCgpLCAnY2FuIG9ubHkgam9pbiBhIGNoaWxkIHByb2Nlc3MnCiAgICAgICAgYXNzZXJ0IHNlbGYuX3BvcGVuIGlzIG5vdCBOb25lLCAnY2FuIG9ubHkgam9pbiBhIHN0YXJ0ZWQgcHJvY2VzcycKICAgICAgICByZXMgPSBzZWxmLl9wb3Blbi53YWl0KHRpbWVvdXQpCiAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfY2hpbGRyZW4uZGlzY2FyZChzZWxmKQoKICAgIGRlZiBpc19hbGl2ZShzZWxmKToKICAgICAgICAnJycKICAgICAgICBSZXR1cm4gd2hldGhlciBwcm9jZXNzIGlzIGFsaXZlCiAgICAgICAgJycnCiAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICBpZiBzZWxmIGlzIF9jdXJyZW50X3Byb2Nlc3M6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgYXNzZXJ0IHNlbGYuX3BhcmVudF9waWQgPT0gb3MuZ2V0cGlkKCksICdjYW4gb25seSB0ZXN0IGEgY2hpbGQgcHJvY2VzcycKCiAgICAgICAgaWYgc2VsZi5fcG9wZW4gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIHJldHVybmNvZGUgPSBzZWxmLl9wb3Blbi5wb2xsKCkKICAgICAgICBpZiByZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgX2NoaWxkcmVuLmRpc2NhcmQoc2VsZikKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICcnJwogICAgICAgIENsb3NlIHRoZSBQcm9jZXNzIG9iamVjdC4KCiAgICAgICAgVGhpcyBtZXRob2QgcmVsZWFzZXMgcmVzb3VyY2VzIGhlbGQgYnkgdGhlIFByb2Nlc3Mgb2JqZWN0LiAgSXQgaXMKICAgICAgICBhbiBlcnJvciB0byBjYWxsIHRoaXMgbWV0aG9kIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCiAgICAgICAgJycnCiAgICAgICAgaWYgc2VsZi5fcG9wZW4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYuX3BvcGVuLnBvbGwoKSBpcyBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNsb3NlIGEgcHJvY2VzcyB3aGlsZSBpdCBpcyBzdGlsbCBydW5uaW5nLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3Ugc2hvdWxkIGZpcnN0IGNhbGwgam9pbigpIG9yIHRlcm1pbmF0ZSgpLiIpCiAgICAgICAgICAgIHNlbGYuX3BvcGVuLmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5fcG9wZW4gPSBOb25lCiAgICAgICAgICAgIGRlbCBzZWxmLl9zZW50aW5lbAogICAgICAgICAgICBfY2hpbGRyZW4uZGlzY2FyZChzZWxmKQogICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9uYW1lCgogICAgQG5hbWUuc2V0dGVyCiAgICBkZWYgbmFtZShzZWxmLCBuYW1lKToKICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShuYW1lLCBzdHIpLCAnbmFtZSBtdXN0IGJlIGEgc3RyaW5nJwogICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCgogICAgQHByb3BlcnR5CiAgICBkZWYgZGFlbW9uKHNlbGYpOgogICAgICAgICcnJwogICAgICAgIFJldHVybiB3aGV0aGVyIHByb2Nlc3MgaXMgYSBkYWVtb24KICAgICAgICAnJycKICAgICAgICByZXR1cm4gc2VsZi5fY29uZmlnLmdldCgnZGFlbW9uJywgRmFsc2UpCgogICAgQGRhZW1vbi5zZXR0ZXIKICAgIGRlZiBkYWVtb24oc2VsZiwgZGFlbW9uaWMpOgogICAgICAgICcnJwogICAgICAgIFNldCB3aGV0aGVyIHByb2Nlc3MgaXMgYSBkYWVtb24KICAgICAgICAnJycKICAgICAgICBhc3NlcnQgc2VsZi5fcG9wZW4gaXMgTm9uZSwgJ3Byb2Nlc3MgaGFzIGFscmVhZHkgc3RhcnRlZCcKICAgICAgICBzZWxmLl9jb25maWdbJ2RhZW1vbiddID0gZGFlbW9uaWMKCiAgICBAcHJvcGVydHkKICAgIGRlZiBhdXRoa2V5KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9jb25maWdbJ2F1dGhrZXknXQoKICAgIEBhdXRoa2V5LnNldHRlcgogICAgZGVmIGF1dGhrZXkoc2VsZiwgYXV0aGtleSk6CiAgICAgICAgJycnCiAgICAgICAgU2V0IGF1dGhvcml6YXRpb24ga2V5IG9mIHByb2Nlc3MKICAgICAgICAnJycKICAgICAgICBzZWxmLl9jb25maWdbJ2F1dGhrZXknXSA9IEF1dGhlbnRpY2F0aW9uU3RyaW5nKGF1dGhrZXkpCgogICAgQHByb3BlcnR5CiAgICBkZWYgZXhpdGNvZGUoc2VsZik6CiAgICAgICAgJycnCiAgICAgICAgUmV0dXJuIGV4aXQgY29kZSBvZiBwcm9jZXNzIG9yIGBOb25lYCBpZiBpdCBoYXMgeWV0IHRvIHN0b3AKICAgICAgICAnJycKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIGlmIHNlbGYuX3BvcGVuIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3BlbgogICAgICAgIHJldHVybiBzZWxmLl9wb3Blbi5wb2xsKCkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBpZGVudChzZWxmKToKICAgICAgICAnJycKICAgICAgICBSZXR1cm4gaWRlbnRpZmllciAoUElEKSBvZiBwcm9jZXNzIG9yIGBOb25lYCBpZiBpdCBoYXMgeWV0IHRvIHN0YXJ0CiAgICAgICAgJycnCiAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICBpZiBzZWxmIGlzIF9jdXJyZW50X3Byb2Nlc3M6CiAgICAgICAgICAgIHJldHVybiBvcy5nZXRwaWQoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3BlbiBhbmQgc2VsZi5fcG9wZW4ucGlkCgogICAgcGlkID0gaWRlbnQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBzZW50aW5lbChzZWxmKToKICAgICAgICAnJycKICAgICAgICBSZXR1cm4gYSBmaWxlIGRlc2NyaXB0b3IgKFVuaXgpIG9yIGhhbmRsZSAoV2luZG93cykgc3VpdGFibGUgZm9yCiAgICAgICAgd2FpdGluZyBmb3IgcHJvY2VzcyB0ZXJtaW5hdGlvbi4KICAgICAgICAnJycKICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbnRpbmVsCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9jZXNzIG5vdCBzdGFydGVkIikgZnJvbSBOb25lCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGV4aXRjb2RlID0gTm9uZQogICAgICAgIGlmIHNlbGYgaXMgX2N1cnJlbnRfcHJvY2VzczoKICAgICAgICAgICAgc3RhdHVzID0gJ3N0YXJ0ZWQnCiAgICAgICAgZWxpZiBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgIHN0YXR1cyA9ICdjbG9zZWQnCiAgICAgICAgZWxpZiBzZWxmLl9wYXJlbnRfcGlkICE9IG9zLmdldHBpZCgpOgogICAgICAgICAgICBzdGF0dXMgPSAndW5rbm93bicKICAgICAgICBlbGlmIHNlbGYuX3BvcGVuIGlzIE5vbmU6CiAgICAgICAgICAgIHN0YXR1cyA9ICdpbml0aWFsJwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGV4aXRjb2RlID0gc2VsZi5fcG9wZW4ucG9sbCgpCiAgICAgICAgICAgIGlmIGV4aXRjb2RlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc3RhdHVzID0gJ3N0b3BwZWQnCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAnc3RhcnRlZCcKCiAgICAgICAgaW5mbyA9IFt0eXBlKHNlbGYpLl9fbmFtZV9fLCAnbmFtZT0lcicgJSBzZWxmLl9uYW1lXQogICAgICAgIGlmIHNlbGYuX3BvcGVuIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpbmZvLmFwcGVuZCgncGlkPSVzJyAlIHNlbGYuX3BvcGVuLnBpZCkKICAgICAgICBpbmZvLmFwcGVuZCgncGFyZW50PSVzJyAlIHNlbGYuX3BhcmVudF9waWQpCiAgICAgICAgaW5mby5hcHBlbmQoc3RhdHVzKQogICAgICAgIGlmIGV4aXRjb2RlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBleGl0Y29kZSA9IF9leGl0Y29kZV90b19uYW1lLmdldChleGl0Y29kZSwgZXhpdGNvZGUpCiAgICAgICAgICAgIGluZm8uYXBwZW5kKCdleGl0Y29kZT0lcycgJSBleGl0Y29kZSkKICAgICAgICBpZiBzZWxmLmRhZW1vbjoKICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2RhZW1vbicpCiAgICAgICAgcmV0dXJuICc8JXM+JyAlICcgJy5qb2luKGluZm8pCgogICAgIyMKCiAgICBkZWYgX2Jvb3RzdHJhcChzZWxmLCBwYXJlbnRfc2VudGluZWw9Tm9uZSk6CiAgICAgICAgZnJvbSAuIGltcG9ydCB1dGlsLCBjb250ZXh0CiAgICAgICAgZ2xvYmFsIF9jdXJyZW50X3Byb2Nlc3MsIF9wYXJlbnRfcHJvY2VzcywgX3Byb2Nlc3NfY291bnRlciwgX2NoaWxkcmVuCgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5fc3RhcnRfbWV0aG9kIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgY29udGV4dC5fZm9yY2Vfc3RhcnRfbWV0aG9kKHNlbGYuX3N0YXJ0X21ldGhvZCkKICAgICAgICAgICAgX3Byb2Nlc3NfY291bnRlciA9IGl0ZXJ0b29scy5jb3VudCgxKQogICAgICAgICAgICBfY2hpbGRyZW4gPSBzZXQoKQogICAgICAgICAgICB1dGlsLl9jbG9zZV9zdGRpbigpCiAgICAgICAgICAgIG9sZF9wcm9jZXNzID0gX2N1cnJlbnRfcHJvY2VzcwogICAgICAgICAgICBfY3VycmVudF9wcm9jZXNzID0gc2VsZgogICAgICAgICAgICBfcGFyZW50X3Byb2Nlc3MgPSBfUGFyZW50UHJvY2VzcygKICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudF9uYW1lLCBzZWxmLl9wYXJlbnRfcGlkLCBwYXJlbnRfc2VudGluZWwpCiAgICAgICAgICAgIGlmIHRocmVhZGluZy5fSEFWRV9USFJFQURfTkFUSVZFX0lEOgogICAgICAgICAgICAgICAgdGhyZWFkaW5nLm1haW5fdGhyZWFkKCkuX3NldF9uYXRpdmVfaWQoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLl9hZnRlcl9mb3JrKCkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICMgZGVsYXkgZmluYWxpemF0aW9uIG9mIHRoZSBvbGQgcHJvY2VzcyBvYmplY3QgdW50aWwgYWZ0ZXIKICAgICAgICAgICAgICAgICMgX3J1bl9hZnRlcl9mb3JrZXJzKCkgaXMgZXhlY3V0ZWQKICAgICAgICAgICAgICAgIGRlbCBvbGRfcHJvY2VzcwogICAgICAgICAgICB1dGlsLmluZm8oJ2NoaWxkIHByb2Nlc3MgY2FsbGluZyBzZWxmLnJ1bigpJykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5ydW4oKQogICAgICAgICAgICAgICAgZXhpdGNvZGUgPSAwCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICB1dGlsLl9leGl0X2Z1bmN0aW9uKCkKICAgICAgICBleGNlcHQgU3lzdGVtRXhpdCBhcyBlOgogICAgICAgICAgICBpZiBlLmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gMAogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZS5jb2RlLCBpbnQpOgogICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBlLmNvZGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoc3RyKGUuY29kZSkgKyAnXG4nKQogICAgICAgICAgICAgICAgZXhpdGNvZGUgPSAxCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBleGl0Y29kZSA9IDEKICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdQcm9jZXNzICVzOlxuJyAlIHNlbGYubmFtZSkKICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgdGhyZWFkaW5nLl9zaHV0ZG93bigpCiAgICAgICAgICAgIHV0aWwuaW5mbygncHJvY2VzcyBleGl0aW5nIHdpdGggZXhpdGNvZGUgJWQnICUgZXhpdGNvZGUpCiAgICAgICAgICAgIHV0aWwuX2ZsdXNoX3N0ZF9zdHJlYW1zKCkKCiAgICAgICAgcmV0dXJuIGV4aXRjb2RlCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9hZnRlcl9mb3JrKCk6CiAgICAgICAgZnJvbSAuIGltcG9ydCB1dGlsCiAgICAgICAgdXRpbC5fZmluYWxpemVyX3JlZ2lzdHJ5LmNsZWFyKCkKICAgICAgICB1dGlsLl9ydW5fYWZ0ZXJfZm9ya2VycygpCgoKIwojIFdlIHN1YmNsYXNzIGJ5dGVzIHRvIGF2b2lkIGFjY2lkZW50YWwgdHJhbnNtaXNzaW9uIG9mIGF1dGgga2V5cyBvdmVyIG5ldHdvcmsKIwoKY2xhc3MgQXV0aGVudGljYXRpb25TdHJpbmcoYnl0ZXMpOgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgZnJvbSAuY29udGV4dCBpbXBvcnQgZ2V0X3NwYXduaW5nX3BvcGVuCiAgICAgICAgaWYgZ2V0X3NwYXduaW5nX3BvcGVuKCkgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgJ1BpY2tsaW5nIGFuIEF1dGhlbnRpY2F0aW9uU3RyaW5nIG9iamVjdCBpcyAnCiAgICAgICAgICAgICAgICAnZGlzYWxsb3dlZCBmb3Igc2VjdXJpdHkgcmVhc29ucycKICAgICAgICAgICAgICAgICkKICAgICAgICByZXR1cm4gQXV0aGVudGljYXRpb25TdHJpbmcsIChieXRlcyhzZWxmKSwpCgoKIwojIENyZWF0ZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwYXJlbnQgcHJvY2VzcwojCgpjbGFzcyBfUGFyZW50UHJvY2VzcyhCYXNlUHJvY2Vzcyk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBpZCwgc2VudGluZWwpOgogICAgICAgIHNlbGYuX2lkZW50aXR5ID0gKCkKICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgIHNlbGYuX3BpZCA9IHBpZAogICAgICAgIHNlbGYuX3BhcmVudF9waWQgPSBOb25lCiAgICAgICAgc2VsZi5fcG9wZW4gPSBOb25lCiAgICAgICAgc2VsZi5fY2xvc2VkID0gRmFsc2UKICAgICAgICBzZWxmLl9zZW50aW5lbCA9IHNlbnRpbmVsCiAgICAgICAgc2VsZi5fY29uZmlnID0ge30KCiAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogICAgICAgIHJldHVybiBub3Qgd2FpdChbc2VsZi5fc2VudGluZWxdLCB0aW1lb3V0PTApCgogICAgQHByb3BlcnR5CiAgICBkZWYgaWRlbnQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3BpZAoKICAgIGRlZiBqb2luKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgJycnCiAgICAgICAgV2FpdCB1bnRpbCBwYXJlbnQgcHJvY2VzcyB0ZXJtaW5hdGVzCiAgICAgICAgJycnCiAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogICAgICAgIHdhaXQoW3NlbGYuX3NlbnRpbmVsXSwgdGltZW91dD10aW1lb3V0KQoKICAgIHBpZCA9IGlkZW50CgojCiMgQ3JlYXRlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG1haW4gcHJvY2VzcwojCgpjbGFzcyBfTWFpblByb2Nlc3MoQmFzZVByb2Nlc3MpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9pZGVudGl0eSA9ICgpCiAgICAgICAgc2VsZi5fbmFtZSA9ICdNYWluUHJvY2VzcycKICAgICAgICBzZWxmLl9wYXJlbnRfcGlkID0gTm9uZQogICAgICAgIHNlbGYuX3BvcGVuID0gTm9uZQogICAgICAgIHNlbGYuX2Nsb3NlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fY29uZmlnID0geydhdXRoa2V5JzogQXV0aGVudGljYXRpb25TdHJpbmcob3MudXJhbmRvbSgzMikpLAogICAgICAgICAgICAgICAgICAgICAgICAnc2VtcHJlZml4JzogJy9tcCd9CiAgICAgICAgIyBOb3RlIHRoYXQgc29tZSB2ZXJzaW9ucyBvZiBGcmVlQlNEIG9ubHkgYWxsb3cgbmFtZWQKICAgICAgICAjIHNlbWFwaG9yZXMgdG8gaGF2ZSBuYW1lcyBvZiB1cCB0byAxNCBjaGFyYWN0ZXJzLiAgVGhlcmVmb3JlCiAgICAgICAgIyB3ZSBjaG9vc2UgYSBzaG9ydCBwcmVmaXguCiAgICAgICAgIwogICAgICAgICMgT24gTWFjT1NYIGluIGEgc2FuZGJveCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHVzZSBhCiAgICAgICAgIyBkaWZmZXJlbnQgcHJlZml4IC0tIHNlZSAjMTk0NzguCiAgICAgICAgIwogICAgICAgICMgRXZlcnl0aGluZyBpbiBzZWxmLl9jb25maWcgd2lsbCBiZSBpbmhlcml0ZWQgYnkgZGVzY2VuZGFudAogICAgICAgICMgcHJvY2Vzc2VzLgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBwYXNzCgoKX3BhcmVudF9wcm9jZXNzID0gTm9uZQpfY3VycmVudF9wcm9jZXNzID0gX01haW5Qcm9jZXNzKCkKX3Byb2Nlc3NfY291bnRlciA9IGl0ZXJ0b29scy5jb3VudCgxKQpfY2hpbGRyZW4gPSBzZXQoKQpkZWwgX01haW5Qcm9jZXNzCgojCiMgR2l2ZSBuYW1lcyB0byBzb21lIHJldHVybiBjb2RlcwojCgpfZXhpdGNvZGVfdG9fbmFtZSA9IHt9Cgpmb3IgbmFtZSwgc2lnbnVtIGluIGxpc3Qoc2lnbmFsLl9fZGljdF9fLml0ZW1zKCkpOgogICAgaWYgbmFtZVs6M109PSdTSUcnIGFuZCAnXycgbm90IGluIG5hbWU6CiAgICAgICAgX2V4aXRjb2RlX3RvX25hbWVbLXNpZ251bV0gPSBmJy17bmFtZX0nCmRlbCBuYW1lLCBzaWdudW0KCiMgRm9yIGRlYnVnIGFuZCBsZWFrIHRlc3RpbmcKX2RhbmdsaW5nID0gV2Vha1NldCgpClBLAwQUAAAAAAADIKNWRA+8l/cuAAD3LgAAGQAAAG11bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkjCiMgTW9kdWxlIGltcGxlbWVudGluZyBxdWV1ZXMKIwojIG11bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKIwojIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiMKCl9fYWxsX18gPSBbJ1F1ZXVlJywgJ1NpbXBsZVF1ZXVlJywgJ0pvaW5hYmxlUXVldWUnXQoKaW1wb3J0IHN5cwppbXBvcnQgb3MKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgY29sbGVjdGlvbnMKaW1wb3J0IHRpbWUKaW1wb3J0IHR5cGVzCmltcG9ydCB3ZWFrcmVmCmltcG9ydCBlcnJubwoKZnJvbSBxdWV1ZSBpbXBvcnQgRW1wdHksIEZ1bGwKCmltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCgpmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KZnJvbSAuIGltcG9ydCBjb250ZXh0Cl9Gb3JraW5nUGlja2xlciA9IGNvbnRleHQucmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCgpmcm9tIC51dGlsIGltcG9ydCBkZWJ1ZywgaW5mbywgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGlzX2V4aXRpbmcKCiMKIyBRdWV1ZSB0eXBlIHVzaW5nIGEgcGlwZSwgYnVmZmVyIGFuZCB0aHJlYWQKIwoKY2xhc3MgUXVldWUob2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4c2l6ZT0wLCAqLCBjdHgpOgogICAgICAgIGlmIG1heHNpemUgPD0gMDoKICAgICAgICAgICAgIyBDYW4gcmFpc2UgSW1wb3J0RXJyb3IgKHNlZSBpc3N1ZXMgIzM3NzAgYW5kICMyMzQwMCkKICAgICAgICAgICAgZnJvbSAuc3luY2hyb25pemUgaW1wb3J0IFNFTV9WQUxVRV9NQVggYXMgbWF4c2l6ZQogICAgICAgIHNlbGYuX21heHNpemUgPSBtYXhzaXplCiAgICAgICAgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIgPSBjb25uZWN0aW9uLlBpcGUoZHVwbGV4PUZhbHNlKQogICAgICAgIHNlbGYuX3Jsb2NrID0gY3R4LkxvY2soKQogICAgICAgIHNlbGYuX29waWQgPSBvcy5nZXRwaWQoKQogICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICBzZWxmLl93bG9jayA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl93bG9jayA9IGN0eC5Mb2NrKCkKICAgICAgICBzZWxmLl9zZW0gPSBjdHguQm91bmRlZFNlbWFwaG9yZShtYXhzaXplKQogICAgICAgICMgRm9yIHVzZSBieSBjb25jdXJyZW50LmZ1dHVyZXMKICAgICAgICBzZWxmLl9pZ25vcmVfZXBpcGUgPSBGYWxzZQogICAgICAgIHNlbGYuX3Jlc2V0KCkKCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgIHJlZ2lzdGVyX2FmdGVyX2Zvcmsoc2VsZiwgUXVldWUuX2FmdGVyX2ZvcmspCgogICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICBjb250ZXh0LmFzc2VydF9zcGF3bmluZyhzZWxmKQogICAgICAgIHJldHVybiAoc2VsZi5faWdub3JlX2VwaXBlLCBzZWxmLl9tYXhzaXplLCBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwKICAgICAgICAgICAgICAgIHNlbGYuX3Jsb2NrLCBzZWxmLl93bG9jaywgc2VsZi5fc2VtLCBzZWxmLl9vcGlkKQoKICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgogICAgICAgIChzZWxmLl9pZ25vcmVfZXBpcGUsIHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAogICAgICAgICBzZWxmLl9ybG9jaywgc2VsZi5fd2xvY2ssIHNlbGYuX3NlbSwgc2VsZi5fb3BpZCkgPSBzdGF0ZQogICAgICAgIHNlbGYuX3Jlc2V0KCkKCiAgICBkZWYgX2FmdGVyX2Zvcmsoc2VsZik6CiAgICAgICAgZGVidWcoJ1F1ZXVlLl9hZnRlcl9mb3JrKCknKQogICAgICAgIHNlbGYuX3Jlc2V0KGFmdGVyX2Zvcms9VHJ1ZSkKCiAgICBkZWYgX3Jlc2V0KHNlbGYsIGFmdGVyX2Zvcms9RmFsc2UpOgogICAgICAgIGlmIGFmdGVyX2Zvcms6CiAgICAgICAgICAgIHNlbGYuX25vdGVtcHR5Ll9hdF9mb3JrX3JlaW5pdCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbm90ZW1wdHkgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHRocmVhZGluZy5Mb2NrKCkpCiAgICAgICAgc2VsZi5fYnVmZmVyID0gY29sbGVjdGlvbnMuZGVxdWUoKQogICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKICAgICAgICBzZWxmLl9qb2ludGhyZWFkID0gTm9uZQogICAgICAgIHNlbGYuX2pvaW5jYW5jZWxsZWQgPSBGYWxzZQogICAgICAgIHNlbGYuX2Nsb3NlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fY2xvc2UgPSBOb25lCiAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyA9IHNlbGYuX3dyaXRlci5zZW5kX2J5dGVzCiAgICAgICAgc2VsZi5fcmVjdl9ieXRlcyA9IHNlbGYuX3JlYWRlci5yZWN2X2J5dGVzCiAgICAgICAgc2VsZi5fcG9sbCA9IHNlbGYuX3JlYWRlci5wb2xsCgogICAgZGVmIHB1dChzZWxmLCBvYmosIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiUXVldWUge3NlbGYhcn0gaXMgY2xvc2VkIikKICAgICAgICBpZiBub3Qgc2VsZi5fc2VtLmFjcXVpcmUoYmxvY2ssIHRpbWVvdXQpOgogICAgICAgICAgICByYWlzZSBGdWxsCgogICAgICAgIHdpdGggc2VsZi5fbm90ZW1wdHk6CiAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZCBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5fc3RhcnRfdGhyZWFkKCkKICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmFwcGVuZChvYmopCiAgICAgICAgICAgIHNlbGYuX25vdGVtcHR5Lm5vdGlmeSgpCgogICAgZGVmIGdldChzZWxmLCBibG9jaz1UcnVlLCB0aW1lb3V0PU5vbmUpOgogICAgICAgIGlmIHNlbGYuX2Nsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIlF1ZXVlIHtzZWxmIXJ9IGlzIGNsb3NlZCIpCiAgICAgICAgaWYgYmxvY2sgYW5kIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgd2l0aCBzZWxmLl9ybG9jazoKICAgICAgICAgICAgICAgIHJlcyA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQogICAgICAgICAgICBzZWxmLl9zZW0ucmVsZWFzZSgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgYmxvY2s6CiAgICAgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyB0aW1lb3V0CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9ybG9jay5hY3F1aXJlKGJsb2NrLCB0aW1lb3V0KToKICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGJsb2NrOgogICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUubW9ub3RvbmljKCkKICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcG9sbCh0aW1lb3V0KToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW1wdHkKICAgICAgICAgICAgICAgIGVsaWYgbm90IHNlbGYuX3BvbGwoKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBFbXB0eQogICAgICAgICAgICAgICAgcmVzID0gc2VsZi5fcmVjdl9ieXRlcygpCiAgICAgICAgICAgICAgICBzZWxmLl9zZW0ucmVsZWFzZSgpCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBzZWxmLl9ybG9jay5yZWxlYXNlKCkKICAgICAgICAjIHVuc2VyaWFsaXplIHRoZSBkYXRhIGFmdGVyIGhhdmluZyByZWxlYXNlZCB0aGUgbG9jawogICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQoKICAgIGRlZiBxc2l6ZShzZWxmKToKICAgICAgICAjIFJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yIG9uIE1hYyBPU1ggYmVjYXVzZSBvZiBicm9rZW4gc2VtX2dldHZhbHVlKCkKICAgICAgICByZXR1cm4gc2VsZi5fbWF4c2l6ZSAtIHNlbGYuX3NlbS5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkKCiAgICBkZWYgZW1wdHkoc2VsZik6CiAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9wb2xsKCkKCiAgICBkZWYgZnVsbChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc2VtLl9zZW1sb2NrLl9pc196ZXJvKCkKCiAgICBkZWYgZ2V0X25vd2FpdChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5nZXQoRmFsc2UpCgogICAgZGVmIHB1dF9ub3dhaXQoc2VsZiwgb2JqKToKICAgICAgICByZXR1cm4gc2VsZi5wdXQob2JqLCBGYWxzZSkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgc2VsZi5fY2xvc2VkID0gVHJ1ZQogICAgICAgIGNsb3NlID0gc2VsZi5fY2xvc2UKICAgICAgICBpZiBjbG9zZToKICAgICAgICAgICAgc2VsZi5fY2xvc2UgPSBOb25lCiAgICAgICAgICAgIGNsb3NlKCkKCiAgICBkZWYgam9pbl90aHJlYWQoc2VsZik6CiAgICAgICAgZGVidWcoJ1F1ZXVlLmpvaW5fdGhyZWFkKCknKQogICAgICAgIGFzc2VydCBzZWxmLl9jbG9zZWQsICJRdWV1ZSB7MCFyfSBub3QgY2xvc2VkIi5mb3JtYXQoc2VsZikKICAgICAgICBpZiBzZWxmLl9qb2ludGhyZWFkOgogICAgICAgICAgICBzZWxmLl9qb2ludGhyZWFkKCkKCiAgICBkZWYgY2FuY2VsX2pvaW5fdGhyZWFkKHNlbGYpOgogICAgICAgIGRlYnVnKCdRdWV1ZS5jYW5jZWxfam9pbl90aHJlYWQoKScpCiAgICAgICAgc2VsZi5fam9pbmNhbmNlbGxlZCA9IFRydWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX2pvaW50aHJlYWQuY2FuY2VsKCkKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICBkZWYgX3N0YXJ0X3RocmVhZChzZWxmKToKICAgICAgICBkZWJ1ZygnUXVldWUuX3N0YXJ0X3RocmVhZCgpJykKCiAgICAgICAgIyBTdGFydCB0aHJlYWQgd2hpY2ggdHJhbnNmZXJzIGRhdGEgZnJvbSBidWZmZXIgdG8gcGlwZQogICAgICAgIHNlbGYuX2J1ZmZlci5jbGVhcigpCiAgICAgICAgc2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCgKICAgICAgICAgICAgdGFyZ2V0PVF1ZXVlLl9mZWVkLAogICAgICAgICAgICBhcmdzPShzZWxmLl9idWZmZXIsIHNlbGYuX25vdGVtcHR5LCBzZWxmLl9zZW5kX2J5dGVzLAogICAgICAgICAgICAgICAgICBzZWxmLl93bG9jaywgc2VsZi5fcmVhZGVyLmNsb3NlLCBzZWxmLl93cml0ZXIuY2xvc2UsCiAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZV9lcGlwZSwgc2VsZi5fb25fcXVldWVfZmVlZGVyX2Vycm9yLAogICAgICAgICAgICAgICAgICBzZWxmLl9zZW0pLAogICAgICAgICAgICBuYW1lPSdRdWV1ZUZlZWRlclRocmVhZCcKICAgICAgICApCiAgICAgICAgc2VsZi5fdGhyZWFkLmRhZW1vbiA9IFRydWUKCiAgICAgICAgZGVidWcoJ2RvaW5nIHNlbGYuX3RocmVhZC5zdGFydCgpJykKICAgICAgICBzZWxmLl90aHJlYWQuc3RhcnQoKQogICAgICAgIGRlYnVnKCcuLi4gZG9uZSBzZWxmLl90aHJlYWQuc3RhcnQoKScpCgogICAgICAgIGlmIG5vdCBzZWxmLl9qb2luY2FuY2VsbGVkOgogICAgICAgICAgICBzZWxmLl9qb2ludGhyZWFkID0gRmluYWxpemUoCiAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWQsIFF1ZXVlLl9maW5hbGl6ZV9qb2luLAogICAgICAgICAgICAgICAgW3dlYWtyZWYucmVmKHNlbGYuX3RocmVhZCldLAogICAgICAgICAgICAgICAgZXhpdHByaW9yaXR5PS01CiAgICAgICAgICAgICAgICApCgogICAgICAgICMgU2VuZCBzZW50aW5lbCB0byB0aGUgdGhyZWFkIHF1ZXVlIG9iamVjdCB3aGVuIGdhcmJhZ2UgY29sbGVjdGVkCiAgICAgICAgc2VsZi5fY2xvc2UgPSBGaW5hbGl6ZSgKICAgICAgICAgICAgc2VsZiwgUXVldWUuX2ZpbmFsaXplX2Nsb3NlLAogICAgICAgICAgICBbc2VsZi5fYnVmZmVyLCBzZWxmLl9ub3RlbXB0eV0sCiAgICAgICAgICAgIGV4aXRwcmlvcml0eT0xMAogICAgICAgICAgICApCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9maW5hbGl6ZV9qb2luKHR3cik6CiAgICAgICAgZGVidWcoJ2pvaW5pbmcgcXVldWUgdGhyZWFkJykKICAgICAgICB0aHJlYWQgPSB0d3IoKQogICAgICAgIGlmIHRocmVhZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQogICAgICAgICAgICBkZWJ1ZygnLi4uIHF1ZXVlIHRocmVhZCBqb2luZWQnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRlYnVnKCcuLi4gcXVldWUgdGhyZWFkIGFscmVhZHkgZGVhZCcpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9maW5hbGl6ZV9jbG9zZShidWZmZXIsIG5vdGVtcHR5KToKICAgICAgICBkZWJ1ZygndGVsbGluZyBxdWV1ZSB0aHJlYWQgdG8gcXVpdCcpCiAgICAgICAgd2l0aCBub3RlbXB0eToKICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChfc2VudGluZWwpCiAgICAgICAgICAgIG5vdGVtcHR5Lm5vdGlmeSgpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmRfYnl0ZXMsIHdyaXRlbG9jaywgcmVhZGVyX2Nsb3NlLAogICAgICAgICAgICAgIHdyaXRlcl9jbG9zZSwgaWdub3JlX2VwaXBlLCBvbmVycm9yLCBxdWV1ZV9zZW0pOgogICAgICAgIGRlYnVnKCdzdGFydGluZyB0aHJlYWQgdG8gZmVlZCBkYXRhIHRvIHBpcGUnKQogICAgICAgIG5hY3F1aXJlID0gbm90ZW1wdHkuYWNxdWlyZQogICAgICAgIG5yZWxlYXNlID0gbm90ZW1wdHkucmVsZWFzZQogICAgICAgIG53YWl0ID0gbm90ZW1wdHkud2FpdAogICAgICAgIGJwb3BsZWZ0ID0gYnVmZmVyLnBvcGxlZnQKICAgICAgICBzZW50aW5lbCA9IF9zZW50aW5lbAogICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICB3YWNxdWlyZSA9IHdyaXRlbG9jay5hY3F1aXJlCiAgICAgICAgICAgIHdyZWxlYXNlID0gd3JpdGVsb2NrLnJlbGVhc2UKICAgICAgICBlbHNlOgogICAgICAgICAgICB3YWNxdWlyZSA9IE5vbmUKCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbmFjcXVpcmUoKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBidWZmZXI6CiAgICAgICAgICAgICAgICAgICAgICAgIG53YWl0KCkKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgbnJlbGVhc2UoKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IGJwb3BsZWZ0KCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2JqIGlzIHNlbnRpbmVsOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoJ2ZlZWRlciB0aHJlYWQgZ290IHNlbnRpbmVsIC0tIGV4aXRpbmcnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyX2Nsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlcl9jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgd2FjcXVpcmUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZXMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FjcXVpcmUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZXMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmVsZWFzZSgpCiAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgIGlmIGlnbm9yZV9lcGlwZSBhbmQgZ2V0YXR0cihlLCAnZXJybm8nLCAwKSA9PSBlcnJuby5FUElQRToKICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICMgU2luY2UgdGhpcyBydW5zIGluIGEgZGFlbW9uIHRocmVhZCB0aGUgcmVzb3VyY2VzIGl0IHVzZXMKICAgICAgICAgICAgICAgICMgbWF5IGJlIGJlY29tZSB1bnVzYWJsZSB3aGlsZSB0aGUgcHJvY2VzcyBpcyBjbGVhbmluZyB1cC4KICAgICAgICAgICAgICAgICMgV2UgaWdub3JlIGVycm9ycyB3aGljaCBoYXBwZW4gYWZ0ZXIgdGhlIHByb2Nlc3MgaGFzCiAgICAgICAgICAgICAgICAjIHN0YXJ0ZWQgdG8gY2xlYW51cC4KICAgICAgICAgICAgICAgIGlmIGlzX2V4aXRpbmcoKToKICAgICAgICAgICAgICAgICAgICBpbmZvKCdlcnJvciBpbiBxdWV1ZSB0aHJlYWQ6ICVzJywgZSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB0aGUgb2JqZWN0IGhhcyBub3QgYmVlbiBzZW50IGluIHRoZSBxdWV1ZSwgd2UgbmVlZAogICAgICAgICAgICAgICAgICAgICMgdG8gZGVjcmVhc2UgdGhlIHNpemUgb2YgdGhlIHF1ZXVlLiBUaGUgZXJyb3IgYWN0cyBhcwogICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIG9iamVjdCBoYWQgYmVlbiBzaWxlbnRseSByZW1vdmVkIGZyb20gdGhlIHF1ZXVlCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgdGhpcyBzdGVwIGlzIG5lY2Vzc2FyeSB0byBoYXZlIGEgcHJvcGVybHkgd29ya2luZwogICAgICAgICAgICAgICAgICAgICMgcXVldWUuCiAgICAgICAgICAgICAgICAgICAgcXVldWVfc2VtLnJlbGVhc2UoKQogICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoZSwgb2JqKQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfb25fcXVldWVfZmVlZGVyX2Vycm9yKGUsIG9iaik6CiAgICAgICAgIiIiCiAgICAgICAgUHJpdmF0ZSBBUEkgaG9vayBjYWxsZWQgd2hlbiBmZWVkaW5nIGRhdGEgaW4gdGhlIGJhY2tncm91bmQgdGhyZWFkCiAgICAgICAgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gIEZvciBvdmVycmlkaW5nIGJ5IGNvbmN1cnJlbnQuZnV0dXJlcy4KICAgICAgICAiIiIKICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCgoKX3NlbnRpbmVsID0gb2JqZWN0KCkKCiMKIyBBIHF1ZXVlIHR5cGUgd2hpY2ggYWxzbyBzdXBwb3J0cyBqb2luKCkgYW5kIHRhc2tfZG9uZSgpIG1ldGhvZHMKIwojIE5vdGUgdGhhdCBpZiB5b3UgZG8gbm90IGNhbGwgdGFza19kb25lKCkgZm9yIGVhY2ggZmluaXNoZWQgdGFzayB0aGVuCiMgZXZlbnR1YWxseSB0aGUgY291bnRlcidzIHNlbWFwaG9yZSBtYXkgb3ZlcmZsb3cgY2F1c2luZyBCYWQgVGhpbmdzCiMgdG8gaGFwcGVuLgojCgpjbGFzcyBKb2luYWJsZVF1ZXVlKFF1ZXVlKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4c2l6ZT0wLCAqLCBjdHgpOgogICAgICAgIFF1ZXVlLl9faW5pdF9fKHNlbGYsIG1heHNpemUsIGN0eD1jdHgpCiAgICAgICAgc2VsZi5fdW5maW5pc2hlZF90YXNrcyA9IGN0eC5TZW1hcGhvcmUoMCkKICAgICAgICBzZWxmLl9jb25kID0gY3R4LkNvbmRpdGlvbigpCgogICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICByZXR1cm4gUXVldWUuX19nZXRzdGF0ZV9fKHNlbGYpICsgKHNlbGYuX2NvbmQsIHNlbGYuX3VuZmluaXNoZWRfdGFza3MpCgogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgUXVldWUuX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlWzotMl0pCiAgICAgICAgc2VsZi5fY29uZCwgc2VsZi5fdW5maW5pc2hlZF90YXNrcyA9IHN0YXRlWy0yOl0KCiAgICBkZWYgcHV0KHNlbGYsIG9iaiwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJRdWV1ZSB7c2VsZiFyfSBpcyBjbG9zZWQiKQogICAgICAgIGlmIG5vdCBzZWxmLl9zZW0uYWNxdWlyZShibG9jaywgdGltZW91dCk6CiAgICAgICAgICAgIHJhaXNlIEZ1bGwKCiAgICAgICAgd2l0aCBzZWxmLl9ub3RlbXB0eSwgc2VsZi5fY29uZDoKICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLl9zdGFydF90aHJlYWQoKQogICAgICAgICAgICBzZWxmLl9idWZmZXIuYXBwZW5kKG9iaikKICAgICAgICAgICAgc2VsZi5fdW5maW5pc2hlZF90YXNrcy5yZWxlYXNlKCkKICAgICAgICAgICAgc2VsZi5fbm90ZW1wdHkubm90aWZ5KCkKCiAgICBkZWYgdGFza19kb25lKHNlbGYpOgogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VuZmluaXNoZWRfdGFza3MuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0YXNrX2RvbmUoKSBjYWxsZWQgdG9vIG1hbnkgdGltZXMnKQogICAgICAgICAgICBpZiBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzLl9zZW1sb2NrLl9pc196ZXJvKCk6CiAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeV9hbGwoKQoKICAgIGRlZiBqb2luKHNlbGYpOgogICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VuZmluaXNoZWRfdGFza3MuX3NlbWxvY2suX2lzX3plcm8oKToKICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCgpCgojCiMgU2ltcGxpZmllZCBRdWV1ZSB0eXBlIC0tIHJlYWxseSBqdXN0IGEgbG9ja2VkIHBpcGUKIwoKY2xhc3MgU2ltcGxlUXVldWUob2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgY3R4KToKICAgICAgICBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciA9IGNvbm5lY3Rpb24uUGlwZShkdXBsZXg9RmFsc2UpCiAgICAgICAgc2VsZi5fcmxvY2sgPSBjdHguTG9jaygpCiAgICAgICAgc2VsZi5fcG9sbCA9IHNlbGYuX3JlYWRlci5wb2xsCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgIHNlbGYuX3dsb2NrID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3dsb2NrID0gY3R4LkxvY2soKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLl9yZWFkZXIuY2xvc2UoKQogICAgICAgIHNlbGYuX3dyaXRlci5jbG9zZSgpCgogICAgZGVmIGVtcHR5KHNlbGYpOgogICAgICAgIHJldHVybiBub3Qgc2VsZi5fcG9sbCgpCgogICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICBjb250ZXh0LmFzc2VydF9zcGF3bmluZyhzZWxmKQogICAgICAgIHJldHVybiAoc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsIHNlbGYuX3Jsb2NrLCBzZWxmLl93bG9jaykKCiAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICAoc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsIHNlbGYuX3Jsb2NrLCBzZWxmLl93bG9jaykgPSBzdGF0ZQogICAgICAgIHNlbGYuX3BvbGwgPSBzZWxmLl9yZWFkZXIucG9sbAoKICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgd2l0aCBzZWxmLl9ybG9jazoKICAgICAgICAgICAgcmVzID0gc2VsZi5fcmVhZGVyLnJlY3ZfYnl0ZXMoKQogICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCiAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCgogICAgZGVmIHB1dChzZWxmLCBvYmopOgogICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKICAgICAgICBvYmogPSBfRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQogICAgICAgIGlmIHNlbGYuX3dsb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICMgd3JpdGVzIHRvIGEgbWVzc2FnZSBvcmllbnRlZCB3aW4zMiBwaXBlIGFyZSBhdG9taWMKICAgICAgICAgICAgc2VsZi5fd3JpdGVyLnNlbmRfYnl0ZXMob2JqKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHdpdGggc2VsZi5fd2xvY2s6CiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZXIuc2VuZF9ieXRlcyhvYmopCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZCh0eXBlcy5HZW5lcmljQWxpYXMpClBLAwQUAAAAAAADIKNWkCHErSglAAAoJQAAHAAAAG11bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkjCiMgTW9kdWxlIHdoaWNoIGRlYWxzIHdpdGggcGlja2xpbmcgb2Ygb2JqZWN0cy4KIwojIG11bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKIwojIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiMKCmZyb20gYWJjIGltcG9ydCBBQkNNZXRhCmltcG9ydCBjb3B5cmVnCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IGlvCmltcG9ydCBvcwppbXBvcnQgcGlja2xlCmltcG9ydCBzb2NrZXQKaW1wb3J0IHN5cwoKZnJvbSAuIGltcG9ydCBjb250ZXh0CgpfX2FsbF9fID0gWydzZW5kX2hhbmRsZScsICdyZWN2X2hhbmRsZScsICdGb3JraW5nUGlja2xlcicsICdyZWdpc3RlcicsICdkdW1wJ10KCgpIQVZFX1NFTkRfSEFORExFID0gKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yCiAgICAgICAgICAgICAgICAgICAgKGhhc2F0dHIoc29ja2V0LCAnQ01TR19MRU4nKSBhbmQKICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihzb2NrZXQsICdTQ01fUklHSFRTJykgYW5kCiAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoc29ja2V0LnNvY2tldCwgJ3NlbmRtc2cnKSkpCgojCiMgUGlja2xlciBzdWJjbGFzcwojCgpjbGFzcyBGb3JraW5nUGlja2xlcihwaWNrbGUuUGlja2xlcik6CiAgICAnJydQaWNrbGVyIHN1YmNsYXNzIHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nLicnJwogICAgX2V4dHJhX3JlZHVjZXJzID0ge30KICAgIF9jb3B5cmVnX2Rpc3BhdGNoX3RhYmxlID0gY29weXJlZy5kaXNwYXRjaF90YWJsZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncykKICAgICAgICBzZWxmLmRpc3BhdGNoX3RhYmxlID0gc2VsZi5fY29weXJlZ19kaXNwYXRjaF90YWJsZS5jb3B5KCkKICAgICAgICBzZWxmLmRpc3BhdGNoX3RhYmxlLnVwZGF0ZShzZWxmLl9leHRyYV9yZWR1Y2VycykKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiByZWdpc3RlcihjbHMsIHR5cGUsIHJlZHVjZSk6CiAgICAgICAgJycnUmVnaXN0ZXIgYSByZWR1Y2UgZnVuY3Rpb24gZm9yIGEgdHlwZS4nJycKICAgICAgICBjbHMuX2V4dHJhX3JlZHVjZXJzW3R5cGVdID0gcmVkdWNlCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZHVtcHMoY2xzLCBvYmosIHByb3RvY29sPU5vbmUpOgogICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQogICAgICAgIGNscyhidWYsIHByb3RvY29sKS5kdW1wKG9iaikKICAgICAgICByZXR1cm4gYnVmLmdldGJ1ZmZlcigpCgogICAgbG9hZHMgPSBwaWNrbGUubG9hZHMKCnJlZ2lzdGVyID0gRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIKCmRlZiBkdW1wKG9iaiwgZmlsZSwgcHJvdG9jb2w9Tm9uZSk6CiAgICAnJydSZXBsYWNlbWVudCBmb3IgcGlja2xlLmR1bXAoKSB1c2luZyBGb3JraW5nUGlja2xlci4nJycKICAgIEZvcmtpbmdQaWNrbGVyKGZpbGUsIHByb3RvY29sKS5kdW1wKG9iaikKCiMKIyBQbGF0Zm9ybSBzcGVjaWZpYyBkZWZpbml0aW9ucwojCgppZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICMgV2luZG93cwogICAgX19hbGxfXyArPSBbJ0R1cEhhbmRsZScsICdkdXBsaWNhdGUnLCAnc3RlYWxfaGFuZGxlJ10KICAgIGltcG9ydCBfd2luYXBpCgogICAgZGVmIGR1cGxpY2F0ZShoYW5kbGUsIHRhcmdldF9wcm9jZXNzPU5vbmUsIGluaGVyaXRhYmxlPUZhbHNlLAogICAgICAgICAgICAgICAgICAqLCBzb3VyY2VfcHJvY2Vzcz1Ob25lKToKICAgICAgICAnJydEdXBsaWNhdGUgYSBoYW5kbGUuICAodGFyZ2V0X3Byb2Nlc3MgaXMgYSBoYW5kbGUgbm90IGEgcGlkISknJycKICAgICAgICBjdXJyZW50X3Byb2Nlc3MgPSBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCkKICAgICAgICBpZiBzb3VyY2VfcHJvY2VzcyBpcyBOb25lOgogICAgICAgICAgICBzb3VyY2VfcHJvY2VzcyA9IGN1cnJlbnRfcHJvY2VzcwogICAgICAgIGlmIHRhcmdldF9wcm9jZXNzIGlzIE5vbmU6CiAgICAgICAgICAgIHRhcmdldF9wcm9jZXNzID0gY3VycmVudF9wcm9jZXNzCiAgICAgICAgcmV0dXJuIF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAogICAgICAgICAgICBzb3VyY2VfcHJvY2VzcywgaGFuZGxlLCB0YXJnZXRfcHJvY2VzcywKICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTKQoKICAgIGRlZiBzdGVhbF9oYW5kbGUoc291cmNlX3BpZCwgaGFuZGxlKToKICAgICAgICAnJydTdGVhbCBhIGhhbmRsZSBmcm9tIHByb2Nlc3MgaWRlbnRpZmllZCBieSBzb3VyY2VfcGlkLicnJwogICAgICAgIHNvdXJjZV9wcm9jZXNzX2hhbmRsZSA9IF93aW5hcGkuT3BlblByb2Nlc3MoCiAgICAgICAgICAgIF93aW5hcGkuUFJPQ0VTU19EVVBfSEFORExFLCBGYWxzZSwgc291cmNlX3BpZCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBfd2luYXBpLkR1cGxpY2F0ZUhhbmRsZSgKICAgICAgICAgICAgICAgIHNvdXJjZV9wcm9jZXNzX2hhbmRsZSwgaGFuZGxlLAogICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCAwLCBGYWxzZSwKICAgICAgICAgICAgICAgIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTIHwgX3dpbmFwaS5EVVBMSUNBVEVfQ0xPU0VfU09VUkNFKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoc291cmNlX3Byb2Nlc3NfaGFuZGxlKQoKICAgIGRlZiBzZW5kX2hhbmRsZShjb25uLCBoYW5kbGUsIGRlc3RpbmF0aW9uX3BpZCk6CiAgICAgICAgJycnU2VuZCBhIGhhbmRsZSBvdmVyIGEgbG9jYWwgY29ubmVjdGlvbi4nJycKICAgICAgICBkaCA9IER1cEhhbmRsZShoYW5kbGUsIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTLCBkZXN0aW5hdGlvbl9waWQpCiAgICAgICAgY29ubi5zZW5kKGRoKQoKICAgIGRlZiByZWN2X2hhbmRsZShjb25uKToKICAgICAgICAnJydSZWNlaXZlIGEgaGFuZGxlIG92ZXIgYSBsb2NhbCBjb25uZWN0aW9uLicnJwogICAgICAgIHJldHVybiBjb25uLnJlY3YoKS5kZXRhY2goKQoKICAgIGNsYXNzIER1cEhhbmRsZShvYmplY3QpOgogICAgICAgICcnJ1BpY2tsYWJsZSB3cmFwcGVyIGZvciBhIGhhbmRsZS4nJycKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlLCBhY2Nlc3MsIHBpZD1Ob25lKToKICAgICAgICAgICAgaWYgcGlkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAjIFdlIGp1c3QgZHVwbGljYXRlIHRoZSBoYW5kbGUgaW4gdGhlIGN1cnJlbnQgcHJvY2VzcyBhbmQKICAgICAgICAgICAgICAgICMgbGV0IHRoZSByZWNlaXZpbmcgcHJvY2VzcyBzdGVhbCB0aGUgaGFuZGxlLgogICAgICAgICAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKICAgICAgICAgICAgcHJvYyA9IF93aW5hcGkuT3BlblByb2Nlc3MoX3dpbmFwaS5QUk9DRVNTX0RVUF9IQU5ETEUsIEZhbHNlLCBwaWQpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAogICAgICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwKICAgICAgICAgICAgICAgICAgICBoYW5kbGUsIHByb2MsIGFjY2VzcywgRmFsc2UsIDApCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKHByb2MpCiAgICAgICAgICAgIHNlbGYuX2FjY2VzcyA9IGFjY2VzcwogICAgICAgICAgICBzZWxmLl9waWQgPSBwaWQKCiAgICAgICAgZGVmIGRldGFjaChzZWxmKToKICAgICAgICAgICAgJycnR2V0IHRoZSBoYW5kbGUuICBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLicnJwogICAgICAgICAgICAjIHJldHJpZXZlIGhhbmRsZSBmcm9tIHByb2Nlc3Mgd2hpY2ggY3VycmVudGx5IG93bnMgaXQKICAgICAgICAgICAgaWYgc2VsZi5fcGlkID09IG9zLmdldHBpZCgpOgogICAgICAgICAgICAgICAgIyBUaGUgaGFuZGxlIGhhcyBhbHJlYWR5IGJlZW4gZHVwbGljYXRlZCBmb3IgdGhpcyBwcm9jZXNzLgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZQogICAgICAgICAgICAjIFdlIG11c3Qgc3RlYWwgdGhlIGhhbmRsZSBmcm9tIHRoZSBwcm9jZXNzIHdob3NlIHBpZCBpcyBzZWxmLl9waWQuCiAgICAgICAgICAgIHByb2MgPSBfd2luYXBpLk9wZW5Qcm9jZXNzKF93aW5hcGkuUFJPQ0VTU19EVVBfSEFORExFLCBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGlkKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCiAgICAgICAgICAgICAgICAgICAgcHJvYywgc2VsZi5faGFuZGxlLCBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCksCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWNjZXNzLCBGYWxzZSwgX3dpbmFwaS5EVVBMSUNBVEVfQ0xPU0VfU09VUkNFKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShwcm9jKQoKZWxzZToKICAgICMgVW5peAogICAgX19hbGxfXyArPSBbJ0R1cEZkJywgJ3NlbmRmZHMnLCAncmVjdmZkcyddCiAgICBpbXBvcnQgYXJyYXkKCiAgICAjIE9uIE1hY09TWCB3ZSBzaG91bGQgYWNrbm93bGVkZ2UgcmVjZWlwdCBvZiBmZHMgLS0gc2VlIElzc3VlMTQ2NjkKICAgIEFDS05PV0xFREdFID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCgogICAgZGVmIHNlbmRmZHMoc29jaywgZmRzKToKICAgICAgICAnJydTZW5kIGFuIGFycmF5IG9mIGZkcyBvdmVyIGFuIEFGX1VOSVggc29ja2V0LicnJwogICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCdpJywgZmRzKQogICAgICAgIG1zZyA9IGJ5dGVzKFtsZW4oZmRzKSAlIDI1Nl0pCiAgICAgICAgc29jay5zZW5kbXNnKFttc2ddLCBbKHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU0NNX1JJR0hUUywgZmRzKV0pCiAgICAgICAgaWYgQUNLTk9XTEVER0UgYW5kIHNvY2sucmVjdigxKSAhPSBiJ0EnOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2RpZCBub3QgcmVjZWl2ZSBhY2tub3dsZWRnZW1lbnQgb2YgZmQnKQoKICAgIGRlZiByZWN2ZmRzKHNvY2ssIHNpemUpOgogICAgICAgICcnJ1JlY2VpdmUgYW4gYXJyYXkgb2YgZmRzIG92ZXIgYW4gQUZfVU5JWCBzb2NrZXQuJycnCiAgICAgICAgYSA9IGFycmF5LmFycmF5KCdpJykKICAgICAgICBieXRlc19zaXplID0gYS5pdGVtc2l6ZSAqIHNpemUKICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc29jay5yZWN2bXNnKDEsIHNvY2tldC5DTVNHX1NQQUNFKGJ5dGVzX3NpemUpKQogICAgICAgIGlmIG5vdCBtc2cgYW5kIG5vdCBhbmNkYXRhOgogICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgQUNLTk9XTEVER0U6CiAgICAgICAgICAgICAgICBzb2NrLnNlbmQoYidBJykKICAgICAgICAgICAgaWYgbGVuKGFuY2RhdGEpICE9IDE6CiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3JlY2VpdmVkICVkIGl0ZW1zIG9mIGFuY2RhdGEnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oYW5jZGF0YSkpCiAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQogICAgICAgICAgICBpZiAoY21zZ19sZXZlbCA9PSBzb2NrZXQuU09MX1NPQ0tFVCBhbmQKICAgICAgICAgICAgICAgIGNtc2dfdHlwZSA9PSBzb2NrZXQuU0NNX1JJR0hUUyk6CiAgICAgICAgICAgICAgICBpZiBsZW4oY21zZ19kYXRhKSAlIGEuaXRlbXNpemUgIT0gMDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICAgICBhLmZyb21ieXRlcyhjbXNnX2RhdGEpCiAgICAgICAgICAgICAgICBpZiBsZW4oYSkgJSAyNTYgIT0gbXNnWzBdOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAiTGVuIGlzIHswOm59IGJ1dCBtc2dbMF0gaXMgezEhcn0iLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihhKSwgbXNnWzBdKSkKICAgICAgICAgICAgICAgIHJldHVybiBsaXN0KGEpCiAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yKToKICAgICAgICAgICAgcGFzcwogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignSW52YWxpZCBkYXRhIHJlY2VpdmVkJykKCiAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgogICAgICAgICcnJ1NlbmQgYSBoYW5kbGUgb3ZlciBhIGxvY2FsIGNvbm5lY3Rpb24uJycnCiAgICAgICAgd2l0aCBzb2NrZXQuZnJvbWZkKGNvbm4uZmlsZW5vKCksIHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CiAgICAgICAgICAgIHNlbmRmZHMocywgW2hhbmRsZV0pCgogICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgogICAgICAgICcnJ1JlY2VpdmUgYSBoYW5kbGUgb3ZlciBhIGxvY2FsIGNvbm5lY3Rpb24uJycnCiAgICAgICAgd2l0aCBzb2NrZXQuZnJvbWZkKGNvbm4uZmlsZW5vKCksIHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CiAgICAgICAgICAgIHJldHVybiByZWN2ZmRzKHMsIDEpWzBdCgogICAgZGVmIER1cEZkKGZkKToKICAgICAgICAnJydSZXR1cm4gYSB3cmFwcGVyIGZvciBhbiBmZC4nJycKICAgICAgICBwb3Blbl9vYmogPSBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpCiAgICAgICAgaWYgcG9wZW5fb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gcG9wZW5fb2JqLkR1cEZkKHBvcGVuX29iai5kdXBsaWNhdGVfZm9yX2NoaWxkKGZkKSkKICAgICAgICBlbGlmIEhBVkVfU0VORF9IQU5ETEU6CiAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgcmVzb3VyY2Vfc2hhcmVyCiAgICAgICAgICAgIHJldHVybiByZXNvdXJjZV9zaGFyZXIuRHVwRmQoZmQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU0NNX1JJR0hUUyBhcHBlYXJzIG5vdCB0byBiZSBhdmFpbGFibGUnKQoKIwojIFRyeSBtYWtpbmcgc29tZSBjYWxsYWJsZSB0eXBlcyBwaWNrbGFibGUKIwoKZGVmIF9yZWR1Y2VfbWV0aG9kKG0pOgogICAgaWYgbS5fX3NlbGZfXyBpcyBOb25lOgogICAgICAgIHJldHVybiBnZXRhdHRyLCAobS5fX2NsYXNzX18sIG0uX19mdW5jX18uX19uYW1lX18pCiAgICBlbHNlOgogICAgICAgIHJldHVybiBnZXRhdHRyLCAobS5fX3NlbGZfXywgbS5fX2Z1bmNfXy5fX25hbWVfXykKY2xhc3MgX0M6CiAgICBkZWYgZihzZWxmKToKICAgICAgICBwYXNzCnJlZ2lzdGVyKHR5cGUoX0MoKS5mKSwgX3JlZHVjZV9tZXRob2QpCgoKZGVmIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IobSk6CiAgICByZXR1cm4gZ2V0YXR0ciwgKG0uX19vYmpjbGFzc19fLCBtLl9fbmFtZV9fKQpyZWdpc3Rlcih0eXBlKGxpc3QuYXBwZW5kKSwgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcikKcmVnaXN0ZXIodHlwZShpbnQuX19hZGRfXyksIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IpCgoKZGVmIF9yZWR1Y2VfcGFydGlhbChwKToKICAgIHJldHVybiBfcmVidWlsZF9wYXJ0aWFsLCAocC5mdW5jLCBwLmFyZ3MsIHAua2V5d29yZHMgb3Ige30pCmRlZiBfcmVidWlsZF9wYXJ0aWFsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzKToKICAgIHJldHVybiBmdW5jdG9vbHMucGFydGlhbChmdW5jLCAqYXJncywgKiprZXl3b3JkcykKcmVnaXN0ZXIoZnVuY3Rvb2xzLnBhcnRpYWwsIF9yZWR1Y2VfcGFydGlhbCkKCiMKIyBNYWtlIHNvY2tldHMgcGlja2xhYmxlCiMKCmlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgZGVmIF9yZWR1Y2Vfc29ja2V0KHMpOgogICAgICAgIGZyb20gLnJlc291cmNlX3NoYXJlciBpbXBvcnQgRHVwU29ja2V0CiAgICAgICAgcmV0dXJuIF9yZWJ1aWxkX3NvY2tldCwgKER1cFNvY2tldChzKSwpCiAgICBkZWYgX3JlYnVpbGRfc29ja2V0KGRzKToKICAgICAgICByZXR1cm4gZHMuZGV0YWNoKCkKICAgIHJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIF9yZWR1Y2Vfc29ja2V0KQoKZWxzZToKICAgIGRlZiBfcmVkdWNlX3NvY2tldChzKToKICAgICAgICBkZiA9IER1cEZkKHMuZmlsZW5vKCkpCiAgICAgICAgcmV0dXJuIF9yZWJ1aWxkX3NvY2tldCwgKGRmLCBzLmZhbWlseSwgcy50eXBlLCBzLnByb3RvKQogICAgZGVmIF9yZWJ1aWxkX3NvY2tldChkZiwgZmFtaWx5LCB0eXBlLCBwcm90byk6CiAgICAgICAgZmQgPSBkZi5kZXRhY2goKQogICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8sIGZpbGVubz1mZCkKICAgIHJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIF9yZWR1Y2Vfc29ja2V0KQoKCmNsYXNzIEFic3RyYWN0UmVkdWNlcihtZXRhY2xhc3M9QUJDTWV0YSk6CiAgICAnJydBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB1c2UgaW4gaW1wbGVtZW50aW5nIGEgUmVkdWN0aW9uIGNsYXNzCiAgICBzdWl0YWJsZSBmb3IgdXNlIGluIHJlcGxhY2luZyB0aGUgc3RhbmRhcmQgcmVkdWN0aW9uIG1lY2hhbmlzbQogICAgdXNlZCBpbiBtdWx0aXByb2Nlc3NpbmcuJycnCiAgICBGb3JraW5nUGlja2xlciA9IEZvcmtpbmdQaWNrbGVyCiAgICByZWdpc3RlciA9IHJlZ2lzdGVyCiAgICBkdW1wID0gZHVtcAogICAgc2VuZF9oYW5kbGUgPSBzZW5kX2hhbmRsZQogICAgcmVjdl9oYW5kbGUgPSByZWN2X2hhbmRsZQoKICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgIHN0ZWFsX2hhbmRsZSA9IHN0ZWFsX2hhbmRsZQogICAgICAgIGR1cGxpY2F0ZSA9IGR1cGxpY2F0ZQogICAgICAgIER1cEhhbmRsZSA9IER1cEhhbmRsZQogICAgZWxzZToKICAgICAgICBzZW5kZmRzID0gc2VuZGZkcwogICAgICAgIHJlY3ZmZHMgPSByZWN2ZmRzCiAgICAgICAgRHVwRmQgPSBEdXBGZAoKICAgIF9yZWR1Y2VfbWV0aG9kID0gX3JlZHVjZV9tZXRob2QKICAgIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IgPSBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yCiAgICBfcmVidWlsZF9wYXJ0aWFsID0gX3JlYnVpbGRfcGFydGlhbAogICAgX3JlZHVjZV9zb2NrZXQgPSBfcmVkdWNlX3NvY2tldAogICAgX3JlYnVpbGRfc29ja2V0ID0gX3JlYnVpbGRfc29ja2V0CgogICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKICAgICAgICByZWdpc3Rlcih0eXBlKF9DKCkuZiksIF9yZWR1Y2VfbWV0aG9kKQogICAgICAgIHJlZ2lzdGVyKHR5cGUobGlzdC5hcHBlbmQpLCBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yKQogICAgICAgIHJlZ2lzdGVyKHR5cGUoaW50Ll9fYWRkX18pLCBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yKQogICAgICAgIHJlZ2lzdGVyKGZ1bmN0b29scy5wYXJ0aWFsLCBfcmVkdWNlX3BhcnRpYWwpCiAgICAgICAgcmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgX3JlZHVjZV9zb2NrZXQpClBLAwQUAAAAAAADIKNWi1cUfwwUAAAMFAAAIgAAAG11bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkjCiMgV2UgdXNlIGEgYmFja2dyb3VuZCB0aHJlYWQgZm9yIHNoYXJpbmcgZmRzIG9uIFVuaXgsIGFuZCBmb3Igc2hhcmluZyBzb2NrZXRzIG9uCiMgV2luZG93cy4KIwojIEEgY2xpZW50IHdoaWNoIHdhbnRzIHRvIHBpY2tsZSBhIHJlc291cmNlIHJlZ2lzdGVycyBpdCB3aXRoIHRoZSByZXNvdXJjZQojIHNoYXJlciBhbmQgZ2V0cyBhbiBpZGVudGlmaWVyIGluIHJldHVybi4gIFRoZSB1bnBpY2tsaW5nIHByb2Nlc3Mgd2lsbCBjb25uZWN0CiMgdG8gdGhlIHJlc291cmNlIHNoYXJlciwgc2VuZHMgdGhlIGlkZW50aWZpZXIgYW5kIGl0cyBwaWQsIGFuZCB0aGVuIHJlY2VpdmVzCiMgdGhlIHJlc291cmNlLgojCgppbXBvcnQgb3MKaW1wb3J0IHNpZ25hbAppbXBvcnQgc29ja2V0CmltcG9ydCBzeXMKaW1wb3J0IHRocmVhZGluZwoKZnJvbSAuIGltcG9ydCBwcm9jZXNzCmZyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgpmcm9tIC4gaW1wb3J0IHV0aWwKCl9fYWxsX18gPSBbJ3N0b3AnXQoKCmlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgX19hbGxfXyArPSBbJ0R1cFNvY2tldCddCgogICAgY2xhc3MgRHVwU29ja2V0KG9iamVjdCk6CiAgICAgICAgJycnUGlja2xhYmxlIHdyYXBwZXIgZm9yIGEgc29ja2V0LicnJwogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrKToKICAgICAgICAgICAgbmV3X3NvY2sgPSBzb2NrLmR1cCgpCiAgICAgICAgICAgIGRlZiBzZW5kKGNvbm4sIHBpZCk6CiAgICAgICAgICAgICAgICBzaGFyZSA9IG5ld19zb2NrLnNoYXJlKHBpZCkKICAgICAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhzaGFyZSkKICAgICAgICAgICAgc2VsZi5faWQgPSBfcmVzb3VyY2Vfc2hhcmVyLnJlZ2lzdGVyKHNlbmQsIG5ld19zb2NrLmNsb3NlKQoKICAgICAgICBkZWYgZGV0YWNoKHNlbGYpOgogICAgICAgICAgICAnJydHZXQgdGhlIHNvY2tldC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UuJycnCiAgICAgICAgICAgIHdpdGggX3Jlc291cmNlX3NoYXJlci5nZXRfY29ubmVjdGlvbihzZWxmLl9pZCkgYXMgY29ubjoKICAgICAgICAgICAgICAgIHNoYXJlID0gY29ubi5yZWN2X2J5dGVzKCkKICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuZnJvbXNoYXJlKHNoYXJlKQoKZWxzZToKICAgIF9fYWxsX18gKz0gWydEdXBGZCddCgogICAgY2xhc3MgRHVwRmQob2JqZWN0KToKICAgICAgICAnJydXcmFwcGVyIGZvciBmZCB3aGljaCBjYW4gYmUgdXNlZCBhdCBhbnkgdGltZS4nJycKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmQpOgogICAgICAgICAgICBuZXdfZmQgPSBvcy5kdXAoZmQpCiAgICAgICAgICAgIGRlZiBzZW5kKGNvbm4sIHBpZCk6CiAgICAgICAgICAgICAgICByZWR1Y3Rpb24uc2VuZF9oYW5kbGUoY29ubiwgbmV3X2ZkLCBwaWQpCiAgICAgICAgICAgIGRlZiBjbG9zZSgpOgogICAgICAgICAgICAgICAgb3MuY2xvc2UobmV3X2ZkKQogICAgICAgICAgICBzZWxmLl9pZCA9IF9yZXNvdXJjZV9zaGFyZXIucmVnaXN0ZXIoc2VuZCwgY2xvc2UpCgogICAgICAgIGRlZiBkZXRhY2goc2VsZik6CiAgICAgICAgICAgICcnJ0dldCB0aGUgZmQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLicnJwogICAgICAgICAgICB3aXRoIF9yZXNvdXJjZV9zaGFyZXIuZ2V0X2Nvbm5lY3Rpb24oc2VsZi5faWQpIGFzIGNvbm46CiAgICAgICAgICAgICAgICByZXR1cm4gcmVkdWN0aW9uLnJlY3ZfaGFuZGxlKGNvbm4pCgoKY2xhc3MgX1Jlc291cmNlU2hhcmVyKG9iamVjdCk6CiAgICAnJydNYW5hZ2VyIGZvciByZXNvdXJjZXMgdXNpbmcgYmFja2dyb3VuZCB0aHJlYWQuJycnCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fa2V5ID0gMAogICAgICAgIHNlbGYuX2NhY2hlID0ge30KICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQogICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCiAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQogICAgICAgIHV0aWwucmVnaXN0ZXJfYWZ0ZXJfZm9yayhzZWxmLCBfUmVzb3VyY2VTaGFyZXIuX2FmdGVyZm9yaykKCiAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgc2VuZCwgY2xvc2UpOgogICAgICAgICcnJ1JlZ2lzdGVyIHJlc291cmNlLCByZXR1cm5pbmcgYW4gaWRlbnRpZmllci4nJycKICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgIGlmIHNlbGYuX2FkZHJlc3MgaXMgTm9uZToKICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0KCkKICAgICAgICAgICAgc2VsZi5fa2V5ICs9IDEKICAgICAgICAgICAgc2VsZi5fY2FjaGVbc2VsZi5fa2V5XSA9IChzZW5kLCBjbG9zZSkKICAgICAgICAgICAgcmV0dXJuIChzZWxmLl9hZGRyZXNzLCBzZWxmLl9rZXkpCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIGdldF9jb25uZWN0aW9uKGlkZW50KToKICAgICAgICAnJydSZXR1cm4gY29ubmVjdGlvbiBmcm9tIHdoaWNoIHRvIHJlY2VpdmUgaWRlbnRpZmllZCByZXNvdXJjZS4nJycKICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDbGllbnQKICAgICAgICBhZGRyZXNzLCBrZXkgPSBpZGVudAogICAgICAgIGMgPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1wcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCiAgICAgICAgYy5zZW5kKChrZXksIG9zLmdldHBpZCgpKSkKICAgICAgICByZXR1cm4gYwoKICAgIGRlZiBzdG9wKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgJycnU3RvcCB0aGUgYmFja2dyb3VuZCB0aHJlYWQgYW5kIGNsZWFyIHJlZ2lzdGVyZWQgcmVzb3VyY2VzLicnJwogICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENsaWVudAogICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgaWYgc2VsZi5fYWRkcmVzcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGMgPSBDbGllbnQoc2VsZi5fYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aGtleT1wcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCiAgICAgICAgICAgICAgICBjLnNlbmQoTm9uZSkKICAgICAgICAgICAgICAgIGMuY2xvc2UoKQogICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkLmpvaW4odGltZW91dCkKICAgICAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZC5pc19hbGl2ZSgpOgogICAgICAgICAgICAgICAgICAgIHV0aWwuc3ViX3dhcm5pbmcoJ19SZXNvdXJjZVNoYXJlciB0aHJlYWQgZGlkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3Qgc3RvcCB3aGVuIGFza2VkJykKICAgICAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKICAgICAgICAgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCiAgICAgICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKICAgICAgICAgICAgICAgIGZvciBrZXksIChzZW5kLCBjbG9zZSkgaW4gc2VsZi5fY2FjaGUuaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICBjbG9zZSgpCiAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZS5jbGVhcigpCgogICAgZGVmIF9hZnRlcmZvcmsoc2VsZik6CiAgICAgICAgZm9yIGtleSwgKHNlbmQsIGNsb3NlKSBpbiBzZWxmLl9jYWNoZS5pdGVtcygpOgogICAgICAgICAgICBjbG9zZSgpCiAgICAgICAgc2VsZi5fY2FjaGUuY2xlYXIoKQogICAgICAgIHNlbGYuX2xvY2suX2F0X2ZvcmtfcmVpbml0KCkKICAgICAgICBpZiBzZWxmLl9saXN0ZW5lciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuY2xvc2UoKQogICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQogICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCiAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQoKICAgIGRlZiBfc3RhcnQoc2VsZik6CiAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgTGlzdGVuZXIKICAgICAgICBhc3NlcnQgc2VsZi5fbGlzdGVuZXIgaXMgTm9uZSwgIkFscmVhZHkgaGF2ZSBMaXN0ZW5lciIKICAgICAgICB1dGlsLmRlYnVnKCdzdGFydGluZyBsaXN0ZW5lciBhbmQgdGhyZWFkIGZvciBzZW5kaW5nIGhhbmRsZXMnKQogICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTGlzdGVuZXIoYXV0aGtleT1wcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCiAgICAgICAgc2VsZi5fYWRkcmVzcyA9IHNlbGYuX2xpc3RlbmVyLmFkZHJlc3MKICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fc2VydmUpCiAgICAgICAgdC5kYWVtb24gPSBUcnVlCiAgICAgICAgdC5zdGFydCgpCiAgICAgICAgc2VsZi5fdGhyZWFkID0gdAoKICAgIGRlZiBfc2VydmUoc2VsZik6CiAgICAgICAgaWYgaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKToKICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBzaWduYWwudmFsaWRfc2lnbmFscygpKQogICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fbGlzdGVuZXIuYWNjZXB0KCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICAgICBtc2cgPSBjb25uLnJlY3YoKQogICAgICAgICAgICAgICAgICAgIGlmIG1zZyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGtleSwgZGVzdGluYXRpb25fcGlkID0gbXNnCiAgICAgICAgICAgICAgICAgICAgc2VuZCwgY2xvc2UgPSBzZWxmLl9jYWNoZS5wb3Aoa2V5KQogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VuZChjb25uLCBkZXN0aW5hdGlvbl9waWQpCiAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2UoKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBpZiBub3QgdXRpbC5pc19leGl0aW5nKCk6CiAgICAgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQoKCl9yZXNvdXJjZV9zaGFyZXIgPSBfUmVzb3VyY2VTaGFyZXIoKQpzdG9wID0gX3Jlc291cmNlX3NoYXJlci5zdG9wClBLAwQUAAAAAAADIKNWax5X7g0jAAANIwAAIwAAAG11bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV90cmFja2VyLnB5IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFNlcnZlciBwcm9jZXNzIHRvIGtlZXAgdHJhY2sgb2YgdW5saW5rZWQgcmVzb3VyY2VzIChsaWtlIHNoYXJlZCBtZW1vcnkKIyBzZWdtZW50cywgc2VtYXBob3JlcyBldGMuKSBhbmQgY2xlYW4gdGhlbS4KIwojIE9uIFVuaXggd2UgcnVuIGEgc2VydmVyIHByb2Nlc3Mgd2hpY2gga2VlcHMgdHJhY2sgb2YgdW5saW5rZWQKIyByZXNvdXJjZXMuIFRoZSBzZXJ2ZXIgaWdub3JlcyBTSUdJTlQgYW5kIFNJR1RFUk0gYW5kIHJlYWRzIGZyb20gYQojIHBpcGUuICBFdmVyeSBvdGhlciBwcm9jZXNzIG9mIHRoZSBwcm9ncmFtIGhhcyBhIGNvcHkgb2YgdGhlIHdyaXRhYmxlCiMgZW5kIG9mIHRoZSBwaXBlLCBzbyB3ZSBnZXQgRU9GIHdoZW4gYWxsIG90aGVyIHByb2Nlc3NlcyBoYXZlIGV4aXRlZC4KIyBUaGVuIHRoZSBzZXJ2ZXIgcHJvY2VzcyB1bmxpbmtzIGFueSByZW1haW5pbmcgcmVzb3VyY2UgbmFtZXMuCiMKIyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZXJlIG1heSBiZSBzeXN0ZW0gbGltaXRzIGZvciBzdWNoIHJlc291cmNlczogZm9yCiMgaW5zdGFuY2UsIHRoZSBzeXN0ZW0gb25seSBzdXBwb3J0cyBhIGxpbWl0ZWQgbnVtYmVyIG9mIG5hbWVkIHNlbWFwaG9yZXMsIGFuZAojIHNoYXJlZC1tZW1vcnkgc2VnbWVudHMgbGl2ZSBpbiB0aGUgUkFNLiBJZiBhIHB5dGhvbiBwcm9jZXNzIGxlYWtzIHN1Y2ggYQojIHJlc291cmNlLCB0aGlzIHJlc291cmNlIHdpbGwgbm90IGJlIHJlbW92ZWQgdGlsbCB0aGUgbmV4dCByZWJvb3QuICBXaXRob3V0CiMgdGhpcyByZXNvdXJjZSB0cmFja2VyIHByb2Nlc3MsICJraWxsYWxsIHB5dGhvbiIgd291bGQgcHJvYmFibHkgbGVhdmUgdW5saW5rZWQKIyByZXNvdXJjZXMuCgppbXBvcnQgb3MKaW1wb3J0IHNpZ25hbAppbXBvcnQgc3lzCmltcG9ydCB0aHJlYWRpbmcKaW1wb3J0IHdhcm5pbmdzCgpmcm9tIC4gaW1wb3J0IHNwYXduCmZyb20gLiBpbXBvcnQgdXRpbAoKX19hbGxfXyA9IFsnZW5zdXJlX3J1bm5pbmcnLCAncmVnaXN0ZXInLCAndW5yZWdpc3RlciddCgpfSEFWRV9TSUdNQVNLID0gaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKQpfSUdOT1JFRF9TSUdOQUxTID0gKHNpZ25hbC5TSUdJTlQsIHNpZ25hbC5TSUdURVJNKQoKX0NMRUFOVVBfRlVOQ1MgPSB7CiAgICAnbm9vcCc6IGxhbWJkYTogTm9uZSwKfQoKaWYgb3MubmFtZSA9PSAncG9zaXgnOgogICAgaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKICAgIGltcG9ydCBfcG9zaXhzaG1lbQoKICAgICMgVXNlIHNlbV91bmxpbmsoKSB0byBjbGVhbiB1cCBuYW1lZCBzZW1hcGhvcmVzLgogICAgIwogICAgIyBzZW1fdW5saW5rKCkgbWF5IGJlIG1pc3NpbmcgaWYgdGhlIFB5dGhvbiBidWlsZCBwcm9jZXNzIGRldGVjdGVkIHRoZQogICAgIyBhYnNlbmNlIG9mIFBPU0lYIG5hbWVkIHNlbWFwaG9yZXMuIEluIHRoYXQgY2FzZSwgbm8gbmFtZWQgc2VtYXBob3JlcyB3ZXJlCiAgICAjIGV2ZXIgb3BlbmVkLCBzbyBubyBjbGVhbnVwIHdvdWxkIGJlIG5lY2Vzc2FyeS4KICAgIGlmIGhhc2F0dHIoX211bHRpcHJvY2Vzc2luZywgJ3NlbV91bmxpbmsnKToKICAgICAgICBfQ0xFQU5VUF9GVU5DUy51cGRhdGUoewogICAgICAgICAgICAnc2VtYXBob3JlJzogX211bHRpcHJvY2Vzc2luZy5zZW1fdW5saW5rLAogICAgICAgIH0pCiAgICBfQ0xFQU5VUF9GVU5DUy51cGRhdGUoewogICAgICAgICdzaGFyZWRfbWVtb3J5JzogX3Bvc2l4c2htZW0uc2htX3VubGluaywKICAgIH0pCgoKY2xhc3MgUmVzb3VyY2VUcmFja2VyKG9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCiAgICAgICAgc2VsZi5fZmQgPSBOb25lCiAgICAgICAgc2VsZi5fcGlkID0gTm9uZQoKICAgIGRlZiBfc3RvcChzZWxmKToKICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgIGlmIHNlbGYuX2ZkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAjIG5vdCBydW5uaW5nCiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgICMgY2xvc2luZyB0aGUgImFsaXZlIiBmaWxlIGRlc2NyaXB0b3Igc3RvcHMgbWFpbigpCiAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYuX2ZkKQogICAgICAgICAgICBzZWxmLl9mZCA9IE5vbmUKCiAgICAgICAgICAgIG9zLndhaXRwaWQoc2VsZi5fcGlkLCAwKQogICAgICAgICAgICBzZWxmLl9waWQgPSBOb25lCgogICAgZGVmIGdldGZkKHNlbGYpOgogICAgICAgIHNlbGYuZW5zdXJlX3J1bm5pbmcoKQogICAgICAgIHJldHVybiBzZWxmLl9mZAoKICAgIGRlZiBlbnN1cmVfcnVubmluZyhzZWxmKToKICAgICAgICAnJydNYWtlIHN1cmUgdGhhdCByZXNvdXJjZSB0cmFja2VyIHByb2Nlc3MgaXMgcnVubmluZy4KCiAgICAgICAgVGhpcyBjYW4gYmUgcnVuIGZyb20gYW55IHByb2Nlc3MuICBVc3VhbGx5IGEgY2hpbGQgcHJvY2VzcyB3aWxsIHVzZQogICAgICAgIHRoZSByZXNvdXJjZSBjcmVhdGVkIGJ5IGl0cyBwYXJlbnQuJycnCiAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICBpZiBzZWxmLl9mZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICMgcmVzb3VyY2UgdHJhY2tlciB3YXMgbGF1bmNoZWQgYmVmb3JlLCBpcyBpdCBzdGlsbCBydW5uaW5nPwogICAgICAgICAgICAgICAgaWYgc2VsZi5fY2hlY2tfYWxpdmUoKToKICAgICAgICAgICAgICAgICAgICAjID0+IHN0aWxsIGFsaXZlCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAjID0+IGRlYWQsIGxhdW5jaCBpdCBhZ2FpbgogICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZmQpCgogICAgICAgICAgICAgICAgIyBDbGVhbi11cCB0byBhdm9pZCBkYW5nbGluZyBwcm9jZXNzZXMuCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIyBfcGlkIGNhbiBiZSBOb25lIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGNoaWxkIGZyb20gYW5vdGhlcgogICAgICAgICAgICAgICAgICAgICMgcHl0aG9uIHByb2Nlc3MsIHdoaWNoIGhhcyBzdGFydGVkIHRoZSByZXNvdXJjZV90cmFja2VyLgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BpZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZChzZWxmLl9waWQsIDApCiAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIyBUaGUgcmVzb3VyY2VfdHJhY2tlciBoYXMgYWxyZWFkeSBiZWVuIHRlcm1pbmF0ZWQuCiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgc2VsZi5fZmQgPSBOb25lCiAgICAgICAgICAgICAgICBzZWxmLl9waWQgPSBOb25lCgogICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigncmVzb3VyY2VfdHJhY2tlcjogcHJvY2VzcyBkaWVkIHVuZXhwZWN0ZWRseSwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsYXVuY2hpbmcuICBTb21lIHJlc291cmNlcyBtaWdodCBsZWFrLicpCgogICAgICAgICAgICBmZHNfdG9fcGFzcyA9IFtdCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZkc190b19wYXNzLmFwcGVuZChzeXMuc3RkZXJyLmZpbGVubygpKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBjbWQgPSAnZnJvbSBtdWx0aXByb2Nlc3NpbmcucmVzb3VyY2VfdHJhY2tlciBpbXBvcnQgbWFpbjttYWluKCVkKScKICAgICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmZHNfdG9fcGFzcy5hcHBlbmQocikKICAgICAgICAgICAgICAgICMgcHJvY2VzcyB3aWxsIG91dCBsaXZlIHVzLCBzbyBubyBuZWVkIHRvIHdhaXQgb24gcGlkCiAgICAgICAgICAgICAgICBleGUgPSBzcGF3bi5nZXRfZXhlY3V0YWJsZSgpCiAgICAgICAgICAgICAgICBhcmdzID0gW2V4ZV0gKyB1dGlsLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgICAgICAgICAgICAgYXJncyArPSBbJy1jJywgY21kICUgcl0KICAgICAgICAgICAgICAgICMgYnBvLTMzNjEzOiBSZWdpc3RlciBhIHNpZ25hbCBtYXNrIHRoYXQgd2lsbCBibG9jayB0aGUgc2lnbmFscy4KICAgICAgICAgICAgICAgICMgVGhpcyBzaWduYWwgbWFzayB3aWxsIGJlIGluaGVyaXRlZCBieSB0aGUgY2hpbGQgdGhhdCBpcyBnb2luZwogICAgICAgICAgICAgICAgIyB0byBiZSBzcGF3bmVkIGFuZCB3aWxsIHByb3RlY3QgdGhlIGNoaWxkIGZyb20gYSByYWNlIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgIyB0aGF0IGNhbiBtYWtlIHRoZSBjaGlsZCBkaWUgYmVmb3JlIGl0IHJlZ2lzdGVycyBzaWduYWwgaGFuZGxlcnMKICAgICAgICAgICAgICAgICMgZm9yIFNJR0lOVCBhbmQgU0lHVEVSTS4gVGhlIG1hc2sgaXMgdW5yZWdpc3RlcmVkIGFmdGVyIHNwYXduaW5nCiAgICAgICAgICAgICAgICAjIHRoZSBjaGlsZC4KICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBpZiBfSEFWRV9TSUdNQVNLOgogICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIF9JR05PUkVEX1NJR05BTFMpCiAgICAgICAgICAgICAgICAgICAgcGlkID0gdXRpbC5zcGF3bnZfcGFzc2ZkcyhleGUsIGFyZ3MsIGZkc190b19wYXNzKQogICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBpZiBfSEFWRV9TSUdNQVNLOgogICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgX0lHTk9SRURfU0lHTkFMUykKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgb3MuY2xvc2UodykKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl9mZCA9IHcKICAgICAgICAgICAgICAgIHNlbGYuX3BpZCA9IHBpZAogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgb3MuY2xvc2UocikKCiAgICBkZWYgX2NoZWNrX2FsaXZlKHNlbGYpOgogICAgICAgICcnJ0NoZWNrIHRoYXQgdGhlIHBpcGUgaGFzIG5vdCBiZWVuIGNsb3NlZCBieSBzZW5kaW5nIGEgcHJvYmUuJycnCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIFdlIGNhbm5vdCB1c2Ugc2VuZCBoZXJlIGFzIGl0IGNhbGxzIGVuc3VyZV9ydW5uaW5nLCBjcmVhdGluZwogICAgICAgICAgICAjIGEgY3ljbGUuCiAgICAgICAgICAgIG9zLndyaXRlKHNlbGYuX2ZkLCBiJ1BST0JFOjA6bm9vcFxuJykKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgbmFtZSwgcnR5cGUpOgogICAgICAgICcnJ1JlZ2lzdGVyIG5hbWUgb2YgcmVzb3VyY2Ugd2l0aCByZXNvdXJjZSB0cmFja2VyLicnJwogICAgICAgIHNlbGYuX3NlbmQoJ1JFR0lTVEVSJywgbmFtZSwgcnR5cGUpCgogICAgZGVmIHVucmVnaXN0ZXIoc2VsZiwgbmFtZSwgcnR5cGUpOgogICAgICAgICcnJ1VucmVnaXN0ZXIgbmFtZSBvZiByZXNvdXJjZSB3aXRoIHJlc291cmNlIHRyYWNrZXIuJycnCiAgICAgICAgc2VsZi5fc2VuZCgnVU5SRUdJU1RFUicsIG5hbWUsIHJ0eXBlKQoKICAgIGRlZiBfc2VuZChzZWxmLCBjbWQsIG5hbWUsIHJ0eXBlKToKICAgICAgICBzZWxmLmVuc3VyZV9ydW5uaW5nKCkKICAgICAgICBtc2cgPSAnezB9OnsxfTp7Mn1cbicuZm9ybWF0KGNtZCwgbmFtZSwgcnR5cGUpLmVuY29kZSgnYXNjaWknKQogICAgICAgIGlmIGxlbihtc2cpID4gNTEyOgogICAgICAgICAgICAjIHBvc2l4IGd1YXJhbnRlZXMgdGhhdCB3cml0ZXMgdG8gYSBwaXBlIG9mIGxlc3MgdGhhbiBQSVBFX0JVRgogICAgICAgICAgICAjIGJ5dGVzIGFyZSBhdG9taWMsIGFuZCB0aGF0IFBJUEVfQlVGID49IDUxMgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdtc2cgdG9vIGxvbmcnKQogICAgICAgIG5ieXRlcyA9IG9zLndyaXRlKHNlbGYuX2ZkLCBtc2cpCiAgICAgICAgYXNzZXJ0IG5ieXRlcyA9PSBsZW4obXNnKSwgIm5ieXRlcyB7MDpufSBidXQgbGVuKG1zZykgezE6bn0iLmZvcm1hdCgKICAgICAgICAgICAgbmJ5dGVzLCBsZW4obXNnKSkKCgpfcmVzb3VyY2VfdHJhY2tlciA9IFJlc291cmNlVHJhY2tlcigpCmVuc3VyZV9ydW5uaW5nID0gX3Jlc291cmNlX3RyYWNrZXIuZW5zdXJlX3J1bm5pbmcKcmVnaXN0ZXIgPSBfcmVzb3VyY2VfdHJhY2tlci5yZWdpc3Rlcgp1bnJlZ2lzdGVyID0gX3Jlc291cmNlX3RyYWNrZXIudW5yZWdpc3RlcgpnZXRmZCA9IF9yZXNvdXJjZV90cmFja2VyLmdldGZkCgpkZWYgbWFpbihmZCk6CiAgICAnJydSdW4gcmVzb3VyY2UgdHJhY2tlci4nJycKICAgICMgcHJvdGVjdCB0aGUgcHJvY2VzcyBmcm9tIF5DIGFuZCAia2lsbGFsbCBweXRob24iIGV0YwogICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSU5ULCBzaWduYWwuU0lHX0lHTikKICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHNpZ25hbC5TSUdfSUdOKQogICAgaWYgX0hBVkVfU0lHTUFTSzoKICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgX0lHTk9SRURfU0lHTkFMUykKCiAgICBmb3IgZiBpbiAoc3lzLnN0ZGluLCBzeXMuc3Rkb3V0KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHBhc3MKCiAgICBjYWNoZSA9IHtydHlwZTogc2V0KCkgZm9yIHJ0eXBlIGluIF9DTEVBTlVQX0ZVTkNTLmtleXMoKX0KICAgIHRyeToKICAgICAgICAjIGtlZXAgdHJhY2sgb2YgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQgcmVzb3VyY2VzCiAgICAgICAgd2l0aCBvcGVuKGZkLCAncmInKSBhcyBmOgogICAgICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGNtZCwgbmFtZSwgcnR5cGUgPSBsaW5lLnN0cmlwKCkuZGVjb2RlKCdhc2NpaScpLnNwbGl0KCc6JykKICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2Z1bmMgPSBfQ0xFQU5VUF9GVU5DUy5nZXQocnR5cGUsIE5vbmUpCiAgICAgICAgICAgICAgICAgICAgaWYgY2xlYW51cF9mdW5jIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJ0Nhbm5vdCByZWdpc3RlciB7bmFtZX0gZm9yIGF1dG9tYXRpYyBjbGVhbnVwOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJ3Vua25vd24gcmVzb3VyY2UgdHlwZSB7cnR5cGV9JykKCiAgICAgICAgICAgICAgICAgICAgaWYgY21kID09ICdSRUdJU1RFUic6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW3J0eXBlXS5hZGQobmFtZSkKICAgICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSAnVU5SRUdJU1RFUic6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW3J0eXBlXS5yZW1vdmUobmFtZSkKICAgICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSAnUFJPQkUnOgogICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCd1bnJlY29nbml6ZWQgY29tbWFuZCAlcicgJSBjbWQpCiAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgZmluYWxseToKICAgICAgICAjIGFsbCBwcm9jZXNzZXMgaGF2ZSB0ZXJtaW5hdGVkOyBjbGVhbnVwIGFueSByZW1haW5pbmcgcmVzb3VyY2VzCiAgICAgICAgZm9yIHJ0eXBlLCBydHlwZV9jYWNoZSBpbiBjYWNoZS5pdGVtcygpOgogICAgICAgICAgICBpZiBydHlwZV9jYWNoZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdyZXNvdXJjZV90cmFja2VyOiBUaGVyZSBhcHBlYXIgdG8gYmUgJWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlYWtlZCAlcyBvYmplY3RzIHRvIGNsZWFuIHVwIGF0IHNodXRkb3duJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuKHJ0eXBlX2NhY2hlKSwgcnR5cGUpKQogICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGZvciBuYW1lIGluIHJ0eXBlX2NhY2hlOgogICAgICAgICAgICAgICAgIyBGb3Igc29tZSByZWFzb24gdGhlIHByb2Nlc3Mgd2hpY2ggY3JlYXRlZCBhbmQgcmVnaXN0ZXJlZCB0aGlzCiAgICAgICAgICAgICAgICAjIHJlc291cmNlIGhhcyBmYWlsZWQgdG8gdW5yZWdpc3RlciBpdC4gUHJlc3VtYWJseSBpdCBoYXMKICAgICAgICAgICAgICAgICMgZGllZC4gIFdlIHRoZXJlZm9yZSB1bmxpbmsgaXQuCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBfQ0xFQU5VUF9GVU5DU1tydHlwZV0obmFtZSkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3Jlc291cmNlX3RyYWNrZXI6ICVyOiAlcycgJSAobmFtZSwgZSkpCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIHBhc3MKUEsDBBQAAAAAAAMgo1bxVcXxGkgAABpIAAAgAAAAbXVsdGlwcm9jZXNzaW5nL3NoYXJlZF9tZW1vcnkucHkiIiJQcm92aWRlcyBzaGFyZWQgbWVtb3J5IGZvciBkaXJlY3QgYWNjZXNzIGFjcm9zcyBwcm9jZXNzZXMuCgpUaGUgQVBJIG9mIHRoaXMgcGFja2FnZSBpcyBjdXJyZW50bHkgcHJvdmlzaW9uYWwuIFJlZmVyIHRvIHRoZQpkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgoiIiIKCgpfX2FsbF9fID0gWyAnU2hhcmVkTWVtb3J5JywgJ1NoYXJlYWJsZUxpc3QnIF0KCgpmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAppbXBvcnQgbW1hcAppbXBvcnQgb3MKaW1wb3J0IGVycm5vCmltcG9ydCBzdHJ1Y3QKaW1wb3J0IHNlY3JldHMKaW1wb3J0IHR5cGVzCgppZiBvcy5uYW1lID09ICJudCI6CiAgICBpbXBvcnQgX3dpbmFwaQogICAgX1VTRV9QT1NJWCA9IEZhbHNlCmVsc2U6CiAgICBpbXBvcnQgX3Bvc2l4c2htZW0KICAgIF9VU0VfUE9TSVggPSBUcnVlCgpmcm9tIC4gaW1wb3J0IHJlc291cmNlX3RyYWNrZXIKCl9PX0NSRVggPSBvcy5PX0NSRUFUIHwgb3MuT19FWENMCgojIEZyZWVCU0QgKGFuZCBwZXJoYXBzIG90aGVyIEJTRHMpIGxpbWl0IG5hbWVzIHRvIDE0IGNoYXJhY3RlcnMuCl9TSE1fU0FGRV9OQU1FX0xFTkdUSCA9IDE0CgojIFNoYXJlZCBtZW1vcnkgYmxvY2sgbmFtZSBwcmVmaXgKaWYgX1VTRV9QT1NJWDoKICAgIF9TSE1fTkFNRV9QUkVGSVggPSAnL3BzbV8nCmVsc2U6CiAgICBfU0hNX05BTUVfUFJFRklYID0gJ3duc21fJwoKCmRlZiBfbWFrZV9maWxlbmFtZSgpOgogICAgIkNyZWF0ZSBhIHJhbmRvbSBmaWxlbmFtZSBmb3IgdGhlIHNoYXJlZCBtZW1vcnkgb2JqZWN0LiIKICAgICMgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byB1c2UgZm9yIG5hbWUKICAgIG5ieXRlcyA9IChfU0hNX1NBRkVfTkFNRV9MRU5HVEggLSBsZW4oX1NITV9OQU1FX1BSRUZJWCkpIC8vIDIKICAgIGFzc2VydCBuYnl0ZXMgPj0gMiwgJ19TSE1fTkFNRV9QUkVGSVggdG9vIGxvbmcnCiAgICBuYW1lID0gX1NITV9OQU1FX1BSRUZJWCArIHNlY3JldHMudG9rZW5faGV4KG5ieXRlcykKICAgIGFzc2VydCBsZW4obmFtZSkgPD0gX1NITV9TQUZFX05BTUVfTEVOR1RICiAgICByZXR1cm4gbmFtZQoKCmNsYXNzIFNoYXJlZE1lbW9yeToKICAgICIiIkNyZWF0ZXMgYSBuZXcgc2hhcmVkIG1lbW9yeSBibG9jayBvciBhdHRhY2hlcyB0byBhbiBleGlzdGluZwogICAgc2hhcmVkIG1lbW9yeSBibG9jay4KCiAgICBFdmVyeSBzaGFyZWQgbWVtb3J5IGJsb2NrIGlzIGFzc2lnbmVkIGEgdW5pcXVlIG5hbWUuICBUaGlzIGVuYWJsZXMKICAgIG9uZSBwcm9jZXNzIHRvIGNyZWF0ZSBhIHNoYXJlZCBtZW1vcnkgYmxvY2sgd2l0aCBhIHBhcnRpY3VsYXIgbmFtZQogICAgc28gdGhhdCBhIGRpZmZlcmVudCBwcm9jZXNzIGNhbiBhdHRhY2ggdG8gdGhhdCBzYW1lIHNoYXJlZCBtZW1vcnkKICAgIGJsb2NrIHVzaW5nIHRoYXQgc2FtZSBuYW1lLgoKICAgIEFzIGEgcmVzb3VyY2UgZm9yIHNoYXJpbmcgZGF0YSBhY3Jvc3MgcHJvY2Vzc2VzLCBzaGFyZWQgbWVtb3J5IGJsb2NrcwogICAgbWF5IG91dGxpdmUgdGhlIG9yaWdpbmFsIHByb2Nlc3MgdGhhdCBjcmVhdGVkIHRoZW0uICBXaGVuIG9uZSBwcm9jZXNzCiAgICBubyBsb25nZXIgbmVlZHMgYWNjZXNzIHRvIGEgc2hhcmVkIG1lbW9yeSBibG9jayB0aGF0IG1pZ2h0IHN0aWxsIGJlCiAgICBuZWVkZWQgYnkgb3RoZXIgcHJvY2Vzc2VzLCB0aGUgY2xvc2UoKSBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZC4KICAgIFdoZW4gYSBzaGFyZWQgbWVtb3J5IGJsb2NrIGlzIG5vIGxvbmdlciBuZWVkZWQgYnkgYW55IHByb2Nlc3MsIHRoZQogICAgdW5saW5rKCkgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgdG8gZW5zdXJlIHByb3BlciBjbGVhbnVwLiIiIgoKICAgICMgRGVmYXVsdHM7IGVuYWJsZXMgY2xvc2UoKSBhbmQgdW5saW5rKCkgdG8gcnVuIHdpdGhvdXQgZXJyb3JzLgogICAgX25hbWUgPSBOb25lCiAgICBfZmQgPSAtMQogICAgX21tYXAgPSBOb25lCiAgICBfYnVmID0gTm9uZQogICAgX2ZsYWdzID0gb3MuT19SRFdSCiAgICBfbW9kZSA9IDBvNjAwCiAgICBfcHJlcGVuZF9sZWFkaW5nX3NsYXNoID0gVHJ1ZSBpZiBfVVNFX1BPU0lYIGVsc2UgRmFsc2UKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZT1Ob25lLCBjcmVhdGU9RmFsc2UsIHNpemU9MCk6CiAgICAgICAgaWYgbm90IHNpemUgPj0gMDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3NpemUnIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIikKICAgICAgICBpZiBjcmVhdGU6CiAgICAgICAgICAgIHNlbGYuX2ZsYWdzID0gX09fQ1JFWCB8IG9zLk9fUkRXUgogICAgICAgICAgICBpZiBzaXplID09IDA6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCInc2l6ZScgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciBkaWZmZXJlbnQgZnJvbSB6ZXJvIikKICAgICAgICBpZiBuYW1lIGlzIE5vbmUgYW5kIG5vdCBzZWxmLl9mbGFncyAmIG9zLk9fRVhDTDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ25hbWUnIGNhbiBvbmx5IGJlIE5vbmUgaWYgY3JlYXRlPVRydWUiKQoKICAgICAgICBpZiBfVVNFX1BPU0lYOgoKICAgICAgICAgICAgIyBQT1NJWCBTaGFyZWQgTWVtb3J5CgogICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfbWFrZV9maWxlbmFtZSgpCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mZCA9IF9wb3NpeHNobWVtLnNobV9vcGVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT1zZWxmLl9tb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG5hbWUgPSAiLyIgKyBuYW1lIGlmIHNlbGYuX3ByZXBlbmRfbGVhZGluZ19zbGFzaCBlbHNlIG5hbWUKICAgICAgICAgICAgICAgIHNlbGYuX2ZkID0gX3Bvc2l4c2htZW0uc2htX29wZW4oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICAgICAgICBzZWxmLl9mbGFncywKICAgICAgICAgICAgICAgICAgICBtb2RlPXNlbGYuX21vZGUKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGNyZWF0ZSBhbmQgc2l6ZToKICAgICAgICAgICAgICAgICAgICBvcy5mdHJ1bmNhdGUoc2VsZi5fZmQsIHNpemUpCiAgICAgICAgICAgICAgICBzdGF0cyA9IG9zLmZzdGF0KHNlbGYuX2ZkKQogICAgICAgICAgICAgICAgc2l6ZSA9IHN0YXRzLnN0X3NpemUKICAgICAgICAgICAgICAgIHNlbGYuX21tYXAgPSBtbWFwLm1tYXAoc2VsZi5fZmQsIHNpemUpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgc2VsZi51bmxpbmsoKQogICAgICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgICAgIHJlc291cmNlX3RyYWNrZXIucmVnaXN0ZXIoc2VsZi5fbmFtZSwgInNoYXJlZF9tZW1vcnkiKQoKICAgICAgICBlbHNlOgoKICAgICAgICAgICAgIyBXaW5kb3dzIE5hbWVkIFNoYXJlZCBNZW1vcnkKCiAgICAgICAgICAgIGlmIGNyZWF0ZToKICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgdGVtcF9uYW1lID0gX21ha2VfZmlsZW5hbWUoKSBpZiBuYW1lIGlzIE5vbmUgZWxzZSBuYW1lCiAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYW5kIHJlc2VydmUgc2hhcmVkIG1lbW9yeSBibG9jayB3aXRoIHRoaXMgbmFtZQogICAgICAgICAgICAgICAgICAgICMgdW50aWwgaXQgY2FuIGJlIGF0dGFjaGVkIHRvIGJ5IG1tYXAuCiAgICAgICAgICAgICAgICAgICAgaF9tYXAgPSBfd2luYXBpLkNyZWF0ZUZpbGVNYXBwaW5nKAogICAgICAgICAgICAgICAgICAgICAgICBfd2luYXBpLklOVkFMSURfSEFORExFX1ZBTFVFLAogICAgICAgICAgICAgICAgICAgICAgICBfd2luYXBpLk5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuUEFHRV9SRUFEV1JJVEUsCiAgICAgICAgICAgICAgICAgICAgICAgIChzaXplID4+IDMyKSAmIDB4RkZGRkZGRkYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgJiAweEZGRkZGRkZGLAogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX25hbWUKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2Vycm9yX2NvZGUgPSBfd2luYXBpLkdldExhc3RFcnJvcigpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxhc3RfZXJyb3JfY29kZSA9PSBfd2luYXBpLkVSUk9SX0FMUkVBRFlfRVhJU1RTOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLkVFWElTVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RyZXJyb3IoZXJybm8uRUVYSVNUKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5FUlJPUl9BTFJFQURZX0VYSVNUUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW1hcCA9IG1tYXAubW1hcCgtMSwgc2l6ZSwgdGFnbmFtZT10ZW1wX25hbWUpCiAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShoX21hcCkKICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lID0gdGVtcF9uYW1lCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgICAgICAgICAgIyBEeW5hbWljYWxseSBkZXRlcm1pbmUgdGhlIGV4aXN0aW5nIG5hbWVkIHNoYXJlZCBtZW1vcnkKICAgICAgICAgICAgICAgICMgYmxvY2sncyBzaXplIHdoaWNoIGlzIGxpa2VseSBhIG11bHRpcGxlIG9mIG1tYXAuUEFHRVNJWkUuCiAgICAgICAgICAgICAgICBoX21hcCA9IF93aW5hcGkuT3BlbkZpbGVNYXBwaW5nKAogICAgICAgICAgICAgICAgICAgIF93aW5hcGkuRklMRV9NQVBfUkVBRCwKICAgICAgICAgICAgICAgICAgICBGYWxzZSwKICAgICAgICAgICAgICAgICAgICBuYW1lCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcF9idWYgPSBfd2luYXBpLk1hcFZpZXdPZkZpbGUoCiAgICAgICAgICAgICAgICAgICAgICAgIGhfbWFwLAogICAgICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkZJTEVfTUFQX1JFQUQsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaF9tYXApCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IF93aW5hcGkuVmlydHVhbFF1ZXJ5U2l6ZShwX2J1ZikKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5Vbm1hcFZpZXdPZkZpbGUocF9idWYpCiAgICAgICAgICAgICAgICBzZWxmLl9tbWFwID0gbW1hcC5tbWFwKC0xLCBzaXplLCB0YWduYW1lPW5hbWUpCgogICAgICAgIHNlbGYuX3NpemUgPSBzaXplCiAgICAgICAgc2VsZi5fYnVmID0gbWVtb3J5dmlldyhzZWxmLl9tbWFwKQoKICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBzZWxmLl9fY2xhc3NfXywKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgc2VsZi5uYW1lLAogICAgICAgICAgICAgICAgRmFsc2UsCiAgICAgICAgICAgICAgICBzZWxmLnNpemUsCiAgICAgICAgICAgICksCiAgICAgICAgKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gZid7c2VsZi5fX2NsYXNzX18uX19uYW1lX199KHtzZWxmLm5hbWUhcn0sIHNpemU9e3NlbGYuc2l6ZX0pJwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGJ1ZihzZWxmKToKICAgICAgICAiQSBtZW1vcnl2aWV3IG9mIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGJsb2NrLiIKICAgICAgICByZXR1cm4gc2VsZi5fYnVmCgogICAgQHByb3BlcnR5CiAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAiVW5pcXVlIG5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZSBzaGFyZWQgbWVtb3J5IGJsb2NrLiIKICAgICAgICByZXBvcnRlZF9uYW1lID0gc2VsZi5fbmFtZQogICAgICAgIGlmIF9VU0VfUE9TSVggYW5kIHNlbGYuX3ByZXBlbmRfbGVhZGluZ19zbGFzaDoKICAgICAgICAgICAgaWYgc2VsZi5fbmFtZS5zdGFydHN3aXRoKCIvIik6CiAgICAgICAgICAgICAgICByZXBvcnRlZF9uYW1lID0gc2VsZi5fbmFtZVsxOl0KICAgICAgICByZXR1cm4gcmVwb3J0ZWRfbmFtZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHNpemUoc2VsZik6CiAgICAgICAgIlNpemUgaW4gYnl0ZXMuIgogICAgICAgIHJldHVybiBzZWxmLl9zaXplCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkNsb3NlcyBhY2Nlc3MgdG8gdGhlIHNoYXJlZCBtZW1vcnkgZnJvbSB0aGlzIGluc3RhbmNlIGJ1dCBkb2VzCiAgICAgICAgbm90IGRlc3Ryb3kgdGhlIHNoYXJlZCBtZW1vcnkgYmxvY2suIiIiCiAgICAgICAgaWYgc2VsZi5fYnVmIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9idWYucmVsZWFzZSgpCiAgICAgICAgICAgIHNlbGYuX2J1ZiA9IE5vbmUKICAgICAgICBpZiBzZWxmLl9tbWFwIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9tbWFwLmNsb3NlKCkKICAgICAgICAgICAgc2VsZi5fbW1hcCA9IE5vbmUKICAgICAgICBpZiBfVVNFX1BPU0lYIGFuZCBzZWxmLl9mZCA+PSAwOgogICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9mZCkKICAgICAgICAgICAgc2VsZi5fZmQgPSAtMQoKICAgIGRlZiB1bmxpbmsoc2VsZik6CiAgICAgICAgIiIiUmVxdWVzdHMgdGhhdCB0aGUgdW5kZXJseWluZyBzaGFyZWQgbWVtb3J5IGJsb2NrIGJlIGRlc3Ryb3llZC4KCiAgICAgICAgSW4gb3JkZXIgdG8gZW5zdXJlIHByb3BlciBjbGVhbnVwIG9mIHJlc291cmNlcywgdW5saW5rIHNob3VsZCBiZQogICAgICAgIGNhbGxlZCBvbmNlIChhbmQgb25seSBvbmNlKSBhY3Jvc3MgYWxsIHByb2Nlc3NlcyB3aGljaCBoYXZlIGFjY2VzcwogICAgICAgIHRvIHRoZSBzaGFyZWQgbWVtb3J5IGJsb2NrLiIiIgogICAgICAgIGlmIF9VU0VfUE9TSVggYW5kIHNlbGYuX25hbWU6CiAgICAgICAgICAgIF9wb3NpeHNobWVtLnNobV91bmxpbmsoc2VsZi5fbmFtZSkKICAgICAgICAgICAgcmVzb3VyY2VfdHJhY2tlci51bnJlZ2lzdGVyKHNlbGYuX25hbWUsICJzaGFyZWRfbWVtb3J5IikKCgpfZW5jb2RpbmcgPSAidXRmOCIKCmNsYXNzIFNoYXJlYWJsZUxpc3Q6CiAgICAiIiJQYXR0ZXJuIGZvciBhIG11dGFibGUgbGlzdC1saWtlIG9iamVjdCBzaGFyZWFibGUgdmlhIGEgc2hhcmVkCiAgICBtZW1vcnkgYmxvY2suICBJdCBkaWZmZXJzIGZyb20gdGhlIGJ1aWx0LWluIGxpc3QgdHlwZSBpbiB0aGF0IHRoZXNlCiAgICBsaXN0cyBjYW4gbm90IGNoYW5nZSB0aGVpciBvdmVyYWxsIGxlbmd0aCAoaS5lLiBubyBhcHBlbmQsIGluc2VydCwKICAgIGV0Yy4pCgogICAgQmVjYXVzZSB2YWx1ZXMgYXJlIHBhY2tlZCBpbnRvIGEgbWVtb3J5dmlldyBhcyBieXRlcywgdGhlIHN0cnVjdAogICAgcGFja2luZyBmb3JtYXQgZm9yIGFueSBzdG9yYWJsZSB2YWx1ZSBtdXN0IHJlcXVpcmUgbm8gbW9yZSB0aGFuIDgKICAgIGNoYXJhY3RlcnMgdG8gZGVzY3JpYmUgaXRzIGZvcm1hdC4iIiIKCiAgICAjIFRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgaXMgb3JnYW5pemVkIGFzIGZvbGxvd3M6CiAgICAjIC0gOCBieXRlczogbnVtYmVyIG9mIGl0ZW1zIChOKSBhcyBhIDY0LWJpdCBpbnRlZ2VyCiAgICAjIC0gKE4gKyAxKSAqIDggYnl0ZXM6IG9mZnNldHMgb2YgZWFjaCBlbGVtZW50IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQogICAgIyAgICAgICAgICAgICAgICAgICAgICBkYXRhIGFyZWEKICAgICMgLSBLIGJ5dGVzOiB0aGUgZGF0YSBhcmVhIHN0b3JpbmcgaXRlbSB2YWx1ZXMgKHdpdGggZW5jb2RpbmcgYW5kIHNpemUKICAgICMgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlaXIgcmVzcGVjdGl2ZSB0eXBlcykKICAgICMgLSBOICogOCBieXRlczogYHN0cnVjdGAgZm9ybWF0IHN0cmluZyBmb3IgZWFjaCBlbGVtZW50CiAgICAjIC0gTiBieXRlczogaW5kZXggaW50byBfYmFja190cmFuc2Zvcm1zX21hcHBpbmcgZm9yIGVhY2ggZWxlbWVudAogICAgIyAgICAgICAgICAgIChmb3IgcmVjb25zdHJ1Y3RpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUHl0aG9uIHZhbHVlKQogICAgX3R5cGVzX21hcHBpbmcgPSB7CiAgICAgICAgaW50OiAicSIsCiAgICAgICAgZmxvYXQ6ICJkIiwKICAgICAgICBib29sOiAieHh4eHh4eD8iLAogICAgICAgIHN0cjogIiVkcyIsCiAgICAgICAgYnl0ZXM6ICIlZHMiLAogICAgICAgIE5vbmUuX19jbGFzc19fOiAieHh4eHh4P3giLAogICAgfQogICAgX2FsaWdubWVudCA9IDgKICAgIF9iYWNrX3RyYW5zZm9ybXNfbWFwcGluZyA9IHsKICAgICAgICAwOiBsYW1iZGEgdmFsdWU6IHZhbHVlLCAgICAgICAgICAgICAgICAgICAjIGludCwgZmxvYXQsIGJvb2wKICAgICAgICAxOiBsYW1iZGEgdmFsdWU6IHZhbHVlLnJzdHJpcChiJ1x4MDAnKS5kZWNvZGUoX2VuY29kaW5nKSwgICMgc3RyCiAgICAgICAgMjogbGFtYmRhIHZhbHVlOiB2YWx1ZS5yc3RyaXAoYidceDAwJyksICAgIyBieXRlcwogICAgICAgIDM6IGxhbWJkYSBfdmFsdWU6IE5vbmUsICAgICAgICAgICAgICAgICAgICMgTm9uZQogICAgfQoKICAgIEBzdGF0aWNtZXRob2QKICAgIGRlZiBfZXh0cmFjdF9yZWNyZWF0aW9uX2NvZGUodmFsdWUpOgogICAgICAgICIiIlVzZWQgaW4gY29uY2VydCB3aXRoIF9iYWNrX3RyYW5zZm9ybXNfbWFwcGluZyB0byBjb252ZXJ0IHZhbHVlcwogICAgICAgIGludG8gdGhlIGFwcHJvcHJpYXRlIFB5dGhvbiBvYmplY3RzIHdoZW4gcmV0cmlldmluZyB0aGVtIGZyb20KICAgICAgICB0aGUgbGlzdCBhcyB3ZWxsIGFzIHdoZW4gc3RvcmluZyB0aGVtLiIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCBieXRlcywgTm9uZS5fX2NsYXNzX18pKToKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBieXRlcyk6CiAgICAgICAgICAgIHJldHVybiAyCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIDMgICMgTm9uZVR5cGUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc2VxdWVuY2U9Tm9uZSwgKiwgbmFtZT1Ob25lKToKICAgICAgICBpZiBuYW1lIGlzIE5vbmUgb3Igc2VxdWVuY2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlcXVlbmNlID0gc2VxdWVuY2Ugb3IgKCkKICAgICAgICAgICAgX2Zvcm1hdHMgPSBbCiAgICAgICAgICAgICAgICBzZWxmLl90eXBlc19tYXBwaW5nW3R5cGUoaXRlbSldCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgKHN0ciwgYnl0ZXMpKQogICAgICAgICAgICAgICAgICAgIGVsc2Ugc2VsZi5fdHlwZXNfbWFwcGluZ1t0eXBlKGl0ZW0pXSAlICgKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWxpZ25tZW50ICogKGxlbihpdGVtKSAvLyBzZWxmLl9hbGlnbm1lbnQgKyAxKSwKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzZXF1ZW5jZQogICAgICAgICAgICBdCiAgICAgICAgICAgIHNlbGYuX2xpc3RfbGVuID0gbGVuKF9mb3JtYXRzKQogICAgICAgICAgICBhc3NlcnQgc3VtKGxlbihmbXQpIDw9IDggZm9yIGZtdCBpbiBfZm9ybWF0cykgPT0gc2VsZi5fbGlzdF9sZW4KICAgICAgICAgICAgb2Zmc2V0ID0gMAogICAgICAgICAgICAjIFRoZSBvZmZzZXRzIG9mIGVhY2ggbGlzdCBlbGVtZW50IGludG8gdGhlIHNoYXJlZCBtZW1vcnkncwogICAgICAgICAgICAjIGRhdGEgYXJlYSAoMCBtZWFuaW5nIHRoZSBzdGFydCBvZiB0aGUgZGF0YSBhcmVhLCBub3QgdGhlIHN0YXJ0CiAgICAgICAgICAgICMgb2YgdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSkuCiAgICAgICAgICAgIHNlbGYuX2FsbG9jYXRlZF9vZmZzZXRzID0gWzBdCiAgICAgICAgICAgIGZvciBmbXQgaW4gX2Zvcm1hdHM6CiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gc2VsZi5fYWxpZ25tZW50IGlmIGZtdFstMV0gIT0gInMiIGVsc2UgaW50KGZtdFs6LTFdKQogICAgICAgICAgICAgICAgc2VsZi5fYWxsb2NhdGVkX29mZnNldHMuYXBwZW5kKG9mZnNldCkKICAgICAgICAgICAgX3JlY3JlYXRpb25fY29kZXMgPSBbCiAgICAgICAgICAgICAgICBzZWxmLl9leHRyYWN0X3JlY3JlYXRpb25fY29kZShpdGVtKSBmb3IgaXRlbSBpbiBzZXF1ZW5jZQogICAgICAgICAgICBdCiAgICAgICAgICAgIHJlcXVlc3RlZF9zaXplID0gc3RydWN0LmNhbGNzaXplKAogICAgICAgICAgICAgICAgInEiICsgc2VsZi5fZm9ybWF0X3NpemVfbWV0YWluZm8gKwogICAgICAgICAgICAgICAgIiIuam9pbihfZm9ybWF0cykgKwogICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0X3BhY2tpbmdfbWV0YWluZm8gKwogICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0X2JhY2tfdHJhbnNmb3JtX2NvZGVzCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIHNlbGYuc2htID0gU2hhcmVkTWVtb3J5KG5hbWUsIGNyZWF0ZT1UcnVlLCBzaXplPXJlcXVlc3RlZF9zaXplKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuc2htID0gU2hhcmVkTWVtb3J5KG5hbWUpCgogICAgICAgIGlmIHNlcXVlbmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfZW5jID0gX2VuY29kaW5nCiAgICAgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oCiAgICAgICAgICAgICAgICAicSIgKyBzZWxmLl9mb3JtYXRfc2l6ZV9tZXRhaW5mbywKICAgICAgICAgICAgICAgIHNlbGYuc2htLmJ1ZiwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICBzZWxmLl9saXN0X2xlbiwKICAgICAgICAgICAgICAgICooc2VsZi5fYWxsb2NhdGVkX29mZnNldHMpCiAgICAgICAgICAgICkKICAgICAgICAgICAgc3RydWN0LnBhY2tfaW50bygKICAgICAgICAgICAgICAgICIiLmpvaW4oX2Zvcm1hdHMpLAogICAgICAgICAgICAgICAgc2VsZi5zaG0uYnVmLAogICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0X2RhdGFfc3RhcnQsCiAgICAgICAgICAgICAgICAqKHYuZW5jb2RlKF9lbmMpIGlmIGlzaW5zdGFuY2Uodiwgc3RyKSBlbHNlIHYgZm9yIHYgaW4gc2VxdWVuY2UpCiAgICAgICAgICAgICkKICAgICAgICAgICAgc3RydWN0LnBhY2tfaW50bygKICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9wYWNraW5nX21ldGFpbmZvLAogICAgICAgICAgICAgICAgc2VsZi5zaG0uYnVmLAogICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0X3BhY2tpbmdfZm9ybWF0cywKICAgICAgICAgICAgICAgICoodi5lbmNvZGUoX2VuYykgZm9yIHYgaW4gX2Zvcm1hdHMpCiAgICAgICAgICAgICkKICAgICAgICAgICAgc3RydWN0LnBhY2tfaW50bygKICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9iYWNrX3RyYW5zZm9ybV9jb2RlcywKICAgICAgICAgICAgICAgIHNlbGYuc2htLmJ1ZiwKICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldF9iYWNrX3RyYW5zZm9ybV9jb2RlcywKICAgICAgICAgICAgICAgICooX3JlY3JlYXRpb25fY29kZXMpCiAgICAgICAgICAgICkKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbGlzdF9sZW4gPSBsZW4oc2VsZikgICMgT2J0YWlucyBzaXplIGZyb20gb2Zmc2V0IDAgaW4gYnVmZmVyLgogICAgICAgICAgICBzZWxmLl9hbGxvY2F0ZWRfb2Zmc2V0cyA9IGxpc3QoCiAgICAgICAgICAgICAgICBzdHJ1Y3QudW5wYWNrX2Zyb20oCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0X3NpemVfbWV0YWluZm8sCiAgICAgICAgICAgICAgICAgICAgc2VsZi5zaG0uYnVmLAogICAgICAgICAgICAgICAgICAgIDEgKiA4CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKCiAgICBkZWYgX2dldF9wYWNraW5nX2Zvcm1hdChzZWxmLCBwb3NpdGlvbik6CiAgICAgICAgIkdldHMgdGhlIHBhY2tpbmcgZm9ybWF0IGZvciBhIHNpbmdsZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIGxpc3QuIgogICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gaWYgcG9zaXRpb24gPj0gMCBlbHNlIHBvc2l0aW9uICsgc2VsZi5fbGlzdF9sZW4KICAgICAgICBpZiAocG9zaXRpb24gPj0gc2VsZi5fbGlzdF9sZW4pIG9yIChzZWxmLl9saXN0X2xlbiA8IDApOgogICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCJSZXF1ZXN0ZWQgcG9zaXRpb24gb3V0IG9mIHJhbmdlLiIpCgogICAgICAgIHYgPSBzdHJ1Y3QudW5wYWNrX2Zyb20oCiAgICAgICAgICAgICI4cyIsCiAgICAgICAgICAgIHNlbGYuc2htLmJ1ZiwKICAgICAgICAgICAgc2VsZi5fb2Zmc2V0X3BhY2tpbmdfZm9ybWF0cyArIHBvc2l0aW9uICogOAogICAgICAgIClbMF0KICAgICAgICBmbXQgPSB2LnJzdHJpcChiJ1x4MDAnKQogICAgICAgIGZtdF9hc19zdHIgPSBmbXQuZGVjb2RlKF9lbmNvZGluZykKCiAgICAgICAgcmV0dXJuIGZtdF9hc19zdHIKCiAgICBkZWYgX2dldF9iYWNrX3RyYW5zZm9ybShzZWxmLCBwb3NpdGlvbik6CiAgICAgICAgIkdldHMgdGhlIGJhY2sgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb24gZm9yIGEgc2luZ2xlIHZhbHVlLiIKCiAgICAgICAgaWYgKHBvc2l0aW9uID49IHNlbGYuX2xpc3RfbGVuKSBvciAoc2VsZi5fbGlzdF9sZW4gPCAwKToKICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigiUmVxdWVzdGVkIHBvc2l0aW9uIG91dCBvZiByYW5nZS4iKQoKICAgICAgICB0cmFuc2Zvcm1fY29kZSA9IHN0cnVjdC51bnBhY2tfZnJvbSgKICAgICAgICAgICAgImIiLAogICAgICAgICAgICBzZWxmLnNobS5idWYsCiAgICAgICAgICAgIHNlbGYuX29mZnNldF9iYWNrX3RyYW5zZm9ybV9jb2RlcyArIHBvc2l0aW9uCiAgICAgICAgKVswXQogICAgICAgIHRyYW5zZm9ybV9mdW5jdGlvbiA9IHNlbGYuX2JhY2tfdHJhbnNmb3Jtc19tYXBwaW5nW3RyYW5zZm9ybV9jb2RlXQoKICAgICAgICByZXR1cm4gdHJhbnNmb3JtX2Z1bmN0aW9uCgogICAgZGVmIF9zZXRfcGFja2luZ19mb3JtYXRfYW5kX3RyYW5zZm9ybShzZWxmLCBwb3NpdGlvbiwgZm10X2FzX3N0ciwgdmFsdWUpOgogICAgICAgICIiIlNldHMgdGhlIHBhY2tpbmcgZm9ybWF0IGFuZCBiYWNrIHRyYW5zZm9ybWF0aW9uIGNvZGUgZm9yIGEKICAgICAgICBzaW5nbGUgdmFsdWUgaW4gdGhlIGxpc3QgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4iIiIKCiAgICAgICAgaWYgKHBvc2l0aW9uID49IHNlbGYuX2xpc3RfbGVuKSBvciAoc2VsZi5fbGlzdF9sZW4gPCAwKToKICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigiUmVxdWVzdGVkIHBvc2l0aW9uIG91dCBvZiByYW5nZS4iKQoKICAgICAgICBzdHJ1Y3QucGFja19pbnRvKAogICAgICAgICAgICAiOHMiLAogICAgICAgICAgICBzZWxmLnNobS5idWYsCiAgICAgICAgICAgIHNlbGYuX29mZnNldF9wYWNraW5nX2Zvcm1hdHMgKyBwb3NpdGlvbiAqIDgsCiAgICAgICAgICAgIGZtdF9hc19zdHIuZW5jb2RlKF9lbmNvZGluZykKICAgICAgICApCgogICAgICAgIHRyYW5zZm9ybV9jb2RlID0gc2VsZi5fZXh0cmFjdF9yZWNyZWF0aW9uX2NvZGUodmFsdWUpCiAgICAgICAgc3RydWN0LnBhY2tfaW50bygKICAgICAgICAgICAgImIiLAogICAgICAgICAgICBzZWxmLnNobS5idWYsCiAgICAgICAgICAgIHNlbGYuX29mZnNldF9iYWNrX3RyYW5zZm9ybV9jb2RlcyArIHBvc2l0aW9uLAogICAgICAgICAgICB0cmFuc2Zvcm1fY29kZQogICAgICAgICkKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcG9zaXRpb24pOgogICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gaWYgcG9zaXRpb24gPj0gMCBlbHNlIHBvc2l0aW9uICsgc2VsZi5fbGlzdF9sZW4KICAgICAgICB0cnk6CiAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX29mZnNldF9kYXRhX3N0YXJ0ICsgc2VsZi5fYWxsb2NhdGVkX29mZnNldHNbcG9zaXRpb25dCiAgICAgICAgICAgICh2LCkgPSBzdHJ1Y3QudW5wYWNrX2Zyb20oCiAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFja2luZ19mb3JtYXQocG9zaXRpb24pLAogICAgICAgICAgICAgICAgc2VsZi5zaG0uYnVmLAogICAgICAgICAgICAgICAgb2Zmc2V0CiAgICAgICAgICAgICkKICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigiaW5kZXggb3V0IG9mIHJhbmdlIikKCiAgICAgICAgYmFja190cmFuc2Zvcm0gPSBzZWxmLl9nZXRfYmFja190cmFuc2Zvcm0ocG9zaXRpb24pCiAgICAgICAgdiA9IGJhY2tfdHJhbnNmb3JtKHYpCgogICAgICAgIHJldHVybiB2CgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIHBvc2l0aW9uLCB2YWx1ZSk6CiAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiBpZiBwb3NpdGlvbiA+PSAwIGVsc2UgcG9zaXRpb24gKyBzZWxmLl9saXN0X2xlbgogICAgICAgIHRyeToKICAgICAgICAgICAgaXRlbV9vZmZzZXQgPSBzZWxmLl9hbGxvY2F0ZWRfb2Zmc2V0c1twb3NpdGlvbl0KICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fb2Zmc2V0X2RhdGFfc3RhcnQgKyBpdGVtX29mZnNldAogICAgICAgICAgICBjdXJyZW50X2Zvcm1hdCA9IHNlbGYuX2dldF9wYWNraW5nX2Zvcm1hdChwb3NpdGlvbikKICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigiYXNzaWdubWVudCBpbmRleCBvdXQgb2YgcmFuZ2UiKQoKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgbmV3X2Zvcm1hdCA9IHNlbGYuX3R5cGVzX21hcHBpbmdbdHlwZSh2YWx1ZSldCiAgICAgICAgICAgIGVuY29kZWRfdmFsdWUgPSB2YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGFsbG9jYXRlZF9sZW5ndGggPSBzZWxmLl9hbGxvY2F0ZWRfb2Zmc2V0c1twb3NpdGlvbiArIDFdIC0gaXRlbV9vZmZzZXQKCiAgICAgICAgICAgIGVuY29kZWRfdmFsdWUgPSAodmFsdWUuZW5jb2RlKF9lbmNvZGluZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpIGVsc2UgdmFsdWUpCiAgICAgICAgICAgIGlmIGxlbihlbmNvZGVkX3ZhbHVlKSA+IGFsbG9jYXRlZF9sZW5ndGg6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJieXRlcy9zdHIgaXRlbSBleGNlZWRzIGF2YWlsYWJsZSBzdG9yYWdlIikKICAgICAgICAgICAgaWYgY3VycmVudF9mb3JtYXRbLTFdID09ICJzIjoKICAgICAgICAgICAgICAgIG5ld19mb3JtYXQgPSBjdXJyZW50X2Zvcm1hdAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbmV3X2Zvcm1hdCA9IHNlbGYuX3R5cGVzX21hcHBpbmdbc3RyXSAlICgKICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZWRfbGVuZ3RoLAogICAgICAgICAgICAgICAgKQoKICAgICAgICBzZWxmLl9zZXRfcGFja2luZ19mb3JtYXRfYW5kX3RyYW5zZm9ybSgKICAgICAgICAgICAgcG9zaXRpb24sCiAgICAgICAgICAgIG5ld19mb3JtYXQsCiAgICAgICAgICAgIHZhbHVlCiAgICAgICAgKQogICAgICAgIHN0cnVjdC5wYWNrX2ludG8obmV3X2Zvcm1hdCwgc2VsZi5zaG0uYnVmLCBvZmZzZXQsIGVuY29kZWRfdmFsdWUpCgogICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHBhcnRpYWwoc2VsZi5fX2NsYXNzX18sIG5hbWU9c2VsZi5zaG0ubmFtZSksICgpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2tfZnJvbSgicSIsIHNlbGYuc2htLmJ1ZiwgMClbMF0KCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYne3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffSh7bGlzdChzZWxmKX0sIG5hbWU9e3NlbGYuc2htLm5hbWUhcn0pJwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGZvcm1hdChzZWxmKToKICAgICAgICAiVGhlIHN0cnVjdCBwYWNraW5nIGZvcm1hdCB1c2VkIGJ5IGFsbCBjdXJyZW50bHkgc3RvcmVkIGl0ZW1zLiIKICAgICAgICByZXR1cm4gIiIuam9pbigKICAgICAgICAgICAgc2VsZi5fZ2V0X3BhY2tpbmdfZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKHNlbGYuX2xpc3RfbGVuKQogICAgICAgICkKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfZm9ybWF0X3NpemVfbWV0YWluZm8oc2VsZik6CiAgICAgICAgIlRoZSBzdHJ1Y3QgcGFja2luZyBmb3JtYXQgdXNlZCBmb3IgdGhlIGl0ZW1zJyBzdG9yYWdlIG9mZnNldHMuIgogICAgICAgIHJldHVybiAicSIgKiAoc2VsZi5fbGlzdF9sZW4gKyAxKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9mb3JtYXRfcGFja2luZ19tZXRhaW5mbyhzZWxmKToKICAgICAgICAiVGhlIHN0cnVjdCBwYWNraW5nIGZvcm1hdCB1c2VkIGZvciB0aGUgaXRlbXMnIHBhY2tpbmcgZm9ybWF0cy4iCiAgICAgICAgcmV0dXJuICI4cyIgKiBzZWxmLl9saXN0X2xlbgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9mb3JtYXRfYmFja190cmFuc2Zvcm1fY29kZXMoc2VsZik6CiAgICAgICAgIlRoZSBzdHJ1Y3QgcGFja2luZyBmb3JtYXQgdXNlZCBmb3IgdGhlIGl0ZW1zJyBiYWNrIHRyYW5zZm9ybXMuIgogICAgICAgIHJldHVybiAiYiIgKiBzZWxmLl9saXN0X2xlbgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9vZmZzZXRfZGF0YV9zdGFydChzZWxmKToKICAgICAgICAjIC0gOCBieXRlcyBmb3IgdGhlIGxpc3QgbGVuZ3RoCiAgICAgICAgIyAtIChOICsgMSkgKiA4IGJ5dGVzIGZvciB0aGUgZWxlbWVudCBvZmZzZXRzCiAgICAgICAgcmV0dXJuIChzZWxmLl9saXN0X2xlbiArIDIpICogOAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9vZmZzZXRfcGFja2luZ19mb3JtYXRzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9vZmZzZXRfZGF0YV9zdGFydCArIHNlbGYuX2FsbG9jYXRlZF9vZmZzZXRzWy0xXQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9vZmZzZXRfYmFja190cmFuc2Zvcm1fY29kZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX29mZnNldF9wYWNraW5nX2Zvcm1hdHMgKyBzZWxmLl9saXN0X2xlbiAqIDgKCiAgICBkZWYgY291bnQoc2VsZiwgdmFsdWUpOgogICAgICAgICJMLmNvdW50KHZhbHVlKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgdmFsdWUuIgoKICAgICAgICByZXR1cm4gc3VtKHZhbHVlID09IGVudHJ5IGZvciBlbnRyeSBpbiBzZWxmKQoKICAgIGRlZiBpbmRleChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIiIiTC5pbmRleCh2YWx1ZSkgLT4gaW50ZWdlciAtLSByZXR1cm4gZmlyc3QgaW5kZXggb2YgdmFsdWUuCiAgICAgICAgUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LiIiIgoKICAgICAgICBmb3IgcG9zaXRpb24sIGVudHJ5IGluIGVudW1lcmF0ZShzZWxmKToKICAgICAgICAgICAgaWYgdmFsdWUgPT0gZW50cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24KICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYie3ZhbHVlIXJ9IG5vdCBpbiB0aGlzIGNvbnRhaW5lciIpCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZCh0eXBlcy5HZW5lcmljQWxpYXMpClBLAwQUAAAAAAADIKNWffTf9KIYAACiGAAAHwAAAG11bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkjCiMgTW9kdWxlIHdoaWNoIHN1cHBvcnRzIGFsbG9jYXRpb24gb2YgY3R5cGVzIG9iamVjdHMgZnJvbSBzaGFyZWQgbWVtb3J5CiMKIyBtdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgojCgppbXBvcnQgY3R5cGVzCmltcG9ydCB3ZWFrcmVmCgpmcm9tIC4gaW1wb3J0IGhlYXAKZnJvbSAuIGltcG9ydCBnZXRfY29udGV4dAoKZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBhc3NlcnRfc3Bhd25pbmcKX0ZvcmtpbmdQaWNrbGVyID0gcmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCgpfX2FsbF9fID0gWydSYXdWYWx1ZScsICdSYXdBcnJheScsICdWYWx1ZScsICdBcnJheScsICdjb3B5JywgJ3N5bmNocm9uaXplZCddCgojCiMKIwoKdHlwZWNvZGVfdG9fdHlwZSA9IHsKICAgICdjJzogY3R5cGVzLmNfY2hhciwgICAgICd1JzogY3R5cGVzLmNfd2NoYXIsCiAgICAnYic6IGN0eXBlcy5jX2J5dGUsICAgICAnQic6IGN0eXBlcy5jX3VieXRlLAogICAgJ2gnOiBjdHlwZXMuY19zaG9ydCwgICAgJ0gnOiBjdHlwZXMuY191c2hvcnQsCiAgICAnaSc6IGN0eXBlcy5jX2ludCwgICAgICAnSSc6IGN0eXBlcy5jX3VpbnQsCiAgICAnbCc6IGN0eXBlcy5jX2xvbmcsICAgICAnTCc6IGN0eXBlcy5jX3Vsb25nLAogICAgJ3EnOiBjdHlwZXMuY19sb25nbG9uZywgJ1EnOiBjdHlwZXMuY191bG9uZ2xvbmcsCiAgICAnZic6IGN0eXBlcy5jX2Zsb2F0LCAgICAnZCc6IGN0eXBlcy5jX2RvdWJsZQogICAgfQoKIwojCiMKCmRlZiBfbmV3X3ZhbHVlKHR5cGVfKToKICAgIHNpemUgPSBjdHlwZXMuc2l6ZW9mKHR5cGVfKQogICAgd3JhcHBlciA9IGhlYXAuQnVmZmVyV3JhcHBlcihzaXplKQogICAgcmV0dXJuIHJlYnVpbGRfY3R5cGUodHlwZV8sIHdyYXBwZXIsIE5vbmUpCgpkZWYgUmF3VmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MpOgogICAgJycnCiAgICBSZXR1cm5zIGEgY3R5cGVzIG9iamVjdCBhbGxvY2F0ZWQgZnJvbSBzaGFyZWQgbWVtb3J5CiAgICAnJycKICAgIHR5cGVfID0gdHlwZWNvZGVfdG9fdHlwZS5nZXQodHlwZWNvZGVfb3JfdHlwZSwgdHlwZWNvZGVfb3JfdHlwZSkKICAgIG9iaiA9IF9uZXdfdmFsdWUodHlwZV8pCiAgICBjdHlwZXMubWVtc2V0KGN0eXBlcy5hZGRyZXNzb2Yob2JqKSwgMCwgY3R5cGVzLnNpemVvZihvYmopKQogICAgb2JqLl9faW5pdF9fKCphcmdzKQogICAgcmV0dXJuIG9iagoKZGVmIFJhd0FycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIpOgogICAgJycnCiAgICBSZXR1cm5zIGEgY3R5cGVzIGFycmF5IGFsbG9jYXRlZCBmcm9tIHNoYXJlZCBtZW1vcnkKICAgICcnJwogICAgdHlwZV8gPSB0eXBlY29kZV90b190eXBlLmdldCh0eXBlY29kZV9vcl90eXBlLCB0eXBlY29kZV9vcl90eXBlKQogICAgaWYgaXNpbnN0YW5jZShzaXplX29yX2luaXRpYWxpemVyLCBpbnQpOgogICAgICAgIHR5cGVfID0gdHlwZV8gKiBzaXplX29yX2luaXRpYWxpemVyCiAgICAgICAgb2JqID0gX25ld192YWx1ZSh0eXBlXykKICAgICAgICBjdHlwZXMubWVtc2V0KGN0eXBlcy5hZGRyZXNzb2Yob2JqKSwgMCwgY3R5cGVzLnNpemVvZihvYmopKQogICAgICAgIHJldHVybiBvYmoKICAgIGVsc2U6CiAgICAgICAgdHlwZV8gPSB0eXBlXyAqIGxlbihzaXplX29yX2luaXRpYWxpemVyKQogICAgICAgIHJlc3VsdCA9IF9uZXdfdmFsdWUodHlwZV8pCiAgICAgICAgcmVzdWx0Ll9faW5pdF9fKCpzaXplX29yX2luaXRpYWxpemVyKQogICAgICAgIHJldHVybiByZXN1bHQKCmRlZiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1UcnVlLCBjdHg9Tm9uZSk6CiAgICAnJycKICAgIFJldHVybiBhIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIGZvciBhIFZhbHVlCiAgICAnJycKICAgIG9iaiA9IFJhd1ZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzKQogICAgaWYgbG9jayBpcyBGYWxzZToKICAgICAgICByZXR1cm4gb2JqCiAgICBpZiBsb2NrIGluIChUcnVlLCBOb25lKToKICAgICAgICBjdHggPSBjdHggb3IgZ2V0X2NvbnRleHQoKQogICAgICAgIGxvY2sgPSBjdHguUkxvY2soKQogICAgaWYgbm90IGhhc2F0dHIobG9jaywgJ2FjcXVpcmUnKToKICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXIgaGFzIG5vIG1ldGhvZCAnYWNxdWlyZSciICUgbG9jaykKICAgIHJldHVybiBzeW5jaHJvbml6ZWQob2JqLCBsb2NrLCBjdHg9Y3R4KQoKZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICosIGxvY2s9VHJ1ZSwgY3R4PU5vbmUpOgogICAgJycnCiAgICBSZXR1cm4gYSBzeW5jaHJvbml6YXRpb24gd3JhcHBlciBmb3IgYSBSYXdBcnJheQogICAgJycnCiAgICBvYmogPSBSYXdBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyKQogICAgaWYgbG9jayBpcyBGYWxzZToKICAgICAgICByZXR1cm4gb2JqCiAgICBpZiBsb2NrIGluIChUcnVlLCBOb25lKToKICAgICAgICBjdHggPSBjdHggb3IgZ2V0X2NvbnRleHQoKQogICAgICAgIGxvY2sgPSBjdHguUkxvY2soKQogICAgaWYgbm90IGhhc2F0dHIobG9jaywgJ2FjcXVpcmUnKToKICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXIgaGFzIG5vIG1ldGhvZCAnYWNxdWlyZSciICUgbG9jaykKICAgIHJldHVybiBzeW5jaHJvbml6ZWQob2JqLCBsb2NrLCBjdHg9Y3R4KQoKZGVmIGNvcHkob2JqKToKICAgIG5ld19vYmogPSBfbmV3X3ZhbHVlKHR5cGUob2JqKSkKICAgIGN0eXBlcy5wb2ludGVyKG5ld19vYmopWzBdID0gb2JqCiAgICByZXR1cm4gbmV3X29iagoKZGVmIHN5bmNocm9uaXplZChvYmosIGxvY2s9Tm9uZSwgY3R4PU5vbmUpOgogICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKG9iaiwgU3luY2hyb25pemVkQmFzZSksICdvYmplY3QgYWxyZWFkeSBzeW5jaHJvbml6ZWQnCiAgICBjdHggPSBjdHggb3IgZ2V0X2NvbnRleHQoKQoKICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBjdHlwZXMuX1NpbXBsZUNEYXRhKToKICAgICAgICByZXR1cm4gU3luY2hyb25pemVkKG9iaiwgbG9jaywgY3R4KQogICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgY3R5cGVzLkFycmF5KToKICAgICAgICBpZiBvYmouX3R5cGVfIGlzIGN0eXBlcy5jX2NoYXI6CiAgICAgICAgICAgIHJldHVybiBTeW5jaHJvbml6ZWRTdHJpbmcob2JqLCBsb2NrLCBjdHgpCiAgICAgICAgcmV0dXJuIFN5bmNocm9uaXplZEFycmF5KG9iaiwgbG9jaywgY3R4KQogICAgZWxzZToKICAgICAgICBjbHMgPSB0eXBlKG9iaikKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNjbHMgPSBjbGFzc19jYWNoZVtjbHNdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBuYW1lcyA9IFtmaWVsZFswXSBmb3IgZmllbGQgaW4gY2xzLl9maWVsZHNfXQogICAgICAgICAgICBkID0ge25hbWU6IG1ha2VfcHJvcGVydHkobmFtZSkgZm9yIG5hbWUgaW4gbmFtZXN9CiAgICAgICAgICAgIGNsYXNzbmFtZSA9ICdTeW5jaHJvbml6ZWQnICsgY2xzLl9fbmFtZV9fCiAgICAgICAgICAgIHNjbHMgPSBjbGFzc19jYWNoZVtjbHNdID0gdHlwZShjbGFzc25hbWUsIChTeW5jaHJvbml6ZWRCYXNlLCksIGQpCiAgICAgICAgcmV0dXJuIHNjbHMob2JqLCBsb2NrLCBjdHgpCgojCiMgRnVuY3Rpb25zIGZvciBwaWNrbGluZy91bnBpY2tsaW5nCiMKCmRlZiByZWR1Y2VfY3R5cGUob2JqKToKICAgIGFzc2VydF9zcGF3bmluZyhvYmopCiAgICBpZiBpc2luc3RhbmNlKG9iaiwgY3R5cGVzLkFycmF5KToKICAgICAgICByZXR1cm4gcmVidWlsZF9jdHlwZSwgKG9iai5fdHlwZV8sIG9iai5fd3JhcHBlciwgb2JqLl9sZW5ndGhfKQogICAgZWxzZToKICAgICAgICByZXR1cm4gcmVidWlsZF9jdHlwZSwgKHR5cGUob2JqKSwgb2JqLl93cmFwcGVyLCBOb25lKQoKZGVmIHJlYnVpbGRfY3R5cGUodHlwZV8sIHdyYXBwZXIsIGxlbmd0aCk6CiAgICBpZiBsZW5ndGggaXMgbm90IE5vbmU6CiAgICAgICAgdHlwZV8gPSB0eXBlXyAqIGxlbmd0aAogICAgX0ZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHR5cGVfLCByZWR1Y2VfY3R5cGUpCiAgICBidWYgPSB3cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkKICAgIG9iaiA9IHR5cGVfLmZyb21fYnVmZmVyKGJ1ZikKICAgIG9iai5fd3JhcHBlciA9IHdyYXBwZXIKICAgIHJldHVybiBvYmoKCiMKIyBGdW5jdGlvbiB0byBjcmVhdGUgcHJvcGVydGllcwojCgpkZWYgbWFrZV9wcm9wZXJ0eShuYW1lKToKICAgIHRyeToKICAgICAgICByZXR1cm4gcHJvcF9jYWNoZVtuYW1lXQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIGQgPSB7fQogICAgICAgIGV4ZWModGVtcGxhdGUgJSAoKG5hbWUsKSo3KSwgZCkKICAgICAgICBwcm9wX2NhY2hlW25hbWVdID0gZFtuYW1lXQogICAgICAgIHJldHVybiBkW25hbWVdCgp0ZW1wbGF0ZSA9ICcnJwpkZWYgZ2V0JXMoc2VsZik6CiAgICBzZWxmLmFjcXVpcmUoKQogICAgdHJ5OgogICAgICAgIHJldHVybiBzZWxmLl9vYmouJXMKICAgIGZpbmFsbHk6CiAgICAgICAgc2VsZi5yZWxlYXNlKCkKZGVmIHNldCVzKHNlbGYsIHZhbHVlKToKICAgIHNlbGYuYWNxdWlyZSgpCiAgICB0cnk6CiAgICAgICAgc2VsZi5fb2JqLiVzID0gdmFsdWUKICAgIGZpbmFsbHk6CiAgICAgICAgc2VsZi5yZWxlYXNlKCkKJXMgPSBwcm9wZXJ0eShnZXQlcywgc2V0JXMpCicnJwoKcHJvcF9jYWNoZSA9IHt9CmNsYXNzX2NhY2hlID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCgojCiMgU3luY2hyb25pemVkIHdyYXBwZXJzCiMKCmNsYXNzIFN5bmNocm9uaXplZEJhc2Uob2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgb2JqLCBsb2NrPU5vbmUsIGN0eD1Ob25lKToKICAgICAgICBzZWxmLl9vYmogPSBvYmoKICAgICAgICBpZiBsb2NrOgogICAgICAgICAgICBzZWxmLl9sb2NrID0gbG9jawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGN0eCA9IGN0eCBvciBnZXRfY29udGV4dChmb3JjZT1UcnVlKQogICAgICAgICAgICBzZWxmLl9sb2NrID0gY3R4LlJMb2NrKCkKICAgICAgICBzZWxmLmFjcXVpcmUgPSBzZWxmLl9sb2NrLmFjcXVpcmUKICAgICAgICBzZWxmLnJlbGVhc2UgPSBzZWxmLl9sb2NrLnJlbGVhc2UKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZW50ZXJfXygpCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2V4aXRfXygqYXJncykKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICBhc3NlcnRfc3Bhd25pbmcoc2VsZikKICAgICAgICByZXR1cm4gc3luY2hyb25pemVkLCAoc2VsZi5fb2JqLCBzZWxmLl9sb2NrKQoKICAgIGRlZiBnZXRfb2JqKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9vYmoKCiAgICBkZWYgZ2V0X2xvY2soc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2sKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICc8JXMgd3JhcHBlciBmb3IgJXM+JyAlICh0eXBlKHNlbGYpLl9fbmFtZV9fLCBzZWxmLl9vYmopCgoKY2xhc3MgU3luY2hyb25pemVkKFN5bmNocm9uaXplZEJhc2UpOgogICAgdmFsdWUgPSBtYWtlX3Byb3BlcnR5KCd2YWx1ZScpCgoKY2xhc3MgU3luY2hyb25pemVkQXJyYXkoU3luY2hyb25pemVkQmFzZSk6CgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9vYmopCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgogICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29ialtpXQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpLCB2YWx1ZSk6CiAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICBzZWxmLl9vYmpbaV0gPSB2YWx1ZQoKICAgIGRlZiBfX2dldHNsaWNlX18oc2VsZiwgc3RhcnQsIHN0b3ApOgogICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29ialtzdGFydDpzdG9wXQoKICAgIGRlZiBfX3NldHNsaWNlX18oc2VsZiwgc3RhcnQsIHN0b3AsIHZhbHVlcyk6CiAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICBzZWxmLl9vYmpbc3RhcnQ6c3RvcF0gPSB2YWx1ZXMKCgpjbGFzcyBTeW5jaHJvbml6ZWRTdHJpbmcoU3luY2hyb25pemVkQXJyYXkpOgogICAgdmFsdWUgPSBtYWtlX3Byb3BlcnR5KCd2YWx1ZScpCiAgICByYXcgPSBtYWtlX3Byb3BlcnR5KCdyYXcnKQpQSwMEFAAAAAAAAyCjVvsst5XNJAAAzSQAABgAAABtdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkjCiMgQ29kZSB1c2VkIHRvIHN0YXJ0IHByb2Nlc3NlcyB3aGVuIHVzaW5nIHRoZSBzcGF3biBvciBmb3Jrc2VydmVyCiMgc3RhcnQgbWV0aG9kcy4KIwojIG11bHRpcHJvY2Vzc2luZy9zcGF3bi5weQojCiMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KIwoKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IHJ1bnB5CmltcG9ydCB0eXBlcwoKZnJvbSAuIGltcG9ydCBnZXRfc3RhcnRfbWV0aG9kLCBzZXRfc3RhcnRfbWV0aG9kCmZyb20gLiBpbXBvcnQgcHJvY2Vzcwpmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KZnJvbSAuIGltcG9ydCB1dGlsCgpfX2FsbF9fID0gWydfbWFpbicsICdmcmVlemVfc3VwcG9ydCcsICdzZXRfZXhlY3V0YWJsZScsICdnZXRfZXhlY3V0YWJsZScsCiAgICAgICAgICAgJ2dldF9wcmVwYXJhdGlvbl9kYXRhJywgJ2dldF9jb21tYW5kX2xpbmUnLCAnaW1wb3J0X21haW5fcGF0aCddCgojCiMgX3B5dGhvbl9leGUgaXMgdGhlIGFzc3VtZWQgcGF0aCB0byB0aGUgcHl0aG9uIGV4ZWN1dGFibGUuCiMgUGVvcGxlIGVtYmVkZGluZyBQeXRob24gd2FudCB0byBtb2RpZnkgaXQuCiMKCmlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgV0lORVhFID0gRmFsc2UKICAgIFdJTlNFUlZJQ0UgPSBGYWxzZQplbHNlOgogICAgV0lORVhFID0gZ2V0YXR0cihzeXMsICdmcm96ZW4nLCBGYWxzZSkKICAgIFdJTlNFUlZJQ0UgPSBzeXMuZXhlY3V0YWJsZS5sb3dlcigpLmVuZHN3aXRoKCJweXRob25zZXJ2aWNlLmV4ZSIpCgpkZWYgc2V0X2V4ZWN1dGFibGUoZXhlKToKICAgIGdsb2JhbCBfcHl0aG9uX2V4ZQogICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgX3B5dGhvbl9leGUgPSBvcy5mc2RlY29kZShleGUpCiAgICBlbHNlOgogICAgICAgIF9weXRob25fZXhlID0gb3MuZnNlbmNvZGUoZXhlKQoKZGVmIGdldF9leGVjdXRhYmxlKCk6CiAgICByZXR1cm4gX3B5dGhvbl9leGUKCmlmIFdJTlNFUlZJQ0U6CiAgICBzZXRfZXhlY3V0YWJsZShvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAncHl0aG9uLmV4ZScpKQplbHNlOgogICAgc2V0X2V4ZWN1dGFibGUoc3lzLmV4ZWN1dGFibGUpCgojCiMKIwoKZGVmIGlzX2ZvcmtpbmcoYXJndik6CiAgICAnJycKICAgIFJldHVybiB3aGV0aGVyIGNvbW1hbmRsaW5lIGluZGljYXRlcyB3ZSBhcmUgZm9ya2luZwogICAgJycnCiAgICBpZiBsZW4oYXJndikgPj0gMiBhbmQgYXJndlsxXSA9PSAnLS1tdWx0aXByb2Nlc3NpbmctZm9yayc6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIEZhbHNlCgoKZGVmIGZyZWV6ZV9zdXBwb3J0KCk6CiAgICAnJycKICAgIFJ1biBjb2RlIGZvciBwcm9jZXNzIG9iamVjdCBpZiB0aGlzIGluIG5vdCB0aGUgbWFpbiBwcm9jZXNzCiAgICAnJycKICAgIGlmIGlzX2Zvcmtpbmcoc3lzLmFyZ3YpOgogICAgICAgIGt3ZHMgPSB7fQogICAgICAgIGZvciBhcmcgaW4gc3lzLmFyZ3ZbMjpdOgogICAgICAgICAgICBuYW1lLCB2YWx1ZSA9IGFyZy5zcGxpdCgnPScpCiAgICAgICAgICAgIGlmIHZhbHVlID09ICdOb25lJzoKICAgICAgICAgICAgICAgIGt3ZHNbbmFtZV0gPSBOb25lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBrd2RzW25hbWVdID0gaW50KHZhbHVlKQogICAgICAgIHNwYXduX21haW4oKiprd2RzKQogICAgICAgIHN5cy5leGl0KCkKCgpkZWYgZ2V0X2NvbW1hbmRfbGluZSgqKmt3ZHMpOgogICAgJycnCiAgICBSZXR1cm5zIHByZWZpeCBvZiBjb21tYW5kIGxpbmUgdXNlZCBmb3Igc3Bhd25pbmcgYSBjaGlsZCBwcm9jZXNzCiAgICAnJycKICAgIGlmIGdldGF0dHIoc3lzLCAnZnJvemVuJywgRmFsc2UpOgogICAgICAgIHJldHVybiAoW3N5cy5leGVjdXRhYmxlLCAnLS1tdWx0aXByb2Nlc3NpbmctZm9yayddICsKICAgICAgICAgICAgICAgIFsnJXM9JXInICUgaXRlbSBmb3IgaXRlbSBpbiBrd2RzLml0ZW1zKCldKQogICAgZWxzZToKICAgICAgICBwcm9nID0gJ2Zyb20gbXVsdGlwcm9jZXNzaW5nLnNwYXduIGltcG9ydCBzcGF3bl9tYWluOyBzcGF3bl9tYWluKCVzKScKICAgICAgICBwcm9nICU9ICcsICcuam9pbignJXM9JXInICUgaXRlbSBmb3IgaXRlbSBpbiBrd2RzLml0ZW1zKCkpCiAgICAgICAgb3B0cyA9IHV0aWwuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAgICAgICAgZXhlID0gZ2V0X2V4ZWN1dGFibGUoKQogICAgICAgIHJldHVybiBbZXhlXSArIG9wdHMgKyBbJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQoKCmRlZiBzcGF3bl9tYWluKHBpcGVfaGFuZGxlLCBwYXJlbnRfcGlkPU5vbmUsIHRyYWNrZXJfZmQ9Tm9uZSk6CiAgICAnJycKICAgIFJ1biBjb2RlIHNwZWNpZmllZCBieSBkYXRhIHJlY2VpdmVkIG92ZXIgcGlwZQogICAgJycnCiAgICBhc3NlcnQgaXNfZm9ya2luZyhzeXMuYXJndiksICJOb3QgZm9ya2luZyIKICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgIGltcG9ydCBtc3ZjcnQKICAgICAgICBpbXBvcnQgX3dpbmFwaQoKICAgICAgICBpZiBwYXJlbnRfcGlkIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzb3VyY2VfcHJvY2VzcyA9IF93aW5hcGkuT3BlblByb2Nlc3MoCiAgICAgICAgICAgICAgICBfd2luYXBpLlNZTkNIUk9OSVpFIHwgX3dpbmFwaS5QUk9DRVNTX0RVUF9IQU5ETEUsCiAgICAgICAgICAgICAgICBGYWxzZSwgcGFyZW50X3BpZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzb3VyY2VfcHJvY2VzcyA9IE5vbmUKICAgICAgICBuZXdfaGFuZGxlID0gcmVkdWN0aW9uLmR1cGxpY2F0ZShwaXBlX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcHJvY2Vzcz1zb3VyY2VfcHJvY2VzcykKICAgICAgICBmZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShuZXdfaGFuZGxlLCBvcy5PX1JET05MWSkKICAgICAgICBwYXJlbnRfc2VudGluZWwgPSBzb3VyY2VfcHJvY2VzcwogICAgZWxzZToKICAgICAgICBmcm9tIC4gaW1wb3J0IHJlc291cmNlX3RyYWNrZXIKICAgICAgICByZXNvdXJjZV90cmFja2VyLl9yZXNvdXJjZV90cmFja2VyLl9mZCA9IHRyYWNrZXJfZmQKICAgICAgICBmZCA9IHBpcGVfaGFuZGxlCiAgICAgICAgcGFyZW50X3NlbnRpbmVsID0gb3MuZHVwKHBpcGVfaGFuZGxlKQogICAgZXhpdGNvZGUgPSBfbWFpbihmZCwgcGFyZW50X3NlbnRpbmVsKQogICAgc3lzLmV4aXQoZXhpdGNvZGUpCgoKZGVmIF9tYWluKGZkLCBwYXJlbnRfc2VudGluZWwpOgogICAgd2l0aCBvcy5mZG9wZW4oZmQsICdyYicsIGNsb3NlZmQ9VHJ1ZSkgYXMgZnJvbV9wYXJlbnQ6CiAgICAgICAgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5faW5oZXJpdGluZyA9IFRydWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHByZXBhcmF0aW9uX2RhdGEgPSByZWR1Y3Rpb24ucGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCiAgICAgICAgICAgIHByZXBhcmUocHJlcGFyYXRpb25fZGF0YSkKICAgICAgICAgICAgc2VsZiA9IHJlZHVjdGlvbi5waWNrbGUubG9hZChmcm9tX3BhcmVudCkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBkZWwgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5faW5oZXJpdGluZwogICAgcmV0dXJuIHNlbGYuX2Jvb3RzdHJhcChwYXJlbnRfc2VudGluZWwpCgoKZGVmIF9jaGVja19ub3RfaW1wb3J0aW5nX21haW4oKToKICAgIGlmIGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignJycKICAgICAgICBBbiBhdHRlbXB0IGhhcyBiZWVuIG1hZGUgdG8gc3RhcnQgYSBuZXcgcHJvY2VzcyBiZWZvcmUgdGhlCiAgICAgICAgY3VycmVudCBwcm9jZXNzIGhhcyBmaW5pc2hlZCBpdHMgYm9vdHN0cmFwcGluZyBwaGFzZS4KCiAgICAgICAgVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHlvdSBhcmUgbm90IHVzaW5nIGZvcmsgdG8gc3RhcnQgeW91cgogICAgICAgIGNoaWxkIHByb2Nlc3NlcyBhbmQgeW91IGhhdmUgZm9yZ290dGVuIHRvIHVzZSB0aGUgcHJvcGVyIGlkaW9tCiAgICAgICAgaW4gdGhlIG1haW4gbW9kdWxlOgoKICAgICAgICAgICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICAgICAgICAgIGZyZWV6ZV9zdXBwb3J0KCkKICAgICAgICAgICAgICAgIC4uLgoKICAgICAgICBUaGUgImZyZWV6ZV9zdXBwb3J0KCkiIGxpbmUgY2FuIGJlIG9taXR0ZWQgaWYgdGhlIHByb2dyYW0KICAgICAgICBpcyBub3QgZ29pbmcgdG8gYmUgZnJvemVuIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZS4nJycpCgoKZGVmIGdldF9wcmVwYXJhdGlvbl9kYXRhKG5hbWUpOgogICAgJycnCiAgICBSZXR1cm4gaW5mbyBhYm91dCBwYXJlbnQgbmVlZGVkIGJ5IGNoaWxkIHRvIHVucGlja2xlIHByb2Nlc3Mgb2JqZWN0CiAgICAnJycKICAgIF9jaGVja19ub3RfaW1wb3J0aW5nX21haW4oKQogICAgZCA9IGRpY3QoCiAgICAgICAgbG9nX3RvX3N0ZGVycj11dGlsLl9sb2dfdG9fc3RkZXJyLAogICAgICAgIGF1dGhrZXk9cHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5LAogICAgICAgICkKCiAgICBpZiB1dGlsLl9sb2dnZXIgaXMgbm90IE5vbmU6CiAgICAgICAgZFsnbG9nX2xldmVsJ10gPSB1dGlsLl9sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQoKICAgIHN5c19wYXRoPXN5cy5wYXRoLmNvcHkoKQogICAgdHJ5OgogICAgICAgIGkgPSBzeXNfcGF0aC5pbmRleCgnJykKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHBhc3MKICAgIGVsc2U6CiAgICAgICAgc3lzX3BhdGhbaV0gPSBwcm9jZXNzLk9SSUdJTkFMX0RJUgoKICAgIGQudXBkYXRlKAogICAgICAgIG5hbWU9bmFtZSwKICAgICAgICBzeXNfcGF0aD1zeXNfcGF0aCwKICAgICAgICBzeXNfYXJndj1zeXMuYXJndiwKICAgICAgICBvcmlnX2Rpcj1wcm9jZXNzLk9SSUdJTkFMX0RJUiwKICAgICAgICBkaXI9b3MuZ2V0Y3dkKCksCiAgICAgICAgc3RhcnRfbWV0aG9kPWdldF9zdGFydF9tZXRob2QoKSwKICAgICAgICApCgogICAgIyBGaWd1cmUgb3V0IHdoZXRoZXIgdG8gaW5pdGlhbGlzZSBtYWluIGluIHRoZSBzdWJwcm9jZXNzIGFzIGEgbW9kdWxlCiAgICAjIG9yIHRocm91Z2ggZGlyZWN0IGV4ZWN1dGlvbiAob3IgdG8gbGVhdmUgaXQgYWxvbmUgZW50aXJlbHkpCiAgICBtYWluX21vZHVsZSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCiAgICBtYWluX21vZF9uYW1lID0gZ2V0YXR0cihtYWluX21vZHVsZS5fX3NwZWNfXywgIm5hbWUiLCBOb25lKQogICAgaWYgbWFpbl9tb2RfbmFtZSBpcyBub3QgTm9uZToKICAgICAgICBkWydpbml0X21haW5fZnJvbV9uYW1lJ10gPSBtYWluX21vZF9uYW1lCiAgICBlbGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInIG9yIChub3QgV0lORVhFIGFuZCBub3QgV0lOU0VSVklDRSk6CiAgICAgICAgbWFpbl9wYXRoID0gZ2V0YXR0cihtYWluX21vZHVsZSwgJ19fZmlsZV9fJywgTm9uZSkKICAgICAgICBpZiBtYWluX3BhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIChub3Qgb3MucGF0aC5pc2FicyhtYWluX3BhdGgpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLk9SSUdJTkFMX0RJUiBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICAgICBtYWluX3BhdGggPSBvcy5wYXRoLmpvaW4ocHJvY2Vzcy5PUklHSU5BTF9ESVIsIG1haW5fcGF0aCkKICAgICAgICAgICAgZFsnaW5pdF9tYWluX2Zyb21fcGF0aCddID0gb3MucGF0aC5ub3JtcGF0aChtYWluX3BhdGgpCgogICAgcmV0dXJuIGQKCiMKIyBQcmVwYXJlIGN1cnJlbnQgcHJvY2VzcwojCgpvbGRfbWFpbl9tb2R1bGVzID0gW10KCmRlZiBwcmVwYXJlKGRhdGEpOgogICAgJycnCiAgICBUcnkgdG8gZ2V0IGN1cnJlbnQgcHJvY2VzcyByZWFkeSB0byB1bnBpY2tsZSBwcm9jZXNzIG9iamVjdAogICAgJycnCiAgICBpZiAnbmFtZScgaW4gZGF0YToKICAgICAgICBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLm5hbWUgPSBkYXRhWyduYW1lJ10KCiAgICBpZiAnYXV0aGtleScgaW4gZGF0YToKICAgICAgICBwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkgPSBkYXRhWydhdXRoa2V5J10KCiAgICBpZiAnbG9nX3RvX3N0ZGVycicgaW4gZGF0YSBhbmQgZGF0YVsnbG9nX3RvX3N0ZGVyciddOgogICAgICAgIHV0aWwubG9nX3RvX3N0ZGVycigpCgogICAgaWYgJ2xvZ19sZXZlbCcgaW4gZGF0YToKICAgICAgICB1dGlsLmdldF9sb2dnZXIoKS5zZXRMZXZlbChkYXRhWydsb2dfbGV2ZWwnXSkKCiAgICBpZiAnc3lzX3BhdGgnIGluIGRhdGE6CiAgICAgICAgc3lzLnBhdGggPSBkYXRhWydzeXNfcGF0aCddCgogICAgaWYgJ3N5c19hcmd2JyBpbiBkYXRhOgogICAgICAgIHN5cy5hcmd2ID0gZGF0YVsnc3lzX2FyZ3YnXQoKICAgIGlmICdkaXInIGluIGRhdGE6CiAgICAgICAgb3MuY2hkaXIoZGF0YVsnZGlyJ10pCgogICAgaWYgJ29yaWdfZGlyJyBpbiBkYXRhOgogICAgICAgIHByb2Nlc3MuT1JJR0lOQUxfRElSID0gZGF0YVsnb3JpZ19kaXInXQoKICAgIGlmICdzdGFydF9tZXRob2QnIGluIGRhdGE6CiAgICAgICAgc2V0X3N0YXJ0X21ldGhvZChkYXRhWydzdGFydF9tZXRob2QnXSwgZm9yY2U9VHJ1ZSkKCiAgICBpZiAnaW5pdF9tYWluX2Zyb21fbmFtZScgaW4gZGF0YToKICAgICAgICBfZml4dXBfbWFpbl9mcm9tX25hbWUoZGF0YVsnaW5pdF9tYWluX2Zyb21fbmFtZSddKQogICAgZWxpZiAnaW5pdF9tYWluX2Zyb21fcGF0aCcgaW4gZGF0YToKICAgICAgICBfZml4dXBfbWFpbl9mcm9tX3BhdGgoZGF0YVsnaW5pdF9tYWluX2Zyb21fcGF0aCddKQoKIyBNdWx0aXByb2Nlc3NpbmcgbW9kdWxlIGhlbHBlcnMgdG8gZml4IHVwIHRoZSBtYWluIG1vZHVsZSBpbgojIHNwYXduZWQgc3VicHJvY2Vzc2VzCmRlZiBfZml4dXBfbWFpbl9mcm9tX25hbWUobW9kX25hbWUpOgogICAgIyBfX21haW5fXy5weSBmaWxlcyBmb3IgcGFja2FnZXMsIGRpcmVjdG9yaWVzLCB6aXAgYXJjaGl2ZXMsIGV0YywgcnVuCiAgICAjIHRoZWlyICJtYWluIG9ubHkiIGNvZGUgdW5jb25kaXRpb25hbGx5LCBzbyB3ZSBkb24ndCBldmVuIHRyeSB0bwogICAgIyBwb3B1bGF0ZSBhbnl0aGluZyBpbiBfX21haW5fXywgbm9yIGRvIHdlIG1ha2UgYW55IGNoYW5nZXMgdG8KICAgICMgX19tYWluX18gYXR0cmlidXRlcwogICAgY3VycmVudF9tYWluID0gc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10KICAgIGlmIG1vZF9uYW1lID09ICJfX21haW5fXyIgb3IgbW9kX25hbWUuZW5kc3dpdGgoIi5fX21haW5fXyIpOgogICAgICAgIHJldHVybgoKICAgICMgSWYgdGhpcyBwcm9jZXNzIHdhcyBmb3JrZWQsIF9fbWFpbl9fIG1heSBhbHJlYWR5IGJlIHBvcHVsYXRlZAogICAgaWYgZ2V0YXR0cihjdXJyZW50X21haW4uX19zcGVjX18sICJuYW1lIiwgTm9uZSkgPT0gbW9kX25hbWU6CiAgICAgICAgcmV0dXJuCgogICAgIyBPdGhlcndpc2UsIF9fbWFpbl9fIG1heSBjb250YWluIHNvbWUgbm9uLW1haW4gY29kZSB3aGVyZSB3ZSBuZWVkIHRvCiAgICAjIHN1cHBvcnQgdW5waWNrbGluZyBpdCBwcm9wZXJseS4gV2UgcmVydW4gaXQgYXMgX19tcF9tYWluX18gYW5kIG1ha2UKICAgICMgdGhlIG5vcm1hbCBfX21haW5fXyBhbiBhbGlhcyB0byB0aGF0CiAgICBvbGRfbWFpbl9tb2R1bGVzLmFwcGVuZChjdXJyZW50X21haW4pCiAgICBtYWluX21vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoIl9fbXBfbWFpbl9fIikKICAgIG1haW5fY29udGVudCA9IHJ1bnB5LnJ1bl9tb2R1bGUobW9kX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9uYW1lPSJfX21wX21haW5fXyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVyX3N5cz1UcnVlKQogICAgbWFpbl9tb2R1bGUuX19kaWN0X18udXBkYXRlKG1haW5fY29udGVudCkKICAgIHN5cy5tb2R1bGVzWydfX21haW5fXyddID0gc3lzLm1vZHVsZXNbJ19fbXBfbWFpbl9fJ10gPSBtYWluX21vZHVsZQoKCmRlZiBfZml4dXBfbWFpbl9mcm9tX3BhdGgobWFpbl9wYXRoKToKICAgICMgSWYgdGhpcyBwcm9jZXNzIHdhcyBmb3JrZWQsIF9fbWFpbl9fIG1heSBhbHJlYWR5IGJlIHBvcHVsYXRlZAogICAgY3VycmVudF9tYWluID0gc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10KCiAgICAjIFVuZm9ydHVuYXRlbHksIHRoZSBtYWluIGlweXRob24gbGF1bmNoIHNjcmlwdCBoaXN0b3JpY2FsbHkgaGFkIG5vCiAgICAjICJpZiBfX25hbWVfXyA9PSAnX19tYWluX18nIiBndWFyZCwgc28gd2Ugd29yayBhcm91bmQgdGhhdAogICAgIyBieSB0cmVhdGluZyBpdCBsaWtlIGEgX19tYWluX18ucHkgZmlsZQogICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2lweXRob24vaXB5dGhvbi9pc3N1ZXMvNDY5OAogICAgbWFpbl9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG1haW5fcGF0aCkpWzBdCiAgICBpZiBtYWluX25hbWUgPT0gJ2lweXRob24nOgogICAgICAgIHJldHVybgoKICAgICMgT3RoZXJ3aXNlLCBpZiBfX2ZpbGVfXyBhbHJlYWR5IGhhcyB0aGUgc2V0dGluZyB3ZSBleHBlY3QsCiAgICAjIHRoZXJlJ3Mgbm90aGluZyBtb3JlIHRvIGRvCiAgICBpZiBnZXRhdHRyKGN1cnJlbnRfbWFpbiwgJ19fZmlsZV9fJywgTm9uZSkgPT0gbWFpbl9wYXRoOgogICAgICAgIHJldHVybgoKICAgICMgSWYgdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBzZW50IGEgcGF0aCB0aHJvdWdoIHJhdGhlciB0aGFuIGEgbW9kdWxlCiAgICAjIG5hbWUgd2UgYXNzdW1lIGl0IGlzIGFuIGV4ZWN1dGFibGUgc2NyaXB0IHRoYXQgbWF5IGNvbnRhaW4KICAgICMgbm9uLW1haW4gY29kZSB0aGF0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkCiAgICBvbGRfbWFpbl9tb2R1bGVzLmFwcGVuZChjdXJyZW50X21haW4pCiAgICBtYWluX21vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoIl9fbXBfbWFpbl9fIikKICAgIG1haW5fY29udGVudCA9IHJ1bnB5LnJ1bl9wYXRoKG1haW5fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9uYW1lPSJfX21wX21haW5fXyIpCiAgICBtYWluX21vZHVsZS5fX2RpY3RfXy51cGRhdGUobWFpbl9jb250ZW50KQogICAgc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10gPSBzeXMubW9kdWxlc1snX19tcF9tYWluX18nXSA9IG1haW5fbW9kdWxlCgoKZGVmIGltcG9ydF9tYWluX3BhdGgobWFpbl9wYXRoKToKICAgICcnJwogICAgU2V0IHN5cy5tb2R1bGVzWydfX21haW5fXyddIHRvIG1vZHVsZSBhdCBtYWluX3BhdGgKICAgICcnJwogICAgX2ZpeHVwX21haW5fZnJvbV9wYXRoKG1haW5fcGF0aCkKUEsDBBQAAAAAAAMgo1a0dGsy/i0AAP4tAAAeAAAAbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5IwojIE1vZHVsZSBpbXBsZW1lbnRpbmcgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMKIwojIG11bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQojCiMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KIwoKX19hbGxfXyA9IFsKICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ0NvbmRpdGlvbicsICdFdmVudCcKICAgIF0KCmltcG9ydCB0aHJlYWRpbmcKaW1wb3J0IHN5cwppbXBvcnQgdGVtcGZpbGUKaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKaW1wb3J0IHRpbWUKCmZyb20gLiBpbXBvcnQgY29udGV4dApmcm9tIC4gaW1wb3J0IHByb2Nlc3MKZnJvbSAuIGltcG9ydCB1dGlsCgojIFRyeSB0byBpbXBvcnQgdGhlIG1wLnN5bmNocm9uaXplIG1vZHVsZSBjbGVhbmx5LCBpZiBpdCBmYWlscwojIHJhaXNlIEltcG9ydEVycm9yIGZvciBwbGF0Zm9ybXMgbGFja2luZyBhIHdvcmtpbmcgc2VtX29wZW4gaW1wbGVtZW50YXRpb24uCiMgU2VlIGlzc3VlIDM3NzAKdHJ5OgogICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBTZW1Mb2NrLCBzZW1fdW5saW5rCmV4Y2VwdCAoSW1wb3J0RXJyb3IpOgogICAgcmFpc2UgSW1wb3J0RXJyb3IoIlRoaXMgcGxhdGZvcm0gbGFja3MgYSBmdW5jdGlvbmluZyBzZW1fb3BlbiIgKwogICAgICAgICAgICAgICAgICAgICAgIiBpbXBsZW1lbnRhdGlvbiwgdGhlcmVmb3JlLCB0aGUgcmVxdWlyZWQiICsKICAgICAgICAgICAgICAgICAgICAgICIgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgbmVlZGVkIHdpbGwgbm90IiArCiAgICAgICAgICAgICAgICAgICAgICAiIGZ1bmN0aW9uLCBzZWUgaXNzdWUgMzc3MC4iKQoKIwojIENvbnN0YW50cwojCgpSRUNVUlNJVkVfTVVURVgsIFNFTUFQSE9SRSA9IGxpc3QocmFuZ2UoMikpClNFTV9WQUxVRV9NQVggPSBfbXVsdGlwcm9jZXNzaW5nLlNlbUxvY2suU0VNX1ZBTFVFX01BWAoKIwojIEJhc2UgY2xhc3MgZm9yIHNlbWFwaG9yZXMgYW5kIG11dGV4ZXM7IHdyYXBzIGBfbXVsdGlwcm9jZXNzaW5nLlNlbUxvY2tgCiMKCmNsYXNzIFNlbUxvY2sob2JqZWN0KToKCiAgICBfcmFuZCA9IHRlbXBmaWxlLl9SYW5kb21OYW1lU2VxdWVuY2UoKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBraW5kLCB2YWx1ZSwgbWF4dmFsdWUsICosIGN0eCk6CiAgICAgICAgaWYgY3R4IGlzIE5vbmU6CiAgICAgICAgICAgIGN0eCA9IGNvbnRleHQuX2RlZmF1bHRfY29udGV4dC5nZXRfY29udGV4dCgpCiAgICAgICAgbmFtZSA9IGN0eC5nZXRfc3RhcnRfbWV0aG9kKCkKICAgICAgICB1bmxpbmtfbm93ID0gc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3IgbmFtZSA9PSAnZm9yaycKICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDApOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzbCA9IHNlbGYuX3NlbWxvY2sgPSBfbXVsdGlwcm9jZXNzaW5nLlNlbUxvY2soCiAgICAgICAgICAgICAgICAgICAga2luZCwgdmFsdWUsIG1heHZhbHVlLCBzZWxmLl9tYWtlX25hbWUoKSwKICAgICAgICAgICAgICAgICAgICB1bmxpbmtfbm93KQogICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoJ2Nhbm5vdCBmaW5kIG5hbWUgZm9yIHNlbWFwaG9yZScpCgogICAgICAgIHV0aWwuZGVidWcoJ2NyZWF0ZWQgc2VtbG9jayB3aXRoIGhhbmRsZSAlcycgJSBzbC5oYW5kbGUpCiAgICAgICAgc2VsZi5fbWFrZV9tZXRob2RzKCkKCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgIGRlZiBfYWZ0ZXJfZm9yayhvYmopOgogICAgICAgICAgICAgICAgb2JqLl9zZW1sb2NrLl9hZnRlcl9mb3JrKCkKICAgICAgICAgICAgdXRpbC5yZWdpc3Rlcl9hZnRlcl9mb3JrKHNlbGYsIF9hZnRlcl9mb3JrKQoKICAgICAgICBpZiBzZWxmLl9zZW1sb2NrLm5hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgV2Ugb25seSBnZXQgaGVyZSBpZiB3ZSBhcmUgb24gVW5peCB3aXRoIGZvcmtpbmcKICAgICAgICAgICAgIyBkaXNhYmxlZC4gIFdoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlIGNvbGxlY3RlZCBvciB0aGUKICAgICAgICAgICAgIyBwcm9jZXNzIHNodXRzIGRvd24gd2UgdW5saW5rIHRoZSBzZW1hcGhvcmUgbmFtZQogICAgICAgICAgICBmcm9tIC5yZXNvdXJjZV90cmFja2VyIGltcG9ydCByZWdpc3RlcgogICAgICAgICAgICByZWdpc3RlcihzZWxmLl9zZW1sb2NrLm5hbWUsICJzZW1hcGhvcmUiKQogICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIFNlbUxvY2suX2NsZWFudXAsIChzZWxmLl9zZW1sb2NrLm5hbWUsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0cHJpb3JpdHk9MCkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX2NsZWFudXAobmFtZSk6CiAgICAgICAgZnJvbSAucmVzb3VyY2VfdHJhY2tlciBpbXBvcnQgdW5yZWdpc3RlcgogICAgICAgIHNlbV91bmxpbmsobmFtZSkKICAgICAgICB1bnJlZ2lzdGVyKG5hbWUsICJzZW1hcGhvcmUiKQoKICAgIGRlZiBfbWFrZV9tZXRob2RzKHNlbGYpOgogICAgICAgIHNlbGYuYWNxdWlyZSA9IHNlbGYuX3NlbWxvY2suYWNxdWlyZQogICAgICAgIHNlbGYucmVsZWFzZSA9IHNlbGYuX3NlbWxvY2sucmVsZWFzZQoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NlbWxvY2suX19lbnRlcl9fKCkKCiAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9zZW1sb2NrLl9fZXhpdF9fKCphcmdzKQoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgY29udGV4dC5hc3NlcnRfc3Bhd25pbmcoc2VsZikKICAgICAgICBzbCA9IHNlbGYuX3NlbWxvY2sKICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgaCA9IGNvbnRleHQuZ2V0X3NwYXduaW5nX3BvcGVuKCkuZHVwbGljYXRlX2Zvcl9jaGlsZChzbC5oYW5kbGUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaCA9IHNsLmhhbmRsZQogICAgICAgIHJldHVybiAoaCwgc2wua2luZCwgc2wubWF4dmFsdWUsIHNsLm5hbWUpCgogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgc2VsZi5fc2VtbG9jayA9IF9tdWx0aXByb2Nlc3NpbmcuU2VtTG9jay5fcmVidWlsZCgqc3RhdGUpCiAgICAgICAgdXRpbC5kZWJ1ZygncmVjcmVhdGVkIGJsb2NrZXIgd2l0aCBoYW5kbGUgJXInICUgc3RhdGVbMF0pCiAgICAgICAgc2VsZi5fbWFrZV9tZXRob2RzKCkKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX21ha2VfbmFtZSgpOgogICAgICAgIHJldHVybiAnJXMtJXMnICUgKHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkuX2NvbmZpZ1snc2VtcHJlZml4J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dChTZW1Mb2NrLl9yYW5kKSkKCiMKIyBTZW1hcGhvcmUKIwoKY2xhc3MgU2VtYXBob3JlKFNlbUxvY2spOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xLCAqLCBjdHgpOgogICAgICAgIFNlbUxvY2suX19pbml0X18oc2VsZiwgU0VNQVBIT1JFLCB2YWx1ZSwgU0VNX1ZBTFVFX01BWCwgY3R4PWN0eCkKCiAgICBkZWYgZ2V0X3ZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9zZW1sb2NrLl9nZXRfdmFsdWUoKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICB2YWx1ZSA9ICd1bmtub3duJwogICAgICAgIHJldHVybiAnPCVzKHZhbHVlPSVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCB2YWx1ZSkKCiMKIyBCb3VuZGVkIHNlbWFwaG9yZQojCgpjbGFzcyBCb3VuZGVkU2VtYXBob3JlKFNlbWFwaG9yZSk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPTEsICosIGN0eCk6CiAgICAgICAgU2VtTG9jay5fX2luaXRfXyhzZWxmLCBTRU1BUEhPUkUsIHZhbHVlLCB2YWx1ZSwgY3R4PWN0eCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX3NlbWxvY2suX2dldF92YWx1ZSgpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgdmFsdWUgPSAndW5rbm93bicKICAgICAgICByZXR1cm4gJzwlcyh2YWx1ZT0lcywgbWF4dmFsdWU9JXMpPicgJSBcCiAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgdmFsdWUsIHNlbGYuX3NlbWxvY2subWF4dmFsdWUpCgojCiMgTm9uLXJlY3Vyc2l2ZSBsb2NrCiMKCmNsYXNzIExvY2soU2VtTG9jayk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsICosIGN0eCk6CiAgICAgICAgU2VtTG9jay5fX2luaXRfXyhzZWxmLCBTRU1BUEhPUkUsIDEsIDEsIGN0eD1jdHgpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5fc2VtbG9jay5faXNfbWluZSgpOgogICAgICAgICAgICAgICAgbmFtZSA9IHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkubmFtZQogICAgICAgICAgICAgICAgaWYgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZSAhPSAnTWFpblRocmVhZCc6CiAgICAgICAgICAgICAgICAgICAgbmFtZSArPSAnfCcgKyB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lCiAgICAgICAgICAgIGVsaWYgc2VsZi5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkgPT0gMToKICAgICAgICAgICAgICAgIG5hbWUgPSAnTm9uZScKICAgICAgICAgICAgZWxpZiBzZWxmLl9zZW1sb2NrLl9jb3VudCgpID4gMDoKICAgICAgICAgICAgICAgIG5hbWUgPSAnU29tZU90aGVyVGhyZWFkJwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbmFtZSA9ICdTb21lT3RoZXJQcm9jZXNzJwogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIG5hbWUgPSAndW5rbm93bicKICAgICAgICByZXR1cm4gJzwlcyhvd25lcj0lcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSkKCiMKIyBSZWN1cnNpdmUgbG9jawojCgpjbGFzcyBSTG9jayhTZW1Mb2NrKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgY3R4KToKICAgICAgICBTZW1Mb2NrLl9faW5pdF9fKHNlbGYsIFJFQ1VSU0lWRV9NVVRFWCwgMSwgMSwgY3R4PWN0eCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBzZWxmLl9zZW1sb2NrLl9pc19taW5lKCk6CiAgICAgICAgICAgICAgICBuYW1lID0gcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5uYW1lCiAgICAgICAgICAgICAgICBpZiB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lICE9ICdNYWluVGhyZWFkJzoKICAgICAgICAgICAgICAgICAgICBuYW1lICs9ICd8JyArIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUKICAgICAgICAgICAgICAgIGNvdW50ID0gc2VsZi5fc2VtbG9jay5fY291bnQoKQogICAgICAgICAgICBlbGlmIHNlbGYuX3NlbWxvY2suX2dldF92YWx1ZSgpID09IDE6CiAgICAgICAgICAgICAgICBuYW1lLCBjb3VudCA9ICdOb25lJywgMAogICAgICAgICAgICBlbGlmIHNlbGYuX3NlbWxvY2suX2NvdW50KCkgPiAwOgogICAgICAgICAgICAgICAgbmFtZSwgY291bnQgPSAnU29tZU90aGVyVGhyZWFkJywgJ25vbnplcm8nCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBuYW1lLCBjb3VudCA9ICdTb21lT3RoZXJQcm9jZXNzJywgJ25vbnplcm8nCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgbmFtZSwgY291bnQgPSAndW5rbm93bicsICd1bmtub3duJwogICAgICAgIHJldHVybiAnPCVzKCVzLCAlcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSwgY291bnQpCgojCiMgQ29uZGl0aW9uIHZhcmlhYmxlCiMKCmNsYXNzIENvbmRpdGlvbihvYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NrPU5vbmUsICosIGN0eCk6CiAgICAgICAgc2VsZi5fbG9jayA9IGxvY2sgb3IgY3R4LlJMb2NrKCkKICAgICAgICBzZWxmLl9zbGVlcGluZ19jb3VudCA9IGN0eC5TZW1hcGhvcmUoMCkKICAgICAgICBzZWxmLl93b2tlbl9jb3VudCA9IGN0eC5TZW1hcGhvcmUoMCkKICAgICAgICBzZWxmLl93YWl0X3NlbWFwaG9yZSA9IGN0eC5TZW1hcGhvcmUoMCkKICAgICAgICBzZWxmLl9tYWtlX21ldGhvZHMoKQoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgY29udGV4dC5hc3NlcnRfc3Bhd25pbmcoc2VsZikKICAgICAgICByZXR1cm4gKHNlbGYuX2xvY2ssIHNlbGYuX3NsZWVwaW5nX2NvdW50LAogICAgICAgICAgICAgICAgc2VsZi5fd29rZW5fY291bnQsIHNlbGYuX3dhaXRfc2VtYXBob3JlKQoKICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgogICAgICAgIChzZWxmLl9sb2NrLCBzZWxmLl9zbGVlcGluZ19jb3VudCwKICAgICAgICAgc2VsZi5fd29rZW5fY291bnQsIHNlbGYuX3dhaXRfc2VtYXBob3JlKSA9IHN0YXRlCiAgICAgICAgc2VsZi5fbWFrZV9tZXRob2RzKCkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZW50ZXJfXygpCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2V4aXRfXygqYXJncykKCiAgICBkZWYgX21ha2VfbWV0aG9kcyhzZWxmKToKICAgICAgICBzZWxmLmFjcXVpcmUgPSBzZWxmLl9sb2NrLmFjcXVpcmUKICAgICAgICBzZWxmLnJlbGVhc2UgPSBzZWxmLl9sb2NrLnJlbGVhc2UKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBudW1fd2FpdGVycyA9IChzZWxmLl9zbGVlcGluZ19jb3VudC5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkgLQogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93b2tlbl9jb3VudC5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgbnVtX3dhaXRlcnMgPSAndW5rbm93bicKICAgICAgICByZXR1cm4gJzwlcyglcywgJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX2xvY2ssIG51bV93YWl0ZXJzKQoKICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgYXNzZXJ0IHNlbGYuX2xvY2suX3NlbWxvY2suX2lzX21pbmUoKSwgXAogICAgICAgICAgICAgICAnbXVzdCBhY3F1aXJlKCkgY29uZGl0aW9uIGJlZm9yZSB1c2luZyB3YWl0KCknCgogICAgICAgICMgaW5kaWNhdGUgdGhhdCB0aGlzIHRocmVhZCBpcyBnb2luZyB0byBzbGVlcAogICAgICAgIHNlbGYuX3NsZWVwaW5nX2NvdW50LnJlbGVhc2UoKQoKICAgICAgICAjIHJlbGVhc2UgbG9jawogICAgICAgIGNvdW50ID0gc2VsZi5fbG9jay5fc2VtbG9jay5fY291bnQoKQogICAgICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKICAgICAgICAgICAgc2VsZi5fbG9jay5yZWxlYXNlKCkKCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIHdhaXQgZm9yIG5vdGlmaWNhdGlvbiBvciB0aW1lb3V0CiAgICAgICAgICAgIHJldHVybiBzZWxmLl93YWl0X3NlbWFwaG9yZS5hY3F1aXJlKFRydWUsIHRpbWVvdXQpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIyBpbmRpY2F0ZSB0aGF0IHRoaXMgdGhyZWFkIGhhcyB3b2tlbgogICAgICAgICAgICBzZWxmLl93b2tlbl9jb3VudC5yZWxlYXNlKCkKCiAgICAgICAgICAgICMgcmVhY3F1aXJlIGxvY2sKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQpOgogICAgICAgICAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKCiAgICBkZWYgbm90aWZ5KHNlbGYsIG49MSk6CiAgICAgICAgYXNzZXJ0IHNlbGYuX2xvY2suX3NlbWxvY2suX2lzX21pbmUoKSwgJ2xvY2sgaXMgbm90IG93bmVkJwogICAgICAgIGFzc2VydCBub3Qgc2VsZi5fd2FpdF9zZW1hcGhvcmUuYWNxdWlyZSgKICAgICAgICAgICAgRmFsc2UpLCAoJ25vdGlmeTogU2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBhY3F1aXJlICcKICAgICAgICAgICAgICAgICAgICAgKyAnX3dhaXRfc2VtYXBob3JlJykKCiAgICAgICAgIyB0byB0YWtlIGFjY291bnQgb2YgdGltZW91dHMgc2luY2UgbGFzdCBub3RpZnkqKCkgd2Ugc3VidHJhY3QKICAgICAgICAjIHdva2VuX2NvdW50IGZyb20gc2xlZXBpbmdfY291bnQgYW5kIHJlemVybyB3b2tlbl9jb3VudAogICAgICAgIHdoaWxlIHNlbGYuX3dva2VuX2NvdW50LmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICByZXMgPSBzZWxmLl9zbGVlcGluZ19jb3VudC5hY3F1aXJlKEZhbHNlKQogICAgICAgICAgICBhc3NlcnQgcmVzLCAoJ25vdGlmeTogQnVnIGluIHNsZWVwaW5nX2NvdW50LmFjcXVpcmUnCiAgICAgICAgICAgICAgICAgICAgICAgICArICctIHJlcyBzaG91bGQgbm90IGJlIEZhbHNlJykKCiAgICAgICAgc2xlZXBlcnMgPSAwCiAgICAgICAgd2hpbGUgc2xlZXBlcnMgPCBuIGFuZCBzZWxmLl9zbGVlcGluZ19jb3VudC5hY3F1aXJlKEZhbHNlKToKICAgICAgICAgICAgc2VsZi5fd2FpdF9zZW1hcGhvcmUucmVsZWFzZSgpICAgICAgICAjIHdha2UgdXAgb25lIHNsZWVwZXIKICAgICAgICAgICAgc2xlZXBlcnMgKz0gMQoKICAgICAgICBpZiBzbGVlcGVyczoKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2xlZXBlcnMpOgogICAgICAgICAgICAgICAgc2VsZi5fd29rZW5fY291bnQuYWNxdWlyZSgpICAgICAgICMgd2FpdCBmb3IgYSBzbGVlcGVyIHRvIHdha2UKCiAgICAgICAgICAgICMgcmV6ZXJvIHdhaXRfc2VtYXBob3JlIGluIGNhc2Ugc29tZSB0aW1lb3V0cyBqdXN0IGhhcHBlbmVkCiAgICAgICAgICAgIHdoaWxlIHNlbGYuX3dhaXRfc2VtYXBob3JlLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgcGFzcwoKICAgIGRlZiBub3RpZnlfYWxsKHNlbGYpOgogICAgICAgIHNlbGYubm90aWZ5KG49c3lzLm1heHNpemUpCgogICAgZGVmIHdhaXRfZm9yKHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dD1Ob25lKToKICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQogICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lLm1vbm90b25pYygpICsgdGltZW91dAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGVuZHRpbWUgPSBOb25lCiAgICAgICAgICAgIHdhaXR0aW1lID0gTm9uZQogICAgICAgIHdoaWxlIG5vdCByZXN1bHQ6CiAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB3YWl0dGltZSA9IGVuZHRpbWUgLSB0aW1lLm1vbm90b25pYygpCiAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKICAgICAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKICAgICAgICByZXR1cm4gcmVzdWx0CgojCiMgRXZlbnQKIwoKY2xhc3MgRXZlbnQob2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgY3R4KToKICAgICAgICBzZWxmLl9jb25kID0gY3R4LkNvbmRpdGlvbihjdHguTG9jaygpKQogICAgICAgIHNlbGYuX2ZsYWcgPSBjdHguU2VtYXBob3JlKDApCgogICAgZGVmIGlzX3NldChzZWxmKToKICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgIGlmIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICBzZWxmLl9mbGFnLnJlbGVhc2UoKQogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIHNldChzZWxmKToKICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSkKICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnlfYWxsKCkKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICBzZWxmLl9mbGFnLmFjcXVpcmUoRmFsc2UpCgogICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgIGlmIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICBzZWxmLl9mbGFnLnJlbGVhc2UoKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fY29uZC53YWl0KHRpbWVvdXQpCgogICAgICAgICAgICBpZiBzZWxmLl9mbGFnLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKSAtPiBzdHI6CiAgICAgICAgc2V0X3N0YXR1cyA9ICdzZXQnIGlmIHNlbGYuaXNfc2V0KCkgZWxzZSAndW5zZXQnCiAgICAgICAgcmV0dXJuIGYiPHt0eXBlKHNlbGYpLl9fcXVhbG5hbWVfX30gYXQge2lkKHNlbGYpOiN4fSB7c2V0X3N0YXR1c30+IgojCiMgQmFycmllcgojCgpjbGFzcyBCYXJyaWVyKHRocmVhZGluZy5CYXJyaWVyKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydGllcywgYWN0aW9uPU5vbmUsIHRpbWVvdXQ9Tm9uZSwgKiwgY3R4KToKICAgICAgICBpbXBvcnQgc3RydWN0CiAgICAgICAgZnJvbSAuaGVhcCBpbXBvcnQgQnVmZmVyV3JhcHBlcgogICAgICAgIHdyYXBwZXIgPSBCdWZmZXJXcmFwcGVyKHN0cnVjdC5jYWxjc2l6ZSgnaScpICogMikKICAgICAgICBjb25kID0gY3R4LkNvbmRpdGlvbigpCiAgICAgICAgc2VsZi5fX3NldHN0YXRlX18oKHBhcnRpZXMsIGFjdGlvbiwgdGltZW91dCwgY29uZCwgd3JhcHBlcikpCiAgICAgICAgc2VsZi5fc3RhdGUgPSAwCiAgICAgICAgc2VsZi5fY291bnQgPSAwCgogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgKHNlbGYuX3BhcnRpZXMsIHNlbGYuX2FjdGlvbiwgc2VsZi5fdGltZW91dCwKICAgICAgICAgc2VsZi5fY29uZCwgc2VsZi5fd3JhcHBlcikgPSBzdGF0ZQogICAgICAgIHNlbGYuX2FycmF5ID0gc2VsZi5fd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpLmNhc3QoJ2knKQoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIChzZWxmLl9wYXJ0aWVzLCBzZWxmLl9hY3Rpb24sIHNlbGYuX3RpbWVvdXQsCiAgICAgICAgICAgICAgICBzZWxmLl9jb25kLCBzZWxmLl93cmFwcGVyKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9zdGF0ZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYXJyYXlbMF0KCiAgICBAX3N0YXRlLnNldHRlcgogICAgZGVmIF9zdGF0ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5fYXJyYXlbMF0gPSB2YWx1ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9jb3VudChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYXJyYXlbMV0KCiAgICBAX2NvdW50LnNldHRlcgogICAgZGVmIF9jb3VudChzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5fYXJyYXlbMV0gPSB2YWx1ZQpQSwMEFAAAAAAAAyCjVlW5LB74NgAA+DYAABcAAABtdWx0aXByb2Nlc3NpbmcvdXRpbC5weSMKIyBNb2R1bGUgcHJvdmlkaW5nIHZhcmlvdXMgZmFjaWxpdGllcyB0byBvdGhlciBwYXJ0cyBvZiB0aGUgcGFja2FnZQojCiMgbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKIwojIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiMKCmltcG9ydCBvcwppbXBvcnQgaXRlcnRvb2xzCmltcG9ydCBzeXMKaW1wb3J0IHdlYWtyZWYKaW1wb3J0IGF0ZXhpdAppbXBvcnQgdGhyZWFkaW5nICAgICAgICAjIHdlIHdhbnQgdGhyZWFkaW5nIHRvIGluc3RhbGwgaXQncwogICAgICAgICAgICAgICAgICAgICAgICAjIGNsZWFudXAgZnVuY3Rpb24gYmVmb3JlIG11bHRpcHJvY2Vzc2luZyBkb2VzCmZyb20gc3VicHJvY2VzcyBpbXBvcnQgX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncwoKZnJvbSAuIGltcG9ydCBwcm9jZXNzCgpfX2FsbF9fID0gWwogICAgJ3N1Yl9kZWJ1ZycsICdkZWJ1ZycsICdpbmZvJywgJ3N1Yl93YXJuaW5nJywgJ2dldF9sb2dnZXInLAogICAgJ2xvZ190b19zdGRlcnInLCAnZ2V0X3RlbXBfZGlyJywgJ3JlZ2lzdGVyX2FmdGVyX2ZvcmsnLAogICAgJ2lzX2V4aXRpbmcnLCAnRmluYWxpemUnLCAnRm9ya0F3YXJlVGhyZWFkTG9jaycsICdGb3JrQXdhcmVMb2NhbCcsCiAgICAnY2xvc2VfYWxsX2Zkc19leGNlcHQnLCAnU1VCREVCVUcnLCAnU1VCV0FSTklORycsCiAgICBdCgojCiMgTG9nZ2luZwojCgpOT1RTRVQgPSAwClNVQkRFQlVHID0gNQpERUJVRyA9IDEwCklORk8gPSAyMApTVUJXQVJOSU5HID0gMjUKCkxPR0dFUl9OQU1FID0gJ211bHRpcHJvY2Vzc2luZycKREVGQVVMVF9MT0dHSU5HX0ZPUk1BVCA9ICdbJShsZXZlbG5hbWUpcy8lKHByb2Nlc3NOYW1lKXNdICUobWVzc2FnZSlzJwoKX2xvZ2dlciA9IE5vbmUKX2xvZ190b19zdGRlcnIgPSBGYWxzZQoKZGVmIHN1Yl9kZWJ1Zyhtc2csICphcmdzKToKICAgIGlmIF9sb2dnZXI6CiAgICAgICAgX2xvZ2dlci5sb2coU1VCREVCVUcsIG1zZywgKmFyZ3MpCgpkZWYgZGVidWcobXNnLCAqYXJncyk6CiAgICBpZiBfbG9nZ2VyOgogICAgICAgIF9sb2dnZXIubG9nKERFQlVHLCBtc2csICphcmdzKQoKZGVmIGluZm8obXNnLCAqYXJncyk6CiAgICBpZiBfbG9nZ2VyOgogICAgICAgIF9sb2dnZXIubG9nKElORk8sIG1zZywgKmFyZ3MpCgpkZWYgc3ViX3dhcm5pbmcobXNnLCAqYXJncyk6CiAgICBpZiBfbG9nZ2VyOgogICAgICAgIF9sb2dnZXIubG9nKFNVQldBUk5JTkcsIG1zZywgKmFyZ3MpCgpkZWYgZ2V0X2xvZ2dlcigpOgogICAgJycnCiAgICBSZXR1cm5zIGxvZ2dlciB1c2VkIGJ5IG11bHRpcHJvY2Vzc2luZwogICAgJycnCiAgICBnbG9iYWwgX2xvZ2dlcgogICAgaW1wb3J0IGxvZ2dpbmcKCiAgICBsb2dnaW5nLl9hY3F1aXJlTG9jaygpCiAgICB0cnk6CiAgICAgICAgaWYgbm90IF9sb2dnZXI6CgogICAgICAgICAgICBfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoTE9HR0VSX05BTUUpCiAgICAgICAgICAgIF9sb2dnZXIucHJvcGFnYXRlID0gMAoKICAgICAgICAgICAgIyBYWFggbXVsdGlwcm9jZXNzaW5nIHNob3VsZCBjbGVhbnVwIGJlZm9yZSBsb2dnaW5nCiAgICAgICAgICAgIGlmIGhhc2F0dHIoYXRleGl0LCAndW5yZWdpc3RlcicpOgogICAgICAgICAgICAgICAgYXRleGl0LnVucmVnaXN0ZXIoX2V4aXRfZnVuY3Rpb24pCiAgICAgICAgICAgICAgICBhdGV4aXQucmVnaXN0ZXIoX2V4aXRfZnVuY3Rpb24pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBhdGV4aXQuX2V4aXRoYW5kbGVycy5yZW1vdmUoKF9leGl0X2Z1bmN0aW9uLCAoKSwge30pKQogICAgICAgICAgICAgICAgYXRleGl0Ll9leGl0aGFuZGxlcnMuYXBwZW5kKChfZXhpdF9mdW5jdGlvbiwgKCksIHt9KSkKCiAgICBmaW5hbGx5OgogICAgICAgIGxvZ2dpbmcuX3JlbGVhc2VMb2NrKCkKCiAgICByZXR1cm4gX2xvZ2dlcgoKZGVmIGxvZ190b19zdGRlcnIobGV2ZWw9Tm9uZSk6CiAgICAnJycKICAgIFR1cm4gb24gbG9nZ2luZyBhbmQgYWRkIGEgaGFuZGxlciB3aGljaCBwcmludHMgdG8gc3RkZXJyCiAgICAnJycKICAgIGdsb2JhbCBfbG9nX3RvX3N0ZGVycgogICAgaW1wb3J0IGxvZ2dpbmcKCiAgICBsb2dnZXIgPSBnZXRfbG9nZ2VyKCkKICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKERFRkFVTFRfTE9HR0lOR19GT1JNQVQpCiAgICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCgogICAgaWYgbGV2ZWw6CiAgICAgICAgbG9nZ2VyLnNldExldmVsKGxldmVsKQogICAgX2xvZ190b19zdGRlcnIgPSBUcnVlCiAgICByZXR1cm4gX2xvZ2dlcgoKCiMgQWJzdHJhY3Qgc29ja2V0IHN1cHBvcnQKCmRlZiBfcGxhdGZvcm1fc3VwcG9ydHNfYWJzdHJhY3Rfc29ja2V0cygpOgogICAgaWYgc3lzLnBsYXRmb3JtID09ICJsaW51eCI6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIGlmIGhhc2F0dHIoc3lzLCAnZ2V0YW5kcm9pZGFwaWxldmVsJyk6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIHJldHVybiBGYWxzZQoKCmRlZiBpc19hYnN0cmFjdF9zb2NrZXRfbmFtZXNwYWNlKGFkZHJlc3MpOgogICAgaWYgbm90IGFkZHJlc3M6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKICAgICAgICByZXR1cm4gYWRkcmVzc1swXSA9PSAwCiAgICBlbGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgc3RyKToKICAgICAgICByZXR1cm4gYWRkcmVzc1swXSA9PSAiXDAiCiAgICByYWlzZSBUeXBlRXJyb3IoZidhZGRyZXNzIHR5cGUgb2Yge2FkZHJlc3Mhcn0gdW5yZWNvZ25pemVkJykKCgphYnN0cmFjdF9zb2NrZXRzX3N1cHBvcnRlZCA9IF9wbGF0Zm9ybV9zdXBwb3J0c19hYnN0cmFjdF9zb2NrZXRzKCkKCiMKIyBGdW5jdGlvbiByZXR1cm5pbmcgYSB0ZW1wIGRpcmVjdG9yeSB3aGljaCB3aWxsIGJlIHJlbW92ZWQgb24gZXhpdAojCgpkZWYgX3JlbW92ZV90ZW1wX2RpcihybXRyZWUsIHRlbXBkaXIpOgogICAgcm10cmVlKHRlbXBkaXIpCgogICAgY3VycmVudF9wcm9jZXNzID0gcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKQogICAgIyBjdXJyZW50X3Byb2Nlc3MoKSBjYW4gYmUgTm9uZSBpZiB0aGUgZmluYWxpemVyIGlzIGNhbGxlZAogICAgIyBsYXRlIGR1cmluZyBQeXRob24gZmluYWxpemF0aW9uCiAgICBpZiBjdXJyZW50X3Byb2Nlc3MgaXMgbm90IE5vbmU6CiAgICAgICAgY3VycmVudF9wcm9jZXNzLl9jb25maWdbJ3RlbXBkaXInXSA9IE5vbmUKCmRlZiBnZXRfdGVtcF9kaXIoKToKICAgICMgZ2V0IG5hbWUgb2YgYSB0ZW1wIGRpcmVjdG9yeSB3aGljaCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2xlYW5lZCB1cAogICAgdGVtcGRpciA9IHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkuX2NvbmZpZy5nZXQoJ3RlbXBkaXInKQogICAgaWYgdGVtcGRpciBpcyBOb25lOgogICAgICAgIGltcG9ydCBzaHV0aWwsIHRlbXBmaWxlCiAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdweW1wLScpCiAgICAgICAgaW5mbygnY3JlYXRlZCB0ZW1wIGRpcmVjdG9yeSAlcycsIHRlbXBkaXIpCiAgICAgICAgIyBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBzaHV0aWwucm10cmVlKCksIHNpbmNlIHRoZSBmaW5hbGl6ZXIKICAgICAgICAjIGNhbiBiZSBjYWxsZWQgbGF0ZSBkdXJpbmcgUHl0aG9uIHNodXRkb3duCiAgICAgICAgRmluYWxpemUoTm9uZSwgX3JlbW92ZV90ZW1wX2RpciwgYXJncz0oc2h1dGlsLnJtdHJlZSwgdGVtcGRpciksCiAgICAgICAgICAgICAgICAgZXhpdHByaW9yaXR5PS0xMDApCiAgICAgICAgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5fY29uZmlnWyd0ZW1wZGlyJ10gPSB0ZW1wZGlyCiAgICByZXR1cm4gdGVtcGRpcgoKIwojIFN1cHBvcnQgZm9yIHJlaW5pdGlhbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIGJvb3RzdHJhcHBpbmcgYSBjaGlsZCBwcm9jZXNzCiMKCl9hZnRlcmZvcmtfcmVnaXN0cnkgPSB3ZWFrcmVmLldlYWtWYWx1ZURpY3Rpb25hcnkoKQpfYWZ0ZXJmb3JrX2NvdW50ZXIgPSBpdGVydG9vbHMuY291bnQoKQoKZGVmIF9ydW5fYWZ0ZXJfZm9ya2VycygpOgogICAgaXRlbXMgPSBsaXN0KF9hZnRlcmZvcmtfcmVnaXN0cnkuaXRlbXMoKSkKICAgIGl0ZW1zLnNvcnQoKQogICAgZm9yIChpbmRleCwgaWRlbnQsIGZ1bmMpLCBvYmogaW4gaXRlbXM6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmdW5jKG9iaikKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGluZm8oJ2FmdGVyIGZvcmtlciByYWlzZWQgZXhjZXB0aW9uICVzJywgZSkKCmRlZiByZWdpc3Rlcl9hZnRlcl9mb3JrKG9iaiwgZnVuYyk6CiAgICBfYWZ0ZXJmb3JrX3JlZ2lzdHJ5WyhuZXh0KF9hZnRlcmZvcmtfY291bnRlciksIGlkKG9iaiksIGZ1bmMpXSA9IG9iagoKIwojIEZpbmFsaXphdGlvbiB1c2luZyB3ZWFrcmVmcwojCgpfZmluYWxpemVyX3JlZ2lzdHJ5ID0ge30KX2ZpbmFsaXplcl9jb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KCkKCgpjbGFzcyBGaW5hbGl6ZShvYmplY3QpOgogICAgJycnCiAgICBDbGFzcyB3aGljaCBzdXBwb3J0cyBvYmplY3QgZmluYWxpemF0aW9uIHVzaW5nIHdlYWtyZWZzCiAgICAnJycKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmosIGNhbGxiYWNrLCBhcmdzPSgpLCBrd2FyZ3M9Tm9uZSwgZXhpdHByaW9yaXR5PU5vbmUpOgogICAgICAgIGlmIChleGl0cHJpb3JpdHkgaXMgbm90IE5vbmUpIGFuZCBub3QgaXNpbnN0YW5jZShleGl0cHJpb3JpdHksaW50KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgIkV4aXRwcmlvcml0eSAoezAhcn0pIG11c3QgYmUgTm9uZSBvciBpbnQsIG5vdCB7MSFzfSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgIGV4aXRwcmlvcml0eSwgdHlwZShleGl0cHJpb3JpdHkpKSkKCiAgICAgICAgaWYgb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl93ZWFrcmVmID0gd2Vha3JlZi5yZWYob2JqLCBzZWxmKQogICAgICAgIGVsaWYgZXhpdHByaW9yaXR5IGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIldpdGhvdXQgb2JqZWN0LCBleGl0cHJpb3JpdHkgY2Fubm90IGJlIE5vbmUiKQoKICAgICAgICBzZWxmLl9jYWxsYmFjayA9IGNhbGxiYWNrCiAgICAgICAgc2VsZi5fYXJncyA9IGFyZ3MKICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3Mgb3Ige30KICAgICAgICBzZWxmLl9rZXkgPSAoZXhpdHByaW9yaXR5LCBuZXh0KF9maW5hbGl6ZXJfY291bnRlcikpCiAgICAgICAgc2VsZi5fcGlkID0gb3MuZ2V0cGlkKCkKCiAgICAgICAgX2ZpbmFsaXplcl9yZWdpc3RyeVtzZWxmLl9rZXldID0gc2VsZgoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB3cj1Ob25lLAogICAgICAgICAgICAgICAgICMgTmVlZCB0byBiaW5kIHRoZXNlIGxvY2FsbHkgYmVjYXVzZSB0aGUgZ2xvYmFscyBjYW4gaGF2ZQogICAgICAgICAgICAgICAgICMgYmVlbiBjbGVhcmVkIGF0IHNodXRkb3duCiAgICAgICAgICAgICAgICAgX2ZpbmFsaXplcl9yZWdpc3RyeT1fZmluYWxpemVyX3JlZ2lzdHJ5LAogICAgICAgICAgICAgICAgIHN1Yl9kZWJ1Zz1zdWJfZGVidWcsIGdldHBpZD1vcy5nZXRwaWQpOgogICAgICAgICcnJwogICAgICAgIFJ1biB0aGUgY2FsbGJhY2sgdW5sZXNzIGl0IGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIG9yIGNhbmNlbGxlZAogICAgICAgICcnJwogICAgICAgIHRyeToKICAgICAgICAgICAgZGVsIF9maW5hbGl6ZXJfcmVnaXN0cnlbc2VsZi5fa2V5XQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgbm8gbG9uZ2VyIHJlZ2lzdGVyZWQnKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHNlbGYuX3BpZCAhPSBnZXRwaWQoKToKICAgICAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIGlnbm9yZWQgYmVjYXVzZSBkaWZmZXJlbnQgcHJvY2VzcycpCiAgICAgICAgICAgICAgICByZXMgPSBOb25lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzdWJfZGVidWcoJ2ZpbmFsaXplciBjYWxsaW5nICVzIHdpdGggYXJncyAlcyBhbmQga3dhcmdzICVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjaywgc2VsZi5fYXJncywgc2VsZi5fa3dhcmdzKQogICAgICAgICAgICAgICAgcmVzID0gc2VsZi5fY2FsbGJhY2soKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQogICAgICAgICAgICBzZWxmLl93ZWFrcmVmID0gc2VsZi5fY2FsbGJhY2sgPSBzZWxmLl9hcmdzID0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fa3dhcmdzID0gc2VsZi5fa2V5ID0gTm9uZQogICAgICAgICAgICByZXR1cm4gcmVzCgogICAgZGVmIGNhbmNlbChzZWxmKToKICAgICAgICAnJycKICAgICAgICBDYW5jZWwgZmluYWxpemF0aW9uIG9mIHRoZSBvYmplY3QKICAgICAgICAnJycKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRlbCBfZmluYWxpemVyX3JlZ2lzdHJ5W3NlbGYuX2tleV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl93ZWFrcmVmID0gc2VsZi5fY2FsbGJhY2sgPSBzZWxmLl9hcmdzID0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fa3dhcmdzID0gc2VsZi5fa2V5ID0gTm9uZQoKICAgIGRlZiBzdGlsbF9hY3RpdmUoc2VsZik6CiAgICAgICAgJycnCiAgICAgICAgUmV0dXJuIHdoZXRoZXIgdGhpcyBmaW5hbGl6ZXIgaXMgc3RpbGwgd2FpdGluZyB0byBpbnZva2UgY2FsbGJhY2sKICAgICAgICAnJycKICAgICAgICByZXR1cm4gc2VsZi5fa2V5IGluIF9maW5hbGl6ZXJfcmVnaXN0cnkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBvYmogPSBzZWxmLl93ZWFrcmVmKCkKICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IpOgogICAgICAgICAgICBvYmogPSBOb25lCgogICAgICAgIGlmIG9iaiBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gJzwlcyBvYmplY3QsIGRlYWQ+JyAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCgogICAgICAgIHggPSAnPCVzIG9iamVjdCwgY2FsbGJhY2s9JXMnICUgKAogICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYuX2NhbGxiYWNrLCAnX19uYW1lX18nLCBzZWxmLl9jYWxsYmFjaykpCiAgICAgICAgaWYgc2VsZi5fYXJnczoKICAgICAgICAgICAgeCArPSAnLCBhcmdzPScgKyBzdHIoc2VsZi5fYXJncykKICAgICAgICBpZiBzZWxmLl9rd2FyZ3M6CiAgICAgICAgICAgIHggKz0gJywga3dhcmdzPScgKyBzdHIoc2VsZi5fa3dhcmdzKQogICAgICAgIGlmIHNlbGYuX2tleVswXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgeCArPSAnLCBleGl0cHJpb3JpdHk9JyArIHN0cihzZWxmLl9rZXlbMF0pCiAgICAgICAgcmV0dXJuIHggKyAnPicKCgpkZWYgX3J1bl9maW5hbGl6ZXJzKG1pbnByaW9yaXR5PU5vbmUpOgogICAgJycnCiAgICBSdW4gYWxsIGZpbmFsaXplcnMgd2hvc2UgZXhpdCBwcmlvcml0eSBpcyBub3QgTm9uZSBhbmQgYXQgbGVhc3QgbWlucHJpb3JpdHkKCiAgICBGaW5hbGl6ZXJzIHdpdGggaGlnaGVzdCBwcmlvcml0eSBhcmUgY2FsbGVkIGZpcnN0OyBmaW5hbGl6ZXJzIHdpdGgKICAgIHRoZSBzYW1lIHByaW9yaXR5IHdpbGwgYmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgb2YgY3JlYXRpb24uCiAgICAnJycKICAgIGlmIF9maW5hbGl6ZXJfcmVnaXN0cnkgaXMgTm9uZToKICAgICAgICAjIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBhZnRlciB0aGlzIG1vZHVsZSdzIGdsb2JhbHMgYXJlCiAgICAgICAgIyBkZXN0cm95ZWQuICBTZWUgdGhlIF9leGl0X2Z1bmN0aW9uIGZ1bmN0aW9uIGluIHRoaXMgbW9kdWxlIGZvciBtb3JlCiAgICAgICAgIyBub3Rlcy4KICAgICAgICByZXR1cm4KCiAgICBpZiBtaW5wcmlvcml0eSBpcyBOb25lOgogICAgICAgIGYgPSBsYW1iZGEgcCA6IHBbMF0gaXMgbm90IE5vbmUKICAgIGVsc2U6CiAgICAgICAgZiA9IGxhbWJkYSBwIDogcFswXSBpcyBub3QgTm9uZSBhbmQgcFswXSA+PSBtaW5wcmlvcml0eQoKICAgICMgQ2FyZWZ1bDogX2ZpbmFsaXplcl9yZWdpc3RyeSBtYXkgYmUgbXV0YXRlZCB3aGlsZSB0aGlzIGZ1bmN0aW9uCiAgICAjIGlzIHJ1bm5pbmcgKGVpdGhlciBieSBhIEdDIHJ1biBvciBieSBhbm90aGVyIHRocmVhZCkuCgogICAgIyBsaXN0KF9maW5hbGl6ZXJfcmVnaXN0cnkpIHNob3VsZCBiZSBhdG9taWMsIHdoaWxlCiAgICAjIGxpc3QoX2ZpbmFsaXplcl9yZWdpc3RyeS5pdGVtcygpKSBpcyBub3QuCiAgICBrZXlzID0gW2tleSBmb3Iga2V5IGluIGxpc3QoX2ZpbmFsaXplcl9yZWdpc3RyeSkgaWYgZihrZXkpXQogICAga2V5cy5zb3J0KHJldmVyc2U9VHJ1ZSkKCiAgICBmb3Iga2V5IGluIGtleXM6CiAgICAgICAgZmluYWxpemVyID0gX2ZpbmFsaXplcl9yZWdpc3RyeS5nZXQoa2V5KQogICAgICAgICMga2V5IG1heSBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSByZWdpc3RyeQogICAgICAgIGlmIGZpbmFsaXplciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3ViX2RlYnVnKCdjYWxsaW5nICVzJywgZmluYWxpemVyKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmaW5hbGl6ZXIoKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCgogICAgaWYgbWlucHJpb3JpdHkgaXMgTm9uZToKICAgICAgICBfZmluYWxpemVyX3JlZ2lzdHJ5LmNsZWFyKCkKCiMKIyBDbGVhbiB1cCBvbiBleGl0CiMKCmRlZiBpc19leGl0aW5nKCk6CiAgICAnJycKICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvY2VzcyBpcyBzaHV0dGluZyBkb3duCiAgICAnJycKICAgIHJldHVybiBfZXhpdGluZyBvciBfZXhpdGluZyBpcyBOb25lCgpfZXhpdGluZyA9IEZhbHNlCgpkZWYgX2V4aXRfZnVuY3Rpb24oaW5mbz1pbmZvLCBkZWJ1Zz1kZWJ1ZywgX3J1bl9maW5hbGl6ZXJzPV9ydW5fZmluYWxpemVycywKICAgICAgICAgICAgICAgICAgIGFjdGl2ZV9jaGlsZHJlbj1wcm9jZXNzLmFjdGl2ZV9jaGlsZHJlbiwKICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcHJvY2Vzcz1wcm9jZXNzLmN1cnJlbnRfcHJvY2Vzcyk6CiAgICAjIFdlIGhvbGQgb24gdG8gcmVmZXJlbmNlcyB0byBmdW5jdGlvbnMgaW4gdGhlIGFyZ2xpc3QgZHVlIHRvIHRoZQogICAgIyBzaXR1YXRpb24gZGVzY3JpYmVkIGJlbG93LCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0aGlzCiAgICAjIG1vZHVsZSdzIGdsb2JhbHMgYXJlIGRlc3Ryb3llZC4KCiAgICBnbG9iYWwgX2V4aXRpbmcKCiAgICBpZiBub3QgX2V4aXRpbmc6CiAgICAgICAgX2V4aXRpbmcgPSBUcnVlCgogICAgICAgIGluZm8oJ3Byb2Nlc3Mgc2h1dHRpbmcgZG93bicpCiAgICAgICAgZGVidWcoJ3J1bm5pbmcgYWxsICJhdGV4aXQiIGZpbmFsaXplcnMgd2l0aCBwcmlvcml0eSA+PSAwJykKICAgICAgICBfcnVuX2ZpbmFsaXplcnMoMCkKCiAgICAgICAgaWYgY3VycmVudF9wcm9jZXNzKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgV2UgY2hlY2sgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBOb25lIGhlcmUgYmVjYXVzZSBpZgogICAgICAgICAgICAjIGl0J3MgTm9uZSwgYW55IGNhbGwgdG8gYGBhY3RpdmVfY2hpbGRyZW4oKWBgIHdpbGwgcmFpc2UKICAgICAgICAgICAgIyBhbiBBdHRyaWJ1dGVFcnJvciAoYWN0aXZlX2NoaWxkcmVuIHdpbmRzIHVwIHRyeWluZyB0bwogICAgICAgICAgICAjIGdldCBhdHRyaWJ1dGVzIGZyb20gdXRpbC5fY3VycmVudF9wcm9jZXNzKS4gIE9uZQogICAgICAgICAgICAjIHNpdHVhdGlvbiB3aGVyZSB0aGlzIGNhbiBoYXBwZW4gaXMgaWYgc29tZW9uZSBoYXMKICAgICAgICAgICAgIyBtYW5pcHVsYXRlZCBzeXMubW9kdWxlcywgY2F1c2luZyB0aGlzIG1vZHVsZSB0byBiZQogICAgICAgICAgICAjIGdhcmJhZ2UgY29sbGVjdGVkLiAgVGhlIGRlc3RydWN0b3IgZm9yIHRoZSBtb2R1bGUgdHlwZQogICAgICAgICAgICAjIHRoZW4gcmVwbGFjZXMgYWxsIHZhbHVlcyBpbiB0aGUgbW9kdWxlIGRpY3Qgd2l0aCBOb25lLgogICAgICAgICAgICAjIEZvciBpbnN0YW5jZSwgYWZ0ZXIgc2V0dXB0b29scyBydW5zIGEgdGVzdCBpdCByZXBsYWNlcwogICAgICAgICAgICAjIHN5cy5tb2R1bGVzIHdpdGggYSBjb3B5IGNyZWF0ZWQgZWFybGllci4gIFNlZSBpc3N1ZXMKICAgICAgICAgICAgIyAjOTc3NSBhbmQgIzE1ODgxLiAgQWxzbyByZWxhdGVkOiAjNDEwNiwgIzkyMDUsIGFuZAogICAgICAgICAgICAjICM5MjA3LgoKICAgICAgICAgICAgZm9yIHAgaW4gYWN0aXZlX2NoaWxkcmVuKCk6CiAgICAgICAgICAgICAgICBpZiBwLmRhZW1vbjoKICAgICAgICAgICAgICAgICAgICBpbmZvKCdjYWxsaW5nIHRlcm1pbmF0ZSgpIGZvciBkYWVtb24gJXMnLCBwLm5hbWUpCiAgICAgICAgICAgICAgICAgICAgcC5fcG9wZW4udGVybWluYXRlKCkKCiAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgogICAgICAgICAgICAgICAgaW5mbygnY2FsbGluZyBqb2luKCkgZm9yIHByb2Nlc3MgJXMnLCBwLm5hbWUpCiAgICAgICAgICAgICAgICBwLmpvaW4oKQoKICAgICAgICBkZWJ1ZygncnVubmluZyB0aGUgcmVtYWluaW5nICJhdGV4aXQiIGZpbmFsaXplcnMnKQogICAgICAgIF9ydW5fZmluYWxpemVycygpCgphdGV4aXQucmVnaXN0ZXIoX2V4aXRfZnVuY3Rpb24pCgojCiMgU29tZSBmb3JrIGF3YXJlIHR5cGVzCiMKCmNsYXNzIEZvcmtBd2FyZVRocmVhZExvY2sob2JqZWN0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogICAgICAgIHNlbGYuYWNxdWlyZSA9IHNlbGYuX2xvY2suYWNxdWlyZQogICAgICAgIHNlbGYucmVsZWFzZSA9IHNlbGYuX2xvY2sucmVsZWFzZQogICAgICAgIHJlZ2lzdGVyX2FmdGVyX2Zvcmsoc2VsZiwgRm9ya0F3YXJlVGhyZWFkTG9jay5fYXRfZm9ya19yZWluaXQpCgogICAgZGVmIF9hdF9mb3JrX3JlaW5pdChzZWxmKToKICAgICAgICBzZWxmLl9sb2NrLl9hdF9mb3JrX3JlaW5pdCgpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2VudGVyX18oKQoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2suX19leGl0X18oKmFyZ3MpCgoKY2xhc3MgRm9ya0F3YXJlTG9jYWwodGhyZWFkaW5nLmxvY2FsKToKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICByZWdpc3Rlcl9hZnRlcl9mb3JrKHNlbGYsIGxhbWJkYSBvYmogOiBvYmouX19kaWN0X18uY2xlYXIoKSkKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiB0eXBlKHNlbGYpLCAoKQoKIwojIENsb3NlIGZkcyBleGNlcHQgdGhvc2Ugc3BlY2lmaWVkCiMKCnRyeToKICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQpleGNlcHQgRXhjZXB0aW9uOgogICAgTUFYRkQgPSAyNTYKCmRlZiBjbG9zZV9hbGxfZmRzX2V4Y2VwdChmZHMpOgogICAgZmRzID0gbGlzdChmZHMpICsgWy0xLCBNQVhGRF0KICAgIGZkcy5zb3J0KCkKICAgIGFzc2VydCBmZHNbLTFdID09IE1BWEZELCAnZmQgdG9vIGxhcmdlJwogICAgZm9yIGkgaW4gcmFuZ2UobGVuKGZkcykgLSAxKToKICAgICAgICBvcy5jbG9zZXJhbmdlKGZkc1tpXSsxLCBmZHNbaSsxXSkKIwojIENsb3NlIHN5cy5zdGRpbiBhbmQgcmVwbGFjZSBzdGRpbiB3aXRoIG9zLmRldm51bGwKIwoKZGVmIF9jbG9zZV9zdGRpbigpOgogICAgaWYgc3lzLnN0ZGluIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuCgogICAgdHJ5OgogICAgICAgIHN5cy5zdGRpbi5jbG9zZSgpCiAgICBleGNlcHQgKE9TRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgIHBhc3MKCiAgICB0cnk6CiAgICAgICAgZmQgPSBvcy5vcGVuKG9zLmRldm51bGwsIG9zLk9fUkRPTkxZKQogICAgICAgIHRyeToKICAgICAgICAgICAgc3lzLnN0ZGluID0gb3BlbihmZCwgZW5jb2Rpbmc9InV0Zi04IiwgY2xvc2VmZD1GYWxzZSkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgICAgICByYWlzZQogICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICBwYXNzCgojCiMgRmx1c2ggc3RhbmRhcmQgc3RyZWFtcywgaWYgYW55CiMKCmRlZiBfZmx1c2hfc3RkX3N0cmVhbXMoKToKICAgIHRyeToKICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgIHBhc3MKICAgIHRyeToKICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgIHBhc3MKCiMKIyBTdGFydCBhIHByb2dyYW0gd2l0aCBvbmx5IHNwZWNpZmllZCBmZHMga2VwdCBvcGVuCiMKCmRlZiBzcGF3bnZfcGFzc2ZkcyhwYXRoLCBhcmdzLCBwYXNzZmRzKToKICAgIGltcG9ydCBfcG9zaXhzdWJwcm9jZXNzCiAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgcGFzc2ZkcyA9IHR1cGxlKHNvcnRlZChtYXAoaW50LCBwYXNzZmRzKSkpCiAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUgPSBvcy5waXBlKCkKICAgIHRyeToKICAgICAgICByZXR1cm4gX3Bvc2l4c3VicHJvY2Vzcy5mb3JrX2V4ZWMoCiAgICAgICAgICAgIGFyZ3MsIFtwYXRoXSwgVHJ1ZSwgcGFzc2ZkcywgTm9uZSwgTm9uZSwKICAgICAgICAgICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlLAogICAgICAgICAgICBGYWxzZSwgRmFsc2UsIC0xLCBOb25lLCBOb25lLCBOb25lLCAtMSwgTm9uZSwKICAgICAgICAgICAgc3VicHJvY2Vzcy5fVVNFX1ZGT1JLKQogICAgZmluYWxseToKICAgICAgICBvcy5jbG9zZShlcnJwaXBlX3JlYWQpCiAgICAgICAgb3MuY2xvc2UoZXJycGlwZV93cml0ZSkKCgpkZWYgY2xvc2VfZmRzKCpmZHMpOgogICAgIiIiQ2xvc2UgZWFjaCBmaWxlIGRlc2NyaXB0b3IgZ2l2ZW4gYXMgYW4gYXJndW1lbnQiIiIKICAgIGZvciBmZCBpbiBmZHM6CiAgICAgICAgb3MuY2xvc2UoZmQpCgoKZGVmIF9jbGVhbnVwX3Rlc3RzKCk6CiAgICAiIiJDbGVhbnVwIG11bHRpcHJvY2Vzc2luZyByZXNvdXJjZXMgd2hlbiBtdWx0aXByb2Nlc3NpbmcgdGVzdHMKICAgIGNvbXBsZXRlZC4iIiIKCiAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKCiAgICAjIGNsZWFudXAgbXVsdGlwcm9jZXNzaW5nCiAgICBwcm9jZXNzLl9jbGVhbnVwKCkKCiAgICAjIFN0b3AgdGhlIEZvcmtTZXJ2ZXIgcHJvY2VzcyBpZiBpdCdzIHJ1bm5pbmcKICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBmb3Jrc2VydmVyCiAgICBmb3Jrc2VydmVyLl9mb3Jrc2VydmVyLl9zdG9wKCkKCiAgICAjIFN0b3AgdGhlIFJlc291cmNlVHJhY2tlciBwcm9jZXNzIGlmIGl0J3MgcnVubmluZwogICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHJlc291cmNlX3RyYWNrZXIKICAgIHJlc291cmNlX3RyYWNrZXIuX3Jlc291cmNlX3RyYWNrZXIuX3N0b3AoKQoKICAgICMgYnBvLTM3NDIxOiBFeHBsaWNpdGx5IGNhbGwgX3J1bl9maW5hbGl6ZXJzKCkgdG8gcmVtb3ZlIGltbWVkaWF0ZWx5CiAgICAjIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBjcmVhdGVkIGJ5IG11bHRpcHJvY2Vzc2luZy51dGlsLmdldF90ZW1wX2RpcigpLgogICAgX3J1bl9maW5hbGl6ZXJzKCkKICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCgogICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKUEsDBBQAAAAAAAMgo1aW4HNl9QsAAPULAAAhAAAAbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5IwojIFN1cHBvcnQgZm9yIHRoZSBBUEkgb2YgdGhlIG11bHRpcHJvY2Vzc2luZyBwYWNrYWdlIHVzaW5nIHRocmVhZHMKIwojIG11bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQojCiMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KIwoKX19hbGxfXyA9IFsKICAgICdQcm9jZXNzJywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nLCAnZnJlZXplX3N1cHBvcnQnLAogICAgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnQ29uZGl0aW9uJywKICAgICdFdmVudCcsICdCYXJyaWVyJywgJ1F1ZXVlJywgJ01hbmFnZXInLCAnUGlwZScsICdQb29sJywgJ0pvaW5hYmxlUXVldWUnCiAgICBdCgojCiMgSW1wb3J0cwojCgppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCBzeXMKaW1wb3J0IHdlYWtyZWYKaW1wb3J0IGFycmF5Cgpmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBQaXBlCmZyb20gdGhyZWFkaW5nIGltcG9ydCBMb2NrLCBSTG9jaywgU2VtYXBob3JlLCBCb3VuZGVkU2VtYXBob3JlCmZyb20gdGhyZWFkaW5nIGltcG9ydCBFdmVudCwgQ29uZGl0aW9uLCBCYXJyaWVyCmZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCgojCiMKIwoKY2xhc3MgRHVtbXlQcm9jZXNzKHRocmVhZGluZy5UaHJlYWQpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30pOgogICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZiwgZ3JvdXAsIHRhcmdldCwgbmFtZSwgYXJncywga3dhcmdzKQogICAgICAgIHNlbGYuX3BpZCA9IE5vbmUKICAgICAgICBzZWxmLl9jaGlsZHJlbiA9IHdlYWtyZWYuV2Vha0tleURpY3Rpb25hcnkoKQogICAgICAgIHNlbGYuX3N0YXJ0X2NhbGxlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5fcGFyZW50ID0gY3VycmVudF9wcm9jZXNzKCkKCiAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fcGFyZW50IGlzIG5vdCBjdXJyZW50X3Byb2Nlc3MoKToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgIlBhcmVudCBpcyB7MCFyfSBidXQgY3VycmVudF9wcm9jZXNzIGlzIHsxIXJ9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50LCBjdXJyZW50X3Byb2Nlc3MoKSkpCiAgICAgICAgc2VsZi5fc3RhcnRfY2FsbGVkID0gVHJ1ZQogICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fcGFyZW50LCAnX2NoaWxkcmVuJyk6CiAgICAgICAgICAgIHNlbGYuX3BhcmVudC5fY2hpbGRyZW5bc2VsZl0gPSBOb25lCiAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5zdGFydChzZWxmKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGV4aXRjb2RlKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3N0YXJ0X2NhbGxlZCBhbmQgbm90IHNlbGYuaXNfYWxpdmUoKToKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKIwojCiMKClByb2Nlc3MgPSBEdW1teVByb2Nlc3MKY3VycmVudF9wcm9jZXNzID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkCmN1cnJlbnRfcHJvY2VzcygpLl9jaGlsZHJlbiA9IHdlYWtyZWYuV2Vha0tleURpY3Rpb25hcnkoKQoKZGVmIGFjdGl2ZV9jaGlsZHJlbigpOgogICAgY2hpbGRyZW4gPSBjdXJyZW50X3Byb2Nlc3MoKS5fY2hpbGRyZW4KICAgIGZvciBwIGluIGxpc3QoY2hpbGRyZW4pOgogICAgICAgIGlmIG5vdCBwLmlzX2FsaXZlKCk6CiAgICAgICAgICAgIGNoaWxkcmVuLnBvcChwLCBOb25lKQogICAgcmV0dXJuIGxpc3QoY2hpbGRyZW4pCgpkZWYgZnJlZXplX3N1cHBvcnQoKToKICAgIHBhc3MKCiMKIwojCgpjbGFzcyBOYW1lc3BhY2Uob2JqZWN0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAvLCAqKmt3ZHMpOgogICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGt3ZHMpCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgaXRlbXMgPSBsaXN0KHNlbGYuX19kaWN0X18uaXRlbXMoKSkKICAgICAgICB0ZW1wID0gW10KICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gaXRlbXM6CiAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKToKICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKCclcz0lcicgJSAobmFtZSwgdmFsdWUpKQogICAgICAgIHRlbXAuc29ydCgpCiAgICAgICAgcmV0dXJuICclcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnLCAnLmpvaW4odGVtcCkpCgpkaWN0ID0gZGljdApsaXN0ID0gbGlzdAoKZGVmIEFycmF5KHR5cGVjb2RlLCBzZXF1ZW5jZSwgbG9jaz1UcnVlKToKICAgIHJldHVybiBhcnJheS5hcnJheSh0eXBlY29kZSwgc2VxdWVuY2UpCgpjbGFzcyBWYWx1ZShvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVjb2RlLCB2YWx1ZSwgbG9jaz1UcnVlKToKICAgICAgICBzZWxmLl90eXBlY29kZSA9IHR5cGVjb2RlCiAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWx1ZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQoKICAgIEB2YWx1ZS5zZXR0ZXIKICAgIGRlZiB2YWx1ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWx1ZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzwlcyglciwgJXIpPiclKHR5cGUoc2VsZikuX19uYW1lX18sc2VsZi5fdHlwZWNvZGUsc2VsZi5fdmFsdWUpCgpkZWYgTWFuYWdlcigpOgogICAgcmV0dXJuIHN5cy5tb2R1bGVzW19fbmFtZV9fXQoKZGVmIHNodXRkb3duKCk6CiAgICBwYXNzCgpkZWYgUG9vbChwcm9jZXNzZXM9Tm9uZSwgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCkpOgogICAgZnJvbSAuLnBvb2wgaW1wb3J0IFRocmVhZFBvb2wKICAgIHJldHVybiBUaHJlYWRQb29sKHByb2Nlc3NlcywgaW5pdGlhbGl6ZXIsIGluaXRhcmdzKQoKSm9pbmFibGVRdWV1ZSA9IFF1ZXVlClBLAwQUAAAAAAADIKNW7tJfVD4GAAA+BgAAIwAAAG11bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5IwojIEFuYWxvZ3VlIG9mIGBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbmAgd2hpY2ggdXNlcyBxdWV1ZXMgaW5zdGVhZCBvZiBzb2NrZXRzCiMKIyBtdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQojCiMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KIwoKX19hbGxfXyA9IFsgJ0NsaWVudCcsICdMaXN0ZW5lcicsICdQaXBlJyBdCgpmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQoKCmZhbWlsaWVzID0gW05vbmVdCgoKY2xhc3MgTGlzdGVuZXIob2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcz1Ob25lLCBmYW1pbHk9Tm9uZSwgYmFja2xvZz0xKToKICAgICAgICBzZWxmLl9iYWNrbG9nX3F1ZXVlID0gUXVldWUoYmFja2xvZykKCiAgICBkZWYgYWNjZXB0KHNlbGYpOgogICAgICAgIHJldHVybiBDb25uZWN0aW9uKCpzZWxmLl9iYWNrbG9nX3F1ZXVlLmdldCgpKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLl9iYWNrbG9nX3F1ZXVlID0gTm9uZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFkZHJlc3Moc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2JhY2tsb2dfcXVldWUKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190Yik6CiAgICAgICAgc2VsZi5jbG9zZSgpCgoKZGVmIENsaWVudChhZGRyZXNzKToKICAgIF9pbiwgX291dCA9IFF1ZXVlKCksIFF1ZXVlKCkKICAgIGFkZHJlc3MucHV0KChfb3V0LCBfaW4pKQogICAgcmV0dXJuIENvbm5lY3Rpb24oX2luLCBfb3V0KQoKCmRlZiBQaXBlKGR1cGxleD1UcnVlKToKICAgIGEsIGIgPSBRdWV1ZSgpLCBRdWV1ZSgpCiAgICByZXR1cm4gQ29ubmVjdGlvbihhLCBiKSwgQ29ubmVjdGlvbihiLCBhKQoKCmNsYXNzIENvbm5lY3Rpb24ob2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgX2luLCBfb3V0KToKICAgICAgICBzZWxmLl9vdXQgPSBfb3V0CiAgICAgICAgc2VsZi5faW4gPSBfaW4KICAgICAgICBzZWxmLnNlbmQgPSBzZWxmLnNlbmRfYnl0ZXMgPSBfb3V0LnB1dAogICAgICAgIHNlbGYucmVjdiA9IHNlbGYucmVjdl9ieXRlcyA9IF9pbi5nZXQKCiAgICBkZWYgcG9sbChzZWxmLCB0aW1lb3V0PTAuMCk6CiAgICAgICAgaWYgc2VsZi5faW4ucXNpemUoKSA+IDA6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgaWYgdGltZW91dCA8PSAwLjA6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHdpdGggc2VsZi5faW4ubm90X2VtcHR5OgogICAgICAgICAgICBzZWxmLl9pbi5ub3RfZW1wdHkud2FpdCh0aW1lb3V0KQogICAgICAgIHJldHVybiBzZWxmLl9pbi5xc2l6ZSgpID4gMAoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBwYXNzCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgogICAgICAgIHNlbGYuY2xvc2UoKQpQSwMEFAAAAAAAAyCjVkwWuFwRPgAAET4AAA4AAAByZS9fX2luaXRfXy5weSMKIyBTZWNyZXQgTGFicycgUmVndWxhciBFeHByZXNzaW9uIEVuZ2luZQojCiMgcmUtY29tcGF0aWJsZSBpbnRlcmZhY2UgZm9yIHRoZSBzcmUgbWF0Y2hpbmcgZW5naW5lCiMKIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBieSBTZWNyZXQgTGFicyBBQi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBUaGlzIHZlcnNpb24gb2YgdGhlIFNSRSBsaWJyYXJ5IGNhbiBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIENOUkkncwojIFB5dGhvbiAxLjYgbGljZW5zZS4gIEZvciBhbnkgb3RoZXIgdXNlLCBwbGVhc2UgY29udGFjdCBTZWNyZXQgTGFicwojIEFCIChpbmZvQHB5dGhvbndhcmUuY29tKS4KIwojIFBvcnRpb25zIG9mIHRoaXMgZW5naW5lIGhhdmUgYmVlbiBkZXZlbG9wZWQgaW4gY29vcGVyYXRpb24gd2l0aAojIENOUkkuICBIZXdsZXR0LVBhY2thcmQgcHJvdmlkZWQgZnVuZGluZyBmb3IgMS42IGludGVncmF0aW9uIGFuZAojIG90aGVyIGNvbXBhdGliaWxpdHkgd29yay4KIwoKciIiIlN1cHBvcnQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKFJFKS4KClRoaXMgbW9kdWxlIHByb3ZpZGVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyBvcGVyYXRpb25zIHNpbWlsYXIgdG8KdGhvc2UgZm91bmQgaW4gUGVybC4gIEl0IHN1cHBvcnRzIGJvdGggOC1iaXQgYW5kIFVuaWNvZGUgc3RyaW5nczsgYm90aAp0aGUgcGF0dGVybiBhbmQgdGhlIHN0cmluZ3MgYmVpbmcgcHJvY2Vzc2VkIGNhbiBjb250YWluIG51bGwgYnl0ZXMgYW5kCmNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgVVMgQVNDSUkgcmFuZ2UuCgpSZWd1bGFyIGV4cHJlc3Npb25zIGNhbiBjb250YWluIGJvdGggc3BlY2lhbCBhbmQgb3JkaW5hcnkgY2hhcmFjdGVycy4KTW9zdCBvcmRpbmFyeSBjaGFyYWN0ZXJzLCBsaWtlICJBIiwgImEiLCBvciAiMCIsIGFyZSB0aGUgc2ltcGxlc3QKcmVndWxhciBleHByZXNzaW9uczsgdGhleSBzaW1wbHkgbWF0Y2ggdGhlbXNlbHZlcy4gIFlvdSBjYW4KY29uY2F0ZW5hdGUgb3JkaW5hcnkgY2hhcmFjdGVycywgc28gbGFzdCBtYXRjaGVzIHRoZSBzdHJpbmcgJ2xhc3QnLgoKVGhlIHNwZWNpYWwgY2hhcmFjdGVycyBhcmU6CiAgICAiLiIgICAgICBNYXRjaGVzIGFueSBjaGFyYWN0ZXIgZXhjZXB0IGEgbmV3bGluZS4KICAgICJeIiAgICAgIE1hdGNoZXMgdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcuCiAgICAiJCIgICAgICBNYXRjaGVzIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBvciBqdXN0IGJlZm9yZSB0aGUgbmV3bGluZSBhdAogICAgICAgICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgogICAgIioiICAgICAgTWF0Y2hlcyAwIG9yIG1vcmUgKGdyZWVkeSkgcmVwZXRpdGlvbnMgb2YgdGhlIHByZWNlZGluZyBSRS4KICAgICAgICAgICAgIEdyZWVkeSBtZWFucyB0aGF0IGl0IHdpbGwgbWF0Y2ggYXMgbWFueSByZXBldGl0aW9ucyBhcyBwb3NzaWJsZS4KICAgICIrIiAgICAgIE1hdGNoZXMgMSBvciBtb3JlIChncmVlZHkpIHJlcGV0aXRpb25zIG9mIHRoZSBwcmVjZWRpbmcgUkUuCiAgICAiPyIgICAgICBNYXRjaGVzIDAgb3IgMSAoZ3JlZWR5KSBvZiB0aGUgcHJlY2VkaW5nIFJFLgogICAgKj8sKz8sPz8gTm9uLWdyZWVkeSB2ZXJzaW9ucyBvZiB0aGUgcHJldmlvdXMgdGhyZWUgc3BlY2lhbCBjaGFyYWN0ZXJzLgogICAge20sbn0gICAgTWF0Y2hlcyBmcm9tIG0gdG8gbiByZXBldGl0aW9ucyBvZiB0aGUgcHJlY2VkaW5nIFJFLgogICAge20sbn0/ICAgTm9uLWdyZWVkeSB2ZXJzaW9uIG9mIHRoZSBhYm92ZS4KICAgICJcXCIgICAgIEVpdGhlciBlc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBvciBzaWduYWxzIGEgc3BlY2lhbCBzZXF1ZW5jZS4KICAgIFtdICAgICAgIEluZGljYXRlcyBhIHNldCBvZiBjaGFyYWN0ZXJzLgogICAgICAgICAgICAgQSAiXiIgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbmRpY2F0ZXMgYSBjb21wbGVtZW50aW5nIHNldC4KICAgICJ8IiAgICAgIEF8QiwgY3JlYXRlcyBhbiBSRSB0aGF0IHdpbGwgbWF0Y2ggZWl0aGVyIEEgb3IgQi4KICAgICguLi4pICAgIE1hdGNoZXMgdGhlIFJFIGluc2lkZSB0aGUgcGFyZW50aGVzZXMuCiAgICAgICAgICAgICBUaGUgY29udGVudHMgY2FuIGJlIHJldHJpZXZlZCBvciBtYXRjaGVkIGxhdGVyIGluIHRoZSBzdHJpbmcuCiAgICAoP2FpTG1zdXgpIFRoZSBsZXR0ZXJzIHNldCB0aGUgY29ycmVzcG9uZGluZyBmbGFncyBkZWZpbmVkIGJlbG93LgogICAgKD86Li4uKSAgTm9uLWdyb3VwaW5nIHZlcnNpb24gb2YgcmVndWxhciBwYXJlbnRoZXNlcy4KICAgICg/UDxuYW1lPi4uLikgVGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IHRoZSBncm91cCBpcyBhY2Nlc3NpYmxlIGJ5IG5hbWUuCiAgICAoP1A9bmFtZSkgICAgIE1hdGNoZXMgdGhlIHRleHQgbWF0Y2hlZCBlYXJsaWVyIGJ5IHRoZSBncm91cCBuYW1lZCBuYW1lLgogICAgKD8jLi4uKSAgQSBjb21tZW50OyBpZ25vcmVkLgogICAgKD89Li4uKSAgTWF0Y2hlcyBpZiAuLi4gbWF0Y2hlcyBuZXh0LCBidXQgZG9lc24ndCBjb25zdW1lIHRoZSBzdHJpbmcuCiAgICAoPyEuLi4pICBNYXRjaGVzIGlmIC4uLiBkb2Vzbid0IG1hdGNoIG5leHQuCiAgICAoPzw9Li4uKSBNYXRjaGVzIGlmIHByZWNlZGVkIGJ5IC4uLiAobXVzdCBiZSBmaXhlZCBsZW5ndGgpLgogICAgKD88IS4uLikgTWF0Y2hlcyBpZiBub3QgcHJlY2VkZWQgYnkgLi4uIChtdXN0IGJlIGZpeGVkIGxlbmd0aCkuCiAgICAoPyhpZC9uYW1lKXllc3xubykgTWF0Y2hlcyB5ZXMgcGF0dGVybiBpZiB0aGUgZ3JvdXAgd2l0aCBpZC9uYW1lIG1hdGNoZWQsCiAgICAgICAgICAgICAgICAgICAgICAgdGhlIChvcHRpb25hbCkgbm8gcGF0dGVybiBvdGhlcndpc2UuCgpUaGUgc3BlY2lhbCBzZXF1ZW5jZXMgY29uc2lzdCBvZiAiXFwiIGFuZCBhIGNoYXJhY3RlciBmcm9tIHRoZSBsaXN0CmJlbG93LiAgSWYgdGhlIG9yZGluYXJ5IGNoYXJhY3RlciBpcyBub3Qgb24gdGhlIGxpc3QsIHRoZW4gdGhlCnJlc3VsdGluZyBSRSB3aWxsIG1hdGNoIHRoZSBzZWNvbmQgY2hhcmFjdGVyLgogICAgXG51bWJlciAgTWF0Y2hlcyB0aGUgY29udGVudHMgb2YgdGhlIGdyb3VwIG9mIHRoZSBzYW1lIG51bWJlci4KICAgIFxBICAgICAgIE1hdGNoZXMgb25seSBhdCB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZy4KICAgIFxaICAgICAgIE1hdGNoZXMgb25seSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCiAgICBcYiAgICAgICBNYXRjaGVzIHRoZSBlbXB0eSBzdHJpbmcsIGJ1dCBvbmx5IGF0IHRoZSBzdGFydCBvciBlbmQgb2YgYSB3b3JkLgogICAgXEIgICAgICAgTWF0Y2hlcyB0aGUgZW1wdHkgc3RyaW5nLCBidXQgbm90IGF0IHRoZSBzdGFydCBvciBlbmQgb2YgYSB3b3JkLgogICAgXGQgICAgICAgTWF0Y2hlcyBhbnkgZGVjaW1hbCBkaWdpdDsgZXF1aXZhbGVudCB0byB0aGUgc2V0IFswLTldIGluCiAgICAgICAgICAgICBieXRlcyBwYXR0ZXJucyBvciBzdHJpbmcgcGF0dGVybnMgd2l0aCB0aGUgQVNDSUkgZmxhZy4KICAgICAgICAgICAgIEluIHN0cmluZyBwYXR0ZXJucyB3aXRob3V0IHRoZSBBU0NJSSBmbGFnLCBpdCB3aWxsIG1hdGNoIHRoZSB3aG9sZQogICAgICAgICAgICAgcmFuZ2Ugb2YgVW5pY29kZSBkaWdpdHMuCiAgICBcRCAgICAgICBNYXRjaGVzIGFueSBub24tZGlnaXQgY2hhcmFjdGVyOyBlcXVpdmFsZW50IHRvIFteXGRdLgogICAgXHMgICAgICAgTWF0Y2hlcyBhbnkgd2hpdGVzcGFjZSBjaGFyYWN0ZXI7IGVxdWl2YWxlbnQgdG8gWyBcdFxuXHJcZlx2XSBpbgogICAgICAgICAgICAgYnl0ZXMgcGF0dGVybnMgb3Igc3RyaW5nIHBhdHRlcm5zIHdpdGggdGhlIEFTQ0lJIGZsYWcuCiAgICAgICAgICAgICBJbiBzdHJpbmcgcGF0dGVybnMgd2l0aG91dCB0aGUgQVNDSUkgZmxhZywgaXQgd2lsbCBtYXRjaCB0aGUgd2hvbGUKICAgICAgICAgICAgIHJhbmdlIG9mIFVuaWNvZGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgogICAgXFMgICAgICAgTWF0Y2hlcyBhbnkgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyOyBlcXVpdmFsZW50IHRvIFteXHNdLgogICAgXHcgICAgICAgTWF0Y2hlcyBhbnkgYWxwaGFudW1lcmljIGNoYXJhY3RlcjsgZXF1aXZhbGVudCB0byBbYS16QS1aMC05X10KICAgICAgICAgICAgIGluIGJ5dGVzIHBhdHRlcm5zIG9yIHN0cmluZyBwYXR0ZXJucyB3aXRoIHRoZSBBU0NJSSBmbGFnLgogICAgICAgICAgICAgSW4gc3RyaW5nIHBhdHRlcm5zIHdpdGhvdXQgdGhlIEFTQ0lJIGZsYWcsIGl0IHdpbGwgbWF0Y2ggdGhlCiAgICAgICAgICAgICByYW5nZSBvZiBVbmljb2RlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIChsZXR0ZXJzIHBsdXMgZGlnaXRzCiAgICAgICAgICAgICBwbHVzIHVuZGVyc2NvcmUpLgogICAgICAgICAgICAgV2l0aCBMT0NBTEUsIGl0IHdpbGwgbWF0Y2ggdGhlIHNldCBbMC05X10gcGx1cyBjaGFyYWN0ZXJzIGRlZmluZWQKICAgICAgICAgICAgIGFzIGxldHRlcnMgZm9yIHRoZSBjdXJyZW50IGxvY2FsZS4KICAgIFxXICAgICAgIE1hdGNoZXMgdGhlIGNvbXBsZW1lbnQgb2YgXHcuCiAgICBcXCAgICAgICBNYXRjaGVzIGEgbGl0ZXJhbCBiYWNrc2xhc2guCgpUaGlzIG1vZHVsZSBleHBvcnRzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogICAgbWF0Y2ggICAgIE1hdGNoIGEgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdG8gdGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZy4KICAgIGZ1bGxtYXRjaCBNYXRjaCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHRvIGFsbCBvZiBhIHN0cmluZy4KICAgIHNlYXJjaCAgICBTZWFyY2ggYSBzdHJpbmcgZm9yIHRoZSBwcmVzZW5jZSBvZiBhIHBhdHRlcm4uCiAgICBzdWIgICAgICAgU3Vic3RpdHV0ZSBvY2N1cnJlbmNlcyBvZiBhIHBhdHRlcm4gZm91bmQgaW4gYSBzdHJpbmcuCiAgICBzdWJuICAgICAgU2FtZSBhcyBzdWIsIGJ1dCBhbHNvIHJldHVybiB0aGUgbnVtYmVyIG9mIHN1YnN0aXR1dGlvbnMgbWFkZS4KICAgIHNwbGl0ICAgICBTcGxpdCBhIHN0cmluZyBieSB0aGUgb2NjdXJyZW5jZXMgb2YgYSBwYXR0ZXJuLgogICAgZmluZGFsbCAgIEZpbmQgYWxsIG9jY3VycmVuY2VzIG9mIGEgcGF0dGVybiBpbiBhIHN0cmluZy4KICAgIGZpbmRpdGVyICBSZXR1cm4gYW4gaXRlcmF0b3IgeWllbGRpbmcgYSBNYXRjaCBvYmplY3QgZm9yIGVhY2ggbWF0Y2guCiAgICBjb21waWxlICAgQ29tcGlsZSBhIHBhdHRlcm4gaW50byBhIFBhdHRlcm4gb2JqZWN0LgogICAgcHVyZ2UgICAgIENsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGUuCiAgICBlc2NhcGUgICAgQmFja3NsYXNoIGFsbCBub24tYWxwaGFudW1lcmljcyBpbiBhIHN0cmluZy4KCkVhY2ggZnVuY3Rpb24gb3RoZXIgdGhhbiBwdXJnZSBhbmQgZXNjYXBlIGNhbiB0YWtlIGFuIG9wdGlvbmFsICdmbGFncycgYXJndW1lbnQKY29uc2lzdGluZyBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIG1vZHVsZSBjb25zdGFudHMsIGpvaW5lZCBieSAifCIuCkEsIEwsIGFuZCBVIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCiAgICBBICBBU0NJSSAgICAgICBGb3Igc3RyaW5nIHBhdHRlcm5zLCBtYWtlIFx3LCBcVywgXGIsIFxCLCBcZCwgXEQKICAgICAgICAgICAgICAgICAgIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIEFTQ0lJIGNoYXJhY3RlciBjYXRlZ29yaWVzCiAgICAgICAgICAgICAgICAgICAocmF0aGVyIHRoYW4gdGhlIHdob2xlIFVuaWNvZGUgY2F0ZWdvcmllcywgd2hpY2ggaXMgdGhlCiAgICAgICAgICAgICAgICAgICBkZWZhdWx0KS4KICAgICAgICAgICAgICAgICAgIEZvciBieXRlcyBwYXR0ZXJucywgdGhpcyBmbGFnIGlzIHRoZSBvbmx5IGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgYmVoYXZpb3VyIGFuZCBuZWVkbid0IGJlIHNwZWNpZmllZC4KICAgIEkgIElHTk9SRUNBU0UgIFBlcmZvcm0gY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZy4KICAgIEwgIExPQ0FMRSAgICAgIE1ha2UgXHcsIFxXLCBcYiwgXEIsIGRlcGVuZGVudCBvbiB0aGUgY3VycmVudCBsb2NhbGUuCiAgICBNICBNVUxUSUxJTkUgICAiXiIgbWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIGxpbmVzIChhZnRlciBhIG5ld2xpbmUpCiAgICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIHRoZSBzdHJpbmcuCiAgICAgICAgICAgICAgICAgICAiJCIgbWF0Y2hlcyB0aGUgZW5kIG9mIGxpbmVzIChiZWZvcmUgYSBuZXdsaW5lKSBhcyB3ZWxsCiAgICAgICAgICAgICAgICAgICBhcyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCiAgICBTICBET1RBTEwgICAgICAiLiIgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIGF0IGFsbCwgaW5jbHVkaW5nIHRoZSBuZXdsaW5lLgogICAgWCAgVkVSQk9TRSAgICAgSWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzIGZvciBuaWNlciBsb29raW5nIFJFJ3MuCiAgICBVICBVTklDT0RFICAgICBGb3IgY29tcGF0aWJpbGl0eSBvbmx5LiBJZ25vcmVkIGZvciBzdHJpbmcgcGF0dGVybnMgKGl0CiAgICAgICAgICAgICAgICAgICBpcyB0aGUgZGVmYXVsdCksIGFuZCBmb3JiaWRkZW4gZm9yIGJ5dGVzIHBhdHRlcm5zLgoKVGhpcyBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGV4Y2VwdGlvbiAnZXJyb3InLgoKIiIiCgppbXBvcnQgZW51bQpmcm9tIC4gaW1wb3J0IF9jb21waWxlciwgX3BhcnNlcgppbXBvcnQgZnVuY3Rvb2xzCgoKIyBwdWJsaWMgc3ltYm9scwpfX2FsbF9fID0gWwogICAgIm1hdGNoIiwgImZ1bGxtYXRjaCIsICJzZWFyY2giLCAic3ViIiwgInN1Ym4iLCAic3BsaXQiLAogICAgImZpbmRhbGwiLCAiZmluZGl0ZXIiLCAiY29tcGlsZSIsICJwdXJnZSIsICJ0ZW1wbGF0ZSIsICJlc2NhcGUiLAogICAgImVycm9yIiwgIlBhdHRlcm4iLCAiTWF0Y2giLCAiQSIsICJJIiwgIkwiLCAiTSIsICJTIiwgIlgiLCAiVSIsCiAgICAiQVNDSUkiLCAiSUdOT1JFQ0FTRSIsICJMT0NBTEUiLCAiTVVMVElMSU5FIiwgIkRPVEFMTCIsICJWRVJCT1NFIiwKICAgICJVTklDT0RFIiwgIk5PRkxBRyIsICJSZWdleEZsYWciLApdCgpfX3ZlcnNpb25fXyA9ICIyLjIuMSIKCkBlbnVtLmdsb2JhbF9lbnVtCkBlbnVtLl9zaW1wbGVfZW51bShlbnVtLkludEZsYWcsIGJvdW5kYXJ5PWVudW0uS0VFUCkKY2xhc3MgUmVnZXhGbGFnOgogICAgTk9GTEFHID0gMAogICAgQVNDSUkgPSBBID0gX2NvbXBpbGVyLlNSRV9GTEFHX0FTQ0lJICMgYXNzdW1lIGFzY2lpICJsb2NhbGUiCiAgICBJR05PUkVDQVNFID0gSSA9IF9jb21waWxlci5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKICAgIExPQ0FMRSA9IEwgPSBfY29tcGlsZXIuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCiAgICBVTklDT0RFID0gVSA9IF9jb21waWxlci5TUkVfRkxBR19VTklDT0RFICMgYXNzdW1lIHVuaWNvZGUgImxvY2FsZSIKICAgIE1VTFRJTElORSA9IE0gPSBfY29tcGlsZXIuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKICAgIERPVEFMTCA9IFMgPSBfY29tcGlsZXIuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQogICAgVkVSQk9TRSA9IFggPSBfY29tcGlsZXIuU1JFX0ZMQUdfVkVSQk9TRSAjIGlnbm9yZSB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cwogICAgIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQogICAgVEVNUExBVEUgPSBUID0gX2NvbXBpbGVyLlNSRV9GTEFHX1RFTVBMQVRFICMgdW5rbm93biBwdXJwb3NlLCBkZXByZWNhdGVkCiAgICBERUJVRyA9IF9jb21waWxlci5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgogICAgX19zdHJfXyA9IG9iamVjdC5fX3N0cl9fCiAgICBfbnVtZXJpY19yZXByXyA9IGhleAoKIyBzcmUgZXhjZXB0aW9uCmVycm9yID0gX2NvbXBpbGVyLmVycm9yCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgcHVibGljIGludGVyZmFjZQoKZGVmIG1hdGNoKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCk6CiAgICAiIiJUcnkgdG8gYXBwbHkgdGhlIHBhdHRlcm4gYXQgdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcsIHJldHVybmluZwogICAgYSBNYXRjaCBvYmplY3QsIG9yIE5vbmUgaWYgbm8gbWF0Y2ggd2FzIGZvdW5kLiIiIgogICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKS5tYXRjaChzdHJpbmcpCgpkZWYgZnVsbG1hdGNoKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCk6CiAgICAiIiJUcnkgdG8gYXBwbHkgdGhlIHBhdHRlcm4gdG8gYWxsIG9mIHRoZSBzdHJpbmcsIHJldHVybmluZwogICAgYSBNYXRjaCBvYmplY3QsIG9yIE5vbmUgaWYgbm8gbWF0Y2ggd2FzIGZvdW5kLiIiIgogICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKS5mdWxsbWF0Y2goc3RyaW5nKQoKZGVmIHNlYXJjaChwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzPTApOgogICAgIiIiU2NhbiB0aHJvdWdoIHN0cmluZyBsb29raW5nIGZvciBhIG1hdGNoIHRvIHRoZSBwYXR0ZXJuLCByZXR1cm5pbmcKICAgIGEgTWF0Y2ggb2JqZWN0LCBvciBOb25lIGlmIG5vIG1hdGNoIHdhcyBmb3VuZC4iIiIKICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncykuc2VhcmNoKHN0cmluZykKCmRlZiBzdWIocGF0dGVybiwgcmVwbCwgc3RyaW5nLCBjb3VudD0wLCBmbGFncz0wKToKICAgICIiIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3QKICAgIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiB0aGUgcGF0dGVybiBpbiBzdHJpbmcgYnkgdGhlCiAgICByZXBsYWNlbWVudCByZXBsLiAgcmVwbCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgY2FsbGFibGU7CiAgICBpZiBhIHN0cmluZywgYmFja3NsYXNoIGVzY2FwZXMgaW4gaXQgYXJlIHByb2Nlc3NlZC4gIElmIGl0IGlzCiAgICBhIGNhbGxhYmxlLCBpdCdzIHBhc3NlZCB0aGUgTWF0Y2ggb2JqZWN0IGFuZCBtdXN0IHJldHVybgogICAgYSByZXBsYWNlbWVudCBzdHJpbmcgdG8gYmUgdXNlZC4iIiIKICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncykuc3ViKHJlcGwsIHN0cmluZywgY291bnQpCgpkZWYgc3VibihwYXR0ZXJuLCByZXBsLCBzdHJpbmcsIGNvdW50PTAsIGZsYWdzPTApOgogICAgIiIiUmV0dXJuIGEgMi10dXBsZSBjb250YWluaW5nIChuZXdfc3RyaW5nLCBudW1iZXIpLgogICAgbmV3X3N0cmluZyBpcyB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3QKICAgIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiB0aGUgcGF0dGVybiBpbiB0aGUgc291cmNlCiAgICBzdHJpbmcgYnkgdGhlIHJlcGxhY2VtZW50IHJlcGwuICBudW1iZXIgaXMgdGhlIG51bWJlciBvZgogICAgc3Vic3RpdHV0aW9ucyB0aGF0IHdlcmUgbWFkZS4gcmVwbCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEKICAgIGNhbGxhYmxlOyBpZiBhIHN0cmluZywgYmFja3NsYXNoIGVzY2FwZXMgaW4gaXQgYXJlIHByb2Nlc3NlZC4KICAgIElmIGl0IGlzIGEgY2FsbGFibGUsIGl0J3MgcGFzc2VkIHRoZSBNYXRjaCBvYmplY3QgYW5kIG11c3QKICAgIHJldHVybiBhIHJlcGxhY2VtZW50IHN0cmluZyB0byBiZSB1c2VkLiIiIgogICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKS5zdWJuKHJlcGwsIHN0cmluZywgY291bnQpCgpkZWYgc3BsaXQocGF0dGVybiwgc3RyaW5nLCBtYXhzcGxpdD0wLCBmbGFncz0wKToKICAgICIiIlNwbGl0IHRoZSBzb3VyY2Ugc3RyaW5nIGJ5IHRoZSBvY2N1cnJlbmNlcyBvZiB0aGUgcGF0dGVybiwKICAgIHJldHVybmluZyBhIGxpc3QgY29udGFpbmluZyB0aGUgcmVzdWx0aW5nIHN1YnN0cmluZ3MuICBJZgogICAgY2FwdHVyaW5nIHBhcmVudGhlc2VzIGFyZSB1c2VkIGluIHBhdHRlcm4sIHRoZW4gdGhlIHRleHQgb2YgYWxsCiAgICBncm91cHMgaW4gdGhlIHBhdHRlcm4gYXJlIGFsc28gcmV0dXJuZWQgYXMgcGFydCBvZiB0aGUgcmVzdWx0aW5nCiAgICBsaXN0LiAgSWYgbWF4c3BsaXQgaXMgbm9uemVybywgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgb2NjdXIsCiAgICBhbmQgdGhlIHJlbWFpbmRlciBvZiB0aGUgc3RyaW5nIGlzIHJldHVybmVkIGFzIHRoZSBmaW5hbCBlbGVtZW50CiAgICBvZiB0aGUgbGlzdC4iIiIKICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncykuc3BsaXQoc3RyaW5nLCBtYXhzcGxpdCkKCmRlZiBmaW5kYWxsKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCk6CiAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBpbiB0aGUgc3RyaW5nLgoKICAgIElmIG9uZSBvciBtb3JlIGNhcHR1cmluZyBncm91cHMgYXJlIHByZXNlbnQgaW4gdGhlIHBhdHRlcm4sIHJldHVybgogICAgYSBsaXN0IG9mIGdyb3VwczsgdGhpcyB3aWxsIGJlIGEgbGlzdCBvZiB0dXBsZXMgaWYgdGhlIHBhdHRlcm4KICAgIGhhcyBtb3JlIHRoYW4gb25lIGdyb3VwLgoKICAgIEVtcHR5IG1hdGNoZXMgYXJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuIiIiCiAgICByZXR1cm4gX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpLmZpbmRhbGwoc3RyaW5nKQoKZGVmIGZpbmRpdGVyKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCk6CiAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgaW4gdGhlCiAgICBzdHJpbmcuICBGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBNYXRjaCBvYmplY3QuCgogICAgRW1wdHkgbWF0Y2hlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC4iIiIKICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncykuZmluZGl0ZXIoc3RyaW5nKQoKZGVmIGNvbXBpbGUocGF0dGVybiwgZmxhZ3M9MCk6CiAgICAiQ29tcGlsZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLCByZXR1cm5pbmcgYSBQYXR0ZXJuIG9iamVjdC4iCiAgICByZXR1cm4gX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpCgpkZWYgcHVyZ2UoKToKICAgICJDbGVhciB0aGUgcmVndWxhciBleHByZXNzaW9uIGNhY2hlcyIKICAgIF9jYWNoZS5jbGVhcigpCiAgICBfY29tcGlsZV9yZXBsLmNhY2hlX2NsZWFyKCkKCmRlZiB0ZW1wbGF0ZShwYXR0ZXJuLCBmbGFncz0wKToKICAgICJDb21waWxlIGEgdGVtcGxhdGUgcGF0dGVybiwgcmV0dXJuaW5nIGEgUGF0dGVybiBvYmplY3QsIGRlcHJlY2F0ZWQiCiAgICBpbXBvcnQgd2FybmluZ3MKICAgIHdhcm5pbmdzLndhcm4oIlRoZSByZS50ZW1wbGF0ZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgIgogICAgICAgICAgICAgICAgICAiYXMgaXQgaXMgYW4gdW5kb2N1bWVudGVkIGZ1bmN0aW9uICIKICAgICAgICAgICAgICAgICAgIndpdGhvdXQgYW4gb2J2aW91cyBwdXJwb3NlLiAiCiAgICAgICAgICAgICAgICAgICJVc2UgcmUuY29tcGlsZSgpIGluc3RlYWQuIiwKICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKSAgIyB3YXJuIGp1c3Qgb25jZQogICAgICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFnc3xUKQoKIyBTUEVDSUFMX0NIQVJTCiMgY2xvc2luZyAnKScsICd9JyBhbmQgJ10nCiMgJy0nIChhIHJhbmdlIGluIGNoYXJhY3RlciBzZXQpCiMgJyYnLCAnficsIChleHRlbmRlZCBjaGFyYWN0ZXIgc2V0IG9wZXJhdGlvbnMpCiMgJyMnIChjb21tZW50KSBhbmQgV0hJVEVTUEFDRSAoaWdub3JlZCkgaW4gdmVyYm9zZSBtb2RlCl9zcGVjaWFsX2NoYXJzX21hcCA9IHtpOiAnXFwnICsgY2hyKGkpIGZvciBpIGluIGInKClbXXt9PyorLXxeJFxcLiZ+IyBcdFxuXHJcdlxmJ30KCmRlZiBlc2NhcGUocGF0dGVybik6CiAgICAiIiIKICAgIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuCiAgICAiIiIKICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgc3RyKToKICAgICAgICByZXR1cm4gcGF0dGVybi50cmFuc2xhdGUoX3NwZWNpYWxfY2hhcnNfbWFwKQogICAgZWxzZToKICAgICAgICBwYXR0ZXJuID0gc3RyKHBhdHRlcm4sICdsYXRpbjEnKQogICAgICAgIHJldHVybiBwYXR0ZXJuLnRyYW5zbGF0ZShfc3BlY2lhbF9jaGFyc19tYXApLmVuY29kZSgnbGF0aW4xJykKClBhdHRlcm4gPSB0eXBlKF9jb21waWxlci5jb21waWxlKCcnLCAwKSkKTWF0Y2ggPSB0eXBlKF9jb21waWxlci5jb21waWxlKCcnLCAwKS5tYXRjaCgnJykpCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgaW50ZXJuYWxzCgpfY2FjaGUgPSB7fSAgIyBvcmRlcmVkIQoKX01BWENBQ0hFID0gNTEyCmRlZiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncyk6CiAgICAjIGludGVybmFsOiBjb21waWxlIHBhdHRlcm4KICAgIGlmIGlzaW5zdGFuY2UoZmxhZ3MsIFJlZ2V4RmxhZyk6CiAgICAgICAgZmxhZ3MgPSBmbGFncy52YWx1ZQogICAgdHJ5OgogICAgICAgIHJldHVybiBfY2FjaGVbdHlwZShwYXR0ZXJuKSwgcGF0dGVybiwgZmxhZ3NdCiAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgcGFzcwogICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBQYXR0ZXJuKToKICAgICAgICBpZiBmbGFnczoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJjYW5ub3QgcHJvY2VzcyBmbGFncyBhcmd1bWVudCB3aXRoIGEgY29tcGlsZWQgcGF0dGVybiIpCiAgICAgICAgcmV0dXJuIHBhdHRlcm4KICAgIGlmIG5vdCBfY29tcGlsZXIuaXNzdHJpbmcocGF0dGVybik6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaXJzdCBhcmd1bWVudCBtdXN0IGJlIHN0cmluZyBvciBjb21waWxlZCBwYXR0ZXJuIikKICAgIGlmIGZsYWdzICYgVDoKICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgcmUuVEVNUExBVEUvcmUuVCBmbGFnIGlzIGRlcHJlY2F0ZWQgIgogICAgICAgICAgICAgICAgICAiYXMgaXQgaXMgYW4gdW5kb2N1bWVudGVkIGZsYWcgIgogICAgICAgICAgICAgICAgICAid2l0aG91dCBhbiBvYnZpb3VzIHB1cnBvc2UuICIKICAgICAgICAgICAgICAgICAgIkRvbid0IHVzZSBpdC4iLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICBwID0gX2NvbXBpbGVyLmNvbXBpbGUocGF0dGVybiwgZmxhZ3MpCiAgICBpZiBub3QgKGZsYWdzICYgREVCVUcpOgogICAgICAgIGlmIGxlbihfY2FjaGUpID49IF9NQVhDQUNIRToKICAgICAgICAgICAgIyBEcm9wIHRoZSBvbGRlc3QgaXRlbQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBkZWwgX2NhY2hlW25leHQoaXRlcihfY2FjaGUpKV0KICAgICAgICAgICAgZXhjZXB0IChTdG9wSXRlcmF0aW9uLCBSdW50aW1lRXJyb3IsIEtleUVycm9yKToKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICBfY2FjaGVbdHlwZShwYXR0ZXJuKSwgcGF0dGVybiwgZmxhZ3NdID0gcAogICAgcmV0dXJuIHAKCkBmdW5jdG9vbHMubHJ1X2NhY2hlKF9NQVhDQUNIRSkKZGVmIF9jb21waWxlX3JlcGwocmVwbCwgcGF0dGVybik6CiAgICAjIGludGVybmFsOiBjb21waWxlIHJlcGxhY2VtZW50IHBhdHRlcm4KICAgIHJldHVybiBfcGFyc2VyLnBhcnNlX3RlbXBsYXRlKHJlcGwsIHBhdHRlcm4pCgpkZWYgX2V4cGFuZChwYXR0ZXJuLCBtYXRjaCwgdGVtcGxhdGUpOgogICAgIyBpbnRlcm5hbDogTWF0Y2guZXhwYW5kIGltcGxlbWVudGF0aW9uIGhvb2sKICAgIHRlbXBsYXRlID0gX3BhcnNlci5wYXJzZV90ZW1wbGF0ZSh0ZW1wbGF0ZSwgcGF0dGVybikKICAgIHJldHVybiBfcGFyc2VyLmV4cGFuZF90ZW1wbGF0ZSh0ZW1wbGF0ZSwgbWF0Y2gpCgpkZWYgX3N1YngocGF0dGVybiwgdGVtcGxhdGUpOgogICAgIyBpbnRlcm5hbDogUGF0dGVybi5zdWIvc3VibiBpbXBsZW1lbnRhdGlvbiBoZWxwZXIKICAgIHRlbXBsYXRlID0gX2NvbXBpbGVfcmVwbCh0ZW1wbGF0ZSwgcGF0dGVybikKICAgIGlmIG5vdCB0ZW1wbGF0ZVswXSBhbmQgbGVuKHRlbXBsYXRlWzFdKSA9PSAxOgogICAgICAgICMgbGl0ZXJhbCByZXBsYWNlbWVudAogICAgICAgIHJldHVybiB0ZW1wbGF0ZVsxXVswXQogICAgZGVmIGZpbHRlcihtYXRjaCwgdGVtcGxhdGU9dGVtcGxhdGUpOgogICAgICAgIHJldHVybiBfcGFyc2VyLmV4cGFuZF90ZW1wbGF0ZSh0ZW1wbGF0ZSwgbWF0Y2gpCiAgICByZXR1cm4gZmlsdGVyCgojIHJlZ2lzdGVyIG15c2VsZiBmb3IgcGlja2xpbmcKCmltcG9ydCBjb3B5cmVnCgpkZWYgX3BpY2tsZShwKToKICAgIHJldHVybiBfY29tcGlsZSwgKHAucGF0dGVybiwgcC5mbGFncykKCmNvcHlyZWcucGlja2xlKFBhdHRlcm4sIF9waWNrbGUsIF9jb21waWxlKQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGV4cGVyaW1lbnRhbCBzdHVmZiAoc2VlIHB5dGhvbi1kZXYgZGlzY3Vzc2lvbnMgZm9yIGRldGFpbHMpCgpjbGFzcyBTY2FubmVyOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxleGljb24sIGZsYWdzPTApOgogICAgICAgIGZyb20gLl9jb25zdGFudHMgaW1wb3J0IEJSQU5DSCwgU1VCUEFUVEVSTgogICAgICAgIGlmIGlzaW5zdGFuY2UoZmxhZ3MsIFJlZ2V4RmxhZyk6CiAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MudmFsdWUKICAgICAgICBzZWxmLmxleGljb24gPSBsZXhpY29uCiAgICAgICAgIyBjb21iaW5lIHBocmFzZXMgaW50byBhIGNvbXBvdW5kIHBhdHRlcm4KICAgICAgICBwID0gW10KICAgICAgICBzID0gX3BhcnNlci5TdGF0ZSgpCiAgICAgICAgcy5mbGFncyA9IGZsYWdzCiAgICAgICAgZm9yIHBocmFzZSwgYWN0aW9uIGluIGxleGljb246CiAgICAgICAgICAgIGdpZCA9IHMub3Blbmdyb3VwKCkKICAgICAgICAgICAgcC5hcHBlbmQoX3BhcnNlci5TdWJQYXR0ZXJuKHMsIFsKICAgICAgICAgICAgICAgIChTVUJQQVRURVJOLCAoZ2lkLCAwLCAwLCBfcGFyc2VyLnBhcnNlKHBocmFzZSwgZmxhZ3MpKSksCiAgICAgICAgICAgICAgICBdKSkKICAgICAgICAgICAgcy5jbG9zZWdyb3VwKGdpZCwgcFstMV0pCiAgICAgICAgcCA9IF9wYXJzZXIuU3ViUGF0dGVybihzLCBbKEJSQU5DSCwgKE5vbmUsIHApKV0pCiAgICAgICAgc2VsZi5zY2FubmVyID0gX2NvbXBpbGVyLmNvbXBpbGUocCkKICAgIGRlZiBzY2FuKHNlbGYsIHN0cmluZyk6CiAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICBhcHBlbmQgPSByZXN1bHQuYXBwZW5kCiAgICAgICAgbWF0Y2ggPSBzZWxmLnNjYW5uZXIuc2Nhbm5lcihzdHJpbmcpLm1hdGNoCiAgICAgICAgaSA9IDAKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBtID0gbWF0Y2goKQogICAgICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGogPSBtLmVuZCgpCiAgICAgICAgICAgIGlmIGkgPT0gajoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGFjdGlvbiA9IHNlbGYubGV4aWNvblttLmxhc3RpbmRleC0xXVsxXQogICAgICAgICAgICBpZiBjYWxsYWJsZShhY3Rpb24pOgogICAgICAgICAgICAgICAgc2VsZi5tYXRjaCA9IG0KICAgICAgICAgICAgICAgIGFjdGlvbiA9IGFjdGlvbihzZWxmLCBtLmdyb3VwKCkpCiAgICAgICAgICAgIGlmIGFjdGlvbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGFwcGVuZChhY3Rpb24pCiAgICAgICAgICAgIGkgPSBqCiAgICAgICAgcmV0dXJuIHJlc3VsdCwgc3RyaW5nW2k6XQpQSwMEFAAAAAAAAyCjVgM+oCtGFQAARhUAAA4AAAByZS9fY2FzZWZpeC5weSMgQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9yZV9jYXNlZml4LnB5LgoKIyBNYXBzIHRoZSBjb2RlIG9mIGxvd2VyY2FzZWQgY2hhcmFjdGVyIHRvIGNvZGVzIG9mIGRpZmZlcmVudCBsb3dlcmNhc2VkCiMgY2hhcmFjdGVycyB3aGljaCBoYXZlIHRoZSBzYW1lIHVwcGVyY2FzZS4KX0VYVFJBX0NBU0VTID0gewogICAgIyBMQVRJTiBTTUFMTCBMRVRURVIgSTogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSQogICAgMHgwMDY5OiAoMHgwMTMxLCksICMgJ2knOiAnxLEnCiAgICAjIExBVElOIFNNQUxMIExFVFRFUiBTOiBMQVRJTiBTTUFMTCBMRVRURVIgTE9ORyBTCiAgICAweDAwNzM6ICgweDAxN2YsKSwgIyAncyc6ICfFvycKICAgICMgTUlDUk8gU0lHTjogR1JFRUsgU01BTEwgTEVUVEVSIE1VCiAgICAweDAwYjU6ICgweDAzYmMsKSwgIyAnwrUnOiAnzrwnCiAgICAjIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEk6IExBVElOIFNNQUxMIExFVFRFUiBJCiAgICAweDAxMzE6ICgweDAwNjksKSwgIyAnxLEnOiAnaScKICAgICMgTEFUSU4gU01BTEwgTEVUVEVSIExPTkcgUzogTEFUSU4gU01BTEwgTEVUVEVSIFMKICAgIDB4MDE3ZjogKDB4MDA3MywpLCAjICfFvyc6ICdzJwogICAgIyBDT01CSU5JTkcgR1JFRUsgWVBPR0VHUkFNTUVOSTogR1JFRUsgU01BTEwgTEVUVEVSIElPVEEsIEdSRUVLIFBST1NHRUdSQU1NRU5JCiAgICAweDAzNDU6ICgweDAzYjksIDB4MWZiZSksICMgJ1x1MDM0NSc6ICfOueG+vicKICAgICMgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TOiBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgT1hJQQogICAgMHgwMzkwOiAoMHgxZmQzLCksICMgJ86QJzogJ+G/kycKICAgICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TOiBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgT1hJQQogICAgMHgwM2IwOiAoMHgxZmUzLCksICMgJ86wJzogJ+G/oycKICAgICMgR1JFRUsgU01BTEwgTEVUVEVSIEJFVEE6IEdSRUVLIEJFVEEgU1lNQk9MCiAgICAweDAzYjI6ICgweDAzZDAsKSwgIyAnzrInOiAnz5AnCiAgICAjIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OOiBHUkVFSyBMVU5BVEUgRVBTSUxPTiBTWU1CT0wKICAgIDB4MDNiNTogKDB4MDNmNSwpLCAjICfOtSc6ICfPtScKICAgICMgR1JFRUsgU01BTEwgTEVUVEVSIFRIRVRBOiBHUkVFSyBUSEVUQSBTWU1CT0wKICAgIDB4MDNiODogKDB4MDNkMSwpLCAjICfOuCc6ICfPkScKICAgICMgR1JFRUsgU01BTEwgTEVUVEVSIElPVEE6IENPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JLCBHUkVFSyBQUk9TR0VHUkFNTUVOSQogICAgMHgwM2I5OiAoMHgwMzQ1LCAweDFmYmUpLCAjICfOuSc6ICdcdTAzNDXhvr4nCiAgICAjIEdSRUVLIFNNQUxMIExFVFRFUiBLQVBQQTogR1JFRUsgS0FQUEEgU1lNQk9MCiAgICAweDAzYmE6ICgweDAzZjAsKSwgIyAnzronOiAnz7AnCiAgICAjIEdSRUVLIFNNQUxMIExFVFRFUiBNVTogTUlDUk8gU0lHTgogICAgMHgwM2JjOiAoMHgwMGI1LCksICMgJ868JzogJ8K1JwogICAgIyBHUkVFSyBTTUFMTCBMRVRURVIgUEk6IEdSRUVLIFBJIFNZTUJPTAogICAgMHgwM2MwOiAoMHgwM2Q2LCksICMgJ8+AJzogJ8+WJwogICAgIyBHUkVFSyBTTUFMTCBMRVRURVIgUkhPOiBHUkVFSyBSSE8gU1lNQk9MCiAgICAweDAzYzE6ICgweDAzZjEsKSwgIyAnz4EnOiAnz7EnCiAgICAjIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQTogR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiAgICAweDAzYzI6ICgweDAzYzMsKSwgIyAnz4InOiAnz4MnCiAgICAjIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQTogR1JFRUsgU01BTEwgTEVUVEVSIEZJTkFMIFNJR01BCiAgICAweDAzYzM6ICgweDAzYzIsKSwgIyAnz4MnOiAnz4InCiAgICAjIEdSRUVLIFNNQUxMIExFVFRFUiBQSEk6IEdSRUVLIFBISSBTWU1CT0wKICAgIDB4MDNjNjogKDB4MDNkNSwpLCAjICfPhic6ICfPlScKICAgICMgR1JFRUsgQkVUQSBTWU1CT0w6IEdSRUVLIFNNQUxMIExFVFRFUiBCRVRBCiAgICAweDAzZDA6ICgweDAzYjIsKSwgIyAnz5AnOiAnzrInCiAgICAjIEdSRUVLIFRIRVRBIFNZTUJPTDogR1JFRUsgU01BTEwgTEVUVEVSIFRIRVRBCiAgICAweDAzZDE6ICgweDAzYjgsKSwgIyAnz5EnOiAnzrgnCiAgICAjIEdSRUVLIFBISSBTWU1CT0w6IEdSRUVLIFNNQUxMIExFVFRFUiBQSEkKICAgIDB4MDNkNTogKDB4MDNjNiwpLCAjICfPlSc6ICfPhicKICAgICMgR1JFRUsgUEkgU1lNQk9MOiBHUkVFSyBTTUFMTCBMRVRURVIgUEkKICAgIDB4MDNkNjogKDB4MDNjMCwpLCAjICfPlic6ICfPgCcKICAgICMgR1JFRUsgS0FQUEEgU1lNQk9MOiBHUkVFSyBTTUFMTCBMRVRURVIgS0FQUEEKICAgIDB4MDNmMDogKDB4MDNiYSwpLCAjICfPsCc6ICfOuicKICAgICMgR1JFRUsgUkhPIFNZTUJPTDogR1JFRUsgU01BTEwgTEVUVEVSIFJITwogICAgMHgwM2YxOiAoMHgwM2MxLCksICMgJ8+xJzogJ8+BJwogICAgIyBHUkVFSyBMVU5BVEUgRVBTSUxPTiBTWU1CT0w6IEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OCiAgICAweDAzZjU6ICgweDAzYjUsKSwgIyAnz7UnOiAnzrUnCiAgICAjIENZUklMTElDIFNNQUxMIExFVFRFUiBWRTogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFJPVU5ERUQgVkUKICAgIDB4MDQzMjogKDB4MWM4MCwpLCAjICfQsic6ICfhsoAnCiAgICAjIENZUklMTElDIFNNQUxMIExFVFRFUiBERTogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIExPTkctTEVHR0VEIERFCiAgICAweDA0MzQ6ICgweDFjODEsKSwgIyAn0LQnOiAn4bKBJwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTzogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE5BUlJPVyBPCiAgICAweDA0M2U6ICgweDFjODIsKSwgIyAn0L4nOiAn4bKCJwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVM6IENZUklMTElDIFNNQUxMIExFVFRFUiBXSURFIEVTCiAgICAweDA0NDE6ICgweDFjODMsKSwgIyAn0YEnOiAn4bKDJwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEU6IENZUklMTElDIFNNQUxMIExFVFRFUiBUQUxMIFRFLCBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEhSRUUtTEVHR0VEIFRFCiAgICAweDA0NDI6ICgweDFjODQsIDB4MWM4NSksICMgJ9GCJzogJ+GyhOGyhScKICAgICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTjogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRBTEwgSEFSRCBTSUdOCiAgICAweDA0NGE6ICgweDFjODYsKSwgIyAn0YonOiAn4bKGJwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUFUOiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEFMTCBZQVQKICAgIDB4MDQ2MzogKDB4MWM4NywpLCAjICfRoyc6ICfhsocnCiAgICAjIENZUklMTElDIFNNQUxMIExFVFRFUiBST1VOREVEIFZFOiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKICAgIDB4MWM4MDogKDB4MDQzMiwpLCAjICfhsoAnOiAn0LInCiAgICAjIENZUklMTElDIFNNQUxMIExFVFRFUiBMT05HLUxFR0dFRCBERTogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCiAgICAweDFjODE6ICgweDA0MzQsKSwgIyAn4bKBJzogJ9C0JwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTkFSUk9XIE86IENZUklMTElDIFNNQUxMIExFVFRFUiBPCiAgICAweDFjODI6ICgweDA0M2UsKSwgIyAn4bKCJzogJ9C+JwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgV0lERSBFUzogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCiAgICAweDFjODM6ICgweDA0NDEsKSwgIyAn4bKDJzogJ9GBJwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEFMTCBURTogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFLCBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEhSRUUtTEVHR0VEIFRFCiAgICAweDFjODQ6ICgweDA0NDIsIDB4MWM4NSksICMgJ+GyhCc6ICfRguGyhScKICAgICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRIUkVFLUxFR0dFRCBURTogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFLCBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEFMTCBURQogICAgMHgxYzg1OiAoMHgwNDQyLCAweDFjODQpLCAjICfhsoUnOiAn0YLhsoQnCiAgICAjIENZUklMTElDIFNNQUxMIExFVFRFUiBUQUxMIEhBUkQgU0lHTjogQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgogICAgMHgxYzg2OiAoMHgwNDRhLCksICMgJ+Gyhic6ICfRiicKICAgICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRBTEwgWUFUOiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUFUCiAgICAweDFjODc6ICgweDA0NjMsKSwgIyAn4bKHJzogJ9GjJwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVU5CTEVOREVEIFVLOiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTU9OT0dSQVBIIFVLCiAgICAweDFjODg6ICgweGE2NGIsKSwgIyAn4bKIJzogJ+qZiycKICAgICMgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBET1QgQUJPVkU6IExBVElOIFNNQUxMIExFVFRFUiBMT05HIFMgV0lUSCBET1QgQUJPVkUKICAgIDB4MWU2MTogKDB4MWU5YiwpLCAjICfhuaEnOiAn4bqbJwogICAgIyBMQVRJTiBTTUFMTCBMRVRURVIgTE9ORyBTIFdJVEggRE9UIEFCT1ZFOiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBBQk9WRQogICAgMHgxZTliOiAoMHgxZTYxLCksICMgJ+G6myc6ICfhuaEnCiAgICAjIEdSRUVLIFBST1NHRUdSQU1NRU5JOiBDT01CSU5JTkcgR1JFRUsgWVBPR0VHUkFNTUVOSSwgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEKICAgIDB4MWZiZTogKDB4MDM0NSwgMHgwM2I5KSwgIyAn4b6+JzogJ1x1MDM0Nc65JwogICAgIyBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgT1hJQTogR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TCiAgICAweDFmZDM6ICgweDAzOTAsKSwgIyAn4b+TJzogJ86QJwogICAgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgT1hJQTogR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TCiAgICAweDFmZTM6ICgweDAzYjAsKSwgIyAn4b+jJzogJ86wJwogICAgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTU9OT0dSQVBIIFVLOiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVU5CTEVOREVEIFVLCiAgICAweGE2NGI6ICgweDFjODgsKSwgIyAn6pmLJzogJ+GyiCcKICAgICMgTEFUSU4gU01BTEwgTElHQVRVUkUgTE9ORyBTIFQ6IExBVElOIFNNQUxMIExJR0FUVVJFIFNUCiAgICAweGZiMDU6ICgweGZiMDYsKSwgIyAn76yFJzogJ++shicKICAgICMgTEFUSU4gU01BTEwgTElHQVRVUkUgU1Q6IExBVElOIFNNQUxMIExJR0FUVVJFIExPTkcgUyBUCiAgICAweGZiMDY6ICgweGZiMDUsKSwgIyAn76yGJzogJ++shScKfQpQSwMEFAAAAAAAAyCjVokX+AKdZQAAnWUAAA8AAAByZS9fY29tcGlsZXIucHkjCiMgU2VjcmV0IExhYnMnIFJlZ3VsYXIgRXhwcmVzc2lvbiBFbmdpbmUKIwojIGNvbnZlcnQgdGVtcGxhdGUgdG8gaW50ZXJuYWwgZm9ybWF0CiMKIyBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMSBieSBTZWNyZXQgTGFicyBBQi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBTZWUgdGhlIF9faW5pdF9fLnB5IGZpbGUgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGFuZCByZWRpc3RyaWJ1dGlvbi4KIwoKIiIiSW50ZXJuYWwgc3VwcG9ydCBtb2R1bGUgZm9yIHNyZSIiIgoKaW1wb3J0IF9zcmUKZnJvbSAuIGltcG9ydCBfcGFyc2VyCmZyb20gLl9jb25zdGFudHMgaW1wb3J0ICoKZnJvbSAuX2Nhc2VmaXggaW1wb3J0IF9FWFRSQV9DQVNFUwoKYXNzZXJ0IF9zcmUuTUFHSUMgPT0gTUFHSUMsICJTUkUgbW9kdWxlIG1pc21hdGNoIgoKX0xJVEVSQUxfQ09ERVMgPSB7TElURVJBTCwgTk9UX0xJVEVSQUx9Cl9TVUNDRVNTX0NPREVTID0ge1NVQ0NFU1MsIEZBSUxVUkV9Cl9BU1NFUlRfQ09ERVMgPSB7QVNTRVJULCBBU1NFUlRfTk9UfQpfVU5JVF9DT0RFUyA9IF9MSVRFUkFMX0NPREVTIHwge0FOWSwgSU59CgpfUkVQRUFUSU5HX0NPREVTID0gewogICAgTUlOX1JFUEVBVDogKFJFUEVBVCwgTUlOX1VOVElMLCBNSU5fUkVQRUFUX09ORSksCiAgICBNQVhfUkVQRUFUOiAoUkVQRUFULCBNQVhfVU5USUwsIFJFUEVBVF9PTkUpLAogICAgUE9TU0VTU0lWRV9SRVBFQVQ6IChQT1NTRVNTSVZFX1JFUEVBVCwgU1VDQ0VTUywgUE9TU0VTU0lWRV9SRVBFQVRfT05FKSwKfQoKZGVmIF9jb21iaW5lX2ZsYWdzKGZsYWdzLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywKICAgICAgICAgICAgICAgICAgIFRZUEVfRkxBR1M9X3BhcnNlci5UWVBFX0ZMQUdTKToKICAgIGlmIGFkZF9mbGFncyAmIFRZUEVfRkxBR1M6CiAgICAgICAgZmxhZ3MgJj0gflRZUEVfRkxBR1MKICAgIHJldHVybiAoZmxhZ3MgfCBhZGRfZmxhZ3MpICYgfmRlbF9mbGFncwoKZGVmIF9jb21waWxlKGNvZGUsIHBhdHRlcm4sIGZsYWdzKToKICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgYSAoc3ViKXBhdHRlcm4KICAgIGVtaXQgPSBjb2RlLmFwcGVuZAogICAgX2xlbiA9IGxlbgogICAgTElURVJBTF9DT0RFUyA9IF9MSVRFUkFMX0NPREVTCiAgICBSRVBFQVRJTkdfQ09ERVMgPSBfUkVQRUFUSU5HX0NPREVTCiAgICBTVUNDRVNTX0NPREVTID0gX1NVQ0NFU1NfQ09ERVMKICAgIEFTU0VSVF9DT0RFUyA9IF9BU1NFUlRfQ09ERVMKICAgIGlzY2FzZWQgPSBOb25lCiAgICB0b2xvd2VyID0gTm9uZQogICAgZml4ZXMgPSBOb25lCiAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UgYW5kIG5vdCBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgICAgIGlzY2FzZWQgPSBfc3JlLnVuaWNvZGVfaXNjYXNlZAogICAgICAgICAgICB0b2xvd2VyID0gX3NyZS51bmljb2RlX3RvbG93ZXIKICAgICAgICAgICAgZml4ZXMgPSBfRVhUUkFfQ0FTRVMKICAgICAgICBlbHNlOgogICAgICAgICAgICBpc2Nhc2VkID0gX3NyZS5hc2NpaV9pc2Nhc2VkCiAgICAgICAgICAgIHRvbG93ZXIgPSBfc3JlLmFzY2lpX3RvbG93ZXIKICAgIGZvciBvcCwgYXYgaW4gcGF0dGVybjoKICAgICAgICBpZiBvcCBpbiBMSVRFUkFMX0NPREVTOgogICAgICAgICAgICBpZiBub3QgZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFOgogICAgICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICBlbWl0KE9QX0xPQ0FMRV9JR05PUkVbb3BdKQogICAgICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgICAgZWxpZiBub3QgaXNjYXNlZChhdik6CiAgICAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGxvID0gdG9sb3dlcihhdikKICAgICAgICAgICAgICAgIGlmIG5vdCBmaXhlczogICMgYXNjaWkKICAgICAgICAgICAgICAgICAgICBlbWl0KE9QX0lHTk9SRVtvcF0pCiAgICAgICAgICAgICAgICAgICAgZW1pdChsbykKICAgICAgICAgICAgICAgIGVsaWYgbG8gbm90IGluIGZpeGVzOgogICAgICAgICAgICAgICAgICAgIGVtaXQoT1BfVU5JQ09ERV9JR05PUkVbb3BdKQogICAgICAgICAgICAgICAgICAgIGVtaXQobG8pCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGVtaXQoSU5fVU5JX0lHTk9SRSkKICAgICAgICAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgICAgIGlmIG9wIGlzIE5PVF9MSVRFUkFMOgogICAgICAgICAgICAgICAgICAgICAgICBlbWl0KE5FR0FURSkKICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiAobG8sKSArIGZpeGVzW2xvXToKICAgICAgICAgICAgICAgICAgICAgICAgZW1pdChMSVRFUkFMKQogICAgICAgICAgICAgICAgICAgICAgICBlbWl0KGspCiAgICAgICAgICAgICAgICAgICAgZW1pdChGQUlMVVJFKQogICAgICAgICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgIGVsaWYgb3AgaXMgSU46CiAgICAgICAgICAgIGNoYXJzZXQsIGhhc2Nhc2VkID0gX29wdGltaXplX2NoYXJzZXQoYXYsIGlzY2FzZWQsIHRvbG93ZXIsIGZpeGVzKQogICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UgYW5kIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgZW1pdChJTl9MT0NfSUdOT1JFKQogICAgICAgICAgICBlbGlmIG5vdCBoYXNjYXNlZDoKICAgICAgICAgICAgICAgIGVtaXQoSU4pCiAgICAgICAgICAgIGVsaWYgbm90IGZpeGVzOiAgIyBhc2NpaQogICAgICAgICAgICAgICAgZW1pdChJTl9JR05PUkUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbWl0KElOX1VOSV9JR05PUkUpCiAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgIF9jb21waWxlX2NoYXJzZXQoY2hhcnNldCwgZmxhZ3MsIGNvZGUpCiAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgIGVsaWYgb3AgaXMgQU5ZOgogICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RPVEFMTDoKICAgICAgICAgICAgICAgIGVtaXQoQU5ZX0FMTCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVtaXQoQU5ZKQogICAgICAgIGVsaWYgb3AgaW4gUkVQRUFUSU5HX0NPREVTOgogICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1RFTVBMQVRFOgogICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCB0ZW1wbGF0ZSBvcGVyYXRvciAlciIgJSAob3AsKSkKICAgICAgICAgICAgaWYgX3NpbXBsZShhdlsyXSk6CiAgICAgICAgICAgICAgICBlbWl0KFJFUEVBVElOR19DT0RFU1tvcF1bMl0pCiAgICAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgZW1pdChhdlswXSkKICAgICAgICAgICAgICAgIGVtaXQoYXZbMV0pCiAgICAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsyXSwgZmxhZ3MpCiAgICAgICAgICAgICAgICBlbWl0KFNVQ0NFU1MpCiAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVtaXQoUkVQRUFUSU5HX0NPREVTW29wXVswXSkKICAgICAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICBlbWl0KGF2WzBdKQogICAgICAgICAgICAgICAgZW1pdChhdlsxXSkKICAgICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzJdLCBmbGFncykKICAgICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICAgICAgICAgZW1pdChSRVBFQVRJTkdfQ09ERVNbb3BdWzFdKQogICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKICAgICAgICAgICAgaWYgZ3JvdXA6CiAgICAgICAgICAgICAgICBlbWl0KE1BUkspCiAgICAgICAgICAgICAgICBlbWl0KChncm91cC0xKSoyKQogICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgcCwgX2NvbWJpbmVfZmxhZ3MoZmxhZ3MsIGFkZF9mbGFncywgZGVsX2ZsYWdzKSkKICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgcCwgX2NvbWJpbmVfZmxhZ3MoZmxhZ3MsIGFkZF9mbGFncywgZGVsX2ZsYWdzKSkKICAgICAgICAgICAgaWYgZ3JvdXA6CiAgICAgICAgICAgICAgICBlbWl0KE1BUkspCiAgICAgICAgICAgICAgICBlbWl0KChncm91cC0xKSoyKzEpCiAgICAgICAgZWxpZiBvcCBpcyBBVE9NSUNfR1JPVVA6CiAgICAgICAgICAgICMgQXRvbWljIEdyb3VwcyBhcmUgaGFuZGxlZCBieSBzdGFydGluZyB3aXRoIGFuIEF0b21pYwogICAgICAgICAgICAjIEdyb3VwIG9wIGNvZGUsIHRoZW4gcHV0dGluZyBpbiB0aGUgYXRvbWljIGdyb3VwIHBhdHRlcm4KICAgICAgICAgICAgIyBhbmQgZmluYWxseSBhIHN1Y2Nlc3Mgb3AgY29kZSB0byB0ZWxsIGFueSByZXBlYXQKICAgICAgICAgICAgIyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgQXRvbWljIEdyb3VwIHRvIHN0b3AgZWF0aW5nIGFuZAogICAgICAgICAgICAjIHBvcCB0aGVpciBzdGFjayBpZiB0aGV5IHJlYWNoIGl0CiAgICAgICAgICAgIGVtaXQoQVRPTUlDX0dST1VQKQogICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdiwgZmxhZ3MpCiAgICAgICAgICAgIGVtaXQoU1VDQ0VTUykKICAgICAgICAgICAgY29kZVtza2lwXSA9IF9sZW4oY29kZSkgLSBza2lwCiAgICAgICAgZWxpZiBvcCBpbiBTVUNDRVNTX0NPREVTOgogICAgICAgICAgICBlbWl0KG9wKQogICAgICAgIGVsaWYgb3AgaW4gQVNTRVJUX0NPREVTOgogICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICBpZiBhdlswXSA+PSAwOgogICAgICAgICAgICAgICAgZW1pdCgwKSAjIGxvb2sgYWhlYWQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGxvLCBoaSA9IGF2WzFdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgIGlmIGxvICE9IGhpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJsb29rLWJlaGluZCByZXF1aXJlcyBmaXhlZC13aWR0aCBwYXR0ZXJuIikKICAgICAgICAgICAgICAgIGVtaXQobG8pICMgbG9vayBiZWhpbmQKICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMV0sIGZsYWdzKQogICAgICAgICAgICBlbWl0KFNVQ0NFU1MpCiAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgIGVsaWYgb3AgaXMgQVQ6CiAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTVVMVElMSU5FOgogICAgICAgICAgICAgICAgYXYgPSBBVF9NVUxUSUxJTkUuZ2V0KGF2LCBhdikKICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICBhdiA9IEFUX0xPQ0FMRS5nZXQoYXYsIGF2KQogICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgICAgIGF2ID0gQVRfVU5JQ09ERS5nZXQoYXYsIGF2KQogICAgICAgICAgICBlbWl0KGF2KQogICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgogICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICB0YWlsID0gW10KICAgICAgICAgICAgdGFpbGFwcGVuZCA9IHRhaWwuYXBwZW5kCiAgICAgICAgICAgIGZvciBhdiBpbiBhdlsxXToKICAgICAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgYXYsIGZsYWdzKQogICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXYsIGZsYWdzKQogICAgICAgICAgICAgICAgZW1pdChKVU1QKQogICAgICAgICAgICAgICAgdGFpbGFwcGVuZChfbGVuKGNvZGUpKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgY29kZVtza2lwXSA9IF9sZW4oY29kZSkgLSBza2lwCiAgICAgICAgICAgIGVtaXQoRkFJTFVSRSkgIyBlbmQgb2YgYnJhbmNoCiAgICAgICAgICAgIGZvciB0YWlsIGluIHRhaWw6CiAgICAgICAgICAgICAgICBjb2RlW3RhaWxdID0gX2xlbihjb2RlKSAtIHRhaWwKICAgICAgICBlbGlmIG9wIGlzIENBVEVHT1JZOgogICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgIGF2ID0gQ0hfTE9DQUxFW2F2XQogICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgICAgIGF2ID0gQ0hfVU5JQ09ERVthdl0KICAgICAgICAgICAgZW1pdChhdikKICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGOgogICAgICAgICAgICBpZiBub3QgZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFOgogICAgICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgIGVtaXQoR1JPVVBSRUZfTE9DX0lHTk9SRSkKICAgICAgICAgICAgZWxpZiBub3QgZml4ZXM6ICAjIGFzY2lpCiAgICAgICAgICAgICAgICBlbWl0KEdST1VQUkVGX0lHTk9SRSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVtaXQoR1JPVVBSRUZfVU5JX0lHTk9SRSkKICAgICAgICAgICAgZW1pdChhdi0xKQogICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUZfRVhJU1RTOgogICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICBlbWl0KGF2WzBdLTEpCiAgICAgICAgICAgIHNraXB5ZXMgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzFdLCBmbGFncykKICAgICAgICAgICAgaWYgYXZbMl06CiAgICAgICAgICAgICAgICBlbWl0KEpVTVApCiAgICAgICAgICAgICAgICBza2lwbm8gPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICBjb2RlW3NraXB5ZXNdID0gX2xlbihjb2RlKSAtIHNraXB5ZXMgKyAxCiAgICAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsyXSwgZmxhZ3MpCiAgICAgICAgICAgICAgICBjb2RlW3NraXBub10gPSBfbGVuKGNvZGUpIC0gc2tpcG5vCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjb2RlW3NraXB5ZXNdID0gX2xlbihjb2RlKSAtIHNraXB5ZXMgKyAxCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUgJXIiICUgKG9wLCkpCgpkZWYgX2NvbXBpbGVfY2hhcnNldChjaGFyc2V0LCBmbGFncywgY29kZSk6CiAgICAjIGNvbXBpbGUgY2hhcnNldCBzdWJwcm9ncmFtCiAgICBlbWl0ID0gY29kZS5hcHBlbmQKICAgIGZvciBvcCwgYXYgaW4gY2hhcnNldDoKICAgICAgICBlbWl0KG9wKQogICAgICAgIGlmIG9wIGlzIE5FR0FURToKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsaWYgb3AgaXMgTElURVJBTDoKICAgICAgICAgICAgZW1pdChhdikKICAgICAgICBlbGlmIG9wIGlzIFJBTkdFIG9yIG9wIGlzIFJBTkdFX1VOSV9JR05PUkU6CiAgICAgICAgICAgIGVtaXQoYXZbMF0pCiAgICAgICAgICAgIGVtaXQoYXZbMV0pCiAgICAgICAgZWxpZiBvcCBpcyBDSEFSU0VUOgogICAgICAgICAgICBjb2RlLmV4dGVuZChhdikKICAgICAgICBlbGlmIG9wIGlzIEJJR0NIQVJTRVQ6CiAgICAgICAgICAgIGNvZGUuZXh0ZW5kKGF2KQogICAgICAgIGVsaWYgb3AgaXMgQ0FURUdPUlk6CiAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgZW1pdChDSF9MT0NBTEVbYXZdKQogICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgICAgIGVtaXQoQ0hfVU5JQ09ERVthdl0pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIGVycm9yKCJpbnRlcm5hbDogdW5zdXBwb3J0ZWQgc2V0IG9wZXJhdG9yICVyIiAlIChvcCwpKQogICAgZW1pdChGQUlMVVJFKQoKZGVmIF9vcHRpbWl6ZV9jaGFyc2V0KGNoYXJzZXQsIGlzY2FzZWQ9Tm9uZSwgZml4dXA9Tm9uZSwgZml4ZXM9Tm9uZSk6CiAgICAjIGludGVybmFsOiBvcHRpbWl6ZSBjaGFyYWN0ZXIgc2V0CiAgICBvdXQgPSBbXQogICAgdGFpbCA9IFtdCiAgICBjaGFybWFwID0gYnl0ZWFycmF5KDI1NikKICAgIGhhc2Nhc2VkID0gRmFsc2UKICAgIGZvciBvcCwgYXYgaW4gY2hhcnNldDoKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgogICAgICAgICAgICAgICAgICAgIGlmIGZpeHVwOgogICAgICAgICAgICAgICAgICAgICAgICBsbyA9IGZpeHVwKGF2KQogICAgICAgICAgICAgICAgICAgICAgICBjaGFybWFwW2xvXSA9IDEKICAgICAgICAgICAgICAgICAgICAgICAgaWYgZml4ZXMgYW5kIGxvIGluIGZpeGVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gZml4ZXNbbG9dOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXBba10gPSAxCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNjYXNlZCBhbmQgaXNjYXNlZChhdik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNjYXNlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBjaGFybWFwW2F2XSA9IDEKICAgICAgICAgICAgICAgIGVsaWYgb3AgaXMgUkFOR0U6CiAgICAgICAgICAgICAgICAgICAgciA9IHJhbmdlKGF2WzBdLCBhdlsxXSsxKQogICAgICAgICAgICAgICAgICAgIGlmIGZpeHVwOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBmaXhlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIG1hcChmaXh1cCwgcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFtpXSA9IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpIGluIGZpeGVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiBmaXhlc1tpXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXBba10gPSAxCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBtYXAoZml4dXAsIHIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXBbaV0gPSAxCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNjYXNlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2Nhc2VkID0gYW55KG1hcChpc2Nhc2VkLCByKSkKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFtpXSA9IDEKICAgICAgICAgICAgICAgIGVsaWYgb3AgaXMgTkVHQVRFOgogICAgICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgIGlmIGxlbihjaGFybWFwKSA9PSAyNTY6CiAgICAgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0IGNvbnRhaW5zIG5vbi1VQ1MxIGNoYXJhY3RlciBjb2RlcwogICAgICAgICAgICAgICAgICAgIGNoYXJtYXAgKz0gYidcMCcgKiAweGZmMDAKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIyBDaGFyYWN0ZXIgc2V0IGNvbnRhaW5zIG5vbi1CTVAgY2hhcmFjdGVyIGNvZGVzLgogICAgICAgICAgICAgICAgIyBGb3IgcmFuZ2UsIGFsbCBCTVAgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgYXJlIGFscmVhZHkKICAgICAgICAgICAgICAgICMgcHJvY2VlZGVkLgogICAgICAgICAgICAgICAgaWYgZml4dXA6CiAgICAgICAgICAgICAgICAgICAgaGFzY2FzZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIyBGb3Igbm93LCBJTl9VTklfSUdOT1JFK0xJVEVSQUwgYW5kCiAgICAgICAgICAgICAgICAgICAgIyBJTl9VTklfSUdOT1JFK1JBTkdFX1VOSV9JR05PUkUgd29yayBmb3IgYWxsIG5vbi1CTVAKICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMsIGJlY2F1c2UgdHdvIGNoYXJhY3RlcnMgKGF0IGxlYXN0IG9uZSBvZgogICAgICAgICAgICAgICAgICAgICMgd2hpY2ggaXMgbm90IGluIHRoZSBCTVApIG1hdGNoIGNhc2UtaW5zZW5zaXRpdmVseQogICAgICAgICAgICAgICAgICAgICMgaWYgYW5kIG9ubHkgaWY6CiAgICAgICAgICAgICAgICAgICAgIyAxKSBjMS5sb3dlcigpID09IGMyLmxvd2VyKCkKICAgICAgICAgICAgICAgICAgICAjIDIpIGMxLmxvd2VyKCkgPT0gYzIgb3IgYzEubG93ZXIoKS51cHBlcigpID09IGMyCiAgICAgICAgICAgICAgICAgICAgIyBBbHNvLCBib3RoIGMubG93ZXIoKSBhbmQgYy5sb3dlcigpLnVwcGVyKCkgYXJlIHNpbmdsZQogICAgICAgICAgICAgICAgICAgICMgY2hhcmFjdGVycyBmb3IgZXZlcnkgbm9uLUJNUCBjaGFyYWN0ZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgb3AgaXMgUkFOR0U6CiAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gUkFOR0VfVU5JX0lHTk9SRQogICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgIGJyZWFrCgogICAgIyBjb21wcmVzcyBjaGFyYWN0ZXIgbWFwCiAgICBydW5zID0gW10KICAgIHEgPSAwCiAgICB3aGlsZSBUcnVlOgogICAgICAgIHAgPSBjaGFybWFwLmZpbmQoMSwgcSkKICAgICAgICBpZiBwIDwgMDoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBsZW4ocnVucykgPj0gMjoKICAgICAgICAgICAgcnVucyA9IE5vbmUKICAgICAgICAgICAgYnJlYWsKICAgICAgICBxID0gY2hhcm1hcC5maW5kKDAsIHApCiAgICAgICAgaWYgcSA8IDA6CiAgICAgICAgICAgIHJ1bnMuYXBwZW5kKChwLCBsZW4oY2hhcm1hcCkpKQogICAgICAgICAgICBicmVhawogICAgICAgIHJ1bnMuYXBwZW5kKChwLCBxKSkKICAgIGlmIHJ1bnMgaXMgbm90IE5vbmU6CiAgICAgICAgIyB1c2UgbGl0ZXJhbC9yYW5nZQogICAgICAgIGZvciBwLCBxIGluIHJ1bnM6CiAgICAgICAgICAgIGlmIHEgLSBwID09IDE6CiAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKChMSVRFUkFMLCBwKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoKFJBTkdFLCAocCwgcSAtIDEpKSkKICAgICAgICBvdXQgKz0gdGFpbAogICAgICAgICMgaWYgdGhlIGNhc2Ugd2FzIGNoYW5nZWQgb3IgbmV3IHJlcHJlc2VudGF0aW9uIGlzIG1vcmUgY29tcGFjdAogICAgICAgIGlmIGhhc2Nhc2VkIG9yIGxlbihvdXQpIDwgbGVuKGNoYXJzZXQpOgogICAgICAgICAgICByZXR1cm4gb3V0LCBoYXNjYXNlZAogICAgICAgICMgZWxzZSBvcmlnaW5hbCBjaGFyYWN0ZXIgc2V0IGlzIGdvb2QgZW5vdWdoCiAgICAgICAgcmV0dXJuIGNoYXJzZXQsIGhhc2Nhc2VkCgogICAgIyB1c2UgYml0bWFwCiAgICBpZiBsZW4oY2hhcm1hcCkgPT0gMjU2OgogICAgICAgIGRhdGEgPSBfbWtfYml0bWFwKGNoYXJtYXApCiAgICAgICAgb3V0LmFwcGVuZCgoQ0hBUlNFVCwgZGF0YSkpCiAgICAgICAgb3V0ICs9IHRhaWwKICAgICAgICByZXR1cm4gb3V0LCBoYXNjYXNlZAoKICAgICMgVG8gcmVwcmVzZW50IGEgYmlnIGNoYXJzZXQsIGZpcnN0IGEgYml0bWFwIG9mIGFsbCBjaGFyYWN0ZXJzIGluIHRoZQogICAgIyBzZXQgaXMgY29uc3RydWN0ZWQuIFRoZW4sIHRoaXMgYml0bWFwIGlzIHNsaWNlZCBpbnRvIGNodW5rcyBvZiAyNTYKICAgICMgY2hhcmFjdGVycywgZHVwbGljYXRlIGNodW5rcyBhcmUgZWxpbWluYXRlZCwgYW5kIGVhY2ggY2h1bmsgaXMKICAgICMgZ2l2ZW4gYSBudW1iZXIuIEluIHRoZSBjb21waWxlZCBleHByZXNzaW9uLCB0aGUgY2hhcnNldCBpcwogICAgIyByZXByZXNlbnRlZCBieSBhIDMyLWJpdCB3b3JkIHNlcXVlbmNlLCBjb25zaXN0aW5nIG9mIG9uZSB3b3JkIGZvcgogICAgIyB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBjaHVua3MsIGEgc2VxdWVuY2Ugb2YgMjU2IGJ5dGVzICg2NCB3b3JkcykKICAgICMgb2YgY2h1bmsgbnVtYmVycyBpbmRleGVkIGJ5IHRoZWlyIG9yaWdpbmFsIGNodW5rIHBvc2l0aW9uLCBhbmQgYQogICAgIyBzZXF1ZW5jZSBvZiAyNTYtYml0IGNodW5rcyAoOCB3b3JkcyBlYWNoKS4KCiAgICAjIENvbXByZXNzaW9uIGlzIG5vcm1hbGx5IGdvb2Q6IGluIGEgdHlwaWNhbCBjaGFyc2V0LCBsYXJnZSByYW5nZXMgb2YKICAgICMgVW5pY29kZSB3aWxsIGJlIGVpdGhlciBjb21wbGV0ZWx5IGV4Y2x1ZGVkIChlLmcuIGlmIG9ubHkgY3lyaWxsaWMKICAgICMgbGV0dGVycyBhcmUgdG8gYmUgbWF0Y2hlZCksIG9yIGNvbXBsZXRlbHkgaW5jbHVkZWQgKGUuZy4gaWYgbGFyZ2UKICAgICMgc3VicmFuZ2VzIG9mIEthbmppIG1hdGNoKS4gVGhlc2UgcmFuZ2VzIHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkKICAgICMgY2h1bmtzIG9mIGFsbCBvbmUtYml0cyBvciBhbGwgemVyby1iaXRzLgoKICAgICMgTWF0Y2hpbmcgY2FuIGJlIGFsc28gZG9uZSBlZmZpY2llbnRseTogdGhlIG1vcmUgc2lnbmlmaWNhbnQgYnl0ZSBvZgogICAgIyB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgaXMgYW4gaW5kZXggaW50byB0aGUgY2h1bmsgbnVtYmVyLCBhbmQgdGhlCiAgICAjIGxlc3Mgc2lnbmlmaWNhbnQgYnl0ZSBpcyBhIGJpdCBpbmRleCBpbiB0aGUgY2h1bmsgKGp1c3QgbGlrZSB0aGUKICAgICMgQ0hBUlNFVCBtYXRjaGluZykuCgogICAgY2hhcm1hcCA9IGJ5dGVzKGNoYXJtYXApICMgc2hvdWxkIGJlIGhhc2hhYmxlCiAgICBjb21wcyA9IHt9CiAgICBtYXBwaW5nID0gYnl0ZWFycmF5KDI1NikKICAgIGJsb2NrID0gMAogICAgZGF0YSA9IGJ5dGVhcnJheSgpCiAgICBmb3IgaSBpbiByYW5nZSgwLCA2NTUzNiwgMjU2KToKICAgICAgICBjaHVuayA9IGNoYXJtYXBbaTogaSArIDI1Nl0KICAgICAgICBpZiBjaHVuayBpbiBjb21wczoKICAgICAgICAgICAgbWFwcGluZ1tpIC8vIDI1Nl0gPSBjb21wc1tjaHVua10KICAgICAgICBlbHNlOgogICAgICAgICAgICBtYXBwaW5nW2kgLy8gMjU2XSA9IGNvbXBzW2NodW5rXSA9IGJsb2NrCiAgICAgICAgICAgIGJsb2NrICs9IDEKICAgICAgICAgICAgZGF0YSArPSBjaHVuawogICAgZGF0YSA9IF9ta19iaXRtYXAoZGF0YSkKICAgIGRhdGFbMDowXSA9IFtibG9ja10gKyBfYnl0ZXNfdG9fY29kZXMobWFwcGluZykKICAgIG91dC5hcHBlbmQoKEJJR0NIQVJTRVQsIGRhdGEpKQogICAgb3V0ICs9IHRhaWwKICAgIHJldHVybiBvdXQsIGhhc2Nhc2VkCgpfQ09ERUJJVFMgPSBfc3JlLkNPREVTSVpFICogOApNQVhDT0RFID0gKDEgPDwgX0NPREVCSVRTKSAtIDEKX0JJVFNfVFJBTlMgPSBiJzAnICsgYicxJyAqIDI1NQpkZWYgX21rX2JpdG1hcChiaXRzLCBfQ09ERUJJVFM9X0NPREVCSVRTLCBfaW50PWludCk6CiAgICBzID0gYml0cy50cmFuc2xhdGUoX0JJVFNfVFJBTlMpWzo6LTFdCiAgICByZXR1cm4gW19pbnQoc1tpIC0gX0NPREVCSVRTOiBpXSwgMikKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpLCAwLCAtX0NPREVCSVRTKV0KCmRlZiBfYnl0ZXNfdG9fY29kZXMoYik6CiAgICAjIENvbnZlcnQgYmxvY2sgaW5kaWNlcyB0byB3b3JkIGFycmF5CiAgICBhID0gbWVtb3J5dmlldyhiKS5jYXN0KCdJJykKICAgIGFzc2VydCBhLml0ZW1zaXplID09IF9zcmUuQ09ERVNJWkUKICAgIGFzc2VydCBsZW4oYSkgKiBhLml0ZW1zaXplID09IGxlbihiKQogICAgcmV0dXJuIGEudG9saXN0KCkKCmRlZiBfc2ltcGxlKHApOgogICAgIyBjaGVjayBpZiB0aGlzIHN1YnBhdHRlcm4gaXMgYSAic2ltcGxlIiBvcGVyYXRvcgogICAgaWYgbGVuKHApICE9IDE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBvcCwgYXYgPSBwWzBdCiAgICBpZiBvcCBpcyBTVUJQQVRURVJOOgogICAgICAgIHJldHVybiBhdlswXSBpcyBOb25lIGFuZCBfc2ltcGxlKGF2Wy0xXSkKICAgIHJldHVybiBvcCBpbiBfVU5JVF9DT0RFUwoKZGVmIF9nZW5lcmF0ZV9vdmVybGFwX3RhYmxlKHByZWZpeCk6CiAgICAiIiIKICAgIEdlbmVyYXRlIGFuIG92ZXJsYXAgdGFibGUgZm9yIHRoZSBmb2xsb3dpbmcgcHJlZml4LgogICAgQW4gb3ZlcmxhcCB0YWJsZSBpcyBhIHRhYmxlIG9mIHRoZSBzYW1lIHNpemUgYXMgdGhlIHByZWZpeCB3aGljaAogICAgaW5mb3JtcyBhYm91dCB0aGUgcG90ZW50aWFsIHNlbGYtb3ZlcmxhcCBmb3IgZWFjaCBpbmRleCBpbiB0aGUgcHJlZml4OgogICAgLSBpZiBvdmVybGFwW2ldID09IDAsIHByZWZpeFtpOl0gY2FuJ3Qgb3ZlcmxhcCBwcmVmaXhbMDouLi5dCiAgICAtIGlmIG92ZXJsYXBbaV0gPT0gayB3aXRoIDAgPCBrIDw9IGksIHByZWZpeFtpLWsrMTppKzFdIG92ZXJsYXBzIHdpdGgKICAgICAgcHJlZml4WzA6a10KICAgICIiIgogICAgdGFibGUgPSBbMF0gKiBsZW4ocHJlZml4KQogICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKHByZWZpeCkpOgogICAgICAgIGlkeCA9IHRhYmxlW2kgLSAxXQogICAgICAgIHdoaWxlIHByZWZpeFtpXSAhPSBwcmVmaXhbaWR4XToKICAgICAgICAgICAgaWYgaWR4ID09IDA6CiAgICAgICAgICAgICAgICB0YWJsZVtpXSA9IDAKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlkeCA9IHRhYmxlW2lkeCAtIDFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGFibGVbaV0gPSBpZHggKyAxCiAgICByZXR1cm4gdGFibGUKCmRlZiBfZ2V0X2lzY2FzZWQoZmxhZ3MpOgogICAgaWYgbm90IGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRToKICAgICAgICByZXR1cm4gTm9uZQogICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgcmV0dXJuIF9zcmUudW5pY29kZV9pc2Nhc2VkCiAgICBlbHNlOgogICAgICAgIHJldHVybiBfc3JlLmFzY2lpX2lzY2FzZWQKCmRlZiBfZ2V0X2xpdGVyYWxfcHJlZml4KHBhdHRlcm4sIGZsYWdzKToKICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKICAgIHByZWZpeCA9IFtdCiAgICBwcmVmaXhhcHBlbmQgPSBwcmVmaXguYXBwZW5kCiAgICBwcmVmaXhfc2tpcCA9IE5vbmUKICAgIGlzY2FzZWQgPSBfZ2V0X2lzY2FzZWQoZmxhZ3MpCiAgICBmb3Igb3AsIGF2IGluIHBhdHRlcm4uZGF0YToKICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgogICAgICAgICAgICBpZiBpc2Nhc2VkIGFuZCBpc2Nhc2VkKGF2KToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46CiAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGF2CiAgICAgICAgICAgIGZsYWdzMSA9IF9jb21iaW5lX2ZsYWdzKGZsYWdzLCBhZGRfZmxhZ3MsIGRlbF9mbGFncykKICAgICAgICAgICAgaWYgZmxhZ3MxICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSBhbmQgZmxhZ3MxICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgcHJlZml4MSwgcHJlZml4X3NraXAxLCBnb3RfYWxsID0gX2dldF9saXRlcmFsX3ByZWZpeChwLCBmbGFnczEpCiAgICAgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IGxlbihwcmVmaXgpCiAgICAgICAgICAgICAgICBlbGlmIHByZWZpeF9za2lwMSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IGxlbihwcmVmaXgpICsgcHJlZml4X3NraXAxCiAgICAgICAgICAgIHByZWZpeC5leHRlbmQocHJlZml4MSkKICAgICAgICAgICAgaWYgbm90IGdvdF9hbGw6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJyZWFrCiAgICBlbHNlOgogICAgICAgIHJldHVybiBwcmVmaXgsIHByZWZpeF9za2lwLCBUcnVlCiAgICByZXR1cm4gcHJlZml4LCBwcmVmaXhfc2tpcCwgRmFsc2UKCmRlZiBfZ2V0X2NoYXJzZXRfcHJlZml4KHBhdHRlcm4sIGZsYWdzKToKICAgIHdoaWxlIFRydWU6CiAgICAgICAgaWYgbm90IHBhdHRlcm4uZGF0YToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBvcCwgYXYgPSBwYXR0ZXJuLmRhdGFbMF0KICAgICAgICBpZiBvcCBpcyBub3QgU1VCUEFUVEVSTjoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHBhdHRlcm4gPSBhdgogICAgICAgIGZsYWdzID0gX2NvbWJpbmVfZmxhZ3MoZmxhZ3MsIGFkZF9mbGFncywgZGVsX2ZsYWdzKQogICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSBhbmQgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgaXNjYXNlZCA9IF9nZXRfaXNjYXNlZChmbGFncykKICAgIGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgaWYgaXNjYXNlZCBhbmQgaXNjYXNlZChhdik6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgcmV0dXJuIFsob3AsIGF2KV0KICAgIGVsaWYgb3AgaXMgQlJBTkNIOgogICAgICAgIGNoYXJzZXQgPSBbXQogICAgICAgIGNoYXJzZXRhcHBlbmQgPSBjaGFyc2V0LmFwcGVuZAogICAgICAgIGZvciBwIGluIGF2WzFdOgogICAgICAgICAgICBpZiBub3QgcDoKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTCBhbmQgbm90IChpc2Nhc2VkIGFuZCBpc2Nhc2VkKGF2KSk6CiAgICAgICAgICAgICAgICBjaGFyc2V0YXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gY2hhcnNldAogICAgZWxpZiBvcCBpcyBJTjoKICAgICAgICBjaGFyc2V0ID0gYXYKICAgICAgICBpZiBpc2Nhc2VkOgogICAgICAgICAgICBmb3Igb3AsIGF2IGluIGNoYXJzZXQ6CiAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgogICAgICAgICAgICAgICAgICAgIGlmIGlzY2FzZWQoYXYpOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgZWxpZiBvcCBpcyBSQU5HRToKICAgICAgICAgICAgICAgICAgICBpZiBhdlsxXSA+IDB4ZmZmZjoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICAgICBpZiBhbnkobWFwKGlzY2FzZWQsIHJhbmdlKGF2WzBdLCBhdlsxXSsxKSkpOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBjaGFyc2V0CiAgICByZXR1cm4gTm9uZQoKZGVmIF9jb21waWxlX2luZm8oY29kZSwgcGF0dGVybiwgZmxhZ3MpOgogICAgIyBpbnRlcm5hbDogY29tcGlsZSBhbiBpbmZvIGJsb2NrLiAgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbiwKICAgICMgdGhpcyBjb250YWlucyBtaW4vbWF4IHBhdHRlcm4gd2lkdGgsIGFuZCBhbiBvcHRpb25hbCBsaXRlcmFsCiAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKICAgIGxvLCBoaSA9IHBhdHRlcm4uZ2V0d2lkdGgoKQogICAgaWYgaGkgPiBNQVhDT0RFOgogICAgICAgIGhpID0gTUFYQ09ERQogICAgaWYgbG8gPT0gMDoKICAgICAgICBjb2RlLmV4dGVuZChbSU5GTywgNCwgMCwgbG8sIGhpXSkKICAgICAgICByZXR1cm4KICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAogICAgcHJlZml4ID0gW10KICAgIHByZWZpeF9za2lwID0gMAogICAgY2hhcnNldCA9IFtdICMgbm90IHVzZWQKICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFIGFuZCBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSk6CiAgICAgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAogICAgICAgIHByZWZpeCwgcHJlZml4X3NraXAsIGdvdF9hbGwgPSBfZ2V0X2xpdGVyYWxfcHJlZml4KHBhdHRlcm4sIGZsYWdzKQogICAgICAgICMgaWYgbm8gcHJlZml4LCBsb29rIGZvciBjaGFyc2V0IHByZWZpeAogICAgICAgIGlmIG5vdCBwcmVmaXg6CiAgICAgICAgICAgIGNoYXJzZXQgPSBfZ2V0X2NoYXJzZXRfcHJlZml4KHBhdHRlcm4sIGZsYWdzKQojIyAgICAgaWYgcHJlZml4OgojIyAgICAgICAgIHByaW50KCIqKiogUFJFRklYIiwgcHJlZml4LCBwcmVmaXhfc2tpcCkKIyMgICAgIGlmIGNoYXJzZXQ6CiMjICAgICAgICAgcHJpbnQoIioqKiBDSEFSU0VUIiwgY2hhcnNldCkKICAgICMgYWRkIGFuIGluZm8gYmxvY2sKICAgIGVtaXQgPSBjb2RlLmFwcGVuZAogICAgZW1pdChJTkZPKQogICAgc2tpcCA9IGxlbihjb2RlKTsgZW1pdCgwKQogICAgIyBsaXRlcmFsIGZsYWcKICAgIG1hc2sgPSAwCiAgICBpZiBwcmVmaXg6CiAgICAgICAgbWFzayA9IFNSRV9JTkZPX1BSRUZJWAogICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmUgYW5kIGdvdF9hbGw6CiAgICAgICAgICAgIG1hc2sgPSBtYXNrIHwgU1JFX0lORk9fTElURVJBTAogICAgZWxpZiBjaGFyc2V0OgogICAgICAgIG1hc2sgPSBtYXNrIHwgU1JFX0lORk9fQ0hBUlNFVAogICAgZW1pdChtYXNrKQogICAgIyBwYXR0ZXJuIGxlbmd0aAogICAgaWYgbG8gPCBNQVhDT0RFOgogICAgICAgIGVtaXQobG8pCiAgICBlbHNlOgogICAgICAgIGVtaXQoTUFYQ09ERSkKICAgICAgICBwcmVmaXggPSBwcmVmaXhbOk1BWENPREVdCiAgICBlbWl0KG1pbihoaSwgTUFYQ09ERSkpCiAgICAjIGFkZCBsaXRlcmFsIHByZWZpeAogICAgaWYgcHJlZml4OgogICAgICAgIGVtaXQobGVuKHByZWZpeCkpICMgbGVuZ3RoCiAgICAgICAgaWYgcHJlZml4X3NraXAgaXMgTm9uZToKICAgICAgICAgICAgcHJlZml4X3NraXAgPSAgbGVuKHByZWZpeCkKICAgICAgICBlbWl0KHByZWZpeF9za2lwKSAjIHNraXAKICAgICAgICBjb2RlLmV4dGVuZChwcmVmaXgpCiAgICAgICAgIyBnZW5lcmF0ZSBvdmVybGFwIHRhYmxlCiAgICAgICAgY29kZS5leHRlbmQoX2dlbmVyYXRlX292ZXJsYXBfdGFibGUocHJlZml4KSkKICAgIGVsaWYgY2hhcnNldDoKICAgICAgICBjaGFyc2V0LCBoYXNjYXNlZCA9IF9vcHRpbWl6ZV9jaGFyc2V0KGNoYXJzZXQpCiAgICAgICAgYXNzZXJ0IG5vdCBoYXNjYXNlZAogICAgICAgIF9jb21waWxlX2NoYXJzZXQoY2hhcnNldCwgZmxhZ3MsIGNvZGUpCiAgICBjb2RlW3NraXBdID0gbGVuKGNvZGUpIC0gc2tpcAoKZGVmIGlzc3RyaW5nKG9iaik6CiAgICByZXR1cm4gaXNpbnN0YW5jZShvYmosIChzdHIsIGJ5dGVzKSkKCmRlZiBfY29kZShwLCBmbGFncyk6CgogICAgZmxhZ3MgPSBwLnN0YXRlLmZsYWdzIHwgZmxhZ3MKICAgIGNvZGUgPSBbXQoKICAgICMgY29tcGlsZSBpbmZvIGJsb2NrCiAgICBfY29tcGlsZV9pbmZvKGNvZGUsIHAsIGZsYWdzKQoKICAgICMgY29tcGlsZSB0aGUgcGF0dGVybgogICAgX2NvbXBpbGUoY29kZSwgcC5kYXRhLCBmbGFncykKCiAgICBjb2RlLmFwcGVuZChTVUNDRVNTKQoKICAgIHJldHVybiBjb2RlCgpkZWYgX2hleF9jb2RlKGNvZGUpOgogICAgcmV0dXJuICdbJXNdJyAlICcsICcuam9pbignJSMwKngnICUgKF9zcmUuQ09ERVNJWkUqMisyLCB4KSBmb3IgeCBpbiBjb2RlKQoKZGVmIGRpcyhjb2RlKToKICAgIGltcG9ydCBzeXMKCiAgICBsYWJlbHMgPSBzZXQoKQogICAgbGV2ZWwgPSAwCiAgICBvZmZzZXRfd2lkdGggPSBsZW4oc3RyKGxlbihjb2RlKSAtIDEpKQoKICAgIGRlZiBkaXNfKHN0YXJ0LCBlbmQpOgogICAgICAgIGRlZiBwcmludF8oKmFyZ3MsIHRvPU5vbmUpOgogICAgICAgICAgICBpZiB0byBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGxhYmVscy5hZGQodG8pCiAgICAgICAgICAgICAgICBhcmdzICs9ICgnKHRvICVkKScgJSAodG8sKSwpCiAgICAgICAgICAgIHByaW50KCclKmQlcyAnICUgKG9mZnNldF93aWR0aCwgc3RhcnQsICc6JyBpZiBzdGFydCBpbiBsYWJlbHMgZWxzZSAnLicpLAogICAgICAgICAgICAgICAgICBlbmQ9JyAgJyoobGV2ZWwtMSkpCiAgICAgICAgICAgIHByaW50KCphcmdzKQoKICAgICAgICBkZWYgcHJpbnRfMigqYXJncyk6CiAgICAgICAgICAgIHByaW50KGVuZD0nICcqKG9mZnNldF93aWR0aCArIDIqbGV2ZWwpKQogICAgICAgICAgICBwcmludCgqYXJncykKCiAgICAgICAgbm9ubG9jYWwgbGV2ZWwKICAgICAgICBsZXZlbCArPSAxCiAgICAgICAgaSA9IHN0YXJ0CiAgICAgICAgd2hpbGUgaSA8IGVuZDoKICAgICAgICAgICAgc3RhcnQgPSBpCiAgICAgICAgICAgIG9wID0gY29kZVtpXQogICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgb3AgPSBPUENPREVTW29wXQogICAgICAgICAgICBpZiBvcCBpbiAoU1VDQ0VTUywgRkFJTFVSRSwgQU5ZLCBBTllfQUxMLAogICAgICAgICAgICAgICAgICAgICAgTUFYX1VOVElMLCBNSU5fVU5USUwsIE5FR0FURSk6CiAgICAgICAgICAgICAgICBwcmludF8ob3ApCiAgICAgICAgICAgIGVsaWYgb3AgaW4gKExJVEVSQUwsIE5PVF9MSVRFUkFMLAogICAgICAgICAgICAgICAgICAgICAgICBMSVRFUkFMX0lHTk9SRSwgTk9UX0xJVEVSQUxfSUdOT1JFLAogICAgICAgICAgICAgICAgICAgICAgICBMSVRFUkFMX1VOSV9JR05PUkUsIE5PVF9MSVRFUkFMX1VOSV9JR05PUkUsCiAgICAgICAgICAgICAgICAgICAgICAgIExJVEVSQUxfTE9DX0lHTk9SRSwgTk9UX0xJVEVSQUxfTE9DX0lHTk9SRSk6CiAgICAgICAgICAgICAgICBhcmcgPSBjb2RlW2ldCiAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgICAgIHByaW50XyhvcCwgJyUjMDJ4ICglciknICUgKGFyZywgY2hyKGFyZykpKQogICAgICAgICAgICBlbGlmIG9wIGlzIEFUOgogICAgICAgICAgICAgICAgYXJnID0gY29kZVtpXQogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICBhcmcgPSBzdHIoQVRDT0RFU1thcmddKQogICAgICAgICAgICAgICAgYXNzZXJ0IGFyZ1s6M10gPT0gJ0FUXycKICAgICAgICAgICAgICAgIHByaW50XyhvcCwgYXJnWzM6XSkKICAgICAgICAgICAgZWxpZiBvcCBpcyBDQVRFR09SWToKICAgICAgICAgICAgICAgIGFyZyA9IGNvZGVbaV0KICAgICAgICAgICAgICAgIGkgKz0gMQogICAgICAgICAgICAgICAgYXJnID0gc3RyKENIQ09ERVNbYXJnXSkKICAgICAgICAgICAgICAgIGFzc2VydCBhcmdbOjldID09ICdDQVRFR09SWV8nCiAgICAgICAgICAgICAgICBwcmludF8ob3AsIGFyZ1s5Ol0pCiAgICAgICAgICAgIGVsaWYgb3AgaW4gKElOLCBJTl9JR05PUkUsIElOX1VOSV9JR05PUkUsIElOX0xPQ19JR05PUkUpOgogICAgICAgICAgICAgICAgc2tpcCA9IGNvZGVbaV0KICAgICAgICAgICAgICAgIHByaW50XyhvcCwgc2tpcCwgdG89aStza2lwKQogICAgICAgICAgICAgICAgZGlzXyhpKzEsIGkrc2tpcCkKICAgICAgICAgICAgICAgIGkgKz0gc2tpcAogICAgICAgICAgICBlbGlmIG9wIGluIChSQU5HRSwgUkFOR0VfVU5JX0lHTk9SRSk6CiAgICAgICAgICAgICAgICBsbywgaGkgPSBjb2RlW2k6IGkrMl0KICAgICAgICAgICAgICAgIGkgKz0gMgogICAgICAgICAgICAgICAgcHJpbnRfKG9wLCAnJSMwMnggJSMwMnggKCVyLSVyKScgJSAobG8sIGhpLCBjaHIobG8pLCBjaHIoaGkpKSkKICAgICAgICAgICAgZWxpZiBvcCBpcyBDSEFSU0VUOgogICAgICAgICAgICAgICAgcHJpbnRfKG9wLCBfaGV4X2NvZGUoY29kZVtpOiBpICsgMjU2Ly9fQ09ERUJJVFNdKSkKICAgICAgICAgICAgICAgIGkgKz0gMjU2Ly9fQ09ERUJJVFMKICAgICAgICAgICAgZWxpZiBvcCBpcyBCSUdDSEFSU0VUOgogICAgICAgICAgICAgICAgYXJnID0gY29kZVtpXQogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICBtYXBwaW5nID0gbGlzdChiJycuam9pbih4LnRvX2J5dGVzKF9zcmUuQ09ERVNJWkUsIHN5cy5ieXRlb3JkZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBjb2RlW2k6IGkgKyAyNTYvL19zcmUuQ09ERVNJWkVdKSkKICAgICAgICAgICAgICAgIHByaW50XyhvcCwgYXJnLCBtYXBwaW5nKQogICAgICAgICAgICAgICAgaSArPSAyNTYvL19zcmUuQ09ERVNJWkUKICAgICAgICAgICAgICAgIGxldmVsICs9IDEKICAgICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKGFyZyk6CiAgICAgICAgICAgICAgICAgICAgcHJpbnRfMihfaGV4X2NvZGUoY29kZVtpOiBpICsgMjU2Ly9fQ09ERUJJVFNdKSkKICAgICAgICAgICAgICAgICAgICBpICs9IDI1Ni8vX0NPREVCSVRTCiAgICAgICAgICAgICAgICBsZXZlbCAtPSAxCiAgICAgICAgICAgIGVsaWYgb3AgaW4gKE1BUkssIEdST1VQUkVGLCBHUk9VUFJFRl9JR05PUkUsIEdST1VQUkVGX1VOSV9JR05PUkUsCiAgICAgICAgICAgICAgICAgICAgICAgIEdST1VQUkVGX0xPQ19JR05PUkUpOgogICAgICAgICAgICAgICAgYXJnID0gY29kZVtpXQogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICBwcmludF8ob3AsIGFyZykKICAgICAgICAgICAgZWxpZiBvcCBpcyBKVU1QOgogICAgICAgICAgICAgICAgc2tpcCA9IGNvZGVbaV0KICAgICAgICAgICAgICAgIHByaW50XyhvcCwgc2tpcCwgdG89aStza2lwKQogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgogICAgICAgICAgICAgICAgc2tpcCA9IGNvZGVbaV0KICAgICAgICAgICAgICAgIHByaW50XyhvcCwgc2tpcCwgdG89aStza2lwKQogICAgICAgICAgICAgICAgd2hpbGUgc2tpcDoKICAgICAgICAgICAgICAgICAgICBkaXNfKGkrMSwgaStza2lwKQogICAgICAgICAgICAgICAgICAgIGkgKz0gc2tpcAogICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gaQogICAgICAgICAgICAgICAgICAgIHNraXAgPSBjb2RlW2ldCiAgICAgICAgICAgICAgICAgICAgaWYgc2tpcDoKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfKCdicmFuY2gnLCBza2lwLCB0bz1pK3NraXApCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfKEZBSUxVUkUpCiAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgZWxpZiBvcCBpbiAoUkVQRUFULCBSRVBFQVRfT05FLCBNSU5fUkVQRUFUX09ORSwKICAgICAgICAgICAgICAgICAgICAgICAgUE9TU0VTU0lWRV9SRVBFQVQsIFBPU1NFU1NJVkVfUkVQRUFUX09ORSk6CiAgICAgICAgICAgICAgICBza2lwLCBtaW4sIG1heCA9IGNvZGVbaTogaSszXQogICAgICAgICAgICAgICAgaWYgbWF4ID09IE1BWFJFUEVBVDoKICAgICAgICAgICAgICAgICAgICBtYXggPSAnTUFYUkVQRUFUJwogICAgICAgICAgICAgICAgcHJpbnRfKG9wLCBza2lwLCBtaW4sIG1heCwgdG89aStza2lwKQogICAgICAgICAgICAgICAgZGlzXyhpKzMsIGkrc2tpcCkKICAgICAgICAgICAgICAgIGkgKz0gc2tpcAogICAgICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGX0VYSVNUUzoKICAgICAgICAgICAgICAgIGFyZywgc2tpcCA9IGNvZGVbaTogaSsyXQogICAgICAgICAgICAgICAgcHJpbnRfKG9wLCBhcmcsIHNraXAsIHRvPWkrc2tpcCkKICAgICAgICAgICAgICAgIGkgKz0gMgogICAgICAgICAgICBlbGlmIG9wIGluIChBU1NFUlQsIEFTU0VSVF9OT1QpOgogICAgICAgICAgICAgICAgc2tpcCwgYXJnID0gY29kZVtpOiBpKzJdCiAgICAgICAgICAgICAgICBwcmludF8ob3AsIHNraXAsIGFyZywgdG89aStza2lwKQogICAgICAgICAgICAgICAgZGlzXyhpKzIsIGkrc2tpcCkKICAgICAgICAgICAgICAgIGkgKz0gc2tpcAogICAgICAgICAgICBlbGlmIG9wIGlzIEFUT01JQ19HUk9VUDoKICAgICAgICAgICAgICAgIHNraXAgPSBjb2RlW2ldCiAgICAgICAgICAgICAgICBwcmludF8ob3AsIHNraXAsIHRvPWkrc2tpcCkKICAgICAgICAgICAgICAgIGRpc18oaSsxLCBpK3NraXApCiAgICAgICAgICAgICAgICBpICs9IHNraXAKICAgICAgICAgICAgZWxpZiBvcCBpcyBJTkZPOgogICAgICAgICAgICAgICAgc2tpcCwgZmxhZ3MsIG1pbiwgbWF4ID0gY29kZVtpOiBpKzRdCiAgICAgICAgICAgICAgICBpZiBtYXggPT0gTUFYUkVQRUFUOgogICAgICAgICAgICAgICAgICAgIG1heCA9ICdNQVhSRVBFQVQnCiAgICAgICAgICAgICAgICBwcmludF8ob3AsIHNraXAsIGJpbihmbGFncyksIG1pbiwgbWF4LCB0bz1pK3NraXApCiAgICAgICAgICAgICAgICBzdGFydCA9IGkrNAogICAgICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfSU5GT19QUkVGSVg6CiAgICAgICAgICAgICAgICAgICAgcHJlZml4X2xlbiwgcHJlZml4X3NraXAgPSBjb2RlW2krNDogaSs2XQogICAgICAgICAgICAgICAgICAgIHByaW50XzIoJyAgcHJlZml4X3NraXAnLCBwcmVmaXhfc2tpcCkKICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGkgKyA2CiAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gY29kZVtzdGFydDogc3RhcnQrcHJlZml4X2xlbl0KICAgICAgICAgICAgICAgICAgICBwcmludF8yKCcgIHByZWZpeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXScgJSAnLCAnLmpvaW4oJyUjMDJ4JyAlIHggZm9yIHggaW4gcHJlZml4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJXIpJyAlICcnLmpvaW4obWFwKGNociwgcHJlZml4KSkpCiAgICAgICAgICAgICAgICAgICAgc3RhcnQgKz0gcHJlZml4X2xlbgogICAgICAgICAgICAgICAgICAgIHByaW50XzIoJyAgb3ZlcmxhcCcsIGNvZGVbc3RhcnQ6IHN0YXJ0K3ByZWZpeF9sZW5dKQogICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IHByZWZpeF9sZW4KICAgICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0lORk9fQ0hBUlNFVDoKICAgICAgICAgICAgICAgICAgICBsZXZlbCArPSAxCiAgICAgICAgICAgICAgICAgICAgcHJpbnRfMignaW4nKQogICAgICAgICAgICAgICAgICAgIGRpc18oc3RhcnQsIGkrc2tpcCkKICAgICAgICAgICAgICAgICAgICBsZXZlbCAtPSAxCiAgICAgICAgICAgICAgICBpICs9IHNraXAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Iob3ApCgogICAgICAgIGxldmVsIC09IDEKCiAgICBkaXNfKDAsIGxlbihjb2RlKSkKCgpkZWYgY29tcGlsZShwLCBmbGFncz0wKToKICAgICMgaW50ZXJuYWw6IGNvbnZlcnQgcGF0dGVybiBsaXN0IHRvIGludGVybmFsIGZvcm1hdAoKICAgIGlmIGlzc3RyaW5nKHApOgogICAgICAgIHBhdHRlcm4gPSBwCiAgICAgICAgcCA9IF9wYXJzZXIucGFyc2UocCwgZmxhZ3MpCiAgICBlbHNlOgogICAgICAgIHBhdHRlcm4gPSBOb25lCgogICAgY29kZSA9IF9jb2RlKHAsIGZsYWdzKQoKICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfREVCVUc6CiAgICAgICAgcHJpbnQoKQogICAgICAgIGRpcyhjb2RlKQoKICAgICMgbWFwIGluIGVpdGhlciBkaXJlY3Rpb24KICAgIGdyb3VwaW5kZXggPSBwLnN0YXRlLmdyb3VwZGljdAogICAgaW5kZXhncm91cCA9IFtOb25lXSAqIHAuc3RhdGUuZ3JvdXBzCiAgICBmb3IgaywgaSBpbiBncm91cGluZGV4Lml0ZW1zKCk6CiAgICAgICAgaW5kZXhncm91cFtpXSA9IGsKCiAgICByZXR1cm4gX3NyZS5jb21waWxlKAogICAgICAgIHBhdHRlcm4sIGZsYWdzIHwgcC5zdGF0ZS5mbGFncywgY29kZSwKICAgICAgICBwLnN0YXRlLmdyb3Vwcy0xLAogICAgICAgIGdyb3VwaW5kZXgsIHR1cGxlKGluZGV4Z3JvdXApCiAgICAgICAgKQpQSwMEFAAAAAAAAyCjVujy68YqFwAAKhcAABAAAAByZS9fY29uc3RhbnRzLnB5IwojIFNlY3JldCBMYWJzJyBSZWd1bGFyIEV4cHJlc3Npb24gRW5naW5lCiMKIyB2YXJpb3VzIHN5bWJvbHMgdXNlZCBieSB0aGUgcmVndWxhciBleHByZXNzaW9uIGVuZ2luZS4KIyBydW4gdGhpcyBzY3JpcHQgdG8gdXBkYXRlIHRoZSBfc3JlIGluY2x1ZGUgZmlsZXMhCiMKIyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBieSBTZWNyZXQgTGFicyBBQi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBTZWUgdGhlIF9faW5pdF9fLnB5IGZpbGUgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGFuZCByZWRpc3RyaWJ1dGlvbi4KIwoKIiIiSW50ZXJuYWwgc3VwcG9ydCBtb2R1bGUgZm9yIHNyZSIiIgoKIyB1cGRhdGUgd2hlbiBjb25zdGFudHMgYXJlIGFkZGVkIG9yIHJlbW92ZWQKCk1BR0lDID0gMjAyMjA2MTUKCmZyb20gX3NyZSBpbXBvcnQgTUFYUkVQRUFULCBNQVhHUk9VUFMKCiMgU1JFIHN0YW5kYXJkIGV4Y2VwdGlvbiAoYWNjZXNzIGFzIHNyZS5lcnJvcikKIyBzaG91bGQgdGhpcyByZWFsbHkgYmUgaGVyZT8KCmNsYXNzIGVycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJFeGNlcHRpb24gcmFpc2VkIGZvciBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCgogICAgQXR0cmlidXRlczoKCiAgICAgICAgbXNnOiBUaGUgdW5mb3JtYXR0ZWQgZXJyb3IgbWVzc2FnZQogICAgICAgIHBhdHRlcm46IFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybgogICAgICAgIHBvczogVGhlIGluZGV4IGluIHRoZSBwYXR0ZXJuIHdoZXJlIGNvbXBpbGF0aW9uIGZhaWxlZCAobWF5IGJlIE5vbmUpCiAgICAgICAgbGluZW5vOiBUaGUgbGluZSBjb3JyZXNwb25kaW5nIHRvIHBvcyAobWF5IGJlIE5vbmUpCiAgICAgICAgY29sbm86IFRoZSBjb2x1bW4gY29ycmVzcG9uZGluZyB0byBwb3MgKG1heSBiZSBOb25lKQogICAgIiIiCgogICAgX19tb2R1bGVfXyA9ICdyZScKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBwYXR0ZXJuPU5vbmUsIHBvcz1Ob25lKToKICAgICAgICBzZWxmLm1zZyA9IG1zZwogICAgICAgIHNlbGYucGF0dGVybiA9IHBhdHRlcm4KICAgICAgICBzZWxmLnBvcyA9IHBvcwogICAgICAgIGlmIHBhdHRlcm4gaXMgbm90IE5vbmUgYW5kIHBvcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgbXNnID0gJyVzIGF0IHBvc2l0aW9uICVkJyAlIChtc2csIHBvcykKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBzdHIpOgogICAgICAgICAgICAgICAgbmV3bGluZSA9ICdcbicKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG5ld2xpbmUgPSBiJ1xuJwogICAgICAgICAgICBzZWxmLmxpbmVubyA9IHBhdHRlcm4uY291bnQobmV3bGluZSwgMCwgcG9zKSArIDEKICAgICAgICAgICAgc2VsZi5jb2xubyA9IHBvcyAtIHBhdHRlcm4ucmZpbmQobmV3bGluZSwgMCwgcG9zKQogICAgICAgICAgICBpZiBuZXdsaW5lIGluIHBhdHRlcm46CiAgICAgICAgICAgICAgICBtc2cgPSAnJXMgKGxpbmUgJWQsIGNvbHVtbiAlZCknICUgKG1zZywgc2VsZi5saW5lbm8sIHNlbGYuY29sbm8pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmNvbG5vID0gTm9uZQogICAgICAgIHN1cGVyKCkuX19pbml0X18obXNnKQoKCmNsYXNzIF9OYW1lZEludENvbnN0YW50KGludCk6CiAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlLCBuYW1lKToKICAgICAgICBzZWxmID0gc3VwZXIoX05hbWVkSW50Q29uc3RhbnQsIGNscykuX19uZXdfXyhjbHMsIHZhbHVlKQogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5uYW1lCgogICAgX19yZWR1Y2VfXyA9IE5vbmUKCk1BWFJFUEVBVCA9IF9OYW1lZEludENvbnN0YW50KE1BWFJFUEVBVCwgJ01BWFJFUEVBVCcpCgpkZWYgX21ha2Vjb2RlcygqbmFtZXMpOgogICAgaXRlbXMgPSBbX05hbWVkSW50Q29uc3RhbnQoaSwgbmFtZSkgZm9yIGksIG5hbWUgaW4gZW51bWVyYXRlKG5hbWVzKV0KICAgIGdsb2JhbHMoKS51cGRhdGUoe2l0ZW0ubmFtZTogaXRlbSBmb3IgaXRlbSBpbiBpdGVtc30pCiAgICByZXR1cm4gaXRlbXMKCiMgb3BlcmF0b3JzCk9QQ09ERVMgPSBfbWFrZWNvZGVzKAogICAgIyBmYWlsdXJlPTAgc3VjY2Vzcz0xIChqdXN0IGJlY2F1c2UgaXQgbG9va3MgYmV0dGVyIHRoYXQgd2F5IDotKQogICAgJ0ZBSUxVUkUnLCAnU1VDQ0VTUycsCgogICAgJ0FOWScsICdBTllfQUxMJywKICAgICdBU1NFUlQnLCAnQVNTRVJUX05PVCcsCiAgICAnQVQnLAogICAgJ0JSQU5DSCcsCiAgICAnQ0FURUdPUlknLAogICAgJ0NIQVJTRVQnLCAnQklHQ0hBUlNFVCcsCiAgICAnR1JPVVBSRUYnLCAnR1JPVVBSRUZfRVhJU1RTJywKICAgICdJTicsCiAgICAnSU5GTycsCiAgICAnSlVNUCcsCiAgICAnTElURVJBTCcsCiAgICAnTUFSSycsCiAgICAnTUFYX1VOVElMJywKICAgICdNSU5fVU5USUwnLAogICAgJ05PVF9MSVRFUkFMJywKICAgICdORUdBVEUnLAogICAgJ1JBTkdFJywKICAgICdSRVBFQVQnLAogICAgJ1JFUEVBVF9PTkUnLAogICAgJ1NVQlBBVFRFUk4nLAogICAgJ01JTl9SRVBFQVRfT05FJywKICAgICdBVE9NSUNfR1JPVVAnLAogICAgJ1BPU1NFU1NJVkVfUkVQRUFUJywKICAgICdQT1NTRVNTSVZFX1JFUEVBVF9PTkUnLAoKICAgICdHUk9VUFJFRl9JR05PUkUnLAogICAgJ0lOX0lHTk9SRScsCiAgICAnTElURVJBTF9JR05PUkUnLAogICAgJ05PVF9MSVRFUkFMX0lHTk9SRScsCgogICAgJ0dST1VQUkVGX0xPQ19JR05PUkUnLAogICAgJ0lOX0xPQ19JR05PUkUnLAogICAgJ0xJVEVSQUxfTE9DX0lHTk9SRScsCiAgICAnTk9UX0xJVEVSQUxfTE9DX0lHTk9SRScsCgogICAgJ0dST1VQUkVGX1VOSV9JR05PUkUnLAogICAgJ0lOX1VOSV9JR05PUkUnLAogICAgJ0xJVEVSQUxfVU5JX0lHTk9SRScsCiAgICAnTk9UX0xJVEVSQUxfVU5JX0lHTk9SRScsCiAgICAnUkFOR0VfVU5JX0lHTk9SRScsCgogICAgIyBUaGUgZm9sbG93aW5nIG9wY29kZXMgYXJlIG9ubHkgb2NjdXJyZWQgaW4gdGhlIHBhcnNlciBvdXRwdXQsCiAgICAjIGJ1dCBub3QgaW4gdGhlIGNvbXBpbGVkIGNvZGUuCiAgICAnTUlOX1JFUEVBVCcsICdNQVhfUkVQRUFUJywKKQpkZWwgT1BDT0RFU1stMjpdICMgcmVtb3ZlIE1JTl9SRVBFQVQgYW5kIE1BWF9SRVBFQVQKCiMgcG9zaXRpb25zCkFUQ09ERVMgPSBfbWFrZWNvZGVzKAogICAgJ0FUX0JFR0lOTklORycsICdBVF9CRUdJTk5JTkdfTElORScsICdBVF9CRUdJTk5JTkdfU1RSSU5HJywKICAgICdBVF9CT1VOREFSWScsICdBVF9OT05fQk9VTkRBUlknLAogICAgJ0FUX0VORCcsICdBVF9FTkRfTElORScsICdBVF9FTkRfU1RSSU5HJywKCiAgICAnQVRfTE9DX0JPVU5EQVJZJywgJ0FUX0xPQ19OT05fQk9VTkRBUlknLAoKICAgICdBVF9VTklfQk9VTkRBUlknLCAnQVRfVU5JX05PTl9CT1VOREFSWScsCikKCiMgY2F0ZWdvcmllcwpDSENPREVTID0gX21ha2Vjb2RlcygKICAgICdDQVRFR09SWV9ESUdJVCcsICdDQVRFR09SWV9OT1RfRElHSVQnLAogICAgJ0NBVEVHT1JZX1NQQUNFJywgJ0NBVEVHT1JZX05PVF9TUEFDRScsCiAgICAnQ0FURUdPUllfV09SRCcsICdDQVRFR09SWV9OT1RfV09SRCcsCiAgICAnQ0FURUdPUllfTElORUJSRUFLJywgJ0NBVEVHT1JZX05PVF9MSU5FQlJFQUsnLAoKICAgICdDQVRFR09SWV9MT0NfV09SRCcsICdDQVRFR09SWV9MT0NfTk9UX1dPUkQnLAoKICAgICdDQVRFR09SWV9VTklfRElHSVQnLCAnQ0FURUdPUllfVU5JX05PVF9ESUdJVCcsCiAgICAnQ0FURUdPUllfVU5JX1NQQUNFJywgJ0NBVEVHT1JZX1VOSV9OT1RfU1BBQ0UnLAogICAgJ0NBVEVHT1JZX1VOSV9XT1JEJywgJ0NBVEVHT1JZX1VOSV9OT1RfV09SRCcsCiAgICAnQ0FURUdPUllfVU5JX0xJTkVCUkVBSycsICdDQVRFR09SWV9VTklfTk9UX0xJTkVCUkVBSycsCikKCgojIHJlcGxhY2VtZW50IG9wZXJhdGlvbnMgZm9yICJpZ25vcmUgY2FzZSIgbW9kZQpPUF9JR05PUkUgPSB7CiAgICBMSVRFUkFMOiBMSVRFUkFMX0lHTk9SRSwKICAgIE5PVF9MSVRFUkFMOiBOT1RfTElURVJBTF9JR05PUkUsCn0KCk9QX0xPQ0FMRV9JR05PUkUgPSB7CiAgICBMSVRFUkFMOiBMSVRFUkFMX0xPQ19JR05PUkUsCiAgICBOT1RfTElURVJBTDogTk9UX0xJVEVSQUxfTE9DX0lHTk9SRSwKfQoKT1BfVU5JQ09ERV9JR05PUkUgPSB7CiAgICBMSVRFUkFMOiBMSVRFUkFMX1VOSV9JR05PUkUsCiAgICBOT1RfTElURVJBTDogTk9UX0xJVEVSQUxfVU5JX0lHTk9SRSwKfQoKQVRfTVVMVElMSU5FID0gewogICAgQVRfQkVHSU5OSU5HOiBBVF9CRUdJTk5JTkdfTElORSwKICAgIEFUX0VORDogQVRfRU5EX0xJTkUKfQoKQVRfTE9DQUxFID0gewogICAgQVRfQk9VTkRBUlk6IEFUX0xPQ19CT1VOREFSWSwKICAgIEFUX05PTl9CT1VOREFSWTogQVRfTE9DX05PTl9CT1VOREFSWQp9CgpBVF9VTklDT0RFID0gewogICAgQVRfQk9VTkRBUlk6IEFUX1VOSV9CT1VOREFSWSwKICAgIEFUX05PTl9CT1VOREFSWTogQVRfVU5JX05PTl9CT1VOREFSWQp9CgpDSF9MT0NBTEUgPSB7CiAgICBDQVRFR09SWV9ESUdJVDogQ0FURUdPUllfRElHSVQsCiAgICBDQVRFR09SWV9OT1RfRElHSVQ6IENBVEVHT1JZX05PVF9ESUdJVCwKICAgIENBVEVHT1JZX1NQQUNFOiBDQVRFR09SWV9TUEFDRSwKICAgIENBVEVHT1JZX05PVF9TUEFDRTogQ0FURUdPUllfTk9UX1NQQUNFLAogICAgQ0FURUdPUllfV09SRDogQ0FURUdPUllfTE9DX1dPUkQsCiAgICBDQVRFR09SWV9OT1RfV09SRDogQ0FURUdPUllfTE9DX05PVF9XT1JELAogICAgQ0FURUdPUllfTElORUJSRUFLOiBDQVRFR09SWV9MSU5FQlJFQUssCiAgICBDQVRFR09SWV9OT1RfTElORUJSRUFLOiBDQVRFR09SWV9OT1RfTElORUJSRUFLCn0KCkNIX1VOSUNPREUgPSB7CiAgICBDQVRFR09SWV9ESUdJVDogQ0FURUdPUllfVU5JX0RJR0lULAogICAgQ0FURUdPUllfTk9UX0RJR0lUOiBDQVRFR09SWV9VTklfTk9UX0RJR0lULAogICAgQ0FURUdPUllfU1BBQ0U6IENBVEVHT1JZX1VOSV9TUEFDRSwKICAgIENBVEVHT1JZX05PVF9TUEFDRTogQ0FURUdPUllfVU5JX05PVF9TUEFDRSwKICAgIENBVEVHT1JZX1dPUkQ6IENBVEVHT1JZX1VOSV9XT1JELAogICAgQ0FURUdPUllfTk9UX1dPUkQ6IENBVEVHT1JZX1VOSV9OT1RfV09SRCwKICAgIENBVEVHT1JZX0xJTkVCUkVBSzogQ0FURUdPUllfVU5JX0xJTkVCUkVBSywKICAgIENBVEVHT1JZX05PVF9MSU5FQlJFQUs6IENBVEVHT1JZX1VOSV9OT1RfTElORUJSRUFLCn0KCiMgZmxhZ3MKU1JFX0ZMQUdfVEVNUExBVEUgPSAxICMgdGVtcGxhdGUgbW9kZSAodW5rbm93biBwdXJwb3NlLCBkZXByZWNhdGVkKQpTUkVfRkxBR19JR05PUkVDQVNFID0gMiAjIGNhc2UgaW5zZW5zaXRpdmUKU1JFX0ZMQUdfTE9DQUxFID0gNCAjIGhvbm91ciBzeXN0ZW0gbG9jYWxlClNSRV9GTEFHX01VTFRJTElORSA9IDggIyB0cmVhdCB0YXJnZXQgYXMgbXVsdGlsaW5lIHN0cmluZwpTUkVfRkxBR19ET1RBTEwgPSAxNiAjIHRyZWF0IHRhcmdldCBhcyBhIHNpbmdsZSBzdHJpbmcKU1JFX0ZMQUdfVU5JQ09ERSA9IDMyICMgdXNlIHVuaWNvZGUgImxvY2FsZSIKU1JFX0ZMQUdfVkVSQk9TRSA9IDY0ICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzClNSRV9GTEFHX0RFQlVHID0gMTI4ICMgZGVidWdnaW5nClNSRV9GTEFHX0FTQ0lJID0gMjU2ICMgdXNlIGFzY2lpICJsb2NhbGUiCgojIGZsYWdzIGZvciBJTkZPIHByaW1pdGl2ZQpTUkVfSU5GT19QUkVGSVggPSAxICMgaGFzIHByZWZpeApTUkVfSU5GT19MSVRFUkFMID0gMiAjIGVudGlyZSBwYXR0ZXJuIGlzIGxpdGVyYWwgKGdpdmVuIGJ5IHByZWZpeCkKU1JFX0lORk9fQ0hBUlNFVCA9IDQgIyBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGNoYXJhY3RlciBmcm9tIGdpdmVuIHNldApQSwMEFAAAAAAAAyCjVuLyI1OBpAAAgaQAAA0AAAByZS9fcGFyc2VyLnB5IwojIFNlY3JldCBMYWJzJyBSZWd1bGFyIEV4cHJlc3Npb24gRW5naW5lCiMKIyBjb252ZXJ0IHJlLXN0eWxlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzcmUgcGF0dGVybgojCiMgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgYnkgU2VjcmV0IExhYnMgQUIuICBBbGwgcmlnaHRzIHJlc2VydmVkLgojCiMgU2VlIHRoZSBfX2luaXRfXy5weSBmaWxlIGZvciBpbmZvcm1hdGlvbiBvbiB1c2FnZSBhbmQgcmVkaXN0cmlidXRpb24uCiMKCiIiIkludGVybmFsIHN1cHBvcnQgbW9kdWxlIGZvciBzcmUiIiIKCiMgWFhYOiBzaG93IHN0cmluZyBvZmZzZXQgYW5kIG9mZmVuZGluZyBjaGFyYWN0ZXIgZm9yIGFsbCBlcnJvcnMKCmZyb20gLl9jb25zdGFudHMgaW1wb3J0ICoKClNQRUNJQUxfQ0hBUlMgPSAiLlxcW3soKSorP14kfCIKUkVQRUFUX0NIQVJTID0gIiorP3siCgpESUdJVFMgPSBmcm96ZW5zZXQoIjAxMjM0NTY3ODkiKQoKT0NURElHSVRTID0gZnJvemVuc2V0KCIwMTIzNDU2NyIpCkhFWERJR0lUUyA9IGZyb3plbnNldCgiMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRiIpCkFTQ0lJTEVUVEVSUyA9IGZyb3plbnNldCgiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIpCgpXSElURVNQQUNFID0gZnJvemVuc2V0KCIgXHRcblxyXHZcZiIpCgpfUkVQRUFUQ09ERVMgPSBmcm96ZW5zZXQoe01JTl9SRVBFQVQsIE1BWF9SRVBFQVQsIFBPU1NFU1NJVkVfUkVQRUFUfSkKX1VOSVRDT0RFUyA9IGZyb3plbnNldCh7QU5ZLCBSQU5HRSwgSU4sIExJVEVSQUwsIE5PVF9MSVRFUkFMLCBDQVRFR09SWX0pCgpFU0NBUEVTID0gewogICAgciJcYSI6IChMSVRFUkFMLCBvcmQoIlxhIikpLAogICAgciJcYiI6IChMSVRFUkFMLCBvcmQoIlxiIikpLAogICAgciJcZiI6IChMSVRFUkFMLCBvcmQoIlxmIikpLAogICAgciJcbiI6IChMSVRFUkFMLCBvcmQoIlxuIikpLAogICAgciJcciI6IChMSVRFUkFMLCBvcmQoIlxyIikpLAogICAgciJcdCI6IChMSVRFUkFMLCBvcmQoIlx0IikpLAogICAgciJcdiI6IChMSVRFUkFMLCBvcmQoIlx2IikpLAogICAgciJcXCI6IChMSVRFUkFMLCBvcmQoIlxcIikpCn0KCkNBVEVHT1JJRVMgPSB7CiAgICByIlxBIjogKEFULCBBVF9CRUdJTk5JTkdfU1RSSU5HKSwgIyBzdGFydCBvZiBzdHJpbmcKICAgIHIiXGIiOiAoQVQsIEFUX0JPVU5EQVJZKSwKICAgIHIiXEIiOiAoQVQsIEFUX05PTl9CT1VOREFSWSksCiAgICByIlxkIjogKElOLCBbKENBVEVHT1JZLCBDQVRFR09SWV9ESUdJVCldKSwKICAgIHIiXEQiOiAoSU4sIFsoQ0FURUdPUlksIENBVEVHT1JZX05PVF9ESUdJVCldKSwKICAgIHIiXHMiOiAoSU4sIFsoQ0FURUdPUlksIENBVEVHT1JZX1NQQUNFKV0pLAogICAgciJcUyI6IChJTiwgWyhDQVRFR09SWSwgQ0FURUdPUllfTk9UX1NQQUNFKV0pLAogICAgciJcdyI6IChJTiwgWyhDQVRFR09SWSwgQ0FURUdPUllfV09SRCldKSwKICAgIHIiXFciOiAoSU4sIFsoQ0FURUdPUlksIENBVEVHT1JZX05PVF9XT1JEKV0pLAogICAgciJcWiI6IChBVCwgQVRfRU5EX1NUUklORyksICMgZW5kIG9mIHN0cmluZwp9CgpGTEFHUyA9IHsKICAgICMgc3RhbmRhcmQgZmxhZ3MKICAgICJpIjogU1JFX0ZMQUdfSUdOT1JFQ0FTRSwKICAgICJMIjogU1JFX0ZMQUdfTE9DQUxFLAogICAgIm0iOiBTUkVfRkxBR19NVUxUSUxJTkUsCiAgICAicyI6IFNSRV9GTEFHX0RPVEFMTCwKICAgICJ4IjogU1JFX0ZMQUdfVkVSQk9TRSwKICAgICMgZXh0ZW5zaW9ucwogICAgImEiOiBTUkVfRkxBR19BU0NJSSwKICAgICJ0IjogU1JFX0ZMQUdfVEVNUExBVEUsCiAgICAidSI6IFNSRV9GTEFHX1VOSUNPREUsCn0KClRZUEVfRkxBR1MgPSBTUkVfRkxBR19BU0NJSSB8IFNSRV9GTEFHX0xPQ0FMRSB8IFNSRV9GTEFHX1VOSUNPREUKR0xPQkFMX0ZMQUdTID0gU1JFX0ZMQUdfREVCVUcgfCBTUkVfRkxBR19URU1QTEFURQoKY2xhc3MgU3RhdGU6CiAgICAjIGtlZXBzIHRyYWNrIG9mIHN0YXRlIGZvciBwYXJzaW5nCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5mbGFncyA9IDAKICAgICAgICBzZWxmLmdyb3VwZGljdCA9IHt9CiAgICAgICAgc2VsZi5ncm91cHdpZHRocyA9IFtOb25lXSAgIyBncm91cCAwCiAgICAgICAgc2VsZi5sb29rYmVoaW5kZ3JvdXBzID0gTm9uZQogICAgICAgIHNlbGYuZ3JvdXByZWZwb3MgPSB7fQogICAgQHByb3BlcnR5CiAgICBkZWYgZ3JvdXBzKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5ncm91cHdpZHRocykKICAgIGRlZiBvcGVuZ3JvdXAoc2VsZiwgbmFtZT1Ob25lKToKICAgICAgICBnaWQgPSBzZWxmLmdyb3VwcwogICAgICAgIHNlbGYuZ3JvdXB3aWR0aHMuYXBwZW5kKE5vbmUpCiAgICAgICAgaWYgc2VsZi5ncm91cHMgPiBNQVhHUk9VUFM6CiAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ0b28gbWFueSBncm91cHMiKQogICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG9naWQgPSBzZWxmLmdyb3VwZGljdC5nZXQobmFtZSwgTm9uZSkKICAgICAgICAgICAgaWYgb2dpZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJyZWRlZmluaXRpb24gb2YgZ3JvdXAgbmFtZSAlciBhcyBncm91cCAlZDsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcyBncm91cCAlZCIgJSAobmFtZSwgZ2lkLCAgb2dpZCkpCiAgICAgICAgICAgIHNlbGYuZ3JvdXBkaWN0W25hbWVdID0gZ2lkCiAgICAgICAgcmV0dXJuIGdpZAogICAgZGVmIGNsb3NlZ3JvdXAoc2VsZiwgZ2lkLCBwKToKICAgICAgICBzZWxmLmdyb3Vwd2lkdGhzW2dpZF0gPSBwLmdldHdpZHRoKCkKICAgIGRlZiBjaGVja2dyb3VwKHNlbGYsIGdpZCk6CiAgICAgICAgcmV0dXJuIGdpZCA8IHNlbGYuZ3JvdXBzIGFuZCBzZWxmLmdyb3Vwd2lkdGhzW2dpZF0gaXMgbm90IE5vbmUKCiAgICBkZWYgY2hlY2tsb29rYmVoaW5kZ3JvdXAoc2VsZiwgZ2lkLCBzb3VyY2UpOgogICAgICAgIGlmIHNlbGYubG9va2JlaGluZGdyb3VwcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbm90IHNlbGYuY2hlY2tncm91cChnaWQpOgogICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCcpCiAgICAgICAgICAgIGlmIGdpZCA+PSBzZWxmLmxvb2tiZWhpbmRncm91cHM6CiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ2Nhbm5vdCByZWZlciB0byBncm91cCBkZWZpbmVkIGluIHRoZSBzYW1lICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9va2JlaGluZCBzdWJwYXR0ZXJuJykKCmNsYXNzIFN1YlBhdHRlcm46CiAgICAjIGEgc3VicGF0dGVybiwgaW4gaW50ZXJtZWRpYXRlIGZvcm0KICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGF0ZSwgZGF0YT1Ob25lKToKICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUKICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgIGRhdGEgPSBbXQogICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKICAgICAgICBzZWxmLndpZHRoID0gTm9uZQoKICAgIGRlZiBkdW1wKHNlbGYsIGxldmVsPTApOgogICAgICAgIG5sID0gVHJ1ZQogICAgICAgIHNlcXR5cGVzID0gKHR1cGxlLCBsaXN0KQogICAgICAgIGZvciBvcCwgYXYgaW4gc2VsZi5kYXRhOgogICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgc3RyKG9wKSwgZW5kPScnKQogICAgICAgICAgICBpZiBvcCBpcyBJTjoKICAgICAgICAgICAgICAgICMgbWVtYmVyIHN1Ymxhbmd1YWdlCiAgICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgICBmb3Igb3AsIGEgaW4gYXY6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoKGxldmVsKzEpKiIgICIgKyBzdHIob3ApLCBhKQogICAgICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKICAgICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgICAgIGZvciBpLCBhIGluIGVudW1lcmF0ZShhdlsxXSk6CiAgICAgICAgICAgICAgICAgICAgaWYgaToKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQobGV2ZWwqIiAgIiArICJPUiIpCiAgICAgICAgICAgICAgICAgICAgYS5kdW1wKGxldmVsKzEpCiAgICAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUZfRVhJU1RTOgogICAgICAgICAgICAgICAgY29uZGdyb3VwLCBpdGVtX3llcywgaXRlbV9ubyA9IGF2CiAgICAgICAgICAgICAgICBwcmludCgnJywgY29uZGdyb3VwKQogICAgICAgICAgICAgICAgaXRlbV95ZXMuZHVtcChsZXZlbCsxKQogICAgICAgICAgICAgICAgaWYgaXRlbV9ubzoKICAgICAgICAgICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgIkVMU0UiKQogICAgICAgICAgICAgICAgICAgIGl0ZW1fbm8uZHVtcChsZXZlbCsxKQogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXYsIHNlcXR5cGVzKToKICAgICAgICAgICAgICAgIG5sID0gRmFsc2UKICAgICAgICAgICAgICAgIGZvciBhIGluIGF2OgogICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgU3ViUGF0dGVybik6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBubDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgYS5kdW1wKGxldmVsKzEpCiAgICAgICAgICAgICAgICAgICAgICAgIG5sID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBubDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCcgJywgZW5kPScnKQogICAgICAgICAgICAgICAgICAgICAgICBwcmludChhLCBlbmQ9JycpCiAgICAgICAgICAgICAgICAgICAgICAgIG5sID0gRmFsc2UKICAgICAgICAgICAgICAgIGlmIG5vdCBubDoKICAgICAgICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludCgnJywgYXYpCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHJlcHIoc2VsZi5kYXRhKQogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCiAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgIGRlbCBzZWxmLmRhdGFbaW5kZXhdCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoaW5kZXgsIHNsaWNlKToKICAgICAgICAgICAgcmV0dXJuIFN1YlBhdHRlcm4oc2VsZi5zdGF0ZSwgc2VsZi5kYXRhW2luZGV4XSkKICAgICAgICByZXR1cm4gc2VsZi5kYXRhW2luZGV4XQogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCBjb2RlKToKICAgICAgICBzZWxmLmRhdGFbaW5kZXhdID0gY29kZQogICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgY29kZSk6CiAgICAgICAgc2VsZi5kYXRhLmluc2VydChpbmRleCwgY29kZSkKICAgIGRlZiBhcHBlbmQoc2VsZiwgY29kZSk6CiAgICAgICAgc2VsZi5kYXRhLmFwcGVuZChjb2RlKQogICAgZGVmIGdldHdpZHRoKHNlbGYpOgogICAgICAgICMgZGV0ZXJtaW5lIHRoZSB3aWR0aCAobWluLCBtYXgpIGZvciB0aGlzIHN1YnBhdHRlcm4KICAgICAgICBpZiBzZWxmLndpZHRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZi53aWR0aAogICAgICAgIGxvID0gaGkgPSAwCiAgICAgICAgZm9yIG9wLCBhdiBpbiBzZWxmLmRhdGE6CiAgICAgICAgICAgIGlmIG9wIGlzIEJSQU5DSDoKICAgICAgICAgICAgICAgIGkgPSBNQVhSRVBFQVQgLSAxCiAgICAgICAgICAgICAgICBqID0gMAogICAgICAgICAgICAgICAgZm9yIGF2IGluIGF2WzFdOgogICAgICAgICAgICAgICAgICAgIGwsIGggPSBhdi5nZXR3aWR0aCgpCiAgICAgICAgICAgICAgICAgICAgaSA9IG1pbihpLCBsKQogICAgICAgICAgICAgICAgICAgIGogPSBtYXgoaiwgaCkKICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICBoaSA9IGhpICsgagogICAgICAgICAgICBlbGlmIG9wIGlzIEFUT01JQ19HUk9VUDoKICAgICAgICAgICAgICAgIGksIGogPSBhdi5nZXR3aWR0aCgpCiAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKICAgICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgogICAgICAgICAgICAgICAgaSwgaiA9IGF2Wy0xXS5nZXR3aWR0aCgpCiAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKICAgICAgICAgICAgZWxpZiBvcCBpbiBfUkVQRUFUQ09ERVM6CiAgICAgICAgICAgICAgICBpLCBqID0gYXZbMl0uZ2V0d2lkdGgoKQogICAgICAgICAgICAgICAgbG8gPSBsbyArIGkgKiBhdlswXQogICAgICAgICAgICAgICAgaGkgPSBoaSArIGogKiBhdlsxXQogICAgICAgICAgICBlbGlmIG9wIGluIF9VTklUQ09ERVM6CiAgICAgICAgICAgICAgICBsbyA9IGxvICsgMQogICAgICAgICAgICAgICAgaGkgPSBoaSArIDEKICAgICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRjoKICAgICAgICAgICAgICAgIGksIGogPSBzZWxmLnN0YXRlLmdyb3Vwd2lkdGhzW2F2XQogICAgICAgICAgICAgICAgbG8gPSBsbyArIGkKICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCiAgICAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUZfRVhJU1RTOgogICAgICAgICAgICAgICAgaSwgaiA9IGF2WzFdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgIGlmIGF2WzJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIGwsIGggPSBhdlsyXS5nZXR3aWR0aCgpCiAgICAgICAgICAgICAgICAgICAgaSA9IG1pbihpLCBsKQogICAgICAgICAgICAgICAgICAgIGogPSBtYXgoaiwgaCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaSA9IDAKICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICBoaSA9IGhpICsgagogICAgICAgICAgICBlbGlmIG9wIGlzIFNVQ0NFU1M6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHNlbGYud2lkdGggPSBtaW4obG8sIE1BWFJFUEVBVCAtIDEpLCBtaW4oaGksIE1BWFJFUEVBVCkKICAgICAgICByZXR1cm4gc2VsZi53aWR0aAoKY2xhc3MgVG9rZW5pemVyOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmluZyk6CiAgICAgICAgc2VsZi5pc3RleHQgPSBpc2luc3RhbmNlKHN0cmluZywgc3RyKQogICAgICAgIHNlbGYuc3RyaW5nID0gc3RyaW5nCiAgICAgICAgaWYgbm90IHNlbGYuaXN0ZXh0OgogICAgICAgICAgICBzdHJpbmcgPSBzdHIoc3RyaW5nLCAnbGF0aW4xJykKICAgICAgICBzZWxmLmRlY29kZWRfc3RyaW5nID0gc3RyaW5nCiAgICAgICAgc2VsZi5pbmRleCA9IDAKICAgICAgICBzZWxmLm5leHQgPSBOb25lCiAgICAgICAgc2VsZi5fX25leHQoKQogICAgZGVmIF9fbmV4dChzZWxmKToKICAgICAgICBpbmRleCA9IHNlbGYuaW5kZXgKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNoYXIgPSBzZWxmLmRlY29kZWRfc3RyaW5nW2luZGV4XQogICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICBzZWxmLm5leHQgPSBOb25lCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIGNoYXIgPT0gIlxcIjoKICAgICAgICAgICAgaW5kZXggKz0gMQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBjaGFyICs9IHNlbGYuZGVjb2RlZF9zdHJpbmdbaW5kZXhdCiAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBlc2NhcGUgKGVuZCBvZiBwYXR0ZXJuKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0cmluZywgbGVuKHNlbGYuc3RyaW5nKSAtIDEpIGZyb20gTm9uZQogICAgICAgIHNlbGYuaW5kZXggPSBpbmRleCArIDEKICAgICAgICBzZWxmLm5leHQgPSBjaGFyCiAgICBkZWYgbWF0Y2goc2VsZiwgY2hhcik6CiAgICAgICAgaWYgY2hhciA9PSBzZWxmLm5leHQ6CiAgICAgICAgICAgIHNlbGYuX19uZXh0KCkKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgdGhpcyA9IHNlbGYubmV4dAogICAgICAgIHNlbGYuX19uZXh0KCkKICAgICAgICByZXR1cm4gdGhpcwogICAgZGVmIGdldHdoaWxlKHNlbGYsIG4sIGNoYXJzZXQpOgogICAgICAgIHJlc3VsdCA9ICcnCiAgICAgICAgZm9yIF8gaW4gcmFuZ2Uobik6CiAgICAgICAgICAgIGMgPSBzZWxmLm5leHQKICAgICAgICAgICAgaWYgYyBub3QgaW4gY2hhcnNldDoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHJlc3VsdCArPSBjCiAgICAgICAgICAgIHNlbGYuX19uZXh0KCkKICAgICAgICByZXR1cm4gcmVzdWx0CiAgICBkZWYgZ2V0dW50aWwoc2VsZiwgdGVybWluYXRvciwgbmFtZSk6CiAgICAgICAgcmVzdWx0ID0gJycKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBjID0gc2VsZi5uZXh0CiAgICAgICAgICAgIHNlbGYuX19uZXh0KCkKICAgICAgICAgICAgaWYgYyBpcyBOb25lOgogICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmVycm9yKCJtaXNzaW5nICIgKyBuYW1lKQogICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigibWlzc2luZyAlcywgdW50ZXJtaW5hdGVkIG5hbWUiICUgdGVybWluYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHJlc3VsdCkpCiAgICAgICAgICAgIGlmIGMgPT0gdGVybWluYXRvcjoKICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigibWlzc2luZyAiICsgbmFtZSwgMSkKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHJlc3VsdCArPSBjCiAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgQHByb3BlcnR5CiAgICBkZWYgcG9zKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgIGRlZiBzZWVrKHNlbGYsIGluZGV4KToKICAgICAgICBzZWxmLmluZGV4ID0gaW5kZXgKICAgICAgICBzZWxmLl9fbmV4dCgpCgogICAgZGVmIGVycm9yKHNlbGYsIG1zZywgb2Zmc2V0PTApOgogICAgICAgIGlmIG5vdCBzZWxmLmlzdGV4dDoKICAgICAgICAgICAgbXNnID0gbXNnLmVuY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpLmRlY29kZSgnYXNjaWknKQogICAgICAgIHJldHVybiBlcnJvcihtc2csIHNlbGYuc3RyaW5nLCBzZWxmLnRlbGwoKSAtIG9mZnNldCkKCiAgICBkZWYgY2hlY2tncm91cG5hbWUoc2VsZiwgbmFtZSwgb2Zmc2V0LCBuZXN0ZWQpOgogICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICBtc2cgPSAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICVyIiAlIG5hbWUKICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcihtc2csIGxlbihuYW1lKSArIG9mZnNldCkKICAgICAgICBpZiBub3QgKHNlbGYuaXN0ZXh0IG9yIG5hbWUuaXNhc2NpaSgpKToKICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICVhIGF0IHBvc2l0aW9uICVkIiAlCiAgICAgICAgICAgICAgICAobmFtZSwgc2VsZi50ZWxsKCkgLSBsZW4obmFtZSkgLSBvZmZzZXQpLAogICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPW5lc3RlZCArIDcKICAgICAgICAgICAgKQoKZGVmIF9jbGFzc19lc2NhcGUoc291cmNlLCBlc2NhcGUpOgogICAgIyBoYW5kbGUgZXNjYXBlIGNvZGUgaW5zaWRlIGNoYXJhY3RlciBjbGFzcwogICAgY29kZSA9IEVTQ0FQRVMuZ2V0KGVzY2FwZSkKICAgIGlmIGNvZGU6CiAgICAgICAgcmV0dXJuIGNvZGUKICAgIGNvZGUgPSBDQVRFR09SSUVTLmdldChlc2NhcGUpCiAgICBpZiBjb2RlIGFuZCBjb2RlWzBdIGlzIElOOgogICAgICAgIHJldHVybiBjb2RlCiAgICB0cnk6CiAgICAgICAgYyA9IGVzY2FwZVsxOjJdCiAgICAgICAgaWYgYyA9PSAieCI6CiAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlIChleGFjdGx5IHR3byBkaWdpdHMpCiAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgSEVYRElHSVRTKQogICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgogICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZm91ciBkaWdpdHMpCiAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQogICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgogICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgIGVsaWYgYyA9PSAiVSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZWlnaHQgZGlnaXRzKQogICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMTA6CiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgICAgIGNocihjKSAjIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQgY29kZQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgIGVsaWYgYyA9PSAiTiIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQogICAgICAgICAgICAjIG5hbWVkIHVuaWNvZGUgZXNjYXBlIGUuZy4gXE57RU0gREFTSH0KICAgICAgICAgICAgaWYgbm90IHNvdXJjZS5tYXRjaCgneycpOgogICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nIHsiKQogICAgICAgICAgICBjaGFybmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgnfScsICdjaGFyYWN0ZXIgbmFtZScpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGMgPSBvcmQodW5pY29kZWRhdGEubG9va3VwKGNoYXJuYW1lKSkKICAgICAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgVHlwZUVycm9yKToKICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5kZWZpbmVkIGNoYXJhY3RlciBuYW1lICVyIiAlIGNoYXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFybmFtZSkgKyBsZW4ocidcTnt9JykpIGZyb20gTm9uZQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgIGVsaWYgYyBpbiBPQ1RESUdJVFM6CiAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICh1cCB0byB0aHJlZSBkaWdpdHMpCiAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQogICAgICAgICAgICBjID0gaW50KGVzY2FwZVsxOl0sIDgpCiAgICAgICAgICAgIGlmIGMgPiAwbzM3NzoKICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcignb2N0YWwgZXNjYXBlIHZhbHVlICVzIG91dHNpZGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZSAwLTBvMzc3JyAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgZWxpZiBjIGluIERJR0lUUzoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgogICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgcGFzcwogICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCgpkZWYgX2VzY2FwZShzb3VyY2UsIGVzY2FwZSwgc3RhdGUpOgogICAgIyBoYW5kbGUgZXNjYXBlIGNvZGUgaW4gZXhwcmVzc2lvbgogICAgY29kZSA9IENBVEVHT1JJRVMuZ2V0KGVzY2FwZSkKICAgIGlmIGNvZGU6CiAgICAgICAgcmV0dXJuIGNvZGUKICAgIGNvZGUgPSBFU0NBUEVTLmdldChlc2NhcGUpCiAgICBpZiBjb2RlOgogICAgICAgIHJldHVybiBjb2RlCiAgICB0cnk6CiAgICAgICAgYyA9IGVzY2FwZVsxOjJdCiAgICAgICAgaWYgYyA9PSAieCI6CiAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlCiAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgSEVYRElHSVRTKQogICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgogICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZm91ciBkaWdpdHMpCiAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQogICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgogICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgIGVsaWYgYyA9PSAiVSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZWlnaHQgZGlnaXRzKQogICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMTA6CiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgICAgIGNocihjKSAjIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQgY29kZQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgIGVsaWYgYyA9PSAiTiIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQogICAgICAgICAgICAjIG5hbWVkIHVuaWNvZGUgZXNjYXBlIGUuZy4gXE57RU0gREFTSH0KICAgICAgICAgICAgaWYgbm90IHNvdXJjZS5tYXRjaCgneycpOgogICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nIHsiKQogICAgICAgICAgICBjaGFybmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgnfScsICdjaGFyYWN0ZXIgbmFtZScpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGMgPSBvcmQodW5pY29kZWRhdGEubG9va3VwKGNoYXJuYW1lKSkKICAgICAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgVHlwZUVycm9yKToKICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5kZWZpbmVkIGNoYXJhY3RlciBuYW1lICVyIiAlIGNoYXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFybmFtZSkgKyBsZW4ocidcTnt9JykpIGZyb20gTm9uZQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgIGVsaWYgYyA9PSAiMCI6CiAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlCiAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsxOl0sIDgpCiAgICAgICAgZWxpZiBjIGluIERJR0lUUzoKICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUgKm9yKiBkZWNpbWFsIGdyb3VwIHJlZmVyZW5jZSAoc2lnaCkKICAgICAgICAgICAgaWYgc291cmNlLm5leHQgaW4gRElHSVRTOgogICAgICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXQoKQogICAgICAgICAgICAgICAgaWYgKGVzY2FwZVsxXSBpbiBPQ1RESUdJVFMgYW5kIGVzY2FwZVsyXSBpbiBPQ1RESUdJVFMgYW5kCiAgICAgICAgICAgICAgICAgICAgc291cmNlLm5leHQgaW4gT0NURElHSVRTKToKICAgICAgICAgICAgICAgICAgICAjIGdvdCB0aHJlZSBvY3RhbCBkaWdpdHM7IHRoaXMgaXMgYW4gb2N0YWwgZXNjYXBlCiAgICAgICAgICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXQoKQogICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzE6XSwgOCkKICAgICAgICAgICAgICAgICAgICBpZiBjID4gMG8zNzc6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcignb2N0YWwgZXNjYXBlIHZhbHVlICVzIG91dHNpZGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmdlIDAtMG8zNzcnICUgZXNjYXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGMKICAgICAgICAgICAgIyBub3QgYW4gb2N0YWwgZXNjYXBlLCBzbyB0aGlzIGlzIGEgZ3JvdXAgcmVmZXJlbmNlCiAgICAgICAgICAgIGdyb3VwID0gaW50KGVzY2FwZVsxOl0pCiAgICAgICAgICAgIGlmIGdyb3VwIDwgc3RhdGUuZ3JvdXBzOgogICAgICAgICAgICAgICAgaWYgbm90IHN0YXRlLmNoZWNrZ3JvdXAoZ3JvdXApOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiY2Fubm90IHJlZmVyIHRvIGFuIG9wZW4gZ3JvdXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGdyb3VwLCBzb3VyY2UpCiAgICAgICAgICAgICAgICByZXR1cm4gR1JPVVBSRUYsIGdyb3VwCiAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgZ3JvdXAsIGxlbihlc2NhcGUpIC0gMSkKICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgogICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHBhc3MKICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQoKZGVmIF91bmlxKGl0ZW1zKToKICAgIHJldHVybiBsaXN0KGRpY3QuZnJvbWtleXMoaXRlbXMpKQoKZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSwgbmVzdGVkKToKICAgICMgcGFyc2UgYW4gYWx0ZXJuYXRpb246IGF8YnxjCgogICAgaXRlbXMgPSBbXQogICAgaXRlbXNhcHBlbmQgPSBpdGVtcy5hcHBlbmQKICAgIHNvdXJjZW1hdGNoID0gc291cmNlLm1hdGNoCiAgICBzdGFydCA9IHNvdXJjZS50ZWxsKCkKICAgIHdoaWxlIFRydWU6CiAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UsIG5lc3RlZCArIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBuZXN0ZWQgYW5kIG5vdCBpdGVtcykpCiAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCJ8Iik6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgaWYgbm90IG5lc3RlZDoKICAgICAgICAgICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQoKICAgIGlmIGxlbihpdGVtcykgPT0gMToKICAgICAgICByZXR1cm4gaXRlbXNbMF0KCiAgICBzdWJwYXR0ZXJuID0gU3ViUGF0dGVybihzdGF0ZSkKCiAgICAjIGNoZWNrIGlmIGFsbCBpdGVtcyBzaGFyZSBhIGNvbW1vbiBwcmVmaXgKICAgIHdoaWxlIFRydWU6CiAgICAgICAgcHJlZml4ID0gTm9uZQogICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAgICAgICAgICBpZiBub3QgaXRlbToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlmIHByZWZpeCBpcyBOb25lOgogICAgICAgICAgICAgICAgcHJlZml4ID0gaXRlbVswXQogICAgICAgICAgICBlbGlmIGl0ZW1bMF0gIT0gcHJlZml4OgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGFsbCBzdWJpdGVtcyBzdGFydCB3aXRoIGEgY29tbW9uICJwcmVmaXgiLgogICAgICAgICAgICAjIG1vdmUgaXQgb3V0IG9mIHRoZSBicmFuY2gKICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgICAgICAgICBkZWwgaXRlbVswXQogICAgICAgICAgICBzdWJwYXR0ZXJuLmFwcGVuZChwcmVmaXgpCiAgICAgICAgICAgIGNvbnRpbnVlICMgY2hlY2sgbmV4dCBvbmUKICAgICAgICBicmVhawoKICAgICMgY2hlY2sgaWYgdGhlIGJyYW5jaCBjYW4gYmUgcmVwbGFjZWQgYnkgYSBjaGFyYWN0ZXIgc2V0CiAgICBzZXQgPSBbXQogICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgaWYgbGVuKGl0ZW0pICE9IDE6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgb3AsIGF2ID0gaXRlbVswXQogICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgICAgIHNldC5hcHBlbmQoKG9wLCBhdikpCiAgICAgICAgZWxpZiBvcCBpcyBJTiBhbmQgYXZbMF1bMF0gaXMgbm90IE5FR0FURToKICAgICAgICAgICAgc2V0LmV4dGVuZChhdikKICAgICAgICBlbHNlOgogICAgICAgICAgICBicmVhawogICAgZWxzZToKICAgICAgICAjIHdlIGNhbiBzdG9yZSB0aGlzIGFzIGEgY2hhcmFjdGVyIHNldCBpbnN0ZWFkIG9mIGEKICAgICAgICAjIGJyYW5jaCAodGhlIGNvbXBpbGVyIG1heSBvcHRpbWl6ZSB0aGlzIGV2ZW4gbW9yZSkKICAgICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoSU4sIF91bmlxKHNldCkpKQogICAgICAgIHJldHVybiBzdWJwYXR0ZXJuCgogICAgc3VicGF0dGVybi5hcHBlbmQoKEJSQU5DSCwgKE5vbmUsIGl0ZW1zKSkpCiAgICByZXR1cm4gc3VicGF0dGVybgoKZGVmIF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlLCBuZXN0ZWQsIGZpcnN0PUZhbHNlKToKICAgICMgcGFyc2UgYSBzaW1wbGUgcGF0dGVybgogICAgc3VicGF0dGVybiA9IFN1YlBhdHRlcm4oc3RhdGUpCgogICAgIyBwcmVjb21wdXRlIGNvbnN0YW50cyBpbnRvIGxvY2FsIHZhcmlhYmxlcwogICAgc3VicGF0dGVybmFwcGVuZCA9IHN1YnBhdHRlcm4uYXBwZW5kCiAgICBzb3VyY2VnZXQgPSBzb3VyY2UuZ2V0CiAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgX2xlbiA9IGxlbgogICAgX29yZCA9IG9yZAoKICAgIHdoaWxlIFRydWU6CgogICAgICAgIHRoaXMgPSBzb3VyY2UubmV4dAogICAgICAgIGlmIHRoaXMgaXMgTm9uZToKICAgICAgICAgICAgYnJlYWsgIyBlbmQgb2YgcGF0dGVybgogICAgICAgIGlmIHRoaXMgaW4gInwpIjoKICAgICAgICAgICAgYnJlYWsgIyBlbmQgb2Ygc3VicGF0dGVybgogICAgICAgIHNvdXJjZWdldCgpCgogICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICMgc2tpcCB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cwogICAgICAgICAgICBpZiB0aGlzIGluIFdISVRFU1BBQ0U6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiB0aGlzID09ICIjIjoKICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICAgICAgaWYgdGhpcyBpcyBOb25lIG9yIHRoaXMgPT0gIlxuIjoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgIGlmIHRoaXNbMF0gPT0gIlxcIjoKICAgICAgICAgICAgY29kZSA9IF9lc2NhcGUoc291cmNlLCB0aGlzLCBzdGF0ZSkKICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZChjb2RlKQoKICAgICAgICBlbGlmIHRoaXMgbm90IGluIFNQRUNJQUxfQ0hBUlM6CiAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIF9vcmQodGhpcykpKQoKICAgICAgICBlbGlmIHRoaXMgPT0gIlsiOgogICAgICAgICAgICBoZXJlID0gc291cmNlLnRlbGwoKSAtIDEKICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0CiAgICAgICAgICAgIHNldCA9IFtdCiAgICAgICAgICAgIHNldGFwcGVuZCA9IHNldC5hcHBlbmQKIyMgICAgICAgICAgaWYgc291cmNlbWF0Y2goIjoiKToKIyMgICAgICAgICAgICAgIHBhc3MgIyBoYW5kbGUgY2hhcmFjdGVyIGNsYXNzZXMKICAgICAgICAgICAgaWYgc291cmNlLm5leHQgPT0gJ1snOgogICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgICAgICdQb3NzaWJsZSBuZXN0ZWQgc2V0IGF0IHBvc2l0aW9uICVkJyAlIHNvdXJjZS50ZWxsKCksCiAgICAgICAgICAgICAgICAgICAgRnV0dXJlV2FybmluZywgc3RhY2tsZXZlbD1uZXN0ZWQgKyA2CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIG5lZ2F0ZSA9IHNvdXJjZW1hdGNoKCJeIikKICAgICAgICAgICAgIyBjaGVjayByZW1haW5pbmcgY2hhcmFjdGVycwogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICBpZiB0aGlzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBoZXJlKQogICAgICAgICAgICAgICAgaWYgdGhpcyA9PSAiXSIgYW5kIHNldDoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgZWxpZiB0aGlzWzBdID09ICJcXCI6CiAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgdGhpcykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaWYgc2V0IGFuZCB0aGlzIGluICctJn58JyBhbmQgc291cmNlLm5leHQgPT0gdGhpczoKICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUG9zc2libGUgc2V0ICVzIGF0IHBvc2l0aW9uICVkJyAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW5jZScgaWYgdGhpcyA9PSAnLScgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcnNlY3Rpb24nIGlmIHRoaXMgPT0gJyYnIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ltbWV0cmljIGRpZmZlcmVuY2UnIGlmIHRoaXMgPT0gJ34nIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1dHVyZVdhcm5pbmcsIHN0YWNrbGV2ZWw9bmVzdGVkICsgNgogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBMSVRFUkFMLCBfb3JkKHRoaXMpCiAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiLSIpOgogICAgICAgICAgICAgICAgICAgICMgcG90ZW50aWFsIHJhbmdlCiAgICAgICAgICAgICAgICAgICAgdGhhdCA9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICAgICAgaWYgdGhhdCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBoZXJlKQogICAgICAgICAgICAgICAgICAgIGlmIHRoYXQgPT0gIl0iOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBjb2RlMVswXSBpcyBJTjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUxID0gY29kZTFbMV1bMF0KICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKGNvZGUxKQogICAgICAgICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoKExJVEVSQUwsIF9vcmQoIi0iKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgaWYgdGhhdFswXSA9PSAiXFwiOgogICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IF9jbGFzc19lc2NhcGUoc291cmNlLCB0aGF0KQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoYXQgPT0gJy0nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQb3NzaWJsZSBzZXQgZGlmZmVyZW5jZSBhdCBwb3NpdGlvbiAlZCcgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXR1cmVXYXJuaW5nLCBzdGFja2xldmVsPW5lc3RlZCArIDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBMSVRFUkFMLCBfb3JkKHRoYXQpCiAgICAgICAgICAgICAgICAgICAgaWYgY29kZTFbMF0gIT0gTElURVJBTCBvciBjb2RlMlswXSAhPSBMSVRFUkFMOgogICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiYmFkIGNoYXJhY3RlciByYW5nZSAlcy0lcyIgJSAodGhpcywgdGhhdCkKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKHRoaXMpICsgMSArIGxlbih0aGF0KSkKICAgICAgICAgICAgICAgICAgICBsbyA9IGNvZGUxWzFdCiAgICAgICAgICAgICAgICAgICAgaGkgPSBjb2RlMlsxXQogICAgICAgICAgICAgICAgICAgIGlmIGhpIDwgbG86CiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIHJhbmdlICVzLSVzIiAlICh0aGlzLCB0aGF0KQogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4odGhpcykgKyAxICsgbGVuKHRoYXQpKQogICAgICAgICAgICAgICAgICAgIHNldGFwcGVuZCgoUkFOR0UsIChsbywgaGkpKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgaWYgY29kZTFbMF0gaXMgSU46CiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUxID0gY29kZTFbMV1bMF0KICAgICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoY29kZTEpCgogICAgICAgICAgICBzZXQgPSBfdW5pcShzZXQpCiAgICAgICAgICAgICMgWFhYOiA8Zmw+IHNob3VsZCBtb3ZlIHNldCBvcHRpbWl6YXRpb24gdG8gY29tcGlsZXIhCiAgICAgICAgICAgIGlmIF9sZW4oc2V0KSA9PSAxIGFuZCBzZXRbMF1bMF0gaXMgTElURVJBTDoKICAgICAgICAgICAgICAgICMgb3B0aW1pemF0aW9uCiAgICAgICAgICAgICAgICBpZiBuZWdhdGU6CiAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoTk9UX0xJVEVSQUwsIHNldFswXVsxXSkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoc2V0WzBdKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgbmVnYXRlOgogICAgICAgICAgICAgICAgICAgIHNldC5pbnNlcnQoMCwgKE5FR0FURSwgTm9uZSkpCiAgICAgICAgICAgICAgICAjIGNoYXJtYXAgb3B0aW1pemF0aW9uIGNhbid0IGJlIGFkZGVkIGhlcmUgYmVjYXVzZQogICAgICAgICAgICAgICAgIyBnbG9iYWwgZmxhZ3Mgc3RpbGwgYXJlIG5vdCBrbm93bgogICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoSU4sIHNldCkpCgogICAgICAgIGVsaWYgdGhpcyBpbiBSRVBFQVRfQ0hBUlM6CiAgICAgICAgICAgICMgcmVwZWF0IHByZXZpb3VzIGl0ZW0KICAgICAgICAgICAgaGVyZSA9IHNvdXJjZS50ZWxsKCkKICAgICAgICAgICAgaWYgdGhpcyA9PSAiPyI6CiAgICAgICAgICAgICAgICBtaW4sIG1heCA9IDAsIDEKICAgICAgICAgICAgZWxpZiB0aGlzID09ICIqIjoKICAgICAgICAgICAgICAgIG1pbiwgbWF4ID0gMCwgTUFYUkVQRUFUCgogICAgICAgICAgICBlbGlmIHRoaXMgPT0gIisiOgogICAgICAgICAgICAgICAgbWluLCBtYXggPSAxLCBNQVhSRVBFQVQKICAgICAgICAgICAgZWxpZiB0aGlzID09ICJ7IjoKICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0ID09ICJ9IjoKICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChMSVRFUkFMLCBfb3JkKHRoaXMpKSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgIG1pbiwgbWF4ID0gMCwgTUFYUkVQRUFUCiAgICAgICAgICAgICAgICBsbyA9IGhpID0gIiIKICAgICAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIERJR0lUUzoKICAgICAgICAgICAgICAgICAgICBsbyArPSBzb3VyY2VnZXQoKQogICAgICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIiwiKToKICAgICAgICAgICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBESUdJVFM6CiAgICAgICAgICAgICAgICAgICAgICAgIGhpICs9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGhpID0gbG8KICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgifSIpOgogICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIF9vcmQodGhpcykpKQogICAgICAgICAgICAgICAgICAgIHNvdXJjZS5zZWVrKGhlcmUpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICAgICBpZiBsbzoKICAgICAgICAgICAgICAgICAgICBtaW4gPSBpbnQobG8pCiAgICAgICAgICAgICAgICAgICAgaWYgbWluID49IE1BWFJFUEVBVDoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigidGhlIHJlcGV0aXRpb24gbnVtYmVyIGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICAgICBpZiBoaToKICAgICAgICAgICAgICAgICAgICBtYXggPSBpbnQoaGkpCiAgICAgICAgICAgICAgICAgICAgaWYgbWF4ID49IE1BWFJFUEVBVDoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigidGhlIHJlcGV0aXRpb24gbnVtYmVyIGlzIHRvbyBsYXJnZSIpCiAgICAgICAgICAgICAgICAgICAgaWYgbWF4IDwgbWluOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pbiByZXBlYXQgZ3JlYXRlciB0aGFuIG1heCByZXBlYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIGhlcmUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigidW5zdXBwb3J0ZWQgcXVhbnRpZmllciAlciIgJSAoY2hhciwpKQogICAgICAgICAgICAjIGZpZ3VyZSBvdXQgd2hpY2ggaXRlbSB0byByZXBlYXQKICAgICAgICAgICAgaWYgc3VicGF0dGVybjoKICAgICAgICAgICAgICAgIGl0ZW0gPSBzdWJwYXR0ZXJuWy0xOl0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGl0ZW0gPSBOb25lCiAgICAgICAgICAgIGlmIG5vdCBpdGVtIG9yIGl0ZW1bMF1bMF0gaXMgQVQ6CiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm5vdGhpbmcgdG8gcmVwZWF0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSArIGxlbih0aGlzKSkKICAgICAgICAgICAgaWYgaXRlbVswXVswXSBpbiBfUkVQRUFUQ09ERVM6CiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm11bHRpcGxlIHJlcGVhdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIGhlcmUgKyBsZW4odGhpcykpCiAgICAgICAgICAgIGlmIGl0ZW1bMF1bMF0gaXMgU1VCUEFUVEVSTjoKICAgICAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGl0ZW1bMF1bMV0KICAgICAgICAgICAgICAgIGlmIGdyb3VwIGlzIE5vbmUgYW5kIG5vdCBhZGRfZmxhZ3MgYW5kIG5vdCBkZWxfZmxhZ3M6CiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHAKICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIj8iKToKICAgICAgICAgICAgICAgICMgTm9uLUdyZWVkeSBNYXRjaAogICAgICAgICAgICAgICAgc3VicGF0dGVyblstMV0gPSAoTUlOX1JFUEVBVCwgKG1pbiwgbWF4LCBpdGVtKSkKICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiKyIpOgogICAgICAgICAgICAgICAgIyBQb3NzZXNzaXZlIE1hdGNoIChBbHdheXMgR3JlZWR5KQogICAgICAgICAgICAgICAgc3VicGF0dGVyblstMV0gPSAoUE9TU0VTU0lWRV9SRVBFQVQsIChtaW4sIG1heCwgaXRlbSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIEdyZWVkeSBNYXRjaAogICAgICAgICAgICAgICAgc3VicGF0dGVyblstMV0gPSAoTUFYX1JFUEVBVCwgKG1pbiwgbWF4LCBpdGVtKSkKCiAgICAgICAgZWxpZiB0aGlzID09ICIuIjoKICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoQU5ZLCBOb25lKSkKCiAgICAgICAgZWxpZiB0aGlzID09ICIoIjoKICAgICAgICAgICAgc3RhcnQgPSBzb3VyY2UudGVsbCgpIC0gMQogICAgICAgICAgICBjYXB0dXJlID0gVHJ1ZQogICAgICAgICAgICBhdG9taWMgPSBGYWxzZQogICAgICAgICAgICBuYW1lID0gTm9uZQogICAgICAgICAgICBhZGRfZmxhZ3MgPSAwCiAgICAgICAgICAgIGRlbF9mbGFncyA9IDAKICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIj8iKToKICAgICAgICAgICAgICAgICMgb3B0aW9ucwogICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIlAiOgogICAgICAgICAgICAgICAgICAgICMgcHl0aG9uIGV4dGVuc2lvbnMKICAgICAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPCIpOgogICAgICAgICAgICAgICAgICAgICAgICAjIG5hbWVkIGdyb3VwOiBza2lwIGZvcndhcmQgdG8gZW5kIG9mIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiPiIsICJncm91cCBuYW1lIikKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmNoZWNrZ3JvdXBuYW1lKG5hbWUsIDEsIG5lc3RlZCkKICAgICAgICAgICAgICAgICAgICBlbGlmIHNvdXJjZW1hdGNoKCI9Iik6CiAgICAgICAgICAgICAgICAgICAgICAgICMgbmFtZWQgYmFja3JlZmVyZW5jZQogICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc291cmNlLmdldHVudGlsKCIpIiwgImdyb3VwIG5hbWUiKQogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuY2hlY2tncm91cG5hbWUobmFtZSwgMSwgbmVzdGVkKQogICAgICAgICAgICAgICAgICAgICAgICBnaWQgPSBzdGF0ZS5ncm91cGRpY3QuZ2V0KG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdpZCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZ3JvdXAgbmFtZSAlciIgJSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4obmFtZSkgKyAxKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdGUuY2hlY2tncm91cChnaWQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoZ2lkLCBzb3VyY2UpCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEdST1VQUkVGLCBnaWQpKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiA/UCIgKyBjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMikKICAgICAgICAgICAgICAgIGVsaWYgY2hhciA9PSAiOiI6CiAgICAgICAgICAgICAgICAgICAgIyBub24tY2FwdHVyaW5nIGdyb3VwCiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZSA9IEZhbHNlCiAgICAgICAgICAgICAgICBlbGlmIGNoYXIgPT0gIiMiOgogICAgICAgICAgICAgICAgICAgICMgY29tbWVudAogICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBzdGFydCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlZ2V0KCkgPT0gIikiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiAiPSE8IjoKICAgICAgICAgICAgICAgICAgICAjIGxvb2thaGVhZCBhc3NlcnRpb25zCiAgICAgICAgICAgICAgICAgICAgZGlyID0gMQogICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIjwiOgogICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gIj0hIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBleHRlbnNpb24gPzwiICsgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY2hhcikgKyAyKQogICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSAtMSAjIGxvb2tiZWhpbmQKICAgICAgICAgICAgICAgICAgICAgICAgbG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmxvb2tiZWhpbmRncm91cHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmdyb3VwcwogICAgICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UsIG5lc3RlZCArIDEpCiAgICAgICAgICAgICAgICAgICAgaWYgZGlyIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IE5vbmUKICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goIikiKToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBzdGFydCkKICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICI9IjoKICAgICAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoQVNTRVJULCAoZGlyLCBwKSkpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoQVNTRVJUX05PVCwgKGRpciwgcCkpKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICAgICAgZWxpZiBjaGFyID09ICIoIjoKICAgICAgICAgICAgICAgICAgICAjIGNvbmRpdGlvbmFsIGJhY2tyZWZlcmVuY2UgZ3JvdXAKICAgICAgICAgICAgICAgICAgICBjb25kbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiKSIsICJncm91cCBuYW1lIikKICAgICAgICAgICAgICAgICAgICBpZiBjb25kbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmNoZWNrZ3JvdXBuYW1lKGNvbmRuYW1lLCAxLCBuZXN0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRncm91cCA9IHN0YXRlLmdyb3VwZGljdC5nZXQoY29uZG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbmRncm91cCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZ3JvdXAgbmFtZSAlciIgJSBjb25kbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGdyb3VwID0gaW50KGNvbmRuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uZGdyb3VwIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBjb25kbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNvbmRuYW1lKSArIDEpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29uZGdyb3VwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZ3JvdXAgbnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uZGdyb3VwID49IE1BWEdST1VQUzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBjb25kZ3JvdXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjb25kbmFtZSkgKyAxKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgbm90IGluIHN0YXRlLmdyb3VwcmVmcG9zOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ3JvdXByZWZwb3NbY29uZGdyb3VwXSA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gbGVuKGNvbmRuYW1lKSAtIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChjb25kbmFtZS5pc2RlY2ltYWwoKSBhbmQgY29uZG5hbWUuaXNhc2NpaSgpKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICVzIGF0IHBvc2l0aW9uICVkIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcHIoY29uZG5hbWUpIGlmIHNvdXJjZS5pc3RleHQgZWxzZSBhc2NpaShjb25kbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBsZW4oY29uZG5hbWUpIC0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPW5lc3RlZCArIDYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jaGVja2xvb2tiZWhpbmRncm91cChjb25kZ3JvdXAsIHNvdXJjZSkKICAgICAgICAgICAgICAgICAgICBpdGVtX3llcyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlLCBuZXN0ZWQgKyAxKQogICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5tYXRjaCgifCIpOgogICAgICAgICAgICAgICAgICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UsIG5lc3RlZCArIDEpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0ID09ICJ8IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiB0d28gYnJhbmNoZXMiKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fbm8gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNvdXJjZS5tYXRjaCgiKSIpOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIHN0YXJ0KQogICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEdST1VQUkVGX0VYSVNUUywgKGNvbmRncm91cCwgaXRlbV95ZXMsIGl0ZW1fbm8pKSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgIGVsaWYgY2hhciA9PSAiPiI6CiAgICAgICAgICAgICAgICAgICAgIyBub24tY2FwdHVyaW5nLCBhdG9taWMgZ3JvdXAKICAgICAgICAgICAgICAgICAgICBjYXB0dXJlID0gRmFsc2UKICAgICAgICAgICAgICAgICAgICBhdG9taWMgPSBUcnVlCiAgICAgICAgICAgICAgICBlbGlmIGNoYXIgaW4gRkxBR1Mgb3IgY2hhciA9PSAiLSI6CiAgICAgICAgICAgICAgICAgICAgIyBmbGFncwogICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpCiAgICAgICAgICAgICAgICAgICAgaWYgZmxhZ3MgaXMgTm9uZTogICMgZ2xvYmFsIGZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBmaXJzdCBvciBzdWJwYXR0ZXJuOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdnbG9iYWwgZmxhZ3Mgbm90IGF0IHRoZSBzdGFydCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29mIHRoZSBleHByZXNzaW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICAgICAgICAgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MgPSBmbGFncwogICAgICAgICAgICAgICAgICAgIGNhcHR1cmUgPSBGYWxzZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID8iICsgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMSkKCiAgICAgICAgICAgICMgcGFyc2UgZ3JvdXAgY29udGVudHMKICAgICAgICAgICAgaWYgY2FwdHVyZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBncm91cCA9IHN0YXRlLm9wZW5ncm91cChuYW1lKQogICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoZXJyLm1zZywgbGVuKG5hbWUpICsgMSkgZnJvbSBOb25lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKICAgICAgICAgICAgc3ViX3ZlcmJvc2UgPSAoKHZlcmJvc2Ugb3IgKGFkZF9mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IChkZWxfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSkKICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgc3ViX3ZlcmJvc2UsIG5lc3RlZCArIDEpCiAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubWF0Y2goIikiKToKICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgc3VicGF0dGVybiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIHN0YXJ0KQogICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHN0YXRlLmNsb3NlZ3JvdXAoZ3JvdXAsIHApCiAgICAgICAgICAgIGlmIGF0b21pYzoKICAgICAgICAgICAgICAgIGFzc2VydCBncm91cCBpcyBOb25lCiAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBVE9NSUNfR1JPVVAsIHApKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCkpKQoKICAgICAgICBlbGlmIHRoaXMgPT0gIl4iOgogICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBVCwgQVRfQkVHSU5OSU5HKSkKCiAgICAgICAgZWxpZiB0aGlzID09ICIkIjoKICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoQVQsIEFUX0VORCkpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ1bnN1cHBvcnRlZCBzcGVjaWFsIGNoYXJhY3RlciAlciIgJSAoY2hhciwpKQoKICAgICMgdW5wYWNrIG5vbi1jYXB0dXJpbmcgZ3JvdXBzCiAgICBmb3IgaSBpbiByYW5nZShsZW4oc3VicGF0dGVybikpWzo6LTFdOgogICAgICAgIG9wLCBhdiA9IHN1YnBhdHRlcm5baV0KICAgICAgICBpZiBvcCBpcyBTVUJQQVRURVJOOgogICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgogICAgICAgICAgICBpZiBncm91cCBpcyBOb25lIGFuZCBub3QgYWRkX2ZsYWdzIGFuZCBub3QgZGVsX2ZsYWdzOgogICAgICAgICAgICAgICAgc3VicGF0dGVybltpOiBpKzFdID0gcAoKICAgIHJldHVybiBzdWJwYXR0ZXJuCgpkZWYgX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpOgogICAgc291cmNlZ2V0ID0gc291cmNlLmdldAogICAgYWRkX2ZsYWdzID0gMAogICAgZGVsX2ZsYWdzID0gMAogICAgaWYgY2hhciAhPSAiLSI6CiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgZmxhZyA9IEZMQUdTW2NoYXJdCiAgICAgICAgICAgIGlmIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICAgICBpZiBjaGFyID09ICdMJzoKICAgICAgICAgICAgICAgICAgICBtc2cgPSAiYmFkIGlubGluZSBmbGFnczogY2Fubm90IHVzZSAnTCcgZmxhZyB3aXRoIGEgc3RyIHBhdHRlcm4iCiAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gJ3UnOgogICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdXNlICd1JyBmbGFnIHdpdGggYSBieXRlcyBwYXR0ZXJuIgogICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2cpCiAgICAgICAgICAgIGFkZF9mbGFncyB8PSBmbGFnCiAgICAgICAgICAgIGlmIChmbGFnICYgVFlQRV9GTEFHUykgYW5kIChhZGRfZmxhZ3MgJiBUWVBFX0ZMQUdTKSAhPSBmbGFnOgogICAgICAgICAgICAgICAgbXNnID0gImJhZCBpbmxpbmUgZmxhZ3M6IGZsYWdzICdhJywgJ3UnIGFuZCAnTCcgYXJlIGluY29tcGF0aWJsZSIKICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2cpCiAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQogICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgLSwgOiBvciApIikKICAgICAgICAgICAgaWYgY2hhciBpbiAiKS06IjoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgogICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyAtLCA6IG9yICkiCiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY2hhcikpCiAgICBpZiBjaGFyID09ICIpIjoKICAgICAgICBzdGF0ZS5mbGFncyB8PSBhZGRfZmxhZ3MKICAgICAgICByZXR1cm4gTm9uZQogICAgaWYgYWRkX2ZsYWdzICYgR0xPQkFMX0ZMQUdTOgogICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb24gZ2xvYmFsIGZsYWciLCAxKQogICAgaWYgY2hhciA9PSAiLSI6CiAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCiAgICAgICAgaWYgY2hhciBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgZmxhZyIpCiAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CiAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGZsYWciIGlmIGNoYXIuaXNhbHBoYSgpIGVsc2UgIm1pc3NpbmcgZmxhZyIKICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGZsYWcgPSBGTEFHU1tjaGFyXQogICAgICAgICAgICBpZiBmbGFnICYgVFlQRV9GTEFHUzoKICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvZmYgZmxhZ3MgJ2EnLCAndScgYW5kICdMJyIKICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2cpCiAgICAgICAgICAgIGRlbF9mbGFncyB8PSBmbGFnCiAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQogICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgOiIpCiAgICAgICAgICAgIGlmIGNoYXIgPT0gIjoiOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CiAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBmbGFnIiBpZiBjaGFyLmlzYWxwaGEoKSBlbHNlICJtaXNzaW5nIDoiCiAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY2hhcikpCiAgICBhc3NlcnQgY2hhciA9PSAiOiIKICAgIGlmIGRlbF9mbGFncyAmIEdMT0JBTF9GTEFHUzoKICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9mZiBnbG9iYWwgZmxhZyIsIDEpCiAgICBpZiBhZGRfZmxhZ3MgJiBkZWxfZmxhZ3M6CiAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBmbGFnIHR1cm5lZCBvbiBhbmQgb2ZmIiwgMSkKICAgIHJldHVybiBhZGRfZmxhZ3MsIGRlbF9mbGFncwoKZGVmIGZpeF9mbGFncyhzcmMsIGZsYWdzKToKICAgICMgQ2hlY2sgYW5kIGZpeCBmbGFncyBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgcGF0dGVybiAoc3RyIG9yIGJ5dGVzKQogICAgaWYgaXNpbnN0YW5jZShzcmMsIHN0cik6CiAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIikKICAgICAgICBpZiBub3QgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKICAgICAgICAgICAgZmxhZ3MgfD0gU1JFX0ZMQUdfVU5JQ09ERQogICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBU0NJSSBhbmQgVU5JQ09ERSBmbGFncyBhcmUgaW5jb21wYXRpYmxlIikKICAgIGVsc2U6CiAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgdXNlIFVOSUNPREUgZmxhZyB3aXRoIGEgYnl0ZXMgcGF0dGVybiIpCiAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUgYW5kIGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFTQ0lJIGFuZCBMT0NBTEUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZSIpCiAgICByZXR1cm4gZmxhZ3MKCmRlZiBwYXJzZShzdHIsIGZsYWdzPTAsIHN0YXRlPU5vbmUpOgogICAgIyBwYXJzZSAncmUnIHBhdHRlcm4gaW50byBsaXN0IG9mIChvcGNvZGUsIGFyZ3VtZW50KSB0dXBsZXMKCiAgICBzb3VyY2UgPSBUb2tlbml6ZXIoc3RyKQoKICAgIGlmIHN0YXRlIGlzIE5vbmU6CiAgICAgICAgc3RhdGUgPSBTdGF0ZSgpCiAgICBzdGF0ZS5mbGFncyA9IGZsYWdzCiAgICBzdGF0ZS5zdHIgPSBzdHIKCiAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBmbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UsIDApCiAgICBwLnN0YXRlLmZsYWdzID0gZml4X2ZsYWdzKHN0ciwgcC5zdGF0ZS5mbGFncykKCiAgICBpZiBzb3VyY2UubmV4dCBpcyBub3QgTm9uZToKICAgICAgICBhc3NlcnQgc291cmNlLm5leHQgPT0gIikiCiAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKCiAgICBmb3IgZyBpbiBwLnN0YXRlLmdyb3VwcmVmcG9zOgogICAgICAgIGlmIGcgPj0gcC5zdGF0ZS5ncm91cHM6CiAgICAgICAgICAgIG1zZyA9ICJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBnCiAgICAgICAgICAgIHJhaXNlIGVycm9yKG1zZywgc3RyLCBwLnN0YXRlLmdyb3VwcmVmcG9zW2ddKQoKICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfREVCVUc6CiAgICAgICAgcC5kdW1wKCkKCiAgICByZXR1cm4gcAoKZGVmIHBhcnNlX3RlbXBsYXRlKHNvdXJjZSwgc3RhdGUpOgogICAgIyBwYXJzZSAncmUnIHJlcGxhY2VtZW50IHN0cmluZyBpbnRvIGxpc3Qgb2YgbGl0ZXJhbHMgYW5kCiAgICAjIGdyb3VwIHJlZmVyZW5jZXMKICAgIHMgPSBUb2tlbml6ZXIoc291cmNlKQogICAgc2dldCA9IHMuZ2V0CiAgICBncm91cHMgPSBbXQogICAgbGl0ZXJhbHMgPSBbXQogICAgbGl0ZXJhbCA9IFtdCiAgICBsYXBwZW5kID0gbGl0ZXJhbC5hcHBlbmQKICAgIGRlZiBhZGRncm91cChpbmRleCwgcG9zKToKICAgICAgICBpZiBpbmRleCA+IHN0YXRlLmdyb3VwczoKICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgaW5kZXgsIHBvcykKICAgICAgICBpZiBsaXRlcmFsOgogICAgICAgICAgICBsaXRlcmFscy5hcHBlbmQoJycuam9pbihsaXRlcmFsKSkKICAgICAgICAgICAgZGVsIGxpdGVyYWxbOl0KICAgICAgICBncm91cHMuYXBwZW5kKChsZW4obGl0ZXJhbHMpLCBpbmRleCkpCiAgICAgICAgbGl0ZXJhbHMuYXBwZW5kKE5vbmUpCiAgICBncm91cGluZGV4ID0gc3RhdGUuZ3JvdXBpbmRleAogICAgd2hpbGUgVHJ1ZToKICAgICAgICB0aGlzID0gc2dldCgpCiAgICAgICAgaWYgdGhpcyBpcyBOb25lOgogICAgICAgICAgICBicmVhayAjIGVuZCBvZiByZXBsYWNlbWVudCBzdHJpbmcKICAgICAgICBpZiB0aGlzWzBdID09ICJcXCI6CiAgICAgICAgICAgICMgZ3JvdXAKICAgICAgICAgICAgYyA9IHRoaXNbMV0KICAgICAgICAgICAgaWYgYyA9PSAiZyI6CiAgICAgICAgICAgICAgICBpZiBub3Qgcy5tYXRjaCgiPCIpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoIm1pc3NpbmcgPCIpCiAgICAgICAgICAgICAgICBuYW1lID0gcy5nZXR1bnRpbCgiPiIsICJncm91cCBuYW1lIikKICAgICAgICAgICAgICAgIGlmIG5hbWUuaXNpZGVudGlmaWVyKCk6CiAgICAgICAgICAgICAgICAgICAgcy5jaGVja2dyb3VwbmFtZShuYW1lLCAxLCAtMSkKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gZ3JvdXBpbmRleFtuYW1lXQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigidW5rbm93biBncm91cCBuYW1lICVyIiAlIG5hbWUpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4IDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICVyIiAlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkgZnJvbSBOb25lCiAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPj0gTUFYR1JPVVBTOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKQogICAgICAgICAgICAgICAgICAgIGlmIG5vdCAobmFtZS5pc2RlY2ltYWwoKSBhbmQgbmFtZS5pc2FzY2lpKCkpOgogICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXMgYXQgcG9zaXRpb24gJWQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXByKG5hbWUpIGlmIHMuaXN0ZXh0IGVsc2UgYXNjaWkobmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50ZWxsKCkgLSBsZW4obmFtZSkgLSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD01CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIGFkZGdyb3VwKGluZGV4LCBsZW4obmFtZSkgKyAxKQogICAgICAgICAgICBlbGlmIGMgPT0gIjAiOgogICAgICAgICAgICAgICAgaWYgcy5uZXh0IGluIE9DVERJR0lUUzoKICAgICAgICAgICAgICAgICAgICB0aGlzICs9IHNnZXQoKQogICAgICAgICAgICAgICAgICAgIGlmIHMubmV4dCBpbiBPQ1RESUdJVFM6CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgKz0gc2dldCgpCiAgICAgICAgICAgICAgICBsYXBwZW5kKGNocihpbnQodGhpc1sxOl0sIDgpICYgMHhmZikpCiAgICAgICAgICAgIGVsaWYgYyBpbiBESUdJVFM6CiAgICAgICAgICAgICAgICBpc29jdGFsID0gRmFsc2UKICAgICAgICAgICAgICAgIGlmIHMubmV4dCBpbiBESUdJVFM6CiAgICAgICAgICAgICAgICAgICAgdGhpcyArPSBzZ2V0KCkKICAgICAgICAgICAgICAgICAgICBpZiAoYyBpbiBPQ1RESUdJVFMgYW5kIHRoaXNbMl0gaW4gT0NURElHSVRTIGFuZAogICAgICAgICAgICAgICAgICAgICAgICBzLm5leHQgaW4gT0NURElHSVRTKToKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyArPSBzZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgaXNvY3RhbCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludCh0aGlzWzE6XSwgOCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgYyA+IDBvMzc3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcignb2N0YWwgZXNjYXBlIHZhbHVlICVzIG91dHNpZGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UgMC0wbzM3NycgJSB0aGlzLCBsZW4odGhpcykpCiAgICAgICAgICAgICAgICAgICAgICAgIGxhcHBlbmQoY2hyKGMpKQogICAgICAgICAgICAgICAgaWYgbm90IGlzb2N0YWw6CiAgICAgICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW50KHRoaXNbMTpdKSwgbGVuKHRoaXMpIC0gMSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICB0aGlzID0gY2hyKEVTQ0FQRVNbdGhpc11bMV0pCiAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywgbGVuKHRoaXMpKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgIGxhcHBlbmQodGhpcykKICAgICAgICBlbHNlOgogICAgICAgICAgICBsYXBwZW5kKHRoaXMpCiAgICBpZiBsaXRlcmFsOgogICAgICAgIGxpdGVyYWxzLmFwcGVuZCgnJy5qb2luKGxpdGVyYWwpKQogICAgaWYgbm90IGlzaW5zdGFuY2Uoc291cmNlLCBzdHIpOgogICAgICAgICMgVGhlIHRva2VuaXplciBpbXBsaWNpdGx5IGRlY29kZXMgYnl0ZXMgb2JqZWN0cyBhcyBsYXRpbi0xLCB3ZSBtdXN0CiAgICAgICAgIyB0aGVyZWZvcmUgcmUtZW5jb2RlIHRoZSBmaW5hbCByZXByZXNlbnRhdGlvbi4KICAgICAgICBsaXRlcmFscyA9IFtOb25lIGlmIHMgaXMgTm9uZSBlbHNlIHMuZW5jb2RlKCdsYXRpbi0xJykgZm9yIHMgaW4gbGl0ZXJhbHNdCiAgICByZXR1cm4gZ3JvdXBzLCBsaXRlcmFscwoKZGVmIGV4cGFuZF90ZW1wbGF0ZSh0ZW1wbGF0ZSwgbWF0Y2gpOgogICAgZyA9IG1hdGNoLmdyb3VwCiAgICBlbXB0eSA9IG1hdGNoLnN0cmluZ1s6MF0KICAgIGdyb3VwcywgbGl0ZXJhbHMgPSB0ZW1wbGF0ZQogICAgbGl0ZXJhbHMgPSBsaXRlcmFsc1s6XQogICAgdHJ5OgogICAgICAgIGZvciBpbmRleCwgZ3JvdXAgaW4gZ3JvdXBzOgogICAgICAgICAgICBsaXRlcmFsc1tpbmRleF0gPSBnKGdyb3VwKSBvciBlbXB0eQogICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgcmFpc2UgZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGluZGV4KSBmcm9tIE5vbmUKICAgIHJldHVybiBlbXB0eS5qb2luKGxpdGVyYWxzKQpQSwMEFAAAAAAAAyCjViX7P5t3AAAAdwAAABgAAABzaXRlLXBhY2thZ2VzL1JFQURNRS50eHRUaGlzIGRpcmVjdG9yeSBleGlzdHMgc28gdGhhdCAzcmQgcGFydHkgcGFja2FnZXMgY2FuIGJlIGluc3RhbGxlZApoZXJlLiAgUmVhZCB0aGUgc291cmNlIGZvciBzaXRlLnB5IGZvciBtb3JlIGRldGFpbHMuClBLAwQUAAAAAAADIKNWKMoWtjQBAAA0AQAAEwAAAHRvbWxsaWIvX19pbml0X18ucHkjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKIyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDIxIFRhbmVsaSBIdWtraW5lbgojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KCl9fYWxsX18gPSAoImxvYWRzIiwgImxvYWQiLCAiVE9NTERlY29kZUVycm9yIikKCmZyb20gLl9wYXJzZXIgaW1wb3J0IFRPTUxEZWNvZGVFcnJvciwgbG9hZCwgbG9hZHMKCiMgUHJldGVuZCB0aGlzIGV4Y2VwdGlvbiB3YXMgY3JlYXRlZCBoZXJlLgpUT01MRGVjb2RlRXJyb3IuX19tb2R1bGVfXyA9IF9fbmFtZV9fClBLAwQUAAAAAAADIKNWPnZP3WdYAABnWAAAEgAAAHRvbWxsaWIvX3BhcnNlci5weSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAojIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjEgVGFuZWxpIEh1a2tpbmVuCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgoKZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucwoKZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEl0ZXJhYmxlCmltcG9ydCBzdHJpbmcKZnJvbSB0eXBlcyBpbXBvcnQgTWFwcGluZ1Byb3h5VHlwZQpmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBCaW5hcnlJTywgTmFtZWRUdXBsZQoKZnJvbSAuX3JlIGltcG9ydCAoCiAgICBSRV9EQVRFVElNRSwKICAgIFJFX0xPQ0FMVElNRSwKICAgIFJFX05VTUJFUiwKICAgIG1hdGNoX3RvX2RhdGV0aW1lLAogICAgbWF0Y2hfdG9fbG9jYWx0aW1lLAogICAgbWF0Y2hfdG9fbnVtYmVyLAopCmZyb20gLl90eXBlcyBpbXBvcnQgS2V5LCBQYXJzZUZsb2F0LCBQb3MKCkFTQ0lJX0NUUkwgPSBmcm96ZW5zZXQoY2hyKGkpIGZvciBpIGluIHJhbmdlKDMyKSkgfCBmcm96ZW5zZXQoY2hyKDEyNykpCgojIE5laXRoZXIgb2YgdGhlc2Ugc2V0cyBpbmNsdWRlIHF1b3RhdGlvbiBtYXJrIG9yIGJhY2tzbGFzaC4gVGhleSBhcmUKIyBjdXJyZW50bHkgaGFuZGxlZCBhcyBzZXBhcmF0ZSBjYXNlcyBpbiB0aGUgcGFyc2VyIGZ1bmN0aW9ucy4KSUxMRUdBTF9CQVNJQ19TVFJfQ0hBUlMgPSBBU0NJSV9DVFJMIC0gZnJvemVuc2V0KCJcdCIpCklMTEVHQUxfTVVMVElMSU5FX0JBU0lDX1NUUl9DSEFSUyA9IEFTQ0lJX0NUUkwgLSBmcm96ZW5zZXQoIlx0XG4iKQoKSUxMRUdBTF9MSVRFUkFMX1NUUl9DSEFSUyA9IElMTEVHQUxfQkFTSUNfU1RSX0NIQVJTCklMTEVHQUxfTVVMVElMSU5FX0xJVEVSQUxfU1RSX0NIQVJTID0gSUxMRUdBTF9NVUxUSUxJTkVfQkFTSUNfU1RSX0NIQVJTCgpJTExFR0FMX0NPTU1FTlRfQ0hBUlMgPSBJTExFR0FMX0JBU0lDX1NUUl9DSEFSUwoKVE9NTF9XUyA9IGZyb3plbnNldCgiIFx0IikKVE9NTF9XU19BTkRfTkVXTElORSA9IFRPTUxfV1MgfCBmcm96ZW5zZXQoIlxuIikKQkFSRV9LRVlfQ0hBUlMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIi1fIikKS0VZX0lOSVRJQUxfQ0hBUlMgPSBCQVJFX0tFWV9DSEFSUyB8IGZyb3plbnNldCgiXCInIikKSEVYRElHSVRfQ0hBUlMgPSBmcm96ZW5zZXQoc3RyaW5nLmhleGRpZ2l0cykKCkJBU0lDX1NUUl9FU0NBUEVfUkVQTEFDRU1FTlRTID0gTWFwcGluZ1Byb3h5VHlwZSgKICAgIHsKICAgICAgICAiXFxiIjogIlx1MDAwOCIsICAjIGJhY2tzcGFjZQogICAgICAgICJcXHQiOiAiXHUwMDA5IiwgICMgdGFiCiAgICAgICAgIlxcbiI6ICJcdTAwMEEiLCAgIyBsaW5lZmVlZAogICAgICAgICJcXGYiOiAiXHUwMDBDIiwgICMgZm9ybSBmZWVkCiAgICAgICAgIlxcciI6ICJcdTAwMEQiLCAgIyBjYXJyaWFnZSByZXR1cm4KICAgICAgICAnXFwiJzogIlx1MDAyMiIsICAjIHF1b3RlCiAgICAgICAgIlxcXFwiOiAiXHUwMDVDIiwgICMgYmFja3NsYXNoCiAgICB9CikKCgpjbGFzcyBUT01MRGVjb2RlRXJyb3IoVmFsdWVFcnJvcik6CiAgICAiIiJBbiBlcnJvciByYWlzZWQgaWYgYSBkb2N1bWVudCBpcyBub3QgdmFsaWQgVE9NTC4iIiIKCgpkZWYgbG9hZChmcDogQmluYXJ5SU8sIC8sICosIHBhcnNlX2Zsb2F0OiBQYXJzZUZsb2F0ID0gZmxvYXQpIC0+IGRpY3Rbc3RyLCBBbnldOgogICAgIiIiUGFyc2UgVE9NTCBmcm9tIGEgYmluYXJ5IGZpbGUgb2JqZWN0LiIiIgogICAgYiA9IGZwLnJlYWQoKQogICAgdHJ5OgogICAgICAgIHMgPSBiLmRlY29kZSgpCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAiRmlsZSBtdXN0IGJlIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSwgZS5nLiB1c2UgYG9wZW4oJ2Zvby50b21sJywgJ3JiJylgIgogICAgICAgICkgZnJvbSBOb25lCiAgICByZXR1cm4gbG9hZHMocywgcGFyc2VfZmxvYXQ9cGFyc2VfZmxvYXQpCgoKZGVmIGxvYWRzKHM6IHN0ciwgLywgKiwgcGFyc2VfZmxvYXQ6IFBhcnNlRmxvYXQgPSBmbG9hdCkgLT4gZGljdFtzdHIsIEFueV06ICAjIG5vcWE6IEM5MDEKICAgICIiIlBhcnNlIFRPTUwgZnJvbSBhIHN0cmluZy4iIiIKCiAgICAjIFRoZSBzcGVjIGFsbG93cyBjb252ZXJ0aW5nICJcclxuIiB0byAiXG4iLCBldmVuIGluIHN0cmluZwogICAgIyBsaXRlcmFscy4gTGV0J3MgZG8gc28gdG8gc2ltcGxpZnkgcGFyc2luZy4KICAgIHNyYyA9IHMucmVwbGFjZSgiXHJcbiIsICJcbiIpCiAgICBwb3MgPSAwCiAgICBvdXQgPSBPdXRwdXQoTmVzdGVkRGljdCgpLCBGbGFncygpKQogICAgaGVhZGVyOiBLZXkgPSAoKQogICAgcGFyc2VfZmxvYXQgPSBtYWtlX3NhZmVfcGFyc2VfZmxvYXQocGFyc2VfZmxvYXQpCgogICAgIyBQYXJzZSBvbmUgc3RhdGVtZW50IGF0IGEgdGltZQogICAgIyAodHlwaWNhbGx5IG1lYW5zIG9uZSBsaW5lIGluIFRPTUwgc291cmNlKQogICAgd2hpbGUgVHJ1ZToKICAgICAgICAjIDEuIFNraXAgbGluZSBsZWFkaW5nIHdoaXRlc3BhY2UKICAgICAgICBwb3MgPSBza2lwX2NoYXJzKHNyYywgcG9zLCBUT01MX1dTKQoKICAgICAgICAjIDIuIFBhcnNlIHJ1bGVzLiBFeHBlY3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgIyAgICAtIGVuZCBvZiBmaWxlCiAgICAgICAgIyAgICAtIGVuZCBvZiBsaW5lCiAgICAgICAgIyAgICAtIGNvbW1lbnQKICAgICAgICAjICAgIC0ga2V5L3ZhbHVlIHBhaXIKICAgICAgICAjICAgIC0gYXBwZW5kIGRpY3QgdG8gbGlzdCAoYW5kIG1vdmUgdG8gaXRzIG5hbWVzcGFjZSkKICAgICAgICAjICAgIC0gY3JlYXRlIGRpY3QgKGFuZCBtb3ZlIHRvIGl0cyBuYW1lc3BhY2UpCiAgICAgICAgIyBTa2lwIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2hlbiBhcHBsaWNhYmxlLgogICAgICAgIHRyeToKICAgICAgICAgICAgY2hhciA9IHNyY1twb3NdCiAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgaWYgY2hhciA9PSAiXG4iOgogICAgICAgICAgICBwb3MgKz0gMQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGNoYXIgaW4gS0VZX0lOSVRJQUxfQ0hBUlM6CiAgICAgICAgICAgIHBvcyA9IGtleV92YWx1ZV9ydWxlKHNyYywgcG9zLCBvdXQsIGhlYWRlciwgcGFyc2VfZmxvYXQpCiAgICAgICAgICAgIHBvcyA9IHNraXBfY2hhcnMoc3JjLCBwb3MsIFRPTUxfV1MpCiAgICAgICAgZWxpZiBjaGFyID09ICJbIjoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2Vjb25kX2NoYXI6IHN0ciB8IE5vbmUgPSBzcmNbcG9zICsgMV0KICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICBzZWNvbmRfY2hhciA9IE5vbmUKICAgICAgICAgICAgb3V0LmZsYWdzLmZpbmFsaXplX3BlbmRpbmcoKQogICAgICAgICAgICBpZiBzZWNvbmRfY2hhciA9PSAiWyI6CiAgICAgICAgICAgICAgICBwb3MsIGhlYWRlciA9IGNyZWF0ZV9saXN0X3J1bGUoc3JjLCBwb3MsIG91dCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHBvcywgaGVhZGVyID0gY3JlYXRlX2RpY3RfcnVsZShzcmMsIHBvcywgb3V0KQogICAgICAgICAgICBwb3MgPSBza2lwX2NoYXJzKHNyYywgcG9zLCBUT01MX1dTKQogICAgICAgIGVsaWYgY2hhciAhPSAiIyI6CiAgICAgICAgICAgIHJhaXNlIHN1ZmZpeGVkX2VycihzcmMsIHBvcywgIkludmFsaWQgc3RhdGVtZW50IikKCiAgICAgICAgIyAzLiBTa2lwIGNvbW1lbnQKICAgICAgICBwb3MgPSBza2lwX2NvbW1lbnQoc3JjLCBwb3MpCgogICAgICAgICMgNC4gRXhwZWN0IGVuZCBvZiBsaW5lIG9yIGVuZCBvZiBmaWxlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjaGFyID0gc3JjW3Bvc10KICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBjaGFyICE9ICJcbiI6CiAgICAgICAgICAgIHJhaXNlIHN1ZmZpeGVkX2VycigKICAgICAgICAgICAgICAgIHNyYywgcG9zLCAiRXhwZWN0ZWQgbmV3bGluZSBvciBlbmQgb2YgZG9jdW1lbnQgYWZ0ZXIgYSBzdGF0ZW1lbnQiCiAgICAgICAgICAgICkKICAgICAgICBwb3MgKz0gMQoKICAgIHJldHVybiBvdXQuZGF0YS5kaWN0CgoKY2xhc3MgRmxhZ3M6CiAgICAiIiJGbGFncyB0aGF0IG1hcCB0byBwYXJzZWQga2V5cy9uYW1lc3BhY2VzLiIiIgoKICAgICMgTWFya3MgYW4gaW1tdXRhYmxlIG5hbWVzcGFjZSAoaW5saW5lIGFycmF5IG9yIGlubGluZSB0YWJsZSkuCiAgICBGUk9aRU4gPSAwCiAgICAjIE1hcmtzIGEgbmVzdCB0aGF0IGhhcyBiZWVuIGV4cGxpY2l0bHkgY3JlYXRlZCBhbmQgY2FuIG5vIGxvbmdlcgogICAgIyBiZSBvcGVuZWQgdXNpbmcgdGhlICJbdGFibGVdIiBzeW50YXguCiAgICBFWFBMSUNJVF9ORVNUID0gMQoKICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgogICAgICAgIHNlbGYuX2ZsYWdzOiBkaWN0W3N0ciwgZGljdF0gPSB7fQogICAgICAgIHNlbGYuX3BlbmRpbmdfZmxhZ3M6IHNldFt0dXBsZVtLZXksIGludF1dID0gc2V0KCkKCiAgICBkZWYgYWRkX3BlbmRpbmcoc2VsZiwga2V5OiBLZXksIGZsYWc6IGludCkgLT4gTm9uZToKICAgICAgICBzZWxmLl9wZW5kaW5nX2ZsYWdzLmFkZCgoa2V5LCBmbGFnKSkKCiAgICBkZWYgZmluYWxpemVfcGVuZGluZyhzZWxmKSAtPiBOb25lOgogICAgICAgIGZvciBrZXksIGZsYWcgaW4gc2VsZi5fcGVuZGluZ19mbGFnczoKICAgICAgICAgICAgc2VsZi5zZXQoa2V5LCBmbGFnLCByZWN1cnNpdmU9RmFsc2UpCiAgICAgICAgc2VsZi5fcGVuZGluZ19mbGFncy5jbGVhcigpCgogICAgZGVmIHVuc2V0X2FsbChzZWxmLCBrZXk6IEtleSkgLT4gTm9uZToKICAgICAgICBjb250ID0gc2VsZi5fZmxhZ3MKICAgICAgICBmb3IgayBpbiBrZXlbOi0xXToKICAgICAgICAgICAgaWYgayBub3QgaW4gY29udDoKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBjb250ID0gY29udFtrXVsibmVzdGVkIl0KICAgICAgICBjb250LnBvcChrZXlbLTFdLCBOb25lKQoKICAgIGRlZiBzZXQoc2VsZiwga2V5OiBLZXksIGZsYWc6IGludCwgKiwgcmVjdXJzaXZlOiBib29sKSAtPiBOb25lOiAgIyBub3FhOiBBMDAzCiAgICAgICAgY29udCA9IHNlbGYuX2ZsYWdzCiAgICAgICAga2V5X3BhcmVudCwga2V5X3N0ZW0gPSBrZXlbOi0xXSwga2V5Wy0xXQogICAgICAgIGZvciBrIGluIGtleV9wYXJlbnQ6CiAgICAgICAgICAgIGlmIGsgbm90IGluIGNvbnQ6CiAgICAgICAgICAgICAgICBjb250W2tdID0geyJmbGFncyI6IHNldCgpLCAicmVjdXJzaXZlX2ZsYWdzIjogc2V0KCksICJuZXN0ZWQiOiB7fX0KICAgICAgICAgICAgY29udCA9IGNvbnRba11bIm5lc3RlZCJdCiAgICAgICAgaWYga2V5X3N0ZW0gbm90IGluIGNvbnQ6CiAgICAgICAgICAgIGNvbnRba2V5X3N0ZW1dID0geyJmbGFncyI6IHNldCgpLCAicmVjdXJzaXZlX2ZsYWdzIjogc2V0KCksICJuZXN0ZWQiOiB7fX0KICAgICAgICBjb250W2tleV9zdGVtXVsicmVjdXJzaXZlX2ZsYWdzIiBpZiByZWN1cnNpdmUgZWxzZSAiZmxhZ3MiXS5hZGQoZmxhZykKCiAgICBkZWYgaXNfKHNlbGYsIGtleTogS2V5LCBmbGFnOiBpbnQpIC0+IGJvb2w6CiAgICAgICAgaWYgbm90IGtleToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlICAjIGRvY3VtZW50IHJvb3QgaGFzIG5vIGZsYWdzCiAgICAgICAgY29udCA9IHNlbGYuX2ZsYWdzCiAgICAgICAgZm9yIGsgaW4ga2V5WzotMV06CiAgICAgICAgICAgIGlmIGsgbm90IGluIGNvbnQ6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgaW5uZXJfY29udCA9IGNvbnRba10KICAgICAgICAgICAgaWYgZmxhZyBpbiBpbm5lcl9jb250WyJyZWN1cnNpdmVfZmxhZ3MiXToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgIGNvbnQgPSBpbm5lcl9jb250WyJuZXN0ZWQiXQogICAgICAgIGtleV9zdGVtID0ga2V5Wy0xXQogICAgICAgIGlmIGtleV9zdGVtIGluIGNvbnQ6CiAgICAgICAgICAgIGNvbnQgPSBjb250W2tleV9zdGVtXQogICAgICAgICAgICByZXR1cm4gZmxhZyBpbiBjb250WyJmbGFncyJdIG9yIGZsYWcgaW4gY29udFsicmVjdXJzaXZlX2ZsYWdzIl0KICAgICAgICByZXR1cm4gRmFsc2UKCgpjbGFzcyBOZXN0ZWREaWN0OgogICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIyBUaGUgcGFyc2VkIGNvbnRlbnQgb2YgdGhlIFRPTUwgZG9jdW1lbnQKICAgICAgICBzZWxmLmRpY3Q6IGRpY3Rbc3RyLCBBbnldID0ge30KCiAgICBkZWYgZ2V0X29yX2NyZWF0ZV9uZXN0KAogICAgICAgIHNlbGYsCiAgICAgICAga2V5OiBLZXksCiAgICAgICAgKiwKICAgICAgICBhY2Nlc3NfbGlzdHM6IGJvb2wgPSBUcnVlLAogICAgKSAtPiBkaWN0OgogICAgICAgIGNvbnQ6IEFueSA9IHNlbGYuZGljdAogICAgICAgIGZvciBrIGluIGtleToKICAgICAgICAgICAgaWYgayBub3QgaW4gY29udDoKICAgICAgICAgICAgICAgIGNvbnRba10gPSB7fQogICAgICAgICAgICBjb250ID0gY29udFtrXQogICAgICAgICAgICBpZiBhY2Nlc3NfbGlzdHMgYW5kIGlzaW5zdGFuY2UoY29udCwgbGlzdCk6CiAgICAgICAgICAgICAgICBjb250ID0gY29udFstMV0KICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29udCwgZGljdCk6CiAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiVGhlcmUgaXMgbm8gbmVzdCBiZWhpbmQgdGhpcyBrZXkiKQogICAgICAgIHJldHVybiBjb250CgogICAgZGVmIGFwcGVuZF9uZXN0X3RvX2xpc3Qoc2VsZiwga2V5OiBLZXkpIC0+IE5vbmU6CiAgICAgICAgY29udCA9IHNlbGYuZ2V0X29yX2NyZWF0ZV9uZXN0KGtleVs6LTFdKQogICAgICAgIGxhc3Rfa2V5ID0ga2V5Wy0xXQogICAgICAgIGlmIGxhc3Rfa2V5IGluIGNvbnQ6CiAgICAgICAgICAgIGxpc3RfID0gY29udFtsYXN0X2tleV0KICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobGlzdF8sIGxpc3QpOgogICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIkFuIG9iamVjdCBvdGhlciB0aGFuIGxpc3QgZm91bmQgYmVoaW5kIHRoaXMga2V5IikKICAgICAgICAgICAgbGlzdF8uYXBwZW5kKHt9KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbnRbbGFzdF9rZXldID0gW3t9XQoKCmNsYXNzIE91dHB1dChOYW1lZFR1cGxlKToKICAgIGRhdGE6IE5lc3RlZERpY3QKICAgIGZsYWdzOiBGbGFncwoKCmRlZiBza2lwX2NoYXJzKHNyYzogc3RyLCBwb3M6IFBvcywgY2hhcnM6IEl0ZXJhYmxlW3N0cl0pIC0+IFBvczoKICAgIHRyeToKICAgICAgICB3aGlsZSBzcmNbcG9zXSBpbiBjaGFyczoKICAgICAgICAgICAgcG9zICs9IDEKICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgIHBhc3MKICAgIHJldHVybiBwb3MKCgpkZWYgc2tpcF91bnRpbCgKICAgIHNyYzogc3RyLAogICAgcG9zOiBQb3MsCiAgICBleHBlY3Q6IHN0ciwKICAgICosCiAgICBlcnJvcl9vbjogZnJvemVuc2V0W3N0cl0sCiAgICBlcnJvcl9vbl9lb2Y6IGJvb2wsCikgLT4gUG9zOgogICAgdHJ5OgogICAgICAgIG5ld19wb3MgPSBzcmMuaW5kZXgoZXhwZWN0LCBwb3MpCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICBuZXdfcG9zID0gbGVuKHNyYykKICAgICAgICBpZiBlcnJvcl9vbl9lb2Y6CiAgICAgICAgICAgIHJhaXNlIHN1ZmZpeGVkX2VycihzcmMsIG5ld19wb3MsIGYiRXhwZWN0ZWQge2V4cGVjdCFyfSIpIGZyb20gTm9uZQoKICAgIGlmIG5vdCBlcnJvcl9vbi5pc2Rpc2pvaW50KHNyY1twb3M6bmV3X3Bvc10pOgogICAgICAgIHdoaWxlIHNyY1twb3NdIG5vdCBpbiBlcnJvcl9vbjoKICAgICAgICAgICAgcG9zICs9IDEKICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsIGYiRm91bmQgaW52YWxpZCBjaGFyYWN0ZXIge3NyY1twb3NdIXJ9IikKICAgIHJldHVybiBuZXdfcG9zCgoKZGVmIHNraXBfY29tbWVudChzcmM6IHN0ciwgcG9zOiBQb3MpIC0+IFBvczoKICAgIHRyeToKICAgICAgICBjaGFyOiBzdHIgfCBOb25lID0gc3JjW3Bvc10KICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgIGNoYXIgPSBOb25lCiAgICBpZiBjaGFyID09ICIjIjoKICAgICAgICByZXR1cm4gc2tpcF91bnRpbCgKICAgICAgICAgICAgc3JjLCBwb3MgKyAxLCAiXG4iLCBlcnJvcl9vbj1JTExFR0FMX0NPTU1FTlRfQ0hBUlMsIGVycm9yX29uX2VvZj1GYWxzZQogICAgICAgICkKICAgIHJldHVybiBwb3MKCgpkZWYgc2tpcF9jb21tZW50c19hbmRfYXJyYXlfd3Moc3JjOiBzdHIsIHBvczogUG9zKSAtPiBQb3M6CiAgICB3aGlsZSBUcnVlOgogICAgICAgIHBvc19iZWZvcmVfc2tpcCA9IHBvcwogICAgICAgIHBvcyA9IHNraXBfY2hhcnMoc3JjLCBwb3MsIFRPTUxfV1NfQU5EX05FV0xJTkUpCiAgICAgICAgcG9zID0gc2tpcF9jb21tZW50KHNyYywgcG9zKQogICAgICAgIGlmIHBvcyA9PSBwb3NfYmVmb3JlX3NraXA6CiAgICAgICAgICAgIHJldHVybiBwb3MKCgpkZWYgY3JlYXRlX2RpY3RfcnVsZShzcmM6IHN0ciwgcG9zOiBQb3MsIG91dDogT3V0cHV0KSAtPiB0dXBsZVtQb3MsIEtleV06CiAgICBwb3MgKz0gMSAgIyBTa2lwICJbIgogICAgcG9zID0gc2tpcF9jaGFycyhzcmMsIHBvcywgVE9NTF9XUykKICAgIHBvcywga2V5ID0gcGFyc2Vfa2V5KHNyYywgcG9zKQoKICAgIGlmIG91dC5mbGFncy5pc18oa2V5LCBGbGFncy5FWFBMSUNJVF9ORVNUKSBvciBvdXQuZmxhZ3MuaXNfKGtleSwgRmxhZ3MuRlJPWkVOKToKICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsIGYiQ2Fubm90IGRlY2xhcmUge2tleX0gdHdpY2UiKQogICAgb3V0LmZsYWdzLnNldChrZXksIEZsYWdzLkVYUExJQ0lUX05FU1QsIHJlY3Vyc2l2ZT1GYWxzZSkKICAgIHRyeToKICAgICAgICBvdXQuZGF0YS5nZXRfb3JfY3JlYXRlX25lc3Qoa2V5KQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJhaXNlIHN1ZmZpeGVkX2VycihzcmMsIHBvcywgIkNhbm5vdCBvdmVyd3JpdGUgYSB2YWx1ZSIpIGZyb20gTm9uZQoKICAgIGlmIG5vdCBzcmMuc3RhcnRzd2l0aCgiXSIsIHBvcyk6CiAgICAgICAgcmFpc2Ugc3VmZml4ZWRfZXJyKHNyYywgcG9zLCAiRXhwZWN0ZWQgJ10nIGF0IHRoZSBlbmQgb2YgYSB0YWJsZSBkZWNsYXJhdGlvbiIpCiAgICByZXR1cm4gcG9zICsgMSwga2V5CgoKZGVmIGNyZWF0ZV9saXN0X3J1bGUoc3JjOiBzdHIsIHBvczogUG9zLCBvdXQ6IE91dHB1dCkgLT4gdHVwbGVbUG9zLCBLZXldOgogICAgcG9zICs9IDIgICMgU2tpcCAiW1siCiAgICBwb3MgPSBza2lwX2NoYXJzKHNyYywgcG9zLCBUT01MX1dTKQogICAgcG9zLCBrZXkgPSBwYXJzZV9rZXkoc3JjLCBwb3MpCgogICAgaWYgb3V0LmZsYWdzLmlzXyhrZXksIEZsYWdzLkZST1pFTik6CiAgICAgICAgcmFpc2Ugc3VmZml4ZWRfZXJyKHNyYywgcG9zLCBmIkNhbm5vdCBtdXRhdGUgaW1tdXRhYmxlIG5hbWVzcGFjZSB7a2V5fSIpCiAgICAjIEZyZWUgdGhlIG5hbWVzcGFjZSBub3cgdGhhdCBpdCBwb2ludHMgdG8gYW5vdGhlciBlbXB0eSBsaXN0IGl0ZW0uLi4KICAgIG91dC5mbGFncy51bnNldF9hbGwoa2V5KQogICAgIyAuLi5idXQgdGhpcyBrZXkgcHJlY2lzZWx5IGlzIHN0aWxsIHByb2hpYml0ZWQgZnJvbSB0YWJsZSBkZWNsYXJhdGlvbgogICAgb3V0LmZsYWdzLnNldChrZXksIEZsYWdzLkVYUExJQ0lUX05FU1QsIHJlY3Vyc2l2ZT1GYWxzZSkKICAgIHRyeToKICAgICAgICBvdXQuZGF0YS5hcHBlbmRfbmVzdF90b19saXN0KGtleSkKICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJDYW5ub3Qgb3ZlcndyaXRlIGEgdmFsdWUiKSBmcm9tIE5vbmUKCiAgICBpZiBub3Qgc3JjLnN0YXJ0c3dpdGgoIl1dIiwgcG9zKToKICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJFeHBlY3RlZCAnXV0nIGF0IHRoZSBlbmQgb2YgYW4gYXJyYXkgZGVjbGFyYXRpb24iKQogICAgcmV0dXJuIHBvcyArIDIsIGtleQoKCmRlZiBrZXlfdmFsdWVfcnVsZSgKICAgIHNyYzogc3RyLCBwb3M6IFBvcywgb3V0OiBPdXRwdXQsIGhlYWRlcjogS2V5LCBwYXJzZV9mbG9hdDogUGFyc2VGbG9hdAopIC0+IFBvczoKICAgIHBvcywga2V5LCB2YWx1ZSA9IHBhcnNlX2tleV92YWx1ZV9wYWlyKHNyYywgcG9zLCBwYXJzZV9mbG9hdCkKICAgIGtleV9wYXJlbnQsIGtleV9zdGVtID0ga2V5WzotMV0sIGtleVstMV0KICAgIGFic19rZXlfcGFyZW50ID0gaGVhZGVyICsga2V5X3BhcmVudAoKICAgIHJlbGF0aXZlX3BhdGhfY29udF9rZXlzID0gKGhlYWRlciArIGtleVs6aV0gZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKGtleSkpKQogICAgZm9yIGNvbnRfa2V5IGluIHJlbGF0aXZlX3BhdGhfY29udF9rZXlzOgogICAgICAgICMgQ2hlY2sgdGhhdCBkb3R0ZWQga2V5IHN5bnRheCBkb2VzIG5vdCByZWRlZmluZSBhbiBleGlzdGluZyB0YWJsZQogICAgICAgIGlmIG91dC5mbGFncy5pc18oY29udF9rZXksIEZsYWdzLkVYUExJQ0lUX05FU1QpOgogICAgICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsIGYiQ2Fubm90IHJlZGVmaW5lIG5hbWVzcGFjZSB7Y29udF9rZXl9IikKICAgICAgICAjIENvbnRhaW5lcnMgaW4gdGhlIHJlbGF0aXZlIHBhdGggY2FuJ3QgYmUgb3BlbmVkIHdpdGggdGhlIHRhYmxlIHN5bnRheCBvcgogICAgICAgICMgZG90dGVkIGtleS92YWx1ZSBzeW50YXggaW4gZm9sbG93aW5nIHRhYmxlIHNlY3Rpb25zLgogICAgICAgIG91dC5mbGFncy5hZGRfcGVuZGluZyhjb250X2tleSwgRmxhZ3MuRVhQTElDSVRfTkVTVCkKCiAgICBpZiBvdXQuZmxhZ3MuaXNfKGFic19rZXlfcGFyZW50LCBGbGFncy5GUk9aRU4pOgogICAgICAgIHJhaXNlIHN1ZmZpeGVkX2VycigKICAgICAgICAgICAgc3JjLCBwb3MsIGYiQ2Fubm90IG11dGF0ZSBpbW11dGFibGUgbmFtZXNwYWNlIHthYnNfa2V5X3BhcmVudH0iCiAgICAgICAgKQoKICAgIHRyeToKICAgICAgICBuZXN0ID0gb3V0LmRhdGEuZ2V0X29yX2NyZWF0ZV9uZXN0KGFic19rZXlfcGFyZW50KQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJhaXNlIHN1ZmZpeGVkX2VycihzcmMsIHBvcywgIkNhbm5vdCBvdmVyd3JpdGUgYSB2YWx1ZSIpIGZyb20gTm9uZQogICAgaWYga2V5X3N0ZW0gaW4gbmVzdDoKICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJDYW5ub3Qgb3ZlcndyaXRlIGEgdmFsdWUiKQogICAgIyBNYXJrIGlubGluZSB0YWJsZSBhbmQgYXJyYXkgbmFtZXNwYWNlcyByZWN1cnNpdmVseSBpbW11dGFibGUKICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChkaWN0LCBsaXN0KSk6CiAgICAgICAgb3V0LmZsYWdzLnNldChoZWFkZXIgKyBrZXksIEZsYWdzLkZST1pFTiwgcmVjdXJzaXZlPVRydWUpCiAgICBuZXN0W2tleV9zdGVtXSA9IHZhbHVlCiAgICByZXR1cm4gcG9zCgoKZGVmIHBhcnNlX2tleV92YWx1ZV9wYWlyKAogICAgc3JjOiBzdHIsIHBvczogUG9zLCBwYXJzZV9mbG9hdDogUGFyc2VGbG9hdAopIC0+IHR1cGxlW1BvcywgS2V5LCBBbnldOgogICAgcG9zLCBrZXkgPSBwYXJzZV9rZXkoc3JjLCBwb3MpCiAgICB0cnk6CiAgICAgICAgY2hhcjogc3RyIHwgTm9uZSA9IHNyY1twb3NdCiAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICBjaGFyID0gTm9uZQogICAgaWYgY2hhciAhPSAiPSI6CiAgICAgICAgcmFpc2Ugc3VmZml4ZWRfZXJyKHNyYywgcG9zLCAiRXhwZWN0ZWQgJz0nIGFmdGVyIGEga2V5IGluIGEga2V5L3ZhbHVlIHBhaXIiKQogICAgcG9zICs9IDEKICAgIHBvcyA9IHNraXBfY2hhcnMoc3JjLCBwb3MsIFRPTUxfV1MpCiAgICBwb3MsIHZhbHVlID0gcGFyc2VfdmFsdWUoc3JjLCBwb3MsIHBhcnNlX2Zsb2F0KQogICAgcmV0dXJuIHBvcywga2V5LCB2YWx1ZQoKCmRlZiBwYXJzZV9rZXkoc3JjOiBzdHIsIHBvczogUG9zKSAtPiB0dXBsZVtQb3MsIEtleV06CiAgICBwb3MsIGtleV9wYXJ0ID0gcGFyc2Vfa2V5X3BhcnQoc3JjLCBwb3MpCiAgICBrZXk6IEtleSA9IChrZXlfcGFydCwpCiAgICBwb3MgPSBza2lwX2NoYXJzKHNyYywgcG9zLCBUT01MX1dTKQogICAgd2hpbGUgVHJ1ZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNoYXI6IHN0ciB8IE5vbmUgPSBzcmNbcG9zXQogICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICBjaGFyID0gTm9uZQogICAgICAgIGlmIGNoYXIgIT0gIi4iOgogICAgICAgICAgICByZXR1cm4gcG9zLCBrZXkKICAgICAgICBwb3MgKz0gMQogICAgICAgIHBvcyA9IHNraXBfY2hhcnMoc3JjLCBwb3MsIFRPTUxfV1MpCiAgICAgICAgcG9zLCBrZXlfcGFydCA9IHBhcnNlX2tleV9wYXJ0KHNyYywgcG9zKQogICAgICAgIGtleSArPSAoa2V5X3BhcnQsKQogICAgICAgIHBvcyA9IHNraXBfY2hhcnMoc3JjLCBwb3MsIFRPTUxfV1MpCgoKZGVmIHBhcnNlX2tleV9wYXJ0KHNyYzogc3RyLCBwb3M6IFBvcykgLT4gdHVwbGVbUG9zLCBzdHJdOgogICAgdHJ5OgogICAgICAgIGNoYXI6IHN0ciB8IE5vbmUgPSBzcmNbcG9zXQogICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgY2hhciA9IE5vbmUKICAgIGlmIGNoYXIgaW4gQkFSRV9LRVlfQ0hBUlM6CiAgICAgICAgc3RhcnRfcG9zID0gcG9zCiAgICAgICAgcG9zID0gc2tpcF9jaGFycyhzcmMsIHBvcywgQkFSRV9LRVlfQ0hBUlMpCiAgICAgICAgcmV0dXJuIHBvcywgc3JjW3N0YXJ0X3Bvczpwb3NdCiAgICBpZiBjaGFyID09ICInIjoKICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbF9zdHIoc3JjLCBwb3MpCiAgICBpZiBjaGFyID09ICciJzoKICAgICAgICByZXR1cm4gcGFyc2Vfb25lX2xpbmVfYmFzaWNfc3RyKHNyYywgcG9zKQogICAgcmFpc2Ugc3VmZml4ZWRfZXJyKHNyYywgcG9zLCAiSW52YWxpZCBpbml0aWFsIGNoYXJhY3RlciBmb3IgYSBrZXkgcGFydCIpCgoKZGVmIHBhcnNlX29uZV9saW5lX2Jhc2ljX3N0cihzcmM6IHN0ciwgcG9zOiBQb3MpIC0+IHR1cGxlW1Bvcywgc3RyXToKICAgIHBvcyArPSAxCiAgICByZXR1cm4gcGFyc2VfYmFzaWNfc3RyKHNyYywgcG9zLCBtdWx0aWxpbmU9RmFsc2UpCgoKZGVmIHBhcnNlX2FycmF5KHNyYzogc3RyLCBwb3M6IFBvcywgcGFyc2VfZmxvYXQ6IFBhcnNlRmxvYXQpIC0+IHR1cGxlW1BvcywgbGlzdF06CiAgICBwb3MgKz0gMQogICAgYXJyYXk6IGxpc3QgPSBbXQoKICAgIHBvcyA9IHNraXBfY29tbWVudHNfYW5kX2FycmF5X3dzKHNyYywgcG9zKQogICAgaWYgc3JjLnN0YXJ0c3dpdGgoIl0iLCBwb3MpOgogICAgICAgIHJldHVybiBwb3MgKyAxLCBhcnJheQogICAgd2hpbGUgVHJ1ZToKICAgICAgICBwb3MsIHZhbCA9IHBhcnNlX3ZhbHVlKHNyYywgcG9zLCBwYXJzZV9mbG9hdCkKICAgICAgICBhcnJheS5hcHBlbmQodmFsKQogICAgICAgIHBvcyA9IHNraXBfY29tbWVudHNfYW5kX2FycmF5X3dzKHNyYywgcG9zKQoKICAgICAgICBjID0gc3JjW3BvcyA6IHBvcyArIDFdCiAgICAgICAgaWYgYyA9PSAiXSI6CiAgICAgICAgICAgIHJldHVybiBwb3MgKyAxLCBhcnJheQogICAgICAgIGlmIGMgIT0gIiwiOgogICAgICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJVbmNsb3NlZCBhcnJheSIpCiAgICAgICAgcG9zICs9IDEKCiAgICAgICAgcG9zID0gc2tpcF9jb21tZW50c19hbmRfYXJyYXlfd3Moc3JjLCBwb3MpCiAgICAgICAgaWYgc3JjLnN0YXJ0c3dpdGgoIl0iLCBwb3MpOgogICAgICAgICAgICByZXR1cm4gcG9zICsgMSwgYXJyYXkKCgpkZWYgcGFyc2VfaW5saW5lX3RhYmxlKHNyYzogc3RyLCBwb3M6IFBvcywgcGFyc2VfZmxvYXQ6IFBhcnNlRmxvYXQpIC0+IHR1cGxlW1BvcywgZGljdF06CiAgICBwb3MgKz0gMQogICAgbmVzdGVkX2RpY3QgPSBOZXN0ZWREaWN0KCkKICAgIGZsYWdzID0gRmxhZ3MoKQoKICAgIHBvcyA9IHNraXBfY2hhcnMoc3JjLCBwb3MsIFRPTUxfV1MpCiAgICBpZiBzcmMuc3RhcnRzd2l0aCgifSIsIHBvcyk6CiAgICAgICAgcmV0dXJuIHBvcyArIDEsIG5lc3RlZF9kaWN0LmRpY3QKICAgIHdoaWxlIFRydWU6CiAgICAgICAgcG9zLCBrZXksIHZhbHVlID0gcGFyc2Vfa2V5X3ZhbHVlX3BhaXIoc3JjLCBwb3MsIHBhcnNlX2Zsb2F0KQogICAgICAgIGtleV9wYXJlbnQsIGtleV9zdGVtID0ga2V5WzotMV0sIGtleVstMV0KICAgICAgICBpZiBmbGFncy5pc18oa2V5LCBGbGFncy5GUk9aRU4pOgogICAgICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsIGYiQ2Fubm90IG11dGF0ZSBpbW11dGFibGUgbmFtZXNwYWNlIHtrZXl9IikKICAgICAgICB0cnk6CiAgICAgICAgICAgIG5lc3QgPSBuZXN0ZWRfZGljdC5nZXRfb3JfY3JlYXRlX25lc3Qoa2V5X3BhcmVudCwgYWNjZXNzX2xpc3RzPUZhbHNlKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2Ugc3VmZml4ZWRfZXJyKHNyYywgcG9zLCAiQ2Fubm90IG92ZXJ3cml0ZSBhIHZhbHVlIikgZnJvbSBOb25lCiAgICAgICAgaWYga2V5X3N0ZW0gaW4gbmVzdDoKICAgICAgICAgICAgcmFpc2Ugc3VmZml4ZWRfZXJyKHNyYywgcG9zLCBmIkR1cGxpY2F0ZSBpbmxpbmUgdGFibGUga2V5IHtrZXlfc3RlbSFyfSIpCiAgICAgICAgbmVzdFtrZXlfc3RlbV0gPSB2YWx1ZQogICAgICAgIHBvcyA9IHNraXBfY2hhcnMoc3JjLCBwb3MsIFRPTUxfV1MpCiAgICAgICAgYyA9IHNyY1twb3MgOiBwb3MgKyAxXQogICAgICAgIGlmIGMgPT0gIn0iOgogICAgICAgICAgICByZXR1cm4gcG9zICsgMSwgbmVzdGVkX2RpY3QuZGljdAogICAgICAgIGlmIGMgIT0gIiwiOgogICAgICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJVbmNsb3NlZCBpbmxpbmUgdGFibGUiKQogICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChkaWN0LCBsaXN0KSk6CiAgICAgICAgICAgIGZsYWdzLnNldChrZXksIEZsYWdzLkZST1pFTiwgcmVjdXJzaXZlPVRydWUpCiAgICAgICAgcG9zICs9IDEKICAgICAgICBwb3MgPSBza2lwX2NoYXJzKHNyYywgcG9zLCBUT01MX1dTKQoKCmRlZiBwYXJzZV9iYXNpY19zdHJfZXNjYXBlKAogICAgc3JjOiBzdHIsIHBvczogUG9zLCAqLCBtdWx0aWxpbmU6IGJvb2wgPSBGYWxzZQopIC0+IHR1cGxlW1Bvcywgc3RyXToKICAgIGVzY2FwZV9pZCA9IHNyY1twb3MgOiBwb3MgKyAyXQogICAgcG9zICs9IDIKICAgIGlmIG11bHRpbGluZSBhbmQgZXNjYXBlX2lkIGluIHsiXFwgIiwgIlxcXHQiLCAiXFxcbiJ9OgogICAgICAgICMgU2tpcCB3aGl0ZXNwYWNlIHVudGlsIG5leHQgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyIG9yIGVuZCBvZgogICAgICAgICMgdGhlIGRvYy4gRXJyb3IgaWYgbm9uLXdoaXRlc3BhY2UgaXMgZm91bmQgYmVmb3JlIG5ld2xpbmUuCiAgICAgICAgaWYgZXNjYXBlX2lkICE9ICJcXFxuIjoKICAgICAgICAgICAgcG9zID0gc2tpcF9jaGFycyhzcmMsIHBvcywgVE9NTF9XUykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY2hhciA9IHNyY1twb3NdCiAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgcmV0dXJuIHBvcywgIiIKICAgICAgICAgICAgaWYgY2hhciAhPSAiXG4iOgogICAgICAgICAgICAgICAgcmFpc2Ugc3VmZml4ZWRfZXJyKHNyYywgcG9zLCAiVW5lc2NhcGVkICdcXCcgaW4gYSBzdHJpbmciKQogICAgICAgICAgICBwb3MgKz0gMQogICAgICAgIHBvcyA9IHNraXBfY2hhcnMoc3JjLCBwb3MsIFRPTUxfV1NfQU5EX05FV0xJTkUpCiAgICAgICAgcmV0dXJuIHBvcywgIiIKICAgIGlmIGVzY2FwZV9pZCA9PSAiXFx1IjoKICAgICAgICByZXR1cm4gcGFyc2VfaGV4X2NoYXIoc3JjLCBwb3MsIDQpCiAgICBpZiBlc2NhcGVfaWQgPT0gIlxcVSI6CiAgICAgICAgcmV0dXJuIHBhcnNlX2hleF9jaGFyKHNyYywgcG9zLCA4KQogICAgdHJ5OgogICAgICAgIHJldHVybiBwb3MsIEJBU0lDX1NUUl9FU0NBUEVfUkVQTEFDRU1FTlRTW2VzY2FwZV9pZF0KICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJVbmVzY2FwZWQgJ1xcJyBpbiBhIHN0cmluZyIpIGZyb20gTm9uZQoKCmRlZiBwYXJzZV9iYXNpY19zdHJfZXNjYXBlX211bHRpbGluZShzcmM6IHN0ciwgcG9zOiBQb3MpIC0+IHR1cGxlW1Bvcywgc3RyXToKICAgIHJldHVybiBwYXJzZV9iYXNpY19zdHJfZXNjYXBlKHNyYywgcG9zLCBtdWx0aWxpbmU9VHJ1ZSkKCgpkZWYgcGFyc2VfaGV4X2NoYXIoc3JjOiBzdHIsIHBvczogUG9zLCBoZXhfbGVuOiBpbnQpIC0+IHR1cGxlW1Bvcywgc3RyXToKICAgIGhleF9zdHIgPSBzcmNbcG9zIDogcG9zICsgaGV4X2xlbl0KICAgIGlmIGxlbihoZXhfc3RyKSAhPSBoZXhfbGVuIG9yIG5vdCBIRVhESUdJVF9DSEFSUy5pc3N1cGVyc2V0KGhleF9zdHIpOgogICAgICAgIHJhaXNlIHN1ZmZpeGVkX2VycihzcmMsIHBvcywgIkludmFsaWQgaGV4IHZhbHVlIikKICAgIHBvcyArPSBoZXhfbGVuCiAgICBoZXhfaW50ID0gaW50KGhleF9zdHIsIDE2KQogICAgaWYgbm90IGlzX3VuaWNvZGVfc2NhbGFyX3ZhbHVlKGhleF9pbnQpOgogICAgICAgIHJhaXNlIHN1ZmZpeGVkX2VycihzcmMsIHBvcywgIkVzY2FwZWQgY2hhcmFjdGVyIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlIikKICAgIHJldHVybiBwb3MsIGNocihoZXhfaW50KQoKCmRlZiBwYXJzZV9saXRlcmFsX3N0cihzcmM6IHN0ciwgcG9zOiBQb3MpIC0+IHR1cGxlW1Bvcywgc3RyXToKICAgIHBvcyArPSAxICAjIFNraXAgc3RhcnRpbmcgYXBvc3Ryb3BoZQogICAgc3RhcnRfcG9zID0gcG9zCiAgICBwb3MgPSBza2lwX3VudGlsKAogICAgICAgIHNyYywgcG9zLCAiJyIsIGVycm9yX29uPUlMTEVHQUxfTElURVJBTF9TVFJfQ0hBUlMsIGVycm9yX29uX2VvZj1UcnVlCiAgICApCiAgICByZXR1cm4gcG9zICsgMSwgc3JjW3N0YXJ0X3Bvczpwb3NdICAjIFNraXAgZW5kaW5nIGFwb3N0cm9waGUKCgpkZWYgcGFyc2VfbXVsdGlsaW5lX3N0cihzcmM6IHN0ciwgcG9zOiBQb3MsICosIGxpdGVyYWw6IGJvb2wpIC0+IHR1cGxlW1Bvcywgc3RyXToKICAgIHBvcyArPSAzCiAgICBpZiBzcmMuc3RhcnRzd2l0aCgiXG4iLCBwb3MpOgogICAgICAgIHBvcyArPSAxCgogICAgaWYgbGl0ZXJhbDoKICAgICAgICBkZWxpbSA9ICInIgogICAgICAgIGVuZF9wb3MgPSBza2lwX3VudGlsKAogICAgICAgICAgICBzcmMsCiAgICAgICAgICAgIHBvcywKICAgICAgICAgICAgIicnJyIsCiAgICAgICAgICAgIGVycm9yX29uPUlMTEVHQUxfTVVMVElMSU5FX0xJVEVSQUxfU1RSX0NIQVJTLAogICAgICAgICAgICBlcnJvcl9vbl9lb2Y9VHJ1ZSwKICAgICAgICApCiAgICAgICAgcmVzdWx0ID0gc3JjW3BvczplbmRfcG9zXQogICAgICAgIHBvcyA9IGVuZF9wb3MgKyAzCiAgICBlbHNlOgogICAgICAgIGRlbGltID0gJyInCiAgICAgICAgcG9zLCByZXN1bHQgPSBwYXJzZV9iYXNpY19zdHIoc3JjLCBwb3MsIG11bHRpbGluZT1UcnVlKQoKICAgICMgQWRkIGF0IG1heGltdW0gdHdvIGV4dHJhIGFwb3N0cm9waGVzL3F1b3RlcyBpZiB0aGUgZW5kIHNlcXVlbmNlCiAgICAjIGlzIDQgb3IgNSBjaGFycyBsb25nIGluc3RlYWQgb2YganVzdCAzLgogICAgaWYgbm90IHNyYy5zdGFydHN3aXRoKGRlbGltLCBwb3MpOgogICAgICAgIHJldHVybiBwb3MsIHJlc3VsdAogICAgcG9zICs9IDEKICAgIGlmIG5vdCBzcmMuc3RhcnRzd2l0aChkZWxpbSwgcG9zKToKICAgICAgICByZXR1cm4gcG9zLCByZXN1bHQgKyBkZWxpbQogICAgcG9zICs9IDEKICAgIHJldHVybiBwb3MsIHJlc3VsdCArIChkZWxpbSAqIDIpCgoKZGVmIHBhcnNlX2Jhc2ljX3N0cihzcmM6IHN0ciwgcG9zOiBQb3MsICosIG11bHRpbGluZTogYm9vbCkgLT4gdHVwbGVbUG9zLCBzdHJdOgogICAgaWYgbXVsdGlsaW5lOgogICAgICAgIGVycm9yX29uID0gSUxMRUdBTF9NVUxUSUxJTkVfQkFTSUNfU1RSX0NIQVJTCiAgICAgICAgcGFyc2VfZXNjYXBlcyA9IHBhcnNlX2Jhc2ljX3N0cl9lc2NhcGVfbXVsdGlsaW5lCiAgICBlbHNlOgogICAgICAgIGVycm9yX29uID0gSUxMRUdBTF9CQVNJQ19TVFJfQ0hBUlMKICAgICAgICBwYXJzZV9lc2NhcGVzID0gcGFyc2VfYmFzaWNfc3RyX2VzY2FwZQogICAgcmVzdWx0ID0gIiIKICAgIHN0YXJ0X3BvcyA9IHBvcwogICAgd2hpbGUgVHJ1ZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNoYXIgPSBzcmNbcG9zXQogICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJVbnRlcm1pbmF0ZWQgc3RyaW5nIikgZnJvbSBOb25lCiAgICAgICAgaWYgY2hhciA9PSAnIic6CiAgICAgICAgICAgIGlmIG5vdCBtdWx0aWxpbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gcG9zICsgMSwgcmVzdWx0ICsgc3JjW3N0YXJ0X3Bvczpwb3NdCiAgICAgICAgICAgIGlmIHNyYy5zdGFydHN3aXRoKCciIiInLCBwb3MpOgogICAgICAgICAgICAgICAgcmV0dXJuIHBvcyArIDMsIHJlc3VsdCArIHNyY1tzdGFydF9wb3M6cG9zXQogICAgICAgICAgICBwb3MgKz0gMQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGNoYXIgPT0gIlxcIjoKICAgICAgICAgICAgcmVzdWx0ICs9IHNyY1tzdGFydF9wb3M6cG9zXQogICAgICAgICAgICBwb3MsIHBhcnNlZF9lc2NhcGUgPSBwYXJzZV9lc2NhcGVzKHNyYywgcG9zKQogICAgICAgICAgICByZXN1bHQgKz0gcGFyc2VkX2VzY2FwZQogICAgICAgICAgICBzdGFydF9wb3MgPSBwb3MKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBjaGFyIGluIGVycm9yX29uOgogICAgICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsIGYiSWxsZWdhbCBjaGFyYWN0ZXIge2NoYXIhcn0iKQogICAgICAgIHBvcyArPSAxCgoKZGVmIHBhcnNlX3ZhbHVlKCAgIyBub3FhOiBDOTAxCiAgICBzcmM6IHN0ciwgcG9zOiBQb3MsIHBhcnNlX2Zsb2F0OiBQYXJzZUZsb2F0CikgLT4gdHVwbGVbUG9zLCBBbnldOgogICAgdHJ5OgogICAgICAgIGNoYXI6IHN0ciB8IE5vbmUgPSBzcmNbcG9zXQogICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgY2hhciA9IE5vbmUKCiAgICAjIElNUE9SVEFOVDogb3JkZXIgY29uZGl0aW9ucyBiYXNlZCBvbiBzcGVlZCBvZiBjaGVja2luZyBhbmQgbGlrZWxpaG9vZAoKICAgICMgQmFzaWMgc3RyaW5ncwogICAgaWYgY2hhciA9PSAnIic6CiAgICAgICAgaWYgc3JjLnN0YXJ0c3dpdGgoJyIiIicsIHBvcyk6CiAgICAgICAgICAgIHJldHVybiBwYXJzZV9tdWx0aWxpbmVfc3RyKHNyYywgcG9zLCBsaXRlcmFsPUZhbHNlKQogICAgICAgIHJldHVybiBwYXJzZV9vbmVfbGluZV9iYXNpY19zdHIoc3JjLCBwb3MpCgogICAgIyBMaXRlcmFsIHN0cmluZ3MKICAgIGlmIGNoYXIgPT0gIiciOgogICAgICAgIGlmIHNyYy5zdGFydHN3aXRoKCInJyciLCBwb3MpOgogICAgICAgICAgICByZXR1cm4gcGFyc2VfbXVsdGlsaW5lX3N0cihzcmMsIHBvcywgbGl0ZXJhbD1UcnVlKQogICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsX3N0cihzcmMsIHBvcykKCiAgICAjIEJvb2xlYW5zCiAgICBpZiBjaGFyID09ICJ0IjoKICAgICAgICBpZiBzcmMuc3RhcnRzd2l0aCgidHJ1ZSIsIHBvcyk6CiAgICAgICAgICAgIHJldHVybiBwb3MgKyA0LCBUcnVlCiAgICBpZiBjaGFyID09ICJmIjoKICAgICAgICBpZiBzcmMuc3RhcnRzd2l0aCgiZmFsc2UiLCBwb3MpOgogICAgICAgICAgICByZXR1cm4gcG9zICsgNSwgRmFsc2UKCiAgICAjIEFycmF5cwogICAgaWYgY2hhciA9PSAiWyI6CiAgICAgICAgcmV0dXJuIHBhcnNlX2FycmF5KHNyYywgcG9zLCBwYXJzZV9mbG9hdCkKCiAgICAjIElubGluZSB0YWJsZXMKICAgIGlmIGNoYXIgPT0gInsiOgogICAgICAgIHJldHVybiBwYXJzZV9pbmxpbmVfdGFibGUoc3JjLCBwb3MsIHBhcnNlX2Zsb2F0KQoKICAgICMgRGF0ZXMgYW5kIHRpbWVzCiAgICBkYXRldGltZV9tYXRjaCA9IFJFX0RBVEVUSU1FLm1hdGNoKHNyYywgcG9zKQogICAgaWYgZGF0ZXRpbWVfbWF0Y2g6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBkYXRldGltZV9vYmogPSBtYXRjaF90b19kYXRldGltZShkYXRldGltZV9tYXRjaCkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJJbnZhbGlkIGRhdGUgb3IgZGF0ZXRpbWUiKSBmcm9tIGUKICAgICAgICByZXR1cm4gZGF0ZXRpbWVfbWF0Y2guZW5kKCksIGRhdGV0aW1lX29iagogICAgbG9jYWx0aW1lX21hdGNoID0gUkVfTE9DQUxUSU1FLm1hdGNoKHNyYywgcG9zKQogICAgaWYgbG9jYWx0aW1lX21hdGNoOgogICAgICAgIHJldHVybiBsb2NhbHRpbWVfbWF0Y2guZW5kKCksIG1hdGNoX3RvX2xvY2FsdGltZShsb2NhbHRpbWVfbWF0Y2gpCgogICAgIyBJbnRlZ2VycyBhbmQgIm5vcm1hbCIgZmxvYXRzLgogICAgIyBUaGUgcmVnZXggd2lsbCBncmVlZGlseSBtYXRjaCBhbnkgdHlwZSBzdGFydGluZyB3aXRoIGEgZGVjaW1hbAogICAgIyBjaGFyLCBzbyBuZWVkcyB0byBiZSBsb2NhdGVkIGFmdGVyIGhhbmRsaW5nIG9mIGRhdGVzIGFuZCB0aW1lcy4KICAgIG51bWJlcl9tYXRjaCA9IFJFX05VTUJFUi5tYXRjaChzcmMsIHBvcykKICAgIGlmIG51bWJlcl9tYXRjaDoKICAgICAgICByZXR1cm4gbnVtYmVyX21hdGNoLmVuZCgpLCBtYXRjaF90b19udW1iZXIobnVtYmVyX21hdGNoLCBwYXJzZV9mbG9hdCkKCiAgICAjIFNwZWNpYWwgZmxvYXRzCiAgICBmaXJzdF90aHJlZSA9IHNyY1twb3MgOiBwb3MgKyAzXQogICAgaWYgZmlyc3RfdGhyZWUgaW4geyJpbmYiLCAibmFuIn06CiAgICAgICAgcmV0dXJuIHBvcyArIDMsIHBhcnNlX2Zsb2F0KGZpcnN0X3RocmVlKQogICAgZmlyc3RfZm91ciA9IHNyY1twb3MgOiBwb3MgKyA0XQogICAgaWYgZmlyc3RfZm91ciBpbiB7Ii1pbmYiLCAiK2luZiIsICItbmFuIiwgIituYW4ifToKICAgICAgICByZXR1cm4gcG9zICsgNCwgcGFyc2VfZmxvYXQoZmlyc3RfZm91cikKCiAgICByYWlzZSBzdWZmaXhlZF9lcnIoc3JjLCBwb3MsICJJbnZhbGlkIHZhbHVlIikKCgpkZWYgc3VmZml4ZWRfZXJyKHNyYzogc3RyLCBwb3M6IFBvcywgbXNnOiBzdHIpIC0+IFRPTUxEZWNvZGVFcnJvcjoKICAgICIiIlJldHVybiBhIGBUT01MRGVjb2RlRXJyb3JgIHdoZXJlIGVycm9yIG1lc3NhZ2UgaXMgc3VmZml4ZWQgd2l0aAogICAgY29vcmRpbmF0ZXMgaW4gc291cmNlLiIiIgoKICAgIGRlZiBjb29yZF9yZXByKHNyYzogc3RyLCBwb3M6IFBvcykgLT4gc3RyOgogICAgICAgIGlmIHBvcyA+PSBsZW4oc3JjKToKICAgICAgICAgICAgcmV0dXJuICJlbmQgb2YgZG9jdW1lbnQiCiAgICAgICAgbGluZSA9IHNyYy5jb3VudCgiXG4iLCAwLCBwb3MpICsgMQogICAgICAgIGlmIGxpbmUgPT0gMToKICAgICAgICAgICAgY29sdW1uID0gcG9zICsgMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbHVtbiA9IHBvcyAtIHNyYy5yaW5kZXgoIlxuIiwgMCwgcG9zKQogICAgICAgIHJldHVybiBmImxpbmUge2xpbmV9LCBjb2x1bW4ge2NvbHVtbn0iCgogICAgcmV0dXJuIFRPTUxEZWNvZGVFcnJvcihmInttc2d9IChhdCB7Y29vcmRfcmVwcihzcmMsIHBvcyl9KSIpCgoKZGVmIGlzX3VuaWNvZGVfc2NhbGFyX3ZhbHVlKGNvZGVwb2ludDogaW50KSAtPiBib29sOgogICAgcmV0dXJuICgwIDw9IGNvZGVwb2ludCA8PSA1NTI5NSkgb3IgKDU3MzQ0IDw9IGNvZGVwb2ludCA8PSAxMTE0MTExKQoKCmRlZiBtYWtlX3NhZmVfcGFyc2VfZmxvYXQocGFyc2VfZmxvYXQ6IFBhcnNlRmxvYXQpIC0+IFBhcnNlRmxvYXQ6CiAgICAiIiJBIGRlY29yYXRvciB0byBtYWtlIGBwYXJzZV9mbG9hdGAgc2FmZS4KCiAgICBgcGFyc2VfZmxvYXRgIG11c3Qgbm90IHJldHVybiBkaWN0cyBvciBsaXN0cywgYmVjYXVzZSB0aGVzZSB0eXBlcwogICAgd291bGQgYmUgbWl4ZWQgd2l0aCBwYXJzZWQgVE9NTCB0YWJsZXMgYW5kIGFycmF5cywgdGh1cyBjb25mdXNpbmcKICAgIHRoZSBwYXJzZXIuIFRoZSByZXR1cm5lZCBkZWNvcmF0ZWQgY2FsbGFibGUgcmFpc2VzIGBWYWx1ZUVycm9yYAogICAgaW5zdGVhZCBvZiByZXR1cm5pbmcgaWxsZWdhbCB0eXBlcy4KICAgICIiIgogICAgIyBUaGUgZGVmYXVsdCBgZmxvYXRgIGNhbGxhYmxlIG5ldmVyIHJldHVybnMgaWxsZWdhbCB0eXBlcy4gT3B0aW1pemUgaXQuCiAgICBpZiBwYXJzZV9mbG9hdCBpcyBmbG9hdDogICMgdHlwZTogaWdub3JlW2NvbXBhcmlzb24tb3ZlcmxhcF0KICAgICAgICByZXR1cm4gZmxvYXQKCiAgICBkZWYgc2FmZV9wYXJzZV9mbG9hdChmbG9hdF9zdHI6IHN0cikgLT4gQW55OgogICAgICAgIGZsb2F0X3ZhbHVlID0gcGFyc2VfZmxvYXQoZmxvYXRfc3RyKQogICAgICAgIGlmIGlzaW5zdGFuY2UoZmxvYXRfdmFsdWUsIChkaWN0LCBsaXN0KSk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBhcnNlX2Zsb2F0IG11c3Qgbm90IHJldHVybiBkaWN0cyBvciBsaXN0cyIpCiAgICAgICAgcmV0dXJuIGZsb2F0X3ZhbHVlCgogICAgcmV0dXJuIHNhZmVfcGFyc2VfZmxvYXQKUEsDBBQAAAAAAAMgo1Z17JMxfwsAAH8LAAAOAAAAdG9tbGxpYi9fcmUucHkjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKIyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDIxIFRhbmVsaSBIdWtraW5lbgojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KCmZyb20gX19mdXR1cmVfXyBpbXBvcnQgYW5ub3RhdGlvbnMKCmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUsIGRhdGV0aW1lLCB0aW1lLCB0aW1lZGVsdGEsIHRpbWV6b25lLCB0emluZm8KZnJvbSBmdW5jdG9vbHMgaW1wb3J0IGxydV9jYWNoZQppbXBvcnQgcmUKZnJvbSB0eXBpbmcgaW1wb3J0IEFueQoKZnJvbSAuX3R5cGVzIGltcG9ydCBQYXJzZUZsb2F0CgojIEUuZy4KIyAtIDAwOjMyOjAwLjk5OTk5OQojIC0gMDA6MzI6MDAKX1RJTUVfUkVfU1RSID0gciIoWzAxXVswLTldfDJbMC0zXSk6KFswLTVdWzAtOV0pOihbMC01XVswLTldKSg/OlwuKFswLTldezEsNn0pWzAtOV0qKT8iCgpSRV9OVU1CRVIgPSByZS5jb21waWxlKAogICAgciIiIgowCig/OgogICAgeFswLTlBLUZhLWZdKD86Xz9bMC05QS1GYS1mXSkqICAgIyBoZXgKICAgIHwKICAgIGJbMDFdKD86Xz9bMDFdKSogICAgICAgICAgICAgICAgICMgYmluCiAgICB8CiAgICBvWzAtN10oPzpfP1swLTddKSogICAgICAgICAgICAgICAjIG9jdAopCnwKWystXT8oPzowfFsxLTldKD86Xz9bMC05XSkqKSAgICAgICAgICMgZGVjLCBpbnRlZ2VyIHBhcnQKKD9QPGZsb2F0cGFydD4KICAgICg/OlwuWzAtOV0oPzpfP1swLTldKSopPyAgICAgICAgICMgb3B0aW9uYWwgZnJhY3Rpb25hbCBwYXJ0CiAgICAoPzpbZUVdWystXT9bMC05XSg/Ol8/WzAtOV0pKik/ICAjIG9wdGlvbmFsIGV4cG9uZW50IHBhcnQKKQoiIiIsCiAgICBmbGFncz1yZS5WRVJCT1NFLAopClJFX0xPQ0FMVElNRSA9IHJlLmNvbXBpbGUoX1RJTUVfUkVfU1RSKQpSRV9EQVRFVElNRSA9IHJlLmNvbXBpbGUoCiAgICByZiIiIgooWzAtOV17ezR9fSktKDBbMS05XXwxWzAtMl0pLSgwWzEtOV18WzEyXVswLTldfDNbMDFdKSAgIyBkYXRlLCBlLmcuIDE5ODgtMTAtMjcKKD86CiAgICBbVHQgXQogICAge19USU1FX1JFX1NUUn0KICAgICg/OihbWnpdKXwoWystXSkoWzAxXVswLTldfDJbMC0zXSk6KFswLTVdWzAtOV0pKT8gICMgb3B0aW9uYWwgdGltZSBvZmZzZXQKKT8KIiIiLAogICAgZmxhZ3M9cmUuVkVSQk9TRSwKKQoKCmRlZiBtYXRjaF90b19kYXRldGltZShtYXRjaDogcmUuTWF0Y2gpIC0+IGRhdGV0aW1lIHwgZGF0ZToKICAgICIiIkNvbnZlcnQgYSBgUkVfREFURVRJTUVgIG1hdGNoIHRvIGBkYXRldGltZS5kYXRldGltZWAgb3IgYGRhdGV0aW1lLmRhdGVgLgoKICAgIFJhaXNlcyBWYWx1ZUVycm9yIGlmIHRoZSBtYXRjaCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgdmFsaWQgZGF0ZQogICAgb3IgZGF0ZXRpbWUuCiAgICAiIiIKICAgICgKICAgICAgICB5ZWFyX3N0ciwKICAgICAgICBtb250aF9zdHIsCiAgICAgICAgZGF5X3N0ciwKICAgICAgICBob3VyX3N0ciwKICAgICAgICBtaW51dGVfc3RyLAogICAgICAgIHNlY19zdHIsCiAgICAgICAgbWljcm9zX3N0ciwKICAgICAgICB6dWx1X3RpbWUsCiAgICAgICAgb2Zmc2V0X3NpZ25fc3RyLAogICAgICAgIG9mZnNldF9ob3VyX3N0ciwKICAgICAgICBvZmZzZXRfbWludXRlX3N0ciwKICAgICkgPSBtYXRjaC5ncm91cHMoKQogICAgeWVhciwgbW9udGgsIGRheSA9IGludCh5ZWFyX3N0ciksIGludChtb250aF9zdHIpLCBpbnQoZGF5X3N0cikKICAgIGlmIGhvdXJfc3RyIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuIGRhdGUoeWVhciwgbW9udGgsIGRheSkKICAgIGhvdXIsIG1pbnV0ZSwgc2VjID0gaW50KGhvdXJfc3RyKSwgaW50KG1pbnV0ZV9zdHIpLCBpbnQoc2VjX3N0cikKICAgIG1pY3JvcyA9IGludChtaWNyb3Nfc3RyLmxqdXN0KDYsICIwIikpIGlmIG1pY3Jvc19zdHIgZWxzZSAwCiAgICBpZiBvZmZzZXRfc2lnbl9zdHI6CiAgICAgICAgdHo6IHR6aW5mbyB8IE5vbmUgPSBjYWNoZWRfdHooCiAgICAgICAgICAgIG9mZnNldF9ob3VyX3N0ciwgb2Zmc2V0X21pbnV0ZV9zdHIsIG9mZnNldF9zaWduX3N0cgogICAgICAgICkKICAgIGVsaWYgenVsdV90aW1lOgogICAgICAgIHR6ID0gdGltZXpvbmUudXRjCiAgICBlbHNlOiAgIyBsb2NhbCBkYXRlLXRpbWUKICAgICAgICB0eiA9IE5vbmUKICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlYywgbWljcm9zLCB0emluZm89dHopCgoKQGxydV9jYWNoZShtYXhzaXplPU5vbmUpCmRlZiBjYWNoZWRfdHooaG91cl9zdHI6IHN0ciwgbWludXRlX3N0cjogc3RyLCBzaWduX3N0cjogc3RyKSAtPiB0aW1lem9uZToKICAgIHNpZ24gPSAxIGlmIHNpZ25fc3RyID09ICIrIiBlbHNlIC0xCiAgICByZXR1cm4gdGltZXpvbmUoCiAgICAgICAgdGltZWRlbHRhKAogICAgICAgICAgICBob3Vycz1zaWduICogaW50KGhvdXJfc3RyKSwKICAgICAgICAgICAgbWludXRlcz1zaWduICogaW50KG1pbnV0ZV9zdHIpLAogICAgICAgICkKICAgICkKCgpkZWYgbWF0Y2hfdG9fbG9jYWx0aW1lKG1hdGNoOiByZS5NYXRjaCkgLT4gdGltZToKICAgIGhvdXJfc3RyLCBtaW51dGVfc3RyLCBzZWNfc3RyLCBtaWNyb3Nfc3RyID0gbWF0Y2guZ3JvdXBzKCkKICAgIG1pY3JvcyA9IGludChtaWNyb3Nfc3RyLmxqdXN0KDYsICIwIikpIGlmIG1pY3Jvc19zdHIgZWxzZSAwCiAgICByZXR1cm4gdGltZShpbnQoaG91cl9zdHIpLCBpbnQobWludXRlX3N0ciksIGludChzZWNfc3RyKSwgbWljcm9zKQoKCmRlZiBtYXRjaF90b19udW1iZXIobWF0Y2g6IHJlLk1hdGNoLCBwYXJzZV9mbG9hdDogUGFyc2VGbG9hdCkgLT4gQW55OgogICAgaWYgbWF0Y2guZ3JvdXAoImZsb2F0cGFydCIpOgogICAgICAgIHJldHVybiBwYXJzZV9mbG9hdChtYXRjaC5ncm91cCgpKQogICAgcmV0dXJuIGludChtYXRjaC5ncm91cCgpLCAwKQpQSwMEFAAAAAAAAyCjVrPvEmf+AAAA/gAAABEAAAB0b21sbGliL190eXBlcy5weSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAojIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjEgVGFuZWxpIEh1a2tpbmVuCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgoKZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIFR1cGxlCgojIFR5cGUgYW5ub3RhdGlvbnMKUGFyc2VGbG9hdCA9IENhbGxhYmxlW1tzdHJdLCBBbnldCktleSA9IFR1cGxlW3N0ciwgLi4uXQpQb3MgPSBpbnQKUEsDBBQAAAAAAAMgo1Yrb7qyzg0AAM4NAAAUAAAAdW5pdHRlc3QvX19pbml0X18ucHkiIiIKUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmssIGJhc2VkIG9uIEVyaWNoIEdhbW1hJ3MgSlVuaXQgYW5kIEtlbnQgQmVjaydzClNtYWxsdGFsayB0ZXN0aW5nIGZyYW1ld29yayAodXNlZCB3aXRoIHBlcm1pc3Npb24pLgoKVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIGNvcmUgZnJhbWV3b3JrIGNsYXNzZXMgdGhhdCBmb3JtIHRoZSBiYXNpcyBvZgpzcGVjaWZpYyB0ZXN0IGNhc2VzIGFuZCBzdWl0ZXMgKFRlc3RDYXNlLCBUZXN0U3VpdGUgZXRjLiksIGFuZCBhbHNvIGEKdGV4dC1iYXNlZCB1dGlsaXR5IGNsYXNzIGZvciBydW5uaW5nIHRoZSB0ZXN0cyBhbmQgcmVwb3J0aW5nIHRoZSByZXN1bHRzCiAoVGV4dFRlc3RSdW5uZXIpLgoKU2ltcGxlIHVzYWdlOgoKICAgIGltcG9ydCB1bml0dGVzdAoKICAgIGNsYXNzIEludGVnZXJBcml0aG1ldGljVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgIGRlZiB0ZXN0QWRkKHNlbGYpOiAgIyB0ZXN0IG1ldGhvZCBuYW1lcyBiZWdpbiB3aXRoICd0ZXN0JwogICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgxICsgMiksIDMpCiAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCArIDEsIDEpCiAgICAgICAgZGVmIHRlc3RNdWx0aXBseShzZWxmKToKICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMCAqIDEwKSwgMCkKICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoNSAqIDgpLCA0MCkKCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgIHVuaXR0ZXN0Lm1haW4oKQoKRnVydGhlciBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGJ1bmRsZWQgZG9jdW1lbnRhdGlvbiwgYW5kIGZyb20KCiAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWwKCkNvcHlyaWdodCAoYykgMTk5OS0yMDAzIFN0ZXZlIFB1cmNlbGwKQ29weXJpZ2h0IChjKSAyMDAzLTIwMTAgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KVGhpcyBtb2R1bGUgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBtYXkgcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUHl0aG9uIGl0c2VsZiwgc28gbG9uZyBhcyB0aGlzIGNvcHlyaWdodCBtZXNzYWdlCmFuZCBkaXNjbGFpbWVyIGFyZSByZXRhaW5lZCBpbiB0aGVpciBvcmlnaW5hbCBmb3JtLgoKSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgVE8gQU5ZIFBBUlRZIEZPUiBESVJFQ1QsIElORElSRUNULApTUEVDSUFMLCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIENPREUsIEVWRU4gSUYgVEhFIEFVVEhPUiBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRS4KClRIRSBBVVRIT1IgU1BFQ0lGSUNBTExZIERJU0NMQUlNUyBBTlkgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBClBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBDT0RFIFBST1ZJREVEIEhFUkVVTkRFUiBJUyBPTiBBTiAiQVMgSVMiIEJBU0lTLApBTkQgVEhFUkUgSVMgTk8gT0JMSUdBVElPTiBXSEFUU09FVkVSIFRPIFBST1ZJREUgTUFJTlRFTkFOQ0UsClNVUFBPUlQsIFVQREFURVMsIEVOSEFOQ0VNRU5UUywgT1IgTU9ESUZJQ0FUSU9OUy4KIiIiCgpfX2FsbF9fID0gWydUZXN0UmVzdWx0JywgJ1Rlc3RDYXNlJywgJ0lzb2xhdGVkQXN5bmNpb1Rlc3RDYXNlJywgJ1Rlc3RTdWl0ZScsCiAgICAgICAgICAgJ1RleHRUZXN0UnVubmVyJywgJ1Rlc3RMb2FkZXInLCAnRnVuY3Rpb25UZXN0Q2FzZScsICdtYWluJywKICAgICAgICAgICAnZGVmYXVsdFRlc3RMb2FkZXInLCAnU2tpcFRlc3QnLCAnc2tpcCcsICdza2lwSWYnLCAnc2tpcFVubGVzcycsCiAgICAgICAgICAgJ2V4cGVjdGVkRmFpbHVyZScsICdUZXh0VGVzdFJlc3VsdCcsICdpbnN0YWxsSGFuZGxlcicsCiAgICAgICAgICAgJ3JlZ2lzdGVyUmVzdWx0JywgJ3JlbW92ZVJlc3VsdCcsICdyZW1vdmVIYW5kbGVyJywKICAgICAgICAgICAnYWRkTW9kdWxlQ2xlYW51cCcsICdkb01vZHVsZUNsZWFudXBzJywgJ2VudGVyTW9kdWxlQ29udGV4dCddCgojIEV4cG9zZSBvYnNvbGV0ZSBmdW5jdGlvbnMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiMgYnBvLTU4NDY6IERlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMTEsIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4xMy4KX19hbGxfXy5leHRlbmQoWydnZXRUZXN0Q2FzZU5hbWVzJywgJ21ha2VTdWl0ZScsICdmaW5kVGVzdENhc2VzJ10pCgpfX3VuaXR0ZXN0ID0gVHJ1ZQoKZnJvbSAucmVzdWx0IGltcG9ydCBUZXN0UmVzdWx0CmZyb20gLmNhc2UgaW1wb3J0IChhZGRNb2R1bGVDbGVhbnVwLCBUZXN0Q2FzZSwgRnVuY3Rpb25UZXN0Q2FzZSwgU2tpcFRlc3QsIHNraXAsCiAgICAgICAgICAgICAgICAgICBza2lwSWYsIHNraXBVbmxlc3MsIGV4cGVjdGVkRmFpbHVyZSwgZG9Nb2R1bGVDbGVhbnVwcywKICAgICAgICAgICAgICAgICAgIGVudGVyTW9kdWxlQ29udGV4dCkKZnJvbSAuc3VpdGUgaW1wb3J0IEJhc2VUZXN0U3VpdGUsIFRlc3RTdWl0ZQpmcm9tIC5sb2FkZXIgaW1wb3J0IFRlc3RMb2FkZXIsIGRlZmF1bHRUZXN0TG9hZGVyCmZyb20gLm1haW4gaW1wb3J0IFRlc3RQcm9ncmFtLCBtYWluCmZyb20gLnJ1bm5lciBpbXBvcnQgVGV4dFRlc3RSdW5uZXIsIFRleHRUZXN0UmVzdWx0CmZyb20gLnNpZ25hbHMgaW1wb3J0IGluc3RhbGxIYW5kbGVyLCByZWdpc3RlclJlc3VsdCwgcmVtb3ZlUmVzdWx0LCByZW1vdmVIYW5kbGVyCiMgSXNvbGF0ZWRBc3luY2lvVGVzdENhc2Ugd2lsbCBiZSBpbXBvcnRlZCBsYXppbHkuCmZyb20gLmxvYWRlciBpbXBvcnQgbWFrZVN1aXRlLCBnZXRUZXN0Q2FzZU5hbWVzLCBmaW5kVGVzdENhc2VzCgojIGRlcHJlY2F0ZWQKX1RleHRUZXN0UmVzdWx0ID0gVGV4dFRlc3RSZXN1bHQKCgojIExhenkgaW1wb3J0IG9mIElzb2xhdGVkQXN5bmNpb1Rlc3RDYXNlIGZyb20gLmFzeW5jX2Nhc2UKIyBJdCBpbXBvcnRzIGFzeW5jaW8sIHdoaWNoIGlzIHJlbGF0aXZlbHkgaGVhdnksIGJ1dCBtb3N0IHRlc3RzCiMgZG8gbm90IG5lZWQgaXQuCgpkZWYgX19kaXJfXygpOgogICAgcmV0dXJuIGdsb2JhbHMoKS5rZXlzKCkgfCB7J0lzb2xhdGVkQXN5bmNpb1Rlc3RDYXNlJ30KCmRlZiBfX2dldGF0dHJfXyhuYW1lKToKICAgIGlmIG5hbWUgPT0gJ0lzb2xhdGVkQXN5bmNpb1Rlc3RDYXNlJzoKICAgICAgICBnbG9iYWwgSXNvbGF0ZWRBc3luY2lvVGVzdENhc2UKICAgICAgICBmcm9tIC5hc3luY19jYXNlIGltcG9ydCBJc29sYXRlZEFzeW5jaW9UZXN0Q2FzZQogICAgICAgIHJldHVybiBJc29sYXRlZEFzeW5jaW9UZXN0Q2FzZQogICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoZiJtb2R1bGUge19fbmFtZV9fIXJ9IGhhcyBubyBhdHRyaWJ1dGUge25hbWUhcn0iKQpQSwMEFAAAAAAAAyCjVvRiISXYAQAA2AEAABQAAAB1bml0dGVzdC9fX21haW5fXy5weSIiIk1haW4gZW50cnkgcG9pbnQiIiIKCmltcG9ydCBzeXMKaWYgc3lzLmFyZ3ZbMF0uZW5kc3dpdGgoIl9fbWFpbl9fLnB5Iik6CiAgICBpbXBvcnQgb3MucGF0aAogICAgIyBXZSBjaGFuZ2Ugc3lzLmFyZ3ZbMF0gdG8gbWFrZSBoZWxwIG1lc3NhZ2UgbW9yZSB1c2VmdWwKICAgICMgdXNlIGV4ZWN1dGFibGUgd2l0aG91dCBwYXRoLCB1bnF1b3RlZAogICAgIyAoaXQncyBqdXN0IGEgaGludCBhbnl3YXkpCiAgICAjIChpZiB5b3UgaGF2ZSBzcGFjZXMgaW4geW91ciBleGVjdXRhYmxlIHlvdSBnZXQgd2hhdCB5b3UgZGVzZXJ2ZSEpCiAgICBleGVjdXRhYmxlID0gb3MucGF0aC5iYXNlbmFtZShzeXMuZXhlY3V0YWJsZSkKICAgIHN5cy5hcmd2WzBdID0gZXhlY3V0YWJsZSArICIgLW0gdW5pdHRlc3QiCiAgICBkZWwgb3MKCl9fdW5pdHRlc3QgPSBUcnVlCgpmcm9tIC5tYWluIGltcG9ydCBtYWluCgptYWluKG1vZHVsZT1Ob25lKQpQSwMEFAAAAAAAAyCjVtnemXy6CgAAugoAABAAAAB1bml0dGVzdC9fbG9nLnB5aW1wb3J0IGxvZ2dpbmcKaW1wb3J0IGNvbGxlY3Rpb25zCgpmcm9tIC5jYXNlIGltcG9ydCBfQmFzZVRlc3RDYXNlQ29udGV4dAoKCl9Mb2dnaW5nV2F0Y2hlciA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoIl9Mb2dnaW5nV2F0Y2hlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJyZWNvcmRzIiwgIm91dHB1dCJdKQoKY2xhc3MgX0NhcHR1cmluZ0hhbmRsZXIobG9nZ2luZy5IYW5kbGVyKToKICAgICIiIgogICAgQSBsb2dnaW5nIGhhbmRsZXIgY2FwdHVyaW5nIGFsbCAocmF3IGFuZCBmb3JtYXR0ZWQpIGxvZ2dpbmcgb3V0cHV0LgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgIHNlbGYud2F0Y2hlciA9IF9Mb2dnaW5nV2F0Y2hlcihbXSwgW10pCgogICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgIHBhc3MKCiAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgIHNlbGYud2F0Y2hlci5yZWNvcmRzLmFwcGVuZChyZWNvcmQpCiAgICAgICAgbXNnID0gc2VsZi5mb3JtYXQocmVjb3JkKQogICAgICAgIHNlbGYud2F0Y2hlci5vdXRwdXQuYXBwZW5kKG1zZykKCgpjbGFzcyBfQXNzZXJ0TG9nc0NvbnRleHQoX0Jhc2VUZXN0Q2FzZUNvbnRleHQpOgogICAgIiIiQSBjb250ZXh0IG1hbmFnZXIgZm9yIGFzc2VydExvZ3MoKSBhbmQgYXNzZXJ0Tm9Mb2dzKCkgIiIiCgogICAgTE9HR0lOR19GT1JNQVQgPSAiJShsZXZlbG5hbWUpczolKG5hbWUpczolKG1lc3NhZ2UpcyIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9jYXNlLCBsb2dnZXJfbmFtZSwgbGV2ZWwsIG5vX2xvZ3MpOgogICAgICAgIF9CYXNlVGVzdENhc2VDb250ZXh0Ll9faW5pdF9fKHNlbGYsIHRlc3RfY2FzZSkKICAgICAgICBzZWxmLmxvZ2dlcl9uYW1lID0gbG9nZ2VyX25hbWUKICAgICAgICBpZiBsZXZlbDoKICAgICAgICAgICAgc2VsZi5sZXZlbCA9IGxvZ2dpbmcuX25hbWVUb0xldmVsLmdldChsZXZlbCwgbGV2ZWwpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5sZXZlbCA9IGxvZ2dpbmcuSU5GTwogICAgICAgIHNlbGYubXNnID0gTm9uZQogICAgICAgIHNlbGYubm9fbG9ncyA9IG5vX2xvZ3MKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5sb2dnZXJfbmFtZSwgbG9nZ2luZy5Mb2dnZXIpOgogICAgICAgICAgICBsb2dnZXIgPSBzZWxmLmxvZ2dlciA9IHNlbGYubG9nZ2VyX25hbWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBsb2dnZXIgPSBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKHNlbGYubG9nZ2VyX25hbWUpCiAgICAgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoc2VsZi5MT0dHSU5HX0ZPUk1BVCkKICAgICAgICBoYW5kbGVyID0gX0NhcHR1cmluZ0hhbmRsZXIoKQogICAgICAgIGhhbmRsZXIuc2V0TGV2ZWwoc2VsZi5sZXZlbCkKICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCiAgICAgICAgc2VsZi53YXRjaGVyID0gaGFuZGxlci53YXRjaGVyCiAgICAgICAgc2VsZi5vbGRfaGFuZGxlcnMgPSBsb2dnZXIuaGFuZGxlcnNbOl0KICAgICAgICBzZWxmLm9sZF9sZXZlbCA9IGxvZ2dlci5sZXZlbAogICAgICAgIHNlbGYub2xkX3Byb3BhZ2F0ZSA9IGxvZ2dlci5wcm9wYWdhdGUKICAgICAgICBsb2dnZXIuaGFuZGxlcnMgPSBbaGFuZGxlcl0KICAgICAgICBsb2dnZXIuc2V0TGV2ZWwoc2VsZi5sZXZlbCkKICAgICAgICBsb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKICAgICAgICBpZiBzZWxmLm5vX2xvZ3M6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHJldHVybiBoYW5kbGVyLndhdGNoZXIKCiAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIpOgogICAgICAgIHNlbGYubG9nZ2VyLmhhbmRsZXJzID0gc2VsZi5vbGRfaGFuZGxlcnMKICAgICAgICBzZWxmLmxvZ2dlci5wcm9wYWdhdGUgPSBzZWxmLm9sZF9wcm9wYWdhdGUKICAgICAgICBzZWxmLmxvZ2dlci5zZXRMZXZlbChzZWxmLm9sZF9sZXZlbCkKCiAgICAgICAgaWYgZXhjX3R5cGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgbGV0IHVuZXhwZWN0ZWQgZXhjZXB0aW9ucyBwYXNzIHRocm91Z2gKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIGlmIHNlbGYubm9fbG9nczoKICAgICAgICAgICAgIyBhc3NlcnROb0xvZ3MKICAgICAgICAgICAgaWYgbGVuKHNlbGYud2F0Y2hlci5yZWNvcmRzKSA+IDA6CiAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoCiAgICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgbG9ncyBmb3VuZDogeyFyfSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndhdGNoZXIub3V0cHV0CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQoKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGFzc2VydExvZ3MKICAgICAgICAgICAgaWYgbGVuKHNlbGYud2F0Y2hlci5yZWNvcmRzKSA9PSAwOgogICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKAogICAgICAgICAgICAgICAgICAgICJubyBsb2dzIG9mIGxldmVsIHt9IG9yIGhpZ2hlciB0cmlnZ2VyZWQgb24ge30iCiAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChsb2dnaW5nLmdldExldmVsTmFtZShzZWxmLmxldmVsKSwgc2VsZi5sb2dnZXIubmFtZSkpClBLAwQUAAAAAAADIKNWAFsuKlkVAABZFQAAFgAAAHVuaXR0ZXN0L2FzeW5jX2Nhc2UucHlpbXBvcnQgYXN5bmNpbwppbXBvcnQgY29udGV4dHZhcnMKaW1wb3J0IGluc3BlY3QKaW1wb3J0IHdhcm5pbmdzCgpmcm9tIC5jYXNlIGltcG9ydCBUZXN0Q2FzZQoKCmNsYXNzIElzb2xhdGVkQXN5bmNpb1Rlc3RDYXNlKFRlc3RDYXNlKToKICAgICMgTmFtZXMgaW50ZW50aW9uYWxseSBoYXZlIGEgbG9uZyBwcmVmaXgKICAgICMgdG8gcmVkdWNlIGEgY2hhbmNlIG9mIGNsYXNoaW5nIHdpdGggdXNlci1kZWZpbmVkIGF0dHJpYnV0ZXMKICAgICMgZnJvbSBpbmhlcml0ZWQgdGVzdCBjYXNlCiAgICAjCiAgICAjIFRoZSBjbGFzcyBkb2Vzbid0IGNhbGwgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5zZXRVcCgpKSBhbmQgZmFtaWx5CiAgICAjIGJ1dCB1c2VzIGEgZGlmZmVyZW50IGFwcHJvYWNoOgogICAgIyAxLiBjcmVhdGUgYSBsb25nLXJ1bm5pbmcgdGFzayB0aGF0IHJlYWRzIHNlbGYuc2V0VXAoKQogICAgIyAgICBhd2FpdGFibGUgZnJvbSBxdWV1ZSBhbG9uZyB3aXRoIGEgZnV0dXJlCiAgICAjIDIuIGF3YWl0IHRoZSBhd2FpdGFibGUgb2JqZWN0IHBhc3NpbmcgaW4gYW5kIHNldCB0aGUgcmVzdWx0CiAgICAjICAgIGludG8gdGhlIGZ1dHVyZSBvYmplY3QKICAgICMgMy4gT3V0ZXIgY29kZSBwdXRzIHRoZSBhd2FpdGFibGUgYW5kIHRoZSBmdXR1cmUgb2JqZWN0IGludG8gYSBxdWV1ZQogICAgIyAgICB3aXRoIHdhaXRpbmcgZm9yIHRoZSBmdXR1cmUKICAgICMgVGhlIHRyaWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGV2ZXJ5IHJ1bl91bnRpbF9jb21wbGV0ZSgpIGNhbGwKICAgICMgY3JlYXRlcyBhIG5ldyB0YXNrIHdpdGggZW1iZWRkZWQgQ29udGV4dFZhciBjb250ZXh0LgogICAgIyBUbyBzaGFyZSBjb250ZXh0dmFycyBiZXR3ZWVuIHNldFVwKCksIHRlc3QgYW5kIHRlYXJEb3duKCkgd2UgbmVlZCB0byBleGVjdXRlCiAgICAjIHRoZW0gaW5zaWRlIHRoZSBzYW1lIHRhc2suCgogICAgIyBOb3RlOiB0aGUgdGVzdCBjYXNlIG1vZGlmaWVzIGV2ZW50IGxvb3AgcG9saWN5IGlmIHRoZSBwb2xpY3kgd2FzIG5vdCBpbnN0YW50aWF0ZWQKICAgICMgeWV0LgogICAgIyBhc3luY2lvLmdldF9ldmVudF9sb29wX3BvbGljeSgpIGNyZWF0ZXMgYSBkZWZhdWx0IHBvbGljeSBvbiBkZW1hbmQgYnV0IG5ldmVyCiAgICAjIHJldHVybnMgTm9uZQogICAgIyBJIGJlbGlldmUgdGhpcyBpcyBub3QgYW4gaXNzdWUgaW4gdXNlciBsZXZlbCB0ZXN0cyBidXQgcHl0aG9uIGl0c2VsZiBmb3IgdGVzdGluZwogICAgIyBzaG91bGQgcmVzZXQgYSBwb2xpY3kgaW4gZXZlcnkgdGVzdCBtb2R1bGUKICAgICMgYnkgY2FsbGluZyBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShOb25lKSBpbiB0ZWFyRG93bk1vZHVsZSgpCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1ldGhvZE5hbWUpCiAgICAgICAgc2VsZi5fYXN5bmNpb1J1bm5lciA9IE5vbmUKICAgICAgICBzZWxmLl9hc3luY2lvVGVzdENvbnRleHQgPSBjb250ZXh0dmFycy5jb3B5X2NvbnRleHQoKQoKICAgIGFzeW5jIGRlZiBhc3luY1NldFVwKHNlbGYpOgogICAgICAgIHBhc3MKCiAgICBhc3luYyBkZWYgYXN5bmNUZWFyRG93bihzZWxmKToKICAgICAgICBwYXNzCgogICAgZGVmIGFkZEFzeW5jQ2xlYW51cChzZWxmLCBmdW5jLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICMgQSB0cml2aWFsIHRyYW1wb2xpbmUgdG8gYWRkQ2xlYW51cCgpCiAgICAgICAgIyB0aGUgZnVuY3Rpb24gZXhpc3RzIGJlY2F1c2UgaXQgaGFzIGEgZGlmZmVyZW50IHNlbWFudGljcwogICAgICAgICMgYW5kIHNpZ25hdHVyZToKICAgICAgICAjIGFkZENsZWFudXAoKSBhY2NlcHRzIHJlZ3VsYXIgZnVuY3Rpb25zCiAgICAgICAgIyBidXQgYWRkQXN5bmNDbGVhbnVwKCkgYWNjZXB0cyBjb3JvdXRpbmVzCiAgICAgICAgIwogICAgICAgICMgV2UgaW50ZW50aW9uYWxseSBkb24ndCBhZGQgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKCkgY2hlY2sKICAgICAgICAjIGZvciBmdW5jIGFyZ3VtZW50IGJlY2F1c2UgdGhlcmUgaXMgbm8gd2F5CiAgICAgICAgIyB0byBjaGVjayBmb3IgYXN5bmMgZnVuY3Rpb24gcmVsaWFibHk6CiAgICAgICAgIyAxLiBJdCBjYW4gYmUgImFzeW5jIGRlZiBmdW5jKCkiIGl0c2VsZgogICAgICAgICMgMi4gQ2xhc3MgY2FuIGltcGxlbWVudCAiYXN5bmMgZGVmIF9fY2FsbF9fKCkiIG1ldGhvZAogICAgICAgICMgMy4gUmVndWxhciAiZGVmIGZ1bmMoKSIgdGhhdCByZXR1cm5zIGF3YWl0YWJsZSBvYmplY3QKICAgICAgICBzZWxmLmFkZENsZWFudXAoKihmdW5jLCAqYXJncyksICoqa3dhcmdzKQoKICAgIGFzeW5jIGRlZiBlbnRlckFzeW5jQ29udGV4dChzZWxmLCBjbSk6CiAgICAgICAgIiIiRW50ZXJzIHRoZSBzdXBwbGllZCBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyLgoKICAgICAgICBJZiBzdWNjZXNzZnVsLCBhbHNvIGFkZHMgaXRzIF9fYWV4aXRfXyBtZXRob2QgYXMgYSBjbGVhbnVwCiAgICAgICAgZnVuY3Rpb24gYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgX19hZW50ZXJfXyBtZXRob2QuCiAgICAgICAgIiIiCiAgICAgICAgIyBXZSBsb29rIHVwIHRoZSBzcGVjaWFsIG1ldGhvZHMgb24gdGhlIHR5cGUgdG8gbWF0Y2ggdGhlIHdpdGgKICAgICAgICAjIHN0YXRlbWVudC4KICAgICAgICBjbHMgPSB0eXBlKGNtKQogICAgICAgIHRyeToKICAgICAgICAgICAgZW50ZXIgPSBjbHMuX19hZW50ZXJfXwogICAgICAgICAgICBleGl0ID0gY2xzLl9fYWV4aXRfXwogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiJ3tjbHMuX19tb2R1bGVfX30ue2Nscy5fX3F1YWxuYW1lX199JyBvYmplY3QgZG9lcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIm5vdCBzdXBwb3J0IHRoZSBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIgogICAgICAgICAgICAgICAgICAgICAgICAgICApIGZyb20gTm9uZQogICAgICAgIHJlc3VsdCA9IGF3YWl0IGVudGVyKGNtKQogICAgICAgIHNlbGYuYWRkQXN5bmNDbGVhbnVwKGV4aXQsIGNtLCBOb25lLCBOb25lLCBOb25lKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX2NhbGxTZXRVcChzZWxmKToKICAgICAgICAjIEZvcmNlIGxvb3AgdG8gYmUgaW5pdGlhbGl6ZWQgYW5kIHNldCBhcyB0aGUgY3VycmVudCBsb29wCiAgICAgICAgIyBzbyB0aGF0IHNldFVwIGZ1bmN0aW9ucyBjYW4gdXNlIGdldF9ldmVudF9sb29wKCkgYW5kIGdldCB0aGUKICAgICAgICAjIGNvcnJlY3QgbG9vcCBpbnN0YW5jZS4KICAgICAgICBzZWxmLl9hc3luY2lvUnVubmVyLmdldF9sb29wKCkKICAgICAgICBzZWxmLl9hc3luY2lvVGVzdENvbnRleHQucnVuKHNlbGYuc2V0VXApCiAgICAgICAgc2VsZi5fY2FsbEFzeW5jKHNlbGYuYXN5bmNTZXRVcCkKCiAgICBkZWYgX2NhbGxUZXN0TWV0aG9kKHNlbGYsIG1ldGhvZCk6CiAgICAgICAgaWYgc2VsZi5fY2FsbE1heWJlQXN5bmMobWV0aG9kKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgd2FybmluZ3Mud2FybihmJ0l0IGlzIGRlcHJlY2F0ZWQgdG8gcmV0dXJuIGEgdmFsdWUgdGhhdCBpcyBub3QgTm9uZSBmcm9tIGEgJwogICAgICAgICAgICAgICAgICAgICAgICAgIGYndGVzdCBjYXNlICh7bWV0aG9kfSknLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NCkKCiAgICBkZWYgX2NhbGxUZWFyRG93bihzZWxmKToKICAgICAgICBzZWxmLl9jYWxsQXN5bmMoc2VsZi5hc3luY1RlYXJEb3duKQogICAgICAgIHNlbGYuX2FzeW5jaW9UZXN0Q29udGV4dC5ydW4oc2VsZi50ZWFyRG93bikKCiAgICBkZWYgX2NhbGxDbGVhbnVwKHNlbGYsIGZ1bmN0aW9uLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuX2NhbGxNYXliZUFzeW5jKGZ1bmN0aW9uLCAqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIF9jYWxsQXN5bmMoc2VsZiwgZnVuYywgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBhc3NlcnQgc2VsZi5fYXN5bmNpb1J1bm5lciBpcyBub3QgTm9uZSwgJ2FzeW5jaW8gcnVubmVyIGlzIG5vdCBpbml0aWFsaXplZCcKICAgICAgICBhc3NlcnQgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpLCBmJ3tmdW5jIXJ9IGlzIG5vdCBhbiBhc3luYyBmdW5jdGlvbicKICAgICAgICByZXR1cm4gc2VsZi5fYXN5bmNpb1J1bm5lci5ydW4oCiAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKSwKICAgICAgICAgICAgY29udGV4dD1zZWxmLl9hc3luY2lvVGVzdENvbnRleHQKICAgICAgICApCgogICAgZGVmIF9jYWxsTWF5YmVBc3luYyhzZWxmLCBmdW5jLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIGFzc2VydCBzZWxmLl9hc3luY2lvUnVubmVyIGlzIG5vdCBOb25lLCAnYXN5bmNpbyBydW5uZXIgaXMgbm90IGluaXRpYWxpemVkJwogICAgICAgIGlmIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbihmdW5jKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FzeW5jaW9SdW5uZXIucnVuKAogICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpLAogICAgICAgICAgICAgICAgY29udGV4dD1zZWxmLl9hc3luY2lvVGVzdENvbnRleHQsCiAgICAgICAgICAgICkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fYXN5bmNpb1Rlc3RDb250ZXh0LnJ1bihmdW5jLCAqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIF9zZXR1cEFzeW5jaW9SdW5uZXIoc2VsZik6CiAgICAgICAgYXNzZXJ0IHNlbGYuX2FzeW5jaW9SdW5uZXIgaXMgTm9uZSwgJ2FzeW5jaW8gcnVubmVyIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQnCiAgICAgICAgcnVubmVyID0gYXN5bmNpby5SdW5uZXIoZGVidWc9VHJ1ZSkKICAgICAgICBzZWxmLl9hc3luY2lvUnVubmVyID0gcnVubmVyCgogICAgZGVmIF90ZWFyRG93bkFzeW5jaW9SdW5uZXIoc2VsZik6CiAgICAgICAgcnVubmVyID0gc2VsZi5fYXN5bmNpb1J1bm5lcgogICAgICAgIHJ1bm5lci5jbG9zZSgpCgogICAgZGVmIHJ1bihzZWxmLCByZXN1bHQ9Tm9uZSk6CiAgICAgICAgc2VsZi5fc2V0dXBBc3luY2lvUnVubmVyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnJ1bihyZXN1bHQpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fdGVhckRvd25Bc3luY2lvUnVubmVyKCkKCiAgICBkZWYgZGVidWcoc2VsZik6CiAgICAgICAgc2VsZi5fc2V0dXBBc3luY2lvUnVubmVyKCkKICAgICAgICBzdXBlcigpLmRlYnVnKCkKICAgICAgICBzZWxmLl90ZWFyRG93bkFzeW5jaW9SdW5uZXIoKQoKICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2FzeW5jaW9SdW5uZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3RlYXJEb3duQXN5bmNpb1J1bm5lcigpClBLAwQUAAAAAAADIKNW0V9/l4fkAACH5AAAEAAAAHVuaXR0ZXN0L2Nhc2UucHkiIiJUZXN0IGNhc2UgaW1wbGVtZW50YXRpb24iIiIKCmltcG9ydCBzeXMKaW1wb3J0IGZ1bmN0b29scwppbXBvcnQgZGlmZmxpYgppbXBvcnQgcHByaW50CmltcG9ydCByZQppbXBvcnQgd2FybmluZ3MKaW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCBjb250ZXh0bGliCmltcG9ydCB0cmFjZWJhY2sKaW1wb3J0IHR5cGVzCgpmcm9tIC4gaW1wb3J0IHJlc3VsdApmcm9tIC51dGlsIGltcG9ydCAoc3RyY2xhc3MsIHNhZmVfcmVwciwgX2NvdW50X2RpZmZfYWxsX3B1cnBvc2UsCiAgICAgICAgICAgICAgICAgICBfY291bnRfZGlmZl9oYXNoYWJsZSwgX2NvbW1vbl9zaG9ydGVuX3JlcHIpCgpfX3VuaXR0ZXN0ID0gVHJ1ZQoKX3N1YnRlc3RfbXNnX3NlbnRpbmVsID0gb2JqZWN0KCkKCkRJRkZfT01JVFRFRCA9ICgnXG5EaWZmIGlzICVzIGNoYXJhY3RlcnMgbG9uZy4gJwogICAgICAgICAgICAgICAgICdTZXQgc2VsZi5tYXhEaWZmIHRvIE5vbmUgdG8gc2VlIGl0LicpCgpjbGFzcyBTa2lwVGVzdChFeGNlcHRpb24pOgogICAgIiIiCiAgICBSYWlzZSB0aGlzIGV4Y2VwdGlvbiBpbiBhIHRlc3QgdG8gc2tpcCBpdC4KCiAgICBVc3VhbGx5IHlvdSBjYW4gdXNlIFRlc3RDYXNlLnNraXBUZXN0KCkgb3Igb25lIG9mIHRoZSBza2lwcGluZyBkZWNvcmF0b3JzCiAgICBpbnN0ZWFkIG9mIHJhaXNpbmcgdGhpcyBkaXJlY3RseS4KICAgICIiIgoKY2xhc3MgX1Nob3VsZFN0b3AoRXhjZXB0aW9uKToKICAgICIiIgogICAgVGhlIHRlc3Qgc2hvdWxkIHN0b3AuCiAgICAiIiIKCmNsYXNzIF9VbmV4cGVjdGVkU3VjY2VzcyhFeGNlcHRpb24pOgogICAgIiIiCiAgICBUaGUgdGVzdCB3YXMgc3VwcG9zZWQgdG8gZmFpbCwgYnV0IGl0IGRpZG4ndCEKICAgICIiIgoKCmNsYXNzIF9PdXRjb21lKG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgcmVzdWx0PU5vbmUpOgogICAgICAgIHNlbGYuZXhwZWN0aW5nX2ZhaWx1cmUgPSBGYWxzZQogICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0CiAgICAgICAgc2VsZi5yZXN1bHRfc3VwcG9ydHNfc3VidGVzdHMgPSBoYXNhdHRyKHJlc3VsdCwgImFkZFN1YlRlc3QiKQogICAgICAgIHNlbGYuc3VjY2VzcyA9IFRydWUKICAgICAgICBzZWxmLmV4cGVjdGVkRmFpbHVyZSA9IE5vbmUKCiAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogICAgZGVmIHRlc3RQYXJ0RXhlY3V0b3Ioc2VsZiwgdGVzdF9jYXNlLCBzdWJUZXN0PUZhbHNlKToKICAgICAgICBvbGRfc3VjY2VzcyA9IHNlbGYuc3VjY2VzcwogICAgICAgIHNlbGYuc3VjY2VzcyA9IFRydWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHlpZWxkCiAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBTa2lwVGVzdCBhcyBlOgogICAgICAgICAgICBzZWxmLnN1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICBfYWRkU2tpcChzZWxmLnJlc3VsdCwgdGVzdF9jYXNlLCBzdHIoZSkpCiAgICAgICAgZXhjZXB0IF9TaG91bGRTdG9wOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgICAgIGlmIHNlbGYuZXhwZWN0aW5nX2ZhaWx1cmU6CiAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkRmFpbHVyZSA9IGV4Y19pbmZvCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLnN1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgICAgaWYgc3ViVGVzdDoKICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdC5hZGRTdWJUZXN0KHRlc3RfY2FzZS50ZXN0X2Nhc2UsIHRlc3RfY2FzZSwgZXhjX2luZm8pCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIF9hZGRFcnJvcihzZWxmLnJlc3VsdCwgdGVzdF9jYXNlLCBleGNfaW5mbykKICAgICAgICAgICAgIyBleHBsaWNpdGx5IGJyZWFrIGEgcmVmZXJlbmNlIGN5Y2xlOgogICAgICAgICAgICAjIGV4Y19pbmZvIC0+IGZyYW1lIC0+IGV4Y19pbmZvCiAgICAgICAgICAgIGV4Y19pbmZvID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHN1YlRlc3QgYW5kIHNlbGYuc3VjY2VzczoKICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0LmFkZFN1YlRlc3QodGVzdF9jYXNlLnRlc3RfY2FzZSwgdGVzdF9jYXNlLCBOb25lKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuc3VjY2VzcyA9IHNlbGYuc3VjY2VzcyBhbmQgb2xkX3N1Y2Nlc3MKCgpkZWYgX2FkZFNraXAocmVzdWx0LCB0ZXN0X2Nhc2UsIHJlYXNvbik6CiAgICBhZGRTa2lwID0gZ2V0YXR0cihyZXN1bHQsICdhZGRTa2lwJywgTm9uZSkKICAgIGlmIGFkZFNraXAgaXMgbm90IE5vbmU6CiAgICAgICAgYWRkU2tpcCh0ZXN0X2Nhc2UsIHJlYXNvbikKICAgIGVsc2U6CiAgICAgICAgd2FybmluZ3Mud2FybigiVGVzdFJlc3VsdCBoYXMgbm8gYWRkU2tpcCBtZXRob2QsIHNraXBzIG5vdCByZXBvcnRlZCIsCiAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZywgMikKICAgICAgICByZXN1bHQuYWRkU3VjY2Vzcyh0ZXN0X2Nhc2UpCgpkZWYgX2FkZEVycm9yKHJlc3VsdCwgdGVzdCwgZXhjX2luZm8pOgogICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lIGFuZCBleGNfaW5mbyBpcyBub3QgTm9uZToKICAgICAgICBpZiBpc3N1YmNsYXNzKGV4Y19pbmZvWzBdLCB0ZXN0LmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICByZXN1bHQuYWRkRmFpbHVyZSh0ZXN0LCBleGNfaW5mbykKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXN1bHQuYWRkRXJyb3IodGVzdCwgZXhjX2luZm8pCgpkZWYgX2lkKG9iaik6CiAgICByZXR1cm4gb2JqCgoKZGVmIF9lbnRlcl9jb250ZXh0KGNtLCBhZGRjbGVhbnVwKToKICAgICMgV2UgbG9vayB1cCB0aGUgc3BlY2lhbCBtZXRob2RzIG9uIHRoZSB0eXBlIHRvIG1hdGNoIHRoZSB3aXRoCiAgICAjIHN0YXRlbWVudC4KICAgIGNscyA9IHR5cGUoY20pCiAgICB0cnk6CiAgICAgICAgZW50ZXIgPSBjbHMuX19lbnRlcl9fCiAgICAgICAgZXhpdCA9IGNscy5fX2V4aXRfXwogICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIid7Y2xzLl9fbW9kdWxlX199LntjbHMuX19xdWFsbmFtZV9ffScgb2JqZWN0IGRvZXMgIgogICAgICAgICAgICAgICAgICAgICAgICBmIm5vdCBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wiKSBmcm9tIE5vbmUKICAgIHJlc3VsdCA9IGVudGVyKGNtKQogICAgYWRkY2xlYW51cChleGl0LCBjbSwgTm9uZSwgTm9uZSwgTm9uZSkKICAgIHJldHVybiByZXN1bHQKCgpfbW9kdWxlX2NsZWFudXBzID0gW10KZGVmIGFkZE1vZHVsZUNsZWFudXAoZnVuY3Rpb24sIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAiIiJTYW1lIGFzIGFkZENsZWFudXAsIGV4Y2VwdCB0aGUgY2xlYW51cCBpdGVtcyBhcmUgY2FsbGVkIGV2ZW4gaWYKICAgIHNldFVwTW9kdWxlIGZhaWxzICh1bmxpa2UgdGVhckRvd25Nb2R1bGUpLiIiIgogICAgX21vZHVsZV9jbGVhbnVwcy5hcHBlbmQoKGZ1bmN0aW9uLCBhcmdzLCBrd2FyZ3MpKQoKZGVmIGVudGVyTW9kdWxlQ29udGV4dChjbSk6CiAgICAiIiJTYW1lIGFzIGVudGVyQ29udGV4dCwgYnV0IG1vZHVsZS13aWRlLiIiIgogICAgcmV0dXJuIF9lbnRlcl9jb250ZXh0KGNtLCBhZGRNb2R1bGVDbGVhbnVwKQoKCmRlZiBkb01vZHVsZUNsZWFudXBzKCk6CiAgICAiIiJFeGVjdXRlIGFsbCBtb2R1bGUgY2xlYW51cCBmdW5jdGlvbnMuIE5vcm1hbGx5IGNhbGxlZCBmb3IgeW91IGFmdGVyCiAgICB0ZWFyRG93bk1vZHVsZS4iIiIKICAgIGV4Y2VwdGlvbnMgPSBbXQogICAgd2hpbGUgX21vZHVsZV9jbGVhbnVwczoKICAgICAgICBmdW5jdGlvbiwgYXJncywga3dhcmdzID0gX21vZHVsZV9jbGVhbnVwcy5wb3AoKQogICAgICAgIHRyeToKICAgICAgICAgICAgZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBleGNlcHRpb25zLmFwcGVuZChleGMpCiAgICBpZiBleGNlcHRpb25zOgogICAgICAgICMgU3dhbGxvd3MgYWxsIGJ1dCBmaXJzdCBleGNlcHRpb24uIElmIGEgbXVsdGktZXhjZXB0aW9uIGhhbmRsZXIKICAgICAgICAjIGdldHMgd3JpdHRlbiB3ZSBzaG91bGQgdXNlIHRoYXQgaGVyZSBpbnN0ZWFkLgogICAgICAgIHJhaXNlIGV4Y2VwdGlvbnNbMF0KCgpkZWYgc2tpcChyZWFzb24pOgogICAgIiIiCiAgICBVbmNvbmRpdGlvbmFsbHkgc2tpcCBhIHRlc3QuCiAgICAiIiIKICAgIGRlZiBkZWNvcmF0b3IodGVzdF9pdGVtKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0ZXN0X2l0ZW0sIHR5cGUpOgogICAgICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKHRlc3RfaXRlbSkKICAgICAgICAgICAgZGVmIHNraXBfd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgcmFpc2UgU2tpcFRlc3QocmVhc29uKQogICAgICAgICAgICB0ZXN0X2l0ZW0gPSBza2lwX3dyYXBwZXIKCiAgICAgICAgdGVzdF9pdGVtLl9fdW5pdHRlc3Rfc2tpcF9fID0gVHJ1ZQogICAgICAgIHRlc3RfaXRlbS5fX3VuaXR0ZXN0X3NraXBfd2h5X18gPSByZWFzb24KICAgICAgICByZXR1cm4gdGVzdF9pdGVtCiAgICBpZiBpc2luc3RhbmNlKHJlYXNvbiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKICAgICAgICB0ZXN0X2l0ZW0gPSByZWFzb24KICAgICAgICByZWFzb24gPSAnJwogICAgICAgIHJldHVybiBkZWNvcmF0b3IodGVzdF9pdGVtKQogICAgcmV0dXJuIGRlY29yYXRvcgoKZGVmIHNraXBJZihjb25kaXRpb24sIHJlYXNvbik6CiAgICAiIiIKICAgIFNraXAgYSB0ZXN0IGlmIHRoZSBjb25kaXRpb24gaXMgdHJ1ZS4KICAgICIiIgogICAgaWYgY29uZGl0aW9uOgogICAgICAgIHJldHVybiBza2lwKHJlYXNvbikKICAgIHJldHVybiBfaWQKCmRlZiBza2lwVW5sZXNzKGNvbmRpdGlvbiwgcmVhc29uKToKICAgICIiIgogICAgU2tpcCBhIHRlc3QgdW5sZXNzIHRoZSBjb25kaXRpb24gaXMgdHJ1ZS4KICAgICIiIgogICAgaWYgbm90IGNvbmRpdGlvbjoKICAgICAgICByZXR1cm4gc2tpcChyZWFzb24pCiAgICByZXR1cm4gX2lkCgpkZWYgZXhwZWN0ZWRGYWlsdXJlKHRlc3RfaXRlbSk6CiAgICB0ZXN0X2l0ZW0uX191bml0dGVzdF9leHBlY3RpbmdfZmFpbHVyZV9fID0gVHJ1ZQogICAgcmV0dXJuIHRlc3RfaXRlbQoKZGVmIF9pc19zdWJ0eXBlKGV4cGVjdGVkLCBiYXNldHlwZSk6CiAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCB0dXBsZSk6CiAgICAgICAgcmV0dXJuIGFsbChfaXNfc3VidHlwZShlLCBiYXNldHlwZSkgZm9yIGUgaW4gZXhwZWN0ZWQpCiAgICByZXR1cm4gaXNpbnN0YW5jZShleHBlY3RlZCwgdHlwZSkgYW5kIGlzc3ViY2xhc3MoZXhwZWN0ZWQsIGJhc2V0eXBlKQoKY2xhc3MgX0Jhc2VUZXN0Q2FzZUNvbnRleHQ6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfY2FzZSk6CiAgICAgICAgc2VsZi50ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2UKCiAgICBkZWYgX3JhaXNlRmFpbHVyZShzZWxmLCBzdGFuZGFyZE1zZyk6CiAgICAgICAgbXNnID0gc2VsZi50ZXN0X2Nhc2UuX2Zvcm1hdE1lc3NhZ2Uoc2VsZi5tc2csIHN0YW5kYXJkTXNnKQogICAgICAgIHJhaXNlIHNlbGYudGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24obXNnKQoKY2xhc3MgX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KF9CYXNlVGVzdENhc2VDb250ZXh0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0ZWQsIHRlc3RfY2FzZSwgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CiAgICAgICAgX0Jhc2VUZXN0Q2FzZUNvbnRleHQuX19pbml0X18oc2VsZiwgdGVzdF9jYXNlKQogICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZAogICAgICAgIHNlbGYudGVzdF9jYXNlID0gdGVzdF9jYXNlCiAgICAgICAgaWYgZXhwZWN0ZWRfcmVnZXggaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZShleHBlY3RlZF9yZWdleCkKICAgICAgICBzZWxmLmV4cGVjdGVkX3JlZ2V4ID0gZXhwZWN0ZWRfcmVnZXgKICAgICAgICBzZWxmLm9ial9uYW1lID0gTm9uZQogICAgICAgIHNlbGYubXNnID0gTm9uZQoKICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgYXJncywga3dhcmdzKToKICAgICAgICAiIiIKICAgICAgICBJZiBhcmdzIGlzIGVtcHR5LCBhc3NlcnRSYWlzZXMvV2FybnMgaXMgYmVpbmcgdXNlZCBhcyBhCiAgICAgICAgY29udGV4dCBtYW5hZ2VyLCBzbyBjaGVjayBmb3IgYSAnbXNnJyBrd2FyZyBhbmQgcmV0dXJuIHNlbGYuCiAgICAgICAgSWYgYXJncyBpcyBub3QgZW1wdHksIGNhbGwgYSBjYWxsYWJsZSBwYXNzaW5nIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBub3QgX2lzX3N1YnR5cGUoc2VsZi5leHBlY3RlZCwgc2VsZi5fYmFzZV90eXBlKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSBhcmcgMSBtdXN0IGJlICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHNlbGYuX2Jhc2VfdHlwZV9zdHIpKQogICAgICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgICAgIHNlbGYubXNnID0ga3dhcmdzLnBvcCgnbXNnJywgTm9uZSkKICAgICAgICAgICAgICAgIGlmIGt3YXJnczoKICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVyIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBmdW5jdGlvbicgJSAobmV4dChpdGVyKGt3YXJncykpLCkpCiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgoKICAgICAgICAgICAgY2FsbGFibGVfb2JqLCAqYXJncyA9IGFyZ3MKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IGNhbGxhYmxlX29iai5fX25hbWVfXwogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICBzZWxmLm9ial9uYW1lID0gc3RyKGNhbGxhYmxlX29iaikKICAgICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIGJwby0yMzg5MDogbWFudWFsbHkgYnJlYWsgYSByZWZlcmVuY2UgY3ljbGUKICAgICAgICAgICAgc2VsZiA9IE5vbmUKCgpjbGFzcyBfQXNzZXJ0UmFpc2VzQ29udGV4dChfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQpOgogICAgIiIiQSBjb250ZXh0IG1hbmFnZXIgdXNlZCB0byBpbXBsZW1lbnQgVGVzdENhc2UuYXNzZXJ0UmFpc2VzKiBtZXRob2RzLiIiIgoKICAgIF9iYXNlX3R5cGUgPSBCYXNlRXhjZXB0aW9uCiAgICBfYmFzZV90eXBlX3N0ciA9ICdhbiBleGNlcHRpb24gdHlwZSBvciB0dXBsZSBvZiBleGNlcHRpb24gdHlwZXMnCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0Yik6CiAgICAgICAgaWYgZXhjX3R5cGUgaXMgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZXhjX25hbWUgPSBzZWxmLmV4cGVjdGVkLl9fbmFtZV9fCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIGV4Y19uYW1lID0gc3RyKHNlbGYuZXhwZWN0ZWQpCiAgICAgICAgICAgIGlmIHNlbGYub2JqX25hbWU6CiAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCByYWlzZWQgYnkge30iLmZvcm1hdChleGNfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUpKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCJ7fSBub3QgcmFpc2VkIi5mb3JtYXQoZXhjX25hbWUpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyYWNlYmFjay5jbGVhcl9mcmFtZXModGIpCiAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MoZXhjX3R5cGUsIHNlbGYuZXhwZWN0ZWQpOgogICAgICAgICAgICAjIGxldCB1bmV4cGVjdGVkIGV4Y2VwdGlvbnMgcGFzcyB0aHJvdWdoCiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICMgc3RvcmUgZXhjZXB0aW9uLCB3aXRob3V0IHRyYWNlYmFjaywgZm9yIGxhdGVyIHJldHJpZXZhbAogICAgICAgIHNlbGYuZXhjZXB0aW9uID0gZXhjX3ZhbHVlLndpdGhfdHJhY2ViYWNrKE5vbmUpCiAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9yZWdleCBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQoKICAgICAgICBleHBlY3RlZF9yZWdleCA9IHNlbGYuZXhwZWN0ZWRfcmVnZXgKICAgICAgICBpZiBub3QgZXhwZWN0ZWRfcmVnZXguc2VhcmNoKHN0cihleGNfdmFsdWUpKToKICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCcie30iIGRvZXMgbm90IG1hdGNoICJ7fSInLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgc3RyKGV4Y192YWx1ZSkpKQogICAgICAgIHJldHVybiBUcnVlCgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZCh0eXBlcy5HZW5lcmljQWxpYXMpCgoKY2xhc3MgX0Fzc2VydFdhcm5zQ29udGV4dChfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQpOgogICAgIiIiQSBjb250ZXh0IG1hbmFnZXIgdXNlZCB0byBpbXBsZW1lbnQgVGVzdENhc2UuYXNzZXJ0V2FybnMqIG1ldGhvZHMuIiIiCgogICAgX2Jhc2VfdHlwZSA9IFdhcm5pbmcKICAgIF9iYXNlX3R5cGVfc3RyID0gJ2Egd2FybmluZyB0eXBlIG9yIHR1cGxlIG9mIHdhcm5pbmcgdHlwZXMnCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAjIFRoZSBfX3dhcm5pbmdyZWdpc3RyeV9fJ3MgbmVlZCB0byBiZSBpbiBhIHByaXN0aW5lIHN0YXRlIGZvciB0ZXN0cwogICAgICAgICMgdG8gd29yayBwcm9wZXJseS4KICAgICAgICBmb3IgdiBpbiBsaXN0KHN5cy5tb2R1bGVzLnZhbHVlcygpKToKICAgICAgICAgICAgaWYgZ2V0YXR0cih2LCAnX193YXJuaW5ncmVnaXN0cnlfXycsIE5vbmUpOgogICAgICAgICAgICAgICAgdi5fX3dhcm5pbmdyZWdpc3RyeV9fID0ge30KICAgICAgICBzZWxmLndhcm5pbmdzX21hbmFnZXIgPSB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkKICAgICAgICBzZWxmLndhcm5pbmdzID0gc2VsZi53YXJuaW5nc19tYW5hZ2VyLl9fZW50ZXJfXygpCiAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBzZWxmLmV4cGVjdGVkKQogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRiKToKICAgICAgICBzZWxmLndhcm5pbmdzX21hbmFnZXIuX19leGl0X18oZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIpCiAgICAgICAgaWYgZXhjX3R5cGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgbGV0IHVuZXhwZWN0ZWQgZXhjZXB0aW9ucyBwYXNzIHRocm91Z2gKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBleGNfbmFtZSA9IHNlbGYuZXhwZWN0ZWQuX19uYW1lX18KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIGV4Y19uYW1lID0gc3RyKHNlbGYuZXhwZWN0ZWQpCiAgICAgICAgZmlyc3RfbWF0Y2hpbmcgPSBOb25lCiAgICAgICAgZm9yIG0gaW4gc2VsZi53YXJuaW5nczoKICAgICAgICAgICAgdyA9IG0ubWVzc2FnZQogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh3LCBzZWxmLmV4cGVjdGVkKToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGlmIGZpcnN0X21hdGNoaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBmaXJzdF9tYXRjaGluZyA9IHcKICAgICAgICAgICAgaWYgKHNlbGYuZXhwZWN0ZWRfcmVnZXggaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICBub3Qgc2VsZi5leHBlY3RlZF9yZWdleC5zZWFyY2goc3RyKHcpKSk6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAjIHN0b3JlIHdhcm5pbmcgZm9yIGxhdGVyIHJldHJpZXZhbAogICAgICAgICAgICBzZWxmLndhcm5pbmcgPSB3CiAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBtLmZpbGVuYW1lCiAgICAgICAgICAgIHNlbGYubGluZW5vID0gbS5saW5lbm8KICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIyBOb3cgd2Ugc2ltcGx5IHRyeSB0byBjaG9vc2UgYSBoZWxwZnVsIGZhaWx1cmUgbWVzc2FnZQogICAgICAgIGlmIGZpcnN0X21hdGNoaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoJyJ7fSIgZG9lcyBub3QgbWF0Y2ggInt9IicuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihmaXJzdF9tYXRjaGluZykpKQogICAgICAgIGlmIHNlbGYub2JqX25hbWU6CiAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHRyaWdnZXJlZCBieSB7fSIuZm9ybWF0KGV4Y19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9ial9uYW1lKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCB0cmlnZ2VyZWQiLmZvcm1hdChleGNfbmFtZSkpCgoKY2xhc3MgX09yZGVyZWRDaGFpbk1hcChjb2xsZWN0aW9ucy5DaGFpbk1hcCk6CiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgc2VlbiA9IHNldCgpCiAgICAgICAgZm9yIG1hcHBpbmcgaW4gc2VsZi5tYXBzOgogICAgICAgICAgICBmb3IgayBpbiBtYXBwaW5nOgogICAgICAgICAgICAgICAgaWYgayBub3QgaW4gc2VlbjoKICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZChrKQogICAgICAgICAgICAgICAgICAgIHlpZWxkIGsKCgpjbGFzcyBUZXN0Q2FzZShvYmplY3QpOgogICAgIiIiQSBjbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHNpbmdsZSB0ZXN0IGNhc2VzLgoKICAgIEJ5IGRlZmF1bHQsIHRoZSB0ZXN0IGNvZGUgaXRzZWxmIHNob3VsZCBiZSBwbGFjZWQgaW4gYSBtZXRob2QgbmFtZWQKICAgICdydW5UZXN0Jy4KCiAgICBJZiB0aGUgZml4dHVyZSBtYXkgYmUgdXNlZCBmb3IgbWFueSB0ZXN0IGNhc2VzLCBjcmVhdGUgYXMKICAgIG1hbnkgdGVzdCBtZXRob2RzIGFzIGFyZSBuZWVkZWQuIFdoZW4gaW5zdGFudGlhdGluZyBzdWNoIGEgVGVzdENhc2UKICAgIHN1YmNsYXNzLCBzcGVjaWZ5IGluIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgdGhlIG5hbWUgb2YgdGhlIHRlc3QgbWV0aG9kCiAgICB0aGF0IHRoZSBpbnN0YW5jZSBpcyB0byBleGVjdXRlLgoKICAgIFRlc3QgYXV0aG9ycyBzaG91bGQgc3ViY2xhc3MgVGVzdENhc2UgZm9yIHRoZWlyIG93biB0ZXN0cy4gQ29uc3RydWN0aW9uCiAgICBhbmQgZGVjb25zdHJ1Y3Rpb24gb2YgdGhlIHRlc3QncyBlbnZpcm9ubWVudCAoJ2ZpeHR1cmUnKSBjYW4gYmUKICAgIGltcGxlbWVudGVkIGJ5IG92ZXJyaWRpbmcgdGhlICdzZXRVcCcgYW5kICd0ZWFyRG93bicgbWV0aG9kcyByZXNwZWN0aXZlbHkuCgogICAgSWYgaXQgaXMgbmVjZXNzYXJ5IHRvIG92ZXJyaWRlIHRoZSBfX2luaXRfXyBtZXRob2QsIHRoZSBiYXNlIGNsYXNzCiAgICBfX2luaXRfXyBtZXRob2QgbXVzdCBhbHdheXMgYmUgY2FsbGVkLiBJdCBpcyBpbXBvcnRhbnQgdGhhdCBzdWJjbGFzc2VzCiAgICBzaG91bGQgbm90IGNoYW5nZSB0aGUgc2lnbmF0dXJlIG9mIHRoZWlyIF9faW5pdF9fIG1ldGhvZCwgc2luY2UgaW5zdGFuY2VzCiAgICBvZiB0aGUgY2xhc3NlcyBhcmUgaW5zdGFudGlhdGVkIGF1dG9tYXRpY2FsbHkgYnkgcGFydHMgb2YgdGhlIGZyYW1ld29yawogICAgaW4gb3JkZXIgdG8gYmUgcnVuLgoKICAgIFdoZW4gc3ViY2xhc3NpbmcgVGVzdENhc2UsIHlvdSBjYW4gc2V0IHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAqIGZhaWx1cmVFeGNlcHRpb246IGRldGVybWluZXMgd2hpY2ggZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4KICAgICAgICB0aGUgaW5zdGFuY2UncyBhc3NlcnRpb24gbWV0aG9kcyBmYWlsOyB0ZXN0IG1ldGhvZHMgcmFpc2luZyB0aGlzCiAgICAgICAgZXhjZXB0aW9uIHdpbGwgYmUgZGVlbWVkIHRvIGhhdmUgJ2ZhaWxlZCcgcmF0aGVyIHRoYW4gJ2Vycm9yZWQnLgogICAgKiBsb25nTWVzc2FnZTogZGV0ZXJtaW5lcyB3aGV0aGVyIGxvbmcgbWVzc2FnZXMgKGluY2x1ZGluZyByZXByIG9mCiAgICAgICAgb2JqZWN0cyB1c2VkIGluIGFzc2VydCBtZXRob2RzKSB3aWxsIGJlIHByaW50ZWQgb24gZmFpbHVyZSBpbiAqYWRkaXRpb24qCiAgICAgICAgdG8gYW55IGV4cGxpY2l0IG1lc3NhZ2UgcGFzc2VkLgogICAgKiBtYXhEaWZmOiBzZXRzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGRpZmYgaW4gZmFpbHVyZSBtZXNzYWdlcwogICAgICAgIGJ5IGFzc2VydCBtZXRob2RzIHVzaW5nIGRpZmZsaWIuIEl0IGlzIGxvb2tlZCB1cCBhcyBhbiBpbnN0YW5jZQogICAgICAgIGF0dHJpYnV0ZSBzbyBjYW4gYmUgY29uZmlndXJlZCBieSBpbmRpdmlkdWFsIHRlc3RzIGlmIHJlcXVpcmVkLgogICAgIiIiCgogICAgZmFpbHVyZUV4Y2VwdGlvbiA9IEFzc2VydGlvbkVycm9yCgogICAgbG9uZ01lc3NhZ2UgPSBUcnVlCgogICAgbWF4RGlmZiA9IDgwKjgKCiAgICAjIElmIGEgc3RyaW5nIGlzIGxvbmdlciB0aGFuIF9kaWZmVGhyZXNob2xkLCB1c2Ugbm9ybWFsIGNvbXBhcmlzb24gaW5zdGVhZAogICAgIyBvZiBkaWZmbGliLiAgU2VlICMxMTc2My4KICAgIF9kaWZmVGhyZXNob2xkID0gMioqMTYKCiAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICMgQXR0cmlidXRlIHVzZWQgYnkgVGVzdFN1aXRlIGZvciBjbGFzc1NldFVwCiAgICAgICAgY2xzLl9jbGFzc1NldHVwRmFpbGVkID0gRmFsc2UKICAgICAgICBjbHMuX2NsYXNzX2NsZWFudXBzID0gW10KICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCphcmdzLCAqKmt3YXJncykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0ncnVuVGVzdCcpOgogICAgICAgICIiIkNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgdGhhdCB3aWxsIHVzZSB0aGUgbmFtZWQgdGVzdAogICAgICAgICAgIG1ldGhvZCB3aGVuIGV4ZWN1dGVkLiBSYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHRoZSBpbnN0YW5jZSBkb2VzCiAgICAgICAgICAgbm90IGhhdmUgYSBtZXRob2Qgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fdGVzdE1ldGhvZE5hbWUgPSBtZXRob2ROYW1lCiAgICAgICAgc2VsZi5fb3V0Y29tZSA9IE5vbmUKICAgICAgICBzZWxmLl90ZXN0TWV0aG9kRG9jID0gJ05vIHRlc3QnCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0ZXN0TWV0aG9kID0gZ2V0YXR0cihzZWxmLCBtZXRob2ROYW1lKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgaWYgbWV0aG9kTmFtZSAhPSAncnVuVGVzdCc6CiAgICAgICAgICAgICAgICAjIHdlIGFsbG93IGluc3RhbnRpYXRpb24gd2l0aCBubyBleHBsaWNpdCBtZXRob2QgbmFtZQogICAgICAgICAgICAgICAgIyBidXQgbm90IGFuICppbmNvcnJlY3QqIG9yIG1pc3NpbmcgbWV0aG9kIG5hbWUKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHN1Y2ggdGVzdCBtZXRob2QgaW4gJXM6ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18sIG1ldGhvZE5hbWUpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3Rlc3RNZXRob2REb2MgPSB0ZXN0TWV0aG9kLl9fZG9jX18KICAgICAgICBzZWxmLl9jbGVhbnVwcyA9IFtdCiAgICAgICAgc2VsZi5fc3VidGVzdCA9IE5vbmUKCiAgICAgICAgIyBNYXAgdHlwZXMgdG8gY3VzdG9tIGFzc2VydEVxdWFsIGZ1bmN0aW9ucyB0aGF0IHdpbGwgY29tcGFyZQogICAgICAgICMgaW5zdGFuY2VzIG9mIHNhaWQgdHlwZSBpbiBtb3JlIGRldGFpbCB0byBnZW5lcmF0ZSBhIG1vcmUgdXNlZnVsCiAgICAgICAgIyBlcnJvciBtZXNzYWdlLgogICAgICAgIHNlbGYuX3R5cGVfZXF1YWxpdHlfZnVuY3MgPSB7fQogICAgICAgIHNlbGYuYWRkVHlwZUVxdWFsaXR5RnVuYyhkaWN0LCAnYXNzZXJ0RGljdEVxdWFsJykKICAgICAgICBzZWxmLmFkZFR5cGVFcXVhbGl0eUZ1bmMobGlzdCwgJ2Fzc2VydExpc3RFcXVhbCcpCiAgICAgICAgc2VsZi5hZGRUeXBlRXF1YWxpdHlGdW5jKHR1cGxlLCAnYXNzZXJ0VHVwbGVFcXVhbCcpCiAgICAgICAgc2VsZi5hZGRUeXBlRXF1YWxpdHlGdW5jKHNldCwgJ2Fzc2VydFNldEVxdWFsJykKICAgICAgICBzZWxmLmFkZFR5cGVFcXVhbGl0eUZ1bmMoZnJvemVuc2V0LCAnYXNzZXJ0U2V0RXF1YWwnKQogICAgICAgIHNlbGYuYWRkVHlwZUVxdWFsaXR5RnVuYyhzdHIsICdhc3NlcnRNdWx0aUxpbmVFcXVhbCcpCgogICAgZGVmIGFkZFR5cGVFcXVhbGl0eUZ1bmMoc2VsZiwgdHlwZW9iaiwgZnVuY3Rpb24pOgogICAgICAgICIiIkFkZCBhIHR5cGUgc3BlY2lmaWMgYXNzZXJ0RXF1YWwgc3R5bGUgZnVuY3Rpb24gdG8gY29tcGFyZSBhIHR5cGUuCgogICAgICAgIFRoaXMgbWV0aG9kIGlzIGZvciB1c2UgYnkgVGVzdENhc2Ugc3ViY2xhc3NlcyB0aGF0IG5lZWQgdG8gcmVnaXN0ZXIKICAgICAgICB0aGVpciBvd24gdHlwZSBlcXVhbGl0eSBmdW5jdGlvbnMgdG8gcHJvdmlkZSBuaWNlciBlcnJvciBtZXNzYWdlcy4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgdHlwZW9iajogVGhlIGRhdGEgdHlwZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24gb24gd2hlbiBib3RoIHZhbHVlcwogICAgICAgICAgICAgICAgICAgIGFyZSBvZiB0aGUgc2FtZSB0eXBlIGluIGFzc2VydEVxdWFsKCkuCiAgICAgICAgICAgIGZ1bmN0aW9uOiBUaGUgY2FsbGFibGUgdGFraW5nIHR3byBhcmd1bWVudHMgYW5kIGFuIG9wdGlvbmFsCiAgICAgICAgICAgICAgICAgICAgbXNnPSBhcmd1bWVudCB0aGF0IHJhaXNlcyBzZWxmLmZhaWx1cmVFeGNlcHRpb24gd2l0aCBhCiAgICAgICAgICAgICAgICAgICAgdXNlZnVsIGVycm9yIG1lc3NhZ2Ugd2hlbiB0aGUgdHdvIGFyZ3VtZW50cyBhcmUgbm90IGVxdWFsLgogICAgICAgICIiIgogICAgICAgIHNlbGYuX3R5cGVfZXF1YWxpdHlfZnVuY3NbdHlwZW9ial0gPSBmdW5jdGlvbgoKICAgIGRlZiBhZGRDbGVhbnVwKHNlbGYsIGZ1bmN0aW9uLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIkFkZCBhIGZ1bmN0aW9uLCB3aXRoIGFyZ3VtZW50cywgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRlc3QgaXMKICAgICAgICBjb21wbGV0ZWQuIEZ1bmN0aW9ucyBhZGRlZCBhcmUgY2FsbGVkIG9uIGEgTElGTyBiYXNpcyBhbmQgYXJlCiAgICAgICAgY2FsbGVkIGFmdGVyIHRlYXJEb3duIG9uIHRlc3QgZmFpbHVyZSBvciBzdWNjZXNzLgoKICAgICAgICBDbGVhbnVwIGl0ZW1zIGFyZSBjYWxsZWQgZXZlbiBpZiBzZXRVcCBmYWlscyAodW5saWtlIHRlYXJEb3duKS4iIiIKICAgICAgICBzZWxmLl9jbGVhbnVwcy5hcHBlbmQoKGZ1bmN0aW9uLCBhcmdzLCBrd2FyZ3MpKQoKICAgIGRlZiBlbnRlckNvbnRleHQoc2VsZiwgY20pOgogICAgICAgICIiIkVudGVycyB0aGUgc3VwcGxpZWQgY29udGV4dCBtYW5hZ2VyLgoKICAgICAgICBJZiBzdWNjZXNzZnVsLCBhbHNvIGFkZHMgaXRzIF9fZXhpdF9fIG1ldGhvZCBhcyBhIGNsZWFudXAKICAgICAgICBmdW5jdGlvbiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBfX2VudGVyX18gbWV0aG9kLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBfZW50ZXJfY29udGV4dChjbSwgc2VsZi5hZGRDbGVhbnVwKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIGFkZENsYXNzQ2xlYW51cChjbHMsIGZ1bmN0aW9uLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIlNhbWUgYXMgYWRkQ2xlYW51cCwgZXhjZXB0IHRoZSBjbGVhbnVwIGl0ZW1zIGFyZSBjYWxsZWQgZXZlbiBpZgogICAgICAgIHNldFVwQ2xhc3MgZmFpbHMgKHVubGlrZSB0ZWFyRG93bkNsYXNzKS4iIiIKICAgICAgICBjbHMuX2NsYXNzX2NsZWFudXBzLmFwcGVuZCgoZnVuY3Rpb24sIGFyZ3MsIGt3YXJncykpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZW50ZXJDbGFzc0NvbnRleHQoY2xzLCBjbSk6CiAgICAgICAgIiIiU2FtZSBhcyBlbnRlckNvbnRleHQsIGJ1dCBjbGFzcy13aWRlLiIiIgogICAgICAgIHJldHVybiBfZW50ZXJfY29udGV4dChjbSwgY2xzLmFkZENsYXNzQ2xlYW51cCkKCiAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIkhvb2sgbWV0aG9kIGZvciBzZXR0aW5nIHVwIHRoZSB0ZXN0IGZpeHR1cmUgYmVmb3JlIGV4ZXJjaXNpbmcgaXQuIgogICAgICAgIHBhc3MKCiAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIkhvb2sgbWV0aG9kIGZvciBkZWNvbnN0cnVjdGluZyB0aGUgdGVzdCBmaXh0dXJlIGFmdGVyIHRlc3RpbmcgaXQuIgogICAgICAgIHBhc3MKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIkhvb2sgbWV0aG9kIGZvciBzZXR0aW5nIHVwIGNsYXNzIGZpeHR1cmUgYmVmb3JlIHJ1bm5pbmcgdGVzdHMgaW4gdGhlIGNsYXNzLiIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAgICAgIkhvb2sgbWV0aG9kIGZvciBkZWNvbnN0cnVjdGluZyB0aGUgY2xhc3MgZml4dHVyZSBhZnRlciBydW5uaW5nIGFsbCB0ZXN0cyBpbiB0aGUgY2xhc3MuIgoKICAgIGRlZiBjb3VudFRlc3RDYXNlcyhzZWxmKToKICAgICAgICByZXR1cm4gMQoKICAgIGRlZiBkZWZhdWx0VGVzdFJlc3VsdChzZWxmKToKICAgICAgICByZXR1cm4gcmVzdWx0LlRlc3RSZXN1bHQoKQoKICAgIGRlZiBzaG9ydERlc2NyaXB0aW9uKHNlbGYpOgogICAgICAgICIiIlJldHVybnMgYSBvbmUtbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGVzdCwgb3IgTm9uZSBpZiBubwogICAgICAgIGRlc2NyaXB0aW9uIGhhcyBiZWVuIHByb3ZpZGVkLgoKICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBsaW5lIG9mCiAgICAgICAgdGhlIHNwZWNpZmllZCB0ZXN0IG1ldGhvZCdzIGRvY3N0cmluZy4KICAgICAgICAiIiIKICAgICAgICBkb2MgPSBzZWxmLl90ZXN0TWV0aG9kRG9jCiAgICAgICAgcmV0dXJuIGRvYy5zdHJpcCgpLnNwbGl0KCJcbiIpWzBdLnN0cmlwKCkgaWYgZG9jIGVsc2UgTm9uZQoKCiAgICBkZWYgaWQoc2VsZik6CiAgICAgICAgcmV0dXJuICIlcy4lcyIgJSAoc3RyY2xhc3Moc2VsZi5fX2NsYXNzX18pLCBzZWxmLl90ZXN0TWV0aG9kTmFtZSkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIG5vdCB0eXBlKG90aGVyKToKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCgogICAgICAgIHJldHVybiBzZWxmLl90ZXN0TWV0aG9kTmFtZSA9PSBvdGhlci5fdGVzdE1ldGhvZE5hbWUKCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goKHR5cGUoc2VsZiksIHNlbGYuX3Rlc3RNZXRob2ROYW1lKSkKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIiVzICglcy4lcykiICUgKHNlbGYuX3Rlc3RNZXRob2ROYW1lLCBzdHJjbGFzcyhzZWxmLl9fY2xhc3NfXyksIHNlbGYuX3Rlc3RNZXRob2ROYW1lKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIjwlcyB0ZXN0TWV0aG9kPSVzPiIgJSBcCiAgICAgICAgICAgICAgIChzdHJjbGFzcyhzZWxmLl9fY2xhc3NfXyksIHNlbGYuX3Rlc3RNZXRob2ROYW1lKQoKICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiAgICBkZWYgc3ViVGVzdChzZWxmLCBtc2c9X3N1YnRlc3RfbXNnX3NlbnRpbmVsLCAqKnBhcmFtcyk6CiAgICAgICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCByZXR1cm4gdGhlIGVuY2xvc2VkIGJsb2NrCiAgICAgICAgb2YgY29kZSBpbiBhIHN1YnRlc3QgaWRlbnRpZmllZCBieSB0aGUgb3B0aW9uYWwgbWVzc2FnZSBhbmQKICAgICAgICBrZXl3b3JkIHBhcmFtZXRlcnMuICBBIGZhaWx1cmUgaW4gdGhlIHN1YnRlc3QgbWFya3MgdGhlIHRlc3QKICAgICAgICBjYXNlIGFzIGZhaWxlZCBidXQgcmVzdW1lcyBleGVjdXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgZW5jbG9zZWQKICAgICAgICBibG9jaywgYWxsb3dpbmcgZnVydGhlciB0ZXN0IGNvZGUgdG8gYmUgZXhlY3V0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fb3V0Y29tZSBpcyBOb25lIG9yIG5vdCBzZWxmLl9vdXRjb21lLnJlc3VsdF9zdXBwb3J0c19zdWJ0ZXN0czoKICAgICAgICAgICAgeWllbGQKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgcGFyZW50ID0gc2VsZi5fc3VidGVzdAogICAgICAgIGlmIHBhcmVudCBpcyBOb25lOgogICAgICAgICAgICBwYXJhbXNfbWFwID0gX09yZGVyZWRDaGFpbk1hcChwYXJhbXMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGFyYW1zX21hcCA9IHBhcmVudC5wYXJhbXMubmV3X2NoaWxkKHBhcmFtcykKICAgICAgICBzZWxmLl9zdWJ0ZXN0ID0gX1N1YlRlc3Qoc2VsZiwgbXNnLCBwYXJhbXNfbWFwKQogICAgICAgIHRyeToKICAgICAgICAgICAgd2l0aCBzZWxmLl9vdXRjb21lLnRlc3RQYXJ0RXhlY3V0b3Ioc2VsZi5fc3VidGVzdCwgc3ViVGVzdD1UcnVlKToKICAgICAgICAgICAgICAgIHlpZWxkCiAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9vdXRjb21lLnN1Y2Nlc3M6CiAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9vdXRjb21lLnJlc3VsdAogICAgICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lIGFuZCByZXN1bHQuZmFpbGZhc3Q6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgX1Nob3VsZFN0b3AKICAgICAgICAgICAgZWxpZiBzZWxmLl9vdXRjb21lLmV4cGVjdGVkRmFpbHVyZToKICAgICAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaXMgZXhwZWN0aW5nIGEgZmFpbHVyZSwgd2UgcmVhbGx5IHdhbnQgdG8KICAgICAgICAgICAgICAgICMgc3RvcCBub3cgYW5kIHJlZ2lzdGVyIHRoZSBleHBlY3RlZCBmYWlsdXJlLgogICAgICAgICAgICAgICAgcmFpc2UgX1Nob3VsZFN0b3AKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBzZWxmLl9zdWJ0ZXN0ID0gcGFyZW50CgogICAgZGVmIF9hZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgcmVzdWx0LCBleGNfaW5mbyk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBhZGRFeHBlY3RlZEZhaWx1cmUgPSByZXN1bHQuYWRkRXhwZWN0ZWRGYWlsdXJlCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUZXN0UmVzdWx0IGhhcyBubyBhZGRFeHBlY3RlZEZhaWx1cmUgbWV0aG9kLCByZXBvcnRpbmcgYXMgcGFzc2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKICAgICAgICAgICAgcmVzdWx0LmFkZFN1Y2Nlc3Moc2VsZikKICAgICAgICBlbHNlOgogICAgICAgICAgICBhZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgZXhjX2luZm8pCgogICAgZGVmIF9hZGRVbmV4cGVjdGVkU3VjY2VzcyhzZWxmLCByZXN1bHQpOgogICAgICAgIHRyeToKICAgICAgICAgICAgYWRkVW5leHBlY3RlZFN1Y2Nlc3MgPSByZXN1bHQuYWRkVW5leHBlY3RlZFN1Y2Nlc3MKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRlc3RSZXN1bHQgaGFzIG5vIGFkZFVuZXhwZWN0ZWRTdWNjZXNzIG1ldGhvZCwgcmVwb3J0aW5nIGFzIGZhaWx1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQogICAgICAgICAgICAjIFdlIG5lZWQgdG8gcGFzcyBhbiBhY3R1YWwgZXhjZXB0aW9uIGFuZCB0cmFjZWJhY2sgdG8gYWRkRmFpbHVyZSwKICAgICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGxlZ2FjeSByZXN1bHQgY2FuIGNob2tlLgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByYWlzZSBfVW5leHBlY3RlZFN1Y2Nlc3MgZnJvbSBOb25lCiAgICAgICAgICAgIGV4Y2VwdCBfVW5leHBlY3RlZFN1Y2Nlc3M6CiAgICAgICAgICAgICAgICByZXN1bHQuYWRkRmFpbHVyZShzZWxmLCBzeXMuZXhjX2luZm8oKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBhZGRVbmV4cGVjdGVkU3VjY2VzcyhzZWxmKQoKICAgIGRlZiBfY2FsbFNldFVwKHNlbGYpOgogICAgICAgIHNlbGYuc2V0VXAoKQoKICAgIGRlZiBfY2FsbFRlc3RNZXRob2Qoc2VsZiwgbWV0aG9kKToKICAgICAgICBpZiBtZXRob2QoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgd2FybmluZ3Mud2FybihmJ0l0IGlzIGRlcHJlY2F0ZWQgdG8gcmV0dXJuIGEgdmFsdWUgdGhhdCBpcyBub3QgTm9uZSBmcm9tIGEgJwogICAgICAgICAgICAgICAgICAgICAgICAgIGYndGVzdCBjYXNlICh7bWV0aG9kfSknLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MykKCiAgICBkZWYgX2NhbGxUZWFyRG93bihzZWxmKToKICAgICAgICBzZWxmLnRlYXJEb3duKCkKCiAgICBkZWYgX2NhbGxDbGVhbnVwKHNlbGYsIGZ1bmN0aW9uLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKCiAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdD1Ob25lKToKICAgICAgICBpZiByZXN1bHQgaXMgTm9uZToKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5kZWZhdWx0VGVzdFJlc3VsdCgpCiAgICAgICAgICAgIHN0YXJ0VGVzdFJ1biA9IGdldGF0dHIocmVzdWx0LCAnc3RhcnRUZXN0UnVuJywgTm9uZSkKICAgICAgICAgICAgc3RvcFRlc3RSdW4gPSBnZXRhdHRyKHJlc3VsdCwgJ3N0b3BUZXN0UnVuJywgTm9uZSkKICAgICAgICAgICAgaWYgc3RhcnRUZXN0UnVuIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc3RhcnRUZXN0UnVuKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzdG9wVGVzdFJ1biA9IE5vbmUKCiAgICAgICAgcmVzdWx0LnN0YXJ0VGVzdChzZWxmKQogICAgICAgIHRyeToKICAgICAgICAgICAgdGVzdE1ldGhvZCA9IGdldGF0dHIoc2VsZiwgc2VsZi5fdGVzdE1ldGhvZE5hbWUpCiAgICAgICAgICAgIGlmIChnZXRhdHRyKHNlbGYuX19jbGFzc19fLCAiX191bml0dGVzdF9za2lwX18iLCBGYWxzZSkgb3IKICAgICAgICAgICAgICAgIGdldGF0dHIodGVzdE1ldGhvZCwgIl9fdW5pdHRlc3Rfc2tpcF9fIiwgRmFsc2UpKToKICAgICAgICAgICAgICAgICMgSWYgdGhlIGNsYXNzIG9yIG1ldGhvZCB3YXMgc2tpcHBlZC4KICAgICAgICAgICAgICAgIHNraXBfd2h5ID0gKGdldGF0dHIoc2VsZi5fX2NsYXNzX18sICdfX3VuaXR0ZXN0X3NraXBfd2h5X18nLCAnJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdldGF0dHIodGVzdE1ldGhvZCwgJ19fdW5pdHRlc3Rfc2tpcF93aHlfXycsICcnKSkKICAgICAgICAgICAgICAgIF9hZGRTa2lwKHJlc3VsdCwgc2VsZiwgc2tpcF93aHkpCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgICAgICAgICBleHBlY3RpbmdfZmFpbHVyZSA9ICgKICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgIl9fdW5pdHRlc3RfZXhwZWN0aW5nX2ZhaWx1cmVfXyIsIEZhbHNlKSBvcgogICAgICAgICAgICAgICAgZ2V0YXR0cih0ZXN0TWV0aG9kLCAiX191bml0dGVzdF9leHBlY3RpbmdfZmFpbHVyZV9fIiwgRmFsc2UpCiAgICAgICAgICAgICkKICAgICAgICAgICAgb3V0Y29tZSA9IF9PdXRjb21lKHJlc3VsdCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fb3V0Y29tZSA9IG91dGNvbWUKCiAgICAgICAgICAgICAgICB3aXRoIG91dGNvbWUudGVzdFBhcnRFeGVjdXRvcihzZWxmKToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsU2V0VXAoKQogICAgICAgICAgICAgICAgaWYgb3V0Y29tZS5zdWNjZXNzOgogICAgICAgICAgICAgICAgICAgIG91dGNvbWUuZXhwZWN0aW5nX2ZhaWx1cmUgPSBleHBlY3RpbmdfZmFpbHVyZQogICAgICAgICAgICAgICAgICAgIHdpdGggb3V0Y29tZS50ZXN0UGFydEV4ZWN1dG9yKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsVGVzdE1ldGhvZCh0ZXN0TWV0aG9kKQogICAgICAgICAgICAgICAgICAgIG91dGNvbWUuZXhwZWN0aW5nX2ZhaWx1cmUgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgIHdpdGggb3V0Y29tZS50ZXN0UGFydEV4ZWN1dG9yKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsVGVhckRvd24oKQogICAgICAgICAgICAgICAgc2VsZi5kb0NsZWFudXBzKCkKCiAgICAgICAgICAgICAgICBpZiBvdXRjb21lLnN1Y2Nlc3M6CiAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0aW5nX2ZhaWx1cmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dGNvbWUuZXhwZWN0ZWRGYWlsdXJlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkRXhwZWN0ZWRGYWlsdXJlKHJlc3VsdCwgb3V0Y29tZS5leHBlY3RlZEZhaWx1cmUpCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRVbmV4cGVjdGVkU3VjY2VzcyhyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZFN1Y2Nlc3Moc2VsZikKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICMgZXhwbGljaXRseSBicmVhayByZWZlcmVuY2UgY3ljbGU6CiAgICAgICAgICAgICAgICAjIG91dGNvbWUuZXhwZWN0ZWRGYWlsdXJlIC0+IGZyYW1lIC0+IG91dGNvbWUgLT4gb3V0Y29tZS5leHBlY3RlZEZhaWx1cmUKICAgICAgICAgICAgICAgIG91dGNvbWUuZXhwZWN0ZWRGYWlsdXJlID0gTm9uZQogICAgICAgICAgICAgICAgb3V0Y29tZSA9IE5vbmUKCiAgICAgICAgICAgICAgICAjIGNsZWFyIHRoZSBvdXRjb21lLCBubyBtb3JlIG5lZWRlZAogICAgICAgICAgICAgICAgc2VsZi5fb3V0Y29tZSA9IE5vbmUKCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgcmVzdWx0LnN0b3BUZXN0KHNlbGYpCiAgICAgICAgICAgIGlmIHN0b3BUZXN0UnVuIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgc3RvcFRlc3RSdW4oKQoKICAgIGRlZiBkb0NsZWFudXBzKHNlbGYpOgogICAgICAgICIiIkV4ZWN1dGUgYWxsIGNsZWFudXAgZnVuY3Rpb25zLiBOb3JtYWxseSBjYWxsZWQgZm9yIHlvdSBhZnRlcgogICAgICAgIHRlYXJEb3duLiIiIgogICAgICAgIG91dGNvbWUgPSBzZWxmLl9vdXRjb21lIG9yIF9PdXRjb21lKCkKICAgICAgICB3aGlsZSBzZWxmLl9jbGVhbnVwczoKICAgICAgICAgICAgZnVuY3Rpb24sIGFyZ3MsIGt3YXJncyA9IHNlbGYuX2NsZWFudXBzLnBvcCgpCiAgICAgICAgICAgIHdpdGggb3V0Y29tZS50ZXN0UGFydEV4ZWN1dG9yKHNlbGYpOgogICAgICAgICAgICAgICAgc2VsZi5fY2FsbENsZWFudXAoZnVuY3Rpb24sICphcmdzLCAqKmt3YXJncykKCiAgICAgICAgIyByZXR1cm4gdGhpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAgICAgICAjIGV2ZW4gdGhvdWdoIHdlIG5vIGxvbmdlciB1c2UgaXQgaW50ZXJuYWxseQogICAgICAgIHJldHVybiBvdXRjb21lLnN1Y2Nlc3MKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBkb0NsYXNzQ2xlYW51cHMoY2xzKToKICAgICAgICAiIiJFeGVjdXRlIGFsbCBjbGFzcyBjbGVhbnVwIGZ1bmN0aW9ucy4gTm9ybWFsbHkgY2FsbGVkIGZvciB5b3UgYWZ0ZXIKICAgICAgICB0ZWFyRG93bkNsYXNzLiIiIgogICAgICAgIGNscy50ZWFyRG93bl9leGNlcHRpb25zID0gW10KICAgICAgICB3aGlsZSBjbHMuX2NsYXNzX2NsZWFudXBzOgogICAgICAgICAgICBmdW5jdGlvbiwgYXJncywga3dhcmdzID0gY2xzLl9jbGFzc19jbGVhbnVwcy5wb3AoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmdW5jdGlvbigqYXJncywgKiprd2FyZ3MpCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICBjbHMudGVhckRvd25fZXhjZXB0aW9ucy5hcHBlbmQoc3lzLmV4Y19pbmZvKCkpCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgIHJldHVybiBzZWxmLnJ1bigqYXJncywgKiprd2RzKQoKICAgIGRlZiBkZWJ1ZyhzZWxmKToKICAgICAgICAiIiJSdW4gdGhlIHRlc3Qgd2l0aG91dCBjb2xsZWN0aW5nIGVycm9ycyBpbiBhIFRlc3RSZXN1bHQiIiIKICAgICAgICB0ZXN0TWV0aG9kID0gZ2V0YXR0cihzZWxmLCBzZWxmLl90ZXN0TWV0aG9kTmFtZSkKICAgICAgICBpZiAoZ2V0YXR0cihzZWxmLl9fY2xhc3NfXywgIl9fdW5pdHRlc3Rfc2tpcF9fIiwgRmFsc2UpIG9yCiAgICAgICAgICAgIGdldGF0dHIodGVzdE1ldGhvZCwgIl9fdW5pdHRlc3Rfc2tpcF9fIiwgRmFsc2UpKToKICAgICAgICAgICAgIyBJZiB0aGUgY2xhc3Mgb3IgbWV0aG9kIHdhcyBza2lwcGVkLgogICAgICAgICAgICBza2lwX3doeSA9IChnZXRhdHRyKHNlbGYuX19jbGFzc19fLCAnX191bml0dGVzdF9za2lwX3doeV9fJywgJycpCiAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdldGF0dHIodGVzdE1ldGhvZCwgJ19fdW5pdHRlc3Rfc2tpcF93aHlfXycsICcnKSkKICAgICAgICAgICAgcmFpc2UgU2tpcFRlc3Qoc2tpcF93aHkpCgogICAgICAgIHNlbGYuX2NhbGxTZXRVcCgpCiAgICAgICAgc2VsZi5fY2FsbFRlc3RNZXRob2QodGVzdE1ldGhvZCkKICAgICAgICBzZWxmLl9jYWxsVGVhckRvd24oKQogICAgICAgIHdoaWxlIHNlbGYuX2NsZWFudXBzOgogICAgICAgICAgICBmdW5jdGlvbiwgYXJncywga3dhcmdzID0gc2VsZi5fY2xlYW51cHMucG9wKCkKICAgICAgICAgICAgc2VsZi5fY2FsbENsZWFudXAoZnVuY3Rpb24sICphcmdzLCAqKmt3YXJncykKCiAgICBkZWYgc2tpcFRlc3Qoc2VsZiwgcmVhc29uKToKICAgICAgICAiIiJTa2lwIHRoaXMgdGVzdC4iIiIKICAgICAgICByYWlzZSBTa2lwVGVzdChyZWFzb24pCgogICAgZGVmIGZhaWwoc2VsZiwgbXNnPU5vbmUpOgogICAgICAgICIiIkZhaWwgaW1tZWRpYXRlbHksIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuIiIiCiAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG1zZykKCiAgICBkZWYgYXNzZXJ0RmFsc2Uoc2VsZiwgZXhwciwgbXNnPU5vbmUpOgogICAgICAgICIiIkNoZWNrIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UuIiIiCiAgICAgICAgaWYgZXhwcjoKICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csICIlcyBpcyBub3QgZmFsc2UiICUgc2FmZV9yZXByKGV4cHIpKQogICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQoKICAgIGRlZiBhc3NlcnRUcnVlKHNlbGYsIGV4cHIsIG1zZz1Ob25lKToKICAgICAgICAiIiJDaGVjayB0aGF0IHRoZSBleHByZXNzaW9uIGlzIHRydWUuIiIiCiAgICAgICAgaWYgbm90IGV4cHI6CiAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCAiJXMgaXMgbm90IHRydWUiICUgc2FmZV9yZXByKGV4cHIpKQogICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQoKICAgIGRlZiBfZm9ybWF0TWVzc2FnZShzZWxmLCBtc2csIHN0YW5kYXJkTXNnKToKICAgICAgICAiIiJIb25vdXIgdGhlIGxvbmdNZXNzYWdlIGF0dHJpYnV0ZSB3aGVuIGdlbmVyYXRpbmcgZmFpbHVyZSBtZXNzYWdlcy4KICAgICAgICBJZiBsb25nTWVzc2FnZSBpcyBGYWxzZSB0aGlzIG1lYW5zOgogICAgICAgICogVXNlIG9ubHkgYW4gZXhwbGljaXQgbWVzc2FnZSBpZiBpdCBpcyBwcm92aWRlZAogICAgICAgICogT3RoZXJ3aXNlIHVzZSB0aGUgc3RhbmRhcmQgbWVzc2FnZSBmb3IgdGhlIGFzc2VydAoKICAgICAgICBJZiBsb25nTWVzc2FnZSBpcyBUcnVlOgogICAgICAgICogVXNlIHRoZSBzdGFuZGFyZCBtZXNzYWdlCiAgICAgICAgKiBJZiBhbiBleHBsaWNpdCBtZXNzYWdlIGlzIHByb3ZpZGVkLCBwbHVzICcgOiAnIGFuZCB0aGUgZXhwbGljaXQgbWVzc2FnZQogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBzZWxmLmxvbmdNZXNzYWdlOgogICAgICAgICAgICByZXR1cm4gbXNnIG9yIHN0YW5kYXJkTXNnCiAgICAgICAgaWYgbXNnIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzdGFuZGFyZE1zZwogICAgICAgIHRyeToKICAgICAgICAgICAgIyBkb24ndCBzd2l0Y2ggdG8gJ3t9JyBmb3JtYXR0aW5nIGluIFB5dGhvbiAyLlgKICAgICAgICAgICAgIyBpdCBjaGFuZ2VzIHRoZSB3YXkgdW5pY29kZSBpbnB1dCBpcyBoYW5kbGVkCiAgICAgICAgICAgIHJldHVybiAnJXMgOiAlcycgJSAoc3RhbmRhcmRNc2csIG1zZykKICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICByZXR1cm4gICclcyA6ICVzJyAlIChzYWZlX3JlcHIoc3RhbmRhcmRNc2cpLCBzYWZlX3JlcHIobXNnKSkKCiAgICBkZWYgYXNzZXJ0UmFpc2VzKHNlbGYsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiJGYWlsIHVubGVzcyBhbiBleGNlcHRpb24gb2YgY2xhc3MgZXhwZWN0ZWRfZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgICAgICAgIGJ5IHRoZSBjYWxsYWJsZSB3aGVuIGludm9rZWQgd2l0aCBzcGVjaWZpZWQgcG9zaXRpb25hbCBhbmQKICAgICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4gSWYgYSBkaWZmZXJlbnQgdHlwZSBvZiBleGNlcHRpb24gaXMKICAgICAgICAgICByYWlzZWQsIGl0IHdpbGwgbm90IGJlIGNhdWdodCwgYW5kIHRoZSB0ZXN0IGNhc2Ugd2lsbCBiZQogICAgICAgICAgIGRlZW1lZCB0byBoYXZlIHN1ZmZlcmVkIGFuIGVycm9yLCBleGFjdGx5IGFzIGZvciBhbgogICAgICAgICAgIHVuZXhwZWN0ZWQgZXhjZXB0aW9uLgoKICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCB0aGUgY2FsbGFibGUgYW5kIGFyZ3VtZW50cyBvbWl0dGVkLCB3aWxsIHJldHVybiBhCiAgICAgICAgICAgY29udGV4dCBvYmplY3QgdXNlZCBsaWtlIHRoaXM6OgoKICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgICAgZG9fc29tZXRoaW5nKCkKCiAgICAgICAgICAgQW4gb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAnbXNnJyBjYW4gYmUgcHJvdmlkZWQgd2hlbiBhc3NlcnRSYWlzZXMKICAgICAgICAgICBpcyB1c2VkIGFzIGEgY29udGV4dCBvYmplY3QuCgogICAgICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIGV4Y2VwdGlvbiBhcwogICAgICAgICAgIHRoZSAnZXhjZXB0aW9uJyBhdHRyaWJ1dGUuIFRoaXMgYWxsb3dzIHlvdSB0byBpbnNwZWN0IHRoZQogICAgICAgICAgIGV4Y2VwdGlvbiBhZnRlciB0aGUgYXNzZXJ0aW9uOjoKCiAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbikgYXMgY206CiAgICAgICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogICAgICAgICAgICAgICB0aGVfZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCiAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhlX2V4Y2VwdGlvbi5lcnJvcl9jb2RlLCAzKQogICAgICAgICIiIgogICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleHBlY3RlZF9leGNlcHRpb24sIHNlbGYpCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlcycsIGFyZ3MsIGt3YXJncykKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAjIGJwby0yMzg5MDogbWFudWFsbHkgYnJlYWsgYSByZWZlcmVuY2UgY3ljbGUKICAgICAgICAgICAgY29udGV4dCA9IE5vbmUKCiAgICBkZWYgYXNzZXJ0V2FybnMoc2VsZiwgZXhwZWN0ZWRfd2FybmluZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAiIiJGYWlsIHVubGVzcyBhIHdhcm5pbmcgb2YgY2xhc3Mgd2FybkNsYXNzIGlzIHRyaWdnZXJlZAogICAgICAgICAgIGJ5IHRoZSBjYWxsYWJsZSB3aGVuIGludm9rZWQgd2l0aCBzcGVjaWZpZWQgcG9zaXRpb25hbCBhbmQKICAgICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIGEgZGlmZmVyZW50IHR5cGUgb2Ygd2FybmluZyBpcwogICAgICAgICAgIHRyaWdnZXJlZCwgaXQgd2lsbCBub3QgYmUgaGFuZGxlZDogZGVwZW5kaW5nIG9uIHRoZSBvdGhlcgogICAgICAgICAgIHdhcm5pbmcgZmlsdGVyaW5nIHJ1bGVzIGluIGVmZmVjdCwgaXQgbWlnaHQgYmUgc2lsZW5jZWQsIHByaW50ZWQKICAgICAgICAgICBvdXQsIG9yIHJhaXNlZCBhcyBhbiBleGNlcHRpb24uCgogICAgICAgICAgIElmIGNhbGxlZCB3aXRoIHRoZSBjYWxsYWJsZSBhbmQgYXJndW1lbnRzIG9taXR0ZWQsIHdpbGwgcmV0dXJuIGEKICAgICAgICAgICBjb250ZXh0IG9iamVjdCB1c2VkIGxpa2UgdGhpczo6CgogICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFNvbWVXYXJuaW5nKToKICAgICAgICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQoKICAgICAgICAgICBBbiBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICdtc2cnIGNhbiBiZSBwcm92aWRlZCB3aGVuIGFzc2VydFdhcm5zCiAgICAgICAgICAgaXMgdXNlZCBhcyBhIGNvbnRleHQgb2JqZWN0LgoKICAgICAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBtYXRjaGluZwogICAgICAgICAgIHdhcm5pbmcgYXMgdGhlICd3YXJuaW5nJyBhdHRyaWJ1dGU7IHNpbWlsYXJseSwgdGhlICdmaWxlbmFtZScKICAgICAgICAgICBhbmQgJ2xpbmVubycgYXR0cmlidXRlcyBnaXZlIHlvdSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGluZQogICAgICAgICAgIG9mIFB5dGhvbiBjb2RlIGZyb20gd2hpY2ggdGhlIHdhcm5pbmcgd2FzIHRyaWdnZXJlZC4KICAgICAgICAgICBUaGlzIGFsbG93cyB5b3UgdG8gaW5zcGVjdCB0aGUgd2FybmluZyBhZnRlciB0aGUgYXNzZXJ0aW9uOjoKCiAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhTb21lV2FybmluZykgYXMgY206CiAgICAgICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogICAgICAgICAgICAgICB0aGVfd2FybmluZyA9IGNtLndhcm5pbmcKICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfd2FybmluZy5zb21lX2F0dHJpYnV0ZSwgMTQ3KQogICAgICAgICIiIgogICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYpCiAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJucycsIGFyZ3MsIGt3YXJncykKCiAgICBkZWYgYXNzZXJ0TG9ncyhzZWxmLCBsb2dnZXI9Tm9uZSwgbGV2ZWw9Tm9uZSk6CiAgICAgICAgIiIiRmFpbCB1bmxlc3MgYSBsb2cgbWVzc2FnZSBvZiBsZXZlbCAqbGV2ZWwqIG9yIGhpZ2hlciBpcyBlbWl0dGVkCiAgICAgICAgb24gKmxvZ2dlcl9uYW1lKiBvciBpdHMgY2hpbGRyZW4uICBJZiBvbWl0dGVkLCAqbGV2ZWwqIGRlZmF1bHRzIHRvCiAgICAgICAgSU5GTyBhbmQgKmxvZ2dlciogZGVmYXVsdHMgdG8gdGhlIHJvb3QgbG9nZ2VyLgoKICAgICAgICBUaGlzIG1ldGhvZCBtdXN0IGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIGFuZCB3aWxsIHlpZWxkCiAgICAgICAgYSByZWNvcmRpbmcgb2JqZWN0IHdpdGggdHdvIGF0dHJpYnV0ZXM6IGBvdXRwdXRgIGFuZCBgcmVjb3Jkc2AuCiAgICAgICAgQXQgdGhlIGVuZCBvZiB0aGUgY29udGV4dCBtYW5hZ2VyLCB0aGUgYG91dHB1dGAgYXR0cmlidXRlIHdpbGwKICAgICAgICBiZSBhIGxpc3Qgb2YgdGhlIG1hdGNoaW5nIGZvcm1hdHRlZCBsb2cgbWVzc2FnZXMgYW5kIHRoZQogICAgICAgIGByZWNvcmRzYCBhdHRyaWJ1dGUgd2lsbCBiZSBhIGxpc3Qgb2YgdGhlIGNvcnJlc3BvbmRpbmcgTG9nUmVjb3JkCiAgICAgICAgb2JqZWN0cy4KCiAgICAgICAgRXhhbXBsZTo6CgogICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0TG9ncygnZm9vJywgbGV2ZWw9J0lORk8nKSBhcyBjbToKICAgICAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28nKS5pbmZvKCdmaXJzdCBtZXNzYWdlJykKICAgICAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28uYmFyJykuZXJyb3IoJ3NlY29uZCBtZXNzYWdlJykKICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5vdXRwdXQsIFsnSU5GTzpmb286Zmlyc3QgbWVzc2FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0VSUk9SOmZvby5iYXI6c2Vjb25kIG1lc3NhZ2UnXSkKICAgICAgICAiIiIKICAgICAgICAjIExhenkgaW1wb3J0IHRvIGF2b2lkIGltcG9ydGluZyBsb2dnaW5nIGlmIGl0IGlzIG5vdCBuZWVkZWQuCiAgICAgICAgZnJvbSAuX2xvZyBpbXBvcnQgX0Fzc2VydExvZ3NDb250ZXh0CiAgICAgICAgcmV0dXJuIF9Bc3NlcnRMb2dzQ29udGV4dChzZWxmLCBsb2dnZXIsIGxldmVsLCBub19sb2dzPUZhbHNlKQoKICAgIGRlZiBhc3NlcnROb0xvZ3Moc2VsZiwgbG9nZ2VyPU5vbmUsIGxldmVsPU5vbmUpOgogICAgICAgICIiIiBGYWlsIHVubGVzcyBubyBsb2cgbWVzc2FnZXMgb2YgbGV2ZWwgKmxldmVsKiBvciBoaWdoZXIgYXJlIGVtaXR0ZWQKICAgICAgICBvbiAqbG9nZ2VyX25hbWUqIG9yIGl0cyBjaGlsZHJlbi4KCiAgICAgICAgVGhpcyBtZXRob2QgbXVzdCBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogICAgICAgICIiIgogICAgICAgIGZyb20gLl9sb2cgaW1wb3J0IF9Bc3NlcnRMb2dzQ29udGV4dAogICAgICAgIHJldHVybiBfQXNzZXJ0TG9nc0NvbnRleHQoc2VsZiwgbG9nZ2VyLCBsZXZlbCwgbm9fbG9ncz1UcnVlKQoKICAgIGRlZiBfZ2V0QXNzZXJ0RXF1YWxpdHlGdW5jKHNlbGYsIGZpcnN0LCBzZWNvbmQpOgogICAgICAgICIiIkdldCBhIGRldGFpbGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHRoZSB0eXBlcyBvZiB0aGUgdHdvIGFyZ3MuCgogICAgICAgIFJldHVybnM6IEEgY2FsbGFibGUgYWNjZXB0aW5nIChmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkgdGhhdCB3aWxsCiAgICAgICAgcmFpc2UgYSBmYWlsdXJlIGV4Y2VwdGlvbiBpZiBmaXJzdCAhPSBzZWNvbmQgd2l0aCBhIHVzZWZ1bCBodW1hbgogICAgICAgIHJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgZm9yIHRob3NlIHR5cGVzLgogICAgICAgICIiIgogICAgICAgICMKICAgICAgICAjIE5PVEUoZ3JlZ29yeS5wLnNtaXRoKTogSSBjb25zaWRlcmVkIGlzaW5zdGFuY2UoZmlyc3QsIHR5cGUoc2Vjb25kKSkKICAgICAgICAjIGFuZCB2aWNlIHZlcnNhLiAgSSBvcHRlZCBmb3IgdGhlIGNvbnNlcnZhdGl2ZSBhcHByb2FjaCBpbiBjYXNlCiAgICAgICAgIyBzdWJjbGFzc2VzIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY29tcGFyZWQgaW4gZGV0YWlsIHRvIHRoZWlyIHN1cGVyCiAgICAgICAgIyBjbGFzcyBpbnN0YW5jZXMgdXNpbmcgYSB0eXBlIGVxdWFsaXR5IGZ1bmMuICBUaGlzIG1lYW5zIHRlc3RpbmcKICAgICAgICAjIHN1YnR5cGVzIHdvbid0IGF1dG9tYWdpY2FsbHkgdXNlIHRoZSBkZXRhaWxlZCBjb21wYXJpc29uLiAgQ2FsbGVycwogICAgICAgICMgc2hvdWxkIHVzZSB0aGVpciB0eXBlIHNwZWNpZmljIGFzc2VydFNwYW1FcXVhbCBtZXRob2QgdG8gY29tcGFyZQogICAgICAgICMgc3ViY2xhc3NlcyBpZiB0aGUgZGV0YWlsZWQgY29tcGFyaXNvbiBpcyBkZXNpcmVkIGFuZCBhcHByb3ByaWF0ZS4KICAgICAgICAjIFNlZSB0aGUgZGlzY3Vzc2lvbiBpbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjU3OC4KICAgICAgICAjCiAgICAgICAgaWYgdHlwZShmaXJzdCkgaXMgdHlwZShzZWNvbmQpOgogICAgICAgICAgICBhc3NlcnRlciA9IHNlbGYuX3R5cGVfZXF1YWxpdHlfZnVuY3MuZ2V0KHR5cGUoZmlyc3QpKQogICAgICAgICAgICBpZiBhc3NlcnRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXNzZXJ0ZXIsIHN0cik6CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0ZXIgPSBnZXRhdHRyKHNlbGYsIGFzc2VydGVyKQogICAgICAgICAgICAgICAgcmV0dXJuIGFzc2VydGVyCgogICAgICAgIHJldHVybiBzZWxmLl9iYXNlQXNzZXJ0RXF1YWwKCiAgICBkZWYgX2Jhc2VBc3NlcnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiVGhlIGRlZmF1bHQgYXNzZXJ0RXF1YWwgaW1wbGVtZW50YXRpb24sIG5vdCB0eXBlIHNwZWNpZmljLiIiIgogICAgICAgIGlmIG5vdCBmaXJzdCA9PSBzZWNvbmQ6CiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJyVzICE9ICVzJyAlIF9jb21tb25fc2hvcnRlbl9yZXByKGZpcnN0LCBzZWNvbmQpCiAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykKICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG1zZykKCiAgICBkZWYgYXNzZXJ0RXF1YWwoc2VsZiwgZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpOgogICAgICAgICIiIkZhaWwgaWYgdGhlIHR3byBvYmplY3RzIGFyZSB1bmVxdWFsIGFzIGRldGVybWluZWQgYnkgdGhlICc9PScKICAgICAgICAgICBvcGVyYXRvci4KICAgICAgICAiIiIKICAgICAgICBhc3NlcnRpb25fZnVuYyA9IHNlbGYuX2dldEFzc2VydEVxdWFsaXR5RnVuYyhmaXJzdCwgc2Vjb25kKQogICAgICAgIGFzc2VydGlvbl9mdW5jKGZpcnN0LCBzZWNvbmQsIG1zZz1tc2cpCgogICAgZGVmIGFzc2VydE5vdEVxdWFsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIG1zZz1Ob25lKToKICAgICAgICAiIiJGYWlsIGlmIHRoZSB0d28gb2JqZWN0cyBhcmUgZXF1YWwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgJyE9JwogICAgICAgICAgIG9wZXJhdG9yLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBmaXJzdCAhPSBzZWNvbmQ6CiAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCAnJXMgPT0gJXMnICUgKHNhZmVfcmVwcihmaXJzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIoc2Vjb25kKSkpCiAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCgogICAgZGVmIGFzc2VydEFsbW9zdEVxdWFsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIHBsYWNlcz1Ob25lLCBtc2c9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YT1Ob25lKToKICAgICAgICAiIiJGYWlsIGlmIHRoZSB0d28gb2JqZWN0cyBhcmUgdW5lcXVhbCBhcyBkZXRlcm1pbmVkIGJ5IHRoZWlyCiAgICAgICAgICAgZGlmZmVyZW5jZSByb3VuZGVkIHRvIHRoZSBnaXZlbiBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMKICAgICAgICAgICAoZGVmYXVsdCA3KSBhbmQgY29tcGFyaW5nIHRvIHplcm8sIG9yIGJ5IGNvbXBhcmluZyB0aGF0IHRoZQogICAgICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG9iamVjdHMgaXMgbW9yZSB0aGFuIHRoZSBnaXZlbgogICAgICAgICAgIGRlbHRhLgoKICAgICAgICAgICBOb3RlIHRoYXQgZGVjaW1hbCBwbGFjZXMgKGZyb20gemVybykgYXJlIHVzdWFsbHkgbm90IHRoZSBzYW1lCiAgICAgICAgICAgYXMgc2lnbmlmaWNhbnQgZGlnaXRzIChtZWFzdXJlZCBmcm9tIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0KS4KCiAgICAgICAgICAgSWYgdGhlIHR3byBvYmplY3RzIGNvbXBhcmUgZXF1YWwgdGhlbiB0aGV5IHdpbGwgYXV0b21hdGljYWxseQogICAgICAgICAgIGNvbXBhcmUgYWxtb3N0IGVxdWFsLgogICAgICAgICIiIgogICAgICAgIGlmIGZpcnN0ID09IHNlY29uZDoKICAgICAgICAgICAgIyBzaG9ydGN1dAogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBkZWx0YSBpcyBub3QgTm9uZSBhbmQgcGxhY2VzIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInNwZWNpZnkgZGVsdGEgb3IgcGxhY2VzIG5vdCBib3RoIikKCiAgICAgICAgZGlmZiA9IGFicyhmaXJzdCAtIHNlY29uZCkKICAgICAgICBpZiBkZWx0YSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgZGlmZiA8PSBkZWx0YToKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnJXMgIT0gJXMgd2l0aGluICVzIGRlbHRhICglcyBkaWZmZXJlbmNlKScgJSAoCiAgICAgICAgICAgICAgICBzYWZlX3JlcHIoZmlyc3QpLAogICAgICAgICAgICAgICAgc2FmZV9yZXByKHNlY29uZCksCiAgICAgICAgICAgICAgICBzYWZlX3JlcHIoZGVsdGEpLAogICAgICAgICAgICAgICAgc2FmZV9yZXByKGRpZmYpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHBsYWNlcyBpcyBOb25lOgogICAgICAgICAgICAgICAgcGxhY2VzID0gNwoKICAgICAgICAgICAgaWYgcm91bmQoZGlmZiwgcGxhY2VzKSA9PSAwOgogICAgICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICclcyAhPSAlcyB3aXRoaW4gJXIgcGxhY2VzICglcyBkaWZmZXJlbmNlKScgJSAoCiAgICAgICAgICAgICAgICBzYWZlX3JlcHIoZmlyc3QpLAogICAgICAgICAgICAgICAgc2FmZV9yZXByKHNlY29uZCksCiAgICAgICAgICAgICAgICBwbGFjZXMsCiAgICAgICAgICAgICAgICBzYWZlX3JlcHIoZGlmZikpCiAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKQogICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCgogICAgZGVmIGFzc2VydE5vdEFsbW9zdEVxdWFsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIHBsYWNlcz1Ob25lLCBtc2c9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YT1Ob25lKToKICAgICAgICAiIiJGYWlsIGlmIHRoZSB0d28gb2JqZWN0cyBhcmUgZXF1YWwgYXMgZGV0ZXJtaW5lZCBieSB0aGVpcgogICAgICAgICAgIGRpZmZlcmVuY2Ugcm91bmRlZCB0byB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzCiAgICAgICAgICAgKGRlZmF1bHQgNykgYW5kIGNvbXBhcmluZyB0byB6ZXJvLCBvciBieSBjb21wYXJpbmcgdGhhdCB0aGUKICAgICAgICAgICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBvYmplY3RzIGlzIGxlc3MgdGhhbiB0aGUgZ2l2ZW4gZGVsdGEuCgogICAgICAgICAgIE5vdGUgdGhhdCBkZWNpbWFsIHBsYWNlcyAoZnJvbSB6ZXJvKSBhcmUgdXN1YWxseSBub3QgdGhlIHNhbWUKICAgICAgICAgICBhcyBzaWduaWZpY2FudCBkaWdpdHMgKG1lYXN1cmVkIGZyb20gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQpLgoKICAgICAgICAgICBPYmplY3RzIHRoYXQgYXJlIGVxdWFsIGF1dG9tYXRpY2FsbHkgZmFpbC4KICAgICAgICAiIiIKICAgICAgICBpZiBkZWx0YSBpcyBub3QgTm9uZSBhbmQgcGxhY2VzIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInNwZWNpZnkgZGVsdGEgb3IgcGxhY2VzIG5vdCBib3RoIikKICAgICAgICBkaWZmID0gYWJzKGZpcnN0IC0gc2Vjb25kKQogICAgICAgIGlmIGRlbHRhIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBub3QgKGZpcnN0ID09IHNlY29uZCkgYW5kIGRpZmYgPiBkZWx0YToKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICclcyA9PSAlcyB3aXRoaW4gJXMgZGVsdGEgKCVzIGRpZmZlcmVuY2UpJyAlICgKICAgICAgICAgICAgICAgIHNhZmVfcmVwcihmaXJzdCksCiAgICAgICAgICAgICAgICBzYWZlX3JlcHIoc2Vjb25kKSwKICAgICAgICAgICAgICAgIHNhZmVfcmVwcihkZWx0YSksCiAgICAgICAgICAgICAgICBzYWZlX3JlcHIoZGlmZikpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgcGxhY2VzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBwbGFjZXMgPSA3CiAgICAgICAgICAgIGlmIG5vdCAoZmlyc3QgPT0gc2Vjb25kKSBhbmQgcm91bmQoZGlmZiwgcGxhY2VzKSAhPSAwOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJyVzID09ICVzIHdpdGhpbiAlciBwbGFjZXMnICUgKHNhZmVfcmVwcihmaXJzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVfcmVwcihzZWNvbmQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZXMpCgogICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykKICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQoKICAgIGRlZiBhc3NlcnRTZXF1ZW5jZUVxdWFsKHNlbGYsIHNlcTEsIHNlcTIsIG1zZz1Ob25lLCBzZXFfdHlwZT1Ob25lKToKICAgICAgICAiIiJBbiBlcXVhbGl0eSBhc3NlcnRpb24gZm9yIG9yZGVyZWQgc2VxdWVuY2VzIChsaWtlIGxpc3RzIGFuZCB0dXBsZXMpLgoKICAgICAgICBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZnVuY3Rpb24sIGEgdmFsaWQgb3JkZXJlZCBzZXF1ZW5jZSB0eXBlIGlzIG9uZQogICAgICAgIHdoaWNoIGNhbiBiZSBpbmRleGVkLCBoYXMgYSBsZW5ndGgsIGFuZCBoYXMgYW4gZXF1YWxpdHkgb3BlcmF0b3IuCgogICAgICAgIEFyZ3M6CiAgICAgICAgICAgIHNlcTE6IFRoZSBmaXJzdCBzZXF1ZW5jZSB0byBjb21wYXJlLgogICAgICAgICAgICBzZXEyOiBUaGUgc2Vjb25kIHNlcXVlbmNlIHRvIGNvbXBhcmUuCiAgICAgICAgICAgIHNlcV90eXBlOiBUaGUgZXhwZWN0ZWQgZGF0YXR5cGUgb2YgdGhlIHNlcXVlbmNlcywgb3IgTm9uZSBpZiBubwogICAgICAgICAgICAgICAgICAgIGRhdGF0eXBlIHNob3VsZCBiZSBlbmZvcmNlZC4KICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHRvIHVzZSBvbiBmYWlsdXJlIGluc3RlYWQgb2YgYSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VxX3R5cGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlcV90eXBlX25hbWUgPSBzZXFfdHlwZS5fX25hbWVfXwogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZXExLCBzZXFfdHlwZSk6CiAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oJ0ZpcnN0IHNlcXVlbmNlIGlzIG5vdCBhICVzOiAlcycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlcV90eXBlX25hbWUsIHNhZmVfcmVwcihzZXExKSkpCiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlcTIsIHNlcV90eXBlKToKICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbignU2Vjb25kIHNlcXVlbmNlIGlzIG5vdCBhICVzOiAlcycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlcV90eXBlX25hbWUsIHNhZmVfcmVwcihzZXEyKSkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VxX3R5cGVfbmFtZSA9ICJzZXF1ZW5jZSIKCiAgICAgICAgZGlmZmVyaW5nID0gTm9uZQogICAgICAgIHRyeToKICAgICAgICAgICAgbGVuMSA9IGxlbihzZXExKQogICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yKToKICAgICAgICAgICAgZGlmZmVyaW5nID0gJ0ZpcnN0ICVzIGhhcyBubyBsZW5ndGguICAgIE5vbi1zZXF1ZW5jZT8nICUgKAogICAgICAgICAgICAgICAgICAgIHNlcV90eXBlX25hbWUpCgogICAgICAgIGlmIGRpZmZlcmluZyBpcyBOb25lOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsZW4yID0gbGVuKHNlcTIpCiAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yKToKICAgICAgICAgICAgICAgIGRpZmZlcmluZyA9ICdTZWNvbmQgJXMgaGFzIG5vIGxlbmd0aC4gICAgTm9uLXNlcXVlbmNlPycgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcV90eXBlX25hbWUpCgogICAgICAgIGlmIGRpZmZlcmluZyBpcyBOb25lOgogICAgICAgICAgICBpZiBzZXExID09IHNlcTI6CiAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgIGRpZmZlcmluZyA9ICclc3MgZGlmZmVyOiAlcyAhPSAlc1xuJyAlICgKICAgICAgICAgICAgICAgICAgICAoc2VxX3R5cGVfbmFtZS5jYXBpdGFsaXplKCksKSArCiAgICAgICAgICAgICAgICAgICAgX2NvbW1vbl9zaG9ydGVuX3JlcHIoc2VxMSwgc2VxMikpCgogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShtaW4obGVuMSwgbGVuMikpOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGl0ZW0xID0gc2VxMVtpXQogICAgICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIEluZGV4RXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpOgogICAgICAgICAgICAgICAgICAgIGRpZmZlcmluZyArPSAoJ1xuVW5hYmxlIHRvIGluZGV4IGVsZW1lbnQgJWQgb2YgZmlyc3QgJXNcbicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSwgc2VxX3R5cGVfbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaXRlbTIgPSBzZXEyW2ldCiAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgSW5kZXhFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgZGlmZmVyaW5nICs9ICgnXG5VbmFibGUgdG8gaW5kZXggZWxlbWVudCAlZCBvZiBzZWNvbmQgJXNcbicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSwgc2VxX3R5cGVfbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgICAgICBpZiBpdGVtMSAhPSBpdGVtMjoKICAgICAgICAgICAgICAgICAgICBkaWZmZXJpbmcgKz0gKCdcbkZpcnN0IGRpZmZlcmluZyBlbGVtZW50ICVkOlxuJXNcbiVzXG4nICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChpLCkgKyBfY29tbW9uX3Nob3J0ZW5fcmVwcihpdGVtMSwgaXRlbTIpKSkKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgKGxlbjEgPT0gbGVuMiBhbmQgc2VxX3R5cGUgaXMgTm9uZSBhbmQKICAgICAgICAgICAgICAgICAgICB0eXBlKHNlcTEpICE9IHR5cGUoc2VxMikpOgogICAgICAgICAgICAgICAgICAgICMgVGhlIHNlcXVlbmNlcyBhcmUgdGhlIHNhbWUsIGJ1dCBoYXZlIGRpZmZlcmluZyB0eXBlcy4KICAgICAgICAgICAgICAgICAgICByZXR1cm4KCiAgICAgICAgICAgIGlmIGxlbjEgPiBsZW4yOgogICAgICAgICAgICAgICAgZGlmZmVyaW5nICs9ICgnXG5GaXJzdCAlcyBjb250YWlucyAlZCBhZGRpdGlvbmFsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxlbWVudHMuXG4nICUgKHNlcV90eXBlX25hbWUsIGxlbjEgLSBsZW4yKSkKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBkaWZmZXJpbmcgKz0gKCdGaXJzdCBleHRyYSBlbGVtZW50ICVkOlxuJXNcbicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbjIsIHNhZmVfcmVwcihzZXExW2xlbjJdKSkpCiAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgSW5kZXhFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgZGlmZmVyaW5nICs9ICgnVW5hYmxlIHRvIGluZGV4IGVsZW1lbnQgJWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29mIGZpcnN0ICVzXG4nICUgKGxlbjIsIHNlcV90eXBlX25hbWUpKQogICAgICAgICAgICBlbGlmIGxlbjEgPCBsZW4yOgogICAgICAgICAgICAgICAgZGlmZmVyaW5nICs9ICgnXG5TZWNvbmQgJXMgY29udGFpbnMgJWQgYWRkaXRpb25hbCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsZW1lbnRzLlxuJyAlIChzZXFfdHlwZV9uYW1lLCBsZW4yIC0gbGVuMSkpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgZGlmZmVyaW5nICs9ICgnRmlyc3QgZXh0cmEgZWxlbWVudCAlZDpcbiVzXG4nICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4xLCBzYWZlX3JlcHIoc2VxMltsZW4xXSkpKQogICAgICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIEluZGV4RXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpOgogICAgICAgICAgICAgICAgICAgIGRpZmZlcmluZyArPSAoJ1VuYWJsZSB0byBpbmRleCBlbGVtZW50ICVkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBzZWNvbmQgJXNcbicgJSAobGVuMSwgc2VxX3R5cGVfbmFtZSkpCiAgICAgICAgc3RhbmRhcmRNc2cgPSBkaWZmZXJpbmcKICAgICAgICBkaWZmTXNnID0gJ1xuJyArICdcbicuam9pbigKICAgICAgICAgICAgZGlmZmxpYi5uZGlmZihwcHJpbnQucGZvcm1hdChzZXExKS5zcGxpdGxpbmVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHByaW50LnBmb3JtYXQoc2VxMikuc3BsaXRsaW5lcygpKSkKCiAgICAgICAgc3RhbmRhcmRNc2cgPSBzZWxmLl90cnVuY2F0ZU1lc3NhZ2Uoc3RhbmRhcmRNc2csIGRpZmZNc2cpCiAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKQogICAgICAgIHNlbGYuZmFpbChtc2cpCgogICAgZGVmIF90cnVuY2F0ZU1lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZGlmZik6CiAgICAgICAgbWF4X2RpZmYgPSBzZWxmLm1heERpZmYKICAgICAgICBpZiBtYXhfZGlmZiBpcyBOb25lIG9yIGxlbihkaWZmKSA8PSBtYXhfZGlmZjoKICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UgKyBkaWZmCiAgICAgICAgcmV0dXJuIG1lc3NhZ2UgKyAoRElGRl9PTUlUVEVEICUgbGVuKGRpZmYpKQoKICAgIGRlZiBhc3NlcnRMaXN0RXF1YWwoc2VsZiwgbGlzdDEsIGxpc3QyLCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiQSBsaXN0LXNwZWNpZmljIGVxdWFsaXR5IGFzc2VydGlvbi4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgbGlzdDE6IFRoZSBmaXJzdCBsaXN0IHRvIGNvbXBhcmUuCiAgICAgICAgICAgIGxpc3QyOiBUaGUgc2Vjb25kIGxpc3QgdG8gY29tcGFyZS4KICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHRvIHVzZSBvbiBmYWlsdXJlIGluc3RlYWQgb2YgYSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMuCgogICAgICAgICIiIgogICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChsaXN0MSwgbGlzdDIsIG1zZywgc2VxX3R5cGU9bGlzdCkKCiAgICBkZWYgYXNzZXJ0VHVwbGVFcXVhbChzZWxmLCB0dXBsZTEsIHR1cGxlMiwgbXNnPU5vbmUpOgogICAgICAgICIiIkEgdHVwbGUtc3BlY2lmaWMgZXF1YWxpdHkgYXNzZXJ0aW9uLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICB0dXBsZTE6IFRoZSBmaXJzdCB0dXBsZSB0byBjb21wYXJlLgogICAgICAgICAgICB0dXBsZTI6IFRoZSBzZWNvbmQgdHVwbGUgdG8gY29tcGFyZS4KICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHRvIHVzZSBvbiBmYWlsdXJlIGluc3RlYWQgb2YgYSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5hc3NlcnRTZXF1ZW5jZUVxdWFsKHR1cGxlMSwgdHVwbGUyLCBtc2csIHNlcV90eXBlPXR1cGxlKQoKICAgIGRlZiBhc3NlcnRTZXRFcXVhbChzZWxmLCBzZXQxLCBzZXQyLCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiQSBzZXQtc3BlY2lmaWMgZXF1YWxpdHkgYXNzZXJ0aW9uLgoKICAgICAgICBBcmdzOgogICAgICAgICAgICBzZXQxOiBUaGUgZmlyc3Qgc2V0IHRvIGNvbXBhcmUuCiAgICAgICAgICAgIHNldDI6IFRoZSBzZWNvbmQgc2V0IHRvIGNvbXBhcmUuCiAgICAgICAgICAgIG1zZzogT3B0aW9uYWwgbWVzc2FnZSB0byB1c2Ugb24gZmFpbHVyZSBpbnN0ZWFkIG9mIGEgbGlzdCBvZgogICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VzLgoKICAgICAgICBhc3NlcnRTZXRFcXVhbCB1c2VzIGR1Y2t0eXBpbmcgdG8gc3VwcG9ydCBkaWZmZXJlbnQgdHlwZXMgb2Ygc2V0cywgYW5kCiAgICAgICAgaXMgb3B0aW1pemVkIGZvciBzZXRzIHNwZWNpZmljYWxseSAocGFyYW1ldGVycyBtdXN0IHN1cHBvcnQgYQogICAgICAgIGRpZmZlcmVuY2UgbWV0aG9kKS4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRpZmZlcmVuY2UxID0gc2V0MS5kaWZmZXJlbmNlKHNldDIpCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgogICAgICAgICAgICBzZWxmLmZhaWwoJ2ludmFsaWQgdHlwZSB3aGVuIGF0dGVtcHRpbmcgc2V0IGRpZmZlcmVuY2U6ICVzJyAlIGUpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6CiAgICAgICAgICAgIHNlbGYuZmFpbCgnZmlyc3QgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCBzZXQgZGlmZmVyZW5jZTogJXMnICUgZSkKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBkaWZmZXJlbmNlMiA9IHNldDIuZGlmZmVyZW5jZShzZXQxKQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKICAgICAgICAgICAgc2VsZi5mYWlsKCdpbnZhbGlkIHR5cGUgd2hlbiBhdHRlbXB0aW5nIHNldCBkaWZmZXJlbmNlOiAlcycgJSBlKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgogICAgICAgICAgICBzZWxmLmZhaWwoJ3NlY29uZCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHNldCBkaWZmZXJlbmNlOiAlcycgJSBlKQoKICAgICAgICBpZiBub3QgKGRpZmZlcmVuY2UxIG9yIGRpZmZlcmVuY2UyKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGxpbmVzID0gW10KICAgICAgICBpZiBkaWZmZXJlbmNlMToKICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdJdGVtcyBpbiB0aGUgZmlyc3Qgc2V0IGJ1dCBub3QgdGhlIHNlY29uZDonKQogICAgICAgICAgICBmb3IgaXRlbSBpbiBkaWZmZXJlbmNlMToKICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChyZXByKGl0ZW0pKQogICAgICAgIGlmIGRpZmZlcmVuY2UyOgogICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ0l0ZW1zIGluIHRoZSBzZWNvbmQgc2V0IGJ1dCBub3QgdGhlIGZpcnN0OicpCiAgICAgICAgICAgIGZvciBpdGVtIGluIGRpZmZlcmVuY2UyOgogICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKHJlcHIoaXRlbSkpCgogICAgICAgIHN0YW5kYXJkTXNnID0gJ1xuJy5qb2luKGxpbmVzKQogICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQoKICAgIGRlZiBhc3NlcnRJbihzZWxmLCBtZW1iZXIsIGNvbnRhaW5lciwgbXNnPU5vbmUpOgogICAgICAgICIiIkp1c3QgbGlrZSBzZWxmLmFzc2VydFRydWUoYSBpbiBiKSwgYnV0IHdpdGggYSBuaWNlciBkZWZhdWx0IG1lc3NhZ2UuIiIiCiAgICAgICAgaWYgbWVtYmVyIG5vdCBpbiBjb250YWluZXI6CiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJyVzIG5vdCBmb3VuZCBpbiAlcycgJSAoc2FmZV9yZXByKG1lbWJlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZV9yZXByKGNvbnRhaW5lcikpCiAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQoKICAgIGRlZiBhc3NlcnROb3RJbihzZWxmLCBtZW1iZXIsIGNvbnRhaW5lciwgbXNnPU5vbmUpOgogICAgICAgICIiIkp1c3QgbGlrZSBzZWxmLmFzc2VydFRydWUoYSBub3QgaW4gYiksIGJ1dCB3aXRoIGEgbmljZXIgZGVmYXVsdCBtZXNzYWdlLiIiIgogICAgICAgIGlmIG1lbWJlciBpbiBjb250YWluZXI6CiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJyVzIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiAlcycgJSAoc2FmZV9yZXByKG1lbWJlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZV9yZXByKGNvbnRhaW5lcikpCiAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQoKICAgIGRlZiBhc3NlcnRJcyhzZWxmLCBleHByMSwgZXhwcjIsIG1zZz1Ob25lKToKICAgICAgICAiIiJKdXN0IGxpa2Ugc2VsZi5hc3NlcnRUcnVlKGEgaXMgYiksIGJ1dCB3aXRoIGEgbmljZXIgZGVmYXVsdCBtZXNzYWdlLiIiIgogICAgICAgIGlmIGV4cHIxIGlzIG5vdCBleHByMjoKICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnJXMgaXMgbm90ICVzJyAlIChzYWZlX3JlcHIoZXhwcjEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIoZXhwcjIpKQogICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKCiAgICBkZWYgYXNzZXJ0SXNOb3Qoc2VsZiwgZXhwcjEsIGV4cHIyLCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiSnVzdCBsaWtlIHNlbGYuYXNzZXJ0VHJ1ZShhIGlzIG5vdCBiKSwgYnV0IHdpdGggYSBuaWNlciBkZWZhdWx0IG1lc3NhZ2UuIiIiCiAgICAgICAgaWYgZXhwcjEgaXMgZXhwcjI6CiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJ3VuZXhwZWN0ZWRseSBpZGVudGljYWw6ICVzJyAlIChzYWZlX3JlcHIoZXhwcjEpLCkKICAgICAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCgogICAgZGVmIGFzc2VydERpY3RFcXVhbChzZWxmLCBkMSwgZDIsIG1zZz1Ob25lKToKICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZDEsIGRpY3QsICdGaXJzdCBhcmd1bWVudCBpcyBub3QgYSBkaWN0aW9uYXJ5JykKICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZDIsIGRpY3QsICdTZWNvbmQgYXJndW1lbnQgaXMgbm90IGEgZGljdGlvbmFyeScpCgogICAgICAgIGlmIGQxICE9IGQyOgogICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICclcyAhPSAlcycgJSBfY29tbW9uX3Nob3J0ZW5fcmVwcihkMSwgZDIpCiAgICAgICAgICAgIGRpZmYgPSAoJ1xuJyArICdcbicuam9pbihkaWZmbGliLm5kaWZmKAogICAgICAgICAgICAgICAgICAgICAgICAgICBwcHJpbnQucGZvcm1hdChkMSkuc3BsaXRsaW5lcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwcHJpbnQucGZvcm1hdChkMikuc3BsaXRsaW5lcygpKSkpCiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gc2VsZi5fdHJ1bmNhdGVNZXNzYWdlKHN0YW5kYXJkTXNnLCBkaWZmKQogICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKCiAgICBkZWYgYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0KHNlbGYsIHN1YnNldCwgZGljdGlvbmFyeSwgbXNnPU5vbmUpOgogICAgICAgICIiIkNoZWNrcyB3aGV0aGVyIGRpY3Rpb25hcnkgaXMgYSBzdXBlcnNldCBvZiBzdWJzZXQuIiIiCiAgICAgICAgd2FybmluZ3Mud2FybignYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0IGlzIGRlcHJlY2F0ZWQnLAogICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgIG1pc3NpbmcgPSBbXQogICAgICAgIG1pc21hdGNoZWQgPSBbXQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIHN1YnNldC5pdGVtcygpOgogICAgICAgICAgICBpZiBrZXkgbm90IGluIGRpY3Rpb25hcnk6CiAgICAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZChrZXkpCiAgICAgICAgICAgIGVsaWYgdmFsdWUgIT0gZGljdGlvbmFyeVtrZXldOgogICAgICAgICAgICAgICAgbWlzbWF0Y2hlZC5hcHBlbmQoJyVzLCBleHBlY3RlZDogJXMsIGFjdHVhbDogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYWZlX3JlcHIoa2V5KSwgc2FmZV9yZXByKHZhbHVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIoZGljdGlvbmFyeVtrZXldKSkpCgogICAgICAgIGlmIG5vdCAobWlzc2luZyBvciBtaXNtYXRjaGVkKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHN0YW5kYXJkTXNnID0gJycKICAgICAgICBpZiBtaXNzaW5nOgogICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICdNaXNzaW5nOiAlcycgJSAnLCcuam9pbihzYWZlX3JlcHIobSkgZm9yIG0gaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmcpCiAgICAgICAgaWYgbWlzbWF0Y2hlZDoKICAgICAgICAgICAgaWYgc3RhbmRhcmRNc2c6CiAgICAgICAgICAgICAgICBzdGFuZGFyZE1zZyArPSAnOyAnCiAgICAgICAgICAgIHN0YW5kYXJkTXNnICs9ICdNaXNtYXRjaGVkIHZhbHVlczogJXMnICUgJywnLmpvaW4obWlzbWF0Y2hlZCkKCiAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCgoKICAgIGRlZiBhc3NlcnRDb3VudEVxdWFsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIG1zZz1Ob25lKToKICAgICAgICAiIiJBc3NlcnRzIHRoYXQgdHdvIGl0ZXJhYmxlcyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzLCB0aGUgc2FtZSBudW1iZXIgb2YKICAgICAgICB0aW1lcywgd2l0aG91dCByZWdhcmQgdG8gb3JkZXIuCgogICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvdW50ZXIobGlzdChmaXJzdCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIobGlzdChzZWNvbmQpKSkKCiAgICAgICAgIEV4YW1wbGU6CiAgICAgICAgICAgIC0gWzAsIDEsIDFdIGFuZCBbMSwgMCwgMV0gY29tcGFyZSBlcXVhbC4KICAgICAgICAgICAgLSBbMCwgMCwgMV0gYW5kIFswLCAxXSBjb21wYXJlIHVuZXF1YWwuCgogICAgICAgICIiIgogICAgICAgIGZpcnN0X3NlcSwgc2Vjb25kX3NlcSA9IGxpc3QoZmlyc3QpLCBsaXN0KHNlY29uZCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZpcnN0ID0gY29sbGVjdGlvbnMuQ291bnRlcihmaXJzdF9zZXEpCiAgICAgICAgICAgIHNlY29uZCA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoc2Vjb25kX3NlcSkKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAjIEhhbmRsZSBjYXNlIHdpdGggdW5oYXNoYWJsZSBlbGVtZW50cwogICAgICAgICAgICBkaWZmZXJlbmNlcyA9IF9jb3VudF9kaWZmX2FsbF9wdXJwb3NlKGZpcnN0X3NlcSwgc2Vjb25kX3NlcSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBmaXJzdCA9PSBzZWNvbmQ6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZGlmZmVyZW5jZXMgPSBfY291bnRfZGlmZl9oYXNoYWJsZShmaXJzdF9zZXEsIHNlY29uZF9zZXEpCgogICAgICAgIGlmIGRpZmZlcmVuY2VzOgogICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICdFbGVtZW50IGNvdW50cyB3ZXJlIG5vdCBlcXVhbDpcbicKICAgICAgICAgICAgbGluZXMgPSBbJ0ZpcnN0IGhhcyAlZCwgU2Vjb25kIGhhcyAlZDogICVyJyAlIGRpZmYgZm9yIGRpZmYgaW4gZGlmZmVyZW5jZXNdCiAgICAgICAgICAgIGRpZmZNc2cgPSAnXG4nLmpvaW4obGluZXMpCiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gc2VsZi5fdHJ1bmNhdGVNZXNzYWdlKHN0YW5kYXJkTXNnLCBkaWZmTXNnKQogICAgICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpCiAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCgogICAgZGVmIGFzc2VydE11bHRpTGluZUVxdWFsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIG1zZz1Ob25lKToKICAgICAgICAiIiJBc3NlcnQgdGhhdCB0d28gbXVsdGktbGluZSBzdHJpbmdzIGFyZSBlcXVhbC4iIiIKICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmlyc3QsIHN0ciwgJ0ZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIHN0cmluZycpCiAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY29uZCwgc3RyLCAnU2Vjb25kIGFyZ3VtZW50IGlzIG5vdCBhIHN0cmluZycpCgogICAgICAgIGlmIGZpcnN0ICE9IHNlY29uZDoKICAgICAgICAgICAgIyBkb24ndCB1c2UgZGlmZmxpYiBpZiB0aGUgc3RyaW5ncyBhcmUgdG9vIGxvbmcKICAgICAgICAgICAgaWYgKGxlbihmaXJzdCkgPiBzZWxmLl9kaWZmVGhyZXNob2xkIG9yCiAgICAgICAgICAgICAgICBsZW4oc2Vjb25kKSA+IHNlbGYuX2RpZmZUaHJlc2hvbGQpOgogICAgICAgICAgICAgICAgc2VsZi5fYmFzZUFzc2VydEVxdWFsKGZpcnN0LCBzZWNvbmQsIG1zZykKICAgICAgICAgICAgZmlyc3RsaW5lcyA9IGZpcnN0LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBzZWNvbmQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICBpZiBsZW4oZmlyc3RsaW5lcykgPT0gMSBhbmQgZmlyc3Quc3RyaXAoJ1xyXG4nKSA9PSBmaXJzdDoKICAgICAgICAgICAgICAgIGZpcnN0bGluZXMgPSBbZmlyc3QgKyAnXG4nXQogICAgICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBbc2Vjb25kICsgJ1xuJ10KICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnJXMgIT0gJXMnICUgX2NvbW1vbl9zaG9ydGVuX3JlcHIoZmlyc3QsIHNlY29uZCkKICAgICAgICAgICAgZGlmZiA9ICdcbicgKyAnJy5qb2luKGRpZmZsaWIubmRpZmYoZmlyc3RsaW5lcywgc2Vjb25kbGluZXMpKQogICAgICAgICAgICBzdGFuZGFyZE1zZyA9IHNlbGYuX3RydW5jYXRlTWVzc2FnZShzdGFuZGFyZE1zZywgZGlmZikKICAgICAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCgogICAgZGVmIGFzc2VydExlc3Moc2VsZiwgYSwgYiwgbXNnPU5vbmUpOgogICAgICAgICIiIkp1c3QgbGlrZSBzZWxmLmFzc2VydFRydWUoYSA8IGIpLCBidXQgd2l0aCBhIG5pY2VyIGRlZmF1bHQgbWVzc2FnZS4iIiIKICAgICAgICBpZiBub3QgYSA8IGI6CiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJyVzIG5vdCBsZXNzIHRoYW4gJXMnICUgKHNhZmVfcmVwcihhKSwgc2FmZV9yZXByKGIpKQogICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKCiAgICBkZWYgYXNzZXJ0TGVzc0VxdWFsKHNlbGYsIGEsIGIsIG1zZz1Ob25lKToKICAgICAgICAiIiJKdXN0IGxpa2Ugc2VsZi5hc3NlcnRUcnVlKGEgPD0gYiksIGJ1dCB3aXRoIGEgbmljZXIgZGVmYXVsdCBtZXNzYWdlLiIiIgogICAgICAgIGlmIG5vdCBhIDw9IGI6CiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJyVzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnICUgKHNhZmVfcmVwcihhKSwgc2FmZV9yZXByKGIpKQogICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKCiAgICBkZWYgYXNzZXJ0R3JlYXRlcihzZWxmLCBhLCBiLCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiSnVzdCBsaWtlIHNlbGYuYXNzZXJ0VHJ1ZShhID4gYiksIGJ1dCB3aXRoIGEgbmljZXIgZGVmYXVsdCBtZXNzYWdlLiIiIgogICAgICAgIGlmIG5vdCBhID4gYjoKICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnJXMgbm90IGdyZWF0ZXIgdGhhbiAlcycgJSAoc2FmZV9yZXByKGEpLCBzYWZlX3JlcHIoYikpCiAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQoKICAgIGRlZiBhc3NlcnRHcmVhdGVyRXF1YWwoc2VsZiwgYSwgYiwgbXNnPU5vbmUpOgogICAgICAgICIiIkp1c3QgbGlrZSBzZWxmLmFzc2VydFRydWUoYSA+PSBiKSwgYnV0IHdpdGggYSBuaWNlciBkZWZhdWx0IG1lc3NhZ2UuIiIiCiAgICAgICAgaWYgbm90IGEgPj0gYjoKICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnJXMgbm90IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycgJSAoc2FmZV9yZXByKGEpLCBzYWZlX3JlcHIoYikpCiAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQoKICAgIGRlZiBhc3NlcnRJc05vbmUoc2VsZiwgb2JqLCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiU2FtZSBhcyBzZWxmLmFzc2VydFRydWUob2JqIGlzIE5vbmUpLCB3aXRoIGEgbmljZXIgZGVmYXVsdCBtZXNzYWdlLiIiIgogICAgICAgIGlmIG9iaiBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnJXMgaXMgbm90IE5vbmUnICUgKHNhZmVfcmVwcihvYmopLCkKICAgICAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCgogICAgZGVmIGFzc2VydElzTm90Tm9uZShzZWxmLCBvYmosIG1zZz1Ob25lKToKICAgICAgICAiIiJJbmNsdWRlZCBmb3Igc3ltbWV0cnkgd2l0aCBhc3NlcnRJc05vbmUuIiIiCiAgICAgICAgaWYgb2JqIGlzIE5vbmU6CiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJ3VuZXhwZWN0ZWRseSBOb25lJwogICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKCiAgICBkZWYgYXNzZXJ0SXNJbnN0YW5jZShzZWxmLCBvYmosIGNscywgbXNnPU5vbmUpOgogICAgICAgICIiIlNhbWUgYXMgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uob2JqLCBjbHMpKSwgd2l0aCBhIG5pY2VyCiAgICAgICAgZGVmYXVsdCBtZXNzYWdlLiIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgY2xzKToKICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnJXMgaXMgbm90IGFuIGluc3RhbmNlIG9mICVyJyAlIChzYWZlX3JlcHIob2JqKSwgY2xzKQogICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKCiAgICBkZWYgYXNzZXJ0Tm90SXNJbnN0YW5jZShzZWxmLCBvYmosIGNscywgbXNnPU5vbmUpOgogICAgICAgICIiIkluY2x1ZGVkIGZvciBzeW1tZXRyeSB3aXRoIGFzc2VydElzSW5zdGFuY2UuIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIGNscyk6CiAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJyVzIGlzIGFuIGluc3RhbmNlIG9mICVyJyAlIChzYWZlX3JlcHIob2JqKSwgY2xzKQogICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKCiAgICBkZWYgYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZiwgZXhwZWN0ZWRfZXhjZXB0aW9uLCBleHBlY3RlZF9yZWdleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIkFzc2VydHMgdGhhdCB0aGUgbWVzc2FnZSBpbiBhIHJhaXNlZCBleGNlcHRpb24gbWF0Y2hlcyBhIHJlZ2V4LgoKICAgICAgICBBcmdzOgogICAgICAgICAgICBleHBlY3RlZF9leGNlcHRpb246IEV4Y2VwdGlvbiBjbGFzcyBleHBlY3RlZCB0byBiZSByYWlzZWQuCiAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUuUGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgICAgIGFyZ3M6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhbmQgZXh0cmEgcG9zaXRpb25hbCBhcmdzLgogICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHVzZWQgaW4gY2FzZSBvZiBmYWlsdXJlLiBDYW4gb25seSBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRSYWlzZXNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogICAgICAgICIiIgogICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleHBlY3RlZF9leGNlcHRpb24sIHNlbGYsIGV4cGVjdGVkX3JlZ2V4KQogICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzUmVnZXgnLCBhcmdzLCBrd2FyZ3MpCgogICAgZGVmIGFzc2VydFdhcm5zUmVnZXgoc2VsZiwgZXhwZWN0ZWRfd2FybmluZywgZXhwZWN0ZWRfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIkFzc2VydHMgdGhhdCB0aGUgbWVzc2FnZSBpbiBhIHRyaWdnZXJlZCB3YXJuaW5nIG1hdGNoZXMgYSByZWdleHAuCiAgICAgICAgQmFzaWMgZnVuY3Rpb25pbmcgaXMgc2ltaWxhciB0byBhc3NlcnRXYXJucygpIHdpdGggdGhlIGFkZGl0aW9uCiAgICAgICAgdGhhdCBvbmx5IHdhcm5pbmdzIHdob3NlIG1lc3NhZ2VzIGFsc28gbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbgogICAgICAgIGFyZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwgbWF0Y2hlcy4KCiAgICAgICAgQXJnczoKICAgICAgICAgICAgZXhwZWN0ZWRfd2FybmluZzogV2FybmluZyBjbGFzcyBleHBlY3RlZCB0byBiZSB0cmlnZ2VyZWQuCiAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUuUGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgICAgIGFyZ3M6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhbmQgZXh0cmEgcG9zaXRpb25hbCBhcmdzLgogICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHVzZWQgaW4gY2FzZSBvZiBmYWlsdXJlLiBDYW4gb25seSBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRXYXJuc1JlZ2V4IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAgICAgICAgIiIiCiAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgZXhwZWN0ZWRfcmVnZXgpCiAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJuc1JlZ2V4JywgYXJncywga3dhcmdzKQoKICAgIGRlZiBhc3NlcnRSZWdleChzZWxmLCB0ZXh0LCBleHBlY3RlZF9yZWdleCwgbXNnPU5vbmUpOgogICAgICAgICIiIkZhaWwgdGhlIHRlc3QgdW5sZXNzIHRoZSB0ZXh0IG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIiIKICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkX3JlZ2V4LCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICBhc3NlcnQgZXhwZWN0ZWRfcmVnZXgsICJleHBlY3RlZF9yZWdleCBtdXN0IG5vdCBiZSBlbXB0eS4iCiAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZShleHBlY3RlZF9yZWdleCkKICAgICAgICBpZiBub3QgZXhwZWN0ZWRfcmVnZXguc2VhcmNoKHRleHQpOgogICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICJSZWdleCBkaWRuJ3QgbWF0Y2g6ICVyIG5vdCBmb3VuZCBpbiAlciIgJSAoCiAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleC5wYXR0ZXJuLCB0ZXh0KQogICAgICAgICAgICAjIF9mb3JtYXRNZXNzYWdlIGVuc3VyZXMgdGhlIGxvbmdNZXNzYWdlIG9wdGlvbiBpcyByZXNwZWN0ZWQKICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKQogICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQoKICAgIGRlZiBhc3NlcnROb3RSZWdleChzZWxmLCB0ZXh0LCB1bmV4cGVjdGVkX3JlZ2V4LCBtc2c9Tm9uZSk6CiAgICAgICAgIiIiRmFpbCB0aGUgdGVzdCBpZiB0aGUgdGV4dCBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uIiIiCiAgICAgICAgaWYgaXNpbnN0YW5jZSh1bmV4cGVjdGVkX3JlZ2V4LCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICB1bmV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZSh1bmV4cGVjdGVkX3JlZ2V4KQogICAgICAgIG1hdGNoID0gdW5leHBlY3RlZF9yZWdleC5zZWFyY2godGV4dCkKICAgICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnUmVnZXggbWF0Y2hlZDogJXIgbWF0Y2hlcyAlciBpbiAlcicgJSAoCiAgICAgICAgICAgICAgICB0ZXh0W21hdGNoLnN0YXJ0KCkgOiBtYXRjaC5lbmQoKV0sCiAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sCiAgICAgICAgICAgICAgICB0ZXh0KQogICAgICAgICAgICAjIF9mb3JtYXRNZXNzYWdlIGVuc3VyZXMgdGhlIGxvbmdNZXNzYWdlIG9wdGlvbiBpcyByZXNwZWN0ZWQKICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKQogICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQoKCiAgICBkZWYgX2RlcHJlY2F0ZShvcmlnaW5hbF9mdW5jKToKICAgICAgICBkZWYgZGVwcmVjYXRlZF9mdW5jKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAgICAnUGxlYXNlIHVzZSB7MH0gaW5zdGVhZC4nLmZvcm1hdChvcmlnaW5hbF9mdW5jLl9fbmFtZV9fKSwKICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsX2Z1bmMoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIHJldHVybiBkZXByZWNhdGVkX2Z1bmMKCiAgICAjIHNlZSAjOTQyNAogICAgZmFpbFVubGVzc0VxdWFsID0gYXNzZXJ0RXF1YWxzID0gX2RlcHJlY2F0ZShhc3NlcnRFcXVhbCkKICAgIGZhaWxJZkVxdWFsID0gYXNzZXJ0Tm90RXF1YWxzID0gX2RlcHJlY2F0ZShhc3NlcnROb3RFcXVhbCkKICAgIGZhaWxVbmxlc3NBbG1vc3RFcXVhbCA9IGFzc2VydEFsbW9zdEVxdWFscyA9IF9kZXByZWNhdGUoYXNzZXJ0QWxtb3N0RXF1YWwpCiAgICBmYWlsSWZBbG1vc3RFcXVhbCA9IGFzc2VydE5vdEFsbW9zdEVxdWFscyA9IF9kZXByZWNhdGUoYXNzZXJ0Tm90QWxtb3N0RXF1YWwpCiAgICBmYWlsVW5sZXNzID0gYXNzZXJ0XyA9IF9kZXByZWNhdGUoYXNzZXJ0VHJ1ZSkKICAgIGZhaWxVbmxlc3NSYWlzZXMgPSBfZGVwcmVjYXRlKGFzc2VydFJhaXNlcykKICAgIGZhaWxJZiA9IF9kZXByZWNhdGUoYXNzZXJ0RmFsc2UpCiAgICBhc3NlcnRSYWlzZXNSZWdleHAgPSBfZGVwcmVjYXRlKGFzc2VydFJhaXNlc1JlZ2V4KQogICAgYXNzZXJ0UmVnZXhwTWF0Y2hlcyA9IF9kZXByZWNhdGUoYXNzZXJ0UmVnZXgpCiAgICBhc3NlcnROb3RSZWdleHBNYXRjaGVzID0gX2RlcHJlY2F0ZShhc3NlcnROb3RSZWdleCkKCgoKY2xhc3MgRnVuY3Rpb25UZXN0Q2FzZShUZXN0Q2FzZSk6CiAgICAiIiJBIHRlc3QgY2FzZSB0aGF0IHdyYXBzIGEgdGVzdCBmdW5jdGlvbi4KCiAgICBUaGlzIGlzIHVzZWZ1bCBmb3Igc2xpcHBpbmcgcHJlLWV4aXN0aW5nIHRlc3QgZnVuY3Rpb25zIGludG8gdGhlCiAgICB1bml0dGVzdCBmcmFtZXdvcmsuIE9wdGlvbmFsbHksIHNldC11cCBhbmQgdGlkeS11cCBmdW5jdGlvbnMgY2FuIGJlCiAgICBzdXBwbGllZC4gQXMgd2l0aCBUZXN0Q2FzZSwgdGhlIHRpZHktdXAgKCd0ZWFyRG93bicpIGZ1bmN0aW9uIHdpbGwKICAgIGFsd2F5cyBiZSBjYWxsZWQgaWYgdGhlIHNldC11cCAoJ3NldFVwJykgZnVuY3Rpb24gcmFuIHN1Y2Nlc3NmdWxseS4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0RnVuYywgc2V0VXA9Tm9uZSwgdGVhckRvd249Tm9uZSwgZGVzY3JpcHRpb249Tm9uZSk6CiAgICAgICAgc3VwZXIoRnVuY3Rpb25UZXN0Q2FzZSwgc2VsZikuX19pbml0X18oKQogICAgICAgIHNlbGYuX3NldFVwRnVuYyA9IHNldFVwCiAgICAgICAgc2VsZi5fdGVhckRvd25GdW5jID0gdGVhckRvd24KICAgICAgICBzZWxmLl90ZXN0RnVuYyA9IHRlc3RGdW5jCiAgICAgICAgc2VsZi5fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgoKICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICBpZiBzZWxmLl9zZXRVcEZ1bmMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3NldFVwRnVuYygpCgogICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3RlYXJEb3duRnVuYyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fdGVhckRvd25GdW5jKCkKCiAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICBzZWxmLl90ZXN0RnVuYygpCgogICAgZGVmIGlkKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl90ZXN0RnVuYy5fX25hbWVfXwoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CiAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAoKICAgICAgICByZXR1cm4gc2VsZi5fc2V0VXBGdW5jID09IG90aGVyLl9zZXRVcEZ1bmMgYW5kIFwKICAgICAgICAgICAgICAgc2VsZi5fdGVhckRvd25GdW5jID09IG90aGVyLl90ZWFyRG93bkZ1bmMgYW5kIFwKICAgICAgICAgICAgICAgc2VsZi5fdGVzdEZ1bmMgPT0gb3RoZXIuX3Rlc3RGdW5jIGFuZCBcCiAgICAgICAgICAgICAgIHNlbGYuX2Rlc2NyaXB0aW9uID09IG90aGVyLl9kZXNjcmlwdGlvbgoKICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICByZXR1cm4gaGFzaCgodHlwZShzZWxmKSwgc2VsZi5fc2V0VXBGdW5jLCBzZWxmLl90ZWFyRG93bkZ1bmMsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RGdW5jLCBzZWxmLl9kZXNjcmlwdGlvbikpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICIlcyAoJXMpIiAlIChzdHJjbGFzcyhzZWxmLl9fY2xhc3NfXyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0RnVuYy5fX25hbWVfXykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8JXMgdGVjPSVzPiIgJSAoc3RyY2xhc3Moc2VsZi5fX2NsYXNzX18pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdEZ1bmMpCgogICAgZGVmIHNob3J0RGVzY3JpcHRpb24oc2VsZik6CiAgICAgICAgaWYgc2VsZi5fZGVzY3JpcHRpb24gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9kZXNjcmlwdGlvbgogICAgICAgIGRvYyA9IHNlbGYuX3Rlc3RGdW5jLl9fZG9jX18KICAgICAgICByZXR1cm4gZG9jIGFuZCBkb2Muc3BsaXQoIlxuIilbMF0uc3RyaXAoKSBvciBOb25lCgoKY2xhc3MgX1N1YlRlc3QoVGVzdENhc2UpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X2Nhc2UsIG1lc3NhZ2UsIHBhcmFtcyk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5fbWVzc2FnZSA9IG1lc3NhZ2UKICAgICAgICBzZWxmLnRlc3RfY2FzZSA9IHRlc3RfY2FzZQogICAgICAgIHNlbGYucGFyYW1zID0gcGFyYW1zCiAgICAgICAgc2VsZi5mYWlsdXJlRXhjZXB0aW9uID0gdGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24KCiAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJ0ZXN0cyBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IikKCiAgICBkZWYgX3N1YkRlc2NyaXB0aW9uKHNlbGYpOgogICAgICAgIHBhcnRzID0gW10KICAgICAgICBpZiBzZWxmLl9tZXNzYWdlIGlzIG5vdCBfc3VidGVzdF9tc2dfc2VudGluZWw6CiAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgiW3t9XSIuZm9ybWF0KHNlbGYuX21lc3NhZ2UpKQogICAgICAgIGlmIHNlbGYucGFyYW1zOgogICAgICAgICAgICBwYXJhbXNfZGVzYyA9ICcsICcuam9pbigKICAgICAgICAgICAgICAgICJ7fT17IXJ9Ii5mb3JtYXQoaywgdikKICAgICAgICAgICAgICAgIGZvciAoaywgdikgaW4gc2VsZi5wYXJhbXMuaXRlbXMoKSkKICAgICAgICAgICAgcGFydHMuYXBwZW5kKCIoe30pIi5mb3JtYXQocGFyYW1zX2Rlc2MpKQogICAgICAgIHJldHVybiAiICIuam9pbihwYXJ0cykgb3IgJyg8c3VidGVzdD4pJwoKICAgIGRlZiBpZChzZWxmKToKICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50ZXN0X2Nhc2UuaWQoKSwgc2VsZi5fc3ViRGVzY3JpcHRpb24oKSkKCiAgICBkZWYgc2hvcnREZXNjcmlwdGlvbihzZWxmKToKICAgICAgICAiIiJSZXR1cm5zIGEgb25lLWxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIHN1YnRlc3QsIG9yIE5vbmUgaWYgbm8KICAgICAgICBkZXNjcmlwdGlvbiBoYXMgYmVlbiBwcm92aWRlZC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2Nhc2Uuc2hvcnREZXNjcmlwdGlvbigpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICJ7fSB7fSIuZm9ybWF0KHNlbGYudGVzdF9jYXNlLCBzZWxmLl9zdWJEZXNjcmlwdGlvbigpKQpQSwMEFAAAAAAAAyCjVh6XqwZeVgAAXlYAABIAAAB1bml0dGVzdC9sb2FkZXIucHkiIiJMb2FkaW5nIHVuaXR0ZXN0cy4iIiIKCmltcG9ydCBvcwppbXBvcnQgcmUKaW1wb3J0IHN5cwppbXBvcnQgdHJhY2ViYWNrCmltcG9ydCB0eXBlcwppbXBvcnQgZnVuY3Rvb2xzCmltcG9ydCB3YXJuaW5ncwoKZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoLCBmbm1hdGNoY2FzZQoKZnJvbSAuIGltcG9ydCBjYXNlLCBzdWl0ZSwgdXRpbAoKX191bml0dGVzdCA9IFRydWUKCiMgd2hhdCBhYm91dCAucHljIChldGMpCiMgd2Ugd291bGQgbmVlZCB0byBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIHRlc3RzIG11bHRpcGxlIHRpbWVzCiMgZnJvbSAnLnB5JywgKmFuZCogJy5weWMnClZBTElEX01PRFVMRV9OQU1FID0gcmUuY29tcGlsZShyJ1tfYS16XVx3KlwucHkkJywgcmUuSUdOT1JFQ0FTRSkKCgpjbGFzcyBfRmFpbGVkVGVzdChjYXNlLlRlc3RDYXNlKToKICAgIF90ZXN0TWV0aG9kTmFtZSA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kX25hbWUsIGV4Y2VwdGlvbik6CiAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gZXhjZXB0aW9uCiAgICAgICAgc3VwZXIoX0ZhaWxlZFRlc3QsIHNlbGYpLl9faW5pdF9fKG1ldGhvZF9uYW1lKQoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICBpZiBuYW1lICE9IHNlbGYuX3Rlc3RNZXRob2ROYW1lOgogICAgICAgICAgICByZXR1cm4gc3VwZXIoX0ZhaWxlZFRlc3QsIHNlbGYpLl9fZ2V0YXR0cl9fKG5hbWUpCiAgICAgICAgZGVmIHRlc3RGYWlsdXJlKCk6CiAgICAgICAgICAgIHJhaXNlIHNlbGYuX2V4Y2VwdGlvbgogICAgICAgIHJldHVybiB0ZXN0RmFpbHVyZQoKCmRlZiBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QobmFtZSwgc3VpdGVDbGFzcyk6CiAgICBtZXNzYWdlID0gJ0ZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6ICVzXG4lcycgJSAoCiAgICAgICAgbmFtZSwgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgIHJldHVybiBfbWFrZV9mYWlsZWRfdGVzdChuYW1lLCBJbXBvcnRFcnJvcihtZXNzYWdlKSwgc3VpdGVDbGFzcywgbWVzc2FnZSkKCmRlZiBfbWFrZV9mYWlsZWRfbG9hZF90ZXN0cyhuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MpOgogICAgbWVzc2FnZSA9ICdGYWlsZWQgdG8gY2FsbCBsb2FkX3Rlc3RzOlxuJXMnICUgKHRyYWNlYmFjay5mb3JtYXRfZXhjKCksKQogICAgcmV0dXJuIF9tYWtlX2ZhaWxlZF90ZXN0KAogICAgICAgIG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcywgbWVzc2FnZSkKCmRlZiBfbWFrZV9mYWlsZWRfdGVzdChtZXRob2RuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MsIG1lc3NhZ2UpOgogICAgdGVzdCA9IF9GYWlsZWRUZXN0KG1ldGhvZG5hbWUsIGV4Y2VwdGlvbikKICAgIHJldHVybiBzdWl0ZUNsYXNzKCh0ZXN0LCkpLCBtZXNzYWdlCgpkZWYgX21ha2Vfc2tpcHBlZF90ZXN0KG1ldGhvZG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcyk6CiAgICBAY2FzZS5za2lwKHN0cihleGNlcHRpb24pKQogICAgZGVmIHRlc3RTa2lwcGVkKHNlbGYpOgogICAgICAgIHBhc3MKICAgIGF0dHJzID0ge21ldGhvZG5hbWU6IHRlc3RTa2lwcGVkfQogICAgVGVzdENsYXNzID0gdHlwZSgiTW9kdWxlU2tpcHBlZCIsIChjYXNlLlRlc3RDYXNlLCksIGF0dHJzKQogICAgcmV0dXJuIHN1aXRlQ2xhc3MoKFRlc3RDbGFzcyhtZXRob2RuYW1lKSwpKQoKZGVmIF9qeXRob25fYXdhcmVfc3BsaXRleHQocGF0aCk6CiAgICBpZiBwYXRoLmxvd2VyKCkuZW5kc3dpdGgoJyRweS5jbGFzcycpOgogICAgICAgIHJldHVybiBwYXRoWzotOV0KICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpWzBdCgoKY2xhc3MgVGVzdExvYWRlcihvYmplY3QpOgogICAgIiIiCiAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIHRlc3RzIGFjY29yZGluZyB0byB2YXJpb3VzIGNyaXRlcmlhCiAgICBhbmQgcmV0dXJuaW5nIHRoZW0gd3JhcHBlZCBpbiBhIFRlc3RTdWl0ZQogICAgIiIiCiAgICB0ZXN0TWV0aG9kUHJlZml4ID0gJ3Rlc3QnCiAgICBzb3J0VGVzdE1ldGhvZHNVc2luZyA9IHN0YXRpY21ldGhvZCh1dGlsLnRocmVlX3dheV9jbXApCiAgICB0ZXN0TmFtZVBhdHRlcm5zID0gTm9uZQogICAgc3VpdGVDbGFzcyA9IHN1aXRlLlRlc3RTdWl0ZQogICAgX3RvcF9sZXZlbF9kaXIgPSBOb25lCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHN1cGVyKFRlc3RMb2FkZXIsIHNlbGYpLl9faW5pdF9fKCkKICAgICAgICBzZWxmLmVycm9ycyA9IFtdCiAgICAgICAgIyBUcmFja3MgcGFja2FnZXMgd2hpY2ggd2UgaGF2ZSBjYWxsZWQgaW50byB2aWEgbG9hZF90ZXN0cywgdG8KICAgICAgICAjIGF2b2lkIGluZmluaXRlIHJlLWVudHJhbmN5LgogICAgICAgIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMgPSBzZXQoKQoKICAgIGRlZiBsb2FkVGVzdHNGcm9tVGVzdENhc2Uoc2VsZiwgdGVzdENhc2VDbGFzcyk6CiAgICAgICAgIiIiUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3QgY2FzZXMgY29udGFpbmVkIGluIHRlc3RDYXNlQ2xhc3MiIiIKICAgICAgICBpZiBpc3N1YmNsYXNzKHRlc3RDYXNlQ2xhc3MsIHN1aXRlLlRlc3RTdWl0ZSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVGVzdCBjYXNlcyBzaG91bGQgbm90IGJlIGRlcml2ZWQgZnJvbSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVzdFN1aXRlLiBNYXliZSB5b3UgbWVhbnQgdG8gZGVyaXZlIGZyb20gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3RDYXNlPyIpCiAgICAgICAgdGVzdENhc2VOYW1lcyA9IHNlbGYuZ2V0VGVzdENhc2VOYW1lcyh0ZXN0Q2FzZUNsYXNzKQogICAgICAgIGlmIG5vdCB0ZXN0Q2FzZU5hbWVzIGFuZCBoYXNhdHRyKHRlc3RDYXNlQ2xhc3MsICdydW5UZXN0Jyk6CiAgICAgICAgICAgIHRlc3RDYXNlTmFtZXMgPSBbJ3J1blRlc3QnXQogICAgICAgIGxvYWRlZF9zdWl0ZSA9IHNlbGYuc3VpdGVDbGFzcyhtYXAodGVzdENhc2VDbGFzcywgdGVzdENhc2VOYW1lcykpCiAgICAgICAgcmV0dXJuIGxvYWRlZF9zdWl0ZQoKICAgICMgWFhYIEFmdGVyIFB5dGhvbiAzLjUsIHJlbW92ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGhhY2tzIGZvcgogICAgIyB1c2VfbG9hZF90ZXN0cyBkZXByZWNhdGlvbiB2aWEgKmFyZ3MgYW5kICoqa3dzLiAgU2VlIGlzc3VlIDE2NjYyLgogICAgZGVmIGxvYWRUZXN0c0Zyb21Nb2R1bGUoc2VsZiwgbW9kdWxlLCAqYXJncywgcGF0dGVybj1Ob25lLCAqKmt3cyk6CiAgICAgICAgIiIiUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3QgY2FzZXMgY29udGFpbmVkIGluIHRoZSBnaXZlbiBtb2R1bGUiIiIKICAgICAgICAjIFRoaXMgbWV0aG9kIHVzZWQgdG8gdGFrZSBhbiB1bmRvY3VtZW50ZWQgYW5kIHVub2ZmaWNpYWwKICAgICAgICAjIHVzZV9sb2FkX3Rlc3RzIGFyZ3VtZW50LiAgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdlIHN0aWxsCiAgICAgICAgIyBhY2NlcHQgdGhlIGFyZ3VtZW50ICh3aGljaCBjYW4gYWxzbyBiZSB0aGUgZmlyc3QgcG9zaXRpb24pIGJ1dCB3ZQogICAgICAgICMgaWdub3JlIGl0IGFuZCBpc3N1ZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgaWYgaXQncyBwcmVzZW50LgogICAgICAgIGlmIGxlbihhcmdzKSA+IDAgb3IgJ3VzZV9sb2FkX3Rlc3RzJyBpbiBrd3M6CiAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3VzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAga3dzLnBvcCgndXNlX2xvYWRfdGVzdHMnLCBOb25lKQogICAgICAgIGlmIGxlbihhcmdzKSA+IDE6CiAgICAgICAgICAgICMgQ29tcGxhaW4gYWJvdXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMsIGJ1dCBkb24ndCBmb3JnZXQgdGhlCiAgICAgICAgICAgICMgcmVxdWlyZWQgYG1vZHVsZWAgYXJndW1lbnQuCiAgICAgICAgICAgIGNvbXBsYWludCA9IGxlbihhcmdzKSArIDEKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdsb2FkVGVzdHNGcm9tTW9kdWxlKCkgdGFrZXMgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IGJ1dCB7fSB3ZXJlIGdpdmVuJy5mb3JtYXQoY29tcGxhaW50KSkKICAgICAgICBpZiBsZW4oa3dzKSAhPSAwOgogICAgICAgICAgICAjIFNpbmNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgdW5zb3J0ZWQgKHNlZSBQRVAgNDY4KSwganVzdAogICAgICAgICAgICAjIHBpY2sgdGhlIGFscGhhYmV0aWNhbGx5IHNvcnRlZCBmaXJzdCBhcmd1bWVudCB0byBjb21wbGFpbiBhYm91dCwKICAgICAgICAgICAgIyBpZiBtdWx0aXBsZSB3ZXJlIGdpdmVuLiAgQXQgbGVhc3QgdGhlIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZQogICAgICAgICAgICAjIHByZWRpY3RhYmxlLgogICAgICAgICAgICBjb21wbGFpbnQgPSBzb3J0ZWQoa3dzKVswXQogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImxvYWRUZXN0c0Zyb21Nb2R1bGUoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICd7fSciLmZvcm1hdChjb21wbGFpbnQpKQogICAgICAgIHRlc3RzID0gW10KICAgICAgICBmb3IgbmFtZSBpbiBkaXIobW9kdWxlKToKICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihtb2R1bGUsIG5hbWUpCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhvYmosIGNhc2UuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKHNlbGYubG9hZFRlc3RzRnJvbVRlc3RDYXNlKG9iaikpCgogICAgICAgIGxvYWRfdGVzdHMgPSBnZXRhdHRyKG1vZHVsZSwgJ2xvYWRfdGVzdHMnLCBOb25lKQogICAgICAgIHRlc3RzID0gc2VsZi5zdWl0ZUNsYXNzKHRlc3RzKQogICAgICAgIGlmIGxvYWRfdGVzdHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBsb2FkX3Rlc3RzKHNlbGYsIHRlc3RzLCBwYXR0ZXJuKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gX21ha2VfZmFpbGVkX2xvYWRfdGVzdHMoCiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fbmFtZV9fLCBlLCBzZWxmLnN1aXRlQ2xhc3MpCiAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlCiAgICAgICAgcmV0dXJuIHRlc3RzCgogICAgZGVmIGxvYWRUZXN0c0Zyb21OYW1lKHNlbGYsIG5hbWUsIG1vZHVsZT1Ob25lKToKICAgICAgICAiIiJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdCBjYXNlcyBnaXZlbiBhIHN0cmluZyBzcGVjaWZpZXIuCgogICAgICAgIFRoZSBuYW1lIG1heSByZXNvbHZlIGVpdGhlciB0byBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEKICAgICAgICB0ZXN0IG1ldGhvZCB3aXRoaW4gYSB0ZXN0IGNhc2UgY2xhc3MsIG9yIGEgY2FsbGFibGUgb2JqZWN0IHdoaWNoCiAgICAgICAgcmV0dXJucyBhIFRlc3RDYXNlIG9yIFRlc3RTdWl0ZSBpbnN0YW5jZS4KCiAgICAgICAgVGhlIG1ldGhvZCBvcHRpb25hbGx5IHJlc29sdmVzIHRoZSBuYW1lcyByZWxhdGl2ZSB0byBhIGdpdmVuIG1vZHVsZS4KICAgICAgICAiIiIKICAgICAgICBwYXJ0cyA9IG5hbWUuc3BsaXQoJy4nKQogICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBOb25lLCBOb25lCiAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgIHBhcnRzX2NvcHkgPSBwYXJ0c1s6XQogICAgICAgICAgICB3aGlsZSBwYXJ0c19jb3B5OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gJy4nLmpvaW4ocGFydHNfY29weSkKICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG1vZHVsZV9uYW1lKQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUgPSBwYXJ0c19jb3B5LnBvcCgpCiAgICAgICAgICAgICAgICAgICAgIyBMYXN0IGVycm9yIHNvIHdlIGNhbiBnaXZlIGl0IHRvIHRoZSB1c2VyIGlmIG5lZWRlZC4KICAgICAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gX21ha2VfZmFpbGVkX2ltcG9ydF90ZXN0KAogICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2F0dHJpYnV0ZSwgc2VsZi5zdWl0ZUNsYXNzKQogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJ0c19jb3B5OgogICAgICAgICAgICAgICAgICAgICAgICAjIEV2ZW4gdGhlIHRvcCBsZXZlbCBpbXBvcnQgZmFpbGVkOiByZXBvcnQgdGhhdCBlcnJvci4KICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlCiAgICAgICAgICAgIHBhcnRzID0gcGFydHNbMTpdCiAgICAgICAgb2JqID0gbW9kdWxlCiAgICAgICAgZm9yIHBhcnQgaW4gcGFydHM6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHBhcmVudCwgb2JqID0gb2JqLCBnZXRhdHRyKG9iaiwgcGFydCkKICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAjIFdlIGNhbid0IHRyYXZlcnNlIHNvbWUgcGFydCBvZiB0aGUgbmFtZS4KICAgICAgICAgICAgICAgIGlmIChnZXRhdHRyKG9iaiwgJ19fcGF0aF9fJywgTm9uZSkgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgICAgICBhbmQgZXJyb3JfY2FzZSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgcGFja2FnZSAobm8gX19wYXRoX18gcGVyIGltcG9ydGxpYiBkb2NzKSwgYW5kIHdlCiAgICAgICAgICAgICAgICAgICAgIyBlbmNvdW50ZXJlZCBhbiBlcnJvciBpbXBvcnRpbmcgc29tZXRoaW5nLiBXZSBjYW5ub3QgdGVsbAogICAgICAgICAgICAgICAgICAgICMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwYWNrYWdlLldyb25nTmFtZVRlc3RDbGFzcyBhbmQKICAgICAgICAgICAgICAgICAgICAjIHBhY2thZ2Uud3JvbmdfbW9kdWxlX25hbWUgc28gd2UganVzdCByZXBvcnQgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBJbXBvcnRFcnJvciAtIGl0IGlzIG1vcmUgaW5mb3JtYXRpdmUuCiAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBPdGhlcndpc2UsIHdlIHNpZ25hbCB0aGF0IGFuIEF0dHJpYnV0ZUVycm9yIGhhcyBvY2N1cnJlZC4KICAgICAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gX21ha2VfZmFpbGVkX3Rlc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQsIGUsIHNlbGYuc3VpdGVDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBhY2Nlc3MgYXR0cmlidXRlOlxuJXMnICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSwpKQogICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlCgogICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Nb2R1bGVUeXBlKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9hZFRlc3RzRnJvbU1vZHVsZShvYmopCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgdHlwZSkgYW5kIGlzc3ViY2xhc3Mob2JqLCBjYXNlLlRlc3RDYXNlKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9hZFRlc3RzRnJvbVRlc3RDYXNlKG9iaikKICAgICAgICBlbGlmIChpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKSBhbmQKICAgICAgICAgICAgICBpc2luc3RhbmNlKHBhcmVudCwgdHlwZSkgYW5kCiAgICAgICAgICAgICAgaXNzdWJjbGFzcyhwYXJlbnQsIGNhc2UuVGVzdENhc2UpKToKICAgICAgICAgICAgbmFtZSA9IHBhcnRzWy0xXQogICAgICAgICAgICBpbnN0ID0gcGFyZW50KG5hbWUpCiAgICAgICAgICAgICMgc3RhdGljIG1ldGhvZHMgZm9sbG93IGEgZGlmZmVyZW50IHBhdGgKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZ2V0YXR0cihpbnN0LCBuYW1lKSwgdHlwZXMuRnVuY3Rpb25UeXBlKToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnN1aXRlQ2xhc3MoW2luc3RdKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHN1aXRlLlRlc3RTdWl0ZSk6CiAgICAgICAgICAgIHJldHVybiBvYmoKICAgICAgICBpZiBjYWxsYWJsZShvYmopOgogICAgICAgICAgICB0ZXN0ID0gb2JqKCkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXN0LCBzdWl0ZS5UZXN0U3VpdGUpOgogICAgICAgICAgICAgICAgcmV0dXJuIHRlc3QKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHRlc3QsIGNhc2UuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3VpdGVDbGFzcyhbdGVzdF0pCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbGxpbmcgJXMgcmV0dXJuZWQgJXMsIG5vdCBhIHRlc3QiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqLCB0ZXN0KSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRvbid0IGtub3cgaG93IHRvIG1ha2UgdGVzdCBmcm9tOiAlcyIgJSBvYmopCgogICAgZGVmIGxvYWRUZXN0c0Zyb21OYW1lcyhzZWxmLCBuYW1lcywgbW9kdWxlPU5vbmUpOgogICAgICAgICIiIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0IGNhc2VzIGZvdW5kIHVzaW5nIHRoZSBnaXZlbiBzZXF1ZW5jZQogICAgICAgIG9mIHN0cmluZyBzcGVjaWZpZXJzLiBTZWUgJ2xvYWRUZXN0c0Zyb21OYW1lKCknLgogICAgICAgICIiIgogICAgICAgIHN1aXRlcyA9IFtzZWxmLmxvYWRUZXN0c0Zyb21OYW1lKG5hbWUsIG1vZHVsZSkgZm9yIG5hbWUgaW4gbmFtZXNdCiAgICAgICAgcmV0dXJuIHNlbGYuc3VpdGVDbGFzcyhzdWl0ZXMpCgogICAgZGVmIGdldFRlc3RDYXNlTmFtZXMoc2VsZiwgdGVzdENhc2VDbGFzcyk6CiAgICAgICAgIiIiUmV0dXJuIGEgc29ydGVkIHNlcXVlbmNlIG9mIG1ldGhvZCBuYW1lcyBmb3VuZCB3aXRoaW4gdGVzdENhc2VDbGFzcwogICAgICAgICIiIgogICAgICAgIGRlZiBzaG91bGRJbmNsdWRlTWV0aG9kKGF0dHJuYW1lKToKICAgICAgICAgICAgaWYgbm90IGF0dHJuYW1lLnN0YXJ0c3dpdGgoc2VsZi50ZXN0TWV0aG9kUHJlZml4KToKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICB0ZXN0RnVuYyA9IGdldGF0dHIodGVzdENhc2VDbGFzcywgYXR0cm5hbWUpCiAgICAgICAgICAgIGlmIG5vdCBjYWxsYWJsZSh0ZXN0RnVuYyk6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgZnVsbE5hbWUgPSBmJyVzLiVzLiVzJyAlICgKICAgICAgICAgICAgICAgIHRlc3RDYXNlQ2xhc3MuX19tb2R1bGVfXywgdGVzdENhc2VDbGFzcy5fX3F1YWxuYW1lX18sIGF0dHJuYW1lCiAgICAgICAgICAgICkKICAgICAgICAgICAgcmV0dXJuIHNlbGYudGVzdE5hbWVQYXR0ZXJucyBpcyBOb25lIG9yIFwKICAgICAgICAgICAgICAgIGFueShmbm1hdGNoY2FzZShmdWxsTmFtZSwgcGF0dGVybikgZm9yIHBhdHRlcm4gaW4gc2VsZi50ZXN0TmFtZVBhdHRlcm5zKQogICAgICAgIHRlc3RGbk5hbWVzID0gbGlzdChmaWx0ZXIoc2hvdWxkSW5jbHVkZU1ldGhvZCwgZGlyKHRlc3RDYXNlQ2xhc3MpKSkKICAgICAgICBpZiBzZWxmLnNvcnRUZXN0TWV0aG9kc1VzaW5nOgogICAgICAgICAgICB0ZXN0Rm5OYW1lcy5zb3J0KGtleT1mdW5jdG9vbHMuY21wX3RvX2tleShzZWxmLnNvcnRUZXN0TWV0aG9kc1VzaW5nKSkKICAgICAgICByZXR1cm4gdGVzdEZuTmFtZXMKCiAgICBkZWYgZGlzY292ZXIoc2VsZiwgc3RhcnRfZGlyLCBwYXR0ZXJuPSd0ZXN0Ki5weScsIHRvcF9sZXZlbF9kaXI9Tm9uZSk6CiAgICAgICAgIiIiRmluZCBhbmQgcmV0dXJuIGFsbCB0ZXN0IG1vZHVsZXMgZnJvbSB0aGUgc3BlY2lmaWVkIHN0YXJ0CiAgICAgICAgZGlyZWN0b3J5LCByZWN1cnNpbmcgaW50byBzdWJkaXJlY3RvcmllcyB0byBmaW5kIHRoZW0gYW5kIHJldHVybiBhbGwKICAgICAgICB0ZXN0cyBmb3VuZCB3aXRoaW4gdGhlbS4gT25seSB0ZXN0IGZpbGVzIHRoYXQgbWF0Y2ggdGhlIHBhdHRlcm4gd2lsbAogICAgICAgIGJlIGxvYWRlZC4gKFVzaW5nIHNoZWxsIHN0eWxlIHBhdHRlcm4gbWF0Y2hpbmcuKQoKICAgICAgICBBbGwgdGVzdCBtb2R1bGVzIG11c3QgYmUgaW1wb3J0YWJsZSBmcm9tIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHByb2plY3QuCiAgICAgICAgSWYgdGhlIHN0YXJ0IGRpcmVjdG9yeSBpcyBub3QgdGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkgdGhlbiB0aGUgdG9wCiAgICAgICAgbGV2ZWwgZGlyZWN0b3J5IG11c3QgYmUgc3BlY2lmaWVkIHNlcGFyYXRlbHkuCgogICAgICAgIElmIGEgdGVzdCBwYWNrYWdlIG5hbWUgKGRpcmVjdG9yeSB3aXRoICdfX2luaXRfXy5weScpIG1hdGNoZXMgdGhlCiAgICAgICAgcGF0dGVybiB0aGVuIHRoZSBwYWNrYWdlIHdpbGwgYmUgY2hlY2tlZCBmb3IgYSAnbG9hZF90ZXN0cycgZnVuY3Rpb24uIElmCiAgICAgICAgdGhpcyBleGlzdHMgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSB1bmxlc3MKICAgICAgICB0aGUgcGFja2FnZSBoYXMgYWxyZWFkeSBoYWQgbG9hZF90ZXN0cyBjYWxsZWQgZnJvbSB0aGUgc2FtZSBkaXNjb3ZlcnkKICAgICAgICBpbnZvY2F0aW9uLCBpbiB3aGljaCBjYXNlIHRoZSBwYWNrYWdlIG1vZHVsZSBvYmplY3QgaXMgbm90IHNjYW5uZWQgZm9yCiAgICAgICAgdGVzdHMgLSB0aGlzIGVuc3VyZXMgdGhhdCB3aGVuIGEgcGFja2FnZSB1c2VzIGRpc2NvdmVyIHRvIGZ1cnRoZXIKICAgICAgICBkaXNjb3ZlciBjaGlsZCB0ZXN0cyB0aGF0IGluZmluaXRlIHJlY3Vyc2lvbiBkb2VzIG5vdCBoYXBwZW4uCgogICAgICAgIElmIGxvYWRfdGVzdHMgZXhpc3RzIHRoZW4gZGlzY292ZXJ5IGRvZXMgKm5vdCogcmVjdXJzZSBpbnRvIHRoZSBwYWNrYWdlLAogICAgICAgIGxvYWRfdGVzdHMgaXMgcmVzcG9uc2libGUgZm9yIGxvYWRpbmcgYWxsIHRlc3RzIGluIHRoZSBwYWNrYWdlLgoKICAgICAgICBUaGUgcGF0dGVybiBpcyBkZWxpYmVyYXRlbHkgbm90IHN0b3JlZCBhcyBhIGxvYWRlciBhdHRyaWJ1dGUgc28gdGhhdAogICAgICAgIHBhY2thZ2VzIGNhbiBjb250aW51ZSBkaXNjb3ZlcnkgdGhlbXNlbHZlcy4gdG9wX2xldmVsX2RpciBpcyBzdG9yZWQgc28KICAgICAgICBsb2FkX3Rlc3RzIGRvZXMgbm90IG5lZWQgdG8gcGFzcyB0aGlzIGFyZ3VtZW50IGluIHRvIGxvYWRlci5kaXNjb3ZlcigpLgoKICAgICAgICBQYXRocyBhcmUgc29ydGVkIGJlZm9yZSBiZWluZyBpbXBvcnRlZCB0byBlbnN1cmUgcmVwcm9kdWNpYmxlIGV4ZWN1dGlvbgogICAgICAgIG9yZGVyIGV2ZW4gb24gZmlsZXN5c3RlbXMgd2l0aCBub24tYWxwaGFiZXRpY2FsIG9yZGVyaW5nIGxpa2UgZXh0My80LgogICAgICAgICIiIgogICAgICAgIHNldF9pbXBsaWNpdF90b3AgPSBGYWxzZQogICAgICAgIGlmIHRvcF9sZXZlbF9kaXIgaXMgTm9uZSBhbmQgc2VsZi5fdG9wX2xldmVsX2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBtYWtlIHRvcF9sZXZlbF9kaXIgb3B0aW9uYWwgaWYgY2FsbGVkIGZyb20gbG9hZF90ZXN0cyBpbiBhIHBhY2thZ2UKICAgICAgICAgICAgdG9wX2xldmVsX2RpciA9IHNlbGYuX3RvcF9sZXZlbF9kaXIKICAgICAgICBlbGlmIHRvcF9sZXZlbF9kaXIgaXMgTm9uZToKICAgICAgICAgICAgc2V0X2ltcGxpY2l0X3RvcCA9IFRydWUKICAgICAgICAgICAgdG9wX2xldmVsX2RpciA9IHN0YXJ0X2RpcgoKICAgICAgICB0b3BfbGV2ZWxfZGlyID0gb3MucGF0aC5hYnNwYXRoKHRvcF9sZXZlbF9kaXIpCgogICAgICAgIGlmIG5vdCB0b3BfbGV2ZWxfZGlyIGluIHN5cy5wYXRoOgogICAgICAgICAgICAjIGFsbCB0ZXN0IG1vZHVsZXMgbXVzdCBiZSBpbXBvcnRhYmxlIGZyb20gdGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkKICAgICAgICAgICAgIyBzaG91bGQgd2UgKnVuY29uZGl0aW9uYWxseSogcHV0IHRoZSBzdGFydCBkaXJlY3RvcnkgaW4gZmlyc3QKICAgICAgICAgICAgIyBpbiBzeXMucGF0aCB0byBtaW5pbWlzZSBsaWtlbGlob29kIG9mIGNvbmZsaWN0cyBiZXR3ZWVuIGluc3RhbGxlZAogICAgICAgICAgICAjIG1vZHVsZXMgYW5kIGRldmVsb3BtZW50IHZlcnNpb25zPwogICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdG9wX2xldmVsX2RpcikKICAgICAgICBzZWxmLl90b3BfbGV2ZWxfZGlyID0gdG9wX2xldmVsX2RpcgoKICAgICAgICBpc19ub3RfaW1wb3J0YWJsZSA9IEZhbHNlCiAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmFic3BhdGgoc3RhcnRfZGlyKSk6CiAgICAgICAgICAgIHN0YXJ0X2RpciA9IG9zLnBhdGguYWJzcGF0aChzdGFydF9kaXIpCiAgICAgICAgICAgIGlmIHN0YXJ0X2RpciAhPSB0b3BfbGV2ZWxfZGlyOgogICAgICAgICAgICAgICAgaXNfbm90X2ltcG9ydGFibGUgPSBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHN0YXJ0X2RpciwgJ19faW5pdF9fLnB5JykpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBzdXBwb3J0IGZvciBkaXNjb3ZlcnkgZnJvbSBkb3R0ZWQgbW9kdWxlIG5hbWVzCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIF9faW1wb3J0X18oc3RhcnRfZGlyKQogICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICBpc19ub3RfaW1wb3J0YWJsZSA9IFRydWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBzeXMubW9kdWxlc1tzdGFydF9kaXJdCiAgICAgICAgICAgICAgICB0b3BfcGFydCA9IHN0YXJ0X2Rpci5zcGxpdCgnLicpWzBdCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc3RhcnRfZGlyID0gb3MucGF0aC5hYnNwYXRoKAogICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoKHRoZV9tb2R1bGUuX19maWxlX18pKSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBpZiB0aGVfbW9kdWxlLl9fbmFtZV9fIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKICAgICAgICAgICAgICAgICAgICAgICAgIyBidWlsdGluIG1vZHVsZQogICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0NhbiBub3QgdXNlIGJ1aWx0aW4gbW9kdWxlcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXMgZG90dGVkIG1vZHVsZSBuYW1lcycpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiZG9uJ3Qga25vdyBob3cgdG8gZGlzY292ZXIgZnJvbSB7dGhlX21vZHVsZSFyfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgZnJvbSBOb25lCgogICAgICAgICAgICAgICAgaWYgc2V0X2ltcGxpY2l0X3RvcDoKICAgICAgICAgICAgICAgICAgICBzZWxmLl90b3BfbGV2ZWxfZGlyID0gc2VsZi5fZ2V0X2RpcmVjdG9yeV9jb250YWluaW5nX21vZHVsZSh0b3BfcGFydCkKICAgICAgICAgICAgICAgICAgICBzeXMucGF0aC5yZW1vdmUodG9wX2xldmVsX2RpcikKCiAgICAgICAgaWYgaXNfbm90X2ltcG9ydGFibGU6CiAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdTdGFydCBkaXJlY3RvcnkgaXMgbm90IGltcG9ydGFibGU6ICVyJyAlIHN0YXJ0X2RpcikKCiAgICAgICAgdGVzdHMgPSBsaXN0KHNlbGYuX2ZpbmRfdGVzdHMoc3RhcnRfZGlyLCBwYXR0ZXJuKSkKICAgICAgICByZXR1cm4gc2VsZi5zdWl0ZUNsYXNzKHRlc3RzKQoKICAgIGRlZiBfZ2V0X2RpcmVjdG9yeV9jb250YWluaW5nX21vZHVsZShzZWxmLCBtb2R1bGVfbmFtZSk6CiAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCiAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5hYnNwYXRoKG1vZHVsZS5fX2ZpbGVfXykKCiAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpLmxvd2VyKCkuc3RhcnRzd2l0aCgnX19pbml0X18ucHknKToKICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGhlcmUgd2UgaGF2ZSBiZWVuIGdpdmVuIGEgbW9kdWxlIHJhdGhlciB0aGFuIGEgcGFja2FnZSAtIHNvCiAgICAgICAgICAgICMgYWxsIHdlIGNhbiBkbyBpcyBzZWFyY2ggdGhlICpzYW1lKiBkaXJlY3RvcnkgdGhlIG1vZHVsZSBpcyBpbgogICAgICAgICAgICAjIHNob3VsZCBhbiBleGNlcHRpb24gYmUgcmFpc2VkIGluc3RlYWQKICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpCgogICAgZGVmIF9nZXRfbmFtZV9mcm9tX3BhdGgoc2VsZiwgcGF0aCk6CiAgICAgICAgaWYgcGF0aCA9PSBzZWxmLl90b3BfbGV2ZWxfZGlyOgogICAgICAgICAgICByZXR1cm4gJy4nCiAgICAgICAgcGF0aCA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQob3MucGF0aC5ub3JtcGF0aChwYXRoKSkKCiAgICAgICAgX3JlbHBhdGggPSBvcy5wYXRoLnJlbHBhdGgocGF0aCwgc2VsZi5fdG9wX2xldmVsX2RpcikKICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguaXNhYnMoX3JlbHBhdGgpLCAiUGF0aCBtdXN0IGJlIHdpdGhpbiB0aGUgcHJvamVjdCIKICAgICAgICBhc3NlcnQgbm90IF9yZWxwYXRoLnN0YXJ0c3dpdGgoJy4uJyksICJQYXRoIG11c3QgYmUgd2l0aGluIHRoZSBwcm9qZWN0IgoKICAgICAgICBuYW1lID0gX3JlbHBhdGgucmVwbGFjZShvcy5wYXRoLnNlcCwgJy4nKQogICAgICAgIHJldHVybiBuYW1lCgogICAgZGVmIF9nZXRfbW9kdWxlX2Zyb21fbmFtZShzZWxmLCBuYW1lKToKICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCgogICAgZGVmIF9tYXRjaF9wYXRoKHNlbGYsIHBhdGgsIGZ1bGxfcGF0aCwgcGF0dGVybik6CiAgICAgICAgIyBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byB1c2UgYWx0ZXJuYXRpdmUgbWF0Y2hpbmcgc3RyYXRlZ3kKICAgICAgICByZXR1cm4gZm5tYXRjaChwYXRoLCBwYXR0ZXJuKQoKICAgIGRlZiBfZmluZF90ZXN0cyhzZWxmLCBzdGFydF9kaXIsIHBhdHRlcm4pOgogICAgICAgICIiIlVzZWQgYnkgZGlzY292ZXJ5LiBZaWVsZHMgdGVzdCBzdWl0ZXMgaXQgbG9hZHMuIiIiCiAgICAgICAgIyBIYW5kbGUgdGhlIF9faW5pdF9fIGluIHRoaXMgcGFja2FnZQogICAgICAgIG5hbWUgPSBzZWxmLl9nZXRfbmFtZV9mcm9tX3BhdGgoc3RhcnRfZGlyKQogICAgICAgICMgbmFtZSBpcyAnLicgd2hlbiBzdGFydF9kaXIgPT0gdG9wX2xldmVsX2RpciAoYW5kIHRvcF9sZXZlbF9kaXIgaXMgYnkKICAgICAgICAjIGRlZmluaXRpb24gbm90IGEgcGFja2FnZSkuCiAgICAgICAgaWYgbmFtZSAhPSAnLicgYW5kIG5hbWUgbm90IGluIHNlbGYuX2xvYWRpbmdfcGFja2FnZXM6CiAgICAgICAgICAgICMgbmFtZSBpcyBpbiBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzIHdoaWxlIHdlIGhhdmUgY2FsbGVkIGludG8KICAgICAgICAgICAgIyBsb2FkVGVzdHNGcm9tTW9kdWxlIHdpdGggbmFtZS4KICAgICAgICAgICAgdGVzdHMsIHNob3VsZF9yZWN1cnNlID0gc2VsZi5fZmluZF90ZXN0X3BhdGgoc3RhcnRfZGlyLCBwYXR0ZXJuKQogICAgICAgICAgICBpZiB0ZXN0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RzCiAgICAgICAgICAgIGlmIG5vdCBzaG91bGRfcmVjdXJzZToKICAgICAgICAgICAgICAgICMgRWl0aGVyIGFuIGVycm9yIG9jY3VycmVkLCBvciBsb2FkX3Rlc3RzIHdhcyB1c2VkIGJ5IHRoZQogICAgICAgICAgICAgICAgIyBwYWNrYWdlLgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIyBIYW5kbGUgdGhlIGNvbnRlbnRzLgogICAgICAgIHBhdGhzID0gc29ydGVkKG9zLmxpc3RkaXIoc3RhcnRfZGlyKSkKICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKHN0YXJ0X2RpciwgcGF0aCkKICAgICAgICAgICAgdGVzdHMsIHNob3VsZF9yZWN1cnNlID0gc2VsZi5fZmluZF90ZXN0X3BhdGgoZnVsbF9wYXRoLCBwYXR0ZXJuKQogICAgICAgICAgICBpZiB0ZXN0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RzCiAgICAgICAgICAgIGlmIHNob3VsZF9yZWN1cnNlOgogICAgICAgICAgICAgICAgIyB3ZSBmb3VuZCBhIHBhY2thZ2UgdGhhdCBkaWRuJ3QgdXNlIGxvYWRfdGVzdHMuCiAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKGZ1bGxfcGF0aCkKICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMuYWRkKG5hbWUpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9maW5kX3Rlc3RzKGZ1bGxfcGF0aCwgcGF0dGVybikKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGluZ19wYWNrYWdlcy5kaXNjYXJkKG5hbWUpCgogICAgZGVmIF9maW5kX3Rlc3RfcGF0aChzZWxmLCBmdWxsX3BhdGgsIHBhdHRlcm4pOgogICAgICAgICIiIlVzZWQgYnkgZGlzY292ZXJ5LgoKICAgICAgICBMb2FkcyB0ZXN0cyBmcm9tIGEgc2luZ2xlIGZpbGUsIG9yIGEgZGlyZWN0b3JpZXMnIF9faW5pdF9fLnB5IHdoZW4KICAgICAgICBwYXNzZWQgdGhlIGRpcmVjdG9yeS4KCiAgICAgICAgUmV0dXJucyBhIHR1cGxlIChOb25lX29yX3Rlc3RzX2Zyb21fZmlsZSwgc2hvdWxkX3JlY3Vyc2UpLgogICAgICAgICIiIgogICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpCiAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbF9wYXRoKToKICAgICAgICAgICAgaWYgbm90IFZBTElEX01PRFVMRV9OQU1FLm1hdGNoKGJhc2VuYW1lKToKICAgICAgICAgICAgICAgICMgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzIG9ubHkKICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBGYWxzZQogICAgICAgICAgICBpZiBub3Qgc2VsZi5fbWF0Y2hfcGF0aChiYXNlbmFtZSwgZnVsbF9wYXRoLCBwYXR0ZXJuKToKICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBGYWxzZQogICAgICAgICAgICAjIGlmIHRoZSB0ZXN0IGZpbGUgbWF0Y2hlcywgbG9hZCBpdAogICAgICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKGZ1bGxfcGF0aCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKICAgICAgICAgICAgZXhjZXB0IGNhc2UuU2tpcFRlc3QgYXMgZToKICAgICAgICAgICAgICAgIHJldHVybiBfbWFrZV9za2lwcGVkX3Rlc3QobmFtZSwgZSwgc2VsZi5zdWl0ZUNsYXNzKSwgRmFsc2UKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IFwKICAgICAgICAgICAgICAgICAgICBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QobmFtZSwgc2VsZi5zdWl0ZUNsYXNzKQogICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZSwgRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG1vZF9maWxlID0gb3MucGF0aC5hYnNwYXRoKAogICAgICAgICAgICAgICAgICAgIGdldGF0dHIobW9kdWxlLCAnX19maWxlX18nLCBmdWxsX3BhdGgpKQogICAgICAgICAgICAgICAgcmVhbHBhdGggPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KAogICAgICAgICAgICAgICAgICAgIG9zLnBhdGgucmVhbHBhdGgobW9kX2ZpbGUpKQogICAgICAgICAgICAgICAgZnVsbHBhdGhfbm9leHQgPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KAogICAgICAgICAgICAgICAgICAgIG9zLnBhdGgucmVhbHBhdGgoZnVsbF9wYXRoKSkKICAgICAgICAgICAgICAgIGlmIHJlYWxwYXRoLmxvd2VyKCkgIT0gZnVsbHBhdGhfbm9leHQubG93ZXIoKToKICAgICAgICAgICAgICAgICAgICBtb2R1bGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJlYWxwYXRoKQogICAgICAgICAgICAgICAgICAgIG1vZF9uYW1lID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dCgKICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpKQogICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2RpciA9IG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgbXNnID0gKCIlciBtb2R1bGUgaW5jb3JyZWN0bHkgaW1wb3J0ZWQgZnJvbSAlci4gRXhwZWN0ZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIuIElzIHRoaXMgbW9kdWxlIGdsb2JhbGx5IGluc3RhbGxlZD8iKQogICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBtc2cgJSAobW9kX25hbWUsIG1vZHVsZV9kaXIsIGV4cGVjdGVkX2RpcikpCiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSwgcGF0dGVybj1wYXR0ZXJuKSwgRmFsc2UKICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZnVsbF9wYXRoKToKICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihmdWxsX3BhdGgsICdfX2luaXRfXy5weScpKToKICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBGYWxzZQoKICAgICAgICAgICAgbG9hZF90ZXN0cyA9IE5vbmUKICAgICAgICAgICAgdGVzdHMgPSBOb25lCiAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9nZXRfbmFtZV9mcm9tX3BhdGgoZnVsbF9wYXRoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwYWNrYWdlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKICAgICAgICAgICAgZXhjZXB0IGNhc2UuU2tpcFRlc3QgYXMgZToKICAgICAgICAgICAgICAgIHJldHVybiBfbWFrZV9za2lwcGVkX3Rlc3QobmFtZSwgZSwgc2VsZi5zdWl0ZUNsYXNzKSwgRmFsc2UKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IFwKICAgICAgICAgICAgICAgICAgICBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QobmFtZSwgc2VsZi5zdWl0ZUNsYXNzKQogICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZSwgRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGxvYWRfdGVzdHMgPSBnZXRhdHRyKHBhY2thZ2UsICdsb2FkX3Rlc3RzJywgTm9uZSkKICAgICAgICAgICAgICAgICMgTWFyayB0aGlzIHBhY2thZ2UgYXMgYmVpbmcgaW4gbG9hZF90ZXN0cyAocG9zc2libHkgOykpCiAgICAgICAgICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzLmFkZChuYW1lKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKHBhY2thZ2UsIHBhdHRlcm49cGF0dGVybikKICAgICAgICAgICAgICAgICAgICBpZiBsb2FkX3Rlc3RzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvYWRUZXN0c0Zyb21Nb2R1bGUocGFja2FnZSkgaGFzIGxvYWRlZCB0ZXN0cyBmb3IgdXMuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0cywgRmFsc2UKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdHMsIFRydWUKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGluZ19wYWNrYWdlcy5kaXNjYXJkKG5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUsIEZhbHNlCgoKZGVmYXVsdFRlc3RMb2FkZXIgPSBUZXN0TG9hZGVyKCkKCgojIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY29uc2lkZXJlZCBvYnNvbGV0ZSBmb3IgbG9uZyB0aW1lLgojIFRoZXkgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjEzLgoKZGVmIF9tYWtlTG9hZGVyKHByZWZpeCwgc29ydFVzaW5nLCBzdWl0ZUNsYXNzPU5vbmUsIHRlc3ROYW1lUGF0dGVybnM9Tm9uZSk6CiAgICBsb2FkZXIgPSBUZXN0TG9hZGVyKCkKICAgIGxvYWRlci5zb3J0VGVzdE1ldGhvZHNVc2luZyA9IHNvcnRVc2luZwogICAgbG9hZGVyLnRlc3RNZXRob2RQcmVmaXggPSBwcmVmaXgKICAgIGxvYWRlci50ZXN0TmFtZVBhdHRlcm5zID0gdGVzdE5hbWVQYXR0ZXJucwogICAgaWYgc3VpdGVDbGFzczoKICAgICAgICBsb2FkZXIuc3VpdGVDbGFzcyA9IHN1aXRlQ2xhc3MKICAgIHJldHVybiBsb2FkZXIKCmRlZiBnZXRUZXN0Q2FzZU5hbWVzKHRlc3RDYXNlQ2xhc3MsIHByZWZpeCwgc29ydFVzaW5nPXV0aWwudGhyZWVfd2F5X2NtcCwgdGVzdE5hbWVQYXR0ZXJucz1Ob25lKToKICAgIGltcG9ydCB3YXJuaW5ncwogICAgd2FybmluZ3Mud2FybigKICAgICAgICAidW5pdHRlc3QuZ2V0VGVzdENhc2VOYW1lcygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy4xMy4gIgogICAgICAgICJQbGVhc2UgdXNlIHVuaXR0ZXN0LlRlc3RMb2FkZXIuZ2V0VGVzdENhc2VOYW1lcygpIGluc3RlYWQuIiwKICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MgogICAgKQogICAgcmV0dXJuIF9tYWtlTG9hZGVyKHByZWZpeCwgc29ydFVzaW5nLCB0ZXN0TmFtZVBhdHRlcm5zPXRlc3ROYW1lUGF0dGVybnMpLmdldFRlc3RDYXNlTmFtZXModGVzdENhc2VDbGFzcykKCmRlZiBtYWtlU3VpdGUodGVzdENhc2VDbGFzcywgcHJlZml4PSd0ZXN0Jywgc29ydFVzaW5nPXV0aWwudGhyZWVfd2F5X2NtcCwKICAgICAgICAgICAgICBzdWl0ZUNsYXNzPXN1aXRlLlRlc3RTdWl0ZSk6CiAgICBpbXBvcnQgd2FybmluZ3MKICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgInVuaXR0ZXN0Lm1ha2VTdWl0ZSgpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy4xMy4gIgogICAgICAgICJQbGVhc2UgdXNlIHVuaXR0ZXN0LlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbVRlc3RDYXNlKCkgaW5zdGVhZC4iLAogICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yCiAgICApCiAgICByZXR1cm4gX21ha2VMb2FkZXIocHJlZml4LCBzb3J0VXNpbmcsIHN1aXRlQ2xhc3MpLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZSgKICAgICAgICB0ZXN0Q2FzZUNsYXNzKQoKZGVmIGZpbmRUZXN0Q2FzZXMobW9kdWxlLCBwcmVmaXg9J3Rlc3QnLCBzb3J0VXNpbmc9dXRpbC50aHJlZV93YXlfY21wLAogICAgICAgICAgICAgICAgICBzdWl0ZUNsYXNzPXN1aXRlLlRlc3RTdWl0ZSk6CiAgICBpbXBvcnQgd2FybmluZ3MKICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgInVuaXR0ZXN0LmZpbmRUZXN0Q2FzZXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuMTMuICIKICAgICAgICAiUGxlYXNlIHVzZSB1bml0dGVzdC5UZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUoKSBpbnN0ZWFkLiIsCiAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIKICAgICkKICAgIHJldHVybiBfbWFrZUxvYWRlcihwcmVmaXgsIHNvcnRVc2luZywgc3VpdGVDbGFzcykubG9hZFRlc3RzRnJvbU1vZHVsZShcCiAgICAgICAgbW9kdWxlKQpQSwMEFAAAAAAAAyCjVkak6tSXLAAAlywAABAAAAB1bml0dGVzdC9tYWluLnB5IiIiVW5pdHRlc3QgbWFpbiBwcm9ncmFtIiIiCgppbXBvcnQgc3lzCmltcG9ydCBhcmdwYXJzZQppbXBvcnQgb3MKaW1wb3J0IHdhcm5pbmdzCgpmcm9tIC4gaW1wb3J0IGxvYWRlciwgcnVubmVyCmZyb20gLnNpZ25hbHMgaW1wb3J0IGluc3RhbGxIYW5kbGVyCgpfX3VuaXR0ZXN0ID0gVHJ1ZQoKTUFJTl9FWEFNUExFUyA9ICIiIlwKRXhhbXBsZXM6CiAgJShwcm9nKXMgdGVzdF9tb2R1bGUgICAgICAgICAgICAgICAtIHJ1biB0ZXN0cyBmcm9tIHRlc3RfbW9kdWxlCiAgJShwcm9nKXMgbW9kdWxlLlRlc3RDbGFzcyAgICAgICAgICAtIHJ1biB0ZXN0cyBmcm9tIG1vZHVsZS5UZXN0Q2xhc3MKICAlKHByb2cpcyBtb2R1bGUuQ2xhc3MudGVzdF9tZXRob2QgIC0gcnVuIHNwZWNpZmllZCB0ZXN0IG1ldGhvZAogICUocHJvZylzIHBhdGgvdG8vdGVzdF9maWxlLnB5ICAgICAgLSBydW4gdGVzdHMgZnJvbSB0ZXN0X2ZpbGUucHkKIiIiCgpNT0RVTEVfRVhBTVBMRVMgPSAiIiJcCkV4YW1wbGVzOgogICUocHJvZylzICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBydW4gZGVmYXVsdCBzZXQgb2YgdGVzdHMKICAlKHByb2cpcyBNeVRlc3RTdWl0ZSAgICAgICAgICAgICAgIC0gcnVuIHN1aXRlICdNeVRlc3RTdWl0ZScKICAlKHByb2cpcyBNeVRlc3RDYXNlLnRlc3RTb21ldGhpbmcgIC0gcnVuIE15VGVzdENhc2UudGVzdFNvbWV0aGluZwogICUocHJvZylzIE15VGVzdENhc2UgICAgICAgICAgICAgICAgLSBydW4gYWxsICd0ZXN0KicgdGVzdCBtZXRob2RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIE15VGVzdENhc2UKIiIiCgpkZWYgX2NvbnZlcnRfbmFtZShuYW1lKToKICAgICMgb24gTGludXggLyBNYWMgT1MgWCAnZm9vLlBZJyBpcyBub3QgaW1wb3J0YWJsZSwgYnV0IG9uCiAgICAjIFdpbmRvd3MgaXQgaXMuIFNpbXBsZXIgdG8gZG8gYSBjYXNlIGluc2Vuc2l0aXZlIG1hdGNoCiAgICAjIGEgYmV0dGVyIGNoZWNrIHdvdWxkIGJlIHRvIGNoZWNrIHRoYXQgdGhlIG5hbWUgaXMgYQogICAgIyB2YWxpZCBQeXRob24gbW9kdWxlIG5hbWUuCiAgICBpZiBvcy5wYXRoLmlzZmlsZShuYW1lKSBhbmQgbmFtZS5sb3dlcigpLmVuZHN3aXRoKCcucHknKToKICAgICAgICBpZiBvcy5wYXRoLmlzYWJzKG5hbWUpOgogICAgICAgICAgICByZWxfcGF0aCA9IG9zLnBhdGgucmVscGF0aChuYW1lLCBvcy5nZXRjd2QoKSkKICAgICAgICAgICAgaWYgb3MucGF0aC5pc2FicyhyZWxfcGF0aCkgb3IgcmVsX3BhdGguc3RhcnRzd2l0aChvcy5wYXJkaXIpOgogICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKICAgICAgICAgICAgbmFtZSA9IHJlbF9wYXRoCiAgICAgICAgIyBvbiBXaW5kb3dzIGJvdGggJ1wnIGFuZCAnLycgYXJlIHVzZWQgYXMgcGF0aAogICAgICAgICMgc2VwYXJhdG9ycy4gQmV0dGVyIHRvIHJlcGxhY2UgYm90aCB0aGFuIHJlbHkgb24gb3MucGF0aC5zZXAKICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChuYW1lKVs6LTNdLnJlcGxhY2UoJ1xcJywgJy4nKS5yZXBsYWNlKCcvJywgJy4nKQogICAgcmV0dXJuIG5hbWUKCmRlZiBfY29udmVydF9uYW1lcyhuYW1lcyk6CiAgICByZXR1cm4gW19jb252ZXJ0X25hbWUobmFtZSkgZm9yIG5hbWUgaW4gbmFtZXNdCgoKZGVmIF9jb252ZXJ0X3NlbGVjdF9wYXR0ZXJuKHBhdHRlcm4pOgogICAgaWYgbm90ICcqJyBpbiBwYXR0ZXJuOgogICAgICAgIHBhdHRlcm4gPSAnKiVzKicgJSBwYXR0ZXJuCiAgICByZXR1cm4gcGF0dGVybgoKCmNsYXNzIFRlc3RQcm9ncmFtKG9iamVjdCk6CiAgICAiIiJBIGNvbW1hbmQtbGluZSBwcm9ncmFtIHRoYXQgcnVucyBhIHNldCBvZiB0ZXN0czsgdGhpcyBpcyBwcmltYXJpbHkKICAgICAgIGZvciBtYWtpbmcgdGVzdCBtb2R1bGVzIGNvbnZlbmllbnRseSBleGVjdXRhYmxlLgogICAgIiIiCiAgICAjIGRlZmF1bHRzIGZvciB0ZXN0aW5nCiAgICBtb2R1bGU9Tm9uZQogICAgdmVyYm9zaXR5ID0gMQogICAgZmFpbGZhc3QgPSBjYXRjaGJyZWFrID0gYnVmZmVyID0gcHJvZ05hbWUgPSB3YXJuaW5ncyA9IHRlc3ROYW1lUGF0dGVybnMgPSBOb25lCiAgICBfZGlzY292ZXJ5X3BhcnNlciA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kdWxlPSdfX21haW5fXycsIGRlZmF1bHRUZXN0PU5vbmUsIGFyZ3Y9Tm9uZSwKICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyPU5vbmUsIHRlc3RMb2FkZXI9bG9hZGVyLmRlZmF1bHRUZXN0TG9hZGVyLAogICAgICAgICAgICAgICAgICAgIGV4aXQ9VHJ1ZSwgdmVyYm9zaXR5PTEsIGZhaWxmYXN0PU5vbmUsIGNhdGNoYnJlYWs9Tm9uZSwKICAgICAgICAgICAgICAgICAgICBidWZmZXI9Tm9uZSwgd2FybmluZ3M9Tm9uZSwgKiwgdGJfbG9jYWxzPUZhbHNlKToKICAgICAgICBpZiBpc2luc3RhbmNlKG1vZHVsZSwgc3RyKToKICAgICAgICAgICAgc2VsZi5tb2R1bGUgPSBfX2ltcG9ydF9fKG1vZHVsZSkKICAgICAgICAgICAgZm9yIHBhcnQgaW4gbW9kdWxlLnNwbGl0KCcuJylbMTpdOgogICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUgPSBnZXRhdHRyKHNlbGYubW9kdWxlLCBwYXJ0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYubW9kdWxlID0gbW9kdWxlCiAgICAgICAgaWYgYXJndiBpcyBOb25lOgogICAgICAgICAgICBhcmd2ID0gc3lzLmFyZ3YKCiAgICAgICAgc2VsZi5leGl0ID0gZXhpdAogICAgICAgIHNlbGYuZmFpbGZhc3QgPSBmYWlsZmFzdAogICAgICAgIHNlbGYuY2F0Y2hicmVhayA9IGNhdGNoYnJlYWsKICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQogICAgICAgIHNlbGYuYnVmZmVyID0gYnVmZmVyCiAgICAgICAgc2VsZi50Yl9sb2NhbHMgPSB0Yl9sb2NhbHMKICAgICAgICBpZiB3YXJuaW5ncyBpcyBOb25lIGFuZCBub3Qgc3lzLndhcm5vcHRpb25zOgogICAgICAgICAgICAjIGV2ZW4gaWYgRGVwcmVjYXRpb25XYXJuaW5ncyBhcmUgaWdub3JlZCBieSBkZWZhdWx0CiAgICAgICAgICAgICMgcHJpbnQgdGhlbSBhbnl3YXkgdW5sZXNzIG90aGVyIHdhcm5pbmdzIHNldHRpbmdzIGFyZQogICAgICAgICAgICAjIHNwZWNpZmllZCBieSB0aGUgd2FybmluZ3MgYXJnIG9yIHRoZSAtVyBweXRob24gZmxhZwogICAgICAgICAgICBzZWxmLndhcm5pbmdzID0gJ2RlZmF1bHQnCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBoZXJlIHNlbGYud2FybmluZ3MgaXMgc2V0IGVpdGhlciB0byB0aGUgdmFsdWUgcGFzc2VkCiAgICAgICAgICAgICMgdG8gdGhlIHdhcm5pbmdzIGFyZ3Mgb3IgdG8gTm9uZS4KICAgICAgICAgICAgIyBJZiB0aGUgdXNlciBkaWRuJ3QgcGFzcyBhIHZhbHVlIHNlbGYud2FybmluZ3Mgd2lsbAogICAgICAgICAgICAjIGJlIE5vbmUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkCiAgICAgICAgICAgICMgYW5kIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBwYXNzZWQgdG8gLVcuCiAgICAgICAgICAgIHNlbGYud2FybmluZ3MgPSB3YXJuaW5ncwogICAgICAgIHNlbGYuZGVmYXVsdFRlc3QgPSBkZWZhdWx0VGVzdAogICAgICAgIHNlbGYudGVzdFJ1bm5lciA9IHRlc3RSdW5uZXIKICAgICAgICBzZWxmLnRlc3RMb2FkZXIgPSB0ZXN0TG9hZGVyCiAgICAgICAgc2VsZi5wcm9nTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoYXJndlswXSkKICAgICAgICBzZWxmLnBhcnNlQXJncyhhcmd2KQogICAgICAgIHNlbGYucnVuVGVzdHMoKQoKICAgIGRlZiB1c2FnZUV4aXQoc2VsZiwgbXNnPU5vbmUpOgogICAgICAgIHdhcm5pbmdzLndhcm4oIlRlc3RQcm9ncmFtLnVzYWdlRXhpdCgpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUiCiAgICAgICAgICAgICAgICAgICAgICAiIHJlbW92ZWQgaW4gUHl0aG9uIDMuMTMiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgaWYgbXNnOgogICAgICAgICAgICBwcmludChtc2cpCiAgICAgICAgaWYgc2VsZi5fZGlzY292ZXJ5X3BhcnNlciBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9pbml0QXJnUGFyc2VycygpCiAgICAgICAgc2VsZi5fcHJpbnRfaGVscCgpCiAgICAgICAgc3lzLmV4aXQoMikKCiAgICBkZWYgX3ByaW50X2hlbHAoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBzZWxmLm1vZHVsZSBpcyBOb25lOgogICAgICAgICAgICBwcmludChzZWxmLl9tYWluX3BhcnNlci5mb3JtYXRfaGVscCgpKQogICAgICAgICAgICBwcmludChNQUlOX0VYQU1QTEVTICUgeydwcm9nJzogc2VsZi5wcm9nTmFtZX0pCiAgICAgICAgICAgIHNlbGYuX2Rpc2NvdmVyeV9wYXJzZXIucHJpbnRfaGVscCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoc2VsZi5fbWFpbl9wYXJzZXIuZm9ybWF0X2hlbHAoKSkKICAgICAgICAgICAgcHJpbnQoTU9EVUxFX0VYQU1QTEVTICUgeydwcm9nJzogc2VsZi5wcm9nTmFtZX0pCgogICAgZGVmIHBhcnNlQXJncyhzZWxmLCBhcmd2KToKICAgICAgICBzZWxmLl9pbml0QXJnUGFyc2VycygpCiAgICAgICAgaWYgc2VsZi5tb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgaWYgbGVuKGFyZ3YpID4gMSBhbmQgYXJndlsxXS5sb3dlcigpID09ICdkaXNjb3Zlcic6CiAgICAgICAgICAgICAgICBzZWxmLl9kb19kaXNjb3ZlcnkoYXJndlsyOl0pCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgc2VsZi5fbWFpbl9wYXJzZXIucGFyc2VfYXJncyhhcmd2WzE6XSwgc2VsZikKICAgICAgICAgICAgaWYgbm90IHNlbGYudGVzdHM6CiAgICAgICAgICAgICAgICAjIHRoaXMgYWxsb3dzICJweXRob24gLW0gdW5pdHRlc3QgLXYiIHRvIHN0aWxsIHdvcmsgZm9yCiAgICAgICAgICAgICAgICAjIHRlc3QgZGlzY292ZXJ5LgogICAgICAgICAgICAgICAgc2VsZi5fZG9fZGlzY292ZXJ5KFtdKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fbWFpbl9wYXJzZXIucGFyc2VfYXJncyhhcmd2WzE6XSwgc2VsZikKCiAgICAgICAgaWYgc2VsZi50ZXN0czoKICAgICAgICAgICAgc2VsZi50ZXN0TmFtZXMgPSBfY29udmVydF9uYW1lcyhzZWxmLnRlc3RzKQogICAgICAgICAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICAgICAgICAgIyB0byBzdXBwb3J0IHB5dGhvbiAtbSB1bml0dGVzdCAuLi4KICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlID0gTm9uZQogICAgICAgIGVsaWYgc2VsZi5kZWZhdWx0VGVzdCBpcyBOb25lOgogICAgICAgICAgICAjIGNyZWF0ZVRlc3RzIHdpbGwgbG9hZCB0ZXN0cyBmcm9tIHNlbGYubW9kdWxlCiAgICAgICAgICAgIHNlbGYudGVzdE5hbWVzID0gTm9uZQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLmRlZmF1bHRUZXN0LCBzdHIpOgogICAgICAgICAgICBzZWxmLnRlc3ROYW1lcyA9IChzZWxmLmRlZmF1bHRUZXN0LCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnRlc3ROYW1lcyA9IGxpc3Qoc2VsZi5kZWZhdWx0VGVzdCkKICAgICAgICBzZWxmLmNyZWF0ZVRlc3RzKCkKCiAgICBkZWYgY3JlYXRlVGVzdHMoc2VsZiwgZnJvbV9kaXNjb3Zlcnk9RmFsc2UsIExvYWRlcj1Ob25lKToKICAgICAgICBpZiBzZWxmLnRlc3ROYW1lUGF0dGVybnM6CiAgICAgICAgICAgIHNlbGYudGVzdExvYWRlci50ZXN0TmFtZVBhdHRlcm5zID0gc2VsZi50ZXN0TmFtZVBhdHRlcm5zCiAgICAgICAgaWYgZnJvbV9kaXNjb3Zlcnk6CiAgICAgICAgICAgIGxvYWRlciA9IHNlbGYudGVzdExvYWRlciBpZiBMb2FkZXIgaXMgTm9uZSBlbHNlIExvYWRlcigpCiAgICAgICAgICAgIHNlbGYudGVzdCA9IGxvYWRlci5kaXNjb3ZlcihzZWxmLnN0YXJ0LCBzZWxmLnBhdHRlcm4sIHNlbGYudG9wKQogICAgICAgIGVsaWYgc2VsZi50ZXN0TmFtZXMgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi50ZXN0ID0gc2VsZi50ZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUoc2VsZi5tb2R1bGUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi50ZXN0ID0gc2VsZi50ZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhzZWxmLnRlc3ROYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZSkKCiAgICBkZWYgX2luaXRBcmdQYXJzZXJzKHNlbGYpOgogICAgICAgIHBhcmVudF9wYXJzZXIgPSBzZWxmLl9nZXRQYXJlbnRBcmdQYXJzZXIoKQogICAgICAgIHNlbGYuX21haW5fcGFyc2VyID0gc2VsZi5fZ2V0TWFpbkFyZ1BhcnNlcihwYXJlbnRfcGFyc2VyKQogICAgICAgIHNlbGYuX2Rpc2NvdmVyeV9wYXJzZXIgPSBzZWxmLl9nZXREaXNjb3ZlcnlBcmdQYXJzZXIocGFyZW50X3BhcnNlcikKCiAgICBkZWYgX2dldFBhcmVudEFyZ1BhcnNlcihzZWxmKToKICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihhZGRfaGVscD1GYWxzZSkKCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJib3NlJywgZGVzdD0ndmVyYm9zaXR5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVmVyYm9zZSBvdXRwdXQnKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBkZXN0PSd2ZXJib3NpdHknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdRdWlldCBvdXRwdXQnKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbG9jYWxzJywgZGVzdD0ndGJfbG9jYWxzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTaG93IGxvY2FsIHZhcmlhYmxlcyBpbiB0cmFjZWJhY2tzJykKICAgICAgICBpZiBzZWxmLmZhaWxmYXN0IGlzIE5vbmU6CiAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmFpbGZhc3QnLCBkZXN0PSdmYWlsZmFzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTdG9wIG9uIGZpcnN0IGZhaWwgb3IgZXJyb3InKQogICAgICAgICAgICBzZWxmLmZhaWxmYXN0ID0gRmFsc2UKICAgICAgICBpZiBzZWxmLmNhdGNoYnJlYWsgaXMgTm9uZToKICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jYXRjaCcsIGRlc3Q9J2NhdGNoYnJlYWsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQ2F0Y2ggQ3RybC1DIGFuZCBkaXNwbGF5IHJlc3VsdHMgc28gZmFyJykKICAgICAgICAgICAgc2VsZi5jYXRjaGJyZWFrID0gRmFsc2UKICAgICAgICBpZiBzZWxmLmJ1ZmZlciBpcyBOb25lOgogICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJ1ZmZlcicsIGRlc3Q9J2J1ZmZlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCdWZmZXIgc3Rkb3V0IGFuZCBzdGRlcnIgZHVyaW5nIHRlc3RzJykKICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBGYWxzZQogICAgICAgIGlmIHNlbGYudGVzdE5hbWVQYXR0ZXJucyBpcyBOb25lOgogICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaycsIGRlc3Q9J3Rlc3ROYW1lUGF0dGVybnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nYXBwZW5kJywgdHlwZT1fY29udmVydF9zZWxlY3RfcGF0dGVybiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdPbmx5IHJ1biB0ZXN0cyB3aGljaCBtYXRjaCB0aGUgZ2l2ZW4gc3Vic3RyaW5nJykKICAgICAgICAgICAgc2VsZi50ZXN0TmFtZVBhdHRlcm5zID0gW10KCiAgICAgICAgcmV0dXJuIHBhcnNlcgoKICAgIGRlZiBfZ2V0TWFpbkFyZ1BhcnNlcihzZWxmLCBwYXJlbnQpOgogICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHBhcmVudHM9W3BhcmVudF0pCiAgICAgICAgcGFyc2VyLnByb2cgPSBzZWxmLnByb2dOYW1lCiAgICAgICAgcGFyc2VyLnByaW50X2hlbHAgPSBzZWxmLl9wcmludF9oZWxwCgogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3Rlc3RzJywgbmFyZ3M9JyonLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nYSBsaXN0IG9mIGFueSBudW1iZXIgb2YgdGVzdCBtb2R1bGVzLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3NlcyBhbmQgdGVzdCBtZXRob2RzLicpCgogICAgICAgIHJldHVybiBwYXJzZXIKCiAgICBkZWYgX2dldERpc2NvdmVyeUFyZ1BhcnNlcihzZWxmLCBwYXJlbnQpOgogICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHBhcmVudHM9W3BhcmVudF0pCiAgICAgICAgcGFyc2VyLnByb2cgPSAnJXMgZGlzY292ZXInICUgc2VsZi5wcm9nTmFtZQogICAgICAgIHBhcnNlci5lcGlsb2cgPSAoJ0ZvciB0ZXN0IGRpc2NvdmVyeSBhbGwgdGVzdCBtb2R1bGVzIG11c3QgYmUgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydGFibGUgZnJvbSB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSBvZiB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3QuJykKCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zdGFydC1kaXJlY3RvcnknLCBkZXN0PSdzdGFydCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXJlY3RvcnkgdG8gc3RhcnQgZGlzY292ZXJ5ICgnLicgZGVmYXVsdCkiKQogICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1wJywgJy0tcGF0dGVybicsIGRlc3Q9J3BhdHRlcm4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0dGVybiB0byBtYXRjaCB0ZXN0cyAoJ3Rlc3QqLnB5JyBkZWZhdWx0KSIpCiAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10b3AtbGV2ZWwtZGlyZWN0b3J5JywgZGVzdD0ndG9wJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RvcCBsZXZlbCBkaXJlY3Rvcnkgb2YgcHJvamVjdCAoZGVmYXVsdHMgdG8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnQgZGlyZWN0b3J5KScpCiAgICAgICAgZm9yIGFyZyBpbiAoJ3N0YXJ0JywgJ3BhdHRlcm4nLCAndG9wJyk6CiAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoYXJnLCBuYXJncz0nPycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1hcmdwYXJzZS5TVVBQUkVTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPWFyZ3BhcnNlLlNVUFBSRVNTKQoKICAgICAgICByZXR1cm4gcGFyc2VyCgogICAgZGVmIF9kb19kaXNjb3Zlcnkoc2VsZiwgYXJndiwgTG9hZGVyPU5vbmUpOgogICAgICAgIHNlbGYuc3RhcnQgPSAnLicKICAgICAgICBzZWxmLnBhdHRlcm4gPSAndGVzdCoucHknCiAgICAgICAgc2VsZi50b3AgPSBOb25lCiAgICAgICAgaWYgYXJndiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBoYW5kbGUgY29tbWFuZCBsaW5lIGFyZ3MgZm9yIHRlc3QgZGlzY292ZXJ5CiAgICAgICAgICAgIGlmIHNlbGYuX2Rpc2NvdmVyeV9wYXJzZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgICMgZm9yIHRlc3RpbmcKICAgICAgICAgICAgICAgIHNlbGYuX2luaXRBcmdQYXJzZXJzKCkKICAgICAgICAgICAgc2VsZi5fZGlzY292ZXJ5X3BhcnNlci5wYXJzZV9hcmdzKGFyZ3YsIHNlbGYpCgogICAgICAgIHNlbGYuY3JlYXRlVGVzdHMoZnJvbV9kaXNjb3Zlcnk9VHJ1ZSwgTG9hZGVyPUxvYWRlcikKCiAgICBkZWYgcnVuVGVzdHMoc2VsZik6CiAgICAgICAgaWYgc2VsZi5jYXRjaGJyZWFrOgogICAgICAgICAgICBpbnN0YWxsSGFuZGxlcigpCiAgICAgICAgaWYgc2VsZi50ZXN0UnVubmVyIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYudGVzdFJ1bm5lciA9IHJ1bm5lci5UZXh0VGVzdFJ1bm5lcgogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi50ZXN0UnVubmVyLCB0eXBlKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIgPSBzZWxmLnRlc3RSdW5uZXIodmVyYm9zaXR5PXNlbGYudmVyYm9zaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9c2VsZi5mYWlsZmFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1zZWxmLmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzPXNlbGYud2FybmluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yl9sb2NhbHM9c2VsZi50Yl9sb2NhbHMpCiAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgICAgICMgZGlkbid0IGFjY2VwdCB0aGUgdGJfbG9jYWxzIGFyZ3VtZW50CiAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lciA9IHNlbGYudGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi52ZXJib3NpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZmFzdD1zZWxmLmZhaWxmYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPXNlbGYuYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3M9c2VsZi53YXJuaW5ncykKICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICMgZGlkbid0IGFjY2VwdCB0aGUgdmVyYm9zaXR5LCBidWZmZXIgb3IgZmFpbGZhc3QgYXJndW1lbnRzCiAgICAgICAgICAgICAgICB0ZXN0UnVubmVyID0gc2VsZi50ZXN0UnVubmVyKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGl0IGlzIGFzc3VtZWQgdG8gYmUgYSBUZXN0UnVubmVyIGluc3RhbmNlCiAgICAgICAgICAgIHRlc3RSdW5uZXIgPSBzZWxmLnRlc3RSdW5uZXIKICAgICAgICBzZWxmLnJlc3VsdCA9IHRlc3RSdW5uZXIucnVuKHNlbGYudGVzdCkKICAgICAgICBpZiBzZWxmLmV4aXQ6CiAgICAgICAgICAgIHN5cy5leGl0KG5vdCBzZWxmLnJlc3VsdC53YXNTdWNjZXNzZnVsKCkpCgptYWluID0gVGVzdFByb2dyYW0KUEsDBBQAAAAAAAMgo1Yfwn1+oJMBAKCTAQAQAAAAdW5pdHRlc3QvbW9jay5weSMgbW9jay5weQojIFRlc3QgdG9vbHMgZm9yIG1vY2tpbmcgYW5kIHBhdGNoaW5nLgojIE1haW50YWluZWQgYnkgTWljaGFlbCBGb29yZAojIEJhY2twb3J0IGZvciBvdGhlciB2ZXJzaW9ucyBvZiBQeXRob24gYXZhaWxhYmxlIGZyb20KIyBodHRwczovL3B5cGkub3JnL3Byb2plY3QvbW9jawoKX19hbGxfXyA9ICgKICAgICdNb2NrJywKICAgICdNYWdpY01vY2snLAogICAgJ3BhdGNoJywKICAgICdzZW50aW5lbCcsCiAgICAnREVGQVVMVCcsCiAgICAnQU5ZJywKICAgICdjYWxsJywKICAgICdjcmVhdGVfYXV0b3NwZWMnLAogICAgJ0FzeW5jTW9jaycsCiAgICAnRklMVEVSX0RJUicsCiAgICAnTm9uQ2FsbGFibGVNb2NrJywKICAgICdOb25DYWxsYWJsZU1hZ2ljTW9jaycsCiAgICAnbW9ja19vcGVuJywKICAgICdQcm9wZXJ0eU1vY2snLAogICAgJ3NlYWwnLAopCgoKaW1wb3J0IGFzeW5jaW8KaW1wb3J0IGNvbnRleHRsaWIKaW1wb3J0IGlvCmltcG9ydCBpbnNwZWN0CmltcG9ydCBwcHJpbnQKaW1wb3J0IHN5cwppbXBvcnQgYnVpbHRpbnMKaW1wb3J0IHBrZ3V0aWwKZnJvbSBhc3luY2lvIGltcG9ydCBpc2Nvcm91dGluZWZ1bmN0aW9uCmZyb20gdHlwZXMgaW1wb3J0IENvZGVUeXBlLCBNb2R1bGVUeXBlLCBNZXRob2RUeXBlCmZyb20gdW5pdHRlc3QudXRpbCBpbXBvcnQgc2FmZV9yZXByCmZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcywgcGFydGlhbApmcm9tIHRocmVhZGluZyBpbXBvcnQgUkxvY2sKCgpjbGFzcyBJbnZhbGlkU3BlY0Vycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJJbmRpY2F0ZXMgdGhhdCBhbiBpbnZhbGlkIHZhbHVlIHdhcyB1c2VkIGFzIGEgbW9jayBzcGVjLiIiIgoKCl9idWlsdGlucyA9IHtuYW1lIGZvciBuYW1lIGluIGRpcihidWlsdGlucykgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnXycpfQoKRklMVEVSX0RJUiA9IFRydWUKCiMgV29ya2Fyb3VuZCBmb3IgaXNzdWUgIzEyMzcwCiMgV2l0aG91dCB0aGlzLCB0aGUgX19jbGFzc19fIHByb3BlcnRpZXMgd291bGRuJ3QgYmUgc2V0IGNvcnJlY3RseQpfc2FmZV9zdXBlciA9IHN1cGVyCgpkZWYgX2lzX2FzeW5jX29iaihvYmopOgogICAgaWYgX2lzX2luc3RhbmNlX21vY2sob2JqKSBhbmQgbm90IGlzaW5zdGFuY2Uob2JqLCBBc3luY01vY2spOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgaGFzYXR0cihvYmosICdfX2Z1bmNfXycpOgogICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCAnX19mdW5jX18nKQogICAgcmV0dXJuIGlzY29yb3V0aW5lZnVuY3Rpb24ob2JqKSBvciBpbnNwZWN0LmlzYXdhaXRhYmxlKG9iaikKCgpkZWYgX2lzX2FzeW5jX2Z1bmMoZnVuYyk6CiAgICBpZiBnZXRhdHRyKGZ1bmMsICdfX2NvZGVfXycsIE5vbmUpOgogICAgICAgIHJldHVybiBpc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpCiAgICBlbHNlOgogICAgICAgIHJldHVybiBGYWxzZQoKCmRlZiBfaXNfaW5zdGFuY2VfbW9jayhvYmopOgogICAgIyBjYW4ndCB1c2UgaXNpbnN0YW5jZSBvbiBNb2NrIG9iamVjdHMgYmVjYXVzZSB0aGV5IG92ZXJyaWRlIF9fY2xhc3NfXwogICAgIyBUaGUgYmFzZSBjbGFzcyBmb3IgYWxsIG1vY2tzIGlzIE5vbkNhbGxhYmxlTW9jawogICAgcmV0dXJuIGlzc3ViY2xhc3ModHlwZShvYmopLCBOb25DYWxsYWJsZU1vY2spCgoKZGVmIF9pc19leGNlcHRpb24ob2JqKToKICAgIHJldHVybiAoCiAgICAgICAgaXNpbnN0YW5jZShvYmosIEJhc2VFeGNlcHRpb24pIG9yCiAgICAgICAgaXNpbnN0YW5jZShvYmosIHR5cGUpIGFuZCBpc3N1YmNsYXNzKG9iaiwgQmFzZUV4Y2VwdGlvbikKICAgICkKCgpkZWYgX2V4dHJhY3RfbW9jayhvYmopOgogICAgIyBBdXRvc3BlY2NlZCBmdW5jdGlvbnMgd2lsbCByZXR1cm4gYSBGdW5jdGlvblR5cGUgd2l0aCAibW9jayIgYXR0cmlidXRlCiAgICAjIHdoaWNoIGlzIHRoZSBhY3R1YWwgbW9jayBvYmplY3QgdGhhdCBuZWVkcyB0byBiZSB1c2VkLgogICAgaWYgaXNpbnN0YW5jZShvYmosIEZ1bmN0aW9uVHlwZXMpIGFuZCBoYXNhdHRyKG9iaiwgJ21vY2snKToKICAgICAgICByZXR1cm4gb2JqLm1vY2sKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIG9iagoKCmRlZiBfZ2V0X3NpZ25hdHVyZV9vYmplY3QoZnVuYywgYXNfaW5zdGFuY2UsIGVhdF9zZWxmKToKICAgICIiIgogICAgR2l2ZW4gYW4gYXJiaXRyYXJ5LCBwb3NzaWJseSBjYWxsYWJsZSBvYmplY3QsIHRyeSB0byBjcmVhdGUgYSBzdWl0YWJsZQogICAgc2lnbmF0dXJlIG9iamVjdC4KICAgIFJldHVybiBhIChyZWR1Y2VkIGZ1bmMsIHNpZ25hdHVyZSkgdHVwbGUsIG9yIE5vbmUuCiAgICAiIiIKICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSkgYW5kIG5vdCBhc19pbnN0YW5jZToKICAgICAgICAjIElmIGl0J3MgYSB0eXBlIGFuZCBzaG91bGQgYmUgbW9kZWxsZWQgYXMgYSB0eXBlLCB1c2UgX19pbml0X18uCiAgICAgICAgZnVuYyA9IGZ1bmMuX19pbml0X18KICAgICAgICAjIFNraXAgdGhlIGBzZWxmYCBhcmd1bWVudCBpbiBfX2luaXRfXwogICAgICAgIGVhdF9zZWxmID0gVHJ1ZQogICAgZWxpZiBub3QgaXNpbnN0YW5jZShmdW5jLCBGdW5jdGlvblR5cGVzKToKICAgICAgICAjIElmIHdlIHJlYWxseSB3YW50IHRvIG1vZGVsIGFuIGluc3RhbmNlIG9mIHRoZSBwYXNzZWQgdHlwZSwKICAgICAgICAjIF9fY2FsbF9fIHNob3VsZCBiZSBsb29rZWQgdXAsIG5vdCBfX2luaXRfXy4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGZ1bmMgPSBmdW5jLl9fY2FsbF9fCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgaWYgZWF0X3NlbGY6CiAgICAgICAgc2lnX2Z1bmMgPSBwYXJ0aWFsKGZ1bmMsIE5vbmUpCiAgICBlbHNlOgogICAgICAgIHNpZ19mdW5jID0gZnVuYwogICAgdHJ5OgogICAgICAgIHJldHVybiBmdW5jLCBpbnNwZWN0LnNpZ25hdHVyZShzaWdfZnVuYykKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICMgQ2VydGFpbiBjYWxsYWJsZSB0eXBlcyBhcmUgbm90IHN1cHBvcnRlZCBieSBpbnNwZWN0LnNpZ25hdHVyZSgpCiAgICAgICAgcmV0dXJuIE5vbmUKCgpkZWYgX2NoZWNrX3NpZ25hdHVyZShmdW5jLCBtb2NrLCBza2lwZmlyc3QsIGluc3RhbmNlPUZhbHNlKToKICAgIHNpZyA9IF9nZXRfc2lnbmF0dXJlX29iamVjdChmdW5jLCBpbnN0YW5jZSwgc2tpcGZpcnN0KQogICAgaWYgc2lnIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuCiAgICBmdW5jLCBzaWcgPSBzaWcKICAgIGRlZiBjaGVja3NpZyhzZWxmLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHNpZy5iaW5kKCphcmdzLCAqKmt3YXJncykKICAgIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBjaGVja3NpZykKICAgIHR5cGUobW9jaykuX21vY2tfY2hlY2tfc2lnID0gY2hlY2tzaWcKICAgIHR5cGUobW9jaykuX19zaWduYXR1cmVfXyA9IHNpZwoKCmRlZiBfY29weV9mdW5jX2RldGFpbHMoZnVuYywgZnVuY29weSk6CiAgICAjIHdlIGV4cGxpY2l0bHkgZG9uJ3QgY29weSBmdW5jLl9fZGljdF9fIGludG8gdGhpcyBjb3B5IGFzIGl0IHdvdWxkCiAgICAjIGV4cG9zZSBvcmlnaW5hbCBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIG1vY2tlZAogICAgZm9yIGF0dHJpYnV0ZSBpbiAoCiAgICAgICAgJ19fbmFtZV9fJywgJ19fZG9jX18nLCAnX190ZXh0X3NpZ25hdHVyZV9fJywKICAgICAgICAnX19tb2R1bGVfXycsICdfX2RlZmF1bHRzX18nLCAnX19rd2RlZmF1bHRzX18nLAogICAgKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNldGF0dHIoZnVuY29weSwgYXR0cmlidXRlLCBnZXRhdHRyKGZ1bmMsIGF0dHJpYnV0ZSkpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBwYXNzCgoKZGVmIF9jYWxsYWJsZShvYmopOgogICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgogICAgICAgIHJldHVybiBUcnVlCiAgICBpZiBpc2luc3RhbmNlKG9iaiwgKHN0YXRpY21ldGhvZCwgY2xhc3NtZXRob2QsIE1ldGhvZFR5cGUpKToKICAgICAgICByZXR1cm4gX2NhbGxhYmxlKG9iai5fX2Z1bmNfXykKICAgIGlmIGdldGF0dHIob2JqLCAnX19jYWxsX18nLCBOb25lKSBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm4gVHJ1ZQogICAgcmV0dXJuIEZhbHNlCgoKZGVmIF9pc19saXN0KG9iaik6CiAgICAjIGNoZWNrcyBmb3IgbGlzdCBvciB0dXBsZXMKICAgICMgWFhYWCBiYWRseSBuYW1lZCEKICAgIHJldHVybiB0eXBlKG9iaikgaW4gKGxpc3QsIHR1cGxlKQoKCmRlZiBfaW5zdGFuY2VfY2FsbGFibGUob2JqKToKICAgICIiIkdpdmVuIGFuIG9iamVjdCwgcmV0dXJuIFRydWUgaWYgdGhlIG9iamVjdCBpcyBjYWxsYWJsZS4KICAgIEZvciBjbGFzc2VzLCByZXR1cm4gVHJ1ZSBpZiBpbnN0YW5jZXMgd291bGQgYmUgY2FsbGFibGUuIiIiCiAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosIHR5cGUpOgogICAgICAgICMgYWxyZWFkeSBhbiBpbnN0YW5jZQogICAgICAgIHJldHVybiBnZXRhdHRyKG9iaiwgJ19fY2FsbF9fJywgTm9uZSkgaXMgbm90IE5vbmUKCiAgICAjICpjb3VsZCogYmUgYnJva2VuIGJ5IGEgY2xhc3Mgb3ZlcnJpZGluZyBfX21yb19fIG9yIF9fZGljdF9fIHZpYQogICAgIyBhIG1ldGFjbGFzcwogICAgZm9yIGJhc2UgaW4gKG9iaiwpICsgb2JqLl9fbXJvX186CiAgICAgICAgaWYgYmFzZS5fX2RpY3RfXy5nZXQoJ19fY2FsbF9fJykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCgpkZWYgX3NldF9zaWduYXR1cmUobW9jaywgb3JpZ2luYWwsIGluc3RhbmNlPUZhbHNlKToKICAgICMgY3JlYXRlcyBhIGZ1bmN0aW9uIHdpdGggc2lnbmF0dXJlICgqYXJncywgKiprd2FyZ3MpIHRoYXQgZGVsZWdhdGVzIHRvIGEKICAgICMgbW9jay4gSXQgc3RpbGwgZG9lcyBzaWduYXR1cmUgY2hlY2tpbmcgYnkgY2FsbGluZyBhIGxhbWJkYSB3aXRoIHRoZSBzYW1lCiAgICAjIHNpZ25hdHVyZSBhcyB0aGUgb3JpZ2luYWwuCgogICAgc2tpcGZpcnN0ID0gaXNpbnN0YW5jZShvcmlnaW5hbCwgdHlwZSkKICAgIHJlc3VsdCA9IF9nZXRfc2lnbmF0dXJlX29iamVjdChvcmlnaW5hbCwgaW5zdGFuY2UsIHNraXBmaXJzdCkKICAgIGlmIHJlc3VsdCBpcyBOb25lOgogICAgICAgIHJldHVybiBtb2NrCiAgICBmdW5jLCBzaWcgPSByZXN1bHQKICAgIGRlZiBjaGVja3NpZygqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHNpZy5iaW5kKCphcmdzLCAqKmt3YXJncykKICAgIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBjaGVja3NpZykKCiAgICBuYW1lID0gb3JpZ2luYWwuX19uYW1lX18KICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgIG5hbWUgPSAnZnVuY29weScKICAgIGNvbnRleHQgPSB7J19jaGVja3NpZ18nOiBjaGVja3NpZywgJ21vY2snOiBtb2NrfQogICAgc3JjID0gIiIiZGVmICVzKCphcmdzLCAqKmt3YXJncyk6CiAgICBfY2hlY2tzaWdfKCphcmdzLCAqKmt3YXJncykKICAgIHJldHVybiBtb2NrKCphcmdzLCAqKmt3YXJncykiIiIgJSBuYW1lCiAgICBleGVjIChzcmMsIGNvbnRleHQpCiAgICBmdW5jb3B5ID0gY29udGV4dFtuYW1lXQogICAgX3NldHVwX2Z1bmMoZnVuY29weSwgbW9jaywgc2lnKQogICAgcmV0dXJuIGZ1bmNvcHkKCgpkZWYgX3NldHVwX2Z1bmMoZnVuY29weSwgbW9jaywgc2lnKToKICAgIGZ1bmNvcHkubW9jayA9IG1vY2sKCiAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKICAgIGRlZiBhc3NlcnRfY2FsbGVkKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCiAgICBkZWYgYXNzZXJ0X25vdF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCiAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlKCphcmdzLCAqKmt3YXJncykKICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncykKICAgIGRlZiBhc3NlcnRfaGFzX2NhbGxzKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2hhc19jYWxscygqYXJncywgKiprd2FyZ3MpCiAgICBkZWYgYXNzZXJ0X2FueV9jYWxsKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2FueV9jYWxsKCphcmdzLCAqKmt3YXJncykKICAgIGRlZiByZXNldF9tb2NrKCk6CiAgICAgICAgZnVuY29weS5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQogICAgICAgIGZ1bmNvcHkubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCiAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKICAgICAgICByZXQgPSBmdW5jb3B5LnJldHVybl92YWx1ZQogICAgICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKHJldCkgYW5kIG5vdCByZXQgaXMgbW9jazoKICAgICAgICAgICAgcmV0LnJlc2V0X21vY2soKQoKICAgIGZ1bmNvcHkuY2FsbGVkID0gRmFsc2UKICAgIGZ1bmNvcHkuY2FsbF9jb3VudCA9IDAKICAgIGZ1bmNvcHkuY2FsbF9hcmdzID0gTm9uZQogICAgZnVuY29weS5jYWxsX2FyZ3NfbGlzdCA9IF9DYWxsTGlzdCgpCiAgICBmdW5jb3B5Lm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCiAgICBmdW5jb3B5Lm1vY2tfY2FsbHMgPSBfQ2FsbExpc3QoKQoKICAgIGZ1bmNvcHkucmV0dXJuX3ZhbHVlID0gbW9jay5yZXR1cm5fdmFsdWUKICAgIGZ1bmNvcHkuc2lkZV9lZmZlY3QgPSBtb2NrLnNpZGVfZWZmZWN0CiAgICBmdW5jb3B5Ll9tb2NrX2NoaWxkcmVuID0gbW9jay5fbW9ja19jaGlsZHJlbgoKICAgIGZ1bmNvcHkuYXNzZXJ0X2NhbGxlZF93aXRoID0gYXNzZXJ0X2NhbGxlZF93aXRoCiAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWRfb25jZV93aXRoID0gYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgKICAgIGZ1bmNvcHkuYXNzZXJ0X2hhc19jYWxscyA9IGFzc2VydF9oYXNfY2FsbHMKICAgIGZ1bmNvcHkuYXNzZXJ0X2FueV9jYWxsID0gYXNzZXJ0X2FueV9jYWxsCiAgICBmdW5jb3B5LnJlc2V0X21vY2sgPSByZXNldF9tb2NrCiAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWQgPSBhc3NlcnRfY2FsbGVkCiAgICBmdW5jb3B5LmFzc2VydF9ub3RfY2FsbGVkID0gYXNzZXJ0X25vdF9jYWxsZWQKICAgIGZ1bmNvcHkuYXNzZXJ0X2NhbGxlZF9vbmNlID0gYXNzZXJ0X2NhbGxlZF9vbmNlCiAgICBmdW5jb3B5Ll9fc2lnbmF0dXJlX18gPSBzaWcKCiAgICBtb2NrLl9tb2NrX2RlbGVnYXRlID0gZnVuY29weQoKCmRlZiBfc2V0dXBfYXN5bmNfbW9jayhtb2NrKToKICAgIG1vY2suX2lzX2Nvcm91dGluZSA9IGFzeW5jaW8uY29yb3V0aW5lcy5faXNfY29yb3V0aW5lCiAgICBtb2NrLmF3YWl0X2NvdW50ID0gMAogICAgbW9jay5hd2FpdF9hcmdzID0gTm9uZQogICAgbW9jay5hd2FpdF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQoKICAgICMgTW9jayBpcyBub3QgY29uZmlndXJlZCB5ZXQgc28gdGhlIGF0dHJpYnV0ZXMgYXJlIHNldAogICAgIyB0byBhIGZ1bmN0aW9uIGFuZCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIG1vY2sgaGVscGVyIGZ1bmN0aW9uCiAgICAjIGlzIGNhbGxlZCB3aGVuIHRoZSBoZWxwZXIgaXMgYWNjZXNzZWQgc2ltaWxhciB0byBfc2V0dXBfZnVuYy4KICAgIGRlZiB3cmFwcGVyKGF0dHIsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIGdldGF0dHIobW9jay5tb2NrLCBhdHRyKSgqYXJncywgKiprd2FyZ3MpCgogICAgZm9yIGF0dHJpYnV0ZSBpbiAoJ2Fzc2VydF9hd2FpdGVkJywKICAgICAgICAgICAgICAgICAgICAgICdhc3NlcnRfYXdhaXRlZF9vbmNlJywKICAgICAgICAgICAgICAgICAgICAgICdhc3NlcnRfYXdhaXRlZF93aXRoJywKICAgICAgICAgICAgICAgICAgICAgICdhc3NlcnRfYXdhaXRlZF9vbmNlX3dpdGgnLAogICAgICAgICAgICAgICAgICAgICAgJ2Fzc2VydF9hbnlfYXdhaXQnLAogICAgICAgICAgICAgICAgICAgICAgJ2Fzc2VydF9oYXNfYXdhaXRzJywKICAgICAgICAgICAgICAgICAgICAgICdhc3NlcnRfbm90X2F3YWl0ZWQnKToKCiAgICAgICAgIyBzZXRhdHRyKG1vY2ssIGF0dHJpYnV0ZSwgd3JhcHBlcikgY2F1c2VzIGxhdGUgYmluZGluZwogICAgICAgICMgaGVuY2UgYXR0cmlidXRlIHdpbGwgYWx3YXlzIGJlIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBsb29wCiAgICAgICAgIyBVc2UgcGFydGlhbCh3cmFwcGVyLCBhdHRyaWJ1dGUpIHRvIGVuc3VyZSB0aGUgYXR0cmlidXRlIGlzIGJvdW5kCiAgICAgICAgIyBjb3JyZWN0bHkuCiAgICAgICAgc2V0YXR0cihtb2NrLCBhdHRyaWJ1dGUsIHBhcnRpYWwod3JhcHBlciwgYXR0cmlidXRlKSkKCgpkZWYgX2lzX21hZ2ljKG5hbWUpOgogICAgcmV0dXJuICdfXyVzX18nICUgbmFtZVsyOi0yXSA9PSBuYW1lCgoKY2xhc3MgX1NlbnRpbmVsT2JqZWN0KG9iamVjdCk6CiAgICAiQSB1bmlxdWUsIG5hbWVkLCBzZW50aW5lbCBvYmplY3QuIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICdzZW50aW5lbC4lcycgJSBzZWxmLm5hbWUKCiAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICByZXR1cm4gJ3NlbnRpbmVsLiVzJyAlIHNlbGYubmFtZQoKCmNsYXNzIF9TZW50aW5lbChvYmplY3QpOgogICAgIiIiQWNjZXNzIGF0dHJpYnV0ZXMgdG8gcmV0dXJuIGEgbmFtZWQgb2JqZWN0LCB1c2FibGUgYXMgYSBzZW50aW5lbC4iIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9zZW50aW5lbHMgPSB7fQoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICBpZiBuYW1lID09ICdfX2Jhc2VzX18nOgogICAgICAgICAgICAjIFdpdGhvdXQgdGhpcyBoZWxwKHVuaXR0ZXN0Lm1vY2spIHJhaXNlcyBhbiBleGNlcHRpb24KICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKICAgICAgICByZXR1cm4gc2VsZi5fc2VudGluZWxzLnNldGRlZmF1bHQobmFtZSwgX1NlbnRpbmVsT2JqZWN0KG5hbWUpKQoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiAnc2VudGluZWwnCgoKc2VudGluZWwgPSBfU2VudGluZWwoKQoKREVGQVVMVCA9IHNlbnRpbmVsLkRFRkFVTFQKX21pc3NpbmcgPSBzZW50aW5lbC5NSVNTSU5HCl9kZWxldGVkID0gc2VudGluZWwuREVMRVRFRAoKCl9hbGxvd2VkX25hbWVzID0gewogICAgJ3JldHVybl92YWx1ZScsICdfbW9ja19yZXR1cm5fdmFsdWUnLCAnc2lkZV9lZmZlY3QnLAogICAgJ19tb2NrX3NpZGVfZWZmZWN0JywgJ19tb2NrX3BhcmVudCcsICdfbW9ja19uZXdfcGFyZW50JywKICAgICdfbW9ja19uYW1lJywgJ19tb2NrX25ld19uYW1lJwp9CgoKZGVmIF9kZWxlZ2F0aW5nX3Byb3BlcnR5KG5hbWUpOgogICAgX2FsbG93ZWRfbmFtZXMuYWRkKG5hbWUpCiAgICBfdGhlX25hbWUgPSAnX21vY2tfJyArIG5hbWUKICAgIGRlZiBfZ2V0KHNlbGYsIG5hbWU9bmFtZSwgX3RoZV9uYW1lPV90aGVfbmFtZSk6CiAgICAgICAgc2lnID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQogICAgICAgIGlmIHNpZyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBfdGhlX25hbWUpCiAgICAgICAgcmV0dXJuIGdldGF0dHIoc2lnLCBuYW1lKQogICAgZGVmIF9zZXQoc2VsZiwgdmFsdWUsIG5hbWU9bmFtZSwgX3RoZV9uYW1lPV90aGVfbmFtZSk6CiAgICAgICAgc2lnID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQogICAgICAgIGlmIHNpZyBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9fZGljdF9fW190aGVfbmFtZV0gPSB2YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNldGF0dHIoc2lnLCBuYW1lLCB2YWx1ZSkKCiAgICByZXR1cm4gcHJvcGVydHkoX2dldCwgX3NldCkKCgoKY2xhc3MgX0NhbGxMaXN0KGxpc3QpOgoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAgICAgcmV0dXJuIGxpc3QuX19jb250YWluc19fKHNlbGYsIHZhbHVlKQogICAgICAgIGxlbl92YWx1ZSA9IGxlbih2YWx1ZSkKICAgICAgICBsZW5fc2VsZiA9IGxlbihzZWxmKQogICAgICAgIGlmIGxlbl92YWx1ZSA+IGxlbl9zZWxmOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuX3NlbGYgLSBsZW5fdmFsdWUgKyAxKToKICAgICAgICAgICAgc3ViX2xpc3QgPSBzZWxmW2k6aStsZW5fdmFsdWVdCiAgICAgICAgICAgIGlmIHN1Yl9saXN0ID09IHZhbHVlOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHBwcmludC5wZm9ybWF0KGxpc3Qoc2VsZikpCgoKZGVmIF9jaGVja19hbmRfc2V0X3BhcmVudChwYXJlbnQsIHZhbHVlLCBuYW1lLCBuZXdfbmFtZSk6CiAgICB2YWx1ZSA9IF9leHRyYWN0X21vY2sodmFsdWUpCgogICAgaWYgbm90IF9pc19pbnN0YW5jZV9tb2NrKHZhbHVlKToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmICgodmFsdWUuX21vY2tfbmFtZSBvciB2YWx1ZS5fbW9ja19uZXdfbmFtZSkgb3IKICAgICAgICAodmFsdWUuX21vY2tfcGFyZW50IGlzIG5vdCBOb25lKSBvcgogICAgICAgICh2YWx1ZS5fbW9ja19uZXdfcGFyZW50IGlzIG5vdCBOb25lKSk6CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgX3BhcmVudCA9IHBhcmVudAogICAgd2hpbGUgX3BhcmVudCBpcyBub3QgTm9uZToKICAgICAgICAjIHNldHRpbmcgYSBtb2NrICh2YWx1ZSkgYXMgYSBjaGlsZCBvciByZXR1cm4gdmFsdWUgb2YgaXRzZWxmCiAgICAgICAgIyBzaG91bGQgbm90IG1vZGlmeSB0aGUgbW9jawogICAgICAgIGlmIF9wYXJlbnQgaXMgdmFsdWU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIF9wYXJlbnQgPSBfcGFyZW50Ll9tb2NrX25ld19wYXJlbnQKCiAgICBpZiBuZXdfbmFtZToKICAgICAgICB2YWx1ZS5fbW9ja19uZXdfcGFyZW50ID0gcGFyZW50CiAgICAgICAgdmFsdWUuX21vY2tfbmV3X25hbWUgPSBuZXdfbmFtZQogICAgaWYgbmFtZToKICAgICAgICB2YWx1ZS5fbW9ja19wYXJlbnQgPSBwYXJlbnQKICAgICAgICB2YWx1ZS5fbW9ja19uYW1lID0gbmFtZQogICAgcmV0dXJuIFRydWUKCiMgSW50ZXJuYWwgY2xhc3MgdG8gaWRlbnRpZnkgaWYgd2Ugd3JhcHBlZCBhbiBpdGVyYXRvciBvYmplY3Qgb3Igbm90LgpjbGFzcyBfTW9ja0l0ZXIob2JqZWN0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgogICAgICAgIHNlbGYub2JqID0gaXRlcihvYmopCiAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5vYmopCgpjbGFzcyBCYXNlKG9iamVjdCk6CiAgICBfbW9ja19yZXR1cm5fdmFsdWUgPSBERUZBVUxUCiAgICBfbW9ja19zaWRlX2VmZmVjdCA9IE5vbmUKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHBhc3MKCgoKY2xhc3MgTm9uQ2FsbGFibGVNb2NrKEJhc2UpOgogICAgIiIiQSBub24tY2FsbGFibGUgdmVyc2lvbiBvZiBgTW9ja2AiIiIKCiAgICAjIFN0b3JlIGEgbXV0ZXggYXMgYSBjbGFzcyBhdHRyaWJ1dGUgaW4gb3JkZXIgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2VzcwogICAgIyB0byBtb2NrIGF0dHJpYnV0ZXMuIFVzaW5nIGEgY2xhc3MgYXR0cmlidXRlIGFsbG93cyBhbGwgTm9uQ2FsbGFibGVNb2NrCiAgICAjIGluc3RhbmNlcyB0byBzaGFyZSB0aGUgbXV0ZXggZm9yIHNpbXBsaWNpdHkuCiAgICAjCiAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vaXNzdWVzLzk4NjI0IGZvciB3aHkgdGhpcyBpcwogICAgIyBuZWNlc3NhcnkuCiAgICBfbG9jayA9IFJMb2NrKCkKCiAgICBkZWYgX19uZXdfXyhjbHMsIC8sICphcmdzLCAqKmt3KToKICAgICAgICAjIGV2ZXJ5IGluc3RhbmNlIGhhcyBpdHMgb3duIGNsYXNzCiAgICAgICAgIyBzbyB3ZSBjYW4gY3JlYXRlIG1hZ2ljIG1ldGhvZHMgb24gdGhlCiAgICAgICAgIyBjbGFzcyB3aXRob3V0IHN0b21waW5nIG9uIG90aGVyIG1vY2tzCiAgICAgICAgYmFzZXMgPSAoY2xzLCkKICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhjbHMsIEFzeW5jTW9ja01peGluKToKICAgICAgICAgICAgIyBDaGVjayBpZiBzcGVjIGlzIGFuIGFzeW5jIG9iamVjdCBvciBmdW5jdGlvbgogICAgICAgICAgICBib3VuZF9hcmdzID0gX01PQ0tfU0lHLmJpbmRfcGFydGlhbChjbHMsICphcmdzLCAqKmt3KS5hcmd1bWVudHMKICAgICAgICAgICAgc3BlY19hcmcgPSBib3VuZF9hcmdzLmdldCgnc3BlY19zZXQnLCBib3VuZF9hcmdzLmdldCgnc3BlYycpKQogICAgICAgICAgICBpZiBzcGVjX2FyZyBpcyBub3QgTm9uZSBhbmQgX2lzX2FzeW5jX29iaihzcGVjX2FyZyk6CiAgICAgICAgICAgICAgICBiYXNlcyA9IChBc3luY01vY2tNaXhpbiwgY2xzKQogICAgICAgIG5ldyA9IHR5cGUoY2xzLl9fbmFtZV9fLCBiYXNlcywgeydfX2RvY19fJzogY2xzLl9fZG9jX199KQogICAgICAgIGluc3RhbmNlID0gX3NhZmVfc3VwZXIoTm9uQ2FsbGFibGVNb2NrLCBjbHMpLl9fbmV3X18obmV3KQogICAgICAgIHJldHVybiBpbnN0YW5jZQoKCiAgICBkZWYgX19pbml0X18oCiAgICAgICAgICAgIHNlbGYsIHNwZWM9Tm9uZSwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLAogICAgICAgICAgICBwYXJlbnQ9Tm9uZSwgX3NwZWNfc3RhdGU9Tm9uZSwgX25ld19uYW1lPScnLCBfbmV3X3BhcmVudD1Ob25lLAogICAgICAgICAgICBfc3BlY19hc19pbnN0YW5jZT1GYWxzZSwgX2VhdF9zZWxmPU5vbmUsIHVuc2FmZT1GYWxzZSwgKiprd2FyZ3MKICAgICAgICApOgogICAgICAgIGlmIF9uZXdfcGFyZW50IGlzIE5vbmU6CiAgICAgICAgICAgIF9uZXdfcGFyZW50ID0gcGFyZW50CgogICAgICAgIF9fZGljdF9fID0gc2VsZi5fX2RpY3RfXwogICAgICAgIF9fZGljdF9fWydfbW9ja19wYXJlbnQnXSA9IHBhcmVudAogICAgICAgIF9fZGljdF9fWydfbW9ja19uYW1lJ10gPSBuYW1lCiAgICAgICAgX19kaWN0X19bJ19tb2NrX25ld19uYW1lJ10gPSBfbmV3X25hbWUKICAgICAgICBfX2RpY3RfX1snX21vY2tfbmV3X3BhcmVudCddID0gX25ld19wYXJlbnQKICAgICAgICBfX2RpY3RfX1snX21vY2tfc2VhbGVkJ10gPSBGYWxzZQoKICAgICAgICBpZiBzcGVjX3NldCBpcyBub3QgTm9uZToKICAgICAgICAgICAgc3BlYyA9IHNwZWNfc2V0CiAgICAgICAgICAgIHNwZWNfc2V0ID0gVHJ1ZQogICAgICAgIGlmIF9lYXRfc2VsZiBpcyBOb25lOgogICAgICAgICAgICBfZWF0X3NlbGYgPSBwYXJlbnQgaXMgbm90IE5vbmUKCiAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCwgX3NwZWNfYXNfaW5zdGFuY2UsIF9lYXRfc2VsZikKCiAgICAgICAgX19kaWN0X19bJ19tb2NrX2NoaWxkcmVuJ10gPSB7fQogICAgICAgIF9fZGljdF9fWydfbW9ja193cmFwcyddID0gd3JhcHMKICAgICAgICBfX2RpY3RfX1snX21vY2tfZGVsZWdhdGUnXSA9IE5vbmUKCiAgICAgICAgX19kaWN0X19bJ19tb2NrX2NhbGxlZCddID0gRmFsc2UKICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbF9hcmdzJ10gPSBOb25lCiAgICAgICAgX19kaWN0X19bJ19tb2NrX2NhbGxfY291bnQnXSA9IDAKICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbF9hcmdzX2xpc3QnXSA9IF9DYWxsTGlzdCgpCiAgICAgICAgX19kaWN0X19bJ19tb2NrX21vY2tfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCgogICAgICAgIF9fZGljdF9fWydtZXRob2RfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCiAgICAgICAgX19kaWN0X19bJ19tb2NrX3Vuc2FmZSddID0gdW5zYWZlCgogICAgICAgIGlmIGt3YXJnczoKICAgICAgICAgICAgc2VsZi5jb25maWd1cmVfbW9jaygqKmt3YXJncykKCiAgICAgICAgX3NhZmVfc3VwZXIoTm9uQ2FsbGFibGVNb2NrLCBzZWxmKS5fX2luaXRfXygKICAgICAgICAgICAgc3BlYywgd3JhcHMsIG5hbWUsIHNwZWNfc2V0LCBwYXJlbnQsCiAgICAgICAgICAgIF9zcGVjX3N0YXRlCiAgICAgICAgKQoKCiAgICBkZWYgYXR0YWNoX21vY2soc2VsZiwgbW9jaywgYXR0cmlidXRlKToKICAgICAgICAiIiIKICAgICAgICBBdHRhY2ggYSBtb2NrIGFzIGFuIGF0dHJpYnV0ZSBvZiB0aGlzIG9uZSwgcmVwbGFjaW5nIGl0cyBuYW1lIGFuZAogICAgICAgIHBhcmVudC4gQ2FsbHMgdG8gdGhlIGF0dGFjaGVkIG1vY2sgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUKICAgICAgICBgbWV0aG9kX2NhbGxzYCBhbmQgYG1vY2tfY2FsbHNgIGF0dHJpYnV0ZXMgb2YgdGhpcyBvbmUuIiIiCiAgICAgICAgaW5uZXJfbW9jayA9IF9leHRyYWN0X21vY2sobW9jaykKCiAgICAgICAgaW5uZXJfbW9jay5fbW9ja19wYXJlbnQgPSBOb25lCiAgICAgICAgaW5uZXJfbW9jay5fbW9ja19uZXdfcGFyZW50ID0gTm9uZQogICAgICAgIGlubmVyX21vY2suX21vY2tfbmFtZSA9ICcnCiAgICAgICAgaW5uZXJfbW9jay5fbW9ja19uZXdfbmFtZSA9IE5vbmUKCiAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyaWJ1dGUsIG1vY2spCgoKICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCiAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgoKICAgICAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4iIiIKICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQoKCiAgICBkZWYgX21vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQsIF9zcGVjX2FzX2luc3RhbmNlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgIF9lYXRfc2VsZj1GYWxzZSk6CiAgICAgICAgaWYgX2lzX2luc3RhbmNlX21vY2soc3BlYyk6CiAgICAgICAgICAgIHJhaXNlIEludmFsaWRTcGVjRXJyb3IoZidDYW5ub3Qgc3BlYyBhIE1vY2sgb2JqZWN0LiBbb2JqZWN0PXtzcGVjIXJ9XScpCgogICAgICAgIF9zcGVjX2NsYXNzID0gTm9uZQogICAgICAgIF9zcGVjX3NpZ25hdHVyZSA9IE5vbmUKICAgICAgICBfc3BlY19hc3luY3MgPSBbXQoKICAgICAgICBmb3IgYXR0ciBpbiBkaXIoc3BlYyk6CiAgICAgICAgICAgIGlmIGlzY29yb3V0aW5lZnVuY3Rpb24oZ2V0YXR0cihzcGVjLCBhdHRyLCBOb25lKSk6CiAgICAgICAgICAgICAgICBfc3BlY19hc3luY3MuYXBwZW5kKGF0dHIpCgogICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgYW5kIG5vdCBfaXNfbGlzdChzcGVjKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzcGVjLCB0eXBlKToKICAgICAgICAgICAgICAgIF9zcGVjX2NsYXNzID0gc3BlYwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgX3NwZWNfY2xhc3MgPSB0eXBlKHNwZWMpCiAgICAgICAgICAgIHJlcyA9IF9nZXRfc2lnbmF0dXJlX29iamVjdChzcGVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NwZWNfYXNfaW5zdGFuY2UsIF9lYXRfc2VsZikKICAgICAgICAgICAgX3NwZWNfc2lnbmF0dXJlID0gcmVzIGFuZCByZXNbMV0KCiAgICAgICAgICAgIHNwZWMgPSBkaXIoc3BlYykKCiAgICAgICAgX19kaWN0X18gPSBzZWxmLl9fZGljdF9fCiAgICAgICAgX19kaWN0X19bJ19zcGVjX2NsYXNzJ10gPSBfc3BlY19jbGFzcwogICAgICAgIF9fZGljdF9fWydfc3BlY19zZXQnXSA9IHNwZWNfc2V0CiAgICAgICAgX19kaWN0X19bJ19zcGVjX3NpZ25hdHVyZSddID0gX3NwZWNfc2lnbmF0dXJlCiAgICAgICAgX19kaWN0X19bJ19tb2NrX21ldGhvZHMnXSA9IHNwZWMKICAgICAgICBfX2RpY3RfX1snX3NwZWNfYXN5bmNzJ10gPSBfc3BlY19hc3luY3MKCiAgICBkZWYgX19nZXRfcmV0dXJuX3ZhbHVlKHNlbGYpOgogICAgICAgIHJldCA9IHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlCiAgICAgICAgaWYgc2VsZi5fbW9ja19kZWxlZ2F0ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19kZWxlZ2F0ZS5yZXR1cm5fdmFsdWUKCiAgICAgICAgaWYgcmV0IGlzIERFRkFVTFQ6CiAgICAgICAgICAgIHJldCA9IHNlbGYuX2dldF9jaGlsZF9tb2NrKAogICAgICAgICAgICAgICAgX25ld19wYXJlbnQ9c2VsZiwgX25ld19uYW1lPScoKScKICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLnJldHVybl92YWx1ZSA9IHJldAogICAgICAgIHJldHVybiByZXQKCgogICAgZGVmIF9fc2V0X3JldHVybl92YWx1ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgaWYgc2VsZi5fbW9ja19kZWxlZ2F0ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fbW9ja19kZWxlZ2F0ZS5yZXR1cm5fdmFsdWUgPSB2YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlID0gdmFsdWUKICAgICAgICAgICAgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBOb25lLCAnKCknKQoKICAgIF9fcmV0dXJuX3ZhbHVlX2RvYyA9ICJUaGUgdmFsdWUgdG8gYmUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIgogICAgcmV0dXJuX3ZhbHVlID0gcHJvcGVydHkoX19nZXRfcmV0dXJuX3ZhbHVlLCBfX3NldF9yZXR1cm5fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JldHVybl92YWx1ZV9kb2MpCgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9fY2xhc3NfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9zcGVjX2NsYXNzIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpCiAgICAgICAgcmV0dXJuIHNlbGYuX3NwZWNfY2xhc3MKCiAgICBjYWxsZWQgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbGVkJykKICAgIGNhbGxfY291bnQgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9jb3VudCcpCiAgICBjYWxsX2FyZ3MgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9hcmdzJykKICAgIGNhbGxfYXJnc19saXN0ID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2NhbGxfYXJnc19saXN0JykKICAgIG1vY2tfY2FsbHMgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnbW9ja19jYWxscycpCgoKICAgIGRlZiBfX2dldF9zaWRlX2VmZmVjdChzZWxmKToKICAgICAgICBkZWxlZ2F0ZWQgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCiAgICAgICAgaWYgZGVsZWdhdGVkIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0CiAgICAgICAgc2YgPSBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QKICAgICAgICBpZiAoc2YgaXMgbm90IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShzZikKICAgICAgICAgICAgICAgIGFuZCBub3QgaXNpbnN0YW5jZShzZiwgX01vY2tJdGVyKSBhbmQgbm90IF9pc19leGNlcHRpb24oc2YpKToKICAgICAgICAgICAgc2YgPSBfTW9ja0l0ZXIoc2YpCiAgICAgICAgICAgIGRlbGVnYXRlZC5zaWRlX2VmZmVjdCA9IHNmCiAgICAgICAgcmV0dXJuIHNmCgogICAgZGVmIF9fc2V0X3NpZGVfZWZmZWN0KHNlbGYsIHZhbHVlKToKICAgICAgICB2YWx1ZSA9IF90cnlfaXRlcih2YWx1ZSkKICAgICAgICBkZWxlZ2F0ZWQgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCiAgICAgICAgaWYgZGVsZWdhdGVkIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX21vY2tfc2lkZV9lZmZlY3QgPSB2YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRlbGVnYXRlZC5zaWRlX2VmZmVjdCA9IHZhbHVlCgogICAgc2lkZV9lZmZlY3QgPSBwcm9wZXJ0eShfX2dldF9zaWRlX2VmZmVjdCwgX19zZXRfc2lkZV9lZmZlY3QpCgoKICAgIGRlZiByZXNldF9tb2NrKHNlbGYsICB2aXNpdGVkPU5vbmUsKiwgcmV0dXJuX3ZhbHVlPUZhbHNlLCBzaWRlX2VmZmVjdD1GYWxzZSk6CiAgICAgICAgIlJlc3RvcmUgdGhlIG1vY2sgb2JqZWN0IHRvIGl0cyBpbml0aWFsIHN0YXRlLiIKICAgICAgICBpZiB2aXNpdGVkIGlzIE5vbmU6CiAgICAgICAgICAgIHZpc2l0ZWQgPSBbXQogICAgICAgIGlmIGlkKHNlbGYpIGluIHZpc2l0ZWQ6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIHZpc2l0ZWQuYXBwZW5kKGlkKHNlbGYpKQoKICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5jYWxsX2FyZ3MgPSBOb25lCiAgICAgICAgc2VsZi5jYWxsX2NvdW50ID0gMAogICAgICAgIHNlbGYubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCiAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdCA9IF9DYWxsTGlzdCgpCiAgICAgICAgc2VsZi5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQoKICAgICAgICBpZiByZXR1cm5fdmFsdWU6CiAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlID0gREVGQVVMVAogICAgICAgIGlmIHNpZGVfZWZmZWN0OgogICAgICAgICAgICBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0ID0gTm9uZQoKICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5fbW9ja19jaGlsZHJlbi52YWx1ZXMoKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjaGlsZCwgX1NwZWNTdGF0ZSkgb3IgY2hpbGQgaXMgX2RlbGV0ZWQ6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBjaGlsZC5yZXNldF9tb2NrKHZpc2l0ZWQsIHJldHVybl92YWx1ZT1yZXR1cm5fdmFsdWUsIHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQoKICAgICAgICByZXQgPSBzZWxmLl9tb2NrX3JldHVybl92YWx1ZQogICAgICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKHJldCkgYW5kIHJldCBpcyBub3Qgc2VsZjoKICAgICAgICAgICAgcmV0LnJlc2V0X21vY2sodmlzaXRlZCkKCgogICAgZGVmIGNvbmZpZ3VyZV9tb2NrKHNlbGYsIC8sICoqa3dhcmdzKToKICAgICAgICAiIiJTZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aHJvdWdoIGtleXdvcmQgYXJndW1lbnRzLgoKICAgICAgICBBdHRyaWJ1dGVzIHBsdXMgcmV0dXJuIHZhbHVlcyBhbmQgc2lkZSBlZmZlY3RzIGNhbiBiZSBzZXQgb24gY2hpbGQKICAgICAgICBtb2NrcyB1c2luZyBzdGFuZGFyZCBkb3Qgbm90YXRpb24gYW5kIHVucGFja2luZyBhIGRpY3Rpb25hcnkgaW4gdGhlCiAgICAgICAgbWV0aG9kIGNhbGw6CgogICAgICAgID4+PiBhdHRycyA9IHsnbWV0aG9kLnJldHVybl92YWx1ZSc6IDMsICdvdGhlci5zaWRlX2VmZmVjdCc6IEtleUVycm9yfQogICAgICAgID4+PiBtb2NrLmNvbmZpZ3VyZV9tb2NrKCoqYXR0cnMpIiIiCiAgICAgICAgZm9yIGFyZywgdmFsIGluIHNvcnRlZChrd2FyZ3MuaXRlbXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2Ugc29ydCBvbiB0aGUgbnVtYmVyIG9mIGRvdHMgc28gdGhhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRyaWJ1dGVzIGFyZSBzZXQgYmVmb3JlIHdlIHNldCBhdHRyaWJ1dGVzIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1sYW1iZGEgZW50cnk6IGVudHJ5WzBdLmNvdW50KCcuJykpOgogICAgICAgICAgICBhcmdzID0gYXJnLnNwbGl0KCcuJykKICAgICAgICAgICAgZmluYWwgPSBhcmdzLnBvcCgpCiAgICAgICAgICAgIG9iaiA9IHNlbGYKICAgICAgICAgICAgZm9yIGVudHJ5IGluIGFyZ3M6CiAgICAgICAgICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgZW50cnkpCiAgICAgICAgICAgIHNldGF0dHIob2JqLCBmaW5hbCwgdmFsKQoKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgaWYgbmFtZSBpbiB7J19tb2NrX21ldGhvZHMnLCAnX21vY2tfdW5zYWZlJ306CiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCiAgICAgICAgZWxpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kcyBvciBuYW1lIGluIF9hbGxfbWFnaWNzOgogICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgbmFtZSkKICAgICAgICBlbGlmIF9pc19tYWdpYyhuYW1lKToKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKICAgICAgICBpZiBub3Qgc2VsZi5fbW9ja191bnNhZmUgYW5kIChub3Qgc2VsZi5fbW9ja19tZXRob2RzIG9yIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kcyk6CiAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgoJ2Fzc2VydCcsICdhc3NyZXQnLCAnYXNlcnQnLCAnYXNlZXJ0JywgJ2Fzc3J0JykpOgogICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgZiJ7bmFtZSFyfSBpcyBub3QgYSB2YWxpZCBhc3NlcnRpb24uIFVzZSBhIHNwZWMgIgogICAgICAgICAgICAgICAgICAgIGYiZm9yIHRoZSBtb2NrIGlmIHtuYW1lIXJ9IGlzIG1lYW50IHRvIGJlIGFuIGF0dHJpYnV0ZS4iKQoKICAgICAgICB3aXRoIE5vbkNhbGxhYmxlTW9jay5fbG9jazoKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fbW9ja19jaGlsZHJlbi5nZXQobmFtZSkKICAgICAgICAgICAgaWYgcmVzdWx0IGlzIF9kZWxldGVkOgogICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKICAgICAgICAgICAgZWxpZiByZXN1bHQgaXMgTm9uZToKICAgICAgICAgICAgICAgIHdyYXBzID0gTm9uZQogICAgICAgICAgICAgICAgaWYgc2VsZi5fbW9ja193cmFwcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAjIFhYWFggc2hvdWxkIHdlIGdldCB0aGUgYXR0cmlidXRlIHdpdGhvdXQgdHJpZ2dlcmluZyBjb2RlCiAgICAgICAgICAgICAgICAgICAgIyBleGVjdXRpb24/CiAgICAgICAgICAgICAgICAgICAgd3JhcHMgPSBnZXRhdHRyKHNlbGYuX21vY2tfd3JhcHMsIG5hbWUpCgogICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X2NoaWxkX21vY2soCiAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYsIG5hbWU9bmFtZSwgd3JhcHM9d3JhcHMsIF9uZXdfbmFtZT1uYW1lLAogICAgICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXNlbGYKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gID0gcmVzdWx0CgogICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVzdWx0LCBfU3BlY1N0YXRlKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVfYXV0b3NwZWMoCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zcGVjLCByZXN1bHQuc3BlY19zZXQsIHJlc3VsdC5pbnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnBhcmVudCwgcmVzdWx0Lm5hbWUKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBleGNlcHQgSW52YWxpZFNwZWNFcnJvcjoKICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbmFtZSA9IHNlbGYuX19kaWN0X19bJ19tb2NrX25hbWUnXSBvciBzZWxmCiAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFNwZWNFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgZidDYW5ub3QgYXV0b3NwZWMgYXR0ciB7bmFtZSFyfSBmcm9tIHRhcmdldCAnCiAgICAgICAgICAgICAgICAgICAgICAgIGYne3RhcmdldF9uYW1lIXJ9IGFzIGl0IGhhcyBhbHJlYWR5IGJlZW4gbW9ja2VkIG91dC4gJwogICAgICAgICAgICAgICAgICAgICAgICBmJ1t0YXJnZXQ9e3NlbGYhcn0sIGF0dHI9e3Jlc3VsdC5zcGVjIXJ9XScpCiAgICAgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdICA9IHJlc3VsdAoKICAgICAgICByZXR1cm4gcmVzdWx0CgoKICAgIGRlZiBfZXh0cmFjdF9tb2NrX25hbWUoc2VsZik6CiAgICAgICAgX25hbWVfbGlzdCA9IFtzZWxmLl9tb2NrX25ld19uYW1lXQogICAgICAgIF9wYXJlbnQgPSBzZWxmLl9tb2NrX25ld19wYXJlbnQKICAgICAgICBsYXN0ID0gc2VsZgoKICAgICAgICBkb3QgPSAnLicKICAgICAgICBpZiBfbmFtZV9saXN0ID09IFsnKCknXToKICAgICAgICAgICAgZG90ID0gJycKCiAgICAgICAgd2hpbGUgX3BhcmVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgbGFzdCA9IF9wYXJlbnQKCiAgICAgICAgICAgIF9uYW1lX2xpc3QuYXBwZW5kKF9wYXJlbnQuX21vY2tfbmV3X25hbWUgKyBkb3QpCiAgICAgICAgICAgIGRvdCA9ICcuJwogICAgICAgICAgICBpZiBfcGFyZW50Ll9tb2NrX25ld19uYW1lID09ICcoKSc6CiAgICAgICAgICAgICAgICBkb3QgPSAnJwoKICAgICAgICAgICAgX3BhcmVudCA9IF9wYXJlbnQuX21vY2tfbmV3X3BhcmVudAoKICAgICAgICBfbmFtZV9saXN0ID0gbGlzdChyZXZlcnNlZChfbmFtZV9saXN0KSkKICAgICAgICBfZmlyc3QgPSBsYXN0Ll9tb2NrX25hbWUgb3IgJ21vY2snCiAgICAgICAgaWYgbGVuKF9uYW1lX2xpc3QpID4gMToKICAgICAgICAgICAgaWYgX25hbWVfbGlzdFsxXSBub3QgaW4gKCcoKScsICcoKS4nKToKICAgICAgICAgICAgICAgIF9maXJzdCArPSAnLicKICAgICAgICBfbmFtZV9saXN0WzBdID0gX2ZpcnN0CiAgICAgICAgcmV0dXJuICcnLmpvaW4oX25hbWVfbGlzdCkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgbmFtZSA9IHNlbGYuX2V4dHJhY3RfbW9ja19uYW1lKCkKCiAgICAgICAgbmFtZV9zdHJpbmcgPSAnJwogICAgICAgIGlmIG5hbWUgbm90IGluICgnbW9jaycsICdtb2NrLicpOgogICAgICAgICAgICBuYW1lX3N0cmluZyA9ICcgbmFtZT0lcicgJSBuYW1lCgogICAgICAgIHNwZWNfc3RyaW5nID0gJycKICAgICAgICBpZiBzZWxmLl9zcGVjX2NsYXNzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzcGVjX3N0cmluZyA9ICcgc3BlYz0lcicKICAgICAgICAgICAgaWYgc2VsZi5fc3BlY19zZXQ6CiAgICAgICAgICAgICAgICBzcGVjX3N0cmluZyA9ICcgc3BlY19zZXQ9JXInCiAgICAgICAgICAgIHNwZWNfc3RyaW5nID0gc3BlY19zdHJpbmcgJSBzZWxmLl9zcGVjX2NsYXNzLl9fbmFtZV9fCiAgICAgICAgcmV0dXJuICI8JXMlcyVzIGlkPSclcyc+IiAlICgKICAgICAgICAgICAgdHlwZShzZWxmKS5fX25hbWVfXywKICAgICAgICAgICAgbmFtZV9zdHJpbmcsCiAgICAgICAgICAgIHNwZWNfc3RyaW5nLAogICAgICAgICAgICBpZChzZWxmKQogICAgICAgICkKCgogICAgZGVmIF9fZGlyX18oc2VsZik6CiAgICAgICAgIiIiRmlsdGVyIHRoZSBvdXRwdXQgb2YgYGRpcihtb2NrKWAgdG8gb25seSB1c2VmdWwgbWVtYmVycy4iIiIKICAgICAgICBpZiBub3QgRklMVEVSX0RJUjoKICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2Rpcl9fKHNlbGYpCgogICAgICAgIGV4dHJhcyA9IHNlbGYuX21vY2tfbWV0aG9kcyBvciBbXQogICAgICAgIGZyb21fdHlwZSA9IGRpcih0eXBlKHNlbGYpKQogICAgICAgIGZyb21fZGljdCA9IGxpc3Qoc2VsZi5fX2RpY3RfXykKICAgICAgICBmcm9tX2NoaWxkX21vY2tzID0gWwogICAgICAgICAgICBtX25hbWUgZm9yIG1fbmFtZSwgbV92YWx1ZSBpbiBzZWxmLl9tb2NrX2NoaWxkcmVuLml0ZW1zKCkKICAgICAgICAgICAgaWYgbV92YWx1ZSBpcyBub3QgX2RlbGV0ZWRdCgogICAgICAgIGZyb21fdHlwZSA9IFtlIGZvciBlIGluIGZyb21fdHlwZSBpZiBub3QgZS5zdGFydHN3aXRoKCdfJyldCiAgICAgICAgZnJvbV9kaWN0ID0gW2UgZm9yIGUgaW4gZnJvbV9kaWN0IGlmIG5vdCBlLnN0YXJ0c3dpdGgoJ18nKSBvcgogICAgICAgICAgICAgICAgICAgICBfaXNfbWFnaWMoZSldCiAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQoZXh0cmFzICsgZnJvbV90eXBlICsgZnJvbV9kaWN0ICsgZnJvbV9jaGlsZF9tb2NrcykpCgoKICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgaWYgbmFtZSBpbiBfYWxsb3dlZF9uYW1lczoKICAgICAgICAgICAgIyBwcm9wZXJ0eSBzZXR0ZXJzIGdvIHRocm91Z2ggaGVyZQogICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQogICAgICAgIGVsaWYgKHNlbGYuX3NwZWNfc2V0IGFuZCBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kcyBhbmQKICAgICAgICAgICAgbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXyk6CiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKICAgICAgICBlbGlmIG5hbWUgaW4gX3Vuc3VwcG9ydGVkX21hZ2ljczoKICAgICAgICAgICAgbXNnID0gJ0F0dGVtcHRpbmcgdG8gc2V0IHVuc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZCAlci4nICUgbmFtZQogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihtc2cpCiAgICAgICAgZWxpZiBuYW1lIGluIF9hbGxfbWFnaWNzOgogICAgICAgICAgICBpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmUgYW5kIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kczoKICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKCiAgICAgICAgICAgIGlmIG5vdCBfaXNfaW5zdGFuY2VfbW9jayh2YWx1ZSk6CiAgICAgICAgICAgICAgICBzZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUsIF9nZXRfbWV0aG9kKG5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgICAgIG9yaWdpbmFsID0gdmFsdWUKICAgICAgICAgICAgICAgIHZhbHVlID0gbGFtYmRhICphcmdzLCAqKmt3OiBvcmlnaW5hbChzZWxmLCAqYXJncywgKiprdykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgb25seSBzZXQgX25ld19uYW1lIGFuZCBub3QgbmFtZSBzbyB0aGF0IG1vY2tfY2FsbHMgaXMgdHJhY2tlZAogICAgICAgICAgICAgICAgIyBidXQgbm90IG1ldGhvZCBjYWxscwogICAgICAgICAgICAgICAgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBOb25lLCBuYW1lKQogICAgICAgICAgICAgICAgc2V0YXR0cih0eXBlKHNlbGYpLCBuYW1lLCB2YWx1ZSkKICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSB2YWx1ZQogICAgICAgIGVsaWYgbmFtZSA9PSAnX19jbGFzc19fJzoKICAgICAgICAgICAgc2VsZi5fc3BlY19jbGFzcyA9IHZhbHVlCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIF9jaGVja19hbmRfc2V0X3BhcmVudChzZWxmLCB2YWx1ZSwgbmFtZSwgbmFtZSk6CiAgICAgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdID0gdmFsdWUKCiAgICAgICAgaWYgc2VsZi5fbW9ja19zZWFsZWQgYW5kIG5vdCBoYXNhdHRyKHNlbGYsIG5hbWUpOgogICAgICAgICAgICBtb2NrX25hbWUgPSBmJ3tzZWxmLl9leHRyYWN0X21vY2tfbmFtZSgpfS57bmFtZX0nCiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGYnQ2Fubm90IHNldCB7bW9ja19uYW1lfScpCgogICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCgoKICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICBpZiBuYW1lIGluIF9hbGxfbWFnaWNzIGFuZCBuYW1lIGluIHR5cGUoc2VsZikuX19kaWN0X186CiAgICAgICAgICAgIGRlbGF0dHIodHlwZShzZWxmKSwgbmFtZSkKICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXzoKICAgICAgICAgICAgICAgICMgZm9yIG1hZ2ljIG1ldGhvZHMgdGhhdCBhcmUgc3RpbGwgTWFnaWNQcm94eSBvYmplY3RzIGFuZAogICAgICAgICAgICAgICAgIyBub3Qgc2V0IG9uIHRoZSBpbnN0YW5jZSBpdHNlbGYKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICBvYmogPSBzZWxmLl9tb2NrX2NoaWxkcmVuLmdldChuYW1lLCBfbWlzc2luZykKICAgICAgICBpZiBuYW1lIGluIHNlbGYuX19kaWN0X186CiAgICAgICAgICAgIF9zYWZlX3N1cGVyKE5vbkNhbGxhYmxlTW9jaywgc2VsZikuX19kZWxhdHRyX18obmFtZSkKICAgICAgICBlbGlmIG9iaiBpcyBfZGVsZXRlZDoKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKICAgICAgICBpZiBvYmogaXMgbm90IF9taXNzaW5nOgogICAgICAgICAgICBkZWwgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXQogICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSBfZGVsZXRlZAoKCiAgICBkZWYgX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKHNlbGYsIGFyZ3MsIGt3YXJncyk6CiAgICAgICAgbmFtZSA9IHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycKICAgICAgICByZXR1cm4gX2Zvcm1hdF9jYWxsX3NpZ25hdHVyZShuYW1lLCBhcmdzLCBrd2FyZ3MpCgoKICAgIGRlZiBfZm9ybWF0X21vY2tfZmFpbHVyZV9tZXNzYWdlKHNlbGYsIGFyZ3MsIGt3YXJncywgYWN0aW9uPSdjYWxsJyk6CiAgICAgICAgbWVzc2FnZSA9ICdleHBlY3RlZCAlcyBub3QgZm91bmQuXG5FeHBlY3RlZDogJXNcbkFjdHVhbDogJXMnCiAgICAgICAgZXhwZWN0ZWRfc3RyaW5nID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoYXJncywga3dhcmdzKQogICAgICAgIGNhbGxfYXJncyA9IHNlbGYuY2FsbF9hcmdzCiAgICAgICAgYWN0dWFsX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKCpjYWxsX2FyZ3MpCiAgICAgICAgcmV0dXJuIG1lc3NhZ2UgJSAoYWN0aW9uLCBleHBlY3RlZF9zdHJpbmcsIGFjdHVhbF9zdHJpbmcpCgoKICAgIGRlZiBfZ2V0X2NhbGxfc2lnbmF0dXJlX2Zyb21fbmFtZShzZWxmLCBuYW1lKToKICAgICAgICAiIiIKICAgICAgICAqIElmIGNhbGwgb2JqZWN0cyBhcmUgYXNzZXJ0ZWQgYWdhaW5zdCBhIG1ldGhvZC9mdW5jdGlvbiBsaWtlIG9iai5tZXRoMQogICAgICAgIHRoZW4gdGhlcmUgY291bGQgYmUgbm8gbmFtZSBmb3IgdGhlIGNhbGwgb2JqZWN0IHRvIGxvb2t1cC4gSGVuY2UganVzdAogICAgICAgIHJldHVybiB0aGUgc3BlY19zaWduYXR1cmUgb2YgdGhlIG1ldGhvZC9mdW5jdGlvbiBiZWluZyBhc3NlcnRlZCBhZ2FpbnN0LgogICAgICAgICogSWYgdGhlIG5hbWUgaXMgbm90IGVtcHR5IHRoZW4gcmVtb3ZlICgpIGFuZCBzcGxpdCBieSAnLicgdG8gZ2V0CiAgICAgICAgbGlzdCBvZiBuYW1lcyB0byBpdGVyYXRlIHRocm91Z2ggdGhlIGNoaWxkcmVuIHVudGlsIGEgcG90ZW50aWFsCiAgICAgICAgbWF0Y2ggaXMgZm91bmQuIEEgY2hpbGQgbW9jayBpcyBjcmVhdGVkIG9ubHkgZHVyaW5nIGF0dHJpYnV0ZSBhY2Nlc3MKICAgICAgICBzbyBpZiB3ZSBnZXQgYSBfU3BlY1N0YXRlIHRoZW4gbm8gYXR0cmlidXRlcyBvZiB0aGUgc3BlYyB3ZXJlIGFjY2Vzc2VkCiAgICAgICAgYW5kIGNhbiBiZSBzYWZlbHkgZXhpdGVkLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fc3BlY19zaWduYXR1cmUKCiAgICAgICAgc2lnID0gTm9uZQogICAgICAgIG5hbWVzID0gbmFtZS5yZXBsYWNlKCcoKScsICcnKS5zcGxpdCgnLicpCiAgICAgICAgY2hpbGRyZW4gPSBzZWxmLl9tb2NrX2NoaWxkcmVuCgogICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICAgICBjaGlsZCA9IGNoaWxkcmVuLmdldChuYW1lKQogICAgICAgICAgICBpZiBjaGlsZCBpcyBOb25lIG9yIGlzaW5zdGFuY2UoY2hpbGQsIF9TcGVjU3RhdGUpOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMgSWYgYW4gYXV0b3NwZWNjZWQgb2JqZWN0IGlzIGF0dGFjaGVkIHVzaW5nIGF0dGFjaF9tb2NrIHRoZQogICAgICAgICAgICAgICAgIyBjaGlsZCB3b3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGggbW9jayBvYmplY3QgYXMgYXR0cmlidXRlIGZyb20KICAgICAgICAgICAgICAgICMgd2hpY2ggc2lnbmF0dXJlIGhhcyB0byBiZSBkZXJpdmVkLgogICAgICAgICAgICAgICAgY2hpbGQgPSBfZXh0cmFjdF9tb2NrKGNoaWxkKQogICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZC5fbW9ja19jaGlsZHJlbgogICAgICAgICAgICAgICAgc2lnID0gY2hpbGQuX3NwZWNfc2lnbmF0dXJlCgogICAgICAgIHJldHVybiBzaWcKCgogICAgZGVmIF9jYWxsX21hdGNoZXIoc2VsZiwgX2NhbGwpOgogICAgICAgICIiIgogICAgICAgIEdpdmVuIGEgY2FsbCAob3Igc2ltcGx5IGFuIChhcmdzLCBrd2FyZ3MpIHR1cGxlKSwgcmV0dXJuIGEKICAgICAgICBjb21wYXJpc29uIGtleSBzdWl0YWJsZSBmb3IgbWF0Y2hpbmcgd2l0aCBvdGhlciBjYWxscy4KICAgICAgICBUaGlzIGlzIGEgYmVzdCBlZmZvcnQgbWV0aG9kIHdoaWNoIHJlbGllcyBvbiB0aGUgc3BlYydzIHNpZ25hdHVyZSwKICAgICAgICBpZiBhdmFpbGFibGUsIG9yIGZhbGxzIGJhY2sgb24gdGhlIGFyZ3VtZW50cyB0aGVtc2VsdmVzLgogICAgICAgICIiIgoKICAgICAgICBpZiBpc2luc3RhbmNlKF9jYWxsLCB0dXBsZSkgYW5kIGxlbihfY2FsbCkgPiAyOgogICAgICAgICAgICBzaWcgPSBzZWxmLl9nZXRfY2FsbF9zaWduYXR1cmVfZnJvbV9uYW1lKF9jYWxsWzBdKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNpZyA9IHNlbGYuX3NwZWNfc2lnbmF0dXJlCgogICAgICAgIGlmIHNpZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbGVuKF9jYWxsKSA9PSAyOgogICAgICAgICAgICAgICAgbmFtZSA9ICcnCiAgICAgICAgICAgICAgICBhcmdzLCBrd2FyZ3MgPSBfY2FsbAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgbmFtZSwgYXJncywga3dhcmdzID0gX2NhbGwKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgYm91bmRfY2FsbCA9IHNpZy5iaW5kKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgICAgIHJldHVybiBjYWxsKG5hbWUsIGJvdW5kX2NhbGwuYXJncywgYm91bmRfY2FsbC5rd2FyZ3MpCiAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgIHJldHVybiBlLndpdGhfdHJhY2ViYWNrKE5vbmUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIF9jYWxsCgogICAgZGVmIGFzc2VydF9ub3RfY2FsbGVkKHNlbGYpOgogICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBuZXZlciBjYWxsZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5jYWxsX2NvdW50ICE9IDA6CiAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBub3QgaGF2ZSBiZWVuIGNhbGxlZC4gQ2FsbGVkICVzIHRpbWVzLiVzIgogICAgICAgICAgICAgICAgICAgJSAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbF9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxzX3JlcHIoKSkpCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKCiAgICBkZWYgYXNzZXJ0X2NhbGxlZChzZWxmKToKICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UKICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmNhbGxfY291bnQgPT0gMDoKICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCAnJXMnIHRvIGhhdmUgYmVlbiBjYWxsZWQuIiAlCiAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJykpCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKCiAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlKHNlbGYpOgogICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgb25seSBvbmNlLgogICAgICAgICIiIgogICAgICAgIGlmIG5vdCBzZWxmLmNhbGxfY291bnQgPT0gMToKICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCAnJXMnIHRvIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4gQ2FsbGVkICVzIHRpbWVzLiVzIgogICAgICAgICAgICAgICAgICAgJSAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FsbF9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxzX3JlcHIoKSkpCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKCiAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIGxhc3QgY2FsbCB3YXMgbWFkZSB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgoKICAgICAgICBSYWlzZXMgYW4gQXNzZXJ0aW9uRXJyb3IgaWYgdGhlIGFyZ3MgYW5kIGtleXdvcmQgYXJncyBwYXNzZWQgaW4gYXJlCiAgICAgICAgZGlmZmVyZW50IHRvIHRoZSBsYXN0IGNhbGwgdG8gdGhlIG1vY2suIiIiCiAgICAgICAgaWYgc2VsZi5jYWxsX2FyZ3MgaXMgTm9uZToKICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCiAgICAgICAgICAgIGFjdHVhbCA9ICdub3QgY2FsbGVkLicKICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICgnZXhwZWN0ZWQgY2FsbCBub3QgZm91bmQuXG5FeHBlY3RlZDogJXNcbkFjdHVhbDogJXMnCiAgICAgICAgICAgICAgICAgICAgJSAoZXhwZWN0ZWQsIGFjdHVhbCkpCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKGVycm9yX21lc3NhZ2UpCgogICAgICAgIGRlZiBfZXJyb3JfbWVzc2FnZSgpOgogICAgICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXRfbW9ja19mYWlsdXJlX21lc3NhZ2UoYXJncywga3dhcmdzKQogICAgICAgICAgICByZXR1cm4gbXNnCiAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLl9jYWxsX21hdGNoZXIoX0NhbGwoKGFyZ3MsIGt3YXJncyksIHR3bz1UcnVlKSkKICAgICAgICBhY3R1YWwgPSBzZWxmLl9jYWxsX21hdGNoZXIoc2VsZi5jYWxsX2FyZ3MpCiAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgogICAgICAgICAgICBjYXVzZSA9IGV4cGVjdGVkIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIEV4Y2VwdGlvbikgZWxzZSBOb25lCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKF9lcnJvcl9tZXNzYWdlKCkpIGZyb20gY2F1c2UKCgogICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZV93aXRoKHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBleGFjdGx5IG9uY2UgYW5kIHRoYXQgdGhhdCBjYWxsIHdhcwogICAgICAgIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuIiIiCiAgICAgICAgaWYgbm90IHNlbGYuY2FsbF9jb3VudCA9PSAxOgogICAgICAgICAgICBtc2cgPSAoIkV4cGVjdGVkICclcycgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAlcyB0aW1lcy4lcyIKICAgICAgICAgICAgICAgICAgICUgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNhbGxfY291bnQsCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsc19yZXByKCkpKQogICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCiAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKCgogICAgZGVmIGFzc2VydF9oYXNfY2FsbHMoc2VsZiwgY2FsbHMsIGFueV9vcmRlcj1GYWxzZSk6CiAgICAgICAgIiIiYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgY2FsbHMuCiAgICAgICAgVGhlIGBtb2NrX2NhbGxzYCBsaXN0IGlzIGNoZWNrZWQgZm9yIHRoZSBjYWxscy4KCiAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgRmFsc2UgKHRoZSBkZWZhdWx0KSB0aGVuIHRoZSBjYWxscyBtdXN0IGJlCiAgICAgICAgc2VxdWVudGlhbC4gVGhlcmUgY2FuIGJlIGV4dHJhIGNhbGxzIGJlZm9yZSBvciBhZnRlciB0aGUKICAgICAgICBzcGVjaWZpZWQgY2FsbHMuCgogICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIFRydWUgdGhlbiB0aGUgY2FsbHMgY2FuIGJlIGluIGFueSBvcmRlciwgYnV0CiAgICAgICAgdGhleSBtdXN0IGFsbCBhcHBlYXIgaW4gYG1vY2tfY2FsbHNgLiIiIgogICAgICAgIGV4cGVjdGVkID0gW3NlbGYuX2NhbGxfbWF0Y2hlcihjKSBmb3IgYyBpbiBjYWxsc10KICAgICAgICBjYXVzZSA9IG5leHQoKGUgZm9yIGUgaW4gZXhwZWN0ZWQgaWYgaXNpbnN0YW5jZShlLCBFeGNlcHRpb24pKSwgTm9uZSkKICAgICAgICBhbGxfY2FsbHMgPSBfQ2FsbExpc3Qoc2VsZi5fY2FsbF9tYXRjaGVyKGMpIGZvciBjIGluIHNlbGYubW9ja19jYWxscykKICAgICAgICBpZiBub3QgYW55X29yZGVyOgogICAgICAgICAgICBpZiBleHBlY3RlZCBub3QgaW4gYWxsX2NhbGxzOgogICAgICAgICAgICAgICAgaWYgY2F1c2UgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICBwcm9ibGVtID0gJ0NhbGxzIG5vdCBmb3VuZC4nCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHByb2JsZW0gPSAoJ0Vycm9yIHByb2Nlc3NpbmcgZXhwZWN0ZWQgY2FsbHMuXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXJyb3JzOiB7fScpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZSBpZiBpc2luc3RhbmNlKGUsIEV4Y2VwdGlvbikgZWxzZSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlIGluIGV4cGVjdGVkXSkKICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgIGYne3Byb2JsZW19XG4nCiAgICAgICAgICAgICAgICAgICAgZidFeHBlY3RlZDoge19DYWxsTGlzdChjYWxscyl9JwogICAgICAgICAgICAgICAgICAgIGYne3NlbGYuX2NhbGxzX3JlcHIocHJlZml4PSJBY3R1YWwiKS5yc3RyaXAoIi4iKX0nCiAgICAgICAgICAgICAgICApIGZyb20gY2F1c2UKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGFsbF9jYWxscyA9IGxpc3QoYWxsX2NhbGxzKQoKICAgICAgICBub3RfZm91bmQgPSBbXQogICAgICAgIGZvciBrYWxsIGluIGV4cGVjdGVkOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBhbGxfY2FsbHMucmVtb3ZlKGthbGwpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgbm90X2ZvdW5kLmFwcGVuZChrYWxsKQogICAgICAgIGlmIG5vdF9mb3VuZDoKICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAnJXIgZG9lcyBub3QgY29udGFpbiBhbGwgb2YgJXIgaW4gaXRzIGNhbGwgbGlzdCwgJwogICAgICAgICAgICAgICAgJ2ZvdW5kICVyIGluc3RlYWQnICUgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGUobm90X2ZvdW5kKSwgYWxsX2NhbGxzKQogICAgICAgICAgICApIGZyb20gY2F1c2UKCgogICAgZGVmIGFzc2VydF9hbnlfY2FsbChzZWxmLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiImFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KCiAgICAgICAgVGhlIGFzc2VydCBwYXNzZXMgaWYgdGhlIG1vY2sgaGFzICpldmVyKiBiZWVuIGNhbGxlZCwgdW5saWtlCiAgICAgICAgYGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIGBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgdGhhdCBvbmx5IHBhc3MgaWYKICAgICAgICB0aGUgY2FsbCBpcyB0aGUgbW9zdCByZWNlbnQgb25lLiIiIgogICAgICAgIGV4cGVjdGVkID0gc2VsZi5fY2FsbF9tYXRjaGVyKF9DYWxsKChhcmdzLCBrd2FyZ3MpLCB0d289VHJ1ZSkpCiAgICAgICAgY2F1c2UgPSBleHBlY3RlZCBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBFeGNlcHRpb24pIGVsc2UgTm9uZQogICAgICAgIGFjdHVhbCA9IFtzZWxmLl9jYWxsX21hdGNoZXIoYykgZm9yIGMgaW4gc2VsZi5jYWxsX2FyZ3NfbGlzdF0KICAgICAgICBpZiBjYXVzZSBvciBleHBlY3RlZCBub3QgaW4gX0FueUNvbXBhcmVyKGFjdHVhbCk6CiAgICAgICAgICAgIGV4cGVjdGVkX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKGFyZ3MsIGt3YXJncykKICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAnJXMgY2FsbCBub3QgZm91bmQnICUgZXhwZWN0ZWRfc3RyaW5nCiAgICAgICAgICAgICkgZnJvbSBjYXVzZQoKCiAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsIC8sICoqa3cpOgogICAgICAgICIiIkNyZWF0ZSB0aGUgY2hpbGQgbW9ja3MgZm9yIGF0dHJpYnV0ZXMgYW5kIHJldHVybiB2YWx1ZS4KICAgICAgICBCeSBkZWZhdWx0IGNoaWxkIG1vY2tzIHdpbGwgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgcGFyZW50LgogICAgICAgIFN1YmNsYXNzZXMgb2YgTW9jayBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzIHRvIGN1c3RvbWl6ZSB0aGUgd2F5CiAgICAgICAgY2hpbGQgbW9ja3MgYXJlIG1hZGUuCgogICAgICAgIEZvciBub24tY2FsbGFibGUgbW9ja3MgdGhlIGNhbGxhYmxlIHZhcmlhbnQgd2lsbCBiZSB1c2VkIChyYXRoZXIgdGhhbgogICAgICAgIGFueSBjdXN0b20gc3ViY2xhc3MpLiIiIgogICAgICAgIGlmIHNlbGYuX21vY2tfc2VhbGVkOgogICAgICAgICAgICBhdHRyaWJ1dGUgPSBmIi57a3dbJ25hbWUnXX0iIGlmICJuYW1lIiBpbiBrdyBlbHNlICIoKSIKICAgICAgICAgICAgbW9ja19uYW1lID0gc2VsZi5fZXh0cmFjdF9tb2NrX25hbWUoKSArIGF0dHJpYnV0ZQogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihtb2NrX25hbWUpCgogICAgICAgIF9uZXdfbmFtZSA9IGt3LmdldCgiX25ld19uYW1lIikKICAgICAgICBpZiBfbmV3X25hbWUgaW4gc2VsZi5fX2RpY3RfX1snX3NwZWNfYXN5bmNzJ106CiAgICAgICAgICAgIHJldHVybiBBc3luY01vY2soKiprdykKCiAgICAgICAgX3R5cGUgPSB0eXBlKHNlbGYpCiAgICAgICAgaWYgaXNzdWJjbGFzcyhfdHlwZSwgTWFnaWNNb2NrKSBhbmQgX25ld19uYW1lIGluIF9hc3luY19tZXRob2RfbWFnaWNzOgogICAgICAgICAgICAjIEFueSBhc3luY2hyb25vdXMgbWFnaWMgYmVjb21lcyBhbiBBc3luY01vY2sKICAgICAgICAgICAga2xhc3MgPSBBc3luY01vY2sKICAgICAgICBlbGlmIGlzc3ViY2xhc3MoX3R5cGUsIEFzeW5jTW9ja01peGluKToKICAgICAgICAgICAgaWYgKF9uZXdfbmFtZSBpbiBfYWxsX3N5bmNfbWFnaWNzIG9yCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19tZXRob2RzIGFuZCBfbmV3X25hbWUgaW4gc2VsZi5fbW9ja19tZXRob2RzKToKICAgICAgICAgICAgICAgICMgQW55IHN5bmNocm9ub3VzIG1ldGhvZCBvbiBBc3luY01vY2sgYmVjb21lcyBhIE1hZ2ljTW9jawogICAgICAgICAgICAgICAga2xhc3MgPSBNYWdpY01vY2sKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGtsYXNzID0gQXN5bmNNb2NrCiAgICAgICAgZWxpZiBub3QgaXNzdWJjbGFzcyhfdHlwZSwgQ2FsbGFibGVNaXhpbik6CiAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoX3R5cGUsIE5vbkNhbGxhYmxlTWFnaWNNb2NrKToKICAgICAgICAgICAgICAgIGtsYXNzID0gTWFnaWNNb2NrCiAgICAgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhfdHlwZSwgTm9uQ2FsbGFibGVNb2NrKToKICAgICAgICAgICAgICAgIGtsYXNzID0gTW9jawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGtsYXNzID0gX3R5cGUuX19tcm9fX1sxXQogICAgICAgIHJldHVybiBrbGFzcygqKmt3KQoKCiAgICBkZWYgX2NhbGxzX3JlcHIoc2VsZiwgcHJlZml4PSJDYWxscyIpOgogICAgICAgICIiIlJlbmRlcnMgc2VsZi5tb2NrX2NhbGxzIGFzIGEgc3RyaW5nLgoKICAgICAgICBFeGFtcGxlOiAiXG5DYWxsczogW2NhbGwoMSksIGNhbGwoMildLiIKCiAgICAgICAgSWYgc2VsZi5tb2NrX2NhbGxzIGlzIGVtcHR5LCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuIFRoZQogICAgICAgIG91dHB1dCB3aWxsIGJlIHRydW5jYXRlZCBpZiB2ZXJ5IGxvbmcuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYubW9ja19jYWxsczoKICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgcmV0dXJuIGYiXG57cHJlZml4fToge3NhZmVfcmVwcihzZWxmLm1vY2tfY2FsbHMpfS4iCgoKX01PQ0tfU0lHID0gaW5zcGVjdC5zaWduYXR1cmUoTm9uQ2FsbGFibGVNb2NrLl9faW5pdF9fKQoKCmNsYXNzIF9BbnlDb21wYXJlcihsaXN0KToKICAgICIiIkEgbGlzdCB3aGljaCBjaGVja3MgaWYgaXQgY29udGFpbnMgYSBjYWxsIHdoaWNoIG1heSBoYXZlIGFuCiAgICBhcmd1bWVudCBvZiBBTlksIGZsaXBwaW5nIHRoZSBjb21wb25lbnRzIG9mIGl0ZW0gYW5kIHNlbGYgZnJvbQogICAgdGhlaXIgdHJhZGl0aW9uYWwgbG9jYXRpb25zIHNvIHRoYXQgQU5ZIGlzIGd1YXJhbnRlZWQgdG8gYmUgb24KICAgIHRoZSBsZWZ0LiIiIgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKICAgICAgICBmb3IgX2NhbGwgaW4gc2VsZjoKICAgICAgICAgICAgYXNzZXJ0IGxlbihpdGVtKSA9PSBsZW4oX2NhbGwpCiAgICAgICAgICAgIGlmIGFsbChbCiAgICAgICAgICAgICAgICBleHBlY3RlZCA9PSBhY3R1YWwKICAgICAgICAgICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChpdGVtLCBfY2FsbCkKICAgICAgICAgICAgXSk6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHJldHVybiBGYWxzZQoKCmRlZiBfdHJ5X2l0ZXIob2JqKToKICAgIGlmIG9iaiBpcyBOb25lOgogICAgICAgIHJldHVybiBvYmoKICAgIGlmIF9pc19leGNlcHRpb24ob2JqKToKICAgICAgICByZXR1cm4gb2JqCiAgICBpZiBfY2FsbGFibGUob2JqKToKICAgICAgICByZXR1cm4gb2JqCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIGl0ZXIob2JqKQogICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAjIFhYWFggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAgICAgICAjIGJ1dCB0aGlzIHdpbGwgYmxvdyB1cCBvbiBmaXJzdCBjYWxsIC0gc28gbWF5YmUgd2Ugc2hvdWxkIGZhaWwgZWFybHk/CiAgICAgICAgcmV0dXJuIG9iagoKCmNsYXNzIENhbGxhYmxlTWl4aW4oQmFzZSk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWM9Tm9uZSwgc2lkZV9lZmZlY3Q9Tm9uZSwgcmV0dXJuX3ZhbHVlPURFRkFVTFQsCiAgICAgICAgICAgICAgICAgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCBwYXJlbnQ9Tm9uZSwKICAgICAgICAgICAgICAgICBfc3BlY19zdGF0ZT1Ob25lLCBfbmV3X25hbWU9JycsIF9uZXdfcGFyZW50PU5vbmUsICoqa3dhcmdzKToKICAgICAgICBzZWxmLl9fZGljdF9fWydfbW9ja19yZXR1cm5fdmFsdWUnXSA9IHJldHVybl92YWx1ZQogICAgICAgIF9zYWZlX3N1cGVyKENhbGxhYmxlTWl4aW4sIHNlbGYpLl9faW5pdF9fKAogICAgICAgICAgICBzcGVjLCB3cmFwcywgbmFtZSwgc3BlY19zZXQsIHBhcmVudCwKICAgICAgICAgICAgX3NwZWNfc3RhdGUsIF9uZXdfbmFtZSwgX25ld19wYXJlbnQsICoqa3dhcmdzCiAgICAgICAgKQoKICAgICAgICBzZWxmLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKCgogICAgZGVmIF9tb2NrX2NoZWNrX3NpZyhzZWxmLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICMgc3R1YiBtZXRob2QgdGhhdCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBvbmUgd2l0aCBhIHNwZWNpZmljIHNpZ25hdHVyZQogICAgICAgIHBhc3MKCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIyBjYW4ndCB1c2Ugc2VsZiBpbi1jYXNlIGEgZnVuY3Rpb24gLyBtZXRob2Qgd2UgYXJlIG1vY2tpbmcgdXNlcyBzZWxmCiAgICAgICAgIyBpbiB0aGUgc2lnbmF0dXJlCiAgICAgICAgc2VsZi5fbW9ja19jaGVja19zaWcoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIHNlbGYuX2luY3JlbWVudF9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIHJldHVybiBzZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQoKCiAgICBkZWYgX21vY2tfY2FsbChzZWxmLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRlX21vY2tfY2FsbCgqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIF9pbmNyZW1lbnRfbW9ja19jYWxsKHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCiAgICAgICAgc2VsZi5jYWxsX2NvdW50ICs9IDEKCiAgICAgICAgIyBoYW5kbGUgY2FsbF9hcmdzCiAgICAgICAgIyBuZWVkcyB0byBiZSBzZXQgaGVyZSBzbyBhc3NlcnRpb25zIG9uIGNhbGwgYXJndW1lbnRzIHBhc3MgYmVmb3JlCiAgICAgICAgIyBleGVjdXRpb24gaW4gdGhlIGNhc2Ugb2YgYXdhaXRlZCBjYWxscwogICAgICAgIF9jYWxsID0gX0NhbGwoKGFyZ3MsIGt3YXJncyksIHR3bz1UcnVlKQogICAgICAgIHNlbGYuY2FsbF9hcmdzID0gX2NhbGwKICAgICAgICBzZWxmLmNhbGxfYXJnc19saXN0LmFwcGVuZChfY2FsbCkKCiAgICAgICAgIyBpbml0aWFsIHN0dWZmIGZvciBtZXRob2RfY2FsbHM6CiAgICAgICAgZG9fbWV0aG9kX2NhbGxzID0gc2VsZi5fbW9ja19wYXJlbnQgaXMgbm90IE5vbmUKICAgICAgICBtZXRob2RfY2FsbF9uYW1lID0gc2VsZi5fbW9ja19uYW1lCgogICAgICAgICMgaW5pdGlhbCBzdHVmZiBmb3IgbW9ja19jYWxsczoKICAgICAgICBtb2NrX2NhbGxfbmFtZSA9IHNlbGYuX21vY2tfbmV3X25hbWUKICAgICAgICBpc19hX2NhbGwgPSBtb2NrX2NhbGxfbmFtZSA9PSAnKCknCiAgICAgICAgc2VsZi5tb2NrX2NhbGxzLmFwcGVuZChfQ2FsbCgoJycsIGFyZ3MsIGt3YXJncykpKQoKICAgICAgICAjIGZvbGxvdyB1cCB0aGUgY2hhaW4gb2YgbW9ja3M6CiAgICAgICAgX25ld19wYXJlbnQgPSBzZWxmLl9tb2NrX25ld19wYXJlbnQKICAgICAgICB3aGlsZSBfbmV3X3BhcmVudCBpcyBub3QgTm9uZToKCiAgICAgICAgICAgICMgaGFuZGxlIG1ldGhvZF9jYWxsczoKICAgICAgICAgICAgaWYgZG9fbWV0aG9kX2NhbGxzOgogICAgICAgICAgICAgICAgX25ld19wYXJlbnQubWV0aG9kX2NhbGxzLmFwcGVuZChfQ2FsbCgobWV0aG9kX2NhbGxfbmFtZSwgYXJncywga3dhcmdzKSkpCiAgICAgICAgICAgICAgICBkb19tZXRob2RfY2FsbHMgPSBfbmV3X3BhcmVudC5fbW9ja19wYXJlbnQgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgIGlmIGRvX21ldGhvZF9jYWxsczoKICAgICAgICAgICAgICAgICAgICBtZXRob2RfY2FsbF9uYW1lID0gX25ld19wYXJlbnQuX21vY2tfbmFtZSArICcuJyArIG1ldGhvZF9jYWxsX25hbWUKCiAgICAgICAgICAgICMgaGFuZGxlIG1vY2tfY2FsbHM6CiAgICAgICAgICAgIHRoaXNfbW9ja19jYWxsID0gX0NhbGwoKG1vY2tfY2FsbF9uYW1lLCBhcmdzLCBrd2FyZ3MpKQogICAgICAgICAgICBfbmV3X3BhcmVudC5tb2NrX2NhbGxzLmFwcGVuZCh0aGlzX21vY2tfY2FsbCkKCiAgICAgICAgICAgIGlmIF9uZXdfcGFyZW50Ll9tb2NrX25ld19uYW1lOgogICAgICAgICAgICAgICAgaWYgaXNfYV9jYWxsOgogICAgICAgICAgICAgICAgICAgIGRvdCA9ICcnCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRvdCA9ICcuJwogICAgICAgICAgICAgICAgaXNfYV9jYWxsID0gX25ld19wYXJlbnQuX21vY2tfbmV3X25hbWUgPT0gJygpJwogICAgICAgICAgICAgICAgbW9ja19jYWxsX25hbWUgPSBfbmV3X3BhcmVudC5fbW9ja19uZXdfbmFtZSArIGRvdCArIG1vY2tfY2FsbF9uYW1lCgogICAgICAgICAgICAjIGZvbGxvdyB0aGUgcGFyZW50YWwgY2hhaW46CiAgICAgICAgICAgIF9uZXdfcGFyZW50ID0gX25ld19wYXJlbnQuX21vY2tfbmV3X3BhcmVudAoKICAgIGRlZiBfZXhlY3V0ZV9tb2NrX2NhbGwoc2VsZiwgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAjIHNlcGFyYXRlIGZyb20gX2luY3JlbWVudF9tb2NrX2NhbGwgc28gdGhhdCBhd2FpdGVkIGZ1bmN0aW9ucyBhcmUKICAgICAgICAjIGV4ZWN1dGVkIHNlcGFyYXRlbHkgZnJvbSB0aGVpciBjYWxsLCBhbHNvIEFzeW5jTW9jayBvdmVycmlkZXMgdGhpcyBtZXRob2QKCiAgICAgICAgZWZmZWN0ID0gc2VsZi5zaWRlX2VmZmVjdAogICAgICAgIGlmIGVmZmVjdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgX2lzX2V4Y2VwdGlvbihlZmZlY3QpOgogICAgICAgICAgICAgICAgcmFpc2UgZWZmZWN0CiAgICAgICAgICAgIGVsaWYgbm90IF9jYWxsYWJsZShlZmZlY3QpOgogICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dChlZmZlY3QpCiAgICAgICAgICAgICAgICBpZiBfaXNfZXhjZXB0aW9uKHJlc3VsdCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgcmVzdWx0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXN1bHQgPSBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKQoKICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBERUZBVUxUOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgICAgICBpZiBzZWxmLl9tb2NrX3JldHVybl92YWx1ZSBpcyBub3QgREVGQVVMVDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlCgogICAgICAgIGlmIHNlbGYuX21vY2tfd3JhcHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3dyYXBzKCphcmdzLCAqKmt3YXJncykKCiAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlCgoKCmNsYXNzIE1vY2soQ2FsbGFibGVNaXhpbiwgTm9uQ2FsbGFibGVNb2NrKToKICAgICIiIgogICAgQ3JlYXRlIGEgbmV3IGBNb2NrYCBvYmplY3QuIGBNb2NrYCB0YWtlcyBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cwogICAgdGhhdCBzcGVjaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIE1vY2sgb2JqZWN0OgoKICAgICogYHNwZWNgOiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgYW4gZXhpc3Rpbmcgb2JqZWN0IChhCiAgICAgIGNsYXNzIG9yIGluc3RhbmNlKSB0aGF0IGFjdHMgYXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBtb2NrIG9iamVjdC4gSWYKICAgICAgeW91IHBhc3MgaW4gYW4gb2JqZWN0IHRoZW4gYSBsaXN0IG9mIHN0cmluZ3MgaXMgZm9ybWVkIGJ5IGNhbGxpbmcgZGlyIG9uCiAgICAgIHRoZSBvYmplY3QgKGV4Y2x1ZGluZyB1bnN1cHBvcnRlZCBtYWdpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzKS4gQWNjZXNzaW5nCiAgICAgIGFueSBhdHRyaWJ1dGUgbm90IGluIHRoaXMgbGlzdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCgogICAgICBJZiBgc3BlY2AgaXMgYW4gb2JqZWN0IChyYXRoZXIgdGhhbiBhIGxpc3Qgb2Ygc3RyaW5ncykgdGhlbgogICAgICBgbW9jay5fX2NsYXNzX19gIHJldHVybnMgdGhlIGNsYXNzIG9mIHRoZSBzcGVjIG9iamVjdC4gVGhpcyBhbGxvd3MgbW9ja3MKICAgICAgdG8gcGFzcyBgaXNpbnN0YW5jZWAgdGVzdHMuCgogICAgKiBgc3BlY19zZXRgOiBBIHN0cmljdGVyIHZhcmlhbnQgb2YgYHNwZWNgLiBJZiB1c2VkLCBhdHRlbXB0aW5nIHRvICpzZXQqCiAgICAgIG9yIGdldCBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vY2sgdGhhdCBpc24ndCBvbiB0aGUgb2JqZWN0IHBhc3NlZCBhcwogICAgICBgc3BlY19zZXRgIHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KCiAgICAqIGBzaWRlX2VmZmVjdGA6IEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBNb2NrIGlzIGNhbGxlZC4gU2VlCiAgICAgIHRoZSBgc2lkZV9lZmZlY3RgIGF0dHJpYnV0ZS4gVXNlZnVsIGZvciByYWlzaW5nIGV4Y2VwdGlvbnMgb3IKICAgICAgZHluYW1pY2FsbHkgY2hhbmdpbmcgcmV0dXJuIHZhbHVlcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lCiAgICAgIGFyZ3VtZW50cyBhcyB0aGUgbW9jaywgYW5kIHVubGVzcyBpdCByZXR1cm5zIGBERUZBVUxUYCwgdGhlIHJldHVybgogICAgICB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZS4KCiAgICAgIElmIGBzaWRlX2VmZmVjdGAgaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KICAgICAgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUuIElmIGFueSBvZiB0aGUgbWVtYmVycyBvZiB0aGUgaXRlcmFibGUKICAgICAgYXJlIGV4Y2VwdGlvbnMgdGhleSB3aWxsIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIHJldHVybmVkLgoKICAgICogYHJldHVybl92YWx1ZWA6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAogICAgICB0aGlzIGlzIGEgbmV3IE1vY2sgKGNyZWF0ZWQgb24gZmlyc3QgYWNjZXNzKS4gU2VlIHRoZQogICAgICBgcmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuCgogICAgKiBgdW5zYWZlYDogQnkgZGVmYXVsdCwgYWNjZXNzaW5nIGFueSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBzdGFydHMgd2l0aAogICAgICAqYXNzZXJ0KiwgKmFzc3JldCosICphc2VydCosICphc2VlcnQqIG9yICphc3NydCogd2lsbCByYWlzZSBhbgogICAgICAgQXR0cmlidXRlRXJyb3IuIFBhc3NpbmcgYHVuc2FmZT1UcnVlYCB3aWxsIGFsbG93IGFjY2VzcyB0bwogICAgICB0aGVzZSBhdHRyaWJ1dGVzLgoKICAgICogYHdyYXBzYDogSXRlbSBmb3IgdGhlIG1vY2sgb2JqZWN0IHRvIHdyYXAuIElmIGB3cmFwc2AgaXMgbm90IE5vbmUgdGhlbgogICAgICBjYWxsaW5nIHRoZSBNb2NrIHdpbGwgcGFzcyB0aGUgY2FsbCB0aHJvdWdoIHRvIHRoZSB3cmFwcGVkIG9iamVjdAogICAgICAocmV0dXJuaW5nIHRoZSByZWFsIHJlc3VsdCkuIEF0dHJpYnV0ZSBhY2Nlc3Mgb24gdGhlIG1vY2sgd2lsbCByZXR1cm4gYQogICAgICBNb2NrIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QKICAgICAgKHNvIGF0dGVtcHRpbmcgdG8gYWNjZXNzIGFuIGF0dHJpYnV0ZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgd2lsbCByYWlzZSBhbgogICAgICBgQXR0cmlidXRlRXJyb3JgKS4KCiAgICAgIElmIHRoZSBtb2NrIGhhcyBhbiBleHBsaWNpdCBgcmV0dXJuX3ZhbHVlYCBzZXQgdGhlbiBjYWxscyBhcmUgbm90IHBhc3NlZAogICAgICB0byB0aGUgd3JhcHBlZCBvYmplY3QgYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCBpcyByZXR1cm5lZCBpbnN0ZWFkLgoKICAgICogYG5hbWVgOiBJZiB0aGUgbW9jayBoYXMgYSBuYW1lIHRoZW4gaXQgd2lsbCBiZSB1c2VkIGluIHRoZSByZXByIG9mIHRoZQogICAgICBtb2NrLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gVGhlIG5hbWUgaXMgcHJvcGFnYXRlZCB0byBjaGlsZAogICAgICBtb2Nrcy4KCiAgICBNb2NrcyBjYW4gYWxzbyBiZSBjYWxsZWQgd2l0aCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUKICAgIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4KICAgICIiIgoKCiMgX2NoZWNrX3NwZWNfYXJnX3R5cG9zIHRha2VzIGt3YXJncyBmcm9tIGNvbW1hbmRzIGxpa2UgcGF0Y2ggYW5kIGNoZWNrcyB0aGF0CiMgdGhleSBkb24ndCBjb250YWluIGNvbW1vbiBtaXNzcGVsbGluZ3Mgb2YgYXJndW1lbnRzIHJlbGF0ZWQgdG8gYXV0b3NwZWNjaW5nLgpkZWYgX2NoZWNrX3NwZWNfYXJnX3R5cG9zKGt3YXJnc190b19jaGVjayk6CiAgICB0eXBvcyA9ICgiYXV0b3NwZWN0IiwgImF1dG9fc3BlYyIsICJzZXRfc3BlYyIpCiAgICBmb3IgdHlwbyBpbiB0eXBvczoKICAgICAgICBpZiB0eXBvIGluIGt3YXJnc190b19jaGVjazoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgZiJ7dHlwbyFyfSBtaWdodCBiZSBhIHR5cG87IHVzZSB1bnNhZmU9VHJ1ZSBpZiB0aGlzIGlzIGludGVuZGVkIgogICAgICAgICAgICApCgoKY2xhc3MgX3BhdGNoKG9iamVjdCk6CgogICAgYXR0cmlidXRlX25hbWUgPSBOb25lCiAgICBfYWN0aXZlX3BhdGNoZXMgPSBbXQoKICAgIGRlZiBfX2luaXRfXygKICAgICAgICAgICAgc2VsZiwgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLAogICAgICAgICAgICBzcGVjX3NldCwgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwga3dhcmdzLCAqLCB1bnNhZmU9RmFsc2UKICAgICAgICApOgogICAgICAgIGlmIG5ld19jYWxsYWJsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBERUZBVUxUOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAnbmV3JyBhbmQgJ25ld19jYWxsYWJsZScgdG9nZXRoZXIiCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlmIGF1dG9zcGVjIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAnYXV0b3NwZWMnIGFuZCAnbmV3X2NhbGxhYmxlJyB0b2dldGhlciIKICAgICAgICAgICAgICAgICkKICAgICAgICBpZiBub3QgdW5zYWZlOgogICAgICAgICAgICBfY2hlY2tfc3BlY19hcmdfdHlwb3Moa3dhcmdzKQogICAgICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKHNwZWMpOgogICAgICAgICAgICByYWlzZSBJbnZhbGlkU3BlY0Vycm9yKAogICAgICAgICAgICAgICAgZidDYW5ub3Qgc3BlYyBhdHRyIHthdHRyaWJ1dGUhcn0gYXMgdGhlIHNwZWMgJwogICAgICAgICAgICAgICAgZidoYXMgYWxyZWFkeSBiZWVuIG1vY2tlZCBvdXQuIFtzcGVjPXtzcGVjIXJ9XScpCiAgICAgICAgaWYgX2lzX2luc3RhbmNlX21vY2soc3BlY19zZXQpOgogICAgICAgICAgICByYWlzZSBJbnZhbGlkU3BlY0Vycm9yKAogICAgICAgICAgICAgICAgZidDYW5ub3Qgc3BlYyBhdHRyIHthdHRyaWJ1dGUhcn0gYXMgdGhlIHNwZWNfc2V0ICcKICAgICAgICAgICAgICAgIGYndGFyZ2V0IGhhcyBhbHJlYWR5IGJlZW4gbW9ja2VkIG91dC4gW3NwZWNfc2V0PXtzcGVjX3NldCFyfV0nKQoKICAgICAgICBzZWxmLmdldHRlciA9IGdldHRlcgogICAgICAgIHNlbGYuYXR0cmlidXRlID0gYXR0cmlidXRlCiAgICAgICAgc2VsZi5uZXcgPSBuZXcKICAgICAgICBzZWxmLm5ld19jYWxsYWJsZSA9IG5ld19jYWxsYWJsZQogICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKICAgICAgICBzZWxmLmNyZWF0ZSA9IGNyZWF0ZQogICAgICAgIHNlbGYuaGFzX2xvY2FsID0gRmFsc2UKICAgICAgICBzZWxmLnNwZWNfc2V0ID0gc3BlY19zZXQKICAgICAgICBzZWxmLmF1dG9zcGVjID0gYXV0b3NwZWMKICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJncwogICAgICAgIHNlbGYuYWRkaXRpb25hbF9wYXRjaGVycyA9IFtdCgoKICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgIHBhdGNoZXIgPSBfcGF0Y2goCiAgICAgICAgICAgIHNlbGYuZ2V0dGVyLCBzZWxmLmF0dHJpYnV0ZSwgc2VsZi5uZXcsIHNlbGYuc3BlYywKICAgICAgICAgICAgc2VsZi5jcmVhdGUsIHNlbGYuc3BlY19zZXQsCiAgICAgICAgICAgIHNlbGYuYXV0b3NwZWMsIHNlbGYubmV3X2NhbGxhYmxlLCBzZWxmLmt3YXJncwogICAgICAgICkKICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gc2VsZi5hdHRyaWJ1dGVfbmFtZQogICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycyA9IFsKICAgICAgICAgICAgcC5jb3B5KCkgZm9yIHAgaW4gc2VsZi5hZGRpdGlvbmFsX3BhdGNoZXJzCiAgICAgICAgXQogICAgICAgIHJldHVybiBwYXRjaGVyCgoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBmdW5jKToKICAgICAgICBpZiBpc2luc3RhbmNlKGZ1bmMsIHR5cGUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jbGFzcyhmdW5jKQogICAgICAgIGlmIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbihmdW5jKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVjb3JhdGVfYXN5bmNfY2FsbGFibGUoZnVuYykKICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jYWxsYWJsZShmdW5jKQoKCiAgICBkZWYgZGVjb3JhdGVfY2xhc3Moc2VsZiwga2xhc3MpOgogICAgICAgIGZvciBhdHRyIGluIGRpcihrbGFzcyk6CiAgICAgICAgICAgIGlmIG5vdCBhdHRyLnN0YXJ0c3dpdGgocGF0Y2guVEVTVF9QUkVGSVgpOgogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGF0dHJfdmFsdWUgPSBnZXRhdHRyKGtsYXNzLCBhdHRyKQogICAgICAgICAgICBpZiBub3QgaGFzYXR0cihhdHRyX3ZhbHVlLCAiX19jYWxsX18iKToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBwYXRjaGVyID0gc2VsZi5jb3B5KCkKICAgICAgICAgICAgc2V0YXR0cihrbGFzcywgYXR0ciwgcGF0Y2hlcihhdHRyX3ZhbHVlKSkKICAgICAgICByZXR1cm4ga2xhc3MKCgogICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKICAgIGRlZiBkZWNvcmF0aW9uX2hlbHBlcihzZWxmLCBwYXRjaGVkLCBhcmdzLCBrZXl3YXJncyk6CiAgICAgICAgZXh0cmFfYXJncyA9IFtdCiAgICAgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIGV4aXRfc3RhY2s6CiAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiBwYXRjaGVkLnBhdGNoaW5nczoKICAgICAgICAgICAgICAgIGFyZyA9IGV4aXRfc3RhY2suZW50ZXJfY29udGV4dChwYXRjaGluZykKICAgICAgICAgICAgICAgIGlmIHBhdGNoaW5nLmF0dHJpYnV0ZV9uYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIGtleXdhcmdzLnVwZGF0ZShhcmcpCiAgICAgICAgICAgICAgICBlbGlmIHBhdGNoaW5nLm5ldyBpcyBERUZBVUxUOgogICAgICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3MuYXBwZW5kKGFyZykKCiAgICAgICAgICAgIGFyZ3MgKz0gdHVwbGUoZXh0cmFfYXJncykKICAgICAgICAgICAgeWllbGQgKGFyZ3MsIGtleXdhcmdzKQoKCiAgICBkZWYgZGVjb3JhdGVfY2FsbGFibGUoc2VsZiwgZnVuYyk6CiAgICAgICAgIyBOQi4gS2VlcCB0aGUgbWV0aG9kIGluIHN5bmMgd2l0aCBkZWNvcmF0ZV9hc3luY19jYWxsYWJsZSgpCiAgICAgICAgaWYgaGFzYXR0cihmdW5jLCAncGF0Y2hpbmdzJyk6CiAgICAgICAgICAgIGZ1bmMucGF0Y2hpbmdzLmFwcGVuZChzZWxmKQogICAgICAgICAgICByZXR1cm4gZnVuYwoKICAgICAgICBAd3JhcHMoZnVuYykKICAgICAgICBkZWYgcGF0Y2hlZCgqYXJncywgKiprZXl3YXJncyk6CiAgICAgICAgICAgIHdpdGggc2VsZi5kZWNvcmF0aW9uX2hlbHBlcihwYXRjaGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdhcmdzKSBhcyAobmV3YXJncywgbmV3a2V5d2FyZ3MpOgogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKm5ld2FyZ3MsICoqbmV3a2V5d2FyZ3MpCgogICAgICAgIHBhdGNoZWQucGF0Y2hpbmdzID0gW3NlbGZdCiAgICAgICAgcmV0dXJuIHBhdGNoZWQKCgogICAgZGVmIGRlY29yYXRlX2FzeW5jX2NhbGxhYmxlKHNlbGYsIGZ1bmMpOgogICAgICAgICMgTkIuIEtlZXAgdGhlIG1ldGhvZCBpbiBzeW5jIHdpdGggZGVjb3JhdGVfY2FsbGFibGUoKQogICAgICAgIGlmIGhhc2F0dHIoZnVuYywgJ3BhdGNoaW5ncycpOgogICAgICAgICAgICBmdW5jLnBhdGNoaW5ncy5hcHBlbmQoc2VsZikKICAgICAgICAgICAgcmV0dXJuIGZ1bmMKCiAgICAgICAgQHdyYXBzKGZ1bmMpCiAgICAgICAgYXN5bmMgZGVmIHBhdGNoZWQoKmFyZ3MsICoqa2V5d2FyZ3MpOgogICAgICAgICAgICB3aXRoIHNlbGYuZGVjb3JhdGlvbl9oZWxwZXIocGF0Y2hlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3YXJncykgYXMgKG5ld2FyZ3MsIG5ld2tleXdhcmdzKToKICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdW5jKCpuZXdhcmdzLCAqKm5ld2tleXdhcmdzKQoKICAgICAgICBwYXRjaGVkLnBhdGNoaW5ncyA9IFtzZWxmXQogICAgICAgIHJldHVybiBwYXRjaGVkCgoKICAgIGRlZiBnZXRfb3JpZ2luYWwoc2VsZik6CiAgICAgICAgdGFyZ2V0ID0gc2VsZi5nZXR0ZXIoKQogICAgICAgIG5hbWUgPSBzZWxmLmF0dHJpYnV0ZQoKICAgICAgICBvcmlnaW5hbCA9IERFRkFVTFQKICAgICAgICBsb2NhbCA9IEZhbHNlCgogICAgICAgIHRyeToKICAgICAgICAgICAgb3JpZ2luYWwgPSB0YXJnZXQuX19kaWN0X19bbmFtZV0KICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBLZXlFcnJvcik6CiAgICAgICAgICAgIG9yaWdpbmFsID0gZ2V0YXR0cih0YXJnZXQsIG5hbWUsIERFRkFVTFQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbG9jYWwgPSBUcnVlCgogICAgICAgIGlmIG5hbWUgaW4gX2J1aWx0aW5zIGFuZCBpc2luc3RhbmNlKHRhcmdldCwgTW9kdWxlVHlwZSk6CiAgICAgICAgICAgIHNlbGYuY3JlYXRlID0gVHJ1ZQoKICAgICAgICBpZiBub3Qgc2VsZi5jcmVhdGUgYW5kIG9yaWdpbmFsIGlzIERFRkFVTFQ6CiAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAogICAgICAgICAgICAgICAgIiVzIGRvZXMgbm90IGhhdmUgdGhlIGF0dHJpYnV0ZSAlciIgJSAodGFyZ2V0LCBuYW1lKQogICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIG9yaWdpbmFsLCBsb2NhbAoKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICIiIlBlcmZvcm0gdGhlIHBhdGNoLiIiIgogICAgICAgIG5ldywgc3BlYywgc3BlY19zZXQgPSBzZWxmLm5ldywgc2VsZi5zcGVjLCBzZWxmLnNwZWNfc2V0CiAgICAgICAgYXV0b3NwZWMsIGt3YXJncyA9IHNlbGYuYXV0b3NwZWMsIHNlbGYua3dhcmdzCiAgICAgICAgbmV3X2NhbGxhYmxlID0gc2VsZi5uZXdfY2FsbGFibGUKICAgICAgICBzZWxmLnRhcmdldCA9IHNlbGYuZ2V0dGVyKCkKCiAgICAgICAgIyBub3JtYWxpc2UgRmFsc2UgdG8gTm9uZQogICAgICAgIGlmIHNwZWMgaXMgRmFsc2U6CiAgICAgICAgICAgIHNwZWMgPSBOb25lCiAgICAgICAgaWYgc3BlY19zZXQgaXMgRmFsc2U6CiAgICAgICAgICAgIHNwZWNfc2V0ID0gTm9uZQogICAgICAgIGlmIGF1dG9zcGVjIGlzIEZhbHNlOgogICAgICAgICAgICBhdXRvc3BlYyA9IE5vbmUKCiAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgYXV0b3NwZWMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3Qgc3BlY2lmeSBzcGVjIGFuZCBhdXRvc3BlYyIpCiAgICAgICAgaWYgKChzcGVjIGlzIG5vdCBOb25lIG9yIGF1dG9zcGVjIGlzIG5vdCBOb25lKSBhbmQKICAgICAgICAgICAgc3BlY19zZXQgbm90IGluIChUcnVlLCBOb25lKSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgcHJvdmlkZSBleHBsaWNpdCBzcGVjX3NldCAqYW5kKiBzcGVjIG9yIGF1dG9zcGVjIikKCiAgICAgICAgb3JpZ2luYWwsIGxvY2FsID0gc2VsZi5nZXRfb3JpZ2luYWwoKQoKICAgICAgICBpZiBuZXcgaXMgREVGQVVMVCBhbmQgYXV0b3NwZWMgaXMgTm9uZToKICAgICAgICAgICAgaW5oZXJpdCA9IEZhbHNlCiAgICAgICAgICAgIGlmIHNwZWMgaXMgVHJ1ZToKICAgICAgICAgICAgICAgICMgc2V0IHNwZWMgdG8gdGhlIG9iamVjdCB3ZSBhcmUgcmVwbGFjaW5nCiAgICAgICAgICAgICAgICBzcGVjID0gb3JpZ2luYWwKICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIFRydWU6CiAgICAgICAgICAgICAgICAgICAgc3BlY19zZXQgPSBvcmlnaW5hbAogICAgICAgICAgICAgICAgICAgIHNwZWMgPSBOb25lCiAgICAgICAgICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIFRydWU6CiAgICAgICAgICAgICAgICAgICAgc3BlY19zZXQgPSBzcGVjCiAgICAgICAgICAgICAgICAgICAgc3BlYyA9IE5vbmUKICAgICAgICAgICAgZWxpZiBzcGVjX3NldCBpcyBUcnVlOgogICAgICAgICAgICAgICAgc3BlY19zZXQgPSBvcmlnaW5hbAoKICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBvciBzcGVjX3NldCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGlmIG9yaWdpbmFsIGlzIERFRkFVTFQ6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCB1c2UgJ3NwZWMnIHdpdGggY3JlYXRlPVRydWUiKQogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvcmlnaW5hbCwgdHlwZSk6CiAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSBwYXRjaGluZyBvdXQgYSBjbGFzcyBhbmQgdGhlcmUgaXMgYSBzcGVjCiAgICAgICAgICAgICAgICAgICAgaW5oZXJpdCA9IFRydWUKICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lIGFuZCBfaXNfYXN5bmNfb2JqKG9yaWdpbmFsKToKICAgICAgICAgICAgICAgIEtsYXNzID0gQXN5bmNNb2NrCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBLbGFzcyA9IE1hZ2ljTW9jawogICAgICAgICAgICBfa3dhcmdzID0ge30KICAgICAgICAgICAgaWYgbmV3X2NhbGxhYmxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgS2xhc3MgPSBuZXdfY2FsbGFibGUKICAgICAgICAgICAgZWxpZiBzcGVjIGlzIG5vdCBOb25lIG9yIHNwZWNfc2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlYwogICAgICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlY19zZXQKICAgICAgICAgICAgICAgIGlmIF9pc19saXN0KHRoaXNfc3BlYyk6CiAgICAgICAgICAgICAgICAgICAgbm90X2NhbGxhYmxlID0gJ19fY2FsbF9fJyBub3QgaW4gdGhpc19zcGVjCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG5vdF9jYWxsYWJsZSA9IG5vdCBjYWxsYWJsZSh0aGlzX3NwZWMpCiAgICAgICAgICAgICAgICBpZiBfaXNfYXN5bmNfb2JqKHRoaXNfc3BlYyk6CiAgICAgICAgICAgICAgICAgICAgS2xhc3MgPSBBc3luY01vY2sKICAgICAgICAgICAgICAgIGVsaWYgbm90X2NhbGxhYmxlOgogICAgICAgICAgICAgICAgICAgIEtsYXNzID0gTm9uQ2FsbGFibGVNYWdpY01vY2sKCiAgICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBfa3dhcmdzWydzcGVjJ10gPSBzcGVjCiAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgX2t3YXJnc1snc3BlY19zZXQnXSA9IHNwZWNfc2V0CgogICAgICAgICAgICAjIGFkZCBhIG5hbWUgdG8gbW9ja3MKICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoS2xhc3MsIHR5cGUpIGFuZAogICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhLbGFzcywgTm9uQ2FsbGFibGVNb2NrKSBhbmQgc2VsZi5hdHRyaWJ1dGUpOgogICAgICAgICAgICAgICAgX2t3YXJnc1snbmFtZSddID0gc2VsZi5hdHRyaWJ1dGUKCiAgICAgICAgICAgIF9rd2FyZ3MudXBkYXRlKGt3YXJncykKICAgICAgICAgICAgbmV3ID0gS2xhc3MoKipfa3dhcmdzKQoKICAgICAgICAgICAgaWYgaW5oZXJpdCBhbmQgX2lzX2luc3RhbmNlX21vY2sobmV3KToKICAgICAgICAgICAgICAgICMgd2UgY2FuIG9ubHkgdGVsbCBpZiB0aGUgaW5zdGFuY2Ugc2hvdWxkIGJlIGNhbGxhYmxlIGlmIHRoZQogICAgICAgICAgICAgICAgIyBzcGVjIGlzIG5vdCBhIGxpc3QKICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWMKICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWNfc2V0CiAgICAgICAgICAgICAgICBpZiAobm90IF9pc19saXN0KHRoaXNfc3BlYykgYW5kIG5vdAogICAgICAgICAgICAgICAgICAgIF9pbnN0YW5jZV9jYWxsYWJsZSh0aGlzX3NwZWMpKToKICAgICAgICAgICAgICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCgogICAgICAgICAgICAgICAgX2t3YXJncy5wb3AoJ25hbWUnKQogICAgICAgICAgICAgICAgbmV3LnJldHVybl92YWx1ZSA9IEtsYXNzKF9uZXdfcGFyZW50PW5ldywgX25ld19uYW1lPScoKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipfa3dhcmdzKQogICAgICAgIGVsaWYgYXV0b3NwZWMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgc3BlYyBpcyBpZ25vcmVkLCBuZXcgKm11c3QqIGJlIGRlZmF1bHQsIHNwZWNfc2V0IGlzIHRyZWF0ZWQKICAgICAgICAgICAgIyBhcyBhIGJvb2xlYW4uIFNob3VsZCB3ZSBjaGVjayBzcGVjIGlzIG5vdCBOb25lIGFuZCB0aGF0IHNwZWNfc2V0CiAgICAgICAgICAgICMgaXMgYSBib29sPwogICAgICAgICAgICBpZiBuZXcgaXMgbm90IERFRkFVTFQ6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgImF1dG9zcGVjIGNyZWF0ZXMgdGhlIG1vY2sgZm9yIHlvdS4gQ2FuJ3Qgc3BlY2lmeSAiCiAgICAgICAgICAgICAgICAgICAgImF1dG9zcGVjIGFuZCBuZXcuIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBpZiBvcmlnaW5hbCBpcyBERUZBVUxUOgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCB1c2UgJ2F1dG9zcGVjJyB3aXRoIGNyZWF0ZT1UcnVlIikKICAgICAgICAgICAgc3BlY19zZXQgPSBib29sKHNwZWNfc2V0KQogICAgICAgICAgICBpZiBhdXRvc3BlYyBpcyBUcnVlOgogICAgICAgICAgICAgICAgYXV0b3NwZWMgPSBvcmlnaW5hbAoKICAgICAgICAgICAgaWYgX2lzX2luc3RhbmNlX21vY2soc2VsZi50YXJnZXQpOgogICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZFNwZWNFcnJvcigKICAgICAgICAgICAgICAgICAgICBmJ0Nhbm5vdCBhdXRvc3BlYyBhdHRyIHtzZWxmLmF0dHJpYnV0ZSFyfSBhcyB0aGUgcGF0Y2ggJwogICAgICAgICAgICAgICAgICAgIGYndGFyZ2V0IGhhcyBhbHJlYWR5IGJlZW4gbW9ja2VkIG91dC4gJwogICAgICAgICAgICAgICAgICAgIGYnW3RhcmdldD17c2VsZi50YXJnZXQhcn0sIGF0dHI9e2F1dG9zcGVjIXJ9XScpCiAgICAgICAgICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKGF1dG9zcGVjKToKICAgICAgICAgICAgICAgIHRhcmdldF9uYW1lID0gZ2V0YXR0cihzZWxmLnRhcmdldCwgJ19fbmFtZV9fJywgc2VsZi50YXJnZXQpCiAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkU3BlY0Vycm9yKAogICAgICAgICAgICAgICAgICAgIGYnQ2Fubm90IGF1dG9zcGVjIGF0dHIge3NlbGYuYXR0cmlidXRlIXJ9IGZyb20gdGFyZ2V0ICcKICAgICAgICAgICAgICAgICAgICBmJ3t0YXJnZXRfbmFtZSFyfSBhcyBpdCBoYXMgYWxyZWFkeSBiZWVuIG1vY2tlZCBvdXQuICcKICAgICAgICAgICAgICAgICAgICBmJ1t0YXJnZXQ9e3NlbGYudGFyZ2V0IXJ9LCBhdHRyPXthdXRvc3BlYyFyfV0nKQoKICAgICAgICAgICAgbmV3ID0gY3JlYXRlX2F1dG9zcGVjKGF1dG9zcGVjLCBzcGVjX3NldD1zcGVjX3NldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uYW1lPXNlbGYuYXR0cmlidXRlLCAqKmt3YXJncykKICAgICAgICBlbGlmIGt3YXJnczoKICAgICAgICAgICAgIyBjYW4ndCBzZXQga2V5d29yZCBhcmdzIHdoZW4gd2UgYXJlbid0IGNyZWF0aW5nIHRoZSBtb2NrCiAgICAgICAgICAgICMgWFhYWCBJZiBuZXcgaXMgYSBNb2NrIHdlIGNvdWxkIGNhbGwgbmV3LmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IHBhc3Mga3dhcmdzIHRvIGEgbW9jayB3ZSBhcmVuJ3QgY3JlYXRpbmciKQoKICAgICAgICBuZXdfYXR0ciA9IG5ldwoKICAgICAgICBzZWxmLnRlbXBfb3JpZ2luYWwgPSBvcmlnaW5hbAogICAgICAgIHNlbGYuaXNfbG9jYWwgPSBsb2NhbAogICAgICAgIHNlbGYuX2V4aXRfc3RhY2sgPSBjb250ZXh0bGliLkV4aXRTdGFjaygpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgbmV3X2F0dHIpCiAgICAgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlX25hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBleHRyYV9hcmdzID0ge30KICAgICAgICAgICAgICAgIGlmIHNlbGYubmV3IGlzIERFRkFVTFQ6CiAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJnc1tzZWxmLmF0dHJpYnV0ZV9uYW1lXSA9ICBuZXcKICAgICAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnM6CiAgICAgICAgICAgICAgICAgICAgYXJnID0gc2VsZi5fZXhpdF9zdGFjay5lbnRlcl9jb250ZXh0KHBhdGNoaW5nKQogICAgICAgICAgICAgICAgICAgIGlmIHBhdGNoaW5nLm5ldyBpcyBERUZBVUxUOgogICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzLnVwZGF0ZShhcmcpCiAgICAgICAgICAgICAgICByZXR1cm4gZXh0cmFfYXJncwoKICAgICAgICAgICAgcmV0dXJuIG5ldwogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgaWYgbm90IHNlbGYuX19leGl0X18oKnN5cy5leGNfaW5mbygpKToKICAgICAgICAgICAgICAgIHJhaXNlCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6CiAgICAgICAgIiIiVW5kbyB0aGUgcGF0Y2guIiIiCiAgICAgICAgaWYgc2VsZi5pc19sb2NhbCBhbmQgc2VsZi50ZW1wX29yaWdpbmFsIGlzIG5vdCBERUZBVUxUOgogICAgICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgc2VsZi50ZW1wX29yaWdpbmFsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRlbGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlKQogICAgICAgICAgICBpZiBub3Qgc2VsZi5jcmVhdGUgYW5kIChub3QgaGFzYXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUpIG9yCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXR0cmlidXRlIGluICgnX19kb2NfXycsICdfX21vZHVsZV9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2RlZmF1bHRzX18nLCAnX19hbm5vdGF0aW9uc19fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2t3ZGVmYXVsdHNfXycpKToKICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBwcm94eSBvYmplY3RzIGxpa2UgZGphbmdvIHNldHRpbmdzCiAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgc2VsZi50ZW1wX29yaWdpbmFsKQoKICAgICAgICBkZWwgc2VsZi50ZW1wX29yaWdpbmFsCiAgICAgICAgZGVsIHNlbGYuaXNfbG9jYWwKICAgICAgICBkZWwgc2VsZi50YXJnZXQKICAgICAgICBleGl0X3N0YWNrID0gc2VsZi5fZXhpdF9zdGFjawogICAgICAgIGRlbCBzZWxmLl9leGl0X3N0YWNrCiAgICAgICAgcmV0dXJuIGV4aXRfc3RhY2suX19leGl0X18oKmV4Y19pbmZvKQoKCiAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIiIiQWN0aXZhdGUgYSBwYXRjaCwgcmV0dXJuaW5nIGFueSBjcmVhdGVkIG1vY2suIiIiCiAgICAgICAgcmVzdWx0ID0gc2VsZi5fX2VudGVyX18oKQogICAgICAgIHNlbGYuX2FjdGl2ZV9wYXRjaGVzLmFwcGVuZChzZWxmKQogICAgICAgIHJldHVybiByZXN1bHQKCgogICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIiIiU3RvcCBhbiBhY3RpdmUgcGF0Y2guIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLl9hY3RpdmVfcGF0Y2hlcy5yZW1vdmUoc2VsZikKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIyBJZiB0aGUgcGF0Y2ggaGFzbid0IGJlZW4gc3RhcnRlZCB0aGlzIHdpbGwgZmFpbAogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICByZXR1cm4gc2VsZi5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQoKCgpkZWYgX2dldF90YXJnZXQodGFyZ2V0KToKICAgIHRyeToKICAgICAgICB0YXJnZXQsIGF0dHJpYnV0ZSA9IHRhcmdldC5yc3BsaXQoJy4nLCAxKQogICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgIGYiTmVlZCBhIHZhbGlkIHRhcmdldCB0byBwYXRjaC4gWW91IHN1cHBsaWVkOiB7dGFyZ2V0IXJ9IikKICAgIHJldHVybiBwYXJ0aWFsKHBrZ3V0aWwucmVzb2x2ZV9uYW1lLCB0YXJnZXQpLCBhdHRyaWJ1dGUKCgpkZWYgX3BhdGNoX29iamVjdCgKICAgICAgICB0YXJnZXQsIGF0dHJpYnV0ZSwgbmV3PURFRkFVTFQsIHNwZWM9Tm9uZSwKICAgICAgICBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsCiAgICAgICAgbmV3X2NhbGxhYmxlPU5vbmUsICosIHVuc2FmZT1GYWxzZSwgKiprd2FyZ3MKICAgICk6CiAgICAiIiIKICAgIHBhdGNoIHRoZSBuYW1lZCBtZW1iZXIgKGBhdHRyaWJ1dGVgKSBvbiBhbiBvYmplY3QgKGB0YXJnZXRgKSB3aXRoIGEgbW9jawogICAgb2JqZWN0LgoKICAgIGBwYXRjaC5vYmplY3RgIGNhbiBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CiAgICBtYW5hZ2VyLiBBcmd1bWVudHMgYG5ld2AsIGBzcGVjYCwgYGNyZWF0ZWAsIGBzcGVjX3NldGAsCiAgICBgYXV0b3NwZWNgIGFuZCBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIExpa2UKICAgIGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgY29uZmlndXJpbmcKICAgIHRoZSBtb2NrIG9iamVjdCBpdCBjcmVhdGVzLgoKICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gub2JqZWN0YCBob25vdXJzIGBwYXRjaC5URVNUX1BSRUZJWGAKICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCiAgICAiIiIKICAgIGlmIHR5cGUodGFyZ2V0KSBpcyBzdHI6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICBmInt0YXJnZXQhcn0gbXVzdCBiZSB0aGUgYWN0dWFsIG9iamVjdCB0byBiZSBwYXRjaGVkLCBub3QgYSBzdHIiCiAgICAgICAgKQogICAgZ2V0dGVyID0gbGFtYmRhOiB0YXJnZXQKICAgIHJldHVybiBfcGF0Y2goCiAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLAogICAgICAgIHNwZWNfc2V0LCBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCBrd2FyZ3MsIHVuc2FmZT11bnNhZmUKICAgICkKCgpkZWYgX3BhdGNoX211bHRpcGxlKHRhcmdldCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgYXV0b3NwZWM9Tm9uZSwgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzKToKICAgICIiIlBlcmZvcm0gbXVsdGlwbGUgcGF0Y2hlcyBpbiBhIHNpbmdsZSBjYWxsLiBJdCB0YWtlcyB0aGUgb2JqZWN0IHRvIGJlCiAgICBwYXRjaGVkIChlaXRoZXIgYXMgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIHRvIGZldGNoIHRoZSBvYmplY3QgYnkgaW1wb3J0aW5nKQogICAgYW5kIGtleXdvcmQgYXJndW1lbnRzIGZvciB0aGUgcGF0Y2hlczo6CgogICAgICAgIHdpdGggcGF0Y2gubXVsdGlwbGUoc2V0dGluZ3MsIEZJUlNUX1BBVENIPSdvbmUnLCBTRUNPTkRfUEFUQ0g9J3R3bycpOgogICAgICAgICAgICAuLi4KCiAgICBVc2UgYERFRkFVTFRgIGFzIHRoZSB2YWx1ZSBpZiB5b3Ugd2FudCBgcGF0Y2gubXVsdGlwbGVgIHRvIGNyZWF0ZQogICAgbW9ja3MgZm9yIHlvdS4gSW4gdGhpcyBjYXNlIHRoZSBjcmVhdGVkIG1vY2tzIGFyZSBwYXNzZWQgaW50byBhIGRlY29yYXRlZAogICAgZnVuY3Rpb24gYnkga2V5d29yZCwgYW5kIGEgZGljdGlvbmFyeSBpcyByZXR1cm5lZCB3aGVuIGBwYXRjaC5tdWx0aXBsZWAgaXMKICAgIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCgogICAgYHBhdGNoLm11bHRpcGxlYCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAogICAgbWFuYWdlci4gVGhlIGFyZ3VtZW50cyBgc3BlY2AsIGBzcGVjX3NldGAsIGBjcmVhdGVgLAogICAgYGF1dG9zcGVjYCBhbmQgYG5ld19jYWxsYWJsZWAgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBgcGF0Y2hgLiBUaGVzZQogICAgYXJndW1lbnRzIHdpbGwgYmUgYXBwbGllZCB0byAqYWxsKiBwYXRjaGVzIGRvbmUgYnkgYHBhdGNoLm11bHRpcGxlYC4KCiAgICBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLm11bHRpcGxlYCBob25vdXJzIGBwYXRjaC5URVNUX1BSRUZJWGAKICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCiAgICAiIiIKICAgIGlmIHR5cGUodGFyZ2V0KSBpcyBzdHI6CiAgICAgICAgZ2V0dGVyID0gcGFydGlhbChwa2d1dGlsLnJlc29sdmVfbmFtZSwgdGFyZ2V0KQogICAgZWxzZToKICAgICAgICBnZXR0ZXIgPSBsYW1iZGE6IHRhcmdldAoKICAgIGlmIG5vdCBrd2FyZ3M6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgJ011c3Qgc3VwcGx5IGF0IGxlYXN0IG9uZSBrZXl3b3JkIGFyZ3VtZW50IHdpdGggcGF0Y2gubXVsdGlwbGUnCiAgICAgICAgKQogICAgIyBuZWVkIHRvIHdyYXAgaW4gYSBsaXN0IGZvciBweXRob24gMywgd2hlcmUgaXRlbXMgaXMgYSB2aWV3CiAgICBpdGVtcyA9IGxpc3Qoa3dhcmdzLml0ZW1zKCkpCiAgICBhdHRyaWJ1dGUsIG5ldyA9IGl0ZW1zWzBdCiAgICBwYXRjaGVyID0gX3BhdGNoKAogICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwgc3BlY19zZXQsCiAgICAgICAgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwge30KICAgICkKICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSBhdHRyaWJ1dGUKICAgIGZvciBhdHRyaWJ1dGUsIG5ldyBpbiBpdGVtc1sxOl06CiAgICAgICAgdGhpc19wYXRjaGVyID0gX3BhdGNoKAogICAgICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsIHNwZWNfc2V0LAogICAgICAgICAgICBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCB7fQogICAgICAgICkKICAgICAgICB0aGlzX3BhdGNoZXIuYXR0cmlidXRlX25hbWUgPSBhdHRyaWJ1dGUKICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMuYXBwZW5kKHRoaXNfcGF0Y2hlcikKICAgIHJldHVybiBwYXRjaGVyCgoKZGVmIHBhdGNoKAogICAgICAgIHRhcmdldCwgbmV3PURFRkFVTFQsIHNwZWM9Tm9uZSwgY3JlYXRlPUZhbHNlLAogICAgICAgIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqLCB1bnNhZmU9RmFsc2UsICoqa3dhcmdzCiAgICApOgogICAgIiIiCiAgICBgcGF0Y2hgIGFjdHMgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKICAgIG1hbmFnZXIuIEluc2lkZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24gb3Igd2l0aCBzdGF0ZW1lbnQsIHRoZSBgdGFyZ2V0YAogICAgaXMgcGF0Y2hlZCB3aXRoIGEgYG5ld2Agb2JqZWN0LiBXaGVuIHRoZSBmdW5jdGlvbi93aXRoIHN0YXRlbWVudCBleGl0cwogICAgdGhlIHBhdGNoIGlzIHVuZG9uZS4KCiAgICBJZiBgbmV3YCBpcyBvbWl0dGVkLCB0aGVuIHRoZSB0YXJnZXQgaXMgcmVwbGFjZWQgd2l0aCBhbgogICAgYEFzeW5jTW9jayBpZiB0aGUgcGF0Y2hlZCBvYmplY3QgaXMgYW4gYXN5bmMgZnVuY3Rpb24gb3IgYQogICAgYE1hZ2ljTW9ja2Agb3RoZXJ3aXNlLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBkZWNvcmF0b3IgYW5kIGBuZXdgIGlzCiAgICBvbWl0dGVkLCB0aGUgY3JlYXRlZCBtb2NrIGlzIHBhc3NlZCBpbiBhcyBhbiBleHRyYSBhcmd1bWVudCB0byB0aGUKICAgIGRlY29yYXRlZCBmdW5jdGlvbi4gSWYgYHBhdGNoYCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRoZSBjcmVhdGVkCiAgICBtb2NrIGlzIHJldHVybmVkIGJ5IHRoZSBjb250ZXh0IG1hbmFnZXIuCgogICAgYHRhcmdldGAgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIGAncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lJ2AuIFRoZQogICAgYHRhcmdldGAgaXMgaW1wb3J0ZWQgYW5kIHRoZSBzcGVjaWZpZWQgb2JqZWN0IHJlcGxhY2VkIHdpdGggdGhlIGBuZXdgCiAgICBvYmplY3QsIHNvIHRoZSBgdGFyZ2V0YCBtdXN0IGJlIGltcG9ydGFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQgeW91IGFyZQogICAgY2FsbGluZyBgcGF0Y2hgIGZyb20uIFRoZSB0YXJnZXQgaXMgaW1wb3J0ZWQgd2hlbiB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uCiAgICBpcyBleGVjdXRlZCwgbm90IGF0IGRlY29yYXRpb24gdGltZS4KCiAgICBUaGUgYHNwZWNgIGFuZCBgc3BlY19zZXRgIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIGBNYWdpY01vY2tgCiAgICBpZiBwYXRjaCBpcyBjcmVhdGluZyBvbmUgZm9yIHlvdS4KCiAgICBJbiBhZGRpdGlvbiB5b3UgY2FuIHBhc3MgYHNwZWM9VHJ1ZWAgb3IgYHNwZWNfc2V0PVRydWVgLCB3aGljaCBjYXVzZXMKICAgIHBhdGNoIHRvIHBhc3MgaW4gdGhlIG9iamVjdCBiZWluZyBtb2NrZWQgYXMgdGhlIHNwZWMvc3BlY19zZXQgb2JqZWN0LgoKICAgIGBuZXdfY2FsbGFibGVgIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBjbGFzcywgb3IgY2FsbGFibGUgb2JqZWN0LAogICAgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGBuZXdgIG9iamVjdC4gQnkgZGVmYXVsdCBgQXN5bmNNb2NrYCBpcwogICAgdXNlZCBmb3IgYXN5bmMgZnVuY3Rpb25zIGFuZCBgTWFnaWNNb2NrYCBmb3IgdGhlIHJlc3QuCgogICAgQSBtb3JlIHBvd2VyZnVsIGZvcm0gb2YgYHNwZWNgIGlzIGBhdXRvc3BlY2AuIElmIHlvdSBzZXQgYGF1dG9zcGVjPVRydWVgCiAgICB0aGVuIHRoZSBtb2NrIHdpbGwgYmUgY3JlYXRlZCB3aXRoIGEgc3BlYyBmcm9tIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuCiAgICBBbGwgYXR0cmlidXRlcyBvZiB0aGUgbW9jayB3aWxsIGFsc28gaGF2ZSB0aGUgc3BlYyBvZiB0aGUgY29ycmVzcG9uZGluZwogICAgYXR0cmlidXRlIG9mIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuIE1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBiZWluZwogICAgbW9ja2VkIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZCBhbmQgd2lsbCByYWlzZSBhIGBUeXBlRXJyb3JgIGlmCiAgICB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgd3Jvbmcgc2lnbmF0dXJlLiBGb3IgbW9ja3MgcmVwbGFjaW5nIGEgY2xhc3MsCiAgICB0aGVpciByZXR1cm4gdmFsdWUgKHRoZSAnaW5zdGFuY2UnKSB3aWxsIGhhdmUgdGhlIHNhbWUgc3BlYyBhcyB0aGUgY2xhc3MuCgogICAgSW5zdGVhZCBvZiBgYXV0b3NwZWM9VHJ1ZWAgeW91IGNhbiBwYXNzIGBhdXRvc3BlYz1zb21lX29iamVjdGAgdG8gdXNlIGFuCiAgICBhcmJpdHJhcnkgb2JqZWN0IGFzIHRoZSBzcGVjIGluc3RlYWQgb2YgdGhlIG9uZSBiZWluZyByZXBsYWNlZC4KCiAgICBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBmYWlsIHRvIHJlcGxhY2UgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0LiBJZgogICAgeW91IHBhc3MgaW4gYGNyZWF0ZT1UcnVlYCwgYW5kIHRoZSBhdHRyaWJ1dGUgZG9lc24ndCBleGlzdCwgcGF0Y2ggd2lsbAogICAgY3JlYXRlIHRoZSBhdHRyaWJ1dGUgZm9yIHlvdSB3aGVuIHRoZSBwYXRjaGVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kCiAgICBkZWxldGUgaXQgYWdhaW4gYWZ0ZXJ3YXJkcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdHMgYWdhaW5zdAogICAgYXR0cmlidXRlcyB0aGF0IHlvdXIgcHJvZHVjdGlvbiBjb2RlIGNyZWF0ZXMgYXQgcnVudGltZS4gSXQgaXMgb2ZmIGJ5CiAgICBkZWZhdWx0IGJlY2F1c2UgaXQgY2FuIGJlIGRhbmdlcm91cy4gV2l0aCBpdCBzd2l0Y2hlZCBvbiB5b3UgY2FuIHdyaXRlCiAgICBwYXNzaW5nIHRlc3RzIGFnYWluc3QgQVBJcyB0aGF0IGRvbid0IGFjdHVhbGx5IGV4aXN0IQoKICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgYFRlc3RDYXNlYCBjbGFzcyBkZWNvcmF0b3IuIEl0IHdvcmtzIGJ5CiAgICBkZWNvcmF0aW5nIGVhY2ggdGVzdCBtZXRob2QgaW4gdGhlIGNsYXNzLiBUaGlzIHJlZHVjZXMgdGhlIGJvaWxlcnBsYXRlCiAgICBjb2RlIHdoZW4geW91ciB0ZXN0IG1ldGhvZHMgc2hhcmUgYSBjb21tb24gcGF0Y2hpbmdzIHNldC4gYHBhdGNoYCBmaW5kcwogICAgdGVzdHMgYnkgbG9va2luZyBmb3IgbWV0aG9kIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBgcGF0Y2guVEVTVF9QUkVGSVhgLgogICAgQnkgZGVmYXVsdCB0aGlzIGlzIGB0ZXN0YCwgd2hpY2ggbWF0Y2hlcyB0aGUgd2F5IGB1bml0dGVzdGAgZmluZHMgdGVzdHMuCiAgICBZb3UgY2FuIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgcHJlZml4IGJ5IHNldHRpbmcgYHBhdGNoLlRFU1RfUFJFRklYYC4KCiAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgd2l0aCB0aGUgd2l0aCBzdGF0ZW1lbnQuIEhlcmUgdGhlCiAgICBwYXRjaGluZyBhcHBsaWVzIHRvIHRoZSBpbmRlbnRlZCBibG9jayBhZnRlciB0aGUgd2l0aCBzdGF0ZW1lbnQuIElmIHlvdQogICAgdXNlICJhcyIgdGhlbiB0aGUgcGF0Y2hlZCBvYmplY3Qgd2lsbCBiZSBib3VuZCB0byB0aGUgbmFtZSBhZnRlciB0aGUKICAgICJhcyI7IHZlcnkgdXNlZnVsIGlmIGBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIG9iamVjdCBmb3IgeW91LgoKICAgIFBhdGNoIHdpbGwgcmFpc2UgYSBgUnVudGltZUVycm9yYCBpZiBwYXNzZWQgc29tZSBjb21tb24gbWlzc3BlbGxpbmdzIG9mCiAgICB0aGUgYXJndW1lbnRzIGF1dG9zcGVjIGFuZCBzcGVjX3NldC4gUGFzcyB0aGUgYXJndW1lbnQgYHVuc2FmZWAgd2l0aCB0aGUKICAgIHZhbHVlIFRydWUgdG8gZGlzYWJsZSB0aGF0IGNoZWNrLgoKICAgIGBwYXRjaGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLiBUaGVzZSB3aWxsIGJlIHBhc3NlZCB0bwogICAgYEFzeW5jTW9ja2AgaWYgdGhlIHBhdGNoZWQgb2JqZWN0IGlzIGFzeW5jaHJvbm91cywgdG8gYE1hZ2ljTW9ja2AKICAgIG90aGVyd2lzZSBvciB0byBgbmV3X2NhbGxhYmxlYCBpZiBzcGVjaWZpZWQuCgogICAgYHBhdGNoLmRpY3QoLi4uKWAsIGBwYXRjaC5tdWx0aXBsZSguLi4pYCBhbmQgYHBhdGNoLm9iamVjdCguLi4pYCBhcmUKICAgIGF2YWlsYWJsZSBmb3IgYWx0ZXJuYXRlIHVzZS1jYXNlcy4KICAgICIiIgogICAgZ2V0dGVyLCBhdHRyaWJ1dGUgPSBfZ2V0X3RhcmdldCh0YXJnZXQpCiAgICByZXR1cm4gX3BhdGNoKAogICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwKICAgICAgICBzcGVjX3NldCwgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwga3dhcmdzLCB1bnNhZmU9dW5zYWZlCiAgICApCgoKY2xhc3MgX3BhdGNoX2RpY3Qob2JqZWN0KToKICAgICIiIgogICAgUGF0Y2ggYSBkaWN0aW9uYXJ5LCBvciBkaWN0aW9uYXJ5IGxpa2Ugb2JqZWN0LCBhbmQgcmVzdG9yZSB0aGUgZGljdGlvbmFyeQogICAgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIGFmdGVyIHRoZSB0ZXN0LgoKICAgIGBpbl9kaWN0YCBjYW4gYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbWFwcGluZyBsaWtlIGNvbnRhaW5lci4gSWYgaXQgaXMgYQogICAgbWFwcGluZyB0aGVuIGl0IG11c3QgYXQgbGVhc3Qgc3VwcG9ydCBnZXR0aW5nLCBzZXR0aW5nIGFuZCBkZWxldGluZyBpdGVtcwogICAgcGx1cyBpdGVyYXRpbmcgb3ZlciBrZXlzLgoKICAgIGBpbl9kaWN0YCBjYW4gYWxzbyBiZSBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBkaWN0aW9uYXJ5LCB3aGljaAogICAgd2lsbCB0aGVuIGJlIGZldGNoZWQgYnkgaW1wb3J0aW5nIGl0LgoKICAgIGB2YWx1ZXNgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb2YgdmFsdWVzIHRvIHNldCBpbiB0aGUgZGljdGlvbmFyeS4gYHZhbHVlc2AKICAgIGNhbiBhbHNvIGJlIGFuIGl0ZXJhYmxlIG9mIGAoa2V5LCB2YWx1ZSlgIHBhaXJzLgoKICAgIElmIGBjbGVhcmAgaXMgVHJ1ZSB0aGVuIHRoZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZCBiZWZvcmUgdGhlIG5ldwogICAgdmFsdWVzIGFyZSBzZXQuCgogICAgYHBhdGNoLmRpY3RgIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyB0byBzZXQKICAgIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeTo6CgogICAgICAgIHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCBteW1vZHVsZT1Nb2NrKCksIG90aGVyX21vZHVsZT1Nb2NrKCkpOgogICAgICAgICAgICAuLi4KCiAgICBgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIGRlY29yYXRvciBvciBjbGFzcwogICAgZGVjb3JhdG9yLiBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLmRpY3RgIGhvbm91cnMKICAgIGBwYXRjaC5URVNUX1BSRUZJWGAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbl9kaWN0LCB2YWx1ZXM9KCksIGNsZWFyPUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5pbl9kaWN0ID0gaW5fZGljdAogICAgICAgICMgc3VwcG9ydCBhbnkgYXJndW1lbnQgc3VwcG9ydGVkIGJ5IGRpY3QoLi4uKSBjb25zdHJ1Y3RvcgogICAgICAgIHNlbGYudmFsdWVzID0gZGljdCh2YWx1ZXMpCiAgICAgICAgc2VsZi52YWx1ZXMudXBkYXRlKGt3YXJncykKICAgICAgICBzZWxmLmNsZWFyID0gY2xlYXIKICAgICAgICBzZWxmLl9vcmlnaW5hbCA9IE5vbmUKCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIGYpOgogICAgICAgIGlmIGlzaW5zdGFuY2UoZiwgdHlwZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY29yYXRlX2NsYXNzKGYpCiAgICAgICAgaWYgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGYpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9hc3luY19jYWxsYWJsZShmKQogICAgICAgIHJldHVybiBzZWxmLmRlY29yYXRlX2NhbGxhYmxlKGYpCgoKICAgIGRlZiBkZWNvcmF0ZV9jYWxsYWJsZShzZWxmLCBmKToKICAgICAgICBAd3JhcHMoZikKICAgICAgICBkZWYgX2lubmVyKCphcmdzLCAqKmt3KToKICAgICAgICAgICAgc2VsZi5fcGF0Y2hfZGljdCgpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3KQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5fdW5wYXRjaF9kaWN0KCkKCiAgICAgICAgcmV0dXJuIF9pbm5lcgoKCiAgICBkZWYgZGVjb3JhdGVfYXN5bmNfY2FsbGFibGUoc2VsZiwgZik6CiAgICAgICAgQHdyYXBzKGYpCiAgICAgICAgYXN5bmMgZGVmIF9pbm5lcigqYXJncywgKiprdyk6CiAgICAgICAgICAgIHNlbGYuX3BhdGNoX2RpY3QoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgZigqYXJncywgKiprdykKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHNlbGYuX3VucGF0Y2hfZGljdCgpCgogICAgICAgIHJldHVybiBfaW5uZXIKCgogICAgZGVmIGRlY29yYXRlX2NsYXNzKHNlbGYsIGtsYXNzKToKICAgICAgICBmb3IgYXR0ciBpbiBkaXIoa2xhc3MpOgogICAgICAgICAgICBhdHRyX3ZhbHVlID0gZ2V0YXR0cihrbGFzcywgYXR0cikKICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aChwYXRjaC5URVNUX1BSRUZJWCkgYW5kCiAgICAgICAgICAgICAgICAgaGFzYXR0cihhdHRyX3ZhbHVlLCAiX19jYWxsX18iKSk6CiAgICAgICAgICAgICAgICBkZWNvcmF0b3IgPSBfcGF0Y2hfZGljdChzZWxmLmluX2RpY3QsIHNlbGYudmFsdWVzLCBzZWxmLmNsZWFyKQogICAgICAgICAgICAgICAgZGVjb3JhdGVkID0gZGVjb3JhdG9yKGF0dHJfdmFsdWUpCiAgICAgICAgICAgICAgICBzZXRhdHRyKGtsYXNzLCBhdHRyLCBkZWNvcmF0ZWQpCiAgICAgICAgcmV0dXJuIGtsYXNzCgoKICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIiIiUGF0Y2ggdGhlIGRpY3QuIiIiCiAgICAgICAgc2VsZi5fcGF0Y2hfZGljdCgpCiAgICAgICAgcmV0dXJuIHNlbGYuaW5fZGljdAoKCiAgICBkZWYgX3BhdGNoX2RpY3Qoc2VsZik6CiAgICAgICAgdmFsdWVzID0gc2VsZi52YWx1ZXMKICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuaW5fZGljdCwgc3RyKToKICAgICAgICAgICAgc2VsZi5pbl9kaWN0ID0gcGtndXRpbC5yZXNvbHZlX25hbWUoc2VsZi5pbl9kaWN0KQogICAgICAgIGluX2RpY3QgPSBzZWxmLmluX2RpY3QKICAgICAgICBjbGVhciA9IHNlbGYuY2xlYXIKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvcmlnaW5hbCA9IGluX2RpY3QuY29weSgpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIGRpY3QgbGlrZSBvYmplY3Qgd2l0aCBubyBjb3B5IG1ldGhvZAogICAgICAgICAgICAjIG11c3Qgc3VwcG9ydCBpdGVyYXRpb24gb3ZlciBrZXlzCiAgICAgICAgICAgIG9yaWdpbmFsID0ge30KICAgICAgICAgICAgZm9yIGtleSBpbiBpbl9kaWN0OgogICAgICAgICAgICAgICAgb3JpZ2luYWxba2V5XSA9IGluX2RpY3Rba2V5XQogICAgICAgIHNlbGYuX29yaWdpbmFsID0gb3JpZ2luYWwKCiAgICAgICAgaWYgY2xlYXI6CiAgICAgICAgICAgIF9jbGVhcl9kaWN0KGluX2RpY3QpCgogICAgICAgIHRyeToKICAgICAgICAgICAgaW5fZGljdC51cGRhdGUodmFsdWVzKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIyBkaWN0IGxpa2Ugb2JqZWN0IHdpdGggbm8gdXBkYXRlIG1ldGhvZAogICAgICAgICAgICBmb3Iga2V5IGluIHZhbHVlczoKICAgICAgICAgICAgICAgIGluX2RpY3Rba2V5XSA9IHZhbHVlc1trZXldCgoKICAgIGRlZiBfdW5wYXRjaF9kaWN0KHNlbGYpOgogICAgICAgIGluX2RpY3QgPSBzZWxmLmluX2RpY3QKICAgICAgICBvcmlnaW5hbCA9IHNlbGYuX29yaWdpbmFsCgogICAgICAgIF9jbGVhcl9kaWN0KGluX2RpY3QpCgogICAgICAgIHRyeToKICAgICAgICAgICAgaW5fZGljdC51cGRhdGUob3JpZ2luYWwpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBmb3Iga2V5IGluIG9yaWdpbmFsOgogICAgICAgICAgICAgICAgaW5fZGljdFtrZXldID0gb3JpZ2luYWxba2V5XQoKCiAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgogICAgICAgICIiIlVucGF0Y2ggdGhlIGRpY3QuIiIiCiAgICAgICAgaWYgc2VsZi5fb3JpZ2luYWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3VucGF0Y2hfZGljdCgpCiAgICAgICAgcmV0dXJuIEZhbHNlCgoKICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAiIiJBY3RpdmF0ZSBhIHBhdGNoLCByZXR1cm5pbmcgYW55IGNyZWF0ZWQgbW9jay4iIiIKICAgICAgICByZXN1bHQgPSBzZWxmLl9fZW50ZXJfXygpCiAgICAgICAgX3BhdGNoLl9hY3RpdmVfcGF0Y2hlcy5hcHBlbmQoc2VsZikKICAgICAgICByZXR1cm4gcmVzdWx0CgoKICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICIiIlN0b3AgYW4gYWN0aXZlIHBhdGNoLiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgX3BhdGNoLl9hY3RpdmVfcGF0Y2hlcy5yZW1vdmUoc2VsZikKICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIyBJZiB0aGUgcGF0Y2ggaGFzbid0IGJlZW4gc3RhcnRlZCB0aGlzIHdpbGwgZmFpbAogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICByZXR1cm4gc2VsZi5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQoKCmRlZiBfY2xlYXJfZGljdChpbl9kaWN0KToKICAgIHRyeToKICAgICAgICBpbl9kaWN0LmNsZWFyKCkKICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICBrZXlzID0gbGlzdChpbl9kaWN0KQogICAgICAgIGZvciBrZXkgaW4ga2V5czoKICAgICAgICAgICAgZGVsIGluX2RpY3Rba2V5XQoKCmRlZiBfcGF0Y2hfc3RvcGFsbCgpOgogICAgIiIiU3RvcCBhbGwgYWN0aXZlIHBhdGNoZXMuIExJRk8gdG8gdW5yb2xsIG5lc3RlZCBwYXRjaGVzLiIiIgogICAgZm9yIHBhdGNoIGluIHJldmVyc2VkKF9wYXRjaC5fYWN0aXZlX3BhdGNoZXMpOgogICAgICAgIHBhdGNoLnN0b3AoKQoKCnBhdGNoLm9iamVjdCA9IF9wYXRjaF9vYmplY3QKcGF0Y2guZGljdCA9IF9wYXRjaF9kaWN0CnBhdGNoLm11bHRpcGxlID0gX3BhdGNoX211bHRpcGxlCnBhdGNoLnN0b3BhbGwgPSBfcGF0Y2hfc3RvcGFsbApwYXRjaC5URVNUX1BSRUZJWCA9ICd0ZXN0JwoKbWFnaWNfbWV0aG9kcyA9ICgKICAgICJsdCBsZSBndCBnZSBlcSBuZSAiCiAgICAiZ2V0aXRlbSBzZXRpdGVtIGRlbGl0ZW0gIgogICAgImxlbiBjb250YWlucyBpdGVyICIKICAgICJoYXNoIHN0ciBzaXplb2YgIgogICAgImVudGVyIGV4aXQgIgogICAgIyB3ZSBhZGRlZCBkaXZtb2QgYW5kIHJkaXZtb2QgaGVyZSBpbnN0ZWFkIG9mIG51bWVyaWNzCiAgICAjIGJlY2F1c2UgdGhlcmUgaXMgbm8gaWRpdm1vZAogICAgImRpdm1vZCByZGl2bW9kIG5lZyBwb3MgYWJzIGludmVydCAiCiAgICAiY29tcGxleCBpbnQgZmxvYXQgaW5kZXggIgogICAgInJvdW5kIHRydW5jIGZsb29yIGNlaWwgIgogICAgImJvb2wgbmV4dCAiCiAgICAiZnNwYXRoICIKICAgICJhaXRlciAiCikKCm51bWVyaWNzID0gKAogICAgImFkZCBzdWIgbXVsIG1hdG11bCB0cnVlZGl2IGZsb29yZGl2IG1vZCBsc2hpZnQgcnNoaWZ0IGFuZCB4b3Igb3IgcG93IgopCmlucGxhY2UgPSAnICcuam9pbignaSVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKcmlnaHQgPSAnICcuam9pbignciVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKCiMgbm90IGluY2x1ZGluZyBfX3ByZXBhcmVfXywgX19pbnN0YW5jZWNoZWNrX18sIF9fc3ViY2xhc3NjaGVja19fCiMgKGFzIHRoZXkgYXJlIG1ldGFjbGFzcyBtZXRob2RzKQojIF9fZGVsX18gaXMgbm90IHN1cHBvcnRlZCBhdCBhbGwgYXMgaXQgY2F1c2VzIHByb2JsZW1zIGlmIGl0IGV4aXN0cwoKX25vbl9kZWZhdWx0cyA9IHsKICAgICdfX2dldF9fJywgJ19fc2V0X18nLCAnX19kZWxldGVfXycsICdfX3JldmVyc2VkX18nLCAnX19taXNzaW5nX18nLAogICAgJ19fcmVkdWNlX18nLCAnX19yZWR1Y2VfZXhfXycsICdfX2dldGluaXRhcmdzX18nLCAnX19nZXRuZXdhcmdzX18nLAogICAgJ19fZ2V0c3RhdGVfXycsICdfX3NldHN0YXRlX18nLCAnX19nZXRmb3JtYXRfXycsCiAgICAnX19yZXByX18nLCAnX19kaXJfXycsICdfX3N1YmNsYXNzZXNfXycsICdfX2Zvcm1hdF9fJywKICAgICdfX2dldG5ld2FyZ3NfZXhfXycsCn0KCgpkZWYgX2dldF9tZXRob2QobmFtZSwgZnVuYyk6CiAgICAiVHVybnMgYSBjYWxsYWJsZSBvYmplY3QgKGxpa2UgYSBtb2NrKSBpbnRvIGEgcmVhbCBmdW5jdGlvbiIKICAgIGRlZiBtZXRob2Qoc2VsZiwgLywgKmFyZ3MsICoqa3cpOgogICAgICAgIHJldHVybiBmdW5jKHNlbGYsICphcmdzLCAqKmt3KQogICAgbWV0aG9kLl9fbmFtZV9fID0gbmFtZQogICAgcmV0dXJuIG1ldGhvZAoKCl9tYWdpY3MgPSB7CiAgICAnX18lc19fJyAlIG1ldGhvZCBmb3IgbWV0aG9kIGluCiAgICAnICcuam9pbihbbWFnaWNfbWV0aG9kcywgbnVtZXJpY3MsIGlucGxhY2UsIHJpZ2h0XSkuc3BsaXQoKQp9CgojIE1hZ2ljIG1ldGhvZHMgdXNlZCBmb3IgYXN5bmMgYHdpdGhgIHN0YXRlbWVudHMKX2FzeW5jX21ldGhvZF9tYWdpY3MgPSB7Il9fYWVudGVyX18iLCAiX19hZXhpdF9fIiwgIl9fYW5leHRfXyJ9CiMgTWFnaWMgbWV0aG9kcyB0aGF0IGFyZSBvbmx5IHVzZWQgd2l0aCBhc3luYyBjYWxscyBidXQgYXJlIHN5bmNocm9ub3VzIGZ1bmN0aW9ucyB0aGVtc2VsdmVzCl9zeW5jX2FzeW5jX21hZ2ljcyA9IHsiX19haXRlcl9fIn0KX2FzeW5jX21hZ2ljcyA9IF9hc3luY19tZXRob2RfbWFnaWNzIHwgX3N5bmNfYXN5bmNfbWFnaWNzCgpfYWxsX3N5bmNfbWFnaWNzID0gX21hZ2ljcyB8IF9ub25fZGVmYXVsdHMKX2FsbF9tYWdpY3MgPSBfYWxsX3N5bmNfbWFnaWNzIHwgX2FzeW5jX21hZ2ljcwoKX3Vuc3VwcG9ydGVkX21hZ2ljcyA9IHsKICAgICdfX2dldGF0dHJfXycsICdfX3NldGF0dHJfXycsCiAgICAnX19pbml0X18nLCAnX19uZXdfXycsICdfX3ByZXBhcmVfXycsCiAgICAnX19pbnN0YW5jZWNoZWNrX18nLCAnX19zdWJjbGFzc2NoZWNrX18nLAogICAgJ19fZGVsX18nCn0KCl9jYWxjdWxhdGVfcmV0dXJuX3ZhbHVlID0gewogICAgJ19faGFzaF9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX2hhc2hfXyhzZWxmKSwKICAgICdfX3N0cl9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX3N0cl9fKHNlbGYpLAogICAgJ19fc2l6ZW9mX18nOiBsYW1iZGEgc2VsZjogb2JqZWN0Ll9fc2l6ZW9mX18oc2VsZiksCiAgICAnX19mc3BhdGhfXyc6IGxhbWJkYSBzZWxmOiBmInt0eXBlKHNlbGYpLl9fbmFtZV9ffS97c2VsZi5fZXh0cmFjdF9tb2NrX25hbWUoKX0ve2lkKHNlbGYpfSIsCn0KCl9yZXR1cm5fdmFsdWVzID0gewogICAgJ19fbHRfXyc6IE5vdEltcGxlbWVudGVkLAogICAgJ19fZ3RfXyc6IE5vdEltcGxlbWVudGVkLAogICAgJ19fbGVfXyc6IE5vdEltcGxlbWVudGVkLAogICAgJ19fZ2VfXyc6IE5vdEltcGxlbWVudGVkLAogICAgJ19faW50X18nOiAxLAogICAgJ19fY29udGFpbnNfXyc6IEZhbHNlLAogICAgJ19fbGVuX18nOiAwLAogICAgJ19fZXhpdF9fJzogRmFsc2UsCiAgICAnX19jb21wbGV4X18nOiAxaiwKICAgICdfX2Zsb2F0X18nOiAxLjAsCiAgICAnX19ib29sX18nOiBUcnVlLAogICAgJ19faW5kZXhfXyc6IDEsCiAgICAnX19hZXhpdF9fJzogRmFsc2UsCn0KCgpkZWYgX2dldF9lcShzZWxmKToKICAgIGRlZiBfX2VxX18ob3RoZXIpOgogICAgICAgIHJldF92YWwgPSBzZWxmLl9fZXFfXy5fbW9ja19yZXR1cm5fdmFsdWUKICAgICAgICBpZiByZXRfdmFsIGlzIG5vdCBERUZBVUxUOgogICAgICAgICAgICByZXR1cm4gcmV0X3ZhbAogICAgICAgIGlmIHNlbGYgaXMgb3RoZXI6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICByZXR1cm4gX19lcV9fCgpkZWYgX2dldF9uZShzZWxmKToKICAgIGRlZiBfX25lX18ob3RoZXIpOgogICAgICAgIGlmIHNlbGYuX19uZV9fLl9tb2NrX3JldHVybl92YWx1ZSBpcyBub3QgREVGQVVMVDoKICAgICAgICAgICAgcmV0dXJuIERFRkFVTFQKICAgICAgICBpZiBzZWxmIGlzIG90aGVyOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgIHJldHVybiBfX25lX18KCmRlZiBfZ2V0X2l0ZXIoc2VsZik6CiAgICBkZWYgX19pdGVyX18oKToKICAgICAgICByZXRfdmFsID0gc2VsZi5fX2l0ZXJfXy5fbW9ja19yZXR1cm5fdmFsdWUKICAgICAgICBpZiByZXRfdmFsIGlzIERFRkFVTFQ6CiAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQogICAgICAgICMgaWYgcmV0X3ZhbCB3YXMgYWxyZWFkeSBhbiBpdGVyYXRvciwgdGhlbiBjYWxsaW5nIGl0ZXIgb24gaXQgc2hvdWxkCiAgICAgICAgIyByZXR1cm4gdGhlIGl0ZXJhdG9yIHVuY2hhbmdlZAogICAgICAgIHJldHVybiBpdGVyKHJldF92YWwpCiAgICByZXR1cm4gX19pdGVyX18KCmRlZiBfZ2V0X2FzeW5jX2l0ZXIoc2VsZik6CiAgICBkZWYgX19haXRlcl9fKCk6CiAgICAgICAgcmV0X3ZhbCA9IHNlbGYuX19haXRlcl9fLl9tb2NrX3JldHVybl92YWx1ZQogICAgICAgIGlmIHJldF92YWwgaXMgREVGQVVMVDoKICAgICAgICAgICAgcmV0dXJuIF9Bc3luY0l0ZXJhdG9yKGl0ZXIoW10pKQogICAgICAgIHJldHVybiBfQXN5bmNJdGVyYXRvcihpdGVyKHJldF92YWwpKQogICAgcmV0dXJuIF9fYWl0ZXJfXwoKX3NpZGVfZWZmZWN0X21ldGhvZHMgPSB7CiAgICAnX19lcV9fJzogX2dldF9lcSwKICAgICdfX25lX18nOiBfZ2V0X25lLAogICAgJ19faXRlcl9fJzogX2dldF9pdGVyLAogICAgJ19fYWl0ZXJfXyc6IF9nZXRfYXN5bmNfaXRlcgp9CgoKCmRlZiBfc2V0X3JldHVybl92YWx1ZShtb2NrLCBtZXRob2QsIG5hbWUpOgogICAgZml4ZWQgPSBfcmV0dXJuX3ZhbHVlcy5nZXQobmFtZSwgREVGQVVMVCkKICAgIGlmIGZpeGVkIGlzIG5vdCBERUZBVUxUOgogICAgICAgIG1ldGhvZC5yZXR1cm5fdmFsdWUgPSBmaXhlZAogICAgICAgIHJldHVybgoKICAgIHJldHVybl9jYWxjdWxhdG9yID0gX2NhbGN1bGF0ZV9yZXR1cm5fdmFsdWUuZ2V0KG5hbWUpCiAgICBpZiByZXR1cm5fY2FsY3VsYXRvciBpcyBub3QgTm9uZToKICAgICAgICByZXR1cm5fdmFsdWUgPSByZXR1cm5fY2FsY3VsYXRvcihtb2NrKQogICAgICAgIG1ldGhvZC5yZXR1cm5fdmFsdWUgPSByZXR1cm5fdmFsdWUKICAgICAgICByZXR1cm4KCiAgICBzaWRlX2VmZmVjdG9yID0gX3NpZGVfZWZmZWN0X21ldGhvZHMuZ2V0KG5hbWUpCiAgICBpZiBzaWRlX2VmZmVjdG9yIGlzIG5vdCBOb25lOgogICAgICAgIG1ldGhvZC5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0b3IobW9jaykKCgoKY2xhc3MgTWFnaWNNaXhpbihCYXNlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAvLCAqYXJncywgKiprdyk6CiAgICAgICAgc2VsZi5fbW9ja19zZXRfbWFnaWNzKCkgICMgbWFrZSBtYWdpYyB3b3JrIGZvciBrd2FyZ3MgaW4gaW5pdAogICAgICAgIF9zYWZlX3N1cGVyKE1hZ2ljTWl4aW4sIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3KQogICAgICAgIHNlbGYuX21vY2tfc2V0X21hZ2ljcygpICAjIGZpeCBtYWdpYyBicm9rZW4gYnkgdXBwZXIgbGV2ZWwgaW5pdAoKCiAgICBkZWYgX21vY2tfc2V0X21hZ2ljcyhzZWxmKToKICAgICAgICBvcmlnX21hZ2ljcyA9IF9tYWdpY3MgfCBfYXN5bmNfbWV0aG9kX21hZ2ljcwogICAgICAgIHRoZXNlX21hZ2ljcyA9IG9yaWdfbWFnaWNzCgogICAgICAgIGlmIGdldGF0dHIoc2VsZiwgIl9tb2NrX21ldGhvZHMiLCBOb25lKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgdGhlc2VfbWFnaWNzID0gb3JpZ19tYWdpY3MuaW50ZXJzZWN0aW9uKHNlbGYuX21vY2tfbWV0aG9kcykKCiAgICAgICAgICAgIHJlbW92ZV9tYWdpY3MgPSBzZXQoKQogICAgICAgICAgICByZW1vdmVfbWFnaWNzID0gb3JpZ19tYWdpY3MgLSB0aGVzZV9tYWdpY3MKCiAgICAgICAgICAgIGZvciBlbnRyeSBpbiByZW1vdmVfbWFnaWNzOgogICAgICAgICAgICAgICAgaWYgZW50cnkgaW4gdHlwZShzZWxmKS5fX2RpY3RfXzoKICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB1bm5lZWRlZCBtYWdpYyBtZXRob2RzCiAgICAgICAgICAgICAgICAgICAgZGVsYXR0cihzZWxmLCBlbnRyeSkKCiAgICAgICAgIyBkb24ndCBvdmVyd3JpdGUgZXhpc3RpbmcgYXR0cmlidXRlcyBpZiBjYWxsZWQgYSBzZWNvbmQgdGltZQogICAgICAgIHRoZXNlX21hZ2ljcyA9IHRoZXNlX21hZ2ljcyAtIHNldCh0eXBlKHNlbGYpLl9fZGljdF9fKQoKICAgICAgICBfdHlwZSA9IHR5cGUoc2VsZikKICAgICAgICBmb3IgZW50cnkgaW4gdGhlc2VfbWFnaWNzOgogICAgICAgICAgICBzZXRhdHRyKF90eXBlLCBlbnRyeSwgTWFnaWNQcm94eShlbnRyeSwgc2VsZikpCgoKCmNsYXNzIE5vbkNhbGxhYmxlTWFnaWNNb2NrKE1hZ2ljTWl4aW4sIE5vbkNhbGxhYmxlTW9jayk6CiAgICAiIiJBIHZlcnNpb24gb2YgYE1hZ2ljTW9ja2AgdGhhdCBpc24ndCBjYWxsYWJsZS4iIiIKICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCiAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgoKICAgICAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4iIiIKICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQogICAgICAgIHNlbGYuX21vY2tfc2V0X21hZ2ljcygpCgoKY2xhc3MgQXN5bmNNYWdpY01peGluKE1hZ2ljTWl4aW4pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIC8sICphcmdzLCAqKmt3KToKICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKSAgIyBtYWtlIG1hZ2ljIHdvcmsgZm9yIGt3YXJncyBpbiBpbml0CiAgICAgICAgX3NhZmVfc3VwZXIoQXN5bmNNYWdpY01peGluLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprdykKICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKSAgIyBmaXggbWFnaWMgYnJva2VuIGJ5IHVwcGVyIGxldmVsIGluaXQKCmNsYXNzIE1hZ2ljTW9jayhNYWdpY01peGluLCBNb2NrKToKICAgICIiIgogICAgTWFnaWNNb2NrIGlzIGEgc3ViY2xhc3Mgb2YgTW9jayB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zCiAgICBvZiBtb3N0IG9mIHRoZSBtYWdpYyBtZXRob2RzLiBZb3UgY2FuIHVzZSBNYWdpY01vY2sgd2l0aG91dCBoYXZpbmcgdG8KICAgIGNvbmZpZ3VyZSB0aGUgbWFnaWMgbWV0aG9kcyB5b3Vyc2VsZi4KCiAgICBJZiB5b3UgdXNlIHRoZSBgc3BlY2Agb3IgYHNwZWNfc2V0YCBhcmd1bWVudHMgdGhlbiAqb25seSogbWFnaWMKICAgIG1ldGhvZHMgdGhhdCBleGlzdCBpbiB0aGUgc3BlYyB3aWxsIGJlIGNyZWF0ZWQuCgogICAgQXR0cmlidXRlcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBvZiBhIGBNYWdpY01vY2tgIHdpbGwgYWxzbyBiZSBgTWFnaWNNb2Nrc2AuCiAgICAiIiIKICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCiAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgoKICAgICAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4iIiIKICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQogICAgICAgIHNlbGYuX21vY2tfc2V0X21hZ2ljcygpCgoKCmNsYXNzIE1hZ2ljUHJveHkoQmFzZSk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50KToKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKCiAgICBkZWYgY3JlYXRlX21vY2soc2VsZik6CiAgICAgICAgZW50cnkgPSBzZWxmLm5hbWUKICAgICAgICBwYXJlbnQgPSBzZWxmLnBhcmVudAogICAgICAgIG0gPSBwYXJlbnQuX2dldF9jaGlsZF9tb2NrKG5hbWU9ZW50cnksIF9uZXdfbmFtZT1lbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1wYXJlbnQpCiAgICAgICAgc2V0YXR0cihwYXJlbnQsIGVudHJ5LCBtKQogICAgICAgIF9zZXRfcmV0dXJuX3ZhbHVlKHBhcmVudCwgbSwgZW50cnkpCiAgICAgICAgcmV0dXJuIG0KCiAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIF90eXBlPU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZV9tb2NrKCkKCgpjbGFzcyBBc3luY01vY2tNaXhpbihCYXNlKToKICAgIGF3YWl0X2NvdW50ID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2F3YWl0X2NvdW50JykKICAgIGF3YWl0X2FyZ3MgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnYXdhaXRfYXJncycpCiAgICBhd2FpdF9hcmdzX2xpc3QgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnYXdhaXRfYXJnc19saXN0JykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKICAgICAgICAjIGlzY29yb3V0aW5lZnVuY3Rpb24oKSBjaGVja3MgX2lzX2Nvcm91dGluZSBwcm9wZXJ0eSB0byBzYXkgaWYgYW4KICAgICAgICAjIG9iamVjdCBpcyBhIGNvcm91dGluZS4gV2l0aG91dCB0aGlzIGNoZWNrIGl0IGxvb2tzIHRvIHNlZSBpZiBpdCBpcyBhCiAgICAgICAgIyBmdW5jdGlvbi9tZXRob2QsIHdoaWNoIGluIHRoaXMgY2FzZSBpdCBpcyBub3QgKHNpbmNlIGl0IGlzIGFuCiAgICAgICAgIyBBc3luY01vY2spLgogICAgICAgICMgSXQgaXMgc2V0IHRocm91Z2ggX19kaWN0X18gYmVjYXVzZSB3aGVuIHNwZWNfc2V0IGlzIFRydWUsIHRoaXMKICAgICAgICAjIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdW5kZWZpbmVkLgogICAgICAgIHNlbGYuX19kaWN0X19bJ19pc19jb3JvdXRpbmUnXSA9IGFzeW5jaW8uY29yb3V0aW5lcy5faXNfY29yb3V0aW5lCiAgICAgICAgc2VsZi5fX2RpY3RfX1snX21vY2tfYXdhaXRfY291bnQnXSA9IDAKICAgICAgICBzZWxmLl9fZGljdF9fWydfbW9ja19hd2FpdF9hcmdzJ10gPSBOb25lCiAgICAgICAgc2VsZi5fX2RpY3RfX1snX21vY2tfYXdhaXRfYXJnc19saXN0J10gPSBfQ2FsbExpc3QoKQogICAgICAgIGNvZGVfbW9jayA9IE5vbkNhbGxhYmxlTW9jayhzcGVjX3NldD1Db2RlVHlwZSkKICAgICAgICBjb2RlX21vY2suY29fZmxhZ3MgPSBpbnNwZWN0LkNPX0NPUk9VVElORQogICAgICAgIHNlbGYuX19kaWN0X19bJ19fY29kZV9fJ10gPSBjb2RlX21vY2sKICAgICAgICBzZWxmLl9fZGljdF9fWydfX25hbWVfXyddID0gJ0FzeW5jTW9jaycKICAgICAgICBzZWxmLl9fZGljdF9fWydfX2RlZmF1bHRzX18nXSA9IHR1cGxlKCkKICAgICAgICBzZWxmLl9fZGljdF9fWydfX2t3ZGVmYXVsdHNfXyddID0ge30KICAgICAgICBzZWxmLl9fZGljdF9fWydfX2Fubm90YXRpb25zX18nXSA9IE5vbmUKCiAgICBhc3luYyBkZWYgX2V4ZWN1dGVfbW9ja19jYWxsKHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIyBUaGlzIGlzIG5lYXJseSBqdXN0IGxpa2Ugc3VwZXIoKSwgZXhjZXB0IGZvciBzcGVjaWFsIGhhbmRsaW5nCiAgICAgICAgIyBvZiBjb3JvdXRpbmVzCgogICAgICAgIF9jYWxsID0gX0NhbGwoKGFyZ3MsIGt3YXJncyksIHR3bz1UcnVlKQogICAgICAgIHNlbGYuYXdhaXRfY291bnQgKz0gMQogICAgICAgIHNlbGYuYXdhaXRfYXJncyA9IF9jYWxsCiAgICAgICAgc2VsZi5hd2FpdF9hcmdzX2xpc3QuYXBwZW5kKF9jYWxsKQoKICAgICAgICBlZmZlY3QgPSBzZWxmLnNpZGVfZWZmZWN0CiAgICAgICAgaWYgZWZmZWN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBfaXNfZXhjZXB0aW9uKGVmZmVjdCk6CiAgICAgICAgICAgICAgICByYWlzZSBlZmZlY3QKICAgICAgICAgICAgZWxpZiBub3QgX2NhbGxhYmxlKGVmZmVjdCk6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dChlZmZlY3QpCiAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgICAgICAjIEl0IGlzIGltcG9zc2libGUgdG8gcHJvcGFnYXRlIGEgU3RvcEl0ZXJhdGlvbgogICAgICAgICAgICAgICAgICAgICMgdGhyb3VnaCBjb3JvdXRpbmVzIGJlY2F1c2Ugb2YgUEVQIDQ3OQogICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgogICAgICAgICAgICAgICAgaWYgX2lzX2V4Y2VwdGlvbihyZXN1bHQpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIHJlc3VsdAogICAgICAgICAgICBlbGlmIGlzY29yb3V0aW5lZnVuY3Rpb24oZWZmZWN0KToKICAgICAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGVmZmVjdCgqYXJncywgKiprd2FyZ3MpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXN1bHQgPSBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKQoKICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBERUZBVUxUOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgICAgICBpZiBzZWxmLl9tb2NrX3JldHVybl92YWx1ZSBpcyBub3QgREVGQVVMVDoKICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlCgogICAgICAgIGlmIHNlbGYuX21vY2tfd3JhcHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIGlzY29yb3V0aW5lZnVuY3Rpb24oc2VsZi5fbW9ja193cmFwcyk6CiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5fbW9ja193cmFwcygqYXJncywgKiprd2FyZ3MpCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3dyYXBzKCphcmdzLCAqKmt3YXJncykKCiAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlCgogICAgZGVmIGFzc2VydF9hd2FpdGVkKHNlbGYpOgogICAgICAgICIiIgogICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBhd2FpdGVkIGF0IGxlYXN0IG9uY2UuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5hd2FpdF9jb3VudCA9PSAwOgogICAgICAgICAgICBtc2cgPSBmIkV4cGVjdGVkIHtzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snfSB0byBoYXZlIGJlZW4gYXdhaXRlZC4iCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKCiAgICBkZWYgYXNzZXJ0X2F3YWl0ZWRfb25jZShzZWxmKToKICAgICAgICAiIiIKICAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgYXdhaXRlZCBleGFjdGx5IG9uY2UuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYuYXdhaXRfY291bnQgPT0gMToKICAgICAgICAgICAgbXNnID0gKGYiRXhwZWN0ZWQge3NlbGYuX21vY2tfbmFtZSBvciAnbW9jayd9IHRvIGhhdmUgYmVlbiBhd2FpdGVkIG9uY2UuIgogICAgICAgICAgICAgICAgICAgZiIgQXdhaXRlZCB7c2VsZi5hd2FpdF9jb3VudH0gdGltZXMuIikKICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQoKICAgIGRlZiBhc3NlcnRfYXdhaXRlZF93aXRoKHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIGxhc3QgYXdhaXQgd2FzIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5hd2FpdF9hcmdzIGlzIE5vbmU6CiAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoYXJncywga3dhcmdzKQogICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihmJ0V4cGVjdGVkIGF3YWl0OiB7ZXhwZWN0ZWR9XG5Ob3QgYXdhaXRlZCcpCgogICAgICAgIGRlZiBfZXJyb3JfbWVzc2FnZSgpOgogICAgICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXRfbW9ja19mYWlsdXJlX21lc3NhZ2UoYXJncywga3dhcmdzLCBhY3Rpb249J2F3YWl0JykKICAgICAgICAgICAgcmV0dXJuIG1zZwoKICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2NhbGxfbWF0Y2hlcihfQ2FsbCgoYXJncywga3dhcmdzKSwgdHdvPVRydWUpKQogICAgICAgIGFjdHVhbCA9IHNlbGYuX2NhbGxfbWF0Y2hlcihzZWxmLmF3YWl0X2FyZ3MpCiAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgogICAgICAgICAgICBjYXVzZSA9IGV4cGVjdGVkIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIEV4Y2VwdGlvbikgZWxzZSBOb25lCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKF9lcnJvcl9tZXNzYWdlKCkpIGZyb20gY2F1c2UKCiAgICBkZWYgYXNzZXJ0X2F3YWl0ZWRfb25jZV93aXRoKHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGF3YWl0ZWQgZXhhY3RseSBvbmNlIGFuZCB3aXRoIHRoZSBzcGVjaWZpZWQKICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgbm90IHNlbGYuYXdhaXRfY291bnQgPT0gMToKICAgICAgICAgICAgbXNnID0gKGYiRXhwZWN0ZWQge3NlbGYuX21vY2tfbmFtZSBvciAnbW9jayd9IHRvIGhhdmUgYmVlbiBhd2FpdGVkIG9uY2UuIgogICAgICAgICAgICAgICAgICAgZiIgQXdhaXRlZCB7c2VsZi5hd2FpdF9jb3VudH0gdGltZXMuIikKICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQogICAgICAgIHJldHVybiBzZWxmLmFzc2VydF9hd2FpdGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiBhc3NlcnRfYW55X2F3YWl0KHNlbGYsIC8sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIiIiCiAgICAgICAgQXNzZXJ0IHRoZSBtb2NrIGhhcyBldmVyIGJlZW4gYXdhaXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgogICAgICAgICIiIgogICAgICAgIGV4cGVjdGVkID0gc2VsZi5fY2FsbF9tYXRjaGVyKF9DYWxsKChhcmdzLCBrd2FyZ3MpLCB0d289VHJ1ZSkpCiAgICAgICAgY2F1c2UgPSBleHBlY3RlZCBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBFeGNlcHRpb24pIGVsc2UgTm9uZQogICAgICAgIGFjdHVhbCA9IFtzZWxmLl9jYWxsX21hdGNoZXIoYykgZm9yIGMgaW4gc2VsZi5hd2FpdF9hcmdzX2xpc3RdCiAgICAgICAgaWYgY2F1c2Ugb3IgZXhwZWN0ZWQgbm90IGluIF9BbnlDb21wYXJlcihhY3R1YWwpOgogICAgICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgJyVzIGF3YWl0IG5vdCBmb3VuZCcgJSBleHBlY3RlZF9zdHJpbmcKICAgICAgICAgICAgKSBmcm9tIGNhdXNlCgogICAgZGVmIGFzc2VydF9oYXNfYXdhaXRzKHNlbGYsIGNhbGxzLCBhbnlfb3JkZXI9RmFsc2UpOgogICAgICAgICIiIgogICAgICAgIEFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBhd2FpdGVkIHdpdGggdGhlIHNwZWNpZmllZCBjYWxscy4KICAgICAgICBUaGUgOmF0dHI6YGF3YWl0X2FyZ3NfbGlzdGAgbGlzdCBpcyBjaGVja2VkIGZvciB0aGUgYXdhaXRzLgoKICAgICAgICBJZiBgYW55X29yZGVyYCBpcyBGYWxzZSAodGhlIGRlZmF1bHQpIHRoZW4gdGhlIGF3YWl0cyBtdXN0IGJlCiAgICAgICAgc2VxdWVudGlhbC4gVGhlcmUgY2FuIGJlIGV4dHJhIGNhbGxzIGJlZm9yZSBvciBhZnRlciB0aGUKICAgICAgICBzcGVjaWZpZWQgYXdhaXRzLgoKICAgICAgICBJZiBgYW55X29yZGVyYCBpcyBUcnVlIHRoZW4gdGhlIGF3YWl0cyBjYW4gYmUgaW4gYW55IG9yZGVyLCBidXQKICAgICAgICB0aGV5IG11c3QgYWxsIGFwcGVhciBpbiA6YXR0cjpgYXdhaXRfYXJnc19saXN0YC4KICAgICAgICAiIiIKICAgICAgICBleHBlY3RlZCA9IFtzZWxmLl9jYWxsX21hdGNoZXIoYykgZm9yIGMgaW4gY2FsbHNdCiAgICAgICAgY2F1c2UgPSBuZXh0KChlIGZvciBlIGluIGV4cGVjdGVkIGlmIGlzaW5zdGFuY2UoZSwgRXhjZXB0aW9uKSksIE5vbmUpCiAgICAgICAgYWxsX2F3YWl0cyA9IF9DYWxsTGlzdChzZWxmLl9jYWxsX21hdGNoZXIoYykgZm9yIGMgaW4gc2VsZi5hd2FpdF9hcmdzX2xpc3QpCiAgICAgICAgaWYgbm90IGFueV9vcmRlcjoKICAgICAgICAgICAgaWYgZXhwZWN0ZWQgbm90IGluIGFsbF9hd2FpdHM6CiAgICAgICAgICAgICAgICBpZiBjYXVzZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgIHByb2JsZW0gPSAnQXdhaXRzIG5vdCBmb3VuZC4nCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHByb2JsZW0gPSAoJ0Vycm9yIHByb2Nlc3NpbmcgZXhwZWN0ZWQgYXdhaXRzLlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Vycm9yczoge30nKS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2UgaWYgaXNpbnN0YW5jZShlLCBFeGNlcHRpb24pIGVsc2UgTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZSBpbiBleHBlY3RlZF0pCiAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKICAgICAgICAgICAgICAgICAgICBmJ3twcm9ibGVtfVxuJwogICAgICAgICAgICAgICAgICAgIGYnRXhwZWN0ZWQ6IHtfQ2FsbExpc3QoY2FsbHMpfVxuJwogICAgICAgICAgICAgICAgICAgIGYnQWN0dWFsOiB7c2VsZi5hd2FpdF9hcmdzX2xpc3R9JwogICAgICAgICAgICAgICAgKSBmcm9tIGNhdXNlCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBhbGxfYXdhaXRzID0gbGlzdChhbGxfYXdhaXRzKQoKICAgICAgICBub3RfZm91bmQgPSBbXQogICAgICAgIGZvciBrYWxsIGluIGV4cGVjdGVkOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBhbGxfYXdhaXRzLnJlbW92ZShrYWxsKQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgIG5vdF9mb3VuZC5hcHBlbmQoa2FsbCkKICAgICAgICBpZiBub3RfZm91bmQ6CiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgJyVyIG5vdCBhbGwgZm91bmQgaW4gYXdhaXQgbGlzdCcgJSAodHVwbGUobm90X2ZvdW5kKSwpCiAgICAgICAgICAgICkgZnJvbSBjYXVzZQoKICAgIGRlZiBhc3NlcnRfbm90X2F3YWl0ZWQoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIG5ldmVyIGF3YWl0ZWQuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5hd2FpdF9jb3VudCAhPSAwOgogICAgICAgICAgICBtc2cgPSAoZiJFeHBlY3RlZCB7c2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJ30gdG8gbm90IGhhdmUgYmVlbiBhd2FpdGVkLiIKICAgICAgICAgICAgICAgICAgIGYiIEF3YWl0ZWQge3NlbGYuYXdhaXRfY291bnR9IHRpbWVzLiIpCiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKCiAgICBkZWYgcmVzZXRfbW9jayhzZWxmLCAvLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICIiIgogICAgICAgIFNlZSA6ZnVuYzpgLk1vY2sucmVzZXRfbW9jaygpYAogICAgICAgICIiIgogICAgICAgIHN1cGVyKCkucmVzZXRfbW9jaygqYXJncywgKiprd2FyZ3MpCiAgICAgICAgc2VsZi5hd2FpdF9jb3VudCA9IDAKICAgICAgICBzZWxmLmF3YWl0X2FyZ3MgPSBOb25lCiAgICAgICAgc2VsZi5hd2FpdF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQoKCmNsYXNzIEFzeW5jTW9jayhBc3luY01vY2tNaXhpbiwgQXN5bmNNYWdpY01peGluLCBNb2NrKToKICAgICIiIgogICAgRW5oYW5jZSA6Y2xhc3M6YE1vY2tgIHdpdGggZmVhdHVyZXMgYWxsb3dpbmcgdG8gbW9jawogICAgYW4gYXN5bmMgZnVuY3Rpb24uCgogICAgVGhlIDpjbGFzczpgQXN5bmNNb2NrYCBvYmplY3Qgd2lsbCBiZWhhdmUgc28gdGhlIG9iamVjdCBpcwogICAgcmVjb2duaXplZCBhcyBhbiBhc3luYyBmdW5jdGlvbiwgYW5kIHRoZSByZXN1bHQgb2YgYSBjYWxsIGlzIGFuIGF3YWl0YWJsZToKCiAgICA+Pj4gbW9jayA9IEFzeW5jTW9jaygpCiAgICA+Pj4gaXNjb3JvdXRpbmVmdW5jdGlvbihtb2NrKQogICAgVHJ1ZQogICAgPj4+IGluc3BlY3QuaXNhd2FpdGFibGUobW9jaygpKQogICAgVHJ1ZQoKCiAgICBUaGUgcmVzdWx0IG9mIGBgbW9jaygpYGAgaXMgYW4gYXN5bmMgZnVuY3Rpb24gd2hpY2ggd2lsbCBoYXZlIHRoZSBvdXRjb21lCiAgICBvZiBgYHNpZGVfZWZmZWN0YGAgb3IgYGByZXR1cm5fdmFsdWVgYDoKCiAgICAtIGlmIGBgc2lkZV9lZmZlY3RgYCBpcyBhIGZ1bmN0aW9uLCB0aGUgYXN5bmMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlCiAgICAgIHJlc3VsdCBvZiB0aGF0IGZ1bmN0aW9uLAogICAgLSBpZiBgYHNpZGVfZWZmZWN0YGAgaXMgYW4gZXhjZXB0aW9uLCB0aGUgYXN5bmMgZnVuY3Rpb24gd2lsbCByYWlzZSB0aGUKICAgICAgZXhjZXB0aW9uLAogICAgLSBpZiBgYHNpZGVfZWZmZWN0YGAgaXMgYW4gaXRlcmFibGUsIHRoZSBhc3luYyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUKICAgICAgbmV4dCB2YWx1ZSBvZiB0aGUgaXRlcmFibGUsIGhvd2V2ZXIsIGlmIHRoZSBzZXF1ZW5jZSBvZiByZXN1bHQgaXMKICAgICAgZXhoYXVzdGVkLCBgYFN0b3BJdGVyYXRpb25gYCBpcyByYWlzZWQgaW1tZWRpYXRlbHksCiAgICAtIGlmIGBgc2lkZV9lZmZlY3RgYCBpcyBub3QgZGVmaW5lZCwgdGhlIGFzeW5jIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZQogICAgICB2YWx1ZSBkZWZpbmVkIGJ5IGBgcmV0dXJuX3ZhbHVlYGAsIGhlbmNlLCBieSBkZWZhdWx0LCB0aGUgYXN5bmMgZnVuY3Rpb24KICAgICAgcmV0dXJucyBhIG5ldyA6Y2xhc3M6YEFzeW5jTW9ja2Agb2JqZWN0LgoKICAgIElmIHRoZSBvdXRjb21lIG9mIGBgc2lkZV9lZmZlY3RgYCBvciBgYHJldHVybl92YWx1ZWBgIGlzIGFuIGFzeW5jIGZ1bmN0aW9uLAogICAgdGhlIG1vY2sgYXN5bmMgZnVuY3Rpb24gb2J0YWluZWQgd2hlbiB0aGUgbW9jayBvYmplY3QgaXMgY2FsbGVkIHdpbGwgYmUgdGhpcwogICAgYXN5bmMgZnVuY3Rpb24gaXRzZWxmIChhbmQgbm90IGFuIGFzeW5jIGZ1bmN0aW9uIHJldHVybmluZyBhbiBhc3luYwogICAgZnVuY3Rpb24pLgoKICAgIFRoZSB0ZXN0IGF1dGhvciBjYW4gYWxzbyBzcGVjaWZ5IGEgd3JhcHBlZCBvYmplY3Qgd2l0aCBgYHdyYXBzYGAuIEluIHRoaXMKICAgIGNhc2UsIHRoZSA6Y2xhc3M6YE1vY2tgIG9iamVjdCBiZWhhdmlvciBpcyB0aGUgc2FtZSBhcyB3aXRoIGFuCiAgICA6Y2xhc3M6YC5Nb2NrYCBvYmplY3Q6IHRoZSB3cmFwcGVkIG9iamVjdCBtYXkgaGF2ZSBtZXRob2RzCiAgICBkZWZpbmVkIGFzIGFzeW5jIGZ1bmN0aW9uIGZ1bmN0aW9ucy4KCiAgICBCYXNlZCBvbiBNYXJ0aW4gUmljaGFyZCdzIGFzeW5jdGVzdCBwcm9qZWN0LgogICAgIiIiCgoKY2xhc3MgX0FOWShvYmplY3QpOgogICAgIkEgaGVscGVyIG9iamVjdCB0aGF0IGNvbXBhcmVzIGVxdWFsIHRvIGV2ZXJ5dGhpbmcuIgoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAnPEFOWT4nCgpBTlkgPSBfQU5ZKCkKCgoKZGVmIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKToKICAgIG1lc3NhZ2UgPSAnJXMoJSVzKScgJSBuYW1lCiAgICBmb3JtYXR0ZWRfYXJncyA9ICcnCiAgICBhcmdzX3N0cmluZyA9ICcsICcuam9pbihbcmVwcihhcmcpIGZvciBhcmcgaW4gYXJnc10pCiAgICBrd2FyZ3Nfc3RyaW5nID0gJywgJy5qb2luKFsKICAgICAgICAnJXM9JXInICUgKGtleSwgdmFsdWUpIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpCiAgICBdKQogICAgaWYgYXJnc19zdHJpbmc6CiAgICAgICAgZm9ybWF0dGVkX2FyZ3MgPSBhcmdzX3N0cmluZwogICAgaWYga3dhcmdzX3N0cmluZzoKICAgICAgICBpZiBmb3JtYXR0ZWRfYXJnczoKICAgICAgICAgICAgZm9ybWF0dGVkX2FyZ3MgKz0gJywgJwogICAgICAgIGZvcm1hdHRlZF9hcmdzICs9IGt3YXJnc19zdHJpbmcKCiAgICByZXR1cm4gbWVzc2FnZSAlIGZvcm1hdHRlZF9hcmdzCgoKCmNsYXNzIF9DYWxsKHR1cGxlKToKICAgICIiIgogICAgQSB0dXBsZSBmb3IgaG9sZGluZyB0aGUgcmVzdWx0cyBvZiBhIGNhbGwgdG8gYSBtb2NrLCBlaXRoZXIgaW4gdGhlIGZvcm0KICAgIGAoYXJncywga3dhcmdzKWAgb3IgYChuYW1lLCBhcmdzLCBrd2FyZ3MpYC4KCiAgICBJZiBhcmdzIG9yIGt3YXJncyBhcmUgZW1wdHkgdGhlbiBhIGNhbGwgdHVwbGUgd2lsbCBjb21wYXJlIGVxdWFsIHRvCiAgICBhIHR1cGxlIHdpdGhvdXQgdGhvc2UgdmFsdWVzLiBUaGlzIG1ha2VzIGNvbXBhcmlzb25zIGxlc3MgdmVyYm9zZTo6CgogICAgICAgIF9DYWxsKCgnbmFtZScsICgpLCB7fSkpID09ICgnbmFtZScsKQogICAgICAgIF9DYWxsKCgnbmFtZScsICgxLCksIHt9KSkgPT0gKCduYW1lJywgKDEsKSkKICAgICAgICBfQ2FsbCgoKCksIHsnYSc6ICdiJ30pKSA9PSAoeydhJzogJ2InfSwpCgogICAgVGhlIGBfQ2FsbGAgb2JqZWN0IHByb3ZpZGVzIGEgdXNlZnVsIHNob3J0Y3V0IGZvciBjb21wYXJpbmcgd2l0aCBjYWxsOjoKCiAgICAgICAgX0NhbGwoKCgxLCAyKSwgeydhJzogM30pKSA9PSBjYWxsKDEsIDIsIGE9MykKICAgICAgICBfQ2FsbCgoJ2ZvbycsICgxLCAyKSwgeydhJzogM30pKSA9PSBjYWxsLmZvbygxLCAyLCBhPTMpCgogICAgSWYgdGhlIF9DYWxsIGhhcyBubyBuYW1lIHRoZW4gaXQgd2lsbCBtYXRjaCBhbnkgbmFtZS4KICAgICIiIgogICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZT0oKSwgbmFtZT0nJywgcGFyZW50PU5vbmUsIHR3bz1GYWxzZSwKICAgICAgICAgICAgICAgIGZyb21fa2FsbD1UcnVlKToKICAgICAgICBhcmdzID0gKCkKICAgICAgICBrd2FyZ3MgPSB7fQogICAgICAgIF9sZW4gPSBsZW4odmFsdWUpCiAgICAgICAgaWYgX2xlbiA9PSAzOgogICAgICAgICAgICBuYW1lLCBhcmdzLCBrd2FyZ3MgPSB2YWx1ZQogICAgICAgIGVsaWYgX2xlbiA9PSAyOgogICAgICAgICAgICBmaXJzdCwgc2Vjb25kID0gdmFsdWUKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaXJzdCwgc3RyKToKICAgICAgICAgICAgICAgIG5hbWUgPSBmaXJzdAogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWNvbmQsIHR1cGxlKToKICAgICAgICAgICAgICAgICAgICBhcmdzID0gc2Vjb25kCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IHNlY29uZAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXJncywga3dhcmdzID0gZmlyc3QsIHNlY29uZAogICAgICAgIGVsaWYgX2xlbiA9PSAxOgogICAgICAgICAgICB2YWx1ZSwgPSB2YWx1ZQogICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBrd2FyZ3MgPSB2YWx1ZQoKICAgICAgICBpZiB0d286CiAgICAgICAgICAgIHJldHVybiB0dXBsZS5fX25ld19fKGNscywgKGFyZ3MsIGt3YXJncykpCgogICAgICAgIHJldHVybiB0dXBsZS5fX25ld19fKGNscywgKG5hbWUsIGFyZ3MsIGt3YXJncykpCgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0oKSwgbmFtZT1Ob25lLCBwYXJlbnQ9Tm9uZSwgdHdvPUZhbHNlLAogICAgICAgICAgICAgICAgIGZyb21fa2FsbD1UcnVlKToKICAgICAgICBzZWxmLl9tb2NrX25hbWUgPSBuYW1lCiAgICAgICAgc2VsZi5fbW9ja19wYXJlbnQgPSBwYXJlbnQKICAgICAgICBzZWxmLl9tb2NrX2Zyb21fa2FsbCA9IGZyb21fa2FsbAoKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGxlbl9vdGhlciA9IGxlbihvdGhlcikKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKCiAgICAgICAgc2VsZl9uYW1lID0gJycKICAgICAgICBpZiBsZW4oc2VsZikgPT0gMjoKICAgICAgICAgICAgc2VsZl9hcmdzLCBzZWxmX2t3YXJncyA9IHNlbGYKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmX25hbWUsIHNlbGZfYXJncywgc2VsZl9rd2FyZ3MgPSBzZWxmCgogICAgICAgIGlmIChnZXRhdHRyKHNlbGYsICdfbW9ja19wYXJlbnQnLCBOb25lKSBhbmQgZ2V0YXR0cihvdGhlciwgJ19tb2NrX3BhcmVudCcsIE5vbmUpCiAgICAgICAgICAgICAgICBhbmQgc2VsZi5fbW9ja19wYXJlbnQgIT0gb3RoZXIuX21vY2tfcGFyZW50KToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgIG90aGVyX25hbWUgPSAnJwogICAgICAgIGlmIGxlbl9vdGhlciA9PSAwOgogICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwge30KICAgICAgICBlbGlmIGxlbl9vdGhlciA9PSAzOgogICAgICAgICAgICBvdGhlcl9uYW1lLCBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSBvdGhlcgogICAgICAgIGVsaWYgbGVuX290aGVyID09IDE6CiAgICAgICAgICAgIHZhbHVlLCA9IG90aGVyCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MgPSB2YWx1ZQogICAgICAgICAgICAgICAgb3RoZXJfa3dhcmdzID0ge30KICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICAgICAgb3RoZXJfbmFtZSA9IHZhbHVlCiAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwge30KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MgPSAoKQogICAgICAgICAgICAgICAgb3RoZXJfa3dhcmdzID0gdmFsdWUKICAgICAgICBlbGlmIGxlbl9vdGhlciA9PSAyOgogICAgICAgICAgICAjIGNvdWxkIGJlIChuYW1lLCBhcmdzKSBvciAobmFtZSwga3dhcmdzKSBvciAoYXJncywga3dhcmdzKQogICAgICAgICAgICBmaXJzdCwgc2Vjb25kID0gb3RoZXIKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaXJzdCwgc3RyKToKICAgICAgICAgICAgICAgIG90aGVyX25hbWUgPSBmaXJzdAogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWNvbmQsIHR1cGxlKToKICAgICAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSBzZWNvbmQsIHt9CiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9ICgpLCBzZWNvbmQKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IGZpcnN0LCBzZWNvbmQKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgaWYgc2VsZl9uYW1lIGFuZCBvdGhlcl9uYW1lICE9IHNlbGZfbmFtZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgICAgICMgdGhpcyBvcmRlciBpcyBpbXBvcnRhbnQgZm9yIEFOWSB0byB3b3JrIQogICAgICAgIHJldHVybiAob3RoZXJfYXJncywgb3RoZXJfa3dhcmdzKSA9PSAoc2VsZl9hcmdzLCBzZWxmX2t3YXJncykKCgogICAgX19uZV9fID0gb2JqZWN0Ll9fbmVfXwoKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgLywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBzZWxmLl9tb2NrX25hbWUgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIF9DYWxsKCgnJywgYXJncywga3dhcmdzKSwgbmFtZT0nKCknKQoKICAgICAgICBuYW1lID0gc2VsZi5fbW9ja19uYW1lICsgJygpJwogICAgICAgIHJldHVybiBfQ2FsbCgoc2VsZi5fbW9ja19uYW1lLCBhcmdzLCBrd2FyZ3MpLCBuYW1lPW5hbWUsIHBhcmVudD1zZWxmKQoKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CiAgICAgICAgaWYgc2VsZi5fbW9ja19uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBfQ2FsbChuYW1lPWF0dHIsIGZyb21fa2FsbD1GYWxzZSkKICAgICAgICBuYW1lID0gJyVzLiVzJyAlIChzZWxmLl9tb2NrX25hbWUsIGF0dHIpCiAgICAgICAgcmV0dXJuIF9DYWxsKG5hbWU9bmFtZSwgcGFyZW50PXNlbGYsIGZyb21fa2FsbD1GYWxzZSkKCgogICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oc2VsZiwgYXR0cik6CiAgICAgICAgaWYgYXR0ciBpbiB0dXBsZS5fX2RpY3RfXzoKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKICAgICAgICByZXR1cm4gdHVwbGUuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBhdHRyKQoKCiAgICBkZWYgX2dldF9jYWxsX2FyZ3VtZW50cyhzZWxmKToKICAgICAgICBpZiBsZW4oc2VsZikgPT0gMjoKICAgICAgICAgICAgYXJncywga3dhcmdzID0gc2VsZgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5hbWUsIGFyZ3MsIGt3YXJncyA9IHNlbGYKCiAgICAgICAgcmV0dXJuIGFyZ3MsIGt3YXJncwoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGFyZ3Moc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9jYWxsX2FyZ3VtZW50cygpWzBdCgogICAgQHByb3BlcnR5CiAgICBkZWYga3dhcmdzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9nZXRfY2FsbF9hcmd1bWVudHMoKVsxXQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5fbW9ja19mcm9tX2thbGw6CiAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9tb2NrX25hbWUgb3IgJ2NhbGwnCiAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnKCknKToKICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbCVzJyAlIG5hbWUKICAgICAgICAgICAgcmV0dXJuIG5hbWUKCiAgICAgICAgaWYgbGVuKHNlbGYpID09IDI6CiAgICAgICAgICAgIG5hbWUgPSAnY2FsbCcKICAgICAgICAgICAgYXJncywga3dhcmdzID0gc2VsZgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5hbWUsIGFyZ3MsIGt3YXJncyA9IHNlbGYKICAgICAgICAgICAgaWYgbm90IG5hbWU6CiAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwnCiAgICAgICAgICAgIGVsaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnKCknKToKICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbC4lcycgJSBuYW1lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwlcycgJSBuYW1lCiAgICAgICAgcmV0dXJuIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKQoKCiAgICBkZWYgY2FsbF9saXN0KHNlbGYpOgogICAgICAgICIiIkZvciBhIGNhbGwgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBtdWx0aXBsZSBjYWxscywgYGNhbGxfbGlzdGAKICAgICAgICByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGludGVybWVkaWF0ZSBjYWxscyBhcyB3ZWxsIGFzIHRoZQogICAgICAgIGZpbmFsIGNhbGwuIiIiCiAgICAgICAgdmFscyA9IFtdCiAgICAgICAgdGhpbmcgPSBzZWxmCiAgICAgICAgd2hpbGUgdGhpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHRoaW5nLl9tb2NrX2Zyb21fa2FsbDoKICAgICAgICAgICAgICAgIHZhbHMuYXBwZW5kKHRoaW5nKQogICAgICAgICAgICB0aGluZyA9IHRoaW5nLl9tb2NrX3BhcmVudAogICAgICAgIHJldHVybiBfQ2FsbExpc3QocmV2ZXJzZWQodmFscykpCgoKY2FsbCA9IF9DYWxsKGZyb21fa2FsbD1GYWxzZSkKCgpkZWYgY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0PUZhbHNlLCBpbnN0YW5jZT1GYWxzZSwgX3BhcmVudD1Ob25lLAogICAgICAgICAgICAgICAgICAgIF9uYW1lPU5vbmUsICosIHVuc2FmZT1GYWxzZSwgKiprd2FyZ3MpOgogICAgIiIiQ3JlYXRlIGEgbW9jayBvYmplY3QgdXNpbmcgYW5vdGhlciBvYmplY3QgYXMgYSBzcGVjLiBBdHRyaWJ1dGVzIG9uIHRoZQogICAgbW9jayB3aWxsIHVzZSB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb24gdGhlIGBzcGVjYCBvYmplY3QgYXMgdGhlaXIKICAgIHNwZWMuCgogICAgRnVuY3Rpb25zIG9yIG1ldGhvZHMgYmVpbmcgbW9ja2VkIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZAogICAgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBzaWduYXR1cmUuCgogICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gYXR0ZW1wdGluZyB0byBzZXQgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0CiAgICBvbiB0aGUgc3BlYyBvYmplY3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgoKICAgIElmIGEgY2xhc3MgaXMgdXNlZCBhcyBhIHNwZWMgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtb2NrICh0aGUKICAgIGluc3RhbmNlIG9mIHRoZSBjbGFzcykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMuIFlvdSBjYW4gdXNlIGEgY2xhc3MgYXMgdGhlCiAgICBzcGVjIGZvciBhbiBpbnN0YW5jZSBvYmplY3QgYnkgcGFzc2luZyBgaW5zdGFuY2U9VHJ1ZWAuIFRoZSByZXR1cm5lZCBtb2NrCiAgICB3aWxsIG9ubHkgYmUgY2FsbGFibGUgaWYgaW5zdGFuY2VzIG9mIHRoZSBtb2NrIGFyZSBjYWxsYWJsZS4KCiAgICBgY3JlYXRlX2F1dG9zcGVjYCB3aWxsIHJhaXNlIGEgYFJ1bnRpbWVFcnJvcmAgaWYgcGFzc2VkIHNvbWUgY29tbW9uCiAgICBtaXNzcGVsbGluZ3Mgb2YgdGhlIGFyZ3VtZW50cyBhdXRvc3BlYyBhbmQgc3BlY19zZXQuIFBhc3MgdGhlIGFyZ3VtZW50CiAgICBgdW5zYWZlYCB3aXRoIHRoZSB2YWx1ZSBUcnVlIHRvIGRpc2FibGUgdGhhdCBjaGVjay4KCiAgICBgY3JlYXRlX2F1dG9zcGVjYCBhbHNvIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWQgdG8KICAgIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgY3JlYXRlZCBtb2NrLiIiIgogICAgaWYgX2lzX2xpc3Qoc3BlYyk6CiAgICAgICAgIyBjYW4ndCBwYXNzIGEgbGlzdCBpbnN0YW5jZSB0byB0aGUgbW9jayBjb25zdHJ1Y3RvciBhcyBpdCB3aWxsIGJlCiAgICAgICAgIyBpbnRlcnByZXRlZCBhcyBhIGxpc3Qgb2Ygc3RyaW5ncwogICAgICAgIHNwZWMgPSB0eXBlKHNwZWMpCgogICAgaXNfdHlwZSA9IGlzaW5zdGFuY2Uoc3BlYywgdHlwZSkKICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKHNwZWMpOgogICAgICAgIHJhaXNlIEludmFsaWRTcGVjRXJyb3IoZidDYW5ub3QgYXV0b3NwZWMgYSBNb2NrIG9iamVjdC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZidbb2JqZWN0PXtzcGVjIXJ9XScpCiAgICBpc19hc3luY19mdW5jID0gX2lzX2FzeW5jX2Z1bmMoc3BlYykKICAgIF9rd2FyZ3MgPSB7J3NwZWMnOiBzcGVjfQogICAgaWYgc3BlY19zZXQ6CiAgICAgICAgX2t3YXJncyA9IHsnc3BlY19zZXQnOiBzcGVjfQogICAgZWxpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgIyBOb25lIHdlIG1vY2sgd2l0aCBhIG5vcm1hbCBtb2NrIHdpdGhvdXQgYSBzcGVjCiAgICAgICAgX2t3YXJncyA9IHt9CiAgICBpZiBfa3dhcmdzIGFuZCBpbnN0YW5jZToKICAgICAgICBfa3dhcmdzWydfc3BlY19hc19pbnN0YW5jZSddID0gVHJ1ZQogICAgaWYgbm90IHVuc2FmZToKICAgICAgICBfY2hlY2tfc3BlY19hcmdfdHlwb3Moa3dhcmdzKQoKICAgIF9rd2FyZ3MudXBkYXRlKGt3YXJncykKCiAgICBLbGFzcyA9IE1hZ2ljTW9jawogICAgaWYgaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yKHNwZWMpOgogICAgICAgICMgZGVzY3JpcHRvcnMgZG9uJ3QgaGF2ZSBhIHNwZWMKICAgICAgICAjIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHR5cGUgdGhleSByZXR1cm4KICAgICAgICBfa3dhcmdzID0ge30KICAgIGVsaWYgaXNfYXN5bmNfZnVuYzoKICAgICAgICBpZiBpbnN0YW5jZToKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJJbnN0YW5jZSBjYW4gbm90IGJlIFRydWUgd2hlbiBjcmVhdGVfYXV0b3NwZWMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzIG1vY2tpbmcgYW4gYXN5bmMgZnVuY3Rpb24iKQogICAgICAgIEtsYXNzID0gQXN5bmNNb2NrCiAgICBlbGlmIG5vdCBfY2FsbGFibGUoc3BlYyk6CiAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jawogICAgZWxpZiBpc190eXBlIGFuZCBpbnN0YW5jZSBhbmQgbm90IF9pbnN0YW5jZV9jYWxsYWJsZShzcGVjKToKICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCgogICAgX25hbWUgPSBfa3dhcmdzLnBvcCgnbmFtZScsIF9uYW1lKQoKICAgIF9uZXdfbmFtZSA9IF9uYW1lCiAgICBpZiBfcGFyZW50IGlzIE5vbmU6CiAgICAgICAgIyBmb3IgYSB0b3AgbGV2ZWwgb2JqZWN0IG5vIF9uZXdfbmFtZSBzaG91bGQgYmUgc2V0CiAgICAgICAgX25ld19uYW1lID0gJycKCiAgICBtb2NrID0gS2xhc3MocGFyZW50PV9wYXJlbnQsIF9uZXdfcGFyZW50PV9wYXJlbnQsIF9uZXdfbmFtZT1fbmV3X25hbWUsCiAgICAgICAgICAgICAgICAgbmFtZT1fbmFtZSwgKipfa3dhcmdzKQoKICAgIGlmIGlzaW5zdGFuY2Uoc3BlYywgRnVuY3Rpb25UeXBlcyk6CiAgICAgICAgIyBzaG91bGQgb25seSBoYXBwZW4gYXQgdGhlIHRvcCBsZXZlbCBiZWNhdXNlIHdlIGRvbid0CiAgICAgICAgIyByZWN1cnNlIGZvciBmdW5jdGlvbnMKICAgICAgICBtb2NrID0gX3NldF9zaWduYXR1cmUobW9jaywgc3BlYykKICAgICAgICBpZiBpc19hc3luY19mdW5jOgogICAgICAgICAgICBfc2V0dXBfYXN5bmNfbW9jayhtb2NrKQogICAgZWxzZToKICAgICAgICBfY2hlY2tfc2lnbmF0dXJlKHNwZWMsIG1vY2ssIGlzX3R5cGUsIGluc3RhbmNlKQoKICAgIGlmIF9wYXJlbnQgaXMgbm90IE5vbmUgYW5kIG5vdCBpbnN0YW5jZToKICAgICAgICBfcGFyZW50Ll9tb2NrX2NoaWxkcmVuW19uYW1lXSA9IG1vY2sKCiAgICBpZiBpc190eXBlIGFuZCBub3QgaW5zdGFuY2UgYW5kICdyZXR1cm5fdmFsdWUnIG5vdCBpbiBrd2FyZ3M6CiAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQsIGluc3RhbmNlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25hbWU9JygpJywgX3BhcmVudD1tb2NrKQoKICAgIGZvciBlbnRyeSBpbiBkaXIoc3BlYyk6CiAgICAgICAgaWYgX2lzX21hZ2ljKGVudHJ5KToKICAgICAgICAgICAgIyBNYWdpY01vY2sgYWxyZWFkeSBkb2VzIHRoZSB1c2VmdWwgbWFnaWMgbWV0aG9kcyBmb3IgdXMKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgIyBYWFhYIGRvIHdlIG5lZWQgYSBiZXR0ZXIgd2F5IG9mIGdldHRpbmcgYXR0cmlidXRlcyB3aXRob3V0CiAgICAgICAgIyB0cmlnZ2VyaW5nIGNvZGUgZXhlY3V0aW9uICg/KSBQcm9iYWJseSBub3QgLSB3ZSBuZWVkIHRoZSBhY3R1YWwKICAgICAgICAjIG9iamVjdCB0byBtb2NrIGl0IHNvIHdlIHdvdWxkIHJhdGhlciB0cmlnZ2VyIGEgcHJvcGVydHkgdGhhbiBtb2NrCiAgICAgICAgIyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvci4gTGlrZXdpc2Ugd2Ugd2FudCB0byBtb2NrIG91dCBkeW5hbWljYWxseQogICAgICAgICMgcHJvdmlkZWQgYXR0cmlidXRlcy4KICAgICAgICAjIFhYWFggd2hhdCBhYm91dCBhdHRyaWJ1dGVzIHRoYXQgcmFpc2UgZXhjZXB0aW9ucyBvdGhlciB0aGFuCiAgICAgICAgIyBBdHRyaWJ1dGVFcnJvciBvbiBiZWluZyBmZXRjaGVkPwogICAgICAgICMgd2UgY291bGQgYmUgcmVzaWxpZW50IGFnYWluc3QgaXQsIG9yIGNhdGNoIGFuZCBwcm9wYWdhdGUgdGhlCiAgICAgICAgIyBleGNlcHRpb24gd2hlbiB0aGUgYXR0cmlidXRlIGlzIGZldGNoZWQgZnJvbSB0aGUgbW9jawogICAgICAgIHRyeToKICAgICAgICAgICAgb3JpZ2luYWwgPSBnZXRhdHRyKHNwZWMsIGVudHJ5KQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAga3dhcmdzID0geydzcGVjJzogb3JpZ2luYWx9CiAgICAgICAgaWYgc3BlY19zZXQ6CiAgICAgICAgICAgIGt3YXJncyA9IHsnc3BlY19zZXQnOiBvcmlnaW5hbH0KCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3JpZ2luYWwsIEZ1bmN0aW9uVHlwZXMpOgogICAgICAgICAgICBuZXcgPSBfU3BlY1N0YXRlKG9yaWdpbmFsLCBzcGVjX3NldCwgbW9jaywgZW50cnksIGluc3RhbmNlKQogICAgICAgICAgICBtb2NrLl9tb2NrX2NoaWxkcmVuW2VudHJ5XSA9IG5ldwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcmVudCA9IG1vY2sKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzcGVjLCBGdW5jdGlvblR5cGVzKToKICAgICAgICAgICAgICAgIHBhcmVudCA9IG1vY2subW9jawoKICAgICAgICAgICAgc2tpcGZpcnN0ID0gX211c3Rfc2tpcChzcGVjLCBlbnRyeSwgaXNfdHlwZSkKICAgICAgICAgICAga3dhcmdzWydfZWF0X3NlbGYnXSA9IHNraXBmaXJzdAogICAgICAgICAgICBpZiBpc2Nvcm91dGluZWZ1bmN0aW9uKG9yaWdpbmFsKToKICAgICAgICAgICAgICAgIGNoaWxkX2tsYXNzID0gQXN5bmNNb2NrCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjaGlsZF9rbGFzcyA9IE1hZ2ljTW9jawogICAgICAgICAgICBuZXcgPSBjaGlsZF9rbGFzcyhwYXJlbnQ9cGFyZW50LCBuYW1lPWVudHJ5LCBfbmV3X25hbWU9ZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCiAgICAgICAgICAgIG1vY2suX21vY2tfY2hpbGRyZW5bZW50cnldID0gbmV3CiAgICAgICAgICAgIF9jaGVja19zaWduYXR1cmUob3JpZ2luYWwsIG5ldywgc2tpcGZpcnN0PXNraXBmaXJzdCkKCiAgICAgICAgIyBzbyBmdW5jdGlvbnMgY3JlYXRlZCB3aXRoIF9zZXRfc2lnbmF0dXJlIGJlY29tZSBpbnN0YW5jZSBhdHRyaWJ1dGVzLAogICAgICAgICMgKnBsdXMqIHRoZWlyIHVuZGVybHlpbmcgbW9jayBleGlzdHMgaW4gX21vY2tfY2hpbGRyZW4gb2YgdGhlIHBhcmVudAogICAgICAgICMgbW9jay4gQWRkaW5nIHRvIF9tb2NrX2NoaWxkcmVuIG1heSBiZSB1bm5lY2Vzc2FyeSB3aGVyZSB3ZSBhcmUgYWxzbwogICAgICAgICMgc2V0dGluZyBhcyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGU/CiAgICAgICAgaWYgaXNpbnN0YW5jZShuZXcsIEZ1bmN0aW9uVHlwZXMpOgogICAgICAgICAgICBzZXRhdHRyKG1vY2ssIGVudHJ5LCBuZXcpCgogICAgcmV0dXJuIG1vY2sKCgpkZWYgX211c3Rfc2tpcChzcGVjLCBlbnRyeSwgaXNfdHlwZSk6CiAgICAiIiIKICAgIFJldHVybiB3aGV0aGVyIHdlIHNob3VsZCBza2lwIHRoZSBmaXJzdCBhcmd1bWVudCBvbiBzcGVjJ3MgYGVudHJ5YAogICAgYXR0cmlidXRlLgogICAgIiIiCiAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLCB0eXBlKToKICAgICAgICBpZiBlbnRyeSBpbiBnZXRhdHRyKHNwZWMsICdfX2RpY3RfXycsIHt9KToKICAgICAgICAgICAgIyBpbnN0YW5jZSBhdHRyaWJ1dGUgLSBzaG91bGRuJ3Qgc2tpcAogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBzcGVjID0gc3BlYy5fX2NsYXNzX18KCiAgICBmb3Iga2xhc3MgaW4gc3BlYy5fX21yb19fOgogICAgICAgIHJlc3VsdCA9IGtsYXNzLl9fZGljdF9fLmdldChlbnRyeSwgREVGQVVMVCkKICAgICAgICBpZiByZXN1bHQgaXMgREVGQVVMVDoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgKHN0YXRpY21ldGhvZCwgY2xhc3NtZXRob2QpKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZWxpZiBpc2luc3RhbmNlKHJlc3VsdCwgRnVuY3Rpb25UeXBlcyk6CiAgICAgICAgICAgICMgTm9ybWFsIG1ldGhvZCA9PiBza2lwIGlmIGxvb2tlZCB1cCBvbiB0eXBlCiAgICAgICAgICAgICMgKGlmIGxvb2tlZCB1cCBvbiBpbnN0YW5jZSwgc2VsZiBpcyBhbHJlYWR5IHNraXBwZWQpCiAgICAgICAgICAgIHJldHVybiBpc190eXBlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgIyBmdW5jdGlvbiBpcyBhIGR5bmFtaWNhbGx5IHByb3ZpZGVkIGF0dHJpYnV0ZQogICAgcmV0dXJuIGlzX3R5cGUKCgpjbGFzcyBfU3BlY1N0YXRlKG9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlLCBwYXJlbnQ9Tm9uZSwKICAgICAgICAgICAgICAgICBuYW1lPU5vbmUsIGlkcz1Ob25lLCBpbnN0YW5jZT1GYWxzZSk6CiAgICAgICAgc2VsZi5zcGVjID0gc3BlYwogICAgICAgIHNlbGYuaWRzID0gaWRzCiAgICAgICAgc2VsZi5zcGVjX3NldCA9IHNwZWNfc2V0CiAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKICAgICAgICBzZWxmLmluc3RhbmNlID0gaW5zdGFuY2UKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCgoKRnVuY3Rpb25UeXBlcyA9ICgKICAgICMgcHl0aG9uIGZ1bmN0aW9uCiAgICB0eXBlKGNyZWF0ZV9hdXRvc3BlYyksCiAgICAjIGluc3RhbmNlIG1ldGhvZAogICAgdHlwZShBTlkuX19lcV9fKSwKKQoKCmZpbGVfc3BlYyA9IE5vbmUKb3Blbl9zcGVjID0gTm9uZQoKCmRlZiBfdG9fc3RyZWFtKHJlYWRfZGF0YSk6CiAgICBpZiBpc2luc3RhbmNlKHJlYWRfZGF0YSwgYnl0ZXMpOgogICAgICAgIHJldHVybiBpby5CeXRlc0lPKHJlYWRfZGF0YSkKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGlvLlN0cmluZ0lPKHJlYWRfZGF0YSkKCgpkZWYgbW9ja19vcGVuKG1vY2s9Tm9uZSwgcmVhZF9kYXRhPScnKToKICAgICIiIgogICAgQSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbW9jayB0byByZXBsYWNlIHRoZSB1c2Ugb2YgYG9wZW5gLiBJdCB3b3JrcwogICAgZm9yIGBvcGVuYCBjYWxsZWQgZGlyZWN0bHkgb3IgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KCiAgICBUaGUgYG1vY2tgIGFyZ3VtZW50IGlzIHRoZSBtb2NrIG9iamVjdCB0byBjb25maWd1cmUuIElmIGBOb25lYCAodGhlCiAgICBkZWZhdWx0KSB0aGVuIGEgYE1hZ2ljTW9ja2Agd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UsIHdpdGggdGhlIEFQSSBsaW1pdGVkCiAgICB0byBtZXRob2RzIG9yIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIG9uIHN0YW5kYXJkIGZpbGUgaGFuZGxlcy4KCiAgICBgcmVhZF9kYXRhYCBpcyBhIHN0cmluZyBmb3IgdGhlIGByZWFkYCwgYHJlYWRsaW5lYCBhbmQgYHJlYWRsaW5lc2Agb2YgdGhlCiAgICBmaWxlIGhhbmRsZSB0byByZXR1cm4uICBUaGlzIGlzIGFuIGVtcHR5IHN0cmluZyBieSBkZWZhdWx0LgogICAgIiIiCiAgICBfcmVhZF9kYXRhID0gX3RvX3N0cmVhbShyZWFkX2RhdGEpCiAgICBfc3RhdGUgPSBbX3JlYWRfZGF0YSwgTm9uZV0KCiAgICBkZWYgX3JlYWRsaW5lc19zaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgogICAgICAgIGlmIGhhbmRsZS5yZWFkbGluZXMucmV0dXJuX3ZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gaGFuZGxlLnJlYWRsaW5lcy5yZXR1cm5fdmFsdWUKICAgICAgICByZXR1cm4gX3N0YXRlWzBdLnJlYWRsaW5lcygqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIF9yZWFkX3NpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgaWYgaGFuZGxlLnJlYWQucmV0dXJuX3ZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICByZXR1cm4gaGFuZGxlLnJlYWQucmV0dXJuX3ZhbHVlCiAgICAgICAgcmV0dXJuIF9zdGF0ZVswXS5yZWFkKCphcmdzLCAqKmt3YXJncykKCiAgICBkZWYgX3JlYWRsaW5lX3NpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgeWllbGQgZnJvbSBfaXRlcl9zaWRlX2VmZmVjdCgpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgeWllbGQgX3N0YXRlWzBdLnJlYWRsaW5lKCphcmdzLCAqKmt3YXJncykKCiAgICBkZWYgX2l0ZXJfc2lkZV9lZmZlY3QoKToKICAgICAgICBpZiBoYW5kbGUucmVhZGxpbmUucmV0dXJuX3ZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgeWllbGQgaGFuZGxlLnJlYWRsaW5lLnJldHVybl92YWx1ZQogICAgICAgIGZvciBsaW5lIGluIF9zdGF0ZVswXToKICAgICAgICAgICAgeWllbGQgbGluZQoKICAgIGRlZiBfbmV4dF9zaWRlX2VmZmVjdCgpOgogICAgICAgIGlmIGhhbmRsZS5yZWFkbGluZS5yZXR1cm5fdmFsdWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBoYW5kbGUucmVhZGxpbmUucmV0dXJuX3ZhbHVlCiAgICAgICAgcmV0dXJuIG5leHQoX3N0YXRlWzBdKQoKICAgIGdsb2JhbCBmaWxlX3NwZWMKICAgIGlmIGZpbGVfc3BlYyBpcyBOb25lOgogICAgICAgIGltcG9ydCBfaW8KICAgICAgICBmaWxlX3NwZWMgPSBsaXN0KHNldChkaXIoX2lvLlRleHRJT1dyYXBwZXIpKS51bmlvbihzZXQoZGlyKF9pby5CeXRlc0lPKSkpKQoKICAgIGdsb2JhbCBvcGVuX3NwZWMKICAgIGlmIG9wZW5fc3BlYyBpcyBOb25lOgogICAgICAgIGltcG9ydCBfaW8KICAgICAgICBvcGVuX3NwZWMgPSBsaXN0KHNldChkaXIoX2lvLm9wZW4pKSkKICAgIGlmIG1vY2sgaXMgTm9uZToKICAgICAgICBtb2NrID0gTWFnaWNNb2NrKG5hbWU9J29wZW4nLCBzcGVjPW9wZW5fc3BlYykKCiAgICBoYW5kbGUgPSBNYWdpY01vY2soc3BlYz1maWxlX3NwZWMpCiAgICBoYW5kbGUuX19lbnRlcl9fLnJldHVybl92YWx1ZSA9IGhhbmRsZQoKICAgIGhhbmRsZS53cml0ZS5yZXR1cm5fdmFsdWUgPSBOb25lCiAgICBoYW5kbGUucmVhZC5yZXR1cm5fdmFsdWUgPSBOb25lCiAgICBoYW5kbGUucmVhZGxpbmUucmV0dXJuX3ZhbHVlID0gTm9uZQogICAgaGFuZGxlLnJlYWRsaW5lcy5yZXR1cm5fdmFsdWUgPSBOb25lCgogICAgaGFuZGxlLnJlYWQuc2lkZV9lZmZlY3QgPSBfcmVhZF9zaWRlX2VmZmVjdAogICAgX3N0YXRlWzFdID0gX3JlYWRsaW5lX3NpZGVfZWZmZWN0KCkKICAgIGhhbmRsZS5yZWFkbGluZS5zaWRlX2VmZmVjdCA9IF9zdGF0ZVsxXQogICAgaGFuZGxlLnJlYWRsaW5lcy5zaWRlX2VmZmVjdCA9IF9yZWFkbGluZXNfc2lkZV9lZmZlY3QKICAgIGhhbmRsZS5fX2l0ZXJfXy5zaWRlX2VmZmVjdCA9IF9pdGVyX3NpZGVfZWZmZWN0CiAgICBoYW5kbGUuX19uZXh0X18uc2lkZV9lZmZlY3QgPSBfbmV4dF9zaWRlX2VmZmVjdAoKICAgIGRlZiByZXNldF9kYXRhKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgX3N0YXRlWzBdID0gX3RvX3N0cmVhbShyZWFkX2RhdGEpCiAgICAgICAgaWYgaGFuZGxlLnJlYWRsaW5lLnNpZGVfZWZmZWN0ID09IF9zdGF0ZVsxXToKICAgICAgICAgICAgIyBPbmx5IHJlc2V0IHRoZSBzaWRlIGVmZmVjdCBpZiB0aGUgdXNlciBoYXNuJ3Qgb3ZlcnJpZGRlbiBpdC4KICAgICAgICAgICAgX3N0YXRlWzFdID0gX3JlYWRsaW5lX3NpZGVfZWZmZWN0KCkKICAgICAgICAgICAgaGFuZGxlLnJlYWRsaW5lLnNpZGVfZWZmZWN0ID0gX3N0YXRlWzFdCiAgICAgICAgcmV0dXJuIERFRkFVTFQKCiAgICBtb2NrLnNpZGVfZWZmZWN0ID0gcmVzZXRfZGF0YQogICAgbW9jay5yZXR1cm5fdmFsdWUgPSBoYW5kbGUKICAgIHJldHVybiBtb2NrCgoKY2xhc3MgUHJvcGVydHlNb2NrKE1vY2spOgogICAgIiIiCiAgICBBIG1vY2sgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIHByb3BlcnR5LCBvciBvdGhlciBkZXNjcmlwdG9yLCBvbiBhIGNsYXNzLgogICAgYFByb3BlcnR5TW9ja2AgcHJvdmlkZXMgYF9fZ2V0X19gIGFuZCBgX19zZXRfX2AgbWV0aG9kcyBzbyB5b3UgY2FuIHNwZWNpZnkKICAgIGEgcmV0dXJuIHZhbHVlIHdoZW4gaXQgaXMgZmV0Y2hlZC4KCiAgICBGZXRjaGluZyBhIGBQcm9wZXJ0eU1vY2tgIGluc3RhbmNlIGZyb20gYW4gb2JqZWN0IGNhbGxzIHRoZSBtb2NrLCB3aXRoCiAgICBubyBhcmdzLiBTZXR0aW5nIGl0IGNhbGxzIHRoZSBtb2NrIHdpdGggdGhlIHZhbHVlIGJlaW5nIHNldC4KICAgICIiIgogICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAvLCAqKmt3YXJncyk6CiAgICAgICAgcmV0dXJuIE1hZ2ljTW9jaygqKmt3YXJncykKCiAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIG9ial90eXBlPU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmKCkKICAgIGRlZiBfX3NldF9fKHNlbGYsIG9iaiwgdmFsKToKICAgICAgICBzZWxmKHZhbCkKCgpkZWYgc2VhbChtb2NrKToKICAgICIiIkRpc2FibGUgdGhlIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIGNoaWxkIG1vY2tzLgoKICAgIEdpdmVuIGFuIGlucHV0IE1vY2ssIHNlYWxzIGl0IHRvIGVuc3VyZSBubyBmdXJ0aGVyIG1vY2tzIHdpbGwgYmUgZ2VuZXJhdGVkCiAgICB3aGVuIGFjY2Vzc2luZyBhbiBhdHRyaWJ1dGUgdGhhdCB3YXMgbm90IGFscmVhZHkgZGVmaW5lZC4KCiAgICBUaGUgb3BlcmF0aW9uIHJlY3Vyc2l2ZWx5IHNlYWxzIHRoZSBtb2NrIHBhc3NlZCBpbiwgbWVhbmluZyB0aGF0CiAgICB0aGUgbW9jayBpdHNlbGYsIGFueSBtb2NrcyBnZW5lcmF0ZWQgYnkgYWNjZXNzaW5nIG9uZSBvZiBpdHMgYXR0cmlidXRlcywKICAgIGFuZCBhbGwgYXNzaWduZWQgbW9ja3Mgd2l0aG91dCBhIG5hbWUgb3Igc3BlYyB3aWxsIGJlIHNlYWxlZC4KICAgICIiIgogICAgbW9jay5fbW9ja19zZWFsZWQgPSBUcnVlCiAgICBmb3IgYXR0ciBpbiBkaXIobW9jayk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBtID0gZ2V0YXR0cihtb2NrLCBhdHRyKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtLCBOb25DYWxsYWJsZU1vY2spOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIGlzaW5zdGFuY2UobS5fbW9ja19jaGlsZHJlbi5nZXQoYXR0ciksIF9TcGVjU3RhdGUpOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIG0uX21vY2tfbmV3X3BhcmVudCBpcyBtb2NrOgogICAgICAgICAgICBzZWFsKG0pCgoKY2xhc3MgX0FzeW5jSXRlcmF0b3I6CiAgICAiIiIKICAgIFdyYXBzIGFuIGl0ZXJhdG9yIGluIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvci4KICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZXJhdG9yKToKICAgICAgICBzZWxmLml0ZXJhdG9yID0gaXRlcmF0b3IKICAgICAgICBjb2RlX21vY2sgPSBOb25DYWxsYWJsZU1vY2soc3BlY19zZXQ9Q29kZVR5cGUpCiAgICAgICAgY29kZV9tb2NrLmNvX2ZsYWdzID0gaW5zcGVjdC5DT19JVEVSQUJMRV9DT1JPVVRJTkUKICAgICAgICBzZWxmLl9fZGljdF9fWydfX2NvZGVfXyddID0gY29kZV9tb2NrCgogICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYuaXRlcmF0b3IpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHBhc3MKICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KUEsDBBQAAAAAAAMgo1baZ+shRiEAAEYhAAASAAAAdW5pdHRlc3QvcmVzdWx0LnB5IiIiVGVzdCByZXN1bHQgb2JqZWN0IiIiCgppbXBvcnQgaW8KaW1wb3J0IHN5cwppbXBvcnQgdHJhY2ViYWNrCgpmcm9tIC4gaW1wb3J0IHV0aWwKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCgpfX3VuaXR0ZXN0ID0gVHJ1ZQoKZGVmIGZhaWxmYXN0KG1ldGhvZCk6CiAgICBAd3JhcHMobWV0aG9kKQogICAgZGVmIGlubmVyKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdmYWlsZmFzdCcsIEZhbHNlKToKICAgICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICByZXR1cm4gbWV0aG9kKHNlbGYsICphcmdzLCAqKmt3KQogICAgcmV0dXJuIGlubmVyCgpTVERPVVRfTElORSA9ICdcblN0ZG91dDpcbiVzJwpTVERFUlJfTElORSA9ICdcblN0ZGVycjpcbiVzJwoKCmNsYXNzIFRlc3RSZXN1bHQob2JqZWN0KToKICAgICIiIkhvbGRlciBmb3IgdGVzdCByZXN1bHQgaW5mb3JtYXRpb24uCgogICAgVGVzdCByZXN1bHRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hbmFnZWQgYnkgdGhlIFRlc3RDYXNlIGFuZCBUZXN0U3VpdGUKICAgIGNsYXNzZXMsIGFuZCBkbyBub3QgbmVlZCB0byBiZSBleHBsaWNpdGx5IG1hbmlwdWxhdGVkIGJ5IHdyaXRlcnMgb2YgdGVzdHMuCgogICAgRWFjaCBpbnN0YW5jZSBob2xkcyB0aGUgdG90YWwgbnVtYmVyIG9mIHRlc3RzIHJ1biwgYW5kIGNvbGxlY3Rpb25zIG9mCiAgICBmYWlsdXJlcyBhbmQgZXJyb3JzIHRoYXQgb2NjdXJyZWQgYW1vbmcgdGhvc2UgdGVzdCBydW5zLiBUaGUgY29sbGVjdGlvbnMKICAgIGNvbnRhaW4gdHVwbGVzIG9mICh0ZXN0Y2FzZSwgZXhjZXB0aW9uaW5mbyksIHdoZXJlIGV4Y2VwdGlvbmluZm8gaXMgdGhlCiAgICBmb3JtYXR0ZWQgdHJhY2ViYWNrIG9mIHRoZSBlcnJvciB0aGF0IG9jY3VycmVkLgogICAgIiIiCiAgICBfcHJldmlvdXNUZXN0Q2xhc3MgPSBOb25lCiAgICBfdGVzdFJ1bkVudGVyZWQgPSBGYWxzZQogICAgX21vZHVsZVNldFVwRmFpbGVkID0gRmFsc2UKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW09Tm9uZSwgZGVzY3JpcHRpb25zPU5vbmUsIHZlcmJvc2l0eT1Ob25lKToKICAgICAgICBzZWxmLmZhaWxmYXN0ID0gRmFsc2UKICAgICAgICBzZWxmLmZhaWx1cmVzID0gW10KICAgICAgICBzZWxmLmVycm9ycyA9IFtdCiAgICAgICAgc2VsZi50ZXN0c1J1biA9IDAKICAgICAgICBzZWxmLnNraXBwZWQgPSBbXQogICAgICAgIHNlbGYuZXhwZWN0ZWRGYWlsdXJlcyA9IFtdCiAgICAgICAgc2VsZi51bmV4cGVjdGVkU3VjY2Vzc2VzID0gW10KICAgICAgICBzZWxmLnNob3VsZFN0b3AgPSBGYWxzZQogICAgICAgIHNlbGYuYnVmZmVyID0gRmFsc2UKICAgICAgICBzZWxmLnRiX2xvY2FscyA9IEZhbHNlCiAgICAgICAgc2VsZi5fc3Rkb3V0X2J1ZmZlciA9IE5vbmUKICAgICAgICBzZWxmLl9zdGRlcnJfYnVmZmVyID0gTm9uZQogICAgICAgIHNlbGYuX29yaWdpbmFsX3N0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICBzZWxmLl9vcmlnaW5hbF9zdGRlcnIgPSBzeXMuc3RkZXJyCiAgICAgICAgc2VsZi5fbWlycm9yT3V0cHV0ID0gRmFsc2UKCiAgICBkZWYgcHJpbnRFcnJvcnMoc2VsZik6CiAgICAgICAgIkNhbGxlZCBieSBUZXN0UnVubmVyIGFmdGVyIHRlc3QgcnVuIgoKICAgIGRlZiBzdGFydFRlc3Qoc2VsZiwgdGVzdCk6CiAgICAgICAgIkNhbGxlZCB3aGVuIHRoZSBnaXZlbiB0ZXN0IGlzIGFib3V0IHRvIGJlIHJ1biIKICAgICAgICBzZWxmLnRlc3RzUnVuICs9IDEKICAgICAgICBzZWxmLl9taXJyb3JPdXRwdXQgPSBGYWxzZQogICAgICAgIHNlbGYuX3NldHVwU3Rkb3V0KCkKCiAgICBkZWYgX3NldHVwU3Rkb3V0KHNlbGYpOgogICAgICAgIGlmIHNlbGYuYnVmZmVyOgogICAgICAgICAgICBpZiBzZWxmLl9zdGRlcnJfYnVmZmVyIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBzZWxmLl9zdGRlcnJfYnVmZmVyID0gaW8uU3RyaW5nSU8oKQogICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0X2J1ZmZlciA9IGlvLlN0cmluZ0lPKCkKICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX3N0ZG91dF9idWZmZXIKICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNlbGYuX3N0ZGVycl9idWZmZXIKCiAgICBkZWYgc3RhcnRUZXN0UnVuKHNlbGYpOgogICAgICAgICIiIkNhbGxlZCBvbmNlIGJlZm9yZSBhbnkgdGVzdHMgYXJlIGV4ZWN1dGVkLgoKICAgICAgICBTZWUgc3RhcnRUZXN0IGZvciBhIG1ldGhvZCBjYWxsZWQgYmVmb3JlIGVhY2ggdGVzdC4KICAgICAgICAiIiIKCiAgICBkZWYgc3RvcFRlc3Qoc2VsZiwgdGVzdCk6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gdGhlIGdpdmVuIHRlc3QgaGFzIGJlZW4gcnVuIiIiCiAgICAgICAgc2VsZi5fcmVzdG9yZVN0ZG91dCgpCiAgICAgICAgc2VsZi5fbWlycm9yT3V0cHV0ID0gRmFsc2UKCiAgICBkZWYgX3Jlc3RvcmVTdGRvdXQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5idWZmZXI6CiAgICAgICAgICAgIGlmIHNlbGYuX21pcnJvck91dHB1dDoKICAgICAgICAgICAgICAgIG91dHB1dCA9IHN5cy5zdGRvdXQuZ2V0dmFsdWUoKQogICAgICAgICAgICAgICAgZXJyb3IgPSBzeXMuc3RkZXJyLmdldHZhbHVlKCkKICAgICAgICAgICAgICAgIGlmIG91dHB1dDoKICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3V0cHV0LmVuZHN3aXRoKCdcbicpOgogICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJ1xuJwogICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX3N0ZG91dC53cml0ZShTVERPVVRfTElORSAlIG91dHB1dCkKICAgICAgICAgICAgICAgIGlmIGVycm9yOgogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBlcnJvci5lbmRzd2l0aCgnXG4nKToKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgKz0gJ1xuJwogICAgICAgICAgICAgICAgICAgIHNlbGYuX29yaWdpbmFsX3N0ZGVyci53cml0ZShTVERFUlJfTElORSAlIGVycm9yKQoKICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuX29yaWdpbmFsX3N0ZG91dAogICAgICAgICAgICBzeXMuc3RkZXJyID0gc2VsZi5fb3JpZ2luYWxfc3RkZXJyCiAgICAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmZXIuc2VlaygwKQogICAgICAgICAgICBzZWxmLl9zdGRvdXRfYnVmZmVyLnRydW5jYXRlKCkKICAgICAgICAgICAgc2VsZi5fc3RkZXJyX2J1ZmZlci5zZWVrKDApCiAgICAgICAgICAgIHNlbGYuX3N0ZGVycl9idWZmZXIudHJ1bmNhdGUoKQoKICAgIGRlZiBzdG9wVGVzdFJ1bihzZWxmKToKICAgICAgICAiIiJDYWxsZWQgb25jZSBhZnRlciBhbGwgdGVzdHMgYXJlIGV4ZWN1dGVkLgoKICAgICAgICBTZWUgc3RvcFRlc3QgZm9yIGEgbWV0aG9kIGNhbGxlZCBhZnRlciBlYWNoIHRlc3QuCiAgICAgICAgIiIiCgogICAgQGZhaWxmYXN0CiAgICBkZWYgYWRkRXJyb3Ioc2VsZiwgdGVzdCwgZXJyKToKICAgICAgICAiIiJDYWxsZWQgd2hlbiBhbiBlcnJvciBoYXMgb2NjdXJyZWQuICdlcnInIGlzIGEgdHVwbGUgb2YgdmFsdWVzIGFzCiAgICAgICAgcmV0dXJuZWQgYnkgc3lzLmV4Y19pbmZvKCkuCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKCh0ZXN0LCBzZWxmLl9leGNfaW5mb190b19zdHJpbmcoZXJyLCB0ZXN0KSkpCiAgICAgICAgc2VsZi5fbWlycm9yT3V0cHV0ID0gVHJ1ZQoKICAgIEBmYWlsZmFzdAogICAgZGVmIGFkZEZhaWx1cmUoc2VsZiwgdGVzdCwgZXJyKToKICAgICAgICAiIiJDYWxsZWQgd2hlbiBhbiBlcnJvciBoYXMgb2NjdXJyZWQuICdlcnInIGlzIGEgdHVwbGUgb2YgdmFsdWVzIGFzCiAgICAgICAgcmV0dXJuZWQgYnkgc3lzLmV4Y19pbmZvKCkuIiIiCiAgICAgICAgc2VsZi5mYWlsdXJlcy5hcHBlbmQoKHRlc3QsIHNlbGYuX2V4Y19pbmZvX3RvX3N0cmluZyhlcnIsIHRlc3QpKSkKICAgICAgICBzZWxmLl9taXJyb3JPdXRwdXQgPSBUcnVlCgogICAgZGVmIGFkZFN1YlRlc3Qoc2VsZiwgdGVzdCwgc3VidGVzdCwgZXJyKToKICAgICAgICAiIiJDYWxsZWQgYXQgdGhlIGVuZCBvZiBhIHN1YnRlc3QuCiAgICAgICAgJ2VycicgaXMgTm9uZSBpZiB0aGUgc3VidGVzdCBlbmRlZCBzdWNjZXNzZnVsbHksIG90aGVyd2lzZSBpdCdzIGEKICAgICAgICB0dXBsZSBvZiB2YWx1ZXMgYXMgcmV0dXJuZWQgYnkgc3lzLmV4Y19pbmZvKCkuCiAgICAgICAgIiIiCiAgICAgICAgIyBCeSBkZWZhdWx0LCB3ZSBkb24ndCBkbyBhbnl0aGluZyB3aXRoIHN1Y2Nlc3NmdWwgc3VidGVzdHMsIGJ1dAogICAgICAgICMgbW9yZSBzb3BoaXN0aWNhdGVkIHRlc3QgcmVzdWx0cyBtaWdodCB3YW50IHRvIHJlY29yZCB0aGVtLgogICAgICAgIGlmIGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAnZmFpbGZhc3QnLCBGYWxzZSk6CiAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQogICAgICAgICAgICBpZiBpc3N1YmNsYXNzKGVyclswXSwgdGVzdC5mYWlsdXJlRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYuZmFpbHVyZXMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYuZXJyb3JzCiAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKHN1YnRlc3QsIHNlbGYuX2V4Y19pbmZvX3RvX3N0cmluZyhlcnIsIHRlc3QpKSkKICAgICAgICAgICAgc2VsZi5fbWlycm9yT3V0cHV0ID0gVHJ1ZQoKICAgIGRlZiBhZGRTdWNjZXNzKHNlbGYsIHRlc3QpOgogICAgICAgICJDYWxsZWQgd2hlbiBhIHRlc3QgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkiCiAgICAgICAgcGFzcwoKICAgIGRlZiBhZGRTa2lwKHNlbGYsIHRlc3QsIHJlYXNvbik6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSB0ZXN0IGlzIHNraXBwZWQuIiIiCiAgICAgICAgc2VsZi5za2lwcGVkLmFwcGVuZCgodGVzdCwgcmVhc29uKSkKCiAgICBkZWYgYWRkRXhwZWN0ZWRGYWlsdXJlKHNlbGYsIHRlc3QsIGVycik6CiAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYW4gZXhwZWN0ZWQgZmFpbHVyZS9lcnJvciBvY2N1cnJlZC4iIiIKICAgICAgICBzZWxmLmV4cGVjdGVkRmFpbHVyZXMuYXBwZW5kKAogICAgICAgICAgICAodGVzdCwgc2VsZi5fZXhjX2luZm9fdG9fc3RyaW5nKGVyciwgdGVzdCkpKQoKICAgIEBmYWlsZmFzdAogICAgZGVmIGFkZFVuZXhwZWN0ZWRTdWNjZXNzKHNlbGYsIHRlc3QpOgogICAgICAgICIiIkNhbGxlZCB3aGVuIGEgdGVzdCB3YXMgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHN1Y2NlZWQuIiIiCiAgICAgICAgc2VsZi51bmV4cGVjdGVkU3VjY2Vzc2VzLmFwcGVuZCh0ZXN0KQoKICAgIGRlZiB3YXNTdWNjZXNzZnVsKHNlbGYpOgogICAgICAgICIiIlRlbGxzIHdoZXRoZXIgb3Igbm90IHRoaXMgcmVzdWx0IHdhcyBhIHN1Y2Nlc3MuIiIiCiAgICAgICAgIyBUaGUgaGFzYXR0ciBjaGVjayBpcyBmb3IgdGVzdF9yZXN1bHQncyBPbGRSZXN1bHQgdGVzdC4gIFRoYXQKICAgICAgICAjIHdheSB0aGlzIG1ldGhvZCB3b3JrcyBvbiBvYmplY3RzIHRoYXQgbGFjayB0aGUgYXR0cmlidXRlLgogICAgICAgICMgKHdoZXJlIHdvdWxkIHN1Y2ggcmVzdWx0IGluc3RhbmNlcyBjb21lIGZyb20/IG9sZCBzdG9yZWQgcGlja2xlcz8pCiAgICAgICAgcmV0dXJuICgobGVuKHNlbGYuZmFpbHVyZXMpID09IGxlbihzZWxmLmVycm9ycykgPT0gMCkgYW5kCiAgICAgICAgICAgICAgICAobm90IGhhc2F0dHIoc2VsZiwgJ3VuZXhwZWN0ZWRTdWNjZXNzZXMnKSBvcgogICAgICAgICAgICAgICAgIGxlbihzZWxmLnVuZXhwZWN0ZWRTdWNjZXNzZXMpID09IDApKQoKICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICIiIkluZGljYXRlcyB0aGF0IHRoZSB0ZXN0cyBzaG91bGQgYmUgYWJvcnRlZC4iIiIKICAgICAgICBzZWxmLnNob3VsZFN0b3AgPSBUcnVlCgogICAgZGVmIF9leGNfaW5mb190b19zdHJpbmcoc2VsZiwgZXJyLCB0ZXN0KToKICAgICAgICAiIiJDb252ZXJ0cyBhIHN5cy5leGNfaW5mbygpLXN0eWxlIHR1cGxlIG9mIHZhbHVlcyBpbnRvIGEgc3RyaW5nLiIiIgogICAgICAgIGV4Y3R5cGUsIHZhbHVlLCB0YiA9IGVycgogICAgICAgIHRiID0gc2VsZi5fY2xlYW5fdHJhY2ViYWNrcyhleGN0eXBlLCB2YWx1ZSwgdGIsIHRlc3QpCiAgICAgICAgdGJfZSA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oCiAgICAgICAgICAgIGV4Y3R5cGUsIHZhbHVlLCB0YiwKICAgICAgICAgICAgY2FwdHVyZV9sb2NhbHM9c2VsZi50Yl9sb2NhbHMsIGNvbXBhY3Q9VHJ1ZSkKICAgICAgICBtc2dMaW5lcyA9IGxpc3QodGJfZS5mb3JtYXQoKSkKCiAgICAgICAgaWYgc2VsZi5idWZmZXI6CiAgICAgICAgICAgIG91dHB1dCA9IHN5cy5zdGRvdXQuZ2V0dmFsdWUoKQogICAgICAgICAgICBlcnJvciA9IHN5cy5zdGRlcnIuZ2V0dmFsdWUoKQogICAgICAgICAgICBpZiBvdXRwdXQ6CiAgICAgICAgICAgICAgICBpZiBub3Qgb3V0cHV0LmVuZHN3aXRoKCdcbicpOgogICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSAnXG4nCiAgICAgICAgICAgICAgICBtc2dMaW5lcy5hcHBlbmQoU1RET1VUX0xJTkUgJSBvdXRwdXQpCiAgICAgICAgICAgIGlmIGVycm9yOgogICAgICAgICAgICAgICAgaWYgbm90IGVycm9yLmVuZHN3aXRoKCdcbicpOgogICAgICAgICAgICAgICAgICAgIGVycm9yICs9ICdcbicKICAgICAgICAgICAgICAgIG1zZ0xpbmVzLmFwcGVuZChTVERFUlJfTElORSAlIGVycm9yKQogICAgICAgIHJldHVybiAnJy5qb2luKG1zZ0xpbmVzKQoKICAgIGRlZiBfY2xlYW5fdHJhY2ViYWNrcyhzZWxmLCBleGN0eXBlLCB2YWx1ZSwgdGIsIHRlc3QpOgogICAgICAgIHJldCA9IE5vbmUKICAgICAgICBmaXJzdCA9IFRydWUKICAgICAgICBleGNzID0gWyhleGN0eXBlLCB2YWx1ZSwgdGIpXQogICAgICAgIHNlZW4gPSB7aWQodmFsdWUpfSAgIyBEZXRlY3QgbG9vcHMgaW4gY2hhaW5lZCBleGNlcHRpb25zLgogICAgICAgIHdoaWxlIGV4Y3M6CiAgICAgICAgICAgIChleGN0eXBlLCB2YWx1ZSwgdGIpID0gZXhjcy5wb3AoKQogICAgICAgICAgICAjIFNraXAgdGVzdCBydW5uZXIgdHJhY2ViYWNrIGxldmVscwogICAgICAgICAgICB3aGlsZSB0YiBhbmQgc2VsZi5faXNfcmVsZXZhbnRfdGJfbGV2ZWwodGIpOgogICAgICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CgogICAgICAgICAgICAjIFNraXAgYXNzZXJ0KigpIHRyYWNlYmFjayBsZXZlbHMKICAgICAgICAgICAgaWYgZXhjdHlwZSBpcyB0ZXN0LmZhaWx1cmVFeGNlcHRpb246CiAgICAgICAgICAgICAgICBzZWxmLl9yZW1vdmVfdW5pdHRlc3RfdGJfZnJhbWVzKHRiKQoKICAgICAgICAgICAgaWYgZmlyc3Q6CiAgICAgICAgICAgICAgICByZXQgPSB0YgogICAgICAgICAgICAgICAgZmlyc3QgPSBGYWxzZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdmFsdWUuX190cmFjZWJhY2tfXyA9IHRiCgogICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGZvciBjIGluICh2YWx1ZS5fX2NhdXNlX18sIHZhbHVlLl9fY29udGV4dF9fKToKICAgICAgICAgICAgICAgICAgICBpZiBjIGlzIG5vdCBOb25lIGFuZCBpZChjKSBub3QgaW4gc2VlbjoKICAgICAgICAgICAgICAgICAgICAgICAgZXhjcy5hcHBlbmQoKHR5cGUoYyksIGMsIGMuX190cmFjZWJhY2tfXykpCiAgICAgICAgICAgICAgICAgICAgICAgIHNlZW4uYWRkKGlkKGMpKQogICAgICAgIHJldHVybiByZXQKCiAgICBkZWYgX2lzX3JlbGV2YW50X3RiX2xldmVsKHNlbGYsIHRiKToKICAgICAgICByZXR1cm4gJ19fdW5pdHRlc3QnIGluIHRiLnRiX2ZyYW1lLmZfZ2xvYmFscwoKICAgIGRlZiBfcmVtb3ZlX3VuaXR0ZXN0X3RiX2ZyYW1lcyhzZWxmLCB0Yik6CiAgICAgICAgJycnVHJ1bmNhdGVzIHVzZXJjb2RlIHRiIGF0IHRoZSBmaXJzdCB1bml0dGVzdCBmcmFtZS4KCiAgICAgICAgSWYgdGhlIGZpcnN0IGZyYW1lIG9mIHRoZSB0cmFjZWJhY2sgaXMgaW4gdXNlciBjb2RlLAogICAgICAgIHRoZSBwcmVmaXggdXAgdG8gdGhlIGZpcnN0IHVuaXR0ZXN0IGZyYW1lIGlzIHJldHVybmVkLgogICAgICAgIElmIHRoZSBmaXJzdCBmcmFtZSBpcyBhbHJlYWR5IGluIHRoZSB1bml0dGVzdCBtb2R1bGUsCiAgICAgICAgdGhlIHRyYWNlYmFjayBpcyBub3QgbW9kaWZpZWQuCiAgICAgICAgJycnCiAgICAgICAgcHJldiA9IE5vbmUKICAgICAgICB3aGlsZSB0YiBhbmQgbm90IHNlbGYuX2lzX3JlbGV2YW50X3RiX2xldmVsKHRiKToKICAgICAgICAgICAgcHJldiA9IHRiCiAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgICAgIGlmIHByZXYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHByZXYudGJfbmV4dCA9IE5vbmUKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICgiPCVzIHJ1bj0laSBlcnJvcnM9JWkgZmFpbHVyZXM9JWk+IiAlCiAgICAgICAgICAgICAgICh1dGlsLnN0cmNsYXNzKHNlbGYuX19jbGFzc19fKSwgc2VsZi50ZXN0c1J1biwgbGVuKHNlbGYuZXJyb3JzKSwKICAgICAgICAgICAgICAgIGxlbihzZWxmLmZhaWx1cmVzKSkpClBLAwQUAAAAAAADIKNWXtsDf8okAADKJAAAEgAAAHVuaXR0ZXN0L3J1bm5lci5weSIiIlJ1bm5pbmcgdGVzdHMiIiIKCmltcG9ydCBzeXMKaW1wb3J0IHRpbWUKaW1wb3J0IHdhcm5pbmdzCgpmcm9tIC4gaW1wb3J0IHJlc3VsdApmcm9tIC5jYXNlIGltcG9ydCBfU3ViVGVzdApmcm9tIC5zaWduYWxzIGltcG9ydCByZWdpc3RlclJlc3VsdAoKX191bml0dGVzdCA9IFRydWUKCgpjbGFzcyBfV3JpdGVsbkRlY29yYXRvcihvYmplY3QpOgogICAgIiIiVXNlZCB0byBkZWNvcmF0ZSBmaWxlLWxpa2Ugb2JqZWN0cyB3aXRoIGEgaGFuZHkgJ3dyaXRlbG4nIG1ldGhvZCIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsc3RyZWFtKToKICAgICAgICBzZWxmLnN0cmVhbSA9IHN0cmVhbQoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKICAgICAgICBpZiBhdHRyIGluICgnc3RyZWFtJywgJ19fZ2V0c3RhdGVfXycpOgogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuc3RyZWFtLGF0dHIpCgogICAgZGVmIHdyaXRlbG4oc2VsZiwgYXJnPU5vbmUpOgogICAgICAgIGlmIGFyZzoKICAgICAgICAgICAgc2VsZi53cml0ZShhcmcpCiAgICAgICAgc2VsZi53cml0ZSgnXG4nKSAjIHRleHQtbW9kZSBzdHJlYW1zIHRyYW5zbGF0ZSB0byBcclxuIGlmIG5lZWRlZAoKCmNsYXNzIFRleHRUZXN0UmVzdWx0KHJlc3VsdC5UZXN0UmVzdWx0KToKICAgICIiIkEgdGVzdCByZXN1bHQgY2xhc3MgdGhhdCBjYW4gcHJpbnQgZm9ybWF0dGVkIHRleHQgcmVzdWx0cyB0byBhIHN0cmVhbS4KCiAgICBVc2VkIGJ5IFRleHRUZXN0UnVubmVyLgogICAgIiIiCiAgICBzZXBhcmF0b3IxID0gJz0nICogNzAKICAgIHNlcGFyYXRvcjIgPSAnLScgKiA3MAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIGRlc2NyaXB0aW9ucywgdmVyYm9zaXR5KToKICAgICAgICBzdXBlcihUZXh0VGVzdFJlc3VsdCwgc2VsZikuX19pbml0X18oc3RyZWFtLCBkZXNjcmlwdGlvbnMsIHZlcmJvc2l0eSkKICAgICAgICBzZWxmLnN0cmVhbSA9IHN0cmVhbQogICAgICAgIHNlbGYuc2hvd0FsbCA9IHZlcmJvc2l0eSA+IDEKICAgICAgICBzZWxmLmRvdHMgPSB2ZXJib3NpdHkgPT0gMQogICAgICAgIHNlbGYuZGVzY3JpcHRpb25zID0gZGVzY3JpcHRpb25zCiAgICAgICAgc2VsZi5fbmV3bGluZSA9IFRydWUKCiAgICBkZWYgZ2V0RGVzY3JpcHRpb24oc2VsZiwgdGVzdCk6CiAgICAgICAgZG9jX2ZpcnN0X2xpbmUgPSB0ZXN0LnNob3J0RGVzY3JpcHRpb24oKQogICAgICAgIGlmIHNlbGYuZGVzY3JpcHRpb25zIGFuZCBkb2NfZmlyc3RfbGluZToKICAgICAgICAgICAgcmV0dXJuICdcbicuam9pbigoc3RyKHRlc3QpLCBkb2NfZmlyc3RfbGluZSkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHN0cih0ZXN0KQoKICAgIGRlZiBzdGFydFRlc3Qoc2VsZiwgdGVzdCk6CiAgICAgICAgc3VwZXIoVGV4dFRlc3RSZXN1bHQsIHNlbGYpLnN0YXJ0VGVzdCh0ZXN0KQogICAgICAgIGlmIHNlbGYuc2hvd0FsbDoKICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoc2VsZi5nZXREZXNjcmlwdGlvbih0ZXN0KSkKICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoIiAuLi4gIikKICAgICAgICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQogICAgICAgICAgICBzZWxmLl9uZXdsaW5lID0gRmFsc2UKCiAgICBkZWYgX3dyaXRlX3N0YXR1cyhzZWxmLCB0ZXN0LCBzdGF0dXMpOgogICAgICAgIGlzX3N1YnRlc3QgPSBpc2luc3RhbmNlKHRlc3QsIF9TdWJUZXN0KQogICAgICAgIGlmIGlzX3N1YnRlc3Qgb3Igc2VsZi5fbmV3bGluZToKICAgICAgICAgICAgaWYgbm90IHNlbGYuX25ld2xpbmU6CiAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKCkKICAgICAgICAgICAgaWYgaXNfc3VidGVzdDoKICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCIgICIpCiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKHNlbGYuZ2V0RGVzY3JpcHRpb24odGVzdCkpCiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCIgLi4uICIpCiAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbihzdGF0dXMpCiAgICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQogICAgICAgIHNlbGYuX25ld2xpbmUgPSBUcnVlCgogICAgZGVmIGFkZFN1YlRlc3Qoc2VsZiwgdGVzdCwgc3VidGVzdCwgZXJyKToKICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYuc2hvd0FsbDoKICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoZXJyWzBdLCBzdWJ0ZXN0LmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3N0YXR1cyhzdWJ0ZXN0LCAiRkFJTCIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3N0YXR1cyhzdWJ0ZXN0LCAiRVJST1IiKQogICAgICAgICAgICBlbGlmIHNlbGYuZG90czoKICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoZXJyWzBdLCBzdWJ0ZXN0LmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCdGJykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoJ0UnKQogICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQogICAgICAgIHN1cGVyKFRleHRUZXN0UmVzdWx0LCBzZWxmKS5hZGRTdWJUZXN0KHRlc3QsIHN1YnRlc3QsIGVycikKCiAgICBkZWYgYWRkU3VjY2VzcyhzZWxmLCB0ZXN0KToKICAgICAgICBzdXBlcihUZXh0VGVzdFJlc3VsdCwgc2VsZikuYWRkU3VjY2Vzcyh0ZXN0KQogICAgICAgIGlmIHNlbGYuc2hvd0FsbDoKICAgICAgICAgICAgc2VsZi5fd3JpdGVfc3RhdHVzKHRlc3QsICJvayIpCiAgICAgICAgZWxpZiBzZWxmLmRvdHM6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCcuJykKICAgICAgICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQoKICAgIGRlZiBhZGRFcnJvcihzZWxmLCB0ZXN0LCBlcnIpOgogICAgICAgIHN1cGVyKFRleHRUZXN0UmVzdWx0LCBzZWxmKS5hZGRFcnJvcih0ZXN0LCBlcnIpCiAgICAgICAgaWYgc2VsZi5zaG93QWxsOgogICAgICAgICAgICBzZWxmLl93cml0ZV9zdGF0dXModGVzdCwgIkVSUk9SIikKICAgICAgICBlbGlmIHNlbGYuZG90czoKICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoJ0UnKQogICAgICAgICAgICBzZWxmLnN0cmVhbS5mbHVzaCgpCgogICAgZGVmIGFkZEZhaWx1cmUoc2VsZiwgdGVzdCwgZXJyKToKICAgICAgICBzdXBlcihUZXh0VGVzdFJlc3VsdCwgc2VsZikuYWRkRmFpbHVyZSh0ZXN0LCBlcnIpCiAgICAgICAgaWYgc2VsZi5zaG93QWxsOgogICAgICAgICAgICBzZWxmLl93cml0ZV9zdGF0dXModGVzdCwgIkZBSUwiKQogICAgICAgIGVsaWYgc2VsZi5kb3RzOgogICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgnRicpCiAgICAgICAgICAgIHNlbGYuc3RyZWFtLmZsdXNoKCkKCiAgICBkZWYgYWRkU2tpcChzZWxmLCB0ZXN0LCByZWFzb24pOgogICAgICAgIHN1cGVyKFRleHRUZXN0UmVzdWx0LCBzZWxmKS5hZGRTa2lwKHRlc3QsIHJlYXNvbikKICAgICAgICBpZiBzZWxmLnNob3dBbGw6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlX3N0YXR1cyh0ZXN0LCAic2tpcHBlZCB7MCFyfSIuZm9ybWF0KHJlYXNvbikpCiAgICAgICAgZWxpZiBzZWxmLmRvdHM6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCJzIikKICAgICAgICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQoKICAgIGRlZiBhZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgdGVzdCwgZXJyKToKICAgICAgICBzdXBlcihUZXh0VGVzdFJlc3VsdCwgc2VsZikuYWRkRXhwZWN0ZWRGYWlsdXJlKHRlc3QsIGVycikKICAgICAgICBpZiBzZWxmLnNob3dBbGw6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oImV4cGVjdGVkIGZhaWx1cmUiKQogICAgICAgICAgICBzZWxmLnN0cmVhbS5mbHVzaCgpCiAgICAgICAgZWxpZiBzZWxmLmRvdHM6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCJ4IikKICAgICAgICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQoKICAgIGRlZiBhZGRVbmV4cGVjdGVkU3VjY2VzcyhzZWxmLCB0ZXN0KToKICAgICAgICBzdXBlcihUZXh0VGVzdFJlc3VsdCwgc2VsZikuYWRkVW5leHBlY3RlZFN1Y2Nlc3ModGVzdCkKICAgICAgICBpZiBzZWxmLnNob3dBbGw6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oInVuZXhwZWN0ZWQgc3VjY2VzcyIpCiAgICAgICAgICAgIHNlbGYuc3RyZWFtLmZsdXNoKCkKICAgICAgICBlbGlmIHNlbGYuZG90czoKICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoInUiKQogICAgICAgICAgICBzZWxmLnN0cmVhbS5mbHVzaCgpCgogICAgZGVmIHByaW50RXJyb3JzKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZG90cyBvciBzZWxmLnNob3dBbGw6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oKQogICAgICAgICAgICBzZWxmLnN0cmVhbS5mbHVzaCgpCiAgICAgICAgc2VsZi5wcmludEVycm9yTGlzdCgnRVJST1InLCBzZWxmLmVycm9ycykKICAgICAgICBzZWxmLnByaW50RXJyb3JMaXN0KCdGQUlMJywgc2VsZi5mYWlsdXJlcykKICAgICAgICB1bmV4cGVjdGVkU3VjY2Vzc2VzID0gZ2V0YXR0cihzZWxmLCAndW5leHBlY3RlZFN1Y2Nlc3NlcycsICgpKQogICAgICAgIGlmIHVuZXhwZWN0ZWRTdWNjZXNzZXM6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oc2VsZi5zZXBhcmF0b3IxKQogICAgICAgICAgICBmb3IgdGVzdCBpbiB1bmV4cGVjdGVkU3VjY2Vzc2VzOgogICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbihmIlVORVhQRUNURUQgU1VDQ0VTUzoge3NlbGYuZ2V0RGVzY3JpcHRpb24odGVzdCl9IikKICAgICAgICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQoKICAgIGRlZiBwcmludEVycm9yTGlzdChzZWxmLCBmbGF2b3VyLCBlcnJvcnMpOgogICAgICAgIGZvciB0ZXN0LCBlcnIgaW4gZXJyb3JzOgogICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKHNlbGYuc2VwYXJhdG9yMSkKICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbigiJXM6ICVzIiAlIChmbGF2b3VyLHNlbGYuZ2V0RGVzY3JpcHRpb24odGVzdCkpKQogICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKHNlbGYuc2VwYXJhdG9yMikKICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbigiJXMiICUgZXJyKQogICAgICAgICAgICBzZWxmLnN0cmVhbS5mbHVzaCgpCgoKY2xhc3MgVGV4dFRlc3RSdW5uZXIob2JqZWN0KToKICAgICIiIkEgdGVzdCBydW5uZXIgY2xhc3MgdGhhdCBkaXNwbGF5cyByZXN1bHRzIGluIHRleHR1YWwgZm9ybS4KCiAgICBJdCBwcmludHMgb3V0IHRoZSBuYW1lcyBvZiB0ZXN0cyBhcyB0aGV5IGFyZSBydW4sIGVycm9ycyBhcyB0aGV5CiAgICBvY2N1ciwgYW5kIGEgc3VtbWFyeSBvZiB0aGUgcmVzdWx0cyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IHJ1bi4KICAgICIiIgogICAgcmVzdWx0Y2xhc3MgPSBUZXh0VGVzdFJlc3VsdAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW09Tm9uZSwgZGVzY3JpcHRpb25zPVRydWUsIHZlcmJvc2l0eT0xLAogICAgICAgICAgICAgICAgIGZhaWxmYXN0PUZhbHNlLCBidWZmZXI9RmFsc2UsIHJlc3VsdGNsYXNzPU5vbmUsIHdhcm5pbmdzPU5vbmUsCiAgICAgICAgICAgICAgICAgKiwgdGJfbG9jYWxzPUZhbHNlKToKICAgICAgICAiIiJDb25zdHJ1Y3QgYSBUZXh0VGVzdFJ1bm5lci4KCiAgICAgICAgU3ViY2xhc3NlcyBzaG91bGQgYWNjZXB0ICoqa3dhcmdzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IGFzIHRoZQogICAgICAgIGludGVyZmFjZSBjaGFuZ2VzLgogICAgICAgICIiIgogICAgICAgIGlmIHN0cmVhbSBpcyBOb25lOgogICAgICAgICAgICBzdHJlYW0gPSBzeXMuc3RkZXJyCiAgICAgICAgc2VsZi5zdHJlYW0gPSBfV3JpdGVsbkRlY29yYXRvcihzdHJlYW0pCiAgICAgICAgc2VsZi5kZXNjcmlwdGlvbnMgPSBkZXNjcmlwdGlvbnMKICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQogICAgICAgIHNlbGYuZmFpbGZhc3QgPSBmYWlsZmFzdAogICAgICAgIHNlbGYuYnVmZmVyID0gYnVmZmVyCiAgICAgICAgc2VsZi50Yl9sb2NhbHMgPSB0Yl9sb2NhbHMKICAgICAgICBzZWxmLndhcm5pbmdzID0gd2FybmluZ3MKICAgICAgICBpZiByZXN1bHRjbGFzcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5yZXN1bHRjbGFzcyA9IHJlc3VsdGNsYXNzCgogICAgZGVmIF9tYWtlUmVzdWx0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnJlc3VsdGNsYXNzKHNlbGYuc3RyZWFtLCBzZWxmLmRlc2NyaXB0aW9ucywgc2VsZi52ZXJib3NpdHkpCgogICAgZGVmIHJ1bihzZWxmLCB0ZXN0KToKICAgICAgICAiUnVuIHRoZSBnaXZlbiB0ZXN0IGNhc2Ugb3IgdGVzdCBzdWl0ZS4iCiAgICAgICAgcmVzdWx0ID0gc2VsZi5fbWFrZVJlc3VsdCgpCiAgICAgICAgcmVnaXN0ZXJSZXN1bHQocmVzdWx0KQogICAgICAgIHJlc3VsdC5mYWlsZmFzdCA9IHNlbGYuZmFpbGZhc3QKICAgICAgICByZXN1bHQuYnVmZmVyID0gc2VsZi5idWZmZXIKICAgICAgICByZXN1bHQudGJfbG9jYWxzID0gc2VsZi50Yl9sb2NhbHMKICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgIGlmIHNlbGYud2FybmluZ3M6CiAgICAgICAgICAgICAgICAjIGlmIHNlbGYud2FybmluZ3MgaXMgc2V0LCB1c2UgaXQgdG8gZmlsdGVyIGFsbCB0aGUgd2FybmluZ3MKICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcihzZWxmLndhcm5pbmdzKQogICAgICAgICAgICAgICAgIyBpZiB0aGUgZmlsdGVyIGlzICdkZWZhdWx0JyBvciAnYWx3YXlzJywgc3BlY2lhbC1jYXNlIHRoZQogICAgICAgICAgICAgICAgIyB3YXJuaW5ncyBmcm9tIHRoZSBkZXByZWNhdGVkIHVuaXR0ZXN0IG1ldGhvZHMgdG8gc2hvdyB0aGVtCiAgICAgICAgICAgICAgICAjIG5vIG1vcmUgdGhhbiBvbmNlIHBlciBtb2R1bGUsIGJlY2F1c2UgdGhleSBjYW4gYmUgZmFpcmx5CiAgICAgICAgICAgICAgICAjIG5vaXN5LiAgVGhlIC1XZCBhbmQgLVdhIGZsYWdzIGNhbiBiZSB1c2VkIHRvIGJ5cGFzcyB0aGlzCiAgICAgICAgICAgICAgICAjIG9ubHkgd2hlbiBzZWxmLndhcm5pbmdzIGlzIE5vbmUuCiAgICAgICAgICAgICAgICBpZiBzZWxmLndhcm5pbmdzIGluIFsnZGVmYXVsdCcsICdhbHdheXMnXToKICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnbW9kdWxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9cidQbGVhc2UgdXNlIGFzc2VydFx3KyBpbnN0ZWFkLicpCiAgICAgICAgICAgIHN0YXJ0VGltZSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICAgICAgICAgc3RhcnRUZXN0UnVuID0gZ2V0YXR0cihyZXN1bHQsICdzdGFydFRlc3RSdW4nLCBOb25lKQogICAgICAgICAgICBpZiBzdGFydFRlc3RSdW4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBzdGFydFRlc3RSdW4oKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICB0ZXN0KHJlc3VsdCkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHN0b3BUZXN0UnVuID0gZ2V0YXR0cihyZXN1bHQsICdzdG9wVGVzdFJ1bicsIE5vbmUpCiAgICAgICAgICAgICAgICBpZiBzdG9wVGVzdFJ1biBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBzdG9wVGVzdFJ1bigpCiAgICAgICAgICAgIHN0b3BUaW1lID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgICAgIHRpbWVUYWtlbiA9IHN0b3BUaW1lIC0gc3RhcnRUaW1lCiAgICAgICAgcmVzdWx0LnByaW50RXJyb3JzKCkKICAgICAgICBpZiBoYXNhdHRyKHJlc3VsdCwgJ3NlcGFyYXRvcjInKToKICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbihyZXN1bHQuc2VwYXJhdG9yMikKICAgICAgICBydW4gPSByZXN1bHQudGVzdHNSdW4KICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKCJSYW4gJWQgdGVzdCVzIGluICUuM2ZzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVuLCBydW4gIT0gMSBhbmQgInMiIG9yICIiLCB0aW1lVGFrZW4pKQogICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oKQoKICAgICAgICBleHBlY3RlZEZhaWxzID0gdW5leHBlY3RlZFN1Y2Nlc3NlcyA9IHNraXBwZWQgPSAwCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXN1bHRzID0gbWFwKGxlbiwgKHJlc3VsdC5leHBlY3RlZEZhaWx1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC51bmV4cGVjdGVkU3VjY2Vzc2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5za2lwcGVkKSkKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICBleHBlY3RlZEZhaWxzLCB1bmV4cGVjdGVkU3VjY2Vzc2VzLCBza2lwcGVkID0gcmVzdWx0cwoKICAgICAgICBpbmZvcyA9IFtdCiAgICAgICAgaWYgbm90IHJlc3VsdC53YXNTdWNjZXNzZnVsKCk6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCJGQUlMRUQiKQogICAgICAgICAgICBmYWlsZWQsIGVycm9yZWQgPSBsZW4ocmVzdWx0LmZhaWx1cmVzKSwgbGVuKHJlc3VsdC5lcnJvcnMpCiAgICAgICAgICAgIGlmIGZhaWxlZDoKICAgICAgICAgICAgICAgIGluZm9zLmFwcGVuZCgiZmFpbHVyZXM9JWQiICUgZmFpbGVkKQogICAgICAgICAgICBpZiBlcnJvcmVkOgogICAgICAgICAgICAgICAgaW5mb3MuYXBwZW5kKCJlcnJvcnM9JWQiICUgZXJyb3JlZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgiT0siKQogICAgICAgIGlmIHNraXBwZWQ6CiAgICAgICAgICAgIGluZm9zLmFwcGVuZCgic2tpcHBlZD0lZCIgJSBza2lwcGVkKQogICAgICAgIGlmIGV4cGVjdGVkRmFpbHM6CiAgICAgICAgICAgIGluZm9zLmFwcGVuZCgiZXhwZWN0ZWQgZmFpbHVyZXM9JWQiICUgZXhwZWN0ZWRGYWlscykKICAgICAgICBpZiB1bmV4cGVjdGVkU3VjY2Vzc2VzOgogICAgICAgICAgICBpbmZvcy5hcHBlbmQoInVuZXhwZWN0ZWQgc3VjY2Vzc2VzPSVkIiAlIHVuZXhwZWN0ZWRTdWNjZXNzZXMpCiAgICAgICAgaWYgaW5mb3M6CiAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oIiAoJXMpIiAlICgiLCAiLmpvaW4oaW5mb3MpLCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoIlxuIikKICAgICAgICBzZWxmLnN0cmVhbS5mbHVzaCgpCiAgICAgICAgcmV0dXJuIHJlc3VsdApQSwMEFAAAAAAAAyCjVtqX/aZjCQAAYwkAABMAAAB1bml0dGVzdC9zaWduYWxzLnB5aW1wb3J0IHNpZ25hbAppbXBvcnQgd2Vha3JlZgoKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCgpfX3VuaXR0ZXN0ID0gVHJ1ZQoKCmNsYXNzIF9JbnRlcnJ1cHRIYW5kbGVyKG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZGVmYXVsdF9oYW5kbGVyKToKICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCiAgICAgICAgc2VsZi5vcmlnaW5hbF9oYW5kbGVyID0gZGVmYXVsdF9oYW5kbGVyCiAgICAgICAgaWYgaXNpbnN0YW5jZShkZWZhdWx0X2hhbmRsZXIsIGludCk6CiAgICAgICAgICAgIGlmIGRlZmF1bHRfaGFuZGxlciA9PSBzaWduYWwuU0lHX0RGTDoKICAgICAgICAgICAgICAgICMgUHJldGVuZCBpdCdzIHNpZ25hbC5kZWZhdWx0X2ludF9oYW5kbGVyIGluc3RlYWQuCiAgICAgICAgICAgICAgICBkZWZhdWx0X2hhbmRsZXIgPSBzaWduYWwuZGVmYXVsdF9pbnRfaGFuZGxlcgogICAgICAgICAgICBlbGlmIGRlZmF1bHRfaGFuZGxlciA9PSBzaWduYWwuU0lHX0lHTjoKICAgICAgICAgICAgICAgICMgTm90IHF1aXRlIHRoZSBzYW1lIHRoaW5nIGFzIFNJR19JR04sIGJ1dCB0aGUgY2xvc2VzdCB3ZQogICAgICAgICAgICAgICAgIyBjYW4gbWFrZSBpdDogZG8gbm90aGluZy4KICAgICAgICAgICAgICAgIGRlZiBkZWZhdWx0X2hhbmRsZXIodW51c2VkX3NpZ251bSwgdW51c2VkX2ZyYW1lKToKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIFNJR0lOVCBzaWduYWwgaGFuZGxlciB0byBiZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbC5TSUdfSUdOLCBzaWduYWwuU0lHX0RGTCwgb3IgYSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIG9iamVjdCIpCiAgICAgICAgc2VsZi5kZWZhdWx0X2hhbmRsZXIgPSBkZWZhdWx0X2hhbmRsZXIKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgaW5zdGFsbGVkX2hhbmRsZXIgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdJTlQpCiAgICAgICAgaWYgaW5zdGFsbGVkX2hhbmRsZXIgaXMgbm90IHNlbGY6CiAgICAgICAgICAgICMgaWYgd2UgYXJlbid0IHRoZSBpbnN0YWxsZWQgaGFuZGxlciwgdGhlbiBkZWxlZ2F0ZSBpbW1lZGlhdGVseQogICAgICAgICAgICAjIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIKICAgICAgICAgICAgc2VsZi5kZWZhdWx0X2hhbmRsZXIoc2lnbnVtLCBmcmFtZSkKCiAgICAgICAgaWYgc2VsZi5jYWxsZWQ6CiAgICAgICAgICAgIHNlbGYuZGVmYXVsdF9oYW5kbGVyKHNpZ251bSwgZnJhbWUpCiAgICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCiAgICAgICAgZm9yIHJlc3VsdCBpbiBfcmVzdWx0cy5rZXlzKCk6CiAgICAgICAgICAgIHJlc3VsdC5zdG9wKCkKCl9yZXN1bHRzID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCmRlZiByZWdpc3RlclJlc3VsdChyZXN1bHQpOgogICAgX3Jlc3VsdHNbcmVzdWx0XSA9IDEKCmRlZiByZW1vdmVSZXN1bHQocmVzdWx0KToKICAgIHJldHVybiBib29sKF9yZXN1bHRzLnBvcChyZXN1bHQsIE5vbmUpKQoKX2ludGVycnVwdF9oYW5kbGVyID0gTm9uZQpkZWYgaW5zdGFsbEhhbmRsZXIoKToKICAgIGdsb2JhbCBfaW50ZXJydXB0X2hhbmRsZXIKICAgIGlmIF9pbnRlcnJ1cHRfaGFuZGxlciBpcyBOb25lOgogICAgICAgIGRlZmF1bHRfaGFuZGxlciA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0lOVCkKICAgICAgICBfaW50ZXJydXB0X2hhbmRsZXIgPSBfSW50ZXJydXB0SGFuZGxlcihkZWZhdWx0X2hhbmRsZXIpCiAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSU5ULCBfaW50ZXJydXB0X2hhbmRsZXIpCgoKZGVmIHJlbW92ZUhhbmRsZXIobWV0aG9kPU5vbmUpOgogICAgaWYgbWV0aG9kIGlzIG5vdCBOb25lOgogICAgICAgIEB3cmFwcyhtZXRob2QpCiAgICAgICAgZGVmIGlubmVyKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgIGluaXRpYWwgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdJTlQpCiAgICAgICAgICAgIHJlbW92ZUhhbmRsZXIoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgaW5pdGlhbCkKICAgICAgICByZXR1cm4gaW5uZXIKCiAgICBnbG9iYWwgX2ludGVycnVwdF9oYW5kbGVyCiAgICBpZiBfaW50ZXJydXB0X2hhbmRsZXIgaXMgbm90IE5vbmU6CiAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSU5ULCBfaW50ZXJydXB0X2hhbmRsZXIub3JpZ2luYWxfaGFuZGxlcikKUEsDBBQAAAAAAAMgo1YS1osGyDQAAMg0AAARAAAAdW5pdHRlc3Qvc3VpdGUucHkiIiJUZXN0U3VpdGUiIiIKCmltcG9ydCBzeXMKCmZyb20gLiBpbXBvcnQgY2FzZQpmcm9tIC4gaW1wb3J0IHV0aWwKCl9fdW5pdHRlc3QgPSBUcnVlCgoKZGVmIF9jYWxsX2lmX2V4aXN0cyhwYXJlbnQsIGF0dHIpOgogICAgZnVuYyA9IGdldGF0dHIocGFyZW50LCBhdHRyLCBsYW1iZGE6IE5vbmUpCiAgICBmdW5jKCkKCgpjbGFzcyBCYXNlVGVzdFN1aXRlKG9iamVjdCk6CiAgICAiIiJBIHNpbXBsZSB0ZXN0IHN1aXRlIHRoYXQgZG9lc24ndCBwcm92aWRlIGNsYXNzIG9yIG1vZHVsZSBzaGFyZWQgZml4dHVyZXMuCiAgICAiIiIKICAgIF9jbGVhbnVwID0gVHJ1ZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0cz0oKSk6CiAgICAgICAgc2VsZi5fdGVzdHMgPSBbXQogICAgICAgIHNlbGYuX3JlbW92ZWRfdGVzdHMgPSAwCiAgICAgICAgc2VsZi5hZGRUZXN0cyh0ZXN0cykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8JXMgdGVzdHM9JXM+IiAlICh1dGlsLnN0cmNsYXNzKHNlbGYuX19jbGFzc19fKSwgbGlzdChzZWxmKSkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gbGlzdChzZWxmKSA9PSBsaXN0KG90aGVyKQoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICByZXR1cm4gaXRlcihzZWxmLl90ZXN0cykKCiAgICBkZWYgY291bnRUZXN0Q2FzZXMoc2VsZik6CiAgICAgICAgY2FzZXMgPSBzZWxmLl9yZW1vdmVkX3Rlc3RzCiAgICAgICAgZm9yIHRlc3QgaW4gc2VsZjoKICAgICAgICAgICAgaWYgdGVzdDoKICAgICAgICAgICAgICAgIGNhc2VzICs9IHRlc3QuY291bnRUZXN0Q2FzZXMoKQogICAgICAgIHJldHVybiBjYXNlcwoKICAgIGRlZiBhZGRUZXN0KHNlbGYsIHRlc3QpOgogICAgICAgICMgc2FuaXR5IGNoZWNrcwogICAgICAgIGlmIG5vdCBjYWxsYWJsZSh0ZXN0KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ7fSBpcyBub3QgY2FsbGFibGUiLmZvcm1hdChyZXByKHRlc3QpKSkKICAgICAgICBpZiBpc2luc3RhbmNlKHRlc3QsIHR5cGUpIGFuZCBpc3N1YmNsYXNzKHRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FzZS5UZXN0Q2FzZSwgVGVzdFN1aXRlKSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVGVzdENhc2VzIGFuZCBUZXN0U3VpdGVzIG11c3QgYmUgaW5zdGFudGlhdGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWZvcmUgcGFzc2luZyB0aGVtIHRvIGFkZFRlc3QoKSIpCiAgICAgICAgc2VsZi5fdGVzdHMuYXBwZW5kKHRlc3QpCgogICAgZGVmIGFkZFRlc3RzKHNlbGYsIHRlc3RzKToKICAgICAgICBpZiBpc2luc3RhbmNlKHRlc3RzLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRlc3RzIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgdGVzdHMsIG5vdCBhIHN0cmluZyIpCiAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6CiAgICAgICAgICAgIHNlbGYuYWRkVGVzdCh0ZXN0KQoKICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0KToKICAgICAgICBmb3IgaW5kZXgsIHRlc3QgaW4gZW51bWVyYXRlKHNlbGYpOgogICAgICAgICAgICBpZiByZXN1bHQuc2hvdWxkU3RvcDoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHRlc3QocmVzdWx0KQogICAgICAgICAgICBpZiBzZWxmLl9jbGVhbnVwOgogICAgICAgICAgICAgICAgc2VsZi5fcmVtb3ZlVGVzdEF0SW5kZXgoaW5kZXgpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBfcmVtb3ZlVGVzdEF0SW5kZXgoc2VsZiwgaW5kZXgpOgogICAgICAgICIiIlN0b3AgaG9sZGluZyBhIHJlZmVyZW5jZSB0byB0aGUgVGVzdENhc2UgYXQgaW5kZXguIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0ZXN0ID0gc2VsZi5fdGVzdHNbaW5kZXhdCiAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIyBzdXBwb3J0IGZvciBzdWl0ZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBoYXZlIG92ZXJyaWRkZW4gc2VsZi5fdGVzdHMKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgU29tZSB1bml0dGVzdCB0ZXN0cyBhZGQgbm9uIFRlc3RDYXNlL1Rlc3RTdWl0ZSBvYmplY3RzIHRvCiAgICAgICAgICAgICMgdGhlIHN1aXRlLgogICAgICAgICAgICBpZiBoYXNhdHRyKHRlc3QsICdjb3VudFRlc3RDYXNlcycpOgogICAgICAgICAgICAgICAgc2VsZi5fcmVtb3ZlZF90ZXN0cyArPSB0ZXN0LmNvdW50VGVzdENhc2VzKCkKICAgICAgICAgICAgc2VsZi5fdGVzdHNbaW5kZXhdID0gTm9uZQoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2RzKToKICAgICAgICByZXR1cm4gc2VsZi5ydW4oKmFyZ3MsICoqa3dkcykKCiAgICBkZWYgZGVidWcoc2VsZik6CiAgICAgICAgIiIiUnVuIHRoZSB0ZXN0cyB3aXRob3V0IGNvbGxlY3RpbmcgZXJyb3JzIGluIGEgVGVzdFJlc3VsdCIiIgogICAgICAgIGZvciB0ZXN0IGluIHNlbGY6CiAgICAgICAgICAgIHRlc3QuZGVidWcoKQoKCmNsYXNzIFRlc3RTdWl0ZShCYXNlVGVzdFN1aXRlKToKICAgICIiIkEgdGVzdCBzdWl0ZSBpcyBhIGNvbXBvc2l0ZSB0ZXN0IGNvbnNpc3Rpbmcgb2YgYSBudW1iZXIgb2YgVGVzdENhc2VzLgoKICAgIEZvciB1c2UsIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBUZXN0U3VpdGUsIHRoZW4gYWRkIHRlc3QgY2FzZSBpbnN0YW5jZXMuCiAgICBXaGVuIGFsbCB0ZXN0cyBoYXZlIGJlZW4gYWRkZWQsIHRoZSBzdWl0ZSBjYW4gYmUgcGFzc2VkIHRvIGEgdGVzdAogICAgcnVubmVyLCBzdWNoIGFzIFRleHRUZXN0UnVubmVyLiBJdCB3aWxsIHJ1biB0aGUgaW5kaXZpZHVhbCB0ZXN0IGNhc2VzCiAgICBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLCBhZ2dyZWdhdGluZyB0aGUgcmVzdWx0cy4gV2hlbgogICAgc3ViY2xhc3NpbmcsIGRvIG5vdCBmb3JnZXQgdG8gY2FsbCB0aGUgYmFzZSBjbGFzcyBjb25zdHJ1Y3Rvci4KICAgICIiIgoKICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0LCBkZWJ1Zz1GYWxzZSk6CiAgICAgICAgdG9wTGV2ZWwgPSBGYWxzZQogICAgICAgIGlmIGdldGF0dHIocmVzdWx0LCAnX3Rlc3RSdW5FbnRlcmVkJywgRmFsc2UpIGlzIEZhbHNlOgogICAgICAgICAgICByZXN1bHQuX3Rlc3RSdW5FbnRlcmVkID0gdG9wTGV2ZWwgPSBUcnVlCgogICAgICAgIGZvciBpbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUoc2VsZik6CiAgICAgICAgICAgIGlmIHJlc3VsdC5zaG91bGRTdG9wOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGlmIF9pc25vdHN1aXRlKHRlc3QpOgogICAgICAgICAgICAgICAgc2VsZi5fdGVhckRvd25QcmV2aW91c0NsYXNzKHRlc3QsIHJlc3VsdCkKICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZU1vZHVsZUZpeHR1cmUodGVzdCwgcmVzdWx0KQogICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlQ2xhc3NTZXRVcCh0ZXN0LCByZXN1bHQpCiAgICAgICAgICAgICAgICByZXN1bHQuX3ByZXZpb3VzVGVzdENsYXNzID0gdGVzdC5fX2NsYXNzX18KCiAgICAgICAgICAgICAgICBpZiAoZ2V0YXR0cih0ZXN0Ll9fY2xhc3NfXywgJ19jbGFzc1NldHVwRmFpbGVkJywgRmFsc2UpIG9yCiAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihyZXN1bHQsICdfbW9kdWxlU2V0VXBGYWlsZWQnLCBGYWxzZSkpOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiBub3QgZGVidWc6CiAgICAgICAgICAgICAgICB0ZXN0KHJlc3VsdCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHRlc3QuZGVidWcoKQoKICAgICAgICAgICAgaWYgc2VsZi5fY2xlYW51cDoKICAgICAgICAgICAgICAgIHNlbGYuX3JlbW92ZVRlc3RBdEluZGV4KGluZGV4KQoKICAgICAgICBpZiB0b3BMZXZlbDoKICAgICAgICAgICAgc2VsZi5fdGVhckRvd25QcmV2aW91c0NsYXNzKE5vbmUsIHJlc3VsdCkKICAgICAgICAgICAgc2VsZi5faGFuZGxlTW9kdWxlVGVhckRvd24ocmVzdWx0KQogICAgICAgICAgICByZXN1bHQuX3Rlc3RSdW5FbnRlcmVkID0gRmFsc2UKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGRlYnVnKHNlbGYpOgogICAgICAgICIiIlJ1biB0aGUgdGVzdHMgd2l0aG91dCBjb2xsZWN0aW5nIGVycm9ycyBpbiBhIFRlc3RSZXN1bHQiIiIKICAgICAgICBkZWJ1ZyA9IF9EZWJ1Z1Jlc3VsdCgpCiAgICAgICAgc2VsZi5ydW4oZGVidWcsIFRydWUpCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBkZWYgX2hhbmRsZUNsYXNzU2V0VXAoc2VsZiwgdGVzdCwgcmVzdWx0KToKICAgICAgICBwcmV2aW91c0NsYXNzID0gZ2V0YXR0cihyZXN1bHQsICdfcHJldmlvdXNUZXN0Q2xhc3MnLCBOb25lKQogICAgICAgIGN1cnJlbnRDbGFzcyA9IHRlc3QuX19jbGFzc19fCiAgICAgICAgaWYgY3VycmVudENsYXNzID09IHByZXZpb3VzQ2xhc3M6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIHJlc3VsdC5fbW9kdWxlU2V0VXBGYWlsZWQ6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIGdldGF0dHIoY3VycmVudENsYXNzLCAiX191bml0dGVzdF9za2lwX18iLCBGYWxzZSk6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBmYWlsZWQgPSBGYWxzZQogICAgICAgIHRyeToKICAgICAgICAgICAgY3VycmVudENsYXNzLl9jbGFzc1NldHVwRmFpbGVkID0gRmFsc2UKICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAjIHRlc3QgbWF5IGFjdHVhbGx5IGJlIGEgZnVuY3Rpb24KICAgICAgICAgICAgIyBzbyBpdHMgY2xhc3Mgd2lsbCBiZSBhIGJ1aWx0aW4tdHlwZQogICAgICAgICAgICBwYXNzCgogICAgICAgIHNldFVwQ2xhc3MgPSBnZXRhdHRyKGN1cnJlbnRDbGFzcywgJ3NldFVwQ2xhc3MnLCBOb25lKQogICAgICAgIGRvQ2xhc3NDbGVhbnVwcyA9IGdldGF0dHIoY3VycmVudENsYXNzLCAnZG9DbGFzc0NsZWFudXBzJywgTm9uZSkKICAgICAgICBpZiBzZXRVcENsYXNzIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfY2FsbF9pZl9leGlzdHMocmVzdWx0LCAnX3NldHVwU3Rkb3V0JykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNldFVwQ2xhc3MoKQogICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBfRGVidWdSZXN1bHQpOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDbGFzcy5fY2xhc3NTZXR1cEZhaWxlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gdXRpbC5zdHJjbGFzcyhjdXJyZW50Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3JlYXRlQ2xhc3NPck1vZHVsZUxldmVsRXhjZXB0aW9uKHJlc3VsdCwgZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NldFVwQ2xhc3MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUpCiAgICAgICAgICAgICAgICBpZiBmYWlsZWQgYW5kIGRvQ2xhc3NDbGVhbnVwcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICBkb0NsYXNzQ2xlYW51cHMoKQogICAgICAgICAgICAgICAgICAgIGZvciBleGNfaW5mbyBpbiBjdXJyZW50Q2xhc3MudGVhckRvd25fZXhjZXB0aW9uczoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3JlYXRlQ2xhc3NPck1vZHVsZUxldmVsRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgZXhjX2luZm9bMV0sICdzZXRVcENsYXNzJywgY2xhc3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm89ZXhjX2luZm8pCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBfY2FsbF9pZl9leGlzdHMocmVzdWx0LCAnX3Jlc3RvcmVTdGRvdXQnKQoKICAgIGRlZiBfZ2V0X3ByZXZpb3VzX21vZHVsZShzZWxmLCByZXN1bHQpOgogICAgICAgIHByZXZpb3VzTW9kdWxlID0gTm9uZQogICAgICAgIHByZXZpb3VzQ2xhc3MgPSBnZXRhdHRyKHJlc3VsdCwgJ19wcmV2aW91c1Rlc3RDbGFzcycsIE5vbmUpCiAgICAgICAgaWYgcHJldmlvdXNDbGFzcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcHJldmlvdXNNb2R1bGUgPSBwcmV2aW91c0NsYXNzLl9fbW9kdWxlX18KICAgICAgICByZXR1cm4gcHJldmlvdXNNb2R1bGUKCgogICAgZGVmIF9oYW5kbGVNb2R1bGVGaXh0dXJlKHNlbGYsIHRlc3QsIHJlc3VsdCk6CiAgICAgICAgcHJldmlvdXNNb2R1bGUgPSBzZWxmLl9nZXRfcHJldmlvdXNfbW9kdWxlKHJlc3VsdCkKICAgICAgICBjdXJyZW50TW9kdWxlID0gdGVzdC5fX2NsYXNzX18uX19tb2R1bGVfXwogICAgICAgIGlmIGN1cnJlbnRNb2R1bGUgPT0gcHJldmlvdXNNb2R1bGU6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBzZWxmLl9oYW5kbGVNb2R1bGVUZWFyRG93bihyZXN1bHQpCgoKICAgICAgICByZXN1bHQuX21vZHVsZVNldFVwRmFpbGVkID0gRmFsc2UKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW2N1cnJlbnRNb2R1bGVdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZXRVcE1vZHVsZSA9IGdldGF0dHIobW9kdWxlLCAnc2V0VXBNb2R1bGUnLCBOb25lKQogICAgICAgIGlmIHNldFVwTW9kdWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBfY2FsbF9pZl9leGlzdHMocmVzdWx0LCAnX3NldHVwU3Rkb3V0JykKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHNldFVwTW9kdWxlKCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgX0RlYnVnUmVzdWx0KToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICByZXN1bHQuX21vZHVsZVNldFVwRmFpbGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZUNsYXNzT3JNb2R1bGVMZXZlbEV4Y2VwdGlvbihyZXN1bHQsIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXRVcE1vZHVsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2R1bGUpCiAgICAgICAgICAgICAgICBpZiByZXN1bHQuX21vZHVsZVNldFVwRmFpbGVkOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZS5kb01vZHVsZUNsZWFudXBzKCkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZUNsYXNzT3JNb2R1bGVMZXZlbEV4Y2VwdGlvbihyZXN1bHQsIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2V0VXBNb2R1bGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vZHVsZSkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIF9jYWxsX2lmX2V4aXN0cyhyZXN1bHQsICdfcmVzdG9yZVN0ZG91dCcpCgogICAgZGVmIF9jcmVhdGVDbGFzc09yTW9kdWxlTGV2ZWxFeGNlcHRpb24oc2VsZiwgcmVzdWx0LCBleGMsIG1ldGhvZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LCBpbmZvPU5vbmUpOgogICAgICAgIGVycm9yTmFtZSA9IGYne21ldGhvZF9uYW1lfSAoe3BhcmVudH0pJwogICAgICAgIHNlbGYuX2FkZENsYXNzT3JNb2R1bGVMZXZlbEV4Y2VwdGlvbihyZXN1bHQsIGV4YywgZXJyb3JOYW1lLCBpbmZvKQoKICAgIGRlZiBfYWRkQ2xhc3NPck1vZHVsZUxldmVsRXhjZXB0aW9uKHNlbGYsIHJlc3VsdCwgZXhjZXB0aW9uLCBlcnJvck5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvPU5vbmUpOgogICAgICAgIGVycm9yID0gX0Vycm9ySG9sZGVyKGVycm9yTmFtZSkKICAgICAgICBhZGRTa2lwID0gZ2V0YXR0cihyZXN1bHQsICdhZGRTa2lwJywgTm9uZSkKICAgICAgICBpZiBhZGRTa2lwIGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKGV4Y2VwdGlvbiwgY2FzZS5Ta2lwVGVzdCk6CiAgICAgICAgICAgIGFkZFNraXAoZXJyb3IsIHN0cihleGNlcHRpb24pKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIG5vdCBpbmZvOgogICAgICAgICAgICAgICAgcmVzdWx0LmFkZEVycm9yKGVycm9yLCBzeXMuZXhjX2luZm8oKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRFcnJvcihlcnJvciwgaW5mbykKCiAgICBkZWYgX2hhbmRsZU1vZHVsZVRlYXJEb3duKHNlbGYsIHJlc3VsdCk6CiAgICAgICAgcHJldmlvdXNNb2R1bGUgPSBzZWxmLl9nZXRfcHJldmlvdXNfbW9kdWxlKHJlc3VsdCkKICAgICAgICBpZiBwcmV2aW91c01vZHVsZSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiByZXN1bHQuX21vZHVsZVNldFVwRmFpbGVkOgogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgdHJ5OgogICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1twcmV2aW91c01vZHVsZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBfY2FsbF9pZl9leGlzdHMocmVzdWx0LCAnX3NldHVwU3Rkb3V0JykKICAgICAgICB0cnk6CiAgICAgICAgICAgIHRlYXJEb3duTW9kdWxlID0gZ2V0YXR0cihtb2R1bGUsICd0ZWFyRG93bk1vZHVsZScsIE5vbmUpCiAgICAgICAgICAgIGlmIHRlYXJEb3duTW9kdWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRlYXJEb3duTW9kdWxlKCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgX0RlYnVnUmVzdWx0KToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jcmVhdGVDbGFzc09yTW9kdWxlTGV2ZWxFeGNlcHRpb24ocmVzdWx0LCBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVhckRvd25Nb2R1bGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c01vZHVsZSkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY2FzZS5kb01vZHVsZUNsZWFudXBzKCkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIF9EZWJ1Z1Jlc3VsdCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZUNsYXNzT3JNb2R1bGVMZXZlbEV4Y2VwdGlvbihyZXN1bHQsIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RlYXJEb3duTW9kdWxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c01vZHVsZSkKICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBfY2FsbF9pZl9leGlzdHMocmVzdWx0LCAnX3Jlc3RvcmVTdGRvdXQnKQoKICAgIGRlZiBfdGVhckRvd25QcmV2aW91c0NsYXNzKHNlbGYsIHRlc3QsIHJlc3VsdCk6CiAgICAgICAgcHJldmlvdXNDbGFzcyA9IGdldGF0dHIocmVzdWx0LCAnX3ByZXZpb3VzVGVzdENsYXNzJywgTm9uZSkKICAgICAgICBjdXJyZW50Q2xhc3MgPSB0ZXN0Ll9fY2xhc3NfXwogICAgICAgIGlmIGN1cnJlbnRDbGFzcyA9PSBwcmV2aW91c0NsYXNzIG9yIHByZXZpb3VzQ2xhc3MgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgZ2V0YXR0cihwcmV2aW91c0NsYXNzLCAnX2NsYXNzU2V0dXBGYWlsZWQnLCBGYWxzZSk6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIGdldGF0dHIocmVzdWx0LCAnX21vZHVsZVNldFVwRmFpbGVkJywgRmFsc2UpOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBnZXRhdHRyKHByZXZpb3VzQ2xhc3MsICJfX3VuaXR0ZXN0X3NraXBfXyIsIEZhbHNlKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHRlYXJEb3duQ2xhc3MgPSBnZXRhdHRyKHByZXZpb3VzQ2xhc3MsICd0ZWFyRG93bkNsYXNzJywgTm9uZSkKICAgICAgICBkb0NsYXNzQ2xlYW51cHMgPSBnZXRhdHRyKHByZXZpb3VzQ2xhc3MsICdkb0NsYXNzQ2xlYW51cHMnLCBOb25lKQogICAgICAgIGlmIHRlYXJEb3duQ2xhc3MgaXMgTm9uZSBhbmQgZG9DbGFzc0NsZWFudXBzIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBfY2FsbF9pZl9leGlzdHMocmVzdWx0LCAnX3NldHVwU3Rkb3V0JykKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHRlYXJEb3duQ2xhc3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgdGVhckRvd25DbGFzcygpCiAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIF9EZWJ1Z1Jlc3VsdCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gdXRpbC5zdHJjbGFzcyhwcmV2aW91c0NsYXNzKQogICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZUNsYXNzT3JNb2R1bGVMZXZlbEV4Y2VwdGlvbihyZXN1bHQsIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZWFyRG93bkNsYXNzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lKQogICAgICAgICAgICBpZiBkb0NsYXNzQ2xlYW51cHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBkb0NsYXNzQ2xlYW51cHMoKQogICAgICAgICAgICAgICAgZm9yIGV4Y19pbmZvIGluIHByZXZpb3VzQ2xhc3MudGVhckRvd25fZXhjZXB0aW9uczoKICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgX0RlYnVnUmVzdWx0KToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXhjX2luZm9bMV0KICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSB1dGlsLnN0cmNsYXNzKHByZXZpb3VzQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3JlYXRlQ2xhc3NPck1vZHVsZUxldmVsRXhjZXB0aW9uKHJlc3VsdCwgZXhjX2luZm9bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZWFyRG93bkNsYXNzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvPWV4Y19pbmZvKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIF9jYWxsX2lmX2V4aXN0cyhyZXN1bHQsICdfcmVzdG9yZVN0ZG91dCcpCgoKY2xhc3MgX0Vycm9ySG9sZGVyKG9iamVjdCk6CiAgICAiIiIKICAgIFBsYWNlaG9sZGVyIGZvciBhIFRlc3RDYXNlIGluc2lkZSBhIHJlc3VsdC4gQXMgZmFyIGFzIGEgVGVzdFJlc3VsdAogICAgaXMgY29uY2VybmVkLCB0aGlzIGxvb2tzIGV4YWN0bHkgbGlrZSBhIHVuaXQgdGVzdC4gVXNlZCB0byBpbnNlcnQKICAgIGFyYml0cmFyeSBlcnJvcnMgaW50byBhIHRlc3Qgc3VpdGUgcnVuLgogICAgIiIiCiAgICAjIEluc3BpcmVkIGJ5IHRoZSBFcnJvckhvbGRlciBmcm9tIFR3aXN0ZWQ6CiAgICAjIGh0dHA6Ly90d2lzdGVkbWF0cml4LmNvbS90cmFjL2Jyb3dzZXIvdHJ1bmsvdHdpc3RlZC90cmlhbC9ydW5uZXIucHkKCiAgICAjIGF0dHJpYnV0ZSB1c2VkIGJ5IFRlc3RSZXN1bHQuX2V4Y19pbmZvX3RvX3N0cmluZwogICAgZmFpbHVyZUV4Y2VwdGlvbiA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzY3JpcHRpb24pOgogICAgICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgoKICAgIGRlZiBpZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5kZXNjcmlwdGlvbgoKICAgIGRlZiBzaG9ydERlc2NyaXB0aW9uKHNlbGYpOgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPEVycm9ySG9sZGVyIGRlc2NyaXB0aW9uPSVyPiIgJSAoc2VsZi5kZXNjcmlwdGlvbiwpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuaWQoKQoKICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0KToKICAgICAgICAjIGNvdWxkIGNhbGwgcmVzdWx0LmFkZEVycm9yKC4uLikgLSBidXQgdGhpcyB0ZXN0LWxpa2Ugb2JqZWN0CiAgICAgICAgIyBzaG91bGRuJ3QgYmUgcnVuIGFueXdheQogICAgICAgIHBhc3MKCiAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVzdWx0KToKICAgICAgICByZXR1cm4gc2VsZi5ydW4ocmVzdWx0KQoKICAgIGRlZiBjb3VudFRlc3RDYXNlcyhzZWxmKToKICAgICAgICByZXR1cm4gMAoKZGVmIF9pc25vdHN1aXRlKHRlc3QpOgogICAgIkEgY3J1ZGUgd2F5IHRvIHRlbGwgYXBhcnQgdGVzdGNhc2VzIGFuZCBzdWl0ZXMgd2l0aCBkdWNrLXR5cGluZyIKICAgIHRyeToKICAgICAgICBpdGVyKHRlc3QpCiAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4gRmFsc2UKCgpjbGFzcyBfRGVidWdSZXN1bHQob2JqZWN0KToKICAgICJVc2VkIGJ5IHRoZSBUZXN0U3VpdGUgdG8gaG9sZCBwcmV2aW91cyBjbGFzcyB3aGVuIHJ1bm5pbmcgaW4gZGVidWcuIgogICAgX3ByZXZpb3VzVGVzdENsYXNzID0gTm9uZQogICAgX21vZHVsZVNldFVwRmFpbGVkID0gRmFsc2UKICAgIHNob3VsZFN0b3AgPSBGYWxzZQpQSwMEFAAAAAAAAyCjVmTkEZ5fFAAAXxQAABAAAAB1bml0dGVzdC91dGlsLnB5IiIiVmFyaW91cyB1dGlsaXR5IGZ1bmN0aW9ucy4iIiIKCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIENvdW50ZXIKZnJvbSBvcy5wYXRoIGltcG9ydCBjb21tb25wcmVmaXgKCl9fdW5pdHRlc3QgPSBUcnVlCgpfTUFYX0xFTkdUSCA9IDgwCl9QTEFDRUhPTERFUl9MRU4gPSAxMgpfTUlOX0JFR0lOX0xFTiA9IDUKX01JTl9FTkRfTEVOID0gNQpfTUlOX0NPTU1PTl9MRU4gPSA1Cl9NSU5fRElGRl9MRU4gPSBfTUFYX0xFTkdUSCAtIFwKICAgICAgICAgICAgICAgKF9NSU5fQkVHSU5fTEVOICsgX1BMQUNFSE9MREVSX0xFTiArIF9NSU5fQ09NTU9OX0xFTiArCiAgICAgICAgICAgICAgICBfUExBQ0VIT0xERVJfTEVOICsgX01JTl9FTkRfTEVOKQphc3NlcnQgX01JTl9ESUZGX0xFTiA+PSAwCgpkZWYgX3Nob3J0ZW4ocywgcHJlZml4bGVuLCBzdWZmaXhsZW4pOgogICAgc2tpcCA9IGxlbihzKSAtIHByZWZpeGxlbiAtIHN1ZmZpeGxlbgogICAgaWYgc2tpcCA+IF9QTEFDRUhPTERFUl9MRU46CiAgICAgICAgcyA9ICclc1slZCBjaGFyc10lcycgJSAoc1s6cHJlZml4bGVuXSwgc2tpcCwgc1tsZW4ocykgLSBzdWZmaXhsZW46XSkKICAgIHJldHVybiBzCgpkZWYgX2NvbW1vbl9zaG9ydGVuX3JlcHIoKmFyZ3MpOgogICAgYXJncyA9IHR1cGxlKG1hcChzYWZlX3JlcHIsIGFyZ3MpKQogICAgbWF4bGVuID0gbWF4KG1hcChsZW4sIGFyZ3MpKQogICAgaWYgbWF4bGVuIDw9IF9NQVhfTEVOR1RIOgogICAgICAgIHJldHVybiBhcmdzCgogICAgcHJlZml4ID0gY29tbW9ucHJlZml4KGFyZ3MpCiAgICBwcmVmaXhsZW4gPSBsZW4ocHJlZml4KQoKICAgIGNvbW1vbl9sZW4gPSBfTUFYX0xFTkdUSCAtIFwKICAgICAgICAgICAgICAgICAobWF4bGVuIC0gcHJlZml4bGVuICsgX01JTl9CRUdJTl9MRU4gKyBfUExBQ0VIT0xERVJfTEVOKQogICAgaWYgY29tbW9uX2xlbiA+IF9NSU5fQ09NTU9OX0xFTjoKICAgICAgICBhc3NlcnQgX01JTl9CRUdJTl9MRU4gKyBfUExBQ0VIT0xERVJfTEVOICsgX01JTl9DT01NT05fTEVOICsgXAogICAgICAgICAgICAgICAobWF4bGVuIC0gcHJlZml4bGVuKSA8IF9NQVhfTEVOR1RICiAgICAgICAgcHJlZml4ID0gX3Nob3J0ZW4ocHJlZml4LCBfTUlOX0JFR0lOX0xFTiwgY29tbW9uX2xlbikKICAgICAgICByZXR1cm4gdHVwbGUocHJlZml4ICsgc1twcmVmaXhsZW46XSBmb3IgcyBpbiBhcmdzKQoKICAgIHByZWZpeCA9IF9zaG9ydGVuKHByZWZpeCwgX01JTl9CRUdJTl9MRU4sIF9NSU5fQ09NTU9OX0xFTikKICAgIHJldHVybiB0dXBsZShwcmVmaXggKyBfc2hvcnRlbihzW3ByZWZpeGxlbjpdLCBfTUlOX0RJRkZfTEVOLCBfTUlOX0VORF9MRU4pCiAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXJncykKCmRlZiBzYWZlX3JlcHIob2JqLCBzaG9ydD1GYWxzZSk6CiAgICB0cnk6CiAgICAgICAgcmVzdWx0ID0gcmVwcihvYmopCiAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgIHJlc3VsdCA9IG9iamVjdC5fX3JlcHJfXyhvYmopCiAgICBpZiBub3Qgc2hvcnQgb3IgbGVuKHJlc3VsdCkgPCBfTUFYX0xFTkdUSDoKICAgICAgICByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gcmVzdWx0WzpfTUFYX0xFTkdUSF0gKyAnIFt0cnVuY2F0ZWRdLi4uJwoKZGVmIHN0cmNsYXNzKGNscyk6CiAgICByZXR1cm4gIiVzLiVzIiAlIChjbHMuX19tb2R1bGVfXywgY2xzLl9fcXVhbG5hbWVfXykKCmRlZiBzb3J0ZWRfbGlzdF9kaWZmZXJlbmNlKGV4cGVjdGVkLCBhY3R1YWwpOgogICAgIiIiRmluZHMgZWxlbWVudHMgaW4gb25seSBvbmUgb3IgdGhlIG90aGVyIG9mIHR3bywgc29ydGVkIGlucHV0IGxpc3RzLgoKICAgIFJldHVybnMgYSB0d28tZWxlbWVudCB0dXBsZSBvZiBsaXN0cy4gICAgVGhlIGZpcnN0IGxpc3QgY29udGFpbnMgdGhvc2UKICAgIGVsZW1lbnRzIGluIHRoZSAiZXhwZWN0ZWQiIGxpc3QgYnV0IG5vdCBpbiB0aGUgImFjdHVhbCIgbGlzdCwgYW5kIHRoZQogICAgc2Vjb25kIGNvbnRhaW5zIHRob3NlIGVsZW1lbnRzIGluIHRoZSAiYWN0dWFsIiBsaXN0IGJ1dCBub3QgaW4gdGhlCiAgICAiZXhwZWN0ZWQiIGxpc3QuICAgIER1cGxpY2F0ZSBlbGVtZW50cyBpbiBlaXRoZXIgaW5wdXQgbGlzdCBhcmUgaWdub3JlZC4KICAgICIiIgogICAgaSA9IGogPSAwCiAgICBtaXNzaW5nID0gW10KICAgIHVuZXhwZWN0ZWQgPSBbXQogICAgd2hpbGUgVHJ1ZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGUgPSBleHBlY3RlZFtpXQogICAgICAgICAgICBhID0gYWN0dWFsW2pdCiAgICAgICAgICAgIGlmIGUgPCBhOgogICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoZSkKICAgICAgICAgICAgICAgIGkgKz0gMQogICAgICAgICAgICAgICAgd2hpbGUgZXhwZWN0ZWRbaV0gPT0gZToKICAgICAgICAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgICAgZWxpZiBlID4gYToKICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQuYXBwZW5kKGEpCiAgICAgICAgICAgICAgICBqICs9IDEKICAgICAgICAgICAgICAgIHdoaWxlIGFjdHVhbFtqXSA9PSBhOgogICAgICAgICAgICAgICAgICAgIGogKz0gMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgZXhwZWN0ZWRbaV0gPT0gZToKICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIGogKz0gMQogICAgICAgICAgICAgICAgICAgIHdoaWxlIGFjdHVhbFtqXSA9PSBhOgogICAgICAgICAgICAgICAgICAgICAgICBqICs9IDEKICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgbWlzc2luZy5leHRlbmQoZXhwZWN0ZWRbaTpdKQogICAgICAgICAgICB1bmV4cGVjdGVkLmV4dGVuZChhY3R1YWxbajpdKQogICAgICAgICAgICBicmVhawogICAgcmV0dXJuIG1pc3NpbmcsIHVuZXhwZWN0ZWQKCgpkZWYgdW5vcmRlcmFibGVfbGlzdF9kaWZmZXJlbmNlKGV4cGVjdGVkLCBhY3R1YWwpOgogICAgIiIiU2FtZSBiZWhhdmlvciBhcyBzb3J0ZWRfbGlzdF9kaWZmZXJlbmNlIGJ1dAogICAgZm9yIGxpc3RzIG9mIHVub3JkZXJhYmxlIGl0ZW1zIChsaWtlIGRpY3RzKS4KCiAgICBBcyBpdCBkb2VzIGEgbGluZWFyIHNlYXJjaCBwZXIgaXRlbSAocmVtb3ZlKSBpdAogICAgaGFzIE8obipuKSBwZXJmb3JtYW5jZS4iIiIKICAgIG1pc3NpbmcgPSBbXQogICAgd2hpbGUgZXhwZWN0ZWQ6CiAgICAgICAgaXRlbSA9IGV4cGVjdGVkLnBvcCgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhY3R1YWwucmVtb3ZlKGl0ZW0pCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKGl0ZW0pCgogICAgIyBhbnl0aGluZyBsZWZ0IGluIGFjdHVhbCBpcyB1bmV4cGVjdGVkCiAgICByZXR1cm4gbWlzc2luZywgYWN0dWFsCgpkZWYgdGhyZWVfd2F5X2NtcCh4LCB5KToKICAgICIiIlJldHVybiAtMSBpZiB4IDwgeSwgMCBpZiB4ID09IHkgYW5kIDEgaWYgeCA+IHkiIiIKICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQoKX01pc21hdGNoID0gbmFtZWR0dXBsZSgnTWlzbWF0Y2gnLCAnYWN0dWFsIGV4cGVjdGVkIHZhbHVlJykKCmRlZiBfY291bnRfZGlmZl9hbGxfcHVycG9zZShhY3R1YWwsIGV4cGVjdGVkKToKICAgICdSZXR1cm5zIGxpc3Qgb2YgKGNudF9hY3QsIGNudF9leHAsIGVsZW0pIHRyaXBsZXMgd2hlcmUgdGhlIGNvdW50cyBkaWZmZXInCiAgICAjIGVsZW1lbnRzIG5lZWQgbm90IGJlIGhhc2hhYmxlCiAgICBzLCB0ID0gbGlzdChhY3R1YWwpLCBsaXN0KGV4cGVjdGVkKQogICAgbSwgbiA9IGxlbihzKSwgbGVuKHQpCiAgICBOVUxMID0gb2JqZWN0KCkKICAgIHJlc3VsdCA9IFtdCiAgICBmb3IgaSwgZWxlbSBpbiBlbnVtZXJhdGUocyk6CiAgICAgICAgaWYgZWxlbSBpcyBOVUxMOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGNudF9zID0gY250X3QgPSAwCiAgICAgICAgZm9yIGogaW4gcmFuZ2UoaSwgbSk6CiAgICAgICAgICAgIGlmIHNbal0gPT0gZWxlbToKICAgICAgICAgICAgICAgIGNudF9zICs9IDEKICAgICAgICAgICAgICAgIHNbal0gPSBOVUxMCiAgICAgICAgZm9yIGosIG90aGVyX2VsZW0gaW4gZW51bWVyYXRlKHQpOgogICAgICAgICAgICBpZiBvdGhlcl9lbGVtID09IGVsZW06CiAgICAgICAgICAgICAgICBjbnRfdCArPSAxCiAgICAgICAgICAgICAgICB0W2pdID0gTlVMTAogICAgICAgIGlmIGNudF9zICE9IGNudF90OgogICAgICAgICAgICBkaWZmID0gX01pc21hdGNoKGNudF9zLCBjbnRfdCwgZWxlbSkKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkaWZmKQoKICAgIGZvciBpLCBlbGVtIGluIGVudW1lcmF0ZSh0KToKICAgICAgICBpZiBlbGVtIGlzIE5VTEw6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgY250X3QgPSAwCiAgICAgICAgZm9yIGogaW4gcmFuZ2UoaSwgbik6CiAgICAgICAgICAgIGlmIHRbal0gPT0gZWxlbToKICAgICAgICAgICAgICAgIGNudF90ICs9IDEKICAgICAgICAgICAgICAgIHRbal0gPSBOVUxMCiAgICAgICAgZGlmZiA9IF9NaXNtYXRjaCgwLCBjbnRfdCwgZWxlbSkKICAgICAgICByZXN1bHQuYXBwZW5kKGRpZmYpCiAgICByZXR1cm4gcmVzdWx0CgpkZWYgX2NvdW50X2RpZmZfaGFzaGFibGUoYWN0dWFsLCBleHBlY3RlZCk6CiAgICAnUmV0dXJucyBsaXN0IG9mIChjbnRfYWN0LCBjbnRfZXhwLCBlbGVtKSB0cmlwbGVzIHdoZXJlIHRoZSBjb3VudHMgZGlmZmVyJwogICAgIyBlbGVtZW50cyBtdXN0IGJlIGhhc2hhYmxlCiAgICBzLCB0ID0gQ291bnRlcihhY3R1YWwpLCBDb3VudGVyKGV4cGVjdGVkKQogICAgcmVzdWx0ID0gW10KICAgIGZvciBlbGVtLCBjbnRfcyBpbiBzLml0ZW1zKCk6CiAgICAgICAgY250X3QgPSB0LmdldChlbGVtLCAwKQogICAgICAgIGlmIGNudF9zICE9IGNudF90OgogICAgICAgICAgICBkaWZmID0gX01pc21hdGNoKGNudF9zLCBjbnRfdCwgZWxlbSkKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkaWZmKQogICAgZm9yIGVsZW0sIGNudF90IGluIHQuaXRlbXMoKToKICAgICAgICBpZiBlbGVtIG5vdCBpbiBzOgogICAgICAgICAgICBkaWZmID0gX01pc21hdGNoKDAsIGNudF90LCBlbGVtKQogICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRpZmYpCiAgICByZXR1cm4gcmVzdWx0ClBLAwQUAAAAAAADIKNWAAAAAAAAAAAAAAAAEgAAAHVybGxpYi9fX2luaXRfXy5weVBLAwQUAAAAAAADIKNWwpteanAJAABwCQAADwAAAHVybGxpYi9lcnJvci5weSIiIkV4Y2VwdGlvbiBjbGFzc2VzIHJhaXNlZCBieSB1cmxsaWIuCgpUaGUgYmFzZSBleGNlcHRpb24gY2xhc3MgaXMgVVJMRXJyb3IsIHdoaWNoIGluaGVyaXRzIGZyb20gT1NFcnJvci4gIEl0CmRvZXNuJ3QgZGVmaW5lIGFueSBiZWhhdmlvciBvZiBpdHMgb3duLCBidXQgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGFsbApleGNlcHRpb25zIGRlZmluZWQgaW4gdGhpcyBwYWNrYWdlLgoKSFRUUEVycm9yIGlzIGFuIGV4Y2VwdGlvbiBjbGFzcyB0aGF0IGlzIGFsc28gYSB2YWxpZCBIVFRQIHJlc3BvbnNlCmluc3RhbmNlLiAgSXQgYmVoYXZlcyB0aGlzIHdheSBiZWNhdXNlIEhUVFAgcHJvdG9jb2wgZXJyb3JzIGFyZSB2YWxpZApyZXNwb25zZXMsIHdpdGggYSBzdGF0dXMgY29kZSwgaGVhZGVycywgYW5kIGEgYm9keS4gIEluIHNvbWUgY29udGV4dHMsCmFuIGFwcGxpY2F0aW9uIG1heSB3YW50IHRvIGhhbmRsZSBhbiBleGNlcHRpb24gbGlrZSBhIHJlZ3VsYXIKcmVzcG9uc2UuCiIiIgppbXBvcnQgaW8KaW1wb3J0IHVybGxpYi5yZXNwb25zZQoKX19hbGxfXyA9IFsnVVJMRXJyb3InLCAnSFRUUEVycm9yJywgJ0NvbnRlbnRUb29TaG9ydEVycm9yJ10KCgpjbGFzcyBVUkxFcnJvcihPU0Vycm9yKToKICAgICMgVVJMRXJyb3IgaXMgYSBzdWItdHlwZSBvZiBPU0Vycm9yLCBidXQgaXQgZG9lc24ndCBzaGFyZSBhbnkgb2YKICAgICMgdGhlIGltcGxlbWVudGF0aW9uLiAgbmVlZCB0byBvdmVycmlkZSBfX2luaXRfXyBhbmQgX19zdHJfXy4KICAgICMgSXQgc2V0cyBzZWxmLmFyZ3MgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBPU0Vycm9yCiAgICAjIHN1YmNsYXNzZXMsIGJ1dCBhcmdzIGRvZXNuJ3QgaGF2ZSB0aGUgdHlwaWNhbCBmb3JtYXQgd2l0aCBlcnJubyBpbgogICAgIyBzbG90IDAgYW5kIHN0cmVycm9yIGluIHNsb3QgMS4gIFRoaXMgbWF5IGJlIGJldHRlciB0aGFuIG5vdGhpbmcuCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhc29uLCBmaWxlbmFtZT1Ob25lKToKICAgICAgICBzZWxmLmFyZ3MgPSByZWFzb24sCiAgICAgICAgc2VsZi5yZWFzb24gPSByZWFzb24KICAgICAgICBpZiBmaWxlbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICc8dXJsb3BlbiBlcnJvciAlcz4nICUgc2VsZi5yZWFzb24KCgpjbGFzcyBIVFRQRXJyb3IoVVJMRXJyb3IsIHVybGxpYi5yZXNwb25zZS5hZGRpbmZvdXJsKToKICAgICIiIlJhaXNlZCB3aGVuIEhUVFAgZXJyb3Igb2NjdXJzLCBidXQgYWxzbyBhY3RzIGxpa2Ugbm9uLWVycm9yIHJldHVybiIiIgogICAgX19zdXBlcl9pbml0ID0gdXJsbGliLnJlc3BvbnNlLmFkZGluZm91cmwuX19pbml0X18KCiAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBjb2RlLCBtc2csIGhkcnMsIGZwKToKICAgICAgICBzZWxmLmNvZGUgPSBjb2RlCiAgICAgICAgc2VsZi5tc2cgPSBtc2cKICAgICAgICBzZWxmLmhkcnMgPSBoZHJzCiAgICAgICAgc2VsZi5mcCA9IGZwCiAgICAgICAgc2VsZi5maWxlbmFtZSA9IHVybAogICAgICAgIGlmIGZwIGlzIE5vbmU6CiAgICAgICAgICAgIGZwID0gaW8uU3RyaW5nSU8oKQogICAgICAgIHNlbGYuX19zdXBlcl9pbml0KGZwLCBoZHJzLCB1cmwsIGNvZGUpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuICdIVFRQIEVycm9yICVzOiAlcycgJSAoc2VsZi5jb2RlLCBzZWxmLm1zZykKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICc8SFRUUEVycm9yICVzOiAlcj4nICUgKHNlbGYuY29kZSwgc2VsZi5tc2cpCgogICAgIyBzaW5jZSBVUkxFcnJvciBzcGVjaWZpZXMgYSAucmVhc29uIGF0dHJpYnV0ZSwgSFRUUEVycm9yIHNob3VsZCBhbHNvCiAgICAjICBwcm92aWRlIHRoaXMgYXR0cmlidXRlLiBTZWUgaXNzdWUxMzIxMSBmb3IgZGlzY3Vzc2lvbi4KICAgIEBwcm9wZXJ0eQogICAgZGVmIHJlYXNvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5tc2cKCiAgICBAcHJvcGVydHkKICAgIGRlZiBoZWFkZXJzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmhkcnMKCiAgICBAaGVhZGVycy5zZXR0ZXIKICAgIGRlZiBoZWFkZXJzKHNlbGYsIGhlYWRlcnMpOgogICAgICAgIHNlbGYuaGRycyA9IGhlYWRlcnMKCgpjbGFzcyBDb250ZW50VG9vU2hvcnRFcnJvcihVUkxFcnJvcik6CiAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gZG93bmxvYWRlZCBzaXplIGRvZXMgbm90IG1hdGNoIGNvbnRlbnQtbGVuZ3RoLiIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIGNvbnRlbnQpOgogICAgICAgIFVSTEVycm9yLl9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpCiAgICAgICAgc2VsZi5jb250ZW50ID0gY29udGVudApQSwMEFAAAAAAAAyCjVqI6YixMpgAATKYAAA8AAAB1cmxsaWIvcGFyc2UucHkiIiJQYXJzZSAoYWJzb2x1dGUgYW5kIHJlbGF0aXZlKSBVUkxzLgoKdXJscGFyc2UgbW9kdWxlIGlzIGJhc2VkIHVwb24gdGhlIGZvbGxvd2luZyBSRkMgc3BlY2lmaWNhdGlvbnMuCgpSRkMgMzk4NiAoU1RENjYpOiAiVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVycyIgYnkgVC4gQmVybmVycy1MZWUsIFIuIEZpZWxkaW5nCmFuZCBMLiAgTWFzaW50ZXIsIEphbnVhcnkgMjAwNS4KClJGQyAyNzMyIDogIkZvcm1hdCBmb3IgTGl0ZXJhbCBJUHY2IEFkZHJlc3NlcyBpbiBVUkwncyBieSBSLkhpbmRlbiwgQi5DYXJwZW50ZXIKYW5kIEwuTWFzaW50ZXIsIERlY2VtYmVyIDE5OTkuCgpSRkMgMjM5NjogICJVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzIChVUkkpIjogR2VuZXJpYyBTeW50YXggYnkgVC4KQmVybmVycy1MZWUsIFIuIEZpZWxkaW5nLCBhbmQgTC4gTWFzaW50ZXIsIEF1Z3VzdCAxOTk4LgoKUkZDIDIzNjg6ICJUaGUgbWFpbHRvIFVSTCBzY2hlbWUiLCBieSBQLkhvZmZtYW4gLCBMIE1hc2ludGVyLCBKLiBaYXdpbnNraSwgSnVseSAxOTk4LgoKUkZDIDE4MDg6ICJSZWxhdGl2ZSBVbmlmb3JtIFJlc291cmNlIExvY2F0b3JzIiwgYnkgUi4gRmllbGRpbmcsIFVDIElydmluZSwgSnVuZQoxOTk1LgoKUkZDIDE3Mzg6ICJVbmlmb3JtIFJlc291cmNlIExvY2F0b3JzIChVUkwpIiBieSBULiBCZXJuZXJzLUxlZSwgTC4gTWFzaW50ZXIsIE0uCk1jQ2FoaWxsLCBEZWNlbWJlciAxOTk0CgpSRkMgMzk4NiBpcyBjb25zaWRlcmVkIHRoZSBjdXJyZW50IHN0YW5kYXJkIGFuZCBhbnkgZnV0dXJlIGNoYW5nZXMgdG8KdXJscGFyc2UgbW9kdWxlIHNob3VsZCBjb25mb3JtIHdpdGggaXQuICBUaGUgdXJscGFyc2UgbW9kdWxlIGlzCmN1cnJlbnRseSBub3QgZW50aXJlbHkgY29tcGxpYW50IHdpdGggdGhpcyBSRkMgZHVlIHRvIGRlZmFjdG8Kc2NlbmFyaW9zIGZvciBwYXJzaW5nLCBhbmQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcHVycG9zZXMsIHNvbWUKcGFyc2luZyBxdWlya3MgZnJvbSBvbGRlciBSRkNzIGFyZSByZXRhaW5lZC4gVGhlIHRlc3RjYXNlcyBpbgp0ZXN0X3VybHBhcnNlLnB5IHByb3ZpZGVzIGEgZ29vZCBpbmRpY2F0b3Igb2YgcGFyc2luZyBiZWhhdmlvci4KIiIiCgpmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IHJlCmltcG9ydCBzeXMKaW1wb3J0IHR5cGVzCmltcG9ydCB3YXJuaW5ncwoKX19hbGxfXyA9IFsidXJscGFyc2UiLCAidXJsdW5wYXJzZSIsICJ1cmxqb2luIiwgInVybGRlZnJhZyIsCiAgICAgICAgICAgInVybHNwbGl0IiwgInVybHVuc3BsaXQiLCAidXJsZW5jb2RlIiwgInBhcnNlX3FzIiwKICAgICAgICAgICAicGFyc2VfcXNsIiwgInF1b3RlIiwgInF1b3RlX3BsdXMiLCAicXVvdGVfZnJvbV9ieXRlcyIsCiAgICAgICAgICAgInVucXVvdGUiLCAidW5xdW90ZV9wbHVzIiwgInVucXVvdGVfdG9fYnl0ZXMiLAogICAgICAgICAgICJEZWZyYWdSZXN1bHQiLCAiUGFyc2VSZXN1bHQiLCAiU3BsaXRSZXN1bHQiLAogICAgICAgICAgICJEZWZyYWdSZXN1bHRCeXRlcyIsICJQYXJzZVJlc3VsdEJ5dGVzIiwgIlNwbGl0UmVzdWx0Qnl0ZXMiXQoKIyBBIGNsYXNzaWZpY2F0aW9uIG9mIHNjaGVtZXMuCiMgVGhlIGVtcHR5IHN0cmluZyBjbGFzc2lmaWVzIFVSTHMgd2l0aCBubyBzY2hlbWUgc3BlY2lmaWVkLAojIGJlaW5nIHRoZSBkZWZhdWx0IHZhbHVlIHJldHVybmVkIGJ5IOKAnHVybHNwbGl04oCdIGFuZCDigJx1cmxwYXJzZeKAnS4KCnVzZXNfcmVsYXRpdmUgPSBbJycsICdmdHAnLCAnaHR0cCcsICdnb3BoZXInLCAnbm50cCcsICdpbWFwJywKICAgICAgICAgICAgICAgICAnd2FpcycsICdmaWxlJywgJ2h0dHBzJywgJ3NodHRwJywgJ21tcycsCiAgICAgICAgICAgICAgICAgJ3Byb3NwZXJvJywgJ3J0c3AnLCAncnRzcHUnLCAnc2Z0cCcsCiAgICAgICAgICAgICAgICAgJ3N2bicsICdzdm4rc3NoJywgJ3dzJywgJ3dzcyddCgp1c2VzX25ldGxvYyA9IFsnJywgJ2Z0cCcsICdodHRwJywgJ2dvcGhlcicsICdubnRwJywgJ3RlbG5ldCcsCiAgICAgICAgICAgICAgICdpbWFwJywgJ3dhaXMnLCAnZmlsZScsICdtbXMnLCAnaHR0cHMnLCAnc2h0dHAnLAogICAgICAgICAgICAgICAnc25ld3MnLCAncHJvc3Blcm8nLCAncnRzcCcsICdydHNwdScsICdyc3luYycsCiAgICAgICAgICAgICAgICdzdm4nLCAnc3ZuK3NzaCcsICdzZnRwJywgJ25mcycsICdnaXQnLCAnZ2l0K3NzaCcsCiAgICAgICAgICAgICAgICd3cycsICd3c3MnXQoKdXNlc19wYXJhbXMgPSBbJycsICdmdHAnLCAnaGRsJywgJ3Byb3NwZXJvJywgJ2h0dHAnLCAnaW1hcCcsCiAgICAgICAgICAgICAgICdodHRwcycsICdzaHR0cCcsICdydHNwJywgJ3J0c3B1JywgJ3NpcCcsICdzaXBzJywKICAgICAgICAgICAgICAgJ21tcycsICdzZnRwJywgJ3RlbCddCgojIFRoZXNlIGFyZSBub3QgYWN0dWFsbHkgdXNlZCBhbnltb3JlLCBidXQgc2hvdWxkIHN0YXkgZm9yIGJhY2t3YXJkcwojIGNvbXBhdGliaWxpdHkuICAoVGhleSBhcmUgdW5kb2N1bWVudGVkLCBidXQgaGF2ZSBhIHB1YmxpYy1sb29raW5nIG5hbWUuKQoKbm9uX2hpZXJhcmNoaWNhbCA9IFsnZ29waGVyJywgJ2hkbCcsICdtYWlsdG8nLCAnbmV3cycsCiAgICAgICAgICAgICAgICAgICAgJ3RlbG5ldCcsICd3YWlzJywgJ2ltYXAnLCAnc25ld3MnLCAnc2lwJywgJ3NpcHMnXQoKdXNlc19xdWVyeSA9IFsnJywgJ2h0dHAnLCAnd2FpcycsICdpbWFwJywgJ2h0dHBzJywgJ3NodHRwJywgJ21tcycsCiAgICAgICAgICAgICAgJ2dvcGhlcicsICdydHNwJywgJ3J0c3B1JywgJ3NpcCcsICdzaXBzJ10KCnVzZXNfZnJhZ21lbnQgPSBbJycsICdmdHAnLCAnaGRsJywgJ2h0dHAnLCAnZ29waGVyJywgJ25ld3MnLAogICAgICAgICAgICAgICAgICdubnRwJywgJ3dhaXMnLCAnaHR0cHMnLCAnc2h0dHAnLCAnc25ld3MnLAogICAgICAgICAgICAgICAgICdmaWxlJywgJ3Byb3NwZXJvJ10KCiMgQ2hhcmFjdGVycyB2YWxpZCBpbiBzY2hlbWUgbmFtZXMKc2NoZW1lX2NoYXJzID0gKCdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKICAgICAgICAgICAgICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKICAgICAgICAgICAgICAgICcwMTIzNDU2Nzg5JwogICAgICAgICAgICAgICAgJystLicpCgojIFVuc2FmZSBieXRlcyB0byBiZSByZW1vdmVkIHBlciBXSEFUV0cgc3BlYwpfVU5TQUZFX1VSTF9CWVRFU19UT19SRU1PVkUgPSBbJ1x0JywgJ1xyJywgJ1xuJ10KCmRlZiBjbGVhcl9jYWNoZSgpOgogICAgIiIiQ2xlYXIgaW50ZXJuYWwgcGVyZm9ybWFuY2UgY2FjaGVzLiBVbmRvY3VtZW50ZWQ7IHNvbWUgdGVzdHMgd2FudCBpdC4iIiIKICAgIHVybHNwbGl0LmNhY2hlX2NsZWFyKCkKICAgIF9ieXRlX3F1b3Rlcl9mYWN0b3J5LmNhY2hlX2NsZWFyKCkKCiMgSGVscGVycyBmb3IgYnl0ZXMgaGFuZGxpbmcKIyBGb3IgMy4yLCB3ZSBkZWxpYmVyYXRlbHkgcmVxdWlyZSBhcHBsaWNhdGlvbnMgdGhhdAojIGhhbmRsZSBpbXByb3Blcmx5IHF1b3RlZCBVUkxzIHRvIGRvIHRoZWlyIG93bgojIGRlY29kaW5nIGFuZCBlbmNvZGluZy4gSWYgdmFsaWQgdXNlIGNhc2VzIGFyZQojIHByZXNlbnRlZCwgd2UgbWF5IHJlbGF4IHRoaXMgYnkgdXNpbmcgbGF0aW4tMQojIGRlY29kaW5nIGludGVybmFsbHkgZm9yIDMuMwpfaW1wbGljaXRfZW5jb2RpbmcgPSAnYXNjaWknCl9pbXBsaWNpdF9lcnJvcnMgPSAnc3RyaWN0JwoKZGVmIF9ub29wKG9iaik6CiAgICByZXR1cm4gb2JqCgpkZWYgX2VuY29kZV9yZXN1bHQob2JqLCBlbmNvZGluZz1faW1wbGljaXRfZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz1faW1wbGljaXRfZXJyb3JzKToKICAgIHJldHVybiBvYmouZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpCgpkZWYgX2RlY29kZV9hcmdzKGFyZ3MsIGVuY29kaW5nPV9pbXBsaWNpdF9lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9X2ltcGxpY2l0X2Vycm9ycyk6CiAgICByZXR1cm4gdHVwbGUoeC5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycykgaWYgeCBlbHNlICcnIGZvciB4IGluIGFyZ3MpCgpkZWYgX2NvZXJjZV9hcmdzKCphcmdzKToKICAgICMgSW52b2tlcyBkZWNvZGUgaWYgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBzdHIgYXJncwogICAgIyBhbmQgcmV0dXJucyB0aGUgY29lcmNlZCBpbnB1dHMgYWxvbmcgd2l0aAogICAgIyBhbiBhcHByb3ByaWF0ZSByZXN1bHQgY29lcmNpb24gZnVuY3Rpb24KICAgICMgICAtIG5vb3AgZm9yIHN0ciBpbnB1dHMKICAgICMgICAtIGVuY29kaW5nIGZ1bmN0aW9uIG90aGVyd2lzZQogICAgc3RyX2lucHV0ID0gaXNpbnN0YW5jZShhcmdzWzBdLCBzdHIpCiAgICBmb3IgYXJnIGluIGFyZ3NbMTpdOgogICAgICAgICMgV2Ugc3BlY2lhbC1jYXNlIHRoZSBlbXB0eSBzdHJpbmcgdG8gc3VwcG9ydCB0aGUKICAgICAgICAjICJzY2hlbWU9JyciIGRlZmF1bHQgYXJndW1lbnQgdG8gc29tZSBmdW5jdGlvbnMKICAgICAgICBpZiBhcmcgYW5kIGlzaW5zdGFuY2UoYXJnLCBzdHIpICE9IHN0cl9pbnB1dDoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgbWl4IHN0ciBhbmQgbm9uLXN0ciBhcmd1bWVudHMiKQogICAgaWYgc3RyX2lucHV0OgogICAgICAgIHJldHVybiBhcmdzICsgKF9ub29wLCkKICAgIHJldHVybiBfZGVjb2RlX2FyZ3MoYXJncykgKyAoX2VuY29kZV9yZXN1bHQsKQoKIyBSZXN1bHQgb2JqZWN0cyBhcmUgbW9yZSBoZWxwZnVsIHRoYW4gc2ltcGxlIHR1cGxlcwpjbGFzcyBfUmVzdWx0TWl4aW5TdHIob2JqZWN0KToKICAgICIiIlN0YW5kYXJkIGFwcHJvYWNoIHRvIGVuY29kaW5nIHBhcnNlZCByZXN1bHRzIGZyb20gc3RyIHRvIGJ5dGVzIiIiCiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBlbmNvZGUoc2VsZiwgZW5jb2Rpbmc9J2FzY2lpJywgZXJyb3JzPSdzdHJpY3QnKToKICAgICAgICByZXR1cm4gc2VsZi5fZW5jb2RlZF9jb3VudGVycGFydCgqKHguZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpIGZvciB4IGluIHNlbGYpKQoKCmNsYXNzIF9SZXN1bHRNaXhpbkJ5dGVzKG9iamVjdCk6CiAgICAiIiJTdGFuZGFyZCBhcHByb2FjaCB0byBkZWNvZGluZyBwYXJzZWQgcmVzdWx0cyBmcm9tIGJ5dGVzIHRvIHN0ciIiIgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgZGVjb2RlKHNlbGYsIGVuY29kaW5nPSdhc2NpaScsIGVycm9ycz0nc3RyaWN0Jyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2RlY29kZWRfY291bnRlcnBhcnQoKih4LmRlY29kZShlbmNvZGluZywgZXJyb3JzKSBmb3IgeCBpbiBzZWxmKSkKCgpjbGFzcyBfTmV0bG9jUmVzdWx0TWl4aW5CYXNlKG9iamVjdCk6CiAgICAiIiJTaGFyZWQgbWV0aG9kcyBmb3IgdGhlIHBhcnNlZCByZXN1bHQgb2JqZWN0cyBjb250YWluaW5nIGEgbmV0bG9jIGVsZW1lbnQiIiIKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgQHByb3BlcnR5CiAgICBkZWYgdXNlcm5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3VzZXJpbmZvWzBdCgogICAgQHByb3BlcnR5CiAgICBkZWYgcGFzc3dvcmQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3VzZXJpbmZvWzFdCgogICAgQHByb3BlcnR5CiAgICBkZWYgaG9zdG5hbWUoc2VsZik6CiAgICAgICAgaG9zdG5hbWUgPSBzZWxmLl9ob3N0aW5mb1swXQogICAgICAgIGlmIG5vdCBob3N0bmFtZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAjIFNjb3BlZCBJUHY2IGFkZHJlc3MgbWF5IGhhdmUgem9uZSBpbmZvLCB3aGljaCBtdXN0IG5vdCBiZSBsb3dlcmNhc2VkCiAgICAgICAgIyBsaWtlIGh0dHA6Ly9bZmU4MDo6ODIyYTphOGZmOmZlNDk6NDcwYyV0RVN0XToxMjM0L2tleXMKICAgICAgICBzZXBhcmF0b3IgPSAnJScgaWYgaXNpbnN0YW5jZShob3N0bmFtZSwgc3RyKSBlbHNlIGInJScKICAgICAgICBob3N0bmFtZSwgcGVyY2VudCwgem9uZSA9IGhvc3RuYW1lLnBhcnRpdGlvbihzZXBhcmF0b3IpCiAgICAgICAgcmV0dXJuIGhvc3RuYW1lLmxvd2VyKCkgKyBwZXJjZW50ICsgem9uZQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHBvcnQoc2VsZik6CiAgICAgICAgcG9ydCA9IHNlbGYuX2hvc3RpbmZvWzFdCiAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgcG9ydC5pc2RpZ2l0KCkgYW5kIHBvcnQuaXNhc2NpaSgpOgogICAgICAgICAgICAgICAgcG9ydCA9IGludChwb3J0KQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIlBvcnQgY291bGQgbm90IGJlIGNhc3QgdG8gaW50ZWdlciB2YWx1ZSBhcyB7cG9ydCFyfSIpCiAgICAgICAgICAgIGlmIG5vdCAoMCA8PSBwb3J0IDw9IDY1NTM1KToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvcnQgb3V0IG9mIHJhbmdlIDAtNjU1MzUiKQogICAgICAgIHJldHVybiBwb3J0CgogICAgX19jbGFzc19nZXRpdGVtX18gPSBjbGFzc21ldGhvZCh0eXBlcy5HZW5lcmljQWxpYXMpCgoKY2xhc3MgX05ldGxvY1Jlc3VsdE1peGluU3RyKF9OZXRsb2NSZXN1bHRNaXhpbkJhc2UsIF9SZXN1bHRNaXhpblN0cik6CiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF91c2VyaW5mbyhzZWxmKToKICAgICAgICBuZXRsb2MgPSBzZWxmLm5ldGxvYwogICAgICAgIHVzZXJpbmZvLCBoYXZlX2luZm8sIGhvc3RpbmZvID0gbmV0bG9jLnJwYXJ0aXRpb24oJ0AnKQogICAgICAgIGlmIGhhdmVfaW5mbzoKICAgICAgICAgICAgdXNlcm5hbWUsIGhhdmVfcGFzc3dvcmQsIHBhc3N3b3JkID0gdXNlcmluZm8ucGFydGl0aW9uKCc6JykKICAgICAgICAgICAgaWYgbm90IGhhdmVfcGFzc3dvcmQ6CiAgICAgICAgICAgICAgICBwYXNzd29yZCA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICB1c2VybmFtZSA9IHBhc3N3b3JkID0gTm9uZQogICAgICAgIHJldHVybiB1c2VybmFtZSwgcGFzc3dvcmQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBfaG9zdGluZm8oc2VsZik6CiAgICAgICAgbmV0bG9jID0gc2VsZi5uZXRsb2MKICAgICAgICBfLCBfLCBob3N0aW5mbyA9IG5ldGxvYy5ycGFydGl0aW9uKCdAJykKICAgICAgICBfLCBoYXZlX29wZW5fYnIsIGJyYWNrZXRlZCA9IGhvc3RpbmZvLnBhcnRpdGlvbignWycpCiAgICAgICAgaWYgaGF2ZV9vcGVuX2JyOgogICAgICAgICAgICBob3N0bmFtZSwgXywgcG9ydCA9IGJyYWNrZXRlZC5wYXJ0aXRpb24oJ10nKQogICAgICAgICAgICBfLCBfLCBwb3J0ID0gcG9ydC5wYXJ0aXRpb24oJzonKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGhvc3RuYW1lLCBfLCBwb3J0ID0gaG9zdGluZm8ucGFydGl0aW9uKCc6JykKICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgcG9ydCA9IE5vbmUKICAgICAgICByZXR1cm4gaG9zdG5hbWUsIHBvcnQKCgpjbGFzcyBfTmV0bG9jUmVzdWx0TWl4aW5CeXRlcyhfTmV0bG9jUmVzdWx0TWl4aW5CYXNlLCBfUmVzdWx0TWl4aW5CeXRlcyk6CiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF91c2VyaW5mbyhzZWxmKToKICAgICAgICBuZXRsb2MgPSBzZWxmLm5ldGxvYwogICAgICAgIHVzZXJpbmZvLCBoYXZlX2luZm8sIGhvc3RpbmZvID0gbmV0bG9jLnJwYXJ0aXRpb24oYidAJykKICAgICAgICBpZiBoYXZlX2luZm86CiAgICAgICAgICAgIHVzZXJuYW1lLCBoYXZlX3Bhc3N3b3JkLCBwYXNzd29yZCA9IHVzZXJpbmZvLnBhcnRpdGlvbihiJzonKQogICAgICAgICAgICBpZiBub3QgaGF2ZV9wYXNzd29yZDoKICAgICAgICAgICAgICAgIHBhc3N3b3JkID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHVzZXJuYW1lID0gcGFzc3dvcmQgPSBOb25lCiAgICAgICAgcmV0dXJuIHVzZXJuYW1lLCBwYXNzd29yZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIF9ob3N0aW5mbyhzZWxmKToKICAgICAgICBuZXRsb2MgPSBzZWxmLm5ldGxvYwogICAgICAgIF8sIF8sIGhvc3RpbmZvID0gbmV0bG9jLnJwYXJ0aXRpb24oYidAJykKICAgICAgICBfLCBoYXZlX29wZW5fYnIsIGJyYWNrZXRlZCA9IGhvc3RpbmZvLnBhcnRpdGlvbihiJ1snKQogICAgICAgIGlmIGhhdmVfb3Blbl9icjoKICAgICAgICAgICAgaG9zdG5hbWUsIF8sIHBvcnQgPSBicmFja2V0ZWQucGFydGl0aW9uKGInXScpCiAgICAgICAgICAgIF8sIF8sIHBvcnQgPSBwb3J0LnBhcnRpdGlvbihiJzonKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGhvc3RuYW1lLCBfLCBwb3J0ID0gaG9zdGluZm8ucGFydGl0aW9uKGInOicpCiAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgIHBvcnQgPSBOb25lCiAgICAgICAgcmV0dXJuIGhvc3RuYW1lLCBwb3J0CgoKX0RlZnJhZ1Jlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKCdEZWZyYWdSZXN1bHQnLCAndXJsIGZyYWdtZW50JykKX1NwbGl0UmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoCiAgICAnU3BsaXRSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHF1ZXJ5IGZyYWdtZW50JykKX1BhcnNlUmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoCiAgICAnUGFyc2VSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHBhcmFtcyBxdWVyeSBmcmFnbWVudCcpCgpfRGVmcmFnUmVzdWx0QmFzZS5fX2RvY19fID0gIiIiCkRlZnJhZ1Jlc3VsdCh1cmwsIGZyYWdtZW50KQoKQSAyLXR1cGxlIHRoYXQgY29udGFpbnMgdGhlIHVybCB3aXRob3V0IGZyYWdtZW50IGlkZW50aWZpZXIgYW5kIHRoZSBmcmFnbWVudAppZGVudGlmaWVyIGFzIGEgc2VwYXJhdGUgYXJndW1lbnQuCiIiIgoKX0RlZnJhZ1Jlc3VsdEJhc2UudXJsLl9fZG9jX18gPSAiIiJUaGUgVVJMIHdpdGggbm8gZnJhZ21lbnQgaWRlbnRpZmllci4iIiIKCl9EZWZyYWdSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18gPSAiIiIKRnJhZ21lbnQgaWRlbnRpZmllciBzZXBhcmF0ZWQgZnJvbSBVUkwsIHRoYXQgYWxsb3dzIGluZGlyZWN0IGlkZW50aWZpY2F0aW9uIG9mIGEKc2Vjb25kYXJ5IHJlc291cmNlIGJ5IHJlZmVyZW5jZSB0byBhIHByaW1hcnkgcmVzb3VyY2UgYW5kIGFkZGl0aW9uYWwgaWRlbnRpZnlpbmcKaW5mb3JtYXRpb24uCiIiIgoKX1NwbGl0UmVzdWx0QmFzZS5fX2RvY19fID0gIiIiClNwbGl0UmVzdWx0KHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBxdWVyeSwgZnJhZ21lbnQpCgpBIDUtdHVwbGUgdGhhdCBjb250YWlucyB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMgb2YgYSBVUkwuIFNpbWlsYXIgdG8KUGFyc2VSZXN1bHQsIGJ1dCBkb2VzIG5vdCBzcGxpdCBwYXJhbXMuCiIiIgoKX1NwbGl0UmVzdWx0QmFzZS5zY2hlbWUuX19kb2NfXyA9ICIiIlNwZWNpZmllcyBVUkwgc2NoZW1lIGZvciB0aGUgcmVxdWVzdC4iIiIKCl9TcGxpdFJlc3VsdEJhc2UubmV0bG9jLl9fZG9jX18gPSAiIiIKTmV0d29yayBsb2NhdGlvbiB3aGVyZSB0aGUgcmVxdWVzdCBpcyBtYWRlIHRvLgoiIiIKCl9TcGxpdFJlc3VsdEJhc2UucGF0aC5fX2RvY19fID0gIiIiClRoZSBoaWVyYXJjaGljYWwgcGF0aCwgc3VjaCBhcyB0aGUgcGF0aCB0byBhIGZpbGUgdG8gZG93bmxvYWQuCiIiIgoKX1NwbGl0UmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fID0gIiIiClRoZSBxdWVyeSBjb21wb25lbnQsIHRoYXQgY29udGFpbnMgbm9uLWhpZXJhcmNoaWNhbCBkYXRhLCB0aGF0IGFsb25nIHdpdGggZGF0YQppbiBwYXRoIGNvbXBvbmVudCwgaWRlbnRpZmllcyBhIHJlc291cmNlIGluIHRoZSBzY29wZSBvZiBVUkkncyBzY2hlbWUgYW5kCm5ldHdvcmsgbG9jYXRpb24uCiIiIgoKX1NwbGl0UmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fID0gIiIiCkZyYWdtZW50IGlkZW50aWZpZXIsIHRoYXQgYWxsb3dzIGluZGlyZWN0IGlkZW50aWZpY2F0aW9uIG9mIGEgc2Vjb25kYXJ5IHJlc291cmNlCmJ5IHJlZmVyZW5jZSB0byBhIHByaW1hcnkgcmVzb3VyY2UgYW5kIGFkZGl0aW9uYWwgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uCiIiIgoKX1BhcnNlUmVzdWx0QmFzZS5fX2RvY19fID0gIiIiClBhcnNlUmVzdWx0KHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkKCkEgNi10dXBsZSB0aGF0IGNvbnRhaW5zIGNvbXBvbmVudHMgb2YgYSBwYXJzZWQgVVJMLgoiIiIKCl9QYXJzZVJlc3VsdEJhc2Uuc2NoZW1lLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fCl9QYXJzZVJlc3VsdEJhc2UubmV0bG9jLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLm5ldGxvYy5fX2RvY19fCl9QYXJzZVJlc3VsdEJhc2UucGF0aC5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5wYXRoLl9fZG9jX18KX1BhcnNlUmVzdWx0QmFzZS5wYXJhbXMuX19kb2NfXyA9ICIiIgpQYXJhbWV0ZXJzIGZvciBsYXN0IHBhdGggZWxlbWVudCB1c2VkIHRvIGRlcmVmZXJlbmNlIHRoZSBVUkkgaW4gb3JkZXIgdG8gcHJvdmlkZQphY2Nlc3MgdG8gcGVyZm9ybSBzb21lIG9wZXJhdGlvbiBvbiB0aGUgcmVzb3VyY2UuCiIiIgoKX1BhcnNlUmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fCl9QYXJzZVJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXwoKCiMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhbGlhcyBfTmV0bG9jUmVzdWx0TWl4aW5TdHIKIyBSZXN1bHRCYXNlIGlzIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBkb2N1bWVudGVkIEFQSSwgYnV0IGl0IGlzCiMgcmV0YWluZWQgc2luY2UgZGVwcmVjYXRpbmcgaXQgaXNuJ3Qgd29ydGggdGhlIGhhc3NsZQpSZXN1bHRCYXNlID0gX05ldGxvY1Jlc3VsdE1peGluU3RyCgojIFN0cnVjdHVyZWQgcmVzdWx0IG9iamVjdHMgZm9yIHN0cmluZyBkYXRhCmNsYXNzIERlZnJhZ1Jlc3VsdChfRGVmcmFnUmVzdWx0QmFzZSwgX1Jlc3VsdE1peGluU3RyKToKICAgIF9fc2xvdHNfXyA9ICgpCiAgICBkZWYgZ2V0dXJsKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZnJhZ21lbnQ6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnVybCArICcjJyArIHNlbGYuZnJhZ21lbnQKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi51cmwKCmNsYXNzIFNwbGl0UmVzdWx0KF9TcGxpdFJlc3VsdEJhc2UsIF9OZXRsb2NSZXN1bHRNaXhpblN0cik6CiAgICBfX3Nsb3RzX18gPSAoKQogICAgZGVmIGdldHVybChzZWxmKToKICAgICAgICByZXR1cm4gdXJsdW5zcGxpdChzZWxmKQoKY2xhc3MgUGFyc2VSZXN1bHQoX1BhcnNlUmVzdWx0QmFzZSwgX05ldGxvY1Jlc3VsdE1peGluU3RyKToKICAgIF9fc2xvdHNfXyA9ICgpCiAgICBkZWYgZ2V0dXJsKHNlbGYpOgogICAgICAgIHJldHVybiB1cmx1bnBhcnNlKHNlbGYpCgojIFN0cnVjdHVyZWQgcmVzdWx0IG9iamVjdHMgZm9yIGJ5dGVzIGRhdGEKY2xhc3MgRGVmcmFnUmVzdWx0Qnl0ZXMoX0RlZnJhZ1Jlc3VsdEJhc2UsIF9SZXN1bHRNaXhpbkJ5dGVzKToKICAgIF9fc2xvdHNfXyA9ICgpCiAgICBkZWYgZ2V0dXJsKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZnJhZ21lbnQ6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnVybCArIGInIycgKyBzZWxmLmZyYWdtZW50CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYudXJsCgpjbGFzcyBTcGxpdFJlc3VsdEJ5dGVzKF9TcGxpdFJlc3VsdEJhc2UsIF9OZXRsb2NSZXN1bHRNaXhpbkJ5dGVzKToKICAgIF9fc2xvdHNfXyA9ICgpCiAgICBkZWYgZ2V0dXJsKHNlbGYpOgogICAgICAgIHJldHVybiB1cmx1bnNwbGl0KHNlbGYpCgpjbGFzcyBQYXJzZVJlc3VsdEJ5dGVzKF9QYXJzZVJlc3VsdEJhc2UsIF9OZXRsb2NSZXN1bHRNaXhpbkJ5dGVzKToKICAgIF9fc2xvdHNfXyA9ICgpCiAgICBkZWYgZ2V0dXJsKHNlbGYpOgogICAgICAgIHJldHVybiB1cmx1bnBhcnNlKHNlbGYpCgojIFNldCB1cCB0aGUgZW5jb2RlL2RlY29kZSByZXN1bHQgcGFpcnMKZGVmIF9maXhfcmVzdWx0X3RyYW5zY29kaW5nKCk6CiAgICBfcmVzdWx0X3BhaXJzID0gKAogICAgICAgIChEZWZyYWdSZXN1bHQsIERlZnJhZ1Jlc3VsdEJ5dGVzKSwKICAgICAgICAoU3BsaXRSZXN1bHQsIFNwbGl0UmVzdWx0Qnl0ZXMpLAogICAgICAgIChQYXJzZVJlc3VsdCwgUGFyc2VSZXN1bHRCeXRlcyksCiAgICApCiAgICBmb3IgX2RlY29kZWQsIF9lbmNvZGVkIGluIF9yZXN1bHRfcGFpcnM6CiAgICAgICAgX2RlY29kZWQuX2VuY29kZWRfY291bnRlcnBhcnQgPSBfZW5jb2RlZAogICAgICAgIF9lbmNvZGVkLl9kZWNvZGVkX2NvdW50ZXJwYXJ0ID0gX2RlY29kZWQKCl9maXhfcmVzdWx0X3RyYW5zY29kaW5nKCkKZGVsIF9maXhfcmVzdWx0X3RyYW5zY29kaW5nCgpkZWYgdXJscGFyc2UodXJsLCBzY2hlbWU9JycsIGFsbG93X2ZyYWdtZW50cz1UcnVlKToKICAgICIiIlBhcnNlIGEgVVJMIGludG8gNiBjb21wb25lbnRzOgogICAgPHNjaGVtZT46Ly88bmV0bG9jPi88cGF0aD47PHBhcmFtcz4/PHF1ZXJ5PiM8ZnJhZ21lbnQ+CgogICAgVGhlIHJlc3VsdCBpcyBhIG5hbWVkIDYtdHVwbGUgd2l0aCBmaWVsZHMgY29ycmVzcG9uZGluZyB0byB0aGUKICAgIGFib3ZlLiBJdCBpcyBlaXRoZXIgYSBQYXJzZVJlc3VsdCBvciBQYXJzZVJlc3VsdEJ5dGVzIG9iamVjdCwKICAgIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGUgdXJsIHBhcmFtZXRlci4KCiAgICBUaGUgdXNlcm5hbWUsIHBhc3N3b3JkLCBob3N0bmFtZSwgYW5kIHBvcnQgc3ViLWNvbXBvbmVudHMgb2YgbmV0bG9jCiAgICBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBhcyBhdHRyaWJ1dGVzIG9mIHRoZSByZXR1cm5lZCBvYmplY3QuCgogICAgVGhlIHNjaGVtZSBhcmd1bWVudCBwcm92aWRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgc2NoZW1lCiAgICBjb21wb25lbnQgd2hlbiBubyBzY2hlbWUgaXMgZm91bmQgaW4gdXJsLgoKICAgIElmIGFsbG93X2ZyYWdtZW50cyBpcyBGYWxzZSwgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIHNlcGFyYXRlIHRoZQogICAgZnJhZ21lbnQgY29tcG9uZW50IGZyb20gdGhlIHByZXZpb3VzIGNvbXBvbmVudCwgd2hpY2ggY2FuIGJlIGVpdGhlcgogICAgcGF0aCBvciBxdWVyeS4KCiAgICBOb3RlIHRoYXQgJSBlc2NhcGVzIGFyZSBub3QgZXhwYW5kZWQuCiAgICAiIiIKICAgIHVybCwgc2NoZW1lLCBfY29lcmNlX3Jlc3VsdCA9IF9jb2VyY2VfYXJncyh1cmwsIHNjaGVtZSkKICAgIHNwbGl0cmVzdWx0ID0gdXJsc3BsaXQodXJsLCBzY2hlbWUsIGFsbG93X2ZyYWdtZW50cykKICAgIHNjaGVtZSwgbmV0bG9jLCB1cmwsIHF1ZXJ5LCBmcmFnbWVudCA9IHNwbGl0cmVzdWx0CiAgICBpZiBzY2hlbWUgaW4gdXNlc19wYXJhbXMgYW5kICc7JyBpbiB1cmw6CiAgICAgICAgdXJsLCBwYXJhbXMgPSBfc3BsaXRwYXJhbXModXJsKQogICAgZWxzZToKICAgICAgICBwYXJhbXMgPSAnJwogICAgcmVzdWx0ID0gUGFyc2VSZXN1bHQoc2NoZW1lLCBuZXRsb2MsIHVybCwgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQpCiAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQocmVzdWx0KQoKZGVmIF9zcGxpdHBhcmFtcyh1cmwpOgogICAgaWYgJy8nICBpbiB1cmw6CiAgICAgICAgaSA9IHVybC5maW5kKCc7JywgdXJsLnJmaW5kKCcvJykpCiAgICAgICAgaWYgaSA8IDA6CiAgICAgICAgICAgIHJldHVybiB1cmwsICcnCiAgICBlbHNlOgogICAgICAgIGkgPSB1cmwuZmluZCgnOycpCiAgICByZXR1cm4gdXJsWzppXSwgdXJsW2krMTpdCgpkZWYgX3NwbGl0bmV0bG9jKHVybCwgc3RhcnQ9MCk6CiAgICBkZWxpbSA9IGxlbih1cmwpICAgIyBwb3NpdGlvbiBvZiBlbmQgb2YgZG9tYWluIHBhcnQgb2YgdXJsLCBkZWZhdWx0IGlzIGVuZAogICAgZm9yIGMgaW4gJy8/Iyc6ICAgICMgbG9vayBmb3IgZGVsaW1pdGVyczsgdGhlIG9yZGVyIGlzIE5PVCBpbXBvcnRhbnQKICAgICAgICB3ZGVsaW0gPSB1cmwuZmluZChjLCBzdGFydCkgICAgICAgICMgZmluZCBmaXJzdCBvZiB0aGlzIGRlbGltCiAgICAgICAgaWYgd2RlbGltID49IDA6ICAgICAgICAgICAgICAgICAgICAjIGlmIGZvdW5kCiAgICAgICAgICAgIGRlbGltID0gbWluKGRlbGltLCB3ZGVsaW0pICAgICAjIHVzZSBlYXJsaWVzdCBkZWxpbSBwb3NpdGlvbgogICAgcmV0dXJuIHVybFtzdGFydDpkZWxpbV0sIHVybFtkZWxpbTpdICAgIyByZXR1cm4gKGRvbWFpbiwgcmVzdCkKCmRlZiBfY2hlY2tuZXRsb2MobmV0bG9jKToKICAgIGlmIG5vdCBuZXRsb2Mgb3IgbmV0bG9jLmlzYXNjaWkoKToKICAgICAgICByZXR1cm4KICAgICMgbG9va2luZyBmb3IgY2hhcmFjdGVycyBsaWtlIFx1MjEwMCB0aGF0IGV4cGFuZCB0byAnYS9jJwogICAgIyBJRE5BIHVzZXMgTkZLQyBlcXVpdmFsZW5jZSwgc28gbm9ybWFsaXplIGZvciB0aGlzIGNoZWNrCiAgICBpbXBvcnQgdW5pY29kZWRhdGEKICAgIG4gPSBuZXRsb2MucmVwbGFjZSgnQCcsICcnKSAgICMgaWdub3JlIGNoYXJhY3RlcnMgYWxyZWFkeSBpbmNsdWRlZAogICAgbiA9IG4ucmVwbGFjZSgnOicsICcnKSAgICAgICAgIyBidXQgbm90IHRoZSBzdXJyb3VuZGluZyB0ZXh0CiAgICBuID0gbi5yZXBsYWNlKCcjJywgJycpCiAgICBuID0gbi5yZXBsYWNlKCc/JywgJycpCiAgICBuZXRsb2MyID0gdW5pY29kZWRhdGEubm9ybWFsaXplKCdORktDJywgbikKICAgIGlmIG4gPT0gbmV0bG9jMjoKICAgICAgICByZXR1cm4KICAgIGZvciBjIGluICcvPyNAOic6CiAgICAgICAgaWYgYyBpbiBuZXRsb2MyOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZXRsb2MgJyIgKyBuZXRsb2MgKyAiJyBjb250YWlucyBpbnZhbGlkICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXJzIHVuZGVyIE5GS0Mgbm9ybWFsaXphdGlvbiIpCgojIHR5cGVkPVRydWUgYXZvaWRzIEJ5dGVzV2FybmluZ3MgYmVpbmcgZW1pdHRlZCBkdXJpbmcgY2FjaGUga2V5CiMgY29tcGFyaXNvbiBzaW5jZSB0aGlzIEFQSSBzdXBwb3J0cyBib3RoIGJ5dGVzIGFuZCBzdHIgaW5wdXQuCkBmdW5jdG9vbHMubHJ1X2NhY2hlKHR5cGVkPVRydWUpCmRlZiB1cmxzcGxpdCh1cmwsIHNjaGVtZT0nJywgYWxsb3dfZnJhZ21lbnRzPVRydWUpOgogICAgIiIiUGFyc2UgYSBVUkwgaW50byA1IGNvbXBvbmVudHM6CiAgICA8c2NoZW1lPjovLzxuZXRsb2M+LzxwYXRoPj88cXVlcnk+IzxmcmFnbWVudD4KCiAgICBUaGUgcmVzdWx0IGlzIGEgbmFtZWQgNS10dXBsZSB3aXRoIGZpZWxkcyBjb3JyZXNwb25kaW5nIHRvIHRoZQogICAgYWJvdmUuIEl0IGlzIGVpdGhlciBhIFNwbGl0UmVzdWx0IG9yIFNwbGl0UmVzdWx0Qnl0ZXMgb2JqZWN0LAogICAgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRoZSB1cmwgcGFyYW1ldGVyLgoKICAgIFRoZSB1c2VybmFtZSwgcGFzc3dvcmQsIGhvc3RuYW1lLCBhbmQgcG9ydCBzdWItY29tcG9uZW50cyBvZiBuZXRsb2MKICAgIGNhbiBhbHNvIGJlIGFjY2Vzc2VkIGFzIGF0dHJpYnV0ZXMgb2YgdGhlIHJldHVybmVkIG9iamVjdC4KCiAgICBUaGUgc2NoZW1lIGFyZ3VtZW50IHByb3ZpZGVzIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBzY2hlbWUKICAgIGNvbXBvbmVudCB3aGVuIG5vIHNjaGVtZSBpcyBmb3VuZCBpbiB1cmwuCgogICAgSWYgYWxsb3dfZnJhZ21lbnRzIGlzIEZhbHNlLCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gc2VwYXJhdGUgdGhlCiAgICBmcmFnbWVudCBjb21wb25lbnQgZnJvbSB0aGUgcHJldmlvdXMgY29tcG9uZW50LCB3aGljaCBjYW4gYmUgZWl0aGVyCiAgICBwYXRoIG9yIHF1ZXJ5LgoKICAgIE5vdGUgdGhhdCAlIGVzY2FwZXMgYXJlIG5vdCBleHBhbmRlZC4KICAgICIiIgoKICAgIHVybCwgc2NoZW1lLCBfY29lcmNlX3Jlc3VsdCA9IF9jb2VyY2VfYXJncyh1cmwsIHNjaGVtZSkKCiAgICBmb3IgYiBpbiBfVU5TQUZFX1VSTF9CWVRFU19UT19SRU1PVkU6CiAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoYiwgIiIpCiAgICAgICAgc2NoZW1lID0gc2NoZW1lLnJlcGxhY2UoYiwgIiIpCgogICAgYWxsb3dfZnJhZ21lbnRzID0gYm9vbChhbGxvd19mcmFnbWVudHMpCiAgICBuZXRsb2MgPSBxdWVyeSA9IGZyYWdtZW50ID0gJycKICAgIGkgPSB1cmwuZmluZCgnOicpCiAgICBpZiBpID4gMCBhbmQgdXJsWzBdLmlzYXNjaWkoKSBhbmQgdXJsWzBdLmlzYWxwaGEoKToKICAgICAgICBmb3IgYyBpbiB1cmxbOmldOgogICAgICAgICAgICBpZiBjIG5vdCBpbiBzY2hlbWVfY2hhcnM6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNjaGVtZSwgdXJsID0gdXJsWzppXS5sb3dlcigpLCB1cmxbaSsxOl0KCiAgICBpZiB1cmxbOjJdID09ICcvLyc6CiAgICAgICAgbmV0bG9jLCB1cmwgPSBfc3BsaXRuZXRsb2ModXJsLCAyKQogICAgICAgIGlmICgoJ1snIGluIG5ldGxvYyBhbmQgJ10nIG5vdCBpbiBuZXRsb2MpIG9yCiAgICAgICAgICAgICAgICAoJ10nIGluIG5ldGxvYyBhbmQgJ1snIG5vdCBpbiBuZXRsb2MpKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBJUHY2IFVSTCIpCiAgICBpZiBhbGxvd19mcmFnbWVudHMgYW5kICcjJyBpbiB1cmw6CiAgICAgICAgdXJsLCBmcmFnbWVudCA9IHVybC5zcGxpdCgnIycsIDEpCiAgICBpZiAnPycgaW4gdXJsOgogICAgICAgIHVybCwgcXVlcnkgPSB1cmwuc3BsaXQoJz8nLCAxKQogICAgX2NoZWNrbmV0bG9jKG5ldGxvYykKICAgIHYgPSBTcGxpdFJlc3VsdChzY2hlbWUsIG5ldGxvYywgdXJsLCBxdWVyeSwgZnJhZ21lbnQpCiAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodikKCmRlZiB1cmx1bnBhcnNlKGNvbXBvbmVudHMpOgogICAgIiIiUHV0IGEgcGFyc2VkIFVSTCBiYWNrIHRvZ2V0aGVyIGFnYWluLiAgVGhpcyBtYXkgcmVzdWx0IGluIGEKICAgIHNsaWdodGx5IGRpZmZlcmVudCwgYnV0IGVxdWl2YWxlbnQgVVJMLCBpZiB0aGUgVVJMIHRoYXQgd2FzIHBhcnNlZAogICAgb3JpZ2luYWxseSBoYWQgcmVkdW5kYW50IGRlbGltaXRlcnMsIGUuZy4gYSA/IHdpdGggYW4gZW1wdHkgcXVlcnkKICAgICh0aGUgZHJhZnQgc3RhdGVzIHRoYXQgdGhlc2UgYXJlIGVxdWl2YWxlbnQpLiIiIgogICAgc2NoZW1lLCBuZXRsb2MsIHVybCwgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQsIF9jb2VyY2VfcmVzdWx0ID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb2VyY2VfYXJncygqY29tcG9uZW50cykpCiAgICBpZiBwYXJhbXM6CiAgICAgICAgdXJsID0gIiVzOyVzIiAlICh1cmwsIHBhcmFtcykKICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmx1bnNwbGl0KChzY2hlbWUsIG5ldGxvYywgdXJsLCBxdWVyeSwgZnJhZ21lbnQpKSkKCmRlZiB1cmx1bnNwbGl0KGNvbXBvbmVudHMpOgogICAgIiIiQ29tYmluZSB0aGUgZWxlbWVudHMgb2YgYSB0dXBsZSBhcyByZXR1cm5lZCBieSB1cmxzcGxpdCgpIGludG8gYQogICAgY29tcGxldGUgVVJMIGFzIGEgc3RyaW5nLiBUaGUgZGF0YSBhcmd1bWVudCBjYW4gYmUgYW55IGZpdmUtaXRlbSBpdGVyYWJsZS4KICAgIFRoaXMgbWF5IHJlc3VsdCBpbiBhIHNsaWdodGx5IGRpZmZlcmVudCwgYnV0IGVxdWl2YWxlbnQgVVJMLCBpZiB0aGUgVVJMIHRoYXQKICAgIHdhcyBwYXJzZWQgb3JpZ2luYWxseSBoYWQgdW5uZWNlc3NhcnkgZGVsaW1pdGVycyAoZm9yIGV4YW1wbGUsIGEgPyB3aXRoIGFuCiAgICBlbXB0eSBxdWVyeTsgdGhlIFJGQyBzdGF0ZXMgdGhhdCB0aGVzZSBhcmUgZXF1aXZhbGVudCkuIiIiCiAgICBzY2hlbWUsIG5ldGxvYywgdXJsLCBxdWVyeSwgZnJhZ21lbnQsIF9jb2VyY2VfcmVzdWx0ID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29lcmNlX2FyZ3MoKmNvbXBvbmVudHMpKQogICAgaWYgbmV0bG9jIG9yIChzY2hlbWUgYW5kIHNjaGVtZSBpbiB1c2VzX25ldGxvYyBhbmQgdXJsWzoyXSAhPSAnLy8nKToKICAgICAgICBpZiB1cmwgYW5kIHVybFs6MV0gIT0gJy8nOiB1cmwgPSAnLycgKyB1cmwKICAgICAgICB1cmwgPSAnLy8nICsgKG5ldGxvYyBvciAnJykgKyB1cmwKICAgIGlmIHNjaGVtZToKICAgICAgICB1cmwgPSBzY2hlbWUgKyAnOicgKyB1cmwKICAgIGlmIHF1ZXJ5OgogICAgICAgIHVybCA9IHVybCArICc/JyArIHF1ZXJ5CiAgICBpZiBmcmFnbWVudDoKICAgICAgICB1cmwgPSB1cmwgKyAnIycgKyBmcmFnbWVudAogICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybCkKCmRlZiB1cmxqb2luKGJhc2UsIHVybCwgYWxsb3dfZnJhZ21lbnRzPVRydWUpOgogICAgIiIiSm9pbiBhIGJhc2UgVVJMIGFuZCBhIHBvc3NpYmx5IHJlbGF0aXZlIFVSTCB0byBmb3JtIGFuIGFic29sdXRlCiAgICBpbnRlcnByZXRhdGlvbiBvZiB0aGUgbGF0dGVyLiIiIgogICAgaWYgbm90IGJhc2U6CiAgICAgICAgcmV0dXJuIHVybAogICAgaWYgbm90IHVybDoKICAgICAgICByZXR1cm4gYmFzZQoKICAgIGJhc2UsIHVybCwgX2NvZXJjZV9yZXN1bHQgPSBfY29lcmNlX2FyZ3MoYmFzZSwgdXJsKQogICAgYnNjaGVtZSwgYm5ldGxvYywgYnBhdGgsIGJwYXJhbXMsIGJxdWVyeSwgYmZyYWdtZW50ID0gXAogICAgICAgICAgICB1cmxwYXJzZShiYXNlLCAnJywgYWxsb3dfZnJhZ21lbnRzKQogICAgc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywgcXVlcnksIGZyYWdtZW50ID0gXAogICAgICAgICAgICB1cmxwYXJzZSh1cmwsIGJzY2hlbWUsIGFsbG93X2ZyYWdtZW50cykKCiAgICBpZiBzY2hlbWUgIT0gYnNjaGVtZSBvciBzY2hlbWUgbm90IGluIHVzZXNfcmVsYXRpdmU6CiAgICAgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybCkKICAgIGlmIHNjaGVtZSBpbiB1c2VzX25ldGxvYzoKICAgICAgICBpZiBuZXRsb2M6CiAgICAgICAgICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmx1bnBhcnNlKChzY2hlbWUsIG5ldGxvYywgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCiAgICAgICAgbmV0bG9jID0gYm5ldGxvYwoKICAgIGlmIG5vdCBwYXRoIGFuZCBub3QgcGFyYW1zOgogICAgICAgIHBhdGggPSBicGF0aAogICAgICAgIHBhcmFtcyA9IGJwYXJhbXMKICAgICAgICBpZiBub3QgcXVlcnk6CiAgICAgICAgICAgIHF1ZXJ5ID0gYnF1ZXJ5CiAgICAgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkpKQoKICAgIGJhc2VfcGFydHMgPSBicGF0aC5zcGxpdCgnLycpCiAgICBpZiBiYXNlX3BhcnRzWy0xXSAhPSAnJzoKICAgICAgICAjIHRoZSBsYXN0IGl0ZW0gaXMgbm90IGEgZGlyZWN0b3J5LCBzbyB3aWxsIG5vdCBiZSB0YWtlbiBpbnRvIGFjY291bnQKICAgICAgICAjIGluIHJlc29sdmluZyB0aGUgcmVsYXRpdmUgcGF0aAogICAgICAgIGRlbCBiYXNlX3BhcnRzWy0xXQoKICAgICMgZm9yIHJmYzM5ODYsIGlnbm9yZSBhbGwgYmFzZSBwYXRoIHNob3VsZCB0aGUgZmlyc3QgY2hhcmFjdGVyIGJlIHJvb3QuCiAgICBpZiBwYXRoWzoxXSA9PSAnLyc6CiAgICAgICAgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJykKICAgIGVsc2U6CiAgICAgICAgc2VnbWVudHMgPSBiYXNlX3BhcnRzICsgcGF0aC5zcGxpdCgnLycpCiAgICAgICAgIyBmaWx0ZXIgb3V0IGVsZW1lbnRzIHRoYXQgd291bGQgY2F1c2UgcmVkdW5kYW50IHNsYXNoZXMgb24gcmUtam9pbmluZwogICAgICAgICMgdGhlIHJlc29sdmVkX3BhdGgKICAgICAgICBzZWdtZW50c1sxOi0xXSA9IGZpbHRlcihOb25lLCBzZWdtZW50c1sxOi0xXSkKCiAgICByZXNvbHZlZF9wYXRoID0gW10KCiAgICBmb3Igc2VnIGluIHNlZ21lbnRzOgogICAgICAgIGlmIHNlZyA9PSAnLi4nOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXNvbHZlZF9wYXRoLnBvcCgpCiAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgIyBpZ25vcmUgYW55IC4uIHNlZ21lbnRzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGNhdXNlIGFuIEluZGV4RXJyb3IKICAgICAgICAgICAgICAgICMgd2hlbiBwb3BwZWQgZnJvbSByZXNvbHZlZF9wYXRoIGlmIHJlc29sdmluZyBmb3IgcmZjMzk4NgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgIGVsaWYgc2VnID09ICcuJzoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXNvbHZlZF9wYXRoLmFwcGVuZChzZWcpCgogICAgaWYgc2VnbWVudHNbLTFdIGluICgnLicsICcuLicpOgogICAgICAgICMgZG8gc29tZSBwb3N0LXByb2Nlc3NpbmcgaGVyZS4gaWYgdGhlIGxhc3Qgc2VnbWVudCB3YXMgYSByZWxhdGl2ZSBkaXIsCiAgICAgICAgIyB0aGVuIHdlIG5lZWQgdG8gYXBwZW5kIHRoZSB0cmFpbGluZyAnLycKICAgICAgICByZXNvbHZlZF9wYXRoLmFwcGVuZCgnJykKCiAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsdW5wYXJzZSgoc2NoZW1lLCBuZXRsb2MsICcvJy5qb2luKAogICAgICAgIHJlc29sdmVkX3BhdGgpIG9yICcvJywgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQpKSkKCgpkZWYgdXJsZGVmcmFnKHVybCk6CiAgICAiIiJSZW1vdmVzIGFueSBleGlzdGluZyBmcmFnbWVudCBmcm9tIFVSTC4KCiAgICBSZXR1cm5zIGEgdHVwbGUgb2YgdGhlIGRlZnJhZ21lbnRlZCBVUkwgYW5kIHRoZSBmcmFnbWVudC4gIElmCiAgICB0aGUgVVJMIGNvbnRhaW5lZCBubyBmcmFnbWVudHMsIHRoZSBzZWNvbmQgZWxlbWVudCBpcyB0aGUKICAgIGVtcHR5IHN0cmluZy4KICAgICIiIgogICAgdXJsLCBfY29lcmNlX3Jlc3VsdCA9IF9jb2VyY2VfYXJncyh1cmwpCiAgICBpZiAnIycgaW4gdXJsOgogICAgICAgIHMsIG4sIHAsIGEsIHEsIGZyYWcgPSB1cmxwYXJzZSh1cmwpCiAgICAgICAgZGVmcmFnID0gdXJsdW5wYXJzZSgocywgbiwgcCwgYSwgcSwgJycpKQogICAgZWxzZToKICAgICAgICBmcmFnID0gJycKICAgICAgICBkZWZyYWcgPSB1cmwKICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdChEZWZyYWdSZXN1bHQoZGVmcmFnLCBmcmFnKSkKCl9oZXhkaWcgPSAnMDEyMzQ1Njc4OUFCQ0RFRmFiY2RlZicKX2hleHRvYnl0ZSA9IE5vbmUKCmRlZiB1bnF1b3RlX3RvX2J5dGVzKHN0cmluZyk6CiAgICAiIiJ1bnF1b3RlX3RvX2J5dGVzKCdhYmMlMjBkZWYnKSAtPiBiJ2FiYyBkZWYnLiIiIgogICAgIyBOb3RlOiBzdHJpbmdzIGFyZSBlbmNvZGVkIGFzIFVURi04LiBUaGlzIGlzIG9ubHkgYW4gaXNzdWUgaWYgaXQgY29udGFpbnMKICAgICMgdW5lc2NhcGVkIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB3aGljaCBVUklzIHNob3VsZCBub3QuCiAgICBpZiBub3Qgc3RyaW5nOgogICAgICAgICMgSXMgaXQgYSBzdHJpbmctbGlrZSBvYmplY3Q/CiAgICAgICAgc3RyaW5nLnNwbGl0CiAgICAgICAgcmV0dXJuIGInJwogICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIHN0cik6CiAgICAgICAgc3RyaW5nID0gc3RyaW5nLmVuY29kZSgndXRmLTgnKQogICAgYml0cyA9IHN0cmluZy5zcGxpdChiJyUnKQogICAgaWYgbGVuKGJpdHMpID09IDE6CiAgICAgICAgcmV0dXJuIHN0cmluZwogICAgcmVzID0gW2JpdHNbMF1dCiAgICBhcHBlbmQgPSByZXMuYXBwZW5kCiAgICAjIERlbGF5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdGFibGUgdG8gbm90IHdhc3RlIG1lbW9yeQogICAgIyBpZiB0aGUgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkCiAgICBnbG9iYWwgX2hleHRvYnl0ZQogICAgaWYgX2hleHRvYnl0ZSBpcyBOb25lOgogICAgICAgIF9oZXh0b2J5dGUgPSB7KGEgKyBiKS5lbmNvZGUoKTogYnl0ZXMuZnJvbWhleChhICsgYikKICAgICAgICAgICAgICAgICAgICAgIGZvciBhIGluIF9oZXhkaWcgZm9yIGIgaW4gX2hleGRpZ30KICAgIGZvciBpdGVtIGluIGJpdHNbMTpdOgogICAgICAgIHRyeToKICAgICAgICAgICAgYXBwZW5kKF9oZXh0b2J5dGVbaXRlbVs6Ml1dKQogICAgICAgICAgICBhcHBlbmQoaXRlbVsyOl0pCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICBhcHBlbmQoYiclJykKICAgICAgICAgICAgYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gYicnLmpvaW4ocmVzKQoKX2FzY2lpcmUgPSByZS5jb21waWxlKCcoW1x4MDAtXHg3Zl0rKScpCgpkZWYgdW5xdW90ZShzdHJpbmcsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpOgogICAgIiIiUmVwbGFjZSAleHggZXNjYXBlcyBieSB0aGVpciBzaW5nbGUtY2hhcmFjdGVyIGVxdWl2YWxlbnQuIFRoZSBvcHRpb25hbAogICAgZW5jb2RpbmcgYW5kIGVycm9ycyBwYXJhbWV0ZXJzIHNwZWNpZnkgaG93IHRvIGRlY29kZSBwZXJjZW50LWVuY29kZWQKICAgIHNlcXVlbmNlcyBpbnRvIFVuaWNvZGUgY2hhcmFjdGVycywgYXMgYWNjZXB0ZWQgYnkgdGhlIGJ5dGVzLmRlY29kZSgpCiAgICBtZXRob2QuCiAgICBCeSBkZWZhdWx0LCBwZXJjZW50LWVuY29kZWQgc2VxdWVuY2VzIGFyZSBkZWNvZGVkIHdpdGggVVRGLTgsIGFuZCBpbnZhbGlkCiAgICBzZXF1ZW5jZXMgYXJlIHJlcGxhY2VkIGJ5IGEgcGxhY2Vob2xkZXIgY2hhcmFjdGVyLgoKICAgIHVucXVvdGUoJ2FiYyUyMGRlZicpIC0+ICdhYmMgZGVmJy4KICAgICIiIgogICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIGJ5dGVzKToKICAgICAgICByZXR1cm4gdW5xdW90ZV90b19ieXRlcyhzdHJpbmcpLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgaWYgJyUnIG5vdCBpbiBzdHJpbmc6CiAgICAgICAgc3RyaW5nLnNwbGl0CiAgICAgICAgcmV0dXJuIHN0cmluZwogICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKICAgICAgICBlbmNvZGluZyA9ICd1dGYtOCcKICAgIGlmIGVycm9ycyBpcyBOb25lOgogICAgICAgIGVycm9ycyA9ICdyZXBsYWNlJwogICAgYml0cyA9IF9hc2NpaXJlLnNwbGl0KHN0cmluZykKICAgIHJlcyA9IFtiaXRzWzBdXQogICAgYXBwZW5kID0gcmVzLmFwcGVuZAogICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKGJpdHMpLCAyKToKICAgICAgICBhcHBlbmQodW5xdW90ZV90b19ieXRlcyhiaXRzW2ldKS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycykpCiAgICAgICAgYXBwZW5kKGJpdHNbaSArIDFdKQogICAgcmV0dXJuICcnLmpvaW4ocmVzKQoKCmRlZiBwYXJzZV9xcyhxcywga2VlcF9ibGFua192YWx1ZXM9RmFsc2UsIHN0cmljdF9wYXJzaW5nPUZhbHNlLAogICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdyZXBsYWNlJywgbWF4X251bV9maWVsZHM9Tm9uZSwgc2VwYXJhdG9yPScmJyk6CiAgICAiIiJQYXJzZSBhIHF1ZXJ5IGdpdmVuIGFzIGEgc3RyaW5nIGFyZ3VtZW50LgoKICAgICAgICBBcmd1bWVudHM6CgogICAgICAgIHFzOiBwZXJjZW50LWVuY29kZWQgcXVlcnkgc3RyaW5nIHRvIGJlIHBhcnNlZAoKICAgICAgICBrZWVwX2JsYW5rX3ZhbHVlczogZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgYmxhbmsgdmFsdWVzIGluCiAgICAgICAgICAgIHBlcmNlbnQtZW5jb2RlZCBxdWVyaWVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGJsYW5rIHN0cmluZ3MuCiAgICAgICAgICAgIEEgdHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBibGFua3Mgc2hvdWxkIGJlIHJldGFpbmVkIGFzCiAgICAgICAgICAgIGJsYW5rIHN0cmluZ3MuICBUaGUgZGVmYXVsdCBmYWxzZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdAogICAgICAgICAgICBibGFuayB2YWx1ZXMgYXJlIHRvIGJlIGlnbm9yZWQgYW5kIHRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlCiAgICAgICAgICAgIG5vdCBpbmNsdWRlZC4KCiAgICAgICAgc3RyaWN0X3BhcnNpbmc6IGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGRvIHdpdGggcGFyc2luZyBlcnJvcnMuCiAgICAgICAgICAgIElmIGZhbHNlICh0aGUgZGVmYXVsdCksIGVycm9ycyBhcmUgc2lsZW50bHkgaWdub3JlZC4KICAgICAgICAgICAgSWYgdHJ1ZSwgZXJyb3JzIHJhaXNlIGEgVmFsdWVFcnJvciBleGNlcHRpb24uCgogICAgICAgIGVuY29kaW5nIGFuZCBlcnJvcnM6IHNwZWNpZnkgaG93IHRvIGRlY29kZSBwZXJjZW50LWVuY29kZWQgc2VxdWVuY2VzCiAgICAgICAgICAgIGludG8gVW5pY29kZSBjaGFyYWN0ZXJzLCBhcyBhY2NlcHRlZCBieSB0aGUgYnl0ZXMuZGVjb2RlKCkgbWV0aG9kLgoKICAgICAgICBtYXhfbnVtX2ZpZWxkczogaW50LiBJZiBzZXQsIHRoZW4gdGhyb3dzIGEgVmFsdWVFcnJvciBpZiB0aGVyZQogICAgICAgICAgICBhcmUgbW9yZSB0aGFuIG4gZmllbGRzIHJlYWQgYnkgcGFyc2VfcXNsKCkuCgogICAgICAgIHNlcGFyYXRvcjogc3RyLiBUaGUgc3ltYm9sIHRvIHVzZSBmb3Igc2VwYXJhdGluZyB0aGUgcXVlcnkgYXJndW1lbnRzLgogICAgICAgICAgICBEZWZhdWx0cyB0byAmLgoKICAgICAgICBSZXR1cm5zIGEgZGljdGlvbmFyeS4KICAgICIiIgogICAgcGFyc2VkX3Jlc3VsdCA9IHt9CiAgICBwYWlycyA9IHBhcnNlX3FzbChxcywga2VlcF9ibGFua192YWx1ZXMsIHN0cmljdF9wYXJzaW5nLAogICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICBtYXhfbnVtX2ZpZWxkcz1tYXhfbnVtX2ZpZWxkcywgc2VwYXJhdG9yPXNlcGFyYXRvcikKICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBwYWlyczoKICAgICAgICBpZiBuYW1lIGluIHBhcnNlZF9yZXN1bHQ6CiAgICAgICAgICAgIHBhcnNlZF9yZXN1bHRbbmFtZV0uYXBwZW5kKHZhbHVlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcnNlZF9yZXN1bHRbbmFtZV0gPSBbdmFsdWVdCiAgICByZXR1cm4gcGFyc2VkX3Jlc3VsdAoKCmRlZiBwYXJzZV9xc2wocXMsIGtlZXBfYmxhbmtfdmFsdWVzPUZhbHNlLCBzdHJpY3RfcGFyc2luZz1GYWxzZSwKICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3JlcGxhY2UnLCBtYXhfbnVtX2ZpZWxkcz1Ob25lLCBzZXBhcmF0b3I9JyYnKToKICAgICIiIlBhcnNlIGEgcXVlcnkgZ2l2ZW4gYXMgYSBzdHJpbmcgYXJndW1lbnQuCgogICAgICAgIEFyZ3VtZW50czoKCiAgICAgICAgcXM6IHBlcmNlbnQtZW5jb2RlZCBxdWVyeSBzdHJpbmcgdG8gYmUgcGFyc2VkCgogICAgICAgIGtlZXBfYmxhbmtfdmFsdWVzOiBmbGFnIGluZGljYXRpbmcgd2hldGhlciBibGFuayB2YWx1ZXMgaW4KICAgICAgICAgICAgcGVyY2VudC1lbmNvZGVkIHF1ZXJpZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmxhbmsgc3RyaW5ncy4KICAgICAgICAgICAgQSB0cnVlIHZhbHVlIGluZGljYXRlcyB0aGF0IGJsYW5rcyBzaG91bGQgYmUgcmV0YWluZWQgYXMgYmxhbmsKICAgICAgICAgICAgc3RyaW5ncy4gIFRoZSBkZWZhdWx0IGZhbHNlIHZhbHVlIGluZGljYXRlcyB0aGF0IGJsYW5rIHZhbHVlcwogICAgICAgICAgICBhcmUgdG8gYmUgaWdub3JlZCBhbmQgdHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgIG5vdCBpbmNsdWRlZC4KCiAgICAgICAgc3RyaWN0X3BhcnNpbmc6IGZsYWcgaW5kaWNhdGluZyB3aGF0IHRvIGRvIHdpdGggcGFyc2luZyBlcnJvcnMuIElmCiAgICAgICAgICAgIGZhbHNlICh0aGUgZGVmYXVsdCksIGVycm9ycyBhcmUgc2lsZW50bHkgaWdub3JlZC4gSWYgdHJ1ZSwKICAgICAgICAgICAgZXJyb3JzIHJhaXNlIGEgVmFsdWVFcnJvciBleGNlcHRpb24uCgogICAgICAgIGVuY29kaW5nIGFuZCBlcnJvcnM6IHNwZWNpZnkgaG93IHRvIGRlY29kZSBwZXJjZW50LWVuY29kZWQgc2VxdWVuY2VzCiAgICAgICAgICAgIGludG8gVW5pY29kZSBjaGFyYWN0ZXJzLCBhcyBhY2NlcHRlZCBieSB0aGUgYnl0ZXMuZGVjb2RlKCkgbWV0aG9kLgoKICAgICAgICBtYXhfbnVtX2ZpZWxkczogaW50LiBJZiBzZXQsIHRoZW4gdGhyb3dzIGEgVmFsdWVFcnJvcgogICAgICAgICAgICBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG4gZmllbGRzIHJlYWQgYnkgcGFyc2VfcXNsKCkuCgogICAgICAgIHNlcGFyYXRvcjogc3RyLiBUaGUgc3ltYm9sIHRvIHVzZSBmb3Igc2VwYXJhdGluZyB0aGUgcXVlcnkgYXJndW1lbnRzLgogICAgICAgICAgICBEZWZhdWx0cyB0byAmLgoKICAgICAgICBSZXR1cm5zIGEgbGlzdCwgYXMgRy1kIGludGVuZGVkLgogICAgIiIiCiAgICBxcywgX2NvZXJjZV9yZXN1bHQgPSBfY29lcmNlX2FyZ3MocXMpCiAgICBzZXBhcmF0b3IsIF8gPSBfY29lcmNlX2FyZ3Moc2VwYXJhdG9yKQoKICAgIGlmIG5vdCBzZXBhcmF0b3Igb3IgKG5vdCBpc2luc3RhbmNlKHNlcGFyYXRvciwgKHN0ciwgYnl0ZXMpKSk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiU2VwYXJhdG9yIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgb3IgYnl0ZXMuIikKCiAgICAjIElmIG1heF9udW1fZmllbGRzIGlzIGRlZmluZWQgdGhlbiBjaGVjayB0aGF0IHRoZSBudW1iZXIgb2YgZmllbGRzCiAgICAjIGlzIGxlc3MgdGhhbiBtYXhfbnVtX2ZpZWxkcy4gVGhpcyBwcmV2ZW50cyBhIG1lbW9yeSBleGhhdXN0aW9uIERPUwogICAgIyBhdHRhY2sgdmlhIHBvc3QgYm9kaWVzIHdpdGggbWFueSBmaWVsZHMuCiAgICBpZiBtYXhfbnVtX2ZpZWxkcyBpcyBub3QgTm9uZToKICAgICAgICBudW1fZmllbGRzID0gMSArIHFzLmNvdW50KHNlcGFyYXRvcikgaWYgcXMgZWxzZSAwCiAgICAgICAgaWYgbWF4X251bV9maWVsZHMgPCBudW1fZmllbGRzOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNYXggbnVtYmVyIG9mIGZpZWxkcyBleGNlZWRlZCcpCgogICAgciA9IFtdCiAgICBxdWVyeV9hcmdzID0gcXMuc3BsaXQoc2VwYXJhdG9yKSBpZiBxcyBlbHNlIFtdCiAgICBmb3IgbmFtZV92YWx1ZSBpbiBxdWVyeV9hcmdzOgogICAgICAgIGlmIG5vdCBuYW1lX3ZhbHVlIGFuZCBub3Qgc3RyaWN0X3BhcnNpbmc6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgbnYgPSBuYW1lX3ZhbHVlLnNwbGl0KCc9JywgMSkKICAgICAgICBpZiBsZW4obnYpICE9IDI6CiAgICAgICAgICAgIGlmIHN0cmljdF9wYXJzaW5nOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmFkIHF1ZXJ5IGZpZWxkOiAlciIgJSAobmFtZV92YWx1ZSwpKQogICAgICAgICAgICAjIEhhbmRsZSBjYXNlIG9mIGEgY29udHJvbC1uYW1lIHdpdGggbm8gZXF1YWwgc2lnbgogICAgICAgICAgICBpZiBrZWVwX2JsYW5rX3ZhbHVlczoKICAgICAgICAgICAgICAgIG52LmFwcGVuZCgnJykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgaWYgbGVuKG52WzFdKSBvciBrZWVwX2JsYW5rX3ZhbHVlczoKICAgICAgICAgICAgbmFtZSA9IG52WzBdLnJlcGxhY2UoJysnLCAnICcpCiAgICAgICAgICAgIG5hbWUgPSB1bnF1b3RlKG5hbWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQogICAgICAgICAgICBuYW1lID0gX2NvZXJjZV9yZXN1bHQobmFtZSkKICAgICAgICAgICAgdmFsdWUgPSBudlsxXS5yZXBsYWNlKCcrJywgJyAnKQogICAgICAgICAgICB2YWx1ZSA9IHVucXVvdGUodmFsdWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQogICAgICAgICAgICB2YWx1ZSA9IF9jb2VyY2VfcmVzdWx0KHZhbHVlKQogICAgICAgICAgICByLmFwcGVuZCgobmFtZSwgdmFsdWUpKQogICAgcmV0dXJuIHIKCmRlZiB1bnF1b3RlX3BsdXMoc3RyaW5nLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3JlcGxhY2UnKToKICAgICIiIkxpa2UgdW5xdW90ZSgpLCBidXQgYWxzbyByZXBsYWNlIHBsdXMgc2lnbnMgYnkgc3BhY2VzLCBhcyByZXF1aXJlZCBmb3IKICAgIHVucXVvdGluZyBIVE1MIGZvcm0gdmFsdWVzLgoKICAgIHVucXVvdGVfcGx1cygnJTdlL2FiYytkZWYnKSAtPiAnfi9hYmMgZGVmJwogICAgIiIiCiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgnKycsICcgJykKICAgIHJldHVybiB1bnF1b3RlKHN0cmluZywgZW5jb2RpbmcsIGVycm9ycykKCl9BTFdBWVNfU0FGRSA9IGZyb3plbnNldChiJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJwogICAgICAgICAgICAgICAgICAgICAgICAgYidhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKICAgICAgICAgICAgICAgICAgICAgICAgIGInMDEyMzQ1Njc4OScKICAgICAgICAgICAgICAgICAgICAgICAgIGInXy4tficpCl9BTFdBWVNfU0FGRV9CWVRFUyA9IGJ5dGVzKF9BTFdBWVNfU0FGRSkKCmRlZiBfX2dldGF0dHJfXyhuYW1lKToKICAgIGlmIG5hbWUgPT0gJ1F1b3Rlcic6CiAgICAgICAgd2FybmluZ3Mud2FybignRGVwcmVjYXRlZCBpbiAzLjExLiAnCiAgICAgICAgICAgICAgICAgICAgICAndXJsbGliLnBhcnNlLlF1b3RlciB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuMTQuICcKICAgICAgICAgICAgICAgICAgICAgICdJdCB3YXMgbm90IGludGVuZGVkIHRvIGJlIGEgcHVibGljIEFQSS4nLAogICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgcmV0dXJuIF9RdW90ZXIKICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGYnbW9kdWxlIHtfX25hbWVfXyFyfSBoYXMgbm8gYXR0cmlidXRlIHtuYW1lIXJ9JykKCmNsYXNzIF9RdW90ZXIoZGljdCk6CiAgICAiIiJBIG1hcHBpbmcgZnJvbSBieXRlcyBudW1iZXJzIChpbiByYW5nZSgwLDI1NikpIHRvIHN0cmluZ3MuCgogICAgU3RyaW5nIHZhbHVlcyBhcmUgcGVyY2VudC1lbmNvZGVkIGJ5dGUgdmFsdWVzLCB1bmxlc3MgdGhlIGtleSA8IDEyOCwgYW5kCiAgICBpbiBlaXRoZXIgb2YgdGhlIHNwZWNpZmllZCBzYWZlIHNldCwgb3IgdGhlIGFsd2F5cyBzYWZlIHNldC4KICAgICIiIgogICAgIyBLZWVwcyBhIGNhY2hlIGludGVybmFsbHksIHZpYSBfX21pc3NpbmdfXywgZm9yIGVmZmljaWVuY3kgKGxvb2t1cHMKICAgICMgb2YgY2FjaGVkIGtleXMgZG9uJ3QgY2FsbCBQeXRob24gY29kZSBhdCBhbGwpLgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNhZmUpOgogICAgICAgICIiInNhZmU6IGJ5dGVzIG9iamVjdC4iIiIKICAgICAgICBzZWxmLnNhZmUgPSBfQUxXQVlTX1NBRkUudW5pb24oc2FmZSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYiPFF1b3RlciB7ZGljdChzZWxmKSFyfT4iCgogICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGIpOgogICAgICAgICMgSGFuZGxlIGEgY2FjaGUgbWlzcy4gU3RvcmUgcXVvdGVkIHN0cmluZyBpbiBjYWNoZSBhbmQgcmV0dXJuLgogICAgICAgIHJlcyA9IGNocihiKSBpZiBiIGluIHNlbGYuc2FmZSBlbHNlICclezowMlh9Jy5mb3JtYXQoYikKICAgICAgICBzZWxmW2JdID0gcmVzCiAgICAgICAgcmV0dXJuIHJlcwoKZGVmIHF1b3RlKHN0cmluZywgc2FmZT0nLycsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKICAgICIiInF1b3RlKCdhYmMgZGVmJykgLT4gJ2FiYyUyMGRlZicKCiAgICBFYWNoIHBhcnQgb2YgYSBVUkwsIGUuZy4gdGhlIHBhdGggaW5mbywgdGhlIHF1ZXJ5LCBldGMuLCBoYXMgYQogICAgZGlmZmVyZW50IHNldCBvZiByZXNlcnZlZCBjaGFyYWN0ZXJzIHRoYXQgbXVzdCBiZSBxdW90ZWQuIFRoZQogICAgcXVvdGUgZnVuY3Rpb24gb2ZmZXJzIGEgY2F1dGlvdXMgKG5vdCBtaW5pbWFsKSB3YXkgdG8gcXVvdGUgYQogICAgc3RyaW5nIGZvciBtb3N0IG9mIHRoZXNlIHBhcnRzLgoKICAgIFJGQyAzOTg2IFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKTogR2VuZXJpYyBTeW50YXggbGlzdHMKICAgIHRoZSBmb2xsb3dpbmcgKHVuKXJlc2VydmVkIGNoYXJhY3RlcnMuCgogICAgdW5yZXNlcnZlZCAgICA9IEFMUEhBIC8gRElHSVQgLyAiLSIgLyAiLiIgLyAiXyIgLyAifiIKICAgIHJlc2VydmVkICAgICAgPSBnZW4tZGVsaW1zIC8gc3ViLWRlbGltcwogICAgZ2VuLWRlbGltcyAgICA9ICI6IiAvICIvIiAvICI/IiAvICIjIiAvICJbIiAvICJdIiAvICJAIgogICAgc3ViLWRlbGltcyAgICA9ICIhIiAvICIkIiAvICImIiAvICInIiAvICIoIiAvICIpIgogICAgICAgICAgICAgICAgICAvICIqIiAvICIrIiAvICIsIiAvICI7IiAvICI9IgoKICAgIEVhY2ggb2YgdGhlIHJlc2VydmVkIGNoYXJhY3RlcnMgaXMgcmVzZXJ2ZWQgaW4gc29tZSBjb21wb25lbnQgb2YgYSBVUkwsCiAgICBidXQgbm90IG5lY2Vzc2FyaWx5IGluIGFsbCBvZiB0aGVtLgoKICAgIFRoZSBxdW90ZSBmdW5jdGlvbiAlLWVzY2FwZXMgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgbmVpdGhlciBpbiB0aGUKICAgIHVucmVzZXJ2ZWQgY2hhcnMgKCJhbHdheXMgc2FmZSIpIG5vciB0aGUgYWRkaXRpb25hbCBjaGFycyBzZXQgdmlhIHRoZQogICAgc2FmZSBhcmcuCgogICAgVGhlIGRlZmF1bHQgZm9yIHRoZSBzYWZlIGFyZyBpcyAnLycuIFRoZSBjaGFyYWN0ZXIgaXMgcmVzZXJ2ZWQsIGJ1dCBpbgogICAgdHlwaWNhbCB1c2FnZSB0aGUgcXVvdGUgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIG9uIGEgcGF0aCB3aGVyZSB0aGUKICAgIGV4aXN0aW5nIHNsYXNoIGNoYXJhY3RlcnMgYXJlIHRvIGJlIHByZXNlcnZlZC4KCiAgICBQeXRob24gMy43IHVwZGF0ZXMgZnJvbSB1c2luZyBSRkMgMjM5NiB0byBSRkMgMzk4NiB0byBxdW90ZSBVUkwgc3RyaW5ncy4KICAgIE5vdywgIn4iIGlzIGluY2x1ZGVkIGluIHRoZSBzZXQgb2YgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzLgoKICAgIHN0cmluZyBhbmQgc2FmZSBtYXkgYmUgZWl0aGVyIHN0ciBvciBieXRlcyBvYmplY3RzLiBlbmNvZGluZyBhbmQgZXJyb3JzCiAgICBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgaWYgc3RyaW5nIGlzIGEgYnl0ZXMgb2JqZWN0LgoKICAgIFRoZSBvcHRpb25hbCBlbmNvZGluZyBhbmQgZXJyb3JzIHBhcmFtZXRlcnMgc3BlY2lmeSBob3cgdG8gZGVhbCB3aXRoCiAgICBub24tQVNDSUkgY2hhcmFjdGVycywgYXMgYWNjZXB0ZWQgYnkgdGhlIHN0ci5lbmNvZGUgbWV0aG9kLgogICAgQnkgZGVmYXVsdCwgZW5jb2Rpbmc9J3V0Zi04JyAoY2hhcmFjdGVycyBhcmUgZW5jb2RlZCB3aXRoIFVURi04KSwgYW5kCiAgICBlcnJvcnM9J3N0cmljdCcgKHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IpLgogICAgIiIiCiAgICBpZiBpc2luc3RhbmNlKHN0cmluZywgc3RyKToKICAgICAgICBpZiBub3Qgc3RyaW5nOgogICAgICAgICAgICByZXR1cm4gc3RyaW5nCiAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKICAgICAgICAgICAgZW5jb2RpbmcgPSAndXRmLTgnCiAgICAgICAgaWYgZXJyb3JzIGlzIE5vbmU6CiAgICAgICAgICAgIGVycm9ycyA9ICdzdHJpY3QnCiAgICAgICAgc3RyaW5nID0gc3RyaW5nLmVuY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgZWxzZToKICAgICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJxdW90ZSgpIGRvZXNuJ3Qgc3VwcG9ydCAnZW5jb2RpbmcnIGZvciBieXRlcyIpCiAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInF1b3RlKCkgZG9lc24ndCBzdXBwb3J0ICdlcnJvcnMnIGZvciBieXRlcyIpCiAgICByZXR1cm4gcXVvdGVfZnJvbV9ieXRlcyhzdHJpbmcsIHNhZmUpCgpkZWYgcXVvdGVfcGx1cyhzdHJpbmcsIHNhZmU9JycsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKICAgICIiIkxpa2UgcXVvdGUoKSwgYnV0IGFsc28gcmVwbGFjZSAnICcgd2l0aCAnKycsIGFzIHJlcXVpcmVkIGZvciBxdW90aW5nCiAgICBIVE1MIGZvcm0gdmFsdWVzLiBQbHVzIHNpZ25zIGluIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXJlIGVzY2FwZWQgdW5sZXNzCiAgICB0aGV5IGFyZSBpbmNsdWRlZCBpbiBzYWZlLiBJdCBhbHNvIGRvZXMgbm90IGhhdmUgc2FmZSBkZWZhdWx0IHRvICcvJy4KICAgICIiIgogICAgIyBDaGVjayBpZiAnICcgaW4gc3RyaW5nLCB3aGVyZSBzdHJpbmcgbWF5IGVpdGhlciBiZSBhIHN0ciBvciBieXRlcy4gIElmCiAgICAjIHRoZXJlIGFyZSBubyBzcGFjZXMsIHRoZSByZWd1bGFyIHF1b3RlIHdpbGwgcHJvZHVjZSB0aGUgcmlnaHQgYW5zd2VyLgogICAgaWYgKChpc2luc3RhbmNlKHN0cmluZywgc3RyKSBhbmQgJyAnIG5vdCBpbiBzdHJpbmcpIG9yCiAgICAgICAgKGlzaW5zdGFuY2Uoc3RyaW5nLCBieXRlcykgYW5kIGInICcgbm90IGluIHN0cmluZykpOgogICAgICAgIHJldHVybiBxdW90ZShzdHJpbmcsIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCiAgICBpZiBpc2luc3RhbmNlKHNhZmUsIHN0cik6CiAgICAgICAgc3BhY2UgPSAnICcKICAgIGVsc2U6CiAgICAgICAgc3BhY2UgPSBiJyAnCiAgICBzdHJpbmcgPSBxdW90ZShzdHJpbmcsIHNhZmUgKyBzcGFjZSwgZW5jb2RpbmcsIGVycm9ycykKICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgnICcsICcrJykKCiMgRXhwZWN0YXRpb246IEEgdHlwaWNhbCBwcm9ncmFtIGlzIHVubGlrZWx5IHRvIGNyZWF0ZSBtb3JlIHRoYW4gNSBvZiB0aGVzZS4KQGZ1bmN0b29scy5scnVfY2FjaGUKZGVmIF9ieXRlX3F1b3Rlcl9mYWN0b3J5KHNhZmUpOgogICAgcmV0dXJuIF9RdW90ZXIoc2FmZSkuX19nZXRpdGVtX18KCmRlZiBxdW90ZV9mcm9tX2J5dGVzKGJzLCBzYWZlPScvJyk6CiAgICAiIiJMaWtlIHF1b3RlKCksIGJ1dCBhY2NlcHRzIGEgYnl0ZXMgb2JqZWN0IHJhdGhlciB0aGFuIGEgc3RyLCBhbmQgZG9lcwogICAgbm90IHBlcmZvcm0gc3RyaW5nLXRvLWJ5dGVzIGVuY29kaW5nLiAgSXQgYWx3YXlzIHJldHVybnMgYW4gQVNDSUkgc3RyaW5nLgogICAgcXVvdGVfZnJvbV9ieXRlcyhiJ2FiYyBkZWZceDNmJykgLT4gJ2FiYyUyMGRlZiUzZicKICAgICIiIgogICAgaWYgbm90IGlzaW5zdGFuY2UoYnMsIChieXRlcywgYnl0ZWFycmF5KSk6CiAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJxdW90ZV9mcm9tX2J5dGVzKCkgZXhwZWN0ZWQgYnl0ZXMiKQogICAgaWYgbm90IGJzOgogICAgICAgIHJldHVybiAnJwogICAgaWYgaXNpbnN0YW5jZShzYWZlLCBzdHIpOgogICAgICAgICMgTm9ybWFsaXplICdzYWZlJyBieSBjb252ZXJ0aW5nIHRvIGJ5dGVzIGFuZCByZW1vdmluZyBub24tQVNDSUkgY2hhcnMKICAgICAgICBzYWZlID0gc2FmZS5lbmNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpCiAgICBlbHNlOgogICAgICAgICMgTGlzdCBjb21wcmVoZW5zaW9ucyBhcmUgZmFzdGVyIHRoYW4gZ2VuZXJhdG9yIGV4cHJlc3Npb25zLgogICAgICAgIHNhZmUgPSBieXRlcyhbYyBmb3IgYyBpbiBzYWZlIGlmIGMgPCAxMjhdKQogICAgaWYgbm90IGJzLnJzdHJpcChfQUxXQVlTX1NBRkVfQllURVMgKyBzYWZlKToKICAgICAgICByZXR1cm4gYnMuZGVjb2RlKCkKICAgIHF1b3RlciA9IF9ieXRlX3F1b3Rlcl9mYWN0b3J5KHNhZmUpCiAgICByZXR1cm4gJycuam9pbihbcXVvdGVyKGNoYXIpIGZvciBjaGFyIGluIGJzXSkKCmRlZiB1cmxlbmNvZGUocXVlcnksIGRvc2VxPUZhbHNlLCBzYWZlPScnLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwKICAgICAgICAgICAgICBxdW90ZV92aWE9cXVvdGVfcGx1cyk6CiAgICAiIiJFbmNvZGUgYSBkaWN0IG9yIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcyBpbnRvIGEgVVJMIHF1ZXJ5IHN0cmluZy4KCiAgICBJZiBhbnkgdmFsdWVzIGluIHRoZSBxdWVyeSBhcmcgYXJlIHNlcXVlbmNlcyBhbmQgZG9zZXEgaXMgdHJ1ZSwgZWFjaAogICAgc2VxdWVuY2UgZWxlbWVudCBpcyBjb252ZXJ0ZWQgdG8gYSBzZXBhcmF0ZSBwYXJhbWV0ZXIuCgogICAgSWYgdGhlIHF1ZXJ5IGFyZyBpcyBhIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcywgdGhlIG9yZGVyIG9mIHRoZQogICAgcGFyYW1ldGVycyBpbiB0aGUgb3V0cHV0IHdpbGwgbWF0Y2ggdGhlIG9yZGVyIG9mIHBhcmFtZXRlcnMgaW4gdGhlCiAgICBpbnB1dC4KCiAgICBUaGUgY29tcG9uZW50cyBvZiBhIHF1ZXJ5IGFyZyBtYXkgZWFjaCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBieXRlcyB0eXBlLgoKICAgIFRoZSBzYWZlLCBlbmNvZGluZywgYW5kIGVycm9ycyBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgZG93biB0byB0aGUgZnVuY3Rpb24KICAgIHNwZWNpZmllZCBieSBxdW90ZV92aWEgKGVuY29kaW5nIGFuZCBlcnJvcnMgb25seSBpZiBhIGNvbXBvbmVudCBpcyBhIHN0cikuCiAgICAiIiIKCiAgICBpZiBoYXNhdHRyKHF1ZXJ5LCAiaXRlbXMiKToKICAgICAgICBxdWVyeSA9IHF1ZXJ5Lml0ZW1zKCkKICAgIGVsc2U6CiAgICAgICAgIyBJdCdzIGEgYm90aGVyIGF0IHRpbWVzIHRoYXQgc3RyaW5ncyBhbmQgc3RyaW5nLWxpa2Ugb2JqZWN0cyBhcmUKICAgICAgICAjIHNlcXVlbmNlcy4KICAgICAgICB0cnk6CiAgICAgICAgICAgICMgbm9uLXNlcXVlbmNlIGl0ZW1zIHNob3VsZCBub3Qgd29yayB3aXRoIGxlbigpCiAgICAgICAgICAgICMgbm9uLWVtcHR5IHN0cmluZ3Mgd2lsbCBmYWlsIHRoaXMKICAgICAgICAgICAgaWYgbGVuKHF1ZXJ5KSBhbmQgbm90IGlzaW5zdGFuY2UocXVlcnlbMF0sIHR1cGxlKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgogICAgICAgICAgICAjIFplcm8tbGVuZ3RoIHNlcXVlbmNlcyBvZiBhbGwgdHlwZXMgd2lsbCBnZXQgaGVyZSBhbmQgc3VjY2VlZCwKICAgICAgICAgICAgIyBidXQgdGhhdCdzIGEgbWlub3Igbml0LiAgU2luY2UgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICMgYWxsb3dlZCBlbXB0eSBkaWN0cyB0aGF0IHR5cGUgb2YgYmVoYXZpb3IgcHJvYmFibHkgc2hvdWxkIGJlCiAgICAgICAgICAgICMgcHJlc2VydmVkIGZvciBjb25zaXN0ZW5jeQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZXJyOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5vdCBhIHZhbGlkIG5vbi1zdHJpbmcgc2VxdWVuY2UgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIG1hcHBpbmcgb2JqZWN0IikgZnJvbSBlcnIKCiAgICBsID0gW10KICAgIGlmIG5vdCBkb3NlcToKICAgICAgICBmb3IgaywgdiBpbiBxdWVyeToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBieXRlcyk6CiAgICAgICAgICAgICAgICBrID0gcXVvdGVfdmlhKGssIHNhZmUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBrID0gcXVvdGVfdmlhKHN0cihrKSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgYnl0ZXMpOgogICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYSh2LCBzYWZlKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYShzdHIodiksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyB2KQogICAgZWxzZToKICAgICAgICBmb3IgaywgdiBpbiBxdWVyeToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBieXRlcyk6CiAgICAgICAgICAgICAgICBrID0gcXVvdGVfdmlhKGssIHNhZmUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBrID0gcXVvdGVfdmlhKHN0cihrKSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKCiAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgYnl0ZXMpOgogICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYSh2LCBzYWZlKQogICAgICAgICAgICAgICAgbC5hcHBlbmQoayArICc9JyArIHYpCiAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2LCBzdHIpOgogICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYSh2LCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgICAgbC5hcHBlbmQoayArICc9JyArIHYpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIyBJcyB0aGlzIGEgc3VmZmljaWVudCB0ZXN0IGZvciBzZXF1ZW5jZS1uZXNzPwogICAgICAgICAgICAgICAgICAgIHggPSBsZW4odikKICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIyBub3QgYSBzZXF1ZW5jZQogICAgICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEoc3RyKHYpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyB2KQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgc2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICBmb3IgZWx0IGluIHY6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZWx0LCBieXRlcyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQgPSBxdW90ZV92aWEoZWx0LCBzYWZlKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0ID0gcXVvdGVfdmlhKHN0cihlbHQpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZChrICsgJz0nICsgZWx0KQogICAgcmV0dXJuICcmJy5qb2luKGwpCgoKZGVmIHRvX2J5dGVzKHVybCk6CiAgICB3YXJuaW5ncy53YXJuKCJ1cmxsaWIucGFyc2UudG9fYnl0ZXMoKSBpcyBkZXByZWNhdGVkIGFzIG9mIDMuOCIsCiAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgcmV0dXJuIF90b19ieXRlcyh1cmwpCgoKZGVmIF90b19ieXRlcyh1cmwpOgogICAgIiIidG9fYnl0ZXModSJVUkwiKSAtLT4gJ1VSTCcuIiIiCiAgICAjIE1vc3QgVVJMIHNjaGVtZXMgcmVxdWlyZSBBU0NJSS4gSWYgdGhhdCBjaGFuZ2VzLCB0aGUgY29udmVyc2lvbgogICAgIyBjYW4gYmUgcmVsYXhlZC4KICAgICMgWFhYIGdldCByaWQgb2YgdG9fYnl0ZXMoKQogICAgaWYgaXNpbnN0YW5jZSh1cmwsIHN0cik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB1cmwgPSB1cmwuZW5jb2RlKCJBU0NJSSIpLmRlY29kZSgpCiAgICAgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJVUkwgIiArIHJlcHIodXJsKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIikKICAgIHJldHVybiB1cmwKCgpkZWYgdW53cmFwKHVybCk6CiAgICAiIiJUcmFuc2Zvcm0gYSBzdHJpbmcgbGlrZSAnPFVSTDpzY2hlbWU6Ly9ob3N0L3BhdGg+JyBpbnRvICdzY2hlbWU6Ly9ob3N0L3BhdGgnLgoKICAgIFRoZSBzdHJpbmcgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkIGlmIGl0J3Mgbm90IGEgd3JhcHBlZCBVUkwuCiAgICAiIiIKICAgIHVybCA9IHN0cih1cmwpLnN0cmlwKCkKICAgIGlmIHVybFs6MV0gPT0gJzwnIGFuZCB1cmxbLTE6XSA9PSAnPic6CiAgICAgICAgdXJsID0gdXJsWzE6LTFdLnN0cmlwKCkKICAgIGlmIHVybFs6NF0gPT0gJ1VSTDonOgogICAgICAgIHVybCA9IHVybFs0Ol0uc3RyaXAoKQogICAgcmV0dXJuIHVybAoKCmRlZiBzcGxpdHR5cGUodXJsKToKICAgIHdhcm5pbmdzLndhcm4oInVybGxpYi5wYXJzZS5zcGxpdHR5cGUoKSBpcyBkZXByZWNhdGVkIGFzIG9mIDMuOCwgIgogICAgICAgICAgICAgICAgICAidXNlIHVybGxpYi5wYXJzZS51cmxwYXJzZSgpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIHJldHVybiBfc3BsaXR0eXBlKHVybCkKCgpfdHlwZXByb2cgPSBOb25lCmRlZiBfc3BsaXR0eXBlKHVybCk6CiAgICAiIiJzcGxpdHR5cGUoJ3R5cGU6b3BhcXVlc3RyaW5nJykgLS0+ICd0eXBlJywgJ29wYXF1ZXN0cmluZycuIiIiCiAgICBnbG9iYWwgX3R5cGVwcm9nCiAgICBpZiBfdHlwZXByb2cgaXMgTm9uZToKICAgICAgICBfdHlwZXByb2cgPSByZS5jb21waWxlKCcoW14vOl0rKTooLiopJywgcmUuRE9UQUxMKQoKICAgIG1hdGNoID0gX3R5cGVwcm9nLm1hdGNoKHVybCkKICAgIGlmIG1hdGNoOgogICAgICAgIHNjaGVtZSwgZGF0YSA9IG1hdGNoLmdyb3VwcygpCiAgICAgICAgcmV0dXJuIHNjaGVtZS5sb3dlcigpLCBkYXRhCiAgICByZXR1cm4gTm9uZSwgdXJsCgoKZGVmIHNwbGl0aG9zdCh1cmwpOgogICAgd2FybmluZ3Mud2FybigidXJsbGliLnBhcnNlLnNwbGl0aG9zdCgpIGlzIGRlcHJlY2F0ZWQgYXMgb2YgMy44LCAiCiAgICAgICAgICAgICAgICAgICJ1c2UgdXJsbGliLnBhcnNlLnVybHBhcnNlKCkgaW5zdGVhZCIsCiAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgcmV0dXJuIF9zcGxpdGhvc3QodXJsKQoKCl9ob3N0cHJvZyA9IE5vbmUKZGVmIF9zcGxpdGhvc3QodXJsKToKICAgICIiInNwbGl0aG9zdCgnLy9ob3N0Wzpwb3J0XS9wYXRoJykgLS0+ICdob3N0Wzpwb3J0XScsICcvcGF0aCcuIiIiCiAgICBnbG9iYWwgX2hvc3Rwcm9nCiAgICBpZiBfaG9zdHByb2cgaXMgTm9uZToKICAgICAgICBfaG9zdHByb2cgPSByZS5jb21waWxlKCcvLyhbXi8jP10qKSguKiknLCByZS5ET1RBTEwpCgogICAgbWF0Y2ggPSBfaG9zdHByb2cubWF0Y2godXJsKQogICAgaWYgbWF0Y2g6CiAgICAgICAgaG9zdF9wb3J0LCBwYXRoID0gbWF0Y2guZ3JvdXBzKCkKICAgICAgICBpZiBwYXRoIGFuZCBwYXRoWzBdICE9ICcvJzoKICAgICAgICAgICAgcGF0aCA9ICcvJyArIHBhdGgKICAgICAgICByZXR1cm4gaG9zdF9wb3J0LCBwYXRoCiAgICByZXR1cm4gTm9uZSwgdXJsCgoKZGVmIHNwbGl0dXNlcihob3N0KToKICAgIHdhcm5pbmdzLndhcm4oInVybGxpYi5wYXJzZS5zcGxpdHVzZXIoKSBpcyBkZXByZWNhdGVkIGFzIG9mIDMuOCwgIgogICAgICAgICAgICAgICAgICAidXNlIHVybGxpYi5wYXJzZS51cmxwYXJzZSgpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIHJldHVybiBfc3BsaXR1c2VyKGhvc3QpCgoKZGVmIF9zcGxpdHVzZXIoaG9zdCk6CiAgICAiIiJzcGxpdHVzZXIoJ3VzZXJbOnBhc3N3ZF1AaG9zdFs6cG9ydF0nKSAtLT4gJ3VzZXJbOnBhc3N3ZF0nLCAnaG9zdFs6cG9ydF0nLiIiIgogICAgdXNlciwgZGVsaW0sIGhvc3QgPSBob3N0LnJwYXJ0aXRpb24oJ0AnKQogICAgcmV0dXJuICh1c2VyIGlmIGRlbGltIGVsc2UgTm9uZSksIGhvc3QKCgpkZWYgc3BsaXRwYXNzd2QodXNlcik6CiAgICB3YXJuaW5ncy53YXJuKCJ1cmxsaWIucGFyc2Uuc3BsaXRwYXNzd2QoKSBpcyBkZXByZWNhdGVkIGFzIG9mIDMuOCwgIgogICAgICAgICAgICAgICAgICAidXNlIHVybGxpYi5wYXJzZS51cmxwYXJzZSgpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIHJldHVybiBfc3BsaXRwYXNzd2QodXNlcikKCgpkZWYgX3NwbGl0cGFzc3dkKHVzZXIpOgogICAgIiIic3BsaXRwYXNzd2QoJ3VzZXI6cGFzc3dkJykgLT4gJ3VzZXInLCAncGFzc3dkJy4iIiIKICAgIHVzZXIsIGRlbGltLCBwYXNzd2QgPSB1c2VyLnBhcnRpdGlvbignOicpCiAgICByZXR1cm4gdXNlciwgKHBhc3N3ZCBpZiBkZWxpbSBlbHNlIE5vbmUpCgoKZGVmIHNwbGl0cG9ydChob3N0KToKICAgIHdhcm5pbmdzLndhcm4oInVybGxpYi5wYXJzZS5zcGxpdHBvcnQoKSBpcyBkZXByZWNhdGVkIGFzIG9mIDMuOCwgIgogICAgICAgICAgICAgICAgICAidXNlIHVybGxpYi5wYXJzZS51cmxwYXJzZSgpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIHJldHVybiBfc3BsaXRwb3J0KGhvc3QpCgoKIyBzcGxpdHRhZygnL3BhdGgjdGFnJykgLS0+ICcvcGF0aCcsICd0YWcnCl9wb3J0cHJvZyA9IE5vbmUKZGVmIF9zcGxpdHBvcnQoaG9zdCk6CiAgICAiIiJzcGxpdHBvcnQoJ2hvc3Q6cG9ydCcpIC0tPiAnaG9zdCcsICdwb3J0Jy4iIiIKICAgIGdsb2JhbCBfcG9ydHByb2cKICAgIGlmIF9wb3J0cHJvZyBpcyBOb25lOgogICAgICAgIF9wb3J0cHJvZyA9IHJlLmNvbXBpbGUoJyguKik6KFswLTldKiknLCByZS5ET1RBTEwpCgogICAgbWF0Y2ggPSBfcG9ydHByb2cuZnVsbG1hdGNoKGhvc3QpCiAgICBpZiBtYXRjaDoKICAgICAgICBob3N0LCBwb3J0ID0gbWF0Y2guZ3JvdXBzKCkKICAgICAgICBpZiBwb3J0OgogICAgICAgICAgICByZXR1cm4gaG9zdCwgcG9ydAogICAgcmV0dXJuIGhvc3QsIE5vbmUKCgpkZWYgc3BsaXRucG9ydChob3N0LCBkZWZwb3J0PS0xKToKICAgIHdhcm5pbmdzLndhcm4oInVybGxpYi5wYXJzZS5zcGxpdG5wb3J0KCkgaXMgZGVwcmVjYXRlZCBhcyBvZiAzLjgsICIKICAgICAgICAgICAgICAgICAgInVzZSB1cmxsaWIucGFyc2UudXJscGFyc2UoKSBpbnN0ZWFkIiwKICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICByZXR1cm4gX3NwbGl0bnBvcnQoaG9zdCwgZGVmcG9ydCkKCgpkZWYgX3NwbGl0bnBvcnQoaG9zdCwgZGVmcG9ydD0tMSk6CiAgICAiIiJTcGxpdCBob3N0IGFuZCBwb3J0LCByZXR1cm5pbmcgbnVtZXJpYyBwb3J0LgogICAgUmV0dXJuIGdpdmVuIGRlZmF1bHQgcG9ydCBpZiBubyAnOicgZm91bmQ7IGRlZmF1bHRzIHRvIC0xLgogICAgUmV0dXJuIG51bWVyaWNhbCBwb3J0IGlmIGEgdmFsaWQgbnVtYmVyIGlzIGZvdW5kIGFmdGVyICc6Jy4KICAgIFJldHVybiBOb25lIGlmICc6JyBidXQgbm90IGEgdmFsaWQgbnVtYmVyLiIiIgogICAgaG9zdCwgZGVsaW0sIHBvcnQgPSBob3N0LnJwYXJ0aXRpb24oJzonKQogICAgaWYgbm90IGRlbGltOgogICAgICAgIGhvc3QgPSBwb3J0CiAgICBlbGlmIHBvcnQ6CiAgICAgICAgaWYgcG9ydC5pc2RpZ2l0KCkgYW5kIHBvcnQuaXNhc2NpaSgpOgogICAgICAgICAgICBucG9ydCA9IGludChwb3J0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5wb3J0ID0gTm9uZQogICAgICAgIHJldHVybiBob3N0LCBucG9ydAogICAgcmV0dXJuIGhvc3QsIGRlZnBvcnQKCgpkZWYgc3BsaXRxdWVyeSh1cmwpOgogICAgd2FybmluZ3Mud2FybigidXJsbGliLnBhcnNlLnNwbGl0cXVlcnkoKSBpcyBkZXByZWNhdGVkIGFzIG9mIDMuOCwgIgogICAgICAgICAgICAgICAgICAidXNlIHVybGxpYi5wYXJzZS51cmxwYXJzZSgpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIHJldHVybiBfc3BsaXRxdWVyeSh1cmwpCgoKZGVmIF9zcGxpdHF1ZXJ5KHVybCk6CiAgICAiIiJzcGxpdHF1ZXJ5KCcvcGF0aD9xdWVyeScpIC0tPiAnL3BhdGgnLCAncXVlcnknLiIiIgogICAgcGF0aCwgZGVsaW0sIHF1ZXJ5ID0gdXJsLnJwYXJ0aXRpb24oJz8nKQogICAgaWYgZGVsaW06CiAgICAgICAgcmV0dXJuIHBhdGgsIHF1ZXJ5CiAgICByZXR1cm4gdXJsLCBOb25lCgoKZGVmIHNwbGl0dGFnKHVybCk6CiAgICB3YXJuaW5ncy53YXJuKCJ1cmxsaWIucGFyc2Uuc3BsaXR0YWcoKSBpcyBkZXByZWNhdGVkIGFzIG9mIDMuOCwgIgogICAgICAgICAgICAgICAgICAidXNlIHVybGxpYi5wYXJzZS51cmxwYXJzZSgpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIHJldHVybiBfc3BsaXR0YWcodXJsKQoKCmRlZiBfc3BsaXR0YWcodXJsKToKICAgICIiInNwbGl0dGFnKCcvcGF0aCN0YWcnKSAtLT4gJy9wYXRoJywgJ3RhZycuIiIiCiAgICBwYXRoLCBkZWxpbSwgdGFnID0gdXJsLnJwYXJ0aXRpb24oJyMnKQogICAgaWYgZGVsaW06CiAgICAgICAgcmV0dXJuIHBhdGgsIHRhZwogICAgcmV0dXJuIHVybCwgTm9uZQoKCmRlZiBzcGxpdGF0dHIodXJsKToKICAgIHdhcm5pbmdzLndhcm4oInVybGxpYi5wYXJzZS5zcGxpdGF0dHIoKSBpcyBkZXByZWNhdGVkIGFzIG9mIDMuOCwgIgogICAgICAgICAgICAgICAgICAidXNlIHVybGxpYi5wYXJzZS51cmxwYXJzZSgpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIHJldHVybiBfc3BsaXRhdHRyKHVybCkKCgpkZWYgX3NwbGl0YXR0cih1cmwpOgogICAgIiIic3BsaXRhdHRyKCcvcGF0aDthdHRyMT12YWx1ZTE7YXR0cjI9dmFsdWUyOy4uLicpIC0+CiAgICAgICAgJy9wYXRoJywgWydhdHRyMT12YWx1ZTEnLCAnYXR0cjI9dmFsdWUyJywgLi4uXS4iIiIKICAgIHdvcmRzID0gdXJsLnNwbGl0KCc7JykKICAgIHJldHVybiB3b3Jkc1swXSwgd29yZHNbMTpdCgoKZGVmIHNwbGl0dmFsdWUoYXR0cik6CiAgICB3YXJuaW5ncy53YXJuKCJ1cmxsaWIucGFyc2Uuc3BsaXR2YWx1ZSgpIGlzIGRlcHJlY2F0ZWQgYXMgb2YgMy44LCAiCiAgICAgICAgICAgICAgICAgICJ1c2UgdXJsbGliLnBhcnNlLnBhcnNlX3FzbCgpIGluc3RlYWQiLAogICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgIHJldHVybiBfc3BsaXR2YWx1ZShhdHRyKQoKCmRlZiBfc3BsaXR2YWx1ZShhdHRyKToKICAgICIiInNwbGl0dmFsdWUoJ2F0dHI9dmFsdWUnKSAtLT4gJ2F0dHInLCAndmFsdWUnLiIiIgogICAgYXR0ciwgZGVsaW0sIHZhbHVlID0gYXR0ci5wYXJ0aXRpb24oJz0nKQogICAgcmV0dXJuIGF0dHIsICh2YWx1ZSBpZiBkZWxpbSBlbHNlIE5vbmUpClBLAwQUAAAAAAADIKNWcN4dxlGOAQBRjgEAEQAAAHVybGxpYi9yZXF1ZXN0LnB5IiIiQW4gZXh0ZW5zaWJsZSBsaWJyYXJ5IGZvciBvcGVuaW5nIFVSTHMgdXNpbmcgYSB2YXJpZXR5IG9mIHByb3RvY29scwoKVGhlIHNpbXBsZXN0IHdheSB0byB1c2UgdGhpcyBtb2R1bGUgaXMgdG8gY2FsbCB0aGUgdXJsb3BlbiBmdW5jdGlvbiwKd2hpY2ggYWNjZXB0cyBhIHN0cmluZyBjb250YWluaW5nIGEgVVJMIG9yIGEgUmVxdWVzdCBvYmplY3QgKGRlc2NyaWJlZApiZWxvdykuICBJdCBvcGVucyB0aGUgVVJMIGFuZCByZXR1cm5zIHRoZSByZXN1bHRzIGFzIGZpbGUtbGlrZQpvYmplY3Q7IHRoZSByZXR1cm5lZCBvYmplY3QgaGFzIHNvbWUgZXh0cmEgbWV0aG9kcyBkZXNjcmliZWQgYmVsb3cuCgpUaGUgT3BlbmVyRGlyZWN0b3IgbWFuYWdlcyBhIGNvbGxlY3Rpb24gb2YgSGFuZGxlciBvYmplY3RzIHRoYXQgZG8KYWxsIHRoZSBhY3R1YWwgd29yay4gIEVhY2ggSGFuZGxlciBpbXBsZW1lbnRzIGEgcGFydGljdWxhciBwcm90b2NvbCBvcgpvcHRpb24uICBUaGUgT3BlbmVyRGlyZWN0b3IgaXMgYSBjb21wb3NpdGUgb2JqZWN0IHRoYXQgaW52b2tlcyB0aGUKSGFuZGxlcnMgbmVlZGVkIHRvIG9wZW4gdGhlIHJlcXVlc3RlZCBVUkwuICBGb3IgZXhhbXBsZSwgdGhlCkhUVFBIYW5kbGVyIHBlcmZvcm1zIEhUVFAgR0VUIGFuZCBQT1NUIHJlcXVlc3RzIGFuZCBkZWFscyB3aXRoCm5vbi1lcnJvciByZXR1cm5zLiAgVGhlIEhUVFBSZWRpcmVjdEhhbmRsZXIgYXV0b21hdGljYWxseSBkZWFscyB3aXRoCkhUVFAgMzAxLCAzMDIsIDMwMywgMzA3LCBhbmQgMzA4IHJlZGlyZWN0IGVycm9ycywgYW5kIHRoZQpIVFRQRGlnZXN0QXV0aEhhbmRsZXIgZGVhbHMgd2l0aCBkaWdlc3QgYXV0aGVudGljYXRpb24uCgp1cmxvcGVuKHVybCwgZGF0YT1Ob25lKSAtLSBCYXNpYyB1c2FnZSBpcyB0aGUgc2FtZSBhcyBvcmlnaW5hbAp1cmxsaWIuICBwYXNzIHRoZSB1cmwgYW5kIG9wdGlvbmFsbHkgZGF0YSB0byBwb3N0IHRvIGFuIEhUVFAgVVJMLCBhbmQKZ2V0IGEgZmlsZS1saWtlIG9iamVjdCBiYWNrLiAgT25lIGRpZmZlcmVuY2UgaXMgdGhhdCB5b3UgY2FuIGFsc28gcGFzcwphIFJlcXVlc3QgaW5zdGFuY2UgaW5zdGVhZCBvZiBVUkwuICBSYWlzZXMgYSBVUkxFcnJvciAoc3ViY2xhc3Mgb2YKT1NFcnJvcik7IGZvciBIVFRQIGVycm9ycywgcmFpc2VzIGFuIEhUVFBFcnJvciwgd2hpY2ggY2FuIGFsc28gYmUKdHJlYXRlZCBhcyBhIHZhbGlkIHJlc3BvbnNlLgoKYnVpbGRfb3BlbmVyIC0tIEZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIG5ldyBPcGVuZXJEaXJlY3RvciBpbnN0YW5jZS4KV2lsbCBpbnN0YWxsIHRoZSBkZWZhdWx0IGhhbmRsZXJzLiAgQWNjZXB0cyBvbmUgb3IgbW9yZSBIYW5kbGVycyBhcwphcmd1bWVudHMsIGVpdGhlciBpbnN0YW5jZXMgb3IgSGFuZGxlciBjbGFzc2VzIHRoYXQgaXQgd2lsbAppbnN0YW50aWF0ZS4gIElmIG9uZSBvZiB0aGUgYXJndW1lbnQgaXMgYSBzdWJjbGFzcyBvZiB0aGUgZGVmYXVsdApoYW5kbGVyLCB0aGUgYXJndW1lbnQgd2lsbCBiZSBpbnN0YWxsZWQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdC4KCmluc3RhbGxfb3BlbmVyIC0tIEluc3RhbGxzIGEgbmV3IG9wZW5lciBhcyB0aGUgZGVmYXVsdCBvcGVuZXIuCgpvYmplY3RzIG9mIGludGVyZXN0OgoKT3BlbmVyRGlyZWN0b3IgLS0gU2V0cyB1cCB0aGUgVXNlciBBZ2VudCBhcyB0aGUgUHl0aG9uLXVybGxpYiBjbGllbnQgYW5kIG1hbmFnZXMKdGhlIEhhbmRsZXIgY2xhc3Nlcywgd2hpbGUgZGVhbGluZyB3aXRoIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuCgpSZXF1ZXN0IC0tIEFuIG9iamVjdCB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgc3RhdGUgb2YgYSByZXF1ZXN0LiAgVGhlCnN0YXRlIGNhbiBiZSBhcyBzaW1wbGUgYXMgdGhlIFVSTC4gIEl0IGNhbiBhbHNvIGluY2x1ZGUgZXh0cmEgSFRUUApoZWFkZXJzLCBlLmcuIGEgVXNlci1BZ2VudC4KCkJhc2VIYW5kbGVyIC0tCgppbnRlcm5hbHM6CkJhc2VIYW5kbGVyIGFuZCBwYXJlbnQKX2NhbGxfY2hhaW4gY29udmVudGlvbnMKCkV4YW1wbGUgdXNhZ2U6CgppbXBvcnQgdXJsbGliLnJlcXVlc3QKCiMgc2V0IHVwIGF1dGhlbnRpY2F0aW9uIGluZm8KYXV0aGluZm8gPSB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcigpCmF1dGhpbmZvLmFkZF9wYXNzd29yZChyZWFsbT0nUERRIEFwcGxpY2F0aW9uJywKICAgICAgICAgICAgICAgICAgICAgIHVyaT0naHR0cHM6Ly9tYWhsZXI6ODA5Mi9zaXRlLXVwZGF0ZXMucHknLAogICAgICAgICAgICAgICAgICAgICAgdXNlcj0na2xlbScsCiAgICAgICAgICAgICAgICAgICAgICBwYXNzd2Q9J2dlaGVpbSRwYXJvbGUnKQoKcHJveHlfc3VwcG9ydCA9IHVybGxpYi5yZXF1ZXN0LlByb3h5SGFuZGxlcih7Imh0dHAiIDogImh0dHA6Ly9haGFkLWhhYW06MzEyOCJ9KQoKIyBidWlsZCBhIG5ldyBvcGVuZXIgdGhhdCBhZGRzIGF1dGhlbnRpY2F0aW9uIGFuZCBjYWNoaW5nIEZUUCBoYW5kbGVycwpvcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIocHJveHlfc3VwcG9ydCwgYXV0aGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC5DYWNoZUZUUEhhbmRsZXIpCgojIGluc3RhbGwgaXQKdXJsbGliLnJlcXVlc3QuaW5zdGFsbF9vcGVuZXIob3BlbmVyKQoKZiA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oJ2h0dHBzOi8vd3d3LnB5dGhvbi5vcmcvJykKIiIiCgojIFhYWCBpc3N1ZXM6CiMgSWYgYW4gYXV0aGVudGljYXRpb24gZXJyb3IgaGFuZGxlciB0aGF0IHRyaWVzIHRvIHBlcmZvcm0KIyBhdXRoZW50aWNhdGlvbiBmb3Igc29tZSByZWFzb24gYnV0IGZhaWxzLCBob3cgc2hvdWxkIHRoZSBlcnJvciBiZQojIHNpZ25hbGxlZD8gIFRoZSBjbGllbnQgbmVlZHMgdG8ga25vdyB0aGUgSFRUUCBlcnJvciBjb2RlLiAgQnV0IGlmCiMgdGhlIGhhbmRsZXIga25vd3MgdGhhdCB0aGUgcHJvYmxlbSB3YXMsIGUuZy4sIHRoYXQgaXQgZGlkbid0IGtub3cKIyB0aGF0IGhhc2ggYWxnbyB0aGF0IHJlcXVlc3RlZCBpbiB0aGUgY2hhbGxlbmdlLCBpdCB3b3VsZCBiZSBnb29kIHRvCiMgcGFzcyB0aGF0IGluZm9ybWF0aW9uIGFsb25nIHRvIHRoZSBjbGllbnQsIHRvby4KIyBmdHAgZXJyb3JzIGFyZW4ndCBoYW5kbGVkIGNsZWFubHkKIyBjaGVjayBkaWdlc3QgYWdhaW5zdCBjb3JyZWN0IChpLmUuIG5vbi1hcGFjaGUpIGltcGxlbWVudGF0aW9uCgojIFBvc3NpYmxlIGV4dGVuc2lvbnM6CiMgY29tcGxleCBwcm94aWVzICBYWFggbm90IHN1cmUgd2hhdCBleGFjdGx5IHdhcyBtZWFudCBieSB0aGlzCiMgYWJzdHJhY3QgZmFjdG9yeSBmb3Igb3BlbmVyCgppbXBvcnQgYmFzZTY0CmltcG9ydCBiaXNlY3QKaW1wb3J0IGVtYWlsCmltcG9ydCBoYXNobGliCmltcG9ydCBodHRwLmNsaWVudAppbXBvcnQgaW8KaW1wb3J0IG9zCmltcG9ydCBwb3NpeHBhdGgKaW1wb3J0IHJlCmltcG9ydCBzb2NrZXQKaW1wb3J0IHN0cmluZwppbXBvcnQgc3lzCmltcG9ydCB0aW1lCmltcG9ydCB0ZW1wZmlsZQppbXBvcnQgY29udGV4dGxpYgppbXBvcnQgd2FybmluZ3MKCgpmcm9tIHVybGxpYi5lcnJvciBpbXBvcnQgVVJMRXJyb3IsIEhUVFBFcnJvciwgQ29udGVudFRvb1Nob3J0RXJyb3IKZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0ICgKICAgIHVybHBhcnNlLCB1cmxzcGxpdCwgdXJsam9pbiwgdW53cmFwLCBxdW90ZSwgdW5xdW90ZSwKICAgIF9zcGxpdHR5cGUsIF9zcGxpdGhvc3QsIF9zcGxpdHBvcnQsIF9zcGxpdHVzZXIsIF9zcGxpdHBhc3N3ZCwKICAgIF9zcGxpdGF0dHIsIF9zcGxpdHF1ZXJ5LCBfc3BsaXR2YWx1ZSwgX3NwbGl0dGFnLCBfdG9fYnl0ZXMsCiAgICB1bnF1b3RlX3RvX2J5dGVzLCB1cmx1bnBhcnNlKQpmcm9tIHVybGxpYi5yZXNwb25zZSBpbXBvcnQgYWRkaW5mb3VybCwgYWRkY2xvc2Vob29rCgojIGNoZWNrIGZvciBTU0wKdHJ5OgogICAgaW1wb3J0IHNzbApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBfaGF2ZV9zc2wgPSBGYWxzZQplbHNlOgogICAgX2hhdmVfc3NsID0gVHJ1ZQoKX19hbGxfXyA9IFsKICAgICMgQ2xhc3NlcwogICAgJ1JlcXVlc3QnLCAnT3BlbmVyRGlyZWN0b3InLCAnQmFzZUhhbmRsZXInLCAnSFRUUERlZmF1bHRFcnJvckhhbmRsZXInLAogICAgJ0hUVFBSZWRpcmVjdEhhbmRsZXInLCAnSFRUUENvb2tpZVByb2Nlc3NvcicsICdQcm94eUhhbmRsZXInLAogICAgJ0hUVFBQYXNzd29yZE1ncicsICdIVFRQUGFzc3dvcmRNZ3JXaXRoRGVmYXVsdFJlYWxtJywKICAgICdIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoJywgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsCiAgICAnSFRUUEJhc2ljQXV0aEhhbmRsZXInLCAnUHJveHlCYXNpY0F1dGhIYW5kbGVyJywgJ0Fic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXInLAogICAgJ0hUVFBEaWdlc3RBdXRoSGFuZGxlcicsICdQcm94eURpZ2VzdEF1dGhIYW5kbGVyJywgJ0hUVFBIYW5kbGVyJywKICAgICdGaWxlSGFuZGxlcicsICdGVFBIYW5kbGVyJywgJ0NhY2hlRlRQSGFuZGxlcicsICdEYXRhSGFuZGxlcicsCiAgICAnVW5rbm93bkhhbmRsZXInLCAnSFRUUEVycm9yUHJvY2Vzc29yJywKICAgICMgRnVuY3Rpb25zCiAgICAndXJsb3BlbicsICdpbnN0YWxsX29wZW5lcicsICdidWlsZF9vcGVuZXInLAogICAgJ3BhdGhuYW1lMnVybCcsICd1cmwycGF0aG5hbWUnLCAnZ2V0cHJveGllcycsCiAgICAjIExlZ2FjeSBpbnRlcmZhY2UKICAgICd1cmxyZXRyaWV2ZScsICd1cmxjbGVhbnVwJywgJ1VSTG9wZW5lcicsICdGYW5jeVVSTG9wZW5lcicsCl0KCiMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50Cl9fdmVyc2lvbl9fID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCgpfb3BlbmVyID0gTm9uZQpkZWYgdXJsb3Blbih1cmwsIGRhdGE9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSwgY2FkZWZhdWx0PUZhbHNlLCBjb250ZXh0PU5vbmUpOgogICAgJycnT3BlbiB0aGUgVVJMIHVybCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIFJlcXVlc3Qgb2JqZWN0LgoKICAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvCiAgICB0aGUgc2VydmVyLCBvciBOb25lIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICBTZWUgUmVxdWVzdCBmb3IKICAgIGRldGFpbHMuCgogICAgdXJsbGliLnJlcXVlc3QgbW9kdWxlIHVzZXMgSFRUUC8xLjEgYW5kIGluY2x1ZGVzIGEgIkNvbm5lY3Rpb246Y2xvc2UiCiAgICBoZWFkZXIgaW4gaXRzIEhUVFAgcmVxdWVzdHMuCgogICAgVGhlIG9wdGlvbmFsICp0aW1lb3V0KiBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgdGltZW91dCBpbiBzZWNvbmRzIGZvcgogICAgYmxvY2tpbmcgb3BlcmF0aW9ucyBsaWtlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIG5vdCBzcGVjaWZpZWQsIHRoZQogICAgZ2xvYmFsIGRlZmF1bHQgdGltZW91dCBzZXR0aW5nIHdpbGwgYmUgdXNlZCkuIFRoaXMgb25seSB3b3JrcyBmb3IgSFRUUCwKICAgIEhUVFBTIGFuZCBGVFAgY29ubmVjdGlvbnMuCgogICAgSWYgKmNvbnRleHQqIGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlIGRlc2NyaWJpbmcKICAgIHRoZSB2YXJpb3VzIFNTTCBvcHRpb25zLiBTZWUgSFRUUFNDb25uZWN0aW9uIGZvciBtb3JlIGRldGFpbHMuCgogICAgVGhlIG9wdGlvbmFsICpjYWZpbGUqIGFuZCAqY2FwYXRoKiBwYXJhbWV0ZXJzIHNwZWNpZnkgYSBzZXQgb2YgdHJ1c3RlZCBDQQogICAgY2VydGlmaWNhdGVzIGZvciBIVFRQUyByZXF1ZXN0cy4gY2FmaWxlIHNob3VsZCBwb2ludCB0byBhIHNpbmdsZSBmaWxlCiAgICBjb250YWluaW5nIGEgYnVuZGxlIG9mIENBIGNlcnRpZmljYXRlcywgd2hlcmVhcyBjYXBhdGggc2hvdWxkIHBvaW50IHRvIGEKICAgIGRpcmVjdG9yeSBvZiBoYXNoZWQgY2VydGlmaWNhdGUgZmlsZXMuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluCiAgICBzc2wuU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoKS4KCiAgICBUaGUgKmNhZGVmYXVsdCogcGFyYW1ldGVyIGlzIGlnbm9yZWQuCgoKICAgIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYW4gb2JqZWN0IHdoaWNoIGNhbiB3b3JrIGFzIGEKICAgIGNvbnRleHQgbWFuYWdlciBhbmQgaGFzIHRoZSBwcm9wZXJ0aWVzIHVybCwgaGVhZGVycywgYW5kIHN0YXR1cy4KICAgIFNlZSB1cmxsaWIucmVzcG9uc2UuYWRkaW5mb3VybCBmb3IgbW9yZSBkZXRhaWwgb24gdGhlc2UgcHJvcGVydGllcy4KCiAgICBGb3IgSFRUUCBhbmQgSFRUUFMgVVJMcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlCiAgICBvYmplY3Qgc2xpZ2h0bHkgbW9kaWZpZWQuIEluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBuZXcgbWV0aG9kcyBhYm92ZSwgdGhlCiAgICBtc2cgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIHRoZSByZWFzb24gYXR0cmlidXRlIC0tLQogICAgdGhlIHJlYXNvbiBwaHJhc2UgcmV0dXJuZWQgYnkgdGhlIHNlcnZlciAtLS0gaW5zdGVhZCBvZiB0aGUgcmVzcG9uc2UKICAgIGhlYWRlcnMgYXMgaXQgaXMgc3BlY2lmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBIVFRQUmVzcG9uc2UuCgogICAgRm9yIEZUUCwgZmlsZSwgYW5kIGRhdGEgVVJMcyBhbmQgcmVxdWVzdHMgZXhwbGljaXRseSBoYW5kbGVkIGJ5IGxlZ2FjeQogICAgVVJMb3BlbmVyIGFuZCBGYW5jeVVSTG9wZW5lciBjbGFzc2VzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYQogICAgdXJsbGliLnJlc3BvbnNlLmFkZGluZm91cmwgb2JqZWN0LgoKICAgIE5vdGUgdGhhdCBOb25lIG1heSBiZSByZXR1cm5lZCBpZiBubyBoYW5kbGVyIGhhbmRsZXMgdGhlIHJlcXVlc3QgKHRob3VnaAogICAgdGhlIGRlZmF1bHQgaW5zdGFsbGVkIGdsb2JhbCBPcGVuZXJEaXJlY3RvciB1c2VzIFVua25vd25IYW5kbGVyIHRvIGVuc3VyZQogICAgdGhpcyBuZXZlciBoYXBwZW5zKS4KCiAgICBJbiBhZGRpdGlvbiwgaWYgcHJveHkgc2V0dGluZ3MgYXJlIGRldGVjdGVkIChmb3IgZXhhbXBsZSwgd2hlbiBhICpfcHJveHkKICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGxpa2UgaHR0cF9wcm94eSBpcyBzZXQpLCBQcm94eUhhbmRsZXIgaXMgZGVmYXVsdAogICAgaW5zdGFsbGVkIGFuZCBtYWtlcyBzdXJlIHRoZSByZXF1ZXN0cyBhcmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwcm94eS4KCiAgICAnJycKICAgIGdsb2JhbCBfb3BlbmVyCiAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGVmYXVsdDoKICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICB3YXJuaW5ncy53YXJuKCJjYWZpbGUsIGNhcGF0aCBhbmQgY2FkZWZhdWx0IGFyZSBkZXByZWNhdGVkLCB1c2UgYSAiCiAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZC4iLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICJZb3UgY2FuJ3QgcGFzcyBib3RoIGNvbnRleHQgYW5kIGFueSBvZiBjYWZpbGUsIGNhcGF0aCwgYW5kICIKICAgICAgICAgICAgICAgICJjYWRlZmF1bHQiCiAgICAgICAgICAgICkKICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTU0wgc3VwcG9ydCBub3QgYXZhaWxhYmxlJykKICAgICAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc3NsLlB1cnBvc2UuU0VSVkVSX0FVVEgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1jYWZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGF0aD1jYXBhdGgpCiAgICAgICAgIyBzZW5kIEFMUE4gZXh0ZW5zaW9uIHRvIGluZGljYXRlIEhUVFAvMS4xIHByb3RvY29sCiAgICAgICAgY29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMoWydodHRwLzEuMSddKQogICAgICAgIGh0dHBzX2hhbmRsZXIgPSBIVFRQU0hhbmRsZXIoY29udGV4dD1jb250ZXh0KQogICAgICAgIG9wZW5lciA9IGJ1aWxkX29wZW5lcihodHRwc19oYW5kbGVyKQogICAgZWxpZiBjb250ZXh0OgogICAgICAgIGh0dHBzX2hhbmRsZXIgPSBIVFRQU0hhbmRsZXIoY29udGV4dD1jb250ZXh0KQogICAgICAgIG9wZW5lciA9IGJ1aWxkX29wZW5lcihodHRwc19oYW5kbGVyKQogICAgZWxpZiBfb3BlbmVyIGlzIE5vbmU6CiAgICAgICAgX29wZW5lciA9IG9wZW5lciA9IGJ1aWxkX29wZW5lcigpCiAgICBlbHNlOgogICAgICAgIG9wZW5lciA9IF9vcGVuZXIKICAgIHJldHVybiBvcGVuZXIub3Blbih1cmwsIGRhdGEsIHRpbWVvdXQpCgpkZWYgaW5zdGFsbF9vcGVuZXIob3BlbmVyKToKICAgIGdsb2JhbCBfb3BlbmVyCiAgICBfb3BlbmVyID0gb3BlbmVyCgpfdXJsX3RlbXBmaWxlcyA9IFtdCmRlZiB1cmxyZXRyaWV2ZSh1cmwsIGZpbGVuYW1lPU5vbmUsIHJlcG9ydGhvb2s9Tm9uZSwgZGF0YT1Ob25lKToKICAgICIiIgogICAgUmV0cmlldmUgYSBVUkwgaW50byBhIHRlbXBvcmFyeSBsb2NhdGlvbiBvbiBkaXNrLgoKICAgIFJlcXVpcmVzIGEgVVJMIGFyZ3VtZW50LiBJZiBhIGZpbGVuYW1lIGlzIHBhc3NlZCwgaXQgaXMgdXNlZCBhcwogICAgdGhlIHRlbXBvcmFyeSBmaWxlIGxvY2F0aW9uLiBUaGUgcmVwb3J0aG9vayBhcmd1bWVudCBzaG91bGQgYmUKICAgIGEgY2FsbGFibGUgdGhhdCBhY2NlcHRzIGEgYmxvY2sgbnVtYmVyLCBhIHJlYWQgc2l6ZSwgYW5kIHRoZQogICAgdG90YWwgZmlsZSBzaXplIG9mIHRoZSBVUkwgdGFyZ2V0LiBUaGUgZGF0YSBhcmd1bWVudCBzaG91bGQgYmUKICAgIHZhbGlkIFVSTCBlbmNvZGVkIGRhdGEuCgogICAgSWYgYSBmaWxlbmFtZSBpcyBwYXNzZWQgYW5kIHRoZSBVUkwgcG9pbnRzIHRvIGEgbG9jYWwgcmVzb3VyY2UsCiAgICB0aGUgcmVzdWx0IGlzIGEgY29weSBmcm9tIGxvY2FsIGZpbGUgdG8gbmV3IGZpbGUuCgogICAgUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhdGggdG8gdGhlIG5ld2x5IGNyZWF0ZWQKICAgIGRhdGEgZmlsZSBhcyB3ZWxsIGFzIHRoZSByZXN1bHRpbmcgSFRUUE1lc3NhZ2Ugb2JqZWN0LgogICAgIiIiCiAgICB1cmxfdHlwZSwgcGF0aCA9IF9zcGxpdHR5cGUodXJsKQoKICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKHVybG9wZW4odXJsLCBkYXRhKSkgYXMgZnA6CiAgICAgICAgaGVhZGVycyA9IGZwLmluZm8oKQoKICAgICAgICAjIEp1c3QgcmV0dXJuIHRoZSBsb2NhbCBwYXRoIGFuZCB0aGUgImhlYWRlcnMiIGZvciBmaWxlOi8vCiAgICAgICAgIyBVUkxzLiBObyBzZW5zZSBpbiBwZXJmb3JtaW5nIGEgY29weSB1bmxlc3MgcmVxdWVzdGVkLgogICAgICAgIGlmIHVybF90eXBlID09ICJmaWxlIiBhbmQgbm90IGZpbGVuYW1lOgogICAgICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKSwgaGVhZGVycwoKICAgICAgICAjIEhhbmRsZSB0ZW1wb3JhcnkgZmlsZSBzZXR1cC4KICAgICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgICAgdGZwID0gb3BlbihmaWxlbmFtZSwgJ3diJykKICAgICAgICBlbHNlOgogICAgICAgICAgICB0ZnAgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKQogICAgICAgICAgICBmaWxlbmFtZSA9IHRmcC5uYW1lCiAgICAgICAgICAgIF91cmxfdGVtcGZpbGVzLmFwcGVuZChmaWxlbmFtZSkKCiAgICAgICAgd2l0aCB0ZnA6CiAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVuYW1lLCBoZWFkZXJzCiAgICAgICAgICAgIGJzID0gMTAyNCo4CiAgICAgICAgICAgIHNpemUgPSAtMQogICAgICAgICAgICByZWFkID0gMAogICAgICAgICAgICBibG9ja251bSA9IDAKICAgICAgICAgICAgaWYgImNvbnRlbnQtbGVuZ3RoIiBpbiBoZWFkZXJzOgogICAgICAgICAgICAgICAgc2l6ZSA9IGludChoZWFkZXJzWyJDb250ZW50LUxlbmd0aCJdKQoKICAgICAgICAgICAgaWYgcmVwb3J0aG9vazoKICAgICAgICAgICAgICAgIHJlcG9ydGhvb2soYmxvY2tudW0sIGJzLCBzaXplKQoKICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgIGJsb2NrID0gZnAucmVhZChicykKICAgICAgICAgICAgICAgIGlmIG5vdCBibG9jazoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgcmVhZCArPSBsZW4oYmxvY2spCiAgICAgICAgICAgICAgICB0ZnAud3JpdGUoYmxvY2spCiAgICAgICAgICAgICAgICBibG9ja251bSArPSAxCiAgICAgICAgICAgICAgICBpZiByZXBvcnRob29rOgogICAgICAgICAgICAgICAgICAgIHJlcG9ydGhvb2soYmxvY2tudW0sIGJzLCBzaXplKQoKICAgIGlmIHNpemUgPj0gMCBhbmQgcmVhZCA8IHNpemU6CiAgICAgICAgcmFpc2UgQ29udGVudFRvb1Nob3J0RXJyb3IoCiAgICAgICAgICAgICJyZXRyaWV2YWwgaW5jb21wbGV0ZTogZ290IG9ubHkgJWkgb3V0IG9mICVpIGJ5dGVzIgogICAgICAgICAgICAlIChyZWFkLCBzaXplKSwgcmVzdWx0KQoKICAgIHJldHVybiByZXN1bHQKCmRlZiB1cmxjbGVhbnVwKCk6CiAgICAiIiJDbGVhbiB1cCB0ZW1wb3JhcnkgZmlsZXMgZnJvbSB1cmxyZXRyaWV2ZSBjYWxscy4iIiIKICAgIGZvciB0ZW1wX2ZpbGUgaW4gX3VybF90ZW1wZmlsZXM6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBvcy51bmxpbmsodGVtcF9maWxlKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBwYXNzCgogICAgZGVsIF91cmxfdGVtcGZpbGVzWzpdCiAgICBnbG9iYWwgX29wZW5lcgogICAgaWYgX29wZW5lcjoKICAgICAgICBfb3BlbmVyID0gTm9uZQoKIyBjb3BpZWQgZnJvbSBjb29raWVsaWIucHkKX2N1dF9wb3J0X3JlID0gcmUuY29tcGlsZShyIjpcZCskIiwgcmUuQVNDSUkpCmRlZiByZXF1ZXN0X2hvc3QocmVxdWVzdCk6CiAgICAiIiJSZXR1cm4gcmVxdWVzdC1ob3N0LCBhcyBkZWZpbmVkIGJ5IFJGQyAyOTY1LgoKICAgIFZhcmlhdGlvbiBmcm9tIFJGQzogcmV0dXJuZWQgdmFsdWUgaXMgbG93ZXJjYXNlZCwgZm9yIGNvbnZlbmllbnQKICAgIGNvbXBhcmlzb24uCgogICAgIiIiCiAgICB1cmwgPSByZXF1ZXN0LmZ1bGxfdXJsCiAgICBob3N0ID0gdXJscGFyc2UodXJsKVsxXQogICAgaWYgaG9zdCA9PSAiIjoKICAgICAgICBob3N0ID0gcmVxdWVzdC5nZXRfaGVhZGVyKCJIb3N0IiwgIiIpCgogICAgIyByZW1vdmUgcG9ydCwgaWYgcHJlc2VudAogICAgaG9zdCA9IF9jdXRfcG9ydF9yZS5zdWIoIiIsIGhvc3QsIDEpCiAgICByZXR1cm4gaG9zdC5sb3dlcigpCgpjbGFzcyBSZXF1ZXN0OgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRhdGE9Tm9uZSwgaGVhZGVycz17fSwKICAgICAgICAgICAgICAgICBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlLAogICAgICAgICAgICAgICAgIG1ldGhvZD1Ob25lKToKICAgICAgICBzZWxmLmZ1bGxfdXJsID0gdXJsCiAgICAgICAgc2VsZi5oZWFkZXJzID0ge30KICAgICAgICBzZWxmLnVucmVkaXJlY3RlZF9oZHJzID0ge30KICAgICAgICBzZWxmLl9kYXRhID0gTm9uZQogICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKICAgICAgICBzZWxmLl90dW5uZWxfaG9zdCA9IE5vbmUKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBoZWFkZXJzLml0ZW1zKCk6CiAgICAgICAgICAgIHNlbGYuYWRkX2hlYWRlcihrZXksIHZhbHVlKQogICAgICAgIGlmIG9yaWdpbl9yZXFfaG9zdCBpcyBOb25lOgogICAgICAgICAgICBvcmlnaW5fcmVxX2hvc3QgPSByZXF1ZXN0X2hvc3Qoc2VsZikKICAgICAgICBzZWxmLm9yaWdpbl9yZXFfaG9zdCA9IG9yaWdpbl9yZXFfaG9zdAogICAgICAgIHNlbGYudW52ZXJpZmlhYmxlID0gdW52ZXJpZmlhYmxlCiAgICAgICAgaWYgbWV0aG9kOgogICAgICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGZ1bGxfdXJsKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZnJhZ21lbnQ6CiAgICAgICAgICAgIHJldHVybiAne30je30nLmZvcm1hdChzZWxmLl9mdWxsX3VybCwgc2VsZi5mcmFnbWVudCkKICAgICAgICByZXR1cm4gc2VsZi5fZnVsbF91cmwKCiAgICBAZnVsbF91cmwuc2V0dGVyCiAgICBkZWYgZnVsbF91cmwoc2VsZiwgdXJsKToKICAgICAgICAjIHVud3JhcCgnPFVSTDp0eXBlOi8vaG9zdC9wYXRoPicpIC0tPiAndHlwZTovL2hvc3QvcGF0aCcKICAgICAgICBzZWxmLl9mdWxsX3VybCA9IHVud3JhcCh1cmwpCiAgICAgICAgc2VsZi5fZnVsbF91cmwsIHNlbGYuZnJhZ21lbnQgPSBfc3BsaXR0YWcoc2VsZi5fZnVsbF91cmwpCiAgICAgICAgc2VsZi5fcGFyc2UoKQoKICAgIEBmdWxsX3VybC5kZWxldGVyCiAgICBkZWYgZnVsbF91cmwoc2VsZik6CiAgICAgICAgc2VsZi5fZnVsbF91cmwgPSBOb25lCiAgICAgICAgc2VsZi5mcmFnbWVudCA9IE5vbmUKICAgICAgICBzZWxmLnNlbGVjdG9yID0gJycKCiAgICBAcHJvcGVydHkKICAgIGRlZiBkYXRhKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9kYXRhCgogICAgQGRhdGEuc2V0dGVyCiAgICBkZWYgZGF0YShzZWxmLCBkYXRhKToKICAgICAgICBpZiBkYXRhICE9IHNlbGYuX2RhdGE6CiAgICAgICAgICAgIHNlbGYuX2RhdGEgPSBkYXRhCiAgICAgICAgICAgICMgaXNzdWUgMTY0NjQKICAgICAgICAgICAgIyBpZiB3ZSBjaGFuZ2UgZGF0YSB3ZSBuZWVkIHRvIHJlbW92ZSBjb250ZW50LWxlbmd0aCBoZWFkZXIKICAgICAgICAgICAgIyAoY2F1c2UgaXQncyBtb3N0IHByb2JhYmx5IGNhbGN1bGF0ZWQgZm9yIHByZXZpb3VzIHZhbHVlKQogICAgICAgICAgICBpZiBzZWxmLmhhc19oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIik6CiAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZV9oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIikKCiAgICBAZGF0YS5kZWxldGVyCiAgICBkZWYgZGF0YShzZWxmKToKICAgICAgICBzZWxmLmRhdGEgPSBOb25lCgogICAgZGVmIF9wYXJzZShzZWxmKToKICAgICAgICBzZWxmLnR5cGUsIHJlc3QgPSBfc3BsaXR0eXBlKHNlbGYuX2Z1bGxfdXJsKQogICAgICAgIGlmIHNlbGYudHlwZSBpcyBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIHVybCB0eXBlOiAlciIgJSBzZWxmLmZ1bGxfdXJsKQogICAgICAgIHNlbGYuaG9zdCwgc2VsZi5zZWxlY3RvciA9IF9zcGxpdGhvc3QocmVzdCkKICAgICAgICBpZiBzZWxmLmhvc3Q6CiAgICAgICAgICAgIHNlbGYuaG9zdCA9IHVucXVvdGUoc2VsZi5ob3N0KQoKICAgIGRlZiBnZXRfbWV0aG9kKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kLiIiIgogICAgICAgIGRlZmF1bHRfbWV0aG9kID0gIlBPU1QiIGlmIHNlbGYuZGF0YSBpcyBub3QgTm9uZSBlbHNlICJHRVQiCiAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgJ21ldGhvZCcsIGRlZmF1bHRfbWV0aG9kKQoKICAgIGRlZiBnZXRfZnVsbF91cmwoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZnVsbF91cmwKCiAgICBkZWYgc2V0X3Byb3h5KHNlbGYsIGhvc3QsIHR5cGUpOgogICAgICAgIGlmIHNlbGYudHlwZSA9PSAnaHR0cHMnIGFuZCBub3Qgc2VsZi5fdHVubmVsX2hvc3Q6CiAgICAgICAgICAgIHNlbGYuX3R1bm5lbF9ob3N0ID0gc2VsZi5ob3N0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi50eXBlPSB0eXBlCiAgICAgICAgICAgIHNlbGYuc2VsZWN0b3IgPSBzZWxmLmZ1bGxfdXJsCiAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAoKICAgIGRlZiBoYXNfcHJveHkoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuc2VsZWN0b3IgPT0gc2VsZi5mdWxsX3VybAoKICAgIGRlZiBhZGRfaGVhZGVyKHNlbGYsIGtleSwgdmFsKToKICAgICAgICAjIHVzZWZ1bCBmb3Igc29tZXRoaW5nIGxpa2UgYXV0aGVudGljYXRpb24KICAgICAgICBzZWxmLmhlYWRlcnNba2V5LmNhcGl0YWxpemUoKV0gPSB2YWwKCiAgICBkZWYgYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoc2VsZiwga2V5LCB2YWwpOgogICAgICAgICMgd2lsbCBub3QgYmUgYWRkZWQgdG8gYSByZWRpcmVjdGVkIHJlcXVlc3QKICAgICAgICBzZWxmLnVucmVkaXJlY3RlZF9oZHJzW2tleS5jYXBpdGFsaXplKCldID0gdmFsCgogICAgZGVmIGhhc19oZWFkZXIoc2VsZiwgaGVhZGVyX25hbWUpOgogICAgICAgIHJldHVybiAoaGVhZGVyX25hbWUgaW4gc2VsZi5oZWFkZXJzIG9yCiAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZSBpbiBzZWxmLnVucmVkaXJlY3RlZF9oZHJzKQoKICAgIGRlZiBnZXRfaGVhZGVyKHNlbGYsIGhlYWRlcl9uYW1lLCBkZWZhdWx0PU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmLmhlYWRlcnMuZ2V0KAogICAgICAgICAgICBoZWFkZXJfbmFtZSwKICAgICAgICAgICAgc2VsZi51bnJlZGlyZWN0ZWRfaGRycy5nZXQoaGVhZGVyX25hbWUsIGRlZmF1bHQpKQoKICAgIGRlZiByZW1vdmVfaGVhZGVyKHNlbGYsIGhlYWRlcl9uYW1lKToKICAgICAgICBzZWxmLmhlYWRlcnMucG9wKGhlYWRlcl9uYW1lLCBOb25lKQogICAgICAgIHNlbGYudW5yZWRpcmVjdGVkX2hkcnMucG9wKGhlYWRlcl9uYW1lLCBOb25lKQoKICAgIGRlZiBoZWFkZXJfaXRlbXMoc2VsZik6CiAgICAgICAgaGRycyA9IHsqKnNlbGYudW5yZWRpcmVjdGVkX2hkcnMsICoqc2VsZi5oZWFkZXJzfQogICAgICAgIHJldHVybiBsaXN0KGhkcnMuaXRlbXMoKSkKCmNsYXNzIE9wZW5lckRpcmVjdG9yOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIGNsaWVudF92ZXJzaW9uID0gIlB5dGhvbi11cmxsaWIvJXMiICUgX192ZXJzaW9uX18KICAgICAgICBzZWxmLmFkZGhlYWRlcnMgPSBbKCdVc2VyLWFnZW50JywgY2xpZW50X3ZlcnNpb24pXQogICAgICAgICMgc2VsZi5oYW5kbGVycyBpcyByZXRhaW5lZCBvbmx5IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiAgICAgICAgc2VsZi5oYW5kbGVycyA9IFtdCiAgICAgICAgIyBtYW5hZ2UgdGhlIGluZGl2aWR1YWwgaGFuZGxlcnMKICAgICAgICBzZWxmLmhhbmRsZV9vcGVuID0ge30KICAgICAgICBzZWxmLmhhbmRsZV9lcnJvciA9IHt9CiAgICAgICAgc2VsZi5wcm9jZXNzX3Jlc3BvbnNlID0ge30KICAgICAgICBzZWxmLnByb2Nlc3NfcmVxdWVzdCA9IHt9CgogICAgZGVmIGFkZF9oYW5kbGVyKHNlbGYsIGhhbmRsZXIpOgogICAgICAgIGlmIG5vdCBoYXNhdHRyKGhhbmRsZXIsICJhZGRfcGFyZW50Iik6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgQmFzZUhhbmRsZXIgaW5zdGFuY2UsIGdvdCAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZShoYW5kbGVyKSkKCiAgICAgICAgYWRkZWQgPSBGYWxzZQogICAgICAgIGZvciBtZXRoIGluIGRpcihoYW5kbGVyKToKICAgICAgICAgICAgaWYgbWV0aCBpbiBbInJlZGlyZWN0X3JlcXVlc3QiLCAiZG9fb3BlbiIsICJwcm94eV9vcGVuIl06CiAgICAgICAgICAgICAgICAjIG9vcHMsIGNvaW5jaWRlbnRhbCBtYXRjaAogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGkgPSBtZXRoLmZpbmQoIl8iKQogICAgICAgICAgICBwcm90b2NvbCA9IG1ldGhbOmldCiAgICAgICAgICAgIGNvbmRpdGlvbiA9IG1ldGhbaSsxOl0KCiAgICAgICAgICAgIGlmIGNvbmRpdGlvbi5zdGFydHN3aXRoKCJlcnJvciIpOgogICAgICAgICAgICAgICAgaiA9IGNvbmRpdGlvbi5maW5kKCJfIikgKyBpICsgMQogICAgICAgICAgICAgICAga2luZCA9IG1ldGhbaisxOl0KICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBraW5kID0gaW50KGtpbmQpCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBsb29rdXAgPSBzZWxmLmhhbmRsZV9lcnJvci5nZXQocHJvdG9jb2wsIHt9KQogICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3JbcHJvdG9jb2xdID0gbG9va3VwCiAgICAgICAgICAgIGVsaWYgY29uZGl0aW9uID09ICJvcGVuIjoKICAgICAgICAgICAgICAgIGtpbmQgPSBwcm90b2NvbAogICAgICAgICAgICAgICAgbG9va3VwID0gc2VsZi5oYW5kbGVfb3BlbgogICAgICAgICAgICBlbGlmIGNvbmRpdGlvbiA9PSAicmVzcG9uc2UiOgogICAgICAgICAgICAgICAga2luZCA9IHByb3RvY29sCiAgICAgICAgICAgICAgICBsb29rdXAgPSBzZWxmLnByb2Nlc3NfcmVzcG9uc2UKICAgICAgICAgICAgZWxpZiBjb25kaXRpb24gPT0gInJlcXVlc3QiOgogICAgICAgICAgICAgICAga2luZCA9IHByb3RvY29sCiAgICAgICAgICAgICAgICBsb29rdXAgPSBzZWxmLnByb2Nlc3NfcmVxdWVzdAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGhhbmRsZXJzID0gbG9va3VwLnNldGRlZmF1bHQoa2luZCwgW10pCiAgICAgICAgICAgIGlmIGhhbmRsZXJzOgogICAgICAgICAgICAgICAgYmlzZWN0Lmluc29ydChoYW5kbGVycywgaGFuZGxlcikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGhhbmRsZXJzLmFwcGVuZChoYW5kbGVyKQogICAgICAgICAgICBhZGRlZCA9IFRydWUKCiAgICAgICAgaWYgYWRkZWQ6CiAgICAgICAgICAgIGJpc2VjdC5pbnNvcnQoc2VsZi5oYW5kbGVycywgaGFuZGxlcikKICAgICAgICAgICAgaGFuZGxlci5hZGRfcGFyZW50KHNlbGYpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICMgT25seSBleGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogICAgICAgIHBhc3MKCiAgICBkZWYgX2NhbGxfY2hhaW4oc2VsZiwgY2hhaW4sIGtpbmQsIG1ldGhfbmFtZSwgKmFyZ3MpOgogICAgICAgICMgSGFuZGxlcnMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIG5vIG9uZSBlbHNlIHNob3VsZCB0cnkgdG8gaGFuZGxlCiAgICAgICAgIyB0aGUgcmVxdWVzdCwgb3IgcmV0dXJuIE5vbmUgaWYgdGhleSBjYW4ndCBidXQgYW5vdGhlciBoYW5kbGVyCiAgICAgICAgIyBjb3VsZC4gIE90aGVyd2lzZSwgdGhleSByZXR1cm4gdGhlIHJlc3BvbnNlLgogICAgICAgIGhhbmRsZXJzID0gY2hhaW4uZ2V0KGtpbmQsICgpKQogICAgICAgIGZvciBoYW5kbGVyIGluIGhhbmRsZXJzOgogICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihoYW5kbGVyLCBtZXRoX25hbWUpCiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMoKmFyZ3MpCiAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgb3BlbihzZWxmLCBmdWxsdXJsLCBkYXRhPU5vbmUsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKICAgICAgICAjIGFjY2VwdCBhIFVSTCBvciBhIFJlcXVlc3Qgb2JqZWN0CiAgICAgICAgaWYgaXNpbnN0YW5jZShmdWxsdXJsLCBzdHIpOgogICAgICAgICAgICByZXEgPSBSZXF1ZXN0KGZ1bGx1cmwsIGRhdGEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVxID0gZnVsbHVybAogICAgICAgICAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgcmVxLmRhdGEgPSBkYXRhCgogICAgICAgIHJlcS50aW1lb3V0ID0gdGltZW91dAogICAgICAgIHByb3RvY29sID0gcmVxLnR5cGUKCiAgICAgICAgIyBwcmUtcHJvY2VzcyByZXF1ZXN0CiAgICAgICAgbWV0aF9uYW1lID0gcHJvdG9jb2wrIl9yZXF1ZXN0IgogICAgICAgIGZvciBwcm9jZXNzb3IgaW4gc2VsZi5wcm9jZXNzX3JlcXVlc3QuZ2V0KHByb3RvY29sLCBbXSk6CiAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHByb2Nlc3NvciwgbWV0aF9uYW1lKQogICAgICAgICAgICByZXEgPSBtZXRoKHJlcSkKCiAgICAgICAgc3lzLmF1ZGl0KCd1cmxsaWIuUmVxdWVzdCcsIHJlcS5mdWxsX3VybCwgcmVxLmRhdGEsIHJlcS5oZWFkZXJzLCByZXEuZ2V0X21ldGhvZCgpKQogICAgICAgIHJlc3BvbnNlID0gc2VsZi5fb3BlbihyZXEsIGRhdGEpCgogICAgICAgICMgcG9zdC1wcm9jZXNzIHJlc3BvbnNlCiAgICAgICAgbWV0aF9uYW1lID0gcHJvdG9jb2wrIl9yZXNwb25zZSIKICAgICAgICBmb3IgcHJvY2Vzc29yIGluIHNlbGYucHJvY2Vzc19yZXNwb25zZS5nZXQocHJvdG9jb2wsIFtdKToKICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIocHJvY2Vzc29yLCBtZXRoX25hbWUpCiAgICAgICAgICAgIHJlc3BvbnNlID0gbWV0aChyZXEsIHJlc3BvbnNlKQoKICAgICAgICByZXR1cm4gcmVzcG9uc2UKCiAgICBkZWYgX29wZW4oc2VsZiwgcmVxLCBkYXRhPU5vbmUpOgogICAgICAgIHJlc3VsdCA9IHNlbGYuX2NhbGxfY2hhaW4oc2VsZi5oYW5kbGVfb3BlbiwgJ2RlZmF1bHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRfb3BlbicsIHJlcSkKICAgICAgICBpZiByZXN1bHQ6CiAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICAgICAgcHJvdG9jb2wgPSByZXEudHlwZQogICAgICAgIHJlc3VsdCA9IHNlbGYuX2NhbGxfY2hhaW4oc2VsZi5oYW5kbGVfb3BlbiwgcHJvdG9jb2wsIHByb3RvY29sICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3BlbicsIHJlcSkKICAgICAgICBpZiByZXN1bHQ6CiAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxfY2hhaW4oc2VsZi5oYW5kbGVfb3BlbiwgJ3Vua25vd24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmtub3duX29wZW4nLCByZXEpCgogICAgZGVmIGVycm9yKHNlbGYsIHByb3RvLCAqYXJncyk6CiAgICAgICAgaWYgcHJvdG8gaW4gKCdodHRwJywgJ2h0dHBzJyk6CiAgICAgICAgICAgICMgWFhYIGh0dHBbc10gcHJvdG9jb2xzIGFyZSBzcGVjaWFsLWNhc2VkCiAgICAgICAgICAgIGRpY3QgPSBzZWxmLmhhbmRsZV9lcnJvclsnaHR0cCddICMgaHR0cHMgaXMgbm90IGRpZmZlcmVudCB0aGFuIGh0dHAKICAgICAgICAgICAgcHJvdG8gPSBhcmdzWzJdICAjIFlVQ0shCiAgICAgICAgICAgIG1ldGhfbmFtZSA9ICdodHRwX2Vycm9yXyVzJyAlIHByb3RvCiAgICAgICAgICAgIGh0dHBfZXJyID0gMQogICAgICAgICAgICBvcmlnX2FyZ3MgPSBhcmdzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGljdCA9IHNlbGYuaGFuZGxlX2Vycm9yCiAgICAgICAgICAgIG1ldGhfbmFtZSA9IHByb3RvICsgJ19lcnJvcicKICAgICAgICAgICAgaHR0cF9lcnIgPSAwCiAgICAgICAgYXJncyA9IChkaWN0LCBwcm90bywgbWV0aF9uYW1lKSArIGFyZ3MKICAgICAgICByZXN1bHQgPSBzZWxmLl9jYWxsX2NoYWluKCphcmdzKQogICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgICAgICBpZiBodHRwX2VycjoKICAgICAgICAgICAgYXJncyA9IChkaWN0LCAnZGVmYXVsdCcsICdodHRwX2Vycm9yX2RlZmF1bHQnKSArIG9yaWdfYXJncwogICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FsbF9jaGFpbigqYXJncykKCiMgWFhYIHByb2JhYmx5IGFsc28gd2FudCBhbiBhYnN0cmFjdCBmYWN0b3J5IHRoYXQga25vd3Mgd2hlbiBpdCBtYWtlcwojIHNlbnNlIHRvIHNraXAgYSBzdXBlcmNsYXNzIGluIGZhdm9yIG9mIGEgc3ViY2xhc3MgYW5kIHdoZW4gaXQgbWlnaHQKIyBtYWtlIHNlbnNlIHRvIGluY2x1ZGUgYm90aAoKZGVmIGJ1aWxkX29wZW5lcigqaGFuZGxlcnMpOgogICAgIiIiQ3JlYXRlIGFuIG9wZW5lciBvYmplY3QgZnJvbSBhIGxpc3Qgb2YgaGFuZGxlcnMuCgogICAgVGhlIG9wZW5lciB3aWxsIHVzZSBzZXZlcmFsIGRlZmF1bHQgaGFuZGxlcnMsIGluY2x1ZGluZyBzdXBwb3J0CiAgICBmb3IgSFRUUCwgRlRQIGFuZCB3aGVuIGFwcGxpY2FibGUgSFRUUFMuCgogICAgSWYgYW55IG9mIHRoZSBoYW5kbGVycyBwYXNzZWQgYXMgYXJndW1lbnRzIGFyZSBzdWJjbGFzc2VzIG9mIHRoZQogICAgZGVmYXVsdCBoYW5kbGVycywgdGhlIGRlZmF1bHQgaGFuZGxlcnMgd2lsbCBub3QgYmUgdXNlZC4KICAgICIiIgogICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQogICAgZGVmYXVsdF9jbGFzc2VzID0gW1Byb3h5SGFuZGxlciwgVW5rbm93bkhhbmRsZXIsIEhUVFBIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgIEhUVFBEZWZhdWx0RXJyb3JIYW5kbGVyLCBIVFRQUmVkaXJlY3RIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgIEZUUEhhbmRsZXIsIEZpbGVIYW5kbGVyLCBIVFRQRXJyb3JQcm9jZXNzb3IsCiAgICAgICAgICAgICAgICAgICAgICAgRGF0YUhhbmRsZXJdCiAgICBpZiBoYXNhdHRyKGh0dHAuY2xpZW50LCAiSFRUUFNDb25uZWN0aW9uIik6CiAgICAgICAgZGVmYXVsdF9jbGFzc2VzLmFwcGVuZChIVFRQU0hhbmRsZXIpCiAgICBza2lwID0gc2V0KCkKICAgIGZvciBrbGFzcyBpbiBkZWZhdWx0X2NsYXNzZXM6CiAgICAgICAgZm9yIGNoZWNrIGluIGhhbmRsZXJzOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoZWNrLCB0eXBlKToKICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoY2hlY2ssIGtsYXNzKToKICAgICAgICAgICAgICAgICAgICBza2lwLmFkZChrbGFzcykKICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGNoZWNrLCBrbGFzcyk6CiAgICAgICAgICAgICAgICBza2lwLmFkZChrbGFzcykKICAgIGZvciBrbGFzcyBpbiBza2lwOgogICAgICAgIGRlZmF1bHRfY2xhc3Nlcy5yZW1vdmUoa2xhc3MpCgogICAgZm9yIGtsYXNzIGluIGRlZmF1bHRfY2xhc3NlczoKICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoa2xhc3MoKSkKCiAgICBmb3IgaCBpbiBoYW5kbGVyczoKICAgICAgICBpZiBpc2luc3RhbmNlKGgsIHR5cGUpOgogICAgICAgICAgICBoID0gaCgpCiAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGgpCiAgICByZXR1cm4gb3BlbmVyCgpjbGFzcyBCYXNlSGFuZGxlcjoKICAgIGhhbmRsZXJfb3JkZXIgPSA1MDAKCiAgICBkZWYgYWRkX3BhcmVudChzZWxmLCBwYXJlbnQpOgogICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICMgT25seSBleGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgICAgcGFzcwoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIG5vdCBoYXNhdHRyKG90aGVyLCAiaGFuZGxlcl9vcmRlciIpOgogICAgICAgICAgICAjIFRyeSB0byBwcmVzZXJ2ZSB0aGUgb2xkIGJlaGF2aW9yIG9mIGhhdmluZyBjdXN0b20gY2xhc3NlcwogICAgICAgICAgICAjIGluc2VydGVkIGFmdGVyIGRlZmF1bHQgb25lcyAod29ya3Mgb25seSBmb3IgY3VzdG9tIHVzZXIKICAgICAgICAgICAgIyBjbGFzc2VzIHdoaWNoIGFyZSBub3QgYXdhcmUgb2YgaGFuZGxlcl9vcmRlcikuCiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlcl9vcmRlciA8IG90aGVyLmhhbmRsZXJfb3JkZXIKCgpjbGFzcyBIVFRQRXJyb3JQcm9jZXNzb3IoQmFzZUhhbmRsZXIpOgogICAgIiIiUHJvY2VzcyBIVFRQIGVycm9yIHJlc3BvbnNlcy4iIiIKICAgIGhhbmRsZXJfb3JkZXIgPSAxMDAwICAjIGFmdGVyIGFsbCBvdGhlciBwcm9jZXNzaW5nCgogICAgZGVmIGh0dHBfcmVzcG9uc2Uoc2VsZiwgcmVxdWVzdCwgcmVzcG9uc2UpOgogICAgICAgIGNvZGUsIG1zZywgaGRycyA9IHJlc3BvbnNlLmNvZGUsIHJlc3BvbnNlLm1zZywgcmVzcG9uc2UuaW5mbygpCgogICAgICAgICMgQWNjb3JkaW5nIHRvIFJGQyAyNjE2LCAiMnh4IiBjb2RlIGluZGljYXRlcyB0aGF0IHRoZSBjbGllbnQncwogICAgICAgICMgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bGx5IHJlY2VpdmVkLCB1bmRlcnN0b29kLCBhbmQgYWNjZXB0ZWQuCiAgICAgICAgaWYgbm90ICgyMDAgPD0gY29kZSA8IDMwMCk6CiAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5wYXJlbnQuZXJyb3IoCiAgICAgICAgICAgICAgICAnaHR0cCcsIHJlcXVlc3QsIHJlc3BvbnNlLCBjb2RlLCBtc2csIGhkcnMpCgogICAgICAgIHJldHVybiByZXNwb25zZQoKICAgIGh0dHBzX3Jlc3BvbnNlID0gaHR0cF9yZXNwb25zZQoKY2xhc3MgSFRUUERlZmF1bHRFcnJvckhhbmRsZXIoQmFzZUhhbmRsZXIpOgogICAgZGVmIGh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCByZXEsIGZwLCBjb2RlLCBtc2csIGhkcnMpOgogICAgICAgIHJhaXNlIEhUVFBFcnJvcihyZXEuZnVsbF91cmwsIGNvZGUsIG1zZywgaGRycywgZnApCgpjbGFzcyBIVFRQUmVkaXJlY3RIYW5kbGVyKEJhc2VIYW5kbGVyKToKICAgICMgbWF4aW11bSBudW1iZXIgb2YgcmVkaXJlY3Rpb25zIHRvIGFueSBzaW5nbGUgVVJMCiAgICAjIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgdGhlIHN0YXRlIHRoYXQgY29va2llcyBpbnRyb2R1Y2UKICAgIG1heF9yZXBlYXRzID0gNAogICAgIyBtYXhpbXVtIHRvdGFsIG51bWJlciBvZiByZWRpcmVjdGlvbnMgKHJlZ2FyZGxlc3Mgb2YgVVJMKSBiZWZvcmUKICAgICMgYXNzdW1pbmcgd2UncmUgaW4gYSBsb29wCiAgICBtYXhfcmVkaXJlY3Rpb25zID0gMTAKCiAgICBkZWYgcmVkaXJlY3RfcmVxdWVzdChzZWxmLCByZXEsIGZwLCBjb2RlLCBtc2csIGhlYWRlcnMsIG5ld3VybCk6CiAgICAgICAgIiIiUmV0dXJuIGEgUmVxdWVzdCBvciBOb25lIGluIHJlc3BvbnNlIHRvIGEgcmVkaXJlY3QuCgogICAgICAgIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBodHRwX2Vycm9yXzMweCBtZXRob2RzIHdoZW4gYQogICAgICAgIHJlZGlyZWN0aW9uIHJlc3BvbnNlIGlzIHJlY2VpdmVkLiAgSWYgYSByZWRpcmVjdGlvbiBzaG91bGQKICAgICAgICB0YWtlIHBsYWNlLCByZXR1cm4gYSBuZXcgUmVxdWVzdCB0byBhbGxvdyBodHRwX2Vycm9yXzMweCB0bwogICAgICAgIHBlcmZvcm0gdGhlIHJlZGlyZWN0LiAgT3RoZXJ3aXNlLCByYWlzZSBIVFRQRXJyb3IgaWYgbm8tb25lCiAgICAgICAgZWxzZSBzaG91bGQgdHJ5IHRvIGhhbmRsZSB0aGlzIHVybC4gIFJldHVybiBOb25lIGlmIHlvdSBjYW4ndAogICAgICAgIGJ1dCBhbm90aGVyIEhhbmRsZXIgbWlnaHQuCiAgICAgICAgIiIiCiAgICAgICAgbSA9IHJlcS5nZXRfbWV0aG9kKCkKICAgICAgICBpZiAobm90IChjb2RlIGluICgzMDEsIDMwMiwgMzAzLCAzMDcsIDMwOCkgYW5kIG0gaW4gKCJHRVQiLCAiSEVBRCIpCiAgICAgICAgICAgIG9yIGNvZGUgaW4gKDMwMSwgMzAyLCAzMDMpIGFuZCBtID09ICJQT1NUIikpOgogICAgICAgICAgICByYWlzZSBIVFRQRXJyb3IocmVxLmZ1bGxfdXJsLCBjb2RlLCBtc2csIGhlYWRlcnMsIGZwKQoKICAgICAgICAjIFN0cmljdGx5IChhY2NvcmRpbmcgdG8gUkZDIDI2MTYpLCAzMDEgb3IgMzAyIGluIHJlc3BvbnNlIHRvCiAgICAgICAgIyBhIFBPU1QgTVVTVCBOT1QgY2F1c2UgYSByZWRpcmVjdGlvbiB3aXRob3V0IGNvbmZpcm1hdGlvbgogICAgICAgICMgZnJvbSB0aGUgdXNlciAob2YgdXJsbGliLnJlcXVlc3QsIGluIHRoaXMgY2FzZSkuICBJbiBwcmFjdGljZSwKICAgICAgICAjIGVzc2VudGlhbGx5IGFsbCBjbGllbnRzIGRvIHJlZGlyZWN0IGluIHRoaXMgY2FzZSwgc28gd2UgZG8KICAgICAgICAjIHRoZSBzYW1lLgoKICAgICAgICAjIEJlIGNvbmNpbGlhbnQgd2l0aCBVUklzIGNvbnRhaW5pbmcgYSBzcGFjZS4gIFRoaXMgaXMgbWFpbmx5CiAgICAgICAgIyByZWR1bmRhbnQgd2l0aCB0aGUgbW9yZSBjb21wbGV0ZSBlbmNvZGluZyBkb25lIGluIGh0dHBfZXJyb3JfMzAyKCksCiAgICAgICAgIyBidXQgaXQgaXMga2VwdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIGNhbGxlcnMuCiAgICAgICAgbmV3dXJsID0gbmV3dXJsLnJlcGxhY2UoJyAnLCAnJTIwJykKCiAgICAgICAgQ09OVEVOVF9IRUFERVJTID0gKCJjb250ZW50LWxlbmd0aCIsICJjb250ZW50LXR5cGUiKQogICAgICAgIG5ld2hlYWRlcnMgPSB7azogdiBmb3IgaywgdiBpbiByZXEuaGVhZGVycy5pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgbm90IGluIENPTlRFTlRfSEVBREVSU30KICAgICAgICByZXR1cm4gUmVxdWVzdChuZXd1cmwsCiAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1uZXdoZWFkZXJzLAogICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdD1yZXEub3JpZ2luX3JlcV9ob3N0LAogICAgICAgICAgICAgICAgICAgICAgIHVudmVyaWZpYWJsZT1UcnVlKQoKICAgICMgSW1wbGVtZW50YXRpb24gbm90ZTogVG8gYXZvaWQgdGhlIHNlcnZlciBzZW5kaW5nIHVzIGludG8gYW4KICAgICMgaW5maW5pdGUgbG9vcCwgdGhlIHJlcXVlc3Qgb2JqZWN0IG5lZWRzIHRvIHRyYWNrIHdoYXQgVVJMcyB3ZQogICAgIyBoYXZlIGFscmVhZHkgc2Vlbi4gIERvIHRoaXMgYnkgYWRkaW5nIGEgaGFuZGxlci1zcGVjaWZpYwogICAgIyBhdHRyaWJ1dGUgdG8gdGhlIFJlcXVlc3Qgb2JqZWN0LgogICAgZGVmIGh0dHBfZXJyb3JfMzAyKHNlbGYsIHJlcSwgZnAsIGNvZGUsIG1zZywgaGVhZGVycyk6CiAgICAgICAgIyBTb21lIHNlcnZlcnMgKGluY29ycmVjdGx5KSByZXR1cm4gbXVsdGlwbGUgTG9jYXRpb24gaGVhZGVycwogICAgICAgICMgKHNvIHByb2JhYmx5IHNhbWUgZ29lcyBmb3IgVVJJKS4gIFVzZSBmaXJzdCBoZWFkZXIuCiAgICAgICAgaWYgImxvY2F0aW9uIiBpbiBoZWFkZXJzOgogICAgICAgICAgICBuZXd1cmwgPSBoZWFkZXJzWyJsb2NhdGlvbiJdCiAgICAgICAgZWxpZiAidXJpIiBpbiBoZWFkZXJzOgogICAgICAgICAgICBuZXd1cmwgPSBoZWFkZXJzWyJ1cmkiXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIGZpeCBhIHBvc3NpYmxlIG1hbGZvcm1lZCBVUkwKICAgICAgICB1cmxwYXJ0cyA9IHVybHBhcnNlKG5ld3VybCkKCiAgICAgICAgIyBGb3Igc2VjdXJpdHkgcmVhc29ucyB3ZSBkb24ndCBhbGxvdyByZWRpcmVjdGlvbiB0byBhbnl0aGluZyBvdGhlcgogICAgICAgICMgdGhhbiBodHRwLCBodHRwcyBvciBmdHAuCgogICAgICAgIGlmIHVybHBhcnRzLnNjaGVtZSBub3QgaW4gKCdodHRwJywgJ2h0dHBzJywgJ2Z0cCcsICcnKToKICAgICAgICAgICAgcmFpc2UgSFRUUEVycm9yKAogICAgICAgICAgICAgICAgbmV3dXJsLCBjb2RlLAogICAgICAgICAgICAgICAgIiVzIC0gUmVkaXJlY3Rpb24gdG8gdXJsICclcycgaXMgbm90IGFsbG93ZWQiICUgKG1zZywgbmV3dXJsKSwKICAgICAgICAgICAgICAgIGhlYWRlcnMsIGZwKQoKICAgICAgICBpZiBub3QgdXJscGFydHMucGF0aCBhbmQgdXJscGFydHMubmV0bG9jOgogICAgICAgICAgICB1cmxwYXJ0cyA9IGxpc3QodXJscGFydHMpCiAgICAgICAgICAgIHVybHBhcnRzWzJdID0gIi8iCiAgICAgICAgbmV3dXJsID0gdXJsdW5wYXJzZSh1cmxwYXJ0cykKCiAgICAgICAgIyBodHRwLmNsaWVudC5wYXJzZV9oZWFkZXJzKCkgZGVjb2RlcyBhcyBJU08tODg1OS0xLiAgUmVjb3ZlciB0aGUKICAgICAgICAjIG9yaWdpbmFsIGJ5dGVzIGFuZCBwZXJjZW50LWVuY29kZSBub24tQVNDSUkgYnl0ZXMsIGFuZCBhbnkgc3BlY2lhbAogICAgICAgICMgY2hhcmFjdGVycyBzdWNoIGFzIHRoZSBzcGFjZS4KICAgICAgICBuZXd1cmwgPSBxdW90ZSgKICAgICAgICAgICAgbmV3dXJsLCBlbmNvZGluZz0iaXNvLTg4NTktMSIsIHNhZmU9c3RyaW5nLnB1bmN0dWF0aW9uKQogICAgICAgIG5ld3VybCA9IHVybGpvaW4ocmVxLmZ1bGxfdXJsLCBuZXd1cmwpCgogICAgICAgICMgWFhYIFByb2JhYmx5IHdhbnQgdG8gZm9yZ2V0IGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudAogICAgICAgICMgcmVxdWVzdCwgYWx0aG91Z2ggdGhhdCBtaWdodCBpbnRlcmFjdCBwb29ybHkgd2l0aCBvdGhlcgogICAgICAgICMgaGFuZGxlcnMgdGhhdCBhbHNvIHVzZSBoYW5kbGVyLXNwZWNpZmljIHJlcXVlc3QgYXR0cmlidXRlcwogICAgICAgIG5ldyA9IHNlbGYucmVkaXJlY3RfcmVxdWVzdChyZXEsIGZwLCBjb2RlLCBtc2csIGhlYWRlcnMsIG5ld3VybCkKICAgICAgICBpZiBuZXcgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgICMgbG9vcCBkZXRlY3Rpb24KICAgICAgICAjIC5yZWRpcmVjdF9kaWN0IGhhcyBhIGtleSB1cmwgaWYgdXJsIHdhcyBwcmV2aW91c2x5IHZpc2l0ZWQuCiAgICAgICAgaWYgaGFzYXR0cihyZXEsICdyZWRpcmVjdF9kaWN0Jyk6CiAgICAgICAgICAgIHZpc2l0ZWQgPSBuZXcucmVkaXJlY3RfZGljdCA9IHJlcS5yZWRpcmVjdF9kaWN0CiAgICAgICAgICAgIGlmICh2aXNpdGVkLmdldChuZXd1cmwsIDApID49IHNlbGYubWF4X3JlcGVhdHMgb3IKICAgICAgICAgICAgICAgIGxlbih2aXNpdGVkKSA+PSBzZWxmLm1heF9yZWRpcmVjdGlvbnMpOgogICAgICAgICAgICAgICAgcmFpc2UgSFRUUEVycm9yKHJlcS5mdWxsX3VybCwgY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluZl9tc2cgKyBtc2csIGhlYWRlcnMsIGZwKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHZpc2l0ZWQgPSBuZXcucmVkaXJlY3RfZGljdCA9IHJlcS5yZWRpcmVjdF9kaWN0ID0ge30KICAgICAgICB2aXNpdGVkW25ld3VybF0gPSB2aXNpdGVkLmdldChuZXd1cmwsIDApICsgMQoKICAgICAgICAjIERvbid0IGNsb3NlIHRoZSBmcCB1bnRpbCB3ZSBhcmUgc3VyZSB0aGF0IHdlIHdvbid0IHVzZSBpdAogICAgICAgICMgd2l0aCBIVFRQRXJyb3IuCiAgICAgICAgZnAucmVhZCgpCiAgICAgICAgZnAuY2xvc2UoKQoKICAgICAgICByZXR1cm4gc2VsZi5wYXJlbnQub3BlbihuZXcsIHRpbWVvdXQ9cmVxLnRpbWVvdXQpCgogICAgaHR0cF9lcnJvcl8zMDEgPSBodHRwX2Vycm9yXzMwMyA9IGh0dHBfZXJyb3JfMzA3ID0gaHR0cF9lcnJvcl8zMDggPSBodHRwX2Vycm9yXzMwMgoKICAgIGluZl9tc2cgPSAiVGhlIEhUVFAgc2VydmVyIHJldHVybmVkIGEgcmVkaXJlY3QgZXJyb3IgdGhhdCB3b3VsZCAiIFwKICAgICAgICAgICAgICAibGVhZCB0byBhbiBpbmZpbml0ZSBsb29wLlxuIiBcCiAgICAgICAgICAgICAgIlRoZSBsYXN0IDMweCBlcnJvciBtZXNzYWdlIHdhczpcbiIKCgpkZWYgX3BhcnNlX3Byb3h5KHByb3h5KToKICAgICIiIlJldHVybiAoc2NoZW1lLCB1c2VyLCBwYXNzd29yZCwgaG9zdC9wb3J0KSBnaXZlbiBhIFVSTCBvciBhbiBhdXRob3JpdHkuCgogICAgSWYgYSBVUkwgaXMgc3VwcGxpZWQsIGl0IG11c3QgaGF2ZSBhbiBhdXRob3JpdHkgKGhvc3Q6cG9ydCkgY29tcG9uZW50LgogICAgQWNjb3JkaW5nIHRvIFJGQyAzOTg2LCBoYXZpbmcgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCBtZWFucyB0aGUgVVJMIG11c3QKICAgIGhhdmUgdHdvIHNsYXNoZXMgYWZ0ZXIgdGhlIHNjaGVtZS4KICAgICIiIgogICAgc2NoZW1lLCByX3NjaGVtZSA9IF9zcGxpdHR5cGUocHJveHkpCiAgICBpZiBub3Qgcl9zY2hlbWUuc3RhcnRzd2l0aCgiLyIpOgogICAgICAgICMgYXV0aG9yaXR5CiAgICAgICAgc2NoZW1lID0gTm9uZQogICAgICAgIGF1dGhvcml0eSA9IHByb3h5CiAgICBlbHNlOgogICAgICAgICMgVVJMCiAgICAgICAgaWYgbm90IHJfc2NoZW1lLnN0YXJ0c3dpdGgoIi8vIik6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInByb3h5IFVSTCB3aXRoIG5vIGF1dGhvcml0eTogJXIiICUgcHJveHkpCiAgICAgICAgIyBXZSBoYXZlIGFuIGF1dGhvcml0eSwgc28gZm9yIFJGQyAzOTg2LWNvbXBsaWFudCBVUkxzIChieSBzcyAzLgogICAgICAgICMgYW5kIDMuMy4pLCBwYXRoIGlzIGVtcHR5IG9yIHN0YXJ0cyB3aXRoICcvJwogICAgICAgIGlmICdAJyBpbiByX3NjaGVtZToKICAgICAgICAgICAgaG9zdF9zZXBhcmF0b3IgPSByX3NjaGVtZS5maW5kKCdAJykKICAgICAgICAgICAgZW5kID0gcl9zY2hlbWUuZmluZCgiLyIsIGhvc3Rfc2VwYXJhdG9yKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGVuZCA9IHJfc2NoZW1lLmZpbmQoIi8iLCAyKQogICAgICAgIGlmIGVuZCA9PSAtMToKICAgICAgICAgICAgZW5kID0gTm9uZQogICAgICAgIGF1dGhvcml0eSA9IHJfc2NoZW1lWzI6ZW5kXQogICAgdXNlcmluZm8sIGhvc3Rwb3J0ID0gX3NwbGl0dXNlcihhdXRob3JpdHkpCiAgICBpZiB1c2VyaW5mbyBpcyBub3QgTm9uZToKICAgICAgICB1c2VyLCBwYXNzd29yZCA9IF9zcGxpdHBhc3N3ZCh1c2VyaW5mbykKICAgIGVsc2U6CiAgICAgICAgdXNlciA9IHBhc3N3b3JkID0gTm9uZQogICAgcmV0dXJuIHNjaGVtZSwgdXNlciwgcGFzc3dvcmQsIGhvc3Rwb3J0CgpjbGFzcyBQcm94eUhhbmRsZXIoQmFzZUhhbmRsZXIpOgogICAgIyBQcm94aWVzIG11c3QgYmUgaW4gZnJvbnQKICAgIGhhbmRsZXJfb3JkZXIgPSAxMDAKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcHJveGllcz1Ob25lKToKICAgICAgICBpZiBwcm94aWVzIGlzIE5vbmU6CiAgICAgICAgICAgIHByb3hpZXMgPSBnZXRwcm94aWVzKCkKICAgICAgICBhc3NlcnQgaGFzYXR0cihwcm94aWVzLCAna2V5cycpLCAicHJveGllcyBtdXN0IGJlIGEgbWFwcGluZyIKICAgICAgICBzZWxmLnByb3hpZXMgPSBwcm94aWVzCiAgICAgICAgZm9yIHR5cGUsIHVybCBpbiBwcm94aWVzLml0ZW1zKCk6CiAgICAgICAgICAgIHR5cGUgPSB0eXBlLmxvd2VyKCkKICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAnJXNfb3BlbicgJSB0eXBlLAogICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46CiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGgociwgcHJveHksIHR5cGUpKQoKICAgIGRlZiBwcm94eV9vcGVuKHNlbGYsIHJlcSwgcHJveHksIHR5cGUpOgogICAgICAgIG9yaWdfdHlwZSA9IHJlcS50eXBlCiAgICAgICAgcHJveHlfdHlwZSwgdXNlciwgcGFzc3dvcmQsIGhvc3Rwb3J0ID0gX3BhcnNlX3Byb3h5KHByb3h5KQogICAgICAgIGlmIHByb3h5X3R5cGUgaXMgTm9uZToKICAgICAgICAgICAgcHJveHlfdHlwZSA9IG9yaWdfdHlwZQoKICAgICAgICBpZiByZXEuaG9zdCBhbmQgcHJveHlfYnlwYXNzKHJlcS5ob3N0KToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgaWYgdXNlciBhbmQgcGFzc3dvcmQ6CiAgICAgICAgICAgIHVzZXJfcGFzcyA9ICclczolcycgJSAodW5xdW90ZSh1c2VyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnF1b3RlKHBhc3N3b3JkKSkKICAgICAgICAgICAgY3JlZHMgPSBiYXNlNjQuYjY0ZW5jb2RlKHVzZXJfcGFzcy5lbmNvZGUoKSkuZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgICAgIHJlcS5hZGRfaGVhZGVyKCdQcm94eS1hdXRob3JpemF0aW9uJywgJ0Jhc2ljICcgKyBjcmVkcykKICAgICAgICBob3N0cG9ydCA9IHVucXVvdGUoaG9zdHBvcnQpCiAgICAgICAgcmVxLnNldF9wcm94eShob3N0cG9ydCwgcHJveHlfdHlwZSkKICAgICAgICBpZiBvcmlnX3R5cGUgPT0gcHJveHlfdHlwZSBvciBvcmlnX3R5cGUgPT0gJ2h0dHBzJzoKICAgICAgICAgICAgIyBsZXQgb3RoZXIgaGFuZGxlcnMgdGFrZSBjYXJlIG9mIGl0CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBuZWVkIHRvIHN0YXJ0IG92ZXIsIGJlY2F1c2UgdGhlIG90aGVyIGhhbmRsZXJzIGRvbid0CiAgICAgICAgICAgICMgZ3JvayB0aGUgcHJveHkncyBVUkwgdHlwZQogICAgICAgICAgICAjIGUuZy4gaWYgd2UgaGF2ZSBhIGNvbnN0cnVjdG9yIGFyZyBwcm94aWVzIGxpa2Ugc286CiAgICAgICAgICAgICMgeydodHRwJzogJ2Z0cDovL3Byb3h5LmV4YW1wbGUuY29tJ30sIHdlIG1heSBlbmQgdXAgdHVybmluZwogICAgICAgICAgICAjIGEgcmVxdWVzdCBmb3IgaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vYSBpbnRvIG9uZSBmb3IKICAgICAgICAgICAgIyBmdHA6Ly9wcm94eS5leGFtcGxlLmNvbS9hCiAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcmVudC5vcGVuKHJlcSwgdGltZW91dD1yZXEudGltZW91dCkKCmNsYXNzIEhUVFBQYXNzd29yZE1ncjoKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5wYXNzd2QgPSB7fQoKICAgIGRlZiBhZGRfcGFzc3dvcmQoc2VsZiwgcmVhbG0sIHVyaSwgdXNlciwgcGFzc3dkKToKICAgICAgICAjIHVyaSBjb3VsZCBiZSBhIHNpbmdsZSBVUkkgb3IgYSBzZXF1ZW5jZQogICAgICAgIGlmIGlzaW5zdGFuY2UodXJpLCBzdHIpOgogICAgICAgICAgICB1cmkgPSBbdXJpXQogICAgICAgIGlmIHJlYWxtIG5vdCBpbiBzZWxmLnBhc3N3ZDoKICAgICAgICAgICAgc2VsZi5wYXNzd2RbcmVhbG1dID0ge30KICAgICAgICBmb3IgZGVmYXVsdF9wb3J0IGluIFRydWUsIEZhbHNlOgogICAgICAgICAgICByZWR1Y2VkX3VyaSA9IHR1cGxlKAogICAgICAgICAgICAgICAgc2VsZi5yZWR1Y2VfdXJpKHUsIGRlZmF1bHRfcG9ydCkgZm9yIHUgaW4gdXJpKQogICAgICAgICAgICBzZWxmLnBhc3N3ZFtyZWFsbV1bcmVkdWNlZF91cmldID0gKHVzZXIsIHBhc3N3ZCkKCiAgICBkZWYgZmluZF91c2VyX3Bhc3N3b3JkKHNlbGYsIHJlYWxtLCBhdXRodXJpKToKICAgICAgICBkb21haW5zID0gc2VsZi5wYXNzd2QuZ2V0KHJlYWxtLCB7fSkKICAgICAgICBmb3IgZGVmYXVsdF9wb3J0IGluIFRydWUsIEZhbHNlOgogICAgICAgICAgICByZWR1Y2VkX2F1dGh1cmkgPSBzZWxmLnJlZHVjZV91cmkoYXV0aHVyaSwgZGVmYXVsdF9wb3J0KQogICAgICAgICAgICBmb3IgdXJpcywgYXV0aGluZm8gaW4gZG9tYWlucy5pdGVtcygpOgogICAgICAgICAgICAgICAgZm9yIHVyaSBpbiB1cmlzOgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfc3VidXJpKHVyaSwgcmVkdWNlZF9hdXRodXJpKToKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF1dGhpbmZvCiAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKCiAgICBkZWYgcmVkdWNlX3VyaShzZWxmLCB1cmksIGRlZmF1bHRfcG9ydD1UcnVlKToKICAgICAgICAiIiJBY2NlcHQgYXV0aG9yaXR5IG9yIFVSSSBhbmQgZXh0cmFjdCBvbmx5IHRoZSBhdXRob3JpdHkgYW5kIHBhdGguIiIiCiAgICAgICAgIyBub3RlIEhUVFAgVVJMcyBkbyBub3QgaGF2ZSBhIHVzZXJpbmZvIGNvbXBvbmVudAogICAgICAgIHBhcnRzID0gdXJsc3BsaXQodXJpKQogICAgICAgIGlmIHBhcnRzWzFdOgogICAgICAgICAgICAjIFVSSQogICAgICAgICAgICBzY2hlbWUgPSBwYXJ0c1swXQogICAgICAgICAgICBhdXRob3JpdHkgPSBwYXJ0c1sxXQogICAgICAgICAgICBwYXRoID0gcGFydHNbMl0gb3IgJy8nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBob3N0IG9yIGhvc3Q6cG9ydAogICAgICAgICAgICBzY2hlbWUgPSBOb25lCiAgICAgICAgICAgIGF1dGhvcml0eSA9IHVyaQogICAgICAgICAgICBwYXRoID0gJy8nCiAgICAgICAgaG9zdCwgcG9ydCA9IF9zcGxpdHBvcnQoYXV0aG9yaXR5KQogICAgICAgIGlmIGRlZmF1bHRfcG9ydCBhbmQgcG9ydCBpcyBOb25lIGFuZCBzY2hlbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGRwb3J0ID0geyJodHRwIjogODAsCiAgICAgICAgICAgICAgICAgICAgICJodHRwcyI6IDQ0MywKICAgICAgICAgICAgICAgICAgICAgfS5nZXQoc2NoZW1lKQogICAgICAgICAgICBpZiBkcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGF1dGhvcml0eSA9ICIlczolZCIgJSAoaG9zdCwgZHBvcnQpCiAgICAgICAgcmV0dXJuIGF1dGhvcml0eSwgcGF0aAoKICAgIGRlZiBpc19zdWJ1cmkoc2VsZiwgYmFzZSwgdGVzdCk6CiAgICAgICAgIiIiQ2hlY2sgaWYgdGVzdCBpcyBiZWxvdyBiYXNlIGluIGEgVVJJIHRyZWUKCiAgICAgICAgQm90aCBhcmdzIG11c3QgYmUgVVJJcyBpbiByZWR1Y2VkIGZvcm0uCiAgICAgICAgIiIiCiAgICAgICAgaWYgYmFzZSA9PSB0ZXN0OgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIGlmIGJhc2VbMF0gIT0gdGVzdFswXToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcHJlZml4ID0gYmFzZVsxXQogICAgICAgIGlmIHByZWZpeFstMTpdICE9ICcvJzoKICAgICAgICAgICAgcHJlZml4ICs9ICcvJwogICAgICAgIHJldHVybiB0ZXN0WzFdLnN0YXJ0c3dpdGgocHJlZml4KQoKCmNsYXNzIEhUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG0oSFRUUFBhc3N3b3JkTWdyKToKCiAgICBkZWYgZmluZF91c2VyX3Bhc3N3b3JkKHNlbGYsIHJlYWxtLCBhdXRodXJpKToKICAgICAgICB1c2VyLCBwYXNzd29yZCA9IEhUVFBQYXNzd29yZE1nci5maW5kX3VzZXJfcGFzc3dvcmQoc2VsZiwgcmVhbG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGh1cmkpCiAgICAgICAgaWYgdXNlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHVzZXIsIHBhc3N3b3JkCiAgICAgICAgcmV0dXJuIEhUVFBQYXNzd29yZE1nci5maW5kX3VzZXJfcGFzc3dvcmQoc2VsZiwgTm9uZSwgYXV0aHVyaSkKCgpjbGFzcyBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoKEhUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG0pOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuYXV0aGVudGljYXRlZCA9IHt9CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCgogICAgZGVmIGFkZF9wYXNzd29yZChzZWxmLCByZWFsbSwgdXJpLCB1c2VyLCBwYXNzd2QsIGlzX2F1dGhlbnRpY2F0ZWQ9RmFsc2UpOgogICAgICAgIHNlbGYudXBkYXRlX2F1dGhlbnRpY2F0ZWQodXJpLCBpc19hdXRoZW50aWNhdGVkKQogICAgICAgICMgQWRkIGEgZGVmYXVsdCBmb3IgcHJpb3IgYXV0aCByZXF1ZXN0cwogICAgICAgIGlmIHJlYWxtIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzdXBlcigpLmFkZF9wYXNzd29yZChOb25lLCB1cmksIHVzZXIsIHBhc3N3ZCkKICAgICAgICBzdXBlcigpLmFkZF9wYXNzd29yZChyZWFsbSwgdXJpLCB1c2VyLCBwYXNzd2QpCgogICAgZGVmIHVwZGF0ZV9hdXRoZW50aWNhdGVkKHNlbGYsIHVyaSwgaXNfYXV0aGVudGljYXRlZD1GYWxzZSk6CiAgICAgICAgIyB1cmkgY291bGQgYmUgYSBzaW5nbGUgVVJJIG9yIGEgc2VxdWVuY2UKICAgICAgICBpZiBpc2luc3RhbmNlKHVyaSwgc3RyKToKICAgICAgICAgICAgdXJpID0gW3VyaV0KCiAgICAgICAgZm9yIGRlZmF1bHRfcG9ydCBpbiBUcnVlLCBGYWxzZToKICAgICAgICAgICAgZm9yIHUgaW4gdXJpOgogICAgICAgICAgICAgICAgcmVkdWNlZF91cmkgPSBzZWxmLnJlZHVjZV91cmkodSwgZGVmYXVsdF9wb3J0KQogICAgICAgICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkW3JlZHVjZWRfdXJpXSA9IGlzX2F1dGhlbnRpY2F0ZWQKCiAgICBkZWYgaXNfYXV0aGVudGljYXRlZChzZWxmLCBhdXRodXJpKToKICAgICAgICBmb3IgZGVmYXVsdF9wb3J0IGluIFRydWUsIEZhbHNlOgogICAgICAgICAgICByZWR1Y2VkX2F1dGh1cmkgPSBzZWxmLnJlZHVjZV91cmkoYXV0aHVyaSwgZGVmYXVsdF9wb3J0KQogICAgICAgICAgICBmb3IgdXJpIGluIHNlbGYuYXV0aGVudGljYXRlZDoKICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfc3VidXJpKHVyaSwgcmVkdWNlZF9hdXRodXJpKToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoZW50aWNhdGVkW3VyaV0KCgpjbGFzcyBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXI6CgogICAgIyBYWFggdGhpcyBhbGxvd3MgZm9yIG11bHRpcGxlIGF1dGgtc2NoZW1lcywgYnV0IHdpbGwgc3R1cGlkbHkgcGljawogICAgIyB0aGUgbGFzdCBvbmUgd2l0aCBhIHJlYWxtIHNwZWNpZmllZC4KCiAgICAjIGFsbG93IGZvciBkb3VibGUtIGFuZCBzaW5nbGUtcXVvdGVkIHJlYWxtIHZhbHVlcwogICAgIyAoc2luZ2xlIHF1b3RlcyBhcmUgYSB2aW9sYXRpb24gb2YgdGhlIFJGQywgYnV0IGFwcGVhciBpbiB0aGUgd2lsZCkKICAgIHJ4ID0gcmUuY29tcGlsZSgnKD86XnwsKScgICAjIHN0YXJ0IG9mIHRoZSBzdHJpbmcgb3IgJywnCiAgICAgICAgICAgICAgICAgICAgJ1sgXHRdKicgICAgIyBvcHRpb25hbCB3aGl0ZXNwYWNlcwogICAgICAgICAgICAgICAgICAgICcoW14gXHQsXSspJyAjIHNjaGVtZSBsaWtlICJCYXNpYyIKICAgICAgICAgICAgICAgICAgICAnWyBcdF0rJyAgICAjIG1hbmRhdG9yeSB3aGl0ZXNwYWNlcwogICAgICAgICAgICAgICAgICAgICMgcmVhbG09eHh4CiAgICAgICAgICAgICAgICAgICAgIyByZWFsbT0neHh4JwogICAgICAgICAgICAgICAgICAgICMgcmVhbG09Inh4eCIKICAgICAgICAgICAgICAgICAgICAncmVhbG09KFsiXCddPykoW14iXCddKilcXDInLAogICAgICAgICAgICAgICAgICAgIHJlLkkpCgogICAgIyBYWFggY291bGQgcHJlLWVtcHRpdmVseSBzZW5kIGF1dGggaW5mbyBhbHJlYWR5IGFjY2VwdGVkIChSRkMgMjYxNywKICAgICMgZW5kIG9mIHNlY3Rpb24gMiwgYW5kIHNlY3Rpb24gMS4yIGltbWVkaWF0ZWx5IGFmdGVyICJjcmVkZW50aWFscyIKICAgICMgcHJvZHVjdGlvbikuCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhc3N3b3JkX21ncj1Ob25lKToKICAgICAgICBpZiBwYXNzd29yZF9tZ3IgaXMgTm9uZToKICAgICAgICAgICAgcGFzc3dvcmRfbWdyID0gSFRUUFBhc3N3b3JkTWdyKCkKICAgICAgICBzZWxmLnBhc3N3ZCA9IHBhc3N3b3JkX21ncgogICAgICAgIHNlbGYuYWRkX3Bhc3N3b3JkID0gc2VsZi5wYXNzd2QuYWRkX3Bhc3N3b3JkCgogICAgZGVmIF9wYXJzZV9yZWFsbShzZWxmLCBoZWFkZXIpOgogICAgICAgICMgcGFyc2UgV1dXLUF1dGhlbnRpY2F0ZSBoZWFkZXI6IGFjY2VwdCBtdWx0aXBsZSBjaGFsbGVuZ2VzIHBlciBoZWFkZXIKICAgICAgICBmb3VuZF9jaGFsbGVuZ2UgPSBGYWxzZQogICAgICAgIGZvciBtbyBpbiBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucnguZmluZGl0ZXIoaGVhZGVyKToKICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQogICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyciJywgIiciXToKICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkJhc2ljIEF1dGggUmVhbG0gd2FzIHVucXVvdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDMpCgogICAgICAgICAgICB5aWVsZCAoc2NoZW1lLCByZWFsbSkKCiAgICAgICAgICAgIGZvdW5kX2NoYWxsZW5nZSA9IFRydWUKCiAgICAgICAgaWYgbm90IGZvdW5kX2NoYWxsZW5nZToKICAgICAgICAgICAgaWYgaGVhZGVyOgogICAgICAgICAgICAgICAgc2NoZW1lID0gaGVhZGVyLnNwbGl0KClbMF0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNjaGVtZSA9ICcnCiAgICAgICAgICAgIHlpZWxkIChzY2hlbWUsIE5vbmUpCgogICAgZGVmIGh0dHBfZXJyb3JfYXV0aF9yZXFlZChzZWxmLCBhdXRocmVxLCBob3N0LCByZXEsIGhlYWRlcnMpOgogICAgICAgICMgaG9zdCBtYXkgYmUgYW4gYXV0aG9yaXR5ICh3aXRob3V0IHVzZXJpbmZvKSBvciBhIFVSTCB3aXRoIGFuCiAgICAgICAgIyBhdXRob3JpdHkKICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5nZXRfYWxsKGF1dGhyZXEpCiAgICAgICAgaWYgbm90IGhlYWRlcnM6CiAgICAgICAgICAgICMgbm8gaGVhZGVyIGZvdW5kCiAgICAgICAgICAgIHJldHVybgoKICAgICAgICB1bnN1cHBvcnRlZCA9IE5vbmUKICAgICAgICBmb3IgaGVhZGVyIGluIGhlYWRlcnM6CiAgICAgICAgICAgIGZvciBzY2hlbWUsIHJlYWxtIGluIHNlbGYuX3BhcnNlX3JlYWxtKGhlYWRlcik6CiAgICAgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgogICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkID0gc2NoZW1lCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgICAgICBpZiByZWFsbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgZmlyc3QgbWF0Y2hpbmcgQmFzaWMgY2hhbGxlbmdlLgogICAgICAgICAgICAgICAgICAgICMgSWdub3JlIGZvbGxvd2luZyBjaGFsbGVuZ2VzIGV2ZW4gaWYgdGhleSB1c2UgdGhlIEJhc2ljCiAgICAgICAgICAgICAgICAgICAgIyBzY2hlbWUuCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfaHR0cF9iYXNpY19hdXRoKGhvc3QsIHJlcSwgcmVhbG0pCgogICAgICAgIGlmIHVuc3VwcG9ydGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgZG9lcyBub3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHRoZSBmb2xsb3dpbmcgc2NoZW1lOiAlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzY2hlbWUsKSkKCiAgICBkZWYgcmV0cnlfaHR0cF9iYXNpY19hdXRoKHNlbGYsIGhvc3QsIHJlcSwgcmVhbG0pOgogICAgICAgIHVzZXIsIHB3ID0gc2VsZi5wYXNzd2QuZmluZF91c2VyX3Bhc3N3b3JkKHJlYWxtLCBob3N0KQogICAgICAgIGlmIHB3IGlzIG5vdCBOb25lOgogICAgICAgICAgICByYXcgPSAiJXM6JXMiICUgKHVzZXIsIHB3KQogICAgICAgICAgICBhdXRoID0gIkJhc2ljICIgKyBiYXNlNjQuYjY0ZW5jb2RlKHJhdy5lbmNvZGUoKSkuZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgICAgIGlmIHJlcS5nZXRfaGVhZGVyKHNlbGYuYXV0aF9oZWFkZXIsIE5vbmUpID09IGF1dGg6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICByZXEuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoc2VsZi5hdXRoX2hlYWRlciwgYXV0aCkKICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyZW50Lm9wZW4ocmVxLCB0aW1lb3V0PXJlcS50aW1lb3V0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGh0dHBfcmVxdWVzdChzZWxmLCByZXEpOgogICAgICAgIGlmIChub3QgaGFzYXR0cihzZWxmLnBhc3N3ZCwgJ2lzX2F1dGhlbnRpY2F0ZWQnKSBvcgogICAgICAgICAgIG5vdCBzZWxmLnBhc3N3ZC5pc19hdXRoZW50aWNhdGVkKHJlcS5mdWxsX3VybCkpOgogICAgICAgICAgICByZXR1cm4gcmVxCgogICAgICAgIGlmIG5vdCByZXEuaGFzX2hlYWRlcignQXV0aG9yaXphdGlvbicpOgogICAgICAgICAgICB1c2VyLCBwYXNzd2QgPSBzZWxmLnBhc3N3ZC5maW5kX3VzZXJfcGFzc3dvcmQoTm9uZSwgcmVxLmZ1bGxfdXJsKQogICAgICAgICAgICBjcmVkZW50aWFscyA9ICd7MH06ezF9Jy5mb3JtYXQodXNlciwgcGFzc3dkKS5lbmNvZGUoKQogICAgICAgICAgICBhdXRoX3N0ciA9IGJhc2U2NC5zdGFuZGFyZF9iNjRlbmNvZGUoY3JlZGVudGlhbHMpLmRlY29kZSgpCiAgICAgICAgICAgIHJlcS5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcignQXV0aG9yaXphdGlvbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQmFzaWMge30nLmZvcm1hdChhdXRoX3N0ci5zdHJpcCgpKSkKICAgICAgICByZXR1cm4gcmVxCgogICAgZGVmIGh0dHBfcmVzcG9uc2Uoc2VsZiwgcmVxLCByZXNwb25zZSk6CiAgICAgICAgaWYgaGFzYXR0cihzZWxmLnBhc3N3ZCwgJ2lzX2F1dGhlbnRpY2F0ZWQnKToKICAgICAgICAgICAgaWYgMjAwIDw9IHJlc3BvbnNlLmNvZGUgPCAzMDA6CiAgICAgICAgICAgICAgICBzZWxmLnBhc3N3ZC51cGRhdGVfYXV0aGVudGljYXRlZChyZXEuZnVsbF91cmwsIFRydWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLnBhc3N3ZC51cGRhdGVfYXV0aGVudGljYXRlZChyZXEuZnVsbF91cmwsIEZhbHNlKQogICAgICAgIHJldHVybiByZXNwb25zZQoKICAgIGh0dHBzX3JlcXVlc3QgPSBodHRwX3JlcXVlc3QKICAgIGh0dHBzX3Jlc3BvbnNlID0gaHR0cF9yZXNwb25zZQoKCgpjbGFzcyBIVFRQQmFzaWNBdXRoSGFuZGxlcihBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIsIEJhc2VIYW5kbGVyKToKCiAgICBhdXRoX2hlYWRlciA9ICdBdXRob3JpemF0aW9uJwoKICAgIGRlZiBodHRwX2Vycm9yXzQwMShzZWxmLCByZXEsIGZwLCBjb2RlLCBtc2csIGhlYWRlcnMpOgogICAgICAgIHVybCA9IHJlcS5mdWxsX3VybAogICAgICAgIHJlc3BvbnNlID0gc2VsZi5odHRwX2Vycm9yX2F1dGhfcmVxZWQoJ3d3dy1hdXRoZW50aWNhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsIHJlcSwgaGVhZGVycykKICAgICAgICByZXR1cm4gcmVzcG9uc2UKCgpjbGFzcyBQcm94eUJhc2ljQXV0aEhhbmRsZXIoQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLCBCYXNlSGFuZGxlcik6CgogICAgYXV0aF9oZWFkZXIgPSAnUHJveHktYXV0aG9yaXphdGlvbicKCiAgICBkZWYgaHR0cF9lcnJvcl80MDcoc2VsZiwgcmVxLCBmcCwgY29kZSwgbXNnLCBoZWFkZXJzKToKICAgICAgICAjIGh0dHBfZXJyb3JfYXV0aF9yZXFlZCByZXF1aXJlcyB0aGF0IHRoZXJlIGlzIG5vIHVzZXJpbmZvIGNvbXBvbmVudCBpbgogICAgICAgICMgYXV0aG9yaXR5LiAgQXNzdW1lIHRoZXJlIGlzbid0IG9uZSwgc2luY2UgdXJsbGliLnJlcXVlc3QgZG9lcyBub3QgKGFuZAogICAgICAgICMgc2hvdWxkIG5vdCwgUkZDIDM5ODYgcy4gMy4yLjEpIHN1cHBvcnQgcmVxdWVzdHMgZm9yIFVSTHMgY29udGFpbmluZwogICAgICAgICMgdXNlcmluZm8uCiAgICAgICAgYXV0aG9yaXR5ID0gcmVxLmhvc3QKICAgICAgICByZXNwb25zZSA9IHNlbGYuaHR0cF9lcnJvcl9hdXRoX3JlcWVkKCdwcm94eS1hdXRoZW50aWNhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpdHksIHJlcSwgaGVhZGVycykKICAgICAgICByZXR1cm4gcmVzcG9uc2UKCgojIFJldHVybiBuIHJhbmRvbSBieXRlcy4KX3JhbmRvbWJ5dGVzID0gb3MudXJhbmRvbQoKCmNsYXNzIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXI6CiAgICAjIERpZ2VzdCBhdXRoZW50aWNhdGlvbiBpcyBzcGVjaWZpZWQgaW4gUkZDIDI2MTcuCgogICAgIyBYWFggVGhlIGNsaWVudCBkb2VzIG5vdCBpbnNwZWN0IHRoZSBBdXRoZW50aWNhdGlvbi1JbmZvIGhlYWRlcgogICAgIyBpbiBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UuCgogICAgIyBYWFggSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRlc3QgdGhpcyBpbXBsZW1lbnRhdGlvbiBhZ2FpbnN0CiAgICAjIGEgbW9jayBzZXJ2ZXIgdGhhdCBqdXN0IGdlbmVyYXRlcyBhIHN0YXRpYyBzZXQgb2YgY2hhbGxlbmdlcy4KCiAgICAjIFhYWCBxb3A9ImF1dGgtaW50IiBzdXBwb3J0cyBpcyBzaGFreQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXNzd2Q9Tm9uZSk6CiAgICAgICAgaWYgcGFzc3dkIGlzIE5vbmU6CiAgICAgICAgICAgIHBhc3N3ZCA9IEhUVFBQYXNzd29yZE1ncigpCiAgICAgICAgc2VsZi5wYXNzd2QgPSBwYXNzd2QKICAgICAgICBzZWxmLmFkZF9wYXNzd29yZCA9IHNlbGYucGFzc3dkLmFkZF9wYXNzd29yZAogICAgICAgIHNlbGYucmV0cmllZCA9IDAKICAgICAgICBzZWxmLm5vbmNlX2NvdW50ID0gMAogICAgICAgIHNlbGYubGFzdF9ub25jZSA9IE5vbmUKCiAgICBkZWYgcmVzZXRfcmV0cnlfY291bnQoc2VsZik6CiAgICAgICAgc2VsZi5yZXRyaWVkID0gMAoKICAgIGRlZiBodHRwX2Vycm9yX2F1dGhfcmVxZWQoc2VsZiwgYXV0aF9oZWFkZXIsIGhvc3QsIHJlcSwgaGVhZGVycyk6CiAgICAgICAgYXV0aHJlcSA9IGhlYWRlcnMuZ2V0KGF1dGhfaGVhZGVyLCBOb25lKQogICAgICAgIGlmIHNlbGYucmV0cmllZCA+IDU6CiAgICAgICAgICAgICMgRG9uJ3QgZmFpbCBlbmRsZXNzbHkgLSBpZiB3ZSBmYWlsZWQgb25jZSwgd2UnbGwgcHJvYmFibHkKICAgICAgICAgICAgIyBmYWlsIGEgc2Vjb25kIHRpbWUuIEhtLiBVbmxlc3MgdGhlIFBhc3N3b3JkIE1hbmFnZXIgaXMKICAgICAgICAgICAgIyBwcm9tcHRpbmcgZm9yIHRoZSBpbmZvcm1hdGlvbi4gQ3JhcC4gVGhpcyBpc24ndCBncmVhdAogICAgICAgICAgICAjIGJ1dCBpdCdzIGJldHRlciB0aGFuIHRoZSBjdXJyZW50ICdyZXBlYXQgdW50aWwgcmVjdXJzaW9uCiAgICAgICAgICAgICMgZGVwdGggZXhjZWVkZWQnIGFwcHJvYWNoIDx3aW5rPgogICAgICAgICAgICByYWlzZSBIVFRQRXJyb3IocmVxLmZ1bGxfdXJsLCA0MDEsICJkaWdlc3QgYXV0aCBmYWlsZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycywgTm9uZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnJldHJpZWQgKz0gMQogICAgICAgIGlmIGF1dGhyZXE6CiAgICAgICAgICAgIHNjaGVtZSA9IGF1dGhyZXEuc3BsaXQoKVswXQogICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSA9PSAnZGlnZXN0JzoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2h0dHBfZGlnZXN0X2F1dGgocmVxLCBhdXRocmVxKQogICAgICAgICAgICBlbGlmIHNjaGVtZS5sb3dlcigpICE9ICdiYXNpYyc6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyIGRvZXMgbm90IHN1cHBvcnQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdGhlIGZvbGxvd2luZyBzY2hlbWU6ICclcyciICUgc2NoZW1lKQoKICAgIGRlZiByZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHNlbGYsIHJlcSwgYXV0aCk6CiAgICAgICAgdG9rZW4sIGNoYWxsZW5nZSA9IGF1dGguc3BsaXQoJyAnLCAxKQogICAgICAgIGNoYWwgPSBwYXJzZV9rZXF2X2xpc3QoZmlsdGVyKE5vbmUsIHBhcnNlX2h0dHBfbGlzdChjaGFsbGVuZ2UpKSkKICAgICAgICBhdXRoID0gc2VsZi5nZXRfYXV0aG9yaXphdGlvbihyZXEsIGNoYWwpCiAgICAgICAgaWYgYXV0aDoKICAgICAgICAgICAgYXV0aF92YWwgPSAnRGlnZXN0ICVzJyAlIGF1dGgKICAgICAgICAgICAgaWYgcmVxLmhlYWRlcnMuZ2V0KHNlbGYuYXV0aF9oZWFkZXIsIE5vbmUpID09IGF1dGhfdmFsOgogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgcmVxLmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKHNlbGYuYXV0aF9oZWFkZXIsIGF1dGhfdmFsKQogICAgICAgICAgICByZXNwID0gc2VsZi5wYXJlbnQub3BlbihyZXEsIHRpbWVvdXQ9cmVxLnRpbWVvdXQpCiAgICAgICAgICAgIHJldHVybiByZXNwCgogICAgZGVmIGdldF9jbm9uY2Uoc2VsZiwgbm9uY2UpOgogICAgICAgICMgVGhlIGNub25jZS12YWx1ZSBpcyBhbiBvcGFxdWUKICAgICAgICAjIHF1b3RlZCBzdHJpbmcgdmFsdWUgcHJvdmlkZWQgYnkgdGhlIGNsaWVudCBhbmQgdXNlZCBieSBib3RoIGNsaWVudAogICAgICAgICMgYW5kIHNlcnZlciB0byBhdm9pZCBjaG9zZW4gcGxhaW50ZXh0IGF0dGFja3MsIHRvIHByb3ZpZGUgbXV0dWFsCiAgICAgICAgIyBhdXRoZW50aWNhdGlvbiwgYW5kIHRvIHByb3ZpZGUgc29tZSBtZXNzYWdlIGludGVncml0eSBwcm90ZWN0aW9uLgogICAgICAgICMgVGhpcyBpc24ndCBhIGZhYnVsb3VzIGVmZm9ydCwgYnV0IGl0J3MgcHJvYmFibHkgR29vZCBFbm91Z2guCiAgICAgICAgcyA9ICIlczolczolczoiICUgKHNlbGYubm9uY2VfY291bnQsIG5vbmNlLCB0aW1lLmN0aW1lKCkpCiAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgX3JhbmRvbWJ5dGVzKDgpCiAgICAgICAgZGlnID0gaGFzaGxpYi5zaGExKGIpLmhleGRpZ2VzdCgpCiAgICAgICAgcmV0dXJuIGRpZ1s6MTZdCgogICAgZGVmIGdldF9hdXRob3JpemF0aW9uKHNlbGYsIHJlcSwgY2hhbCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZWFsbSA9IGNoYWxbJ3JlYWxtJ10KICAgICAgICAgICAgbm9uY2UgPSBjaGFsWydub25jZSddCiAgICAgICAgICAgIHFvcCA9IGNoYWwuZ2V0KCdxb3AnKQogICAgICAgICAgICBhbGdvcml0aG0gPSBjaGFsLmdldCgnYWxnb3JpdGhtJywgJ01ENScpCiAgICAgICAgICAgICMgbW9kX2RpZ2VzdCBkb2Vzbid0IHNlbmQgYW4gb3BhcXVlLCBldmVuIHRob3VnaCBpdCBpc24ndAogICAgICAgICAgICAjIHN1cHBvc2VkIHRvIGJlIG9wdGlvbmFsCiAgICAgICAgICAgIG9wYXF1ZSA9IGNoYWwuZ2V0KCdvcGFxdWUnLCBOb25lKQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgSCwgS0QgPSBzZWxmLmdldF9hbGdvcml0aG1faW1wbHMoYWxnb3JpdGhtKQogICAgICAgIGlmIEggaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgdXNlciwgcHcgPSBzZWxmLnBhc3N3ZC5maW5kX3VzZXJfcGFzc3dvcmQocmVhbG0sIHJlcS5mdWxsX3VybCkKICAgICAgICBpZiB1c2VyIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgICAgICMgWFhYIG5vdCBpbXBsZW1lbnRlZCB5ZXQKICAgICAgICBpZiByZXEuZGF0YSBpcyBub3QgTm9uZToKICAgICAgICAgICAgZW50ZGlnID0gc2VsZi5nZXRfZW50aXR5X2RpZ2VzdChyZXEuZGF0YSwgY2hhbCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbnRkaWcgPSBOb25lCgogICAgICAgIEExID0gIiVzOiVzOiVzIiAlICh1c2VyLCByZWFsbSwgcHcpCiAgICAgICAgQTIgPSAiJXM6JXMiICUgKHJlcS5nZXRfbWV0aG9kKCksCiAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYIHNlbGVjdG9yOiB3aGF0IGFib3V0IHByb3hpZXMgYW5kIGZ1bGwgdXJscwogICAgICAgICAgICAgICAgICAgICAgICByZXEuc2VsZWN0b3IpCiAgICAgICAgIyBOT1RFOiBBcyBwZXIgIFJGQyAyNjE3LCB3aGVuIHNlcnZlciBzZW5kcyAiYXV0aCxhdXRoLWludCIsIHRoZSBjbGllbnQgY291bGQgdXNlIGVpdGhlciBgYXV0aGAKICAgICAgICAjICAgICBvciBgYXV0aC1pbnRgIHRvIHRoZSByZXNwb25zZSBiYWNrLiB3ZSB1c2UgYGF1dGhgIHRvIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2suCiAgICAgICAgaWYgcW9wIGlzIE5vbmU6CiAgICAgICAgICAgIHJlc3BkaWcgPSBLRChIKEExKSwgIiVzOiVzIiAlIChub25jZSwgSChBMikpKQogICAgICAgIGVsaWYgJ2F1dGgnIGluIHFvcC5zcGxpdCgnLCcpOgogICAgICAgICAgICBpZiBub25jZSA9PSBzZWxmLmxhc3Rfbm9uY2U6CiAgICAgICAgICAgICAgICBzZWxmLm5vbmNlX2NvdW50ICs9IDEKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYubm9uY2VfY291bnQgPSAxCiAgICAgICAgICAgICAgICBzZWxmLmxhc3Rfbm9uY2UgPSBub25jZQogICAgICAgICAgICBuY3ZhbHVlID0gJyUwOHgnICUgc2VsZi5ub25jZV9jb3VudAogICAgICAgICAgICBjbm9uY2UgPSBzZWxmLmdldF9jbm9uY2Uobm9uY2UpCiAgICAgICAgICAgIG5vbmNlYml0ID0gIiVzOiVzOiVzOiVzOiVzIiAlIChub25jZSwgbmN2YWx1ZSwgY25vbmNlLCAnYXV0aCcsIEgoQTIpKQogICAgICAgICAgICByZXNwZGlnID0gS0QoSChBMSksIG5vbmNlYml0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgWFhYIGhhbmRsZSBhdXRoLWludC4KICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoInFvcCAnJXMnIGlzIG5vdCBzdXBwb3J0ZWQuIiAlIHFvcCkKCiAgICAgICAgIyBYWFggc2hvdWxkIHRoZSBwYXJ0aWFsIGRpZ2VzdHMgYmUgZW5jb2RlZCB0b28/CgogICAgICAgIGJhc2UgPSAndXNlcm5hbWU9IiVzIiwgcmVhbG09IiVzIiwgbm9uY2U9IiVzIiwgdXJpPSIlcyIsICcgXAogICAgICAgICAgICAgICAncmVzcG9uc2U9IiVzIicgJSAodXNlciwgcmVhbG0sIG5vbmNlLCByZXEuc2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwZGlnKQogICAgICAgIGlmIG9wYXF1ZToKICAgICAgICAgICAgYmFzZSArPSAnLCBvcGFxdWU9IiVzIicgJSBvcGFxdWUKICAgICAgICBpZiBlbnRkaWc6CiAgICAgICAgICAgIGJhc2UgKz0gJywgZGlnZXN0PSIlcyInICUgZW50ZGlnCiAgICAgICAgYmFzZSArPSAnLCBhbGdvcml0aG09IiVzIicgJSBhbGdvcml0aG0KICAgICAgICBpZiBxb3A6CiAgICAgICAgICAgIGJhc2UgKz0gJywgcW9wPWF1dGgsIG5jPSVzLCBjbm9uY2U9IiVzIicgJSAobmN2YWx1ZSwgY25vbmNlKQogICAgICAgIHJldHVybiBiYXNlCgogICAgZGVmIGdldF9hbGdvcml0aG1faW1wbHMoc2VsZiwgYWxnb3JpdGhtKToKICAgICAgICAjIGxhbWJkYXMgYXNzdW1lIGRpZ2VzdCBtb2R1bGVzIGFyZSBpbXBvcnRlZCBhdCB0aGUgdG9wIGxldmVsCiAgICAgICAgaWYgYWxnb3JpdGhtID09ICdNRDUnOgogICAgICAgICAgICBIID0gbGFtYmRhIHg6IGhhc2hsaWIubWQ1KHguZW5jb2RlKCJhc2NpaSIpKS5oZXhkaWdlc3QoKQogICAgICAgIGVsaWYgYWxnb3JpdGhtID09ICdTSEEnOgogICAgICAgICAgICBIID0gbGFtYmRhIHg6IGhhc2hsaWIuc2hhMSh4LmVuY29kZSgiYXNjaWkiKSkuaGV4ZGlnZXN0KCkKICAgICAgICAjIFhYWCBNRDUtc2VzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIGRpZ2VzdCBhdXRoZW50aWNhdGlvbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFsZ29yaXRobSAlciIgJSBhbGdvcml0aG0pCiAgICAgICAgS0QgPSBsYW1iZGEgcywgZDogSCgiJXM6JXMiICUgKHMsIGQpKQogICAgICAgIHJldHVybiBILCBLRAoKICAgIGRlZiBnZXRfZW50aXR5X2RpZ2VzdChzZWxmLCBkYXRhLCBjaGFsKToKICAgICAgICAjIFhYWCBub3QgaW1wbGVtZW50ZWQgeWV0CiAgICAgICAgcmV0dXJuIE5vbmUKCgpjbGFzcyBIVFRQRGlnZXN0QXV0aEhhbmRsZXIoQmFzZUhhbmRsZXIsIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXIpOgogICAgIiIiQW4gYXV0aGVudGljYXRpb24gcHJvdG9jb2wgZGVmaW5lZCBieSBSRkMgMjA2OQoKICAgIERpZ2VzdCBhdXRoZW50aWNhdGlvbiBpbXByb3ZlcyBvbiBiYXNpYyBhdXRoZW50aWNhdGlvbiBiZWNhdXNlIGl0CiAgICBkb2VzIG5vdCB0cmFuc21pdCBwYXNzd29yZHMgaW4gdGhlIGNsZWFyLgogICAgIiIiCgogICAgYXV0aF9oZWFkZXIgPSAnQXV0aG9yaXphdGlvbicKICAgIGhhbmRsZXJfb3JkZXIgPSA0OTAgICMgYmVmb3JlIEJhc2ljIGF1dGgKCiAgICBkZWYgaHR0cF9lcnJvcl80MDEoc2VsZiwgcmVxLCBmcCwgY29kZSwgbXNnLCBoZWFkZXJzKToKICAgICAgICBob3N0ID0gdXJscGFyc2UocmVxLmZ1bGxfdXJsKVsxXQogICAgICAgIHJldHJ5ID0gc2VsZi5odHRwX2Vycm9yX2F1dGhfcmVxZWQoJ3d3dy1hdXRoZW50aWNhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwgcmVxLCBoZWFkZXJzKQogICAgICAgIHNlbGYucmVzZXRfcmV0cnlfY291bnQoKQogICAgICAgIHJldHVybiByZXRyeQoKCmNsYXNzIFByb3h5RGlnZXN0QXV0aEhhbmRsZXIoQmFzZUhhbmRsZXIsIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXIpOgoKICAgIGF1dGhfaGVhZGVyID0gJ1Byb3h5LUF1dGhvcml6YXRpb24nCiAgICBoYW5kbGVyX29yZGVyID0gNDkwICAjIGJlZm9yZSBCYXNpYyBhdXRoCgogICAgZGVmIGh0dHBfZXJyb3JfNDA3KHNlbGYsIHJlcSwgZnAsIGNvZGUsIG1zZywgaGVhZGVycyk6CiAgICAgICAgaG9zdCA9IHJlcS5ob3N0CiAgICAgICAgcmV0cnkgPSBzZWxmLmh0dHBfZXJyb3JfYXV0aF9yZXFlZCgncHJveHktYXV0aGVudGljYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QsIHJlcSwgaGVhZGVycykKICAgICAgICBzZWxmLnJlc2V0X3JldHJ5X2NvdW50KCkKICAgICAgICByZXR1cm4gcmV0cnkKCmNsYXNzIEFic3RyYWN0SFRUUEhhbmRsZXIoQmFzZUhhbmRsZXIpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWJ1Z2xldmVsPTApOgogICAgICAgIHNlbGYuX2RlYnVnbGV2ZWwgPSBkZWJ1Z2xldmVsCgogICAgZGVmIHNldF9odHRwX2RlYnVnbGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgIHNlbGYuX2RlYnVnbGV2ZWwgPSBsZXZlbAoKICAgIGRlZiBfZ2V0X2NvbnRlbnRfbGVuZ3RoKHNlbGYsIHJlcXVlc3QpOgogICAgICAgIHJldHVybiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKAogICAgICAgICAgICByZXF1ZXN0LmRhdGEsCiAgICAgICAgICAgIHJlcXVlc3QuZ2V0X21ldGhvZCgpKQoKICAgIGRlZiBkb19yZXF1ZXN0XyhzZWxmLCByZXF1ZXN0KToKICAgICAgICBob3N0ID0gcmVxdWVzdC5ob3N0CiAgICAgICAgaWYgbm90IGhvc3Q6CiAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKCdubyBob3N0IGdpdmVuJykKCiAgICAgICAgaWYgcmVxdWVzdC5kYXRhIGlzIG5vdCBOb25lOiAgIyBQT1NUCiAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LmRhdGEKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgogICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMsIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLCAiIFwKICAgICAgICAgICAgICAgICAgICAgICJvciBhIGZpbGUgb2JqZWN0LiBJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgogICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykKICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC10eXBlJyk6CiAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAogICAgICAgICAgICAgICAgICAgICdDb250ZW50LXR5cGUnLAogICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKQogICAgICAgICAgICBpZiAobm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKQogICAgICAgICAgICAgICAgICAgIGFuZCBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpKToKICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gc2VsZi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKHJlcXVlc3QpCiAgICAgICAgICAgICAgICBpZiBjb250ZW50X2xlbmd0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJywgc3RyKGNvbnRlbnRfbGVuZ3RoKSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUcmFuc2Zlci1lbmNvZGluZycsICdjaHVua2VkJykKCiAgICAgICAgc2VsX2hvc3QgPSBob3N0CiAgICAgICAgaWYgcmVxdWVzdC5oYXNfcHJveHkoKToKICAgICAgICAgICAgc2NoZW1lLCBzZWwgPSBfc3BsaXR0eXBlKHJlcXVlc3Quc2VsZWN0b3IpCiAgICAgICAgICAgIHNlbF9ob3N0LCBzZWxfcGF0aCA9IF9zcGxpdGhvc3Qoc2VsKQogICAgICAgIGlmIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0hvc3QnKToKICAgICAgICAgICAgcmVxdWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcignSG9zdCcsIHNlbF9ob3N0KQogICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLnBhcmVudC5hZGRoZWFkZXJzOgogICAgICAgICAgICBuYW1lID0gbmFtZS5jYXBpdGFsaXplKCkKICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QuaGFzX2hlYWRlcihuYW1lKToKICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIobmFtZSwgdmFsdWUpCgogICAgICAgIHJldHVybiByZXF1ZXN0CgogICAgZGVmIGRvX29wZW4oc2VsZiwgaHR0cF9jbGFzcywgcmVxLCAqKmh0dHBfY29ubl9hcmdzKToKICAgICAgICAiIiJSZXR1cm4gYW4gSFRUUFJlc3BvbnNlIG9iamVjdCBmb3IgdGhlIHJlcXVlc3QsIHVzaW5nIGh0dHBfY2xhc3MuCgogICAgICAgIGh0dHBfY2xhc3MgbXVzdCBpbXBsZW1lbnQgdGhlIEhUVFBDb25uZWN0aW9uIEFQSSBmcm9tIGh0dHAuY2xpZW50LgogICAgICAgICIiIgogICAgICAgIGhvc3QgPSByZXEuaG9zdAogICAgICAgIGlmIG5vdCBob3N0OgogICAgICAgICAgICByYWlzZSBVUkxFcnJvcignbm8gaG9zdCBnaXZlbicpCgogICAgICAgICMgd2lsbCBwYXJzZSBob3N0OnBvcnQKICAgICAgICBoID0gaHR0cF9jbGFzcyhob3N0LCB0aW1lb3V0PXJlcS50aW1lb3V0LCAqKmh0dHBfY29ubl9hcmdzKQogICAgICAgIGguc2V0X2RlYnVnbGV2ZWwoc2VsZi5fZGVidWdsZXZlbCkKCiAgICAgICAgaGVhZGVycyA9IGRpY3QocmVxLnVucmVkaXJlY3RlZF9oZHJzKQogICAgICAgIGhlYWRlcnMudXBkYXRlKHtrOiB2IGZvciBrLCB2IGluIHJlcS5oZWFkZXJzLml0ZW1zKCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgayBub3QgaW4gaGVhZGVyc30pCgogICAgICAgICMgVE9ETyhqaHlsdG9uKTogU2hvdWxkIHRoaXMgYmUgcmVkZXNpZ25lZCB0byBoYW5kbGUKICAgICAgICAjIHBlcnNpc3RlbnQgY29ubmVjdGlvbnM/CgogICAgICAgICMgV2Ugd2FudCB0byBtYWtlIGFuIEhUVFAvMS4xIHJlcXVlc3QsIGJ1dCB0aGUgYWRkaW5mb3VybAogICAgICAgICMgY2xhc3MgaXNuJ3QgcHJlcGFyZWQgdG8gZGVhbCB3aXRoIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uLgogICAgICAgICMgSXQgd2lsbCB0cnkgdG8gcmVhZCBhbGwgcmVtYWluaW5nIGRhdGEgZnJvbSB0aGUgc29ja2V0LAogICAgICAgICMgd2hpY2ggd2lsbCBibG9jayB3aGlsZSB0aGUgc2VydmVyIHdhaXRzIGZvciB0aGUgbmV4dCByZXF1ZXN0LgogICAgICAgICMgU28gbWFrZSBzdXJlIHRoZSBjb25uZWN0aW9uIGdldHMgY2xvc2VkIGFmdGVyIHRoZSAob25seSkKICAgICAgICAjIHJlcXVlc3QuCiAgICAgICAgaGVhZGVyc1siQ29ubmVjdGlvbiJdID0gImNsb3NlIgogICAgICAgIGhlYWRlcnMgPSB7bmFtZS50aXRsZSgpOiB2YWwgZm9yIG5hbWUsIHZhbCBpbiBoZWFkZXJzLml0ZW1zKCl9CgogICAgICAgIGlmIHJlcS5fdHVubmVsX2hvc3Q6CiAgICAgICAgICAgIHR1bm5lbF9oZWFkZXJzID0ge30KICAgICAgICAgICAgcHJveHlfYXV0aF9oZHIgPSAiUHJveHktQXV0aG9yaXphdGlvbiIKICAgICAgICAgICAgaWYgcHJveHlfYXV0aF9oZHIgaW4gaGVhZGVyczoKICAgICAgICAgICAgICAgIHR1bm5lbF9oZWFkZXJzW3Byb3h5X2F1dGhfaGRyXSA9IGhlYWRlcnNbcHJveHlfYXV0aF9oZHJdCiAgICAgICAgICAgICAgICAjIFByb3h5LUF1dGhvcml6YXRpb24gc2hvdWxkIG5vdCBiZSBzZW50IHRvIG9yaWdpbgogICAgICAgICAgICAgICAgIyBzZXJ2ZXIuCiAgICAgICAgICAgICAgICBkZWwgaGVhZGVyc1twcm94eV9hdXRoX2hkcl0KICAgICAgICAgICAgaC5zZXRfdHVubmVsKHJlcS5fdHVubmVsX2hvc3QsIGhlYWRlcnM9dHVubmVsX2hlYWRlcnMpCgogICAgICAgIHRyeToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaC5yZXF1ZXN0KHJlcS5nZXRfbWV0aG9kKCksIHJlcS5zZWxlY3RvciwgcmVxLmRhdGEsIGhlYWRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9cmVxLmhhc19oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykpCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjogIyB0aW1lb3V0IGVycm9yCiAgICAgICAgICAgICAgICByYWlzZSBVUkxFcnJvcihlcnIpCiAgICAgICAgICAgIHIgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIGguY2xvc2UoKQogICAgICAgICAgICByYWlzZQoKICAgICAgICAjIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3Qgc2VuZCB1cyBhICdDb25uZWN0aW9uOiBjbG9zZScgaGVhZGVyLAogICAgICAgICMgSFRUUENvbm5lY3Rpb24gYXNzdW1lcyB0aGUgc29ja2V0IHNob3VsZCBiZSBsZWZ0IG9wZW4uIE1hbnVhbGx5CiAgICAgICAgIyBtYXJrIHRoZSBzb2NrZXQgdG8gYmUgY2xvc2VkIHdoZW4gdGhpcyByZXNwb25zZSBvYmplY3QgZ29lcyBhd2F5LgogICAgICAgIGlmIGguc29jazoKICAgICAgICAgICAgaC5zb2NrLmNsb3NlKCkKICAgICAgICAgICAgaC5zb2NrID0gTm9uZQoKICAgICAgICByLnVybCA9IHJlcS5nZXRfZnVsbF91cmwoKQogICAgICAgICMgVGhpcyBsaW5lIHJlcGxhY2VzIHRoZSAubXNnIGF0dHJpYnV0ZSBvZiB0aGUgSFRUUFJlc3BvbnNlCiAgICAgICAgIyB3aXRoIC5oZWFkZXJzLCBiZWNhdXNlIHVybGxpYiBjbGllbnRzIGV4cGVjdCB0aGUgcmVzcG9uc2UgdG8KICAgICAgICAjIGhhdmUgdGhlIHJlYXNvbiBpbiAubXNnLiAgSXQgd291bGQgYmUgZ29vZCB0byBtYXJrIHRoaXMKICAgICAgICAjIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkIGFuZCBnZXQgdGhlbiB0byB1c2UgaW5mbygpIG9yCiAgICAgICAgIyAuaGVhZGVycy4KICAgICAgICByLm1zZyA9IHIucmVhc29uCiAgICAgICAgcmV0dXJuIHIKCgpjbGFzcyBIVFRQSGFuZGxlcihBYnN0cmFjdEhUVFBIYW5kbGVyKToKCiAgICBkZWYgaHR0cF9vcGVuKHNlbGYsIHJlcSk6CiAgICAgICAgcmV0dXJuIHNlbGYuZG9fb3BlbihodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiwgcmVxKQoKICAgIGh0dHBfcmVxdWVzdCA9IEFic3RyYWN0SFRUUEhhbmRsZXIuZG9fcmVxdWVzdF8KCmlmIGhhc2F0dHIoaHR0cC5jbGllbnQsICdIVFRQU0Nvbm5lY3Rpb24nKToKCiAgICBjbGFzcyBIVFRQU0hhbmRsZXIoQWJzdHJhY3RIVFRQSGFuZGxlcik6CgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWJ1Z2xldmVsPTAsIGNvbnRleHQ9Tm9uZSwgY2hlY2tfaG9zdG5hbWU9Tm9uZSk6CiAgICAgICAgICAgIEFic3RyYWN0SFRUUEhhbmRsZXIuX19pbml0X18oc2VsZiwgZGVidWdsZXZlbCkKICAgICAgICAgICAgc2VsZi5fY29udGV4dCA9IGNvbnRleHQKICAgICAgICAgICAgc2VsZi5fY2hlY2tfaG9zdG5hbWUgPSBjaGVja19ob3N0bmFtZQoKICAgICAgICBkZWYgaHR0cHNfb3BlbihzZWxmLCByZXEpOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kb19vcGVuKGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiwgcmVxLAogICAgICAgICAgICAgICAgY29udGV4dD1zZWxmLl9jb250ZXh0LCBjaGVja19ob3N0bmFtZT1zZWxmLl9jaGVja19ob3N0bmFtZSkKCiAgICAgICAgaHR0cHNfcmVxdWVzdCA9IEFic3RyYWN0SFRUUEhhbmRsZXIuZG9fcmVxdWVzdF8KCiAgICBfX2FsbF9fLmFwcGVuZCgnSFRUUFNIYW5kbGVyJykKCmNsYXNzIEhUVFBDb29raWVQcm9jZXNzb3IoQmFzZUhhbmRsZXIpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tpZWphcj1Ob25lKToKICAgICAgICBpbXBvcnQgaHR0cC5jb29raWVqYXIKICAgICAgICBpZiBjb29raWVqYXIgaXMgTm9uZToKICAgICAgICAgICAgY29va2llamFyID0gaHR0cC5jb29raWVqYXIuQ29va2llSmFyKCkKICAgICAgICBzZWxmLmNvb2tpZWphciA9IGNvb2tpZWphcgoKICAgIGRlZiBodHRwX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgc2VsZi5jb29raWVqYXIuYWRkX2Nvb2tpZV9oZWFkZXIocmVxdWVzdCkKICAgICAgICByZXR1cm4gcmVxdWVzdAoKICAgIGRlZiBodHRwX3Jlc3BvbnNlKHNlbGYsIHJlcXVlc3QsIHJlc3BvbnNlKToKICAgICAgICBzZWxmLmNvb2tpZWphci5leHRyYWN0X2Nvb2tpZXMocmVzcG9uc2UsIHJlcXVlc3QpCiAgICAgICAgcmV0dXJuIHJlc3BvbnNlCgogICAgaHR0cHNfcmVxdWVzdCA9IGh0dHBfcmVxdWVzdAogICAgaHR0cHNfcmVzcG9uc2UgPSBodHRwX3Jlc3BvbnNlCgpjbGFzcyBVbmtub3duSGFuZGxlcihCYXNlSGFuZGxlcik6CiAgICBkZWYgdW5rbm93bl9vcGVuKHNlbGYsIHJlcSk6CiAgICAgICAgdHlwZSA9IHJlcS50eXBlCiAgICAgICAgcmFpc2UgVVJMRXJyb3IoJ3Vua25vd24gdXJsIHR5cGU6ICVzJyAlIHR5cGUpCgpkZWYgcGFyc2Vfa2Vxdl9saXN0KGwpOgogICAgIiIiUGFyc2UgbGlzdCBvZiBrZXk9dmFsdWUgc3RyaW5ncyB3aGVyZSBrZXlzIGFyZSBub3QgZHVwbGljYXRlZC4iIiIKICAgIHBhcnNlZCA9IHt9CiAgICBmb3IgZWx0IGluIGw6CiAgICAgICAgaywgdiA9IGVsdC5zcGxpdCgnPScsIDEpCiAgICAgICAgaWYgdlswXSA9PSAnIicgYW5kIHZbLTFdID09ICciJzoKICAgICAgICAgICAgdiA9IHZbMTotMV0KICAgICAgICBwYXJzZWRba10gPSB2CiAgICByZXR1cm4gcGFyc2VkCgpkZWYgcGFyc2VfaHR0cF9saXN0KHMpOgogICAgIiIiUGFyc2UgbGlzdHMgYXMgZGVzY3JpYmVkIGJ5IFJGQyAyMDY4IFNlY3Rpb24gMi4KCiAgICBJbiBwYXJ0aWN1bGFyLCBwYXJzZSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgd2hlcmUgdGhlIGVsZW1lbnRzIG9mCiAgICB0aGUgbGlzdCBtYXkgaW5jbHVkZSBxdW90ZWQtc3RyaW5ncy4gIEEgcXVvdGVkLXN0cmluZyBjb3VsZAogICAgY29udGFpbiBhIGNvbW1hLiAgQSBub24tcXVvdGVkIHN0cmluZyBjb3VsZCBoYXZlIHF1b3RlcyBpbiB0aGUKICAgIG1pZGRsZS4gIE5laXRoZXIgY29tbWFzIG5vciBxdW90ZXMgY291bnQgaWYgdGhleSBhcmUgZXNjYXBlZC4KICAgIE9ubHkgZG91YmxlLXF1b3RlcyBjb3VudCwgbm90IHNpbmdsZS1xdW90ZXMuCiAgICAiIiIKICAgIHJlcyA9IFtdCiAgICBwYXJ0ID0gJycKCiAgICBlc2NhcGUgPSBxdW90ZSA9IEZhbHNlCiAgICBmb3IgY3VyIGluIHM6CiAgICAgICAgaWYgZXNjYXBlOgogICAgICAgICAgICBwYXJ0ICs9IGN1cgogICAgICAgICAgICBlc2NhcGUgPSBGYWxzZQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIHF1b3RlOgogICAgICAgICAgICBpZiBjdXIgPT0gJ1xcJzoKICAgICAgICAgICAgICAgIGVzY2FwZSA9IFRydWUKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsaWYgY3VyID09ICciJzoKICAgICAgICAgICAgICAgIHF1b3RlID0gRmFsc2UKICAgICAgICAgICAgcGFydCArPSBjdXIKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgaWYgY3VyID09ICcsJzoKICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0KQogICAgICAgICAgICBwYXJ0ID0gJycKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgaWYgY3VyID09ICciJzoKICAgICAgICAgICAgcXVvdGUgPSBUcnVlCgogICAgICAgIHBhcnQgKz0gY3VyCgogICAgIyBhcHBlbmQgbGFzdCBwYXJ0CiAgICBpZiBwYXJ0OgogICAgICAgIHJlcy5hcHBlbmQocGFydCkKCiAgICByZXR1cm4gW3BhcnQuc3RyaXAoKSBmb3IgcGFydCBpbiByZXNdCgpjbGFzcyBGaWxlSGFuZGxlcihCYXNlSGFuZGxlcik6CiAgICAjIFVzZSBsb2NhbCBmaWxlIG9yIEZUUCBkZXBlbmRpbmcgb24gZm9ybSBvZiBVUkwKICAgIGRlZiBmaWxlX29wZW4oc2VsZiwgcmVxKToKICAgICAgICB1cmwgPSByZXEuc2VsZWN0b3IKICAgICAgICBpZiB1cmxbOjJdID09ICcvLycgYW5kIHVybFsyOjNdICE9ICcvJyBhbmQgKHJlcS5ob3N0IGFuZAogICAgICAgICAgICAgICAgcmVxLmhvc3QgIT0gJ2xvY2FsaG9zdCcpOgogICAgICAgICAgICBpZiBub3QgcmVxLmhvc3QgaW4gc2VsZi5nZXRfbmFtZXMoKToKICAgICAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKCJmaWxlOi8vIHNjaGVtZSBpcyBzdXBwb3J0ZWQgb25seSBvbiBsb2NhbGhvc3QiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm9wZW5fbG9jYWxfZmlsZShyZXEpCgogICAgIyBuYW1lcyBmb3IgdGhlIGxvY2FsaG9zdAogICAgbmFtZXMgPSBOb25lCiAgICBkZWYgZ2V0X25hbWVzKHNlbGYpOgogICAgICAgIGlmIEZpbGVIYW5kbGVyLm5hbWVzIGlzIE5vbmU6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIEZpbGVIYW5kbGVyLm5hbWVzID0gdHVwbGUoCiAgICAgICAgICAgICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWVfZXgoJ2xvY2FsaG9zdCcpWzJdICsKICAgICAgICAgICAgICAgICAgICBzb2NrZXQuZ2V0aG9zdGJ5bmFtZV9leChzb2NrZXQuZ2V0aG9zdG5hbWUoKSlbMl0pCiAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZ2FpZXJyb3I6CiAgICAgICAgICAgICAgICBGaWxlSGFuZGxlci5uYW1lcyA9IChzb2NrZXQuZ2V0aG9zdGJ5bmFtZSgnbG9jYWxob3N0JyksKQogICAgICAgIHJldHVybiBGaWxlSGFuZGxlci5uYW1lcwoKICAgICMgbm90IGVudGlyZWx5IHN1cmUgd2hhdCB0aGUgcnVsZXMgYXJlIGhlcmUKICAgIGRlZiBvcGVuX2xvY2FsX2ZpbGUoc2VsZiwgcmVxKToKICAgICAgICBpbXBvcnQgZW1haWwudXRpbHMKICAgICAgICBpbXBvcnQgbWltZXR5cGVzCiAgICAgICAgaG9zdCA9IHJlcS5ob3N0CiAgICAgICAgZmlsZW5hbWUgPSByZXEuc2VsZWN0b3IKICAgICAgICBsb2NhbGZpbGUgPSB1cmwycGF0aG5hbWUoZmlsZW5hbWUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzdGF0cyA9IG9zLnN0YXQobG9jYWxmaWxlKQogICAgICAgICAgICBzaXplID0gc3RhdHMuc3Rfc2l6ZQogICAgICAgICAgICBtb2RpZmllZCA9IGVtYWlsLnV0aWxzLmZvcm1hdGRhdGUoc3RhdHMuc3RfbXRpbWUsIHVzZWdtdD1UcnVlKQogICAgICAgICAgICBtdHlwZSA9IG1pbWV0eXBlcy5ndWVzc190eXBlKGZpbGVuYW1lKVswXQogICAgICAgICAgICBoZWFkZXJzID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygKICAgICAgICAgICAgICAgICdDb250ZW50LXR5cGU6ICVzXG5Db250ZW50LWxlbmd0aDogJWRcbkxhc3QtbW9kaWZpZWQ6ICVzXG4nICUKICAgICAgICAgICAgICAgIChtdHlwZSBvciAndGV4dC9wbGFpbicsIHNpemUsIG1vZGlmaWVkKSkKICAgICAgICAgICAgaWYgaG9zdDoKICAgICAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBfc3BsaXRwb3J0KGhvc3QpCiAgICAgICAgICAgIGlmIG5vdCBob3N0IG9yIFwKICAgICAgICAgICAgICAgIChub3QgcG9ydCBhbmQgX3NhZmVfZ2V0aG9zdGJ5bmFtZShob3N0KSBpbiBzZWxmLmdldF9uYW1lcygpKToKICAgICAgICAgICAgICAgIGlmIGhvc3Q6CiAgICAgICAgICAgICAgICAgICAgb3JpZ3VybCA9ICdmaWxlOi8vJyArIGhvc3QgKyBmaWxlbmFtZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBvcmlndXJsID0gJ2ZpbGU6Ly8nICsgZmlsZW5hbWUKICAgICAgICAgICAgICAgIHJldHVybiBhZGRpbmZvdXJsKG9wZW4obG9jYWxmaWxlLCAncmInKSwgaGVhZGVycywgb3JpZ3VybCkKICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleHA6CiAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKGV4cCkKICAgICAgICByYWlzZSBVUkxFcnJvcignZmlsZSBub3Qgb24gbG9jYWwgaG9zdCcpCgpkZWYgX3NhZmVfZ2V0aG9zdGJ5bmFtZShob3N0KToKICAgIHRyeToKICAgICAgICByZXR1cm4gc29ja2V0LmdldGhvc3RieW5hbWUoaG9zdCkKICAgIGV4Y2VwdCBzb2NrZXQuZ2FpZXJyb3I6CiAgICAgICAgcmV0dXJuIE5vbmUKCmNsYXNzIEZUUEhhbmRsZXIoQmFzZUhhbmRsZXIpOgogICAgZGVmIGZ0cF9vcGVuKHNlbGYsIHJlcSk6CiAgICAgICAgaW1wb3J0IGZ0cGxpYgogICAgICAgIGltcG9ydCBtaW1ldHlwZXMKICAgICAgICBob3N0ID0gcmVxLmhvc3QKICAgICAgICBpZiBub3QgaG9zdDoKICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoJ2Z0cCBlcnJvcjogbm8gaG9zdCBnaXZlbicpCiAgICAgICAgaG9zdCwgcG9ydCA9IF9zcGxpdHBvcnQoaG9zdCkKICAgICAgICBpZiBwb3J0IGlzIE5vbmU6CiAgICAgICAgICAgIHBvcnQgPSBmdHBsaWIuRlRQX1BPUlQKICAgICAgICBlbHNlOgogICAgICAgICAgICBwb3J0ID0gaW50KHBvcnQpCgogICAgICAgICMgdXNlcm5hbWUvcGFzc3dvcmQgaGFuZGxpbmcKICAgICAgICB1c2VyLCBob3N0ID0gX3NwbGl0dXNlcihob3N0KQogICAgICAgIGlmIHVzZXI6CiAgICAgICAgICAgIHVzZXIsIHBhc3N3ZCA9IF9zcGxpdHBhc3N3ZCh1c2VyKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhc3N3ZCA9IE5vbmUKICAgICAgICBob3N0ID0gdW5xdW90ZShob3N0KQogICAgICAgIHVzZXIgPSB1c2VyIG9yICcnCiAgICAgICAgcGFzc3dkID0gcGFzc3dkIG9yICcnCgogICAgICAgIHRyeToKICAgICAgICAgICAgaG9zdCA9IHNvY2tldC5nZXRob3N0YnluYW1lKGhvc3QpCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICByYWlzZSBVUkxFcnJvcihtc2cpCiAgICAgICAgcGF0aCwgYXR0cnMgPSBfc3BsaXRhdHRyKHJlcS5zZWxlY3RvcikKICAgICAgICBkaXJzID0gcGF0aC5zcGxpdCgnLycpCiAgICAgICAgZGlycyA9IGxpc3QobWFwKHVucXVvdGUsIGRpcnMpKQogICAgICAgIGRpcnMsIGZpbGUgPSBkaXJzWzotMV0sIGRpcnNbLTFdCiAgICAgICAgaWYgZGlycyBhbmQgbm90IGRpcnNbMF06CiAgICAgICAgICAgIGRpcnMgPSBkaXJzWzE6XQogICAgICAgIHRyeToKICAgICAgICAgICAgZncgPSBzZWxmLmNvbm5lY3RfZnRwKHVzZXIsIHBhc3N3ZCwgaG9zdCwgcG9ydCwgZGlycywgcmVxLnRpbWVvdXQpCiAgICAgICAgICAgIHR5cGUgPSBmaWxlIGFuZCAnSScgb3IgJ0QnCiAgICAgICAgICAgIGZvciBhdHRyIGluIGF0dHJzOgogICAgICAgICAgICAgICAgYXR0ciwgdmFsdWUgPSBfc3BsaXR2YWx1ZShhdHRyKQogICAgICAgICAgICAgICAgaWYgYXR0ci5sb3dlcigpID09ICd0eXBlJyBhbmQgXAogICAgICAgICAgICAgICAgICAgdmFsdWUgaW4gKCdhJywgJ0EnLCAnaScsICdJJywgJ2QnLCAnRCcpOgogICAgICAgICAgICAgICAgICAgIHR5cGUgPSB2YWx1ZS51cHBlcigpCiAgICAgICAgICAgIGZwLCByZXRybGVuID0gZncucmV0cmZpbGUoZmlsZSwgdHlwZSkKICAgICAgICAgICAgaGVhZGVycyA9ICIiCiAgICAgICAgICAgIG10eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUocmVxLmZ1bGxfdXJsKVswXQogICAgICAgICAgICBpZiBtdHlwZToKICAgICAgICAgICAgICAgIGhlYWRlcnMgKz0gIkNvbnRlbnQtdHlwZTogJXNcbiIgJSBtdHlwZQogICAgICAgICAgICBpZiByZXRybGVuIGlzIG5vdCBOb25lIGFuZCByZXRybGVuID49IDA6CiAgICAgICAgICAgICAgICBoZWFkZXJzICs9ICJDb250ZW50LWxlbmd0aDogJWRcbiIgJSByZXRybGVuCiAgICAgICAgICAgIGhlYWRlcnMgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKGhlYWRlcnMpCiAgICAgICAgICAgIHJldHVybiBhZGRpbmZvdXJsKGZwLCBoZWFkZXJzLCByZXEuZnVsbF91cmwpCiAgICAgICAgZXhjZXB0IGZ0cGxpYi5hbGxfZXJyb3JzIGFzIGV4cDoKICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoZXhwKSBmcm9tIGV4cAoKICAgIGRlZiBjb25uZWN0X2Z0cChzZWxmLCB1c2VyLCBwYXNzd2QsIGhvc3QsIHBvcnQsIGRpcnMsIHRpbWVvdXQpOgogICAgICAgIHJldHVybiBmdHB3cmFwcGVyKHVzZXIsIHBhc3N3ZCwgaG9zdCwgcG9ydCwgZGlycywgdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW50PUZhbHNlKQoKY2xhc3MgQ2FjaGVGVFBIYW5kbGVyKEZUUEhhbmRsZXIpOgogICAgIyBYWFggd291bGQgYmUgbmljZSB0byBoYXZlIHBsdWdnYWJsZSBjYWNoZSBzdHJhdGVnaWVzCiAgICAjIFhYWCB0aGlzIHN0dWZmIGlzIGRlZmluaXRlbHkgbm90IHRocmVhZCBzYWZlCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5jYWNoZSA9IHt9CiAgICAgICAgc2VsZi50aW1lb3V0ID0ge30KICAgICAgICBzZWxmLnNvb25lc3QgPSAwCiAgICAgICAgc2VsZi5kZWxheSA9IDYwCiAgICAgICAgc2VsZi5tYXhfY29ubnMgPSAxNgoKICAgIGRlZiBzZXRUaW1lb3V0KHNlbGYsIHQpOgogICAgICAgIHNlbGYuZGVsYXkgPSB0CgogICAgZGVmIHNldE1heENvbm5zKHNlbGYsIG0pOgogICAgICAgIHNlbGYubWF4X2Nvbm5zID0gbQoKICAgIGRlZiBjb25uZWN0X2Z0cChzZWxmLCB1c2VyLCBwYXNzd2QsIGhvc3QsIHBvcnQsIGRpcnMsIHRpbWVvdXQpOgogICAgICAgIGtleSA9IHVzZXIsIGhvc3QsIHBvcnQsICcvJy5qb2luKGRpcnMpLCB0aW1lb3V0CiAgICAgICAgaWYga2V5IGluIHNlbGYuY2FjaGU6CiAgICAgICAgICAgIHNlbGYudGltZW91dFtrZXldID0gdGltZS50aW1lKCkgKyBzZWxmLmRlbGF5CiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5jYWNoZVtrZXldID0gZnRwd3JhcHBlcih1c2VyLCBwYXNzd2QsIGhvc3QsIHBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlycywgdGltZW91dCkKICAgICAgICAgICAgc2VsZi50aW1lb3V0W2tleV0gPSB0aW1lLnRpbWUoKSArIHNlbGYuZGVsYXkKICAgICAgICBzZWxmLmNoZWNrX2NhY2hlKCkKICAgICAgICByZXR1cm4gc2VsZi5jYWNoZVtrZXldCgogICAgZGVmIGNoZWNrX2NhY2hlKHNlbGYpOgogICAgICAgICMgZmlyc3QgY2hlY2sgZm9yIG9sZCBvbmVzCiAgICAgICAgdCA9IHRpbWUudGltZSgpCiAgICAgICAgaWYgc2VsZi5zb29uZXN0IDw9IHQ6CiAgICAgICAgICAgIGZvciBrLCB2IGluIGxpc3Qoc2VsZi50aW1lb3V0Lml0ZW1zKCkpOgogICAgICAgICAgICAgICAgaWYgdiA8IHQ6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5jYWNoZVtrXS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYuY2FjaGVba10KICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi50aW1lb3V0W2tdCiAgICAgICAgc2VsZi5zb29uZXN0ID0gbWluKGxpc3Qoc2VsZi50aW1lb3V0LnZhbHVlcygpKSkKCiAgICAgICAgIyB0aGVuIGNoZWNrIHRoZSBzaXplCiAgICAgICAgaWYgbGVuKHNlbGYuY2FjaGUpID09IHNlbGYubWF4X2Nvbm5zOgogICAgICAgICAgICBmb3IgaywgdiBpbiBsaXN0KHNlbGYudGltZW91dC5pdGVtcygpKToKICAgICAgICAgICAgICAgIGlmIHYgPT0gc2VsZi5zb29uZXN0OgogICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLmNhY2hlW2tdCiAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYudGltZW91dFtrXQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIHNlbGYuc29vbmVzdCA9IG1pbihsaXN0KHNlbGYudGltZW91dC52YWx1ZXMoKSkpCgogICAgZGVmIGNsZWFyX2NhY2hlKHNlbGYpOgogICAgICAgIGZvciBjb25uIGluIHNlbGYuY2FjaGUudmFsdWVzKCk6CiAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgIHNlbGYuY2FjaGUuY2xlYXIoKQogICAgICAgIHNlbGYudGltZW91dC5jbGVhcigpCgpjbGFzcyBEYXRhSGFuZGxlcihCYXNlSGFuZGxlcik6CiAgICBkZWYgZGF0YV9vcGVuKHNlbGYsIHJlcSk6CiAgICAgICAgIyBkYXRhIFVSTHMgYXMgc3BlY2lmaWVkIGluIFJGQyAyMzk3LgogICAgICAgICMKICAgICAgICAjIGlnbm9yZXMgUE9TVGVkIGRhdGEKICAgICAgICAjCiAgICAgICAgIyBzeW50YXg6CiAgICAgICAgIyBkYXRhdXJsICAgOj0gImRhdGE6IiBbIG1lZGlhdHlwZSBdIFsgIjtiYXNlNjQiIF0gIiwiIGRhdGEKICAgICAgICAjIG1lZGlhdHlwZSA6PSBbIHR5cGUgIi8iIHN1YnR5cGUgXSAqKCAiOyIgcGFyYW1ldGVyICkKICAgICAgICAjIGRhdGEgICAgICA6PSAqdXJsY2hhcgogICAgICAgICMgcGFyYW1ldGVyIDo9IGF0dHJpYnV0ZSAiPSIgdmFsdWUKICAgICAgICB1cmwgPSByZXEuZnVsbF91cmwKCiAgICAgICAgc2NoZW1lLCBkYXRhID0gdXJsLnNwbGl0KCI6IiwxKQogICAgICAgIG1lZGlhdHlwZSwgZGF0YSA9IGRhdGEuc3BsaXQoIiwiLDEpCgogICAgICAgICMgZXZlbiBiYXNlNjQgZW5jb2RlZCBkYXRhIFVSTHMgbWlnaHQgYmUgcXVvdGVkIHNvIHVucXVvdGUgaW4gYW55IGNhc2U6CiAgICAgICAgZGF0YSA9IHVucXVvdGVfdG9fYnl0ZXMoZGF0YSkKICAgICAgICBpZiBtZWRpYXR5cGUuZW5kc3dpdGgoIjtiYXNlNjQiKToKICAgICAgICAgICAgZGF0YSA9IGJhc2U2NC5kZWNvZGVieXRlcyhkYXRhKQogICAgICAgICAgICBtZWRpYXR5cGUgPSBtZWRpYXR5cGVbOi03XQoKICAgICAgICBpZiBub3QgbWVkaWF0eXBlOgogICAgICAgICAgICBtZWRpYXR5cGUgPSAidGV4dC9wbGFpbjtjaGFyc2V0PVVTLUFTQ0lJIgoKICAgICAgICBoZWFkZXJzID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiQ29udGVudC10eXBlOiAlc1xuQ29udGVudC1sZW5ndGg6ICVkXG4iICUKICAgICAgICAgICAgKG1lZGlhdHlwZSwgbGVuKGRhdGEpKSkKCiAgICAgICAgcmV0dXJuIGFkZGluZm91cmwoaW8uQnl0ZXNJTyhkYXRhKSwgaGVhZGVycywgdXJsKQoKCiMgQ29kZSBtb3ZlIGZyb20gdGhlIG9sZCB1cmxsaWIgbW9kdWxlCgpNQVhGVFBDQUNIRSA9IDEwICAgICAgICAjIFRyaW0gdGhlIGZ0cCBjYWNoZSBiZXlvbmQgdGhpcyBzaXplCgojIEhlbHBlciBmb3Igbm9uLXVuaXggc3lzdGVtcwppZiBvcy5uYW1lID09ICdudCc6CiAgICBmcm9tIG50dXJsMnBhdGggaW1wb3J0IHVybDJwYXRobmFtZSwgcGF0aG5hbWUydXJsCmVsc2U6CiAgICBkZWYgdXJsMnBhdGhuYW1lKHBhdGhuYW1lKToKICAgICAgICAiIiJPUy1zcGVjaWZpYyBjb252ZXJzaW9uIGZyb20gYSByZWxhdGl2ZSBVUkwgb2YgdGhlICdmaWxlJyBzY2hlbWUKICAgICAgICB0byBhIGZpbGUgc3lzdGVtIHBhdGg7IG5vdCByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2UuIiIiCiAgICAgICAgcmV0dXJuIHVucXVvdGUocGF0aG5hbWUpCgogICAgZGVmIHBhdGhuYW1lMnVybChwYXRobmFtZSk6CiAgICAgICAgIiIiT1Mtc3BlY2lmaWMgY29udmVyc2lvbiBmcm9tIGEgZmlsZSBzeXN0ZW0gcGF0aCB0byBhIHJlbGF0aXZlIFVSTAogICAgICAgIG9mIHRoZSAnZmlsZScgc2NoZW1lOyBub3QgcmVjb21tZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiIiIgogICAgICAgIHJldHVybiBxdW90ZShwYXRobmFtZSkKCgpmdHBjYWNoZSA9IHt9CgoKY2xhc3MgVVJMb3BlbmVyOgogICAgIiIiQ2xhc3MgdG8gb3BlbiBVUkxzLgogICAgVGhpcyBpcyBhIGNsYXNzIHJhdGhlciB0aGFuIGp1c3QgYSBzdWJyb3V0aW5lIGJlY2F1c2Ugd2UgbWF5IG5lZWQKICAgIG1vcmUgdGhhbiBvbmUgc2V0IG9mIGdsb2JhbCBwcm90b2NvbC1zcGVjaWZpYyBvcHRpb25zLgogICAgTm90ZSAtLSB0aGlzIGlzIGEgYmFzZSBjbGFzcyBmb3IgdGhvc2Ugd2hvIGRvbid0IHdhbnQgdGhlCiAgICBhdXRvbWF0aWMgaGFuZGxpbmcgb2YgZXJyb3JzIHR5cGUgMzAyIChyZWxvY2F0ZWQpIGFuZCA0MDEKICAgIChhdXRob3JpemF0aW9uIG5lZWRlZCkuIiIiCgogICAgX190ZW1wZmlsZXMgPSBOb25lCgogICAgdmVyc2lvbiA9ICJQeXRob24tdXJsbGliLyVzIiAlIF9fdmVyc2lvbl9fCgogICAgIyBDb25zdHJ1Y3RvcgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3hpZXM9Tm9uZSwgKip4NTA5KToKICAgICAgICBtc2cgPSAiJShjbGFzcylzIHN0eWxlIG9mIGludm9raW5nIHJlcXVlc3RzIGlzIGRlcHJlY2F0ZWQuICIgXAogICAgICAgICAgICAgICJVc2UgbmV3ZXIgdXJsb3BlbiBmdW5jdGlvbnMvbWV0aG9kcyIgJSB7J2NsYXNzJzogc2VsZi5fX2NsYXNzX18uX19uYW1lX199CiAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0zKQogICAgICAgIGlmIHByb3hpZXMgaXMgTm9uZToKICAgICAgICAgICAgcHJveGllcyA9IGdldHByb3hpZXMoKQogICAgICAgIGFzc2VydCBoYXNhdHRyKHByb3hpZXMsICdrZXlzJyksICJwcm94aWVzIG11c3QgYmUgYSBtYXBwaW5nIgogICAgICAgIHNlbGYucHJveGllcyA9IHByb3hpZXMKICAgICAgICBzZWxmLmtleV9maWxlID0geDUwOS5nZXQoJ2tleV9maWxlJykKICAgICAgICBzZWxmLmNlcnRfZmlsZSA9IHg1MDkuZ2V0KCdjZXJ0X2ZpbGUnKQogICAgICAgIHNlbGYuYWRkaGVhZGVycyA9IFsoJ1VzZXItQWdlbnQnLCBzZWxmLnZlcnNpb24pLCAoJ0FjY2VwdCcsICcqLyonKV0KICAgICAgICBzZWxmLl9fdGVtcGZpbGVzID0gW10KICAgICAgICBzZWxmLl9fdW5saW5rID0gb3MudW5saW5rICMgU2VlIGNsZWFudXAoKQogICAgICAgIHNlbGYudGVtcGNhY2hlID0gTm9uZQogICAgICAgICMgVW5kb2N1bWVudGVkIGZlYXR1cmU6IGlmIHlvdSBhc3NpZ24ge30gdG8gdGVtcGNhY2hlLAogICAgICAgICMgaXQgaXMgdXNlZCB0byBjYWNoZSBmaWxlcyByZXRyaWV2ZWQgd2l0aAogICAgICAgICMgc2VsZi5yZXRyaWV2ZSgpLiAgVGhpcyBpcyBub3QgZW5hYmxlZCBieSBkZWZhdWx0CiAgICAgICAgIyBzaW5jZSBpdCBkb2VzIG5vdCB3b3JrIGZvciBjaGFuZ2luZyBkb2N1bWVudHMgKGFuZCBJCiAgICAgICAgIyBoYXZlbid0IGdvdCB0aGUgbG9naWMgdG8gY2hlY2sgZXhwaXJhdGlvbiBoZWFkZXJzCiAgICAgICAgIyB5ZXQpLgogICAgICAgIHNlbGYuZnRwY2FjaGUgPSBmdHBjYWNoZQogICAgICAgICMgVW5kb2N1bWVudGVkIGZlYXR1cmU6IHlvdSBjYW4gdXNlIGEgZGlmZmVyZW50CiAgICAgICAgIyBmdHAgY2FjaGUgYnkgYXNzaWduaW5nIHRvIHRoZSAuZnRwY2FjaGUgbWVtYmVyOwogICAgICAgICMgaW4gY2FzZSB5b3Ugd2FudCBsb2dpY2FsbHkgaW5kZXBlbmRlbnQgVVJMIG9wZW5lcnMKICAgICAgICAjIFhYWCBUaGlzIGlzIG5vdCB0aHJlYWRzYWZlLiAgQmFoLgoKICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLmNsZWFudXAoKQoKICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICMgVGhpcyBjb2RlIHNvbWV0aW1lcyBydW5zIHdoZW4gdGhlIHJlc3Qgb2YgdGhpcyBtb2R1bGUKICAgICAgICAjIGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZCwgc28gaXQgY2FuJ3QgdXNlIGFueSBnbG9iYWxzCiAgICAgICAgIyBvciBpbXBvcnQgYW55dGhpbmcuCiAgICAgICAgaWYgc2VsZi5fX3RlbXBmaWxlczoKICAgICAgICAgICAgZm9yIGZpbGUgaW4gc2VsZi5fX3RlbXBmaWxlczoKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBzZWxmLl9fdW5saW5rKGZpbGUpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIGRlbCBzZWxmLl9fdGVtcGZpbGVzWzpdCiAgICAgICAgaWYgc2VsZi50ZW1wY2FjaGU6CiAgICAgICAgICAgIHNlbGYudGVtcGNhY2hlLmNsZWFyKCkKCiAgICBkZWYgYWRkaGVhZGVyKHNlbGYsICphcmdzKToKICAgICAgICAiIiJBZGQgYSBoZWFkZXIgdG8gYmUgdXNlZCBieSB0aGUgSFRUUCBpbnRlcmZhY2Ugb25seQogICAgICAgIGUuZy4gdS5hZGRoZWFkZXIoJ0FjY2VwdCcsICdzb3VuZC9iYXNpYycpIiIiCiAgICAgICAgc2VsZi5hZGRoZWFkZXJzLmFwcGVuZChhcmdzKQoKICAgICMgRXh0ZXJuYWwgaW50ZXJmYWNlCiAgICBkZWYgb3BlbihzZWxmLCBmdWxsdXJsLCBkYXRhPU5vbmUpOgogICAgICAgICIiIlVzZSBVUkxvcGVuZXIoKS5vcGVuKGZpbGUpIGluc3RlYWQgb2Ygb3BlbihmaWxlLCAncicpLiIiIgogICAgICAgIGZ1bGx1cmwgPSB1bndyYXAoX3RvX2J5dGVzKGZ1bGx1cmwpKQogICAgICAgIGZ1bGx1cmwgPSBxdW90ZShmdWxsdXJsLCBzYWZlPSIlLzo9Jj9+IyshJCw7J0AoKSpbXXwiKQogICAgICAgIGlmIHNlbGYudGVtcGNhY2hlIGFuZCBmdWxsdXJsIGluIHNlbGYudGVtcGNhY2hlOgogICAgICAgICAgICBmaWxlbmFtZSwgaGVhZGVycyA9IHNlbGYudGVtcGNhY2hlW2Z1bGx1cmxdCiAgICAgICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSwgJ3JiJykKICAgICAgICAgICAgcmV0dXJuIGFkZGluZm91cmwoZnAsIGhlYWRlcnMsIGZ1bGx1cmwpCiAgICAgICAgdXJsdHlwZSwgdXJsID0gX3NwbGl0dHlwZShmdWxsdXJsKQogICAgICAgIGlmIG5vdCB1cmx0eXBlOgogICAgICAgICAgICB1cmx0eXBlID0gJ2ZpbGUnCiAgICAgICAgaWYgdXJsdHlwZSBpbiBzZWxmLnByb3hpZXM6CiAgICAgICAgICAgIHByb3h5ID0gc2VsZi5wcm94aWVzW3VybHR5cGVdCiAgICAgICAgICAgIHVybHR5cGUsIHByb3h5aG9zdCA9IF9zcGxpdHR5cGUocHJveHkpCiAgICAgICAgICAgIGhvc3QsIHNlbGVjdG9yID0gX3NwbGl0aG9zdChwcm94eWhvc3QpCiAgICAgICAgICAgIHVybCA9IChob3N0LCBmdWxsdXJsKSAjIFNpZ25hbCBzcGVjaWFsIGNhc2UgdG8gb3Blbl8qKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcm94eSA9IE5vbmUKICAgICAgICBuYW1lID0gJ29wZW5fJyArIHVybHR5cGUKICAgICAgICBzZWxmLnR5cGUgPSB1cmx0eXBlCiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgnLScsICdfJykKICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCBuYW1lKSBvciBuYW1lID09ICdvcGVuX2xvY2FsX2ZpbGUnOgogICAgICAgICAgICBpZiBwcm94eToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm9wZW5fdW5rbm93bl9wcm94eShwcm94eSwgZnVsbHVybCwgZGF0YSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm9wZW5fdW5rbm93bihmdWxsdXJsLCBkYXRhKQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsLCBkYXRhKQogICAgICAgIGV4Y2VwdCAoSFRUUEVycm9yLCBVUkxFcnJvcik6CiAgICAgICAgICAgIHJhaXNlCiAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdzb2NrZXQgZXJyb3InLCBtc2cpIGZyb20gbXNnCgogICAgZGVmIG9wZW5fdW5rbm93bihzZWxmLCBmdWxsdXJsLCBkYXRhPU5vbmUpOgogICAgICAgICIiIk92ZXJyaWRhYmxlIGludGVyZmFjZSB0byBvcGVuIHVua25vd24gVVJMIHR5cGUuIiIiCiAgICAgICAgdHlwZSwgdXJsID0gX3NwbGl0dHlwZShmdWxsdXJsKQogICAgICAgIHJhaXNlIE9TRXJyb3IoJ3VybCBlcnJvcicsICd1bmtub3duIHVybCB0eXBlJywgdHlwZSkKCiAgICBkZWYgb3Blbl91bmtub3duX3Byb3h5KHNlbGYsIHByb3h5LCBmdWxsdXJsLCBkYXRhPU5vbmUpOgogICAgICAgICIiIk92ZXJyaWRhYmxlIGludGVyZmFjZSB0byBvcGVuIHVua25vd24gVVJMIHR5cGUuIiIiCiAgICAgICAgdHlwZSwgdXJsID0gX3NwbGl0dHlwZShmdWxsdXJsKQogICAgICAgIHJhaXNlIE9TRXJyb3IoJ3VybCBlcnJvcicsICdpbnZhbGlkIHByb3h5IGZvciAlcycgJSB0eXBlLCBwcm94eSkKCiAgICAjIEV4dGVybmFsIGludGVyZmFjZQogICAgZGVmIHJldHJpZXZlKHNlbGYsIHVybCwgZmlsZW5hbWU9Tm9uZSwgcmVwb3J0aG9vaz1Ob25lLCBkYXRhPU5vbmUpOgogICAgICAgICIiInJldHJpZXZlKHVybCkgcmV0dXJucyAoZmlsZW5hbWUsIGhlYWRlcnMpIGZvciBhIGxvY2FsIG9iamVjdAogICAgICAgIG9yICh0ZW1wZmlsZW5hbWUsIGhlYWRlcnMpIGZvciBhIHJlbW90ZSBvYmplY3QuIiIiCiAgICAgICAgdXJsID0gdW53cmFwKF90b19ieXRlcyh1cmwpKQogICAgICAgIGlmIHNlbGYudGVtcGNhY2hlIGFuZCB1cmwgaW4gc2VsZi50ZW1wY2FjaGU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnRlbXBjYWNoZVt1cmxdCiAgICAgICAgdHlwZSwgdXJsMSA9IF9zcGxpdHR5cGUodXJsKQogICAgICAgIGlmIGZpbGVuYW1lIGlzIE5vbmUgYW5kIChub3QgdHlwZSBvciB0eXBlID09ICdmaWxlJyk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZwID0gc2VsZi5vcGVuX2xvY2FsX2ZpbGUodXJsMSkKICAgICAgICAgICAgICAgIGhkcnMgPSBmcC5pbmZvKCkKICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAgICAgICAgIHJldHVybiB1cmwycGF0aG5hbWUoX3NwbGl0aG9zdCh1cmwxKVsxXSksIGhkcnMKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgZnAgPSBzZWxmLm9wZW4odXJsLCBkYXRhKQogICAgICAgIHRyeToKICAgICAgICAgICAgaGVhZGVycyA9IGZwLmluZm8oKQogICAgICAgICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgICAgICAgIHRmcCA9IG9wZW4oZmlsZW5hbWUsICd3YicpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBnYXJiYWdlLCBwYXRoID0gX3NwbGl0dHlwZSh1cmwpCiAgICAgICAgICAgICAgICBnYXJiYWdlLCBwYXRoID0gX3NwbGl0aG9zdChwYXRoIG9yICIiKQogICAgICAgICAgICAgICAgcGF0aCwgZ2FyYmFnZSA9IF9zcGxpdHF1ZXJ5KHBhdGggb3IgIiIpCiAgICAgICAgICAgICAgICBwYXRoLCBnYXJiYWdlID0gX3NwbGl0YXR0cihwYXRoIG9yICIiKQogICAgICAgICAgICAgICAgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChwYXRoKVsxXQogICAgICAgICAgICAgICAgKGZkLCBmaWxlbmFtZSkgPSB0ZW1wZmlsZS5ta3N0ZW1wKHN1ZmZpeCkKICAgICAgICAgICAgICAgIHNlbGYuX190ZW1wZmlsZXMuYXBwZW5kKGZpbGVuYW1lKQogICAgICAgICAgICAgICAgdGZwID0gb3MuZmRvcGVuKGZkLCAnd2InKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXN1bHQgPSBmaWxlbmFtZSwgaGVhZGVycwogICAgICAgICAgICAgICAgaWYgc2VsZi50ZW1wY2FjaGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi50ZW1wY2FjaGVbdXJsXSA9IHJlc3VsdAogICAgICAgICAgICAgICAgYnMgPSAxMDI0KjgKICAgICAgICAgICAgICAgIHNpemUgPSAtMQogICAgICAgICAgICAgICAgcmVhZCA9IDAKICAgICAgICAgICAgICAgIGJsb2NrbnVtID0gMAogICAgICAgICAgICAgICAgaWYgImNvbnRlbnQtbGVuZ3RoIiBpbiBoZWFkZXJzOgogICAgICAgICAgICAgICAgICAgIHNpemUgPSBpbnQoaGVhZGVyc1siQ29udGVudC1MZW5ndGgiXSkKICAgICAgICAgICAgICAgIGlmIHJlcG9ydGhvb2s6CiAgICAgICAgICAgICAgICAgICAgcmVwb3J0aG9vayhibG9ja251bSwgYnMsIHNpemUpCiAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgIGJsb2NrID0gZnAucmVhZChicykKICAgICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgcmVhZCArPSBsZW4oYmxvY2spCiAgICAgICAgICAgICAgICAgICAgdGZwLndyaXRlKGJsb2NrKQogICAgICAgICAgICAgICAgICAgIGJsb2NrbnVtICs9IDEKICAgICAgICAgICAgICAgICAgICBpZiByZXBvcnRob29rOgogICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRob29rKGJsb2NrbnVtLCBicywgc2l6ZSkKICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgIHRmcC5jbG9zZSgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgZnAuY2xvc2UoKQoKICAgICAgICAjIHJhaXNlIGV4Y2VwdGlvbiBpZiBhY3R1YWwgc2l6ZSBkb2VzIG5vdCBtYXRjaCBjb250ZW50LWxlbmd0aCBoZWFkZXIKICAgICAgICBpZiBzaXplID49IDAgYW5kIHJlYWQgPCBzaXplOgogICAgICAgICAgICByYWlzZSBDb250ZW50VG9vU2hvcnRFcnJvcigKICAgICAgICAgICAgICAgICJyZXRyaWV2YWwgaW5jb21wbGV0ZTogZ290IG9ubHkgJWkgb3V0IG9mICVpIGJ5dGVzIgogICAgICAgICAgICAgICAgJSAocmVhZCwgc2l6ZSksIHJlc3VsdCkKCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgICMgRWFjaCBtZXRob2QgbmFtZWQgb3Blbl88dHlwZT4ga25vd3MgaG93IHRvIG9wZW4gdGhhdCB0eXBlIG9mIFVSTAoKICAgIGRlZiBfb3Blbl9nZW5lcmljX2h0dHAoc2VsZiwgY29ubmVjdGlvbl9mYWN0b3J5LCB1cmwsIGRhdGEpOgogICAgICAgICIiIk1ha2UgYW4gSFRUUCBjb25uZWN0aW9uIHVzaW5nIGNvbm5lY3Rpb25fY2xhc3MuCgogICAgICAgIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBmcm9tCiAgICAgICAgb3Blbl9odHRwKCkgb3Igb3Blbl9odHRwcygpLgoKICAgICAgICBBcmd1bWVudHM6CiAgICAgICAgLSBjb25uZWN0aW9uX2ZhY3Rvcnkgc2hvdWxkIHRha2UgYSBob3N0IG5hbWUgYW5kIHJldHVybiBhbgogICAgICAgICAgSFRUUENvbm5lY3Rpb24gaW5zdGFuY2UuCiAgICAgICAgLSB1cmwgaXMgdGhlIHVybCB0byByZXRyaWV2YWwgb3IgYSBob3N0LCByZWxhdGl2ZS1wYXRoIHBhaXIuCiAgICAgICAgLSBkYXRhIGlzIHBheWxvYWQgZm9yIGEgUE9TVCByZXF1ZXN0IG9yIE5vbmUuCiAgICAgICAgIiIiCgogICAgICAgIHVzZXJfcGFzc3dkID0gTm9uZQogICAgICAgIHByb3h5X3Bhc3N3ZD0gTm9uZQogICAgICAgIGlmIGlzaW5zdGFuY2UodXJsLCBzdHIpOgogICAgICAgICAgICBob3N0LCBzZWxlY3RvciA9IF9zcGxpdGhvc3QodXJsKQogICAgICAgICAgICBpZiBob3N0OgogICAgICAgICAgICAgICAgdXNlcl9wYXNzd2QsIGhvc3QgPSBfc3BsaXR1c2VyKGhvc3QpCiAgICAgICAgICAgICAgICBob3N0ID0gdW5xdW90ZShob3N0KQogICAgICAgICAgICByZWFsaG9zdCA9IGhvc3QKICAgICAgICBlbHNlOgogICAgICAgICAgICBob3N0LCBzZWxlY3RvciA9IHVybAogICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIHByb3h5IGNvbnRhaW5zIGF1dGhvcml6YXRpb24gaW5mb3JtYXRpb24KICAgICAgICAgICAgcHJveHlfcGFzc3dkLCBob3N0ID0gX3NwbGl0dXNlcihob3N0KQogICAgICAgICAgICAjIG5vdyB3ZSBwcm9jZWVkIHdpdGggdGhlIHVybCB3ZSB3YW50IHRvIG9idGFpbgogICAgICAgICAgICB1cmx0eXBlLCByZXN0ID0gX3NwbGl0dHlwZShzZWxlY3RvcikKICAgICAgICAgICAgdXJsID0gcmVzdAogICAgICAgICAgICB1c2VyX3Bhc3N3ZCA9IE5vbmUKICAgICAgICAgICAgaWYgdXJsdHlwZS5sb3dlcigpICE9ICdodHRwJzoKICAgICAgICAgICAgICAgIHJlYWxob3N0ID0gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVhbGhvc3QsIHJlc3QgPSBfc3BsaXRob3N0KHJlc3QpCiAgICAgICAgICAgICAgICBpZiByZWFsaG9zdDoKICAgICAgICAgICAgICAgICAgICB1c2VyX3Bhc3N3ZCwgcmVhbGhvc3QgPSBfc3BsaXR1c2VyKHJlYWxob3N0KQogICAgICAgICAgICAgICAgaWYgdXNlcl9wYXNzd2Q6CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSAiJXM6Ly8lcyVzIiAlICh1cmx0eXBlLCByZWFsaG9zdCwgcmVzdCkKICAgICAgICAgICAgICAgIGlmIHByb3h5X2J5cGFzcyhyZWFsaG9zdCk6CiAgICAgICAgICAgICAgICAgICAgaG9zdCA9IHJlYWxob3N0CgogICAgICAgIGlmIG5vdCBob3N0OiByYWlzZSBPU0Vycm9yKCdodHRwIGVycm9yJywgJ25vIGhvc3QgZ2l2ZW4nKQoKICAgICAgICBpZiBwcm94eV9wYXNzd2Q6CiAgICAgICAgICAgIHByb3h5X3Bhc3N3ZCA9IHVucXVvdGUocHJveHlfcGFzc3dkKQogICAgICAgICAgICBwcm94eV9hdXRoID0gYmFzZTY0LmI2NGVuY29kZShwcm94eV9wYXNzd2QuZW5jb2RlKCkpLmRlY29kZSgnYXNjaWknKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByb3h5X2F1dGggPSBOb25lCgogICAgICAgIGlmIHVzZXJfcGFzc3dkOgogICAgICAgICAgICB1c2VyX3Bhc3N3ZCA9IHVucXVvdGUodXNlcl9wYXNzd2QpCiAgICAgICAgICAgIGF1dGggPSBiYXNlNjQuYjY0ZW5jb2RlKHVzZXJfcGFzc3dkLmVuY29kZSgpKS5kZWNvZGUoJ2FzY2lpJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBhdXRoID0gTm9uZQogICAgICAgIGh0dHBfY29ubiA9IGNvbm5lY3Rpb25fZmFjdG9yeShob3N0KQogICAgICAgIGhlYWRlcnMgPSB7fQogICAgICAgIGlmIHByb3h5X2F1dGg6CiAgICAgICAgICAgIGhlYWRlcnNbIlByb3h5LUF1dGhvcml6YXRpb24iXSA9ICJCYXNpYyAlcyIgJSBwcm94eV9hdXRoCiAgICAgICAgaWYgYXV0aDoKICAgICAgICAgICAgaGVhZGVyc1siQXV0aG9yaXphdGlvbiJdID0gICJCYXNpYyAlcyIgJSBhdXRoCiAgICAgICAgaWYgcmVhbGhvc3Q6CiAgICAgICAgICAgIGhlYWRlcnNbIkhvc3QiXSA9IHJlYWxob3N0CgogICAgICAgICMgQWRkIENvbm5lY3Rpb246Y2xvc2UgYXMgd2UgZG9uJ3Qgc3VwcG9ydCBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zIHlldC4KICAgICAgICAjIFRoaXMgaGVscHMgaW4gY2xvc2luZyB0aGUgc29ja2V0IGFuZCBhdm9pZGluZyBSZXNvdXJjZVdhcm5pbmcKCiAgICAgICAgaGVhZGVyc1siQ29ubmVjdGlvbiJdID0gImNsb3NlIgoKICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBzZWxmLmFkZGhlYWRlcnM6CiAgICAgICAgICAgIGhlYWRlcnNbaGVhZGVyXSA9IHZhbHVlCgogICAgICAgIGlmIGRhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGhlYWRlcnNbIkNvbnRlbnQtVHlwZSJdID0gImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKICAgICAgICAgICAgaHR0cF9jb25uLnJlcXVlc3QoIlBPU1QiLCBzZWxlY3RvciwgZGF0YSwgaGVhZGVycykKICAgICAgICBlbHNlOgogICAgICAgICAgICBodHRwX2Nvbm4ucmVxdWVzdCgiR0VUIiwgc2VsZWN0b3IsIGhlYWRlcnM9aGVhZGVycykKCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXNwb25zZSA9IGh0dHBfY29ubi5nZXRyZXNwb25zZSgpCiAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkJhZFN0YXR1c0xpbmU6CiAgICAgICAgICAgICMgc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgSFRUUCBzdGF0dXMgbGluZQogICAgICAgICAgICByYWlzZSBVUkxFcnJvcigiaHR0cCBwcm90b2NvbCBlcnJvcjogYmFkIHN0YXR1cyBsaW5lIikKCiAgICAgICAgIyBBY2NvcmRpbmcgdG8gUkZDIDI2MTYsICIyeHgiIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVudCdzCiAgICAgICAgIyByZXF1ZXN0IHdhcyBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQsIHVuZGVyc3Rvb2QsIGFuZCBhY2NlcHRlZC4KICAgICAgICBpZiAyMDAgPD0gcmVzcG9uc2Uuc3RhdHVzIDwgMzAwOgogICAgICAgICAgICByZXR1cm4gYWRkaW5mb3VybChyZXNwb25zZSwgcmVzcG9uc2UubXNnLCAiaHR0cDoiICsgdXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5zdGF0dXMpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuaHR0cF9lcnJvcigKICAgICAgICAgICAgICAgIHVybCwgcmVzcG9uc2UuZnAsCiAgICAgICAgICAgICAgICByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnJlYXNvbiwgcmVzcG9uc2UubXNnLCBkYXRhKQoKICAgIGRlZiBvcGVuX2h0dHAoc2VsZiwgdXJsLCBkYXRhPU5vbmUpOgogICAgICAgICIiIlVzZSBIVFRQIHByb3RvY29sLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9vcGVuX2dlbmVyaWNfaHR0cChodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiwgdXJsLCBkYXRhKQoKICAgIGRlZiBodHRwX2Vycm9yKHNlbGYsIHVybCwgZnAsIGVycmNvZGUsIGVycm1zZywgaGVhZGVycywgZGF0YT1Ob25lKToKICAgICAgICAiIiJIYW5kbGUgaHR0cCBlcnJvcnMuCgogICAgICAgIERlcml2ZWQgY2xhc3MgY2FuIG92ZXJyaWRlIHRoaXMsIG9yIHByb3ZpZGUgc3BlY2lmaWMgaGFuZGxlcnMKICAgICAgICBuYW1lZCBodHRwX2Vycm9yX0RERCB3aGVyZSBEREQgaXMgdGhlIDMtZGlnaXQgZXJyb3IgY29kZS4iIiIKICAgICAgICAjIEZpcnN0IGNoZWNrIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyBoYW5kbGVyIGZvciB0aGlzIGVycm9yCiAgICAgICAgbmFtZSA9ICdodHRwX2Vycm9yXyVkJyAlIGVycmNvZGUKICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgogICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCiAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1ldGhvZCh1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXN1bHQgPSBtZXRob2QodXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzLCBkYXRhKQogICAgICAgICAgICBpZiByZXN1bHQ6IHJldHVybiByZXN1bHQKICAgICAgICByZXR1cm4gc2VsZi5odHRwX2Vycm9yX2RlZmF1bHQodXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQoKICAgIGRlZiBodHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKToKICAgICAgICAiIiJEZWZhdWx0IGVycm9yIGhhbmRsZXI6IGNsb3NlIHRoZSBjb25uZWN0aW9uIGFuZCByYWlzZSBPU0Vycm9yLiIiIgogICAgICAgIGZwLmNsb3NlKCkKICAgICAgICByYWlzZSBIVFRQRXJyb3IodXJsLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMsIE5vbmUpCgogICAgaWYgX2hhdmVfc3NsOgogICAgICAgIGRlZiBfaHR0cHNfY29ubmVjdGlvbihzZWxmLCBob3N0KToKICAgICAgICAgICAgcmV0dXJuIGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbihob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2ZpbGU9c2VsZi5rZXlfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfZmlsZT1zZWxmLmNlcnRfZmlsZSkKCiAgICAgICAgZGVmIG9wZW5faHR0cHMoc2VsZiwgdXJsLCBkYXRhPU5vbmUpOgogICAgICAgICAgICAiIiJVc2UgSFRUUFMgcHJvdG9jb2wuIiIiCiAgICAgICAgICAgIHJldHVybiBzZWxmLl9vcGVuX2dlbmVyaWNfaHR0cChzZWxmLl9odHRwc19jb25uZWN0aW9uLCB1cmwsIGRhdGEpCgogICAgZGVmIG9wZW5fZmlsZShzZWxmLCB1cmwpOgogICAgICAgICIiIlVzZSBsb2NhbCBmaWxlIG9yIEZUUCBkZXBlbmRpbmcgb24gZm9ybSBvZiBVUkwuIiIiCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodXJsLCBzdHIpOgogICAgICAgICAgICByYWlzZSBVUkxFcnJvcignZmlsZSBlcnJvcjogcHJveHkgc3VwcG9ydCBmb3IgZmlsZSBwcm90b2NvbCBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkJykKICAgICAgICBpZiB1cmxbOjJdID09ICcvLycgYW5kIHVybFsyOjNdICE9ICcvJyBhbmQgdXJsWzI6MTJdLmxvd2VyKCkgIT0gJ2xvY2FsaG9zdC8nOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJmaWxlOi8vIHNjaGVtZSBpcyBzdXBwb3J0ZWQgb25seSBvbiBsb2NhbGhvc3QiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm9wZW5fbG9jYWxfZmlsZSh1cmwpCgogICAgZGVmIG9wZW5fbG9jYWxfZmlsZShzZWxmLCB1cmwpOgogICAgICAgICIiIlVzZSBsb2NhbCBmaWxlLiIiIgogICAgICAgIGltcG9ydCBlbWFpbC51dGlscwogICAgICAgIGltcG9ydCBtaW1ldHlwZXMKICAgICAgICBob3N0LCBmaWxlID0gX3NwbGl0aG9zdCh1cmwpCiAgICAgICAgbG9jYWxuYW1lID0gdXJsMnBhdGhuYW1lKGZpbGUpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzdGF0cyA9IG9zLnN0YXQobG9jYWxuYW1lKQogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKGUuc3RyZXJyb3IsIGUuZmlsZW5hbWUpCiAgICAgICAgc2l6ZSA9IHN0YXRzLnN0X3NpemUKICAgICAgICBtb2RpZmllZCA9IGVtYWlsLnV0aWxzLmZvcm1hdGRhdGUoc3RhdHMuc3RfbXRpbWUsIHVzZWdtdD1UcnVlKQogICAgICAgIG10eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUodXJsKVswXQogICAgICAgIGhlYWRlcnMgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKAogICAgICAgICAgICAnQ29udGVudC1UeXBlOiAlc1xuQ29udGVudC1MZW5ndGg6ICVkXG5MYXN0LW1vZGlmaWVkOiAlc1xuJyAlCiAgICAgICAgICAgIChtdHlwZSBvciAndGV4dC9wbGFpbicsIHNpemUsIG1vZGlmaWVkKSkKICAgICAgICBpZiBub3QgaG9zdDoKICAgICAgICAgICAgdXJsZmlsZSA9IGZpbGUKICAgICAgICAgICAgaWYgZmlsZVs6MV0gPT0gJy8nOgogICAgICAgICAgICAgICAgdXJsZmlsZSA9ICdmaWxlOi8vJyArIGZpbGUKICAgICAgICAgICAgcmV0dXJuIGFkZGluZm91cmwob3Blbihsb2NhbG5hbWUsICdyYicpLCBoZWFkZXJzLCB1cmxmaWxlKQogICAgICAgIGhvc3QsIHBvcnQgPSBfc3BsaXRwb3J0KGhvc3QpCiAgICAgICAgaWYgKG5vdCBwb3J0CiAgICAgICAgICAgYW5kIHNvY2tldC5nZXRob3N0YnluYW1lKGhvc3QpIGluICgobG9jYWxob3N0KCksKSArIHRoaXNob3N0KCkpKToKICAgICAgICAgICAgdXJsZmlsZSA9IGZpbGUKICAgICAgICAgICAgaWYgZmlsZVs6MV0gPT0gJy8nOgogICAgICAgICAgICAgICAgdXJsZmlsZSA9ICdmaWxlOi8vJyArIGZpbGUKICAgICAgICAgICAgZWxpZiBmaWxlWzoyXSA9PSAnLi8nOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibG9jYWwgZmlsZSB1cmwgbWF5IHN0YXJ0IHdpdGggLyBvciBmaWxlOi4gVW5rbm93biB1cmwgb2YgdHlwZTogJXMiICUgdXJsKQogICAgICAgICAgICByZXR1cm4gYWRkaW5mb3VybChvcGVuKGxvY2FsbmFtZSwgJ3JiJyksIGhlYWRlcnMsIHVybGZpbGUpCiAgICAgICAgcmFpc2UgVVJMRXJyb3IoJ2xvY2FsIGZpbGUgZXJyb3I6IG5vdCBvbiBsb2NhbCBob3N0JykKCiAgICBkZWYgb3Blbl9mdHAoc2VsZiwgdXJsKToKICAgICAgICAiIiJVc2UgRlRQIHByb3RvY29sLiIiIgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHVybCwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoJ2Z0cCBlcnJvcjogcHJveHkgc3VwcG9ydCBmb3IgZnRwIHByb3RvY29sIGN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQnKQogICAgICAgIGltcG9ydCBtaW1ldHlwZXMKICAgICAgICBob3N0LCBwYXRoID0gX3NwbGl0aG9zdCh1cmwpCiAgICAgICAgaWYgbm90IGhvc3Q6IHJhaXNlIFVSTEVycm9yKCdmdHAgZXJyb3I6IG5vIGhvc3QgZ2l2ZW4nKQogICAgICAgIGhvc3QsIHBvcnQgPSBfc3BsaXRwb3J0KGhvc3QpCiAgICAgICAgdXNlciwgaG9zdCA9IF9zcGxpdHVzZXIoaG9zdCkKICAgICAgICBpZiB1c2VyOiB1c2VyLCBwYXNzd2QgPSBfc3BsaXRwYXNzd2QodXNlcikKICAgICAgICBlbHNlOiBwYXNzd2QgPSBOb25lCiAgICAgICAgaG9zdCA9IHVucXVvdGUoaG9zdCkKICAgICAgICB1c2VyID0gdW5xdW90ZSh1c2VyIG9yICcnKQogICAgICAgIHBhc3N3ZCA9IHVucXVvdGUocGFzc3dkIG9yICcnKQogICAgICAgIGhvc3QgPSBzb2NrZXQuZ2V0aG9zdGJ5bmFtZShob3N0KQogICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICBpbXBvcnQgZnRwbGliCiAgICAgICAgICAgIHBvcnQgPSBmdHBsaWIuRlRQX1BPUlQKICAgICAgICBlbHNlOgogICAgICAgICAgICBwb3J0ID0gaW50KHBvcnQpCiAgICAgICAgcGF0aCwgYXR0cnMgPSBfc3BsaXRhdHRyKHBhdGgpCiAgICAgICAgcGF0aCA9IHVucXVvdGUocGF0aCkKICAgICAgICBkaXJzID0gcGF0aC5zcGxpdCgnLycpCiAgICAgICAgZGlycywgZmlsZSA9IGRpcnNbOi0xXSwgZGlyc1stMV0KICAgICAgICBpZiBkaXJzIGFuZCBub3QgZGlyc1swXTogZGlycyA9IGRpcnNbMTpdCiAgICAgICAgaWYgZGlycyBhbmQgbm90IGRpcnNbMF06IGRpcnNbMF0gPSAnLycKICAgICAgICBrZXkgPSB1c2VyLCBob3N0LCBwb3J0LCAnLycuam9pbihkaXJzKQogICAgICAgICMgWFhYIHRocmVhZCB1bnNhZmUhCiAgICAgICAgaWYgbGVuKHNlbGYuZnRwY2FjaGUpID4gTUFYRlRQQ0FDSEU6CiAgICAgICAgICAgICMgUHJ1bmUgdGhlIGNhY2hlLCByYXRoZXIgYXJiaXRyYXJpbHkKICAgICAgICAgICAgZm9yIGsgaW4gbGlzdChzZWxmLmZ0cGNhY2hlKToKICAgICAgICAgICAgICAgIGlmIGsgIT0ga2V5OgogICAgICAgICAgICAgICAgICAgIHYgPSBzZWxmLmZ0cGNhY2hlW2tdCiAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYuZnRwY2FjaGVba10KICAgICAgICAgICAgICAgICAgICB2LmNsb3NlKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGtleSBub3QgaW4gc2VsZi5mdHBjYWNoZToKICAgICAgICAgICAgICAgIHNlbGYuZnRwY2FjaGVba2V5XSA9IFwKICAgICAgICAgICAgICAgICAgICBmdHB3cmFwcGVyKHVzZXIsIHBhc3N3ZCwgaG9zdCwgcG9ydCwgZGlycykKICAgICAgICAgICAgaWYgbm90IGZpbGU6IHR5cGUgPSAnRCcKICAgICAgICAgICAgZWxzZTogdHlwZSA9ICdJJwogICAgICAgICAgICBmb3IgYXR0ciBpbiBhdHRyczoKICAgICAgICAgICAgICAgIGF0dHIsIHZhbHVlID0gX3NwbGl0dmFsdWUoYXR0cikKICAgICAgICAgICAgICAgIGlmIGF0dHIubG93ZXIoKSA9PSAndHlwZScgYW5kIFwKICAgICAgICAgICAgICAgICAgIHZhbHVlIGluICgnYScsICdBJywgJ2knLCAnSScsICdkJywgJ0QnKToKICAgICAgICAgICAgICAgICAgICB0eXBlID0gdmFsdWUudXBwZXIoKQogICAgICAgICAgICAoZnAsIHJldHJsZW4pID0gc2VsZi5mdHBjYWNoZVtrZXldLnJldHJmaWxlKGZpbGUsIHR5cGUpCiAgICAgICAgICAgIG10eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUoImZ0cDoiICsgdXJsKVswXQogICAgICAgICAgICBoZWFkZXJzID0gIiIKICAgICAgICAgICAgaWYgbXR5cGU6CiAgICAgICAgICAgICAgICBoZWFkZXJzICs9ICJDb250ZW50LVR5cGU6ICVzXG4iICUgbXR5cGUKICAgICAgICAgICAgaWYgcmV0cmxlbiBpcyBub3QgTm9uZSBhbmQgcmV0cmxlbiA+PSAwOgogICAgICAgICAgICAgICAgaGVhZGVycyArPSAiQ29udGVudC1MZW5ndGg6ICVkXG4iICUgcmV0cmxlbgogICAgICAgICAgICBoZWFkZXJzID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhoZWFkZXJzKQogICAgICAgICAgICByZXR1cm4gYWRkaW5mb3VybChmcCwgaGVhZGVycywgImZ0cDoiICsgdXJsKQogICAgICAgIGV4Y2VwdCBmdHBlcnJvcnMoKSBhcyBleHA6CiAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKGYnZnRwIGVycm9yOiB7ZXhwfScpIGZyb20gZXhwCgogICAgZGVmIG9wZW5fZGF0YShzZWxmLCB1cmwsIGRhdGE9Tm9uZSk6CiAgICAgICAgIiIiVXNlICJkYXRhIiBVUkwuIiIiCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodXJsLCBzdHIpOgogICAgICAgICAgICByYWlzZSBVUkxFcnJvcignZGF0YSBlcnJvcjogcHJveHkgc3VwcG9ydCBmb3IgZGF0YSBwcm90b2NvbCBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkJykKICAgICAgICAjIGlnbm9yZSBQT1NUZWQgZGF0YQogICAgICAgICMKICAgICAgICAjIHN5bnRheCBvZiBkYXRhIFVSTHM6CiAgICAgICAgIyBkYXRhdXJsICAgOj0gImRhdGE6IiBbIG1lZGlhdHlwZSBdIFsgIjtiYXNlNjQiIF0gIiwiIGRhdGEKICAgICAgICAjIG1lZGlhdHlwZSA6PSBbIHR5cGUgIi8iIHN1YnR5cGUgXSAqKCAiOyIgcGFyYW1ldGVyICkKICAgICAgICAjIGRhdGEgICAgICA6PSAqdXJsY2hhcgogICAgICAgICMgcGFyYW1ldGVyIDo9IGF0dHJpYnV0ZSAiPSIgdmFsdWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIFt0eXBlLCBkYXRhXSA9IHVybC5zcGxpdCgnLCcsIDEpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2RhdGEgZXJyb3InLCAnYmFkIGRhdGEgVVJMJykKICAgICAgICBpZiBub3QgdHlwZToKICAgICAgICAgICAgdHlwZSA9ICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVMtQVNDSUknCiAgICAgICAgc2VtaSA9IHR5cGUucmZpbmQoJzsnKQogICAgICAgIGlmIHNlbWkgPj0gMCBhbmQgJz0nIG5vdCBpbiB0eXBlW3NlbWk6XToKICAgICAgICAgICAgZW5jb2RpbmcgPSB0eXBlW3NlbWkrMTpdCiAgICAgICAgICAgIHR5cGUgPSB0eXBlWzpzZW1pXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGVuY29kaW5nID0gJycKICAgICAgICBtc2cgPSBbXQogICAgICAgIG1zZy5hcHBlbmQoJ0RhdGU6ICVzJyV0aW1lLnN0cmZ0aW1lKCclYSwgJWQgJWIgJVkgJUg6JU06JVMgR01UJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLmdtdGltZSh0aW1lLnRpbWUoKSkpKQogICAgICAgIG1zZy5hcHBlbmQoJ0NvbnRlbnQtdHlwZTogJXMnICUgdHlwZSkKICAgICAgICBpZiBlbmNvZGluZyA9PSAnYmFzZTY0JzoKICAgICAgICAgICAgIyBYWFggaXMgdGhpcyBlbmNvZGluZy9kZWNvZGluZyBvaz8KICAgICAgICAgICAgZGF0YSA9IGJhc2U2NC5kZWNvZGVieXRlcyhkYXRhLmVuY29kZSgnYXNjaWknKSkuZGVjb2RlKCdsYXRpbi0xJykKICAgICAgICBlbHNlOgogICAgICAgICAgICBkYXRhID0gdW5xdW90ZShkYXRhKQogICAgICAgIG1zZy5hcHBlbmQoJ0NvbnRlbnQtTGVuZ3RoOiAlZCcgJSBsZW4oZGF0YSkpCiAgICAgICAgbXNnLmFwcGVuZCgnJykKICAgICAgICBtc2cuYXBwZW5kKGRhdGEpCiAgICAgICAgbXNnID0gJ1xuJy5qb2luKG1zZykKICAgICAgICBoZWFkZXJzID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhtc2cpCiAgICAgICAgZiA9IGlvLlN0cmluZ0lPKG1zZykKICAgICAgICAjZi5maWxlbm8gPSBOb25lICAgICAjIG5lZWRlZCBmb3IgYWRkaW5mb3VybAogICAgICAgIHJldHVybiBhZGRpbmZvdXJsKGYsIGhlYWRlcnMsIHVybCkKCgpjbGFzcyBGYW5jeVVSTG9wZW5lcihVUkxvcGVuZXIpOgogICAgIiIiRGVyaXZlZCBjbGFzcyB3aXRoIGhhbmRsZXJzIGZvciBlcnJvcnMgd2UgY2FuIGhhbmRsZSAocGVyaGFwcykuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgVVJMb3BlbmVyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKICAgICAgICBzZWxmLmF1dGhfY2FjaGUgPSB7fQogICAgICAgIHNlbGYudHJpZXMgPSAwCiAgICAgICAgc2VsZi5tYXh0cmllcyA9IDEwCgogICAgZGVmIGh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMpOgogICAgICAgICIiIkRlZmF1bHQgZXJyb3IgaGFuZGxpbmcgLS0gZG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uLiIiIgogICAgICAgIHJldHVybiBhZGRpbmZvdXJsKGZwLCBoZWFkZXJzLCAiaHR0cDoiICsgdXJsLCBlcnJjb2RlKQoKICAgIGRlZiBodHRwX2Vycm9yXzMwMihzZWxmLCB1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMsIGRhdGE9Tm9uZSk6CiAgICAgICAgIiIiRXJyb3IgMzAyIC0tIHJlbG9jYXRlZCAodGVtcG9yYXJpbHkpLiIiIgogICAgICAgIHNlbGYudHJpZXMgKz0gMQogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgc2VsZi5tYXh0cmllcyBhbmQgc2VsZi50cmllcyA+PSBzZWxmLm1heHRyaWVzOgogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiaHR0cF9lcnJvcl81MDAiKToKICAgICAgICAgICAgICAgICAgICBtZXRoID0gc2VsZi5odHRwX2Vycm9yXzUwMAogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBtZXRoID0gc2VsZi5odHRwX2Vycm9yX2RlZmF1bHQKICAgICAgICAgICAgICAgIHJldHVybiBtZXRoKHVybCwgZnAsIDUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3I6IFJlZGlyZWN0IFJlY3Vyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzKQogICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJlZGlyZWN0X2ludGVybmFsKHVybCwgZnAsIGVycmNvZGUsIGVycm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLCBkYXRhKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi50cmllcyA9IDAKCiAgICBkZWYgcmVkaXJlY3RfaW50ZXJuYWwoc2VsZiwgdXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzLCBkYXRhKToKICAgICAgICBpZiAnbG9jYXRpb24nIGluIGhlYWRlcnM6CiAgICAgICAgICAgIG5ld3VybCA9IGhlYWRlcnNbJ2xvY2F0aW9uJ10KICAgICAgICBlbGlmICd1cmknIGluIGhlYWRlcnM6CiAgICAgICAgICAgIG5ld3VybCA9IGhlYWRlcnNbJ3VyaSddCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZnAuY2xvc2UoKQoKICAgICAgICAjIEluIGNhc2UgdGhlIHNlcnZlciBzZW50IGEgcmVsYXRpdmUgVVJMLCBqb2luIHdpdGggb3JpZ2luYWw6CiAgICAgICAgbmV3dXJsID0gdXJsam9pbihzZWxmLnR5cGUgKyAiOiIgKyB1cmwsIG5ld3VybCkKCiAgICAgICAgdXJscGFydHMgPSB1cmxwYXJzZShuZXd1cmwpCgogICAgICAgICMgRm9yIHNlY3VyaXR5IHJlYXNvbnMsIHdlIGRvbid0IGFsbG93IHJlZGlyZWN0aW9uIHRvIGFueXRoaW5nIG90aGVyCiAgICAgICAgIyB0aGFuIGh0dHAsIGh0dHBzIGFuZCBmdHAuCgogICAgICAgICMgV2UgYXJlIHVzaW5nIG5ld2VyIEhUVFBFcnJvciB3aXRoIG9sZGVyIHJlZGlyZWN0X2ludGVybmFsIG1ldGhvZAogICAgICAgICMgVGhpcyBvbGRlciBtZXRob2Qgd2lsbCBnZXQgZGVwcmVjYXRlZCBpbiAzLjMKCiAgICAgICAgaWYgdXJscGFydHMuc2NoZW1lIG5vdCBpbiAoJ2h0dHAnLCAnaHR0cHMnLCAnZnRwJywgJycpOgogICAgICAgICAgICByYWlzZSBIVFRQRXJyb3IobmV3dXJsLCBlcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgUmVkaXJlY3Rpb24gdG8gdXJsICclcycgaXMgbm90IGFsbG93ZWQuIiAlIG5ld3VybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMsIGZwKQoKICAgICAgICByZXR1cm4gc2VsZi5vcGVuKG5ld3VybCkKCiAgICBkZWYgaHR0cF9lcnJvcl8zMDEoc2VsZiwgdXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzLCBkYXRhPU5vbmUpOgogICAgICAgICIiIkVycm9yIDMwMSAtLSBhbHNvIHJlbG9jYXRlZCAocGVybWFuZW50bHkpLiIiIgogICAgICAgIHJldHVybiBzZWxmLmh0dHBfZXJyb3JfMzAyKHVybCwgZnAsIGVycmNvZGUsIGVycm1zZywgaGVhZGVycywgZGF0YSkKCiAgICBkZWYgaHR0cF9lcnJvcl8zMDMoc2VsZiwgdXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzLCBkYXRhPU5vbmUpOgogICAgICAgICIiIkVycm9yIDMwMyAtLSBhbHNvIHJlbG9jYXRlZCAoZXNzZW50aWFsbHkgaWRlbnRpY2FsIHRvIDMwMikuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuaHR0cF9lcnJvcl8zMDIodXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzLCBkYXRhKQoKICAgIGRlZiBodHRwX2Vycm9yXzMwNyhzZWxmLCB1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMsIGRhdGE9Tm9uZSk6CiAgICAgICAgIiIiRXJyb3IgMzA3IC0tIHJlbG9jYXRlZCwgYnV0IHR1cm4gUE9TVCBpbnRvIGVycm9yLiIiIgogICAgICAgIGlmIGRhdGEgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuaHR0cF9lcnJvcl8zMDIodXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzLCBkYXRhKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmh0dHBfZXJyb3JfZGVmYXVsdCh1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMpCgogICAgZGVmIGh0dHBfZXJyb3JfMzA4KHNlbGYsIHVybCwgZnAsIGVycmNvZGUsIGVycm1zZywgaGVhZGVycywgZGF0YT1Ob25lKToKICAgICAgICAiIiJFcnJvciAzMDggLS0gcmVsb2NhdGVkLCBidXQgdHVybiBQT1NUIGludG8gZXJyb3IuIiIiCiAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5odHRwX2Vycm9yXzMwMSh1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMsIGRhdGEpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuaHR0cF9lcnJvcl9kZWZhdWx0KHVybCwgZnAsIGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKCiAgICBkZWYgaHR0cF9lcnJvcl80MDEoc2VsZiwgdXJsLCBmcCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzLCBkYXRhPU5vbmUsCiAgICAgICAgICAgIHJldHJ5PUZhbHNlKToKICAgICAgICAiIiJFcnJvciA0MDEgLS0gYXV0aGVudGljYXRpb24gcmVxdWlyZWQuCiAgICAgICAgVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyBCYXNpYyBhdXRoZW50aWNhdGlvbiBvbmx5LiIiIgogICAgICAgIGlmICd3d3ctYXV0aGVudGljYXRlJyBub3QgaW4gaGVhZGVyczoKICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICAgICBzdHVmZiA9IGhlYWRlcnNbJ3d3dy1hdXRoZW50aWNhdGUnXQogICAgICAgIG1hdGNoID0gcmUubWF0Y2goJ1sgXHRdKihbXiBcdF0rKVsgXHRdK3JlYWxtPSIoW14iXSopIicsIHN0dWZmKQogICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICAgICBzY2hlbWUsIHJlYWxtID0gbWF0Y2guZ3JvdXBzKCkKICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgogICAgICAgICAgICBVUkxvcGVuZXIuaHR0cF9lcnJvcl9kZWZhdWx0KHNlbGYsIHVybCwgZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQogICAgICAgIGlmIG5vdCByZXRyeToKICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csCiAgICAgICAgICAgICAgICAgICAgaGVhZGVycykKICAgICAgICBuYW1lID0gJ3JldHJ5XycgKyBzZWxmLnR5cGUgKyAnX2Jhc2ljX2F1dGgnCiAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLG5hbWUpKHVybCwgcmVhbG0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZixuYW1lKSh1cmwsIHJlYWxtLCBkYXRhKQoKICAgIGRlZiBodHRwX2Vycm9yXzQwNyhzZWxmLCB1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMsIGRhdGE9Tm9uZSwKICAgICAgICAgICAgcmV0cnk9RmFsc2UpOgogICAgICAgICIiIkVycm9yIDQwNyAtLSBwcm94eSBhdXRoZW50aWNhdGlvbiByZXF1aXJlZC4KICAgICAgICBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIEJhc2ljIGF1dGhlbnRpY2F0aW9uIG9ubHkuIiIiCiAgICAgICAgaWYgJ3Byb3h5LWF1dGhlbnRpY2F0ZScgbm90IGluIGhlYWRlcnM6CiAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMpCiAgICAgICAgc3R1ZmYgPSBoZWFkZXJzWydwcm94eS1hdXRoZW50aWNhdGUnXQogICAgICAgIG1hdGNoID0gcmUubWF0Y2goJ1sgXHRdKihbXiBcdF0rKVsgXHRdK3JlYWxtPSIoW14iXSopIicsIHN0dWZmKQogICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICAgICBzY2hlbWUsIHJlYWxtID0gbWF0Y2guZ3JvdXBzKCkKICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgogICAgICAgICAgICBVUkxvcGVuZXIuaHR0cF9lcnJvcl9kZWZhdWx0KHNlbGYsIHVybCwgZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQogICAgICAgIGlmIG5vdCByZXRyeToKICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csCiAgICAgICAgICAgICAgICAgICAgaGVhZGVycykKICAgICAgICBuYW1lID0gJ3JldHJ5X3Byb3h5XycgKyBzZWxmLnR5cGUgKyAnX2Jhc2ljX2F1dGgnCiAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLG5hbWUpKHVybCwgcmVhbG0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZixuYW1lKSh1cmwsIHJlYWxtLCBkYXRhKQoKICAgIGRlZiByZXRyeV9wcm94eV9odHRwX2Jhc2ljX2F1dGgoc2VsZiwgdXJsLCByZWFsbSwgZGF0YT1Ob25lKToKICAgICAgICBob3N0LCBzZWxlY3RvciA9IF9zcGxpdGhvc3QodXJsKQogICAgICAgIG5ld3VybCA9ICdodHRwOi8vJyArIGhvc3QgKyBzZWxlY3RvcgogICAgICAgIHByb3h5ID0gc2VsZi5wcm94aWVzWydodHRwJ10KICAgICAgICB1cmx0eXBlLCBwcm94eWhvc3QgPSBfc3BsaXR0eXBlKHByb3h5KQogICAgICAgIHByb3h5aG9zdCwgcHJveHlzZWxlY3RvciA9IF9zcGxpdGhvc3QocHJveHlob3N0KQogICAgICAgIGkgPSBwcm94eWhvc3QuZmluZCgnQCcpICsgMQogICAgICAgIHByb3h5aG9zdCA9IHByb3h5aG9zdFtpOl0KICAgICAgICB1c2VyLCBwYXNzd2QgPSBzZWxmLmdldF91c2VyX3Bhc3N3ZChwcm94eWhvc3QsIHJlYWxtLCBpKQogICAgICAgIGlmIG5vdCAodXNlciBvciBwYXNzd2QpOiByZXR1cm4gTm9uZQogICAgICAgIHByb3h5aG9zdCA9ICIlczolc0AlcyIgJSAocXVvdGUodXNlciwgc2FmZT0nJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZShwYXNzd2QsIHNhZmU9JycpLCBwcm94eWhvc3QpCiAgICAgICAgc2VsZi5wcm94aWVzWydodHRwJ10gPSAnaHR0cDovLycgKyBwcm94eWhvc3QgKyBwcm94eXNlbGVjdG9yCiAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5vcGVuKG5ld3VybCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5vcGVuKG5ld3VybCwgZGF0YSkKCiAgICBkZWYgcmV0cnlfcHJveHlfaHR0cHNfYmFzaWNfYXV0aChzZWxmLCB1cmwsIHJlYWxtLCBkYXRhPU5vbmUpOgogICAgICAgIGhvc3QsIHNlbGVjdG9yID0gX3NwbGl0aG9zdCh1cmwpCiAgICAgICAgbmV3dXJsID0gJ2h0dHBzOi8vJyArIGhvc3QgKyBzZWxlY3RvcgogICAgICAgIHByb3h5ID0gc2VsZi5wcm94aWVzWydodHRwcyddCiAgICAgICAgdXJsdHlwZSwgcHJveHlob3N0ID0gX3NwbGl0dHlwZShwcm94eSkKICAgICAgICBwcm94eWhvc3QsIHByb3h5c2VsZWN0b3IgPSBfc3BsaXRob3N0KHByb3h5aG9zdCkKICAgICAgICBpID0gcHJveHlob3N0LmZpbmQoJ0AnKSArIDEKICAgICAgICBwcm94eWhvc3QgPSBwcm94eWhvc3RbaTpdCiAgICAgICAgdXNlciwgcGFzc3dkID0gc2VsZi5nZXRfdXNlcl9wYXNzd2QocHJveHlob3N0LCByZWFsbSwgaSkKICAgICAgICBpZiBub3QgKHVzZXIgb3IgcGFzc3dkKTogcmV0dXJuIE5vbmUKICAgICAgICBwcm94eWhvc3QgPSAiJXM6JXNAJXMiICUgKHF1b3RlKHVzZXIsIHNhZmU9JycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGUocGFzc3dkLCBzYWZlPScnKSwgcHJveHlob3N0KQogICAgICAgIHNlbGYucHJveGllc1snaHR0cHMnXSA9ICdodHRwczovLycgKyBwcm94eWhvc3QgKyBwcm94eXNlbGVjdG9yCiAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5vcGVuKG5ld3VybCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5vcGVuKG5ld3VybCwgZGF0YSkKCiAgICBkZWYgcmV0cnlfaHR0cF9iYXNpY19hdXRoKHNlbGYsIHVybCwgcmVhbG0sIGRhdGE9Tm9uZSk6CiAgICAgICAgaG9zdCwgc2VsZWN0b3IgPSBfc3BsaXRob3N0KHVybCkKICAgICAgICBpID0gaG9zdC5maW5kKCdAJykgKyAxCiAgICAgICAgaG9zdCA9IGhvc3RbaTpdCiAgICAgICAgdXNlciwgcGFzc3dkID0gc2VsZi5nZXRfdXNlcl9wYXNzd2QoaG9zdCwgcmVhbG0sIGkpCiAgICAgICAgaWYgbm90ICh1c2VyIG9yIHBhc3N3ZCk6IHJldHVybiBOb25lCiAgICAgICAgaG9zdCA9ICIlczolc0AlcyIgJSAocXVvdGUodXNlciwgc2FmZT0nJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGUocGFzc3dkLCBzYWZlPScnKSwgaG9zdCkKICAgICAgICBuZXd1cmwgPSAnaHR0cDovLycgKyBob3N0ICsgc2VsZWN0b3IKICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm9wZW4obmV3dXJsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm9wZW4obmV3dXJsLCBkYXRhKQoKICAgIGRlZiByZXRyeV9odHRwc19iYXNpY19hdXRoKHNlbGYsIHVybCwgcmVhbG0sIGRhdGE9Tm9uZSk6CiAgICAgICAgaG9zdCwgc2VsZWN0b3IgPSBfc3BsaXRob3N0KHVybCkKICAgICAgICBpID0gaG9zdC5maW5kKCdAJykgKyAxCiAgICAgICAgaG9zdCA9IGhvc3RbaTpdCiAgICAgICAgdXNlciwgcGFzc3dkID0gc2VsZi5nZXRfdXNlcl9wYXNzd2QoaG9zdCwgcmVhbG0sIGkpCiAgICAgICAgaWYgbm90ICh1c2VyIG9yIHBhc3N3ZCk6IHJldHVybiBOb25lCiAgICAgICAgaG9zdCA9ICIlczolc0AlcyIgJSAocXVvdGUodXNlciwgc2FmZT0nJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGUocGFzc3dkLCBzYWZlPScnKSwgaG9zdCkKICAgICAgICBuZXd1cmwgPSAnaHR0cHM6Ly8nICsgaG9zdCArIHNlbGVjdG9yCiAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gc2VsZi5vcGVuKG5ld3VybCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5vcGVuKG5ld3VybCwgZGF0YSkKCiAgICBkZWYgZ2V0X3VzZXJfcGFzc3dkKHNlbGYsIGhvc3QsIHJlYWxtLCBjbGVhcl9jYWNoZT0wKToKICAgICAgICBrZXkgPSByZWFsbSArICdAJyArIGhvc3QubG93ZXIoKQogICAgICAgIGlmIGtleSBpbiBzZWxmLmF1dGhfY2FjaGU6CiAgICAgICAgICAgIGlmIGNsZWFyX2NhY2hlOgogICAgICAgICAgICAgICAgZGVsIHNlbGYuYXV0aF9jYWNoZVtrZXldCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoX2NhY2hlW2tleV0KICAgICAgICB1c2VyLCBwYXNzd2QgPSBzZWxmLnByb21wdF91c2VyX3Bhc3N3ZChob3N0LCByZWFsbSkKICAgICAgICBpZiB1c2VyIG9yIHBhc3N3ZDogc2VsZi5hdXRoX2NhY2hlW2tleV0gPSAodXNlciwgcGFzc3dkKQogICAgICAgIHJldHVybiB1c2VyLCBwYXNzd2QKCiAgICBkZWYgcHJvbXB0X3VzZXJfcGFzc3dkKHNlbGYsIGhvc3QsIHJlYWxtKToKICAgICAgICAiIiJPdmVycmlkZSB0aGlzIGluIGEgR1VJIGVudmlyb25tZW50ISIiIgogICAgICAgIGltcG9ydCBnZXRwYXNzCiAgICAgICAgdHJ5OgogICAgICAgICAgICB1c2VyID0gaW5wdXQoIkVudGVyIHVzZXJuYW1lIGZvciAlcyBhdCAlczogIiAlIChyZWFsbSwgaG9zdCkpCiAgICAgICAgICAgIHBhc3N3ZCA9IGdldHBhc3MuZ2V0cGFzcygiRW50ZXIgcGFzc3dvcmQgZm9yICVzIGluICVzIGF0ICVzOiAiICUKICAgICAgICAgICAgICAgICh1c2VyLCByZWFsbSwgaG9zdCkpCiAgICAgICAgICAgIHJldHVybiB1c2VyLCBwYXNzd2QKICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKCgojIFV0aWxpdHkgZnVuY3Rpb25zCgpfbG9jYWxob3N0ID0gTm9uZQpkZWYgbG9jYWxob3N0KCk6CiAgICAiIiJSZXR1cm4gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIG1hZ2ljIGhvc3RuYW1lICdsb2NhbGhvc3QnLiIiIgogICAgZ2xvYmFsIF9sb2NhbGhvc3QKICAgIGlmIF9sb2NhbGhvc3QgaXMgTm9uZToKICAgICAgICBfbG9jYWxob3N0ID0gc29ja2V0LmdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpCiAgICByZXR1cm4gX2xvY2FsaG9zdAoKX3RoaXNob3N0ID0gTm9uZQpkZWYgdGhpc2hvc3QoKToKICAgICIiIlJldHVybiB0aGUgSVAgYWRkcmVzc2VzIG9mIHRoZSBjdXJyZW50IGhvc3QuIiIiCiAgICBnbG9iYWwgX3RoaXNob3N0CiAgICBpZiBfdGhpc2hvc3QgaXMgTm9uZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIF90aGlzaG9zdCA9IHR1cGxlKHNvY2tldC5nZXRob3N0YnluYW1lX2V4KHNvY2tldC5nZXRob3N0bmFtZSgpKVsyXSkKICAgICAgICBleGNlcHQgc29ja2V0LmdhaWVycm9yOgogICAgICAgICAgICBfdGhpc2hvc3QgPSB0dXBsZShzb2NrZXQuZ2V0aG9zdGJ5bmFtZV9leCgnbG9jYWxob3N0JylbMl0pCiAgICByZXR1cm4gX3RoaXNob3N0CgpfZnRwZXJyb3JzID0gTm9uZQpkZWYgZnRwZXJyb3JzKCk6CiAgICAiIiJSZXR1cm4gdGhlIHNldCBvZiBlcnJvcnMgcmFpc2VkIGJ5IHRoZSBGVFAgY2xhc3MuIiIiCiAgICBnbG9iYWwgX2Z0cGVycm9ycwogICAgaWYgX2Z0cGVycm9ycyBpcyBOb25lOgogICAgICAgIGltcG9ydCBmdHBsaWIKICAgICAgICBfZnRwZXJyb3JzID0gZnRwbGliLmFsbF9lcnJvcnMKICAgIHJldHVybiBfZnRwZXJyb3JzCgpfbm9oZWFkZXJzID0gTm9uZQpkZWYgbm9oZWFkZXJzKCk6CiAgICAiIiJSZXR1cm4gYW4gZW1wdHkgZW1haWwgTWVzc2FnZSBvYmplY3QuIiIiCiAgICBnbG9iYWwgX25vaGVhZGVycwogICAgaWYgX25vaGVhZGVycyBpcyBOb25lOgogICAgICAgIF9ub2hlYWRlcnMgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCIiKQogICAgcmV0dXJuIF9ub2hlYWRlcnMKCgojIFV0aWxpdHkgY2xhc3NlcwoKY2xhc3MgZnRwd3JhcHBlcjoKICAgICIiIkNsYXNzIHVzZWQgYnkgb3Blbl9mdHAoKSBmb3IgY2FjaGUgb2Ygb3BlbiBGVFAgY29ubmVjdGlvbnMuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZXIsIHBhc3N3ZCwgaG9zdCwgcG9ydCwgZGlycywgdGltZW91dD1Ob25lLAogICAgICAgICAgICAgICAgIHBlcnNpc3RlbnQ9VHJ1ZSk6CiAgICAgICAgc2VsZi51c2VyID0gdXNlcgogICAgICAgIHNlbGYucGFzc3dkID0gcGFzc3dkCiAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICBzZWxmLmRpcnMgPSBkaXJzCiAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgIHNlbGYucmVmY291bnQgPSAwCiAgICAgICAgc2VsZi5rZWVwYWxpdmUgPSBwZXJzaXN0ZW50CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmluaXQoKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgIHJhaXNlCgogICAgZGVmIGluaXQoc2VsZik6CiAgICAgICAgaW1wb3J0IGZ0cGxpYgogICAgICAgIHNlbGYuYnVzeSA9IDAKICAgICAgICBzZWxmLmZ0cCA9IGZ0cGxpYi5GVFAoKQogICAgICAgIHNlbGYuZnRwLmNvbm5lY3Qoc2VsZi5ob3N0LCBzZWxmLnBvcnQsIHNlbGYudGltZW91dCkKICAgICAgICBzZWxmLmZ0cC5sb2dpbihzZWxmLnVzZXIsIHNlbGYucGFzc3dkKQogICAgICAgIF90YXJnZXQgPSAnLycuam9pbihzZWxmLmRpcnMpCiAgICAgICAgc2VsZi5mdHAuY3dkKF90YXJnZXQpCgogICAgZGVmIHJldHJmaWxlKHNlbGYsIGZpbGUsIHR5cGUpOgogICAgICAgIGltcG9ydCBmdHBsaWIKICAgICAgICBzZWxmLmVuZHRyYW5zZmVyKCkKICAgICAgICBpZiB0eXBlIGluICgnZCcsICdEJyk6IGNtZCA9ICdUWVBFIEEnOyBpc2RpciA9IDEKICAgICAgICBlbHNlOiBjbWQgPSAnVFlQRSAnICsgdHlwZTsgaXNkaXIgPSAwCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmZ0cC52b2lkY21kKGNtZCkKICAgICAgICBleGNlcHQgZnRwbGliLmFsbF9lcnJvcnM6CiAgICAgICAgICAgIHNlbGYuaW5pdCgpCiAgICAgICAgICAgIHNlbGYuZnRwLnZvaWRjbWQoY21kKQogICAgICAgIGNvbm4gPSBOb25lCiAgICAgICAgaWYgZmlsZSBhbmQgbm90IGlzZGlyOgogICAgICAgICAgICAjIFRyeSB0byByZXRyaWV2ZSBhcyBhIGZpbGUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY21kID0gJ1JFVFIgJyArIGZpbGUKICAgICAgICAgICAgICAgIGNvbm4sIHJldHJsZW4gPSBzZWxmLmZ0cC5udHJhbnNmZXJjbWQoY21kKQogICAgICAgICAgICBleGNlcHQgZnRwbGliLmVycm9yX3Blcm0gYXMgcmVhc29uOgogICAgICAgICAgICAgICAgaWYgc3RyKHJlYXNvbilbOjNdICE9ICc1NTAnOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKGYnZnRwIGVycm9yOiB7cmVhc29ufScpIGZyb20gcmVhc29uCiAgICAgICAgaWYgbm90IGNvbm46CiAgICAgICAgICAgICMgU2V0IHRyYW5zZmVyIG1vZGUgdG8gQVNDSUkhCiAgICAgICAgICAgIHNlbGYuZnRwLnZvaWRjbWQoJ1RZUEUgQScpCiAgICAgICAgICAgICMgVHJ5IGEgZGlyZWN0b3J5IGxpc3RpbmcuIFZlcmlmeSB0aGF0IGRpcmVjdG9yeSBleGlzdHMuCiAgICAgICAgICAgIGlmIGZpbGU6CiAgICAgICAgICAgICAgICBwd2QgPSBzZWxmLmZ0cC5wd2QoKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mdHAuY3dkKGZpbGUpCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGZ0cGxpYi5lcnJvcl9wZXJtIGFzIHJlYXNvbjoKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoJ2Z0cCBlcnJvcjogJXInICUgcmVhc29uKSBmcm9tIHJlYXNvbgogICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICBzZWxmLmZ0cC5jd2QocHdkKQogICAgICAgICAgICAgICAgY21kID0gJ0xJU1QgJyArIGZpbGUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNtZCA9ICdMSVNUJwogICAgICAgICAgICBjb25uLCByZXRybGVuID0gc2VsZi5mdHAubnRyYW5zZmVyY21kKGNtZCkKICAgICAgICBzZWxmLmJ1c3kgPSAxCgogICAgICAgIGZ0cG9iaiA9IGFkZGNsb3NlaG9vayhjb25uLm1ha2VmaWxlKCdyYicpLCBzZWxmLmZpbGVfY2xvc2UpCiAgICAgICAgc2VsZi5yZWZjb3VudCArPSAxCiAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgIyBQYXNzIGJhY2sgYm90aCBhIHN1aXRhYmx5IGRlY29yYXRlZCBvYmplY3QgYW5kIGEgcmV0cmlldmFsIGxlbmd0aAogICAgICAgIHJldHVybiAoZnRwb2JqLCByZXRybGVuKQoKICAgIGRlZiBlbmR0cmFuc2ZlcihzZWxmKToKICAgICAgICBzZWxmLmJ1c3kgPSAwCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgIHNlbGYua2VlcGFsaXZlID0gRmFsc2UKICAgICAgICBpZiBzZWxmLnJlZmNvdW50IDw9IDA6CiAgICAgICAgICAgIHNlbGYucmVhbF9jbG9zZSgpCgogICAgZGVmIGZpbGVfY2xvc2Uoc2VsZik6CiAgICAgICAgc2VsZi5lbmR0cmFuc2ZlcigpCiAgICAgICAgc2VsZi5yZWZjb3VudCAtPSAxCiAgICAgICAgaWYgc2VsZi5yZWZjb3VudCA8PSAwIGFuZCBub3Qgc2VsZi5rZWVwYWxpdmU6CiAgICAgICAgICAgIHNlbGYucmVhbF9jbG9zZSgpCgogICAgZGVmIHJlYWxfY2xvc2Uoc2VsZik6CiAgICAgICAgc2VsZi5lbmR0cmFuc2ZlcigpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmZ0cC5jbG9zZSgpCiAgICAgICAgZXhjZXB0IGZ0cGVycm9ycygpOgogICAgICAgICAgICBwYXNzCgojIFByb3h5IGhhbmRsaW5nCmRlZiBnZXRwcm94aWVzX2Vudmlyb25tZW50KCk6CiAgICAiIiJSZXR1cm4gYSBkaWN0aW9uYXJ5IG9mIHNjaGVtZSAtPiBwcm94eSBzZXJ2ZXIgVVJMIG1hcHBpbmdzLgoKICAgIFNjYW4gdGhlIGVudmlyb25tZW50IGZvciB2YXJpYWJsZXMgbmFtZWQgPHNjaGVtZT5fcHJveHk7CiAgICB0aGlzIHNlZW1zIHRvIGJlIHRoZSBzdGFuZGFyZCBjb252ZW50aW9uLiAgSWYgeW91IG5lZWQgYQogICAgZGlmZmVyZW50IHdheSwgeW91IGNhbiBwYXNzIGEgcHJveGllcyBkaWN0aW9uYXJ5IHRvIHRoZQogICAgW0ZhbmN5XVVSTG9wZW5lciBjb25zdHJ1Y3Rvci4KCiAgICAiIiIKICAgIHByb3hpZXMgPSB7fQogICAgIyBpbiBvcmRlciB0byBwcmVmZXIgbG93ZXJjYXNlIHZhcmlhYmxlcywgcHJvY2VzcyBlbnZpcm9ubWVudCBpbgogICAgIyB0d28gcGFzc2VzOiBmaXJzdCBtYXRjaGVzIGFueSwgc2Vjb25kIHBhc3MgbWF0Y2hlcyBsb3dlcmNhc2Ugb25seQogICAgZm9yIG5hbWUsIHZhbHVlIGluIG9zLmVudmlyb24uaXRlbXMoKToKICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCiAgICAgICAgaWYgdmFsdWUgYW5kIG5hbWVbLTY6XSA9PSAnX3Byb3h5JzoKICAgICAgICAgICAgcHJveGllc1tuYW1lWzotNl1dID0gdmFsdWUKICAgICMgQ1ZFLTIwMTYtMTAwMDExMCAtIElmIHdlIGFyZSBydW5uaW5nIGFzIENHSSBzY3JpcHQsIGZvcmdldCBIVFRQX1BST1hZCiAgICAjIChub24tYWxsLWxvd2VyY2FzZSkgYXMgaXQgbWF5IGJlIHNldCBmcm9tIHRoZSB3ZWIgc2VydmVyIGJ5IGEgIlByb3h5OiIKICAgICMgaGVhZGVyIGZyb20gdGhlIGNsaWVudAogICAgIyBJZiAicHJveHkiIGlzIGxvd2VyY2FzZSwgaXQgd2lsbCBzdGlsbCBiZSB1c2VkIHRoYW5rcyB0byB0aGUgbmV4dCBibG9jawogICAgaWYgJ1JFUVVFU1RfTUVUSE9EJyBpbiBvcy5lbnZpcm9uOgogICAgICAgIHByb3hpZXMucG9wKCdodHRwJywgTm9uZSkKICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBvcy5lbnZpcm9uLml0ZW1zKCk6CiAgICAgICAgaWYgbmFtZVstNjpdID09ICdfcHJveHknOgogICAgICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCiAgICAgICAgICAgIGlmIHZhbHVlOgogICAgICAgICAgICAgICAgcHJveGllc1tuYW1lWzotNl1dID0gdmFsdWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByb3hpZXMucG9wKG5hbWVbOi02XSwgTm9uZSkKICAgIHJldHVybiBwcm94aWVzCgpkZWYgcHJveHlfYnlwYXNzX2Vudmlyb25tZW50KGhvc3QsIHByb3hpZXM9Tm9uZSk6CiAgICAiIiJUZXN0IGlmIHByb3hpZXMgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBhIHBhcnRpY3VsYXIgaG9zdC4KCiAgICBDaGVja3MgdGhlIHByb3h5IGRpY3QgZm9yIHRoZSB2YWx1ZSBvZiBub19wcm94eSwgd2hpY2ggc2hvdWxkCiAgICBiZSBhIGxpc3Qgb2YgY29tbWEgc2VwYXJhdGVkIEROUyBzdWZmaXhlcywgb3IgJyonIGZvciBhbGwgaG9zdHMuCgogICAgIiIiCiAgICBpZiBwcm94aWVzIGlzIE5vbmU6CiAgICAgICAgcHJveGllcyA9IGdldHByb3hpZXNfZW52aXJvbm1lbnQoKQogICAgIyBkb24ndCBieXBhc3MsIGlmIG5vX3Byb3h5IGlzbid0IHNwZWNpZmllZAogICAgdHJ5OgogICAgICAgIG5vX3Byb3h5ID0gcHJveGllc1snbm8nXQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJldHVybiBGYWxzZQogICAgIyAnKicgaXMgc3BlY2lhbCBjYXNlIGZvciBhbHdheXMgYnlwYXNzCiAgICBpZiBub19wcm94eSA9PSAnKic6CiAgICAgICAgcmV0dXJuIFRydWUKICAgIGhvc3QgPSBob3N0Lmxvd2VyKCkKICAgICMgc3RyaXAgcG9ydCBvZmYgaG9zdAogICAgaG9zdG9ubHksIHBvcnQgPSBfc3BsaXRwb3J0KGhvc3QpCiAgICAjIGNoZWNrIGlmIHRoZSBob3N0IGVuZHMgd2l0aCBhbnkgb2YgdGhlIEROUyBzdWZmaXhlcwogICAgZm9yIG5hbWUgaW4gbm9fcHJveHkuc3BsaXQoJywnKToKICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCiAgICAgICAgaWYgbmFtZToKICAgICAgICAgICAgbmFtZSA9IG5hbWUubHN0cmlwKCcuJykgICMgaWdub3JlIGxlYWRpbmcgZG90cwogICAgICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCiAgICAgICAgICAgIGlmIGhvc3Rvbmx5ID09IG5hbWUgb3IgaG9zdCA9PSBuYW1lOgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgbmFtZSA9ICcuJyArIG5hbWUKICAgICAgICAgICAgaWYgaG9zdG9ubHkuZW5kc3dpdGgobmFtZSkgb3IgaG9zdC5lbmRzd2l0aChuYW1lKToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAjIG90aGVyd2lzZSwgZG9uJ3QgYnlwYXNzCiAgICByZXR1cm4gRmFsc2UKCgojIFRoaXMgY29kZSB0ZXN0cyBhbiBPU1ggc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmUgYnV0IGlzIHRlc3RhYmxlIG9uIGFsbAojIHBsYXRmb3JtcwpkZWYgX3Byb3h5X2J5cGFzc19tYWNvc3hfc3lzY29uZihob3N0LCBwcm94eV9zZXR0aW5ncyk6CiAgICAiIiIKICAgIFJldHVybiBUcnVlIGlmZiB0aGlzIGhvc3Qgc2hvdWxkbid0IGJlIGFjY2Vzc2VkIHVzaW5nIGEgcHJveHkKCiAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIE1hY09TWCBmcmFtZXdvcmsgU3lzdGVtQ29uZmlndXJhdGlvbgogICAgdG8gZmV0Y2ggdGhlIHByb3h5IGluZm9ybWF0aW9uLgoKICAgIHByb3h5X3NldHRpbmdzIGNvbWUgZnJvbSBfc2Nwcm94eS5fZ2V0X3Byb3h5X3NldHRpbmdzIG9yIGdldCBtb2NrZWQgaWU6CiAgICB7ICdleGNsdWRlX3NpbXBsZSc6IGJvb2wsCiAgICAgICdleGNlcHRpb25zJzogWydmb28uYmFyJywgJyouYmFyLmNvbScsICcxMjcuMC4wLjEnLCAnMTAuMScsICcxMC4wLzE2J10KICAgIH0KICAgICIiIgogICAgZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCgogICAgaG9zdG9ubHksIHBvcnQgPSBfc3BsaXRwb3J0KGhvc3QpCgogICAgZGVmIGlwMm51bShpcEFkZHIpOgogICAgICAgIHBhcnRzID0gaXBBZGRyLnNwbGl0KCcuJykKICAgICAgICBwYXJ0cyA9IGxpc3QobWFwKGludCwgcGFydHMpKQogICAgICAgIGlmIGxlbihwYXJ0cykgIT0gNDoKICAgICAgICAgICAgcGFydHMgPSAocGFydHMgKyBbMCwgMCwgMCwgMF0pWzo0XQogICAgICAgIHJldHVybiAocGFydHNbMF0gPDwgMjQpIHwgKHBhcnRzWzFdIDw8IDE2KSB8IChwYXJ0c1syXSA8PCA4KSB8IHBhcnRzWzNdCgogICAgIyBDaGVjayBmb3Igc2ltcGxlIGhvc3QgbmFtZXM6CiAgICBpZiAnLicgbm90IGluIGhvc3Q6CiAgICAgICAgaWYgcHJveHlfc2V0dGluZ3NbJ2V4Y2x1ZGVfc2ltcGxlJ106CiAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgaG9zdElQID0gTm9uZQoKICAgIGZvciB2YWx1ZSBpbiBwcm94eV9zZXR0aW5ncy5nZXQoJ2V4Y2VwdGlvbnMnLCAoKSk6CiAgICAgICAgIyBJdGVtcyBpbiB0aGUgbGlzdCBhcmUgc3RyaW5ncyBsaWtlIHRoZXNlOiAqLmxvY2FsLCAxNjkuMjU0LzE2CiAgICAgICAgaWYgbm90IHZhbHVlOiBjb250aW51ZQoKICAgICAgICBtID0gcmUubWF0Y2gociIoXGQrKD86XC5cZCspKikoL1xkKyk/IiwgdmFsdWUpCiAgICAgICAgaWYgbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgaG9zdElQIGlzIE5vbmU6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaG9zdElQID0gc29ja2V0LmdldGhvc3RieW5hbWUoaG9zdG9ubHkpCiAgICAgICAgICAgICAgICAgICAgaG9zdElQID0gaXAybnVtKGhvc3RJUCkKICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBiYXNlID0gaXAybnVtKG0uZ3JvdXAoMSkpCiAgICAgICAgICAgIG1hc2sgPSBtLmdyb3VwKDIpCiAgICAgICAgICAgIGlmIG1hc2sgaXMgTm9uZToKICAgICAgICAgICAgICAgIG1hc2sgPSA4ICogKG0uZ3JvdXAoMSkuY291bnQoJy4nKSArIDEpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBtYXNrID0gaW50KG1hc2tbMTpdKQoKICAgICAgICAgICAgaWYgbWFzayA8IDAgb3IgbWFzayA+IDMyOgogICAgICAgICAgICAgICAgIyBTeXN0ZW0gbGlicmFyaWVzIGlnbm9yZSBpbnZhbGlkIHByZWZpeCBsZW5ndGhzCiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgbWFzayA9IDMyIC0gbWFzawoKICAgICAgICAgICAgaWYgKGhvc3RJUCA+PiBtYXNrKSA9PSAoYmFzZSA+PiBtYXNrKToKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgICAgIGVsaWYgZm5tYXRjaChob3N0LCB2YWx1ZSk6CiAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgcmV0dXJuIEZhbHNlCgoKaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgZnJvbSBfc2Nwcm94eSBpbXBvcnQgX2dldF9wcm94eV9zZXR0aW5ncywgX2dldF9wcm94aWVzCgogICAgZGVmIHByb3h5X2J5cGFzc19tYWNvc3hfc3lzY29uZihob3N0KToKICAgICAgICBwcm94eV9zZXR0aW5ncyA9IF9nZXRfcHJveHlfc2V0dGluZ3MoKQogICAgICAgIHJldHVybiBfcHJveHlfYnlwYXNzX21hY29zeF9zeXNjb25mKGhvc3QsIHByb3h5X3NldHRpbmdzKQoKICAgIGRlZiBnZXRwcm94aWVzX21hY29zeF9zeXNjb25mKCk6CiAgICAgICAgIiIiUmV0dXJuIGEgZGljdGlvbmFyeSBvZiBzY2hlbWUgLT4gcHJveHkgc2VydmVyIFVSTCBtYXBwaW5ncy4KCiAgICAgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBNYWNPU1ggZnJhbWV3b3JrIFN5c3RlbUNvbmZpZ3VyYXRpb24KICAgICAgICB0byBmZXRjaCB0aGUgcHJveHkgaW5mb3JtYXRpb24uCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIF9nZXRfcHJveGllcygpCgoKCiAgICBkZWYgcHJveHlfYnlwYXNzKGhvc3QpOgogICAgICAgICIiIlJldHVybiBUcnVlLCBpZiBob3N0IHNob3VsZCBiZSBieXBhc3NlZC4KCiAgICAgICAgQ2hlY2tzIHByb3h5IHNldHRpbmdzIGdhdGhlcmVkIGZyb20gdGhlIGVudmlyb25tZW50LCBpZiBzcGVjaWZpZWQsCiAgICAgICAgb3IgZnJvbSB0aGUgTWFjT1NYIGZyYW1ld29yayBTeXN0ZW1Db25maWd1cmF0aW9uLgoKICAgICAgICAiIiIKICAgICAgICBwcm94aWVzID0gZ2V0cHJveGllc19lbnZpcm9ubWVudCgpCiAgICAgICAgaWYgcHJveGllczoKICAgICAgICAgICAgcmV0dXJuIHByb3h5X2J5cGFzc19lbnZpcm9ubWVudChob3N0LCBwcm94aWVzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBwcm94eV9ieXBhc3NfbWFjb3N4X3N5c2NvbmYoaG9zdCkKCiAgICBkZWYgZ2V0cHJveGllcygpOgogICAgICAgIHJldHVybiBnZXRwcm94aWVzX2Vudmlyb25tZW50KCkgb3IgZ2V0cHJveGllc19tYWNvc3hfc3lzY29uZigpCgoKZWxpZiBvcy5uYW1lID09ICdudCc6CiAgICBkZWYgZ2V0cHJveGllc19yZWdpc3RyeSgpOgogICAgICAgICIiIlJldHVybiBhIGRpY3Rpb25hcnkgb2Ygc2NoZW1lIC0+IHByb3h5IHNlcnZlciBVUkwgbWFwcGluZ3MuCgogICAgICAgIFdpbjMyIHVzZXMgdGhlIHJlZ2lzdHJ5IHRvIHN0b3JlIHByb3hpZXMuCgogICAgICAgICIiIgogICAgICAgIHByb3hpZXMgPSB7fQogICAgICAgIHRyeToKICAgICAgICAgICAgaW1wb3J0IHdpbnJlZwogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIyBTdGQgbW9kdWxlLCBzbyBzaG91bGQgYmUgYXJvdW5kIC0gYnV0IHlvdSBuZXZlciBrbm93IQogICAgICAgICAgICByZXR1cm4gcHJveGllcwogICAgICAgIHRyeToKICAgICAgICAgICAgaW50ZXJuZXRTZXR0aW5ncyA9IHdpbnJlZy5PcGVuS2V5KHdpbnJlZy5IS0VZX0NVUlJFTlRfVVNFUiwKICAgICAgICAgICAgICAgIHInU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cSW50ZXJuZXQgU2V0dGluZ3MnKQogICAgICAgICAgICBwcm94eUVuYWJsZSA9IHdpbnJlZy5RdWVyeVZhbHVlRXgoaW50ZXJuZXRTZXR0aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJveHlFbmFibGUnKVswXQogICAgICAgICAgICBpZiBwcm94eUVuYWJsZToKICAgICAgICAgICAgICAgICMgUmV0dXJuZWQgYXMgVW5pY29kZSBidXQgcHJvYmxlbXMgaWYgbm90IGNvbnZlcnRlZCB0byBBU0NJSQogICAgICAgICAgICAgICAgcHJveHlTZXJ2ZXIgPSBzdHIod2lucmVnLlF1ZXJ5VmFsdWVFeChpbnRlcm5ldFNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Byb3h5U2VydmVyJylbMF0pCiAgICAgICAgICAgICAgICBpZiAnPScgbm90IGluIHByb3h5U2VydmVyIGFuZCAnOycgbm90IGluIHByb3h5U2VydmVyOgogICAgICAgICAgICAgICAgICAgICMgVXNlIG9uZSBzZXR0aW5nIGZvciBhbGwgcHJvdG9jb2xzLgogICAgICAgICAgICAgICAgICAgIHByb3h5U2VydmVyID0gJ2h0dHA9ezB9O2h0dHBzPXswfTtmdHA9ezB9Jy5mb3JtYXQocHJveHlTZXJ2ZXIpCiAgICAgICAgICAgICAgICBmb3IgcCBpbiBwcm94eVNlcnZlci5zcGxpdCgnOycpOgogICAgICAgICAgICAgICAgICAgIHByb3RvY29sLCBhZGRyZXNzID0gcC5zcGxpdCgnPScsIDEpCiAgICAgICAgICAgICAgICAgICAgIyBTZWUgaWYgYWRkcmVzcyBoYXMgYSB0eXBlOi8vIHByZWZpeAogICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaCgnKD86W14vOl0rKTovLycsIGFkZHJlc3MpOgogICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCB0eXBlOi8vIHByZWZpeCB0byBhZGRyZXNzIHdpdGhvdXQgc3BlY2lmeWluZyB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHByb3RvY29sIGluICgnaHR0cCcsICdodHRwcycsICdmdHAnKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIGRlZmF1bHQgcHJveHkgdHlwZSBvZiBXaW5kb3dzIGlzIEhUVFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgPSAnaHR0cDovLycgKyBhZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcHJvdG9jb2wgPT0gJ3NvY2tzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgPSAnc29ja3M6Ly8nICsgYWRkcmVzcwogICAgICAgICAgICAgICAgICAgIHByb3hpZXNbcHJvdG9jb2xdID0gYWRkcmVzcwogICAgICAgICAgICAgICAgIyBVc2UgU09DS1MgcHJveHkgZm9yIEhUVFAoUykgcHJvdG9jb2xzCiAgICAgICAgICAgICAgICBpZiBwcm94aWVzLmdldCgnc29ja3MnKToKICAgICAgICAgICAgICAgICAgICAjIFRoZSBkZWZhdWx0IFNPQ0tTIHByb3h5IHR5cGUgb2YgV2luZG93cyBpcyBTT0NLUzQKICAgICAgICAgICAgICAgICAgICBhZGRyZXNzID0gcmUuc3ViKHInXnNvY2tzOi8vJywgJ3NvY2tzNDovLycsIHByb3hpZXNbJ3NvY2tzJ10pCiAgICAgICAgICAgICAgICAgICAgcHJveGllc1snaHR0cCddID0gcHJveGllcy5nZXQoJ2h0dHAnKSBvciBhZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgcHJveGllc1snaHR0cHMnXSA9IHByb3hpZXMuZ2V0KCdodHRwcycpIG9yIGFkZHJlc3MKICAgICAgICAgICAgaW50ZXJuZXRTZXR0aW5ncy5DbG9zZSgpCiAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgogICAgICAgICAgICAjIEVpdGhlciByZWdpc3RyeSBrZXkgbm90IGZvdW5kIGV0Yywgb3IgdGhlIHZhbHVlIGluIGFuCiAgICAgICAgICAgICMgdW5leHBlY3RlZCBmb3JtYXQuCiAgICAgICAgICAgICMgcHJveGllcyBhbHJlYWR5IHNldCB1cCB0byBiZSBlbXB0eSBzbyBub3RoaW5nIHRvIGRvCiAgICAgICAgICAgIHBhc3MKICAgICAgICByZXR1cm4gcHJveGllcwoKICAgIGRlZiBnZXRwcm94aWVzKCk6CiAgICAgICAgIiIiUmV0dXJuIGEgZGljdGlvbmFyeSBvZiBzY2hlbWUgLT4gcHJveHkgc2VydmVyIFVSTCBtYXBwaW5ncy4KCiAgICAgICAgUmV0dXJucyBzZXR0aW5ncyBnYXRoZXJlZCBmcm9tIHRoZSBlbnZpcm9ubWVudCwgaWYgc3BlY2lmaWVkLAogICAgICAgIG9yIHRoZSByZWdpc3RyeS4KCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGdldHByb3hpZXNfZW52aXJvbm1lbnQoKSBvciBnZXRwcm94aWVzX3JlZ2lzdHJ5KCkKCiAgICBkZWYgcHJveHlfYnlwYXNzX3JlZ2lzdHJ5KGhvc3QpOgogICAgICAgIHRyeToKICAgICAgICAgICAgaW1wb3J0IHdpbnJlZwogICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIyBTdGQgbW9kdWxlcywgc28gc2hvdWxkIGJlIGFyb3VuZCAtIGJ1dCB5b3UgbmV2ZXIga25vdyEKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICB0cnk6CiAgICAgICAgICAgIGludGVybmV0U2V0dGluZ3MgPSB3aW5yZWcuT3BlbktleSh3aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsCiAgICAgICAgICAgICAgICByJ1NvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEludGVybmV0IFNldHRpbmdzJykKICAgICAgICAgICAgcHJveHlFbmFibGUgPSB3aW5yZWcuUXVlcnlWYWx1ZUV4KGludGVybmV0U2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Byb3h5RW5hYmxlJylbMF0KICAgICAgICAgICAgcHJveHlPdmVycmlkZSA9IHN0cih3aW5yZWcuUXVlcnlWYWx1ZUV4KGludGVybmV0U2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Byb3h5T3ZlcnJpZGUnKVswXSkKICAgICAgICAgICAgIyBeXl5eIFJldHVybmVkIGFzIFVuaWNvZGUgYnV0IHByb2JsZW1zIGlmIG5vdCBjb252ZXJ0ZWQgdG8gQVNDSUkKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICBpZiBub3QgcHJveHlFbmFibGUgb3Igbm90IHByb3h5T3ZlcnJpZGU6CiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgIyB0cnkgdG8gbWFrZSBhIGhvc3QgbGlzdCBmcm9tIG5hbWUgYW5kIElQIGFkZHJlc3MuCiAgICAgICAgcmF3SG9zdCwgcG9ydCA9IF9zcGxpdHBvcnQoaG9zdCkKICAgICAgICBob3N0ID0gW3Jhd0hvc3RdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhZGRyID0gc29ja2V0LmdldGhvc3RieW5hbWUocmF3SG9zdCkKICAgICAgICAgICAgaWYgYWRkciAhPSByYXdIb3N0OgogICAgICAgICAgICAgICAgaG9zdC5hcHBlbmQoYWRkcikKICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIHRyeToKICAgICAgICAgICAgZnFkbiA9IHNvY2tldC5nZXRmcWRuKHJhd0hvc3QpCiAgICAgICAgICAgIGlmIGZxZG4gIT0gcmF3SG9zdDoKICAgICAgICAgICAgICAgIGhvc3QuYXBwZW5kKGZxZG4pCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICAjIG1ha2UgYSBjaGVjayB2YWx1ZSBsaXN0IGZyb20gdGhlIHJlZ2lzdHJ5IGVudHJ5OiByZXBsYWNlIHRoZQogICAgICAgICMgJzxsb2NhbD4nIHN0cmluZyBieSB0aGUgbG9jYWxob3N0IGVudHJ5IGFuZCB0aGUgY29ycmVzcG9uZGluZwogICAgICAgICMgY2Fub25pY2FsIGVudHJ5LgogICAgICAgIHByb3h5T3ZlcnJpZGUgPSBwcm94eU92ZXJyaWRlLnNwbGl0KCc7JykKICAgICAgICAjIG5vdyBjaGVjayBpZiB3ZSBtYXRjaCBvbmUgb2YgdGhlIHJlZ2lzdHJ5IHZhbHVlcy4KICAgICAgICBmb3IgdGVzdCBpbiBwcm94eU92ZXJyaWRlOgogICAgICAgICAgICBpZiB0ZXN0ID09ICc8bG9jYWw+JzoKICAgICAgICAgICAgICAgIGlmICcuJyBub3QgaW4gcmF3SG9zdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCIuIiwgciJcLiIpICAgICAjIG1hc2sgZG90cwogICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCIqIiwgciIuKiIpICAgICAjIGNoYW5nZSBnbG9iIHNlcXVlbmNlCiAgICAgICAgICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2UoIj8iLCByIi4iKSAgICAgICMgY2hhbmdlIGdsb2IgY2hhcgogICAgICAgICAgICBmb3IgdmFsIGluIGhvc3Q6CiAgICAgICAgICAgICAgICBpZiByZS5tYXRjaCh0ZXN0LCB2YWwsIHJlLkkpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgcmV0dXJuIDAKCiAgICBkZWYgcHJveHlfYnlwYXNzKGhvc3QpOgogICAgICAgICIiIlJldHVybiBUcnVlLCBpZiBob3N0IHNob3VsZCBiZSBieXBhc3NlZC4KCiAgICAgICAgQ2hlY2tzIHByb3h5IHNldHRpbmdzIGdhdGhlcmVkIGZyb20gdGhlIGVudmlyb25tZW50LCBpZiBzcGVjaWZpZWQsCiAgICAgICAgb3IgdGhlIHJlZ2lzdHJ5LgoKICAgICAgICAiIiIKICAgICAgICBwcm94aWVzID0gZ2V0cHJveGllc19lbnZpcm9ubWVudCgpCiAgICAgICAgaWYgcHJveGllczoKICAgICAgICAgICAgcmV0dXJuIHByb3h5X2J5cGFzc19lbnZpcm9ubWVudChob3N0LCBwcm94aWVzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBwcm94eV9ieXBhc3NfcmVnaXN0cnkoaG9zdCkKCmVsc2U6CiAgICAjIEJ5IGRlZmF1bHQgdXNlIGVudmlyb25tZW50IHZhcmlhYmxlcwogICAgZ2V0cHJveGllcyA9IGdldHByb3hpZXNfZW52aXJvbm1lbnQKICAgIHByb3h5X2J5cGFzcyA9IHByb3h5X2J5cGFzc19lbnZpcm9ubWVudApQSwMEFAAAAAAAAyCjVkTO7Ko5CQAAOQkAABIAAAB1cmxsaWIvcmVzcG9uc2UucHkiIiJSZXNwb25zZSBjbGFzc2VzIHVzZWQgYnkgdXJsbGliLgoKVGhlIGJhc2UgY2xhc3MsIGFkZGJhc2UsIGRlZmluZXMgYSBtaW5pbWFsIGZpbGUtbGlrZSBpbnRlcmZhY2UsCmluY2x1ZGluZyByZWFkKCkgYW5kIHJlYWRsaW5lKCkuICBUaGUgdHlwaWNhbCByZXNwb25zZSBvYmplY3QgaXMgYW4KYWRkaW5mb3VybCBpbnN0YW5jZSwgd2hpY2ggZGVmaW5lcyBhbiBpbmZvKCkgbWV0aG9kIHRoYXQgcmV0dXJucwpoZWFkZXJzIGFuZCBhIGdldHVybCgpIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIHVybC4KIiIiCgppbXBvcnQgdGVtcGZpbGUKCl9fYWxsX18gPSBbJ2FkZGJhc2UnLCAnYWRkY2xvc2Vob29rJywgJ2FkZGluZm8nLCAnYWRkaW5mb3VybCddCgoKY2xhc3MgYWRkYmFzZSh0ZW1wZmlsZS5fVGVtcG9yYXJ5RmlsZVdyYXBwZXIpOgogICAgIiIiQmFzZSBjbGFzcyBmb3IgYWRkaW5mbyBhbmQgYWRkY2xvc2Vob29rLiBJcyBhIGdvb2QgaWRlYSBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uLiIiIgoKICAgICMgWFhYIEFkZCBhIG1ldGhvZCB0byBleHBvc2UgdGhlIHRpbWVvdXQgb24gdGhlIHVuZGVybHlpbmcgc29ja2V0PwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CiAgICAgICAgc3VwZXIoYWRkYmFzZSwgIHNlbGYpLl9faW5pdF9fKGZwLCAnPHVybGxpYiByZXNwb25zZT4nLCBkZWxldGU9RmFsc2UpCiAgICAgICAgIyBLZWVwIHJlZmVyZW5jZSBhcm91bmQgYXMgdGhpcyB3YXMgcGFydCBvZiB0aGUgb3JpZ2luYWwgQVBJLgogICAgICAgIHNlbGYuZnAgPSBmcAoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzwlcyBhdCAlciB3aG9zZSBmcCA9ICVyPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLCBzZWxmLmZpbGUpCgogICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLmZwLmNsb3NlZDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CiAgICAgICAgc2VsZi5jbG9zZSgpCgoKY2xhc3MgYWRkY2xvc2Vob29rKGFkZGJhc2UpOgogICAgIiIiQ2xhc3MgdG8gYWRkIGEgY2xvc2UgaG9vayB0byBhbiBvcGVuIGZpbGUuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwLCBjbG9zZWhvb2ssICpob29rYXJncyk6CiAgICAgICAgc3VwZXIoYWRkY2xvc2Vob29rLCBzZWxmKS5fX2luaXRfXyhmcCkKICAgICAgICBzZWxmLmNsb3NlaG9vayA9IGNsb3NlaG9vawogICAgICAgIHNlbGYuaG9va2FyZ3MgPSBob29rYXJncwoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGNsb3NlaG9vayA9IHNlbGYuY2xvc2Vob29rCiAgICAgICAgICAgIGhvb2thcmdzID0gc2VsZi5ob29rYXJncwogICAgICAgICAgICBpZiBjbG9zZWhvb2s6CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlaG9vayA9IE5vbmUKICAgICAgICAgICAgICAgIHNlbGYuaG9va2FyZ3MgPSBOb25lCiAgICAgICAgICAgICAgICBjbG9zZWhvb2soKmhvb2thcmdzKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHN1cGVyKGFkZGNsb3NlaG9vaywgc2VsZikuY2xvc2UoKQoKCmNsYXNzIGFkZGluZm8oYWRkYmFzZSk6CiAgICAiIiJjbGFzcyB0byBhZGQgYW4gaW5mbygpIG1ldGhvZCB0byBhbiBvcGVuIGZpbGUuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwLCBoZWFkZXJzKToKICAgICAgICBzdXBlcihhZGRpbmZvLCBzZWxmKS5fX2luaXRfXyhmcCkKICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCgogICAgZGVmIGluZm8oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVycwoKCmNsYXNzIGFkZGluZm91cmwoYWRkaW5mbyk6CiAgICAiIiJjbGFzcyB0byBhZGQgaW5mbygpIGFuZCBnZXR1cmwoKSBtZXRob2RzIHRvIGFuIG9wZW4gZmlsZS4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZnAsIGhlYWRlcnMsIHVybCwgY29kZT1Ob25lKToKICAgICAgICBzdXBlcihhZGRpbmZvdXJsLCBzZWxmKS5fX2luaXRfXyhmcCwgaGVhZGVycykKICAgICAgICBzZWxmLnVybCA9IHVybAogICAgICAgIHNlbGYuY29kZSA9IGNvZGUKCiAgICBAcHJvcGVydHkKICAgIGRlZiBzdGF0dXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuY29kZQoKICAgIGRlZiBnZXRjb2RlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmNvZGUKCiAgICBkZWYgZ2V0dXJsKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnVybApQSwMEFAAAAAAAAyCjVqUlG7HQJAAA0CQAABUAAAB1cmxsaWIvcm9ib3RwYXJzZXIucHkiIiIgcm9ib3RwYXJzZXIucHkKCiAgICBDb3B5cmlnaHQgKEMpIDIwMDAgIEJhc3RpYW4gS2xlaW5laWRhbQoKICAgIFlvdSBjYW4gY2hvb3NlIGJldHdlZW4gdHdvIGxpY2Vuc2VzIHdoZW4gdXNpbmcgdGhpcyBwYWNrYWdlOgogICAgMSkgR05VIEdQTHYyCiAgICAyKSBQU0YgbGljZW5zZSBmb3IgUHl0aG9uIDIuMgoKICAgIFRoZSByb2JvdHMudHh0IEV4Y2x1c2lvbiBQcm90b2NvbCBpcyBpbXBsZW1lbnRlZCBhcyBzcGVjaWZpZWQgaW4KICAgIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy9ub3JvYm90cy1yZmMudHh0CiIiIgoKaW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCB1cmxsaWIucGFyc2UKaW1wb3J0IHVybGxpYi5yZXF1ZXN0CgpfX2FsbF9fID0gWyJSb2JvdEZpbGVQYXJzZXIiXQoKUmVxdWVzdFJhdGUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJSZXF1ZXN0UmF0ZSIsICJyZXF1ZXN0cyBzZWNvbmRzIikKCgpjbGFzcyBSb2JvdEZpbGVQYXJzZXI6CiAgICAiIiIgVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNldCBvZiBtZXRob2RzIHRvIHJlYWQsIHBhcnNlIGFuZCBhbnN3ZXIKICAgIHF1ZXN0aW9ucyBhYm91dCBhIHNpbmdsZSByb2JvdHMudHh0IGZpbGUuCgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybD0nJyk6CiAgICAgICAgc2VsZi5lbnRyaWVzID0gW10KICAgICAgICBzZWxmLnNpdGVtYXBzID0gW10KICAgICAgICBzZWxmLmRlZmF1bHRfZW50cnkgPSBOb25lCiAgICAgICAgc2VsZi5kaXNhbGxvd19hbGwgPSBGYWxzZQogICAgICAgIHNlbGYuYWxsb3dfYWxsID0gRmFsc2UKICAgICAgICBzZWxmLnNldF91cmwodXJsKQogICAgICAgIHNlbGYubGFzdF9jaGVja2VkID0gMAoKICAgIGRlZiBtdGltZShzZWxmKToKICAgICAgICAiIiJSZXR1cm5zIHRoZSB0aW1lIHRoZSByb2JvdHMudHh0IGZpbGUgd2FzIGxhc3QgZmV0Y2hlZC4KCiAgICAgICAgVGhpcyBpcyB1c2VmdWwgZm9yIGxvbmctcnVubmluZyB3ZWIgc3BpZGVycyB0aGF0IG5lZWQgdG8KICAgICAgICBjaGVjayBmb3IgbmV3IHJvYm90cy50eHQgZmlsZXMgcGVyaW9kaWNhbGx5LgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5sYXN0X2NoZWNrZWQKCiAgICBkZWYgbW9kaWZpZWQoc2VsZik6CiAgICAgICAgIiIiU2V0cyB0aGUgdGltZSB0aGUgcm9ib3RzLnR4dCBmaWxlIHdhcyBsYXN0IGZldGNoZWQgdG8gdGhlCiAgICAgICAgY3VycmVudCB0aW1lLgoKICAgICAgICAiIiIKICAgICAgICBpbXBvcnQgdGltZQogICAgICAgIHNlbGYubGFzdF9jaGVja2VkID0gdGltZS50aW1lKCkKCiAgICBkZWYgc2V0X3VybChzZWxmLCB1cmwpOgogICAgICAgICIiIlNldHMgdGhlIFVSTCByZWZlcnJpbmcgdG8gYSByb2JvdHMudHh0IGZpbGUuIiIiCiAgICAgICAgc2VsZi51cmwgPSB1cmwKICAgICAgICBzZWxmLmhvc3QsIHNlbGYucGF0aCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZSh1cmwpWzE6M10KCiAgICBkZWYgcmVhZChzZWxmKToKICAgICAgICAiIiJSZWFkcyB0aGUgcm9ib3RzLnR4dCBVUkwgYW5kIGZlZWRzIGl0IHRvIHRoZSBwYXJzZXIuIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBmID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihzZWxmLnVybCkKICAgICAgICBleGNlcHQgdXJsbGliLmVycm9yLkhUVFBFcnJvciBhcyBlcnI6CiAgICAgICAgICAgIGlmIGVyci5jb2RlIGluICg0MDEsIDQwMyk6CiAgICAgICAgICAgICAgICBzZWxmLmRpc2FsbG93X2FsbCA9IFRydWUKICAgICAgICAgICAgZWxpZiBlcnIuY29kZSA+PSA0MDAgYW5kIGVyci5jb2RlIDwgNTAwOgogICAgICAgICAgICAgICAgc2VsZi5hbGxvd19hbGwgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmF3ID0gZi5yZWFkKCkKICAgICAgICAgICAgc2VsZi5wYXJzZShyYXcuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0bGluZXMoKSkKCiAgICBkZWYgX2FkZF9lbnRyeShzZWxmLCBlbnRyeSk6CiAgICAgICAgaWYgIioiIGluIGVudHJ5LnVzZXJhZ2VudHM6CiAgICAgICAgICAgICMgdGhlIGRlZmF1bHQgZW50cnkgaXMgY29uc2lkZXJlZCBsYXN0CiAgICAgICAgICAgIGlmIHNlbGYuZGVmYXVsdF9lbnRyeSBpcyBOb25lOgogICAgICAgICAgICAgICAgIyB0aGUgZmlyc3QgZGVmYXVsdCBlbnRyeSB3aW5zCiAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHRfZW50cnkgPSBlbnRyeQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuZW50cmllcy5hcHBlbmQoZW50cnkpCgogICAgZGVmIHBhcnNlKHNlbGYsIGxpbmVzKToKICAgICAgICAiIiJQYXJzZSB0aGUgaW5wdXQgbGluZXMgZnJvbSBhIHJvYm90cy50eHQgZmlsZS4KCiAgICAgICAgV2UgYWxsb3cgdGhhdCBhIHVzZXItYWdlbnQ6IGxpbmUgaXMgbm90IHByZWNlZGVkIGJ5CiAgICAgICAgb25lIG9yIG1vcmUgYmxhbmsgbGluZXMuCiAgICAgICAgIiIiCiAgICAgICAgIyBzdGF0ZXM6CiAgICAgICAgIyAgIDA6IHN0YXJ0IHN0YXRlCiAgICAgICAgIyAgIDE6IHNhdyB1c2VyLWFnZW50IGxpbmUKICAgICAgICAjICAgMjogc2F3IGFuIGFsbG93IG9yIGRpc2FsbG93IGxpbmUKICAgICAgICBzdGF0ZSA9IDAKICAgICAgICBlbnRyeSA9IEVudHJ5KCkKCiAgICAgICAgc2VsZi5tb2RpZmllZCgpCiAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgaWYgc3RhdGUgPT0gMToKICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IEVudHJ5KCkKICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDAKICAgICAgICAgICAgICAgIGVsaWYgc3RhdGUgPT0gMjoKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfZW50cnkoZW50cnkpCiAgICAgICAgICAgICAgICAgICAgZW50cnkgPSBFbnRyeSgpCiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAwCiAgICAgICAgICAgICMgcmVtb3ZlIG9wdGlvbmFsIGNvbW1lbnQgYW5kIHN0cmlwIGxpbmUKICAgICAgICAgICAgaSA9IGxpbmUuZmluZCgnIycpCiAgICAgICAgICAgIGlmIGkgPj0gMDoKICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzppXQogICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJzonLCAxKQogICAgICAgICAgICBpZiBsZW4obGluZSkgPT0gMjoKICAgICAgICAgICAgICAgIGxpbmVbMF0gPSBsaW5lWzBdLnN0cmlwKCkubG93ZXIoKQogICAgICAgICAgICAgICAgbGluZVsxXSA9IHVybGxpYi5wYXJzZS51bnF1b3RlKGxpbmVbMV0uc3RyaXAoKSkKICAgICAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gInVzZXItYWdlbnQiOgogICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlID09IDI6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9lbnRyeShlbnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkgPSBFbnRyeSgpCiAgICAgICAgICAgICAgICAgICAgZW50cnkudXNlcmFnZW50cy5hcHBlbmQobGluZVsxXSkKICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDEKICAgICAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAiZGlzYWxsb3ciOgogICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJ1bGVsaW5lcy5hcHBlbmQoUnVsZUxpbmUobGluZVsxXSwgRmFsc2UpKQogICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKICAgICAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAiYWxsb3ciOgogICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJ1bGVsaW5lcy5hcHBlbmQoUnVsZUxpbmUobGluZVsxXSwgVHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMgogICAgICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICJjcmF3bC1kZWxheSI6CiAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWZvcmUgdHJ5aW5nIHRvIGNvbnZlcnQgdG8gaW50IHdlIG5lZWQgdG8gbWFrZQogICAgICAgICAgICAgICAgICAgICAgICAjIHN1cmUgdGhhdCByb2JvdHMudHh0IGhhcyB2YWxpZCBzeW50YXggb3RoZXJ3aXNlCiAgICAgICAgICAgICAgICAgICAgICAgICMgaXQgd2lsbCBjcmFzaAogICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lWzFdLnN0cmlwKCkuaXNkaWdpdCgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuZGVsYXkgPSBpbnQobGluZVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCiAgICAgICAgICAgICAgICBlbGlmIGxpbmVbMF0gPT0gInJlcXVlc3QtcmF0ZSI6CiAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVycyA9IGxpbmVbMV0uc3BsaXQoJy8nKQogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGFsbCB2YWx1ZXMgYXJlIHNhbmUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihudW1iZXJzKSA9PSAyIGFuZCBudW1iZXJzWzBdLnN0cmlwKCkuaXNkaWdpdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbnVtYmVyc1sxXS5zdHJpcCgpLmlzZGlnaXQoKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZXFfcmF0ZSA9IFJlcXVlc3RSYXRlKGludChudW1iZXJzWzBdKSwgaW50KG51bWJlcnNbMV0pKQogICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKICAgICAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAic2l0ZW1hcCI6CiAgICAgICAgICAgICAgICAgICAgIyBBY2NvcmRpbmcgdG8gaHR0cDovL3d3dy5zaXRlbWFwcy5vcmcvcHJvdG9jb2wuaHRtbAogICAgICAgICAgICAgICAgICAgICMgIlRoaXMgZGlyZWN0aXZlIGlzIGluZGVwZW5kZW50IG9mIHRoZSB1c2VyLWFnZW50IGxpbmUsCiAgICAgICAgICAgICAgICAgICAgIyAgc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hlcmUgeW91IHBsYWNlIGl0IGluIHlvdXIgZmlsZS4iCiAgICAgICAgICAgICAgICAgICAgIyBUaGVyZWZvcmUgd2UgZG8gbm90IGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHBhcnNlci4KICAgICAgICAgICAgICAgICAgICBzZWxmLnNpdGVtYXBzLmFwcGVuZChsaW5lWzFdKQogICAgICAgIGlmIHN0YXRlID09IDI6CiAgICAgICAgICAgIHNlbGYuX2FkZF9lbnRyeShlbnRyeSkKCiAgICBkZWYgY2FuX2ZldGNoKHNlbGYsIHVzZXJhZ2VudCwgdXJsKToKICAgICAgICAiIiJ1c2luZyB0aGUgcGFyc2VkIHJvYm90cy50eHQgZGVjaWRlIGlmIHVzZXJhZ2VudCBjYW4gZmV0Y2ggdXJsIiIiCiAgICAgICAgaWYgc2VsZi5kaXNhbGxvd19hbGw6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGlmIHNlbGYuYWxsb3dfYWxsOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICMgVW50aWwgdGhlIHJvYm90cy50eHQgZmlsZSBoYXMgYmVlbiByZWFkIG9yIGZvdW5kIG5vdAogICAgICAgICMgdG8gZXhpc3QsIHdlIG11c3QgYXNzdW1lIHRoYXQgbm8gdXJsIGlzIGFsbG93YWJsZS4KICAgICAgICAjIFRoaXMgcHJldmVudHMgZmFsc2UgcG9zaXRpdmVzIHdoZW4gYSB1c2VyIGVycm9uZW91c2x5CiAgICAgICAgIyBjYWxscyBjYW5fZmV0Y2goKSBiZWZvcmUgY2FsbGluZyByZWFkKCkuCiAgICAgICAgaWYgbm90IHNlbGYubGFzdF9jaGVja2VkOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAjIHNlYXJjaCBmb3IgZ2l2ZW4gdXNlciBhZ2VudCBtYXRjaGVzCiAgICAgICAgIyB0aGUgZmlyc3QgbWF0Y2ggY291bnRzCiAgICAgICAgcGFyc2VkX3VybCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZSh1cmxsaWIucGFyc2UudW5xdW90ZSh1cmwpKQogICAgICAgIHVybCA9IHVybGxpYi5wYXJzZS51cmx1bnBhcnNlKCgnJywnJyxwYXJzZWRfdXJsLnBhdGgsCiAgICAgICAgICAgIHBhcnNlZF91cmwucGFyYW1zLHBhcnNlZF91cmwucXVlcnksIHBhcnNlZF91cmwuZnJhZ21lbnQpKQogICAgICAgIHVybCA9IHVybGxpYi5wYXJzZS5xdW90ZSh1cmwpCiAgICAgICAgaWYgbm90IHVybDoKICAgICAgICAgICAgdXJsID0gIi8iCiAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllczoKICAgICAgICAgICAgaWYgZW50cnkuYXBwbGllc190byh1c2VyYWdlbnQpOgogICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmFsbG93YW5jZSh1cmwpCiAgICAgICAgIyB0cnkgdGhlIGRlZmF1bHQgZW50cnkgbGFzdAogICAgICAgIGlmIHNlbGYuZGVmYXVsdF9lbnRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbnRyeS5hbGxvd2FuY2UodXJsKQogICAgICAgICMgYWdlbnQgbm90IGZvdW5kID09PiBhY2Nlc3MgZ3JhbnRlZAogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIGNyYXdsX2RlbGF5KHNlbGYsIHVzZXJhZ2VudCk6CiAgICAgICAgaWYgbm90IHNlbGYubXRpbWUoKToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyaWVzOgogICAgICAgICAgICBpZiBlbnRyeS5hcHBsaWVzX3RvKHVzZXJhZ2VudCk6CiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkuZGVsYXkKICAgICAgICBpZiBzZWxmLmRlZmF1bHRfZW50cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRfZW50cnkuZGVsYXkKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiByZXF1ZXN0X3JhdGUoc2VsZiwgdXNlcmFnZW50KToKICAgICAgICBpZiBub3Qgc2VsZi5tdGltZSgpOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXM6CiAgICAgICAgICAgIGlmIGVudHJ5LmFwcGxpZXNfdG8odXNlcmFnZW50KToKICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5yZXFfcmF0ZQogICAgICAgIGlmIHNlbGYuZGVmYXVsdF9lbnRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbnRyeS5yZXFfcmF0ZQogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIHNpdGVfbWFwcyhzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5zaXRlbWFwczoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5zaXRlbWFwcwoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIGVudHJpZXMgPSBzZWxmLmVudHJpZXMKICAgICAgICBpZiBzZWxmLmRlZmF1bHRfZW50cnkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGVudHJpZXMgPSBlbnRyaWVzICsgW3NlbGYuZGVmYXVsdF9lbnRyeV0KICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4obWFwKHN0ciwgZW50cmllcykpCgoKY2xhc3MgUnVsZUxpbmU6CiAgICAiIiJBIHJ1bGUgbGluZSBpcyBhIHNpbmdsZSAiQWxsb3c6IiAoYWxsb3dhbmNlPT1UcnVlKSBvciAiRGlzYWxsb3c6IgogICAgICAgKGFsbG93YW5jZT09RmFsc2UpIGZvbGxvd2VkIGJ5IGEgcGF0aC4iIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBhbGxvd2FuY2UpOgogICAgICAgIGlmIHBhdGggPT0gJycgYW5kIG5vdCBhbGxvd2FuY2U6CiAgICAgICAgICAgICMgYW4gZW1wdHkgdmFsdWUgbWVhbnMgYWxsb3cgYWxsCiAgICAgICAgICAgIGFsbG93YW5jZSA9IFRydWUKICAgICAgICBwYXRoID0gdXJsbGliLnBhcnNlLnVybHVucGFyc2UodXJsbGliLnBhcnNlLnVybHBhcnNlKHBhdGgpKQogICAgICAgIHNlbGYucGF0aCA9IHVybGxpYi5wYXJzZS5xdW90ZShwYXRoKQogICAgICAgIHNlbGYuYWxsb3dhbmNlID0gYWxsb3dhbmNlCgogICAgZGVmIGFwcGxpZXNfdG8oc2VsZiwgZmlsZW5hbWUpOgogICAgICAgIHJldHVybiBzZWxmLnBhdGggPT0gIioiIG9yIGZpbGVuYW1lLnN0YXJ0c3dpdGgoc2VsZi5wYXRoKQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiAoIkFsbG93IiBpZiBzZWxmLmFsbG93YW5jZSBlbHNlICJEaXNhbGxvdyIpICsgIjogIiArIHNlbGYucGF0aAoKCmNsYXNzIEVudHJ5OgogICAgIiIiQW4gZW50cnkgaGFzIG9uZSBvciBtb3JlIHVzZXItYWdlbnRzIGFuZCB6ZXJvIG9yIG1vcmUgcnVsZWxpbmVzIiIiCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi51c2VyYWdlbnRzID0gW10KICAgICAgICBzZWxmLnJ1bGVsaW5lcyA9IFtdCiAgICAgICAgc2VsZi5kZWxheSA9IE5vbmUKICAgICAgICBzZWxmLnJlcV9yYXRlID0gTm9uZQoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldCA9IFtdCiAgICAgICAgZm9yIGFnZW50IGluIHNlbGYudXNlcmFnZW50czoKICAgICAgICAgICAgcmV0LmFwcGVuZChmIlVzZXItYWdlbnQ6IHthZ2VudH0iKQogICAgICAgIGlmIHNlbGYuZGVsYXkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldC5hcHBlbmQoZiJDcmF3bC1kZWxheToge3NlbGYuZGVsYXl9IikKICAgICAgICBpZiBzZWxmLnJlcV9yYXRlIGlzIG5vdCBOb25lOgogICAgICAgICAgICByYXRlID0gc2VsZi5yZXFfcmF0ZQogICAgICAgICAgICByZXQuYXBwZW5kKGYiUmVxdWVzdC1yYXRlOiB7cmF0ZS5yZXF1ZXN0c30ve3JhdGUuc2Vjb25kc30iKQogICAgICAgIHJldC5leHRlbmQobWFwKHN0ciwgc2VsZi5ydWxlbGluZXMpKQogICAgICAgIHJldHVybiAnXG4nLmpvaW4ocmV0KQoKICAgIGRlZiBhcHBsaWVzX3RvKHNlbGYsIHVzZXJhZ2VudCk6CiAgICAgICAgIiIiY2hlY2sgaWYgdGhpcyBlbnRyeSBhcHBsaWVzIHRvIHRoZSBzcGVjaWZpZWQgYWdlbnQiIiIKICAgICAgICAjIHNwbGl0IHRoZSBuYW1lIHRva2VuIGFuZCBtYWtlIGl0IGxvd2VyIGNhc2UKICAgICAgICB1c2VyYWdlbnQgPSB1c2VyYWdlbnQuc3BsaXQoIi8iKVswXS5sb3dlcigpCiAgICAgICAgZm9yIGFnZW50IGluIHNlbGYudXNlcmFnZW50czoKICAgICAgICAgICAgaWYgYWdlbnQgPT0gJyonOgogICAgICAgICAgICAgICAgIyB3ZSBoYXZlIHRoZSBjYXRjaC1hbGwgYWdlbnQKICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgIGFnZW50ID0gYWdlbnQubG93ZXIoKQogICAgICAgICAgICBpZiBhZ2VudCBpbiB1c2VyYWdlbnQ6CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBhbGxvd2FuY2Uoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICIiIlByZWNvbmRpdGlvbnM6CiAgICAgICAgLSBvdXIgYWdlbnQgYXBwbGllcyB0byB0aGlzIGVudHJ5CiAgICAgICAgLSBmaWxlbmFtZSBpcyBVUkwgZGVjb2RlZCIiIgogICAgICAgIGZvciBsaW5lIGluIHNlbGYucnVsZWxpbmVzOgogICAgICAgICAgICBpZiBsaW5lLmFwcGxpZXNfdG8oZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUuYWxsb3dhbmNlCiAgICAgICAgcmV0dXJuIFRydWUKUEsDBBQAAAAAAAMgo1aFmqGekQIAAJECAAATAAAAd3NnaXJlZi9fX2luaXRfXy5weSIiIndzZ2lyZWYgLS0gYSBXU0dJIChQRVAgMzMzMykgUmVmZXJlbmNlIExpYnJhcnkKCkN1cnJlbnQgQ29udGVudHM6CgoqIHV0aWwgLS0gTWlzY2VsbGFuZW91cyB1c2VmdWwgZnVuY3Rpb25zIGFuZCB3cmFwcGVycwoKKiBoZWFkZXJzIC0tIE1hbmFnZSByZXNwb25zZSBoZWFkZXJzCgoqIGhhbmRsZXJzIC0tIGJhc2UgY2xhc3NlcyBmb3Igc2VydmVyL2dhdGV3YXkgaW1wbGVtZW50YXRpb25zCgoqIHNpbXBsZV9zZXJ2ZXIgLS0gYSBzaW1wbGUgQmFzZUhUVFBTZXJ2ZXIgdGhhdCBzdXBwb3J0cyBXU0dJCgoqIHZhbGlkYXRlIC0tIHZhbGlkYXRpb24gd3JhcHBlciB0aGF0IHNpdHMgYmV0d2VlbiBhbiBhcHAgYW5kIGEgc2VydmVyCiAgdG8gZGV0ZWN0IGVycm9ycyBpbiBlaXRoZXIKCiogdHlwZXMgLS0gY29sbGVjdGlvbiBvZiBXU0dJLXJlbGF0ZWQgdHlwZXMgZm9yIHN0YXRpYyB0eXBlIGNoZWNraW5nCgpUby1EbzoKCiogY2dpX2dhdGV3YXkgLS0gUnVuIFdTR0kgYXBwcyB1bmRlciBDR0kgKHBlbmRpbmcgYSBkZXBsb3ltZW50IHN0YW5kYXJkKQoKKiBjZ2lfd3JhcHBlciAtLSBSdW4gQ0dJIGFwcHMgdW5kZXIgV1NHSQoKKiByb3V0ZXIgLS0gYSBzaW1wbGUgbWlkZGxld2FyZSBjb21wb25lbnQgdGhhdCBoYW5kbGVzIFVSTCB0cmF2ZXJzYWwKIiIiClBLAwQUAAAAAAADIKNWsSgS3i5UAAAuVAAAEwAAAHdzZ2lyZWYvaGFuZGxlcnMucHkiIiJCYXNlIGNsYXNzZXMgZm9yIHNlcnZlci9nYXRld2F5IGltcGxlbWVudGF0aW9ucyIiIgoKZnJvbSAudXRpbCBpbXBvcnQgRmlsZVdyYXBwZXIsIGd1ZXNzX3NjaGVtZSwgaXNfaG9wX2J5X2hvcApmcm9tIC5oZWFkZXJzIGltcG9ydCBIZWFkZXJzCgppbXBvcnQgc3lzLCBvcywgdGltZQoKX19hbGxfXyA9IFsKICAgICdCYXNlSGFuZGxlcicsICdTaW1wbGVIYW5kbGVyJywgJ0Jhc2VDR0lIYW5kbGVyJywgJ0NHSUhhbmRsZXInLAogICAgJ0lJU0NHSUhhbmRsZXInLCAncmVhZF9lbnZpcm9uJwpdCgojIFdlZWtkYXkgYW5kIG1vbnRoIG5hbWVzIGZvciBIVFRQIGRhdGUvdGltZSBmb3JtYXR0aW5nOyBhbHdheXMgRW5nbGlzaCEKX3dlZWtkYXluYW1lID0gWyJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iXQpfbW9udGhuYW1lID0gW05vbmUsICMgRHVtbXkgc28gd2UgY2FuIHVzZSAxLWJhc2VkIG1vbnRoIG51bWJlcnMKICAgICAgICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyJdCgpkZWYgZm9ybWF0X2RhdGVfdGltZSh0aW1lc3RhbXApOgogICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgd2QsIHksIHogPSB0aW1lLmdtdGltZSh0aW1lc3RhbXApCiAgICByZXR1cm4gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlICgKICAgICAgICBfd2Vla2RheW5hbWVbd2RdLCBkYXksIF9tb250aG5hbWVbbW9udGhdLCB5ZWFyLCBoaCwgbW0sIHNzCiAgICApCgpfaXNfcmVxdWVzdCA9IHsKICAgICdTQ1JJUFRfTkFNRScsICdQQVRIX0lORk8nLCAnUVVFUllfU1RSSU5HJywgJ1JFUVVFU1RfTUVUSE9EJywgJ0FVVEhfVFlQRScsCiAgICAnQ09OVEVOVF9UWVBFJywgJ0NPTlRFTlRfTEVOR1RIJywgJ0hUVFBTJywgJ1JFTU9URV9VU0VSJywgJ1JFTU9URV9JREVOVCcsCn0uX19jb250YWluc19fCgpkZWYgX25lZWRzX3RyYW5zY29kZShrKToKICAgIHJldHVybiBfaXNfcmVxdWVzdChrKSBvciBrLnN0YXJ0c3dpdGgoJ0hUVFBfJykgb3Igay5zdGFydHN3aXRoKCdTU0xfJykgXAogICAgICAgIG9yIChrLnN0YXJ0c3dpdGgoJ1JFRElSRUNUXycpIGFuZCBfbmVlZHNfdHJhbnNjb2RlKGtbOTpdKSkKCmRlZiByZWFkX2Vudmlyb24oKToKICAgICIiIlJlYWQgZW52aXJvbm1lbnQsIGZpeGluZyBIVFRQIHZhcmlhYmxlcyIiIgogICAgZW5jID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCiAgICBlc2MgPSAnc3Vycm9nYXRlZXNjYXBlJwogICAgdHJ5OgogICAgICAgICcnLmVuY29kZSgndXRmLTgnLCBlc2MpCiAgICBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgICAgZXNjID0gJ3JlcGxhY2UnCiAgICBlbnZpcm9uID0ge30KCiAgICAjIFRha2UgdGhlIGJhc2ljIGVudmlyb25tZW50IGZyb20gbmF0aXZlLXVuaWNvZGUgb3MuZW52aXJvbi4gQXR0ZW1wdCB0bwogICAgIyBmaXggdXAgdGhlIHZhcmlhYmxlcyB0aGF0IGNvbWUgZnJvbSB0aGUgSFRUUCByZXF1ZXN0IHRvIGNvbXBlbnNhdGUgZm9yCiAgICAjIHRoZSBieXRlcy0+dW5pY29kZSBkZWNvZGluZyBzdGVwIHRoYXQgd2lsbCBhbHJlYWR5IGhhdmUgdGFrZW4gcGxhY2UuCiAgICBmb3IgaywgdiBpbiBvcy5lbnZpcm9uLml0ZW1zKCk6CiAgICAgICAgaWYgX25lZWRzX3RyYW5zY29kZShrKToKCiAgICAgICAgICAgICMgT24gd2luMzIsIHRoZSBvcy5lbnZpcm9uIGlzIG5hdGl2ZWx5IFVuaWNvZGUuIERpZmZlcmVudCBzZXJ2ZXJzCiAgICAgICAgICAgICMgZGVjb2RlIHRoZSByZXF1ZXN0IGJ5dGVzIHVzaW5nIGRpZmZlcmVudCBlbmNvZGluZ3MuCiAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgICAgc29mdHdhcmUgPSBvcy5lbnZpcm9uLmdldCgnU0VSVkVSX1NPRlRXQVJFJywgJycpLmxvd2VyKCkKCiAgICAgICAgICAgICAgICAjIE9uIElJUywgdGhlIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGRlY29kZWQgYXMgVVRGLTggYXMgbG9uZwogICAgICAgICAgICAgICAgIyBhcyB0aGUgaW5wdXQgaXMgYSB2YWxpZCBVVEYtOCBzZXF1ZW5jZS4gT3RoZXJ3aXNlIGl0IGlzCiAgICAgICAgICAgICAgICAjIGRlY29kZWQgdXNpbmcgdGhlIHN5c3RlbSBjb2RlIHBhZ2UgKG1iY3MpLCB3aXRoIG5vIHdheSB0bwogICAgICAgICAgICAgICAgIyBkZXRlY3QgdGhpcyBoYXMgaGFwcGVuZWQuIEJlY2F1c2UgVVRGLTggaXMgdGhlIG1vcmUgbGlrZWx5CiAgICAgICAgICAgICAgICAjIGVuY29kaW5nLCBhbmQgbWJjcyBpcyBpbmhlcmVudGx5IHVucmVsaWFibGUgKGFuIG1iY3Mgc3RyaW5nCiAgICAgICAgICAgICAgICAjIHRoYXQgaGFwcGVucyB0byBiZSB2YWxpZCBVVEYtOCB3aWxsIG5vdCBiZSBkZWNvZGVkIGFzIG1iY3MpCiAgICAgICAgICAgICAgICAjIGFsd2F5cyByZWNyZWF0ZSB0aGUgb3JpZ2luYWwgYnl0ZXMgYXMgVVRGLTguCiAgICAgICAgICAgICAgICBpZiBzb2Z0d2FyZS5zdGFydHN3aXRoKCdtaWNyb3NvZnQtaWlzLycpOgogICAgICAgICAgICAgICAgICAgIHYgPSB2LmVuY29kZSgndXRmLTgnKS5kZWNvZGUoJ2lzby04ODU5LTEnKQoKICAgICAgICAgICAgICAgICMgQXBhY2hlIG1vZF9jZ2kgd3JpdGVzIGJ5dGVzLWFzLXVuaWNvZGUgKGFzIGlmIElTTy04ODU5LTEpIGRpcmVjdAogICAgICAgICAgICAgICAgIyB0byB0aGUgVW5pY29kZSBlbnZpcm9uLiBObyBtb2RpZmljYXRpb24gbmVlZGVkLgogICAgICAgICAgICAgICAgZWxpZiBzb2Z0d2FyZS5zdGFydHN3aXRoKCdhcGFjaGUvJyk6CiAgICAgICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICAgICAgICAgICMgUHl0aG9uIDMncyBodHRwLnNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIgZGVjb2RlcwogICAgICAgICAgICAgICAgIyB1c2luZyB0aGUgdXJsbGliLnVucXVvdGUgZGVmYXVsdCBvZiBVVEYtOCwgYW1vbmdzdCBvdGhlcgogICAgICAgICAgICAgICAgIyBpc3N1ZXMuCiAgICAgICAgICAgICAgICBlbGlmICgKICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZS5zdGFydHN3aXRoKCdzaW1wbGVodHRwLycpCiAgICAgICAgICAgICAgICAgICAgYW5kICdweXRob24vMycgaW4gc29mdHdhcmUKICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgdiA9IHYuZW5jb2RlKCd1dGYtOCcpLmRlY29kZSgnaXNvLTg4NTktMScpCgogICAgICAgICAgICAgICAgIyBGb3Igb3RoZXIgc2VydmVycywgZ3Vlc3MgdGhhdCB0aGV5IGhhdmUgd3JpdHRlbiBieXRlcyB0bwogICAgICAgICAgICAgICAgIyB0aGUgZW52aXJvbiB1c2luZyBzdGRpbyBieXRlLW9yaWVudGVkIGludGVyZmFjZXMsIGVuZGluZyB1cAogICAgICAgICAgICAgICAgIyB3aXRoIHRoZSBzeXN0ZW0gY29kZSBwYWdlLgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB2ID0gdi5lbmNvZGUoZW5jLCAncmVwbGFjZScpLmRlY29kZSgnaXNvLTg4NTktMScpCgogICAgICAgICAgICAjIFJlY292ZXIgYnl0ZXMgZnJvbSB1bmljb2RlIGVudmlyb24sIHVzaW5nIHN1cnJvZ2F0ZSBlc2NhcGVzCiAgICAgICAgICAgICMgd2hlcmUgYXZhaWxhYmxlIChQeXRob24gMy4xKykuCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB2ID0gdi5lbmNvZGUoZW5jLCBlc2MpLmRlY29kZSgnaXNvLTg4NTktMScpCgogICAgICAgIGVudmlyb25ba10gPSB2CiAgICByZXR1cm4gZW52aXJvbgoKCmNsYXNzIEJhc2VIYW5kbGVyOgogICAgIiIiTWFuYWdlIHRoZSBpbnZvY2F0aW9uIG9mIGEgV1NHSSBhcHBsaWNhdGlvbiIiIgoKICAgICMgQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzOyBjYW4gb3ZlcnJpZGUgcGVyLXN1YmNsYXNzIG9yIHBlci1pbnN0YW5jZQogICAgd3NnaV92ZXJzaW9uID0gKDEsMCkKICAgIHdzZ2lfbXVsdGl0aHJlYWQgPSBUcnVlCiAgICB3c2dpX211bHRpcHJvY2VzcyA9IFRydWUKICAgIHdzZ2lfcnVuX29uY2UgPSBGYWxzZQoKICAgIG9yaWdpbl9zZXJ2ZXIgPSBUcnVlICAgICMgV2UgYXJlIHRyYW5zbWl0dGluZyBkaXJlY3QgdG8gY2xpZW50CiAgICBodHRwX3ZlcnNpb24gID0gIjEuMCIgICAjIFZlcnNpb24gdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgcmVzcG9uc2UKICAgIHNlcnZlcl9zb2Z0d2FyZSA9IE5vbmUgICMgU3RyaW5nIG5hbWUgb2Ygc2VydmVyIHNvZnR3YXJlLCBpZiBhbnkKCiAgICAjIG9zX2Vudmlyb24gaXMgdXNlZCB0byBzdXBwbHkgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBPUyBlbnZpcm9ubWVudDoKICAgICMgYnkgZGVmYXVsdCBpdCdzIGEgY29weSBvZiAnb3MuZW52aXJvbicgYXMgb2YgaW1wb3J0IHRpbWUsIGJ1dCB5b3UgY2FuCiAgICAjIG92ZXJyaWRlIHRoaXMgaW4gZS5nLiB5b3VyIF9faW5pdF9fIG1ldGhvZC4KICAgIG9zX2Vudmlyb249IHJlYWRfZW52aXJvbigpCgogICAgIyBDb2xsYWJvcmF0b3IgY2xhc3NlcwogICAgd3NnaV9maWxlX3dyYXBwZXIgPSBGaWxlV3JhcHBlciAgICAgIyBzZXQgdG8gTm9uZSB0byBkaXNhYmxlCiAgICBoZWFkZXJzX2NsYXNzID0gSGVhZGVycyAgICAgICAgICAgICAjIG11c3QgYmUgYSBIZWFkZXJzLWxpa2UgY2xhc3MKCiAgICAjIEVycm9yIGhhbmRsaW5nIChhbHNvIHBlci1zdWJjbGFzcyBvciBwZXItaW5zdGFuY2UpCiAgICB0cmFjZWJhY2tfbGltaXQgPSBOb25lICAjIFByaW50IGVudGlyZSB0cmFjZWJhY2sgdG8gc2VsZi5nZXRfc3RkZXJyKCkKICAgIGVycm9yX3N0YXR1cyA9ICI1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yIgogICAgZXJyb3JfaGVhZGVycyA9IFsoJ0NvbnRlbnQtVHlwZScsJ3RleHQvcGxhaW4nKV0KICAgIGVycm9yX2JvZHkgPSBiIkEgc2VydmVyIGVycm9yIG9jY3VycmVkLiAgUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuIgoKICAgICMgU3RhdGUgdmFyaWFibGVzIChkb24ndCBtZXNzIHdpdGggdGhlc2UpCiAgICBzdGF0dXMgPSByZXN1bHQgPSBOb25lCiAgICBoZWFkZXJzX3NlbnQgPSBGYWxzZQogICAgaGVhZGVycyA9IE5vbmUKICAgIGJ5dGVzX3NlbnQgPSAwCgogICAgZGVmIHJ1bihzZWxmLCBhcHBsaWNhdGlvbik6CiAgICAgICAgIiIiSW52b2tlIHRoZSBhcHBsaWNhdGlvbiIiIgogICAgICAgICMgTm90ZSB0byBzZWxmOiBkb24ndCBtb3ZlIHRoZSBjbG9zZSgpISAgQXN5bmNocm9ub3VzIHNlcnZlcnMgc2hvdWxkbid0CiAgICAgICAgIyBjYWxsIGNsb3NlKCkgZnJvbSBmaW5pc2hfcmVzcG9uc2UoKSwgc28gaWYgeW91IGNsb3NlKCkgYW55d2hlcmUgYnV0CiAgICAgICAgIyB0aGUgZG91YmxlLWVycm9yIGJyYW5jaCBoZXJlLCB5b3UnbGwgYnJlYWsgYXN5bmNocm9ub3VzIHNlcnZlcnMgYnkKICAgICAgICAjIHByZW1hdHVyZWx5IGNsb3NpbmcuICBBc3luYyBzZXJ2ZXJzIG11c3QgcmV0dXJuIGZyb20gJ3J1bigpJyB3aXRob3V0CiAgICAgICAgIyBjbG9zaW5nIGlmIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIG91dHB1dCB0byBpdGVyYXRlIG92ZXIuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnNldHVwX2Vudmlyb24oKQogICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGFwcGxpY2F0aW9uKHNlbGYuZW52aXJvbiwgc2VsZi5zdGFydF9yZXNwb25zZSkKICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVzcG9uc2UoKQogICAgICAgIGV4Y2VwdCAoQ29ubmVjdGlvbkFib3J0ZWRFcnJvciwgQnJva2VuUGlwZUVycm9yLCBDb25uZWN0aW9uUmVzZXRFcnJvcik6CiAgICAgICAgICAgICMgV2UgZXhwZWN0IHRoZSBjbGllbnQgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gYWJydXB0bHkgZnJvbSB0aW1lCiAgICAgICAgICAgICMgdG8gdGltZS4KICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcigpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICMgSWYgd2UgZ2V0IGFuIGVycm9yIGhhbmRsaW5nIGFuIGVycm9yLCBqdXN0IGdpdmUgdXAgYWxyZWFkeSEKICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgcmFpc2UgICAjIC4uLmFuZCBsZXQgdGhlIGFjdHVhbCBzZXJ2ZXIgZmlndXJlIGl0IG91dC4KCgogICAgZGVmIHNldHVwX2Vudmlyb24oc2VsZik6CiAgICAgICAgIiIiU2V0IHVwIHRoZSBlbnZpcm9ubWVudCBmb3Igb25lIHJlcXVlc3QiIiIKCiAgICAgICAgZW52ID0gc2VsZi5lbnZpcm9uID0gc2VsZi5vc19lbnZpcm9uLmNvcHkoKQogICAgICAgIHNlbGYuYWRkX2NnaV92YXJzKCkKCiAgICAgICAgZW52Wyd3c2dpLmlucHV0J10gICAgICAgID0gc2VsZi5nZXRfc3RkaW4oKQogICAgICAgIGVudlsnd3NnaS5lcnJvcnMnXSAgICAgICA9IHNlbGYuZ2V0X3N0ZGVycigpCiAgICAgICAgZW52Wyd3c2dpLnZlcnNpb24nXSAgICAgID0gc2VsZi53c2dpX3ZlcnNpb24KICAgICAgICBlbnZbJ3dzZ2kucnVuX29uY2UnXSAgICAgPSBzZWxmLndzZ2lfcnVuX29uY2UKICAgICAgICBlbnZbJ3dzZ2kudXJsX3NjaGVtZSddICAgPSBzZWxmLmdldF9zY2hlbWUoKQogICAgICAgIGVudlsnd3NnaS5tdWx0aXRocmVhZCddICA9IHNlbGYud3NnaV9tdWx0aXRocmVhZAogICAgICAgIGVudlsnd3NnaS5tdWx0aXByb2Nlc3MnXSA9IHNlbGYud3NnaV9tdWx0aXByb2Nlc3MKCiAgICAgICAgaWYgc2VsZi53c2dpX2ZpbGVfd3JhcHBlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgZW52Wyd3c2dpLmZpbGVfd3JhcHBlciddID0gc2VsZi53c2dpX2ZpbGVfd3JhcHBlcgoKICAgICAgICBpZiBzZWxmLm9yaWdpbl9zZXJ2ZXIgYW5kIHNlbGYuc2VydmVyX3NvZnR3YXJlOgogICAgICAgICAgICBlbnYuc2V0ZGVmYXVsdCgnU0VSVkVSX1NPRlRXQVJFJyxzZWxmLnNlcnZlcl9zb2Z0d2FyZSkKCgogICAgZGVmIGZpbmlzaF9yZXNwb25zZShzZWxmKToKICAgICAgICAiIiJTZW5kIGFueSBpdGVyYWJsZSBkYXRhLCB0aGVuIGNsb3NlIHNlbGYgYW5kIHRoZSBpdGVyYWJsZQoKICAgICAgICBTdWJjbGFzc2VzIGludGVuZGVkIGZvciB1c2UgaW4gYXN5bmNocm9ub3VzIHNlcnZlcnMgd2lsbAogICAgICAgIHdhbnQgdG8gcmVkZWZpbmUgdGhpcyBtZXRob2QsIHN1Y2ggdGhhdCBpdCBzZXRzIHVwIGNhbGxiYWNrcwogICAgICAgIGluIHRoZSBldmVudCBsb29wIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZGF0YSwgYW5kIHRvIGNhbGwKICAgICAgICAnc2VsZi5jbG9zZSgpJyBvbmNlIHRoZSByZXNwb25zZSBpcyBmaW5pc2hlZC4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlc3VsdF9pc19maWxlKCkgb3Igbm90IHNlbGYuc2VuZGZpbGUoKToKICAgICAgICAgICAgICAgIGZvciBkYXRhIGluIHNlbGYucmVzdWx0OgogICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoZGF0YSkKICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoX2NvbnRlbnQoKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIyBDYWxsIGNsb3NlKCkgb24gdGhlIGl0ZXJhYmxlIHJldHVybmVkIGJ5IHRoZSBXU0dJIGFwcGxpY2F0aW9uCiAgICAgICAgICAgICMgaW4gY2FzZSBvZiBhbiBleGNlcHRpb24uCiAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5yZXN1bHQsICdjbG9zZScpOgogICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQuY2xvc2UoKQogICAgICAgICAgICByYWlzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgV2Ugb25seSBjYWxsIGNsb3NlKCkgd2hlbiBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBiZWNhdXNlIGl0CiAgICAgICAgICAgICMgd2lsbCBzZXQgc3RhdHVzLCByZXN1bHQsIGhlYWRlcnMsIGFuZCBlbnZpcm9uIGZpZWxkcyB0byBOb25lLgogICAgICAgICAgICAjIFNlZSBicG8tMjkxODMgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAgICAgc2VsZi5jbG9zZSgpCgoKICAgIGRlZiBnZXRfc2NoZW1lKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgVVJMIHNjaGVtZSBiZWluZyB1c2VkIiIiCiAgICAgICAgcmV0dXJuIGd1ZXNzX3NjaGVtZShzZWxmLmVudmlyb24pCgoKICAgIGRlZiBzZXRfY29udGVudF9sZW5ndGgoc2VsZik6CiAgICAgICAgIiIiQ29tcHV0ZSBDb250ZW50LUxlbmd0aCBvciBzd2l0Y2ggdG8gY2h1bmtlZCBlbmNvZGluZyBpZiBwb3NzaWJsZSIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgYmxvY2tzID0gbGVuKHNlbGYucmVzdWx0KQogICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLEF0dHJpYnV0ZUVycm9yLE5vdEltcGxlbWVudGVkRXJyb3IpOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgYmxvY2tzPT0xOgogICAgICAgICAgICAgICAgc2VsZi5oZWFkZXJzWydDb250ZW50LUxlbmd0aCddID0gc3RyKHNlbGYuYnl0ZXNfc2VudCkKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICMgWFhYIFRyeSBmb3IgY2h1bmtlZCBlbmNvZGluZyBpZiBvcmlnaW4gc2VydmVyIGFuZCBjbGllbnQgaXMgMS4xCgoKICAgIGRlZiBjbGVhbnVwX2hlYWRlcnMoc2VsZik6CiAgICAgICAgIiIiTWFrZSBhbnkgbmVjZXNzYXJ5IGhlYWRlciBjaGFuZ2VzIG9yIGRlZmF1bHRzCgogICAgICAgIFN1YmNsYXNzZXMgY2FuIGV4dGVuZCB0aGlzIHRvIGFkZCBvdGhlciBkZWZhdWx0cy4KICAgICAgICAiIiIKICAgICAgICBpZiAnQ29udGVudC1MZW5ndGgnIG5vdCBpbiBzZWxmLmhlYWRlcnM6CiAgICAgICAgICAgIHNlbGYuc2V0X2NvbnRlbnRfbGVuZ3RoKCkKCiAgICBkZWYgc3RhcnRfcmVzcG9uc2Uoc2VsZiwgc3RhdHVzLCBoZWFkZXJzLGV4Y19pbmZvPU5vbmUpOgogICAgICAgICIiIidzdGFydF9yZXNwb25zZSgpJyBjYWxsYWJsZSBhcyBzcGVjaWZpZWQgYnkgUEVQIDMzMzMiIiIKCiAgICAgICAgaWYgZXhjX2luZm86CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIHNlbGYuaGVhZGVyc19zZW50OgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICBleGNfaW5mbyA9IE5vbmUgICAgICAgICMgYXZvaWQgZGFuZ2xpbmcgY2lyY3VsYXIgcmVmCiAgICAgICAgZWxpZiBzZWxmLmhlYWRlcnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJIZWFkZXJzIGFscmVhZHkgc2V0ISIpCgogICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCiAgICAgICAgc2VsZi5oZWFkZXJzID0gc2VsZi5oZWFkZXJzX2NsYXNzKGhlYWRlcnMpCiAgICAgICAgc3RhdHVzID0gc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZShzdGF0dXMsICJTdGF0dXMiKQogICAgICAgIGFzc2VydCBsZW4oc3RhdHVzKT49NCwiU3RhdHVzIG11c3QgYmUgYXQgbGVhc3QgNCBjaGFyYWN0ZXJzIgogICAgICAgIGFzc2VydCBzdGF0dXNbOjNdLmlzZGlnaXQoKSwgIlN0YXR1cyBtZXNzYWdlIG11c3QgYmVnaW4gdy8zLWRpZ2l0IGNvZGUiCiAgICAgICAgYXNzZXJ0IHN0YXR1c1szXT09IiAiLCAiU3RhdHVzIG1lc3NhZ2UgbXVzdCBoYXZlIGEgc3BhY2UgYWZ0ZXIgY29kZSIKCiAgICAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAgICBmb3IgbmFtZSwgdmFsIGluIGhlYWRlcnM6CiAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZShuYW1lLCAiSGVhZGVyIG5hbWUiKQogICAgICAgICAgICAgICAgdmFsID0gc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZSh2YWwsICJIZWFkZXIgdmFsdWUiKQogICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBpc19ob3BfYnlfaG9wKG5hbWUpLFwKICAgICAgICAgICAgICAgICAgICAgICBmIkhvcC1ieS1ob3AgaGVhZGVyLCAne25hbWV9OiB7dmFsfScsIG5vdCBhbGxvd2VkIgoKICAgICAgICByZXR1cm4gc2VsZi53cml0ZQoKICAgIGRlZiBfY29udmVydF9zdHJpbmdfdHlwZShzZWxmLCB2YWx1ZSwgdGl0bGUpOgogICAgICAgICIiIkNvbnZlcnQvY2hlY2sgdmFsdWUgdHlwZS4iIiIKICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyBzdHI6CiAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAiezB9IG11c3QgYmUgb2YgdHlwZSBzdHIgKGdvdCB7MX0pIi5mb3JtYXQodGl0bGUsIHJlcHIodmFsdWUpKQogICAgICAgICkKCiAgICBkZWYgc2VuZF9wcmVhbWJsZShzZWxmKToKICAgICAgICAiIiJUcmFuc21pdCB2ZXJzaW9uL3N0YXR1cy9kYXRlL3NlcnZlciwgdmlhIHNlbGYuX3dyaXRlKCkiIiIKICAgICAgICBpZiBzZWxmLm9yaWdpbl9zZXJ2ZXI6CiAgICAgICAgICAgIGlmIHNlbGYuY2xpZW50X2lzX21vZGVybigpOgogICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoKCdIVFRQLyVzICVzXHJcbicgJSAoc2VsZi5odHRwX3ZlcnNpb24sc2VsZi5zdGF0dXMpKS5lbmNvZGUoJ2lzby04ODU5LTEnKSkKICAgICAgICAgICAgICAgIGlmICdEYXRlJyBub3QgaW4gc2VsZi5oZWFkZXJzOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlKAogICAgICAgICAgICAgICAgICAgICAgICAoJ0RhdGU6ICVzXHJcbicgJSBmb3JtYXRfZGF0ZV90aW1lKHRpbWUudGltZSgpKSkuZW5jb2RlKCdpc28tODg1OS0xJykKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBpZiBzZWxmLnNlcnZlcl9zb2Z0d2FyZSBhbmQgJ1NlcnZlcicgbm90IGluIHNlbGYuaGVhZGVyczoKICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZSgoJ1NlcnZlcjogJXNcclxuJyAlIHNlbGYuc2VydmVyX3NvZnR3YXJlKS5lbmNvZGUoJ2lzby04ODU5LTEnKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl93cml0ZSgoJ1N0YXR1czogJXNcclxuJyAlIHNlbGYuc3RhdHVzKS5lbmNvZGUoJ2lzby04ODU5LTEnKSkKCiAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgIiIiJ3dyaXRlKCknIGNhbGxhYmxlIGFzIHNwZWNpZmllZCBieSBQRVAgMzMzMyIiIgoKICAgICAgICBhc3NlcnQgdHlwZShkYXRhKSBpcyBieXRlcywgXAogICAgICAgICAgICAid3JpdGUoKSBhcmd1bWVudCBtdXN0IGJlIGEgYnl0ZXMgaW5zdGFuY2UiCgogICAgICAgIGlmIG5vdCBzZWxmLnN0YXR1czoKICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIndyaXRlKCkgYmVmb3JlIHN0YXJ0X3Jlc3BvbnNlKCkiKQoKICAgICAgICBlbGlmIG5vdCBzZWxmLmhlYWRlcnNfc2VudDoKICAgICAgICAgICAgIyBCZWZvcmUgdGhlIGZpcnN0IG91dHB1dCwgc2VuZCB0aGUgc3RvcmVkIGhlYWRlcnMKICAgICAgICAgICAgc2VsZi5ieXRlc19zZW50ID0gbGVuKGRhdGEpICAgICMgbWFrZSBzdXJlIHdlIGtub3cgY29udGVudC1sZW5ndGgKICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcnMoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuYnl0ZXNfc2VudCArPSBsZW4oZGF0YSkKCiAgICAgICAgIyBYWFggY2hlY2sgQ29udGVudC1MZW5ndGggYW5kIHRydW5jYXRlIGlmIHRvbyBtYW55IGJ5dGVzIHdyaXR0ZW4/CiAgICAgICAgc2VsZi5fd3JpdGUoZGF0YSkKICAgICAgICBzZWxmLl9mbHVzaCgpCgoKICAgIGRlZiBzZW5kZmlsZShzZWxmKToKICAgICAgICAiIiJQbGF0Zm9ybS1zcGVjaWZpYyBmaWxlIHRyYW5zbWlzc2lvbgoKICAgICAgICBPdmVycmlkZSB0aGlzIG1ldGhvZCBpbiBzdWJjbGFzc2VzIHRvIHN1cHBvcnQgcGxhdGZvcm0tc3BlY2lmaWMKICAgICAgICBmaWxlIHRyYW5zbWlzc2lvbi4gIEl0IGlzIG9ubHkgY2FsbGVkIGlmIHRoZSBhcHBsaWNhdGlvbidzCiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlICgnc2VsZi5yZXN1bHQnKSBpcyBhbiBpbnN0YW5jZSBvZgogICAgICAgICdzZWxmLndzZ2lfZmlsZV93cmFwcGVyJy4KCiAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIHRydWUgdmFsdWUgaWYgaXQgd2FzIGFibGUgdG8gYWN0dWFsbHkKICAgICAgICB0cmFuc21pdCB0aGUgd3JhcHBlZCBmaWxlLWxpa2Ugb2JqZWN0IHVzaW5nIGEgcGxhdGZvcm0tc3BlY2lmaWMKICAgICAgICBhcHByb2FjaC4gIEl0IHNob3VsZCByZXR1cm4gYSBmYWxzZSB2YWx1ZSBpZiBub3JtYWwgaXRlcmF0aW9uCiAgICAgICAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gIEFuIGV4Y2VwdGlvbiBjYW4gYmUgcmFpc2VkIHRvIGluZGljYXRlCiAgICAgICAgdGhhdCB0cmFuc21pc3Npb24gd2FzIGF0dGVtcHRlZCwgYnV0IGZhaWxlZC4KCiAgICAgICAgTk9URTogdGhpcyBtZXRob2Qgc2hvdWxkIGNhbGwgJ3NlbGYuc2VuZF9oZWFkZXJzKCknIGlmCiAgICAgICAgJ3NlbGYuaGVhZGVyc19zZW50JyBpcyBmYWxzZSBhbmQgaXQgaXMgZ29pbmcgdG8gYXR0ZW1wdCBkaXJlY3QKICAgICAgICB0cmFuc21pc3Npb24gb2YgdGhlIGZpbGUuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIEZhbHNlICAgIyBObyBwbGF0Zm9ybS1zcGVjaWZpYyB0cmFuc21pc3Npb24gYnkgZGVmYXVsdAoKCiAgICBkZWYgZmluaXNoX2NvbnRlbnQoc2VsZik6CiAgICAgICAgIiIiRW5zdXJlIGhlYWRlcnMgYW5kIGNvbnRlbnQgaGF2ZSBib3RoIGJlZW4gc2VudCIiIgogICAgICAgIGlmIG5vdCBzZWxmLmhlYWRlcnNfc2VudDoKICAgICAgICAgICAgIyBPbmx5IHplcm8gQ29udGVudC1MZW5ndGggaWYgbm90IHNldCBieSB0aGUgYXBwbGljYXRpb24gKHNvCiAgICAgICAgICAgICMgdGhhdCBIRUFEIHJlcXVlc3RzIGNhbiBiZSBzYXRpc2ZpZWQgcHJvcGVybHksIHNlZSAjMzgzOSkKICAgICAgICAgICAgc2VsZi5oZWFkZXJzLnNldGRlZmF1bHQoJ0NvbnRlbnQtTGVuZ3RoJywgIjAiKQogICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVycygpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGFzcyAjIFhYWCBjaGVjayBpZiBjb250ZW50LWxlbmd0aCB3YXMgdG9vIHNob3J0PwoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAiIiJDbG9zZSB0aGUgaXRlcmFibGUgKGlmIG5lZWRlZCkgYW5kIHJlc2V0IGFsbCBpbnN0YW5jZSB2YXJzCgogICAgICAgIFN1YmNsYXNzZXMgbWF5IHdhbnQgdG8gYWxzbyBkcm9wIHRoZSBjbGllbnQgY29ubmVjdGlvbi4KICAgICAgICAiIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5yZXN1bHQsJ2Nsb3NlJyk6CiAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdC5jbG9zZSgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBzZWxmLmhlYWRlcnMgPSBzZWxmLnN0YXR1cyA9IHNlbGYuZW52aXJvbiA9IE5vbmUKICAgICAgICAgICAgc2VsZi5ieXRlc19zZW50ID0gMDsgc2VsZi5oZWFkZXJzX3NlbnQgPSBGYWxzZQoKCiAgICBkZWYgc2VuZF9oZWFkZXJzKHNlbGYpOgogICAgICAgICIiIlRyYW5zbWl0IGhlYWRlcnMgdG8gdGhlIGNsaWVudCwgdmlhIHNlbGYuX3dyaXRlKCkiIiIKICAgICAgICBzZWxmLmNsZWFudXBfaGVhZGVycygpCiAgICAgICAgc2VsZi5oZWFkZXJzX3NlbnQgPSBUcnVlCiAgICAgICAgaWYgbm90IHNlbGYub3JpZ2luX3NlcnZlciBvciBzZWxmLmNsaWVudF9pc19tb2Rlcm4oKToKICAgICAgICAgICAgc2VsZi5zZW5kX3ByZWFtYmxlKCkKICAgICAgICAgICAgc2VsZi5fd3JpdGUoYnl0ZXMoc2VsZi5oZWFkZXJzKSkKCgogICAgZGVmIHJlc3VsdF9pc19maWxlKHNlbGYpOgogICAgICAgICIiIlRydWUgaWYgJ3NlbGYucmVzdWx0JyBpcyBhbiBpbnN0YW5jZSBvZiAnc2VsZi53c2dpX2ZpbGVfd3JhcHBlciciIiIKICAgICAgICB3cmFwcGVyID0gc2VsZi53c2dpX2ZpbGVfd3JhcHBlcgogICAgICAgIHJldHVybiB3cmFwcGVyIGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKHNlbGYucmVzdWx0LHdyYXBwZXIpCgoKICAgIGRlZiBjbGllbnRfaXNfbW9kZXJuKHNlbGYpOgogICAgICAgICIiIlRydWUgaWYgY2xpZW50IGNhbiBhY2NlcHQgc3RhdHVzIGFuZCBoZWFkZXJzIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZW52aXJvblsnU0VSVkVSX1BST1RPQ09MJ10udXBwZXIoKSAhPSAnSFRUUC8wLjknCgoKICAgIGRlZiBsb2dfZXhjZXB0aW9uKHNlbGYsZXhjX2luZm8pOgogICAgICAgICIiIkxvZyB0aGUgJ2V4Y19pbmZvJyB0dXBsZSBpbiB0aGUgc2VydmVyIGxvZwoKICAgICAgICBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0byByZXRhcmdldCB0aGUgb3V0cHV0IG9yIGNoYW5nZSBpdHMgZm9ybWF0LgogICAgICAgICIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgZnJvbSB0cmFjZWJhY2sgaW1wb3J0IHByaW50X2V4Y2VwdGlvbgogICAgICAgICAgICBzdGRlcnIgPSBzZWxmLmdldF9zdGRlcnIoKQogICAgICAgICAgICBwcmludF9leGNlcHRpb24oCiAgICAgICAgICAgICAgICBleGNfaW5mb1swXSwgZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdLAogICAgICAgICAgICAgICAgc2VsZi50cmFjZWJhY2tfbGltaXQsIHN0ZGVycgogICAgICAgICAgICApCiAgICAgICAgICAgIHN0ZGVyci5mbHVzaCgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgZXhjX2luZm8gPSBOb25lCgogICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKICAgICAgICAiIiJMb2cgY3VycmVudCBlcnJvciwgYW5kIHNlbmQgZXJyb3Igb3V0cHV0IHRvIGNsaWVudCBpZiBwb3NzaWJsZSIiIgogICAgICAgIHNlbGYubG9nX2V4Y2VwdGlvbihzeXMuZXhjX2luZm8oKSkKICAgICAgICBpZiBub3Qgc2VsZi5oZWFkZXJzX3NlbnQ6CiAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gc2VsZi5lcnJvcl9vdXRwdXQoc2VsZi5lbnZpcm9uLCBzZWxmLnN0YXJ0X3Jlc3BvbnNlKQogICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXNwb25zZSgpCiAgICAgICAgIyBYWFggZWxzZTogYXR0ZW1wdCBhZHZhbmNlZCByZWNvdmVyeSB0ZWNobmlxdWVzIGZvciBIVE1MIG9yIHRleHQ/CgogICAgZGVmIGVycm9yX291dHB1dChzZWxmLCBlbnZpcm9uLCBzdGFydF9yZXNwb25zZSk6CiAgICAgICAgIiIiV1NHSSBtaW5pLWFwcCB0byBjcmVhdGUgZXJyb3Igb3V0cHV0CgogICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMganVzdCB1c2VzIHRoZSAnZXJyb3Jfc3RhdHVzJywgJ2Vycm9yX2hlYWRlcnMnLAogICAgICAgIGFuZCAnZXJyb3JfYm9keScgYXR0cmlidXRlcyB0byBnZW5lcmF0ZSBhbiBvdXRwdXQgcGFnZS4gIEl0IGNhbgogICAgICAgIGJlIG92ZXJyaWRkZW4gaW4gYSBzdWJjbGFzcyB0byBkeW5hbWljYWxseSBnZW5lcmF0ZSBkaWFnbm9zdGljcywKICAgICAgICBjaG9vc2UgYW4gYXBwcm9wcmlhdGUgbWVzc2FnZSBmb3IgdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UsIGV0Yy4KCiAgICAgICAgTm90ZSwgaG93ZXZlciwgdGhhdCBpdCdzIG5vdCByZWNvbW1lbmRlZCBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUgdG8KICAgICAgICBzcGl0IG91dCBkaWFnbm9zdGljcyB0byBhbnkgb2xkIHVzZXI7IGlkZWFsbHksIHlvdSBzaG91bGQgaGF2ZSB0byBkbwogICAgICAgIHNvbWV0aGluZyBzcGVjaWFsIHRvIGVuYWJsZSBkaWFnbm9zdGljIG91dHB1dCwgd2hpY2ggaXMgd2h5IHdlIGRvbid0CiAgICAgICAgaW5jbHVkZSBhbnkgaGVyZSEKICAgICAgICAiIiIKICAgICAgICBzdGFydF9yZXNwb25zZShzZWxmLmVycm9yX3N0YXR1cyxzZWxmLmVycm9yX2hlYWRlcnNbOl0sc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgcmV0dXJuIFtzZWxmLmVycm9yX2JvZHldCgoKICAgICMgUHVyZSBhYnN0cmFjdCBtZXRob2RzOyAqbXVzdCogYmUgb3ZlcnJpZGRlbiBpbiBzdWJjbGFzc2VzCgogICAgZGVmIF93cml0ZShzZWxmLGRhdGEpOgogICAgICAgICIiIk92ZXJyaWRlIGluIHN1YmNsYXNzIHRvIGJ1ZmZlciBkYXRhIGZvciBzZW5kIHRvIGNsaWVudAoKICAgICAgICBJdCdzIG9rYXkgaWYgdGhpcyBtZXRob2QgYWN0dWFsbHkgdHJhbnNtaXRzIHRoZSBkYXRhOyBCYXNlSGFuZGxlcgogICAgICAgIGp1c3Qgc2VwYXJhdGVzIHdyaXRlIGFuZCBmbHVzaCBvcGVyYXRpb25zIGZvciBncmVhdGVyIGVmZmljaWVuY3kKICAgICAgICB3aGVuIHRoZSB1bmRlcmx5aW5nIHN5c3RlbSBhY3R1YWxseSBoYXMgc3VjaCBhIGRpc3RpbmN0aW9uLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgX2ZsdXNoKHNlbGYpOgogICAgICAgICIiIk92ZXJyaWRlIGluIHN1YmNsYXNzIHRvIGZvcmNlIHNlbmRpbmcgb2YgcmVjZW50ICdfd3JpdGUoKScgY2FsbHMKCiAgICAgICAgSXQncyBva2F5IGlmIHRoaXMgbWV0aG9kIGlzIGEgbm8tb3AgKGkuZS4sIGlmICdfd3JpdGUoKScgYWN0dWFsbHkKICAgICAgICBzZW5kcyB0aGUgZGF0YS4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGdldF9zdGRpbihzZWxmKToKICAgICAgICAiIiJPdmVycmlkZSBpbiBzdWJjbGFzcyB0byByZXR1cm4gc3VpdGFibGUgJ3dzZ2kuaW5wdXQnIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBnZXRfc3RkZXJyKHNlbGYpOgogICAgICAgICIiIk92ZXJyaWRlIGluIHN1YmNsYXNzIHRvIHJldHVybiBzdWl0YWJsZSAnd3NnaS5lcnJvcnMnIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBhZGRfY2dpX3ZhcnMoc2VsZik6CiAgICAgICAgIiIiT3ZlcnJpZGUgaW4gc3ViY2xhc3MgdG8gaW5zZXJ0IENHSSB2YXJpYWJsZXMgaW4gJ3NlbGYuZW52aXJvbiciIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKY2xhc3MgU2ltcGxlSGFuZGxlcihCYXNlSGFuZGxlcik6CiAgICAiIiJIYW5kbGVyIHRoYXQncyBqdXN0IGluaXRpYWxpemVkIHdpdGggc3RyZWFtcywgZW52aXJvbm1lbnQsIGV0Yy4KCiAgICBUaGlzIGhhbmRsZXIgc3ViY2xhc3MgaXMgaW50ZW5kZWQgZm9yIHN5bmNocm9ub3VzIEhUVFAvMS4wIG9yaWdpbiBzZXJ2ZXJzLAogICAgYW5kIGhhbmRsZXMgc2VuZGluZyB0aGUgZW50aXJlIHJlc3BvbnNlIG91dHB1dCwgZ2l2ZW4gdGhlIGNvcnJlY3QgaW5wdXRzLgoKICAgIFVzYWdlOjoKCiAgICAgICAgaGFuZGxlciA9IFNpbXBsZUhhbmRsZXIoCiAgICAgICAgICAgIGlucCxvdXQsZXJyLGVudiwgbXVsdGl0aHJlYWQ9RmFsc2UsIG11bHRpcHJvY2Vzcz1UcnVlCiAgICAgICAgKQogICAgICAgIGhhbmRsZXIucnVuKGFwcCkiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZixzdGRpbixzdGRvdXQsc3RkZXJyLGVudmlyb24sCiAgICAgICAgbXVsdGl0aHJlYWQ9VHJ1ZSwgbXVsdGlwcm9jZXNzPUZhbHNlCiAgICApOgogICAgICAgIHNlbGYuc3RkaW4gPSBzdGRpbgogICAgICAgIHNlbGYuc3Rkb3V0ID0gc3Rkb3V0CiAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKICAgICAgICBzZWxmLmJhc2VfZW52ID0gZW52aXJvbgogICAgICAgIHNlbGYud3NnaV9tdWx0aXRocmVhZCA9IG11bHRpdGhyZWFkCiAgICAgICAgc2VsZi53c2dpX211bHRpcHJvY2VzcyA9IG11bHRpcHJvY2VzcwoKICAgIGRlZiBnZXRfc3RkaW4oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuc3RkaW4KCiAgICBkZWYgZ2V0X3N0ZGVycihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5zdGRlcnIKCiAgICBkZWYgYWRkX2NnaV92YXJzKHNlbGYpOgogICAgICAgIHNlbGYuZW52aXJvbi51cGRhdGUoc2VsZi5iYXNlX2VudikKCiAgICBkZWYgX3dyaXRlKHNlbGYsZGF0YSk6CiAgICAgICAgcmVzdWx0ID0gc2VsZi5zdGRvdXQud3JpdGUoZGF0YSkKICAgICAgICBpZiByZXN1bHQgaXMgTm9uZSBvciByZXN1bHQgPT0gbGVuKGRhdGEpOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgd2FybigiU2ltcGxlSGFuZGxlci5zdGRvdXQud3JpdGUoKSBzaG91bGQgbm90IGRvIHBhcnRpYWwgd3JpdGVzIiwKICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgIGRhdGEgPSBkYXRhW3Jlc3VsdDpdCiAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5zdGRvdXQud3JpdGUoZGF0YSkKCiAgICBkZWYgX2ZsdXNoKHNlbGYpOgogICAgICAgIHNlbGYuc3Rkb3V0LmZsdXNoKCkKICAgICAgICBzZWxmLl9mbHVzaCA9IHNlbGYuc3Rkb3V0LmZsdXNoCgoKY2xhc3MgQmFzZUNHSUhhbmRsZXIoU2ltcGxlSGFuZGxlcik6CgogICAgIiIiQ0dJLWxpa2Ugc3lzdGVtcyB1c2luZyBpbnB1dC9vdXRwdXQvZXJyb3Igc3RyZWFtcyBhbmQgZW52aXJvbiBtYXBwaW5nCgogICAgVXNhZ2U6OgoKICAgICAgICBoYW5kbGVyID0gQmFzZUNHSUhhbmRsZXIoaW5wLG91dCxlcnIsZW52KQogICAgICAgIGhhbmRsZXIucnVuKGFwcCkKCiAgICBUaGlzIGhhbmRsZXIgY2xhc3MgaXMgdXNlZnVsIGZvciBnYXRld2F5IHByb3RvY29scyBsaWtlIFJlYWR5RXhlYyBhbmQKICAgIEZhc3RDR0ksIHRoYXQgaGF2ZSB1c2FibGUgaW5wdXQvb3V0cHV0L2Vycm9yIHN0cmVhbXMgYW5kIGFuIGVudmlyb25tZW50CiAgICBtYXBwaW5nLiAgSXQncyBhbHNvIHRoZSBiYXNlIGNsYXNzIGZvciBDR0lIYW5kbGVyLCB3aGljaCBqdXN0IHVzZXMKICAgIHN5cy5zdGRpbiwgb3MuZW52aXJvbiwgYW5kIHNvIG9uLgoKICAgIFRoZSBjb25zdHJ1Y3RvciBhbHNvIHRha2VzIGtleXdvcmQgYXJndW1lbnRzICdtdWx0aXRocmVhZCcgYW5kCiAgICAnbXVsdGlwcm9jZXNzJyAoZGVmYXVsdGluZyB0byAnVHJ1ZScgYW5kICdGYWxzZScgcmVzcGVjdGl2ZWx5KSB0byBjb250cm9sCiAgICB0aGUgY29uZmlndXJhdGlvbiBzZW50IHRvIHRoZSBhcHBsaWNhdGlvbi4gIEl0IHNldHMgJ29yaWdpbl9zZXJ2ZXInIHRvCiAgICBGYWxzZSAodG8gZW5hYmxlIENHSS1saWtlIG91dHB1dCksIGFuZCBhc3N1bWVzIHRoYXQgJ3dzZ2kucnVuX29uY2UnIGlzCiAgICBGYWxzZS4KICAgICIiIgoKICAgIG9yaWdpbl9zZXJ2ZXIgPSBGYWxzZQoKCmNsYXNzIENHSUhhbmRsZXIoQmFzZUNHSUhhbmRsZXIpOgoKICAgICIiIkNHSS1iYXNlZCBpbnZvY2F0aW9uIHZpYSBzeXMuc3RkaW4vc3Rkb3V0L3N0ZGVyciBhbmQgb3MuZW52aXJvbgoKICAgIFVzYWdlOjoKCiAgICAgICAgQ0dJSGFuZGxlcigpLnJ1bihhcHApCgogICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGNsYXNzIGFuZCBCYXNlQ0dJSGFuZGxlciBpcyB0aGF0IGl0IGFsd2F5cwogICAgdXNlcyAnd3NnaS5ydW5fb25jZScgb2YgJ1RydWUnLCAnd3NnaS5tdWx0aXRocmVhZCcgb2YgJ0ZhbHNlJywgYW5kCiAgICAnd3NnaS5tdWx0aXByb2Nlc3MnIG9mICdUcnVlJy4gIEl0IGRvZXMgbm90IHRha2UgYW55IGluaXRpYWxpemF0aW9uCiAgICBwYXJhbWV0ZXJzLCBidXQgYWx3YXlzIHVzZXMgJ3N5cy5zdGRpbicsICdvcy5lbnZpcm9uJywgYW5kIGZyaWVuZHMuCgogICAgSWYgeW91IG5lZWQgdG8gb3ZlcnJpZGUgYW55IG9mIHRoZXNlIHBhcmFtZXRlcnMsIHVzZSBCYXNlQ0dJSGFuZGxlcgogICAgaW5zdGVhZC4KICAgICIiIgoKICAgIHdzZ2lfcnVuX29uY2UgPSBUcnVlCiAgICAjIERvIG5vdCBhbGxvdyBvcy5lbnZpcm9uIHRvIGxlYWsgYmV0d2VlbiByZXF1ZXN0cyBpbiBHb29nbGUgQXBwIEVuZ2luZQogICAgIyBhbmQgb3RoZXIgbXVsdGktcnVuIENHSSB1c2UgY2FzZXMuICBUaGlzIGlzIG5vdCBlYXNpbHkgdGVzdGFibGUuCiAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNzI1MAogICAgb3NfZW52aXJvbiA9IHt9CgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIEJhc2VDR0lIYW5kbGVyLl9faW5pdF9fKAogICAgICAgICAgICBzZWxmLCBzeXMuc3RkaW4uYnVmZmVyLCBzeXMuc3Rkb3V0LmJ1ZmZlciwgc3lzLnN0ZGVyciwKICAgICAgICAgICAgcmVhZF9lbnZpcm9uKCksIG11bHRpdGhyZWFkPUZhbHNlLCBtdWx0aXByb2Nlc3M9VHJ1ZQogICAgICAgICkKCgpjbGFzcyBJSVNDR0lIYW5kbGVyKEJhc2VDR0lIYW5kbGVyKToKICAgICIiIkNHSS1iYXNlZCBpbnZvY2F0aW9uIHdpdGggd29ya2Fyb3VuZCBmb3IgSUlTIHBhdGggYnVnCgogICAgVGhpcyBoYW5kbGVyIHNob3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gQ0dJSGFuZGxlciB3aGVuIGRlcGxveWluZyBvbgogICAgTWljcm9zb2Z0IElJUyB3aXRob3V0IGhhdmluZyBzZXQgdGhlIGNvbmZpZyBhbGxvd1BhdGhJbmZvIG9wdGlvbiAoSUlTPj03KQogICAgb3IgbWV0YWJhc2UgYWxsb3dQYXRoSW5mb0ZvclNjcmlwdE1hcHBpbmdzIChJSVM8NykuCiAgICAiIiIKICAgIHdzZ2lfcnVuX29uY2UgPSBUcnVlCiAgICBvc19lbnZpcm9uID0ge30KCiAgICAjIEJ5IGRlZmF1bHQsIElJUyBnaXZlcyBhIFBBVEhfSU5GTyB0aGF0IGR1cGxpY2F0ZXMgdGhlIFNDUklQVF9OQU1FIGF0CiAgICAjIHRoZSBmcm9udCwgY2F1c2luZyBwcm9ibGVtcyBmb3IgV1NHSSBhcHBsaWNhdGlvbnMgdGhhdCB3aXNoIHRvIGltcGxlbWVudAogICAgIyByb3V0aW5nLiBUaGlzIGhhbmRsZXIgc3RyaXBzIGFueSBzdWNoIGR1cGxpY2F0ZWQgcGF0aC4KCiAgICAjIElJUyBjYW4gYmUgY29uZmlndXJlZCB0byBwYXNzIHRoZSBjb3JyZWN0IFBBVEhfSU5GTywgYnV0IHRoaXMgY2F1c2VzCiAgICAjIGFub3RoZXIgYnVnIHdoZXJlIFBBVEhfVFJBTlNMQVRFRCBpcyB3cm9uZy4gTHVja2lseSB0aGlzIHZhcmlhYmxlIGlzCiAgICAjIHJhcmVseSB1c2VkIGFuZCBpcyBub3QgZ3VhcmFudGVlZCBieSBXU0dJLiBPbiBJSVM8NywgdGhvdWdoLCB0aGUKICAgICMgc2V0dGluZyBjYW4gb25seSBiZSBtYWRlIG9uIGEgdmhvc3QgbGV2ZWwsIGFmZmVjdGluZyBhbGwgb3RoZXIgc2NyaXB0CiAgICAjIG1hcHBpbmdzLCBtYW55IG9mIHdoaWNoIGJyZWFrIHdoZW4gZXhwb3NlZCB0byB0aGUgUEFUSF9UUkFOU0xBVEVEIGJ1Zy4KICAgICMgRm9yIHRoaXMgcmVhc29uIElJUzw3IGlzIGFsbW9zdCBuZXZlciBkZXBsb3llZCB3aXRoIHRoZSBmaXguIChFdmVuIElJUzcKICAgICMgcmFyZWx5IHVzZXMgaXQgYmVjYXVzZSB0aGVyZSBpcyBzdGlsbCBubyBVSSBmb3IgaXQuKQoKICAgICMgVGhlcmUgaXMgbm8gd2F5IGZvciBDR0kgY29kZSB0byB0ZWxsIHdoZXRoZXIgdGhlIG9wdGlvbiB3YXMgc2V0LCBzbyBhCiAgICAjIHNlcGFyYXRlIGhhbmRsZXIgY2xhc3MgaXMgcHJvdmlkZWQuCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgZW52aXJvbj0gcmVhZF9lbnZpcm9uKCkKICAgICAgICBwYXRoID0gZW52aXJvbi5nZXQoJ1BBVEhfSU5GTycsICcnKQogICAgICAgIHNjcmlwdCA9IGVudmlyb24uZ2V0KCdTQ1JJUFRfTkFNRScsICcnKQogICAgICAgIGlmIChwYXRoKycvJykuc3RhcnRzd2l0aChzY3JpcHQrJy8nKToKICAgICAgICAgICAgZW52aXJvblsnUEFUSF9JTkZPJ10gPSBwYXRoW2xlbihzY3JpcHQpOl0KICAgICAgICBCYXNlQ0dJSGFuZGxlci5fX2luaXRfXygKICAgICAgICAgICAgc2VsZiwgc3lzLnN0ZGluLmJ1ZmZlciwgc3lzLnN0ZG91dC5idWZmZXIsIHN5cy5zdGRlcnIsCiAgICAgICAgICAgIGVudmlyb24sIG11bHRpdGhyZWFkPUZhbHNlLCBtdWx0aXByb2Nlc3M9VHJ1ZQogICAgICAgICkKUEsDBBQAAAAAAAMgo1ZYLcGCbhoAAG4aAAASAAAAd3NnaXJlZi9oZWFkZXJzLnB5IiIiTWFuYWdlIEhUVFAgUmVzcG9uc2UgSGVhZGVycwoKTXVjaCBvZiB0aGlzIG1vZHVsZSBpcyByZWQtaGFuZGVkbHkgcGlsZmVyZWQgZnJvbSBlbWFpbC5tZXNzYWdlIGluIHRoZSBzdGRsaWIsCnNvIHBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDIwMDEsMjAwMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kIHdlcmUKd3JpdHRlbiBieSBCYXJyeSBXYXJzYXcuCiIiIgoKIyBSZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIGBzcGVjaWFsJyBjaGFyYWN0ZXJzIGluIHBhcmFtZXRlcnMsIHRoZQojIGV4aXN0ZW5jZSBvZiB3aGljaCBmb3JjZSBxdW90aW5nIG9mIHRoZSBwYXJhbWV0ZXIgdmFsdWUuCmltcG9ydCByZQp0c3BlY2lhbHMgPSByZS5jb21waWxlKHInWyBcKFwpPD5ALDs6XFwiL1xbXF1cPz1dJykKCmRlZiBfZm9ybWF0cGFyYW0ocGFyYW0sIHZhbHVlPU5vbmUsIHF1b3RlPTEpOgogICAgIiIiQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZm9ybWF0IGFuZCByZXR1cm4gYSBrZXk9dmFsdWUgcGFpci4KCiAgICBUaGlzIHdpbGwgcXVvdGUgdGhlIHZhbHVlIGlmIG5lZWRlZCBvciBpZiBxdW90ZSBpcyB0cnVlLgogICAgIiIiCiAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZSBhbmQgbGVuKHZhbHVlKSA+IDA6CiAgICAgICAgaWYgcXVvdGUgb3IgdHNwZWNpYWxzLnNlYXJjaCh2YWx1ZSk6CiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnXFwnLCAnXFxcXCcpLnJlcGxhY2UoJyInLCByJ1wiJykKICAgICAgICAgICAgcmV0dXJuICclcz0iJXMiJyAlIChwYXJhbSwgdmFsdWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuICclcz0lcycgJSAocGFyYW0sIHZhbHVlKQogICAgZWxzZToKICAgICAgICByZXR1cm4gcGFyYW0KCgpjbGFzcyBIZWFkZXJzOgogICAgIiIiTWFuYWdlIGEgY29sbGVjdGlvbiBvZiBIVFRQIHJlc3BvbnNlIGhlYWRlcnMiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgaGVhZGVycz1Ob25lKToKICAgICAgICBoZWFkZXJzID0gaGVhZGVycyBpZiBoZWFkZXJzIGlzIG5vdCBOb25lIGVsc2UgW10KICAgICAgICBpZiB0eXBlKGhlYWRlcnMpIGlzIG5vdCBsaXN0OgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkhlYWRlcnMgbXVzdCBiZSBhIGxpc3Qgb2YgbmFtZS92YWx1ZSB0dXBsZXMiKQogICAgICAgIHNlbGYuX2hlYWRlcnMgPSBoZWFkZXJzCiAgICAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAgICBmb3IgaywgdiBpbiBoZWFkZXJzOgogICAgICAgICAgICAgICAgc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZShrKQogICAgICAgICAgICAgICAgc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZSh2KQoKICAgIGRlZiBfY29udmVydF9zdHJpbmdfdHlwZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIiIiQ29udmVydC9jaGVjayB2YWx1ZSB0eXBlLiIiIgogICAgICAgIGlmIHR5cGUodmFsdWUpIGlzIHN0cjoKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIkhlYWRlciBuYW1lcy92YWx1ZXMgbXVzdCBiZSIKICAgICAgICAgICAgIiBvZiB0eXBlIHN0ciAoZ290IHswfSkiLmZvcm1hdChyZXByKHZhbHVlKSkpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgaGVhZGVycywgaW5jbHVkaW5nIGR1cGxpY2F0ZXMuIiIiCiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9oZWFkZXJzKQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBuYW1lLCB2YWwpOgogICAgICAgICIiIlNldCB0aGUgdmFsdWUgb2YgYSBoZWFkZXIuIiIiCiAgICAgICAgZGVsIHNlbGZbbmFtZV0KICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZCgKICAgICAgICAgICAgKHNlbGYuX2NvbnZlcnRfc3RyaW5nX3R5cGUobmFtZSksIHNlbGYuX2NvbnZlcnRfc3RyaW5nX3R5cGUodmFsKSkpCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsbmFtZSk6CiAgICAgICAgIiIiRGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiBhIGhlYWRlciwgaWYgcHJlc2VudC4KCiAgICAgICAgRG9lcyAqbm90KiByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGhlYWRlciBpcyBtaXNzaW5nLgogICAgICAgICIiIgogICAgICAgIG5hbWUgPSBzZWxmLl9jb252ZXJ0X3N0cmluZ190eXBlKG5hbWUubG93ZXIoKSkKICAgICAgICBzZWxmLl9oZWFkZXJzWzpdID0gW2t2IGZvciBrdiBpbiBzZWxmLl9oZWFkZXJzIGlmIGt2WzBdLmxvd2VyKCkgIT0gbmFtZV0KCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZixuYW1lKToKICAgICAgICAiIiJHZXQgdGhlIGZpcnN0IGhlYWRlciB2YWx1ZSBmb3IgJ25hbWUnCgogICAgICAgIFJldHVybiBOb25lIGlmIHRoZSBoZWFkZXIgaXMgbWlzc2luZyBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uLgoKICAgICAgICBOb3RlIHRoYXQgaWYgdGhlIGhlYWRlciBhcHBlYXJlZCBtdWx0aXBsZSB0aW1lcywgdGhlIGZpcnN0IGV4YWN0bHkgd2hpY2gKICAgICAgICBvY2N1cnJlbmNlIGdldHMgcmV0dXJuZWQgaXMgdW5kZWZpbmVkLiAgVXNlIGdldGFsbCgpIHRvIGdldCBhbGwKICAgICAgICB0aGUgdmFsdWVzIG1hdGNoaW5nIGEgaGVhZGVyIGZpZWxkIG5hbWUuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuZ2V0KG5hbWUpCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBuYW1lKToKICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgbWVzc2FnZSBjb250YWlucyB0aGUgaGVhZGVyLiIiIgogICAgICAgIHJldHVybiBzZWxmLmdldChuYW1lKSBpcyBub3QgTm9uZQoKCiAgICBkZWYgZ2V0X2FsbChzZWxmLCBuYW1lKToKICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgdmFsdWVzIGZvciB0aGUgbmFtZWQgZmllbGQuCgogICAgICAgIFRoZXNlIHdpbGwgYmUgc29ydGVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbCBoZWFkZXIKICAgICAgICBsaXN0IG9yIHdlcmUgYWRkZWQgdG8gdGhpcyBpbnN0YW5jZSwgYW5kIG1heSBjb250YWluIGR1cGxpY2F0ZXMuICBBbnkKICAgICAgICBmaWVsZHMgZGVsZXRlZCBhbmQgcmUtaW5zZXJ0ZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgaGVhZGVyIGxpc3QuCiAgICAgICAgSWYgbm8gZmllbGRzIGV4aXN0IHdpdGggdGhlIGdpdmVuIG5hbWUsIHJldHVybnMgYW4gZW1wdHkgbGlzdC4KICAgICAgICAiIiIKICAgICAgICBuYW1lID0gc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZShuYW1lLmxvd2VyKCkpCiAgICAgICAgcmV0dXJuIFtrdlsxXSBmb3Iga3YgaW4gc2VsZi5faGVhZGVycyBpZiBrdlswXS5sb3dlcigpPT1uYW1lXQoKCiAgICBkZWYgZ2V0KHNlbGYsbmFtZSxkZWZhdWx0PU5vbmUpOgogICAgICAgICIiIkdldCB0aGUgZmlyc3QgaGVhZGVyIHZhbHVlIGZvciAnbmFtZScsIG9yIHJldHVybiAnZGVmYXVsdCciIiIKICAgICAgICBuYW1lID0gc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZShuYW1lLmxvd2VyKCkpCiAgICAgICAgZm9yIGssdiBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICBpZiBrLmxvd2VyKCk9PW5hbWU6CiAgICAgICAgICAgICAgICByZXR1cm4gdgogICAgICAgIHJldHVybiBkZWZhdWx0CgoKICAgIGRlZiBrZXlzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBoZWFkZXIgZmllbGQgbmFtZXMuCgogICAgICAgIFRoZXNlIHdpbGwgYmUgc29ydGVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbCBoZWFkZXIKICAgICAgICBsaXN0LCBvciB3ZXJlIGFkZGVkIHRvIHRoaXMgaW5zdGFuY2UsIGFuZCBtYXkgY29udGFpbiBkdXBsaWNhdGVzLgogICAgICAgIEFueSBmaWVsZHMgZGVsZXRlZCBhbmQgcmUtaW5zZXJ0ZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgaGVhZGVyCiAgICAgICAgbGlzdC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gW2sgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KCiAgICBkZWYgdmFsdWVzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIGhlYWRlciB2YWx1ZXMuCgogICAgICAgIFRoZXNlIHdpbGwgYmUgc29ydGVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbCBoZWFkZXIKICAgICAgICBsaXN0LCBvciB3ZXJlIGFkZGVkIHRvIHRoaXMgaW5zdGFuY2UsIGFuZCBtYXkgY29udGFpbiBkdXBsaWNhdGVzLgogICAgICAgIEFueSBmaWVsZHMgZGVsZXRlZCBhbmQgcmUtaW5zZXJ0ZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgaGVhZGVyCiAgICAgICAgbGlzdC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gW3YgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KCiAgICBkZWYgaXRlbXMoc2VsZik6CiAgICAgICAgIiIiR2V0IGFsbCB0aGUgaGVhZGVyIGZpZWxkcyBhbmQgdmFsdWVzLgoKICAgICAgICBUaGVzZSB3aWxsIGJlIHNvcnRlZCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGluIHRoZSBvcmlnaW5hbCBoZWFkZXIKICAgICAgICBsaXN0LCBvciB3ZXJlIGFkZGVkIHRvIHRoaXMgaW5zdGFuY2UsIGFuZCBtYXkgY29udGFpbiBkdXBsaWNhdGVzLgogICAgICAgIEFueSBmaWVsZHMgZGVsZXRlZCBhbmQgcmUtaW5zZXJ0ZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgaGVhZGVyCiAgICAgICAgbGlzdC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5faGVhZGVyc1s6XQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIiVzKCVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX2hlYWRlcnMpCgogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIiIic3RyKCkgcmV0dXJucyB0aGUgZm9ybWF0dGVkIGhlYWRlcnMsIGNvbXBsZXRlIHdpdGggZW5kIGxpbmUsCiAgICAgICAgc3VpdGFibGUgZm9yIGRpcmVjdCBIVFRQIHRyYW5zbWlzc2lvbi4iIiIKICAgICAgICByZXR1cm4gJ1xyXG4nLmpvaW4oWyIlczogJXMiICUga3YgZm9yIGt2IGluIHNlbGYuX2hlYWRlcnNdK1snJywnJ10pCgogICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKICAgICAgICByZXR1cm4gc3RyKHNlbGYpLmVuY29kZSgnaXNvLTg4NTktMScpCgogICAgZGVmIHNldGRlZmF1bHQoc2VsZixuYW1lLHZhbHVlKToKICAgICAgICAiIiJSZXR1cm4gZmlyc3QgbWF0Y2hpbmcgaGVhZGVyIHZhbHVlIGZvciAnbmFtZScsIG9yICd2YWx1ZScKCiAgICAgICAgSWYgdGhlcmUgaXMgbm8gaGVhZGVyIG5hbWVkICduYW1lJywgYWRkIGEgbmV3IGhlYWRlciB3aXRoIG5hbWUgJ25hbWUnCiAgICAgICAgYW5kIHZhbHVlICd2YWx1ZScuIiIiCiAgICAgICAgcmVzdWx0ID0gc2VsZi5nZXQobmFtZSkKICAgICAgICBpZiByZXN1bHQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKHNlbGYuX2NvbnZlcnRfc3RyaW5nX3R5cGUobmFtZSksCiAgICAgICAgICAgICAgICBzZWxmLl9jb252ZXJ0X3N0cmluZ190eXBlKHZhbHVlKSkpCiAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgYWRkX2hlYWRlcihzZWxmLCBfbmFtZSwgX3ZhbHVlLCAqKl9wYXJhbXMpOgogICAgICAgICIiIkV4dGVuZGVkIGhlYWRlciBzZXR0aW5nLgoKICAgICAgICBfbmFtZSBpcyB0aGUgaGVhZGVyIGZpZWxkIHRvIGFkZC4gIGtleXdvcmQgYXJndW1lbnRzIGNhbiBiZSB1c2VkIHRvIHNldAogICAgICAgIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIGhlYWRlciBmaWVsZCwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQKICAgICAgICB0byBkYXNoZXMuICBOb3JtYWxseSB0aGUgcGFyYW1ldGVyIHdpbGwgYmUgYWRkZWQgYXMga2V5PSJ2YWx1ZSIgdW5sZXNzCiAgICAgICAgdmFsdWUgaXMgTm9uZSwgaW4gd2hpY2ggY2FzZSBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4KCiAgICAgICAgRXhhbXBsZToKCiAgICAgICAgaC5hZGRfaGVhZGVyKCdjb250ZW50LWRpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT0nYnVkLmdpZicpCgogICAgICAgIE5vdGUgdGhhdCB1bmxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgJ2VtYWlsLm1lc3NhZ2UnIG1ldGhvZCwgdGhpcyBkb2VzCiAgICAgICAgKm5vdCogaGFuZGxlICcoY2hhcnNldCwgbGFuZ3VhZ2UsIHZhbHVlKScgdHVwbGVzOiBhbGwgdmFsdWVzIG11c3QgYmUKICAgICAgICBzdHJpbmdzIG9yIE5vbmUuCiAgICAgICAgIiIiCiAgICAgICAgcGFydHMgPSBbXQogICAgICAgIGlmIF92YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgX3ZhbHVlID0gc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZShfdmFsdWUpCiAgICAgICAgICAgIHBhcnRzLmFwcGVuZChfdmFsdWUpCiAgICAgICAgZm9yIGssIHYgaW4gX3BhcmFtcy5pdGVtcygpOgogICAgICAgICAgICBrID0gc2VsZi5fY29udmVydF9zdHJpbmdfdHlwZShrKQogICAgICAgICAgICBpZiB2IGlzIE5vbmU6CiAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoay5yZXBsYWNlKCdfJywgJy0nKSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHYgPSBzZWxmLl9jb252ZXJ0X3N0cmluZ190eXBlKHYpCiAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoX2Zvcm1hdHBhcmFtKGsucmVwbGFjZSgnXycsICctJyksIHYpKQogICAgICAgIHNlbGYuX2hlYWRlcnMuYXBwZW5kKChzZWxmLl9jb252ZXJ0X3N0cmluZ190eXBlKF9uYW1lKSwgIjsgIi5qb2luKHBhcnRzKSkpClBLAwQUAAAAAAADIKNW15IM6DMUAAAzFAAAGAAAAHdzZ2lyZWYvc2ltcGxlX3NlcnZlci5weSIiIkJhc2VIVFRQU2VydmVyIHRoYXQgaW1wbGVtZW50cyB0aGUgUHl0aG9uIFdTR0kgcHJvdG9jb2wgKFBFUCAzMzMzKQoKVGhpcyBpcyBib3RoIGFuIGV4YW1wbGUgb2YgaG93IFdTR0kgY2FuIGJlIGltcGxlbWVudGVkLCBhbmQgYSBiYXNpcyBmb3IgcnVubmluZwpzaW1wbGUgd2ViIGFwcGxpY2F0aW9ucyBvbiBhIGxvY2FsIG1hY2hpbmUsIHN1Y2ggYXMgbWlnaHQgYmUgZG9uZSB3aGVuIHRlc3RpbmcKb3IgZGVidWdnaW5nIGFuIGFwcGxpY2F0aW9uLiAgSXQgaGFzIG5vdCBiZWVuIHJldmlld2VkIGZvciBzZWN1cml0eSBpc3N1ZXMsCmhvd2V2ZXIsIGFuZCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3UgdXNlIGEgInJlYWwiIHdlYiBzZXJ2ZXIgZm9yCnByb2R1Y3Rpb24gdXNlLgoKRm9yIGV4YW1wbGUgdXNhZ2UsIHNlZSB0aGUgJ2lmIF9fbmFtZV9fPT0iX19tYWluX18iJyBibG9jayBhdCB0aGUgZW5kIG9mIHRoZQptb2R1bGUuICBTZWUgYWxzbyB0aGUgQmFzZUhUVFBTZXJ2ZXIgbW9kdWxlIGRvY3MgZm9yIG90aGVyIEFQSSBpbmZvcm1hdGlvbi4KIiIiCgpmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBIVFRQU2VydmVyCmltcG9ydCBzeXMKaW1wb3J0IHVybGxpYi5wYXJzZQpmcm9tIHdzZ2lyZWYuaGFuZGxlcnMgaW1wb3J0IFNpbXBsZUhhbmRsZXIKZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX2ltcGxlbWVudGF0aW9uCgpfX3ZlcnNpb25fXyA9ICIwLjIiCl9fYWxsX18gPSBbJ1dTR0lTZXJ2ZXInLCAnV1NHSVJlcXVlc3RIYW5kbGVyJywgJ2RlbW9fYXBwJywgJ21ha2Vfc2VydmVyJ10KCgpzZXJ2ZXJfdmVyc2lvbiA9ICJXU0dJU2VydmVyLyIgKyBfX3ZlcnNpb25fXwpzeXNfdmVyc2lvbiA9IHB5dGhvbl9pbXBsZW1lbnRhdGlvbigpICsgIi8iICsgc3lzLnZlcnNpb24uc3BsaXQoKVswXQpzb2Z0d2FyZV92ZXJzaW9uID0gc2VydmVyX3ZlcnNpb24gKyAnICcgKyBzeXNfdmVyc2lvbgoKCmNsYXNzIFNlcnZlckhhbmRsZXIoU2ltcGxlSGFuZGxlcik6CgogICAgc2VydmVyX3NvZnR3YXJlID0gc29mdHdhcmVfdmVyc2lvbgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYucmVxdWVzdF9oYW5kbGVyLmxvZ19yZXF1ZXN0KAogICAgICAgICAgICAgICAgc2VsZi5zdGF0dXMuc3BsaXQoJyAnLDEpWzBdLCBzZWxmLmJ5dGVzX3NlbnQKICAgICAgICAgICAgKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIFNpbXBsZUhhbmRsZXIuY2xvc2Uoc2VsZikKCgoKY2xhc3MgV1NHSVNlcnZlcihIVFRQU2VydmVyKToKCiAgICAiIiJCYXNlSFRUUFNlcnZlciB0aGF0IGltcGxlbWVudHMgdGhlIFB5dGhvbiBXU0dJIHByb3RvY29sIiIiCgogICAgYXBwbGljYXRpb24gPSBOb25lCgogICAgZGVmIHNlcnZlcl9iaW5kKHNlbGYpOgogICAgICAgICIiIk92ZXJyaWRlIHNlcnZlcl9iaW5kIHRvIHN0b3JlIHRoZSBzZXJ2ZXIgbmFtZS4iIiIKICAgICAgICBIVFRQU2VydmVyLnNlcnZlcl9iaW5kKHNlbGYpCiAgICAgICAgc2VsZi5zZXR1cF9lbnZpcm9uKCkKCiAgICBkZWYgc2V0dXBfZW52aXJvbihzZWxmKToKICAgICAgICAjIFNldCB1cCBiYXNlIGVudmlyb25tZW50CiAgICAgICAgZW52ID0gc2VsZi5iYXNlX2Vudmlyb24gPSB7fQogICAgICAgIGVudlsnU0VSVkVSX05BTUUnXSA9IHNlbGYuc2VydmVyX25hbWUKICAgICAgICBlbnZbJ0dBVEVXQVlfSU5URVJGQUNFJ10gPSAnQ0dJLzEuMScKICAgICAgICBlbnZbJ1NFUlZFUl9QT1JUJ10gPSBzdHIoc2VsZi5zZXJ2ZXJfcG9ydCkKICAgICAgICBlbnZbJ1JFTU9URV9IT1NUJ109JycKICAgICAgICBlbnZbJ0NPTlRFTlRfTEVOR1RIJ109JycKICAgICAgICBlbnZbJ1NDUklQVF9OQU1FJ10gPSAnJwoKICAgIGRlZiBnZXRfYXBwKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmFwcGxpY2F0aW9uCgogICAgZGVmIHNldF9hcHAoc2VsZixhcHBsaWNhdGlvbik6CiAgICAgICAgc2VsZi5hcHBsaWNhdGlvbiA9IGFwcGxpY2F0aW9uCgoKCmNsYXNzIFdTR0lSZXF1ZXN0SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKCiAgICBzZXJ2ZXJfdmVyc2lvbiA9ICJXU0dJU2VydmVyLyIgKyBfX3ZlcnNpb25fXwoKICAgIGRlZiBnZXRfZW52aXJvbihzZWxmKToKICAgICAgICBlbnYgPSBzZWxmLnNlcnZlci5iYXNlX2Vudmlyb24uY29weSgpCiAgICAgICAgZW52WydTRVJWRVJfUFJPVE9DT0wnXSA9IHNlbGYucmVxdWVzdF92ZXJzaW9uCiAgICAgICAgZW52WydTRVJWRVJfU09GVFdBUkUnXSA9IHNlbGYuc2VydmVyX3ZlcnNpb24KICAgICAgICBlbnZbJ1JFUVVFU1RfTUVUSE9EJ10gPSBzZWxmLmNvbW1hbmQKICAgICAgICBpZiAnPycgaW4gc2VsZi5wYXRoOgogICAgICAgICAgICBwYXRoLHF1ZXJ5ID0gc2VsZi5wYXRoLnNwbGl0KCc/JywxKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhdGgscXVlcnkgPSBzZWxmLnBhdGgsJycKCiAgICAgICAgZW52WydQQVRIX0lORk8nXSA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHBhdGgsICdpc28tODg1OS0xJykKICAgICAgICBlbnZbJ1FVRVJZX1NUUklORyddID0gcXVlcnkKCiAgICAgICAgaG9zdCA9IHNlbGYuYWRkcmVzc19zdHJpbmcoKQogICAgICAgIGlmIGhvc3QgIT0gc2VsZi5jbGllbnRfYWRkcmVzc1swXToKICAgICAgICAgICAgZW52WydSRU1PVEVfSE9TVCddID0gaG9zdAogICAgICAgIGVudlsnUkVNT1RFX0FERFInXSA9IHNlbGYuY2xpZW50X2FkZHJlc3NbMF0KCiAgICAgICAgaWYgc2VsZi5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykgaXMgTm9uZToKICAgICAgICAgICAgZW52WydDT05URU5UX1RZUEUnXSA9IHNlbGYuaGVhZGVycy5nZXRfY29udGVudF90eXBlKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbnZbJ0NPTlRFTlRfVFlQRSddID0gc2VsZi5oZWFkZXJzWydjb250ZW50LXR5cGUnXQoKICAgICAgICBsZW5ndGggPSBzZWxmLmhlYWRlcnMuZ2V0KCdjb250ZW50LWxlbmd0aCcpCiAgICAgICAgaWYgbGVuZ3RoOgogICAgICAgICAgICBlbnZbJ0NPTlRFTlRfTEVOR1RIJ10gPSBsZW5ndGgKCiAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5oZWFkZXJzLml0ZW1zKCk6CiAgICAgICAgICAgIGs9ay5yZXBsYWNlKCctJywnXycpLnVwcGVyKCk7IHY9di5zdHJpcCgpCiAgICAgICAgICAgIGlmIGsgaW4gZW52OgogICAgICAgICAgICAgICAgY29udGludWUgICAgICAgICAgICAgICAgICAgICMgc2tpcCBjb250ZW50IGxlbmd0aCwgdHlwZSxldGMuCiAgICAgICAgICAgIGlmICdIVFRQXycrayBpbiBlbnY6CiAgICAgICAgICAgICAgICBlbnZbJ0hUVFBfJytrXSArPSAnLCcrdiAgICAgIyBjb21tYS1zZXBhcmF0ZSBtdWx0aXBsZSBoZWFkZXJzCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbnZbJ0hUVFBfJytrXSA9IHYKICAgICAgICByZXR1cm4gZW52CgogICAgZGVmIGdldF9zdGRlcnIoc2VsZik6CiAgICAgICAgcmV0dXJuIHN5cy5zdGRlcnIKCiAgICBkZWYgaGFuZGxlKHNlbGYpOgogICAgICAgICIiIkhhbmRsZSBhIHNpbmdsZSBIVFRQIHJlcXVlc3QiIiIKCiAgICAgICAgc2VsZi5yYXdfcmVxdWVzdGxpbmUgPSBzZWxmLnJmaWxlLnJlYWRsaW5lKDY1NTM3KQogICAgICAgIGlmIGxlbihzZWxmLnJhd19yZXF1ZXN0bGluZSkgPiA2NTUzNjoKICAgICAgICAgICAgc2VsZi5yZXF1ZXN0bGluZSA9ICcnCiAgICAgICAgICAgIHNlbGYucmVxdWVzdF92ZXJzaW9uID0gJycKICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gJycKICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQxNCkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIG5vdCBzZWxmLnBhcnNlX3JlcXVlc3QoKTogIyBBbiBlcnJvciBjb2RlIGhhcyBiZWVuIHNlbnQsIGp1c3QgZXhpdAogICAgICAgICAgICByZXR1cm4KCiAgICAgICAgaGFuZGxlciA9IFNlcnZlckhhbmRsZXIoCiAgICAgICAgICAgIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUsIHNlbGYuZ2V0X3N0ZGVycigpLCBzZWxmLmdldF9lbnZpcm9uKCksCiAgICAgICAgICAgIG11bHRpdGhyZWFkPUZhbHNlLAogICAgICAgICkKICAgICAgICBoYW5kbGVyLnJlcXVlc3RfaGFuZGxlciA9IHNlbGYgICAgICAjIGJhY2twb2ludGVyIGZvciBsb2dnaW5nCiAgICAgICAgaGFuZGxlci5ydW4oc2VsZi5zZXJ2ZXIuZ2V0X2FwcCgpKQoKCgpkZWYgZGVtb19hcHAoZW52aXJvbixzdGFydF9yZXNwb25zZSk6CiAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogICAgc3Rkb3V0ID0gU3RyaW5nSU8oKQogICAgcHJpbnQoIkhlbGxvIHdvcmxkISIsIGZpbGU9c3Rkb3V0KQogICAgcHJpbnQoZmlsZT1zdGRvdXQpCiAgICBoID0gc29ydGVkKGVudmlyb24uaXRlbXMoKSkKICAgIGZvciBrLHYgaW4gaDoKICAgICAgICBwcmludChrLCc9JyxyZXByKHYpLCBmaWxlPXN0ZG91dCkKICAgIHN0YXJ0X3Jlc3BvbnNlKCIyMDAgT0siLCBbKCdDb250ZW50LVR5cGUnLCd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JyldKQogICAgcmV0dXJuIFtzdGRvdXQuZ2V0dmFsdWUoKS5lbmNvZGUoInV0Zi04IildCgoKZGVmIG1ha2Vfc2VydmVyKAogICAgaG9zdCwgcG9ydCwgYXBwLCBzZXJ2ZXJfY2xhc3M9V1NHSVNlcnZlciwgaGFuZGxlcl9jbGFzcz1XU0dJUmVxdWVzdEhhbmRsZXIKKToKICAgICIiIkNyZWF0ZSBhIG5ldyBXU0dJIHNlcnZlciBsaXN0ZW5pbmcgb24gYGhvc3RgIGFuZCBgcG9ydGAgZm9yIGBhcHBgIiIiCiAgICBzZXJ2ZXIgPSBzZXJ2ZXJfY2xhc3MoKGhvc3QsIHBvcnQpLCBoYW5kbGVyX2NsYXNzKQogICAgc2VydmVyLnNldF9hcHAoYXBwKQogICAgcmV0dXJuIHNlcnZlcgoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkgYXMgaHR0cGQ6CiAgICAgICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQogICAgICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24iLCBzYVswXSwgInBvcnQiLCBzYVsxXSwgIi4uLiIpCiAgICAgICAgaW1wb3J0IHdlYmJyb3dzZXIKICAgICAgICB3ZWJicm93c2VyLm9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94eXo/YWJjJykKICAgICAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpICAjIHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKUEsDBBQAAAAAAAMgo1bkznPctQYAALUGAAAQAAAAd3NnaXJlZi90eXBlcy5weSIiIldTR0ktcmVsYXRlZCB0eXBlcyBmb3Igc3RhdGljIHR5cGUgY2hlY2tpbmciIiIKCmZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBDYWxsYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yCmZyb20gdHlwZXMgaW1wb3J0IFRyYWNlYmFja1R5cGUKZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgUHJvdG9jb2wsIFR5cGVBbGlhcwoKX19hbGxfXyA9IFsKICAgICJTdGFydFJlc3BvbnNlIiwKICAgICJXU0dJRW52aXJvbm1lbnQiLAogICAgIldTR0lBcHBsaWNhdGlvbiIsCiAgICAiSW5wdXRTdHJlYW0iLAogICAgIkVycm9yU3RyZWFtIiwKICAgICJGaWxlV3JhcHBlciIsCl0KCl9FeGNJbmZvOiBUeXBlQWxpYXMgPSB0dXBsZVt0eXBlW0Jhc2VFeGNlcHRpb25dLCBCYXNlRXhjZXB0aW9uLCBUcmFjZWJhY2tUeXBlXQpfT3B0RXhjSW5mbzogVHlwZUFsaWFzID0gX0V4Y0luZm8gfCB0dXBsZVtOb25lLCBOb25lLCBOb25lXQoKY2xhc3MgU3RhcnRSZXNwb25zZShQcm90b2NvbCk6CiAgICAiIiJzdGFydF9yZXNwb25zZSgpIGNhbGxhYmxlIGFzIGRlZmluZWQgaW4gUEVQIDMzMzMiIiIKICAgIGRlZiBfX2NhbGxfXygKICAgICAgICBzZWxmLAogICAgICAgIHN0YXR1czogc3RyLAogICAgICAgIGhlYWRlcnM6IGxpc3RbdHVwbGVbc3RyLCBzdHJdXSwKICAgICAgICBleGNfaW5mbzogX09wdEV4Y0luZm8gfCBOb25lID0gLi4uLAogICAgICAgIC8sCiAgICApIC0+IENhbGxhYmxlW1tieXRlc10sIG9iamVjdF06IC4uLgoKV1NHSUVudmlyb25tZW50OiBUeXBlQWxpYXMgPSBkaWN0W3N0ciwgQW55XQpXU0dJQXBwbGljYXRpb246IFR5cGVBbGlhcyA9IENhbGxhYmxlW1tXU0dJRW52aXJvbm1lbnQsIFN0YXJ0UmVzcG9uc2VdLAogICAgSXRlcmFibGVbYnl0ZXNdXQoKY2xhc3MgSW5wdXRTdHJlYW0oUHJvdG9jb2wpOgogICAgIiIiV1NHSSBpbnB1dCBzdHJlYW0gYXMgZGVmaW5lZCBpbiBQRVAgMzMzMyIiIgogICAgZGVmIHJlYWQoc2VsZiwgc2l6ZTogaW50ID0gLi4uLCAvKSAtPiBieXRlczogLi4uCiAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZTogaW50ID0gLi4uLCAvKSAtPiBieXRlczogLi4uCiAgICBkZWYgcmVhZGxpbmVzKHNlbGYsIGhpbnQ6IGludCA9IC4uLiwgLykgLT4gbGlzdFtieXRlc106IC4uLgogICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+IEl0ZXJhdG9yW2J5dGVzXTogLi4uCgpjbGFzcyBFcnJvclN0cmVhbShQcm90b2NvbCk6CiAgICAiIiJXU0dJIGVycm9yIHN0cmVhbSBhcyBkZWZpbmVkIGluIFBFUCAzMzMzIiIiCiAgICBkZWYgZmx1c2goc2VsZikgLT4gb2JqZWN0OiAuLi4KICAgIGRlZiB3cml0ZShzZWxmLCBzOiBzdHIsIC8pIC0+IG9iamVjdDogLi4uCiAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBzZXE6IGxpc3Rbc3RyXSwgLykgLT4gb2JqZWN0OiAuLi4KCmNsYXNzIF9SZWFkYWJsZShQcm90b2NvbCk6CiAgICBkZWYgcmVhZChzZWxmLCBzaXplOiBpbnQgPSAuLi4sIC8pIC0+IGJ5dGVzOiAuLi4KICAgICMgT3B0aW9uYWw6IGRlZiBjbG9zZShzZWxmKSAtPiBvYmplY3Q6IC4uLgoKY2xhc3MgRmlsZVdyYXBwZXIoUHJvdG9jb2wpOgogICAgIiIiV1NHSSBmaWxlIHdyYXBwZXIgYXMgZGVmaW5lZCBpbiBQRVAgMzMzMyIiIgogICAgZGVmIF9fY2FsbF9fKAogICAgICAgIHNlbGYsIGZpbGU6IF9SZWFkYWJsZSwgYmxvY2tfc2l6ZTogaW50ID0gLi4uLCAvLAogICAgKSAtPiBJdGVyYWJsZVtieXRlc106IC4uLgpQSwMEFAAAAAAAAyCjVqHfJJJgFQAAYBUAAA8AAAB3c2dpcmVmL3V0aWwucHkiIiJNaXNjZWxsYW5lb3VzIFdTR0ktcmVsYXRlZCBVdGlsaXRpZXMiIiIKCmltcG9ydCBwb3NpeHBhdGgKCl9fYWxsX18gPSBbCiAgICAnRmlsZVdyYXBwZXInLCAnZ3Vlc3Nfc2NoZW1lJywgJ2FwcGxpY2F0aW9uX3VyaScsICdyZXF1ZXN0X3VyaScsCiAgICAnc2hpZnRfcGF0aF9pbmZvJywgJ3NldHVwX3Rlc3RpbmdfZGVmYXVsdHMnLApdCgoKY2xhc3MgRmlsZVdyYXBwZXI6CiAgICAiIiJXcmFwcGVyIHRvIGNvbnZlcnQgZmlsZS1saWtlIG9iamVjdHMgdG8gaXRlcmFibGVzIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVsaWtlLCBibGtzaXplPTgxOTIpOgogICAgICAgIHNlbGYuZmlsZWxpa2UgPSBmaWxlbGlrZQogICAgICAgIHNlbGYuYmxrc2l6ZSA9IGJsa3NpemUKICAgICAgICBpZiBoYXNhdHRyKGZpbGVsaWtlLCdjbG9zZScpOgogICAgICAgICAgICBzZWxmLmNsb3NlID0gZmlsZWxpa2UuY2xvc2UKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgZGF0YSA9IHNlbGYuZmlsZWxpa2UucmVhZChzZWxmLmJsa3NpemUpCiAgICAgICAgaWYgZGF0YToKICAgICAgICAgICAgcmV0dXJuIGRhdGEKICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCgpkZWYgZ3Vlc3Nfc2NoZW1lKGVudmlyb24pOgogICAgIiIiUmV0dXJuIGEgZ3Vlc3MgZm9yIHdoZXRoZXIgJ3dzZ2kudXJsX3NjaGVtZScgc2hvdWxkIGJlICdodHRwJyBvciAnaHR0cHMnCiAgICAiIiIKICAgIGlmIGVudmlyb24uZ2V0KCJIVFRQUyIpIGluICgneWVzJywnb24nLCcxJyk6CiAgICAgICAgcmV0dXJuICdodHRwcycKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuICdodHRwJwoKZGVmIGFwcGxpY2F0aW9uX3VyaShlbnZpcm9uKToKICAgICIiIlJldHVybiB0aGUgYXBwbGljYXRpb24ncyBiYXNlIFVSSSAobm8gUEFUSF9JTkZPIG9yIFFVRVJZX1NUUklORykiIiIKICAgIHVybCA9IGVudmlyb25bJ3dzZ2kudXJsX3NjaGVtZSddKyc6Ly8nCiAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcXVvdGUKCiAgICBpZiBlbnZpcm9uLmdldCgnSFRUUF9IT1NUJyk6CiAgICAgICAgdXJsICs9IGVudmlyb25bJ0hUVFBfSE9TVCddCiAgICBlbHNlOgogICAgICAgIHVybCArPSBlbnZpcm9uWydTRVJWRVJfTkFNRSddCgogICAgICAgIGlmIGVudmlyb25bJ3dzZ2kudXJsX3NjaGVtZSddID09ICdodHRwcyc6CiAgICAgICAgICAgIGlmIGVudmlyb25bJ1NFUlZFUl9QT1JUJ10gIT0gJzQ0Myc6CiAgICAgICAgICAgICAgICB1cmwgKz0gJzonICsgZW52aXJvblsnU0VSVkVSX1BPUlQnXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGVudmlyb25bJ1NFUlZFUl9QT1JUJ10gIT0gJzgwJzoKICAgICAgICAgICAgICAgIHVybCArPSAnOicgKyBlbnZpcm9uWydTRVJWRVJfUE9SVCddCgogICAgdXJsICs9IHF1b3RlKGVudmlyb24uZ2V0KCdTQ1JJUFRfTkFNRScpIG9yICcvJywgZW5jb2Rpbmc9J2xhdGluMScpCiAgICByZXR1cm4gdXJsCgpkZWYgcmVxdWVzdF91cmkoZW52aXJvbiwgaW5jbHVkZV9xdWVyeT1UcnVlKToKICAgICIiIlJldHVybiB0aGUgZnVsbCByZXF1ZXN0IFVSSSwgb3B0aW9uYWxseSBpbmNsdWRpbmcgdGhlIHF1ZXJ5IHN0cmluZyIiIgogICAgdXJsID0gYXBwbGljYXRpb25fdXJpKGVudmlyb24pCiAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcXVvdGUKICAgIHBhdGhfaW5mbyA9IHF1b3RlKGVudmlyb24uZ2V0KCdQQVRIX0lORk8nLCcnKSwgc2FmZT0nLzs9LCcsIGVuY29kaW5nPSdsYXRpbjEnKQogICAgaWYgbm90IGVudmlyb24uZ2V0KCdTQ1JJUFRfTkFNRScpOgogICAgICAgIHVybCArPSBwYXRoX2luZm9bMTpdCiAgICBlbHNlOgogICAgICAgIHVybCArPSBwYXRoX2luZm8KICAgIGlmIGluY2x1ZGVfcXVlcnkgYW5kIGVudmlyb24uZ2V0KCdRVUVSWV9TVFJJTkcnKToKICAgICAgICB1cmwgKz0gJz8nICsgZW52aXJvblsnUVVFUllfU1RSSU5HJ10KICAgIHJldHVybiB1cmwKCmRlZiBzaGlmdF9wYXRoX2luZm8oZW52aXJvbik6CiAgICAiIiJTaGlmdCBhIG5hbWUgZnJvbSBQQVRIX0lORk8gdG8gU0NSSVBUX05BTUUsIHJldHVybmluZyBpdAoKICAgIElmIHRoZXJlIGFyZSBubyByZW1haW5pbmcgcGF0aCBzZWdtZW50cyBpbiBQQVRIX0lORk8sIHJldHVybiBOb25lLgogICAgTm90ZTogJ2Vudmlyb24nIGlzIG1vZGlmaWVkIGluLXBsYWNlOyB1c2UgYSBjb3B5IGlmIHlvdSBuZWVkIHRvIGtlZXAKICAgIHRoZSBvcmlnaW5hbCBQQVRIX0lORk8gb3IgU0NSSVBUX05BTUUuCgogICAgTm90ZTogd2hlbiBQQVRIX0lORk8gaXMganVzdCBhICcvJywgdGhpcyByZXR1cm5zICcnIGFuZCBhcHBlbmRzIGEgdHJhaWxpbmcKICAgICcvJyB0byBTQ1JJUFRfTkFNRSwgZXZlbiB0aG91Z2ggZW1wdHkgcGF0aCBzZWdtZW50cyBhcmUgbm9ybWFsbHkgaWdub3JlZCwKICAgIGFuZCBTQ1JJUFRfTkFNRSBkb2Vzbid0IG5vcm1hbGx5IGVuZCBpbiBhICcvJy4gIFRoaXMgaXMgaW50ZW50aW9uYWwKICAgIGJlaGF2aW9yLCB0byBlbnN1cmUgdGhhdCBhbiBhcHBsaWNhdGlvbiBjYW4gdGVsbCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCiAgICAnL3gnIGFuZCAnL3gvJyB3aGVuIHRyYXZlcnNpbmcgdG8gb2JqZWN0cy4KICAgICIiIgogICAgcGF0aF9pbmZvID0gZW52aXJvbi5nZXQoJ1BBVEhfSU5GTycsJycpCiAgICBpZiBub3QgcGF0aF9pbmZvOgogICAgICAgIHJldHVybiBOb25lCgogICAgcGF0aF9wYXJ0cyA9IHBhdGhfaW5mby5zcGxpdCgnLycpCiAgICBwYXRoX3BhcnRzWzE6LTFdID0gW3AgZm9yIHAgaW4gcGF0aF9wYXJ0c1sxOi0xXSBpZiBwIGFuZCBwICE9ICcuJ10KICAgIG5hbWUgPSBwYXRoX3BhcnRzWzFdCiAgICBkZWwgcGF0aF9wYXJ0c1sxXQoKICAgIHNjcmlwdF9uYW1lID0gZW52aXJvbi5nZXQoJ1NDUklQVF9OQU1FJywnJykKICAgIHNjcmlwdF9uYW1lID0gcG9zaXhwYXRoLm5vcm1wYXRoKHNjcmlwdF9uYW1lKycvJytuYW1lKQogICAgaWYgc2NyaXB0X25hbWUuZW5kc3dpdGgoJy8nKToKICAgICAgICBzY3JpcHRfbmFtZSA9IHNjcmlwdF9uYW1lWzotMV0KICAgIGlmIG5vdCBuYW1lIGFuZCBub3Qgc2NyaXB0X25hbWUuZW5kc3dpdGgoJy8nKToKICAgICAgICBzY3JpcHRfbmFtZSArPSAnLycKCiAgICBlbnZpcm9uWydTQ1JJUFRfTkFNRSddID0gc2NyaXB0X25hbWUKICAgIGVudmlyb25bJ1BBVEhfSU5GTyddICAgPSAnLycuam9pbihwYXRoX3BhcnRzKQoKICAgICMgU3BlY2lhbCBjYXNlOiAnLy4nIG9uIFBBVEhfSU5GTyBkb2Vzbid0IGdldCBzdHJpcHBlZCwKICAgICMgYmVjYXVzZSB3ZSBkb24ndCBzdHJpcCB0aGUgbGFzdCBlbGVtZW50IG9mIFBBVEhfSU5GTwogICAgIyBpZiB0aGVyZSdzIG9ubHkgb25lIHBhdGggcGFydCBsZWZ0LiAgSW5zdGVhZCBvZiBmaXhpbmcgdGhpcwogICAgIyBhYm92ZSwgd2UgZml4IGl0IGhlcmUgc28gdGhhdCBQQVRIX0lORk8gZ2V0cyBub3JtYWxpemVkIHRvCiAgICAjIGFuIGVtcHR5IHN0cmluZyBpbiB0aGUgZW52aXJvbi4KICAgIGlmIG5hbWU9PScuJzoKICAgICAgICBuYW1lID0gTm9uZQogICAgcmV0dXJuIG5hbWUKCmRlZiBzZXR1cF90ZXN0aW5nX2RlZmF1bHRzKGVudmlyb24pOgogICAgIiIiVXBkYXRlICdlbnZpcm9uJyB3aXRoIHRyaXZpYWwgZGVmYXVsdHMgZm9yIHRlc3RpbmcgcHVycG9zZXMKCiAgICBUaGlzIGFkZHMgdmFyaW91cyBwYXJhbWV0ZXJzIHJlcXVpcmVkIGZvciBXU0dJLCBpbmNsdWRpbmcgSFRUUF9IT1NULAogICAgU0VSVkVSX05BTUUsIFNFUlZFUl9QT1JULCBSRVFVRVNUX01FVEhPRCwgU0NSSVBUX05BTUUsIFBBVEhfSU5GTywKICAgIGFuZCBhbGwgb2YgdGhlIHdzZ2kuKiB2YXJpYWJsZXMuICBJdCBvbmx5IHN1cHBsaWVzIGRlZmF1bHQgdmFsdWVzLAogICAgYW5kIGRvZXMgbm90IHJlcGxhY2UgYW55IGV4aXN0aW5nIHNldHRpbmdzIGZvciB0aGVzZSB2YXJpYWJsZXMuCgogICAgVGhpcyByb3V0aW5lIGlzIGludGVuZGVkIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB1bml0IHRlc3RzIG9mIFdTR0kKICAgIHNlcnZlcnMgYW5kIGFwcGxpY2F0aW9ucyB0byBzZXQgdXAgZHVtbXkgZW52aXJvbm1lbnRzLiAgSXQgc2hvdWxkICpub3QqCiAgICBiZSB1c2VkIGJ5IGFjdHVhbCBXU0dJIHNlcnZlcnMgb3IgYXBwbGljYXRpb25zLCBzaW5jZSB0aGUgZGF0YSBpcyBmYWtlIQogICAgIiIiCgogICAgZW52aXJvbi5zZXRkZWZhdWx0KCdTRVJWRVJfTkFNRScsJzEyNy4wLjAuMScpCiAgICBlbnZpcm9uLnNldGRlZmF1bHQoJ1NFUlZFUl9QUk9UT0NPTCcsJ0hUVFAvMS4wJykKCiAgICBlbnZpcm9uLnNldGRlZmF1bHQoJ0hUVFBfSE9TVCcsZW52aXJvblsnU0VSVkVSX05BTUUnXSkKICAgIGVudmlyb24uc2V0ZGVmYXVsdCgnUkVRVUVTVF9NRVRIT0QnLCdHRVQnKQoKICAgIGlmICdTQ1JJUFRfTkFNRScgbm90IGluIGVudmlyb24gYW5kICdQQVRIX0lORk8nIG5vdCBpbiBlbnZpcm9uOgogICAgICAgIGVudmlyb24uc2V0ZGVmYXVsdCgnU0NSSVBUX05BTUUnLCcnKQogICAgICAgIGVudmlyb24uc2V0ZGVmYXVsdCgnUEFUSF9JTkZPJywnLycpCgogICAgZW52aXJvbi5zZXRkZWZhdWx0KCd3c2dpLnZlcnNpb24nLCAoMSwwKSkKICAgIGVudmlyb24uc2V0ZGVmYXVsdCgnd3NnaS5ydW5fb25jZScsIDApCiAgICBlbnZpcm9uLnNldGRlZmF1bHQoJ3dzZ2kubXVsdGl0aHJlYWQnLCAwKQogICAgZW52aXJvbi5zZXRkZWZhdWx0KCd3c2dpLm11bHRpcHJvY2VzcycsIDApCgogICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIEJ5dGVzSU8KICAgIGVudmlyb24uc2V0ZGVmYXVsdCgnd3NnaS5pbnB1dCcsIEJ5dGVzSU8oKSkKICAgIGVudmlyb24uc2V0ZGVmYXVsdCgnd3NnaS5lcnJvcnMnLCBTdHJpbmdJTygpKQogICAgZW52aXJvbi5zZXRkZWZhdWx0KCd3c2dpLnVybF9zY2hlbWUnLGd1ZXNzX3NjaGVtZShlbnZpcm9uKSkKCiAgICBpZiBlbnZpcm9uWyd3c2dpLnVybF9zY2hlbWUnXT09J2h0dHAnOgogICAgICAgIGVudmlyb24uc2V0ZGVmYXVsdCgnU0VSVkVSX1BPUlQnLCAnODAnKQogICAgZWxpZiBlbnZpcm9uWyd3c2dpLnVybF9zY2hlbWUnXT09J2h0dHBzJzoKICAgICAgICBlbnZpcm9uLnNldGRlZmF1bHQoJ1NFUlZFUl9QT1JUJywgJzQ0MycpCgoKCl9ob3BwaXNoID0gewogICAgJ2Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScsICdwcm94eS1hdXRoZW50aWNhdGUnLAogICAgJ3Byb3h5LWF1dGhvcml6YXRpb24nLCAndGUnLCAndHJhaWxlcnMnLCAndHJhbnNmZXItZW5jb2RpbmcnLAogICAgJ3VwZ3JhZGUnCn0uX19jb250YWluc19fCgpkZWYgaXNfaG9wX2J5X2hvcChoZWFkZXJfbmFtZSk6CiAgICAiIiJSZXR1cm4gdHJ1ZSBpZiAnaGVhZGVyX25hbWUnIGlzIGFuIEhUVFAvMS4xICJIb3AtYnktSG9wIiBoZWFkZXIiIiIKICAgIHJldHVybiBfaG9wcGlzaChoZWFkZXJfbmFtZS5sb3dlcigpKQpQSwMEFAAAAAAAAyCjVqOvO9j5OgAA+ToAABMAAAB3c2dpcmVmL3ZhbGlkYXRlLnB5IyAoYykgMjAwNSBJYW4gQmlja2luZyBhbmQgY29udHJpYnV0b3JzOyB3cml0dGVuIGZvciBQYXN0ZSAoaHR0cDovL3B5dGhvbnBhc3RlLm9yZykKIyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiMgQWxzbyBsaWNlbmNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIDIuMDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hcGFjaGUyLjAucGhwCiMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50CiIiIgpNaWRkbGV3YXJlIHRvIGNoZWNrIGZvciBvYmVkaWVuY2UgdG8gdGhlIFdTR0kgc3BlY2lmaWNhdGlvbi4KClNvbWUgb2YgdGhlIHRoaW5ncyB0aGlzIGNoZWNrczoKCiogU2lnbmF0dXJlIG9mIHRoZSBhcHBsaWNhdGlvbiBhbmQgc3RhcnRfcmVzcG9uc2UgKGluY2x1ZGluZyB0aGF0CiAga2V5d29yZCBhcmd1bWVudHMgYXJlIG5vdCB1c2VkKS4KCiogRW52aXJvbm1lbnQgY2hlY2tzOgoKICAtIEVudmlyb25tZW50IGlzIGEgZGljdGlvbmFyeSAoYW5kIG5vdCBhIHN1YmNsYXNzKS4KCiAgLSBUaGF0IGFsbCB0aGUgcmVxdWlyZWQga2V5cyBhcmUgaW4gdGhlIGVudmlyb25tZW50OiBSRVFVRVNUX01FVEhPRCwKICAgIFNFUlZFUl9OQU1FLCBTRVJWRVJfUE9SVCwgd3NnaS52ZXJzaW9uLCB3c2dpLmlucHV0LCB3c2dpLmVycm9ycywKICAgIHdzZ2kubXVsdGl0aHJlYWQsIHdzZ2kubXVsdGlwcm9jZXNzLCB3c2dpLnJ1bl9vbmNlCgogIC0gVGhhdCBIVFRQX0NPTlRFTlRfVFlQRSBhbmQgSFRUUF9DT05URU5UX0xFTkdUSCBhcmUgbm90IGluIHRoZQogICAgZW52aXJvbm1lbnQgKHRoZXNlIGhlYWRlcnMgc2hvdWxkIGFwcGVhciBhcyBDT05URU5UX0xFTkdUSCBhbmQKICAgIENPTlRFTlRfVFlQRSkuCgogIC0gV2FybnMgaWYgUVVFUllfU1RSSU5HIGlzIG1pc3NpbmcsIGFzIHRoZSBjZ2kgbW9kdWxlIGFjdHMKICAgIHVucHJlZGljdGFibHkgaW4gdGhhdCBjYXNlLgoKICAtIFRoYXQgQ0dJLXN0eWxlIHZhcmlhYmxlcyAodGhhdCBkb24ndCBjb250YWluIGEgLikgaGF2ZQogICAgKG5vbi11bmljb2RlKSBzdHJpbmcgdmFsdWVzCgogIC0gVGhhdCB3c2dpLnZlcnNpb24gaXMgYSB0dXBsZQoKICAtIFRoYXQgd3NnaS51cmxfc2NoZW1lIGlzICdodHRwJyBvciAnaHR0cHMnIChAQDogaXMgdGhpcyB0b28KICAgIHJlc3RyaWN0aXZlPykKCiAgLSBXYXJucyBpZiB0aGUgUkVRVUVTVF9NRVRIT0QgaXMgbm90IGtub3duIChAQDogcHJvYmFibHkgdG9vCiAgICByZXN0cmljdGl2ZSkuCgogIC0gVGhhdCBTQ1JJUFRfTkFNRSBhbmQgUEFUSF9JTkZPIGFyZSBlbXB0eSBvciBzdGFydCB3aXRoIC8KCiAgLSBUaGF0IGF0IGxlYXN0IG9uZSBvZiBTQ1JJUFRfTkFNRSBvciBQQVRIX0lORk8gYXJlIHNldC4KCiAgLSBUaGF0IENPTlRFTlRfTEVOR1RIIGlzIGEgcG9zaXRpdmUgaW50ZWdlci4KCiAgLSBUaGF0IFNDUklQVF9OQU1FIGlzIG5vdCAnLycgKGl0IHNob3VsZCBiZSAnJywgYW5kIFBBVEhfSU5GTyBzaG91bGQKICAgIGJlICcvJykuCgogIC0gVGhhdCB3c2dpLmlucHV0IGhhcyB0aGUgbWV0aG9kcyByZWFkLCByZWFkbGluZSwgcmVhZGxpbmVzLCBhbmQKICAgIF9faXRlcl9fCgogIC0gVGhhdCB3c2dpLmVycm9ycyBoYXMgdGhlIG1ldGhvZHMgZmx1c2gsIHdyaXRlLCB3cml0ZWxpbmVzCgoqIFRoZSBzdGF0dXMgaXMgYSBzdHJpbmcsIGNvbnRhaW5zIGEgc3BhY2UsIHN0YXJ0cyB3aXRoIGFuIGludGVnZXIsCiAgYW5kIHRoYXQgaW50ZWdlciBpcyBpbiByYW5nZSAoPiAxMDApLgoKKiBUaGF0IHRoZSBoZWFkZXJzIGlzIGEgbGlzdCAobm90IGEgc3ViY2xhc3MsIG5vdCBhbm90aGVyIGtpbmQgb2YKICBzZXF1ZW5jZSkuCgoqIFRoYXQgdGhlIGl0ZW1zIG9mIHRoZSBoZWFkZXJzIGFyZSB0dXBsZXMgb2Ygc3RyaW5ncy4KCiogVGhhdCB0aGVyZSBpcyBubyAnc3RhdHVzJyBoZWFkZXIgKHRoYXQgaXMgdXNlZCBpbiBDR0ksIGJ1dCBub3QgaW4KICBXU0dJKS4KCiogVGhhdCB0aGUgaGVhZGVycyBkb24ndCBjb250YWluIG5ld2xpbmVzIG9yIGNvbG9ucywgZW5kIGluIF8gb3IgLSwgb3IKICBjb250YWluIGNoYXJhY3RlcnMgY29kZXMgYmVsb3cgMDM3LgoKKiBUaGF0IENvbnRlbnQtVHlwZSBpcyBnaXZlbiBpZiB0aGVyZSBpcyBjb250ZW50IChDR0kgb2Z0ZW4gaGFzIGEKICBkZWZhdWx0IGNvbnRlbnQgdHlwZSwgYnV0IFdTR0kgZG9lcyBub3QpLgoKKiBUaGF0IG5vIENvbnRlbnQtVHlwZSBpcyBnaXZlbiB3aGVuIHRoZXJlIGlzIG5vIGNvbnRlbnQgKEBAOiBpcyB0aGlzCiAgdG9vIHJlc3RyaWN0aXZlPykKCiogVGhhdCB0aGUgZXhjX2luZm8gYXJndW1lbnQgdG8gc3RhcnRfcmVzcG9uc2UgaXMgYSB0dXBsZSBvciBOb25lLgoKKiBUaGF0IGFsbCBjYWxscyB0byB0aGUgd3JpdGVyIGFyZSB3aXRoIHN0cmluZ3MsIGFuZCBubyBvdGhlciBtZXRob2RzCiAgb24gdGhlIHdyaXRlciBhcmUgYWNjZXNzZWQuCgoqIFRoYXQgd3NnaS5pbnB1dCBpcyB1c2VkIHByb3Blcmx5OgoKICAtIC5yZWFkKCkgaXMgY2FsbGVkIHdpdGggZXhhY3RseSBvbmUgYXJndW1lbnQKCiAgLSBUaGF0IGl0IHJldHVybnMgYSBzdHJpbmcKCiAgLSBUaGF0IHJlYWRsaW5lLCByZWFkbGluZXMsIGFuZCBfX2l0ZXJfXyByZXR1cm4gc3RyaW5ncwoKICAtIFRoYXQgLmNsb3NlKCkgaXMgbm90IGNhbGxlZAoKICAtIE5vIG90aGVyIG1ldGhvZHMgYXJlIHByb3ZpZGVkCgoqIFRoYXQgd3NnaS5lcnJvcnMgaXMgdXNlZCBwcm9wZXJseToKCiAgLSAud3JpdGUoKSBhbmQgLndyaXRlbGluZXMoKSBpcyBjYWxsZWQgd2l0aCBhIHN0cmluZwoKICAtIFRoYXQgLmNsb3NlKCkgaXMgbm90IGNhbGxlZCwgYW5kIG5vIG90aGVyIG1ldGhvZHMgYXJlIHByb3ZpZGVkLgoKKiBUaGUgcmVzcG9uc2UgaXRlcmF0b3I6CgogIC0gVGhhdCBpdCBpcyBub3QgYSBzdHJpbmcgKGl0IHNob3VsZCBiZSBhIGxpc3Qgb2YgYSBzaW5nbGUgc3RyaW5nOyBhCiAgICBzdHJpbmcgd2lsbCB3b3JrLCBidXQgcGVyZm9ybSBob3JyaWJseSkuCgogIC0gVGhhdCAuX19uZXh0X18oKSByZXR1cm5zIGEgc3RyaW5nCgogIC0gVGhhdCB0aGUgaXRlcmF0b3IgaXMgbm90IGl0ZXJhdGVkIG92ZXIgdW50aWwgc3RhcnRfcmVzcG9uc2UgaGFzCiAgICBiZWVuIGNhbGxlZCAodGhhdCBjYW4gc2lnbmFsIGVpdGhlciBhIHNlcnZlciBvciBhcHBsaWNhdGlvbgogICAgZXJyb3IpLgoKICAtIFRoYXQgLmNsb3NlKCkgaXMgY2FsbGVkIChkb2Vzbid0IHJhaXNlIGV4Y2VwdGlvbiwgb25seSBwcmludHMgdG8KICAgIHN5cy5zdGRlcnIsIGJlY2F1c2Ugd2Ugb25seSBrbm93IGl0IGlzbid0IGNhbGxlZCB3aGVuIHRoZSBvYmplY3QKICAgIGlzIGdhcmJhZ2UgY29sbGVjdGVkKS4KIiIiCl9fYWxsX18gPSBbJ3ZhbGlkYXRvciddCgoKaW1wb3J0IHJlCmltcG9ydCBzeXMKaW1wb3J0IHdhcm5pbmdzCgpoZWFkZXJfcmUgPSByZS5jb21waWxlKHInXlthLXpBLVpdW2EtekEtWjAtOVwtX10qJCcpCmJhZF9oZWFkZXJfdmFsdWVfcmUgPSByZS5jb21waWxlKHInW1wwMDAtXDAzN10nKQoKY2xhc3MgV1NHSVdhcm5pbmcoV2FybmluZyk6CiAgICAiIiIKICAgIFJhaXNlZCBpbiByZXNwb25zZSB0byBXU0dJLXNwZWMtcmVsYXRlZCB3YXJuaW5ncwogICAgIiIiCgpkZWYgYXNzZXJ0Xyhjb25kLCAqYXJncyk6CiAgICBpZiBub3QgY29uZDoKICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigqYXJncykKCmRlZiBjaGVja19zdHJpbmdfdHlwZSh2YWx1ZSwgdGl0bGUpOgogICAgaWYgdHlwZSAodmFsdWUpIGlzIHN0cjoKICAgICAgICByZXR1cm4gdmFsdWUKICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICJ7MH0gbXVzdCBiZSBvZiB0eXBlIHN0ciAoZ290IHsxfSkiLmZvcm1hdCh0aXRsZSwgcmVwcih2YWx1ZSkpKQoKZGVmIHZhbGlkYXRvcihhcHBsaWNhdGlvbik6CgogICAgIiIiCiAgICBXaGVuIGFwcGxpZWQgYmV0d2VlbiBhIFdTR0kgc2VydmVyIGFuZCBhIFdTR0kgYXBwbGljYXRpb24sIHRoaXMKICAgIG1pZGRsZXdhcmUgd2lsbCBjaGVjayBmb3IgV1NHSSBjb21wbGlhbmNlIG9uIGEgbnVtYmVyIG9mIGxldmVscy4KICAgIFRoaXMgbWlkZGxld2FyZSBkb2VzIG5vdCBtb2RpZnkgdGhlIHJlcXVlc3Qgb3IgcmVzcG9uc2UgaW4gYW55CiAgICB3YXksIGJ1dCB3aWxsIHJhaXNlIGFuIEFzc2VydGlvbkVycm9yIGlmIGFueXRoaW5nIHNlZW1zIG9mZgogICAgKGV4Y2VwdCBmb3IgYSBmYWlsdXJlIHRvIGNsb3NlIHRoZSBhcHBsaWNhdGlvbiBpdGVyYXRvciwgd2hpY2gKICAgIHdpbGwgYmUgcHJpbnRlZCB0byBzdGRlcnIgLS0gdGhlcmUncyBubyB3YXkgdG8gcmFpc2UgYW4gZXhjZXB0aW9uCiAgICBhdCB0aGF0IHBvaW50KS4KICAgICIiIgoKICAgIGRlZiBsaW50X2FwcCgqYXJncywgKiprdyk6CiAgICAgICAgYXNzZXJ0XyhsZW4oYXJncykgPT0gMiwgIlR3byBhcmd1bWVudHMgcmVxdWlyZWQiKQogICAgICAgIGFzc2VydF8obm90IGt3LCAiTm8ga2V5d29yZCBhcmd1bWVudHMgYWxsb3dlZCIpCiAgICAgICAgZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UgPSBhcmdzCgogICAgICAgIGNoZWNrX2Vudmlyb24oZW52aXJvbikKCiAgICAgICAgIyBXZSB1c2UgdGhpcyB0byBjaGVjayBpZiB0aGUgYXBwbGljYXRpb24gcmV0dXJucyB3aXRob3V0CiAgICAgICAgIyBjYWxsaW5nIHN0YXJ0X3Jlc3BvbnNlOgogICAgICAgIHN0YXJ0X3Jlc3BvbnNlX3N0YXJ0ZWQgPSBbXQoKICAgICAgICBkZWYgc3RhcnRfcmVzcG9uc2Vfd3JhcHBlcigqYXJncywgKiprdyk6CiAgICAgICAgICAgIGFzc2VydF8obGVuKGFyZ3MpID09IDIgb3IgbGVuKGFyZ3MpID09IDMsICgKICAgICAgICAgICAgICAgICJJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHM6ICVzIiAlIChhcmdzLCkpKQogICAgICAgICAgICBhc3NlcnRfKG5vdCBrdywgIk5vIGtleXdvcmQgYXJndW1lbnRzIGFsbG93ZWQiKQogICAgICAgICAgICBzdGF0dXMgPSBhcmdzWzBdCiAgICAgICAgICAgIGhlYWRlcnMgPSBhcmdzWzFdCiAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAzOgogICAgICAgICAgICAgICAgZXhjX2luZm8gPSBhcmdzWzJdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBleGNfaW5mbyA9IE5vbmUKCiAgICAgICAgICAgIGNoZWNrX3N0YXR1cyhzdGF0dXMpCiAgICAgICAgICAgIGNoZWNrX2hlYWRlcnMoaGVhZGVycykKICAgICAgICAgICAgY2hlY2tfY29udGVudF90eXBlKHN0YXR1cywgaGVhZGVycykKICAgICAgICAgICAgY2hlY2tfZXhjX2luZm8oZXhjX2luZm8pCgogICAgICAgICAgICBzdGFydF9yZXNwb25zZV9zdGFydGVkLmFwcGVuZChOb25lKQogICAgICAgICAgICByZXR1cm4gV3JpdGVXcmFwcGVyKHN0YXJ0X3Jlc3BvbnNlKCphcmdzKSkKCiAgICAgICAgZW52aXJvblsnd3NnaS5pbnB1dCddID0gSW5wdXRXcmFwcGVyKGVudmlyb25bJ3dzZ2kuaW5wdXQnXSkKICAgICAgICBlbnZpcm9uWyd3c2dpLmVycm9ycyddID0gRXJyb3JXcmFwcGVyKGVudmlyb25bJ3dzZ2kuZXJyb3JzJ10pCgogICAgICAgIGl0ZXJhdG9yID0gYXBwbGljYXRpb24oZW52aXJvbiwgc3RhcnRfcmVzcG9uc2Vfd3JhcHBlcikKICAgICAgICBhc3NlcnRfKGl0ZXJhdG9yIGlzIG5vdCBOb25lIGFuZCBpdGVyYXRvciAhPSBGYWxzZSwKICAgICAgICAgICAgIlRoZSBhcHBsaWNhdGlvbiBtdXN0IHJldHVybiBhbiBpdGVyYXRvciwgaWYgb25seSBhbiBlbXB0eSBsaXN0IikKCiAgICAgICAgY2hlY2tfaXRlcmF0b3IoaXRlcmF0b3IpCgogICAgICAgIHJldHVybiBJdGVyYXRvcldyYXBwZXIoaXRlcmF0b3IsIHN0YXJ0X3Jlc3BvbnNlX3N0YXJ0ZWQpCgogICAgcmV0dXJuIGxpbnRfYXBwCgpjbGFzcyBJbnB1dFdyYXBwZXI6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHdzZ2lfaW5wdXQpOgogICAgICAgIHNlbGYuaW5wdXQgPSB3c2dpX2lucHV0CgogICAgZGVmIHJlYWQoc2VsZiwgKmFyZ3MpOgogICAgICAgIGFzc2VydF8obGVuKGFyZ3MpID09IDEpCiAgICAgICAgdiA9IHNlbGYuaW5wdXQucmVhZCgqYXJncykKICAgICAgICBhc3NlcnRfKHR5cGUodikgaXMgYnl0ZXMpCiAgICAgICAgcmV0dXJuIHYKCiAgICBkZWYgcmVhZGxpbmUoc2VsZiwgKmFyZ3MpOgogICAgICAgIGFzc2VydF8obGVuKGFyZ3MpIDw9IDEpCiAgICAgICAgdiA9IHNlbGYuaW5wdXQucmVhZGxpbmUoKmFyZ3MpCiAgICAgICAgYXNzZXJ0Xyh0eXBlKHYpIGlzIGJ5dGVzKQogICAgICAgIHJldHVybiB2CgogICAgZGVmIHJlYWRsaW5lcyhzZWxmLCAqYXJncyk6CiAgICAgICAgYXNzZXJ0XyhsZW4oYXJncykgPD0gMSkKICAgICAgICBsaW5lcyA9IHNlbGYuaW5wdXQucmVhZGxpbmVzKCphcmdzKQogICAgICAgIGFzc2VydF8odHlwZShsaW5lcykgaXMgbGlzdCkKICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKICAgICAgICAgICAgYXNzZXJ0Xyh0eXBlKGxpbmUpIGlzIGJ5dGVzKQogICAgICAgIHJldHVybiBsaW5lcwoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICBsaW5lID0gc2VsZi5yZWFkbGluZSgpCiAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHlpZWxkIGxpbmUKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgYXNzZXJ0XygwLCAiaW5wdXQuY2xvc2UoKSBtdXN0IG5vdCBiZSBjYWxsZWQiKQoKY2xhc3MgRXJyb3JXcmFwcGVyOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3c2dpX2Vycm9ycyk6CiAgICAgICAgc2VsZi5lcnJvcnMgPSB3c2dpX2Vycm9ycwoKICAgIGRlZiB3cml0ZShzZWxmLCBzKToKICAgICAgICBhc3NlcnRfKHR5cGUocykgaXMgc3RyKQogICAgICAgIHNlbGYuZXJyb3JzLndyaXRlKHMpCgogICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgIHNlbGYuZXJyb3JzLmZsdXNoKCkKCiAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBzZXEpOgogICAgICAgIGZvciBsaW5lIGluIHNlcToKICAgICAgICAgICAgc2VsZi53cml0ZShsaW5lKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBhc3NlcnRfKDAsICJlcnJvcnMuY2xvc2UoKSBtdXN0IG5vdCBiZSBjYWxsZWQiKQoKY2xhc3MgV3JpdGVXcmFwcGVyOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3c2dpX3dyaXRlcik6CiAgICAgICAgc2VsZi53cml0ZXIgPSB3c2dpX3dyaXRlcgoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBzKToKICAgICAgICBhc3NlcnRfKHR5cGUocykgaXMgYnl0ZXMpCiAgICAgICAgc2VsZi53cml0ZXIocykKCmNsYXNzIFBhcnRpYWxJdGVyYXRvcldyYXBwZXI6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHdzZ2lfaXRlcmF0b3IpOgogICAgICAgIHNlbGYuaXRlcmF0b3IgPSB3c2dpX2l0ZXJhdG9yCgogICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICMgV2Ugd2FudCB0byBtYWtlIHN1cmUgX19pdGVyX18gaXMgY2FsbGVkCiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yV3JhcHBlcihzZWxmLml0ZXJhdG9yLCBOb25lKQoKY2xhc3MgSXRlcmF0b3JXcmFwcGVyOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3c2dpX2l0ZXJhdG9yLCBjaGVja19zdGFydF9yZXNwb25zZSk6CiAgICAgICAgc2VsZi5vcmlnaW5hbF9pdGVyYXRvciA9IHdzZ2lfaXRlcmF0b3IKICAgICAgICBzZWxmLml0ZXJhdG9yID0gaXRlcih3c2dpX2l0ZXJhdG9yKQogICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKICAgICAgICBzZWxmLmNoZWNrX3N0YXJ0X3Jlc3BvbnNlID0gY2hlY2tfc3RhcnRfcmVzcG9uc2UKCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgYXNzZXJ0Xyhub3Qgc2VsZi5jbG9zZWQsCiAgICAgICAgICAgICJJdGVyYXRvciByZWFkIGFmdGVyIGNsb3NlZCIpCiAgICAgICAgdiA9IG5leHQoc2VsZi5pdGVyYXRvcikKICAgICAgICBpZiB0eXBlKHYpIGlzIG5vdCBieXRlczoKICAgICAgICAgICAgYXNzZXJ0XyhGYWxzZSwgIkl0ZXJhdG9yIHlpZWxkZWQgbm9uLWJ5dGVzdHJpbmcgKCVyKSIgJSAodiwpKQogICAgICAgIGlmIHNlbGYuY2hlY2tfc3RhcnRfcmVzcG9uc2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGFzc2VydF8oc2VsZi5jaGVja19zdGFydF9yZXNwb25zZSwKICAgICAgICAgICAgICAgICJUaGUgYXBwbGljYXRpb24gcmV0dXJucyBhbmQgd2Ugc3RhcnRlZCBpdGVyYXRpbmcgb3ZlciBpdHMgYm9keSwgYnV0IHN0YXJ0X3Jlc3BvbnNlIGhhcyBub3QgeWV0IGJlZW4gY2FsbGVkIikKICAgICAgICAgICAgc2VsZi5jaGVja19zdGFydF9yZXNwb25zZSA9IE5vbmUKICAgICAgICByZXR1cm4gdgoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKICAgICAgICBpZiBoYXNhdHRyKHNlbGYub3JpZ2luYWxfaXRlcmF0b3IsICdjbG9zZScpOgogICAgICAgICAgICBzZWxmLm9yaWdpbmFsX2l0ZXJhdG9yLmNsb3NlKCkKCiAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAgICAgICAgICAgICAgICAiSXRlcmF0b3IgZ2FyYmFnZSBjb2xsZWN0ZWQgd2l0aG91dCBiZWluZyBjbG9zZWQiKQogICAgICAgIGFzc2VydF8oc2VsZi5jbG9zZWQsCiAgICAgICAgICAgICJJdGVyYXRvciBnYXJiYWdlIGNvbGxlY3RlZCB3aXRob3V0IGJlaW5nIGNsb3NlZCIpCgpkZWYgY2hlY2tfZW52aXJvbihlbnZpcm9uKToKICAgIGFzc2VydF8odHlwZShlbnZpcm9uKSBpcyBkaWN0LAogICAgICAgICJFbnZpcm9ubWVudCBpcyBub3Qgb2YgdGhlIHJpZ2h0IHR5cGU6ICVyIChlbnZpcm9ubWVudDogJXIpIgogICAgICAgICUgKHR5cGUoZW52aXJvbiksIGVudmlyb24pKQoKICAgIGZvciBrZXkgaW4gWydSRVFVRVNUX01FVEhPRCcsICdTRVJWRVJfTkFNRScsICdTRVJWRVJfUE9SVCcsCiAgICAgICAgICAgICAgICAnd3NnaS52ZXJzaW9uJywgJ3dzZ2kuaW5wdXQnLCAnd3NnaS5lcnJvcnMnLAogICAgICAgICAgICAgICAgJ3dzZ2kubXVsdGl0aHJlYWQnLCAnd3NnaS5tdWx0aXByb2Nlc3MnLAogICAgICAgICAgICAgICAgJ3dzZ2kucnVuX29uY2UnXToKICAgICAgICBhc3NlcnRfKGtleSBpbiBlbnZpcm9uLAogICAgICAgICAgICAiRW52aXJvbm1lbnQgbWlzc2luZyByZXF1aXJlZCBrZXk6ICVyIiAlIChrZXksKSkKCiAgICBmb3Iga2V5IGluIFsnSFRUUF9DT05URU5UX1RZUEUnLCAnSFRUUF9DT05URU5UX0xFTkdUSCddOgogICAgICAgIGFzc2VydF8oa2V5IG5vdCBpbiBlbnZpcm9uLAogICAgICAgICAgICAiRW52aXJvbm1lbnQgc2hvdWxkIG5vdCBoYXZlIHRoZSBrZXk6ICVzICIKICAgICAgICAgICAgIih1c2UgJXMgaW5zdGVhZCkiICUgKGtleSwga2V5WzU6XSkpCgogICAgaWYgJ1FVRVJZX1NUUklORycgbm90IGluIGVudmlyb246CiAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgJ1FVRVJZX1NUUklORyBpcyBub3QgaW4gdGhlIFdTR0kgZW52aXJvbm1lbnQ7IHRoZSBjZ2kgJwogICAgICAgICAgICAnbW9kdWxlIHdpbGwgdXNlIHN5cy5hcmd2IHdoZW4gdGhpcyB2YXJpYWJsZSBpcyBtaXNzaW5nLCAnCiAgICAgICAgICAgICdzbyBhcHBsaWNhdGlvbiBlcnJvcnMgYXJlIG1vcmUgbGlrZWx5JywKICAgICAgICAgICAgV1NHSVdhcm5pbmcpCgogICAgZm9yIGtleSBpbiBlbnZpcm9uLmtleXMoKToKICAgICAgICBpZiAnLicgaW4ga2V5OgogICAgICAgICAgICAjIEV4dGVuc2lvbiwgd2UgZG9uJ3QgY2FyZSBhYm91dCBpdHMgdHlwZQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGFzc2VydF8odHlwZShlbnZpcm9uW2tleV0pIGlzIHN0ciwKICAgICAgICAgICAgIkVudmlyb25tZW50YWwgdmFyaWFibGUgJXMgaXMgbm90IGEgc3RyaW5nOiAlciAodmFsdWU6ICVyKSIKICAgICAgICAgICAgJSAoa2V5LCB0eXBlKGVudmlyb25ba2V5XSksIGVudmlyb25ba2V5XSkpCgogICAgYXNzZXJ0Xyh0eXBlKGVudmlyb25bJ3dzZ2kudmVyc2lvbiddKSBpcyB0dXBsZSwKICAgICAgICAid3NnaS52ZXJzaW9uIHNob3VsZCBiZSBhIHR1cGxlICglcikiICUgKGVudmlyb25bJ3dzZ2kudmVyc2lvbiddLCkpCiAgICBhc3NlcnRfKGVudmlyb25bJ3dzZ2kudXJsX3NjaGVtZSddIGluICgnaHR0cCcsICdodHRwcycpLAogICAgICAgICJ3c2dpLnVybF9zY2hlbWUgdW5rbm93bjogJXIiICUgZW52aXJvblsnd3NnaS51cmxfc2NoZW1lJ10pCgogICAgY2hlY2tfaW5wdXQoZW52aXJvblsnd3NnaS5pbnB1dCddKQogICAgY2hlY2tfZXJyb3JzKGVudmlyb25bJ3dzZ2kuZXJyb3JzJ10pCgogICAgIyBAQDogdGhlc2UgbmVlZCBmaWxsaW5nIG91dDoKICAgIGlmIGVudmlyb25bJ1JFUVVFU1RfTUVUSE9EJ10gbm90IGluICgKICAgICAgICAnR0VUJywgJ0hFQUQnLCAnUE9TVCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BVVCcsICdERUxFVEUnLCAnVFJBQ0UnKToKICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAiVW5rbm93biBSRVFVRVNUX01FVEhPRDogJXIiICUgZW52aXJvblsnUkVRVUVTVF9NRVRIT0QnXSwKICAgICAgICAgICAgV1NHSVdhcm5pbmcpCgogICAgYXNzZXJ0Xyhub3QgZW52aXJvbi5nZXQoJ1NDUklQVF9OQU1FJykKICAgICAgICAgICAgb3IgZW52aXJvblsnU0NSSVBUX05BTUUnXS5zdGFydHN3aXRoKCcvJyksCiAgICAgICAgIlNDUklQVF9OQU1FIGRvZXNuJ3Qgc3RhcnQgd2l0aCAvOiAlciIgJSBlbnZpcm9uWydTQ1JJUFRfTkFNRSddKQogICAgYXNzZXJ0Xyhub3QgZW52aXJvbi5nZXQoJ1BBVEhfSU5GTycpCiAgICAgICAgICAgIG9yIGVudmlyb25bJ1BBVEhfSU5GTyddLnN0YXJ0c3dpdGgoJy8nKSwKICAgICAgICAiUEFUSF9JTkZPIGRvZXNuJ3Qgc3RhcnQgd2l0aCAvOiAlciIgJSBlbnZpcm9uWydQQVRIX0lORk8nXSkKICAgIGlmIGVudmlyb24uZ2V0KCdDT05URU5UX0xFTkdUSCcpOgogICAgICAgIGFzc2VydF8oaW50KGVudmlyb25bJ0NPTlRFTlRfTEVOR1RIJ10pID49IDAsCiAgICAgICAgICAgICJJbnZhbGlkIENPTlRFTlRfTEVOR1RIOiAlciIgJSBlbnZpcm9uWydDT05URU5UX0xFTkdUSCddKQoKICAgIGlmIG5vdCBlbnZpcm9uLmdldCgnU0NSSVBUX05BTUUnKToKICAgICAgICBhc3NlcnRfKCdQQVRIX0lORk8nIGluIGVudmlyb24sCiAgICAgICAgICAgICJPbmUgb2YgU0NSSVBUX05BTUUgb3IgUEFUSF9JTkZPIGFyZSByZXF1aXJlZCAoUEFUSF9JTkZPICIKICAgICAgICAgICAgInNob3VsZCBhdCBsZWFzdCBiZSAnLycgaWYgU0NSSVBUX05BTUUgaXMgZW1wdHkpIikKICAgIGFzc2VydF8oZW52aXJvbi5nZXQoJ1NDUklQVF9OQU1FJykgIT0gJy8nLAogICAgICAgICJTQ1JJUFRfTkFNRSBjYW5ub3QgYmUgJy8nOyBpdCBzaG91bGQgaW5zdGVhZCBiZSAnJywgYW5kICIKICAgICAgICAiUEFUSF9JTkZPIHNob3VsZCBiZSAnLyciKQoKZGVmIGNoZWNrX2lucHV0KHdzZ2lfaW5wdXQpOgogICAgZm9yIGF0dHIgaW4gWydyZWFkJywgJ3JlYWRsaW5lJywgJ3JlYWRsaW5lcycsICdfX2l0ZXJfXyddOgogICAgICAgIGFzc2VydF8oaGFzYXR0cih3c2dpX2lucHV0LCBhdHRyKSwKICAgICAgICAgICAgIndzZ2kuaW5wdXQgKCVyKSBkb2Vzbid0IGhhdmUgdGhlIGF0dHJpYnV0ZSAlcyIKICAgICAgICAgICAgJSAod3NnaV9pbnB1dCwgYXR0cikpCgpkZWYgY2hlY2tfZXJyb3JzKHdzZ2lfZXJyb3JzKToKICAgIGZvciBhdHRyIGluIFsnZmx1c2gnLCAnd3JpdGUnLCAnd3JpdGVsaW5lcyddOgogICAgICAgIGFzc2VydF8oaGFzYXR0cih3c2dpX2Vycm9ycywgYXR0ciksCiAgICAgICAgICAgICJ3c2dpLmVycm9ycyAoJXIpIGRvZXNuJ3QgaGF2ZSB0aGUgYXR0cmlidXRlICVzIgogICAgICAgICAgICAlICh3c2dpX2Vycm9ycywgYXR0cikpCgpkZWYgY2hlY2tfc3RhdHVzKHN0YXR1cyk6CiAgICBzdGF0dXMgPSBjaGVja19zdHJpbmdfdHlwZShzdGF0dXMsICJTdGF0dXMiKQogICAgIyBJbXBsaWNpdGx5IGNoZWNrIHRoYXQgd2UgY2FuIHR1cm4gaXQgaW50byBhbiBpbnRlZ2VyOgogICAgc3RhdHVzX2NvZGUgPSBzdGF0dXMuc3BsaXQoTm9uZSwgMSlbMF0KICAgIGFzc2VydF8obGVuKHN0YXR1c19jb2RlKSA9PSAzLAogICAgICAgICJTdGF0dXMgY29kZXMgbXVzdCBiZSB0aHJlZSBjaGFyYWN0ZXJzOiAlciIgJSBzdGF0dXNfY29kZSkKICAgIHN0YXR1c19pbnQgPSBpbnQoc3RhdHVzX2NvZGUpCiAgICBhc3NlcnRfKHN0YXR1c19pbnQgPj0gMTAwLCAiU3RhdHVzIGNvZGUgaXMgaW52YWxpZDogJXIiICUgc3RhdHVzX2ludCkKICAgIGlmIGxlbihzdGF0dXMpIDwgNCBvciBzdGF0dXNbM10gIT0gJyAnOgogICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICJUaGUgc3RhdHVzIHN0cmluZyAoJXIpIHNob3VsZCBiZSBhIHRocmVlLWRpZ2l0IGludGVnZXIgIgogICAgICAgICAgICAiZm9sbG93ZWQgYnkgYSBzaW5nbGUgc3BhY2UgYW5kIGEgc3RhdHVzIGV4cGxhbmF0aW9uIgogICAgICAgICAgICAlIHN0YXR1cywgV1NHSVdhcm5pbmcpCgpkZWYgY2hlY2tfaGVhZGVycyhoZWFkZXJzKToKICAgIGFzc2VydF8odHlwZShoZWFkZXJzKSBpcyBsaXN0LAogICAgICAgICJIZWFkZXJzICglcikgbXVzdCBiZSBvZiB0eXBlIGxpc3Q6ICVyIgogICAgICAgICUgKGhlYWRlcnMsIHR5cGUoaGVhZGVycykpKQogICAgZm9yIGl0ZW0gaW4gaGVhZGVyczoKICAgICAgICBhc3NlcnRfKHR5cGUoaXRlbSkgaXMgdHVwbGUsCiAgICAgICAgICAgICJJbmRpdmlkdWFsIGhlYWRlcnMgKCVyKSBtdXN0IGJlIG9mIHR5cGUgdHVwbGU6ICVyIgogICAgICAgICAgICAlIChpdGVtLCB0eXBlKGl0ZW0pKSkKICAgICAgICBhc3NlcnRfKGxlbihpdGVtKSA9PSAyKQogICAgICAgIG5hbWUsIHZhbHVlID0gaXRlbQogICAgICAgIG5hbWUgPSBjaGVja19zdHJpbmdfdHlwZShuYW1lLCAiSGVhZGVyIG5hbWUiKQogICAgICAgIHZhbHVlID0gY2hlY2tfc3RyaW5nX3R5cGUodmFsdWUsICJIZWFkZXIgdmFsdWUiKQogICAgICAgIGFzc2VydF8obmFtZS5sb3dlcigpICE9ICdzdGF0dXMnLAogICAgICAgICAgICAiVGhlIFN0YXR1cyBoZWFkZXIgY2Fubm90IGJlIHVzZWQ7IGl0IGNvbmZsaWN0cyB3aXRoIENHSSAiCiAgICAgICAgICAgICJzY3JpcHQsIGFuZCBIVFRQIHN0YXR1cyBpcyBub3QgZ2l2ZW4gdGhyb3VnaCBoZWFkZXJzICIKICAgICAgICAgICAgIih2YWx1ZTogJXIpLiIgJSB2YWx1ZSkKICAgICAgICBhc3NlcnRfKCdcbicgbm90IGluIG5hbWUgYW5kICc6JyBub3QgaW4gbmFtZSwKICAgICAgICAgICAgIkhlYWRlciBuYW1lcyBtYXkgbm90IGNvbnRhaW4gJzonIG9yICdcXG4nOiAlciIgJSBuYW1lKQogICAgICAgIGFzc2VydF8oaGVhZGVyX3JlLnNlYXJjaChuYW1lKSwgIkJhZCBoZWFkZXIgbmFtZTogJXIiICUgbmFtZSkKICAgICAgICBhc3NlcnRfKG5vdCBuYW1lLmVuZHN3aXRoKCctJykgYW5kIG5vdCBuYW1lLmVuZHN3aXRoKCdfJyksCiAgICAgICAgICAgICJOYW1lcyBtYXkgbm90IGVuZCBpbiAnLScgb3IgJ18nOiAlciIgJSBuYW1lKQogICAgICAgIGlmIGJhZF9oZWFkZXJfdmFsdWVfcmUuc2VhcmNoKHZhbHVlKToKICAgICAgICAgICAgYXNzZXJ0XygwLCAiQmFkIGhlYWRlciB2YWx1ZTogJXIgKGJhZCBjaGFyOiAlcikiCiAgICAgICAgICAgICUgKHZhbHVlLCBiYWRfaGVhZGVyX3ZhbHVlX3JlLnNlYXJjaCh2YWx1ZSkuZ3JvdXAoMCkpKQoKZGVmIGNoZWNrX2NvbnRlbnRfdHlwZShzdGF0dXMsIGhlYWRlcnMpOgogICAgc3RhdHVzID0gY2hlY2tfc3RyaW5nX3R5cGUoc3RhdHVzLCAiU3RhdHVzIikKICAgIGNvZGUgPSBpbnQoc3RhdHVzLnNwbGl0KE5vbmUsIDEpWzBdKQogICAgIyBAQDogbmVlZCBvbmUgbW9yZSBwZXJzb24gdG8gdmVyaWZ5IHRoaXMgaW50ZXJwcmV0YXRpb24gb2YgUkZDIDI2MTYKICAgICMgICAgIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbAogICAgTk9fTUVTU0FHRV9CT0RZID0gKDIwNCwgMzA0KQogICAgZm9yIG5hbWUsIHZhbHVlIGluIGhlYWRlcnM6CiAgICAgICAgbmFtZSA9IGNoZWNrX3N0cmluZ190eXBlKG5hbWUsICJIZWFkZXIgbmFtZSIpCiAgICAgICAgaWYgbmFtZS5sb3dlcigpID09ICdjb250ZW50LXR5cGUnOgogICAgICAgICAgICBpZiBjb2RlIG5vdCBpbiBOT19NRVNTQUdFX0JPRFk6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgYXNzZXJ0XygwLCAoIkNvbnRlbnQtVHlwZSBoZWFkZXIgZm91bmQgaW4gYSAlcyByZXNwb25zZSwgIgogICAgICAgICAgICAgICAgICAgICAgICAid2hpY2ggbXVzdCBub3QgcmV0dXJuIGNvbnRlbnQuIikgJSBjb2RlKQogICAgaWYgY29kZSBub3QgaW4gTk9fTUVTU0FHRV9CT0RZOgogICAgICAgIGFzc2VydF8oMCwgIk5vIENvbnRlbnQtVHlwZSBoZWFkZXIgZm91bmQgaW4gaGVhZGVycyAoJXMpIiAlIGhlYWRlcnMpCgpkZWYgY2hlY2tfZXhjX2luZm8oZXhjX2luZm8pOgogICAgYXNzZXJ0XyhleGNfaW5mbyBpcyBOb25lIG9yIHR5cGUoZXhjX2luZm8pIGlzIHR1cGxlLAogICAgICAgICJleGNfaW5mbyAoJXIpIGlzIG5vdCBhIHR1cGxlOiAlciIgJSAoZXhjX2luZm8sIHR5cGUoZXhjX2luZm8pKSkKICAgICMgTW9yZSBleGNfaW5mbyBjaGVja3M/CgpkZWYgY2hlY2tfaXRlcmF0b3IoaXRlcmF0b3IpOgogICAgIyBUZWNobmljYWxseSBhIGJ5dGVzdHJpbmcgaXMgbGVnYWwsIHdoaWNoIGlzIHdoeSBpdCdzIGEgcmVhbGx5IGJhZAogICAgIyBpZGVhLCBiZWNhdXNlIGl0IG1heSBjYXVzZSB0aGUgcmVzcG9uc2UgdG8gYmUgcmV0dXJuZWQKICAgICMgY2hhcmFjdGVyLWJ5LWNoYXJhY3RlcgogICAgYXNzZXJ0Xyhub3QgaXNpbnN0YW5jZShpdGVyYXRvciwgKHN0ciwgYnl0ZXMpKSwKICAgICAgICAiWW91IHNob3VsZCBub3QgcmV0dXJuIGEgc3RyaW5nIGFzIHlvdXIgYXBwbGljYXRpb24gaXRlcmF0b3IsICIKICAgICAgICAiaW5zdGVhZCByZXR1cm4gYSBzaW5nbGUtaXRlbSBsaXN0IGNvbnRhaW5pbmcgYSBieXRlc3RyaW5nLiIpClBLAwQUAAAAAAAEIKNWAAAAAAAAAAAAAAAACAAAAHhtbC9kb20vUEsDBBQAAAAAAAQgo1YAAAAAAAAAAAAAAAAKAAAAeG1sL2V0cmVlL1BLAwQUAAAAAAAEIKNWAAAAAAAAAAAAAAAADAAAAHhtbC9wYXJzZXJzL1BLAwQUAAAAAAAEIKNWAAAAAAAAAAAAAAAACAAAAHhtbC9zYXgvUEsDBBQAAAAAAAMgo1ZADItYLQIAAC0CAAAPAAAAeG1sL19faW5pdF9fLnB5IiIiQ29yZSBYTUwgc3VwcG9ydCBmb3IgUHl0aG9uLgoKVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGZvdXIgc3ViLXBhY2thZ2VzOgoKZG9tIC0tIFRoZSBXM0MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLiAgVGhpcyBzdXBwb3J0cyBET00gTGV2ZWwgMSArCiAgICAgICBOYW1lc3BhY2VzLgoKcGFyc2VycyAtLSBQeXRob24gd3JhcHBlcnMgZm9yIFhNTCBwYXJzZXJzIChjdXJyZW50bHkgb25seSBzdXBwb3J0cyBFeHBhdCkuCgpzYXggLS0gVGhlIFNpbXBsZSBBUEkgZm9yIFhNTCwgZGV2ZWxvcGVkIGJ5IFhNTC1EZXYsIGxlZCBieSBEYXZpZAogICAgICAgTWVnZ2luc29uIGFuZCBwb3J0ZWQgdG8gUHl0aG9uIGJ5IExhcnMgTWFyaXVzIEdhcnNob2wuICBUaGlzCiAgICAgICBzdXBwb3J0cyB0aGUgU0FYIDIgQVBJLgoKZXRyZWUgLS0gVGhlIEVsZW1lbnRUcmVlIFhNTCBsaWJyYXJ5LiAgVGhpcyBpcyBhIHN1YnNldCBvZiB0aGUgZnVsbAogICAgICAgRWxlbWVudFRyZWUgWE1MIHJlbGVhc2UuCgoiIiIKCgpfX2FsbF9fID0gWyJkb20iLCAicGFyc2VycyIsICJzYXgiLCAiZXRyZWUiXQpQSwMEFAAAAAAAAyCjVm3HbXSoAwAAqAMAABUAAAB4bWwvZG9tL05vZGVGaWx0ZXIucHkjIFRoaXMgaXMgdGhlIFB5dGhvbiBtYXBwaW5nIGZvciBpbnRlcmZhY2UgTm9kZUZpbHRlciBmcm9tCiMgRE9NMi1UcmF2ZXJzYWwtUmFuZ2UuIEl0IGNvbnRhaW5zIG9ubHkgY29uc3RhbnRzLgoKY2xhc3MgTm9kZUZpbHRlcjoKICAgICIiIgogICAgVGhpcyBpcyB0aGUgRE9NMiBOb2RlRmlsdGVyIGludGVyZmFjZS4gSXQgY29udGFpbnMgb25seSBjb25zdGFudHMuCiAgICAiIiIKICAgIEZJTFRFUl9BQ0NFUFQgPSAxCiAgICBGSUxURVJfUkVKRUNUID0gMgogICAgRklMVEVSX1NLSVAgICA9IDMKCiAgICBTSE9XX0FMTCAgICAgICAgICAgICAgICAgICAgPSAweEZGRkZGRkZGCiAgICBTSE9XX0VMRU1FTlQgICAgICAgICAgICAgICAgPSAweDAwMDAwMDAxCiAgICBTSE9XX0FUVFJJQlVURSAgICAgICAgICAgICAgPSAweDAwMDAwMDAyCiAgICBTSE9XX1RFWFQgICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMDA0CiAgICBTSE9XX0NEQVRBX1NFQ1RJT04gICAgICAgICAgPSAweDAwMDAwMDA4CiAgICBTSE9XX0VOVElUWV9SRUZFUkVOQ0UgICAgICAgPSAweDAwMDAwMDEwCiAgICBTSE9XX0VOVElUWSAgICAgICAgICAgICAgICAgPSAweDAwMDAwMDIwCiAgICBTSE9XX1BST0NFU1NJTkdfSU5TVFJVQ1RJT04gPSAweDAwMDAwMDQwCiAgICBTSE9XX0NPTU1FTlQgICAgICAgICAgICAgICAgPSAweDAwMDAwMDgwCiAgICBTSE9XX0RPQ1VNRU5UICAgICAgICAgICAgICAgPSAweDAwMDAwMTAwCiAgICBTSE9XX0RPQ1VNRU5UX1RZUEUgICAgICAgICAgPSAweDAwMDAwMjAwCiAgICBTSE9XX0RPQ1VNRU5UX0ZSQUdNRU5UICAgICAgPSAweDAwMDAwNDAwCiAgICBTSE9XX05PVEFUSU9OICAgICAgICAgICAgICAgPSAweDAwMDAwODAwCgogICAgZGVmIGFjY2VwdE5vZGUoc2VsZiwgbm9kZSk6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgpQSwMEFAAAAAAAAyCjVr8ZrMizDwAAsw8AABMAAAB4bWwvZG9tL19faW5pdF9fLnB5IiIiVzNDIERvY3VtZW50IE9iamVjdCBNb2RlbCBpbXBsZW1lbnRhdGlvbiBmb3IgUHl0aG9uLgoKVGhlIFB5dGhvbiBtYXBwaW5nIG9mIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwgaXMgZG9jdW1lbnRlZCBpbiB0aGUKUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlIGluIHRoZSBzZWN0aW9uIG9uIHRoZSB4bWwuZG9tIHBhY2thZ2UuCgpUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBtb2R1bGVzOgoKbWluaWRvbSAtLSBBIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGV2ZWwgMSBET00gd2l0aCBuYW1lc3BhY2UKICAgICAgICAgICBzdXBwb3J0IGFkZGVkIChiYXNlZCBvbiB0aGUgTGV2ZWwgMiBzcGVjaWZpY2F0aW9uKSBhbmQgb3RoZXIKICAgICAgICAgICBtaW5vciBMZXZlbCAyIGZ1bmN0aW9uYWxpdHkuCgpwdWxsZG9tIC0tIERPTSBidWlsZGVyIHN1cHBvcnRpbmcgb24tZGVtYW5kIHRyZWUtYnVpbGRpbmcgZm9yIHNlbGVjdGVkCiAgICAgICAgICAgc3VidHJlZXMgb2YgdGhlIGRvY3VtZW50LgoKIiIiCgoKY2xhc3MgTm9kZToKICAgICIiIkNsYXNzIGdpdmluZyB0aGUgTm9kZVR5cGUgY29uc3RhbnRzLiIiIgogICAgX19zbG90c19fID0gKCkKCiAgICAjIERPTSBpbXBsZW1lbnRhdGlvbnMgbWF5IHVzZSB0aGlzIGFzIGEgYmFzZSBjbGFzcyBmb3IgdGhlaXIgb3duCiAgICAjIE5vZGUgaW1wbGVtZW50YXRpb25zLiAgSWYgdGhleSBkb24ndCwgdGhlIGNvbnN0YW50cyBkZWZpbmVkIGhlcmUKICAgICMgc2hvdWxkIHN0aWxsIGJlIHVzZWQgYXMgdGhlIGNhbm9uaWNhbCBkZWZpbml0aW9ucyBhcyB0aGV5IG1hdGNoCiAgICAjIHRoZSB2YWx1ZXMgZ2l2ZW4gaW4gdGhlIFczQyByZWNvbW1lbmRhdGlvbi4gIENsaWVudCBjb2RlIGNhbgogICAgIyBzYWZlbHkgcmVmZXIgdG8gdGhlc2UgdmFsdWVzIGluIGFsbCB0ZXN0cyBvZiBOb2RlLm5vZGVUeXBlCiAgICAjIHZhbHVlcy4KCiAgICBFTEVNRU5UX05PREUgICAgICAgICAgICAgICAgPSAxCiAgICBBVFRSSUJVVEVfTk9ERSAgICAgICAgICAgICAgPSAyCiAgICBURVhUX05PREUgICAgICAgICAgICAgICAgICAgPSAzCiAgICBDREFUQV9TRUNUSU9OX05PREUgICAgICAgICAgPSA0CiAgICBFTlRJVFlfUkVGRVJFTkNFX05PREUgICAgICAgPSA1CiAgICBFTlRJVFlfTk9ERSAgICAgICAgICAgICAgICAgPSA2CiAgICBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgPSA3CiAgICBDT01NRU5UX05PREUgICAgICAgICAgICAgICAgPSA4CiAgICBET0NVTUVOVF9OT0RFICAgICAgICAgICAgICAgPSA5CiAgICBET0NVTUVOVF9UWVBFX05PREUgICAgICAgICAgPSAxMAogICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgICAgID0gMTEKICAgIE5PVEFUSU9OX05PREUgICAgICAgICAgICAgICA9IDEyCgoKI0V4Y2VwdGlvbkNvZGUKSU5ERVhfU0laRV9FUlIgICAgICAgICAgICAgICAgID0gMQpET01TVFJJTkdfU0laRV9FUlIgICAgICAgICAgICAgPSAyCkhJRVJBUkNIWV9SRVFVRVNUX0VSUiAgICAgICAgICA9IDMKV1JPTkdfRE9DVU1FTlRfRVJSICAgICAgICAgICAgID0gNApJTlZBTElEX0NIQVJBQ1RFUl9FUlIgICAgICAgICAgPSA1Ck5PX0RBVEFfQUxMT1dFRF9FUlIgICAgICAgICAgICA9IDYKTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSICAgID0gNwpOT1RfRk9VTkRfRVJSICAgICAgICAgICAgICAgICAgPSA4Ck5PVF9TVVBQT1JURURfRVJSICAgICAgICAgICAgICA9IDkKSU5VU0VfQVRUUklCVVRFX0VSUiAgICAgICAgICAgID0gMTAKSU5WQUxJRF9TVEFURV9FUlIgICAgICAgICAgICAgID0gMTEKU1lOVEFYX0VSUiAgICAgICAgICAgICAgICAgICAgID0gMTIKSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSICAgICAgID0gMTMKTkFNRVNQQUNFX0VSUiAgICAgICAgICAgICAgICAgID0gMTQKSU5WQUxJRF9BQ0NFU1NfRVJSICAgICAgICAgICAgID0gMTUKVkFMSURBVElPTl9FUlIgICAgICAgICAgICAgICAgID0gMTYKCgpjbGFzcyBET01FeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIERPTSBleGNlcHRpb25zLgogICAgRXhjZXB0aW9ucyB3aXRoIHNwZWNpZmljIGNvZGVzIGFyZSBzcGVjaWFsaXphdGlvbnMgb2YgdGhpcyBjbGFzcy4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgIGlmIHNlbGYuX19jbGFzc19fIGlzIERPTUV4Y2VwdGlvbjoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgIkRPTUV4Y2VwdGlvbiBzaG91bGQgbm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseSIpCiAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQoKICAgIGRlZiBfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuY29kZQoKCmNsYXNzIEluZGV4U2l6ZUVycihET01FeGNlcHRpb24pOgogICAgY29kZSA9IElOREVYX1NJWkVfRVJSCgpjbGFzcyBEb21zdHJpbmdTaXplRXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gRE9NU1RSSU5HX1NJWkVfRVJSCgpjbGFzcyBIaWVyYXJjaHlSZXF1ZXN0RXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSCgpjbGFzcyBXcm9uZ0RvY3VtZW50RXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gV1JPTkdfRE9DVU1FTlRfRVJSCgpjbGFzcyBJbnZhbGlkQ2hhcmFjdGVyRXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSCgpjbGFzcyBOb0RhdGFBbGxvd2VkRXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gTk9fREFUQV9BTExPV0VEX0VSUgoKY2xhc3MgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSCgpjbGFzcyBOb3RGb3VuZEVycihET01FeGNlcHRpb24pOgogICAgY29kZSA9IE5PVF9GT1VORF9FUlIKCmNsYXNzIE5vdFN1cHBvcnRlZEVycihET01FeGNlcHRpb24pOgogICAgY29kZSA9IE5PVF9TVVBQT1JURURfRVJSCgpjbGFzcyBJbnVzZUF0dHJpYnV0ZUVycihET01FeGNlcHRpb24pOgogICAgY29kZSA9IElOVVNFX0FUVFJJQlVURV9FUlIKCmNsYXNzIEludmFsaWRTdGF0ZUVycihET01FeGNlcHRpb24pOgogICAgY29kZSA9IElOVkFMSURfU1RBVEVfRVJSCgpjbGFzcyBTeW50YXhFcnIoRE9NRXhjZXB0aW9uKToKICAgIGNvZGUgPSBTWU5UQVhfRVJSCgpjbGFzcyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSCgpjbGFzcyBOYW1lc3BhY2VFcnIoRE9NRXhjZXB0aW9uKToKICAgIGNvZGUgPSBOQU1FU1BBQ0VfRVJSCgpjbGFzcyBJbnZhbGlkQWNjZXNzRXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gSU5WQUxJRF9BQ0NFU1NfRVJSCgpjbGFzcyBWYWxpZGF0aW9uRXJyKERPTUV4Y2VwdGlvbik6CiAgICBjb2RlID0gVkFMSURBVElPTl9FUlIKCmNsYXNzIFVzZXJEYXRhSGFuZGxlcjoKICAgICIiIkNsYXNzIGdpdmluZyB0aGUgb3BlcmF0aW9uIGNvbnN0YW50cyBmb3IgVXNlckRhdGFIYW5kbGVyLmhhbmRsZSgpLiIiIgoKICAgICMgQmFzZWQgb24gRE9NIExldmVsIDMgKFdEIDkgQXByaWwgMjAwMikKCiAgICBOT0RFX0NMT05FRCAgID0gMQogICAgTk9ERV9JTVBPUlRFRCA9IDIKICAgIE5PREVfREVMRVRFRCAgPSAzCiAgICBOT0RFX1JFTkFNRUQgID0gNAoKWE1MX05BTUVTUEFDRSA9ICJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiClhNTE5TX05BTUVTUEFDRSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIKWEhUTUxfTkFNRVNQQUNFID0gImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCkVNUFRZX05BTUVTUEFDRSA9IE5vbmUKRU1QVFlfUFJFRklYID0gTm9uZQoKZnJvbSAuZG9tcmVnIGltcG9ydCBnZXRET01JbXBsZW1lbnRhdGlvbiwgcmVnaXN0ZXJET01JbXBsZW1lbnRhdGlvbgpQSwMEFAAAAAAAAyCjVnh3DtF7DQAAew0AABEAAAB4bWwvZG9tL2RvbXJlZy5weSIiIlJlZ2lzdHJhdGlvbiBmYWNpbGl0aWVzIGZvciBET00uIFRoaXMgbW9kdWxlIHNob3VsZCBub3QgYmUgdXNlZApkaXJlY3RseS4gSW5zdGVhZCwgdGhlIGZ1bmN0aW9ucyBnZXRET01JbXBsZW1lbnRhdGlvbiBhbmQKcmVnaXN0ZXJET01JbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgaW1wb3J0ZWQgZnJvbSB4bWwuZG9tLiIiIgoKIyBUaGlzIGlzIGEgbGlzdCBvZiB3ZWxsLWtub3duIGltcGxlbWVudGF0aW9ucy4gIFdlbGwta25vd24gbmFtZXMKIyBzaG91bGQgYmUgcHVibGlzaGVkIGJ5IHBvc3RpbmcgdG8geG1sLXNpZ0BweXRob24ub3JnLCBhbmQgYXJlCiMgc3Vic2VxdWVudGx5IHJlY29yZGVkIGluIHRoaXMgZmlsZS4KCmltcG9ydCBzeXMKCndlbGxfa25vd25faW1wbGVtZW50YXRpb25zID0gewogICAgJ21pbmlkb20nOid4bWwuZG9tLm1pbmlkb20nLAogICAgJzRET00nOiAneG1sLmRvbS5ET01JbXBsZW1lbnRhdGlvbicsCiAgICB9CgojIERPTSBpbXBsZW1lbnRhdGlvbnMgbm90IG9mZmljaWFsbHkgcmVnaXN0ZXJlZCBzaG91bGQgcmVnaXN0ZXIKIyB0aGVtc2VsdmVzIHdpdGggdGhlaXIKCnJlZ2lzdGVyZWQgPSB7fQoKZGVmIHJlZ2lzdGVyRE9NSW1wbGVtZW50YXRpb24obmFtZSwgZmFjdG9yeSk6CiAgICAiIiJyZWdpc3RlckRPTUltcGxlbWVudGF0aW9uKG5hbWUsIGZhY3RvcnkpCgogICAgUmVnaXN0ZXIgdGhlIGZhY3RvcnkgZnVuY3Rpb24gd2l0aCB0aGUgbmFtZS4gVGhlIGZhY3RvcnkgZnVuY3Rpb24KICAgIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0IHdoaWNoIGltcGxlbWVudHMgdGhlIERPTUltcGxlbWVudGF0aW9uCiAgICBpbnRlcmZhY2UuIFRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNhbiBlaXRoZXIgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCwKICAgIG9yIGEgbmV3IG9uZSAoZS5nLiBpZiB0aGF0IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHNvbWUKICAgIGN1c3RvbWl6YXRpb24pLiIiIgoKICAgIHJlZ2lzdGVyZWRbbmFtZV0gPSBmYWN0b3J5CgpkZWYgX2dvb2RfZW5vdWdoKGRvbSwgZmVhdHVyZXMpOgogICAgIl9nb29kX2Vub3VnaChkb20sIGZlYXR1cmVzKSAtPiBSZXR1cm4gMSBpZiB0aGUgZG9tIG9mZmVycyB0aGUgZmVhdHVyZXMiCiAgICBmb3IgZix2IGluIGZlYXR1cmVzOgogICAgICAgIGlmIG5vdCBkb20uaGFzRmVhdHVyZShmLHYpOgogICAgICAgICAgICByZXR1cm4gMAogICAgcmV0dXJuIDEKCmRlZiBnZXRET01JbXBsZW1lbnRhdGlvbihuYW1lPU5vbmUsIGZlYXR1cmVzPSgpKToKICAgICIiImdldERPTUltcGxlbWVudGF0aW9uKG5hbWUgPSBOb25lLCBmZWF0dXJlcyA9ICgpKSAtPiBET00gaW1wbGVtZW50YXRpb24uCgogICAgUmV0dXJuIGEgc3VpdGFibGUgRE9NIGltcGxlbWVudGF0aW9uLiBUaGUgbmFtZSBpcyBlaXRoZXIKICAgIHdlbGwta25vd24sIHRoZSBtb2R1bGUgbmFtZSBvZiBhIERPTSBpbXBsZW1lbnRhdGlvbiwgb3IgTm9uZS4gSWYKICAgIGl0IGlzIG5vdCBOb25lLCBpbXBvcnRzIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSBhbmQgcmV0dXJucwogICAgRE9NSW1wbGVtZW50YXRpb24gb2JqZWN0IGlmIHRoZSBpbXBvcnQgc3VjY2VlZHMuCgogICAgSWYgbmFtZSBpcyBub3QgZ2l2ZW4sIGNvbnNpZGVyIHRoZSBhdmFpbGFibGUgaW1wbGVtZW50YXRpb25zIHRvCiAgICBmaW5kIG9uZSB3aXRoIHRoZSByZXF1aXJlZCBmZWF0dXJlIHNldC4gSWYgbm8gaW1wbGVtZW50YXRpb24gY2FuCiAgICBiZSBmb3VuZCwgcmFpc2UgYW4gSW1wb3J0RXJyb3IuIFRoZSBmZWF0dXJlcyBsaXN0IG11c3QgYmUgYSBzZXF1ZW5jZQogICAgb2YgKGZlYXR1cmUsIHZlcnNpb24pIHBhaXJzIHdoaWNoIGFyZSBwYXNzZWQgdG8gaGFzRmVhdHVyZS4iIiIKCiAgICBpbXBvcnQgb3MKICAgIGNyZWF0b3IgPSBOb25lCiAgICBtb2QgPSB3ZWxsX2tub3duX2ltcGxlbWVudGF0aW9ucy5nZXQobmFtZSkKICAgIGlmIG1vZDoKICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKG1vZCwge30sIHt9LCBbJ2dldERPTUltcGxlbWVudGF0aW9uJ10pCiAgICAgICAgcmV0dXJuIG1vZC5nZXRET01JbXBsZW1lbnRhdGlvbigpCiAgICBlbGlmIG5hbWU6CiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyZWRbbmFtZV0oKQogICAgZWxpZiBub3Qgc3lzLmZsYWdzLmlnbm9yZV9lbnZpcm9ubWVudCBhbmQgIlBZVEhPTl9ET00iIGluIG9zLmVudmlyb246CiAgICAgICAgcmV0dXJuIGdldERPTUltcGxlbWVudGF0aW9uKG5hbWUgPSBvcy5lbnZpcm9uWyJQWVRIT05fRE9NIl0pCgogICAgIyBVc2VyIGRpZCBub3Qgc3BlY2lmeSBhIG5hbWUsIHRyeSBpbXBsZW1lbnRhdGlvbnMgaW4gYXJiaXRyYXJ5CiAgICAjIG9yZGVyLCByZXR1cm5pbmcgdGhlIG9uZSB0aGF0IGhhcyB0aGUgcmVxdWlyZWQgZmVhdHVyZXMKICAgIGlmIGlzaW5zdGFuY2UoZmVhdHVyZXMsIHN0cik6CiAgICAgICAgZmVhdHVyZXMgPSBfcGFyc2VfZmVhdHVyZV9zdHJpbmcoZmVhdHVyZXMpCiAgICBmb3IgY3JlYXRvciBpbiByZWdpc3RlcmVkLnZhbHVlcygpOgogICAgICAgIGRvbSA9IGNyZWF0b3IoKQogICAgICAgIGlmIF9nb29kX2Vub3VnaChkb20sIGZlYXR1cmVzKToKICAgICAgICAgICAgcmV0dXJuIGRvbQoKICAgIGZvciBjcmVhdG9yIGluIHdlbGxfa25vd25faW1wbGVtZW50YXRpb25zLmtleXMoKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRvbSA9IGdldERPTUltcGxlbWVudGF0aW9uKG5hbWUgPSBjcmVhdG9yKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246ICMgdHlwaWNhbGx5IEltcG9ydEVycm9yLCBvciBBdHRyaWJ1dGVFcnJvcgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIF9nb29kX2Vub3VnaChkb20sIGZlYXR1cmVzKToKICAgICAgICAgICAgcmV0dXJuIGRvbQoKICAgIHJhaXNlIEltcG9ydEVycm9yKCJubyBzdWl0YWJsZSBET00gaW1wbGVtZW50YXRpb24gZm91bmQiKQoKZGVmIF9wYXJzZV9mZWF0dXJlX3N0cmluZyhzKToKICAgIGZlYXR1cmVzID0gW10KICAgIHBhcnRzID0gcy5zcGxpdCgpCiAgICBpID0gMAogICAgbGVuZ3RoID0gbGVuKHBhcnRzKQogICAgd2hpbGUgaSA8IGxlbmd0aDoKICAgICAgICBmZWF0dXJlID0gcGFydHNbaV0KICAgICAgICBpZiBmZWF0dXJlWzBdIGluICIwMTIzNDU2Nzg5IjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmFkIGZlYXR1cmUgbmFtZTogJXIiICUgKGZlYXR1cmUsKSkKICAgICAgICBpID0gaSArIDEKICAgICAgICB2ZXJzaW9uID0gTm9uZQogICAgICAgIGlmIGkgPCBsZW5ndGg6CiAgICAgICAgICAgIHYgPSBwYXJ0c1tpXQogICAgICAgICAgICBpZiB2WzBdIGluICIwMTIzNDU2Nzg5IjoKICAgICAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgICAgICAgICAgdmVyc2lvbiA9IHYKICAgICAgICBmZWF0dXJlcy5hcHBlbmQoKGZlYXR1cmUsIHZlcnNpb24pKQogICAgcmV0dXJuIHR1cGxlKGZlYXR1cmVzKQpQSwMEFAAAAAAAAyCjVhtk0QO3iwAAt4sAABcAAAB4bWwvZG9tL2V4cGF0YnVpbGRlci5weSIiIkZhY2lsaXR5IHRvIHVzZSB0aGUgRXhwYXQgcGFyc2VyIHRvIGxvYWQgYSBtaW5pZG9tIGluc3RhbmNlCmZyb20gYSBzdHJpbmcgb3IgZmlsZS4KClRoaXMgYXZvaWRzIGFsbCB0aGUgb3ZlcmhlYWQgb2YgU0FYIGFuZCBwdWxsZG9tIHRvIGdhaW4gcGVyZm9ybWFuY2UuCiIiIgoKIyBXYXJuaW5nIQojCiMgVGhpcyBtb2R1bGUgaXMgdGlnaHRseSBib3VuZCB0byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUKIyBtaW5pZG9tIERPTSBhbmQgY2FuJ3QgYmUgdXNlZCB3aXRoIG90aGVyIERPTSBpbXBsZW1lbnRhdGlvbnMuICBUaGlzCiMgaXMgZHVlLCBpbiBwYXJ0LCB0byBhIGxhY2sgb2YgYXBwcm9wcmlhdGUgbWV0aG9kcyBpbiB0aGUgRE9NICh0aGVyZSBpcwojIG5vIHdheSB0byBjcmVhdGUgRW50aXR5IGFuZCBOb3RhdGlvbiBub2RlcyB2aWEgdGhlIERPTSBMZXZlbCAyCiMgaW50ZXJmYWNlKSwgYW5kIGZvciBwZXJmb3JtYW5jZS4gIFRoZSBsYXR0ZXIgaXMgdGhlIGNhdXNlIG9mIHNvbWUgZmFpcmx5CiMgY3J5cHRpYyBjb2RlLgojCiMgUGVyZm9ybWFuY2UgaGFja3M6CiMKIyAgIC0gIC5jaGFyYWN0ZXJfZGF0YV9oYW5kbGVyKCkgaGFzIGFuIGV4dHJhIGNhc2UgaW4gd2hpY2ggY29udGludWluZwojICAgICAgZGF0YSBpcyBhcHBlbmRlZCB0byBhbiBleGlzdGluZyBUZXh0IG5vZGU7IHRoaXMgY2FuIGJlIGEKIyAgICAgIHNwZWVkdXAgc2luY2UgcHlleHBhdCBjYW4gYnJlYWsgdXAgY2hhcmFjdGVyIGRhdGEgaW50byBtdWx0aXBsZQojICAgICAgY2FsbGJhY2tzIGV2ZW4gdGhvdWdoIHdlIHNldCB0aGUgYnVmZmVyX3RleHQgYXR0cmlidXRlIG9uIHRoZQojICAgICAgcGFyc2VyLiAgVGhpcyBhbHNvIGdpdmVzIHVzIHRoZSBhZHZhbnRhZ2UgdGhhdCB3ZSBkb24ndCBuZWVkIGEKIyAgICAgIHNlcGFyYXRlIG5vcm1hbGl6YXRpb24gcGFzcy4KIwojICAgLSAgRGV0ZXJtaW5pbmcgdGhhdCBhIG5vZGUgZXhpc3RzIGlzIGRvbmUgdXNpbmcgYW4gaWRlbnRpdHkgY29tcGFyaXNvbgojICAgICAgd2l0aCBOb25lIHJhdGhlciB0aGFuIGEgdHJ1dGggdGVzdDsgdGhpcyBhdm9pZHMgc2VhcmNoaW5nIGZvciBhbmQKIyAgICAgIGNhbGxpbmcgYW55IG1ldGhvZHMgb24gdGhlIG5vZGUgb2JqZWN0IGlmIGl0IGV4aXN0cy4gIChBIHJhdGhlcgojICAgICAgbmljZSBzcGVlZHVwIGlzIGFjaGlldmVkIHRoaXMgd2F5IGFzIHdlbGwhKQoKZnJvbSB4bWwuZG9tIGltcG9ydCB4bWxidWlsZGVyLCBtaW5pZG9tLCBOb2RlCmZyb20geG1sLmRvbSBpbXBvcnQgRU1QVFlfTkFNRVNQQUNFLCBFTVBUWV9QUkVGSVgsIFhNTE5TX05BTUVTUEFDRQpmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdApmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgX2FwcGVuZF9jaGlsZCwgX3NldF9hdHRyaWJ1dGVfbm9kZQpmcm9tIHhtbC5kb20uTm9kZUZpbHRlciBpbXBvcnQgTm9kZUZpbHRlcgoKVEVYVF9OT0RFID0gTm9kZS5URVhUX05PREUKQ0RBVEFfU0VDVElPTl9OT0RFID0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUKRE9DVU1FTlRfTk9ERSA9IE5vZGUuRE9DVU1FTlRfTk9ERQoKRklMVEVSX0FDQ0VQVCA9IHhtbGJ1aWxkZXIuRE9NQnVpbGRlckZpbHRlci5GSUxURVJfQUNDRVBUCkZJTFRFUl9SRUpFQ1QgPSB4bWxidWlsZGVyLkRPTUJ1aWxkZXJGaWx0ZXIuRklMVEVSX1JFSkVDVApGSUxURVJfU0tJUCA9IHhtbGJ1aWxkZXIuRE9NQnVpbGRlckZpbHRlci5GSUxURVJfU0tJUApGSUxURVJfSU5URVJSVVBUID0geG1sYnVpbGRlci5ET01CdWlsZGVyRmlsdGVyLkZJTFRFUl9JTlRFUlJVUFQKCnRoZURPTUltcGxlbWVudGF0aW9uID0gbWluaWRvbS5nZXRET01JbXBsZW1lbnRhdGlvbigpCgojIEV4cGF0IHR5cGVuYW1lIC0+IFR5cGVJbmZvCl90eXBlaW5mb19tYXAgPSB7CiAgICAiQ0RBVEEiOiAgICBtaW5pZG9tLlR5cGVJbmZvKE5vbmUsICJjZGF0YSIpLAogICAgIkVOVU0iOiAgICAgbWluaWRvbS5UeXBlSW5mbyhOb25lLCAiZW51bWVyYXRpb24iKSwKICAgICJFTlRJVFkiOiAgIG1pbmlkb20uVHlwZUluZm8oTm9uZSwgImVudGl0eSIpLAogICAgIkVOVElUSUVTIjogbWluaWRvbS5UeXBlSW5mbyhOb25lLCAiZW50aXRpZXMiKSwKICAgICJJRCI6ICAgICAgIG1pbmlkb20uVHlwZUluZm8oTm9uZSwgImlkIiksCiAgICAiSURSRUYiOiAgICBtaW5pZG9tLlR5cGVJbmZvKE5vbmUsICJpZHJlZiIpLAogICAgIklEUkVGUyI6ICAgbWluaWRvbS5UeXBlSW5mbyhOb25lLCAiaWRyZWZzIiksCiAgICAiTk1UT0tFTiI6ICBtaW5pZG9tLlR5cGVJbmZvKE5vbmUsICJubXRva2VuIiksCiAgICAiTk1UT0tFTlMiOiBtaW5pZG9tLlR5cGVJbmZvKE5vbmUsICJubXRva2VucyIpLAogICAgfQoKY2xhc3MgRWxlbWVudEluZm8ob2JqZWN0KToKICAgIF9fc2xvdHNfXyA9ICdfYXR0cl9pbmZvJywgJ19tb2RlbCcsICd0YWdOYW1lJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWdOYW1lLCBtb2RlbD1Ob25lKToKICAgICAgICBzZWxmLnRhZ05hbWUgPSB0YWdOYW1lCiAgICAgICAgc2VsZi5fYXR0cl9pbmZvID0gW10KICAgICAgICBzZWxmLl9tb2RlbCA9IG1vZGVsCgogICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYXR0cl9pbmZvLCBzZWxmLl9tb2RlbCwgc2VsZi50YWdOYW1lCgogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgc2VsZi5fYXR0cl9pbmZvLCBzZWxmLl9tb2RlbCwgc2VsZi50YWdOYW1lID0gc3RhdGUKCiAgICBkZWYgZ2V0QXR0cmlidXRlVHlwZShzZWxmLCBhbmFtZSk6CiAgICAgICAgZm9yIGluZm8gaW4gc2VsZi5fYXR0cl9pbmZvOgogICAgICAgICAgICBpZiBpbmZvWzFdID09IGFuYW1lOgogICAgICAgICAgICAgICAgdCA9IGluZm9bLTJdCiAgICAgICAgICAgICAgICBpZiB0WzBdID09ICIoIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3R5cGVpbmZvX21hcFsiRU5VTSJdCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBfdHlwZWluZm9fbWFwW2luZm9bLTJdXQogICAgICAgIHJldHVybiBtaW5pZG9tLl9ub190eXBlCgogICAgZGVmIGdldEF0dHJpYnV0ZVR5cGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CiAgICAgICAgcmV0dXJuIG1pbmlkb20uX25vX3R5cGUKCiAgICBkZWYgaXNFbGVtZW50Q29udGVudChzZWxmKToKICAgICAgICBpZiBzZWxmLl9tb2RlbDoKICAgICAgICAgICAgdHlwZSA9IHNlbGYuX21vZGVsWzBdCiAgICAgICAgICAgIHJldHVybiB0eXBlIG5vdCBpbiAoZXhwYXQubW9kZWwuWE1MX0NUWVBFX0FOWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhdC5tb2RlbC5YTUxfQ1RZUEVfTUlYRUQpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIGlzRW1wdHkoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fbW9kZWw6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbFswXSA9PSBleHBhdC5tb2RlbC5YTUxfQ1RZUEVfRU1QVFkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgaXNJZChzZWxmLCBhbmFtZSk6CiAgICAgICAgZm9yIGluZm8gaW4gc2VsZi5fYXR0cl9pbmZvOgogICAgICAgICAgICBpZiBpbmZvWzFdID09IGFuYW1lOgogICAgICAgICAgICAgICAgcmV0dXJuIGluZm9bLTJdID09ICJJRCIKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgaXNJZE5TKHNlbGYsIGV1cmksIGVuYW1lLCBhdXJpLCBhbmFtZSk6CiAgICAgICAgIyBub3Qgc3VyZSB0aGlzIGlzIG1lYW5pbmdmdWwKICAgICAgICByZXR1cm4gc2VsZi5pc0lkKChhdXJpLCBhbmFtZSkpCgpkZWYgX2ludGVybihidWlsZGVyLCBzKToKICAgIHJldHVybiBidWlsZGVyLl9pbnRlcm5fc2V0ZGVmYXVsdChzLCBzKQoKZGVmIF9wYXJzZV9uc19uYW1lKGJ1aWxkZXIsIG5hbWUpOgogICAgYXNzZXJ0ICcgJyBpbiBuYW1lCiAgICBwYXJ0cyA9IG5hbWUuc3BsaXQoJyAnKQogICAgaW50ZXJuID0gYnVpbGRlci5faW50ZXJuX3NldGRlZmF1bHQKICAgIGlmIGxlbihwYXJ0cykgPT0gMzoKICAgICAgICB1cmksIGxvY2FsbmFtZSwgcHJlZml4ID0gcGFydHMKICAgICAgICBwcmVmaXggPSBpbnRlcm4ocHJlZml4LCBwcmVmaXgpCiAgICAgICAgcW5hbWUgPSAiJXM6JXMiICUgKHByZWZpeCwgbG9jYWxuYW1lKQogICAgICAgIHFuYW1lID0gaW50ZXJuKHFuYW1lLCBxbmFtZSkKICAgICAgICBsb2NhbG5hbWUgPSBpbnRlcm4obG9jYWxuYW1lLCBsb2NhbG5hbWUpCiAgICBlbGlmIGxlbihwYXJ0cykgPT0gMjoKICAgICAgICB1cmksIGxvY2FsbmFtZSA9IHBhcnRzCiAgICAgICAgcHJlZml4ID0gRU1QVFlfUFJFRklYCiAgICAgICAgcW5hbWUgPSBsb2NhbG5hbWUgPSBpbnRlcm4obG9jYWxuYW1lLCBsb2NhbG5hbWUpCiAgICBlbHNlOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIHN5bnRheDogc3BhY2VzIGluIFVSSXMgbm90IHN1cHBvcnRlZDogJXIiICUgbmFtZSkKICAgIHJldHVybiBpbnRlcm4odXJpLCB1cmkpLCBsb2NhbG5hbWUsIHByZWZpeCwgcW5hbWUKCgpjbGFzcyBFeHBhdEJ1aWxkZXI6CiAgICAiIiJEb2N1bWVudCBidWlsZGVyIHRoYXQgdXNlcyBFeHBhdCB0byBidWlsZCBhIFBhcnNlZFhNTC5ET00gZG9jdW1lbnQKICAgIGluc3RhbmNlLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zPU5vbmUpOgogICAgICAgIGlmIG9wdGlvbnMgaXMgTm9uZToKICAgICAgICAgICAgb3B0aW9ucyA9IHhtbGJ1aWxkZXIuT3B0aW9ucygpCiAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZpbHRlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5fZmlsdGVyID0gRmlsdGVyVmlzaWJpbGl0eUNvbnRyb2xsZXIoc2VsZi5fb3B0aW9ucy5maWx0ZXIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fZmlsdGVyID0gTm9uZQogICAgICAgICAgICAjIFRoaXMgKnJlYWxseSogZG9lc24ndCBkbyBhbnl0aGluZyBpbiB0aGlzIGNhc2UsIHNvCiAgICAgICAgICAgICMgb3ZlcnJpZGUgaXQgd2l0aCBzb21ldGhpbmcgZmFzdCAmIG1pbmltYWwuCiAgICAgICAgICAgIHNlbGYuX2ZpbmlzaF9zdGFydF9lbGVtZW50ID0gaWQKICAgICAgICBzZWxmLl9wYXJzZXIgPSBOb25lCiAgICAgICAgc2VsZi5yZXNldCgpCgogICAgZGVmIGNyZWF0ZVBhcnNlcihzZWxmKToKICAgICAgICAiIiJDcmVhdGUgYSBuZXcgcGFyc2VyIG9iamVjdC4iIiIKICAgICAgICByZXR1cm4gZXhwYXQuUGFyc2VyQ3JlYXRlKCkKCiAgICBkZWYgZ2V0UGFyc2VyKHNlbGYpOgogICAgICAgICIiIlJldHVybiB0aGUgcGFyc2VyIG9iamVjdCwgY3JlYXRpbmcgYSBuZXcgb25lIGlmIG5lZWRlZC4iIiIKICAgICAgICBpZiBub3Qgc2VsZi5fcGFyc2VyOgogICAgICAgICAgICBzZWxmLl9wYXJzZXIgPSBzZWxmLmNyZWF0ZVBhcnNlcigpCiAgICAgICAgICAgIHNlbGYuX2ludGVybl9zZXRkZWZhdWx0ID0gc2VsZi5fcGFyc2VyLmludGVybi5zZXRkZWZhdWx0CiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5idWZmZXJfdGV4dCA9IFRydWUKICAgICAgICAgICAgc2VsZi5fcGFyc2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IFRydWUKICAgICAgICAgICAgc2VsZi5fcGFyc2VyLnNwZWNpZmllZF9hdHRyaWJ1dGVzID0gVHJ1ZQogICAgICAgICAgICBzZWxmLmluc3RhbGwoc2VsZi5fcGFyc2VyKQogICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgIiIiRnJlZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgZHVyaW5nIERPTSBjb25zdHJ1Y3Rpb24uIiIiCiAgICAgICAgc2VsZi5kb2N1bWVudCA9IHRoZURPTUltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KAogICAgICAgICAgICBFTVBUWV9OQU1FU1BBQ0UsIE5vbmUsIE5vbmUpCiAgICAgICAgc2VsZi5jdXJOb2RlID0gc2VsZi5kb2N1bWVudAogICAgICAgIHNlbGYuX2VsZW1faW5mbyA9IHNlbGYuZG9jdW1lbnQuX2VsZW1faW5mbwogICAgICAgIHNlbGYuX2NkYXRhID0gRmFsc2UKCiAgICBkZWYgaW5zdGFsbChzZWxmLCBwYXJzZXIpOgogICAgICAgICIiIkluc3RhbGwgdGhlIGNhbGxiYWNrcyBuZWVkZWQgdG8gYnVpbGQgdGhlIERPTSBpbnRvIHRoZSBwYXJzZXIuIiIiCiAgICAgICAgIyBUaGlzIGNyZWF0ZXMgY2lyY3VsYXIgcmVmZXJlbmNlcyEKICAgICAgICBwYXJzZXIuU3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgPSBzZWxmLnN0YXJ0X2RvY3R5cGVfZGVjbF9oYW5kbGVyCiAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzZWxmLmZpcnN0X2VsZW1lbnRfaGFuZGxlcgogICAgICAgIHBhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuZW5kX2VsZW1lbnRfaGFuZGxlcgogICAgICAgIHBhcnNlci5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyID0gc2VsZi5waV9oYW5kbGVyCiAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5lbnRpdGllczoKICAgICAgICAgICAgcGFyc2VyLkVudGl0eURlY2xIYW5kbGVyID0gc2VsZi5lbnRpdHlfZGVjbF9oYW5kbGVyCiAgICAgICAgcGFyc2VyLk5vdGF0aW9uRGVjbEhhbmRsZXIgPSBzZWxmLm5vdGF0aW9uX2RlY2xfaGFuZGxlcgogICAgICAgIGlmIHNlbGYuX29wdGlvbnMuY29tbWVudHM6CiAgICAgICAgICAgIHBhcnNlci5Db21tZW50SGFuZGxlciA9IHNlbGYuY29tbWVudF9oYW5kbGVyCiAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jZGF0YV9zZWN0aW9uczoKICAgICAgICAgICAgcGFyc2VyLlN0YXJ0Q2RhdGFTZWN0aW9uSGFuZGxlciA9IHNlbGYuc3RhcnRfY2RhdGFfc2VjdGlvbl9oYW5kbGVyCiAgICAgICAgICAgIHBhcnNlci5FbmRDZGF0YVNlY3Rpb25IYW5kbGVyID0gc2VsZi5lbmRfY2RhdGFfc2VjdGlvbl9oYW5kbGVyCiAgICAgICAgICAgIHBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHNlbGYuY2hhcmFjdGVyX2RhdGFfaGFuZGxlcl9jZGF0YQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHNlbGYuY2hhcmFjdGVyX2RhdGFfaGFuZGxlcgogICAgICAgIHBhcnNlci5FeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIgPSBzZWxmLmV4dGVybmFsX2VudGl0eV9yZWZfaGFuZGxlcgogICAgICAgIHBhcnNlci5YbWxEZWNsSGFuZGxlciA9IHNlbGYueG1sX2RlY2xfaGFuZGxlcgogICAgICAgIHBhcnNlci5FbGVtZW50RGVjbEhhbmRsZXIgPSBzZWxmLmVsZW1lbnRfZGVjbF9oYW5kbGVyCiAgICAgICAgcGFyc2VyLkF0dGxpc3REZWNsSGFuZGxlciA9IHNlbGYuYXR0bGlzdF9kZWNsX2hhbmRsZXIKCiAgICBkZWYgcGFyc2VGaWxlKHNlbGYsIGZpbGUpOgogICAgICAgICIiIlBhcnNlIGEgZG9jdW1lbnQgZnJvbSBhIGZpbGUgb2JqZWN0LCByZXR1cm5pbmcgdGhlIGRvY3VtZW50CiAgICAgICAgbm9kZS4iIiIKICAgICAgICBwYXJzZXIgPSBzZWxmLmdldFBhcnNlcigpCiAgICAgICAgZmlyc3RfYnVmZmVyID0gVHJ1ZQogICAgICAgIHRyeToKICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGZpbGUucmVhZCgxNioxMDI0KQogICAgICAgICAgICAgICAgaWYgbm90IGJ1ZmZlcjoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgcGFyc2VyLlBhcnNlKGJ1ZmZlciwgRmFsc2UpCiAgICAgICAgICAgICAgICBpZiBmaXJzdF9idWZmZXIgYW5kIHNlbGYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3NldHVwX3N1YnNldChidWZmZXIpCiAgICAgICAgICAgICAgICBmaXJzdF9idWZmZXIgPSBGYWxzZQogICAgICAgICAgICBwYXJzZXIuUGFyc2UoYiIiLCBUcnVlKQogICAgICAgIGV4Y2VwdCBQYXJzZUVzY2FwZToKICAgICAgICAgICAgcGFzcwogICAgICAgIGRvYyA9IHNlbGYuZG9jdW1lbnQKICAgICAgICBzZWxmLnJlc2V0KCkKICAgICAgICBzZWxmLl9wYXJzZXIgPSBOb25lCiAgICAgICAgcmV0dXJuIGRvYwoKICAgIGRlZiBwYXJzZVN0cmluZyhzZWxmLCBzdHJpbmcpOgogICAgICAgICIiIlBhcnNlIGEgZG9jdW1lbnQgZnJvbSBhIHN0cmluZywgcmV0dXJuaW5nIHRoZSBkb2N1bWVudCBub2RlLiIiIgogICAgICAgIHBhcnNlciA9IHNlbGYuZ2V0UGFyc2VyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhcnNlci5QYXJzZShzdHJpbmcsIFRydWUpCiAgICAgICAgICAgIHNlbGYuX3NldHVwX3N1YnNldChzdHJpbmcpCiAgICAgICAgZXhjZXB0IFBhcnNlRXNjYXBlOgogICAgICAgICAgICBwYXNzCiAgICAgICAgZG9jID0gc2VsZi5kb2N1bWVudAogICAgICAgIHNlbGYucmVzZXQoKQogICAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmUKICAgICAgICByZXR1cm4gZG9jCgogICAgZGVmIF9zZXR1cF9zdWJzZXQoc2VsZiwgYnVmZmVyKToKICAgICAgICAiIiJMb2FkIHRoZSBpbnRlcm5hbCBzdWJzZXQgaWYgdGhlcmUgbWlnaHQgYmUgb25lLiIiIgogICAgICAgIGlmIHNlbGYuZG9jdW1lbnQuZG9jdHlwZToKICAgICAgICAgICAgZXh0cmFjdG9yID0gSW50ZXJuYWxTdWJzZXRFeHRyYWN0b3IoKQogICAgICAgICAgICBleHRyYWN0b3IucGFyc2VTdHJpbmcoYnVmZmVyKQogICAgICAgICAgICBzdWJzZXQgPSBleHRyYWN0b3IuZ2V0U3Vic2V0KCkKICAgICAgICAgICAgc2VsZi5kb2N1bWVudC5kb2N0eXBlLmludGVybmFsU3Vic2V0ID0gc3Vic2V0CgogICAgZGVmIHN0YXJ0X2RvY3R5cGVfZGVjbF9oYW5kbGVyKHNlbGYsIGRvY3R5cGVOYW1lLCBzeXN0ZW1JZCwgcHVibGljSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2ludGVybmFsX3N1YnNldCk6CiAgICAgICAgZG9jdHlwZSA9IHNlbGYuZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKAogICAgICAgICAgICBkb2N0eXBlTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKQogICAgICAgIGRvY3R5cGUub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICBfYXBwZW5kX2NoaWxkKHNlbGYuZG9jdW1lbnQsIGRvY3R5cGUpCiAgICAgICAgc2VsZi5kb2N1bWVudC5kb2N0eXBlID0gZG9jdHlwZQogICAgICAgIGlmIHNlbGYuX2ZpbHRlciBhbmQgc2VsZi5fZmlsdGVyLmFjY2VwdE5vZGUoZG9jdHlwZSkgPT0gRklMVEVSX1JFSkVDVDoKICAgICAgICAgICAgc2VsZi5kb2N1bWVudC5kb2N0eXBlID0gTm9uZQogICAgICAgICAgICBkZWwgc2VsZi5kb2N1bWVudC5jaGlsZE5vZGVzWy0xXQogICAgICAgICAgICBkb2N0eXBlID0gTm9uZQogICAgICAgICAgICBzZWxmLl9wYXJzZXIuRW50aXR5RGVjbEhhbmRsZXIgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5Ob3RhdGlvbkRlY2xIYW5kbGVyID0gTm9uZQogICAgICAgIGlmIGhhc19pbnRlcm5hbF9zdWJzZXQ6CiAgICAgICAgICAgIGlmIGRvY3R5cGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBkb2N0eXBlLmVudGl0aWVzLl9zZXEgPSBbXQogICAgICAgICAgICAgICAgZG9jdHlwZS5ub3RhdGlvbnMuX3NlcSA9IFtdCiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5Db21tZW50SGFuZGxlciA9IE5vbmUKICAgICAgICAgICAgc2VsZi5fcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBOb25lCiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5FbmREb2N0eXBlRGVjbEhhbmRsZXIgPSBzZWxmLmVuZF9kb2N0eXBlX2RlY2xfaGFuZGxlcgoKICAgIGRlZiBlbmRfZG9jdHlwZV9kZWNsX2hhbmRsZXIoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb21tZW50czoKICAgICAgICAgICAgc2VsZi5fcGFyc2VyLkNvbW1lbnRIYW5kbGVyID0gc2VsZi5jb21tZW50X2hhbmRsZXIKICAgICAgICBzZWxmLl9wYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IHNlbGYucGlfaGFuZGxlcgogICAgICAgIGlmIG5vdCAoc2VsZi5fZWxlbV9pbmZvIG9yIHNlbGYuX2ZpbHRlcik6CiAgICAgICAgICAgIHNlbGYuX2ZpbmlzaF9lbmRfZWxlbWVudCA9IGlkCgogICAgZGVmIHBpX2hhbmRsZXIoc2VsZiwgdGFyZ2V0LCBkYXRhKToKICAgICAgICBub2RlID0gc2VsZi5kb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhKQogICAgICAgIF9hcHBlbmRfY2hpbGQoc2VsZi5jdXJOb2RlLCBub2RlKQogICAgICAgIGlmIHNlbGYuX2ZpbHRlciBhbmQgc2VsZi5fZmlsdGVyLmFjY2VwdE5vZGUobm9kZSkgPT0gRklMVEVSX1JFSkVDVDoKICAgICAgICAgICAgc2VsZi5jdXJOb2RlLnJlbW92ZUNoaWxkKG5vZGUpCgogICAgZGVmIGNoYXJhY3Rlcl9kYXRhX2hhbmRsZXJfY2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgY2hpbGROb2RlcyA9IHNlbGYuY3VyTm9kZS5jaGlsZE5vZGVzCiAgICAgICAgaWYgc2VsZi5fY2RhdGE6CiAgICAgICAgICAgIGlmICggIHNlbGYuX2NkYXRhX2NvbnRpbnVlCiAgICAgICAgICAgICAgICAgIGFuZCBjaGlsZE5vZGVzWy0xXS5ub2RlVHlwZSA9PSBDREFUQV9TRUNUSU9OX05PREUpOgogICAgICAgICAgICAgICAgY2hpbGROb2Rlc1stMV0uYXBwZW5kRGF0YShkYXRhKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIG5vZGUgPSBzZWxmLmRvY3VtZW50LmNyZWF0ZUNEQVRBU2VjdGlvbihkYXRhKQogICAgICAgICAgICBzZWxmLl9jZGF0YV9jb250aW51ZSA9IFRydWUKICAgICAgICBlbGlmIGNoaWxkTm9kZXMgYW5kIGNoaWxkTm9kZXNbLTFdLm5vZGVUeXBlID09IFRFWFRfTk9ERToKICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXNbLTFdCiAgICAgICAgICAgIHZhbHVlID0gbm9kZS5kYXRhICsgZGF0YQogICAgICAgICAgICBub2RlLmRhdGEgPSB2YWx1ZQogICAgICAgICAgICByZXR1cm4KICAgICAgICBlbHNlOgogICAgICAgICAgICBub2RlID0gbWluaWRvbS5UZXh0KCkKICAgICAgICAgICAgbm9kZS5kYXRhID0gZGF0YQogICAgICAgICAgICBub2RlLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgX2FwcGVuZF9jaGlsZChzZWxmLmN1ck5vZGUsIG5vZGUpCgogICAgZGVmIGNoYXJhY3Rlcl9kYXRhX2hhbmRsZXIoc2VsZiwgZGF0YSk6CiAgICAgICAgY2hpbGROb2RlcyA9IHNlbGYuY3VyTm9kZS5jaGlsZE5vZGVzCiAgICAgICAgaWYgY2hpbGROb2RlcyBhbmQgY2hpbGROb2Rlc1stMV0ubm9kZVR5cGUgPT0gVEVYVF9OT0RFOgogICAgICAgICAgICBub2RlID0gY2hpbGROb2Rlc1stMV0KICAgICAgICAgICAgbm9kZS5kYXRhID0gbm9kZS5kYXRhICsgZGF0YQogICAgICAgICAgICByZXR1cm4KICAgICAgICBub2RlID0gbWluaWRvbS5UZXh0KCkKICAgICAgICBub2RlLmRhdGEgPSBub2RlLmRhdGEgKyBkYXRhCiAgICAgICAgbm9kZS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgIF9hcHBlbmRfY2hpbGQoc2VsZi5jdXJOb2RlLCBub2RlKQoKICAgIGRlZiBlbnRpdHlfZGVjbF9oYW5kbGVyKHNlbGYsIGVudGl0eU5hbWUsIGlzX3BhcmFtZXRlcl9lbnRpdHksIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3lzdGVtSWQsIHB1YmxpY0lkLCBub3RhdGlvbk5hbWUpOgogICAgICAgIGlmIGlzX3BhcmFtZXRlcl9lbnRpdHk6CiAgICAgICAgICAgICMgd2UgZG9uJ3QgY2FyZSBhYm91dCBwYXJhbWV0ZXIgZW50aXRpZXMgZm9yIHRoZSBET00KICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZW50aXRpZXM6CiAgICAgICAgICAgIHJldHVybgogICAgICAgIG5vZGUgPSBzZWxmLmRvY3VtZW50Ll9jcmVhdGVfZW50aXR5KGVudGl0eU5hbWUsIHB1YmxpY0lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbUlkLCBub3RhdGlvbk5hbWUpCiAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgaW50ZXJuYWwgZW50aXR5CiAgICAgICAgICAgICMgbm9kZSAqc2hvdWxkKiBiZSByZWFkb25seSwgYnV0IHdlJ2xsIGNoZWF0CiAgICAgICAgICAgIGNoaWxkID0gc2VsZi5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSkKICAgICAgICAgICAgbm9kZS5jaGlsZE5vZGVzLmFwcGVuZChjaGlsZCkKICAgICAgICBzZWxmLmRvY3VtZW50LmRvY3R5cGUuZW50aXRpZXMuX3NlcS5hcHBlbmQobm9kZSkKICAgICAgICBpZiBzZWxmLl9maWx0ZXIgYW5kIHNlbGYuX2ZpbHRlci5hY2NlcHROb2RlKG5vZGUpID09IEZJTFRFUl9SRUpFQ1Q6CiAgICAgICAgICAgIGRlbCBzZWxmLmRvY3VtZW50LmRvY3R5cGUuZW50aXRpZXMuX3NlcVstMV0KCiAgICBkZWYgbm90YXRpb25fZGVjbF9oYW5kbGVyKHNlbGYsIG5vdGF0aW9uTmFtZSwgYmFzZSwgc3lzdGVtSWQsIHB1YmxpY0lkKToKICAgICAgICBub2RlID0gc2VsZi5kb2N1bWVudC5fY3JlYXRlX25vdGF0aW9uKG5vdGF0aW9uTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKQogICAgICAgIHNlbGYuZG9jdW1lbnQuZG9jdHlwZS5ub3RhdGlvbnMuX3NlcS5hcHBlbmQobm9kZSkKICAgICAgICBpZiBzZWxmLl9maWx0ZXIgYW5kIHNlbGYuX2ZpbHRlci5hY2NlcHROb2RlKG5vZGUpID09IEZJTFRFUl9BQ0NFUFQ6CiAgICAgICAgICAgIGRlbCBzZWxmLmRvY3VtZW50LmRvY3R5cGUubm90YXRpb25zLl9zZXFbLTFdCgogICAgZGVmIGNvbW1lbnRfaGFuZGxlcihzZWxmLCBkYXRhKToKICAgICAgICBub2RlID0gc2VsZi5kb2N1bWVudC5jcmVhdGVDb21tZW50KGRhdGEpCiAgICAgICAgX2FwcGVuZF9jaGlsZChzZWxmLmN1ck5vZGUsIG5vZGUpCiAgICAgICAgaWYgc2VsZi5fZmlsdGVyIGFuZCBzZWxmLl9maWx0ZXIuYWNjZXB0Tm9kZShub2RlKSA9PSBGSUxURVJfUkVKRUNUOgogICAgICAgICAgICBzZWxmLmN1ck5vZGUucmVtb3ZlQ2hpbGQobm9kZSkKCiAgICBkZWYgc3RhcnRfY2RhdGFfc2VjdGlvbl9oYW5kbGVyKHNlbGYpOgogICAgICAgIHNlbGYuX2NkYXRhID0gVHJ1ZQogICAgICAgIHNlbGYuX2NkYXRhX2NvbnRpbnVlID0gRmFsc2UKCiAgICBkZWYgZW5kX2NkYXRhX3NlY3Rpb25faGFuZGxlcihzZWxmKToKICAgICAgICBzZWxmLl9jZGF0YSA9IEZhbHNlCiAgICAgICAgc2VsZi5fY2RhdGFfY29udGludWUgPSBGYWxzZQoKICAgIGRlZiBleHRlcm5hbF9lbnRpdHlfcmVmX2hhbmRsZXIoc2VsZiwgY29udGV4dCwgYmFzZSwgc3lzdGVtSWQsIHB1YmxpY0lkKToKICAgICAgICByZXR1cm4gMQoKICAgIGRlZiBmaXJzdF9lbGVtZW50X2hhbmRsZXIoc2VsZiwgbmFtZSwgYXR0cmlidXRlcyk6CiAgICAgICAgaWYgc2VsZi5fZmlsdGVyIGlzIE5vbmUgYW5kIG5vdCBzZWxmLl9lbGVtX2luZm86CiAgICAgICAgICAgIHNlbGYuX2ZpbmlzaF9lbmRfZWxlbWVudCA9IGlkCiAgICAgICAgc2VsZi5nZXRQYXJzZXIoKS5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5zdGFydF9lbGVtZW50X2hhbmRsZXIKICAgICAgICBzZWxmLnN0YXJ0X2VsZW1lbnRfaGFuZGxlcihuYW1lLCBhdHRyaWJ1dGVzKQoKICAgIGRlZiBzdGFydF9lbGVtZW50X2hhbmRsZXIoc2VsZiwgbmFtZSwgYXR0cmlidXRlcyk6CiAgICAgICAgbm9kZSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKQogICAgICAgIF9hcHBlbmRfY2hpbGQoc2VsZi5jdXJOb2RlLCBub2RlKQogICAgICAgIHNlbGYuY3VyTm9kZSA9IG5vZGUKCiAgICAgICAgaWYgYXR0cmlidXRlczoKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGF0dHJpYnV0ZXMpLCAyKToKICAgICAgICAgICAgICAgIGEgPSBtaW5pZG9tLkF0dHIoYXR0cmlidXRlc1tpXSwgRU1QVFlfTkFNRVNQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBFTVBUWV9QUkVGSVgpCiAgICAgICAgICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXNbaSsxXQogICAgICAgICAgICAgICAgYS52YWx1ZSA9IHZhbHVlCiAgICAgICAgICAgICAgICBhLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgICAgICAgICBfc2V0X2F0dHJpYnV0ZV9ub2RlKG5vZGUsIGEpCgogICAgICAgIGlmIG5vZGUgaXMgbm90IHNlbGYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OgogICAgICAgICAgICBzZWxmLl9maW5pc2hfc3RhcnRfZWxlbWVudChub2RlKQoKICAgIGRlZiBfZmluaXNoX3N0YXJ0X2VsZW1lbnQoc2VsZiwgbm9kZSk6CiAgICAgICAgaWYgc2VsZi5fZmlsdGVyOgogICAgICAgICAgICAjIFRvIGJlIGdlbmVyYWwsIHdlJ2QgaGF2ZSB0byBjYWxsIGlzU2FtZU5vZGUoKSwgYnV0IHRoaXMKICAgICAgICAgICAgIyBpcyBzdWZmaWNpZW50IGZvciBtaW5pZG9tOgogICAgICAgICAgICBpZiBub2RlIGlzIHNlbGYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGZpbHQgPSBzZWxmLl9maWx0ZXIuc3RhcnRDb250YWluZXIobm9kZSkKICAgICAgICAgICAgaWYgZmlsdCA9PSBGSUxURVJfUkVKRUNUOgogICAgICAgICAgICAgICAgIyBpZ25vcmUgdGhpcyBub2RlICYgYWxsIGRlc2NlbmRlbnRzCiAgICAgICAgICAgICAgICBSZWplY3RlcihzZWxmKQogICAgICAgICAgICBlbGlmIGZpbHQgPT0gRklMVEVSX1NLSVA6CiAgICAgICAgICAgICAgICAjIGlnbm9yZSB0aGlzIG5vZGUsIGJ1dCBtYWtlIGl0J3MgY2hpbGRyZW4gYmVjb21lCiAgICAgICAgICAgICAgICAjIGNoaWxkcmVuIG9mIHRoZSBwYXJlbnQgbm9kZQogICAgICAgICAgICAgICAgU2tpcHBlcihzZWxmKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHNlbGYuY3VyTm9kZSA9IG5vZGUucGFyZW50Tm9kZQogICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSkKICAgICAgICAgICAgbm9kZS51bmxpbmsoKQoKICAgICMgSWYgdGhpcyBldmVyIGNoYW5nZXMsIE5hbWVzcGFjZXMuZW5kX2VsZW1lbnRfaGFuZGxlcigpIG5lZWRzIHRvCiAgICAjIGJlIGNoYW5nZWQgdG8gbWF0Y2guCiAgICAjCiAgICBkZWYgZW5kX2VsZW1lbnRfaGFuZGxlcihzZWxmLCBuYW1lKToKICAgICAgICBjdXJOb2RlID0gc2VsZi5jdXJOb2RlCiAgICAgICAgc2VsZi5jdXJOb2RlID0gY3VyTm9kZS5wYXJlbnROb2RlCiAgICAgICAgc2VsZi5fZmluaXNoX2VuZF9lbGVtZW50KGN1ck5vZGUpCgogICAgZGVmIF9maW5pc2hfZW5kX2VsZW1lbnQoc2VsZiwgY3VyTm9kZSk6CiAgICAgICAgaW5mbyA9IHNlbGYuX2VsZW1faW5mby5nZXQoY3VyTm9kZS50YWdOYW1lKQogICAgICAgIGlmIGluZm86CiAgICAgICAgICAgIHNlbGYuX2hhbmRsZV93aGl0ZV90ZXh0X25vZGVzKGN1ck5vZGUsIGluZm8pCiAgICAgICAgaWYgc2VsZi5fZmlsdGVyOgogICAgICAgICAgICBpZiBjdXJOb2RlIGlzIHNlbGYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmIHNlbGYuX2ZpbHRlci5hY2NlcHROb2RlKGN1ck5vZGUpID09IEZJTFRFUl9SRUpFQ1Q6CiAgICAgICAgICAgICAgICBzZWxmLmN1ck5vZGUucmVtb3ZlQ2hpbGQoY3VyTm9kZSkKICAgICAgICAgICAgICAgIGN1ck5vZGUudW5saW5rKCkKCiAgICBkZWYgX2hhbmRsZV93aGl0ZV90ZXh0X25vZGVzKHNlbGYsIG5vZGUsIGluZm8pOgogICAgICAgIGlmIChzZWxmLl9vcHRpb25zLndoaXRlc3BhY2VfaW5fZWxlbWVudF9jb250ZW50CiAgICAgICAgICAgIG9yIG5vdCBpbmZvLmlzRWxlbWVudENvbnRlbnQoKSk6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICAjIFdlIGhhdmUgZWxlbWVudCB0eXBlIGluZm9ybWF0aW9uIGFuZCBzaG91bGQgcmVtb3ZlIGlnbm9yYWJsZQogICAgICAgICMgd2hpdGVzcGFjZTsgaWRlbnRpZnkgZm9yIHRleHQgbm9kZXMgd2hpY2ggY29udGFpbiBvbmx5CiAgICAgICAgIyB3aGl0ZXNwYWNlLgogICAgICAgIEwgPSBbXQogICAgICAgIGZvciBjaGlsZCBpbiBub2RlLmNoaWxkTm9kZXM6CiAgICAgICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IFRFWFRfTk9ERSBhbmQgbm90IGNoaWxkLmRhdGEuc3RyaXAoKToKICAgICAgICAgICAgICAgIEwuYXBwZW5kKGNoaWxkKQoKICAgICAgICAjIFJlbW92ZSBpZ25vcmFibGUgd2hpdGVzcGFjZSBmcm9tIHRoZSB0cmVlLgogICAgICAgIGZvciBjaGlsZCBpbiBMOgogICAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKGNoaWxkKQoKICAgIGRlZiBlbGVtZW50X2RlY2xfaGFuZGxlcihzZWxmLCBuYW1lLCBtb2RlbCk6CiAgICAgICAgaW5mbyA9IHNlbGYuX2VsZW1faW5mby5nZXQobmFtZSkKICAgICAgICBpZiBpbmZvIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2VsZW1faW5mb1tuYW1lXSA9IEVsZW1lbnRJbmZvKG5hbWUsIG1vZGVsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGFzc2VydCBpbmZvLl9tb2RlbCBpcyBOb25lCiAgICAgICAgICAgIGluZm8uX21vZGVsID0gbW9kZWwKCiAgICBkZWYgYXR0bGlzdF9kZWNsX2hhbmRsZXIoc2VsZiwgZWxlbSwgbmFtZSwgdHlwZSwgZGVmYXVsdCwgcmVxdWlyZWQpOgogICAgICAgIGluZm8gPSBzZWxmLl9lbGVtX2luZm8uZ2V0KGVsZW0pCiAgICAgICAgaWYgaW5mbyBpcyBOb25lOgogICAgICAgICAgICBpbmZvID0gRWxlbWVudEluZm8oZWxlbSkKICAgICAgICAgICAgc2VsZi5fZWxlbV9pbmZvW2VsZW1dID0gaW5mbwogICAgICAgIGluZm8uX2F0dHJfaW5mby5hcHBlbmQoCiAgICAgICAgICAgIFtOb25lLCBuYW1lLCBOb25lLCBOb25lLCBkZWZhdWx0LCAwLCB0eXBlLCByZXF1aXJlZF0pCgogICAgZGVmIHhtbF9kZWNsX2hhbmRsZXIoc2VsZiwgdmVyc2lvbiwgZW5jb2RpbmcsIHN0YW5kYWxvbmUpOgogICAgICAgIHNlbGYuZG9jdW1lbnQudmVyc2lvbiA9IHZlcnNpb24KICAgICAgICBzZWxmLmRvY3VtZW50LmVuY29kaW5nID0gZW5jb2RpbmcKICAgICAgICAjIFRoaXMgaXMgc3RpbGwgYSBsaXR0bGUgdWdseSwgdGhhbmtzIHRvIHRoZSBweWV4cGF0IEFQSS4gOy0oCiAgICAgICAgaWYgc3RhbmRhbG9uZSA+PSAwOgogICAgICAgICAgICBpZiBzdGFuZGFsb25lOgogICAgICAgICAgICAgICAgc2VsZi5kb2N1bWVudC5zdGFuZGFsb25lID0gVHJ1ZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5kb2N1bWVudC5zdGFuZGFsb25lID0gRmFsc2UKCgojIERvbid0IGluY2x1ZGUgRklMVEVSX0lOVEVSUlVQVCwgc2luY2UgdGhhdCdzIGNoZWNrZWQgc2VwYXJhdGVseQojIHdoZXJlIGFsbG93ZWQuCl9BTExPV0VEX0ZJTFRFUl9SRVRVUk5TID0gKEZJTFRFUl9BQ0NFUFQsIEZJTFRFUl9SRUpFQ1QsIEZJTFRFUl9TS0lQKQoKY2xhc3MgRmlsdGVyVmlzaWJpbGl0eUNvbnRyb2xsZXIob2JqZWN0KToKICAgICIiIldyYXBwZXIgYXJvdW5kIGEgRE9NQnVpbGRlckZpbHRlciB3aGljaCBpbXBsZW1lbnRzIHRoZSBjaGVja3MKICAgIHRvIG1ha2UgdGhlIHdoYXRUb1Nob3cgZmlsdGVyIGF0dHJpYnV0ZSB3b3JrLiIiIgoKICAgIF9fc2xvdHNfXyA9ICdmaWx0ZXInLAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWx0ZXIpOgogICAgICAgIHNlbGYuZmlsdGVyID0gZmlsdGVyCgogICAgZGVmIHN0YXJ0Q29udGFpbmVyKHNlbGYsIG5vZGUpOgogICAgICAgIG1hc2sgPSBzZWxmLl9ub2RldHlwZV9tYXNrW25vZGUubm9kZVR5cGVdCiAgICAgICAgaWYgc2VsZi5maWx0ZXIud2hhdFRvU2hvdyAmIG1hc2s6CiAgICAgICAgICAgIHZhbCA9IHNlbGYuZmlsdGVyLnN0YXJ0Q29udGFpbmVyKG5vZGUpCiAgICAgICAgICAgIGlmIHZhbCA9PSBGSUxURVJfSU5URVJSVVBUOgogICAgICAgICAgICAgICAgcmFpc2UgUGFyc2VFc2NhcGUKICAgICAgICAgICAgaWYgdmFsIG5vdCBpbiBfQUxMT1dFRF9GSUxURVJfUkVUVVJOUzoKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAic3RhcnRDb250YWluZXIoKSByZXR1cm5lZCBpbGxlZ2FsIHZhbHVlOiAiICsgcmVwcih2YWwpKQogICAgICAgICAgICByZXR1cm4gdmFsCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIEZJTFRFUl9BQ0NFUFQKCiAgICBkZWYgYWNjZXB0Tm9kZShzZWxmLCBub2RlKToKICAgICAgICBtYXNrID0gc2VsZi5fbm9kZXR5cGVfbWFza1tub2RlLm5vZGVUeXBlXQogICAgICAgIGlmIHNlbGYuZmlsdGVyLndoYXRUb1Nob3cgJiBtYXNrOgogICAgICAgICAgICB2YWwgPSBzZWxmLmZpbHRlci5hY2NlcHROb2RlKG5vZGUpCiAgICAgICAgICAgIGlmIHZhbCA9PSBGSUxURVJfSU5URVJSVVBUOgogICAgICAgICAgICAgICAgcmFpc2UgUGFyc2VFc2NhcGUKICAgICAgICAgICAgaWYgdmFsID09IEZJTFRFUl9TS0lQOgogICAgICAgICAgICAgICAgIyBtb3ZlIGFsbCBjaGlsZCBub2RlcyB0byB0aGUgcGFyZW50LCBhbmQgcmVtb3ZlIHRoaXMgbm9kZQogICAgICAgICAgICAgICAgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlCiAgICAgICAgICAgICAgICBmb3IgY2hpbGQgaW4gbm9kZS5jaGlsZE5vZGVzWzpdOgogICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCkKICAgICAgICAgICAgICAgICMgbm9kZSBpcyBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIKICAgICAgICAgICAgICAgIHJldHVybiBGSUxURVJfUkVKRUNUCiAgICAgICAgICAgIGlmIHZhbCBub3QgaW4gX0FMTE9XRURfRklMVEVSX1JFVFVSTlM6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgImFjY2VwdE5vZGUoKSByZXR1cm5lZCBpbGxlZ2FsIHZhbHVlOiAiICsgcmVwcih2YWwpKQogICAgICAgICAgICByZXR1cm4gdmFsCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIEZJTFRFUl9BQ0NFUFQKCiAgICBfbm9kZXR5cGVfbWFzayA9IHsKICAgICAgICBOb2RlLkVMRU1FTlRfTk9ERTogICAgICAgICAgICAgICAgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsCiAgICAgICAgTm9kZS5BVFRSSUJVVEVfTk9ERTogICAgICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19BVFRSSUJVVEUsCiAgICAgICAgTm9kZS5URVhUX05PREU6ICAgICAgICAgICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19URVhULAogICAgICAgIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOiAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfQ0RBVEFfU0VDVElPTiwKICAgICAgICBOb2RlLkVOVElUWV9SRUZFUkVOQ0VfTk9ERTogICAgICAgTm9kZUZpbHRlci5TSE9XX0VOVElUWV9SRUZFUkVOQ0UsCiAgICAgICAgTm9kZS5FTlRJVFlfTk9ERTogICAgICAgICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTlRJVFksCiAgICAgICAgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6IE5vZGVGaWx0ZXIuU0hPV19QUk9DRVNTSU5HX0lOU1RSVUNUSU9OLAogICAgICAgIE5vZGUuQ09NTUVOVF9OT0RFOiAgICAgICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfQ09NTUVOVCwKICAgICAgICBOb2RlLkRPQ1VNRU5UX05PREU6ICAgICAgICAgICAgICAgTm9kZUZpbHRlci5TSE9XX0RPQ1VNRU5ULAogICAgICAgIE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFOiAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRE9DVU1FTlRfVFlQRSwKICAgICAgICBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6ICAgICAgTm9kZUZpbHRlci5TSE9XX0RPQ1VNRU5UX0ZSQUdNRU5ULAogICAgICAgIE5vZGUuTk9UQVRJT05fTk9ERTogICAgICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfTk9UQVRJT04sCiAgICAgICAgfQoKCmNsYXNzIEZpbHRlckNydXRjaChvYmplY3QpOgogICAgX19zbG90c19fID0gJ19idWlsZGVyJywgJ19sZXZlbCcsICdfb2xkX3N0YXJ0JywgJ19vbGRfZW5kJwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWlsZGVyKToKICAgICAgICBzZWxmLl9sZXZlbCA9IDAKICAgICAgICBzZWxmLl9idWlsZGVyID0gYnVpbGRlcgogICAgICAgIHBhcnNlciA9IGJ1aWxkZXIuX3BhcnNlcgogICAgICAgIHNlbGYuX29sZF9zdGFydCA9IHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyCiAgICAgICAgc2VsZi5fb2xkX2VuZCA9IHBhcnNlci5FbmRFbGVtZW50SGFuZGxlcgogICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5zdGFydF9lbGVtZW50X2hhbmRsZXIKICAgICAgICBwYXJzZXIuRW5kRWxlbWVudEhhbmRsZXIgPSBzZWxmLmVuZF9lbGVtZW50X2hhbmRsZXIKCmNsYXNzIFJlamVjdGVyKEZpbHRlckNydXRjaCk6CiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWlsZGVyKToKICAgICAgICBGaWx0ZXJDcnV0Y2guX19pbml0X18oc2VsZiwgYnVpbGRlcikKICAgICAgICBwYXJzZXIgPSBidWlsZGVyLl9wYXJzZXIKICAgICAgICBmb3IgbmFtZSBpbiAoIlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIiLAogICAgICAgICAgICAgICAgICAgICAiQ29tbWVudEhhbmRsZXIiLAogICAgICAgICAgICAgICAgICAgICAiQ2hhcmFjdGVyRGF0YUhhbmRsZXIiLAogICAgICAgICAgICAgICAgICAgICAiU3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyIiwKICAgICAgICAgICAgICAgICAgICAgIkVuZENkYXRhU2VjdGlvbkhhbmRsZXIiLAogICAgICAgICAgICAgICAgICAgICAiRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyIiwKICAgICAgICAgICAgICAgICAgICAgKToKICAgICAgICAgICAgc2V0YXR0cihwYXJzZXIsIG5hbWUsIE5vbmUpCgogICAgZGVmIHN0YXJ0X2VsZW1lbnRfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgc2VsZi5fbGV2ZWwgPSBzZWxmLl9sZXZlbCArIDEKCiAgICBkZWYgZW5kX2VsZW1lbnRfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgaWYgc2VsZi5fbGV2ZWwgPT0gMDoKICAgICAgICAgICAgIyByZXN0b3JlIHRoZSBvbGQgaGFuZGxlcnMKICAgICAgICAgICAgcGFyc2VyID0gc2VsZi5fYnVpbGRlci5fcGFyc2VyCiAgICAgICAgICAgIHNlbGYuX2J1aWxkZXIuaW5zdGFsbChwYXJzZXIpCiAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fb2xkX3N0YXJ0CiAgICAgICAgICAgIHBhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuX29sZF9lbmQKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9sZXZlbCA9IHNlbGYuX2xldmVsIC0gMQoKY2xhc3MgU2tpcHBlcihGaWx0ZXJDcnV0Y2gpOgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgc3RhcnRfZWxlbWVudF9oYW5kbGVyKHNlbGYsICphcmdzKToKICAgICAgICBub2RlID0gc2VsZi5fYnVpbGRlci5jdXJOb2RlCiAgICAgICAgc2VsZi5fb2xkX3N0YXJ0KCphcmdzKQogICAgICAgIGlmIHNlbGYuX2J1aWxkZXIuY3VyTm9kZSBpcyBub3Qgbm9kZToKICAgICAgICAgICAgc2VsZi5fbGV2ZWwgPSBzZWxmLl9sZXZlbCArIDEKCiAgICBkZWYgZW5kX2VsZW1lbnRfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgaWYgc2VsZi5fbGV2ZWwgPT0gMDoKICAgICAgICAgICAgIyBXZSdyZSBwb3BwaW5nIGJhY2sgb3V0IG9mIHRoZSBub2RlIHdlJ3JlIHNraXBwaW5nLCBzbyB3ZQogICAgICAgICAgICAjIHNob3VsZG4ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGJ1dCByZXNldCB0aGUgaGFuZGxlcnMuCiAgICAgICAgICAgIHNlbGYuX2J1aWxkZXIuX3BhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fb2xkX3N0YXJ0CiAgICAgICAgICAgIHNlbGYuX2J1aWxkZXIuX3BhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuX29sZF9lbmQKICAgICAgICAgICAgc2VsZi5fYnVpbGRlciA9IE5vbmUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9sZXZlbCA9IHNlbGYuX2xldmVsIC0gMQogICAgICAgICAgICBzZWxmLl9vbGRfZW5kKCphcmdzKQoKCiMgZnJhbWV3b3JrIGRvY3VtZW50IHVzZWQgYnkgdGhlIGZyYWdtZW50IGJ1aWxkZXIuCiMgVGFrZXMgYSBzdHJpbmcgZm9yIHRoZSBkb2N0eXBlLCBzdWJzZXQgc3RyaW5nLCBhbmQgbmFtZXNwYWNlIGF0dHJzIHN0cmluZy4KCl9GUkFHTUVOVF9CVUlMREVSX0lOVEVSTkFMX1NZU1RFTV9JRCA9IFwKICAgICJodHRwOi8veG1sLnB5dGhvbi5vcmcvZW50aXRpZXMvZnJhZ21lbnQtYnVpbGRlci9pbnRlcm5hbCIKCl9GUkFHTUVOVF9CVUlMREVSX1RFTVBMQVRFID0gKAogICAgJycnXAo8IURPQ1RZUEUgd3JhcHBlcgogICUlcyBbCiAgPCFFTlRJVFkgZnJhZ21lbnQtYnVpbGRlci1pbnRlcm5hbAogICAgU1lTVEVNICIlcyI+CiUlcwpdPgo8d3JhcHBlciAlJXMKPiZmcmFnbWVudC1idWlsZGVyLWludGVybmFsOzwvd3JhcHBlcj4nJycKICAgICUgX0ZSQUdNRU5UX0JVSUxERVJfSU5URVJOQUxfU1lTVEVNX0lEKQoKCmNsYXNzIEZyYWdtZW50QnVpbGRlcihFeHBhdEJ1aWxkZXIpOgogICAgIiIiQnVpbGRlciB3aGljaCBjb25zdHJ1Y3RzIGRvY3VtZW50IGZyYWdtZW50cyBnaXZlbiBYTUwgc291cmNlCiAgICB0ZXh0IGFuZCBhIGNvbnRleHQgbm9kZS4KCiAgICBUaGUgY29udGV4dCBub2RlIGlzIGV4cGVjdGVkIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgICBuYW1lc3BhY2UgZGVjbGFyYXRpb25zIHdoaWNoIGFyZSBpbiBzY29wZSBhdCB0aGUgc3RhcnQgb2YgdGhlCiAgICBmcmFnbWVudC4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250ZXh0LCBvcHRpb25zPU5vbmUpOgogICAgICAgIGlmIGNvbnRleHQubm9kZVR5cGUgPT0gRE9DVU1FTlRfTk9ERToKICAgICAgICAgICAgc2VsZi5vcmlnaW5hbERvY3VtZW50ID0gY29udGV4dAogICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5vcmlnaW5hbERvY3VtZW50ID0gY29udGV4dC5vd25lckRvY3VtZW50CiAgICAgICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQKICAgICAgICBFeHBhdEJ1aWxkZXIuX19pbml0X18oc2VsZiwgb3B0aW9ucykKCiAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgRXhwYXRCdWlsZGVyLnJlc2V0KHNlbGYpCiAgICAgICAgc2VsZi5mcmFnbWVudCA9IE5vbmUKCiAgICBkZWYgcGFyc2VGaWxlKHNlbGYsIGZpbGUpOgogICAgICAgICIiIlBhcnNlIGEgZG9jdW1lbnQgZnJhZ21lbnQgZnJvbSBhIGZpbGUgb2JqZWN0LCByZXR1cm5pbmcgdGhlCiAgICAgICAgZnJhZ21lbnQgbm9kZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5wYXJzZVN0cmluZyhmaWxlLnJlYWQoKSkKCiAgICBkZWYgcGFyc2VTdHJpbmcoc2VsZiwgc3RyaW5nKToKICAgICAgICAiIiJQYXJzZSBhIGRvY3VtZW50IGZyYWdtZW50IGZyb20gYSBzdHJpbmcsIHJldHVybmluZyB0aGUKICAgICAgICBmcmFnbWVudCBub2RlLiIiIgogICAgICAgIHNlbGYuX3NvdXJjZSA9IHN0cmluZwogICAgICAgIHBhcnNlciA9IHNlbGYuZ2V0UGFyc2VyKCkKICAgICAgICBkb2N0eXBlID0gc2VsZi5vcmlnaW5hbERvY3VtZW50LmRvY3R5cGUKICAgICAgICBpZGVudCA9ICIiCiAgICAgICAgaWYgZG9jdHlwZToKICAgICAgICAgICAgc3Vic2V0ID0gZG9jdHlwZS5pbnRlcm5hbFN1YnNldCBvciBzZWxmLl9nZXREZWNsYXJhdGlvbnMoKQogICAgICAgICAgICBpZiBkb2N0eXBlLnB1YmxpY0lkOgogICAgICAgICAgICAgICAgaWRlbnQgPSAoJ1BVQkxJQyAiJXMiICIlcyInCiAgICAgICAgICAgICAgICAgICAgICAgICAlIChkb2N0eXBlLnB1YmxpY0lkLCBkb2N0eXBlLnN5c3RlbUlkKSkKICAgICAgICAgICAgZWxpZiBkb2N0eXBlLnN5c3RlbUlkOgogICAgICAgICAgICAgICAgaWRlbnQgPSAnU1lTVEVNICIlcyInICUgZG9jdHlwZS5zeXN0ZW1JZAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN1YnNldCA9ICIiCiAgICAgICAgbnNhdHRycyA9IHNlbGYuX2dldE5TYXR0cnMoKSAjIGdldCBucyBkZWNscyBmcm9tIG5vZGUncyBhbmNlc3RvcnMKICAgICAgICBkb2N1bWVudCA9IF9GUkFHTUVOVF9CVUlMREVSX1RFTVBMQVRFICUgKGlkZW50LCBzdWJzZXQsIG5zYXR0cnMpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJzZXIuUGFyc2UoZG9jdW1lbnQsIFRydWUpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICBzZWxmLnJlc2V0KCkKICAgICAgICAgICAgcmFpc2UKICAgICAgICBmcmFnbWVudCA9IHNlbGYuZnJhZ21lbnQKICAgICAgICBzZWxmLnJlc2V0KCkKIyMgICAgICAgICBzZWxmLl9wYXJzZXIgPSBOb25lCiAgICAgICAgcmV0dXJuIGZyYWdtZW50CgogICAgZGVmIF9nZXREZWNsYXJhdGlvbnMoc2VsZik6CiAgICAgICAgIiIiUmUtY3JlYXRlIHRoZSBpbnRlcm5hbCBzdWJzZXQgZnJvbSB0aGUgRG9jdW1lbnRUeXBlIG5vZGUuCgogICAgICAgIFRoaXMgaXMgb25seSBuZWVkZWQgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIHRoZQogICAgICAgIGludGVybmFsU3Vic2V0IGFzIGEgc3RyaW5nLgogICAgICAgICIiIgogICAgICAgIGRvY3R5cGUgPSBzZWxmLmNvbnRleHQub3duZXJEb2N1bWVudC5kb2N0eXBlCiAgICAgICAgcyA9ICIiCiAgICAgICAgaWYgZG9jdHlwZToKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoZG9jdHlwZS5ub3RhdGlvbnMubGVuZ3RoKToKICAgICAgICAgICAgICAgIG5vdGF0aW9uID0gZG9jdHlwZS5ub3RhdGlvbnMuaXRlbShpKQogICAgICAgICAgICAgICAgaWYgczoKICAgICAgICAgICAgICAgICAgICBzID0gcyArICJcbiAgIgogICAgICAgICAgICAgICAgcyA9ICIlczwhTk9UQVRJT04gJXMiICUgKHMsIG5vdGF0aW9uLm5vZGVOYW1lKQogICAgICAgICAgICAgICAgaWYgbm90YXRpb24ucHVibGljSWQ6CiAgICAgICAgICAgICAgICAgICAgcyA9ICclcyBQVUJMSUMgIiVzIlxuICAgICAgICAgICAgICIlcyI+JyBcCiAgICAgICAgICAgICAgICAgICAgICAgICUgKHMsIG5vdGF0aW9uLnB1YmxpY0lkLCBub3RhdGlvbi5zeXN0ZW1JZCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcyA9ICclcyBTWVNURU0gIiVzIj4nICUgKHMsIG5vdGF0aW9uLnN5c3RlbUlkKQogICAgICAgICAgICBmb3IgaSBpbiByYW5nZShkb2N0eXBlLmVudGl0aWVzLmxlbmd0aCk6CiAgICAgICAgICAgICAgICBlbnRpdHkgPSBkb2N0eXBlLmVudGl0aWVzLml0ZW0oaSkKICAgICAgICAgICAgICAgIGlmIHM6CiAgICAgICAgICAgICAgICAgICAgcyA9IHMgKyAiXG4gICIKICAgICAgICAgICAgICAgIHMgPSAiJXM8IUVOVElUWSAlcyIgJSAocywgZW50aXR5Lm5vZGVOYW1lKQogICAgICAgICAgICAgICAgaWYgZW50aXR5LnB1YmxpY0lkOgogICAgICAgICAgICAgICAgICAgIHMgPSAnJXMgUFVCTElDICIlcyJcbiAgICAgICAgICAgICAiJXMiJyBcCiAgICAgICAgICAgICAgICAgICAgICAgICUgKHMsIGVudGl0eS5wdWJsaWNJZCwgZW50aXR5LnN5c3RlbUlkKQogICAgICAgICAgICAgICAgZWxpZiBlbnRpdHkuc3lzdGVtSWQ6CiAgICAgICAgICAgICAgICAgICAgcyA9ICclcyBTWVNURU0gIiVzIicgJSAocywgZW50aXR5LnN5c3RlbUlkKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzID0gJyVzICIlcyInICUgKHMsIGVudGl0eS5maXJzdENoaWxkLmRhdGEpCiAgICAgICAgICAgICAgICBpZiBlbnRpdHkubm90YXRpb25OYW1lOgogICAgICAgICAgICAgICAgICAgIHMgPSAiJXMgTk9UQVRJT04gJXMiICUgKHMsIGVudGl0eS5ub3RhdGlvbk5hbWUpCiAgICAgICAgICAgICAgICBzID0gcyArICI+IgogICAgICAgIHJldHVybiBzCgogICAgZGVmIF9nZXROU2F0dHJzKHNlbGYpOgogICAgICAgIHJldHVybiAiIgoKICAgIGRlZiBleHRlcm5hbF9lbnRpdHlfcmVmX2hhbmRsZXIoc2VsZiwgY29udGV4dCwgYmFzZSwgc3lzdGVtSWQsIHB1YmxpY0lkKToKICAgICAgICBpZiBzeXN0ZW1JZCA9PSBfRlJBR01FTlRfQlVJTERFUl9JTlRFUk5BTF9TWVNURU1fSUQ6CiAgICAgICAgICAgICMgdGhpcyBlbnRyZWYgaXMgdGhlIG9uZSB0aGF0IHdlIG1hZGUgdG8gcHV0IHRoZSBzdWJ0cmVlCiAgICAgICAgICAgICMgaW47IGFsbCBvZiBvdXIgZ2l2ZW4gaW5wdXQgaXMgcGFyc2VkIGluIGhlcmUuCiAgICAgICAgICAgIG9sZF9kb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgICAgb2xkX2N1cl9ub2RlID0gc2VsZi5jdXJOb2RlCiAgICAgICAgICAgIHBhcnNlciA9IHNlbGYuX3BhcnNlci5FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZShjb250ZXh0KQogICAgICAgICAgICAjIHB1dCB0aGUgcmVhbCBkb2N1bWVudCBiYWNrLCBwYXJzZSBpbnRvIHRoZSBmcmFnbWVudCB0byByZXR1cm4KICAgICAgICAgICAgc2VsZi5kb2N1bWVudCA9IHNlbGYub3JpZ2luYWxEb2N1bWVudAogICAgICAgICAgICBzZWxmLmZyYWdtZW50ID0gc2VsZi5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKICAgICAgICAgICAgc2VsZi5jdXJOb2RlID0gc2VsZi5mcmFnbWVudAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwYXJzZXIuUGFyc2Uoc2VsZi5fc291cmNlLCBUcnVlKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5jdXJOb2RlID0gb2xkX2N1cl9ub2RlCiAgICAgICAgICAgICAgICBzZWxmLmRvY3VtZW50ID0gb2xkX2RvY3VtZW50CiAgICAgICAgICAgICAgICBzZWxmLl9zb3VyY2UgPSBOb25lCiAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBFeHBhdEJ1aWxkZXIuZXh0ZXJuYWxfZW50aXR5X3JlZl9oYW5kbGVyKAogICAgICAgICAgICAgICAgc2VsZiwgY29udGV4dCwgYmFzZSwgc3lzdGVtSWQsIHB1YmxpY0lkKQoKCmNsYXNzIE5hbWVzcGFjZXM6CiAgICAiIiJNaXgtaW4gY2xhc3MgZm9yIGJ1aWxkZXJzOyBhZGRzIHN1cHBvcnQgZm9yIG5hbWVzcGFjZXMuIiIiCgogICAgZGVmIF9pbml0TmFtZXNwYWNlcyhzZWxmKToKICAgICAgICAjIGxpc3Qgb2YgKHByZWZpeCwgdXJpKSBucyBkZWNsYXJhdGlvbnMuICBOYW1lc3BhY2UgYXR0cnMgYXJlCiAgICAgICAgIyBjb25zdHJ1Y3RlZCBmcm9tIHRoaXMgYW5kIGFkZGVkIHRvIHRoZSBlbGVtZW50J3MgYXR0cnMuCiAgICAgICAgc2VsZi5fbnNfb3JkZXJlZF9wcmVmaXhlcyA9IFtdCgogICAgZGVmIGNyZWF0ZVBhcnNlcihzZWxmKToKICAgICAgICAiIiJDcmVhdGUgYSBuZXcgbmFtZXNwYWNlLWhhbmRsaW5nIHBhcnNlci4iIiIKICAgICAgICBwYXJzZXIgPSBleHBhdC5QYXJzZXJDcmVhdGUobmFtZXNwYWNlX3NlcGFyYXRvcj0iICIpCiAgICAgICAgcGFyc2VyLm5hbWVzcGFjZV9wcmVmaXhlcyA9IFRydWUKICAgICAgICByZXR1cm4gcGFyc2VyCgogICAgZGVmIGluc3RhbGwoc2VsZiwgcGFyc2VyKToKICAgICAgICAiIiJJbnNlcnQgdGhlIG5hbWVzcGFjZS1oYW5kbGVycyBvbnRvIHRoZSBwYXJzZXIuIiIiCiAgICAgICAgRXhwYXRCdWlsZGVyLmluc3RhbGwoc2VsZiwgcGFyc2VyKQogICAgICAgIGlmIHNlbGYuX29wdGlvbnMubmFtZXNwYWNlX2RlY2xhcmF0aW9uczoKICAgICAgICAgICAgcGFyc2VyLlN0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIgPSAoCiAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X25hbWVzcGFjZV9kZWNsX2hhbmRsZXIpCgogICAgZGVmIHN0YXJ0X25hbWVzcGFjZV9kZWNsX2hhbmRsZXIoc2VsZiwgcHJlZml4LCB1cmkpOgogICAgICAgICIiIlB1c2ggdGhpcyBuYW1lc3BhY2UgZGVjbGFyYXRpb24gb24gb3VyIHN0b3JhZ2UuIiIiCiAgICAgICAgc2VsZi5fbnNfb3JkZXJlZF9wcmVmaXhlcy5hcHBlbmQoKHByZWZpeCwgdXJpKSkKCiAgICBkZWYgc3RhcnRfZWxlbWVudF9oYW5kbGVyKHNlbGYsIG5hbWUsIGF0dHJpYnV0ZXMpOgogICAgICAgIGlmICcgJyBpbiBuYW1lOgogICAgICAgICAgICB1cmksIGxvY2FsbmFtZSwgcHJlZml4LCBxbmFtZSA9IF9wYXJzZV9uc19uYW1lKHNlbGYsIG5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdXJpID0gRU1QVFlfTkFNRVNQQUNFCiAgICAgICAgICAgIHFuYW1lID0gbmFtZQogICAgICAgICAgICBsb2NhbG5hbWUgPSBOb25lCiAgICAgICAgICAgIHByZWZpeCA9IEVNUFRZX1BSRUZJWAogICAgICAgIG5vZGUgPSBtaW5pZG9tLkVsZW1lbnQocW5hbWUsIHVyaSwgcHJlZml4LCBsb2NhbG5hbWUpCiAgICAgICAgbm9kZS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgIF9hcHBlbmRfY2hpbGQoc2VsZi5jdXJOb2RlLCBub2RlKQogICAgICAgIHNlbGYuY3VyTm9kZSA9IG5vZGUKCiAgICAgICAgaWYgc2VsZi5fbnNfb3JkZXJlZF9wcmVmaXhlczoKICAgICAgICAgICAgZm9yIHByZWZpeCwgdXJpIGluIHNlbGYuX25zX29yZGVyZWRfcHJlZml4ZXM6CiAgICAgICAgICAgICAgICBpZiBwcmVmaXg6CiAgICAgICAgICAgICAgICAgICAgYSA9IG1pbmlkb20uQXR0cihfaW50ZXJuKHNlbGYsICd4bWxuczonICsgcHJlZml4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTE5TX05BTUVTUEFDRSwgcHJlZml4LCAieG1sbnMiKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBhID0gbWluaWRvbS5BdHRyKCJ4bWxucyIsIFhNTE5TX05BTUVTUEFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxucyIsIEVNUFRZX1BSRUZJWCkKICAgICAgICAgICAgICAgIGEudmFsdWUgPSB1cmkKICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgICAgICAgIF9zZXRfYXR0cmlidXRlX25vZGUobm9kZSwgYSkKICAgICAgICAgICAgZGVsIHNlbGYuX25zX29yZGVyZWRfcHJlZml4ZXNbOl0KCiAgICAgICAgaWYgYXR0cmlidXRlczoKICAgICAgICAgICAgbm9kZS5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgICAgICAgICBfYXR0cnMgPSBub2RlLl9hdHRycwogICAgICAgICAgICBfYXR0cnNOUyA9IG5vZGUuX2F0dHJzTlMKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGF0dHJpYnV0ZXMpLCAyKToKICAgICAgICAgICAgICAgIGFuYW1lID0gYXR0cmlidXRlc1tpXQogICAgICAgICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzW2krMV0KICAgICAgICAgICAgICAgIGlmICcgJyBpbiBhbmFtZToKICAgICAgICAgICAgICAgICAgICB1cmksIGxvY2FsbmFtZSwgcHJlZml4LCBxbmFtZSA9IF9wYXJzZV9uc19uYW1lKHNlbGYsIGFuYW1lKQogICAgICAgICAgICAgICAgICAgIGEgPSBtaW5pZG9tLkF0dHIocW5hbWUsIHVyaSwgbG9jYWxuYW1lLCBwcmVmaXgpCiAgICAgICAgICAgICAgICAgICAgX2F0dHJzW3FuYW1lXSA9IGEKICAgICAgICAgICAgICAgICAgICBfYXR0cnNOU1sodXJpLCBsb2NhbG5hbWUpXSA9IGEKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYSA9IG1pbmlkb20uQXR0cihhbmFtZSwgRU1QVFlfTkFNRVNQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5hbWUsIEVNUFRZX1BSRUZJWCkKICAgICAgICAgICAgICAgICAgICBfYXR0cnNbYW5hbWVdID0gYQogICAgICAgICAgICAgICAgICAgIF9hdHRyc05TWyhFTVBUWV9OQU1FU1BBQ0UsIGFuYW1lKV0gPSBhCiAgICAgICAgICAgICAgICBhLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgICAgICAgICBhLnZhbHVlID0gdmFsdWUKICAgICAgICAgICAgICAgIGEub3duZXJFbGVtZW50ID0gbm9kZQoKICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAjIFRoaXMgb25seSBhZGRzIHNvbWUgYXNzZXJ0cyB0byB0aGUgb3JpZ2luYWwKICAgICAgICAjIGVuZF9lbGVtZW50X2hhbmRsZXIoKSwgc28gd2Ugb25seSBkZWZpbmUgdGhpcyB3aGVuIC1PIGlzIG5vdAogICAgICAgICMgdXNlZC4gIElmIGNoYW5naW5nIG9uZSwgYmUgc3VyZSB0byBjaGVjayB0aGUgb3RoZXIgdG8gc2VlIGlmCiAgICAgICAgIyBpdCBuZWVkcyB0byBiZSBjaGFuZ2VkIGFzIHdlbGwuCiAgICAgICAgIwogICAgICAgIGRlZiBlbmRfZWxlbWVudF9oYW5kbGVyKHNlbGYsIG5hbWUpOgogICAgICAgICAgICBjdXJOb2RlID0gc2VsZi5jdXJOb2RlCiAgICAgICAgICAgIGlmICcgJyBpbiBuYW1lOgogICAgICAgICAgICAgICAgdXJpLCBsb2NhbG5hbWUsIHByZWZpeCwgcW5hbWUgPSBfcGFyc2VfbnNfbmFtZShzZWxmLCBuYW1lKQogICAgICAgICAgICAgICAgYXNzZXJ0IChjdXJOb2RlLm5hbWVzcGFjZVVSSSA9PSB1cmkKICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGN1ck5vZGUubG9jYWxOYW1lID09IGxvY2FsbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBhbmQgY3VyTm9kZS5wcmVmaXggPT0gcHJlZml4KSwgXAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudCBzdGFjayBtZXNzZWQgdXAhIChuYW1lc3BhY2UpIgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXNzZXJ0IGN1ck5vZGUubm9kZU5hbWUgPT0gbmFtZSwgXAogICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50IHN0YWNrIG1lc3NlZCB1cCAtIGJhZCBub2RlTmFtZSIKICAgICAgICAgICAgICAgIGFzc2VydCBjdXJOb2RlLm5hbWVzcGFjZVVSSSA9PSBFTVBUWV9OQU1FU1BBQ0UsIFwKICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudCBzdGFjayBtZXNzZWQgdXAgLSBiYWQgbmFtZXNwYWNlVVJJIgogICAgICAgICAgICBzZWxmLmN1ck5vZGUgPSBjdXJOb2RlLnBhcmVudE5vZGUKICAgICAgICAgICAgc2VsZi5fZmluaXNoX2VuZF9lbGVtZW50KGN1ck5vZGUpCgoKY2xhc3MgRXhwYXRCdWlsZGVyTlMoTmFtZXNwYWNlcywgRXhwYXRCdWlsZGVyKToKICAgICIiIkRvY3VtZW50IGJ1aWxkZXIgdGhhdCBzdXBwb3J0cyBuYW1lc3BhY2VzLiIiIgoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBFeHBhdEJ1aWxkZXIucmVzZXQoc2VsZikKICAgICAgICBzZWxmLl9pbml0TmFtZXNwYWNlcygpCgoKY2xhc3MgRnJhZ21lbnRCdWlsZGVyTlMoTmFtZXNwYWNlcywgRnJhZ21lbnRCdWlsZGVyKToKICAgICIiIkZyYWdtZW50IGJ1aWxkZXIgdGhhdCBzdXBwb3J0cyBuYW1lc3BhY2VzLiIiIgoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBGcmFnbWVudEJ1aWxkZXIucmVzZXQoc2VsZikKICAgICAgICBzZWxmLl9pbml0TmFtZXNwYWNlcygpCgogICAgZGVmIF9nZXROU2F0dHJzKHNlbGYpOgogICAgICAgICIiIlJldHVybiBzdHJpbmcgb2YgbmFtZXNwYWNlIGF0dHJpYnV0ZXMgZnJvbSB0aGlzIGVsZW1lbnQgYW5kCiAgICAgICAgYW5jZXN0b3JzLiIiIgogICAgICAgICMgWFhYIFRoaXMgbmVlZHMgdG8gYmUgcmUtd3JpdHRlbiB0byB3YWxrIHRoZSBhbmNlc3RvcnMgb2YgdGhlCiAgICAgICAgIyBjb250ZXh0IHRvIGJ1aWxkIHVwIHRoZSBuYW1lc3BhY2UgaW5mb3JtYXRpb24gZnJvbQogICAgICAgICMgZGVjbGFyYXRpb25zLCBlbGVtZW50cywgYW5kIGF0dHJpYnV0ZXMgZm91bmQgaW4gY29udGV4dC4KICAgICAgICAjIE90aGVyd2lzZSB3ZSBoYXZlIHRvIHN0b3JlIGEgYnVuY2ggbW9yZSBkYXRhIG9uIHRoZSBET00KICAgICAgICAjICh0aG91Z2ggdGhhdCAqbWlnaHQqIGJlIG1vcmUgcmVsaWFibGUgLS0gbm90IGNsZWFyKS4KICAgICAgICBhdHRycyA9ICIiCiAgICAgICAgY29udGV4dCA9IHNlbGYuY29udGV4dAogICAgICAgIEwgPSBbXQogICAgICAgIHdoaWxlIGNvbnRleHQ6CiAgICAgICAgICAgIGlmIGhhc2F0dHIoY29udGV4dCwgJ19uc19wcmVmaXhfdXJpJyk6CiAgICAgICAgICAgICAgICBmb3IgcHJlZml4LCB1cmkgaW4gY29udGV4dC5fbnNfcHJlZml4X3VyaS5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgICMgYWRkIGV2ZXJ5IG5ldyBOUyBkZWNsIGZyb20gY29udGV4dCB0byBMIGFuZCBhdHRycyBzdHJpbmcKICAgICAgICAgICAgICAgICAgICBpZiBwcmVmaXggaW4gTDoKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBMLmFwcGVuZChwcmVmaXgpCiAgICAgICAgICAgICAgICAgICAgaWYgcHJlZml4OgogICAgICAgICAgICAgICAgICAgICAgICBkZWNsbmFtZSA9ICJ4bWxuczoiICsgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgZGVjbG5hbWUgPSAieG1sbnMiCiAgICAgICAgICAgICAgICAgICAgaWYgYXR0cnM6CiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzID0gIiVzXG4gICAgJXM9JyVzJyIgJSAoYXR0cnMsIGRlY2xuYW1lLCB1cmkpCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgPSAiICVzPSclcyciICUgKGRlY2xuYW1lLCB1cmkpCiAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnBhcmVudE5vZGUKICAgICAgICByZXR1cm4gYXR0cnMKCgpjbGFzcyBQYXJzZUVzY2FwZShFeGNlcHRpb24pOgogICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB0byBzaG9ydC1jaXJjdWl0IHBhcnNpbmcgaW4gSW50ZXJuYWxTdWJzZXRFeHRyYWN0b3IuIiIiCiAgICBwYXNzCgpjbGFzcyBJbnRlcm5hbFN1YnNldEV4dHJhY3RvcihFeHBhdEJ1aWxkZXIpOgogICAgIiIiWE1MIHByb2Nlc3NvciB3aGljaCBjYW4gcmlwIG91dCB0aGUgaW50ZXJuYWwgZG9jdW1lbnQgdHlwZSBzdWJzZXQuIiIiCgogICAgc3Vic2V0ID0gTm9uZQoKICAgIGRlZiBnZXRTdWJzZXQoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBpbnRlcm5hbCBzdWJzZXQgYXMgYSBzdHJpbmcuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuc3Vic2V0CgogICAgZGVmIHBhcnNlRmlsZShzZWxmLCBmaWxlKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIEV4cGF0QnVpbGRlci5wYXJzZUZpbGUoc2VsZiwgZmlsZSkKICAgICAgICBleGNlcHQgUGFyc2VFc2NhcGU6CiAgICAgICAgICAgIHBhc3MKCiAgICBkZWYgcGFyc2VTdHJpbmcoc2VsZiwgc3RyaW5nKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIEV4cGF0QnVpbGRlci5wYXJzZVN0cmluZyhzZWxmLCBzdHJpbmcpCiAgICAgICAgZXhjZXB0IFBhcnNlRXNjYXBlOgogICAgICAgICAgICBwYXNzCgogICAgZGVmIGluc3RhbGwoc2VsZiwgcGFyc2VyKToKICAgICAgICBwYXJzZXIuU3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgPSBzZWxmLnN0YXJ0X2RvY3R5cGVfZGVjbF9oYW5kbGVyCiAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzZWxmLnN0YXJ0X2VsZW1lbnRfaGFuZGxlcgoKICAgIGRlZiBzdGFydF9kb2N0eXBlX2RlY2xfaGFuZGxlcihzZWxmLCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2ludGVybmFsX3N1YnNldCk6CiAgICAgICAgaWYgaGFzX2ludGVybmFsX3N1YnNldDoKICAgICAgICAgICAgcGFyc2VyID0gc2VsZi5nZXRQYXJzZXIoKQogICAgICAgICAgICBzZWxmLnN1YnNldCA9IFtdCiAgICAgICAgICAgIHBhcnNlci5EZWZhdWx0SGFuZGxlciA9IHNlbGYuc3Vic2V0LmFwcGVuZAogICAgICAgICAgICBwYXJzZXIuRW5kRG9jdHlwZURlY2xIYW5kbGVyID0gc2VsZi5lbmRfZG9jdHlwZV9kZWNsX2hhbmRsZXIKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBQYXJzZUVzY2FwZSgpCgogICAgZGVmIGVuZF9kb2N0eXBlX2RlY2xfaGFuZGxlcihzZWxmKToKICAgICAgICBzID0gJycuam9pbihzZWxmLnN1YnNldCkucmVwbGFjZSgnXHJcbicsICdcbicpLnJlcGxhY2UoJ1xyJywgJ1xuJykKICAgICAgICBzZWxmLnN1YnNldCA9IHMKICAgICAgICByYWlzZSBQYXJzZUVzY2FwZSgpCgogICAgZGVmIHN0YXJ0X2VsZW1lbnRfaGFuZGxlcihzZWxmLCBuYW1lLCBhdHRycyk6CiAgICAgICAgcmFpc2UgUGFyc2VFc2NhcGUoKQoKCmRlZiBwYXJzZShmaWxlLCBuYW1lc3BhY2VzPVRydWUpOgogICAgIiIiUGFyc2UgYSBkb2N1bWVudCwgcmV0dXJuaW5nIHRoZSByZXN1bHRpbmcgRG9jdW1lbnQgbm9kZS4KCiAgICAnZmlsZScgbWF5IGJlIGVpdGhlciBhIGZpbGUgbmFtZSBvciBhbiBvcGVuIGZpbGUgb2JqZWN0LgogICAgIiIiCiAgICBpZiBuYW1lc3BhY2VzOgogICAgICAgIGJ1aWxkZXIgPSBFeHBhdEJ1aWxkZXJOUygpCiAgICBlbHNlOgogICAgICAgIGJ1aWxkZXIgPSBFeHBhdEJ1aWxkZXIoKQoKICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgc3RyKToKICAgICAgICB3aXRoIG9wZW4oZmlsZSwgJ3JiJykgYXMgZnA6CiAgICAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIucGFyc2VGaWxlKGZwKQogICAgZWxzZToKICAgICAgICByZXN1bHQgPSBidWlsZGVyLnBhcnNlRmlsZShmaWxlKQogICAgcmV0dXJuIHJlc3VsdAoKCmRlZiBwYXJzZVN0cmluZyhzdHJpbmcsIG5hbWVzcGFjZXM9VHJ1ZSk6CiAgICAiIiJQYXJzZSBhIGRvY3VtZW50IGZyb20gYSBzdHJpbmcsIHJldHVybmluZyB0aGUgcmVzdWx0aW5nCiAgICBEb2N1bWVudCBub2RlLgogICAgIiIiCiAgICBpZiBuYW1lc3BhY2VzOgogICAgICAgIGJ1aWxkZXIgPSBFeHBhdEJ1aWxkZXJOUygpCiAgICBlbHNlOgogICAgICAgIGJ1aWxkZXIgPSBFeHBhdEJ1aWxkZXIoKQogICAgcmV0dXJuIGJ1aWxkZXIucGFyc2VTdHJpbmcoc3RyaW5nKQoKCmRlZiBwYXJzZUZyYWdtZW50KGZpbGUsIGNvbnRleHQsIG5hbWVzcGFjZXM9VHJ1ZSk6CiAgICAiIiJQYXJzZSBhIGZyYWdtZW50IG9mIGEgZG9jdW1lbnQsIGdpdmVuIHRoZSBjb250ZXh0IGZyb20gd2hpY2ggaXQKICAgIHdhcyBvcmlnaW5hbGx5IGV4dHJhY3RlZC4gIGNvbnRleHQgc2hvdWxkIGJlIHRoZSBwYXJlbnQgb2YgdGhlCiAgICBub2RlKHMpIHdoaWNoIGFyZSBpbiB0aGUgZnJhZ21lbnQuCgogICAgJ2ZpbGUnIG1heSBiZSBlaXRoZXIgYSBmaWxlIG5hbWUgb3IgYW4gb3BlbiBmaWxlIG9iamVjdC4KICAgICIiIgogICAgaWYgbmFtZXNwYWNlczoKICAgICAgICBidWlsZGVyID0gRnJhZ21lbnRCdWlsZGVyTlMoY29udGV4dCkKICAgIGVsc2U6CiAgICAgICAgYnVpbGRlciA9IEZyYWdtZW50QnVpbGRlcihjb250ZXh0KQoKICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgc3RyKToKICAgICAgICB3aXRoIG9wZW4oZmlsZSwgJ3JiJykgYXMgZnA6CiAgICAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIucGFyc2VGaWxlKGZwKQogICAgZWxzZToKICAgICAgICByZXN1bHQgPSBidWlsZGVyLnBhcnNlRmlsZShmaWxlKQogICAgcmV0dXJuIHJlc3VsdAoKCmRlZiBwYXJzZUZyYWdtZW50U3RyaW5nKHN0cmluZywgY29udGV4dCwgbmFtZXNwYWNlcz1UcnVlKToKICAgICIiIlBhcnNlIGEgZnJhZ21lbnQgb2YgYSBkb2N1bWVudCBmcm9tIGEgc3RyaW5nLCBnaXZlbiB0aGUgY29udGV4dAogICAgZnJvbSB3aGljaCBpdCB3YXMgb3JpZ2luYWxseSBleHRyYWN0ZWQuICBjb250ZXh0IHNob3VsZCBiZSB0aGUKICAgIHBhcmVudCBvZiB0aGUgbm9kZShzKSB3aGljaCBhcmUgaW4gdGhlIGZyYWdtZW50LgogICAgIiIiCiAgICBpZiBuYW1lc3BhY2VzOgogICAgICAgIGJ1aWxkZXIgPSBGcmFnbWVudEJ1aWxkZXJOUyhjb250ZXh0KQogICAgZWxzZToKICAgICAgICBidWlsZGVyID0gRnJhZ21lbnRCdWlsZGVyKGNvbnRleHQpCiAgICByZXR1cm4gYnVpbGRlci5wYXJzZVN0cmluZyhzdHJpbmcpCgoKZGVmIG1ha2VCdWlsZGVyKG9wdGlvbnMpOgogICAgIiIiQ3JlYXRlIGEgYnVpbGRlciBiYXNlZCBvbiBhbiBPcHRpb25zIG9iamVjdC4iIiIKICAgIGlmIG9wdGlvbnMubmFtZXNwYWNlczoKICAgICAgICByZXR1cm4gRXhwYXRCdWlsZGVyTlMob3B0aW9ucykKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIEV4cGF0QnVpbGRlcihvcHRpb25zKQpQSwMEFAAAAAAAAyCjVhWwFcAnDQAAJw0AABUAAAB4bWwvZG9tL21pbmljb21wYXQucHkiIiJQeXRob24gdmVyc2lvbiBjb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yIG1pbmlkb20uCgpUaGlzIG1vZHVsZSBjb250YWlucyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZApzaG91bGQgbm90IGJlIGltcG9ydGVkOyB1c2UgeG1sLmRvbS5taW5pZG9tIGluc3RlYWQuCiIiIgoKIyBUaGlzIG1vZHVsZSBzaG91bGQgb25seSBiZSBpbXBvcnRlZCB1c2luZyAiaW1wb3J0ICoiLgojCiMgVGhlIGZvbGxvd2luZyBuYW1lcyBhcmUgZGVmaW5lZDoKIwojICAgTm9kZUxpc3QgICAgICAtLSBsaWdodGVzdCBwb3NzaWJsZSBOb2RlTGlzdCBpbXBsZW1lbnRhdGlvbgojCiMgICBFbXB0eU5vZGVMaXN0IC0tIGxpZ2h0ZXN0IHBvc3NpYmxlIE5vZGVMaXN0IHRoYXQgaXMgZ3VhcmFudGVlZCB0bwojICAgICAgICAgICAgICAgICAgICByZW1haW4gZW1wdHkgKGltbXV0YWJsZSkKIwojICAgU3RyaW5nVHlwZXMgICAtLSB0dXBsZSBvZiBkZWZpbmVkIHN0cmluZyB0eXBlcwojCiMgICBkZWZwcm9wZXJ0eSAgIC0tIGZ1bmN0aW9uIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBHZXRhdHRyTWFnaWM7CiMgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZXNlIHRvZ2V0aGVyIGlzIG5lZWRlZCB0byBtYWtlIHRoZW0gd29yawojICAgICAgICAgICAgICAgICAgICBhcyBlZmZpY2llbnRseSBhcyBwb3NzaWJsZSBpbiBib3RoIFB5dGhvbiAyLjIrCiMgICAgICAgICAgICAgICAgICAgIGFuZCBvbGRlciB2ZXJzaW9ucy4gIEZvciBleGFtcGxlOgojCiMgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKEdldGF0dHJNYWdpYyk6CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIF9nZXRfbXlhdHRyKHNlbGYpOgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc29tZXRoaW5nCiMKIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZnByb3BlcnR5KE15Q2xhc3MsICJteWF0dHIiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiBzb21lIHZhbHVlIikKIwojICAgICAgICAgICAgICAgICAgICBGb3IgUHl0aG9uIDIuMiBhbmQgbmV3ZXIsIHRoaXMgd2lsbCBjb25zdHJ1Y3QgYQojICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSBvYmplY3Qgb24gdGhlIGNsYXNzLCB3aGljaCBhdm9pZHMKIyAgICAgICAgICAgICAgICAgICAgbmVlZGluZyB0byBvdmVycmlkZSBfX2dldGF0dHJfXygpLiAgSXQgd2lsbCBvbmx5CiMgICAgICAgICAgICAgICAgICAgIHdvcmsgZm9yIHJlYWQtb25seSBhdHRyaWJ1dGVzLgojCiMgICAgICAgICAgICAgICAgICAgIEZvciBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24sIGluaGVyaXRpbmcgZnJvbQojICAgICAgICAgICAgICAgICAgICBHZXRhdHRyTWFnaWMgd2lsbCB1c2UgdGhlIHRyYWRpdGlvbmFsCiMgICAgICAgICAgICAgICAgICAgIF9fZ2V0YXR0cl9fKCkgaGFja2VyeSB0byBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCwKIyAgICAgICAgICAgICAgICAgICAgYnV0IGxlc3MgZWZmaWNpZW50bHkuCiMKIyAgICAgICAgICAgICAgICAgICAgZGVmcHJvcGVydHkoKSBzaG91bGQgYmUgdXNlZCBmb3IgZWFjaCB2ZXJzaW9uIG9mCiMgICAgICAgICAgICAgICAgICAgIHRoZSByZWxldmFudCBfZ2V0Xzxwcm9wZXJ0eT4oKSBmdW5jdGlvbi4KCl9fYWxsX18gPSBbIk5vZGVMaXN0IiwgIkVtcHR5Tm9kZUxpc3QiLCAiU3RyaW5nVHlwZXMiLCAiZGVmcHJvcGVydHkiXQoKaW1wb3J0IHhtbC5kb20KClN0cmluZ1R5cGVzID0gKHN0ciwpCgoKY2xhc3MgTm9kZUxpc3QobGlzdCk6CiAgICBfX3Nsb3RzX18gPSAoKQoKICAgIGRlZiBpdGVtKHNlbGYsIGluZGV4KToKICAgICAgICBpZiAwIDw9IGluZGV4IDwgbGVuKHNlbGYpOgogICAgICAgICAgICByZXR1cm4gc2VsZltpbmRleF0KCiAgICBkZWYgX2dldF9sZW5ndGgoc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmKQoKICAgIGRlZiBfc2V0X2xlbmd0aChzZWxmLCB2YWx1ZSk6CiAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob01vZGlmaWNhdGlvbkFsbG93ZWRFcnIoCiAgICAgICAgICAgICJhdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgYXR0cmlidXRlICdsZW5ndGgnIikKCiAgICBsZW5ndGggPSBwcm9wZXJ0eShfZ2V0X2xlbmd0aCwgX3NldF9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICBkb2M9IlRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlIE5vZGVMaXN0LiIpCgogICAgIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgaWYgc3RhdGUgaXMgTm9uZToKICAgICAgICAgICAgc3RhdGUgPSBbXQogICAgICAgIHNlbGZbOl0gPSBzdGF0ZQoKCmNsYXNzIEVtcHR5Tm9kZUxpc3QodHVwbGUpOgogICAgX19zbG90c19fID0gKCkKCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgTkwgPSBOb2RlTGlzdCgpCiAgICAgICAgTkwuZXh0ZW5kKG90aGVyKQogICAgICAgIHJldHVybiBOTAoKICAgIGRlZiBfX3JhZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgTkwgPSBOb2RlTGlzdCgpCiAgICAgICAgTkwuZXh0ZW5kKG90aGVyKQogICAgICAgIHJldHVybiBOTAoKICAgIGRlZiBpdGVtKHNlbGYsIGluZGV4KToKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBfZ2V0X2xlbmd0aChzZWxmKToKICAgICAgICByZXR1cm4gMAoKICAgIGRlZiBfc2V0X2xlbmd0aChzZWxmLCB2YWx1ZSk6CiAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob01vZGlmaWNhdGlvbkFsbG93ZWRFcnIoCiAgICAgICAgICAgICJhdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgYXR0cmlidXRlICdsZW5ndGgnIikKCiAgICBsZW5ndGggPSBwcm9wZXJ0eShfZ2V0X2xlbmd0aCwgX3NldF9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICBkb2M9IlRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gdGhlIE5vZGVMaXN0LiIpCgoKZGVmIGRlZnByb3BlcnR5KGtsYXNzLCBuYW1lLCBkb2MpOgogICAgZ2V0ID0gZ2V0YXR0cihrbGFzcywgKCJfZ2V0XyIgKyBuYW1lKSkKICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUsIG5hbWU9bmFtZSk6CiAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob01vZGlmaWNhdGlvbkFsbG93ZWRFcnIoCiAgICAgICAgICAgICJhdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgYXR0cmlidXRlICIgKyByZXByKG5hbWUpKQogICAgYXNzZXJ0IG5vdCBoYXNhdHRyKGtsYXNzLCAiX3NldF8iICsgbmFtZSksIFwKICAgICAgICAgICAiZXhwZWN0ZWQgbm90IHRvIGZpbmQgX3NldF8iICsgbmFtZQogICAgcHJvcCA9IHByb3BlcnR5KGdldCwgc2V0LCBkb2M9ZG9jKQogICAgc2V0YXR0cihrbGFzcywgbmFtZSwgcHJvcCkKUEsDBBQAAAAAAAMgo1Zv57RGLAoBACwKAQASAAAAeG1sL2RvbS9taW5pZG9tLnB5IiIiU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMZXZlbCAxIERPTS4KCk5hbWVzcGFjZXMgYW5kIG90aGVyIG1pbm9yIExldmVsIDIgZmVhdHVyZXMgYXJlIGFsc28gc3VwcG9ydGVkLgoKcGFyc2UoImZvby54bWwiKQoKcGFyc2VTdHJpbmcoIjxmb28+PGJhci8+PC9mb28+IikKClRvZG86Cj09PT09CiAqIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGdldHRpbmcgZWxlbWVudHMgYW5kIHRleHQuCiAqIG1vcmUgdGVzdGluZwogKiBicmluZyBzb21lIG9mIHRoZSB3cml0ZXIgYW5kIGxpbmVhcml6ZXIgY29kZSBpbnRvIGNvbmZvcm1hbmNlIHdpdGggdGhpcwogICAgICAgIGludGVyZmFjZQogKiBTQVggMiBuYW1lc3BhY2VzCiIiIgoKaW1wb3J0IGlvCmltcG9ydCB4bWwuZG9tCgpmcm9tIHhtbC5kb20gaW1wb3J0IEVNUFRZX05BTUVTUEFDRSwgRU1QVFlfUFJFRklYLCBYTUxOU19OQU1FU1BBQ0UsIGRvbXJlZwpmcm9tIHhtbC5kb20ubWluaWNvbXBhdCBpbXBvcnQgKgpmcm9tIHhtbC5kb20ueG1sYnVpbGRlciBpbXBvcnQgRE9NSW1wbGVtZW50YXRpb25MUywgRG9jdW1lbnRMUwoKIyBUaGlzIGlzIHVzZWQgYnkgdGhlIElELWNhY2hlIGludmFsaWRhdGlvbiBjaGVja3M7IHRoZSBsaXN0IGlzbid0CiMgYWN0dWFsbHkgY29tcGxldGUsIHNpbmNlIHRoZSBub2RlcyBiZWluZyBjaGVja2VkIHdpbGwgbmV2ZXIgYmUgdGhlCiMgRE9DVU1FTlRfTk9ERSBvciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFLiAgKFRoZSBub2RlIGJlaW5nIGNoZWNrZWQgaXMKIyB0aGUgbm9kZSBiZWluZyBhZGRlZCBvciByZW1vdmVkLCBub3QgdGhlIG5vZGUgYmVpbmcgbW9kaWZpZWQuKQojCl9ub2RlVHlwZXNfd2l0aF9jaGlsZHJlbiA9ICh4bWwuZG9tLk5vZGUuRUxFTUVOVF9OT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sLmRvbS5Ob2RlLkVOVElUWV9SRUZFUkVOQ0VfTk9ERSkKCgpjbGFzcyBOb2RlKHhtbC5kb20uTm9kZSk6CiAgICBuYW1lc3BhY2VVUkkgPSBOb25lICMgdGhpcyBpcyBub24tbnVsbCBvbmx5IGZvciBlbGVtZW50cyBhbmQgYXR0cmlidXRlcwogICAgcGFyZW50Tm9kZSA9IE5vbmUKICAgIG93bmVyRG9jdW1lbnQgPSBOb25lCiAgICBuZXh0U2libGluZyA9IE5vbmUKICAgIHByZXZpb3VzU2libGluZyA9IE5vbmUKCiAgICBwcmVmaXggPSBFTVBUWV9QUkVGSVggIyBub24tbnVsbCBvbmx5IGZvciBOUyBlbGVtZW50cyBhbmQgYXR0cmlidXRlcwoKICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKICAgICAgICByZXR1cm4gVHJ1ZQoKICAgIGRlZiB0b3htbChzZWxmLCBlbmNvZGluZz1Ob25lLCBzdGFuZGFsb25lPU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmLnRvcHJldHR5eG1sKCIiLCAiIiwgZW5jb2RpbmcsIHN0YW5kYWxvbmUpCgogICAgZGVmIHRvcHJldHR5eG1sKHNlbGYsIGluZGVudD0iXHQiLCBuZXdsPSJcbiIsIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgc3RhbmRhbG9uZT1Ob25lKToKICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgogICAgICAgICAgICB3cml0ZXIgPSBpby5TdHJpbmdJTygpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgd3JpdGVyID0gaW8uVGV4dElPV3JhcHBlcihpby5CeXRlc0lPKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSJ4bWxjaGFycmVmcmVwbGFjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT0nXG4nKQogICAgICAgIGlmIHNlbGYubm9kZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9OT0RFOgogICAgICAgICAgICAjIENhbiBwYXNzIGVuY29kaW5nIG9ubHkgdG8gZG9jdW1lbnQsIHRvIHB1dCBpdCBpbnRvIFhNTCBoZWFkZXIKICAgICAgICAgICAgc2VsZi53cml0ZXhtbCh3cml0ZXIsICIiLCBpbmRlbnQsIG5ld2wsIGVuY29kaW5nLCBzdGFuZGFsb25lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYud3JpdGV4bWwod3JpdGVyLCAiIiwgaW5kZW50LCBuZXdsKQogICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiB3cml0ZXIuZ2V0dmFsdWUoKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiB3cml0ZXIuZGV0YWNoKCkuZ2V0dmFsdWUoKQoKICAgIGRlZiBoYXNDaGlsZE5vZGVzKHNlbGYpOgogICAgICAgIHJldHVybiBib29sKHNlbGYuY2hpbGROb2RlcykKCiAgICBkZWYgX2dldF9jaGlsZE5vZGVzKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmNoaWxkTm9kZXMKCiAgICBkZWYgX2dldF9maXJzdENoaWxkKHNlbGYpOgogICAgICAgIGlmIHNlbGYuY2hpbGROb2RlczoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2hpbGROb2Rlc1swXQoKICAgIGRlZiBfZ2V0X2xhc3RDaGlsZChzZWxmKToKICAgICAgICBpZiBzZWxmLmNoaWxkTm9kZXM6CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNoaWxkTm9kZXNbLTFdCgogICAgZGVmIGluc2VydEJlZm9yZShzZWxmLCBuZXdDaGlsZCwgcmVmQ2hpbGQpOgogICAgICAgIGlmIG5ld0NoaWxkLm5vZGVUeXBlID09IHNlbGYuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAgICAgZm9yIGMgaW4gdHVwbGUobmV3Q2hpbGQuY2hpbGROb2Rlcyk6CiAgICAgICAgICAgICAgICBzZWxmLmluc2VydEJlZm9yZShjLCByZWZDaGlsZCkKICAgICAgICAgICAgIyMjIFRoZSBET00gZG9lcyBub3QgY2xlYXJseSBzcGVjaWZ5IHdoYXQgdG8gcmV0dXJuIGluIHRoaXMgY2FzZQogICAgICAgICAgICByZXR1cm4gbmV3Q2hpbGQKICAgICAgICBpZiBuZXdDaGlsZC5ub2RlVHlwZSBub3QgaW4gc2VsZi5fY2hpbGRfbm9kZV90eXBlczoKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5IaWVyYXJjaHlSZXF1ZXN0RXJyKAogICAgICAgICAgICAgICAgIiVzIGNhbm5vdCBiZSBjaGlsZCBvZiAlcyIgJSAocmVwcihuZXdDaGlsZCksIHJlcHIoc2VsZikpKQogICAgICAgIGlmIG5ld0NoaWxkLnBhcmVudE5vZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIG5ld0NoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobmV3Q2hpbGQpCiAgICAgICAgaWYgcmVmQ2hpbGQgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5hcHBlbmRDaGlsZChuZXdDaGlsZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpbmRleCA9IHNlbGYuY2hpbGROb2Rlcy5pbmRleChyZWZDaGlsZCkKICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICAgICAgaWYgbmV3Q2hpbGQubm9kZVR5cGUgaW4gX25vZGVUeXBlc193aXRoX2NoaWxkcmVuOgogICAgICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCiAgICAgICAgICAgIHNlbGYuY2hpbGROb2Rlcy5pbnNlcnQoaW5kZXgsIG5ld0NoaWxkKQogICAgICAgICAgICBuZXdDaGlsZC5uZXh0U2libGluZyA9IHJlZkNoaWxkCiAgICAgICAgICAgIHJlZkNoaWxkLnByZXZpb3VzU2libGluZyA9IG5ld0NoaWxkCiAgICAgICAgICAgIGlmIGluZGV4OgogICAgICAgICAgICAgICAgbm9kZSA9IHNlbGYuY2hpbGROb2Rlc1tpbmRleC0xXQogICAgICAgICAgICAgICAgbm9kZS5uZXh0U2libGluZyA9IG5ld0NoaWxkCiAgICAgICAgICAgICAgICBuZXdDaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBub2RlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBuZXdDaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBOb25lCiAgICAgICAgICAgIG5ld0NoaWxkLnBhcmVudE5vZGUgPSBzZWxmCiAgICAgICAgcmV0dXJuIG5ld0NoaWxkCgogICAgZGVmIGFwcGVuZENoaWxkKHNlbGYsIG5vZGUpOgogICAgICAgIGlmIG5vZGUubm9kZVR5cGUgPT0gc2VsZi5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICAgICBmb3IgYyBpbiB0dXBsZShub2RlLmNoaWxkTm9kZXMpOgogICAgICAgICAgICAgICAgc2VsZi5hcHBlbmRDaGlsZChjKQogICAgICAgICAgICAjIyMgVGhlIERPTSBkb2VzIG5vdCBjbGVhcmx5IHNwZWNpZnkgd2hhdCB0byByZXR1cm4gaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHJldHVybiBub2RlCiAgICAgICAgaWYgbm9kZS5ub2RlVHlwZSBub3QgaW4gc2VsZi5fY2hpbGRfbm9kZV90eXBlczoKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5IaWVyYXJjaHlSZXF1ZXN0RXJyKAogICAgICAgICAgICAgICAgIiVzIGNhbm5vdCBiZSBjaGlsZCBvZiAlcyIgJSAocmVwcihub2RlKSwgcmVwcihzZWxmKSkpCiAgICAgICAgZWxpZiBub2RlLm5vZGVUeXBlIGluIF9ub2RlVHlwZXNfd2l0aF9jaGlsZHJlbjoKICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCiAgICAgICAgaWYgbm9kZS5wYXJlbnROb2RlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSkKICAgICAgICBfYXBwZW5kX2NoaWxkKHNlbGYsIG5vZGUpCiAgICAgICAgbm9kZS5uZXh0U2libGluZyA9IE5vbmUKICAgICAgICByZXR1cm4gbm9kZQoKICAgIGRlZiByZXBsYWNlQ2hpbGQoc2VsZiwgbmV3Q2hpbGQsIG9sZENoaWxkKToKICAgICAgICBpZiBuZXdDaGlsZC5ub2RlVHlwZSA9PSBzZWxmLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgICAgICAgIHJlZkNoaWxkID0gb2xkQ2hpbGQubmV4dFNpYmxpbmcKICAgICAgICAgICAgc2VsZi5yZW1vdmVDaGlsZChvbGRDaGlsZCkKICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCkKICAgICAgICBpZiBuZXdDaGlsZC5ub2RlVHlwZSBub3QgaW4gc2VsZi5fY2hpbGRfbm9kZV90eXBlczoKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5IaWVyYXJjaHlSZXF1ZXN0RXJyKAogICAgICAgICAgICAgICAgIiVzIGNhbm5vdCBiZSBjaGlsZCBvZiAlcyIgJSAocmVwcihuZXdDaGlsZCksIHJlcHIoc2VsZikpKQogICAgICAgIGlmIG5ld0NoaWxkIGlzIG9sZENoaWxkOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBuZXdDaGlsZC5wYXJlbnROb2RlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBuZXdDaGlsZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5ld0NoaWxkKQogICAgICAgIHRyeToKICAgICAgICAgICAgaW5kZXggPSBzZWxmLmNoaWxkTm9kZXMuaW5kZXgob2xkQ2hpbGQpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQogICAgICAgIHNlbGYuY2hpbGROb2Rlc1tpbmRleF0gPSBuZXdDaGlsZAogICAgICAgIG5ld0NoaWxkLnBhcmVudE5vZGUgPSBzZWxmCiAgICAgICAgb2xkQ2hpbGQucGFyZW50Tm9kZSA9IE5vbmUKICAgICAgICBpZiAobmV3Q2hpbGQubm9kZVR5cGUgaW4gX25vZGVUeXBlc193aXRoX2NoaWxkcmVuCiAgICAgICAgICAgIG9yIG9sZENoaWxkLm5vZGVUeXBlIGluIF9ub2RlVHlwZXNfd2l0aF9jaGlsZHJlbik6CiAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmKQogICAgICAgIG5ld0NoaWxkLm5leHRTaWJsaW5nID0gb2xkQ2hpbGQubmV4dFNpYmxpbmcKICAgICAgICBuZXdDaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBvbGRDaGlsZC5wcmV2aW91c1NpYmxpbmcKICAgICAgICBvbGRDaGlsZC5uZXh0U2libGluZyA9IE5vbmUKICAgICAgICBvbGRDaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBOb25lCiAgICAgICAgaWYgbmV3Q2hpbGQucHJldmlvdXNTaWJsaW5nOgogICAgICAgICAgICBuZXdDaGlsZC5wcmV2aW91c1NpYmxpbmcubmV4dFNpYmxpbmcgPSBuZXdDaGlsZAogICAgICAgIGlmIG5ld0NoaWxkLm5leHRTaWJsaW5nOgogICAgICAgICAgICBuZXdDaGlsZC5uZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgPSBuZXdDaGlsZAogICAgICAgIHJldHVybiBvbGRDaGlsZAoKICAgIGRlZiByZW1vdmVDaGlsZChzZWxmLCBvbGRDaGlsZCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmNoaWxkTm9kZXMucmVtb3ZlKG9sZENoaWxkKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICBpZiBvbGRDaGlsZC5uZXh0U2libGluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgb2xkQ2hpbGQubmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nID0gb2xkQ2hpbGQucHJldmlvdXNTaWJsaW5nCiAgICAgICAgaWYgb2xkQ2hpbGQucHJldmlvdXNTaWJsaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICBvbGRDaGlsZC5wcmV2aW91c1NpYmxpbmcubmV4dFNpYmxpbmcgPSBvbGRDaGlsZC5uZXh0U2libGluZwogICAgICAgIG9sZENoaWxkLm5leHRTaWJsaW5nID0gb2xkQ2hpbGQucHJldmlvdXNTaWJsaW5nID0gTm9uZQogICAgICAgIGlmIG9sZENoaWxkLm5vZGVUeXBlIGluIF9ub2RlVHlwZXNfd2l0aF9jaGlsZHJlbjoKICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCgogICAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUgPSBOb25lCiAgICAgICAgcmV0dXJuIG9sZENoaWxkCgogICAgZGVmIG5vcm1hbGl6ZShzZWxmKToKICAgICAgICBMID0gW10KICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLlRFWFRfTk9ERToKICAgICAgICAgICAgICAgIGlmIG5vdCBjaGlsZC5kYXRhOgogICAgICAgICAgICAgICAgICAgICMgZW1wdHkgdGV4dCBub2RlOyBkaXNjYXJkCiAgICAgICAgICAgICAgICAgICAgaWYgTDoKICAgICAgICAgICAgICAgICAgICAgICAgTFstMV0ubmV4dFNpYmxpbmcgPSBjaGlsZC5uZXh0U2libGluZwogICAgICAgICAgICAgICAgICAgIGlmIGNoaWxkLm5leHRTaWJsaW5nOgogICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5uZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgPSBjaGlsZC5wcmV2aW91c1NpYmxpbmcKICAgICAgICAgICAgICAgICAgICBjaGlsZC51bmxpbmsoKQogICAgICAgICAgICAgICAgZWxpZiBMIGFuZCBMWy0xXS5ub2RlVHlwZSA9PSBjaGlsZC5ub2RlVHlwZToKICAgICAgICAgICAgICAgICAgICAjIGNvbGxhcHNlIHRleHQgbm9kZQogICAgICAgICAgICAgICAgICAgIG5vZGUgPSBMWy0xXQogICAgICAgICAgICAgICAgICAgIG5vZGUuZGF0YSA9IG5vZGUuZGF0YSArIGNoaWxkLmRhdGEKICAgICAgICAgICAgICAgICAgICBub2RlLm5leHRTaWJsaW5nID0gY2hpbGQubmV4dFNpYmxpbmcKICAgICAgICAgICAgICAgICAgICBpZiBjaGlsZC5uZXh0U2libGluZzoKICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nID0gbm9kZQogICAgICAgICAgICAgICAgICAgIGNoaWxkLnVubGluaygpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIEwuYXBwZW5kKGNoaWxkKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgTC5hcHBlbmQoY2hpbGQpCiAgICAgICAgICAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICAgICBjaGlsZC5ub3JtYWxpemUoKQogICAgICAgIHNlbGYuY2hpbGROb2Rlc1s6XSA9IEwKCiAgICBkZWYgY2xvbmVOb2RlKHNlbGYsIGRlZXApOgogICAgICAgIHJldHVybiBfY2xvbmVfbm9kZShzZWxmLCBkZWVwLCBzZWxmLm93bmVyRG9jdW1lbnQgb3Igc2VsZikKCiAgICBkZWYgaXNTdXBwb3J0ZWQoc2VsZiwgZmVhdHVyZSwgdmVyc2lvbik6CiAgICAgICAgcmV0dXJuIHNlbGYub3duZXJEb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pCgogICAgZGVmIF9nZXRfbG9jYWxOYW1lKHNlbGYpOgogICAgICAgICMgT3ZlcnJpZGRlbiBpbiBFbGVtZW50IGFuZCBBdHRyIHdoZXJlIGxvY2FsTmFtZSBjYW4gYmUgTm9uLU51bGwKICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgTm9kZSBpbnRlcmZhY2VzIGZyb20gTGV2ZWwgMyAoV0QgOSBBcHJpbCAyMDAyKQoKICAgIGRlZiBpc1NhbWVOb2RlKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZiBpcyBvdGhlcgoKICAgIGRlZiBnZXRJbnRlcmZhY2Uoc2VsZiwgZmVhdHVyZSk6CiAgICAgICAgaWYgc2VsZi5pc1N1cHBvcnRlZChmZWF0dXJlLCBOb25lKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICMgVGhlICJ1c2VyIGRhdGEiIGZ1bmN0aW9ucyB1c2UgYSBkaWN0aW9uYXJ5IHRoYXQgaXMgb25seSBwcmVzZW50CiAgICAjIGlmIHNvbWUgdXNlciBkYXRhIGhhcyBiZWVuIHNldCwgc28gYmUgY2FyZWZ1bCBub3QgdG8gYXNzdW1lIGl0CiAgICAjIGV4aXN0cy4KCiAgICBkZWYgZ2V0VXNlckRhdGEoc2VsZiwga2V5KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl91c2VyX2RhdGFba2V5XVswXQogICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIEtleUVycm9yKToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgc2V0VXNlckRhdGEoc2VsZiwga2V5LCBkYXRhLCBoYW5kbGVyKToKICAgICAgICBvbGQgPSBOb25lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBkID0gc2VsZi5fdXNlcl9kYXRhCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBkID0ge30KICAgICAgICAgICAgc2VsZi5fdXNlcl9kYXRhID0gZAogICAgICAgIGlmIGtleSBpbiBkOgogICAgICAgICAgICBvbGQgPSBkW2tleV1bMF0KICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICMgaWdub3JlIGhhbmRsZXJzIHBhc3NlZCBmb3IgTm9uZQogICAgICAgICAgICBoYW5kbGVyID0gTm9uZQogICAgICAgICAgICBpZiBvbGQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBkZWwgZFtrZXldCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZFtrZXldID0gKGRhdGEsIGhhbmRsZXIpCiAgICAgICAgcmV0dXJuIG9sZAoKICAgIGRlZiBfY2FsbF91c2VyX2RhdGFfaGFuZGxlcihzZWxmLCBvcGVyYXRpb24sIHNyYywgZHN0KToKICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJfdXNlcl9kYXRhIik6CiAgICAgICAgICAgIGZvciBrZXksIChkYXRhLCBoYW5kbGVyKSBpbiBsaXN0KHNlbGYuX3VzZXJfZGF0YS5pdGVtcygpKToKICAgICAgICAgICAgICAgIGlmIGhhbmRsZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUob3BlcmF0aW9uLCBrZXksIGRhdGEsIHNyYywgZHN0KQoKICAgICMgbWluaWRvbS1zcGVjaWZpYyBBUEk6CgogICAgZGVmIHVubGluayhzZWxmKToKICAgICAgICBzZWxmLnBhcmVudE5vZGUgPSBzZWxmLm93bmVyRG9jdW1lbnQgPSBOb25lCiAgICAgICAgaWYgc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICAgICAgY2hpbGQudW5saW5rKCkKICAgICAgICAgICAgc2VsZi5jaGlsZE5vZGVzID0gTm9kZUxpc3QoKQogICAgICAgIHNlbGYucHJldmlvdXNTaWJsaW5nID0gTm9uZQogICAgICAgIHNlbGYubmV4dFNpYmxpbmcgPSBOb25lCgogICAgIyBBIE5vZGUgaXMgaXRzIG93biBjb250ZXh0IG1hbmFnZXIsIHRvIGVuc3VyZSB0aGF0IGFuIHVubGluaygpIGNhbGwgb2NjdXJzLgogICAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IGEgZmlsZSBvYmplY3Qgd29ya3MuCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV0LCBldiwgdGIpOgogICAgICAgIHNlbGYudW5saW5rKCkKCmRlZnByb3BlcnR5KE5vZGUsICJmaXJzdENoaWxkIiwgZG9jPSJGaXJzdCBjaGlsZCBub2RlLCBvciBOb25lLiIpCmRlZnByb3BlcnR5KE5vZGUsICJsYXN0Q2hpbGQiLCAgZG9jPSJMYXN0IGNoaWxkIG5vZGUsIG9yIE5vbmUuIikKZGVmcHJvcGVydHkoTm9kZSwgImxvY2FsTmFtZSIsICBkb2M9Ik5hbWVzcGFjZS1sb2NhbCBuYW1lIG9mIHRoaXMgbm9kZS4iKQoKCmRlZiBfYXBwZW5kX2NoaWxkKHNlbGYsIG5vZGUpOgogICAgIyBmYXN0IHBhdGggd2l0aCBsZXNzIGNoZWNrczsgdXNhYmxlIGJ5IERPTSBidWlsZGVycyBpZiBjYXJlZnVsCiAgICBjaGlsZE5vZGVzID0gc2VsZi5jaGlsZE5vZGVzCiAgICBpZiBjaGlsZE5vZGVzOgogICAgICAgIGxhc3QgPSBjaGlsZE5vZGVzWy0xXQogICAgICAgIG5vZGUucHJldmlvdXNTaWJsaW5nID0gbGFzdAogICAgICAgIGxhc3QubmV4dFNpYmxpbmcgPSBub2RlCiAgICBjaGlsZE5vZGVzLmFwcGVuZChub2RlKQogICAgbm9kZS5wYXJlbnROb2RlID0gc2VsZgoKZGVmIF9pbl9kb2N1bWVudChub2RlKToKICAgICMgcmV0dXJuIFRydWUgaWZmIG5vZGUgaXMgcGFydCBvZiBhIGRvY3VtZW50IHRyZWUKICAgIHdoaWxlIG5vZGUgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREU6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZQogICAgcmV0dXJuIEZhbHNlCgpkZWYgX3dyaXRlX2RhdGEod3JpdGVyLCBkYXRhKToKICAgICJXcml0ZXMgZGF0YWNoYXJzIHRvIHdyaXRlci4iCiAgICBpZiBkYXRhOgogICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKS4gXAogICAgICAgICAgICAgICAgICAgIHJlcGxhY2UoIlwiIiwgIiZxdW90OyIpLnJlcGxhY2UoIj4iLCAiJmd0OyIpCiAgICAgICAgd3JpdGVyLndyaXRlKGRhdGEpCgpkZWYgX2dldF9lbGVtZW50c19ieV90YWdOYW1lX2hlbHBlcihwYXJlbnQsIG5hbWUsIHJjKToKICAgIGZvciBub2RlIGluIHBhcmVudC5jaGlsZE5vZGVzOgogICAgICAgIGlmIG5vZGUubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUgYW5kIFwKICAgICAgICAgICAgKG5hbWUgPT0gIioiIG9yIG5vZGUudGFnTmFtZSA9PSBuYW1lKToKICAgICAgICAgICAgcmMuYXBwZW5kKG5vZGUpCiAgICAgICAgX2dldF9lbGVtZW50c19ieV90YWdOYW1lX2hlbHBlcihub2RlLCBuYW1lLCByYykKICAgIHJldHVybiByYwoKZGVmIF9nZXRfZWxlbWVudHNfYnlfdGFnTmFtZV9uc19oZWxwZXIocGFyZW50LCBuc1VSSSwgbG9jYWxOYW1lLCByYyk6CiAgICBmb3Igbm9kZSBpbiBwYXJlbnQuY2hpbGROb2RlczoKICAgICAgICBpZiBub2RlLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICAgICBpZiAoKGxvY2FsTmFtZSA9PSAiKiIgb3Igbm9kZS5sb2NhbE5hbWUgPT0gbG9jYWxOYW1lKSBhbmQKICAgICAgICAgICAgICAgIChuc1VSSSA9PSAiKiIgb3Igbm9kZS5uYW1lc3BhY2VVUkkgPT0gbnNVUkkpKToKICAgICAgICAgICAgICAgIHJjLmFwcGVuZChub2RlKQogICAgICAgICAgICBfZ2V0X2VsZW1lbnRzX2J5X3RhZ05hbWVfbnNfaGVscGVyKG5vZGUsIG5zVVJJLCBsb2NhbE5hbWUsIHJjKQogICAgcmV0dXJuIHJjCgpjbGFzcyBEb2N1bWVudEZyYWdtZW50KE5vZGUpOgogICAgbm9kZVR5cGUgPSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKICAgIG5vZGVOYW1lID0gIiNkb2N1bWVudC1mcmFnbWVudCIKICAgIG5vZGVWYWx1ZSA9IE5vbmUKICAgIGF0dHJpYnV0ZXMgPSBOb25lCiAgICBwYXJlbnROb2RlID0gTm9uZQogICAgX2NoaWxkX25vZGVfdHlwZXMgPSAoTm9kZS5FTEVNRU5UX05PREUsCiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLlRFWFRfTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZS5FTlRJVFlfUkVGRVJFTkNFX05PREUsCiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUuQ09NTUVOVF9OT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZS5OT1RBVElPTl9OT0RFKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCgoKY2xhc3MgQXR0cihOb2RlKToKICAgIF9fc2xvdHNfXz0oJ19uYW1lJywgJ192YWx1ZScsICduYW1lc3BhY2VVUkknLAogICAgICAgICAgICAgICAnX3ByZWZpeCcsICdjaGlsZE5vZGVzJywgJ19sb2NhbE5hbWUnLCAnb3duZXJEb2N1bWVudCcsICdvd25lckVsZW1lbnQnKQogICAgbm9kZVR5cGUgPSBOb2RlLkFUVFJJQlVURV9OT0RFCiAgICBhdHRyaWJ1dGVzID0gTm9uZQogICAgc3BlY2lmaWVkID0gRmFsc2UKICAgIF9pc19pZCA9IEZhbHNlCgogICAgX2NoaWxkX25vZGVfdHlwZXMgPSAoTm9kZS5URVhUX05PREUsIE5vZGUuRU5USVRZX1JFRkVSRU5DRV9OT0RFKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxTmFtZSwgbmFtZXNwYWNlVVJJPUVNUFRZX05BTUVTUEFDRSwgbG9jYWxOYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgcHJlZml4PU5vbmUpOgogICAgICAgIHNlbGYub3duZXJFbGVtZW50ID0gTm9uZQogICAgICAgIHNlbGYuX25hbWUgPSBxTmFtZQogICAgICAgIHNlbGYubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCiAgICAgICAgc2VsZi5fcHJlZml4ID0gcHJlZml4CiAgICAgICAgaWYgbG9jYWxOYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICBzZWxmLl9sb2NhbE5hbWUgPSBsb2NhbE5hbWUKICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCgogICAgICAgICMgQWRkIHRoZSBzaW5nbGUgY2hpbGQgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mIHRoZSBhdHRyCiAgICAgICAgc2VsZi5jaGlsZE5vZGVzLmFwcGVuZChUZXh0KCkpCgogICAgICAgICMgbm9kZVZhbHVlIGFuZCB2YWx1ZSBhcmUgc2V0IGVsc2V3aGVyZQoKICAgIGRlZiBfZ2V0X2xvY2FsTmFtZShzZWxmKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhbE5hbWUKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm5vZGVOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCgogICAgZGVmIF9nZXRfc3BlY2lmaWVkKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnNwZWNpZmllZAoKICAgIGRlZiBfZ2V0X25hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKCiAgICBkZWYgX3NldF9uYW1lKHNlbGYsIHZhbHVlKToKICAgICAgICBzZWxmLl9uYW1lID0gdmFsdWUKICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQoKICAgIG5vZGVOYW1lID0gbmFtZSA9IHByb3BlcnR5KF9nZXRfbmFtZSwgX3NldF9uYW1lKQoKICAgIGRlZiBfZ2V0X3ZhbHVlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQoKICAgIGRlZiBfc2V0X3ZhbHVlKHNlbGYsIHZhbHVlKToKICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbHVlCiAgICAgICAgc2VsZi5jaGlsZE5vZGVzWzBdLmRhdGEgPSB2YWx1ZQogICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCiAgICAgICAgc2VsZi5jaGlsZE5vZGVzWzBdLmRhdGEgPSB2YWx1ZQoKICAgIG5vZGVWYWx1ZSA9IHZhbHVlID0gcHJvcGVydHkoX2dldF92YWx1ZSwgX3NldF92YWx1ZSkKCiAgICBkZWYgX2dldF9wcmVmaXgoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3ByZWZpeAoKICAgIGRlZiBfc2V0X3ByZWZpeChzZWxmLCBwcmVmaXgpOgogICAgICAgIG5zdXJpID0gc2VsZi5uYW1lc3BhY2VVUkkKICAgICAgICBpZiBwcmVmaXggPT0gInhtbG5zIjoKICAgICAgICAgICAgaWYgbnN1cmkgYW5kIG5zdXJpICE9IFhNTE5TX05BTUVTUEFDRToKICAgICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTmFtZXNwYWNlRXJyKAogICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHVzZSBvZiAneG1sbnMnIHByZWZpeCBmb3IgdGhlIHdyb25nIG5hbWVzcGFjZSIpCiAgICAgICAgc2VsZi5fcHJlZml4ID0gcHJlZml4CiAgICAgICAgaWYgcHJlZml4IGlzIE5vbmU6CiAgICAgICAgICAgIG5ld05hbWUgPSBzZWxmLmxvY2FsTmFtZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5ld05hbWUgPSAiJXM6JXMiICUgKHByZWZpeCwgc2VsZi5sb2NhbE5hbWUpCiAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQ6CiAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKICAgICAgICBzZWxmLm5hbWUgPSBuZXdOYW1lCgogICAgcHJlZml4ID0gcHJvcGVydHkoX2dldF9wcmVmaXgsIF9zZXRfcHJlZml4KQoKICAgIGRlZiB1bmxpbmsoc2VsZik6CiAgICAgICAgIyBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGNhbGwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24KICAgICAgICAjIHNpbmNlIG1vc3Qgb2YgdGhhdCBpcyBub3QgbmVlZGVkLCBhbmQgdGhlIGV4cGVuc2Ugb2YgdGhlCiAgICAgICAgIyBtZXRob2QgY2FsbCBpcyBub3Qgd2FycmFudGVkLiAgV2UgZHVwbGljYXRlIHRoZSByZW1vdmFsIG9mCiAgICAgICAgIyBjaGlsZHJlbiwgYnV0IHRoYXQncyBhbGwgd2UgbmVlZGVkIGZyb20gdGhlIGJhc2UgY2xhc3MuCiAgICAgICAgZWxlbSA9IHNlbGYub3duZXJFbGVtZW50CiAgICAgICAgaWYgZWxlbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgZGVsIGVsZW0uX2F0dHJzW3NlbGYubm9kZU5hbWVdCiAgICAgICAgICAgIGRlbCBlbGVtLl9hdHRyc05TWyhzZWxmLm5hbWVzcGFjZVVSSSwgc2VsZi5sb2NhbE5hbWUpXQogICAgICAgICAgICBpZiBzZWxmLl9pc19pZDoKICAgICAgICAgICAgICAgIHNlbGYuX2lzX2lkID0gRmFsc2UKICAgICAgICAgICAgICAgIGVsZW0uX21hZ2ljX2lkX25vZGVzIC09IDEKICAgICAgICAgICAgICAgIHNlbGYub3duZXJEb2N1bWVudC5fbWFnaWNfaWRfY291bnQgLT0gMQogICAgICAgIGZvciBjaGlsZCBpbiBzZWxmLmNoaWxkTm9kZXM6CiAgICAgICAgICAgIGNoaWxkLnVubGluaygpCiAgICAgICAgZGVsIHNlbGYuY2hpbGROb2Rlc1s6XQoKICAgIGRlZiBfZ2V0X2lzSWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5faXNfaWQ6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgZG9jID0gc2VsZi5vd25lckRvY3VtZW50CiAgICAgICAgZWxlbSA9IHNlbGYub3duZXJFbGVtZW50CiAgICAgICAgaWYgZG9jIGlzIE5vbmUgb3IgZWxlbSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAgICAgaW5mbyA9IGRvYy5fZ2V0X2VsZW1faW5mbyhlbGVtKQogICAgICAgIGlmIGluZm8gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgaWYgc2VsZi5uYW1lc3BhY2VVUkk6CiAgICAgICAgICAgIHJldHVybiBpbmZvLmlzSWROUyhzZWxmLm5hbWVzcGFjZVVSSSwgc2VsZi5sb2NhbE5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGluZm8uaXNJZChzZWxmLm5vZGVOYW1lKQoKICAgIGRlZiBfZ2V0X3NjaGVtYVR5cGUoc2VsZik6CiAgICAgICAgZG9jID0gc2VsZi5vd25lckRvY3VtZW50CiAgICAgICAgZWxlbSA9IHNlbGYub3duZXJFbGVtZW50CiAgICAgICAgaWYgZG9jIGlzIE5vbmUgb3IgZWxlbSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gX25vX3R5cGUKCiAgICAgICAgaW5mbyA9IGRvYy5fZ2V0X2VsZW1faW5mbyhlbGVtKQogICAgICAgIGlmIGluZm8gaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIF9ub190eXBlCiAgICAgICAgaWYgc2VsZi5uYW1lc3BhY2VVUkk6CiAgICAgICAgICAgIHJldHVybiBpbmZvLmdldEF0dHJpYnV0ZVR5cGVOUyhzZWxmLm5hbWVzcGFjZVVSSSwgc2VsZi5sb2NhbE5hbWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGluZm8uZ2V0QXR0cmlidXRlVHlwZShzZWxmLm5vZGVOYW1lKQoKZGVmcHJvcGVydHkoQXR0ciwgImlzSWQiLCAgICAgICBkb2M9IlRydWUgaWYgdGhpcyBhdHRyaWJ1dGUgaXMgYW4gSUQuIikKZGVmcHJvcGVydHkoQXR0ciwgImxvY2FsTmFtZSIsICBkb2M9Ik5hbWVzcGFjZS1sb2NhbCBuYW1lIG9mIHRoaXMgYXR0cmlidXRlLiIpCmRlZnByb3BlcnR5KEF0dHIsICJzY2hlbWFUeXBlIiwgZG9jPSJTY2hlbWEgdHlwZSBmb3IgdGhpcyBhdHRyaWJ1dGUuIikKCgpjbGFzcyBOYW1lZE5vZGVNYXAob2JqZWN0KToKICAgICIiIlRoZSBhdHRyaWJ1dGUgbGlzdCBpcyBhIHRyYW5zaWVudCBpbnRlcmZhY2UgdG8gdGhlIHVuZGVybHlpbmcKICAgIGRpY3Rpb25hcmllcy4gIE11dGF0aW9ucyBoZXJlIHdpbGwgY2hhbmdlIHRoZSB1bmRlcmx5aW5nIGVsZW1lbnQncwogICAgZGljdGlvbmFyeS4KCiAgICBPcmRlcmluZyBpcyBpbXBvc2VkIGFydGlmaWNpYWxseSBhbmQgZG9lcyBub3QgcmVmbGVjdCB0aGUgb3JkZXIgb2YKICAgIGF0dHJpYnV0ZXMgYXMgZm91bmQgaW4gYW4gaW5wdXQgZG9jdW1lbnQuCiAgICAiIiIKCiAgICBfX3Nsb3RzX18gPSAoJ19hdHRycycsICdfYXR0cnNOUycsICdfb3duZXJFbGVtZW50JykKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0cnMsIGF0dHJzTlMsIG93bmVyRWxlbWVudCk6CiAgICAgICAgc2VsZi5fYXR0cnMgPSBhdHRycwogICAgICAgIHNlbGYuX2F0dHJzTlMgPSBhdHRyc05TCiAgICAgICAgc2VsZi5fb3duZXJFbGVtZW50ID0gb3duZXJFbGVtZW50CgogICAgZGVmIF9nZXRfbGVuZ3RoKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5fYXR0cnMpCgogICAgZGVmIGl0ZW0oc2VsZiwgaW5kZXgpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGZbbGlzdChzZWxmLl9hdHRycy5rZXlzKCkpW2luZGV4XV0KICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgaXRlbXMoc2VsZik6CiAgICAgICAgTCA9IFtdCiAgICAgICAgZm9yIG5vZGUgaW4gc2VsZi5fYXR0cnMudmFsdWVzKCk6CiAgICAgICAgICAgIEwuYXBwZW5kKChub2RlLm5vZGVOYW1lLCBub2RlLnZhbHVlKSkKICAgICAgICByZXR1cm4gTAoKICAgIGRlZiBpdGVtc05TKHNlbGYpOgogICAgICAgIEwgPSBbXQogICAgICAgIGZvciBub2RlIGluIHNlbGYuX2F0dHJzLnZhbHVlcygpOgogICAgICAgICAgICBMLmFwcGVuZCgoKG5vZGUubmFtZXNwYWNlVVJJLCBub2RlLmxvY2FsTmFtZSksIG5vZGUudmFsdWUpKQogICAgICAgIHJldHVybiBMCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgogICAgICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuX2F0dHJzCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGtleSBpbiBzZWxmLl9hdHRyc05TCgogICAgZGVmIGtleXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzLmtleXMoKQoKICAgIGRlZiBrZXlzTlMoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzTlMua2V5cygpCgogICAgZGVmIHZhbHVlcyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnMudmFsdWVzKCkKCiAgICBkZWYgZ2V0KHNlbGYsIG5hbWUsIHZhbHVlPU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmLl9hdHRycy5nZXQobmFtZSwgdmFsdWUpCgogICAgX19sZW5fXyA9IF9nZXRfbGVuZ3RoCgogICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIGdldGF0dHIob3RoZXIsICJfYXR0cnMiLCBOb25lKToKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gKGlkKHNlbGYpID4gaWQob3RoZXIpKSAtIChpZChzZWxmKSA8IGlkKG90aGVyKSkKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCgogICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPj0gMAoKICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID4gMAoKICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKCiAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8IDAKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgYXR0bmFtZV9vcl90dXBsZSk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShhdHRuYW1lX29yX3R1cGxlLCB0dXBsZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TW2F0dG5hbWVfb3JfdHVwbGVdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW2F0dG5hbWVfb3JfdHVwbGVdCgogICAgIyBzYW1lIGFzIHNldAogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGF0dG5hbWUsIHZhbHVlKToKICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBub2RlID0gc2VsZi5fYXR0cnNbYXR0bmFtZV0KICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgbm9kZSA9IEF0dHIoYXR0bmFtZSkKICAgICAgICAgICAgICAgIG5vZGUub3duZXJEb2N1bWVudCA9IHNlbGYuX293bmVyRWxlbWVudC5vd25lckRvY3VtZW50CiAgICAgICAgICAgICAgICBzZWxmLnNldE5hbWVkSXRlbShub2RlKQogICAgICAgICAgICBub2RlLnZhbHVlID0gdmFsdWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgQXR0cik6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3IgQXR0ciBvYmplY3QiKQogICAgICAgICAgICBub2RlID0gdmFsdWUKICAgICAgICAgICAgc2VsZi5zZXROYW1lZEl0ZW0obm9kZSkKCiAgICBkZWYgZ2V0TmFtZWRJdGVtKHNlbGYsIG5hbWUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW25hbWVdCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiBnZXROYW1lZEl0ZW1OUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNOU1sobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgcmVtb3ZlTmFtZWRJdGVtKHNlbGYsIG5hbWUpOgogICAgICAgIG4gPSBzZWxmLmdldE5hbWVkSXRlbShuYW1lKQogICAgICAgIGlmIG4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLl9vd25lckVsZW1lbnQpCiAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc1tuLm5vZGVOYW1lXQogICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNOU1sobi5uYW1lc3BhY2VVUkksIG4ubG9jYWxOYW1lKV0KICAgICAgICAgICAgaWYgaGFzYXR0cihuLCAnb3duZXJFbGVtZW50Jyk6CiAgICAgICAgICAgICAgICBuLm93bmVyRWxlbWVudCA9IE5vbmUKICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKCiAgICBkZWYgcmVtb3ZlTmFtZWRJdGVtTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgogICAgICAgIG4gPSBzZWxmLmdldE5hbWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKQogICAgICAgIGlmIG4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLl9vd25lckVsZW1lbnQpCiAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc05TWyhuLm5hbWVzcGFjZVVSSSwgbi5sb2NhbE5hbWUpXQogICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNbbi5ub2RlTmFtZV0KICAgICAgICAgICAgaWYgaGFzYXR0cihuLCAnb3duZXJFbGVtZW50Jyk6CiAgICAgICAgICAgICAgICBuLm93bmVyRWxlbWVudCA9IE5vbmUKICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKCiAgICBkZWYgc2V0TmFtZWRJdGVtKHNlbGYsIG5vZGUpOgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUsIEF0dHIpOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLkhpZXJhcmNoeVJlcXVlc3RFcnIoCiAgICAgICAgICAgICAgICAiJXMgY2Fubm90IGJlIGNoaWxkIG9mICVzIiAlIChyZXByKG5vZGUpLCByZXByKHNlbGYpKSkKICAgICAgICBvbGQgPSBzZWxmLl9hdHRycy5nZXQobm9kZS5uYW1lKQogICAgICAgIGlmIG9sZDoKICAgICAgICAgICAgb2xkLnVubGluaygpCiAgICAgICAgc2VsZi5fYXR0cnNbbm9kZS5uYW1lXSA9IG5vZGUKICAgICAgICBzZWxmLl9hdHRyc05TWyhub2RlLm5hbWVzcGFjZVVSSSwgbm9kZS5sb2NhbE5hbWUpXSA9IG5vZGUKICAgICAgICBub2RlLm93bmVyRWxlbWVudCA9IHNlbGYuX293bmVyRWxlbWVudAogICAgICAgIF9jbGVhcl9pZF9jYWNoZShub2RlLm93bmVyRWxlbWVudCkKICAgICAgICByZXR1cm4gb2xkCgogICAgZGVmIHNldE5hbWVkSXRlbU5TKHNlbGYsIG5vZGUpOgogICAgICAgIHJldHVybiBzZWxmLnNldE5hbWVkSXRlbShub2RlKQoKICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBhdHRuYW1lX29yX3R1cGxlKToKICAgICAgICBub2RlID0gc2VsZlthdHRuYW1lX29yX3R1cGxlXQogICAgICAgIF9jbGVhcl9pZF9jYWNoZShub2RlLm93bmVyRWxlbWVudCkKICAgICAgICBub2RlLnVubGluaygpCgogICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnMsIHNlbGYuX2F0dHJzTlMsIHNlbGYuX293bmVyRWxlbWVudAoKICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgogICAgICAgIHNlbGYuX2F0dHJzLCBzZWxmLl9hdHRyc05TLCBzZWxmLl9vd25lckVsZW1lbnQgPSBzdGF0ZQoKZGVmcHJvcGVydHkoTmFtZWROb2RlTWFwLCAibGVuZ3RoIiwKICAgICAgICAgICAgZG9jPSJOdW1iZXIgb2Ygbm9kZXMgaW4gdGhlIE5hbWVkTm9kZU1hcC4iKQoKQXR0cmlidXRlTGlzdCA9IE5hbWVkTm9kZU1hcAoKCmNsYXNzIFR5cGVJbmZvKG9iamVjdCk6CiAgICBfX3Nsb3RzX18gPSAnbmFtZXNwYWNlJywgJ25hbWUnCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWVzcGFjZSwgbmFtZSk6CiAgICAgICAgc2VsZi5uYW1lc3BhY2UgPSBuYW1lc3BhY2UKICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYubmFtZXNwYWNlOgogICAgICAgICAgICByZXR1cm4gIjwlcyAlciAoZnJvbSAlcik+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWVzcGFjZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gIjwlcyAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUpCgogICAgZGVmIF9nZXRfbmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5uYW1lCgogICAgZGVmIF9nZXRfbmFtZXNwYWNlKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLm5hbWVzcGFjZQoKX25vX3R5cGUgPSBUeXBlSW5mbyhOb25lLCBOb25lKQoKY2xhc3MgRWxlbWVudChOb2RlKToKICAgIF9fc2xvdHNfXz0oJ293bmVyRG9jdW1lbnQnLCAncGFyZW50Tm9kZScsICd0YWdOYW1lJywgJ25vZGVOYW1lJywgJ3ByZWZpeCcsCiAgICAgICAgICAgICAgICduYW1lc3BhY2VVUkknLCAnX2xvY2FsTmFtZScsICdjaGlsZE5vZGVzJywgJ19hdHRycycsICdfYXR0cnNOUycsCiAgICAgICAgICAgICAgICduZXh0U2libGluZycsICdwcmV2aW91c1NpYmxpbmcnKQogICAgbm9kZVR5cGUgPSBOb2RlLkVMRU1FTlRfTk9ERQogICAgbm9kZVZhbHVlID0gTm9uZQogICAgc2NoZW1hVHlwZSA9IF9ub190eXBlCgogICAgX21hZ2ljX2lkX25vZGVzID0gMAoKICAgIF9jaGlsZF9ub2RlX3R5cGVzID0gKE5vZGUuRUxFTUVOVF9OT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUsCiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLkNPTU1FTlRfTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUuVEVYVF9OT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZS5DREFUQV9TRUNUSU9OX05PREUsCiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLkVOVElUWV9SRUZFUkVOQ0VfTk9ERSkKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGFnTmFtZSwgbmFtZXNwYWNlVVJJPUVNUFRZX05BTUVTUEFDRSwgcHJlZml4PU5vbmUsCiAgICAgICAgICAgICAgICAgbG9jYWxOYW1lPU5vbmUpOgogICAgICAgIHNlbGYucGFyZW50Tm9kZSA9IE5vbmUKICAgICAgICBzZWxmLnRhZ05hbWUgPSBzZWxmLm5vZGVOYW1lID0gdGFnTmFtZQogICAgICAgIHNlbGYucHJlZml4ID0gcHJlZml4CiAgICAgICAgc2VsZi5uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkkKICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCiAgICAgICAgc2VsZi5uZXh0U2libGluZyA9IHNlbGYucHJldmlvdXNTaWJsaW5nID0gTm9uZQoKICAgICAgICAjIEF0dHJpYnV0ZSBkaWN0aW9uYXJpZXMgYXJlIGxhemlseSBjcmVhdGVkCiAgICAgICAgIyBhdHRyaWJ1dGVzIGFyZSBkb3VibGUtaW5kZXhlZDoKICAgICAgICAjICAgIHRhZ05hbWUgLT4gQXR0cmlidXRlCiAgICAgICAgIyAgICBVUkksbG9jYWxOYW1lIC0+IEF0dHJpYnV0ZQogICAgICAgICMgaW4gdGhlIGZ1dHVyZTogY29uc2lkZXIgbGF6eSBnZW5lcmF0aW9uCiAgICAgICAgIyBvZiBhdHRyaWJ1dGUgb2JqZWN0cyB0aGlzIGlzIHRvbyB0cmlja3kKICAgICAgICAjIGZvciBub3cgYmVjYXVzZSBvZiBoZWFkYWNoZXMgd2l0aAogICAgICAgICMgbmFtZXNwYWNlcy4KICAgICAgICBzZWxmLl9hdHRycyA9IE5vbmUKICAgICAgICBzZWxmLl9hdHRyc05TID0gTm9uZQoKICAgIGRlZiBfZW5zdXJlX2F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKICAgICAgICAgICAgc2VsZi5fYXR0cnMgPSB7fQogICAgICAgICAgICBzZWxmLl9hdHRyc05TID0ge30KCiAgICBkZWYgX2dldF9sb2NhbE5hbWUoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fbG9jYWxOYW1lCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCgogICAgZGVmIF9nZXRfdGFnTmFtZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lCgogICAgZGVmIHVubGluayhzZWxmKToKICAgICAgICBpZiBzZWxmLl9hdHRycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgZm9yIGF0dHIgaW4gbGlzdChzZWxmLl9hdHRycy52YWx1ZXMoKSk6CiAgICAgICAgICAgICAgICBhdHRyLnVubGluaygpCiAgICAgICAgc2VsZi5fYXR0cnMgPSBOb25lCiAgICAgICAgc2VsZi5fYXR0cnNOUyA9IE5vbmUKICAgICAgICBOb2RlLnVubGluayhzZWxmKQoKICAgIGRlZiBnZXRBdHRyaWJ1dGUoc2VsZiwgYXR0bmFtZSk6CiAgICAgICAgIiIiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUuCgogICAgICAgIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlIG5hbWVkIGF0dG5hbWUgYXMKICAgICAgICBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90CiAgICAgICAgaGF2ZSBzdWNoIGFuIGF0dHJpYnV0ZS4gTm90ZSB0aGF0IGFuIGVtcHR5IHN0cmluZyBtYXkgYWxzbyBiZQogICAgICAgIHJldHVybmVkIGFzIGFuIGV4cGxpY2l0bHkgZ2l2ZW4gYXR0cmlidXRlIHZhbHVlLCB1c2UgdGhlCiAgICAgICAgaGFzQXR0cmlidXRlIG1ldGhvZCB0byBkaXN0aW5ndWlzaCB0aGVzZSB0d28gY2FzZXMuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNbYXR0bmFtZV0udmFsdWUKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJldHVybiAiIgoKICAgIGRlZiBnZXRBdHRyaWJ1dGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CiAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TWyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSldLnZhbHVlCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByZXR1cm4gIiIKCiAgICBkZWYgc2V0QXR0cmlidXRlKHNlbGYsIGF0dG5hbWUsIHZhbHVlKToKICAgICAgICBhdHRyID0gc2VsZi5nZXRBdHRyaWJ1dGVOb2RlKGF0dG5hbWUpCiAgICAgICAgaWYgYXR0ciBpcyBOb25lOgogICAgICAgICAgICBhdHRyID0gQXR0cihhdHRuYW1lKQogICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUgIyBhbHNvIHNldHMgbm9kZVZhbHVlCiAgICAgICAgICAgIGF0dHIub3duZXJEb2N1bWVudCA9IHNlbGYub3duZXJEb2N1bWVudAogICAgICAgICAgICBzZWxmLnNldEF0dHJpYnV0ZU5vZGUoYXR0cikKICAgICAgICBlbGlmIHZhbHVlICE9IGF0dHIudmFsdWU6CiAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQogICAgICAgICAgICBpZiBhdHRyLmlzSWQ6CiAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZikKCiAgICBkZWYgc2V0QXR0cmlidXRlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCB2YWx1ZSk6CiAgICAgICAgcHJlZml4LCBsb2NhbG5hbWUgPSBfbnNzcGxpdChxdWFsaWZpZWROYW1lKQogICAgICAgIGF0dHIgPSBzZWxmLmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsbmFtZSkKICAgICAgICBpZiBhdHRyIGlzIE5vbmU6CiAgICAgICAgICAgIGF0dHIgPSBBdHRyKHF1YWxpZmllZE5hbWUsIG5hbWVzcGFjZVVSSSwgbG9jYWxuYW1lLCBwcmVmaXgpCiAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQogICAgICAgICAgICBhdHRyLm93bmVyRG9jdW1lbnQgPSBzZWxmLm93bmVyRG9jdW1lbnQKICAgICAgICAgICAgc2VsZi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgdmFsdWUgIT0gYXR0ci52YWx1ZToKICAgICAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQogICAgICAgICAgICAgICAgaWYgYXR0ci5pc0lkOgogICAgICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmKQogICAgICAgICAgICBpZiBhdHRyLnByZWZpeCAhPSBwcmVmaXg6CiAgICAgICAgICAgICAgICBhdHRyLnByZWZpeCA9IHByZWZpeAogICAgICAgICAgICAgICAgYXR0ci5ub2RlTmFtZSA9IHF1YWxpZmllZE5hbWUKCiAgICBkZWYgZ2V0QXR0cmlidXRlTm9kZShzZWxmLCBhdHRybmFtZSk6CiAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnMuZ2V0KGF0dHJuYW1lKQoKICAgIGRlZiBnZXRBdHRyaWJ1dGVOb2RlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgogICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNOUy5nZXQoKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSkKCiAgICBkZWYgc2V0QXR0cmlidXRlTm9kZShzZWxmLCBhdHRyKToKICAgICAgICBpZiBhdHRyLm93bmVyRWxlbWVudCBub3QgaW4gKE5vbmUsIHNlbGYpOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLkludXNlQXR0cmlidXRlRXJyKCJhdHRyaWJ1dGUgbm9kZSBhbHJlYWR5IG93bmVkIikKICAgICAgICBzZWxmLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgb2xkMSA9IHNlbGYuX2F0dHJzLmdldChhdHRyLm5hbWUsIE5vbmUpCiAgICAgICAgaWYgb2xkMSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5yZW1vdmVBdHRyaWJ1dGVOb2RlKG9sZDEpCiAgICAgICAgb2xkMiA9IHNlbGYuX2F0dHJzTlMuZ2V0KChhdHRyLm5hbWVzcGFjZVVSSSwgYXR0ci5sb2NhbE5hbWUpLCBOb25lKQogICAgICAgIGlmIG9sZDIgaXMgbm90IE5vbmUgYW5kIG9sZDIgaXMgbm90IG9sZDE6CiAgICAgICAgICAgIHNlbGYucmVtb3ZlQXR0cmlidXRlTm9kZShvbGQyKQogICAgICAgIF9zZXRfYXR0cmlidXRlX25vZGUoc2VsZiwgYXR0cikKCiAgICAgICAgaWYgb2xkMSBpcyBub3QgYXR0cjoKICAgICAgICAgICAgIyBJdCBtaWdodCBoYXZlIGFscmVhZHkgYmVlbiBwYXJ0IG9mIHRoaXMgbm9kZSwgaW4gd2hpY2ggY2FzZQogICAgICAgICAgICAjIGl0IGRvZXNuJ3QgcmVwcmVzZW50IGEgY2hhbmdlLCBhbmQgc2hvdWxkIG5vdCBiZSByZXR1cm5lZC4KICAgICAgICAgICAgcmV0dXJuIG9sZDEKICAgICAgICBpZiBvbGQyIGlzIG5vdCBhdHRyOgogICAgICAgICAgICByZXR1cm4gb2xkMgoKICAgIHNldEF0dHJpYnV0ZU5vZGVOUyA9IHNldEF0dHJpYnV0ZU5vZGUKCiAgICBkZWYgcmVtb3ZlQXR0cmlidXRlKHNlbGYsIG5hbWUpOgogICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBhdHRyID0gc2VsZi5fYXR0cnNbbmFtZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQogICAgICAgIHNlbGYucmVtb3ZlQXR0cmlidXRlTm9kZShhdHRyKQoKICAgIGRlZiByZW1vdmVBdHRyaWJ1dGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CiAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF0dHIgPSBzZWxmLl9hdHRyc05TWyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSldCiAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICBzZWxmLnJlbW92ZUF0dHJpYnV0ZU5vZGUoYXR0cikKCiAgICBkZWYgcmVtb3ZlQXR0cmlidXRlTm9kZShzZWxmLCBub2RlKToKICAgICAgICBpZiBub2RlIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fYXR0cnNbbm9kZS5uYW1lXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCiAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCiAgICAgICAgbm9kZS51bmxpbmsoKQogICAgICAgICMgUmVzdG9yZSB0aGlzIHNpbmNlIHRoZSBub2RlIGlzIHN0aWxsIHVzZWZ1bCBhbmQgb3RoZXJ3aXNlCiAgICAgICAgIyB1bmxpbmtlZAogICAgICAgIG5vZGUub3duZXJEb2N1bWVudCA9IHNlbGYub3duZXJEb2N1bWVudAogICAgICAgIHJldHVybiBub2RlCgogICAgcmVtb3ZlQXR0cmlidXRlTm9kZU5TID0gcmVtb3ZlQXR0cmlidXRlTm9kZQoKICAgIGRlZiBoYXNBdHRyaWJ1dGUoc2VsZiwgbmFtZSk6CiAgICAgICAgIiIiQ2hlY2tzIHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIGFuIGF0dHJpYnV0ZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KCiAgICAgICAgUmV0dXJucyBUcnVlIGlmIHRoZSBlbGVtZW50IGhhcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuCiAgICAgICAgT3RoZXJ3aXNlLCByZXR1cm5zIEZhbHNlLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiBuYW1lIGluIHNlbGYuX2F0dHJzCgogICAgZGVmIGhhc0F0dHJpYnV0ZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIHJldHVybiAobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpIGluIHNlbGYuX2F0dHJzTlMKCiAgICBkZWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgIiIiUmV0dXJucyBhbGwgZGVzY2VuZGFudCBlbGVtZW50cyB3aXRoIHRoZSBnaXZlbiB0YWcgbmFtZS4KCiAgICAgICAgUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgZGVzY2VuZGFudCBlbGVtZW50cyAobm90IGRpcmVjdCBjaGlsZHJlbgogICAgICAgIG9ubHkpIHdpdGggdGhlIHNwZWNpZmllZCB0YWcgbmFtZS4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gX2dldF9lbGVtZW50c19ieV90YWdOYW1lX2hlbHBlcihzZWxmLCBuYW1lLCBOb2RlTGlzdCgpKQoKICAgIGRlZiBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKICAgICAgICByZXR1cm4gX2dldF9lbGVtZW50c19ieV90YWdOYW1lX25zX2hlbHBlcigKICAgICAgICAgICAgc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUsIE5vZGVMaXN0KCkpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPERPTSBFbGVtZW50OiAlcyBhdCAlI3g+IiAlIChzZWxmLnRhZ05hbWUsIGlkKHNlbGYpKQoKICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiKToKICAgICAgICAiIiJXcml0ZSBhbiBYTUwgZWxlbWVudCB0byBhIGZpbGUtbGlrZSBvYmplY3QKCiAgICAgICAgV3JpdGUgdGhlIGVsZW1lbnQgdG8gdGhlIHdyaXRlciBvYmplY3QgdGhhdCBtdXN0IHByb3ZpZGUKICAgICAgICBhIHdyaXRlIG1ldGhvZCAoZS5nLiBhIGZpbGUgb3IgU3RyaW5nSU8gb2JqZWN0KS4KICAgICAgICAiIiIKICAgICAgICAjIGluZGVudCA9IGN1cnJlbnQgaW5kZW50YXRpb24KICAgICAgICAjIGFkZGluZGVudCA9IGluZGVudGF0aW9uIHRvIGFkZCB0byBoaWdoZXIgbGV2ZWxzCiAgICAgICAgIyBuZXdsID0gbmV3bGluZSBzdHJpbmcKICAgICAgICB3cml0ZXIud3JpdGUoaW5kZW50KyI8IiArIHNlbGYudGFnTmFtZSkKCiAgICAgICAgYXR0cnMgPSBzZWxmLl9nZXRfYXR0cmlidXRlcygpCgogICAgICAgIGZvciBhX25hbWUgaW4gYXR0cnMua2V5cygpOgogICAgICAgICAgICB3cml0ZXIud3JpdGUoIiAlcz1cIiIgJSBhX25hbWUpCiAgICAgICAgICAgIF93cml0ZV9kYXRhKHdyaXRlciwgYXR0cnNbYV9uYW1lXS52YWx1ZSkKICAgICAgICAgICAgd3JpdGVyLndyaXRlKCJcIiIpCiAgICAgICAgaWYgc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICB3cml0ZXIud3JpdGUoIj4iKQogICAgICAgICAgICBpZiAobGVuKHNlbGYuY2hpbGROb2RlcykgPT0gMSBhbmQKICAgICAgICAgICAgICAgIHNlbGYuY2hpbGROb2Rlc1swXS5ub2RlVHlwZSBpbiAoCiAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUuVEVYVF9OT0RFLCBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERSkpOgogICAgICAgICAgICAgICAgc2VsZi5jaGlsZE5vZGVzWzBdLndyaXRleG1sKHdyaXRlciwgJycsICcnLCAnJykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZShuZXdsKQogICAgICAgICAgICAgICAgZm9yIG5vZGUgaW4gc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICAgICAgICAgIG5vZGUud3JpdGV4bWwod3JpdGVyLCBpbmRlbnQrYWRkaW5kZW50LCBhZGRpbmRlbnQsIG5ld2wpCiAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGUoaW5kZW50KQogICAgICAgICAgICB3cml0ZXIud3JpdGUoIjwvJXM+JXMiICUgKHNlbGYudGFnTmFtZSwgbmV3bCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgd3JpdGVyLndyaXRlKCIvPiVzIiUobmV3bCkpCgogICAgZGVmIF9nZXRfYXR0cmlidXRlcyhzZWxmKToKICAgICAgICBzZWxmLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgcmV0dXJuIE5hbWVkTm9kZU1hcChzZWxmLl9hdHRycywgc2VsZi5fYXR0cnNOUywgc2VsZikKCiAgICBkZWYgaGFzQXR0cmlidXRlcyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9hdHRyczoKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAjIERPTSBMZXZlbCAzIGF0dHJpYnV0ZXMsIGJhc2VkIG9uIHRoZSAyMiBPY3QgMjAwMiBkcmFmdAoKICAgIGRlZiBzZXRJZEF0dHJpYnV0ZShzZWxmLCBuYW1lKToKICAgICAgICBpZEF0dHIgPSBzZWxmLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkKICAgICAgICBzZWxmLnNldElkQXR0cmlidXRlTm9kZShpZEF0dHIpCgogICAgZGVmIHNldElkQXR0cmlidXRlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgogICAgICAgIGlkQXR0ciA9IHNlbGYuZ2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKQogICAgICAgIHNlbGYuc2V0SWRBdHRyaWJ1dGVOb2RlKGlkQXR0cikKCiAgICBkZWYgc2V0SWRBdHRyaWJ1dGVOb2RlKHNlbGYsIGlkQXR0cik6CiAgICAgICAgaWYgaWRBdHRyIGlzIE5vbmUgb3Igbm90IHNlbGYuaXNTYW1lTm9kZShpZEF0dHIub3duZXJFbGVtZW50KToKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCiAgICAgICAgaWYgX2dldF9jb250YWluaW5nX2VudHJlZihzZWxmKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob01vZGlmaWNhdGlvbkFsbG93ZWRFcnIoKQogICAgICAgIGlmIG5vdCBpZEF0dHIuX2lzX2lkOgogICAgICAgICAgICBpZEF0dHIuX2lzX2lkID0gVHJ1ZQogICAgICAgICAgICBzZWxmLl9tYWdpY19pZF9ub2RlcyArPSAxCiAgICAgICAgICAgIHNlbGYub3duZXJEb2N1bWVudC5fbWFnaWNfaWRfY291bnQgKz0gMQogICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZikKCmRlZnByb3BlcnR5KEVsZW1lbnQsICJhdHRyaWJ1dGVzIiwKICAgICAgICAgICAgZG9jPSJOYW1lZE5vZGVNYXAgb2YgYXR0cmlidXRlcyBvbiB0aGUgZWxlbWVudC4iKQpkZWZwcm9wZXJ0eShFbGVtZW50LCAibG9jYWxOYW1lIiwKICAgICAgICAgICAgZG9jPSJOYW1lc3BhY2UtbG9jYWwgbmFtZSBvZiB0aGlzIGVsZW1lbnQuIikKCgpkZWYgX3NldF9hdHRyaWJ1dGVfbm9kZShlbGVtZW50LCBhdHRyKToKICAgIF9jbGVhcl9pZF9jYWNoZShlbGVtZW50KQogICAgZWxlbWVudC5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgZWxlbWVudC5fYXR0cnNbYXR0ci5uYW1lXSA9IGF0dHIKICAgIGVsZW1lbnQuX2F0dHJzTlNbKGF0dHIubmFtZXNwYWNlVVJJLCBhdHRyLmxvY2FsTmFtZSldID0gYXR0cgoKICAgICMgVGhpcyBjcmVhdGVzIGEgY2lyY3VsYXIgcmVmZXJlbmNlLCBidXQgRWxlbWVudC51bmxpbmsoKQogICAgIyBicmVha3MgdGhlIGN5Y2xlIHNpbmNlIHRoZSByZWZlcmVuY2VzIHRvIHRoZSBhdHRyaWJ1dGUKICAgICMgZGljdGlvbmFyaWVzIGFyZSB0b3NzZWQuCiAgICBhdHRyLm93bmVyRWxlbWVudCA9IGVsZW1lbnQKCmNsYXNzIENoaWxkbGVzczoKICAgICIiIk1peGluIHRoYXQgbWFrZXMgY2hpbGRsZXNzLW5lc3MgZWFzeSB0byBpbXBsZW1lbnQgYW5kIGF2b2lkcwogICAgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIE5vZGUgbWV0aG9kcyB0aGF0IGRlYWwgd2l0aCBjaGlsZHJlbi4KICAgICIiIgogICAgX19zbG90c19fID0gKCkKCiAgICBhdHRyaWJ1dGVzID0gTm9uZQogICAgY2hpbGROb2RlcyA9IEVtcHR5Tm9kZUxpc3QoKQogICAgZmlyc3RDaGlsZCA9IE5vbmUKICAgIGxhc3RDaGlsZCA9IE5vbmUKCiAgICBkZWYgX2dldF9maXJzdENoaWxkKHNlbGYpOgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIF9nZXRfbGFzdENoaWxkKHNlbGYpOgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGFwcGVuZENoaWxkKHNlbGYsIG5vZGUpOgogICAgICAgIHJhaXNlIHhtbC5kb20uSGllcmFyY2h5UmVxdWVzdEVycigKICAgICAgICAgICAgc2VsZi5ub2RlTmFtZSArICIgbm9kZXMgY2Fubm90IGhhdmUgY2hpbGRyZW4iKQoKICAgIGRlZiBoYXNDaGlsZE5vZGVzKHNlbGYpOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBpbnNlcnRCZWZvcmUoc2VsZiwgbmV3Q2hpbGQsIHJlZkNoaWxkKToKICAgICAgICByYWlzZSB4bWwuZG9tLkhpZXJhcmNoeVJlcXVlc3RFcnIoCiAgICAgICAgICAgIHNlbGYubm9kZU5hbWUgKyAiIG5vZGVzIGRvIG5vdCBoYXZlIGNoaWxkcmVuIikKCiAgICBkZWYgcmVtb3ZlQ2hpbGQoc2VsZiwgb2xkQ2hpbGQpOgogICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoCiAgICAgICAgICAgIHNlbGYubm9kZU5hbWUgKyAiIG5vZGVzIGRvIG5vdCBoYXZlIGNoaWxkcmVuIikKCiAgICBkZWYgbm9ybWFsaXplKHNlbGYpOgogICAgICAgICMgRm9yIGNoaWxkbGVzcyBub2Rlcywgbm9ybWFsaXplKCkgaGFzIG5vdGhpbmcgdG8gZG8uCiAgICAgICAgcGFzcwoKICAgIGRlZiByZXBsYWNlQ2hpbGQoc2VsZiwgbmV3Q2hpbGQsIG9sZENoaWxkKToKICAgICAgICByYWlzZSB4bWwuZG9tLkhpZXJhcmNoeVJlcXVlc3RFcnIoCiAgICAgICAgICAgIHNlbGYubm9kZU5hbWUgKyAiIG5vZGVzIGRvIG5vdCBoYXZlIGNoaWxkcmVuIikKCgpjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oQ2hpbGRsZXNzLCBOb2RlKToKICAgIG5vZGVUeXBlID0gTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUKICAgIF9fc2xvdHNfXyA9ICgndGFyZ2V0JywgJ2RhdGEnKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXQsIGRhdGEpOgogICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgc2VsZi5kYXRhID0gZGF0YQoKICAgICMgbm9kZVZhbHVlIGlzIGFuIGFsaWFzIGZvciBkYXRhCiAgICBkZWYgX2dldF9ub2RlVmFsdWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQogICAgZGVmIF9zZXRfbm9kZVZhbHVlKHNlbGYsIHZhbHVlKToKICAgICAgICBzZWxmLmRhdGEgPSB2YWx1ZQogICAgbm9kZVZhbHVlID0gcHJvcGVydHkoX2dldF9ub2RlVmFsdWUsIF9zZXRfbm9kZVZhbHVlKQoKICAgICMgbm9kZU5hbWUgaXMgYW4gYWxpYXMgZm9yIHRhcmdldAogICAgZGVmIF9nZXRfbm9kZU5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0CiAgICBkZWYgX3NldF9ub2RlTmFtZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgc2VsZi50YXJnZXQgPSB2YWx1ZQogICAgbm9kZU5hbWUgPSBwcm9wZXJ0eShfZ2V0X25vZGVOYW1lLCBfc2V0X25vZGVOYW1lKQoKICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiKToKICAgICAgICB3cml0ZXIud3JpdGUoIiVzPD8lcyAlcz8+JXMiICUgKGluZGVudCxzZWxmLnRhcmdldCwgc2VsZi5kYXRhLCBuZXdsKSkKCgpjbGFzcyBDaGFyYWN0ZXJEYXRhKENoaWxkbGVzcywgTm9kZSk6CiAgICBfX3Nsb3RzX189KCdfZGF0YScsICdvd25lckRvY3VtZW50JywncGFyZW50Tm9kZScsICdwcmV2aW91c1NpYmxpbmcnLCAnbmV4dFNpYmxpbmcnKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLm93bmVyRG9jdW1lbnQgPSBzZWxmLnBhcmVudE5vZGUgPSBOb25lCiAgICAgICAgc2VsZi5wcmV2aW91c1NpYmxpbmcgPSBzZWxmLm5leHRTaWJsaW5nID0gTm9uZQogICAgICAgIHNlbGYuX2RhdGEgPSAnJwogICAgICAgIE5vZGUuX19pbml0X18oc2VsZikKCiAgICBkZWYgX2dldF9sZW5ndGgoc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCiAgICBfX2xlbl9fID0gX2dldF9sZW5ndGgKCiAgICBkZWYgX2dldF9kYXRhKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9kYXRhCiAgICBkZWYgX3NldF9kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYuX2RhdGEgPSBkYXRhCgogICAgZGF0YSA9IG5vZGVWYWx1ZSA9IHByb3BlcnR5KF9nZXRfZGF0YSwgX3NldF9kYXRhKQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICBkYXRhID0gc2VsZi5kYXRhCiAgICAgICAgaWYgbGVuKGRhdGEpID4gMTA6CiAgICAgICAgICAgIGRvdGRvdGRvdCA9ICIuLi4iCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZG90ZG90ZG90ID0gIiIKICAgICAgICByZXR1cm4gJzxET00gJXMgbm9kZSAiJXIlcyI+JyAlICgKICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGRhdGFbMDoxMF0sIGRvdGRvdGRvdCkKCiAgICBkZWYgc3Vic3RyaW5nRGF0YShzZWxmLCBvZmZzZXQsIGNvdW50KToKICAgICAgICBpZiBvZmZzZXQgPCAwOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLkluZGV4U2l6ZUVycigib2Zmc2V0IGNhbm5vdCBiZSBuZWdhdGl2ZSIpCiAgICAgICAgaWYgb2Zmc2V0ID49IGxlbihzZWxmLmRhdGEpOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLkluZGV4U2l6ZUVycigib2Zmc2V0IGNhbm5vdCBiZSBiZXlvbmQgZW5kIG9mIGRhdGEiKQogICAgICAgIGlmIGNvdW50IDwgMDoKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5JbmRleFNpemVFcnIoImNvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZSIpCiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtvZmZzZXQ6b2Zmc2V0K2NvdW50XQoKICAgIGRlZiBhcHBlbmREYXRhKHNlbGYsIGFyZyk6CiAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5kYXRhICsgYXJnCgogICAgZGVmIGluc2VydERhdGEoc2VsZiwgb2Zmc2V0LCBhcmcpOgogICAgICAgIGlmIG9mZnNldCA8IDA6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uSW5kZXhTaXplRXJyKCJvZmZzZXQgY2Fubm90IGJlIG5lZ2F0aXZlIikKICAgICAgICBpZiBvZmZzZXQgPj0gbGVuKHNlbGYuZGF0YSk6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uSW5kZXhTaXplRXJyKCJvZmZzZXQgY2Fubm90IGJlIGJleW9uZCBlbmQgb2YgZGF0YSIpCiAgICAgICAgaWYgYXJnOgogICAgICAgICAgICBzZWxmLmRhdGEgPSAiJXMlcyVzIiAlICgKICAgICAgICAgICAgICAgIHNlbGYuZGF0YVs6b2Zmc2V0XSwgYXJnLCBzZWxmLmRhdGFbb2Zmc2V0Ol0pCgogICAgZGVmIGRlbGV0ZURhdGEoc2VsZiwgb2Zmc2V0LCBjb3VudCk6CiAgICAgICAgaWYgb2Zmc2V0IDwgMDoKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5JbmRleFNpemVFcnIoIm9mZnNldCBjYW5ub3QgYmUgbmVnYXRpdmUiKQogICAgICAgIGlmIG9mZnNldCA+PSBsZW4oc2VsZi5kYXRhKToKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5JbmRleFNpemVFcnIoIm9mZnNldCBjYW5ub3QgYmUgYmV5b25kIGVuZCBvZiBkYXRhIikKICAgICAgICBpZiBjb3VudCA8IDA6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uSW5kZXhTaXplRXJyKCJjb3VudCBjYW5ub3QgYmUgbmVnYXRpdmUiKQogICAgICAgIGlmIGNvdW50OgogICAgICAgICAgICBzZWxmLmRhdGEgPSBzZWxmLmRhdGFbOm9mZnNldF0gKyBzZWxmLmRhdGFbb2Zmc2V0K2NvdW50Ol0KCiAgICBkZWYgcmVwbGFjZURhdGEoc2VsZiwgb2Zmc2V0LCBjb3VudCwgYXJnKToKICAgICAgICBpZiBvZmZzZXQgPCAwOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLkluZGV4U2l6ZUVycigib2Zmc2V0IGNhbm5vdCBiZSBuZWdhdGl2ZSIpCiAgICAgICAgaWYgb2Zmc2V0ID49IGxlbihzZWxmLmRhdGEpOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLkluZGV4U2l6ZUVycigib2Zmc2V0IGNhbm5vdCBiZSBiZXlvbmQgZW5kIG9mIGRhdGEiKQogICAgICAgIGlmIGNvdW50IDwgMDoKICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5JbmRleFNpemVFcnIoImNvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZSIpCiAgICAgICAgaWYgY291bnQ6CiAgICAgICAgICAgIHNlbGYuZGF0YSA9ICIlcyVzJXMiICUgKAogICAgICAgICAgICAgICAgc2VsZi5kYXRhWzpvZmZzZXRdLCBhcmcsIHNlbGYuZGF0YVtvZmZzZXQrY291bnQ6XSkKCmRlZnByb3BlcnR5KENoYXJhY3RlckRhdGEsICJsZW5ndGgiLCBkb2M9Ikxlbmd0aCBvZiB0aGUgc3RyaW5nIGRhdGEuIikKCgpjbGFzcyBUZXh0KENoYXJhY3RlckRhdGEpOgogICAgX19zbG90c19fID0gKCkKCiAgICBub2RlVHlwZSA9IE5vZGUuVEVYVF9OT0RFCiAgICBub2RlTmFtZSA9ICIjdGV4dCIKICAgIGF0dHJpYnV0ZXMgPSBOb25lCgogICAgZGVmIHNwbGl0VGV4dChzZWxmLCBvZmZzZXQpOgogICAgICAgIGlmIG9mZnNldCA8IDAgb3Igb2Zmc2V0ID4gbGVuKHNlbGYuZGF0YSk6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uSW5kZXhTaXplRXJyKCJpbGxlZ2FsIG9mZnNldCB2YWx1ZSIpCiAgICAgICAgbmV3VGV4dCA9IHNlbGYuX19jbGFzc19fKCkKICAgICAgICBuZXdUZXh0LmRhdGEgPSBzZWxmLmRhdGFbb2Zmc2V0Ol0KICAgICAgICBuZXdUZXh0Lm93bmVyRG9jdW1lbnQgPSBzZWxmLm93bmVyRG9jdW1lbnQKICAgICAgICBuZXh0ID0gc2VsZi5uZXh0U2libGluZwogICAgICAgIGlmIHNlbGYucGFyZW50Tm9kZSBhbmQgc2VsZiBpbiBzZWxmLnBhcmVudE5vZGUuY2hpbGROb2RlczoKICAgICAgICAgICAgaWYgbmV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgc2VsZi5wYXJlbnROb2RlLmFwcGVuZENoaWxkKG5ld1RleHQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld1RleHQsIG5leHQpCiAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5kYXRhWzpvZmZzZXRdCiAgICAgICAgcmV0dXJuIG5ld1RleHQKCiAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIik6CiAgICAgICAgX3dyaXRlX2RhdGEod3JpdGVyLCAiJXMlcyVzIiAlIChpbmRlbnQsIHNlbGYuZGF0YSwgbmV3bCkpCgogICAgIyBET00gTGV2ZWwgMyAoV0QgOSBBcHJpbCAyMDAyKQoKICAgIGRlZiBfZ2V0X3dob2xlVGV4dChzZWxmKToKICAgICAgICBMID0gW3NlbGYuZGF0YV0KICAgICAgICBuID0gc2VsZi5wcmV2aW91c1NpYmxpbmcKICAgICAgICB3aGlsZSBuIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBuLm5vZGVUeXBlIGluIChOb2RlLlRFWFRfTk9ERSwgTm9kZS5DREFUQV9TRUNUSU9OX05PREUpOgogICAgICAgICAgICAgICAgTC5pbnNlcnQoMCwgbi5kYXRhKQogICAgICAgICAgICAgICAgbiA9IG4ucHJldmlvdXNTaWJsaW5nCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIG4gPSBzZWxmLm5leHRTaWJsaW5nCiAgICAgICAgd2hpbGUgbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgaWYgbi5ub2RlVHlwZSBpbiAoTm9kZS5URVhUX05PREUsIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFKToKICAgICAgICAgICAgICAgIEwuYXBwZW5kKG4uZGF0YSkKICAgICAgICAgICAgICAgIG4gPSBuLm5leHRTaWJsaW5nCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIHJldHVybiAnJy5qb2luKEwpCgogICAgZGVmIHJlcGxhY2VXaG9sZVRleHQoc2VsZiwgY29udGVudCk6CiAgICAgICAgIyBYWFggVGhpcyBuZWVkcyB0byBiZSBzZXJpb3VzbHkgY2hhbmdlZCBpZiBtaW5pZG9tIGV2ZXIKICAgICAgICAjIHN1cHBvcnRzIEVudGl0eVJlZmVyZW5jZSBub2Rlcy4KICAgICAgICBwYXJlbnQgPSBzZWxmLnBhcmVudE5vZGUKICAgICAgICBuID0gc2VsZi5wcmV2aW91c1NpYmxpbmcKICAgICAgICB3aGlsZSBuIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBuLm5vZGVUeXBlIGluIChOb2RlLlRFWFRfTk9ERSwgTm9kZS5DREFUQV9TRUNUSU9OX05PREUpOgogICAgICAgICAgICAgICAgbmV4dCA9IG4ucHJldmlvdXNTaWJsaW5nCiAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobikKICAgICAgICAgICAgICAgIG4gPSBuZXh0CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgIG4gPSBzZWxmLm5leHRTaWJsaW5nCiAgICAgICAgaWYgbm90IGNvbnRlbnQ6CiAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChzZWxmKQogICAgICAgIHdoaWxlIG4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGlmIG4ubm9kZVR5cGUgaW4gKE5vZGUuVEVYVF9OT0RFLCBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERSk6CiAgICAgICAgICAgICAgICBuZXh0ID0gbi5uZXh0U2libGluZwogICAgICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKG4pCiAgICAgICAgICAgICAgICBuID0gbmV4dAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiBjb250ZW50OgogICAgICAgICAgICBzZWxmLmRhdGEgPSBjb250ZW50CiAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgX2dldF9pc1doaXRlc3BhY2VJbkVsZW1lbnRDb250ZW50KHNlbGYpOgogICAgICAgIGlmIHNlbGYuZGF0YS5zdHJpcCgpOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBlbGVtID0gX2dldF9jb250YWluaW5nX2VsZW1lbnQoc2VsZikKICAgICAgICBpZiBlbGVtIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGluZm8gPSBzZWxmLm93bmVyRG9jdW1lbnQuX2dldF9lbGVtX2luZm8oZWxlbSkKICAgICAgICBpZiBpbmZvIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBpbmZvLmlzRWxlbWVudENvbnRlbnQoKQoKZGVmcHJvcGVydHkoVGV4dCwgImlzV2hpdGVzcGFjZUluRWxlbWVudENvbnRlbnQiLAogICAgICAgICAgICBkb2M9IlRydWUgaWZmIHRoaXMgdGV4dCBub2RlIGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZSIKICAgICAgICAgICAgICAgICIgYW5kIGlzIGluIGVsZW1lbnQgY29udGVudC4iKQpkZWZwcm9wZXJ0eShUZXh0LCAid2hvbGVUZXh0IiwKICAgICAgICAgICAgZG9jPSJUaGUgdGV4dCBvZiBhbGwgbG9naWNhbGx5LWFkamFjZW50IHRleHQgbm9kZXMuIikKCgpkZWYgX2dldF9jb250YWluaW5nX2VsZW1lbnQobm9kZSk6CiAgICBjID0gbm9kZS5wYXJlbnROb2RlCiAgICB3aGlsZSBjIGlzIG5vdCBOb25lOgogICAgICAgIGlmIGMubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6CiAgICAgICAgICAgIHJldHVybiBjCiAgICAgICAgYyA9IGMucGFyZW50Tm9kZQogICAgcmV0dXJuIE5vbmUKCmRlZiBfZ2V0X2NvbnRhaW5pbmdfZW50cmVmKG5vZGUpOgogICAgYyA9IG5vZGUucGFyZW50Tm9kZQogICAgd2hpbGUgYyBpcyBub3QgTm9uZToKICAgICAgICBpZiBjLm5vZGVUeXBlID09IE5vZGUuRU5USVRZX1JFRkVSRU5DRV9OT0RFOgogICAgICAgICAgICByZXR1cm4gYwogICAgICAgIGMgPSBjLnBhcmVudE5vZGUKICAgIHJldHVybiBOb25lCgoKY2xhc3MgQ29tbWVudChDaGFyYWN0ZXJEYXRhKToKICAgIG5vZGVUeXBlID0gTm9kZS5DT01NRU5UX05PREUKICAgIG5vZGVOYW1lID0gIiNjb21tZW50IgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKICAgICAgICBDaGFyYWN0ZXJEYXRhLl9faW5pdF9fKHNlbGYpCiAgICAgICAgc2VsZi5fZGF0YSA9IGRhdGEKCiAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIik6CiAgICAgICAgaWYgIi0tIiBpbiBzZWxmLmRhdGE6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIictLScgaXMgbm90IGFsbG93ZWQgaW4gYSBjb21tZW50IG5vZGUiKQogICAgICAgIHdyaXRlci53cml0ZSgiJXM8IS0tJXMtLT4lcyIgJSAoaW5kZW50LCBzZWxmLmRhdGEsIG5ld2wpKQoKCmNsYXNzIENEQVRBU2VjdGlvbihUZXh0KToKICAgIF9fc2xvdHNfXyA9ICgpCgogICAgbm9kZVR5cGUgPSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERQogICAgbm9kZU5hbWUgPSAiI2NkYXRhLXNlY3Rpb24iCgogICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIpOgogICAgICAgIGlmIHNlbGYuZGF0YS5maW5kKCJdXT4iKSA+PSAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCInXV0+JyBub3QgYWxsb3dlZCBpbiBhIENEQVRBIHNlY3Rpb24iKQogICAgICAgIHdyaXRlci53cml0ZSgiPCFbQ0RBVEFbJXNdXT4iICUgc2VsZi5kYXRhKQoKCmNsYXNzIFJlYWRPbmx5U2VxdWVudGlhbE5hbWVkTm9kZU1hcChvYmplY3QpOgogICAgX19zbG90c19fID0gJ19zZXEnLAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXE9KCkpOgogICAgICAgICMgc2VxIHNob3VsZCBiZSBhIGxpc3Qgb3IgdHVwbGUKICAgICAgICBzZWxmLl9zZXEgPSBzZXEKCiAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3NlcSkKCiAgICBkZWYgX2dldF9sZW5ndGgoc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9zZXEpCgogICAgZGVmIGdldE5hbWVkSXRlbShzZWxmLCBuYW1lKToKICAgICAgICBmb3IgbiBpbiBzZWxmLl9zZXE6CiAgICAgICAgICAgIGlmIG4ubm9kZU5hbWUgPT0gbmFtZToKICAgICAgICAgICAgICAgIHJldHVybiBuCgogICAgZGVmIGdldE5hbWVkSXRlbU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKICAgICAgICBmb3IgbiBpbiBzZWxmLl9zZXE6CiAgICAgICAgICAgIGlmIG4ubmFtZXNwYWNlVVJJID09IG5hbWVzcGFjZVVSSSBhbmQgbi5sb2NhbE5hbWUgPT0gbG9jYWxOYW1lOgogICAgICAgICAgICAgICAgcmV0dXJuIG4KCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZV9vcl90dXBsZSk6CiAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lX29yX3R1cGxlLCB0dXBsZSk6CiAgICAgICAgICAgIG5vZGUgPSBzZWxmLmdldE5hbWVkSXRlbU5TKCpuYW1lX29yX3R1cGxlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5vZGUgPSBzZWxmLmdldE5hbWVkSXRlbShuYW1lX29yX3R1cGxlKQogICAgICAgIGlmIG5vZGUgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IobmFtZV9vcl90dXBsZSkKICAgICAgICByZXR1cm4gbm9kZQoKICAgIGRlZiBpdGVtKHNlbGYsIGluZGV4KToKICAgICAgICBpZiBpbmRleCA8IDA6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VxW2luZGV4XQogICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgIGRlZiByZW1vdmVOYW1lZEl0ZW0oc2VsZiwgbmFtZSk6CiAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob01vZGlmaWNhdGlvbkFsbG93ZWRFcnIoCiAgICAgICAgICAgICJOYW1lZE5vZGVNYXAgaW5zdGFuY2UgaXMgcmVhZC1vbmx5IikKCiAgICBkZWYgcmVtb3ZlTmFtZWRJdGVtTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgogICAgICAgIHJhaXNlIHhtbC5kb20uTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyKAogICAgICAgICAgICAiTmFtZWROb2RlTWFwIGluc3RhbmNlIGlzIHJlYWQtb25seSIpCgogICAgZGVmIHNldE5hbWVkSXRlbShzZWxmLCBub2RlKToKICAgICAgICByYWlzZSB4bWwuZG9tLk5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycigKICAgICAgICAgICAgIk5hbWVkTm9kZU1hcCBpbnN0YW5jZSBpcyByZWFkLW9ubHkiKQoKICAgIGRlZiBzZXROYW1lZEl0ZW1OUyhzZWxmLCBub2RlKToKICAgICAgICByYWlzZSB4bWwuZG9tLk5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycigKICAgICAgICAgICAgIk5hbWVkTm9kZU1hcCBpbnN0YW5jZSBpcyByZWFkLW9ubHkiKQoKICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgcmV0dXJuIFtzZWxmLl9zZXFdCgogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgc2VsZi5fc2VxID0gc3RhdGVbMF0KCmRlZnByb3BlcnR5KFJlYWRPbmx5U2VxdWVudGlhbE5hbWVkTm9kZU1hcCwgImxlbmd0aCIsCiAgICAgICAgICAgIGRvYz0iTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIE5hbWVkTm9kZU1hcC4iKQoKCmNsYXNzIElkZW50aWZpZWQ6CiAgICAiIiJNaXgtaW4gY2xhc3MgdGhhdCBzdXBwb3J0cyB0aGUgcHVibGljSWQgYW5kIHN5c3RlbUlkIGF0dHJpYnV0ZXMuIiIiCgogICAgX19zbG90c19fID0gJ3B1YmxpY0lkJywgJ3N5c3RlbUlkJwoKICAgIGRlZiBfaWRlbnRpZmllZF9taXhpbl9pbml0KHNlbGYsIHB1YmxpY0lkLCBzeXN0ZW1JZCk6CiAgICAgICAgc2VsZi5wdWJsaWNJZCA9IHB1YmxpY0lkCiAgICAgICAgc2VsZi5zeXN0ZW1JZCA9IHN5c3RlbUlkCgogICAgZGVmIF9nZXRfcHVibGljSWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYucHVibGljSWQKCiAgICBkZWYgX2dldF9zeXN0ZW1JZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5zeXN0ZW1JZAoKY2xhc3MgRG9jdW1lbnRUeXBlKElkZW50aWZpZWQsIENoaWxkbGVzcywgTm9kZSk6CiAgICBub2RlVHlwZSA9IE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFCiAgICBub2RlVmFsdWUgPSBOb25lCiAgICBuYW1lID0gTm9uZQogICAgcHVibGljSWQgPSBOb25lCiAgICBzeXN0ZW1JZCA9IE5vbmUKICAgIGludGVybmFsU3Vic2V0ID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWFsaWZpZWROYW1lKToKICAgICAgICBzZWxmLmVudGl0aWVzID0gUmVhZE9ubHlTZXF1ZW50aWFsTmFtZWROb2RlTWFwKCkKICAgICAgICBzZWxmLm5vdGF0aW9ucyA9IFJlYWRPbmx5U2VxdWVudGlhbE5hbWVkTm9kZU1hcCgpCiAgICAgICAgaWYgcXVhbGlmaWVkTmFtZToKICAgICAgICAgICAgcHJlZml4LCBsb2NhbG5hbWUgPSBfbnNzcGxpdChxdWFsaWZpZWROYW1lKQogICAgICAgICAgICBzZWxmLm5hbWUgPSBsb2NhbG5hbWUKICAgICAgICBzZWxmLm5vZGVOYW1lID0gc2VsZi5uYW1lCgogICAgZGVmIF9nZXRfaW50ZXJuYWxTdWJzZXQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuaW50ZXJuYWxTdWJzZXQKCiAgICBkZWYgY2xvbmVOb2RlKHNlbGYsIGRlZXApOgogICAgICAgIGlmIHNlbGYub3duZXJEb2N1bWVudCBpcyBOb25lOgogICAgICAgICAgICAjIGl0J3Mgb2sKICAgICAgICAgICAgY2xvbmUgPSBEb2N1bWVudFR5cGUoTm9uZSkKICAgICAgICAgICAgY2xvbmUubmFtZSA9IHNlbGYubmFtZQogICAgICAgICAgICBjbG9uZS5ub2RlTmFtZSA9IHNlbGYubmFtZQogICAgICAgICAgICBvcGVyYXRpb24gPSB4bWwuZG9tLlVzZXJEYXRhSGFuZGxlci5OT0RFX0NMT05FRAogICAgICAgICAgICBpZiBkZWVwOgogICAgICAgICAgICAgICAgY2xvbmUuZW50aXRpZXMuX3NlcSA9IFtdCiAgICAgICAgICAgICAgICBjbG9uZS5ub3RhdGlvbnMuX3NlcSA9IFtdCiAgICAgICAgICAgICAgICBmb3IgbiBpbiBzZWxmLm5vdGF0aW9ucy5fc2VxOgogICAgICAgICAgICAgICAgICAgIG5vdGF0aW9uID0gTm90YXRpb24obi5ub2RlTmFtZSwgbi5wdWJsaWNJZCwgbi5zeXN0ZW1JZCkKICAgICAgICAgICAgICAgICAgICBjbG9uZS5ub3RhdGlvbnMuX3NlcS5hcHBlbmQobm90YXRpb24pCiAgICAgICAgICAgICAgICAgICAgbi5fY2FsbF91c2VyX2RhdGFfaGFuZGxlcihvcGVyYXRpb24sIG4sIG5vdGF0aW9uKQogICAgICAgICAgICAgICAgZm9yIGUgaW4gc2VsZi5lbnRpdGllcy5fc2VxOgogICAgICAgICAgICAgICAgICAgIGVudGl0eSA9IEVudGl0eShlLm5vZGVOYW1lLCBlLnB1YmxpY0lkLCBlLnN5c3RlbUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm5vdGF0aW9uTmFtZSkKICAgICAgICAgICAgICAgICAgICBlbnRpdHkuYWN0dWFsRW5jb2RpbmcgPSBlLmFjdHVhbEVuY29kaW5nCiAgICAgICAgICAgICAgICAgICAgZW50aXR5LmVuY29kaW5nID0gZS5lbmNvZGluZwogICAgICAgICAgICAgICAgICAgIGVudGl0eS52ZXJzaW9uID0gZS52ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgY2xvbmUuZW50aXRpZXMuX3NlcS5hcHBlbmQoZW50aXR5KQogICAgICAgICAgICAgICAgICAgIGUuX2NhbGxfdXNlcl9kYXRhX2hhbmRsZXIob3BlcmF0aW9uLCBlLCBlbnRpdHkpCiAgICAgICAgICAgIHNlbGYuX2NhbGxfdXNlcl9kYXRhX2hhbmRsZXIob3BlcmF0aW9uLCBzZWxmLCBjbG9uZSkKICAgICAgICAgICAgcmV0dXJuIGNsb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIik6CiAgICAgICAgd3JpdGVyLndyaXRlKCI8IURPQ1RZUEUgIikKICAgICAgICB3cml0ZXIud3JpdGUoc2VsZi5uYW1lKQogICAgICAgIGlmIHNlbGYucHVibGljSWQ6CiAgICAgICAgICAgIHdyaXRlci53cml0ZSgiJXMgIFBVQkxJQyAnJXMnJXMgICclcyciCiAgICAgICAgICAgICAgICAgICAgICAgICAlIChuZXdsLCBzZWxmLnB1YmxpY0lkLCBuZXdsLCBzZWxmLnN5c3RlbUlkKSkKICAgICAgICBlbGlmIHNlbGYuc3lzdGVtSWQ6CiAgICAgICAgICAgIHdyaXRlci53cml0ZSgiJXMgIFNZU1RFTSAnJXMnIiAlIChuZXdsLCBzZWxmLnN5c3RlbUlkKSkKICAgICAgICBpZiBzZWxmLmludGVybmFsU3Vic2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICB3cml0ZXIud3JpdGUoIiBbIikKICAgICAgICAgICAgd3JpdGVyLndyaXRlKHNlbGYuaW50ZXJuYWxTdWJzZXQpCiAgICAgICAgICAgIHdyaXRlci53cml0ZSgiXSIpCiAgICAgICAgd3JpdGVyLndyaXRlKCI+IituZXdsKQoKY2xhc3MgRW50aXR5KElkZW50aWZpZWQsIE5vZGUpOgogICAgYXR0cmlidXRlcyA9IE5vbmUKICAgIG5vZGVUeXBlID0gTm9kZS5FTlRJVFlfTk9ERQogICAgbm9kZVZhbHVlID0gTm9uZQoKICAgIGFjdHVhbEVuY29kaW5nID0gTm9uZQogICAgZW5jb2RpbmcgPSBOb25lCiAgICB2ZXJzaW9uID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsIG5vdGF0aW9uKToKICAgICAgICBzZWxmLm5vZGVOYW1lID0gbmFtZQogICAgICAgIHNlbGYubm90YXRpb25OYW1lID0gbm90YXRpb24KICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCiAgICAgICAgc2VsZi5faWRlbnRpZmllZF9taXhpbl9pbml0KHB1YmxpY0lkLCBzeXN0ZW1JZCkKCiAgICBkZWYgX2dldF9hY3R1YWxFbmNvZGluZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5hY3R1YWxFbmNvZGluZwoKICAgIGRlZiBfZ2V0X2VuY29kaW5nKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmVuY29kaW5nCgogICAgZGVmIF9nZXRfdmVyc2lvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi52ZXJzaW9uCgogICAgZGVmIGFwcGVuZENoaWxkKHNlbGYsIG5ld0NoaWxkKToKICAgICAgICByYWlzZSB4bWwuZG9tLkhpZXJhcmNoeVJlcXVlc3RFcnIoCiAgICAgICAgICAgICJjYW5ub3QgYXBwZW5kIGNoaWxkcmVuIHRvIGFuIGVudGl0eSBub2RlIikKCiAgICBkZWYgaW5zZXJ0QmVmb3JlKHNlbGYsIG5ld0NoaWxkLCByZWZDaGlsZCk6CiAgICAgICAgcmFpc2UgeG1sLmRvbS5IaWVyYXJjaHlSZXF1ZXN0RXJyKAogICAgICAgICAgICAiY2Fubm90IGluc2VydCBjaGlsZHJlbiBiZWxvdyBhbiBlbnRpdHkgbm9kZSIpCgogICAgZGVmIHJlbW92ZUNoaWxkKHNlbGYsIG9sZENoaWxkKToKICAgICAgICByYWlzZSB4bWwuZG9tLkhpZXJhcmNoeVJlcXVlc3RFcnIoCiAgICAgICAgICAgICJjYW5ub3QgcmVtb3ZlIGNoaWxkcmVuIGZyb20gYW4gZW50aXR5IG5vZGUiKQoKICAgIGRlZiByZXBsYWNlQ2hpbGQoc2VsZiwgbmV3Q2hpbGQsIG9sZENoaWxkKToKICAgICAgICByYWlzZSB4bWwuZG9tLkhpZXJhcmNoeVJlcXVlc3RFcnIoCiAgICAgICAgICAgICJjYW5ub3QgcmVwbGFjZSBjaGlsZHJlbiBvZiBhbiBlbnRpdHkgbm9kZSIpCgpjbGFzcyBOb3RhdGlvbihJZGVudGlmaWVkLCBDaGlsZGxlc3MsIE5vZGUpOgogICAgbm9kZVR5cGUgPSBOb2RlLk5PVEFUSU9OX05PREUKICAgIG5vZGVWYWx1ZSA9IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKToKICAgICAgICBzZWxmLm5vZGVOYW1lID0gbmFtZQogICAgICAgIHNlbGYuX2lkZW50aWZpZWRfbWl4aW5faW5pdChwdWJsaWNJZCwgc3lzdGVtSWQpCgoKY2xhc3MgRE9NSW1wbGVtZW50YXRpb24oRE9NSW1wbGVtZW50YXRpb25MUyk6CiAgICBfZmVhdHVyZXMgPSBbKCJjb3JlIiwgIjEuMCIpLAogICAgICAgICAgICAgICAgICgiY29yZSIsICIyLjAiKSwKICAgICAgICAgICAgICAgICAoImNvcmUiLCBOb25lKSwKICAgICAgICAgICAgICAgICAoInhtbCIsICIxLjAiKSwKICAgICAgICAgICAgICAgICAoInhtbCIsICIyLjAiKSwKICAgICAgICAgICAgICAgICAoInhtbCIsIE5vbmUpLAogICAgICAgICAgICAgICAgICgibHMtbG9hZCIsICIzLjAiKSwKICAgICAgICAgICAgICAgICAoImxzLWxvYWQiLCBOb25lKSwKICAgICAgICAgICAgICAgICBdCgogICAgZGVmIGhhc0ZlYXR1cmUoc2VsZiwgZmVhdHVyZSwgdmVyc2lvbik6CiAgICAgICAgaWYgdmVyc2lvbiA9PSAiIjoKICAgICAgICAgICAgdmVyc2lvbiA9IE5vbmUKICAgICAgICByZXR1cm4gKGZlYXR1cmUubG93ZXIoKSwgdmVyc2lvbikgaW4gc2VsZi5fZmVhdHVyZXMKCiAgICBkZWYgY3JlYXRlRG9jdW1lbnQoc2VsZiwgbmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBkb2N0eXBlKToKICAgICAgICBpZiBkb2N0eXBlIGFuZCBkb2N0eXBlLnBhcmVudE5vZGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uV3JvbmdEb2N1bWVudEVycigKICAgICAgICAgICAgICAgICJkb2N0eXBlIG9iamVjdCBvd25lZCBieSBhbm90aGVyIERPTSB0cmVlIikKICAgICAgICBkb2MgPSBzZWxmLl9jcmVhdGVfZG9jdW1lbnQoKQoKICAgICAgICBhZGRfcm9vdF9lbGVtZW50ID0gbm90IChuYW1lc3BhY2VVUkkgaXMgTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBxdWFsaWZpZWROYW1lIGlzIE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZG9jdHlwZSBpcyBOb25lKQoKICAgICAgICBpZiBub3QgcXVhbGlmaWVkTmFtZSBhbmQgYWRkX3Jvb3RfZWxlbWVudDoKICAgICAgICAgICAgIyBUaGUgc3BlYyBpcyB1bmNsZWFyIHdoYXQgdG8gcmFpc2UgaGVyZTsgU3ludGF4RXJyCiAgICAgICAgICAgICMgd291bGQgYmUgdGhlIG90aGVyIG9idmlvdXMgY2FuZGlkYXRlLiBTaW5jZSBYZXJjZXMgcmFpc2VzCiAgICAgICAgICAgICMgSW52YWxpZENoYXJhY3RlckVyciwgYW5kIHNpbmNlIFN5bnRheEVyciBpcyBub3QgbGlzdGVkCiAgICAgICAgICAgICMgZm9yIGNyZWF0ZURvY3VtZW50LCB0aGF0IHNlZW1zIHRvIGJlIHRoZSBiZXR0ZXIgY2hvaWNlLgogICAgICAgICAgICAjIFhYWDogbmVlZCB0byBjaGVjayBmb3IgaWxsZWdhbCBjaGFyYWN0ZXJzIGhlcmUgYW5kIGluCiAgICAgICAgICAgICMgY3JlYXRlRWxlbWVudC4KCiAgICAgICAgICAgICMgRE9NIExldmVsIElJSSBjbGVhcnMgdGhpcyB1cCB3aGVuIHRhbGtpbmcgYWJvdXQgdGhlIHJldHVybiB2YWx1ZQogICAgICAgICAgICAjIG9mIHRoaXMgZnVuY3Rpb24uICBJZiBuYW1lc3BhY2VVUkksIHFOYW1lIGFuZCBEb2NUeXBlIGFyZQogICAgICAgICAgICAjIE51bGwgdGhlIGRvY3VtZW50IGlzIHJldHVybmVkIHdpdGhvdXQgYSBkb2N1bWVudCBlbGVtZW50CiAgICAgICAgICAgICMgT3RoZXJ3aXNlIGlmIGRvY3R5cGUgb3IgbmFtZXNwYWNlVVJJIGFyZSBub3QgTm9uZQogICAgICAgICAgICAjIFRoZW4gd2UgZ28gYmFjayB0byB0aGUgYWJvdmUgcHJvYmxlbQogICAgICAgICAgICByYWlzZSB4bWwuZG9tLkludmFsaWRDaGFyYWN0ZXJFcnIoIkVsZW1lbnQgd2l0aCBubyBuYW1lIikKCiAgICAgICAgaWYgYWRkX3Jvb3RfZWxlbWVudDoKICAgICAgICAgICAgcHJlZml4LCBsb2NhbG5hbWUgPSBfbnNzcGxpdChxdWFsaWZpZWROYW1lKQogICAgICAgICAgICBpZiBwcmVmaXggPT0gInhtbCIgXAogICAgICAgICAgICAgICBhbmQgbmFtZXNwYWNlVVJJICE9ICJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiOgogICAgICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5OYW1lc3BhY2VFcnIoImlsbGVnYWwgdXNlIG9mICd4bWwnIHByZWZpeCIpCiAgICAgICAgICAgIGlmIHByZWZpeCBhbmQgbm90IG5hbWVzcGFjZVVSSToKICAgICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTmFtZXNwYWNlRXJyKAogICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHVzZSBvZiBwcmVmaXggd2l0aG91dCBuYW1lc3BhY2VzIikKICAgICAgICAgICAgZWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lKQogICAgICAgICAgICBpZiBkb2N0eXBlOgogICAgICAgICAgICAgICAgZG9jLmFwcGVuZENoaWxkKGRvY3R5cGUpCiAgICAgICAgICAgIGRvYy5hcHBlbmRDaGlsZChlbGVtZW50KQoKICAgICAgICBpZiBkb2N0eXBlOgogICAgICAgICAgICBkb2N0eXBlLnBhcmVudE5vZGUgPSBkb2N0eXBlLm93bmVyRG9jdW1lbnQgPSBkb2MKCiAgICAgICAgZG9jLmRvY3R5cGUgPSBkb2N0eXBlCiAgICAgICAgZG9jLmltcGxlbWVudGF0aW9uID0gc2VsZgogICAgICAgIHJldHVybiBkb2MKCiAgICBkZWYgY3JlYXRlRG9jdW1lbnRUeXBlKHNlbGYsIHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCk6CiAgICAgICAgZG9jdHlwZSA9IERvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lKQogICAgICAgIGRvY3R5cGUucHVibGljSWQgPSBwdWJsaWNJZAogICAgICAgIGRvY3R5cGUuc3lzdGVtSWQgPSBzeXN0ZW1JZAogICAgICAgIHJldHVybiBkb2N0eXBlCgogICAgIyBET00gTGV2ZWwgMyAoV0QgOSBBcHJpbCAyMDAyKQoKICAgIGRlZiBnZXRJbnRlcmZhY2Uoc2VsZiwgZmVhdHVyZSk6CiAgICAgICAgaWYgc2VsZi5oYXNGZWF0dXJlKGZlYXR1cmUsIE5vbmUpOgogICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBOb25lCgogICAgIyBpbnRlcm5hbAogICAgZGVmIF9jcmVhdGVfZG9jdW1lbnQoc2VsZik6CiAgICAgICAgcmV0dXJuIERvY3VtZW50KCkKCmNsYXNzIEVsZW1lbnRJbmZvKG9iamVjdCk6CiAgICAiIiJPYmplY3QgdGhhdCByZXByZXNlbnRzIGNvbnRlbnQtbW9kZWwgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCgogICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgdXNlZCBpbiBwcmFjdGljZTsgRE9NCiAgICBidWlsZGVycyBzaG91bGQgcHJvdmlkZSBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggZG8gdGhlIHJpZ2h0IHRoaW5nCiAgICB1c2luZyBpbmZvcm1hdGlvbiBhdmFpbGFibGUgdG8gaXQuCgogICAgIiIiCgogICAgX19zbG90c19fID0gJ3RhZ05hbWUnLAoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKICAgICAgICBzZWxmLnRhZ05hbWUgPSBuYW1lCgogICAgZGVmIGdldEF0dHJpYnV0ZVR5cGUoc2VsZiwgYW5hbWUpOgogICAgICAgIHJldHVybiBfbm9fdHlwZQoKICAgIGRlZiBnZXRBdHRyaWJ1dGVUeXBlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgogICAgICAgIHJldHVybiBfbm9fdHlwZQoKICAgIGRlZiBpc0VsZW1lbnRDb250ZW50KHNlbGYpOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBpc0VtcHR5KHNlbGYpOgogICAgICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgdGhpcyBlbGVtZW50IGlzIGRlY2xhcmVkIHRvIGhhdmUgYW4gRU1QVFkKICAgICAgICBjb250ZW50IG1vZGVsLiIiIgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBpc0lkKHNlbGYsIGFuYW1lKToKICAgICAgICAiIiJSZXR1cm5zIHRydWUgaWZmIHRoZSBuYW1lZCBhdHRyaWJ1dGUgaXMgYSBEVEQtc3R5bGUgSUQuIiIiCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIGlzSWROUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CiAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlmZiB0aGUgaWRlbnRpZmllZCBhdHRyaWJ1dGUgaXMgYSBEVEQtc3R5bGUgSUQuIiIiCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lCgogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgc2VsZi50YWdOYW1lID0gc3RhdGUKCmRlZiBfY2xlYXJfaWRfY2FjaGUobm9kZSk6CiAgICBpZiBub2RlLm5vZGVUeXBlID09IE5vZGUuRE9DVU1FTlRfTk9ERToKICAgICAgICBub2RlLl9pZF9jYWNoZS5jbGVhcigpCiAgICAgICAgbm9kZS5faWRfc2VhcmNoX3N0YWNrID0gTm9uZQogICAgZWxpZiBfaW5fZG9jdW1lbnQobm9kZSk6CiAgICAgICAgbm9kZS5vd25lckRvY3VtZW50Ll9pZF9jYWNoZS5jbGVhcigpCiAgICAgICAgbm9kZS5vd25lckRvY3VtZW50Ll9pZF9zZWFyY2hfc3RhY2s9IE5vbmUKCmNsYXNzIERvY3VtZW50KE5vZGUsIERvY3VtZW50TFMpOgogICAgX19zbG90c19fID0gKCdfZWxlbV9pbmZvJywgJ2RvY3R5cGUnLAogICAgICAgICAgICAgICAgICdfaWRfc2VhcmNoX3N0YWNrJywgJ2NoaWxkTm9kZXMnLCAnX2lkX2NhY2hlJykKICAgIF9jaGlsZF9ub2RlX3R5cGVzID0gKE5vZGUuRUxFTUVOVF9OT0RFLCBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUuQ09NTUVOVF9OT0RFLCBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERSkKCiAgICBpbXBsZW1lbnRhdGlvbiA9IERPTUltcGxlbWVudGF0aW9uKCkKICAgIG5vZGVUeXBlID0gTm9kZS5ET0NVTUVOVF9OT0RFCiAgICBub2RlTmFtZSA9ICIjZG9jdW1lbnQiCiAgICBub2RlVmFsdWUgPSBOb25lCiAgICBhdHRyaWJ1dGVzID0gTm9uZQogICAgcGFyZW50Tm9kZSA9IE5vbmUKICAgIHByZXZpb3VzU2libGluZyA9IG5leHRTaWJsaW5nID0gTm9uZQoKCiAgICAjIERvY3VtZW50IGF0dHJpYnV0ZXMgZnJvbSBMZXZlbCAzIChXRCA5IEFwcmlsIDIwMDIpCgogICAgYWN0dWFsRW5jb2RpbmcgPSBOb25lCiAgICBlbmNvZGluZyA9IE5vbmUKICAgIHN0YW5kYWxvbmUgPSBOb25lCiAgICB2ZXJzaW9uID0gTm9uZQogICAgc3RyaWN0RXJyb3JDaGVja2luZyA9IEZhbHNlCiAgICBlcnJvckhhbmRsZXIgPSBOb25lCiAgICBkb2N1bWVudFVSSSA9IE5vbmUKCiAgICBfbWFnaWNfaWRfY291bnQgPSAwCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuZG9jdHlwZSA9IE5vbmUKICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCiAgICAgICAgIyBtYXBwaW5nIG9mIChuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkgLT4gRWxlbWVudEluZm8KICAgICAgICAjICAgICAgICBhbmQgdGFnTmFtZSAtPiBFbGVtZW50SW5mbwogICAgICAgIHNlbGYuX2VsZW1faW5mbyA9IHt9CiAgICAgICAgc2VsZi5faWRfY2FjaGUgPSB7fQogICAgICAgIHNlbGYuX2lkX3NlYXJjaF9zdGFjayA9IE5vbmUKCiAgICBkZWYgX2dldF9lbGVtX2luZm8oc2VsZiwgZWxlbWVudCk6CiAgICAgICAgaWYgZWxlbWVudC5uYW1lc3BhY2VVUkk6CiAgICAgICAgICAgIGtleSA9IGVsZW1lbnQubmFtZXNwYWNlVVJJLCBlbGVtZW50LmxvY2FsTmFtZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGtleSA9IGVsZW1lbnQudGFnTmFtZQogICAgICAgIHJldHVybiBzZWxmLl9lbGVtX2luZm8uZ2V0KGtleSkKCiAgICBkZWYgX2dldF9hY3R1YWxFbmNvZGluZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5hY3R1YWxFbmNvZGluZwoKICAgIGRlZiBfZ2V0X2RvY3R5cGUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZG9jdHlwZQoKICAgIGRlZiBfZ2V0X2RvY3VtZW50VVJJKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmRvY3VtZW50VVJJCgogICAgZGVmIF9nZXRfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZW5jb2RpbmcKCiAgICBkZWYgX2dldF9lcnJvckhhbmRsZXIoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JIYW5kbGVyCgogICAgZGVmIF9nZXRfc3RhbmRhbG9uZShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5zdGFuZGFsb25lCgogICAgZGVmIF9nZXRfc3RyaWN0RXJyb3JDaGVja2luZyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5zdHJpY3RFcnJvckNoZWNraW5nCgogICAgZGVmIF9nZXRfdmVyc2lvbihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi52ZXJzaW9uCgogICAgZGVmIGFwcGVuZENoaWxkKHNlbGYsIG5vZGUpOgogICAgICAgIGlmIG5vZGUubm9kZVR5cGUgbm90IGluIHNlbGYuX2NoaWxkX25vZGVfdHlwZXM6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uSGllcmFyY2h5UmVxdWVzdEVycigKICAgICAgICAgICAgICAgICIlcyBjYW5ub3QgYmUgY2hpbGQgb2YgJXMiICUgKHJlcHIobm9kZSksIHJlcHIoc2VsZikpKQogICAgICAgIGlmIG5vZGUucGFyZW50Tm9kZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYmVmb3JlIHRoZSBuZXh0IHRlc3Qgc2luY2UgdGhpcwogICAgICAgICAgICAjIG1heSAqYmUqIHRoZSBkb2N1bWVudCBlbGVtZW50LCBpbiB3aGljaCBjYXNlIGl0IHNob3VsZAogICAgICAgICAgICAjIGVuZCB1cCByZS1vcmRlcmVkIHRvIHRoZSBlbmQuCiAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKQoKICAgICAgICBpZiBub2RlLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFIFwKICAgICAgICAgICBhbmQgc2VsZi5fZ2V0X2RvY3VtZW50RWxlbWVudCgpOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLkhpZXJhcmNoeVJlcXVlc3RFcnIoCiAgICAgICAgICAgICAgICAidHdvIGRvY3VtZW50IGVsZW1lbnRzIGRpc2FsbG93ZWQiKQogICAgICAgIHJldHVybiBOb2RlLmFwcGVuZENoaWxkKHNlbGYsIG5vZGUpCgogICAgZGVmIHJlbW92ZUNoaWxkKHNlbGYsIG9sZENoaWxkKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuY2hpbGROb2Rlcy5yZW1vdmUob2xkQ2hpbGQpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQogICAgICAgIG9sZENoaWxkLm5leHRTaWJsaW5nID0gb2xkQ2hpbGQucHJldmlvdXNTaWJsaW5nID0gTm9uZQogICAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUgPSBOb25lCiAgICAgICAgaWYgc2VsZi5kb2N1bWVudEVsZW1lbnQgaXMgb2xkQ2hpbGQ6CiAgICAgICAgICAgIHNlbGYuZG9jdW1lbnRFbGVtZW50ID0gTm9uZQoKICAgICAgICByZXR1cm4gb2xkQ2hpbGQKCiAgICBkZWYgX2dldF9kb2N1bWVudEVsZW1lbnQoc2VsZik6CiAgICAgICAgZm9yIG5vZGUgaW4gc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICBpZiBub2RlLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUKCiAgICBkZWYgdW5saW5rKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZG9jdHlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5kb2N0eXBlLnVubGluaygpCiAgICAgICAgICAgIHNlbGYuZG9jdHlwZSA9IE5vbmUKICAgICAgICBOb2RlLnVubGluayhzZWxmKQoKICAgIGRlZiBjbG9uZU5vZGUoc2VsZiwgZGVlcCk6CiAgICAgICAgaWYgbm90IGRlZXA6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgY2xvbmUgPSBzZWxmLmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KE5vbmUsIE5vbmUsIE5vbmUpCiAgICAgICAgY2xvbmUuZW5jb2RpbmcgPSBzZWxmLmVuY29kaW5nCiAgICAgICAgY2xvbmUuc3RhbmRhbG9uZSA9IHNlbGYuc3RhbmRhbG9uZQogICAgICAgIGNsb25lLnZlcnNpb24gPSBzZWxmLnZlcnNpb24KICAgICAgICBmb3IgbiBpbiBzZWxmLmNoaWxkTm9kZXM6CiAgICAgICAgICAgIGNoaWxkY2xvbmUgPSBfY2xvbmVfbm9kZShuLCBkZWVwLCBjbG9uZSkKICAgICAgICAgICAgYXNzZXJ0IGNoaWxkY2xvbmUub3duZXJEb2N1bWVudC5pc1NhbWVOb2RlKGNsb25lKQogICAgICAgICAgICBjbG9uZS5jaGlsZE5vZGVzLmFwcGVuZChjaGlsZGNsb25lKQogICAgICAgICAgICBpZiBjaGlsZGNsb25lLm5vZGVUeXBlID09IE5vZGUuRE9DVU1FTlRfTk9ERToKICAgICAgICAgICAgICAgIGFzc2VydCBjbG9uZS5kb2N1bWVudEVsZW1lbnQgaXMgTm9uZQogICAgICAgICAgICBlbGlmIGNoaWxkY2xvbmUubm9kZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgICAgICAgICBhc3NlcnQgY2xvbmUuZG9jdHlwZSBpcyBOb25lCiAgICAgICAgICAgICAgICBjbG9uZS5kb2N0eXBlID0gY2hpbGRjbG9uZQogICAgICAgICAgICBjaGlsZGNsb25lLnBhcmVudE5vZGUgPSBjbG9uZQogICAgICAgIHNlbGYuX2NhbGxfdXNlcl9kYXRhX2hhbmRsZXIoeG1sLmRvbS5Vc2VyRGF0YUhhbmRsZXIuTk9ERV9DTE9ORUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBjbG9uZSkKICAgICAgICByZXR1cm4gY2xvbmUKCiAgICBkZWYgY3JlYXRlRG9jdW1lbnRGcmFnbWVudChzZWxmKToKICAgICAgICBkID0gRG9jdW1lbnRGcmFnbWVudCgpCiAgICAgICAgZC5vd25lckRvY3VtZW50ID0gc2VsZgogICAgICAgIHJldHVybiBkCgogICAgZGVmIGNyZWF0ZUVsZW1lbnQoc2VsZiwgdGFnTmFtZSk6CiAgICAgICAgZSA9IEVsZW1lbnQodGFnTmFtZSkKICAgICAgICBlLm93bmVyRG9jdW1lbnQgPSBzZWxmCiAgICAgICAgcmV0dXJuIGUKCiAgICBkZWYgY3JlYXRlVGV4dE5vZGUoc2VsZiwgZGF0YSk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub2RlIGNvbnRlbnRzIG11c3QgYmUgYSBzdHJpbmciKQogICAgICAgIHQgPSBUZXh0KCkKICAgICAgICB0LmRhdGEgPSBkYXRhCiAgICAgICAgdC5vd25lckRvY3VtZW50ID0gc2VsZgogICAgICAgIHJldHVybiB0CgogICAgZGVmIGNyZWF0ZUNEQVRBU2VjdGlvbihzZWxmLCBkYXRhKToKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5vZGUgY29udGVudHMgbXVzdCBiZSBhIHN0cmluZyIpCiAgICAgICAgYyA9IENEQVRBU2VjdGlvbigpCiAgICAgICAgYy5kYXRhID0gZGF0YQogICAgICAgIGMub3duZXJEb2N1bWVudCA9IHNlbGYKICAgICAgICByZXR1cm4gYwoKICAgIGRlZiBjcmVhdGVDb21tZW50KHNlbGYsIGRhdGEpOgogICAgICAgIGMgPSBDb21tZW50KGRhdGEpCiAgICAgICAgYy5vd25lckRvY3VtZW50ID0gc2VsZgogICAgICAgIHJldHVybiBjCgogICAgZGVmIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihzZWxmLCB0YXJnZXQsIGRhdGEpOgogICAgICAgIHAgPSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhKQogICAgICAgIHAub3duZXJEb2N1bWVudCA9IHNlbGYKICAgICAgICByZXR1cm4gcAoKICAgIGRlZiBjcmVhdGVBdHRyaWJ1dGUoc2VsZiwgcU5hbWUpOgogICAgICAgIGEgPSBBdHRyKHFOYW1lKQogICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYKICAgICAgICBhLnZhbHVlID0gIiIKICAgICAgICByZXR1cm4gYQoKICAgIGRlZiBjcmVhdGVFbGVtZW50TlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lKToKICAgICAgICBwcmVmaXgsIGxvY2FsTmFtZSA9IF9uc3NwbGl0KHF1YWxpZmllZE5hbWUpCiAgICAgICAgZSA9IEVsZW1lbnQocXVhbGlmaWVkTmFtZSwgbmFtZXNwYWNlVVJJLCBwcmVmaXgpCiAgICAgICAgZS5vd25lckRvY3VtZW50ID0gc2VsZgogICAgICAgIHJldHVybiBlCgogICAgZGVmIGNyZWF0ZUF0dHJpYnV0ZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSk6CiAgICAgICAgcHJlZml4LCBsb2NhbE5hbWUgPSBfbnNzcGxpdChxdWFsaWZpZWROYW1lKQogICAgICAgIGEgPSBBdHRyKHF1YWxpZmllZE5hbWUsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBwcmVmaXgpCiAgICAgICAgYS5vd25lckRvY3VtZW50ID0gc2VsZgogICAgICAgIGEudmFsdWUgPSAiIgogICAgICAgIHJldHVybiBhCgogICAgIyBBIGNvdXBsZSBvZiBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBoZWxwZXJzIHRvIGNyZWF0ZSBub2RlIHR5cGVzCiAgICAjIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIFczQyBET00gc3BlY3M6CgogICAgZGVmIF9jcmVhdGVfZW50aXR5KHNlbGYsIG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgbm90YXRpb25OYW1lKToKICAgICAgICBlID0gRW50aXR5KG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgbm90YXRpb25OYW1lKQogICAgICAgIGUub3duZXJEb2N1bWVudCA9IHNlbGYKICAgICAgICByZXR1cm4gZQoKICAgIGRlZiBfY3JlYXRlX25vdGF0aW9uKHNlbGYsIG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCk6CiAgICAgICAgbiA9IE5vdGF0aW9uKG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkKICAgICAgICBuLm93bmVyRG9jdW1lbnQgPSBzZWxmCiAgICAgICAgcmV0dXJuIG4KCiAgICBkZWYgZ2V0RWxlbWVudEJ5SWQoc2VsZiwgaWQpOgogICAgICAgIGlmIGlkIGluIHNlbGYuX2lkX2NhY2hlOgogICAgICAgICAgICByZXR1cm4gc2VsZi5faWRfY2FjaGVbaWRdCiAgICAgICAgaWYgbm90IChzZWxmLl9lbGVtX2luZm8gb3Igc2VsZi5fbWFnaWNfaWRfY291bnQpOgogICAgICAgICAgICByZXR1cm4gTm9uZQoKICAgICAgICBzdGFjayA9IHNlbGYuX2lkX3NlYXJjaF9zdGFjawogICAgICAgIGlmIHN0YWNrIGlzIE5vbmU6CiAgICAgICAgICAgICMgd2UgbmV2ZXIgc2VhcmNoZWQgYmVmb3JlLCBvciB0aGUgY2FjaGUgaGFzIGJlZW4gY2xlYXJlZAogICAgICAgICAgICBzdGFjayA9IFtzZWxmLmRvY3VtZW50RWxlbWVudF0KICAgICAgICAgICAgc2VsZi5faWRfc2VhcmNoX3N0YWNrID0gc3RhY2sKICAgICAgICBlbGlmIG5vdCBzdGFjazoKICAgICAgICAgICAgIyBQcmV2aW91cyBzZWFyY2ggd2FzIGNvbXBsZXRlZCBhbmQgY2FjaGUgaXMgc3RpbGwgdmFsaWQ7CiAgICAgICAgICAgICMgbm8gbWF0Y2hpbmcgbm9kZS4KICAgICAgICAgICAgcmV0dXJuIE5vbmUKCiAgICAgICAgcmVzdWx0ID0gTm9uZQogICAgICAgIHdoaWxlIHN0YWNrOgogICAgICAgICAgICBub2RlID0gc3RhY2sucG9wKCkKICAgICAgICAgICAgIyBhZGQgY2hpbGQgZWxlbWVudHMgdG8gc3RhY2sgZm9yIGNvbnRpbnVlZCBzZWFyY2hpbmcKICAgICAgICAgICAgc3RhY2suZXh0ZW5kKFtjaGlsZCBmb3IgY2hpbGQgaW4gbm9kZS5jaGlsZE5vZGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hpbGQubm9kZVR5cGUgaW4gX25vZGVUeXBlc193aXRoX2NoaWxkcmVuXSkKICAgICAgICAgICAgIyBjaGVjayB0aGlzIG5vZGUKICAgICAgICAgICAgaW5mbyA9IHNlbGYuX2dldF9lbGVtX2luZm8obm9kZSkKICAgICAgICAgICAgaWYgaW5mbzoKICAgICAgICAgICAgICAgICMgV2UgaGF2ZSB0byBwcm9jZXNzIGFsbCBJRCBhdHRyaWJ1dGVzIGJlZm9yZQogICAgICAgICAgICAgICAgIyByZXR1cm5pbmcgaW4gb3JkZXIgdG8gZ2V0IGFsbCB0aGUgYXR0cmlidXRlcyBzZXQgdG8KICAgICAgICAgICAgICAgICMgYmUgSURzIHVzaW5nIEVsZW1lbnQuc2V0SWRBdHRyaWJ1dGUqKCkuCiAgICAgICAgICAgICAgICBmb3IgYXR0ciBpbiBub2RlLmF0dHJpYnV0ZXMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgICAgaWYgYXR0ci5uYW1lc3BhY2VVUkk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGluZm8uaXNJZE5TKGF0dHIubmFtZXNwYWNlVVJJLCBhdHRyLmxvY2FsTmFtZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZF9jYWNoZVthdHRyLnZhbHVlXSA9IG5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGF0dHIudmFsdWUgPT0gaWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbm9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBub3Qgbm9kZS5fbWFnaWNfaWRfbm9kZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICBlbGlmIGluZm8uaXNJZChhdHRyLm5hbWUpOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZF9jYWNoZVthdHRyLnZhbHVlXSA9IG5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXR0ci52YWx1ZSA9PSBpZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBub3Qgbm9kZS5fbWFnaWNfaWRfbm9kZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGVsaWYgYXR0ci5faXNfaWQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lkX2NhY2hlW2F0dHIudmFsdWVdID0gbm9kZQogICAgICAgICAgICAgICAgICAgICAgICBpZiBhdHRyLnZhbHVlID09IGlkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbm9kZQogICAgICAgICAgICAgICAgICAgICAgICBlbGlmIG5vZGUuX21hZ2ljX2lkX25vZGVzID09IDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbGlmIG5vZGUuX21hZ2ljX2lkX25vZGVzOgogICAgICAgICAgICAgICAgZm9yIGF0dHIgaW4gbm9kZS5hdHRyaWJ1dGVzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgICAgIGlmIGF0dHIuX2lzX2lkOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZF9jYWNoZVthdHRyLnZhbHVlXSA9IG5vZGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXR0ci52YWx1ZSA9PSBpZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5vZGUKICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgZGVmIGdldEVsZW1lbnRzQnlUYWdOYW1lKHNlbGYsIG5hbWUpOgogICAgICAgIHJldHVybiBfZ2V0X2VsZW1lbnRzX2J5X3RhZ05hbWVfaGVscGVyKHNlbGYsIG5hbWUsIE5vZGVMaXN0KCkpCgogICAgZGVmIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgogICAgICAgIHJldHVybiBfZ2V0X2VsZW1lbnRzX2J5X3RhZ05hbWVfbnNfaGVscGVyKAogICAgICAgICAgICBzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSwgTm9kZUxpc3QoKSkKCiAgICBkZWYgaXNTdXBwb3J0ZWQoc2VsZiwgZmVhdHVyZSwgdmVyc2lvbik6CiAgICAgICAgcmV0dXJuIHNlbGYuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKQoKICAgIGRlZiBpbXBvcnROb2RlKHNlbGYsIG5vZGUsIGRlZXApOgogICAgICAgIGlmIG5vZGUubm9kZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9OT0RFOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigiY2Fubm90IGltcG9ydCBkb2N1bWVudCBub2RlcyIpCiAgICAgICAgZWxpZiBub2RlLm5vZGVUeXBlID09IE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigiY2Fubm90IGltcG9ydCBkb2N1bWVudCB0eXBlIG5vZGVzIikKICAgICAgICByZXR1cm4gX2Nsb25lX25vZGUobm9kZSwgZGVlcCwgc2VsZikKCiAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIiwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgICAgICBzdGFuZGFsb25lPU5vbmUpOgogICAgICAgIGRlY2xhcmF0aW9ucyA9IFtdCgogICAgICAgIGlmIGVuY29kaW5nOgogICAgICAgICAgICBkZWNsYXJhdGlvbnMuYXBwZW5kKGYnZW5jb2Rpbmc9IntlbmNvZGluZ30iJykKICAgICAgICBpZiBzdGFuZGFsb25lIGlzIG5vdCBOb25lOgogICAgICAgICAgICBkZWNsYXJhdGlvbnMuYXBwZW5kKGYnc3RhbmRhbG9uZT0ieyJ5ZXMiIGlmIHN0YW5kYWxvbmUgZWxzZSAibm8ifSInKQoKICAgICAgICB3cml0ZXIud3JpdGUoZic8P3htbCB2ZXJzaW9uPSIxLjAiIHsiICIuam9pbihkZWNsYXJhdGlvbnMpfT8+e25ld2x9JykKCiAgICAgICAgZm9yIG5vZGUgaW4gc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICBub2RlLndyaXRleG1sKHdyaXRlciwgaW5kZW50LCBhZGRpbmRlbnQsIG5ld2wpCgogICAgIyBET00gTGV2ZWwgMyAoV0QgOSBBcHJpbCAyMDAyKQoKICAgIGRlZiByZW5hbWVOb2RlKHNlbGYsIG4sIG5hbWVzcGFjZVVSSSwgbmFtZSk6CiAgICAgICAgaWYgbi5vd25lckRvY3VtZW50IGlzIG5vdCBzZWxmOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLldyb25nRG9jdW1lbnRFcnIoCiAgICAgICAgICAgICAgICAiY2Fubm90IHJlbmFtZSBub2RlcyBmcm9tIG90aGVyIGRvY3VtZW50cztcbiIKICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcyxcbmZvdW5kICVzIiAlIChzZWxmLCBuLm93bmVyRG9jdW1lbnQpKQogICAgICAgIGlmIG4ubm9kZVR5cGUgbm90IGluIChOb2RlLkVMRU1FTlRfTk9ERSwgTm9kZS5BVFRSSUJVVEVfTk9ERSk6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90U3VwcG9ydGVkRXJyKAogICAgICAgICAgICAgICAgInJlbmFtZU5vZGUoKSBvbmx5IGFwcGxpZXMgdG8gZWxlbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzIikKICAgICAgICBpZiBuYW1lc3BhY2VVUkkgIT0gRU1QVFlfTkFNRVNQQUNFOgogICAgICAgICAgICBpZiAnOicgaW4gbmFtZToKICAgICAgICAgICAgICAgIHByZWZpeCwgbG9jYWxOYW1lID0gbmFtZS5zcGxpdCgnOicsIDEpCiAgICAgICAgICAgICAgICBpZiAoICBwcmVmaXggPT0gInhtbG5zIgogICAgICAgICAgICAgICAgICAgICAgYW5kIG5hbWVzcGFjZVVSSSAhPSB4bWwuZG9tLlhNTE5TX05BTUVTUEFDRSk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5OYW1lc3BhY2VFcnIoCiAgICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHVzZSBvZiAneG1sbnMnIHByZWZpeCIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiAoICBuYW1lID09ICJ4bWxucyIKICAgICAgICAgICAgICAgICAgICAgIGFuZCBuYW1lc3BhY2VVUkkgIT0geG1sLmRvbS5YTUxOU19OQU1FU1BBQ0UKICAgICAgICAgICAgICAgICAgICAgIGFuZCBuLm5vZGVUeXBlID09IE5vZGUuQVRUUklCVVRFX05PREUpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTmFtZXNwYWNlRXJyKAogICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCB1c2Ugb2YgdGhlICd4bWxucycgYXR0cmlidXRlIikKICAgICAgICAgICAgICAgIHByZWZpeCA9IE5vbmUKICAgICAgICAgICAgICAgIGxvY2FsTmFtZSA9IG5hbWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmVmaXggPSBOb25lCiAgICAgICAgICAgIGxvY2FsTmFtZSA9IE5vbmUKICAgICAgICBpZiBuLm5vZGVUeXBlID09IE5vZGUuQVRUUklCVVRFX05PREU6CiAgICAgICAgICAgIGVsZW1lbnQgPSBuLm93bmVyRWxlbWVudAogICAgICAgICAgICBpZiBlbGVtZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgaXNfaWQgPSBuLl9pc19pZAogICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGVOb2RlKG4pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZWxlbWVudCA9IE5vbmUKICAgICAgICBuLnByZWZpeCA9IHByZWZpeAogICAgICAgIG4uX2xvY2FsTmFtZSA9IGxvY2FsTmFtZQogICAgICAgIG4ubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCiAgICAgICAgbi5ub2RlTmFtZSA9IG5hbWUKICAgICAgICBpZiBuLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgogICAgICAgICAgICBuLnRhZ05hbWUgPSBuYW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBhdHRyaWJ1dGUgbm9kZQogICAgICAgICAgICBuLm5hbWUgPSBuYW1lCiAgICAgICAgICAgIGlmIGVsZW1lbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5vZGUobikKICAgICAgICAgICAgICAgIGlmIGlzX2lkOgogICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0SWRBdHRyaWJ1dGVOb2RlKG4pCiAgICAgICAgIyBJdCdzIG5vdCBjbGVhciBmcm9tIGEgc2VtYW50aWMgcGVyc3BlY3RpdmUgd2hldGhlciB3ZSBzaG91bGQKICAgICAgICAjIGNhbGwgdGhlIHVzZXIgZGF0YSBoYW5kbGVycyBmb3IgdGhlIE5PREVfUkVOQU1FRCBldmVudCBzaW5jZQogICAgICAgICMgd2UncmUgcmUtdXNpbmcgdGhlIGV4aXN0aW5nIG5vZGUuICBUaGUgZHJhZnQgc3BlYyBoYXMgYmVlbgogICAgICAgICMgaW50ZXJwcmV0ZWQgYXMgbWVhbmluZyAibm8sIGRvbid0IGNhbGwgdGhlIGhhbmRsZXIgdW5sZXNzIGEKICAgICAgICAjIG5ldyBub2RlIGlzIGNyZWF0ZWQuIgogICAgICAgIHJldHVybiBuCgpkZWZwcm9wZXJ0eShEb2N1bWVudCwgImRvY3VtZW50RWxlbWVudCIsCiAgICAgICAgICAgIGRvYz0iVG9wLWxldmVsIGVsZW1lbnQgb2YgdGhpcyBkb2N1bWVudC4iKQoKCmRlZiBfY2xvbmVfbm9kZShub2RlLCBkZWVwLCBuZXdPd25lckRvY3VtZW50KToKICAgICIiIgogICAgQ2xvbmUgYSBub2RlIGFuZCBnaXZlIGl0IHRoZSBuZXcgb3duZXIgZG9jdW1lbnQuCiAgICBDYWxsZWQgYnkgTm9kZS5jbG9uZU5vZGUgYW5kIERvY3VtZW50LmltcG9ydE5vZGUKICAgICIiIgogICAgaWYgbm9kZS5vd25lckRvY3VtZW50LmlzU2FtZU5vZGUobmV3T3duZXJEb2N1bWVudCk6CiAgICAgICAgb3BlcmF0aW9uID0geG1sLmRvbS5Vc2VyRGF0YUhhbmRsZXIuTk9ERV9DTE9ORUQKICAgIGVsc2U6CiAgICAgICAgb3BlcmF0aW9uID0geG1sLmRvbS5Vc2VyRGF0YUhhbmRsZXIuTk9ERV9JTVBPUlRFRAogICAgaWYgbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKICAgICAgICBjbG9uZSA9IG5ld093bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5vZGUubmFtZXNwYWNlVVJJLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlTmFtZSkKICAgICAgICBmb3IgYXR0ciBpbiBub2RlLmF0dHJpYnV0ZXMudmFsdWVzKCk6CiAgICAgICAgICAgIGNsb25lLnNldEF0dHJpYnV0ZU5TKGF0dHIubmFtZXNwYWNlVVJJLCBhdHRyLm5vZGVOYW1lLCBhdHRyLnZhbHVlKQogICAgICAgICAgICBhID0gY2xvbmUuZ2V0QXR0cmlidXRlTm9kZU5TKGF0dHIubmFtZXNwYWNlVVJJLCBhdHRyLmxvY2FsTmFtZSkKICAgICAgICAgICAgYS5zcGVjaWZpZWQgPSBhdHRyLnNwZWNpZmllZAoKICAgICAgICBpZiBkZWVwOgogICAgICAgICAgICBmb3IgY2hpbGQgaW4gbm9kZS5jaGlsZE5vZGVzOgogICAgICAgICAgICAgICAgYyA9IF9jbG9uZV9ub2RlKGNoaWxkLCBkZWVwLCBuZXdPd25lckRvY3VtZW50KQogICAgICAgICAgICAgICAgY2xvbmUuYXBwZW5kQ2hpbGQoYykKCiAgICBlbGlmIG5vZGUubm9kZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgIGNsb25lID0gbmV3T3duZXJEb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKICAgICAgICBpZiBkZWVwOgogICAgICAgICAgICBmb3IgY2hpbGQgaW4gbm9kZS5jaGlsZE5vZGVzOgogICAgICAgICAgICAgICAgYyA9IF9jbG9uZV9ub2RlKGNoaWxkLCBkZWVwLCBuZXdPd25lckRvY3VtZW50KQogICAgICAgICAgICAgICAgY2xvbmUuYXBwZW5kQ2hpbGQoYykKCiAgICBlbGlmIG5vZGUubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREU6CiAgICAgICAgY2xvbmUgPSBuZXdPd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5vZGUuZGF0YSkKICAgIGVsaWYgbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKICAgICAgICBjbG9uZSA9IG5ld093bmVyRG9jdW1lbnQuY3JlYXRlQ0RBVEFTZWN0aW9uKG5vZGUuZGF0YSkKICAgIGVsaWYgbm9kZS5ub2RlVHlwZSA9PSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKICAgICAgICBjbG9uZSA9IG5ld093bmVyRG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5vZGUudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5kYXRhKQogICAgZWxpZiBub2RlLm5vZGVUeXBlID09IE5vZGUuQ09NTUVOVF9OT0RFOgogICAgICAgIGNsb25lID0gbmV3T3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KG5vZGUuZGF0YSkKICAgIGVsaWYgbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkFUVFJJQlVURV9OT0RFOgogICAgICAgIGNsb25lID0gbmV3T3duZXJEb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhub2RlLm5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlTmFtZSkKICAgICAgICBjbG9uZS5zcGVjaWZpZWQgPSBUcnVlCiAgICAgICAgY2xvbmUudmFsdWUgPSBub2RlLnZhbHVlCiAgICBlbGlmIG5vZGUubm9kZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6CiAgICAgICAgYXNzZXJ0IG5vZGUub3duZXJEb2N1bWVudCBpcyBub3QgbmV3T3duZXJEb2N1bWVudAogICAgICAgIG9wZXJhdGlvbiA9IHhtbC5kb20uVXNlckRhdGFIYW5kbGVyLk5PREVfSU1QT1JURUQKICAgICAgICBjbG9uZSA9IG5ld093bmVyRG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKAogICAgICAgICAgICBub2RlLm5hbWUsIG5vZGUucHVibGljSWQsIG5vZGUuc3lzdGVtSWQpCiAgICAgICAgY2xvbmUub3duZXJEb2N1bWVudCA9IG5ld093bmVyRG9jdW1lbnQKICAgICAgICBpZiBkZWVwOgogICAgICAgICAgICBjbG9uZS5lbnRpdGllcy5fc2VxID0gW10KICAgICAgICAgICAgY2xvbmUubm90YXRpb25zLl9zZXEgPSBbXQogICAgICAgICAgICBmb3IgbiBpbiBub2RlLm5vdGF0aW9ucy5fc2VxOgogICAgICAgICAgICAgICAgbm90YXRpb24gPSBOb3RhdGlvbihuLm5vZGVOYW1lLCBuLnB1YmxpY0lkLCBuLnN5c3RlbUlkKQogICAgICAgICAgICAgICAgbm90YXRpb24ub3duZXJEb2N1bWVudCA9IG5ld093bmVyRG9jdW1lbnQKICAgICAgICAgICAgICAgIGNsb25lLm5vdGF0aW9ucy5fc2VxLmFwcGVuZChub3RhdGlvbikKICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobiwgJ19jYWxsX3VzZXJfZGF0YV9oYW5kbGVyJyk6CiAgICAgICAgICAgICAgICAgICAgbi5fY2FsbF91c2VyX2RhdGFfaGFuZGxlcihvcGVyYXRpb24sIG4sIG5vdGF0aW9uKQogICAgICAgICAgICBmb3IgZSBpbiBub2RlLmVudGl0aWVzLl9zZXE6CiAgICAgICAgICAgICAgICBlbnRpdHkgPSBFbnRpdHkoZS5ub2RlTmFtZSwgZS5wdWJsaWNJZCwgZS5zeXN0ZW1JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm5vdGF0aW9uTmFtZSkKICAgICAgICAgICAgICAgIGVudGl0eS5hY3R1YWxFbmNvZGluZyA9IGUuYWN0dWFsRW5jb2RpbmcKICAgICAgICAgICAgICAgIGVudGl0eS5lbmNvZGluZyA9IGUuZW5jb2RpbmcKICAgICAgICAgICAgICAgIGVudGl0eS52ZXJzaW9uID0gZS52ZXJzaW9uCiAgICAgICAgICAgICAgICBlbnRpdHkub3duZXJEb2N1bWVudCA9IG5ld093bmVyRG9jdW1lbnQKICAgICAgICAgICAgICAgIGNsb25lLmVudGl0aWVzLl9zZXEuYXBwZW5kKGVudGl0eSkKICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZSwgJ19jYWxsX3VzZXJfZGF0YV9oYW5kbGVyJyk6CiAgICAgICAgICAgICAgICAgICAgZS5fY2FsbF91c2VyX2RhdGFfaGFuZGxlcihvcGVyYXRpb24sIGUsIGVudGl0eSkKICAgIGVsc2U6CiAgICAgICAgIyBOb3RlIHRoZSBjbG9uaW5nIG9mIERvY3VtZW50IGFuZCBEb2N1bWVudFR5cGUgbm9kZXMgaXMKICAgICAgICAjIGltcGxlbWVudGF0aW9uIHNwZWNpZmljLiAgbWluaWRvbSBoYW5kbGVzIHRob3NlIGNhc2VzCiAgICAgICAgIyBkaXJlY3RseSBpbiB0aGUgY2xvbmVOb2RlKCkgbWV0aG9kcy4KICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigiQ2Fubm90IGNsb25lIG5vZGUgJXMiICUgcmVwcihub2RlKSkKCiAgICAjIENoZWNrIGZvciBfY2FsbF91c2VyX2RhdGFfaGFuZGxlcigpIHNpbmNlIHRoaXMgY291bGQgY29uY2VpdmFibHkKICAgICMgdXNlZCB3aXRoIG90aGVyIERPTSBpbXBsZW1lbnRhdGlvbnMgKG9uZSBvZiB0aGUgRm91clRob3VnaHQKICAgICMgRE9NcywgcGVyaGFwcz8pLgogICAgaWYgaGFzYXR0cihub2RlLCAnX2NhbGxfdXNlcl9kYXRhX2hhbmRsZXInKToKICAgICAgICBub2RlLl9jYWxsX3VzZXJfZGF0YV9oYW5kbGVyKG9wZXJhdGlvbiwgbm9kZSwgY2xvbmUpCiAgICByZXR1cm4gY2xvbmUKCgpkZWYgX25zc3BsaXQocXVhbGlmaWVkTmFtZSk6CiAgICBmaWVsZHMgPSBxdWFsaWZpZWROYW1lLnNwbGl0KCc6JywgMSkKICAgIGlmIGxlbihmaWVsZHMpID09IDI6CiAgICAgICAgcmV0dXJuIGZpZWxkcwogICAgZWxzZToKICAgICAgICByZXR1cm4gKE5vbmUsIGZpZWxkc1swXSkKCgpkZWYgX2RvX3B1bGxkb21fcGFyc2UoZnVuYywgYXJncywga3dhcmdzKToKICAgIGV2ZW50cyA9IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQogICAgdG9rdHlwZSwgcm9vdE5vZGUgPSBldmVudHMuZ2V0RXZlbnQoKQogICAgZXZlbnRzLmV4cGFuZE5vZGUocm9vdE5vZGUpCiAgICBldmVudHMuY2xlYXIoKQogICAgcmV0dXJuIHJvb3ROb2RlCgpkZWYgcGFyc2UoZmlsZSwgcGFyc2VyPU5vbmUsIGJ1ZnNpemU9Tm9uZSk6CiAgICAiIiJQYXJzZSBhIGZpbGUgaW50byBhIERPTSBieSBmaWxlbmFtZSBvciBmaWxlIG9iamVjdC4iIiIKICAgIGlmIHBhcnNlciBpcyBOb25lIGFuZCBub3QgYnVmc2l6ZToKICAgICAgICBmcm9tIHhtbC5kb20gaW1wb3J0IGV4cGF0YnVpbGRlcgogICAgICAgIHJldHVybiBleHBhdGJ1aWxkZXIucGFyc2UoZmlsZSkKICAgIGVsc2U6CiAgICAgICAgZnJvbSB4bWwuZG9tIGltcG9ydCBwdWxsZG9tCiAgICAgICAgcmV0dXJuIF9kb19wdWxsZG9tX3BhcnNlKHB1bGxkb20ucGFyc2UsIChmaWxlLCksCiAgICAgICAgICAgIHsncGFyc2VyJzogcGFyc2VyLCAnYnVmc2l6ZSc6IGJ1ZnNpemV9KQoKZGVmIHBhcnNlU3RyaW5nKHN0cmluZywgcGFyc2VyPU5vbmUpOgogICAgIiIiUGFyc2UgYSBmaWxlIGludG8gYSBET00gZnJvbSBhIHN0cmluZy4iIiIKICAgIGlmIHBhcnNlciBpcyBOb25lOgogICAgICAgIGZyb20geG1sLmRvbSBpbXBvcnQgZXhwYXRidWlsZGVyCiAgICAgICAgcmV0dXJuIGV4cGF0YnVpbGRlci5wYXJzZVN0cmluZyhzdHJpbmcpCiAgICBlbHNlOgogICAgICAgIGZyb20geG1sLmRvbSBpbXBvcnQgcHVsbGRvbQogICAgICAgIHJldHVybiBfZG9fcHVsbGRvbV9wYXJzZShwdWxsZG9tLnBhcnNlU3RyaW5nLCAoc3RyaW5nLCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsncGFyc2VyJzogcGFyc2VyfSkKCmRlZiBnZXRET01JbXBsZW1lbnRhdGlvbihmZWF0dXJlcz1Ob25lKToKICAgIGlmIGZlYXR1cmVzOgogICAgICAgIGlmIGlzaW5zdGFuY2UoZmVhdHVyZXMsIHN0cik6CiAgICAgICAgICAgIGZlYXR1cmVzID0gZG9tcmVnLl9wYXJzZV9mZWF0dXJlX3N0cmluZyhmZWF0dXJlcykKICAgICAgICBmb3IgZiwgdiBpbiBmZWF0dXJlczoKICAgICAgICAgICAgaWYgbm90IERvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoZiwgdik6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgcmV0dXJuIERvY3VtZW50LmltcGxlbWVudGF0aW9uClBLAwQUAAAAAAADIKNWDbc1SXUtAAB1LQAAEgAAAHhtbC9kb20vcHVsbGRvbS5weWltcG9ydCB4bWwuc2F4CmltcG9ydCB4bWwuc2F4LmhhbmRsZXIKClNUQVJUX0VMRU1FTlQgPSAiU1RBUlRfRUxFTUVOVCIKRU5EX0VMRU1FTlQgPSAiRU5EX0VMRU1FTlQiCkNPTU1FTlQgPSAiQ09NTUVOVCIKU1RBUlRfRE9DVU1FTlQgPSAiU1RBUlRfRE9DVU1FTlQiCkVORF9ET0NVTUVOVCA9ICJFTkRfRE9DVU1FTlQiClBST0NFU1NJTkdfSU5TVFJVQ1RJT04gPSAiUFJPQ0VTU0lOR19JTlNUUlVDVElPTiIKSUdOT1JBQkxFX1dISVRFU1BBQ0UgPSAiSUdOT1JBQkxFX1dISVRFU1BBQ0UiCkNIQVJBQ1RFUlMgPSAiQ0hBUkFDVEVSUyIKCmNsYXNzIFB1bGxET00oeG1sLnNheC5Db250ZW50SGFuZGxlcik6CiAgICBfbG9jYXRvciA9IE5vbmUKICAgIGRvY3VtZW50ID0gTm9uZQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkb2N1bWVudEZhY3Rvcnk9Tm9uZSk6CiAgICAgICAgZnJvbSB4bWwuZG9tIGltcG9ydCBYTUxfTkFNRVNQQUNFCiAgICAgICAgc2VsZi5kb2N1bWVudEZhY3RvcnkgPSBkb2N1bWVudEZhY3RvcnkKICAgICAgICBzZWxmLmZpcnN0RXZlbnQgPSBbTm9uZSwgTm9uZV0KICAgICAgICBzZWxmLmxhc3RFdmVudCA9IHNlbGYuZmlyc3RFdmVudAogICAgICAgIHNlbGYuZWxlbWVudFN0YWNrID0gW10KICAgICAgICBzZWxmLnB1c2ggPSBzZWxmLmVsZW1lbnRTdGFjay5hcHBlbmQKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYucG9wID0gc2VsZi5lbGVtZW50U3RhY2sucG9wCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIHVzZSBjbGFzcycgcG9wIGluc3RlYWQKICAgICAgICAgICAgcGFzcwogICAgICAgIHNlbGYuX25zX2NvbnRleHRzID0gW3tYTUxfTkFNRVNQQUNFOid4bWwnfV0gIyBjb250YWlucyB1cmkgLT4gcHJlZml4IGRpY3RzCiAgICAgICAgc2VsZi5fY3VycmVudF9jb250ZXh0ID0gc2VsZi5fbnNfY29udGV4dHNbLTFdCiAgICAgICAgc2VsZi5wZW5kaW5nX2V2ZW50cyA9IFtdCgogICAgZGVmIHBvcChzZWxmKToKICAgICAgICByZXN1bHQgPSBzZWxmLmVsZW1lbnRTdGFja1stMV0KICAgICAgICBkZWwgc2VsZi5lbGVtZW50U3RhY2tbLTFdCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBzZXREb2N1bWVudExvY2F0b3Ioc2VsZiwgbG9jYXRvcik6CiAgICAgICAgc2VsZi5fbG9jYXRvciA9IGxvY2F0b3IKCiAgICBkZWYgc3RhcnRQcmVmaXhNYXBwaW5nKHNlbGYsIHByZWZpeCwgdXJpKToKICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX3htbG5zX2F0dHJzJyk6CiAgICAgICAgICAgIHNlbGYuX3htbG5zX2F0dHJzID0gW10KICAgICAgICBzZWxmLl94bWxuc19hdHRycy5hcHBlbmQoKHByZWZpeCBvciAneG1sbnMnLCB1cmkpKQogICAgICAgIHNlbGYuX25zX2NvbnRleHRzLmFwcGVuZChzZWxmLl9jdXJyZW50X2NvbnRleHQuY29weSgpKQogICAgICAgIHNlbGYuX2N1cnJlbnRfY29udGV4dFt1cmldID0gcHJlZml4IG9yIE5vbmUKCiAgICBkZWYgZW5kUHJlZml4TWFwcGluZyhzZWxmLCBwcmVmaXgpOgogICAgICAgIHNlbGYuX2N1cnJlbnRfY29udGV4dCA9IHNlbGYuX25zX2NvbnRleHRzLnBvcCgpCgogICAgZGVmIHN0YXJ0RWxlbWVudE5TKHNlbGYsIG5hbWUsIHRhZ05hbWUgLCBhdHRycyk6CiAgICAgICAgIyBSZXRyaWV2ZSB4bWwgbmFtZXNwYWNlIGRlY2xhcmF0aW9uIGF0dHJpYnV0ZXMuCiAgICAgICAgeG1sbnNfdXJpID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJwogICAgICAgIHhtbG5zX2F0dHJzID0gZ2V0YXR0cihzZWxmLCAnX3htbG5zX2F0dHJzJywgTm9uZSkKICAgICAgICBpZiB4bWxuc19hdHRycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgZm9yIGFuYW1lLCB2YWx1ZSBpbiB4bWxuc19hdHRyczoKICAgICAgICAgICAgICAgIGF0dHJzLl9hdHRyc1soeG1sbnNfdXJpLCBhbmFtZSldID0gdmFsdWUKICAgICAgICAgICAgc2VsZi5feG1sbnNfYXR0cnMgPSBbXQogICAgICAgIHVyaSwgbG9jYWxuYW1lID0gbmFtZQogICAgICAgIGlmIHVyaToKICAgICAgICAgICAgIyBXaGVuIHVzaW5nIG5hbWVzcGFjZXMsIHRoZSByZWFkZXIgbWF5IG9yIG1heSBub3QKICAgICAgICAgICAgIyBwcm92aWRlIHVzIHdpdGggdGhlIG9yaWdpbmFsIG5hbWUuIElmIG5vdCwgY3JlYXRlCiAgICAgICAgICAgICMgKmEqIHZhbGlkIHRhZ05hbWUgZnJvbSB0aGUgY3VycmVudCBjb250ZXh0LgogICAgICAgICAgICBpZiB0YWdOYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBwcmVmaXggPSBzZWxmLl9jdXJyZW50X2NvbnRleHRbdXJpXQogICAgICAgICAgICAgICAgaWYgcHJlZml4OgogICAgICAgICAgICAgICAgICAgIHRhZ05hbWUgPSBwcmVmaXggKyAiOiIgKyBsb2NhbG5hbWUKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdGFnTmFtZSA9IGxvY2FsbmFtZQogICAgICAgICAgICBpZiBzZWxmLmRvY3VtZW50OgogICAgICAgICAgICAgICAgbm9kZSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHVyaSwgdGFnTmFtZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG5vZGUgPSBzZWxmLmJ1aWxkRG9jdW1lbnQodXJpLCB0YWdOYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgV2hlbiB0aGUgdGFnbmFtZSBpcyBub3QgcHJlZml4ZWQsIGl0IGp1c3QgYXBwZWFycyBhcwogICAgICAgICAgICAjIGxvY2FsbmFtZQogICAgICAgICAgICBpZiBzZWxmLmRvY3VtZW50OgogICAgICAgICAgICAgICAgbm9kZSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChsb2NhbG5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBub2RlID0gc2VsZi5idWlsZERvY3VtZW50KE5vbmUsIGxvY2FsbmFtZSkKCiAgICAgICAgZm9yIGFuYW1lLHZhbHVlIGluIGF0dHJzLml0ZW1zKCk6CiAgICAgICAgICAgIGFfdXJpLCBhX2xvY2FsbmFtZSA9IGFuYW1lCiAgICAgICAgICAgIGlmIGFfdXJpID09IHhtbG5zX3VyaToKICAgICAgICAgICAgICAgIGlmIGFfbG9jYWxuYW1lID09ICd4bWxucyc6CiAgICAgICAgICAgICAgICAgICAgcW5hbWUgPSBhX2xvY2FsbmFtZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBxbmFtZSA9ICd4bWxuczonICsgYV9sb2NhbG5hbWUKICAgICAgICAgICAgICAgIGF0dHIgPSBzZWxmLmRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZU5TKGFfdXJpLCBxbmFtZSkKICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlTm9kZU5TKGF0dHIpCiAgICAgICAgICAgIGVsaWYgYV91cmk6CiAgICAgICAgICAgICAgICBwcmVmaXggPSBzZWxmLl9jdXJyZW50X2NvbnRleHRbYV91cmldCiAgICAgICAgICAgICAgICBpZiBwcmVmaXg6CiAgICAgICAgICAgICAgICAgICAgcW5hbWUgPSBwcmVmaXggKyAiOiIgKyBhX2xvY2FsbmFtZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBxbmFtZSA9IGFfbG9jYWxuYW1lCiAgICAgICAgICAgICAgICBhdHRyID0gc2VsZi5kb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGVOUyhhX3VyaSwgcW5hbWUpCiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZU5vZGVOUyhhdHRyKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYXR0ciA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGFfbG9jYWxuYW1lKQogICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpCiAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQoKICAgICAgICBzZWxmLmxhc3RFdmVudFsxXSA9IFsoU1RBUlRfRUxFTUVOVCwgbm9kZSksIE5vbmVdCiAgICAgICAgc2VsZi5sYXN0RXZlbnQgPSBzZWxmLmxhc3RFdmVudFsxXQogICAgICAgIHNlbGYucHVzaChub2RlKQoKICAgIGRlZiBlbmRFbGVtZW50TlMoc2VsZiwgbmFtZSwgdGFnTmFtZSk6CiAgICAgICAgc2VsZi5sYXN0RXZlbnRbMV0gPSBbKEVORF9FTEVNRU5ULCBzZWxmLnBvcCgpKSwgTm9uZV0KICAgICAgICBzZWxmLmxhc3RFdmVudCA9IHNlbGYubGFzdEV2ZW50WzFdCgogICAgZGVmIHN0YXJ0RWxlbWVudChzZWxmLCBuYW1lLCBhdHRycyk6CiAgICAgICAgaWYgc2VsZi5kb2N1bWVudDoKICAgICAgICAgICAgbm9kZSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG5vZGUgPSBzZWxmLmJ1aWxkRG9jdW1lbnQoTm9uZSwgbmFtZSkKCiAgICAgICAgZm9yIGFuYW1lLHZhbHVlIGluIGF0dHJzLml0ZW1zKCk6CiAgICAgICAgICAgIGF0dHIgPSBzZWxmLmRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShhbmFtZSkKICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlCiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlTm9kZShhdHRyKQoKICAgICAgICBzZWxmLmxhc3RFdmVudFsxXSA9IFsoU1RBUlRfRUxFTUVOVCwgbm9kZSksIE5vbmVdCiAgICAgICAgc2VsZi5sYXN0RXZlbnQgPSBzZWxmLmxhc3RFdmVudFsxXQogICAgICAgIHNlbGYucHVzaChub2RlKQoKICAgIGRlZiBlbmRFbGVtZW50KHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYubGFzdEV2ZW50WzFdID0gWyhFTkRfRUxFTUVOVCwgc2VsZi5wb3AoKSksIE5vbmVdCiAgICAgICAgc2VsZi5sYXN0RXZlbnQgPSBzZWxmLmxhc3RFdmVudFsxXQoKICAgIGRlZiBjb21tZW50KHNlbGYsIHMpOgogICAgICAgIGlmIHNlbGYuZG9jdW1lbnQ6CiAgICAgICAgICAgIG5vZGUgPSBzZWxmLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQocykKICAgICAgICAgICAgc2VsZi5sYXN0RXZlbnRbMV0gPSBbKENPTU1FTlQsIG5vZGUpLCBOb25lXQogICAgICAgICAgICBzZWxmLmxhc3RFdmVudCA9IHNlbGYubGFzdEV2ZW50WzFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZXZlbnQgPSBbKENPTU1FTlQsIHMpLCBOb25lXQogICAgICAgICAgICBzZWxmLnBlbmRpbmdfZXZlbnRzLmFwcGVuZChldmVudCkKCiAgICBkZWYgcHJvY2Vzc2luZ0luc3RydWN0aW9uKHNlbGYsIHRhcmdldCwgZGF0YSk6CiAgICAgICAgaWYgc2VsZi5kb2N1bWVudDoKICAgICAgICAgICAgbm9kZSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwgZGF0YSkKICAgICAgICAgICAgc2VsZi5sYXN0RXZlbnRbMV0gPSBbKFBST0NFU1NJTkdfSU5TVFJVQ1RJT04sIG5vZGUpLCBOb25lXQogICAgICAgICAgICBzZWxmLmxhc3RFdmVudCA9IHNlbGYubGFzdEV2ZW50WzFdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZXZlbnQgPSBbKFBST0NFU1NJTkdfSU5TVFJVQ1RJT04sIHRhcmdldCwgZGF0YSksIE5vbmVdCiAgICAgICAgICAgIHNlbGYucGVuZGluZ19ldmVudHMuYXBwZW5kKGV2ZW50KQoKICAgIGRlZiBpZ25vcmFibGVXaGl0ZXNwYWNlKHNlbGYsIGNoYXJzKToKICAgICAgICBub2RlID0gc2VsZi5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjaGFycykKICAgICAgICBzZWxmLmxhc3RFdmVudFsxXSA9IFsoSUdOT1JBQkxFX1dISVRFU1BBQ0UsIG5vZGUpLCBOb25lXQogICAgICAgIHNlbGYubGFzdEV2ZW50ID0gc2VsZi5sYXN0RXZlbnRbMV0KCiAgICBkZWYgY2hhcmFjdGVycyhzZWxmLCBjaGFycyk6CiAgICAgICAgbm9kZSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2hhcnMpCiAgICAgICAgc2VsZi5sYXN0RXZlbnRbMV0gPSBbKENIQVJBQ1RFUlMsIG5vZGUpLCBOb25lXQogICAgICAgIHNlbGYubGFzdEV2ZW50ID0gc2VsZi5sYXN0RXZlbnRbMV0KCiAgICBkZWYgc3RhcnREb2N1bWVudChzZWxmKToKICAgICAgICBpZiBzZWxmLmRvY3VtZW50RmFjdG9yeSBpcyBOb25lOgogICAgICAgICAgICBpbXBvcnQgeG1sLmRvbS5taW5pZG9tCiAgICAgICAgICAgIHNlbGYuZG9jdW1lbnRGYWN0b3J5ID0geG1sLmRvbS5taW5pZG9tLkRvY3VtZW50LmltcGxlbWVudGF0aW9uCgogICAgZGVmIGJ1aWxkRG9jdW1lbnQoc2VsZiwgdXJpLCB0YWduYW1lKToKICAgICAgICAjIENhbid0IGRvIHRoYXQgaW4gc3RhcnREb2N1bWVudCwgc2luY2Ugd2UgbmVlZCB0aGUgdGFnbmFtZQogICAgICAgICMgWFhYOiBvYnRhaW4gRG9jdW1lbnRUeXBlCiAgICAgICAgbm9kZSA9IHNlbGYuZG9jdW1lbnRGYWN0b3J5LmNyZWF0ZURvY3VtZW50KHVyaSwgdGFnbmFtZSwgTm9uZSkKICAgICAgICBzZWxmLmRvY3VtZW50ID0gbm9kZQogICAgICAgIHNlbGYubGFzdEV2ZW50WzFdID0gWyhTVEFSVF9ET0NVTUVOVCwgbm9kZSksIE5vbmVdCiAgICAgICAgc2VsZi5sYXN0RXZlbnQgPSBzZWxmLmxhc3RFdmVudFsxXQogICAgICAgIHNlbGYucHVzaChub2RlKQogICAgICAgICMgUHV0IGV2ZXJ5dGhpbmcgd2UgaGF2ZSBzZWVuIHNvIGZhciBpbnRvIHRoZSBkb2N1bWVudAogICAgICAgIGZvciBlIGluIHNlbGYucGVuZGluZ19ldmVudHM6CiAgICAgICAgICAgIGlmIGVbMF1bMF0gPT0gUFJPQ0VTU0lOR19JTlNUUlVDVElPTjoKICAgICAgICAgICAgICAgIF8sdGFyZ2V0LGRhdGEgPSBlWzBdCiAgICAgICAgICAgICAgICBuID0gc2VsZi5kb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhKQogICAgICAgICAgICAgICAgZVswXSA9IChQUk9DRVNTSU5HX0lOU1RSVUNUSU9OLCBuKQogICAgICAgICAgICBlbGlmIGVbMF1bMF0gPT0gQ09NTUVOVDoKICAgICAgICAgICAgICAgIG4gPSBzZWxmLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZVswXVsxXSkKICAgICAgICAgICAgICAgIGVbMF0gPSAoQ09NTUVOVCwgbikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJVbmtub3duIHBlbmRpbmcgZXZlbnQgIixlWzBdWzBdKQogICAgICAgICAgICBzZWxmLmxhc3RFdmVudFsxXSA9IGUKICAgICAgICAgICAgc2VsZi5sYXN0RXZlbnQgPSBlCiAgICAgICAgc2VsZi5wZW5kaW5nX2V2ZW50cyA9IE5vbmUKICAgICAgICByZXR1cm4gbm9kZS5maXJzdENoaWxkCgogICAgZGVmIGVuZERvY3VtZW50KHNlbGYpOgogICAgICAgIHNlbGYubGFzdEV2ZW50WzFdID0gWyhFTkRfRE9DVU1FTlQsIHNlbGYuZG9jdW1lbnQpLCBOb25lXQogICAgICAgIHNlbGYucG9wKCkKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgImNsZWFyKCk6IEV4cGxpY2l0bHkgcmVsZWFzZSBwYXJzaW5nIHN0cnVjdHVyZXMiCiAgICAgICAgc2VsZi5kb2N1bWVudCA9IE5vbmUKCmNsYXNzIEVycm9ySGFuZGxlcjoKICAgIGRlZiB3YXJuaW5nKHNlbGYsIGV4Y2VwdGlvbik6CiAgICAgICAgcHJpbnQoZXhjZXB0aW9uKQogICAgZGVmIGVycm9yKHNlbGYsIGV4Y2VwdGlvbik6CiAgICAgICAgcmFpc2UgZXhjZXB0aW9uCiAgICBkZWYgZmF0YWxFcnJvcihzZWxmLCBleGNlcHRpb24pOgogICAgICAgIHJhaXNlIGV4Y2VwdGlvbgoKY2xhc3MgRE9NRXZlbnRTdHJlYW06CiAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtLCBwYXJzZXIsIGJ1ZnNpemUpOgogICAgICAgIHNlbGYuc3RyZWFtID0gc3RyZWFtCiAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIKICAgICAgICBzZWxmLmJ1ZnNpemUgPSBidWZzaXplCiAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5wYXJzZXIsICdmZWVkJyk6CiAgICAgICAgICAgIHNlbGYuZ2V0RXZlbnQgPSBzZWxmLl9zbHVycAogICAgICAgIHNlbGYucmVzZXQoKQoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBzZWxmLnB1bGxkb20gPSBQdWxsRE9NKCkKICAgICAgICAjIFRoaXMgY29udGVudCBoYW5kbGVyIHJlbGllcyBvbiBuYW1lc3BhY2Ugc3VwcG9ydAogICAgICAgIHNlbGYucGFyc2VyLnNldEZlYXR1cmUoeG1sLnNheC5oYW5kbGVyLmZlYXR1cmVfbmFtZXNwYWNlcywgMSkKICAgICAgICBzZWxmLnBhcnNlci5zZXRDb250ZW50SGFuZGxlcihzZWxmLnB1bGxkb20pCgogICAgZGVmIF9fbmV4dF9fKHNlbGYpOgogICAgICAgIHJjID0gc2VsZi5nZXRFdmVudCgpCiAgICAgICAgaWYgcmM6CiAgICAgICAgICAgIHJldHVybiByYwogICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KCiAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYKCiAgICBkZWYgZXhwYW5kTm9kZShzZWxmLCBub2RlKToKICAgICAgICBldmVudCA9IHNlbGYuZ2V0RXZlbnQoKQogICAgICAgIHBhcmVudHMgPSBbbm9kZV0KICAgICAgICB3aGlsZSBldmVudDoKICAgICAgICAgICAgdG9rZW4sIGN1cl9ub2RlID0gZXZlbnQKICAgICAgICAgICAgaWYgY3VyX25vZGUgaXMgbm9kZToKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBpZiB0b2tlbiAhPSBFTkRfRUxFTUVOVDoKICAgICAgICAgICAgICAgIHBhcmVudHNbLTFdLmFwcGVuZENoaWxkKGN1cl9ub2RlKQogICAgICAgICAgICBpZiB0b2tlbiA9PSBTVEFSVF9FTEVNRU5UOgogICAgICAgICAgICAgICAgcGFyZW50cy5hcHBlbmQoY3VyX25vZGUpCiAgICAgICAgICAgIGVsaWYgdG9rZW4gPT0gRU5EX0VMRU1FTlQ6CiAgICAgICAgICAgICAgICBkZWwgcGFyZW50c1stMV0KICAgICAgICAgICAgZXZlbnQgPSBzZWxmLmdldEV2ZW50KCkKCiAgICBkZWYgZ2V0RXZlbnQoc2VsZik6CiAgICAgICAgIyB1c2UgSW5jcmVtZW50YWxQYXJzZXIgaW50ZXJmYWNlLCBzbyB3ZSBnZXQgdGhlIGRlc2lyZWQKICAgICAgICAjIHB1bGwgZWZmZWN0CiAgICAgICAgaWYgbm90IHNlbGYucHVsbGRvbS5maXJzdEV2ZW50WzFdOgogICAgICAgICAgICBzZWxmLnB1bGxkb20ubGFzdEV2ZW50ID0gc2VsZi5wdWxsZG9tLmZpcnN0RXZlbnQKICAgICAgICB3aGlsZSBub3Qgc2VsZi5wdWxsZG9tLmZpcnN0RXZlbnRbMV06CiAgICAgICAgICAgIGJ1ZiA9IHNlbGYuc3RyZWFtLnJlYWQoc2VsZi5idWZzaXplKQogICAgICAgICAgICBpZiBub3QgYnVmOgogICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIuY2xvc2UoKQogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgc2VsZi5wYXJzZXIuZmVlZChidWYpCiAgICAgICAgcmMgPSBzZWxmLnB1bGxkb20uZmlyc3RFdmVudFsxXVswXQogICAgICAgIHNlbGYucHVsbGRvbS5maXJzdEV2ZW50WzFdID0gc2VsZi5wdWxsZG9tLmZpcnN0RXZlbnRbMV1bMV0KICAgICAgICByZXR1cm4gcmMKCiAgICBkZWYgX3NsdXJwKHNlbGYpOgogICAgICAgICIiIiBGYWxsYmFjayByZXBsYWNlbWVudCBmb3IgZ2V0RXZlbnQoKSB1c2luZyB0aGUKICAgICAgICAgICAgc3RhbmRhcmQgU0FYMiBpbnRlcmZhY2UsIHdoaWNoIG1lYW5zIHdlIHNsdXJwIHRoZQogICAgICAgICAgICBTQVggZXZlbnRzIGludG8gbWVtb3J5IChubyBwZXJmb3JtYW5jZSBnYWluLCBidXQKICAgICAgICAgICAgd2UgYXJlIGNvbXBhdGlibGUgdG8gYWxsIFNBWCBwYXJzZXJzKS4KICAgICAgICAiIiIKICAgICAgICBzZWxmLnBhcnNlci5wYXJzZShzZWxmLnN0cmVhbSkKICAgICAgICBzZWxmLmdldEV2ZW50ID0gc2VsZi5fZW1pdAogICAgICAgIHJldHVybiBzZWxmLl9lbWl0KCkKCiAgICBkZWYgX2VtaXQoc2VsZik6CiAgICAgICAgIiIiIEZhbGxiYWNrIHJlcGxhY2VtZW50IGZvciBnZXRFdmVudCgpIHRoYXQgZW1pdHMKICAgICAgICAgICAgdGhlIGV2ZW50cyB0aGF0IF9zbHVycCgpIHJlYWQgcHJldmlvdXNseS4KICAgICAgICAiIiIKICAgICAgICByYyA9IHNlbGYucHVsbGRvbS5maXJzdEV2ZW50WzFdWzBdCiAgICAgICAgc2VsZi5wdWxsZG9tLmZpcnN0RXZlbnRbMV0gPSBzZWxmLnB1bGxkb20uZmlyc3RFdmVudFsxXVsxXQogICAgICAgIHJldHVybiByYwoKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICAiIiJjbGVhcigpOiBFeHBsaWNpdGx5IHJlbGVhc2UgcGFyc2luZyBvYmplY3RzIiIiCiAgICAgICAgc2VsZi5wdWxsZG9tLmNsZWFyKCkKICAgICAgICBkZWwgc2VsZi5wdWxsZG9tCiAgICAgICAgc2VsZi5wYXJzZXIgPSBOb25lCiAgICAgICAgc2VsZi5zdHJlYW0gPSBOb25lCgpjbGFzcyBTQVgyRE9NKFB1bGxET00pOgoKICAgIGRlZiBzdGFydEVsZW1lbnROUyhzZWxmLCBuYW1lLCB0YWdOYW1lICwgYXR0cnMpOgogICAgICAgIFB1bGxET00uc3RhcnRFbGVtZW50TlMoc2VsZiwgbmFtZSwgdGFnTmFtZSwgYXR0cnMpCiAgICAgICAgY3VyTm9kZSA9IHNlbGYuZWxlbWVudFN0YWNrWy0xXQogICAgICAgIHBhcmVudE5vZGUgPSBzZWxmLmVsZW1lbnRTdGFja1stMl0KICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGN1ck5vZGUpCgogICAgZGVmIHN0YXJ0RWxlbWVudChzZWxmLCBuYW1lLCBhdHRycyk6CiAgICAgICAgUHVsbERPTS5zdGFydEVsZW1lbnQoc2VsZiwgbmFtZSwgYXR0cnMpCiAgICAgICAgY3VyTm9kZSA9IHNlbGYuZWxlbWVudFN0YWNrWy0xXQogICAgICAgIHBhcmVudE5vZGUgPSBzZWxmLmVsZW1lbnRTdGFja1stMl0KICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGN1ck5vZGUpCgogICAgZGVmIHByb2Nlc3NpbmdJbnN0cnVjdGlvbihzZWxmLCB0YXJnZXQsIGRhdGEpOgogICAgICAgIFB1bGxET00ucHJvY2Vzc2luZ0luc3RydWN0aW9uKHNlbGYsIHRhcmdldCwgZGF0YSkKICAgICAgICBub2RlID0gc2VsZi5sYXN0RXZlbnRbMF1bMV0KICAgICAgICBwYXJlbnROb2RlID0gc2VsZi5lbGVtZW50U3RhY2tbLTFdCiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChub2RlKQoKICAgIGRlZiBpZ25vcmFibGVXaGl0ZXNwYWNlKHNlbGYsIGNoYXJzKToKICAgICAgICBQdWxsRE9NLmlnbm9yYWJsZVdoaXRlc3BhY2Uoc2VsZiwgY2hhcnMpCiAgICAgICAgbm9kZSA9IHNlbGYubGFzdEV2ZW50WzBdWzFdCiAgICAgICAgcGFyZW50Tm9kZSA9IHNlbGYuZWxlbWVudFN0YWNrWy0xXQogICAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobm9kZSkKCiAgICBkZWYgY2hhcmFjdGVycyhzZWxmLCBjaGFycyk6CiAgICAgICAgUHVsbERPTS5jaGFyYWN0ZXJzKHNlbGYsIGNoYXJzKQogICAgICAgIG5vZGUgPSBzZWxmLmxhc3RFdmVudFswXVsxXQogICAgICAgIHBhcmVudE5vZGUgPSBzZWxmLmVsZW1lbnRTdGFja1stMV0KICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKG5vZGUpCgoKZGVmYXVsdF9idWZzaXplID0gKDIgKiogMTQpIC0gMjAKCmRlZiBwYXJzZShzdHJlYW1fb3Jfc3RyaW5nLCBwYXJzZXI9Tm9uZSwgYnVmc2l6ZT1Ob25lKToKICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKICAgICAgICBidWZzaXplID0gZGVmYXVsdF9idWZzaXplCiAgICBpZiBpc2luc3RhbmNlKHN0cmVhbV9vcl9zdHJpbmcsIHN0cik6CiAgICAgICAgc3RyZWFtID0gb3BlbihzdHJlYW1fb3Jfc3RyaW5nLCAncmInKQogICAgZWxzZToKICAgICAgICBzdHJlYW0gPSBzdHJlYW1fb3Jfc3RyaW5nCiAgICBpZiBub3QgcGFyc2VyOgogICAgICAgIHBhcnNlciA9IHhtbC5zYXgubWFrZV9wYXJzZXIoKQogICAgcmV0dXJuIERPTUV2ZW50U3RyZWFtKHN0cmVhbSwgcGFyc2VyLCBidWZzaXplKQoKZGVmIHBhcnNlU3RyaW5nKHN0cmluZywgcGFyc2VyPU5vbmUpOgogICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KCiAgICBidWZzaXplID0gbGVuKHN0cmluZykKICAgIGJ1ZiA9IFN0cmluZ0lPKHN0cmluZykKICAgIGlmIG5vdCBwYXJzZXI6CiAgICAgICAgcGFyc2VyID0geG1sLnNheC5tYWtlX3BhcnNlcigpCiAgICByZXR1cm4gRE9NRXZlbnRTdHJlYW0oYnVmLCBwYXJzZXIsIGJ1ZnNpemUpClBLAwQUAAAAAAADIKNWpp1F72MwAABjMAAAFQAAAHhtbC9kb20veG1sYnVpbGRlci5weSIiIkltcGxlbWVudGF0aW9uIG9mIHRoZSBET00gTGV2ZWwgMyAnTFMtTG9hZCcgZmVhdHVyZS4iIiIKCmltcG9ydCBjb3B5CmltcG9ydCB4bWwuZG9tCgpmcm9tIHhtbC5kb20uTm9kZUZpbHRlciBpbXBvcnQgTm9kZUZpbHRlcgoKCl9fYWxsX18gPSBbIkRPTUJ1aWxkZXIiLCAiRE9NRW50aXR5UmVzb2x2ZXIiLCAiRE9NSW5wdXRTb3VyY2UiXQoKCmNsYXNzIE9wdGlvbnM6CiAgICAiIiJGZWF0dXJlcyBvYmplY3QgdGhhdCBoYXMgdmFyaWFibGVzIHNldCBmb3IgZWFjaCBET01CdWlsZGVyIGZlYXR1cmUuCgogICAgVGhlIERPTUJ1aWxkZXIgY2xhc3MgdXNlcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHRvIHBhc3Mgc2V0dGluZ3MgdG8KICAgIHRoZSBFeHBhdEJ1aWxkZXIgY2xhc3MuCiAgICAiIiIKCiAgICAjIE5vdGUgdGhhdCB0aGUgRE9NQnVpbGRlciBjbGFzcyBpbiBMb2FkU2F2ZSBjb25zdHJhaW5zIHdoaWNoIG9mIHRoZXNlCiAgICAjIHZhbHVlcyBjYW4gYmUgc2V0IHVzaW5nIHRoZSBET00gTGV2ZWwgMyBMb2FkU2F2ZSBmZWF0dXJlLgoKICAgIG5hbWVzcGFjZXMgPSAxCiAgICBuYW1lc3BhY2VfZGVjbGFyYXRpb25zID0gVHJ1ZQogICAgdmFsaWRhdGlvbiA9IEZhbHNlCiAgICBleHRlcm5hbF9wYXJhbWV0ZXJfZW50aXRpZXMgPSBUcnVlCiAgICBleHRlcm5hbF9nZW5lcmFsX2VudGl0aWVzID0gVHJ1ZQogICAgZXh0ZXJuYWxfZHRkX3N1YnNldCA9IFRydWUKICAgIHZhbGlkYXRlX2lmX3NjaGVtYSA9IEZhbHNlCiAgICB2YWxpZGF0ZSA9IEZhbHNlCiAgICBkYXRhdHlwZV9ub3JtYWxpemF0aW9uID0gRmFsc2UKICAgIGNyZWF0ZV9lbnRpdHlfcmVmX25vZGVzID0gVHJ1ZQogICAgZW50aXRpZXMgPSBUcnVlCiAgICB3aGl0ZXNwYWNlX2luX2VsZW1lbnRfY29udGVudCA9IFRydWUKICAgIGNkYXRhX3NlY3Rpb25zID0gVHJ1ZQogICAgY29tbWVudHMgPSBUcnVlCiAgICBjaGFyc2V0X292ZXJyaWRlc194bWxfZW5jb2RpbmcgPSBUcnVlCiAgICBpbmZvc2V0ID0gRmFsc2UKICAgIHN1cHBvcnRlZF9tZWRpYXR5cGVzX29ubHkgPSBGYWxzZQoKICAgIGVycm9ySGFuZGxlciA9IE5vbmUKICAgIGZpbHRlciA9IE5vbmUKCgpjbGFzcyBET01CdWlsZGVyOgogICAgZW50aXR5UmVzb2x2ZXIgPSBOb25lCiAgICBlcnJvckhhbmRsZXIgPSBOb25lCiAgICBmaWx0ZXIgPSBOb25lCgogICAgQUNUSU9OX1JFUExBQ0UgPSAxCiAgICBBQ1RJT05fQVBQRU5EX0FTX0NISUxEUkVOID0gMgogICAgQUNUSU9OX0lOU0VSVF9BRlRFUiA9IDMKICAgIEFDVElPTl9JTlNFUlRfQkVGT1JFID0gNAoKICAgIF9sZWdhbF9hY3Rpb25zID0gKEFDVElPTl9SRVBMQUNFLCBBQ1RJT05fQVBQRU5EX0FTX0NISUxEUkVOLAogICAgICAgICAgICAgICAgICAgICAgQUNUSU9OX0lOU0VSVF9BRlRFUiwgQUNUSU9OX0lOU0VSVF9CRUZPUkUpCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX29wdGlvbnMgPSBPcHRpb25zKCkKCiAgICBkZWYgX2dldF9lbnRpdHlSZXNvbHZlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5lbnRpdHlSZXNvbHZlcgogICAgZGVmIF9zZXRfZW50aXR5UmVzb2x2ZXIoc2VsZiwgZW50aXR5UmVzb2x2ZXIpOgogICAgICAgIHNlbGYuZW50aXR5UmVzb2x2ZXIgPSBlbnRpdHlSZXNvbHZlcgoKICAgIGRlZiBfZ2V0X2Vycm9ySGFuZGxlcihzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5lcnJvckhhbmRsZXIKICAgIGRlZiBfc2V0X2Vycm9ySGFuZGxlcihzZWxmLCBlcnJvckhhbmRsZXIpOgogICAgICAgIHNlbGYuZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCgogICAgZGVmIF9nZXRfZmlsdGVyKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmZpbHRlcgogICAgZGVmIF9zZXRfZmlsdGVyKHNlbGYsIGZpbHRlcik6CiAgICAgICAgc2VsZi5maWx0ZXIgPSBmaWx0ZXIKCiAgICBkZWYgc2V0RmVhdHVyZShzZWxmLCBuYW1lLCBzdGF0ZSk6CiAgICAgICAgaWYgc2VsZi5zdXBwb3J0c0ZlYXR1cmUobmFtZSk6CiAgICAgICAgICAgIHN0YXRlID0gc3RhdGUgYW5kIDEgb3IgMAogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZXR0aW5ncyA9IHNlbGYuX3NldHRpbmdzWyhfbmFtZV94Zm9ybShuYW1lKSwgc3RhdGUpXQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigKICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZmVhdHVyZTogJXIiICUgKG5hbWUsKSkgZnJvbSBOb25lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2V0dGluZ3M6CiAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLl9vcHRpb25zLCBuYW1lLCB2YWx1ZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCJ1bmtub3duIGZlYXR1cmU6ICIgKyByZXByKG5hbWUpKQoKICAgIGRlZiBzdXBwb3J0c0ZlYXR1cmUoc2VsZiwgbmFtZSk6CiAgICAgICAgcmV0dXJuIGhhc2F0dHIoc2VsZi5fb3B0aW9ucywgX25hbWVfeGZvcm0obmFtZSkpCgogICAgZGVmIGNhblNldEZlYXR1cmUoc2VsZiwgbmFtZSwgc3RhdGUpOgogICAgICAgIGtleSA9IChfbmFtZV94Zm9ybShuYW1lKSwgc3RhdGUgYW5kIDEgb3IgMCkKICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuX3NldHRpbmdzCgogICAgIyBUaGlzIGRpY3Rpb25hcnkgbWFwcyBmcm9tIChmZWF0dXJlLHZhbHVlKSB0byBhIGxpc3Qgb2YKICAgICMgKG9wdGlvbix2YWx1ZSkgcGFpcnMgdGhhdCBzaG91bGQgYmUgc2V0IG9uIHRoZSBPcHRpb25zIG9iamVjdC4KICAgICMgSWYgYSAoZmVhdHVyZSx2YWx1ZSkgc2V0dGluZyBpcyBub3QgaW4gdGhpcyBkaWN0aW9uYXJ5LCBpdCBpcwogICAgIyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBET01CdWlsZGVyLgogICAgIwogICAgX3NldHRpbmdzID0gewogICAgICAgICgibmFtZXNwYWNlX2RlY2xhcmF0aW9ucyIsIDApOiBbCiAgICAgICAgICAgICgibmFtZXNwYWNlX2RlY2xhcmF0aW9ucyIsIDApXSwKICAgICAgICAoIm5hbWVzcGFjZV9kZWNsYXJhdGlvbnMiLCAxKTogWwogICAgICAgICAgICAoIm5hbWVzcGFjZV9kZWNsYXJhdGlvbnMiLCAxKV0sCiAgICAgICAgKCJ2YWxpZGF0aW9uIiwgMCk6IFsKICAgICAgICAgICAgKCJ2YWxpZGF0aW9uIiwgMCldLAogICAgICAgICgiZXh0ZXJuYWxfZ2VuZXJhbF9lbnRpdGllcyIsIDApOiBbCiAgICAgICAgICAgICgiZXh0ZXJuYWxfZ2VuZXJhbF9lbnRpdGllcyIsIDApXSwKICAgICAgICAoImV4dGVybmFsX2dlbmVyYWxfZW50aXRpZXMiLCAxKTogWwogICAgICAgICAgICAoImV4dGVybmFsX2dlbmVyYWxfZW50aXRpZXMiLCAxKV0sCiAgICAgICAgKCJleHRlcm5hbF9wYXJhbWV0ZXJfZW50aXRpZXMiLCAwKTogWwogICAgICAgICAgICAoImV4dGVybmFsX3BhcmFtZXRlcl9lbnRpdGllcyIsIDApXSwKICAgICAgICAoImV4dGVybmFsX3BhcmFtZXRlcl9lbnRpdGllcyIsIDEpOiBbCiAgICAgICAgICAgICgiZXh0ZXJuYWxfcGFyYW1ldGVyX2VudGl0aWVzIiwgMSldLAogICAgICAgICgidmFsaWRhdGVfaWZfc2NoZW1hIiwgMCk6IFsKICAgICAgICAgICAgKCJ2YWxpZGF0ZV9pZl9zY2hlbWEiLCAwKV0sCiAgICAgICAgKCJjcmVhdGVfZW50aXR5X3JlZl9ub2RlcyIsIDApOiBbCiAgICAgICAgICAgICgiY3JlYXRlX2VudGl0eV9yZWZfbm9kZXMiLCAwKV0sCiAgICAgICAgKCJjcmVhdGVfZW50aXR5X3JlZl9ub2RlcyIsIDEpOiBbCiAgICAgICAgICAgICgiY3JlYXRlX2VudGl0eV9yZWZfbm9kZXMiLCAxKV0sCiAgICAgICAgKCJlbnRpdGllcyIsIDApOiBbCiAgICAgICAgICAgICgiY3JlYXRlX2VudGl0eV9yZWZfbm9kZXMiLCAwKSwKICAgICAgICAgICAgKCJlbnRpdGllcyIsIDApXSwKICAgICAgICAoImVudGl0aWVzIiwgMSk6IFsKICAgICAgICAgICAgKCJlbnRpdGllcyIsIDEpXSwKICAgICAgICAoIndoaXRlc3BhY2VfaW5fZWxlbWVudF9jb250ZW50IiwgMCk6IFsKICAgICAgICAgICAgKCJ3aGl0ZXNwYWNlX2luX2VsZW1lbnRfY29udGVudCIsIDApXSwKICAgICAgICAoIndoaXRlc3BhY2VfaW5fZWxlbWVudF9jb250ZW50IiwgMSk6IFsKICAgICAgICAgICAgKCJ3aGl0ZXNwYWNlX2luX2VsZW1lbnRfY29udGVudCIsIDEpXSwKICAgICAgICAoImNkYXRhX3NlY3Rpb25zIiwgMCk6IFsKICAgICAgICAgICAgKCJjZGF0YV9zZWN0aW9ucyIsIDApXSwKICAgICAgICAoImNkYXRhX3NlY3Rpb25zIiwgMSk6IFsKICAgICAgICAgICAgKCJjZGF0YV9zZWN0aW9ucyIsIDEpXSwKICAgICAgICAoImNvbW1lbnRzIiwgMCk6IFsKICAgICAgICAgICAgKCJjb21tZW50cyIsIDApXSwKICAgICAgICAoImNvbW1lbnRzIiwgMSk6IFsKICAgICAgICAgICAgKCJjb21tZW50cyIsIDEpXSwKICAgICAgICAoImNoYXJzZXRfb3ZlcnJpZGVzX3htbF9lbmNvZGluZyIsIDApOiBbCiAgICAgICAgICAgICgiY2hhcnNldF9vdmVycmlkZXNfeG1sX2VuY29kaW5nIiwgMCldLAogICAgICAgICgiY2hhcnNldF9vdmVycmlkZXNfeG1sX2VuY29kaW5nIiwgMSk6IFsKICAgICAgICAgICAgKCJjaGFyc2V0X292ZXJyaWRlc194bWxfZW5jb2RpbmciLCAxKV0sCiAgICAgICAgKCJpbmZvc2V0IiwgMCk6IFtdLAogICAgICAgICgiaW5mb3NldCIsIDEpOiBbCiAgICAgICAgICAgICgibmFtZXNwYWNlX2RlY2xhcmF0aW9ucyIsIDApLAogICAgICAgICAgICAoInZhbGlkYXRlX2lmX3NjaGVtYSIsIDApLAogICAgICAgICAgICAoImNyZWF0ZV9lbnRpdHlfcmVmX25vZGVzIiwgMCksCiAgICAgICAgICAgICgiZW50aXRpZXMiLCAwKSwKICAgICAgICAgICAgKCJjZGF0YV9zZWN0aW9ucyIsIDApLAogICAgICAgICAgICAoImRhdGF0eXBlX25vcm1hbGl6YXRpb24iLCAxKSwKICAgICAgICAgICAgKCJ3aGl0ZXNwYWNlX2luX2VsZW1lbnRfY29udGVudCIsIDEpLAogICAgICAgICAgICAoImNvbW1lbnRzIiwgMSksCiAgICAgICAgICAgICgiY2hhcnNldF9vdmVycmlkZXNfeG1sX2VuY29kaW5nIiwgMSldLAogICAgICAgICgic3VwcG9ydGVkX21lZGlhdHlwZXNfb25seSIsIDApOiBbCiAgICAgICAgICAgICgic3VwcG9ydGVkX21lZGlhdHlwZXNfb25seSIsIDApXSwKICAgICAgICAoIm5hbWVzcGFjZXMiLCAwKTogWwogICAgICAgICAgICAoIm5hbWVzcGFjZXMiLCAwKV0sCiAgICAgICAgKCJuYW1lc3BhY2VzIiwgMSk6IFsKICAgICAgICAgICAgKCJuYW1lc3BhY2VzIiwgMSldLAogICAgfQoKICAgIGRlZiBnZXRGZWF0dXJlKHNlbGYsIG5hbWUpOgogICAgICAgIHhuYW1lID0gX25hbWVfeGZvcm0obmFtZSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsIHhuYW1lKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgaWYgbmFtZSA9PSAiaW5mb3NldCI6CiAgICAgICAgICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwogICAgICAgICAgICAgICAgcmV0dXJuIChvcHRpb25zLmRhdGF0eXBlX25vcm1hbGl6YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9wdGlvbnMud2hpdGVzcGFjZV9pbl9lbGVtZW50X2NvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9wdGlvbnMuY29tbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9wdGlvbnMuY2hhcnNldF9vdmVycmlkZXNfeG1sX2VuY29kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgKG9wdGlvbnMubmFtZXNwYWNlX2RlY2xhcmF0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBvcHRpb25zLnZhbGlkYXRlX2lmX3NjaGVtYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBvcHRpb25zLmNyZWF0ZV9lbnRpdHlfcmVmX25vZGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG9wdGlvbnMuZW50aXRpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igb3B0aW9ucy5jZGF0YV9zZWN0aW9ucykpCiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoImZlYXR1cmUgJXMgbm90IGtub3duIiAlIHJlcHIobmFtZSkpCgogICAgZGVmIHBhcnNlVVJJKHNlbGYsIHVyaSk6CiAgICAgICAgaWYgc2VsZi5lbnRpdHlSZXNvbHZlcjoKICAgICAgICAgICAgaW5wdXQgPSBzZWxmLmVudGl0eVJlc29sdmVyLnJlc29sdmVFbnRpdHkoTm9uZSwgdXJpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlucHV0ID0gRE9NRW50aXR5UmVzb2x2ZXIoKS5yZXNvbHZlRW50aXR5KE5vbmUsIHVyaSkKICAgICAgICByZXR1cm4gc2VsZi5wYXJzZShpbnB1dCkKCiAgICBkZWYgcGFyc2Uoc2VsZiwgaW5wdXQpOgogICAgICAgIG9wdGlvbnMgPSBjb3B5LmNvcHkoc2VsZi5fb3B0aW9ucykKICAgICAgICBvcHRpb25zLmZpbHRlciA9IHNlbGYuZmlsdGVyCiAgICAgICAgb3B0aW9ucy5lcnJvckhhbmRsZXIgPSBzZWxmLmVycm9ySGFuZGxlcgogICAgICAgIGZwID0gaW5wdXQuYnl0ZVN0cmVhbQogICAgICAgIGlmIGZwIGlzIE5vbmUgYW5kIG9wdGlvbnMuc3lzdGVtSWQ6CiAgICAgICAgICAgIGltcG9ydCB1cmxsaWIucmVxdWVzdAogICAgICAgICAgICBmcCA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oaW5wdXQuc3lzdGVtSWQpCiAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX2J5dGVzdHJlYW0oZnAsIG9wdGlvbnMpCgogICAgZGVmIHBhcnNlV2l0aENvbnRleHQoc2VsZiwgaW5wdXQsIGNub2RlLCBhY3Rpb24pOgogICAgICAgIGlmIGFjdGlvbiBub3QgaW4gc2VsZi5fbGVnYWxfYWN0aW9uczoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm90IGEgbGVnYWwgYWN0aW9uIikKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJIYXZlbid0IHdyaXR0ZW4gdGhpcyB5ZXQuLi4iKQoKICAgIGRlZiBfcGFyc2VfYnl0ZXN0cmVhbShzZWxmLCBzdHJlYW0sIG9wdGlvbnMpOgogICAgICAgIGltcG9ydCB4bWwuZG9tLmV4cGF0YnVpbGRlcgogICAgICAgIGJ1aWxkZXIgPSB4bWwuZG9tLmV4cGF0YnVpbGRlci5tYWtlQnVpbGRlcihvcHRpb25zKQogICAgICAgIHJldHVybiBidWlsZGVyLnBhcnNlRmlsZShzdHJlYW0pCgoKZGVmIF9uYW1lX3hmb3JtKG5hbWUpOgogICAgcmV0dXJuIG5hbWUubG93ZXIoKS5yZXBsYWNlKCctJywgJ18nKQoKCmNsYXNzIERPTUVudGl0eVJlc29sdmVyKG9iamVjdCk6CiAgICBfX3Nsb3RzX18gPSAnX29wZW5lcicsCgogICAgZGVmIHJlc29sdmVFbnRpdHkoc2VsZiwgcHVibGljSWQsIHN5c3RlbUlkKToKICAgICAgICBhc3NlcnQgc3lzdGVtSWQgaXMgbm90IE5vbmUKICAgICAgICBzb3VyY2UgPSBET01JbnB1dFNvdXJjZSgpCiAgICAgICAgc291cmNlLnB1YmxpY0lkID0gcHVibGljSWQKICAgICAgICBzb3VyY2Uuc3lzdGVtSWQgPSBzeXN0ZW1JZAogICAgICAgIHNvdXJjZS5ieXRlU3RyZWFtID0gc2VsZi5fZ2V0X29wZW5lcigpLm9wZW4oc3lzdGVtSWQpCgogICAgICAgICMgZGV0ZXJtaW5lIHRoZSBlbmNvZGluZyBpZiB0aGUgdHJhbnNwb3J0IHByb3ZpZGVkIGl0CiAgICAgICAgc291cmNlLmVuY29kaW5nID0gc2VsZi5fZ3Vlc3NfbWVkaWFfZW5jb2Rpbmcoc291cmNlKQoKICAgICAgICAjIGRldGVybWluZSB0aGUgYmFzZSBVUkkgaXMgd2UgY2FuCiAgICAgICAgaW1wb3J0IHBvc2l4cGF0aCwgdXJsbGliLnBhcnNlCiAgICAgICAgcGFydHMgPSB1cmxsaWIucGFyc2UudXJscGFyc2Uoc3lzdGVtSWQpCiAgICAgICAgc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywgcXVlcnksIGZyYWdtZW50ID0gcGFydHMKICAgICAgICAjIFhYWCBzaG91bGQgd2UgY2hlY2sgdGhlIHNjaGVtZSBoZXJlIGFzIHdlbGw/CiAgICAgICAgaWYgcGF0aCBhbmQgbm90IHBhdGguZW5kc3dpdGgoIi8iKToKICAgICAgICAgICAgcGF0aCA9IHBvc2l4cGF0aC5kaXJuYW1lKHBhdGgpICsgIi8iCiAgICAgICAgICAgIHBhcnRzID0gc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywgcXVlcnksIGZyYWdtZW50CiAgICAgICAgICAgIHNvdXJjZS5iYXNlVVJJID0gdXJsbGliLnBhcnNlLnVybHVucGFyc2UocGFydHMpCgogICAgICAgIHJldHVybiBzb3VyY2UKCiAgICBkZWYgX2dldF9vcGVuZXIoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gc2VsZi5fb3BlbmVyCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICBzZWxmLl9vcGVuZXIgPSBzZWxmLl9jcmVhdGVfb3BlbmVyKCkKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29wZW5lcgoKICAgIGRlZiBfY3JlYXRlX29wZW5lcihzZWxmKToKICAgICAgICBpbXBvcnQgdXJsbGliLnJlcXVlc3QKICAgICAgICByZXR1cm4gdXJsbGliLnJlcXVlc3QuYnVpbGRfb3BlbmVyKCkKCiAgICBkZWYgX2d1ZXNzX21lZGlhX2VuY29kaW5nKHNlbGYsIHNvdXJjZSk6CiAgICAgICAgaW5mbyA9IHNvdXJjZS5ieXRlU3RyZWFtLmluZm8oKQogICAgICAgIGlmICJDb250ZW50LVR5cGUiIGluIGluZm86CiAgICAgICAgICAgIGZvciBwYXJhbSBpbiBpbmZvLmdldHBsaXN0KCk6CiAgICAgICAgICAgICAgICBpZiBwYXJhbS5zdGFydHN3aXRoKCJjaGFyc2V0PSIpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbS5zcGxpdCgiPSIsIDEpWzFdLmxvd2VyKCkKCgpjbGFzcyBET01JbnB1dFNvdXJjZShvYmplY3QpOgogICAgX19zbG90c19fID0gKCdieXRlU3RyZWFtJywgJ2NoYXJhY3RlclN0cmVhbScsICdzdHJpbmdEYXRhJywKICAgICAgICAgICAgICAgICAnZW5jb2RpbmcnLCAncHVibGljSWQnLCAnc3lzdGVtSWQnLCAnYmFzZVVSSScpCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuYnl0ZVN0cmVhbSA9IE5vbmUKICAgICAgICBzZWxmLmNoYXJhY3RlclN0cmVhbSA9IE5vbmUKICAgICAgICBzZWxmLnN0cmluZ0RhdGEgPSBOb25lCiAgICAgICAgc2VsZi5lbmNvZGluZyA9IE5vbmUKICAgICAgICBzZWxmLnB1YmxpY0lkID0gTm9uZQogICAgICAgIHNlbGYuc3lzdGVtSWQgPSBOb25lCiAgICAgICAgc2VsZi5iYXNlVVJJID0gTm9uZQoKICAgIGRlZiBfZ2V0X2J5dGVTdHJlYW0oc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuYnl0ZVN0cmVhbQogICAgZGVmIF9zZXRfYnl0ZVN0cmVhbShzZWxmLCBieXRlU3RyZWFtKToKICAgICAgICBzZWxmLmJ5dGVTdHJlYW0gPSBieXRlU3RyZWFtCgogICAgZGVmIF9nZXRfY2hhcmFjdGVyU3RyZWFtKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmNoYXJhY3RlclN0cmVhbQogICAgZGVmIF9zZXRfY2hhcmFjdGVyU3RyZWFtKHNlbGYsIGNoYXJhY3RlclN0cmVhbSk6CiAgICAgICAgc2VsZi5jaGFyYWN0ZXJTdHJlYW0gPSBjaGFyYWN0ZXJTdHJlYW0KCiAgICBkZWYgX2dldF9zdHJpbmdEYXRhKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnN0cmluZ0RhdGEKICAgIGRlZiBfc2V0X3N0cmluZ0RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5zdHJpbmdEYXRhID0gZGF0YQoKICAgIGRlZiBfZ2V0X2VuY29kaW5nKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmVuY29kaW5nCiAgICBkZWYgX3NldF9lbmNvZGluZyhzZWxmLCBlbmNvZGluZyk6CiAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCgogICAgZGVmIF9nZXRfcHVibGljSWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYucHVibGljSWQKICAgIGRlZiBfc2V0X3B1YmxpY0lkKHNlbGYsIHB1YmxpY0lkKToKICAgICAgICBzZWxmLnB1YmxpY0lkID0gcHVibGljSWQKCiAgICBkZWYgX2dldF9zeXN0ZW1JZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5zeXN0ZW1JZAogICAgZGVmIF9zZXRfc3lzdGVtSWQoc2VsZiwgc3lzdGVtSWQpOgogICAgICAgIHNlbGYuc3lzdGVtSWQgPSBzeXN0ZW1JZAoKICAgIGRlZiBfZ2V0X2Jhc2VVUkkoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuYmFzZVVSSQogICAgZGVmIF9zZXRfYmFzZVVSSShzZWxmLCB1cmkpOgogICAgICAgIHNlbGYuYmFzZVVSSSA9IHVyaQoKCmNsYXNzIERPTUJ1aWxkZXJGaWx0ZXI6CiAgICAiIiJFbGVtZW50IGZpbHRlciB3aGljaCBjYW4gYmUgdXNlZCB0byB0YWlsb3IgY29uc3RydWN0aW9uIG9mCiAgICBhIERPTSBpbnN0YW5jZS4KICAgICIiIgoKICAgICMgVGhlcmUncyByZWFsbHkgbm8gbmVlZCBmb3IgdGhpcyBjbGFzczsgY29uY3JldGUgaW1wbGVtZW50YXRpb25zCiAgICAjIHNob3VsZCBqdXN0IGltcGxlbWVudCB0aGUgZW5kRWxlbWVudCgpIGFuZCBzdGFydEVsZW1lbnQoKQogICAgIyBtZXRob2RzIGFzIGFwcHJvcHJpYXRlLiAgVXNpbmcgdGhpcyBtYWtlcyBpdCBlYXN5IHRvIG9ubHkKICAgICMgaW1wbGVtZW50IG9uZSBvZiB0aGVtLgoKICAgIEZJTFRFUl9BQ0NFUFQgPSAxCiAgICBGSUxURVJfUkVKRUNUID0gMgogICAgRklMVEVSX1NLSVAgPSAzCiAgICBGSUxURVJfSU5URVJSVVBUID0gNAoKICAgIHdoYXRUb1Nob3cgPSBOb2RlRmlsdGVyLlNIT1dfQUxMCgogICAgZGVmIF9nZXRfd2hhdFRvU2hvdyhzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi53aGF0VG9TaG93CgogICAgZGVmIGFjY2VwdE5vZGUoc2VsZiwgZWxlbWVudCk6CiAgICAgICAgcmV0dXJuIHNlbGYuRklMVEVSX0FDQ0VQVAoKICAgIGRlZiBzdGFydENvbnRhaW5lcihzZWxmLCBlbGVtZW50KToKICAgICAgICByZXR1cm4gc2VsZi5GSUxURVJfQUNDRVBUCgpkZWwgTm9kZUZpbHRlcgoKCmNsYXNzIERvY3VtZW50TFM6CiAgICAiIiJNaXhpbiB0byBjcmVhdGUgZG9jdW1lbnRzIHRoYXQgY29uZm9ybSB0byB0aGUgbG9hZC9zYXZlIHNwZWMuIiIiCgogICAgYXN5bmNfID0gRmFsc2UKCiAgICBkZWYgX2dldF9hc3luYyhzZWxmKToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBmbGFnKToKICAgICAgICBpZiBmbGFnOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigKICAgICAgICAgICAgICAgICJhc3luY2hyb25vdXMgZG9jdW1lbnQgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIikKCiAgICBkZWYgYWJvcnQoc2VsZik6CiAgICAgICAgIyBXaGF0IGRvZXMgaXQgbWVhbiB0byAiY2xlYXIiIGEgZG9jdW1lbnQ/ICBEb2VzIHRoZQogICAgICAgICMgZG9jdW1lbnRFbGVtZW50IGRpc2FwcGVhcj8KICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAogICAgICAgICAgICAiaGF2ZW4ndCBmaWd1cmVkIG91dCB3aGF0IHRoaXMgbWVhbnMgeWV0IikKCiAgICBkZWYgbG9hZChzZWxmLCB1cmkpOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImhhdmVuJ3Qgd3JpdHRlbiB0aGlzIHlldCIpCgogICAgZGVmIGxvYWRYTUwoc2VsZiwgc291cmNlKToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJoYXZlbid0IHdyaXR0ZW4gdGhpcyB5ZXQiKQoKICAgIGRlZiBzYXZlWE1MKHNlbGYsIHNub2RlKToKICAgICAgICBpZiBzbm9kZSBpcyBOb25lOgogICAgICAgICAgICBzbm9kZSA9IHNlbGYKICAgICAgICBlbGlmIHNub2RlLm93bmVyRG9jdW1lbnQgaXMgbm90IHNlbGY6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uV3JvbmdEb2N1bWVudEVycigpCiAgICAgICAgcmV0dXJuIHNub2RlLnRveG1sKCkKCgpjbGFzcyBET01JbXBsZW1lbnRhdGlvbkxTOgogICAgTU9ERV9TWU5DSFJPTk9VUyA9IDEKICAgIE1PREVfQVNZTkNIUk9OT1VTID0gMgoKICAgIGRlZiBjcmVhdGVET01CdWlsZGVyKHNlbGYsIG1vZGUsIHNjaGVtYVR5cGUpOgogICAgICAgIGlmIHNjaGVtYVR5cGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90U3VwcG9ydGVkRXJyKAogICAgICAgICAgICAgICAgInNjaGVtYVR5cGUgbm90IHlldCBzdXBwb3J0ZWQiKQogICAgICAgIGlmIG1vZGUgPT0gc2VsZi5NT0RFX1NZTkNIUk9OT1VTOgogICAgICAgICAgICByZXR1cm4gRE9NQnVpbGRlcigpCiAgICAgICAgaWYgbW9kZSA9PSBzZWxmLk1PREVfQVNZTkNIUk9OT1VTOgogICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigKICAgICAgICAgICAgICAgICJhc3luY2hyb25vdXMgYnVpbGRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQiKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24gdmFsdWUgZm9yIG1vZGUiKQoKICAgIGRlZiBjcmVhdGVET01Xcml0ZXIoc2VsZik6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKICAgICAgICAgICAgInRoZSB3cml0ZXIgaW50ZXJmYWNlIGhhc24ndCBiZWVuIHdyaXR0ZW4geWV0ISIpCgogICAgZGVmIGNyZWF0ZURPTUlucHV0U291cmNlKHNlbGYpOgogICAgICAgIHJldHVybiBET01JbnB1dFNvdXJjZSgpClBLAwQUAAAAAAADIKNWq6zQ+OIaAADiGgAAGwAAAHhtbC9ldHJlZS9FbGVtZW50SW5jbHVkZS5weSMKIyBFbGVtZW50VHJlZQojICRJZDogRWxlbWVudEluY2x1ZGUucHkgMzM3NSAyMDA4LTAyLTEzIDA4OjA1OjA4WiBmcmVkcmlrICQKIwojIGxpbWl0ZWQgeGluY2x1ZGUgc3VwcG9ydCBmb3IgZWxlbWVudCB0cmVlcwojCiMgaGlzdG9yeToKIyAyMDAzLTA4LTE1IGZsICAgY3JlYXRlZAojIDIwMDMtMTEtMTQgZmwgICBmaXhlZCBkZWZhdWx0IGxvYWRlcgojCiMgQ29weXJpZ2h0IChjKSAyMDAzLTIwMDQgYnkgRnJlZHJpayBMdW5kaC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBmcmVkcmlrQHB5dGhvbndhcmUuY29tCiMgaHR0cDovL3d3dy5weXRob253YXJlLmNvbQojCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGUgRWxlbWVudFRyZWUgdG9vbGtpdCBpcwojCiMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDggYnkgRnJlZHJpayBMdW5kaAojCiMgQnkgb2J0YWluaW5nLCB1c2luZywgYW5kL29yIGNvcHlpbmcgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgaXRzCiMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLCB5b3UgYWdyZWUgdGhhdCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLAojIGFuZCB3aWxsIGNvbXBseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnM6CiMKIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAojIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcwojIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4KIyBhbGwgY29waWVzLCBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCiMgbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mCiMgU2VjcmV0IExhYnMgQUIgb3IgdGhlIGF1dGhvciBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkKIyBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbgojIHByaW9yIHBlcm1pc3Npb24uCiMKIyBTRUNSRVQgTEFCUyBBQiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQKIyBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVC0KIyBBQklMSVRZIEFORCBGSVRORVNTLiAgSU4gTk8gRVZFTlQgU0hBTEwgU0VDUkVUIExBQlMgQUIgT1IgVEhFIEFVVEhPUgojIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkKIyBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywKIyBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUwojIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UKIyBPRiBUSElTIFNPRlRXQVJFLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KIyBTZWUgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9wc2YvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuCgojIwojIExpbWl0ZWQgWEluY2x1ZGUgc3VwcG9ydCBmb3IgdGhlIEVsZW1lbnRUcmVlIHBhY2thZ2UuCiMjCgppbXBvcnQgY29weQpmcm9tIC4gaW1wb3J0IEVsZW1lbnRUcmVlCmZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCgpYSU5DTFVERSA9ICJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZX0iCgpYSU5DTFVERV9JTkNMVURFID0gWElOQ0xVREUgKyAiaW5jbHVkZSIKWElOQ0xVREVfRkFMTEJBQ0sgPSBYSU5DTFVERSArICJmYWxsYmFjayIKCiMgRm9yIHNlY3VyaXR5IHJlYXNvbnMsIHRoZSBpbmNsdXNpb24gZGVwdGggaXMgbGltaXRlZCB0byB0aGlzIHJlYWQtb25seSB2YWx1ZSBieSBkZWZhdWx0LgpERUZBVUxUX01BWF9JTkNMVVNJT05fREVQVEggPSA2CgoKIyMKIyBGYXRhbCBpbmNsdWRlIGVycm9yLgoKY2xhc3MgRmF0YWxJbmNsdWRlRXJyb3IoU3ludGF4RXJyb3IpOgogICAgcGFzcwoKCmNsYXNzIExpbWl0ZWRSZWN1cnNpdmVJbmNsdWRlRXJyb3IoRmF0YWxJbmNsdWRlRXJyb3IpOgogICAgcGFzcwoKCiMjCiMgRGVmYXVsdCBsb2FkZXIuICBUaGlzIGxvYWRlciByZWFkcyBhbiBpbmNsdWRlZCByZXNvdXJjZSBmcm9tIGRpc2suCiMKIyBAcGFyYW0gaHJlZiBSZXNvdXJjZSByZWZlcmVuY2UuCiMgQHBhcmFtIHBhcnNlIFBhcnNlIG1vZGUuICBFaXRoZXIgInhtbCIgb3IgInRleHQiLgojIEBwYXJhbSBlbmNvZGluZyBPcHRpb25hbCB0ZXh0IGVuY29kaW5nIChVVEYtOCBieSBkZWZhdWx0IGZvciAidGV4dCIpLgojIEByZXR1cm4gVGhlIGV4cGFuZGVkIHJlc291cmNlLiAgSWYgdGhlIHBhcnNlIG1vZGUgaXMgInhtbCIsIHRoaXMKIyAgICBpcyBhbiBFbGVtZW50VHJlZSBpbnN0YW5jZS4gIElmIHRoZSBwYXJzZSBtb2RlIGlzICJ0ZXh0IiwgdGhpcwojICAgIGlzIGEgVW5pY29kZSBzdHJpbmcuICBJZiB0aGUgbG9hZGVyIGZhaWxzLCBpdCBjYW4gcmV0dXJuIE5vbmUKIyAgICBvciByYWlzZSBhbiBPU0Vycm9yIGV4Y2VwdGlvbi4KIyBAdGhyb3dzIE9TRXJyb3IgSWYgdGhlIGxvYWRlciBmYWlscyB0byBsb2FkIHRoZSByZXNvdXJjZS4KCmRlZiBkZWZhdWx0X2xvYWRlcihocmVmLCBwYXJzZSwgZW5jb2Rpbmc9Tm9uZSk6CiAgICBpZiBwYXJzZSA9PSAieG1sIjoKICAgICAgICB3aXRoIG9wZW4oaHJlZiwgJ3JiJykgYXMgZmlsZToKICAgICAgICAgICAgZGF0YSA9IEVsZW1lbnRUcmVlLnBhcnNlKGZpbGUpLmdldHJvb3QoKQogICAgZWxzZToKICAgICAgICBpZiBub3QgZW5jb2Rpbmc6CiAgICAgICAgICAgIGVuY29kaW5nID0gJ1VURi04JwogICAgICAgIHdpdGggb3BlbihocmVmLCAncicsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgogICAgICAgICAgICBkYXRhID0gZmlsZS5yZWFkKCkKICAgIHJldHVybiBkYXRhCgojIwojIEV4cGFuZCBYSW5jbHVkZSBkaXJlY3RpdmVzLgojCiMgQHBhcmFtIGVsZW0gUm9vdCBlbGVtZW50LgojIEBwYXJhbSBsb2FkZXIgT3B0aW9uYWwgcmVzb3VyY2UgbG9hZGVyLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMKIyAgICAgdG8ge0BsaW5rIGRlZmF1bHRfbG9hZGVyfS4gIElmIGdpdmVuLCBpdCBzaG91bGQgYmUgYSBjYWxsYWJsZQojICAgICB0aGF0IGltcGxlbWVudHMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIDxiPmRlZmF1bHRfbG9hZGVyPC9iPi4KIyBAcGFyYW0gYmFzZV91cmwgVGhlIGJhc2UgVVJMIG9mIHRoZSBvcmlnaW5hbCBmaWxlLCB0byByZXNvbHZlCiMgICAgIHJlbGF0aXZlIGluY2x1ZGUgZmlsZSByZWZlcmVuY2VzLgojIEBwYXJhbSBtYXhfZGVwdGggVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlY3Vyc2l2ZSBpbmNsdXNpb25zLgojICAgICBMaW1pdGVkIHRvIHJlZHVjZSB0aGUgcmlzayBvZiBtYWxpY2lvdXMgY29udGVudCBleHBsb3Npb24uCiMgICAgIFBhc3MgYSBuZWdhdGl2ZSB2YWx1ZSB0byBkaXNhYmxlIHRoZSBsaW1pdGF0aW9uLgojIEB0aHJvd3MgTGltaXRlZFJlY3Vyc2l2ZUluY2x1ZGVFcnJvciBJZiB0aGUge0BsaW5rIG1heF9kZXB0aH0gd2FzIGV4Y2VlZGVkLgojIEB0aHJvd3MgRmF0YWxJbmNsdWRlRXJyb3IgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzIHRvIGluY2x1ZGUgYSBnaXZlbgojICAgICByZXNvdXJjZSwgb3IgaWYgdGhlIHRyZWUgY29udGFpbnMgbWFsZm9ybWVkIFhJbmNsdWRlIGVsZW1lbnRzLgojIEB0aHJvd3MgSU9FcnJvciBJZiB0aGUgZnVuY3Rpb24gZmFpbHMgdG8gbG9hZCBhIGdpdmVuIHJlc291cmNlLgojIEByZXR1cm5zIHRoZSBub2RlIG9yIGl0cyByZXBsYWNlbWVudCBpZiBpdCB3YXMgYW4gWEluY2x1ZGUgbm9kZQoKZGVmIGluY2x1ZGUoZWxlbSwgbG9hZGVyPU5vbmUsIGJhc2VfdXJsPU5vbmUsCiAgICAgICAgICAgIG1heF9kZXB0aD1ERUZBVUxUX01BWF9JTkNMVVNJT05fREVQVEgpOgogICAgaWYgbWF4X2RlcHRoIGlzIE5vbmU6CiAgICAgICAgbWF4X2RlcHRoID0gLTEKICAgIGVsaWYgbWF4X2RlcHRoIDwgMDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJleHBlY3RlZCBub24tbmVnYXRpdmUgZGVwdGggb3IgTm9uZSBmb3IgJ21heF9kZXB0aCcsIGdvdCAlciIgJSBtYXhfZGVwdGgpCgogICAgaWYgaGFzYXR0cihlbGVtLCAnZ2V0cm9vdCcpOgogICAgICAgIGVsZW0gPSBlbGVtLmdldHJvb3QoKQogICAgaWYgbG9hZGVyIGlzIE5vbmU6CiAgICAgICAgbG9hZGVyID0gZGVmYXVsdF9sb2FkZXIKCiAgICBfaW5jbHVkZShlbGVtLCBsb2FkZXIsIGJhc2VfdXJsLCBtYXhfZGVwdGgsIHNldCgpKQoKCmRlZiBfaW5jbHVkZShlbGVtLCBsb2FkZXIsIGJhc2VfdXJsLCBtYXhfZGVwdGgsIF9wYXJlbnRfaHJlZnMpOgogICAgIyBsb29rIGZvciB4aW5jbHVkZSBlbGVtZW50cwogICAgaSA9IDAKICAgIHdoaWxlIGkgPCBsZW4oZWxlbSk6CiAgICAgICAgZSA9IGVsZW1baV0KICAgICAgICBpZiBlLnRhZyA9PSBYSU5DTFVERV9JTkNMVURFOgogICAgICAgICAgICAjIHByb2Nlc3MgeGluY2x1ZGUgZGlyZWN0aXZlCiAgICAgICAgICAgIGhyZWYgPSBlLmdldCgiaHJlZiIpCiAgICAgICAgICAgIGlmIGJhc2VfdXJsOgogICAgICAgICAgICAgICAgaHJlZiA9IHVybGpvaW4oYmFzZV91cmwsIGhyZWYpCiAgICAgICAgICAgIHBhcnNlID0gZS5nZXQoInBhcnNlIiwgInhtbCIpCiAgICAgICAgICAgIGlmIHBhcnNlID09ICJ4bWwiOgogICAgICAgICAgICAgICAgaWYgaHJlZiBpbiBfcGFyZW50X2hyZWZzOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIEZhdGFsSW5jbHVkZUVycm9yKCJyZWN1cnNpdmUgaW5jbHVkZSBvZiAlcyIgJSBocmVmKQogICAgICAgICAgICAgICAgaWYgbWF4X2RlcHRoID09IDA6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGltaXRlZFJlY3Vyc2l2ZUluY2x1ZGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgIm1heGltdW0geGluY2x1ZGUgZGVwdGggcmVhY2hlZCB3aGVuIGluY2x1ZGluZyBmaWxlICVzIiAlIGhyZWYpCiAgICAgICAgICAgICAgICBfcGFyZW50X2hyZWZzLmFkZChocmVmKQogICAgICAgICAgICAgICAgbm9kZSA9IGxvYWRlcihocmVmLCBwYXJzZSkKICAgICAgICAgICAgICAgIGlmIG5vZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICByYWlzZSBGYXRhbEluY2x1ZGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBsb2FkICVyIGFzICVyIiAlIChocmVmLCBwYXJzZSkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgbm9kZSA9IGNvcHkuY29weShub2RlKSAgIyBGSVhNRTogdGhpcyBtYWtlcyBsaXR0bGUgc2Vuc2Ugd2l0aCByZWN1cnNpdmUgaW5jbHVkZXMKICAgICAgICAgICAgICAgIF9pbmNsdWRlKG5vZGUsIGxvYWRlciwgaHJlZiwgbWF4X2RlcHRoIC0gMSwgX3BhcmVudF9ocmVmcykKICAgICAgICAgICAgICAgIF9wYXJlbnRfaHJlZnMucmVtb3ZlKGhyZWYpCiAgICAgICAgICAgICAgICBpZiBlLnRhaWw6CiAgICAgICAgICAgICAgICAgICAgbm9kZS50YWlsID0gKG5vZGUudGFpbCBvciAiIikgKyBlLnRhaWwKICAgICAgICAgICAgICAgIGVsZW1baV0gPSBub2RlCiAgICAgICAgICAgIGVsaWYgcGFyc2UgPT0gInRleHQiOgogICAgICAgICAgICAgICAgdGV4dCA9IGxvYWRlcihocmVmLCBwYXJzZSwgZS5nZXQoImVuY29kaW5nIikpCiAgICAgICAgICAgICAgICBpZiB0ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgRmF0YWxJbmNsdWRlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgbG9hZCAlciBhcyAlciIgJSAoaHJlZiwgcGFyc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIGlmIGUudGFpbDoKICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IGUudGFpbAogICAgICAgICAgICAgICAgaWYgaToKICAgICAgICAgICAgICAgICAgICBub2RlID0gZWxlbVtpLTFdCiAgICAgICAgICAgICAgICAgICAgbm9kZS50YWlsID0gKG5vZGUudGFpbCBvciAiIikgKyB0ZXh0CiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGVsZW0udGV4dCA9IChlbGVtLnRleHQgb3IgIiIpICsgdGV4dAogICAgICAgICAgICAgICAgZGVsIGVsZW1baV0KICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBGYXRhbEluY2x1ZGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAidW5rbm93biBwYXJzZSB0eXBlIGluIHhpOmluY2x1ZGUgdGFnICglcikiICUgcGFyc2UKICAgICAgICAgICAgICAgICkKICAgICAgICBlbGlmIGUudGFnID09IFhJTkNMVURFX0ZBTExCQUNLOgogICAgICAgICAgICByYWlzZSBGYXRhbEluY2x1ZGVFcnJvcigKICAgICAgICAgICAgICAgICJ4aTpmYWxsYmFjayB0YWcgbXVzdCBiZSBjaGlsZCBvZiB4aTppbmNsdWRlICglcikiICUgZS50YWcKICAgICAgICAgICAgICAgICkKICAgICAgICBlbHNlOgogICAgICAgICAgICBfaW5jbHVkZShlLCBsb2FkZXIsIGJhc2VfdXJsLCBtYXhfZGVwdGgsIF9wYXJlbnRfaHJlZnMpCiAgICAgICAgaSArPSAxClBLAwQUAAAAAAADIKNWtx1xn602AACtNgAAGAAAAHhtbC9ldHJlZS9FbGVtZW50UGF0aC5weSMKIyBFbGVtZW50VHJlZQojICRJZDogRWxlbWVudFBhdGgucHkgMzM3NSAyMDA4LTAyLTEzIDA4OjA1OjA4WiBmcmVkcmlrICQKIwojIGxpbWl0ZWQgeHBhdGggc3VwcG9ydCBmb3IgZWxlbWVudCB0cmVlcwojCiMgaGlzdG9yeToKIyAyMDAzLTA1LTIzIGZsICAgY3JlYXRlZAojIDIwMDMtMDUtMjggZmwgICBhZGRlZCBzdXBwb3J0IGZvciAvLyBldGMKIyAyMDAzLTA4LTI3IGZsICAgZml4ZWQgcGFyc2luZyBvZiBwZXJpb2RzIGluIGVsZW1lbnQgbmFtZXMKIyAyMDA3LTA5LTEwIGZsICAgbmV3IHNlbGVjdGlvbiBlbmdpbmUKIyAyMDA3LTA5LTEyIGZsICAgZml4ZWQgcGFyZW50IHNlbGVjdG9yCiMgMjAwNy0wOS0xMyBmbCAgIGFkZGVkIGl0ZXJmaW5kOyBjaGFuZ2VkIGZpbmRhbGwgdG8gcmV0dXJuIGEgbGlzdAojIDIwMDctMTEtMzAgZmwgICBhZGRlZCBuYW1lc3BhY2VzIHN1cHBvcnQKIyAyMDA5LTEwLTMwIGZsICAgYWRkZWQgY2hpbGQgZWxlbWVudCB2YWx1ZSBmaWx0ZXIKIwojIENvcHlyaWdodCAoYykgMjAwMy0yMDA5IGJ5IEZyZWRyaWsgTHVuZGguICBBbGwgcmlnaHRzIHJlc2VydmVkLgojCiMgZnJlZHJpa0BweXRob253YXJlLmNvbQojIGh0dHA6Ly93d3cucHl0aG9ud2FyZS5jb20KIwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhlIEVsZW1lbnRUcmVlIHRvb2xraXQgaXMKIwojIENvcHlyaWdodCAoYykgMTk5OS0yMDA5IGJ5IEZyZWRyaWsgTHVuZGgKIwojIEJ5IG9idGFpbmluZywgdXNpbmcsIGFuZC9vciBjb3B5aW5nIHRoaXMgc29mdHdhcmUgYW5kL29yIGl0cwojIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiwgeW91IGFncmVlIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwKIyBhbmQgd2lsbCBjb21wbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zOgojCiMgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKIyBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMKIyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluCiMgYWxsIGNvcGllcywgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgojIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgojIFNlY3JldCBMYWJzIEFCIG9yIHRoZSBhdXRob3Igbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5CiMgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4KIyBwcmlvciBwZXJtaXNzaW9uLgojCiMgU0VDUkVUIExBQlMgQUIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJECiMgVE8gVEhJUyBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlQtCiMgQUJJTElUWSBBTkQgRklUTkVTUy4gIElOIE5PIEVWRU5UIFNIQUxMIFNFQ1JFVCBMQUJTIEFCIE9SIFRIRSBBVVRIT1IKIyBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZCiMgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsCiMgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMKIyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFCiMgT0YgVEhJUyBTT0ZUV0FSRS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiMgU2VlIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvcHNmL2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLgoKIyMKIyBJbXBsZW1lbnRhdGlvbiBtb2R1bGUgZm9yIFhQYXRoIHN1cHBvcnQuICBUaGVyZSdzIHVzdWFsbHkgbm8gcmVhc29uCiMgdG8gaW1wb3J0IHRoaXMgbW9kdWxlIGRpcmVjdGx5OyB0aGUgPGI+RWxlbWVudFRyZWU8L2I+IGRvZXMgdGhpcyBmb3IKIyB5b3UsIGlmIG5lZWRlZC4KIyMKCmltcG9ydCByZQoKeHBhdGhfdG9rZW5pemVyX3JlID0gcmUuY29tcGlsZSgKICAgIHIiKCIKICAgIHIiJ1teJ10qJ3xcIlteXCJdKlwifCIKICAgIHIiOjp8IgogICAgciIvLz98IgogICAgciJcLlwufCIKICAgIHIiXChcKXwiCiAgICByIiE9fCIKICAgIHIiWy8uKjpcW1xdXChcKUA9XSl8IgogICAgciIoKD86XHtbXn1dK1x9KT9bXi9cW1xdXChcKUAhPVxzXSspfCIKICAgIHIiXHMrIgogICAgKQoKZGVmIHhwYXRoX3Rva2VuaXplcihwYXR0ZXJuLCBuYW1lc3BhY2VzPU5vbmUpOgogICAgZGVmYXVsdF9uYW1lc3BhY2UgPSBuYW1lc3BhY2VzLmdldCgnJykgaWYgbmFtZXNwYWNlcyBlbHNlIE5vbmUKICAgIHBhcnNpbmdfYXR0cmlidXRlID0gRmFsc2UKICAgIGZvciB0b2tlbiBpbiB4cGF0aF90b2tlbml6ZXJfcmUuZmluZGFsbChwYXR0ZXJuKToKICAgICAgICB0dHlwZSwgdGFnID0gdG9rZW4KICAgICAgICBpZiB0YWcgYW5kIHRhZ1swXSAhPSAieyI6CiAgICAgICAgICAgIGlmICI6IiBpbiB0YWc6CiAgICAgICAgICAgICAgICBwcmVmaXgsIHVyaSA9IHRhZy5zcGxpdCgiOiIsIDEpCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWVzcGFjZXM6CiAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yCiAgICAgICAgICAgICAgICAgICAgeWllbGQgdHR5cGUsICJ7JXN9JXMiICUgKG5hbWVzcGFjZXNbcHJlZml4XSwgdXJpKQogICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJwcmVmaXggJXIgbm90IGZvdW5kIGluIHByZWZpeCBtYXAiICUgcHJlZml4KSBmcm9tIE5vbmUKICAgICAgICAgICAgZWxpZiBkZWZhdWx0X25hbWVzcGFjZSBhbmQgbm90IHBhcnNpbmdfYXR0cmlidXRlOgogICAgICAgICAgICAgICAgeWllbGQgdHR5cGUsICJ7JXN9JXMiICUgKGRlZmF1bHRfbmFtZXNwYWNlLCB0YWcpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB5aWVsZCB0b2tlbgogICAgICAgICAgICBwYXJzaW5nX2F0dHJpYnV0ZSA9IEZhbHNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgeWllbGQgdG9rZW4KICAgICAgICAgICAgcGFyc2luZ19hdHRyaWJ1dGUgPSB0dHlwZSA9PSAnQCcKCgpkZWYgZ2V0X3BhcmVudF9tYXAoY29udGV4dCk6CiAgICBwYXJlbnRfbWFwID0gY29udGV4dC5wYXJlbnRfbWFwCiAgICBpZiBwYXJlbnRfbWFwIGlzIE5vbmU6CiAgICAgICAgY29udGV4dC5wYXJlbnRfbWFwID0gcGFyZW50X21hcCA9IHt9CiAgICAgICAgZm9yIHAgaW4gY29udGV4dC5yb290Lml0ZXIoKToKICAgICAgICAgICAgZm9yIGUgaW4gcDoKICAgICAgICAgICAgICAgIHBhcmVudF9tYXBbZV0gPSBwCiAgICByZXR1cm4gcGFyZW50X21hcAoKCmRlZiBfaXNfd2lsZGNhcmRfdGFnKHRhZyk6CiAgICByZXR1cm4gdGFnWzozXSA9PSAneyp9JyBvciB0YWdbLTI6XSA9PSAnfSonCgoKZGVmIF9wcmVwYXJlX3RhZyh0YWcpOgogICAgX2lzaW5zdGFuY2UsIF9zdHIgPSBpc2luc3RhbmNlLCBzdHIKICAgIGlmIHRhZyA9PSAneyp9Kic6CiAgICAgICAgIyBTYW1lIGFzICcqJywgYnV0IG5vIGNvbW1lbnRzIG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLgogICAgICAgICMgSXQgY2FuIGJlIGEgc3VycHJpc2UgdGhhdCAnKicgaW5jbHVkZXMgdGhvc2UsIGJ1dCB0aGVyZSBpcyBubwogICAgICAgICMganVzdGlmaWNhdGlvbiBmb3IgJ3sqfSonIGRvaW5nIHRoZSBzYW1lLgogICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKICAgICAgICAgICAgZm9yIGVsZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgaWYgX2lzaW5zdGFuY2UoZWxlbS50YWcsIF9zdHIpOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgIGVsaWYgdGFnID09ICd7fSonOgogICAgICAgICMgQW55IHRhZyB0aGF0IGlzIG5vdCBpbiBhIG5hbWVzcGFjZS4KICAgICAgICBkZWYgc2VsZWN0KGNvbnRleHQsIHJlc3VsdCk6CiAgICAgICAgICAgIGZvciBlbGVtIGluIHJlc3VsdDoKICAgICAgICAgICAgICAgIGVsX3RhZyA9IGVsZW0udGFnCiAgICAgICAgICAgICAgICBpZiBfaXNpbnN0YW5jZShlbF90YWcsIF9zdHIpIGFuZCBlbF90YWdbMF0gIT0gJ3snOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgIGVsaWYgdGFnWzozXSA9PSAneyp9JzoKICAgICAgICAjIFRoZSB0YWcgaW4gYW55IChvciBubykgbmFtZXNwYWNlLgogICAgICAgIHN1ZmZpeCA9IHRhZ1syOl0gICMgJ31uYW1lJwogICAgICAgIG5vX25zID0gc2xpY2UoLWxlbihzdWZmaXgpLCBOb25lKQogICAgICAgIHRhZyA9IHRhZ1szOl0KICAgICAgICBkZWYgc2VsZWN0KGNvbnRleHQsIHJlc3VsdCk6CiAgICAgICAgICAgIGZvciBlbGVtIGluIHJlc3VsdDoKICAgICAgICAgICAgICAgIGVsX3RhZyA9IGVsZW0udGFnCiAgICAgICAgICAgICAgICBpZiBlbF90YWcgPT0gdGFnIG9yIF9pc2luc3RhbmNlKGVsX3RhZywgX3N0cikgYW5kIGVsX3RhZ1tub19uc10gPT0gc3VmZml4OgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgIGVsaWYgdGFnWy0yOl0gPT0gJ30qJzoKICAgICAgICAjIEFueSB0YWcgaW4gdGhlIGdpdmVuIG5hbWVzcGFjZS4KICAgICAgICBucyA9IHRhZ1s6LTFdCiAgICAgICAgbnNfb25seSA9IHNsaWNlKE5vbmUsIGxlbihucykpCiAgICAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgogICAgICAgICAgICBmb3IgZWxlbSBpbiByZXN1bHQ6CiAgICAgICAgICAgICAgICBlbF90YWcgPSBlbGVtLnRhZwogICAgICAgICAgICAgICAgaWYgX2lzaW5zdGFuY2UoZWxfdGFnLCBfc3RyKSBhbmQgZWxfdGFnW25zX29ubHldID09IG5zOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgIGVsc2U6CiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGYiaW50ZXJuYWwgcGFyc2VyIGVycm9yLCBnb3Qge3RhZ30iKQogICAgcmV0dXJuIHNlbGVjdAoKCmRlZiBwcmVwYXJlX2NoaWxkKG5leHQsIHRva2VuKToKICAgIHRhZyA9IHRva2VuWzFdCiAgICBpZiBfaXNfd2lsZGNhcmRfdGFnKHRhZyk6CiAgICAgICAgc2VsZWN0X3RhZyA9IF9wcmVwYXJlX3RhZyh0YWcpCiAgICAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgogICAgICAgICAgICBkZWYgc2VsZWN0X2NoaWxkKHJlc3VsdCk6CiAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiByZXN1bHQ6CiAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBlbGVtCiAgICAgICAgICAgIHJldHVybiBzZWxlY3RfdGFnKGNvbnRleHQsIHNlbGVjdF9jaGlsZChyZXN1bHQpKQogICAgZWxzZToKICAgICAgICBpZiB0YWdbOjJdID09ICd7fSc6CiAgICAgICAgICAgIHRhZyA9IHRhZ1syOl0gICMgJ3t9dGFnJyA9PSAndGFnJwogICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKICAgICAgICAgICAgZm9yIGVsZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgZm9yIGUgaW4gZWxlbToKICAgICAgICAgICAgICAgICAgICBpZiBlLnRhZyA9PSB0YWc6CiAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGUKICAgIHJldHVybiBzZWxlY3QKCmRlZiBwcmVwYXJlX3N0YXIobmV4dCwgdG9rZW4pOgogICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgogICAgICAgIGZvciBlbGVtIGluIHJlc3VsdDoKICAgICAgICAgICAgeWllbGQgZnJvbSBlbGVtCiAgICByZXR1cm4gc2VsZWN0CgpkZWYgcHJlcGFyZV9zZWxmKG5leHQsIHRva2VuKToKICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKICAgICAgICB5aWVsZCBmcm9tIHJlc3VsdAogICAgcmV0dXJuIHNlbGVjdAoKZGVmIHByZXBhcmVfZGVzY2VuZGFudChuZXh0LCB0b2tlbik6CiAgICB0cnk6CiAgICAgICAgdG9rZW4gPSBuZXh0KCkKICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgIHJldHVybgogICAgaWYgdG9rZW5bMF0gPT0gIioiOgogICAgICAgIHRhZyA9ICIqIgogICAgZWxpZiBub3QgdG9rZW5bMF06CiAgICAgICAgdGFnID0gdG9rZW5bMV0KICAgIGVsc2U6CiAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoImludmFsaWQgZGVzY2VuZGFudCIpCgogICAgaWYgX2lzX3dpbGRjYXJkX3RhZyh0YWcpOgogICAgICAgIHNlbGVjdF90YWcgPSBfcHJlcGFyZV90YWcodGFnKQogICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKICAgICAgICAgICAgZGVmIHNlbGVjdF9jaGlsZChyZXN1bHQpOgogICAgICAgICAgICAgICAgZm9yIGVsZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgICAgIGZvciBlIGluIGVsZW0uaXRlcigpOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBlIGlzIG5vdCBlbGVtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZQogICAgICAgICAgICByZXR1cm4gc2VsZWN0X3RhZyhjb250ZXh0LCBzZWxlY3RfY2hpbGQocmVzdWx0KSkKICAgIGVsc2U6CiAgICAgICAgaWYgdGFnWzoyXSA9PSAne30nOgogICAgICAgICAgICB0YWcgPSB0YWdbMjpdICAjICd7fXRhZycgPT0gJ3RhZycKICAgICAgICBkZWYgc2VsZWN0KGNvbnRleHQsIHJlc3VsdCk6CiAgICAgICAgICAgIGZvciBlbGVtIGluIHJlc3VsdDoKICAgICAgICAgICAgICAgIGZvciBlIGluIGVsZW0uaXRlcih0YWcpOgogICAgICAgICAgICAgICAgICAgIGlmIGUgaXMgbm90IGVsZW06CiAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGUKICAgIHJldHVybiBzZWxlY3QKCmRlZiBwcmVwYXJlX3BhcmVudChuZXh0LCB0b2tlbik6CiAgICBkZWYgc2VsZWN0KGNvbnRleHQsIHJlc3VsdCk6CiAgICAgICAgIyBGSVhNRTogcmFpc2UgZXJyb3IgaWYgLi4gaXMgYXBwbGllZCBhdCB0b3BsZXZlbD8KICAgICAgICBwYXJlbnRfbWFwID0gZ2V0X3BhcmVudF9tYXAoY29udGV4dCkKICAgICAgICByZXN1bHRfbWFwID0ge30KICAgICAgICBmb3IgZWxlbSBpbiByZXN1bHQ6CiAgICAgICAgICAgIGlmIGVsZW0gaW4gcGFyZW50X21hcDoKICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudF9tYXBbZWxlbV0KICAgICAgICAgICAgICAgIGlmIHBhcmVudCBub3QgaW4gcmVzdWx0X21hcDoKICAgICAgICAgICAgICAgICAgICByZXN1bHRfbWFwW3BhcmVudF0gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgeWllbGQgcGFyZW50CiAgICByZXR1cm4gc2VsZWN0CgpkZWYgcHJlcGFyZV9wcmVkaWNhdGUobmV4dCwgdG9rZW4pOgogICAgIyBGSVhNRTogcmVwbGFjZSB3aXRoIHJlYWwgcGFyc2VyISEhIHJlZnM6CiAgICAjIGh0dHA6Ly9qYXZhc2NyaXB0LmNyb2NrZm9yZC5jb20vdGRvcC90ZG9wLmh0bWwKICAgIHNpZ25hdHVyZSA9IFtdCiAgICBwcmVkaWNhdGUgPSBbXQogICAgd2hpbGUgMToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHRva2VuID0gbmV4dCgpCiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGlmIHRva2VuWzBdID09ICJdIjoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiB0b2tlbiA9PSAoJycsICcnKToKICAgICAgICAgICAgIyBpZ25vcmUgd2hpdGVzcGFjZQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIHRva2VuWzBdIGFuZCB0b2tlblswXVs6MV0gaW4gIidcIiI6CiAgICAgICAgICAgIHRva2VuID0gIiciLCB0b2tlblswXVsxOi0xXQogICAgICAgIHNpZ25hdHVyZS5hcHBlbmQodG9rZW5bMF0gb3IgIi0iKQogICAgICAgIHByZWRpY2F0ZS5hcHBlbmQodG9rZW5bMV0pCiAgICBzaWduYXR1cmUgPSAiIi5qb2luKHNpZ25hdHVyZSkKICAgICMgdXNlIHNpZ25hdHVyZSB0byBkZXRlcm1pbmUgcHJlZGljYXRlIHR5cGUKICAgIGlmIHNpZ25hdHVyZSA9PSAiQC0iOgogICAgICAgICMgW0BhdHRyaWJ1dGVdIHByZWRpY2F0ZQogICAgICAgIGtleSA9IHByZWRpY2F0ZVsxXQogICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKICAgICAgICAgICAgZm9yIGVsZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgaWYgZWxlbS5nZXQoa2V5KSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCiAgICAgICAgcmV0dXJuIHNlbGVjdAogICAgaWYgc2lnbmF0dXJlID09ICJALT0nIiBvciBzaWduYXR1cmUgPT0gIkAtIT0nIjoKICAgICAgICAjIFtAYXR0cmlidXRlPSd2YWx1ZSddIG9yIFtAYXR0cmlidXRlIT0ndmFsdWUnXQogICAgICAgIGtleSA9IHByZWRpY2F0ZVsxXQogICAgICAgIHZhbHVlID0gcHJlZGljYXRlWy0xXQogICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKICAgICAgICAgICAgZm9yIGVsZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgaWYgZWxlbS5nZXQoa2V5KSA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCiAgICAgICAgZGVmIHNlbGVjdF9uZWdhdGVkKGNvbnRleHQsIHJlc3VsdCk6CiAgICAgICAgICAgIGZvciBlbGVtIGluIHJlc3VsdDoKICAgICAgICAgICAgICAgIGlmIChhdHRyX3ZhbHVlIDo9IGVsZW0uZ2V0KGtleSkpIGlzIG5vdCBOb25lIGFuZCBhdHRyX3ZhbHVlICE9IHZhbHVlOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICByZXR1cm4gc2VsZWN0X25lZ2F0ZWQgaWYgJyE9JyBpbiBzaWduYXR1cmUgZWxzZSBzZWxlY3QKICAgIGlmIHNpZ25hdHVyZSA9PSAiLSIgYW5kIG5vdCByZS5tYXRjaChyIlwtP1xkKyQiLCBwcmVkaWNhdGVbMF0pOgogICAgICAgICMgW3RhZ10KICAgICAgICB0YWcgPSBwcmVkaWNhdGVbMF0KICAgICAgICBkZWYgc2VsZWN0KGNvbnRleHQsIHJlc3VsdCk6CiAgICAgICAgICAgIGZvciBlbGVtIGluIHJlc3VsdDoKICAgICAgICAgICAgICAgIGlmIGVsZW0uZmluZCh0YWcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICByZXR1cm4gc2VsZWN0CiAgICBpZiBzaWduYXR1cmUgPT0gIi49JyIgb3Igc2lnbmF0dXJlID09ICIuIT0nIiBvciAoCiAgICAgICAgICAgIChzaWduYXR1cmUgPT0gIi09JyIgb3Igc2lnbmF0dXJlID09ICItIT0nIikKICAgICAgICAgICAgYW5kIG5vdCByZS5tYXRjaChyIlwtP1xkKyQiLCBwcmVkaWNhdGVbMF0pKToKICAgICAgICAjIFsuPSd2YWx1ZSddIG9yIFt0YWc9J3ZhbHVlJ10gb3IgWy4hPSd2YWx1ZSddIG9yIFt0YWchPSd2YWx1ZSddCiAgICAgICAgdGFnID0gcHJlZGljYXRlWzBdCiAgICAgICAgdmFsdWUgPSBwcmVkaWNhdGVbLTFdCiAgICAgICAgaWYgdGFnOgogICAgICAgICAgICBkZWYgc2VsZWN0KGNvbnRleHQsIHJlc3VsdCk6CiAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiByZXN1bHQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIGUgaW4gZWxlbS5maW5kYWxsKHRhZyk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICIiLmpvaW4oZS5pdGVydGV4dCgpKSA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGRlZiBzZWxlY3RfbmVnYXRlZChjb250ZXh0LCByZXN1bHQpOgogICAgICAgICAgICAgICAgZm9yIGVsZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgICAgIGZvciBlIGluIGVsZW0uaXRlcmZpbmQodGFnKToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgIiIuam9pbihlLml0ZXJ0ZXh0KCkpICE9IHZhbHVlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZWxlbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgICBkZWYgc2VsZWN0KGNvbnRleHQsIHJlc3VsdCk6CiAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiByZXN1bHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgIiIuam9pbihlbGVtLml0ZXJ0ZXh0KCkpID09IHZhbHVlOgogICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCiAgICAgICAgICAgIGRlZiBzZWxlY3RfbmVnYXRlZChjb250ZXh0LCByZXN1bHQpOgogICAgICAgICAgICAgICAgZm9yIGVsZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgICAgIGlmICIiLmpvaW4oZWxlbS5pdGVydGV4dCgpKSAhPSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZWxlbQogICAgICAgIHJldHVybiBzZWxlY3RfbmVnYXRlZCBpZiAnIT0nIGluIHNpZ25hdHVyZSBlbHNlIHNlbGVjdAogICAgaWYgc2lnbmF0dXJlID09ICItIiBvciBzaWduYXR1cmUgPT0gIi0oKSIgb3Igc2lnbmF0dXJlID09ICItKCktIjoKICAgICAgICAjIFtpbmRleF0gb3IgW2xhc3QoKV0gb3IgW2xhc3QoKS1pbmRleF0KICAgICAgICBpZiBzaWduYXR1cmUgPT0gIi0iOgogICAgICAgICAgICAjIFtpbmRleF0KICAgICAgICAgICAgaW5kZXggPSBpbnQocHJlZGljYXRlWzBdKSAtIDEKICAgICAgICAgICAgaWYgaW5kZXggPCAwOgogICAgICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoIlhQYXRoIHBvc2l0aW9uID49IDEgZXhwZWN0ZWQiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIHByZWRpY2F0ZVswXSAhPSAibGFzdCI6CiAgICAgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcigidW5zdXBwb3J0ZWQgZnVuY3Rpb24iKQogICAgICAgICAgICBpZiBzaWduYXR1cmUgPT0gIi0oKS0iOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KHByZWRpY2F0ZVsyXSkgLSAxCiAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcigidW5zdXBwb3J0ZWQgZXhwcmVzc2lvbiIpCiAgICAgICAgICAgICAgICBpZiBpbmRleCA+IC0yOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJYUGF0aCBvZmZzZXQgZnJvbSBsYXN0KCkgbXVzdCBiZSBuZWdhdGl2ZSIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpbmRleCA9IC0xCiAgICAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgogICAgICAgICAgICBwYXJlbnRfbWFwID0gZ2V0X3BhcmVudF9tYXAoY29udGV4dCkKICAgICAgICAgICAgZm9yIGVsZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudF9tYXBbZWxlbV0KICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiB3aGF0IGlmIHRoZSBzZWxlY3RvciBpcyAiKiIgPwogICAgICAgICAgICAgICAgICAgIGVsZW1zID0gbGlzdChwYXJlbnQuZmluZGFsbChlbGVtLnRhZykpCiAgICAgICAgICAgICAgICAgICAgaWYgZWxlbXNbaW5kZXhdIGlzIGVsZW06CiAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW5kZXhFcnJvciwgS2V5RXJyb3IpOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICByZXR1cm4gc2VsZWN0CiAgICByYWlzZSBTeW50YXhFcnJvcigiaW52YWxpZCBwcmVkaWNhdGUiKQoKb3BzID0gewogICAgIiI6IHByZXBhcmVfY2hpbGQsCiAgICAiKiI6IHByZXBhcmVfc3RhciwKICAgICIuIjogcHJlcGFyZV9zZWxmLAogICAgIi4uIjogcHJlcGFyZV9wYXJlbnQsCiAgICAiLy8iOiBwcmVwYXJlX2Rlc2NlbmRhbnQsCiAgICAiWyI6IHByZXBhcmVfcHJlZGljYXRlLAogICAgfQoKX2NhY2hlID0ge30KCmNsYXNzIF9TZWxlY3RvckNvbnRleHQ6CiAgICBwYXJlbnRfbWFwID0gTm9uZQogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3QpOgogICAgICAgIHNlbGYucm9vdCA9IHJvb3QKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMjCiMgR2VuZXJhdGUgYWxsIG1hdGNoaW5nIG9iamVjdHMuCgpkZWYgaXRlcmZpbmQoZWxlbSwgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKToKICAgICMgY29tcGlsZSBzZWxlY3RvciBwYXR0ZXJuCiAgICBpZiBwYXRoWy0xOl0gPT0gIi8iOgogICAgICAgIHBhdGggPSBwYXRoICsgIioiICMgaW1wbGljaXQgYWxsIChGSVhNRToga2VlcCB0aGlzPykKCiAgICBjYWNoZV9rZXkgPSAocGF0aCwpCiAgICBpZiBuYW1lc3BhY2VzOgogICAgICAgIGNhY2hlX2tleSArPSB0dXBsZShzb3J0ZWQobmFtZXNwYWNlcy5pdGVtcygpKSkKCiAgICB0cnk6CiAgICAgICAgc2VsZWN0b3IgPSBfY2FjaGVbY2FjaGVfa2V5XQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIGlmIGxlbihfY2FjaGUpID4gMTAwOgogICAgICAgICAgICBfY2FjaGUuY2xlYXIoKQogICAgICAgIGlmIHBhdGhbOjFdID09ICIvIjoKICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoImNhbm5vdCB1c2UgYWJzb2x1dGUgcGF0aCBvbiBlbGVtZW50IikKICAgICAgICBuZXh0ID0gaXRlcih4cGF0aF90b2tlbml6ZXIocGF0aCwgbmFtZXNwYWNlcykpLl9fbmV4dF9fCiAgICAgICAgdHJ5OgogICAgICAgICAgICB0b2tlbiA9IG5leHQoKQogICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxlY3RvciA9IFtdCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZWN0b3IuYXBwZW5kKG9wc1t0b2tlblswXV0obmV4dCwgdG9rZW4pKQogICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJpbnZhbGlkIHBhdGgiKSBmcm9tIE5vbmUKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgdG9rZW4gPSBuZXh0KCkKICAgICAgICAgICAgICAgIGlmIHRva2VuWzBdID09ICIvIjoKICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IG5leHQoKQogICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgX2NhY2hlW2NhY2hlX2tleV0gPSBzZWxlY3RvcgogICAgIyBleGVjdXRlIHNlbGVjdG9yIHBhdHRlcm4KICAgIHJlc3VsdCA9IFtlbGVtXQogICAgY29udGV4dCA9IF9TZWxlY3RvckNvbnRleHQoZWxlbSkKICAgIGZvciBzZWxlY3QgaW4gc2VsZWN0b3I6CiAgICAgICAgcmVzdWx0ID0gc2VsZWN0KGNvbnRleHQsIHJlc3VsdCkKICAgIHJldHVybiByZXN1bHQKCiMjCiMgRmluZCBmaXJzdCBtYXRjaGluZyBvYmplY3QuCgpkZWYgZmluZChlbGVtLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpOgogICAgcmV0dXJuIG5leHQoaXRlcmZpbmQoZWxlbSwgcGF0aCwgbmFtZXNwYWNlcyksIE5vbmUpCgojIwojIEZpbmQgYWxsIG1hdGNoaW5nIG9iamVjdHMuCgpkZWYgZmluZGFsbChlbGVtLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpOgogICAgcmV0dXJuIGxpc3QoaXRlcmZpbmQoZWxlbSwgcGF0aCwgbmFtZXNwYWNlcykpCgojIwojIEZpbmQgdGV4dCBmb3IgZmlyc3QgbWF0Y2hpbmcgb2JqZWN0LgoKZGVmIGZpbmR0ZXh0KGVsZW0sIHBhdGgsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKToKICAgIHRyeToKICAgICAgICBlbGVtID0gbmV4dChpdGVyZmluZChlbGVtLCBwYXRoLCBuYW1lc3BhY2VzKSkKICAgICAgICBpZiBlbGVtLnRleHQgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgcmV0dXJuIGVsZW0udGV4dAogICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgcmV0dXJuIGRlZmF1bHQKUEsDBBQAAAAAAAMgo1aXBcqSUCABAFAgAQAYAAAAeG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5IiIiTGlnaHR3ZWlnaHQgWE1MIHN1cHBvcnQgZm9yIFB5dGhvbi4KCiBYTUwgaXMgYW4gaW5oZXJlbnRseSBoaWVyYXJjaGljYWwgZGF0YSBmb3JtYXQsIGFuZCB0aGUgbW9zdCBuYXR1cmFsIHdheSB0bwogcmVwcmVzZW50IGl0IGlzIHdpdGggYSB0cmVlLiAgVGhpcyBtb2R1bGUgaGFzIHR3byBjbGFzc2VzIGZvciB0aGlzIHB1cnBvc2U6CgogICAgMS4gRWxlbWVudFRyZWUgcmVwcmVzZW50cyB0aGUgd2hvbGUgWE1MIGRvY3VtZW50IGFzIGEgdHJlZSBhbmQKCiAgICAyLiBFbGVtZW50IHJlcHJlc2VudHMgYSBzaW5nbGUgbm9kZSBpbiB0aGlzIHRyZWUuCgogSW50ZXJhY3Rpb25zIHdpdGggdGhlIHdob2xlIGRvY3VtZW50IChyZWFkaW5nIGFuZCB3cml0aW5nIHRvL2Zyb20gZmlsZXMpIGFyZQogdXN1YWxseSBkb25lIG9uIHRoZSBFbGVtZW50VHJlZSBsZXZlbC4gIEludGVyYWN0aW9ucyB3aXRoIGEgc2luZ2xlIFhNTCBlbGVtZW50CiBhbmQgaXRzIHN1Yi1lbGVtZW50cyBhcmUgZG9uZSBvbiB0aGUgRWxlbWVudCBsZXZlbC4KCiBFbGVtZW50IGlzIGEgZmxleGlibGUgY29udGFpbmVyIG9iamVjdCBkZXNpZ25lZCB0byBzdG9yZSBoaWVyYXJjaGljYWwgZGF0YQogc3RydWN0dXJlcyBpbiBtZW1vcnkuIEl0IGNhbiBiZSBkZXNjcmliZWQgYXMgYSBjcm9zcyBiZXR3ZWVuIGEgbGlzdCBhbmQgYQogZGljdGlvbmFyeS4gIEVhY2ggRWxlbWVudCBoYXMgYSBudW1iZXIgb2YgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggaXQ6CgogICAgJ3RhZycgLSBhIHN0cmluZyBjb250YWluaW5nIHRoZSBlbGVtZW50J3MgbmFtZS4KCiAgICAnYXR0cmlidXRlcycgLSBhIFB5dGhvbiBkaWN0aW9uYXJ5IHN0b3JpbmcgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzLgoKICAgICd0ZXh0JyAtIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQncyB0ZXh0IGNvbnRlbnQuCgogICAgJ3RhaWwnIC0gYW4gb3B0aW9uYWwgc3RyaW5nIGNvbnRhaW5pbmcgdGV4dCBhZnRlciB0aGUgZWxlbWVudCdzIGVuZCB0YWcuCgogICAgQW5kIGEgbnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzIHN0b3JlZCBpbiBhIFB5dGhvbiBzZXF1ZW5jZS4KCiBUbyBjcmVhdGUgYW4gZWxlbWVudCBpbnN0YW5jZSwgdXNlIHRoZSBFbGVtZW50IGNvbnN0cnVjdG9yLAogb3IgdGhlIFN1YkVsZW1lbnQgZmFjdG9yeSBmdW5jdGlvbi4KCiBZb3UgY2FuIGFsc28gdXNlIHRoZSBFbGVtZW50VHJlZSBjbGFzcyB0byB3cmFwIGFuIGVsZW1lbnQgc3RydWN0dXJlCiBhbmQgY29udmVydCBpdCB0byBhbmQgZnJvbSBYTUwuCgoiIiIKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiMgU2VlIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvcHNmL2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLgojCiMgRWxlbWVudFRyZWUKIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwOCBieSBGcmVkcmlrIEx1bmRoLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIwojIGZyZWRyaWtAcHl0aG9ud2FyZS5jb20KIyBodHRwOi8vd3d3LnB5dGhvbndhcmUuY29tCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGUgRWxlbWVudFRyZWUgdG9vbGtpdCBpcwojCiMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDggYnkgRnJlZHJpayBMdW5kaAojCiMgQnkgb2J0YWluaW5nLCB1c2luZywgYW5kL29yIGNvcHlpbmcgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgaXRzCiMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLCB5b3UgYWdyZWUgdGhhdCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLAojIGFuZCB3aWxsIGNvbXBseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnM6CiMKIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAojIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcwojIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4KIyBhbGwgY29waWVzLCBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCiMgbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mCiMgU2VjcmV0IExhYnMgQUIgb3IgdGhlIGF1dGhvciBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkKIyBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbgojIHByaW9yIHBlcm1pc3Npb24uCiMKIyBTRUNSRVQgTEFCUyBBQiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQKIyBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVC0KIyBBQklMSVRZIEFORCBGSVRORVNTLiAgSU4gTk8gRVZFTlQgU0hBTEwgU0VDUkVUIExBQlMgQUIgT1IgVEhFIEFVVEhPUgojIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkKIyBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywKIyBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUwojIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UKIyBPRiBUSElTIFNPRlRXQVJFLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpfX2FsbF9fID0gWwogICAgIyBwdWJsaWMgc3ltYm9scwogICAgIkNvbW1lbnQiLAogICAgImR1bXAiLAogICAgIkVsZW1lbnQiLCAiRWxlbWVudFRyZWUiLAogICAgImZyb21zdHJpbmciLCAiZnJvbXN0cmluZ2xpc3QiLAogICAgImluZGVudCIsICJpc2VsZW1lbnQiLCAiaXRlcnBhcnNlIiwKICAgICJwYXJzZSIsICJQYXJzZUVycm9yIiwKICAgICJQSSIsICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iLAogICAgIlFOYW1lIiwKICAgICJTdWJFbGVtZW50IiwKICAgICJ0b3N0cmluZyIsICJ0b3N0cmluZ2xpc3QiLAogICAgIlRyZWVCdWlsZGVyIiwKICAgICJWRVJTSU9OIiwKICAgICJYTUwiLCAiWE1MSUQiLAogICAgIlhNTFBhcnNlciIsICJYTUxQdWxsUGFyc2VyIiwKICAgICJyZWdpc3Rlcl9uYW1lc3BhY2UiLAogICAgImNhbm9uaWNhbGl6ZSIsICJDMTROV3JpdGVyVGFyZ2V0IiwKICAgIF0KClZFUlNJT04gPSAiMS4zLjAiCgppbXBvcnQgc3lzCmltcG9ydCByZQppbXBvcnQgd2FybmluZ3MKaW1wb3J0IGlvCmltcG9ydCBjb2xsZWN0aW9ucwppbXBvcnQgY29sbGVjdGlvbnMuYWJjCmltcG9ydCBjb250ZXh0bGliCgpmcm9tIC4gaW1wb3J0IEVsZW1lbnRQYXRoCgoKY2xhc3MgUGFyc2VFcnJvcihTeW50YXhFcnJvcik6CiAgICAiIiJBbiBlcnJvciB3aGVuIHBhcnNpbmcgYW4gWE1MIGRvY3VtZW50LgoKICAgIEluIGFkZGl0aW9uIHRvIGl0cyBleGNlcHRpb24gdmFsdWUsIGEgUGFyc2VFcnJvciBjb250YWlucwogICAgdHdvIGV4dHJhIGF0dHJpYnV0ZXM6CiAgICAgICAgJ2NvZGUnICAgICAtIHRoZSBzcGVjaWZpYyBleGNlcHRpb24gY29kZQogICAgICAgICdwb3NpdGlvbicgLSB0aGUgbGluZSBhbmQgY29sdW1uIG9mIHRoZSBlcnJvcgoKICAgICIiIgogICAgcGFzcwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCmRlZiBpc2VsZW1lbnQoZWxlbWVudCk6CiAgICAiIiJSZXR1cm4gVHJ1ZSBpZiAqZWxlbWVudCogYXBwZWFycyB0byBiZSBhbiBFbGVtZW50LiIiIgogICAgcmV0dXJuIGhhc2F0dHIoZWxlbWVudCwgJ3RhZycpCgoKY2xhc3MgRWxlbWVudDoKICAgICIiIkFuIFhNTCBlbGVtZW50LgoKICAgIFRoaXMgY2xhc3MgaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRWxlbWVudCBpbnRlcmZhY2UuCgogICAgQW4gZWxlbWVudCdzIGxlbmd0aCBpcyBpdHMgbnVtYmVyIG9mIHN1YmVsZW1lbnRzLiAgVGhhdCBtZWFucyBpZiB5b3UKICAgIHdhbnQgdG8gY2hlY2sgaWYgYW4gZWxlbWVudCBpcyB0cnVseSBlbXB0eSwgeW91IHNob3VsZCBjaGVjayBCT1RICiAgICBpdHMgbGVuZ3RoIEFORCBpdHMgdGV4dCBhdHRyaWJ1dGUuCgogICAgVGhlIGVsZW1lbnQgdGFnLCBhdHRyaWJ1dGUgbmFtZXMsIGFuZCBhdHRyaWJ1dGUgdmFsdWVzIGNhbiBiZSBlaXRoZXIKICAgIGJ5dGVzIG9yIHN0cmluZ3MuCgogICAgKnRhZyogaXMgdGhlIGVsZW1lbnQgbmFtZS4gICphdHRyaWIqIGlzIGFuIG9wdGlvbmFsIGRpY3Rpb25hcnkgY29udGFpbmluZwogICAgZWxlbWVudCBhdHRyaWJ1dGVzLiAqZXh0cmEqIGFyZSBhZGRpdGlvbmFsIGVsZW1lbnQgYXR0cmlidXRlcyBnaXZlbiBhcwogICAga2V5d29yZCBhcmd1bWVudHMuCgogICAgRXhhbXBsZSBmb3JtOgogICAgICAgIDx0YWcgYXR0cmliPnRleHQ8Y2hpbGQvPi4uLjwvdGFnPnRhaWwKCiAgICAiIiIKCiAgICB0YWcgPSBOb25lCiAgICAiIiJUaGUgZWxlbWVudCdzIG5hbWUuIiIiCgogICAgYXR0cmliID0gTm9uZQogICAgIiIiRGljdGlvbmFyeSBvZiB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXMuIiIiCgogICAgdGV4dCA9IE5vbmUKICAgICIiIgogICAgVGV4dCBiZWZvcmUgZmlyc3Qgc3ViZWxlbWVudC4gVGhpcyBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgdGhlIHZhbHVlIE5vbmUuCiAgICBOb3RlIHRoYXQgaWYgdGhlcmUgaXMgbm8gdGV4dCwgdGhpcyBhdHRyaWJ1dGUgbWF5IGJlIGVpdGhlcgogICAgTm9uZSBvciB0aGUgZW1wdHkgc3RyaW5nLCBkZXBlbmRpbmcgb24gdGhlIHBhcnNlci4KCiAgICAiIiIKCiAgICB0YWlsID0gTm9uZQogICAgIiIiCiAgICBUZXh0IGFmdGVyIHRoaXMgZWxlbWVudCdzIGVuZCB0YWcsIGJ1dCBiZWZvcmUgdGhlIG5leHQgc2libGluZyBlbGVtZW50J3MKICAgIHN0YXJ0IHRhZy4gIFRoaXMgaXMgZWl0aGVyIGEgc3RyaW5nIG9yIHRoZSB2YWx1ZSBOb25lLiAgTm90ZSB0aGF0IGlmIHRoZXJlCiAgICB3YXMgbm8gdGV4dCwgdGhpcyBhdHRyaWJ1dGUgbWF5IGJlIGVpdGhlciBOb25lIG9yIGFuIGVtcHR5IHN0cmluZywKICAgIGRlcGVuZGluZyBvbiB0aGUgcGFyc2VyLgoKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXR0cmliLCBkaWN0KToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhdHRyaWIgbXVzdCBiZSBkaWN0LCBub3QgJXMiICUgKAogICAgICAgICAgICAgICAgYXR0cmliLl9fY2xhc3NfXy5fX25hbWVfXywpKQogICAgICAgIHNlbGYudGFnID0gdGFnCiAgICAgICAgc2VsZi5hdHRyaWIgPSB7KiphdHRyaWIsICoqZXh0cmF9CiAgICAgICAgc2VsZi5fY2hpbGRyZW4gPSBbXQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gIjwlcyAlciBhdCAlI3g+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi50YWcsIGlkKHNlbGYpKQoKICAgIGRlZiBtYWtlZWxlbWVudChzZWxmLCB0YWcsIGF0dHJpYik6CiAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGVsZW1lbnQgd2l0aCB0aGUgc2FtZSB0eXBlLgoKICAgICAgICAqdGFnKiBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBlbGVtZW50IG5hbWUuCiAgICAgICAgKmF0dHJpYiogaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQgYXR0cmlidXRlcy4KCiAgICAgICAgRG8gbm90IGNhbGwgdGhpcyBtZXRob2QsIHVzZSB0aGUgU3ViRWxlbWVudCBmYWN0b3J5IGZ1bmN0aW9uIGluc3RlYWQuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyh0YWcsIGF0dHJpYikKCiAgICBkZWYgY29weShzZWxmKToKICAgICAgICAiIiJSZXR1cm4gY29weSBvZiBjdXJyZW50IGVsZW1lbnQuCgogICAgICAgIFRoaXMgY3JlYXRlcyBhIHNoYWxsb3cgY29weS4gU3ViZWxlbWVudHMgd2lsbCBiZSBzaGFyZWQgd2l0aCB0aGUKICAgICAgICBvcmlnaW5hbCB0cmVlLgoKICAgICAgICAiIiIKICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAiZWxlbS5jb3B5KCkgaXMgZGVwcmVjYXRlZC4gVXNlIGNvcHkuY29weShlbGVtKSBpbnN0ZWFkLiIsCiAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZwogICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIHNlbGYuX19jb3B5X18oKQoKICAgIGRlZiBfX2NvcHlfXyhzZWxmKToKICAgICAgICBlbGVtID0gc2VsZi5tYWtlZWxlbWVudChzZWxmLnRhZywgc2VsZi5hdHRyaWIpCiAgICAgICAgZWxlbS50ZXh0ID0gc2VsZi50ZXh0CiAgICAgICAgZWxlbS50YWlsID0gc2VsZi50YWlsCiAgICAgICAgZWxlbVs6XSA9IHNlbGYKICAgICAgICByZXR1cm4gZWxlbQoKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5fY2hpbGRyZW4pCgogICAgZGVmIF9fYm9vbF9fKHNlbGYpOgogICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICJUaGUgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2Qgd2lsbCBjaGFuZ2UgaW4gZnV0dXJlIHZlcnNpb25zLiAgIgogICAgICAgICAgICAiVXNlIHNwZWNpZmljICdsZW4oZWxlbSknIG9yICdlbGVtIGlzIG5vdCBOb25lJyB0ZXN0IGluc3RlYWQuIiwKICAgICAgICAgICAgRnV0dXJlV2FybmluZywgc3RhY2tsZXZlbD0yCiAgICAgICAgICAgICkKICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2NoaWxkcmVuKSAhPSAwICMgZW11bGF0ZSBvbGQgYmVoYXZpb3VyLCBmb3Igbm93CgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKICAgICAgICByZXR1cm4gc2VsZi5fY2hpbGRyZW5baW5kZXhdCgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCBlbGVtZW50KToKICAgICAgICBpZiBpc2luc3RhbmNlKGluZGV4LCBzbGljZSk6CiAgICAgICAgICAgIGZvciBlbHQgaW4gZWxlbWVudDoKICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KGVsdCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9hc3NlcnRfaXNfZWxlbWVudChlbGVtZW50KQogICAgICAgIHNlbGYuX2NoaWxkcmVuW2luZGV4XSA9IGVsZW1lbnQKCiAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgIGRlbCBzZWxmLl9jaGlsZHJlbltpbmRleF0KCiAgICBkZWYgYXBwZW5kKHNlbGYsIHN1YmVsZW1lbnQpOgogICAgICAgICIiIkFkZCAqc3ViZWxlbWVudCogdG8gdGhlIGVuZCBvZiB0aGlzIGVsZW1lbnQuCgogICAgICAgIFRoZSBuZXcgZWxlbWVudCB3aWxsIGFwcGVhciBpbiBkb2N1bWVudCBvcmRlciBhZnRlciB0aGUgbGFzdCBleGlzdGluZwogICAgICAgIHN1YmVsZW1lbnQgKG9yIGRpcmVjdGx5IGFmdGVyIHRoZSB0ZXh0LCBpZiBpdCdzIHRoZSBmaXJzdCBzdWJlbGVtZW50KSwKICAgICAgICBidXQgYmVmb3JlIHRoZSBlbmQgdGFnIGZvciB0aGlzIGVsZW1lbnQuCgogICAgICAgICIiIgogICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KHN1YmVsZW1lbnQpCiAgICAgICAgc2VsZi5fY2hpbGRyZW4uYXBwZW5kKHN1YmVsZW1lbnQpCgogICAgZGVmIGV4dGVuZChzZWxmLCBlbGVtZW50cyk6CiAgICAgICAgIiIiQXBwZW5kIHN1YmVsZW1lbnRzIGZyb20gYSBzZXF1ZW5jZS4KCiAgICAgICAgKmVsZW1lbnRzKiBpcyBhIHNlcXVlbmNlIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzLgoKICAgICAgICAiIiIKICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgICAgc2VsZi5fY2hpbGRyZW4uYXBwZW5kKGVsZW1lbnQpCgogICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgc3ViZWxlbWVudCk6CiAgICAgICAgIiIiSW5zZXJ0ICpzdWJlbGVtZW50KiBhdCBwb3NpdGlvbiAqaW5kZXgqLiIiIgogICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KHN1YmVsZW1lbnQpCiAgICAgICAgc2VsZi5fY2hpbGRyZW4uaW5zZXJ0KGluZGV4LCBzdWJlbGVtZW50KQoKICAgIGRlZiBfYXNzZXJ0X2lzX2VsZW1lbnQoc2VsZiwgZSk6CiAgICAgICAgIyBOZWVkIHRvIHJlZmVyIHRvIHRoZSBhY3R1YWwgUHl0aG9uIGltcGxlbWVudGF0aW9uLCBub3QgdGhlCiAgICAgICAgIyBzaGFkb3dpbmcgQyBpbXBsZW1lbnRhdGlvbi4KICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlLCBfRWxlbWVudF9QeSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXhwZWN0ZWQgYW4gRWxlbWVudCwgbm90ICVzJyAlIHR5cGUoZSkuX19uYW1lX18pCgogICAgZGVmIHJlbW92ZShzZWxmLCBzdWJlbGVtZW50KToKICAgICAgICAiIiJSZW1vdmUgbWF0Y2hpbmcgc3ViZWxlbWVudC4KCiAgICAgICAgVW5saWtlIHRoZSBmaW5kIG1ldGhvZHMsIHRoaXMgbWV0aG9kIGNvbXBhcmVzIGVsZW1lbnRzIGJhc2VkIG9uCiAgICAgICAgaWRlbnRpdHksIE5PVCBPTiB0YWcgdmFsdWUgb3IgY29udGVudHMuICBUbyByZW1vdmUgc3ViZWxlbWVudHMgYnkKICAgICAgICBvdGhlciBtZWFucywgdGhlIGVhc2llc3Qgd2F5IGlzIHRvIHVzZSBhIGxpc3QgY29tcHJlaGVuc2lvbiB0bwogICAgICAgIHNlbGVjdCB3aGF0IGVsZW1lbnRzIHRvIGtlZXAsIGFuZCB0aGVuIHVzZSBzbGljZSBhc3NpZ25tZW50IHRvIHVwZGF0ZQogICAgICAgIHRoZSBwYXJlbnQgZWxlbWVudC4KCiAgICAgICAgVmFsdWVFcnJvciBpcyByYWlzZWQgaWYgYSBtYXRjaGluZyBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC4KCiAgICAgICAgIiIiCiAgICAgICAgIyBhc3NlcnQgaXNlbGVtZW50KGVsZW1lbnQpCiAgICAgICAgc2VsZi5fY2hpbGRyZW4ucmVtb3ZlKHN1YmVsZW1lbnQpCgogICAgZGVmIGZpbmQoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKToKICAgICAgICAiIiJGaW5kIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQgYnkgdGFnIG5hbWUgb3IgcGF0aC4KCiAgICAgICAgKnBhdGgqIGlzIGEgc3RyaW5nIGhhdmluZyBlaXRoZXIgYW4gZWxlbWVudCB0YWcgb3IgYW4gWFBhdGgsCiAgICAgICAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KCiAgICAgICAgUmV0dXJuIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciBOb25lIGlmIG5vIGVsZW1lbnQgd2FzIGZvdW5kLgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gRWxlbWVudFBhdGguZmluZChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKQoKICAgIGRlZiBmaW5kdGV4dChzZWxmLCBwYXRoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSk6CiAgICAgICAgIiIiRmluZCB0ZXh0IGZvciBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGJ5IHRhZyBuYW1lIG9yIHBhdGguCgogICAgICAgICpwYXRoKiBpcyBhIHN0cmluZyBoYXZpbmcgZWl0aGVyIGFuIGVsZW1lbnQgdGFnIG9yIGFuIFhQYXRoLAogICAgICAgICpkZWZhdWx0KiBpcyB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBlbGVtZW50IHdhcyBub3QgZm91bmQsCiAgICAgICAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KCiAgICAgICAgUmV0dXJuIHRleHQgY29udGVudCBvZiBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciBkZWZhdWx0IHZhbHVlIGlmCiAgICAgICAgbm9uZSB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgYW4gZWxlbWVudCBpcyBmb3VuZCBoYXZpbmcgbm8gdGV4dAogICAgICAgIGNvbnRlbnQsIHRoZSBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBFbGVtZW50UGF0aC5maW5kdGV4dChzZWxmLCBwYXRoLCBkZWZhdWx0LCBuYW1lc3BhY2VzKQoKICAgIGRlZiBmaW5kYWxsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSk6CiAgICAgICAgIiIiRmluZCBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMgYnkgdGFnIG5hbWUgb3IgcGF0aC4KCiAgICAgICAgKnBhdGgqIGlzIGEgc3RyaW5nIGhhdmluZyBlaXRoZXIgYW4gZWxlbWVudCB0YWcgb3IgYW4gWFBhdGgsCiAgICAgICAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KCiAgICAgICAgUmV0dXJucyBsaXN0IGNvbnRhaW5pbmcgYWxsIG1hdGNoaW5nIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gRWxlbWVudFBhdGguZmluZGFsbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKQoKICAgIGRlZiBpdGVyZmluZChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpOgogICAgICAgICIiIkZpbmQgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzIGJ5IHRhZyBuYW1lIG9yIHBhdGguCgogICAgICAgICpwYXRoKiBpcyBhIHN0cmluZyBoYXZpbmcgZWl0aGVyIGFuIGVsZW1lbnQgdGFnIG9yIGFuIFhQYXRoLAogICAgICAgICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCgogICAgICAgIFJldHVybiBhbiBpdGVyYWJsZSB5aWVsZGluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBFbGVtZW50UGF0aC5pdGVyZmluZChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKQoKICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICAiIiJSZXNldCBlbGVtZW50LgoKICAgICAgICBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYWxsIHN1YmVsZW1lbnRzLCBjbGVhcnMgYWxsIGF0dHJpYnV0ZXMsIGFuZCBzZXRzCiAgICAgICAgdGhlIHRleHQgYW5kIHRhaWwgYXR0cmlidXRlcyB0byBOb25lLgoKICAgICAgICAiIiIKICAgICAgICBzZWxmLmF0dHJpYi5jbGVhcigpCiAgICAgICAgc2VsZi5fY2hpbGRyZW4gPSBbXQogICAgICAgIHNlbGYudGV4dCA9IHNlbGYudGFpbCA9IE5vbmUKCiAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lKToKICAgICAgICAiIiJHZXQgZWxlbWVudCBhdHRyaWJ1dGUuCgogICAgICAgIEVxdWl2YWxlbnQgdG8gYXR0cmliLmdldCwgYnV0IHNvbWUgaW1wbGVtZW50YXRpb25zIG1heSBoYW5kbGUgdGhpcyBhCiAgICAgICAgYml0IG1vcmUgZWZmaWNpZW50bHkuICAqa2V5KiBpcyB3aGF0IGF0dHJpYnV0ZSB0byBsb29rIGZvciwgYW5kCiAgICAgICAgKmRlZmF1bHQqIGlzIHdoYXQgdG8gcmV0dXJuIGlmIHRoZSBhdHRyaWJ1dGUgd2FzIG5vdCBmb3VuZC4KCiAgICAgICAgUmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGUgdmFsdWUsIG9yIHRoZSBkZWZhdWx0IGlmCiAgICAgICAgYXR0cmlidXRlIHdhcyBub3QgZm91bmQuCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLmF0dHJpYi5nZXQoa2V5LCBkZWZhdWx0KQoKICAgIGRlZiBzZXQoc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIiIiU2V0IGVsZW1lbnQgYXR0cmlidXRlLgoKICAgICAgICBFcXVpdmFsZW50IHRvIGF0dHJpYltrZXldID0gdmFsdWUsIGJ1dCBzb21lIGltcGxlbWVudGF0aW9ucyBtYXkgaGFuZGxlCiAgICAgICAgdGhpcyBhIGJpdCBtb3JlIGVmZmljaWVudGx5LiAgKmtleSogaXMgd2hhdCBhdHRyaWJ1dGUgdG8gc2V0LCBhbmQKICAgICAgICAqdmFsdWUqIGlzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgdG8gc2V0IGl0IHRvLgoKICAgICAgICAiIiIKICAgICAgICBzZWxmLmF0dHJpYltrZXldID0gdmFsdWUKCiAgICBkZWYga2V5cyhzZWxmKToKICAgICAgICAiIiJHZXQgbGlzdCBvZiBhdHRyaWJ1dGUgbmFtZXMuCgogICAgICAgIE5hbWVzIGFyZSByZXR1cm5lZCBpbiBhbiBhcmJpdHJhcnkgb3JkZXIsIGp1c3QgbGlrZSBhbiBvcmRpbmFyeQogICAgICAgIFB5dGhvbiBkaWN0LiAgRXF1aXZhbGVudCB0byBhdHRyaWIua2V5cygpCgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLmF0dHJpYi5rZXlzKCkKCiAgICBkZWYgaXRlbXMoc2VsZik6CiAgICAgICAgIiIiR2V0IGVsZW1lbnQgYXR0cmlidXRlcyBhcyBhIHNlcXVlbmNlLgoKICAgICAgICBUaGUgYXR0cmlidXRlcyBhcmUgcmV0dXJuZWQgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgRXF1aXZhbGVudCB0bwogICAgICAgIGF0dHJpYi5pdGVtcygpLgoKICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIChuYW1lLCB2YWx1ZSkgdHVwbGVzLgoKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5hdHRyaWIuaXRlbXMoKQoKICAgIGRlZiBpdGVyKHNlbGYsIHRhZz1Ob25lKToKICAgICAgICAiIiJDcmVhdGUgdHJlZSBpdGVyYXRvci4KCiAgICAgICAgVGhlIGl0ZXJhdG9yIGxvb3BzIG92ZXIgdGhlIGVsZW1lbnQgYW5kIGFsbCBzdWJlbGVtZW50cyBpbiBkb2N1bWVudAogICAgICAgIG9yZGVyLCByZXR1cm5pbmcgYWxsIGVsZW1lbnRzIHdpdGggYSBtYXRjaGluZyB0YWcuCgogICAgICAgIElmIHRoZSB0cmVlIHN0cnVjdHVyZSBpcyBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLCBuZXcgb3IgcmVtb3ZlZAogICAgICAgIGVsZW1lbnRzIG1heSBvciBtYXkgbm90IGJlIGluY2x1ZGVkLiAgVG8gZ2V0IGEgc3RhYmxlIHNldCwgdXNlIHRoZQogICAgICAgIGxpc3QoKSBmdW5jdGlvbiBvbiB0aGUgaXRlcmF0b3IsIGFuZCBsb29wIG92ZXIgdGhlIHJlc3VsdGluZyBsaXN0LgoKICAgICAgICAqdGFnKiBpcyB3aGF0IHRhZ3MgdG8gbG9vayBmb3IgKGRlZmF1bHQgaXMgdG8gcmV0dXJuIGFsbCBlbGVtZW50cykKCiAgICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIGNvbnRhaW5pbmcgYWxsIHRoZSBtYXRjaGluZyBlbGVtZW50cy4KCiAgICAgICAgIiIiCiAgICAgICAgaWYgdGFnID09ICIqIjoKICAgICAgICAgICAgdGFnID0gTm9uZQogICAgICAgIGlmIHRhZyBpcyBOb25lIG9yIHNlbGYudGFnID09IHRhZzoKICAgICAgICAgICAgeWllbGQgc2VsZgogICAgICAgIGZvciBlIGluIHNlbGYuX2NoaWxkcmVuOgogICAgICAgICAgICB5aWVsZCBmcm9tIGUuaXRlcih0YWcpCgogICAgZGVmIGl0ZXJ0ZXh0KHNlbGYpOgogICAgICAgICIiIkNyZWF0ZSB0ZXh0IGl0ZXJhdG9yLgoKICAgICAgICBUaGUgaXRlcmF0b3IgbG9vcHMgb3ZlciB0aGUgZWxlbWVudCBhbmQgYWxsIHN1YmVsZW1lbnRzIGluIGRvY3VtZW50CiAgICAgICAgb3JkZXIsIHJldHVybmluZyBhbGwgaW5uZXIgdGV4dC4KCiAgICAgICAgIiIiCiAgICAgICAgdGFnID0gc2VsZi50YWcKICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0YWcsIHN0cikgYW5kIHRhZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdCA9IHNlbGYudGV4dAogICAgICAgIGlmIHQ6CiAgICAgICAgICAgIHlpZWxkIHQKICAgICAgICBmb3IgZSBpbiBzZWxmOgogICAgICAgICAgICB5aWVsZCBmcm9tIGUuaXRlcnRleHQoKQogICAgICAgICAgICB0ID0gZS50YWlsCiAgICAgICAgICAgIGlmIHQ6CiAgICAgICAgICAgICAgICB5aWVsZCB0CgoKZGVmIFN1YkVsZW1lbnQocGFyZW50LCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CiAgICAiIiJTdWJlbGVtZW50IGZhY3Rvcnkgd2hpY2ggY3JlYXRlcyBhbiBlbGVtZW50IGluc3RhbmNlLCBhbmQgYXBwZW5kcyBpdAogICAgdG8gYW4gZXhpc3RpbmcgcGFyZW50LgoKICAgIFRoZSBlbGVtZW50IHRhZywgYXR0cmlidXRlIG5hbWVzLCBhbmQgYXR0cmlidXRlIHZhbHVlcyBjYW4gYmUgZWl0aGVyCiAgICBieXRlcyBvciBVbmljb2RlIHN0cmluZ3MuCgogICAgKnBhcmVudCogaXMgdGhlIHBhcmVudCBlbGVtZW50LCAqdGFnKiBpcyB0aGUgc3ViZWxlbWVudHMgbmFtZSwgKmF0dHJpYiogaXMKICAgIGFuIG9wdGlvbmFsIGRpcmVjdG9yeSBjb250YWluaW5nIGVsZW1lbnQgYXR0cmlidXRlcywgKmV4dHJhKiBhcmUKICAgIGFkZGl0aW9uYWwgYXR0cmlidXRlcyBnaXZlbiBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KCiAgICAiIiIKICAgIGF0dHJpYiA9IHsqKmF0dHJpYiwgKipleHRyYX0KICAgIGVsZW1lbnQgPSBwYXJlbnQubWFrZWVsZW1lbnQodGFnLCBhdHRyaWIpCiAgICBwYXJlbnQuYXBwZW5kKGVsZW1lbnQpCiAgICByZXR1cm4gZWxlbWVudAoKCmRlZiBDb21tZW50KHRleHQ9Tm9uZSk6CiAgICAiIiJDb21tZW50IGVsZW1lbnQgZmFjdG9yeS4KCiAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBzcGVjaWFsIGVsZW1lbnQgd2hpY2ggdGhlIHN0YW5kYXJkIHNlcmlhbGl6ZXIKICAgIHNlcmlhbGl6ZXMgYXMgYW4gWE1MIGNvbW1lbnQuCgogICAgKnRleHQqIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvbW1lbnQgc3RyaW5nLgoKICAgICIiIgogICAgZWxlbWVudCA9IEVsZW1lbnQoQ29tbWVudCkKICAgIGVsZW1lbnQudGV4dCA9IHRleHQKICAgIHJldHVybiBlbGVtZW50CgoKZGVmIFByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIHRleHQ9Tm9uZSk6CiAgICAiIiJQcm9jZXNzaW5nIEluc3RydWN0aW9uIGVsZW1lbnQgZmFjdG9yeS4KCiAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBzcGVjaWFsIGVsZW1lbnQgd2hpY2ggdGhlIHN0YW5kYXJkIHNlcmlhbGl6ZXIKICAgIHNlcmlhbGl6ZXMgYXMgYW4gWE1MIGNvbW1lbnQuCgogICAgKnRhcmdldCogaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiwgKnRleHQqIGlzIGEKICAgIHN0cmluZyBjb250YWluaW5nIHRoZSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGNvbnRlbnRzLCBpZiBhbnkuCgogICAgIiIiCiAgICBlbGVtZW50ID0gRWxlbWVudChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCiAgICBlbGVtZW50LnRleHQgPSB0YXJnZXQKICAgIGlmIHRleHQ6CiAgICAgICAgZWxlbWVudC50ZXh0ID0gZWxlbWVudC50ZXh0ICsgIiAiICsgdGV4dAogICAgcmV0dXJuIGVsZW1lbnQKClBJID0gUHJvY2Vzc2luZ0luc3RydWN0aW9uCgoKY2xhc3MgUU5hbWU6CiAgICAiIiJRdWFsaWZpZWQgbmFtZSB3cmFwcGVyLgoKICAgIFRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgdG8gd3JhcCBhIFFOYW1lIGF0dHJpYnV0ZSB2YWx1ZSBpbiBvcmRlciB0byBnZXQKICAgIHByb3BlciBuYW1lc3BhY2UgaGFuZGluZyBvbiBvdXRwdXQuCgogICAgKnRleHRfb3JfdXJpKiBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBRTmFtZSB2YWx1ZSBlaXRoZXIgaW4gdGhlIGZvcm0KICAgIHt1cml9bG9jYWwsIG9yIGlmIHRoZSB0YWcgYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBVUkkgcGFydCBvZiBhIFFOYW1lLgoKICAgICp0YWcqIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHdoaWNoIGlmIGdpdmVuLCB3aWxsIG1ha2UgdGhlIGZpcnN0CiAgICBhcmd1bWVudCAodGV4dF9vcl91cmkpIGJlIGludGVycHJldGVkIGFzIGEgVVJJLCBhbmQgdGhpcyBhcmd1bWVudCAodGFnKQogICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBsb2NhbCBuYW1lLgoKICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHRfb3JfdXJpLCB0YWc9Tm9uZSk6CiAgICAgICAgaWYgdGFnOgogICAgICAgICAgICB0ZXh0X29yX3VyaSA9ICJ7JXN9JXMiICUgKHRleHRfb3JfdXJpLCB0YWcpCiAgICAgICAgc2VsZi50ZXh0ID0gdGV4dF9vcl91cmkKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnRleHQKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gJzwlcyAlcj4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnRleHQpCiAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50ZXh0KQogICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgUU5hbWUpOgogICAgICAgICAgICByZXR1cm4gc2VsZi50ZXh0IDw9IG90aGVyLnRleHQKICAgICAgICByZXR1cm4gc2VsZi50ZXh0IDw9IG90aGVyCiAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBRTmFtZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnRleHQgPCBvdGhlci50ZXh0CiAgICAgICAgcmV0dXJuIHNlbGYudGV4dCA8IG90aGVyCiAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBRTmFtZSk6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnRleHQgPj0gb3RoZXIudGV4dAogICAgICAgIHJldHVybiBzZWxmLnRleHQgPj0gb3RoZXIKICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFFOYW1lKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYudGV4dCA+IG90aGVyLnRleHQKICAgICAgICByZXR1cm4gc2VsZi50ZXh0ID4gb3RoZXIKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFFOYW1lKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYudGV4dCA9PSBvdGhlci50ZXh0CiAgICAgICAgcmV0dXJuIHNlbGYudGV4dCA9PSBvdGhlcgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCmNsYXNzIEVsZW1lbnRUcmVlOgogICAgIiIiQW4gWE1MIGVsZW1lbnQgaGllcmFyY2h5LgoKICAgIFRoaXMgY2xhc3MgYWxzbyBwcm92aWRlcyBzdXBwb3J0IGZvciBzZXJpYWxpemF0aW9uIHRvIGFuZCBmcm9tCiAgICBzdGFuZGFyZCBYTUwuCgogICAgKmVsZW1lbnQqIGlzIGFuIG9wdGlvbmFsIHJvb3QgZWxlbWVudCBub2RlLAogICAgKmZpbGUqIGlzIGFuIG9wdGlvbmFsIGZpbGUgaGFuZGxlIG9yIGZpbGUgbmFtZSBvZiBhbiBYTUwgZmlsZSB3aG9zZQogICAgY29udGVudHMgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHRyZWUgd2l0aC4KCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbGVtZW50PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgICAgIyBhc3NlcnQgZWxlbWVudCBpcyBOb25lIG9yIGlzZWxlbWVudChlbGVtZW50KQogICAgICAgIHNlbGYuX3Jvb3QgPSBlbGVtZW50ICMgZmlyc3Qgbm9kZQogICAgICAgIGlmIGZpbGU6CiAgICAgICAgICAgIHNlbGYucGFyc2UoZmlsZSkKCiAgICBkZWYgZ2V0cm9vdChzZWxmKToKICAgICAgICAiIiJSZXR1cm4gcm9vdCBlbGVtZW50IG9mIHRoaXMgdHJlZS4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fcm9vdAoKICAgIGRlZiBfc2V0cm9vdChzZWxmLCBlbGVtZW50KToKICAgICAgICAiIiJSZXBsYWNlIHJvb3QgZWxlbWVudCBvZiB0aGlzIHRyZWUuCgogICAgICAgIFRoaXMgd2lsbCBkaXNjYXJkIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIHRoZSB0cmVlIGFuZCByZXBsYWNlIGl0CiAgICAgICAgd2l0aCB0aGUgZ2l2ZW4gZWxlbWVudC4gIFVzZSB3aXRoIGNhcmUhCgogICAgICAgICIiIgogICAgICAgICMgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQogICAgICAgIHNlbGYuX3Jvb3QgPSBlbGVtZW50CgogICAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSwgcGFyc2VyPU5vbmUpOgogICAgICAgICIiIkxvYWQgZXh0ZXJuYWwgWE1MIGRvY3VtZW50IGludG8gZWxlbWVudCB0cmVlLgoKICAgICAgICAqc291cmNlKiBpcyBhIGZpbGUgbmFtZSBvciBmaWxlIG9iamVjdCwgKnBhcnNlciogaXMgYW4gb3B0aW9uYWwgcGFyc2VyCiAgICAgICAgaW5zdGFuY2UgdGhhdCBkZWZhdWx0cyB0byBYTUxQYXJzZXIuCgogICAgICAgIFBhcnNlRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBwYXJzZXIgZmFpbHMgdG8gcGFyc2UgdGhlIGRvY3VtZW50LgoKICAgICAgICBSZXR1cm5zIHRoZSByb290IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNvdXJjZSBkb2N1bWVudC4KCiAgICAgICAgIiIiCiAgICAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKICAgICAgICBpZiBub3QgaGFzYXR0cihzb3VyY2UsICJyZWFkIik6CiAgICAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAicmIiKQogICAgICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBwYXJzZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgICMgSWYgbm8gcGFyc2VyIHdhcyBzcGVjaWZpZWQsIGNyZWF0ZSBhIGRlZmF1bHQgWE1MUGFyc2VyCiAgICAgICAgICAgICAgICBwYXJzZXIgPSBYTUxQYXJzZXIoKQogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihwYXJzZXIsICdfcGFyc2Vfd2hvbGUnKToKICAgICAgICAgICAgICAgICAgICAjIFRoZSBkZWZhdWx0IFhNTFBhcnNlciwgd2hlbiBpdCBjb21lcyBmcm9tIGFuIGFjY2VsZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICMgY2FuIGRlZmluZSBhbiBpbnRlcm5hbCBfcGFyc2Vfd2hvbGUgQVBJIGZvciBlZmZpY2llbmN5LgogICAgICAgICAgICAgICAgICAgICMgSXQgY2FuIGJlIHVzZWQgdG8gcGFyc2UgdGhlIHdob2xlIHNvdXJjZSB3aXRob3V0IGZlZWRpbmcKICAgICAgICAgICAgICAgICAgICAjIGl0IHdpdGggY2h1bmtzLgogICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuX3BhcnNlX3dob2xlKHNvdXJjZSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm9vdAogICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDY1NTM2KQogICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpCiAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuY2xvc2UoKQogICAgICAgICAgICByZXR1cm4gc2VsZi5fcm9vdAogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGlmIGNsb3NlX3NvdXJjZToKICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCgogICAgZGVmIGl0ZXIoc2VsZiwgdGFnPU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSBhbmQgcmV0dXJuIHRyZWUgaXRlcmF0b3IgZm9yIHRoZSByb290IGVsZW1lbnQuCgogICAgICAgIFRoZSBpdGVyYXRvciBsb29wcyBvdmVyIGFsbCBlbGVtZW50cyBpbiB0aGlzIHRyZWUsIGluIGRvY3VtZW50IG9yZGVyLgoKICAgICAgICAqdGFnKiBpcyBhIHN0cmluZyB3aXRoIHRoZSB0YWcgbmFtZSB0byBpdGVyYXRlIG92ZXIKICAgICAgICAoZGVmYXVsdCBpcyB0byByZXR1cm4gYWxsIGVsZW1lbnRzKS4KCiAgICAgICAgIiIiCiAgICAgICAgIyBhc3NlcnQgc2VsZi5fcm9vdCBpcyBub3QgTm9uZQogICAgICAgIHJldHVybiBzZWxmLl9yb290Lml0ZXIodGFnKQoKICAgIGRlZiBmaW5kKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSk6CiAgICAgICAgIiIiRmluZCBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGJ5IHRhZyBuYW1lIG9yIHBhdGguCgogICAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmQocGF0aCksIHdoaWNoIGlzIEVsZW1lbnQuZmluZCgpCgogICAgICAgICpwYXRoKiBpcyBhIHN0cmluZyBoYXZpbmcgZWl0aGVyIGFuIGVsZW1lbnQgdGFnIG9yIGFuIFhQYXRoLAogICAgICAgICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCgogICAgICAgIFJldHVybiB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCwgb3IgTm9uZSBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4KCiAgICAgICAgIiIiCiAgICAgICAgIyBhc3NlcnQgc2VsZi5fcm9vdCBpcyBub3QgTm9uZQogICAgICAgIGlmIHBhdGhbOjFdID09ICIvIjoKICAgICAgICAgICAgcGF0aCA9ICIuIiArIHBhdGgKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICJUaGlzIHNlYXJjaCBpcyBicm9rZW4gaW4gMS4zIGFuZCBlYXJsaWVyLCBhbmQgd2lsbCBiZSAiCiAgICAgICAgICAgICAgICAiZml4ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gIElmIHlvdSByZWx5IG9uIHRoZSBjdXJyZW50ICIKICAgICAgICAgICAgICAgICJiZWhhdmlvdXIsIGNoYW5nZSBpdCB0byAlciIgJSBwYXRoLAogICAgICAgICAgICAgICAgRnV0dXJlV2FybmluZywgc3RhY2tsZXZlbD0yCiAgICAgICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIHNlbGYuX3Jvb3QuZmluZChwYXRoLCBuYW1lc3BhY2VzKQoKICAgIGRlZiBmaW5kdGV4dChzZWxmLCBwYXRoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSk6CiAgICAgICAgIiIiRmluZCBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGJ5IHRhZyBuYW1lIG9yIHBhdGguCgogICAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmR0ZXh0KHBhdGgpLCAgd2hpY2ggaXMgRWxlbWVudC5maW5kdGV4dCgpCgogICAgICAgICpwYXRoKiBpcyBhIHN0cmluZyBoYXZpbmcgZWl0aGVyIGFuIGVsZW1lbnQgdGFnIG9yIGFuIFhQYXRoLAogICAgICAgICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCgogICAgICAgIFJldHVybiB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCwgb3IgTm9uZSBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4KCiAgICAgICAgIiIiCiAgICAgICAgIyBhc3NlcnQgc2VsZi5fcm9vdCBpcyBub3QgTm9uZQogICAgICAgIGlmIHBhdGhbOjFdID09ICIvIjoKICAgICAgICAgICAgcGF0aCA9ICIuIiArIHBhdGgKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICJUaGlzIHNlYXJjaCBpcyBicm9rZW4gaW4gMS4zIGFuZCBlYXJsaWVyLCBhbmQgd2lsbCBiZSAiCiAgICAgICAgICAgICAgICAiZml4ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gIElmIHlvdSByZWx5IG9uIHRoZSBjdXJyZW50ICIKICAgICAgICAgICAgICAgICJiZWhhdmlvdXIsIGNoYW5nZSBpdCB0byAlciIgJSBwYXRoLAogICAgICAgICAgICAgICAgRnV0dXJlV2FybmluZywgc3RhY2tsZXZlbD0yCiAgICAgICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIHNlbGYuX3Jvb3QuZmluZHRleHQocGF0aCwgZGVmYXVsdCwgbmFtZXNwYWNlcykKCiAgICBkZWYgZmluZGFsbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpOgogICAgICAgICIiIkZpbmQgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzIGJ5IHRhZyBuYW1lIG9yIHBhdGguCgogICAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmRhbGwocGF0aCksIHdoaWNoIGlzIEVsZW1lbnQuZmluZGFsbCgpLgoKICAgICAgICAqcGF0aCogaXMgYSBzdHJpbmcgaGF2aW5nIGVpdGhlciBhbiBlbGVtZW50IHRhZyBvciBhbiBYUGF0aCwKICAgICAgICAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXggdG8gZnVsbCBuYW1lLgoKICAgICAgICBSZXR1cm4gbGlzdCBjb250YWluaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KCiAgICAgICAgIiIiCiAgICAgICAgIyBhc3NlcnQgc2VsZi5fcm9vdCBpcyBub3QgTm9uZQogICAgICAgIGlmIHBhdGhbOjFdID09ICIvIjoKICAgICAgICAgICAgcGF0aCA9ICIuIiArIHBhdGgKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICJUaGlzIHNlYXJjaCBpcyBicm9rZW4gaW4gMS4zIGFuZCBlYXJsaWVyLCBhbmQgd2lsbCBiZSAiCiAgICAgICAgICAgICAgICAiZml4ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gIElmIHlvdSByZWx5IG9uIHRoZSBjdXJyZW50ICIKICAgICAgICAgICAgICAgICJiZWhhdmlvdXIsIGNoYW5nZSBpdCB0byAlciIgJSBwYXRoLAogICAgICAgICAgICAgICAgRnV0dXJlV2FybmluZywgc3RhY2tsZXZlbD0yCiAgICAgICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIHNlbGYuX3Jvb3QuZmluZGFsbChwYXRoLCBuYW1lc3BhY2VzKQoKICAgIGRlZiBpdGVyZmluZChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpOgogICAgICAgICIiIkZpbmQgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzIGJ5IHRhZyBuYW1lIG9yIHBhdGguCgogICAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLml0ZXJmaW5kKHBhdGgpLCB3aGljaCBpcyBlbGVtZW50Lml0ZXJmaW5kKCkKCiAgICAgICAgKnBhdGgqIGlzIGEgc3RyaW5nIGhhdmluZyBlaXRoZXIgYW4gZWxlbWVudCB0YWcgb3IgYW4gWFBhdGgsCiAgICAgICAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KCiAgICAgICAgUmV0dXJuIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KCiAgICAgICAgIiIiCiAgICAgICAgIyBhc3NlcnQgc2VsZi5fcm9vdCBpcyBub3QgTm9uZQogICAgICAgIGlmIHBhdGhbOjFdID09ICIvIjoKICAgICAgICAgICAgcGF0aCA9ICIuIiArIHBhdGgKICAgICAgICAgICAgd2FybmluZ3Mud2FybigKICAgICAgICAgICAgICAgICJUaGlzIHNlYXJjaCBpcyBicm9rZW4gaW4gMS4zIGFuZCBlYXJsaWVyLCBhbmQgd2lsbCBiZSAiCiAgICAgICAgICAgICAgICAiZml4ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gIElmIHlvdSByZWx5IG9uIHRoZSBjdXJyZW50ICIKICAgICAgICAgICAgICAgICJiZWhhdmlvdXIsIGNoYW5nZSBpdCB0byAlciIgJSBwYXRoLAogICAgICAgICAgICAgICAgRnV0dXJlV2FybmluZywgc3RhY2tsZXZlbD0yCiAgICAgICAgICAgICAgICApCiAgICAgICAgcmV0dXJuIHNlbGYuX3Jvb3QuaXRlcmZpbmQocGF0aCwgbmFtZXNwYWNlcykKCiAgICBkZWYgd3JpdGUoc2VsZiwgZmlsZV9vcl9maWxlbmFtZSwKICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLAogICAgICAgICAgICAgIHhtbF9kZWNsYXJhdGlvbj1Ob25lLAogICAgICAgICAgICAgIGRlZmF1bHRfbmFtZXNwYWNlPU5vbmUsCiAgICAgICAgICAgICAgbWV0aG9kPU5vbmUsICosCiAgICAgICAgICAgICAgc2hvcnRfZW1wdHlfZWxlbWVudHM9VHJ1ZSk6CiAgICAgICAgIiIiV3JpdGUgZWxlbWVudCB0cmVlIHRvIGEgZmlsZSBhcyBYTUwuCgogICAgICAgIEFyZ3VtZW50czoKICAgICAgICAgICpmaWxlX29yX2ZpbGVuYW1lKiAtLSBmaWxlIG5hbWUgb3IgYSBmaWxlIG9iamVjdCBvcGVuZWQgZm9yIHdyaXRpbmcKCiAgICAgICAgICAqZW5jb2RpbmcqIC0tIHRoZSBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQ6IFVTLUFTQ0lJKQoKICAgICAgICAgICp4bWxfZGVjbGFyYXRpb24qIC0tIGJvb2wgaW5kaWNhdGluZyBpZiBhbiBYTUwgZGVjbGFyYXRpb24gc2hvdWxkIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgb3V0cHV0LiBJZiBOb25lLCBhbiBYTUwgZGVjbGFyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFkZGVkIGlmIGVuY29kaW5nIElTIE5PVCBlaXRoZXIgb2Y6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUy1BU0NJSSwgVVRGLTgsIG9yIFVuaWNvZGUKCiAgICAgICAgICAqZGVmYXVsdF9uYW1lc3BhY2UqIC0tIHNldHMgdGhlIGRlZmF1bHQgWE1MIG5hbWVzcGFjZSAoZm9yICJ4bWxucyIpCgogICAgICAgICAgKm1ldGhvZCogLS0gZWl0aGVyICJ4bWwiIChkZWZhdWx0KSwgImh0bWwsICJ0ZXh0Iiwgb3IgImMxNG4iCgogICAgICAgICAgKnNob3J0X2VtcHR5X2VsZW1lbnRzKiAtLSBjb250cm9scyB0aGUgZm9ybWF0dGluZyBvZiBlbGVtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW4gbm8gY29udGVudC4gSWYgVHJ1ZSAoZGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhleSBhcmUgZW1pdHRlZCBhcyBhIHNpbmdsZSBzZWxmLWNsb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsIG90aGVyd2lzZSB0aGV5IGFyZSBlbWl0dGVkIGFzIGEgcGFpcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBzdGFydC9lbmQgdGFncwoKICAgICAgICAiIiIKICAgICAgICBpZiBub3QgbWV0aG9kOgogICAgICAgICAgICBtZXRob2QgPSAieG1sIgogICAgICAgIGVsaWYgbWV0aG9kIG5vdCBpbiBfc2VyaWFsaXplOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIG1ldGhvZCAlciIgJSBtZXRob2QpCiAgICAgICAgaWYgbm90IGVuY29kaW5nOgogICAgICAgICAgICBpZiBtZXRob2QgPT0gImMxNG4iOgogICAgICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJ1cy1hc2NpaSIKICAgICAgICB3aXRoIF9nZXRfd3JpdGVyKGZpbGVfb3JfZmlsZW5hbWUsIGVuY29kaW5nKSBhcyAod3JpdGUsIGRlY2xhcmVkX2VuY29kaW5nKToKICAgICAgICAgICAgaWYgbWV0aG9kID09ICJ4bWwiIGFuZCAoeG1sX2RlY2xhcmF0aW9uIG9yCiAgICAgICAgICAgICAgICAgICAgKHhtbF9kZWNsYXJhdGlvbiBpcyBOb25lIGFuZAogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZy5sb3dlcigpICE9ICJ1bmljb2RlIiBhbmQKICAgICAgICAgICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcubG93ZXIoKSBub3QgaW4gKCJ1dGYtOCIsICJ1cy1hc2NpaSIpKSk6CiAgICAgICAgICAgICAgICB3cml0ZSgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIgJSAoCiAgICAgICAgICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcsKSkKICAgICAgICAgICAgaWYgbWV0aG9kID09ICJ0ZXh0IjoKICAgICAgICAgICAgICAgIF9zZXJpYWxpemVfdGV4dCh3cml0ZSwgc2VsZi5fcm9vdCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHFuYW1lcywgbmFtZXNwYWNlcyA9IF9uYW1lc3BhY2VzKHNlbGYuX3Jvb3QsIGRlZmF1bHRfbmFtZXNwYWNlKQogICAgICAgICAgICAgICAgc2VyaWFsaXplID0gX3NlcmlhbGl6ZVttZXRob2RdCiAgICAgICAgICAgICAgICBzZXJpYWxpemUod3JpdGUsIHNlbGYuX3Jvb3QsIHFuYW1lcywgbmFtZXNwYWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydF9lbXB0eV9lbGVtZW50cz1zaG9ydF9lbXB0eV9lbGVtZW50cykKCiAgICBkZWYgd3JpdGVfYzE0bihzZWxmLCBmaWxlKToKICAgICAgICAjIGx4bWwuZXRyZWUgY29tcGF0aWJpbGl0eS4gIHVzZSBvdXRwdXQgbWV0aG9kIGluc3RlYWQKICAgICAgICByZXR1cm4gc2VsZi53cml0ZShmaWxlLCBtZXRob2Q9ImMxNG4iKQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHNlcmlhbGl6YXRpb24gc3VwcG9ydAoKQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKZGVmIF9nZXRfd3JpdGVyKGZpbGVfb3JfZmlsZW5hbWUsIGVuY29kaW5nKToKICAgICMgcmV0dXJucyB0ZXh0IHdyaXRlIG1ldGhvZCBhbmQgcmVsZWFzZSBhbGwgcmVzb3VyY2VzIGFmdGVyIHVzaW5nCiAgICB0cnk6CiAgICAgICAgd3JpdGUgPSBmaWxlX29yX2ZpbGVuYW1lLndyaXRlCiAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIyBmaWxlX29yX2ZpbGVuYW1lIGlzIGEgZmlsZSBuYW1lCiAgICAgICAgaWYgZW5jb2RpbmcubG93ZXIoKSA9PSAidW5pY29kZSI6CiAgICAgICAgICAgIGVuY29kaW5nPSJ1dGYtOCIKICAgICAgICB3aXRoIG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgInciLCBlbmNvZGluZz1lbmNvZGluZywKICAgICAgICAgICAgICAgICAgZXJyb3JzPSJ4bWxjaGFycmVmcmVwbGFjZSIpIGFzIGZpbGU6CiAgICAgICAgICAgIHlpZWxkIGZpbGUud3JpdGUsIGVuY29kaW5nCiAgICBlbHNlOgogICAgICAgICMgZmlsZV9vcl9maWxlbmFtZSBpcyBhIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAjIGVuY29kaW5nIGRldGVybWluZXMgaWYgaXQgaXMgYSB0ZXh0IG9yIGJpbmFyeSB3cml0ZXIKICAgICAgICBpZiBlbmNvZGluZy5sb3dlcigpID09ICJ1bmljb2RlIjoKICAgICAgICAgICAgIyB1c2UgYSB0ZXh0IHdyaXRlciBhcyBpcwogICAgICAgICAgICB5aWVsZCB3cml0ZSwgZ2V0YXR0cihmaWxlX29yX2ZpbGVuYW1lLCAiZW5jb2RpbmciLCBOb25lKSBvciAidXRmLTgiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyB3cmFwIGEgYmluYXJ5IHdyaXRlciB3aXRoIFRleHRJT1dyYXBwZXIKICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgogICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlX29yX2ZpbGVuYW1lLCBpby5CdWZmZXJlZElPQmFzZSk6CiAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGZpbGVfb3JfZmlsZW5hbWUKICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWxlX29yX2ZpbGVuYW1lLCBpby5SYXdJT0Jhc2UpOgogICAgICAgICAgICAgICAgICAgIGZpbGUgPSBpby5CdWZmZXJlZFdyaXRlcihmaWxlX29yX2ZpbGVuYW1lKQogICAgICAgICAgICAgICAgICAgICMgS2VlcCB0aGUgb3JpZ2luYWwgZmlsZSBvcGVuIHdoZW4gdGhlIEJ1ZmZlcmVkV3JpdGVyIGlzCiAgICAgICAgICAgICAgICAgICAgIyBkZXN0cm95ZWQKICAgICAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhmaWxlLmRldGFjaCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRvIGhhbmRsZSBwYXNzZWQgb2JqZWN0cyB0aGF0IGFyZW4ndCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAjIElPQmFzZSBoaWVyYXJjaHksIGJ1dCBqdXN0IGhhdmUgYSB3cml0ZSBtZXRob2QKICAgICAgICAgICAgICAgICAgICBmaWxlID0gaW8uQnVmZmVyZWRJT0Jhc2UoKQogICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGFibGUgPSBsYW1iZGE6IFRydWUKICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRlID0gd3JpdGUKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICMgVGV4dElPV3JhcHBlciB1c2VzIHRoaXMgbWV0aG9kcyB0byBkZXRlcm1pbmUKICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBCT00gKGZvciBVVEYtMTYsIGV0Yykgc2hvdWxkIGJlIGFkZGVkCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuc2Vla2FibGUgPSBmaWxlX29yX2ZpbGVuYW1lLnNlZWthYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudGVsbCA9IGZpbGVfb3JfZmlsZW5hbWUudGVsbAogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgZmlsZSA9IGlvLlRleHRJT1dyYXBwZXIoZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSJ4bWxjaGFycmVmcmVwbGFjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPSJcbiIpCiAgICAgICAgICAgICAgICAjIEtlZXAgdGhlIG9yaWdpbmFsIGZpbGUgb3BlbiB3aGVuIHRoZSBUZXh0SU9XcmFwcGVyIGlzCiAgICAgICAgICAgICAgICAjIGRlc3Ryb3llZAogICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2soZmlsZS5kZXRhY2gpCiAgICAgICAgICAgICAgICB5aWVsZCBmaWxlLndyaXRlLCBlbmNvZGluZwoKZGVmIF9uYW1lc3BhY2VzKGVsZW0sIGRlZmF1bHRfbmFtZXNwYWNlPU5vbmUpOgogICAgIyBpZGVudGlmeSBuYW1lc3BhY2VzIHVzZWQgaW4gdGhpcyB0cmVlCgogICAgIyBtYXBzIHFuYW1lcyB0byAqZW5jb2RlZCogcHJlZml4OmxvY2FsIG5hbWVzCiAgICBxbmFtZXMgPSB7Tm9uZTogTm9uZX0KCiAgICAjIG1hcHMgdXJpOnMgdG8gcHJlZml4ZXMKICAgIG5hbWVzcGFjZXMgPSB7fQogICAgaWYgZGVmYXVsdF9uYW1lc3BhY2U6CiAgICAgICAgbmFtZXNwYWNlc1tkZWZhdWx0X25hbWVzcGFjZV0gPSAiIgoKICAgIGRlZiBhZGRfcW5hbWUocW5hbWUpOgogICAgICAgICMgY2FsY3VsYXRlIHNlcmlhbGl6ZWQgcW5hbWUgcmVwcmVzZW50YXRpb24KICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHFuYW1lWzoxXSA9PSAieyI6CiAgICAgICAgICAgICAgICB1cmksIHRhZyA9IHFuYW1lWzE6XS5yc3BsaXQoIn0iLCAxKQogICAgICAgICAgICAgICAgcHJlZml4ID0gbmFtZXNwYWNlcy5nZXQodXJpKQogICAgICAgICAgICAgICAgaWYgcHJlZml4IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gX25hbWVzcGFjZV9tYXAuZ2V0KHVyaSkKICAgICAgICAgICAgICAgICAgICBpZiBwcmVmaXggaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gIm5zJWQiICUgbGVuKG5hbWVzcGFjZXMpCiAgICAgICAgICAgICAgICAgICAgaWYgcHJlZml4ICE9ICJ4bWwiOgogICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2VzW3VyaV0gPSBwcmVmaXgKICAgICAgICAgICAgICAgIGlmIHByZWZpeDoKICAgICAgICAgICAgICAgICAgICBxbmFtZXNbcW5hbWVdID0gIiVzOiVzIiAlIChwcmVmaXgsIHRhZykKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcW5hbWVzW3FuYW1lXSA9IHRhZyAjIGRlZmF1bHQgZWxlbWVudAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgZGVmYXVsdF9uYW1lc3BhY2U6CiAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogY2FuIHRoaXMgYmUgaGFuZGxlZCBpbiBYTUwgMS4wPwogICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgdXNlIG5vbi1xdWFsaWZpZWQgbmFtZXMgd2l0aCAiCiAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0X25hbWVzcGFjZSBvcHRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHFuYW1lc1txbmFtZV0gPSBxbmFtZQogICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHFuYW1lKQoKICAgICMgcG9wdWxhdGUgcW5hbWUgYW5kIG5hbWVzcGFjZXMgdGFibGUKICAgIGZvciBlbGVtIGluIGVsZW0uaXRlcigpOgogICAgICAgIHRhZyA9IGVsZW0udGFnCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0YWcsIFFOYW1lKToKICAgICAgICAgICAgaWYgdGFnLnRleHQgbm90IGluIHFuYW1lczoKICAgICAgICAgICAgICAgIGFkZF9xbmFtZSh0YWcudGV4dCkKICAgICAgICBlbGlmIGlzaW5zdGFuY2UodGFnLCBzdHIpOgogICAgICAgICAgICBpZiB0YWcgbm90IGluIHFuYW1lczoKICAgICAgICAgICAgICAgIGFkZF9xbmFtZSh0YWcpCiAgICAgICAgZWxpZiB0YWcgaXMgbm90IE5vbmUgYW5kIHRhZyBpcyBub3QgQ29tbWVudCBhbmQgdGFnIGlzIG5vdCBQSToKICAgICAgICAgICAgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IodGFnKQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIGVsZW0uaXRlbXMoKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIFFOYW1lKToKICAgICAgICAgICAgICAgIGtleSA9IGtleS50ZXh0CiAgICAgICAgICAgIGlmIGtleSBub3QgaW4gcW5hbWVzOgogICAgICAgICAgICAgICAgYWRkX3FuYW1lKGtleSkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgUU5hbWUpIGFuZCB2YWx1ZS50ZXh0IG5vdCBpbiBxbmFtZXM6CiAgICAgICAgICAgICAgICBhZGRfcW5hbWUodmFsdWUudGV4dCkKICAgICAgICB0ZXh0ID0gZWxlbS50ZXh0CiAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXh0LCBRTmFtZSkgYW5kIHRleHQudGV4dCBub3QgaW4gcW5hbWVzOgogICAgICAgICAgICBhZGRfcW5hbWUodGV4dC50ZXh0KQogICAgcmV0dXJuIHFuYW1lcywgbmFtZXNwYWNlcwoKZGVmIF9zZXJpYWxpemVfeG1sKHdyaXRlLCBlbGVtLCBxbmFtZXMsIG5hbWVzcGFjZXMsCiAgICAgICAgICAgICAgICAgICBzaG9ydF9lbXB0eV9lbGVtZW50cywgKiprd2FyZ3MpOgogICAgdGFnID0gZWxlbS50YWcKICAgIHRleHQgPSBlbGVtLnRleHQKICAgIGlmIHRhZyBpcyBDb21tZW50OgogICAgICAgIHdyaXRlKCI8IS0tJXMtLT4iICUgdGV4dCkKICAgIGVsaWYgdGFnIGlzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKICAgICAgICB3cml0ZSgiPD8lcz8+IiAlIHRleHQpCiAgICBlbHNlOgogICAgICAgIHRhZyA9IHFuYW1lc1t0YWddCiAgICAgICAgaWYgdGFnIGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHRleHQ6CiAgICAgICAgICAgICAgICB3cml0ZShfZXNjYXBlX2NkYXRhKHRleHQpKQogICAgICAgICAgICBmb3IgZSBpbiBlbGVtOgogICAgICAgICAgICAgICAgX3NlcmlhbGl6ZV94bWwod3JpdGUsIGUsIHFuYW1lcywgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzPXNob3J0X2VtcHR5X2VsZW1lbnRzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHdyaXRlKCI8IiArIHRhZykKICAgICAgICAgICAgaXRlbXMgPSBsaXN0KGVsZW0uaXRlbXMoKSkKICAgICAgICAgICAgaWYgaXRlbXMgb3IgbmFtZXNwYWNlczoKICAgICAgICAgICAgICAgIGlmIG5hbWVzcGFjZXM6CiAgICAgICAgICAgICAgICAgICAgZm9yIHYsIGsgaW4gc29ydGVkKG5hbWVzcGFjZXMuaXRlbXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWxhbWJkYSB4OiB4WzFdKTogICMgc29ydCBvbiBwcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgaWYgazoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAiOiIgKyBrCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCIgeG1sbnMlcz1cIiVzXCIiICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lc2NhcGVfYXR0cmliKHYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gaXRlbXM6CiAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBRTmFtZSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrLnRleHQKICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIFFOYW1lKToKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHFuYW1lc1t2LnRleHRdCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IF9lc2NhcGVfYXR0cmliKHYpCiAgICAgICAgICAgICAgICAgICAgd3JpdGUoIiAlcz1cIiVzXCIiICUgKHFuYW1lc1trXSwgdikpCiAgICAgICAgICAgIGlmIHRleHQgb3IgbGVuKGVsZW0pIG9yIG5vdCBzaG9ydF9lbXB0eV9lbGVtZW50czoKICAgICAgICAgICAgICAgIHdyaXRlKCI+IikKICAgICAgICAgICAgICAgIGlmIHRleHQ6CiAgICAgICAgICAgICAgICAgICAgd3JpdGUoX2VzY2FwZV9jZGF0YSh0ZXh0KSkKICAgICAgICAgICAgICAgIGZvciBlIGluIGVsZW06CiAgICAgICAgICAgICAgICAgICAgX3NlcmlhbGl6ZV94bWwod3JpdGUsIGUsIHFuYW1lcywgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydF9lbXB0eV9lbGVtZW50cz1zaG9ydF9lbXB0eV9lbGVtZW50cykKICAgICAgICAgICAgICAgIHdyaXRlKCI8LyIgKyB0YWcgKyAiPiIpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB3cml0ZSgiIC8+IikKICAgIGlmIGVsZW0udGFpbDoKICAgICAgICB3cml0ZShfZXNjYXBlX2NkYXRhKGVsZW0udGFpbCkpCgpIVE1MX0VNUFRZID0geyJhcmVhIiwgImJhc2UiLCAiYmFzZWZvbnQiLCAiYnIiLCAiY29sIiwgImVtYmVkIiwgImZyYW1lIiwgImhyIiwKICAgICAgICAgICAgICAiaW1nIiwgImlucHV0IiwgImlzaW5kZXgiLCAibGluayIsICJtZXRhIiwgInBhcmFtIiwgInNvdXJjZSIsCiAgICAgICAgICAgICAgInRyYWNrIiwgIndiciJ9CgpkZWYgX3NlcmlhbGl6ZV9odG1sKHdyaXRlLCBlbGVtLCBxbmFtZXMsIG5hbWVzcGFjZXMsICoqa3dhcmdzKToKICAgIHRhZyA9IGVsZW0udGFnCiAgICB0ZXh0ID0gZWxlbS50ZXh0CiAgICBpZiB0YWcgaXMgQ29tbWVudDoKICAgICAgICB3cml0ZSgiPCEtLSVzLS0+IiAlIF9lc2NhcGVfY2RhdGEodGV4dCkpCiAgICBlbGlmIHRhZyBpcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246CiAgICAgICAgd3JpdGUoIjw/JXM/PiIgJSBfZXNjYXBlX2NkYXRhKHRleHQpKQogICAgZWxzZToKICAgICAgICB0YWcgPSBxbmFtZXNbdGFnXQogICAgICAgIGlmIHRhZyBpcyBOb25lOgogICAgICAgICAgICBpZiB0ZXh0OgogICAgICAgICAgICAgICAgd3JpdGUoX2VzY2FwZV9jZGF0YSh0ZXh0KSkKICAgICAgICAgICAgZm9yIGUgaW4gZWxlbToKICAgICAgICAgICAgICAgIF9zZXJpYWxpemVfaHRtbCh3cml0ZSwgZSwgcW5hbWVzLCBOb25lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHdyaXRlKCI8IiArIHRhZykKICAgICAgICAgICAgaXRlbXMgPSBsaXN0KGVsZW0uaXRlbXMoKSkKICAgICAgICAgICAgaWYgaXRlbXMgb3IgbmFtZXNwYWNlczoKICAgICAgICAgICAgICAgIGlmIG5hbWVzcGFjZXM6CiAgICAgICAgICAgICAgICAgICAgZm9yIHYsIGsgaW4gc29ydGVkKG5hbWVzcGFjZXMuaXRlbXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWxhbWJkYSB4OiB4WzFdKTogICMgc29ydCBvbiBwcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgaWYgazoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAiOiIgKyBrCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCIgeG1sbnMlcz1cIiVzXCIiICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lc2NhcGVfYXR0cmliKHYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gaXRlbXM6CiAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBRTmFtZSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrLnRleHQKICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIFFOYW1lKToKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHFuYW1lc1t2LnRleHRdCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgdiA9IF9lc2NhcGVfYXR0cmliX2h0bWwodikKICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBoYW5kbGUgYm9vbGVhbiBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICAgICAgd3JpdGUoIiAlcz1cIiVzXCIiICUgKHFuYW1lc1trXSwgdikpCiAgICAgICAgICAgIHdyaXRlKCI+IikKICAgICAgICAgICAgbHRhZyA9IHRhZy5sb3dlcigpCiAgICAgICAgICAgIGlmIHRleHQ6CiAgICAgICAgICAgICAgICBpZiBsdGFnID09ICJzY3JpcHQiIG9yIGx0YWcgPT0gInN0eWxlIjoKICAgICAgICAgICAgICAgICAgICB3cml0ZSh0ZXh0KQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB3cml0ZShfZXNjYXBlX2NkYXRhKHRleHQpKQogICAgICAgICAgICBmb3IgZSBpbiBlbGVtOgogICAgICAgICAgICAgICAgX3NlcmlhbGl6ZV9odG1sKHdyaXRlLCBlLCBxbmFtZXMsIE5vbmUpCiAgICAgICAgICAgIGlmIGx0YWcgbm90IGluIEhUTUxfRU1QVFk6CiAgICAgICAgICAgICAgICB3cml0ZSgiPC8iICsgdGFnICsgIj4iKQogICAgaWYgZWxlbS50YWlsOgogICAgICAgIHdyaXRlKF9lc2NhcGVfY2RhdGEoZWxlbS50YWlsKSkKCmRlZiBfc2VyaWFsaXplX3RleHQod3JpdGUsIGVsZW0pOgogICAgZm9yIHBhcnQgaW4gZWxlbS5pdGVydGV4dCgpOgogICAgICAgIHdyaXRlKHBhcnQpCiAgICBpZiBlbGVtLnRhaWw6CiAgICAgICAgd3JpdGUoZWxlbS50YWlsKQoKX3NlcmlhbGl6ZSA9IHsKICAgICJ4bWwiOiBfc2VyaWFsaXplX3htbCwKICAgICJodG1sIjogX3NlcmlhbGl6ZV9odG1sLAogICAgInRleHQiOiBfc2VyaWFsaXplX3RleHQsCiMgdGhpcyBvcHRpb25hbCBtZXRob2QgaXMgaW1wb3J0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgbW9kdWxlCiMgICAiYzE0biI6IF9zZXJpYWxpemVfYzE0biwKfQoKCmRlZiByZWdpc3Rlcl9uYW1lc3BhY2UocHJlZml4LCB1cmkpOgogICAgIiIiUmVnaXN0ZXIgYSBuYW1lc3BhY2UgcHJlZml4LgoKICAgIFRoZSByZWdpc3RyeSBpcyBnbG9iYWwsIGFuZCBhbnkgZXhpc3RpbmcgbWFwcGluZyBmb3IgZWl0aGVyIHRoZQogICAgZ2l2ZW4gcHJlZml4IG9yIHRoZSBuYW1lc3BhY2UgVVJJIHdpbGwgYmUgcmVtb3ZlZC4KCiAgICAqcHJlZml4KiBpcyB0aGUgbmFtZXNwYWNlIHByZWZpeCwgKnVyaSogaXMgYSBuYW1lc3BhY2UgdXJpLiBUYWdzIGFuZAogICAgYXR0cmlidXRlcyBpbiB0aGlzIG5hbWVzcGFjZSB3aWxsIGJlIHNlcmlhbGl6ZWQgd2l0aCBwcmVmaXggaWYgcG9zc2libGUuCgogICAgVmFsdWVFcnJvciBpcyByYWlzZWQgaWYgcHJlZml4IGlzIHJlc2VydmVkIG9yIGlzIGludmFsaWQuCgogICAgIiIiCiAgICBpZiByZS5tYXRjaChyIm5zXGQrJCIsIHByZWZpeCk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHJlZml4IGZvcm1hdCByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlIikKICAgIGZvciBrLCB2IGluIGxpc3QoX25hbWVzcGFjZV9tYXAuaXRlbXMoKSk6CiAgICAgICAgaWYgayA9PSB1cmkgb3IgdiA9PSBwcmVmaXg6CiAgICAgICAgICAgIGRlbCBfbmFtZXNwYWNlX21hcFtrXQogICAgX25hbWVzcGFjZV9tYXBbdXJpXSA9IHByZWZpeAoKX25hbWVzcGFjZV9tYXAgPSB7CiAgICAjICJ3ZWxsLWtub3duIiBuYW1lc3BhY2UgcHJlZml4ZXMKICAgICJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiOiAieG1sIiwKICAgICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjogImh0bWwiLAogICAgImh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiOiAicmRmIiwKICAgICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLyI6ICJ3c2RsIiwKICAgICMgeG1sIHNjaGVtYQogICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIjogInhzIiwKICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI6ICJ4c2kiLAogICAgIyBkdWJsaW4gY29yZQogICAgImh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIjogImRjIiwKfQojIEZvciB0ZXN0cyBhbmQgdHJvdWJsZXNob290aW5nCnJlZ2lzdGVyX25hbWVzcGFjZS5fbmFtZXNwYWNlX21hcCA9IF9uYW1lc3BhY2VfbWFwCgpkZWYgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IodGV4dCk6CiAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgImNhbm5vdCBzZXJpYWxpemUgJXIgKHR5cGUgJXMpIiAlICh0ZXh0LCB0eXBlKHRleHQpLl9fbmFtZV9fKQogICAgICAgICkKCmRlZiBfZXNjYXBlX2NkYXRhKHRleHQpOgogICAgIyBlc2NhcGUgY2hhcmFjdGVyIGRhdGEKICAgIHRyeToKICAgICAgICAjIGl0J3Mgd29ydGggYXZvaWRpbmcgZG8tbm90aGluZyBjYWxscyBmb3Igc3RyaW5ncyB0aGF0IGFyZQogICAgICAgICMgc2hvcnRlciB0aGFuIDUwMCBjaGFyYWN0ZXJzLCBvciBzby4gIGFzc3VtZSB0aGF0J3MsIGJ5IGZhciwKICAgICAgICAjIHRoZSBtb3N0IGNvbW1vbiBjYXNlIGluIG1vc3QgYXBwbGljYXRpb25zLgogICAgICAgIGlmICImIiBpbiB0ZXh0OgogICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCImIiwgIiZhbXA7IikKICAgICAgICBpZiAiPCIgaW4gdGV4dDoKICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgiPCIsICImbHQ7IikKICAgICAgICBpZiAiPiIgaW4gdGV4dDoKICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgiPiIsICImZ3Q7IikKICAgICAgICByZXR1cm4gdGV4dAogICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICBfcmFpc2Vfc2VyaWFsaXphdGlvbl9lcnJvcih0ZXh0KQoKZGVmIF9lc2NhcGVfYXR0cmliKHRleHQpOgogICAgIyBlc2NhcGUgYXR0cmlidXRlIHZhbHVlCiAgICB0cnk6CiAgICAgICAgaWYgIiYiIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIiYiLCAiJmFtcDsiKQogICAgICAgIGlmICI8IiBpbiB0ZXh0OgogICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCI8IiwgIiZsdDsiKQogICAgICAgIGlmICI+IiBpbiB0ZXh0OgogICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCI+IiwgIiZndDsiKQogICAgICAgIGlmICJcIiIgaW4gdGV4dDoKICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgiXCIiLCAiJnF1b3Q7IikKICAgICAgICAjIEFsdGhvdWdoIHNlY3Rpb24gMi4xMSBvZiB0aGUgWE1MIHNwZWNpZmljYXRpb24gc3RhdGVzIHRoYXQgQ1Igb3IKICAgICAgICAjIENSIExOIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGp1c3QgTE4sIGl0IGFwcGxpZXMgb25seSB0byBFT0xOcwogICAgICAgICMgd2hpY2ggdGFrZSBwYXJ0IG9mIG9yZ2FuaXppbmcgZmlsZSBpbnRvIGxpbmVzLiBXaXRoaW4gYXR0cmlidXRlcywKICAgICAgICAjIHdlIGFyZSByZXBsYWNpbmcgdGhlc2Ugd2l0aCBlbnRpdHkgbnVtYmVycywgc28gdGhleSBkbyBub3QgY291bnQuCiAgICAgICAgIyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNzZWMtbGluZS1lbmRzCiAgICAgICAgIyBUaGUgY3VycmVudCBzb2x1dGlvbiwgY29udGFpbmVkIGluIGZvbGxvd2luZyBzaXggbGluZXMsIHdhcwogICAgICAgICMgZGlzY3Vzc2VkIGluIGlzc3VlIDE3NTgyIGFuZCAzOTAxMS4KICAgICAgICBpZiAiXHIiIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlxyIiwgIiYjMTM7IikKICAgICAgICBpZiAiXG4iIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlxuIiwgIiYjMTA7IikKICAgICAgICBpZiAiXHQiIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlx0IiwgIiYjMDk7IikKICAgICAgICByZXR1cm4gdGV4dAogICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICBfcmFpc2Vfc2VyaWFsaXphdGlvbl9lcnJvcih0ZXh0KQoKZGVmIF9lc2NhcGVfYXR0cmliX2h0bWwodGV4dCk6CiAgICAjIGVzY2FwZSBhdHRyaWJ1dGUgdmFsdWUKICAgIHRyeToKICAgICAgICBpZiAiJiIgaW4gdGV4dDoKICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgiJiIsICImYW1wOyIpCiAgICAgICAgaWYgIj4iIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIj4iLCAiJmd0OyIpCiAgICAgICAgaWYgIlwiIiBpbiB0ZXh0OgogICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCJcIiIsICImcXVvdDsiKQogICAgICAgIHJldHVybiB0ZXh0CiAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHRleHQpCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpkZWYgdG9zdHJpbmcoZWxlbWVudCwgZW5jb2Rpbmc9Tm9uZSwgbWV0aG9kPU5vbmUsICosCiAgICAgICAgICAgICB4bWxfZGVjbGFyYXRpb249Tm9uZSwgZGVmYXVsdF9uYW1lc3BhY2U9Tm9uZSwKICAgICAgICAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzPVRydWUpOgogICAgIiIiR2VuZXJhdGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFhNTCBlbGVtZW50LgoKICAgIEFsbCBzdWJlbGVtZW50cyBhcmUgaW5jbHVkZWQuICBJZiBlbmNvZGluZyBpcyAidW5pY29kZSIsIGEgc3RyaW5nCiAgICBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIGEgYnl0ZXN0cmluZyBpcyByZXR1cm5lZC4KCiAgICAqZWxlbWVudCogaXMgYW4gRWxlbWVudCBpbnN0YW5jZSwgKmVuY29kaW5nKiBpcyBhbiBvcHRpb25hbCBvdXRwdXQKICAgIGVuY29kaW5nIGRlZmF1bHRpbmcgdG8gVVMtQVNDSUksICptZXRob2QqIGlzIGFuIG9wdGlvbmFsIG91dHB1dCB3aGljaCBjYW4KICAgIGJlIG9uZSBvZiAieG1sIiAoZGVmYXVsdCksICJodG1sIiwgInRleHQiIG9yICJjMTRuIiwgKmRlZmF1bHRfbmFtZXNwYWNlKgogICAgc2V0cyB0aGUgZGVmYXVsdCBYTUwgbmFtZXNwYWNlIChmb3IgInhtbG5zIikuCgogICAgUmV0dXJucyBhbiAob3B0aW9uYWxseSkgZW5jb2RlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgWE1MIGRhdGEuCgogICAgIiIiCiAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpIGlmIGVuY29kaW5nID09ICd1bmljb2RlJyBlbHNlIGlvLkJ5dGVzSU8oKQogICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3RyZWFtLCBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbF9kZWNsYXJhdGlvbj14bWxfZGVjbGFyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X25hbWVzcGFjZT1kZWZhdWx0X25hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD1tZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydF9lbXB0eV9lbGVtZW50cz1zaG9ydF9lbXB0eV9lbGVtZW50cykKICAgIHJldHVybiBzdHJlYW0uZ2V0dmFsdWUoKQoKY2xhc3MgX0xpc3REYXRhU3RyZWFtKGlvLkJ1ZmZlcmVkSU9CYXNlKToKICAgICIiIkFuIGF1eGlsaWFyeSBzdHJlYW0gYWNjdW11bGF0aW5nIGludG8gYSBsaXN0IHJlZmVyZW5jZS4iIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsc3QpOgogICAgICAgIHNlbGYubHN0ID0gbHN0CgogICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHNlZWthYmxlKHNlbGYpOgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIHdyaXRlKHNlbGYsIGIpOgogICAgICAgIHNlbGYubHN0LmFwcGVuZChiKQoKICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgIHJldHVybiBsZW4oc2VsZi5sc3QpCgpkZWYgdG9zdHJpbmdsaXN0KGVsZW1lbnQsIGVuY29kaW5nPU5vbmUsIG1ldGhvZD1Ob25lLCAqLAogICAgICAgICAgICAgICAgIHhtbF9kZWNsYXJhdGlvbj1Ob25lLCBkZWZhdWx0X25hbWVzcGFjZT1Ob25lLAogICAgICAgICAgICAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzPVRydWUpOgogICAgbHN0ID0gW10KICAgIHN0cmVhbSA9IF9MaXN0RGF0YVN0cmVhbShsc3QpCiAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzdHJlYW0sIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sX2RlY2xhcmF0aW9uPXhtbF9kZWNsYXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfbmFtZXNwYWNlPWRlZmF1bHRfbmFtZXNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPW1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzPXNob3J0X2VtcHR5X2VsZW1lbnRzKQogICAgcmV0dXJuIGxzdAoKCmRlZiBkdW1wKGVsZW0pOgogICAgIiIiV3JpdGUgZWxlbWVudCB0cmVlIG9yIGVsZW1lbnQgc3RydWN0dXJlIHRvIHN5cy5zdGRvdXQuCgogICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBmb3IgZGVidWdnaW5nIG9ubHkuCgogICAgKmVsZW0qIGlzIGVpdGhlciBhbiBFbGVtZW50VHJlZSwgb3IgYSBzaW5nbGUgRWxlbWVudC4gIFRoZSBleGFjdCBvdXRwdXQKICAgIGZvcm1hdCBpcyBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQuICBJbiB0aGlzIHZlcnNpb24sIGl0J3Mgd3JpdHRlbiBhcyBhbgogICAgb3JkaW5hcnkgWE1MIGZpbGUuCgogICAgIiIiCiAgICAjIGRlYnVnZ2luZwogICAgaWYgbm90IGlzaW5zdGFuY2UoZWxlbSwgRWxlbWVudFRyZWUpOgogICAgICAgIGVsZW0gPSBFbGVtZW50VHJlZShlbGVtKQogICAgZWxlbS53cml0ZShzeXMuc3Rkb3V0LCBlbmNvZGluZz0idW5pY29kZSIpCiAgICB0YWlsID0gZWxlbS5nZXRyb290KCkudGFpbAogICAgaWYgbm90IHRhaWwgb3IgdGFpbFstMV0gIT0gIlxuIjoKICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCgoKZGVmIGluZGVudCh0cmVlLCBzcGFjZT0iICAiLCBsZXZlbD0wKToKICAgICIiIkluZGVudCBhbiBYTUwgZG9jdW1lbnQgYnkgaW5zZXJ0aW5nIG5ld2xpbmVzIGFuZCBpbmRlbnRhdGlvbiBzcGFjZQogICAgYWZ0ZXIgZWxlbWVudHMuCgogICAgKnRyZWUqIGlzIHRoZSBFbGVtZW50VHJlZSBvciBFbGVtZW50IHRvIG1vZGlmeS4gIFRoZSAocm9vdCkgZWxlbWVudAogICAgaXRzZWxmIHdpbGwgbm90IGJlIGNoYW5nZWQsIGJ1dCB0aGUgdGFpbCB0ZXh0IG9mIGFsbCBlbGVtZW50cyBpbiBpdHMKICAgIHN1YnRyZWUgd2lsbCBiZSBhZGFwdGVkLgoKICAgICpzcGFjZSogaXMgdGhlIHdoaXRlc3BhY2UgdG8gaW5zZXJ0IGZvciBlYWNoIGluZGVudGF0aW9uIGxldmVsLCB0d28KICAgIHNwYWNlIGNoYXJhY3RlcnMgYnkgZGVmYXVsdC4KCiAgICAqbGV2ZWwqIGlzIHRoZSBpbml0aWFsIGluZGVudGF0aW9uIGxldmVsLiBTZXR0aW5nIHRoaXMgdG8gYSBoaWdoZXIKICAgIHZhbHVlIHRoYW4gMCBjYW4gYmUgdXNlZCBmb3IgaW5kZW50aW5nIHN1YnRyZWVzIHRoYXQgYXJlIG1vcmUgZGVlcGx5CiAgICBuZXN0ZWQgaW5zaWRlIG9mIGEgZG9jdW1lbnQuCiAgICAiIiIKICAgIGlmIGlzaW5zdGFuY2UodHJlZSwgRWxlbWVudFRyZWUpOgogICAgICAgIHRyZWUgPSB0cmVlLmdldHJvb3QoKQogICAgaWYgbGV2ZWwgPCAwOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJJbml0aWFsIGluZGVudGF0aW9uIGxldmVsIG11c3QgYmUgPj0gMCwgZ290IHtsZXZlbH0iKQogICAgaWYgbm90IGxlbih0cmVlKToKICAgICAgICByZXR1cm4KCiAgICAjIFJlZHVjZSB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uIGJ5IHJldXNpbmcgaW5kZW50YXRpb24gc3RyaW5ncy4KICAgIGluZGVudGF0aW9ucyA9IFsiXG4iICsgbGV2ZWwgKiBzcGFjZV0KCiAgICBkZWYgX2luZGVudF9jaGlsZHJlbihlbGVtLCBsZXZlbCk6CiAgICAgICAgIyBTdGFydCBhIG5ldyBpbmRlbnRhdGlvbiBsZXZlbCBmb3IgdGhlIGZpcnN0IGNoaWxkLgogICAgICAgIGNoaWxkX2xldmVsID0gbGV2ZWwgKyAxCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjaGlsZF9pbmRlbnRhdGlvbiA9IGluZGVudGF0aW9uc1tjaGlsZF9sZXZlbF0KICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgY2hpbGRfaW5kZW50YXRpb24gPSBpbmRlbnRhdGlvbnNbbGV2ZWxdICsgc3BhY2UKICAgICAgICAgICAgaW5kZW50YXRpb25zLmFwcGVuZChjaGlsZF9pbmRlbnRhdGlvbikKCiAgICAgICAgaWYgbm90IGVsZW0udGV4dCBvciBub3QgZWxlbS50ZXh0LnN0cmlwKCk6CiAgICAgICAgICAgIGVsZW0udGV4dCA9IGNoaWxkX2luZGVudGF0aW9uCgogICAgICAgIGZvciBjaGlsZCBpbiBlbGVtOgogICAgICAgICAgICBpZiBsZW4oY2hpbGQpOgogICAgICAgICAgICAgICAgX2luZGVudF9jaGlsZHJlbihjaGlsZCwgY2hpbGRfbGV2ZWwpCiAgICAgICAgICAgIGlmIG5vdCBjaGlsZC50YWlsIG9yIG5vdCBjaGlsZC50YWlsLnN0cmlwKCk6CiAgICAgICAgICAgICAgICBjaGlsZC50YWlsID0gY2hpbGRfaW5kZW50YXRpb24KCiAgICAgICAgIyBEZWRlbnQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgYnkgb3ZlcndyaXRpbmcgdGhlIHByZXZpb3VzIGluZGVudGF0aW9uLgogICAgICAgIGlmIG5vdCBjaGlsZC50YWlsLnN0cmlwKCk6CiAgICAgICAgICAgIGNoaWxkLnRhaWwgPSBpbmRlbnRhdGlvbnNbbGV2ZWxdCgogICAgX2luZGVudF9jaGlsZHJlbih0cmVlLCAwKQoKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBwYXJzaW5nCgoKZGVmIHBhcnNlKHNvdXJjZSwgcGFyc2VyPU5vbmUpOgogICAgIiIiUGFyc2UgWE1MIGRvY3VtZW50IGludG8gZWxlbWVudCB0cmVlLgoKICAgICpzb3VyY2UqIGlzIGEgZmlsZW5hbWUgb3IgZmlsZSBvYmplY3QgY29udGFpbmluZyBYTUwgZGF0YSwKICAgICpwYXJzZXIqIGlzIGFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZSBkZWZhdWx0aW5nIHRvIFhNTFBhcnNlci4KCiAgICBSZXR1cm4gYW4gRWxlbWVudFRyZWUgaW5zdGFuY2UuCgogICAgIiIiCiAgICB0cmVlID0gRWxlbWVudFRyZWUoKQogICAgdHJlZS5wYXJzZShzb3VyY2UsIHBhcnNlcikKICAgIHJldHVybiB0cmVlCgoKZGVmIGl0ZXJwYXJzZShzb3VyY2UsIGV2ZW50cz1Ob25lLCBwYXJzZXI9Tm9uZSk6CiAgICAiIiJJbmNyZW1lbnRhbGx5IHBhcnNlIFhNTCBkb2N1bWVudCBpbnRvIEVsZW1lbnRUcmVlLgoKICAgIFRoaXMgY2xhc3MgYWxzbyByZXBvcnRzIHdoYXQncyBnb2luZyBvbiB0byB0aGUgdXNlciBiYXNlZCBvbiB0aGUKICAgICpldmVudHMqIGl0IGlzIGluaXRpYWxpemVkIHdpdGguICBUaGUgc3VwcG9ydGVkIGV2ZW50cyBhcmUgdGhlIHN0cmluZ3MKICAgICJzdGFydCIsICJlbmQiLCAic3RhcnQtbnMiIGFuZCAiZW5kLW5zIiAodGhlICJucyIgZXZlbnRzIGFyZSB1c2VkIHRvIGdldAogICAgZGV0YWlsZWQgbmFtZXNwYWNlIGluZm9ybWF0aW9uKS4gIElmICpldmVudHMqIGlzIG9taXR0ZWQsIG9ubHkKICAgICJlbmQiIGV2ZW50cyBhcmUgcmVwb3J0ZWQuCgogICAgKnNvdXJjZSogaXMgYSBmaWxlbmFtZSBvciBmaWxlIG9iamVjdCBjb250YWluaW5nIFhNTCBkYXRhLCAqZXZlbnRzKiBpcwogICAgYSBsaXN0IG9mIGV2ZW50cyB0byByZXBvcnQgYmFjaywgKnBhcnNlciogaXMgYW4gb3B0aW9uYWwgcGFyc2VyIGluc3RhbmNlLgoKICAgIFJldHVybnMgYW4gaXRlcmF0b3IgcHJvdmlkaW5nIChldmVudCwgZWxlbSkgcGFpcnMuCgogICAgIiIiCiAgICAjIFVzZSB0aGUgaW50ZXJuYWwsIHVuZG9jdW1lbnRlZCBfcGFyc2VyIGFyZ3VtZW50IGZvciBub3c7IFdoZW4gdGhlCiAgICAjIHBhcnNlciBhcmd1bWVudCBvZiBpdGVycGFyc2UgaXMgcmVtb3ZlZCwgdGhpcyBjYW4gYmUga2lsbGVkLgogICAgcHVsbHBhcnNlciA9IFhNTFB1bGxQYXJzZXIoZXZlbnRzPWV2ZW50cywgX3BhcnNlcj1wYXJzZXIpCgogICAgZGVmIGl0ZXJhdG9yKHNvdXJjZSk6CiAgICAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgInJlYWQiKToKICAgICAgICAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAicmIiKQogICAgICAgICAgICAgICAgY2xvc2Vfc291cmNlID0gVHJ1ZQogICAgICAgICAgICB5aWVsZCBOb25lCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHB1bGxwYXJzZXIucmVhZF9ldmVudHMoKQogICAgICAgICAgICAgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlcgogICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDE2ICogMTAyNCkKICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBwdWxscGFyc2VyLmZlZWQoZGF0YSkKICAgICAgICAgICAgcm9vdCA9IHB1bGxwYXJzZXIuX2Nsb3NlX2FuZF9yZXR1cm5fcm9vdCgpCiAgICAgICAgICAgIHlpZWxkIGZyb20gcHVsbHBhcnNlci5yZWFkX2V2ZW50cygpCiAgICAgICAgICAgIGl0LnJvb3QgPSByb290CiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgaWYgY2xvc2Vfc291cmNlOgogICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKCiAgICBjbGFzcyBJdGVyUGFyc2VJdGVyYXRvcihjb2xsZWN0aW9ucy5hYmMuSXRlcmF0b3IpOgogICAgICAgIF9fbmV4dF9fID0gaXRlcmF0b3Ioc291cmNlKS5fX25leHRfXwogICAgaXQgPSBJdGVyUGFyc2VJdGVyYXRvcigpCiAgICBpdC5yb290ID0gTm9uZQogICAgZGVsIGl0ZXJhdG9yLCBJdGVyUGFyc2VJdGVyYXRvcgoKICAgIG5leHQoaXQpCiAgICByZXR1cm4gaXQKCgpjbGFzcyBYTUxQdWxsUGFyc2VyOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBldmVudHM9Tm9uZSwgKiwgX3BhcnNlcj1Ob25lKToKICAgICAgICAjIFRoZSBfcGFyc2VyIGFyZ3VtZW50IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSBhbmQgbXVzdCBub3QgYmUgcmVsaWVkCiAgICAgICAgIyB1cG9uIGluIHVzZXIgY29kZS4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuCiAgICAgICAgIyBTZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzc0MSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgICAgICBzZWxmLl9ldmVudHNfcXVldWUgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCiAgICAgICAgc2VsZi5fcGFyc2VyID0gX3BhcnNlciBvciBYTUxQYXJzZXIodGFyZ2V0PVRyZWVCdWlsZGVyKCkpCiAgICAgICAgIyB3aXJlIHVwIHRoZSBwYXJzZXIgZm9yIGV2ZW50IHJlcG9ydGluZwogICAgICAgIGlmIGV2ZW50cyBpcyBOb25lOgogICAgICAgICAgICBldmVudHMgPSAoImVuZCIsKQogICAgICAgIHNlbGYuX3BhcnNlci5fc2V0ZXZlbnRzKHNlbGYuX2V2ZW50c19xdWV1ZSwgZXZlbnRzKQoKICAgIGRlZiBmZWVkKHNlbGYsIGRhdGEpOgogICAgICAgICIiIkZlZWQgZW5jb2RlZCBkYXRhIHRvIHBhcnNlci4iIiIKICAgICAgICBpZiBzZWxmLl9wYXJzZXIgaXMgTm9uZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZmVlZCgpIGNhbGxlZCBhZnRlciBlbmQgb2Ygc3RyZWFtIikKICAgICAgICBpZiBkYXRhOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKQogICAgICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgc2VsZi5fZXZlbnRzX3F1ZXVlLmFwcGVuZChleGMpCgogICAgZGVmIF9jbG9zZV9hbmRfcmV0dXJuX3Jvb3Qoc2VsZik6CiAgICAgICAgIyBpdGVycGFyc2UgbmVlZHMgdGhpcyB0byBzZXQgaXRzIHJvb3QgYXR0cmlidXRlIHByb3Blcmx5IDooCiAgICAgICAgcm9vdCA9IHNlbGYuX3BhcnNlci5jbG9zZSgpCiAgICAgICAgc2VsZi5fcGFyc2VyID0gTm9uZQogICAgICAgIHJldHVybiByb290CgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIkZpbmlzaCBmZWVkaW5nIGRhdGEgdG8gcGFyc2VyLgoKICAgICAgICBVbmxpa2UgWE1MUGFyc2VyLCBkb2VzIG5vdCByZXR1cm4gdGhlIHJvb3QgZWxlbWVudC4gVXNlCiAgICAgICAgcmVhZF9ldmVudHMoKSB0byBjb25zdW1lIGVsZW1lbnRzIGZyb20gWE1MUHVsbFBhcnNlci4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9jbG9zZV9hbmRfcmV0dXJuX3Jvb3QoKQoKICAgIGRlZiByZWFkX2V2ZW50cyhzZWxmKToKICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBjdXJyZW50bHkgYXZhaWxhYmxlIChldmVudCwgZWxlbSkgcGFpcnMuCgogICAgICAgIEV2ZW50cyBhcmUgY29uc3VtZWQgZnJvbSB0aGUgaW50ZXJuYWwgZXZlbnQgcXVldWUgYXMgdGhleSBhcmUKICAgICAgICByZXRyaWV2ZWQgZnJvbSB0aGUgaXRlcmF0b3IuCiAgICAgICAgIiIiCiAgICAgICAgZXZlbnRzID0gc2VsZi5fZXZlbnRzX3F1ZXVlCiAgICAgICAgd2hpbGUgZXZlbnRzOgogICAgICAgICAgICBldmVudCA9IGV2ZW50cy5wb3BsZWZ0KCkKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgIHJhaXNlIGV2ZW50CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB5aWVsZCBldmVudAoKCmRlZiBYTUwodGV4dCwgcGFyc2VyPU5vbmUpOgogICAgIiIiUGFyc2UgWE1MIGRvY3VtZW50IGZyb20gc3RyaW5nIGNvbnN0YW50LgoKICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZW1iZWQgIlhNTCBMaXRlcmFscyIgaW4gUHl0aG9uIGNvZGUuCgogICAgKnRleHQqIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgWE1MIGRhdGEsICpwYXJzZXIqIGlzIGFuCiAgICBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UsIGRlZmF1bHRpbmcgdG8gdGhlIHN0YW5kYXJkIFhNTFBhcnNlci4KCiAgICBSZXR1cm5zIGFuIEVsZW1lbnQgaW5zdGFuY2UuCgogICAgIiIiCiAgICBpZiBub3QgcGFyc2VyOgogICAgICAgIHBhcnNlciA9IFhNTFBhcnNlcih0YXJnZXQ9VHJlZUJ1aWxkZXIoKSkKICAgIHBhcnNlci5mZWVkKHRleHQpCiAgICByZXR1cm4gcGFyc2VyLmNsb3NlKCkKCgpkZWYgWE1MSUQodGV4dCwgcGFyc2VyPU5vbmUpOgogICAgIiIiUGFyc2UgWE1MIGRvY3VtZW50IGZyb20gc3RyaW5nIGNvbnN0YW50IGZvciBpdHMgSURzLgoKICAgICp0ZXh0KiBpcyBhIHN0cmluZyBjb250YWluaW5nIFhNTCBkYXRhLCAqcGFyc2VyKiBpcyBhbgogICAgb3B0aW9uYWwgcGFyc2VyIGluc3RhbmNlLCBkZWZhdWx0aW5nIHRvIHRoZSBzdGFuZGFyZCBYTUxQYXJzZXIuCgogICAgUmV0dXJucyBhbiAoRWxlbWVudCwgZGljdCkgdHVwbGUsIGluIHdoaWNoIHRoZQogICAgZGljdCBtYXBzIGVsZW1lbnQgaWQ6cyB0byBlbGVtZW50cy4KCiAgICAiIiIKICAgIGlmIG5vdCBwYXJzZXI6CiAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQogICAgcGFyc2VyLmZlZWQodGV4dCkKICAgIHRyZWUgPSBwYXJzZXIuY2xvc2UoKQogICAgaWRzID0ge30KICAgIGZvciBlbGVtIGluIHRyZWUuaXRlcigpOgogICAgICAgIGlkID0gZWxlbS5nZXQoImlkIikKICAgICAgICBpZiBpZDoKICAgICAgICAgICAgaWRzW2lkXSA9IGVsZW0KICAgIHJldHVybiB0cmVlLCBpZHMKCiMgUGFyc2UgWE1MIGRvY3VtZW50IGZyb20gc3RyaW5nIGNvbnN0YW50LiAgQWxpYXMgZm9yIFhNTCgpLgpmcm9tc3RyaW5nID0gWE1MCgpkZWYgZnJvbXN0cmluZ2xpc3Qoc2VxdWVuY2UsIHBhcnNlcj1Ob25lKToKICAgICIiIlBhcnNlIFhNTCBkb2N1bWVudCBmcm9tIHNlcXVlbmNlIG9mIHN0cmluZyBmcmFnbWVudHMuCgogICAgKnNlcXVlbmNlKiBpcyBhIGxpc3Qgb2Ygb3RoZXIgc2VxdWVuY2UsICpwYXJzZXIqIGlzIGFuIG9wdGlvbmFsIHBhcnNlcgogICAgaW5zdGFuY2UsIGRlZmF1bHRpbmcgdG8gdGhlIHN0YW5kYXJkIFhNTFBhcnNlci4KCiAgICBSZXR1cm5zIGFuIEVsZW1lbnQgaW5zdGFuY2UuCgogICAgIiIiCiAgICBpZiBub3QgcGFyc2VyOgogICAgICAgIHBhcnNlciA9IFhNTFBhcnNlcih0YXJnZXQ9VHJlZUJ1aWxkZXIoKSkKICAgIGZvciB0ZXh0IGluIHNlcXVlbmNlOgogICAgICAgIHBhcnNlci5mZWVkKHRleHQpCiAgICByZXR1cm4gcGFyc2VyLmNsb3NlKCkKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgpjbGFzcyBUcmVlQnVpbGRlcjoKICAgICIiIkdlbmVyaWMgZWxlbWVudCBzdHJ1Y3R1cmUgYnVpbGRlci4KCiAgICBUaGlzIGJ1aWxkZXIgY29udmVydHMgYSBzZXF1ZW5jZSBvZiBzdGFydCwgZGF0YSwgYW5kIGVuZCBtZXRob2QKICAgIGNhbGxzIHRvIGEgd2VsbC1mb3JtZWQgZWxlbWVudCBzdHJ1Y3R1cmUuCgogICAgWW91IGNhbiB1c2UgdGhpcyBjbGFzcyB0byBidWlsZCBhbiBlbGVtZW50IHN0cnVjdHVyZSB1c2luZyBhIGN1c3RvbSBYTUwKICAgIHBhcnNlciwgb3IgYSBwYXJzZXIgZm9yIHNvbWUgb3RoZXIgWE1MLWxpa2UgZm9ybWF0LgoKICAgICplbGVtZW50X2ZhY3RvcnkqIGlzIGFuIG9wdGlvbmFsIGVsZW1lbnQgZmFjdG9yeSB3aGljaCBpcyBjYWxsZWQKICAgIHRvIGNyZWF0ZSBuZXcgRWxlbWVudCBpbnN0YW5jZXMsIGFzIG5lY2Vzc2FyeS4KCiAgICAqY29tbWVudF9mYWN0b3J5KiBpcyBhIGZhY3RvcnkgdG8gY3JlYXRlIGNvbW1lbnRzIHRvIGJlIHVzZWQgaW5zdGVhZCBvZgogICAgdGhlIHN0YW5kYXJkIGZhY3RvcnkuICBJZiAqaW5zZXJ0X2NvbW1lbnRzKiBpcyBmYWxzZSAodGhlIGRlZmF1bHQpLAogICAgY29tbWVudHMgd2lsbCBub3QgYmUgaW5zZXJ0ZWQgaW50byB0aGUgdHJlZS4KCiAgICAqcGlfZmFjdG9yeSogaXMgYSBmYWN0b3J5IHRvIGNyZWF0ZSBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyB0byBiZSB1c2VkCiAgICBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBmYWN0b3J5LiAgSWYgKmluc2VydF9waXMqIGlzIGZhbHNlICh0aGUgZGVmYXVsdCksCiAgICBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyB3aWxsIG5vdCBiZSBpbnNlcnRlZCBpbnRvIHRoZSB0cmVlLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZWxlbWVudF9mYWN0b3J5PU5vbmUsICosCiAgICAgICAgICAgICAgICAgY29tbWVudF9mYWN0b3J5PU5vbmUsIHBpX2ZhY3Rvcnk9Tm9uZSwKICAgICAgICAgICAgICAgICBpbnNlcnRfY29tbWVudHM9RmFsc2UsIGluc2VydF9waXM9RmFsc2UpOgogICAgICAgIHNlbGYuX2RhdGEgPSBbXSAjIGRhdGEgY29sbGVjdG9yCiAgICAgICAgc2VsZi5fZWxlbSA9IFtdICMgZWxlbWVudCBzdGFjawogICAgICAgIHNlbGYuX2xhc3QgPSBOb25lICMgbGFzdCBlbGVtZW50CiAgICAgICAgc2VsZi5fcm9vdCA9IE5vbmUgIyByb290IGVsZW1lbnQKICAgICAgICBzZWxmLl90YWlsID0gTm9uZSAjIHRydWUgaWYgd2UncmUgYWZ0ZXIgYW4gZW5kIHRhZwogICAgICAgIGlmIGNvbW1lbnRfZmFjdG9yeSBpcyBOb25lOgogICAgICAgICAgICBjb21tZW50X2ZhY3RvcnkgPSBDb21tZW50CiAgICAgICAgc2VsZi5fY29tbWVudF9mYWN0b3J5ID0gY29tbWVudF9mYWN0b3J5CiAgICAgICAgc2VsZi5pbnNlcnRfY29tbWVudHMgPSBpbnNlcnRfY29tbWVudHMKICAgICAgICBpZiBwaV9mYWN0b3J5IGlzIE5vbmU6CiAgICAgICAgICAgIHBpX2ZhY3RvcnkgPSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KICAgICAgICBzZWxmLl9waV9mYWN0b3J5ID0gcGlfZmFjdG9yeQogICAgICAgIHNlbGYuaW5zZXJ0X3BpcyA9IGluc2VydF9waXMKICAgICAgICBpZiBlbGVtZW50X2ZhY3RvcnkgaXMgTm9uZToKICAgICAgICAgICAgZWxlbWVudF9mYWN0b3J5ID0gRWxlbWVudAogICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBlbGVtZW50X2ZhY3RvcnkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiRmx1c2ggYnVpbGRlciBidWZmZXJzIGFuZCByZXR1cm4gdG9wbGV2ZWwgZG9jdW1lbnQgRWxlbWVudC4iIiIKICAgICAgICBhc3NlcnQgbGVuKHNlbGYuX2VsZW0pID09IDAsICJtaXNzaW5nIGVuZCB0YWdzIgogICAgICAgIGFzc2VydCBzZWxmLl9yb290IGlzIG5vdCBOb25lLCAibWlzc2luZyB0b3BsZXZlbCBlbGVtZW50IgogICAgICAgIHJldHVybiBzZWxmLl9yb290CgogICAgZGVmIF9mbHVzaChzZWxmKToKICAgICAgICBpZiBzZWxmLl9kYXRhOgogICAgICAgICAgICBpZiBzZWxmLl9sYXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgdGV4dCA9ICIiLmpvaW4oc2VsZi5fZGF0YSkKICAgICAgICAgICAgICAgIGlmIHNlbGYuX3RhaWw6CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2xhc3QudGFpbCBpcyBOb25lLCAiaW50ZXJuYWwgZXJyb3IgKHRhaWwpIgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2xhc3QudGFpbCA9IHRleHQKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2xhc3QudGV4dCBpcyBOb25lLCAiaW50ZXJuYWwgZXJyb3IgKHRleHQpIgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2xhc3QudGV4dCA9IHRleHQKICAgICAgICAgICAgc2VsZi5fZGF0YSA9IFtdCgogICAgZGVmIGRhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgIiIiQWRkIHRleHQgdG8gY3VycmVudCBlbGVtZW50LiIiIgogICAgICAgIHNlbGYuX2RhdGEuYXBwZW5kKGRhdGEpCgogICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cnMpOgogICAgICAgICIiIk9wZW4gbmV3IGVsZW1lbnQgYW5kIHJldHVybiBpdC4KCiAgICAgICAgKnRhZyogaXMgdGhlIGVsZW1lbnQgbmFtZSwgKmF0dHJzKiBpcyBhIGRpY3QgY29udGFpbmluZyBlbGVtZW50CiAgICAgICAgYXR0cmlidXRlcy4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fZmx1c2goKQogICAgICAgIHNlbGYuX2xhc3QgPSBlbGVtID0gc2VsZi5fZmFjdG9yeSh0YWcsIGF0dHJzKQogICAgICAgIGlmIHNlbGYuX2VsZW06CiAgICAgICAgICAgIHNlbGYuX2VsZW1bLTFdLmFwcGVuZChlbGVtKQogICAgICAgIGVsaWYgc2VsZi5fcm9vdCBpcyBOb25lOgogICAgICAgICAgICBzZWxmLl9yb290ID0gZWxlbQogICAgICAgIHNlbGYuX2VsZW0uYXBwZW5kKGVsZW0pCiAgICAgICAgc2VsZi5fdGFpbCA9IDAKICAgICAgICByZXR1cm4gZWxlbQoKICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKICAgICAgICAiIiJDbG9zZSBhbmQgcmV0dXJuIGN1cnJlbnQgRWxlbWVudC4KCiAgICAgICAgKnRhZyogaXMgdGhlIGVsZW1lbnQgbmFtZS4KCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fZmx1c2goKQogICAgICAgIHNlbGYuX2xhc3QgPSBzZWxmLl9lbGVtLnBvcCgpCiAgICAgICAgYXNzZXJ0IHNlbGYuX2xhc3QudGFnID09IHRhZyxcCiAgICAgICAgICAgICAgICJlbmQgdGFnIG1pc21hdGNoIChleHBlY3RlZCAlcywgZ290ICVzKSIgJSAoCiAgICAgICAgICAgICAgICAgICBzZWxmLl9sYXN0LnRhZywgdGFnKQogICAgICAgIHNlbGYuX3RhaWwgPSAxCiAgICAgICAgcmV0dXJuIHNlbGYuX2xhc3QKCiAgICBkZWYgY29tbWVudChzZWxmLCB0ZXh0KToKICAgICAgICAiIiJDcmVhdGUgYSBjb21tZW50IHVzaW5nIHRoZSBjb21tZW50X2ZhY3RvcnkuCgogICAgICAgICp0ZXh0KiBpcyB0aGUgdGV4dCBvZiB0aGUgY29tbWVudC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlX3NpbmdsZSgKICAgICAgICAgICAgc2VsZi5fY29tbWVudF9mYWN0b3J5LCBzZWxmLmluc2VydF9jb21tZW50cywgdGV4dCkKCiAgICBkZWYgcGkoc2VsZiwgdGFyZ2V0LCB0ZXh0PU5vbmUpOgogICAgICAgICIiIkNyZWF0ZSBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gdXNpbmcgdGhlIHBpX2ZhY3RvcnkuCgogICAgICAgICp0YXJnZXQqIGlzIHRoZSB0YXJnZXQgbmFtZSBvZiB0aGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbi4KICAgICAgICAqdGV4dCogaXMgdGhlIGRhdGEgb2YgdGhlIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24sIG9yICcnLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGVfc2luZ2xlKAogICAgICAgICAgICBzZWxmLl9waV9mYWN0b3J5LCBzZWxmLmluc2VydF9waXMsIHRhcmdldCwgdGV4dCkKCiAgICBkZWYgX2hhbmRsZV9zaW5nbGUoc2VsZiwgZmFjdG9yeSwgaW5zZXJ0LCAqYXJncyk6CiAgICAgICAgZWxlbSA9IGZhY3RvcnkoKmFyZ3MpCiAgICAgICAgaWYgaW5zZXJ0OgogICAgICAgICAgICBzZWxmLl9mbHVzaCgpCiAgICAgICAgICAgIHNlbGYuX2xhc3QgPSBlbGVtCiAgICAgICAgICAgIGlmIHNlbGYuX2VsZW06CiAgICAgICAgICAgICAgICBzZWxmLl9lbGVtWy0xXS5hcHBlbmQoZWxlbSkKICAgICAgICAgICAgc2VsZi5fdGFpbCA9IDEKICAgICAgICByZXR1cm4gZWxlbQoKCiMgYWxzbyBzZWUgRWxlbWVudFRyZWUgYW5kIFRyZWVCdWlsZGVyCmNsYXNzIFhNTFBhcnNlcjoKICAgICIiIkVsZW1lbnQgc3RydWN0dXJlIGJ1aWxkZXIgZm9yIFhNTCBzb3VyY2UgZGF0YSBiYXNlZCBvbiB0aGUgZXhwYXQgcGFyc2VyLgoKICAgICp0YXJnZXQqIGlzIGFuIG9wdGlvbmFsIHRhcmdldCBvYmplY3Qgd2hpY2ggZGVmYXVsdHMgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlCiAgICBzdGFuZGFyZCBUcmVlQnVpbGRlciBjbGFzcywgKmVuY29kaW5nKiBpcyBhbiBvcHRpb25hbCBlbmNvZGluZyBzdHJpbmcKICAgIHdoaWNoIGlmIGdpdmVuLCBvdmVycmlkZXMgdGhlIGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUgWE1MIGZpbGU6CiAgICBodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJhY3Rlci1zZXRzCgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsICosIHRhcmdldD1Ob25lLCBlbmNvZGluZz1Ob25lKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpbXBvcnQgcHlleHBhdCBhcyBleHBhdAogICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKICAgICAgICAgICAgICAgICAgICAiTm8gbW9kdWxlIG5hbWVkIGV4cGF0OyB1c2UgU2ltcGxlWE1MVHJlZUJ1aWxkZXIgaW5zdGVhZCIKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgcGFyc2VyID0gZXhwYXQuUGFyc2VyQ3JlYXRlKGVuY29kaW5nLCAifSIpCiAgICAgICAgaWYgdGFyZ2V0IGlzIE5vbmU6CiAgICAgICAgICAgIHRhcmdldCA9IFRyZWVCdWlsZGVyKCkKICAgICAgICAjIHVuZGVyc2NvcmVkIG5hbWVzIGFyZSBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSBvbmx5CiAgICAgICAgc2VsZi5wYXJzZXIgPSBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKICAgICAgICBzZWxmLnRhcmdldCA9IHNlbGYuX3RhcmdldCA9IHRhcmdldAogICAgICAgIHNlbGYuX2Vycm9yID0gZXhwYXQuZXJyb3IKICAgICAgICBzZWxmLl9uYW1lcyA9IHt9ICMgbmFtZSBtZW1vIGNhY2hlCiAgICAgICAgIyBtYWluIGNhbGxiYWNrcwogICAgICAgIHBhcnNlci5EZWZhdWx0SGFuZGxlckV4cGFuZCA9IHNlbGYuX2RlZmF1bHQKICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ3N0YXJ0Jyk6CiAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnQKICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ2VuZCcpOgogICAgICAgICAgICBwYXJzZXIuRW5kRWxlbWVudEhhbmRsZXIgPSBzZWxmLl9lbmQKICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ3N0YXJ0X25zJyk6CiAgICAgICAgICAgIHBhcnNlci5TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyID0gc2VsZi5fc3RhcnRfbnMKICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ2VuZF9ucycpOgogICAgICAgICAgICBwYXJzZXIuRW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBzZWxmLl9lbmRfbnMKICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ2RhdGEnKToKICAgICAgICAgICAgcGFyc2VyLkNoYXJhY3RlckRhdGFIYW5kbGVyID0gdGFyZ2V0LmRhdGEKICAgICAgICAjIG1pc2NlbGxhbmVvdXMgY2FsbGJhY2tzCiAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdjb21tZW50Jyk6CiAgICAgICAgICAgIHBhcnNlci5Db21tZW50SGFuZGxlciA9IHRhcmdldC5jb21tZW50CiAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdwaScpOgogICAgICAgICAgICBwYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IHRhcmdldC5waQogICAgICAgICMgQ29uZmlndXJlIHB5ZXhwYXQ6IGJ1ZmZlcmluZywgbmV3LXN0eWxlIGF0dHJpYnV0ZSBoYW5kbGluZy4KICAgICAgICBwYXJzZXIuYnVmZmVyX3RleHQgPSAxCiAgICAgICAgcGFyc2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IDEKICAgICAgICBzZWxmLl9kb2N0eXBlID0gTm9uZQogICAgICAgIHNlbGYuZW50aXR5ID0ge30KICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYudmVyc2lvbiA9ICJFeHBhdCAlZC4lZC4lZCIgJSBleHBhdC52ZXJzaW9uX2luZm8KICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MgIyB1bmtub3duCgogICAgZGVmIF9zZXRldmVudHMoc2VsZiwgZXZlbnRzX3F1ZXVlLCBldmVudHNfdG9fcmVwb3J0KToKICAgICAgICAjIEludGVybmFsIEFQSSBmb3IgWE1MUHVsbFBhcnNlcgogICAgICAgICMgZXZlbnRzX3RvX3JlcG9ydDogYSBsaXN0IG9mIGV2ZW50cyB0byByZXBvcnQgZHVyaW5nIHBhcnNpbmcgKHNhbWUgYXMKICAgICAgICAjIHRoZSAqZXZlbnRzKiBvZiBYTUxQdWxsUGFyc2VyJ3MgY29uc3RydWN0b3IuCiAgICAgICAgIyBldmVudHNfcXVldWU6IGEgbGlzdCBvZiBhY3R1YWwgcGFyc2luZyBldmVudHMgdGhhdCB3aWxsIGJlIHBvcHVsYXRlZAogICAgICAgICMgYnkgdGhlIHVuZGVybHlpbmcgcGFyc2VyLgogICAgICAgICMKICAgICAgICBwYXJzZXIgPSBzZWxmLl9wYXJzZXIKICAgICAgICBhcHBlbmQgPSBldmVudHNfcXVldWUuYXBwZW5kCiAgICAgICAgZm9yIGV2ZW50X25hbWUgaW4gZXZlbnRzX3RvX3JlcG9ydDoKICAgICAgICAgICAgaWYgZXZlbnRfbmFtZSA9PSAic3RhcnQiOgogICAgICAgICAgICAgICAgcGFyc2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IDEKICAgICAgICAgICAgICAgIGRlZiBoYW5kbGVyKHRhZywgYXR0cmliX2luLCBldmVudD1ldmVudF9uYW1lLCBhcHBlbmQ9YXBwZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ9c2VsZi5fc3RhcnQpOgogICAgICAgICAgICAgICAgICAgIGFwcGVuZCgoZXZlbnQsIHN0YXJ0KHRhZywgYXR0cmliX2luKSkpCiAgICAgICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IGhhbmRsZXIKICAgICAgICAgICAgZWxpZiBldmVudF9uYW1lID09ICJlbmQiOgogICAgICAgICAgICAgICAgZGVmIGhhbmRsZXIodGFnLCBldmVudD1ldmVudF9uYW1lLCBhcHBlbmQ9YXBwZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kPXNlbGYuX2VuZCk6CiAgICAgICAgICAgICAgICAgICAgYXBwZW5kKChldmVudCwgZW5kKHRhZykpKQogICAgICAgICAgICAgICAgcGFyc2VyLkVuZEVsZW1lbnRIYW5kbGVyID0gaGFuZGxlcgogICAgICAgICAgICBlbGlmIGV2ZW50X25hbWUgPT0gInN0YXJ0LW5zIjoKICAgICAgICAgICAgICAgICMgVHJlZUJ1aWxkZXIgZG9lcyBub3QgaW1wbGVtZW50IC5zdGFydF9ucygpCiAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYudGFyZ2V0LCAic3RhcnRfbnMiKToKICAgICAgICAgICAgICAgICAgICBkZWYgaGFuZGxlcihwcmVmaXgsIHVyaSwgZXZlbnQ9ZXZlbnRfbmFtZSwgYXBwZW5kPWFwcGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9ucz1zZWxmLl9zdGFydF9ucyk6CiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgoZXZlbnQsIHN0YXJ0X25zKHByZWZpeCwgdXJpKSkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRlZiBoYW5kbGVyKHByZWZpeCwgdXJpLCBldmVudD1ldmVudF9uYW1lLCBhcHBlbmQ9YXBwZW5kKToKICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKChldmVudCwgKHByZWZpeCBvciAnJywgdXJpIG9yICcnKSkpCiAgICAgICAgICAgICAgICBwYXJzZXIuU3RhcnROYW1lc3BhY2VEZWNsSGFuZGxlciA9IGhhbmRsZXIKICAgICAgICAgICAgZWxpZiBldmVudF9uYW1lID09ICJlbmQtbnMiOgogICAgICAgICAgICAgICAgIyBUcmVlQnVpbGRlciBkb2VzIG5vdCBpbXBsZW1lbnQgLmVuZF9ucygpCiAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYudGFyZ2V0LCAiZW5kX25zIik6CiAgICAgICAgICAgICAgICAgICAgZGVmIGhhbmRsZXIocHJlZml4LCBldmVudD1ldmVudF9uYW1lLCBhcHBlbmQ9YXBwZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9ucz1zZWxmLl9lbmRfbnMpOgogICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoKGV2ZW50LCBlbmRfbnMocHJlZml4KSkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRlZiBoYW5kbGVyKHByZWZpeCwgZXZlbnQ9ZXZlbnRfbmFtZSwgYXBwZW5kPWFwcGVuZCk6CiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgoZXZlbnQsIE5vbmUpKQogICAgICAgICAgICAgICAgcGFyc2VyLkVuZE5hbWVzcGFjZURlY2xIYW5kbGVyID0gaGFuZGxlcgogICAgICAgICAgICBlbGlmIGV2ZW50X25hbWUgPT0gJ2NvbW1lbnQnOgogICAgICAgICAgICAgICAgZGVmIGhhbmRsZXIodGV4dCwgZXZlbnQ9ZXZlbnRfbmFtZSwgYXBwZW5kPWFwcGVuZCwgc2VsZj1zZWxmKToKICAgICAgICAgICAgICAgICAgICBhcHBlbmQoKGV2ZW50LCBzZWxmLnRhcmdldC5jb21tZW50KHRleHQpKSkKICAgICAgICAgICAgICAgIHBhcnNlci5Db21tZW50SGFuZGxlciA9IGhhbmRsZXIKICAgICAgICAgICAgZWxpZiBldmVudF9uYW1lID09ICdwaSc6CiAgICAgICAgICAgICAgICBkZWYgaGFuZGxlcihwaV90YXJnZXQsIGRhdGEsIGV2ZW50PWV2ZW50X25hbWUsIGFwcGVuZD1hcHBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmPXNlbGYpOgogICAgICAgICAgICAgICAgICAgIGFwcGVuZCgoZXZlbnQsIHNlbGYudGFyZ2V0LnBpKHBpX3RhcmdldCwgZGF0YSkpKQogICAgICAgICAgICAgICAgcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBoYW5kbGVyCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGV2ZW50ICVyIiAlIGV2ZW50X25hbWUpCgogICAgZGVmIF9yYWlzZWVycm9yKHNlbGYsIHZhbHVlKToKICAgICAgICBlcnIgPSBQYXJzZUVycm9yKHZhbHVlKQogICAgICAgIGVyci5jb2RlID0gdmFsdWUuY29kZQogICAgICAgIGVyci5wb3NpdGlvbiA9IHZhbHVlLmxpbmVubywgdmFsdWUub2Zmc2V0CiAgICAgICAgcmFpc2UgZXJyCgogICAgZGVmIF9maXhuYW1lKHNlbGYsIGtleSk6CiAgICAgICAgIyBleHBhbmQgcW5hbWUsIGFuZCBjb252ZXJ0IG5hbWUgc3RyaW5nIHRvIGFzY2lpLCBpZiBwb3NzaWJsZQogICAgICAgIHRyeToKICAgICAgICAgICAgbmFtZSA9IHNlbGYuX25hbWVzW2tleV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIG5hbWUgPSBrZXkKICAgICAgICAgICAgaWYgIn0iIGluIG5hbWU6CiAgICAgICAgICAgICAgICBuYW1lID0gInsiICsgbmFtZQogICAgICAgICAgICBzZWxmLl9uYW1lc1trZXldID0gbmFtZQogICAgICAgIHJldHVybiBuYW1lCgogICAgZGVmIF9zdGFydF9ucyhzZWxmLCBwcmVmaXgsIHVyaSk6CiAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LnN0YXJ0X25zKHByZWZpeCBvciAnJywgdXJpIG9yICcnKQoKICAgIGRlZiBfZW5kX25zKHNlbGYsIHByZWZpeCk6CiAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LmVuZF9ucyhwcmVmaXggb3IgJycpCgogICAgZGVmIF9zdGFydChzZWxmLCB0YWcsIGF0dHJfbGlzdCk6CiAgICAgICAgIyBIYW5kbGVyIGZvciBleHBhdCdzIFN0YXJ0RWxlbWVudEhhbmRsZXIuIFNpbmNlIG9yZGVyZWRfYXR0cmlidXRlcwogICAgICAgICMgaXMgc2V0LCB0aGUgYXR0cmlidXRlcyBhcmUgcmVwb3J0ZWQgYXMgYSBsaXN0IG9mIGFsdGVybmF0aW5nCiAgICAgICAgIyBhdHRyaWJ1dGUgbmFtZSx2YWx1ZS4KICAgICAgICBmaXhuYW1lID0gc2VsZi5fZml4bmFtZQogICAgICAgIHRhZyA9IGZpeG5hbWUodGFnKQogICAgICAgIGF0dHJpYiA9IHt9CiAgICAgICAgaWYgYXR0cl9saXN0OgogICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oYXR0cl9saXN0KSwgMik6CiAgICAgICAgICAgICAgICBhdHRyaWJbZml4bmFtZShhdHRyX2xpc3RbaV0pXSA9IGF0dHJfbGlzdFtpKzFdCiAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LnN0YXJ0KHRhZywgYXR0cmliKQoKICAgIGRlZiBfZW5kKHNlbGYsIHRhZyk6CiAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LmVuZChzZWxmLl9maXhuYW1lKHRhZykpCgogICAgZGVmIF9kZWZhdWx0KHNlbGYsIHRleHQpOgogICAgICAgIHByZWZpeCA9IHRleHRbOjFdCiAgICAgICAgaWYgcHJlZml4ID09ICImIjoKICAgICAgICAgICAgIyBkZWFsIHdpdGggdW5kZWZpbmVkIGVudGl0aWVzCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGRhdGFfaGFuZGxlciA9IHNlbGYudGFyZ2V0LmRhdGEKICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGRhdGFfaGFuZGxlcihzZWxmLmVudGl0eVt0ZXh0WzE6LTFdXSkKICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKICAgICAgICAgICAgICAgIGVyciA9IGV4cGF0LmVycm9yKAogICAgICAgICAgICAgICAgICAgICJ1bmRlZmluZWQgZW50aXR5ICVzOiBsaW5lICVkLCBjb2x1bW4gJWQiICUKICAgICAgICAgICAgICAgICAgICAodGV4dCwgc2VsZi5wYXJzZXIuRXJyb3JMaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIGVyci5jb2RlID0gMTEgIyBYTUxfRVJST1JfVU5ERUZJTkVEX0VOVElUWQogICAgICAgICAgICAgICAgZXJyLmxpbmVubyA9IHNlbGYucGFyc2VyLkVycm9yTGluZU51bWJlcgogICAgICAgICAgICAgICAgZXJyLm9mZnNldCA9IHNlbGYucGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCiAgICAgICAgICAgICAgICByYWlzZSBlcnIKICAgICAgICBlbGlmIHByZWZpeCA9PSAiPCIgYW5kIHRleHRbOjldID09ICI8IURPQ1RZUEUiOgogICAgICAgICAgICBzZWxmLl9kb2N0eXBlID0gW10gIyBpbnNpZGUgYSBkb2N0eXBlIGRlY2xhcmF0aW9uCiAgICAgICAgZWxpZiBzZWxmLl9kb2N0eXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIHBhcnNlIGRvY3R5cGUgY29udGVudHMKICAgICAgICAgICAgaWYgcHJlZml4ID09ICI+IjoKICAgICAgICAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSBOb25lCiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgdGV4dCA9IHRleHQuc3RyaXAoKQogICAgICAgICAgICBpZiBub3QgdGV4dDoKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICBzZWxmLl9kb2N0eXBlLmFwcGVuZCh0ZXh0KQogICAgICAgICAgICBuID0gbGVuKHNlbGYuX2RvY3R5cGUpCiAgICAgICAgICAgIGlmIG4gPiAyOgogICAgICAgICAgICAgICAgdHlwZSA9IHNlbGYuX2RvY3R5cGVbMV0KICAgICAgICAgICAgICAgIGlmIHR5cGUgPT0gIlBVQkxJQyIgYW5kIG4gPT0gNDoKICAgICAgICAgICAgICAgICAgICBuYW1lLCB0eXBlLCBwdWJpZCwgc3lzdGVtID0gc2VsZi5fZG9jdHlwZQogICAgICAgICAgICAgICAgICAgIGlmIHB1YmlkOgogICAgICAgICAgICAgICAgICAgICAgICBwdWJpZCA9IHB1YmlkWzE6LTFdCiAgICAgICAgICAgICAgICBlbGlmIHR5cGUgPT0gIlNZU1RFTSIgYW5kIG4gPT0gMzoKICAgICAgICAgICAgICAgICAgICBuYW1lLCB0eXBlLCBzeXN0ZW0gPSBzZWxmLl9kb2N0eXBlCiAgICAgICAgICAgICAgICAgICAgcHViaWQgPSBOb25lCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnRhcmdldCwgImRvY3R5cGUiKToKICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcmdldC5kb2N0eXBlKG5hbWUsIHB1YmlkLCBzeXN0ZW1bMTotMV0pCiAgICAgICAgICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZiwgImRvY3R5cGUiKToKICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGRvY3R5cGUoKSBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGlnbm9yZWQuICAiCiAgICAgICAgICAgICAgICAgICAgICAgICJEZWZpbmUgZG9jdHlwZSgpIG1ldGhvZCBvbiB0aGUgVHJlZUJ1aWxkZXIgdGFyZ2V0LiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQoKICAgICAgICAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSBOb25lCgogICAgZGVmIGZlZWQoc2VsZiwgZGF0YSk6CiAgICAgICAgIiIiRmVlZCBlbmNvZGVkIGRhdGEgdG8gcGFyc2VyLiIiIgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5wYXJzZXIuUGFyc2UoZGF0YSwgRmFsc2UpCiAgICAgICAgZXhjZXB0IHNlbGYuX2Vycm9yIGFzIHY6CiAgICAgICAgICAgIHNlbGYuX3JhaXNlZXJyb3IodikKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIiIiRmluaXNoIGZlZWRpbmcgZGF0YSB0byBwYXJzZXIgYW5kIHJldHVybiBlbGVtZW50IHN0cnVjdHVyZS4iIiIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYucGFyc2VyLlBhcnNlKGIiIiwgVHJ1ZSkgIyBlbmQgb2YgZGF0YQogICAgICAgIGV4Y2VwdCBzZWxmLl9lcnJvciBhcyB2OgogICAgICAgICAgICBzZWxmLl9yYWlzZWVycm9yKHYpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjbG9zZV9oYW5kbGVyID0gc2VsZi50YXJnZXQuY2xvc2UKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gY2xvc2VfaGFuZGxlcigpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIyBnZXQgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMKICAgICAgICAgICAgZGVsIHNlbGYucGFyc2VyLCBzZWxmLl9wYXJzZXIKICAgICAgICAgICAgZGVsIHNlbGYudGFyZ2V0LCBzZWxmLl90YXJnZXQKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQzE0TiAyLjAKCmRlZiBjYW5vbmljYWxpemUoeG1sX2RhdGE9Tm9uZSwgKiwgb3V0PU5vbmUsIGZyb21fZmlsZT1Ob25lLCAqKm9wdGlvbnMpOgogICAgIiIiQ29udmVydCBYTUwgdG8gaXRzIEMxNE4gMi4wIHNlcmlhbGlzZWQgZm9ybS4KCiAgICBJZiAqb3V0KiBpcyBwcm92aWRlZCwgaXQgbXVzdCBiZSBhIGZpbGUgb3IgZmlsZS1saWtlIG9iamVjdCB0aGF0IHJlY2VpdmVzCiAgICB0aGUgc2VyaWFsaXNlZCBjYW5vbmljYWwgWE1MIG91dHB1dCAodGV4dCwgbm90IGJ5dGVzKSB0aHJvdWdoIGl0cyBgYC53cml0ZSgpYGAKICAgIG1ldGhvZC4gIFRvIHdyaXRlIHRvIGEgZmlsZSwgb3BlbiBpdCBpbiB0ZXh0IG1vZGUgd2l0aCBlbmNvZGluZyAidXRmLTgiLgogICAgSWYgKm91dCogaXMgbm90IHByb3ZpZGVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG91dHB1dCBhcyB0ZXh0IHN0cmluZy4KCiAgICBFaXRoZXIgKnhtbF9kYXRhKiAoYW4gWE1MIHN0cmluZykgb3IgKmZyb21fZmlsZSogKGEgZmlsZSBwYXRoIG9yCiAgICBmaWxlLWxpa2Ugb2JqZWN0KSBtdXN0IGJlIHByb3ZpZGVkIGFzIGlucHV0LgoKICAgIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgYGBDMTROV3JpdGVyVGFyZ2V0YGAuCiAgICAiIiIKICAgIGlmIHhtbF9kYXRhIGlzIE5vbmUgYW5kIGZyb21fZmlsZSBpcyBOb25lOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkVpdGhlciAneG1sX2RhdGEnIG9yICdmcm9tX2ZpbGUnIG11c3QgYmUgcHJvdmlkZWQgYXMgaW5wdXQiKQogICAgc2lvID0gTm9uZQogICAgaWYgb3V0IGlzIE5vbmU6CiAgICAgICAgc2lvID0gb3V0ID0gaW8uU3RyaW5nSU8oKQoKICAgIHBhcnNlciA9IFhNTFBhcnNlcih0YXJnZXQ9QzE0TldyaXRlclRhcmdldChvdXQud3JpdGUsICoqb3B0aW9ucykpCgogICAgaWYgeG1sX2RhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgcGFyc2VyLmZlZWQoeG1sX2RhdGEpCiAgICAgICAgcGFyc2VyLmNsb3NlKCkKICAgIGVsaWYgZnJvbV9maWxlIGlzIG5vdCBOb25lOgogICAgICAgIHBhcnNlKGZyb21fZmlsZSwgcGFyc2VyPXBhcnNlcikKCiAgICByZXR1cm4gc2lvLmdldHZhbHVlKCkgaWYgc2lvIGlzIG5vdCBOb25lIGVsc2UgTm9uZQoKCl9sb29rc19saWtlX3ByZWZpeF9uYW1lID0gcmUuY29tcGlsZShyJ15cdys6XHcrJCcsIHJlLlVOSUNPREUpLm1hdGNoCgoKY2xhc3MgQzE0TldyaXRlclRhcmdldDoKICAgICIiIgogICAgQ2Fub25pY2FsaXphdGlvbiB3cml0ZXIgdGFyZ2V0IGZvciB0aGUgWE1MUGFyc2VyLgoKICAgIFNlcmlhbGlzZXMgcGFyc2UgZXZlbnRzIHRvIFhNTCBDMTROIDIuMC4KCiAgICBUaGUgKndyaXRlKiBmdW5jdGlvbiBpcyB1c2VkIGZvciB3cml0aW5nIG91dCB0aGUgcmVzdWx0aW5nIGRhdGEgc3RyZWFtCiAgICBhcyB0ZXh0IChub3QgYnl0ZXMpLiAgVG8gd3JpdGUgdG8gYSBmaWxlLCBvcGVuIGl0IGluIHRleHQgbW9kZSB3aXRoIGVuY29kaW5nCiAgICAidXRmLTgiIGFuZCBwYXNzIGl0cyBgYC53cml0ZWBgIG1ldGhvZC4KCiAgICBDb25maWd1cmF0aW9uIG9wdGlvbnM6CgogICAgLSAqd2l0aF9jb21tZW50cyo6IHNldCB0byB0cnVlIHRvIGluY2x1ZGUgY29tbWVudHMKICAgIC0gKnN0cmlwX3RleHQqOiBzZXQgdG8gdHJ1ZSB0byBzdHJpcCB3aGl0ZXNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGV4dCBjb250ZW50CiAgICAtICpyZXdyaXRlX3ByZWZpeGVzKjogc2V0IHRvIHRydWUgdG8gcmVwbGFjZSBuYW1lc3BhY2UgcHJlZml4ZXMgYnkgIm57bnVtYmVyfSIKICAgIC0gKnFuYW1lX2F3YXJlX3RhZ3MqOiBhIHNldCBvZiBxbmFtZSBhd2FyZSB0YWcgbmFtZXMgaW4gd2hpY2ggcHJlZml4ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgcmVwbGFjZWQgaW4gdGV4dCBjb250ZW50CiAgICAtICpxbmFtZV9hd2FyZV9hdHRycyo6IGEgc2V0IG9mIHFuYW1lIGF3YXJlIGF0dHJpYnV0ZSBuYW1lcyBpbiB3aGljaCBwcmVmaXhlcwogICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgcmVwbGFjZWQgaW4gdGV4dCBjb250ZW50CiAgICAtICpleGNsdWRlX2F0dHJzKjogYSBzZXQgb2YgYXR0cmlidXRlIG5hbWVzIHRoYXQgc2hvdWxkIG5vdCBiZSBzZXJpYWxpc2VkCiAgICAtICpleGNsdWRlX3RhZ3MqOiBhIHNldCBvZiB0YWcgbmFtZXMgdGhhdCBzaG91bGQgbm90IGJlIHNlcmlhbGlzZWQKICAgICIiIgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHdyaXRlLCAqLAogICAgICAgICAgICAgICAgIHdpdGhfY29tbWVudHM9RmFsc2UsIHN0cmlwX3RleHQ9RmFsc2UsIHJld3JpdGVfcHJlZml4ZXM9RmFsc2UsCiAgICAgICAgICAgICAgICAgcW5hbWVfYXdhcmVfdGFncz1Ob25lLCBxbmFtZV9hd2FyZV9hdHRycz1Ob25lLAogICAgICAgICAgICAgICAgIGV4Y2x1ZGVfYXR0cnM9Tm9uZSwgZXhjbHVkZV90YWdzPU5vbmUpOgogICAgICAgIHNlbGYuX3dyaXRlID0gd3JpdGUKICAgICAgICBzZWxmLl9kYXRhID0gW10KICAgICAgICBzZWxmLl93aXRoX2NvbW1lbnRzID0gd2l0aF9jb21tZW50cwogICAgICAgIHNlbGYuX3N0cmlwX3RleHQgPSBzdHJpcF90ZXh0CiAgICAgICAgc2VsZi5fZXhjbHVkZV9hdHRycyA9IHNldChleGNsdWRlX2F0dHJzKSBpZiBleGNsdWRlX2F0dHJzIGVsc2UgTm9uZQogICAgICAgIHNlbGYuX2V4Y2x1ZGVfdGFncyA9IHNldChleGNsdWRlX3RhZ3MpIGlmIGV4Y2x1ZGVfdGFncyBlbHNlIE5vbmUKCiAgICAgICAgc2VsZi5fcmV3cml0ZV9wcmVmaXhlcyA9IHJld3JpdGVfcHJlZml4ZXMKICAgICAgICBpZiBxbmFtZV9hd2FyZV90YWdzOgogICAgICAgICAgICBzZWxmLl9xbmFtZV9hd2FyZV90YWdzID0gc2V0KHFuYW1lX2F3YXJlX3RhZ3MpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fcW5hbWVfYXdhcmVfdGFncyA9IE5vbmUKICAgICAgICBpZiBxbmFtZV9hd2FyZV9hdHRyczoKICAgICAgICAgICAgc2VsZi5fZmluZF9xbmFtZV9hd2FyZV9hdHRycyA9IHNldChxbmFtZV9hd2FyZV9hdHRycykuaW50ZXJzZWN0aW9uCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fZmluZF9xbmFtZV9hd2FyZV9hdHRycyA9IE5vbmUKCiAgICAgICAgIyBTdGFjayB3aXRoIGdsb2JhbGx5IGFuZCBuZXdseSBkZWNsYXJlZCBuYW1lc3BhY2VzIGFzICh1cmksIHByZWZpeCkgcGFpcnMuCiAgICAgICAgc2VsZi5fZGVjbGFyZWRfbnNfc3RhY2sgPSBbWwogICAgICAgICAgICAoImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIsICJ4bWwiKSwKICAgICAgICBdXQogICAgICAgICMgU3RhY2sgd2l0aCB1c2VyIGRlY2xhcmVkIG5hbWVzcGFjZSBwcmVmaXhlcyBhcyAodXJpLCBwcmVmaXgpIHBhaXJzLgogICAgICAgIHNlbGYuX25zX3N0YWNrID0gW10KICAgICAgICBpZiBub3QgcmV3cml0ZV9wcmVmaXhlczoKICAgICAgICAgICAgc2VsZi5fbnNfc3RhY2suYXBwZW5kKGxpc3QoX25hbWVzcGFjZV9tYXAuaXRlbXMoKSkpCiAgICAgICAgc2VsZi5fbnNfc3RhY2suYXBwZW5kKFtdKQogICAgICAgIHNlbGYuX3ByZWZpeF9tYXAgPSB7fQogICAgICAgIHNlbGYuX3ByZXNlcnZlX3NwYWNlID0gW0ZhbHNlXQogICAgICAgIHNlbGYuX3BlbmRpbmdfc3RhcnQgPSBOb25lCiAgICAgICAgc2VsZi5fcm9vdF9zZWVuID0gRmFsc2UKICAgICAgICBzZWxmLl9yb290X2RvbmUgPSBGYWxzZQogICAgICAgIHNlbGYuX2lnbm9yZWRfZGVwdGggPSAwCgogICAgZGVmIF9pdGVyX25hbWVzcGFjZXMoc2VsZiwgbnNfc3RhY2ssIF9yZXZlcnNlZD1yZXZlcnNlZCk6CiAgICAgICAgZm9yIG5hbWVzcGFjZXMgaW4gX3JldmVyc2VkKG5zX3N0YWNrKToKICAgICAgICAgICAgaWYgbmFtZXNwYWNlczogICMgYWxtb3N0IG5vIGVsZW1lbnQgZGVjbGFyZXMgbmV3IG5hbWVzcGFjZXMKICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gbmFtZXNwYWNlcwoKICAgIGRlZiBfcmVzb2x2ZV9wcmVmaXhfbmFtZShzZWxmLCBwcmVmaXhlZF9uYW1lKToKICAgICAgICBwcmVmaXgsIG5hbWUgPSBwcmVmaXhlZF9uYW1lLnNwbGl0KCc6JywgMSkKICAgICAgICBmb3IgdXJpLCBwIGluIHNlbGYuX2l0ZXJfbmFtZXNwYWNlcyhzZWxmLl9uc19zdGFjayk6CiAgICAgICAgICAgIGlmIHAgPT0gcHJlZml4OgogICAgICAgICAgICAgICAgcmV0dXJuIGYne3t7dXJpfX19e25hbWV9JwogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidQcmVmaXgge3ByZWZpeH0gb2YgUU5hbWUgIntwcmVmaXhlZF9uYW1lfSIgaXMgbm90IGRlY2xhcmVkIGluIHNjb3BlJykKCiAgICBkZWYgX3FuYW1lKHNlbGYsIHFuYW1lLCB1cmk9Tm9uZSk6CiAgICAgICAgaWYgdXJpIGlzIE5vbmU6CiAgICAgICAgICAgIHVyaSwgdGFnID0gcW5hbWVbMTpdLnJzcGxpdCgnfScsIDEpIGlmIHFuYW1lWzoxXSA9PSAneycgZWxzZSAoJycsIHFuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRhZyA9IHFuYW1lCgogICAgICAgIHByZWZpeGVzX3NlZW4gPSBzZXQoKQogICAgICAgIGZvciB1LCBwcmVmaXggaW4gc2VsZi5faXRlcl9uYW1lc3BhY2VzKHNlbGYuX2RlY2xhcmVkX25zX3N0YWNrKToKICAgICAgICAgICAgaWYgdSA9PSB1cmkgYW5kIHByZWZpeCBub3QgaW4gcHJlZml4ZXNfc2VlbjoKICAgICAgICAgICAgICAgIHJldHVybiBmJ3twcmVmaXh9Ont0YWd9JyBpZiBwcmVmaXggZWxzZSB0YWcsIHRhZywgdXJpCiAgICAgICAgICAgIHByZWZpeGVzX3NlZW4uYWRkKHByZWZpeCkKCiAgICAgICAgIyBOb3QgZGVjbGFyZWQgeWV0ID0+IGFkZCBuZXcgZGVjbGFyYXRpb24uCiAgICAgICAgaWYgc2VsZi5fcmV3cml0ZV9wcmVmaXhlczoKICAgICAgICAgICAgaWYgdXJpIGluIHNlbGYuX3ByZWZpeF9tYXA6CiAgICAgICAgICAgICAgICBwcmVmaXggPSBzZWxmLl9wcmVmaXhfbWFwW3VyaV0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHByZWZpeCA9IHNlbGYuX3ByZWZpeF9tYXBbdXJpXSA9IGYnbntsZW4oc2VsZi5fcHJlZml4X21hcCl9JwogICAgICAgICAgICBzZWxmLl9kZWNsYXJlZF9uc19zdGFja1stMV0uYXBwZW5kKCh1cmksIHByZWZpeCkpCiAgICAgICAgICAgIHJldHVybiBmJ3twcmVmaXh9Ont0YWd9JywgdGFnLCB1cmkKCiAgICAgICAgaWYgbm90IHVyaSBhbmQgJycgbm90IGluIHByZWZpeGVzX3NlZW46CiAgICAgICAgICAgICMgTm8gZGVmYXVsdCBuYW1lc3BhY2UgZGVjbGFyZWQgPT4gbm8gcHJlZml4IG5lZWRlZC4KICAgICAgICAgICAgcmV0dXJuIHRhZywgdGFnLCB1cmkKCiAgICAgICAgZm9yIHUsIHByZWZpeCBpbiBzZWxmLl9pdGVyX25hbWVzcGFjZXMoc2VsZi5fbnNfc3RhY2spOgogICAgICAgICAgICBpZiB1ID09IHVyaToKICAgICAgICAgICAgICAgIHNlbGYuX2RlY2xhcmVkX25zX3N0YWNrWy0xXS5hcHBlbmQoKHVyaSwgcHJlZml4KSkKICAgICAgICAgICAgICAgIHJldHVybiBmJ3twcmVmaXh9Ont0YWd9JyBpZiBwcmVmaXggZWxzZSB0YWcsIHRhZywgdXJpCgogICAgICAgIGlmIG5vdCB1cmk6CiAgICAgICAgICAgICMgQXMgc29vbiBhcyBhIGRlZmF1bHQgbmFtZXNwYWNlIGlzIGRlZmluZWQsCiAgICAgICAgICAgICMgYW55dGhpbmcgdGhhdCBoYXMgbm8gbmFtZXNwYWNlIChhbmQgdGh1cywgbm8gcHJlZml4KSBnb2VzIHRoZXJlLgogICAgICAgICAgICByZXR1cm4gdGFnLCB0YWcsIHVyaQoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnTmFtZXNwYWNlICJ7dXJpfSIgaXMgbm90IGRlY2xhcmVkIGluIHNjb3BlJykKCiAgICBkZWYgZGF0YShzZWxmLCBkYXRhKToKICAgICAgICBpZiBub3Qgc2VsZi5faWdub3JlZF9kZXB0aDoKICAgICAgICAgICAgc2VsZi5fZGF0YS5hcHBlbmQoZGF0YSkKCiAgICBkZWYgX2ZsdXNoKHNlbGYsIF9qb2luX3RleHQ9Jycuam9pbik6CiAgICAgICAgZGF0YSA9IF9qb2luX3RleHQoc2VsZi5fZGF0YSkKICAgICAgICBkZWwgc2VsZi5fZGF0YVs6XQogICAgICAgIGlmIHNlbGYuX3N0cmlwX3RleHQgYW5kIG5vdCBzZWxmLl9wcmVzZXJ2ZV9zcGFjZVstMV06CiAgICAgICAgICAgIGRhdGEgPSBkYXRhLnN0cmlwKCkKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3N0YXJ0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBhcmdzLCBzZWxmLl9wZW5kaW5nX3N0YXJ0ID0gc2VsZi5fcGVuZGluZ19zdGFydCwgTm9uZQogICAgICAgICAgICBxbmFtZV90ZXh0ID0gZGF0YSBpZiBkYXRhIGFuZCBfbG9va3NfbGlrZV9wcmVmaXhfbmFtZShkYXRhKSBlbHNlIE5vbmUKICAgICAgICAgICAgc2VsZi5fc3RhcnQoKmFyZ3MsIHFuYW1lX3RleHQpCiAgICAgICAgICAgIGlmIHFuYW1lX3RleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBkYXRhIGFuZCBzZWxmLl9yb290X3NlZW46CiAgICAgICAgICAgIHNlbGYuX3dyaXRlKF9lc2NhcGVfY2RhdGFfYzE0bihkYXRhKSkKCiAgICBkZWYgc3RhcnRfbnMoc2VsZiwgcHJlZml4LCB1cmkpOgogICAgICAgIGlmIHNlbGYuX2lnbm9yZWRfZGVwdGg6CiAgICAgICAgICAgIHJldHVybgogICAgICAgICMgd2UgbWF5IGhhdmUgdG8gcmVzb2x2ZSBxbmFtZXMgaW4gdGV4dCBjb250ZW50CiAgICAgICAgaWYgc2VsZi5fZGF0YToKICAgICAgICAgICAgc2VsZi5fZmx1c2goKQogICAgICAgIHNlbGYuX25zX3N0YWNrWy0xXS5hcHBlbmQoKHVyaSwgcHJlZml4KSkKCiAgICBkZWYgc3RhcnQoc2VsZiwgdGFnLCBhdHRycyk6CiAgICAgICAgaWYgc2VsZi5fZXhjbHVkZV90YWdzIGlzIG5vdCBOb25lIGFuZCAoCiAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2RlcHRoIG9yIHRhZyBpbiBzZWxmLl9leGNsdWRlX3RhZ3MpOgogICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2RlcHRoICs9IDEKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgaWYgc2VsZi5fZGF0YToKICAgICAgICAgICAgc2VsZi5fZmx1c2goKQoKICAgICAgICBuZXdfbmFtZXNwYWNlcyA9IFtdCiAgICAgICAgc2VsZi5fZGVjbGFyZWRfbnNfc3RhY2suYXBwZW5kKG5ld19uYW1lc3BhY2VzKQoKICAgICAgICBpZiBzZWxmLl9xbmFtZV9hd2FyZV90YWdzIGlzIG5vdCBOb25lIGFuZCB0YWcgaW4gc2VsZi5fcW5hbWVfYXdhcmVfdGFnczoKICAgICAgICAgICAgIyBOZWVkIHRvIHBhcnNlIHRleHQgZmlyc3QgdG8gc2VlIGlmIGl0IHJlcXVpcmVzIGEgcHJlZml4IGRlY2xhcmF0aW9uLgogICAgICAgICAgICBzZWxmLl9wZW5kaW5nX3N0YXJ0ID0gKHRhZywgYXR0cnMsIG5ld19uYW1lc3BhY2VzKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBzZWxmLl9zdGFydCh0YWcsIGF0dHJzLCBuZXdfbmFtZXNwYWNlcykKCiAgICBkZWYgX3N0YXJ0KHNlbGYsIHRhZywgYXR0cnMsIG5ld19uYW1lc3BhY2VzLCBxbmFtZV90ZXh0PU5vbmUpOgogICAgICAgIGlmIHNlbGYuX2V4Y2x1ZGVfYXR0cnMgaXMgbm90IE5vbmUgYW5kIGF0dHJzOgogICAgICAgICAgICBhdHRycyA9IHtrOiB2IGZvciBrLCB2IGluIGF0dHJzLml0ZW1zKCkgaWYgayBub3QgaW4gc2VsZi5fZXhjbHVkZV9hdHRyc30KCiAgICAgICAgcW5hbWVzID0ge3RhZywgKmF0dHJzfQogICAgICAgIHJlc29sdmVkX25hbWVzID0ge30KCiAgICAgICAgIyBSZXNvbHZlIHByZWZpeGVzIGluIGF0dHJpYnV0ZSBhbmQgdGFnIHRleHQuCiAgICAgICAgaWYgcW5hbWVfdGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcW5hbWUgPSByZXNvbHZlZF9uYW1lc1txbmFtZV90ZXh0XSA9IHNlbGYuX3Jlc29sdmVfcHJlZml4X25hbWUocW5hbWVfdGV4dCkKICAgICAgICAgICAgcW5hbWVzLmFkZChxbmFtZSkKICAgICAgICBpZiBzZWxmLl9maW5kX3FuYW1lX2F3YXJlX2F0dHJzIGlzIG5vdCBOb25lIGFuZCBhdHRyczoKICAgICAgICAgICAgcWF0dHJzID0gc2VsZi5fZmluZF9xbmFtZV9hd2FyZV9hdHRycyhhdHRycykKICAgICAgICAgICAgaWYgcWF0dHJzOgogICAgICAgICAgICAgICAgZm9yIGF0dHJfbmFtZSBpbiBxYXR0cnM6CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBhdHRyc1thdHRyX25hbWVdCiAgICAgICAgICAgICAgICAgICAgaWYgX2xvb2tzX2xpa2VfcHJlZml4X25hbWUodmFsdWUpOgogICAgICAgICAgICAgICAgICAgICAgICBxbmFtZSA9IHJlc29sdmVkX25hbWVzW3ZhbHVlXSA9IHNlbGYuX3Jlc29sdmVfcHJlZml4X25hbWUodmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgIHFuYW1lcy5hZGQocW5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBxYXR0cnMgPSBOb25lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcWF0dHJzID0gTm9uZQoKICAgICAgICAjIEFzc2lnbiBwcmVmaXhlcyBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIgb2YgdXNlZCBVUklzLgogICAgICAgIHBhcnNlX3FuYW1lID0gc2VsZi5fcW5hbWUKICAgICAgICBwYXJzZWRfcW5hbWVzID0ge246IHBhcnNlX3FuYW1lKG4pIGZvciBuIGluIHNvcnRlZCgKICAgICAgICAgICAgcW5hbWVzLCBrZXk9bGFtYmRhIG46IG4uc3BsaXQoJ30nLCAxKSl9CgogICAgICAgICMgV3JpdGUgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyBpbiBwcmVmaXggb3JkZXIgLi4uCiAgICAgICAgaWYgbmV3X25hbWVzcGFjZXM6CiAgICAgICAgICAgIGF0dHJfbGlzdCA9IFsKICAgICAgICAgICAgICAgICgneG1sbnM6JyArIHByZWZpeCBpZiBwcmVmaXggZWxzZSAneG1sbnMnLCB1cmkpCiAgICAgICAgICAgICAgICBmb3IgdXJpLCBwcmVmaXggaW4gbmV3X25hbWVzcGFjZXMKICAgICAgICAgICAgXQogICAgICAgICAgICBhdHRyX2xpc3Quc29ydCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBhbG1vc3QgYWx3YXlzIGVtcHR5CiAgICAgICAgICAgIGF0dHJfbGlzdCA9IFtdCgogICAgICAgICMgLi4uIGZvbGxvd2VkIGJ5IGF0dHJpYnV0ZXMgaW4gVVJJK25hbWUgb3JkZXIKICAgICAgICBpZiBhdHRyczoKICAgICAgICAgICAgZm9yIGssIHYgaW4gc29ydGVkKGF0dHJzLml0ZW1zKCkpOgogICAgICAgICAgICAgICAgaWYgcWF0dHJzIGlzIG5vdCBOb25lIGFuZCBrIGluIHFhdHRycyBhbmQgdiBpbiByZXNvbHZlZF9uYW1lczoKICAgICAgICAgICAgICAgICAgICB2ID0gcGFyc2VkX3FuYW1lc1tyZXNvbHZlZF9uYW1lc1t2XV1bMF0KICAgICAgICAgICAgICAgIGF0dHJfcW5hbWUsIGF0dHJfbmFtZSwgdXJpID0gcGFyc2VkX3FuYW1lc1trXQogICAgICAgICAgICAgICAgIyBObyBwcmVmaXggZm9yIGF0dHJpYnV0ZXMgaW4gZGVmYXVsdCAoJycpIG5hbWVzcGFjZS4KICAgICAgICAgICAgICAgIGF0dHJfbGlzdC5hcHBlbmQoKGF0dHJfcW5hbWUgaWYgdXJpIGVsc2UgYXR0cl9uYW1lLCB2KSkKCiAgICAgICAgIyBIb25vdXIgeG1sOnNwYWNlIGF0dHJpYnV0ZXMuCiAgICAgICAgc3BhY2VfYmVoYXZpb3VyID0gYXR0cnMuZ2V0KCd7aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlfXNwYWNlJykKICAgICAgICBzZWxmLl9wcmVzZXJ2ZV9zcGFjZS5hcHBlbmQoCiAgICAgICAgICAgIHNwYWNlX2JlaGF2aW91ciA9PSAncHJlc2VydmUnIGlmIHNwYWNlX2JlaGF2aW91cgogICAgICAgICAgICBlbHNlIHNlbGYuX3ByZXNlcnZlX3NwYWNlWy0xXSkKCiAgICAgICAgIyBXcml0ZSB0aGUgdGFnLgogICAgICAgIHdyaXRlID0gc2VsZi5fd3JpdGUKICAgICAgICB3cml0ZSgnPCcgKyBwYXJzZWRfcW5hbWVzW3RhZ11bMF0pCiAgICAgICAgaWYgYXR0cl9saXN0OgogICAgICAgICAgICB3cml0ZSgnJy5qb2luKFtmJyB7a309IntfZXNjYXBlX2F0dHJpYl9jMTRuKHYpfSInIGZvciBrLCB2IGluIGF0dHJfbGlzdF0pKQogICAgICAgIHdyaXRlKCc+JykKCiAgICAgICAgIyBXcml0ZSB0aGUgcmVzb2x2ZWQgcW5hbWUgdGV4dCBjb250ZW50LgogICAgICAgIGlmIHFuYW1lX3RleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHdyaXRlKF9lc2NhcGVfY2RhdGFfYzE0bihwYXJzZWRfcW5hbWVzW3Jlc29sdmVkX25hbWVzW3FuYW1lX3RleHRdXVswXSkpCgogICAgICAgIHNlbGYuX3Jvb3Rfc2VlbiA9IFRydWUKICAgICAgICBzZWxmLl9uc19zdGFjay5hcHBlbmQoW10pCgogICAgZGVmIGVuZChzZWxmLCB0YWcpOgogICAgICAgIGlmIHNlbGYuX2lnbm9yZWRfZGVwdGg6CiAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZGVwdGggLT0gMQogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBzZWxmLl9kYXRhOgogICAgICAgICAgICBzZWxmLl9mbHVzaCgpCiAgICAgICAgc2VsZi5fd3JpdGUoZic8L3tzZWxmLl9xbmFtZSh0YWcpWzBdfT4nKQogICAgICAgIHNlbGYuX3ByZXNlcnZlX3NwYWNlLnBvcCgpCiAgICAgICAgc2VsZi5fcm9vdF9kb25lID0gbGVuKHNlbGYuX3ByZXNlcnZlX3NwYWNlKSA9PSAxCiAgICAgICAgc2VsZi5fZGVjbGFyZWRfbnNfc3RhY2sucG9wKCkKICAgICAgICBzZWxmLl9uc19zdGFjay5wb3AoKQoKICAgIGRlZiBjb21tZW50KHNlbGYsIHRleHQpOgogICAgICAgIGlmIG5vdCBzZWxmLl93aXRoX2NvbW1lbnRzOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBzZWxmLl9pZ25vcmVkX2RlcHRoOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBzZWxmLl9yb290X2RvbmU6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlKCdcbicpCiAgICAgICAgZWxpZiBzZWxmLl9yb290X3NlZW4gYW5kIHNlbGYuX2RhdGE6CiAgICAgICAgICAgIHNlbGYuX2ZsdXNoKCkKICAgICAgICBzZWxmLl93cml0ZShmJzwhLS17X2VzY2FwZV9jZGF0YV9jMTRuKHRleHQpfS0tPicpCiAgICAgICAgaWYgbm90IHNlbGYuX3Jvb3Rfc2VlbjoKICAgICAgICAgICAgc2VsZi5fd3JpdGUoJ1xuJykKCiAgICBkZWYgcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKICAgICAgICBpZiBzZWxmLl9pZ25vcmVkX2RlcHRoOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBzZWxmLl9yb290X2RvbmU6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlKCdcbicpCiAgICAgICAgZWxpZiBzZWxmLl9yb290X3NlZW4gYW5kIHNlbGYuX2RhdGE6CiAgICAgICAgICAgIHNlbGYuX2ZsdXNoKCkKICAgICAgICBzZWxmLl93cml0ZSgKICAgICAgICAgICAgZic8P3t0YXJnZXR9IHtfZXNjYXBlX2NkYXRhX2MxNG4oZGF0YSl9Pz4nIGlmIGRhdGEgZWxzZSBmJzw/e3RhcmdldH0/PicpCiAgICAgICAgaWYgbm90IHNlbGYuX3Jvb3Rfc2VlbjoKICAgICAgICAgICAgc2VsZi5fd3JpdGUoJ1xuJykKCgpkZWYgX2VzY2FwZV9jZGF0YV9jMTRuKHRleHQpOgogICAgIyBlc2NhcGUgY2hhcmFjdGVyIGRhdGEKICAgIHRyeToKICAgICAgICAjIGl0J3Mgd29ydGggYXZvaWRpbmcgZG8tbm90aGluZyBjYWxscyBmb3Igc3RyaW5ncyB0aGF0IGFyZQogICAgICAgICMgc2hvcnRlciB0aGFuIDUwMCBjaGFyYWN0ZXIsIG9yIHNvLiAgYXNzdW1lIHRoYXQncywgYnkgZmFyLAogICAgICAgICMgdGhlIG1vc3QgY29tbW9uIGNhc2UgaW4gbW9zdCBhcHBsaWNhdGlvbnMuCiAgICAgICAgaWYgJyYnIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJyYnLCAnJmFtcDsnKQogICAgICAgIGlmICc8JyBpbiB0ZXh0OgogICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCc8JywgJyZsdDsnKQogICAgICAgIGlmICc+JyBpbiB0ZXh0OgogICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCc+JywgJyZndDsnKQogICAgICAgIGlmICdccicgaW4gdGV4dDoKICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnXHInLCAnJiN4RDsnKQogICAgICAgIHJldHVybiB0ZXh0CiAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHRleHQpCgoKZGVmIF9lc2NhcGVfYXR0cmliX2MxNG4odGV4dCk6CiAgICAjIGVzY2FwZSBhdHRyaWJ1dGUgdmFsdWUKICAgIHRyeToKICAgICAgICBpZiAnJicgaW4gdGV4dDoKICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnJicsICcmYW1wOycpCiAgICAgICAgaWYgJzwnIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJzwnLCAnJmx0OycpCiAgICAgICAgaWYgJyInIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJyInLCAnJnF1b3Q7JykKICAgICAgICBpZiAnXHQnIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ1x0JywgJyYjeDk7JykKICAgICAgICBpZiAnXG4nIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ1xuJywgJyYjeEE7JykKICAgICAgICBpZiAnXHInIGluIHRleHQ6CiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ1xyJywgJyYjeEQ7JykKICAgICAgICByZXR1cm4gdGV4dAogICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICBfcmFpc2Vfc2VyaWFsaXphdGlvbl9lcnJvcih0ZXh0KQoKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgSW1wb3J0IHRoZSBDIGFjY2VsZXJhdG9ycwp0cnk6CiAgICAjIEVsZW1lbnQgaXMgZ29pbmcgdG8gYmUgc2hhZG93ZWQgYnkgdGhlIEMgaW1wbGVtZW50YXRpb24uIFdlIG5lZWQgdG8ga2VlcAogICAgIyB0aGUgUHl0aG9uIHZlcnNpb24gb2YgaXQgYWNjZXNzaWJsZSBmb3Igc29tZSAiY3JlYXRpdmUiIGJ5IGV4dGVybmFsIGNvZGUKICAgICMgKHNlZSB0ZXN0cykKICAgIF9FbGVtZW50X1B5ID0gRWxlbWVudAoKICAgICMgRWxlbWVudCwgU3ViRWxlbWVudCwgUGFyc2VFcnJvciwgVHJlZUJ1aWxkZXIsIFhNTFBhcnNlciwgX3NldF9mYWN0b3JpZXMKICAgIGZyb20gX2VsZW1lbnR0cmVlIGltcG9ydCAqCiAgICBmcm9tIF9lbGVtZW50dHJlZSBpbXBvcnQgX3NldF9mYWN0b3JpZXMKZXhjZXB0IEltcG9ydEVycm9yOgogICAgcGFzcwplbHNlOgogICAgX3NldF9mYWN0b3JpZXMoQ29tbWVudCwgUHJvY2Vzc2luZ0luc3RydWN0aW9uKQpQSwMEFAAAAAAAAyCjVvky9lFFBgAARQYAABUAAAB4bWwvZXRyZWUvX19pbml0X18ucHkjICRJZDogX19pbml0X18ucHkgMzM3NSAyMDA4LTAyLTEzIDA4OjA1OjA4WiBmcmVkcmlrICQKIyBlbGVtZW50dHJlZSBwYWNrYWdlCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhlIEVsZW1lbnRUcmVlIHRvb2xraXQgaXMKIwojIENvcHlyaWdodCAoYykgMTk5OS0yMDA4IGJ5IEZyZWRyaWsgTHVuZGgKIwojIEJ5IG9idGFpbmluZywgdXNpbmcsIGFuZC9vciBjb3B5aW5nIHRoaXMgc29mdHdhcmUgYW5kL29yIGl0cwojIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiwgeW91IGFncmVlIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwKIyBhbmQgd2lsbCBjb21wbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zOgojCiMgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKIyBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMKIyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluCiMgYWxsIGNvcGllcywgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgojIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgojIFNlY3JldCBMYWJzIEFCIG9yIHRoZSBhdXRob3Igbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5CiMgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4KIyBwcmlvciBwZXJtaXNzaW9uLgojCiMgU0VDUkVUIExBQlMgQUIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJECiMgVE8gVEhJUyBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlQtCiMgQUJJTElUWSBBTkQgRklUTkVTUy4gIElOIE5PIEVWRU5UIFNIQUxMIFNFQ1JFVCBMQUJTIEFCIE9SIFRIRSBBVVRIT1IKIyBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZCiMgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsCiMgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMKIyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFCiMgT0YgVEhJUyBTT0ZUV0FSRS4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiMgU2VlIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvcHNmL2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLgpQSwMEFAAAAAAAAyCjVomq3uBSAAAAUgAAABkAAAB4bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5IyBEZXByZWNhdGVkIGFsaWFzIGZvciB4bWwuZXRyZWUuRWxlbWVudFRyZWUKCmZyb20geG1sLmV0cmVlLkVsZW1lbnRUcmVlIGltcG9ydCAqClBLAwQUAAAAAAADIKNWO918uacAAACnAAAAFwAAAHhtbC9wYXJzZXJzL19faW5pdF9fLnB5IiIiUHl0aG9uIGludGVyZmFjZXMgdG8gWE1MIHBhcnNlcnMuCgpUaGlzIHBhY2thZ2UgY29udGFpbnMgb25lIG1vZHVsZToKCmV4cGF0IC0tIFB5dGhvbiB3cmFwcGVyIGZvciBKYW1lcyBDbGFyaydzIEV4cGF0IHBhcnNlciwgd2l0aCBuYW1lc3BhY2UKICAgICAgICAgc3VwcG9ydC4KCiIiIgpQSwMEFAAAAAAAAyCjVjtjvX34AAAA+AAAABQAAAB4bWwvcGFyc2Vycy9leHBhdC5weSIiIkludGVyZmFjZSB0byB0aGUgRXhwYXQgbm9uLXZhbGlkYXRpbmcgWE1MIHBhcnNlci4iIiIKaW1wb3J0IHN5cwoKZnJvbSBweWV4cGF0IGltcG9ydCAqCgojIHByb3ZpZGUgcHlleHBhdCBzdWJtb2R1bGVzIGFzIHhtbC5wYXJzZXJzLmV4cGF0IHN1Ym1vZHVsZXMKc3lzLm1vZHVsZXNbJ3htbC5wYXJzZXJzLmV4cGF0Lm1vZGVsJ10gPSBtb2RlbApzeXMubW9kdWxlc1sneG1sLnBhcnNlcnMuZXhwYXQuZXJyb3JzJ10gPSBlcnJvcnMKUEsDBBQAAAAAAAMgo1ZaDifzOg4AADoOAAATAAAAeG1sL3NheC9fX2luaXRfXy5weSIiIlNpbXBsZSBBUEkgZm9yIFhNTCAoU0FYKSBpbXBsZW1lbnRhdGlvbiBmb3IgUHl0aG9uLgoKVGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFNBWCAyIGludGVyZmFjZTsKaW5mb3JtYXRpb24gYWJvdXQgdGhlIEphdmEgdmVyc2lvbiBvZiB0aGUgaW50ZXJmYWNlIGNhbiBiZSBmb3VuZCBhdApodHRwOi8vd3d3Lm1lZ2dpbnNvbi5jb20vU0FYLy4gIFRoZSBQeXRob24gdmVyc2lvbiBvZiB0aGUgaW50ZXJmYWNlIGlzCmRvY3VtZW50ZWQgYXQgPC4uLj4uCgpUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBtb2R1bGVzOgoKaGFuZGxlciAtLSBCYXNlIGNsYXNzZXMgYW5kIGNvbnN0YW50cyB3aGljaCBkZWZpbmUgdGhlIFNBWCAyIEFQSSBmb3IKICAgICAgICAgICB0aGUgJ2NsaWVudC1zaWRlJyBvZiBTQVggZm9yIFB5dGhvbi4KCnNheHV0aWxzIC0tIEltcGxlbWVudGF0aW9uIG9mIHRoZSBjb252ZW5pZW5jZSBjbGFzc2VzIGNvbW1vbmx5IHVzZWQgdG8KICAgICAgICAgICAgd29yayB3aXRoIFNBWC4KCnhtbHJlYWRlciAtLSBCYXNlIGNsYXNzZXMgYW5kIGNvbnN0YW50cyB3aGljaCBkZWZpbmUgdGhlIFNBWCAyIEFQSSBmb3IKICAgICAgICAgICAgIHRoZSBwYXJzZXJzIHVzZWQgd2l0aCBTQVggZm9yIFB5dGhvbi4KCmV4cGF0cmVhZGVyIC0tIERyaXZlciB0aGF0IGFsbG93cyB1c2Ugb2YgdGhlIEV4cGF0IHBhcnNlciB3aXRoIFNBWC4KIiIiCgpmcm9tIC54bWxyZWFkZXIgaW1wb3J0IElucHV0U291cmNlCmZyb20gLmhhbmRsZXIgaW1wb3J0IENvbnRlbnRIYW5kbGVyLCBFcnJvckhhbmRsZXIKZnJvbSAuX2V4Y2VwdGlvbnMgaW1wb3J0IFNBWEV4Y2VwdGlvbiwgU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiwgXAogICAgICAgICAgICAgICAgICAgICAgICBTQVhQYXJzZUV4Y2VwdGlvbiwgU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uLCBcCiAgICAgICAgICAgICAgICAgICAgICAgIFNBWFJlYWRlck5vdEF2YWlsYWJsZQoKCmRlZiBwYXJzZShzb3VyY2UsIGhhbmRsZXIsIGVycm9ySGFuZGxlcj1FcnJvckhhbmRsZXIoKSk6CiAgICBwYXJzZXIgPSBtYWtlX3BhcnNlcigpCiAgICBwYXJzZXIuc2V0Q29udGVudEhhbmRsZXIoaGFuZGxlcikKICAgIHBhcnNlci5zZXRFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKQogICAgcGFyc2VyLnBhcnNlKHNvdXJjZSkKCmRlZiBwYXJzZVN0cmluZyhzdHJpbmcsIGhhbmRsZXIsIGVycm9ySGFuZGxlcj1FcnJvckhhbmRsZXIoKSk6CiAgICBpbXBvcnQgaW8KICAgIGlmIGVycm9ySGFuZGxlciBpcyBOb25lOgogICAgICAgIGVycm9ySGFuZGxlciA9IEVycm9ySGFuZGxlcigpCiAgICBwYXJzZXIgPSBtYWtlX3BhcnNlcigpCiAgICBwYXJzZXIuc2V0Q29udGVudEhhbmRsZXIoaGFuZGxlcikKICAgIHBhcnNlci5zZXRFcnJvckhhbmRsZXIoZXJyb3JIYW5kbGVyKQoKICAgIGlucHNyYyA9IElucHV0U291cmNlKCkKICAgIGlmIGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpOgogICAgICAgIGlucHNyYy5zZXRDaGFyYWN0ZXJTdHJlYW0oaW8uU3RyaW5nSU8oc3RyaW5nKSkKICAgIGVsc2U6CiAgICAgICAgaW5wc3JjLnNldEJ5dGVTdHJlYW0oaW8uQnl0ZXNJTyhzdHJpbmcpKQogICAgcGFyc2VyLnBhcnNlKGlucHNyYykKCiMgdGhpcyBpcyB0aGUgcGFyc2VyIGxpc3QgdXNlZCBieSB0aGUgbWFrZV9wYXJzZXIgZnVuY3Rpb24gaWYgbm8KIyBhbHRlcm5hdGl2ZXMgYXJlIGdpdmVuIGFzIHBhcmFtZXRlcnMgdG8gdGhlIGZ1bmN0aW9uCgpkZWZhdWx0X3BhcnNlcl9saXN0ID0gWyJ4bWwuc2F4LmV4cGF0cmVhZGVyIl0KCiMgdGVsbCBtb2R1bGVmaW5kZXIgdGhhdCBpbXBvcnRpbmcgc2F4IHBvdGVudGlhbGx5IGltcG9ydHMgZXhwYXRyZWFkZXIKX2ZhbHNlID0gMAppZiBfZmFsc2U6CiAgICBpbXBvcnQgeG1sLnNheC5leHBhdHJlYWRlcgoKaW1wb3J0IG9zLCBzeXMKaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQgYW5kICJQWV9TQVhfUEFSU0VSIiBpbiBvcy5lbnZpcm9uOgogICAgZGVmYXVsdF9wYXJzZXJfbGlzdCA9IG9zLmVudmlyb25bIlBZX1NBWF9QQVJTRVIiXS5zcGxpdCgiLCIpCmRlbCBvcwoKX2tleSA9ICJweXRob24ueG1sLnNheC5wYXJzZXIiCmlmIHN5cy5wbGF0Zm9ybVs6NF0gPT0gImphdmEiIGFuZCBzeXMucmVnaXN0cnkuY29udGFpbnNLZXkoX2tleSk6CiAgICBkZWZhdWx0X3BhcnNlcl9saXN0ID0gc3lzLnJlZ2lzdHJ5LmdldFByb3BlcnR5KF9rZXkpLnNwbGl0KCIsIikKCgpkZWYgbWFrZV9wYXJzZXIocGFyc2VyX2xpc3Q9KCkpOgogICAgIiIiQ3JlYXRlcyBhbmQgcmV0dXJucyBhIFNBWCBwYXJzZXIuCgogICAgQ3JlYXRlcyB0aGUgZmlyc3QgcGFyc2VyIGl0IGlzIGFibGUgdG8gaW5zdGFudGlhdGUgb2YgdGhlIG9uZXMKICAgIGdpdmVuIGluIHRoZSBpdGVyYWJsZSBjcmVhdGVkIGJ5IGNoYWluaW5nIHBhcnNlcl9saXN0IGFuZAogICAgZGVmYXVsdF9wYXJzZXJfbGlzdC4gIFRoZSBpdGVyYWJsZXMgbXVzdCBjb250YWluIHRoZSBuYW1lcyBvZiBQeXRob24KICAgIG1vZHVsZXMgY29udGFpbmluZyBib3RoIGEgU0FYIHBhcnNlciBhbmQgYSBjcmVhdGVfcGFyc2VyIGZ1bmN0aW9uLiIiIgoKICAgIGZvciBwYXJzZXJfbmFtZSBpbiBsaXN0KHBhcnNlcl9saXN0KSArIGRlZmF1bHRfcGFyc2VyX2xpc3Q6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXR1cm4gX2NyZWF0ZV9wYXJzZXIocGFyc2VyX25hbWUpCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgICAgIGlmIHBhcnNlcl9uYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIyBUaGUgcGFyc2VyIG1vZHVsZSB3YXMgZm91bmQsIGJ1dCBpbXBvcnRpbmcgaXQKICAgICAgICAgICAgICAgICMgZmFpbGVkIHVuZXhwZWN0ZWRseSwgcGFzcyB0aGlzIGV4Y2VwdGlvbiB0aHJvdWdoCiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBTQVhSZWFkZXJOb3RBdmFpbGFibGU6CiAgICAgICAgICAgICMgVGhlIHBhcnNlciBtb2R1bGUgZGV0ZWN0ZWQgdGhhdCBpdCB3b24ndCB3b3JrIHByb3Blcmx5LAogICAgICAgICAgICAjIHNvIHRyeSB0aGUgbmV4dCBvbmUKICAgICAgICAgICAgcGFzcwoKICAgIHJhaXNlIFNBWFJlYWRlck5vdEF2YWlsYWJsZSgiTm8gcGFyc2VycyBmb3VuZCIsIE5vbmUpCgojIC0tLSBJbnRlcm5hbCB1dGlsaXR5IG1ldGhvZHMgdXNlZCBieSBtYWtlX3BhcnNlcgoKaWYgc3lzLnBsYXRmb3JtWyA6IDRdID09ICJqYXZhIjoKICAgIGRlZiBfY3JlYXRlX3BhcnNlcihwYXJzZXJfbmFtZSk6CiAgICAgICAgZnJvbSBvcmcucHl0aG9uLmNvcmUgaW1wb3J0IGltcAogICAgICAgIGRydl9tb2R1bGUgPSBpbXAuaW1wb3J0TmFtZShwYXJzZXJfbmFtZSwgMCwgZ2xvYmFscygpKQogICAgICAgIHJldHVybiBkcnZfbW9kdWxlLmNyZWF0ZV9wYXJzZXIoKQoKZWxzZToKICAgIGRlZiBfY3JlYXRlX3BhcnNlcihwYXJzZXJfbmFtZSk6CiAgICAgICAgZHJ2X21vZHVsZSA9IF9faW1wb3J0X18ocGFyc2VyX25hbWUse30se30sWydjcmVhdGVfcGFyc2VyJ10pCiAgICAgICAgcmV0dXJuIGRydl9tb2R1bGUuY3JlYXRlX3BhcnNlcigpCgpkZWwgc3lzClBLAwQUAAAAAAADIKNWfUa+vrESAACxEgAAFgAAAHhtbC9zYXgvX2V4Y2VwdGlvbnMucHkiIiJEaWZmZXJlbnQga2luZHMgb2YgU0FYIEV4Y2VwdGlvbnMiIiIKaW1wb3J0IHN5cwppZiBzeXMucGxhdGZvcm1bOjRdID09ICJqYXZhIjoKICAgIGZyb20gamF2YS5sYW5nIGltcG9ydCBFeGNlcHRpb24KZGVsIHN5cwoKIyA9PT09PSBTQVhFWENFUFRJT04gPT09PT0KCmNsYXNzIFNBWEV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgIiIiRW5jYXBzdWxhdGUgYW4gWE1MIGVycm9yIG9yIHdhcm5pbmcuIFRoaXMgY2xhc3MgY2FuIGNvbnRhaW4KICAgIGJhc2ljIGVycm9yIG9yIHdhcm5pbmcgaW5mb3JtYXRpb24gZnJvbSBlaXRoZXIgdGhlIFhNTCBwYXJzZXIgb3IKICAgIHRoZSBhcHBsaWNhdGlvbjogeW91IGNhbiBzdWJjbGFzcyBpdCB0byBwcm92aWRlIGFkZGl0aW9uYWwKICAgIGZ1bmN0aW9uYWxpdHksIG9yIHRvIGFkZCBsb2NhbGl6YXRpb24uIE5vdGUgdGhhdCBhbHRob3VnaCB5b3Ugd2lsbAogICAgcmVjZWl2ZSBhIFNBWEV4Y2VwdGlvbiBhcyB0aGUgYXJndW1lbnQgdG8gdGhlIGhhbmRsZXJzIGluIHRoZQogICAgRXJyb3JIYW5kbGVyIGludGVyZmFjZSwgeW91IGFyZSBub3QgYWN0dWFsbHkgcmVxdWlyZWQgdG8gcmFpc2UKICAgIHRoZSBleGNlcHRpb247IGluc3RlYWQsIHlvdSBjYW4gc2ltcGx5IHJlYWQgdGhlIGluZm9ybWF0aW9uIGluCiAgICBpdC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBleGNlcHRpb249Tm9uZSk6CiAgICAgICAgIiIiQ3JlYXRlcyBhbiBleGNlcHRpb24uIFRoZSBtZXNzYWdlIGlzIHJlcXVpcmVkLCBidXQgdGhlIGV4Y2VwdGlvbgogICAgICAgIGlzIG9wdGlvbmFsLiIiIgogICAgICAgIHNlbGYuX21zZyA9IG1zZwogICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IGV4Y2VwdGlvbgogICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCgogICAgZGVmIGdldE1lc3NhZ2Uoc2VsZik6CiAgICAgICAgIlJldHVybiBhIG1lc3NhZ2UgZm9yIHRoaXMgZXhjZXB0aW9uLiIKICAgICAgICByZXR1cm4gc2VsZi5fbXNnCgogICAgZGVmIGdldEV4Y2VwdGlvbihzZWxmKToKICAgICAgICAiUmV0dXJuIHRoZSBlbWJlZGRlZCBleGNlcHRpb24sIG9yIE5vbmUgaWYgdGhlcmUgd2FzIG5vbmUuIgogICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb24KCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAiQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBleGNlcHRpb24uIgogICAgICAgIHJldHVybiBzZWxmLl9tc2cKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXgpOgogICAgICAgICIiIkF2b2lkcyB3ZWlyZCBlcnJvciBtZXNzYWdlcyBpZiBzb21lb25lIGRvZXMgZXhjZXB0aW9uW2l4XSBieQogICAgICAgIG1pc3Rha2UsIHNpbmNlIEV4Y2VwdGlvbiBoYXMgX19nZXRpdGVtX18gZGVmaW5lZC4iIiIKICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiX19nZXRpdGVtX18iKQoKCiMgPT09PT0gU0FYUEFSU0VFWENFUFRJT04gPT09PT0KCmNsYXNzIFNBWFBhcnNlRXhjZXB0aW9uKFNBWEV4Y2VwdGlvbik6CiAgICAiIiJFbmNhcHN1bGF0ZSBhbiBYTUwgcGFyc2UgZXJyb3Igb3Igd2FybmluZy4KCiAgICBUaGlzIGV4Y2VwdGlvbiB3aWxsIGluY2x1ZGUgaW5mb3JtYXRpb24gZm9yIGxvY2F0aW5nIHRoZSBlcnJvciBpbgogICAgdGhlIG9yaWdpbmFsIFhNTCBkb2N1bWVudC4gTm90ZSB0aGF0IGFsdGhvdWdoIHRoZSBhcHBsaWNhdGlvbiB3aWxsCiAgICByZWNlaXZlIGEgU0FYUGFyc2VFeGNlcHRpb24gYXMgdGhlIGFyZ3VtZW50IHRvIHRoZSBoYW5kbGVycyBpbiB0aGUKICAgIEVycm9ySGFuZGxlciBpbnRlcmZhY2UsIHRoZSBhcHBsaWNhdGlvbiBpcyBub3QgYWN0dWFsbHkgcmVxdWlyZWQKICAgIHRvIHJhaXNlIHRoZSBleGNlcHRpb247IGluc3RlYWQsIGl0IGNhbiBzaW1wbHkgcmVhZCB0aGUKICAgIGluZm9ybWF0aW9uIGluIGl0IGFuZCB0YWtlIGEgZGlmZmVyZW50IGFjdGlvbi4KCiAgICBTaW5jZSB0aGlzIGV4Y2VwdGlvbiBpcyBhIHN1YmNsYXNzIG9mIFNBWEV4Y2VwdGlvbiwgaXQgaW5oZXJpdHMKICAgIHRoZSBhYmlsaXR5IHRvIHdyYXAgYW5vdGhlciBleGNlcHRpb24uIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgZXhjZXB0aW9uLCBsb2NhdG9yKToKICAgICAgICAiQ3JlYXRlcyB0aGUgZXhjZXB0aW9uLiBUaGUgZXhjZXB0aW9uIHBhcmFtZXRlciBpcyBhbGxvd2VkIHRvIGJlIE5vbmUuIgogICAgICAgIFNBWEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2csIGV4Y2VwdGlvbikKICAgICAgICBzZWxmLl9sb2NhdG9yID0gbG9jYXRvcgoKICAgICAgICAjIFdlIG5lZWQgdG8gY2FjaGUgdGhpcyBzdHVmZiBhdCBjb25zdHJ1Y3Rpb24gdGltZS4KICAgICAgICAjIElmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdGhlIG9iamVjdHMgdGhyb3VnaCB3aGljaCB3ZSBtdXN0CiAgICAgICAgIyB0cmF2ZXJzZSB0byBnZXQgdGhpcyBpbmZvcm1hdGlvbiBtYXkgYmUgZGVsZXRlZCBieSB0aGUgdGltZQogICAgICAgICMgaXQgZ2V0cyBjYXVnaHQuCiAgICAgICAgc2VsZi5fc3lzdGVtSWQgPSBzZWxmLl9sb2NhdG9yLmdldFN5c3RlbUlkKCkKICAgICAgICBzZWxmLl9jb2xudW0gPSBzZWxmLl9sb2NhdG9yLmdldENvbHVtbk51bWJlcigpCiAgICAgICAgc2VsZi5fbGluZW51bSA9IHNlbGYuX2xvY2F0b3IuZ2V0TGluZU51bWJlcigpCgogICAgZGVmIGdldENvbHVtbk51bWJlcihzZWxmKToKICAgICAgICAiIiJUaGUgY29sdW1uIG51bWJlciBvZiB0aGUgZW5kIG9mIHRoZSB0ZXh0IHdoZXJlIHRoZSBleGNlcHRpb24KICAgICAgICBvY2N1cnJlZC4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fY29sbnVtCgogICAgZGVmIGdldExpbmVOdW1iZXIoc2VsZik6CiAgICAgICAgIlRoZSBsaW5lIG51bWJlciBvZiB0aGUgZW5kIG9mIHRoZSB0ZXh0IHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuIgogICAgICAgIHJldHVybiBzZWxmLl9saW5lbnVtCgogICAgZGVmIGdldFB1YmxpY0lkKHNlbGYpOgogICAgICAgICJHZXQgdGhlIHB1YmxpYyBpZGVudGlmaWVyIG9mIHRoZSBlbnRpdHkgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4iCiAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2F0b3IuZ2V0UHVibGljSWQoKQoKICAgIGRlZiBnZXRTeXN0ZW1JZChzZWxmKToKICAgICAgICAiR2V0IHRoZSBzeXN0ZW0gaWRlbnRpZmllciBvZiB0aGUgZW50aXR5IHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuIgogICAgICAgIHJldHVybiBzZWxmLl9zeXN0ZW1JZAoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICJDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGV4Y2VwdGlvbi4iCiAgICAgICAgc3lzaWQgPSBzZWxmLmdldFN5c3RlbUlkKCkKICAgICAgICBpZiBzeXNpZCBpcyBOb25lOgogICAgICAgICAgICBzeXNpZCA9ICI8dW5rbm93bj4iCiAgICAgICAgbGluZW51bSA9IHNlbGYuZ2V0TGluZU51bWJlcigpCiAgICAgICAgaWYgbGluZW51bSBpcyBOb25lOgogICAgICAgICAgICBsaW5lbnVtID0gIj8iCiAgICAgICAgY29sbnVtID0gc2VsZi5nZXRDb2x1bW5OdW1iZXIoKQogICAgICAgIGlmIGNvbG51bSBpcyBOb25lOgogICAgICAgICAgICBjb2xudW0gPSAiPyIKICAgICAgICByZXR1cm4gIiVzOiVzOiVzOiAlcyIgJSAoc3lzaWQsIGxpbmVudW0sIGNvbG51bSwgc2VsZi5fbXNnKQoKCiMgPT09PT0gU0FYTk9UUkVDT0dOSVpFREVYQ0VQVElPTiA9PT09PQoKY2xhc3MgU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbihTQVhFeGNlcHRpb24pOgogICAgIiIiRXhjZXB0aW9uIGNsYXNzIGZvciBhbiB1bnJlY29nbml6ZWQgaWRlbnRpZmllci4KCiAgICBBbiBYTUxSZWFkZXIgd2lsbCByYWlzZSB0aGlzIGV4Y2VwdGlvbiB3aGVuIGl0IGlzIGNvbmZyb250ZWQgd2l0aCBhbgogICAgdW5yZWNvZ25pemVkIGZlYXR1cmUgb3IgcHJvcGVydHkuIFNBWCBhcHBsaWNhdGlvbnMgYW5kIGV4dGVuc2lvbnMgbWF5CiAgICB1c2UgdGhpcyBjbGFzcyBmb3Igc2ltaWxhciBwdXJwb3Nlcy4iIiIKCgojID09PT09IFNBWE5PVFNVUFBPUlRFREVYQ0VQVElPTiA9PT09PQoKY2xhc3MgU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uKFNBWEV4Y2VwdGlvbik6CiAgICAiIiJFeGNlcHRpb24gY2xhc3MgZm9yIGFuIHVuc3VwcG9ydGVkIG9wZXJhdGlvbi4KCiAgICBBbiBYTUxSZWFkZXIgd2lsbCByYWlzZSB0aGlzIGV4Y2VwdGlvbiB3aGVuIGEgc2VydmljZSBpdCBjYW5ub3QKICAgIHBlcmZvcm0gaXMgcmVxdWVzdGVkIChzcGVjaWZpY2FsbHkgc2V0dGluZyBhIHN0YXRlIG9yIHZhbHVlKS4gU0FYCiAgICBhcHBsaWNhdGlvbnMgYW5kIGV4dGVuc2lvbnMgbWF5IHVzZSB0aGlzIGNsYXNzIGZvciBzaW1pbGFyCiAgICBwdXJwb3Nlcy4iIiIKCiMgPT09PT0gU0FYTk9UU1VQUE9SVEVERVhDRVBUSU9OID09PT09CgpjbGFzcyBTQVhSZWFkZXJOb3RBdmFpbGFibGUoU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uKToKICAgICIiIkV4Y2VwdGlvbiBjbGFzcyBmb3IgYSBtaXNzaW5nIGRyaXZlci4KCiAgICBBbiBYTUxSZWFkZXIgbW9kdWxlIChkcml2ZXIpIHNob3VsZCByYWlzZSB0aGlzIGV4Y2VwdGlvbiB3aGVuIGl0CiAgICBpcyBmaXJzdCBpbXBvcnRlZCwgZS5nLiB3aGVuIGEgc3VwcG9ydCBtb2R1bGUgY2Fubm90IGJlIGltcG9ydGVkLgogICAgSXQgYWxzbyBtYXkgYmUgcmFpc2VkIGR1cmluZyBwYXJzaW5nLCBlLmcuIGlmIGV4ZWN1dGluZyBhbiBleHRlcm5hbAogICAgcHJvZ3JhbSBpcyBub3QgcGVybWl0dGVkLiIiIgpQSwMEFAAAAAAAAyCjVmwRIv1vPQAAbz0AABYAAAB4bWwvc2F4L2V4cGF0cmVhZGVyLnB5IiIiClNBWCBkcml2ZXIgZm9yIHRoZSBweWV4cGF0IEMgbW9kdWxlLiAgVGhpcyBkcml2ZXIgd29ya3Mgd2l0aApweWV4cGF0Ll9fdmVyc2lvbl9fID09ICcyLjIyJy4KIiIiCgp2ZXJzaW9uID0gIjAuMjAiCgpmcm9tIHhtbC5zYXguX2V4Y2VwdGlvbnMgaW1wb3J0ICoKZnJvbSB4bWwuc2F4LmhhbmRsZXIgaW1wb3J0IGZlYXR1cmVfdmFsaWRhdGlvbiwgZmVhdHVyZV9uYW1lc3BhY2VzCmZyb20geG1sLnNheC5oYW5kbGVyIGltcG9ydCBmZWF0dXJlX25hbWVzcGFjZV9wcmVmaXhlcwpmcm9tIHhtbC5zYXguaGFuZGxlciBpbXBvcnQgZmVhdHVyZV9leHRlcm5hbF9nZXMsIGZlYXR1cmVfZXh0ZXJuYWxfcGVzCmZyb20geG1sLnNheC5oYW5kbGVyIGltcG9ydCBmZWF0dXJlX3N0cmluZ19pbnRlcm5pbmcKZnJvbSB4bWwuc2F4LmhhbmRsZXIgaW1wb3J0IHByb3BlcnR5X3htbF9zdHJpbmcsIHByb3BlcnR5X2ludGVybmluZ19kaWN0CgojIHhtbC5wYXJzZXJzLmV4cGF0IGRvZXMgbm90IHJhaXNlIEltcG9ydEVycm9yIGluIEp5dGhvbgppbXBvcnQgc3lzCmlmIHN5cy5wbGF0Zm9ybVs6NF0gPT0gImphdmEiOgogICAgcmFpc2UgU0FYUmVhZGVyTm90QXZhaWxhYmxlKCJleHBhdCBub3QgYXZhaWxhYmxlIGluIEphdmEiLCBOb25lKQpkZWwgc3lzCgp0cnk6CiAgICBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICByYWlzZSBTQVhSZWFkZXJOb3RBdmFpbGFibGUoImV4cGF0IG5vdCBzdXBwb3J0ZWQiLCBOb25lKQplbHNlOgogICAgaWYgbm90IGhhc2F0dHIoZXhwYXQsICJQYXJzZXJDcmVhdGUiKToKICAgICAgICByYWlzZSBTQVhSZWFkZXJOb3RBdmFpbGFibGUoImV4cGF0IG5vdCBzdXBwb3J0ZWQiLCBOb25lKQpmcm9tIHhtbC5zYXggaW1wb3J0IHhtbHJlYWRlciwgc2F4dXRpbHMsIGhhbmRsZXIKCkF0dHJpYnV0ZXNJbXBsID0geG1scmVhZGVyLkF0dHJpYnV0ZXNJbXBsCkF0dHJpYnV0ZXNOU0ltcGwgPSB4bWxyZWFkZXIuQXR0cmlidXRlc05TSW1wbAoKIyBJZiB3ZSdyZSB1c2luZyBhIHN1ZmZpY2llbnRseSByZWNlbnQgdmVyc2lvbiBvZiBQeXRob24sIHdlIGNhbiB1c2UKIyB3ZWFrIHJlZmVyZW5jZXMgdG8gYXZvaWQgY3ljbGVzIGJldHdlZW4gdGhlIHBhcnNlciBhbmQgY29udGVudAojIGhhbmRsZXIsIG90aGVyd2lzZSB3ZSdsbCBqdXN0IGhhdmUgdG8gcHJldGVuZC4KdHJ5OgogICAgaW1wb3J0IF93ZWFrcmVmCmV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgIGRlZiBfbWtwcm94eShvKToKICAgICAgICByZXR1cm4gbwplbHNlOgogICAgaW1wb3J0IHdlYWtyZWYKICAgIF9ta3Byb3h5ID0gd2Vha3JlZi5wcm94eQogICAgZGVsIHdlYWtyZWYsIF93ZWFrcmVmCgpjbGFzcyBfQ2xvc2VkUGFyc2VyOgogICAgcGFzcwoKIyAtLS0gRXhwYXRMb2NhdG9yCgpjbGFzcyBFeHBhdExvY2F0b3IoeG1scmVhZGVyLkxvY2F0b3IpOgogICAgIiIiTG9jYXRvciBmb3IgdXNlIHdpdGggdGhlIEV4cGF0UGFyc2VyIGNsYXNzLgoKICAgIFRoaXMgdXNlcyBhIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSBwYXJzZXIgb2JqZWN0IHRvIGF2b2lkIGNyZWF0aW5nCiAgICBhIGNpcmN1bGFyIHJlZmVyZW5jZSBiZXR3ZWVuIHRoZSBwYXJzZXIgYW5kIHRoZSBjb250ZW50IGhhbmRsZXIuCiAgICAiIiIKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIpOgogICAgICAgIHNlbGYuX3JlZiA9IF9ta3Byb3h5KHBhcnNlcikKCiAgICBkZWYgZ2V0Q29sdW1uTnVtYmVyKHNlbGYpOgogICAgICAgIHBhcnNlciA9IHNlbGYuX3JlZgogICAgICAgIGlmIHBhcnNlci5fcGFyc2VyIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgcmV0dXJuIHBhcnNlci5fcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCgogICAgZGVmIGdldExpbmVOdW1iZXIoc2VsZik6CiAgICAgICAgcGFyc2VyID0gc2VsZi5fcmVmCiAgICAgICAgaWYgcGFyc2VyLl9wYXJzZXIgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICByZXR1cm4gcGFyc2VyLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCgogICAgZGVmIGdldFB1YmxpY0lkKHNlbGYpOgogICAgICAgIHBhcnNlciA9IHNlbGYuX3JlZgogICAgICAgIGlmIHBhcnNlciBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBwYXJzZXIuX3NvdXJjZS5nZXRQdWJsaWNJZCgpCgogICAgZGVmIGdldFN5c3RlbUlkKHNlbGYpOgogICAgICAgIHBhcnNlciA9IHNlbGYuX3JlZgogICAgICAgIGlmIHBhcnNlciBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBwYXJzZXIuX3NvdXJjZS5nZXRTeXN0ZW1JZCgpCgoKIyAtLS0gRXhwYXRQYXJzZXIKCmNsYXNzIEV4cGF0UGFyc2VyKHhtbHJlYWRlci5JbmNyZW1lbnRhbFBhcnNlciwgeG1scmVhZGVyLkxvY2F0b3IpOgogICAgIiIiU0FYIGRyaXZlciBmb3IgdGhlIHB5ZXhwYXQgQyBtb2R1bGUuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWVzcGFjZUhhbmRsaW5nPTAsIGJ1ZnNpemU9MioqMTYtMjApOgogICAgICAgIHhtbHJlYWRlci5JbmNyZW1lbnRhbFBhcnNlci5fX2luaXRfXyhzZWxmLCBidWZzaXplKQogICAgICAgIHNlbGYuX3NvdXJjZSA9IHhtbHJlYWRlci5JbnB1dFNvdXJjZSgpCiAgICAgICAgc2VsZi5fcGFyc2VyID0gTm9uZQogICAgICAgIHNlbGYuX25hbWVzcGFjZXMgPSBuYW1lc3BhY2VIYW5kbGluZwogICAgICAgIHNlbGYuX2xleF9oYW5kbGVyX3Byb3AgPSBOb25lCiAgICAgICAgc2VsZi5fcGFyc2luZyA9IEZhbHNlCiAgICAgICAgc2VsZi5fZW50aXR5X3N0YWNrID0gW10KICAgICAgICBzZWxmLl9leHRlcm5hbF9nZXMgPSAwCiAgICAgICAgc2VsZi5faW50ZXJuaW5nID0gTm9uZQoKICAgICMgWE1MUmVhZGVyIG1ldGhvZHMKCiAgICBkZWYgcGFyc2Uoc2VsZiwgc291cmNlKToKICAgICAgICAiUGFyc2UgYW4gWE1MIGRvY3VtZW50IGZyb20gYSBVUkwgb3IgYW4gSW5wdXRTb3VyY2UuIgogICAgICAgIHNvdXJjZSA9IHNheHV0aWxzLnByZXBhcmVfaW5wdXRfc291cmNlKHNvdXJjZSkKCiAgICAgICAgc2VsZi5fc291cmNlID0gc291cmNlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLnJlc2V0KCkKICAgICAgICAgICAgc2VsZi5fY29udF9oYW5kbGVyLnNldERvY3VtZW50TG9jYXRvcihFeHBhdExvY2F0b3Ioc2VsZikpCiAgICAgICAgICAgIHhtbHJlYWRlci5JbmNyZW1lbnRhbFBhcnNlci5wYXJzZShzZWxmLCBzb3VyY2UpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAjIGJwby0zMDI2NDogQ2xvc2UgdGhlIHNvdXJjZSBvbiBlcnJvciB0byBub3QgbGVhayByZXNvdXJjZXM6CiAgICAgICAgICAgICMgeG1sLnNheC5wYXJzZSgpIGRvZXNuJ3QgZ2l2ZSBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgcGFyc2VyCiAgICAgICAgICAgICMgdG8gdGhlIGNhbGxlcgogICAgICAgICAgICBzZWxmLl9jbG9zZV9zb3VyY2UoKQogICAgICAgICAgICByYWlzZQoKICAgIGRlZiBwcmVwYXJlUGFyc2VyKHNlbGYsIHNvdXJjZSk6CiAgICAgICAgaWYgc291cmNlLmdldFN5c3RlbUlkKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5TZXRCYXNlKHNvdXJjZS5nZXRTeXN0ZW1JZCgpKQoKICAgICMgUmVkZWZpbmVkIHNldENvbnRlbnRIYW5kbGVyIHRvIGFsbG93IGNoYW5naW5nIGhhbmRsZXJzIGR1cmluZyBwYXJzaW5nCgogICAgZGVmIHNldENvbnRlbnRIYW5kbGVyKHNlbGYsIGhhbmRsZXIpOgogICAgICAgIHhtbHJlYWRlci5JbmNyZW1lbnRhbFBhcnNlci5zZXRDb250ZW50SGFuZGxlcihzZWxmLCBoYW5kbGVyKQogICAgICAgIGlmIHNlbGYuX3BhcnNpbmc6CiAgICAgICAgICAgIHNlbGYuX3Jlc2V0X2NvbnRfaGFuZGxlcigpCgogICAgZGVmIGdldEZlYXR1cmUoc2VsZiwgbmFtZSk6CiAgICAgICAgaWYgbmFtZSA9PSBmZWF0dXJlX25hbWVzcGFjZXM6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lc3BhY2VzCiAgICAgICAgZWxpZiBuYW1lID09IGZlYXR1cmVfc3RyaW5nX2ludGVybmluZzoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVybmluZyBpcyBub3QgTm9uZQogICAgICAgIGVsaWYgbmFtZSBpbiAoZmVhdHVyZV92YWxpZGF0aW9uLCBmZWF0dXJlX2V4dGVybmFsX3BlcywKICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfbmFtZXNwYWNlX3ByZWZpeGVzKToKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICBlbGlmIG5hbWUgPT0gZmVhdHVyZV9leHRlcm5hbF9nZXM6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHRlcm5hbF9nZXMKICAgICAgICByYWlzZSBTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uKCJGZWF0dXJlICclcycgbm90IHJlY29nbml6ZWQiICUgbmFtZSkKCiAgICBkZWYgc2V0RmVhdHVyZShzZWxmLCBuYW1lLCBzdGF0ZSk6CiAgICAgICAgaWYgc2VsZi5fcGFyc2luZzoKICAgICAgICAgICAgcmFpc2UgU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uKCJDYW5ub3Qgc2V0IGZlYXR1cmVzIHdoaWxlIHBhcnNpbmciKQoKICAgICAgICBpZiBuYW1lID09IGZlYXR1cmVfbmFtZXNwYWNlczoKICAgICAgICAgICAgc2VsZi5fbmFtZXNwYWNlcyA9IHN0YXRlCiAgICAgICAgZWxpZiBuYW1lID09IGZlYXR1cmVfZXh0ZXJuYWxfZ2VzOgogICAgICAgICAgICBzZWxmLl9leHRlcm5hbF9nZXMgPSBzdGF0ZQogICAgICAgIGVsaWYgbmFtZSA9PSBmZWF0dXJlX3N0cmluZ19pbnRlcm5pbmc6CiAgICAgICAgICAgIGlmIHN0YXRlOgogICAgICAgICAgICAgICAgaWYgc2VsZi5faW50ZXJuaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ZXJuaW5nID0ge30KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNlbGYuX2ludGVybmluZyA9IE5vbmUKICAgICAgICBlbGlmIG5hbWUgPT0gZmVhdHVyZV92YWxpZGF0aW9uOgogICAgICAgICAgICBpZiBzdGF0ZToKICAgICAgICAgICAgICAgIHJhaXNlIFNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAiZXhwYXQgZG9lcyBub3Qgc3VwcG9ydCB2YWxpZGF0aW9uIikKICAgICAgICBlbGlmIG5hbWUgPT0gZmVhdHVyZV9leHRlcm5hbF9wZXM6CiAgICAgICAgICAgIGlmIHN0YXRlOgogICAgICAgICAgICAgICAgcmFpc2UgU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJleHBhdCBkb2VzIG5vdCByZWFkIGV4dGVybmFsIHBhcmFtZXRlciBlbnRpdGllcyIpCiAgICAgICAgZWxpZiBuYW1lID09IGZlYXR1cmVfbmFtZXNwYWNlX3ByZWZpeGVzOgogICAgICAgICAgICBpZiBzdGF0ZToKICAgICAgICAgICAgICAgIHJhaXNlIFNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAiZXhwYXQgZG9lcyBub3QgcmVwb3J0IG5hbWVzcGFjZSBwcmVmaXhlcyIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICJGZWF0dXJlICclcycgbm90IHJlY29nbml6ZWQiICUgbmFtZSkKCiAgICBkZWYgZ2V0UHJvcGVydHkoc2VsZiwgbmFtZSk6CiAgICAgICAgaWYgbmFtZSA9PSBoYW5kbGVyLnByb3BlcnR5X2xleGljYWxfaGFuZGxlcjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xleF9oYW5kbGVyX3Byb3AKICAgICAgICBlbGlmIG5hbWUgPT0gcHJvcGVydHlfaW50ZXJuaW5nX2RpY3Q6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbnRlcm5pbmcKICAgICAgICBlbGlmIG5hbWUgPT0gcHJvcGVydHlfeG1sX3N0cmluZzoKICAgICAgICAgICAgaWYgc2VsZi5fcGFyc2VyOgogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9wYXJzZXIsICJHZXRJbnB1dENvbnRleHQiKToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLkdldElucHV0Q29udGV4dCgpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIHZlcnNpb24gb2YgZXhwYXQgZG9lcyBub3Qgc3VwcG9ydCBnZXR0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICAiIHRoZSBYTUwgc3RyaW5nIikKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAiWE1MIHN0cmluZyBjYW5ub3QgYmUgcmV0dXJuZWQgd2hlbiBub3QgcGFyc2luZyIpCiAgICAgICAgcmFpc2UgU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbigiUHJvcGVydHkgJyVzJyBub3QgcmVjb2duaXplZCIgJSBuYW1lKQoKICAgIGRlZiBzZXRQcm9wZXJ0eShzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgaWYgbmFtZSA9PSBoYW5kbGVyLnByb3BlcnR5X2xleGljYWxfaGFuZGxlcjoKICAgICAgICAgICAgc2VsZi5fbGV4X2hhbmRsZXJfcHJvcCA9IHZhbHVlCiAgICAgICAgICAgIGlmIHNlbGYuX3BhcnNpbmc6CiAgICAgICAgICAgICAgICBzZWxmLl9yZXNldF9sZXhfaGFuZGxlcl9wcm9wKCkKICAgICAgICBlbGlmIG5hbWUgPT0gcHJvcGVydHlfaW50ZXJuaW5nX2RpY3Q6CiAgICAgICAgICAgIHNlbGYuX2ludGVybmluZyA9IHZhbHVlCiAgICAgICAgZWxpZiBuYW1lID09IHByb3BlcnR5X3htbF9zdHJpbmc6CiAgICAgICAgICAgIHJhaXNlIFNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbigiUHJvcGVydHkgJyVzJyBjYW5ub3QgYmUgc2V0IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24oIlByb3BlcnR5ICclcycgbm90IHJlY29nbml6ZWQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKQoKICAgICMgSW5jcmVtZW50YWxQYXJzZXIgbWV0aG9kcwoKICAgIGRlZiBmZWVkKHNlbGYsIGRhdGEsIGlzRmluYWw9RmFsc2UpOgogICAgICAgIGlmIG5vdCBzZWxmLl9wYXJzaW5nOgogICAgICAgICAgICBzZWxmLnJlc2V0KCkKICAgICAgICAgICAgc2VsZi5fcGFyc2luZyA9IFRydWUKICAgICAgICAgICAgc2VsZi5fY29udF9oYW5kbGVyLnN0YXJ0RG9jdW1lbnQoKQoKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgVGhlIGlzRmluYWwgcGFyYW1ldGVyIGlzIGludGVybmFsIHRvIHRoZSBleHBhdCByZWFkZXIuCiAgICAgICAgICAgICMgSWYgaXQgaXMgc2V0IHRvIHRydWUsIGV4cGF0IHdpbGwgY2hlY2sgdmFsaWRpdHkgb2YgdGhlIGVudGlyZQogICAgICAgICAgICAjIGRvY3VtZW50LiBXaGVuIGZlZWRpbmcgY2h1bmtzLCB0aGV5IGFyZSBub3Qgbm9ybWFsbHkgZmluYWwgLQogICAgICAgICAgICAjIGV4Y2VwdCB3aGVuIGludm9rZWQgZnJvbSBjbG9zZS4KICAgICAgICAgICAgc2VsZi5fcGFyc2VyLlBhcnNlKGRhdGEsIGlzRmluYWwpCiAgICAgICAgZXhjZXB0IGV4cGF0LmVycm9yIGFzIGU6CiAgICAgICAgICAgIGV4YyA9IFNBWFBhcnNlRXhjZXB0aW9uKGV4cGF0LkVycm9yU3RyaW5nKGUuY29kZSksIGUsIHNlbGYpCiAgICAgICAgICAgICMgRklYTUU6IHdoZW4gdG8gaW52b2tlIGVycm9yKCk/CiAgICAgICAgICAgIHNlbGYuX2Vycl9oYW5kbGVyLmZhdGFsRXJyb3IoZXhjKQoKICAgIGRlZiBfY2xvc2Vfc291cmNlKHNlbGYpOgogICAgICAgIHNvdXJjZSA9IHNlbGYuX3NvdXJjZQogICAgICAgIHRyeToKICAgICAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRDaGFyYWN0ZXJTdHJlYW0oKQogICAgICAgICAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkKICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQoKICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICBpZiAoc2VsZi5fZW50aXR5X3N0YWNrIG9yIHNlbGYuX3BhcnNlciBpcyBOb25lIG9yCiAgICAgICAgICAgIGlzaW5zdGFuY2Uoc2VsZi5fcGFyc2VyLCBfQ2xvc2VkUGFyc2VyKSk6CiAgICAgICAgICAgICMgSWYgd2UgYXJlIGNvbXBsZXRpbmcgYW4gZXh0ZXJuYWwgZW50aXR5LCBkbyBub3RoaW5nIGhlcmUKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZWxmLmZlZWQoYiIiLCBpc0ZpbmFsPVRydWUpCiAgICAgICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5lbmREb2N1bWVudCgpCiAgICAgICAgICAgIHNlbGYuX3BhcnNpbmcgPSBGYWxzZQogICAgICAgICAgICAjIGJyZWFrIGN5Y2xlIGNyZWF0ZWQgYnkgZXhwYXQgaGFuZGxlcnMgcG9pbnRpbmcgdG8gb3VyIG1ldGhvZHMKICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gTm9uZQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIHNlbGYuX3BhcnNpbmcgPSBGYWxzZQogICAgICAgICAgICBpZiBzZWxmLl9wYXJzZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAjIEtlZXAgRXJyb3JDb2x1bW5OdW1iZXIgYW5kIEVycm9yTGluZU51bWJlciBhZnRlciBjbG9zaW5nLgogICAgICAgICAgICAgICAgcGFyc2VyID0gX0Nsb3NlZFBhcnNlcigpCiAgICAgICAgICAgICAgICBwYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIgPSBzZWxmLl9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIKICAgICAgICAgICAgICAgIHBhcnNlci5FcnJvckxpbmVOdW1iZXIgPSBzZWxmLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCiAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc291cmNlKCkKCiAgICBkZWYgX3Jlc2V0X2NvbnRfaGFuZGxlcihzZWxmKToKICAgICAgICBzZWxmLl9wYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udF9oYW5kbGVyLnByb2Nlc3NpbmdJbnN0cnVjdGlvbgogICAgICAgIHNlbGYuX3BhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHNlbGYuX2NvbnRfaGFuZGxlci5jaGFyYWN0ZXJzCgogICAgZGVmIF9yZXNldF9sZXhfaGFuZGxlcl9wcm9wKHNlbGYpOgogICAgICAgIGxleCA9IHNlbGYuX2xleF9oYW5kbGVyX3Byb3AKICAgICAgICBwYXJzZXIgPSBzZWxmLl9wYXJzZXIKICAgICAgICBpZiBsZXggaXMgTm9uZToKICAgICAgICAgICAgcGFyc2VyLkNvbW1lbnRIYW5kbGVyID0gTm9uZQogICAgICAgICAgICBwYXJzZXIuU3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyID0gTm9uZQogICAgICAgICAgICBwYXJzZXIuRW5kQ2RhdGFTZWN0aW9uSGFuZGxlciA9IE5vbmUKICAgICAgICAgICAgcGFyc2VyLlN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyID0gTm9uZQogICAgICAgICAgICBwYXJzZXIuRW5kRG9jdHlwZURlY2xIYW5kbGVyID0gTm9uZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBhcnNlci5Db21tZW50SGFuZGxlciA9IGxleC5jb21tZW50CiAgICAgICAgICAgIHBhcnNlci5TdGFydENkYXRhU2VjdGlvbkhhbmRsZXIgPSBsZXguc3RhcnRDREFUQQogICAgICAgICAgICBwYXJzZXIuRW5kQ2RhdGFTZWN0aW9uSGFuZGxlciA9IGxleC5lbmRDREFUQQogICAgICAgICAgICBwYXJzZXIuU3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgPSBzZWxmLnN0YXJ0X2RvY3R5cGVfZGVjbAogICAgICAgICAgICBwYXJzZXIuRW5kRG9jdHlwZURlY2xIYW5kbGVyID0gbGV4LmVuZERURAoKICAgIGRlZiByZXNldChzZWxmKToKICAgICAgICBpZiBzZWxmLl9uYW1lc3BhY2VzOgogICAgICAgICAgICBzZWxmLl9wYXJzZXIgPSBleHBhdC5QYXJzZXJDcmVhdGUoc2VsZi5fc291cmNlLmdldEVuY29kaW5nKCksICIgIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybj1zZWxmLl9pbnRlcm5pbmcpCiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5uYW1lc3BhY2VfcHJlZml4ZXMgPSAxCiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5zdGFydF9lbGVtZW50X25zCiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuZW5kX2VsZW1lbnRfbnMKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9wYXJzZXIgPSBleHBhdC5QYXJzZXJDcmVhdGUoc2VsZi5fc291cmNlLmdldEVuY29kaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm4gPSBzZWxmLl9pbnRlcm5pbmcpCiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5zdGFydF9lbGVtZW50CiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuZW5kX2VsZW1lbnQKCiAgICAgICAgc2VsZi5fcmVzZXRfY29udF9oYW5kbGVyKCkKICAgICAgICBzZWxmLl9wYXJzZXIuVW5wYXJzZWRFbnRpdHlEZWNsSGFuZGxlciA9IHNlbGYudW5wYXJzZWRfZW50aXR5X2RlY2wKICAgICAgICBzZWxmLl9wYXJzZXIuTm90YXRpb25EZWNsSGFuZGxlciA9IHNlbGYubm90YXRpb25fZGVjbAogICAgICAgIHNlbGYuX3BhcnNlci5TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyID0gc2VsZi5zdGFydF9uYW1lc3BhY2VfZGVjbAogICAgICAgIHNlbGYuX3BhcnNlci5FbmROYW1lc3BhY2VEZWNsSGFuZGxlciA9IHNlbGYuZW5kX25hbWVzcGFjZV9kZWNsCgogICAgICAgIHNlbGYuX2RlY2xfaGFuZGxlcl9wcm9wID0gTm9uZQogICAgICAgIGlmIHNlbGYuX2xleF9oYW5kbGVyX3Byb3A6CiAgICAgICAgICAgIHNlbGYuX3Jlc2V0X2xleF9oYW5kbGVyX3Byb3AoKQojICAgICAgICAgc2VsZi5fcGFyc2VyLkRlZmF1bHRIYW5kbGVyID0KIyAgICAgICAgIHNlbGYuX3BhcnNlci5EZWZhdWx0SGFuZGxlckV4cGFuZCA9CiMgICAgICAgICBzZWxmLl9wYXJzZXIuTm90U3RhbmRhbG9uZUhhbmRsZXIgPQogICAgICAgIHNlbGYuX3BhcnNlci5FeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIgPSBzZWxmLmV4dGVybmFsX2VudGl0eV9yZWYKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3BhcnNlci5Ta2lwcGVkRW50aXR5SGFuZGxlciA9IHNlbGYuc2tpcHBlZF9lbnRpdHlfaGFuZGxlcgogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIyBUaGlzIHB5ZXhwYXQgZG9lcyBub3Qgc3VwcG9ydCBTa2lwcGVkRW50aXR5CiAgICAgICAgICAgIHBhc3MKICAgICAgICBzZWxmLl9wYXJzZXIuU2V0UGFyYW1FbnRpdHlQYXJzaW5nKAogICAgICAgICAgICBleHBhdC5YTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfVU5MRVNTX1NUQU5EQUxPTkUpCgogICAgICAgIHNlbGYuX3BhcnNpbmcgPSBGYWxzZQogICAgICAgIHNlbGYuX2VudGl0eV9zdGFjayA9IFtdCgogICAgIyBMb2NhdG9yIG1ldGhvZHMKCiAgICBkZWYgZ2V0Q29sdW1uTnVtYmVyKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX3BhcnNlciBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIKCiAgICBkZWYgZ2V0TGluZU51bWJlcihzZWxmKToKICAgICAgICBpZiBzZWxmLl9wYXJzZXIgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLkVycm9yTGluZU51bWJlcgoKICAgIGRlZiBnZXRQdWJsaWNJZChzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5fc291cmNlLmdldFB1YmxpY0lkKCkKCiAgICBkZWYgZ2V0U3lzdGVtSWQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3NvdXJjZS5nZXRTeXN0ZW1JZCgpCgogICAgIyBldmVudCBoYW5kbGVycwogICAgZGVmIHN0YXJ0X2VsZW1lbnQoc2VsZiwgbmFtZSwgYXR0cnMpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5zdGFydEVsZW1lbnQobmFtZSwgQXR0cmlidXRlc0ltcGwoYXR0cnMpKQoKICAgIGRlZiBlbmRfZWxlbWVudChzZWxmLCBuYW1lKToKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIuZW5kRWxlbWVudChuYW1lKQoKICAgIGRlZiBzdGFydF9lbGVtZW50X25zKHNlbGYsIG5hbWUsIGF0dHJzKToKICAgICAgICBwYWlyID0gbmFtZS5zcGxpdCgpCiAgICAgICAgaWYgbGVuKHBhaXIpID09IDE6CiAgICAgICAgICAgICMgbm8gbmFtZXNwYWNlCiAgICAgICAgICAgIHBhaXIgPSAoTm9uZSwgbmFtZSkKICAgICAgICBlbGlmIGxlbihwYWlyKSA9PSAzOgogICAgICAgICAgICBwYWlyID0gcGFpclswXSwgcGFpclsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgZGVmYXVsdCBuYW1lc3BhY2UKICAgICAgICAgICAgcGFpciA9IHR1cGxlKHBhaXIpCgogICAgICAgIG5ld2F0dHJzID0ge30KICAgICAgICBxbmFtZXMgPSB7fQogICAgICAgIGZvciAoYW5hbWUsIHZhbHVlKSBpbiBhdHRycy5pdGVtcygpOgogICAgICAgICAgICBwYXJ0cyA9IGFuYW1lLnNwbGl0KCkKICAgICAgICAgICAgbGVuZ3RoID0gbGVuKHBhcnRzKQogICAgICAgICAgICBpZiBsZW5ndGggPT0gMToKICAgICAgICAgICAgICAgICMgbm8gbmFtZXNwYWNlCiAgICAgICAgICAgICAgICBxbmFtZSA9IGFuYW1lCiAgICAgICAgICAgICAgICBhcGFpciA9IChOb25lLCBhbmFtZSkKICAgICAgICAgICAgZWxpZiBsZW5ndGggPT0gMzoKICAgICAgICAgICAgICAgIHFuYW1lID0gIiVzOiVzIiAlIChwYXJ0c1syXSwgcGFydHNbMV0pCiAgICAgICAgICAgICAgICBhcGFpciA9IHBhcnRzWzBdLCBwYXJ0c1sxXQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBkZWZhdWx0IG5hbWVzcGFjZQogICAgICAgICAgICAgICAgcW5hbWUgPSBwYXJ0c1sxXQogICAgICAgICAgICAgICAgYXBhaXIgPSB0dXBsZShwYXJ0cykKCiAgICAgICAgICAgIG5ld2F0dHJzW2FwYWlyXSA9IHZhbHVlCiAgICAgICAgICAgIHFuYW1lc1thcGFpcl0gPSBxbmFtZQoKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIuc3RhcnRFbGVtZW50TlMocGFpciwgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlc05TSW1wbChuZXdhdHRycywgcW5hbWVzKSkKCiAgICBkZWYgZW5kX2VsZW1lbnRfbnMoc2VsZiwgbmFtZSk6CiAgICAgICAgcGFpciA9IG5hbWUuc3BsaXQoKQogICAgICAgIGlmIGxlbihwYWlyKSA9PSAxOgogICAgICAgICAgICBwYWlyID0gKE5vbmUsIG5hbWUpCiAgICAgICAgZWxpZiBsZW4ocGFpcikgPT0gMzoKICAgICAgICAgICAgcGFpciA9IHBhaXJbMF0sIHBhaXJbMV0KICAgICAgICBlbHNlOgogICAgICAgICAgICBwYWlyID0gdHVwbGUocGFpcikKCiAgICAgICAgc2VsZi5fY29udF9oYW5kbGVyLmVuZEVsZW1lbnROUyhwYWlyLCBOb25lKQoKICAgICMgdGhpcyBpcyBub3QgdXNlZCAoY2FsbCBkaXJlY3RseSB0byBDb250ZW50SGFuZGxlcikKICAgIGRlZiBwcm9jZXNzaW5nX2luc3RydWN0aW9uKHNlbGYsIHRhcmdldCwgZGF0YSk6CiAgICAgICAgc2VsZi5fY29udF9oYW5kbGVyLnByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIGRhdGEpCgogICAgIyB0aGlzIGlzIG5vdCB1c2VkIChjYWxsIGRpcmVjdGx5IHRvIENvbnRlbnRIYW5kbGVyKQogICAgZGVmIGNoYXJhY3Rlcl9kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5jaGFyYWN0ZXJzKGRhdGEpCgogICAgZGVmIHN0YXJ0X25hbWVzcGFjZV9kZWNsKHNlbGYsIHByZWZpeCwgdXJpKToKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIuc3RhcnRQcmVmaXhNYXBwaW5nKHByZWZpeCwgdXJpKQoKICAgIGRlZiBlbmRfbmFtZXNwYWNlX2RlY2woc2VsZiwgcHJlZml4KToKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIuZW5kUHJlZml4TWFwcGluZyhwcmVmaXgpCgogICAgZGVmIHN0YXJ0X2RvY3R5cGVfZGVjbChzZWxmLCBuYW1lLCBzeXNpZCwgcHViaWQsIGhhc19pbnRlcm5hbF9zdWJzZXQpOgogICAgICAgIHNlbGYuX2xleF9oYW5kbGVyX3Byb3Auc3RhcnREVEQobmFtZSwgcHViaWQsIHN5c2lkKQoKICAgIGRlZiB1bnBhcnNlZF9lbnRpdHlfZGVjbChzZWxmLCBuYW1lLCBiYXNlLCBzeXNpZCwgcHViaWQsIG5vdGF0aW9uX25hbWUpOgogICAgICAgIHNlbGYuX2R0ZF9oYW5kbGVyLnVucGFyc2VkRW50aXR5RGVjbChuYW1lLCBwdWJpZCwgc3lzaWQsIG5vdGF0aW9uX25hbWUpCgogICAgZGVmIG5vdGF0aW9uX2RlY2woc2VsZiwgbmFtZSwgYmFzZSwgc3lzaWQsIHB1YmlkKToKICAgICAgICBzZWxmLl9kdGRfaGFuZGxlci5ub3RhdGlvbkRlY2wobmFtZSwgcHViaWQsIHN5c2lkKQoKICAgIGRlZiBleHRlcm5hbF9lbnRpdHlfcmVmKHNlbGYsIGNvbnRleHQsIGJhc2UsIHN5c2lkLCBwdWJpZCk6CiAgICAgICAgaWYgbm90IHNlbGYuX2V4dGVybmFsX2dlczoKICAgICAgICAgICAgcmV0dXJuIDEKCiAgICAgICAgc291cmNlID0gc2VsZi5fZW50X2hhbmRsZXIucmVzb2x2ZUVudGl0eShwdWJpZCwgc3lzaWQpCiAgICAgICAgc291cmNlID0gc2F4dXRpbHMucHJlcGFyZV9pbnB1dF9zb3VyY2Uoc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZS5nZXRTeXN0ZW1JZCgpIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpCgogICAgICAgIHNlbGYuX2VudGl0eV9zdGFjay5hcHBlbmQoKHNlbGYuX3BhcnNlciwgc2VsZi5fc291cmNlKSkKICAgICAgICBzZWxmLl9wYXJzZXIgPSBzZWxmLl9wYXJzZXIuRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUoY29udGV4dCkKICAgICAgICBzZWxmLl9zb3VyY2UgPSBzb3VyY2UKCiAgICAgICAgdHJ5OgogICAgICAgICAgICB4bWxyZWFkZXIuSW5jcmVtZW50YWxQYXJzZXIucGFyc2Uoc2VsZiwgc291cmNlKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgcmV0dXJuIDAgICMgRklYTUU6IHNhdmUgZXJyb3IgaW5mbyBoZXJlPwoKICAgICAgICAoc2VsZi5fcGFyc2VyLCBzZWxmLl9zb3VyY2UpID0gc2VsZi5fZW50aXR5X3N0YWNrWy0xXQogICAgICAgIGRlbCBzZWxmLl9lbnRpdHlfc3RhY2tbLTFdCiAgICAgICAgcmV0dXJuIDEKCiAgICBkZWYgc2tpcHBlZF9lbnRpdHlfaGFuZGxlcihzZWxmLCBuYW1lLCBpc19wZSk6CiAgICAgICAgaWYgaXNfcGU6CiAgICAgICAgICAgICMgVGhlIFNBWCBzcGVjIHJlcXVpcmVzIHRvIHJlcG9ydCBza2lwcGVkIFBFcyB3aXRoIGEgJyUnCiAgICAgICAgICAgIG5hbWUgPSAnJScrbmFtZQogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5za2lwcGVkRW50aXR5KG5hbWUpCgojIC0tLQoKZGVmIGNyZWF0ZV9wYXJzZXIoKmFyZ3MsICoqa3dhcmdzKToKICAgIHJldHVybiBFeHBhdFBhcnNlcigqYXJncywgKiprd2FyZ3MpCgojIC0tLQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIGltcG9ydCB4bWwuc2F4LnNheHV0aWxzCiAgICBwID0gY3JlYXRlX3BhcnNlcigpCiAgICBwLnNldENvbnRlbnRIYW5kbGVyKHhtbC5zYXguc2F4dXRpbHMuWE1MR2VuZXJhdG9yKCkpCiAgICBwLnNldEVycm9ySGFuZGxlcih4bWwuc2F4LkVycm9ySGFuZGxlcigpKQogICAgcC5wYXJzZSgiaHR0cDovL3d3dy5pYmlibGlvLm9yZy94bWwvZXhhbXBsZXMvc2hha2VzcGVhcmUvaGFtbGV0LnhtbCIpClBLAwQUAAAAAAADIKNWoznvkgE9AAABPQAAEgAAAHhtbC9zYXgvaGFuZGxlci5weSIiIgpUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgY29yZSBjbGFzc2VzIG9mIHZlcnNpb24gMi4wIG9mIFNBWCBmb3IgUHl0aG9uLgpUaGlzIGZpbGUgcHJvdmlkZXMgb25seSBkZWZhdWx0IGNsYXNzZXMgd2l0aCBhYnNvbHV0ZWx5IG1pbmltdW0KZnVuY3Rpb25hbGl0eSwgZnJvbSB3aGljaCBkcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgY2FuIGJlIHN1YmNsYXNzZWQuCgpNYW55IG9mIHRoZXNlIGNsYXNzZXMgYXJlIGVtcHR5IGFuZCBhcmUgaW5jbHVkZWQgb25seSBhcyBkb2N1bWVudGF0aW9uCm9mIHRoZSBpbnRlcmZhY2VzLgoKJElkJAoiIiIKCnZlcnNpb24gPSAnMi4wYmV0YScKCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMKIyBIQU5ETEVSIElOVEVSRkFDRVMKIwojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKIyA9PT09PSBFUlJPUkhBTkRMRVIgPT09PT0KCmNsYXNzIEVycm9ySGFuZGxlcjoKICAgICIiIkJhc2ljIGludGVyZmFjZSBmb3IgU0FYIGVycm9yIGhhbmRsZXJzLgoKICAgIElmIHlvdSBjcmVhdGUgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGlzIGludGVyZmFjZSwgdGhlbgogICAgcmVnaXN0ZXIgdGhlIG9iamVjdCB3aXRoIHlvdXIgWE1MUmVhZGVyLCB0aGUgcGFyc2VyIHdpbGwgY2FsbCB0aGUKICAgIG1ldGhvZHMgaW4geW91ciBvYmplY3QgdG8gcmVwb3J0IGFsbCB3YXJuaW5ncyBhbmQgZXJyb3JzLiBUaGVyZQogICAgYXJlIHRocmVlIGxldmVscyBvZiBlcnJvcnMgYXZhaWxhYmxlOiB3YXJuaW5ncywgKHBvc3NpYmx5KQogICAgcmVjb3ZlcmFibGUgZXJyb3JzLCBhbmQgdW5yZWNvdmVyYWJsZSBlcnJvcnMuIEFsbCBtZXRob2RzIHRha2UgYQogICAgU0FYUGFyc2VFeGNlcHRpb24gYXMgdGhlIG9ubHkgcGFyYW1ldGVyLiIiIgoKICAgIGRlZiBlcnJvcihzZWxmLCBleGNlcHRpb24pOgogICAgICAgICJIYW5kbGUgYSByZWNvdmVyYWJsZSBlcnJvci4iCiAgICAgICAgcmFpc2UgZXhjZXB0aW9uCgogICAgZGVmIGZhdGFsRXJyb3Ioc2VsZiwgZXhjZXB0aW9uKToKICAgICAgICAiSGFuZGxlIGEgbm9uLXJlY292ZXJhYmxlIGVycm9yLiIKICAgICAgICByYWlzZSBleGNlcHRpb24KCiAgICBkZWYgd2FybmluZyhzZWxmLCBleGNlcHRpb24pOgogICAgICAgICJIYW5kbGUgYSB3YXJuaW5nLiIKICAgICAgICBwcmludChleGNlcHRpb24pCgoKIyA9PT09PSBDT05URU5USEFORExFUiA9PT09PQoKY2xhc3MgQ29udGVudEhhbmRsZXI6CiAgICAiIiJJbnRlcmZhY2UgZm9yIHJlY2VpdmluZyBsb2dpY2FsIGRvY3VtZW50IGNvbnRlbnQgZXZlbnRzLgoKICAgIFRoaXMgaXMgdGhlIG1haW4gY2FsbGJhY2sgaW50ZXJmYWNlIGluIFNBWCwgYW5kIHRoZSBvbmUgbW9zdAogICAgaW1wb3J0YW50IHRvIGFwcGxpY2F0aW9ucy4gVGhlIG9yZGVyIG9mIGV2ZW50cyBpbiB0aGlzIGludGVyZmFjZQogICAgbWlycm9ycyB0aGUgb3JkZXIgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBkb2N1bWVudC4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5fbG9jYXRvciA9IE5vbmUKCiAgICBkZWYgc2V0RG9jdW1lbnRMb2NhdG9yKHNlbGYsIGxvY2F0b3IpOgogICAgICAgICIiIkNhbGxlZCBieSB0aGUgcGFyc2VyIHRvIGdpdmUgdGhlIGFwcGxpY2F0aW9uIGEgbG9jYXRvciBmb3IKICAgICAgICBsb2NhdGluZyB0aGUgb3JpZ2luIG9mIGRvY3VtZW50IGV2ZW50cy4KCiAgICAgICAgU0FYIHBhcnNlcnMgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgKHRob3VnaCBub3QgYWJzb2x1dGVseQogICAgICAgIHJlcXVpcmVkKSB0byBzdXBwbHkgYSBsb2NhdG9yOiBpZiBpdCBkb2VzIHNvLCBpdCBtdXN0IHN1cHBseQogICAgICAgIHRoZSBsb2NhdG9yIHRvIHRoZSBhcHBsaWNhdGlvbiBieSBpbnZva2luZyB0aGlzIG1ldGhvZCBiZWZvcmUKICAgICAgICBpbnZva2luZyBhbnkgb2YgdGhlIG90aGVyIG1ldGhvZHMgaW4gdGhlIERvY3VtZW50SGFuZGxlcgogICAgICAgIGludGVyZmFjZS4KCiAgICAgICAgVGhlIGxvY2F0b3IgYWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBkZXRlcm1pbmUgdGhlIGVuZAogICAgICAgIHBvc2l0aW9uIG9mIGFueSBkb2N1bWVudC1yZWxhdGVkIGV2ZW50LCBldmVuIGlmIHRoZSBwYXJzZXIgaXMKICAgICAgICBub3QgcmVwb3J0aW5nIGFuIGVycm9yLiBUeXBpY2FsbHksIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHVzZQogICAgICAgIHRoaXMgaW5mb3JtYXRpb24gZm9yIHJlcG9ydGluZyBpdHMgb3duIGVycm9ycyAoc3VjaCBhcwogICAgICAgIGNoYXJhY3RlciBjb250ZW50IHRoYXQgZG9lcyBub3QgbWF0Y2ggYW4gYXBwbGljYXRpb24ncwogICAgICAgIGJ1c2luZXNzIHJ1bGVzKS4gVGhlIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IHRoZSBsb2NhdG9yIGlzCiAgICAgICAgcHJvYmFibHkgbm90IHN1ZmZpY2llbnQgZm9yIHVzZSB3aXRoIGEgc2VhcmNoIGVuZ2luZS4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSBsb2NhdG9yIHdpbGwgcmV0dXJuIGNvcnJlY3QgaW5mb3JtYXRpb24gb25seQogICAgICAgIGR1cmluZyB0aGUgaW52b2NhdGlvbiBvZiB0aGUgZXZlbnRzIGluIHRoaXMgaW50ZXJmYWNlLiBUaGUKICAgICAgICBhcHBsaWNhdGlvbiBzaG91bGQgbm90IGF0dGVtcHQgdG8gdXNlIGl0IGF0IGFueSBvdGhlciB0aW1lLiIiIgogICAgICAgIHNlbGYuX2xvY2F0b3IgPSBsb2NhdG9yCgogICAgZGVmIHN0YXJ0RG9jdW1lbnQoc2VsZik6CiAgICAgICAgIiIiUmVjZWl2ZSBub3RpZmljYXRpb24gb2YgdGhlIGJlZ2lubmluZyBvZiBhIGRvY3VtZW50LgoKICAgICAgICBUaGUgU0FYIHBhcnNlciB3aWxsIGludm9rZSB0aGlzIG1ldGhvZCBvbmx5IG9uY2UsIGJlZm9yZSBhbnkKICAgICAgICBvdGhlciBtZXRob2RzIGluIHRoaXMgaW50ZXJmYWNlIG9yIGluIERUREhhbmRsZXIgKGV4Y2VwdCBmb3IKICAgICAgICBzZXREb2N1bWVudExvY2F0b3IpLiIiIgoKICAgIGRlZiBlbmREb2N1bWVudChzZWxmKToKICAgICAgICAiIiJSZWNlaXZlIG5vdGlmaWNhdGlvbiBvZiB0aGUgZW5kIG9mIGEgZG9jdW1lbnQuCgogICAgICAgIFRoZSBTQVggcGFyc2VyIHdpbGwgaW52b2tlIHRoaXMgbWV0aG9kIG9ubHkgb25jZSwgYW5kIGl0IHdpbGwKICAgICAgICBiZSB0aGUgbGFzdCBtZXRob2QgaW52b2tlZCBkdXJpbmcgdGhlIHBhcnNlLiBUaGUgcGFyc2VyIHNoYWxsCiAgICAgICAgbm90IGludm9rZSB0aGlzIG1ldGhvZCB1bnRpbCBpdCBoYXMgZWl0aGVyIGFiYW5kb25lZCBwYXJzaW5nCiAgICAgICAgKGJlY2F1c2Ugb2YgYW4gdW5yZWNvdmVyYWJsZSBlcnJvcikgb3IgcmVhY2hlZCB0aGUgZW5kIG9mCiAgICAgICAgaW5wdXQuIiIiCgogICAgZGVmIHN0YXJ0UHJlZml4TWFwcGluZyhzZWxmLCBwcmVmaXgsIHVyaSk6CiAgICAgICAgIiIiQmVnaW4gdGhlIHNjb3BlIG9mIGEgcHJlZml4LVVSSSBOYW1lc3BhY2UgbWFwcGluZy4KCiAgICAgICAgVGhlIGluZm9ybWF0aW9uIGZyb20gdGhpcyBldmVudCBpcyBub3QgbmVjZXNzYXJ5IGZvciBub3JtYWwKICAgICAgICBOYW1lc3BhY2UgcHJvY2Vzc2luZzogdGhlIFNBWCBYTUwgcmVhZGVyIHdpbGwgYXV0b21hdGljYWxseQogICAgICAgIHJlcGxhY2UgcHJlZml4ZXMgZm9yIGVsZW1lbnQgYW5kIGF0dHJpYnV0ZSBuYW1lcyB3aGVuIHRoZQogICAgICAgIGh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9uYW1lc3BhY2VzIGZlYXR1cmUgaXMgdHJ1ZSAodGhlCiAgICAgICAgZGVmYXVsdCkuCgogICAgICAgIFRoZXJlIGFyZSBjYXNlcywgaG93ZXZlciwgd2hlbiBhcHBsaWNhdGlvbnMgbmVlZCB0byB1c2UKICAgICAgICBwcmVmaXhlcyBpbiBjaGFyYWN0ZXIgZGF0YSBvciBpbiBhdHRyaWJ1dGUgdmFsdWVzLCB3aGVyZSB0aGV5CiAgICAgICAgY2Fubm90IHNhZmVseSBiZSBleHBhbmRlZCBhdXRvbWF0aWNhbGx5OyB0aGUKICAgICAgICBzdGFydC9lbmRQcmVmaXhNYXBwaW5nIGV2ZW50IHN1cHBsaWVzIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUKICAgICAgICBhcHBsaWNhdGlvbiB0byBleHBhbmQgcHJlZml4ZXMgaW4gdGhvc2UgY29udGV4dHMgaXRzZWxmLCBpZgogICAgICAgIG5lY2Vzc2FyeS4KCiAgICAgICAgTm90ZSB0aGF0IHN0YXJ0L2VuZFByZWZpeE1hcHBpbmcgZXZlbnRzIGFyZSBub3QgZ3VhcmFudGVlZCB0bwogICAgICAgIGJlIHByb3Blcmx5IG5lc3RlZCByZWxhdGl2ZSB0byBlYWNoLW90aGVyOiBhbGwKICAgICAgICBzdGFydFByZWZpeE1hcHBpbmcgZXZlbnRzIHdpbGwgb2NjdXIgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAgc3RhcnRFbGVtZW50IGV2ZW50LCBhbmQgYWxsIGVuZFByZWZpeE1hcHBpbmcgZXZlbnRzIHdpbGwgb2NjdXIKICAgICAgICBhZnRlciB0aGUgY29ycmVzcG9uZGluZyBlbmRFbGVtZW50IGV2ZW50LCBidXQgdGhlaXIgb3JkZXIgaXMKICAgICAgICBub3QgZ3VhcmFudGVlZC4iIiIKCiAgICBkZWYgZW5kUHJlZml4TWFwcGluZyhzZWxmLCBwcmVmaXgpOgogICAgICAgICIiIkVuZCB0aGUgc2NvcGUgb2YgYSBwcmVmaXgtVVJJIG1hcHBpbmcuCgogICAgICAgIFNlZSBzdGFydFByZWZpeE1hcHBpbmcgZm9yIGRldGFpbHMuIFRoaXMgZXZlbnQgd2lsbCBhbHdheXMKICAgICAgICBvY2N1ciBhZnRlciB0aGUgY29ycmVzcG9uZGluZyBlbmRFbGVtZW50IGV2ZW50LCBidXQgdGhlIG9yZGVyCiAgICAgICAgb2YgZW5kUHJlZml4TWFwcGluZyBldmVudHMgaXMgbm90IG90aGVyd2lzZSBndWFyYW50ZWVkLiIiIgoKICAgIGRlZiBzdGFydEVsZW1lbnQoc2VsZiwgbmFtZSwgYXR0cnMpOgogICAgICAgICIiIlNpZ25hbHMgdGhlIHN0YXJ0IG9mIGFuIGVsZW1lbnQgaW4gbm9uLW5hbWVzcGFjZSBtb2RlLgoKICAgICAgICBUaGUgbmFtZSBwYXJhbWV0ZXIgY29udGFpbnMgdGhlIHJhdyBYTUwgMS4wIG5hbWUgb2YgdGhlCiAgICAgICAgZWxlbWVudCB0eXBlIGFzIGEgc3RyaW5nIGFuZCB0aGUgYXR0cnMgcGFyYW1ldGVyIGhvbGRzIGFuCiAgICAgICAgaW5zdGFuY2Ugb2YgdGhlIEF0dHJpYnV0ZXMgY2xhc3MgY29udGFpbmluZyB0aGUgYXR0cmlidXRlcyBvZgogICAgICAgIHRoZSBlbGVtZW50LiIiIgoKICAgIGRlZiBlbmRFbGVtZW50KHNlbGYsIG5hbWUpOgogICAgICAgICIiIlNpZ25hbHMgdGhlIGVuZCBvZiBhbiBlbGVtZW50IGluIG5vbi1uYW1lc3BhY2UgbW9kZS4KCiAgICAgICAgVGhlIG5hbWUgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBlbGVtZW50IHR5cGUsIGp1c3QKICAgICAgICBhcyB3aXRoIHRoZSBzdGFydEVsZW1lbnQgZXZlbnQuIiIiCgogICAgZGVmIHN0YXJ0RWxlbWVudE5TKHNlbGYsIG5hbWUsIHFuYW1lLCBhdHRycyk6CiAgICAgICAgIiIiU2lnbmFscyB0aGUgc3RhcnQgb2YgYW4gZWxlbWVudCBpbiBuYW1lc3BhY2UgbW9kZS4KCiAgICAgICAgVGhlIG5hbWUgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBlbGVtZW50IHR5cGUgYXMgYQogICAgICAgICh1cmksIGxvY2FsbmFtZSkgdHVwbGUsIHRoZSBxbmFtZSBwYXJhbWV0ZXIgdGhlIHJhdyBYTUwgMS4wCiAgICAgICAgbmFtZSB1c2VkIGluIHRoZSBzb3VyY2UgZG9jdW1lbnQsIGFuZCB0aGUgYXR0cnMgcGFyYW1ldGVyCiAgICAgICAgaG9sZHMgYW4gaW5zdGFuY2Ugb2YgdGhlIEF0dHJpYnV0ZXMgY2xhc3MgY29udGFpbmluZyB0aGUKICAgICAgICBhdHRyaWJ1dGVzIG9mIHRoZSBlbGVtZW50LgoKICAgICAgICBUaGUgdXJpIHBhcnQgb2YgdGhlIG5hbWUgdHVwbGUgaXMgTm9uZSBmb3IgZWxlbWVudHMgd2hpY2ggaGF2ZQogICAgICAgIG5vIG5hbWVzcGFjZS4iIiIKCiAgICBkZWYgZW5kRWxlbWVudE5TKHNlbGYsIG5hbWUsIHFuYW1lKToKICAgICAgICAiIiJTaWduYWxzIHRoZSBlbmQgb2YgYW4gZWxlbWVudCBpbiBuYW1lc3BhY2UgbW9kZS4KCiAgICAgICAgVGhlIG5hbWUgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBlbGVtZW50IHR5cGUsIGp1c3QKICAgICAgICBhcyB3aXRoIHRoZSBzdGFydEVsZW1lbnROUyBldmVudC4iIiIKCiAgICBkZWYgY2hhcmFjdGVycyhzZWxmLCBjb250ZW50KToKICAgICAgICAiIiJSZWNlaXZlIG5vdGlmaWNhdGlvbiBvZiBjaGFyYWN0ZXIgZGF0YS4KCiAgICAgICAgVGhlIFBhcnNlciB3aWxsIGNhbGwgdGhpcyBtZXRob2QgdG8gcmVwb3J0IGVhY2ggY2h1bmsgb2YKICAgICAgICBjaGFyYWN0ZXIgZGF0YS4gU0FYIHBhcnNlcnMgbWF5IHJldHVybiBhbGwgY29udGlndW91cwogICAgICAgIGNoYXJhY3RlciBkYXRhIGluIGEgc2luZ2xlIGNodW5rLCBvciB0aGV5IG1heSBzcGxpdCBpdCBpbnRvCiAgICAgICAgc2V2ZXJhbCBjaHVua3M7IGhvd2V2ZXIsIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiBhbnkgc2luZ2xlCiAgICAgICAgZXZlbnQgbXVzdCBjb21lIGZyb20gdGhlIHNhbWUgZXh0ZXJuYWwgZW50aXR5IHNvIHRoYXQgdGhlCiAgICAgICAgTG9jYXRvciBwcm92aWRlcyB1c2VmdWwgaW5mb3JtYXRpb24uIiIiCgogICAgZGVmIGlnbm9yYWJsZVdoaXRlc3BhY2Uoc2VsZiwgd2hpdGVzcGFjZSk6CiAgICAgICAgIiIiUmVjZWl2ZSBub3RpZmljYXRpb24gb2YgaWdub3JhYmxlIHdoaXRlc3BhY2UgaW4gZWxlbWVudCBjb250ZW50LgoKICAgICAgICBWYWxpZGF0aW5nIFBhcnNlcnMgbXVzdCB1c2UgdGhpcyBtZXRob2QgdG8gcmVwb3J0IGVhY2ggY2h1bmsKICAgICAgICBvZiBpZ25vcmFibGUgd2hpdGVzcGFjZSAoc2VlIHRoZSBXM0MgWE1MIDEuMCByZWNvbW1lbmRhdGlvbiwKICAgICAgICBzZWN0aW9uIDIuMTApOiBub24tdmFsaWRhdGluZyBwYXJzZXJzIG1heSBhbHNvIHVzZSB0aGlzIG1ldGhvZAogICAgICAgIGlmIHRoZXkgYXJlIGNhcGFibGUgb2YgcGFyc2luZyBhbmQgdXNpbmcgY29udGVudCBtb2RlbHMuCgogICAgICAgIFNBWCBwYXJzZXJzIG1heSByZXR1cm4gYWxsIGNvbnRpZ3VvdXMgd2hpdGVzcGFjZSBpbiBhIHNpbmdsZQogICAgICAgIGNodW5rLCBvciB0aGV5IG1heSBzcGxpdCBpdCBpbnRvIHNldmVyYWwgY2h1bmtzOyBob3dldmVyLCBhbGwKICAgICAgICBvZiB0aGUgY2hhcmFjdGVycyBpbiBhbnkgc2luZ2xlIGV2ZW50IG11c3QgY29tZSBmcm9tIHRoZSBzYW1lCiAgICAgICAgZXh0ZXJuYWwgZW50aXR5LCBzbyB0aGF0IHRoZSBMb2NhdG9yIHByb3ZpZGVzIHVzZWZ1bAogICAgICAgIGluZm9ybWF0aW9uLiIiIgoKICAgIGRlZiBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oc2VsZiwgdGFyZ2V0LCBkYXRhKToKICAgICAgICAiIiJSZWNlaXZlIG5vdGlmaWNhdGlvbiBvZiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uCgogICAgICAgIFRoZSBQYXJzZXIgd2lsbCBpbnZva2UgdGhpcyBtZXRob2Qgb25jZSBmb3IgZWFjaCBwcm9jZXNzaW5nCiAgICAgICAgaW5zdHJ1Y3Rpb24gZm91bmQ6IG5vdGUgdGhhdCBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyBtYXkgb2NjdXIKICAgICAgICBiZWZvcmUgb3IgYWZ0ZXIgdGhlIG1haW4gZG9jdW1lbnQgZWxlbWVudC4KCiAgICAgICAgQSBTQVggcGFyc2VyIHNob3VsZCBuZXZlciByZXBvcnQgYW4gWE1MIGRlY2xhcmF0aW9uIChYTUwgMS4wLAogICAgICAgIHNlY3Rpb24gMi44KSBvciBhIHRleHQgZGVjbGFyYXRpb24gKFhNTCAxLjAsIHNlY3Rpb24gNC4zLjEpCiAgICAgICAgdXNpbmcgdGhpcyBtZXRob2QuIiIiCgogICAgZGVmIHNraXBwZWRFbnRpdHkoc2VsZiwgbmFtZSk6CiAgICAgICAgIiIiUmVjZWl2ZSBub3RpZmljYXRpb24gb2YgYSBza2lwcGVkIGVudGl0eS4KCiAgICAgICAgVGhlIFBhcnNlciB3aWxsIGludm9rZSB0aGlzIG1ldGhvZCBvbmNlIGZvciBlYWNoIGVudGl0eQogICAgICAgIHNraXBwZWQuIE5vbi12YWxpZGF0aW5nIHByb2Nlc3NvcnMgbWF5IHNraXAgZW50aXRpZXMgaWYgdGhleQogICAgICAgIGhhdmUgbm90IHNlZW4gdGhlIGRlY2xhcmF0aW9ucyAoYmVjYXVzZSwgZm9yIGV4YW1wbGUsIHRoZQogICAgICAgIGVudGl0eSB3YXMgZGVjbGFyZWQgaW4gYW4gZXh0ZXJuYWwgRFREIHN1YnNldCkuIEFsbCBwcm9jZXNzb3JzCiAgICAgICAgbWF5IHNraXAgZXh0ZXJuYWwgZW50aXRpZXMsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZQogICAgICAgIGh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9leHRlcm5hbC1nZW5lcmFsLWVudGl0aWVzIGFuZCB0aGUKICAgICAgICBodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvZXh0ZXJuYWwtcGFyYW1ldGVyLWVudGl0aWVzCiAgICAgICAgcHJvcGVydGllcy4iIiIKCgojID09PT09IERUREhhbmRsZXIgPT09PT0KCmNsYXNzIERUREhhbmRsZXI6CiAgICAiIiJIYW5kbGUgRFREIGV2ZW50cy4KCiAgICBUaGlzIGludGVyZmFjZSBzcGVjaWZpZXMgb25seSB0aG9zZSBEVEQgZXZlbnRzIHJlcXVpcmVkIGZvciBiYXNpYwogICAgcGFyc2luZyAodW5wYXJzZWQgZW50aXRpZXMgYW5kIGF0dHJpYnV0ZXMpLiIiIgoKICAgIGRlZiBub3RhdGlvbkRlY2woc2VsZiwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKToKICAgICAgICAiSGFuZGxlIGEgbm90YXRpb24gZGVjbGFyYXRpb24gZXZlbnQuIgoKICAgIGRlZiB1bnBhcnNlZEVudGl0eURlY2woc2VsZiwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkLCBuZGF0YSk6CiAgICAgICAgIkhhbmRsZSBhbiB1bnBhcnNlZCBlbnRpdHkgZGVjbGFyYXRpb24gZXZlbnQuIgoKCiMgPT09PT0gRU5USVRZUkVTT0xWRVIgPT09PT0KCmNsYXNzIEVudGl0eVJlc29sdmVyOgogICAgIiIiQmFzaWMgaW50ZXJmYWNlIGZvciByZXNvbHZpbmcgZW50aXRpZXMuIElmIHlvdSBjcmVhdGUgYW4gb2JqZWN0CiAgICBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2UsIHRoZW4gcmVnaXN0ZXIgdGhlIG9iamVjdCB3aXRoIHlvdXIKICAgIFBhcnNlciwgdGhlIHBhcnNlciB3aWxsIGNhbGwgdGhlIG1ldGhvZCBpbiB5b3VyIG9iamVjdCB0bwogICAgcmVzb2x2ZSBhbGwgZXh0ZXJuYWwgZW50aXRpZXMuIE5vdGUgdGhhdCBEZWZhdWx0SGFuZGxlciBpbXBsZW1lbnRzCiAgICB0aGlzIGludGVyZmFjZSB3aXRoIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4iIiIKCiAgICBkZWYgcmVzb2x2ZUVudGl0eShzZWxmLCBwdWJsaWNJZCwgc3lzdGVtSWQpOgogICAgICAgICIiIlJlc29sdmUgdGhlIHN5c3RlbSBpZGVudGlmaWVyIG9mIGFuIGVudGl0eSBhbmQgcmV0dXJuIGVpdGhlcgogICAgICAgIHRoZSBzeXN0ZW0gaWRlbnRpZmllciB0byByZWFkIGZyb20gYXMgYSBzdHJpbmcsIG9yIGFuIElucHV0U291cmNlCiAgICAgICAgdG8gcmVhZCBmcm9tLiIiIgogICAgICAgIHJldHVybiBzeXN0ZW1JZAoKCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMKIyBDT1JFIEZFQVRVUkVTCiMKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmZlYXR1cmVfbmFtZXNwYWNlcyA9ICJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyIKIyB0cnVlOiBQZXJmb3JtIE5hbWVzcGFjZSBwcm9jZXNzaW5nIChkZWZhdWx0KS4KIyBmYWxzZTogT3B0aW9uYWxseSBkbyBub3QgcGVyZm9ybSBOYW1lc3BhY2UgcHJvY2Vzc2luZwojICAgICAgICAoaW1wbGllcyBuYW1lc3BhY2UtcHJlZml4ZXMpLgojIGFjY2VzczogKHBhcnNpbmcpIHJlYWQtb25seTsgKG5vdCBwYXJzaW5nKSByZWFkL3dyaXRlCgpmZWF0dXJlX25hbWVzcGFjZV9wcmVmaXhlcyA9ICJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlLXByZWZpeGVzIgojIHRydWU6IFJlcG9ydCB0aGUgb3JpZ2luYWwgcHJlZml4ZWQgbmFtZXMgYW5kIGF0dHJpYnV0ZXMgdXNlZCBmb3IgTmFtZXNwYWNlCiMgICAgICAgZGVjbGFyYXRpb25zLgojIGZhbHNlOiBEbyBub3QgcmVwb3J0IGF0dHJpYnV0ZXMgdXNlZCBmb3IgTmFtZXNwYWNlIGRlY2xhcmF0aW9ucywgYW5kCiMgICAgICAgIG9wdGlvbmFsbHkgZG8gbm90IHJlcG9ydCBvcmlnaW5hbCBwcmVmaXhlZCBuYW1lcyAoZGVmYXVsdCkuCiMgYWNjZXNzOiAocGFyc2luZykgcmVhZC1vbmx5OyAobm90IHBhcnNpbmcpIHJlYWQvd3JpdGUKCmZlYXR1cmVfc3RyaW5nX2ludGVybmluZyA9ICJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvc3RyaW5nLWludGVybmluZyIKIyB0cnVlOiBBbGwgZWxlbWVudCBuYW1lcywgcHJlZml4ZXMsIGF0dHJpYnV0ZSBuYW1lcywgTmFtZXNwYWNlIFVSSXMsIGFuZAojICAgICAgIGxvY2FsIG5hbWVzIGFyZSBpbnRlcm5lZCB1c2luZyB0aGUgYnVpbHQtaW4gaW50ZXJuIGZ1bmN0aW9uLgojIGZhbHNlOiBOYW1lcyBhcmUgbm90IG5lY2Vzc2FyaWx5IGludGVybmVkLCBhbHRob3VnaCB0aGV5IG1heSBiZSAoZGVmYXVsdCkuCiMgYWNjZXNzOiAocGFyc2luZykgcmVhZC1vbmx5OyAobm90IHBhcnNpbmcpIHJlYWQvd3JpdGUKCmZlYXR1cmVfdmFsaWRhdGlvbiA9ICJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvdmFsaWRhdGlvbiIKIyB0cnVlOiBSZXBvcnQgYWxsIHZhbGlkYXRpb24gZXJyb3JzIChpbXBsaWVzIGV4dGVybmFsLWdlbmVyYWwtZW50aXRpZXMgYW5kCiMgICAgICAgZXh0ZXJuYWwtcGFyYW1ldGVyLWVudGl0aWVzKS4KIyBmYWxzZTogRG8gbm90IHJlcG9ydCB2YWxpZGF0aW9uIGVycm9ycy4KIyBhY2Nlc3M6IChwYXJzaW5nKSByZWFkLW9ubHk7IChub3QgcGFyc2luZykgcmVhZC93cml0ZQoKZmVhdHVyZV9leHRlcm5hbF9nZXMgPSAiaHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL2V4dGVybmFsLWdlbmVyYWwtZW50aXRpZXMiCiMgdHJ1ZTogSW5jbHVkZSBhbGwgZXh0ZXJuYWwgZ2VuZXJhbCAodGV4dCkgZW50aXRpZXMuCiMgZmFsc2U6IERvIG5vdCBpbmNsdWRlIGV4dGVybmFsIGdlbmVyYWwgZW50aXRpZXMuCiMgYWNjZXNzOiAocGFyc2luZykgcmVhZC1vbmx5OyAobm90IHBhcnNpbmcpIHJlYWQvd3JpdGUKCmZlYXR1cmVfZXh0ZXJuYWxfcGVzID0gImh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9leHRlcm5hbC1wYXJhbWV0ZXItZW50aXRpZXMiCiMgdHJ1ZTogSW5jbHVkZSBhbGwgZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0aWVzLCBpbmNsdWRpbmcgdGhlIGV4dGVybmFsCiMgICAgICAgRFREIHN1YnNldC4KIyBmYWxzZTogRG8gbm90IGluY2x1ZGUgYW55IGV4dGVybmFsIHBhcmFtZXRlciBlbnRpdGllcywgZXZlbiB0aGUgZXh0ZXJuYWwKIyAgICAgICAgRFREIHN1YnNldC4KIyBhY2Nlc3M6IChwYXJzaW5nKSByZWFkLW9ubHk7IChub3QgcGFyc2luZykgcmVhZC93cml0ZQoKYWxsX2ZlYXR1cmVzID0gW2ZlYXR1cmVfbmFtZXNwYWNlcywKICAgICAgICAgICAgICAgIGZlYXR1cmVfbmFtZXNwYWNlX3ByZWZpeGVzLAogICAgICAgICAgICAgICAgZmVhdHVyZV9zdHJpbmdfaW50ZXJuaW5nLAogICAgICAgICAgICAgICAgZmVhdHVyZV92YWxpZGF0aW9uLAogICAgICAgICAgICAgICAgZmVhdHVyZV9leHRlcm5hbF9nZXMsCiAgICAgICAgICAgICAgICBmZWF0dXJlX2V4dGVybmFsX3Blc10KCgojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojCiMgQ09SRSBQUk9QRVJUSUVTCiMKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCnByb3BlcnR5X2xleGljYWxfaGFuZGxlciA9ICJodHRwOi8veG1sLm9yZy9zYXgvcHJvcGVydGllcy9sZXhpY2FsLWhhbmRsZXIiCiMgZGF0YSB0eXBlOiB4bWwuc2F4LnNheDJsaWIuTGV4aWNhbEhhbmRsZXIKIyBkZXNjcmlwdGlvbjogQW4gb3B0aW9uYWwgZXh0ZW5zaW9uIGhhbmRsZXIgZm9yIGxleGljYWwgZXZlbnRzIGxpa2UgY29tbWVudHMuCiMgYWNjZXNzOiByZWFkL3dyaXRlCgpwcm9wZXJ0eV9kZWNsYXJhdGlvbl9oYW5kbGVyID0gImh0dHA6Ly94bWwub3JnL3NheC9wcm9wZXJ0aWVzL2RlY2xhcmF0aW9uLWhhbmRsZXIiCiMgZGF0YSB0eXBlOiB4bWwuc2F4LnNheDJsaWIuRGVjbEhhbmRsZXIKIyBkZXNjcmlwdGlvbjogQW4gb3B0aW9uYWwgZXh0ZW5zaW9uIGhhbmRsZXIgZm9yIERURC1yZWxhdGVkIGV2ZW50cyBvdGhlcgojICAgICAgICAgICAgICB0aGFuIG5vdGF0aW9ucyBhbmQgdW5wYXJzZWQgZW50aXRpZXMuCiMgYWNjZXNzOiByZWFkL3dyaXRlCgpwcm9wZXJ0eV9kb21fbm9kZSA9ICJodHRwOi8veG1sLm9yZy9zYXgvcHJvcGVydGllcy9kb20tbm9kZSIKIyBkYXRhIHR5cGU6IG9yZy53M2MuZG9tLk5vZGUKIyBkZXNjcmlwdGlvbjogV2hlbiBwYXJzaW5nLCB0aGUgY3VycmVudCBET00gbm9kZSBiZWluZyB2aXNpdGVkIGlmIHRoaXMgaXMKIyAgICAgICAgICAgICAgYSBET00gaXRlcmF0b3I7IHdoZW4gbm90IHBhcnNpbmcsIHRoZSByb290IERPTSBub2RlIGZvcgojICAgICAgICAgICAgICBpdGVyYXRpb24uCiMgYWNjZXNzOiAocGFyc2luZykgcmVhZC1vbmx5OyAobm90IHBhcnNpbmcpIHJlYWQvd3JpdGUKCnByb3BlcnR5X3htbF9zdHJpbmcgPSAiaHR0cDovL3htbC5vcmcvc2F4L3Byb3BlcnRpZXMveG1sLXN0cmluZyIKIyBkYXRhIHR5cGU6IFN0cmluZwojIGRlc2NyaXB0aW9uOiBUaGUgbGl0ZXJhbCBzdHJpbmcgb2YgY2hhcmFjdGVycyB0aGF0IHdhcyB0aGUgc291cmNlIGZvcgojICAgICAgICAgICAgICB0aGUgY3VycmVudCBldmVudC4KIyBhY2Nlc3M6IHJlYWQtb25seQoKcHJvcGVydHlfZW5jb2RpbmcgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL3NheC9wcm9wZXJ0aWVzL2VuY29kaW5nIgojIGRhdGEgdHlwZTogU3RyaW5nCiMgZGVzY3JpcHRpb246IFRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB0byBhc3N1bWUgZm9yIGlucHV0IGRhdGEuCiMgYWNjZXNzOiB3cml0ZTogc2V0IHRoZSBlbmNvZGluZywgZS5nLiBlc3RhYmxpc2hlZCBieSBhIGhpZ2hlci1sZXZlbAojICAgICAgICAgICAgICAgIHByb3RvY29sLiBNYXkgY2hhbmdlIGR1cmluZyBwYXJzaW5nIChlLmcuIGFmdGVyCiMgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBhIE1FVEEgdGFnKQojICAgICAgICAgcmVhZDogIHJldHVybiB0aGUgY3VycmVudCBlbmNvZGluZyAocG9zc2libHkgZXN0YWJsaXNoZWQgdGhyb3VnaAojICAgICAgICAgICAgICAgIGF1dG8tZGV0ZWN0aW9uLgojIGluaXRpYWwgdmFsdWU6IFVURi04CiMKCnByb3BlcnR5X2ludGVybmluZ19kaWN0ID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9zYXgvcHJvcGVydGllcy9pbnRlcm5pbmctZGljdCIKIyBkYXRhIHR5cGU6IERpY3Rpb25hcnkKIyBkZXNjcmlwdGlvbjogVGhlIGRpY3Rpb25hcnkgdXNlZCB0byBpbnRlcm4gY29tbW9uIHN0cmluZ3MgaW4gdGhlIGRvY3VtZW50CiMgYWNjZXNzOiB3cml0ZTogUmVxdWVzdCB0aGF0IHRoZSBwYXJzZXIgdXNlcyBhIHNwZWNpZmljIGRpY3Rpb25hcnksIHRvCiMgICAgICAgICAgICAgICAgYWxsb3cgaW50ZXJuaW5nIGFjcm9zcyBkaWZmZXJlbnQgZG9jdW1lbnRzCiMgICAgICAgICByZWFkOiAgcmV0dXJuIHRoZSBjdXJyZW50IGludGVybmluZyBkaWN0aW9uYXJ5LCBvciBOb25lCiMKCmFsbF9wcm9wZXJ0aWVzID0gW3Byb3BlcnR5X2xleGljYWxfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgcHJvcGVydHlfZG9tX25vZGUsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5X2RlY2xhcmF0aW9uX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5X3htbF9zdHJpbmcsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5X2VuY29kaW5nLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eV9pbnRlcm5pbmdfZGljdF0KCgpjbGFzcyBMZXhpY2FsSGFuZGxlcjoKICAgICIiIk9wdGlvbmFsIFNBWDIgaGFuZGxlciBmb3IgbGV4aWNhbCBldmVudHMuCgogICAgVGhpcyBoYW5kbGVyIGlzIHVzZWQgdG8gb2J0YWluIGxleGljYWwgaW5mb3JtYXRpb24gYWJvdXQgYW4gWE1MCiAgICBkb2N1bWVudCwgdGhhdCBpcywgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBkb2N1bWVudCB3YXMgZW5jb2RlZAogICAgKGFzIG9wcG9zZWQgdG8gd2hhdCBpdCBjb250YWlucywgd2hpY2ggaXMgcmVwb3J0ZWQgdG8gdGhlCiAgICBDb250ZW50SGFuZGxlciksIHN1Y2ggYXMgY29tbWVudHMgYW5kIENEQVRBIG1hcmtlZCBzZWN0aW9uCiAgICBib3VuZGFyaWVzLgoKICAgIFRvIHNldCB0aGUgTGV4aWNhbEhhbmRsZXIgb2YgYW4gWE1MUmVhZGVyLCB1c2UgdGhlIHNldFByb3BlcnR5CiAgICBtZXRob2Qgd2l0aCB0aGUgcHJvcGVydHkgaWRlbnRpZmllcgogICAgJ2h0dHA6Ly94bWwub3JnL3NheC9wcm9wZXJ0aWVzL2xleGljYWwtaGFuZGxlcicuIiIiCgogICAgZGVmIGNvbW1lbnQoc2VsZiwgY29udGVudCk6CiAgICAgICAgIiIiUmVwb3J0cyBhIGNvbW1lbnQgYW55d2hlcmUgaW4gdGhlIGRvY3VtZW50IChpbmNsdWRpbmcgdGhlCiAgICAgICAgRFREIGFuZCBvdXRzaWRlIHRoZSBkb2N1bWVudCBlbGVtZW50KS4KCiAgICAgICAgY29udGVudCBpcyBhIHN0cmluZyB0aGF0IGhvbGRzIHRoZSBjb250ZW50cyBvZiB0aGUgY29tbWVudC4iIiIKCiAgICBkZWYgc3RhcnREVEQoc2VsZiwgbmFtZSwgcHVibGljX2lkLCBzeXN0ZW1faWQpOgogICAgICAgICIiIlJlcG9ydCB0aGUgc3RhcnQgb2YgdGhlIERURCBkZWNsYXJhdGlvbnMsIGlmIHRoZSBkb2N1bWVudAogICAgICAgIGhhcyBhbiBhc3NvY2lhdGVkIERURC4KCiAgICAgICAgQSBzdGFydEVudGl0eSBldmVudCB3aWxsIGJlIHJlcG9ydGVkIGJlZm9yZSBkZWNsYXJhdGlvbiBldmVudHMKICAgICAgICBmcm9tIHRoZSBleHRlcm5hbCBEVEQgc3Vic2V0IGFyZSByZXBvcnRlZCwgYW5kIHRoaXMgY2FuIGJlCiAgICAgICAgdXNlZCB0byBpbmZlciBmcm9tIHdoaWNoIHN1YnNldCBEVEQgZGVjbGFyYXRpb25zIGRlcml2ZS4KCiAgICAgICAgbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZG9jdW1lbnQgZWxlbWVudCB0eXBlLCBwdWJsaWNfaWQgdGhlCiAgICAgICAgcHVibGljIGlkZW50aWZpZXIgb2YgdGhlIERURCAob3IgTm9uZSBpZiBub25lIHdlcmUgc3VwcGxpZWQpCiAgICAgICAgYW5kIHN5c3RlbV9pZCB0aGUgc3lzdGVtIGlkZW50ZmllciBvZiB0aGUgZXh0ZXJuYWwgc3Vic2V0IChvcgogICAgICAgIE5vbmUgaWYgbm9uZSB3ZXJlIHN1cHBsaWVkKS4iIiIKCiAgICBkZWYgZW5kRFREKHNlbGYpOgogICAgICAgICIiIlNpZ25hbHMgdGhlIGVuZCBvZiBEVEQgZGVjbGFyYXRpb25zLiIiIgoKICAgIGRlZiBzdGFydENEQVRBKHNlbGYpOgogICAgICAgICIiIlJlcG9ydHMgdGhlIGJlZ2lubmluZyBvZiBhIENEQVRBIG1hcmtlZCBzZWN0aW9uLgoKICAgICAgICBUaGUgY29udGVudHMgb2YgdGhlIENEQVRBIG1hcmtlZCBzZWN0aW9uIHdpbGwgYmUgcmVwb3J0ZWQKICAgICAgICB0aHJvdWdoIHRoZSBjaGFyYWN0ZXJzIGV2ZW50LiIiIgoKICAgIGRlZiBlbmRDREFUQShzZWxmKToKICAgICAgICAiIiJSZXBvcnRzIHRoZSBlbmQgb2YgYSBDREFUQSBtYXJrZWQgc2VjdGlvbi4iIiIKUEsDBBQAAAAAAAMgo1bYf+yj3y8AAN8vAAATAAAAeG1sL3NheC9zYXh1dGlscy5weSIiIlwKQSBsaWJyYXJ5IG9mIHVzZWZ1bCBoZWxwZXIgY2xhc3NlcyB0byB0aGUgU0FYIGNsYXNzZXMsIGZvciB0aGUKY29udmVuaWVuY2Ugb2YgYXBwbGljYXRpb24gYW5kIGRyaXZlciB3cml0ZXJzLgoiIiIKCmltcG9ydCBvcywgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAppbXBvcnQgaW8KaW1wb3J0IGNvZGVjcwpmcm9tIC4gaW1wb3J0IGhhbmRsZXIKZnJvbSAuIGltcG9ydCB4bWxyZWFkZXIKCmRlZiBfX2RpY3RfcmVwbGFjZShzLCBkKToKICAgICIiIlJlcGxhY2Ugc3Vic3RyaW5ncyBvZiBhIHN0cmluZyB1c2luZyBhIGRpY3Rpb25hcnkuIiIiCiAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkLml0ZW1zKCk6CiAgICAgICAgcyA9IHMucmVwbGFjZShrZXksIHZhbHVlKQogICAgcmV0dXJuIHMKCmRlZiBlc2NhcGUoZGF0YSwgZW50aXRpZXM9e30pOgogICAgIiIiRXNjYXBlICYsIDwsIGFuZCA+IGluIGEgc3RyaW5nIG9mIGRhdGEuCgogICAgWW91IGNhbiBlc2NhcGUgb3RoZXIgc3RyaW5ncyBvZiBkYXRhIGJ5IHBhc3NpbmcgYSBkaWN0aW9uYXJ5IGFzCiAgICB0aGUgb3B0aW9uYWwgZW50aXRpZXMgcGFyYW1ldGVyLiAgVGhlIGtleXMgYW5kIHZhbHVlcyBtdXN0IGFsbCBiZQogICAgc3RyaW5nczsgZWFjaCBrZXkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGl0cyBjb3JyZXNwb25kaW5nIHZhbHVlLgogICAgIiIiCgogICAgIyBtdXN0IGRvIGFtcGVyc2FuZCBmaXJzdAogICAgZGF0YSA9IGRhdGEucmVwbGFjZSgiJiIsICImYW1wOyIpCiAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCI+IiwgIiZndDsiKQogICAgZGF0YSA9IGRhdGEucmVwbGFjZSgiPCIsICImbHQ7IikKICAgIGlmIGVudGl0aWVzOgogICAgICAgIGRhdGEgPSBfX2RpY3RfcmVwbGFjZShkYXRhLCBlbnRpdGllcykKICAgIHJldHVybiBkYXRhCgpkZWYgdW5lc2NhcGUoZGF0YSwgZW50aXRpZXM9e30pOgogICAgIiIiVW5lc2NhcGUgJmFtcDssICZsdDssIGFuZCAmZ3Q7IGluIGEgc3RyaW5nIG9mIGRhdGEuCgogICAgWW91IGNhbiB1bmVzY2FwZSBvdGhlciBzdHJpbmdzIG9mIGRhdGEgYnkgcGFzc2luZyBhIGRpY3Rpb25hcnkgYXMKICAgIHRoZSBvcHRpb25hbCBlbnRpdGllcyBwYXJhbWV0ZXIuICBUaGUga2V5cyBhbmQgdmFsdWVzIG11c3QgYWxsIGJlCiAgICBzdHJpbmdzOyBlYWNoIGtleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggaXRzIGNvcnJlc3BvbmRpbmcgdmFsdWUuCiAgICAiIiIKICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoIiZsdDsiLCAiPCIpCiAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCImZ3Q7IiwgIj4iKQogICAgaWYgZW50aXRpZXM6CiAgICAgICAgZGF0YSA9IF9fZGljdF9yZXBsYWNlKGRhdGEsIGVudGl0aWVzKQogICAgIyBtdXN0IGRvIGFtcGVyc2FuZCBsYXN0CiAgICByZXR1cm4gZGF0YS5yZXBsYWNlKCImYW1wOyIsICImIikKCmRlZiBxdW90ZWF0dHIoZGF0YSwgZW50aXRpZXM9e30pOgogICAgIiIiRXNjYXBlIGFuZCBxdW90ZSBhbiBhdHRyaWJ1dGUgdmFsdWUuCgogICAgRXNjYXBlICYsIDwsIGFuZCA+IGluIGEgc3RyaW5nIG9mIGRhdGEsIHRoZW4gcXVvdGUgaXQgZm9yIHVzZSBhcwogICAgYW4gYXR0cmlidXRlIHZhbHVlLiAgVGhlIFwiIGNoYXJhY3RlciB3aWxsIGJlIGVzY2FwZWQgYXMgd2VsbCwgaWYKICAgIG5lY2Vzc2FyeS4KCiAgICBZb3UgY2FuIGVzY2FwZSBvdGhlciBzdHJpbmdzIG9mIGRhdGEgYnkgcGFzc2luZyBhIGRpY3Rpb25hcnkgYXMKICAgIHRoZSBvcHRpb25hbCBlbnRpdGllcyBwYXJhbWV0ZXIuICBUaGUga2V5cyBhbmQgdmFsdWVzIG11c3QgYWxsIGJlCiAgICBzdHJpbmdzOyBlYWNoIGtleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggaXRzIGNvcnJlc3BvbmRpbmcgdmFsdWUuCiAgICAiIiIKICAgIGVudGl0aWVzID0geyoqZW50aXRpZXMsICdcbic6ICcmIzEwOycsICdccic6ICcmIzEzOycsICdcdCc6JyYjOTsnfQogICAgZGF0YSA9IGVzY2FwZShkYXRhLCBlbnRpdGllcykKICAgIGlmICciJyBpbiBkYXRhOgogICAgICAgIGlmICInIiBpbiBkYXRhOgogICAgICAgICAgICBkYXRhID0gJyIlcyInICUgZGF0YS5yZXBsYWNlKCciJywgIiZxdW90OyIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YSA9ICInJXMnIiAlIGRhdGEKICAgIGVsc2U6CiAgICAgICAgZGF0YSA9ICciJXMiJyAlIGRhdGEKICAgIHJldHVybiBkYXRhCgoKZGVmIF9nZXR0ZXh0d3JpdGVyKG91dCwgZW5jb2RpbmcpOgogICAgaWYgb3V0IGlzIE5vbmU6CiAgICAgICAgaW1wb3J0IHN5cwogICAgICAgIHJldHVybiBzeXMuc3Rkb3V0CgogICAgaWYgaXNpbnN0YW5jZShvdXQsIGlvLlRleHRJT0Jhc2UpOgogICAgICAgICMgdXNlIGEgdGV4dCB3cml0ZXIgYXMgaXMKICAgICAgICByZXR1cm4gb3V0CgogICAgaWYgaXNpbnN0YW5jZShvdXQsIChjb2RlY3MuU3RyZWFtV3JpdGVyLCBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKSk6CiAgICAgICAgIyB1c2UgYSBjb2RlY3Mgc3RyZWFtIHdyaXRlciBhcyBpcwogICAgICAgIHJldHVybiBvdXQKCiAgICAjIHdyYXAgYSBiaW5hcnkgd3JpdGVyIHdpdGggVGV4dElPV3JhcHBlcgogICAgaWYgaXNpbnN0YW5jZShvdXQsIGlvLlJhd0lPQmFzZSk6CiAgICAgICAgIyBLZWVwIHRoZSBvcmlnaW5hbCBmaWxlIG9wZW4gd2hlbiB0aGUgVGV4dElPV3JhcHBlciBpcwogICAgICAgICMgZGVzdHJveWVkCiAgICAgICAgY2xhc3MgX3dyYXBwZXI6CiAgICAgICAgICAgIF9fY2xhc3NfXyA9IG91dC5fX2NsYXNzX18KICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIob3V0LCBuYW1lKQogICAgICAgIGJ1ZmZlciA9IF93cmFwcGVyKCkKICAgICAgICBidWZmZXIuY2xvc2UgPSBsYW1iZGE6IE5vbmUKICAgIGVsc2U6CiAgICAgICAgIyBUaGlzIGlzIHRvIGhhbmRsZSBwYXNzZWQgb2JqZWN0cyB0aGF0IGFyZW4ndCBpbiB0aGUKICAgICAgICAjIElPQmFzZSBoaWVyYXJjaHksIGJ1dCBqdXN0IGhhdmUgYSB3cml0ZSBtZXRob2QKICAgICAgICBidWZmZXIgPSBpby5CdWZmZXJlZElPQmFzZSgpCiAgICAgICAgYnVmZmVyLndyaXRhYmxlID0gbGFtYmRhOiBUcnVlCiAgICAgICAgYnVmZmVyLndyaXRlID0gb3V0LndyaXRlCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIFRleHRJT1dyYXBwZXIgdXNlcyB0aGlzIG1ldGhvZHMgdG8gZGV0ZXJtaW5lCiAgICAgICAgICAgICMgaWYgQk9NIChmb3IgVVRGLTE2LCBldGMpIHNob3VsZCBiZSBhZGRlZAogICAgICAgICAgICBidWZmZXIuc2Vla2FibGUgPSBvdXQuc2Vla2FibGUKICAgICAgICAgICAgYnVmZmVyLnRlbGwgPSBvdXQudGVsbAogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYnVmZmVyLCBlbmNvZGluZz1lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0neG1sY2hhcnJlZnJlcGxhY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT0nXG4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfdGhyb3VnaD1UcnVlKQoKY2xhc3MgWE1MR2VuZXJhdG9yKGhhbmRsZXIuQ29udGVudEhhbmRsZXIpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXQ9Tm9uZSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiLCBzaG9ydF9lbXB0eV9lbGVtZW50cz1GYWxzZSk6CiAgICAgICAgaGFuZGxlci5Db250ZW50SGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgIG91dCA9IF9nZXR0ZXh0d3JpdGVyKG91dCwgZW5jb2RpbmcpCiAgICAgICAgc2VsZi5fd3JpdGUgPSBvdXQud3JpdGUKICAgICAgICBzZWxmLl9mbHVzaCA9IG91dC5mbHVzaAogICAgICAgIHNlbGYuX25zX2NvbnRleHRzID0gW3t9XSAjIGNvbnRhaW5zIHVyaSAtPiBwcmVmaXggZGljdHMKICAgICAgICBzZWxmLl9jdXJyZW50X2NvbnRleHQgPSBzZWxmLl9uc19jb250ZXh0c1stMV0KICAgICAgICBzZWxmLl91bmRlY2xhcmVkX25zX21hcHMgPSBbXQogICAgICAgIHNlbGYuX2VuY29kaW5nID0gZW5jb2RpbmcKICAgICAgICBzZWxmLl9zaG9ydF9lbXB0eV9lbGVtZW50cyA9IHNob3J0X2VtcHR5X2VsZW1lbnRzCiAgICAgICAgc2VsZi5fcGVuZGluZ19zdGFydF9lbGVtZW50ID0gRmFsc2UKCiAgICBkZWYgX3FuYW1lKHNlbGYsIG5hbWUpOgogICAgICAgICIiIkJ1aWxkcyBhIHF1YWxpZmllZCBuYW1lIGZyb20gYSAobnNfdXJsLCBsb2NhbG5hbWUpIHBhaXIiIiIKICAgICAgICBpZiBuYW1lWzBdOgogICAgICAgICAgICAjIFBlciBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UsIFRoZSAneG1sJyBwcmVmaXggaXMKICAgICAgICAgICAgIyBib3VuZCBieSBkZWZpbml0aW9uIHRvIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS4gIEl0CiAgICAgICAgICAgICMgZG9lcyBub3QgbmVlZCB0byBiZSBkZWNsYXJlZCBhbmQgd2lsbCBub3QgdXN1YWxseSBiZSBmb3VuZCBpbgogICAgICAgICAgICAjIHNlbGYuX2N1cnJlbnRfY29udGV4dC4KICAgICAgICAgICAgaWYgJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZScgPT0gbmFtZVswXToKICAgICAgICAgICAgICAgIHJldHVybiAneG1sOicgKyBuYW1lWzFdCiAgICAgICAgICAgICMgVGhlIG5hbWUgaXMgaW4gYSBub24tZW1wdHkgbmFtZXNwYWNlCiAgICAgICAgICAgIHByZWZpeCA9IHNlbGYuX2N1cnJlbnRfY29udGV4dFtuYW1lWzBdXQogICAgICAgICAgICBpZiBwcmVmaXg6CiAgICAgICAgICAgICAgICAjIElmIGl0IGlzIG5vdCB0aGUgZGVmYXVsdCBuYW1lc3BhY2UsIHByZXBlbmQgdGhlIHByZWZpeAogICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArICI6IiArIG5hbWVbMV0KICAgICAgICAjIFJldHVybiB0aGUgdW5xdWFsaWZpZWQgbmFtZQogICAgICAgIHJldHVybiBuYW1lWzFdCgogICAgZGVmIF9maW5pc2hfcGVuZGluZ19zdGFydF9lbGVtZW50KHNlbGYsZW5kRWxlbWVudD1GYWxzZSk6CiAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19zdGFydF9lbGVtZW50OgogICAgICAgICAgICBzZWxmLl93cml0ZSgnPicpCiAgICAgICAgICAgIHNlbGYuX3BlbmRpbmdfc3RhcnRfZWxlbWVudCA9IEZhbHNlCgogICAgIyBDb250ZW50SGFuZGxlciBtZXRob2RzCgogICAgZGVmIHN0YXJ0RG9jdW1lbnQoc2VsZik6CiAgICAgICAgc2VsZi5fd3JpdGUoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiVzIj8+XG4nICUKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZW5jb2RpbmcpCgogICAgZGVmIGVuZERvY3VtZW50KHNlbGYpOgogICAgICAgIHNlbGYuX2ZsdXNoKCkKCiAgICBkZWYgc3RhcnRQcmVmaXhNYXBwaW5nKHNlbGYsIHByZWZpeCwgdXJpKToKICAgICAgICBzZWxmLl9uc19jb250ZXh0cy5hcHBlbmQoc2VsZi5fY3VycmVudF9jb250ZXh0LmNvcHkoKSkKICAgICAgICBzZWxmLl9jdXJyZW50X2NvbnRleHRbdXJpXSA9IHByZWZpeAogICAgICAgIHNlbGYuX3VuZGVjbGFyZWRfbnNfbWFwcy5hcHBlbmQoKHByZWZpeCwgdXJpKSkKCiAgICBkZWYgZW5kUHJlZml4TWFwcGluZyhzZWxmLCBwcmVmaXgpOgogICAgICAgIHNlbGYuX2N1cnJlbnRfY29udGV4dCA9IHNlbGYuX25zX2NvbnRleHRzWy0xXQogICAgICAgIGRlbCBzZWxmLl9uc19jb250ZXh0c1stMV0KCiAgICBkZWYgc3RhcnRFbGVtZW50KHNlbGYsIG5hbWUsIGF0dHJzKToKICAgICAgICBzZWxmLl9maW5pc2hfcGVuZGluZ19zdGFydF9lbGVtZW50KCkKICAgICAgICBzZWxmLl93cml0ZSgnPCcgKyBuYW1lKQogICAgICAgIGZvciAobmFtZSwgdmFsdWUpIGluIGF0dHJzLml0ZW1zKCk6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlKCcgJXM9JXMnICUgKG5hbWUsIHF1b3RlYXR0cih2YWx1ZSkpKQogICAgICAgIGlmIHNlbGYuX3Nob3J0X2VtcHR5X2VsZW1lbnRzOgogICAgICAgICAgICBzZWxmLl9wZW5kaW5nX3N0YXJ0X2VsZW1lbnQgPSBUcnVlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fd3JpdGUoIj4iKQoKICAgIGRlZiBlbmRFbGVtZW50KHNlbGYsIG5hbWUpOgogICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfc3RhcnRfZWxlbWVudDoKICAgICAgICAgICAgc2VsZi5fd3JpdGUoJy8+JykKICAgICAgICAgICAgc2VsZi5fcGVuZGluZ19zdGFydF9lbGVtZW50ID0gRmFsc2UKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl93cml0ZSgnPC8lcz4nICUgbmFtZSkKCiAgICBkZWYgc3RhcnRFbGVtZW50TlMoc2VsZiwgbmFtZSwgcW5hbWUsIGF0dHJzKToKICAgICAgICBzZWxmLl9maW5pc2hfcGVuZGluZ19zdGFydF9lbGVtZW50KCkKICAgICAgICBzZWxmLl93cml0ZSgnPCcgKyBzZWxmLl9xbmFtZShuYW1lKSkKCiAgICAgICAgZm9yIHByZWZpeCwgdXJpIGluIHNlbGYuX3VuZGVjbGFyZWRfbnNfbWFwczoKICAgICAgICAgICAgaWYgcHJlZml4OgogICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoJyB4bWxuczolcz0iJXMiJyAlIChwcmVmaXgsIHVyaSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl93cml0ZSgnIHhtbG5zPSIlcyInICUgdXJpKQogICAgICAgIHNlbGYuX3VuZGVjbGFyZWRfbnNfbWFwcyA9IFtdCgogICAgICAgIGZvciAobmFtZSwgdmFsdWUpIGluIGF0dHJzLml0ZW1zKCk6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlKCcgJXM9JXMnICUgKHNlbGYuX3FuYW1lKG5hbWUpLCBxdW90ZWF0dHIodmFsdWUpKSkKICAgICAgICBpZiBzZWxmLl9zaG9ydF9lbXB0eV9lbGVtZW50czoKICAgICAgICAgICAgc2VsZi5fcGVuZGluZ19zdGFydF9lbGVtZW50ID0gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlKCI+IikKCiAgICBkZWYgZW5kRWxlbWVudE5TKHNlbGYsIG5hbWUsIHFuYW1lKToKICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3N0YXJ0X2VsZW1lbnQ6CiAgICAgICAgICAgIHNlbGYuX3dyaXRlKCcvPicpCiAgICAgICAgICAgIHNlbGYuX3BlbmRpbmdfc3RhcnRfZWxlbWVudCA9IEZhbHNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5fd3JpdGUoJzwvJXM+JyAlIHNlbGYuX3FuYW1lKG5hbWUpKQoKICAgIGRlZiBjaGFyYWN0ZXJzKHNlbGYsIGNvbnRlbnQpOgogICAgICAgIGlmIGNvbnRlbnQ6CiAgICAgICAgICAgIHNlbGYuX2ZpbmlzaF9wZW5kaW5nX3N0YXJ0X2VsZW1lbnQoKQogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb250ZW50LCBzdHIpOgogICAgICAgICAgICAgICAgY29udGVudCA9IHN0cihjb250ZW50LCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgc2VsZi5fd3JpdGUoZXNjYXBlKGNvbnRlbnQpKQoKICAgIGRlZiBpZ25vcmFibGVXaGl0ZXNwYWNlKHNlbGYsIGNvbnRlbnQpOgogICAgICAgIGlmIGNvbnRlbnQ6CiAgICAgICAgICAgIHNlbGYuX2ZpbmlzaF9wZW5kaW5nX3N0YXJ0X2VsZW1lbnQoKQogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb250ZW50LCBzdHIpOgogICAgICAgICAgICAgICAgY29udGVudCA9IHN0cihjb250ZW50LCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgc2VsZi5fd3JpdGUoY29udGVudCkKCiAgICBkZWYgcHJvY2Vzc2luZ0luc3RydWN0aW9uKHNlbGYsIHRhcmdldCwgZGF0YSk6CiAgICAgICAgc2VsZi5fZmluaXNoX3BlbmRpbmdfc3RhcnRfZWxlbWVudCgpCiAgICAgICAgc2VsZi5fd3JpdGUoJzw/JXMgJXM/PicgJSAodGFyZ2V0LCBkYXRhKSkKCgpjbGFzcyBYTUxGaWx0ZXJCYXNlKHhtbHJlYWRlci5YTUxSZWFkZXIpOgogICAgIiIiVGhpcyBjbGFzcyBpcyBkZXNpZ25lZCB0byBzaXQgYmV0d2VlbiBhbiBYTUxSZWFkZXIgYW5kIHRoZQogICAgY2xpZW50IGFwcGxpY2F0aW9uJ3MgZXZlbnQgaGFuZGxlcnMuICBCeSBkZWZhdWx0LCBpdCBkb2VzIG5vdGhpbmcKICAgIGJ1dCBwYXNzIHJlcXVlc3RzIHVwIHRvIHRoZSByZWFkZXIgYW5kIGV2ZW50cyBvbiB0byB0aGUgaGFuZGxlcnMKICAgIHVubW9kaWZpZWQsIGJ1dCBzdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBzcGVjaWZpYyBtZXRob2RzIHRvIG1vZGlmeQogICAgdGhlIGV2ZW50IHN0cmVhbSBvciB0aGUgY29uZmlndXJhdGlvbiByZXF1ZXN0cyBhcyB0aGV5IHBhc3MKICAgIHRocm91Z2guIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCA9IE5vbmUpOgogICAgICAgIHhtbHJlYWRlci5YTUxSZWFkZXIuX19pbml0X18oc2VsZikKICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKCiAgICAjIEVycm9ySGFuZGxlciBtZXRob2RzCgogICAgZGVmIGVycm9yKHNlbGYsIGV4Y2VwdGlvbik6CiAgICAgICAgc2VsZi5fZXJyX2hhbmRsZXIuZXJyb3IoZXhjZXB0aW9uKQoKICAgIGRlZiBmYXRhbEVycm9yKHNlbGYsIGV4Y2VwdGlvbik6CiAgICAgICAgc2VsZi5fZXJyX2hhbmRsZXIuZmF0YWxFcnJvcihleGNlcHRpb24pCgogICAgZGVmIHdhcm5pbmcoc2VsZiwgZXhjZXB0aW9uKToKICAgICAgICBzZWxmLl9lcnJfaGFuZGxlci53YXJuaW5nKGV4Y2VwdGlvbikKCiAgICAjIENvbnRlbnRIYW5kbGVyIG1ldGhvZHMKCiAgICBkZWYgc2V0RG9jdW1lbnRMb2NhdG9yKHNlbGYsIGxvY2F0b3IpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5zZXREb2N1bWVudExvY2F0b3IobG9jYXRvcikKCiAgICBkZWYgc3RhcnREb2N1bWVudChzZWxmKToKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIuc3RhcnREb2N1bWVudCgpCgogICAgZGVmIGVuZERvY3VtZW50KHNlbGYpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5lbmREb2N1bWVudCgpCgogICAgZGVmIHN0YXJ0UHJlZml4TWFwcGluZyhzZWxmLCBwcmVmaXgsIHVyaSk6CiAgICAgICAgc2VsZi5fY29udF9oYW5kbGVyLnN0YXJ0UHJlZml4TWFwcGluZyhwcmVmaXgsIHVyaSkKCiAgICBkZWYgZW5kUHJlZml4TWFwcGluZyhzZWxmLCBwcmVmaXgpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5lbmRQcmVmaXhNYXBwaW5nKHByZWZpeCkKCiAgICBkZWYgc3RhcnRFbGVtZW50KHNlbGYsIG5hbWUsIGF0dHJzKToKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIuc3RhcnRFbGVtZW50KG5hbWUsIGF0dHJzKQoKICAgIGRlZiBlbmRFbGVtZW50KHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5lbmRFbGVtZW50KG5hbWUpCgogICAgZGVmIHN0YXJ0RWxlbWVudE5TKHNlbGYsIG5hbWUsIHFuYW1lLCBhdHRycyk6CiAgICAgICAgc2VsZi5fY29udF9oYW5kbGVyLnN0YXJ0RWxlbWVudE5TKG5hbWUsIHFuYW1lLCBhdHRycykKCiAgICBkZWYgZW5kRWxlbWVudE5TKHNlbGYsIG5hbWUsIHFuYW1lKToKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIuZW5kRWxlbWVudE5TKG5hbWUsIHFuYW1lKQoKICAgIGRlZiBjaGFyYWN0ZXJzKHNlbGYsIGNvbnRlbnQpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5jaGFyYWN0ZXJzKGNvbnRlbnQpCgogICAgZGVmIGlnbm9yYWJsZVdoaXRlc3BhY2Uoc2VsZiwgY2hhcnMpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5pZ25vcmFibGVXaGl0ZXNwYWNlKGNoYXJzKQoKICAgIGRlZiBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oc2VsZiwgdGFyZ2V0LCBkYXRhKToKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIucHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwgZGF0YSkKCiAgICBkZWYgc2tpcHBlZEVudGl0eShzZWxmLCBuYW1lKToKICAgICAgICBzZWxmLl9jb250X2hhbmRsZXIuc2tpcHBlZEVudGl0eShuYW1lKQoKICAgICMgRFRESGFuZGxlciBtZXRob2RzCgogICAgZGVmIG5vdGF0aW9uRGVjbChzZWxmLCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpOgogICAgICAgIHNlbGYuX2R0ZF9oYW5kbGVyLm5vdGF0aW9uRGVjbChuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpCgogICAgZGVmIHVucGFyc2VkRW50aXR5RGVjbChzZWxmLCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsIG5kYXRhKToKICAgICAgICBzZWxmLl9kdGRfaGFuZGxlci51bnBhcnNlZEVudGl0eURlY2wobmFtZSwgcHVibGljSWQsIHN5c3RlbUlkLCBuZGF0YSkKCiAgICAjIEVudGl0eVJlc29sdmVyIG1ldGhvZHMKCiAgICBkZWYgcmVzb2x2ZUVudGl0eShzZWxmLCBwdWJsaWNJZCwgc3lzdGVtSWQpOgogICAgICAgIHJldHVybiBzZWxmLl9lbnRfaGFuZGxlci5yZXNvbHZlRW50aXR5KHB1YmxpY0lkLCBzeXN0ZW1JZCkKCiAgICAjIFhNTFJlYWRlciBtZXRob2RzCgogICAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSk6CiAgICAgICAgc2VsZi5fcGFyZW50LnNldENvbnRlbnRIYW5kbGVyKHNlbGYpCiAgICAgICAgc2VsZi5fcGFyZW50LnNldEVycm9ySGFuZGxlcihzZWxmKQogICAgICAgIHNlbGYuX3BhcmVudC5zZXRFbnRpdHlSZXNvbHZlcihzZWxmKQogICAgICAgIHNlbGYuX3BhcmVudC5zZXREVERIYW5kbGVyKHNlbGYpCiAgICAgICAgc2VsZi5fcGFyZW50LnBhcnNlKHNvdXJjZSkKCiAgICBkZWYgc2V0TG9jYWxlKHNlbGYsIGxvY2FsZSk6CiAgICAgICAgc2VsZi5fcGFyZW50LnNldExvY2FsZShsb2NhbGUpCgogICAgZGVmIGdldEZlYXR1cmUoc2VsZiwgbmFtZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmVudC5nZXRGZWF0dXJlKG5hbWUpCgogICAgZGVmIHNldEZlYXR1cmUoc2VsZiwgbmFtZSwgc3RhdGUpOgogICAgICAgIHNlbGYuX3BhcmVudC5zZXRGZWF0dXJlKG5hbWUsIHN0YXRlKQoKICAgIGRlZiBnZXRQcm9wZXJ0eShzZWxmLCBuYW1lKToKICAgICAgICByZXR1cm4gc2VsZi5fcGFyZW50LmdldFByb3BlcnR5KG5hbWUpCgogICAgZGVmIHNldFByb3BlcnR5KHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICBzZWxmLl9wYXJlbnQuc2V0UHJvcGVydHkobmFtZSwgdmFsdWUpCgogICAgIyBYTUxGaWx0ZXIgbWV0aG9kcwoKICAgIGRlZiBnZXRQYXJlbnQoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmVudAoKICAgIGRlZiBzZXRQYXJlbnQoc2VsZiwgcGFyZW50KToKICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKCiMgLS0tIFV0aWxpdHkgZnVuY3Rpb25zCgpkZWYgcHJlcGFyZV9pbnB1dF9zb3VyY2Uoc291cmNlLCBiYXNlPSIiKToKICAgICIiIlRoaXMgZnVuY3Rpb24gdGFrZXMgYW4gSW5wdXRTb3VyY2UgYW5kIGFuIG9wdGlvbmFsIGJhc2UgVVJMIGFuZAogICAgcmV0dXJucyBhIGZ1bGx5IHJlc29sdmVkIElucHV0U291cmNlIG9iamVjdCByZWFkeSBmb3IgcmVhZGluZy4iIiIKCiAgICBpZiBpc2luc3RhbmNlKHNvdXJjZSwgb3MuUGF0aExpa2UpOgogICAgICAgIHNvdXJjZSA9IG9zLmZzcGF0aChzb3VyY2UpCiAgICBpZiBpc2luc3RhbmNlKHNvdXJjZSwgc3RyKToKICAgICAgICBzb3VyY2UgPSB4bWxyZWFkZXIuSW5wdXRTb3VyY2Uoc291cmNlKQogICAgZWxpZiBoYXNhdHRyKHNvdXJjZSwgInJlYWQiKToKICAgICAgICBmID0gc291cmNlCiAgICAgICAgc291cmNlID0geG1scmVhZGVyLklucHV0U291cmNlKCkKICAgICAgICBpZiBpc2luc3RhbmNlKGYucmVhZCgwKSwgc3RyKToKICAgICAgICAgICAgc291cmNlLnNldENoYXJhY3RlclN0cmVhbShmKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNvdXJjZS5zZXRCeXRlU3RyZWFtKGYpCiAgICAgICAgaWYgaGFzYXR0cihmLCAibmFtZSIpIGFuZCBpc2luc3RhbmNlKGYubmFtZSwgc3RyKToKICAgICAgICAgICAgc291cmNlLnNldFN5c3RlbUlkKGYubmFtZSkKCiAgICBpZiBzb3VyY2UuZ2V0Q2hhcmFjdGVyU3RyZWFtKCkgaXMgTm9uZSBhbmQgc291cmNlLmdldEJ5dGVTdHJlYW0oKSBpcyBOb25lOgogICAgICAgIHN5c2lkID0gc291cmNlLmdldFN5c3RlbUlkKCkKICAgICAgICBiYXNlaGVhZCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLm5vcm1wYXRoKGJhc2UpKQogICAgICAgIHN5c2lkZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oYmFzZWhlYWQsIHN5c2lkKQogICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHN5c2lkZmlsZW5hbWUpOgogICAgICAgICAgICBzb3VyY2Uuc2V0U3lzdGVtSWQoc3lzaWRmaWxlbmFtZSkKICAgICAgICAgICAgZiA9IG9wZW4oc3lzaWRmaWxlbmFtZSwgInJiIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBzb3VyY2Uuc2V0U3lzdGVtSWQodXJsbGliLnBhcnNlLnVybGpvaW4oYmFzZSwgc3lzaWQpKQogICAgICAgICAgICBmID0gdXJsbGliLnJlcXVlc3QudXJsb3Blbihzb3VyY2UuZ2V0U3lzdGVtSWQoKSkKCiAgICAgICAgc291cmNlLnNldEJ5dGVTdHJlYW0oZikKCiAgICByZXR1cm4gc291cmNlClBLAwQUAAAAAAADIKNWhSYyj4wxAACMMQAAFAAAAHhtbC9zYXgveG1scmVhZGVyLnB5IiIiQW4gWE1MIFJlYWRlciBpcyB0aGUgU0FYIDIgbmFtZSBmb3IgYW4gWE1MIHBhcnNlci4gWE1MIFBhcnNlcnMKc2hvdWxkIGJlIGJhc2VkIG9uIHRoaXMgY29kZS4gIiIiCgpmcm9tIC4gaW1wb3J0IGhhbmRsZXIKCmZyb20gLl9leGNlcHRpb25zIGltcG9ydCBTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24sIFNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24KCgojID09PT09IFhNTFJFQURFUiA9PT09PQoKY2xhc3MgWE1MUmVhZGVyOgogICAgIiIiSW50ZXJmYWNlIGZvciByZWFkaW5nIGFuIFhNTCBkb2N1bWVudCB1c2luZyBjYWxsYmFja3MuCgogICAgWE1MUmVhZGVyIGlzIHRoZSBpbnRlcmZhY2UgdGhhdCBhbiBYTUwgcGFyc2VyJ3MgU0FYMiBkcml2ZXIgbXVzdAogICAgaW1wbGVtZW50LiBUaGlzIGludGVyZmFjZSBhbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gc2V0IGFuZCBxdWVyeQogICAgZmVhdHVyZXMgYW5kIHByb3BlcnRpZXMgaW4gdGhlIHBhcnNlciwgdG8gcmVnaXN0ZXIgZXZlbnQgaGFuZGxlcnMKICAgIGZvciBkb2N1bWVudCBwcm9jZXNzaW5nLCBhbmQgdG8gaW5pdGlhdGUgYSBkb2N1bWVudCBwYXJzZS4KCiAgICBBbGwgU0FYIGludGVyZmFjZXMgYXJlIGFzc3VtZWQgdG8gYmUgc3luY2hyb25vdXM6IHRoZSBwYXJzZQogICAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gdW50aWwgcGFyc2luZyBpcyBjb21wbGV0ZSwgYW5kIHJlYWRlcnMKICAgIG11c3Qgd2FpdCBmb3IgYW4gZXZlbnQtaGFuZGxlciBjYWxsYmFjayB0byByZXR1cm4gYmVmb3JlIHJlcG9ydGluZwogICAgdGhlIG5leHQgZXZlbnQuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlciA9IGhhbmRsZXIuQ29udGVudEhhbmRsZXIoKQogICAgICAgIHNlbGYuX2R0ZF9oYW5kbGVyID0gaGFuZGxlci5EVERIYW5kbGVyKCkKICAgICAgICBzZWxmLl9lbnRfaGFuZGxlciA9IGhhbmRsZXIuRW50aXR5UmVzb2x2ZXIoKQogICAgICAgIHNlbGYuX2Vycl9oYW5kbGVyID0gaGFuZGxlci5FcnJvckhhbmRsZXIoKQoKICAgIGRlZiBwYXJzZShzZWxmLCBzb3VyY2UpOgogICAgICAgICJQYXJzZSBhbiBYTUwgZG9jdW1lbnQgZnJvbSBhIHN5c3RlbSBpZGVudGlmaWVyIG9yIGFuIElucHV0U291cmNlLiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJUaGlzIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkISIpCgogICAgZGVmIGdldENvbnRlbnRIYW5kbGVyKHNlbGYpOgogICAgICAgICJSZXR1cm5zIHRoZSBjdXJyZW50IENvbnRlbnRIYW5kbGVyLiIKICAgICAgICByZXR1cm4gc2VsZi5fY29udF9oYW5kbGVyCgogICAgZGVmIHNldENvbnRlbnRIYW5kbGVyKHNlbGYsIGhhbmRsZXIpOgogICAgICAgICJSZWdpc3RlcnMgYSBuZXcgb2JqZWN0IHRvIHJlY2VpdmUgZG9jdW1lbnQgY29udGVudCBldmVudHMuIgogICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlciA9IGhhbmRsZXIKCiAgICBkZWYgZ2V0RFRESGFuZGxlcihzZWxmKToKICAgICAgICAiUmV0dXJucyB0aGUgY3VycmVudCBEVEQgaGFuZGxlci4iCiAgICAgICAgcmV0dXJuIHNlbGYuX2R0ZF9oYW5kbGVyCgogICAgZGVmIHNldERUREhhbmRsZXIoc2VsZiwgaGFuZGxlcik6CiAgICAgICAgIlJlZ2lzdGVyIGFuIG9iamVjdCB0byByZWNlaXZlIGJhc2ljIERURC1yZWxhdGVkIGV2ZW50cy4iCiAgICAgICAgc2VsZi5fZHRkX2hhbmRsZXIgPSBoYW5kbGVyCgogICAgZGVmIGdldEVudGl0eVJlc29sdmVyKHNlbGYpOgogICAgICAgICJSZXR1cm5zIHRoZSBjdXJyZW50IEVudGl0eVJlc29sdmVyLiIKICAgICAgICByZXR1cm4gc2VsZi5fZW50X2hhbmRsZXIKCiAgICBkZWYgc2V0RW50aXR5UmVzb2x2ZXIoc2VsZiwgcmVzb2x2ZXIpOgogICAgICAgICJSZWdpc3RlciBhbiBvYmplY3QgdG8gcmVzb2x2ZSBleHRlcm5hbCBlbnRpdGllcy4iCiAgICAgICAgc2VsZi5fZW50X2hhbmRsZXIgPSByZXNvbHZlcgoKICAgIGRlZiBnZXRFcnJvckhhbmRsZXIoc2VsZik6CiAgICAgICAgIlJldHVybnMgdGhlIGN1cnJlbnQgRXJyb3JIYW5kbGVyLiIKICAgICAgICByZXR1cm4gc2VsZi5fZXJyX2hhbmRsZXIKCiAgICBkZWYgc2V0RXJyb3JIYW5kbGVyKHNlbGYsIGhhbmRsZXIpOgogICAgICAgICJSZWdpc3RlciBhbiBvYmplY3QgdG8gcmVjZWl2ZSBlcnJvci1tZXNzYWdlIGV2ZW50cy4iCiAgICAgICAgc2VsZi5fZXJyX2hhbmRsZXIgPSBoYW5kbGVyCgogICAgZGVmIHNldExvY2FsZShzZWxmLCBsb2NhbGUpOgogICAgICAgICIiIkFsbG93IGFuIGFwcGxpY2F0aW9uIHRvIHNldCB0aGUgbG9jYWxlIGZvciBlcnJvcnMgYW5kIHdhcm5pbmdzLgoKICAgICAgICBTQVggcGFyc2VycyBhcmUgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgbG9jYWxpemF0aW9uIGZvciBlcnJvcnMKICAgICAgICBhbmQgd2FybmluZ3M7IGlmIHRoZXkgY2Fubm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBsb2NhbGUsCiAgICAgICAgaG93ZXZlciwgdGhleSBtdXN0IHJhaXNlIGEgU0FYIGV4Y2VwdGlvbi4gQXBwbGljYXRpb25zIG1heQogICAgICAgIHJlcXVlc3QgYSBsb2NhbGUgY2hhbmdlIGluIHRoZSBtaWRkbGUgb2YgYSBwYXJzZS4iIiIKICAgICAgICByYWlzZSBTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24oIkxvY2FsZSBzdXBwb3J0IG5vdCBpbXBsZW1lbnRlZCIpCgogICAgZGVmIGdldEZlYXR1cmUoc2VsZiwgbmFtZSk6CiAgICAgICAgIkxvb2tzIHVwIGFuZCByZXR1cm5zIHRoZSBzdGF0ZSBvZiBhIFNBWDIgZmVhdHVyZS4iCiAgICAgICAgcmFpc2UgU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbigiRmVhdHVyZSAnJXMnIG5vdCByZWNvZ25pemVkIiAlIG5hbWUpCgogICAgZGVmIHNldEZlYXR1cmUoc2VsZiwgbmFtZSwgc3RhdGUpOgogICAgICAgICJTZXRzIHRoZSBzdGF0ZSBvZiBhIFNBWDIgZmVhdHVyZS4iCiAgICAgICAgcmFpc2UgU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbigiRmVhdHVyZSAnJXMnIG5vdCByZWNvZ25pemVkIiAlIG5hbWUpCgogICAgZGVmIGdldFByb3BlcnR5KHNlbGYsIG5hbWUpOgogICAgICAgICJMb29rcyB1cCBhbmQgcmV0dXJucyB0aGUgdmFsdWUgb2YgYSBTQVgyIHByb3BlcnR5LiIKICAgICAgICByYWlzZSBTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uKCJQcm9wZXJ0eSAnJXMnIG5vdCByZWNvZ25pemVkIiAlIG5hbWUpCgogICAgZGVmIHNldFByb3BlcnR5KHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAiU2V0cyB0aGUgdmFsdWUgb2YgYSBTQVgyIHByb3BlcnR5LiIKICAgICAgICByYWlzZSBTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uKCJQcm9wZXJ0eSAnJXMnIG5vdCByZWNvZ25pemVkIiAlIG5hbWUpCgpjbGFzcyBJbmNyZW1lbnRhbFBhcnNlcihYTUxSZWFkZXIpOgogICAgIiIiVGhpcyBpbnRlcmZhY2UgYWRkcyB0aHJlZSBleHRyYSBtZXRob2RzIHRvIHRoZSBYTUxSZWFkZXIKICAgIGludGVyZmFjZSB0aGF0IGFsbG93IFhNTCBwYXJzZXJzIHRvIHN1cHBvcnQgaW5jcmVtZW50YWwKICAgIHBhcnNpbmcuIFN1cHBvcnQgZm9yIHRoaXMgaW50ZXJmYWNlIGlzIG9wdGlvbmFsLCBzaW5jZSBub3QgYWxsCiAgICB1bmRlcmx5aW5nIFhNTCBwYXJzZXJzIHN1cHBvcnQgdGhpcyBmdW5jdGlvbmFsaXR5LgoKICAgIFdoZW4gdGhlIHBhcnNlciBpcyBpbnN0YW50aWF0ZWQgaXQgaXMgcmVhZHkgdG8gYmVnaW4gYWNjZXB0aW5nCiAgICBkYXRhIGZyb20gdGhlIGZlZWQgbWV0aG9kIGltbWVkaWF0ZWx5LiBBZnRlciBwYXJzaW5nIGhhcyBiZWVuCiAgICBmaW5pc2hlZCB3aXRoIGEgY2FsbCB0byBjbG9zZSB0aGUgcmVzZXQgbWV0aG9kIG11c3QgYmUgY2FsbGVkIHRvCiAgICBtYWtlIHRoZSBwYXJzZXIgcmVhZHkgdG8gYWNjZXB0IG5ldyBkYXRhLCBlaXRoZXIgZnJvbSBmZWVkIG9yCiAgICB1c2luZyB0aGUgcGFyc2UgbWV0aG9kLgoKICAgIE5vdGUgdGhhdCB0aGVzZSBtZXRob2RzIG11c3QgX25vdF8gYmUgY2FsbGVkIGR1cmluZyBwYXJzaW5nLCB0aGF0CiAgICBpcywgYWZ0ZXIgcGFyc2UgaGFzIGJlZW4gY2FsbGVkIGFuZCBiZWZvcmUgaXQgcmV0dXJucy4KCiAgICBCeSBkZWZhdWx0LCB0aGUgY2xhc3MgYWxzbyBpbXBsZW1lbnRzIHRoZSBwYXJzZSBtZXRob2Qgb2YgdGhlIFhNTFJlYWRlcgogICAgaW50ZXJmYWNlIHVzaW5nIHRoZSBmZWVkLCBjbG9zZSBhbmQgcmVzZXQgbWV0aG9kcyBvZiB0aGUKICAgIEluY3JlbWVudGFsUGFyc2VyIGludGVyZmFjZSBhcyBhIGNvbnZlbmllbmNlIHRvIFNBWCAyLjAgZHJpdmVyCiAgICB3cml0ZXJzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWZzaXplPTIqKjE2KToKICAgICAgICBzZWxmLl9idWZzaXplID0gYnVmc2l6ZQogICAgICAgIFhNTFJlYWRlci5fX2luaXRfXyhzZWxmKQoKICAgIGRlZiBwYXJzZShzZWxmLCBzb3VyY2UpOgogICAgICAgIGZyb20gLiBpbXBvcnQgc2F4dXRpbHMKICAgICAgICBzb3VyY2UgPSBzYXh1dGlscy5wcmVwYXJlX2lucHV0X3NvdXJjZShzb3VyY2UpCgogICAgICAgIHNlbGYucHJlcGFyZVBhcnNlcihzb3VyY2UpCiAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRDaGFyYWN0ZXJTdHJlYW0oKQogICAgICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkKICAgICAgICBidWZmZXIgPSBmaWxlLnJlYWQoc2VsZi5fYnVmc2l6ZSkKICAgICAgICB3aGlsZSBidWZmZXI6CiAgICAgICAgICAgIHNlbGYuZmVlZChidWZmZXIpCiAgICAgICAgICAgIGJ1ZmZlciA9IGZpbGUucmVhZChzZWxmLl9idWZzaXplKQogICAgICAgIHNlbGYuY2xvc2UoKQoKICAgIGRlZiBmZWVkKHNlbGYsIGRhdGEpOgogICAgICAgICIiIlRoaXMgbWV0aG9kIGdpdmVzIHRoZSByYXcgWE1MIGRhdGEgaW4gdGhlIGRhdGEgcGFyYW1ldGVyIHRvCiAgICAgICAgdGhlIHBhcnNlciBhbmQgbWFrZXMgaXQgcGFyc2UgdGhlIGRhdGEsIGVtaXR0aW5nIHRoZQogICAgICAgIGNvcnJlc3BvbmRpbmcgZXZlbnRzLiBJdCBpcyBhbGxvd2VkIGZvciBYTUwgY29uc3RydWN0cyB0byBiZQogICAgICAgIHNwbGl0IGFjcm9zcyBzZXZlcmFsIGNhbGxzIHRvIGZlZWQuCgogICAgICAgIGZlZWQgbWF5IHJhaXNlIFNBWEV4Y2VwdGlvbi4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJUaGlzIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkISIpCgogICAgZGVmIHByZXBhcmVQYXJzZXIoc2VsZiwgc291cmNlKToKICAgICAgICAiIiJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIHBhcnNlIGltcGxlbWVudGF0aW9uIHRvIGFsbG93CiAgICAgICAgdGhlIFNBWCAyLjAgZHJpdmVyIHRvIHByZXBhcmUgaXRzZWxmIGZvciBwYXJzaW5nLiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInByZXBhcmVQYXJzZXIgbXVzdCBiZSBvdmVycmlkZGVuISIpCgogICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICIiIlRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBlbnRpcmUgWE1MIGRvY3VtZW50IGhhcyBiZWVuCiAgICAgICAgcGFzc2VkIHRvIHRoZSBwYXJzZXIgdGhyb3VnaCB0aGUgZmVlZCBtZXRob2QsIHRvIG5vdGlmeSB0aGUKICAgICAgICBwYXJzZXIgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSBkYXRhLiBUaGlzIGFsbG93cyB0aGUgcGFyc2VyIHRvCiAgICAgICAgZG8gdGhlIGZpbmFsIGNoZWNrcyBvbiB0aGUgZG9jdW1lbnQgYW5kIGVtcHR5IHRoZSBpbnRlcm5hbAogICAgICAgIGRhdGEgYnVmZmVyLgoKICAgICAgICBUaGUgcGFyc2VyIHdpbGwgbm90IGJlIHJlYWR5IHRvIHBhcnNlIGFub3RoZXIgZG9jdW1lbnQgdW50aWwKICAgICAgICB0aGUgcmVzZXQgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KCiAgICAgICAgY2xvc2UgbWF5IHJhaXNlIFNBWEV4Y2VwdGlvbi4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJUaGlzIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkISIpCgogICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICIiIlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhZnRlciBjbG9zZSBoYXMgYmVlbiBjYWxsZWQgdG8gcmVzZXQKICAgICAgICB0aGUgcGFyc2VyIHNvIHRoYXQgaXQgaXMgcmVhZHkgdG8gcGFyc2UgbmV3IGRvY3VtZW50cy4gVGhlCiAgICAgICAgcmVzdWx0cyBvZiBjYWxsaW5nIHBhcnNlIG9yIGZlZWQgYWZ0ZXIgY2xvc2Ugd2l0aG91dCBjYWxsaW5nCiAgICAgICAgcmVzZXQgYXJlIHVuZGVmaW5lZC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJUaGlzIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkISIpCgojID09PT09IExPQ0FUT1IgPT09PT0KCmNsYXNzIExvY2F0b3I6CiAgICAiIiJJbnRlcmZhY2UgZm9yIGFzc29jaWF0aW5nIGEgU0FYIGV2ZW50IHdpdGggYSBkb2N1bWVudAogICAgbG9jYXRpb24uIEEgbG9jYXRvciBvYmplY3Qgd2lsbCByZXR1cm4gdmFsaWQgcmVzdWx0cyBvbmx5IGR1cmluZwogICAgY2FsbHMgdG8gRG9jdW1lbnRIYW5kbGVyIG1ldGhvZHM7IGF0IGFueSBvdGhlciB0aW1lLCB0aGUKICAgIHJlc3VsdHMgYXJlIHVucHJlZGljdGFibGUuIiIiCgogICAgZGVmIGdldENvbHVtbk51bWJlcihzZWxmKToKICAgICAgICAiUmV0dXJuIHRoZSBjb2x1bW4gbnVtYmVyIHdoZXJlIHRoZSBjdXJyZW50IGV2ZW50IGVuZHMuIgogICAgICAgIHJldHVybiAtMQoKICAgIGRlZiBnZXRMaW5lTnVtYmVyKHNlbGYpOgogICAgICAgICJSZXR1cm4gdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBjdXJyZW50IGV2ZW50IGVuZHMuIgogICAgICAgIHJldHVybiAtMQoKICAgIGRlZiBnZXRQdWJsaWNJZChzZWxmKToKICAgICAgICAiUmV0dXJuIHRoZSBwdWJsaWMgaWRlbnRpZmllciBmb3IgdGhlIGN1cnJlbnQgZXZlbnQuIgogICAgICAgIHJldHVybiBOb25lCgogICAgZGVmIGdldFN5c3RlbUlkKHNlbGYpOgogICAgICAgICJSZXR1cm4gdGhlIHN5c3RlbSBpZGVudGlmaWVyIGZvciB0aGUgY3VycmVudCBldmVudC4iCiAgICAgICAgcmV0dXJuIE5vbmUKCiMgPT09PT0gSU5QVVRTT1VSQ0UgPT09PT0KCmNsYXNzIElucHV0U291cmNlOgogICAgIiIiRW5jYXBzdWxhdGlvbiBvZiB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBYTUxSZWFkZXIgdG8KICAgIHJlYWQgZW50aXRpZXMuCgogICAgVGhpcyBjbGFzcyBtYXkgaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHVibGljIGlkZW50aWZpZXIsCiAgICBzeXN0ZW0gaWRlbnRpZmllciwgYnl0ZSBzdHJlYW0gKHBvc3NpYmx5IHdpdGggY2hhcmFjdGVyIGVuY29kaW5nCiAgICBpbmZvcm1hdGlvbikgYW5kL29yIHRoZSBjaGFyYWN0ZXIgc3RyZWFtIG9mIGFuIGVudGl0eS4KCiAgICBBcHBsaWNhdGlvbnMgd2lsbCBjcmVhdGUgb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGZvciB1c2UgaW4gdGhlCiAgICBYTUxSZWFkZXIucGFyc2UgbWV0aG9kIGFuZCBmb3IgcmV0dXJuaW5nIGZyb20KICAgIEVudGl0eVJlc29sdmVyLnJlc29sdmVFbnRpdHkuCgogICAgQW4gSW5wdXRTb3VyY2UgYmVsb25ncyB0byB0aGUgYXBwbGljYXRpb24sIHRoZSBYTUxSZWFkZXIgaXMgbm90CiAgICBhbGxvd2VkIHRvIG1vZGlmeSBJbnB1dFNvdXJjZSBvYmplY3RzIHBhc3NlZCB0byBpdCBmcm9tIHRoZQogICAgYXBwbGljYXRpb24sIGFsdGhvdWdoIGl0IG1heSBtYWtlIGNvcGllcyBhbmQgbW9kaWZ5IHRob3NlLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeXN0ZW1faWQgPSBOb25lKToKICAgICAgICBzZWxmLl9fc3lzdGVtX2lkID0gc3lzdGVtX2lkCiAgICAgICAgc2VsZi5fX3B1YmxpY19pZCA9IE5vbmUKICAgICAgICBzZWxmLl9fZW5jb2RpbmcgID0gTm9uZQogICAgICAgIHNlbGYuX19ieXRlZmlsZSAgPSBOb25lCiAgICAgICAgc2VsZi5fX2NoYXJmaWxlICA9IE5vbmUKCiAgICBkZWYgc2V0UHVibGljSWQoc2VsZiwgcHVibGljX2lkKToKICAgICAgICAiU2V0cyB0aGUgcHVibGljIGlkZW50aWZpZXIgb2YgdGhpcyBJbnB1dFNvdXJjZS4iCiAgICAgICAgc2VsZi5fX3B1YmxpY19pZCA9IHB1YmxpY19pZAoKICAgIGRlZiBnZXRQdWJsaWNJZChzZWxmKToKICAgICAgICAiUmV0dXJucyB0aGUgcHVibGljIGlkZW50aWZpZXIgb2YgdGhpcyBJbnB1dFNvdXJjZS4iCiAgICAgICAgcmV0dXJuIHNlbGYuX19wdWJsaWNfaWQKCiAgICBkZWYgc2V0U3lzdGVtSWQoc2VsZiwgc3lzdGVtX2lkKToKICAgICAgICAiU2V0cyB0aGUgc3lzdGVtIGlkZW50aWZpZXIgb2YgdGhpcyBJbnB1dFNvdXJjZS4iCiAgICAgICAgc2VsZi5fX3N5c3RlbV9pZCA9IHN5c3RlbV9pZAoKICAgIGRlZiBnZXRTeXN0ZW1JZChzZWxmKToKICAgICAgICAiUmV0dXJucyB0aGUgc3lzdGVtIGlkZW50aWZpZXIgb2YgdGhpcyBJbnB1dFNvdXJjZS4iCiAgICAgICAgcmV0dXJuIHNlbGYuX19zeXN0ZW1faWQKCiAgICBkZWYgc2V0RW5jb2Rpbmcoc2VsZiwgZW5jb2RpbmcpOgogICAgICAgICIiIlNldHMgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBvZiB0aGlzIElucHV0U291cmNlLgoKICAgICAgICBUaGUgZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyBhY2NlcHRhYmxlIGZvciBhbiBYTUwgZW5jb2RpbmcKICAgICAgICBkZWNsYXJhdGlvbiAoc2VlIHNlY3Rpb24gNC4zLjMgb2YgdGhlIFhNTCByZWNvbW1lbmRhdGlvbikuCgogICAgICAgIFRoZSBlbmNvZGluZyBhdHRyaWJ1dGUgb2YgdGhlIElucHV0U291cmNlIGlzIGlnbm9yZWQgaWYgdGhlCiAgICAgICAgSW5wdXRTb3VyY2UgYWxzbyBjb250YWlucyBhIGNoYXJhY3RlciBzdHJlYW0uIiIiCiAgICAgICAgc2VsZi5fX2VuY29kaW5nID0gZW5jb2RpbmcKCiAgICBkZWYgZ2V0RW5jb2Rpbmcoc2VsZik6CiAgICAgICAgIkdldCB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIG9mIHRoaXMgSW5wdXRTb3VyY2UuIgogICAgICAgIHJldHVybiBzZWxmLl9fZW5jb2RpbmcKCiAgICBkZWYgc2V0Qnl0ZVN0cmVhbShzZWxmLCBieXRlZmlsZSk6CiAgICAgICAgIiIiU2V0IHRoZSBieXRlIHN0cmVhbSAoYSBQeXRob24gZmlsZS1saWtlIG9iamVjdCB3aGljaCBkb2VzCiAgICAgICAgbm90IHBlcmZvcm0gYnl0ZS10by1jaGFyYWN0ZXIgY29udmVyc2lvbikgZm9yIHRoaXMgaW5wdXQKICAgICAgICBzb3VyY2UuCgogICAgICAgIFRoZSBTQVggcGFyc2VyIHdpbGwgaWdub3JlIHRoaXMgaWYgdGhlcmUgaXMgYWxzbyBhIGNoYXJhY3RlcgogICAgICAgIHN0cmVhbSBzcGVjaWZpZWQsIGJ1dCBpdCB3aWxsIHVzZSBhIGJ5dGUgc3RyZWFtIGluIHByZWZlcmVuY2UKICAgICAgICB0byBvcGVuaW5nIGEgVVJJIGNvbm5lY3Rpb24gaXRzZWxmLgoKICAgICAgICBJZiB0aGUgYXBwbGljYXRpb24ga25vd3MgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBvZiB0aGUgYnl0ZQogICAgICAgIHN0cmVhbSwgaXQgc2hvdWxkIHNldCBpdCB3aXRoIHRoZSBzZXRFbmNvZGluZyBtZXRob2QuIiIiCiAgICAgICAgc2VsZi5fX2J5dGVmaWxlID0gYnl0ZWZpbGUKCiAgICBkZWYgZ2V0Qnl0ZVN0cmVhbShzZWxmKToKICAgICAgICAiIiJHZXQgdGhlIGJ5dGUgc3RyZWFtIGZvciB0aGlzIGlucHV0IHNvdXJjZS4KCiAgICAgICAgVGhlIGdldEVuY29kaW5nIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIGZvcgogICAgICAgIHRoaXMgYnl0ZSBzdHJlYW0sIG9yIE5vbmUgaWYgdW5rbm93bi4iIiIKICAgICAgICByZXR1cm4gc2VsZi5fX2J5dGVmaWxlCgogICAgZGVmIHNldENoYXJhY3RlclN0cmVhbShzZWxmLCBjaGFyZmlsZSk6CiAgICAgICAgIiIiU2V0IHRoZSBjaGFyYWN0ZXIgc3RyZWFtIGZvciB0aGlzIGlucHV0IHNvdXJjZS4gKFRoZSBzdHJlYW0KICAgICAgICBtdXN0IGJlIGEgUHl0aG9uIDIuMCBVbmljb2RlLXdyYXBwZWQgZmlsZS1saWtlIHRoYXQgcGVyZm9ybXMKICAgICAgICBjb252ZXJzaW9uIHRvIFVuaWNvZGUgc3RyaW5ncy4pCgogICAgICAgIElmIHRoZXJlIGlzIGEgY2hhcmFjdGVyIHN0cmVhbSBzcGVjaWZpZWQsIHRoZSBTQVggcGFyc2VyIHdpbGwKICAgICAgICBpZ25vcmUgYW55IGJ5dGUgc3RyZWFtIGFuZCB3aWxsIG5vdCBhdHRlbXB0IHRvIG9wZW4gYSBVUkkKICAgICAgICBjb25uZWN0aW9uIHRvIHRoZSBzeXN0ZW0gaWRlbnRpZmllci4iIiIKICAgICAgICBzZWxmLl9fY2hhcmZpbGUgPSBjaGFyZmlsZQoKICAgIGRlZiBnZXRDaGFyYWN0ZXJTdHJlYW0oc2VsZik6CiAgICAgICAgIkdldCB0aGUgY2hhcmFjdGVyIHN0cmVhbSBmb3IgdGhpcyBpbnB1dCBzb3VyY2UuIgogICAgICAgIHJldHVybiBzZWxmLl9fY2hhcmZpbGUKCiMgPT09PT0gQVRUUklCVVRFU0lNUEwgPT09PT0KCmNsYXNzIEF0dHJpYnV0ZXNJbXBsOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhdHRycyk6CiAgICAgICAgIiIiTm9uLU5TLWF3YXJlIGltcGxlbWVudGF0aW9uLgoKICAgICAgICBhdHRycyBzaG91bGQgYmUgb2YgdGhlIGZvcm0ge25hbWUgOiB2YWx1ZX0uIiIiCiAgICAgICAgc2VsZi5fYXR0cnMgPSBhdHRycwoKICAgIGRlZiBnZXRMZW5ndGgoc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9hdHRycykKCiAgICBkZWYgZ2V0VHlwZShzZWxmLCBuYW1lKToKICAgICAgICByZXR1cm4gIkNEQVRBIgoKICAgIGRlZiBnZXRWYWx1ZShzZWxmLCBuYW1lKToKICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNbbmFtZV0KCiAgICBkZWYgZ2V0VmFsdWVCeVFOYW1lKHNlbGYsIG5hbWUpOgogICAgICAgIHJldHVybiBzZWxmLl9hdHRyc1tuYW1lXQoKICAgIGRlZiBnZXROYW1lQnlRTmFtZShzZWxmLCBuYW1lKToKICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9hdHRyczoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IobmFtZSkKICAgICAgICByZXR1cm4gbmFtZQoKICAgIGRlZiBnZXRRTmFtZUJ5TmFtZShzZWxmLCBuYW1lKToKICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9hdHRyczoKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IobmFtZSkKICAgICAgICByZXR1cm4gbmFtZQoKICAgIGRlZiBnZXROYW1lcyhzZWxmKToKICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9hdHRycy5rZXlzKCkpCgogICAgZGVmIGdldFFOYW1lcyhzZWxmKToKICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9hdHRycy5rZXlzKCkpCgogICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9hdHRycykKCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW25hbWVdCgogICAgZGVmIGtleXMoc2VsZik6CiAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fYXR0cnMua2V5cygpKQoKICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgbmFtZSk6CiAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5fYXR0cnMKCiAgICBkZWYgZ2V0KHNlbGYsIG5hbWUsIGFsdGVybmF0aXZlPU5vbmUpOgogICAgICAgIHJldHVybiBzZWxmLl9hdHRycy5nZXQobmFtZSwgYWx0ZXJuYXRpdmUpCgogICAgZGVmIGNvcHkoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX2F0dHJzKQoKICAgIGRlZiBpdGVtcyhzZWxmKToKICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9hdHRycy5pdGVtcygpKQoKICAgIGRlZiB2YWx1ZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fYXR0cnMudmFsdWVzKCkpCgojID09PT09IEFUVFJJQlVURVNOU0lNUEwgPT09PT0KCmNsYXNzIEF0dHJpYnV0ZXNOU0ltcGwoQXR0cmlidXRlc0ltcGwpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhdHRycywgcW5hbWVzKToKICAgICAgICAiIiJOUy1hd2FyZSBpbXBsZW1lbnRhdGlvbi4KCiAgICAgICAgYXR0cnMgc2hvdWxkIGJlIG9mIHRoZSBmb3JtIHsobnNfdXJpLCBsbmFtZSk6IHZhbHVlLCAuLi59LgogICAgICAgIHFuYW1lcyBvZiB0aGUgZm9ybSB7KG5zX3VyaSwgbG5hbWUpOiBxbmFtZSwgLi4ufS4iIiIKICAgICAgICBzZWxmLl9hdHRycyA9IGF0dHJzCiAgICAgICAgc2VsZi5fcW5hbWVzID0gcW5hbWVzCgogICAgZGVmIGdldFZhbHVlQnlRTmFtZShzZWxmLCBuYW1lKToKICAgICAgICBmb3IgKG5zbmFtZSwgcW5hbWUpIGluIHNlbGYuX3FuYW1lcy5pdGVtcygpOgogICAgICAgICAgICBpZiBxbmFtZSA9PSBuYW1lOgogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW25zbmFtZV0KCiAgICAgICAgcmFpc2UgS2V5RXJyb3IobmFtZSkKCiAgICBkZWYgZ2V0TmFtZUJ5UU5hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgZm9yIChuc25hbWUsIHFuYW1lKSBpbiBzZWxmLl9xbmFtZXMuaXRlbXMoKToKICAgICAgICAgICAgaWYgcW5hbWUgPT0gbmFtZToKICAgICAgICAgICAgICAgIHJldHVybiBuc25hbWUKCiAgICAgICAgcmFpc2UgS2V5RXJyb3IobmFtZSkKCiAgICBkZWYgZ2V0UU5hbWVCeU5hbWUoc2VsZiwgbmFtZSk6CiAgICAgICAgcmV0dXJuIHNlbGYuX3FuYW1lc1tuYW1lXQoKICAgIGRlZiBnZXRRTmFtZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fcW5hbWVzLnZhbHVlcygpKQoKICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9hdHRycywgc2VsZi5fcW5hbWVzKQoKCmRlZiBfdGVzdCgpOgogICAgWE1MUmVhZGVyKCkKICAgIEluY3JlbWVudGFsUGFyc2VyKCkKICAgIExvY2F0b3IoKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIF90ZXN0KCkKUEsDBBQAAAAAAAMgo1baztZJJgAAACYAAAASAAAAeG1scnBjL19faW5pdF9fLnB5IyBUaGlzIGRpcmVjdG9yeSBpcyBhIFB5dGhvbiBwYWNrYWdlLgpQSwMEFAAAAAAAAyCjVswp0LXvwAAA78AAABAAAAB4bWxycGMvY2xpZW50LnB5IwojIFhNTC1SUEMgQ0xJRU5UIExJQlJBUlkKIyAkSWQkCiMKIyBhbiBYTUwtUlBDIGNsaWVudCBpbnRlcmZhY2UgZm9yIFB5dGhvbi4KIwojIHRoZSBtYXJzaGFsbGluZyBhbmQgcmVzcG9uc2UgcGFyc2VyIGNvZGUgY2FuIGFsc28gYmUgdXNlZCB0bwojIGltcGxlbWVudCBYTUwtUlBDIHNlcnZlcnMuCiMKIyBOb3RlczoKIyB0aGlzIHZlcnNpb24gaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIFB5dGhvbiAyLjEgb3IgbmV3ZXIuCiMKIyBIaXN0b3J5OgojIDE5OTktMDEtMTQgZmwgIENyZWF0ZWQKIyAxOTk5LTAxLTE1IGZsICBDaGFuZ2VkIGRhdGVUaW1lIHRvIHVzZSBsb2NhbHRpbWUKIyAxOTk5LTAxLTE2IGZsICBBZGRlZCBCaW5hcnkvYmFzZTY0IGVsZW1lbnQsIGRlZmF1bHQgdG8gUlBDMiBzZXJ2aWNlCiMgMTk5OS0wMS0xOSBmbCAgRml4ZWQgYXJyYXkgZGF0YSBlbGVtZW50IChmcm9tIFNraXAgTW9udGFuYXJvKQojIDE5OTktMDEtMjEgZmwgIEZpeGVkIGRhdGVUaW1lIGNvbnN0cnVjdG9yLCBldGMuCiMgMTk5OS0wMi0wMiBmbCAgQWRkZWQgZmF1bHQgaGFuZGxpbmcsIGhhbmRsZSBlbXB0eSBzZXF1ZW5jZXMsIGV0Yy4KIyAxOTk5LTAyLTEwIGZsICBGaXhlZCBwcm9ibGVtIHdpdGggZW1wdHkgcmVzcG9uc2VzIChmcm9tIFNraXAgTW9udGFuYXJvKQojIDE5OTktMDYtMjAgZmwgIFNwZWVkIGltcHJvdmVtZW50cywgcGx1Z2dhYmxlIHBhcnNlcnMvdHJhbnNwb3J0cyAoMC45LjgpCiMgMjAwMC0xMS0yOCBmbCAgQ2hhbmdlZCBib29sZWFuIHRvIGNoZWNrIHRoZSB0cnV0aCB2YWx1ZSBvZiBpdHMgYXJndW1lbnQKIyAyMDAxLTAyLTI0IGZsICBBZGRlZCBlbmNvZGluZy9Vbmljb2RlL1NhZmVUcmFuc3BvcnQgcGF0Y2hlcwojIDIwMDEtMDItMjYgZmwgIEFkZGVkIGNvbXBhcmUgc3VwcG9ydCB0byB3cmFwcGVycyAoMC45LjkvMS4wYjEpCiMgMjAwMS0wMy0yOCBmbCAgTWFrZSBzdXJlIHJlc3BvbnNlIHR1cGxlIGlzIGEgc2luZ2xldG9uCiMgMjAwMS0wMy0yOSBmbCAgRG9uJ3QgcmVxdWlyZSBlbXB0eSBwYXJhbXMgZWxlbWVudCAoZnJvbSBOaWNob2xhcyBSaWxleSkKIyAyMDAxLTA2LTEwIGZsICBGb2xkZWQgaW4gX3htbHJwY2xpYiBhY2NlbGVyYXRvciBzdXBwb3J0ICgxLjBiMikKIyAyMDAxLTA4LTIwIGZsICBCYXNlIHhtbHJwY2xpYi5FcnJvciBvbiBidWlsdC1pbiBFeGNlcHRpb24gKGZyb20gUGF1bCBQcmVzY29kKQojIDIwMDEtMDktMDMgZmwgIEFsbG93IFRyYW5zcG9ydCBzdWJjbGFzcyB0byBvdmVycmlkZSBnZXRwYXJzZXIKIyAyMDAxLTA5LTEwIGZsICBMYXp5IGltcG9ydCBvZiB1cmxsaWIsIGNnaSwgeG1sbGliICgyMHggaW1wb3J0IHNwZWVkdXApCiMgMjAwMS0xMC0wMSBmbCAgUmVtb3ZlIGNvbnRhaW5lcnMgZnJvbSBtZW1vIGNhY2hlIHdoZW4gZG9uZSB3aXRoIHRoZW0KIyAyMDAxLTEwLTAxIGZsICBVc2UgZmFzdGVyIGVzY2FwZSBtZXRob2QgKDgwJSBkdW1wcyBzcGVlZHVwKQojIDIwMDEtMTAtMDIgZmwgIE1vcmUgZHVtcHMgbWljcm90dW5pbmcKIyAyMDAxLTEwLTA0IGZsICBNYWtlIHN1cmUgaW1wb3J0IGV4cGF0IGdldHMgYSBwYXJzZXIgKGZyb20gR3VpZG8gdmFuIFJvc3N1bSkKIyAyMDAxLTEwLTEwIHNtICBBbGxvdyBsb25nIGludHMgdG8gYmUgcGFzc2VkIGFzIGludHMgaWYgdGhleSBkb24ndCBvdmVyZmxvdwojIDIwMDEtMTAtMTcgc20gIFRlc3QgZm9yIGludCBhbmQgbG9uZyBvdmVyZmxvdyAoYWxsb3dzIHVzZSBvbiA2NC1iaXQgc3lzdGVtcykKIyAyMDAxLTExLTEyIGZsICBVc2UgcmVwcigpIHRvIG1hcnNoYWwgZG91YmxlcyAoZnJvbSBQYXVsIEZlbGl4KQojIDIwMDItMDMtMTcgZmwgIEF2b2lkIGJ1ZmZlcmVkIHJlYWQgd2hlbiBwb3NzaWJsZSAoZnJvbSBKYW1lcyBSdWNrZXIpCiMgMjAwMi0wNC0wNyBmbCAgQWRkZWQgcHl0aG9uZG9jIGNvbW1lbnRzCiMgMjAwMi0wNC0xNiBmbCAgQWRkZWQgX19zdHJfXyBtZXRob2RzIHRvIGRhdGV0aW1lL2JpbmFyeSB3cmFwcGVycwojIDIwMDItMDUtMTUgZmwgIEFkZGVkIGVycm9yIGNvbnN0YW50cyAoZnJvbSBBbmRyZXcgS3VjaGxpbmcpCiMgMjAwMi0wNi0yNyBmbCAgTWVyZ2VkIHdpdGggUHl0aG9uIENWUyB2ZXJzaW9uCiMgMjAwMi0xMC0yMiBmbCAgQWRkZWQgYmFzaWMgYXV0aGVudGljYXRpb24gKGJhc2VkIG9uIGNvZGUgZnJvbSBQaGlsbGlwIEVieSkKIyAyMDAzLTAxLTIyIHNtICBBZGQgc3VwcG9ydCBmb3IgdGhlIGJvb2wgdHlwZQojIDIwMDMtMDItMjcgZ3ZyIFJlbW92ZSBhcHBseSBjYWxscwojIDIwMDMtMDQtMjQgc20gIFVzZSBjU3RyaW5nSU8gaWYgYXZhaWxhYmxlCiMgMjAwMy0wNC0yNSBhayAgQWRkIHN1cHBvcnQgZm9yIG5pbAojIDIwMDMtMDYtMTUgZ24gIEFkZCBzdXBwb3J0IGZvciB0aW1lLnN0cnVjdF90aW1lCiMgMjAwMy0wNy0xMiBncCAgQ29ycmVjdCBtYXJzaGFsbGluZyBvZiBGYXVsdHMKIyAyMDAzLTEwLTMxIG12bCBBZGQgbXVsdGljYWxsIHN1cHBvcnQKIyAyMDA0LTA4LTIwIG12bCBCdW1wIG1pbmltdW0gc3VwcG9ydGVkIFB5dGhvbiB2ZXJzaW9uIHRvIDIuMQojIDIwMTQtMTItMDIgY2gvZG9rbyAgQWRkIHdvcmthcm91bmQgZm9yIGd6aXAgYm9tYiB2dWxuZXJhYmlsaXR5CiMKIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMiBieSBTZWNyZXQgTGFicyBBQi4KIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMiBieSBGcmVkcmlrIEx1bmRoLgojCiMgaW5mb0BweXRob253YXJlLmNvbQojIGh0dHA6Ly93d3cucHl0aG9ud2FyZS5jb20KIwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhlIFhNTC1SUEMgY2xpZW50IGludGVyZmFjZSBpcwojCiMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDIgYnkgU2VjcmV0IExhYnMgQUIKIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMiBieSBGcmVkcmlrIEx1bmRoCiMKIyBCeSBvYnRhaW5pbmcsIHVzaW5nLCBhbmQvb3IgY29weWluZyB0aGlzIHNvZnR3YXJlIGFuZC9vciBpdHMKIyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24sIHlvdSBhZ3JlZSB0aGF0IHlvdSBoYXZlIHJlYWQsIHVuZGVyc3Rvb2QsCiMgYW5kIHdpbGwgY29tcGx5IHdpdGggdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9uczoKIwojIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCiMgaXRzIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzCiMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbgojIGFsbCBjb3BpZXMsIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KIyBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YKIyBTZWNyZXQgTGFicyBBQiBvciB0aGUgYXV0aG9yIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eQojIHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuCiMgcHJpb3IgcGVybWlzc2lvbi4KIwojIFNFQ1JFVCBMQUJTIEFCIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRAojIFRPIFRISVMgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5ULQojIEFCSUxJVFkgQU5EIEZJVE5FU1MuICBJTiBOTyBFVkVOVCBTSEFMTCBTRUNSRVQgTEFCUyBBQiBPUiBUSEUgQVVUSE9SCiMgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWQojIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLAojIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTCiMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRQojIE9GIFRISVMgU09GVFdBUkUuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiIiIgpBbiBYTUwtUlBDIGNsaWVudCBpbnRlcmZhY2UgZm9yIFB5dGhvbi4KClRoZSBtYXJzaGFsbGluZyBhbmQgcmVzcG9uc2UgcGFyc2VyIGNvZGUgY2FuIGFsc28gYmUgdXNlZCB0bwppbXBsZW1lbnQgWE1MLVJQQyBzZXJ2ZXJzLgoKRXhwb3J0ZWQgZXhjZXB0aW9uczoKCiAgRXJyb3IgICAgICAgICAgQmFzZSBjbGFzcyBmb3IgY2xpZW50IGVycm9ycwogIFByb3RvY29sRXJyb3IgIEluZGljYXRlcyBhbiBIVFRQIHByb3RvY29sIGVycm9yCiAgUmVzcG9uc2VFcnJvciAgSW5kaWNhdGVzIGEgYnJva2VuIHJlc3BvbnNlIHBhY2thZ2UKICBGYXVsdCAgICAgICAgICBJbmRpY2F0ZXMgYW4gWE1MLVJQQyBmYXVsdCBwYWNrYWdlCgpFeHBvcnRlZCBjbGFzc2VzOgoKICBTZXJ2ZXJQcm94eSAgICBSZXByZXNlbnRzIGEgbG9naWNhbCBjb25uZWN0aW9uIHRvIGFuIFhNTC1SUEMgc2VydmVyCgogIE11bHRpQ2FsbCAgICAgIEV4ZWN1dG9yIG9mIGJveGNhcmVkIHhtbHJwYyByZXF1ZXN0cwogIERhdGVUaW1lICAgICAgIGRhdGVUaW1lIHdyYXBwZXIgZm9yIGFuIElTTyA4NjAxIHN0cmluZyBvciB0aW1lIHR1cGxlIG9yCiAgICAgICAgICAgICAgICAgbG9jYWx0aW1lIGludGVnZXIgdmFsdWUgdG8gZ2VuZXJhdGUgYSAiZGF0ZVRpbWUuaXNvODYwMSIKICAgICAgICAgICAgICAgICBYTUwtUlBDIHZhbHVlCiAgQmluYXJ5ICAgICAgICAgYmluYXJ5IGRhdGEgd3JhcHBlcgoKICBNYXJzaGFsbGVyICAgICBHZW5lcmF0ZSBhbiBYTUwtUlBDIHBhcmFtcyBjaHVuayBmcm9tIGEgUHl0aG9uIGRhdGEgc3RydWN0dXJlCiAgVW5tYXJzaGFsbGVyICAgVW5tYXJzaGFsIGFuIFhNTC1SUEMgcmVzcG9uc2UgZnJvbSBpbmNvbWluZyBYTUwgZXZlbnQgbWVzc2FnZQogIFRyYW5zcG9ydCAgICAgIEhhbmRsZXMgYW4gSFRUUCB0cmFuc2FjdGlvbiB0byBhbiBYTUwtUlBDIHNlcnZlcgogIFNhZmVUcmFuc3BvcnQgIEhhbmRsZXMgYW4gSFRUUFMgdHJhbnNhY3Rpb24gdG8gYW4gWE1MLVJQQyBzZXJ2ZXIKCkV4cG9ydGVkIGNvbnN0YW50czoKCiAgKG5vbmUpCgpFeHBvcnRlZCBmdW5jdGlvbnM6CgogIGdldHBhcnNlciAgICAgIENyZWF0ZSBpbnN0YW5jZSBvZiB0aGUgZmFzdGVzdCBhdmFpbGFibGUgcGFyc2VyICYgYXR0YWNoCiAgICAgICAgICAgICAgICAgdG8gYW4gdW5tYXJzaGFsbGluZyBvYmplY3QKICBkdW1wcyAgICAgICAgICBDb252ZXJ0IGFuIGFyZ3VtZW50IHR1cGxlIG9yIGEgRmF1bHQgaW5zdGFuY2UgdG8gYW4gWE1MLVJQQwogICAgICAgICAgICAgICAgIHJlcXVlc3QgKG9yIHJlc3BvbnNlLCBpZiB0aGUgbWV0aG9kcmVzcG9uc2Ugb3B0aW9uIGlzIHVzZWQpLgogIGxvYWRzICAgICAgICAgIENvbnZlcnQgYW4gWE1MLVJQQyBwYWNrZXQgdG8gdW5tYXJzaGFsbGVkIGRhdGEgcGx1cyBhIG1ldGhvZAogICAgICAgICAgICAgICAgIG5hbWUgKE5vbmUgaWYgbm90IHByZXNlbnQpLgoiIiIKCmltcG9ydCBiYXNlNjQKaW1wb3J0IHN5cwppbXBvcnQgdGltZQpmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQpmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKaW1wb3J0IGh0dHAuY2xpZW50CmltcG9ydCB1cmxsaWIucGFyc2UKZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKaW1wb3J0IGVycm5vCmZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KdHJ5OgogICAgaW1wb3J0IGd6aXAKZXhjZXB0IEltcG9ydEVycm9yOgogICAgZ3ppcCA9IE5vbmUgI3B5dGhvbiBjYW4gYmUgYnVpbHQgd2l0aG91dCB6bGliL2d6aXAgc3VwcG9ydAoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEludGVybmFsIHN0dWZmCgpkZWYgZXNjYXBlKHMpOgogICAgcyA9IHMucmVwbGFjZSgiJiIsICImYW1wOyIpCiAgICBzID0gcy5yZXBsYWNlKCI8IiwgIiZsdDsiKQogICAgcmV0dXJuIHMucmVwbGFjZSgiPiIsICImZ3Q7IiwpCgojIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudApfX3ZlcnNpb25fXyA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQoKIyB4bWxycGMgaW50ZWdlciBsaW1pdHMKTUFYSU5UID0gIDIqKjMxLTEKTUlOSU5UID0gLTIqKjMxCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRXJyb3IgY29uc3RhbnRzIChmcm9tIERhbiBMaWJieSdzIHNwZWNpZmljYXRpb24gYXQKIyBodHRwOi8veG1scnBjLWVwaS5zb3VyY2Vmb3JnZS5uZXQvc3BlY3MvcmZjLmZhdWx0X2NvZGVzLnBocCkKCiMgUmFuZ2VzIG9mIGVycm9ycwpQQVJTRV9FUlJPUiAgICAgICA9IC0zMjcwMApTRVJWRVJfRVJST1IgICAgICA9IC0zMjYwMApBUFBMSUNBVElPTl9FUlJPUiA9IC0zMjUwMApTWVNURU1fRVJST1IgICAgICA9IC0zMjQwMApUUkFOU1BPUlRfRVJST1IgICA9IC0zMjMwMAoKIyBTcGVjaWZpYyBlcnJvcnMKTk9UX1dFTExGT1JNRURfRVJST1IgID0gLTMyNzAwClVOU1VQUE9SVEVEX0VOQ09ESU5HICA9IC0zMjcwMQpJTlZBTElEX0VOQ09ESU5HX0NIQVIgPSAtMzI3MDIKSU5WQUxJRF9YTUxSUEMgICAgICAgID0gLTMyNjAwCk1FVEhPRF9OT1RfRk9VTkQgICAgICA9IC0zMjYwMQpJTlZBTElEX01FVEhPRF9QQVJBTVMgPSAtMzI2MDIKSU5URVJOQUxfRVJST1IgICAgICAgID0gLTMyNjAzCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRXhjZXB0aW9ucwoKIyMKIyBCYXNlIGNsYXNzIGZvciBhbGwga2luZHMgb2YgY2xpZW50LXNpZGUgZXJyb3JzLgoKY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgICIiIkJhc2UgY2xhc3MgZm9yIGNsaWVudCBlcnJvcnMuIiIiCiAgICBfX3N0cl9fID0gb2JqZWN0Ll9fc3RyX18KCiMjCiMgSW5kaWNhdGVzIGFuIEhUVFAtbGV2ZWwgcHJvdG9jb2wgZXJyb3IuICBUaGlzIGlzIHJhaXNlZCBieSB0aGUgSFRUUAojIHRyYW5zcG9ydCBsYXllciwgaWYgdGhlIHNlcnZlciByZXR1cm5zIGFuIGVycm9yIGNvZGUgb3RoZXIgdGhhbiAyMDAKIyAoT0spLgojCiMgQHBhcmFtIHVybCBUaGUgdGFyZ2V0IFVSTC4KIyBAcGFyYW0gZXJyY29kZSBUaGUgSFRUUCBlcnJvciBjb2RlLgojIEBwYXJhbSBlcnJtc2cgVGhlIEhUVFAgZXJyb3IgbWVzc2FnZS4KIyBAcGFyYW0gaGVhZGVycyBUaGUgSFRUUCBoZWFkZXIgZGljdGlvbmFyeS4KCmNsYXNzIFByb3RvY29sRXJyb3IoRXJyb3IpOgogICAgIiIiSW5kaWNhdGVzIGFuIEhUVFAgcHJvdG9jb2wgZXJyb3IuIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMpOgogICAgICAgIEVycm9yLl9faW5pdF9fKHNlbGYpCiAgICAgICAgc2VsZi51cmwgPSB1cmwKICAgICAgICBzZWxmLmVycmNvZGUgPSBlcnJjb2RlCiAgICAgICAgc2VsZi5lcnJtc2cgPSBlcnJtc2cKICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgIjwlcyBmb3IgJXM6ICVzICVzPiIgJQogICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudXJsLCBzZWxmLmVycmNvZGUsIHNlbGYuZXJybXNnKQogICAgICAgICAgICApCgojIwojIEluZGljYXRlcyBhIGJyb2tlbiBYTUwtUlBDIHJlc3BvbnNlIHBhY2thZ2UuICBUaGlzIGV4Y2VwdGlvbiBpcwojIHJhaXNlZCBieSB0aGUgdW5tYXJzaGFsbGluZyBsYXllciwgaWYgdGhlIFhNTC1SUEMgcmVzcG9uc2UgaXMKIyBtYWxmb3JtZWQuCgpjbGFzcyBSZXNwb25zZUVycm9yKEVycm9yKToKICAgICIiIkluZGljYXRlcyBhIGJyb2tlbiByZXNwb25zZSBwYWNrYWdlLiIiIgogICAgcGFzcwoKIyMKIyBJbmRpY2F0ZXMgYW4gWE1MLVJQQyBmYXVsdCByZXNwb25zZSBwYWNrYWdlLiAgVGhpcyBleGNlcHRpb24gaXMKIyByYWlzZWQgYnkgdGhlIHVubWFyc2hhbGxpbmcgbGF5ZXIsIGlmIHRoZSBYTUwtUlBDIHJlc3BvbnNlIGNvbnRhaW5zCiMgYSBmYXVsdCBzdHJpbmcuICBUaGlzIGV4Y2VwdGlvbiBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgY2xhc3MsIHRvCiMgZ2VuZXJhdGUgYSBmYXVsdCBYTUwtUlBDIG1lc3NhZ2UuCiMKIyBAcGFyYW0gZmF1bHRDb2RlIFRoZSBYTUwtUlBDIGZhdWx0IGNvZGUuCiMgQHBhcmFtIGZhdWx0U3RyaW5nIFRoZSBYTUwtUlBDIGZhdWx0IHN0cmluZy4KCmNsYXNzIEZhdWx0KEVycm9yKToKICAgICIiIkluZGljYXRlcyBhbiBYTUwtUlBDIGZhdWx0IHBhY2thZ2UuIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmF1bHRDb2RlLCBmYXVsdFN0cmluZywgKipleHRyYSk6CiAgICAgICAgRXJyb3IuX19pbml0X18oc2VsZikKICAgICAgICBzZWxmLmZhdWx0Q29kZSA9IGZhdWx0Q29kZQogICAgICAgIHNlbGYuZmF1bHRTdHJpbmcgPSBmYXVsdFN0cmluZwogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPCVzICVzOiAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmF1bHRDb2RlLCBzZWxmLmZhdWx0U3RyaW5nKQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNwZWNpYWwgdmFsdWVzCgojIwojIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Cgpib29sZWFuID0gQm9vbGVhbiA9IGJvb2wKCiMjCiMgV3JhcHBlciBmb3IgWE1MLVJQQyBEYXRlVGltZSB2YWx1ZXMuICBUaGlzIGNvbnZlcnRzIGEgdGltZSB2YWx1ZSB0bwojIHRoZSBmb3JtYXQgdXNlZCBieSBYTUwtUlBDLgojIDxwPgojIFRoZSB2YWx1ZSBjYW4gYmUgZ2l2ZW4gYXMgYSBkYXRldGltZSBvYmplY3QsIGFzIGEgc3RyaW5nIGluIHRoZQojIGZvcm1hdCAieXl5eW1tZGRUaGg6bW06c3MiLCBhcyBhIDktaXRlbSB0aW1lIHR1cGxlIChhcyByZXR1cm5lZCBieQojIHRpbWUubG9jYWx0aW1lKCkpLCBvciBhbiBpbnRlZ2VyIHZhbHVlIChhcyByZXR1cm5lZCBieSB0aW1lLnRpbWUoKSkuCiMgVGhlIHdyYXBwZXIgdXNlcyB0aW1lLmxvY2FsdGltZSgpIHRvIGNvbnZlcnQgYW4gaW50ZWdlciB0byBhIHRpbWUKIyB0dXBsZS4KIwojIEBwYXJhbSB2YWx1ZSBUaGUgdGltZSwgZ2l2ZW4gYXMgYSBkYXRldGltZSBvYmplY3QsIGFuIElTTyA4NjAxIHN0cmluZywKIyAgICAgICAgICAgICAgYSB0aW1lIHR1cGxlLCBvciBhbiBpbnRlZ2VyIHRpbWUgdmFsdWUuCgoKIyBJc3N1ZSAjMTMzMDU6IGRpZmZlcmVudCBmb3JtYXQgY29kZXMgYWNyb3NzIHBsYXRmb3JtcwpfZGF5MCA9IGRhdGV0aW1lKDEsIDEsIDEpCmRlZiBfdHJ5KGZtdCk6CiAgICB0cnk6CiAgICAgICAgcmV0dXJuIF9kYXkwLnN0cmZ0aW1lKGZtdCkgPT0gJzAwMDEnCiAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICByZXR1cm4gRmFsc2UKaWYgX3RyeSgnJVknKTogICAgICAjIE1hYyBPUyBYCiAgICBkZWYgX2lzbzg2MDFfZm9ybWF0KHZhbHVlKToKICAgICAgICByZXR1cm4gdmFsdWUuc3RyZnRpbWUoIiVZJW0lZFQlSDolTTolUyIpCmVsaWYgX3RyeSgnJTRZJyk6ICAgIyBMaW51eAogICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CiAgICAgICAgcmV0dXJuIHZhbHVlLnN0cmZ0aW1lKCIlNFklbSVkVCVIOiVNOiVTIikKZWxzZToKICAgIGRlZiBfaXNvODYwMV9mb3JtYXQodmFsdWUpOgogICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJVklbSVkVCVIOiVNOiVTIikuemZpbGwoMTcpCmRlbCBfZGF5MApkZWwgX3RyeQoKCmRlZiBfc3RyZnRpbWUodmFsdWUpOgogICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGF0ZXRpbWUpOgogICAgICAgIHJldHVybiBfaXNvODYwMV9mb3JtYXQodmFsdWUpCgogICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsICh0dXBsZSwgdGltZS5zdHJ1Y3RfdGltZSkpOgogICAgICAgIGlmIHZhbHVlID09IDA6CiAgICAgICAgICAgIHZhbHVlID0gdGltZS50aW1lKCkKICAgICAgICB2YWx1ZSA9IHRpbWUubG9jYWx0aW1lKHZhbHVlKQoKICAgIHJldHVybiAiJTA0ZCUwMmQlMDJkVCUwMmQ6JTAyZDolMDJkIiAlIHZhbHVlWzo2XQoKY2xhc3MgRGF0ZVRpbWU6CiAgICAiIiJEYXRlVGltZSB3cmFwcGVyIGZvciBhbiBJU08gODYwMSBzdHJpbmcgb3IgdGltZSB0dXBsZSBvcgogICAgbG9jYWx0aW1lIGludGVnZXIgdmFsdWUgdG8gZ2VuZXJhdGUgJ2RhdGVUaW1lLmlzbzg2MDEnIFhNTC1SUEMKICAgIHZhbHVlLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPTApOgogICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYudmFsdWUgPSBfc3RyZnRpbWUodmFsdWUpCgogICAgZGVmIG1ha2VfY29tcGFyYWJsZShzZWxmLCBvdGhlcik6CiAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgRGF0ZVRpbWUpOgogICAgICAgICAgICBzID0gc2VsZi52YWx1ZQogICAgICAgICAgICBvID0gb3RoZXIudmFsdWUKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKICAgICAgICAgICAgcyA9IHNlbGYudmFsdWUKICAgICAgICAgICAgbyA9IF9pc284NjAxX2Zvcm1hdChvdGhlcikKICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIHN0cik6CiAgICAgICAgICAgIHMgPSBzZWxmLnZhbHVlCiAgICAgICAgICAgIG8gPSBvdGhlcgogICAgICAgIGVsaWYgaGFzYXR0cihvdGhlciwgInRpbWV0dXBsZSIpOgogICAgICAgICAgICBzID0gc2VsZi50aW1ldHVwbGUoKQogICAgICAgICAgICBvID0gb3RoZXIudGltZXR1cGxlKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzID0gc2VsZgogICAgICAgICAgICBvID0gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gcywgbwoKICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIHMsIG8gPSBzZWxmLm1ha2VfY29tcGFyYWJsZShvdGhlcikKICAgICAgICBpZiBvIGlzIE5vdEltcGxlbWVudGVkOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gcyA8IG8KCiAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKICAgICAgICBzLCBvID0gc2VsZi5tYWtlX2NvbXBhcmFibGUob3RoZXIpCiAgICAgICAgaWYgbyBpcyBOb3RJbXBsZW1lbnRlZDoKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHMgPD0gbwoKICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgogICAgICAgIHMsIG8gPSBzZWxmLm1ha2VfY29tcGFyYWJsZShvdGhlcikKICAgICAgICBpZiBvIGlzIE5vdEltcGxlbWVudGVkOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gcyA+IG8KCiAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKICAgICAgICBzLCBvID0gc2VsZi5tYWtlX2NvbXBhcmFibGUob3RoZXIpCiAgICAgICAgaWYgbyBpcyBOb3RJbXBsZW1lbnRlZDoKICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgcmV0dXJuIHMgPj0gbwoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHMsIG8gPSBzZWxmLm1ha2VfY29tcGFyYWJsZShvdGhlcikKICAgICAgICBpZiBvIGlzIE5vdEltcGxlbWVudGVkOgogICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICByZXR1cm4gcyA9PSBvCgogICAgZGVmIHRpbWV0dXBsZShzZWxmKToKICAgICAgICByZXR1cm4gdGltZS5zdHJwdGltZShzZWxmLnZhbHVlLCAiJVklbSVkVCVIOiVNOiVTIikKCiAgICAjIwogICAgIyBHZXQgZGF0ZS90aW1lIHZhbHVlLgogICAgIwogICAgIyBAcmV0dXJuIERhdGUvdGltZSB2YWx1ZSwgYXMgYW4gSVNPIDg2MDEgc3RyaW5nLgoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnZhbHVlCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIHJldHVybiAiPCVzICVyIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnZhbHVlLCBpZChzZWxmKSkKCiAgICBkZWYgZGVjb2RlKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYudmFsdWUgPSBzdHIoZGF0YSkuc3RyaXAoKQoKICAgIGRlZiBlbmNvZGUoc2VsZiwgb3V0KToKICAgICAgICBvdXQud3JpdGUoIjx2YWx1ZT48ZGF0ZVRpbWUuaXNvODYwMT4iKQogICAgICAgIG91dC53cml0ZShzZWxmLnZhbHVlKQogICAgICAgIG91dC53cml0ZSgiPC9kYXRlVGltZS5pc284NjAxPjwvdmFsdWU+XG4iKQoKZGVmIF9kYXRldGltZShkYXRhKToKICAgICMgZGVjb2RlIHhtbCBlbGVtZW50IGNvbnRlbnRzIGludG8gYSBEYXRlVGltZSBzdHJ1Y3R1cmUuCiAgICB2YWx1ZSA9IERhdGVUaW1lKCkKICAgIHZhbHVlLmRlY29kZShkYXRhKQogICAgcmV0dXJuIHZhbHVlCgpkZWYgX2RhdGV0aW1lX3R5cGUoZGF0YSk6CiAgICByZXR1cm4gZGF0ZXRpbWUuc3RycHRpbWUoZGF0YSwgIiVZJW0lZFQlSDolTTolUyIpCgojIwojIFdyYXBwZXIgZm9yIGJpbmFyeSBkYXRhLiAgVGhpcyBjYW4gYmUgdXNlZCB0byB0cmFuc3BvcnQgYW55IGtpbmQKIyBvZiBiaW5hcnkgZGF0YSBvdmVyIFhNTC1SUEMsIHVzaW5nIEJBU0U2NCBlbmNvZGluZy4KIwojIEBwYXJhbSBkYXRhIEFuIDgtYml0IHN0cmluZyBjb250YWluaW5nIGFyYml0cmFyeSBkYXRhLgoKY2xhc3MgQmluYXJ5OgogICAgIiIiV3JhcHBlciBmb3IgYmluYXJ5IGRhdGEuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGE9Tm9uZSk6CiAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICBkYXRhID0gYiIiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMgb3IgYnl0ZWFycmF5LCBub3QgJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICAgICAgZGF0YSA9IGJ5dGVzKGRhdGEpICAjIE1ha2UgYSBjb3B5IG9mIHRoZSBieXRlcyEKICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCgogICAgIyMKICAgICMgR2V0IGJ1ZmZlciBjb250ZW50cy4KICAgICMKICAgICMgQHJldHVybiBCdWZmZXIgY29udGVudHMsIGFzIGFuIDgtYml0IHN0cmluZy4KCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gc3RyKHNlbGYuZGF0YSwgImxhdGluLTEiKSAgIyBYWFggZW5jb2Rpbmc/IQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIEJpbmFyeSk6CiAgICAgICAgICAgIG90aGVyID0gb3RoZXIuZGF0YQogICAgICAgIHJldHVybiBzZWxmLmRhdGEgPT0gb3RoZXIKCiAgICBkZWYgZGVjb2RlKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYuZGF0YSA9IGJhc2U2NC5kZWNvZGVieXRlcyhkYXRhKQoKICAgIGRlZiBlbmNvZGUoc2VsZiwgb3V0KToKICAgICAgICBvdXQud3JpdGUoIjx2YWx1ZT48YmFzZTY0PlxuIikKICAgICAgICBlbmNvZGVkID0gYmFzZTY0LmVuY29kZWJ5dGVzKHNlbGYuZGF0YSkKICAgICAgICBvdXQud3JpdGUoZW5jb2RlZC5kZWNvZGUoJ2FzY2lpJykpCiAgICAgICAgb3V0LndyaXRlKCI8L2Jhc2U2ND48L3ZhbHVlPlxuIikKCmRlZiBfYmluYXJ5KGRhdGEpOgogICAgIyBkZWNvZGUgeG1sIGVsZW1lbnQgY29udGVudHMgaW50byBhIEJpbmFyeSBzdHJ1Y3R1cmUKICAgIHZhbHVlID0gQmluYXJ5KCkKICAgIHZhbHVlLmRlY29kZShkYXRhKQogICAgcmV0dXJuIHZhbHVlCgpXUkFQUEVSUyA9IChEYXRlVGltZSwgQmluYXJ5KQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFhNTCBwYXJzZXJzCgpjbGFzcyBFeHBhdFBhcnNlcjoKICAgICMgZmFzdCBleHBhdCBwYXJzZXIgZm9yIFB5dGhvbiAyLjAgYW5kIGxhdGVyLgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldCk6CiAgICAgICAgc2VsZi5fcGFyc2VyID0gcGFyc2VyID0gZXhwYXQuUGFyc2VyQ3JlYXRlKE5vbmUsIE5vbmUpCiAgICAgICAgc2VsZi5fdGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSB0YXJnZXQuc3RhcnQKICAgICAgICBwYXJzZXIuRW5kRWxlbWVudEhhbmRsZXIgPSB0YXJnZXQuZW5kCiAgICAgICAgcGFyc2VyLkNoYXJhY3RlckRhdGFIYW5kbGVyID0gdGFyZ2V0LmRhdGEKICAgICAgICBlbmNvZGluZyA9IE5vbmUKICAgICAgICB0YXJnZXQueG1sKGVuY29kaW5nLCBOb25lKQoKICAgIGRlZiBmZWVkKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYuX3BhcnNlci5QYXJzZShkYXRhLCBGYWxzZSkKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJzZXIgPSBzZWxmLl9wYXJzZXIKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHBhc3MKICAgICAgICBlbHNlOgogICAgICAgICAgICBkZWwgc2VsZi5fdGFyZ2V0LCBzZWxmLl9wYXJzZXIgIyBnZXQgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMKICAgICAgICAgICAgcGFyc2VyLlBhcnNlKGIiIiwgVHJ1ZSkgIyBlbmQgb2YgZGF0YQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFhNTC1SUEMgbWFyc2hhbGxpbmcgYW5kIHVubWFyc2hhbGxpbmcgY29kZQoKIyMKIyBYTUwtUlBDIG1hcnNoYWxsZXIuCiMKIyBAcGFyYW0gZW5jb2RpbmcgRGVmYXVsdCBlbmNvZGluZyBmb3IgOC1iaXQgc3RyaW5ncy4gIFRoZSBkZWZhdWx0CiMgICAgIHZhbHVlIGlzIE5vbmUgKGludGVycHJldGVkIGFzIFVURi04KS4KIyBAc2VlIGR1bXBzCgpjbGFzcyBNYXJzaGFsbGVyOgogICAgIiIiR2VuZXJhdGUgYW4gWE1MLVJQQyBwYXJhbXMgY2h1bmsgZnJvbSBhIFB5dGhvbiBkYXRhIHN0cnVjdHVyZS4KCiAgICBDcmVhdGUgYSBNYXJzaGFsbGVyIGluc3RhbmNlIGZvciBlYWNoIHNldCBvZiBwYXJhbWV0ZXJzLCBhbmQgdXNlCiAgICB0aGUgImR1bXBzIiBtZXRob2QgdG8gY29udmVydCB5b3VyIGRhdGEgKHJlcHJlc2VudGVkIGFzIGEgdHVwbGUpCiAgICB0byBhbiBYTUwtUlBDIHBhcmFtcyBjaHVuay4gIFRvIHdyaXRlIGEgZmF1bHQgcmVzcG9uc2UsIHBhc3MgYQogICAgRmF1bHQgaW5zdGFuY2UgaW5zdGVhZC4gIFlvdSBtYXkgcHJlZmVyIHRvIHVzZSB0aGUgImR1bXBzIiBtb2R1bGUKICAgIGZ1bmN0aW9uIGZvciB0aGlzIHB1cnBvc2UuCiAgICAiIiIKCiAgICAjIGJ5IHRoZSB3YXksIGlmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiBpbiBoZXJlLAogICAgIyB0aGF0J3MgcGVyZmVjdGx5IG9rLgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbmNvZGluZz1Ob25lLCBhbGxvd19ub25lPUZhbHNlKToKICAgICAgICBzZWxmLm1lbW8gPSB7fQogICAgICAgIHNlbGYuZGF0YSA9IE5vbmUKICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKICAgICAgICBzZWxmLmFsbG93X25vbmUgPSBhbGxvd19ub25lCgogICAgZGlzcGF0Y2ggPSB7fQoKICAgIGRlZiBkdW1wcyhzZWxmLCB2YWx1ZXMpOgogICAgICAgIG91dCA9IFtdCiAgICAgICAgd3JpdGUgPSBvdXQuYXBwZW5kCiAgICAgICAgZHVtcCA9IHNlbGYuX19kdW1wCiAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZXMsIEZhdWx0KToKICAgICAgICAgICAgIyBmYXVsdCBpbnN0YW5jZQogICAgICAgICAgICB3cml0ZSgiPGZhdWx0PlxuIikKICAgICAgICAgICAgZHVtcCh7J2ZhdWx0Q29kZSc6IHZhbHVlcy5mYXVsdENvZGUsCiAgICAgICAgICAgICAgICAgICdmYXVsdFN0cmluZyc6IHZhbHVlcy5mYXVsdFN0cmluZ30sCiAgICAgICAgICAgICAgICAgd3JpdGUpCiAgICAgICAgICAgIHdyaXRlKCI8L2ZhdWx0PlxuIikKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIHBhcmFtZXRlciBibG9jawogICAgICAgICAgICAjIEZJWE1FOiB0aGUgeG1sLXJwYyBzcGVjaWZpY2F0aW9uIGFsbG93cyB1cyB0byBsZWF2ZSBvdXQKICAgICAgICAgICAgIyB0aGUgZW50aXJlIDxwYXJhbXM+IGJsb2NrIGlmIHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzLgogICAgICAgICAgICAjIGhvd2V2ZXIsIGNoYW5naW5nIHRoaXMgbWF5IGJyZWFrIG9sZGVyIGNvZGUgKGluY2x1ZGluZwogICAgICAgICAgICAjIG9sZCB2ZXJzaW9ucyBvZiB4bWxycGNsaWIucHkpLCBzbyB0aGlzIGlzIGJldHRlciBsZWZ0IGFzCiAgICAgICAgICAgICMgaXMgZm9yIG5vdy4gIFNlZSBAWE1MUlBDMyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gL0YKICAgICAgICAgICAgd3JpdGUoIjxwYXJhbXM+XG4iKQogICAgICAgICAgICBmb3IgdiBpbiB2YWx1ZXM6CiAgICAgICAgICAgICAgICB3cml0ZSgiPHBhcmFtPlxuIikKICAgICAgICAgICAgICAgIGR1bXAodiwgd3JpdGUpCiAgICAgICAgICAgICAgICB3cml0ZSgiPC9wYXJhbT5cbiIpCiAgICAgICAgICAgIHdyaXRlKCI8L3BhcmFtcz5cbiIpCiAgICAgICAgcmVzdWx0ID0gIiIuam9pbihvdXQpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIGRlZiBfX2R1bXAoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3R5cGUodmFsdWUpXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGlzIG9iamVjdCBjYW4gYmUgbWFyc2hhbGxlZCBhcyBhIHN0cnVjdHVyZQogICAgICAgICAgICBpZiBub3QgaGFzYXR0cih2YWx1ZSwgJ19fZGljdF9fJyk6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBtYXJzaGFsICVzIG9iamVjdHMiICUgdHlwZSh2YWx1ZSkpCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhpcyBjbGFzcyBpcyBhIHN1Yi1jbGFzcyBvZiBhIGJhc2ljIHR5cGUsCiAgICAgICAgICAgICMgYmVjYXVzZSB3ZSBkb24ndCBrbm93IGhvdyB0byBtYXJzaGFsIHRoZXNlIHR5cGVzCiAgICAgICAgICAgICMgKGUuZy4gYSBzdHJpbmcgc3ViLWNsYXNzKQogICAgICAgICAgICBmb3IgdHlwZV8gaW4gdHlwZSh2YWx1ZSkuX19tcm9fXzoKICAgICAgICAgICAgICAgIGlmIHR5cGVfIGluIHNlbGYuZGlzcGF0Y2gua2V5cygpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IG1hcnNoYWwgJXMgb2JqZWN0cyIgJSB0eXBlKHZhbHVlKSkKICAgICAgICAgICAgIyBYWFgodHdvdXRlcnMpOiB1c2luZyAiX2FyYml0cmFyeV9pbnN0YW5jZSIgYXMga2V5IGFzIGEgcXVpY2stZml4CiAgICAgICAgICAgICMgZm9yIHRoZSBwM3lrIG1lcmdlLCB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBmaXhlZCBtb3JlIG5lYXRseS4KICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbIl9hcmJpdHJhcnlfaW5zdGFuY2UiXQogICAgICAgIGYoc2VsZiwgdmFsdWUsIHdyaXRlKQoKICAgIGRlZiBkdW1wX25pbCAoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICBpZiBub3Qgc2VsZi5hbGxvd19ub25lOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBtYXJzaGFsIE5vbmUgdW5sZXNzIGFsbG93X25vbmUgaXMgZW5hYmxlZCIpCiAgICAgICAgd3JpdGUoIjx2YWx1ZT48bmlsLz48L3ZhbHVlPiIpCiAgICBkaXNwYXRjaFt0eXBlKE5vbmUpXSA9IGR1bXBfbmlsCgogICAgZGVmIGR1bXBfYm9vbChzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgIHdyaXRlKCI8dmFsdWU+PGJvb2xlYW4+IikKICAgICAgICB3cml0ZSh2YWx1ZSBhbmQgIjEiIG9yICIwIikKICAgICAgICB3cml0ZSgiPC9ib29sZWFuPjwvdmFsdWU+XG4iKQogICAgZGlzcGF0Y2hbYm9vbF0gPSBkdW1wX2Jvb2wKCiAgICBkZWYgZHVtcF9sb25nKHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgaWYgdmFsdWUgPiBNQVhJTlQgb3IgdmFsdWUgPCBNSU5JTlQ6CiAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImludCBleGNlZWRzIFhNTC1SUEMgbGltaXRzIikKICAgICAgICB3cml0ZSgiPHZhbHVlPjxpbnQ+IikKICAgICAgICB3cml0ZShzdHIoaW50KHZhbHVlKSkpCiAgICAgICAgd3JpdGUoIjwvaW50PjwvdmFsdWU+XG4iKQogICAgZGlzcGF0Y2hbaW50XSA9IGR1bXBfbG9uZwoKICAgICMgYmFja3dhcmQgY29tcGF0aWJsZQogICAgZHVtcF9pbnQgPSBkdW1wX2xvbmcKCiAgICBkZWYgZHVtcF9kb3VibGUoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICB3cml0ZSgiPHZhbHVlPjxkb3VibGU+IikKICAgICAgICB3cml0ZShyZXByKHZhbHVlKSkKICAgICAgICB3cml0ZSgiPC9kb3VibGU+PC92YWx1ZT5cbiIpCiAgICBkaXNwYXRjaFtmbG9hdF0gPSBkdW1wX2RvdWJsZQoKICAgIGRlZiBkdW1wX3VuaWNvZGUoc2VsZiwgdmFsdWUsIHdyaXRlLCBlc2NhcGU9ZXNjYXBlKToKICAgICAgICB3cml0ZSgiPHZhbHVlPjxzdHJpbmc+IikKICAgICAgICB3cml0ZShlc2NhcGUodmFsdWUpKQogICAgICAgIHdyaXRlKCI8L3N0cmluZz48L3ZhbHVlPlxuIikKICAgIGRpc3BhdGNoW3N0cl0gPSBkdW1wX3VuaWNvZGUKCiAgICBkZWYgZHVtcF9ieXRlcyhzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgIHdyaXRlKCI8dmFsdWU+PGJhc2U2ND5cbiIpCiAgICAgICAgZW5jb2RlZCA9IGJhc2U2NC5lbmNvZGVieXRlcyh2YWx1ZSkKICAgICAgICB3cml0ZShlbmNvZGVkLmRlY29kZSgnYXNjaWknKSkKICAgICAgICB3cml0ZSgiPC9iYXNlNjQ+PC92YWx1ZT5cbiIpCiAgICBkaXNwYXRjaFtieXRlc10gPSBkdW1wX2J5dGVzCiAgICBkaXNwYXRjaFtieXRlYXJyYXldID0gZHVtcF9ieXRlcwoKICAgIGRlZiBkdW1wX2FycmF5KHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgaSA9IGlkKHZhbHVlKQogICAgICAgIGlmIGkgaW4gc2VsZi5tZW1vOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBtYXJzaGFsIHJlY3Vyc2l2ZSBzZXF1ZW5jZXMiKQogICAgICAgIHNlbGYubWVtb1tpXSA9IE5vbmUKICAgICAgICBkdW1wID0gc2VsZi5fX2R1bXAKICAgICAgICB3cml0ZSgiPHZhbHVlPjxhcnJheT48ZGF0YT5cbiIpCiAgICAgICAgZm9yIHYgaW4gdmFsdWU6CiAgICAgICAgICAgIGR1bXAodiwgd3JpdGUpCiAgICAgICAgd3JpdGUoIjwvZGF0YT48L2FycmF5PjwvdmFsdWU+XG4iKQogICAgICAgIGRlbCBzZWxmLm1lbW9baV0KICAgIGRpc3BhdGNoW3R1cGxlXSA9IGR1bXBfYXJyYXkKICAgIGRpc3BhdGNoW2xpc3RdID0gZHVtcF9hcnJheQoKICAgIGRlZiBkdW1wX3N0cnVjdChzZWxmLCB2YWx1ZSwgd3JpdGUsIGVzY2FwZT1lc2NhcGUpOgogICAgICAgIGkgPSBpZCh2YWx1ZSkKICAgICAgICBpZiBpIGluIHNlbGYubWVtbzoKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgbWFyc2hhbCByZWN1cnNpdmUgZGljdGlvbmFyaWVzIikKICAgICAgICBzZWxmLm1lbW9baV0gPSBOb25lCiAgICAgICAgZHVtcCA9IHNlbGYuX19kdW1wCiAgICAgICAgd3JpdGUoIjx2YWx1ZT48c3RydWN0PlxuIikKICAgICAgICBmb3IgaywgdiBpbiB2YWx1ZS5pdGVtcygpOgogICAgICAgICAgICB3cml0ZSgiPG1lbWJlcj5cbiIpCiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGssIHN0cik6CiAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRpY3Rpb25hcnkga2V5IG11c3QgYmUgc3RyaW5nIikKICAgICAgICAgICAgd3JpdGUoIjxuYW1lPiVzPC9uYW1lPlxuIiAlIGVzY2FwZShrKSkKICAgICAgICAgICAgZHVtcCh2LCB3cml0ZSkKICAgICAgICAgICAgd3JpdGUoIjwvbWVtYmVyPlxuIikKICAgICAgICB3cml0ZSgiPC9zdHJ1Y3Q+PC92YWx1ZT5cbiIpCiAgICAgICAgZGVsIHNlbGYubWVtb1tpXQogICAgZGlzcGF0Y2hbZGljdF0gPSBkdW1wX3N0cnVjdAoKICAgIGRlZiBkdW1wX2RhdGV0aW1lKHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgd3JpdGUoIjx2YWx1ZT48ZGF0ZVRpbWUuaXNvODYwMT4iKQogICAgICAgIHdyaXRlKF9zdHJmdGltZSh2YWx1ZSkpCiAgICAgICAgd3JpdGUoIjwvZGF0ZVRpbWUuaXNvODYwMT48L3ZhbHVlPlxuIikKICAgIGRpc3BhdGNoW2RhdGV0aW1lXSA9IGR1bXBfZGF0ZXRpbWUKCiAgICBkZWYgZHVtcF9pbnN0YW5jZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICMgY2hlY2sgZm9yIHNwZWNpYWwgd3JhcHBlcnMKICAgICAgICBpZiB2YWx1ZS5fX2NsYXNzX18gaW4gV1JBUFBFUlM6CiAgICAgICAgICAgIHNlbGYud3JpdGUgPSB3cml0ZQogICAgICAgICAgICB2YWx1ZS5lbmNvZGUoc2VsZikKICAgICAgICAgICAgZGVsIHNlbGYud3JpdGUKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIHN0b3JlIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXMgYSBzdHJ1Y3QgKHJlYWxseT8pCiAgICAgICAgICAgIHNlbGYuZHVtcF9zdHJ1Y3QodmFsdWUuX19kaWN0X18sIHdyaXRlKQogICAgZGlzcGF0Y2hbRGF0ZVRpbWVdID0gZHVtcF9pbnN0YW5jZQogICAgZGlzcGF0Y2hbQmluYXJ5XSA9IGR1bXBfaW5zdGFuY2UKICAgICMgWFhYKHR3b3V0ZXJzKTogdXNpbmcgIl9hcmJpdHJhcnlfaW5zdGFuY2UiIGFzIGtleSBhcyBhIHF1aWNrLWZpeAogICAgIyBmb3IgdGhlIHAzeWsgbWVyZ2UsIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGZpeGVkIG1vcmUgbmVhdGx5LgogICAgZGlzcGF0Y2hbIl9hcmJpdHJhcnlfaW5zdGFuY2UiXSA9IGR1bXBfaW5zdGFuY2UKCiMjCiMgWE1MLVJQQyB1bm1hcnNoYWxsZXIuCiMKIyBAc2VlIGxvYWRzCgpjbGFzcyBVbm1hcnNoYWxsZXI6CiAgICAiIiJVbm1hcnNoYWwgYW4gWE1MLVJQQyByZXNwb25zZSwgYmFzZWQgb24gaW5jb21pbmcgWE1MIGV2ZW50CiAgICBtZXNzYWdlcyAoc3RhcnQsIGRhdGEsIGVuZCkuICBDYWxsIGNsb3NlKCkgdG8gZ2V0IHRoZSByZXN1bHRpbmcKICAgIGRhdGEgc3RydWN0dXJlLgoKICAgIE5vdGUgdGhhdCB0aGlzIHJlYWRlciBpcyBmYWlybHkgdG9sZXJhbnQsIGFuZCBnbGFkbHkgYWNjZXB0cyBib2d1cwogICAgWE1MLVJQQyBkYXRhIHdpdGhvdXQgY29tcGxhaW5pbmcgKGJ1dCBub3QgYm9ndXMgWE1MKS4KICAgICIiIgoKICAgICMgYW5kIGFnYWluLCBpZiB5b3UgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gaW4gaGVyZSwKICAgICMgdGhhdCdzIHBlcmZlY3RseSBvay4KCiAgICBkZWYgX19pbml0X18oc2VsZiwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgc2VsZi5fdHlwZSA9IE5vbmUKICAgICAgICBzZWxmLl9zdGFjayA9IFtdCiAgICAgICAgc2VsZi5fbWFya3MgPSBbXQogICAgICAgIHNlbGYuX2RhdGEgPSBbXQogICAgICAgIHNlbGYuX3ZhbHVlID0gRmFsc2UKICAgICAgICBzZWxmLl9tZXRob2RuYW1lID0gTm9uZQogICAgICAgIHNlbGYuX2VuY29kaW5nID0gInV0Zi04IgogICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5fc3RhY2suYXBwZW5kCiAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2J1aWx0aW5fdHlwZXMgb3IgdXNlX2RhdGV0aW1lCiAgICAgICAgc2VsZi5fdXNlX2J5dGVzID0gdXNlX2J1aWx0aW5fdHlwZXMKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIyByZXR1cm4gcmVzcG9uc2UgdHVwbGUgYW5kIHRhcmdldCBtZXRob2QKICAgICAgICBpZiBzZWxmLl90eXBlIGlzIE5vbmUgb3Igc2VsZi5fbWFya3M6CiAgICAgICAgICAgIHJhaXNlIFJlc3BvbnNlRXJyb3IoKQogICAgICAgIGlmIHNlbGYuX3R5cGUgPT0gImZhdWx0IjoKICAgICAgICAgICAgcmFpc2UgRmF1bHQoKipzZWxmLl9zdGFja1swXSkKICAgICAgICByZXR1cm4gdHVwbGUoc2VsZi5fc3RhY2spCgogICAgZGVmIGdldG1ldGhvZG5hbWUoc2VsZik6CiAgICAgICAgcmV0dXJuIHNlbGYuX21ldGhvZG5hbWUKCiAgICAjCiAgICAjIGV2ZW50IGhhbmRsZXJzCgogICAgZGVmIHhtbChzZWxmLCBlbmNvZGluZywgc3RhbmRhbG9uZSk6CiAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSBlbmNvZGluZwogICAgICAgICMgRklYTUU6IGFzc2VydCBzdGFuZGFsb25lID09IDEgPz8/CgogICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cnMpOgogICAgICAgICMgcHJlcGFyZSB0byBoYW5kbGUgdGhpcyBlbGVtZW50CiAgICAgICAgaWYgJzonIGluIHRhZzoKICAgICAgICAgICAgdGFnID0gdGFnLnNwbGl0KCc6JylbLTFdCiAgICAgICAgaWYgdGFnID09ICJhcnJheSIgb3IgdGFnID09ICJzdHJ1Y3QiOgogICAgICAgICAgICBzZWxmLl9tYXJrcy5hcHBlbmQobGVuKHNlbGYuX3N0YWNrKSkKICAgICAgICBzZWxmLl9kYXRhID0gW10KICAgICAgICBpZiBzZWxmLl92YWx1ZSBhbmQgdGFnIG5vdCBpbiBzZWxmLmRpc3BhdGNoOgogICAgICAgICAgICByYWlzZSBSZXNwb25zZUVycm9yKCJ1bmtub3duIHRhZyAlciIgJSB0YWcpCiAgICAgICAgc2VsZi5fdmFsdWUgPSAodGFnID09ICJ2YWx1ZSIpCgogICAgZGVmIGRhdGEoc2VsZiwgdGV4dCk6CiAgICAgICAgc2VsZi5fZGF0YS5hcHBlbmQodGV4dCkKCiAgICBkZWYgZW5kKHNlbGYsIHRhZyk6CiAgICAgICAgIyBjYWxsIHRoZSBhcHByb3ByaWF0ZSBlbmQgdGFnIGhhbmRsZXIKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZ10KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIGlmICc6JyBub3QgaW4gdGFnOgogICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPwogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWcuc3BsaXQoJzonKVstMV1dCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KICAgICAgICByZXR1cm4gZihzZWxmLCAiIi5qb2luKHNlbGYuX2RhdGEpKQoKICAgICMKICAgICMgYWNjZWxlcmF0b3Igc3VwcG9ydAoKICAgIGRlZiBlbmRfZGlzcGF0Y2goc2VsZiwgdGFnLCBkYXRhKToKICAgICAgICAjIGRpc3BhdGNoIGRhdGEKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZ10KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIGlmICc6JyBub3QgaW4gdGFnOgogICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPwogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWcuc3BsaXQoJzonKVstMV1dCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KICAgICAgICByZXR1cm4gZihzZWxmLCBkYXRhKQoKICAgICMKICAgICMgZWxlbWVudCBkZWNvZGVycwoKICAgIGRpc3BhdGNoID0ge30KCiAgICBkZWYgZW5kX25pbCAoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5hcHBlbmQoTm9uZSkKICAgICAgICBzZWxmLl92YWx1ZSA9IDAKICAgIGRpc3BhdGNoWyJuaWwiXSA9IGVuZF9uaWwKCiAgICBkZWYgZW5kX2Jvb2xlYW4oc2VsZiwgZGF0YSk6CiAgICAgICAgaWYgZGF0YSA9PSAiMCI6CiAgICAgICAgICAgIHNlbGYuYXBwZW5kKEZhbHNlKQogICAgICAgIGVsaWYgZGF0YSA9PSAiMSI6CiAgICAgICAgICAgIHNlbGYuYXBwZW5kKFRydWUpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgYm9vbGVhbiB2YWx1ZSIpCiAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICBkaXNwYXRjaFsiYm9vbGVhbiJdID0gZW5kX2Jvb2xlYW4KCiAgICBkZWYgZW5kX2ludChzZWxmLCBkYXRhKToKICAgICAgICBzZWxmLmFwcGVuZChpbnQoZGF0YSkpCiAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICBkaXNwYXRjaFsiaTEiXSA9IGVuZF9pbnQKICAgIGRpc3BhdGNoWyJpMiJdID0gZW5kX2ludAogICAgZGlzcGF0Y2hbImk0Il0gPSBlbmRfaW50CiAgICBkaXNwYXRjaFsiaTgiXSA9IGVuZF9pbnQKICAgIGRpc3BhdGNoWyJpbnQiXSA9IGVuZF9pbnQKICAgIGRpc3BhdGNoWyJiaWdpbnRlZ2VyIl0gPSBlbmRfaW50CgogICAgZGVmIGVuZF9kb3VibGUoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5hcHBlbmQoZmxvYXQoZGF0YSkpCiAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICBkaXNwYXRjaFsiZG91YmxlIl0gPSBlbmRfZG91YmxlCiAgICBkaXNwYXRjaFsiZmxvYXQiXSA9IGVuZF9kb3VibGUKCiAgICBkZWYgZW5kX2JpZ2RlY2ltYWwoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5hcHBlbmQoRGVjaW1hbChkYXRhKSkKICAgICAgICBzZWxmLl92YWx1ZSA9IDAKICAgIGRpc3BhdGNoWyJiaWdkZWNpbWFsIl0gPSBlbmRfYmlnZGVjaW1hbAoKICAgIGRlZiBlbmRfc3RyaW5nKHNlbGYsIGRhdGEpOgogICAgICAgIGlmIHNlbGYuX2VuY29kaW5nOgogICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgc2VsZi5hcHBlbmQoZGF0YSkKICAgICAgICBzZWxmLl92YWx1ZSA9IDAKICAgIGRpc3BhdGNoWyJzdHJpbmciXSA9IGVuZF9zdHJpbmcKICAgIGRpc3BhdGNoWyJuYW1lIl0gPSBlbmRfc3RyaW5nICMgc3RydWN0IGtleXMgYXJlIGFsd2F5cyBzdHJpbmdzCgogICAgZGVmIGVuZF9hcnJheShzZWxmLCBkYXRhKToKICAgICAgICBtYXJrID0gc2VsZi5fbWFya3MucG9wKCkKICAgICAgICAjIG1hcCBhcnJheXMgdG8gUHl0aG9uIGxpc3RzCiAgICAgICAgc2VsZi5fc3RhY2tbbWFyazpdID0gW3NlbGYuX3N0YWNrW21hcms6XV0KICAgICAgICBzZWxmLl92YWx1ZSA9IDAKICAgIGRpc3BhdGNoWyJhcnJheSJdID0gZW5kX2FycmF5CgogICAgZGVmIGVuZF9zdHJ1Y3Qoc2VsZiwgZGF0YSk6CiAgICAgICAgbWFyayA9IHNlbGYuX21hcmtzLnBvcCgpCiAgICAgICAgIyBtYXAgc3RydWN0cyB0byBQeXRob24gZGljdGlvbmFyaWVzCiAgICAgICAgZGljdCA9IHt9CiAgICAgICAgaXRlbXMgPSBzZWxmLl9zdGFja1ttYXJrOl0KICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oaXRlbXMpLCAyKToKICAgICAgICAgICAgZGljdFtpdGVtc1tpXV0gPSBpdGVtc1tpKzFdCiAgICAgICAgc2VsZi5fc3RhY2tbbWFyazpdID0gW2RpY3RdCiAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICBkaXNwYXRjaFsic3RydWN0Il0gPSBlbmRfc3RydWN0CgogICAgZGVmIGVuZF9iYXNlNjQoc2VsZiwgZGF0YSk6CiAgICAgICAgdmFsdWUgPSBCaW5hcnkoKQogICAgICAgIHZhbHVlLmRlY29kZShkYXRhLmVuY29kZSgiYXNjaWkiKSkKICAgICAgICBpZiBzZWxmLl91c2VfYnl0ZXM6CiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGF0YQogICAgICAgIHNlbGYuYXBwZW5kKHZhbHVlKQogICAgICAgIHNlbGYuX3ZhbHVlID0gMAogICAgZGlzcGF0Y2hbImJhc2U2NCJdID0gZW5kX2Jhc2U2NAoKICAgIGRlZiBlbmRfZGF0ZVRpbWUoc2VsZiwgZGF0YSk6CiAgICAgICAgdmFsdWUgPSBEYXRlVGltZSgpCiAgICAgICAgdmFsdWUuZGVjb2RlKGRhdGEpCiAgICAgICAgaWYgc2VsZi5fdXNlX2RhdGV0aW1lOgogICAgICAgICAgICB2YWx1ZSA9IF9kYXRldGltZV90eXBlKGRhdGEpCiAgICAgICAgc2VsZi5hcHBlbmQodmFsdWUpCiAgICBkaXNwYXRjaFsiZGF0ZVRpbWUuaXNvODYwMSJdID0gZW5kX2RhdGVUaW1lCgogICAgZGVmIGVuZF92YWx1ZShzZWxmLCBkYXRhKToKICAgICAgICAjIGlmIHdlIHN0dW1ibGUgdXBvbiBhIHZhbHVlIGVsZW1lbnQgd2l0aCBubyBpbnRlcm5hbAogICAgICAgICMgZWxlbWVudHMsIHRyZWF0IGl0IGFzIGEgc3RyaW5nIGVsZW1lbnQKICAgICAgICBpZiBzZWxmLl92YWx1ZToKICAgICAgICAgICAgc2VsZi5lbmRfc3RyaW5nKGRhdGEpCiAgICBkaXNwYXRjaFsidmFsdWUiXSA9IGVuZF92YWx1ZQoKICAgIGRlZiBlbmRfcGFyYW1zKHNlbGYsIGRhdGEpOgogICAgICAgIHNlbGYuX3R5cGUgPSAicGFyYW1zIgogICAgZGlzcGF0Y2hbInBhcmFtcyJdID0gZW5kX3BhcmFtcwoKICAgIGRlZiBlbmRfZmF1bHQoc2VsZiwgZGF0YSk6CiAgICAgICAgc2VsZi5fdHlwZSA9ICJmYXVsdCIKICAgIGRpc3BhdGNoWyJmYXVsdCJdID0gZW5kX2ZhdWx0CgogICAgZGVmIGVuZF9tZXRob2ROYW1lKHNlbGYsIGRhdGEpOgogICAgICAgIGlmIHNlbGYuX2VuY29kaW5nOgogICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgc2VsZi5fbWV0aG9kbmFtZSA9IGRhdGEKICAgICAgICBzZWxmLl90eXBlID0gIm1ldGhvZE5hbWUiICMgbm8gcGFyYW1zCiAgICBkaXNwYXRjaFsibWV0aG9kTmFtZSJdID0gZW5kX21ldGhvZE5hbWUKCiMjIE11bHRpY2FsbCBzdXBwb3J0CiMKCmNsYXNzIF9NdWx0aUNhbGxNZXRob2Q6CiAgICAjIHNvbWUgbGVzc2VyIG1hZ2ljIHRvIHN0b3JlIGNhbGxzIG1hZGUgdG8gYSBNdWx0aUNhbGwgb2JqZWN0CiAgICAjIGZvciBiYXRjaCBleGVjdXRpb24KICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWxsX2xpc3QsIG5hbWUpOgogICAgICAgIHNlbGYuX19jYWxsX2xpc3QgPSBjYWxsX2xpc3QKICAgICAgICBzZWxmLl9fbmFtZSA9IG5hbWUKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICByZXR1cm4gX011bHRpQ2FsbE1ldGhvZChzZWxmLl9fY2FsbF9saXN0LCAiJXMuJXMiICUgKHNlbGYuX19uYW1lLCBuYW1lKSkKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgc2VsZi5fX2NhbGxfbGlzdC5hcHBlbmQoKHNlbGYuX19uYW1lLCBhcmdzKSkKCmNsYXNzIE11bHRpQ2FsbEl0ZXJhdG9yOgogICAgIiIiSXRlcmF0ZXMgb3ZlciB0aGUgcmVzdWx0cyBvZiBhIG11bHRpY2FsbC4gRXhjZXB0aW9ucyBhcmUKICAgIHJhaXNlZCBpbiByZXNwb25zZSB0byB4bWxycGMgZmF1bHRzLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXN1bHRzKToKICAgICAgICBzZWxmLnJlc3VsdHMgPSByZXN1bHRzCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgogICAgICAgIGl0ZW0gPSBzZWxmLnJlc3VsdHNbaV0KICAgICAgICBpZiB0eXBlKGl0ZW0pID09IHR5cGUoe30pOgogICAgICAgICAgICByYWlzZSBGYXVsdChpdGVtWydmYXVsdENvZGUnXSwgaXRlbVsnZmF1bHRTdHJpbmcnXSkKICAgICAgICBlbGlmIHR5cGUoaXRlbSkgPT0gdHlwZShbXSk6CiAgICAgICAgICAgIHJldHVybiBpdGVtWzBdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5leHBlY3RlZCB0eXBlIGluIG11bHRpY2FsbCByZXN1bHQiKQoKY2xhc3MgTXVsdGlDYWxsOgogICAgIiIic2VydmVyIC0+IGFuIG9iamVjdCB1c2VkIHRvIGJveGNhciBtZXRob2QgY2FsbHMKCiAgICBzZXJ2ZXIgc2hvdWxkIGJlIGEgU2VydmVyUHJveHkgb2JqZWN0LgoKICAgIE1ldGhvZHMgY2FuIGJlIGFkZGVkIHRvIHRoZSBNdWx0aUNhbGwgdXNpbmcgbm9ybWFsCiAgICBtZXRob2QgY2FsbCBzeW50YXggZS5nLjoKCiAgICBtdWx0aWNhbGwgPSBNdWx0aUNhbGwoc2VydmVyX3Byb3h5KQogICAgbXVsdGljYWxsLmFkZCgyLDMpCiAgICBtdWx0aWNhbGwuZ2V0X2FkZHJlc3MoIkd1aWRvIikKCiAgICBUbyBleGVjdXRlIHRoZSBtdWx0aWNhbGwsIGNhbGwgdGhlIE11bHRpQ2FsbCBvYmplY3QgZS5nLjoKCiAgICBhZGRfcmVzdWx0LCBhZGRyZXNzID0gbXVsdGljYWxsKCkKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXIpOgogICAgICAgIHNlbGYuX19zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICBzZWxmLl9fY2FsbF9saXN0ID0gW10KCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICI8JXMgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGlkKHNlbGYpKQoKICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICByZXR1cm4gX011bHRpQ2FsbE1ldGhvZChzZWxmLl9fY2FsbF9saXN0LCBuYW1lKQoKICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKICAgICAgICBtYXJzaGFsbGVkX2xpc3QgPSBbXQogICAgICAgIGZvciBuYW1lLCBhcmdzIGluIHNlbGYuX19jYWxsX2xpc3Q6CiAgICAgICAgICAgIG1hcnNoYWxsZWRfbGlzdC5hcHBlbmQoeydtZXRob2ROYW1lJyA6IG5hbWUsICdwYXJhbXMnIDogYXJnc30pCgogICAgICAgIHJldHVybiBNdWx0aUNhbGxJdGVyYXRvcihzZWxmLl9fc2VydmVyLnN5c3RlbS5tdWx0aWNhbGwobWFyc2hhbGxlZF9saXN0KSkKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBjb252ZW5pZW5jZSBmdW5jdGlvbnMKCkZhc3RNYXJzaGFsbGVyID0gRmFzdFBhcnNlciA9IEZhc3RVbm1hcnNoYWxsZXIgPSBOb25lCgojIwojIENyZWF0ZSBhIHBhcnNlciBvYmplY3QsIGFuZCBjb25uZWN0IGl0IHRvIGFuIHVubWFyc2hhbGxpbmcgaW5zdGFuY2UuCiMgVGhpcyBmdW5jdGlvbiBwaWNrcyB0aGUgZmFzdGVzdCBhdmFpbGFibGUgWE1MIHBhcnNlci4KIwojIHJldHVybiBBIChwYXJzZXIsIHVubWFyc2hhbGxlcikgdHVwbGUuCgpkZWYgZ2V0cGFyc2VyKHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgIiIiZ2V0cGFyc2VyKCkgLT4gcGFyc2VyLCB1bm1hcnNoYWxsZXIKCiAgICBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGZhc3Rlc3QgYXZhaWxhYmxlIHBhcnNlciwgYW5kIGF0dGFjaCBpdAogICAgdG8gYW4gdW5tYXJzaGFsbGluZyBvYmplY3QuICBSZXR1cm4gYm90aCBvYmplY3RzLgogICAgIiIiCiAgICBpZiBGYXN0UGFyc2VyIGFuZCBGYXN0VW5tYXJzaGFsbGVyOgogICAgICAgIGlmIHVzZV9idWlsdGluX3R5cGVzOgogICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lX3R5cGUKICAgICAgICAgICAgbWtieXRlcyA9IGJhc2U2NC5kZWNvZGVieXRlcwogICAgICAgIGVsaWYgdXNlX2RhdGV0aW1lOgogICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lX3R5cGUKICAgICAgICAgICAgbWtieXRlcyA9IF9iaW5hcnkKICAgICAgICBlbHNlOgogICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lCiAgICAgICAgICAgIG1rYnl0ZXMgPSBfYmluYXJ5CiAgICAgICAgdGFyZ2V0ID0gRmFzdFVubWFyc2hhbGxlcihUcnVlLCBGYWxzZSwgbWtieXRlcywgbWtkYXRldGltZSwgRmF1bHQpCiAgICAgICAgcGFyc2VyID0gRmFzdFBhcnNlcih0YXJnZXQpCiAgICBlbHNlOgogICAgICAgIHRhcmdldCA9IFVubWFyc2hhbGxlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lLCB1c2VfYnVpbHRpbl90eXBlcz11c2VfYnVpbHRpbl90eXBlcykKICAgICAgICBpZiBGYXN0UGFyc2VyOgogICAgICAgICAgICBwYXJzZXIgPSBGYXN0UGFyc2VyKHRhcmdldCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwYXJzZXIgPSBFeHBhdFBhcnNlcih0YXJnZXQpCiAgICByZXR1cm4gcGFyc2VyLCB0YXJnZXQKCiMjCiMgQ29udmVydCBhIFB5dGhvbiB0dXBsZSBvciBhIEZhdWx0IGluc3RhbmNlIHRvIGFuIFhNTC1SUEMgcGFja2V0LgojCiMgQGRlZiBkdW1wcyhwYXJhbXMsICoqb3B0aW9ucykKIyBAcGFyYW0gcGFyYW1zIEEgdHVwbGUgb3IgRmF1bHQgaW5zdGFuY2UuCiMgQGtleXBhcmFtIG1ldGhvZG5hbWUgSWYgZ2l2ZW4sIGNyZWF0ZSBhIG1ldGhvZENhbGwgcmVxdWVzdCBmb3IKIyAgICAgdGhpcyBtZXRob2QgbmFtZS4KIyBAa2V5cGFyYW0gbWV0aG9kcmVzcG9uc2UgSWYgZ2l2ZW4sIGNyZWF0ZSBhIG1ldGhvZFJlc3BvbnNlIHBhY2tldC4KIyAgICAgSWYgdXNlZCB3aXRoIGEgdHVwbGUsIHRoZSB0dXBsZSBtdXN0IGJlIGEgc2luZ2xldG9uICh0aGF0IGlzLAojICAgICBpdCBtdXN0IGNvbnRhaW4gZXhhY3RseSBvbmUgZWxlbWVudCkuCiMgQGtleXBhcmFtIGVuY29kaW5nIFRoZSBwYWNrZXQgZW5jb2RpbmcuCiMgQHJldHVybiBBIHN0cmluZyBjb250YWluaW5nIG1hcnNoYWxsZWQgZGF0YS4KCmRlZiBkdW1wcyhwYXJhbXMsIG1ldGhvZG5hbWU9Tm9uZSwgbWV0aG9kcmVzcG9uc2U9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UpOgogICAgIiIiZGF0YSBbLG9wdGlvbnNdIC0+IG1hcnNoYWxsZWQgZGF0YQoKICAgIENvbnZlcnQgYW4gYXJndW1lbnQgdHVwbGUgb3IgYSBGYXVsdCBpbnN0YW5jZSB0byBhbiBYTUwtUlBDCiAgICByZXF1ZXN0IChvciByZXNwb25zZSwgaWYgdGhlIG1ldGhvZHJlc3BvbnNlIG9wdGlvbiBpcyB1c2VkKS4KCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgZGF0YSBvYmplY3QsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBjYW4gYmUgZ2l2ZW4KICAgIGFzIGtleXdvcmQgYXJndW1lbnRzOgoKICAgICAgICBtZXRob2RuYW1lOiB0aGUgbWV0aG9kIG5hbWUgZm9yIGEgbWV0aG9kQ2FsbCBwYWNrZXQKCiAgICAgICAgbWV0aG9kcmVzcG9uc2U6IHRydWUgdG8gY3JlYXRlIGEgbWV0aG9kUmVzcG9uc2UgcGFja2V0LgogICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgd2l0aCBhIHR1cGxlLCB0aGUgdHVwbGUgbXVzdCBiZQogICAgICAgIGEgc2luZ2xldG9uIChpLmUuIGl0IGNhbiBjb250YWluIG9ubHkgb25lIGVsZW1lbnQpLgoKICAgICAgICBlbmNvZGluZzogdGhlIHBhY2tldCBlbmNvZGluZyAoZGVmYXVsdCBpcyBVVEYtOCkKCiAgICBBbGwgYnl0ZSBzdHJpbmdzIGluIHRoZSBkYXRhIHN0cnVjdHVyZSBhcmUgYXNzdW1lZCB0byB1c2UgdGhlCiAgICBwYWNrZXQgZW5jb2RpbmcuICBVbmljb2RlIHN0cmluZ3MgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkLAogICAgd2hlcmUgbmVjZXNzYXJ5LgogICAgIiIiCgogICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyYW1zLCAodHVwbGUsIEZhdWx0KSksICJhcmd1bWVudCBtdXN0IGJlIHR1cGxlIG9yIEZhdWx0IGluc3RhbmNlIgogICAgaWYgaXNpbnN0YW5jZShwYXJhbXMsIEZhdWx0KToKICAgICAgICBtZXRob2RyZXNwb25zZSA9IDEKICAgIGVsaWYgbWV0aG9kcmVzcG9uc2UgYW5kIGlzaW5zdGFuY2UocGFyYW1zLCB0dXBsZSk6CiAgICAgICAgYXNzZXJ0IGxlbihwYXJhbXMpID09IDEsICJyZXNwb25zZSB0dXBsZSBtdXN0IGJlIGEgc2luZ2xldG9uIgoKICAgIGlmIG5vdCBlbmNvZGluZzoKICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKCiAgICBpZiBGYXN0TWFyc2hhbGxlcjoKICAgICAgICBtID0gRmFzdE1hcnNoYWxsZXIoZW5jb2RpbmcpCiAgICBlbHNlOgogICAgICAgIG0gPSBNYXJzaGFsbGVyKGVuY29kaW5nLCBhbGxvd19ub25lKQoKICAgIGRhdGEgPSBtLmR1bXBzKHBhcmFtcykKCiAgICBpZiBlbmNvZGluZyAhPSAidXRmLTgiOgogICAgICAgIHhtbGhlYWRlciA9ICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIiAlIHN0cihlbmNvZGluZykKICAgIGVsc2U6CiAgICAgICAgeG1saGVhZGVyID0gIjw/eG1sIHZlcnNpb249JzEuMCc/PlxuIiAjIHV0Zi04IGlzIGRlZmF1bHQKCiAgICAjIHN0YW5kYXJkIFhNTC1SUEMgd3JhcHBpbmdzCiAgICBpZiBtZXRob2RuYW1lOgogICAgICAgICMgYSBtZXRob2QgY2FsbAogICAgICAgIGRhdGEgPSAoCiAgICAgICAgICAgIHhtbGhlYWRlciwKICAgICAgICAgICAgIjxtZXRob2RDYWxsPlxuIgogICAgICAgICAgICAiPG1ldGhvZE5hbWU+IiwgbWV0aG9kbmFtZSwgIjwvbWV0aG9kTmFtZT5cbiIsCiAgICAgICAgICAgIGRhdGEsCiAgICAgICAgICAgICI8L21ldGhvZENhbGw+XG4iCiAgICAgICAgICAgICkKICAgIGVsaWYgbWV0aG9kcmVzcG9uc2U6CiAgICAgICAgIyBhIG1ldGhvZCByZXNwb25zZSwgb3IgYSBmYXVsdCBzdHJ1Y3R1cmUKICAgICAgICBkYXRhID0gKAogICAgICAgICAgICB4bWxoZWFkZXIsCiAgICAgICAgICAgICI8bWV0aG9kUmVzcG9uc2U+XG4iLAogICAgICAgICAgICBkYXRhLAogICAgICAgICAgICAiPC9tZXRob2RSZXNwb25zZT5cbiIKICAgICAgICAgICAgKQogICAgZWxzZToKICAgICAgICByZXR1cm4gZGF0YSAjIHJldHVybiBhcyBpcwogICAgcmV0dXJuICIiLmpvaW4oZGF0YSkKCiMjCiMgQ29udmVydCBhbiBYTUwtUlBDIHBhY2tldCB0byBhIFB5dGhvbiBvYmplY3QuICBJZiB0aGUgWE1MLVJQQyBwYWNrZXQKIyByZXByZXNlbnRzIGEgZmF1bHQgY29uZGl0aW9uLCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyBhIEZhdWx0IGV4Y2VwdGlvbi4KIwojIEBwYXJhbSBkYXRhIEFuIFhNTC1SUEMgcGFja2V0LCBnaXZlbiBhcyBhbiA4LWJpdCBzdHJpbmcuCiMgQHJldHVybiBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHVucGFja2VkIGRhdGEsIGFuZCB0aGUgbWV0aG9kIG5hbWUKIyAgICAgKE5vbmUgaWYgbm90IHByZXNlbnQpLgojIEBzZWUgRmF1bHQKCmRlZiBsb2FkcyhkYXRhLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICIiImRhdGEgLT4gdW5tYXJzaGFsbGVkIGRhdGEsIG1ldGhvZCBuYW1lCgogICAgQ29udmVydCBhbiBYTUwtUlBDIHBhY2tldCB0byB1bm1hcnNoYWxsZWQgZGF0YSBwbHVzIGEgbWV0aG9kCiAgICBuYW1lIChOb25lIGlmIG5vdCBwcmVzZW50KS4KCiAgICBJZiB0aGUgWE1MLVJQQyBwYWNrZXQgcmVwcmVzZW50cyBhIGZhdWx0IGNvbmRpdGlvbiwgdGhpcyBmdW5jdGlvbgogICAgcmFpc2VzIGEgRmF1bHQgZXhjZXB0aW9uLgogICAgIiIiCiAgICBwLCB1ID0gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUsIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzKQogICAgcC5mZWVkKGRhdGEpCiAgICBwLmNsb3NlKCkKICAgIHJldHVybiB1LmNsb3NlKCksIHUuZ2V0bWV0aG9kbmFtZSgpCgojIwojIEVuY29kZSBhIHN0cmluZyB1c2luZyB0aGUgZ3ppcCBjb250ZW50IGVuY29kaW5nIHN1Y2ggYXMgc3BlY2lmaWVkIGJ5IHRoZQojIENvbnRlbnQtRW5jb2Rpbmc6IGd6aXAKIyBpbiB0aGUgSFRUUCBoZWFkZXIsIGFzIGRlc2NyaWJlZCBpbiBSRkMgMTk1MgojCiMgQHBhcmFtIGRhdGEgdGhlIHVuZW5jb2RlZCBkYXRhCiMgQHJldHVybiB0aGUgZW5jb2RlZCBkYXRhCgpkZWYgZ3ppcF9lbmNvZGUoZGF0YSk6CiAgICAiIiJkYXRhIC0+IGd6aXAgZW5jb2RlZCBkYXRhCgogICAgRW5jb2RlIGRhdGEgdXNpbmcgdGhlIGd6aXAgY29udGVudCBlbmNvZGluZyBhcyBkZXNjcmliZWQgaW4gUkZDIDE5NTIKICAgICIiIgogICAgaWYgbm90IGd6aXA6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogICAgZiA9IEJ5dGVzSU8oKQogICAgd2l0aCBnemlwLkd6aXBGaWxlKG1vZGU9IndiIiwgZmlsZW9iaj1mLCBjb21wcmVzc2xldmVsPTEpIGFzIGd6ZjoKICAgICAgICBnemYud3JpdGUoZGF0YSkKICAgIHJldHVybiBmLmdldHZhbHVlKCkKCiMjCiMgRGVjb2RlIGEgc3RyaW5nIHVzaW5nIHRoZSBnemlwIGNvbnRlbnQgZW5jb2Rpbmcgc3VjaCBhcyBzcGVjaWZpZWQgYnkgdGhlCiMgQ29udGVudC1FbmNvZGluZzogZ3ppcAojIGluIHRoZSBIVFRQIGhlYWRlciwgYXMgZGVzY3JpYmVkIGluIFJGQyAxOTUyCiMKIyBAcGFyYW0gZGF0YSBUaGUgZW5jb2RlZCBkYXRhCiMgQGtleXBhcmFtIG1heF9kZWNvZGUgTWF4aW11bSBieXRlcyB0byBkZWNvZGUgKDIwIE1pQiBkZWZhdWx0KSwgdXNlIG5lZ2F0aXZlCiMgICAgdmFsdWVzIGZvciB1bmxpbWl0ZWQgZGVjb2RpbmcKIyBAcmV0dXJuIHRoZSB1bmVuY29kZWQgZGF0YQojIEByYWlzZXMgVmFsdWVFcnJvciBpZiBkYXRhIGlzIG5vdCBjb3JyZWN0bHkgY29kZWQuCiMgQHJhaXNlcyBWYWx1ZUVycm9yIGlmIG1heCBnemlwcGVkIHBheWxvYWQgbGVuZ3RoIGV4Y2VlZGVkCgpkZWYgZ3ppcF9kZWNvZGUoZGF0YSwgbWF4X2RlY29kZT0yMDk3MTUyMCk6CiAgICAiIiJnemlwIGVuY29kZWQgZGF0YSAtPiB1bmVuY29kZWQgZGF0YQoKICAgIERlY29kZSBkYXRhIHVzaW5nIHRoZSBnemlwIGNvbnRlbnQgZW5jb2RpbmcgYXMgZGVzY3JpYmVkIGluIFJGQyAxOTUyCiAgICAiIiIKICAgIGlmIG5vdCBnemlwOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgIHdpdGggZ3ppcC5HemlwRmlsZShtb2RlPSJyYiIsIGZpbGVvYmo9Qnl0ZXNJTyhkYXRhKSkgYXMgZ3pmOgogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgbWF4X2RlY29kZSA8IDA6ICMgbm8gbGltaXQKICAgICAgICAgICAgICAgIGRlY29kZWQgPSBnemYucmVhZCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBkZWNvZGVkID0gZ3pmLnJlYWQobWF4X2RlY29kZSArIDEpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgZGF0YSIpCiAgICBpZiBtYXhfZGVjb2RlID49IDAgYW5kIGxlbihkZWNvZGVkKSA+IG1heF9kZWNvZGU6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWF4IGd6aXBwZWQgcGF5bG9hZCBsZW5ndGggZXhjZWVkZWQiKQogICAgcmV0dXJuIGRlY29kZWQKCiMjCiMgUmV0dXJuIGEgZGVjb2RlZCBmaWxlLWxpa2Ugb2JqZWN0IGZvciB0aGUgZ3ppcCBlbmNvZGluZwojIGFzIGRlc2NyaWJlZCBpbiBSRkMgMTk1Mi4KIwojIEBwYXJhbSByZXNwb25zZSBBIHN0cmVhbSBzdXBwb3J0aW5nIGEgcmVhZCgpIG1ldGhvZAojIEByZXR1cm4gYSBmaWxlLWxpa2Ugb2JqZWN0IHRoYXQgdGhlIGRlY29kZWQgZGF0YSBjYW4gYmUgcmVhZCgpIGZyb20KCmNsYXNzIEd6aXBEZWNvZGVkUmVzcG9uc2UoZ3ppcC5HemlwRmlsZSBpZiBnemlwIGVsc2Ugb2JqZWN0KToKICAgICIiImEgZmlsZS1saWtlIG9iamVjdCB0byBkZWNvZGUgYSByZXNwb25zZSBlbmNvZGVkIHdpdGggdGhlIGd6aXAKICAgIG1ldGhvZCwgYXMgZGVzY3JpYmVkIGluIFJGQyAxOTUyLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmVzcG9uc2UpOgogICAgICAgICNyZXNwb25zZSBkb2Vzbid0IHN1cHBvcnQgdGVsbCgpIGFuZCByZWFkKCksIHJlcXVpcmVkIGJ5CiAgICAgICAgI0d6aXBGaWxlCiAgICAgICAgaWYgbm90IGd6aXA6CiAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgICAgICBzZWxmLmlvID0gQnl0ZXNJTyhyZXNwb25zZS5yZWFkKCkpCiAgICAgICAgZ3ppcC5HemlwRmlsZS5fX2luaXRfXyhzZWxmLCBtb2RlPSJyYiIsIGZpbGVvYmo9c2VsZi5pbykKCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBnemlwLkd6aXBGaWxlLmNsb3NlKHNlbGYpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5pby5jbG9zZSgpCgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHJlcXVlc3QgZGlzcGF0Y2hlcgoKY2xhc3MgX01ldGhvZDoKICAgICMgc29tZSBtYWdpYyB0byBiaW5kIGFuIFhNTC1SUEMgbWV0aG9kIHRvIGFuIFJQQyBzZXJ2ZXIuCiAgICAjIHN1cHBvcnRzICJuZXN0ZWQiIG1ldGhvZHMgKGUuZy4gZXhhbXBsZXMuZ2V0U3RhdGVOYW1lKQogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlbmQsIG5hbWUpOgogICAgICAgIHNlbGYuX19zZW5kID0gc2VuZAogICAgICAgIHNlbGYuX19uYW1lID0gbmFtZQogICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgIHJldHVybiBfTWV0aG9kKHNlbGYuX19zZW5kLCAiJXMuJXMiICUgKHNlbGYuX19uYW1lLCBuYW1lKSkKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgcmV0dXJuIHNlbGYuX19zZW5kKHNlbGYuX19uYW1lLCBhcmdzKQoKIyMKIyBTdGFuZGFyZCB0cmFuc3BvcnQgY2xhc3MgZm9yIFhNTC1SUEMgb3ZlciBIVFRQLgojIDxwPgojIFlvdSBjYW4gY3JlYXRlIGN1c3RvbSB0cmFuc3BvcnRzIGJ5IHN1YmNsYXNzaW5nIHRoaXMgbWV0aG9kLCBhbmQKIyBvdmVycmlkaW5nIHNlbGVjdGVkIG1ldGhvZHMuCgpjbGFzcyBUcmFuc3BvcnQ6CiAgICAiIiJIYW5kbGVzIGFuIEhUVFAgdHJhbnNhY3Rpb24gdG8gYW4gWE1MLVJQQyBzZXJ2ZXIuIiIiCgogICAgIyBjbGllbnQgaWRlbnRpZmllciAobWF5IGJlIG92ZXJyaWRkZW4pCiAgICB1c2VyX2FnZW50ID0gIlB5dGhvbi14bWxycGMvJXMiICUgX192ZXJzaW9uX18KCiAgICAjaWYgdHJ1ZSwgd2UnbGwgcmVxdWVzdCBnemlwIGVuY29kaW5nCiAgICBhY2NlcHRfZ3ppcF9lbmNvZGluZyA9IFRydWUKCiAgICAjIGlmIHBvc2l0aXZlLCBlbmNvZGUgcmVxdWVzdCB1c2luZyBnemlwIGlmIGl0IGV4Y2VlZHMgdGhpcyB0aHJlc2hvbGQKICAgICMgbm90ZSB0aGF0IG1hbnkgc2VydmVycyB3aWxsIGdldCBjb25mdXNlZCwgc28gb25seSB1c2UgaXQgaWYgeW91IGtub3cKICAgICMgdGhhdCB0aGV5IGNhbiBkZWNvZGUgc3VjaCBhIHJlcXVlc3QKICAgIGVuY29kZV90aHJlc2hvbGQgPSBOb25lICNOb25lID0gZG9uJ3QgZW5jb2RlCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UsCiAgICAgICAgICAgICAgICAgKiwgaGVhZGVycz0oKSk6CiAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2RhdGV0aW1lCiAgICAgICAgc2VsZi5fdXNlX2J1aWx0aW5fdHlwZXMgPSB1c2VfYnVpbHRpbl90eXBlcwogICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24gPSAoTm9uZSwgTm9uZSkKICAgICAgICBzZWxmLl9oZWFkZXJzID0gbGlzdChoZWFkZXJzKQogICAgICAgIHNlbGYuX2V4dHJhX2hlYWRlcnMgPSBbXQoKICAgICMjCiAgICAjIFNlbmQgYSBjb21wbGV0ZSByZXF1ZXN0LCBhbmQgcGFyc2UgdGhlIHJlc3BvbnNlLgogICAgIyBSZXRyeSByZXF1ZXN0IGlmIGEgY2FjaGVkIGNvbm5lY3Rpb24gaGFzIGRpc2Nvbm5lY3RlZC4KICAgICMKICAgICMgQHBhcmFtIGhvc3QgVGFyZ2V0IGhvc3QuCiAgICAjIEBwYXJhbSBoYW5kbGVyIFRhcmdldCBQUkMgaGFuZGxlci4KICAgICMgQHBhcmFtIHJlcXVlc3RfYm9keSBYTUwtUlBDIHJlcXVlc3QgYm9keS4KICAgICMgQHBhcmFtIHZlcmJvc2UgRGVidWdnaW5nIGZsYWcuCiAgICAjIEByZXR1cm4gUGFyc2VkIHJlc3BvbnNlLgoKICAgIGRlZiByZXF1ZXN0KHNlbGYsIGhvc3QsIGhhbmRsZXIsIHJlcXVlc3RfYm9keSwgdmVyYm9zZT1GYWxzZSk6CiAgICAgICAgI3JldHJ5IHJlcXVlc3Qgb25jZSBpZiBjYWNoZWQgY29ubmVjdGlvbiBoYXMgZ29uZSBjb2xkCiAgICAgICAgZm9yIGkgaW4gKDAsIDEpOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zaW5nbGVfcmVxdWVzdChob3N0LCBoYW5kbGVyLCByZXF1ZXN0X2JvZHksIHZlcmJvc2UpCiAgICAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWQ6CiAgICAgICAgICAgICAgICBpZiBpOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICBpZiBpIG9yIGUuZXJybm8gbm90IGluIChlcnJuby5FQ09OTlJFU0VULCBlcnJuby5FQ09OTkFCT1JURUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJuby5FUElQRSk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKCiAgICBkZWYgc2luZ2xlX3JlcXVlc3Qoc2VsZiwgaG9zdCwgaGFuZGxlciwgcmVxdWVzdF9ib2R5LCB2ZXJib3NlPUZhbHNlKToKICAgICAgICAjIGlzc3VlIFhNTC1SUEMgcmVxdWVzdAogICAgICAgIHRyeToKICAgICAgICAgICAgaHR0cF9jb25uID0gc2VsZi5zZW5kX3JlcXVlc3QoaG9zdCwgaGFuZGxlciwgcmVxdWVzdF9ib2R5LCB2ZXJib3NlKQogICAgICAgICAgICByZXNwID0gaHR0cF9jb25uLmdldHJlc3BvbnNlKCkKICAgICAgICAgICAgaWYgcmVzcC5zdGF0dXMgPT0gMjAwOgogICAgICAgICAgICAgICAgc2VsZi52ZXJib3NlID0gdmVyYm9zZQogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VfcmVzcG9uc2UocmVzcCkKCiAgICAgICAgZXhjZXB0IEZhdWx0OgogICAgICAgICAgICByYWlzZQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICNBbGwgdW5leHBlY3RlZCBlcnJvcnMgbGVhdmUgY29ubmVjdGlvbiBpbgogICAgICAgICAgICAjIGEgc3RyYW5nZSBzdGF0ZSwgc28gd2UgY2xlYXIgaXQuCiAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICByYWlzZQoKICAgICAgICAjV2UgZ290IGFuIGVycm9yIHJlc3BvbnNlLgogICAgICAgICNEaXNjYXJkIGFueSByZXNwb25zZSBkYXRhIGFuZCByYWlzZSBleGNlcHRpb24KICAgICAgICBpZiByZXNwLmdldGhlYWRlcigiY29udGVudC1sZW5ndGgiLCAiIik6CiAgICAgICAgICAgIHJlc3AucmVhZCgpCiAgICAgICAgcmFpc2UgUHJvdG9jb2xFcnJvcigKICAgICAgICAgICAgaG9zdCArIGhhbmRsZXIsCiAgICAgICAgICAgIHJlc3Auc3RhdHVzLCByZXNwLnJlYXNvbiwKICAgICAgICAgICAgZGljdChyZXNwLmdldGhlYWRlcnMoKSkKICAgICAgICAgICAgKQoKCiAgICAjIwogICAgIyBDcmVhdGUgcGFyc2VyLgogICAgIwogICAgIyBAcmV0dXJuIEEgMi10dXBsZSBjb250YWluaW5nIGEgcGFyc2VyIGFuZCBhbiB1bm1hcnNoYWxsZXIuCgogICAgZGVmIGdldHBhcnNlcihzZWxmKToKICAgICAgICAjIGdldCBwYXJzZXIgYW5kIHVubWFyc2hhbGxlcgogICAgICAgIHJldHVybiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPXNlbGYuX3VzZV9kYXRldGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXNlbGYuX3VzZV9idWlsdGluX3R5cGVzKQoKICAgICMjCiAgICAjIEdldCBhdXRob3JpemF0aW9uIGluZm8gZnJvbSBob3N0IHBhcmFtZXRlcgogICAgIyBIb3N0IG1heSBiZSBhIHN0cmluZywgb3IgYSAoaG9zdCwgeDUwOS1kaWN0KSB0dXBsZTsgaWYgYSBzdHJpbmcsCiAgICAjIGl0IGlzIGNoZWNrZWQgZm9yIGEgInVzZXI6cHdAaG9zdCIgZm9ybWF0LCBhbmQgYSAiQmFzaWMKICAgICMgQXV0aGVudGljYXRpb24iIGhlYWRlciBpcyBhZGRlZCBpZiBhcHByb3ByaWF0ZS4KICAgICMKICAgICMgQHBhcmFtIGhvc3QgSG9zdCBkZXNjcmlwdG9yIChVUkwgb3IgKFVSTCwgeDUwOSBpbmZvKSB0dXBsZSkuCiAgICAjIEByZXR1cm4gQSAzLXR1cGxlIGNvbnRhaW5pbmcgKGFjdHVhbCBob3N0LCBleHRyYSBoZWFkZXJzLAogICAgIyAgICAgeDUwOSBpbmZvKS4gIFRoZSBoZWFkZXIgYW5kIHg1MDkgZmllbGRzIG1heSBiZSBOb25lLgoKICAgIGRlZiBnZXRfaG9zdF9pbmZvKHNlbGYsIGhvc3QpOgoKICAgICAgICB4NTA5ID0ge30KICAgICAgICBpZiBpc2luc3RhbmNlKGhvc3QsIHR1cGxlKToKICAgICAgICAgICAgaG9zdCwgeDUwOSA9IGhvc3QKCiAgICAgICAgYXV0aCwgaG9zdCA9IHVybGxpYi5wYXJzZS5fc3BsaXR1c2VyKGhvc3QpCgogICAgICAgIGlmIGF1dGg6CiAgICAgICAgICAgIGF1dGggPSB1cmxsaWIucGFyc2UudW5xdW90ZV90b19ieXRlcyhhdXRoKQogICAgICAgICAgICBhdXRoID0gYmFzZTY0LmVuY29kZWJ5dGVzKGF1dGgpLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICBhdXRoID0gIiIuam9pbihhdXRoLnNwbGl0KCkpICMgZ2V0IHJpZCBvZiB3aGl0ZXNwYWNlCiAgICAgICAgICAgIGV4dHJhX2hlYWRlcnMgPSBbCiAgICAgICAgICAgICAgICAoIkF1dGhvcml6YXRpb24iLCAiQmFzaWMgIiArIGF1dGgpCiAgICAgICAgICAgICAgICBdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZXh0cmFfaGVhZGVycyA9IFtdCgogICAgICAgIHJldHVybiBob3N0LCBleHRyYV9oZWFkZXJzLCB4NTA5CgogICAgIyMKICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIuCiAgICAjCiAgICAjIEBwYXJhbSBob3N0IFRhcmdldCBob3N0LgogICAgIyBAcmV0dXJuIEFuIEhUVFBDb25uZWN0aW9uIG9iamVjdAoKICAgIGRlZiBtYWtlX2Nvbm5lY3Rpb24oc2VsZiwgaG9zdCk6CiAgICAgICAgI3JldHVybiBhbiBleGlzdGluZyBjb25uZWN0aW9uIGlmIHBvc3NpYmxlLiAgVGhpcyBhbGxvd3MKICAgICAgICAjSFRUUC8xLjEga2VlcC1hbGl2ZS4KICAgICAgICBpZiBzZWxmLl9jb25uZWN0aW9uIGFuZCBob3N0ID09IHNlbGYuX2Nvbm5lY3Rpb25bMF06CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uWzFdCiAgICAgICAgIyBjcmVhdGUgYSBIVFRQIGNvbm5lY3Rpb24gb2JqZWN0IGZyb20gYSBob3N0IGRlc2NyaXB0b3IKICAgICAgICBjaG9zdCwgc2VsZi5fZXh0cmFfaGVhZGVycywgeDUwOSA9IHNlbGYuZ2V0X2hvc3RfaW5mbyhob3N0KQogICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24gPSBob3N0LCBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbihjaG9zdCkKICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvblsxXQoKICAgICMjCiAgICAjIENsZWFyIGFueSBjYWNoZWQgY29ubmVjdGlvbiBvYmplY3QuCiAgICAjIFVzZWQgaW4gdGhlIGV2ZW50IG9mIHNvY2tldCBlcnJvcnMuCiAgICAjCiAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgaG9zdCwgY29ubmVjdGlvbiA9IHNlbGYuX2Nvbm5lY3Rpb24KICAgICAgICBpZiBjb25uZWN0aW9uOgogICAgICAgICAgICBzZWxmLl9jb25uZWN0aW9uID0gKE5vbmUsIE5vbmUpCiAgICAgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKQoKICAgICMjCiAgICAjIFNlbmQgSFRUUCByZXF1ZXN0LgogICAgIwogICAgIyBAcGFyYW0gaG9zdCBIb3N0IGRlc2NyaXB0b3IgKFVSTCBvciAoVVJMLCB4NTA5IGluZm8pIHR1cGxlKS4KICAgICMgQHBhcmFtIGhhbmRsZXIgVGFyZ2V0IFJQQyBoYW5kbGVyIChhIHBhdGggcmVsYXRpdmUgdG8gaG9zdCkKICAgICMgQHBhcmFtIHJlcXVlc3RfYm9keSBUaGUgWE1MLVJQQyByZXF1ZXN0IGJvZHkKICAgICMgQHBhcmFtIGRlYnVnIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgZGVidWcgaXMgdHJ1ZS4KICAgICMgQHJldHVybiBBbiBIVFRQQ29ubmVjdGlvbi4KCiAgICBkZWYgc2VuZF9yZXF1ZXN0KHNlbGYsIGhvc3QsIGhhbmRsZXIsIHJlcXVlc3RfYm9keSwgZGVidWcpOgogICAgICAgIGNvbm5lY3Rpb24gPSBzZWxmLm1ha2VfY29ubmVjdGlvbihob3N0KQogICAgICAgIGhlYWRlcnMgPSBzZWxmLl9oZWFkZXJzICsgc2VsZi5fZXh0cmFfaGVhZGVycwogICAgICAgIGlmIGRlYnVnOgogICAgICAgICAgICBjb25uZWN0aW9uLnNldF9kZWJ1Z2xldmVsKDEpCiAgICAgICAgaWYgc2VsZi5hY2NlcHRfZ3ppcF9lbmNvZGluZyBhbmQgZ3ppcDoKICAgICAgICAgICAgY29ubmVjdGlvbi5wdXRyZXF1ZXN0KCJQT1NUIiwgaGFuZGxlciwgc2tpcF9hY2NlcHRfZW5jb2Rpbmc9VHJ1ZSkKICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoKCJBY2NlcHQtRW5jb2RpbmciLCAiZ3ppcCIpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbm5lY3Rpb24ucHV0cmVxdWVzdCgiUE9TVCIsIGhhbmRsZXIpCiAgICAgICAgaGVhZGVycy5hcHBlbmQoKCJDb250ZW50LVR5cGUiLCAidGV4dC94bWwiKSkKICAgICAgICBoZWFkZXJzLmFwcGVuZCgoIlVzZXItQWdlbnQiLCBzZWxmLnVzZXJfYWdlbnQpKQogICAgICAgIHNlbGYuc2VuZF9oZWFkZXJzKGNvbm5lY3Rpb24sIGhlYWRlcnMpCiAgICAgICAgc2VsZi5zZW5kX2NvbnRlbnQoY29ubmVjdGlvbiwgcmVxdWVzdF9ib2R5KQogICAgICAgIHJldHVybiBjb25uZWN0aW9uCgogICAgIyMKICAgICMgU2VuZCByZXF1ZXN0IGhlYWRlcnMuCiAgICAjIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSB1c2VmdWwgaG9vayBmb3Igc3ViY2xhc3NpbmcKICAgICMKICAgICMgQHBhcmFtIGNvbm5lY3Rpb24gaHR0cENvbm5lY3Rpb24uCiAgICAjIEBwYXJhbSBoZWFkZXJzIGxpc3Qgb2Yga2V5LHZhbHVlIHBhaXJzIGZvciBIVFRQIGhlYWRlcnMKCiAgICBkZWYgc2VuZF9oZWFkZXJzKHNlbGYsIGNvbm5lY3Rpb24sIGhlYWRlcnMpOgogICAgICAgIGZvciBrZXksIHZhbCBpbiBoZWFkZXJzOgogICAgICAgICAgICBjb25uZWN0aW9uLnB1dGhlYWRlcihrZXksIHZhbCkKCiAgICAjIwogICAgIyBTZW5kIHJlcXVlc3QgYm9keS4KICAgICMgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIHVzZWZ1bCBob29rIGZvciBzdWJjbGFzc2luZwogICAgIwogICAgIyBAcGFyYW0gY29ubmVjdGlvbiBodHRwQ29ubmVjdGlvbi4KICAgICMgQHBhcmFtIHJlcXVlc3RfYm9keSBYTUwtUlBDIHJlcXVlc3QgYm9keS4KCiAgICBkZWYgc2VuZF9jb250ZW50KHNlbGYsIGNvbm5lY3Rpb24sIHJlcXVlc3RfYm9keSk6CiAgICAgICAgI29wdGlvbmFsbHkgZW5jb2RlIHRoZSByZXF1ZXN0CiAgICAgICAgaWYgKHNlbGYuZW5jb2RlX3RocmVzaG9sZCBpcyBub3QgTm9uZSBhbmQKICAgICAgICAgICAgc2VsZi5lbmNvZGVfdGhyZXNob2xkIDwgbGVuKHJlcXVlc3RfYm9keSkgYW5kCiAgICAgICAgICAgIGd6aXApOgogICAgICAgICAgICBjb25uZWN0aW9uLnB1dGhlYWRlcigiQ29udGVudC1FbmNvZGluZyIsICJnemlwIikKICAgICAgICAgICAgcmVxdWVzdF9ib2R5ID0gZ3ppcF9lbmNvZGUocmVxdWVzdF9ib2R5KQoKICAgICAgICBjb25uZWN0aW9uLnB1dGhlYWRlcigiQ29udGVudC1MZW5ndGgiLCBzdHIobGVuKHJlcXVlc3RfYm9keSkpKQogICAgICAgIGNvbm5lY3Rpb24uZW5kaGVhZGVycyhyZXF1ZXN0X2JvZHkpCgogICAgIyMKICAgICMgUGFyc2UgcmVzcG9uc2UuCiAgICAjCiAgICAjIEBwYXJhbSBmaWxlIFN0cmVhbS4KICAgICMgQHJldHVybiBSZXNwb25zZSB0dXBsZSBhbmQgdGFyZ2V0IG1ldGhvZC4KCiAgICBkZWYgcGFyc2VfcmVzcG9uc2Uoc2VsZiwgcmVzcG9uc2UpOgogICAgICAgICMgcmVhZCByZXNwb25zZSBkYXRhIGZyb20gaHR0cHJlc3BvbnNlLCBhbmQgcGFyc2UgaXQKICAgICAgICAjIENoZWNrIGZvciBuZXcgaHR0cCByZXNwb25zZSBvYmplY3QsIG90aGVyd2lzZSBpdCBpcyBhIGZpbGUgb2JqZWN0LgogICAgICAgIGlmIGhhc2F0dHIocmVzcG9uc2UsICdnZXRoZWFkZXInKToKICAgICAgICAgICAgaWYgcmVzcG9uc2UuZ2V0aGVhZGVyKCJDb250ZW50LUVuY29kaW5nIiwgIiIpID09ICJnemlwIjoKICAgICAgICAgICAgICAgIHN0cmVhbSA9IEd6aXBEZWNvZGVkUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzdHJlYW0gPSByZXNwb25zZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHN0cmVhbSA9IHJlc3BvbnNlCgogICAgICAgIHAsIHUgPSBzZWxmLmdldHBhcnNlcigpCgogICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgIGRhdGEgPSBzdHJlYW0ucmVhZCgxMDI0KQogICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKICAgICAgICAgICAgICAgIHByaW50KCJib2R5OiIsIHJlcHIoZGF0YSkpCiAgICAgICAgICAgIHAuZmVlZChkYXRhKQoKICAgICAgICBpZiBzdHJlYW0gaXMgbm90IHJlc3BvbnNlOgogICAgICAgICAgICBzdHJlYW0uY2xvc2UoKQogICAgICAgIHAuY2xvc2UoKQoKICAgICAgICByZXR1cm4gdS5jbG9zZSgpCgojIwojIFN0YW5kYXJkIHRyYW5zcG9ydCBjbGFzcyBmb3IgWE1MLVJQQyBvdmVyIEhUVFBTLgoKY2xhc3MgU2FmZVRyYW5zcG9ydChUcmFuc3BvcnQpOgogICAgIiIiSGFuZGxlcyBhbiBIVFRQUyB0cmFuc2FjdGlvbiB0byBhbiBYTUwtUlBDIHNlcnZlci4iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSwKICAgICAgICAgICAgICAgICAqLCBoZWFkZXJzPSgpLCBjb250ZXh0PU5vbmUpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18odXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzKQogICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQKCiAgICAjIEZJWE1FOiBtb3N0bHkgdW50ZXN0ZWQKCiAgICBkZWYgbWFrZV9jb25uZWN0aW9uKHNlbGYsIGhvc3QpOgogICAgICAgIGlmIHNlbGYuX2Nvbm5lY3Rpb24gYW5kIGhvc3QgPT0gc2VsZi5fY29ubmVjdGlvblswXToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm5lY3Rpb25bMV0KCiAgICAgICAgaWYgbm90IGhhc2F0dHIoaHR0cC5jbGllbnQsICJIVFRQU0Nvbm5lY3Rpb24iKToKICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKICAgICAgICAgICAgInlvdXIgdmVyc2lvbiBvZiBodHRwLmNsaWVudCBkb2Vzbid0IHN1cHBvcnQgSFRUUFMiKQogICAgICAgICMgY3JlYXRlIGEgSFRUUFMgY29ubmVjdGlvbiBvYmplY3QgZnJvbSBhIGhvc3QgZGVzY3JpcHRvcgogICAgICAgICMgaG9zdCBtYXkgYmUgYSBzdHJpbmcsIG9yIGEgKGhvc3QsIHg1MDktZGljdCkgdHVwbGUKICAgICAgICBjaG9zdCwgc2VsZi5fZXh0cmFfaGVhZGVycywgeDUwOSA9IHNlbGYuZ2V0X2hvc3RfaW5mbyhob3N0KQogICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24gPSBob3N0LCBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oY2hvc3QsCiAgICAgICAgICAgIE5vbmUsIGNvbnRleHQ9c2VsZi5jb250ZXh0LCAqKih4NTA5IG9yIHt9KSkKICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvblsxXQoKIyMKIyBTdGFuZGFyZCBzZXJ2ZXIgcHJveHkuICBUaGlzIGNsYXNzIGVzdGFibGlzaGVzIGEgdmlydHVhbCBjb25uZWN0aW9uCiMgdG8gYW4gWE1MLVJQQyBzZXJ2ZXIuCiMgPHA+CiMgVGhpcyBjbGFzcyBpcyBhdmFpbGFibGUgYXMgU2VydmVyUHJveHkgYW5kIFNlcnZlci4gIE5ldyBjb2RlIHNob3VsZAojIHVzZSBTZXJ2ZXJQcm94eSwgdG8gYXZvaWQgY29uZnVzaW9uLgojCiMgQGRlZiBTZXJ2ZXJQcm94eSh1cmksICoqb3B0aW9ucykKIyBAcGFyYW0gdXJpIFRoZSBjb25uZWN0aW9uIHBvaW50IG9uIHRoZSBzZXJ2ZXIuCiMgQGtleXBhcmFtIHRyYW5zcG9ydCBBIHRyYW5zcG9ydCBmYWN0b3J5LCBjb21wYXRpYmxlIHdpdGggdGhlCiMgICAgc3RhbmRhcmQgdHJhbnNwb3J0IGNsYXNzLgojIEBrZXlwYXJhbSBlbmNvZGluZyBUaGUgZGVmYXVsdCBlbmNvZGluZyB1c2VkIGZvciA4LWJpdCBzdHJpbmdzCiMgICAgKGRlZmF1bHQgaXMgVVRGLTgpLgojIEBrZXlwYXJhbSB2ZXJib3NlIFVzZSBhIHRydWUgdmFsdWUgdG8gZW5hYmxlIGRlYnVnZ2luZyBvdXRwdXQuCiMgICAgKHByaW50ZWQgdG8gc3RhbmRhcmQgb3V0cHV0KS4KIyBAc2VlIFRyYW5zcG9ydAoKY2xhc3MgU2VydmVyUHJveHk6CiAgICAiIiJ1cmkgWyxvcHRpb25zXSAtPiBhIGxvZ2ljYWwgY29ubmVjdGlvbiB0byBhbiBYTUwtUlBDIHNlcnZlcgoKICAgIHVyaSBpcyB0aGUgY29ubmVjdGlvbiBwb2ludCBvbiB0aGUgc2VydmVyLCBnaXZlbiBhcwogICAgc2NoZW1lOi8vaG9zdC90YXJnZXQuCgogICAgVGhlIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uIGFsd2F5cyBzdXBwb3J0cyB0aGUgImh0dHAiIHNjaGVtZS4gIElmCiAgICBTU0wgc29ja2V0IHN1cHBvcnQgaXMgYXZhaWxhYmxlIChQeXRob24gMi4wKSwgaXQgYWxzbyBzdXBwb3J0cwogICAgImh0dHBzIi4KCiAgICBJZiB0aGUgdGFyZ2V0IHBhcnQgYW5kIHRoZSBzbGFzaCBwcmVjZWRpbmcgaXQgYXJlIGJvdGggb21pdHRlZCwKICAgICIvUlBDMiIgaXMgYXNzdW1lZC4KCiAgICBUaGUgZm9sbG93aW5nIG9wdGlvbnMgY2FuIGJlIGdpdmVuIGFzIGtleXdvcmQgYXJndW1lbnRzOgoKICAgICAgICB0cmFuc3BvcnQ6IGEgdHJhbnNwb3J0IGZhY3RvcnkKICAgICAgICBlbmNvZGluZzogdGhlIHJlcXVlc3QgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVRGLTgpCgogICAgQWxsIDgtYml0IHN0cmluZ3MgcGFzc2VkIHRvIHRoZSBzZXJ2ZXIgcHJveHkgYXJlIGFzc3VtZWQgdG8gdXNlCiAgICB0aGUgZ2l2ZW4gZW5jb2RpbmcuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdXJpLCB0cmFuc3BvcnQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgdmVyYm9zZT1GYWxzZSwKICAgICAgICAgICAgICAgICBhbGxvd19ub25lPUZhbHNlLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlLAogICAgICAgICAgICAgICAgICosIGhlYWRlcnM9KCksIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgIyBlc3RhYmxpc2ggYSAibG9naWNhbCIgc2VydmVyIGNvbm5lY3Rpb24KCiAgICAgICAgIyBnZXQgdGhlIHVybAogICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJpKQogICAgICAgIGlmIHAuc2NoZW1lIG5vdCBpbiAoImh0dHAiLCAiaHR0cHMiKToKICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigidW5zdXBwb3J0ZWQgWE1MLVJQQyBwcm90b2NvbCIpCiAgICAgICAgc2VsZi5fX2hvc3QgPSBwLm5ldGxvYwogICAgICAgIHNlbGYuX19oYW5kbGVyID0gdXJsbGliLnBhcnNlLnVybHVuc3BsaXQoWyIiLCAiIiwgKnBbMjpdXSkKICAgICAgICBpZiBub3Qgc2VsZi5fX2hhbmRsZXI6CiAgICAgICAgICAgIHNlbGYuX19oYW5kbGVyID0gIi9SUEMyIgoKICAgICAgICBpZiB0cmFuc3BvcnQgaXMgTm9uZToKICAgICAgICAgICAgaWYgcC5zY2hlbWUgPT0gImh0dHBzIjoKICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBTYWZlVHJhbnNwb3J0CiAgICAgICAgICAgICAgICBleHRyYV9rd2FyZ3MgPSB7ImNvbnRleHQiOiBjb250ZXh0fQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaGFuZGxlciA9IFRyYW5zcG9ydAogICAgICAgICAgICAgICAgZXh0cmFfa3dhcmdzID0ge30KICAgICAgICAgICAgdHJhbnNwb3J0ID0gaGFuZGxlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmV4dHJhX2t3YXJncykKICAgICAgICBzZWxmLl9fdHJhbnNwb3J0ID0gdHJhbnNwb3J0CgogICAgICAgIHNlbGYuX19lbmNvZGluZyA9IGVuY29kaW5nIG9yICd1dGYtOCcKICAgICAgICBzZWxmLl9fdmVyYm9zZSA9IHZlcmJvc2UKICAgICAgICBzZWxmLl9fYWxsb3dfbm9uZSA9IGFsbG93X25vbmUKCiAgICBkZWYgX19jbG9zZShzZWxmKToKICAgICAgICBzZWxmLl9fdHJhbnNwb3J0LmNsb3NlKCkKCiAgICBkZWYgX19yZXF1ZXN0KHNlbGYsIG1ldGhvZG5hbWUsIHBhcmFtcyk6CiAgICAgICAgIyBjYWxsIGEgbWV0aG9kIG9uIHRoZSByZW1vdGUgc2VydmVyCgogICAgICAgIHJlcXVlc3QgPSBkdW1wcyhwYXJhbXMsIG1ldGhvZG5hbWUsIGVuY29kaW5nPXNlbGYuX19lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZT1zZWxmLl9fYWxsb3dfbm9uZSkuZW5jb2RlKHNlbGYuX19lbmNvZGluZywgJ3htbGNoYXJyZWZyZXBsYWNlJykKCiAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9fdHJhbnNwb3J0LnJlcXVlc3QoCiAgICAgICAgICAgIHNlbGYuX19ob3N0LAogICAgICAgICAgICBzZWxmLl9faGFuZGxlciwKICAgICAgICAgICAgcmVxdWVzdCwKICAgICAgICAgICAgdmVyYm9zZT1zZWxmLl9fdmVyYm9zZQogICAgICAgICAgICApCgogICAgICAgIGlmIGxlbihyZXNwb25zZSkgPT0gMToKICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZVswXQoKICAgICAgICByZXR1cm4gcmVzcG9uc2UKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgIjwlcyBmb3IgJXMlcz4iICUKICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9faG9zdCwgc2VsZi5fX2hhbmRsZXIpCiAgICAgICAgICAgICkKCiAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgIyBtYWdpYyBtZXRob2QgZGlzcGF0Y2hlcgogICAgICAgIHJldHVybiBfTWV0aG9kKHNlbGYuX19yZXF1ZXN0LCBuYW1lKQoKICAgICMgbm90ZTogdG8gY2FsbCBhIHJlbW90ZSBvYmplY3Qgd2l0aCBhIG5vbi1zdGFuZGFyZCBuYW1lLCB1c2UKICAgICMgcmVzdWx0IGdldGF0dHIoc2VydmVyLCAic3RyYW5nZS1weXRob24tbmFtZSIpKGFyZ3MpCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIGF0dHIpOgogICAgICAgICIiIkEgd29ya2Fyb3VuZCB0byBnZXQgc3BlY2lhbCBhdHRyaWJ1dGVzIG9uIHRoZSBTZXJ2ZXJQcm94eQogICAgICAgICAgIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgbWFnaWMgX19nZXRhdHRyX18KICAgICAgICAiIiIKICAgICAgICBpZiBhdHRyID09ICJjbG9zZSI6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xvc2UKICAgICAgICBlbGlmIGF0dHIgPT0gInRyYW5zcG9ydCI6CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9fdHJhbnNwb3J0CiAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkF0dHJpYnV0ZSAlciBub3QgZm91bmQiICUgKGF0dHIsKSkKCiAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmCgogICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKICAgICAgICBzZWxmLl9fY2xvc2UoKQoKIyBjb21wYXRpYmlsaXR5CgpTZXJ2ZXIgPSBTZXJ2ZXJQcm94eQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHRlc3QgY29kZQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKCiAgICAjIHNpbXBsZSB0ZXN0IHByb2dyYW0gKGZyb20gdGhlIFhNTC1SUEMgc3BlY2lmaWNhdGlvbikKCiAgICAjIGxvY2FsIHNlcnZlciwgYXZhaWxhYmxlIGZyb20gTGliL3htbHJwYy9zZXJ2ZXIucHkKICAgIHNlcnZlciA9IFNlcnZlclByb3h5KCJodHRwOi8vbG9jYWxob3N0OjgwMDAiKQoKICAgIHRyeToKICAgICAgICBwcmludChzZXJ2ZXIuY3VycmVudFRpbWUuZ2V0Q3VycmVudFRpbWUoKSkKICAgIGV4Y2VwdCBFcnJvciBhcyB2OgogICAgICAgIHByaW50KCJFUlJPUiIsIHYpCgogICAgbXVsdGkgPSBNdWx0aUNhbGwoc2VydmVyKQogICAgbXVsdGkuZ2V0RGF0YSgpCiAgICBtdWx0aS5wb3coMiw5KQogICAgbXVsdGkuYWRkKDEsMikKICAgIHRyeToKICAgICAgICBmb3IgcmVzcG9uc2UgaW4gbXVsdGkoKToKICAgICAgICAgICAgcHJpbnQocmVzcG9uc2UpCiAgICBleGNlcHQgRXJyb3IgYXMgdjoKICAgICAgICBwcmludCgiRVJST1IiLCB2KQpQSwMEFAAAAAAAAyCjVsc+5z0DkAAAA5AAABAAAAB4bWxycGMvc2VydmVyLnB5ciIiIlhNTC1SUEMgU2VydmVycy4KClRoaXMgbW9kdWxlIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBzaW1wbGUgWE1MLVJQQyBzZXJ2ZXJzCmJ5IGNyZWF0aW5nIGEgc2VydmVyIGFuZCBlaXRoZXIgaW5zdGFsbGluZyBmdW5jdGlvbnMsIGEKY2xhc3MgaW5zdGFuY2UsIG9yIGJ5IGV4dGVuZGluZyB0aGUgU2ltcGxlWE1MUlBDU2VydmVyCmNsYXNzLgoKSXQgY2FuIGFsc28gYmUgdXNlZCB0byBoYW5kbGUgWE1MLVJQQyByZXF1ZXN0cyBpbiBhIENHSQplbnZpcm9ubWVudCB1c2luZyBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlci4KClRoZSBEb2MqIGNsYXNzZXMgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIFhNTC1SUEMgc2VydmVycyB0aGF0CnNlcnZlIHB5ZG9jLXN0eWxlIGRvY3VtZW50YXRpb24gaW4gcmVzcG9uc2UgdG8gSFRUUApHRVQgcmVxdWVzdHMuIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBkeW5hbWljYWxseSBnZW5lcmF0ZWQKYmFzZWQgb24gdGhlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyByZWdpc3RlcmVkIHdpdGggdGhlCnNlcnZlci4KCkEgbGlzdCBvZiBwb3NzaWJsZSB1c2FnZSBwYXR0ZXJucyBmb2xsb3dzOgoKMS4gSW5zdGFsbCBmdW5jdGlvbnM6CgpzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkKc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCnNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKCjIuIEluc3RhbGwgYW4gaW5zdGFuY2U6CgpjbGFzcyBNeUZ1bmNzOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICMgbWFrZSBhbGwgb2YgdGhlIHN5cyBmdW5jdGlvbnMgYXZhaWxhYmxlIHRocm91Z2ggc3lzLmZ1bmNfbmFtZQogICAgICAgIGltcG9ydCBzeXMKICAgICAgICBzZWxmLnN5cyA9IHN5cwogICAgZGVmIF9saXN0TWV0aG9kcyhzZWxmKToKICAgICAgICAjIGltcGxlbWVudCB0aGlzIG1ldGhvZCBzbyB0aGF0IHN5c3RlbS5saXN0TWV0aG9kcwogICAgICAgICMga25vd3MgdG8gYWR2ZXJ0aXNlIHRoZSBzeXMgbWV0aG9kcwogICAgICAgIHJldHVybiBsaXN0X3B1YmxpY19tZXRob2RzKHNlbGYpICsgXAogICAgICAgICAgICAgICAgWydzeXMuJyArIG1ldGhvZCBmb3IgbWV0aG9kIGluIGxpc3RfcHVibGljX21ldGhvZHMoc2VsZi5zeXMpXQogICAgZGVmIHBvdyhzZWxmLCB4LCB5KTogcmV0dXJuIHBvdyh4LCB5KQogICAgZGVmIGFkZChzZWxmLCB4LCB5KSA6IHJldHVybiB4ICsgeQoKc2VydmVyID0gU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpCnNlcnZlci5yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2Z1bmN0aW9ucygpCnNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShNeUZ1bmNzKCkpCnNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKCjMuIEluc3RhbGwgYW4gaW5zdGFuY2Ugd2l0aCBjdXN0b20gZGlzcGF0Y2ggbWV0aG9kOgoKY2xhc3MgTWF0aDoKICAgIGRlZiBfbGlzdE1ldGhvZHMoc2VsZik6CiAgICAgICAgIyB0aGlzIG1ldGhvZCBtdXN0IGJlIHByZXNlbnQgZm9yIHN5c3RlbS5saXN0TWV0aG9kcwogICAgICAgICMgdG8gd29yawogICAgICAgIHJldHVybiBbJ2FkZCcsICdwb3cnXQogICAgZGVmIF9tZXRob2RIZWxwKHNlbGYsIG1ldGhvZCk6CiAgICAgICAgIyB0aGlzIG1ldGhvZCBtdXN0IGJlIHByZXNlbnQgZm9yIHN5c3RlbS5tZXRob2RIZWxwCiAgICAgICAgIyB0byB3b3JrCiAgICAgICAgaWYgbWV0aG9kID09ICdhZGQnOgogICAgICAgICAgICByZXR1cm4gImFkZCgyLDMpID0+IDUiCiAgICAgICAgZWxpZiBtZXRob2QgPT0gJ3Bvdyc6CiAgICAgICAgICAgIHJldHVybiAicG93KHgsIHlbLCB6XSkgPT4gbnVtYmVyIgogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgQnkgY29udmVudGlvbiwgcmV0dXJuIGVtcHR5CiAgICAgICAgICAgICMgc3RyaW5nIGlmIG5vIGhlbHAgaXMgYXZhaWxhYmxlCiAgICAgICAgICAgIHJldHVybiAiIgogICAgZGVmIF9kaXNwYXRjaChzZWxmLCBtZXRob2QsIHBhcmFtcyk6CiAgICAgICAgaWYgbWV0aG9kID09ICdwb3cnOgogICAgICAgICAgICByZXR1cm4gcG93KCpwYXJhbXMpCiAgICAgICAgZWxpZiBtZXRob2QgPT0gJ2FkZCc6CiAgICAgICAgICAgIHJldHVybiBwYXJhbXNbMF0gKyBwYXJhbXNbMV0KICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdiYWQgbWV0aG9kJykKCnNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQpzZXJ2ZXIucmVnaXN0ZXJfaW50cm9zcGVjdGlvbl9mdW5jdGlvbnMoKQpzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoTWF0aCgpKQpzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCgo0LiBTdWJjbGFzcyBTaW1wbGVYTUxSUENTZXJ2ZXI6CgpjbGFzcyBNYXRoU2VydmVyKFNpbXBsZVhNTFJQQ1NlcnZlcik6CiAgICBkZWYgX2Rpc3BhdGNoKHNlbGYsIG1ldGhvZCwgcGFyYW1zKToKICAgICAgICB0cnk6CiAgICAgICAgICAgICMgV2UgYXJlIGZvcmNpbmcgdGhlICdleHBvcnRfJyBwcmVmaXggb24gbWV0aG9kcyB0aGF0IGFyZQogICAgICAgICAgICAjIGNhbGxhYmxlIHRocm91Z2ggWE1MLVJQQyB0byBwcmV2ZW50IHBvdGVudGlhbCBzZWN1cml0eQogICAgICAgICAgICAjIHByb2JsZW1zCiAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsICdleHBvcnRfJyArIG1ldGhvZCkKICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignbWV0aG9kICIlcyIgaXMgbm90IHN1cHBvcnRlZCcgJSBtZXRob2QpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKnBhcmFtcykKCiAgICBkZWYgZXhwb3J0X2FkZChzZWxmLCB4LCB5KToKICAgICAgICByZXR1cm4geCArIHkKCnNlcnZlciA9IE1hdGhTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkKc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQoKNS4gQ0dJIHNjcmlwdDoKCnNlcnZlciA9IENHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKCkKc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKc2VydmVyLmhhbmRsZV9yZXF1ZXN0KCkKIiIiCgojIFdyaXR0ZW4gYnkgQnJpYW4gUXVpbmxhbiAoYnJpYW5Ac3dlZXRhcHAuY29tKS4KIyBCYXNlZCBvbiBjb2RlIHdyaXR0ZW4gYnkgRnJlZHJpayBMdW5kaC4KCmZyb20geG1scnBjLmNsaWVudCBpbXBvcnQgRmF1bHQsIGR1bXBzLCBsb2FkcywgZ3ppcF9lbmNvZGUsIGd6aXBfZGVjb2RlCmZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKZnJvbSBpbnNwZWN0IGltcG9ydCBzaWduYXR1cmUKaW1wb3J0IGh0bWwKaW1wb3J0IGh0dHAuc2VydmVyCmltcG9ydCBzb2NrZXRzZXJ2ZXIKaW1wb3J0IHN5cwppbXBvcnQgb3MKaW1wb3J0IHJlCmltcG9ydCBweWRvYwppbXBvcnQgdHJhY2ViYWNrCnRyeToKICAgIGltcG9ydCBmY250bApleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBmY250bCA9IE5vbmUKCmRlZiByZXNvbHZlX2RvdHRlZF9hdHRyaWJ1dGUob2JqLCBhdHRyLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSk6CiAgICAiIiJyZXNvbHZlX2RvdHRlZF9hdHRyaWJ1dGUoYSwgJ2IuYy5kJykgPT4gYS5iLmMuZAoKICAgIFJlc29sdmVzIGEgZG90dGVkIGF0dHJpYnV0ZSBuYW1lIHRvIGFuIG9iamVjdC4gIFJhaXNlcwogICAgYW4gQXR0cmlidXRlRXJyb3IgaWYgYW55IGF0dHJpYnV0ZSBpbiB0aGUgY2hhaW4gc3RhcnRzIHdpdGggYSAnXycuCgogICAgSWYgdGhlIG9wdGlvbmFsIGFsbG93X2RvdHRlZF9uYW1lcyBhcmd1bWVudCBpcyBmYWxzZSwgZG90cyBhcmUgbm90CiAgICBzdXBwb3J0ZWQgYW5kIHRoaXMgZnVuY3Rpb24gb3BlcmF0ZXMgc2ltaWxhciB0byBnZXRhdHRyKG9iaiwgYXR0cikuCiAgICAiIiIKCiAgICBpZiBhbGxvd19kb3R0ZWRfbmFtZXM6CiAgICAgICAgYXR0cnMgPSBhdHRyLnNwbGl0KCcuJykKICAgIGVsc2U6CiAgICAgICAgYXR0cnMgPSBbYXR0cl0KCiAgICBmb3IgaSBpbiBhdHRyczoKICAgICAgICBpZiBpLnN0YXJ0c3dpdGgoJ18nKToKICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCiAgICAgICAgICAgICAgICAnYXR0ZW1wdCB0byBhY2Nlc3MgcHJpdmF0ZSBhdHRyaWJ1dGUgIiVzIicgJSBpCiAgICAgICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosaSkKICAgIHJldHVybiBvYmoKCmRlZiBsaXN0X3B1YmxpY19tZXRob2RzKG9iaik6CiAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBhdHRyaWJ1dGUgc3RyaW5ncywgZm91bmQgaW4gdGhlIHNwZWNpZmllZAogICAgb2JqZWN0LCB3aGljaCByZXByZXNlbnQgY2FsbGFibGUgYXR0cmlidXRlcyIiIgoKICAgIHJldHVybiBbbWVtYmVyIGZvciBtZW1iZXIgaW4gZGlyKG9iaikKICAgICAgICAgICAgICAgIGlmIG5vdCBtZW1iZXIuc3RhcnRzd2l0aCgnXycpIGFuZAogICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlKGdldGF0dHIob2JqLCBtZW1iZXIpKV0KCmNsYXNzIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXI6CiAgICAiIiJNaXgtaW4gY2xhc3MgdGhhdCBkaXNwYXRjaGVzIFhNTC1SUEMgcmVxdWVzdHMuCgogICAgVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHJlZ2lzdGVyIFhNTC1SUEMgbWV0aG9kIGhhbmRsZXJzCiAgICBhbmQgdGhlbiB0byBkaXNwYXRjaCB0aGVtLiBUaGlzIGNsYXNzIGRvZXNuJ3QgbmVlZCB0byBiZQogICAgaW5zdGFuY2VkIGRpcmVjdGx5IHdoZW4gdXNlZCBieSBTaW1wbGVYTUxSUENTZXJ2ZXIgYnV0IGl0CiAgICBjYW4gYmUgaW5zdGFuY2VkIHdoZW4gdXNlZCBieSB0aGUgTXVsdGlQYXRoWE1MUlBDU2VydmVyCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgc2VsZi5mdW5jcyA9IHt9CiAgICAgICAgc2VsZi5pbnN0YW5jZSA9IE5vbmUKICAgICAgICBzZWxmLmFsbG93X25vbmUgPSBhbGxvd19ub25lCiAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nIG9yICd1dGYtOCcKICAgICAgICBzZWxmLnVzZV9idWlsdGluX3R5cGVzID0gdXNlX2J1aWx0aW5fdHlwZXMKCiAgICBkZWYgcmVnaXN0ZXJfaW5zdGFuY2Uoc2VsZiwgaW5zdGFuY2UsIGFsbG93X2RvdHRlZF9uYW1lcz1GYWxzZSk6CiAgICAgICAgIiIiUmVnaXN0ZXJzIGFuIGluc3RhbmNlIHRvIHJlc3BvbmQgdG8gWE1MLVJQQyByZXF1ZXN0cy4KCiAgICAgICAgT25seSBvbmUgaW5zdGFuY2UgY2FuIGJlIGluc3RhbGxlZCBhdCBhIHRpbWUuCgogICAgICAgIElmIHRoZSByZWdpc3RlcmVkIGluc3RhbmNlIGhhcyBhIF9kaXNwYXRjaCBtZXRob2QgdGhlbiB0aGF0CiAgICAgICAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIFhNTC1SUEMgbWV0aG9kIGFuZAogICAgICAgIGl0cyBwYXJhbWV0ZXJzIGFzIGEgdHVwbGUKICAgICAgICBlLmcuIGluc3RhbmNlLl9kaXNwYXRjaCgnYWRkJywoMiwzKSkKCiAgICAgICAgSWYgdGhlIHJlZ2lzdGVyZWQgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBhIF9kaXNwYXRjaCBtZXRob2QKICAgICAgICB0aGVuIHRoZSBpbnN0YW5jZSB3aWxsIGJlIHNlYXJjaGVkIHRvIGZpbmQgYSBtYXRjaGluZyBtZXRob2QKICAgICAgICBhbmQsIGlmIGZvdW5kLCB3aWxsIGJlIGNhbGxlZC4gTWV0aG9kcyBiZWdpbm5pbmcgd2l0aCBhbiAnXycKICAgICAgICBhcmUgY29uc2lkZXJlZCBwcml2YXRlIGFuZCB3aWxsIG5vdCBiZSBjYWxsZWQgYnkKICAgICAgICBTaW1wbGVYTUxSUENTZXJ2ZXIuCgogICAgICAgIElmIGEgcmVnaXN0ZXJlZCBmdW5jdGlvbiBtYXRjaGVzIGFuIFhNTC1SUEMgcmVxdWVzdCwgdGhlbiBpdAogICAgICAgIHdpbGwgYmUgY2FsbGVkIGluc3RlYWQgb2YgdGhlIHJlZ2lzdGVyZWQgaW5zdGFuY2UuCgogICAgICAgIElmIHRoZSBvcHRpb25hbCBhbGxvd19kb3R0ZWRfbmFtZXMgYXJndW1lbnQgaXMgdHJ1ZSBhbmQgdGhlCiAgICAgICAgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBhIF9kaXNwYXRjaCBtZXRob2QsIG1ldGhvZCBuYW1lcwogICAgICAgIGNvbnRhaW5pbmcgZG90cyBhcmUgc3VwcG9ydGVkIGFuZCByZXNvbHZlZCwgYXMgbG9uZyBhcyBub25lIG9mCiAgICAgICAgdGhlIG5hbWUgc2VnbWVudHMgc3RhcnQgd2l0aCBhbiAnXycuCgogICAgICAgICAgICAqKiogU0VDVVJJVFkgV0FSTklORzogKioqCgogICAgICAgICAgICBFbmFibGluZyB0aGUgYWxsb3dfZG90dGVkX25hbWVzIG9wdGlvbnMgYWxsb3dzIGludHJ1ZGVycwogICAgICAgICAgICB0byBhY2Nlc3MgeW91ciBtb2R1bGUncyBnbG9iYWwgdmFyaWFibGVzIGFuZCBtYXkgYWxsb3cKICAgICAgICAgICAgaW50cnVkZXJzIHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgb24geW91ciBtYWNoaW5lLiAgT25seQogICAgICAgICAgICB1c2UgdGhpcyBvcHRpb24gb24gYSBzZWN1cmUsIGNsb3NlZCBuZXR3b3JrLgoKICAgICAgICAiIiIKCiAgICAgICAgc2VsZi5pbnN0YW5jZSA9IGluc3RhbmNlCiAgICAgICAgc2VsZi5hbGxvd19kb3R0ZWRfbmFtZXMgPSBhbGxvd19kb3R0ZWRfbmFtZXMKCiAgICBkZWYgcmVnaXN0ZXJfZnVuY3Rpb24oc2VsZiwgZnVuY3Rpb249Tm9uZSwgbmFtZT1Ob25lKToKICAgICAgICAiIiJSZWdpc3RlcnMgYSBmdW5jdGlvbiB0byByZXNwb25kIHRvIFhNTC1SUEMgcmVxdWVzdHMuCgogICAgICAgIFRoZSBvcHRpb25hbCBuYW1lIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHNldCBhIFVuaWNvZGUgbmFtZQogICAgICAgIGZvciB0aGUgZnVuY3Rpb24uCiAgICAgICAgIiIiCiAgICAgICAgIyBkZWNvcmF0b3IgZmFjdG9yeQogICAgICAgIGlmIGZ1bmN0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBwYXJ0aWFsKHNlbGYucmVnaXN0ZXJfZnVuY3Rpb24sIG5hbWU9bmFtZSkKCiAgICAgICAgaWYgbmFtZSBpcyBOb25lOgogICAgICAgICAgICBuYW1lID0gZnVuY3Rpb24uX19uYW1lX18KICAgICAgICBzZWxmLmZ1bmNzW25hbWVdID0gZnVuY3Rpb24KCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uCgogICAgZGVmIHJlZ2lzdGVyX2ludHJvc3BlY3Rpb25fZnVuY3Rpb25zKHNlbGYpOgogICAgICAgICIiIlJlZ2lzdGVycyB0aGUgWE1MLVJQQyBpbnRyb3NwZWN0aW9uIG1ldGhvZHMgaW4gdGhlIHN5c3RlbQogICAgICAgIG5hbWVzcGFjZS4KCiAgICAgICAgc2VlIGh0dHA6Ly94bWxycGMudXNlZnVsaW5jLmNvbS9kb2MvcmVzZXJ2ZWQuaHRtbAogICAgICAgICIiIgoKICAgICAgICBzZWxmLmZ1bmNzLnVwZGF0ZSh7J3N5c3RlbS5saXN0TWV0aG9kcycgOiBzZWxmLnN5c3RlbV9saXN0TWV0aG9kcywKICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW0ubWV0aG9kU2lnbmF0dXJlJyA6IHNlbGYuc3lzdGVtX21ldGhvZFNpZ25hdHVyZSwKICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW0ubWV0aG9kSGVscCcgOiBzZWxmLnN5c3RlbV9tZXRob2RIZWxwfSkKCiAgICBkZWYgcmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucyhzZWxmKToKICAgICAgICAiIiJSZWdpc3RlcnMgdGhlIFhNTC1SUEMgbXVsdGljYWxsIG1ldGhvZCBpbiB0aGUgc3lzdGVtCiAgICAgICAgbmFtZXNwYWNlLgoKICAgICAgICBzZWUgaHR0cDovL3d3dy54bWxycGMuY29tL2Rpc2N1c3MvbXNnUmVhZGVyJDEyMDgiIiIKCiAgICAgICAgc2VsZi5mdW5jcy51cGRhdGUoeydzeXN0ZW0ubXVsdGljYWxsJyA6IHNlbGYuc3lzdGVtX211bHRpY2FsbH0pCgogICAgZGVmIF9tYXJzaGFsZWRfZGlzcGF0Y2goc2VsZiwgZGF0YSwgZGlzcGF0Y2hfbWV0aG9kID0gTm9uZSwgcGF0aCA9IE5vbmUpOgogICAgICAgICIiIkRpc3BhdGNoZXMgYW4gWE1MLVJQQyBtZXRob2QgZnJvbSBtYXJzaGFsbGVkIChYTUwpIGRhdGEuCgogICAgICAgIFhNTC1SUEMgbWV0aG9kcyBhcmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBtYXJzaGFsbGVkIChYTUwpIGRhdGEKICAgICAgICB1c2luZyB0aGUgX2Rpc3BhdGNoIG1ldGhvZCBhbmQgdGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcwogICAgICAgIG1hcnNoYWxsZWQgZGF0YS4gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhIGRpc3BhdGNoCiAgICAgICAgZnVuY3Rpb24gY2FuIGJlIHByb3ZpZGVkIGFzIGFuIGFyZ3VtZW50IChzZWUgY29tbWVudCBpbgogICAgICAgIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLmRvX1BPU1QpIGJ1dCBvdmVycmlkaW5nIHRoZQogICAgICAgIGV4aXN0aW5nIG1ldGhvZCB0aHJvdWdoIHN1YmNsYXNzaW5nIGlzIHRoZSBwcmVmZXJyZWQgbWVhbnMKICAgICAgICBvZiBjaGFuZ2luZyBtZXRob2QgZGlzcGF0Y2ggYmVoYXZpb3IuCiAgICAgICAgIiIiCgogICAgICAgIHRyeToKICAgICAgICAgICAgcGFyYW1zLCBtZXRob2QgPSBsb2FkcyhkYXRhLCB1c2VfYnVpbHRpbl90eXBlcz1zZWxmLnVzZV9idWlsdGluX3R5cGVzKQoKICAgICAgICAgICAgIyBnZW5lcmF0ZSByZXNwb25zZQogICAgICAgICAgICBpZiBkaXNwYXRjaF9tZXRob2QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoX21ldGhvZChtZXRob2QsIHBhcmFtcykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fZGlzcGF0Y2gobWV0aG9kLCBwYXJhbXMpCiAgICAgICAgICAgICMgd3JhcCByZXNwb25zZSBpbiBhIHNpbmdsZXRvbiB0dXBsZQogICAgICAgICAgICByZXNwb25zZSA9IChyZXNwb25zZSwpCiAgICAgICAgICAgIHJlc3BvbnNlID0gZHVtcHMocmVzcG9uc2UsIG1ldGhvZHJlc3BvbnNlPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZT1zZWxmLmFsbG93X25vbmUsIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcpCiAgICAgICAgZXhjZXB0IEZhdWx0IGFzIGZhdWx0OgogICAgICAgICAgICByZXNwb25zZSA9IGR1bXBzKGZhdWx0LCBhbGxvd19ub25lPXNlbGYuYWxsb3dfbm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgcmVzcG9uc2UgPSBkdW1wcygKICAgICAgICAgICAgICAgIEZhdWx0KDEsICIlczolcyIgJSAodHlwZShleGMpLCBleGMpKSwKICAgICAgICAgICAgICAgIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcsIGFsbG93X25vbmU9c2VsZi5hbGxvd19ub25lLAogICAgICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4gcmVzcG9uc2UuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICd4bWxjaGFycmVmcmVwbGFjZScpCgogICAgZGVmIHN5c3RlbV9saXN0TWV0aG9kcyhzZWxmKToKICAgICAgICAiIiJzeXN0ZW0ubGlzdE1ldGhvZHMoKSA9PiBbJ2FkZCcsICdzdWJ0cmFjdCcsICdtdWx0aXBsZSddCgogICAgICAgIFJldHVybnMgYSBsaXN0IG9mIHRoZSBtZXRob2RzIHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLiIiIgoKICAgICAgICBtZXRob2RzID0gc2V0KHNlbGYuZnVuY3Mua2V5cygpKQogICAgICAgIGlmIHNlbGYuaW5zdGFuY2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICMgSW5zdGFuY2UgY2FuIGltcGxlbWVudCBfbGlzdE1ldGhvZCB0byByZXR1cm4gYSBsaXN0IG9mCiAgICAgICAgICAgICMgbWV0aG9kcwogICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuaW5zdGFuY2UsICdfbGlzdE1ldGhvZHMnKToKICAgICAgICAgICAgICAgIG1ldGhvZHMgfD0gc2V0KHNlbGYuaW5zdGFuY2UuX2xpc3RNZXRob2RzKCkpCiAgICAgICAgICAgICMgaWYgdGhlIGluc3RhbmNlIGhhcyBhIF9kaXNwYXRjaCBtZXRob2QgdGhlbiB3ZQogICAgICAgICAgICAjIGRvbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHByb3ZpZGUgYSBsaXN0CiAgICAgICAgICAgICMgb2YgbWV0aG9kcwogICAgICAgICAgICBlbGlmIG5vdCBoYXNhdHRyKHNlbGYuaW5zdGFuY2UsICdfZGlzcGF0Y2gnKToKICAgICAgICAgICAgICAgIG1ldGhvZHMgfD0gc2V0KGxpc3RfcHVibGljX21ldGhvZHMoc2VsZi5pbnN0YW5jZSkpCiAgICAgICAgcmV0dXJuIHNvcnRlZChtZXRob2RzKQoKICAgIGRlZiBzeXN0ZW1fbWV0aG9kU2lnbmF0dXJlKHNlbGYsIG1ldGhvZF9uYW1lKToKICAgICAgICAiIiJzeXN0ZW0ubWV0aG9kU2lnbmF0dXJlKCdhZGQnKSA9PiBbZG91YmxlLCBpbnQsIGludF0KCiAgICAgICAgUmV0dXJucyBhIGxpc3QgZGVzY3JpYmluZyB0aGUgc2lnbmF0dXJlIG9mIHRoZSBtZXRob2QuIEluIHRoZQogICAgICAgIGFib3ZlIGV4YW1wbGUsIHRoZSBhZGQgbWV0aG9kIHRha2VzIHR3byBpbnRlZ2VycyBhcyBhcmd1bWVudHMKICAgICAgICBhbmQgcmV0dXJucyBhIGRvdWJsZSByZXN1bHQuCgogICAgICAgIFRoaXMgc2VydmVyIGRvZXMgTk9UIHN1cHBvcnQgc3lzdGVtLm1ldGhvZFNpZ25hdHVyZS4iIiIKCiAgICAgICAgIyBTZWUgaHR0cDovL3htbHJwYy51c2VmdWxpbmMuY29tL2RvYy9zeXNtZXRob2RzaWcuaHRtbAoKICAgICAgICByZXR1cm4gJ3NpZ25hdHVyZXMgbm90IHN1cHBvcnRlZCcKCiAgICBkZWYgc3lzdGVtX21ldGhvZEhlbHAoc2VsZiwgbWV0aG9kX25hbWUpOgogICAgICAgICIiInN5c3RlbS5tZXRob2RIZWxwKCdhZGQnKSA9PiAiQWRkcyB0d28gaW50ZWdlcnMgdG9nZXRoZXIiCgogICAgICAgIFJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyBkb2N1bWVudGF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIG1ldGhvZC4iIiIKCiAgICAgICAgbWV0aG9kID0gTm9uZQogICAgICAgIGlmIG1ldGhvZF9uYW1lIGluIHNlbGYuZnVuY3M6CiAgICAgICAgICAgIG1ldGhvZCA9IHNlbGYuZnVuY3NbbWV0aG9kX25hbWVdCiAgICAgICAgZWxpZiBzZWxmLmluc3RhbmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAjIEluc3RhbmNlIGNhbiBpbXBsZW1lbnQgX21ldGhvZEhlbHAgdG8gcmV0dXJuIGhlbHAgZm9yIGEgbWV0aG9kCiAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5pbnN0YW5jZSwgJ19tZXRob2RIZWxwJyk6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbnN0YW5jZS5fbWV0aG9kSGVscChtZXRob2RfbmFtZSkKICAgICAgICAgICAgIyBpZiB0aGUgaW5zdGFuY2UgaGFzIGEgX2Rpc3BhdGNoIG1ldGhvZCB0aGVuIHdlCiAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gcHJvdmlkZSBoZWxwCiAgICAgICAgICAgIGVsaWYgbm90IGhhc2F0dHIoc2VsZi5pbnN0YW5jZSwgJ19kaXNwYXRjaCcpOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IHJlc29sdmVfZG90dGVkX2F0dHJpYnV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWxsb3dfZG90dGVkX25hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgIyBOb3RlIHRoYXQgd2UgYXJlbid0IGNoZWNraW5nIHRoYXQgdGhlIG1ldGhvZCBhY3R1YWxseQogICAgICAgICMgYmUgYSBjYWxsYWJsZSBvYmplY3Qgb2Ygc29tZSBraW5kCiAgICAgICAgaWYgbWV0aG9kIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBweWRvYy5nZXRkb2MobWV0aG9kKQoKICAgIGRlZiBzeXN0ZW1fbXVsdGljYWxsKHNlbGYsIGNhbGxfbGlzdCk6CiAgICAgICAgIiIic3lzdGVtLm11bHRpY2FsbChbeydtZXRob2ROYW1lJzogJ2FkZCcsICdwYXJhbXMnOiBbMiwgMl19LCAuLi5dKSA9PiBcCltbNF0sIC4uLl0KCiAgICAgICAgQWxsb3dzIHRoZSBjYWxsZXIgdG8gcGFja2FnZSBtdWx0aXBsZSBYTUwtUlBDIGNhbGxzIGludG8gYSBzaW5nbGUKICAgICAgICByZXF1ZXN0LgoKICAgICAgICBTZWUgaHR0cDovL3d3dy54bWxycGMuY29tL2Rpc2N1c3MvbXNnUmVhZGVyJDEyMDgKICAgICAgICAiIiIKCiAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgZm9yIGNhbGwgaW4gY2FsbF9saXN0OgogICAgICAgICAgICBtZXRob2RfbmFtZSA9IGNhbGxbJ21ldGhvZE5hbWUnXQogICAgICAgICAgICBwYXJhbXMgPSBjYWxsWydwYXJhbXMnXQoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIyBYWFggQSBtYXJzaGFsbGluZyBlcnJvciBpbiBhbnkgcmVzcG9uc2Ugd2lsbCBmYWlsIHRoZSBlbnRpcmUKICAgICAgICAgICAgICAgICMgbXVsdGljYWxsLiBJZiBzb21lb25lIGNhcmVzIHRoZXkgc2hvdWxkIGZpeCB0aGlzLgogICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoW3NlbGYuX2Rpc3BhdGNoKG1ldGhvZF9uYW1lLCBwYXJhbXMpXSkKICAgICAgICAgICAgZXhjZXB0IEZhdWx0IGFzIGZhdWx0OgogICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgeydmYXVsdENvZGUnIDogZmF1bHQuZmF1bHRDb2RlLAogICAgICAgICAgICAgICAgICAgICAnZmF1bHRTdHJpbmcnIDogZmF1bHQuZmF1bHRTdHJpbmd9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICB7J2ZhdWx0Q29kZScgOiAxLAogICAgICAgICAgICAgICAgICAgICAnZmF1bHRTdHJpbmcnIDogIiVzOiVzIiAlICh0eXBlKGV4YyksIGV4Yyl9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgIHJldHVybiByZXN1bHRzCgogICAgZGVmIF9kaXNwYXRjaChzZWxmLCBtZXRob2QsIHBhcmFtcyk6CiAgICAgICAgIiIiRGlzcGF0Y2hlcyB0aGUgWE1MLVJQQyBtZXRob2QuCgogICAgICAgIFhNTC1SUEMgY2FsbHMgYXJlIGZvcndhcmRlZCB0byBhIHJlZ2lzdGVyZWQgZnVuY3Rpb24gdGhhdAogICAgICAgIG1hdGNoZXMgdGhlIGNhbGxlZCBYTUwtUlBDIG1ldGhvZCBuYW1lLiBJZiBubyBzdWNoIGZ1bmN0aW9uCiAgICAgICAgZXhpc3RzIHRoZW4gdGhlIGNhbGwgaXMgZm9yd2FyZGVkIHRvIHRoZSByZWdpc3RlcmVkIGluc3RhbmNlLAogICAgICAgIGlmIGF2YWlsYWJsZS4KCiAgICAgICAgSWYgdGhlIHJlZ2lzdGVyZWQgaW5zdGFuY2UgaGFzIGEgX2Rpc3BhdGNoIG1ldGhvZCB0aGVuIHRoYXQKICAgICAgICBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgWE1MLVJQQyBtZXRob2QgYW5kCiAgICAgICAgaXRzIHBhcmFtZXRlcnMgYXMgYSB0dXBsZQogICAgICAgIGUuZy4gaW5zdGFuY2UuX2Rpc3BhdGNoKCdhZGQnLCgyLDMpKQoKICAgICAgICBJZiB0aGUgcmVnaXN0ZXJlZCBpbnN0YW5jZSBkb2VzIG5vdCBoYXZlIGEgX2Rpc3BhdGNoIG1ldGhvZAogICAgICAgIHRoZW4gdGhlIGluc3RhbmNlIHdpbGwgYmUgc2VhcmNoZWQgdG8gZmluZCBhIG1hdGNoaW5nIG1ldGhvZAogICAgICAgIGFuZCwgaWYgZm91bmQsIHdpbGwgYmUgY2FsbGVkLgoKICAgICAgICBNZXRob2RzIGJlZ2lubmluZyB3aXRoIGFuICdfJyBhcmUgY29uc2lkZXJlZCBwcml2YXRlIGFuZCB3aWxsCiAgICAgICAgbm90IGJlIGNhbGxlZC4KICAgICAgICAiIiIKCiAgICAgICAgdHJ5OgogICAgICAgICAgICAjIGNhbGwgdGhlIG1hdGNoaW5nIHJlZ2lzdGVyZWQgZnVuY3Rpb24KICAgICAgICAgICAgZnVuYyA9IHNlbGYuZnVuY3NbbWV0aG9kXQogICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgcGFzcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlmIGZ1bmMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqcGFyYW1zKQogICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ21ldGhvZCAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQnICUgbWV0aG9kKQoKICAgICAgICBpZiBzZWxmLmluc3RhbmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuaW5zdGFuY2UsICdfZGlzcGF0Y2gnKToKICAgICAgICAgICAgICAgICMgY2FsbCB0aGUgYF9kaXNwYXRjaGAgbWV0aG9kIG9uIHRoZSBpbnN0YW5jZQogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5zdGFuY2UuX2Rpc3BhdGNoKG1ldGhvZCwgcGFyYW1zKQoKICAgICAgICAgICAgIyBjYWxsIHRoZSBpbnN0YW5jZSdzIG1ldGhvZCBkaXJlY3RseQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBmdW5jID0gcmVzb2x2ZV9kb3R0ZWRfYXR0cmlidXRlKAogICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgbWV0aG9kLAogICAgICAgICAgICAgICAgICAgIHNlbGYuYWxsb3dfZG90dGVkX25hbWVzCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGlmIGZ1bmMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKnBhcmFtcykKCiAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdtZXRob2QgIiVzIiBpcyBub3Qgc3VwcG9ydGVkJyAlIG1ldGhvZCkKCmNsYXNzIFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgIiIiU2ltcGxlIFhNTC1SUEMgcmVxdWVzdCBoYW5kbGVyIGNsYXNzLgoKICAgIEhhbmRsZXMgYWxsIEhUVFAgUE9TVCByZXF1ZXN0cyBhbmQgYXR0ZW1wdHMgdG8gZGVjb2RlIHRoZW0gYXMKICAgIFhNTC1SUEMgcmVxdWVzdHMuCiAgICAiIiIKCiAgICAjIENsYXNzIGF0dHJpYnV0ZSBsaXN0aW5nIHRoZSBhY2Nlc3NpYmxlIHBhdGggY29tcG9uZW50czsKICAgICMgcGF0aHMgbm90IG9uIHRoaXMgbGlzdCB3aWxsIHJlc3VsdCBpbiBhIDQwNCBlcnJvci4KICAgIHJwY19wYXRocyA9ICgnLycsICcvUlBDMicsICcvcHlkb2MuY3NzJykKCiAgICAjaWYgbm90IE5vbmUsIGVuY29kZSByZXNwb25zZXMgbGFyZ2VyIHRoYW4gdGhpcywgaWYgcG9zc2libGUKICAgIGVuY29kZV90aHJlc2hvbGQgPSAxNDAwICNhIGNvbW1vbiBNVFUKCiAgICAjT3ZlcnJpZGUgZm9ybSBTdHJlYW1SZXF1ZXN0SGFuZGxlcjogZnVsbCBidWZmZXJpbmcgb2Ygb3V0cHV0CiAgICAjYW5kIG5vIE5hZ2xlLgogICAgd2J1ZnNpemUgPSAtMQogICAgZGlzYWJsZV9uYWdsZV9hbGdvcml0aG0gPSBUcnVlCgogICAgIyBhIHJlIHRvIG1hdGNoIGEgZ3ppcCBBY2NlcHQtRW5jb2RpbmcKICAgIGFlcGF0dGVybiA9IHJlLmNvbXBpbGUociIiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgXHMqIChbXlxzO10rKSBccyogICAgICAgICAgICAjY29udGVudC1jb2RpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICg7XHMqIHEgXHMqPVxzKiAoWzAtOVwuXSspKT8gI3EKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiIiwgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UpCgogICAgZGVmIGFjY2VwdF9lbmNvZGluZ3Moc2VsZik6CiAgICAgICAgciA9IHt9CiAgICAgICAgYWUgPSBzZWxmLmhlYWRlcnMuZ2V0KCJBY2NlcHQtRW5jb2RpbmciLCAiIikKICAgICAgICBmb3IgZSBpbiBhZS5zcGxpdCgiLCIpOgogICAgICAgICAgICBtYXRjaCA9IHNlbGYuYWVwYXR0ZXJuLm1hdGNoKGUpCiAgICAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgdiA9IG1hdGNoLmdyb3VwKDMpCiAgICAgICAgICAgICAgICB2ID0gZmxvYXQodikgaWYgdiBlbHNlIDEuMAogICAgICAgICAgICAgICAgclttYXRjaC5ncm91cCgxKV0gPSB2CiAgICAgICAgcmV0dXJuIHIKCiAgICBkZWYgaXNfcnBjX3BhdGhfdmFsaWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5ycGNfcGF0aHM6CiAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGggaW4gc2VsZi5ycGNfcGF0aHMKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIElmIC5ycGNfcGF0aHMgaXMgZW1wdHksIGp1c3QgYXNzdW1lIGFsbCBwYXRocyBhcmUgbGVnYWwKICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgZG9fUE9TVChzZWxmKToKICAgICAgICAiIiJIYW5kbGVzIHRoZSBIVFRQIFBPU1QgcmVxdWVzdC4KCiAgICAgICAgQXR0ZW1wdHMgdG8gaW50ZXJwcmV0IGFsbCBIVFRQIFBPU1QgcmVxdWVzdHMgYXMgWE1MLVJQQyBjYWxscywKICAgICAgICB3aGljaCBhcmUgZm9yd2FyZGVkIHRvIHRoZSBzZXJ2ZXIncyBfZGlzcGF0Y2ggbWV0aG9kIGZvciBoYW5kbGluZy4KICAgICAgICAiIiIKCiAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBwYXRoIGlzIGxlZ2FsCiAgICAgICAgaWYgbm90IHNlbGYuaXNfcnBjX3BhdGhfdmFsaWQoKToKICAgICAgICAgICAgc2VsZi5yZXBvcnRfNDA0KCkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHRyeToKICAgICAgICAgICAgIyBHZXQgYXJndW1lbnRzIGJ5IHJlYWRpbmcgYm9keSBvZiByZXF1ZXN0LgogICAgICAgICAgICAjIFdlIHJlYWQgdGhpcyBpbiBjaHVua3MgdG8gYXZvaWQgc3RyYWluaW5nCiAgICAgICAgICAgICMgc29ja2V0LnJlYWQoKTsgYXJvdW5kIHRoZSAxMCBvciAxNU1iIG1hcmssIHNvbWUgcGxhdGZvcm1zCiAgICAgICAgICAgICMgYmVnaW4gdG8gaGF2ZSBwcm9ibGVtcyAoYnVnICM3OTI1NzApLgogICAgICAgICAgICBtYXhfY2h1bmtfc2l6ZSA9IDEwKjEwMjQqMTAyNAogICAgICAgICAgICBzaXplX3JlbWFpbmluZyA9IGludChzZWxmLmhlYWRlcnNbImNvbnRlbnQtbGVuZ3RoIl0pCiAgICAgICAgICAgIEwgPSBbXQogICAgICAgICAgICB3aGlsZSBzaXplX3JlbWFpbmluZzoKICAgICAgICAgICAgICAgIGNodW5rX3NpemUgPSBtaW4oc2l6ZV9yZW1haW5pbmcsIG1heF9jaHVua19zaXplKQogICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJmaWxlLnJlYWQoY2h1bmtfc2l6ZSkKICAgICAgICAgICAgICAgIGlmIG5vdCBjaHVuazoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgTC5hcHBlbmQoY2h1bmspCiAgICAgICAgICAgICAgICBzaXplX3JlbWFpbmluZyAtPSBsZW4oTFstMV0pCiAgICAgICAgICAgIGRhdGEgPSBiJycuam9pbihMKQoKICAgICAgICAgICAgZGF0YSA9IHNlbGYuZGVjb2RlX3JlcXVlc3RfY29udGVudChkYXRhKQogICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICAgICByZXR1cm4gI3Jlc3BvbnNlIGhhcyBiZWVuIHNlbnQKCiAgICAgICAgICAgICMgSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgU2ltcGxlWE1MUlBDU2VydmVyLCBfZGlzcGF0Y2gKICAgICAgICAgICAgIyBjb3VsZCBiZSBvdmVycmlkZGVuIGluIHRoaXMgY2xhc3MsIGluc3RlYWQgb2YgaW4KICAgICAgICAgICAgIyBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLiBUbyBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwKICAgICAgICAgICAgIyBjaGVjayB0byBzZWUgaWYgYSBzdWJjbGFzcyBpbXBsZW1lbnRzIF9kaXNwYXRjaCBhbmQgZGlzcGF0Y2gKICAgICAgICAgICAgIyB1c2luZyB0aGF0IG1ldGhvZCBpZiBwcmVzZW50LgogICAgICAgICAgICByZXNwb25zZSA9IHNlbGYuc2VydmVyLl9tYXJzaGFsZWRfZGlzcGF0Y2goCiAgICAgICAgICAgICAgICAgICAgZGF0YSwgZ2V0YXR0cihzZWxmLCAnX2Rpc3BhdGNoJywgTm9uZSksIHNlbGYucGF0aAogICAgICAgICAgICAgICAgKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogIyBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgbW9kdWxlIGlzIGJ1Z2d5CiAgICAgICAgICAgICMgaW50ZXJuYWwgZXJyb3IsIHJlcG9ydCBhcyBIVFRQIHNlcnZlciBlcnJvcgogICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoNTAwKQoKICAgICAgICAgICAgIyBTZW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBleGNlcHRpb24gaWYgcmVxdWVzdGVkCiAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5zZXJ2ZXIsICdfc2VuZF90cmFjZWJhY2tfaGVhZGVyJykgYW5kIFwKICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5fc2VuZF90cmFjZWJhY2tfaGVhZGVyOgogICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiWC1leGNlcHRpb24iLCBzdHIoZSkpCiAgICAgICAgICAgICAgICB0cmFjZSA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKICAgICAgICAgICAgICAgIHRyYWNlID0gc3RyKHRyYWNlLmVuY29kZSgnQVNDSUknLCAnYmFja3NsYXNocmVwbGFjZScpLCAnQVNDSUknKQogICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiWC10cmFjZWJhY2siLCB0cmFjZSkKCiAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIiwgIjAiKQogICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQogICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCAidGV4dC94bWwiKQogICAgICAgICAgICBpZiBzZWxmLmVuY29kZV90aHJlc2hvbGQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICBpZiBsZW4ocmVzcG9uc2UpID4gc2VsZi5lbmNvZGVfdGhyZXNob2xkOgogICAgICAgICAgICAgICAgICAgIHEgPSBzZWxmLmFjY2VwdF9lbmNvZGluZ3MoKS5nZXQoImd6aXAiLCAwKQogICAgICAgICAgICAgICAgICAgIGlmIHE6CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZ3ppcF9lbmNvZGUocmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LUVuY29kaW5nIiwgImd6aXAiKQogICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1sZW5ndGgiLCBzdHIobGVuKHJlc3BvbnNlKSkpCiAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKHJlc3BvbnNlKQoKICAgIGRlZiBkZWNvZGVfcmVxdWVzdF9jb250ZW50KHNlbGYsIGRhdGEpOgogICAgICAgICNzdXBwb3J0IGd6aXAgZW5jb2Rpbmcgb2YgcmVxdWVzdAogICAgICAgIGVuY29kaW5nID0gc2VsZi5oZWFkZXJzLmdldCgiY29udGVudC1lbmNvZGluZyIsICJpZGVudGl0eSIpLmxvd2VyKCkKICAgICAgICBpZiBlbmNvZGluZyA9PSAiaWRlbnRpdHkiOgogICAgICAgICAgICByZXR1cm4gZGF0YQogICAgICAgIGlmIGVuY29kaW5nID09ICJnemlwIjoKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgcmV0dXJuIGd6aXBfZGVjb2RlKGRhdGEpCiAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDUwMSwgImVuY29kaW5nICVyIG5vdCBzdXBwb3J0ZWQiICUgZW5jb2RpbmcpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDQwMCwgImVycm9yIGRlY29kaW5nIGd6aXAgY29udGVudCIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDUwMSwgImVuY29kaW5nICVyIG5vdCBzdXBwb3J0ZWQiICUgZW5jb2RpbmcpCiAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1sZW5ndGgiLCAiMCIpCiAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCgogICAgZGVmIHJlcG9ydF80MDQgKHNlbGYpOgogICAgICAgICAgICAjIFJlcG9ydCBhIDQwNCBlcnJvcgogICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSg0MDQpCiAgICAgICAgcmVzcG9uc2UgPSBiJ05vIHN1Y2ggcGFnZScKICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCAidGV4dC9wbGFpbiIpCiAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1sZW5ndGgiLCBzdHIobGVuKHJlc3BvbnNlKSkpCiAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCiAgICAgICAgc2VsZi53ZmlsZS53cml0ZShyZXNwb25zZSkKCiAgICBkZWYgbG9nX3JlcXVlc3Qoc2VsZiwgY29kZT0nLScsIHNpemU9Jy0nKToKICAgICAgICAiIiJTZWxlY3RpdmVseSBsb2cgYW4gYWNjZXB0ZWQgcmVxdWVzdC4iIiIKCiAgICAgICAgaWYgc2VsZi5zZXJ2ZXIubG9nUmVxdWVzdHM6CiAgICAgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIubG9nX3JlcXVlc3Qoc2VsZiwgY29kZSwgc2l6ZSkKCmNsYXNzIFNpbXBsZVhNTFJQQ1NlcnZlcihzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlcik6CiAgICAiIiJTaW1wbGUgWE1MLVJQQyBzZXJ2ZXIuCgogICAgU2ltcGxlIFhNTC1SUEMgc2VydmVyIHRoYXQgYWxsb3dzIGZ1bmN0aW9ucyBhbmQgYSBzaW5nbGUgaW5zdGFuY2UKICAgIHRvIGJlIGluc3RhbGxlZCB0byBoYW5kbGUgcmVxdWVzdHMuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAgICBhdHRlbXB0cyB0byBkaXNwYXRjaCBYTUwtUlBDIGNhbGxzIHRvIHRoZSBmdW5jdGlvbnMgb3IgaW5zdGFuY2UKICAgIGluc3RhbGxlZCBpbiB0aGUgc2VydmVyLiBPdmVycmlkZSB0aGUgX2Rpc3BhdGNoIG1ldGhvZCBpbmhlcml0ZWQKICAgIGZyb20gU2ltcGxlWE1MUlBDRGlzcGF0Y2hlciB0byBjaGFuZ2UgdGhpcyBiZWhhdmlvci4KICAgICIiIgoKICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSBUcnVlCgogICAgIyBXYXJuaW5nOiB0aGlzIGlzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgb25seSEgTmV2ZXIgc2V0IHRoaXMgdG8gVHJ1ZSBpbgogICAgIyBwcm9kdWN0aW9uIGNvZGUsIGFzIHdpbGwgYmUgc2VuZGluZyBvdXQgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIChleGNlcHRpb24KICAgICMgYW5kIHN0YWNrIHRyYWNlIGRldGFpbHMpIHdoZW4gZXhjZXB0aW9ucyBhcmUgcmFpc2VkIGluc2lkZQogICAgIyBTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlci5kb19QT1NUCiAgICBfc2VuZF90cmFjZWJhY2tfaGVhZGVyID0gRmFsc2UKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsCiAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgc2VsZi5sb2dSZXF1ZXN0cyA9IGxvZ1JlcXVlc3RzCgogICAgICAgIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXIsIGJpbmRfYW5kX2FjdGl2YXRlKQoKCmNsYXNzIE11bHRpUGF0aFhNTFJQQ1NlcnZlcihTaW1wbGVYTUxSUENTZXJ2ZXIpOgogICAgIiIiTXVsdGlwYXRoIFhNTC1SUEMgU2VydmVyCiAgICBUaGlzIHNwZWNpYWxpemF0aW9uIG9mIFNpbXBsZVhNTFJQQ1NlcnZlciBhbGxvd3MgdGhlIHVzZXIgdG8gY3JlYXRlCiAgICBtdWx0aXBsZSBEaXNwYXRjaGVyIGluc3RhbmNlcyBhbmQgYXNzaWduIHRoZW0gdG8gZGlmZmVyZW50CiAgICBIVFRQIHJlcXVlc3QgcGF0aHMuICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJ1biB0d28gb3IgbW9yZQogICAgJ3ZpcnR1YWwgWE1MLVJQQyBzZXJ2ZXJzJyBhdCB0aGUgc2FtZSBwb3J0LgogICAgTWFrZSBzdXJlIHRoYXQgdGhlIHJlcXVlc3RIYW5kbGVyIGFjY2VwdHMgdGhlIHBhdGhzIGluIHF1ZXN0aW9uLgogICAgIiIiCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsCiAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CgogICAgICAgIFNpbXBsZVhNTFJQQ1NlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHMsIGFsbG93X25vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSwgdXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgc2VsZi5kaXNwYXRjaGVycyA9IHt9CiAgICAgICAgc2VsZi5hbGxvd19ub25lID0gYWxsb3dfbm9uZQogICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZyBvciAndXRmLTgnCgogICAgZGVmIGFkZF9kaXNwYXRjaGVyKHNlbGYsIHBhdGgsIGRpc3BhdGNoZXIpOgogICAgICAgIHNlbGYuZGlzcGF0Y2hlcnNbcGF0aF0gPSBkaXNwYXRjaGVyCiAgICAgICAgcmV0dXJuIGRpc3BhdGNoZXIKCiAgICBkZWYgZ2V0X2Rpc3BhdGNoZXIoc2VsZiwgcGF0aCk6CiAgICAgICAgcmV0dXJuIHNlbGYuZGlzcGF0Y2hlcnNbcGF0aF0KCiAgICBkZWYgX21hcnNoYWxlZF9kaXNwYXRjaChzZWxmLCBkYXRhLCBkaXNwYXRjaF9tZXRob2QgPSBOb25lLCBwYXRoID0gTm9uZSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICByZXNwb25zZSA9IHNlbGYuZGlzcGF0Y2hlcnNbcGF0aF0uX21hcnNoYWxlZF9kaXNwYXRjaCgKICAgICAgICAgICAgICAgZGF0YSwgZGlzcGF0Y2hfbWV0aG9kLCBwYXRoKQogICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgIyByZXBvcnQgbG93IGxldmVsIGV4Y2VwdGlvbiBiYWNrIHRvIHNlcnZlcgogICAgICAgICAgICAjIChlYWNoIGRpc3BhdGNoZXIgc2hvdWxkIGhhdmUgaGFuZGxlZCB0aGVpciBvd24KICAgICAgICAgICAgIyBleGNlcHRpb25zKQogICAgICAgICAgICByZXNwb25zZSA9IGR1bXBzKAogICAgICAgICAgICAgICAgRmF1bHQoMSwgIiVzOiVzIiAlICh0eXBlKGV4YyksIGV4YykpLAogICAgICAgICAgICAgICAgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZywgYWxsb3dfbm9uZT1zZWxmLmFsbG93X25vbmUpCiAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2UuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICd4bWxjaGFycmVmcmVwbGFjZScpCiAgICAgICAgcmV0dXJuIHJlc3BvbnNlCgpjbGFzcyBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcihTaW1wbGVYTUxSUENEaXNwYXRjaGVyKToKICAgICIiIlNpbXBsZSBoYW5kbGVyIGZvciBYTUwtUlBDIGRhdGEgcGFzc2VkIHRocm91Z2ggQ0dJLiIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBhbGxvd19ub25lLCBlbmNvZGluZywgdXNlX2J1aWx0aW5fdHlwZXMpCgogICAgZGVmIGhhbmRsZV94bWxycGMoc2VsZiwgcmVxdWVzdF90ZXh0KToKICAgICAgICAiIiJIYW5kbGUgYSBzaW5nbGUgWE1MLVJQQyByZXF1ZXN0IiIiCgogICAgICAgIHJlc3BvbnNlID0gc2VsZi5fbWFyc2hhbGVkX2Rpc3BhdGNoKHJlcXVlc3RfdGV4dCkKCiAgICAgICAgcHJpbnQoJ0NvbnRlbnQtVHlwZTogdGV4dC94bWwnKQogICAgICAgIHByaW50KCdDb250ZW50LUxlbmd0aDogJWQnICUgbGVuKHJlc3BvbnNlKSkKICAgICAgICBwcmludCgpCiAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUocmVzcG9uc2UpCiAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIuZmx1c2goKQoKICAgIGRlZiBoYW5kbGVfZ2V0KHNlbGYpOgogICAgICAgICIiIkhhbmRsZSBhIHNpbmdsZSBIVFRQIEdFVCByZXF1ZXN0LgoKICAgICAgICBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGluZGljYXRlcyBhbiBlcnJvciBiZWNhdXNlCiAgICAgICAgWE1MLVJQQyB1c2VzIHRoZSBQT1NUIG1ldGhvZC4KICAgICAgICAiIiIKCiAgICAgICAgY29kZSA9IDQwMAogICAgICAgIG1lc3NhZ2UsIGV4cGxhaW4gPSBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLnJlc3BvbnNlc1tjb2RlXQoKICAgICAgICByZXNwb25zZSA9IGh0dHAuc2VydmVyLkRFRkFVTFRfRVJST1JfTUVTU0FHRSAlIFwKICAgICAgICAgICAgewogICAgICAgICAgICAgJ2NvZGUnIDogY29kZSwKICAgICAgICAgICAgICdtZXNzYWdlJyA6IG1lc3NhZ2UsCiAgICAgICAgICAgICAnZXhwbGFpbicgOiBleHBsYWluCiAgICAgICAgICAgIH0KICAgICAgICByZXNwb25zZSA9IHJlc3BvbnNlLmVuY29kZSgndXRmLTgnKQogICAgICAgIHByaW50KCdTdGF0dXM6ICVkICVzJyAlIChjb2RlLCBtZXNzYWdlKSkKICAgICAgICBwcmludCgnQ29udGVudC1UeXBlOiAlcycgJSBodHRwLnNlcnZlci5ERUZBVUxUX0VSUk9SX0NPTlRFTlRfVFlQRSkKICAgICAgICBwcmludCgnQ29udGVudC1MZW5ndGg6ICVkJyAlIGxlbihyZXNwb25zZSkpCiAgICAgICAgcHJpbnQoKQogICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKHJlc3BvbnNlKQogICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLmZsdXNoKCkKCiAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdF90ZXh0PU5vbmUpOgogICAgICAgICIiIkhhbmRsZSBhIHNpbmdsZSBYTUwtUlBDIHJlcXVlc3QgcGFzc2VkIHRocm91Z2ggYSBDR0kgcG9zdCBtZXRob2QuCgogICAgICAgIElmIG5vIFhNTCBkYXRhIGlzIGdpdmVuIHRoZW4gaXQgaXMgcmVhZCBmcm9tIHN0ZGluLiBUaGUgcmVzdWx0aW5nCiAgICAgICAgWE1MLVJQQyByZXNwb25zZSBpcyBwcmludGVkIHRvIHN0ZG91dCBhbG9uZyB3aXRoIHRoZSBjb3JyZWN0IEhUVFAKICAgICAgICBoZWFkZXJzLgogICAgICAgICIiIgoKICAgICAgICBpZiByZXF1ZXN0X3RleHQgaXMgTm9uZSBhbmQgXAogICAgICAgICAgICBvcy5lbnZpcm9uLmdldCgnUkVRVUVTVF9NRVRIT0QnLCBOb25lKSA9PSAnR0VUJzoKICAgICAgICAgICAgc2VsZi5oYW5kbGVfZ2V0KCkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFBPU1QgZGF0YSBpcyBub3JtYWxseSBhdmFpbGFibGUgdGhyb3VnaCBzdGRpbgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsZW5ndGggPSBpbnQob3MuZW52aXJvbi5nZXQoJ0NPTlRFTlRfTEVOR1RIJywgTm9uZSkpCiAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKICAgICAgICAgICAgICAgIGxlbmd0aCA9IC0xCiAgICAgICAgICAgIGlmIHJlcXVlc3RfdGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgcmVxdWVzdF90ZXh0ID0gc3lzLnN0ZGluLnJlYWQobGVuZ3RoKQoKICAgICAgICAgICAgc2VsZi5oYW5kbGVfeG1scnBjKHJlcXVlc3RfdGV4dCkKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgU2VsZiBkb2N1bWVudGluZyBYTUwtUlBDIFNlcnZlci4KCmNsYXNzIFNlcnZlckhUTUxEb2MocHlkb2MuSFRNTERvYyk6CiAgICAiIiJDbGFzcyB1c2VkIHRvIGdlbmVyYXRlIHB5ZG9jIEhUTUwgZG9jdW1lbnQgZm9yIGEgc2VydmVyIiIiCgogICAgZGVmIG1hcmt1cChzZWxmLCB0ZXh0LCBlc2NhcGU9Tm9uZSwgZnVuY3M9e30sIGNsYXNzZXM9e30sIG1ldGhvZHM9e30pOgogICAgICAgICIiIk1hcmsgdXAgc29tZSBwbGFpbiB0ZXh0LCBnaXZlbiBhIGNvbnRleHQgb2Ygc3ltYm9scyB0byBsb29rIGZvci4KICAgICAgICBFYWNoIGNvbnRleHQgZGljdGlvbmFyeSBtYXBzIG9iamVjdCBuYW1lcyB0byBhbmNob3IgbmFtZXMuIiIiCiAgICAgICAgZXNjYXBlID0gZXNjYXBlIG9yIHNlbGYuZXNjYXBlCiAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgaGVyZSA9IDAKCiAgICAgICAgIyBYWFggTm90ZSB0aGF0IHRoaXMgcmVndWxhciBleHByZXNzaW9uIGRvZXMgbm90IGFsbG93IGZvciB0aGUKICAgICAgICAjIGh5cGVybGlua2luZyBvZiBhcmJpdHJhcnkgc3RyaW5ncyBiZWluZyB1c2VkIGFzIG1ldGhvZAogICAgICAgICMgbmFtZXMuIE9ubHkgbWV0aG9kcyB3aXRoIG5hbWVzIGNvbnNpc3Rpbmcgb2Ygd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgIyBhbmQgJy4ncyBhcmUgaHlwZXJsaW5rZWQuCiAgICAgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUocidcYigoaHR0cHxodHRwc3xmdHApOi8vXFMrW1x3L118JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInUkZDWy0gXT8oXGQrKXwnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidQRVBbLSBdPyhcZCspfCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhzZWxmXC4pPygoPzpcd3xcLikrKSlcYicpCiAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgbWF0Y2ggPSBwYXR0ZXJuLnNlYXJjaCh0ZXh0LCBoZXJlKQogICAgICAgICAgICBpZiBub3QgbWF0Y2g6IGJyZWFrCiAgICAgICAgICAgIHN0YXJ0LCBlbmQgPSBtYXRjaC5zcGFuKCkKICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoZXNjYXBlKHRleHRbaGVyZTpzdGFydF0pKQoKICAgICAgICAgICAgYWxsLCBzY2hlbWUsIHJmYywgcGVwLCBzZWxmZG90LCBuYW1lID0gbWF0Y2guZ3JvdXBzKCkKICAgICAgICAgICAgaWYgc2NoZW1lOgogICAgICAgICAgICAgICAgdXJsID0gZXNjYXBlKGFsbCkucmVwbGFjZSgnIicsICcmcXVvdDsnKQogICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoJzxhIGhyZWY9IiVzIj4lczwvYT4nICUgKHVybCwgdXJsKSkKICAgICAgICAgICAgZWxpZiByZmM6CiAgICAgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYyVkLnR4dCcgJSBpbnQocmZjKQogICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoJzxhIGhyZWY9IiVzIj4lczwvYT4nICUgKHVybCwgZXNjYXBlKGFsbCkpKQogICAgICAgICAgICBlbGlmIHBlcDoKICAgICAgICAgICAgICAgIHVybCA9ICdodHRwczovL3BlcHMucHl0aG9uLm9yZy9wZXAtJTA0ZC8nICUgaW50KHBlcCkKICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCc8YSBocmVmPSIlcyI+JXM8L2E+JyAlICh1cmwsIGVzY2FwZShhbGwpKSkKICAgICAgICAgICAgZWxpZiB0ZXh0W2VuZDplbmQrMV0gPT0gJygnOgogICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoc2VsZi5uYW1lbGluayhuYW1lLCBtZXRob2RzLCBmdW5jcywgY2xhc3NlcykpCiAgICAgICAgICAgIGVsaWYgc2VsZmRvdDoKICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCdzZWxmLjxzdHJvbmc+JXM8L3N0cm9uZz4nICUgbmFtZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHNlbGYubmFtZWxpbmsobmFtZSwgY2xhc3NlcykpCiAgICAgICAgICAgIGhlcmUgPSBlbmQKICAgICAgICByZXN1bHRzLmFwcGVuZChlc2NhcGUodGV4dFtoZXJlOl0pKQogICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdHMpCgogICAgZGVmIGRvY3JvdXRpbmUoc2VsZiwgb2JqZWN0LCBuYW1lLCBtb2Q9Tm9uZSwKICAgICAgICAgICAgICAgICAgIGZ1bmNzPXt9LCBjbGFzc2VzPXt9LCBtZXRob2RzPXt9LCBjbD1Ob25lKToKICAgICAgICAiIiJQcm9kdWNlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgYSBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LiIiIgoKICAgICAgICBhbmNob3IgPSAoY2wgYW5kIGNsLl9fbmFtZV9fIG9yICcnKSArICctJyArIG5hbWUKICAgICAgICBub3RlID0gJycKCiAgICAgICAgdGl0bGUgPSAnPGEgbmFtZT0iJXMiPjxzdHJvbmc+JXM8L3N0cm9uZz48L2E+JyAlICgKICAgICAgICAgICAgc2VsZi5lc2NhcGUoYW5jaG9yKSwgc2VsZi5lc2NhcGUobmFtZSkpCgogICAgICAgIGlmIGNhbGxhYmxlKG9iamVjdCk6CiAgICAgICAgICAgIGFyZ3NwZWMgPSBzdHIoc2lnbmF0dXJlKG9iamVjdCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYXJnc3BlYyA9ICcoLi4uKScKCiAgICAgICAgaWYgaXNpbnN0YW5jZShvYmplY3QsIHR1cGxlKToKICAgICAgICAgICAgYXJnc3BlYyA9IG9iamVjdFswXSBvciBhcmdzcGVjCiAgICAgICAgICAgIGRvY3N0cmluZyA9IG9iamVjdFsxXSBvciAiIgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRvY3N0cmluZyA9IHB5ZG9jLmdldGRvYyhvYmplY3QpCgogICAgICAgIGRlY2wgPSB0aXRsZSArIGFyZ3NwZWMgKyAobm90ZSBhbmQgc2VsZi5ncmV5KAogICAgICAgICAgICAgICAnPGZvbnQgZmFjZT0iaGVsdmV0aWNhLCBhcmlhbCI+JXM8L2ZvbnQ+JyAlIG5vdGUpKQoKICAgICAgICBkb2MgPSBzZWxmLm1hcmt1cCgKICAgICAgICAgICAgZG9jc3RyaW5nLCBzZWxmLnByZWZvcm1hdCwgZnVuY3MsIGNsYXNzZXMsIG1ldGhvZHMpCiAgICAgICAgZG9jID0gZG9jIGFuZCAnPGRkPjx0dD4lczwvdHQ+PC9kZD4nICUgZG9jCiAgICAgICAgcmV0dXJuICc8ZGw+PGR0PiVzPC9kdD4lczwvZGw+XG4nICUgKGRlY2wsIGRvYykKCiAgICBkZWYgZG9jc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lLCBwYWNrYWdlX2RvY3VtZW50YXRpb24sIG1ldGhvZHMpOgogICAgICAgICIiIlByb2R1Y2UgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhbiBYTUwtUlBDIHNlcnZlci4iIiIKCiAgICAgICAgZmRpY3QgPSB7fQogICAgICAgIGZvciBrZXksIHZhbHVlIGluIG1ldGhvZHMuaXRlbXMoKToKICAgICAgICAgICAgZmRpY3Rba2V5XSA9ICcjLScgKyBrZXkKICAgICAgICAgICAgZmRpY3RbdmFsdWVdID0gZmRpY3Rba2V5XQoKICAgICAgICBzZXJ2ZXJfbmFtZSA9IHNlbGYuZXNjYXBlKHNlcnZlcl9uYW1lKQogICAgICAgIGhlYWQgPSAnPGJpZz48YmlnPjxzdHJvbmc+JXM8L3N0cm9uZz48L2JpZz48L2JpZz4nICUgc2VydmVyX25hbWUKICAgICAgICByZXN1bHQgPSBzZWxmLmhlYWRpbmcoaGVhZCkKCiAgICAgICAgZG9jID0gc2VsZi5tYXJrdXAocGFja2FnZV9kb2N1bWVudGF0aW9uLCBzZWxmLnByZWZvcm1hdCwgZmRpY3QpCiAgICAgICAgZG9jID0gZG9jIGFuZCAnPHR0PiVzPC90dD4nICUgZG9jCiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgJzxwPiVzPC9wPlxuJyAlIGRvYwoKICAgICAgICBjb250ZW50cyA9IFtdCiAgICAgICAgbWV0aG9kX2l0ZW1zID0gc29ydGVkKG1ldGhvZHMuaXRlbXMoKSkKICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBtZXRob2RfaXRlbXM6CiAgICAgICAgICAgIGNvbnRlbnRzLmFwcGVuZChzZWxmLmRvY3JvdXRpbmUodmFsdWUsIGtleSwgZnVuY3M9ZmRpY3QpKQogICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHNlbGYuYmlnc2VjdGlvbigKICAgICAgICAgICAgJ01ldGhvZHMnLCAnZnVuY3Rpb25zJywgJycuam9pbihjb250ZW50cykpCgogICAgICAgIHJldHVybiByZXN1bHQKCgogICAgZGVmIHBhZ2Uoc2VsZiwgdGl0bGUsIGNvbnRlbnRzKToKICAgICAgICAiIiJGb3JtYXQgYW4gSFRNTCBwYWdlLiIiIgogICAgICAgIGNzc19wYXRoID0gIi9weWRvYy5jc3MiCiAgICAgICAgY3NzX2xpbmsgPSAoCiAgICAgICAgICAgICc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIlcyI+JyAlCiAgICAgICAgICAgIGNzc19wYXRoKQogICAgICAgIHJldHVybiAnJydcCjwhRE9DVFlQRT4KPGh0bWwgbGFuZz0iZW4iPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+UHl0aG9uOiAlczwvdGl0bGU+CiVzPC9oZWFkPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4nJycgJSAodGl0bGUsIGNzc19saW5rLCBjb250ZW50cykKCmNsYXNzIFhNTFJQQ0RvY0dlbmVyYXRvcjoKICAgICIiIkdlbmVyYXRlcyBkb2N1bWVudGF0aW9uIGZvciBhbiBYTUwtUlBDIHNlcnZlci4KCiAgICBUaGlzIGNsYXNzIGlzIGRlc2lnbmVkIGFzIG1peC1pbiBhbmQgc2hvdWxkIG5vdAogICAgYmUgY29uc3RydWN0ZWQgZGlyZWN0bHkuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIyBzZXR1cCB2YXJpYWJsZXMgdXNlZCBmb3IgSFRNTCBkb2N1bWVudGF0aW9uCiAgICAgICAgc2VsZi5zZXJ2ZXJfbmFtZSA9ICdYTUwtUlBDIFNlcnZlciBEb2N1bWVudGF0aW9uJwogICAgICAgIHNlbGYuc2VydmVyX2RvY3VtZW50YXRpb24gPSBcCiAgICAgICAgICAgICJUaGlzIHNlcnZlciBleHBvcnRzIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyB0aHJvdWdoIHRoZSBYTUwtUlBDICJcCiAgICAgICAgICAgICJwcm90b2NvbC4iCiAgICAgICAgc2VsZi5zZXJ2ZXJfdGl0bGUgPSAnWE1MLVJQQyBTZXJ2ZXIgRG9jdW1lbnRhdGlvbicKCiAgICBkZWYgc2V0X3NlcnZlcl90aXRsZShzZWxmLCBzZXJ2ZXJfdGl0bGUpOgogICAgICAgICIiIlNldCB0aGUgSFRNTCB0aXRsZSBvZiB0aGUgZ2VuZXJhdGVkIHNlcnZlciBkb2N1bWVudGF0aW9uIiIiCgogICAgICAgIHNlbGYuc2VydmVyX3RpdGxlID0gc2VydmVyX3RpdGxlCgogICAgZGVmIHNldF9zZXJ2ZXJfbmFtZShzZWxmLCBzZXJ2ZXJfbmFtZSk6CiAgICAgICAgIiIiU2V0IHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgSFRNTCBzZXJ2ZXIgZG9jdW1lbnRhdGlvbiIiIgoKICAgICAgICBzZWxmLnNlcnZlcl9uYW1lID0gc2VydmVyX25hbWUKCiAgICBkZWYgc2V0X3NlcnZlcl9kb2N1bWVudGF0aW9uKHNlbGYsIHNlcnZlcl9kb2N1bWVudGF0aW9uKToKICAgICAgICAiIiJTZXQgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciB0aGUgZW50aXJlIHNlcnZlci4iIiIKCiAgICAgICAgc2VsZi5zZXJ2ZXJfZG9jdW1lbnRhdGlvbiA9IHNlcnZlcl9kb2N1bWVudGF0aW9uCgogICAgZGVmIGdlbmVyYXRlX2h0bWxfZG9jdW1lbnRhdGlvbihzZWxmKToKICAgICAgICAiIiJnZW5lcmF0ZV9odG1sX2RvY3VtZW50YXRpb24oKSA9PiBodG1sIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzZXJ2ZXIKCiAgICAgICAgR2VuZXJhdGVzIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHNlcnZlciB1c2luZyBpbnRyb3NwZWN0aW9uIGZvcgogICAgICAgIGluc3RhbGxlZCBmdW5jdGlvbnMgYW5kIGluc3RhbmNlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgdGhlCiAgICAgICAgX2Rpc3BhdGNoIG1ldGhvZC4gQWx0ZXJuYXRpdmVseSwgaW5zdGFuY2VzIGNhbiBjaG9vc2UgdG8gaW1wbGVtZW50CiAgICAgICAgdGhlIF9nZXRfbWV0aG9kX2FyZ3N0cmluZyhtZXRob2RfbmFtZSkgbWV0aG9kIHRvIHByb3ZpZGUgdGhlCiAgICAgICAgYXJndW1lbnQgc3RyaW5nIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kIHRoZQogICAgICAgIF9tZXRob2RIZWxwKG1ldGhvZF9uYW1lKSBtZXRob2QgdG8gcHJvdmlkZSB0aGUgaGVscCB0ZXh0IHVzZWQKICAgICAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbi4iIiIKCiAgICAgICAgbWV0aG9kcyA9IHt9CgogICAgICAgIGZvciBtZXRob2RfbmFtZSBpbiBzZWxmLnN5c3RlbV9saXN0TWV0aG9kcygpOgogICAgICAgICAgICBpZiBtZXRob2RfbmFtZSBpbiBzZWxmLmZ1bmNzOgogICAgICAgICAgICAgICAgbWV0aG9kID0gc2VsZi5mdW5jc1ttZXRob2RfbmFtZV0KICAgICAgICAgICAgZWxpZiBzZWxmLmluc3RhbmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgbWV0aG9kX2luZm8gPSBbTm9uZSwgTm9uZV0gIyBhcmdzcGVjLCBkb2N1bWVudGF0aW9uCiAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuaW5zdGFuY2UsICdfZ2V0X21ldGhvZF9hcmdzdHJpbmcnKToKICAgICAgICAgICAgICAgICAgICBtZXRob2RfaW5mb1swXSA9IHNlbGYuaW5zdGFuY2UuX2dldF9tZXRob2RfYXJnc3RyaW5nKG1ldGhvZF9uYW1lKQogICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLmluc3RhbmNlLCAnX21ldGhvZEhlbHAnKToKICAgICAgICAgICAgICAgICAgICBtZXRob2RfaW5mb1sxXSA9IHNlbGYuaW5zdGFuY2UuX21ldGhvZEhlbHAobWV0aG9kX25hbWUpCgogICAgICAgICAgICAgICAgbWV0aG9kX2luZm8gPSB0dXBsZShtZXRob2RfaW5mbykKICAgICAgICAgICAgICAgIGlmIG1ldGhvZF9pbmZvICE9IChOb25lLCBOb25lKToKICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSBtZXRob2RfaW5mbwogICAgICAgICAgICAgICAgZWxpZiBub3QgaGFzYXR0cihzZWxmLmluc3RhbmNlLCAnX2Rpc3BhdGNoJyk6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSByZXNvbHZlX2RvdHRlZF9hdHRyaWJ1dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IG1ldGhvZF9pbmZvCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IG1ldGhvZF9pbmZvCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBhc3NlcnQgMCwgIkNvdWxkIG5vdCBmaW5kIG1ldGhvZCBpbiBzZWxmLmZ1bmN0aW9ucyBhbmQgbm8gIlwKICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFuY2UgaW5zdGFsbGVkIgoKICAgICAgICAgICAgbWV0aG9kc1ttZXRob2RfbmFtZV0gPSBtZXRob2QKCiAgICAgICAgZG9jdW1lbnRlciA9IFNlcnZlckhUTUxEb2MoKQogICAgICAgIGRvY3VtZW50YXRpb24gPSBkb2N1bWVudGVyLmRvY3NlcnZlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2RvY3VtZW50YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4gZG9jdW1lbnRlci5wYWdlKGh0bWwuZXNjYXBlKHNlbGYuc2VydmVyX3RpdGxlKSwgZG9jdW1lbnRhdGlvbikKCmNsYXNzIERvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyKFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKToKICAgICIiIlhNTC1SUEMgYW5kIGRvY3VtZW50YXRpb24gcmVxdWVzdCBoYW5kbGVyIGNsYXNzLgoKICAgIEhhbmRsZXMgYWxsIEhUVFAgUE9TVCByZXF1ZXN0cyBhbmQgYXR0ZW1wdHMgdG8gZGVjb2RlIHRoZW0gYXMKICAgIFhNTC1SUEMgcmVxdWVzdHMuCgogICAgSGFuZGxlcyBhbGwgSFRUUCBHRVQgcmVxdWVzdHMgYW5kIGludGVycHJldHMgdGhlbSBhcyByZXF1ZXN0cwogICAgZm9yIGRvY3VtZW50YXRpb24uCiAgICAiIiIKCiAgICBkZWYgX2dldF9jc3Moc2VsZiwgdXJsKToKICAgICAgICBwYXRoX2hlcmUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCiAgICAgICAgY3NzX3BhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF9oZXJlLCAiLi4iLCAicHlkb2NfZGF0YSIsICJfcHlkb2MuY3NzIikKICAgICAgICB3aXRoIG9wZW4oY3NzX3BhdGgsIG1vZGU9InJiIikgYXMgZnA6CiAgICAgICAgICAgIHJldHVybiBmcC5yZWFkKCkKCiAgICBkZWYgZG9fR0VUKHNlbGYpOgogICAgICAgICIiIkhhbmRsZXMgdGhlIEhUVFAgR0VUIHJlcXVlc3QuCgogICAgICAgIEludGVycHJldCBhbGwgSFRUUCBHRVQgcmVxdWVzdHMgYXMgcmVxdWVzdHMgZm9yIHNlcnZlcgogICAgICAgIGRvY3VtZW50YXRpb24uCiAgICAgICAgIiIiCiAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBwYXRoIGlzIGxlZ2FsCiAgICAgICAgaWYgbm90IHNlbGYuaXNfcnBjX3BhdGhfdmFsaWQoKToKICAgICAgICAgICAgc2VsZi5yZXBvcnRfNDA0KCkKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIGlmIHNlbGYucGF0aC5lbmRzd2l0aCgnLmNzcycpOgogICAgICAgICAgICBjb250ZW50X3R5cGUgPSAndGV4dC9jc3MnCiAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fZ2V0X2NzcyhzZWxmLnBhdGgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY29udGVudF90eXBlID0gJ3RleHQvaHRtbCcKICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnNlcnZlci5nZW5lcmF0ZV9odG1sX2RvY3VtZW50YXRpb24oKS5lbmNvZGUoJ3V0Zi04JykKCiAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCkKICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCAnJXM7IGNoYXJzZXQ9VVRGLTgnICUgY29udGVudF90eXBlKQogICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIiwgc3RyKGxlbihyZXNwb25zZSkpKQogICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgIHNlbGYud2ZpbGUud3JpdGUocmVzcG9uc2UpCgpjbGFzcyBEb2NYTUxSUENTZXJ2ZXIoICBTaW1wbGVYTUxSUENTZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIFhNTFJQQ0RvY0dlbmVyYXRvcik6CiAgICAiIiJYTUwtUlBDIGFuZCBIVE1MIGRvY3VtZW50YXRpb24gc2VydmVyLgoKICAgIEFkZHMgdGhlIGFiaWxpdHkgdG8gc2VydmUgc2VydmVyIGRvY3VtZW50YXRpb24gdG8gdGhlIGNhcGFiaWxpdGllcwogICAgb2YgU2ltcGxlWE1MUlBDU2VydmVyLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPURvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyLAogICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgIFNpbXBsZVhNTFJQQ1NlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmUsIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgWE1MUlBDRG9jR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYpCgpjbGFzcyBEb2NDR0lYTUxSUENSZXF1ZXN0SGFuZGxlciggICBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MUlBDRG9jR2VuZXJhdG9yKToKICAgICIiIkhhbmRsZXIgZm9yIFhNTC1SUEMgZGF0YSBhbmQgZG9jdW1lbnRhdGlvbiByZXF1ZXN0cyBwYXNzZWQgdGhyb3VnaAogICAgQ0dJIiIiCgogICAgZGVmIGhhbmRsZV9nZXQoc2VsZik6CiAgICAgICAgIiIiSGFuZGxlcyB0aGUgSFRUUCBHRVQgcmVxdWVzdC4KCiAgICAgICAgSW50ZXJwcmV0IGFsbCBIVFRQIEdFVCByZXF1ZXN0cyBhcyByZXF1ZXN0cyBmb3Igc2VydmVyCiAgICAgICAgZG9jdW1lbnRhdGlvbi4KICAgICAgICAiIiIKCiAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmdlbmVyYXRlX2h0bWxfZG9jdW1lbnRhdGlvbigpLmVuY29kZSgndXRmLTgnKQoKICAgICAgICBwcmludCgnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwnKQogICAgICAgIHByaW50KCdDb250ZW50LUxlbmd0aDogJWQnICUgbGVuKHJlc3BvbnNlKSkKICAgICAgICBwcmludCgpCiAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUocmVzcG9uc2UpCiAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIuZmx1c2goKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgIFhNTFJQQ0RvY0dlbmVyYXRvci5fX2luaXRfXyhzZWxmKQoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBpbXBvcnQgZGF0ZXRpbWUKCiAgICBjbGFzcyBFeGFtcGxlU2VydmljZToKICAgICAgICBkZWYgZ2V0RGF0YShzZWxmKToKICAgICAgICAgICAgcmV0dXJuICc0MicKCiAgICAgICAgY2xhc3MgY3VycmVudFRpbWU6CiAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgICAgZGVmIGdldEN1cnJlbnRUaW1lKCk6CiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKCiAgICB3aXRoIFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKSBhcyBzZXJ2ZXI6CiAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCiAgICAgICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQogICAgICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCiAgICAgICAgcHJpbnQoJ0l0IGlzIGFkdmlzYWJsZSB0byBydW4gdGhpcyBleGFtcGxlIHNlcnZlciB3aXRoaW4gYSBzZWN1cmUsIGNsb3NlZCBuZXR3b3JrLicpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKICAgICAgICAgICAgc3lzLmV4aXQoMCkKUEsDBBQAAAAAAAMgo1bTNaqjvwIAAL8CAAAUAAAAem9uZWluZm8vX19pbml0X18ucHlfX2FsbF9fID0gWwogICAgIlpvbmVJbmZvIiwKICAgICJyZXNldF90enBhdGgiLAogICAgImF2YWlsYWJsZV90aW1lem9uZXMiLAogICAgIlRaUEFUSCIsCiAgICAiWm9uZUluZm9Ob3RGb3VuZEVycm9yIiwKICAgICJJbnZhbGlkVFpQYXRoV2FybmluZyIsCl0KCmZyb20gLiBpbXBvcnQgX3R6cGF0aApmcm9tIC5fY29tbW9uIGltcG9ydCBab25lSW5mb05vdEZvdW5kRXJyb3IKCnRyeToKICAgIGZyb20gX3pvbmVpbmZvIGltcG9ydCBab25lSW5mbwpleGNlcHQgSW1wb3J0RXJyb3I6ICAjIHByYWdtYTogbm9jb3ZlcgogICAgZnJvbSAuX3pvbmVpbmZvIGltcG9ydCBab25lSW5mbwoKcmVzZXRfdHpwYXRoID0gX3R6cGF0aC5yZXNldF90enBhdGgKYXZhaWxhYmxlX3RpbWV6b25lcyA9IF90enBhdGguYXZhaWxhYmxlX3RpbWV6b25lcwpJbnZhbGlkVFpQYXRoV2FybmluZyA9IF90enBhdGguSW52YWxpZFRaUGF0aFdhcm5pbmcKCgpkZWYgX19nZXRhdHRyX18obmFtZSk6CiAgICBpZiBuYW1lID09ICJUWlBBVEgiOgogICAgICAgIHJldHVybiBfdHpwYXRoLlRaUEFUSAogICAgZWxzZToKICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihmIm1vZHVsZSB7X19uYW1lX18hcn0gaGFzIG5vIGF0dHJpYnV0ZSB7bmFtZSFyfSIpCgoKZGVmIF9fZGlyX18oKToKICAgIHJldHVybiBzb3J0ZWQobGlzdChnbG9iYWxzKCkpICsgWyJUWlBBVEgiXSkKUEsDBBQAAAAAAAMgo1av1wfprhQAAK4UAAATAAAAem9uZWluZm8vX2NvbW1vbi5weWltcG9ydCBzdHJ1Y3QKCgpkZWYgbG9hZF90emRhdGEoa2V5KToKICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCByZXNvdXJjZXMKCiAgICBjb21wb25lbnRzID0ga2V5LnNwbGl0KCIvIikKICAgIHBhY2thZ2VfbmFtZSA9ICIuIi5qb2luKFsidHpkYXRhLnpvbmVpbmZvIl0gKyBjb21wb25lbnRzWzotMV0pCiAgICByZXNvdXJjZV9uYW1lID0gY29tcG9uZW50c1stMV0KCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIHJlc291cmNlcy5maWxlcyhwYWNrYWdlX25hbWUpLmpvaW5wYXRoKHJlc291cmNlX25hbWUpLm9wZW4oInJiIikKICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yLCBVbmljb2RlRW5jb2RlRXJyb3IpOgogICAgICAgICMgVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIGV4Y2VwdGlvbiB0aGF0IGNhbiBiZSByYWlzZWQgdGhhdCBhbGwgYW1vdW50CiAgICAgICAgIyB0byAid2UgY2Fubm90IGZpbmQgdGhpcyBrZXkiOgogICAgICAgICMKICAgICAgICAjIEltcG9ydEVycm9yOiBJZiBwYWNrYWdlX25hbWUgZG9lc24ndCBleGlzdCAoZS5nLiBpZiB0emRhdGEgaXMgbm90CiAgICAgICAgIyAgIGluc3RhbGxlZCwgb3IgaWYgdGhlcmUncyBhbiBlcnJvciBpbiB0aGUgZm9sZGVyIG5hbWUgbGlrZQogICAgICAgICMgICBBbXJpY2EvTmV3X1lvcmspCiAgICAgICAgIyBGaWxlTm90Rm91bmRFcnJvcjogSWYgcmVzb3VyY2VfbmFtZSBkb2Vzbid0IGV4aXN0IGluIHRoZSBwYWNrYWdlCiAgICAgICAgIyAgIChlLmcuIEV1cm9wZS9LcmFzbm95KQogICAgICAgICMgVW5pY29kZUVuY29kZUVycm9yOiBJZiBwYWNrYWdlX25hbWUgb3IgcmVzb3VyY2VfbmFtZSBhcmUgbm90IFVURi04LAogICAgICAgICMgICBzdWNoIGFzIGtleXMgY29udGFpbmluZyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIuCiAgICAgICAgcmFpc2UgWm9uZUluZm9Ob3RGb3VuZEVycm9yKGYiTm8gdGltZSB6b25lIGZvdW5kIHdpdGgga2V5IHtrZXl9IikKCgpkZWYgbG9hZF9kYXRhKGZvYmopOgogICAgaGVhZGVyID0gX1RaaWZIZWFkZXIuZnJvbV9maWxlKGZvYmopCgogICAgaWYgaGVhZGVyLnZlcnNpb24gPT0gMToKICAgICAgICB0aW1lX3NpemUgPSA0CiAgICAgICAgdGltZV90eXBlID0gImwiCiAgICBlbHNlOgogICAgICAgICMgVmVyc2lvbiAyKyBoYXMgNjQtYml0IGludGVnZXIgdHJhbnNpdGlvbiB0aW1lcwogICAgICAgIHRpbWVfc2l6ZSA9IDgKICAgICAgICB0aW1lX3R5cGUgPSAicSIKCiAgICAgICAgIyBWZXJzaW9uIDIrIGFsc28gc3RhcnRzIHdpdGggYSBWZXJzaW9uIDEgaGVhZGVyIGFuZCBkYXRhLCB3aGljaAogICAgICAgICMgd2UgbmVlZCB0byBza2lwIG5vdwogICAgICAgIHNraXBfYnl0ZXMgPSAoCiAgICAgICAgICAgIGhlYWRlci50aW1lY250ICogNSAgIyBUcmFuc2l0aW9uIHRpbWVzIGFuZCB0eXBlcwogICAgICAgICAgICArIGhlYWRlci50eXBlY250ICogNiAgIyBMb2NhbCB0aW1lIHR5cGUgcmVjb3JkcwogICAgICAgICAgICArIGhlYWRlci5jaGFyY250ICAjIFRpbWUgem9uZSBkZXNpZ25hdGlvbnMKICAgICAgICAgICAgKyBoZWFkZXIubGVhcGNudCAqIDggICMgTGVhcCBzZWNvbmQgcmVjb3JkcwogICAgICAgICAgICArIGhlYWRlci5pc3N0ZGNudCAgIyBTdGFuZGFyZC93YWxsIGluZGljYXRvcnMKICAgICAgICAgICAgKyBoZWFkZXIuaXN1dGNudCAgIyBVVC9sb2NhbCBpbmRpY2F0b3JzCiAgICAgICAgKQoKICAgICAgICBmb2JqLnNlZWsoc2tpcF9ieXRlcywgMSkKCiAgICAgICAgIyBOb3cgd2UgbmVlZCB0byByZWFkIHRoZSBzZWNvbmQgaGVhZGVyLCB3aGljaCBpcyBub3QgdGhlIHNhbWUKICAgICAgICAjIGFzIHRoZSBmaXJzdAogICAgICAgIGhlYWRlciA9IF9UWmlmSGVhZGVyLmZyb21fZmlsZShmb2JqKQoKICAgIHR5cGVjbnQgPSBoZWFkZXIudHlwZWNudAogICAgdGltZWNudCA9IGhlYWRlci50aW1lY250CiAgICBjaGFyY250ID0gaGVhZGVyLmNoYXJjbnQKCiAgICAjIFRoZSBkYXRhIHBvcnRpb24gc3RhcnRzIHdpdGggdGltZWNudCB0cmFuc2l0aW9ucyBhbmQgaW5kaWNlcwogICAgaWYgdGltZWNudDoKICAgICAgICB0cmFuc19saXN0X3V0YyA9IHN0cnVjdC51bnBhY2soCiAgICAgICAgICAgIGYiPnt0aW1lY250fXt0aW1lX3R5cGV9IiwgZm9iai5yZWFkKHRpbWVjbnQgKiB0aW1lX3NpemUpCiAgICAgICAgKQogICAgICAgIHRyYW5zX2lkeCA9IHN0cnVjdC51bnBhY2soZiI+e3RpbWVjbnR9QiIsIGZvYmoucmVhZCh0aW1lY250KSkKICAgIGVsc2U6CiAgICAgICAgdHJhbnNfbGlzdF91dGMgPSAoKQogICAgICAgIHRyYW5zX2lkeCA9ICgpCgogICAgIyBSZWFkIHRoZSB0dGluZm8gc3RydWN0LCAodXRvZmYsIGlzZHN0LCBhYmJyaW5kKQogICAgaWYgdHlwZWNudDoKICAgICAgICB1dGNvZmYsIGlzZHN0LCBhYmJyaW5kID0gemlwKAogICAgICAgICAgICAqKHN0cnVjdC51bnBhY2soIj5sYmIiLCBmb2JqLnJlYWQoNikpIGZvciBpIGluIHJhbmdlKHR5cGVjbnQpKQogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgdXRjb2ZmID0gKCkKICAgICAgICBpc2RzdCA9ICgpCiAgICAgICAgYWJicmluZCA9ICgpCgogICAgIyBOb3cgcmVhZCB0aGUgYWJicmV2aWF0aW9ucy4gVGhleSBhcmUgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MsIGluZGV4ZWQKICAgICMgbm90IGJ5IHBvc2l0aW9uIGluIHRoZSBhcnJheSBidXQgYnkgcG9zaXRpb24gaW4gdGhlIHVuc3BsaXQKICAgICMgYWJicmV2aWF0aW9uIHN0cmluZy4gSSBzdXBwb3NlIHRoaXMgbWFrZXMgbW9yZSBzZW5zZSBpbiBDLCB3aGljaCB1c2VzCiAgICAjIG51bGwgdG8gdGVybWluYXRlIHRoZSBzdHJpbmdzLCBidXQgaXQncyBpbmNvbnZlbmllbnQgaGVyZS4uLgogICAgYWJicl92YWxzID0ge30KICAgIGFiYnJfY2hhcnMgPSBmb2JqLnJlYWQoY2hhcmNudCkKCiAgICBkZWYgZ2V0X2FiYnIoaWR4KToKICAgICAgICAjIEdldHMgYSBzdHJpbmcgc3RhcnRpbmcgYXQgaWR4IGFuZCBydW5uaW5nIHVudGlsIHRoZSBuZXh0IFx4MDAKICAgICAgICAjCiAgICAgICAgIyBXZSBjYW5ub3QgcHJlLXBvcHVsYXRlIGFiYnJfdmFscyBieSBzcGxpdHRpbmcgb24gXHgwMCBiZWNhdXNlIHRoZXJlCiAgICAgICAgIyBhcmUgc29tZSB6b25lcyB0aGF0IHVzZSBzdWJzZXRzIG9mIGxvbmdlciBhYmJyZXZpYXRpb25zLCBsaWtlIHNvOgogICAgICAgICMKICAgICAgICAjICBMTVRceDAwQUhTVFx4MDBIRFRceDAwCiAgICAgICAgIwogICAgICAgICMgV2hlcmUgdGhlIGlkeCB0byBhYmJyIG1hcHBpbmcgc2hvdWxkIGJlOgogICAgICAgICMKICAgICAgICAjIHswOiAiTE1UIiwgNDogIkFIU1QiLCA1OiAiSFNUIiwgOTogIkhEVCJ9CiAgICAgICAgaWYgaWR4IG5vdCBpbiBhYmJyX3ZhbHM6CiAgICAgICAgICAgIHNwYW5fZW5kID0gYWJicl9jaGFycy5maW5kKGIiXHgwMCIsIGlkeCkKICAgICAgICAgICAgYWJicl92YWxzW2lkeF0gPSBhYmJyX2NoYXJzW2lkeDpzcGFuX2VuZF0uZGVjb2RlKCkKCiAgICAgICAgcmV0dXJuIGFiYnJfdmFsc1tpZHhdCgogICAgYWJiciA9IHR1cGxlKGdldF9hYmJyKGlkeCkgZm9yIGlkeCBpbiBhYmJyaW5kKQoKICAgICMgVGhlIHJlbWFpbmRlciBvZiB0aGUgZmlsZSBjb25zaXN0cyBvZiBsZWFwIHNlY29uZHMgKGN1cnJlbnRseSB1bnVzZWQpIGFuZAogICAgIyB0aGUgc3RhbmRhcmQvd2FsbCBhbmQgdXQvbG9jYWwgaW5kaWNhdG9ycywgd2hpY2ggYXJlIG1ldGFkYXRhIHdlIGRvbid0IG5lZWQuCiAgICAjIEluIHZlcnNpb24gMiBmaWxlcywgd2UgbmVlZCB0byBza2lwIHRoZSB1bm5lY2Vzc2FyeSBkYXRhIHRvIGdldCBhdCB0aGUgVFogc3RyaW5nOgogICAgaWYgaGVhZGVyLnZlcnNpb24gPj0gMjoKICAgICAgICAjIEVhY2ggbGVhcCBzZWNvbmQgcmVjb3JkIGhhcyBzaXplICh0aW1lX3NpemUgKyA0KQogICAgICAgIHNraXBfYnl0ZXMgPSBoZWFkZXIuaXN1dGNudCArIGhlYWRlci5pc3N0ZGNudCArIGhlYWRlci5sZWFwY250ICogMTIKICAgICAgICBmb2JqLnNlZWsoc2tpcF9ieXRlcywgMSkKCiAgICAgICAgYyA9IGZvYmoucmVhZCgxKSAgIyBTaG91bGQgYmUgXG4KICAgICAgICBhc3NlcnQgYyA9PSBiIlxuIiwgYwoKICAgICAgICB0el9ieXRlcyA9IGIiIgogICAgICAgIHdoaWxlIChjIDo9IGZvYmoucmVhZCgxKSkgIT0gYiJcbiI6CiAgICAgICAgICAgIHR6X2J5dGVzICs9IGMKCiAgICAgICAgdHpfc3RyID0gdHpfYnl0ZXMKICAgIGVsc2U6CiAgICAgICAgdHpfc3RyID0gTm9uZQoKICAgIHJldHVybiB0cmFuc19pZHgsIHRyYW5zX2xpc3RfdXRjLCB1dGNvZmYsIGlzZHN0LCBhYmJyLCB0el9zdHIKCgpjbGFzcyBfVFppZkhlYWRlcjoKICAgIF9fc2xvdHNfXyA9IFsKICAgICAgICAidmVyc2lvbiIsCiAgICAgICAgImlzdXRjbnQiLAogICAgICAgICJpc3N0ZGNudCIsCiAgICAgICAgImxlYXBjbnQiLAogICAgICAgICJ0aW1lY250IiwKICAgICAgICAidHlwZWNudCIsCiAgICAgICAgImNoYXJjbnQiLAogICAgXQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CiAgICAgICAgZm9yIGF0dHIsIHZhbCBpbiB6aXAoc2VsZi5fX3Nsb3RzX18sIGFyZ3MsIHN0cmljdD1UcnVlKToKICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyLCB2YWwpCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbV9maWxlKGNscywgc3RyZWFtKToKICAgICAgICAjIFRoZSBoZWFkZXIgc3RhcnRzIHdpdGggYSA0LWJ5dGUgIm1hZ2ljIiB2YWx1ZQogICAgICAgIGlmIHN0cmVhbS5yZWFkKDQpICE9IGIiVFppZiI6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgVFppZiBmaWxlOiBtYWdpYyBub3QgZm91bmQiKQoKICAgICAgICBfdmVyc2lvbiA9IHN0cmVhbS5yZWFkKDEpCiAgICAgICAgaWYgX3ZlcnNpb24gPT0gYiJceDAwIjoKICAgICAgICAgICAgdmVyc2lvbiA9IDEKICAgICAgICBlbHNlOgogICAgICAgICAgICB2ZXJzaW9uID0gaW50KF92ZXJzaW9uKQogICAgICAgIHN0cmVhbS5yZWFkKDE1KQoKICAgICAgICBhcmdzID0gKHZlcnNpb24sKQoKICAgICAgICAjIFNsb3RzIGFyZSBkZWZpbmVkIGluIHRoZSBvcmRlciB0aGF0IHRoZSBieXRlcyBhcmUgYXJyYW5nZWQKICAgICAgICBhcmdzID0gYXJncyArIHN0cnVjdC51bnBhY2soIj42bCIsIHN0cmVhbS5yZWFkKDI0KSkKCiAgICAgICAgcmV0dXJuIGNscygqYXJncykKCgpjbGFzcyBab25lSW5mb05vdEZvdW5kRXJyb3IoS2V5RXJyb3IpOgogICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgWm9uZUluZm8ga2V5IGlzIG5vdCBmb3VuZC4iIiIKUEsDBBQAAAAAAAMgo1aAdGPq6BMAAOgTAAATAAAAem9uZWluZm8vX3R6cGF0aC5weWltcG9ydCBvcwppbXBvcnQgc3lzY29uZmlnCgoKZGVmIHJlc2V0X3R6cGF0aCh0bz1Ob25lKToKICAgIGdsb2JhbCBUWlBBVEgKCiAgICB0enBhdGhzID0gdG8KICAgIGlmIHR6cGF0aHMgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgaXNpbnN0YW5jZSh0enBhdGhzLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICBmInR6cGF0aHMgbXVzdCBiZSBhIGxpc3Qgb3IgdHVwbGUsICIKICAgICAgICAgICAgICAgICsgZiJub3Qge3R5cGUodHpwYXRocyl9OiB7dHpwYXRocyFyfSIKICAgICAgICAgICAgKQoKICAgICAgICBpZiBub3QgYWxsKG1hcChvcy5wYXRoLmlzYWJzLCB0enBhdGhzKSk6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoX2dldF9pbnZhbGlkX3BhdGhzX21lc3NhZ2UodHpwYXRocykpCiAgICAgICAgYmFzZV90enBhdGggPSB0enBhdGhzCiAgICBlbHNlOgogICAgICAgIGVudl92YXIgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVFpQQVRIIiwgTm9uZSkKICAgICAgICBpZiBlbnZfdmFyIGlzIG5vdCBOb25lOgogICAgICAgICAgICBiYXNlX3R6cGF0aCA9IF9wYXJzZV9weXRob25fdHpwYXRoKGVudl92YXIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYmFzZV90enBhdGggPSBfcGFyc2VfcHl0aG9uX3R6cGF0aCgKICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiVFpQQVRIIikKICAgICAgICAgICAgKQoKICAgIFRaUEFUSCA9IHR1cGxlKGJhc2VfdHpwYXRoKQoKCmRlZiBfcGFyc2VfcHl0aG9uX3R6cGF0aChlbnZfdmFyKToKICAgIGlmIG5vdCBlbnZfdmFyOgogICAgICAgIHJldHVybiAoKQoKICAgIHJhd190enBhdGggPSBlbnZfdmFyLnNwbGl0KG9zLnBhdGhzZXApCiAgICBuZXdfdHpwYXRoID0gdHVwbGUoZmlsdGVyKG9zLnBhdGguaXNhYnMsIHJhd190enBhdGgpKQoKICAgICMgSWYgYW55dGhpbmcgaGFzIGJlZW4gZmlsdGVyZWQgb3V0LCB3ZSB3aWxsIHdhcm4gYWJvdXQgaXQKICAgIGlmIGxlbihuZXdfdHpwYXRoKSAhPSBsZW4ocmF3X3R6cGF0aCk6CiAgICAgICAgaW1wb3J0IHdhcm5pbmdzCgogICAgICAgIG1zZyA9IF9nZXRfaW52YWxpZF9wYXRoc19tZXNzYWdlKHJhd190enBhdGgpCgogICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICJJbnZhbGlkIHBhdGhzIHNwZWNpZmllZCBpbiBQWVRIT05UWlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuICIKICAgICAgICAgICAgKyBtc2csCiAgICAgICAgICAgIEludmFsaWRUWlBhdGhXYXJuaW5nLAogICAgICAgICkKCiAgICByZXR1cm4gbmV3X3R6cGF0aAoKCmRlZiBfZ2V0X2ludmFsaWRfcGF0aHNfbWVzc2FnZSh0enBhdGhzKToKICAgIGludmFsaWRfcGF0aHMgPSAocGF0aCBmb3IgcGF0aCBpbiB0enBhdGhzIGlmIG5vdCBvcy5wYXRoLmlzYWJzKHBhdGgpKQoKICAgIHByZWZpeCA9ICJcbiAgICAiCiAgICBpbmRlbnRlZF9zdHIgPSBwcmVmaXggKyBwcmVmaXguam9pbihpbnZhbGlkX3BhdGhzKQoKICAgIHJldHVybiAoCiAgICAgICAgIlBhdGhzIHNob3VsZCBiZSBhYnNvbHV0ZSBidXQgZm91bmQgdGhlIGZvbGxvd2luZyByZWxhdGl2ZSBwYXRoczoiCiAgICAgICAgKyBpbmRlbnRlZF9zdHIKICAgICkKCgpkZWYgZmluZF90emZpbGUoa2V5KToKICAgICIiIlJldHJpZXZlIHRoZSBwYXRoIHRvIGEgVFppZiBmaWxlIGZyb20gYSBrZXkuIiIiCiAgICBfdmFsaWRhdGVfdHpmaWxlX3BhdGgoa2V5KQogICAgZm9yIHNlYXJjaF9wYXRoIGluIFRaUEFUSDoKICAgICAgICBmaWxlcGF0aCA9IG9zLnBhdGguam9pbihzZWFyY2hfcGF0aCwga2V5KQogICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVwYXRoKToKICAgICAgICAgICAgcmV0dXJuIGZpbGVwYXRoCgogICAgcmV0dXJuIE5vbmUKCgpfVEVTVF9QQVRIID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oIl8iLCAiXyIpKVs6LTFdCgoKZGVmIF92YWxpZGF0ZV90emZpbGVfcGF0aChwYXRoLCBfYmFzZT1fVEVTVF9QQVRIKToKICAgIGlmIG9zLnBhdGguaXNhYnMocGF0aCk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJab25lSW5mbyBrZXlzIG1heSBub3QgYmUgYWJzb2x1dGUgcGF0aHMsIGdvdDoge3BhdGh9IgogICAgICAgICkKCiAgICAjIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUga2luZHMgb2YgcGF0aCBub3JtYWxpemF0aW9ucyB0aGF0IHdvdWxkIGNoYW5nZSB0aGUKICAgICMgbGVuZ3RoIG9mIHRoZSBrZXkgLSBlLmcuIGEvLi4vYiAtPiBhL2IsIG9yIGEvYi8gLT4gYS9iLiBPbiBXaW5kb3dzLAogICAgIyBub3JtcGF0aCB3aWxsIGFsc28gY2hhbmdlIGZyb20gYS9iIHRvIGFcYiwgYnV0IHRoYXQgd291bGQgc3RpbGwgcHJlc2VydmUKICAgICMgdGhlIGxlbmd0aC4KICAgIG5ld19wYXRoID0gb3MucGF0aC5ub3JtcGF0aChwYXRoKQogICAgaWYgbGVuKG5ld19wYXRoKSAhPSBsZW4ocGF0aCk6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJab25lSW5mbyBrZXlzIG11c3QgYmUgbm9ybWFsaXplZCByZWxhdGl2ZSBwYXRocywgZ290OiB7cGF0aH0iCiAgICAgICAgKQoKICAgIHJlc29sdmVkID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oX2Jhc2UsIG5ld19wYXRoKSkKICAgIGlmIG5vdCByZXNvbHZlZC5zdGFydHN3aXRoKF9iYXNlKToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIlpvbmVJbmZvIGtleXMgbXVzdCByZWZlciB0byBzdWJkaXJlY3RvcmllcyBvZiBUWlBBVEgsIGdvdDoge3BhdGh9IgogICAgICAgICkKCgpkZWwgX1RFU1RfUEFUSAoKCmRlZiBhdmFpbGFibGVfdGltZXpvbmVzKCk6CiAgICAiIiJSZXR1cm5zIGEgc2V0IGNvbnRhaW5pbmcgYWxsIGF2YWlsYWJsZSB0aW1lIHpvbmVzLgoKICAgIC4uIGNhdXRpb246OgoKICAgICAgICBUaGlzIG1heSBhdHRlbXB0IHRvIG9wZW4gYSBsYXJnZSBudW1iZXIgb2YgZmlsZXMsIHNpbmNlIHRoZSBiZXN0IHdheSB0bwogICAgICAgIGRldGVybWluZSBpZiBhIGdpdmVuIGZpbGUgb24gdGhlIHRpbWUgem9uZSBzZWFyY2ggcGF0aCBpcyB0byBvcGVuIGl0CiAgICAgICAgYW5kIGNoZWNrIGZvciB0aGUgIm1hZ2ljIHN0cmluZyIgYXQgdGhlIGJlZ2lubmluZy4KICAgICIiIgogICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHJlc291cmNlcwoKICAgIHZhbGlkX3pvbmVzID0gc2V0KCkKCiAgICAjIFN0YXJ0IHdpdGggbG9hZGluZyBmcm9tIHRoZSB0emRhdGEgcGFja2FnZSBpZiBpdCBleGlzdHM6IHRoaXMgaGFzIGEKICAgICMgcHJlLWFzc2VtYmxlZCBsaXN0IG9mIHpvbmVzIHRoYXQgb25seSByZXF1aXJlcyBvcGVuaW5nIG9uZSBmaWxlLgogICAgdHJ5OgogICAgICAgIHdpdGggcmVzb3VyY2VzLmZpbGVzKCJ0emRhdGEiKS5qb2lucGF0aCgiem9uZXMiKS5vcGVuKCJyIikgYXMgZjoKICAgICAgICAgICAgZm9yIHpvbmUgaW4gZjoKICAgICAgICAgICAgICAgIHpvbmUgPSB6b25lLnN0cmlwKCkKICAgICAgICAgICAgICAgIGlmIHpvbmU6CiAgICAgICAgICAgICAgICAgICAgdmFsaWRfem9uZXMuYWRkKHpvbmUpCiAgICBleGNlcHQgKEltcG9ydEVycm9yLCBGaWxlTm90Rm91bmRFcnJvcik6CiAgICAgICAgcGFzcwoKICAgIGRlZiB2YWxpZF9rZXkoZnBhdGgpOgogICAgICAgIHRyeToKICAgICAgICAgICAgd2l0aCBvcGVuKGZwYXRoLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgICAgcmV0dXJuIGYucmVhZCg0KSA9PSBiIlRaaWYiCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjogICMgcHJhZ21hOiBub2NvdmVyCiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGZvciB0el9yb290IGluIFRaUEFUSDoKICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModHpfcm9vdCk6CiAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgIGZvciByb290LCBkaXJuYW1lcywgZmlsZXMgaW4gb3Mud2Fsayh0el9yb290KToKICAgICAgICAgICAgaWYgcm9vdCA9PSB0el9yb290OgogICAgICAgICAgICAgICAgIyByaWdodC8gYW5kIHBvc2l4LyBhcmUgc3BlY2lhbCBkaXJlY3RvcmllcyBhbmQgc2hvdWxkbid0IGJlCiAgICAgICAgICAgICAgICAjIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQgb2YgYXZhaWxhYmxlIHpvbmVzCiAgICAgICAgICAgICAgICBpZiAicmlnaHQiIGluIGRpcm5hbWVzOgogICAgICAgICAgICAgICAgICAgIGRpcm5hbWVzLnJlbW92ZSgicmlnaHQiKQogICAgICAgICAgICAgICAgaWYgInBvc2l4IiBpbiBkaXJuYW1lczoKICAgICAgICAgICAgICAgICAgICBkaXJuYW1lcy5yZW1vdmUoInBvc2l4IikKCiAgICAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgICAgZnBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkKCiAgICAgICAgICAgICAgICBrZXkgPSBvcy5wYXRoLnJlbHBhdGgoZnBhdGgsIHN0YXJ0PXR6X3Jvb3QpCiAgICAgICAgICAgICAgICBpZiBvcy5zZXAgIT0gIi8iOiAgIyBwcmFnbWE6IG5vY292ZXIKICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXkucmVwbGFjZShvcy5zZXAsICIvIikKCiAgICAgICAgICAgICAgICBpZiBub3Qga2V5IG9yIGtleSBpbiB2YWxpZF96b25lczoKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgIGlmIHZhbGlkX2tleShmcGF0aCk6CiAgICAgICAgICAgICAgICAgICAgdmFsaWRfem9uZXMuYWRkKGtleSkKCiAgICBpZiAicG9zaXhydWxlcyIgaW4gdmFsaWRfem9uZXM6CiAgICAgICAgIyBwb3NpeHJ1bGVzIGlzIGEgc3BlY2lhbCBzeW1saW5rLW9ubHkgdGltZSB6b25lIHdoZXJlIGl0IGV4aXN0cywgaXQKICAgICAgICAjIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dAogICAgICAgIHZhbGlkX3pvbmVzLnJlbW92ZSgicG9zaXhydWxlcyIpCgogICAgcmV0dXJuIHZhbGlkX3pvbmVzCgoKY2xhc3MgSW52YWxpZFRaUGF0aFdhcm5pbmcoUnVudGltZVdhcm5pbmcpOgogICAgIiIiV2FybmluZyByYWlzZWQgaWYgYW4gaW52YWxpZCBwYXRoIGlzIHNwZWNpZmllZCBpbiBQWVRIT05UWlBBVEguIiIiCgoKVFpQQVRIID0gKCkKcmVzZXRfdHpwYXRoKCkKUEsDBBQAAAAAAAMgo1bWfJOr/l4AAP5eAAAVAAAAem9uZWluZm8vX3pvbmVpbmZvLnB5aW1wb3J0IGJpc2VjdAppbXBvcnQgY2FsZW5kYXIKaW1wb3J0IGNvbGxlY3Rpb25zCmltcG9ydCBmdW5jdG9vbHMKaW1wb3J0IHJlCmltcG9ydCB3ZWFrcmVmCmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEsIHR6aW5mbwoKZnJvbSAuIGltcG9ydCBfY29tbW9uLCBfdHpwYXRoCgpFUE9DSCA9IGRhdGV0aW1lKDE5NzAsIDEsIDEpCkVQT0NIT1JESU5BTCA9IGRhdGV0aW1lKDE5NzAsIDEsIDEpLnRvb3JkaW5hbCgpCgojIEl0IGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIHRvIGNvbnN0cnVjdCBuZXcgdGltZWRlbHRhIG9iamVjdHMsIGFuZCBpbiBtb3N0CiMgY2FzZXMgd2UncmUgbG9va2luZyBhdCB0aGUgc2FtZSBkZWx0YXMsIGxpa2UgaW50ZWdlciBudW1iZXJzIG9mIGhvdXJzLCBldGMuCiMgVG8gaW1wcm92ZSBzcGVlZCBhbmQgbWVtb3J5IHVzZSwgd2UnbGwga2VlcCBhIGRpY3Rpb25hcnkgd2l0aCByZWZlcmVuY2VzCiMgdG8gdGhlIG9uZXMgd2UndmUgYWxyZWFkeSB1c2VkIHNvIGZhci4KIwojIExvYWRpbmcgZXZlcnkgdGltZSB6b25lIGluIHRoZSAyMDIwYSB2ZXJzaW9uIG9mIHRoZSB0aW1lIHpvbmUgZGF0YWJhc2UKIyByZXF1aXJlcyA0NDcgdGltZWRlbHRhcywgd2hpY2ggcmVxdWlyZXMgYXBwcm94aW1hdGVseSB0aGUgYW1vdW50IG9mIHNwYWNlCiMgdGhhdCBab25lSW5mbygiQW1lcmljYS9OZXdfWW9yayIpIHdpdGggMjM2IHRyYW5zaXRpb25zIHRha2VzIHVwLCBzbyB3ZSB3aWxsCiMgc2V0IHRoZSBjYWNoZSBzaXplIHRvIDUxMiBzbyB0aGF0IGluIHRoZSBjb21tb24gY2FzZSB3ZSBhbHdheXMgZ2V0IGNhY2hlCiMgaGl0cywgYnV0IHNwZWNpZmljYWxseSBjcmFmdGVkIFpvbmVJbmZvIG9iamVjdHMgZG9uJ3QgbGVhayBhcmJpdHJhcnkgYW1vdW50cwojIG9mIG1lbW9yeS4KQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT01MTIpCmRlZiBfbG9hZF90aW1lZGVsdGEoc2Vjb25kcyk6CiAgICByZXR1cm4gdGltZWRlbHRhKHNlY29uZHM9c2Vjb25kcykKCgpjbGFzcyBab25lSW5mbyh0emluZm8pOgogICAgX3N0cm9uZ19jYWNoZV9zaXplID0gOAogICAgX3N0cm9uZ19jYWNoZSA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKICAgIF93ZWFrX2NhY2hlID0gd2Vha3JlZi5XZWFrVmFsdWVEaWN0aW9uYXJ5KCkKICAgIF9fbW9kdWxlX18gPSAiem9uZWluZm8iCgogICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CiAgICAgICAgY2xzLl9zdHJvbmdfY2FjaGUgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCiAgICAgICAgY2xzLl93ZWFrX2NhY2hlID0gd2Vha3JlZi5XZWFrVmFsdWVEaWN0aW9uYXJ5KCkKCiAgICBkZWYgX19uZXdfXyhjbHMsIGtleSk6CiAgICAgICAgaW5zdGFuY2UgPSBjbHMuX3dlYWtfY2FjaGUuZ2V0KGtleSwgTm9uZSkKICAgICAgICBpZiBpbnN0YW5jZSBpcyBOb25lOgogICAgICAgICAgICBpbnN0YW5jZSA9IGNscy5fd2Vha19jYWNoZS5zZXRkZWZhdWx0KGtleSwgY2xzLl9uZXdfaW5zdGFuY2Uoa2V5KSkKICAgICAgICAgICAgaW5zdGFuY2UuX2Zyb21fY2FjaGUgPSBUcnVlCgogICAgICAgICMgVXBkYXRlIHRoZSAic3Ryb25nIiBjYWNoZQogICAgICAgIGNscy5fc3Ryb25nX2NhY2hlW2tleV0gPSBjbHMuX3N0cm9uZ19jYWNoZS5wb3Aoa2V5LCBpbnN0YW5jZSkKCiAgICAgICAgaWYgbGVuKGNscy5fc3Ryb25nX2NhY2hlKSA+IGNscy5fc3Ryb25nX2NhY2hlX3NpemU6CiAgICAgICAgICAgIGNscy5fc3Ryb25nX2NhY2hlLnBvcGl0ZW0obGFzdD1GYWxzZSkKCiAgICAgICAgcmV0dXJuIGluc3RhbmNlCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgbm9fY2FjaGUoY2xzLCBrZXkpOgogICAgICAgIG9iaiA9IGNscy5fbmV3X2luc3RhbmNlKGtleSkKICAgICAgICBvYmouX2Zyb21fY2FjaGUgPSBGYWxzZQoKICAgICAgICByZXR1cm4gb2JqCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX25ld19pbnN0YW5jZShjbHMsIGtleSk6CiAgICAgICAgb2JqID0gc3VwZXIoKS5fX25ld19fKGNscykKICAgICAgICBvYmouX2tleSA9IGtleQogICAgICAgIG9iai5fZmlsZV9wYXRoID0gb2JqLl9maW5kX3R6ZmlsZShrZXkpCgogICAgICAgIGlmIG9iai5fZmlsZV9wYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICBmaWxlX29iaiA9IG9wZW4ob2JqLl9maWxlX3BhdGgsICJyYiIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZmlsZV9vYmogPSBfY29tbW9uLmxvYWRfdHpkYXRhKGtleSkKCiAgICAgICAgd2l0aCBmaWxlX29iaiBhcyBmOgogICAgICAgICAgICBvYmouX2xvYWRfZmlsZShmKQoKICAgICAgICByZXR1cm4gb2JqCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgZnJvbV9maWxlKGNscywgZm9iaiwgLywga2V5PU5vbmUpOgogICAgICAgIG9iaiA9IHN1cGVyKCkuX19uZXdfXyhjbHMpCiAgICAgICAgb2JqLl9rZXkgPSBrZXkKICAgICAgICBvYmouX2ZpbGVfcGF0aCA9IE5vbmUKICAgICAgICBvYmouX2xvYWRfZmlsZShmb2JqKQogICAgICAgIG9iai5fZmlsZV9yZXByID0gcmVwcihmb2JqKQoKICAgICAgICAjIERpc2FibGUgcGlja2xpbmcgZm9yIG9iamVjdHMgY3JlYXRlZCBmcm9tIGZpbGVzCiAgICAgICAgb2JqLl9fcmVkdWNlX18gPSBvYmouX2ZpbGVfcmVkdWNlCgogICAgICAgIHJldHVybiBvYmoKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBjbGVhcl9jYWNoZShjbHMsICosIG9ubHlfa2V5cz1Ob25lKToKICAgICAgICBpZiBvbmx5X2tleXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIGZvciBrZXkgaW4gb25seV9rZXlzOgogICAgICAgICAgICAgICAgY2xzLl93ZWFrX2NhY2hlLnBvcChrZXksIE5vbmUpCiAgICAgICAgICAgICAgICBjbHMuX3N0cm9uZ19jYWNoZS5wb3Aoa2V5LCBOb25lKQoKICAgICAgICBlbHNlOgogICAgICAgICAgICBjbHMuX3dlYWtfY2FjaGUuY2xlYXIoKQogICAgICAgICAgICBjbHMuX3N0cm9uZ19jYWNoZS5jbGVhcigpCgogICAgQHByb3BlcnR5CiAgICBkZWYga2V5KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLl9rZXkKCiAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKICAgICAgICByZXR1cm4gc2VsZi5fZmluZF90cmFucyhkdCkudXRjb2ZmCgogICAgZGVmIGRzdChzZWxmLCBkdCk6CiAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfdHJhbnMoZHQpLmRzdG9mZgoKICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgogICAgICAgIHJldHVybiBzZWxmLl9maW5kX3RyYW5zKGR0KS50em5hbWUKCiAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CiAgICAgICAgIiIiQ29udmVydCBmcm9tIGRhdGV0aW1lIGluIFVUQyB0byBkYXRldGltZSBpbiBsb2NhbCB0aW1lIiIiCgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZnJvbXV0YygpIHJlcXVpcmVzIGEgZGF0ZXRpbWUgYXJndW1lbnQiKQogICAgICAgIGlmIGR0LnR6aW5mbyBpcyBub3Qgc2VsZjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKCiAgICAgICAgdGltZXN0YW1wID0gc2VsZi5fZ2V0X2xvY2FsX3RpbWVzdGFtcChkdCkKICAgICAgICBudW1fdHJhbnMgPSBsZW4oc2VsZi5fdHJhbnNfdXRjKQoKICAgICAgICBpZiBudW1fdHJhbnMgPj0gMSBhbmQgdGltZXN0YW1wIDwgc2VsZi5fdHJhbnNfdXRjWzBdOgogICAgICAgICAgICB0dGkgPSBzZWxmLl90dGlfYmVmb3JlCiAgICAgICAgICAgIGZvbGQgPSAwCiAgICAgICAgZWxpZiAoCiAgICAgICAgICAgIG51bV90cmFucyA9PSAwIG9yIHRpbWVzdGFtcCA+IHNlbGYuX3RyYW5zX3V0Y1stMV0KICAgICAgICApIGFuZCBub3QgaXNpbnN0YW5jZShzZWxmLl90el9hZnRlciwgX3R0aW5mbyk6CiAgICAgICAgICAgIHR0aSwgZm9sZCA9IHNlbGYuX3R6X2FmdGVyLmdldF90cmFuc19pbmZvX2Zyb211dGMoCiAgICAgICAgICAgICAgICB0aW1lc3RhbXAsIGR0LnllYXIKICAgICAgICAgICAgKQogICAgICAgIGVsaWYgbnVtX3RyYW5zID09IDA6CiAgICAgICAgICAgIHR0aSA9IHNlbGYuX3R6X2FmdGVyCiAgICAgICAgICAgIGZvbGQgPSAwCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWR4ID0gYmlzZWN0LmJpc2VjdF9yaWdodChzZWxmLl90cmFuc191dGMsIHRpbWVzdGFtcCkKCiAgICAgICAgICAgIGlmIG51bV90cmFucyA+IDEgYW5kIHRpbWVzdGFtcCA+PSBzZWxmLl90cmFuc191dGNbMV06CiAgICAgICAgICAgICAgICB0dGlfcHJldiwgdHRpID0gc2VsZi5fdHRpbmZvc1tpZHggLSAyIDogaWR4XQogICAgICAgICAgICBlbGlmIHRpbWVzdGFtcCA+IHNlbGYuX3RyYW5zX3V0Y1stMV06CiAgICAgICAgICAgICAgICB0dGlfcHJldiA9IHNlbGYuX3R0aW5mb3NbLTFdCiAgICAgICAgICAgICAgICB0dGkgPSBzZWxmLl90el9hZnRlcgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdHRpX3ByZXYgPSBzZWxmLl90dGlfYmVmb3JlCiAgICAgICAgICAgICAgICB0dGkgPSBzZWxmLl90dGluZm9zWzBdCgogICAgICAgICAgICAjIERldGVjdCBmb2xkCiAgICAgICAgICAgIHNoaWZ0ID0gdHRpX3ByZXYudXRjb2ZmIC0gdHRpLnV0Y29mZgogICAgICAgICAgICBmb2xkID0gc2hpZnQudG90YWxfc2Vjb25kcygpID4gdGltZXN0YW1wIC0gc2VsZi5fdHJhbnNfdXRjW2lkeCAtIDFdCiAgICAgICAgZHQgKz0gdHRpLnV0Y29mZgogICAgICAgIGlmIGZvbGQ6CiAgICAgICAgICAgIHJldHVybiBkdC5yZXBsYWNlKGZvbGQ9MSkKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gZHQKCiAgICBkZWYgX2ZpbmRfdHJhbnMoc2VsZiwgZHQpOgogICAgICAgIGlmIGR0IGlzIE5vbmU6CiAgICAgICAgICAgIGlmIHNlbGYuX2ZpeGVkX29mZnNldDoKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl90el9hZnRlcgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIF9OT19UVElORk8KCiAgICAgICAgdHMgPSBzZWxmLl9nZXRfbG9jYWxfdGltZXN0YW1wKGR0KQoKICAgICAgICBsdCA9IHNlbGYuX3RyYW5zX2xvY2FsW2R0LmZvbGRdCgogICAgICAgIG51bV90cmFucyA9IGxlbihsdCkKCiAgICAgICAgaWYgbnVtX3RyYW5zIGFuZCB0cyA8IGx0WzBdOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fdHRpX2JlZm9yZQogICAgICAgIGVsaWYgbm90IG51bV90cmFucyBvciB0cyA+IGx0Wy0xXToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLl90el9hZnRlciwgX1RaU3RyKToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl90el9hZnRlci5nZXRfdHJhbnNfaW5mbyh0cywgZHQueWVhciwgZHQuZm9sZCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl90el9hZnRlcgogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgaWR4IGlzIHRoZSB0cmFuc2l0aW9uIHRoYXQgb2NjdXJzIGFmdGVyIHRoaXMgdGltZXN0YW1wLCBzbyB3ZQogICAgICAgICAgICAjIHN1YnRyYWN0IG9mZiAxIHRvIGdldCB0aGUgY3VycmVudCB0dGluZm8KICAgICAgICAgICAgaWR4ID0gYmlzZWN0LmJpc2VjdF9yaWdodChsdCwgdHMpIC0gMQogICAgICAgICAgICBhc3NlcnQgaWR4ID49IDAKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3R0aW5mb3NbaWR4XQoKICAgIGRlZiBfZ2V0X2xvY2FsX3RpbWVzdGFtcChzZWxmLCBkdCk6CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgKGR0LnRvb3JkaW5hbCgpIC0gRVBPQ0hPUkRJTkFMKSAqIDg2NDAwCiAgICAgICAgICAgICsgZHQuaG91ciAqIDM2MDAKICAgICAgICAgICAgKyBkdC5taW51dGUgKiA2MAogICAgICAgICAgICArIGR0LnNlY29uZAogICAgICAgICkKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9rZXkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBmIntzZWxmLl9rZXl9IgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiByZXByKHNlbGYpCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2tleSBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIGYie3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffShrZXk9e3NlbGYuX2tleSFyfSkiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGYie3NlbGYuX19jbGFzc19fLl9fbmFtZV9ffS5mcm9tX2ZpbGUoe3NlbGYuX2ZpbGVfcmVwcn0pIgoKICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18uX3VucGlja2xlLCAoc2VsZi5fa2V5LCBzZWxmLl9mcm9tX2NhY2hlKSkKCiAgICBkZWYgX2ZpbGVfcmVkdWNlKHNlbGYpOgogICAgICAgIGltcG9ydCBwaWNrbGUKCiAgICAgICAgcmFpc2UgcGlja2xlLlBpY2tsaW5nRXJyb3IoCiAgICAgICAgICAgICJDYW5ub3QgcGlja2xlIGEgWm9uZUluZm8gZmlsZSBjcmVhdGVkIGZyb20gYSBmaWxlIHN0cmVhbS4iCiAgICAgICAgKQoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF91bnBpY2tsZShjbHMsIGtleSwgZnJvbV9jYWNoZSwgLyk6CiAgICAgICAgaWYgZnJvbV9jYWNoZToKICAgICAgICAgICAgcmV0dXJuIGNscyhrZXkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIGNscy5ub19jYWNoZShrZXkpCgogICAgZGVmIF9maW5kX3R6ZmlsZShzZWxmLCBrZXkpOgogICAgICAgIHJldHVybiBfdHpwYXRoLmZpbmRfdHpmaWxlKGtleSkKCiAgICBkZWYgX2xvYWRfZmlsZShzZWxmLCBmb2JqKToKICAgICAgICAjIFJldHJpZXZlIGFsbCB0aGUgZGF0YSBhcyBpdCBleGlzdHMgaW4gdGhlIHpvbmVpbmZvIGZpbGUKICAgICAgICB0cmFuc19pZHgsIHRyYW5zX3V0YywgdXRjb2ZmLCBpc2RzdCwgYWJiciwgdHpfc3RyID0gX2NvbW1vbi5sb2FkX2RhdGEoCiAgICAgICAgICAgIGZvYmoKICAgICAgICApCgogICAgICAgICMgSW5mZXIgdGhlIERTVCBvZmZzZXRzIChuZWVkZWQgZm9yIC5kc3QoKSkgZnJvbSB0aGUgZGF0YQogICAgICAgIGRzdG9mZiA9IHNlbGYuX3V0Y29mZl90b19kc3RvZmYodHJhbnNfaWR4LCB1dGNvZmYsIGlzZHN0KQoKICAgICAgICAjIENvbnZlcnQgYWxsIHRoZSB0cmFuc2l0aW9uIHRpbWVzIChVVEMpIGludG8gInNlY29uZHMgc2luY2UgMTk3MC0wMS0wMSBsb2NhbCB0aW1lIgogICAgICAgIHRyYW5zX2xvY2FsID0gc2VsZi5fdHNfdG9fbG9jYWwodHJhbnNfaWR4LCB0cmFuc191dGMsIHV0Y29mZikKCiAgICAgICAgIyBDb25zdHJ1Y3QgYF90dGluZm9gIG9iamVjdHMgZm9yIGVhY2ggdHJhbnNpdGlvbiBpbiB0aGUgZmlsZQogICAgICAgIF90dGluZm9fbGlzdCA9IFsKICAgICAgICAgICAgX3R0aW5mbygKICAgICAgICAgICAgICAgIF9sb2FkX3RpbWVkZWx0YSh1dGNvZmZzZXQpLCBfbG9hZF90aW1lZGVsdGEoZHN0b2Zmc2V0KSwgdHpuYW1lCiAgICAgICAgICAgICkKICAgICAgICAgICAgZm9yIHV0Y29mZnNldCwgZHN0b2Zmc2V0LCB0em5hbWUgaW4gemlwKHV0Y29mZiwgZHN0b2ZmLCBhYmJyKQogICAgICAgIF0KCiAgICAgICAgc2VsZi5fdHJhbnNfdXRjID0gdHJhbnNfdXRjCiAgICAgICAgc2VsZi5fdHJhbnNfbG9jYWwgPSB0cmFuc19sb2NhbAogICAgICAgIHNlbGYuX3R0aW5mb3MgPSBbX3R0aW5mb19saXN0W2lkeF0gZm9yIGlkeCBpbiB0cmFuc19pZHhdCgogICAgICAgICMgRmluZCB0aGUgZmlyc3Qgbm9uLURTVCB0cmFuc2l0aW9uCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGlzZHN0KSk6CiAgICAgICAgICAgIGlmIG5vdCBpc2RzdFtpXToKICAgICAgICAgICAgICAgIHNlbGYuX3R0aV9iZWZvcmUgPSBfdHRpbmZvX2xpc3RbaV0KICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgc2VsZi5fdHRpbmZvczoKICAgICAgICAgICAgICAgIHNlbGYuX3R0aV9iZWZvcmUgPSBzZWxmLl90dGluZm9zWzBdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl90dGlfYmVmb3JlID0gTm9uZQoKICAgICAgICAjIFNldCB0aGUgImZhbGxiYWNrIiB0aW1lIHpvbmUKICAgICAgICBpZiB0el9zdHIgaXMgbm90IE5vbmUgYW5kIHR6X3N0ciAhPSBiIiI6CiAgICAgICAgICAgIHNlbGYuX3R6X2FmdGVyID0gX3BhcnNlX3R6X3N0cih0el9zdHIuZGVjb2RlKCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgbm90IHNlbGYuX3R0aW5mb3MgYW5kIG5vdCBfdHRpbmZvX2xpc3Q6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyB0aW1lIHpvbmUgaW5mb3JtYXRpb24gZm91bmQuIikKCiAgICAgICAgICAgIGlmIHNlbGYuX3R0aW5mb3M6CiAgICAgICAgICAgICAgICBzZWxmLl90el9hZnRlciA9IHNlbGYuX3R0aW5mb3NbLTFdCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLl90el9hZnRlciA9IF90dGluZm9fbGlzdFstMV0KCiAgICAgICAgIyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhICJmaXhlZCBvZmZzZXQiIHpvbmUsIG1lYW5pbmcgdGhhdCB0aGUgb3V0cHV0CiAgICAgICAgIyBvZiB0aGUgdXRjb2Zmc2V0LCBkc3QgYW5kIHR6bmFtZSBmdW5jdGlvbnMgZG9lcyBub3QgZGVwZW5kIG9uIHRoZQogICAgICAgICMgc3BlY2lmaWMgZGF0ZXRpbWUgcGFzc2VkLgogICAgICAgICMKICAgICAgICAjIFdlIG1ha2UgdGhyZWUgc2ltcGxpZnlpbmcgYXNzdW1wdGlvbnMgaGVyZToKICAgICAgICAjCiAgICAgICAgIyAxLiBJZiBfdHpfYWZ0ZXIgaXMgbm90IGEgX3R0aW5mbywgaXQgaGFzIHRyYW5zaXRpb25zIHRoYXQgbWlnaHQKICAgICAgICAjICAgIGFjdHVhbGx5IG9jY3VyIChpdCBpcyBwb3NzaWJsZSB0byBjb25zdHJ1Y3QgVFogc3RyaW5ncyB0aGF0CiAgICAgICAgIyAgICBzcGVjaWZ5IFNURCBhbmQgRFNUIGJ1dCBubyB0cmFuc2l0aW9ucyBldmVyIG9jY3VyLCBzdWNoIGFzCiAgICAgICAgIyAgICBBQUEwQkJCLDAvMCxKMzY1LzI1KS4KICAgICAgICAjIDIuIElmIF90dGluZm9fbGlzdCBjb250YWlucyBtb3JlIHRoYW4gb25lIF90dGluZm8gb2JqZWN0LCB0aGUgb2JqZWN0cwogICAgICAgICMgICAgcmVwcmVzZW50IGRpZmZlcmVudCBvZmZzZXRzLgogICAgICAgICMgMy4gX3R0aW5mb19saXN0IGNvbnRhaW5zIG5vIHVudXNlZCBfdHRpbmZvcyAoaW4gd2hpY2ggY2FzZSBhbgogICAgICAgICMgICAgb3RoZXJ3aXNlIGZpeGVkLW9mZnNldCB6b25lIHdpdGggZXh0cmEgX3R0aW5mb3MgZGVmaW5lZCBtYXkKICAgICAgICAjICAgIGFwcGVhciB0byAqbm90KiBiZSBhIGZpeGVkIG9mZnNldCB6b25lKS4KICAgICAgICAjCiAgICAgICAgIyBWaW9sYXRpb25zIHRvIHRoZXNlIGFzc3VtcHRpb25zIHdvdWxkIGJlIGZhaXJseSBleG90aWMsIGFuZCBleG90aWMKICAgICAgICAjIHpvbmVzIHNob3VsZCBhbG1vc3QgY2VydGFpbmx5IG5vdCBiZSB1c2VkIHdpdGggZGF0ZXRpbWUudGltZSAodGhlCiAgICAgICAgIyBvbmx5IHRoaW5nIHRoYXQgd291bGQgYmUgYWZmZWN0ZWQgYnkgdGhpcykuCiAgICAgICAgaWYgbGVuKF90dGluZm9fbGlzdCkgPiAxIG9yIG5vdCBpc2luc3RhbmNlKHNlbGYuX3R6X2FmdGVyLCBfdHRpbmZvKToKICAgICAgICAgICAgc2VsZi5fZml4ZWRfb2Zmc2V0ID0gRmFsc2UKICAgICAgICBlbGlmIG5vdCBfdHRpbmZvX2xpc3Q6CiAgICAgICAgICAgIHNlbGYuX2ZpeGVkX29mZnNldCA9IFRydWUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLl9maXhlZF9vZmZzZXQgPSBfdHRpbmZvX2xpc3RbMF0gPT0gc2VsZi5fdHpfYWZ0ZXIKCiAgICBAc3RhdGljbWV0aG9kCiAgICBkZWYgX3V0Y29mZl90b19kc3RvZmYodHJhbnNfaWR4LCB1dGNvZmZzZXRzLCBpc2RzdHMpOgogICAgICAgICMgTm93IHdlIG11c3QgdHJhbnNmb3JtIG91ciB0dGlzIGFuZCBhYmJycyBpbnRvIGBfdHRpbmZvYCBvYmplY3RzLAogICAgICAgICMgYnV0IHRoZXJlIGlzIGFuIGlzc3VlOiAuZHN0KCkgbXVzdCByZXR1cm4gYSB0aW1lZGVsdGEgd2l0aCB0aGUKICAgICAgICAjIGRpZmZlcmVuY2UgYmV0d2VlbiB1dGNvZmZzZXQoKSBhbmQgdGhlICJzdGFuZGFyZCIgb2Zmc2V0LCBidXQKICAgICAgICAjIHRoZSAiYmFzZSBvZmZzZXQiIGFuZCAiRFNUIG9mZnNldCIgYXJlIG5vdCBlbmNvZGVkIGluIHRoZSBmaWxlOwogICAgICAgICMgd2UgY2FuIGluZmVyIHdoYXQgdGhleSBhcmUgZnJvbSB0aGUgaXNkc3QgZmxhZywgYnV0IGl0IGlzIG5vdAogICAgICAgICMgc3VmZmljaWVudCB0byB0byBqdXN0IGxvb2sgYXQgdGhlIGxhc3Qgc3RhbmRhcmQgb2Zmc2V0LCBiZWNhdXNlCiAgICAgICAgIyBvY2Nhc2lvbmFsbHkgY291bnRyaWVzIHdpbGwgc2hpZnQgYm90aCBEU1Qgb2Zmc2V0IGFuZCBiYXNlIG9mZnNldC4KCiAgICAgICAgdHlwZWNudCA9IGxlbihpc2RzdHMpCiAgICAgICAgZHN0b2ZmcyA9IFswXSAqIHR5cGVjbnQgICMgUHJvdmlzaW9uYWxseSBhc3NpZ24gYWxsIHRvIDAuCiAgICAgICAgZHN0X2NudCA9IHN1bShpc2RzdHMpCiAgICAgICAgZHN0X2ZvdW5kID0gMAoKICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW4odHJhbnNfaWR4KSk6CiAgICAgICAgICAgIGlmIGRzdF9jbnQgPT0gZHN0X2ZvdW5kOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGlkeCA9IHRyYW5zX2lkeFtpXQoKICAgICAgICAgICAgZHN0ID0gaXNkc3RzW2lkeF0KCiAgICAgICAgICAgICMgV2UncmUgb25seSBnb2luZyB0byBsb29rIGF0IGRheWxpZ2h0IHNhdmluZyB0aW1lCiAgICAgICAgICAgIGlmIG5vdCBkc3Q6CiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgIyBTa2lwIGFueSBvZmZzZXRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYXNzaWduZWQKICAgICAgICAgICAgaWYgZHN0b2Zmc1tpZHhdICE9IDA6CiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgZHN0b2ZmID0gMAogICAgICAgICAgICB1dGNvZmYgPSB1dGNvZmZzZXRzW2lkeF0KCiAgICAgICAgICAgIGNvbXBfaWR4ID0gdHJhbnNfaWR4W2kgLSAxXQoKICAgICAgICAgICAgaWYgbm90IGlzZHN0c1tjb21wX2lkeF06CiAgICAgICAgICAgICAgICBkc3RvZmYgPSB1dGNvZmYgLSB1dGNvZmZzZXRzW2NvbXBfaWR4XQoKICAgICAgICAgICAgaWYgbm90IGRzdG9mZiBhbmQgaWR4IDwgKHR5cGVjbnQgLSAxKToKICAgICAgICAgICAgICAgIGNvbXBfaWR4ID0gdHJhbnNfaWR4W2kgKyAxXQoKICAgICAgICAgICAgICAgICMgSWYgdGhlIGZvbGxvd2luZyB0cmFuc2l0aW9uIGlzIGFsc28gRFNUIGFuZCB3ZSBjb3VsZG4ndAogICAgICAgICAgICAgICAgIyBmaW5kIHRoZSBEU1Qgb2Zmc2V0IGJ5IHRoaXMgcG9pbnQsIHdlJ3JlIGdvaW5nIHRvIGhhdmUgdG8KICAgICAgICAgICAgICAgICMgc2tpcCBpdCBhbmQgaG9wZSB0aGlzIHRyYW5zaXRpb24gZ2V0cyBhc3NpZ25lZCBsYXRlcgogICAgICAgICAgICAgICAgaWYgaXNkc3RzW2NvbXBfaWR4XToKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgIGRzdG9mZiA9IHV0Y29mZiAtIHV0Y29mZnNldHNbY29tcF9pZHhdCgogICAgICAgICAgICBpZiBkc3RvZmY6CiAgICAgICAgICAgICAgICBkc3RfZm91bmQgKz0gMQogICAgICAgICAgICAgICAgZHN0b2Zmc1tpZHhdID0gZHN0b2ZmCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBJZiB3ZSBkaWRuJ3QgZmluZCBhIHZhbGlkIHZhbHVlIGZvciBhIGdpdmVuIGluZGV4LCB3ZSdsbCBlbmQgdXAKICAgICAgICAgICAgIyB3aXRoIGRzdG9mZiA9IDAgZm9yIHNvbWV0aGluZyB3aGVyZSBgaXNkc3Q9MWAuIFRoaXMgaXMgb2J2aW91c2x5CiAgICAgICAgICAgICMgd3JvbmcgLSBvbmUgaG91ciB3aWxsIGJlIGEgbXVjaCBiZXR0ZXIgZ3Vlc3MgdGhhbiAwCiAgICAgICAgICAgIGZvciBpZHggaW4gcmFuZ2UodHlwZWNudCk6CiAgICAgICAgICAgICAgICBpZiBub3QgZHN0b2Zmc1tpZHhdIGFuZCBpc2RzdHNbaWR4XToKICAgICAgICAgICAgICAgICAgICBkc3RvZmZzW2lkeF0gPSAzNjAwCgogICAgICAgIHJldHVybiBkc3RvZmZzCgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIF90c190b19sb2NhbCh0cmFuc19pZHgsIHRyYW5zX2xpc3RfdXRjLCB1dGNvZmZzZXRzKToKICAgICAgICAiIiJHZW5lcmF0ZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwICppbiB0aGUgbG9jYWwgdGltZSouCgogICAgICAgIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGVhc2lseSBmaW5kIHRoZSB0cmFuc2l0aW9uIHRpbWVzIGluIGxvY2FsIHRpbWUiIiIKICAgICAgICBpZiBub3QgdHJhbnNfbGlzdF91dGM6CiAgICAgICAgICAgIHJldHVybiBbW10sIFtdXQoKICAgICAgICAjIFN0YXJ0IHdpdGggdGhlIHRpbWVzdGFtcHMgYW5kIG1vZGlmeSBpbi1wbGFjZQogICAgICAgIHRyYW5zX2xpc3Rfd2FsbCA9IFtsaXN0KHRyYW5zX2xpc3RfdXRjKSwgbGlzdCh0cmFuc19saXN0X3V0YyldCgogICAgICAgIGlmIGxlbih1dGNvZmZzZXRzKSA+IDE6CiAgICAgICAgICAgIG9mZnNldF8wID0gdXRjb2Zmc2V0c1swXQogICAgICAgICAgICBvZmZzZXRfMSA9IHV0Y29mZnNldHNbdHJhbnNfaWR4WzBdXQogICAgICAgICAgICBpZiBvZmZzZXRfMSA+IG9mZnNldF8wOgogICAgICAgICAgICAgICAgb2Zmc2V0XzEsIG9mZnNldF8wID0gb2Zmc2V0XzAsIG9mZnNldF8xCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb2Zmc2V0XzAgPSBvZmZzZXRfMSA9IHV0Y29mZnNldHNbMF0KCiAgICAgICAgdHJhbnNfbGlzdF93YWxsWzBdWzBdICs9IG9mZnNldF8wCiAgICAgICAgdHJhbnNfbGlzdF93YWxsWzFdWzBdICs9IG9mZnNldF8xCgogICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbih0cmFuc19pZHgpKToKICAgICAgICAgICAgb2Zmc2V0XzAgPSB1dGNvZmZzZXRzW3RyYW5zX2lkeFtpIC0gMV1dCiAgICAgICAgICAgIG9mZnNldF8xID0gdXRjb2Zmc2V0c1t0cmFuc19pZHhbaV1dCgogICAgICAgICAgICBpZiBvZmZzZXRfMSA+IG9mZnNldF8wOgogICAgICAgICAgICAgICAgb2Zmc2V0XzEsIG9mZnNldF8wID0gb2Zmc2V0XzAsIG9mZnNldF8xCgogICAgICAgICAgICB0cmFuc19saXN0X3dhbGxbMF1baV0gKz0gb2Zmc2V0XzAKICAgICAgICAgICAgdHJhbnNfbGlzdF93YWxsWzFdW2ldICs9IG9mZnNldF8xCgogICAgICAgIHJldHVybiB0cmFuc19saXN0X3dhbGwKCgpjbGFzcyBfdHRpbmZvOgogICAgX19zbG90c19fID0gWyJ1dGNvZmYiLCAiZHN0b2ZmIiwgInR6bmFtZSJdCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHV0Y29mZiwgZHN0b2ZmLCB0em5hbWUpOgogICAgICAgIHNlbGYudXRjb2ZmID0gdXRjb2ZmCiAgICAgICAgc2VsZi5kc3RvZmYgPSBkc3RvZmYKICAgICAgICBzZWxmLnR6bmFtZSA9IHR6bmFtZQoKICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgIHJldHVybiAoCiAgICAgICAgICAgIHNlbGYudXRjb2ZmID09IG90aGVyLnV0Y29mZgogICAgICAgICAgICBhbmQgc2VsZi5kc3RvZmYgPT0gb3RoZXIuZHN0b2ZmCiAgICAgICAgICAgIGFuZCBzZWxmLnR6bmFtZSA9PSBvdGhlci50em5hbWUKICAgICAgICApCgogICAgZGVmIF9fcmVwcl9fKHNlbGYpOiAgIyBwcmFnbWE6IG5vY292ZXIKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBmIntzZWxmLl9fY2xhc3NfXy5fX25hbWVfX30iCiAgICAgICAgICAgICsgZiIoe3NlbGYudXRjb2ZmfSwge3NlbGYuZHN0b2ZmfSwge3NlbGYudHpuYW1lfSkiCiAgICAgICAgKQoKCl9OT19UVElORk8gPSBfdHRpbmZvKE5vbmUsIE5vbmUsIE5vbmUpCgoKY2xhc3MgX1RaU3RyOgogICAgX19zbG90c19fID0gKAogICAgICAgICJzdGQiLAogICAgICAgICJkc3QiLAogICAgICAgICJzdGFydCIsCiAgICAgICAgImVuZCIsCiAgICAgICAgImdldF90cmFuc19pbmZvIiwKICAgICAgICAiZ2V0X3RyYW5zX2luZm9fZnJvbXV0YyIsCiAgICAgICAgImRzdF9kaWZmIiwKICAgICkKCiAgICBkZWYgX19pbml0X18oCiAgICAgICAgc2VsZiwgc3RkX2FiYnIsIHN0ZF9vZmZzZXQsIGRzdF9hYmJyLCBkc3Rfb2Zmc2V0LCBzdGFydD1Ob25lLCBlbmQ9Tm9uZQogICAgKToKICAgICAgICBzZWxmLmRzdF9kaWZmID0gZHN0X29mZnNldCAtIHN0ZF9vZmZzZXQKICAgICAgICBzdGRfb2Zmc2V0ID0gX2xvYWRfdGltZWRlbHRhKHN0ZF9vZmZzZXQpCiAgICAgICAgc2VsZi5zdGQgPSBfdHRpbmZvKAogICAgICAgICAgICB1dGNvZmY9c3RkX29mZnNldCwgZHN0b2ZmPV9sb2FkX3RpbWVkZWx0YSgwKSwgdHpuYW1lPXN0ZF9hYmJyCiAgICAgICAgKQoKICAgICAgICBzZWxmLnN0YXJ0ID0gc3RhcnQKICAgICAgICBzZWxmLmVuZCA9IGVuZAoKICAgICAgICBkc3Rfb2Zmc2V0ID0gX2xvYWRfdGltZWRlbHRhKGRzdF9vZmZzZXQpCiAgICAgICAgZGVsdGEgPSBfbG9hZF90aW1lZGVsdGEoc2VsZi5kc3RfZGlmZikKICAgICAgICBzZWxmLmRzdCA9IF90dGluZm8odXRjb2ZmPWRzdF9vZmZzZXQsIGRzdG9mZj1kZWx0YSwgdHpuYW1lPWRzdF9hYmJyKQoKICAgICAgICAjIFRoZXNlIGFyZSBhc3NlcnRpb25zIGJlY2F1c2UgdGhlIGNvbnN0cnVjdG9yIHNob3VsZCBvbmx5IGJlIGNhbGxlZAogICAgICAgICMgYnkgZnVuY3Rpb25zIHRoYXQgd291bGQgZmFpbCBiZWZvcmUgcGFzc2luZyBzdGFydCBvciBlbmQKICAgICAgICBhc3NlcnQgc3RhcnQgaXMgbm90IE5vbmUsICJObyB0cmFuc2l0aW9uIHN0YXJ0IHNwZWNpZmllZCIKICAgICAgICBhc3NlcnQgZW5kIGlzIG5vdCBOb25lLCAiTm8gdHJhbnNpdGlvbiBlbmQgc3BlY2lmaWVkIgoKICAgICAgICBzZWxmLmdldF90cmFuc19pbmZvID0gc2VsZi5fZ2V0X3RyYW5zX2luZm8KICAgICAgICBzZWxmLmdldF90cmFuc19pbmZvX2Zyb211dGMgPSBzZWxmLl9nZXRfdHJhbnNfaW5mb19mcm9tdXRjCgogICAgZGVmIHRyYW5zaXRpb25zKHNlbGYsIHllYXIpOgogICAgICAgIHN0YXJ0ID0gc2VsZi5zdGFydC55ZWFyX3RvX2Vwb2NoKHllYXIpCiAgICAgICAgZW5kID0gc2VsZi5lbmQueWVhcl90b19lcG9jaCh5ZWFyKQogICAgICAgIHJldHVybiBzdGFydCwgZW5kCgogICAgZGVmIF9nZXRfdHJhbnNfaW5mbyhzZWxmLCB0cywgeWVhciwgZm9sZCk6CiAgICAgICAgIiIiR2V0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB0cmFuc2l0aW9uIC0gdHRpIiIiCiAgICAgICAgc3RhcnQsIGVuZCA9IHNlbGYudHJhbnNpdGlvbnMoeWVhcikKCiAgICAgICAgIyBXaXRoIGZvbGQgPSAwLCB0aGUgcGVyaW9kIChkZW5vbWluYXRlZCBpbiBsb2NhbCB0aW1lKSB3aXRoIHRoZQogICAgICAgICMgc21hbGxlciBvZmZzZXQgc3RhcnRzIGF0IHRoZSBlbmQgb2YgdGhlIGdhcCBhbmQgZW5kcyBhdCB0aGUgZW5kIG9mCiAgICAgICAgIyB0aGUgZm9sZDsgd2l0aCBmb2xkID0gMSwgaXQgcnVucyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZ2FwIHRvIHRoZQogICAgICAgICMgYmVnaW5uaW5nIG9mIHRoZSBmb2xkLgogICAgICAgICMKICAgICAgICAjIFNvIGluIG9yZGVyIHRvIGRldGVybWluZSB0aGUgRFNUIGJvdW5kYXJpZXMgd2UgbmVlZCB0byBrbm93IGJvdGgKICAgICAgICAjIHRoZSBmb2xkIGFuZCB3aGV0aGVyIERTVCBpcyBwb3NpdGl2ZSBvciBuZWdhdGl2ZSAocmFyZSksIGFuZCBpdAogICAgICAgICMgdHVybnMgb3V0IHRoYXQgdGhpcyBib2lscyBkb3duIHRvIGZvbGQgWE9SIGlzX3Bvc2l0aXZlLgogICAgICAgIGlmIGZvbGQgPT0gKHNlbGYuZHN0X2RpZmYgPj0gMCk6CiAgICAgICAgICAgIGVuZCAtPSBzZWxmLmRzdF9kaWZmCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3RhcnQgKz0gc2VsZi5kc3RfZGlmZgoKICAgICAgICBpZiBzdGFydCA8IGVuZDoKICAgICAgICAgICAgaXNkc3QgPSBzdGFydCA8PSB0cyA8IGVuZAogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGlzZHN0ID0gbm90IChlbmQgPD0gdHMgPCBzdGFydCkKCiAgICAgICAgcmV0dXJuIHNlbGYuZHN0IGlmIGlzZHN0IGVsc2Ugc2VsZi5zdGQKCiAgICBkZWYgX2dldF90cmFuc19pbmZvX2Zyb211dGMoc2VsZiwgdHMsIHllYXIpOgogICAgICAgIHN0YXJ0LCBlbmQgPSBzZWxmLnRyYW5zaXRpb25zKHllYXIpCiAgICAgICAgc3RhcnQgLT0gc2VsZi5zdGQudXRjb2ZmLnRvdGFsX3NlY29uZHMoKQogICAgICAgIGVuZCAtPSBzZWxmLmRzdC51dGNvZmYudG90YWxfc2Vjb25kcygpCgogICAgICAgIGlmIHN0YXJ0IDwgZW5kOgogICAgICAgICAgICBpc2RzdCA9IHN0YXJ0IDw9IHRzIDwgZW5kCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaXNkc3QgPSBub3QgKGVuZCA8PSB0cyA8IHN0YXJ0KQoKICAgICAgICAjIEZvciBwb3NpdGl2ZSBEU1QsIHRoZSBhbWJpZ3VvdXMgcGVyaW9kIGlzIG9uZSBkc3RfZGlmZiBhZnRlciB0aGUgZW5kCiAgICAgICAgIyBvZiBEU1Q7IGZvciBuZWdhdGl2ZSBEU1QsIHRoZSBhbWJpZ3VvdXMgcGVyaW9kIGlzIG9uZSBkc3RfZGlmZiBiZWZvcmUKICAgICAgICAjIHRoZSBzdGFydCBvZiBEU1QuCiAgICAgICAgaWYgc2VsZi5kc3RfZGlmZiA+IDA6CiAgICAgICAgICAgIGFtYmlnX3N0YXJ0ID0gZW5kCiAgICAgICAgICAgIGFtYmlnX2VuZCA9IGVuZCArIHNlbGYuZHN0X2RpZmYKICAgICAgICBlbHNlOgogICAgICAgICAgICBhbWJpZ19zdGFydCA9IHN0YXJ0CiAgICAgICAgICAgIGFtYmlnX2VuZCA9IHN0YXJ0IC0gc2VsZi5kc3RfZGlmZgoKICAgICAgICBmb2xkID0gYW1iaWdfc3RhcnQgPD0gdHMgPCBhbWJpZ19lbmQKCiAgICAgICAgcmV0dXJuIChzZWxmLmRzdCBpZiBpc2RzdCBlbHNlIHNlbGYuc3RkLCBmb2xkKQoKCmRlZiBfcG9zdF9lcG9jaF9kYXlzX2JlZm9yZV95ZWFyKHllYXIpOgogICAgIiIiR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBiZXR3ZWVuIDE5NzAtMDEtMDEgYW5kIFlFQVItMDEtMDEiIiIKICAgIHkgPSB5ZWFyIC0gMQogICAgcmV0dXJuIHkgKiAzNjUgKyB5IC8vIDQgLSB5IC8vIDEwMCArIHkgLy8gNDAwIC0gRVBPQ0hPUkRJTkFMCgoKY2xhc3MgX0RheU9mZnNldDoKICAgIF9fc2xvdHNfXyA9IFsiZCIsICJqdWxpYW4iLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIl0KCiAgICBkZWYgX19pbml0X18oc2VsZiwgZCwganVsaWFuLCBob3VyPTIsIG1pbnV0ZT0wLCBzZWNvbmQ9MCk6CiAgICAgICAgaWYgbm90ICgwICsganVsaWFuKSA8PSBkIDw9IDM2NToKICAgICAgICAgICAgbWluX2RheSA9IDAgKyBqdWxpYW4KICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmImQgbXVzdCBiZSBpbiBbe21pbl9kYXl9LCAzNjVdLCBub3Q6IHtkfSIpCgogICAgICAgIHNlbGYuZCA9IGQKICAgICAgICBzZWxmLmp1bGlhbiA9IGp1bGlhbgogICAgICAgIHNlbGYuaG91ciA9IGhvdXIKICAgICAgICBzZWxmLm1pbnV0ZSA9IG1pbnV0ZQogICAgICAgIHNlbGYuc2Vjb25kID0gc2Vjb25kCgogICAgZGVmIHllYXJfdG9fZXBvY2goc2VsZiwgeWVhcik6CiAgICAgICAgZGF5c19iZWZvcmVfeWVhciA9IF9wb3N0X2Vwb2NoX2RheXNfYmVmb3JlX3llYXIoeWVhcikKCiAgICAgICAgZCA9IHNlbGYuZAogICAgICAgIGlmIHNlbGYuanVsaWFuIGFuZCBkID49IDU5IGFuZCBjYWxlbmRhci5pc2xlYXAoeWVhcik6CiAgICAgICAgICAgIGQgKz0gMQoKICAgICAgICBlcG9jaCA9IChkYXlzX2JlZm9yZV95ZWFyICsgZCkgKiA4NjQwMAogICAgICAgIGVwb2NoICs9IHNlbGYuaG91ciAqIDM2MDAgKyBzZWxmLm1pbnV0ZSAqIDYwICsgc2VsZi5zZWNvbmQKCiAgICAgICAgcmV0dXJuIGVwb2NoCgoKY2xhc3MgX0NhbGVuZGFyT2Zmc2V0OgogICAgX19zbG90c19fID0gWyJtIiwgInciLCAiZCIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiXQoKICAgIF9EQVlTX0JFRk9SRV9NT05USCA9ICgKICAgICAgICAtMSwKICAgICAgICAwLAogICAgICAgIDMxLAogICAgICAgIDU5LAogICAgICAgIDkwLAogICAgICAgIDEyMCwKICAgICAgICAxNTEsCiAgICAgICAgMTgxLAogICAgICAgIDIxMiwKICAgICAgICAyNDMsCiAgICAgICAgMjczLAogICAgICAgIDMwNCwKICAgICAgICAzMzQsCiAgICApCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG0sIHcsIGQsIGhvdXI9MiwgbWludXRlPTAsIHNlY29uZD0wKToKICAgICAgICBpZiBub3QgMCA8IG0gPD0gMTI6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm0gbXVzdCBiZSBpbiAoMCwgMTJdIikKCiAgICAgICAgaWYgbm90IDAgPCB3IDw9IDU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIncgbXVzdCBiZSBpbiAoMCwgNV0iKQoKICAgICAgICBpZiBub3QgMCA8PSBkIDw9IDY6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImQgbXVzdCBiZSBpbiBbMCwgNl0iKQoKICAgICAgICBzZWxmLm0gPSBtCiAgICAgICAgc2VsZi53ID0gdwogICAgICAgIHNlbGYuZCA9IGQKICAgICAgICBzZWxmLmhvdXIgPSBob3VyCiAgICAgICAgc2VsZi5taW51dGUgPSBtaW51dGUKICAgICAgICBzZWxmLnNlY29uZCA9IHNlY29uZAoKICAgIEBjbGFzc21ldGhvZAogICAgZGVmIF95bWQyb3JkKGNscywgeWVhciwgbW9udGgsIGRheSk6CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgX3Bvc3RfZXBvY2hfZGF5c19iZWZvcmVfeWVhcih5ZWFyKQogICAgICAgICAgICArIGNscy5fREFZU19CRUZPUkVfTU9OVEhbbW9udGhdCiAgICAgICAgICAgICsgKG1vbnRoID4gMiBhbmQgY2FsZW5kYXIuaXNsZWFwKHllYXIpKQogICAgICAgICAgICArIGRheQogICAgICAgICkKCiAgICAjIFRPRE86IFRoZXNlIGFyZSBub3QgYWN0dWFsbHkgZXBvY2ggZGF0ZXMgYXMgdGhleSBhcmUgZXhwcmVzc2VkIGluIGxvY2FsIHRpbWUKICAgIGRlZiB5ZWFyX3RvX2Vwb2NoKHNlbGYsIHllYXIpOgogICAgICAgICIiIkNhbGN1bGF0ZXMgdGhlIGRhdGV0aW1lIG9mIHRoZSBvY2N1cnJlbmNlIGZyb20gdGhlIHllYXIiIiIKICAgICAgICAjIFdlIGtub3cgeWVhciBhbmQgbW9udGgsIHdlIG5lZWQgdG8gY29udmVydCB3LCBkIGludG8gZGF5IG9mIG1vbnRoCiAgICAgICAgIwogICAgICAgICMgV2VlayAxIGlzIHRoZSBmaXJzdCB3ZWVrIGluIHdoaWNoIGRheSBgZGAgKHdoZXJlIDAgPSBTdW5kYXkpIGFwcGVhcnMuCiAgICAgICAgIyBXZWVrIDUgcmVwcmVzZW50cyB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGRheSBgZGAsIHNvIHdlIG5lZWQgdG8ga25vdwogICAgICAgICMgdGhlIHJhbmdlIG9mIHRoZSBtb250aC4KICAgICAgICBmaXJzdF9kYXksIGRheXNfaW5fbW9udGggPSBjYWxlbmRhci5tb250aHJhbmdlKHllYXIsIHNlbGYubSkKCiAgICAgICAgIyBUaGlzIGVxdWF0aW9uIHNlZW1zIG1hZ2ljYWwsIHNvIEknbGwgYnJlYWsgaXQgZG93bjoKICAgICAgICAjIDEuIGNhbGVuZGFyIHNheXMgMCA9IE1vbmRheSwgUE9TSVggc2F5cyAwID0gU3VuZGF5CiAgICAgICAgIyAgICBzbyB3ZSBuZWVkIGZpcnN0X2RheSArIDEgdG8gZ2V0IDEgPSBNb25kYXkgLT4gNyA9IFN1bmRheSwKICAgICAgICAjICAgIHdoaWNoIGlzIHN0aWxsIGVxdWl2YWxlbnQgYmVjYXVzZSB0aGlzIG1hdGggaXMgbW9kIDcKICAgICAgICAjIDIuIEdldCBmaXJzdCBkYXkgLSBkZXNpcmVkIGRheSBtb2QgNzogLTEgJSA3ID0gNiwgc28gd2UgZG9uJ3QgbmVlZAogICAgICAgICMgICAgdG8gZG8gYW55dGhpbmcgdG8gYWRqdXN0IG5lZ2F0aXZlIG51bWJlcnMuCiAgICAgICAgIyAzLiBBZGQgMSBiZWNhdXNlIG1vbnRoIGRheXMgYXJlIGEgMS1iYXNlZCBpbmRleC4KICAgICAgICBtb250aF9kYXkgPSAoc2VsZi5kIC0gKGZpcnN0X2RheSArIDEpKSAlIDcgKyAxCgogICAgICAgICMgTm93IHVzZSBhIDAtYmFzZWQgaW5kZXggdmVyc2lvbiBvZiBgd2AgdG8gY2FsY3VsYXRlIHRoZSB3LXRoCiAgICAgICAgIyBvY2N1cnJlbmNlIG9mIGBkYAogICAgICAgIG1vbnRoX2RheSArPSAoc2VsZi53IC0gMSkgKiA3CgogICAgICAgICMgbW9udGhfZGF5IHdpbGwgb25seSBiZSA+IGRheXNfaW5fbW9udGggaWYgdyB3YXMgNSwgYW5kIGB3YCBtZWFucwogICAgICAgICMgImxhc3Qgb2NjdXJyZW5jZSBvZiBgZGAiLCBzbyBub3cgd2UganVzdCBjaGVjayBpZiB3ZSBvdmVyLXNob3QgdGhlCiAgICAgICAgIyBlbmQgb2YgdGhlIG1vbnRoIGFuZCBpZiBzbyBrbm9jayBvZmYgMSB3ZWVrLgogICAgICAgIGlmIG1vbnRoX2RheSA+IGRheXNfaW5fbW9udGg6CiAgICAgICAgICAgIG1vbnRoX2RheSAtPSA3CgogICAgICAgIG9yZGluYWwgPSBzZWxmLl95bWQyb3JkKHllYXIsIHNlbGYubSwgbW9udGhfZGF5KQogICAgICAgIGVwb2NoID0gb3JkaW5hbCAqIDg2NDAwCiAgICAgICAgZXBvY2ggKz0gc2VsZi5ob3VyICogMzYwMCArIHNlbGYubWludXRlICogNjAgKyBzZWxmLnNlY29uZAogICAgICAgIHJldHVybiBlcG9jaAoKCmRlZiBfcGFyc2VfdHpfc3RyKHR6X3N0cik6CiAgICAjIFRoZSB0eiBzdHJpbmcgaGFzIHRoZSBmb3JtYXQ6CiAgICAjCiAgICAjIHN0ZFtvZmZzZXRbZHN0W29mZnNldF0sc3RhcnRbL3RpbWVdLGVuZFsvdGltZV1dXQogICAgIwogICAgIyBzdGQgYW5kIGRzdCBtdXN0IGJlIDMgb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcgYW5kIG11c3Qgbm90IGNvbnRhaW4KICAgICMgYSBsZWFkaW5nIGNvbG9uLCBlbWJlZGRlZCBkaWdpdHMsIGNvbW1hcywgbm9yIGEgcGx1cyBvciBtaW51cyBzaWduczsKICAgICMgVGhlIHNwYWNlcyBiZXR3ZWVuICJzdGQiIGFuZCAib2Zmc2V0IiBhcmUgb25seSBmb3IgZGlzcGxheSBhbmQgYXJlCiAgICAjIG5vdCBhY3R1YWxseSBwcmVzZW50IGluIHRoZSBzdHJpbmcuCiAgICAjCiAgICAjIFRoZSBmb3JtYXQgb2YgdGhlIG9mZnNldCBpcyBgYFsrfC1daGhbOm1tWzpzc11dYGAKCiAgICBvZmZzZXRfc3RyLCAqc3RhcnRfZW5kX3N0ciA9IHR6X3N0ci5zcGxpdCgiLCIsIDEpCgogICAgIyBmbXQ6IG9mZgogICAgcGFyc2VyX3JlID0gcmUuY29tcGlsZSgKICAgICAgICByIig/UDxzdGQ+W148MC05Oi4rLV0rfDxbYS16QS1aMC05K1wtXSs+KSIgKwogICAgICAgIHIiKCg/UDxzdGRvZmY+WystXT9cZHsxLDJ9KDpcZHsyfSg6XGR7Mn0pPyk/KSIgKwogICAgICAgICAgICByIigoP1A8ZHN0PlteMC05Oi4rLV0rfDxbYS16QS1aMC05K1wtXSs+KSIgKwogICAgICAgICAgICAgICAgciIoKD9QPGRzdG9mZj5bKy1dP1xkezEsMn0oOlxkezJ9KDpcZHsyfSk/KT8pKT8iICsKICAgICAgICAgICAgciIpPyIgKyAjIGRzdAogICAgICAgIHIiKT8kIiAjIHN0ZG9mZgogICAgKQogICAgIyBmbXQ6IG9uCgogICAgbSA9IHBhcnNlcl9yZS5tYXRjaChvZmZzZXRfc3RyKQoKICAgIGlmIG0gaXMgTm9uZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYie3R6X3N0cn0gaXMgbm90IGEgdmFsaWQgVFogc3RyaW5nIikKCiAgICBzdGRfYWJiciA9IG0uZ3JvdXAoInN0ZCIpCiAgICBkc3RfYWJiciA9IG0uZ3JvdXAoImRzdCIpCiAgICBkc3Rfb2Zmc2V0ID0gTm9uZQoKICAgIHN0ZF9hYmJyID0gc3RkX2FiYnIuc3RyaXAoIjw+IikKCiAgICBpZiBkc3RfYWJicjoKICAgICAgICBkc3RfYWJiciA9IGRzdF9hYmJyLnN0cmlwKCI8PiIpCgogICAgaWYgc3RkX29mZnNldCA6PSBtLmdyb3VwKCJzdGRvZmYiKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHN0ZF9vZmZzZXQgPSBfcGFyc2VfdHpfZGVsdGEoc3RkX29mZnNldCkKICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiSW52YWxpZCBTVEQgb2Zmc2V0IGluIHt0el9zdHJ9IikgZnJvbSBlCiAgICBlbHNlOgogICAgICAgIHN0ZF9vZmZzZXQgPSAwCgogICAgaWYgZHN0X2FiYnIgaXMgbm90IE5vbmU6CiAgICAgICAgaWYgZHN0X29mZnNldCA6PSBtLmdyb3VwKCJkc3RvZmYiKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZHN0X29mZnNldCA9IF9wYXJzZV90el9kZWx0YShkc3Rfb2Zmc2V0KQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIkludmFsaWQgRFNUIG9mZnNldCBpbiB7dHpfc3RyfSIpIGZyb20gZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRzdF9vZmZzZXQgPSBzdGRfb2Zmc2V0ICsgMzYwMAoKICAgICAgICBpZiBub3Qgc3RhcnRfZW5kX3N0cjoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIk1pc3NpbmcgdHJhbnNpdGlvbiBydWxlczoge3R6X3N0cn0iKQoKICAgICAgICBzdGFydF9lbmRfc3RycyA9IHN0YXJ0X2VuZF9zdHJbMF0uc3BsaXQoIiwiLCAxKQogICAgICAgIHRyeToKICAgICAgICAgICAgc3RhcnQsIGVuZCA9IChfcGFyc2VfZHN0X3N0YXJ0X2VuZCh4KSBmb3IgeCBpbiBzdGFydF9lbmRfc3RycykKICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiSW52YWxpZCBUWiBzdHJpbmc6IHt0el9zdHJ9IikgZnJvbSBlCgogICAgICAgIHJldHVybiBfVFpTdHIoc3RkX2FiYnIsIHN0ZF9vZmZzZXQsIGRzdF9hYmJyLCBkc3Rfb2Zmc2V0LCBzdGFydCwgZW5kKQogICAgZWxpZiBzdGFydF9lbmRfc3RyOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJUcmFuc2l0aW9uIHJ1bGUgcHJlc2VudCB3aXRob3V0IERTVDoge3R6X3N0cn0iKQogICAgZWxzZToKICAgICAgICAjIFRoaXMgaXMgYSBzdGF0aWMgdHRpbmZvLCBkb24ndCByZXR1cm4gX1RaU3RyCiAgICAgICAgcmV0dXJuIF90dGluZm8oCiAgICAgICAgICAgIF9sb2FkX3RpbWVkZWx0YShzdGRfb2Zmc2V0KSwgX2xvYWRfdGltZWRlbHRhKDApLCBzdGRfYWJicgogICAgICAgICkKCgpkZWYgX3BhcnNlX2RzdF9zdGFydF9lbmQoZHN0c3RyKToKICAgIGRhdGUsICp0aW1lID0gZHN0c3RyLnNwbGl0KCIvIikKICAgIGlmIGRhdGVbMF0gPT0gIk0iOgogICAgICAgIG5faXNfanVsaWFuID0gRmFsc2UKICAgICAgICBtID0gcmUubWF0Y2gociJNKFxkezEsMn0pXC4oXGQpLihcZCkkIiwgZGF0ZSkKICAgICAgICBpZiBtIGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJJbnZhbGlkIGRzdCBzdGFydC9lbmQgZGF0ZToge2RzdHN0cn0iKQogICAgICAgIGRhdGVfb2Zmc2V0ID0gdHVwbGUobWFwKGludCwgbS5ncm91cHMoKSkpCiAgICAgICAgb2Zmc2V0ID0gX0NhbGVuZGFyT2Zmc2V0KCpkYXRlX29mZnNldCkKICAgIGVsc2U6CiAgICAgICAgaWYgZGF0ZVswXSA9PSAiSiI6CiAgICAgICAgICAgIG5faXNfanVsaWFuID0gVHJ1ZQogICAgICAgICAgICBkYXRlID0gZGF0ZVsxOl0KICAgICAgICBlbHNlOgogICAgICAgICAgICBuX2lzX2p1bGlhbiA9IEZhbHNlCgogICAgICAgIGRveSA9IGludChkYXRlKQogICAgICAgIG9mZnNldCA9IF9EYXlPZmZzZXQoZG95LCBuX2lzX2p1bGlhbikKCiAgICBpZiB0aW1lOgogICAgICAgIHRpbWVfY29tcG9uZW50cyA9IGxpc3QobWFwKGludCwgdGltZVswXS5zcGxpdCgiOiIpKSkKICAgICAgICBuX2NvbXBvbmVudHMgPSBsZW4odGltZV9jb21wb25lbnRzKQogICAgICAgIGlmIG5fY29tcG9uZW50cyA8IDM6CiAgICAgICAgICAgIHRpbWVfY29tcG9uZW50cy5leHRlbmQoWzBdICogKDMgLSBuX2NvbXBvbmVudHMpKQogICAgICAgIG9mZnNldC5ob3VyLCBvZmZzZXQubWludXRlLCBvZmZzZXQuc2Vjb25kID0gdGltZV9jb21wb25lbnRzCgogICAgcmV0dXJuIG9mZnNldAoKCmRlZiBfcGFyc2VfdHpfZGVsdGEodHpfZGVsdGEpOgogICAgbWF0Y2ggPSByZS5tYXRjaCgKICAgICAgICByIig/UDxzaWduPlsrLV0pPyg/UDxoPlxkezEsMn0pKDooP1A8bT5cZHsyfSkoOig/UDxzPlxkezJ9KSk/KT8iLAogICAgICAgIHR6X2RlbHRhLAogICAgKQogICAgIyBBbnl0aGluZyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBzaG91bGQgYWxyZWFkeSBoYXZlIGhpdCBhbiBlcXVpdmFsZW50CiAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaW5kIHRoZSBzZWN0aW9uIHRvIHBhcnNlLgogICAgYXNzZXJ0IG1hdGNoIGlzIG5vdCBOb25lLCB0el9kZWx0YQoKICAgIGgsIG0sIHMgPSAoCiAgICAgICAgaW50KHYpIGlmIHYgaXMgbm90IE5vbmUgZWxzZSAwCiAgICAgICAgZm9yIHYgaW4gbWFwKG1hdGNoLmdyb3VwLCAoImgiLCAibSIsICJzIikpCiAgICApCgogICAgdG90YWwgPSBoICogMzYwMCArIG0gKiA2MCArIHMKCiAgICBpZiBub3QgLTg2NDAwIDwgdG90YWwgPCA4NjQwMDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIk9mZnNldCBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gLTI0aCBhbmQgKzI0aDoge3R6X2RlbHRhfSIKICAgICAgICApCgogICAgIyBZZXMsICs1IG1hcHMgdG8gYW4gb2Zmc2V0IG9mIC01aAogICAgaWYgbWF0Y2guZ3JvdXAoInNpZ24iKSAhPSAiLSI6CiAgICAgICAgdG90YWwgKj0gLTEKCiAgICByZXR1cm4gdG90YWwKUEsDBBQAAAAAAAMgo1bzATxuYQAAAGEAAAAWAAAAX19waGVsbG9fXy9fX2luaXRfXy5weWluaXRpYWxpemVkID0gVHJ1ZQoKZGVmIG1haW4oKToKICAgIHByaW50KCJIZWxsbyB3b3JsZCEiKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQpQSwMEFAAAAAAAAyCjVvMBPG5hAAAAYQAAABIAAABfX3BoZWxsb19fL3NwYW0ucHlpbml0aWFsaXplZCA9IFRydWUKCmRlZiBtYWluKCk6CiAgICBwcmludCgiSGVsbG8gd29ybGQhIikKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBtYWluKCkKUEsDBBQAAAAAAKceo1YFzY3W2AEAANgBAAAUAAAAX3B5b2RpZGUvX19pbml0X18ucHkjIF9weW9kaWRlIGlzIGltcG9ydGVkIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBzbyBpdAojIGNhbm5vdCBpbXBvcnQgZnJvbSBqcywgcHlvZGlkZV9qcywgb3IgX3B5b2RpZGVfY29yZS4KIwojIHJlZ2lzdGVyX2pzX2ZpbmRlciBpcyBjYWxsZWQgZnJvbSBweW9kaWRlLmpzIGFmdGVyIF9weW9kaWRlX2NvcmUgaXMgY29tcGxldGVseQojIGluaXRpYWxpemVkLgojCiMgQWxsIHB1cmUgUHl0aG9uIGNvZGUgdGhhdCBkb2Vzbid0IHJlcXVpcmUgaW1wb3J0cyBmcm9tIGpzLCBweW9kaWRlX2pzLCBvcgojIF9weW9kaWRlX2NvcmUgYmVsb25ncyBpbiBfcHlvZGlkZS4gQ29kZSB0aGF0IHJlcXVpcmVzIHN1Y2ggaW1wb3J0cyBiZWxvbmdzIGluCiMgcHlvZGlkZS4KZnJvbSAuIGltcG9ydCBfYmFzZSwgX2ltcG9ydGhvb2sKCl9fYWxsX18gPSBbIl9iYXNlIiwgIl9pbXBvcnRob29rIl0KUEsDBBQAAAAAAKceo1YM2d2qiEkAAIhJAAARAAAAX3B5b2RpZGUvX2Jhc2UucHkiIiIKQSBsaWJyYXJ5IG9mIGhlbHBlciB1dGlsaXRpZXMgZm9yIGNvbm5lY3RpbmcgUHl0aG9uIHRvIHRoZSBicm93c2VyIGVudmlyb25tZW50LgoiIiIKIyBBZGRlZCBieSBDOgojIEpzRXhjZXB0aW9uIChmcm9tIGpzcHJveHkuYykKCmltcG9ydCBhc3QKaW1wb3J0IGJ1aWx0aW5zCmltcG9ydCB0b2tlbml6ZQpmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgR2VuZXJhdG9yCmZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CmZyb20gdHlwZXMgaW1wb3J0IENvZGVUeXBlCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIExpdGVyYWwKCgpkZWYgc2hvdWxkX3F1aWV0KHNvdXJjZTogc3RyLCAvKSAtPiBib29sOgogICAgIiIiCiAgICBTaG91bGQgd2Ugc3VwcHJlc3Mgb3V0cHV0PwoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgICAgICBgYFRydWVgYCBpZiB0aGUgbGFzdCBub253aGl0ZXNwYWNlIGNoYXJhY3RlciBvZiBgYHNvdXJjZWBgIGlzIGEgc2VtaWNvbG9uLgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IHNob3VsZF9xdWlldCgnMSArIDEnKQogICAgRmFsc2UKICAgID4+PiBzaG91bGRfcXVpZXQoJzEgKyAxIDsnKQogICAgVHJ1ZQogICAgPj4+IHNob3VsZF9xdWlldCgnMSArIDEgIyBjb21tZW50IDsnKQogICAgRmFsc2UKICAgICIiIgogICAgIyBsYXJnZWx5IGluc3BpcmVkIGZyb20gSVB5dGhvbjoKICAgICMgaHR0cHM6Ly9naXRodWIuY29tL2lweXRob24vaXB5dGhvbi9ibG9iLzg2ZDI0NzQxMTg4YjBjZWRkNzhhYjA4MGQ0OThlNzc1ZWQwZTUyNzIvSVB5dGhvbi9jb3JlL2Rpc3BsYXlob29rLnB5I0w4NAoKICAgICMgV2UgbmVlZCB0byB3cmFwIHRva2VucyBpbiBhIGJ1ZmZlciBiZWNhdXNlOgogICAgIyAiVG9rZW5pemUgcmVxdWlyZXMgb25lIGFyZ3VtZW50LCByZWFkbGluZSwgd2hpY2ggbXVzdCBiZQogICAgIyBhIGNhbGxhYmxlIG9iamVjdCB3aGljaCBwcm92aWRlcyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgdGhlCiAgICAjIGlvLklPQmFzZS5yZWFkbGluZSgpIG1ldGhvZCBvZiBmaWxlIG9iamVjdHMiCiAgICBzb3VyY2VfaW8gPSBTdHJpbmdJTyhzb3VyY2UpCiAgICB0b2tlbnMgPSBsaXN0KHRva2VuaXplLmdlbmVyYXRlX3Rva2Vucyhzb3VyY2VfaW8ucmVhZGxpbmUpKQoKICAgIGZvciB0b2tlbiBpbiByZXZlcnNlZCh0b2tlbnMpOgogICAgICAgIGlmIHRva2VuLnR5cGUgaW4gKAogICAgICAgICAgICB0b2tlbml6ZS5FTkRNQVJLRVIsCiAgICAgICAgICAgIHRva2VuaXplLk5MLCAgIyBpZ25vcmluZyBlbXB0eSBsaW5lcyAoXG5cbikKICAgICAgICAgICAgdG9rZW5pemUuTkVXTElORSwKICAgICAgICAgICAgdG9rZW5pemUuQ09NTUVOVCwKICAgICAgICApOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHJldHVybiAodG9rZW4udHlwZSA9PSB0b2tlbml6ZS5PUCkgYW5kICh0b2tlbi5zdHJpbmcgPT0gIjsiKQogICAgcmV0dXJuIEZhbHNlCgoKZGVmIF9sYXN0X2Fzc2lnbl90b19leHByKG1vZDogYXN0Lk1vZHVsZSkgLT4gTm9uZToKICAgICIiIgogICAgSW1wbGVtZW50YXRpb24gb2YgJ2xhc3RfZXhwcl9vcl9hc3NpZ24nIHJldHVybl9tb2RlLgogICAgSXQgbW9kaWZpZXMgdGhlIHN1cHBseWllZCBBU1QgbW9kdWxlIHNvIHRoYXQgdGhlIGxhc3QKICAgIHN0YXRlbWVudCdzIHZhbHVlIGNhbiBiZSByZXR1cm5lZCBpbiAnbGFzdF9leHByJyByZXR1cm5fbW9kZS4KICAgICIiIgogICAgIyBMYXJnZWx5IGluc3BpcmVkIGZyb20gSVB5dGhvbjoKICAgICMgaHR0cHM6Ly9naXRodWIuY29tL2lweXRob24vaXB5dGhvbi9ibG9iLzM1ODdmNWJiNmM4NTcwZTdiYmIwNmNmNWY3ZTNiYzliOTQ2NzM1NWEvSVB5dGhvbi9jb3JlL2ludGVyYWN0aXZlc2hlbGwucHkjTDMyMjkKCiAgICBpZiBub3QgbW9kLmJvZHk6CiAgICAgICAgcmV0dXJuCiAgICBsYXN0X25vZGUgPSBtb2QuYm9keVstMV0KCiAgICBpZiBpc2luc3RhbmNlKGxhc3Rfbm9kZSwgYXN0LkFzc2lnbik6CiAgICAgICAgIyBJbiB0aGlzIGNhc2UgdGhlcmUgY2FuIGJlIG11bHRpcGxlIHRhcmdldHMgYXMgaW4gYGEgPSBiID0gMWAuCiAgICAgICAgIyBXZSBqdXN0IHRha2UgdGhlIGZpcnN0IG9uZS4KICAgICAgICB0YXJnZXQgPSBsYXN0X25vZGUudGFyZ2V0c1swXQogICAgZWxpZiBpc2luc3RhbmNlKGxhc3Rfbm9kZSwgYXN0LkF1Z0Fzc2lnbiB8IGFzdC5Bbm5Bc3NpZ24pOgogICAgICAgIHRhcmdldCA9IGxhc3Rfbm9kZS50YXJnZXQKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuCiAgICBpZiBpc2luc3RhbmNlKHRhcmdldCwgYXN0Lk5hbWUpOgogICAgICAgIGxhc3Rfbm9kZSA9IGFzdC5FeHByKGFzdC5OYW1lKHRhcmdldC5pZCwgYXN0LkxvYWQoKSkpCiAgICAgICAgbW9kLmJvZHkuYXBwZW5kKGxhc3Rfbm9kZSkKICAgICAgICAjIFVwZGF0ZSB0aGUgbGluZSBudW1iZXJzIHNob3duIGluIGVycm9yIG1lc3NhZ2VzLgogICAgICAgIGFzdC5maXhfbWlzc2luZ19sb2NhdGlvbnMobW9kKQoKCmNsYXNzIEV2YWxDb2RlUmVzdWx0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAgICAiIiJXZSB3aWxsIHRocm93IHRoaXMgdG8gcmV0dXJuIGEgcmVzdWx0IGZyb20gb3VyIGNvZGUuCgogICAgVGhpcyBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiAiY29kZSB1c2VkIHRvcCBsZXZlbCBhd2FpdCIgYW5kICJjb2RlCiAgICByZXR1cm5lZCBhIGdlbmVyYXRvciBvciBjb3JvdXRpbmUiLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHY6IEFueSkgLT4gTm9uZToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKHYpCiAgICAgICAgc2VsZi52YWx1ZSA9IHYKCgojIFdlIG5lZWQgRXZhbENvZGVSZXN1bHRFeGNlcHRpb24gYXZhaWxhYmxlIGluc2lkZSB0aGUgcnVubmluZyBjb2RlLiBJIHN1cHBvc2UKIyB3ZSBjb3VsZCBpbXBvcnQgaXQsIHdyYXAgYWxsIG9mIHRoZSBjb2RlIGluIGEgdHJ5L2ZpbmFsbHkgYmxvY2ssIGFuZCBkZWxldGUgaXQKIyBhZ2FpbiBpbiB0aGUgZmluYWxseSBibG9jayBidXQgSSB0aGluayB0aGlzIGlzIHRoZSBiZXN0IHdheS4KIwojIFB1dCBpdCBpbnRvIGEgbGlzdCB0byBhdm9pZCBicmVha2luZyBDUHl0aG9uIHRlc3QgdGVzdF9pbmhlcml0YW5jZQojICh0ZXN0LnRlc3RfYmFzZWV4Y2VwdGlvbi5FeGNlcHRpb25DbGFzc1Rlc3RzKSB3aGljaCBleGFtaW5lcyBhbGwgRXhjZXB0aW9ucyBpbgojIGJ1aWx0aW5zLgpidWlsdGlucy5fX19FdmFsQ29kZVJlc3VsdEV4Y2VwdGlvbiA9IFtFdmFsQ29kZVJlc3VsdEV4Y2VwdGlvbl0gICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KCiMgV2Ugd2lsbCBzdWJzdGl0dXRlIGluIHRoZSB2YWx1ZSBvZiB4IHdlIGFyZSB0cnlpbmcgdG8gcmV0dXJuLgpfcmFpc2VfdGVtcGxhdGVfYXN0ID0gYXN0LnBhcnNlKCJyYWlzZSBfX19FdmFsQ29kZVJlc3VsdEV4Y2VwdGlvblswXSh4KSIpLmJvZHlbMF0KCgpkZWYgX2xhc3RfZXhwcl90b19yYWlzZShtb2Q6IGFzdC5Nb2R1bGUpIC0+IE5vbmU6CiAgICAiIiJJZiB0aGUgZmluYWwgYXN0IG5vZGUgaXMgYSBzdGF0ZW1lbnQsIHJhaXNlIGFuIEV2YWxDb2RlUmVzdWx0RXhjZXB0aW9uCiAgICB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgc3RhdGVtZW50LgogICAgIiIiCiAgICBpZiBub3QgbW9kLmJvZHk6CiAgICAgICAgcmV0dXJuCiAgICBsYXN0X25vZGUgPSBtb2QuYm9keVstMV0KICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vZC5ib2R5Wy0xXSwgYXN0LkV4cHIgfCBhc3QuQXdhaXQpOgogICAgICAgIHJldHVybgogICAgcmFpc2VfZXhwciA9IGRlZXBjb3B5KF9yYWlzZV90ZW1wbGF0ZV9hc3QpCiAgICAjIFJlcGxhY2UgeCB3aXRoIG91ciB2YWx1ZSBpbiBfcmFpc2VfdGVtcGxhdGVfYXN0LgogICAgcmFpc2VfZXhwci5leGMuYXJnc1swXSA9IGxhc3Rfbm9kZS52YWx1ZSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQogICAgbW9kLmJvZHlbLTFdID0gcmFpc2VfZXhwcgoKCmRlZiBfcGFyc2VfYW5kX2NvbXBpbGVfZ2VuKAogICAgc291cmNlOiBzdHIsCiAgICAqLAogICAgcmV0dXJuX21vZGU6IHN0ciA9ICJsYXN0X2V4cHIiLAogICAgcXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uOiBib29sID0gVHJ1ZSwKICAgIG1vZGU6IHN0ciA9ICJleGVjIiwKICAgIGZpbGVuYW1lOiBzdHIgPSAiPGV4ZWM+IiwKICAgIGZsYWdzOiBpbnQgPSAweDAsCikgLT4gR2VuZXJhdG9yW2FzdC5Nb2R1bGUsIGFzdC5Nb2R1bGUsIENvZGVUeXBlXToKICAgICIiIlBhcnNlIGBgc291cmNlYGAsIHRoZW4geWllbGQgdGhlIEFTVCwgdGhlbiBjb21waWxlIHRoZSBBU1QgYW5kIHJldHVybiB0aGUKICAgIGNvZGUgb2JqZWN0LgoKICAgIEJ5IHlpZWxkaW5nIHRoZSBhc3QsIHdlIGdpdmUgY2FsbGVycyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG8gZnVydGhlciBhc3QKICAgIG1hbmlwdWxhdGlvbnMuIEJlY2F1c2UgZ2VuZXJhdG9ycyBhcmUgYW5ub3lpbmcgdG8gY2FsbCwgdGhpcyBpcyB3cmFwcGVkIGluCiAgICB0aGUgRXhlY3V0b3IgY2xhc3MuCiAgICAiIiIKICAgICMgaGFuZGxlIG1pcy1pbmRlbnRlZCBpbnB1dCBmcm9tIG11bHRpLWxpbmUgc3RyaW5ncwogICAgc291cmNlID0gZGVkZW50KHNvdXJjZSkKCiAgICBtb2QgPSBjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWdzIHwgYXN0LlB5Q0ZfT05MWV9BU1QpCgogICAgIyBQYXVzZSBoZXJlLCBhbGxvdyBjYWxsZXIgdG8gdHJhbnNmb3JtIGFzdCBpZiB0aGV5IGxpa2UuCiAgICBtb2QgPSB5aWVsZCBtb2QKCiAgICBpZiBxdWlldF90cmFpbGluZ19zZW1pY29sb24gYW5kIHNob3VsZF9xdWlldChzb3VyY2UpOgogICAgICAgIHJldHVybl9tb2RlID0gIm5vbmUiCgogICAgaWYgcmV0dXJuX21vZGUgPT0gImxhc3RfZXhwcl9vcl9hc3NpZ24iOgogICAgICAgICMgYWRkIGV4dHJhIGV4cHJlc3Npb24gd2l0aCBqdXN0IHRoZSBMLXZhbHVlIHNvIHRoYXQgd2UgY2FuIGhhbmRsZSBpdAogICAgICAgICMgd2l0aCB0aGUgbGFzdF9leHByIGNvZGUuCiAgICAgICAgX2xhc3RfYXNzaWduX3RvX2V4cHIobW9kKQoKICAgIGlmIHJldHVybl9tb2RlLnN0YXJ0c3dpdGgoImxhc3RfZXhwciIpOiAgIyBsYXN0X2V4cHIgb3IgbGFzdF9leHByX29yX2Fzc2lnbgogICAgICAgIF9sYXN0X2V4cHJfdG9fcmFpc2UobW9kKQoKICAgIGFzdC5maXhfbWlzc2luZ19sb2NhdGlvbnMobW9kKQogICAgcmV0dXJuIGNvbXBpbGUobW9kLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3M9ZmxhZ3MpCgoKUmV0dXJuTW9kZSA9IExpdGVyYWxbImxhc3RfZXhwciIsICJsYXN0X2V4cHJfb3JfYXNzaWduIiwgIm5vbmUiXQoKCmNsYXNzIENvZGVSdW5uZXI6CiAgICAiIiJUaGlzIGNsYXNzIGFsbG93cyBmaW5lIGNvbnRyb2wgb3ZlciB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9jay4KCiAgICBJdCBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIFJFUExzIGFuZCBvdGhlciBzb3BoaXN0aWNhdGVkIGNvbnN1bWVycyB0aGF0CiAgICBtYXkgd2lzaCB0byBhZGQgdGhlaXIgb3duIEFTVCB0cmFuc2Zvcm1hdGlvbnMsIHNlcGFyYXRlbHkgc2lnbmFsIHRvIHRoZSB1c2VyCiAgICB3aGVuIHBhcnNpbmcgaXMgY29tcGxldGUsIGV0Yy4gVGhlIHNpbXBsZXIgOnB5OmZ1bmM6YGV2YWxfY29kZWAgYW5kCiAgICA6cHk6ZnVuYzpgZXZhbF9jb2RlX2FzeW5jYCBhcGlzIHNob3VsZCBiZSBwcmVmZXJyZWQgd2hlbiB0aGVpciBmbGV4aWJpbGl0eQogICAgc3VmZmljZXMuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgc291cmNlIDoKCiAgICAgICAgVGhlIFB5dGhvbiBzb3VyY2UgY29kZSB0byBydW4uCgogICAgcmV0dXJuX21vZGUgOgoKICAgICAgICBTcGVjaWZpZXMgd2hhdCBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSBvcHRpb25zIGFyZToKCiAgICAgICAgOidsYXN0X2V4cHInOiByZXR1cm4gdGhlIGxhc3QgZXhwcmVzc2lvbgogICAgICAgIDonbGFzdF9leHByX29yX2Fzc2lnbic6IHJldHVybiB0aGUgbGFzdCBleHByZXNzaW9uIG9yIHRoZSBsYXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC4KCiAgICAgICAgOidub25lJzogYWx3YXlzIHJldHVybiBgYE5vbmVgYC4KCiAgICBxdWlldF90cmFpbGluZ19zZW1pY29sb24gOgoKICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBhIHRyYWlsaW5nIHNlbWljb2xvbiBzaG91bGQgc3VwcHJlc3MgdGhlIHJlc3VsdCBvcgogICAgICAgIG5vdC4gV2hlbiB0aGlzIGlzIGBgVHJ1ZWBgIGV4ZWN1dGluZyBgYCIxKzE7ImBgIHJldHVybnMgYGBOb25lYGAsIHdoZW4KICAgICAgICBpdCBpcyBgYEZhbHNlYGAsIGV4ZWN1dGluZyBgYCIxKzE7ImBgIHJldHVybiBgYDJgYC4gYGBUcnVlYGAgYnkgZGVmYXVsdC4KCiAgICBmaWxlbmFtZSA6CgogICAgICAgIFRoZSBmaWxlIG5hbWUgdG8gdXNlIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuIGBgJzxleGVjPidgYCBieQogICAgICAgIGRlZmF1bHQuCgogICAgbW9kZSA6CgogICAgICAgIFRoZSAibW9kZSIgdG8gY29tcGlsZSBpbi4gT25lIG9mIGBgImV4ZWMiYGAsIGBgInNpbmdsZSJgYCwgb3IKICAgICAgICBgYCJldmFsImBgLiBEZWZhdWx0cyB0byBgYCJleGVjImBgLiBGb3IgbW9zdCBwdXJwb3NlcyBpdCdzIHVubmVjZXNzYXJ5CiAgICAgICAgdG8gdXNlIHRoaXMgYXJndW1lbnQuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGJ1aWx0LWluCiAgICAgICAgOmV4dGVybmFsOnB5OmZ1bmM6YGNvbXBpbGVgIGZ1bmN0aW9uLgoKICAgIGZsYWdzIDoKCiAgICAgICAgVGhlIGZsYWdzIHRvIGNvbXBpbGUgd2l0aC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYnVpbHQtaW4KICAgICAgICA6ZXh0ZXJuYWw6cHk6ZnVuYzpgY29tcGlsZWAgZnVuY3Rpb24uCiAgICAiIiIKCiAgICBhc3Q6IGFzdC5Nb2R1bGUKICAgICIiIgogICAgVGhlIGFzdCBmcm9tIHBhcnNpbmcgYGBzb3VyY2VgYC4gSWYgeW91IHdpc2ggdG8gZG8gYW4gYXN0IHRyYW5zZm9ybSwKICAgIG1vZGlmeSB0aGlzIHZhcmlhYmxlIGJlZm9yZSBjYWxsaW5nIDpweTptZXRoOmBDb2RlUnVubmVyLmNvbXBpbGVgLgogICAgIiIiCgogICAgY29kZTogQ29kZVR5cGUgfCBOb25lCiAgICAiIiIKICAgIE9uY2UgeW91IGNhbGwgOnB5Om1ldGg6YENvZGVSdW5uZXIuY29tcGlsZWAgdGhlIGNvbXBpbGVkIGNvZGUgd2lsbAogICAgYmUgYXZhaWxhYmxlIGluIHRoZSBjb2RlIGZpZWxkLiBZb3UgY2FuIG1vZGlmeSB0aGlzIHZhcmlhYmxlCiAgICBiZWZvcmUgY2FsbGluZyA6cHk6bWV0aDpgQ29kZVJ1bm5lci5ydW5gIHRvIGRvIGEgY29kZSB0cmFuc2Zvcm0uCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oCiAgICAgICAgc2VsZiwKICAgICAgICBzb3VyY2U6IHN0ciwKICAgICAgICAqLAogICAgICAgIHJldHVybl9tb2RlOiBSZXR1cm5Nb2RlID0gImxhc3RfZXhwciIsCiAgICAgICAgbW9kZTogc3RyID0gImV4ZWMiLAogICAgICAgIHF1aWV0X3RyYWlsaW5nX3NlbWljb2xvbjogYm9vbCA9IFRydWUsCiAgICAgICAgZmlsZW5hbWU6IHN0ciA9ICI8ZXhlYz4iLAogICAgICAgIGZsYWdzOiBpbnQgPSAweDAsCiAgICApOgogICAgICAgIHNlbGYuX2NvbXBpbGVkID0gRmFsc2UKICAgICAgICBzZWxmLl9nZW4gPSBfcGFyc2VfYW5kX2NvbXBpbGVfZ2VuKAogICAgICAgICAgICBzb3VyY2UsCiAgICAgICAgICAgIHJldHVybl9tb2RlPXJldHVybl9tb2RlLAogICAgICAgICAgICBtb2RlPW1vZGUsCiAgICAgICAgICAgIHF1aWV0X3RyYWlsaW5nX3NlbWljb2xvbj1xdWlldF90cmFpbGluZ19zZW1pY29sb24sCiAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAogICAgICAgICAgICBmbGFncz1mbGFncywKICAgICAgICApCiAgICAgICAgc2VsZi5hc3QgPSBuZXh0KHNlbGYuX2dlbikKCiAgICBkZWYgY29tcGlsZShzZWxmKSAtPiAiQ29kZVJ1bm5lciI6CiAgICAgICAgIiIiQ29tcGlsZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBgYHNlbGYuYXN0YGAgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gYGBzZWxmLmNvZGVgYC4KCiAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBvbmNlLiBSZXR1cm5zIGBgc2VsZmBgIChjaGFpbmFibGUpLgogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYuX2NvbXBpbGVkOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkFscmVhZHkgY29tcGlsZWQiKQogICAgICAgIHNlbGYuX2NvbXBpbGVkID0gVHJ1ZQogICAgICAgIHRyeToKICAgICAgICAgICAgIyBUcmlnZ2VycyBjb21waWxhdGlvbgogICAgICAgICAgICBzZWxmLl9nZW4uc2VuZChzZWxmLmFzdCkKICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgogICAgICAgICAgICAjIGdlbmVyYXRvciBtdXN0IHJldHVybiwgd2hpY2ggcmFpc2VzIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgc2VsZi5jb2RlID0gZS52YWx1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCkKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBydW4oCiAgICAgICAgc2VsZiwKICAgICAgICBnbG9iYWxzOiBkaWN0W3N0ciwgQW55XSB8IE5vbmUgPSBOb25lLAogICAgICAgIGxvY2FsczogZGljdFtzdHIsIEFueV0gfCBOb25lID0gTm9uZSwKICAgICkgLT4gQW55OgogICAgICAgICIiIkV4ZWN1dGVzIGBgc2VsZi5jb2RlYGAuCgogICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYWZ0ZXIgY2FsbGluZyBjb21waWxlLiBUaGUgY29kZSBtYXkgbm90IHVzZSB0b3AgbGV2ZWwKICAgICAgICBhd2FpdCwgdXNlIDpweTptZXRoOmBDb2RlUnVubmVyLnJ1bl9hc3luY2AgZm9yIGNvZGUgdGhhdCB1c2VzIHRvcCBsZXZlbAogICAgICAgIGF3YWl0LgoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIGdsb2JhbHMgOgoKICAgICAgICAgICAgVGhlIGdsb2JhbCBzY29wZSBpbiB3aGljaCB0byBleGVjdXRlIGNvZGUuIFRoaXMgaXMgdXNlZCBhcyB0aGUgYGBnbG9iYWxzYGAKICAgICAgICAgICAgcGFyYW1ldGVyIGZvciA6cHk6ZnVuYzpgZXhlY2AuIElmIGBgZ2xvYmFsc2BgIGlzIGFic2VudCwgYSBuZXcgZW1wdHkgZGljdGlvbmFyeSBpcyB1c2VkLgoKICAgICAgICBsb2NhbHMgOgoKICAgICAgICAgICAgVGhlIGxvY2FsIHNjb3BlIGluIHdoaWNoIHRvIGV4ZWN1dGUgY29kZS4gVGhpcyBpcyB1c2VkIGFzIHRoZSBgYGxvY2Fsc2BgCiAgICAgICAgICAgIHBhcmFtZXRlciBmb3IgOnB5OmZ1bmM6YGV4ZWNgLiBJZiBgYGxvY2Fsc2BgIGlzIGFic2VudCwgdGhlIHZhbHVlIG9mIGBgZ2xvYmFsc2BgIGlzCiAgICAgICAgICAgIHVzZWQuCgogICAgICAgIFJldHVybnMKICAgICAgICAtLS0tLS0tCgogICAgICAgICAgICBJZiB0aGUgbGFzdCBub253aGl0ZXNwYWNlIGNoYXJhY3RlciBvZiBgYHNvdXJjZWBgIGlzIGEgc2VtaWNvbG9uLAogICAgICAgICAgICByZXR1cm4gYGBOb25lYGAuIElmIHRoZSBsYXN0IHN0YXRlbWVudCBpcyBhbiBleHByZXNzaW9uLCByZXR1cm4gdGhlCiAgICAgICAgICAgIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi4gVXNlIHRoZSBgYHJldHVybl9tb2RlYGAgYW5kCiAgICAgICAgICAgIGBgcXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uYGAgcGFyYW1ldGVycyB0byBtb2RpZnkgdGhpcyBkZWZhdWx0CiAgICAgICAgICAgIGJlaGF2aW9yLgogICAgICAgICIiIgogICAgICAgIGlmIGdsb2JhbHMgaXMgTm9uZToKICAgICAgICAgICAgZ2xvYmFscyA9IHt9CiAgICAgICAgaWYgbG9jYWxzIGlzIE5vbmU6CiAgICAgICAgICAgIGxvY2FscyA9IGdsb2JhbHMKICAgICAgICBpZiBub3Qgc2VsZi5fY29tcGlsZWQ6CiAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiTm90IHlldCBjb21waWxlZCIpCiAgICAgICAgaWYgc2VsZi5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjb3JvdXRpbmUgPSBldmFsKHNlbGYuY29kZSwgZ2xvYmFscywgbG9jYWxzKQogICAgICAgICAgICBpZiBjb3JvdXRpbmU6CiAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIlVzZWQgZXZhbF9jb2RlIHdpdGggVE9QX0xFVkVMX0FXQUlULiBVc2UgcnVuX2FzeW5jIGZvciB0aGlzIGluc3RlYWQuIgogICAgICAgICAgICAgICAgKQogICAgICAgIGV4Y2VwdCBFdmFsQ29kZVJlc3VsdEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAjIEZpbmFsIGV4cHJlc3Npb24gZnJvbSBjb2RlIHJldHVybnMgaGVyZQogICAgICAgICAgICByZXR1cm4gZS52YWx1ZQoKICAgICAgICByZXR1cm4gTm9uZQoKICAgIGFzeW5jIGRlZiBydW5fYXN5bmMoCiAgICAgICAgc2VsZiwKICAgICAgICBnbG9iYWxzOiBkaWN0W3N0ciwgQW55XSB8IE5vbmUgPSBOb25lLAogICAgICAgIGxvY2FsczogZGljdFtzdHIsIEFueV0gfCBOb25lID0gTm9uZSwKICAgICkgLT4gQW55OgogICAgICAgICIiIlJ1bnMgYGBzZWxmLmNvZGVgYCB3aGljaCBtYXkgdXNlIHRvcCBsZXZlbCBhd2FpdC4KCiAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhZnRlciBjYWxsaW5nIDpweTptZXRoOmBDb2RlUnVubmVyLmNvbXBpbGVgLiBJZgogICAgICAgIGBgc2VsZi5jb2RlYGAgdXNlcyB0b3AgbGV2ZWwgYXdhaXQsIGF1dG9tYXRpY2FsbHkgYXdhaXRzIHRoZSByZXN1bHRpbmcKICAgICAgICBjb3JvdXRpbmUuCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgZ2xvYmFscyA6CgogICAgICAgICAgICBUaGUgZ2xvYmFsIHNjb3BlIGluIHdoaWNoIHRvIGV4ZWN1dGUgY29kZS4gVGhpcyBpcyB1c2VkIGFzIHRoZSBgYGdsb2JhbHNgYAogICAgICAgICAgICBwYXJhbWV0ZXIgZm9yIDpweTpmdW5jOmBleGVjYC4gSWYgYGBnbG9iYWxzYGAgaXMgYWJzZW50LCBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5IGlzIHVzZWQuCgogICAgICAgIGxvY2FscyA6CgogICAgICAgICAgICBUaGUgbG9jYWwgc2NvcGUgaW4gd2hpY2ggdG8gZXhlY3V0ZSBjb2RlLiBUaGlzIGlzIHVzZWQgYXMgdGhlCiAgICAgICAgICAgIGBgbG9jYWxzYGAgcGFyYW1ldGVyIGZvciA6cHk6ZnVuYzpgZXhlY2AuIElmIGBgbG9jYWxzYGAgaXMgYWJzZW50LCB0aGUKICAgICAgICAgICAgdmFsdWUgb2YgYGBnbG9iYWxzYGAgaXMgdXNlZC4KCiAgICAgICAgUmV0dXJucwogICAgICAgIC0tLS0tLS0KCiAgICAgICAgICAgIElmIHRoZSBsYXN0IG5vbndoaXRlc3BhY2UgY2hhcmFjdGVyIG9mIGBgc291cmNlYGAgaXMgYSBzZW1pY29sb24sCiAgICAgICAgICAgIHJldHVybiBgYE5vbmVgYC4gSWYgdGhlIGxhc3Qgc3RhdGVtZW50IGlzIGFuIGV4cHJlc3Npb24sIHJldHVybiB0aGUKICAgICAgICAgICAgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uLiBVc2UgdGhlIGBgcmV0dXJuX21vZGVgYCBhbmQKICAgICAgICAgICAgYGBxdWlldF90cmFpbGluZ19zZW1pY29sb25gYCBwYXJhbWV0ZXJzIHRvIG1vZGlmeSB0aGlzIGRlZmF1bHQKICAgICAgICAgICAgYmVoYXZpb3IuCiAgICAgICAgIiIiCiAgICAgICAgaWYgZ2xvYmFscyBpcyBOb25lOgogICAgICAgICAgICBnbG9iYWxzID0ge30KICAgICAgICBpZiBsb2NhbHMgaXMgTm9uZToKICAgICAgICAgICAgbG9jYWxzID0gZ2xvYmFscwogICAgICAgIGlmIG5vdCBzZWxmLl9jb21waWxlZDoKICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJOb3QgeWV0IGNvbXBpbGVkIikKICAgICAgICBpZiBzZWxmLmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjb3JvdXRpbmUgPSBldmFsKHNlbGYuY29kZSwgZ2xvYmFscywgbG9jYWxzKQogICAgICAgICAgICBpZiBjb3JvdXRpbmU6CiAgICAgICAgICAgICAgICBhd2FpdCBjb3JvdXRpbmUKICAgICAgICBleGNlcHQgRXZhbENvZGVSZXN1bHRFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgcmV0dXJuIGUudmFsdWUKCgpkZWYgZXZhbF9jb2RlKAogICAgc291cmNlOiBzdHIsCiAgICBnbG9iYWxzOiBkaWN0W3N0ciwgQW55XSB8IE5vbmUgPSBOb25lLAogICAgbG9jYWxzOiBkaWN0W3N0ciwgQW55XSB8IE5vbmUgPSBOb25lLAogICAgKiwKICAgIHJldHVybl9tb2RlOiBSZXR1cm5Nb2RlID0gImxhc3RfZXhwciIsCiAgICBxdWlldF90cmFpbGluZ19zZW1pY29sb246IGJvb2wgPSBUcnVlLAogICAgZmlsZW5hbWU6IHN0ciA9ICI8ZXhlYz4iLAogICAgZmxhZ3M6IGludCA9IDB4MCwKKSAtPiBBbnk6CiAgICAiIiJSdW5zIGEgc3RyaW5nIGFzIFB5dGhvbiBzb3VyY2UgY29kZS4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICBzb3VyY2UgOgoKICAgICAgICBUaGUgUHl0aG9uIHNvdXJjZSBjb2RlIHRvIHJ1bi4KCiAgICBnbG9iYWxzIDoKCiAgICAgICAgVGhlIGdsb2JhbCBzY29wZSBpbiB3aGljaCB0byBleGVjdXRlIGNvZGUuIFRoaXMgaXMgdXNlZCBhcyB0aGUKICAgICAgICBgYGdsb2JhbHNgYCBwYXJhbWV0ZXIgZm9yIDpweTpmdW5jOmBleGVjYC4gSWYgYGBnbG9iYWxzYGAgaXMgYWJzZW50LCBhIG5ldwogICAgICAgIGVtcHR5IGRpY3Rpb25hcnkgaXMgdXNlZC4KCiAgICBsb2NhbHMgOgoKICAgICAgICBUaGUgbG9jYWwgc2NvcGUgaW4gd2hpY2ggdG8gZXhlY3V0ZSBjb2RlLiBUaGlzIGlzIHVzZWQgYXMgdGhlIGBgbG9jYWxzYGAKICAgICAgICBwYXJhbWV0ZXIgZm9yIDpweTpmdW5jOmBleGVjYC4gSWYgYGBsb2NhbHNgYCBpcyBhYnNlbnQsIHRoZSB2YWx1ZSBvZgogICAgICAgIGBgZ2xvYmFsc2BgIGlzIHVzZWQuCgogICAgcmV0dXJuX21vZGUgOgoKICAgICAgICBTcGVjaWZpZXMgd2hhdCBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSBvcHRpb25zIGFyZToKCiAgICAgICAgOidsYXN0X2V4cHInOiByZXR1cm4gdGhlIGxhc3QgZXhwcmVzc2lvbgogICAgICAgIDonbGFzdF9leHByX29yX2Fzc2lnbic6IHJldHVybiB0aGUgbGFzdCBleHByZXNzaW9uIG9yIHRoZSBsYXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC4KCiAgICAgICAgOidub25lJzogYWx3YXlzIHJldHVybiBgYE5vbmVgYC4KCiAgICBxdWlldF90cmFpbGluZ19zZW1pY29sb24gOgoKICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBhIHRyYWlsaW5nIHNlbWljb2xvbiBzaG91bGQgc3VwcHJlc3MgdGhlIHJlc3VsdCBvcgogICAgICAgIG5vdC4gV2hlbiB0aGlzIGlzIGBgVHJ1ZWBgIGV4ZWN1dGluZyBgYCIxKzEgOyJgYCByZXR1cm5zIGBgTm9uZWBgLCB3aGVuCiAgICAgICAgaXQgaXMgYGBGYWxzZWBgLCBleGVjdXRpbmcgYGAiMSsxIDsiYGAgcmV0dXJuIGBgMmBgLiBgYFRydWVgYCBieQogICAgICAgIGRlZmF1bHQuCgogICAgZmlsZW5hbWUgOgoKICAgICAgICBUaGUgZmlsZSBuYW1lIHRvIHVzZSBpbiBlcnJvciBtZXNzYWdlcyBhbmQgc3RhY2sgdHJhY2VzLiBgYCc8ZXhlYz4nYGAgYnkKICAgICAgICBkZWZhdWx0LgoKICAgIGZsYWdzIDoKCiAgICAgICAgVGhlIGZsYWdzIHRvIGNvbXBpbGUgd2l0aC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYnVpbHQtaW4KICAgICAgICA6ZXh0ZXJuYWw6cHk6ZnVuYzpgY29tcGlsZWAgZnVuY3Rpb24uCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgICAgIElmIHRoZSBsYXN0IG5vbndoaXRlc3BhY2UgY2hhcmFjdGVyIG9mIGBgc291cmNlYGAgaXMgYSBzZW1pY29sb24sIHJldHVybgogICAgICAgIGBgTm9uZWBgLiBJZiB0aGUgbGFzdCBzdGF0ZW1lbnQgaXMgYW4gZXhwcmVzc2lvbiwgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlCiAgICAgICAgZXhwcmVzc2lvbi4gVXNlIHRoZSBgYHJldHVybl9tb2RlYGAgYW5kIGBgcXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uYGAKICAgICAgICBwYXJhbWV0ZXJzIHRvIG1vZGlmeSB0aGlzIGRlZmF1bHQgYmVoYXZpb3IuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBweW9kaWRlLmNvZGUgaW1wb3J0IGV2YWxfY29kZQogICAgPj4+IHNvdXJjZSA9ICIxICsgMSIKICAgID4+PiBldmFsX2NvZGUoc291cmNlKQogICAgMgogICAgPj4+IHNvdXJjZSA9ICIxICsgMTsiCiAgICA+Pj4gZXZhbF9jb2RlKHNvdXJjZSwgcXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uPVRydWUpCiAgICA+Pj4gZXZhbF9jb2RlKHNvdXJjZSwgcXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uPUZhbHNlKQogICAgMgogICAgPj4+IG15X2dsb2JhbHMgPSB7ICJ5IjogIjEwMCIgfQogICAgPj4+IG15X2xvY2FscyA9IHsgInkiOiAiMjAwIiB9CiAgICA+Pj4gc291cmNlID0gInByaW50KGxvY2FscygpWyd5J10sIGdsb2JhbHMoKVsneSddKSIKICAgID4+PiBldmFsX2NvZGUoc291cmNlLCBnbG9iYWxzPW15X2dsb2JhbHMsIGxvY2Fscz1teV9sb2NhbHMpCiAgICAyMDAgMTAwCiAgICA+Pj4gc291cmNlID0gInRlc3QgPSAxICsgMSIKICAgID4+PiBldmFsX2NvZGUoc291cmNlLCByZXR1cm5fbW9kZT0ibGFzdF9leHByX29yX2Fzc2lnbiIpCiAgICAyCiAgICA+Pj4gZXZhbF9jb2RlKHNvdXJjZSwgcmV0dXJuX21vZGU9Imxhc3RfZXhwciIpCiAgICA+Pj4gZXZhbF9jb2RlKHNvdXJjZSwgcmV0dXJuX21vZGU9Im5vbmUiKQogICAgPj4+IHNvdXJjZSA9ICJwcmludChweW9kaWRlKSIgIyBQcmV0ZW5kIHRoaXMgaXMgb3BlbignZXhhbXBsZV9vZl9maWxlbmFtZS5weScsICdyJykucmVhZCgpCiAgICA+Pj4gZXZhbF9jb2RlKHNvdXJjZSwgZmlsZW5hbWU9ImV4YW1wbGVfb2ZfZmlsZW5hbWUucHkiKSAjIGRvY3Rlc3Q6ICtTS0lQCiAgICAjIFRyYWNrYmFjayB3aWxsIHNob3cgd2hlcmUgaW4gdGhlIGZpbGUgdGhlIGVycm9yIGhhcHBlbmVkCiAgICAjIC4uLkZpbGUgImV4YW1wbGVfb2ZfZmlsZW5hbWUucHkiLCBsaW5lIDEsIGluIDxtb2R1bGU+Li4uTmFtZUVycm9yOiBuYW1lICdweW9kaWRlJyBpcyBub3QgZGVmaW5lZAogICAgIiIiCiAgICByZXR1cm4gKAogICAgICAgIENvZGVSdW5uZXIoCiAgICAgICAgICAgIHNvdXJjZSwKICAgICAgICAgICAgcmV0dXJuX21vZGU9cmV0dXJuX21vZGUsCiAgICAgICAgICAgIHF1aWV0X3RyYWlsaW5nX3NlbWljb2xvbj1xdWlldF90cmFpbGluZ19zZW1pY29sb24sCiAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAogICAgICAgICAgICBmbGFncz1mbGFncywKICAgICAgICApCiAgICAgICAgLmNvbXBpbGUoKQogICAgICAgIC5ydW4oZ2xvYmFscywgbG9jYWxzKQogICAgKQoKCmFzeW5jIGRlZiBldmFsX2NvZGVfYXN5bmMoCiAgICBzb3VyY2U6IHN0ciwKICAgIGdsb2JhbHM6IGRpY3Rbc3RyLCBBbnldIHwgTm9uZSA9IE5vbmUsCiAgICBsb2NhbHM6IGRpY3Rbc3RyLCBBbnldIHwgTm9uZSA9IE5vbmUsCiAgICAqLAogICAgcmV0dXJuX21vZGU6IFJldHVybk1vZGUgPSAibGFzdF9leHByIiwKICAgIHF1aWV0X3RyYWlsaW5nX3NlbWljb2xvbjogYm9vbCA9IFRydWUsCiAgICBmaWxlbmFtZTogc3RyID0gIjxleGVjPiIsCiAgICBmbGFnczogaW50ID0gMHgwLAopIC0+IEFueToKICAgICIiIlJ1bnMgYSBjb2RlIHN0cmluZyBhc3luY2hyb25vdXNseS4KCiAgICBVc2VzIDpweTpkYXRhOmBhc3QuUHlDRl9BTExPV19UT1BfTEVWRUxfQVdBSVRgIHRvIGNvbXBpbGUgdGhlIGNvZGUuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgc291cmNlIDoKCiAgICAgICAgVGhlIFB5dGhvbiBzb3VyY2UgY29kZSB0byBydW4uCgogICAgZ2xvYmFscyA6CgogICAgICAgIFRoZSBnbG9iYWwgc2NvcGUgaW4gd2hpY2ggdG8gZXhlY3V0ZSBjb2RlLiBUaGlzIGlzIHVzZWQgYXMgdGhlCiAgICAgICAgYGBnbG9iYWxzYGAgcGFyYW1ldGVyIGZvciA6cHk6ZnVuYzpgZXhlY2AuIElmIGBgZ2xvYmFsc2BgIGlzIGFic2VudCwgYSBuZXcKICAgICAgICBlbXB0eSBkaWN0aW9uYXJ5IGlzIHVzZWQuCgogICAgbG9jYWxzIDoKCiAgICAgICAgVGhlIGxvY2FsIHNjb3BlIGluIHdoaWNoIHRvIGV4ZWN1dGUgY29kZS4gVGhpcyBpcyB1c2VkIGFzIHRoZSBgYGxvY2Fsc2BgCiAgICAgICAgcGFyYW1ldGVyIGZvciA6cHk6ZnVuYzpgZXhlY2AuIElmIGBgbG9jYWxzYGAgaXMgYWJzZW50LCB0aGUgdmFsdWUgb2YKICAgICAgICBgYGdsb2JhbHNgYCBpcyB1c2VkLgoKICAgIHJldHVybl9tb2RlIDoKCiAgICAgICAgU3BlY2lmaWVzIHdoYXQgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgb3B0aW9ucyBhcmU6CgogICAgICAgIDonbGFzdF9leHByJzogcmV0dXJuIHRoZSBsYXN0IGV4cHJlc3Npb24KICAgICAgICA6J2xhc3RfZXhwcl9vcl9hc3NpZ24nOiByZXR1cm4gdGhlIGxhc3QgZXhwcmVzc2lvbiBvciB0aGUgbGFzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQuCgogICAgICAgIDonbm9uZSc6IGFsd2F5cyByZXR1cm4gYGBOb25lYGAuCgogICAgcXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uIDoKCiAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgYSB0cmFpbGluZyBzZW1pY29sb24gc2hvdWxkIHN1cHByZXNzIHRoZSByZXN1bHQgb3IKICAgICAgICBub3QuIFdoZW4gdGhpcyBpcyBgYFRydWVgYCBleGVjdXRpbmcgYGAiMSsxIDsiYGAgcmV0dXJucyBgYE5vbmVgYCwgd2hlbgogICAgICAgIGl0IGlzIGBgRmFsc2VgYCwgZXhlY3V0aW5nIGBgIjErMSA7ImBgIHJldHVybiBgYDJgYC4gYGBUcnVlYGAgYnkKICAgICAgICBkZWZhdWx0LgoKICAgIGZpbGVuYW1lIDoKCiAgICAgICAgVGhlIGZpbGUgbmFtZSB0byB1c2UgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy4gYGAnPGV4ZWM+J2BgIGJ5CiAgICAgICAgZGVmYXVsdC4KCiAgICBmbGFncyA6CgogICAgICAgIFRoZSBmbGFncyB0byBjb21waWxlIHdpdGguIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGJ1aWx0LWluCiAgICAgICAgOmV4dGVybmFsOnB5OmZ1bmM6YGNvbXBpbGVgIGZ1bmN0aW9uLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgICAgICBJZiB0aGUgbGFzdCBub253aGl0ZXNwYWNlIGNoYXJhY3RlciBvZiBgYHNvdXJjZWBgIGlzIGEgc2VtaWNvbG9uLCByZXR1cm4KICAgICAgICBgYE5vbmVgYC4gSWYgdGhlIGxhc3Qgc3RhdGVtZW50IGlzIGFuIGV4cHJlc3Npb24sIHJldHVybiB0aGUgcmVzdWx0IG9mCiAgICAgICAgdGhlIGV4cHJlc3Npb24uIFVzZSB0aGUgYGByZXR1cm5fbW9kZWBgIGFuZCBgYHF1aWV0X3RyYWlsaW5nX3NlbWljb2xvbmBgCiAgICAgICAgcGFyYW1ldGVycyB0byBtb2RpZnkgdGhpcyBkZWZhdWx0IGJlaGF2aW9yLgogICAgIiIiCiAgICBmbGFncyA9IGZsYWdzIG9yIGFzdC5QeUNGX0FMTE9XX1RPUF9MRVZFTF9BV0FJVAogICAgcmV0dXJuICgKICAgICAgICBhd2FpdCBDb2RlUnVubmVyKAogICAgICAgICAgICBzb3VyY2UsCiAgICAgICAgICAgIHJldHVybl9tb2RlPXJldHVybl9tb2RlLAogICAgICAgICAgICBxdWlldF90cmFpbGluZ19zZW1pY29sb249cXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uLAogICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSwKICAgICAgICAgICAgZmxhZ3M9ZmxhZ3MsCiAgICAgICAgKQogICAgICAgIC5jb21waWxlKCkKICAgICAgICAucnVuX2FzeW5jKGdsb2JhbHMsIGxvY2FscykKICAgICkKCgpkZWYgZmluZF9pbXBvcnRzKHNvdXJjZTogc3RyKSAtPiBsaXN0W3N0cl06CiAgICAiIiIKICAgIEZpbmRzIHRoZSBpbXBvcnRzIGluIGEgUHl0aG9uIHNvdXJjZSBjb2RlIHN0cmluZwoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIHNvdXJjZSA6CiAgICAgICBUaGUgUHl0aG9uIHNvdXJjZSBjb2RlIHRvIGluc3BlY3QgZm9yIGltcG9ydHMuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgICAgIEEgbGlzdCBvZiBtb2R1bGUgbmFtZXMgdGhhdCBhcmUgaW1wb3J0ZWQgaW4gYGBzb3VyY2VgYC4gSWYgYGBzb3VyY2VgYCBpcyBub3QKICAgICAgICBzeW50YWN0aWNhbGx5IGNvcnJlY3QgUHl0aG9uIGNvZGUgKGFmdGVyIGRlZGVudGluZyksIHJldHVybnMgYW4gZW1wdHkgbGlzdC4KCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiBmcm9tIHB5b2RpZGUuY29kZSBpbXBvcnQgZmluZF9pbXBvcnRzCiAgICA+Pj4gc291cmNlID0gImltcG9ydCBudW1weSBhcyBucDsgaW1wb3J0IHNjaXB5LnN0YXRzIgogICAgPj4+IGZpbmRfaW1wb3J0cyhzb3VyY2UpCiAgICBbJ251bXB5JywgJ3NjaXB5J10KICAgICIiIgogICAgIyBoYW5kbGUgbWlzLWluZGVudGVkIGlucHV0IGZyb20gbXVsdGktbGluZSBzdHJpbmdzCiAgICBzb3VyY2UgPSBkZWRlbnQoc291cmNlKQoKICAgIHRyeToKICAgICAgICBtb2QgPSBhc3QucGFyc2Uoc291cmNlKQogICAgZXhjZXB0IFN5bnRheEVycm9yOgogICAgICAgIHJldHVybiBbXQogICAgaW1wb3J0cyA9IHNldCgpCiAgICBmb3Igbm9kZSBpbiBhc3Qud2Fsayhtb2QpOgogICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgYXN0LkltcG9ydCk6CiAgICAgICAgICAgIGZvciBuYW1lIGluIG5vZGUubmFtZXM6CiAgICAgICAgICAgICAgICBub2RlX25hbWUgPSBuYW1lLm5hbWUKICAgICAgICAgICAgICAgIGltcG9ydHMuYWRkKG5vZGVfbmFtZS5zcGxpdCgiLiIpWzBdKQogICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBhc3QuSW1wb3J0RnJvbSk6CiAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gbm9kZS5tb2R1bGUKICAgICAgICAgICAgaWYgbW9kdWxlX25hbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGltcG9ydHMuYWRkKG1vZHVsZV9uYW1lLnNwbGl0KCIuIilbMF0pCiAgICByZXR1cm4gbGlzdChzb3J0ZWQoaW1wb3J0cykpClBLAwQUAAAAAACnHqNWVuEUWRAbAAAQGwAAFwAAAF9weW9kaWRlL19pbXBvcnRob29rLnB5aW1wb3J0IHN5cwpmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2VxdWVuY2UKZnJvbSBpbXBvcnRsaWIuYWJjIGltcG9ydCBMb2FkZXIsIE1ldGFQYXRoRmluZGVyCmZyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgTW9kdWxlU3BlYwpmcm9tIGltcG9ydGxpYi51dGlsIGltcG9ydCBzcGVjX2Zyb21fbG9hZGVyCmZyb20gdHlwZXMgaW1wb3J0IE1vZHVsZVR5cGUKZnJvbSB0eXBpbmcgaW1wb3J0IEFueQoKZnJvbSAuX2NvcmVfZG9jcyBpbXBvcnQgSnNQcm94eQoKCmNsYXNzIEpzRmluZGVyKE1ldGFQYXRoRmluZGVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgogICAgICAgIHNlbGYuanNwcm94aWVzOiBkaWN0W3N0ciwgQW55XSA9IHt9CgogICAgZGVmIGZpbmRfc3BlYygKICAgICAgICBzZWxmLAogICAgICAgIGZ1bGxuYW1lOiBzdHIsCiAgICAgICAgcGF0aDogU2VxdWVuY2VbYnl0ZXMgfCBzdHJdIHwgTm9uZSwKICAgICAgICB0YXJnZXQ6IE1vZHVsZVR5cGUgfCBOb25lID0gTm9uZSwKICAgICkgLT4gTW9kdWxlU3BlYyB8IE5vbmU6CiAgICAgICAgW3BhcmVudCwgXywgY2hpbGRdID0gZnVsbG5hbWUucnBhcnRpdGlvbigiLiIpCiAgICAgICAgaWYgcGFyZW50OgogICAgICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJlbnRfbW9kdWxlLCBKc1Byb3h5KToKICAgICAgICAgICAgICAgICMgTm90IG9uZSBvZiB1cy4KICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGpzcHJveHkgPSBnZXRhdHRyKHBhcmVudF9tb2R1bGUsIGNoaWxkKQogICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKAogICAgICAgICAgICAgICAgICAgIGYiTm8gbW9kdWxlIG5hbWVkIHtmdWxsbmFtZSFyfSIsIG5hbWU9ZnVsbG5hbWUKICAgICAgICAgICAgICAgICkgZnJvbSBOb25lCiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGpzcHJveHksIEpzUHJveHkpOgogICAgICAgICAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcigKICAgICAgICAgICAgICAgICAgICBmIk5vIG1vZHVsZSBuYW1lZCB7ZnVsbG5hbWUhcn0iLCBuYW1lPWZ1bGxuYW1lCiAgICAgICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAganNwcm94eSA9IHNlbGYuanNwcm94aWVzW2Z1bGxuYW1lXQogICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGxvYWRlciA9IEpzTG9hZGVyKGpzcHJveHkpCiAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIGxvYWRlciwgb3JpZ2luPSJqYXZhc2NyaXB0IikKCiAgICBkZWYgcmVnaXN0ZXJfanNfbW9kdWxlKHNlbGYsIG5hbWU6IHN0ciwganNwcm94eTogQW55KSAtPiBOb25lOgogICAgICAgICIiIgogICAgICAgIFJlZ2lzdGVycyBgYGpzcHJveHlgYCBhcyBhIEphdmFTY3JpcHQgbW9kdWxlIG5hbWVkIGBgbmFtZWBgLiBUaGUgbW9kdWxlCiAgICAgICAgY2FuIHRoZW4gYmUgaW1wb3J0ZWQgZnJvbSBQeXRob24gdXNpbmcgdGhlIHN0YW5kYXJkIFB5dGhvbiBpbXBvcnQKICAgICAgICBzeXN0ZW0uIElmIGFub3RoZXIgbW9kdWxlIGJ5IHRoZSBzYW1lIG5hbWUgaGFzIGFscmVhZHkgYmVlbiBpbXBvcnRlZCwKICAgICAgICB0aGlzIHdvbid0IGhhdmUgbXVjaCBlZmZlY3QgdW5sZXNzIHlvdSBhbHNvIGRlbGV0ZSB0aGUgaW1wb3J0ZWQgbW9kdWxlCiAgICAgICAgZnJvbSA6cHk6ZGF0YTpgc3lzLm1vZHVsZXNgLiBUaGlzIGlzIGNhbGxlZCBieSB0aGUgSmF2YVNjcmlwdCBBUEkKICAgICAgICA6anM6ZnVuYzpgcHlvZGlkZS5yZWdpc3RlckpzTW9kdWxlYC4KCiAgICAgICAgUGFyYW1ldGVycwogICAgICAgIC0tLS0tLS0tLS0KICAgICAgICBuYW1lIDoKICAgICAgICAgICAgTmFtZSBvZiBqcyBtb2R1bGUKCiAgICAgICAganNwcm94eSA6CiAgICAgICAgICAgIEphdmFTY3JpcHQgb2JqZWN0IGJhY2tpbmcgdGhlIG1vZHVsZQogICAgICAgICIiIgogICAgICAgIGFzc2VydCBKc1Byb3h5IGlzIG5vdCBOb25lCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgZiJBcmd1bWVudCAnbmFtZScgbXVzdCBiZSBhIHN0ciwgbm90IHt0eXBlKG5hbWUpLl9fbmFtZV9fIXJ9IgogICAgICAgICAgICApCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoanNwcm94eSwgSnNQcm94eSk6CiAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgIGYiQXJndW1lbnQgJ2pzcHJveHknIG11c3QgYmUgYSBKc1Byb3h5LCBub3Qge3R5cGUoanNwcm94eSkuX19uYW1lX18hcn0iCiAgICAgICAgICAgICkKICAgICAgICBzZWxmLmpzcHJveGllc1tuYW1lXSA9IGpzcHJveHkKCiAgICBkZWYgdW5yZWdpc3Rlcl9qc19tb2R1bGUoc2VsZiwgbmFtZTogc3RyKSAtPiBOb25lOgogICAgICAgICIiIgogICAgICAgIFVucmVnaXN0ZXJzIGEgSmF2YVNjcmlwdCBtb2R1bGUgd2l0aCBnaXZlbiBuYW1lIHRoYXQgaGFzIGJlZW4gcHJldmlvdXNseQogICAgICAgIHJlZ2lzdGVyZWQgd2l0aCA6anM6ZnVuYzpgcHlvZGlkZS5yZWdpc3RlckpzTW9kdWxlYCBvcgogICAgICAgIDpweTpmdW5jOmBweW9kaWRlLmZmaS5yZWdpc3Rlcl9qc19tb2R1bGVgLiBJZiBhIEphdmFTY3JpcHQgbW9kdWxlIHdpdGggdGhhdCBuYW1lCiAgICAgICAgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgd2lsbCByYWlzZSBhbiBlcnJvci4gSWYgdGhlIG1vZHVsZSBoYXMgYWxyZWFkeQogICAgICAgIGJlZW4gaW1wb3J0ZWQsIHRoaXMgd29uJ3QgaGF2ZSBtdWNoIGVmZmVjdCB1bmxlc3MgeW91IGFsc28gZGVsZXRlIHRoZQogICAgICAgIGltcG9ydGVkIG1vZHVsZSBmcm9tIDpweTpkYXRhOmBzeXMubW9kdWxlc2AuIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBKYXZhU2NyaXB0CiAgICAgICAgQVBJIDpqczpmdW5jOmBweW9kaWRlLnVucmVnaXN0ZXJKc01vZHVsZWAuCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgbmFtZSA6CiAgICAgICAgICAgIE5hbWUgb2YgdGhlIG1vZHVsZSB0byB1bnJlZ2lzdGVyCiAgICAgICAgIiIiCiAgICAgICAgdHJ5OgogICAgICAgICAgICBkZWwgc2VsZi5qc3Byb3hpZXNbbmFtZV0KICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICBmIkNhbm5vdCB1bnJlZ2lzdGVyIHtuYW1lIXJ9OiBubyBKYXZhc2NyaXB0IG1vZHVsZSB3aXRoIHRoYXQgbmFtZSBpcyByZWdpc3RlcmVkIgogICAgICAgICAgICApIGZyb20gTm9uZQoKCmNsYXNzIEpzTG9hZGVyKExvYWRlcik6CiAgICBkZWYgX19pbml0X18oc2VsZiwganNwcm94eTogQW55KSAtPiBOb25lOgogICAgICAgIHNlbGYuanNwcm94eSA9IGpzcHJveHkKCiAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjOiBNb2R1bGVTcGVjKSAtPiBBbnk6CiAgICAgICAgcmV0dXJuIHNlbGYuanNwcm94eQoKICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGU6IE1vZHVsZVR5cGUpIC0+IE5vbmU6CiAgICAgICAgcGFzcwoKICAgICMgdXNlZCBieSBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fbG9hZGVyCiAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZTogc3RyKSAtPiBib29sOgogICAgICAgIHJldHVybiBUcnVlCgoKanNmaW5kZXI6IEpzRmluZGVyID0gSnNGaW5kZXIoKQpyZWdpc3Rlcl9qc19tb2R1bGUgPSBqc2ZpbmRlci5yZWdpc3Rlcl9qc19tb2R1bGUKdW5yZWdpc3Rlcl9qc19tb2R1bGUgPSBqc2ZpbmRlci51bnJlZ2lzdGVyX2pzX21vZHVsZQoKCmRlZiByZWdpc3Rlcl9qc19maW5kZXIoKSAtPiBOb25lOgogICAgIiIiQSBib290c3RyYXAgZnVuY3Rpb24sIGNhbGxlZCBuZWFyIHRoZSBlbmQgb2YgUHlvZGlkZSBpbml0aWFsaXphdGlvbi4KCiAgICBJdCBpcyBjYWxsZWQgaW4gYGBsb2FkUHlvZGlkZWBgIGluIGBgcHlvZGlkZS5qc2BgIG9uY2UgYGBfcHlvZGlkZV9jb3JlYGAgaXMgcmVhZHkKICAgIHRvIHNldCB1cCB0aGUganMgaW1wb3J0IG1lY2hhbmlzbS4KCiAgICAgICAgMS4gUHV0IHRoZSByaWdodCB2YWx1ZSBpbnRvIHRoZSBnbG9iYWwgdmFyaWFibGUgYGBKc1Byb3h5YGAgc28gdGhhdAogICAgICAgICAgIGBgSnNGaW5kZXIuZmluZF9zcGVjYGAgY2FuIGRlY2lkZSB3aGV0aGVyIHBhcmVudCBtb2R1bGUgaXMgYSBKcyBtb2R1bGUuCiAgICAgICAgMi4gQWRkIGBganNmaW5kZXJgYCB0byBtZXRhcGF0aCB0byBhbGxvdyBqcyBpbXBvcnRzLgoKICAgIFRoaXMgbmVlZHMgdG8gYmUgYSBmdW5jdGlvbiB0byBhbGxvdyB0aGUgbGF0ZSBpbXBvcnQgZnJvbSBgYF9weW9kaWRlX2NvcmVgYC4KICAgICIiIgogICAgZm9yIGltcG9ydGVyIGluIHN5cy5tZXRhX3BhdGg6CiAgICAgICAgaWYgaXNpbnN0YW5jZShpbXBvcnRlciwgSnNGaW5kZXIpOgogICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkpzRmluZGVyIGFscmVhZHkgcmVnaXN0ZXJlZCIpCgogICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoanNmaW5kZXIpCgoKU1RETElCUyA9IHN5cy5zdGRsaWJfbW9kdWxlX25hbWVzIHwgeyJ0ZXN0In0KVU5WRU5ET1JFRF9TVERMSUJTX0FORF9URVNUOiBzZXRbc3RyXSA9IHNldCgpCgoKZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KCm9yaWdfZ2V0X21vZHVsZV9ub3RfZm91bmRfZXJyb3I6IEFueSA9IE5vbmUKUkVQT0RBVEFfUEFDS0FHRVNfSU1QT1JUX1RPX1BBQ0tBR0VfTkFNRTogZGljdFtzdHIsIHN0cl0gPSB7fQoKU0VFX1BBQ0tBR0VfTE9BRElORyA9ICgKICAgICJcblNlZSBodHRwczovL3B5b2RpZGUub3JnL2VuL3N0YWJsZS91c2FnZS9sb2FkaW5nLXBhY2thZ2VzLmh0bWwgZm9yIG1vcmUgZGV0YWlscy4iCikKCllPVV9DQU5fSU5TVEFMTF9JVF9CWSA9ICIiIgpZb3UgY2FuIGluc3RhbGwgaXQgYnkgY2FsbGluZzoKICBhd2FpdCBtaWNyb3BpcC5pbnN0YWxsKCJ7cGFja2FnZV9uYW1lfSIpIGluIFB5dGhvbiwgb3IKICBhd2FpdCBweW9kaWRlLmxvYWRQYWNrYWdlKCJ7cGFja2FnZV9uYW1lfSIpIGluIEphdmFTY3JpcHRcCiIiIgoKCmRlZiBnZXRfbW9kdWxlX25vdF9mb3VuZF9lcnJvcihpbXBvcnRfbmFtZSk6CiAgICBwYWNrYWdlX25hbWUgPSBSRVBPREFUQV9QQUNLQUdFU19JTVBPUlRfVE9fUEFDS0FHRV9OQU1FLmdldChpbXBvcnRfbmFtZSwgIiIpCgogICAgaWYgbm90IHBhY2thZ2VfbmFtZSBhbmQgaW1wb3J0X25hbWUgbm90IGluIFNURExJQlM6CiAgICAgICAgcmV0dXJuIG9yaWdfZ2V0X21vZHVsZV9ub3RfZm91bmRfZXJyb3IoaW1wb3J0X25hbWUpCgogICAgaWYgcGFja2FnZV9uYW1lIGluIFVOVkVORE9SRURfU1RETElCU19BTkRfVEVTVDoKICAgICAgICBtc2cgPSAiVGhlIG1vZHVsZSAne3BhY2thZ2VfbmFtZX0nIGlzIHVudmVuZG9yZWQgZnJvbSB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkgaW4gdGhlIFB5b2RpZGUgZGlzdHJpYnV0aW9uLiIKICAgICAgICBtc2cgKz0gWU9VX0NBTl9JTlNUQUxMX0lUX0JZCiAgICBlbGlmIGltcG9ydF9uYW1lIGluIFNURExJQlM6CiAgICAgICAgbXNnID0gKAogICAgICAgICAgICAiVGhlIG1vZHVsZSAne2ltcG9ydF9uYW1lfScgaXMgcmVtb3ZlZCBmcm9tIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSBpbiB0aGUiCiAgICAgICAgICAgICIgUHlvZGlkZSBkaXN0cmlidXRpb24gZHVlIHRvIGJyb3dzZXIgbGltaXRhdGlvbnMuIgogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgbXNnID0gIlRoZSBtb2R1bGUgJ3twYWNrYWdlX25hbWV9JyBpcyBpbmNsdWRlZCBpbiB0aGUgUHlvZGlkZSBkaXN0cmlidXRpb24sIGJ1dCBpdCBpcyBub3QgaW5zdGFsbGVkLiIKICAgICAgICBtc2cgKz0gWU9VX0NBTl9JTlNUQUxMX0lUX0JZCgogICAgbXNnICs9IFNFRV9QQUNLQUdFX0xPQURJTkcKICAgIHJldHVybiBNb2R1bGVOb3RGb3VuZEVycm9yKAogICAgICAgIG1zZy5mb3JtYXQoaW1wb3J0X25hbWU9aW1wb3J0X25hbWUsIHBhY2thZ2VfbmFtZT1wYWNrYWdlX25hbWUpCiAgICApCgoKZGVmIHJlZ2lzdGVyX21vZHVsZV9ub3RfZm91bmRfaG9vayhwYWNrYWdlczogQW55LCB1bnZlbmRvcmVkOiBBbnkpIC0+IE5vbmU6CiAgICAiIiIKICAgIEEgZnVuY3Rpb24gdGhhdCBhZGRzIFVudmVuZG9yZWRTdGRsaWJGaW5kZXIgdG8gdGhlIGVuZCBvZiBzeXMubWV0YV9wYXRoLgoKICAgIE5vdGUgdGhhdCB0aGlzIGZpbmRlciBtdXN0IGJlIHBsYWNlZCBpbiB0aGUgZW5kIG9mIG1ldGFfcGF0aHMKICAgIGluIG9yZGVyIHRvIHByZXZlbnQgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzLgogICAgIiIiCiAgICBnbG9iYWwgb3JpZ19nZXRfbW9kdWxlX25vdF9mb3VuZF9lcnJvcgogICAgZ2xvYmFsIFJFUE9EQVRBX1BBQ0tBR0VTX0lNUE9SVF9UT19QQUNLQUdFX05BTUUKICAgIGdsb2JhbCBVTlZFTkRPUkVEX1NURExJQlNfQU5EX1RFU1QKICAgIFJFUE9EQVRBX1BBQ0tBR0VTX0lNUE9SVF9UT19QQUNLQUdFX05BTUUgPSBwYWNrYWdlcy50b19weSgpCiAgICBVTlZFTkRPUkVEX1NURExJQlNfQU5EX1RFU1QgPSBzZXQodW52ZW5kb3JlZC50b19weSgpKQogICAgb3JpZ19nZXRfbW9kdWxlX25vdF9mb3VuZF9lcnJvciA9IF9ib290c3RyYXAuX2dldF9tb2R1bGVfbm90X2ZvdW5kX2Vycm9yCiAgICBfYm9vdHN0cmFwLl9nZXRfbW9kdWxlX25vdF9mb3VuZF9lcnJvciA9IGdldF9tb2R1bGVfbm90X2ZvdW5kX2Vycm9yClBLAwQUAAAAAACnHqNWUAjnA2EDAABhAwAAGAAAAF9weW9kaWRlL2RvY3NfYXJnc3BlYy5weWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBDYWxsYWJsZQpmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhcgoKVCA9IFR5cGVWYXIoIlQiKQoKCmRlZiBkb2NzX2FyZ3NwZWMoYXJnc3BlYzogc3RyKSAtPiBDYWxsYWJsZVtbVF0sIFRdOgogICAgIiIiT3ZlcnJpZGUgdGhlIGFyZ3NwZWMgb2YgdGhlIGZ1bmN0aW9uIGluIHRoZSBkb2N1bWVudGF0aW9uLgoKICAgIFRoaXMgaXMgZGVmaW5lZCBhcyBhIG5vLW9wIGhlcmUsIGJ1dCBpcyBvdmVycmlkZGVuIHdoZW4gYnVpbGRpbmcgdGhlIGRvY3MuCgogICAgSXQgaXMgbm90IGVhc3kgdG8gc2F0aXNmeSBteXB5IHNvIGZyZXF1ZW50bHkgd2UgaGF2ZSB0byBwdXQgc29tZXRoaW5nIGxpa2UKICAgICphcmdzOiBBbnksICoqa3dhcmdzOiBBbnkgYXMgdGhlIHR5cGUgZm9yIHRoZSBtZXRob2QgaXRzZWxmLiBUaGlzIG1ha2VzIHRoZQogICAgZG9jcyBsb29rIGJhZCBiZWNhdXNlIHRoZXkgaWdub3JlIHRoZSBvdmVybG9hZHMuIFRoaXMgYWxsb3dzIHVzIHRvIHNhdGlzZnkKICAgIG15cHkgYnV0IGFsc28gcmVuZGVyIHNvbWV0aGluZyBiZXR0ZXIgaW4gdGhlIGRvY3MuIFNlZSBpbXBsZW1lbnRhdGlvbiBpbgogICAgZG9jcy9jb25mLnB5LgogICAgIiIiCgogICAgZGVmIGRlYyhmdW5jKToKICAgICAgICByZXR1cm4gZnVuYwoKICAgIHJldHVybiBkZWMKCgppbXBvcnQgYnVpbHRpbnMKCiMgRXZpbCBtZXRob2QgdG8gb3ZlcnJpZGUgZG9jc19hcmdzcGVjIHdoZW4gYnVpbGRpbmcgZG9jcwpnbG9iYWxzKClbImRvY3NfYXJnc3BlYyJdID0gZ2V0YXR0cihidWlsdGlucywgIi0tZG9jc19hcmdzcGVjLS0iLCBkb2NzX2FyZ3NwZWMpCgpfX2FsbF9fID0gWyJkb2NzX2FyZ3NwZWMiXQpQSwMEFAAAAAAApx6jVgggW3jpBgAA6QYAABUAAABfcHlvZGlkZS9kb2NzdHJpbmcucHlmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKCgpkZWYgZGVkZW50X2RvY3N0cmluZyhkb2NzdHJpbmcpOgogICAgIiIiVGhpcyByZW1vdmVzIGluaXRpYWwgc3BhY2VzIGZyb20gdGhlIGxpbmVzIG9mIHRoZSBkb2NzdHJpbmcuCgogICAgQWZ0ZXIgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGRvY3N0cmluZywgYWxsIG90aGVyIGxpbmVzIHdpbGwgaW5jbHVkZSBzb21lCiAgICBzcGFjZXMuIFRoaXMgcmVtb3ZlcyB0aGVtLgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gX3B5b2RpZGUuZG9jc3RyaW5nIGltcG9ydCBkZWRlbnRfZG9jc3RyaW5nCiAgICA+Pj4gZGVkZW50X2RvY3N0cmluZyhkZWRlbnRfZG9jc3RyaW5nLl9fZG9jX18pLnNwbGl0KCJcXG4iKVsyXQogICAgJ0FmdGVyIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBkb2NzdHJpbmcsIGFsbCBvdGhlciBsaW5lcyB3aWxsIGluY2x1ZGUgc29tZScKICAgICIiIgogICAgZmlyc3RfbmV3bGluZSA9IGRvY3N0cmluZy5maW5kKCJcbiIpCiAgICBpZiBmaXJzdF9uZXdsaW5lID09IC0xOgogICAgICAgIHJldHVybiBkb2NzdHJpbmcKICAgIGRvY3N0cmluZyA9IGRvY3N0cmluZ1s6Zmlyc3RfbmV3bGluZV0gKyBkZWRlbnQoZG9jc3RyaW5nW2ZpcnN0X25ld2xpbmU6XSkKICAgIHJldHVybiBkb2NzdHJpbmcKCgpkZWYgZ2V0X2NtZXRoX2RvY3N0cmluZyhmdW5jKToKICAgICIiIkdldCB0aGUgdmFsdWUgdG8gdXNlIGZvciB0aGUgUHlNZXRob2REZWYubWxfZG9jIGF0dHJpYnV0ZSBmb3IgYSBidWlsdGluCiAgICBmdW5jdGlvbi4gVGhpcyBpcyB1c2VkIGluIGRvY3N0cmluZy5jLgoKICAgIFRoZSBtbF9kb2Mgc2hvdWxkIHN0YXJ0IHdpdGggYSBzaWduYXR1cmUgd2hpY2ggY2Fubm90IGhhdmUgYW55IHR5cGUKICAgIGFubm90YXRpb25zLiBUaGUgc2lnbmF0dXJlIG11c3QgZW5kIHdpdGggdGhlIGV4YWN0IGNoYXJhY3RlcnMgIilcbi0tXG5cbiIuCiAgICBGb3IgZXhhbXBsZTogImZ1bmNuYW1lKGFyZzEsIGFyZzIpXG4tLVxuXG4iCgogICAgU2VlOgogICAgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2Jsb2IvdjMuOC4yL09iamVjdHMvdHlwZW9iamVjdC5jI0w4NAoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gX3B5b2RpZGUuZG9jc3RyaW5nIGltcG9ydCBnZXRfY21ldGhfZG9jc3RyaW5nCiAgICA+Pj4gZ2V0X2NtZXRoX2RvY3N0cmluZyhzdW0pWzo4MF0KICAgICJzdW0oaXRlcmFibGUsIC8sIHN0YXJ0PTApXFxuLS1cXG5cXG5SZXR1cm4gdGhlIHN1bSBvZiBhICdzdGFydCcgdmFsdWUgKGRlZmF1bHQ6IDApIHBsdSIKICAgICIiIgogICAgZnJvbSBpbnNwZWN0IGltcG9ydCBfZW1wdHksIHNpZ25hdHVyZQoKICAgIHNpZyA9IHNpZ25hdHVyZShmdW5jKQogICAgIyByZW1vdmUgcGFyYW0gYW5kIHJldHVybiBhbm5vdGF0aW9ucyBhbmQKICAgIGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKICAgICAgICBwYXJhbS5fYW5ub3RhdGlvbiA9IF9lbXB0eSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQogICAgc2lnLl9yZXR1cm5fYW5ub3RhdGlvbiA9IF9lbXB0eSAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQoKICAgIGRvY3N0cmluZyA9IGRlZGVudF9kb2NzdHJpbmcoZnVuYy5fX2RvY19fKSBpZiBmdW5jLl9fZG9jX18gaXMgbm90IE5vbmUgZWxzZSAiIgoKICAgIHJldHVybiBmdW5jLl9fbmFtZV9fICsgc3RyKHNpZykgKyAiXG4tLVxuXG4iICsgZG9jc3RyaW5nClBLAwQUAAAAAACoHqNW8dmbFtGlAADRpQAAFgAAAF9weW9kaWRlL19jb3JlX2RvY3MucHlpbXBvcnQgc3lzCmZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCAoCiAgICBBc3luY0l0ZXJhdG9yLAogICAgQXdhaXRhYmxlLAogICAgQ2FsbGFibGUsCiAgICBJdGVtc1ZpZXcsCiAgICBJdGVyYWJsZSwKICAgIEl0ZXJhdG9yLAogICAgS2V5c1ZpZXcsCiAgICBNYXBwaW5nLAogICAgTXV0YWJsZU1hcHBpbmcsCiAgICBTZXF1ZW5jZSwKICAgIFZhbHVlc1ZpZXcsCikKZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQpmcm9tIHR5cGVzIGltcG9ydCBUcmFjZWJhY2tUeXBlCmZyb20gdHlwaW5nIGltcG9ydCBJTywgQW55LCBHZW5lcmljLCBUeXBlVmFyLCBvdmVybG9hZAoKZnJvbSAuZG9jc19hcmdzcGVjIGltcG9ydCBkb2NzX2FyZ3NwZWMKCiMgQWxsIGRvY3N0cmluZ3MgZm9yIHB1YmxpYyBgY29yZWAgQVBJcyBzaG91bGQgYmUgZXh0cmFjdGVkIGZyb20gaGVyZS4gV2UgdXNlCiMgdGhlIHV0aWxpdGllcyBpbiBgZG9jc3RyaW5nLnB5YCBhbmQgYGRvY3N0cmluZy5jYCB0byBmb3JtYXQgdGhlbQojIGFwcHJvcHJpYXRlbHkuCgojIFNwaGlueCB1c2VzIF9fbmFtZV9fIHRvIGRldGVybWluZSB0aGUgcGF0aHMgYW5kIHN1Y2guIEl0IGxvb2tzIGJldHRlciBmb3IgaXQKIyB0byByZWZlciB0byBlLmcuLCBgcHlvZGlkZS5Kc1Byb3h5YCB0aGFuIGBfcHlvZGlkZS5fY29yZV9kb2NzLkpzUHJveHlgLgojCiMgVXNlIGFuIGVtcHR5IG5hbWUgZm9yIHRoZSBtb2R1bGUgb2YgdGhlIHR5cGUgdmFyaWFibGVzIHRvIHByZXZlbnQgbG9uZwojIHF1YWxpZmllZCBuYW1lcyBmb3IgdGhlIHR5cGUgdmFyaWFibGVzIGZyb20gYXBwZWFyaW5nIGluIHRoZSBkb2NzLgpfc2F2ZV9uYW1lID0gX19uYW1lX18KX19uYW1lX18gPSAiIgoKVCA9IFR5cGVWYXIoIlQiKQpLVCA9IFR5cGVWYXIoIktUIikgICMgS2V5IHR5cGUuClZUID0gVHlwZVZhcigiVlQiKSAgIyBWYWx1ZSB0eXBlLgpUY28gPSBUeXBlVmFyKCJUY28iLCBjb3ZhcmlhbnQ9VHJ1ZSkgICMgQW55IHR5cGUgY292YXJpYW50IGNvbnRhaW5lcnMuClZjbyA9IFR5cGVWYXIoIlZjbyIsIGNvdmFyaWFudD1UcnVlKSAgIyBBbnkgdHlwZSBjb3ZhcmlhbnQgY29udGFpbmVycy4KVlRjbyA9IFR5cGVWYXIoIlZUY28iLCBjb3ZhcmlhbnQ9VHJ1ZSkgICMgVmFsdWUgdHlwZSBjb3ZhcmlhbnQgY29udGFpbmVycy4KVGNvbnRyYSA9IFR5cGVWYXIoIlRjb250cmEiLCBjb250cmF2YXJpYW50PVRydWUpICAjIERpdHRvIGNvbnRyYXZhcmlhbnQuCgpfX25hbWVfXyA9ICJweW9kaWRlLmZmaSIKCl9qc19mbGFnczogZGljdFtzdHIsIGludF0gPSB7fQoKCmRlZiBfYmlub3JfcmVkdWNlKGw6IEl0ZXJhYmxlW2ludF0pIC0+IGludDoKICAgIHJldHVybiByZWR1Y2UobGFtYmRhIHgsIHk6IHggfCB5LCBsKQoKCmRlZiBfcHJvY2Vzc19mbGFnX2V4cHJlc3Npb24oZTogc3RyKSAtPiBpbnQ6CiAgICByZXR1cm4gX2Jpbm9yX3JlZHVjZShfanNfZmxhZ3NbeC5zdHJpcCgpXSBmb3IgeCBpbiBlLnNwbGl0KCJ8IikpCgoKY2xhc3MgX0pzUHJveHlNZXRhQ2xhc3ModHlwZSk6CiAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oY2xzLCBpbnN0YW5jZSk6CiAgICAgICAgIiIiT3ZlcnJpZGUgZm9yIGlzaW5zdGFuY2UoaW5zdGFuY2UsIGNscykuIiIiCiAgICAgICAgIyBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgdXNlci1nZW5lcmF0ZWQgc3ViY2xhc3NlcyB3aXRoIGN1c3RvbSBpbnN0YW5jZQogICAgICAgICMgY2hlY2tzCiAgICAgICAgIyBlLmcuLCBjb3VsZCBjaGVjayBmb3IgYSBmZXRjaCByZXNwb25zZSB3aXRoIHguY29uc3RydWN0b3IubmFtZSA9PSAiUmVzcG9uc2UiCiAgICAgICAgIyBvciBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeCkgPT0gIltvYmplY3QgUmVzcG9uc2VdIi4KICAgICAgICByZXR1cm4gY2xzLl9fc3ViY2xhc3NjaGVja19fKHR5cGUoaW5zdGFuY2UpKQoKICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhjbHMsIHN1YmNsYXNzKToKICAgICAgICAjIFRPRE86IFRoaXMgd29ya3MgZm9yIG5vdyBidXQgbWF5YmUgdGhlcmUgaXMgYSBiZXR0ZXIgb3IgY2xlYW5lciB3YXkgdG8KICAgICAgICAjIGRvIHRoaXMuCiAgICAgICAgaWYgdHlwZS5fX3N1YmNsYXNzY2hlY2tfXyhjbHMsIHN1YmNsYXNzKToKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBpZiBub3QgaGFzYXR0cihzdWJjbGFzcywgIl9qc190eXBlX2ZsYWdzIik6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICMgRm9yIHRoZSAic3ludGhldGljIiBzdWJ0eXBlcyBkZWZpbmVkIGluIHRoaXMgZmlsZSwgd2UgZGVmaW5lCiAgICAgICAgIyBfanNfdHlwZV9mbGFncyBhcyBhIHN0cmluZy4gV2UgbG9vayB0aGVzZSB1cCBpbiB0aGUgX2pzX2ZsYWdzIGRpY3QgdG8KICAgICAgICAjIGNvbnZlcnQgdG8gYSBudW1iZXIuCiAgICAgICAgY2xzX2ZsYWdzID0gY2xzLl9qc190eXBlX2ZsYWdzICAjIHR5cGU6aWdub3JlW2F0dHItZGVmaW5lZF0KICAgICAgICBpZiBpc2luc3RhbmNlKGNsc19mbGFncywgaW50KToKICAgICAgICAgICAgY2xzX2ZsYWdzID0gW2Nsc19mbGFnc10KICAgICAgICBlbHNlOgogICAgICAgICAgICBjbHNfZmxhZ3MgPSBbX3Byb2Nlc3NfZmxhZ19leHByZXNzaW9uKGYpIGZvciBmIGluIGNsc19mbGFnc10KCiAgICAgICAgc3ViY2xhc3NfZmxhZ3MgPSBzdWJjbGFzcy5fanNfdHlwZV9mbGFncwogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1YmNsYXNzX2ZsYWdzLCBpbnQpOgogICAgICAgICAgICBzdWJjbGFzc19mbGFncyA9IF9iaW5vcl9yZWR1Y2UoX2pzX2ZsYWdzW2ZdIGZvciBmIGluIHN1YmNsYXNzX2ZsYWdzKQoKICAgICAgICByZXR1cm4gYW55KGNsc19mbGFnICYgc3ViY2xhc3NfZmxhZ3MgPT0gY2xzX2ZsYWcgZm9yIGNsc19mbGFnIGluIGNsc19mbGFncykKCgojIFdlIHdhbnQgdG8gcmFpc2UgYW4gZXJyb3IgaWYgc29tZW9uZSB0cmllcyB0byBpbnN0YW50aWF0ZSBKc1Byb3h5IGRpcmVjdGx5CiMgc2luY2UgaXQgZG9lc24ndCBtZWFuIGFueXRoaW5nLiBCdXQgd2UgaGF2ZSBhIGZldyByZWFzb25zIHRvIGRvIHNvIGludGVybmFsbHkuCiMgU28gd2UgcmFpc2UgYW4gZXJyb3IgdW5sZXNzIHRoaXMgcHJpdmF0ZSB0b2tlbiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQuCl9pbnN0YW50aWF0ZV90b2tlbiA9IG9iamVjdCgpCgoKY2xhc3MgSnNQcm94eShtZXRhY2xhc3M9X0pzUHJveHlNZXRhQ2xhc3MpOgogICAgIiIiQSBwcm94eSB0byBtYWtlIGEgSmF2YVNjcmlwdCBvYmplY3QgYmVoYXZlIGxpa2UgYSBQeXRob24gb2JqZWN0CgogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSA6cmVmOmB0eXBlLXRyYW5zbGF0aW9uc2AgZG9jdW1lbnRhdGlvbi4gSW4KICAgIHBhcnRpY3VsYXIsIHNlZQogICAgOnJlZjpgdGhlIGxpc3Qgb2YgX19kdW5kZXJfXyBtZXRob2RzIDx0eXBlLXRyYW5zbGF0aW9ucy1qc3Byb3h5PmAKICAgIHRoYXQgYXJlIChjb25kaXRpb25hbGx5KSBpbXBsZW1lbnRlZCBvbiA6cHk6Y2xhc3M6YEpzUHJveHlgLgogICAgIiIiCgogICAgX2pzX3R5cGVfZmxhZ3M6IEFueSA9IDAKCiAgICBkZWYgX19uZXdfXyhjbHMsIGFyZz1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIGlmIGFyZyBpcyBfaW5zdGFudGlhdGVfdG9rZW46CiAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzKQogICAgICAgIHJhaXNlIFR5cGVFcnJvcihmIntjbHMuX19uYW1lX199IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuIikKCiAgICBAcHJvcGVydHkKICAgIGRlZiBqc19pZChzZWxmKSAtPiBpbnQ6CiAgICAgICAgIiIiQW4gaWQgbnVtYmVyIHdoaWNoIGNhbiBiZSB1c2VkIGFzIGEgZGljdGlvbmFyeS9zZXQga2V5IGlmIHlvdSB3YW50IHRvCiAgICAgICAga2V5IG9uIEphdmFTY3JpcHQgb2JqZWN0IGlkZW50aXR5LgoKICAgICAgICBJZiB0d28gYGBKc1Byb3h5YGAgYXJlIG1hZGUgd2l0aCB0aGUgc2FtZSBiYWNraW5nIEphdmFTY3JpcHQgb2JqZWN0LCB0aGV5CiAgICAgICAgd2lsbCBoYXZlIHRoZSBzYW1lIGBganNfaWRgYC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gMAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHR5cGVvZihzZWxmKSAtPiBzdHI6CiAgICAgICAgIiIiUmV0dXJucyB0aGUgSmF2YVNjcmlwdCB0eXBlIG9mIHRoZSBgYEpzUHJveHlgYC4KCiAgICAgICAgQ29ycmVzcG9uZHMgdG8gYHR5cGVvZiBvYmo7YCBpbiBKYXZhU2NyaXB0LiBZb3UgbWF5IGFsc28gYmUgaW50ZXJlc3RlZAogICAgICAgIGluIHRoZSBgY29uc3R1Y3RvcmAgYXR0cmlidXRlIHdoaWNoIHJldHVybnMgdGhlIHR5cGUgYXMgYW4gb2JqZWN0LgogICAgICAgICIiIgogICAgICAgIHJldHVybiAib2JqZWN0IgoKICAgIGRlZiBvYmplY3RfZW50cmllcyhzZWxmKSAtPiAiSnNQcm94eSI6CiAgICAgICAgIlRoZSBKYXZhU2NyaXB0IEFQSSBgYE9iamVjdC5lbnRyaWVzKG9iamVjdClgYCIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIG9iamVjdF9rZXlzKHNlbGYpIC0+ICJKc1Byb3h5IjoKICAgICAgICAiVGhlIEphdmFTY3JpcHQgQVBJIGBgT2JqZWN0LmtleXMob2JqZWN0KWBgIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgb2JqZWN0X3ZhbHVlcyhzZWxmKSAtPiAiSnNQcm94eSI6CiAgICAgICAgIlRoZSBKYXZhU2NyaXB0IEFQSSBgYE9iamVjdC52YWx1ZXMob2JqZWN0KWBgIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgYXNfb2JqZWN0X21hcChzZWxmLCAqLCBoZXJlZGl0YXJ5OiBib29sID0gRmFsc2UpIC0+ICJKc011dGFibGVNYXBbc3RyLCBBbnldIjoKICAgICAgICAiIiJSZXR1cm5zIGEgbmV3IEpzUHJveHkgdGhhdCB0cmVhdHMgdGhlIG9iamVjdCBhcyBhIG1hcC4KCiAgICAgICAgVGhlIG1ldGhvZHMgOnB5OmZ1bmM6YH5vcGVyYXRvci5fX2dldGl0ZW1fX2AsCiAgICAgICAgOnB5OmZ1bmM6YH5vcGVyYXRvci5fX3NldGl0ZW1fX2AsIDpweTpmdW5jOmB+b3BlcmF0b3IuX19jb250YWluc19fYCwKICAgICAgICA6cHk6bWV0aDpgfm9iamVjdC5fX2xlbl9fYCwgZXRjIHdpbGwgcGVyZm9ybSBsb29rdXBzIHZpYSBgYG9iamVjdFtrZXldYGAKICAgICAgICBvciBzaW1pbGFyLgoKICAgICAgICBOb3RlIHRoYXQgYGBsZW4oeC5hc19vYmplY3RfbWFwKCkpYGAgZXZhbHVhdGVzIGluIE8obikgdGltZSAoaXQgaXRlcmF0ZXMKICAgICAgICBvdmVyIHRoZSBvYmplY3QgYW5kIGNvdW50cyBob3cgbWFueSA6anM6ZnVuYzpgflJlZmxlY3Qub3duS2V5c2AgaXQgaGFzKS4KICAgICAgICBJZiB5b3UgbmVlZCB0byBjb21wdXRlIHRoZSBsZW5ndGggaW4gTygxKSB0aW1lLCB1c2UgYSByZWFsCiAgICAgICAgOmpzOmNsYXNzOmBNYXBgIGluc3RlYWQuCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgaGVyZWRpdGFyeToKICAgICAgICAgICAgSWYgYGBUcnVlYGAsIGFueSAicGxhaW4gb2xkIG9iamVjdHMiIHN0b3JlZCBhcyB2YWx1ZXMgaW4gdGhlIG9iamVjdAogICAgICAgICAgICB3aWxsIGJlIHdyYXBwZWQgaW4gYGFzX29iamVjdF9tYXBgIHRoZW1zZWx2ZXMuCgogICAgICAgIEV4YW1wbGVzCiAgICAgICAgLS0tLS0tLS0KCiAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICAgICAgZnJvbSBweW9kaWRlLmNvZGUgaW1wb3J0IHJ1bl9qcwoKICAgICAgICAgICAgbyA9IHJ1bl9qcygiKHt4IDoge3k6IDJ9fSkiKQogICAgICAgICAgICAjIFlvdSBoYXZlIHRvIGFjY2VzcyB0aGUgcHJvcGVydGllcyBvZiBvIGFzIGF0dHJpYnV0ZXMKICAgICAgICAgICAgYXNzZXJ0IG8ueC55ID09IDIKICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICAgICBvWyJ4Il0gIyBpcyBub3Qgc3Vic2NyaXB0YWJsZQoKICAgICAgICAgICAgIyBhc19vYmplY3RfbWFwIGFsbG93cyB1cyB0byBhY2Nlc3MgdGhlIHByb3BlcnR5IHdpdGggZ2V0aXRlbQogICAgICAgICAgICBhc3NlcnQgby5hc19vYmplY3RfbWFwKClbIngiXS55ID09IDIKCiAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgICAgIyBUaGUgaW5uZXIgb2JqZWN0IGlzIG5vdCBzdWJzY3JpcHRhYmxlIGJlY2F1c2UgaGVyZWRpdGFyeSBpcyBGYWxzZS4KICAgICAgICAgICAgICAgIG8uYXNfb2JqZWN0X21hcCgpWyJ4Il1bInkiXQoKICAgICAgICAgICAgIyBXaGVuIGhlcmVkaXRhcnkgaXMgVHJ1ZSwgdGhlIGlubmVyIG9iamVjdCBpcyBhbHNvIHN1YnNjcmlwdGFibGUKICAgICAgICAgICAgYXNzZXJ0IG8uYXNfb2JqZWN0X21hcChoZXJlZGl0YXJ5PVRydWUpWyJ4Il1bInkiXSA9PSAyCgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgbmV3KHNlbGYsICphcmdzOiBBbnksICoqa3dhcmdzOiBBbnkpIC0+ICJKc1Byb3h5IjoKICAgICAgICAiIiJDb25zdHJ1Y3QgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEphdmFTY3JpcHQgb2JqZWN0IiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiB0b19weSgKICAgICAgICBzZWxmLAogICAgICAgICosCiAgICAgICAgZGVwdGg6IGludCA9IC0xLAogICAgICAgIGRlZmF1bHRfY29udmVydGVyOiBDYWxsYWJsZVsKICAgICAgICAgICAgWyJKc1Byb3h5IiwgQ2FsbGFibGVbWyJKc1Byb3h5Il0sIEFueV0sIENhbGxhYmxlW1siSnNQcm94eSIsIEFueV0sIE5vbmVdXSwKICAgICAgICAgICAgQW55LAogICAgICAgIF0KICAgICAgICB8IE5vbmUgPSBOb25lLAogICAgKSAtPiBBbnk6CiAgICAgICAgIiIiQ29udmVydCB0aGUgOmNsYXNzOmBKc1Byb3h5YCB0byBhIG5hdGl2ZSBQeXRob24gb2JqZWN0IGFzIGJlc3QgYXMKICAgICAgICBwb3NzaWJsZS4KCiAgICAgICAgU2VlIDpyZWY6YHR5cGUtdHJhbnNsYXRpb25zLWpzcHJveHktdG8tcHlgIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIGRlcHRoOgogICAgICAgICAgICBMaW1pdCB0aGUgZGVwdGggb2YgdGhlIGNvbnZlcnNpb24uIElmIGEgc2hhbGxvdyBjb252ZXJzaW9uIGlzCiAgICAgICAgICAgIGRlc2lyZWQsIHNldCBgYGRlcHRoYGAgdG8gMS4KCiAgICAgICAgZGVmYXVsdF9jb252ZXJ0ZXI6CgogICAgICAgICAgICBJZiBwcmVzZW50LCB0aGlzIHdpbGwgYmUgaW52b2tlZCB3aGVuZXZlciBQeW9kaWRlIGRvZXMgbm90IGhhdmUgc29tZQogICAgICAgICAgICBidWlsdCBpbiBjb252ZXJzaW9uIGZvciB0aGUgb2JqZWN0LiBJZiBgYGRlZmF1bHRfY29udmVydGVyYGAgcmFpc2VzCiAgICAgICAgICAgIGFuIGVycm9yLCB0aGUgZXJyb3Igd2lsbCBiZSBhbGxvd2VkIHRvIHByb3BhZ2F0ZS4gT3RoZXJ3aXNlLCB0aGUKICAgICAgICAgICAgb2JqZWN0IHJldHVybmVkIHdpbGwgYmUgdXNlZCBhcyB0aGUgY29udmVyc2lvbi4KICAgICAgICAgICAgYGBkZWZhdWx0X2NvbnZlcnRlcmBgIHRha2VzIHRocmVlIGFyZ3VtZW50cy4gVGhlIGZpcnN0IGFyZ3VtZW50IGlzCiAgICAgICAgICAgIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuCgogICAgICAgIEV4YW1wbGVzCiAgICAgICAgLS0tLS0tLS0KCiAgICAgICAgSGVyZSBhcmUgYSBjb3VwbGUgZXhhbXBsZXMgb2YgY29udmVydGVyIGZ1bmN0aW9ucy4gSW4gYWRkaXRpb24gdG8gdGhlCiAgICAgICAgbm9ybWFsIGNvbnZlcnNpb25zLCBjb252ZXJ0IDpqczpjbGFzczpgRGF0ZWBgIHRvIDpweTpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYDoKCiAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICAgICAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKICAgICAgICAgICAgZGVmIGRlZmF1bHRfY29udmVydGVyKHZhbHVlLCBfaWdub3JlZDEsIF9pZ25vcmVkMik6CiAgICAgICAgICAgICAgICBpZiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09ICJEYXRlIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChkLnZhbHVlT2YoKS8xMDAwKQogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgICAgIERvbid0IGNyZWF0ZSBhbnkgSnNQcm94aWVzLCByZXF1aXJlIGEgY29tcGxldGUgY29udmVyc2lvbiBvciByYWlzZSBhbiBlcnJvcjoKCiAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICAgICAgZGVmIGRlZmF1bHRfY29udmVydGVyKF92YWx1ZSwgX2lnbm9yZWQxLCBfaWdub3JlZDIpOgogICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gY29tcGxldGVseSBjb252ZXJ0IG9iamVjdCIpCgogICAgICAgIFRoZSBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50cyBhcmUgb25seSBuZWVkZWQgZm9yIGNvbnZlcnRpbmcKICAgICAgICBjb250YWluZXJzLiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgY29udmVyc2lvbiBmdW5jdGlvbiB3aGljaCBpcyB1c2VkCiAgICAgICAgdG8gY29udmVydCB0aGUgZWxlbWVudHMgb2YgdGhlIGNvbnRhaW5lciB3aXRoIHRoZSBzYW1lIHNldHRpbmdzLiBUaGUKICAgICAgICB0aGlyZCBhcmd1bWVudCBpcyBhICJjYWNoZSIgZnVuY3Rpb24gd2hpY2ggaXMgbmVlZGVkIHRvIGhhbmRsZSBzZWxmCiAgICAgICAgcmVmZXJlbnRpYWwgY29udGFpbmVycy4gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlLiBTdXBwb3NlIHdlIGhhdmUKICAgICAgICBhIEphdmFzY3JpcHQgYGBQYWlyYGAgY2xhc3M6CgogICAgICAgIC4uIGNvZGUtYmxvY2s6OiBqYXZhc2NyaXB0CgogICAgICAgICAgICBjbGFzcyBQYWlyIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGZpcnN0LCBzZWNvbmQpewogICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3QgPSBmaXJzdDsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY29uZCA9IHNlY29uZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICBXZSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgYGBkZWZhdWx0X2NvbnZlcnRlcmBgIHRvIGNvbnZlcnQgYGBQYWlyYGAgdG8gOnB5OmNsYXNzOmBsaXN0YDoKCiAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICAgICAgZGVmIGRlZmF1bHRfY29udmVydGVyKHZhbHVlLCBjb252ZXJ0LCBjYWNoZSk6CiAgICAgICAgICAgICAgICBpZiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lICE9ICJQYWlyIjoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgICAgICAgICBjYWNoZSh2YWx1ZSwgcmVzdWx0KTsKICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29udmVydCh2YWx1ZS5maXJzdCkpCiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvbnZlcnQodmFsdWUuc2Vjb25kKSkKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKCiAgICAgICAgTm90ZSB0aGF0IHdlIGhhdmUgdG8gY2FjaGUgdGhlIGNvbnZlcnNpb24gb2YgYGB2YWx1ZWBgIGJlZm9yZSBjb252ZXJ0aW5nCiAgICAgICAgYGB2YWx1ZS5maXJzdGBgIGFuZCBgYHZhbHVlLnNlY29uZGBgLiBUbyBzZWUgd2h5LCBjb25zaWRlciBhIHNlbGYKICAgICAgICByZWZlcmVudGlhbCBwYWlyOgoKICAgICAgICAuLiBjb2RlLWJsb2NrOjogamF2YXNjcmlwdAoKICAgICAgICAgICAgbGV0IHAgPSBuZXcgUGFpcigwLCAwKTsKICAgICAgICAgICAgcC5maXJzdCA9IHA7CgogICAgICAgIFdpdGhvdXQgYGBjYWNoZSh2YWx1ZSwgcmVzdWx0KTtgYCwgY29udmVydGluZyBgYHBgYCB3b3VsZCBsZWFkIHRvIGFuCiAgICAgICAgaW5maW5pdGUgcmVjdXJzZS4gV2l0aCBpdCwgd2UgY2FuIHN1Y2Nlc3NmdWxseSBjb252ZXJ0IGBgcGBgIHRvIGEgbGlzdAogICAgICAgIHN1Y2ggdGhhdCBgYGxbMF0gaXMgbGBgLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCgpjbGFzcyBKc0RvdWJsZVByb3h5KEpzUHJveHkpOgogICAgIiIiQSBkb3VibGUgcHJveHkgY3JlYXRlZCB3aXRoIDpweTpmdW5jOmBjcmVhdGVfcHJveHlgLiIiIgoKICAgIF9qc190eXBlX2ZsYWdzID0gWyJJU19ET1VCTEVfUFJPWFkiXQoKICAgIGRlZiBkZXN0cm95KHNlbGYpIC0+IE5vbmU6CiAgICAgICAgIiIiRGVzdHJveSB0aGUgcHJveHkuIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiB1bndyYXAoc2VsZikgLT4gQW55OgogICAgICAgICIiIlVud3JhcCBhIGRvdWJsZSBwcm94eSBjcmVhdGVkIHdpdGggOnB5OmZ1bmM6YGNyZWF0ZV9wcm94eWAgaW50byB0aGUKICAgICAgICB3cmFwcGVkIFB5dGhvbiBvYmplY3QuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIEpzUHJvbWlzZShKc1Byb3h5KToKICAgICIiIkEgOnB5OmNsYXNzOmB+cHlvZGlkZS5mZmkuSnNQcm94eWAgb2YgYSA6anM6Y2xhc3M6YFByb21pc2VgIG9yIHNvbWUgb3RoZXIgYHRoZW5hYmxlCiAgICA8aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvUHJvbWlzZSN0aGVuYWJsZXM+YF8KICAgIEphdmFTY3JpcHQgb2JqZWN0LgoKICAgIEEgSmF2YVNjcmlwdCBvYmplY3QgaXMgY29uc2lkZXJlZCB0byBiZSBhIDpqczpjbGFzczpgUHJvbWlzZWAgaWYgaXQgaGFzIGEgYGB0aGVuYGAgbWV0aG9kLgogICAgIiIiCgogICAgX2pzX3R5cGVfZmxhZ3MgPSBbIklTX0FXQUlUQUJMRSJdCgogICAgZGVmIHRoZW4oCiAgICAgICAgc2VsZiwgb25mdWxmaWxsZWQ6IENhbGxhYmxlW1tBbnldLCBBbnldLCBvbnJlamVjdGVkOiBDYWxsYWJsZVtbQW55XSwgQW55XQogICAgKSAtPiAiSnNQcm9taXNlIjoKICAgICAgICAiIiJUaGUgOmpzOm1ldGg6YFByb21pc2UudGhlbmAgQVBJLCB3cmFwcGVkIHRvIG1hbmFnZSB0aGUgbGlmZXRpbWVzIG9mIHRoZQogICAgICAgIGhhbmRsZXJzLgoKICAgICAgICBQeW9kaWRlIHdpbGwgYXV0b21hdGljYWxseSByZWxlYXNlIHRoZSByZWZlcmVuY2VzIHRvIHRoZSBoYW5kbGVycwogICAgICAgIHdoZW4gdGhlIHByb21pc2UgcmVzb2x2ZXMuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjYXRjaChzZWxmLCBvbnJlamVjdGVkOiBDYWxsYWJsZVtbQW55XSwgQW55XSwgLykgLT4gIkpzUHJvbWlzZSI6CiAgICAgICAgIiIiVGhlIDpqczptZXRoOmBQcm9taXNlLmNhdGNoYCBBUEksIHdyYXBwZWQgdG8gbWFuYWdlIHRoZSBsaWZldGltZXMgb2YgdGhlCiAgICAgICAgaGFuZGxlci4KCiAgICAgICAgUHlvZGlkZSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVsZWFzZSB0aGUgcmVmZXJlbmNlcyB0byB0aGUgaGFuZGxlcgogICAgICAgIHdoZW4gdGhlIHByb21pc2UgcmVzb2x2ZXMuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBmaW5hbGx5XyhzZWxmLCBvbmZpbmFsbHk6IENhbGxhYmxlW1tdLCBBbnldLCAvKSAtPiAiSnNQcm9taXNlIjoKICAgICAgICAiIiJUaGUgOmpzOm1ldGg6YFByb21pc2UuZmluYWxseWAgQVBJLCB3cmFwcGVkIHRvIG1hbmFnZSB0aGUgbGlmZXRpbWVzIG9mCiAgICAgICAgdGhlIGhhbmRsZXIuCgogICAgICAgIFB5b2RpZGUgd2lsbCBhdXRvbWF0aWNhbGx5IHJlbGVhc2UgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIGhhbmRsZXIKICAgICAgICB3aGVuIHRoZSBwcm9taXNlIHJlc29sdmVzLiBOb3RlIHRoZSB0cmFpbGluZyB1bmRlcnNjb3JlIGluIHRoZSBuYW1lOwogICAgICAgIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgYGBmaW5hbGx5YGAgaXMgYSByZXNlcnZlZCBrZXl3b3JkIGluIFB5dGhvbi4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKY2xhc3MgSnNCdWZmZXIoSnNQcm94eSk6CiAgICAiIiJBIEpzUHJveHkgb2YgYW4gYXJyYXkgYnVmZmVyIG9yIGFycmF5IGJ1ZmZlciB2aWV3IiIiCgogICAgX2pzX3R5cGVfZmxhZ3MgPSBbIklTX0JVRkZFUiJdCiAgICAjIFRoZXJlIGFyZSBubyB0eXBlcyBmb3IgYnVmZmVyczoKICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmcvaXNzdWVzLzU5MwogICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI3NTAxCiAgICAjIFRoaXMgaXMganVzdCBmb3IgZG9jcyBzbyBsZXRzIGp1c3QgbWFrZSBzb21ldGhpbmcgdXA/CgogICAgIyBBcmd1bWVudCBzaG91bGQgYmUgYSBidWZmZXIuCiAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3R5cGluZy9pc3N1ZXMvNTkzCiAgICBkZWYgYXNzaWduKHNlbGYsIHJoczogQW55LCAvKSAtPiBOb25lOgogICAgICAgICIiIkFzc2lnbiBmcm9tIGEgUHl0aG9uIGJ1ZmZlciBpbnRvIHRoZSBKYXZhU2NyaXB0IGJ1ZmZlci4iIiIKCiAgICAjIEFyZ3VtZW50IHNob3VsZCBiZSBhIGJ1ZmZlci4KICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nL2lzc3Vlcy81OTMKICAgIGRlZiBhc3NpZ25fdG8oc2VsZiwgdG86IEFueSwgLykgLT4gTm9uZToKICAgICAgICAiIiJBc3NpZ24gdG8gYSBQeXRob24gYnVmZmVyIGZyb20gdGhlIEphdmFTY3JpcHQgYnVmZmVyLiIiIgoKICAgIGRlZiB0b19tZW1vcnl2aWV3KHNlbGYpIC0+IG1lbW9yeXZpZXc6CiAgICAgICAgIiIiQ29udmVydCBhIGJ1ZmZlciB0byBhIG1lbW9yeXZpZXcuCgogICAgICAgIENvcGllcyB0aGUgZGF0YSBvbmNlLiBUaGlzIGN1cnJlbnRseSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCiAgICAgICAgOnB5Om1ldGg6YH5Kc0FycmF5LnRvX3B5YC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIHRvX2J5dGVzKHNlbGYpIC0+IGJ5dGVzOgogICAgICAgICIiIkNvbnZlcnQgYSBidWZmZXIgdG8gYSBieXRlcyBvYmplY3QuCgogICAgICAgIENvcGllcyB0aGUgZGF0YSBvbmNlLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgdG9fZmlsZShzZWxmLCBmaWxlOiBJT1tieXRlc10gfCBJT1tzdHJdLCAvKSAtPiBOb25lOgogICAgICAgICIiIldyaXRlcyBhIGJ1ZmZlciB0byBhIGZpbGUuCgogICAgICAgIFdpbGwgd3JpdGUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mCiAgICAgICAgdGhlIGZpbGUuCgogICAgICAgIEV4YW1wbGUKICAgICAgICAtLS0tLS0tCiAgICAgICAgPj4+IGltcG9ydCBweXRlc3Q7IHB5dGVzdC5za2lwKCkKICAgICAgICA+Pj4gZnJvbSBqcyBpbXBvcnQgVWludDhBcnJheQogICAgICAgID4+PiB4ID0gVWludDhBcnJheS5uZXcocmFuZ2UoMTApKQogICAgICAgID4+PiB3aXRoIG9wZW4oJ2ZpbGUuYmluJywgJ3diJykgYXMgZmg6CiAgICAgICAgLi4uICAgIHgudG9fZmlsZShmaCkKICAgICAgICB3aGljaCBpcyBlcXVpdmFsZW50IHRvLAogICAgICAgID4+PiB3aXRoIG9wZW4oJ2ZpbGUuYmluJywgJ3diJykgYXMgZmg6CiAgICAgICAgLi4uICAgIGRhdGEgPSB4LnRvX2J5dGVzKCkKICAgICAgICAuLi4gICAgZmgud3JpdGUoZGF0YSkKICAgICAgICBidXQgdGhlIGxhdHRlciBjb3BpZXMgdGhlIGRhdGEgdHdpY2Ugd2hlcmVhcyB0aGUgZm9ybWVyIG9ubHkgY29waWVzIHRoZQogICAgICAgIGRhdGEgb25jZS4KICAgICAgICAiIiIKCiAgICBkZWYgZnJvbV9maWxlKHNlbGYsIGZpbGU6IElPW2J5dGVzXSB8IElPW3N0cl0sIC8pIC0+IE5vbmU6CiAgICAgICAgIiIiUmVhZHMgZnJvbSBhIGZpbGUgaW50byBhIGJ1ZmZlci4KCiAgICAgICAgV2lsbCB0cnkgdG8gcmVhZCBhIGNodW5rIG9mIGRhdGEgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgYnVmZmVyIGZyb20KICAgICAgICB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgZmlsZS4KCiAgICAgICAgRXhhbXBsZQogICAgICAgIC0tLS0tLS0KICAgICAgICA+Pj4gaW1wb3J0IHB5dGVzdDsgcHl0ZXN0LnNraXAoKQogICAgICAgID4+PiBmcm9tIGpzIGltcG9ydCBVaW50OEFycmF5CiAgICAgICAgPj4+ICMgdGhlIEpzUHJveHkgbmVlZCB0byBiZSBwcmUtYWxsb2NhdGVkCiAgICAgICAgPj4+IHggPSBVaW50OEFycmF5Lm5ldyhyYW5nZSgxMCkpCiAgICAgICAgPj4+IHdpdGggb3BlbignZmlsZS5iaW4nLCAncmInKSBhcyBmaDoKICAgICAgICAuLi4gICAgeC5yZWFkX2ZpbGUoZmgpCiAgICAgICAgd2hpY2ggaXMgZXF1aXZhbGVudCB0bwogICAgICAgID4+PiB4ID0gVWludDhBcnJheS5uZXcocmFuZ2UoMTApKQogICAgICAgID4+PiB3aXRoIG9wZW4oJ2ZpbGUuYmluJywgJ3JiJykgYXMgZmg6CiAgICAgICAgLi4uICAgIGNodW5rID0gZmgucmVhZChzaXplPXguYnl0ZUxlbmd0aCkKICAgICAgICAuLi4gICAgeC5hc3NpZ24oY2h1bmspCiAgICAgICAgYnV0IHRoZSBsYXR0ZXIgY29waWVzIHRoZSBkYXRhIHR3aWNlIHdoZXJlYXMgdGhlIGZvcm1lciBvbmx5IGNvcGllcyB0aGUKICAgICAgICBkYXRhIG9uY2UuCiAgICAgICAgIiIiCgogICAgZGVmIF9pbnRvX2ZpbGUoc2VsZiwgZmlsZTogSU9bYnl0ZXNdIHwgSU9bc3RyXSwgLykgLT4gTm9uZToKICAgICAgICAiIiJXaWxsIHdyaXRlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgYSBidWZmZXIgaW50byBhIGZpbGUgdXNpbmcKICAgICAgICBgYGNhbk93biA6IHRydWVgYCB3aXRob3V0IGFueSBjb3B5LiBBZnRlciB0aGlzLCB0aGUgYnVmZmVyIGNhbm5vdCBiZQogICAgICAgIHVzZWQgYWdhaW4uCgogICAgICAgIElmIGBgZmlsZWBgIGlzIG5vdCBlbXB0eSwgaXRzIGNvbnRlbnRzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hCgogICAgICAgIE9ubHkgYGBNRU1GU2BgIGNhcmVzIGFib3V0IHRoZSBgYGNhbk93bmBgIGZsYWcsIG90aGVyIGZpbGUgc3lzdGVtcyB3aWxsCiAgICAgICAganVzdCBpZ25vcmUgaXQuCgoKICAgICAgICBFeGFtcGxlCiAgICAgICAgLS0tLS0tLQogICAgICAgID4+PiBpbXBvcnQgcHl0ZXN0OyBweXRlc3Quc2tpcCgpCiAgICAgICAgPj4+IGZyb20ganMgaW1wb3J0IFVpbnQ4QXJyYXkKICAgICAgICA+Pj4geCA9IFVpbnQ4QXJyYXkubmV3KHJhbmdlKDEwKSkKICAgICAgICA+Pj4gd2l0aCBvcGVuKCdmaWxlLmJpbicsICd3YicpIGFzIGZoOgogICAgICAgIC4uLiAgICB4Ll9pbnRvX2ZpbGUoZmgpCiAgICAgICAgd2hpY2ggaXMgc2ltaWxhciB0bwogICAgICAgID4+PiB3aXRoIG9wZW4oJ2ZpbGUuYmluJywgJ3diJykgYXMgZmg6CiAgICAgICAgLi4uICAgIGRhdGEgPSB4LnRvX2J5dGVzKCkKICAgICAgICAuLi4gICAgZmgud3JpdGUoZGF0YSkKICAgICAgICBidXQgdGhlIGxhdHRlciBjb3BpZXMgdGhlIGRhdGEgb25jZSB3aGVyZWFzIHRoZSBmb3JtZXIgZG9lc24ndCBjb3B5IHRoZQogICAgICAgIGRhdGEuCiAgICAgICAgIiIiCgogICAgZGVmIHRvX3N0cmluZyhzZWxmLCBlbmNvZGluZzogc3RyIHwgTm9uZSA9IE5vbmUpIC0+IHN0cjoKICAgICAgICAiIiJDb252ZXJ0IGEgYnVmZmVyIHRvIGEgc3RyaW5nIG9iamVjdC4KCiAgICAgICAgQ29waWVzIHRoZSBkYXRhIHR3aWNlLgoKICAgICAgICBUaGUgZW5jb2RpbmcgYXJndW1lbnQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIDpqczpjbGFzczpgVGV4dERlY29kZXJgCiAgICAgICAgY29uc3RydWN0b3IuIEl0IHNob3VsZCBiZSBvbmUgb2YgdGhlIGVuY29kaW5ncyBsaXN0ZWQgaW4gYHRoZSB0YWJsZSBoZXJlCiAgICAgICAgPGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnLyNuYW1lcy1hbmQtbGFiZWxzPmBfLiBUaGUgZGVmYXVsdAogICAgICAgIGVuY29kaW5nIGlzIHV0ZjguCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIEpzQXJyYXkoSnNQcm94eSwgR2VuZXJpY1tUXSk6CiAgICAiIiJBIEpzUHJveHkgb2YgYW4gOmpzOmNsYXNzOmBBcnJheWAsIDpqczpjbGFzczpgTm9kZUxpc3RgLCBvciA6anM6Y2xhc3M6YFR5cGVkQXJyYXlgIiIiCgogICAgX2pzX3R5cGVfZmxhZ3MgPSBbIklTX0FSUkFZIiwgIklTX05PREVfTElTVCIsICJJU19UWVBFREFSUkFZIl0KCiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaWR4OiBpbnQgfCBzbGljZSkgLT4gVDoKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGlkeDogaW50IHwgc2xpY2UsIHZhbHVlOiBUKSAtPiBOb25lOgogICAgICAgIHBhc3MKCiAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgaWR4OiBpbnQgfCBzbGljZSkgLT4gTm9uZToKICAgICAgICBwYXNzCgogICAgZGVmIF9fbGVuX18oc2VsZikgLT4gaW50OgogICAgICAgIHJldHVybiAwCgogICAgZGVmIGV4dGVuZChzZWxmLCBvdGhlcjogSXRlcmFibGVbVF0sIC8pIC0+IE5vbmU6CiAgICAgICAgIiIiRXh0ZW5kIGFycmF5IGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZS4iIiIKCiAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpIC0+IEl0ZXJhdG9yW1RdOgogICAgICAgICIiIlJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgOmpzOmNsYXNzOmBBcnJheWAuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBwb3Aoc2VsZiwgLywgaW5kZXg6IGludCA9IC0xKSAtPiBUOgogICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIHRoZSBgYGl0ZW1gYCBhdCBgYGluZGV4YGAgKGRlZmF1bHQgbGFzdCkuCgogICAgICAgIFJhaXNlcyA6cHk6ZXhjOmBJbmRleEVycm9yYCBpZiBsaXN0IGlzIGVtcHR5IG9yIGluZGV4IGlzIG91dCBvZiByYW5nZS4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIHB1c2goc2VsZiwgLywgb2JqZWN0OiBUKSAtPiBOb25lOgogICAgICAgIHBhc3MKCiAgICBkZWYgYXBwZW5kKHNlbGYsIC8sIG9iamVjdDogVCkgLT4gTm9uZToKICAgICAgICAiIiJBcHBlbmQgb2JqZWN0IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuIiIiCgogICAgZGVmIGluZGV4KHNlbGYsIC8sIHZhbHVlOiBULCBzdGFydDogaW50ID0gMCwgc3RvcDogaW50ID0gc3lzLm1heHNpemUpIC0+IGludDoKICAgICAgICAiIiJSZXR1cm4gZmlyc3QgYGBpbmRleGBgIGF0IHdoaWNoIGBgdmFsdWVgYCBhcHBlYXJzIGluIHRoZSBgYEFycmF5YGAuCgogICAgICAgIFJhaXNlcyA6cHk6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjb3VudChzZWxmLCAvLCB4OiBUKSAtPiBpbnQ6CiAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZXMgeCBhcHBlYXJzIGluIHRoZSBsaXN0LiIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgcmV2ZXJzZShzZWxmKSAtPiBOb25lOgogICAgICAgICIiIlJldmVyc2UgdGhlIGFycmF5IGluIHBsYWNlLgoKICAgICAgICBQcmVzZW50IG9ubHkgaWYgdGhlIHdyYXBwZWQgSmF2YXNjcmlwdCBvYmplY3QgaXMgYW4gYXJyYXkuCiAgICAgICAgIiIiCgogICAgZGVmIHRvX3B5KAogICAgICAgIHNlbGYsCiAgICAgICAgKiwKICAgICAgICBkZXB0aDogaW50ID0gLTEsCiAgICAgICAgZGVmYXVsdF9jb252ZXJ0ZXI6IENhbGxhYmxlWwogICAgICAgICAgICBbIkpzUHJveHkiLCBDYWxsYWJsZVtbIkpzUHJveHkiXSwgQW55XSwgQ2FsbGFibGVbWyJKc1Byb3h5IiwgQW55XSwgTm9uZV1dLAogICAgICAgICAgICBBbnksCiAgICAgICAgXQogICAgICAgIHwgTm9uZSA9IE5vbmUsCiAgICApIC0+IGxpc3RbQW55XToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKY2xhc3MgSnNUeXBlZEFycmF5KEpzQnVmZmVyLCBKc0FycmF5W2ludF0pOgogICAgX2pzX3R5cGVfZmxhZ3MgPSBbIklTX1RZUEVEQVJSQVkiXQogICAgQllURVNfUEVSX0VMRU1FTlQ6IGludAoKICAgIGRlZiBzdWJhcnJheSgKICAgICAgICBzZWxmLCBzdGFydDogaW50IHwgTm9uZSA9IE5vbmUsIHN0b3A6IGludCB8IE5vbmUgPSBOb25lCiAgICApIC0+ICJKc1R5cGVkQXJyYXkiOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBidWZmZXI6IEpzQnVmZmVyCgoKQE1hcHBpbmcucmVnaXN0ZXIKY2xhc3MgSnNNYXAoSnNQcm94eSwgR2VuZXJpY1tLVCwgVlRjb10pOgogICAgIiIiQSBKYXZhU2NyaXB0IE1hcAoKICAgIFRvIGJlIGNvbnNpZGVyZWQgYSBtYXAsIGEgSmF2YVNjcmlwdCBvYmplY3QgbXVzdCBoYXZlIGEgYGBnZXRgYCBtZXRob2QsIGl0CiAgICBtdXN0IGhhdmUgYSBgYHNpemVgYCBvciBhIGBgbGVuZ3RoYGAgcHJvcGVydHkgd2hpY2ggaXMgYSBudW1iZXIKICAgIChpZGlvbWF0aWNhbGx5IGl0IHNob3VsZCBiZSBjYWxsZWQgYGBzaXplYGApIGFuZCBpdCBtdXN0IGJlIGl0ZXJhYmxlLgogICAgIiIiCgogICAgX2pzX3R5cGVfZmxhZ3MgPSBbIkhBU19HRVQgfCBIQVNfTEVOR1RIIHwgSVNfSVRFUkFCTEUiLCAiSVNfT0JKRUNUX01BUCJdCgogICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGlkeDogS1QpIC0+IFZUY286CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBfX2xlbl9fKHNlbGYpIC0+IGludDoKICAgICAgICByZXR1cm4gMAoKICAgIGRlZiBfX2l0ZXJfXyhzZWxmKSAtPiBLVDoKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpZHg6IEtUKSAtPiBib29sOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYga2V5cyhzZWxmKSAtPiBLZXlzVmlld1tLVF06CiAgICAgICAgIiIiUmV0dXJuIGEgOnB5OmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLktleXNWaWV3YCBmb3IgdGhlIG1hcC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIGl0ZW1zKHNlbGYpIC0+IEl0ZW1zVmlld1tLVCwgVlRjb106CiAgICAgICAgIiIiUmV0dXJuIGEgOnB5OmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLkl0ZW1zVmlld2AgZm9yIHRoZSBtYXAuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiB2YWx1ZXMoc2VsZikgLT4gVmFsdWVzVmlld1tWVGNvXToKICAgICAgICAiIiJSZXR1cm4gYSA6cHk6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuVmFsdWVzVmlld2AgZm9yIHRoZSBtYXAuIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBvdmVybG9hZAogICAgZGVmIGdldChzZWxmLCBrZXk6IEtULCAvKSAtPiBWVGNvIHwgTm9uZToKICAgICAgICAuLi4KCiAgICBAb3ZlcmxvYWQKICAgIGRlZiBnZXQoc2VsZiwga2V5OiBLVCwgZGVmYXVsdDogVlRjbyB8IFQsIC8pIC0+IFZUY28gfCBUOgogICAgICAgIC4uLgoKICAgIEBkb2NzX2FyZ3NwZWMoIihzZWxmLCBrZXk6IEtULCBkZWZhdWx0OiBWVGNvIHwgTm9uZSwgLykgLT4gVlRjbyIpCiAgICBkZWYgZ2V0KHNlbGYsIGtleTogS1QsIGRlZmF1bHQ6IEFueSA9IE5vbmUsIC8pIC0+IFZUY286CiAgICAgICAgciIiIklmIGBga2V5IGluIHNlbGZgYCwgcmV0dXJucyBgYHNlbGZba2V5XWBgLiBPdGhlcndpc2UgcmV0dXJucyBgYGRlZmF1bHRgYC4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKQE11dGFibGVNYXBwaW5nLnJlZ2lzdGVyCmNsYXNzIEpzTXV0YWJsZU1hcChKc01hcFtLVCwgVlRdLCBHZW5lcmljW0tULCBWVF0pOgogICAgIiIiQSBKYXZhU2NyaXB0IG11dGFibGUgbWFwCgogICAgVG8gYmUgY29uc2lkZXJlZCBhIG11dGFibGUgbWFwLCBhIEphdmFTY3JpcHQgb2JqZWN0IG11c3QgaGF2ZSBhIGBgZ2V0YGAKICAgIG1ldGhvZCwgYSBgYGhhc2BgIG1ldGhvZCwgYSBgYHNpemVgYCBvciBhIGBgbGVuZ3RoYGAgcHJvcGVydHkgd2hpY2ggaXMgYQogICAgbnVtYmVyIChpZGlvbWF0aWNhbGx5IGl0IHNob3VsZCBiZSBjYWxsZWQgYGBzaXplYGApIGFuZCBpdCBtdXN0IGJlIGl0ZXJhYmxlLgoKICAgIEluc3RhbmNlcyBvZiB0aGUgSmF2YVNjcmlwdCBidWlsdGluIGBgTWFwYGAgY2xhc3MgYXJlIGBgSnNNdXRhYmxlTWFwYGAgcy4KICAgIEFsc28gcHJveGllcyByZXR1cm5lZCBieSA6cHk6bWV0aDpgSnNQcm94eS5hc19vYmplY3RfbWFwYCBhcmUgaW5zdGFuY2VzIG9mCiAgICBgYEpzTWFwYGAgLgogICAgIiIiCgogICAgX2pzX3R5cGVfZmxhZ3MgPSBbIkhBU19HRVQgfCBIQVNfU0VUIHwgSEFTX0xFTkdUSCB8IElTX0lURVJBQkxFIiwgIklTX09CSkVDVF9NQVAiXQoKICAgIEBvdmVybG9hZAogICAgZGVmIHBvcChzZWxmLCBrZXk6IEtULCAvKSAtPiBWVDoKICAgICAgICAuLi4KCiAgICBAb3ZlcmxvYWQKICAgIGRlZiBwb3Aoc2VsZiwga2V5OiBLVCwgZGVmYXVsdDogVlQgfCBUID0gLi4uLCAvKSAtPiBWVCB8IFQ6CiAgICAgICAgLi4uCgogICAgQGRvY3NfYXJnc3BlYygiKHNlbGYsIGtleTogS1QsIGRlZmF1bHQ6IFZUIHwgTm9uZSA9IE5vbmUsIC8pIC0+IFZUIikKICAgIGRlZiBwb3Aoc2VsZiwga2V5OiBLVCwgZGVmYXVsdDogQW55ID0gTm9uZSwgLykgLT4gQW55OgogICAgICAgIHIiIiJJZiBgYGtleSBpbiBzZWxmYGAsIHJldHVybiBgYHNlbGZba2V5XWBgIGFuZCByZW1vdmUga2V5IGZyb20gYGBzZWxmYGAuIE90aGVyd2lzZQogICAgICAgIHJldHVybnMgYGBkZWZhdWx0YGAuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBzZXRkZWZhdWx0KHNlbGYsIGtleTogS1QsIGRlZmF1bHQ6IFZUIHwgTm9uZSA9IE5vbmUpIC0+IFZUOgogICAgICAgICIiIklmIGBga2V5IGluIHNlbGZgYCwgcmV0dXJuIGBgc2VsZltrZXldYGAuIE90aGVyd2lzZQogICAgICAgIHNldHMgYGBzZWxmW2tleV0gPSBkZWZhdWx0YGAgYW5kIHJldHVybnMgYGBkZWZhdWx0YGAuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBwb3BpdGVtKHNlbGYpIC0+IHR1cGxlW0tULCBWVF06CiAgICAgICAgIiIiUmVtb3ZlIHNvbWUgYXJiaXRyYXJ5IGBga2V5LCB2YWx1ZWBgIHBhaXIgZnJvbSB0aGUgbWFwIGFuZCByZXR1cm5zIHRoZQogICAgICAgIGBgKGtleSwgdmFsdWUpYGAgdHVwbGUuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGRlZiBjbGVhcihzZWxmKSAtPiBOb25lOgogICAgICAgICIiIkVtcHR5IG91dCB0aGUgbWFwIGVudGlyZWx5LiIiIgoKICAgIEBvdmVybG9hZAogICAgZGVmIHVwZGF0ZShzZWxmLCBfX206IE1hcHBpbmdbS1QsIFZUXSwgKiprd2FyZ3M6IFZUKSAtPiBOb25lOgogICAgICAgIC4uLgoKICAgIEBvdmVybG9hZAogICAgZGVmIHVwZGF0ZShzZWxmLCBfX206IEl0ZXJhYmxlW3R1cGxlW0tULCBWVF1dLCAqKmt3YXJnczogVlQpIC0+IE5vbmU6CiAgICAgICAgLi4uCgogICAgQG92ZXJsb2FkCiAgICBkZWYgdXBkYXRlKHNlbGYsICoqa3dhcmdzOiBWVCkgLT4gTm9uZToKICAgICAgICAuLi4KCiAgICBAZG9jc19hcmdzcGVjKAogICAgICAgICIoc2VsZiwgb3RoZXIgOiBNYXBwaW5nW0tULCBWVF0gfCBJdGVyYWJsZVt0dXBsZVtLVCwgVlRdXSA9IE5vbmUgLCAvLCAqKmt3YXJncykgLT4gTm9uZSIKICAgICkKICAgIGRlZiB1cGRhdGUoc2VsZiwgKmFyZ3M6IEFueSwgKiprd2FyZ3M6IEFueSkgLT4gTm9uZToKICAgICAgICByIiIiVXBkYXRlcyBgYHNlbGZgYCBmcm9tIGBgb3RoZXJgYCBhbmQgYGBrd2FyZ3NgYC4KCiAgICAgICAgUGFyYW1ldGVycwogICAgICAgIC0tLS0tLS0tLS0KICAgICAgICAgICAgb3RoZXI6CgogICAgICAgICAgICAgICAgRWl0aGVyIGEgbWFwcGluZyBvciBhbiBpdGVyYWJsZSBvZiBwYWlycy4gVGhpcyBjYW4gYmUgbGVmdCBvdXQuCgogICAgICAgICAgICBrd2FyZ3M6ICBgYFZUYGAKCiAgICAgICAgICAgICAgICBFeHRyYSBrZXktdmFsdWVzIHBhaXJzIHRvIGluc2VydCBpbnRvIHRoZSBtYXAuIE9ubHkgdXNhYmxlIGZvcgogICAgICAgICAgICAgICAgaW5zZXJ0aW5nIGV4dHJhIHN0cmluZ3MuCgogICAgICAgIElmIGBgb3RoZXJgYCBpcyBwcmVzZW50IGFuZCBpcyBhIDpweTpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nYCBvciBoYXMgYSBgYGtleXNgYAogICAgICAgIG1ldGhvZCwgZG9lcwoKICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogICAgICAgICAgICBmb3IgayBpbiBvdGhlcjoKICAgICAgICAgICAgICAgIHNlbGZba10gPSBvdGhlcltrXQoKICAgICAgICBJZiBgYG90aGVyYGAgaXMgcHJlc2VudCBhbmQgbGFja3MgYSBgYGtleXNgYCBtZXRob2QsIGRvZXMKCiAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICAgICAgZm9yIChrLCB2KSBpbiBvdGhlcjoKICAgICAgICAgICAgICAgIHNlbGZba10gPSB2CgogICAgICAgIEluIGFsbCBjYXNlcyB0aGlzIGlzIGZvbGxvd2VkIGJ5OgoKICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogICAgICAgICAgICBmb3IgKGssIHYpIGluIGt3YXJncy5pdGVtcygpOgogICAgICAgICAgICAgICAgc2VsZltrXSA9IHYKCiAgICAgICAgIiIiCgogICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGlkeDogS1QsIHZhbHVlOiBWVCkgLT4gTm9uZToKICAgICAgICBwYXNzCgogICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGlkeDogS1QpIC0+IE5vbmU6CiAgICAgICAgcmV0dXJuIE5vbmUKCgpjbGFzcyBKc0l0ZXJhdG9yKEpzUHJveHksIEdlbmVyaWNbVGNvXSk6CiAgICAiIiJBIEpzUHJveHkgb2YgYSBKYXZhU2NyaXB0IGl0ZXJhdG9yLgoKICAgIEFuIG9iamVjdCBpcyBhIDpweTpjbGFzczpgSnNBc3luY0l0ZXJhdG9yYCBpZiBpdCBoYXMgYSA6anM6bWV0aDpgfkl0ZXJhdG9yLm5leHRgIG1ldGhvZCBhbmQgZWl0aGVyIGhhcyBhCiAgICA6anM6ZGF0YTpgU3ltYm9sLml0ZXJhdG9yYCBvciBoYXMgbm8gOmpzOmRhdGE6YFN5bWJvbC5hc3luY0l0ZXJhdG9yYC4KICAgICIiIgoKICAgIF9qc190eXBlX2ZsYWdzID0gWyJJU19JVEVSQVRPUiJdCgogICAgZGVmIF9fbmV4dF9fKHNlbGYpIC0+IFRjbzoKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+IEl0ZXJhdG9yW1Rjb106CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIEpzQXN5bmNJdGVyYXRvcihKc1Byb3h5LCBHZW5lcmljW1Rjb10pOgogICAgIiIiQSBKc1Byb3h5IG9mIGEgSmF2YVNjcmlwdCBhc3luYyBpdGVyYXRvci4KCiAgICBBbiBvYmplY3QgaXMgYSA6cHk6Y2xhc3M6YEpzQXN5bmNJdGVyYXRvcmAgaWYgaXQgaGFzIGEKICAgIDpqczptZXRoOmB+QXN5bmNJdGVyYXRvci5uZXh0YCBtZXRob2QgYW5kIGVpdGhlciBoYXMgYQogICAgOmpzOmRhdGE6YFN5bWJvbC5hc3luY0l0ZXJhdG9yYCBvciBoYXMgbm8gOmpzOmRhdGE6YFN5bWJvbC5pdGVyYXRvcmAKICAgICIiIgoKICAgIF9qc190eXBlX2ZsYWdzID0gWyJJU19BU1lOQ19JVEVSQVRPUiJdCgogICAgZGVmIF9fYW5leHRfXyhzZWxmKSAtPiBBd2FpdGFibGVbVGNvXToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF9fYWl0ZXJfXyhzZWxmKSAtPiBBc3luY0l0ZXJhdG9yW1Rjb106CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIEpzSXRlcmFibGUoSnNQcm94eSwgR2VuZXJpY1tUY29dKToKICAgICIiIkEgSmF2YVNjcmlwdCBpdGVyYWJsZSBvYmplY3QKCiAgICBBIEphdmFTY3JpcHQgb2JqZWN0IGlzIGl0ZXJhYmxlIGlmIGl0IGhhcyBhIDpqczpkYXRhOmBTeW1ib2wuaXRlcmF0b3JgIG1ldGhvZC4KICAgICIiIgoKICAgIF9qc190eXBlX2ZsYWdzID0gWyJJU19JVEVSQUJMRSJdCgogICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+IEl0ZXJhdG9yW1Rjb106CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKCmNsYXNzIEpzQXN5bmNJdGVyYWJsZShKc1Byb3h5LCBHZW5lcmljW1Rjb10pOgogICAgIiIiQSBKYXZhU2NyaXB0IGFzeW5jIGl0ZXJhYmxlIG9iamVjdAoKICAgIEEgSmF2YVNjcmlwdCBvYmplY3QgaXMgYXN5bmMgaXRlcmFibGUgaWYgaXQgaGFzIGEgOmpzOmRhdGE6YFN5bWJvbC5hc3luY0l0ZXJhdG9yYAogICAgbWV0aG9kLgogICAgIiIiCgogICAgX2pzX3R5cGVfZmxhZ3MgPSBbIklTX0FTWU5DX0lURVJBQkxFIl0KCiAgICBkZWYgX19haXRlcl9fKHNlbGYpIC0+IEFzeW5jSXRlcmF0b3JbVGNvXToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKY2xhc3MgSnNHZW5lcmF0b3IoSnNJdGVyYWJsZVtUY29dLCBHZW5lcmljW1RjbywgVGNvbnRyYSwgVmNvXSk6CiAgICAiIiJBIEphdmFTY3JpcHQgZ2VuZXJhdG9yCgogICAgQSBKYXZhU2NyaXB0IG9iamVjdCBpcyB0cmVhdGVkIGFzIGEgZ2VuZXJhdG9yIGlmIGl0cwogICAgOmpzOmRhdGE6YFN5bWJvbC50b1N0cmluZ1RhZ2AgaXMgYGAiR2VuZXJhdG9yImBgLiBNb3N0IGxpa2VseSB0aGlzIHdpbGwgYmUKICAgIGJlY2F1c2UgaXQgaXMgYSB0cnVlIDpqczpjbGFzczpgR2VuZXJhdG9yYCBwcm9kdWNlZCBieSB0aGUgSmF2YVNjcmlwdAogICAgcnVudGltZSwgYnV0IGl0IG1heSBiZSBhIGN1c3RvbSBvYmplY3QgdHJ5aW5nIGhhcmQgdG8gcHJldGVuZCB0byBiZSBhCiAgICBnZW5lcmF0b3IuIEl0IHNob3VsZCBoYXZlIDpqczptZXRoOmB+R2VuZXJhdG9yLm5leHRgLAogICAgOmpzOm1ldGg6YH5HZW5lcmF0b3IucmV0dXJuYCBhbmQgOmpzOm1ldGg6YH5HZW5lcmF0b3IudGhyb3dgIG1ldGhvZHMuCiAgICAiIiIKCiAgICBfanNfdHlwZV9mbGFncyA9IFsiSVNfR0VORVJBVE9SIl0KCiAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZTogVGNvbnRyYSkgLT4gVGNvOgogICAgICAgICIiIgogICAgICAgIFJlc3VtZXMgdGhlIGV4ZWN1dGlvbiBhbmQgInNlbmRzIiBhIHZhbHVlIGludG8gdGhlIGdlbmVyYXRvciBmdW5jdGlvbi4KCiAgICAgICAgVGhlIGBgdmFsdWVgYCBhcmd1bWVudCBiZWNvbWVzIHRoZSByZXN1bHQgb2YgdGhlIGN1cnJlbnQgeWllbGQKICAgICAgICBleHByZXNzaW9uLiBUaGUgYGBzZW5kKClgYCBtZXRob2QgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZSB5aWVsZGVkIGJ5IHRoZQogICAgICAgIGdlbmVyYXRvciwgb3IgcmFpc2VzIDpweTpleGM6YFN0b3BJdGVyYXRpb25gIGlmIHRoZSBnZW5lcmF0b3IgZXhpdHMgd2l0aG91dAogICAgICAgIHlpZWxkaW5nIGFub3RoZXIgdmFsdWUuIFdoZW4gYGBzZW5kKClgYCBpcyBjYWxsZWQgdG8gc3RhcnQgdGhlCiAgICAgICAgZ2VuZXJhdG9yLCB0aGUgYXJndW1lbnQgd2lsbCBiZSBpZ25vcmVkLiBVbmxpa2UgaW4gUHl0aG9uLCB3ZSBjYW5ub3QKICAgICAgICBkZXRlY3QgdGhhdCB0aGUgZ2VuZXJhdG9yIGhhc24ndCBzdGFydGVkIHlldCwgYW5kIG5vIGVycm9yIHdpbGwgYmUKICAgICAgICB0aHJvd24gaWYgdGhlIGFyZ3VtZW50IG9mIGEgbm90LXN0YXJ0ZWQgZ2VuZXJhdG9yIGlzIG5vdCBgYE5vbmVgYC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgQG92ZXJsb2FkCiAgICBkZWYgdGhyb3coCiAgICAgICAgc2VsZiwKICAgICAgICB0eXA6IHR5cGVbQmFzZUV4Y2VwdGlvbl0sCiAgICAgICAgdmFsOiBCYXNlRXhjZXB0aW9uIHwgb2JqZWN0ID0gLi4uLAogICAgICAgIHRiOiBUcmFjZWJhY2tUeXBlIHwgTm9uZSA9IC4uLiwKICAgICAgICAvLAogICAgKSAtPiBUY286CiAgICAgICAgLi4uCgogICAgQG92ZXJsb2FkCiAgICBkZWYgdGhyb3coCiAgICAgICAgc2VsZiwKICAgICAgICB0eXA6IEJhc2VFeGNlcHRpb24sCiAgICAgICAgdmFsOiBOb25lID0gLi4uLAogICAgICAgIHRiOiBUcmFjZWJhY2tUeXBlIHwgTm9uZSA9IC4uLiwKICAgICAgICAvLAogICAgKSAtPiBUY286CiAgICAgICAgLi4uCgogICAgQGRvY3NfYXJnc3BlYygiKHNlbGYsIGVycm9yOiBCYXNlRXhjZXB0aW9uLCAvKSAtPiBUY28iKQogICAgZGVmIHRocm93KAogICAgICAgIHNlbGYsCiAgICAgICAgKmFyZ3M6IEFueSwKICAgICkgLT4gVGNvOgogICAgICAgICIiIgogICAgICAgIFJhaXNlcyBhbiBleGNlcHRpb24gYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBnZW5lcmF0b3Igd2FzIHBhdXNlZCwgYW5kCiAgICAgICAgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZSB5aWVsZGVkIGJ5IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24uCgogICAgICAgIElmIHRoZSBnZW5lcmF0b3IgZXhpdHMgd2l0aG91dCB5aWVsZGluZyBhbm90aGVyIHZhbHVlLCBhCiAgICAgICAgOnB5OmV4YzpgU3RvcEl0ZXJhdGlvbmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gSWYgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBkb2VzCiAgICAgICAgbm90IGNhdGNoIHRoZSBwYXNzZWQtaW4gZXhjZXB0aW9uLCBvciByYWlzZXMgYSBkaWZmZXJlbnQgZXhjZXB0aW9uLCB0aGVuCiAgICAgICAgdGhhdCBleGNlcHRpb24gcHJvcGFnYXRlcyB0byB0aGUgY2FsbGVyLgoKICAgICAgICBJbiB0eXBpY2FsIHVzZSwgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBleGNlcHRpb24gaW5zdGFuY2Ugc2ltaWxhcgogICAgICAgIHRvIHRoZSB3YXkgdGhlIHJhaXNlIGtleXdvcmQgaXMgdXNlZC4KCiAgICAgICAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBob3dldmVyLCBhIHNlY29uZCBzaWduYXR1cmUgaXMgc3VwcG9ydGVkLAogICAgICAgIGZvbGxvd2luZyBhIGNvbnZlbnRpb24gZnJvbSBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24uIFRoZSB0eXBlIGFyZ3VtZW50CiAgICAgICAgc2hvdWxkIGJlIGFuIGV4Y2VwdGlvbiBjbGFzcywgYW5kIHZhbHVlIHNob3VsZCBiZSBhbiBleGNlcHRpb24gaW5zdGFuY2UuCiAgICAgICAgSWYgdGhlIHZhbHVlIGlzIG5vdCBwcm92aWRlZCwgdGhlIHR5cGUgY29uc3RydWN0b3IgaXMgY2FsbGVkIHRvIGdldCBhbgogICAgICAgIGluc3RhbmNlLiBJZiB0cmFjZWJhY2sgaXMgcHJvdmlkZWQsIGl0IGlzIHNldCBvbiB0aGUgZXhjZXB0aW9uLAogICAgICAgIG90aGVyd2lzZSBhbnkgZXhpc3RpbmcgYGBfX3RyYWNlYmFja19fYGAgYXR0cmlidXRlIHN0b3JlZCBpbiB2YWx1ZSBtYXkKICAgICAgICBiZSBjbGVhcmVkLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgY2xvc2Uoc2VsZikgLT4gTm9uZToKICAgICAgICAiIiJSYWlzZXMgYSA6cHk6ZXhjOmBHZW5lcmF0b3JFeGl0YCBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGdlbmVyYXRvcgogICAgICAgIGZ1bmN0aW9uIHdhcyBwYXVzZWQuCgogICAgICAgIElmIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gdGhlbiBleGl0cyBncmFjZWZ1bGx5LCBpcyBhbHJlYWR5IGNsb3NlZCwgb3IKICAgICAgICByYWlzZXMgOnB5OmV4YzpgR2VuZXJhdG9yRXhpdGAgKGJ5IG5vdCBjYXRjaGluZyB0aGUgZXhjZXB0aW9uKSwgYGBjbG9zZSgpYGAKICAgICAgICByZXR1cm5zIHRvIGl0cyBjYWxsZXIuIElmIHRoZSBnZW5lcmF0b3IgeWllbGRzIGEgdmFsdWUsIGEKICAgICAgICA6cHk6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4gSWYgdGhlIGdlbmVyYXRvciByYWlzZXMgYW55IG90aGVyCiAgICAgICAgZXhjZXB0aW9uLCBpdCBpcyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIuIGBgY2xvc2UoKWBgIGRvZXMgbm90aGluZyBpZgogICAgICAgIHRoZSBnZW5lcmF0b3IgaGFzIGFscmVhZHkgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24gb3Igbm9ybWFsIGV4aXQuCiAgICAgICAgIiIiCgogICAgZGVmIF9fbmV4dF9fKHNlbGYpIC0+IFRjbzoKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF9faXRlcl9fKHNlbGYpIC0+ICJKc0dlbmVyYXRvcltUY28sIFRjb250cmEsIFZjb10iOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCgpjbGFzcyBKc0ZldGNoUmVzcG9uc2UoSnNQcm94eSk6CiAgICAiIiJBIDpweTpjbGFzczpgSnNGZXRjaFJlc3BvbnNlYCBvYmplY3QgcmVwcmVzZW50cyBhIDpqczpkYXRhOmBSZXNwb25zZWAgdG8gYQogICAgOmpzOmZ1bmM6YGZldGNoYCByZXF1ZXN0LgogICAgIiIiCgogICAgYm9keVVzZWQ6IGJvb2wKICAgIG9rOiBib29sCiAgICByZWRpcmVjdGVkOiBib29sCiAgICBzdGF0dXM6IGludAogICAgc3RhdHVzVGV4dDogc3RyCiAgICB0eXBlOiBzdHIKICAgIHVybDogc3RyCgogICAgZGVmIGNsb25lKHNlbGYpIC0+ICJKc0ZldGNoUmVzcG9uc2UiOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBhc3luYyBkZWYgYXJyYXlCdWZmZXIoc2VsZikgLT4gSnNCdWZmZXI6CiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIGFzeW5jIGRlZiB0ZXh0KHNlbGYpIC0+IHN0cjoKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgYXN5bmMgZGVmIGpzb24oc2VsZikgLT4gSnNQcm94eToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKY2xhc3MgSnNBc3luY0dlbmVyYXRvcihKc0FzeW5jSXRlcmFibGVbVGNvXSwgR2VuZXJpY1tUY28sIFRjb250cmEsIFZjb10pOgogICAgIiIiQSBKYXZhU2NyaXB0IDpqczpjbGFzczpgQXN5bmNHZW5lcmF0b3JgCgogICAgQSBKYXZhU2NyaXB0IG9iamVjdCBpcyB0cmVhdGVkIGFzIGFuIGFzeW5jIGdlbmVyYXRvciBpZiBpdCdzCiAgICA6anM6ZGF0YTpgU3ltYm9sLnRvU3RyaW5nVGFnYCBpcyBgYCJBc3luY0dlbmVyYXRvciJgYC4gTW9zdCBsaWtlbHkgdGhpcyB3aWxsCiAgICBiZSBiZWNhdXNlIGl0IGlzIGEgdHJ1ZSBhc3luYyBnZW5lcmF0b3IgcHJvZHVjZWQgYnkgdGhlIEphdmFTY3JpcHQgcnVudGltZSwKICAgIGJ1dCBpdCBtYXkgYmUgYSBjdXN0b20gb2JqZWN0IHRyeWluZyBoYXJkIHRvIHByZXRlbmQgdG8gYmUgYW4gYXN5bmMKICAgIGdlbmVyYXRvci4gSXQgc2hvdWxkIGhhdmUgOmpzOm1ldGg6YH5Bc3luY0dlbmVyYXRvci5uZXh0YCwKICAgIDpqczptZXRoOmB+QXN5bmNHZW5lcmF0b3IucmV0dXJuYCwgYW5kIDpqczptZXRoOmB+QXN5bmNHZW5lcmF0b3IudGhyb3dgCiAgICBtZXRob2RzLgogICAgIiIiCgogICAgX2pzX3R5cGVfZmxhZ3MgPSBbIklTX0FTWU5DX0dFTkVSQVRPUiJdCgogICAgZGVmIF9fYW5leHRfXyhzZWxmKSAtPiBBd2FpdGFibGVbVGNvXToKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgogICAgZGVmIF9fYWl0ZXJfXyhzZWxmKSAtPiAiSnNBc3luY0dlbmVyYXRvcltUY28sIFRjb250cmEsIFZjb10iOgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgYXNlbmQoc2VsZiwgdmFsdWU6IFRjb250cmEsIC8pIC0+IEF3YWl0YWJsZVtUY29dOgogICAgICAgICIiIlJlc3VtZXMgdGhlIGV4ZWN1dGlvbiBhbmQgInNlbmRzIiBhIHZhbHVlIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvcgogICAgICAgIGZ1bmN0aW9uLgoKICAgICAgICBUaGUgYGB2YWx1ZWBgIGFyZ3VtZW50IGJlY29tZXMgdGhlIHJlc3VsdCBvZiB0aGUgY3VycmVudCB5aWVsZAogICAgICAgIGV4cHJlc3Npb24uIFRoZSBhd2FpdGFibGUgcmV0dXJuZWQgYnkgdGhlIGBgYXNlbmQoKWBgIG1ldGhvZCB3aWxsIHJldHVybgogICAgICAgIHRoZSBuZXh0IHZhbHVlIHlpZWxkZWQgYnkgdGhlIGdlbmVyYXRvciBvciByYWlzZXMKICAgICAgICA6cHk6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGlmIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIHJldHVybnMuIElmIHRoZQogICAgICAgIGdlbmVyYXRvciByZXR1cm5lZCBhIHZhbHVlLCB0aGlzIHZhbHVlIGlzIGRpc2NhcmRlZCAoYmVjYXVzZSBpbiBQeXRob24KICAgICAgICBhc3luYyBnZW5lcmF0b3JzIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSkuCgogICAgICAgIFdoZW4gYGBhc2VuZCgpYGAgaXMgY2FsbGVkIHRvIHN0YXJ0IHRoZSBnZW5lcmF0b3IsIHRoZSBhcmd1bWVudCB3aWxsIGJlCiAgICAgICAgaWdub3JlZC4gVW5saWtlIGluIFB5dGhvbiwgd2UgY2Fubm90IGRldGVjdCB0aGF0IHRoZSBnZW5lcmF0b3IgaGFzbid0CiAgICAgICAgc3RhcnRlZCB5ZXQsIGFuZCBubyBlcnJvciB3aWxsIGJlIHRocm93biBpZiB0aGUgYXJndW1lbnQgb2YgYQogICAgICAgIG5vdC1zdGFydGVkIGdlbmVyYXRvciBpcyBub3QgYGBOb25lYGAuCiAgICAgICAgIiIiCiAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgoKICAgIEBvdmVybG9hZAogICAgZGVmIGF0aHJvdygKICAgICAgICBzZWxmLAogICAgICAgIHR5cDogdHlwZVtCYXNlRXhjZXB0aW9uXSwKICAgICAgICB2YWw6IEJhc2VFeGNlcHRpb24gfCBvYmplY3QgPSAuLi4sCiAgICAgICAgdGI6IFRyYWNlYmFja1R5cGUgfCBOb25lID0gLi4uLAogICAgICAgIC8sCiAgICApIC0+IEF3YWl0YWJsZVtUY29dOgogICAgICAgIC4uLgoKICAgIEBvdmVybG9hZAogICAgZGVmIGF0aHJvdygKICAgICAgICBzZWxmLAogICAgICAgIHR5cDogQmFzZUV4Y2VwdGlvbiwKICAgICAgICB2YWw6IE5vbmUgPSAuLi4sCiAgICAgICAgdGI6IFRyYWNlYmFja1R5cGUgfCBOb25lID0gLi4uLAogICAgICAgIC8sCiAgICApIC0+IEF3YWl0YWJsZVtUY29dOgogICAgICAgIC4uLgoKICAgIEBkb2NzX2FyZ3NwZWMoIihzZWxmLCBlcnJvcjogQmFzZUV4Y2VwdGlvbiwgLykgLT4gVGNvIikKICAgIGRlZiBhdGhyb3coc2VsZiwgdmFsdWU6IEFueSwgKmFyZ3M6IEFueSkgLT4gQXdhaXRhYmxlW1Rjb106CiAgICAgICAgIiIiUmVzdW1lcyB0aGUgZXhlY3V0aW9uIGFuZCByYWlzZXMgYW4gZXhjZXB0aW9uIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUKICAgICAgICBnZW5lcmF0b3Igd2FzIHBhdXNlZC4KCiAgICAgICAgVGhlIGF3YWl0YWJsZSByZXR1cm5lZCBieSBgYGF0aHJvdygpYGAgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBuZXh0IHZhbHVlCiAgICAgICAgeWllbGRlZCBieSB0aGUgZ2VuZXJhdG9yIG9yIHJhaXNlcyA6cHk6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGlmIHRoZQogICAgICAgIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgcmV0dXJucy4gSWYgdGhlIGdlbmVyYXRvciByZXR1cm5lZCBhIHZhbHVlLCB0aGlzCiAgICAgICAgdmFsdWUgaXMgZGlzY2FyZGVkIChiZWNhdXNlIGluIFB5dGhvbiBhc3luYyBnZW5lcmF0b3JzIGNhbm5vdCByZXR1cm4gYQogICAgICAgIHZhbHVlKS4gSWYgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBkb2VzIG5vdCBjYXRjaCB0aGUgcGFzc2VkLWluCiAgICAgICAgZXhjZXB0aW9uLCBvciByYWlzZXMgYSBkaWZmZXJlbnQgZXhjZXB0aW9uLCB0aGVuIHRoYXQgZXhjZXB0aW9uCiAgICAgICAgcHJvcGFnYXRlcyB0byB0aGUgY2FsbGVyLgogICAgICAgICIiIgogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKCiAgICBkZWYgYWNsb3NlKHNlbGYpIC0+IEF3YWl0YWJsZVtOb25lXToKICAgICAgICAiIiJSYWlzZXMgYSA6cHk6ZXhjOmBHZW5lcmF0b3JFeGl0YCBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGdlbmVyYXRvcgogICAgICAgIGZ1bmN0aW9uIHdhcyBwYXVzZWQuCgogICAgICAgIElmIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gdGhlbiBleGl0cyBncmFjZWZ1bGx5LCBpcyBhbHJlYWR5IGNsb3NlZCwgb3IKICAgICAgICByYWlzZXMgOnB5OmV4YzpgR2VuZXJhdG9yRXhpdGAgKGJ5IG5vdCBjYXRjaGluZyB0aGUgZXhjZXB0aW9uKSwKICAgICAgICBgYGFjbG9zZSgpYGAgcmV0dXJucyB0byBpdHMgY2FsbGVyLiBJZiB0aGUgZ2VuZXJhdG9yIHlpZWxkcyBhIHZhbHVlLCBhCiAgICAgICAgOnB5OmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuIElmIHRoZSBnZW5lcmF0b3IgcmFpc2VzIGFueSBvdGhlcgogICAgICAgIGV4Y2VwdGlvbiwgaXQgaXMgcHJvcGFnYXRlZCB0byB0aGUgY2FsbGVyLiBgYGFjbG9zZSgpYGAgZG9lcyBub3RoaW5nIGlmCiAgICAgICAgdGhlIGdlbmVyYXRvciBoYXMgYWxyZWFkeSBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiBvciBub3JtYWwgZXhpdC4KICAgICAgICAiIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCgoKY2xhc3MgSnNDYWxsYWJsZShKc1Byb3h5KToKICAgIF9qc190eXBlX2ZsYWdzID0gWyJJU19DQUxMQUJMRSJdCgogICAgZGVmIF9fY2FsbF9fKHNlbGYpOgogICAgICAgIHBhc3MKCgpjbGFzcyBKc09uY2VDYWxsYWJsZShKc0NhbGxhYmxlKToKICAgIGRlZiBkZXN0cm95KHNlbGYpOgogICAgICAgIHBhc3MKCgpjbGFzcyBKc0V4Y2VwdGlvbihKc1Byb3h5LCBFeGNlcHRpb24pOgogICAgIiIiQSBKYXZhU2NyaXB0IEVycm9yLgoKICAgIFRoZXNlIGFyZSBwaWNrbGVhYmxlIHVubGlrZSBvdGhlciBKc1Byb3hpZXMuCiAgICAiIiIKCiAgICAjIE5vdGU6IFVubGlrZSBtYW55IG9mIHRoZXNlIGNsYXNzZXMsIHRoaXMgb25lIGlzIG5ldmVyIGFjdHVhbGx5IHNlZW4gYnkgdGhlCiAgICAjIHVzZXIgSU5fQlJPV1NFUiAoaXQncyByZXBsYWNlZCBieSBhIGRpZmZlcmVudCBKc0V4Y2VwdGlvbiBpbgogICAgIyBweW9kaWRlLl9jb3JlKS4gV2UgdXNlIGl0IHRvIHVucGlja2xlIGVycm9ycyBzbyB3ZSBuZWVkIGl0IHRvIGJlCiAgICAjIGluc3RhbnRpYWJsZS4KICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICBpZiBhcmdzWzBdID09IF9pbnN0YW50aWF0ZV90b2tlbjoKICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3YXJncykKICAgICAgICByZXR1cm4gY2xzLl9uZXdfZXhjKCphcmdzLCAqKmt3YXJncykKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBfbmV3X2V4YyhjbHMsIG5hbWU6IHN0ciwgbWVzc2FnZTogc3RyID0gIiIsIHN0YWNrOiBzdHIgPSAiIikgLT4gIkpzRXhjZXB0aW9uIjoKICAgICAgICByZXN1bHQgPSBzdXBlcigpLl9fbmV3X18oSnNFeGNlcHRpb24sIF9pbnN0YW50aWF0ZV90b2tlbikKICAgICAgICByZXN1bHQubmFtZSA9IG5hbWUKICAgICAgICByZXN1bHQubWVzc2FnZSA9IG1lc3NhZ2UKICAgICAgICByZXN1bHQuc3RhY2sgPSBzdGFjawogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICByZXR1cm4gZiJ7c2VsZi5uYW1lfToge3NlbGYubWVzc2FnZX0iCgogICAgbmFtZTogc3RyCiAgICAiIiJUaGUgbmFtZSBvZiB0aGUgZXJyb3IgdHlwZSIiIgoKICAgIG1lc3NhZ2U6IHN0cgogICAgIiIiVGhlIGVycm9yIG1lc3NhZ2UiIiIKCiAgICBzdGFjazogc3RyCiAgICAiIiJUaGUgSmF2YVNjcmlwdCBzdGFjayB0cmFjZSIiIgoKCmNsYXNzIENvbnZlcnNpb25FcnJvcihFeGNlcHRpb24pOgogICAgIiIiQW4gZXJyb3IgdGhyb3duIHdoZW4gY29udmVyc2lvbiBiZXR3ZWVuIEphdmFTY3JpcHQgYW5kIFB5dGhvbiBmYWlscy4iIiIKCgpjbGFzcyBJbnRlcm5hbEVycm9yKEV4Y2VwdGlvbik6CiAgICAiIiJUaHJvd24gd2hlbiBhIHJlY292ZXJhYmxlIGFzc2VydGlvbiBlcnJvciBvY2N1cnMgaW4gaW50ZXJuYWwgUHlvZGlkZSBjb2RlIiIiCgogICAgcGFzcwoKCmNsYXNzIEpzRG9tRWxlbWVudChKc1Byb3h5KToKICAgIEBwcm9wZXJ0eQogICAgZGVmIHRhZ05hbWUoc2VsZikgLT4gc3RyOgogICAgICAgIHJldHVybiAiIgoKICAgIEBwcm9wZXJ0eQogICAgZGVmIGNoaWxkcmVuKHNlbGYpIC0+IFNlcXVlbmNlWyJKc0RvbUVsZW1lbnQiXToKICAgICAgICByZXR1cm4gW10KCiAgICBkZWYgYXBwZW5kQ2hpbGQoc2VsZiwgY2hpbGQ6ICJKc0RvbUVsZW1lbnQiKSAtPiBOb25lOgogICAgICAgIHBhc3MKCiAgICBkZWYgYWRkRXZlbnRMaXN0ZW5lcihzZWxmLCBldmVudDogc3RyLCBsaXN0ZW5lcjogQ2FsbGFibGVbW0FueV0sIE5vbmVdKSAtPiBOb25lOgogICAgICAgIHBhc3MKCiAgICBkZWYgcmVtb3ZlRXZlbnRMaXN0ZW5lcihzZWxmLCBldmVudDogc3RyLCBsaXN0ZW5lcjogQ2FsbGFibGVbW0FueV0sIE5vbmVdKSAtPiBOb25lOgogICAgICAgIHBhc3MKCgojIGZyb20gcHlwcm94eS5jCgoKZGVmIGNyZWF0ZV9vbmNlX2NhbGxhYmxlKG9iajogQ2FsbGFibGVbLi4uLCBBbnldLCAvKSAtPiBKc09uY2VDYWxsYWJsZToKICAgICIiIldyYXAgYSBQeXRob24gQ2FsbGFibGUgaW4gYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCBvbmNlLgoKICAgIEFmdGVyIGJlaW5nIGNhbGxlZCB0aGUgcHJveHkgd2lsbCBkZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudAogICAgb2YgdGhlIENhbGxhYmxlLiBUaGUgSmF2YVNjcmlwdCBmdW5jdGlvbiBhbHNvIGhhcyBhIGBgZGVzdHJveWBgIEFQSSB0aGF0CiAgICBjYW4gYmUgdXNlZCB0byByZWxlYXNlIHRoZSBwcm94eSB3aXRob3V0IGNhbGxpbmcgaXQuCiAgICAiIiIKICAgIHJldHVybiBvYmogICMgdHlwZTogaWdub3JlW3JldHVybi12YWx1ZV0KCgpkZWYgY3JlYXRlX3Byb3h5KAogICAgb2JqOiBBbnksIC8sICosIGNhcHR1cmVfdGhpczogYm9vbCA9IEZhbHNlLCByb3VuZHRyaXA6IGJvb2wgPSBUcnVlCikgLT4gSnNEb3VibGVQcm94eToKICAgICIiIkNyZWF0ZSBhIDpweTpjbGFzczpgSnNQcm94eWAgb2YgYSA6anM6Y2xhc3M6YH5weW9kaWRlLmZmaS5QeVByb3h5YC4KCiAgICBUaGlzIGFsbG93cyBleHBsaWNpdCBjb250cm9sIG92ZXIgdGhlIGxpZmV0aW1lIG9mIHRoZQogICAgOmpzOmNsYXNzOmB+cHlvZGlkZS5mZmkuUHlQcm94eWAgZnJvbSBQeXRob246IGNhbGwgdGhlCiAgICA6cHk6bWV0aDpgfkpzRG91YmxlUHJveHkuZGVzdHJveWAgQVBJIHdoZW4gZG9uZS4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICBvYmo6CiAgICAgICAgVGhlIG9iamVjdCB0byB3cmFwLgoKICAgIGNhcHR1cmVfdGhpcyA6CiAgICAgICAgSWYgdGhlIG9iamVjdCBpcyBjYWxsYWJsZSwgc2hvdWxkIGBgdGhpc2BgIGJlIHBhc3NlZCBhcyB0aGUgZmlyc3QKICAgICAgICBhcmd1bWVudCB3aGVuIGNhbGxpbmcgaXQgZnJvbSBKYXZhU2NyaXB0LgoKICAgIHJvdW5kdHJpcDoKICAgICAgICBXaGVuIHRoZSBwcm94eSBpcyBjb252ZXJ0ZWQgYmFjayBmcm9tIEphdmFTY3JpcHQgdG8gUHl0aG9uLCBpZiB0aGlzIGlzCiAgICAgICAgYGBUcnVlYGAgaXQgaXMgY29udmVydGVkIGludG8gYSBkb3VibGUgcHJveHkuIElmIGBgRmFsc2VgYCwgaXQgaXMKICAgICAgICB1bndyYXBwZWQgaW50byBhIFB5dGhvbiBvYmplY3QuIEluIHRoZSBjYXNlIHRoYXQgYGByb3VuZHRyaXBgYCBpcwogICAgICAgIGBgVHJ1ZWBgIGl0IGlzIHBvc3NpYmxlIHRvIHVud3JhcCBhIGRvdWJsZSBwcm94eSB3aXRoIHRoZQogICAgICAgIDpweTptZXRoOmBKc0RvdWJsZVByb3h5LnVud3JhcGAgbWV0aG9kLiBUaGlzIGlzIHVzZWZ1bCB0byBhbGxvdyBlYXNpZXIKICAgICAgICBjb250cm9sIG9mIGxpZmV0aW1lcyBmcm9tIFB5dGhvbjoKCiAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICAgICAgZnJvbSBqcyBpbXBvcnQgbwogICAgICAgICAgICBkID0ge30KICAgICAgICAgICAgby5kID0gY3JlYXRlX3Byb3h5KGQsIHJvdW5kdHJpcD1UcnVlKQogICAgICAgICAgICBvLmQuZGVzdHJveSgpICMgRGVzdHJveXMgdGhlIHByb3h5IGNyZWF0ZWQgd2l0aCBjcmVhdGVfcHJveHkKCiAgICAgICAgV2l0aCBgYHJvdW5kdHJpcD1GYWxzZWBgIHRoaXMgd291bGQgYmUgYW4gZXJyb3IuCiAgICAiIiIKICAgIHJldHVybiBvYmoKCgojIGZyb20gcHl0aG9uMmpzCgoKQG92ZXJsb2FkCmRlZiB0b19qcygKICAgIG9iajogbGlzdFtBbnldIHwgdHVwbGVbQW55XSwKICAgIC8sCiAgICAqLAogICAgZGVwdGg6IGludCA9IC0xLAogICAgcHlwcm94aWVzOiBKc1Byb3h5IHwgTm9uZSA9IE5vbmUsCiAgICBjcmVhdGVfcHlwcm94aWVzOiBib29sID0gVHJ1ZSwKICAgIGRpY3RfY29udmVydGVyOiBDYWxsYWJsZVtbSXRlcmFibGVbSnNBcnJheVtBbnldXV0sIEpzUHJveHldIHwgTm9uZSA9IE5vbmUsCiAgICBkZWZhdWx0X2NvbnZlcnRlcjogQ2FsbGFibGVbCiAgICAgICAgW0FueSwgQ2FsbGFibGVbW0FueV0sIEpzUHJveHldLCBDYWxsYWJsZVtbQW55LCBKc1Byb3h5XSwgTm9uZV1dLCBKc1Byb3h5CiAgICBdCiAgICB8IE5vbmUgPSBOb25lLAopIC0+IEpzQXJyYXlbQW55XToKICAgIC4uLgoKCkBvdmVybG9hZApkZWYgdG9fanMoCiAgICBvYmo6IGRpY3RbQW55LCBBbnldLAogICAgLywKICAgICosCiAgICBkZXB0aDogaW50ID0gLTEsCiAgICBweXByb3hpZXM6IEpzUHJveHkgfCBOb25lLAogICAgY3JlYXRlX3B5cHJveGllczogYm9vbCwKICAgIGRpY3RfY29udmVydGVyOiBOb25lLAogICAgZGVmYXVsdF9jb252ZXJ0ZXI6IENhbGxhYmxlWwogICAgICAgIFtBbnksIENhbGxhYmxlW1tBbnldLCBKc1Byb3h5XSwgQ2FsbGFibGVbW0FueSwgSnNQcm94eV0sIE5vbmVdXSwgSnNQcm94eQogICAgXQogICAgfCBOb25lID0gTm9uZSwKKSAtPiBKc01hcFtBbnksIEFueV06CiAgICAuLi4KCgpAb3ZlcmxvYWQKZGVmIHRvX2pzKAogICAgb2JqOiBBbnksCiAgICAvLAogICAgKiwKICAgIGRlcHRoOiBpbnQgPSAtMSwKICAgIHB5cHJveGllczogSnNQcm94eSB8IE5vbmUgPSBOb25lLAogICAgY3JlYXRlX3B5cHJveGllczogYm9vbCA9IFRydWUsCiAgICBkaWN0X2NvbnZlcnRlcjogQ2FsbGFibGVbW0l0ZXJhYmxlW0pzQXJyYXlbQW55XV1dLCBKc1Byb3h5XSB8IE5vbmUgPSBOb25lLAogICAgZGVmYXVsdF9jb252ZXJ0ZXI6IENhbGxhYmxlWwogICAgICAgIFtBbnksIENhbGxhYmxlW1tBbnldLCBKc1Byb3h5XSwgQ2FsbGFibGVbW0FueSwgSnNQcm94eV0sIE5vbmVdXSwgSnNQcm94eQogICAgXQogICAgfCBOb25lID0gTm9uZSwKKSAtPiBBbnk6CiAgICAuLi4KCgpkZWYgdG9fanMoCiAgICBvYmo6IEFueSwKICAgIC8sCiAgICAqLAogICAgZGVwdGg6IGludCA9IC0xLAogICAgcHlwcm94aWVzOiBKc1Byb3h5IHwgTm9uZSA9IE5vbmUsCiAgICBjcmVhdGVfcHlwcm94aWVzOiBib29sID0gVHJ1ZSwKICAgIGRpY3RfY29udmVydGVyOiBDYWxsYWJsZVtbSXRlcmFibGVbSnNBcnJheVtBbnldXV0sIEpzUHJveHldIHwgTm9uZSA9IE5vbmUsCiAgICBkZWZhdWx0X2NvbnZlcnRlcjogQ2FsbGFibGVbCiAgICAgICAgW0FueSwgQ2FsbGFibGVbW0FueV0sIEpzUHJveHldLCBDYWxsYWJsZVtbQW55LCBKc1Byb3h5XSwgTm9uZV1dLCBKc1Byb3h5CiAgICBdCiAgICB8IE5vbmUgPSBOb25lLAopIC0+IEFueToKICAgICIiIkNvbnZlcnQgdGhlIG9iamVjdCB0byBKYXZhU2NyaXB0LgoKICAgIFRoaXMgaXMgc2ltaWxhciB0byA6anM6bWV0aDpgfnB5b2RpZGUuZmZpLlB5UHJveHkudG9Kc2AsIGJ1dCBmb3IgdXNlIGZyb20gUHl0aG9uLiBJZiB0aGUKICAgIG9iamVjdCBjYW4gYmUgaW1wbGljaXRseSB0cmFuc2xhdGVkIHRvIEphdmFTY3JpcHQsIGl0IHdpbGwgYmUgcmV0dXJuZWQKICAgIHVuY2hhbmdlZC4gSWYgdGhlIG9iamVjdCBjYW5ub3QgYmUgY29udmVydGVkIGludG8gSmF2YVNjcmlwdCwgdGhpcyBtZXRob2QKICAgIHdpbGwgcmV0dXJuIGEgOnB5OmNsYXNzOmBKc1Byb3h5YCBvZiBhIDpqczpjbGFzczpgfnB5b2RpZGUuZmZpLlB5UHJveHlgLCBhcyBpZiB5b3UgaGFkIHVzZWQKICAgIDpmdW5jOmB+cHlvZGlkZS5mZmkuY3JlYXRlX3Byb3h5YC4KCiAgICBTZWUgOnJlZjpgdHlwZS10cmFuc2xhdGlvbnMtcHlwcm94eS10by1qc2AgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgb2JqIDoKICAgICAgICBUaGUgUHl0aG9uIG9iamVjdCB0byBjb252ZXJ0CgogICAgZGVwdGggOgogICAgICAgIFRoZSBtYXhpbXVtIGRlcHRoIHRvIGRvIHRoZSBjb252ZXJzaW9uLiBOZWdhdGl2ZSBudW1iZXJzIGFyZSB0cmVhdGVkIGFzCiAgICAgICAgaW5maW5pdGUuIFNldCB0aGlzIHRvIDEgdG8gZG8gYSBzaGFsbG93IGNvbnZlcnNpb24uCgogICAgcHlwcm94aWVzOgogICAgICAgIFNob3VsZCBiZSBhIEphdmFTY3JpcHQgOmpzOmNsYXNzOmBBcnJheWAuIElmIHByb3ZpZGVkLCBhbnkgYGBQeVByb3hpZXNgYAogICAgICAgIGdlbmVyYXRlZCB3aWxsIGJlIHN0b3JlZCBoZXJlLiBZb3UgY2FuIGxhdGVyIHVzZSA6cHk6bWV0aDpgZGVzdHJveV9wcm94aWVzYAogICAgICAgIGlmIHlvdSB3YW50IHRvIGRlc3Ryb3kgdGhlIHByb3hpZXMgZnJvbSBQeXRob24gKG9yIGZyb20gSmF2YVNjcmlwdCB5b3UKICAgICAgICBjYW4ganVzdCBpdGVyYXRlIG92ZXIgdGhlIDpqczpjbGFzczpgQXJyYXlgIGFuZCBkZXN0cm95IHRoZSBwcm94aWVzKS4KCiAgICBjcmVhdGVfcHlwcm94aWVzOgogICAgICAgIElmIHlvdSBzZXQgdGhpcyB0byA6cHk6ZGF0YTpgRmFsc2VgLCA6cHk6ZnVuYzpgdG9fanNgIHdpbGwgcmFpc2UgYW4gZXJyb3IgcmF0aGVyCiAgICAgICAgdGhhbiBjcmVhdGluZyBhbnkgcHlwcm94aWVzLgoKICAgIGRpY3RfY29udmVydGVyOgogICAgICAgIFRoaXMgY29udmVydGVyIGlmIHByb3ZpZGVkIHJlY2VpdmVzIGEgKEphdmFTY3JpcHQpIGl0ZXJhYmxlIG9mCiAgICAgICAgKEphdmFTY3JpcHQpIHBhaXJzIFtrZXksIHZhbHVlXS4gSXQgaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIHRoZSBkZXNpcmVkCiAgICAgICAgcmVzdWx0IG9mIHRoZSBkaWN0IGNvbnZlcnNpb24uIFNvbWUgc3VnZ2VzdGVkIHZhbHVlcyBmb3IgdGhpcyBhcmd1bWVudDoKCiAgICAgICAgICAqIGBganMuTWFwLm5ld2BgIC0tIHNpbWlsYXIgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3IKICAgICAgICAgICogYGBqcy5BcnJheS5mcm9tYGAgLS0gY29udmVydCB0byBhbiBhcnJheSBvZiBlbnRyaWVzCiAgICAgICAgICAqIGBganMuT2JqZWN0LmZyb21FbnRyaWVzYGAgLS0gY29udmVydCB0byBhIEphdmFTY3JpcHQgb2JqZWN0CgogICAgZGVmYXVsdF9jb252ZXJ0ZXI6CiAgICAgICAgSWYgcHJlc2VudCB3aWxsIGJlIGludm9rZWQgd2hlbmV2ZXIgUHlvZGlkZSBkb2VzIG5vdCBoYXZlIHNvbWUgYnVpbHQgaW4KICAgICAgICBjb252ZXJzaW9uIGZvciB0aGUgb2JqZWN0LiBJZiBgYGRlZmF1bHRfY29udmVydGVyYGAgcmFpc2VzIGFuIGVycm9yLCB0aGUKICAgICAgICBlcnJvciB3aWxsIGJlIGFsbG93ZWQgdG8gcHJvcGFnYXRlLiBPdGhlcndpc2UsIHRoZSBvYmplY3QgcmV0dXJuZWQgd2lsbAogICAgICAgIGJlIHVzZWQgYXMgdGhlIGNvbnZlcnNpb24uIGBgZGVmYXVsdF9jb252ZXJ0ZXJgYCB0YWtlcyB0aHJlZSBhcmd1bWVudHMuCiAgICAgICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCgogICAgSGVyZSBhcmUgc29tZSBleGFtcGxlcyBkZW1vbnN0cmF0aW5nIHRoZSB1c2FnZSBvZiB0aGUgYGBkZWZhdWx0X2NvbnZlcnRlcmBgCiAgICBhcmd1bWVudC4KCgogICAgSW4gYWRkaXRpb24gdG8gdGhlIG5vcm1hbCBjb252ZXJzaW9ucywgY29udmVydCBKYXZhU2NyaXB0IDpqczpjbGFzczpgRGF0ZWAKICAgIG9iamVjdHMgdG8gOnB5OmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIG9iamVjdHM6CgogICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogICAgICAgIGZyb20ganMgaW1wb3J0IERhdGUKICAgICAgICBkZWYgZGVmYXVsdF9jb252ZXJ0ZXIodmFsdWUsIF9pZ25vcmVkMSwgX2lnbm9yZWQyKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGF0ZXRpbWUpOgogICAgICAgICAgICAgICAgcmV0dXJuIERhdGUubmV3KHZhbHVlLnRpbWVzdGFtcCgpICogMTAwMCkKICAgICAgICAgICAgcmV0dXJuIHZhbHVlCgogICAgRG9uJ3QgY3JlYXRlIGFueSBQeVByb3hpZXMsIHJlcXVpcmUgYSBjb21wbGV0ZSBjb252ZXJzaW9uIG9yIHJhaXNlIGFuIGVycm9yOgoKICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICAgICAgZGVmIGRlZmF1bHRfY29udmVydGVyKF92YWx1ZSwgX2lnbm9yZWQxLCBfaWdub3JlZDIpOgogICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkZhaWxlZCB0byBjb21wbGV0ZWx5IGNvbnZlcnQgb2JqZWN0IikKCiAgICBUaGUgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgYXJlIG9ubHkgbmVlZGVkIGZvciBjb252ZXJ0aW5nIGNvbnRhaW5lcnMuCiAgICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgY29udmVyc2lvbiBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlCiAgICBlbGVtZW50cyBvZiB0aGUgY29udGFpbmVyIHdpdGggdGhlIHNhbWUgc2V0dGluZ3MuIFRoZSB0aGlyZCBhcmd1bWVudCBpcyBhCiAgICAiY2FjaGUiIGZ1bmN0aW9uIHdoaWNoIGlzIG5lZWRlZCB0byBoYW5kbGUgc2VsZiByZWZlcmVudGlhbCBjb250YWluZXJzLgogICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlLiBTdXBwb3NlIHdlIGhhdmUgYSBQeXRob24gYGBQYWlyYGAgY2xhc3M6CgogICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICBjbGFzcyBQYWlyOgogICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlyc3QsIHNlY29uZCk6CiAgICAgICAgICAgICAgICBzZWxmLmZpcnN0ID0gZmlyc3Qgc2VsZi5zZWNvbmQgPSBzZWNvbmQKCiAgICBXZSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgYGBkZWZhdWx0X2NvbnZlcnRlcmBgIHRvIGNvbnZlcnQgYGBQYWlyYGAgdG8KICAgIDpqczpjbGFzczpgQXJyYXlgOgoKICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICAgICAgZnJvbSBqcyBpbXBvcnQgQXJyYXkKCiAgICAgICAgZGVmIGRlZmF1bHRfY29udmVydGVyKHZhbHVlLCBjb252ZXJ0LCBjYWNoZSk6CiAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBQYWlyKToKICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgICAgICByZXN1bHQgPSBBcnJheS5uZXcoKSBjYWNoZSh2YWx1ZSwgcmVzdWx0KTsKICAgICAgICAgICAgcmVzdWx0LnB1c2goY29udmVydCh2YWx1ZS5maXJzdCkpIHJlc3VsdC5wdXNoKGNvbnZlcnQodmFsdWUuc2Vjb25kKSkKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAoKICAgIE5vdGUgdGhhdCB3ZSBoYXZlIHRvIGNhY2hlIHRoZSBjb252ZXJzaW9uIG9mIGBgdmFsdWVgYCBiZWZvcmUgY29udmVydGluZwogICAgYGB2YWx1ZS5maXJzdGBgIGFuZCBgYHZhbHVlLnNlY29uZGBgLiBUbyBzZWUgd2h5LCBjb25zaWRlciBhIHNlbGYKICAgIHJlZmVyZW50aWFsIHBhaXI6CgogICAgLi4gY29kZS1ibG9jazo6IGphdmFzY3JpcHQKCiAgICAgICAgcCA9IFBhaXIoMCwgMCk7IHAuZmlyc3QgPSBwOwoKICAgIFdpdGhvdXQgYGBjYWNoZSh2YWx1ZSwgcmVzdWx0KTtgYCwgY29udmVydGluZyBgYHBgYCB3b3VsZCBsZWFkIHRvIGFuCiAgICBpbmZpbml0ZSByZWN1cnNlLiBXaXRoIGl0LCB3ZSBjYW4gc3VjY2Vzc2Z1bGx5IGNvbnZlcnQgYGBwYGAgdG8gYW4gQXJyYXkKICAgIHN1Y2ggdGhhdCBgYGxbMF0gPT09IGxgYC4KICAgICIiIgogICAgcmV0dXJuIG9iagoKCmRlZiBkZXN0cm95X3Byb3hpZXMocHlwcm94aWVzOiBKc0FycmF5W0FueV0sIC8pIC0+IE5vbmU6CiAgICAiIiJEZXN0cm95IGFsbCBQeVByb3hpZXMgaW4gYSBKYXZhU2NyaXB0IGFycmF5LgoKICAgIHB5cHJveGllcyBtdXN0IGJlIGEgSmF2YVNjcmlwdCBBcnJheSBvZiBQeVByb3hpZXMuIEludGVuZGVkIGZvciB1c2UKICAgIHdpdGggdGhlIGFycmF5cyBjcmVhdGVkIGZyb20gdGhlICJweXByb3hpZXMiIGFyZ3VtZW50IG9mIDpqczptZXRoOmB+cHlvZGlkZS5mZmkuUHlQcm94eS50b0pzYAogICAgYW5kIDpweTpmdW5jOmB0b19qc2AuIFRoaXMgbWV0aG9kIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGluZGV4aW5nIHRoZSBBcnJheSBmcm9tCiAgICBQeXRob24gYXV0b21hdGljYWxseSB1bndyYXBzIHRoZSBQeVByb3h5IGludG8gdGhlIHdyYXBwZWQgUHl0aG9uIG9iamVjdC4KICAgICIiIgogICAgcGFzcwoKCl9fbmFtZV9fID0gX3NhdmVfbmFtZQpkZWwgX3NhdmVfbmFtZQoKX19hbGxfXyA9IFsKICAgICJDb252ZXJzaW9uRXJyb3IiLAogICAgIkpzQXJyYXkiLAogICAgIkpzQXN5bmNHZW5lcmF0b3IiLAogICAgIkpzQXN5bmNJdGVyYWJsZSIsCiAgICAiSnNBc3luY0l0ZXJhdG9yIiwKICAgICJKc0J1ZmZlciIsCiAgICAiSnNEb3VibGVQcm94eSIsCiAgICAiSnNFeGNlcHRpb24iLAogICAgIkpzRmV0Y2hSZXNwb25zZSIsCiAgICAiSnNHZW5lcmF0b3IiLAogICAgIkpzSXRlcmFibGUiLAogICAgIkpzSXRlcmF0b3IiLAogICAgIkpzTWFwIiwKICAgICJKc011dGFibGVNYXAiLAogICAgIkpzUHJvbWlzZSIsCiAgICAiSnNQcm94eSIsCiAgICAiSnNEb21FbGVtZW50IiwKICAgICJKc0NhbGxhYmxlIiwKICAgICJKc1R5cGVkQXJyYXkiLAogICAgImNyZWF0ZV9vbmNlX2NhbGxhYmxlIiwKICAgICJjcmVhdGVfcHJveHkiLAogICAgImRlc3Ryb3lfcHJveGllcyIsCiAgICAidG9fanMiLApdClBLAwQUAAAAAACnHqNWb+gXoTYAAAA2AAAAEAAAAHB5b2RpZGUvX2NvcmUucHlmcm9tIC5mZmkgaW1wb3J0IElOX0JST1dTRVIKCl9fYWxsX18gPSBbIklOX0JST1dTRVIiXQpQSwMEFAAAAAAApx6jVqnCAgIdMAAAHTAAABoAAABweW9kaWRlL19wYWNrYWdlX2xvYWRlci5weWltcG9ydCBiYXNlNjQKaW1wb3J0IGJpbmFzY2lpCmltcG9ydCByZQppbXBvcnQgc2h1dGlsCmltcG9ydCBzeXMKaW1wb3J0IHN5c2NvbmZpZwppbXBvcnQgdGFyZmlsZQpmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSXRlcmFibGUKZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBFWFRFTlNJT05fU1VGRklYRVMKZnJvbSBpbXBvcnRsaWIubWV0YWRhdGEgaW1wb3J0IERpc3RyaWJ1dGlvbgpmcm9tIGltcG9ydGxpYi5tZXRhZGF0YSBpbXBvcnQgZGlzdHJpYnV0aW9ucyBhcyBpbXBvcnRsaWJfZGlzdHJpYnV0aW9ucwpmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKZnJvbSBzaXRlIGltcG9ydCBnZXRzaXRlcGFja2FnZXMKZnJvbSB0ZW1wZmlsZSBpbXBvcnQgTmFtZWRUZW1wb3JhcnlGaWxlCmZyb20gdHlwaW5nIGltcG9ydCBJTywgQW55LCBMaXRlcmFsCmZyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZQoKdHJ5OgogICAgZnJvbSBweW9kaWRlX2pzIGltcG9ydCBsb2FkZWRQYWNrYWdlcwpleGNlcHQgSW1wb3J0RXJyb3I6CiAgICBsb2FkZWRQYWNrYWdlcyA9IE5vbmUKCmZyb20gLmZmaSBpbXBvcnQgSU5fQlJPV1NFUiwgSnNBcnJheSwgSnNCdWZmZXIsIHRvX2pzCgpTSVRFX1BBQ0tBR0VTID0gUGF0aChnZXRzaXRlcGFja2FnZXMoKVswXSkKaWYgc3lzLmJhc2VfcHJlZml4ID09IHN5cy5wcmVmaXg6CiAgICAjIG5vdCBpbiBhIHZpcnR1YWxlbnYKICAgIFNURF9MSUIgPSBQYXRoKHN5c2NvbmZpZy5nZXRfcGF0aCgic3RkbGliIikpCiAgICBEU09fRElSID0gUGF0aCgiL3Vzci9saWIiKQplbHNlOgogICAgIyBpbiBhIHZpcnR1YWxlbnYKICAgICMgQmV0dGVyIG5vdCBwdXQgc3R1ZmYgaW50byAvdXNyL2xpYiBvciAvbGliL3B5dGhvbjMuMTAhIFN0aWNrIHRoZSBzdGRsaWIKICAgICMgaW50byBTSVRFX1BBQ0tBR0VTIGFuZCBkc29zIHVwIHR3byBkaXJlY3Rvcmllcy4KICAgICMKICAgICMgZS5nLiwgU0lURV9QQUNLQUdFUyA9IC52ZW52L2xpYi9weXRob24zLjEwL3NpdGVfcGFja2FnZXMKICAgICMgYW5kICAgRFNPX0RJUiAgICAgICA9IC52ZW52L2xpYi8KICAgIFNURF9MSUIgPSBTSVRFX1BBQ0tBR0VTCiAgICBEU09fRElSID0gU0lURV9QQUNLQUdFUy5wYXJlbnRzWzFdClRBUkdFVFMgPSB7InNpdGUiOiBTSVRFX1BBQ0tBR0VTLCAic3RkbGliIjogU1REX0xJQiwgImR5bmxpYiI6IERTT19ESVJ9CgoKWklQX1RZUEVTID0geyIud2hsIiwgIi56aXAifQpUQVJfVFlQRVMgPSB7Ii50YXIiLCAiLmd6IiwgIi5ieiIsICIuZ3oiLCAiLnRneiIsICIuYnoyIiwgIi50YnoyIn0KRVhURU5TSU9OX1RBR1MgPSBbc3VmZml4LnJlbW92ZXN1ZmZpeCgiLnNvIikgZm9yIHN1ZmZpeCBpbiBFWFRFTlNJT05fU1VGRklYRVNdCiMgU2VlIFBFUCAzMTQ5LiBJIHRoaW5rIHRoZSBzaXR1YXRpb24gaGFzIHNpbmNlIGJlZW4gdXBkYXRlZCBzaW5jZSBQRVAgMzE0OSBkb2VzCiMgbm90IHRhbGsgYWJvdXQgcGxhdGZvcm0gdHJpcGxlcy4gQnV0IEkgY291bGQgbm90IGZpbmQgYW55IG5ld2VyIHBlcCBkaXNjdXNzaW5nCiMgc2hhcmVkIGxpYnJhcnkgbmFtZXMuCiMKIyBUaGVyZSBhcmUgb3RoZXIgaW50ZXJwcmV0ZXJzIGJ1dCBpdCdzIGJldHRlciB0byBoYXZlIGZhbHNlIG5lZ2F0aXZlcyB0aGFuCiMgZmFsc2UgcG9zaXRpdmVzLgpQTEFURk9STV9UQUdfUkVHRVggPSByZS5jb21waWxlKAogICAgciJcLihjcHl0aG9ufHB5cHl8anl0aG9uKS1bMC05XXsyLH1bYS16XSooLVthLXowLTlfLV0qKT8iCikKU0hBUkVETElCX1JFR0VYID0gcmUuY29tcGlsZShyIlwuc28oLlxkKykqJCIpCgoKZGVmIHBhcnNlX3doZWVsX25hbWUoZmlsZW5hbWU6IHN0cikgLT4gdHVwbGVbc3RyLCBzdHIsIHN0ciwgc3RyLCBzdHJdOgogICAgdG9rZW5zID0gZmlsZW5hbWUuc3BsaXQoIi0iKQogICAgIyBUT0RPOiBzdXBwb3J0IG9wdGlvbmFsIGJ1aWxkIHRhZ3MgaW4gdGhlIGZpbGVuYW1lIChjZiBQRVAgNDI3KQogICAgaWYgbGVuKHRva2VucykgPCA1OgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJ7ZmlsZW5hbWV9IGlzIG5vdCBhIHZhbGlkIHdoZWVsIGZpbGUgbmFtZS4iKQogICAgdmVyc2lvbiwgcHl0aG9uX3RhZywgYWJpX3RhZywgcGxhdGZvcm0gPSB0b2tlbnNbLTQ6XQogICAgbmFtZSA9ICItIi5qb2luKHRva2Vuc1s6LTRdKQogICAgcmV0dXJuIG5hbWUsIHZlcnNpb24sIHB5dGhvbl90YWcsIGFiaV90YWcsIHBsYXRmb3JtCgoKIyBWZW5kb3JlZCBmcm9tIHBhY2thZ2luZwpfY2Fub25pY2FsaXplX3JlZ2V4ID0gcmUuY29tcGlsZShyIlstXy5dKyIpCgoKZGVmIGNhbm9uaWNhbGl6ZV9uYW1lKG5hbWU6IHN0cikgLT4gc3RyOgogICAgIyBUaGlzIGlzIHRha2VuIGZyb20gUEVQIDUwMy4KICAgIHJldHVybiBfY2Fub25pY2FsaXplX3JlZ2V4LnN1YigiLSIsIG5hbWUpLmxvd2VyKCkKCgojIFZlbmRvcmVkIGZyb20gcGlwCmNsYXNzIFVuc3VwcG9ydGVkV2hlZWwoRXhjZXB0aW9uKToKICAgICIiIlVuc3VwcG9ydGVkIHdoZWVsLiIiIgoKCmRlZiB3aGVlbF9kaXN0X2luZm9fZGlyKHNvdXJjZTogWmlwRmlsZSwgbmFtZTogc3RyKSAtPiBzdHI6CiAgICAiIiJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZWQgLmRpc3QtaW5mbyBkaXJlY3RvcnkuCgogICAgUmFpc2VzIFVuc3VwcG9ydGVkV2hlZWwgaWYgbm90IGZvdW5kLCA+MSBmb3VuZCwgb3IgaXQgZG9lc24ndCBtYXRjaCB0aGUKICAgIHByb3ZpZGVkIG5hbWUuCiAgICAiIiIKICAgICMgWmlwIGZpbGUgcGF0aCBzZXBhcmF0b3JzIG11c3QgYmUgLwogICAgc3ViZGlycyA9IHtwLnNwbGl0KCIvIiwgMSlbMF0gZm9yIHAgaW4gc291cmNlLm5hbWVsaXN0KCl9CgogICAgaW5mb19kaXJzID0gW3MgZm9yIHMgaW4gc3ViZGlycyBpZiBzLmVuZHN3aXRoKCIuZGlzdC1pbmZvIildCgogICAgaWYgbm90IGluZm9fZGlyczoKICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFdoZWVsKGYiLmRpc3QtaW5mbyBkaXJlY3Rvcnkgbm90IGZvdW5kIGluIHdoZWVsIHtuYW1lIXJ9IikKCiAgICBpZiBsZW4oaW5mb19kaXJzKSA+IDE6CiAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRXaGVlbCgKICAgICAgICAgICAgIm11bHRpcGxlIC5kaXN0LWluZm8gZGlyZWN0b3JpZXMgZm91bmQgaW4gd2hlZWwgeyFyfToge30iLmZvcm1hdCgKICAgICAgICAgICAgICAgIG5hbWUsICIsICIuam9pbihpbmZvX2RpcnMpCiAgICAgICAgICAgICkKICAgICAgICApCgogICAgaW5mb19kaXIgPSBpbmZvX2RpcnNbMF0KCiAgICBpbmZvX2Rpcl9uYW1lID0gY2Fub25pY2FsaXplX25hbWUoaW5mb19kaXIpCiAgICBjYW5vbmljYWxfbmFtZSA9IGNhbm9uaWNhbGl6ZV9uYW1lKG5hbWUpCiAgICBpZiBub3QgaW5mb19kaXJfbmFtZS5zdGFydHN3aXRoKGNhbm9uaWNhbF9uYW1lKToKICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFdoZWVsKAogICAgICAgICAgICAiLmRpc3QtaW5mbyBkaXJlY3RvcnkgeyFyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHshcn0iLmZvcm1hdCgKICAgICAgICAgICAgICAgIGluZm9fZGlyLCBjYW5vbmljYWxfbmFtZQogICAgICAgICAgICApCiAgICAgICAgKQoKICAgIHJldHVybiBpbmZvX2RpcgoKCmRlZiBtYWtlX3dobGZpbGUoCiAgICAqYXJnczogQW55LCBvd25lcjogaW50IHwgTm9uZSA9IE5vbmUsIGdyb3VwOiBpbnQgfCBOb25lID0gTm9uZSwgKiprd2FyZ3M6IEFueQopIC0+IHN0cjoKICAgIHJldHVybiBzaHV0aWwuX21ha2VfemlwZmlsZSgqYXJncywgKiprd2FyZ3MpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCgoKaWYgSU5fQlJPV1NFUjoKICAgIHNodXRpbC5yZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdCgid2hsIiwgbWFrZV93aGxmaWxlLCBkZXNjcmlwdGlvbj0iV2hlZWwgZmlsZSIpCiAgICBzaHV0aWwucmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdCgKICAgICAgICAid2hsIiwgWyIud2hsIiwgIi53aGVlbCJdLCBzaHV0aWwuX3VucGFja196aXBmaWxlLCBkZXNjcmlwdGlvbj0iV2hlZWwgZmlsZSIgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KICAgICkKCgpkZWYgZ2V0X2Zvcm1hdChmb3JtYXQ6IHN0cikgLT4gc3RyOgogICAgZm9yIGZtdCwgZXh0ZW5zaW9ucywgXyBpbiBzaHV0aWwuZ2V0X3VucGFja19mb3JtYXRzKCk6CiAgICAgICAgaWYgZm9ybWF0ID09IGZtdDoKICAgICAgICAgICAgcmV0dXJuIGZtdAogICAgICAgIGlmIGZvcm1hdCBpbiBleHRlbnNpb25zOgogICAgICAgICAgICByZXR1cm4gZm10CiAgICAgICAgaWYgIi4iICsgZm9ybWF0IGluIGV4dGVuc2lvbnM6CiAgICAgICAgICAgIHJldHVybiBmbXQKICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJVbnJlY29nbml6ZWQgZm9ybWF0IHtmb3JtYXR9IikKCgpkZWYgdW5wYWNrX2J1ZmZlcigKICAgIGJ1ZmZlcjogSnNCdWZmZXIsCiAgICAqLAogICAgZmlsZW5hbWU6IHN0ciA9ICIiLAogICAgZm9ybWF0OiBzdHIgfCBOb25lID0gTm9uZSwKICAgIHRhcmdldDogTGl0ZXJhbFsic2l0ZSIsICJsaWIiLCAiZHlubGliIl0gfCBOb25lID0gTm9uZSwKICAgIGV4dHJhY3RfZGlyOiBzdHIgfCBOb25lID0gTm9uZSwKICAgIGNhbGN1bGF0ZV9keW5saWJzOiBib29sID0gRmFsc2UsCiAgICBpbnN0YWxsZXI6IHN0ciB8IE5vbmUgPSBOb25lLAogICAgc291cmNlOiBzdHIgfCBOb25lID0gTm9uZSwKKSAtPiBKc0FycmF5W3N0cl0gfCBOb25lOgogICAgIiIiVXNlZCB0byBpbnN0YWxsIGEgcGFja2FnZSBlaXRoZXIgaW50byBzaXRlcGFja2FnZXMgb3IgaW50byB0aGUgc3RhbmRhcmQKICAgIGxpYnJhcnkuCgogICAgVGhpcyBpcyBhIGhlbHBlciBtZXRob2QgY2FsbGVkIGZyb20gYGBsb2FkUGFja2FnZWBgLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGJ1ZmZlcgogICAgICAgIEEgSmF2YXNjcmlwdCBgYFVpbnQ4QXJyYXlgYCB3aXRoIHRoZSBiaW5hcnkgZGF0YSBmb3IgdGhlIGFyY2hpdmUuCgogICAgZmlsZW5hbWUKICAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmlsZSB3ZSBhcmUgZXh0cmFjdGluZy4gV2Ugb25seSBjYXJlIGFib3V0IGl0IHRvIGZpZ3VyZQogICAgICAgIG91dCB3aGV0aGVyIHRoZSBidWZmZXIgcmVwcmVzZW50cyBhIHRhciBmaWxlIG9yIGEgemlwIGZpbGUuIElnbm9yZWQgaWYKICAgICAgICBmb3JtYXQgYXJndW1lbnQgaXMgcHJlc2VudC4KCiAgICBmb3JtYXQKICAgICAgICBDb250cm9scyB0aGUgZm9ybWF0IHRoYXQgd2UgYXNzdW1lIHRoZSBhcmNoaXZlIGhhcy4gT3ZlcnJpZGVzIHRoZSBmaWxlCiAgICAgICAgZXh0ZW5zaW9uIG9mIGZpbGVuYW1lLiBJbiBwYXJ0aWN1bGFyIHdlIGRlY2lkZSB0aGUgZmlsZSBmb3JtYXQgYXMKICAgICAgICBmb2xsb3dzOgoKICAgICAgICAxLiBJZiBmb3JtYXQgaXMgcHJlc2VudCwgd2UgdXNlIHRoYXQuCiAgICAgICAgMi4gSWYgZmlsZSBuYW1lIGlzIHByZXNlbnQsIGl0IHNob3VsZCBoYXZlIGFuIGV4dGVuc2lvbiwgbGlrZSBhLnppcCwKICAgICAgICAgICBhLnRhciwgZXRjLiBUaGVuIHdlIHVzZSB0aGF0LgogICAgICAgIDMuIElmIG5laXRoZXIgaXMgcHJlc2VudCBvciB0aGUgZmlsZSBuYW1lIGhhcyBubyBleHRlbnNpb24sIHdlIHRocm93IGFuCiAgICAgICAgICAgZXJyb3IuCgoKICAgIGV4dHJhY3RfZGlyCiAgICAgICAgQ29udHJvbHMgd2hpY2ggZGlyZWN0b3J5IHRoZSBmaWxlIGlzIHVucGFja2VkIGludG8uIERlZmF1bHQgaXMgdGhlCiAgICAgICAgd29ya2luZyBkaXJlY3RvcnkuIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIHRhcmdldC4KCiAgICB0YXJnZXQKICAgICAgICBDb250cm9scyB3aGljaCBkaXJlY3RvcnkgdGhlIGZpbGUgaXMgdW5wYWNrZWQgaW50by4gRWl0aGVyICJzaXRlIiB3aGljaAogICAgICAgIHVucGFja2VkIHRoZSBmaWxlIGludG8gdGhlIHNpdGVwYWNrYWdlcyBkaXJlY3Rvcnkgb3IgImxpYiIgd2hpY2gKICAgICAgICB1bnBhY2tlZCB0aGUgZmlsZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aAogICAgICAgIGV4dHJhY3RfZGlyLgoKICAgIGNhbGN1bGF0ZV9keW5saWJzCiAgICAgICAgSWYgdHJ1ZSwgd2lsbCByZXR1cm4gYSBKYXZhc2NyaXB0IEFycmF5IG9mIHBhdGhzIHRvIGR5bmFtaWMgbGlicmFyaWVzCiAgICAgICAgKCcuc28nIGZpbGVzKSB0aGF0IHdlcmUgaW4gdGhlIGFyY2hpdmUuIFdlIG5lZWQgdG8gcHJlY29tcGlsZSB0aGVzZSBXYXNtCiAgICAgICAgYmluYXJpZXMgaW4gYGxvYWQtcHlvZGlkZS5qc2AuIFRoZXNlIHBhdGhzIHBvaW50IHRvIHRoZSB1bnBhY2tlZAogICAgICAgIGxvY2F0aW9ucyBvZiB0aGUgLnNvIGZpbGVzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgICAgICBJZiBjYWxjdWxhdGVfZHlubGlicyBpcyBUcnVlLCBhIEphdmFzY3JpcHQgQXJyYXkgb2YgZHluYW1pYyBsaWJyYXJpZXMuCiAgICAgICAgT3RoZXJ3aXNlLCByZXR1cm4gTm9uZS4KCiAgICAiIiIKICAgIGlmIGZvcm1hdDoKICAgICAgICBmb3JtYXQgPSBnZXRfZm9ybWF0KGZvcm1hdCkKICAgIGlmIHRhcmdldCBhbmQgZXh0cmFjdF9kaXI6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHByb3ZpZGUgYm90aCAndGFyZ2V0JyBhbmQgJ2V4dHJhY3RfZGlyJyIpCiAgICBpZiBub3QgZmlsZW5hbWUgYW5kIGZvcm1hdCBpcyBOb25lOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkF0IGxlYXN0IG9uZSBvZiBmaWxlbmFtZSBhbmQgZm9ybWF0IG11c3QgYmUgcHJvdmlkZWQiKQogICAgaWYgdGFyZ2V0OgogICAgICAgIGV4dHJhY3RfcGF0aCA9IFRBUkdFVFNbdGFyZ2V0XQogICAgZWxpZiBleHRyYWN0X2RpcjoKICAgICAgICBleHRyYWN0X3BhdGggPSBQYXRoKGV4dHJhY3RfZGlyKQogICAgZWxzZToKICAgICAgICBleHRyYWN0X3BhdGggPSBQYXRoKCIuIikKICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucnBhcnRpdGlvbigiLyIpWy0xXQoKICAgIGV4dHJhY3RfcGF0aC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCiAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZShzdWZmaXg9ZmlsZW5hbWUpIGFzIGY6CiAgICAgICAgYnVmZmVyLl9pbnRvX2ZpbGUoZikKICAgICAgICBzaHV0aWwudW5wYWNrX2FyY2hpdmUoZi5uYW1lLCBleHRyYWN0X3BhdGgsIGZvcm1hdCkKICAgICAgICBzdWZmaXggPSBQYXRoKGZpbGVuYW1lKS5zdWZmaXgKICAgICAgICBpZiBzdWZmaXggPT0gIi53aGwiOgogICAgICAgICAgICBzZXRfd2hlZWxfaW5zdGFsbGVyKGZpbGVuYW1lLCBmLCBleHRyYWN0X3BhdGgsIGluc3RhbGxlciwgc291cmNlKQogICAgICAgIGlmIGNhbGN1bGF0ZV9keW5saWJzOgogICAgICAgICAgICBzdWZmaXggPSBQYXRoKGYubmFtZSkuc3VmZml4CiAgICAgICAgICAgIHJldHVybiB0b19qcyhnZXRfZHlubGlicyhmLCBzdWZmaXgsIGV4dHJhY3RfcGF0aCkpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKCgpkZWYgc2hvdWxkX2xvYWRfZHlubGliKHBhdGg6IHN0ciB8IFBhdGgpIC0+IGJvb2w6CiAgICBwYXRoID0gUGF0aChwYXRoKQoKICAgIGlmIG5vdCBTSEFSRURMSUJfUkVHRVguc2VhcmNoKHBhdGgubmFtZSk6CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgc3VmZml4ZXMgPSBwYXRoLnN1ZmZpeGVzCgogICAgdHJ5OgogICAgICAgIHRhZyA9IHN1ZmZpeGVzW3N1ZmZpeGVzLmluZGV4KCIuc28iKSAtIDFdCiAgICBleGNlcHQgVmFsdWVFcnJvcjogICMgVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGp1c3QgaW4gY2FzZQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGlmIHRhZyBpbiBFWFRFTlNJT05fVEFHUzoKICAgICAgICByZXR1cm4gVHJ1ZQogICAgIyBPa2F5IHByb2JhYmx5IGl0J3Mgbm90IGNvbXBhdGlibGUgbm93LiBCdXQgaXQgbWlnaHQgYmUgYW4gdW5yZWxhdGVkIC5zbwogICAgIyBmaWxlIHdpdGggYSBuYW1lIHdpdGggYW4gZXh0cmEgZG90OiBgc29tZS5uYW1lLnNvYCB2cwogICAgIyBgc29tZS5jcHl0aG9uLTM5LXg4Nl82NC1saW51eC1nbnUuc29gIExldCdzIG1ha2UgYSBiZXN0IGVmZm9ydCBoZXJlIHRvCiAgICAjIGNoZWNrLgogICAgcmV0dXJuIG5vdCBQTEFURk9STV9UQUdfUkVHRVgubWF0Y2godGFnKQoKCmRlZiBzZXRfd2hlZWxfaW5zdGFsbGVyKAogICAgZmlsZW5hbWU6IHN0ciwKICAgIGFyY2hpdmU6IElPW2J5dGVzXSwKICAgIHRhcmdldF9kaXI6IFBhdGgsCiAgICBpbnN0YWxsZXI6IHN0ciB8IE5vbmUsCiAgICBzb3VyY2U6IHN0ciB8IE5vbmUsCikgLT4gTm9uZToKICAgICIiIlJlY29yZCB0aGUgaW5zdGFsbGVyIGFuZCBzb3VyY2Ugb2YgYSB3aGVlbCBpbnRvIHRoZSBgZGlzdC1pbmZvYAogICAgZGlyZWN0b3J5LgoKICAgIFdlIHB1dCB0aGUgaW5zdGFsbGVyIGludG8gYW4gSU5TVEFMTEVSIGZpbGUgYWNjb3JkaW5nIHRvIHRoZSBwYWNrYWdpbmcgc3BlYzoKICAgIHBhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zcGVjaWZpY2F0aW9ucy9yZWNvcmRpbmctaW5zdGFsbGVkLXBhY2thZ2VzLyN0aGUtZGlzdC1pbmZvLWRpcmVjdG9yeQoKICAgIFdlIHB1dCB0aGUgc291cmNlIGludG8gUFlPRElERV9TT1JVQ0UuCgogICAgVGhlIHBhY2thZ2luZyBzcGVjIGFsbG93cyB1cyB0byBtYWtlIGN1c3RvbSBmaWxlcy4gSXQgYWxzbyBhbGxvd3Mgd2hlZWxzIHRvCiAgICBpbmNsdWRlIGN1c3RvbSBmaWxlcyBpbiB0aGVpciAuZGlzdC1pbmZvIGRpcmVjdG9yeS4gVGhlIHNwZWMgaGFzIG5vIGF0dGVtcHQKICAgIHRvIGNvb3JkaW5hdGUgdGhlc2Ugc28gdGhhdCBpbnN0YWxsZXJzIGRvbid0IHRyYW1wbGUgZmlsZXMgdGhhdCB3aGVlbHMKICAgIGluY2x1ZGUuIFdlIG1ha2UgYSBiZXN0IGVmZm9ydCB3aXRoIG91ciBQWU9ESURFIHByZWZpeC4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICBmaWxlbmFtZQogICAgICAgIFRoZSBmaWxlIG5hbWUgb2YgdGhlIHdoZWVsLgoKICAgIGFyY2hpdmUKICAgICAgICBBIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIHdoZWVsIGFyY2hpdmUKCiAgICB0YXJnZXRfZGlyCiAgICAgICAgVGhlIGRpcmVjdG9yeSB0aGUgd2hlZWwgaXMgYmVpbmcgaW5zdGFsbGVkIGludG8uIFByb2JhYmx5IHNpdGUtcGFja2FnZXMuCgogICAgaW5zdGFsbGVyCiAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGluc3RhbGxlci4gQ3VycmVudGx5IGVpdGhlciBgcHlvZGlkZS51bnBhY2tBcmNoaXZlYCwKICAgICAgICBgcHlvZGlkZS5sb2FkUGFja2FnZWAgb3IgYG1pY3JvcGlwYC4KCiAgICBzb3VyY2UKICAgICAgICBXaGVyZSBkaWQgdGhlIHBhY2thZ2UgY29tZSBmcm9tPyBFaXRoZXIgYSB1cmwsIGBweW9kaWRlYCwgb3IgYFB5UElgLgogICAgIiIiCiAgICB6ID0gWmlwRmlsZShhcmNoaXZlKQogICAgd2hlZWxfbmFtZSA9IHBhcnNlX3doZWVsX25hbWUoZmlsZW5hbWUpWzBdCiAgICBkaXN0X2luZm9fbmFtZSA9IHdoZWVsX2Rpc3RfaW5mb19kaXIoeiwgd2hlZWxfbmFtZSkKICAgIGRpc3RfaW5mbyA9IHRhcmdldF9kaXIgLyBkaXN0X2luZm9fbmFtZQogICAgaWYgaW5zdGFsbGVyOgogICAgICAgIChkaXN0X2luZm8gLyAiSU5TVEFMTEVSIikud3JpdGVfdGV4dChpbnN0YWxsZXIpCiAgICBpZiBzb3VyY2U6CiAgICAgICAgKGRpc3RfaW5mbyAvICJQWU9ESURFX1NPVVJDRSIpLndyaXRlX3RleHQoc291cmNlKQoKCmRlZiBnZXRfZHlubGlicyhhcmNoaXZlOiBJT1tieXRlc10sIHN1ZmZpeDogc3RyLCB0YXJnZXRfZGlyOiBQYXRoKSAtPiBsaXN0W3N0cl06CiAgICAiIiJMaXN0IG91dCB0aGUgcGF0aHMgdG8gLnNvIGZpbGVzIGluIGEgemlwIG9yIHRhciBhcmNoaXZlLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGFyY2hpdmUKICAgICAgICBBIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBlaXRoZXIgYSB6aXAgb3IgYSB0YXIgYXJjaGl2ZS4gV2UgdXNlIHRoZSBgLm5hbWVgCiAgICAgICAgZmllbGQgdG8gZGV0ZXJtaW5lIHdoaWNoIGZpbGUgdHlwZS4KCiAgICB0YXJnZXRfZGlyCiAgICAgICAgVGhlIGRpcmVjdG9yeSB0aGUgYXJjaGl2ZSBpcyB1bnBhY2tlZCBpbnRvLiBQYXRocyB3aWxsIGJlIGFkanVzdGVkIHRvIHBvaW50CiAgICAgICAgaW5zaWRlIHRoaXMgZGlyZWN0b3J5LgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgICAgICBUaGUgbGlzdCBvZiBwYXRocyB0byBkeW5hbWljIGxpYnJhcmllcyAoJy5zbycgZmlsZXMpIHRoYXQgd2VyZSBpbiB0aGUgYXJjaGl2ZSwKICAgICAgICBidXQgYWRqdXN0ZWQgdG8gcG9pbnQgdG8gdGhlaXIgdW5wYWNrZWQgbG9jYXRpb25zLgogICAgIiIiCiAgICBkeW5saWJfcGF0aHNfaXRlcjogSXRlcmFibGVbc3RyXQogICAgaWYgc3VmZml4IGluIFpJUF9UWVBFUzoKICAgICAgICBkeW5saWJfcGF0aHNfaXRlciA9IFppcEZpbGUoYXJjaGl2ZSkubmFtZWxpc3QoKQogICAgZWxpZiBzdWZmaXggaW4gVEFSX1RZUEVTOgogICAgICAgIGR5bmxpYl9wYXRoc19pdGVyID0gKHRpbmZvLm5hbWUgZm9yIHRpbmZvIGluIHRhcmZpbGUub3BlbihhcmNoaXZlLm5hbWUpKQogICAgZWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYiVW5leHBlY3RlZCBzdWZmaXgge3N1ZmZpeH0iKQoKICAgIHJldHVybiBbCiAgICAgICAgc3RyKCh0YXJnZXRfZGlyIC8gcGF0aCkucmVzb2x2ZSgpKQogICAgICAgIGZvciBwYXRoIGluIGR5bmxpYl9wYXRoc19pdGVyCiAgICAgICAgaWYgc2hvdWxkX2xvYWRfZHlubGliKHBhdGgpCiAgICBdCgoKZGVmIGdldF9kaXN0X3NvdXJjZShkaXN0OiBEaXN0cmlidXRpb24pIC0+IHN0cjoKICAgICIiIkdldCBhIGRlc2NyaXB0aW9uIG9mIHRoZSBzb3VyY2Ugb2YgYSBwYWNrYWdlLgoKICAgIFRoaXMgaXMgdXNlZCBpbiBsb2FkUGFja2FnZSB0byBleHBsYWluIHdoZXJlIHRoZSBwYWNrYWdlIGNhbWUgZnJvbS4gUHVyZWx5CiAgICBmb3IgaW5mb3JtYXRpdmUgcHVycG9zZXMuCiAgICAiIiIKICAgIHNvdXJjZSA9IGRpc3QucmVhZF90ZXh0KCJQWU9ESURFX1NPVVJDRSIpCiAgICBpZiBzb3VyY2UgPT0gInB5b2RpZGUiOgogICAgICAgIHJldHVybiAiZGVmYXVsdCBjaGFubmVsIgogICAgaWYgc291cmNlOgogICAgICAgIHJldHVybiBzb3VyY2UKICAgIGRpcmVjdF91cmwgPSBkaXN0LnJlYWRfdGV4dCgiZGlyZWN0X3VybC5qc29uIikKICAgIGlmIGRpcmVjdF91cmw6CiAgICAgICAgaW1wb3J0IGpzb24KCiAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMoZGlyZWN0X3VybClbInVybCJdCiAgICBpbnN0YWxsZXIgPSBkaXN0LnJlYWRfdGV4dCgiSU5TVEFMTEVSIikKICAgIGlmIGluc3RhbGxlcjoKICAgICAgICBpbnN0YWxsZXIgPSBpbnN0YWxsZXIuc3RyaXAoKQogICAgICAgIHJldHVybiBmIntpbnN0YWxsZXJ9IChpbmRleCB1bmtub3duKSIKICAgIHJldHVybiAiVW5rbm93biIKCgpkZWYgaW5pdF9sb2FkZWRfcGFja2FnZXMoKSAtPiBOb25lOgogICAgIiIiSW5pdGlhbGl6ZSBweW9kaWRlLmxvYWRlZFBhY2thZ2VzIHdpdGggdGhlIHBhY2thZ2VzIHRoYXQgYXJlIGFscmVhZHkKICAgIHByZXNlbnQuCgogICAgVGhpcyBlbnN1cmVzIHRoYXQgYHB5b2RpZGUubG9hZFBhY2thZ2VgIGtub3dzIHRoYXQgdGhleSBhcmUgYXJvdW5kIGFuZAogICAgZG9lc24ndCBpbnN0YWxsIG92ZXIgdGhlbS4KICAgICIiIgogICAgZm9yIGRpc3QgaW4gaW1wb3J0bGliX2Rpc3RyaWJ1dGlvbnMoKToKICAgICAgICBzZXRhdHRyKGxvYWRlZFBhY2thZ2VzLCBkaXN0Lm5hbWUsIGdldF9kaXN0X3NvdXJjZShkaXN0KSkKCgpkZWYgc3ViX3Jlc291cmNlX2hhc2goc2hhXzI1Njogc3RyKSAtPiBzdHI6CiAgICAiIiJDYWxjdWxhdGVzIHRoZSBzdWIgcmVzb3VyY2UgaW50ZWdyaXR5IGhhc2ggZ2l2ZW4gYSBTSEEtMjU2CgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgc2hhXzI1NgogICAgICAgIEEgaGV4ZGlnZXN0IG9mIHRoZSBTSEEtMjU2IHN1bS4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICAgICAgVGhlIHN1YiByZXNvdXJjZSBpbnRlZ3JpdHkgaGFzaCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdW0uCgogICAgPj4+IHNoYV8yNTYgPSAnYzBkYzg2ZWZkYTAwNjBkNDA4NDA5OGE5MGVjOTJiM2Q0YWE4OWQ3ZjdlMGZiYTU0MjQ1NjFkMjE0NTFlMTc1OCcKICAgID4+PiBzdWJfcmVzb3VyY2VfaGFzaChzaGFfMjU2KQogICAgJ3NoYTI1Ni13TnlHNzlvQVlOUUlRSmlwRHNrclBVcW9uWDkrRDdwVUpGWWRJVVVlRjFnPScKICAgICIiIgogICAgYmluYXJ5X2RpZ2VzdCA9IGJpbmFzY2lpLnVuaGV4bGlmeShzaGFfMjU2KQogICAgcmV0dXJuICJzaGEyNTYtIiArIGJhc2U2NC5iNjRlbmNvZGUoYmluYXJ5X2RpZ2VzdCkuZGVjb2RlKCkKUEsDBBQAAAAAAKceo1Y9nDot2AEAANgBAAASAAAAcHlvZGlkZS9fcnVuX2pzLnB5ZnJvbSB0eXBpbmcgaW1wb3J0IEFueQoKCmRlZiBydW5fanMoY29kZTogc3RyLCAvKSAtPiBBbnk6CiAgICAiIiIKICAgIEEgd3JhcHBlciBmb3IgdGhlIEphdmFTY3JpcHQgJ2V2YWwnIGZ1bmN0aW9uLgoKICAgIFJ1bnMgJ2NvZGUnIGFzIGEgSmF2YXNjcmlwdCBjb2RlIHN0cmluZyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBVbmxpa2UKICAgIEphdmFTY3JpcHQncyAnZXZhbCcsIGlmICdjb2RlJyBpcyBub3QgYSBzdHJpbmcgd2UgcmFpc2UgYSBUeXBlRXJyb3IuCiAgICAiIiIKICAgIGZyb20ganMgaW1wb3J0IGV2YWwKCiAgICBpZiBub3QgaXNpbnN0YW5jZShjb2RlLCBzdHIpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgZiJhcmd1bWVudCBzaG91bGQgaGF2ZSB0eXBlICdzdHJpbmcnIG5vdCB0eXBlICd7dHlwZShjb2RlKS5fX25hbWVfX30nIgogICAgICAgICkKICAgIHJldHVybiBldmFsKGNvZGUpClBLAwQUAAAAAACnHqNW3ZiOdJIFAACSBQAAEQAAAHB5b2RpZGUvX3N0YXRlLnB5aW1wb3J0IGdjCmltcG9ydCBzeXMKZnJvbSB0eXBpbmcgaW1wb3J0IEFueQoKaW1wb3J0IF9fbWFpbl9fCgpmcm9tIF9weW9kaWRlLl9pbXBvcnRob29rIGltcG9ydCBqc2ZpbmRlcgoKZnJvbSAuZmZpIGltcG9ydCBKc1Byb3h5CgoKZGVmIHNhdmVfc3RhdGUoKSAtPiBkaWN0W3N0ciwgQW55XToKICAgICIiIlJlY29yZCB0aGUgY3VycmVudCBnbG9iYWwgc3RhdGUuCgogICAgVGhpcyBpbmNsdWRlcyB3aGljaCBKYXZhU2NyaXB0IHBhY2thZ2VzIGFyZSBsb2FkZWQgYW5kIHRoZSBnbG9iYWwgc2NvcGUgaW4KICAgIGBgX19tYWluX18uX19kaWN0X19gYC4gTWFueSBsb2FkZWQgbW9kdWxlcyBtaWdodCBoYXZlIGdsb2JhbCBzdGF0ZSwgYnV0CiAgICB0aGVyZSBpcyBubyBnZW5lcmFsIHdheSB0byB0cmFjayBpdCBhbmQgd2UgZG9uJ3QgdHJ5IHRvLgogICAgIiIiCiAgICBsb2FkZWRfanNfbW9kdWxlcyA9IHt9CiAgICBmb3IgW2tleSwgdmFsdWVdIGluIHN5cy5tb2R1bGVzLml0ZW1zKCk6CiAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgSnNQcm94eSk6CiAgICAgICAgICAgIGxvYWRlZF9qc19tb2R1bGVzW2tleV0gPSB2YWx1ZQoKICAgIHJldHVybiBkaWN0KAogICAgICAgIGdsb2JhbHM9ZGljdChfX21haW5fXy5fX2RpY3RfXyksCiAgICAgICAganNfbW9kdWxlcz1kaWN0KGpzZmluZGVyLmpzcHJveGllcyksCiAgICAgICAgbG9hZGVkX2pzX21vZHVsZXM9bG9hZGVkX2pzX21vZHVsZXMsCiAgICApCgoKZGVmIHJlc3RvcmVfc3RhdGUoc3RhdGU6IGRpY3Rbc3RyLCBBbnldKSAtPiBpbnQ6CiAgICAiIiJSZXN0b3JlIHRoZSBnbG9iYWwgc3RhdGUgdG8gYSBzbmFwc2hvdC4gVGhlIGFyZ3VtZW50IGBgc3RhdGVgYCBzaG91bGQKICAgIGNvbWUgZnJvbSBgYHNhdmVfc3RhdGVgYCIiIgogICAgX19tYWluX18uX19kaWN0X18uY2xlYXIoKQogICAgX19tYWluX18uX19kaWN0X18udXBkYXRlKHN0YXRlWyJnbG9iYWxzIl0pCgogICAganNmaW5kZXIuanNwcm94aWVzID0gc3RhdGVbImpzX21vZHVsZXMiXQogICAgbG9hZGVkX2pzX21vZHVsZXMgPSBzdGF0ZVsibG9hZGVkX2pzX21vZHVsZXMiXQogICAgZm9yIFtrZXksIHZhbHVlXSBpbiBsaXN0KHN5cy5tb2R1bGVzLml0ZW1zKCkpOgogICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIEpzUHJveHkpIGFuZCBrZXkgbm90IGluIGxvYWRlZF9qc19tb2R1bGVzOgogICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNba2V5XQogICAgc3lzLm1vZHVsZXMudXBkYXRlKGxvYWRlZF9qc19tb2R1bGVzKQoKICAgIHN5cy5sYXN0X3R5cGUgPSBOb25lCiAgICBzeXMubGFzdF92YWx1ZSA9IE5vbmUKICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IE5vbmUKCiAgICByZXR1cm4gZ2MuY29sbGVjdCgyKQoKCl9fYWxsX18gPSBbInNhdmVfc3RhdGUiLCAicmVzdG9yZV9zdGF0ZSJdClBLAwQUAAAAAACnHqNWEYOr3eICAADiAgAADwAAAHB5b2RpZGUvY29kZS5weWZyb20gdHlwaW5nIGltcG9ydCBBbnkKCmZyb20gX3B5b2RpZGUuX2Jhc2UgaW1wb3J0ICgKICAgIENvZGVSdW5uZXIsCiAgICBldmFsX2NvZGUsCiAgICBldmFsX2NvZGVfYXN5bmMsCiAgICBmaW5kX2ltcG9ydHMsCiAgICBzaG91bGRfcXVpZXQsCikKCgpkZWYgcnVuX2pzKGNvZGU6IHN0ciwgLykgLT4gQW55OgogICAgIiIiCiAgICBBIHdyYXBwZXIgZm9yIHRoZSA6anM6ZnVuYzpgZXZhbGAgZnVuY3Rpb24uCgogICAgUnVucyBgYGNvZGVgYCBhcyBhIEphdmFzY3JpcHQgY29kZSBzdHJpbmcgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4gVW5saWtlCiAgICA6anM6ZnVuYzpgZXZhbGAsIGlmIGBgY29kZWBgIGlzIG5vdCBhIHN0cmluZyB3ZSByYWlzZSBhIDpweTpleGM6YFR5cGVFcnJvcmAuCiAgICAiIiIKICAgIGZyb20ganMgaW1wb3J0IGV2YWwgYXMgZXZhbF8KCiAgICBpZiBub3QgaXNpbnN0YW5jZShjb2RlLCBzdHIpOgogICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgZiJhcmd1bWVudCBzaG91bGQgaGF2ZSB0eXBlICdzdHJpbmcnIG5vdCB0eXBlICd7dHlwZShjb2RlKS5fX25hbWVfX30nIgogICAgICAgICkKICAgIHJldHVybiBldmFsXyhjb2RlKQoKCl9fYWxsX18gPSBbCiAgICAiQ29kZVJ1bm5lciIsCiAgICAiZXZhbF9jb2RlIiwKICAgICJldmFsX2NvZGVfYXN5bmMiLAogICAgImZpbmRfaW1wb3J0cyIsCiAgICAic2hvdWxkX3F1aWV0IiwKICAgICJydW5fanMiLApdClBLAwQUAAAAAACnHqNWqT8jfcVPAADFTwAAEgAAAHB5b2RpZGUvY29uc29sZS5weWltcG9ydCBhc3QKaW1wb3J0IGFzeW5jaW8KaW1wb3J0IHJsY29tcGxldGVyCmltcG9ydCBzeXMKaW1wb3J0IHRyYWNlYmFjawpmcm9tIGFzeW5jaW8gaW1wb3J0IEZ1dHVyZSwgZW5zdXJlX2Z1dHVyZQpmcm9tIGNvZGVvcCBpbXBvcnQgQ29tbWFuZENvbXBpbGVyLCBDb21waWxlLCBfZmVhdHVyZXMgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IENhbGxhYmxlLCBHZW5lcmF0b3IKZnJvbSBjb250ZXh0bGliIGltcG9ydCAoCiAgICBFeGl0U3RhY2ssCiAgICBfUmVkaXJlY3RTdHJlYW0sCiAgICBjb250ZXh0bWFuYWdlciwKICAgIHJlZGlyZWN0X3N0ZGVyciwKICAgIHJlZGlyZWN0X3N0ZG91dCwKKQpmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25fYnVpbGQsIHB5dGhvbl92ZXJzaW9uCmZyb20gdG9rZW5pemUgaW1wb3J0IFRva2VuRXJyb3IKZnJvbSB0eXBlcyBpbXBvcnQgVHJhY2ViYWNrVHlwZQpmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBMaXRlcmFsCgpmcm9tIF9weW9kaWRlLl9iYXNlIGltcG9ydCBDb2RlUnVubmVyLCBSZXR1cm5Nb2RlLCBzaG91bGRfcXVpZXQKCl9fYWxsX18gPSBbIkNvbnNvbGUiLCAiUHlvZGlkZUNvbnNvbGUiLCAiQkFOTkVSIiwgInJlcHJfc2hvcnRlbiIsICJDb25zb2xlRnV0dXJlIl0KCgpCQU5ORVIgPSBmIiIiClB5dGhvbiB7cHl0aG9uX3ZlcnNpb24oKX0gKHsnLCAnLmpvaW4ocHl0aG9uX2J1aWxkKCkpfSkgb24gV2ViQXNzZW1ibHkvRW1zY3JpcHRlbgpUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiIiIi5zdHJpcCgpCgoKY2xhc3MgcmVkaXJlY3Rfc3RkaW4oX1JlZGlyZWN0U3RyZWFtW0FueV0pOgogICAgX3N0cmVhbSA9ICJzdGRpbiIKCgpjbGFzcyBfV3JpdGVTdHJlYW06CiAgICAiIiJBIHV0aWxpdHkgY2xhc3Mgc28gd2UgY2FuIHNwZWNpZnkgb3VyIG93biBoYW5kbGVycyBmb3Igd3JpdGVzIHRvIHNkb3V0LCBzdGRlcnIiIiIKCiAgICBkZWYgX19pbml0X18oCiAgICAgICAgc2VsZiwgd3JpdGVfaGFuZGxlcjogQ2FsbGFibGVbW3N0cl0sIEFueV0sIG5hbWU6IHN0ciB8IE5vbmUgPSBOb25lCiAgICApIC0+IE5vbmU6CiAgICAgICAgc2VsZi53cml0ZV9oYW5kbGVyID0gd3JpdGVfaGFuZGxlcgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKCiAgICBkZWYgd3JpdGUoc2VsZiwgdGV4dDogc3RyKSAtPiBOb25lOgogICAgICAgIHNlbGYud3JpdGVfaGFuZGxlcih0ZXh0KQoKICAgIGRlZiBmbHVzaChzZWxmKSAtPiBOb25lOgogICAgICAgIHBhc3MKCiAgICBkZWYgaXNhdHR5KHNlbGYpIC0+IGJvb2w6CiAgICAgICAgcmV0dXJuIFRydWUKCgpjbGFzcyBfUmVhZFN0cmVhbToKICAgICIiIkEgdXRpbGl0eSBjbGFzcyBzbyB3ZSBjYW4gc3BlY2lmeSBvdXIgb3duIGhhbmRsZXIgZm9yIHJlYWRpbmcgZnJvbSBzdGRpbiIiIgoKICAgIGRlZiBfX2luaXRfXygKICAgICAgICBzZWxmLCByZWFkX2hhbmRsZXI6IENhbGxhYmxlW1tpbnRdLCBzdHJdLCBuYW1lOiBzdHIgfCBOb25lID0gTm9uZQogICAgKSAtPiBOb25lOgogICAgICAgIHNlbGYucmVhZF9oYW5kbGVyID0gcmVhZF9oYW5kbGVyCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQoKICAgIGRlZiByZWFkbGluZShzZWxmLCBuOiBpbnQgPSAtMSkgLT4gc3RyOgogICAgICAgIHJldHVybiBzZWxmLnJlYWRfaGFuZGxlcihuKQoKICAgIGRlZiBmbHVzaChzZWxmKSAtPiBOb25lOgogICAgICAgIHBhc3MKCiAgICBkZWYgaXNhdHR5KHNlbGYpIC0+IGJvb2w6CiAgICAgICAgcmV0dXJuIFRydWUKCgpjbGFzcyBfQ29tcGlsZShDb21waWxlKToKICAgICIiIkNvbXBpbGUgY29kZSB3aXRoIENvZGVSdW5uZXIsIGFuZCByZW1lbWJlciBmdXR1cmUgaW1wb3J0cwoKICAgIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGJlaGF2ZSBtdWNoIGxpa2UgdGhlIGJ1aWx0LWluIGNvbXBpbGUgZnVuY3Rpb24sCiAgICBidXQgaWYgb25lIGlzIHVzZWQgdG8gY29tcGlsZSB0ZXh0IGNvbnRhaW5pbmcgYSBmdXR1cmUgc3RhdGVtZW50LCBpdAogICAgInJlbWVtYmVycyIgYW5kIGNvbXBpbGVzIGFsbCBzdWJzZXF1ZW50IHByb2dyYW0gdGV4dHMgd2l0aCB0aGUgc3RhdGVtZW50IGluCiAgICBmb3JjZS4gSXQgdXNlcyBDb2RlUnVubmVyIGluc3RlYWQgb2YgdGhlIGJ1aWx0LWluIGNvbXBpbGUuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oCiAgICAgICAgc2VsZiwKICAgICAgICAqLAogICAgICAgIHJldHVybl9tb2RlOiBSZXR1cm5Nb2RlID0gImxhc3RfZXhwciIsCiAgICAgICAgcXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uOiBib29sID0gVHJ1ZSwKICAgICAgICBmbGFnczogaW50ID0gMHgwLAogICAgKSAtPiBOb25lOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYuZmxhZ3MgfD0gZmxhZ3MKICAgICAgICBzZWxmLnJldHVybl9tb2RlID0gcmV0dXJuX21vZGUKICAgICAgICBzZWxmLnF1aWV0X3RyYWlsaW5nX3NlbWljb2xvbiA9IHF1aWV0X3RyYWlsaW5nX3NlbWljb2xvbgoKICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBzb3VyY2U6IHN0ciwgZmlsZW5hbWU6IHN0ciwgc3ltYm9sOiBzdHIpIC0+IENvZGVSdW5uZXI6ICAjIHR5cGU6IGlnbm9yZVtvdmVycmlkZV0KICAgICAgICByZXR1cm5fbW9kZSA9IHNlbGYucmV0dXJuX21vZGUKICAgICAgICB0cnk6CiAgICAgICAgICAgIGlmIHNlbGYucXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uIGFuZCBzaG91bGRfcXVpZXQoc291cmNlKToKICAgICAgICAgICAgICAgIHJldHVybl9tb2RlID0gIm5vbmUiCiAgICAgICAgZXhjZXB0IChUb2tlbkVycm9yLCBTeW50YXhFcnJvcik6CiAgICAgICAgICAgICMgSW52YWxpZCBjb2RlLCBsZXQgdGhlIFB5dGhvbiBwYXJzZXIgdGhyb3cgdGhlIGVycm9yIGxhdGVyLgogICAgICAgICAgICBwYXNzCgogICAgICAgIGNvZGVfcnVubmVyID0gQ29kZVJ1bm5lcigKICAgICAgICAgICAgc291cmNlLAogICAgICAgICAgICBtb2RlPXN5bWJvbCwKICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUsCiAgICAgICAgICAgIHJldHVybl9tb2RlPXJldHVybl9tb2RlLAogICAgICAgICAgICBmbGFncz1zZWxmLmZsYWdzLAogICAgICAgICkuY29tcGlsZSgpCiAgICAgICAgYXNzZXJ0IGNvZGVfcnVubmVyLmNvZGUKICAgICAgICBmb3IgZmVhdHVyZSBpbiBfZmVhdHVyZXM6CiAgICAgICAgICAgIGlmIGNvZGVfcnVubmVyLmNvZGUuY29fZmxhZ3MgJiBmZWF0dXJlLmNvbXBpbGVyX2ZsYWc6CiAgICAgICAgICAgICAgICBzZWxmLmZsYWdzIHw9IGZlYXR1cmUuY29tcGlsZXJfZmxhZwogICAgICAgIHJldHVybiBjb2RlX3J1bm5lcgoKCmNsYXNzIF9Db21tYW5kQ29tcGlsZXIoQ29tbWFuZENvbXBpbGVyKToKICAgICIiIkNvbXBpbGUgY29kZSB3aXRoIENvZGVSdW5uZXIsIGFuZCByZW1lbWJlciBmdXR1cmUgaW1wb3J0cywgcmV0dXJuIE5vbmUgaWYKICAgIGNvZGUgaXMgaW5jb21wbGV0ZS4KCiAgICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBoYXZlIF9fY2FsbF9fIG1ldGhvZHMgaWRlbnRpY2FsIGluIHNpZ25hdHVyZSB0bwogICAgY29tcGlsZTsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBpZiB0aGUgaW5zdGFuY2UgY29tcGlsZXMgcHJvZ3JhbSB0ZXh0CiAgICBjb250YWluaW5nIGEgX19mdXR1cmVfXyBzdGF0ZW1lbnQsIHRoZSBpbnN0YW5jZSAncmVtZW1iZXJzJyBhbmQgY29tcGlsZXMgYWxsCiAgICBzdWJzZXF1ZW50IHByb2dyYW0gdGV4dHMgd2l0aCB0aGUgc3RhdGVtZW50IGluIGZvcmNlLgoKICAgIElmIHRoZSBzb3VyY2UgaXMgZGV0ZXJtaW5lZCB0byBiZSBpbmNvbXBsZXRlLCB3aWxsIHN1cHByZXNzIHRoZSBTeW50YXhFcnJvcgogICAgYW5kIHJldHVybiBgYE5vbmVgYC4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXygKICAgICAgICBzZWxmLAogICAgICAgICosCiAgICAgICAgcmV0dXJuX21vZGU6IFJldHVybk1vZGUgPSAibGFzdF9leHByIiwKICAgICAgICBxdWlldF90cmFpbGluZ19zZW1pY29sb246IGJvb2wgPSBUcnVlLAogICAgICAgIGZsYWdzOiBpbnQgPSAweDAsCiAgICApIC0+IE5vbmU6CiAgICAgICAgc2VsZi5jb21waWxlciA9IF9Db21waWxlKAogICAgICAgICAgICByZXR1cm5fbW9kZT1yZXR1cm5fbW9kZSwKICAgICAgICAgICAgcXVpZXRfdHJhaWxpbmdfc2VtaWNvbG9uPXF1aWV0X3RyYWlsaW5nX3NlbWljb2xvbiwKICAgICAgICAgICAgZmxhZ3M9ZmxhZ3MsCiAgICAgICAgKQoKICAgIGRlZiBfX2NhbGxfXyggICMgdHlwZTogaWdub3JlW292ZXJyaWRlXQogICAgICAgIHNlbGYsIHNvdXJjZTogc3RyLCBmaWxlbmFtZTogc3RyID0gIjxjb25zb2xlPiIsIHN5bWJvbDogc3RyID0gInNpbmdsZSIKICAgICkgLT4gQ29kZVJ1bm5lciB8IE5vbmU6CiAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19jYWxsX18oc291cmNlLCBmaWxlbmFtZSwgc3ltYm9sKSAgIyB0eXBlOiBpZ25vcmVbcmV0dXJuLXZhbHVlXQoKCkNvbnNvbGVGdXR1cmVTdGF0dXMgPSBMaXRlcmFsWyJpbmNvbXBsZXRlIiwgInN5bnRheC1lcnJvciIsICJjb21wbGV0ZSJdCklOQ09NUExFVEU6IENvbnNvbGVGdXR1cmVTdGF0dXMgPSAiaW5jb21wbGV0ZSIKU1lOVEFYX0VSUk9SOiBDb25zb2xlRnV0dXJlU3RhdHVzID0gInN5bnRheC1lcnJvciIKQ09NUExFVEU6IENvbnNvbGVGdXR1cmVTdGF0dXMgPSAiY29tcGxldGUiCgoKY2xhc3MgQ29uc29sZUZ1dHVyZShGdXR1cmVbQW55XSk6CiAgICAiIiJBIGZ1dHVyZSB3aXRoIGV4dHJhIGZpZWxkcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgZm9yIDpweTpjbGFzczpgQ29uc29sZWAgYXBpcy4iIiIKCiAgICBzeW50YXhfY2hlY2s6IENvbnNvbGVGdXR1cmVTdGF0dXMKICAgICIiIgogICAgVGhlIHN0YXR1cyBvZiB0aGUgZnV0dXJlLiBUaGUgdmFsdWVzIG1lYW4gdGhlIGZvbGxvd2luZzoKCiAgICA6J2luY29tcGxldGUnOiBJbnB1dCBpcyBpbmNvbXBsZXRlLiBUaGUgZnV0dXJlIGhhcyBhbHJlYWR5IGJlZW4gcmVzb2x2ZWQKICAgICAgICAgICAgICAgICB3aXRoIHJlc3VsdCBgYE5vbmVgYC4KCiAgICA6J3N5bnRheC1lcnJvcic6IElucHV0IGNvbnRhaW5lZCBhIHN5bnRheCBlcnJvci4gVGhlIGZ1dHVyZSBoYXMgYmVlbgogICAgICAgICAgICAgICAgICAgcmVqZWN0ZWQgd2l0aCBhIGBgU3ludGF4RXJyb3JgYC4KCiAgICA6J2NvbXBsZXRlJzogVGhlIGlucHV0IGNvbXBsZXRlIGFuZCBzeW50YWN0aWNhbGx5IGNvcnJlY3QgYW5kIGFzeW5jaHJvbm91cwogICAgICAgICAgICAgICBleGVjdXRpb24gaGFzIGJlZ3VuLiBXaGVuIHRoZSBleGVjdXRpb24gaXMgZG9uZSwgdGhlIEZ1dHVyZSB3aWxsCiAgICAgICAgICAgICAgIGJlIHJlc29sdmVkIHdpdGggdGhlIHJlc3VsdCBvciByZWplY3RlZCB3aXRoIGFuIGV4Y2VwdGlvbi4KICAgICIiIgoKICAgIGZvcm1hdHRlZF9lcnJvcjogc3RyIHwgTm9uZQogICAgIiIiCiAgICBJZiB0aGUgYGBGdXR1cmVgYCBpcyByZWplY3RlZCwgdGhpcyB3aWxsIGJlIGZpbGxlZCB3aXRoIGEgZm9ybWF0dGVkIHZlcnNpb24gb2YKICAgIHRoZSBjb2RlLiBUaGlzIGlzIGEgY29udmVuaWVuY2UgdGhhdCBzaW1wbGlmaWVzIGNvZGUgYW5kIGhlbHBzIHRvIGF2b2lkIGxhcmdlCiAgICBtZW1vcnkgbGVha3Mgd2hlbiB1c2luZyBmcm9tIEphdmFTY3JpcHQuCiAgICAiIiIKCiAgICBkZWYgX19pbml0X18oCiAgICAgICAgc2VsZiwKICAgICAgICBzeW50YXhfY2hlY2s6IENvbnNvbGVGdXR1cmVTdGF0dXMsCiAgICApOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYuc3ludGF4X2NoZWNrID0gc3ludGF4X2NoZWNrCiAgICAgICAgc2VsZi5mb3JtYXR0ZWRfZXJyb3IgPSBOb25lCgoKY2xhc3MgQ29uc29sZToKICAgICIiIkludGVyYWN0aXZlIFB5b2RpZGUgY29uc29sZQoKICAgIEFuIGludGVyYWN0aXZlIGNvbnNvbGUgYmFzZWQgb24gdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5CiAgICA6cHk6Y2xhc3M6YH5jb2RlLkludGVyYWN0aXZlQ29uc29sZWAgdGhhdCBtYW5hZ2VzIHN0cmVhbSByZWRpcmVjdGlvbnMgYW5kCiAgICBhc3luY2hyb25vdXMgZXhlY3V0aW9uIG9mIHRoZSBjb2RlLgoKICAgIFRoZSBzdHJlYW0gY2FsbGJhY2tzIGNhbiBiZSBtb2RpZmllZCBkaXJlY3RseSBieSBhc3NpZ25pbmcgdG8KICAgIDpweTphdHRyOmB+Q29uc29sZS5zdGRpbl9jYWxsYmFja2AgKGZvciBleGFtcGxlKSBhcyBsb25nIGFzCiAgICBgYHBlcnNpc3RlbnRfc3RyZWFtX3JlZGlyZWN0aW9uYGAgaXMgYGBGYWxzZWBgLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGdsb2JhbHMgOgoKICAgICAgICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgY29kZS4gRGVmYXVsdHMgdG8gYSBuZXcKICAgICAgICBlbXB0eSBkaWN0aW9uYXJ5LgoKICAgIHN0ZGluX2NhbGxiYWNrIDoKCiAgICAgICAgRnVuY3Rpb24gdG8gY2FsbCBhdCBlYWNoIHJlYWQgZnJvbSA6cHk6ZGF0YTpgc3lzLnN0ZGluYC4gRGVmYXVsdHMgdG8gOnB5OmRhdGE6YE5vbmVgLgoKICAgIHN0ZG91dF9jYWxsYmFjayA6CgogICAgICAgIEZ1bmN0aW9uIHRvIGNhbGwgYXQgZWFjaCB3cml0ZSB0byA6cHk6ZGF0YTpgc3lzLnN0ZG91dGAuIERlZmF1bHRzIHRvIDpweTpkYXRhOmBOb25lYC4KCiAgICBzdGRlcnJfY2FsbGJhY2sgOgoKICAgICAgICBGdW5jdGlvbiB0byBjYWxsIGF0IGVhY2ggd3JpdGUgdG8gOnB5OmRhdGE6YHN5cy5zdGRlcnJgLiBEZWZhdWx0cyB0byA6cHk6ZGF0YTpgTm9uZWAuCgogICAgcGVyc2lzdGVudF9zdHJlYW1fcmVkaXJlY3Rpb24gOgoKICAgICAgICBTaG91bGQgcmVkaXJlY3Rpb24gb2Ygc3RhbmRhcmQgc3RyZWFtcyBiZSBrZXB0IGJldHdlZW4gY2FsbHMgdG8KICAgICAgICA6cHk6bWV0aDpgfkNvbnNvbGUucnVuY29kZWA/IERlZmF1bHRzIHRvIDpweTpkYXRhOmBGYWxzZWAuCgogICAgZmlsZW5hbWUgOgoKICAgICAgICBUaGUgZmlsZSBuYW1lIHRvIHJlcG9ydCBpbiBlcnJvciBtZXNzYWdlcy4gRGVmYXVsdHMgdG8gYGAiPGNvbnNvbGU+ImBgLgogICAgIiIiCgogICAgZ2xvYmFsczogZGljdFtzdHIsIEFueV0KICAgICIiIlRoZSBuYW1lc3BhY2UgdXNlZCBhcyB0aGUgZ2xvYmFscyIiIgoKICAgIHN0ZGluX2NhbGxiYWNrOiBDYWxsYWJsZVtbaW50XSwgc3RyXSB8IE5vbmUKICAgICIiIlRoZSBmdW5jdGlvbiB0byBjYWxsIGF0IGVhY2ggcmVhZCBmcm9tIDpweTpkYXRhOmBzeXMuc3RkaW5gIiIiCgogICAgc3Rkb3V0X2NhbGxiYWNrOiBDYWxsYWJsZVtbc3RyXSwgTm9uZV0gfCBOb25lCiAgICAiIiJGdW5jdGlvbiB0byBjYWxsIGF0IGVhY2ggd3JpdGUgdG8gOnB5OmRhdGE6YHN5cy5zdGRvdXRgLiIiIgoKICAgIHN0ZGVycl9jYWxsYmFjazogQ2FsbGFibGVbW3N0cl0sIE5vbmVdIHwgTm9uZQogICAgIiIiRnVuY3Rpb24gdG8gY2FsbCBhdCBlYWNoIHdyaXRlIHRvIDpweTpkYXRhOmBzeXMuc3RkZXJyYC4iIiIKCiAgICBidWZmZXI6IGxpc3Rbc3RyXQogICAgIiIiVGhlIGxpc3Qgb2YgbGluZXMgb2YgY29kZSB0aGF0IGhhdmUgYmVlbiB0aGUgYXJndW1lbnQgdG8KICAgIDpweTptZXRoOmB+Q29uc29sZS5wdXNoYC4KCiAgICBUaGlzIGlzIGVtcHRpZWQgd2hlbmV2ZXIgdGhlIGNvZGUgaXMgZXhlY3V0ZWQuCiAgICAiIiIKCiAgICBjb21wbGV0ZXJfd29yZF9icmVha19jaGFyYWN0ZXJzOiBzdHIKICAgICIiIlRoZSBzZXQgb2YgY2hhcmFjdGVycyBjb25zaWRlcmVkIGJ5IDpweTptZXRoOmB+Q29uc29sZS5jb21wbGV0ZWAgdG8gYmUgd29yZCBicmVha3MuIiIiCgogICAgZGVmIF9faW5pdF9fKAogICAgICAgIHNlbGYsCiAgICAgICAgZ2xvYmFsczogZGljdFtzdHIsIEFueV0gfCBOb25lID0gTm9uZSwKICAgICAgICAqLAogICAgICAgIHN0ZGluX2NhbGxiYWNrOiBDYWxsYWJsZVtbaW50XSwgc3RyXSB8IE5vbmUgPSBOb25lLAogICAgICAgIHN0ZG91dF9jYWxsYmFjazogQ2FsbGFibGVbW3N0cl0sIE5vbmVdIHwgTm9uZSA9IE5vbmUsCiAgICAgICAgc3RkZXJyX2NhbGxiYWNrOiBDYWxsYWJsZVtbc3RyXSwgTm9uZV0gfCBOb25lID0gTm9uZSwKICAgICAgICBwZXJzaXN0ZW50X3N0cmVhbV9yZWRpcmVjdGlvbjogYm9vbCA9IEZhbHNlLAogICAgICAgIGZpbGVuYW1lOiBzdHIgPSAiPGNvbnNvbGU+IiwKICAgICkgLT4gTm9uZToKICAgICAgICBpZiBnbG9iYWxzIGlzIE5vbmU6CiAgICAgICAgICAgIGdsb2JhbHMgPSB7Il9fbmFtZV9fIjogIl9fY29uc29sZV9fIiwgIl9fZG9jX18iOiBOb25lfQogICAgICAgIHNlbGYuZ2xvYmFscyA9IGdsb2JhbHMKICAgICAgICBzZWxmLl9zdGRvdXQgPSBOb25lCiAgICAgICAgc2VsZi5fc3RkZXJyID0gTm9uZQogICAgICAgIHNlbGYuc3RkaW5fY2FsbGJhY2sgPSBzdGRpbl9jYWxsYmFjawogICAgICAgIHNlbGYuc3Rkb3V0X2NhbGxiYWNrID0gc3Rkb3V0X2NhbGxiYWNrCiAgICAgICAgc2VsZi5zdGRlcnJfY2FsbGJhY2sgPSBzdGRlcnJfY2FsbGJhY2sKICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKICAgICAgICBzZWxmLmJ1ZmZlciA9IFtdCiAgICAgICAgc2VsZi5fbG9jayA9IGFzeW5jaW8uTG9jaygpCiAgICAgICAgc2VsZi5fc3RyZWFtc19yZWRpcmVjdGVkID0gRmFsc2UKICAgICAgICBzZWxmLl9zdHJlYW1fZ2VuZXJhdG9yOiBHZW5lcmF0b3JbCiAgICAgICAgICAgIE5vbmUsIE5vbmUsIE5vbmUKICAgICAgICBdIHwgTm9uZSA9IE5vbmUgICMgdHJhY2sgcGVyc2lzdGVudCBzdHJlYW0gcmVkaXJlY3Rpb24KICAgICAgICBpZiBwZXJzaXN0ZW50X3N0cmVhbV9yZWRpcmVjdGlvbjoKICAgICAgICAgICAgc2VsZi5wZXJzaXN0ZW50X3JlZGlyZWN0X3N0cmVhbXMoKQogICAgICAgIHNlbGYuX2NvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcihzZWxmLmdsb2JhbHMpCiAgICAgICAgIyBhbGwgbm9uYWxwaGFudW1zIGV4Y2VwdCAnLicKICAgICAgICAjIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vYmxvYi9hNDI1OGU4Y2Q3NzZiYTY1NWNjNTRiYTU0ZWFlZmZlZGRiMGEyNjdjL01vZHVsZXMvcmVhZGxpbmUuYyNMMTIxMQogICAgICAgIHNlbGYuY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVycyA9ICgKICAgICAgICAgICAgIiIiIFx0XG5gfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsPD4vPyIiIgogICAgICAgICkKICAgICAgICBzZWxmLl9jb21waWxlID0gX0NvbW1hbmRDb21waWxlcihmbGFncz1hc3QuUHlDRl9BTExPV19UT1BfTEVWRUxfQVdBSVQpCgogICAgZGVmIHBlcnNpc3RlbnRfcmVkaXJlY3Rfc3RyZWFtcyhzZWxmKSAtPiBOb25lOgogICAgICAgICIiIlJlZGlyZWN0IDpweTpkYXRhOmB+c3lzLnN0ZGluYC86cHk6ZGF0YTpgfnN5cy5zdGRvdXRgLzpweTpkYXRhOmB+c3lzLnN0ZG91dGAgcGVyc2lzdGVudGx5IiIiCiAgICAgICAgaWYgc2VsZi5fc3RyZWFtX2dlbmVyYXRvcjoKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgc2VsZi5fc3RyZWFtX2dlbmVyYXRvciA9IHNlbGYuX3N0ZHN0cmVhbXNfcmVkaXJlY3Rpb25zX2lubmVyKCkKICAgICAgICBhc3NlcnQgc2VsZi5fc3RyZWFtX2dlbmVyYXRvciBpcyBub3QgTm9uZQogICAgICAgIG5leHQoc2VsZi5fc3RyZWFtX2dlbmVyYXRvcikgICMgdHJpZ2dlciBzdHJlYW0gcmVkaXJlY3Rpb24KICAgICAgICAjIHN0cmVhbXMgd2lsbCBiZSByZXZlcnRlZCB0byBub3JtYWwgd2hlbiBzZWxmLl9zdHJlYW1fZ2VuZXJhdG9yIGlzIGRlc3Ryb3llZC4KCiAgICBkZWYgcGVyc2lzdGVudF9yZXN0b3JlX3N0cmVhbXMoc2VsZikgLT4gTm9uZToKICAgICAgICAiIiJSZXN0b3JlIDpweTpkYXRhOmB+c3lzLnN0ZGluYC86cHk6ZGF0YTpgfnN5cy5zdGRvdXRgLzpweTpkYXRhOmB+c3lzLnN0ZG91dGAgaWYgdGhleSBoYXZlIGJlZW4gcGVyc2lzdGVudGx5IHJlZGlyZWN0ZWQiIiIKICAgICAgICAjIGFsbG93aW5nIF9zdHJlYW1fZ2VuZXJhdG9yIHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkIHJlc3RvcmVzIHRoZSBzdHJlYW1zCiAgICAgICAgc2VsZi5fc3RyZWFtX2dlbmVyYXRvciA9IE5vbmUKCiAgICBAY29udGV4dG1hbmFnZXIKICAgIGRlZiByZWRpcmVjdF9zdHJlYW1zKHNlbGYpIC0+IEdlbmVyYXRvcltOb25lLCBOb25lLCBOb25lXToKICAgICAgICAiIiJBIGNvbnRleHQgbWFuYWdlciB0byByZWRpcmVjdCBzdGFuZGFyZCBzdHJlYW1zLgoKICAgICAgICBUaGlzIHN1cHBvcnRzIG5lc3RpbmcuIiIiCiAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9zdGRzdHJlYW1zX3JlZGlyZWN0aW9uc19pbm5lcigpCgogICAgZGVmIF9zdGRzdHJlYW1zX3JlZGlyZWN0aW9uc19pbm5lcihzZWxmKSAtPiBHZW5lcmF0b3JbTm9uZSwgTm9uZSwgTm9uZV06CiAgICAgICAgIiIiVGhpcyBpcyB0aGUgZ2VuZXJhdG9yIHdoaWNoIGltcGxlbWVudHMgcmVkaXJlY3Rfc3RyZWFtcyBhbmQgdGhlIHN0ZHN0cmVhbXNfcmVkaXJlY3Rpb25zIiIiCiAgICAgICAgIyBhbHJlYWR5IHJlZGlyZWN0ZWQ/CiAgICAgICAgaWYgc2VsZi5fc3RyZWFtc19yZWRpcmVjdGVkOgogICAgICAgICAgICB5aWVsZAogICAgICAgICAgICByZXR1cm4KICAgICAgICByZWRpcmVjdHM6IGxpc3RbQW55XSA9IFtdCiAgICAgICAgaWYgc2VsZi5zdGRpbl9jYWxsYmFjazoKICAgICAgICAgICAgc3RkaW5fbmFtZSA9IGdldGF0dHIoc3lzLnN0ZGluLCAibmFtZSIsICI8c3RkaW4+IikKICAgICAgICAgICAgc3RkaW5fc3RyZWFtID0gX1JlYWRTdHJlYW0oc2VsZi5zdGRpbl9jYWxsYmFjaywgbmFtZT1zdGRpbl9uYW1lKQogICAgICAgICAgICByZWRpcmVjdHMuYXBwZW5kKHJlZGlyZWN0X3N0ZGluKHN0ZGluX3N0cmVhbSkpCiAgICAgICAgaWYgc2VsZi5zdGRvdXRfY2FsbGJhY2s6CiAgICAgICAgICAgIHN0ZG91dF9uYW1lID0gZ2V0YXR0cihzeXMuc3Rkb3V0LCAibmFtZSIsICI8c3Rkb3V0PiIpCiAgICAgICAgICAgIHN0ZG91dF9zdHJlYW0gPSBfV3JpdGVTdHJlYW0oc2VsZi5zdGRvdXRfY2FsbGJhY2ssIG5hbWU9c3Rkb3V0X25hbWUpCiAgICAgICAgICAgIHJlZGlyZWN0cy5hcHBlbmQocmVkaXJlY3Rfc3Rkb3V0KHN0ZG91dF9zdHJlYW0pKQogICAgICAgIGlmIHNlbGYuc3RkZXJyX2NhbGxiYWNrOgogICAgICAgICAgICBzdGRlcnJfbmFtZSA9IGdldGF0dHIoc3lzLnN0ZGVyciwgIm5hbWUiLCAiPHN0ZGVycj4iKQogICAgICAgICAgICBzdGRlcnJfc3RyZWFtID0gX1dyaXRlU3RyZWFtKHNlbGYuc3RkZXJyX2NhbGxiYWNrLCBuYW1lPXN0ZGVycl9uYW1lKQogICAgICAgICAgICByZWRpcmVjdHMuYXBwZW5kKHJlZGlyZWN0X3N0ZGVycihzdGRlcnJfc3RyZWFtKSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfcmVkaXJlY3RlZCA9IFRydWUKICAgICAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKICAgICAgICAgICAgICAgIGZvciByZWRpcmVjdCBpbiByZWRpcmVjdHM6CiAgICAgICAgICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChyZWRpcmVjdCkKICAgICAgICAgICAgICAgIHlpZWxkCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgc2VsZi5fc3RyZWFtc19yZWRpcmVjdGVkID0gRmFsc2UKCiAgICBkZWYgcnVuc291cmNlKHNlbGYsIHNvdXJjZTogc3RyLCBmaWxlbmFtZTogc3RyID0gIjxjb25zb2xlPiIpIC0+IENvbnNvbGVGdXR1cmU6CiAgICAgICAgIiIiQ29tcGlsZSBhbmQgcnVuIHNvdXJjZSBjb2RlIGluIHRoZSBpbnRlcnByZXRlci4iIiIKICAgICAgICByZXM6IENvbnNvbGVGdXR1cmUgfCBOb25lCgogICAgICAgIHRyeToKICAgICAgICAgICAgY29kZSA9IHNlbGYuX2NvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgInNpbmdsZSIpCiAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBTeW50YXhFcnJvciwgVmFsdWVFcnJvcikgYXMgZToKICAgICAgICAgICAgIyBDYXNlIDEKICAgICAgICAgICAgaWYgZS5fX3RyYWNlYmFja19fOgogICAgICAgICAgICAgICAgdHJhY2ViYWNrLmNsZWFyX2ZyYW1lcyhlLl9fdHJhY2ViYWNrX18pCiAgICAgICAgICAgIHJlcyA9IENvbnNvbGVGdXR1cmUoU1lOVEFYX0VSUk9SKQogICAgICAgICAgICByZXMuc2V0X2V4Y2VwdGlvbihlKQogICAgICAgICAgICByZXMuZm9ybWF0dGVkX2Vycm9yID0gc2VsZi5mb3JtYXRzeW50YXhlcnJvcihlKQogICAgICAgICAgICByZXR1cm4gcmVzCgogICAgICAgIGlmIGNvZGUgaXMgTm9uZToKICAgICAgICAgICAgcmVzID0gQ29uc29sZUZ1dHVyZShJTkNPTVBMRVRFKQogICAgICAgICAgICByZXMuc2V0X3Jlc3VsdChOb25lKQogICAgICAgICAgICByZXR1cm4gcmVzCgogICAgICAgIHJlcyA9IENvbnNvbGVGdXR1cmUoQ09NUExFVEUpCgogICAgICAgIGRlZiBkb25lX2NiKGZ1dDogYXN5bmNpby5UYXNrW0FueV0pIC0+IE5vbmU6CiAgICAgICAgICAgIG5vbmxvY2FsIHJlcwogICAgICAgICAgICBhc3NlcnQgcmVzIGlzIG5vdCBOb25lCiAgICAgICAgICAgIGV4YyA9IGZ1dC5leGNlcHRpb24oKQogICAgICAgICAgICBpZiBleGM6CiAgICAgICAgICAgICAgICByZXMuZm9ybWF0dGVkX2Vycm9yID0gc2VsZi5mb3JtYXR0cmFjZWJhY2soZXhjKQogICAgICAgICAgICAgICAgcmVzLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICAgICAgICAgZXhjID0gTm9uZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmVzLnNldF9yZXN1bHQoZnV0LnJlc3VsdCgpKQogICAgICAgICAgICByZXMgPSBOb25lCgogICAgICAgIGVuc3VyZV9mdXR1cmUoc2VsZi5ydW5jb2RlKHNvdXJjZSwgY29kZSkpLmFkZF9kb25lX2NhbGxiYWNrKGRvbmVfY2IpCiAgICAgICAgcmV0dXJuIHJlcwoKICAgIGFzeW5jIGRlZiBydW5jb2RlKHNlbGYsIHNvdXJjZTogc3RyLCBjb2RlOiBDb2RlUnVubmVyKSAtPiBBbnk6CiAgICAgICAgIiIiRXhlY3V0ZSBhIGNvZGUgb2JqZWN0IGFuZCByZXR1cm4gdGhlIHJlc3VsdC4iIiIKICAgICAgICBhc3luYyB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgIHdpdGggc2VsZi5yZWRpcmVjdF9zdHJlYW1zKCk6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNvZGUucnVuX2FzeW5jKHNlbGYuZ2xvYmFscykKICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCgogICAgZGVmIGZvcm1hdHN5bnRheGVycm9yKHNlbGYsIGU6IEV4Y2VwdGlvbikgLT4gc3RyOgogICAgICAgICIiIkZvcm1hdCB0aGUgc3ludGF4IGVycm9yIHRoYXQganVzdCBvY2N1cnJlZC4KCiAgICAgICAgVGhpcyBkb2Vzbid0IGluY2x1ZGUgYSBzdGFjayB0cmFjZSBiZWNhdXNlIHRoZXJlIGlzbid0IG9uZS4gVGhlIGFjdHVhbAogICAgICAgIGVycm9yIG9iamVjdCBpcyBzdG9yZWQgaW50byA6cHk6ZGF0YTpgc3lzLmxhc3RfdmFsdWVgLgogICAgICAgICIiIgogICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0eXBlKGUpCiAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSBlCiAgICAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gTm9uZQogICAgICAgIHJldHVybiAiIi5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZShlKSwgZSkpCgogICAgZGVmIG51bV9mcmFtZXNfdG9fa2VlcChzZWxmLCB0YjogVHJhY2ViYWNrVHlwZSB8IE5vbmUpIC0+IGludDoKICAgICAgICBrZWVwX2ZyYW1lcyA9IEZhbHNlCiAgICAgICAga2VwdF9mcmFtZXMgPSAwCiAgICAgICAgIyBUcnkgdG8gdHJpbSBvdXQgc3RhY2sgZnJhbWVzIGluc2lkZSBvdXIgY29kZQogICAgICAgIGZvciBmcmFtZSwgXyBpbiB0cmFjZWJhY2sud2Fsa190Yih0Yik6CiAgICAgICAgICAgIGtlZXBfZnJhbWVzID0ga2VlcF9mcmFtZXMgb3IgZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lID09ICI8Y29uc29sZT4iCiAgICAgICAgICAgIGtlZXBfZnJhbWVzID0ga2VlcF9mcmFtZXMgb3IgZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lID09ICI8ZXhlYz4iCiAgICAgICAgICAgIGlmIGtlZXBfZnJhbWVzOgogICAgICAgICAgICAgICAga2VwdF9mcmFtZXMgKz0gMQogICAgICAgIHJldHVybiBrZXB0X2ZyYW1lcwoKICAgIGRlZiBmb3JtYXR0cmFjZWJhY2soc2VsZiwgZTogQmFzZUV4Y2VwdGlvbikgLT4gc3RyOgogICAgICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHRoYXQganVzdCBvY2N1cnJlZC4KCiAgICAgICAgVGhlIGFjdHVhbCBlcnJvciBvYmplY3QgaXMgc3RvcmVkIGludG8gOnB5OmRhdGE6YHN5cy5sYXN0X3ZhbHVlYC4KICAgICAgICAiIiIKICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZShlKQogICAgICAgIHN5cy5sYXN0X3ZhbHVlID0gZQogICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IGUuX190cmFjZWJhY2tfXwogICAgICAgIG5mcmFtZXMgPSBzZWxmLm51bV9mcmFtZXNfdG9fa2VlcChlLl9fdHJhY2ViYWNrX18pCiAgICAgICAgcmV0dXJuICIiLmpvaW4oCiAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKHR5cGUoZSksIGUsIGUuX190cmFjZWJhY2tfXywgLW5mcmFtZXMpCiAgICAgICAgKQoKICAgIGRlZiBwdXNoKHNlbGYsIGxpbmU6IHN0cikgLT4gQ29uc29sZUZ1dHVyZToKICAgICAgICAiIiJQdXNoIGEgbGluZSB0byB0aGUgaW50ZXJwcmV0ZXIuCgogICAgICAgIFRoZSBsaW5lIHNob3VsZCBub3QgaGF2ZSBhIHRyYWlsaW5nIG5ld2xpbmU7IGl0IG1heSBoYXZlIGludGVybmFsCiAgICAgICAgbmV3bGluZXMuICBUaGUgbGluZSBpcyBhcHBlbmRlZCB0byBhIGJ1ZmZlciBhbmQgdGhlIGludGVycHJldGVyJ3MKICAgICAgICA6cHk6bWV0aDpgfkNvbnNvbGUucnVuc291cmNlYCBtZXRob2QgaXMgY2FsbGVkIHdpdGggdGhlIGNvbmNhdGVuYXRlZCBjb250ZW50cyBvZiB0aGUKICAgICAgICBidWZmZXIgYXMgc291cmNlLiAgSWYgdGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgY29tbWFuZCB3YXMgZXhlY3V0ZWQgb3IKICAgICAgICBpbnZhbGlkLCB0aGUgYnVmZmVyIGlzIHJlc2V0OyBvdGhlcndpc2UsIHRoZSBjb21tYW5kIGlzIGluY29tcGxldGUsIGFuZAogICAgICAgIHRoZSBidWZmZXIgaXMgbGVmdCBhcyBpdCB3YXMgYWZ0ZXIgdGhlIGxpbmUgd2FzIGFwcGVuZGVkLgoKICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSByZXN1bHQgb2YgY2FsbGluZyA6cHk6bWV0aDpgfkNvbnNvbGUucnVuc291cmNlYCBvbiB0aGUgY3VycmVudCBidWZmZXIKICAgICAgICBjb250ZW50cy4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmJ1ZmZlci5hcHBlbmQobGluZSkKICAgICAgICBzb3VyY2UgPSAiXG4iLmpvaW4oc2VsZi5idWZmZXIpCiAgICAgICAgcmVzdWx0ID0gc2VsZi5ydW5zb3VyY2Uoc291cmNlLCBzZWxmLmZpbGVuYW1lKQogICAgICAgIGlmIHJlc3VsdC5zeW50YXhfY2hlY2sgIT0gSU5DT01QTEVURToKICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBbXQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgY29tcGxldGUoc2VsZiwgc291cmNlOiBzdHIpIC0+IHR1cGxlW2xpc3Rbc3RyXSwgaW50XToKICAgICAgICByIiIiVXNlIFB5dGhvbidzIDpweTptb2Q6YHJsY29tcGxldGVyYCB0byBjb21wbGV0ZSB0aGUgc291cmNlIHN0cmluZwogICAgICAgIHVzaW5nIHRoZSA6cHk6YXR0cjpgQ29uc29sZS5nbG9iYWxzYCBuYW1lc3BhY2UuCgogICAgICAgIEZpbmRzIHRoZSBsYXN0ICJ3b3JkIiBpbiB0aGUgc291cmNlIHN0cmluZyBhbmQgY29tcGxldGVzIGl0IHdpdGgKICAgICAgICBybGNvbXBsZXRlci4gV29yZCBicmVha3MgYXJlIGRldGVybWluZWQgYnkgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIGluCiAgICAgICAgOnB5OmF0dHI6YH5Db25zb2xlLmNvbXBsZXRlcl93b3JkX2JyZWFrX2NoYXJhY3RlcnNgLgoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIHNvdXJjZSA6CgogICAgICAgICAgICBUaGUgc291cmNlIHN0cmluZyB0byBjb21wbGV0ZSBhdCB0aGUgZW5kLgoKICAgICAgICBSZXR1cm5zCiAgICAgICAgLS0tLS0tLQogICAgICAgIGNvbXBsZXRpb25zIDogOnB5OmNsYXNzOmBsaXN0YFxbOnB5OmNsYXNzOmBzdHJgXQogICAgICAgICAgICBBIGxpc3Qgb2YgY29tcGxldGlvbiBzdHJpbmdzLgogICAgICAgIHN0YXJ0IDogOnB5OmNsYXNzOmBpbnRgCiAgICAgICAgICAgIFRoZSBpbmRleCB3aGVyZSBjb21wbGV0aW9uIHN0YXJ0cy4KCiAgICAgICAgRXhhbXBsZXMKICAgICAgICAtLS0tLS0tLQogICAgICAgID4+PiBzaGVsbCA9IENvbnNvbGUoKQogICAgICAgID4+PiBzaGVsbC5jb21wbGV0ZSgic3RyLmlzYSIpCiAgICAgICAgKFsnc3RyLmlzYWxudW0oJywgJ3N0ci5pc2FscGhhKCcsICdzdHIuaXNhc2NpaSgnXSwgMCkKICAgICAgICA+Pj4gc2hlbGwuY29tcGxldGUoImEgPSA1IDsgc3RyLmlzYSIpCiAgICAgICAgKFsnc3RyLmlzYWxudW0oJywgJ3N0ci5pc2FscGhhKCcsICdzdHIuaXNhc2NpaSgnXSwgOCkKICAgICAgICAiIiIKICAgICAgICBzdGFydCA9IG1heChtYXAoc291cmNlLnJmaW5kLCBzZWxmLmNvbXBsZXRlcl93b3JkX2JyZWFrX2NoYXJhY3RlcnMpKSArIDEKICAgICAgICBzb3VyY2UgPSBzb3VyY2Vbc3RhcnQ6XQogICAgICAgIGlmICIuIiBpbiBzb3VyY2U6CiAgICAgICAgICAgIGNvbXBsZXRpb25zID0gc2VsZi5fY29tcGxldGVyLmF0dHJfbWF0Y2hlcyhzb3VyY2UpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY29tcGxldGlvbnMgPSBzZWxmLl9jb21wbGV0ZXIuZ2xvYmFsX21hdGNoZXMoc291cmNlKQogICAgICAgIHJldHVybiBjb21wbGV0aW9ucywgc3RhcnQKCgpjbGFzcyBQeW9kaWRlQ29uc29sZShDb25zb2xlKToKICAgICIiIkEgc3ViY2xhc3Mgb2YgOnB5OmNsYXNzOmBDb25zb2xlYCB0aGF0IHVzZXMgOmpzOmZ1bmM6YHB5b2RpZGUubG9hZFBhY2thZ2VzRnJvbUltcG9ydHNgIGJlZm9yZSBydW5uaW5nIHRoZSBjb2RlLiIiIgoKICAgIGFzeW5jIGRlZiBydW5jb2RlKHNlbGYsIHNvdXJjZTogc3RyLCBjb2RlOiBDb2RlUnVubmVyKSAtPiBDb25zb2xlRnV0dXJlOgogICAgICAgICIiIkV4ZWN1dGUgYSBjb2RlIG9iamVjdC4KICAgICAgICBBbGwgZXhjZXB0aW9ucyBhcmUgY2F1Z2h0IGV4Y2VwdCBTeXN0ZW1FeGl0LCB3aGljaCBpcyByZXJhaXNlZC4KICAgICAgICBSZXR1cm5zCiAgICAgICAgLS0tLS0tLQogICAgICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZGVwZW5kZW50IHN1bSB0eXBlIHdpdGggdGhlIGZvbGxvd2luZyBwb3NzaWJpbGl0aWVzOgogICAgICAgICAgICAqIGAoInN1Y2Nlc3MiLCByZXN1bHQgOiBBbnkpYCAtLSB0aGUgY29kZSBleGVjdXRlZCBzdWNjZXNzZnVsbHkKICAgICAgICAgICAgKiBgKCJleGNlcHRpb24iLCBtZXNzYWdlIDogc3RyKWAgLS0gQW4gZXhjZXB0aW9uIG9jY3VycmVkLiBgbWVzc2FnZWAgaXMgdGhlCiAgICAgICAgICAgIHJlc3VsdCBvZiBjYWxsaW5nIDpweTptZXRoOmBDb25zb2xlLmZvcm1hdHRyYWNlYmFja2AuCiAgICAgICAgIiIiCiAgICAgICAgZnJvbSBweW9kaWRlX2pzIGltcG9ydCBsb2FkUGFja2FnZXNGcm9tSW1wb3J0cwoKICAgICAgICBhd2FpdCBsb2FkUGFja2FnZXNGcm9tSW1wb3J0cyhzb3VyY2UpCiAgICAgICAgcmV0dXJuIGF3YWl0IHN1cGVyKCkucnVuY29kZShzb3VyY2UsIGNvZGUpCgoKZGVmIHNob3J0ZW4oCiAgICB0ZXh0OiBzdHIsIGxpbWl0OiBpbnQgPSAxMDAwLCBzcGxpdDogaW50IHwgTm9uZSA9IE5vbmUsIHNlcGFyYXRvcjogc3RyID0gIi4uLiIKKSAtPiBzdHI6CiAgICAiIiJTaG9ydGVuIGBgdGV4dGBgIGlmIGl0IGlzIGxvbmdlciB0aGFuIGBgbGltaXRgYC4KCiAgICBJZiBgYGxlbih0ZXh0KSA8PSBsaW1pdGBgIHRoZW4gcmV0dXJuIGBgdGV4dGBgIHVuY2hhbmdlZC4KICAgIElmIGBgdGV4dGBgIGlzIGxvbmdlciB0aGFuIGBgbGltaXRgYCB0aGVuIHJldHVybiB0aGUgZmlyc3RzIGBgc3BsaXRgYAogICAgY2hhcmFjdGVycyBhbmQgdGhlIGxhc3QgYGBzcGxpdGBgIGNoYXJhY3RlcnMgc2VwYXJhdGVkIGJ5IGBgc2VwYXJhdG9yYGAuCiAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYGBzcGxpdGBgIGlzIGBsaW1pdCAvLyAyYC4KICAgIFZhbHVlcyBvZiBgYHNwbGl0YGAgbGFyZ2VyIHRoYW4gYGBsZW4odmFsdWUpIC8vIDJgYCB3aWxsIGhhdmUgdGhlIHNhbWUgZWZmZWN0IGFzCiAgICB3aGVuIGBgc3BsaXRgYCBpcyBgbGVuKHZhbHVlKSAvLyAyYC4KICAgIEEgdmFsdWUgZXJyb3IgaXMgcmFpc2VkIGlmIGBgbGltaXRgYCBpcyBsZXNzIHRoYW4gMi4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB0ZXh0IDoKICAgICAgICBUaGUgc3RyaW5nIHRvIHNob3J0ZW4gaWYgaXQgaXMgbG9uZ2VyIHRoYW4gYGBsaW1pdGBgLgoKICAgIGxpbWl0IDoKICAgICAgICBUaGUgaW50ZWdlciB0byBjb21wYXJlIGFnYWluc3QgdGhlIGxlbmd0aCBvZiBgYHRleHRgYC4gRGVmYXVsdHMgdG8gYGAxMDAwYGAuCgogICAgc3BsaXQgOgogICAgICAgIFRoZSBpbnRlZ2VyIG9mIHRoZSBzcGxpdCBzdHJpbmcgdG8gcmV0dXJuLiBEZWZhdWx0cyB0byBgYGxpbWl0IC8vIDJgYC4KCiAgICBzZXBhcmF0b3IgOgogICAgICAgIFRoZSBzdHJpbmcgb2YgdGhlIHNlcGFyYXRvciBzdHJpbmcuIERlZmF1bHRzIHRvIGBgIi4uLiJgYC4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICAgICAgSWYgYGB0ZXh0YGAgaXMgbG9uZ2VyIHRoYW4gYGBsaW1pdGBgLCByZXR1cm4gdGhlIHNob3J0ZW5lZCBzdHJpbmcsIG90aGVyd2lzZSByZXR1cm4gYGB0ZXh0YGAuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBweW9kaWRlLmNvbnNvbGUgaW1wb3J0IHNob3J0ZW4KICAgID4+PiBzZXAgPSAiXyIKICAgID4+PiBzaG9ydGVuKCJhYmNkZWZnIiwgbGltaXQ9NSwgc2VwYXJhdG9yPXNlcCkKICAgICdhYl9mZycKICAgID4+PiBzaG9ydGVuKCJhYmNkZWZnIiwgbGltaXQ9MTIsIHNlcGFyYXRvcj1zZXApCiAgICAnYWJjZGVmZycKICAgID4+PiBzaG9ydGVuKCJhYmNkZWZnIiwgbGltaXQ9Niwgc2VwYXJhdG9yPXNlcCkKICAgICdhYmNfZWZnJwogICAgPj4+IHNob3J0ZW4oImFiY2RlZmciLCBsaW1pdD02LCBzcGxpdD0xLCBzZXBhcmF0b3I9c2VwKQogICAgJ2FfZycKICAgICIiIgogICAgaWYgbGltaXQgPCAyOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImxpbWl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIuIikKICAgIGlmIHNwbGl0IGlzIE5vbmU6CiAgICAgICAgc3BsaXQgPSBsaW1pdCAvLyAyCiAgICBzcGxpdCA9IG1pbihzcGxpdCwgbGVuKHRleHQpIC8vIDIpCiAgICBpZiBsZW4odGV4dCkgPiBsaW1pdDoKICAgICAgICB0ZXh0ID0gZiJ7dGV4dFs6c3BsaXRdfXtzZXBhcmF0b3J9e3RleHRbLXNwbGl0Ol19IgogICAgcmV0dXJuIHRleHQKCgpkZWYgcmVwcl9zaG9ydGVuKAogICAgdmFsdWU6IEFueSwgbGltaXQ6IGludCA9IDEwMDAsIHNwbGl0OiBpbnQgfCBOb25lID0gTm9uZSwgc2VwYXJhdG9yOiBzdHIgPSAiLi4uIgopIC0+IHN0cjoKICAgICIiIkNvbXB1dGUgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBgYHZhbHVlYGAgYW5kIHNob3J0ZW4gaXQKICAgIGlmIG5lY2Vzc2FyeS4KCiAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBzaG9ydGVuKHJlcHIodmFsdWUpLCBsaW1pdCwgc3BsaXQsIHNlcGFyYXRvcilgYCwgYnV0CiAgICBhIHZhbHVlIGVycm9yIGlzIHJhaXNlZCBpZiBgYGxpbWl0YGAgaXMgbGVzcyB0aGFuIGBgNGBgLgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gcHlvZGlkZS5jb25zb2xlIGltcG9ydCByZXByX3Nob3J0ZW4KICAgID4+PiBzZXAgPSAiXyIKICAgID4+PiByZXByX3Nob3J0ZW4oImFiY2RlZmciLCBsaW1pdD04LCBzZXBhcmF0b3I9c2VwKQogICAgIidhYmNfZWZnJyIKICAgID4+PiByZXByX3Nob3J0ZW4oImFiY2RlZmciLCBsaW1pdD0xMiwgc2VwYXJhdG9yPXNlcCkKICAgICInYWJjZGVmZyciCiAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNCwgMTApOgogICAgLi4uICAgICByZXByX3Nob3J0ZW4oMTIzNDU2Nzg5LCBsaW1pdD1pLCBzZXBhcmF0b3I9c2VwKQogICAgJzEyXzg5JwogICAgJzEyXzg5JwogICAgJzEyM183ODknCiAgICAnMTIzXzc4OScKICAgICcxMjM0XzY3ODknCiAgICAnMTIzNDU2Nzg5JwogICAgIiIiCiAgICBpZiBsaW1pdCA8IDQ6CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibGltaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gNC4iKQogICAgdGV4dCA9IHJlcHIodmFsdWUpCiAgICByZXR1cm4gc2hvcnRlbih0ZXh0LCBsaW1pdD1saW1pdCwgc3BsaXQ9c3BsaXQsIHNlcGFyYXRvcj1zZXBhcmF0b3IpClBLAwQUAAAAAACnHqNWAAAAAAAAAAAAAAAADAAAAHB5b2RpZGUvZmZpL1BLAwQUAAAAAACoHqNWz0yqpEQDAABEAwAAEwAAAHB5b2RpZGUvX19pbml0X18ucHkjIFdoZW4gdGhlIHB5b2RpZGUgcGFja2FnZSBpcyBpbXBvcnRlZCwgYm90aCB0aGUganMgYW5kIHRoZSBweW9kaWRlX2pzIG1vZHVsZXMKIyB3aWxsIGJlIGF2YWlsYWJsZSB0byBpbXBvcnQgZnJvbS4gTm90IGFsbCBmdW5jdGlvbnMgaW4gcHlvZGlkZV9qcyB3aWxsIHdvcmsKIyB1bnRpbCBhZnRlciBweW9kaWRlIGlzIGZpcnN0IGltcG9ydGVkLCBpbXBvcnRlZCBmdW5jdGlvbnMgZnJvbSBweW9kaWRlX2pzCiMgc2hvdWxkIG5vdCBiZSB1c2VkIGF0IGltcG9ydCB0aW1lLiBJdCBpcyBmaW5lIHRvIHVzZSBqcyBmdW5jdGlvbnMgYXQgaW1wb3J0CiMgdGltZS4KIwojIEFsbCBwdXJlIFB5dGhvbiBjb2RlIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBqcyBvciBweW9kaWRlX2pzIHNob3VsZCBnbyBpbgojIHRoZSBfcHlvZGlkZSBwYWNrYWdlLgojCiMgVGhpcyBwYWNrYWdlIGlzIGltcG9ydGVkIGJ5IHRoZSB0ZXN0IHN1aXRlIGFzIHdlbGwsIGFuZCBjdXJyZW50bHkgd2UgZG9uJ3QgdXNlCiMgcHl0ZXN0IG1vY2tzIGZvciBqcyBvciBweW9kaWRlX2pzLCBzbyBtYWtlIHN1cmUgdG8gdGVzdCAiaWYgSU5fQlJPV1NFUiIgYmVmb3JlCiMgaW1wb3J0aW5nIGZyb20gdGhlc2UuCl9fdmVyc2lvbl9fID0gIjAuMjMuMiIKCl9fYWxsX18gPSBbIl9fdmVyc2lvbl9fIiwgImNvbnNvbGUiLCAiY29kZSIsICJmZmkiLCAiaHR0cCIsICJ3ZWJsb29wIl0KCmZyb20gLiBpbXBvcnQgX3N0YXRlICAjIG5vcWE6IEY0MDEKZnJvbSAud2VibG9vcCBpbXBvcnQgX2luaXRpYWxpemVfZXZlbnRfbG9vcAoKX2luaXRpYWxpemVfZXZlbnRfbG9vcCgpCmRlbCBfaW5pdGlhbGl6ZV9ldmVudF9sb29wClBLAwQUAAAAAACoHqNW7AvpPrwdAAC8HQAADwAAAHB5b2RpZGUvaHR0cC5weWltcG9ydCBqc29uCmZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCmZyb20gdHlwaW5nIGltcG9ydCBJTywgQW55Cgpmcm9tIC5fcGFja2FnZV9sb2FkZXIgaW1wb3J0IHVucGFja19idWZmZXIKZnJvbSAuZmZpIGltcG9ydCBJTl9CUk9XU0VSLCBKc0J1ZmZlciwgSnNFeGNlcHRpb24sIEpzRmV0Y2hSZXNwb25zZSwgdG9fanMKCmlmIElOX0JST1dTRVI6CiAgICBmcm9tIGpzIGltcG9ydCBPYmplY3QKCiAgICB0cnk6CiAgICAgICAgZnJvbSBqcyBpbXBvcnQgZmV0Y2ggYXMgX2pzZmV0Y2gKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICBwYXNzCiAgICB0cnk6CiAgICAgICAgZnJvbSBqcyBpbXBvcnQgWE1MSHR0cFJlcXVlc3QKICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICBwYXNzCgpfX2FsbF9fID0gWwogICAgIm9wZW5fdXJsIiwKICAgICJweWZldGNoIiwKICAgICJGZXRjaFJlc3BvbnNlIiwKXQoKCmRlZiBvcGVuX3VybCh1cmw6IHN0cikgLT4gU3RyaW5nSU86CiAgICAiIiJGZXRjaGVzIGEgZ2l2ZW4gVVJMIHN5bmNocm9ub3VzbHkuCgogICAgVGhlIGRvd25sb2FkIG9mIGJpbmFyeSBmaWxlcyBpcyBub3Qgc3VwcG9ydGVkLiBUbyBkb3dubG9hZCBiaW5hcnkKICAgIGZpbGVzIHVzZSA6ZnVuYzpgcHlvZGlkZS5odHRwLnB5ZmV0Y2hgIHdoaWNoIGlzIGFzeW5jaHJvbm91cy4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB1cmwgOgogICAgICAgVVJMIHRvIGZldGNoCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgICAgIFRoZSBjb250ZW50cyBvZiB0aGUgVVJMLgogICAgIiIiCgogICAgcmVxID0gWE1MSHR0cFJlcXVlc3QubmV3KCkKICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIEZhbHNlKQogICAgcmVxLnNlbmQoKQogICAgcmV0dXJuIFN0cmluZ0lPKHJlcS5yZXNwb25zZSkKCgpjbGFzcyBGZXRjaFJlc3BvbnNlOgogICAgIiIiQSB3cmFwcGVyIGZvciBhIEphdmFzY3JpcHQgZmV0Y2ggOmpzOmRhdGE6YFJlc3BvbnNlYC4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB1cmwKICAgICAgICBVUkwgdG8gZmV0Y2gKICAgIGpzX3Jlc3BvbnNlCiAgICAgICAgQSA6cHk6Y2xhc3M6YH5weW9kaWRlLmZmaS5Kc1Byb3h5YCBvZiB0aGUgZmV0Y2ggcmVzcG9uc2UKICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmw6IHN0ciwganNfcmVzcG9uc2U6IEpzRmV0Y2hSZXNwb25zZSk6CiAgICAgICAgc2VsZi5fdXJsID0gdXJsCiAgICAgICAgc2VsZi5qc19yZXNwb25zZSA9IGpzX3Jlc3BvbnNlCgogICAgQHByb3BlcnR5CiAgICBkZWYgYm9keV91c2VkKHNlbGYpIC0+IGJvb2w6CiAgICAgICAgIiIiSGFzIHRoZSByZXNwb25zZSBiZWVuIHVzZWQgeWV0PwoKICAgICAgICBJZiBzbywgYXR0ZW1wdGluZyB0byByZXRyaWV2ZSB0aGUgYm9keSBhZ2FpbiB3aWxsIHJhaXNlIGFuCiAgICAgICAgOnB5OmV4YzpgT1NFcnJvcmAuIFVzZSA6cHk6bWV0aDpgfkZldGNoUmVzcG9uc2UuY2xvbmVgIGZpcnN0IHRvIGF2b2lkIHRoaXMuCiAgICAgICAgU2VlIDpqczphdHRyOmBSZXNwb25zZS5ib2R5VXNlZGAuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuanNfcmVzcG9uc2UuYm9keVVzZWQKCiAgICBAcHJvcGVydHkKICAgIGRlZiBvayhzZWxmKSAtPiBib29sOgogICAgICAgICIiIldhcyB0aGUgcmVxdWVzdCBzdWNjZXNzZnVsPwoKICAgICAgICBTZWUgOmpzOmF0dHI6YFJlc3BvbnNlLm9rYC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5qc19yZXNwb25zZS5vawoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHJlZGlyZWN0ZWQoc2VsZikgLT4gYm9vbDoKICAgICAgICAiIiJXYXMgdGhlIHJlcXVlc3QgcmVkaXJlY3RlZD8KCiAgICAgICAgU2VlIDpqczphdHRyOmBSZXNwb25zZS5yZWRpcmVjdGVkYC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5qc19yZXNwb25zZS5yZWRpcmVjdGVkCgogICAgQHByb3BlcnR5CiAgICBkZWYgc3RhdHVzKHNlbGYpIC0+IGludDoKICAgICAgICAiIiJSZXNwb25zZSBzdGF0dXMgY29kZQoKICAgICAgICBTZWUgOmpzOmF0dHI6YFJlc3BvbnNlLnN0YXR1c2AuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuanNfcmVzcG9uc2Uuc3RhdHVzCgogICAgQHByb3BlcnR5CiAgICBkZWYgc3RhdHVzX3RleHQoc2VsZikgLT4gc3RyOgogICAgICAgICIiIlJlc3BvbnNlIHN0YXR1cyB0ZXh0CgogICAgICAgIFNlZSA6anM6YXR0cjpgUmVzcG9uc2Uuc3RhdHVzVGV4dGAuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuanNfcmVzcG9uc2Uuc3RhdHVzVGV4dAoKICAgIEBwcm9wZXJ0eQogICAgZGVmIHR5cGUoc2VsZikgLT4gc3RyOgogICAgICAgICIiIlRoZSB0eXBlIG9mIHRoZSByZXNwb25zZS4KCiAgICAgICAgU2VlIDpqczphdHRyOmBSZXNwb25zZS50eXBlYC4KICAgICAgICAiIiIKICAgICAgICByZXR1cm4gc2VsZi5qc19yZXNwb25zZS50eXBlCgogICAgQHByb3BlcnR5CiAgICBkZWYgdXJsKHNlbGYpIC0+IHN0cjoKICAgICAgICAiIiJUaGUgdXJsIG9mIHRoZSByZXNwb25zZS4KCiAgICAgICAgVGhlIHZhbHVlIG1heSBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgdXJsIHBhc3NlZCB0byBmZXRjaC4KICAgICAgICBTZWUgOmpzOmF0dHI6YFJlc3BvbnNlLnVybGAuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuanNfcmVzcG9uc2UudXJsCgogICAgZGVmIF9yYWlzZV9pZl9mYWlsZWQoc2VsZikgLT4gTm9uZToKICAgICAgICBpZiBzZWxmLmpzX3Jlc3BvbnNlLnN0YXR1cyA+PSA0MDA6CiAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoCiAgICAgICAgICAgICAgICBmIlJlcXVlc3QgZm9yIHtzZWxmLl91cmx9IGZhaWxlZCB3aXRoIHN0YXR1cyB7c2VsZi5zdGF0dXN9OiB7c2VsZi5zdGF0dXNfdGV4dH0iCiAgICAgICAgICAgICkKICAgICAgICBpZiBzZWxmLmpzX3Jlc3BvbnNlLmJvZHlVc2VkOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJSZXNwb25zZSBib2R5IGlzIGFscmVhZHkgdXNlZCIpCgogICAgZGVmIGNsb25lKHNlbGYpIC0+ICJGZXRjaFJlc3BvbnNlIjoKICAgICAgICAiIiJSZXR1cm4gYW4gaWRlbnRpY2FsIGNvcHkgb2YgdGhlIDpweTpjbGFzczpgRmV0Y2hSZXNwb25zZWAuCgogICAgICAgIFRoaXMgbWV0aG9kIGV4aXN0cyB0byBhbGxvdyBtdWx0aXBsZSB1c2VzIG9mIDpweTpjbGFzczpgRmV0Y2hSZXNwb25zZWAKICAgICAgICBvYmplY3RzLiBTZWUgOmpzOm1ldGg6YFJlc3BvbnNlLmNsb25lYC4KICAgICAgICAiIiIKICAgICAgICBpZiBzZWxmLmpzX3Jlc3BvbnNlLmJvZHlVc2VkOgogICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJSZXNwb25zZSBib2R5IGlzIGFscmVhZHkgdXNlZCIpCiAgICAgICAgcmV0dXJuIEZldGNoUmVzcG9uc2Uoc2VsZi5fdXJsLCBzZWxmLmpzX3Jlc3BvbnNlLmNsb25lKCkpCgogICAgYXN5bmMgZGVmIGJ1ZmZlcihzZWxmKSAtPiBKc0J1ZmZlcjoKICAgICAgICAiIiJSZXR1cm4gdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBKYXZhc2NyaXB0IDpqczpjbGFzczpgQXJyYXlCdWZmZXJgLgoKICAgICAgICBTZWUgOmpzOm1ldGg6YFJlc3BvbnNlLmFycmF5QnVmZmVyYC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9yYWlzZV9pZl9mYWlsZWQoKQogICAgICAgIHJldHVybiBhd2FpdCBzZWxmLmpzX3Jlc3BvbnNlLmFycmF5QnVmZmVyKCkKCiAgICBhc3luYyBkZWYgc3RyaW5nKHNlbGYpIC0+IHN0cjoKICAgICAgICAiIiJSZXR1cm4gdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBzdHJpbmciIiIKICAgICAgICBzZWxmLl9yYWlzZV9pZl9mYWlsZWQoKQogICAgICAgIHJldHVybiBhd2FpdCBzZWxmLmpzX3Jlc3BvbnNlLnRleHQoKQoKICAgIGFzeW5jIGRlZiBqc29uKHNlbGYsICoqa3dhcmdzOiBBbnkpIC0+IEFueToKICAgICAgICAiIiJUcmVhdCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIEpTT04gc3RyaW5nIGFuZCB1c2UKICAgICAgICA6cHk6ZnVuYzpganNvbi5sb2Fkc2AgdG8gcGFyc2UgaXQgaW50byBhIFB5dGhvbiBvYmplY3QuCgogICAgICAgIEFueSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIDpweTpmdW5jOmBqc29uLmxvYWRzYC4KICAgICAgICAiIiIKICAgICAgICBzZWxmLl9yYWlzZV9pZl9mYWlsZWQoKQogICAgICAgIHJldHVybiBqc29uLmxvYWRzKGF3YWl0IHNlbGYuc3RyaW5nKCksICoqa3dhcmdzKQoKICAgIGFzeW5jIGRlZiBtZW1vcnl2aWV3KHNlbGYpIC0+IG1lbW9yeXZpZXc6CiAgICAgICAgIiIiUmV0dXJuIHRoZSByZXNwb25zZSBib2R5IGFzIGEgOnB5OmNsYXNzOmBtZW1vcnl2aWV3YCBvYmplY3QiIiIKICAgICAgICBzZWxmLl9yYWlzZV9pZl9mYWlsZWQoKQogICAgICAgIHJldHVybiAoYXdhaXQgc2VsZi5idWZmZXIoKSkudG9fbWVtb3J5dmlldygpCgogICAgYXN5bmMgZGVmIF9pbnRvX2ZpbGUoc2VsZiwgZjogSU9bYnl0ZXNdIHwgSU9bc3RyXSkgLT4gTm9uZToKICAgICAgICAiIiJXcml0ZSB0aGUgZGF0YSBpbnRvIGFuIGVtcHR5IGZpbGUgd2l0aCBubyBjb3B5LgoKICAgICAgICBXYXJuaW5nOiBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gZiBpcyBhbiBlbXB0eSBmaWxlLCBvdGhlcndpc2UgaXQgbWF5CiAgICAgICAgb3ZlcndyaXRlIHRoZSBkYXRhIG9mIGYuCiAgICAgICAgIiIiCiAgICAgICAgYnVmID0gYXdhaXQgc2VsZi5idWZmZXIoKQogICAgICAgIGJ1Zi5faW50b19maWxlKGYpCgogICAgYXN5bmMgZGVmIF9jcmVhdGVfZmlsZShzZWxmLCBwYXRoOiBzdHIpIC0+IE5vbmU6CiAgICAgICAgIiIiVXNlcyB0aGUgZGF0YSB0byBiYWNrIGEgbmV3IGZpbGUgd2l0aG91dCBjb3B5aW5nIGl0LgoKICAgICAgICBUaGlzIG1ldGhvZCBhdm9pZHMgY29weWluZyB0aGUgZGF0YSB3aGVuIGNyZWF0aW5nIGEgbmV3IGZpbGUuIElmIHlvdQogICAgICAgIHdhbnQgdG8gd3JpdGUgdGhlIGRhdGEgaW50byBhbiBleGlzdGluZyBmaWxlLCB1c2UKCiAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICAgICAgYnVmID0gYXdhaXQgcmVzcC5idWZmZXIoKQogICAgICAgICAgICBidWYudG9fZmlsZShmaWxlKQoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIHBhdGggOiBzdHIKCiAgICAgICAgICAgIFRoZSBwYXRoIHRvIHRoZSBmaWxlIHRvIGNyZWF0ZS4gVGhlIGZpbGUgc2hvdWxkIG5vdCBleGlzdCBidXQKICAgICAgICAgICAgaXQgc2hvdWxkIGJlIGluIGEgZGlyZWN0b3J5IHRoYXQgZXhpc3RzLiBPdGhlcndpc2UsIHdpbGwgcmFpc2UKICAgICAgICAgICAgYW4gYGBPU0Vycm9yYGAKICAgICAgICAiIiIKICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIngiKSBhcyBmOgogICAgICAgICAgICBhd2FpdCBzZWxmLl9pbnRvX2ZpbGUoZikKCiAgICBhc3luYyBkZWYgYnl0ZXMoc2VsZikgLT4gYnl0ZXM6CiAgICAgICAgIiIiUmV0dXJuIHRoZSByZXNwb25zZSBib2R5IGFzIGEgYnl0ZXMgb2JqZWN0IiIiCiAgICAgICAgc2VsZi5fcmFpc2VfaWZfZmFpbGVkKCkKICAgICAgICByZXR1cm4gKGF3YWl0IHNlbGYuYnVmZmVyKCkpLnRvX2J5dGVzKCkKCiAgICBhc3luYyBkZWYgdW5wYWNrX2FyY2hpdmUoCiAgICAgICAgc2VsZiwgKiwgZXh0cmFjdF9kaXI6IHN0ciB8IE5vbmUgPSBOb25lLCBmb3JtYXQ6IHN0ciB8IE5vbmUgPSBOb25lCiAgICApIC0+IE5vbmU6CiAgICAgICAgIiIiVHJlYXQgdGhlIGRhdGEgYXMgYW4gYXJjaGl2ZSBhbmQgdW5wYWNrIGl0IGludG8gdGFyZ2V0IGRpcmVjdG9yeS4KCiAgICAgICAgQXNzdW1lcyB0aGF0IHRoZSBmaWxlIGlzIGFuIGFyY2hpdmUgaW4gYSBmb3JtYXQgdGhhdCA6cHk6bW9kOmBzaHV0aWxgIGhhcwogICAgICAgIGFuIHVucGFja2VyIGZvci4gVGhlIGFyZ3VtZW50cyBgYGV4dHJhY3RfZGlyYGAgYW5kIGBgZm9ybWF0YGAgYXJlIHBhc3NlZAogICAgICAgIGRpcmVjdGx5IG9uIHRvIDpweTpmdW5jOmBzaHV0aWwudW5wYWNrX2FyY2hpdmVgLgoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIGV4dHJhY3RfZGlyIDoKICAgICAgICAgICAgRGlyZWN0b3J5IHRvIGV4dHJhY3QgdGhlIGFyY2hpdmUgaW50by4gSWYgbm90IHByb3ZpZGVkLCB0aGUgY3VycmVudAogICAgICAgICAgICB3b3JraW5nIGRpcmVjdG9yeSBpcyB1c2VkLgoKICAgICAgICBmb3JtYXQgOgogICAgICAgICAgICBUaGUgYXJjaGl2ZSBmb3JtYXQ6IG9uZSBvZiBgYCJ6aXAiYGAsIGBgInRhciJgYCwgYGAiZ3p0YXIiYGAsCiAgICAgICAgICAgIGBgImJ6dGFyImBgLiBPciBhbnkgb3RoZXIgZm9ybWF0IHJlZ2lzdGVyZWQgd2l0aAogICAgICAgICAgICA6cHk6ZnVuYzpgc2h1dGlsLnJlZ2lzdGVyX3VucGFja19mb3JtYXRgLiBJZiBub3QgcHJvdmlkZWQsCiAgICAgICAgICAgIDpweTptZXRoOmB1bnBhY2tfYXJjaGl2ZWAgd2lsbCB1c2UgdGhlIGFyY2hpdmUgZmlsZSBuYW1lIGV4dGVuc2lvbiBhbmQKICAgICAgICAgICAgc2VlIGlmIGFuIHVucGFja2VyIHdhcyByZWdpc3RlcmVkIGZvciB0aGF0IGV4dGVuc2lvbi4gSW4gY2FzZSBub25lCiAgICAgICAgICAgIGlzIGZvdW5kLCBhIDpweTpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KICAgICAgICAiIiIKICAgICAgICBidWYgPSBhd2FpdCBzZWxmLmJ1ZmZlcigpCiAgICAgICAgZmlsZW5hbWUgPSBzZWxmLl91cmwucnNwbGl0KCIvIiwgLTEpWy0xXQogICAgICAgIHVucGFja19idWZmZXIoYnVmLCBmaWxlbmFtZT1maWxlbmFtZSwgZm9ybWF0PWZvcm1hdCwgZXh0cmFjdF9kaXI9ZXh0cmFjdF9kaXIpCgoKYXN5bmMgZGVmIHB5ZmV0Y2godXJsOiBzdHIsICoqa3dhcmdzOiBBbnkpIC0+IEZldGNoUmVzcG9uc2U6CiAgICByIiIiRmV0Y2ggdGhlIHVybCBhbmQgcmV0dXJuIHRoZSByZXNwb25zZS4KCiAgICBUaGlzIGZ1bmN0aW9ucyBwcm92aWRlcyBhIHNpbWlsYXIgQVBJIHRvIDpqczpmdW5jOmBmZXRjaGAgaG93ZXZlciBpdCBpcwogICAgZGVzaWduZWQgdG8gYmUgY29udmVuaWVudCB0byB1c2UgZnJvbSBQeXRob24uIFRoZQogICAgOmNsYXNzOmB+cHlvZGlkZS5odHRwLkZldGNoUmVzcG9uc2VgIGhhcyBtZXRob2RzIHdpdGggdGhlIG91dHB1dCB0eXBlcwogICAgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gUHl0aG9uIG9iamVjdHMuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgdXJsIDoKICAgICAgICBVUkwgdG8gZmV0Y2guCgogICAgXCpcKmt3YXJncyA6CiAgICAgICAga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCBhbG9uZyBhcyBgb3B0aW9uYWwgcGFyYW1ldGVycyB0byB0aGUgZmV0Y2ggQVBJCiAgICAgICAgPGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9mZXRjaCNvcHRpb25zPmBfLgogICAgIiIiCiAgICB0cnk6CiAgICAgICAgcmV0dXJuIEZldGNoUmVzcG9uc2UoCiAgICAgICAgICAgIHVybCwgYXdhaXQgX2pzZmV0Y2godXJsLCB0b19qcyhrd2FyZ3MsIGRpY3RfY29udmVydGVyPU9iamVjdC5mcm9tRW50cmllcykpCiAgICAgICAgKQogICAgZXhjZXB0IEpzRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgcmFpc2UgT1NFcnJvcihlLm1lc3NhZ2UpIGZyb20gTm9uZQpQSwMEFAAAAAAAqB6jVjmW0UZ2UQAAdlEAABIAAABweW9kaWRlL3dlYmxvb3AucHlpbXBvcnQgYXN5bmNpbwppbXBvcnQgY29udGV4dHZhcnMKaW1wb3J0IGluc3BlY3QKaW1wb3J0IHN5cwppbXBvcnQgdGltZQppbXBvcnQgdHJhY2ViYWNrCmZyb20gYXN5bmNpbyBpbXBvcnQgRnV0dXJlCmZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBBd2FpdGFibGUsIENhbGxhYmxlCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIFR5cGVWYXIsIG92ZXJsb2FkCgpmcm9tIC5mZmkgaW1wb3J0IElOX0JST1dTRVIsIGNyZWF0ZV9vbmNlX2NhbGxhYmxlCgppZiBJTl9CUk9XU0VSOgogICAgZnJvbSBqcyBpbXBvcnQgc2V0VGltZW91dAoKVCA9IFR5cGVWYXIoIlQiKQpTID0gVHlwZVZhcigiUyIpCgoKY2xhc3MgUHlvZGlkZUZ1dHVyZShGdXR1cmVbVF0pOgogICAgIiIiQSBmdXR1cmUgd2l0aCBleHRyYSBgYHRoZW5gYCwgYGBjYXRjaGBgLCBhbmQgYGBmaW5hbGx5X2BgIG1ldGhvZHMgYmFzZWQKICAgIG9uIHRoZSBKYXZhc2NyaXB0IHByb21pc2UgQVBJLiBgYFdlYmxvb3AuY3JlYXRlX2Z1dHVyZWBgIHJldHVybnMgdGhlc2Ugc28gaW4KICAgIHByYWN0aWNlIGFsbCBmdXR1cmVzIGVuY291bnRlcmVkIGluIFB5b2RpZGUgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mCiAgICBgYFB5b2RpZGVGdXR1cmVgYC4KICAgICIiIgoKICAgIEBvdmVybG9hZAogICAgZGVmIHRoZW4oCiAgICAgICAgc2VsZiwKICAgICAgICBvbmZ1bGZpbGxlZDogTm9uZSwKICAgICAgICBvbnJlamVjdGVkOiBDYWxsYWJsZVtbQmFzZUV4Y2VwdGlvbl0sIEF3YWl0YWJsZVtTXV0sCiAgICApIC0+ICJQeW9kaWRlRnV0dXJlW1NdIjoKICAgICAgICAuLi4KCiAgICBAb3ZlcmxvYWQKICAgIGRlZiB0aGVuKAogICAgICAgIHNlbGYsCiAgICAgICAgb25mdWxmaWxsZWQ6IE5vbmUsCiAgICAgICAgb25yZWplY3RlZDogQ2FsbGFibGVbW0Jhc2VFeGNlcHRpb25dLCBTXSwKICAgICkgLT4gIlB5b2RpZGVGdXR1cmVbU10iOgogICAgICAgIC4uLgoKICAgIEBvdmVybG9hZAogICAgZGVmIHRoZW4oCiAgICAgICAgc2VsZiwKICAgICAgICBvbmZ1bGZpbGxlZDogQ2FsbGFibGVbW1RdLCBBd2FpdGFibGVbU11dLAogICAgICAgIG9ucmVqZWN0ZWQ6IENhbGxhYmxlW1tCYXNlRXhjZXB0aW9uXSwgQXdhaXRhYmxlW1NdXSB8IE5vbmUgPSBOb25lLAogICAgKSAtPiAiUHlvZGlkZUZ1dHVyZVtTXSI6CiAgICAgICAgLi4uCgogICAgQG92ZXJsb2FkCiAgICBkZWYgdGhlbigKICAgICAgICBzZWxmLAogICAgICAgIG9uZnVsZmlsbGVkOiBDYWxsYWJsZVtbVF0sIFNdLAogICAgICAgIG9ucmVqZWN0ZWQ6IENhbGxhYmxlW1tCYXNlRXhjZXB0aW9uXSwgU10gfCBOb25lID0gTm9uZSwKICAgICkgLT4gIlB5b2RpZGVGdXR1cmVbU10iOgogICAgICAgIC4uLgoKICAgIGRlZiB0aGVuKAogICAgICAgIHNlbGYsCiAgICAgICAgb25mdWxmaWxsZWQ6IENhbGxhYmxlW1tUXSwgUyB8IEF3YWl0YWJsZVtTXV0gfCBOb25lLAogICAgICAgIG9ucmVqZWN0ZWQ6IENhbGxhYmxlW1tCYXNlRXhjZXB0aW9uXSwgUyB8IEF3YWl0YWJsZVtTXV0gfCBOb25lID0gTm9uZSwKICAgICkgLT4gIlB5b2RpZGVGdXR1cmVbU10iOgogICAgICAgICIiIldoZW4gdGhlIEZ1dHVyZSBpcyBkb25lLCBlaXRoZXIgZXhlY3V0ZSBvbmZ1bGZpbGxlZCB3aXRoIHRoZSByZXN1bHQKICAgICAgICBvciBleGVjdXRlIG9ucmVqZWN0ZWQgd2l0aCB0aGUgZXhjZXB0aW9uLgoKICAgICAgICBSZXR1cm5zIGEgbmV3IEZ1dHVyZSB3aGljaCB3aWxsIGJlIG1hcmtlZCBkb25lIHdoZW4gZWl0aGVyIHRoZQogICAgICAgIG9uZnVsZmlsbGVkIG9yIG9ucmVqZWN0ZWQgY2FsbGJhY2sgaXMgY29tcGxldGVkLiBJZiB0aGUgcmV0dXJuIHZhbHVlIG9mCiAgICAgICAgdGhlIGV4ZWN1dGVkIGNhbGxiYWNrIGlzIGF3YWl0YWJsZSBpdCB3aWxsIGJlIGF3YWl0ZWQgcmVwZWF0ZWRseSB1bnRpbCBhCiAgICAgICAgbm9uYXdhaXRhYmxlIHZhbHVlIGlzIHJlY2VpdmVkLiBUaGUgcmV0dXJuZWQgRnV0dXJlIHdpbGwgYmUgcmVzb2x2ZWQKICAgICAgICB3aXRoIHRoYXQgdmFsdWUuIElmIGFuIGVycm9yIGlzIHJhaXNlZCwgdGhlIHJldHVybmVkIEZ1dHVyZSB3aWxsIGJlCiAgICAgICAgcmVqZWN0ZWQgd2l0aCB0aGUgZXJyb3IuCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgb25mdWxmaWxsZWQ6CiAgICAgICAgICAgIEEgZnVuY3Rpb24gY2FsbGVkIGlmIHRoZSBGdXR1cmUgaXMgZnVsZmlsbGVkLiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzCiAgICAgICAgICAgIG9uZSBhcmd1bWVudCwgdGhlIGZ1bGZpbGxtZW50IHZhbHVlLgoKICAgICAgICBvbnJlamVjdGVkOgogICAgICAgICAgICBBIGZ1bmN0aW9uIGNhbGxlZCBpZiB0aGUgRnV0dXJlIGlzIHJlamVjdGVkLiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzCiAgICAgICAgICAgIG9uZSBhcmd1bWVudCwgdGhlIHJlamVjdGlvbiB2YWx1ZS4KCiAgICAgICAgUmV0dXJucwogICAgICAgIC0tLS0tLS0KICAgICAgICAgICAgQSBuZXcgZnV0dXJlIHRvIGJlIHJlc29sdmVkIHdoZW4gdGhlIG9yaWdpbmFsIGZ1dHVyZSBpcyBkb25lIGFuZCB0aGUKICAgICAgICAgICAgYXBwcm9wcmlhdGUgY2FsbGJhY2sgaXMgYWxzbyBkb25lLgogICAgICAgICIiIgogICAgICAgIHJlc3VsdDogUHlvZGlkZUZ1dHVyZVtTXSA9IFB5b2RpZGVGdXR1cmUoKQoKICAgICAgICBvbmZ1bGZpbGxlZF86IENhbGxhYmxlW1tUXSwgUyB8IEF3YWl0YWJsZVtTXV0KICAgICAgICBvbnJlamVjdGVkXzogQ2FsbGFibGVbW0Jhc2VFeGNlcHRpb25dLCBTIHwgQXdhaXRhYmxlW1NdXQogICAgICAgIGlmIG9uZnVsZmlsbGVkOgogICAgICAgICAgICBvbmZ1bGZpbGxlZF8gPSBvbmZ1bGZpbGxlZAogICAgICAgIGVsc2U6CgogICAgICAgICAgICBkZWYgb25mdWxmaWxsZWRfKHgpOgogICAgICAgICAgICAgICAgcmV0dXJuIHgKCiAgICAgICAgaWYgb25yZWplY3RlZDoKICAgICAgICAgICAgb25yZWplY3RlZF8gPSBvbnJlamVjdGVkCiAgICAgICAgZWxzZToKCiAgICAgICAgICAgIGRlZiBvbnJlamVjdGVkXyh4KToKICAgICAgICAgICAgICAgIHJhaXNlIHgKCiAgICAgICAgYXN5bmMgZGVmIGNhbGxiYWNrKGZ1dDogRnV0dXJlW1RdKSAtPiBOb25lOgogICAgICAgICAgICBlID0gZnV0LmV4Y2VwdGlvbigpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGlmIGU6CiAgICAgICAgICAgICAgICAgICAgciA9IG9ucmVqZWN0ZWRfKGUpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHIgPSBvbmZ1bGZpbGxlZF8oZnV0LnJlc3VsdCgpKQogICAgICAgICAgICAgICAgd2hpbGUgaW5zcGVjdC5pc2F3YWl0YWJsZShyKToKICAgICAgICAgICAgICAgICAgICByID0gYXdhaXQgcgogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIHJlc3VsdF9leGNlcHRpb246CiAgICAgICAgICAgICAgICByZXN1bHQuc2V0X2V4Y2VwdGlvbihyZXN1bHRfZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIHJlc3VsdC5zZXRfcmVzdWx0KHIpICAjIHR5cGU6aWdub3JlW2FyZy10eXBlXQoKICAgICAgICBkZWYgd3JhcHBlcihmdXQ6IEZ1dHVyZVtUXSkgLT4gTm9uZToKICAgICAgICAgICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKGNhbGxiYWNrKGZ1dCkpCgogICAgICAgIHNlbGYuYWRkX2RvbmVfY2FsbGJhY2sod3JhcHBlcikKICAgICAgICByZXR1cm4gcmVzdWx0CgogICAgQG92ZXJsb2FkCiAgICBkZWYgY2F0Y2goCiAgICAgICAgc2VsZiwgb25yZWplY3RlZDogQ2FsbGFibGVbW0Jhc2VFeGNlcHRpb25dLCBBd2FpdGFibGVbU11dCiAgICApIC0+ICJQeW9kaWRlRnV0dXJlW1NdIjoKICAgICAgICAuLi4KCiAgICBAb3ZlcmxvYWQKICAgIGRlZiBjYXRjaChzZWxmLCBvbnJlamVjdGVkOiBDYWxsYWJsZVtbQmFzZUV4Y2VwdGlvbl0sIFNdKSAtPiAiUHlvZGlkZUZ1dHVyZVtTXSI6CiAgICAgICAgLi4uCgogICAgZGVmIGNhdGNoKAogICAgICAgIHNlbGYsIG9ucmVqZWN0ZWQ6IENhbGxhYmxlW1tCYXNlRXhjZXB0aW9uXSwgb2JqZWN0XQogICAgKSAtPiAiUHlvZGlkZUZ1dHVyZVtBbnldIjoKICAgICAgICAiIiJFcXVpdmFsZW50IHRvIGBgdGhlbihOb25lLCBvbnJlamVjdGVkKWBgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYudGhlbihOb25lLCBvbnJlamVjdGVkKQoKICAgIGRlZiBmaW5hbGx5XyhzZWxmLCBvbmZpbmFsbHk6IENhbGxhYmxlW1tdLCBOb25lXSkgLT4gIlB5b2RpZGVGdXR1cmVbVF0iOgogICAgICAgICIiIldoZW4gdGhlIGZ1dHVyZSBpcyBlaXRoZXIgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQsIGNhbGwgb25maW5hbGx5IHdpdGgKICAgICAgICBubyBhcmd1bWVudHMuCiAgICAgICAgIiIiCiAgICAgICAgcmVzdWx0OiBQeW9kaWRlRnV0dXJlW1RdID0gUHlvZGlkZUZ1dHVyZSgpCgogICAgICAgIGFzeW5jIGRlZiBjYWxsYmFjayhmdXQ6IEZ1dHVyZVtUXSkgLT4gTm9uZToKICAgICAgICAgICAgZXhjID0gZnV0LmV4Y2VwdGlvbigpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHIgPSBvbmZpbmFsbHkoKQogICAgICAgICAgICAgICAgd2hpbGUgaW5zcGVjdC5pc2F3YWl0YWJsZShyKToKICAgICAgICAgICAgICAgICAgICByID0gYXdhaXQgcgogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICByZXN1bHQuc2V0X2V4Y2VwdGlvbihlKQogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmIGV4YzoKICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRfcmVzdWx0KGZ1dC5yZXN1bHQoKSkKCiAgICAgICAgZGVmIHdyYXBwZXIoZnV0OiBGdXR1cmVbVF0pIC0+IE5vbmU6CiAgICAgICAgICAgIGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShjYWxsYmFjayhmdXQpKQoKICAgICAgICBzZWxmLmFkZF9kb25lX2NhbGxiYWNrKHdyYXBwZXIpCiAgICAgICAgcmV0dXJuIHJlc3VsdAoKCmNsYXNzIFdlYkxvb3AoYXN5bmNpby5BYnN0cmFjdEV2ZW50TG9vcCk6CiAgICAiIiJBIGN1c3RvbSBldmVudCBsb29wIGZvciB1c2UgaW4gUHlvZGlkZS4KCiAgICBTY2hlZHVsZXMgdGFza3Mgb24gdGhlIGJyb3dzZXIgZXZlbnQgbG9vcC4gRG9lcyBubyBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQKICAgIHJ1bnMgZm9yZXZlci4KCiAgICA6cHk6bWV0aDpgfmFzeW5jaW8ubG9vcC5ydW5fZm9yZXZlcmAgYW5kCiAgICA6cHk6bWV0aDpgfmFzeW5jaW8ubG9vcC5ydW5fdW50aWxfY29tcGxldGVgIGNhbm5vdCBibG9jayBsaWtlIGEgbm9ybWFsIGV2ZW50CiAgICBsb29wIHdvdWxkIGJlY2F1c2Ugd2Ugb25seSBoYXZlIG9uZSB0aHJlYWQgc28gYmxvY2tpbmcgd291bGQgc3RhbGwgdGhlCiAgICBicm93c2VyIGV2ZW50IGxvb3AgYW5kIHByZXZlbnQgYW55dGhpbmcgZnJvbSBldmVyIGhhcHBlbmluZy4KCiAgICBXZSBkZWZlciBhbGwgd29yayB0byB0aGUgYnJvd3NlciBldmVudCBsb29wIHVzaW5nIHRoZSA6anM6ZnVuYzpgc2V0VGltZW91dGAKICAgIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGV2ZW50IGxvb3AgZG9lc24ndCBzdGFsbCBvdXQgVUkgYW5kIG90aGVyCiAgICBicm93c2VyIGhhbmRsaW5nLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGVhY2ggdGFzayBpcyBzY2hlZHVsZWQgb24gdGhlCiAgICBicm93c2VyIGV2ZW50IGxvb3AgYXMgYSB0YXNrIG5vdCBhcyBhIG1pY3JvdGFzay4gYGBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKWBgCiAgICBlbnF1ZXVlcyB0aGUgY2FsbGJhY2sgYXMgYSB0YXNrIHNvIGl0IHdvcmtzIHdlbGwgZm9yIG91ciBwdXJwb3Nlcy4KCiAgICBTZWUgdGhlIFB5dGhvbiA6ZXh0ZXJuYWw6ZG9jOmBsaWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wYCBkb2N1bWVudGF0aW9uLgogICAgIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX3Rhc2tfZmFjdG9yeSA9IE5vbmUKICAgICAgICBhc3luY2lvLl9zZXRfcnVubmluZ19sb29wKHNlbGYpCiAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2hhbmRsZXIgPSBOb25lCiAgICAgICAgc2VsZi5fY3VycmVudF9oYW5kbGUgPSBOb25lCiAgICAgICAgc2VsZi5faW5fcHJvZ3Jlc3MgPSAwCiAgICAgICAgc2VsZi5fbm9faW5fcHJvZ3Jlc3NfaGFuZGxlciA9IE5vbmUKICAgICAgICBzZWxmLl9rZXlib2FyZF9pbnRlcnJ1cHRfaGFuZGxlciA9IE5vbmUKICAgICAgICBzZWxmLl9zeXN0ZW1fZXhpdF9oYW5kbGVyID0gTm9uZQoKICAgIGRlZiBnZXRfZGVidWcoc2VsZik6CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgIwogICAgIyBMaWZlY3ljbGUgbWV0aG9kczogV2UgaWdub3JlIGFsbCBsaWZlY3ljbGUgbWFuYWdlbWVudAogICAgIwoKICAgIGRlZiBpc19ydW5uaW5nKHNlbGYpIC0+IGJvb2w6CiAgICAgICAgIiIiUmV0dXJucyBgYFRydWVgYCBpZiB0aGUgZXZlbnQgbG9vcCBpcyBydW5uaW5nLgoKICAgICAgICBBbHdheXMgcmV0dXJucyBgYFRydWVgYCBiZWNhdXNlIFdlYkxvb3AgaGFzIG5vIGxpZmVjeWNsZSBtYW5hZ2VtZW50LgogICAgICAgICIiIgogICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIGlzX2Nsb3NlZChzZWxmKSAtPiBib29sOgogICAgICAgICIiIlJldHVybnMgYGBUcnVlYGAgaWYgdGhlIGV2ZW50IGxvb3Agd2FzIGNsb3NlZC4KCiAgICAgICAgQWx3YXlzIHJldHVybnMgYGBGYWxzZWBgIGJlY2F1c2UgV2ViTG9vcCBoYXMgbm8gbGlmZWN5Y2xlIG1hbmFnZW1lbnQuCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6CiAgICAgICAgIiIiVXNlZCBpbiBjcmVhdGVfdGFzay4KCiAgICAgICAgV291bGQgcmFpc2UgYW4gZXJyb3IgaWYgYGBzZWxmLmlzX2Nsb3NlZCgpYGAsIGJ1dCB3ZSBhcmUgc2tpcHBpbmcgYWxsIGxpZmVjeWNsZSBzdHVmZi4KICAgICAgICAiIiIKICAgICAgICBwYXNzCgogICAgZGVmIHJ1bl9mb3JldmVyKHNlbGYpOgogICAgICAgICIiIlJ1biB0aGUgZXZlbnQgbG9vcCBmb3JldmVyLiBEb2VzIG5vdGhpbmcgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KCiAgICAgICAgV2UgY2Fubm90IGJsb2NrIGxpa2UgYSBub3JtYWwgZXZlbnQgbG9vcCB3b3VsZAogICAgICAgIGJlY2F1c2Ugd2Ugb25seSBoYXZlIG9uZSB0aHJlYWQgc28gYmxvY2tpbmcgd291bGQgc3RhbGwgdGhlIGJyb3dzZXIgZXZlbnQgbG9vcAogICAgICAgIGFuZCBwcmV2ZW50IGFueXRoaW5nIGZyb20gZXZlciBoYXBwZW5pbmcuCiAgICAgICAgIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiBydW5fdW50aWxfY29tcGxldGUoc2VsZiwgZnV0dXJlKToKICAgICAgICAiIiJSdW4gdW50aWwgZnV0dXJlIGlzIGRvbmUuCgogICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBhIGNvcm91dGluZSwgaXQgaXMgd3JhcHBlZCBpbiBhIFRhc2suCgogICAgICAgIFRoZSBuYXRpdmUgZXZlbnQgbG9vcCBgcnVuX3VudGlsX2NvbXBsZXRlYCBibG9ja3MgdW50aWwgZXZhbHVhdGlvbiBvZiB0aGUKICAgICAgICBmdXR1cmUgaXMgY29tcGxldGUgYW5kIHRoZW4gcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBmdXR1cmUuCiAgICAgICAgU2luY2Ugd2UgY2Fubm90IGJsb2NrLCB3ZSBqdXN0IGVuc3VyZSB0aGF0IHRoZSBmdXR1cmUgaXMgc2NoZWR1bGVkIGFuZAogICAgICAgIHJldHVybiB0aGUgZnV0dXJlLiBUaGlzIG1ha2VzIHRoaXMgbWV0aG9kIGEgYml0IHVzZWxlc3MuIEluc3RlYWQsIHVzZQogICAgICAgIGBmdXR1cmUuYWRkX2RvbmVfY2FsbGJhY2soZG9fc29tZXRoaW5nX3dpdGhfcmVzdWx0KWAgb3I6CiAgICAgICAgYGBgcHl0aG9uCiAgICAgICAgYXN5bmMgZGVmIHdyYXBwZXIoKToKICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZnV0dXJlCiAgICAgICAgICAgIGRvX3NvbWV0aGluZ193aXRoX3Jlc3VsdChyZXN1bHQpCiAgICAgICAgYGBgCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShmdXR1cmUpCgogICAgIwogICAgIyBTY2hlZHVsaW5nIG1ldGhvZHM6IHVzZSBicm93c2VyLnNldFRpbWVvdXQgdG8gc2NoZWR1bGUgdGFza3Mgb24gdGhlIGJyb3dzZXIgZXZlbnQgbG9vcC4KICAgICMKCiAgICBkZWYgY2FsbF9zb29uKAogICAgICAgIHNlbGYsCiAgICAgICAgY2FsbGJhY2s6IENhbGxhYmxlWy4uLiwgQW55XSwKICAgICAgICAqYXJnczogQW55LAogICAgICAgIGNvbnRleHQ6IGNvbnRleHR2YXJzLkNvbnRleHQgfCBOb25lID0gTm9uZSwKICAgICkgLT4gYXN5bmNpby5IYW5kbGU6CiAgICAgICAgIiIiQXJyYW5nZSBmb3IgYSBjYWxsYmFjayB0byBiZSBjYWxsZWQgYXMgc29vbiBhcyBwb3NzaWJsZS4KCiAgICAgICAgQW55IHBvc2l0aW9uYWwgYXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsYmFjayB3aWxsIGJlIHBhc3NlZCB0bwogICAgICAgIHRoZSBjYWxsYmFjayB3aGVuIGl0IGlzIGNhbGxlZC4KCiAgICAgICAgVGhpcyBzY2hlZHVsZXMgdGhlIGNhbGxiYWNrIG9uIHRoZSBicm93c2VyIGV2ZW50IGxvb3AgdXNpbmcgYGBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKWBgLgogICAgICAgICIiIgogICAgICAgIGRlbGF5ID0gMAogICAgICAgIHJldHVybiBzZWxmLmNhbGxfbGF0ZXIoZGVsYXksIGNhbGxiYWNrLCAqYXJncywgY29udGV4dD1jb250ZXh0KQoKICAgIGRlZiBjYWxsX3Nvb25fdGhyZWFkc2FmZSgKICAgICAgICBzZWxmLAogICAgICAgIGNhbGxiYWNrOiBDYWxsYWJsZVsuLi4sIEFueV0sCiAgICAgICAgKmFyZ3M6IEFueSwKICAgICAgICBjb250ZXh0OiBjb250ZXh0dmFycy5Db250ZXh0IHwgTm9uZSA9IE5vbmUsCiAgICApIC0+IGFzeW5jaW8uSGFuZGxlOgogICAgICAgICIiIkxpa2UgYGBjYWxsX3Nvb24oKWBgLCBidXQgdGhyZWFkLXNhZmUuCgogICAgICAgIFdlIGhhdmUgbm8gdGhyZWFkcyBzbyBldmVyeXRoaW5nIGlzICJ0aHJlYWQgc2FmZSIsIGFuZCB3ZSBqdXN0IHVzZSBgYGNhbGxfc29vbmBgLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBzZWxmLmNhbGxfc29vbihjYWxsYmFjaywgKmFyZ3MsIGNvbnRleHQ9Y29udGV4dCkKCiAgICBkZWYgY2FsbF9sYXRlciggICMgdHlwZTogaWdub3JlW292ZXJyaWRlXQogICAgICAgIHNlbGYsCiAgICAgICAgZGVsYXk6IGZsb2F0LAogICAgICAgIGNhbGxiYWNrOiBDYWxsYWJsZVsuLi4sIEFueV0sCiAgICAgICAgKmFyZ3M6IEFueSwKICAgICAgICBjb250ZXh0OiBjb250ZXh0dmFycy5Db250ZXh0IHwgTm9uZSA9IE5vbmUsCiAgICApIC0+IGFzeW5jaW8uSGFuZGxlOgogICAgICAgICIiIkFycmFuZ2UgZm9yIGEgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIGF0IGEgZ2l2ZW4gdGltZS4KCiAgICAgICAgUmV0dXJuIGEgSGFuZGxlOiBhbiBvcGFxdWUgb2JqZWN0IHdpdGggYSBjYW5jZWwoKSBtZXRob2QgdGhhdAogICAgICAgIGNhbiBiZSB1c2VkIHRvIGNhbmNlbCB0aGUgY2FsbC4KCiAgICAgICAgVGhlIGRlbGF5IGNhbiBiZSBhbiBpbnQgb3IgZmxvYXQsIGV4cHJlc3NlZCBpbiBzZWNvbmRzLiAgSXQgaXMKICAgICAgICBhbHdheXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGltZS4KCiAgICAgICAgRWFjaCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuICBJZiB0d28gY2FsbGJhY2tzCiAgICAgICAgYXJlIHNjaGVkdWxlZCBmb3IgZXhhY3RseSB0aGUgc2FtZSB0aW1lLCBpdCB1bmRlZmluZWQgd2hpY2gKICAgICAgICB3aWxsIGJlIGNhbGxlZCBmaXJzdC4KCiAgICAgICAgQW55IHBvc2l0aW9uYWwgYXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsYmFjayB3aWxsIGJlIHBhc3NlZCB0bwogICAgICAgIHRoZSBjYWxsYmFjayB3aGVuIGl0IGlzIGNhbGxlZC4KCiAgICAgICAgVGhpcyB1c2VzIGBzZXRUaW1lb3V0KGNhbGxiYWNrLCBkZWxheSlgCiAgICAgICAgIiIiCiAgICAgICAgaWYgZGVsYXkgPCAwOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCBzY2hlZHVsZSBpbiB0aGUgcGFzdCIpCiAgICAgICAgaCA9IGFzeW5jaW8uSGFuZGxlKGNhbGxiYWNrLCBhcmdzLCBzZWxmLCBjb250ZXh0PWNvbnRleHQpCgogICAgICAgIGRlZiBydW5faGFuZGxlKCk6CiAgICAgICAgICAgIGlmIGguY2FuY2VsbGVkKCk6CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaC5fcnVuKCkKICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQgYXMgZToKICAgICAgICAgICAgICAgIGlmIHNlbGYuX3N5c3RlbV9leGl0X2hhbmRsZXI6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3lzdGVtX2V4aXRfaGFuZGxlcihlLmNvZGUpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgIGlmIHNlbGYuX2tleWJvYXJkX2ludGVycnVwdF9oYW5kbGVyOgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2tleWJvYXJkX2ludGVycnVwdF9oYW5kbGVyKCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKCiAgICAgICAgc2V0VGltZW91dChjcmVhdGVfb25jZV9jYWxsYWJsZShydW5faGFuZGxlKSwgZGVsYXkgKiAxMDAwKQogICAgICAgIHJldHVybiBoCgogICAgZGVmIF9kZWNyZW1lbnRfaW5fcHJvZ3Jlc3Moc2VsZiwgKmFyZ3MpOgogICAgICAgIHNlbGYuX2luX3Byb2dyZXNzIC09IDEKICAgICAgICBpZiBzZWxmLl9ub19pbl9wcm9ncmVzc19oYW5kbGVyIGFuZCBzZWxmLl9pbl9wcm9ncmVzcyA9PSAwOgogICAgICAgICAgICBzZWxmLl9ub19pbl9wcm9ncmVzc19oYW5kbGVyKCkKCiAgICBkZWYgY2FsbF9hdCggICMgdHlwZTogaWdub3JlW292ZXJyaWRlXQogICAgICAgIHNlbGYsCiAgICAgICAgd2hlbjogZmxvYXQsCiAgICAgICAgY2FsbGJhY2s6IENhbGxhYmxlWy4uLiwgQW55XSwKICAgICAgICAqYXJnczogQW55LAogICAgICAgIGNvbnRleHQ6IGNvbnRleHR2YXJzLkNvbnRleHQgfCBOb25lID0gTm9uZSwKICAgICkgLT4gYXN5bmNpby5IYW5kbGU6CiAgICAgICAgIiIiTGlrZSBgYGNhbGxfbGF0ZXIoKWBgLCBidXQgdXNlcyBhbiBhYnNvbHV0ZSB0aW1lLgoKICAgICAgICBBYnNvbHV0ZSB0aW1lIGNvcnJlc3BvbmRzIHRvIHRoZSBldmVudCBsb29wJ3MgYGB0aW1lKClgYCBtZXRob2QuCgogICAgICAgIFRoaXMgdXNlcyBgYHNldFRpbWVvdXQoY2FsbGJhY2ssIHdoZW4gLSBjdXJfdGltZSlgYAogICAgICAgICIiIgogICAgICAgIGN1cl90aW1lID0gc2VsZi50aW1lKCkKICAgICAgICBkZWxheSA9IHdoZW4gLSBjdXJfdGltZQogICAgICAgIHJldHVybiBzZWxmLmNhbGxfbGF0ZXIoZGVsYXksIGNhbGxiYWNrLCAqYXJncywgY29udGV4dD1jb250ZXh0KQoKICAgIGRlZiBydW5faW5fZXhlY3V0b3Ioc2VsZiwgZXhlY3V0b3IsIGZ1bmMsICphcmdzKToKICAgICAgICAiIiJBcnJhbmdlIGZvciBmdW5jIHRvIGJlIGNhbGxlZCBpbiB0aGUgc3BlY2lmaWVkIGV4ZWN1dG9yLgoKICAgICAgICBUaGlzIGlzIG5vcm1hbGx5IHN1cHBvc2VkIHRvIHJ1biBmdW5jKCphcmdzKSBpbiBhIHNlcGFyYXRlIHByb2Nlc3Mgb3IKICAgICAgICB0aHJlYWQgYW5kIHNpZ25hbCBiYWNrIHRvIG91ciBldmVudCBsb29wIHdoZW4gaXQgaXMgZG9uZS4gSXQncyBwb3NzaWJsZQogICAgICAgIHRvIG1ha2UgdGhlIGV4ZWN1dG9yLCBidXQgaWYgd2UgYWN0dWFsbHkgdHJ5IHRvIHN1Ym1pdCBhbnkgZnVuY3Rpb25zIHRvCiAgICAgICAgaXQsIGl0IHdpbGwgdHJ5IHRvIGNyZWF0ZSBhIHRocmVhZCBhbmQgdGhyb3cgYW4gZXJyb3IuIEJlc3Qgd2UgY2FuIGRvIGlzCiAgICAgICAgdG8gcnVuIGZ1bmMoYXJncykgaW4gdGhpcyB0aHJlYWQgYW5kIHN0aWNrIHRoZSByZXN1bHQgaW50byBhIGZ1dHVyZS4KICAgICAgICAiIiIKICAgICAgICBmdXQgPSBzZWxmLmNyZWF0ZV9mdXR1cmUoKQogICAgICAgIHRyeToKICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQoZnVuYygqYXJncykpCiAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgZnV0LnNldF9leGNlcHRpb24oZSkKICAgICAgICByZXR1cm4gZnV0CgogICAgZGVmIGNyZWF0ZV9mdXR1cmUoc2VsZikgLT4gYXN5bmNpby5GdXR1cmVbQW55XToKICAgICAgICBzZWxmLl9pbl9wcm9ncmVzcyArPSAxCiAgICAgICAgZnV0OiBQeW9kaWRlRnV0dXJlW0FueV0gPSBQeW9kaWRlRnV0dXJlKGxvb3A9c2VsZikKICAgICAgICBmdXQuYWRkX2RvbmVfY2FsbGJhY2soc2VsZi5fZGVjcmVtZW50X2luX3Byb2dyZXNzKQogICAgICAgICIiIkNyZWF0ZSBhIEZ1dHVyZSBvYmplY3QgYXR0YWNoZWQgdG8gdGhlIGxvb3AuIiIiCiAgICAgICAgcmV0dXJuIGZ1dAoKICAgICMKICAgICMgVGhlIHJlbWFpbmluZyBtZXRob2RzIGFyZSBjb3BpZWQgZGlyZWN0bHkgZnJvbSBCYXNlRXZlbnRMb29wCiAgICAjCgogICAgZGVmIHRpbWUoc2VsZikgLT4gZmxvYXQ6CiAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIGFjY29yZGluZyB0byB0aGUgZXZlbnQgbG9vcCdzIGNsb2NrLgoKICAgICAgICBUaGlzIGlzIGEgZmxvYXQgZXhwcmVzc2VkIGluIHNlY29uZHMgc2luY2UgYW4gZXBvY2gsIGJ1dCB0aGUKICAgICAgICBlcG9jaCwgcHJlY2lzaW9uLCBhY2N1cmFjeSBhbmQgZHJpZnQgYXJlIHVuc3BlY2lmaWVkIGFuZCBtYXkKICAgICAgICBkaWZmZXIgcGVyIGV2ZW50IGxvb3AuCgogICAgICAgIENvcGllZCBmcm9tIGBgQmFzZUV2ZW50TG9vcC50aW1lYGAKICAgICAgICAiIiIKICAgICAgICByZXR1cm4gdGltZS5tb25vdG9uaWMoKQoKICAgIGRlZiBjcmVhdGVfdGFzayhzZWxmLCBjb3JvLCAqLCBuYW1lPU5vbmUpOgogICAgICAgICIiIlNjaGVkdWxlIGEgY29yb3V0aW5lIG9iamVjdC4KCiAgICAgICAgUmV0dXJuIGEgdGFzayBvYmplY3QuCgogICAgICAgIENvcGllZCBmcm9tIGBgQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFza2BgCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICBpZiBzZWxmLl90YXNrX2ZhY3RvcnkgaXMgTm9uZToKICAgICAgICAgICAgdGFzayA9IGFzeW5jaW8udGFza3MuVGFzayhjb3JvLCBsb29wPXNlbGYsIG5hbWU9bmFtZSkKICAgICAgICAgICAgaWYgdGFzay5fc291cmNlX3RyYWNlYmFjazogICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KICAgICAgICAgICAgICAgICMgQWRkZWQgY29tbWVudDoKICAgICAgICAgICAgICAgICMgdGhpcyBvbmx5IGhhcHBlbnMgaWYgZ2V0X2RlYnVnKCkgcmV0dXJucyBUcnVlLgogICAgICAgICAgICAgICAgIyBJbiB0aGF0IGNhc2UsIHJlbW92ZSBjcmVhdGVfdGFzayBmcm9tIF9zb3VyY2VfdHJhY2ViYWNrLgogICAgICAgICAgICAgICAgZGVsIHRhc2suX3NvdXJjZV90cmFjZWJhY2tbLTFdICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdGFzayA9IHNlbGYuX3Rhc2tfZmFjdG9yeShzZWxmLCBjb3JvKQogICAgICAgICAgICBhc3luY2lvLnRhc2tzLl9zZXRfdGFza19uYW1lKHRhc2ssIG5hbWUpICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCgogICAgICAgIHNlbGYuX2luX3Byb2dyZXNzICs9IDEKICAgICAgICB0YXNrLmFkZF9kb25lX2NhbGxiYWNrKHNlbGYuX2RlY3JlbWVudF9pbl9wcm9ncmVzcykKICAgICAgICByZXR1cm4gdGFzawoKICAgIGRlZiBzZXRfdGFza19mYWN0b3J5KHNlbGYsIGZhY3RvcnkpOgogICAgICAgICIiIlNldCBhIHRhc2sgZmFjdG9yeSB0aGF0IHdpbGwgYmUgdXNlZCBieSBsb29wLmNyZWF0ZV90YXNrKCkuCgogICAgICAgIElmIGZhY3RvcnkgaXMgTm9uZSB0aGUgZGVmYXVsdCB0YXNrIGZhY3Rvcnkgd2lsbCBiZSBzZXQuCgogICAgICAgIElmIGZhY3RvcnkgaXMgYSBjYWxsYWJsZSwgaXQgc2hvdWxkIGhhdmUgYSBzaWduYXR1cmUgbWF0Y2hpbmcKICAgICAgICAnKGxvb3AsIGNvcm8pJywgd2hlcmUgJ2xvb3AnIHdpbGwgYmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZQogICAgICAgIGV2ZW50IGxvb3AsICdjb3JvJyB3aWxsIGJlIGEgY29yb3V0aW5lIG9iamVjdC4gIFRoZSBjYWxsYWJsZQogICAgICAgIG11c3QgcmV0dXJuIGEgRnV0dXJlLgoKICAgICAgICBDb3BpZWQgZnJvbSBgYEJhc2VFdmVudExvb3Auc2V0X3Rhc2tfZmFjdG9yeWBgCiAgICAgICAgIiIiCiAgICAgICAgaWYgZmFjdG9yeSBpcyBub3QgTm9uZSBhbmQgbm90IGNhbGxhYmxlKGZhY3RvcnkpOgogICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRhc2sgZmFjdG9yeSBtdXN0IGJlIGEgY2FsbGFibGUgb3IgTm9uZSIpCiAgICAgICAgc2VsZi5fdGFza19mYWN0b3J5ID0gZmFjdG9yeQoKICAgIGRlZiBnZXRfdGFza19mYWN0b3J5KHNlbGYpOgogICAgICAgICIiIlJldHVybiBhIHRhc2sgZmFjdG9yeSwgb3IgTm9uZSBpZiB0aGUgZGVmYXVsdCBvbmUgaXMgaW4gdXNlLgoKICAgICAgICBDb3BpZWQgZnJvbSBgYEJhc2VFdmVudExvb3AuZ2V0X3Rhc2tfZmFjdG9yeWBgCiAgICAgICAgIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX3Rhc2tfZmFjdG9yeQoKICAgIGRlZiBnZXRfZXhjZXB0aW9uX2hhbmRsZXIoc2VsZik6CiAgICAgICAgIiIiUmV0dXJuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCBvciBOb25lIGlmIHRoZSBkZWZhdWx0IG9uZSBpcyBpbiB1c2UuIiIiCiAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlvbl9oYW5kbGVyCgogICAgZGVmIHNldF9leGNlcHRpb25faGFuZGxlcihzZWxmLCBoYW5kbGVyKToKICAgICAgICAiIiJTZXQgaGFuZGxlciBhcyB0aGUgbmV3IGV2ZW50IGxvb3AgZXhjZXB0aW9uIGhhbmRsZXIuCgogICAgICAgIElmIGhhbmRsZXIgaXMgTm9uZSwgdGhlIGRlZmF1bHQgZXhjZXB0aW9uIGhhbmRsZXIgd2lsbCBiZSBzZXQuCgogICAgICAgIElmIGhhbmRsZXIgaXMgYSBjYWxsYWJsZSBvYmplY3QsIGl0IHNob3VsZCBoYXZlIGEgc2lnbmF0dXJlIG1hdGNoaW5nCiAgICAgICAgJyhsb29wLCBjb250ZXh0KScsIHdoZXJlICdsb29wJyB3aWxsIGJlIGEgcmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgZXZlbnQKICAgICAgICBsb29wLCAnY29udGV4dCcgd2lsbCBiZSBhIGRpY3Qgb2JqZWN0IChzZWUgYGNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoKWAKICAgICAgICBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIGFib3V0IGNvbnRleHQpLgogICAgICAgICIiIgogICAgICAgIGlmIGhhbmRsZXIgaXMgbm90IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShoYW5kbGVyKToKICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgZiJBIGNhbGxhYmxlIG9iamVjdCBvciBOb25lIGlzIGV4cGVjdGVkLCAiIGYiZ290IHtoYW5kbGVyIXJ9IgogICAgICAgICAgICApCiAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2hhbmRsZXIgPSBoYW5kbGVyCgogICAgZGVmIGRlZmF1bHRfZXhjZXB0aW9uX2hhbmRsZXIoc2VsZiwgY29udGV4dCk6CiAgICAgICAgIiIiRGVmYXVsdCBleGNlcHRpb24gaGFuZGxlci4KCiAgICAgICAgVGhpcyBpcyBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGFuZCBubyBleGNlcHRpb24gaGFuZGxlciBpcyBzZXQsCiAgICAgICAgYW5kIGNhbiBiZSBjYWxsZWQgYnkgYSBjdXN0b20gZXhjZXB0aW9uIGhhbmRsZXIgdGhhdCB3YW50cyB0byBkZWZlciB0bwogICAgICAgIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiBUaGlzIGRlZmF1bHQgaGFuZGxlciBsb2dzIHRoZSBlcnJvciBtZXNzYWdlIGFuZAogICAgICAgIG90aGVyIGNvbnRleHQtZGVwZW5kZW50IGluZm9ybWF0aW9uLgoKCiAgICAgICAgSW4gZGVidWcgbW9kZSwgYSB0cnVuY2F0ZWQgc3RhY2sgdHJhY2UgaXMgYWxzbyBhcHBlbmRlZCBzaG93aW5nIHdoZXJlCiAgICAgICAgdGhlIGdpdmVuIG9iamVjdCAoZS5nLiBhIGhhbmRsZSBvciBmdXR1cmUgb3IgdGFzaykgd2FzIGNyZWF0ZWQsIGlmIGFueS4KICAgICAgICBUaGUgY29udGV4dCBwYXJhbWV0ZXIgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4KICAgICAgICBgY2FsbF9leGNlcHRpb25faGFuZGxlcigpYC4KICAgICAgICAiIiIKICAgICAgICBtZXNzYWdlID0gY29udGV4dC5nZXQoIm1lc3NhZ2UiKQogICAgICAgIGlmIG5vdCBtZXNzYWdlOgogICAgICAgICAgICBtZXNzYWdlID0gIlVuaGFuZGxlZCBleGNlcHRpb24gaW4gZXZlbnQgbG9vcCIKCiAgICAgICAgaWYgKAogICAgICAgICAgICAic291cmNlX3RyYWNlYmFjayIgbm90IGluIGNvbnRleHQKICAgICAgICAgICAgYW5kIHNlbGYuX2N1cnJlbnRfaGFuZGxlIGlzIG5vdCBOb25lCiAgICAgICAgICAgIGFuZCBzZWxmLl9jdXJyZW50X2hhbmRsZS5fc291cmNlX3RyYWNlYmFjawogICAgICAgICk6CiAgICAgICAgICAgIGNvbnRleHRbImhhbmRsZV90cmFjZWJhY2siXSA9IHNlbGYuX2N1cnJlbnRfaGFuZGxlLl9zb3VyY2VfdHJhY2ViYWNrCgogICAgICAgIGxvZ19saW5lcyA9IFttZXNzYWdlXQogICAgICAgIGZvciBrZXkgaW4gc29ydGVkKGNvbnRleHQpOgogICAgICAgICAgICBpZiBrZXkgaW4geyJtZXNzYWdlIiwgImV4Y2VwdGlvbiJ9OgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgdmFsdWUgPSBjb250ZXh0W2tleV0KICAgICAgICAgICAgaWYga2V5ID09ICJzb3VyY2VfdHJhY2ViYWNrIjoKICAgICAgICAgICAgICAgIHRiID0gIiIuam9pbih0cmFjZWJhY2suZm9ybWF0X2xpc3QodmFsdWUpKQogICAgICAgICAgICAgICAgdmFsdWUgPSAiT2JqZWN0IGNyZWF0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4iCiAgICAgICAgICAgICAgICB2YWx1ZSArPSB0Yi5yc3RyaXAoKQogICAgICAgICAgICBlbGlmIGtleSA9PSAiaGFuZGxlX3RyYWNlYmFjayI6CiAgICAgICAgICAgICAgICB0YiA9ICIiLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9saXN0KHZhbHVlKSkKICAgICAgICAgICAgICAgIHZhbHVlID0gIkhhbmRsZSBjcmVhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuIgogICAgICAgICAgICAgICAgdmFsdWUgKz0gdGIucnN0cmlwKCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHZhbHVlID0gcmVwcih2YWx1ZSkKICAgICAgICAgICAgbG9nX2xpbmVzLmFwcGVuZChmIntrZXl9OiB7dmFsdWV9IikKCiAgICAgICAgcHJpbnQoIlxuIi5qb2luKGxvZ19saW5lcyksIGZpbGU9c3lzLnN0ZGVycikKCiAgICBkZWYgY2FsbF9leGNlcHRpb25faGFuZGxlcihzZWxmLCBjb250ZXh0KToKICAgICAgICAiIiJDYWxsIHRoZSBjdXJyZW50IGV2ZW50IGxvb3AncyBleGNlcHRpb24gaGFuZGxlci4KICAgICAgICBUaGUgY29udGV4dCBhcmd1bWVudCBpcyBhIGRpY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGtleXM6CiAgICAgICAgLSAnbWVzc2FnZSc6IEVycm9yIG1lc3NhZ2U7CiAgICAgICAgLSAnZXhjZXB0aW9uJyAob3B0aW9uYWwpOiBFeGNlcHRpb24gb2JqZWN0OwogICAgICAgIC0gJ2Z1dHVyZScgKG9wdGlvbmFsKTogRnV0dXJlIGluc3RhbmNlOwogICAgICAgIC0gJ3Rhc2snIChvcHRpb25hbCk6IFRhc2sgaW5zdGFuY2U7CiAgICAgICAgLSAnaGFuZGxlJyAob3B0aW9uYWwpOiBIYW5kbGUgaW5zdGFuY2U7CiAgICAgICAgLSAncHJvdG9jb2wnIChvcHRpb25hbCk6IFByb3RvY29sIGluc3RhbmNlOwogICAgICAgIC0gJ3RyYW5zcG9ydCcgKG9wdGlvbmFsKTogVHJhbnNwb3J0IGluc3RhbmNlOwogICAgICAgIC0gJ3NvY2tldCcgKG9wdGlvbmFsKTogU29ja2V0IGluc3RhbmNlOwogICAgICAgIC0gJ2FzeW5jZ2VuJyAob3B0aW9uYWwpOiBBc3luY2hyb25vdXMgZ2VuZXJhdG9yIHRoYXQgY2F1c2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBleGNlcHRpb24uCiAgICAgICAgTmV3IGtleXMgbWF5YmUgaW50cm9kdWNlZCBpbiB0aGUgZnV0dXJlLgogICAgICAgIE5vdGU6IGRvIG5vdCBvdmVybG9hZCB0aGlzIG1ldGhvZCBpbiBhbiBldmVudCBsb29wIHN1YmNsYXNzLgogICAgICAgIEZvciBjdXN0b20gZXhjZXB0aW9uIGhhbmRsaW5nLCB1c2UgdGhlCiAgICAgICAgYHNldF9leGNlcHRpb25faGFuZGxlcigpYCBtZXRob2QuCiAgICAgICAgIiIiCiAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uX2hhbmRsZXIgaXMgTm9uZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5kZWZhdWx0X2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnRleHQpCiAgICAgICAgICAgIGV4Y2VwdCAoU3lzdGVtRXhpdCwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CiAgICAgICAgICAgICAgICAjIFNlY29uZCBwcm90ZWN0aW9uIGxheWVyIGZvciB1bmV4cGVjdGVkIGVycm9ycwogICAgICAgICAgICAgICAgIyBpbiB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgYXMgd2VsbCBhcyBmb3Igc3ViY2xhc3NlZAogICAgICAgICAgICAgICAgIyBldmVudCBsb29wcyB3aXRoIG92ZXJsb2FkZWQgImRlZmF1bHRfZXhjZXB0aW9uX2hhbmRsZXIiLgogICAgICAgICAgICAgICAgcHJpbnQoIkV4Y2VwdGlvbiBpbiBkZWZhdWx0IGV4Y2VwdGlvbiBoYW5kbGVyIiwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2hhbmRsZXIoc2VsZiwgY29udGV4dCkKICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICAgICAjIEV4Y2VwdGlvbiBpbiB0aGUgdXNlciBzZXQgY3VzdG9tIGV4Y2VwdGlvbiBoYW5kbGVyLgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICMgTGV0J3MgdHJ5IGRlZmF1bHQgaGFuZGxlci4KICAgICAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHRfZXhjZXB0aW9uX2hhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIjogIlVuaGFuZGxlZCBlcnJvciBpbiBleGNlcHRpb24gaGFuZGxlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uIjogZXhjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRleHQiOiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICMgR3VhcmQgJ2RlZmF1bHRfZXhjZXB0aW9uX2hhbmRsZXInIGluIGNhc2UgaXQgaXMKICAgICAgICAgICAgICAgICAgICAjIG92ZXJsb2FkZWQuCiAgICAgICAgICAgICAgICAgICAgcHJpbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICJFeGNlcHRpb24gaW4gZGVmYXVsdCBleGNlcHRpb24gaGFuZGxlciAiCiAgICAgICAgICAgICAgICAgICAgICAgICJ3aGlsZSBoYW5kbGluZyBhbiB1bmV4cGVjdGVkIGVycm9yICIKICAgICAgICAgICAgICAgICAgICAgICAgImluIGN1c3RvbSBleGNlcHRpb24gaGFuZGxlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVyciwKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCgoKY2xhc3MgV2ViTG9vcFBvbGljeShhc3luY2lvLkRlZmF1bHRFdmVudExvb3BQb2xpY3kpOgogICAgIiIiCiAgICBBIHNpbXBsZSBldmVudCBsb29wIHBvbGljeSBmb3IgbWFuYWdpbmcgOnB5OmNsYXNzOmBXZWJMb29wYC1iYXNlZCBldmVudCBsb29wcy4KICAgICIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLl9kZWZhdWx0X2xvb3AgPSBOb25lCgogICAgZGVmIGdldF9ldmVudF9sb29wKHNlbGYpOgogICAgICAgICIiIkdldCB0aGUgY3VycmVudCBldmVudCBsb29wIiIiCiAgICAgICAgaWYgc2VsZi5fZGVmYXVsdF9sb29wOgogICAgICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdF9sb29wCiAgICAgICAgcmV0dXJuIHNlbGYubmV3X2V2ZW50X2xvb3AoKQoKICAgIGRlZiBuZXdfZXZlbnRfbG9vcChzZWxmKSAtPiBXZWJMb29wOgogICAgICAgICIiIkNyZWF0ZSBhIG5ldyBldmVudCBsb29wIiIiCiAgICAgICAgc2VsZi5fZGVmYXVsdF9sb29wID0gV2ViTG9vcCgpICAjIHR5cGU6IGlnbm9yZVthYnN0cmFjdF0KICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdF9sb29wCgogICAgZGVmIHNldF9ldmVudF9sb29wKHNlbGYsIGxvb3A6IEFueSkgLT4gTm9uZToKICAgICAgICAiIiJTZXQgdGhlIGN1cnJlbnQgZXZlbnQgbG9vcCIiIgogICAgICAgIHNlbGYuX2RlZmF1bHRfbG9vcCA9IGxvb3AKCgpkZWYgX2luaXRpYWxpemVfZXZlbnRfbG9vcCgpOgogICAgZnJvbSAuZmZpIGltcG9ydCBJTl9CUk9XU0VSCgogICAgaWYgbm90IElOX0JST1dTRVI6CiAgICAgICAgcmV0dXJuCgogICAgaW1wb3J0IGFzeW5jaW8KCiAgICBmcm9tIC53ZWJsb29wIGltcG9ydCBXZWJMb29wUG9saWN5CgogICAgcG9saWN5ID0gV2ViTG9vcFBvbGljeSgpCiAgICBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShwb2xpY3kpCiAgICBwb2xpY3kuZ2V0X2V2ZW50X2xvb3AoKQoKCl9fYWxsX18gPSBbIldlYkxvb3AiLCAiV2ViTG9vcFBvbGljeSIsICJQeW9kaWRlRnV0dXJlIl0KUEsDBBQAAAAAAKceo1bkS8TyawUAAGsFAAAXAAAAcHlvZGlkZS9mZmkvX19pbml0X18ucHkjIGZsYWtlODogbm9xYQppbXBvcnQgc3lzCgppbXBvcnQgX3B5b2RpZGUuX2NvcmVfZG9jcwpmcm9tIF9weW9kaWRlLl9jb3JlX2RvY3MgaW1wb3J0ICoKZnJvbSBfcHlvZGlkZS5faW1wb3J0aG9vayBpbXBvcnQgcmVnaXN0ZXJfanNfbW9kdWxlLCB1bnJlZ2lzdGVyX2pzX21vZHVsZQoKSU5fQlJPV1NFUiA9ICJfcHlvZGlkZV9jb3JlIiBpbiBzeXMubW9kdWxlcwoKCmlmIElOX0JST1dTRVI6CiAgICBpbXBvcnQgX3B5b2RpZGVfY29yZQoKICAgICMgVGhpcyBpcyBpbnRlbnRpb25hbGx5IG9wYXF1ZSB0byBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgKGUuZy4sIG15cHkpCiAgICAjCiAgICAjIE5vdGU6CiAgICAjICAgTm9ybWFsbHkgb25lIHdvdWxkIGhhbmRsZSB0aGlzIGJ5IGFkZGluZyB0eXBlIHN0dWJzIGZvcgogICAgIyAgIF9weW9kaWRlX2NvcmUsIGJ1dCBzaW5jZSB3ZSBhbHJlYWR5IGFyZSBnZXR0aW5nIHRoZSBjb3JyZWN0IHR5cGVzCiAgICAjICAgZnJvbSBfY29yZV9kb2NzLCBhZGRpbmcgYSB0eXBlIHN0dWIgd291bGQgaW50cm9kdWNlIGEgcmVkdW5kYW5jeQogICAgIyAgIHRoYXQgd291bGQgYmUgZGlmZmljdWx0IHRvIG1haW50YWluLgogICAgZm9yIHQgaW4gWwogICAgICAgICJKc0V4Y2VwdGlvbiIsCiAgICAgICAgImNyZWF0ZV9vbmNlX2NhbGxhYmxlIiwKICAgICAgICAiY3JlYXRlX3Byb3h5IiwKICAgICAgICAiZGVzdHJveV9wcm94aWVzIiwKICAgICAgICAidG9fanMiLAogICAgXToKICAgICAgICBnbG9iYWxzKClbdF0gPSBnZXRhdHRyKF9weW9kaWRlX2NvcmUsIHQpCgogICAgX3B5b2RpZGUuX2NvcmVfZG9jcy5fanNfZmxhZ3MgPSBfcHlvZGlkZV9jb3JlLmpzX2ZsYWdzCgpfX2FsbF9fID0gWwogICAgIkNvbnZlcnNpb25FcnJvciIsCiAgICAiSnNBcnJheSIsCiAgICAiSnNBc3luY0dlbmVyYXRvciIsCiAgICAiSnNBc3luY0l0ZXJhYmxlIiwKICAgICJKc0FzeW5jSXRlcmF0b3IiLAogICAgIkpzQnVmZmVyIiwKICAgICJKc0RvdWJsZVByb3h5IiwKICAgICJKc0V4Y2VwdGlvbiIsCiAgICAiSnNGZXRjaFJlc3BvbnNlIiwKICAgICJKc0dlbmVyYXRvciIsCiAgICAiSnNJdGVyYWJsZSIsCiAgICAiSnNJdGVyYXRvciIsCiAgICAiSnNNYXAiLAogICAgIkpzTXV0YWJsZU1hcCIsCiAgICAiSnNQcm9taXNlIiwKICAgICJKc1Byb3h5IiwKICAgICJKc0RvbUVsZW1lbnQiLAogICAgIkpzQ2FsbGFibGUiLAogICAgIkpzVHlwZWRBcnJheSIsCiAgICAiY3JlYXRlX29uY2VfY2FsbGFibGUiLAogICAgImNyZWF0ZV9wcm94eSIsCiAgICAiZGVzdHJveV9wcm94aWVzIiwKICAgICJ0b19qcyIsCiAgICAiSU5fQlJPV1NFUiIsCiAgICAicmVnaXN0ZXJfanNfbW9kdWxlIiwKICAgICJ1bnJlZ2lzdGVyX2pzX21vZHVsZSIsCl0KUEsDBBQAAAAAAKceo1YPYZaaIw8AACMPAAAXAAAAcHlvZGlkZS9mZmkvd3JhcHBlcnMucHlmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQ2FsbGFibGUKZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgUHJvdG9jb2wsIGNhc3QKCmZyb20gLiBpbXBvcnQgSU5fQlJPV1NFUiwgSnNEb21FbGVtZW50LCBKc1Byb3h5LCBjcmVhdGVfb25jZV9jYWxsYWJsZSwgY3JlYXRlX3Byb3h5CgppZiBJTl9CUk9XU0VSOgogICAgZnJvbSBqcyBpbXBvcnQgY2xlYXJJbnRlcnZhbCwgY2xlYXJUaW1lb3V0LCBzZXRJbnRlcnZhbCwgc2V0VGltZW91dAoKCmNsYXNzIERlc3Ryb3lhYmxlKFByb3RvY29sKToKICAgICIiIjptZXRhIHByaXZhdGU6IiIiCgogICAgZGVmIGRlc3Ryb3koc2VsZik6CiAgICAgICAgcGFzcwoKCiMgQW4gb2JqZWN0IHdpdGggYSBuby1vcCBkZXN0cm95IG1ldGhvZCBzbyB3ZSBjYW4gZG8KIwojIFRJTUVPVVRTLnBvcChpZCwgRFVNTVlfREVTVFJPWUFCTEUpLmRlc3Ryb3koKQojCiMgYW5kIGVpdGhlciBpdCBnZXRzIGEgcmVhbCBvYmplY3QgYW5kIGNhbGxzIHRoZSByZWFsIGRlc3Ryb3kgbWV0aG9kIG9yIGl0IGdldHMKIyB0aGUgZmFrZSB3aGljaCBkb2VzIG5vdGhpbmcuIFRoaXMgaXMgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGNsZWFyX3RpbWVvdXQgaXMKIyBjYWxsZWQgYWZ0ZXIgdGhlIHRpbWVvdXQgZXhlY3V0ZXMuCmNsYXNzIERVTU1ZX0RFU1RST1lBQkxFOgogICAgQHN0YXRpY21ldGhvZAogICAgZGVmIGRlc3Ryb3koKToKICAgICAgICBwYXNzCgoKRVZFTlRfTElTVEVORVJTOiBkaWN0W3R1cGxlW2ludCwgc3RyLCBDYWxsYWJsZVtbQW55XSwgTm9uZV1dLCBEZXN0cm95YWJsZV0gPSB7fQoKCmRlZiBhZGRfZXZlbnRfbGlzdGVuZXIoCiAgICBlbHQ6IEpzRG9tRWxlbWVudCwgZXZlbnQ6IHN0ciwgbGlzdGVuZXI6IENhbGxhYmxlW1tBbnldLCBOb25lXQopIC0+IE5vbmU6CiAgICAiIiJXcmFwcGVyIGZvciBKYXZhU2NyaXB0J3MKICAgIDpqczptZXRoOmB+RXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcmAgd2hpY2ggYXV0b21hdGljYWxseSBtYW5hZ2VzIHRoZSBsaWZldGltZSBvZiBhCiAgICBKc1Byb3h5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGBgbGlzdGVuZXJgYCBwYXJhbWV0ZXIuCiAgICAiIiIKICAgIHByb3h5ID0gY3JlYXRlX3Byb3h5KGxpc3RlbmVyKQogICAgRVZFTlRfTElTVEVORVJTWyhlbHQuanNfaWQsIGV2ZW50LCBsaXN0ZW5lcildID0gcHJveHkKICAgIGVsdC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYXN0KENhbGxhYmxlW1tBbnldLCBOb25lXSwgcHJveHkpKQoKCmRlZiByZW1vdmVfZXZlbnRfbGlzdGVuZXIoCiAgICBlbHQ6IEpzRG9tRWxlbWVudCwgZXZlbnQ6IHN0ciwgbGlzdGVuZXI6IENhbGxhYmxlW1tBbnldLCBOb25lXQopIC0+IE5vbmU6CiAgICAiIiJXcmFwcGVyIGZvciBKYXZhU2NyaXB0J3MKICAgIDpqczptZXRoOmB+RXZlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcmAgd2hpY2ggYXV0b21hdGljYWxseSBtYW5hZ2VzIHRoZQogICAgbGlmZXRpbWUgb2YgYSBKc1Byb3h5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGBgbGlzdGVuZXJgYCBwYXJhbWV0ZXIuCiAgICAiIiIKICAgIHByb3h5ID0gRVZFTlRfTElTVEVORVJTLnBvcCgoZWx0LmpzX2lkLCBldmVudCwgbGlzdGVuZXIpKQogICAgZWx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhc3QoQ2FsbGFibGVbW0FueV0sIE5vbmVdLCBwcm94eSkpCiAgICBwcm94eS5kZXN0cm95KCkKCgpUSU1FT1VUUzogZGljdFtpbnQsIERlc3Ryb3lhYmxlXSA9IHt9CgoKZGVmIHNldF90aW1lb3V0KGNhbGxiYWNrOiBDYWxsYWJsZVtbXSwgTm9uZV0sIHRpbWVvdXQ6IGludCkgLT4gaW50IHwgSnNQcm94eToKICAgICIiIldyYXBwZXIgZm9yIEphdmFTY3JpcHQncyA6anM6ZnVuYzpgc2V0VGltZW91dGAgd2hpY2gKICAgIGF1dG9tYXRpY2FsbHkgbWFuYWdlcyB0aGUgbGlmZXRpbWUgb2YgYSBKc1Byb3h5IGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAgICBjYWxsYmFjayBwYXJhbS4KICAgICIiIgogICAgaWQgPSAtMQoKICAgIGRlZiB3cmFwcGVyKCk6CiAgICAgICAgbm9ubG9jYWwgaWQKICAgICAgICBjYWxsYmFjaygpCiAgICAgICAgVElNRU9VVFMucG9wKGlkLCBOb25lKQoKICAgIGNhbGxhYmxlID0gY3JlYXRlX29uY2VfY2FsbGFibGUod3JhcHBlcikKICAgIHRpbWVvdXRfcmV0dmFsOiBpbnQgfCBKc1Byb3h5ID0gc2V0VGltZW91dChjYWxsYWJsZSwgdGltZW91dCkKICAgIGlkID0gdGltZW91dF9yZXR2YWwgaWYgaXNpbnN0YW5jZSh0aW1lb3V0X3JldHZhbCwgaW50KSBlbHNlIHRpbWVvdXRfcmV0dmFsLmpzX2lkCiAgICBUSU1FT1VUU1tpZF0gPSBjYWxsYWJsZQogICAgcmV0dXJuIHRpbWVvdXRfcmV0dmFsCgoKZGVmIGNsZWFyX3RpbWVvdXQodGltZW91dF9yZXR2YWw6IGludCB8IEpzUHJveHkpIC0+IE5vbmU6CiAgICAiIiJXcmFwcGVyIGZvciBKYXZhU2NyaXB0J3MgOmpzOmZ1bmM6YGNsZWFyVGltZW91dGAgd2hpY2gKICAgIGF1dG9tYXRpY2FsbHkgbWFuYWdlcyB0aGUgbGlmZXRpbWUgb2YgYSBKc1Byb3h5IGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAgICBgYGNhbGxiYWNrYGAgcGFyYW1ldGVyLgogICAgIiIiCiAgICBjbGVhclRpbWVvdXQodGltZW91dF9yZXR2YWwpCiAgICBpZCA9IHRpbWVvdXRfcmV0dmFsIGlmIGlzaW5zdGFuY2UodGltZW91dF9yZXR2YWwsIGludCkgZWxzZSB0aW1lb3V0X3JldHZhbC5qc19pZAogICAgVElNRU9VVFMucG9wKGlkLCBEVU1NWV9ERVNUUk9ZQUJMRSkuZGVzdHJveSgpCgoKSU5URVJWQUxfQ0FMTEJBQ0tTOiBkaWN0W2ludCwgRGVzdHJveWFibGVdID0ge30KCgpkZWYgc2V0X2ludGVydmFsKGNhbGxiYWNrOiBDYWxsYWJsZVtbXSwgTm9uZV0sIGludGVydmFsOiBpbnQpIC0+IGludCB8IEpzUHJveHk6CiAgICAiIiJXcmFwcGVyIGZvciBKYXZhU2NyaXB0J3MgOmpzOmZ1bmM6YHNldEludGVydmFsYCB3aGljaAogICAgYXV0b21hdGljYWxseSBtYW5hZ2VzIHRoZSBsaWZldGltZSBvZiBhIEpzUHJveHkgY29ycmVzcG9uZGluZyB0byB0aGUKICAgIGBgY2FsbGJhY2tgYCBwYXJhbWV0ZXIuCiAgICAiIiIKICAgIHByb3h5ID0gY3JlYXRlX3Byb3h5KGNhbGxiYWNrKQogICAgaW50ZXJ2YWxfcmV0dmFsID0gc2V0SW50ZXJ2YWwoY2FzdChDYWxsYWJsZVtbXSwgTm9uZV0sIHByb3h5KSwgaW50ZXJ2YWwpCiAgICBpZCA9IGludGVydmFsX3JldHZhbCBpZiBpc2luc3RhbmNlKGludGVydmFsX3JldHZhbCwgaW50KSBlbHNlIGludGVydmFsX3JldHZhbC5qc19pZAogICAgSU5URVJWQUxfQ0FMTEJBQ0tTW2lkXSA9IHByb3h5CiAgICByZXR1cm4gaW50ZXJ2YWxfcmV0dmFsCgoKZGVmIGNsZWFyX2ludGVydmFsKGludGVydmFsX3JldHZhbDogaW50IHwgSnNQcm94eSkgLT4gTm9uZToKICAgICIiIldyYXBwZXIgZm9yIEphdmFTY3JpcHQncyA6anM6ZnVuYzpgY2xlYXJJbnRlcnZhbGAKICAgIHdoaWNoIGF1dG9tYXRpY2FsbHkgbWFuYWdlcyB0aGUgbGlmZXRpbWUgb2YgYSBKc1Byb3h5IGNvcnJlc3BvbmRpbmcgdG8KICAgIHRoZSBgYGNhbGxiYWNrYGAgcGFyYW1ldGVyLgogICAgIiIiCiAgICBjbGVhckludGVydmFsKGludGVydmFsX3JldHZhbCkKICAgIGlkID0gaW50ZXJ2YWxfcmV0dmFsIGlmIGlzaW5zdGFuY2UoaW50ZXJ2YWxfcmV0dmFsLCBpbnQpIGVsc2UgaW50ZXJ2YWxfcmV0dmFsLmpzX2lkCiAgICBJTlRFUlZBTF9DQUxMQkFDS1MucG9wKGlkLCBEVU1NWV9ERVNU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
  • File
    Save environment
  • Edit
    Add code cell above Add code cell below
    Add text cell above Add text cell below
    Delete cell
  • Run
    Run all code cells
    Preview all text cells
initialise